diff -Nrcpad gcc-10.3.0/.dir-locals.el gcc-11.1.0/.dir-locals.el
*** gcc-10.3.0/.dir-locals.el	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/.dir-locals.el	Tue Apr 27 10:00:12 2021
***************
*** 14,24 ****
  ;; You should have received a copy of the GNU General Public License
  ;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
  
! (
!  (tcl-mode . ((tcl-indent-level . 4)
  	      (tcl-continued-indent-level . 4)
  	      (indent-tabs-mode . t)))
   (nil . ((bug-reference-url-format . "http://gcc.gnu.org/PR%s")))
   (c-mode . ((c-file-style . "GNU")
! 	    (indent-tabs-mode . t)))
! )
--- 14,23 ----
  ;; You should have received a copy of the GNU General Public License
  ;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
  
! ((tcl-mode . ((tcl-indent-level . 4)
  	      (tcl-continued-indent-level . 4)
  	      (indent-tabs-mode . t)))
   (nil . ((bug-reference-url-format . "http://gcc.gnu.org/PR%s")))
   (c-mode . ((c-file-style . "GNU")
! 	    (indent-tabs-mode . t)
! 	    (fill-column . 80))))
diff -Nrcpad gcc-10.3.0/.gitignore gcc-11.1.0/.gitignore
*** gcc-10.3.0/.gitignore	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/.gitignore	Tue Apr 27 10:00:12 2021
***************
*** 15,20 ****
--- 15,21 ----
  *.o
  *.pyc
  *.tmp
+ *.a
  
  .deps
  .libs
*************** TAGS.sub
*** 38,48 ****
--- 39,53 ----
  .clang-format
  .clang-tidy
  .clangd
+ .cache
  compile_commands.json
  
  .gdbinit
  .gdb_history
  
+ perf.data
+ perf.data.old
+ 
  # ignore core files, but not java/net/protocol/core/
  core
  !core/
*************** lost+found
*** 53,58 ****
--- 58,66 ----
  LAST_UPDATED
  REVISION
  
+ stamp-*
+ *.stamp
+ 
  # ignore in-tree prerequisites
  /mpfr*
  /mpc*
diff -Nrcpad gcc-10.3.0/ChangeLog gcc-11.1.0/ChangeLog
*** gcc-10.3.0/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-11.1.0/ChangeLog	Tue Apr 27 10:00:12 2021
***************
*** 1,42 ****
! 2021-04-08  Release Manager
  
! 	* GCC 10.3.0 released.
  
! 2021-03-09  Ian Lance Taylor  <iant@golang.org>
  
! 	PR go/99458
! 	* libgo/runtime/proc.c: cast SIGSTKSZ to uintptr
! 	In newer versions of glibc it is long, which causes a signed
! 	comparison warning.
  
! 2021-01-03  Iain Sandoe  <iain@sandoe.co.uk>
! 	    Jakub Jelinek   <jakub@redhat.com>
  
  	PR target/97865
  	* libtool.m4: Update handling of Darwin platform link flags
  	for Darwin20.
  
! 2020-11-25  Martin Liska  <mliska@suse.cz>
  
! 	* .gitignore: Add .clang-tidy.
  
! 2020-10-06  Tobias Burnus  <tobias@codesourcery.com>
  
! 	Backported from master:
! 	2020-10-06  Tobias Burnus  <tobias@codesourcery.com>
  
  	PR target/97302
  	* configure.ac: Only set with_gmp to /usr/local
  	if not building in tree.
  	* configure: Regenerate.
  
! 2020-07-23  Release Manager
  
! 	* GCC 10.2.0 released.
  
! 2020-05-07  Release Manager
  
! 	* GCC 10.1.0 released.
  
  2020-04-29  Thomas Schwinge  <thomas@codesourcery.com>
  
--- 1,237 ----
! 2021-04-27  Release Manager
  
! 	* GCC 11.1.0 released.
  
! 2021-04-11  Hafiz Abid Qadeer  <abidh@codesourcery.com>
  
! 	* MAINTAINERS (Write After Approval): Add myself.
  
! 2021-03-26  Dimitar Dimitrov  <dimitar@dinux.eu>
! 
! 	* MAINTAINERS: Add myself as pru port maintainer.
! 
! 2021-03-23  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* MAINTAINERS: Add myself as static analyzer maintainer.
! 
! 2021-03-18  Jeff Law  <jlaw@tachyum.com>
! 
! 	* MAINTAINERS: Update primary entry.
! 
! 2021-03-13  Eugene Rozenfeld  <erozen@microsoft.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2021-03-13  Mike Frysinger  <vapier@gentoo.org>
! 
! 	* Makefile.def: Remove all-sim dependency on configure-gdb.
! 	* Makefile.in: Regenerated.
! 
! 2021-03-11  Jeff Law  <law@redhat.com>
! 
! 	* MAINTAINERS: Update entries for a few ex-ImgTec employees
! 
! 2021-03-11  Martin Liska  <mliska@suse.cz>
! 
! 	* Makefile.tpl: The change was done Makefile.in which
! 	is generated file.
! 
! 2021-03-08  Jeff Law  <law@redhat.com>
! 
! 	* MAINTAINERS: Update my email address
! 
! 2021-02-23  Kito Cheng  <kito.cheng@sifive.com>
! 
! 	* config.guess: Import latest upstream.
! 	* config.sub: Import latest upstream.
! 
! 2021-01-25  Martin Liska  <mliska@suse.cz>
! 
! 	PR gcov-profile/98739
! 	* Makefile.in: Enable -fprofile-reproducible=parallel-runs
! 	for profiledbootstrap.
! 
! 2021-01-22  Jonathan Wright  <jonathan.wright@arm.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2021-01-22  Maciej W. Rozycki  <macro@orcam.me.uk>
! 
! 	* MAINTAINERS (Write After Approval): Update my e-mail address.
! 
! 2021-01-12  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	* MAINTAINERS: Fix spacing.
! 
! 2021-01-12  Qian Jianhua  <qianjh@cn.fujitsu.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself
! 
! 2021-01-06  Nick Alcock  <nick.alcock@oracle.com>
! 
! 	* Makefile.def: Sync with binutils-gdb:
! 	(dependencies): all-ld depends on all-libctf.
! 	(host_modules): libctf is no longer no_install.
! 	No longer no_check.  Checking depends on all-ld.
! 	* Makefile.in: Regenerated.
! 
! 2021-01-05  Samuel Thibault  <samuel.thibault@ens-lyon.org>
! 
! 	* libtool.m4: Match gnu* along other GNU systems.
! 	* libgo/config/libtool.m4: Match gnu* along other GNU systems.
! 	* libgo/configure: Re-generate.
! 
! 2021-01-04  Philipp Tomsich  <philipp.tomsich@vrull.eu>
! 
! 	* MAINTAINERS: Update my email address.
! 
! 2020-12-17  Marius Hillenbrand  <mhillen@linux.ibm.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2020-12-15  Nathan Sidwell  <nathan@acm.org>
! 
! 	* Makefile.def
! 	* Makefile.in
! 	* Makefile.tpl
! 	* configure
! 	* configure.ac
! 
! 2020-12-15  Nathan Sidwell  <nathan@acm.org>
! 
! 	* Makefile.def: Add libcody.
! 	* configure.ac: Add libcody.
! 	* Makefile.in: Regenerated.
! 	* configure: Regenerated.
! 
! 2020-12-14  Andrea Corallo  <andrea.corallo@arm.com>
! 
! 	* .dir-locals.el (c-mode): Set 'fill-column' to 80 columns.
! 
! 2020-12-05  Iain Sandoe  <iain@sandoe.co.uk>
  
  	PR target/97865
  	* libtool.m4: Update handling of Darwin platform link flags
  	for Darwin20.
  
! 2020-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
  
! 	* .gitignore: Sync with binutils-gdb
  
! 2020-12-02  Claudiu Zissulescu  <claziss@gmail.com>
  
! 	* MAINTAINERS: Add myself as arc port maintainer.
! 
! 2020-11-29  Iain Buclaw  <ibuclaw@gdcproject.org>
! 
! 	PR d/87788
! 	* configure.ac: Don't disable D for *-*-darwin*.
! 	* configure: Regenerate.
! 
! 2020-11-29  John David Anglin  <danglin@gcc.gnu.org>
! 
! 	* libtool.m4 (archive_cmds): Add +nodefaultrpath ld option on
! 	hppa64-*-hpux11*.
! 
! 2020-11-25  Matthew Malcomson  <matthew.malcomson@arm.com>
! 
! 	* configure: Regenerate.
! 	* configure.ac: Add --bootstrap-hwasan option.
! 
! 2020-11-23  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* config.guess: Import latest upstream.
! 	* config.sub: Import latest upstream.
! 
! 2020-11-16  Martin Liska  <mliska@suse.cz>
! 
! 	* .gitignore: Add cache as clangd uses it now.
! 
! 2020-11-13  Haochen Gui  <guihaoc@gcc.gnu.org>
! 
! 	* MAINTAINERS (Write After Approval): add myself
! 
! 2020-11-09  Pat Bernardi  <bernardi@adacore.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2020-11-09  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	* config-ml.in (multi-do, multi-clean): Add @ to silence recipes.
! 	Remove FIXME comments.
! 
! 2020-11-06  Martin Uecker  <muecker@gwdg.de>
! 
! 	* MAINTAINERS: Update my email address.
! 
! 2020-11-06  Hongtao Liu  <hongtao.liu@intel.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2020-10-06  Tobias Burnus  <tobias@codesourcery.com>
  
  	PR target/97302
  	* configure.ac: Only set with_gmp to /usr/local
  	if not building in tree.
  	* configure: Regenerate.
  
! 2020-09-18  Omar Tahir  <omar.tahir@arm.com>
  
! 	* MAINTAINERS (Write After Approval): Add myself.
  
! 2020-08-26  Tobias Burnus  <tobias@codesourcery.com>
  
! 	* MAINTAINERS (Various Maintainers): Add myself as OpenACC maintainer.
! 
! 2020-08-20  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	PR bootstrap/96612
! 	* configure.ac: Run AX_CXX_COMPILE_STDCXX also for ${build} compiler,
! 	if not the same as ${host}.
! 	* configure: Regenerate.
! 
! 2020-08-16  Sergei Trofimovich  <slyfox@gcc.gnu.org>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2020-08-12  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
! 
! 	* MAINTAINERS: Update my email address.
! 
! 2020-07-30  Joe Ramsay  <joe.ramsay@arm.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2020-07-22  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2020-06-12  Martin Liska  <mliska@suse.cz>
! 
! 	* .gitignore: Add .clang-tidy.
! 
! 2020-06-08  Jason Merrill  <jason@redhat.com>
! 
! 	* configure.ac: Check AX_CXX_COMPILE_STDCXX if not bootstrapping.
! 	* configure: Regenerate.
! 
! 2020-06-06  Max Filippov  <jcmvbkbc@gmail.com>
! 
! 	* MAINTAINERS: Add myself as xtensa port maintainer.
! 
! 2020-05-28  Nicolas Bértolo  <nicolasbertolo@gmail.com>
! 
! 	* configure.ac: Don't require --enable-host-shared when building
! 	for Mingw.
! 	* configure: Regenerate.
! 
! 2020-05-18  Jason Merrill  <jason@redhat.com>
! 
! 	* configure.ac: Update bootstrap dialect to -std=c++11.
! 
! 2020-05-18  Alex Coplan  <alex.coplan@arm.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
  
  2020-04-29  Thomas Schwinge  <thomas@codesourcery.com>
  
diff -Nrcpad gcc-10.3.0/INSTALL/binaries.html gcc-11.1.0/INSTALL/binaries.html
*** gcc-10.3.0/INSTALL/binaries.html	Thu Apr  8 11:57:06 2021
--- gcc-11.1.0/INSTALL/binaries.html	Tue Apr 27 10:00:36 2021
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,6 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,25 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Binaries</title>
--- 19,25 ----
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Binaries</title>
*************** You have freedom to copy and modify this
*** 33,55 ****
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
--- 33,46 ----
*************** ul.no-bullet {list-style: none}
*** 85,92 ****
  
  
  
! <a name="index-Binaries"></a>
! <a name="index-Installing-GCC_003a-Binaries"></a>
  
  <p>We are often asked about pre-compiled versions of GCC.  While we cannot
  provide these for all platforms, below you&rsquo;ll find links to binaries for
--- 76,83 ----
  
  
  
! <span id="index-Binaries"></span>
! <span id="index-Installing-GCC_003a-Binaries"></span>
  
  <p>We are often asked about pre-compiled versions of GCC.  While we cannot
  provide these for all platforms, below you&rsquo;ll find links to binaries for
diff -Nrcpad gcc-10.3.0/INSTALL/build.html gcc-11.1.0/INSTALL/build.html
*** gcc-10.3.0/INSTALL/build.html	Thu Apr  8 11:57:05 2021
--- gcc-11.1.0/INSTALL/build.html	Tue Apr 27 10:00:36 2021
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,6 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,25 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Building</title>
--- 19,25 ----
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Building</title>
*************** You have freedom to copy and modify this
*** 33,55 ****
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
--- 33,46 ----
*************** ul.no-bullet {list-style: none}
*** 82,88 ****
  
  
  
! <a name="index-Installing-GCC_003a-Building"></a>
  
  <p>Now that GCC is configured, you are ready to build the compiler and
  runtime libraries.
--- 73,79 ----
  
  
  
! <span id="index-Installing-GCC_003a-Building"></span>
  
  <p>Now that GCC is configured, you are ready to build the compiler and
  runtime libraries.
*************** documentation, you need version 4.7 or l
*** 129,136 ****
  want Info documentation to be regenerated.  Releases contain Info
  documentation pre-built for the unmodified documentation in the release.
  </p>
! <a name="Building-a-native-compiler"></a>
! <h3 class="section">Building a native compiler</h3>
  
  <p>For a native build, the default configuration is to perform
  a 3-stage bootstrap of the compiler when &lsquo;<samp>make</samp>&rsquo; is invoked.
--- 120,126 ----
  want Info documentation to be regenerated.  Releases contain Info
  documentation pre-built for the unmodified documentation in the release.
  </p>
! <span id="Building-a-native-compiler"></span><h3 class="section">Building a native compiler</h3>
  
  <p>For a native build, the default configuration is to perform
  a 3-stage bootstrap of the compiler when &lsquo;<samp>make</samp>&rsquo; is invoked.
*************** following example.  This will save rough
*** 172,179 ****
  the bootstrap and the final installation.  (Libraries will still contain
  debugging information.)
  </p>
! <div class="smallexample">
! <pre class="smallexample">make BOOT_CFLAGS='-O' bootstrap
  </pre></div>
  
  <p>You can place non-default optimization flags into <code>BOOT_CFLAGS</code>; they
--- 162,169 ----
  the bootstrap and the final installation.  (Libraries will still contain
  debugging information.)
  </p>
! <div class="example">
! <pre class="example">make BOOT_CFLAGS='-O' bootstrap
  </pre></div>
  
  <p>You can place non-default optimization flags into <code>BOOT_CFLAGS</code>; they
*************** the build tree.
*** 329,338 ****
  accesses within the GCC code.
  </p>
  </dd>
  </dl>
  
! <a name="Building-a-cross-compiler"></a>
! <h3 class="section">Building a cross compiler</h3>
  
  <p>When building a cross compiler, it is not generally possible to do a
  3-stage bootstrap of the compiler.  This makes for an interesting problem
--- 319,333 ----
  accesses within the GCC code.
  </p>
  </dd>
+ <dt>&lsquo;<samp>bootstrap-hwasan</samp>&rsquo;</dt>
+ <dd><p>Compiles GCC itself using HWAddress Sanitization in order to catch invalid
+ memory accesses within the GCC code.  This option is only available on AArch64
+ systems that are running Linux kernel version 5.4 or later.
+ </p>
+ </dd>
  </dl>
  
! <span id="Building-a-cross-compiler"></span><h3 class="section">Building a cross compiler</h3>
  
  <p>When building a cross compiler, it is not generally possible to do a
  3-stage bootstrap of the compiler.  This makes for an interesting problem
*************** alternatives for <samp>crt0.o</samp>, fo
*** 409,416 ****
  compilation options.  Check your target&rsquo;s definition of
  <code>STARTFILE_SPEC</code> to find out what start files it uses.
  </p>
! <a name="Building-in-parallel"></a>
! <h3 class="section">Building in parallel</h3>
  
  <p>GNU Make 3.80 and above, which is necessary to build GCC, support
  building in parallel.  To activate this, you can use &lsquo;<samp>make -j 2</samp>&rsquo;
--- 404,410 ----
  compilation options.  Check your target&rsquo;s definition of
  <code>STARTFILE_SPEC</code> to find out what start files it uses.
  </p>
! <span id="Building-in-parallel"></span><h3 class="section">Building in parallel</h3>
  
  <p>GNU Make 3.80 and above, which is necessary to build GCC, support
  building in parallel.  To activate this, you can use &lsquo;<samp>make -j 2</samp>&rsquo;
*************** your machine will result in fewer and sh
*** 420,432 ****
  improving overall throughput; this is especially true for slow drives
  and network filesystems.
  </p>
! <a name="Building-the-Ada-compiler"></a>
! <h3 class="section">Building the Ada compiler</h3>
  
  <p><a href="prerequisites.html#GNAT-prerequisite">GNAT prerequisites</a>.
  </p>
! <a name="Building-with-profile-feedback"></a>
! <h3 class="section">Building with profile feedback</h3>
  
  <p>It is possible to use profile feedback to optimize the compiler itself.  This
  should result in a faster compiler binary.  Experiments done on x86 using gcc
--- 414,424 ----
  improving overall throughput; this is especially true for slow drives
  and network filesystems.
  </p>
! <span id="Building-the-Ada-compiler"></span><h3 class="section">Building the Ada compiler</h3>
  
  <p><a href="prerequisites.html#GNAT-prerequisite">GNAT prerequisites</a>.
  </p>
! <span id="Building-with-profile-feedback"></span><h3 class="section">Building with profile feedback</h3>
  
  <p>It is possible to use profile feedback to optimize the compiler itself.  This
  should result in a faster compiler binary.  Experiments done on x86 using gcc
diff -Nrcpad gcc-10.3.0/INSTALL/configure.html gcc-11.1.0/INSTALL/configure.html
*** gcc-10.3.0/INSTALL/configure.html	Thu Apr  8 11:57:05 2021
--- gcc-11.1.0/INSTALL/configure.html	Tue Apr 27 10:00:35 2021
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,6 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,25 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Configuration</title>
--- 19,25 ----
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Configuration</title>
*************** You have freedom to copy and modify this
*** 33,55 ****
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
--- 33,46 ----
*************** ul.no-bullet {list-style: none}
*** 81,88 ****
  
  
  
! <a name="index-Configuration"></a>
! <a name="index-Installing-GCC_003a-Configuration"></a>
  
  <p>Like most GNU software, GCC must be configured before it can be built.
  This document describes the recommended configuration procedure
--- 72,79 ----
  
  
  
! <span id="index-Configuration"></span>
! <span id="index-Installing-GCC_003a-Configuration"></span>
  
  <p>Like most GNU software, GCC must be configured before it can be built.
  This document describes the recommended configuration procedure
*************** scripts may fail.
*** 128,141 ****
  
  <p>To configure GCC:
  </p>
! <div class="smallexample">
! <pre class="smallexample">% mkdir <var>objdir</var>
  % cd <var>objdir</var>
  % <var>srcdir</var>/configure [<var>options</var>] [<var>target</var>]
  </pre></div>
  
! <a name="Distributor-options"></a>
! <h3 class="heading">Distributor options</h3>
  
  <p>If you will be distributing binary versions of GCC, with modifications
  to the source code, you should use the options described in this
--- 119,131 ----
  
  <p>To configure GCC:
  </p>
! <div class="example">
! <pre class="example">% mkdir <var>objdir</var>
  % cd <var>objdir</var>
  % <var>srcdir</var>/configure [<var>options</var>] [<var>target</var>]
  </pre></div>
  
! <span id="Distributor-options"></span><h3 class="heading">Distributor options</h3>
  
  <p>If you will be distributing binary versions of GCC, with modifications
  to the source code, you should use the options described in this
*************** The <var>url</var> should end with a <co
*** 176,183 ****
  </dd>
  </dl>
  
! <a name="Target-specification"></a>
! <h3 class="heading">Target specification</h3>
  <ul>
  <li> GCC has code to correctly determine the correct value for <var>target</var>
  for nearly all native systems.  Therefore, we highly recommend you do
--- 166,172 ----
  </dd>
  </dl>
  
! <span id="Target-specification"></span><h3 class="heading">Target specification</h3>
  <ul>
  <li> GCC has code to correctly determine the correct value for <var>target</var>
  for nearly all native systems.  Therefore, we highly recommend you do
*************** implies that the host defaults to <var>t
*** 192,199 ****
  </li></ul>
  
  
! <a name="Options-specification"></a>
! <h3 class="heading">Options specification</h3>
  
  <p>Use <var>options</var> to override several configure time options for
  GCC.  A list of supported <var>options</var> follows; &lsquo;<samp>configure
--- 181,187 ----
  </li></ul>
  
  
! <span id="Options-specification"></span><h3 class="heading">Options specification</h3>
  
  <p>Use <var>options</var> to override several configure time options for
  GCC.  A list of supported <var>options</var> follows; &lsquo;<samp>configure
*************** but yielding a slightly slower compiler.
*** 469,475 ****
  libraries.
  </p>
  </dd>
! <dt><code><a name="with-gnu-as"></a>--with-gnu-as</code></dt>
  <dd><p>Specify that the compiler should assume that the
  assembler it finds is the GNU assembler.  However, this does not modify
  the rules to find an assembler and will result in confusion if the
--- 457,463 ----
  libraries.
  </p>
  </dd>
! <dt><code><span id="with-gnu-as"></span>--with-gnu-as</code></dt>
  <dd><p>Specify that the compiler should assume that the
  assembler it finds is the GNU assembler.  However, this does not modify
  the rules to find an assembler and will result in confusion if the
*************** whether you use the GNU assembler.  On a
*** 492,498 ****
  </li></ul>
  
  </dd>
! <dt><code><a name="with-as"></a>--with-as=<var>pathname</var></code></dt>
  <dd><p>Specify that the compiler should use the assembler pointed to by
  <var>pathname</var>, rather than the one found by the standard rules to find
  an assembler, which are:
--- 480,486 ----
  </li></ul>
  
  </dd>
! <dt><code><span id="with-as"></span>--with-as=<var>pathname</var></code></dt>
  <dd><p>Specify that the compiler should use the assembler pointed to by
  <var>pathname</var>, rather than the one found by the standard rules to find
  an assembler, which are:
*************** assemblers installed and want to choose
*** 525,531 ****
  above rules.
  </p>
  </dd>
! <dt><code><a name="with-gnu-ld"></a>--with-gnu-ld</code></dt>
  <dd><p>Same as <a href="#with-gnu-as"><samp>--with-gnu-as</samp></a>
  but for the linker.
  </p>
--- 513,519 ----
  above rules.
  </p>
  </dd>
! <dt><code><span id="with-gnu-ld"></span>--with-gnu-ld</code></dt>
  <dd><p>Same as <a href="#with-gnu-as"><samp>--with-gnu-as</samp></a>
  but for the linker.
  </p>
*************** specialized subset.
*** 724,737 ****
  </p>
  <p>Example 1: to configure a compiler for SH4A only, but supporting both
  endians, with little endian being the default:
! </p><div class="smallexample">
! <pre class="smallexample">--with-cpu=sh4a --with-endian=little,big --with-multilib-list=
  </pre></div>
  
  <p>Example 2: to configure a compiler for both SH4A and SH4AL-DSP, but with
  only little endian SH4AL:
! </p><div class="smallexample">
! <pre class="smallexample">--with-cpu=sh4a --with-endian=little,big \
  --with-multilib-list=sh4al,!mb/m4al
  </pre></div>
  
--- 712,725 ----
  </p>
  <p>Example 1: to configure a compiler for SH4A only, but supporting both
  endians, with little endian being the default:
! </p><div class="example">
! <pre class="example">--with-cpu=sh4a --with-endian=little,big --with-multilib-list=
  </pre></div>
  
  <p>Example 2: to configure a compiler for both SH4A and SH4AL-DSP, but with
  only little endian SH4AL:
! </p><div class="example">
! <pre class="example">--with-cpu=sh4a --with-endian=little,big \
  --with-multilib-list=sh4al,!mb/m4al
  </pre></div>
  
*************** and only the default run-time library wi
*** 748,753 ****
--- 736,773 ----
  </dl>
  
  </dd>
+ <dt><code>--with-multilib-generator=<var>config</var></code></dt>
+ <dd><p>Specify what multilibs to build.  <var>config</var> is a semicolon separated list of
+ values, possibly consisting of a single value.  Currently only implemented
+ for riscv*-*-elf*.  The accepted values and meanings are given below.
+ </p>
+ 
+ <p>Every config is constructed with four components: architecture string, ABI,
+ reuse rule with architecture string and reuse rule with sub-extension.
+ </p>
+ <p>Example 1: Add multi-lib suppport for rv32i with ilp32.
+ </p><div class="example">
+ <pre class="example">rv32i-ilp32--
+ </pre></div>
+ 
+ <p>Example 2: Add multi-lib suppport for rv32i with ilp32 and rv32imafd with ilp32.
+ </p><div class="example">
+ <pre class="example">rv32i-ilp32--;rv32imafd-ilp32--
+ </pre></div>
+ 
+ <p>Example 3: Add multi-lib suppport for rv32i with ilp32; rv32im with ilp32 and
+ rv32ic with ilp32 will reuse this multi-lib set.
+ </p><div class="example">
+ <pre class="example">rv32i-ilp32-rv32im-c
+ </pre></div>
+ 
+ <p>Example 4: Add multi-lib suppport for rv64ima with lp64; rv64imaf with lp64,
+ rv64imac with lp64 and rv64imafc with lp64 will reuse this multi-lib set.
+ </p><div class="example">
+ <pre class="example">rv64ima-lp64--f,c,fc
+ </pre></div>
+ 
+ </dd>
  <dt><code>--with-endian=<var>endians</var></code></dt>
  <dd><p>Specify what endians to use.
  Currently only implemented for sh*-*-*.
*************** multiple languages at the same time, to
*** 1083,1088 ****
--- 1103,1117 ----
  systems with limited free memory.  The default is not to use such a mutex.
  </p>
  </dd>
+ <dt><code>--enable-link-serialization</code></dt>
+ <dd><p>When building GCC, use make dependencies to serialize linking the compilers for
+ multiple languages, to avoid thrashing on build
+ systems with limited free memory.  The default is not to add such
+ dependencies and thus with parallel make potentially link different
+ compilers concurrently.  If the argument is a positive integer, allow
+ that number of concurrent link processes for the large binaries.
+ </p>
+ </dd>
  <dt><code>--enable-maintainer-mode</code></dt>
  <dd><p>The build rules that regenerate the Autoconf and Automake output files as
  well as the GCC master message catalog <samp>gcc.pot</samp> are normally
*************** parallel.  The default is &lsquo;<samp>y
*** 1136,1142 ****
  the remaining libraries.
  </p>
  </dd>
! <dt><code><a name="WithAixSoname"></a>--with-aix-soname=&lsquo;<samp>aix</samp>&rsquo;, &lsquo;<samp>svr4</samp>&rsquo; or &lsquo;<samp>both</samp>&rsquo;</code></dt>
  <dd><p>Traditional AIX shared library versioning (versioned <code>Shared Object</code>
  files as members of unversioned <code>Archive Library</code> files named
  &lsquo;<samp>lib.a</samp>&rsquo;) causes numerous headaches for package managers. However,
--- 1165,1171 ----
  the remaining libraries.
  </p>
  </dd>
! <dt><code><span id="WithAixSoname"></span>--with-aix-soname=&lsquo;<samp>aix</samp>&rsquo;, &lsquo;<samp>svr4</samp>&rsquo; or &lsquo;<samp>both</samp>&rsquo;</code></dt>
  <dd><p>Traditional AIX shared library versioning (versioned <code>Shared Object</code>
  files as members of unversioned <code>Archive Library</code> files named
  &lsquo;<samp>lib.a</samp>&rsquo;) causes numerous headaches for package managers. However,
*************** where this is called the &quot;SONAME&qu
*** 1147,1153 ****
  linker does search for &lsquo;<samp>libNAME.so</samp>&rsquo; before &lsquo;<samp>libNAME.a</samp>&rsquo; library
  filenames with the &lsquo;<samp>-lNAME</samp>&rsquo; linker flag.
  </p>
! <a name="AixLdCommand"></a><p>For detailed information please refer to the AIX
  <a href="https://www.ibm.com/support/knowledgecenter/search/%22the%20ld%20command%2C%20also%20called%20the%20linkage%20editor%20or%20binder%22">ld
  Command</a> reference.
  </p>
--- 1176,1182 ----
  linker does search for &lsquo;<samp>libNAME.so</samp>&rsquo; before &lsquo;<samp>libNAME.a</samp>&rsquo; library
  filenames with the &lsquo;<samp>-lNAME</samp>&rsquo; linker flag.
  </p>
! <span id="AixLdCommand"></span><p>For detailed information please refer to the AIX
  <a href="https://www.ibm.com/support/knowledgecenter/search/%22the%20ld%20command%2C%20also%20called%20the%20linkage%20editor%20or%20binder%22">ld
  Command</a> reference.
  </p>
*************** this option is still experimental and no
*** 1247,1254 ****
  their runtime libraries should be built.  For a list of valid values for
  <var>langN</var> you can issue the following command in the
  <samp>gcc</samp> directory of your GCC source tree:<br>
! </p><div class="smallexample">
! <pre class="smallexample">grep ^language= */config-lang.in
  </pre></div>
  <p>Currently, you can use any of the following:
  <code>all</code>, <code>default</code>, <code>ada</code>, <code>c</code>, <code>c++</code>, <code>d</code>,
--- 1276,1283 ----
  their runtime libraries should be built.  For a list of valid values for
  <var>langN</var> you can issue the following command in the
  <samp>gcc</samp> directory of your GCC source tree:<br>
! </p><div class="example">
! <pre class="example">grep ^language= */config-lang.in
  </pre></div>
  <p>Currently, you can use any of the following:
  <code>all</code>, <code>default</code>, <code>ada</code>, <code>c</code>, <code>c++</code>, <code>d</code>,
*************** compiler driver.
*** 1382,1389 ****
  <dd><p>The <samp>--enable-win32-registry</samp> option enables Microsoft Windows-hosted GCC
  to look up installations paths in the registry using the following key:
  </p>
! <div class="smallexample">
! <pre class="smallexample"><code>HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\<var>key</var></code>
  </pre></div>
  
  <p><var>key</var> defaults to GCC version number, and can be overridden by the
--- 1411,1418 ----
  <dd><p>The <samp>--enable-win32-registry</samp> option enables Microsoft Windows-hosted GCC
  to look up installations paths in the registry using the following key:
  </p>
! <div class="example">
! <pre class="example"><code>HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\<var>key</var></code>
  </pre></div>
  
  <p><var>key</var> defaults to GCC version number, and can be overridden by the
*************** checking with extra checks that might af
*** 1448,1454 ****
  therefore not differ between stage1 and later stages in bootstrap.
  </p>
  <p>The &lsquo;<samp>valgrind</samp>&rsquo; check requires the external <code>valgrind</code> simulator,
! available from <a href="http://valgrind.org/">http://valgrind.org/</a>.  The &lsquo;<samp>rtl</samp>&rsquo; checks are
  expensive and the &lsquo;<samp>df</samp>&rsquo;, &lsquo;<samp>gcac</samp>&rsquo; and &lsquo;<samp>valgrind</samp>&rsquo; checks are very
  expensive.
  </p>
--- 1477,1483 ----
  therefore not differ between stage1 and later stages in bootstrap.
  </p>
  <p>The &lsquo;<samp>valgrind</samp>&rsquo; check requires the external <code>valgrind</code> simulator,
! available from <a href="https://valgrind.org">https://valgrind.org</a>.  The &lsquo;<samp>rtl</samp>&rsquo; checks are
  expensive and the &lsquo;<samp>df</samp>&rsquo;, &lsquo;<samp>gcac</samp>&rsquo; and &lsquo;<samp>valgrind</samp>&rsquo; checks are very
  expensive.
  </p>
*************** GNU/Linux (&lsquo;<samp>i686-pc-linux-gn
*** 1738,1745 ****
  executable on the former system), you can configure GCC as follows for
  getting compatible linker plugins:
  </p>
! <div class="smallexample">
! <pre class="smallexample">% <var>srcdir</var>/configure \
      --host=x86_64-pc-linux-gnu \
      --enable-linker-plugin-configure-flags=--host=i686-pc-linux-gnu \
      --enable-linker-plugin-flags='CC=gcc\ -m32\ -Wl,-rpath,[...]/i686-pc-linux-gnu/lib'
--- 1767,1774 ----
  executable on the former system), you can configure GCC as follows for
  getting compatible linker plugins:
  </p>
! <div class="example">
! <pre class="example">% <var>srcdir</var>/configure \
      --host=x86_64-pc-linux-gnu \
      --enable-linker-plugin-configure-flags=--host=i686-pc-linux-gnu \
      --enable-linker-plugin-flags='CC=gcc\ -m32\ -Wl,-rpath,[...]/i686-pc-linux-gnu/lib'
*************** Offload compilers are expected to be alr
*** 1786,1810 ****
  path for them is <samp><var>exec-prefix</var></samp>, but it can be changed by
  specifying paths <var>path1</var>, &hellip;, <var>pathN</var>.
  </p>
! <div class="smallexample">
! <pre class="smallexample">% <var>srcdir</var>/configure \
!     --enable-offload-targets=x86_64-intelmicemul-linux-gnu=/path/to/x86_64/compiler,nvptx-none,hsa
  </pre></div>
  
- <p>If &lsquo;<samp>hsa</samp>&rsquo; is specified as one of the targets, the compiler will be
- built with support for HSA GPU accelerators.  Because the same
- compiler will emit the accelerator code, no path should be specified.
- </p>
  </dd>
  <dt><code>--with-hsa-runtime=<var>pathname</var></code></dt>
  <dt><code>--with-hsa-runtime-include=<var>pathname</var></code></dt>
  <dt><code>--with-hsa-runtime-lib=<var>pathname</var></code></dt>
  <dd>
! <p>If you configure GCC with HSA offloading but do not have the HSA
! run-time library installed in a standard location then you can
! explicitly specify the directory where they are installed.  The
! <samp>--with-hsa-runtime=<var>hsainstalldir</var></samp> option is a
! shorthand for
  <samp>--with-hsa-runtime-lib=<var>hsainstalldir</var>/lib</samp> and
  <samp>--with-hsa-runtime-include=<var>hsainstalldir</var>/include</samp>.
  </p>
--- 1815,1835 ----
  path for them is <samp><var>exec-prefix</var></samp>, but it can be changed by
  specifying paths <var>path1</var>, &hellip;, <var>pathN</var>.
  </p>
! <div class="example">
! <pre class="example">% <var>srcdir</var>/configure \
!     --enable-offload-targets=x86_64-intelmicemul-linux-gnu=/path/to/x86_64/compiler,nvptx-none
  </pre></div>
  
  </dd>
  <dt><code>--with-hsa-runtime=<var>pathname</var></code></dt>
  <dt><code>--with-hsa-runtime-include=<var>pathname</var></code></dt>
  <dt><code>--with-hsa-runtime-lib=<var>pathname</var></code></dt>
  <dd>
! <p>If you configure GCC with offloading which uses an HSA run-time such as
! AMDGCN but do not have the HSA run-time library installed in a standard
! location then you can explicitly specify the directory where they are
! installed.  The <samp>--with-hsa-runtime=<var>hsainstalldir</var></samp> option
! is a shorthand for
  <samp>--with-hsa-runtime-lib=<var>hsainstalldir</var>/lib</samp> and
  <samp>--with-hsa-runtime-include=<var>hsainstalldir</var>/include</samp>.
  </p>
*************** instrumentation, see <samp>-fcf-protecti
*** 1817,1827 ****
  to add <samp>-fcf-protection</samp> and, if needed, other target
  specific options to a set of building options.
  </p>
! <p>The option is disabled by default.  When <code>--enable-cet=auto</code>
! is used, it is enabled on Linux/x86 if target binutils
! supports <code>Intel CET</code> instructions and disabled otherwise.
! In this case the target libraries are configured to get additional
! <samp>-fcf-protection</samp> option.
  </p>
  </dd>
  <dt><code>--with-riscv-attribute=&lsquo;<samp>yes</samp>&rsquo;, &lsquo;<samp>no</samp>&rsquo; or &lsquo;<samp>default</samp>&rsquo;</code></dt>
--- 1842,1851 ----
  to add <samp>-fcf-protection</samp> and, if needed, other target
  specific options to a set of building options.
  </p>
! <p><code>--enable-cet=auto</code> is default.  CET is enabled on Linux/x86 if
! target binutils supports <code>Intel CET</code> instructions and disabled
! otherwise.  In this case, the target libraries are configured to get
! additional <samp>-fcf-protection</samp> option.
  </p>
  </dd>
  <dt><code>--with-riscv-attribute=&lsquo;<samp>yes</samp>&rsquo;, &lsquo;<samp>no</samp>&rsquo; or &lsquo;<samp>default</samp>&rsquo;</code></dt>
*************** information in object.
*** 1830,1840 ****
  </p>
  <p>The option is disabled by default. It is enabled on RISC-V/ELF (bare-metal)
  target if target binutils supported.
  </p></dd>
  </dl>
  
! <a name="Cross-Compiler-Specific-Options"></a>
! <h4 class="subheading">Cross-Compiler-Specific Options</h4>
  <p>The following options only apply to building cross compilers.
  </p>
  <dl compact="compact">
--- 1854,1875 ----
  </p>
  <p>The option is disabled by default. It is enabled on RISC-V/ELF (bare-metal)
  target if target binutils supported.
+ </p>
+ </dd>
+ <dt><code>--enable-s390-excess-float-precision</code></dt>
+ <dt><code>--disable-s390-excess-float-precision</code></dt>
+ <dd><p>On s390(x) targets, enable treatment of float expressions with double precision
+ when in standards-compliant mode (e.g., when <code>--std=c99</code> or
+ <code>-fexcess-precision=standard</code> are given).
+ </p>
+ <p>For a native build and cross compiles that have target headers, the option&rsquo;s
+ default is derived from glibc&rsquo;s behavior. When glibc clamps float_t to double,
+ GCC follows and enables the option. For other cross compiles, the default is
+ disabled.
  </p></dd>
  </dl>
  
! <span id="Cross-Compiler-Specific-Options"></span><h4 class="subheading">Cross-Compiler-Specific Options</h4>
  <p>The following options only apply to building cross compilers.
  </p>
  <dl compact="compact">
*************** tools.
*** 2011,2018 ****
  </p></dd>
  </dl>
  
! <a name="Overriding-configure-test-results"></a>
! <h4 class="subsubheading">Overriding <code>configure</code> test results</h4>
  
  <p>Sometimes, it might be necessary to override the result of some
  <code>configure</code> test, for example in order to ease porting to a new
--- 2046,2052 ----
  </p></dd>
  </dl>
  
! <span id="Overriding-configure-test-results"></span><h4 class="subsubheading">Overriding <code>configure</code> test results</h4>
  
  <p>Sometimes, it might be necessary to override the result of some
  <code>configure</code> test, for example in order to ease porting to a new
*************** script provides three variables for this
*** 2021,2039 ****
  </p>
  <dl compact="compact">
  <dt><code>build_configargs</code></dt>
! <dd><a name="index-build_005fconfigargs"></a>
  <p>The contents of this variable is passed to all build <code>configure</code>
  scripts.
  </p>
  </dd>
  <dt><code>host_configargs</code></dt>
! <dd><a name="index-host_005fconfigargs"></a>
  <p>The contents of this variable is passed to all host <code>configure</code>
  scripts.
  </p>
  </dd>
  <dt><code>target_configargs</code></dt>
! <dd><a name="index-target_005fconfigargs"></a>
  <p>The contents of this variable is passed to all target <code>configure</code>
  scripts.
  </p>
--- 2055,2073 ----
  </p>
  <dl compact="compact">
  <dt><code>build_configargs</code></dt>
! <dd><span id="index-build_005fconfigargs"></span>
  <p>The contents of this variable is passed to all build <code>configure</code>
  scripts.
  </p>
  </dd>
  <dt><code>host_configargs</code></dt>
! <dd><span id="index-host_005fconfigargs"></span>
  <p>The contents of this variable is passed to all host <code>configure</code>
  scripts.
  </p>
  </dd>
  <dt><code>target_configargs</code></dt>
! <dd><span id="index-target_005fconfigargs"></span>
  <p>The contents of this variable is passed to all target <code>configure</code>
  scripts.
  </p>
*************** scripts.
*** 2044,2051 ****
  overrides, you can pass a setting for <code>CONFIG_SITE</code> and set
  variables in the site file.
  </p>
! <a name="Objective-C-Specific-Options"></a>
! <h4 class="subheading">Objective-C-Specific Options</h4>
  
  <p>The following options apply to the build of the Objective-C runtime library.
  </p>
--- 2078,2084 ----
  overrides, you can pass a setting for <code>CONFIG_SITE</code> and set
  variables in the site file.
  </p>
! <span id="Objective-C-Specific-Options"></span><h4 class="subheading">Objective-C-Specific Options</h4>
  
  <p>The following options apply to the build of the Objective-C runtime library.
  </p>
*************** default locations.
*** 2081,2088 ****
  </p></dd>
  </dl>
  
! <a name="D-Specific-Options"></a>
! <h4 class="subheading">D-Specific Options</h4>
  
  <p>The following options apply to the build of the D runtime library.
  </p>
--- 2114,2120 ----
  </p></dd>
  </dl>
  
! <span id="D-Specific-Options"></span><h4 class="subheading">D-Specific Options</h4>
  
  <p>The following options apply to the build of the D runtime library.
  </p>
diff -Nrcpad gcc-10.3.0/INSTALL/download.html gcc-11.1.0/INSTALL/download.html
*** gcc-10.3.0/INSTALL/download.html	Thu Apr  8 11:57:05 2021
--- gcc-11.1.0/INSTALL/download.html	Tue Apr 27 10:00:35 2021
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,6 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,25 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Downloading GCC</title>
--- 19,25 ----
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Downloading GCC</title>
*************** You have freedom to copy and modify this
*** 33,55 ****
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
--- 33,46 ----
*************** ul.no-bullet {list-style: none}
*** 80,87 ****
  
  
  
! <a name="index-Downloading-GCC"></a>
! <a name="index-Downloading-the-Source"></a>
  
  <p>GCC is distributed via <a href="http://gcc.gnu.org/git.html">git</a> and via
  HTTPS as tarballs compressed with <code>gzip</code> or <code>bzip2</code>.
--- 71,78 ----
  
  
  
! <span id="index-Downloading-GCC"></span>
! <span id="index-Downloading-the-Source"></span>
  
  <p>GCC is distributed via <a href="http://gcc.gnu.org/git.html">git</a> and via
  HTTPS as tarballs compressed with <code>gzip</code> or <code>bzip2</code>.
diff -Nrcpad gcc-10.3.0/INSTALL/finalinstall.html gcc-11.1.0/INSTALL/finalinstall.html
*** gcc-10.3.0/INSTALL/finalinstall.html	Thu Apr  8 11:57:06 2021
--- gcc-11.1.0/INSTALL/finalinstall.html	Tue Apr 27 10:00:36 2021
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,6 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,25 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Final installation</title>
--- 19,25 ----
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Final installation</title>
*************** You have freedom to copy and modify this
*** 33,55 ****
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
--- 33,46 ----
*************** ul.no-bullet {list-style: none}
*** 86,93 ****
  
  
  <p>Now that GCC has been built (and optionally tested), you can install it with
! </p><div class="smallexample">
! <pre class="smallexample">cd <var>objdir</var> &amp;&amp; make install
  </pre></div>
  
  <p>We strongly recommend to install into a target directory where there is
--- 77,84 ----
  
  
  <p>Now that GCC has been built (and optionally tested), you can install it with
! </p><div class="example">
! <pre class="example">cd <var>objdir</var> &amp;&amp; make install
  </pre></div>
  
  <p>We strongly recommend to install into a target directory where there is
*************** binutils, including assembler and linker
*** 119,126 ****
  <p>Installation into a temporary staging area or into a <code>chroot</code>
  jail can be achieved with the command
  </p>
! <div class="smallexample">
! <pre class="smallexample">make DESTDIR=<var>path-to-rootdir</var> install
  </pre></div>
  
  <p>where <var>path-to-rootdir</var> is the absolute path of
--- 110,117 ----
  <p>Installation into a temporary staging area or into a <code>chroot</code>
  jail can be achieved with the command
  </p>
! <div class="example">
! <pre class="example">make DESTDIR=<var>path-to-rootdir</var> install
  </pre></div>
  
  <p>where <var>path-to-rootdir</var> is the absolute path of
*************** using the <code>DESTDIR</code> feature.
*** 139,146 ****
  </p>
  <p>You can install stripped programs and libraries with
  </p>
! <div class="smallexample">
! <pre class="smallexample">make install-strip
  </pre></div>
  
  <p>If you are bootstrapping a released version of GCC then please
--- 130,137 ----
  </p>
  <p>You can install stripped programs and libraries with
  </p>
! <div class="example">
! <pre class="example">make install-strip
  </pre></div>
  
  <p>If you are bootstrapping a released version of GCC then please
diff -Nrcpad gcc-10.3.0/INSTALL/gfdl.html gcc-11.1.0/INSTALL/gfdl.html
*** gcc-10.3.0/INSTALL/gfdl.html	Thu Apr  8 11:57:06 2021
--- gcc-11.1.0/INSTALL/gfdl.html	Tue Apr 27 10:00:37 2021
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,6 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,25 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: GNU Free Documentation License</title>
--- 19,25 ----
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: GNU Free Documentation License</title>
*************** You have freedom to copy and modify this
*** 33,55 ****
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
--- 33,46 ----
*************** ul.no-bullet {list-style: none}
*** 90,96 ****
  
  <h1 align="center">Installing GCC: GNU Free Documentation License</h1>
  
! <a name="index-FDL_002c-GNU-Free-Documentation-License"></a>
  <div align="center">Version 1.3, 3 November 2008
  </div>
  <div class="display">
--- 81,87 ----
  
  <h1 align="center">Installing GCC: GNU Free Documentation License</h1>
  
! <span id="index-FDL_002c-GNU-Free-Documentation-License"></span>
  <div align="center">Version 1.3, 3 November 2008
  </div>
  <div class="display">
*************** provided the MMC is eligible for relicen
*** 523,537 ****
  </p>
  </li></ol>
  
! <a name="ADDENDUM_003a-How-to-use-this-License-for-your-documents"></a>
! <h3 class="unnumberedsec">ADDENDUM: How to use this License for your documents</h3>
  
  <p>To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and
  license notices just after the title page:
  </p>
! <div class="smallexample">
! <pre class="smallexample">  Copyright (C)  <var>year</var>  <var>your name</var>.
    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.3
    or any later version published by the Free Software Foundation;
--- 514,527 ----
  </p>
  </li></ol>
  
! <span id="ADDENDUM_003a-How-to-use-this-License-for-your-documents"></span><h3 class="unnumberedsec">ADDENDUM: How to use this License for your documents</h3>
  
  <p>To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and
  license notices just after the title page:
  </p>
! <div class="example">
! <pre class="example">  Copyright (C)  <var>year</var>  <var>your name</var>.
    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.3
    or any later version published by the Free Software Foundation;
*************** license notices just after the title pag
*** 543,550 ****
  <p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
  replace the &ldquo;with...Texts.&rdquo; line with this:
  </p>
! <div class="smallexample">
! <pre class="smallexample">    with the Invariant Sections being <var>list their titles</var>, with
      the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
      being <var>list</var>.
  </pre></div>
--- 533,540 ----
  <p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
  replace the &ldquo;with...Texts.&rdquo; line with this:
  </p>
! <div class="example">
! <pre class="example">    with the Invariant Sections being <var>list their titles</var>, with
      the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
      being <var>list</var>.
  </pre></div>
diff -Nrcpad gcc-10.3.0/INSTALL/index.html gcc-11.1.0/INSTALL/index.html
*** gcc-10.3.0/INSTALL/index.html	Thu Apr  8 11:57:04 2021
--- gcc-11.1.0/INSTALL/index.html	Tue Apr 27 10:00:35 2021
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,6 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,25 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC</title>
--- 19,25 ----
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC</title>
*************** You have freedom to copy and modify this
*** 33,55 ****
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
--- 33,46 ----
*************** not yet been merged into the main part o
*** 126,132 ****
  <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
! <p>Copyright &copy; 1988-2020 Free Software Foundation, Inc.
  </p><br>
  <p>Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 117,123 ----
  <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
! <p>Copyright &copy; 1988-2021 Free Software Foundation, Inc.
  </p><br>
  <p>Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** Free Documentation License</a>&rdquo;.
*** 149,155 ****
  
  
  
- 
  
  
  
--- 140,145 ----
diff -Nrcpad gcc-10.3.0/INSTALL/old.html gcc-11.1.0/INSTALL/old.html
*** gcc-10.3.0/INSTALL/old.html	Thu Apr  8 11:57:06 2021
--- gcc-11.1.0/INSTALL/old.html	Tue Apr 27 10:00:36 2021
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,6 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,25 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Old documentation</title>
--- 19,25 ----
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Old documentation</title>
*************** You have freedom to copy and modify this
*** 33,55 ****
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
--- 33,46 ----
*************** the same as the host machine.
*** 130,137 ****
  </p>
  <p>Here is an example:
  </p>
! <div class="smallexample">
! <pre class="smallexample">./configure --host=sparc-sun-sunos4.1
  </pre></div>
  
  <p>A configuration name may be canonical or it may be more or less
--- 121,128 ----
  </p>
  <p>Here is an example:
  </p>
! <div class="example">
! <pre class="example">./configure --host=sparc-sun-sunos4.1
  </pre></div>
  
  <p>A configuration name may be canonical or it may be more or less
*************** section before proceeding any further wi
*** 157,164 ****
  </p>
  </li></ol>
  
! <h2><a name="Configurations"></a>Configurations Supported by GCC</h2>
! <a name="index-configurations-supported-by-GCC"></a>
  
  <p>Here are the possible CPU types:
  </p>
--- 148,155 ----
  </p>
  </li></ol>
  
! <h2><span id="Configurations"></span>Configurations Supported by GCC</h2>
! <span id="index-configurations-supported-by-GCC"></span>
  
  <p>Here are the possible CPU types:
  </p>
diff -Nrcpad gcc-10.3.0/INSTALL/prerequisites.html gcc-11.1.0/INSTALL/prerequisites.html
*** gcc-10.3.0/INSTALL/prerequisites.html	Thu Apr  8 11:57:05 2021
--- gcc-11.1.0/INSTALL/prerequisites.html	Tue Apr 27 10:00:35 2021
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,6 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,25 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Prerequisites for GCC</title>
--- 19,25 ----
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Prerequisites for GCC</title>
*************** You have freedom to copy and modify this
*** 33,55 ****
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
--- 33,46 ----
*************** ul.no-bullet {list-style: none}
*** 79,105 ****
  
  
  
! <a name="index-Prerequisites"></a>
  
  <p>GCC requires that various tools and packages be available for use in the
  build procedure.  Modifying GCC sources requires additional tools
  described below.
  </p>
! <a name="Tools_002fpackages-necessary-for-building-GCC"></a>
! <h3 class="heading">Tools/packages necessary for building GCC</h3>
  <dl compact="compact">
! <dt>ISO C++98 compiler</dt>
! <dd><p>Necessary to bootstrap GCC, although versions of GCC prior
! to 4.8 also allow bootstrapping with a ISO C89 compiler and versions
! of GCC prior to 3.4 also allow bootstrapping with a traditional
! (K&amp;R) C compiler.
  </p>
  <p>To build all languages in a cross-compiler or other configuration where
  3-stage bootstrap is not performed, you need to start with an existing
! GCC binary (version 3.4 or later) because source code for language
  frontends other than C might use GCC extensions.
  </p>
! <p>Note that to bootstrap GCC with versions of GCC earlier than 3.4, you
  may need to use <samp>--disable-stage1-checking</samp>, though
  bootstrapping the compiler with such earlier compilers is strongly
  discouraged.
--- 70,97 ----
  
  
  
! <span id="index-Prerequisites"></span>
  
  <p>GCC requires that various tools and packages be available for use in the
  build procedure.  Modifying GCC sources requires additional tools
  described below.
  </p>
! <span id="Tools_002fpackages-necessary-for-building-GCC"></span><h3 class="heading">Tools/packages necessary for building GCC</h3>
  <dl compact="compact">
! <dt>ISO C++11 compiler</dt>
! <dd><p>Necessary to bootstrap GCC.
! </p>
! <p>Versions of GCC prior to 11 also allow bootstrapping with an ISO C++98
! compiler, versions of GCC prior to 4.8 also allow bootstrapping with a
! ISO C89 compiler, and versions of GCC prior to 3.4 also allow
! bootstrapping with a traditional (K&amp;R) C compiler.
  </p>
  <p>To build all languages in a cross-compiler or other configuration where
  3-stage bootstrap is not performed, you need to start with an existing
! GCC binary (version 4.8 or later) because source code for language
  frontends other than C might use GCC extensions.
  </p>
! <p>Note that to bootstrap GCC with versions of GCC earlier than 4.8, you
  may need to use <samp>--disable-stage1-checking</samp>, though
  bootstrapping the compiler with such earlier compilers is strongly
  discouraged.
*************** name of the package depends on your dist
*** 122,128 ****
  &lsquo;<samp>fatal error: gnu/stubs-32.h: No such file</samp>&rsquo;
  </p>
  </dd>
! <dt><a name="GNAT-prerequisite"></a>GNAT</dt>
  <dd>
  <p>In order to build GNAT, the Ada compiler, you need a working GNAT
  compiler (GCC version 4.7 or later).
--- 114,120 ----
  &lsquo;<samp>fatal error: gnu/stubs-32.h: No such file</samp>&rsquo;
  </p>
  </dd>
! <dt><span id="GNAT-prerequisite"></span>GNAT</dt>
  <dd>
  <p>In order to build GNAT, the Ada compiler, you need a working GNAT
  compiler (GCC version 4.7 or later).
*************** Alternatively, the <samp>--with-zstd</sa
*** 291,298 ****
  </dd>
  </dl>
  
! <a name="Tools_002fpackages-necessary-for-modifying-GCC"></a>
! <h3 class="heading">Tools/packages necessary for modifying GCC</h3>
  <dl compact="compact">
  <dt>autoconf version 2.69</dt>
  <dt>GNU m4 version 1.4.6 (or later)</dt>
--- 283,289 ----
  </dd>
  </dl>
  
! <span id="Tools_002fpackages-necessary-for-modifying-GCC"></span><h3 class="heading">Tools/packages necessary for modifying GCC</h3>
  <dl compact="compact">
  <dt>autoconf version 2.69</dt>
  <dt>GNU m4 version 1.4.6 (or later)</dt>
diff -Nrcpad gcc-10.3.0/INSTALL/specific.html gcc-11.1.0/INSTALL/specific.html
*** gcc-10.3.0/INSTALL/specific.html	Thu Apr  8 11:57:05 2021
--- gcc-11.1.0/INSTALL/specific.html	Tue Apr 27 10:00:35 2021
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,6 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,25 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Host/Target specific installation notes for GCC</title>
--- 19,25 ----
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Host/Target specific installation notes for GCC</title>
*************** You have freedom to copy and modify this
*** 33,55 ****
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
--- 33,46 ----
*************** ul.no-bullet {list-style: none}
*** 86,96 ****
  
  
  
! <a name="index-Specific"></a>
! <a name="index-Specific-installation-notes"></a>
! <a name="index-Target-specific-installation"></a>
! <a name="index-Host-specific-installation"></a>
! <a name="index-Target-specific-installation-notes"></a>
  
  <p>Please read this document carefully <em>before</em> installing the
  GNU Compiler Collection on your machine.
--- 77,87 ----
  
  
  
! <span id="index-Specific"></span>
! <span id="index-Specific-installation-notes"></span>
! <span id="index-Target-specific-installation"></span>
! <span id="index-Host-specific-installation"></span>
! <span id="index-Target-specific-installation-notes"></span>
  
  <p>Please read this document carefully <em>before</em> installing the
  GNU Compiler Collection on your machine.
*************** information have to.
*** 180,187 ****
  
  <!-- -------- host/target specific issues start here ---------------- -->
  <hr />
! <a name="aarch64-x-x"></a><a name="aarch64*-*-*"></a>
! <h3 class="heading">aarch64*-*-*</h3>
  <p>Binutils pre 2.24 does not have support for selecting <samp>-mabi</samp> and
  does not support ILP32.  If it is used to build GCC 4.9 or later, GCC will
  not support option <samp>-mabi=ilp32</samp>.
--- 171,177 ----
  
  <!-- -------- host/target specific issues start here ---------------- -->
  <hr />
! <span id="aarch64-x-x"></span><span id="aarch64*-*-*"></span><h3 class="heading">aarch64*-*-*</h3>
  <p>Binutils pre 2.24 does not have support for selecting <samp>-mabi</samp> and
  does not support ILP32.  If it is used to build GCC 4.9 or later, GCC will
  not support option <samp>-mabi=ilp32</samp>.
*************** protections by default.  This mechanism
*** 218,237 ****
  of the options are given at configure time.
  </p>
  <hr />
! <a name="alpha-x-x"></a><a name="alpha*-*-*"></a>
! <h3 class="heading">alpha*-*-*</h3>
  <p>This section contains general configuration information for all
  Alpha-based platforms using ELF.  In addition to reading this
  section, please read all other sections that match your target.
  </p>
  <hr />
! <a name="amd64-x-solaris2"></a><a name="amd64-*-solaris2*"></a>
! <h3 class="heading">amd64-*-solaris2*</h3>
  <p>This is a synonym for &lsquo;<samp>x86_64-*-solaris2*</samp>&rsquo;.
  </p>
  <hr />
! <a name="amdgcn-x-amdhsa"></a><a name="amdgcn-*-amdhsa"></a>
! <h3 class="heading">amdgcn-*-amdhsa</h3>
  <p>AMD GCN GPU target.
  </p>
  <p>Instead of GNU Binutils, you will need to install LLVM 6, or later, and copy
--- 208,224 ----
  of the options are given at configure time.
  </p>
  <hr />
! <span id="alpha-x-x"></span><span id="alpha*-*-*"></span><h3 class="heading">alpha*-*-*</h3>
  <p>This section contains general configuration information for all
  Alpha-based platforms using ELF.  In addition to reading this
  section, please read all other sections that match your target.
  </p>
  <hr />
! <span id="amd64-x-solaris2"></span><span id="amd64-*-solaris2*"></span><h3 class="heading">amd64-*-solaris2*</h3>
  <p>This is a synonym for &lsquo;<samp>x86_64-*-solaris2*</samp>&rsquo;.
  </p>
  <hr />
! <span id="amdgcn-x-amdhsa"></span><span id="amdgcn-*-amdhsa"></span><h3 class="heading">amdgcn-*-amdhsa</h3>
  <p>AMD GCN GPU target.
  </p>
  <p>Instead of GNU Binutils, you will need to install LLVM 6, or later, and copy
*************** section, please read all other sections
*** 249,270 ****
  on the GPU.
  </p>
  <hr />
! <a name="arc-x-elf32"></a><a name="arc-*-elf32"></a>
! <h3 class="heading">arc-*-elf32</h3>
  
  <p>Use &lsquo;<samp>configure --target=arc-elf32 --with-cpu=<var>cpu</var> --enable-languages=&quot;c,c++&quot;</samp>&rsquo;
  to configure GCC, with <var>cpu</var> being one of &lsquo;<samp>arc600</samp>&rsquo;, &lsquo;<samp>arc601</samp>&rsquo;,
  or &lsquo;<samp>arc700</samp>&rsquo;.
  </p>
  <hr />
! <a name="arc-linux-uclibc"></a><a name="arc-linux-uclibc-1"></a>
! <h3 class="heading">arc-linux-uclibc</h3>
  
  <p>Use &lsquo;<samp>configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages=&quot;c,c++&quot;</samp>&rsquo; to configure GCC.
  </p>
  <hr />
! <a name="arm-x-eabi"></a><a name="arm-*-eabi"></a>
! <h3 class="heading">arm-*-eabi</h3>
  <p>ARM-family processors.
  </p>
  <p>Building the Ada frontend commonly fails (an infinite loop executing
--- 236,254 ----
  on the GPU.
  </p>
  <hr />
! <span id="arc-x-elf32"></span><span id="arc-*-elf32"></span><h3 class="heading">arc-*-elf32</h3>
  
  <p>Use &lsquo;<samp>configure --target=arc-elf32 --with-cpu=<var>cpu</var> --enable-languages=&quot;c,c++&quot;</samp>&rsquo;
  to configure GCC, with <var>cpu</var> being one of &lsquo;<samp>arc600</samp>&rsquo;, &lsquo;<samp>arc601</samp>&rsquo;,
  or &lsquo;<samp>arc700</samp>&rsquo;.
  </p>
  <hr />
! <span id="arc-linux-uclibc"></span><span id="arc-linux-uclibc-1"></span><h3 class="heading">arc-linux-uclibc</h3>
  
  <p>Use &lsquo;<samp>configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages=&quot;c,c++&quot;</samp>&rsquo; to configure GCC.
  </p>
  <hr />
! <span id="arm-x-eabi"></span><span id="arm-*-eabi"></span><h3 class="heading">arm-*-eabi</h3>
  <p>ARM-family processors.
  </p>
  <p>Building the Ada frontend commonly fails (an infinite loop executing
*************** or &lsquo;<samp>arc700</samp>&rsquo;.
*** 272,279 ****
  GNAT 4.6, 4.9 or 5 release branches are known to succeed.
  </p>
  <hr />
! <a name="avr"></a><a name="avr-1"></a>
! <h3 class="heading">avr</h3>
  <p>ATMEL AVR-family micro controllers.  These are used in embedded
  applications.  There are no standard Unix configurations.
  See &ldquo;AVR Options&rdquo; in the main manual
--- 256,262 ----
  GNAT 4.6, 4.9 or 5 release branches are known to succeed.
  </p>
  <hr />
! <span id="avr"></span><span id="avr-1"></span><h3 class="heading">avr</h3>
  <p>ATMEL AVR-family micro controllers.  These are used in embedded
  applications.  There are no standard Unix configurations.
  See &ldquo;AVR Options&rdquo; in the main manual
*************** can also be obtained from:
*** 290,304 ****
  </li></ul>
  
  <p>The following error:
! </p><div class="smallexample">
! <pre class="smallexample">Error: register required
  </pre></div>
  
  <p>indicates that you should upgrade to a newer version of the binutils.
  </p>
  <hr />
! <a name="bfin"></a><a name="Blackfin"></a>
! <h3 class="heading">Blackfin</h3>
  <p>The Blackfin processor, an Analog Devices DSP.
  See &ldquo;Blackfin Options&rdquo; in the main manual
  </p>
--- 273,286 ----
  </li></ul>
  
  <p>The following error:
! </p><div class="example">
! <pre class="example">Error: register required
  </pre></div>
  
  <p>indicates that you should upgrade to a newer version of the binutils.
  </p>
  <hr />
! <span id="bfin"></span><span id="Blackfin"></span><h3 class="heading">Blackfin</h3>
  <p>The Blackfin processor, an Analog Devices DSP.
  See &ldquo;Blackfin Options&rdquo; in the main manual
  </p>
*************** See &ldquo;Blackfin Options&rdquo; in th
*** 306,313 ****
  are available at <a href="https://sourceforge.net/projects/adi-toolchain/">https://sourceforge.net/projects/adi-toolchain/</a>.
  </p>
  <hr />
! <a name="cr16"></a><a name="CR16"></a>
! <h3 class="heading">CR16</h3>
  <p>The CR16 CompactRISC architecture is a 16-bit architecture. This
  architecture is used in embedded applications.
  </p>
--- 288,294 ----
  are available at <a href="https://sourceforge.net/projects/adi-toolchain/">https://sourceforge.net/projects/adi-toolchain/</a>.
  </p>
  <hr />
! <span id="cr16"></span><span id="CR16"></span><h3 class="heading">CR16</h3>
  <p>The CR16 CompactRISC architecture is a 16-bit architecture. This
  architecture is used in embedded applications.
  </p>
*************** GCC&nbsp;for building a CR16 elf cross-c
*** 321,328 ****
  configure GCC&nbsp;for building a CR16 uclinux cross-compiler.
  </p>
  <hr />
! <a name="cris"></a><a name="CRIS"></a>
! <h3 class="heading">CRIS</h3>
  <p>CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip
  series.  These are used in embedded applications.
  </p>
--- 302,308 ----
  configure GCC&nbsp;for building a CR16 uclinux cross-compiler.
  </p>
  <hr />
! <span id="cris"></span><span id="CRIS"></span><h3 class="heading">CRIS</h3>
  <p>CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip
  series.  These are used in embedded applications.
  </p>
*************** information about this platform is avail
*** 347,354 ****
  <a href="http://developer.axis.com/">http://developer.axis.com/</a>.
  </p>
  <hr />
! <a name="dos"></a><a name="DOS"></a>
! <h3 class="heading">DOS</h3>
  <p>Please have a look at the <a href="binaries.html">binaries page</a>.
  </p>
  <p>You cannot install GCC by itself on MSDOS; it will not compile under
--- 327,333 ----
  <a href="http://developer.axis.com/">http://developer.axis.com/</a>.
  </p>
  <hr />
! <span id="dos"></span><span id="DOS"></span><h3 class="heading">DOS</h3>
  <p>Please have a look at the <a href="binaries.html">binaries page</a>.
  </p>
  <p>You cannot install GCC by itself on MSDOS; it will not compile under
*************** compilation package DJGPP, which include
*** 357,370 ****
  and includes all the necessary compilation tools and libraries.
  </p>
  <hr />
! <a name="epiphany-x-elf"></a><a name="epiphany-*-elf"></a>
! <h3 class="heading">epiphany-*-elf</h3>
  <p>Adapteva Epiphany.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="x-x-freebsd"></a><a name="g_t*-*-freebsd*"></a>
! <h3 class="heading">*-*-freebsd*</h3>
  <p>Support for FreeBSD 1 was discontinued in GCC 3.2.  Support for
  FreeBSD 2 (and any mutant a.out variants of FreeBSD 3) was
  discontinued in GCC 4.0.
--- 336,347 ----
  and includes all the necessary compilation tools and libraries.
  </p>
  <hr />
! <span id="epiphany-x-elf"></span><span id="epiphany-*-elf"></span><h3 class="heading">epiphany-*-elf</h3>
  <p>Adapteva Epiphany.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="x-x-freebsd"></span><span id="g_t*-*-freebsd*"></span><h3 class="heading">*-*-freebsd*</h3>
  <p>Support for FreeBSD 1 was discontinued in GCC 3.2.  Support for
  FreeBSD 2 (and any mutant a.out variants of FreeBSD 3) was
  discontinued in GCC 4.0.
*************** properly on FreeBSD prior to the FreeBSD
*** 399,412 ****
  after 2.16.1.
  </p>
  <hr />
! <a name="ft32-x-elf"></a><a name="ft32-*-elf"></a>
! <h3 class="heading">ft32-*-elf</h3>
  <p>The FT32 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="h8300-hms"></a><a name="h8300-hms-1"></a>
! <h3 class="heading">h8300-hms</h3>
  <p>Renesas H8/300 series of processors.
  </p>
  <p>Please have a look at the <a href="binaries.html">binaries page</a>.
--- 376,387 ----
  after 2.16.1.
  </p>
  <hr />
! <span id="ft32-x-elf"></span><span id="ft32-*-elf"></span><h3 class="heading">ft32-*-elf</h3>
  <p>The FT32 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="h8300-hms"></span><span id="h8300-hms-1"></span><h3 class="heading">h8300-hms</h3>
  <p>Renesas H8/300 series of processors.
  </p>
  <p>Please have a look at the <a href="binaries.html">binaries page</a>.
*************** first three arguments in function calls
*** 417,424 ****
  longer a multiple of 2 bytes.
  </p>
  <hr />
! <a name="hppa-hp-hpux"></a><a name="hppa*-hp-hpux*"></a>
! <h3 class="heading">hppa*-hp-hpux*</h3>
  <p>Support for HP-UX version 9 and older was discontinued in GCC 3.4.
  </p>
  <p>We require using gas/binutils on all hppa platforms.  Version 2.19 or
--- 392,398 ----
  longer a multiple of 2 bytes.
  </p>
  <hr />
! <span id="hppa-hp-hpux"></span><span id="hppa*-hp-hpux*"></span><h3 class="heading">hppa*-hp-hpux*</h3>
  <p>Support for HP-UX version 9 and older was discontinued in GCC 3.4.
  </p>
  <p>We require using gas/binutils on all hppa platforms.  Version 2.19 or
*************** a list of the predefines used with each
*** 468,475 ****
  <p>More specific information to &lsquo;<samp>hppa*-hp-hpux*</samp>&rsquo; targets follows.
  </p>
  <hr />
! <a name="hppa-hp-hpux10"></a><a name="hppa*-hp-hpux10"></a>
! <h3 class="heading">hppa*-hp-hpux10</h3>
  <p>For hpux10.20, we <em>highly</em> recommend you pick up the latest sed patch
  <code>PHCO_19798</code> from HP.
  </p>
--- 442,448 ----
  <p>More specific information to &lsquo;<samp>hppa*-hp-hpux*</samp>&rsquo; targets follows.
  </p>
  <hr />
! <span id="hppa-hp-hpux10"></span><span id="hppa*-hp-hpux10"></span><h3 class="heading">hppa*-hp-hpux10</h3>
  <p>For hpux10.20, we <em>highly</em> recommend you pick up the latest sed patch
  <code>PHCO_19798</code> from HP.
  </p>
*************** problems in using C++ on this target.  H
*** 479,486 ****
  with the one implemented under HP-UX 11 using secondary definitions.
  </p>
  <hr />
! <a name="hppa-hp-hpux11"></a><a name="hppa*-hp-hpux11"></a>
! <h3 class="heading">hppa*-hp-hpux11</h3>
  <p>GCC 3.0 and up support HP-UX 11.  GCC 2.95.x is not supported and cannot
  be used to compile GCC 3.0 and up.
  </p>
--- 452,458 ----
  with the one implemented under HP-UX 11 using secondary definitions.
  </p>
  <hr />
! <span id="hppa-hp-hpux11"></span><span id="hppa*-hp-hpux11"></span><h3 class="heading">hppa*-hp-hpux11</h3>
  <p>GCC 3.0 and up support HP-UX 11.  GCC 2.95.x is not supported and cannot
  be used to compile GCC 3.0 and up.
  </p>
*************** versioning with <samp>--disable-symvers<
*** 583,597 ****
  supported, so <samp>--enable-threads=dce</samp> does not work.
  </p>
  <hr />
! <a name="x-x-linux-gnu"></a><a name="g_t*-*-linux-gnu"></a>
! <h3 class="heading">*-*-linux-gnu</h3>
  <p>Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present
  in glibc 2.2.5 and later.  More information is available in the
  libstdc++-v3 documentation.
  </p>
  <hr />
! <a name="ix86-x-linux"></a><a name="i_003f86-*-linux*"></a>
! <h3 class="heading">i?86-*-linux*</h3>
  <p>As of GCC 3.3, binutils 2.13.1 or later is required for this platform.
  See <a href="http://gcc.gnu.org/PR10877">bug 10877</a> for more information.
  </p>
--- 555,567 ----
  supported, so <samp>--enable-threads=dce</samp> does not work.
  </p>
  <hr />
! <span id="x-x-linux-gnu"></span><span id="g_t*-*-linux-gnu"></span><h3 class="heading">*-*-linux-gnu</h3>
  <p>Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present
  in glibc 2.2.5 and later.  More information is available in the
  libstdc++-v3 documentation.
  </p>
  <hr />
! <span id="ix86-x-linux"></span><span id="i_003f86-*-linux*"></span><h3 class="heading">i?86-*-linux*</h3>
  <p>As of GCC 3.3, binutils 2.13.1 or later is required for this platform.
  See <a href="http://gcc.gnu.org/PR10877">bug 10877</a> for more information.
  </p>
*************** possible you have a hardware problem.  F
*** 600,607 ****
  found on <a href="http://www.bitwizard.nl/sig11/">www.bitwizard.nl</a>.
  </p>
  <hr />
! <a name="ix86-x-solaris2"></a><a name="i_003f86-*-solaris2*"></a>
! <h3 class="heading">i?86-*-solaris2*</h3>
  <p>Use this for Solaris 11.3 or later on x86 and x86-64 systems.  Starting
  with GCC 4.7, there is also a 64-bit &lsquo;<samp>amd64-*-solaris2*</samp>&rsquo; or
  &lsquo;<samp>x86_64-*-solaris2*</samp>&rsquo; configuration that corresponds to
--- 570,576 ----
  found on <a href="http://www.bitwizard.nl/sig11/">www.bitwizard.nl</a>.
  </p>
  <hr />
! <span id="ix86-x-solaris2"></span><span id="i_003f86-*-solaris2*"></span><h3 class="heading">i?86-*-solaris2*</h3>
  <p>Use this for Solaris 11.3 or later on x86 and x86-64 systems.  Starting
  with GCC 4.7, there is also a 64-bit &lsquo;<samp>amd64-*-solaris2*</samp>&rsquo; or
  &lsquo;<samp>x86_64-*-solaris2*</samp>&rsquo; configuration that corresponds to
*************** to configure with <samp>--without-gnu-ld
*** 625,632 ****
  guarantee use of Solaris <code>ld</code>.
  </p>
  <hr />
! <a name="ia64-x-linux"></a><a name="ia64-*-linux"></a>
! <h3 class="heading">ia64-*-linux</h3>
  <p>IA-64 processor (also known as IPF, or Itanium Processor Family)
  running GNU/Linux.
  </p>
--- 594,600 ----
  guarantee use of Solaris <code>ld</code>.
  </p>
  <hr />
! <span id="ia64-x-linux"></span><span id="ia64-*-linux"></span><h3 class="heading">ia64-*-linux</h3>
  <p>IA-64 processor (also known as IPF, or Itanium Processor Family)
  running GNU/Linux.
  </p>
*************** As of version 3.1 GCC is believed to be
*** 644,651 ****
  more major ABI changes are expected.
  </p>
  <hr />
! <a name="ia64-x-hpux"></a><a name="ia64-*-hpux*"></a>
! <h3 class="heading">ia64-*-hpux*</h3>
  <p>Building GCC on this target requires the GNU Assembler.  The bundled HP
  assembler will not work.  To prevent GCC from using the wrong assembler,
  the option <samp>--with-gnu-as</samp> may be necessary.
--- 612,618 ----
  more major ABI changes are expected.
  </p>
  <hr />
! <span id="ia64-x-hpux"></span><span id="ia64-*-hpux*"></span><h3 class="heading">ia64-*-hpux*</h3>
  <p>Building GCC on this target requires the GNU Assembler.  The bundled HP
  assembler will not work.  To prevent GCC from using the wrong assembler,
  the option <samp>--with-gnu-as</samp> may be necessary.
*************** removed and the system libunwind library
*** 658,665 ****
  </p>
  <hr />
  <!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
! <a name="x-ibm-aix"></a><a name="g_t*-ibm-aix*"></a>
! <h3 class="heading">*-ibm-aix*</h3>
  <p>Support for AIX version 3 and older was discontinued in GCC 3.4.
  Support for AIX version 4.2 and older was discontinued in GCC 4.5.
  </p>
--- 625,631 ----
  </p>
  <hr />
  <!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
! <span id="x-ibm-aix"></span><span id="g_t*-ibm-aix*"></span><h3 class="heading">*-ibm-aix*</h3>
  <p>Support for AIX version 3 and older was discontinued in GCC 3.4.
  Support for AIX version 4.2 and older was discontinued in GCC 4.5.
  </p>
*************** with an earlier release of GCC is recomm
*** 676,683 ****
  requires a larger data segment, which can be enabled through the
  <var>LDR_CNTRL</var> environment variable, e.g.,
  </p>
! <div class="smallexample">
! <pre class="smallexample">% LDR_CNTRL=MAXDATA=0x50000000
  % export LDR_CNTRL
  </pre></div>
  
--- 642,649 ----
  requires a larger data segment, which can be enabled through the
  <var>LDR_CNTRL</var> environment variable, e.g.,
  </p>
! <div class="example">
! <pre class="example">% LDR_CNTRL=MAXDATA=0x50000000
  % export LDR_CNTRL
  </pre></div>
  
*************** with a version of GCC built for an earli
*** 688,695 ****
  <p>To speed up the configuration phases of bootstrapping and installing GCC,
  one may use GNU Bash instead of AIX <code>/bin/sh</code>, e.g.,
  </p>
! <div class="smallexample">
! <pre class="smallexample">% CONFIG_SHELL=/opt/freeware/bin/bash
  % export CONFIG_SHELL
  </pre></div>
  
--- 654,661 ----
  <p>To speed up the configuration phases of bootstrapping and installing GCC,
  one may use GNU Bash instead of AIX <code>/bin/sh</code>, e.g.,
  </p>
! <div class="example">
! <pre class="example">% CONFIG_SHELL=/opt/freeware/bin/bash
  % export CONFIG_SHELL
  </pre></div>
  
*************** APAR IY26685 (AIX 4.3) or APAR IY25528 (
*** 739,745 ****
  fix for another AIX Assembler bug and a co-dependent AIX Archiver fix
  referenced as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1)
  </p>
! <a name="TransferAixShobj"></a><p>&lsquo;<samp>libstdc++</samp>&rsquo; in GCC 3.4 increments the major version number of the
  shared object and GCC installation places the <samp>libstdc++.a</samp>
  shared library in a common location which will overwrite the and GCC
  3.3 version of the shared library.  Applications either need to be
--- 705,711 ----
  fix for another AIX Assembler bug and a co-dependent AIX Archiver fix
  referenced as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1)
  </p>
! <span id="TransferAixShobj"></span><p>&lsquo;<samp>libstdc++</samp>&rsquo; in GCC 3.4 increments the major version number of the
  shared object and GCC installation places the <samp>libstdc++.a</samp>
  shared library in a common location which will overwrite the and GCC
  3.3 version of the shared library.  Applications either need to be
*************** multilib <samp>libstdc++.a</samp> instal
*** 753,772 ****
  </p>
  <p>Extract the shared objects from the currently installed
  <samp>libstdc++.a</samp> archive:
! </p><div class="smallexample">
! <pre class="smallexample">% ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
  <p>Enable the &lsquo;<samp>F_LOADONLY</samp>&rsquo; flag so that the shared object will be
  available for runtime dynamic loading, but not linking:
! </p><div class="smallexample">
! <pre class="smallexample">% strip -e libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
  <p>Archive the runtime-only shared object in the GCC 3.4
  <samp>libstdc++.a</samp> archive:
! </p><div class="smallexample">
! <pre class="smallexample">% ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
  <p>Eventually, the
--- 719,738 ----
  </p>
  <p>Extract the shared objects from the currently installed
  <samp>libstdc++.a</samp> archive:
! </p><div class="example">
! <pre class="example">% ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
  <p>Enable the &lsquo;<samp>F_LOADONLY</samp>&rsquo; flag so that the shared object will be
  available for runtime dynamic loading, but not linking:
! </p><div class="example">
! <pre class="example">% strip -e libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
  <p>Archive the runtime-only shared object in the GCC 3.4
  <samp>libstdc++.a</samp> archive:
! </p><div class="example">
! <pre class="example">% ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
  <p>Eventually, the
*************** environment variable to &lsquo;<samp>C</
*** 823,860 ****
  switch and using the configure option <samp>--with-cpu-<var>cpu_type</var></samp>.
  </p>
  <hr />
! <a name="iq2000-x-elf"></a><a name="iq2000-*-elf"></a>
! <h3 class="heading">iq2000-*-elf</h3>
  <p>Vitesse IQ2000 processors.  These are used in embedded
  applications.  There are no standard Unix configurations.
  </p>
  <hr />
! <a name="lm32-x-elf"></a><a name="lm32-*-elf"></a>
! <h3 class="heading">lm32-*-elf</h3>
  <p>Lattice Mico32 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="lm32-x-uclinux"></a><a name="lm32-*-uclinux"></a>
! <h3 class="heading">lm32-*-uclinux</h3>
  <p>Lattice Mico32 processor.
  This configuration is intended for embedded systems running uClinux.
  </p>
  <hr />
! <a name="m32c-x-elf"></a><a name="m32c-*-elf"></a>
! <h3 class="heading">m32c-*-elf</h3>
  <p>Renesas M32C processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="m32r-x-elf"></a><a name="m32r-*-elf"></a>
! <h3 class="heading">m32r-*-elf</h3>
  <p>Renesas M32R processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="m68k-x-x"></a><a name="m68k-*-*"></a>
! <h3 class="heading">m68k-*-*</h3>
  <p>By default,
  &lsquo;<samp>m68k-*-elf*</samp>&rsquo;, &lsquo;<samp>m68k-*-rtems</samp>&rsquo;,  &lsquo;<samp>m68k-*-uclinux</samp>&rsquo; and
  &lsquo;<samp>m68k-*-linux</samp>&rsquo;
--- 789,820 ----
  switch and using the configure option <samp>--with-cpu-<var>cpu_type</var></samp>.
  </p>
  <hr />
! <span id="iq2000-x-elf"></span><span id="iq2000-*-elf"></span><h3 class="heading">iq2000-*-elf</h3>
  <p>Vitesse IQ2000 processors.  These are used in embedded
  applications.  There are no standard Unix configurations.
  </p>
  <hr />
! <span id="lm32-x-elf"></span><span id="lm32-*-elf"></span><h3 class="heading">lm32-*-elf</h3>
  <p>Lattice Mico32 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="lm32-x-uclinux"></span><span id="lm32-*-uclinux"></span><h3 class="heading">lm32-*-uclinux</h3>
  <p>Lattice Mico32 processor.
  This configuration is intended for embedded systems running uClinux.
  </p>
  <hr />
! <span id="m32c-x-elf"></span><span id="m32c-*-elf"></span><h3 class="heading">m32c-*-elf</h3>
  <p>Renesas M32C processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="m32r-x-elf"></span><span id="m32r-*-elf"></span><h3 class="heading">m32r-*-elf</h3>
  <p>Renesas M32R processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="m68k-x-x"></span><span id="m68k-*-*"></span><h3 class="heading">m68k-*-*</h3>
  <p>By default,
  &lsquo;<samp>m68k-*-elf*</samp>&rsquo;, &lsquo;<samp>m68k-*-rtems</samp>&rsquo;,  &lsquo;<samp>m68k-*-uclinux</samp>&rsquo; and
  &lsquo;<samp>m68k-*-linux</samp>&rsquo;
*************** be a <samp>-mcpu</samp> argument or one
*** 880,901 ****
  <p>GCC requires at least binutils version 2.17 on these targets.
  </p>
  <hr />
! <a name="m68k-x-uclinux"></a><a name="m68k-*-uclinux"></a>
! <h3 class="heading">m68k-*-uclinux</h3>
  <p>GCC 4.3 changed the uClinux configuration so that it uses the
  &lsquo;<samp>m68k-linux-gnu</samp>&rsquo; ABI rather than the &lsquo;<samp>m68k-elf</samp>&rsquo; ABI.
  It also added improved support for C++ and flat shared libraries,
  both of which were ABI changes.
  </p>
  <hr />
! <a name="microblaze-x-elf"></a><a name="microblaze-*-elf"></a>
! <h3 class="heading">microblaze-*-elf</h3>
  <p>Xilinx MicroBlaze processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="mips-x-x"></a><a name="mips-*-*"></a>
! <h3 class="heading">mips-*-*</h3>
  <p>If on a MIPS system you get an error message saying &ldquo;does not have gp
  sections for all it&rsquo;s [sic] sectons [sic]&rdquo;, don&rsquo;t worry about it.  This
  happens whenever you use GAS with the MIPS linker, but there is not
--- 840,858 ----
  <p>GCC requires at least binutils version 2.17 on these targets.
  </p>
  <hr />
! <span id="m68k-x-uclinux"></span><span id="m68k-*-uclinux"></span><h3 class="heading">m68k-*-uclinux</h3>
  <p>GCC 4.3 changed the uClinux configuration so that it uses the
  &lsquo;<samp>m68k-linux-gnu</samp>&rsquo; ABI rather than the &lsquo;<samp>m68k-elf</samp>&rsquo; ABI.
  It also added improved support for C++ and flat shared libraries,
  both of which were ABI changes.
  </p>
  <hr />
! <span id="microblaze-x-elf"></span><span id="microblaze-*-elf"></span><h3 class="heading">microblaze-*-elf</h3>
  <p>Xilinx MicroBlaze processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="mips-x-x"></span><span id="mips-*-*"></span><h3 class="heading">mips-*-*</h3>
  <p>If on a MIPS system you get an error message saying &ldquo;does not have gp
  sections for all it&rsquo;s [sic] sectons [sic]&rdquo;, don&rsquo;t worry about it.  This
  happens whenever you use GAS with the MIPS linker, but there is not
*************** the use of break, use the <samp>--with-d
*** 935,947 ****
  use traps on systems that support them.
  </p>
  <hr />
! <a name="moxie-x-elf"></a><a name="moxie-*-elf"></a>
! <h3 class="heading">moxie-*-elf</h3>
  <p>The moxie processor.
  </p>
  <hr />
! <a name="msp430-x-elf"></a><a name="msp430-*-elf*"></a>
! <h3 class="heading">msp430-*-elf*</h3>
  <p>TI MSP430 processor.
  This configuration is intended for embedded systems.
  </p>
--- 892,902 ----
  use traps on systems that support them.
  </p>
  <hr />
! <span id="moxie-x-elf"></span><span id="moxie-*-elf"></span><h3 class="heading">moxie-*-elf</h3>
  <p>The moxie processor.
  </p>
  <hr />
! <span id="msp430-x-elf"></span><span id="msp430-*-elf*"></span><h3 class="heading">msp430-*-elf*</h3>
  <p>TI MSP430 processor.
  This configuration is intended for embedded systems.
  </p>
*************** in a minimal run-time environment by def
*** 960,977 ****
  </li></ul>
  
  <hr />
! <a name="nds32le-x-elf"></a><a name="nds32le-*-elf"></a>
! <h3 class="heading">nds32le-*-elf</h3>
  <p>Andes NDS32 target in little endian mode.
  </p>
  <hr />
! <a name="nds32be-x-elf"></a><a name="nds32be-*-elf"></a>
! <h3 class="heading">nds32be-*-elf</h3>
  <p>Andes NDS32 target in big endian mode.
  </p>
  <hr />
! <a name="nvptx-x-none"></a><a name="nvptx-*-none"></a>
! <h3 class="heading">nvptx-*-none</h3>
  <p>Nvidia PTX target.
  </p>
  <p>Instead of GNU binutils, you will need to install
--- 915,929 ----
  </li></ul>
  
  <hr />
! <span id="nds32le-x-elf"></span><span id="nds32le-*-elf"></span><h3 class="heading">nds32le-*-elf</h3>
  <p>Andes NDS32 target in little endian mode.
  </p>
  <hr />
! <span id="nds32be-x-elf"></span><span id="nds32be-*-elf"></span><h3 class="heading">nds32be-*-elf</h3>
  <p>Andes NDS32 target in big endian mode.
  </p>
  <hr />
! <span id="nvptx-x-none"></span><span id="nvptx-*-none"></span><h3 class="heading">nvptx-*-none</h3>
  <p>Nvidia PTX target.
  </p>
  <p>Instead of GNU binutils, you will need to install
*************** the GCC sources.
*** 989,1015 ****
  <samp>--enable-newlib-io-long-long</samp> options when configuring.
  </p>
  <hr />
! <a name="or1k-x-elf"></a><a name="or1k-*-elf"></a>
! <h3 class="heading">or1k-*-elf</h3>
  <p>The OpenRISC 1000 32-bit processor with delay slots.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="or1k-x-linux"></a><a name="or1k-*-linux"></a>
! <h3 class="heading">or1k-*-linux</h3>
  <p>The OpenRISC 1000 32-bit processor with delay slots.
  </p>
  <hr />
! <a name="powerpc-x-x"></a><a name="powerpc-*-*"></a>
! <h3 class="heading">powerpc-*-*</h3>
  <p>You can specify a default version for the <samp>-mcpu=<var>cpu_type</var></samp>
  switch by using the configure option <samp>--with-cpu-<var>cpu_type</var></samp>.
  </p>
  <p>You will need GNU binutils 2.20 or newer.
  </p>
  <hr />
! <a name="powerpc-x-darwin"></a><a name="powerpc-*-darwin*"></a>
! <h3 class="heading">powerpc-*-darwin*</h3>
  <p>PowerPC running Darwin (Mac OS X kernel).
  </p>
  <p>Pre-installed versions of Mac OS X may not include any developer tools,
--- 941,963 ----
  <samp>--enable-newlib-io-long-long</samp> options when configuring.
  </p>
  <hr />
! <span id="or1k-x-elf"></span><span id="or1k-*-elf"></span><h3 class="heading">or1k-*-elf</h3>
  <p>The OpenRISC 1000 32-bit processor with delay slots.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="or1k-x-linux"></span><span id="or1k-*-linux"></span><h3 class="heading">or1k-*-linux</h3>
  <p>The OpenRISC 1000 32-bit processor with delay slots.
  </p>
  <hr />
! <span id="powerpc-x-x"></span><span id="powerpc-*-*"></span><h3 class="heading">powerpc-*-*</h3>
  <p>You can specify a default version for the <samp>-mcpu=<var>cpu_type</var></samp>
  switch by using the configure option <samp>--with-cpu-<var>cpu_type</var></samp>.
  </p>
  <p>You will need GNU binutils 2.20 or newer.
  </p>
  <hr />
! <span id="powerpc-x-darwin"></span><span id="powerpc-*-darwin*"></span><h3 class="heading">powerpc-*-darwin*</h3>
  <p>PowerPC running Darwin (Mac OS X kernel).
  </p>
  <p>Pre-installed versions of Mac OS X may not include any developer tools,
*************** cctools-590.36 package referenced from
*** 1023,1125 ****
  on systems older than 10.3.9 (aka darwin7.9.0).
  </p>
  <hr />
! <a name="powerpc-x-elf"></a><a name="powerpc-*-elf"></a>
! <h3 class="heading">powerpc-*-elf</h3>
  <p>PowerPC system in big endian mode, running System V.4.
  </p>
  <hr />
! <a name="powerpc-x-linux-gnu"></a><a name="powerpc*-*-linux-gnu*"></a>
! <h3 class="heading">powerpc*-*-linux-gnu*</h3>
  <p>PowerPC system in big endian mode running Linux.
  </p>
  <hr />
! <a name="powerpc-x-netbsd"></a><a name="powerpc-*-netbsd*"></a>
! <h3 class="heading">powerpc-*-netbsd*</h3>
  <p>PowerPC system in big endian mode running NetBSD.
  </p>
  <hr />
! <a name="powerpc-x-eabisim"></a><a name="powerpc-*-eabisim"></a>
! <h3 class="heading">powerpc-*-eabisim</h3>
  <p>Embedded PowerPC system in big endian mode for use in running under the
  PSIM simulator.
  </p>
  <hr />
! <a name="powerpc-x-eabi"></a><a name="powerpc-*-eabi"></a>
! <h3 class="heading">powerpc-*-eabi</h3>
  <p>Embedded PowerPC system in big endian mode.
  </p>
  <hr />
! <a name="powerpcle-x-elf"></a><a name="powerpcle-*-elf"></a>
! <h3 class="heading">powerpcle-*-elf</h3>
  <p>PowerPC system in little endian mode, running System V.4.
  </p>
  <hr />
! <a name="powerpcle-x-eabisim"></a><a name="powerpcle-*-eabisim"></a>
! <h3 class="heading">powerpcle-*-eabisim</h3>
  <p>Embedded PowerPC system in little endian mode for use in running under
  the PSIM simulator.
  </p>
  <hr />
! <a name="powerpcle-x-eabi"></a><a name="powerpcle-*-eabi"></a>
! <h3 class="heading">powerpcle-*-eabi</h3>
  <p>Embedded PowerPC system in little endian mode.
  </p>
  <hr />
! <a name="rl78-x-elf"></a><a name="rl78-*-elf"></a>
! <h3 class="heading">rl78-*-elf</h3>
  <p>The Renesas RL78 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="riscv32-x-elf"></a><a name="riscv32-*-elf"></a>
! <h3 class="heading">riscv32-*-elf</h3>
  <p>The RISC-V RV32 instruction set.
  This configuration is intended for embedded systems.
  This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <a name="riscv32-x-linux"></a><a name="riscv32-*-linux"></a>
! <h3 class="heading">riscv32-*-linux</h3>
  <p>The RISC-V RV32 instruction set running GNU/Linux.
  This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <a name="riscv64-x-elf"></a><a name="riscv64-*-elf"></a>
! <h3 class="heading">riscv64-*-elf</h3>
  <p>The RISC-V RV64 instruction set.
  This configuration is intended for embedded systems.
  This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <a name="riscv64-x-linux"></a><a name="riscv64-*-linux"></a>
! <h3 class="heading">riscv64-*-linux</h3>
  <p>The RISC-V RV64 instruction set running GNU/Linux.
  This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <a name="rx-x-elf"></a><a name="rx-*-elf"></a>
! <h3 class="heading">rx-*-elf</h3>
  <p>The Renesas RX processor.
  </p>
  <hr />
! <a name="s390-x-linux"></a><a name="s390-*-linux*"></a>
! <h3 class="heading">s390-*-linux*</h3>
  <p>S/390 system running GNU/Linux for S/390.
  </p>
  <hr />
! <a name="s390x-x-linux"></a><a name="s390x-*-linux*"></a>
! <h3 class="heading">s390x-*-linux*</h3>
  <p>zSeries system (64-bit) running GNU/Linux for zSeries.
  </p>
  <hr />
! <a name="s390x-ibm-tpf"></a><a name="s390x-ibm-tpf*"></a>
! <h3 class="heading">s390x-ibm-tpf*</h3>
  <p>zSeries system (64-bit) running TPF.  This platform is
  supported as cross-compilation target only.
  </p>
  <hr />
! <a name="x-x-solaris2"></a><a name="g_t*-*-solaris2*"></a>
! <h3 class="heading">*-*-solaris2*</h3>
  <p>Support for Solaris 10 has been removed in GCC 10.  Support for Solaris
  9 has been removed in GCC 5.  Support for Solaris 8 has been removed in
  GCC 4.8.  Support for Solaris 7 has been removed in GCC 4.6.
--- 971,1055 ----
  on systems older than 10.3.9 (aka darwin7.9.0).
  </p>
  <hr />
! <span id="powerpc-x-elf"></span><span id="powerpc-*-elf"></span><h3 class="heading">powerpc-*-elf</h3>
  <p>PowerPC system in big endian mode, running System V.4.
  </p>
  <hr />
! <span id="powerpc-x-linux-gnu"></span><span id="powerpc*-*-linux-gnu*"></span><h3 class="heading">powerpc*-*-linux-gnu*</h3>
  <p>PowerPC system in big endian mode running Linux.
  </p>
  <hr />
! <span id="powerpc-x-netbsd"></span><span id="powerpc-*-netbsd*"></span><h3 class="heading">powerpc-*-netbsd*</h3>
  <p>PowerPC system in big endian mode running NetBSD.
  </p>
  <hr />
! <span id="powerpc-x-eabisim"></span><span id="powerpc-*-eabisim"></span><h3 class="heading">powerpc-*-eabisim</h3>
  <p>Embedded PowerPC system in big endian mode for use in running under the
  PSIM simulator.
  </p>
  <hr />
! <span id="powerpc-x-eabi"></span><span id="powerpc-*-eabi"></span><h3 class="heading">powerpc-*-eabi</h3>
  <p>Embedded PowerPC system in big endian mode.
  </p>
  <hr />
! <span id="powerpcle-x-elf"></span><span id="powerpcle-*-elf"></span><h3 class="heading">powerpcle-*-elf</h3>
  <p>PowerPC system in little endian mode, running System V.4.
  </p>
  <hr />
! <span id="powerpcle-x-eabisim"></span><span id="powerpcle-*-eabisim"></span><h3 class="heading">powerpcle-*-eabisim</h3>
  <p>Embedded PowerPC system in little endian mode for use in running under
  the PSIM simulator.
  </p>
  <hr />
! <span id="powerpcle-x-eabi"></span><span id="powerpcle-*-eabi"></span><h3 class="heading">powerpcle-*-eabi</h3>
  <p>Embedded PowerPC system in little endian mode.
  </p>
  <hr />
! <span id="rl78-x-elf"></span><span id="rl78-*-elf"></span><h3 class="heading">rl78-*-elf</h3>
  <p>The Renesas RL78 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="riscv32-x-elf"></span><span id="riscv32-*-elf"></span><h3 class="heading">riscv32-*-elf</h3>
  <p>The RISC-V RV32 instruction set.
  This configuration is intended for embedded systems.
  This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <span id="riscv32-x-linux"></span><span id="riscv32-*-linux"></span><h3 class="heading">riscv32-*-linux</h3>
  <p>The RISC-V RV32 instruction set running GNU/Linux.
  This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <span id="riscv64-x-elf"></span><span id="riscv64-*-elf"></span><h3 class="heading">riscv64-*-elf</h3>
  <p>The RISC-V RV64 instruction set.
  This configuration is intended for embedded systems.
  This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <span id="riscv64-x-linux"></span><span id="riscv64-*-linux"></span><h3 class="heading">riscv64-*-linux</h3>
  <p>The RISC-V RV64 instruction set running GNU/Linux.
  This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <span id="rx-x-elf"></span><span id="rx-*-elf"></span><h3 class="heading">rx-*-elf</h3>
  <p>The Renesas RX processor.
  </p>
  <hr />
! <span id="s390-x-linux"></span><span id="s390-*-linux*"></span><h3 class="heading">s390-*-linux*</h3>
  <p>S/390 system running GNU/Linux for S/390.
  </p>
  <hr />
! <span id="s390x-x-linux"></span><span id="s390x-*-linux*"></span><h3 class="heading">s390x-*-linux*</h3>
  <p>zSeries system (64-bit) running GNU/Linux for zSeries.
  </p>
  <hr />
! <span id="s390x-ibm-tpf"></span><span id="s390x-ibm-tpf*"></span><h3 class="heading">s390x-ibm-tpf*</h3>
  <p>zSeries system (64-bit) running TPF.  This platform is
  supported as cross-compilation target only.
  </p>
  <hr />
! <span id="x-x-solaris2"></span><span id="g_t*-*-solaris2*"></span><h3 class="heading">*-*-solaris2*</h3>
  <p>Support for Solaris 10 has been removed in GCC 10.  Support for Solaris
  9 has been removed in GCC 5.  Support for Solaris 8 has been removed in
  GCC 4.8.  Support for Solaris 7 has been removed in GCC 4.6.
*************** you can install a pre-built GCC to boots
*** 1134,1141 ****
  &lsquo;<samp>libstdc++-v3</samp>&rsquo;.  We therefore recommend using the
  following initial sequence of commands
  </p>
! <div class="smallexample">
! <pre class="smallexample">% CONFIG_SHELL=/bin/ksh
  % export CONFIG_SHELL
  </pre></div>
  
--- 1064,1071 ----
  &lsquo;<samp>libstdc++-v3</samp>&rsquo;.  We therefore recommend using the
  following initial sequence of commands
  </p>
! <div class="example">
! <pre class="example">% CONFIG_SHELL=/bin/ksh
  % export CONFIG_SHELL
  </pre></div>
  
*************** need to provide a more recent one.
*** 1192,1199 ****
  </li></ul>
  
  <hr />
! <a name="sparc-x-x"></a><a name="sparc*-*-*"></a>
! <h3 class="heading">sparc*-*-*</h3>
  <p>This section contains general configuration information for all
  SPARC-based platforms.  In addition to reading this section, please
  read all other sections that match your target.
--- 1122,1128 ----
  </li></ul>
  
  <hr />
! <span id="sparc-x-x"></span><span id="sparc*-*-*"></span><h3 class="heading">sparc*-*-*</h3>
  <p>This section contains general configuration information for all
  SPARC-based platforms.  In addition to reading this section, please
  read all other sections that match your target.
*************** of the exact versions of these libraries
*** 1205,1212 ****
  in <a href="prerequisites.html">the prerequisites</a>.
  </p>
  <hr />
! <a name="sparc-sun-solaris2"></a><a name="sparc-sun-solaris2*"></a>
! <h3 class="heading">sparc-sun-solaris2*</h3>
  <p>When GCC is configured to use GNU binutils 2.14 or later, the binaries
  produced are smaller than the ones produced using Solaris native tools;
  this difference is quite significant for binaries containing debugging
--- 1134,1140 ----
  in <a href="prerequisites.html">the prerequisites</a>.
  </p>
  <hr />
! <span id="sparc-sun-solaris2"></span><span id="sparc-sun-solaris2*"></span><h3 class="heading">sparc-sun-solaris2*</h3>
  <p>When GCC is configured to use GNU binutils 2.14 or later, the binaries
  produced are smaller than the ones produced using Solaris native tools;
  this difference is quite significant for binaries containing debugging
*************** target triplet must be specified as the
*** 1226,1242 ****
  configure line.  This target triplet can be obtained by invoking <code>./config.guess</code> in the toplevel source directory of GCC (and
  not that of GMP or MPFR or MPC).  For example on a Solaris 11 system:
  </p>
! <div class="smallexample">
! <pre class="smallexample">% ./configure --build=sparc-sun-solaris2.11 --prefix=xxx
  </pre></div>
  
  <hr />
! <a name="sparc-x-linux"></a><a name="sparc-*-linux*"></a>
! <h3 class="heading">sparc-*-linux*</h3>
  
  <hr />
! <a name="sparc64-x-solaris2"></a><a name="sparc64-*-solaris2*"></a>
! <h3 class="heading">sparc64-*-solaris2*</h3>
  <p>When configuring a 64-bit-default GCC on Solaris/SPARC, you must use a
  build compiler that generates 64-bit code, either by default or by
  specifying &lsquo;<samp>CC='gcc -m64' CXX='gcc-m64'</samp>&rsquo; to <code>configure</code>.
--- 1154,1168 ----
  configure line.  This target triplet can be obtained by invoking <code>./config.guess</code> in the toplevel source directory of GCC (and
  not that of GMP or MPFR or MPC).  For example on a Solaris 11 system:
  </p>
! <div class="example">
! <pre class="example">% ./configure --build=sparc-sun-solaris2.11 --prefix=xxx
  </pre></div>
  
  <hr />
! <span id="sparc-x-linux"></span><span id="sparc-*-linux*"></span><h3 class="heading">sparc-*-linux*</h3>
  
  <hr />
! <span id="sparc64-x-solaris2"></span><span id="sparc64-*-solaris2*"></span><h3 class="heading">sparc64-*-solaris2*</h3>
  <p>When configuring a 64-bit-default GCC on Solaris/SPARC, you must use a
  build compiler that generates 64-bit code, either by default or by
  specifying &lsquo;<samp>CC='gcc -m64' CXX='gcc-m64'</samp>&rsquo; to <code>configure</code>.
*************** library or the MPC library, the canonica
*** 1249,1295 ****
  as the <code>build</code> parameter on the configure line.  For example
  on a Solaris 11 system:
  </p>
! <div class="smallexample">
! <pre class="smallexample">% ./configure --build=sparc64-sun-solaris2.11 --prefix=xxx
  </pre></div>
  
  <hr />
! <a name="sparcv9-x-solaris2"></a><a name="sparcv9-*-solaris2*"></a>
! <h3 class="heading">sparcv9-*-solaris2*</h3>
  <p>This is a synonym for &lsquo;<samp>sparc64-*-solaris2*</samp>&rsquo;.
  </p>
  <hr />
! <a name="c6x-x-x"></a><a name="c6x-*-*"></a>
! <h3 class="heading">c6x-*-*</h3>
  <p>The C6X family of processors. This port requires binutils-2.22 or newer.
  </p>
  <hr />
! <a name="tilegx-*-linux"></a><a name="tilegx-*-linux*"></a>
! <h3 class="heading">tilegx-*-linux*</h3>
  <p>The TILE-Gx processor in little endian mode, running GNU/Linux.  This
  port requires binutils-2.22 or newer.
  </p>
  <hr />
! <a name="tilegxbe-*-linux"></a><a name="tilegxbe-*-linux*"></a>
! <h3 class="heading">tilegxbe-*-linux*</h3>
  <p>The TILE-Gx processor in big endian mode, running GNU/Linux.  This
  port requires binutils-2.23 or newer.
  </p>
  <hr />
! <a name="tilepro-*-linux"></a><a name="tilepro-*-linux*"></a>
! <h3 class="heading">tilepro-*-linux*</h3>
  <p>The TILEPro processor running GNU/Linux.  This port requires
  binutils-2.22 or newer.
  </p>
  <hr />
! <a name="visium-x-elf"></a><a name="visium-*-elf"></a>
! <h3 class="heading">visium-*-elf</h3>
  <p>CDS VISIUMcore processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="x-x-vxworks"></a><a name="g_t*-*-vxworks*"></a>
! <h3 class="heading">*-*-vxworks*</h3>
  <p>Support for VxWorks is in flux.  At present GCC supports <em>only</em> the
  very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC.
  We welcome patches for other architectures supported by VxWorks 5.5.
--- 1175,1214 ----
  as the <code>build</code> parameter on the configure line.  For example
  on a Solaris 11 system:
  </p>
! <div class="example">
! <pre class="example">% ./configure --build=sparc64-sun-solaris2.11 --prefix=xxx
  </pre></div>
  
  <hr />
! <span id="sparcv9-x-solaris2"></span><span id="sparcv9-*-solaris2*"></span><h3 class="heading">sparcv9-*-solaris2*</h3>
  <p>This is a synonym for &lsquo;<samp>sparc64-*-solaris2*</samp>&rsquo;.
  </p>
  <hr />
! <span id="c6x-x-x"></span><span id="c6x-*-*"></span><h3 class="heading">c6x-*-*</h3>
  <p>The C6X family of processors. This port requires binutils-2.22 or newer.
  </p>
  <hr />
! <span id="tilegx-*-linux"></span><span id="tilegx-*-linux*"></span><h3 class="heading">tilegx-*-linux*</h3>
  <p>The TILE-Gx processor in little endian mode, running GNU/Linux.  This
  port requires binutils-2.22 or newer.
  </p>
  <hr />
! <span id="tilegxbe-*-linux"></span><span id="tilegxbe-*-linux*"></span><h3 class="heading">tilegxbe-*-linux*</h3>
  <p>The TILE-Gx processor in big endian mode, running GNU/Linux.  This
  port requires binutils-2.23 or newer.
  </p>
  <hr />
! <span id="tilepro-*-linux"></span><span id="tilepro-*-linux*"></span><h3 class="heading">tilepro-*-linux*</h3>
  <p>The TILEPro processor running GNU/Linux.  This port requires
  binutils-2.22 or newer.
  </p>
  <hr />
! <span id="visium-x-elf"></span><span id="visium-*-elf"></span><h3 class="heading">visium-*-elf</h3>
  <p>CDS VISIUMcore processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="x-x-vxworks"></span><span id="g_t*-*-vxworks*"></span><h3 class="heading">*-*-vxworks*</h3>
  <p>Support for VxWorks is in flux.  At present GCC supports <em>only</em> the
  very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC.
  We welcome patches for other architectures supported by VxWorks 5.5.
*************** that file to add the module to your kern
*** 1322,1337 ****
  VxWorks will incorporate this module.)
  </p>
  <hr />
! <a name="x86-64-x-x"></a><a name="x86_005f64-*-*_002c-amd64-*-*"></a>
! <h3 class="heading">x86_64-*-*, amd64-*-*</h3>
  <p>GCC supports the x86-64 architecture implemented by the AMD64 processor
  (amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD.
  On GNU/Linux the default is a bi-arch compiler which is able to generate
  both 64-bit x86-64 and 32-bit x86 code (via the <samp>-m32</samp> switch).
  </p>
  <hr />
! <a name="x86-64-x-solaris2"></a><a name="x86_005f64-*-solaris2*"></a>
! <h3 class="heading">x86_64-*-solaris2*</h3>
  <p>GCC also supports the x86-64 architecture implemented by the AMD64
  processor (&lsquo;<samp>amd64-*-*</samp>&rsquo; is an alias for &lsquo;<samp>x86_64-*-*</samp>&rsquo;) on
  Solaris 10 or later.  Unlike other systems, without special options a
--- 1241,1254 ----
  VxWorks will incorporate this module.)
  </p>
  <hr />
! <span id="x86-64-x-x"></span><span id="x86_005f64-*-*_002c-amd64-*-*"></span><h3 class="heading">x86_64-*-*, amd64-*-*</h3>
  <p>GCC supports the x86-64 architecture implemented by the AMD64 processor
  (amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD.
  On GNU/Linux the default is a bi-arch compiler which is able to generate
  both 64-bit x86-64 and 32-bit x86 code (via the <samp>-m32</samp> switch).
  </p>
  <hr />
! <span id="x86-64-x-solaris2"></span><span id="x86_005f64-*-solaris2*"></span><h3 class="heading">x86_64-*-solaris2*</h3>
  <p>GCC also supports the x86-64 architecture implemented by the AMD64
  processor (&lsquo;<samp>amd64-*-*</samp>&rsquo; is an alias for &lsquo;<samp>x86_64-*-*</samp>&rsquo;) on
  Solaris 10 or later.  Unlike other systems, without special options a
*************** as 64-bit code, configure with <samp>--t
*** 1344,1351 ****
  and &lsquo;<samp>CC=gcc -m64</samp>&rsquo;.
  </p>
  <hr />
! <a name="xtensa-x-elf"></a><a name="xtensa*-*-elf"></a>
! <h3 class="heading">xtensa*-*-elf</h3>
  <p>This target is intended for embedded Xtensa systems using the
  &lsquo;<samp>newlib</samp>&rsquo; C library.  It uses ELF but does not support shared
  objects.  Designed-defined instructions specified via the
--- 1261,1267 ----
  and &lsquo;<samp>CC=gcc -m64</samp>&rsquo;.
  </p>
  <hr />
! <span id="xtensa-x-elf"></span><span id="xtensa*-*-elf"></span><h3 class="heading">xtensa*-*-elf</h3>
  <p>This target is intended for embedded Xtensa systems using the
  &lsquo;<samp>newlib</samp>&rsquo; C library.  It uses ELF but does not support shared
  objects.  Designed-defined instructions specified via the
*************** downloaded files include a customized co
*** 1360,1367 ****
  which you can use to replace the default header file.
  </p>
  <hr />
! <a name="xtensa-x-linux"></a><a name="xtensa*-*-linux*"></a>
! <h3 class="heading">xtensa*-*-linux*</h3>
  <p>This target is for Xtensa systems running GNU/Linux.  It supports ELF
  shared objects and the GNU C library (glibc).  It also generates
  position-independent code (PIC) regardless of whether the
--- 1276,1282 ----
  which you can use to replace the default header file.
  </p>
  <hr />
! <span id="xtensa-x-linux"></span><span id="xtensa*-*-linux*"></span><h3 class="heading">xtensa*-*-linux*</h3>
  <p>This target is for Xtensa systems running GNU/Linux.  It supports ELF
  shared objects and the GNU C library (glibc).  It also generates
  position-independent code (PIC) regardless of whether the
*************** respects, this target is the same as the
*** 1370,1388 ****
  <a href="#xtensa*-*-elf">&lsquo;<samp>xtensa*-*-elf</samp>&rsquo;</a> target.
  </p>
  <hr />
! <a name="windows"></a><a name="Microsoft-Windows"></a>
! <h3 class="heading">Microsoft Windows</h3>
  
! <a name="Intel-16-bit-versions"></a>
! <h4 class="subheading">Intel 16-bit versions</h4>
  <p>The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
  supported.
  </p>
  <p>However, the 32-bit port has limited support for Microsoft
  Windows 3.11 in the Win32s environment, as a target only.  See below.
  </p>
! <a name="Intel-32-bit-versions"></a>
! <h4 class="subheading">Intel 32-bit versions</h4>
  <p>The 32-bit versions of Windows, including Windows 95, Windows NT, Windows
  XP, and Windows Vista, are supported by several different target
  platforms.  These targets differ in which Windows subsystem they target
--- 1285,1300 ----
  <a href="#xtensa*-*-elf">&lsquo;<samp>xtensa*-*-elf</samp>&rsquo;</a> target.
  </p>
  <hr />
! <span id="windows"></span><span id="Microsoft-Windows"></span><h3 class="heading">Microsoft Windows</h3>
  
! <span id="Intel-16-bit-versions"></span><h4 class="subheading">Intel 16-bit versions</h4>
  <p>The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
  supported.
  </p>
  <p>However, the 32-bit port has limited support for Microsoft
  Windows 3.11 in the Win32s environment, as a target only.  See below.
  </p>
! <span id="Intel-32-bit-versions"></span><h4 class="subheading">Intel 32-bit versions</h4>
  <p>The 32-bit versions of Windows, including Windows 95, Windows NT, Windows
  XP, and Windows Vista, are supported by several different target
  platforms.  These targets differ in which Windows subsystem they target
*************** the Win32 subsystem that provides a subs
*** 1397,1417 ****
  <a href="https://www.mkssoftware.com">https://www.mkssoftware.com</a> for more information.
  </li></ul>
  
! <a name="Intel-64-bit-versions"></a>
! <h4 class="subheading">Intel 64-bit versions</h4>
  <p>GCC contains support for x86-64 using the mingw-w64
  runtime library, available from <a href="http://mingw-w64.org/doku.php">http://mingw-w64.org/doku.php</a>.
  This library should be used with the target triple x86_64-pc-mingw32.
  </p>
  <p>Presently Windows for Itanium is not supported.
  </p>
! <a name="Windows-CE"></a>
! <h4 class="subheading">Windows CE</h4>
  <p>Windows CE is supported as a target only on Hitachi
  SuperH (sh-wince-pe), and MIPS (mips-wince-pe).
  </p>
! <a name="Other-Windows-Platforms"></a>
! <h4 class="subheading">Other Windows Platforms</h4>
  <p>GCC no longer supports Windows NT on the Alpha or PowerPC.
  </p>
  <p>GCC no longer supports the Windows POSIX subsystem.  However, it does
--- 1309,1326 ----
  <a href="https://www.mkssoftware.com">https://www.mkssoftware.com</a> for more information.
  </li></ul>
  
! <span id="Intel-64-bit-versions"></span><h4 class="subheading">Intel 64-bit versions</h4>
  <p>GCC contains support for x86-64 using the mingw-w64
  runtime library, available from <a href="http://mingw-w64.org/doku.php">http://mingw-w64.org/doku.php</a>.
  This library should be used with the target triple x86_64-pc-mingw32.
  </p>
  <p>Presently Windows for Itanium is not supported.
  </p>
! <span id="Windows-CE"></span><h4 class="subheading">Windows CE</h4>
  <p>Windows CE is supported as a target only on Hitachi
  SuperH (sh-wince-pe), and MIPS (mips-wince-pe).
  </p>
! <span id="Other-Windows-Platforms"></span><h4 class="subheading">Other Windows Platforms</h4>
  <p>GCC no longer supports Windows NT on the Alpha or PowerPC.
  </p>
  <p>GCC no longer supports the Windows POSIX subsystem.  However, it does
*************** be inactive.  See <a href="http://pw32.s
*** 1425,1432 ****
  <p>UWIN support has been removed due to a lack of maintenance.
  </p>
  <hr />
! <a name="x-x-cygwin"></a><a name="g_t*-*-cygwin"></a>
! <h3 class="heading">*-*-cygwin</h3>
  <p>Ports of GCC are included with the
  <a href="http://www.cygwin.com/">Cygwin environment</a>.
  </p>
--- 1334,1340 ----
  <p>UWIN support has been removed due to a lack of maintenance.
  </p>
  <hr />
! <span id="x-x-cygwin"></span><span id="g_t*-*-cygwin"></span><h3 class="heading">*-*-cygwin</h3>
  <p>Ports of GCC are included with the
  <a href="http://www.cygwin.com/">Cygwin environment</a>.
  </p>
*************** the latest official GNU binutils release
*** 1440,1454 ****
  or version 2.20 or above if building your own.
  </p>
  <hr />
! <a name="x-x-mingw32"></a><a name="g_t*-*-mingw32"></a>
! <h3 class="heading">*-*-mingw32</h3>
  <p>GCC will build with and support only MinGW runtime 3.12 and later.
  Earlier versions of headers are incompatible with the new default semantics
  of <code>extern inline</code> in <code>-std=c99</code> and <code>-std=gnu99</code> modes.
  </p>
  <hr />
! <a name="older"></a><a name="Older-systems"></a>
! <h3 class="heading">Older systems</h3>
  <p>GCC contains support files for many older (1980s and early
  1990s) Unix variants.  For the most part, support for these systems
  has not been deliberately removed, but it has not been maintained for
--- 1348,1360 ----
  or version 2.20 or above if building your own.
  </p>
  <hr />
! <span id="x-x-mingw32"></span><span id="g_t*-*-mingw32"></span><h3 class="heading">*-*-mingw32</h3>
  <p>GCC will build with and support only MinGW runtime 3.12 and later.
  Earlier versions of headers are incompatible with the new default semantics
  of <code>extern inline</code> in <code>-std=c99</code> and <code>-std=gnu99</code> modes.
  </p>
  <hr />
! <span id="older"></span><span id="Older-systems"></span><h3 class="heading">Older systems</h3>
  <p>GCC contains support files for many older (1980s and early
  1990s) Unix variants.  For the most part, support for these systems
  has not been deliberately removed, but it has not been maintained for
*************** about GCC on such systems (which may no
*** 1491,1498 ****
  current GCC) is to be found in the GCC texinfo manual.
  </p>
  <hr />
! <a name="elf"></a><a name="all-ELF-targets-_0028SVR4_002c-Solaris-2_002c-etc_002e_0029"></a>
! <h3 class="heading">all ELF targets (SVR4, Solaris 2, etc.)</h3>
  <p>C++ support is significantly better on ELF targets if you use the
  <a href="./configure.html#with-gnu-ld">GNU linker</a>; duplicate copies of
  inlines, vtables and template instantiations will be discarded
--- 1397,1403 ----
  current GCC) is to be found in the GCC texinfo manual.
  </p>
  <hr />
! <span id="elf"></span><span id="all-ELF-targets-_0028SVR4_002c-Solaris-2_002c-etc_002e_0029"></span><h3 class="heading">all ELF targets (SVR4, Solaris 2, etc.)</h3>
  <p>C++ support is significantly better on ELF targets if you use the
  <a href="./configure.html#with-gnu-ld">GNU linker</a>; duplicate copies of
  inlines, vtables and template instantiations will be discarded
diff -Nrcpad gcc-10.3.0/INSTALL/test.html gcc-11.1.0/INSTALL/test.html
*** gcc-10.3.0/INSTALL/test.html	Thu Apr  8 11:57:05 2021
--- gcc-11.1.0/INSTALL/test.html	Tue Apr 27 10:00:36 2021
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,6 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,25 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Testing</title>
--- 19,25 ----
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
! <!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Testing</title>
*************** You have freedom to copy and modify this
*** 33,55 ****
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
--- 33,46 ----
*************** ul.no-bullet {list-style: none}
*** 83,91 ****
  
  
  
! <a name="index-Testing"></a>
! <a name="index-Installing-GCC_003a-Testing"></a>
! <a name="index-Testsuite"></a>
  
  <p>Before you install GCC, we encourage you to run the testsuites and to
  compare your results with results from a similar configuration that have
--- 74,82 ----
  
  
  
! <span id="index-Testing"></span>
! <span id="index-Installing-GCC_003a-Testing"></span>
! <span id="index-Testsuite"></span>
  
  <p>Before you install GCC, we encourage you to run the testsuites and to
  compare your results with results from a similar configuration that have
*************** separately.
*** 108,122 ****
  the DejaGnu site has links to these. For running the BRIG frontend
  tests, a tool to assemble the binary BRIGs from HSAIL text,
  <a href="https://github.com/HSAFoundation/HSAIL-Tools/">HSAILasm</a> must
! be installed.
  </p>
  <p>If the directories where <code>runtest</code> and <code>expect</code> were
  installed are not in the <code>PATH</code>, you may need to set the following
  environment variables appropriately, as in the following example (which
  assumes that DejaGnu has been installed under <samp>/usr/local</samp>):
  </p>
! <div class="smallexample">
! <pre class="smallexample">TCL_LIBRARY = /usr/local/share/tcl8.0
  DEJAGNULIBS = /usr/local/share/dejagnu
  </pre></div>
  
--- 99,113 ----
  the DejaGnu site has links to these. For running the BRIG frontend
  tests, a tool to assemble the binary BRIGs from HSAIL text,
  <a href="https://github.com/HSAFoundation/HSAIL-Tools/">HSAILasm</a> must
! be installed.  Some optional tests also require Python3 and pytest module.
  </p>
  <p>If the directories where <code>runtest</code> and <code>expect</code> were
  installed are not in the <code>PATH</code>, you may need to set the following
  environment variables appropriately, as in the following example (which
  assumes that DejaGnu has been installed under <samp>/usr/local</samp>):
  </p>
! <div class="example">
! <pre class="example">TCL_LIBRARY = /usr/local/share/tcl8.0
  DEJAGNULIBS = /usr/local/share/dejagnu
  </pre></div>
  
*************** portability in the DejaGnu code.)
*** 126,133 ****
  </p>
  
  <p>Finally, you can run the testsuite (which may take a long time):
! </p><div class="smallexample">
! <pre class="smallexample">cd <var>objdir</var>; make -k check
  </pre></div>
  
  <p>This will test various components of GCC, such as compiler
--- 117,124 ----
  </p>
  
  <p>Finally, you can run the testsuite (which may take a long time):
! </p><div class="example">
! <pre class="example">cd <var>objdir</var>; make -k check
  </pre></div>
  
  <p>This will test various components of GCC, such as compiler
*************** might emit some harmless messages resemb
*** 139,146 ****
  <p>If you are testing a cross-compiler, you may want to run the testsuite
  on a simulator as described at <a href="http://gcc.gnu.org/simtest-howto.html">http://gcc.gnu.org/simtest-howto.html</a>.
  </p>
! <a name="How-can-you-run-the-testsuite-on-selected-tests_003f"></a>
! <h3 class="section">How can you run the testsuite on selected tests?</h3>
  
  <p>In order to run sets of tests selectively, there are targets
  &lsquo;<samp>make check-gcc</samp>&rsquo; and language specific &lsquo;<samp>make check-c</samp>&rsquo;,
--- 130,136 ----
  <p>If you are testing a cross-compiler, you may want to run the testsuite
  on a simulator as described at <a href="http://gcc.gnu.org/simtest-howto.html">http://gcc.gnu.org/simtest-howto.html</a>.
  </p>
! <span id="How-can-you-run-the-testsuite-on-selected-tests_003f"></span><h3 class="section">How can you run the testsuite on selected tests?</h3>
  
  <p>In order to run sets of tests selectively, there are targets
  &lsquo;<samp>make check-gcc</samp>&rsquo; and language specific &lsquo;<samp>make check-c</samp>&rsquo;,
*************** just run &lsquo;<samp>make check</samp>&
*** 154,168 ****
  <p>A more selective way to just run all <code>gcc</code> execute tests in the
  testsuite is to use
  </p>
! <div class="smallexample">
! <pre class="smallexample">make check-gcc RUNTESTFLAGS=&quot;execute.exp <var>other-options</var>&quot;
  </pre></div>
  
  <p>Likewise, in order to run only the <code>g++</code> &ldquo;old-deja&rdquo; tests in
  the testsuite with filenames matching &lsquo;<samp>9805*</samp>&rsquo;, you would use
  </p>
! <div class="smallexample">
! <pre class="smallexample">make check-g++ RUNTESTFLAGS=&quot;old-deja.exp=9805* <var>other-options</var>&quot;
  </pre></div>
  
  <p>The file-matching expression following <var>filename</var><code>.exp=</code> is treated
--- 144,158 ----
  <p>A more selective way to just run all <code>gcc</code> execute tests in the
  testsuite is to use
  </p>
! <div class="example">
! <pre class="example">make check-gcc RUNTESTFLAGS=&quot;execute.exp <var>other-options</var>&quot;
  </pre></div>
  
  <p>Likewise, in order to run only the <code>g++</code> &ldquo;old-deja&rdquo; tests in
  the testsuite with filenames matching &lsquo;<samp>9805*</samp>&rsquo;, you would use
  </p>
! <div class="example">
! <pre class="example">make check-g++ RUNTESTFLAGS=&quot;old-deja.exp=9805* <var>other-options</var>&quot;
  </pre></div>
  
  <p>The file-matching expression following <var>filename</var><code>.exp=</code> is treated
*************** as a series of whitespace-delimited glob
*** 170,177 ****
  may be passed, although any whitespace must either be escaped or surrounded by
  single quotes if multiple expressions are desired. For example,
  </p>
! <div class="smallexample">
! <pre class="smallexample">make check-g++ RUNTESTFLAGS=&quot;old-deja.exp=9805*\ virtual2.c <var>other-options</var>&quot;
  make check-g++ RUNTESTFLAGS=&quot;'old-deja.exp=9805* virtual2.c' <var>other-options</var>&quot;
  </pre></div>
  
--- 160,167 ----
  may be passed, although any whitespace must either be escaped or surrounded by
  single quotes if multiple expressions are desired. For example,
  </p>
! <div class="example">
! <pre class="example">make check-g++ RUNTESTFLAGS=&quot;old-deja.exp=9805*\ virtual2.c <var>other-options</var>&quot;
  make check-g++ RUNTESTFLAGS=&quot;'old-deja.exp=9805* virtual2.c' <var>other-options</var>&quot;
  </pre></div>
  
*************** To get a list of the possible <samp>*.ex
*** 182,197 ****
  output of &lsquo;<samp>make check</samp>&rsquo; into a file and look at the
  &lsquo;<samp>Running &hellip;  .exp</samp>&rsquo; lines.
  </p>
! <a name="Passing-options-and-running-multiple-testsuites"></a>
! <h3 class="section">Passing options and running multiple testsuites</h3>
  
  <p>You can pass multiple options to the testsuite using the
  &lsquo;<samp>--target_board</samp>&rsquo; option of DejaGNU, either passed as part of
  &lsquo;<samp>RUNTESTFLAGS</samp>&rsquo;, or directly to <code>runtest</code> if you prefer to
  work outside the makefiles.  For example,
  </p>
! <div class="smallexample">
! <pre class="smallexample">make check-g++ RUNTESTFLAGS=&quot;--target_board=unix/-O3/-fmerge-constants&quot;
  </pre></div>
  
  <p>will run the standard <code>g++</code> testsuites (&ldquo;unix&rdquo; is the target name
--- 172,186 ----
  output of &lsquo;<samp>make check</samp>&rsquo; into a file and look at the
  &lsquo;<samp>Running &hellip;  .exp</samp>&rsquo; lines.
  </p>
! <span id="Passing-options-and-running-multiple-testsuites"></span><h3 class="section">Passing options and running multiple testsuites</h3>
  
  <p>You can pass multiple options to the testsuite using the
  &lsquo;<samp>--target_board</samp>&rsquo; option of DejaGNU, either passed as part of
  &lsquo;<samp>RUNTESTFLAGS</samp>&rsquo;, or directly to <code>runtest</code> if you prefer to
  work outside the makefiles.  For example,
  </p>
! <div class="example">
! <pre class="example">make check-g++ RUNTESTFLAGS=&quot;--target_board=unix/-O3/-fmerge-constants&quot;
  </pre></div>
  
  <p>will run the standard <code>g++</code> testsuites (&ldquo;unix&rdquo; is the target name
*************** slashes separate options.
*** 202,217 ****
  <p>You can run the testsuites multiple times using combinations of options
  with a syntax similar to the brace expansion of popular shells:
  </p>
! <div class="smallexample">
! <pre class="smallexample">&hellip;&quot;--target_board=arm-sim\{-mhard-float,-msoft-float\}\{-O1,-O2,-O3,\}&quot;
  </pre></div>
  
  <p>(Note the empty option caused by the trailing comma in the final group.)
  The following will run each testsuite eight times using the &lsquo;<samp>arm-sim</samp>&rsquo;
  target, as if you had specified all possible combinations yourself:
  </p>
! <div class="smallexample">
! <pre class="smallexample">--target_board='arm-sim/-mhard-float/-O1 \
                  arm-sim/-mhard-float/-O2 \
                  arm-sim/-mhard-float/-O3 \
                  arm-sim/-mhard-float \
--- 191,206 ----
  <p>You can run the testsuites multiple times using combinations of options
  with a syntax similar to the brace expansion of popular shells:
  </p>
! <div class="example">
! <pre class="example">&hellip;&quot;--target_board=arm-sim\{-mhard-float,-msoft-float\}\{-O1,-O2,-O3,\}&quot;
  </pre></div>
  
  <p>(Note the empty option caused by the trailing comma in the final group.)
  The following will run each testsuite eight times using the &lsquo;<samp>arm-sim</samp>&rsquo;
  target, as if you had specified all possible combinations yourself:
  </p>
! <div class="example">
! <pre class="example">--target_board='arm-sim/-mhard-float/-O1 \
                  arm-sim/-mhard-float/-O2 \
                  arm-sim/-mhard-float/-O3 \
                  arm-sim/-mhard-float \
*************** target, as if you had specified all poss
*** 224,231 ****
  <p>They can be combined as many times as you wish, in arbitrary ways.  This
  list:
  </p>
! <div class="smallexample">
! <pre class="smallexample">&hellip;&quot;--target_board=unix/-Wextra\{-O3,-fno-strength\}\{-fomit-frame,\}&quot;
  </pre></div>
  
  <p>will generate four combinations, all involving &lsquo;<samp>-Wextra</samp>&rsquo;.
--- 213,220 ----
  <p>They can be combined as many times as you wish, in arbitrary ways.  This
  list:
  </p>
! <div class="example">
! <pre class="example">&hellip;&quot;--target_board=unix/-Wextra\{-O3,-fno-strength\}\{-fomit-frame,\}&quot;
  </pre></div>
  
  <p>will generate four combinations, all involving &lsquo;<samp>-Wextra</samp>&rsquo;.
*************** parallel by having the shell perform the
*** 237,250 ****
  do the parallel runs.  Instead of using &lsquo;<samp>--target_board</samp>&rsquo;, use a
  special makefile target:
  </p>
! <div class="smallexample">
! <pre class="smallexample">make -j<var>N</var> check-<var>testsuite</var>//<var>test-target</var>/<var>option1</var>/<var>option2</var>/&hellip;
  </pre></div>
  
  <p>For example,
  </p>
! <div class="smallexample">
! <pre class="smallexample">make -j3 check-gcc//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu}
  </pre></div>
  
  <p>will run three concurrent &ldquo;make-gcc&rdquo; testsuites, eventually testing all
--- 226,239 ----
  do the parallel runs.  Instead of using &lsquo;<samp>--target_board</samp>&rsquo;, use a
  special makefile target:
  </p>
! <div class="example">
! <pre class="example">make -j<var>N</var> check-<var>testsuite</var>//<var>test-target</var>/<var>option1</var>/<var>option2</var>/&hellip;
  </pre></div>
  
  <p>For example,
  </p>
! <div class="example">
! <pre class="example">make -j3 check-gcc//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu}
  </pre></div>
  
  <p>will run three concurrent &ldquo;make-gcc&rdquo; testsuites, eventually testing all
*************** supported in the <samp>gcc</samp> subdir
*** 253,260 ****
  typing <code>echo</code> before the example given here.)
  </p>
  
! <a name="How-to-interpret-test-results"></a>
! <h3 class="section">How to interpret test results</h3>
  
  <p>The result of running the testsuite are various <samp>*.sum</samp> and <samp>*.log</samp>
  files in the testsuite subdirectories.  The <samp>*.log</samp> files contain a
--- 242,248 ----
  typing <code>echo</code> before the example given here.)
  </p>
  
! <span id="How-to-interpret-test-results"></span><h3 class="section">How to interpret test results</h3>
  
  <p>The result of running the testsuite are various <samp>*.sum</samp> and <samp>*.log</samp>
  files in the testsuite subdirectories.  The <samp>*.log</samp> files contain a
*************** over whether or not a test is expected t
*** 278,291 ****
  be fixed in future releases.
  </p>
  
! <a name="Submitting-test-results"></a>
! <h3 class="section">Submitting test results</h3>
  
  <p>If you want to report the results to the GCC project, use the
  <samp>contrib/test_summary</samp> shell script.  Start it in the <var>objdir</var> with
  </p>
! <div class="smallexample">
! <pre class="smallexample"><var>srcdir</var>/contrib/test_summary -p your_commentary.txt \
      -m gcc-testresults@gcc.gnu.org |sh
  </pre></div>
  
--- 266,278 ----
  be fixed in future releases.
  </p>
  
! <span id="Submitting-test-results"></span><h3 class="section">Submitting test results</h3>
  
  <p>If you want to report the results to the GCC project, use the
  <samp>contrib/test_summary</samp> shell script.  Start it in the <var>objdir</var> with
  </p>
! <div class="example">
! <pre class="example"><var>srcdir</var>/contrib/test_summary -p your_commentary.txt \
      -m gcc-testresults@gcc.gnu.org |sh
  </pre></div>
  
diff -Nrcpad gcc-10.3.0/LAST_UPDATED gcc-11.1.0/LAST_UPDATED
*** gcc-10.3.0/LAST_UPDATED	Thu Apr  8 11:57:04 2021
--- gcc-11.1.0/LAST_UPDATED	Tue Apr 27 10:00:34 2021
***************
*** 1 ****
! Obtained from git: releases/gcc-10.3.0 revision f00b5710a30f22efc3171c393e56aeb335c3cd39
--- 1 ----
! Obtained from git: releases/gcc-11 revision 50bc9185c2821350f0b785d6e23a6e9dcde58466
diff -Nrcpad gcc-10.3.0/MAINTAINERS gcc-11.1.0/MAINTAINERS
*** gcc-10.3.0/MAINTAINERS	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/MAINTAINERS	Tue Apr 27 10:00:12 2021
*************** Richard Earnshaw				<richard.earnshaw@ar
*** 24,30 ****
  Richard Biener					<rguenther@suse.de>
  Jakub Jelinek					<jakub@redhat.com>
  Richard Kenner					<kenner@nyu.edu>
! Jeff Law					<law@redhat.com>
  Michael Meissner				<gnu@the-meissners.org>
  Jason Merrill					<jason@redhat.com>
  David S. Miller					<davem@redhat.com>
--- 24,30 ----
  Richard Biener					<rguenther@suse.de>
  Jakub Jelinek					<jakub@redhat.com>
  Richard Kenner					<kenner@nyu.edu>
! Jeff Law					<jlaw@tachyum.com>
  Michael Meissner				<gnu@the-meissners.org>
  Jason Merrill					<jason@redhat.com>
  David S. Miller					<davem@redhat.com>
*************** alpha port		Richard Henderson	<rth@twidd
*** 51,56 ****
--- 51,57 ----
  amdgcn port		Julian Brown		<julian@codesourcery.com>
  amdgcn port		Andrew Stubbs		<ams@codesourcery.com>
  arc port		Joern Rennecke		<gnu@amylaar.uk>
+ arc port		Claudiu Zissulescu	<claziss@synopsys.com>
  arm port		Nick Clifton		<nickc@redhat.com>
  arm port		Richard Earnshaw	<richard.earnshaw@arm.com>
  arm port		Ramana Radhakrishnan	<ramana.radhakrishnan@arm.com>
*************** fr30 port		Nick Clifton		<nickc@redhat.c
*** 67,74 ****
  frv port		Nick Clifton		<nickc@redhat.com>
  frv port		Alexandre Oliva		<aoliva@gcc.gnu.org>
  ft32 port		James Bowman		<james.bowman@ftdichip.com>
! h8 port			Jeff Law		<law@redhat.com>
! hppa port		Jeff Law		<law@redhat.com>
  hppa port		John David Anglin	<dave.anglin@bell.net>
  i386 port		Jan Hubicka		<hubicka@ucw.cz>
  i386 port		Uros Bizjak		<ubizjak@gmail.com>
--- 68,75 ----
  frv port		Nick Clifton		<nickc@redhat.com>
  frv port		Alexandre Oliva		<aoliva@gcc.gnu.org>
  ft32 port		James Bowman		<james.bowman@ftdichip.com>
! h8 port			Jeff Law		<jeffreyalaw@gmail.com>
! hppa port		Jeff Law		<jeffreyalaw@gmail.com>
  hppa port		John David Anglin	<dave.anglin@bell.net>
  i386 port		Jan Hubicka		<hubicka@ucw.cz>
  i386 port		Uros Bizjak		<ubizjak@gmail.com>
*************** i386 vector ISA extns	Kirill Yukhin		<ki
*** 76,89 ****
  iq2000 port		Nick Clifton		<nickc@redhat.com>
  lm32 port		Sebastien Bourdeauducq	<sebastien@milkymist.org>
  m32r port		Nick Clifton		<nickc@redhat.com>
! m68k port (?)		Jeff Law		<law@redhat.com>
  m68k port		Andreas Schwab		<schwab@linux-m68k.org>
  m68k-motorola-sysv port	Philippe De Muyter	<phdm@macqel.be>
  mcore port		Nick Clifton		<nickc@redhat.com>
  microblaze		Michael Eager		<eager@eagercon.com>
  mips port		Matthew Fortune		<mfortune@gmail.com>
  mmix port		Hans-Peter Nilsson	<hp@bitrange.com>
! mn10300 port		Jeff Law		<law@redhat.com>
  mn10300 port		Alexandre Oliva		<aoliva@gcc.gnu.org>
  moxie port		Anthony Green		<green@moxielogic.com>
  msp430 port		Nick Clifton		<nickc@redhat.com>
--- 77,90 ----
  iq2000 port		Nick Clifton		<nickc@redhat.com>
  lm32 port		Sebastien Bourdeauducq	<sebastien@milkymist.org>
  m32r port		Nick Clifton		<nickc@redhat.com>
! m68k port (?)		Jeff Law		<jeffreyalaw@gmail.com>
  m68k port		Andreas Schwab		<schwab@linux-m68k.org>
  m68k-motorola-sysv port	Philippe De Muyter	<phdm@macqel.be>
  mcore port		Nick Clifton		<nickc@redhat.com>
  microblaze		Michael Eager		<eager@eagercon.com>
  mips port		Matthew Fortune		<mfortune@gmail.com>
  mmix port		Hans-Peter Nilsson	<hp@bitrange.com>
! mn10300 port		Jeff Law		<jeffreyalaw@gmail.com>
  mn10300 port		Alexandre Oliva		<aoliva@gcc.gnu.org>
  moxie port		Anthony Green		<green@moxielogic.com>
  msp430 port		Nick Clifton		<nickc@redhat.com>
*************** nvptx port		Tom de Vries		<tdevries@suse
*** 95,100 ****
--- 96,102 ----
  or1k port		Stafford Horne		<shorne@gmail.com>
  pdp11 port		Paul Koning		<ni1d@arrl.net>
  powerpcspe port		Andrew Jenner		<andrew@codesourcery.com>
+ pru port		Dimitar Dimitrov	<dimitar@dinux.eu>
  riscv port		Kito Cheng		<kito.cheng@gmail.com>
  riscv port		Palmer Dabbelt		<palmer@dabbelt.com>
  riscv port		Andrew Waterman		<andrew@sifive.com>
*************** visium port		Eric Botcazou		<ebotcazou@l
*** 118,123 ****
--- 120,126 ----
  x86-64 port		Jan Hubicka		<hubicka@ucw.cz>
  xstormy16 port		Nick Clifton		<nickc@redhat.com>
  xtensa port		Sterling Augustine	<augustine.sterling@gmail.com>
+ xtensa port		Max Filippov		<jcmvbkbc@gmail.com>
  
  			OS Port Maintainers	(OS alphabetical order)
  
*************** line map		Dodji Seketeli		<dodji@redhat.
*** 181,191 ****
  soft-fp			Joseph Myers		<joseph@codesourcery.com>
  scheduler (+ haifa)	Jim Wilson		<wilson@tuliptree.org>
  scheduler (+ haifa)	Michael Meissner	<gnu@the-meissners.org>
! scheduler (+ haifa)	Jeff Law		<law@redhat.com>
  scheduler (+ haifa)	Vladimir Makarov	<vmakarov@redhat.com>
  modulo-scheduler	Roman Zhuykov		<zhroma@ispras.ru>
! reorg			Jeff Law		<law@redhat.com>
! caller-save.c		Jeff Law		<law@redhat.com>
  callgraph		Jan Hubicka		<hubicka@ucw.cz>
  debugging code		Jim Wilson		<wilson@tuliptree.org>
  dwarf debugging code	Jason Merrill		<jason@redhat.com>
--- 184,194 ----
  soft-fp			Joseph Myers		<joseph@codesourcery.com>
  scheduler (+ haifa)	Jim Wilson		<wilson@tuliptree.org>
  scheduler (+ haifa)	Michael Meissner	<gnu@the-meissners.org>
! scheduler (+ haifa)	Jeff Law		<jeffreyalaw@gmail.com>
  scheduler (+ haifa)	Vladimir Makarov	<vmakarov@redhat.com>
  modulo-scheduler	Roman Zhuykov		<zhroma@ispras.ru>
! reorg			Jeff Law		<jeffreyalaw@gmail.com>
! caller-save.c		Jeff Law		<jeffreyalaw@gmail.com>
  callgraph		Jan Hubicka		<hubicka@ucw.cz>
  debugging code		Jim Wilson		<wilson@tuliptree.org>
  dwarf debugging code	Jason Merrill		<jason@redhat.com>
*************** fixincludes		Bruce Korb		<bkorb@gnu.org>
*** 199,206 ****
  *gimpl*			Jakub Jelinek		<jakub@redhat.com>
  *gimpl*			Aldy Hernandez		<aldyh@redhat.com>
  *gimpl*			Jason Merrill		<jason@redhat.com>
! gcse.c			Jeff Law		<law@redhat.com>
! global opt framework	Jeff Law		<law@redhat.com>
  hsa			Martin Jambor		<mjambor@suse.cz>
  jump.c			David S. Miller		<davem@redhat.com>
  web pages		Gerald Pfeifer		<gerald@pfeifer.com>
--- 202,209 ----
  *gimpl*			Jakub Jelinek		<jakub@redhat.com>
  *gimpl*			Aldy Hernandez		<aldyh@redhat.com>
  *gimpl*			Jason Merrill		<jason@redhat.com>
! gcse.c			Jeff Law		<jeffreyalaw@gmail.com>
! global opt framework	Jeff Law		<jeffreyalaw@gmail.com>
  hsa			Martin Jambor		<mjambor@suse.cz>
  jump.c			David S. Miller		<davem@redhat.com>
  web pages		Gerald Pfeifer		<gerald@pfeifer.com>
*************** gcov			Jan Hubicka		<hubicka@ucw.cz>
*** 223,229 ****
  gcov			Martin Liska		<mliska@suse.cz>
  gcov			Nathan Sidwell		<nathan@acm.org>
  option handling		Joseph Myers		<joseph@codesourcery.com>
! middle-end		Jeff Law		<law@redhat.com>
  middle-end		Ian Lance Taylor	<ian@airs.com>
  middle-end		Richard Biener		<rguenther@suse.de>
  tree-ssa		Andrew MacLeod		<amacleod@redhat.com>
--- 226,232 ----
  gcov			Martin Liska		<mliska@suse.cz>
  gcov			Nathan Sidwell		<nathan@acm.org>
  option handling		Joseph Myers		<joseph@codesourcery.com>
! middle-end		Jeff Law		<jeffreyalaw@gmail.com>
  middle-end		Ian Lance Taylor	<ian@airs.com>
  middle-end		Richard Biener		<rguenther@suse.de>
  tree-ssa		Andrew MacLeod		<amacleod@redhat.com>
*************** loop infrastructure	Zdenek Dvorak		<ook@
*** 239,244 ****
--- 242,248 ----
  loop ivopts		Bin Cheng		<bin.cheng@linux.alibaba.com>
  loop optimizer		Bin Cheng		<bin.cheng@linux.alibaba.com>
  OpenACC			Thomas Schwinge		<thomas@codesourcery.com>
+ OpenACC			Tobias Burnus		<tobias@codesourcery.com>
  OpenMP			Jakub Jelinek		<jakub@redhat.com>
  testsuite		Rainer Orth		<ro@CeBiTec.Uni-Bielefeld.DE>
  testsuite		Mike Stump		<mikestump@comcast.net>
*************** gdbhooks.py		David Malcolm		<dmalcolm@re
*** 247,252 ****
--- 251,257 ----
  SLSR			Bill Schmidt		<wschmidt@linux.ibm.com>
  jit			David Malcolm		<dmalcolm@redhat.com>
  gen* on machine desc	Richard Sandiford	<rdsandiford@googlemail.com>
+ static analyzer		David Malcolm		<dmalcolm@redhat.com>
  
  Note that individuals who maintain parts of the compiler need approval to
  check in changes outside of the parts of the compiler they maintain.
*************** Jon Beniston					<jon@beniston.com>
*** 321,326 ****
--- 326,332 ----
  Andrew Bennett					<andrew.bennett@imgtec.com>
  Andrew Benson					<abensonca@gmail.com>
  Daniel Berlin					<dberlin@dberlin.org>
+ Pat Bernardi					<bernardi@adacore.com>
  Jan Beulich					<jbeulich@novell.com>
  David Billinghurst				<David.Billinghurst@riotinto.com>
  Tomas Bily					<tbily@suse.cz>
*************** William Cohen					<wcohen@redhat.com>
*** 353,358 ****
--- 359,365 ----
  Michael Collison				<michael.collison@arm.com>
  Josh Conner					<joshconner@google.com>
  R. Kelley Cook					<kcook@gcc.gnu.org>
+ Alex Coplan					<alex.coplan@arm.com>
  Andrea Corallo					<andrea.corallo@arm.com>
  Christian Cornelssen				<ccorn@cs.tu-berlin.de>
  Ludovic Courtès					<ludo@gnu.org>
*************** Lawrence Crowl					<crowl@google.com>
*** 360,372 ****
  Ian Dall					<ian@beware.dropbear.id.au>
  David Daney					<david.daney@caviumnetworks.com>
  Robin Dapp					<rdapp@linux.ibm.com>
! Simon Dardis					<simon.dardis@imgtec.com>
  Sudakshina Das					<sudi.das@arm.com>
  Bud Davis					<jmdavis@link.com>
  Chris Demetriou					<cgd@google.com>
  Sameera Deshpande				<sameera.deshpande@linaro.org>
  Wilco Dijkstra					<wdijkstr@arm.com>
- Dimitar Dimitrov				<dimitar@dinux.eu>
  Benoit Dupont de Dinechin			<benoit.dupont-de-dinechin@st.com>
  Jason Eckhardt					<jle@rice.edu>
  Bernd Edlinger					<bernd.edlinger@hotmail.de>
--- 367,378 ----
  Ian Dall					<ian@beware.dropbear.id.au>
  David Daney					<david.daney@caviumnetworks.com>
  Robin Dapp					<rdapp@linux.ibm.com>
! Simon Dardis					<simon.dardis@gmail.com>
  Sudakshina Das					<sudi.das@arm.com>
  Bud Davis					<jmdavis@link.com>
  Chris Demetriou					<cgd@google.com>
  Sameera Deshpande				<sameera.deshpande@linaro.org>
  Wilco Dijkstra					<wdijkstr@arm.com>
  Benoit Dupont de Dinechin			<benoit.dupont-de-dinechin@st.com>
  Jason Eckhardt					<jle@rice.edu>
  Bernd Edlinger					<bernd.edlinger@hotmail.de>
*************** Chris Fairles					<cfairles@gcc.gnu.org>
*** 382,388 ****
  Alessandro Fanfarillo				<fanfarillo.gcc@gmail.com>
  Changpeng Fang					<changpeng.fang@amd.com>
  Li Feng						<nemokingdom@gmail.com>
- Max Filippov					<jcmvbkbc@gmail.com>
  Thomas Fitzsimmons				<fitzsim@redhat.com>
  Alexander Fomin					<afomin.mailbox@gmail.com>
  Brian Ford					<ford@vss.fsi.com>
--- 388,393 ----
*************** Matthew Gretton-Dann				<matthew.gretton
*** 406,416 ****
  Yury Gribov					<tetra2005@gmail.com>
  Jon Grimm					<jgrimm2@us.ibm.com>
  Laurent Guerby					<laurent@guerby.net>
  Jiufu Guo					<guojiufu@linux.ibm.com>
  Xuepeng Guo					<terry.xpguo@gmail.com>
  Wei Guozhi					<carrot@google.com>
  Mostafa Hagog					<hagog@gcc.gnu.org>
! Andrew Haley		                        <aph@redhat.com>
  Frederik Harwath				<frederik@codesourcery.com>
  Stuart Hastings					<stuart@apple.com>
  Michael Haubenwallner				<michael.haubenwallner@ssi-schaefer.com>
--- 411,422 ----
  Yury Gribov					<tetra2005@gmail.com>
  Jon Grimm					<jgrimm2@us.ibm.com>
  Laurent Guerby					<laurent@guerby.net>
+ Haochen Gui					<guihaoc@gcc.gnu.org>
  Jiufu Guo					<guojiufu@linux.ibm.com>
  Xuepeng Guo					<terry.xpguo@gmail.com>
  Wei Guozhi					<carrot@google.com>
  Mostafa Hagog					<hagog@gcc.gnu.org>
! Andrew Haley					<aph@redhat.com>
  Frederik Harwath				<frederik@codesourcery.com>
  Stuart Hastings					<stuart@apple.com>
  Michael Haubenwallner				<michael.haubenwallner@ssi-schaefer.com>
*************** George Helffrich				<george@gcc.gnu.org>
*** 423,428 ****
--- 429,435 ----
  Daniel Hellstrom				<daniel@gaisler.com>
  Fergus Henderson				<fjh@cs.mu.oz.au>
  Stuart Henderson				<shenders@gcc.gnu.org>
+ Marius Hillenbrand				<mhillen@linux.ibm.com>
  Matthew Hiller					<hiller@redhat.com>
  Kazu Hirata					<kazu@codesourcery.com>
  Manfred Hollstein				<mh@suse.com>
*************** Daniel Jacobowitz				<drow@false.org>
*** 445,450 ****
--- 452,458 ----
  Andreas Jaeger					<aj@suse.de>
  Harsha Jagasia					<harsha.jagasia@amd.com>
  Fariborz Jahanian				<fjahanian@apple.com>
+ Qian Jianhua					<qianjh@cn.fujitsu.com>
  Janis Johnson					<janis.marie.johnson@gmail.com>
  Teresa Johnson					<tejohnson@google.com>
  Kean Johnston					<jkj@sco.com>
*************** Andi Kleen					<andi@firstfloor.org>
*** 458,466 ****
  Jeff Knaggs					<jknaggs@redhat.com>
  Michael Koch					<konqueror@gmx.de>
  Nicolas Koenig					<koenigni@student.ethz.ch>
! Boris Kolpackov                                 <boris@codesynthesis.com>
  Dave Korn					<dave.korn.cygwin@gmail.com>
  Julia Koval					<julia.koval@intel.com>
  Matt Kraai					<kraai@ftbfs.org>
  Jan Kratochvil					<jan.kratochvil@redhat.com>
  Louis Krupp					<louis.krupp@zoho.com>
--- 466,475 ----
  Jeff Knaggs					<jknaggs@redhat.com>
  Michael Koch					<konqueror@gmx.de>
  Nicolas Koenig					<koenigni@student.ethz.ch>
! Boris Kolpackov					<boris@codesynthesis.com>
  Dave Korn					<dave.korn.cygwin@gmail.com>
  Julia Koval					<julia.koval@intel.com>
+ Hongtao Liu					<hongtao.liu@intel.com>
  Matt Kraai					<kraai@ftbfs.org>
  Jan Kratochvil					<jan.kratochvil@redhat.com>
  Louis Krupp					<louis.krupp@zoho.com>
*************** Razya Ladelsky					<razya@gcc.gnu.org>
*** 472,478 ****
  Thierry Lafage					<thierry.lafage@inria.fr>
  Aaron W. LaFramboise				<aaronavay62@aaronwl.com>
  Rask Ingemann Lambertsen			<ccc94453@vip.cybercity.dk>
! Jerome Lambourg                                 <lambourg@adacore.com>
  Asher Langton					<langton2@llnl.gov>
  Chris Lattner					<sabre@nondot.org>
  Terry Laurenzo					<tlaurenzo@gmail.com>
--- 481,487 ----
  Thierry Lafage					<thierry.lafage@inria.fr>
  Aaron W. LaFramboise				<aaronavay62@aaronwl.com>
  Rask Ingemann Lambertsen			<ccc94453@vip.cybercity.dk>
! Jerome Lambourg					<lambourg@adacore.com>
  Asher Langton					<langton2@llnl.gov>
  Chris Lattner					<sabre@nondot.org>
  Terry Laurenzo					<tlaurenzo@gmail.com>
*************** Siddhesh Poyarekar				<siddhesh@sourcewa
*** 559,567 ****
--- 568,578 ----
  Vidya Praveen					<vidyapraveen@arm.com>
  Thomas Preud'homme				<thomas.preudhomme@celest.fr>
  Vladimir Prus					<vladimir@codesourcery.com>
+ Hafiz Abid Qadeer				<abidh@codesourcery.com>
  Yao Qi						<yao@codesourcery.com>
  Jerry Quinn					<jlquinn@optonline.net>
  Easwaran Raman					<eraman@google.com>
+ Joe Ramsay					<joe.ramsay@arm.com>
  Rolf Rasmussen					<rolfwr@gcc.gnu.org>
  Fritz Reese					<fritzoreese@gmail.com>
  Volker Reichelt					<v.reichelt@netcologne.de>
*************** Craig Rodrigues					<rodrigc@gcc.gnu.org
*** 572,578 ****
  Erven Rohou					<erven.rohou@inria.fr>
  Ira Rosen					<irar@il.ibm.com>
  Yvan Roux					<yvan.roux@linaro.org>
! Maciej W. Rozycki				<macro@linux-mips.org>
  Silvius Rus					<rus@google.com>
  Matthew Sachs					<msachs@apple.com>
  Hariharan Sandanagobalane			<hariharan.gcc@gmail.com>
--- 583,590 ----
  Erven Rohou					<erven.rohou@inria.fr>
  Ira Rosen					<irar@il.ibm.com>
  Yvan Roux					<yvan.roux@linaro.org>
! Eugene Rozenfeld				<erozen@microsoft.com>
! Maciej W. Rozycki				<macro@orcam.me.uk>
  Silvius Rus					<rus@google.com>
  Matthew Sachs					<msachs@apple.com>
  Hariharan Sandanagobalane			<hariharan.gcc@gmail.com>
*************** Stefan Schulze Frielinghaus			<stefansf@
*** 586,592 ****
  Tilo Schwarz					<tilo@tilo-schwarz.de>
  Martin Sebor					<msebor@gcc.gnu.org>
  Svein Seldal					<svein@dev.seldal.com>
! Senthil Kumar Selvaraj				<senthil_kumar.selvaraj@atmel.com>
  Thiemo Seufer					<ths@networkno.de>
  Bill Seurer					<seurer@linux.vnet.ibm.com>
  Tim Shen					<timshen@google.com>
--- 598,604 ----
  Tilo Schwarz					<tilo@tilo-schwarz.de>
  Martin Sebor					<msebor@gcc.gnu.org>
  Svein Seldal					<svein@dev.seldal.com>
! Senthil Kumar Selvaraj				<saaadhu@gcc.gnu.org>
  Thiemo Seufer					<ths@networkno.de>
  Bill Seurer					<seurer@linux.vnet.ibm.com>
  Tim Shen					<timshen@google.com>
*************** Basile Starynkevitch				<basile@starynke
*** 605,614 ****
  Jakub Staszak					<kuba@et.pl>
  Graham Stott					<graham.stott@btinternet.com>
  Jeff Sturm					<jsturm@gcc.gnu.org>
! Robert Suchanek					<robert.suchanek@imgtec.com>
  Andrew Sutton					<andrew.n.sutton@gmail.com>
  Gabriele Svelto					<gabriele.svelto@st.com>
! Toma Tabacu					<toma.tabacu@imgtec.com>
  Sriraman Tallam					<tmsriram@google.com>
  Samuel Tardieu					<sam@rfc1149.net>
  Sam Tebbs					<samuel.tebbs@gmail.com>
--- 617,627 ----
  Jakub Staszak					<kuba@et.pl>
  Graham Stott					<graham.stott@btinternet.com>
  Jeff Sturm					<jsturm@gcc.gnu.org>
! Robert Suchanek					<rsuchy84@gmail.com>
  Andrew Sutton					<andrew.n.sutton@gmail.com>
  Gabriele Svelto					<gabriele.svelto@st.com>
! Toma Tabacu					<toma.tabacu@gmail.com>
! Omar Tahir					<omar.tahir@arm.com>
  Sriraman Tallam					<tmsriram@google.com>
  Samuel Tardieu					<sam@rfc1149.net>
  Sam Tebbs					<samuel.tebbs@gmail.com>
*************** Dinar Temirbulatov				<dtemirbulatov@gma
*** 616,627 ****
  Kresten Krab Thorup				<krab@gcc.gnu.org>
  Kai Tietz					<ktietz70@googlemail.com>
  Ilya Tocar					<tocarip@gmail.com>
! Philipp Tomsich					<philipp.tomsich@theobroma-systems.com>
  Daniel Towner					<dant@picochip.com>
  Konrad Trifunovic				<konrad.trifunovic@inria.fr>
  Markus Trippelsdorf				<markus@trippelsdorf.de>
  Igor Tsimbalist					<igor.v.tsimbalist@intel.com>
! Martin Uecker					<uecker@eecs.berkeley.edu>
  David Ung					<davidu@mips.com>
  Neil Vachharajani				<nvachhar@gmail.com>
  Kris Van Hees					<kris.van.hees@oracle.com>
--- 629,641 ----
  Kresten Krab Thorup				<krab@gcc.gnu.org>
  Kai Tietz					<ktietz70@googlemail.com>
  Ilya Tocar					<tocarip@gmail.com>
! Philipp Tomsich					<philipp.tomsich@vrull.eu>
  Daniel Towner					<dant@picochip.com>
  Konrad Trifunovic				<konrad.trifunovic@inria.fr>
  Markus Trippelsdorf				<markus@trippelsdorf.de>
+ Sergei Trofimovich				<slyfox@gcc.gnu.org>
  Igor Tsimbalist					<igor.v.tsimbalist@intel.com>
! Martin Uecker					<muecker@gwdg.de>
  David Ung					<davidu@mips.com>
  Neil Vachharajani				<nvachhar@gmail.com>
  Kris Van Hees					<kris.van.hees@oracle.com>
*************** Mark Wielaard					<mark@gcc.gnu.org>
*** 644,651 ****
--- 658,667 ----
  Edmar Wienskoski				<edmar@freescale.com>
  Ollie Wild					<aaw@google.com>
  Kevin Williams					<kevin.williams@inria.fr>
+ Przemyslaw Wirkus				<przemyslaw.wirkus@arm.com>
  Carlo Wood					<carlo@alinoe.com>
  Jackson Woodruff				<jackson.woodruff@arm.com>
+ Jonathan Wright					<jonathan.wright@arm.com>
  Mingjie Xing					<mingjie.xing@gmail.com>
  Chenghua Xu					<paul.hua.gm@gmail.com>
  Canqun Yang					<canqun@nudt.edu.cn>
diff -Nrcpad gcc-10.3.0/MD5SUMS gcc-11.1.0/MD5SUMS
*** gcc-10.3.0/MD5SUMS	Thu Apr  8 12:11:19 2021
--- gcc-11.1.0/MD5SUMS	Tue Apr 27 10:20:24 2021
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the 
! # gcc-10.3.0.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-11.1.0.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
***************
*** 8,56 ****
  # Suggested usage:
  # md5sum -c MD5SUMS | grep -v "OK$"
  #
! bda40697a9e2e23c4a52125fc1cc713d  .dir-locals.el
  5b296b32e07d2a84f4ac051ed7f95b91  .gitattributes
! d0320fa024ec213600ee6dbf489abd65  .gitignore
  8c00452ef1e298846493ec8b239f93e2  ABOUT-NLS
  59530bdf33659b29e73d4adb9f9f6552  COPYING
  2d5025d4aa3495befef8f17206a5b0a1  COPYING.LIB
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 83cd4c3ebd086ded157891cd3c41952b  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! e1c93ceda3bbe87922603d635c313b8f  INSTALL/binaries.html
! bc73295b6d9e4f3d9b92938ec40eb31d  INSTALL/build.html
! cc1de21b2cf587ec1b56a54c82b3c348  INSTALL/configure.html
! d9fd48c7e3572c71d29718a822559709  INSTALL/download.html
! cadabbcbc80839856a250fb9718edd4a  INSTALL/finalinstall.html
! e9fe891b162f4aa1b9dd2f6d32b041b5  INSTALL/gfdl.html
! 79e8d9191ad9b199665b9926001d2395  INSTALL/index.html
! 63764c6d871b587581a99d935f33bf5a  INSTALL/old.html
! 9a15ddbf1b6937ce25f38e1ff5e1b54c  INSTALL/prerequisites.html
! b837a1e2fb39ecd453886d9ca05a2786  INSTALL/specific.html
! aa64c5e8c1a4235d4d6ff2b96321a4a1  INSTALL/test.html
! 68d0b99e3d82626a8caec4d7d6f87639  LAST_UPDATED
! 4ccaac378eb9cf3fbfcf750473e826bf  MAINTAINERS
! a17604d493359c825eafd4af94730246  Makefile.def
! ff6d1260e969bb733093c18248246493  Makefile.in
! a9cb179e6102a6074986bbfc9b6bf96a  Makefile.tpl
! 1ca86c624299eb3b9a314e20d3fadb1c  NEWS
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  a657821f65bab77f4fbf3a75cdee6da9  ar-lib
  500b9244caa7a7ab23ece1db37efa76d  compile
! 8888c74be9b5beaeef318ce5b165e5de  config-ml.in
! b3c47a769a12794661355d3a5dcfeb3d  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
! 8172cd8087c91ceb16a61a62c9d71ff1  config.sub
! fc128a0e0bd42c97d9eff3690c7073ab  config/ChangeLog
  0fcd4badfe2a2191778bdf5ab94aa40c  config/acinclude.m4
  2ea0edfde0ce5ce69b49317a5650f048  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
  a6bf9c39c62222092ea6d5d8551c077f  config/ax_check_define.m4
  fa1446baa94824d733d33eb615217d23  config/ax_count_cpus.m4
  dd11d6ddf98d1e2066fa3aef4f8ce966  config/ax_pthread.m4
  596c2296c23cda1b6445427d6c3ce3ad  config/bitfields.m4
  5c6a030699353abe2ff69294a495e4cd  config/bootstrap-O1.mk
--- 8,66 ----
  # Suggested usage:
  # md5sum -c MD5SUMS | grep -v "OK$"
  #
! c0eb7bac11479e0032693e4e55297c40  .dir-locals.el
  5b296b32e07d2a84f4ac051ed7f95b91  .gitattributes
! 79b46988417a8ff9423aeca2247266f0  .gitignore
  8c00452ef1e298846493ec8b239f93e2  ABOUT-NLS
  59530bdf33659b29e73d4adb9f9f6552  COPYING
  2d5025d4aa3495befef8f17206a5b0a1  COPYING.LIB
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 4d6f54a4fd0de7fc57028707da26cc71  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 9fbae7456b33d627d5040df2863d48a1  INSTALL/binaries.html
! 15b4a165afc27fbc10cadf55ed807a6a  INSTALL/build.html
! 2607321932c7f05c0a609c400684ef7d  INSTALL/configure.html
! 6a2df2942e88031f07b0fb22f2d71496  INSTALL/download.html
! 18f1cf2c90336f2458dd2d5cd87f76ed  INSTALL/finalinstall.html
! efa5b6f40ab15d2ebabe55e949af4ad6  INSTALL/gfdl.html
! 465a071cde9b861d457ec4c99aa92d46  INSTALL/index.html
! a525777b51e7d411a402cb7255890971  INSTALL/old.html
! 259a5244d1ee5294127bff81849defca  INSTALL/prerequisites.html
! a59a80aec0460df911416e71d3929a08  INSTALL/specific.html
! d0fa39e31e57ef5b85ed09057ef57e7a  INSTALL/test.html
! f2f20057bd80d0e10876761e01613d5d  LAST_UPDATED
! 863d0fffeb06d7a45df38d7836e342bd  MAINTAINERS
! 91fe6d76e55d05384556a6f7f3016b2b  Makefile.def
! e157ca61cd8f3cf99f8e2a0d1d9d64a1  Makefile.in
! 6815842aea43bfa1c18f9c93d480ece3  Makefile.tpl
! 12d3c9785af2daaf1d2db68fb2eb548b  NEWS
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  a657821f65bab77f4fbf3a75cdee6da9  ar-lib
+ cf084710347ec8832f1e6e540d719f1e  c++tools/ChangeLog
+ 436118acd883073ecd4bbbc8e56f8e5c  c++tools/Makefile.in
+ c4735269d3a60846e4e67459fe4c4811  c++tools/config.h.in
+ aece8bada3214cb3a4a9a0e74bbc028d  c++tools/configure
+ 3b5309fbc2f188f011013eb71b498112  c++tools/configure.ac
+ dbf071e12c975472c7fb6dbc22cb6f81  c++tools/resolver.cc
+ 638228e6632a53edcfe90c75fe725be8  c++tools/resolver.h
+ f63f94381ef697f7e9b33731ba3675ef  c++tools/server.cc
  500b9244caa7a7ab23ece1db37efa76d  compile
! 0a5df71d999a1a0135a99ab79fb42e4f  config-ml.in
! c64564b7c7563dae5ebe016f340c9cd9  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
! d320a9a1a5eb63901563ae5adf268433  config.sub
! ff8fb2d0fa1323d4128ebcb0a65838ce  config/ChangeLog
  0fcd4badfe2a2191778bdf5ab94aa40c  config/acinclude.m4
  2ea0edfde0ce5ce69b49317a5650f048  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
  a6bf9c39c62222092ea6d5d8551c077f  config/ax_check_define.m4
  fa1446baa94824d733d33eb615217d23  config/ax_count_cpus.m4
+ 7692c5eb50682b66afb7bb4ae906e470  config/ax_cxx_compile_stdcxx.m4
+ 828ebd563b5aae7d33c27d7aa3f1ee2b  config/ax_lib_socket_nsl.m4
  dd11d6ddf98d1e2066fa3aef4f8ce966  config/ax_pthread.m4
  596c2296c23cda1b6445427d6c3ce3ad  config/bitfields.m4
  5c6a030699353abe2ff69294a495e4cd  config/bootstrap-O1.mk
*************** f0d17f3362caa1926e231994168f1e8d  config
*** 63,74 ****
  5b51c3ad4e0286a41fe1020cf7e252f0  config/bootstrap-debug-lean.mk
  babb6167c05386834412652e8b27239e  config/bootstrap-debug-lib.mk
  9a194b56c06b616528d1e76306aa78e6  config/bootstrap-debug.mk
  abb913a79f307c92b276ddb058600c2b  config/bootstrap-lto-lean.mk
  33768879cdb11bf946d977ab6632d169  config/bootstrap-lto-noplugin.mk
  300f4b357f96bcf7bed569192152a866  config/bootstrap-lto.mk
  f466ea6022e6627a2e3d94bb0cc7eeb9  config/bootstrap-time.mk
  065f6478cf9a6fdc999f666517cfb8b4  config/bootstrap-ubsan.mk
! f64597752e0a5b1175dc8f0d924a2ed0  config/cet.m4
  04bdbef77f5fd2e282f7dee0bde60444  config/codeset.m4
  b5a5c394536a15e50be1998bd341fd02  config/depstand.m4
  321e8bd6894bd9a668af361e89e92e9b  config/dfp.m4
--- 73,85 ----
  5b51c3ad4e0286a41fe1020cf7e252f0  config/bootstrap-debug-lean.mk
  babb6167c05386834412652e8b27239e  config/bootstrap-debug-lib.mk
  9a194b56c06b616528d1e76306aa78e6  config/bootstrap-debug.mk
+ 584327e59bbe42cfcf0b041fed0f4526  config/bootstrap-hwasan.mk
  abb913a79f307c92b276ddb058600c2b  config/bootstrap-lto-lean.mk
  33768879cdb11bf946d977ab6632d169  config/bootstrap-lto-noplugin.mk
  300f4b357f96bcf7bed569192152a866  config/bootstrap-lto.mk
  f466ea6022e6627a2e3d94bb0cc7eeb9  config/bootstrap-time.mk
  065f6478cf9a6fdc999f666517cfb8b4  config/bootstrap-ubsan.mk
! f1139d31b40bd5985bd749e15a83f971  config/cet.m4
  04bdbef77f5fd2e282f7dee0bde60444  config/codeset.m4
  b5a5c394536a15e50be1998bd341fd02  config/depstand.m4
  321e8bd6894bd9a668af361e89e92e9b  config/dfp.m4
*************** e32906a3177f3b368bcd56f9e86a620c  config
*** 90,96 ****
  b17ad59a69316040fae6c3b09187bcbc  config/inttypes.m4
  0b63117973333c343e0d0819012b8187  config/inttypes_h.m4
  f8cc157a22bc4fae23cee0f7da613154  config/isl.m4
! 71bf002195846e85b3a96057f72ad530  config/largefile.m4
  db111161c56fa9d53a03abfb188ad1d0  config/lcmessage.m4
  cbcbd9977ef1239ccac0c5c54d214302  config/ld-symbolic.m4
  1cbbc8830601bf43a3c42ee10a01eecd  config/lead-dot.m4
--- 101,107 ----
  b17ad59a69316040fae6c3b09187bcbc  config/inttypes.m4
  0b63117973333c343e0d0819012b8187  config/inttypes_h.m4
  f8cc157a22bc4fae23cee0f7da613154  config/isl.m4
! 07787fd35e89d9397661e5026802e457  config/largefile.m4
  db111161c56fa9d53a03abfb188ad1d0  config/lcmessage.m4
  cbcbd9977ef1239ccac0c5c54d214302  config/ld-symbolic.m4
  1cbbc8830601bf43a3c42ee10a01eecd  config/lead-dot.m4
*************** e10d31316e03a59577fb4ed90a670914  config
*** 104,110 ****
  3fe4a576c2a75736c8da3af1d0824217  config/mh-cygwin
  507b102116e2550175bb7f42ee3c2958  config/mh-darwin
  625bacc09b9992290d94831bd7506bd0  config/mh-djgpp
! a8801f3e491168787fe2624d07ad1b08  config/mh-mingw
  cd7034dccd04e50150b14c597dd545a5  config/mh-pa
  48d5107b991a0cdbe7eb7022b0dfecb2  config/mh-pa-hpux10
  76d638a67d840715b2de89afee8ef49a  config/mh-ppc-aix
--- 115,121 ----
  3fe4a576c2a75736c8da3af1d0824217  config/mh-cygwin
  507b102116e2550175bb7f42ee3c2958  config/mh-darwin
  625bacc09b9992290d94831bd7506bd0  config/mh-djgpp
! 8fe20cd58711408e779e723c7e4981ad  config/mh-mingw
  cd7034dccd04e50150b14c597dd545a5  config/mh-pa
  48d5107b991a0cdbe7eb7022b0dfecb2  config/mh-pa-hpux10
  76d638a67d840715b2de89afee8ef49a  config/mh-ppc-aix
*************** c950e3234da1eb9ad5f29bc1c2d2ae74  config
*** 125,130 ****
--- 136,142 ----
  8f2bd36861dd8e2742bcd719a977271b  config/no-executables.m4
  5135144630c100a01c62fa64629aafb4  config/override.m4
  d31260ea4a04e5fe935a240278d5d02b  config/picflag.m4
+ f82299b33f28607e9d15e486a58add90  config/pkg.m4
  a155332d4af74bcf3f4c52b4dbadca34  config/plugins.m4
  5413d2cdbde706860854a69f6fc12f81  config/po.m4
  b2d511a8a77414eda79bdee0daccfea8  config/proginstall.m4
*************** e2dc6b4fd62b77bff96b7951ef74f78f  config
*** 142,199 ****
  5cabffc02a90bd9698105b9eef507f11  config/warnings.m4
  7ef51b0adb98e5c5f7aba46d2c7293f1  config/weakref.m4
  0163b672c888aaf1c8ad3e867a0ec9f1  config/zlib.m4
! 8ce8dd8306a7c2203ccc55583632164b  configure
! e5497795d84f5807263190ac9143f20e  configure.ac
! 098af74e20d177a96825ea683e7eb1b1  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  8498c0cdfe3f444ad6f540ec9e11cbec  contrib/analyze_brprob.py
  70c4cbdda692e5a2727a91c4c9b64046  contrib/analyze_brprob_spec.py
  1a424ea171db6416938f23bb6ca28584  contrib/bench-stringop
  6afd57579bc6654d4242324c3c79644c  contrib/check-internal-format-escaping.py
! 1096e3f24fd2f43f0bcf568c06954d8c  contrib/check-params-in-docs.py
  5e2ff01f3f3129b3e9ca90a9d0043b05  contrib/check_GNU_style.py
  998cf407b76e1f4efe6919a56b59cd9f  contrib/check_GNU_style.sh
  2a46557203b808477a2fcf4698085cf8  contrib/check_GNU_style_lib.py
  c3763df74b9b0ad3498815e6a77dc5b4  contrib/check_makefile_deps.sh
  debdf0b8904f5982062eef19a66b07dd  contrib/check_warning_flags.sh
! facb20ca4e83374ab6c8fe203429ec3b  contrib/clang-format
  b0441dfb97e02a384b35567470c35c48  contrib/compare-all-tests
! 52ddcac68b5afa5af892813e2c6d2b49  contrib/compare-debug
  ba098127814007beeedbdecb8686685f  contrib/compare-lto
  bc8bc1290a409ac41a763005f95b5758  contrib/compareSumTests3
  54f31390bacd889f234ca6a9b189a9fd  contrib/compare_tests
  e2e52abbbb307e16e160946e13bbe530  contrib/compare_two_ftime_report_sets
! b2981d3447dc8ffa5f08bc99277ae76c  contrib/config-list.mk
  6134d179ba058a381f67bbc5daa02010  contrib/dg-cmp-results.sh
! defd641fcdf03f433c3ad5d4b2520e36  contrib/dg-extract-results.py
! 599fa78ff6918c41e353990adf0a1ba4  contrib/dg-extract-results.sh
  87ae17b353cdce921324af084ec6dcb1  contrib/dglib.pm
! 6bc745dc0e59a4d03ee2af1bc6b1ccd0  contrib/download_prerequisites
! 6ee58d643622b5ecb4d58d77f0fd59e2  contrib/filter-clang-warnings.py
  080dea8d6b4a4c8c6bf8ae7b8ecf15a6  contrib/filter_gcc_for_doxygen
  db03e57377f9eb202b7b783eb81fe40d  contrib/filter_knr2ansi.pl
  b038940be99369232106ef9e9b15bee3  contrib/filter_params.py
  a2a8948ffa0e5231c294fb58c7065d22  contrib/gcc-changelog/git_check_commit.py
! e0e02c08ef3163808001729c55e31cce  contrib/gcc-changelog/git_commit.py
! f1c2869965856588072c30efa7aa6507  contrib/gcc-changelog/git_email.py
  32a7878b9e18224582fe20763a137b10  contrib/gcc-changelog/git_repository.py
! d5ed7f3c23e35788430e4897690dc80c  contrib/gcc-changelog/git_update_version.py
! 8156baea830d2b7e3dc7580f3a45952b  contrib/gcc-changelog/setup.cfg
! 3717d83e0863f54a647d5538b1f96760  contrib/gcc-changelog/test_email.py
! 272efc2bdebd11d7a689ad13bd8ce304  contrib/gcc-changelog/test_patches.txt
! b3ff47ac72204a11fc255ab031774557  contrib/gcc-git-customization.sh
  dfceb883caf21f3071f7309ee0ac8a6b  contrib/gcc.doxy
  55236e85d8087042189b701cd05d84be  contrib/gcc_build
! cecb3852a568945e2a82691f772f2d47  contrib/gcc_update
  61ad7a180a7895f83d32ef7b15cb8386  contrib/gen_autofdo_event.py
! 379516c6635d267f661c36248d59ccef  contrib/gennews
  25491ab6a5a68d252f311f5a9c6f4c8f  contrib/git-add-user-branch.sh
  7e5729822d673e846d5ef26e1f1b8591  contrib/git-add-vendor-branch.sh
  a05c06173f9b6217a753767a1e28481c  contrib/git-backport.py
  6277756eb398a594323d2d2b52962046  contrib/git-fetch-vendor.sh
  59304fc08afa489baa6b920cc76dc625  contrib/gthr_supp_vxw_5x.c
! d5c31d88f8fffe020984789a6e963635  contrib/header-tools/ChangeLog
  4f7d3bf5dd67c6b144a7a1ea0bb4127b  contrib/header-tools/README
  05ef7fb87e90ba93ee04659be072a357  contrib/header-tools/count-headers
  ba0485a3c721bce9e32407ef996d2a9d  contrib/header-tools/gcc-order-headers
--- 154,211 ----
  5cabffc02a90bd9698105b9eef507f11  config/warnings.m4
  7ef51b0adb98e5c5f7aba46d2c7293f1  config/weakref.m4
  0163b672c888aaf1c8ad3e867a0ec9f1  config/zlib.m4
! 6ece08fe6f112e6b2473ce4edfe0c0ec  configure
! 50430e57b254730537ed0ee2c1f1b644  configure.ac
! e5d288ce4a87435e2b90c147883fb08f  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  8498c0cdfe3f444ad6f540ec9e11cbec  contrib/analyze_brprob.py
  70c4cbdda692e5a2727a91c4c9b64046  contrib/analyze_brprob_spec.py
  1a424ea171db6416938f23bb6ca28584  contrib/bench-stringop
  6afd57579bc6654d4242324c3c79644c  contrib/check-internal-format-escaping.py
! dd3816d0e1f0c3e10b634d2c65278a9d  contrib/check-params-in-docs.py
  5e2ff01f3f3129b3e9ca90a9d0043b05  contrib/check_GNU_style.py
  998cf407b76e1f4efe6919a56b59cd9f  contrib/check_GNU_style.sh
  2a46557203b808477a2fcf4698085cf8  contrib/check_GNU_style_lib.py
  c3763df74b9b0ad3498815e6a77dc5b4  contrib/check_makefile_deps.sh
  debdf0b8904f5982062eef19a66b07dd  contrib/check_warning_flags.sh
! c7edaf703e193f7c29fbfbf2539498c8  contrib/clang-format
  b0441dfb97e02a384b35567470c35c48  contrib/compare-all-tests
! 8c4a890ac43008052c3687b74932b5f1  contrib/compare-debug
  ba098127814007beeedbdecb8686685f  contrib/compare-lto
  bc8bc1290a409ac41a763005f95b5758  contrib/compareSumTests3
  54f31390bacd889f234ca6a9b189a9fd  contrib/compare_tests
  e2e52abbbb307e16e160946e13bbe530  contrib/compare_two_ftime_report_sets
! d755e264c1bc130786d66c6aaf42ff91  contrib/config-list.mk
  6134d179ba058a381f67bbc5daa02010  contrib/dg-cmp-results.sh
! afd0452908aeb3a24045e5201bcf9d34  contrib/dg-extract-results.py
! 514fb178de0ad540660b4552d55a6f84  contrib/dg-extract-results.sh
  87ae17b353cdce921324af084ec6dcb1  contrib/dglib.pm
! 85e6cf92b1ac23616061e3c79ab16ae8  contrib/download_prerequisites
! a22ccd173c2d00c00e7ad01e97342bcc  contrib/filter-clang-warnings.py
  080dea8d6b4a4c8c6bf8ae7b8ecf15a6  contrib/filter_gcc_for_doxygen
  db03e57377f9eb202b7b783eb81fe40d  contrib/filter_knr2ansi.pl
  b038940be99369232106ef9e9b15bee3  contrib/filter_params.py
  a2a8948ffa0e5231c294fb58c7065d22  contrib/gcc-changelog/git_check_commit.py
! 91b906495a1f8008ab2808d9c6bc36a1  contrib/gcc-changelog/git_commit.py
! 77f2d591109175ffb1871414e6e3f4f2  contrib/gcc-changelog/git_email.py
  32a7878b9e18224582fe20763a137b10  contrib/gcc-changelog/git_repository.py
! dd3ff2d10454bc63b57044b869fc406f  contrib/gcc-changelog/git_update_version.py
! 1fcc4f18e9f9043eaea6c3c990d96d9b  contrib/gcc-changelog/setup.cfg
! 2c38c560411e39c2e9ef8ee698495978  contrib/gcc-changelog/test_email.py
! 90aff9a07a99e0a329413bf2d1a35e54  contrib/gcc-changelog/test_patches.txt
! 22db5f57de646cae44a644f64023c2f8  contrib/gcc-git-customization.sh
  dfceb883caf21f3071f7309ee0ac8a6b  contrib/gcc.doxy
  55236e85d8087042189b701cd05d84be  contrib/gcc_build
! 11e43a96424d1e407bded6b3324c345c  contrib/gcc_update
  61ad7a180a7895f83d32ef7b15cb8386  contrib/gen_autofdo_event.py
! 9cadf9c7940df721a2ba59b5adb1180e  contrib/gennews
  25491ab6a5a68d252f311f5a9c6f4c8f  contrib/git-add-user-branch.sh
  7e5729822d673e846d5ef26e1f1b8591  contrib/git-add-vendor-branch.sh
  a05c06173f9b6217a753767a1e28481c  contrib/git-backport.py
  6277756eb398a594323d2d2b52962046  contrib/git-fetch-vendor.sh
  59304fc08afa489baa6b920cc76dc625  contrib/gthr_supp_vxw_5x.c
! 4584ac5abe406ab944c3d308a652834b  contrib/header-tools/ChangeLog
  4f7d3bf5dd67c6b144a7a1ea0bb4127b  contrib/header-tools/README
  05ef7fb87e90ba93ee04659be072a357  contrib/header-tools/count-headers
  ba0485a3c721bce9e32407ef996d2a9d  contrib/header-tools/gcc-order-headers
*************** f95211753b48d6ca1f64281a15dde55f  contri
*** 206,223 ****
  7f9fd87ecac948bc070878c70d4f96ce  contrib/header-tools/show-headers
  fa945bac89ee68b410027dcfe1312f4b  contrib/index-prop
  a7318fa2f0580c3a0d5dd4b14e4d0e0d  contrib/jit-coverage-report.py
  8dca730e1215abbc5fb6330e5cf8432a  contrib/maintainers-verify.sh
  43e3d77ae19b5c6304d6d6846792c173  contrib/make-obstacks-texi.pl
  652b57f03f525e02ceac3dee8f672204  contrib/make_sunver.pl
  bd49fb9eed9f0a5344158e834dd6f468  contrib/mark_spam.py
! 60407a5923bc8a58a2d9b937c3f2cea8  contrib/mklog
! fc4965b52fd7de27941bf5183aa1ece9  contrib/mklog.pl
  0fb5c8c3cd465d8bd57b55b2548c683a  contrib/paranoia.cc
  a34668cfad9dec733354503fbc67fb24  contrib/patch_tester.sh
  87a19b40fbd220938cf6c23c42c255e2  contrib/prepare_patch.sh
  a6f2829359f65be5c182fd414e30fe8a  contrib/prerequisites.md5
  663d159a25cdcd62d1182f124f0dae82  contrib/prerequisites.sha512
! 67465407d5c91e3cfcbe29393c1a5060  contrib/reghunt/ChangeLog
  cf247a580e49d212518de409793db0a8  contrib/reghunt/bin/gcc-build-full
  724e70ea3e80f87f2a201bbe2f1eef37  contrib/reghunt/bin/gcc-build-simple
  3f2318bae7562a4ad1639e686916a545  contrib/reghunt/bin/gcc-cleanup
--- 218,237 ----
  7f9fd87ecac948bc070878c70d4f96ce  contrib/header-tools/show-headers
  fa945bac89ee68b410027dcfe1312f4b  contrib/index-prop
  a7318fa2f0580c3a0d5dd4b14e4d0e0d  contrib/jit-coverage-report.py
+ 60407a5923bc8a58a2d9b937c3f2cea8  contrib/legacy/mklog
+ fc4965b52fd7de27941bf5183aa1ece9  contrib/legacy/mklog.pl
  8dca730e1215abbc5fb6330e5cf8432a  contrib/maintainers-verify.sh
  43e3d77ae19b5c6304d6d6846792c173  contrib/make-obstacks-texi.pl
  652b57f03f525e02ceac3dee8f672204  contrib/make_sunver.pl
  bd49fb9eed9f0a5344158e834dd6f468  contrib/mark_spam.py
! 640520863380d75e8f339d289192e577  contrib/mklog.py
  0fb5c8c3cd465d8bd57b55b2548c683a  contrib/paranoia.cc
  a34668cfad9dec733354503fbc67fb24  contrib/patch_tester.sh
+ 38ad00377c23b6c1d8a93326204f96f2  contrib/prepare-commit-msg
  87a19b40fbd220938cf6c23c42c255e2  contrib/prepare_patch.sh
  a6f2829359f65be5c182fd414e30fe8a  contrib/prerequisites.md5
  663d159a25cdcd62d1182f124f0dae82  contrib/prerequisites.sha512
! 0447f91f429309963da4962995c0d9d3  contrib/reghunt/ChangeLog
  cf247a580e49d212518de409793db0a8  contrib/reghunt/bin/gcc-build-full
  724e70ea3e80f87f2a201bbe2f1eef37  contrib/reghunt/bin/gcc-build-simple
  3f2318bae7562a4ad1639e686916a545  contrib/reghunt/bin/gcc-cleanup
*************** f251d49dd87647250fcd74dd50b7835f  contri
*** 276,282 ****
  e2829fc4af4f433a6a328a62d5ce8066  contrib/reghunt/examples/reg-watch
  afd863c2ec84c906e20f9b9787b1f0fe  contrib/reghunt/examples/reg-watch.awk
  8955535523d4b5f48006bcb851ba9b4b  contrib/reghunt/examples/testall
! 1589d4ffb5a00cf0f78dcbac928bba10  contrib/regression/ChangeLog
  30553bfced1b2b46bf7ca01ef6ba69d1  contrib/regression/GCC_Regression_Tester.wdgt/Default.png
  ad38ddd771df222eb9d413e3c7f6a751  contrib/regression/GCC_Regression_Tester.wdgt/Icon.png
  777bd286c147cc02861811f66b9a4440  contrib/regression/GCC_Regression_Tester.wdgt/Info.plist
--- 290,296 ----
  e2829fc4af4f433a6a328a62d5ce8066  contrib/reghunt/examples/reg-watch
  afd863c2ec84c906e20f9b9787b1f0fe  contrib/reghunt/examples/reg-watch.awk
  8955535523d4b5f48006bcb851ba9b4b  contrib/reghunt/examples/testall
! 808c96175e04f1371bcf6f460e9ce139  contrib/regression/ChangeLog
  30553bfced1b2b46bf7ca01ef6ba69d1  contrib/regression/GCC_Regression_Tester.wdgt/Default.png
  ad38ddd771df222eb9d413e3c7f6a751  contrib/regression/GCC_Regression_Tester.wdgt/Icon.png
  777bd286c147cc02861811f66b9a4440  contrib/regression/GCC_Regression_Tester.wdgt/Info.plist
*************** fb1ff65a78c592489a09d18e42238a68  contri
*** 291,321 ****
  dc562ddb86567c65e82953825713dc4b  contrib/regression/site.exp
  7f6418948396f8250447e3e6182322d8  contrib/repro_fail
  39442479834f1c02d6ce11eab6889b6e  contrib/test_installed
  2c2a06a23394c548bb4afba3c25aacce  contrib/test_recheck
  c650e776de65a2de80bbfb0033641805  contrib/test_summary
  45bd745cf293127fa6b729c7b58cf11f  contrib/testsuite-management/validate_failures.py
  0202e4875fa43ec09cf5e8442c873a56  contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail
  923892d7a9f7a205c33b7a17819ff704  contrib/texi2pod.pl
! f1c447d7b324cb5746790d8e98e6c2ea  contrib/unicode/EastAsianWidth.txt
! f27301d44f3c883db45ab698fcc40d42  contrib/unicode/PropList.txt
! d881d2dfb6eebe7c6233d9a788f9f046  contrib/unicode/README
! 755f6af699f8c8d2d958da411f78f6c6  contrib/unicode/UnicodeData.txt
! c8827ac9a9af43f8f3ef494d30827c87  contrib/unicode/from_glibc/unicode_utils.py
! 66c5a44b8562455e97ee0f873e4ecf59  contrib/unicode/from_glibc/utf8_gen.py
  53bce7c8a18d257ac361919611f46022  contrib/unicode/gen_wcwidth.py
  8b5fa928c1da8636733a0a76a2da5bc8  contrib/unicode/unicode-license.txt
  13955dc4ee3f74718a3869155e474db6  contrib/uninclude
  9001fc047ca1feb126416897c520d55f  contrib/unused_functions.py
! b7721aa681bc0aa975cd6c469c234f42  contrib/update-copyright.py
  e96e470317bafce43e11f5d3dc027f1c  contrib/vim-gcc-dev/README
  a0d12be401961a2557883b7c09dc71eb  contrib/vim-gcc-dev/ftdetect/gcc-dev.vim
  0d02cd23d72dff87da126925264d8356  contrib/vim-gcc-dev/syntax/gcc-match.vim
  62c751cbf874deb96b0e6ce4f1c65f0a  contrib/vim-gcc-dev/syntax/gcc-rtl.vim
  77a1724cb607ac6e76b6cf20aea0c1ca  contrib/vim-gcc-dev/syntax/gimple.vim
! b99476ca28b484080c3ec5916a9ca3f9  contrib/vimrc
  da7aeedeb5a86ee6f5982e559a2d6dcc  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! 08fc830135f3010c5228f15c70980d25  fixincludes/ChangeLog
  6de190723745dc3f75080144dfa2215e  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
--- 305,336 ----
  dc562ddb86567c65e82953825713dc4b  contrib/regression/site.exp
  7f6418948396f8250447e3e6182322d8  contrib/repro_fail
  39442479834f1c02d6ce11eab6889b6e  contrib/test_installed
+ 612f292443505f04809bcac85660bac1  contrib/test_mklog.py
  2c2a06a23394c548bb4afba3c25aacce  contrib/test_recheck
  c650e776de65a2de80bbfb0033641805  contrib/test_summary
  45bd745cf293127fa6b729c7b58cf11f  contrib/testsuite-management/validate_failures.py
  0202e4875fa43ec09cf5e8442c873a56  contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail
  923892d7a9f7a205c33b7a17819ff704  contrib/texi2pod.pl
! 12cde958811f4482e4560d5cb45f851a  contrib/unicode/EastAsianWidth.txt
! 09a6b8a9bf45d76e1051f087476c584a  contrib/unicode/PropList.txt
! 016eb0931cf8d9db4a41104fcc06793e  contrib/unicode/README
! 85879f1976cc8eb739ee5585a93938e2  contrib/unicode/UnicodeData.txt
! 267954233e453f5b5c9a1396da8aeb94  contrib/unicode/from_glibc/unicode_utils.py
! 191680bc9f44847c072c9b46239b1a33  contrib/unicode/from_glibc/utf8_gen.py
  53bce7c8a18d257ac361919611f46022  contrib/unicode/gen_wcwidth.py
  8b5fa928c1da8636733a0a76a2da5bc8  contrib/unicode/unicode-license.txt
  13955dc4ee3f74718a3869155e474db6  contrib/uninclude
  9001fc047ca1feb126416897c520d55f  contrib/unused_functions.py
! 42920035361488d6810b0603082b37a1  contrib/update-copyright.py
  e96e470317bafce43e11f5d3dc027f1c  contrib/vim-gcc-dev/README
  a0d12be401961a2557883b7c09dc71eb  contrib/vim-gcc-dev/ftdetect/gcc-dev.vim
  0d02cd23d72dff87da126925264d8356  contrib/vim-gcc-dev/syntax/gcc-match.vim
  62c751cbf874deb96b0e6ce4f1c65f0a  contrib/vim-gcc-dev/syntax/gcc-rtl.vim
  77a1724cb607ac6e76b6cf20aea0c1ca  contrib/vim-gcc-dev/syntax/gimple.vim
! 57440d4c6da7b6438ebfa203135f381a  contrib/vimrc
  da7aeedeb5a86ee6f5982e559a2d6dcc  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! 3da80e439aa29be575aec41cf9002470  fixincludes/ChangeLog
  6de190723745dc3f75080144dfa2215e  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
*************** b6e3f4950abc6e254b467063381f6473  fixinc
*** 324,340 ****
  4f0cff44689cac00e5599c785c1be9f4  fixincludes/config.h.in
  f63405125ac9ed944ecf9c9bd1f24dff  fixincludes/configure
  a319a505bde6920ddb4832cf41af3488  fixincludes/configure.ac
! 541ba3a63f9359f14ac2b35151ba18db  fixincludes/fixfixes.c
  a316c9d3351e61998fa688dceaf610a3  fixincludes/fixinc.in
  1582ffd94ecc91318eebfb3b81e0bcb1  fixincludes/fixincl.c
  adf245e3714f799eafba40af16be8eb5  fixincludes/fixincl.tpl
! bb41b0e72c13cc48dbbf422a053f1f1b  fixincludes/fixincl.x
  545875b4fe1c26bc3e1befc75b34e9f5  fixincludes/fixlib.c
  620c770139fc32c75b975b614d3156e8  fixincludes/fixlib.h
  5b2c1fd3ef9d44fb6beb1a0d45ddd533  fixincludes/fixopts.c
  ed1415e9dbc8f421fd9288bde0d90ad1  fixincludes/fixtests.c
  51e915676df084b64297d3c4fb0d9c18  fixincludes/genfixes
! 1be7b0f7be966d43d28d793c9400876d  fixincludes/inclhack.def
  dd5ae70d9f725bcaf2a15212782db49a  fixincludes/mkfixinc.sh
  516608ac1550577d47f48809bb512629  fixincludes/mkheaders.in
  3aa0563cd682ee61ecd9eb6eea0b0bce  fixincludes/procopen.c
--- 339,355 ----
  4f0cff44689cac00e5599c785c1be9f4  fixincludes/config.h.in
  f63405125ac9ed944ecf9c9bd1f24dff  fixincludes/configure
  a319a505bde6920ddb4832cf41af3488  fixincludes/configure.ac
! 65a41a71dba4815011eaccf4390aaccd  fixincludes/fixfixes.c
  a316c9d3351e61998fa688dceaf610a3  fixincludes/fixinc.in
  1582ffd94ecc91318eebfb3b81e0bcb1  fixincludes/fixincl.c
  adf245e3714f799eafba40af16be8eb5  fixincludes/fixincl.tpl
! a1de812c4cc02065284d9d122fba91a1  fixincludes/fixincl.x
  545875b4fe1c26bc3e1befc75b34e9f5  fixincludes/fixlib.c
  620c770139fc32c75b975b614d3156e8  fixincludes/fixlib.h
  5b2c1fd3ef9d44fb6beb1a0d45ddd533  fixincludes/fixopts.c
  ed1415e9dbc8f421fd9288bde0d90ad1  fixincludes/fixtests.c
  51e915676df084b64297d3c4fb0d9c18  fixincludes/genfixes
! 6cfd99651c7e35f15f4a7d7df0699a7f  fixincludes/inclhack.def
  dd5ae70d9f725bcaf2a15212782db49a  fixincludes/mkfixinc.sh
  516608ac1550577d47f48809bb512629  fixincludes/mkheaders.in
  3aa0563cd682ee61ecd9eb6eea0b0bce  fixincludes/procopen.c
*************** e1bd28539aceeab13a3028da02f8c4ae  fixinc
*** 383,389 ****
  8183eabf96be2918f3259a587329a813  fixincludes/tests/base/locale.h
  8ac97a3367b9a99503c5b21430993cd4  fixincludes/tests/base/mach-o/dyld.h
  dbbbc9ead412bbd125f56bc509994066  fixincludes/tests/base/mach-o/swap.h
! 8d51a42a0868b670ec996069f42cae57  fixincludes/tests/base/malloc.h
  72c7a983f178e7690e3642c6e8408d67  fixincludes/tests/base/math.h
  d2cbc665e9046f8acb42c1271592be47  fixincludes/tests/base/net/if.h
  98099ff70c675f84c19b58da050f3712  fixincludes/tests/base/net/if_arp.h
--- 398,404 ----
  8183eabf96be2918f3259a587329a813  fixincludes/tests/base/locale.h
  8ac97a3367b9a99503c5b21430993cd4  fixincludes/tests/base/mach-o/dyld.h
  dbbbc9ead412bbd125f56bc509994066  fixincludes/tests/base/mach-o/swap.h
! c48dea510c587eea0b229def965ef77a  fixincludes/tests/base/malloc.h
  72c7a983f178e7690e3642c6e8408d67  fixincludes/tests/base/math.h
  d2cbc665e9046f8acb42c1271592be47  fixincludes/tests/base/net/if.h
  98099ff70c675f84c19b58da050f3712  fixincludes/tests/base/net/if_arp.h
*************** d27b7ab784fa7ada28c0ece4caef530c  fixinc
*** 436,451 ****
  a3052acaa27f90b72ec0e0743adc7189  fixincludes/tests/base/sys/file.h
  be62cf06b596ac0593d2d45d24eebf59  fixincludes/tests/base/sys/int_const.h
  76e93d35aa7cce1d8912c9de39a02e1a  fixincludes/tests/base/sys/int_limits.h
  cd61846311e14917693160c5e60ad2cd  fixincludes/tests/base/sys/machine.h
  d669f7372e28cb610f59526574b4c70a  fixincludes/tests/base/sys/mman.h
  1f8242c9bbd0a869fb3da98d594aa0eb  fixincludes/tests/base/sys/pthread.h
  4ef7922e2fa168e9e4f0dd00e3b67d09  fixincludes/tests/base/sys/signal.h
! a8a221a75b039ffc35cd7b640052e914  fixincludes/tests/base/sys/socket.h
  58c647b7471bba144d18903e6c2d770a  fixincludes/tests/base/sys/spinlock.h
  c1ad7ee1d4fc49d2066b3a98530f0b53  fixincludes/tests/base/sys/stat.h
  bfb0bb27aa39f2c36040bfbe5d32dc17  fixincludes/tests/base/sys/sysmacros.h
  a8fb105bfe4990072ee55164a8ab1b5e  fixincludes/tests/base/sys/time.h
! baa779ef75a7c62a64485fb5178a77b9  fixincludes/tests/base/sys/types.h
  c340da8e13edf5d70941b01670df6228  fixincludes/tests/base/sys/ucontext.h
  52cc64fed944e6760d36f79ae62e014d  fixincludes/tests/base/sys/wait.h
  f558a755efaec3b313d782bba2af6c84  fixincludes/tests/base/testing.h
--- 451,467 ----
  a3052acaa27f90b72ec0e0743adc7189  fixincludes/tests/base/sys/file.h
  be62cf06b596ac0593d2d45d24eebf59  fixincludes/tests/base/sys/int_const.h
  76e93d35aa7cce1d8912c9de39a02e1a  fixincludes/tests/base/sys/int_limits.h
+ 7466bd485c76b7609644d0df814eaf39  fixincludes/tests/base/sys/inttypes.h
  cd61846311e14917693160c5e60ad2cd  fixincludes/tests/base/sys/machine.h
  d669f7372e28cb610f59526574b4c70a  fixincludes/tests/base/sys/mman.h
  1f8242c9bbd0a869fb3da98d594aa0eb  fixincludes/tests/base/sys/pthread.h
  4ef7922e2fa168e9e4f0dd00e3b67d09  fixincludes/tests/base/sys/signal.h
! 87721b41fdfdaff4e808c3110328eb4d  fixincludes/tests/base/sys/socket.h
  58c647b7471bba144d18903e6c2d770a  fixincludes/tests/base/sys/spinlock.h
  c1ad7ee1d4fc49d2066b3a98530f0b53  fixincludes/tests/base/sys/stat.h
  bfb0bb27aa39f2c36040bfbe5d32dc17  fixincludes/tests/base/sys/sysmacros.h
  a8fb105bfe4990072ee55164a8ab1b5e  fixincludes/tests/base/sys/time.h
! f5a3e0b3c38ab605f0a83d661c1bbc65  fixincludes/tests/base/sys/types.h
  c340da8e13edf5d70941b01670df6228  fixincludes/tests/base/sys/ucontext.h
  52cc64fed944e6760d36f79ae62e014d  fixincludes/tests/base/sys/wait.h
  f558a755efaec3b313d782bba2af6c84  fixincludes/tests/base/testing.h
*************** a5e817d35ded04a0fb03999b50c0e89e  fixinc
*** 454,466 ****
  7dc68f10756f3c5df014326605fe9efe  fixincludes/tests/base/tinfo.h
  955462b555900ecd3934223c64e21fa7  fixincludes/tests/base/types/vxTypesBase.h
  8baab8698bb83c6b90ef4091c00ddc1e  fixincludes/tests/base/unistd.h
! 1ce72cc651f747fb639548ef7ebd9343  gcc/ABOUT-GCC-NLS
! d804e59502b5b91d4bec5cdb2539efa0  gcc/BASE-VER
  59530bdf33659b29e73d4adb9f9f6552  gcc/COPYING
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! b3c988df0a13212878d07519d05e7c3e  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
--- 470,482 ----
  7dc68f10756f3c5df014326605fe9efe  fixincludes/tests/base/tinfo.h
  955462b555900ecd3934223c64e21fa7  fixincludes/tests/base/types/vxTypesBase.h
  8baab8698bb83c6b90ef4091c00ddc1e  fixincludes/tests/base/unistd.h
! cdc9afb0404ea932194e623e80f3443f  gcc/ABOUT-GCC-NLS
! fba2f913e141575d1f4f0cc124cd265b  gcc/BASE-VER
  59530bdf33659b29e73d4adb9f9f6552  gcc/COPYING
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 31077091bf10e16f62b9ad5f97a588e2  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
*************** df9c831b1f0d6bde02941728f8f12da3  gcc/Ch
*** 484,489 ****
--- 500,506 ----
  8408f6bd975442a883c83a26f9d7f260  gcc/ChangeLog-2017
  b9daed1dfb9364dc6bd9e4eef70a1681  gcc/ChangeLog-2018
  e70c675c353dff12c134496566b63c83  gcc/ChangeLog-2019
+ a8115a08b5042f830403fa427ce7c243  gcc/ChangeLog-2020
  99fbd9e13a4133855332bf21b0e8fc4c  gcc/ChangeLog.dataflow
  e36816ca56b2bbc8bfc358e0185fc1d3  gcc/ChangeLog.gimple-classes
  fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/ChangeLog.graphite
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 492,509 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 5f1bdaf742d8ed926614ad46224a3a84  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
! c33c506f2d95a3607de3aa55eaa5eb38  gcc/LANGUAGES
! 91d59f7a5aa63491cbbc5357b7b2ab43  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
! b23b4202aae37888126f4e47d40b8fe9  gcc/README.Portability
! 44bcc4f9a8803d3dcc72b217421afef0  gcc/acinclude.m4
! 6879fc308101ea4a52d17fb89e463ec2  gcc/aclocal.m4
! 8e4765971c728343f908e8ecc37cba80  gcc/ada/ChangeLog
  683be0b07dc4f64f118fd5e8ae9cb30d  gcc/ada/ChangeLog-2001
  7aff25efb203be4136b8776cdc812956  gcc/ada/ChangeLog-2002
  cd2379152000f40157d349018fb9364d  gcc/ada/ChangeLog-2003
--- 509,526 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 70de96deecb34b2608d50fc5168ba27c  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
! ac51fd18e066886140aa55eab71477be  gcc/LANGUAGES
! f2666ae22c3f3dcd18203bf784fd2697  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
! a3349a2ff19906d526e15f8845deb002  gcc/README.Portability
! 7a09ff48173d234174dd04f94f3d495c  gcc/acinclude.m4
! 6526979dd900a0b58b7691b478a91fec  gcc/aclocal.m4
! 44f217fa73868135e60b710bafa54039  gcc/ada/ChangeLog
  683be0b07dc4f64f118fd5e8ae9cb30d  gcc/ada/ChangeLog-2001
  7aff25efb203be4136b8776cdc812956  gcc/ada/ChangeLog-2002
  cd2379152000f40157d349018fb9364d  gcc/ada/ChangeLog-2003
*************** cb98e18d4548238540bce953ec52f828  gcc/ad
*** 523,1241 ****
  6d0ffa28bd6b6f7eb48826cc418b1033  gcc/ada/ChangeLog-2017
  e1e4800d4922875de1a9dcfaacf7e1fe  gcc/ada/ChangeLog-2018
  e886b111487071a30a52edb616ff7844  gcc/ada/ChangeLog-2019
  5598cfcecd6612ea21efddabbbe1ecc0  gcc/ada/ChangeLog.ptr
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
  a2eeb36cd2de35ce6a808c67a61edb7e  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
! aa6bb6a8dd525028b440e90ebc6e44dd  gcc/ada/Makefile.rtl
! c637ca4a2cfb622775cc0a3d4dda2d79  gcc/ada/ada_get_targ.adb
! 7158476d6ec9f1793d5a4e9424816307  gcc/ada/adabkend.adb
! 1aac6e8e4b3ba0e7abd9f7bbe98d4923  gcc/ada/adabkend.ads
! 3c0d3c1ad588b2958a4bccefd76b9dc2  gcc/ada/adadecode.c
! 203f49fcfc97aaab68b25217d2e4f3d6  gcc/ada/adadecode.h
! b4f5f4863a0a8d0fa17928fbad19339b  gcc/ada/adaint.c
! 48fa7315f693d9b00664e7c66fbf8b44  gcc/ada/adaint.h
! 382f088ff11fbceca86280e2c69cb5f2  gcc/ada/affinity.c
! 5bc0a8e2482ffc26985f83b3ae9f5414  gcc/ada/ali-util.adb
! 05215466d8c078d3c89cb82fdbdeb268  gcc/ada/ali-util.ads
! a4e26e9fb9bdac6306fed7bf036d8542  gcc/ada/ali.adb
! 15649302a33159903d264d10df3ea4e9  gcc/ada/ali.ads
! c124db389aa3c480eea9f158634b7269  gcc/ada/alloc.ads
! d56991e9640eb9260e051725a9da5ea1  gcc/ada/argv-lynxos178-raven-cert.c
! 7fe643ed9d9569a6e51791e5a90917f6  gcc/ada/argv.c
! 1097810af5b736af5dc1edaff11ad3f0  gcc/ada/aspects.adb
! 576cfc278d1fcfedf0ae1815033ab2de  gcc/ada/aspects.ads
! 3ea248b6dd30c54c1f00e4cf9edcacfe  gcc/ada/atree.adb
! 8a060f8f6666be5cd469278f08d6dd2a  gcc/ada/atree.ads
! d64f7d6cea732f054819acd32328abc3  gcc/ada/atree.h
! b70a4def6cc7396eaf9cb9e1f575f7dc  gcc/ada/aux-io.c
! d0fc0bcb0807e7e4d357c77518a24354  gcc/ada/back_end.adb
! e0ef97c59101319608d32774009d1796  gcc/ada/back_end.ads
! 404e76bf4922635206c917038dee6da4  gcc/ada/bcheck.adb
! ac3ce801fc8c18ee16c3791e9710b7d9  gcc/ada/bcheck.ads
! dfe4cd898cce7fed283ab1293f65f016  gcc/ada/binde.adb
! 56a374d670dd9a4ac79dfeaa30889c47  gcc/ada/binde.ads
! 2fcf00d4adb779b4148f92b792530311  gcc/ada/binderr.adb
! fb6c954edaf9f8262f714cd65eb68513  gcc/ada/binderr.ads
! f5f671b5673a96b4c75266f3556e29ff  gcc/ada/bindgen.adb
! 38b3712e7dfb80585b2d597ec1bf3989  gcc/ada/bindgen.ads
! d843b9557809f1bd88499f1222b501cd  gcc/ada/bindo-augmentors.adb
! a848fbdd1dd7bcba749d91256e0a18d6  gcc/ada/bindo-augmentors.ads
! 0c740a00924b8e8272be123cd103b178  gcc/ada/bindo-builders.adb
! 1d11a43f4b4207944069f2a98a4804d4  gcc/ada/bindo-builders.ads
! af6ecf57ed7c5707bd6f90760e41affa  gcc/ada/bindo-diagnostics.adb
! ff7a0cb598bb9c72815a4833ce504017  gcc/ada/bindo-diagnostics.ads
! 9f13eae207ac356bacd8798b5f681447  gcc/ada/bindo-elaborators.adb
! bb4b7c696be20a825a341a3c3794dddb  gcc/ada/bindo-elaborators.ads
! 4a4c4bc7561418ecea155ff3f7a76d53  gcc/ada/bindo-graphs.adb
! 30da8d95320ca9eb961f6ebcd168e16b  gcc/ada/bindo-graphs.ads
! 7402e1e204f735fff1edcca34cf05983  gcc/ada/bindo-units.adb
! 5b233b0e1dc597978231322405a0732a  gcc/ada/bindo-units.ads
! 046c585ee02e808c734f7df4d34ab155  gcc/ada/bindo-validators.adb
! 04d70249087852fca63a097730b1df86  gcc/ada/bindo-validators.ads
! 7e38605f2c0c3d828825ab1c3f53bd37  gcc/ada/bindo-writers.adb
! 7c2b34f8adbac908ee43ae6e476ce0bc  gcc/ada/bindo-writers.ads
! 4af4e1da7e616143c2dee39fe7ccd0a2  gcc/ada/bindo.adb
! 01321ebae6cc576f99b6cd10781e0565  gcc/ada/bindo.ads
! e8a11853d70f27bde90de61501ad02a9  gcc/ada/bindusg.adb
! d611845cd8c3ca63a4a4b601bcf1dc65  gcc/ada/bindusg.ads
! 60157fc646d32626748666fd67a3245d  gcc/ada/butil.adb
! 8ee8a30d38101468419590c2a110f0b2  gcc/ada/butil.ads
! 8c214a5983f2bba8b387ab7636c78bda  gcc/ada/cal.c
! 9e5a5ce6f6ecdc614a72cce810c24061  gcc/ada/casing.adb
! 70adae1fdd47555283e520ada18c98ed  gcc/ada/casing.ads
! e7fb9b24069c2b4ff41a65ef5935b299  gcc/ada/ceinfo.adb
! e9f06646ce37fdaafae954d17b69f821  gcc/ada/checks.adb
! fb74bf662e163b27acab401f180a11be  gcc/ada/checks.ads
! e3b85e4f9cf80dffb870122364a731c3  gcc/ada/cio.c
! ee60b9e5360eaf41b327220d63ebe904  gcc/ada/clean.adb
! bc5809c358e2b706c57f606c292db08f  gcc/ada/clean.ads
! 10316490ae0266698ebb8caa620f6fb5  gcc/ada/comperr.adb
! 6f20cff938a3a4934608076ed10173c9  gcc/ada/comperr.ads
  fbd23958a6d5c4207e39317e708436ac  gcc/ada/config-lang.in
! 156f67ab4e60799c3cad3bc4d036d1cd  gcc/ada/contracts.adb
! 5828acfd624e063e57442f38bed7006c  gcc/ada/contracts.ads
! edcd2e92cd482ec0e89ffb3e8d3ef342  gcc/ada/csets.adb
! 980dfc352f7176078326c3946f7924e5  gcc/ada/csets.ads
! 05fa358b6dcf17888a032e2179c84041  gcc/ada/csinfo.adb
! 99909575d394e69d9a8e43fb5d416220  gcc/ada/cstand.adb
! 626cb26f3193c8be63838594d28547b6  gcc/ada/cstand.ads
! 96fae8c9e0fea4769fb85365d3f3ea99  gcc/ada/cstreams.c
! 8cd7b4f9085fe186a9af86faad61bd87  gcc/ada/ctrl_c.c
! 6c24454f8284fc8fc384879e972e5894  gcc/ada/debug.adb
! add9dc5a67907fc591057d206d8cbf7a  gcc/ada/debug.ads
! 7006690b17088432f51df8f90f7dc405  gcc/ada/debug_a.adb
! 5d3dfd6f63cd9dd6ef881ad529a9cee3  gcc/ada/debug_a.ads
  80943324aea8ba4501b7450d6ae26ce5  gcc/ada/doc/Makefile
  0725845d1d42dd6a346a89132bcfb5c7  gcc/ada/doc/gnat_rm.rst
  2333c6ac6129e29e589b44fba5bdb9ed  gcc/ada/doc/gnat_rm/about_this_guide.rst
  e183e323bf87ac50a5767106862fef97  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! 2dc9fb8538f28e91a83970d916702732  gcc/ada/doc/gnat_rm/implementation_advice.rst
! ff41854f9e58ee762de29b9f53620822  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
! d00b999849aefabfd4ea3330252cb04a  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
! 84ec0d654bd805533b9145752680addb  gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
! aff6151a746a546a647755e65312018f  gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
  4c8f34f9d69c20b677b885ec36ef9844  gcc/ada/doc/gnat_rm/implementation_of_ada_2012_features.rst
  5bc57d8ad4c60bddfaa4f93ef5c032b3  gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
  8ac597e4a14e2e70cf692a87fa810b0a  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
! 44bd6806b785d75512baa2bd4af9511d  gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
  bb3c8ae8aaf1cbd06bc44135da97d801  gcc/ada/doc/gnat_rm/obsolescent_features.rst
! 077956a3869d9307c05bc7b74bc60e00  gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
  03676be4f649629e37041b8c849c7825  gcc/ada/doc/gnat_rm/specialized_needs_annexes.rst
! 613d8637a0cb336a468e2b567e59f62d  gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
  0c417860d1b59e9ed53a0bb81cbdf579  gcc/ada/doc/gnat_rm/standard_library_routines.rst
! 14f345309fb6f2572d3eb884c858f3f2  gcc/ada/doc/gnat_rm/the_gnat_library.rst
  8b68d207a54ca14c6fe2d33005ece437  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
  ad0b18bc67f8911f5f0d9d2762f19f82  gcc/ada/doc/gnat_ugn.rst
! 81bf766bad810afe083d535fb191d8a6  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 8b16ce25c6913bf0626659a1634fd090  gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
  2e09bbabc6b508ce5d975d5e9e0eff30  gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
  c8c5cebc5a8966a6a0b278b30b2f5738  gcc/ada/doc/gnat_ugn/example_of_binder_output.rst
! 4caa56b7cc895f4e9464d5cf74c3e60c  gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst
! f81c8f0244c953ff1b549bda065f13af  gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
! b6ad314b8369d90d22129f7b2e3f4f59  gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
  996c912f607538e32d01140682b88ff2  gcc/ada/doc/gnat_ugn/inline_assembler.rst
  14aa18b6183d603e39fda045d07397c4  gcc/ada/doc/gnat_ugn/platform_specific_information.rst
  062c912e168e9f97d4b4ae9c766300b8  gcc/ada/doc/gnat_ugn/rtlibrary-structure.png
! e2ba0fac5fbe6c7b8092746ad0d9ddfc  gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
  caf064904358a8a1d6029b136176ff9d  gcc/ada/doc/share/ada_pygments.py
  072a6de1fa85aa471593edbd11db5cc9  gcc/ada/doc/share/conf.py
  c7da61a05156d50b4888cdfaae4241d0  gcc/ada/doc/share/copyright.tex
  9f43695687d6ab9372dfe236a9829279  gcc/ada/doc/share/gnu_free_documentation_license.rst
  f1c71b64e1c84e240c7b5aea7331a32a  gcc/ada/doc/share/latex_elements.py
  90adfcde2feb6d6c090c2b18a1578145  gcc/ada/doc/share/sphinx.sty
! a6c250306ece6b0b26ce90e638feff2d  gcc/ada/einfo.adb
! 5efef6ad770dc467d662ce949e5cbcde  gcc/ada/einfo.ads
! fbe1f82eeb478b7108347f20b2acffe1  gcc/ada/elists.adb
! 38266ac98084eb7b02543b8865a3f3e6  gcc/ada/elists.ads
! b6bfea838bc4fcb619952e4c1acd6936  gcc/ada/elists.h
! 774fe3a784ee2d1383fb54343575bc46  gcc/ada/env.c
! 1b99ff44d1c5458dceede20ddb1b7eb6  gcc/ada/env.h
! 475892f18d6de0e1648d23124b35fab8  gcc/ada/err_vars.ads
! c61558c4f4bb108e2601ac9d15f6fed4  gcc/ada/errno.c
! 552a3ee631f2991c8c0952df053aafbe  gcc/ada/errout.adb
! 21af8284cfc5b2943d0d6c6cecdddccd  gcc/ada/errout.ads
! d2d9b9bfc2114b7e76c97b4adbfc0287  gcc/ada/erroutc.adb
! 3874346b9c9f869e4737d0cba17d9f9d  gcc/ada/erroutc.ads
! 820cf1520f4610f90b90c23073edcc66  gcc/ada/errutil.adb
! 98fc123a3749aff066d40b454ad75ae3  gcc/ada/errutil.ads
! 39f11512620a3542564755e0b9e30d72  gcc/ada/eval_fat.adb
! 021aefad7555e64f8eeddf88fca6baec  gcc/ada/eval_fat.ads
! a5b22a3c65693d8234fcc29bfbb86045  gcc/ada/exit.c
! 2a58a67db0b7d4a09eb7385c1ae215cc  gcc/ada/exp_aggr.adb
! 59abfd3b0ff64f189c43a6586c5c42df  gcc/ada/exp_aggr.ads
! aa3fda80880d9d5bc2297fd736bdc507  gcc/ada/exp_atag.adb
! f261fa5617c87c3ce3e598b02656f622  gcc/ada/exp_atag.ads
! d080f9761c41c9747ef6cccdba694252  gcc/ada/exp_attr.adb
! 5318061baaddb459666be77277ec4637  gcc/ada/exp_attr.ads
! a9c3b0fb5db9737fc7c4d49ce445ef5c  gcc/ada/exp_cg.adb
! 4a26b881a8e33991c84ac37755e194e7  gcc/ada/exp_cg.ads
! 4e2c4f7ed5690d75aaa14f01c50d13f5  gcc/ada/exp_ch10.ads
! faf5e911fb4852627163fb9f6d9724c2  gcc/ada/exp_ch11.adb
! 14ab61b97dbdbdd6d8547b3159a6e4a8  gcc/ada/exp_ch11.ads
! e67bd72f6a69d99bdcccb005951342cf  gcc/ada/exp_ch12.adb
! 1a22deec3915dd41be1865c33b374b55  gcc/ada/exp_ch12.ads
! ed48647521be5b6975713eaadd157c14  gcc/ada/exp_ch13.adb
! 980e7c808347578e745502e037a359d6  gcc/ada/exp_ch13.ads
! 83fe08efcdd70578966c0e4f1c6574c9  gcc/ada/exp_ch2.adb
! 13ecc68fa011300c223c257e1f6a1716  gcc/ada/exp_ch2.ads
! 98059aeeaa325dfdab172500d39c562a  gcc/ada/exp_ch3.adb
! c132fca61bc6b79afb2e5c932bfd3069  gcc/ada/exp_ch3.ads
! 64294a79b6594705b5f2ba531ebd6370  gcc/ada/exp_ch4.adb
! 459aaf0defe628a828c5a3e8ce52b260  gcc/ada/exp_ch4.ads
! 1c47a4940582045effaae0c77ec1a870  gcc/ada/exp_ch5.adb
! cad79a728ef433f8a1a608110bb8668a  gcc/ada/exp_ch5.ads
! d126e16a038dc7c6c73fe72e7bd91379  gcc/ada/exp_ch6.adb
! 51d206d33df9b8c9bba83c930ea15abd  gcc/ada/exp_ch6.ads
! 1dc8e597ae216b38097c81ce9a3bf5b8  gcc/ada/exp_ch7.adb
! 1929a6abe81bc5dca4983b66673e1a37  gcc/ada/exp_ch7.ads
! 7c30e3c8072e1c4e39a58e502fed6a00  gcc/ada/exp_ch8.adb
! 6553532071333c5eb997f353ae26ce7e  gcc/ada/exp_ch8.ads
! 686e262832739fd5c8c08e1fd69d6d6f  gcc/ada/exp_ch9.adb
! 6d3bdf8dcaf38266996ca235109f5896  gcc/ada/exp_ch9.ads
! 0e02c20c6d3e86945bbc0849ead5ff3e  gcc/ada/exp_code.adb
! 5d0909cec6f90f546ef2deac2693d862  gcc/ada/exp_code.ads
! 2702d8545875952aaf358c0d929599f3  gcc/ada/exp_dbug.adb
! 46f3a1b78d2718a014381b977b3395c1  gcc/ada/exp_dbug.ads
! db710b1ce15e8a105b877b377c61b896  gcc/ada/exp_disp.adb
! 3d5296c350b343588522cb63838406b0  gcc/ada/exp_disp.ads
! cf15abb21e2ad90486fa1ca7be143620  gcc/ada/exp_dist.adb
! 77db5d89ab872a55ed507f1fc9d94015  gcc/ada/exp_dist.ads
! 36bc229554a79a5ceb80f171ddc483da  gcc/ada/exp_fixd.adb
! 0293f671db1f4f9db0d7071844c30ced  gcc/ada/exp_fixd.ads
! f96f30893e13027161a3d22ec306f405  gcc/ada/exp_imgv.adb
! ae765bdf0bc97c5990de02433fad2f1d  gcc/ada/exp_imgv.ads
! fb4b1fecfd99793b185cf9435034b58f  gcc/ada/exp_intr.adb
! 613de30764610235a1c1b63b3d8b0793  gcc/ada/exp_intr.ads
! f4f3fb03268c2741e08a24db1c26f16c  gcc/ada/exp_pakd.adb
! 452071cbfd4bd5b8d8310cbb4545a6aa  gcc/ada/exp_pakd.ads
! 11c0f825f80fc71c9d6efd186aae060c  gcc/ada/exp_prag.adb
! ded8b86a20e6aa95b992acd769cb7621  gcc/ada/exp_prag.ads
! 78d55f4e12577d545677ddb3dcd6e587  gcc/ada/exp_sel.adb
! 3058d99b8c4de861c72d81f8e10a38ce  gcc/ada/exp_sel.ads
! b27fc7fb18dc63c58abb345c1c35e82d  gcc/ada/exp_smem.adb
! 97f973146e07eee88b524b6cac1cfdc8  gcc/ada/exp_smem.ads
! ffbd103929e9076932dfd11705654d88  gcc/ada/exp_spark.adb
! 0ac26a452f900becca6ada5425642f37  gcc/ada/exp_spark.ads
! 95267fc9edaf272ed2945de57df23984  gcc/ada/exp_strm.adb
! 327a21a90716e468eb502aca328a27c9  gcc/ada/exp_strm.ads
! 9bc72b5ad6cece53fcbd1cb75a9a3760  gcc/ada/exp_tss.adb
! 0d5f75fb080fa449d417cb5f39de9650  gcc/ada/exp_tss.ads
! 6ef5668337eb547218f528b3074dc8fe  gcc/ada/exp_unst.adb
! 13b66cb6001b44da83ee6f2b28964404  gcc/ada/exp_unst.ads
! 8ffc4de63162c2b77a189c73465f81a2  gcc/ada/exp_util.adb
! dc7fee30a908674797549240ab2c9422  gcc/ada/exp_util.ads
! e7814c7d5a31292d23dd7fc55afc82e9  gcc/ada/expander.adb
! d0ef0a98c8e17e5c08c7e7d4156c4785  gcc/ada/expander.ads
! 4eed1a5e8cb2a9fa5c01bdecfaf84d1d  gcc/ada/expect.c
! bcdbd441749be5caede470be751fbe22  gcc/ada/fe.h
! 4fa780949974d74bc9ac4ae0912325ed  gcc/ada/final.c
! 4b65b9f0b0e00a25903e15240e19932e  gcc/ada/fmap.adb
! cb934cae8e98f5404efd1375e7adb13d  gcc/ada/fmap.ads
! e8970cd55181fc4ce78d99c8f0856285  gcc/ada/fname-sf.adb
! 73cc2a9651b2945d040a4d4235e97203  gcc/ada/fname-sf.ads
! b63b26f9f195b10007d4d0348382a447  gcc/ada/fname-uf.adb
! 2908ab49ce5308abc2c54cd072a4631a  gcc/ada/fname-uf.ads
! b741ad98e35e6ebcae2a1d4be9320160  gcc/ada/fname.adb
! a312f72cf2c70dd6fb07d318a099caf1  gcc/ada/fname.ads
! e574ef8f31475a31d6186709a9e42c1d  gcc/ada/freeze.adb
! 75ad6a0453e571033f6a2dff81b55e76  gcc/ada/freeze.ads
! 4b3829c4b969a13dd716469dda97a5f1  gcc/ada/frontend.adb
! 4f8754489f52ee675d1f27ee3708f304  gcc/ada/frontend.ads
! aab467e078d5bd6779cae53ae14e7261  gcc/ada/gcc-interface/Make-lang.in
! 93aec6c6c66dbc9c3a76d8edce78868f  gcc/ada/gcc-interface/Makefile.in
  35dd49b4643582a2e1e847bc6aea01e1  gcc/ada/gcc-interface/ada-builtin-types.def
  f7677c298cb2f4c70ecf284c7e18cb80  gcc/ada/gcc-interface/ada-builtins.def
  055be3d11fa6ccb53ffe7f8970a005ce  gcc/ada/gcc-interface/ada-tree.def
! 9202dfe2a8e57cfe8351895552ac58ab  gcc/ada/gcc-interface/ada-tree.h
! 51c95420b5900990141d2e5705582197  gcc/ada/gcc-interface/ada.h
  2962facaf5b9ac376e7335599112a520  gcc/ada/gcc-interface/config-lang.in
! 786d39e3fbc38a2dc96917857f9a69ef  gcc/ada/gcc-interface/cuintp.c
! c97691e82d69a68d51d2d12c8e181900  gcc/ada/gcc-interface/decl.c
! c413d4d50e9563859f4d751a4404b705  gcc/ada/gcc-interface/gadaint.h
! d4f780daf2cc65cb4f10a61557048e73  gcc/ada/gcc-interface/gigi.h
! 145be77c79143445142d7570f0853077  gcc/ada/gcc-interface/lang-specs.h
! 58982dff402d599e00b3a7b2af4369b3  gcc/ada/gcc-interface/lang.opt
! 2951f2ed25b3f3e082b18080466e3451  gcc/ada/gcc-interface/misc.c
! 56f626f9ee32eba8c2d478af39425ad5  gcc/ada/gcc-interface/targtyps.c
! 26715071d3d94deffb0a7af14e7ec9c3  gcc/ada/gcc-interface/trans.c
! d3fd943930e7f6508d56b88ca3e55e70  gcc/ada/gcc-interface/utils.c
! 0e98c3f541bd20833a44c42d83ab1cc7  gcc/ada/gcc-interface/utils2.c
! 470e4bdb03236e817253a6279b1c132a  gcc/ada/get_scos.adb
! a4ff0a5a6a4e8da7ac489be6d5b23b00  gcc/ada/get_scos.ads
! 08dfc6da13c2977a8718d1051e0b9a53  gcc/ada/get_targ.adb
! 1273c90382eafe8690b03b7764489e50  gcc/ada/get_targ.ads
! 3ee019591b26d40ebcaf9d0f28a94e0a  gcc/ada/ghost.adb
! a52f7ec31972b1010542f605a2bb7e0f  gcc/ada/ghost.ads
  c39e2928a111b0037c2dc63f22527cb4  gcc/ada/gnat-style.texi
! d0d8567cbd7cdc0215c653c33fc73ddb  gcc/ada/gnat1drv.adb
! c1c83ee785470d46ead10f08716aa422  gcc/ada/gnat1drv.ads
! 8d51fdc9b4279057c26fa5840e4ca65b  gcc/ada/gnat_rm.texi
! aa4d734e589959cd4559e469a704742b  gcc/ada/gnat_ugn.texi
! 9f8f255a2a9befbd5fe31dca175316cd  gcc/ada/gnatbind.adb
! cc29aadae548ff9608dba5961d723e98  gcc/ada/gnatbind.ads
! 46697f99223e4993f925dd275189985a  gcc/ada/gnatchop.adb
! a4487053e754197eda7333a1644926b4  gcc/ada/gnatclean.adb
! 2919117823e09c84e7ca903c32f86355  gcc/ada/gnatcmd.adb
! 778fe71cdefd5c8a5b9791971a3c0fb8  gcc/ada/gnatcmd.ads
! f2ebe05cc979a30e781b178bf6eb35c8  gcc/ada/gnatdll.adb
! 7fab8ff6d7a5bb68b138ab3953348099  gcc/ada/gnatfind.adb
  670cd3e724c6b64c7b322c6e75a0e7c4  gcc/ada/gnathtml.pl
! 75c6298161a176ccd1328481515b17d8  gcc/ada/gnatkr.adb
! 718ad56f3579b0da95b60ac1301d296a  gcc/ada/gnatkr.ads
! a4650431349c074907bb3cf33162af50  gcc/ada/gnatlink.adb
! e03010f7917292a737f1c50bf9979596  gcc/ada/gnatlink.ads
! 561e71120406756c967015c0063193e9  gcc/ada/gnatls.adb
! 5503fb390b2533ebbb894362ca8768be  gcc/ada/gnatls.ads
! c7421d551cb6f4d643bea6fa69a43dd6  gcc/ada/gnatmake.adb
! d68388a517a174d944ea8104c3f63b8d  gcc/ada/gnatmake.ads
! 87b58b389f26119b27cf98dbd0db3ea6  gcc/ada/gnatname.adb
! a35e6564e67b42874106be34fc6f7781  gcc/ada/gnatname.ads
! 6d3f60f4d2de05eddd5468eb3a73b153  gcc/ada/gnatprep.adb
! 1f42a88d1f46c7629d8c3a78865f046b  gcc/ada/gnatprep.ads
! ff20a562d97aa256f66a9bbd2755063c  gcc/ada/gnatvsn.adb
! 3e7c1498b747626211ffc16fe6697864  gcc/ada/gnatvsn.ads
! df675b169107b0bad7c5d958fbaef4e1  gcc/ada/gnatxref.adb
! f94cec5102fde8fbc71e2d934c35a2a8  gcc/ada/gprep.adb
! 252c385820e67e2a51132320aed73bd0  gcc/ada/gprep.ads
! 6375e575756e3c3422a1d0759d078e20  gcc/ada/gsocket.h
! c05ce320d24e3414251f6f54d4b90b62  gcc/ada/hostparm.ads
! efb827fce895a3331ecb2995f07798bf  gcc/ada/impunit.adb
! 25ffc94592ba4bc9d457f3f145603caa  gcc/ada/impunit.ads
! f641e9d658662504307974ce826ecf11  gcc/ada/indepsw-aix.adb
! 4261484311ddd86498e7bd84d2d5ab54  gcc/ada/indepsw-darwin.adb
! 6461756e1fec2112c439acc9178a010d  gcc/ada/indepsw-gnu.adb
! 649c12fe636ff8f40275a800e80ae12c  gcc/ada/indepsw.adb
! ea795157cb71d9cf061c7541e25ae7e9  gcc/ada/indepsw.ads
! dd25f204804a01c72361565c337b4dc5  gcc/ada/init.c
! a36640f564c8f0adc925d070270468af  gcc/ada/initialize.c
! 6a0021573e9f942f7d77dd7bd5754687  gcc/ada/inline.adb
! ad780ece082e797f8450e1ccc7dcf4e7  gcc/ada/inline.ads
! a99f806501c20650e44bc96c9545d250  gcc/ada/itypes.adb
! 0331ca67edb1cc32fedf524a95958633  gcc/ada/itypes.ads
! 1a3ddc75e2cf4faeda2e3d1c65fa22c5  gcc/ada/krunch.adb
! 46bd37e748031ba2295c0ce416bdff0d  gcc/ada/krunch.ads
! d35b9168b64762552558a3f30aa4a743  gcc/ada/layout.adb
! 3cda0eda31ef41abbbe549aec64aad2e  gcc/ada/layout.ads
! f80162d9e74f61e97819fa596541073e  gcc/ada/lib-list.adb
! 39746aa196fb53cfd06a07253a3a4cf1  gcc/ada/lib-load.adb
! 396719c2e6ec7f7f5a5e178b6a15d1c6  gcc/ada/lib-load.ads
! 66e45420d604b7d37637c833228a0e81  gcc/ada/lib-sort.adb
! 2abc58ee586b67ecd8bf4565db64ada5  gcc/ada/lib-util.adb
! b0dc430b7aa43d54d73eea32c2504941  gcc/ada/lib-util.ads
! abd7fd071feaae6824e5350fc32e7dde  gcc/ada/lib-writ.adb
! 131dff3a95e6268f2c4e7c1dcdd60bc6  gcc/ada/lib-writ.ads
! 49bbb9b4d7fb9edf6a32c849d2aa6af8  gcc/ada/lib-xref-spark_specific.adb
! ce6b2c9bac8feafbbf2a5592fd909f45  gcc/ada/lib-xref.adb
! 1796c8798231c90fafe5212a9e41c181  gcc/ada/lib-xref.ads
! 1638bea9af047c1bfc44c8ddfdada5f2  gcc/ada/lib.adb
! 5d89483a522dabd64b4f032dc8c14017  gcc/ada/lib.ads
! 77a30acc5fa66fbb8d8b016910757dd1  gcc/ada/libgnarl/a-astaco.adb
  c13d27ec688dfebb1965a8e9eaf55c2c  gcc/ada/libgnarl/a-astaco.ads
  66247d074eecb4270e7cf01d16e0cfce  gcc/ada/libgnarl/a-dinopr.ads
  c4e9620896065355c1895fb26186b8d2  gcc/ada/libgnarl/a-diroro.ads
  d33d03640fb0fae0a821bbeb1be518f7  gcc/ada/libgnarl/a-disedf.ads
! 4ed8d4b27617d8a7626ae9bba7a9712e  gcc/ada/libgnarl/a-dispat.adb
  380695cb64d70014260c4cbc5dc99e54  gcc/ada/libgnarl/a-dispat.ads
! 8a8c7fb9ef80082804d7422a683ed307  gcc/ada/libgnarl/a-dynpri.adb
  a2784499cf21750d8840eeaf03b9e700  gcc/ada/libgnarl/a-dynpri.ads
! 4c58061a5e42601ef8271d6f3ec7345f  gcc/ada/libgnarl/a-etgrbu.ads
  3e60794a02e6ff3380c0daf20c7c6bc2  gcc/ada/libgnarl/a-exetim.ads
! b35f56a27aeef187b8c6ac26853ae242  gcc/ada/libgnarl/a-exetim__darwin.adb
! 2ddb0d4bf2c71b5c55b94b87ec742a27  gcc/ada/libgnarl/a-exetim__default.ads
! 4c4854cf7d732602a73d467fb754bbc7  gcc/ada/libgnarl/a-exetim__mingw.adb
! 7fb89e13a5a585495d5599afacd4d9ec  gcc/ada/libgnarl/a-exetim__mingw.ads
! cb814f47818e03f39ec3657ce411a0e8  gcc/ada/libgnarl/a-exetim__posix.adb
  8a70e70c5d53efd2ae8de2a025db3217  gcc/ada/libgnarl/a-extiin.ads
  66ba8470ba07e36d23031779e1ebee31  gcc/ada/libgnarl/a-extiti.ads
! 1c3e5ea3434140a37b5f4660c10ed41b  gcc/ada/libgnarl/a-interr.adb
! a5e0607c6ab2ec91ac2bbcc68969d54b  gcc/ada/libgnarl/a-interr.ads
! f7a04eabcb5dc31168dde738e59a3bc3  gcc/ada/libgnarl/a-intnam.ads
! 5ac444dbb57af30739e1e04b98fac6ec  gcc/ada/libgnarl/a-intnam__aix.ads
! fe48cb309d3ab670ab31d0c8c74e9dcf  gcc/ada/libgnarl/a-intnam__darwin.ads
! c10460b1caa329e5179b61218d196da6  gcc/ada/libgnarl/a-intnam__dragonfly.ads
! abed9ab842f1d1f20bc26669f75c9394  gcc/ada/libgnarl/a-intnam__dummy.ads
! 0737105299a71146e53e86e8ab70bf1c  gcc/ada/libgnarl/a-intnam__freebsd.ads
! 92a44fd0a3b36c16a666477e6dff2562  gcc/ada/libgnarl/a-intnam__hpux.ads
! 3c45eca46de108ab02b2f86bf19428ec  gcc/ada/libgnarl/a-intnam__linux.ads
! 0b38d4a2679e79e42104a97e369a738e  gcc/ada/libgnarl/a-intnam__lynxos.ads
! c10294a086c668e6a713d327eaef1a10  gcc/ada/libgnarl/a-intnam__mingw.ads
! 489746c3c6d828c3c308d453a9c9eeaa  gcc/ada/libgnarl/a-intnam__qnx.ads
! 0c7d7eba0d23d40aaa91f973b4758eb1  gcc/ada/libgnarl/a-intnam__rtems.ads
! 5d162cfefa43425a67e56720e6ee7de8  gcc/ada/libgnarl/a-intnam__solaris.ads
! 07a1dd4d4d9c6e1bb8c8886585eec9c0  gcc/ada/libgnarl/a-intnam__vxworks.ads
! 0441d5f40c445726f3705c1a7999c8c2  gcc/ada/libgnarl/a-reatim.adb
! 13a97774577c58e1007ee05b9cc6a64d  gcc/ada/libgnarl/a-reatim.ads
! 9b51f44770851c03333b7a22c9321a72  gcc/ada/libgnarl/a-retide.adb
! 15a52fc816196e75bc1b027b1815b726  gcc/ada/libgnarl/a-retide.ads
! 579857c997fde89a81c8647844a895b6  gcc/ada/libgnarl/a-rttiev.adb
! bd63e1fc248c77ab8d6005aab17e0deb  gcc/ada/libgnarl/a-rttiev.ads
  c04bb8934366f43faa60d914e7ebea7a  gcc/ada/libgnarl/a-stcoed.ads
! 97e78bb3eb495807d2a5c2c49addd06a  gcc/ada/libgnarl/a-synbar.adb
! 795c7f57b58f19ce9947c5dc8da173f5  gcc/ada/libgnarl/a-synbar.ads
! 48e2f2067140b3de029a46a7c0c2ffca  gcc/ada/libgnarl/a-synbar__posix.adb
! 1ae6553477f0f71bc6f713ba964f11ff  gcc/ada/libgnarl/a-synbar__posix.ads
! a5b434a722702877e8adeb876ce25427  gcc/ada/libgnarl/a-sytaco.adb
! 62e10c9c9bb030eb10ad0da6f0cefa24  gcc/ada/libgnarl/a-sytaco.ads
! 24062bef280388f31b41578f25df8a94  gcc/ada/libgnarl/a-tasatt.adb
! 94f13af56a3c955f2f95f3d0cd6d50b7  gcc/ada/libgnarl/a-tasatt.ads
! dfbfd007775602fb94314104feeb1ed7  gcc/ada/libgnarl/a-taside.adb
! 7a4799e08473d6af2b009deb92780c7f  gcc/ada/libgnarl/a-taside.ads
! 901060e57e947674e0370a132b62c0f4  gcc/ada/libgnarl/a-taster.adb
  281fc9a014bf9c5a3677f1dd38cc9d5d  gcc/ada/libgnarl/a-taster.ads
! f9db3047ea8893f19a550c9d6d985da1  gcc/ada/libgnarl/g-boubuf.adb
! 5a473cbd6a65e23ab5cdb18b04257f73  gcc/ada/libgnarl/g-boubuf.ads
! c67a534865167159c4da85333383d7ef  gcc/ada/libgnarl/g-boumai.ads
! c5c0258dcc3da325b8b6059feda4ab8b  gcc/ada/libgnarl/g-semaph.adb
! 9bef6552ce694cd26d60848298d5dc3d  gcc/ada/libgnarl/g-semaph.ads
! 4a3cd4095c76d7355572917f2f001a5d  gcc/ada/libgnarl/g-signal.adb
! 4f9c099360b03005c2a4d89e2e4d9042  gcc/ada/libgnarl/g-signal.ads
! b43b2a149d7a9db6dcff2d2a32539320  gcc/ada/libgnarl/g-tastus.ads
! b3ad89ef82b538edfe7d2ce2f8c00d41  gcc/ada/libgnarl/g-thread.adb
! f27bddb0e5c98030d3137350d661b2d9  gcc/ada/libgnarl/g-thread.ads
! 909dd8b4828386e5a76eb76067991bc8  gcc/ada/libgnarl/i-vxinco.adb
! 361630cc7a451912b2e4ef0094b1596a  gcc/ada/libgnarl/i-vxinco.ads
! bb2a3a812092c8e7287bcbb4760b9697  gcc/ada/libgnarl/s-inmaop.ads
! e856e07fc67a08430453d4a97dbfdddc  gcc/ada/libgnarl/s-inmaop__dummy.adb
! 90523d6cda1cb2361d501184a76d5ced  gcc/ada/libgnarl/s-inmaop__posix.adb
! 3197eca5a20b23f5da90085e4874fc2d  gcc/ada/libgnarl/s-inmaop__vxworks.adb
! 6d83dd0fb8a7af8d631369a78280a6d1  gcc/ada/libgnarl/s-interr.adb
! 2582b4abb59b4ef829672c76371ee19a  gcc/ada/libgnarl/s-interr.ads
! e26c9aa44e183c67d53fadecbbcc3f99  gcc/ada/libgnarl/s-interr__dummy.adb
! 58b893415a363d230627921f9f9d9380  gcc/ada/libgnarl/s-interr__hwint.adb
! 27dd28b69ca9601028817e2b0d385808  gcc/ada/libgnarl/s-interr__sigaction.adb
! c1e40bdb31699af24340330cc3409da6  gcc/ada/libgnarl/s-interr__vxworks.adb
! a65c0690b59a8483079b1ce2eac86fc0  gcc/ada/libgnarl/s-intman.ads
! 59d59629d456628c31210a83dd7ad907  gcc/ada/libgnarl/s-intman__android.adb
! 5b78c9bb8f6b526ffef53713b75094aa  gcc/ada/libgnarl/s-intman__dummy.adb
! 5dc838f87bc860ad2dc8695ec3daf377  gcc/ada/libgnarl/s-intman__lynxos.adb
! 86e00c6ac53d3012c0bc2baaeb8df171  gcc/ada/libgnarl/s-intman__mingw.adb
! 179a4985213ae0ec0a9fb808fc24ef73  gcc/ada/libgnarl/s-intman__posix.adb
! b89035369a95b1e44ec3d5e6521de980  gcc/ada/libgnarl/s-intman__qnx.adb
! 619ba9c3867e2c19246512ae37b388cc  gcc/ada/libgnarl/s-intman__solaris.adb
! f954147d560781bf08ab29e54e0a31f3  gcc/ada/libgnarl/s-intman__susv3.adb
! 8f87c18e3aa800b0fd0498bf25c5a1e6  gcc/ada/libgnarl/s-intman__vxworks.adb
! b7f537f79a27f1e2f04c43d6dece4d87  gcc/ada/libgnarl/s-intman__vxworks.ads
! c534bec7bd1fcc5bfd8b5c3558d19772  gcc/ada/libgnarl/s-linux.ads
! 38c2becb0b8f9ac2a3dd65918fb1078d  gcc/ada/libgnarl/s-linux__alpha.ads
! fd6eb8ff13e6cd349996791ed9402050  gcc/ada/libgnarl/s-linux__android.ads
! 6ad45d97cd26dfafa19129b5f3207d97  gcc/ada/libgnarl/s-linux__hppa.ads
! 7065dd43d4cad5ff28995bc0d5502022  gcc/ada/libgnarl/s-linux__mips.ads
! 8431d4b242d7cc227633b06adbb05175  gcc/ada/libgnarl/s-linux__riscv.ads
! 7e22849acea17b5ae9a69c06b7a10a36  gcc/ada/libgnarl/s-linux__sparc.ads
! 3439ef9f5e484e6a58c48536c9175ed9  gcc/ada/libgnarl/s-linux__x32.ads
! c9ce21c45dcf63dae655c15f116c0e5a  gcc/ada/libgnarl/s-mudido.adb
  e6304ab8465d5bc7fadbcaf1933a0980  gcc/ada/libgnarl/s-mudido.ads
! 37d3ee799b7f272352fa43c32cf4b0e9  gcc/ada/libgnarl/s-mudido__affinity.adb
! 9be1d2837a2c87fdf1b670cc27ab00e2  gcc/ada/libgnarl/s-osinte__aix.adb
! 88c9785c35b0a0ef80e06802e3505145  gcc/ada/libgnarl/s-osinte__aix.ads
! 5535379d3b05664188bc3ad379a21ac0  gcc/ada/libgnarl/s-osinte__android.adb
! 4e94b6e56e5a2470d653a9097ea5af20  gcc/ada/libgnarl/s-osinte__android.ads
! 8af00dc25a2fd4cd1f5d2d86ae0cfafb  gcc/ada/libgnarl/s-osinte__darwin.adb
! 4c843b1835796fb631ce7a0c5a9254bf  gcc/ada/libgnarl/s-osinte__darwin.ads
! 54d633d48152bd29211353a7f8b31d8e  gcc/ada/libgnarl/s-osinte__dragonfly.adb
! fe2a3afa0ac255a10c47eb167e7df496  gcc/ada/libgnarl/s-osinte__dragonfly.ads
! c0dc19f2e759eb3b84a6a35c41a9542c  gcc/ada/libgnarl/s-osinte__dummy.ads
! 2b1f9b10f2df5cd065a294f0d1ec3ee4  gcc/ada/libgnarl/s-osinte__freebsd.adb
! c2e67c60760605ebb18faac11692746b  gcc/ada/libgnarl/s-osinte__freebsd.ads
! 5367e9a8ea38279a967aa815648e3251  gcc/ada/libgnarl/s-osinte__gnu.adb
! 7b3c1eac57e94e58c3947c907d0ba6d5  gcc/ada/libgnarl/s-osinte__gnu.ads
! 60d9d04faae9cc11963d2249a420c6a3  gcc/ada/libgnarl/s-osinte__hpux-dce.adb
! 73ff89fb8d2062d7df5e3d3b1f8d5ce5  gcc/ada/libgnarl/s-osinte__hpux-dce.ads
! fb65d8f7b40bd840dc452f504bf7b129  gcc/ada/libgnarl/s-osinte__hpux.ads
! 7b04ddd601baac422273106683fab3b9  gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads
! e36291bdfb76557643e83bbb691d683c  gcc/ada/libgnarl/s-osinte__linux.ads
! 1812b3978a140b60b39401abcb7a6628  gcc/ada/libgnarl/s-osinte__lynxos178.adb
! 126d1d15a9d38eb993235b8514d59e7c  gcc/ada/libgnarl/s-osinte__lynxos178e.ads
! 5d744389dd752ec02f71ec09f556ba8e  gcc/ada/libgnarl/s-osinte__mingw.ads
! 32ccf9f0b5e5a07c71069a614f87d0ed  gcc/ada/libgnarl/s-osinte__posix.adb
! 99f702a58892b34ef1c72b1ece9f0397  gcc/ada/libgnarl/s-osinte__qnx.adb
! 349d13acb5ca5db8974ee0785e84c394  gcc/ada/libgnarl/s-osinte__qnx.ads
! 74e930a70c51d79c442bea460fe59234  gcc/ada/libgnarl/s-osinte__rtems.adb
! ad83570d227d1072d88c0613cf8c488f  gcc/ada/libgnarl/s-osinte__rtems.ads
! 6ade755ffd709b71a9c6871d879664c7  gcc/ada/libgnarl/s-osinte__solaris.adb
! 8db3735ee325d6d2a9a98efea0372498  gcc/ada/libgnarl/s-osinte__solaris.ads
! d64ce9d7c5957b55ba9096acc0189331  gcc/ada/libgnarl/s-osinte__vxworks.adb
! 6cba242230ffd45069e18e8a15dec680  gcc/ada/libgnarl/s-osinte__vxworks.ads
! 7940c42c6d97990fa4a33b593beeedc4  gcc/ada/libgnarl/s-osinte__x32.adb
! 5a1dc10be7e31075ecd1c10c6cd90fd3  gcc/ada/libgnarl/s-proinf.adb
! 7d1471d9326fccef7597d8c94369c8d6  gcc/ada/libgnarl/s-proinf.ads
! abbd84a73170affd33a61d887cb1bb6a  gcc/ada/libgnarl/s-qnx.ads
! 0fb8f00a79731f5c403fb33231dfb252  gcc/ada/libgnarl/s-solita.adb
! 1a2ac93aa39049efd44defbdd89a387f  gcc/ada/libgnarl/s-solita.ads
! 2c8a27f26b8787fda52fbce0bbc8dd05  gcc/ada/libgnarl/s-stusta.adb
! 2f67a9a040bdf90cce982db1ec5fd791  gcc/ada/libgnarl/s-stusta.ads
! 92bffb94895d01668d6cfc1043459a4d  gcc/ada/libgnarl/s-taasde.adb
! 72800380a264a861250c84ed9f2d3d30  gcc/ada/libgnarl/s-taasde.ads
! c113b21975b91ff84aa57309b8c11619  gcc/ada/libgnarl/s-tadeca.adb
! 83cae33a7640044d9278b4eb1e22a095  gcc/ada/libgnarl/s-tadeca.ads
! e5ec4495f221778f770813ebe923af4d  gcc/ada/libgnarl/s-tadert.adb
! b7dfc61949fa8d9a727b67ef44a70a8a  gcc/ada/libgnarl/s-tadert.ads
! c0298ec8081934238a330716477795e3  gcc/ada/libgnarl/s-taenca.adb
! 117b33d77b2e9a0480acfafc74907281  gcc/ada/libgnarl/s-taenca.ads
! 1ace8bbef3845d0034a1d3f5fc0f641e  gcc/ada/libgnarl/s-taprob.adb
! b0a9a42652fdd67b96ab14be50c303f6  gcc/ada/libgnarl/s-taprob.ads
! 33c3babf057451e6c4d6a17e6d8e8267  gcc/ada/libgnarl/s-taprop.ads
! 661a26b5dfb22e86824966b1b24fb84f  gcc/ada/libgnarl/s-taprop__dummy.adb
! 00cd325d243b305672cbe93111a62420  gcc/ada/libgnarl/s-taprop__hpux-dce.adb
! dad22cac0d2c02a1244964ba1f053b29  gcc/ada/libgnarl/s-taprop__linux.adb
! 163ff35f37c9670ec8bd90416ce853ca  gcc/ada/libgnarl/s-taprop__mingw.adb
! 5797ade0a5645797de4d67ee5132c919  gcc/ada/libgnarl/s-taprop__posix.adb
! d6a4091753ecd129c3b314005a21e500  gcc/ada/libgnarl/s-taprop__qnx.adb
! ae5073ec268f421d8d57192987baa52a  gcc/ada/libgnarl/s-taprop__solaris.adb
! 8de9fcc8dc167fee0b2e59c59c4d3b90  gcc/ada/libgnarl/s-taprop__vxworks.adb
! c68d163854cdabe862d795f87caf1722  gcc/ada/libgnarl/s-tarest.adb
! f5a6a93df839bc36a905151bfee82c1f  gcc/ada/libgnarl/s-tarest.ads
! eb3aba73b03e895eb5faada43028841c  gcc/ada/libgnarl/s-tasdeb.adb
! d9db22ee4343080b752171fcca2e43d7  gcc/ada/libgnarl/s-tasdeb.ads
! 4cc28e8eced32d05e10b673ab00d0462  gcc/ada/libgnarl/s-tasinf.adb
! 68b847ad47506e65ae9e42ba0ef72d89  gcc/ada/libgnarl/s-tasinf.ads
! ebf1c0449c1d2608e1c7f43e4b24e08b  gcc/ada/libgnarl/s-tasinf__linux.adb
! d684c4fdff45f9fb9d06ef521808375b  gcc/ada/libgnarl/s-tasinf__linux.ads
! 7a48e9cd8e77687a432cc4f4b4f3eea5  gcc/ada/libgnarl/s-tasinf__mingw.adb
! 914e70eada55f306532133f0d354badd  gcc/ada/libgnarl/s-tasinf__mingw.ads
! 51733b227881d933695c582880bd635a  gcc/ada/libgnarl/s-tasinf__solaris.adb
! 7f4f72f6d52e27d64d91d5da4d0d7a42  gcc/ada/libgnarl/s-tasinf__solaris.ads
! 55d7055c5b3f9d3b0265d994402167ba  gcc/ada/libgnarl/s-tasinf__vxworks.ads
! 95a41487e4494258ce4e72b4b9a12e40  gcc/ada/libgnarl/s-tasini.adb
! 89473ead9db6f47ccf4246551f13c173  gcc/ada/libgnarl/s-tasini.ads
! b34a6c596063fa32045e9fc1e11641e2  gcc/ada/libgnarl/s-taskin.adb
! 970f52b1c162d9df6f31fd789aebc028  gcc/ada/libgnarl/s-taskin.ads
! 73deb4cd915eae280c67c550a9434d61  gcc/ada/libgnarl/s-taspri__dummy.ads
! f0f972d0d423a0e5766db0b1adb7a2da  gcc/ada/libgnarl/s-taspri__hpux-dce.ads
! 05c6ec2f6677ad16c561b9dcbd9c5578  gcc/ada/libgnarl/s-taspri__lynxos.ads
! 527e9bbac347d963dbbf8e8e513124de  gcc/ada/libgnarl/s-taspri__mingw.ads
! d5f113a536d54230628620e88f11a1a1  gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads
! 8b9863d0a5a2205d89dd671a3f724774  gcc/ada/libgnarl/s-taspri__posix.ads
! 0595f233578b85fd863649dcbaf3e1bb  gcc/ada/libgnarl/s-taspri__solaris.ads
! df7d43f65d42c519a570b7442b2c2e35  gcc/ada/libgnarl/s-taspri__vxworks.ads
! f7a79f07bc4938f5d07928cf3e4a7ec6  gcc/ada/libgnarl/s-tasque.adb
! ef9abab7f17350acdddb6e0ee8ed1e2e  gcc/ada/libgnarl/s-tasque.ads
! 33f49d2dc8bc2beca59ea9710d94bead  gcc/ada/libgnarl/s-tasren.adb
! 06a1e4c0d6b628ce77131ac337e79b98  gcc/ada/libgnarl/s-tasren.ads
! 803c11cfa376442ceff83600663923c7  gcc/ada/libgnarl/s-tasres.ads
! d6900d889eea0c90ec45bc1cd3c2472d  gcc/ada/libgnarl/s-tassta.adb
! 80965c4a02d479f2bd420d972755225e  gcc/ada/libgnarl/s-tassta.ads
! 6c29f3bd6b026f25d54bcf02b354c071  gcc/ada/libgnarl/s-tasuti.adb
! 24d6a2878a62d916aa05e4d786e8fb77  gcc/ada/libgnarl/s-tasuti.ads
! bc687abd33f43df85d43371c20cae6d9  gcc/ada/libgnarl/s-tataat.adb
! f6f4db8f1e34ea41294ca6d61057317f  gcc/ada/libgnarl/s-tataat.ads
! 4092018fa6b1373d8a7fedb59ea88695  gcc/ada/libgnarl/s-tpinop.adb
! 3a88382b7ef916423a792e39ae891937  gcc/ada/libgnarl/s-tpinop.ads
! e06cad25abab11e864e50fcabf06db1d  gcc/ada/libgnarl/s-tpoaal.adb
! f1f6da6b89b0a59b776a95e73e70770d  gcc/ada/libgnarl/s-tpoben.adb
! 6ee1ab1f743d0bb7c57e4b961cd4f22e  gcc/ada/libgnarl/s-tpoben.ads
! ace6245f2c357ecc74bcc5fbb00ba3e9  gcc/ada/libgnarl/s-tpobmu.adb
! 951e8c87cd1545d31c05c39ac25e0829  gcc/ada/libgnarl/s-tpobmu.ads
! 6a97f77bd128d6e9b4dbe89bb3aa7d90  gcc/ada/libgnarl/s-tpobop.adb
! 6e7761e34d18bf933eab5e4ffdb6126b  gcc/ada/libgnarl/s-tpobop.ads
! 19ec253c9ffbbcf9d5a06af76c76d8ab  gcc/ada/libgnarl/s-tpopmo.adb
! 56b45a30fcf50c786bfc85f62deda2f1  gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb
! a859c4f449e60b49437abd6c69a4e84f  gcc/ada/libgnarl/s-tpopsp__posix.adb
! e4299d559ce1e6cf5c076c7bf28a6234  gcc/ada/libgnarl/s-tpopsp__solaris.adb
! 649ce04b486253d9b0949fcedae0f622  gcc/ada/libgnarl/s-tpopsp__tls.adb
! 3823a848325c07ecfc03d47ebc3c46d9  gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb
! 0da56420eee86500f0ad8d974e2e5e03  gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb
! e0e93d8b3409ca81b5bcf985845e7a25  gcc/ada/libgnarl/s-tpopsp__vxworks.adb
! 08ee64b1f557d894d100bd1c1ec47f7d  gcc/ada/libgnarl/s-tporft.adb
! 395ef56a4be867f92c2a0f93043492c8  gcc/ada/libgnarl/s-tposen.adb
! a379e4b6b4633a844d70e75218365f15  gcc/ada/libgnarl/s-tposen.ads
! 248279cc2e562801c5f8a924791ce595  gcc/ada/libgnarl/s-vxwext.adb
! 8ded307165bff0253a53e8161433bd12  gcc/ada/libgnarl/s-vxwext.ads
! ec9eb8c928d45c6b2c0a780572e554a9  gcc/ada/libgnarl/s-vxwext__kernel-smp.adb
! 7198f0a85df78bb0b8498e58ee4d4a84  gcc/ada/libgnarl/s-vxwext__kernel.adb
! b5d26acc71eeef29c5ef407e5babf1a4  gcc/ada/libgnarl/s-vxwext__kernel.ads
! 727f04bbf671b382cef01c77394775c4  gcc/ada/libgnarl/s-vxwext__noints.adb
! 5a94e94de12109450b25ea8f3810729b  gcc/ada/libgnarl/s-vxwext__rtp-smp.adb
! 67829ac742ec9652d1e0358f91831d1f  gcc/ada/libgnarl/s-vxwext__rtp.adb
! 6c62466f49ca7d35d1025117363b73cb  gcc/ada/libgnarl/s-vxwext__rtp.ads
! 079f2a297dd583b5808682fc059ef998  gcc/ada/libgnarl/s-vxwext__vthreads.ads
! 30e3978cde2049375f97f9a5e740705f  gcc/ada/libgnarl/s-vxwork__aarch64.ads
! 89fbcf16a2cab5dd701c94594c8a02ce  gcc/ada/libgnarl/s-vxwork__arm.ads
! 4d796c3a2a25ad1c820a585c1b08b72e  gcc/ada/libgnarl/s-vxwork__ppc.ads
! 52e3504f5b805294c39f9e117a0431a4  gcc/ada/libgnarl/s-vxwork__x86.ads
! 76420d25409a71a6d76f5daa826ea429  gcc/ada/libgnarl/thread.c
! 3155899893aedaa455df2c0ecf289e76  gcc/ada/libgnat/a-assert.adb
! 3571fcaf18b7535c64cde30e7a23d0bd  gcc/ada/libgnat/a-assert.ads
! 537c6b6a26a2eeff89d96bdf7877129b  gcc/ada/libgnat/a-btgbso.adb
! aee1d106ed5074b4a9190a61db5ef385  gcc/ada/libgnat/a-btgbso.ads
! 0f2146f07de8a19d1c0918a183dfba36  gcc/ada/libgnat/a-calari.adb
! 9f8289a7a98f1ab10014900263b3d631  gcc/ada/libgnat/a-calari.ads
! 51142d5d57afb79b139dc797a171c2d0  gcc/ada/libgnat/a-calcon.adb
! af19ea21a438d41e78bb565e4cdad2ac  gcc/ada/libgnat/a-calcon.ads
! 17be15db68b53813ef0f2f936cd8679e  gcc/ada/libgnat/a-caldel.adb
! 5b66617ee3cbfca57f80afd08344bec3  gcc/ada/libgnat/a-caldel.ads
! a68ee09a449cbfe432db771dee5c7980  gcc/ada/libgnat/a-calend.adb
! 3be50d9da0240927717219b63d43bed6  gcc/ada/libgnat/a-calend.ads
! 4de1d090a8dcc7a0f8c7e1b6363a7afe  gcc/ada/libgnat/a-calfor.adb
! 218fb1820a3e5878b84050e4483ceb1e  gcc/ada/libgnat/a-calfor.ads
! c7363f49134766453e4033038c42e4de  gcc/ada/libgnat/a-catizo.adb
! 521308dc456e94f0a96a6e4d2161a6cf  gcc/ada/libgnat/a-catizo.ads
! ed94a08390bc87c33127d30e8fcb542d  gcc/ada/libgnat/a-cbdlli.adb
! b8b17f4c2f9bf2c3fe9014ae0dea7da3  gcc/ada/libgnat/a-cbdlli.ads
! 81a62f8e7b8001fa2ce36aebc11a2977  gcc/ada/libgnat/a-cbhama.adb
! e45eaf726aae7a2ff8ced2a1bbb875cc  gcc/ada/libgnat/a-cbhama.ads
! 580615cc15f554419dae69899fe397b9  gcc/ada/libgnat/a-cbhase.adb
! 5682eed55d6267a8a3e1728a30e4671f  gcc/ada/libgnat/a-cbhase.ads
! a8c1162f15850752acc4433b02db4e36  gcc/ada/libgnat/a-cbmutr.adb
! d20d25992c5d08533f1601c7c294eaad  gcc/ada/libgnat/a-cbmutr.ads
! 2e6b3ddc6fd9b7efcfa1deb098f817e0  gcc/ada/libgnat/a-cborma.adb
! ec2d698876ef480465b743e0dd143159  gcc/ada/libgnat/a-cborma.ads
! 6fc7276887c2a965a82a70b06a0e7834  gcc/ada/libgnat/a-cborse.adb
! 5ce0562b39b9fac919d6358623c09021  gcc/ada/libgnat/a-cborse.ads
! 8fbddb860ad77402ffc5960f9028f863  gcc/ada/libgnat/a-cbprqu.adb
! 1ec3e6fd0cb7564822d5fb91c035424f  gcc/ada/libgnat/a-cbprqu.ads
! f49783f8e1888bc813fdaa86ceea63c9  gcc/ada/libgnat/a-cbsyqu.adb
! 1f7d5e3bda74afd0f8c86cf69a41f0ac  gcc/ada/libgnat/a-cbsyqu.ads
! 591dc2f3e1b4bc570dd73f89081699be  gcc/ada/libgnat/a-cdlili.adb
! 523a2e81792e191fab570f64dba92db4  gcc/ada/libgnat/a-cdlili.ads
! a94719fd59113c978ed26db93232b489  gcc/ada/libgnat/a-cfdlli.adb
! a752fb150e952078c22dcfdf24063c66  gcc/ada/libgnat/a-cfdlli.ads
! 0d5669d81a00beee786046274a353835  gcc/ada/libgnat/a-cfhama.adb
! 0cacec42640a7274eddc34214922367e  gcc/ada/libgnat/a-cfhama.ads
! c38ffcb33983f562eb73eb2d443d40c8  gcc/ada/libgnat/a-cfhase.adb
! 95e9890e2f3cbfdd72a91be651b032a7  gcc/ada/libgnat/a-cfhase.ads
! e986dd6db95bcb7ba32dbd256683d79f  gcc/ada/libgnat/a-cfinve.adb
! d03aea9bced5e9c65b6cbca0621bcddb  gcc/ada/libgnat/a-cfinve.ads
! b857bc89ef5db7a5bfdbc1e682ce477e  gcc/ada/libgnat/a-cforma.adb
! 4c3e27847de8be84d9d166f9cb449dbd  gcc/ada/libgnat/a-cforma.ads
! 49c58498653253e71fa8aed972efb412  gcc/ada/libgnat/a-cforse.adb
! a8f51851df6c19db3773cfe02daedb73  gcc/ada/libgnat/a-cforse.ads
! fd21719c6c4b7567f7f4a5afc73d9605  gcc/ada/libgnat/a-cgaaso.adb
! 34ca7b39572ecef110e2f5187d6d3cc3  gcc/ada/libgnat/a-cgaaso.ads
! 8c915a8bf8a71d0d9a4cb24fdeef0258  gcc/ada/libgnat/a-cgarso.adb
  ef7fab6c5e61256ac64c9dae1dd27960  gcc/ada/libgnat/a-cgarso.ads
! 2af4c31ba8795a9ea1b649847f607ba6  gcc/ada/libgnat/a-cgcaso.adb
  68226484befc5e389cd3dafaab608090  gcc/ada/libgnat/a-cgcaso.ads
! 18b4ce90bcdfc3e536e40fdab8b2b21a  gcc/ada/libgnat/a-chacon.adb
! 17438dc3ed2a4ef5bb070ee7f8430a0b  gcc/ada/libgnat/a-chacon.ads
! f27ba73952d06caf8be2ef04194ea4db  gcc/ada/libgnat/a-chahan.adb
! b9dc7f86a438607183c283caebbebdd1  gcc/ada/libgnat/a-chahan.ads
  00b37c98f6f96d2b5499c1f98cb503f0  gcc/ada/libgnat/a-charac.ads
  afa2e1575497c9ce53cef7122846df58  gcc/ada/libgnat/a-chlat1.ads
! 59da57b7e7b6cc7d55b8d21b85d06e33  gcc/ada/libgnat/a-chlat9.ads
! 958d8900184dc816ce4e6cf74530fe8c  gcc/ada/libgnat/a-chtgbk.adb
! 66d720beced4ca3dda7ad8864386b732  gcc/ada/libgnat/a-chtgbk.ads
! 3ec1ac2786f9a0a957c5244dca67955f  gcc/ada/libgnat/a-chtgbo.adb
! cb0b860513c075dae46bc6903d8552eb  gcc/ada/libgnat/a-chtgbo.ads
! 22d1db780eeb11eb99d76549bb018376  gcc/ada/libgnat/a-chtgke.adb
! 629811fdf02abd2d26d58165e4d419ad  gcc/ada/libgnat/a-chtgke.ads
! 6d6a10b398ca2e7df9a6dbaa36694031  gcc/ada/libgnat/a-chtgop.adb
! 0db19aa84db05bf9e8db4cf56b050a9b  gcc/ada/libgnat/a-chtgop.ads
! f31df23ef5aacf2b923945e606eb191a  gcc/ada/libgnat/a-chzla1.ads
! 5b6d03e138f1cc0afc408050649f7878  gcc/ada/libgnat/a-chzla9.ads
! 6a52cd98f71ed3f9bddac467e2b67b0f  gcc/ada/libgnat/a-cidlli.adb
! bdcafd8ebf3f7b130bb21feec4afd4b7  gcc/ada/libgnat/a-cidlli.ads
! 8a999e4d01cc1e7007ea04593e5ef7fc  gcc/ada/libgnat/a-cihama.adb
! 4a8cb9b0e76e02b77ab75ba0daab8f52  gcc/ada/libgnat/a-cihama.ads
! c38ae9d11028ff87b0e4578edecf258f  gcc/ada/libgnat/a-cihase.adb
! 849ccd6b816a6af9be367e534fa10fd8  gcc/ada/libgnat/a-cihase.ads
! 09697a465db5be55c708c9210ac47dc2  gcc/ada/libgnat/a-cimutr.adb
! 3d73f1fb133c2bb1157d380c2700d9ed  gcc/ada/libgnat/a-cimutr.ads
! f953ca0e30ecb499d04065efc49986f3  gcc/ada/libgnat/a-ciorma.adb
! 5d60daabb7cb0a91aa4217ac54089bb6  gcc/ada/libgnat/a-ciorma.ads
! 128e777b7a2a9bf8fa7c6a68e19937dc  gcc/ada/libgnat/a-ciormu.adb
! a8736129a0ab433d944c28fc964eb8a6  gcc/ada/libgnat/a-ciormu.ads
! 883aac0eb2fb9dd7d33fab83dca48ed3  gcc/ada/libgnat/a-ciorse.adb
! bf4082bc4149a5e2739d7adfece7ac79  gcc/ada/libgnat/a-ciorse.ads
! d9927ec08775d71c7b8056bdcfb8d4fe  gcc/ada/libgnat/a-clrefi.adb
! 93132924581192aae763b20d8cefeaa3  gcc/ada/libgnat/a-clrefi.ads
! 5555c3cc58a08a84d9d9331d5dca5c63  gcc/ada/libgnat/a-coboho.adb
! 3c3faf5170ed15e8fd59bc128313a755  gcc/ada/libgnat/a-coboho.ads
! ac123035f1d0ee6c7801168b4eef1190  gcc/ada/libgnat/a-cobove.adb
! 8b0545866c8b1e3c8d2ea3e6a6d2937d  gcc/ada/libgnat/a-cobove.ads
! 3db96d30920893a960dc4b6894ffb5ce  gcc/ada/libgnat/a-cofove.adb
! 80af7e7903ed35a2ac10df2af6cffc28  gcc/ada/libgnat/a-cofove.ads
! 4bbaa59daad4736b0de536491a806a07  gcc/ada/libgnat/a-cofuba.adb
! e1c1733933482fe06e54aa41134ecc4a  gcc/ada/libgnat/a-cofuba.ads
! c83684e0cc8cad3cd8fe80871a277965  gcc/ada/libgnat/a-cofuma.adb
! 6080a0bc23387d7d7f8213eb9be20ea3  gcc/ada/libgnat/a-cofuma.ads
! 0a830417f7d997d354bd68179e58c2f9  gcc/ada/libgnat/a-cofuse.adb
! a552f45c694858f1349eb0951023a024  gcc/ada/libgnat/a-cofuse.ads
! daf772d737e53f699c0f95a929090fb8  gcc/ada/libgnat/a-cofuve.adb
! 7924816ed5f5c4b68ed556d9a615f250  gcc/ada/libgnat/a-cofuve.ads
! 9b16146a96a6184640c49d58e91b3e87  gcc/ada/libgnat/a-cogeso.adb
! c02ca36e02822a297c2f1173f3375600  gcc/ada/libgnat/a-cogeso.ads
! c34f10fc8397b1969f18ed897a2d499a  gcc/ada/libgnat/a-cohama.adb
! b563f6ec2071187554bc4514195bd203  gcc/ada/libgnat/a-cohama.ads
! ebc9bf36ec8df9c8d5bb68bf1e6e8ac6  gcc/ada/libgnat/a-cohase.adb
! eb44e17d679f3e0a47f5560ea8e97a11  gcc/ada/libgnat/a-cohase.ads
! 554960b7d9a2f2314f4ae85ac366f41a  gcc/ada/libgnat/a-cohata.ads
! dc69c01bb36447f77103a45b6b0a58b4  gcc/ada/libgnat/a-coinho.adb
! 68a9561f0890579160c820a2976d8da2  gcc/ada/libgnat/a-coinho.ads
! 63130a689fc5ba2a02b8056ad0f8a90a  gcc/ada/libgnat/a-coinho__shared.adb
! e4df4baef6a0146bce5ae24782850248  gcc/ada/libgnat/a-coinho__shared.ads
! 0d2b9a53c69d6f2783bbd292c42f0754  gcc/ada/libgnat/a-coinve.adb
! 2ac26745ea15725ea011ec04e04bc801  gcc/ada/libgnat/a-coinve.ads
! 3b7088fca0affe84991285cbea48576b  gcc/ada/libgnat/a-colien.adb
! 4c67a2ee106e7085ca9ac6ed4e129b14  gcc/ada/libgnat/a-colien.ads
! a64d2a86589b39f4c65f238c21c65b02  gcc/ada/libgnat/a-colire.adb
! 8b2257b7ce1ae5759f54d76ad839cb5d  gcc/ada/libgnat/a-colire.ads
! 1edbf5ec8e7b1e2c7c1ce6f987e8790c  gcc/ada/libgnat/a-comlin.adb
! 87d14322f2f2e6f46b28dfae10cb1b18  gcc/ada/libgnat/a-comlin.ads
! 4d54471db287cf6d532d5ab45867e11b  gcc/ada/libgnat/a-comutr.adb
! 8eb52fd094f1c4903f2d177026923258  gcc/ada/libgnat/a-comutr.ads
! b7c0bfcf0380c2ea9250bc3118d15f2f  gcc/ada/libgnat/a-conhel.adb
! 0cafff7379a0ea9ba21829275ac35b4f  gcc/ada/libgnat/a-conhel.ads
  38baf99435420fa514890cac49ee9242  gcc/ada/libgnat/a-contai.ads
! 3861f7370cd51d3adbd807d44af01b59  gcc/ada/libgnat/a-convec.adb
! a11b4e6966d7305af45e4eb246bfb183  gcc/ada/libgnat/a-convec.ads
! 382ff630264f0edee8abc2d82be67f20  gcc/ada/libgnat/a-coorma.adb
! bb6200f55327d37d0495da33cb0d6155  gcc/ada/libgnat/a-coorma.ads
! b634eccb6fd9f29e1965bfcaaaf38215  gcc/ada/libgnat/a-coormu.adb
! c2e460990b7a10a32a946c5a794ab753  gcc/ada/libgnat/a-coormu.ads
! 21307da250f4f9f81552daa52f9ba71d  gcc/ada/libgnat/a-coorse.adb
! eb3e0d06f351850eb9b78806072eeeba  gcc/ada/libgnat/a-coorse.ads
! e9be26058500b3abdee06e3038d57339  gcc/ada/libgnat/a-coprnu.adb
! 75c7e82840d2f64e9b9e23dc1bca737e  gcc/ada/libgnat/a-coprnu.ads
  2399731eabd6e0bbc0a8f28a60d3c3c8  gcc/ada/libgnat/a-coteio.ads
! 220a12a351dcede50b7a36e3eee87bf3  gcc/ada/libgnat/a-crbltr.ads
! fa4de0156ad3dad0b3469f41f9b93c50  gcc/ada/libgnat/a-crbtgk.adb
! bb71e78ddc9440d8ac72381723c19934  gcc/ada/libgnat/a-crbtgk.ads
! 55670db1c03833ad9a2be11aeacd8b88  gcc/ada/libgnat/a-crbtgo.adb
! 179b9a1e7beb9dac2c2f9b1f788de585  gcc/ada/libgnat/a-crbtgo.ads
! a724b248f1813e67044121cf0d6bddd9  gcc/ada/libgnat/a-crdlli.adb
! e3e8a3f012e56d75753a074def90db7d  gcc/ada/libgnat/a-crdlli.ads
! ded222eb0e850f564b74099b21d23f63  gcc/ada/libgnat/a-csquin.ads
! 6bc33d764a6ef6a4152cd61b6086f172  gcc/ada/libgnat/a-cuprqu.adb
! 76afdd228e252b9b18d1abb75de4f5c5  gcc/ada/libgnat/a-cuprqu.ads
! 1638eba60d95c43dc2e4d7f830b07add  gcc/ada/libgnat/a-cusyqu.adb
! 42f46142501a26df7ac28130da5f96e2  gcc/ada/libgnat/a-cusyqu.ads
! 9a2c5b581dce7b0cce2b16c9d8eb441d  gcc/ada/libgnat/a-cwila1.ads
! 0bcfa6dbbf00aff86a55881bc22e86b5  gcc/ada/libgnat/a-cwila9.ads
! fdabe29c3b883e85d10d928323693d90  gcc/ada/libgnat/a-decima.adb
! 083ad265e12ce06ad776f63652e24f4f  gcc/ada/libgnat/a-decima.ads
! c81915eff726c57814d4f5408002d03d  gcc/ada/libgnat/a-dhfina.adb
! f52a2bce89cac8998c36f3f968c9d68f  gcc/ada/libgnat/a-dhfina.ads
! 7e81542c28e47dd220b6b2c68f810e0a  gcc/ada/libgnat/a-diocst.adb
! 9e84557a96f8943a572610614c4f387b  gcc/ada/libgnat/a-diocst.ads
! 62c282fa36992c0d4cc5ee7d1c8e0db2  gcc/ada/libgnat/a-direct.adb
! b8dd16dd7199b9202fd1203f731000ac  gcc/ada/libgnat/a-direct.ads
! 21f644b79a549ee1161ea8927331c7af  gcc/ada/libgnat/a-direio.adb
! 373f2699be78c3964acbfb73cb86e370  gcc/ada/libgnat/a-direio.ads
! 3c09d3f2f67f74c47086651827bf7a21  gcc/ada/libgnat/a-dirval.adb
! 1330d8d09b7fad3b831f58cab24ce5c7  gcc/ada/libgnat/a-dirval.ads
! 2384841ef7d0d5cc273f6b410e2ec11b  gcc/ada/libgnat/a-dirval__mingw.adb
! 2de72372a0b7355e3ada49f343979993  gcc/ada/libgnat/a-einuoc.adb
! dd92e303a9778d06a1cc986daa73661a  gcc/ada/libgnat/a-einuoc.ads
! 7d318ac307caf65a85f5dd989eb00dea  gcc/ada/libgnat/a-elchha.adb
! e705c781630322203ba706d00e994575  gcc/ada/libgnat/a-elchha.ads
! 8a7d6ff81ab32ad92c2b24db1709b4cf  gcc/ada/libgnat/a-elchha__vxworks-ppc-full.adb
! 2a539f62c05d5685abc1eb02c1193c25  gcc/ada/libgnat/a-envvar.adb
  e77a221e76c3e19394bf433277f04c0f  gcc/ada/libgnat/a-envvar.ads
! e0bc89467ccb573709bcf12c369d43da  gcc/ada/libgnat/a-excach.adb
! 3c13f9eeeb9c072551c26567b2c30b9d  gcc/ada/libgnat/a-except.adb
! 067f3746192ab7f6b3797e5db364a779  gcc/ada/libgnat/a-except.ads
! 2f4feac95aceaedf7f4299f00f290fcf  gcc/ada/libgnat/a-excpol.adb
! e06cb70047eb391112806cffd021fc4b  gcc/ada/libgnat/a-excpol__abort.adb
! 50d4a0463d8031c00453cc3e5dda2f72  gcc/ada/libgnat/a-exctra.adb
! 9fac2dc57bd50255a7208ed4080d1dbf  gcc/ada/libgnat/a-exctra.ads
! 5fe5d22b7f2716f1e28a89cd40d10db2  gcc/ada/libgnat/a-exexda.adb
! e2abfd6f281db0019ba2f00c9d61f2b9  gcc/ada/libgnat/a-exexpr.adb
! 6825d4648c3b0e36c3dff36a31787f90  gcc/ada/libgnat/a-exextr.adb
! 48b3e847ca845d56b76f0d277a5945cf  gcc/ada/libgnat/a-exstat.adb
! 0d651313a2d0584d35a394ad2e15ac30  gcc/ada/libgnat/a-finali.adb
! 3256ffed42569facf2b31b2f52635635  gcc/ada/libgnat/a-finali.ads
  b6ba93109a253e15591b1eefa685bc24  gcc/ada/libgnat/a-flteio.ads
  f7e337bf223b3a491d58fb6db81ef7b1  gcc/ada/libgnat/a-fwteio.ads
  2bf5d12193c278c4a482ae0dda1129a9  gcc/ada/libgnat/a-fzteio.ads
--- 540,1266 ----
  6d0ffa28bd6b6f7eb48826cc418b1033  gcc/ada/ChangeLog-2017
  e1e4800d4922875de1a9dcfaacf7e1fe  gcc/ada/ChangeLog-2018
  e886b111487071a30a52edb616ff7844  gcc/ada/ChangeLog-2019
+ 25a37c68917fa9927277f5c8fda08d05  gcc/ada/ChangeLog-2020
  5598cfcecd6612ea21efddabbbe1ecc0  gcc/ada/ChangeLog.ptr
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
  a2eeb36cd2de35ce6a808c67a61edb7e  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
! ca59aa384f50201fc13b9609d5791786  gcc/ada/Makefile.rtl
! 739d1cf14f9f642cbac45cfcd1f8d75f  gcc/ada/ada_get_targ.adb
! b3e84dc1c9a7e552156affe8808cf24e  gcc/ada/adabkend.adb
! 25824eaa1216abca343134c0c41f3aae  gcc/ada/adabkend.ads
! b1ff69aeaeec4fe857f859ff61a80898  gcc/ada/adadecode.c
! 17a8281790ea9a0497546fcef5348529  gcc/ada/adadecode.h
! aa8684368c358ae76c7540acd436dc09  gcc/ada/adaint.c
! 74f039c3d41e22a6a47f32d2e95a1e81  gcc/ada/adaint.h
! 83adc06d0be4f0196e82a5041f46b40e  gcc/ada/affinity.c
! 35eac1459f1fd1e41615c982c2214838  gcc/ada/ali-util.adb
! e94c9ad20dfed5c82c5e93679dbf2225  gcc/ada/ali-util.ads
! 6dbe791e85bc32e99618ccd8c1a655b7  gcc/ada/ali.adb
! b66f94b1e164d8d23bf49625df1f2ac3  gcc/ada/ali.ads
! e5078e3fd26a2754e097776921a5fb18  gcc/ada/alloc.ads
! 0348245b329d825e5428b6f8c39fa9e6  gcc/ada/argv-lynxos178-raven-cert.c
! 088597e80ba406bb7fca3179304a3206  gcc/ada/argv.c
! 80d9f2ac1330b5adfff4c27d37daf720  gcc/ada/aspects.adb
! e701d8df22435327922f34bd5031db0e  gcc/ada/aspects.ads
! 93d183b59d78c6fc90198722ebefaa47  gcc/ada/atree.adb
! c9190094748f94a6d49778c4c90ddd3c  gcc/ada/atree.ads
! d3dd37bc0f46ceecf5a0cf200c5d405e  gcc/ada/atree.h
! 62b5d60871672b425c998bccc45d3dfb  gcc/ada/aux-io.c
! fc49eb8af6c9e5352549e7017e7c0a17  gcc/ada/back_end.adb
! c1f90d17f40fbaa20cd1a32401f32678  gcc/ada/back_end.ads
! 2f9901752aa085838c884e14311c7e64  gcc/ada/bcheck.adb
! f86d577c3b7029bd8bef2e0ac60cdb76  gcc/ada/bcheck.ads
! ce3c2d2dc01a5ca0d8683a85a7a11abd  gcc/ada/binde.adb
! a46200adba77ecf52257c43a3323afa7  gcc/ada/binde.ads
! a299a6a965402a166fa37e50c17700bc  gcc/ada/binderr.adb
! acf3ed302eab726b1656e407509b519c  gcc/ada/binderr.ads
! 20bf627d0a693f00d76ec7334f6a9087  gcc/ada/bindgen.adb
! 0653bdc6865d987cf1bbf34a5c55aa79  gcc/ada/bindgen.ads
! fb359417ce598c51f7dc868b8c29beaf  gcc/ada/bindo-augmentors.adb
! 9b29f0742b89221df3d2a120ba8253a1  gcc/ada/bindo-augmentors.ads
! 0b70e9a277d8cf8b52c3c94ea838b642  gcc/ada/bindo-builders.adb
! 39f9ec095ac8dc40f5b4ef98f4424e5c  gcc/ada/bindo-builders.ads
! 40e36e6690b49dbbc32f036f8f6f90c3  gcc/ada/bindo-diagnostics.adb
! 6d50968516287364b4c87d0aa5c2f102  gcc/ada/bindo-diagnostics.ads
! def9e60cf371fd24086543fab767c1d7  gcc/ada/bindo-elaborators.adb
! e1120684fc553154e9913b586a4081d0  gcc/ada/bindo-elaborators.ads
! 87b4e3ede83bcf6debe8a60a6f841fbc  gcc/ada/bindo-graphs.adb
! 587548ce93fceec2c039d308c7175ac9  gcc/ada/bindo-graphs.ads
! 83fcf6ca58d324655f84a7de7157e3d1  gcc/ada/bindo-units.adb
! 06ef630edbdb66a902bf5fbb3490b515  gcc/ada/bindo-units.ads
! 9929e6accf95e4e4d1ff510b031234f0  gcc/ada/bindo-validators.adb
! 380efd6bc84457b6752d553b1c54445d  gcc/ada/bindo-validators.ads
! 766d158a41bc8db24b2658453a0572d4  gcc/ada/bindo-writers.adb
! 30f6e55fb20c2589168e37b68c528245  gcc/ada/bindo-writers.ads
! 7a287e68cc8b614399cb643a25995141  gcc/ada/bindo.adb
! 256c17ea31e755376756c8db0b8372b3  gcc/ada/bindo.ads
! 6ee2735891fbfb63faf14fd6a5e3afa1  gcc/ada/bindusg.adb
! 5389a48211a9807fe14f0bc43a036739  gcc/ada/bindusg.ads
! a1593674c163909bc7aed6d390af115b  gcc/ada/butil.adb
! 0c0f26cfcf5631fd5359997642e79e8f  gcc/ada/butil.ads
! b61f7dc3829085a46a750682b730ebe9  gcc/ada/cal.c
! 8f83a262277c271be34ca704165db90a  gcc/ada/casing.adb
! 99cbb407e30c309d91fca2747bd695bd  gcc/ada/casing.ads
! daca4f443c2130c677d1b2fa28713a44  gcc/ada/ceinfo.adb
! e12e10a68e600cd5b326a7d4fc2d09c2  gcc/ada/checks.adb
! 707b6d246f4efdb6604630ab5b2fc7bb  gcc/ada/checks.ads
! 7badc319b6a78b2731532e3eafb68a7a  gcc/ada/cio.c
! eba1bb826d1697c51b108a55cba56263  gcc/ada/clean.adb
! 4d862cca5276d46b8c70442f01e0166c  gcc/ada/clean.ads
! 9af4b98244f973137c474020231b5c6d  gcc/ada/comperr.adb
! 3c804b0aadfb8b2bf12d85c152a8a3a3  gcc/ada/comperr.ads
  fbd23958a6d5c4207e39317e708436ac  gcc/ada/config-lang.in
! f9ce19592776878e7ae3d540d6f4f7fd  gcc/ada/contracts.adb
! 8cd6dcf6937fe851bebf206d940a49ff  gcc/ada/contracts.ads
! 769bc2b700fcbb7a50d5ca5858853578  gcc/ada/csets.adb
! 39335cc7f9726519afd2b81ff32499eb  gcc/ada/csets.ads
! 879e96d7fc412c12a19e8b2cf3bfe322  gcc/ada/csinfo.adb
! c96f4f17b1fde9e7d5371564507e17a3  gcc/ada/cstand.adb
! 4eb914f8ea473814a50844206d256ec3  gcc/ada/cstand.ads
! 428169c81ff39b3a013f19ee5794efbd  gcc/ada/cstreams.c
! aadd9aa681994589e3b38c984d786aad  gcc/ada/ctrl_c.c
! 7d55d0dabbe75092b7e95c00795a584e  gcc/ada/debug.adb
! 7d38d16559569ce53c5721deccc467f6  gcc/ada/debug.ads
! d51a2d72b2f1575d967eb35d9a3e1ddf  gcc/ada/debug_a.adb
! 47ddb3784f575ec23fa3a134d46e2796  gcc/ada/debug_a.ads
  80943324aea8ba4501b7450d6ae26ce5  gcc/ada/doc/Makefile
  0725845d1d42dd6a346a89132bcfb5c7  gcc/ada/doc/gnat_rm.rst
  2333c6ac6129e29e589b44fba5bdb9ed  gcc/ada/doc/gnat_rm/about_this_guide.rst
  e183e323bf87ac50a5767106862fef97  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! a0d75bf85a31c09f0640b6cc4197d31e  gcc/ada/doc/gnat_rm/implementation_advice.rst
! 2dd3f58a8af0504a92557e149f864302  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
! 5522cd2f8466a8af46f1ae73cbbbe58f  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
! 9af4feea32f3b0368bd250ace9a6d2d6  gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
! 9f7218691a7101ef43159cbefb87d913  gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
  4c8f34f9d69c20b677b885ec36ef9844  gcc/ada/doc/gnat_rm/implementation_of_ada_2012_features.rst
  5bc57d8ad4c60bddfaa4f93ef5c032b3  gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
  8ac597e4a14e2e70cf692a87fa810b0a  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
! da2499e7bd9a977ee60d48d2f4d9bba0  gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
  bb3c8ae8aaf1cbd06bc44135da97d801  gcc/ada/doc/gnat_rm/obsolescent_features.rst
! 4e58ab300c85e8093931722d25020414  gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
  03676be4f649629e37041b8c849c7825  gcc/ada/doc/gnat_rm/specialized_needs_annexes.rst
! 67c0b4ee893d284988ca2a4fcd3cc3e3  gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
  0c417860d1b59e9ed53a0bb81cbdf579  gcc/ada/doc/gnat_rm/standard_library_routines.rst
! 7e156458301180588ddf94cfa3cc36f4  gcc/ada/doc/gnat_rm/the_gnat_library.rst
  8b68d207a54ca14c6fe2d33005ece437  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
  ad0b18bc67f8911f5f0d9d2762f19f82  gcc/ada/doc/gnat_ugn.rst
! 522a8b1f4fc69117e20c4690b1cde1a3  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 9b3f5777651a08453203f6f31c0ca543  gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
  2e09bbabc6b508ce5d975d5e9e0eff30  gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
  c8c5cebc5a8966a6a0b278b30b2f5738  gcc/ada/doc/gnat_ugn/example_of_binder_output.rst
! 329d0c3464eb53db9196226f014d72c9  gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst
! 33db14ccff060e833a0547894e973f4c  gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
! afc7d6b43384b58647cfc4dce8ae966f  gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
  996c912f607538e32d01140682b88ff2  gcc/ada/doc/gnat_ugn/inline_assembler.rst
  14aa18b6183d603e39fda045d07397c4  gcc/ada/doc/gnat_ugn/platform_specific_information.rst
  062c912e168e9f97d4b4ae9c766300b8  gcc/ada/doc/gnat_ugn/rtlibrary-structure.png
! a7fa30ed47b8265834175bca576afd48  gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
  caf064904358a8a1d6029b136176ff9d  gcc/ada/doc/share/ada_pygments.py
  072a6de1fa85aa471593edbd11db5cc9  gcc/ada/doc/share/conf.py
  c7da61a05156d50b4888cdfaae4241d0  gcc/ada/doc/share/copyright.tex
  9f43695687d6ab9372dfe236a9829279  gcc/ada/doc/share/gnu_free_documentation_license.rst
  f1c71b64e1c84e240c7b5aea7331a32a  gcc/ada/doc/share/latex_elements.py
  90adfcde2feb6d6c090c2b18a1578145  gcc/ada/doc/share/sphinx.sty
! a81aac9d0c99f4a30f1b68e450024209  gcc/ada/einfo.adb
! 76685b132b3f7c177efb7825a40e8ca9  gcc/ada/einfo.ads
! 0d67bb00dc12b2639355a196714367a7  gcc/ada/elists.adb
! d0a6169b8017a41d0de6120b7b4c4dec  gcc/ada/elists.ads
! bffb78824ecf53515de2e5a912d4bfcf  gcc/ada/elists.h
! f5bb97445eb36dad1da175454a933ebf  gcc/ada/env.c
! 08b47045e8cec895029fafbcf89063c7  gcc/ada/env.h
! e64a7f5ac069c641a63facd2c08487b7  gcc/ada/err_vars.ads
! f659c7401cf93660d9039e2101881892  gcc/ada/errno.c
! c03b8a6ba269ae258028292e62df64b5  gcc/ada/errout.adb
! 76f10b2439f71c8ff217464dd13ad958  gcc/ada/errout.ads
! a9d6b59bc58aec400d1caf390ab9566c  gcc/ada/erroutc.adb
! 93acedefd60a66ae70a983c2bcbf0a22  gcc/ada/erroutc.ads
! 0ef2641a0d3f9a58da1f56c874ac8906  gcc/ada/errutil.adb
! 7bc82b75885b5e2a637fd95dd80501ec  gcc/ada/errutil.ads
! 356e134167c1b88e0b2bcfe86752efd2  gcc/ada/eval_fat.adb
! 2fa1b28be243e15222d0df6f966fef03  gcc/ada/eval_fat.ads
! d06216ec37cc58cc20970f716c05b280  gcc/ada/exit.c
! e7dac99a71a49294edd2cce0e9e98eee  gcc/ada/exp_aggr.adb
! 43fe2f55aa6c174d249ef5cd350e2a60  gcc/ada/exp_aggr.ads
! 0a7edf59a7f33642af4704eade3e97c3  gcc/ada/exp_atag.adb
! 7c47f5843f77312d2886a7bb632c33df  gcc/ada/exp_atag.ads
! 3ab42efbcbc5b3ba4a294b5bda59cee2  gcc/ada/exp_attr.adb
! 9cc8f6f1395030a3e1ddae2f64ef59c7  gcc/ada/exp_attr.ads
! aec21341801b7f40af17364da40d37d0  gcc/ada/exp_cg.adb
! 4739d2290f71028d3c4bc87ed372186b  gcc/ada/exp_cg.ads
! b548849797058639b98ba1ec5e46823f  gcc/ada/exp_ch10.ads
! d82a02dd9bd23b359985f2580167d007  gcc/ada/exp_ch11.adb
! c2a21fef0ac0ce5e0bc11d3b4b117fa7  gcc/ada/exp_ch11.ads
! 2cd906ae56f478010d54cdc57421f559  gcc/ada/exp_ch12.adb
! 771bdc5328cf0816aec5562bc1391705  gcc/ada/exp_ch12.ads
! e53ee0c6d2ee981bec18700fb64ab397  gcc/ada/exp_ch13.adb
! 45c02a773f6306ee7f17d151e33149b7  gcc/ada/exp_ch13.ads
! a2d962cd2c4d8e5a92692154284b38ff  gcc/ada/exp_ch2.adb
! 9fc10f38bd720c619ada102df74ef01c  gcc/ada/exp_ch2.ads
! b4911c9eaadfa8edbca97226db2cacd8  gcc/ada/exp_ch3.adb
! ed23c980ddc4646e547e4d9d797e30f2  gcc/ada/exp_ch3.ads
! 0db2e00cc4a7e536387f8b992a3f5bf5  gcc/ada/exp_ch4.adb
! 050a84d226682ff6b0cf73e569d48769  gcc/ada/exp_ch4.ads
! e23176144fd3113efb017afecfc68a90  gcc/ada/exp_ch5.adb
! 7bba8e3eda393994835a35015e9fa337  gcc/ada/exp_ch5.ads
! 66b526434a346e60579c80c31719f229  gcc/ada/exp_ch6.adb
! b4c23d1aab55fa6be28d20be281e76b9  gcc/ada/exp_ch6.ads
! e01f503be5ea1cccca1e3af41e97504f  gcc/ada/exp_ch7.adb
! 7ed04831559835dfc491855d3d7c50eb  gcc/ada/exp_ch7.ads
! 8839dd025995762da916fad943789acd  gcc/ada/exp_ch8.adb
! 557a822b97445be54a1438a8c6a2329e  gcc/ada/exp_ch8.ads
! d9997dcdbdb80463b026c8b082e21365  gcc/ada/exp_ch9.adb
! b4a328d0ee5369039c79af06c07067ab  gcc/ada/exp_ch9.ads
! 9c5ad6c32bb867e051708e7118030a62  gcc/ada/exp_code.adb
! bb88a85165230e766c036f59b673cdfe  gcc/ada/exp_code.ads
! a92ddb14f39cb239d449f8171f011c82  gcc/ada/exp_dbug.adb
! 2463226e66cd6099f17b0156f3c0ed1a  gcc/ada/exp_dbug.ads
! e3c548c6d9eeb81d0751eddd2e9ad37e  gcc/ada/exp_disp.adb
! cd7432bfb61e050f32f48c83a597f69a  gcc/ada/exp_disp.ads
! f54729f547276d6ecd9cf8f5cb06a013  gcc/ada/exp_dist.adb
! bf9fe6697c21ef7d66892cf224094939  gcc/ada/exp_dist.ads
! 3b24d86753197f9df2edac6dbeb00370  gcc/ada/exp_fixd.adb
! 152e91a6c1e4b2c9e1e5d1732006186a  gcc/ada/exp_fixd.ads
! 8402e651bfecaf3da8b4dbc00f0a399b  gcc/ada/exp_imgv.adb
! 922ce86cdb2df6292a89e37d00db0c5e  gcc/ada/exp_imgv.ads
! b8638c9d4129fe3cfde7cd2cda26b485  gcc/ada/exp_intr.adb
! 79c61ad66ad1d5b7772705454c9d6fd9  gcc/ada/exp_intr.ads
! 4828b0b5a5d4f5339786bc921c697455  gcc/ada/exp_pakd.adb
! 2f1db81322087ecfb1abba57d1492293  gcc/ada/exp_pakd.ads
! 587a6c474b3fc8b974617df5f6ed54f3  gcc/ada/exp_prag.adb
! 9cf681f2279fd3dd308dd37add12966b  gcc/ada/exp_prag.ads
! fbfeecd587557581978a2be2f9a2404a  gcc/ada/exp_put_image.adb
! 1e39422cbe15f71826161da63c93e350  gcc/ada/exp_put_image.ads
! ac1d20b8337753783ac654734b1bed99  gcc/ada/exp_sel.adb
! 6188cea61dc1933073d217bf32f5511c  gcc/ada/exp_sel.ads
! dcfafba600d585a807728d9a08227805  gcc/ada/exp_smem.adb
! de82fa4d304d03a3290cbd695a3cbaf3  gcc/ada/exp_smem.ads
! 134ed9ac82d9d7986818c8e9a1a6b698  gcc/ada/exp_spark.adb
! c55b8d21ec4542bc1ce7d51fae75f839  gcc/ada/exp_spark.ads
! 85df6c4881eced6f1125f8f156d39cc2  gcc/ada/exp_strm.adb
! b47ea94e33ebedf8760c44871114c4d3  gcc/ada/exp_strm.ads
! 92da1f07e022d6c26d72d1460482caa4  gcc/ada/exp_tss.adb
! 00feab14eaeeb45131167149147241e0  gcc/ada/exp_tss.ads
! ab824b996b7a0c8a2c2a22dcdaa00855  gcc/ada/exp_unst.adb
! e9a3a6517b98cd6d8fea1c6e59534e20  gcc/ada/exp_unst.ads
! ab177bbde8a1a18046f2ae71ae50d4e1  gcc/ada/exp_util.adb
! b5e1985e34dcd9ae3d3d555fb3934e25  gcc/ada/exp_util.ads
! e34f0290bca8640889baf3eaf05e04d6  gcc/ada/expander.adb
! 8ce470670744309c62f91df924faf082  gcc/ada/expander.ads
! e209e130f7d05a761924e6eb5f5d3c7f  gcc/ada/expect.c
! aa24a2f45231b3e92d4536ee5e1b5290  gcc/ada/fe.h
! 5521e935c0968ebc6ae024ba55aa12d6  gcc/ada/final.c
! 3d994d600c41b968b7457748be4c7c3f  gcc/ada/fmap.adb
! 214245fd127cfb2555518e85d4d0d757  gcc/ada/fmap.ads
! 7496a91e2bfb7e6a1a7443ae51426f44  gcc/ada/fname-sf.adb
! f51124ba7bc12991c2598279eb2da82e  gcc/ada/fname-sf.ads
! 0b88cdefa8ec362e8c33a44f1d171d58  gcc/ada/fname-uf.adb
! 48afbf29f85c0043d666932f80d65d5e  gcc/ada/fname-uf.ads
! 04400388d328150ce356b115566c80aa  gcc/ada/fname.adb
! 2e5bdc9f675a59249d1c6088bf9b7a56  gcc/ada/fname.ads
! 9644dd6497b3ac0c2895c4cc2950258e  gcc/ada/freeze.adb
! 9eefd6f8b8977ab2b8a8fb8e3637ab12  gcc/ada/freeze.ads
! 009cce51246a860a5f901d2e2e7ac369  gcc/ada/frontend.adb
! b48a3449a29d92c0b5434a73385b1e97  gcc/ada/frontend.ads
! 72ca66c12963f38334507f56ace14098  gcc/ada/gcc-interface/Make-lang.in
! 03cc94c5f3b336fe349562ac069e853f  gcc/ada/gcc-interface/Makefile.in
  35dd49b4643582a2e1e847bc6aea01e1  gcc/ada/gcc-interface/ada-builtin-types.def
  f7677c298cb2f4c70ecf284c7e18cb80  gcc/ada/gcc-interface/ada-builtins.def
  055be3d11fa6ccb53ffe7f8970a005ce  gcc/ada/gcc-interface/ada-tree.def
! a21ffea82ae8a271cdcc3acbf1428099  gcc/ada/gcc-interface/ada-tree.h
! 5d0689f7acb36d977c27b633105517b7  gcc/ada/gcc-interface/ada.h
  2962facaf5b9ac376e7335599112a520  gcc/ada/gcc-interface/config-lang.in
! 2be995167a94a991025f94bdf029b598  gcc/ada/gcc-interface/cuintp.c
! 1937936e8ac3d9e24dd1910993dd76d8  gcc/ada/gcc-interface/decl.c
! d92dc0232ed2c36ad8969076cb25a3c8  gcc/ada/gcc-interface/gadaint.h
! 86b8f2bd39b4d74d80e6f6c19aa4e026  gcc/ada/gcc-interface/gigi.h
! c7ba118bbfa02ecb67d9a8d287beae60  gcc/ada/gcc-interface/lang-specs.h
! 0c17b9bf1e38c0153d2d49a7cb476cee  gcc/ada/gcc-interface/lang.opt
! a1a44880269c822fbb41284003a97cb4  gcc/ada/gcc-interface/misc.c
! 88ae5d221d943abb83c91d7a58188ed2  gcc/ada/gcc-interface/system.ads
! 189f873df9e746e3c38349dac7d6ee3c  gcc/ada/gcc-interface/targtyps.c
! 3072d96c1253fc4c7d463db9a63342d1  gcc/ada/gcc-interface/trans.c
! 12ababdca3dae07473bb5be336501988  gcc/ada/gcc-interface/utils.c
! 6488d2b5188bae086c45a766edd2ae20  gcc/ada/gcc-interface/utils2.c
! 8c17131152309ee5d6ed879c994993da  gcc/ada/get_scos.adb
! a0c84c8e04708bbb9c8b04f7ede85477  gcc/ada/get_scos.ads
! 756365e6f03ee31ec4d33ddf9edeeca1  gcc/ada/get_targ.adb
! 8b6c03a3aad44e53d9238c821e4e283f  gcc/ada/get_targ.ads
! bfdd1d59da3c70447e9fd6375ed14a65  gcc/ada/ghost.adb
! a299aeedc6289ffd6519a0278c60c76f  gcc/ada/ghost.ads
  c39e2928a111b0037c2dc63f22527cb4  gcc/ada/gnat-style.texi
! b7900f371d66305fb644f6c78c79f983  gcc/ada/gnat1drv.adb
! ea1485fb0c9e7b4234a4735691bbb23e  gcc/ada/gnat1drv.ads
! b8f81eb71b0ae177c5e8d34f44b3c4cd  gcc/ada/gnat_cuda.adb
! 8257155673183f92724fc204536b5c64  gcc/ada/gnat_cuda.ads
! eee0a1b473496e3a70f1bff9ecc75c43  gcc/ada/gnat_rm.texi
! b0cce06d3bed26d0b4123fa2b0a6b7a4  gcc/ada/gnat_ugn.texi
! e6e49ade998e633eee01c2bd07583ec9  gcc/ada/gnatbind.adb
! 63ab58dbb6fad46f7ec19f3920b3125c  gcc/ada/gnatbind.ads
! 0202afd0bfd9d2e9f4fc825aa7601c4a  gcc/ada/gnatchop.adb
! 9c5efc98008ecf302616952d739f7d66  gcc/ada/gnatclean.adb
! 515f1d6f2acb3435899faf5f16b7c844  gcc/ada/gnatcmd.adb
! b50ef925dc6ad53f4c8cc994ac882944  gcc/ada/gnatcmd.ads
! 3e015b4a7655880616b7fc856c35970e  gcc/ada/gnatdll.adb
! 3f8d79aa5c79f6c905202a0e3bde9a66  gcc/ada/gnatfind.adb
  670cd3e724c6b64c7b322c6e75a0e7c4  gcc/ada/gnathtml.pl
! 639324278b27b654a7f1d12ea43476b6  gcc/ada/gnatkr.adb
! 9b1c09c7f9bfcc5fd9cced3c1bc1164e  gcc/ada/gnatkr.ads
! 88117611e93eb458a5be90b40ec959ba  gcc/ada/gnatlink.adb
! 598591d33525a5962aa536ad4a63cc75  gcc/ada/gnatlink.ads
! 2f0809781e6df448e287301e77cf48be  gcc/ada/gnatls.adb
! 42891712038d6a61c506a2eb2b13edfa  gcc/ada/gnatls.ads
! da56645bfa5143f9e9e5fb7d1e1abca8  gcc/ada/gnatmake.adb
! db6e8f0b5fbdb86adb1eeff1d0d8490e  gcc/ada/gnatmake.ads
! ae621d45fe27a7c1300505e77175748b  gcc/ada/gnatname.adb
! dae0ce86bf38d9cb9fd54087c282cdfd  gcc/ada/gnatname.ads
! 780f8b968144c5f11377533a18406065  gcc/ada/gnatprep.adb
! 870e9f3cf591fcf39bcf3d954c4d2988  gcc/ada/gnatprep.ads
! 17bf45742c92ea5f6d8c46a1611dbd18  gcc/ada/gnatvsn.adb
! 61b389b72d5efb6c3a3adddfb1f6a509  gcc/ada/gnatvsn.ads
! 27342c3e80937b5cd62a6746e24d9fb9  gcc/ada/gnatxref.adb
! 769b89c5d9f33501d70f0cc17cc4ed76  gcc/ada/gprep.adb
! db31e7cf7f7c455ad472662a21c729d3  gcc/ada/gprep.ads
! 5d4b424fb3fc8d22a5cb39bb04e7383d  gcc/ada/gsocket.h
! 334d9f2300e9f502535c0e18d15e71d8  gcc/ada/hostparm.ads
! 4e4d9d934e19296b7fbf6c66bf0e1481  gcc/ada/impunit.adb
! c4acd38e43023764b649261fb45b1e21  gcc/ada/impunit.ads
! d79be3b9517ff095be4f4480934e6f9e  gcc/ada/indepsw-aix.adb
! 0dd927adeb98416d662550728b919aa7  gcc/ada/indepsw-darwin.adb
! 797a26e9931b74f1b9e7bad19b31c888  gcc/ada/indepsw-gnu.adb
! 7a640f31d5c26014b12f72045a2b0755  gcc/ada/indepsw.adb
! 28a62e58a4ea1056338564ac6fb7112a  gcc/ada/indepsw.ads
! 310f96ef3fc6fb573b2ea456dc08db0e  gcc/ada/init.c
! 6c5fb11a904dd020792e14a8d6810faf  gcc/ada/initialize.c
! 0fc230c39563b680a77e286b966633fe  gcc/ada/inline.adb
! 67d9a0bfd2544bbf68386381d59ebe06  gcc/ada/inline.ads
! 83c5fe61b94a3fa61386eb489717bfe2  gcc/ada/itypes.adb
! f8d6494d99ae4db09f736ffb461dd974  gcc/ada/itypes.ads
! c82eb34fed24fc01ddd394dbbb4e9b9e  gcc/ada/krunch.adb
! ee3a69febc75d6606529c70ebc5fae5e  gcc/ada/krunch.ads
! b231a932bc914d322be9ab8a79764bde  gcc/ada/layout.adb
! 54c2ea3e68716552e9219443f84703cc  gcc/ada/layout.ads
! 7a196718e8e619341d5f8b615ceb6e13  gcc/ada/lib-list.adb
! 10bd8650fd1b3863a8b4fd9326c4e398  gcc/ada/lib-load.adb
! a6a5affe782a9dbc017df71dbe29c29a  gcc/ada/lib-load.ads
! 43fa1f068c053ff7ac30b30975b4354c  gcc/ada/lib-sort.adb
! ec301843a7ef6ab91f9242d9b5636f57  gcc/ada/lib-util.adb
! da08675fea0b95c8e8af55f07511a6a3  gcc/ada/lib-util.ads
! 3ab320fb3dda72ae8040bb6e8c46df53  gcc/ada/lib-writ.adb
! a4cd7b703147d9a2c6d939e43681a25c  gcc/ada/lib-writ.ads
! 3678a498ee7449b9541d1143558ee38b  gcc/ada/lib-xref-spark_specific.adb
! 2a3689a8858cfdd0e082dd80e4f2f7d7  gcc/ada/lib-xref.adb
! 0fa330085d234950647a990a5619041e  gcc/ada/lib-xref.ads
! 9a33b6788ec6e1753259eef39a3e6a9e  gcc/ada/lib.adb
! 0a27eed41916815bfe89d9e858c9fb3b  gcc/ada/lib.ads
! fc42dae0ee75252aa27f9c01ff51ec53  gcc/ada/libgnarl/a-astaco.adb
  c13d27ec688dfebb1965a8e9eaf55c2c  gcc/ada/libgnarl/a-astaco.ads
  66247d074eecb4270e7cf01d16e0cfce  gcc/ada/libgnarl/a-dinopr.ads
  c4e9620896065355c1895fb26186b8d2  gcc/ada/libgnarl/a-diroro.ads
  d33d03640fb0fae0a821bbeb1be518f7  gcc/ada/libgnarl/a-disedf.ads
! 4994783810ed047d64fa43284988042c  gcc/ada/libgnarl/a-dispat.adb
  380695cb64d70014260c4cbc5dc99e54  gcc/ada/libgnarl/a-dispat.ads
! 1f15ee76789f7b6c54c9d2fcc0473cf1  gcc/ada/libgnarl/a-dynpri.adb
  a2784499cf21750d8840eeaf03b9e700  gcc/ada/libgnarl/a-dynpri.ads
! a8d570360f11c3f4c11dd73ed0496a7f  gcc/ada/libgnarl/a-etgrbu.ads
  3e60794a02e6ff3380c0daf20c7c6bc2  gcc/ada/libgnarl/a-exetim.ads
! 25539628402a9acbf3d274ef27d4a188  gcc/ada/libgnarl/a-exetim__darwin.adb
! 9a7200439d3d618dc770444e92e1b13d  gcc/ada/libgnarl/a-exetim__default.ads
! 779330b956e32b25c9392ef557dc5e0d  gcc/ada/libgnarl/a-exetim__mingw.adb
! 323db832db4b8727c6f7c1922b973fa4  gcc/ada/libgnarl/a-exetim__mingw.ads
! 3cb4d532e305172c148bc2d93c0562b2  gcc/ada/libgnarl/a-exetim__posix.adb
  8a70e70c5d53efd2ae8de2a025db3217  gcc/ada/libgnarl/a-extiin.ads
  66ba8470ba07e36d23031779e1ebee31  gcc/ada/libgnarl/a-extiti.ads
! 00aba886950db66a76384b15f968687d  gcc/ada/libgnarl/a-interr.adb
! c309f21b9151832a1fe360b008770dec  gcc/ada/libgnarl/a-interr.ads
! c640001896c62395b0be81195b2ab8c0  gcc/ada/libgnarl/a-intnam.ads
! 82e082ac1602e6c4da1d1c1ca685fa96  gcc/ada/libgnarl/a-intnam__aix.ads
! 1642934d85828c453c2d0aaf97b29d00  gcc/ada/libgnarl/a-intnam__darwin.ads
! e8ed3f911686487b47577f5bc3164fde  gcc/ada/libgnarl/a-intnam__dragonfly.ads
! 0fc94b85038efe6af1517476e2df2c32  gcc/ada/libgnarl/a-intnam__dummy.ads
! 43f4d35a412746c3743bfa6e315b559a  gcc/ada/libgnarl/a-intnam__freebsd.ads
! c5919a9c4189f0d0d47b1c1cd3b08725  gcc/ada/libgnarl/a-intnam__hpux.ads
! 5be0301faecf6ce8ea272eb13696dd04  gcc/ada/libgnarl/a-intnam__linux.ads
! 5ead5c768474bcfa912cabe6d1cfa17c  gcc/ada/libgnarl/a-intnam__lynxos.ads
! f34d3485256671da85734a098f5955c0  gcc/ada/libgnarl/a-intnam__mingw.ads
! 4f780d3103d8a9436cd777079c0c875f  gcc/ada/libgnarl/a-intnam__qnx.ads
! fc475de80116197d0cb4d70557c7e0f6  gcc/ada/libgnarl/a-intnam__rtems.ads
! 276784fe2c414e995980d8ae3139baea  gcc/ada/libgnarl/a-intnam__solaris.ads
! 201e8148972479a8466701405e13ef54  gcc/ada/libgnarl/a-intnam__vxworks.ads
! 2dd0c1b3951061a37d5063113220fa1f  gcc/ada/libgnarl/a-reatim.adb
! 176768d760f99333bb5d206e21b0631d  gcc/ada/libgnarl/a-reatim.ads
! f8a51d7d348d27f955bd467bca70ecfa  gcc/ada/libgnarl/a-retide.adb
! 160f132dca8b4af716fe862692be2175  gcc/ada/libgnarl/a-retide.ads
! b3cf812a0d1573856c962961d3fc7200  gcc/ada/libgnarl/a-rttiev.adb
! 6ebf0cd393e91cffb5e496f4be693538  gcc/ada/libgnarl/a-rttiev.ads
  c04bb8934366f43faa60d914e7ebea7a  gcc/ada/libgnarl/a-stcoed.ads
! e4c3884f2d6833337713a3c3e2e6b525  gcc/ada/libgnarl/a-synbar.adb
! c35bf41dc5ca25ad2406877ba7897724  gcc/ada/libgnarl/a-synbar.ads
! 96046964fcced7f9674a154e72b78c6f  gcc/ada/libgnarl/a-synbar__posix.adb
! c919fa46f9ea857dcd25ba6b5e9e4914  gcc/ada/libgnarl/a-synbar__posix.ads
! 55112a4efac057b6f1d03e689374ee77  gcc/ada/libgnarl/a-sytaco.adb
! bcc4d27b43fab1e5e9f304e17830d608  gcc/ada/libgnarl/a-sytaco.ads
! 8b51a86b3d61c44c7161c126cd1aca68  gcc/ada/libgnarl/a-tasatt.adb
! a43ebe691b2a3aee8bc31f4dd26b9631  gcc/ada/libgnarl/a-tasatt.ads
! ba1107cb82484eb3419ed1f05f9822cd  gcc/ada/libgnarl/a-taside.adb
! 54ff4ee164c477269d7b0d9d4108ba6b  gcc/ada/libgnarl/a-taside.ads
! 23b92ff078748784548e67c052b5f7df  gcc/ada/libgnarl/a-tasini.adb
! 78fbaa05dc233b36fee25ca921345da9  gcc/ada/libgnarl/a-tasini.ads
! 3319513a8be6c2b2be7778cef1b26431  gcc/ada/libgnarl/a-taster.adb
  281fc9a014bf9c5a3677f1dd38cc9d5d  gcc/ada/libgnarl/a-taster.ads
! 4d367d1f3b740897ff66a7446f46ec4e  gcc/ada/libgnarl/g-boubuf.adb
! 537f7514617a3f9e6db60ec1e1a5a08f  gcc/ada/libgnarl/g-boubuf.ads
! 365c406c958119ee2c7ed7801cf8b94f  gcc/ada/libgnarl/g-boumai.ads
! f23ff70225ed2aa2e19b4ce861baed59  gcc/ada/libgnarl/g-semaph.adb
! cb07a3182eff1691cfb1eb243242e36e  gcc/ada/libgnarl/g-semaph.ads
! 888e43732d49419e3dd9854c91159771  gcc/ada/libgnarl/g-signal.adb
! 1575dd06d2dffdb76743b31880b5c161  gcc/ada/libgnarl/g-signal.ads
! f269f77173e2698b8976ee12b22569c2  gcc/ada/libgnarl/g-tastus.ads
! b3d0eb7c2d096413712c6fe0bec2b746  gcc/ada/libgnarl/g-thread.adb
! d445335da34187d6ccc477538a4fe9da  gcc/ada/libgnarl/g-thread.ads
! 430047f0904be1fd61207c3efcbe6444  gcc/ada/libgnarl/i-vxinco.adb
! 24eeebe84e4a923919582387cff536cc  gcc/ada/libgnarl/i-vxinco.ads
! 5cfb9f62dd9599caab03143b5745a967  gcc/ada/libgnarl/libgnarl.gpr
! 67ae70d928fe08cc052a0185e5e48cc5  gcc/ada/libgnarl/s-inmaop.ads
! dc67168c2aa853d421e3aa6ba95f6529  gcc/ada/libgnarl/s-inmaop__dummy.adb
! c61b14c34e8aa3abfd907c008376ad3f  gcc/ada/libgnarl/s-inmaop__posix.adb
! 554ddac801c3a4f70c2f6dc250e0755d  gcc/ada/libgnarl/s-inmaop__vxworks.adb
! 08f430d3c5bcd989a95c018b04216825  gcc/ada/libgnarl/s-interr.adb
! 12afe71ceed5f117a6983680ff1a3376  gcc/ada/libgnarl/s-interr.ads
! e48fd8c250a2dbd1dec542e904831b6e  gcc/ada/libgnarl/s-interr__dummy.adb
! 7506ae9a5aa4c83214e64410731f105b  gcc/ada/libgnarl/s-interr__hwint.adb
! ab5be3709c3464ed9bdecb0067420526  gcc/ada/libgnarl/s-interr__sigaction.adb
! 4529c9f5fafbfdc67fe6fd60fa099006  gcc/ada/libgnarl/s-interr__vxworks.adb
! 505b2accaae1e0c66a23e5ab5f3cddb2  gcc/ada/libgnarl/s-intman.ads
! aeffb224947ec2ef7dbb9621a82b8e2f  gcc/ada/libgnarl/s-intman__android.adb
! 9f728950a68db2ae316c9eca1079ede2  gcc/ada/libgnarl/s-intman__dummy.adb
! 9e0a0f1d08a474220ae6ba5f05dc0cdf  gcc/ada/libgnarl/s-intman__lynxos.adb
! 0928ad01a9218d4083798cbafb3dc24b  gcc/ada/libgnarl/s-intman__mingw.adb
! 969557efb6f32217fd9746f5a913616e  gcc/ada/libgnarl/s-intman__posix.adb
! c4f583876e1a6799b5eef81ae0820b45  gcc/ada/libgnarl/s-intman__qnx.adb
! e3488c4e5e2fea8ab4d8d0de635213bc  gcc/ada/libgnarl/s-intman__solaris.adb
! 8e9747731cc84623fc404e738301c610  gcc/ada/libgnarl/s-intman__susv3.adb
! aa262f5356526e0bb686f4c3af2a849d  gcc/ada/libgnarl/s-intman__vxworks.adb
! f33fd4a21b5f0ff7ae0ed7c18af3623c  gcc/ada/libgnarl/s-intman__vxworks.ads
! 3d738d33b7f4798c5a41d03208ffcebd  gcc/ada/libgnarl/s-linux.ads
! 78e3c67ec40152456a88e14b5743676b  gcc/ada/libgnarl/s-linux__alpha.ads
! ef5e98b4b708aa23bf517c647adbd29f  gcc/ada/libgnarl/s-linux__android.ads
! 5e821f16e129589347cd5cd6ee851576  gcc/ada/libgnarl/s-linux__hppa.ads
! 848c9bbcea54331ded3a388d67c9fa0d  gcc/ada/libgnarl/s-linux__mips.ads
! 77835f4ffa62b6624fee9fd41c5fa3b6  gcc/ada/libgnarl/s-linux__riscv.ads
! 7ff372469339c573051dd650145f9f51  gcc/ada/libgnarl/s-linux__sparc.ads
! f9be795509c5870dd4de94c7bb2cfb1c  gcc/ada/libgnarl/s-linux__x32.ads
! 547c024c5cd8ced2f4ad34bb64c12408  gcc/ada/libgnarl/s-mudido.adb
  e6304ab8465d5bc7fadbcaf1933a0980  gcc/ada/libgnarl/s-mudido.ads
! 8c6ad2d95275273e32239418b137ef48  gcc/ada/libgnarl/s-mudido__affinity.adb
! e48ff4657c850e047e9cb8ea8c8e31a4  gcc/ada/libgnarl/s-osinte__aix.adb
! e1bb0aa97810294458e6591c5120e8c6  gcc/ada/libgnarl/s-osinte__aix.ads
! b63ee7de8c0342326b2a102f5c215934  gcc/ada/libgnarl/s-osinte__android.adb
! 894cbb2bc04ca004d77ae1fee75ce878  gcc/ada/libgnarl/s-osinte__android.ads
! 253cdd1f095109b6d72f157f56fbeba7  gcc/ada/libgnarl/s-osinte__darwin.adb
! 535f0c4d4aa7fd65a2432a3b4b8068b4  gcc/ada/libgnarl/s-osinte__darwin.ads
! 5471292242432f3b2f1180b71162deb8  gcc/ada/libgnarl/s-osinte__dragonfly.adb
! fa846dc58868a34ed9fc1bb9adfa6874  gcc/ada/libgnarl/s-osinte__dragonfly.ads
! 14149a2e88d48f7b1b3d05a2888fdb01  gcc/ada/libgnarl/s-osinte__dummy.ads
! 6d529a44eef816adbb49bfd616355b8d  gcc/ada/libgnarl/s-osinte__freebsd.adb
! ddb4bdb29e84961dfbdaacfa5df4bbc2  gcc/ada/libgnarl/s-osinte__freebsd.ads
! 33229d146db06a563e49c2202a13055c  gcc/ada/libgnarl/s-osinte__gnu.adb
! 0cdfba1b1a4fc27a7388eb6c37700cae  gcc/ada/libgnarl/s-osinte__gnu.ads
! 30b854e3e016d5c462f192e8dff3d3ac  gcc/ada/libgnarl/s-osinte__hpux-dce.adb
! 8c79279519fbe66ed2da7146888253c6  gcc/ada/libgnarl/s-osinte__hpux-dce.ads
! bf62a948fb6414c60873e6f6a040093f  gcc/ada/libgnarl/s-osinte__hpux.ads
! e96fa3af835a6d6d5ce78737b8ed6d75  gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads
! 2febde608b07adda980acf3f13c0c123  gcc/ada/libgnarl/s-osinte__linux.ads
! fff25a1dd6f886ed9e626b85a64bd636  gcc/ada/libgnarl/s-osinte__lynxos178.adb
! 3587612dc8785c12a3d10f9f84444066  gcc/ada/libgnarl/s-osinte__lynxos178e.ads
! 0af5f3478af6003d17d7bbd75532ed01  gcc/ada/libgnarl/s-osinte__mingw.ads
! 6189083f2291dcd9d9bfa4619cffa450  gcc/ada/libgnarl/s-osinte__posix.adb
! ff3f2e428b4d008c758d25aae6cc58ad  gcc/ada/libgnarl/s-osinte__qnx.adb
! 46f37ad7de44ae6d3fa117d62e19d600  gcc/ada/libgnarl/s-osinte__qnx.ads
! 8c87749c0a20c60b0bbe916798b6b9f2  gcc/ada/libgnarl/s-osinte__rtems.adb
! ae2109c24f773547234722e7680c34c0  gcc/ada/libgnarl/s-osinte__rtems.ads
! d7731856f67eda40eef57a397fa778fb  gcc/ada/libgnarl/s-osinte__solaris.adb
! d0aaa116a9e48c6b92a87cec3415c8fe  gcc/ada/libgnarl/s-osinte__solaris.ads
! 4c46de582ae29e47ae7798c256d538a8  gcc/ada/libgnarl/s-osinte__vxworks.adb
! 59465ffb3d2d73008aef3af87ad2d013  gcc/ada/libgnarl/s-osinte__vxworks.ads
! 1a876ab492211e1eb7ac741ec0cf336c  gcc/ada/libgnarl/s-osinte__x32.adb
! 80efb4d852ba36fd2926d42f91bf4f60  gcc/ada/libgnarl/s-proinf.adb
! 6a864e5ee38123edd4251048c9365672  gcc/ada/libgnarl/s-proinf.ads
! 7129c5c014fe8feecf82edf1c55911d5  gcc/ada/libgnarl/s-qnx.ads
! 1bfba289b0b1745708cd3e3ec92bbaee  gcc/ada/libgnarl/s-solita.adb
! 396e319b544b690959507740d7ba6b87  gcc/ada/libgnarl/s-solita.ads
! ed4053116a3dba200c3f281c1ae51384  gcc/ada/libgnarl/s-stusta.adb
! 963072d238c74bef68cef023f45e09d6  gcc/ada/libgnarl/s-stusta.ads
! 7ea916804f86aba20924ccdf01c69cb4  gcc/ada/libgnarl/s-taasde.adb
! 4231bccdd623fa3b33a9aca46fa0e3b0  gcc/ada/libgnarl/s-taasde.ads
! f626d29d15436a582f29c52233b28394  gcc/ada/libgnarl/s-tadeca.adb
! e3c5d870e5fe22aa7dcf6db49fe5543c  gcc/ada/libgnarl/s-tadeca.ads
! 2e4608c27a868d9e010d5e1c0e20d9cb  gcc/ada/libgnarl/s-tadert.adb
! bda5be1ebdb012e81fabc0320a12de9b  gcc/ada/libgnarl/s-tadert.ads
! e70e3501915ce74c804ba91f4fed753a  gcc/ada/libgnarl/s-taenca.adb
! 51a298f6917822d677d07ce46bc19fb0  gcc/ada/libgnarl/s-taenca.ads
! cbc76a4ea9a05326af67a2971b2219be  gcc/ada/libgnarl/s-taprob.adb
! 3163390006693943c80b8fa66eeadae1  gcc/ada/libgnarl/s-taprob.ads
! a44dee0a503d6e42cd69def9cfef4221  gcc/ada/libgnarl/s-taprop.ads
! 9ebec071e09d648d42ee279862a88d44  gcc/ada/libgnarl/s-taprop__dummy.adb
! dbbf1a4dcb002a43c6f703fead38e7ea  gcc/ada/libgnarl/s-taprop__hpux-dce.adb
! 2554a98e60d4e22b69eef3b377760759  gcc/ada/libgnarl/s-taprop__linux.adb
! e099d072002bb09560c006aac1191a94  gcc/ada/libgnarl/s-taprop__mingw.adb
! 4a571b143746ab81ff84bbf99622ea92  gcc/ada/libgnarl/s-taprop__posix.adb
! 45dd7de9ce8e5d5504d1941b6791806c  gcc/ada/libgnarl/s-taprop__qnx.adb
! 513f4e61f1fda7ad43d77eb8809e2a2d  gcc/ada/libgnarl/s-taprop__solaris.adb
! bcf21b3fa59fb51ef1252315a6111de3  gcc/ada/libgnarl/s-taprop__vxworks.adb
! 1e34b436556268b45794225669b9bcac  gcc/ada/libgnarl/s-tarest.adb
! a91651d6142133667a6e7f4a543243d4  gcc/ada/libgnarl/s-tarest.ads
! 2cd6b8d6213e97b61cb337c072bebeb2  gcc/ada/libgnarl/s-tasdeb.adb
! 68e44af71b04ec2a9007f8cda9ffcb82  gcc/ada/libgnarl/s-tasdeb.ads
! a5230093302c216a01fc66b790f4ea1f  gcc/ada/libgnarl/s-tasinf.adb
! 4d7a45c782c0c24b6c72da3f02388be4  gcc/ada/libgnarl/s-tasinf.ads
! 55ca6f8f59fe6e6596efef011d7588db  gcc/ada/libgnarl/s-tasinf__linux.adb
! 0085ed26e300d3bba6c06f209c361a69  gcc/ada/libgnarl/s-tasinf__linux.ads
! 1240fa13bdc58e8db7ccba857aea1293  gcc/ada/libgnarl/s-tasinf__mingw.adb
! 4a10cd39135cedb4a83c102edc3cf520  gcc/ada/libgnarl/s-tasinf__mingw.ads
! b915f146ea78a1482cd9f7a6f009ef6b  gcc/ada/libgnarl/s-tasinf__solaris.adb
! 5d2894d0f05414c4136f3649bd2babae  gcc/ada/libgnarl/s-tasinf__solaris.ads
! 7019beba18a7e542ed3c15dd6ce3ab64  gcc/ada/libgnarl/s-tasinf__vxworks.ads
! 9c30a33990811d2dc0ee9e46fa0f3c71  gcc/ada/libgnarl/s-tasini.adb
! 905eb039f338e367d7f5f8b95af48c0e  gcc/ada/libgnarl/s-tasini.ads
! fa30efb5e4b1a84cf2cb33356c64812d  gcc/ada/libgnarl/s-taskin.adb
! f21551e4844766e99e59af5ca283968e  gcc/ada/libgnarl/s-taskin.ads
! fe3ef14ccdf56df7e8479c57eedd1004  gcc/ada/libgnarl/s-taspri__dummy.ads
! 84057d325c9509dfb940c5106b79d10d  gcc/ada/libgnarl/s-taspri__hpux-dce.ads
! f8be07f0674c918cb14c866504499181  gcc/ada/libgnarl/s-taspri__lynxos.ads
! 67f5ee77ae5b25ab301dc73b65cd46b2  gcc/ada/libgnarl/s-taspri__mingw.ads
! 474ee344de1d8063feb0b6b38fd2777e  gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads
! 05f8564522bacdc57b249cbe957cd60a  gcc/ada/libgnarl/s-taspri__posix.ads
! 3b16768ec8e3eeafc5ad422c612eede2  gcc/ada/libgnarl/s-taspri__solaris.ads
! 127f8e0bda8fe204a688b605e309a4e7  gcc/ada/libgnarl/s-taspri__vxworks.ads
! 14dfc985eccfb1b6ed4c2d0a38679831  gcc/ada/libgnarl/s-tasque.adb
! 1cb6476d4ab341f96e0cc619da72b799  gcc/ada/libgnarl/s-tasque.ads
! b771bcbe5249fe4948ee7e54d799c624  gcc/ada/libgnarl/s-tasren.adb
! d02ff5f9b894a67d15ecab324e500d45  gcc/ada/libgnarl/s-tasren.ads
! edcd3a278497c8176d10d1eba41b60ab  gcc/ada/libgnarl/s-tasres.ads
! c53704111b5068b25a6b280a6f539c40  gcc/ada/libgnarl/s-tassta.adb
! d6e2eec9579318e6c8afde53b4c36d6c  gcc/ada/libgnarl/s-tassta.ads
! 6dc8b937d196beec1647bc6b4953644e  gcc/ada/libgnarl/s-tasuti.adb
! e8a0013ba266c4ee85e43bf1cf904afa  gcc/ada/libgnarl/s-tasuti.ads
! a0e83ad2af9183dd63375ba8d2bf1ed1  gcc/ada/libgnarl/s-tataat.adb
! ee69fd7aab543be69434affb93f2fb42  gcc/ada/libgnarl/s-tataat.ads
! a93ceb9592c496d000e85ee35473bf57  gcc/ada/libgnarl/s-tpinop.adb
! 6cc7684d5a5703cc753dd15f37f908ff  gcc/ada/libgnarl/s-tpinop.ads
! 9f33e3022022fc2db2440dc1ac9ea4c8  gcc/ada/libgnarl/s-tpoaal.adb
! 12e5f992727572c4271470f3a02b1aff  gcc/ada/libgnarl/s-tpoben.adb
! d747b0b9ec2fb339a2b1a6c339a8bb9b  gcc/ada/libgnarl/s-tpoben.ads
! ba1ee3a77439416bdbe8bfb5093eb734  gcc/ada/libgnarl/s-tpobmu.adb
! b9f411f943c9a062dee8bc524a701c37  gcc/ada/libgnarl/s-tpobmu.ads
! 8c6b3e5f0b81f493fe603d31d66db2d9  gcc/ada/libgnarl/s-tpobop.adb
! 749b1a2b8f2147c3ac3ae08fcb790a5c  gcc/ada/libgnarl/s-tpobop.ads
! 43d07e90937d535464a2475196254d87  gcc/ada/libgnarl/s-tpopmo.adb
! 6bdd1880215c39dded4562ea291d0f54  gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb
! 83a0ae84c13ecd20b15b5b94185cf1f2  gcc/ada/libgnarl/s-tpopsp__posix.adb
! ef51bff0c2a3db9f592be2cf00d3b2f3  gcc/ada/libgnarl/s-tpopsp__solaris.adb
! 856ccfabb6b31b1a7c98100293aece2c  gcc/ada/libgnarl/s-tpopsp__tls.adb
! 8d93b0adb08438769215df5d45bb36cd  gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb
! 5399c2a47748d86df68e03da3a461b13  gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb
! 18fef9b5b0d2f6bac17d7d53e13f6420  gcc/ada/libgnarl/s-tpopsp__vxworks.adb
! d8c9886b1a0dec7ab771c2b831e790e5  gcc/ada/libgnarl/s-tporft.adb
! a902f28939292b988e64d9be5260d4b3  gcc/ada/libgnarl/s-tposen.adb
! 43321132b1b551adde16ed0fb27c4d44  gcc/ada/libgnarl/s-tposen.ads
! fcce03cb942165d1ebc804ef03356ebd  gcc/ada/libgnarl/s-vxwext.adb
! b99c2f810a5813047153640bb04f57bf  gcc/ada/libgnarl/s-vxwext.ads
! df8644174c275a3158a992d06ebe7f91  gcc/ada/libgnarl/s-vxwext__kernel-smp.adb
! 496e480bce042f5fff64db422e2cd1a6  gcc/ada/libgnarl/s-vxwext__kernel.adb
! d330e80302f003cd9f458918219d7759  gcc/ada/libgnarl/s-vxwext__kernel.ads
! da2f5457df9b8af38bd11eb8d2cfe3fd  gcc/ada/libgnarl/s-vxwext__noints.adb
! 65eefa8844a8843971f78b77ab9816bc  gcc/ada/libgnarl/s-vxwext__rtp-smp.adb
! 642936dcff2d0c8135a513181a8a2966  gcc/ada/libgnarl/s-vxwext__rtp.adb
! f9a59fdf59bfacd96185b1127c581dfb  gcc/ada/libgnarl/s-vxwext__rtp.ads
! a5631c4f57eb67936303b6c201cf4b55  gcc/ada/libgnarl/s-vxwext__vthreads.ads
! 7b6c96aecc37c28333b69f29c9950766  gcc/ada/libgnarl/s-vxwork__aarch64.ads
! 04931c420e5a5df139f62b468fce66e5  gcc/ada/libgnarl/s-vxwork__arm.ads
! 048ef39d084f5c7d01fac4516ad85b58  gcc/ada/libgnarl/s-vxwork__ppc.ads
! 56dd6d7deca5932d285e8c48b370f815  gcc/ada/libgnarl/s-vxwork__x86.ads
! 078cd6da773ad724e13e28426acd8948  gcc/ada/libgnarl/thread.c
! 7571a27310030c4708deb9e361b1a6c3  gcc/ada/libgnat/a-assert.adb
! 866f57b8f8b1d88089c0ec3ca0e5d505  gcc/ada/libgnat/a-assert.ads
! 50dfd418a2c4a4950c0737d2b2f6c5af  gcc/ada/libgnat/a-btgbso.adb
! e94c8e4e2ef8fbd89beb78d1b4ea15fe  gcc/ada/libgnat/a-btgbso.ads
! 104913692171414b864b805c24cbc890  gcc/ada/libgnat/a-calari.adb
! f0bfc3cd18cc83155d9b574182af4975  gcc/ada/libgnat/a-calari.ads
! 02700d3b60f3e1dc7fc026d6d60c1f03  gcc/ada/libgnat/a-calcon.adb
! 9bb6937c689262fc52e63bffd83d5fc6  gcc/ada/libgnat/a-calcon.ads
! 734bc97e89bfa1b50eadacef612f7c8b  gcc/ada/libgnat/a-caldel.adb
! b9b8bbe2070b9560ec512c220e449dfc  gcc/ada/libgnat/a-caldel.ads
! 6f2630132e8645f2044027cb4923dcb6  gcc/ada/libgnat/a-calend.adb
! 9425a034ac3b5c1ac5f2edaec3e34227  gcc/ada/libgnat/a-calend.ads
! ab4f67517a2e9abb914ef4808d8a47e3  gcc/ada/libgnat/a-calfor.adb
! 8487f8df90a842526d531fea70a96adf  gcc/ada/libgnat/a-calfor.ads
! ab7dfc13d1e0638d7cbdeb8fdec73faa  gcc/ada/libgnat/a-catizo.adb
! d731f2a00c2328507e1708628b8f8534  gcc/ada/libgnat/a-catizo.ads
! ebffb833e7a0e0554365235b73ce54f7  gcc/ada/libgnat/a-cbdlli.adb
! d5f41fe55e97c2abf3b9bdb2e6488c99  gcc/ada/libgnat/a-cbdlli.ads
! b57f75434a369c476d13fba17b43c137  gcc/ada/libgnat/a-cbhama.adb
! 761e1d06ba948ea1d11f5a1df83920bf  gcc/ada/libgnat/a-cbhama.ads
! be0a20e5882ac5c132508abd90fcef07  gcc/ada/libgnat/a-cbhase.adb
! bcc6f8c98a0717b856ca5c4be367da25  gcc/ada/libgnat/a-cbhase.ads
! c4eea50f3042ad04d3900072dd9a23a8  gcc/ada/libgnat/a-cbmutr.adb
! 86e70f628abc8f1d4b5a8b457fd36c2e  gcc/ada/libgnat/a-cbmutr.ads
! 5879c201ee48ee324568f9c77de79249  gcc/ada/libgnat/a-cborma.adb
! ceecd26f8f66a71f10e8c7d0839db329  gcc/ada/libgnat/a-cborma.ads
! 5fe494807434a8ee1542cce74d6f777e  gcc/ada/libgnat/a-cborse.adb
! 5f9c1502b12ba202e4acefc1b7af4279  gcc/ada/libgnat/a-cborse.ads
! 49aaa1cb988638dade7bc2d7b559c190  gcc/ada/libgnat/a-cbprqu.adb
! c9695cec7da45bf9117b504c4969b894  gcc/ada/libgnat/a-cbprqu.ads
! 4665016189859aebe481d33dc8816c4c  gcc/ada/libgnat/a-cbsyqu.adb
! 9a6ddf2cca4eb228bdb982d284b37435  gcc/ada/libgnat/a-cbsyqu.ads
! b31c986a83542ae878369b0cbcebcc56  gcc/ada/libgnat/a-cdlili.adb
! 8a04afa5f594b66565c72711909be2f4  gcc/ada/libgnat/a-cdlili.ads
! 435d6b567defe95ca275e5f78c8d617d  gcc/ada/libgnat/a-cfdlli.adb
! 50a6c44bf58ef87557dab0b1e3478fe1  gcc/ada/libgnat/a-cfdlli.ads
! b62247da58b9913463f3266042fde81c  gcc/ada/libgnat/a-cfhama.adb
! 7ccc3f6e60c5a91b0fcf52e719d5ce99  gcc/ada/libgnat/a-cfhama.ads
! 865f4586a9cb1b0175c5b701f83b5d73  gcc/ada/libgnat/a-cfhase.adb
! 147cf7ed631a0dcfdb447cb04b4dadd4  gcc/ada/libgnat/a-cfhase.ads
! e3e6dc11284f5278b4878802b8e02172  gcc/ada/libgnat/a-cfinve.adb
! a0df14fa3d46c112c92d7657c09d5dfa  gcc/ada/libgnat/a-cfinve.ads
! cd0ec7999232fdd3714577cedc34013d  gcc/ada/libgnat/a-cforma.adb
! a1f5b3e2b4fc121c878997df9e57c94f  gcc/ada/libgnat/a-cforma.ads
! 51989469d7e5b92f1b86773da664da44  gcc/ada/libgnat/a-cforse.adb
! 98ba270b1b114cfc36f45e602591e426  gcc/ada/libgnat/a-cforse.ads
! 96685d034166ebe2782adbaf7cb457a8  gcc/ada/libgnat/a-cgaaso.adb
! 8de884a5e49286da2dc0a401ab355a37  gcc/ada/libgnat/a-cgaaso.ads
! 39cd371ceb30562830618eedd7dd887c  gcc/ada/libgnat/a-cgarso.adb
  ef7fab6c5e61256ac64c9dae1dd27960  gcc/ada/libgnat/a-cgarso.ads
! dfd3081ec5367e91337bccad470d1637  gcc/ada/libgnat/a-cgcaso.adb
  68226484befc5e389cd3dafaab608090  gcc/ada/libgnat/a-cgcaso.ads
! d5c04d126dd7e659dc02316ebed0e174  gcc/ada/libgnat/a-chacon.adb
! 901031518fb7d0ded923751bf4f49232  gcc/ada/libgnat/a-chacon.ads
! 4672143b117578f3153686b570ce3d4e  gcc/ada/libgnat/a-chahan.adb
! d3283b3045b0e3de15a5a1b53c7b7cfe  gcc/ada/libgnat/a-chahan.ads
  00b37c98f6f96d2b5499c1f98cb503f0  gcc/ada/libgnat/a-charac.ads
  afa2e1575497c9ce53cef7122846df58  gcc/ada/libgnat/a-chlat1.ads
! d5d13db548dba4e8f72d9de72d1077af  gcc/ada/libgnat/a-chlat9.ads
! 7c679067a27023f9ed5e3c36ddfcc35b  gcc/ada/libgnat/a-chtgbk.adb
! 5a5cade0895c382d5f8bee52e4152707  gcc/ada/libgnat/a-chtgbk.ads
! 8c19039ec12e43ce141466d7956b0dbb  gcc/ada/libgnat/a-chtgbo.adb
! 9375ffbcbb6ca101db1151e5d8abeabb  gcc/ada/libgnat/a-chtgbo.ads
! a0f229404b213c47237e25efa730cfa6  gcc/ada/libgnat/a-chtgke.adb
! 06e647607aec0c1b03927023b2a729dd  gcc/ada/libgnat/a-chtgke.ads
! 6d35e49ce9283da9ca5fde258b121fd4  gcc/ada/libgnat/a-chtgop.adb
! d614120aadeab925fb0382750806b2dc  gcc/ada/libgnat/a-chtgop.ads
! f6319dd94ac15ba229e4c59f133d1912  gcc/ada/libgnat/a-chzla1.ads
! 7bcf03e03057101b286e76a9b8610d47  gcc/ada/libgnat/a-chzla9.ads
! e5be9059f323caafddabf56d30fe9c1e  gcc/ada/libgnat/a-cidlli.adb
! 13ab75f9366201080608595868389776  gcc/ada/libgnat/a-cidlli.ads
! ed41e7635ee3f70cc9695e1e86f4a0c4  gcc/ada/libgnat/a-cihama.adb
! a85e9c15e0f968c419b582e73cc67407  gcc/ada/libgnat/a-cihama.ads
! 6d77d362f8a03571b405a72e99ed76c4  gcc/ada/libgnat/a-cihase.adb
! 42a46a6e0341e46e1738bf9aa503e033  gcc/ada/libgnat/a-cihase.ads
! e6f7acbbd06754b7bdc764f701379547  gcc/ada/libgnat/a-cimutr.adb
! 8fa70fa4e557516d34043f56d0eaf9d4  gcc/ada/libgnat/a-cimutr.ads
! 16463570e3e60a240e54a857af077642  gcc/ada/libgnat/a-ciorma.adb
! a07f64ff2da675f2492734cff07a6205  gcc/ada/libgnat/a-ciorma.ads
! 9b1443ed8da599158b84b5ea42b9f913  gcc/ada/libgnat/a-ciormu.adb
! e8a719498a1fac28b1516c11a1728643  gcc/ada/libgnat/a-ciormu.ads
! 6488bf12c91ed3b5877f066bbf58fc0f  gcc/ada/libgnat/a-ciorse.adb
! 739856f8ffb603e44c7467755f0aa6d2  gcc/ada/libgnat/a-ciorse.ads
! 7aeb0fb0d435c6f0b194141f6ecf52f4  gcc/ada/libgnat/a-clrefi.adb
! 83f8251fa2c48abb3b89da1cb64c08a7  gcc/ada/libgnat/a-clrefi.ads
! a482eeff7d57c2316400f7dc4cc69f53  gcc/ada/libgnat/a-coboho.adb
! ab19343fe19433f8f36c71af2b8250b7  gcc/ada/libgnat/a-coboho.ads
! b755f1241d0860b233fb52e3def6f6d1  gcc/ada/libgnat/a-cobove.adb
! 8eb16590730030d2bef3f1a9cfc5afa1  gcc/ada/libgnat/a-cobove.ads
! 4db8d43e25d619ae3151f441feeac95e  gcc/ada/libgnat/a-cofove.adb
! 77e15ef3e99619f1306f077afbe2c808  gcc/ada/libgnat/a-cofove.ads
! 9fc03e3296775dab8cd70ecafb32c007  gcc/ada/libgnat/a-cofuba.adb
! 65d67b9f57c8f0c903af7ca1d88cb1ae  gcc/ada/libgnat/a-cofuba.ads
! f9460b1a69d3d3c46d12d9e55aff3aec  gcc/ada/libgnat/a-cofuma.adb
! 5d2b608ee5f36560f397125a2993b61a  gcc/ada/libgnat/a-cofuma.ads
! fe2b1246b4ebadd5fc2c471291e286f9  gcc/ada/libgnat/a-cofuse.adb
! 9e6db7cbc8cce53e4dfde4612fe08678  gcc/ada/libgnat/a-cofuse.ads
! ed65d273ac11ec7375aa05327221e4ab  gcc/ada/libgnat/a-cofuve.adb
! 52650330b6f2be4baa5c532fa37398eb  gcc/ada/libgnat/a-cofuve.ads
! eb06668687bf8f535534de9b28bbc741  gcc/ada/libgnat/a-cogeso.adb
! 14fb2e7fd94b4f593a5a6c702466735f  gcc/ada/libgnat/a-cogeso.ads
! 3c6cad35ba4a30f7ab61de626ff7ddb5  gcc/ada/libgnat/a-cohama.adb
! 75a13a3342d5e85443a2703f37cf6f4a  gcc/ada/libgnat/a-cohama.ads
! 6dc0ee45e3bfdd812a5a53ffbb1f0512  gcc/ada/libgnat/a-cohase.adb
! b40179f53f84178611e5648e966d8d59  gcc/ada/libgnat/a-cohase.ads
! 14fa1da9cb7349183760c72eab16c3a8  gcc/ada/libgnat/a-cohata.ads
! 8e0d196507a265a75ff79bd7baa6e93e  gcc/ada/libgnat/a-coinho.adb
! a40c2cb583012c0d7e68324b0a9ac4a1  gcc/ada/libgnat/a-coinho.ads
! 7604c7f4222e3703eafc49ff7e67884c  gcc/ada/libgnat/a-coinho__shared.adb
! 9a541a3fdfd61506773057a56d3428af  gcc/ada/libgnat/a-coinho__shared.ads
! 691b877810c91b1688255e102c440bf7  gcc/ada/libgnat/a-coinve.adb
! 09d7c38c5e6456f352d5737407089e72  gcc/ada/libgnat/a-coinve.ads
! 0842ab9868684d1c41744061d7ca86c6  gcc/ada/libgnat/a-colien.adb
! f36e0eb2cbe60ca0289fa9efdf077a6c  gcc/ada/libgnat/a-colien.ads
! a9a21cd93a4fa8edac7bae563900335f  gcc/ada/libgnat/a-colire.adb
! 299356e1d249869c69a2c8b12ecd6072  gcc/ada/libgnat/a-colire.ads
! a34874fb46b45d50647658c415f3d939  gcc/ada/libgnat/a-comlin.adb
! cfe799b8e08c0f4cbe1729b27d0047f1  gcc/ada/libgnat/a-comlin.ads
! bdfe4f573d38eed2d9efecde45e9cd00  gcc/ada/libgnat/a-comutr.adb
! 692cbf509737510e311509df4b7476f6  gcc/ada/libgnat/a-comutr.ads
! a8fad0896d5d15b9263631ad58caedd0  gcc/ada/libgnat/a-conhel.adb
! 7ed1d366f6e7d963e62d625d3cbb7f38  gcc/ada/libgnat/a-conhel.ads
  38baf99435420fa514890cac49ee9242  gcc/ada/libgnat/a-contai.ads
! a2a45e43d2e4dc07260af601cfbf8a55  gcc/ada/libgnat/a-convec.adb
! b4ad14c007382a54b3c6fd09d4266dc9  gcc/ada/libgnat/a-convec.ads
! 33a335abfcdf3e278aa15d4badfe1da4  gcc/ada/libgnat/a-coorma.adb
! 258a413c409730066e2e0d2072609178  gcc/ada/libgnat/a-coorma.ads
! 5f9fef1ec0f19e31a6a1f8303fcc99b8  gcc/ada/libgnat/a-coormu.adb
! d1dea1b8844d0781c77c27541d9de520  gcc/ada/libgnat/a-coormu.ads
! f942f1acbf28ed0bc0e4828428467d88  gcc/ada/libgnat/a-coorse.adb
! 09ded9a71d3a4fe70ab25c13c32cd139  gcc/ada/libgnat/a-coorse.ads
! d9da76834dc3c6324a653866493d417a  gcc/ada/libgnat/a-coprnu.adb
! 889a01a8c4c313e24cbb7de278433bf0  gcc/ada/libgnat/a-coprnu.ads
  2399731eabd6e0bbc0a8f28a60d3c3c8  gcc/ada/libgnat/a-coteio.ads
! 6ff101b0487edc20c22293b7ef7cafc4  gcc/ada/libgnat/a-crbltr.ads
! 3dc3055f01d015a5362c6ae411ce8841  gcc/ada/libgnat/a-crbtgk.adb
! 23cce6013f0a629efccd81464736a342  gcc/ada/libgnat/a-crbtgk.ads
! 180a355e882f9ea2f29d6466a140a39b  gcc/ada/libgnat/a-crbtgo.adb
! 27f286b032f38f085322814175753784  gcc/ada/libgnat/a-crbtgo.ads
! fa90dc02b61ae0661b5536e094234fa5  gcc/ada/libgnat/a-crdlli.adb
! 60a263f015b27196c850bcd5960792a5  gcc/ada/libgnat/a-crdlli.ads
! 1a3841e8d868f658a8dac1aae1b50ca6  gcc/ada/libgnat/a-csquin.ads
! 700dea87cd1ddc5f05a1c182ac5bc1d3  gcc/ada/libgnat/a-cuprqu.adb
! b8d34586e507b1c89a2ebcc55b93ed15  gcc/ada/libgnat/a-cuprqu.ads
! 00ce942fdc0453c9aebdf3c8cd938c54  gcc/ada/libgnat/a-cusyqu.adb
! f145b32529b2c1021eebc46321cbdca3  gcc/ada/libgnat/a-cusyqu.ads
! 537dca063ecd08e9fe0a68a97e4590d8  gcc/ada/libgnat/a-cwila1.ads
! c943c1017aeed88b81479556b426636e  gcc/ada/libgnat/a-cwila9.ads
! cfdc98fafc541540714b13e2188bd862  gcc/ada/libgnat/a-decima.adb
! 17512acb8794f52dfa7b4c7e7b622c2e  gcc/ada/libgnat/a-decima.ads
! 0dfc43ee29274767c7857d6ba9717d03  gcc/ada/libgnat/a-decima__128.ads
! 59d17c1b6ab4bb37cfeef30d94c40e59  gcc/ada/libgnat/a-dhfina.adb
! ba0e80f1aa48967c7655e4a9cf94eb96  gcc/ada/libgnat/a-dhfina.ads
! 9aaa6dbf369285c77a7726778072c97c  gcc/ada/libgnat/a-diocst.adb
! 9eac017de9b6e80601aa117ed2108bfc  gcc/ada/libgnat/a-diocst.ads
! a85a51d5a059ffeaf2996a661dc34d48  gcc/ada/libgnat/a-direct.adb
! eb6808c132e2b20655f30d4caeb81f85  gcc/ada/libgnat/a-direct.ads
! 78c1c57c479ba3ac923e1de375589556  gcc/ada/libgnat/a-direio.adb
! 873193f322dd1be3fd138a874af71158  gcc/ada/libgnat/a-direio.ads
! 02ce1d66769d765593deb52aa97c8bdc  gcc/ada/libgnat/a-dirval.adb
! a6e30370cedbacf95fe1364522819e14  gcc/ada/libgnat/a-dirval.ads
! 3df4b653027ab90eb8e4534f3677fb8a  gcc/ada/libgnat/a-dirval__mingw.adb
! fa1dffe9fbedd41b913bcc573676c5c0  gcc/ada/libgnat/a-einuoc.adb
! 55348bbc8d69807bce26601a54b1875c  gcc/ada/libgnat/a-einuoc.ads
! a20f83807e21d19e95cb306222d4387f  gcc/ada/libgnat/a-elchha.adb
! 5bd7a66868af8e2f305384a347478fdf  gcc/ada/libgnat/a-elchha.ads
! 5ceead8a586d23a55d8b309a55555435  gcc/ada/libgnat/a-elchha__vxworks-ppc-full.adb
! d1e3db1ebeb3803711402a4184b3ea20  gcc/ada/libgnat/a-envvar.adb
  e77a221e76c3e19394bf433277f04c0f  gcc/ada/libgnat/a-envvar.ads
! 4e73bf3ce74c1149f961c1e3c4753727  gcc/ada/libgnat/a-excach.adb
! ec76090a3532c9768a9de9b57e1e0266  gcc/ada/libgnat/a-except.adb
! f6b2383f91b2d3f9658be8d89d13c0e0  gcc/ada/libgnat/a-except.ads
! 57205ba46feb1e62f32658ef8ad8525d  gcc/ada/libgnat/a-exctra.adb
! d3da51344299766028689d3994924b35  gcc/ada/libgnat/a-exctra.ads
! 03e86ae3688bb00bc870d02fe58c8e99  gcc/ada/libgnat/a-exexda.adb
! 0217cec719cc427b8ba3e58d34c1b690  gcc/ada/libgnat/a-exexpr.adb
! 44336c7e56f8838139f486841efc9a21  gcc/ada/libgnat/a-exextr.adb
! 804667bf2a1c763c8da0bc3d7a4625c3  gcc/ada/libgnat/a-exstat.adb
! ec83ae24d146ddb6969eb6be98645d75  gcc/ada/libgnat/a-finali.adb
! c21f451195b9547d68e71b1a094a2865  gcc/ada/libgnat/a-finali.ads
  b6ba93109a253e15591b1eefa685bc24  gcc/ada/libgnat/a-flteio.ads
  f7e337bf223b3a491d58fb6db81ef7b1  gcc/ada/libgnat/a-fwteio.ads
  2bf5d12193c278c4a482ae0dda1129a9  gcc/ada/libgnat/a-fzteio.ads
*************** de36bb3500d42e22590ce1501e11ef70  gcc/ad
*** 1258,1281 ****
  e0dd600379e462e3991feecefb0505c7  gcc/ada/libgnat/a-llitio.ads
  1f58cac87b9546727c792ea430084a50  gcc/ada/libgnat/a-lliwti.ads
  efa823912da5d16e6f8d4aa6f78b768a  gcc/ada/libgnat/a-llizti.ads
! e891816f481165380fddf56f0541a8b9  gcc/ada/libgnat/a-locale.adb
! d3cd00db6429224b07a46257bfd284b3  gcc/ada/libgnat/a-locale.ads
! b9cf1b1f36e3dd0d4e0edd935f2a451c  gcc/ada/libgnat/a-nbnbin.adb
! 61ccecf2b7b86f66e7621fc3883d6505  gcc/ada/libgnat/a-nbnbin.ads
! bb7614d2de2355d71d33a0daaade4ec5  gcc/ada/libgnat/a-nbnbin__gmp.adb
! 9c7deb136bbc8034c912f3b65467dc9f  gcc/ada/libgnat/a-nbnbre.adb
! 7cfce6a256a10927c17576f10c73e3f1  gcc/ada/libgnat/a-nbnbre.ads
  f8a74f5169bf9eba09b0050d2ce025f4  gcc/ada/libgnat/a-ncelfu.ads
! a55c6df7cdf1337926564bbd59d908f9  gcc/ada/libgnat/a-ngcefu.adb
  2e229d27b615410dbc242fd1d7d4bd98  gcc/ada/libgnat/a-ngcefu.ads
! 2764ee160d4a0aa32a04704d5114c201  gcc/ada/libgnat/a-ngcoar.adb
  a26d13d8c2030d72490c9b3c42f94f28  gcc/ada/libgnat/a-ngcoar.ads
! ba0f4527a77ff0ef61e6e4f8e49b5dfc  gcc/ada/libgnat/a-ngcoty.adb
! 5e6183a93eb34a0b07e645e921a70508  gcc/ada/libgnat/a-ngcoty.ads
! 9bb44d9b2bac6a86eedff63bbd0745fa  gcc/ada/libgnat/a-ngelfu.adb
! 9fdc8d834c01532d292d924c756d3860  gcc/ada/libgnat/a-ngelfu.ads
! bd03adb7269fe76905a85df2e7ec04cd  gcc/ada/libgnat/a-ngrear.adb
! c074eabbf833516c5fcd3c1fe18af7c2  gcc/ada/libgnat/a-ngrear.ads
  7f894c161f872e68b50172715a8a311e  gcc/ada/libgnat/a-nlcefu.ads
  307582c16af8c2d164031fd8dfb72581  gcc/ada/libgnat/a-nlcoar.ads
  2341d761d1df9c74f5d4396b2a243874  gcc/ada/libgnat/a-nlcoty.ads
--- 1283,1317 ----
  e0dd600379e462e3991feecefb0505c7  gcc/ada/libgnat/a-llitio.ads
  1f58cac87b9546727c792ea430084a50  gcc/ada/libgnat/a-lliwti.ads
  efa823912da5d16e6f8d4aa6f78b768a  gcc/ada/libgnat/a-llizti.ads
! d90ff1db87e7c9bf483659701a55671c  gcc/ada/libgnat/a-llltio.ads
! b8fcc586001cbdaddc04c29fc016fa48  gcc/ada/libgnat/a-lllwti.ads
! 5faeef2817310c83968117416e0120b0  gcc/ada/libgnat/a-lllzti.ads
! 45fa2df9387fae84d3ba3ade42e0682b  gcc/ada/libgnat/a-locale.adb
! d22e1ca62d75a4e0e8023a34b7863b49  gcc/ada/libgnat/a-locale.ads
! 23b44f413e4b80dbecc0e33168fb5f95  gcc/ada/libgnat/a-nagefl.ads
! c52e9e8933b773432bfa87331620f917  gcc/ada/libgnat/a-naliop.ads
! a959bd8bae8da9f00fd5f91efa286917  gcc/ada/libgnat/a-naliop__nolibm.ads
! 18bd20017a389a91f420a1cb17167669  gcc/ada/libgnat/a-nallfl.ads
! 4595410eb65e66ef7cbd32fcbd66def3  gcc/ada/libgnat/a-nallfl__wraplf.ads
! c5e8730e95401b8aa869382ff80f649a  gcc/ada/libgnat/a-nalofl.ads
! 7c042990bdd9a04daf0cc84a3e3fba4b  gcc/ada/libgnat/a-nashfl.ads
! 059c349b3ea537d1e3b772e0caa1d40b  gcc/ada/libgnat/a-nashfl__wraplf.ads
! 508eca4d1e5d19d392789b69ac605ea1  gcc/ada/libgnat/a-nbnbin.adb
! 7811ac446706dea5c20591610f9af751  gcc/ada/libgnat/a-nbnbin.ads
! f2dca2652e1c099596ef863854248921  gcc/ada/libgnat/a-nbnbin__gmp.adb
! c0c0bf5d143d9b3bb8646f51b72ef861  gcc/ada/libgnat/a-nbnbre.adb
! 67bc747ca7c871121c3f54d1c836d6a3  gcc/ada/libgnat/a-nbnbre.ads
  f8a74f5169bf9eba09b0050d2ce025f4  gcc/ada/libgnat/a-ncelfu.ads
! 5125d4f41876a386b0e8bf540b07d86e  gcc/ada/libgnat/a-ngcefu.adb
  2e229d27b615410dbc242fd1d7d4bd98  gcc/ada/libgnat/a-ngcefu.ads
! f508133ab0dab1217aa33e72374486c6  gcc/ada/libgnat/a-ngcoar.adb
  a26d13d8c2030d72490c9b3c42f94f28  gcc/ada/libgnat/a-ngcoar.ads
! 04c826aa5fde661e20708f1f008d9c0b  gcc/ada/libgnat/a-ngcoty.adb
! 2a202fa0d154986212702488cea5dc12  gcc/ada/libgnat/a-ngcoty.ads
! 0d9713a59ea26518625dbf4d00150473  gcc/ada/libgnat/a-ngelfu.adb
! 4bdba1ee485a383c0c5346adb028a3ae  gcc/ada/libgnat/a-ngelfu.ads
! 9f3c43762dab180e5fe4166bdd4eebc6  gcc/ada/libgnat/a-ngrear.adb
! 671b98acd48d6c8c1aff06ba18a1733e  gcc/ada/libgnat/a-ngrear.ads
  7f894c161f872e68b50172715a8a311e  gcc/ada/libgnat/a-nlcefu.ads
  307582c16af8c2d164031fd8dfb72581  gcc/ada/libgnat/a-nlcoar.ads
  2341d761d1df9c74f5d4396b2a243874  gcc/ada/libgnat/a-nlcoty.ads
*************** dc556e736d290554bf97bb7153c2e96b  gcc/ad
*** 1289,2668 ****
  ed8c8d1cff975d8128d8a34e6fa60333  gcc/ada/libgnat/a-nscefu.ads
  ae6657265a333ec061d886c2e0a9be47  gcc/ada/libgnat/a-nscoty.ads
  c7bddd6abb488c8cd0d9982769254df5  gcc/ada/libgnat/a-nselfu.ads
! 8decde70e975432bff9eca0d13d532b2  gcc/ada/libgnat/a-nubinu.ads
  22a793d6936415ee70b725c6d2b2020a  gcc/ada/libgnat/a-nucoar.ads
  bda677b507deb699333f9baa2c37a694  gcc/ada/libgnat/a-nucoty.ads
! c08d3647ac21703ea6f1c72cf1cfe902  gcc/ada/libgnat/a-nudira.adb
! b2f94a33fafe5cc7bbfcebf61905b4ef  gcc/ada/libgnat/a-nudira.ads
  bd9eed0e40585ba218b0badca225b64c  gcc/ada/libgnat/a-nuelfu.ads
! 0accf8c6c27cd1e771fd983c410f9936  gcc/ada/libgnat/a-nuflra.adb
! 10fce25d6863c7ff9517aa92a76452c8  gcc/ada/libgnat/a-nuflra.ads
! e84a3fce8f9d7bb34d47931729909408  gcc/ada/libgnat/a-numaux.ads
! cfdbe9fe09de372ff22a28679ff7ea1e  gcc/ada/libgnat/a-numaux__darwin.adb
! 41cfb852cf2974aee75a019bb97c5e94  gcc/ada/libgnat/a-numaux__darwin.ads
! 49da4d3b29b735d68819e96474e3802d  gcc/ada/libgnat/a-numaux__libc-x86.ads
! b977846d74087cd10c327a711ff302b3  gcc/ada/libgnat/a-numaux__vxworks.ads
! 6ade87d5253ae044a2c8a588a1ff0010  gcc/ada/libgnat/a-numaux__x86.adb
! 5c96f460c2ac2a997f90acd93e6af9e4  gcc/ada/libgnat/a-numaux__x86.ads
! 9f619edc4ba691a0be947731d8134f51  gcc/ada/libgnat/a-numeri.ads
  88b948f6713b009c76e8b3b7b75a22c9  gcc/ada/libgnat/a-nurear.ads
! 8f1ee036d0615bc734feb8ebca3261dd  gcc/ada/libgnat/a-rbtgbk.adb
! b520e9e5d46a4fa0be683d44f1687a30  gcc/ada/libgnat/a-rbtgbk.ads
! c921bef3b4822ea1bc265e53f672b492  gcc/ada/libgnat/a-rbtgbo.adb
! 2962e7b5ff4f5c27499ac8e9af0f95f3  gcc/ada/libgnat/a-rbtgbo.ads
! 05c2da72a50436bc53d8ee48808f41dd  gcc/ada/libgnat/a-rbtgso.adb
! 70060b06c3ee0674b0b04cd38f1ed82c  gcc/ada/libgnat/a-rbtgso.ads
! 520ab2e0db65eaa5692753ce64f7af77  gcc/ada/libgnat/a-sbecin.adb
! 48757c38b3ea59367583238f912e3244  gcc/ada/libgnat/a-sbecin.ads
! 91e99e1fbdbb38d5882e57117ea9622e  gcc/ada/libgnat/a-sbhcin.adb
! 2ea222ec346ea4fbf9b888afdb8a6cc0  gcc/ada/libgnat/a-sbhcin.ads
! 54d392acb218325170d01112f14aa26c  gcc/ada/libgnat/a-sblcin.adb
! ffd68e26202487103bf8f818ad7315b2  gcc/ada/libgnat/a-sblcin.ads
  67b280f23d76be962783b397ef7e60c7  gcc/ada/libgnat/a-scteio.ads
! ba3a0bcdf97b25d93834fc62b4ea2645  gcc/ada/libgnat/a-secain.adb
! dd0cc658cd87cd627af50d4ea5928a4e  gcc/ada/libgnat/a-secain.ads
! 4a064ea3425f5c452c6a0515d4760af8  gcc/ada/libgnat/a-sequio.adb
! e4da4164fb1f8b1f53d760a1c6488a5c  gcc/ada/libgnat/a-sequio.ads
! cf9997556a219afcfb544e1ec1a117ea  gcc/ada/libgnat/a-sfecin.ads
! a7da9d6825f29516a7094389ced5cc8c  gcc/ada/libgnat/a-sfhcin.ads
! a1debcf89e4cc432c57600f143e6f80a  gcc/ada/libgnat/a-sflcin.ads
  43123af888cd4637ee6a1eaf9dde9e34  gcc/ada/libgnat/a-sfteio.ads
  63d0f0f0aed733a972873cb3a4b767ea  gcc/ada/libgnat/a-sfwtio.ads
  7207d517b5474be90def505e3a2be187  gcc/ada/libgnat/a-sfztio.ads
! 90b1f35f65ea0d07533d003a75605263  gcc/ada/libgnat/a-shcain.adb
! 253c5b34f0120e664089aaaaa31a9dcb  gcc/ada/libgnat/a-shcain.ads
! ed6b93c0ee4f04998ede0ba6ed330fb3  gcc/ada/libgnat/a-siocst.adb
! 46ddee9bca38dd2fdda7190e3af440dc  gcc/ada/libgnat/a-siocst.ads
  6fce3ea5eecdf93f2ec7d0446ebd14af  gcc/ada/libgnat/a-siteio.ads
  9330fbe80fe3844d3bf5aeb4946381f6  gcc/ada/libgnat/a-siwtio.ads
  c816a5bc136362b2468801e67deb9ae9  gcc/ada/libgnat/a-siztio.ads
! f7ef6a18cb978f1a7cc51d1f22524a03  gcc/ada/libgnat/a-slcain.adb
! d382103d6505631e720337e1258785cd  gcc/ada/libgnat/a-slcain.ads
! 70b04043871a3d7aee3685b145279477  gcc/ada/libgnat/a-ssicst.adb
! 313a1d1bcaa13687c02164cfe0f4cd63  gcc/ada/libgnat/a-ssicst.ads
  3ec2f925719d14de3a80c38042157f78  gcc/ada/libgnat/a-ssitio.ads
  387afdf3ceb85d07a14d8ae4e2f0eeec  gcc/ada/libgnat/a-ssiwti.ads
  366683e8278e7e71bc63a8c7a3f2238f  gcc/ada/libgnat/a-ssizti.ads
! bead75397a1fe7fbe0ce5e2d71fdc752  gcc/ada/libgnat/a-stboha.adb
  8274f77970c3b1ed9a51aa8ddf6a4d0f  gcc/ada/libgnat/a-stboha.ads
  756f44b0c7f4483ecd7302aee8bc110a  gcc/ada/libgnat/a-stfiha.ads
! c390e8e9f5ea8463a1c78145c5208783  gcc/ada/libgnat/a-stmaco.ads
! ab2ff4be77b2344fd2997828f38aa641  gcc/ada/libgnat/a-storio.adb
  34175bb2f712422ab4cfd24b3e452b0d  gcc/ada/libgnat/a-storio.ads
! fa13c8aa122addeecccee34f56ee628c  gcc/ada/libgnat/a-strbou.adb
! 7c3db37cac27fee016186fb26b43dc59  gcc/ada/libgnat/a-strbou.ads
! 5ab26ba538dfbaf84643eff82ca47628  gcc/ada/libgnat/a-stream.adb
! b5d65d90a63a96cae12a44f656c1d2b1  gcc/ada/libgnat/a-stream.ads
! cca82ee6ca3eac5cf93447fe0449b6b0  gcc/ada/libgnat/a-strfix.adb
! 45093729b1ee14deba2c48de390e895f  gcc/ada/libgnat/a-strfix.ads
! 781a07689e4e5bd75c305bc32c4badf6  gcc/ada/libgnat/a-strhas.adb
  930f541d2f838554d072231b1bcb510a  gcc/ada/libgnat/a-strhas.ads
  de0f93afe5feaf6819d5a9a2e09172e6  gcc/ada/libgnat/a-string.ads
! a3a02f10a1b96fc8ca8b84dd08f29be8  gcc/ada/libgnat/a-strmap.adb
! 90def146908a4c9422ade2e5e7a19ed2  gcc/ada/libgnat/a-strmap.ads
! 7f2b807e83c97b9d9b472aa0ae1c4a93  gcc/ada/libgnat/a-strsea.adb
! f11af535bd201cd35b566f1d9b3dc086  gcc/ada/libgnat/a-strsea.ads
! 3a3046013a18de635458476d36049b10  gcc/ada/libgnat/a-strsup.adb
! 50d1fcbcc916e930d09e069d7dba176f  gcc/ada/libgnat/a-strsup.ads
! cb16c749007207c58844f72502c4cde0  gcc/ada/libgnat/a-strunb.adb
! 4a1e6ef477ffb9493d00f1b778e0f9c9  gcc/ada/libgnat/a-strunb.ads
! c4221d7bd2bebd9694673d8fbb521859  gcc/ada/libgnat/a-strunb__shared.adb
! 6808e12f8ff9efa28aab74c3c3eaae9d  gcc/ada/libgnat/a-strunb__shared.ads
! 324005fc1ba14c63665ec70ff138ae17  gcc/ada/libgnat/a-ststio.adb
! 14faafe8b69e8c5a4d5761210750eaa4  gcc/ada/libgnat/a-ststio.ads
! 4524e43fc12d0f354c04b9f668f7eba7  gcc/ada/libgnat/a-stunau.adb
! 2c410a10b077880fd4935010d459db4f  gcc/ada/libgnat/a-stunau.ads
! 5586def981502299a680710605190121  gcc/ada/libgnat/a-stunau__shared.adb
! dd7869827e9ac35aa7bd9000dff1c0f3  gcc/ada/libgnat/a-stunha.adb
  da4a8d13f76850d714a8213ada7477d2  gcc/ada/libgnat/a-stunha.ads
! df099990d5c102e8cb8b03734072857f  gcc/ada/libgnat/a-stuten.adb
  91801320eab187501cb48bd0c74a06b0  gcc/ada/libgnat/a-stuten.ads
! dfb79a73982cc6bb0c5151658f3325ab  gcc/ada/libgnat/a-stwibo.adb
! 7059d7be64b2765f32b096c806a5784f  gcc/ada/libgnat/a-stwibo.ads
! ffadc375f9fd25290ed50f11b7f39bd3  gcc/ada/libgnat/a-stwifi.adb
  b0cf3f05e49e1640bf231034269cb951  gcc/ada/libgnat/a-stwifi.ads
! 0acff5611cac530c26fcf5d3c6f759c3  gcc/ada/libgnat/a-stwiha.adb
  3255ad19d07346032c9d005d6a27475f  gcc/ada/libgnat/a-stwiha.ads
! 202be402a51f4af0e1224046c2ce13eb  gcc/ada/libgnat/a-stwima.adb
! c2164a149570cedbf588bb5b36ef992c  gcc/ada/libgnat/a-stwima.ads
! c71841d90cb03e76a04438c2ebaa02f6  gcc/ada/libgnat/a-stwise.adb
! 7d17a3aaaaa58c8aebe3c07475b00530  gcc/ada/libgnat/a-stwise.ads
! 37a3111ff643a298668d43bca6e3f2de  gcc/ada/libgnat/a-stwisu.adb
! 2304fbdb2772db62ac11e4351f7f6ad1  gcc/ada/libgnat/a-stwisu.ads
! 62b925e660b89c4ff477aaefde7474fc  gcc/ada/libgnat/a-stwiun.adb
! 345ea188e0006b8dce1b804df46717d7  gcc/ada/libgnat/a-stwiun.ads
! e7c6e1196ac436d205422b3ca74b2aed  gcc/ada/libgnat/a-stwiun__shared.adb
! 4b2cd39d8b4bdab487fe5dad534d5964  gcc/ada/libgnat/a-stwiun__shared.ads
! fc30c520201e06e8e86f9b65bb25a1ec  gcc/ada/libgnat/a-stzbou.adb
! b4609062053370abbb10542c089699ea  gcc/ada/libgnat/a-stzbou.ads
! 4b7812e2fa35b5e992e6b67640e6d694  gcc/ada/libgnat/a-stzfix.adb
  f3ddc25c20b07c4072918c6c0ea20ff9  gcc/ada/libgnat/a-stzfix.ads
! c9f2dd4d205243bbcbc3fb99aa6a4f73  gcc/ada/libgnat/a-stzhas.adb
! 3df83f23d7cac52e295edff333f62d18  gcc/ada/libgnat/a-stzhas.ads
! eb526219172fbe9fea26639d97d853f6  gcc/ada/libgnat/a-stzmap.adb
! fbccf722f515da67946d9403a7323b96  gcc/ada/libgnat/a-stzmap.ads
! 6f374bae7dfc0a47114fd013be314145  gcc/ada/libgnat/a-stzsea.adb
! 83f7dd63fc3facdcde695780aa375630  gcc/ada/libgnat/a-stzsea.ads
! d1f9f663517c4803a4c002b6205fe2b4  gcc/ada/libgnat/a-stzsup.adb
! 0866ecd9d1368c9603173f9109237eca  gcc/ada/libgnat/a-stzsup.ads
! 4dd26a4b8b3916212a470d26f94c1c3e  gcc/ada/libgnat/a-stzunb.adb
! c9bd5cdd9fce1696eede7d70db558ca1  gcc/ada/libgnat/a-stzunb.ads
! e5b9537b35f7e966d21bb13ae628e50b  gcc/ada/libgnat/a-stzunb__shared.adb
! afde6ba283d46e8ba3067820d2f7b93a  gcc/ada/libgnat/a-stzunb__shared.ads
! b616fb405d53deb0aa259eb5e93e41c3  gcc/ada/libgnat/a-suecin.adb
! b3356db4ede070153cf410076696840b  gcc/ada/libgnat/a-suecin.ads
! ace304e566555543535851d9726d5015  gcc/ada/libgnat/a-suenco.adb
  24c625ef90e191bc1baa69c58ae2600f  gcc/ada/libgnat/a-suenco.ads
! 74183459569c5fd10864b436a775ba2c  gcc/ada/libgnat/a-suenst.adb
  5a81ae9196b241db71c16198169dbed7  gcc/ada/libgnat/a-suenst.ads
! 3bfe5bfbd8694441cb804278faac8805  gcc/ada/libgnat/a-suewst.adb
  88073629f5531c7f6fba98820112cd02  gcc/ada/libgnat/a-suewst.ads
! 013ebb39b64c8e075e3a9bf26807b65b  gcc/ada/libgnat/a-suezst.adb
  5aaf32a65e951f050f1cbb5adf5af9d2  gcc/ada/libgnat/a-suezst.ads
! d7300c7dc1c46c05e89db2ef526d2e7a  gcc/ada/libgnat/a-suhcin.adb
! 7cc6b96680e517f14d505217913a55a5  gcc/ada/libgnat/a-suhcin.ads
! 24f5b3531931adf2324c3d5fc9fa2014  gcc/ada/libgnat/a-sulcin.adb
! 82856af9a25102d9bc664ddbf8d0bf84  gcc/ada/libgnat/a-sulcin.ads
! c23eb29e61ba90cd797efef11a50b9fd  gcc/ada/libgnat/a-suteio.adb
! cc8503661d0beccf94d92259dec9bd54  gcc/ada/libgnat/a-suteio.ads
! e6572106063e4ce9dd96565efd2f299e  gcc/ada/libgnat/a-suteio__shared.adb
! 2c46db8b90d94a3a379dd16909267b85  gcc/ada/libgnat/a-swbwha.adb
  65f3f68c6718760b4c2b0beba2af9f82  gcc/ada/libgnat/a-swbwha.ads
  aaf273ef9a113dedcab8fb87b71b7365  gcc/ada/libgnat/a-swfwha.ads
! 7c794d3476fe6f3d1077c6b2e525b070  gcc/ada/libgnat/a-swmwco.ads
! e95ded580501f7db9a6a4c8664c546bd  gcc/ada/libgnat/a-swunau.adb
! 596caadac663dac9b90d5b78a48a01f4  gcc/ada/libgnat/a-swunau.ads
! cd279bc5dbda6aed04394b65d5f4355c  gcc/ada/libgnat/a-swunau__shared.adb
! 8f231d7036171728d3b9a595dd1ca8f3  gcc/ada/libgnat/a-swuwha.adb
  45d76b5b911889e181b3717ab6c91651  gcc/ada/libgnat/a-swuwha.ads
! 42138bcd2c183b2590f8f4b25907991a  gcc/ada/libgnat/a-swuwti.adb
! 75dcca31e79ed3cc6db3ac783e29b346  gcc/ada/libgnat/a-swuwti.ads
! 7a5c4cd5fbcef08fc418598dc91a9f09  gcc/ada/libgnat/a-swuwti__shared.adb
! 736a1091545a25cb59ac0b615b47eece  gcc/ada/libgnat/a-szbzha.adb
  18b9cf476495930cec4ac3eb881257db  gcc/ada/libgnat/a-szbzha.ads
  32bb3b01e46ff7648c862537bd77aa0d  gcc/ada/libgnat/a-szfzha.ads
! 3c85ace6308cf07bca39c6247f8670b1  gcc/ada/libgnat/a-szmzco.ads
! 391cab21914319c82c5bd8ac71d2434a  gcc/ada/libgnat/a-szunau.adb
! 75ca2e365b442fcce7ec971abbf5caa6  gcc/ada/libgnat/a-szunau.ads
! 5c83c54b3a1cf65752d636dbc8f70662  gcc/ada/libgnat/a-szunau__shared.adb
! 0acb61716410e10ad62ef14f550f3c64  gcc/ada/libgnat/a-szuzha.adb
  01cf107c9e66d7e5284c9b7ce2e2ed7e  gcc/ada/libgnat/a-szuzha.ads
! 0517e6c5e62f0eabd1acf7e19828dcc2  gcc/ada/libgnat/a-szuzti.adb
! 2a25f75051a0cb6e49f21a3540a1aebb  gcc/ada/libgnat/a-szuzti.ads
! 62bdd0ee39da8d2ff79278180da50d21  gcc/ada/libgnat/a-szuzti__shared.adb
! 68d8a8ad98ab518f4fec52cf14d53910  gcc/ada/libgnat/a-tags.adb
! 5e8b86eb04f4cb734a5ac89c7deceeb6  gcc/ada/libgnat/a-tags.ads
! dcdc0893c3e210f1e6a61bfb664dfdf7  gcc/ada/libgnat/a-teioed.adb
! da99f2308de64e72454817e237338357  gcc/ada/libgnat/a-teioed.ads
! bbc40128752aa303060be533c7bec572  gcc/ada/libgnat/a-textio.adb
! 4dbbf2dcffb8e3e7f22f1b51343b440f  gcc/ada/libgnat/a-textio.ads
  c74a673b222c3d0037a22fb766c67488  gcc/ada/libgnat/a-tgdico.ads
! e66a12b96406c3920affa4531b5130ef  gcc/ada/libgnat/a-tiboio.adb
  7b163db9f1467e9392f347bee1400136  gcc/ada/libgnat/a-tiboio.ads
! 464bf1cf63923a7804fba3e15da38acb  gcc/ada/libgnat/a-ticoau.adb
! d413c3f49128544ab8e7c5b00115fe74  gcc/ada/libgnat/a-ticoau.ads
! 4d6f941c574526f74572842aa82b87ad  gcc/ada/libgnat/a-ticoio.adb
! 028d21bcfc4ad49e864c49f8d6a441e9  gcc/ada/libgnat/a-ticoio.ads
! 19b385b44f23b11617db7935edced1d8  gcc/ada/libgnat/a-tideau.adb
! 3e84b9ea24b6c9ad900ea455fe188254  gcc/ada/libgnat/a-tideau.ads
! 05614f698470c1f56857a68f72dd40e1  gcc/ada/libgnat/a-tideio.adb
! 37f4ca03543bf7ffba0572aa77ecd73d  gcc/ada/libgnat/a-tideio.ads
! f5d7f796afcf8428e8800c1b1f1a464e  gcc/ada/libgnat/a-tienau.adb
! 8ec2fbfdbe2355ad36e4dcb2a73297ca  gcc/ada/libgnat/a-tienau.ads
! 7cf03a9e45c2cdf212adc479bf40ca37  gcc/ada/libgnat/a-tienio.adb
  d3f704d27dd8f64a1e52fcde5fd565d8  gcc/ada/libgnat/a-tienio.ads
! 251a02dbd8a972669d67745eb562b681  gcc/ada/libgnat/a-tifiio.adb
! 9f452b078620643f532898e38f754814  gcc/ada/libgnat/a-tifiio.ads
! cba39058c6b2fc5b880c590feb300a75  gcc/ada/libgnat/a-tiflau.adb
! 495f230411222a8090e7901389a2bd1f  gcc/ada/libgnat/a-tiflau.ads
! 190cc98b430c3159be06069f11b7bc38  gcc/ada/libgnat/a-tiflio.adb
! d099e3a2aab9a2896c33f68bb8a56409  gcc/ada/libgnat/a-tiflio.ads
! 0bb27544daa27d28921a9b8547b6b048  gcc/ada/libgnat/a-tigeau.adb
! 9e3a335f17fb4e48229c54d29817183c  gcc/ada/libgnat/a-tigeau.ads
! 6bf0f3c5befcaf689a9859154675b5ce  gcc/ada/libgnat/a-tigeli.adb
! 16d35f85c7cc406e53fc2949dfdbfff5  gcc/ada/libgnat/a-tiinau.adb
! f3f6a218f6f8f7a82d3822038aaef54d  gcc/ada/libgnat/a-tiinau.ads
! c9371e413927547e2742f71b23763bf3  gcc/ada/libgnat/a-tiinio.adb
! 1fee57055ba0f49e85e9b0e7a556cb5e  gcc/ada/libgnat/a-tiinio.ads
! 717d3a2f9db8501e0982ea570e3de44f  gcc/ada/libgnat/a-timoau.adb
! dbdac3686c123e2e715e4938eeb63487  gcc/ada/libgnat/a-timoau.ads
! abfb0f181476664489c82a314cc15dd2  gcc/ada/libgnat/a-timoio.adb
! bfa089cc79794429d0d132b844091d0d  gcc/ada/libgnat/a-timoio.ads
! 9a79ad3fc8fce6c406dd3b820467e06d  gcc/ada/libgnat/a-tiocst.adb
! a3f80befdb29e626e0ed9aa0b0710227  gcc/ada/libgnat/a-tiocst.ads
! 9308823336a11670f296549b6091d71c  gcc/ada/libgnat/a-tirsfi.adb
! b68f6bbceef27f423e20db8984b369c9  gcc/ada/libgnat/a-tirsfi.ads
! 15c665fa97de83268c663335db1fcd16  gcc/ada/libgnat/a-titest.adb
  7b71ac41d87e6c43f98663d1d110846c  gcc/ada/libgnat/a-titest.ads
  1a5a51a7ff392f1819e96c8c7b6ba50b  gcc/ada/libgnat/a-tiunio.ads
  ebdefb0717ee54e84334b4468aea7da2  gcc/ada/libgnat/a-unccon.ads
  f5bc02683fdb56d97621e0a91a7452b9  gcc/ada/libgnat/a-uncdea.ads
! 6b82f13b4324f7f74705aaf38626ffed  gcc/ada/libgnat/a-undesu.adb
  82a804005be52b8d315b11082ce952d4  gcc/ada/libgnat/a-undesu.ads
! 03c29b0c2182e583ebea7f91b4d457b7  gcc/ada/libgnat/a-wichha.adb
! 5feac821379a0cae55967f6048042f8a  gcc/ada/libgnat/a-wichha.ads
! 43a2376748f6af179ab9563b023ac73c  gcc/ada/libgnat/a-wichun.adb
! 4f2d33a9d666144a8da10edb5a6186e1  gcc/ada/libgnat/a-wichun.ads
  495dc144d91ae1388ae48ceb32e47f91  gcc/ada/libgnat/a-widcha.ads
! 4516faa67f0a849c38f9e7decbaf63bc  gcc/ada/libgnat/a-witeio.adb
! 54fe9794ca11fa833e1928a9fe651af7  gcc/ada/libgnat/a-witeio.ads
! c584248eb2988584e120d28e4f83f340  gcc/ada/libgnat/a-wrstfi.adb
! 90cb6464e3293cd2ef7ca4a391749670  gcc/ada/libgnat/a-wrstfi.ads
! 3e19db51e13ca19fda117ae0f2b1afbc  gcc/ada/libgnat/a-wtcoau.adb
! 4a08d9c9419d5340f9538006d7fba45d  gcc/ada/libgnat/a-wtcoau.ads
! e1bdca8d63bca57ecc21149a2b0419a9  gcc/ada/libgnat/a-wtcoio.adb
! 57e4b04385112ab5656169d352e2fefb  gcc/ada/libgnat/a-wtcoio.ads
! b563f333b777a168227b37b8c3970e16  gcc/ada/libgnat/a-wtcstr.adb
! fdb65eb604a0df5f87ef65e1bc06eec7  gcc/ada/libgnat/a-wtcstr.ads
! ecbe886f912682cc0d31ccc39ac7719a  gcc/ada/libgnat/a-wtdeau.adb
! b1605ee85d815d37c668c9fcbc797189  gcc/ada/libgnat/a-wtdeau.ads
! b3d2c1e226dc784a12965b63faf2191b  gcc/ada/libgnat/a-wtdeio.adb
  20d4a8b1dbec170436bce906004aaac8  gcc/ada/libgnat/a-wtdeio.ads
! 61660b5f4955c870573f5e8fecbeaa99  gcc/ada/libgnat/a-wtedit.adb
! 9ed22d54145f9a3840d97fe7f80a26ff  gcc/ada/libgnat/a-wtedit.ads
! 01e73e62bbcd71d6a2aca0cad2fe1373  gcc/ada/libgnat/a-wtenau.adb
! 64477aa431fb80cc93339dfe4c192605  gcc/ada/libgnat/a-wtenau.ads
! ddec04c6dcc366e710b2e3321d69bc34  gcc/ada/libgnat/a-wtenio.adb
  fa13b730a5c90ff293982415bf7bcecb  gcc/ada/libgnat/a-wtenio.ads
! c75f99d619e683f7e1709ff140911ae3  gcc/ada/libgnat/a-wtfiio.adb
  495444487be476924785b4b8eff6b910  gcc/ada/libgnat/a-wtfiio.ads
! 3de977a046417a867ee36b3c54a2625c  gcc/ada/libgnat/a-wtflau.adb
! 80aecb8f3879822ecc0783c3f0c8d905  gcc/ada/libgnat/a-wtflau.ads
! 589de3952aedf23196f55b8be1db2fb4  gcc/ada/libgnat/a-wtflio.adb
  bb57e8648d7de30496bb43f8a849fc3f  gcc/ada/libgnat/a-wtflio.ads
! 401a351da299b0931b40793e1bcd398b  gcc/ada/libgnat/a-wtgeau.adb
! 3b4548bcf13ba2c7b630a44695606697  gcc/ada/libgnat/a-wtgeau.ads
! 92c8e0edd8684e232aa4cba8e787e143  gcc/ada/libgnat/a-wtinau.adb
! 396b5d23bfd219392ef26cb6525492c4  gcc/ada/libgnat/a-wtinau.ads
! 4bd760708ecd566da326cdcc82f51e15  gcc/ada/libgnat/a-wtinio.adb
  62a64f1715aaaa145cf2b6d360381363  gcc/ada/libgnat/a-wtinio.ads
! 51d42bbcd84786d83c8d3d361174a573  gcc/ada/libgnat/a-wtmoau.adb
! 3c3addb5a5d9a7e1c7d546b0bba53514  gcc/ada/libgnat/a-wtmoau.ads
! 525cf88dd1f7b57049b0e06af1299e64  gcc/ada/libgnat/a-wtmoio.adb
! fe5603077c1a5e18b6d5762092eddd14  gcc/ada/libgnat/a-wtmoio.ads
! e94651bcb48b5b9976a8cf4d6e5346e7  gcc/ada/libgnat/a-wttest.adb
  53d3d301f9afb69992013f55fe363511  gcc/ada/libgnat/a-wttest.ads
! d29171043e5e65e4b47048577887de95  gcc/ada/libgnat/a-wwboio.adb
  899e14502ec4dedbf4fdb28f8cecfa35  gcc/ada/libgnat/a-wwboio.ads
  1c2480c111fa5b71fca7c67f21525f8f  gcc/ada/libgnat/a-wwunio.ads
  107d2989204d28e32923acc02d444f67  gcc/ada/libgnat/a-zchara.ads
! b4f08b360754e8a73bac623a96114c05  gcc/ada/libgnat/a-zchhan.adb
! 851207a7fa656182af6f5be4e1b7ef3e  gcc/ada/libgnat/a-zchhan.ads
! 8d7a8bbc2f4bce986c06ecd6a6b048b6  gcc/ada/libgnat/a-zchuni.adb
! 53d22469ebd7b0349eeed59737c04f6c  gcc/ada/libgnat/a-zchuni.ads
! 5bd9b8b073a90125694f014f644767df  gcc/ada/libgnat/a-zrstfi.adb
! a29f7197b483d012a74626c22a3ad79a  gcc/ada/libgnat/a-zrstfi.ads
! 28f5ad9d493254dec6ca97c0b15c87ed  gcc/ada/libgnat/a-ztcoau.adb
! 6fac1d159f432f92bf0b00b806c7bf35  gcc/ada/libgnat/a-ztcoau.ads
! 58a289859ce57a84c569ea8841025f31  gcc/ada/libgnat/a-ztcoio.adb
! dc648cdd3ab33803386dbd6d2bf8b8d6  gcc/ada/libgnat/a-ztcoio.ads
! a436c255444b822794046f24c1162f13  gcc/ada/libgnat/a-ztcstr.adb
! 22f663dcc912e202c9225449b8c80a10  gcc/ada/libgnat/a-ztcstr.ads
! e4248917db10f71908aa868940754cea  gcc/ada/libgnat/a-ztdeau.adb
! d5b52925180da989db5a967d86fdd259  gcc/ada/libgnat/a-ztdeau.ads
! 10919afa42b4c510bdcac692c2ce34ee  gcc/ada/libgnat/a-ztdeio.adb
  a1457649e626ebf32915696e5afd2ac0  gcc/ada/libgnat/a-ztdeio.ads
! 003f2cc38d59bc33a4a25d40c3acc0cf  gcc/ada/libgnat/a-ztedit.adb
! 117f4f342b324f519ff03e5a1ffa0507  gcc/ada/libgnat/a-ztedit.ads
! f2f14191c4bc9ccc57d387b1c25f6a5f  gcc/ada/libgnat/a-ztenau.adb
! d04a7c43c5a55ba3392a75aa4bf842ed  gcc/ada/libgnat/a-ztenau.ads
! d1ace8207772e9625f2b49b2e5698184  gcc/ada/libgnat/a-ztenio.adb
  33aa889d92f43b14a348a444135fc992  gcc/ada/libgnat/a-ztenio.ads
! 5c261afa2136a8cce438909e5a2d01df  gcc/ada/libgnat/a-ztexio.adb
! c5d3ff03e20794df31fe36841e0dada9  gcc/ada/libgnat/a-ztexio.ads
! 71c9f96c22c00ae95ec5d30069b71169  gcc/ada/libgnat/a-ztfiio.adb
  9e2efe8c1c2d6658a575fbecb5ab1418  gcc/ada/libgnat/a-ztfiio.ads
! aca3e69e87b75f3881be9c2017836941  gcc/ada/libgnat/a-ztflau.adb
! 4ea69a45c9afa75f0f3d0286cad21555  gcc/ada/libgnat/a-ztflau.ads
! cb9d75fb29b5b038ef96303b98df09c7  gcc/ada/libgnat/a-ztflio.adb
  7aae0945e67f16f4f77aa54a65552f3e  gcc/ada/libgnat/a-ztflio.ads
! c554cb0b5adf9cccb7a01e5110622b54  gcc/ada/libgnat/a-ztgeau.adb
! 311414de4b67dfbd4ed2ed2c6f261989  gcc/ada/libgnat/a-ztgeau.ads
! c370cd37f7e70aa599ce0ac717412ec6  gcc/ada/libgnat/a-ztinau.adb
! f6294dd711393ce4f3f39a6b6d46dd6d  gcc/ada/libgnat/a-ztinau.ads
! 40207071ce071a167ed9deb76d593ee9  gcc/ada/libgnat/a-ztinio.adb
  f0456d31ec0aa6f6786e1b635f8023cb  gcc/ada/libgnat/a-ztinio.ads
! 8c8e32577a4ed62d2acf55b3cd0dbbb2  gcc/ada/libgnat/a-ztmoau.adb
! 89d313901d4cb60f3a61f35cc5364945  gcc/ada/libgnat/a-ztmoau.ads
! 0b1b7bf5bfe7edddca358740d69b3a3a  gcc/ada/libgnat/a-ztmoio.adb
  9831d312ef279fc55e5e051745be05d2  gcc/ada/libgnat/a-ztmoio.ads
! 8f9cef513d0d658a3c56f9d1529986b8  gcc/ada/libgnat/a-zttest.adb
  2caf047380f684add2bd5a35dc4e1091  gcc/ada/libgnat/a-zttest.ads
! cd2dc48290abf5f126ea9da7125c5cbb  gcc/ada/libgnat/a-zzboio.adb
  a80428bcd2bf9ab7214609e68ff1651c  gcc/ada/libgnat/a-zzboio.ads
  a6d7b54a7a1a401188cfe54d1c2bad3b  gcc/ada/libgnat/a-zzunio.ads
  aad41855092e5648dbc6e7ab9d94cda3  gcc/ada/libgnat/ada.ads
  71c71bcd90c113e366bf720c3d886660  gcc/ada/libgnat/calendar.ads
  e150ba4c7f01d70e0086543a96ffd40b  gcc/ada/libgnat/directio.ads
! 472cdf1ae1d3c567deb08b00d8f78ca7  gcc/ada/libgnat/g-allein.ads
! 152f10a3eb535814f721d1474f7ee53f  gcc/ada/libgnat/g-alleve.adb
! d433d465eea5b22729e296642b8e22bf  gcc/ada/libgnat/g-alleve.ads
! 956cba31d30c614fac14ac243edb6e3b  gcc/ada/libgnat/g-alleve__hard.adb
! 1c393f1ca86579372a6568dd9865c28c  gcc/ada/libgnat/g-alleve__hard.ads
! adfc8b9559a4e664d302f6d231ac5d9b  gcc/ada/libgnat/g-altcon.adb
! 5276e0b40aac61c7a30d48efe46a274a  gcc/ada/libgnat/g-altcon.ads
! 0913af69e5093d74cf40cc28b4d2ced1  gcc/ada/libgnat/g-altive.ads
! dd064e2c7d21321ec9758dc6e24c122b  gcc/ada/libgnat/g-alveop.adb
! 3fb7c83526b17cec42067748a6da9362  gcc/ada/libgnat/g-alveop.ads
! 1de1bf6ec7e6d6bc08ea6f45c0491e19  gcc/ada/libgnat/g-alvety.ads
! bca769962b625f1ee936f876689c6de4  gcc/ada/libgnat/g-alvevi.ads
! 3c1ac8732682f057da416fdc9c29c1b7  gcc/ada/libgnat/g-arrspl.adb
! 81ad9f8f3d3f2a1f93a0198b3cb40bf3  gcc/ada/libgnat/g-arrspl.ads
! 9f7c1cc6c6292763b31e83e7ef6f77f6  gcc/ada/libgnat/g-awk.adb
! 8309962a11f1e4dd5bae371b62d9697d  gcc/ada/libgnat/g-awk.ads
! 57f62b159905893fe2ec82512c8199a0  gcc/ada/libgnat/g-binenv.adb
! aec78334650fa7dde9a29926dbae1e4e  gcc/ada/libgnat/g-binenv.ads
! 9c1b85a14cb817961dc1fdef43a606f2  gcc/ada/libgnat/g-brapre.ads
! d417a4819ec50970f4374037be8570d6  gcc/ada/libgnat/g-bubsor.adb
! 7f2949563cf5b8534f1617ffedd40f96  gcc/ada/libgnat/g-bubsor.ads
! ebba2ac0a21360b9d835ab8b4eba5c09  gcc/ada/libgnat/g-busora.adb
! d47c193286db9d9e7d64ed00c872f77c  gcc/ada/libgnat/g-busora.ads
! 1cc4acb0db679049c39da9b9b405499b  gcc/ada/libgnat/g-busorg.adb
! d5cb2008aa26c2bba58d2f08cd2ca64e  gcc/ada/libgnat/g-busorg.ads
! b069423b8aadbc67814eadf9ab465f99  gcc/ada/libgnat/g-byorma.adb
! fe9d6c3f47d8c7cfd95bba84057ed4d4  gcc/ada/libgnat/g-byorma.ads
! e14de3282ed75fb655c4c355ae6c691c  gcc/ada/libgnat/g-bytswa.adb
! 55ddef1733033ad41b73e5e8523ae056  gcc/ada/libgnat/g-bytswa.ads
! 9fbef25a39b3b0f459b2cd7a22675840  gcc/ada/libgnat/g-calend.adb
! 1cd2d018ac712c4168e200138c9ca262  gcc/ada/libgnat/g-calend.ads
! 6e027bc44eaeedd40b50c6508e9d8d91  gcc/ada/libgnat/g-casuti.adb
! 47d525649908c1feb406700a242d7ccd  gcc/ada/libgnat/g-casuti.ads
! 87330d372e0dd4281bb7aa3b95eb0391  gcc/ada/libgnat/g-catiio.adb
! 2447b036b8b5d972b8c1b51ec0bbf27f  gcc/ada/libgnat/g-catiio.ads
! 73eef8eb46b5cd29f06b42dea0171c43  gcc/ada/libgnat/g-cgi.adb
! 9bd178d50f0a5f1e4920c935fc8ff7fe  gcc/ada/libgnat/g-cgi.ads
! 9052a5f1184a5b2504ca2cd510b1d496  gcc/ada/libgnat/g-cgicoo.adb
! 9b19f56a238770296c60eca3c833a490  gcc/ada/libgnat/g-cgicoo.ads
! 4d997fe9476cde7d1ba44e7d12a39826  gcc/ada/libgnat/g-cgideb.adb
! 6d1064ba4e2727194f79cd64a12444e0  gcc/ada/libgnat/g-cgideb.ads
! 3aec9c8e5b4bb799695baa66242bd988  gcc/ada/libgnat/g-comlin.adb
! ebd7b670a818039fdb670d6624380aaa  gcc/ada/libgnat/g-comlin.ads
! 4fe64e814e4e070854c67bdbac504403  gcc/ada/libgnat/g-comver.adb
! 2f9d4756adf5af05701021b9190fbcae  gcc/ada/libgnat/g-comver.ads
! ebacd5dc6acabada8f9b1cf108821c6b  gcc/ada/libgnat/g-cppexc.adb
! 63aef6679d66519bdebd2e341d79c8fb  gcc/ada/libgnat/g-cppexc.ads
! 02da957491c0cebf0d1f7e4e80dba45f  gcc/ada/libgnat/g-crc32.adb
! 2c1f35e9fd4de07d4d2600f4c78024ce  gcc/ada/libgnat/g-crc32.ads
! 0ca405442f7fb8125547346666886503  gcc/ada/libgnat/g-ctrl_c.adb
! 8374f07eebb5ae1f156c25281ff32d96  gcc/ada/libgnat/g-ctrl_c.ads
! c93ea7c206a13e3a5fd8e0fbb1ec9147  gcc/ada/libgnat/g-curexc.ads
! ac1a3c15ddf171e5946dadece2fa1c29  gcc/ada/libgnat/g-debpoo.adb
! 5af125766ada2d2f973e0cbcbea70721  gcc/ada/libgnat/g-debpoo.ads
! b7bb61d0426bddb66e6cad099e72868c  gcc/ada/libgnat/g-debuti.adb
! 0ce25b0455f08ce86d9b9b98454605dc  gcc/ada/libgnat/g-debuti.ads
! 825935f5ee5e129b14e0f6e6fe656362  gcc/ada/libgnat/g-decstr.adb
! e9ac990ee4c9c4cafe3de745cc085875  gcc/ada/libgnat/g-decstr.ads
! f862a18d2ba65a3edfdb157154595472  gcc/ada/libgnat/g-deutst.ads
! c702682d0e5bc8d32a1720c92fcd80ed  gcc/ada/libgnat/g-diopit.adb
! 9085300a8ba70a2c531255ff7f0e92d4  gcc/ada/libgnat/g-diopit.ads
! 316e57bb21af17af060cab87be95eb60  gcc/ada/libgnat/g-dirope.adb
! a169395f6b2ffc14397bf7f9bd14bfbc  gcc/ada/libgnat/g-dirope.ads
! 70251247b7164cbfdaf8366f44cbc267  gcc/ada/libgnat/g-dynhta.adb
! 5afefc8941344a597d81abdb4be28d82  gcc/ada/libgnat/g-dynhta.ads
! ff3db62da82df97aa233b4ebb1a090cb  gcc/ada/libgnat/g-dyntab.adb
! b70852272b95c3fe7fac848636ebe9ef  gcc/ada/libgnat/g-dyntab.ads
! 88ae36b51afcf1d85c0462d22cae9f29  gcc/ada/libgnat/g-eacodu.adb
! 06861f3ae6b75b87111b77d5184110e9  gcc/ada/libgnat/g-encstr.adb
! ffa4b8bcddac978d196d9f1ec73c95b9  gcc/ada/libgnat/g-encstr.ads
! 0e09ee584df725c4c85202d74ca12c37  gcc/ada/libgnat/g-enutst.ads
! ee8a2ee27a17b38f1cbfba58b0c76812  gcc/ada/libgnat/g-excact.adb
! 1ed0255a03900ded3f6507a36902adde  gcc/ada/libgnat/g-excact.ads
! caffdd1d28091930ba92c580a0a82e84  gcc/ada/libgnat/g-except.ads
! ef20cf28bb06f4a1a930743e96cfac33  gcc/ada/libgnat/g-exctra.adb
! 12db5c878dfbdbd522d21b7ab1e0065d  gcc/ada/libgnat/g-exctra.ads
! 48d7f48662f70df0ba5caa025c80e6ab  gcc/ada/libgnat/g-expect.adb
! d756f0d05b4f2faadfa7fb20b8aa02e4  gcc/ada/libgnat/g-expect.ads
! 804552272c443b774129140867d281d0  gcc/ada/libgnat/g-exptty.adb
! 92f03637febf6dc0dc285184e811ff3e  gcc/ada/libgnat/g-exptty.ads
! ceb0a06111f1096d95b2661724661e20  gcc/ada/libgnat/g-flocon.ads
! 3d31af73282309fd93c761366631e33e  gcc/ada/libgnat/g-forstr.adb
! ff36e58fffbbe891b2aa56dbe49b76c5  gcc/ada/libgnat/g-forstr.ads
! c7fd3e2208c2a3aff3707999dfade67a  gcc/ada/libgnat/g-graphs.adb
! ef9f0dbccbd6b93a49ec15f06ca872dd  gcc/ada/libgnat/g-graphs.ads
! 82766ddfe8109dffed5915b6123fac4c  gcc/ada/libgnat/g-heasor.adb
! 3f175a0acffab037327b0c180d237713  gcc/ada/libgnat/g-heasor.ads
! cdadc84260f038b4e16367f6c6e200c9  gcc/ada/libgnat/g-hesora.adb
! 5f853e8618027469e34070576c63cc33  gcc/ada/libgnat/g-hesora.ads
! 8125ce6dc88a6e71c6bcf0743f6b60d9  gcc/ada/libgnat/g-hesorg.adb
! 18346c927e67f91335bf666d7ed45104  gcc/ada/libgnat/g-hesorg.ads
! d5e5741e3e738701eeeabe83bf29231f  gcc/ada/libgnat/g-htable.adb
! 1e07e5add27d036d836fe3a49bca5442  gcc/ada/libgnat/g-htable.ads
! bd050f6ef7241b4ef0271e8db616d2b3  gcc/ada/libgnat/g-io-put__vxworks.adb
! d6423928fbb40bb6e25c7d79759ffe7b  gcc/ada/libgnat/g-io.adb
! af3e6d8e87790f11c005bb572da70527  gcc/ada/libgnat/g-io.ads
! 1bf6e898d14ed37c3a27c4f230f293ab  gcc/ada/libgnat/g-io_aux.adb
! 9177582546382001a53813a0a30c87c5  gcc/ada/libgnat/g-io_aux.ads
! bb13d5bd67e7f097bb6949cf2bb5d641  gcc/ada/libgnat/g-lists.adb
! 6facc21b40b7919e6372d59d51b12f31  gcc/ada/libgnat/g-lists.ads
! 6c12cca9093fd7bd42bd77c27bd5a375  gcc/ada/libgnat/g-locfil.adb
! d30712b67036f666184e58b59ab6e823  gcc/ada/libgnat/g-locfil.ads
! 268026f707b8ab0a9e75a0c9f97245ec  gcc/ada/libgnat/g-mbdira.adb
! 74caf8ee59a5a8ecca7e813e6682bf48  gcc/ada/libgnat/g-mbdira.ads
! a7022d60db1a31563ced995d51ae4f63  gcc/ada/libgnat/g-mbflra.adb
! 299e4576ccd0da11d14beca7921e9df6  gcc/ada/libgnat/g-mbflra.ads
! 661d8236190b3553372ad7e8af9cf56a  gcc/ada/libgnat/g-md5.adb
! 7fbf0315b58558bda4e50374f5e91a1a  gcc/ada/libgnat/g-md5.ads
! 4b83a6b152817ba09f5969ddbe3fffcb  gcc/ada/libgnat/g-memdum.adb
! 4a12537f818f9a89dd118440cd67d6b4  gcc/ada/libgnat/g-memdum.ads
! 6cf63e1ffddabcf8b9eed460bcdc01f6  gcc/ada/libgnat/g-moreex.adb
! a45672fc0e13ed70353250eed2a144b8  gcc/ada/libgnat/g-moreex.ads
! 8f83f9d6c6f57154e73e276cb78cb77b  gcc/ada/libgnat/g-os_lib.adb
! 40397a629e70018285ad2ddc3454e045  gcc/ada/libgnat/g-os_lib.ads
! 81e231505d494d92728ee23b022adcc3  gcc/ada/libgnat/g-pehage.adb
! 0c21c29f05cb5521773d6e104354146a  gcc/ada/libgnat/g-pehage.ads
! 5ad4d6eced24e79a89e67048adf32842  gcc/ada/libgnat/g-rannum.adb
! ca36cf1b7ed0acdad5bb4c949f399c17  gcc/ada/libgnat/g-rannum.ads
! 72ecce3f87490263c0d3964f455216a2  gcc/ada/libgnat/g-regexp.adb
! 275a4d1f18d70495da6c9800977d072a  gcc/ada/libgnat/g-regexp.ads
! 9973fffa36368348a73754637bc6a6a1  gcc/ada/libgnat/g-regist.adb
! c856a99bbac93a6c6e14bfbdb31360da  gcc/ada/libgnat/g-regist.ads
! 78b55a8a40efea74893376a0df3d6c94  gcc/ada/libgnat/g-regpat.adb
! c1cdb2f3981a26b52f248c354e275ef0  gcc/ada/libgnat/g-regpat.ads
! ba767e65b1ce328770203ee3b35a89ca  gcc/ada/libgnat/g-rewdat.adb
! ef37751e9657fa8450a57344049b93bc  gcc/ada/libgnat/g-rewdat.ads
! db9b401fa3b4ea87a925e523936a8687  gcc/ada/libgnat/g-sechas.adb
! 289c2b238d113919186cc55b10a7ab1f  gcc/ada/libgnat/g-sechas.ads
! 29a390eae1435ff46ef3915c2ea65815  gcc/ada/libgnat/g-sehamd.adb
! b9b57aefcc6846750f9524074cb88e3b  gcc/ada/libgnat/g-sehamd.ads
! e1ca9ed16396d47d0eff95d527cd8e18  gcc/ada/libgnat/g-sehash.adb
! 91d676c4dc6498442bd8d7565bf39cc5  gcc/ada/libgnat/g-sehash.ads
! 1624078f3925d91971a098d53f86b317  gcc/ada/libgnat/g-sercom.adb
! 4f55a5239115ec59e8d5647145d7d093  gcc/ada/libgnat/g-sercom.ads
! dd762352a8785136bd3fb44668df506c  gcc/ada/libgnat/g-sercom__linux.adb
! a00e2d3d866e6dc8e886f4513c22b033  gcc/ada/libgnat/g-sercom__mingw.adb
! d96c038d21169740785943b4edb14ab2  gcc/ada/libgnat/g-sestin.ads
! 8d108a1a55e0a35d3eb2af622168baf1  gcc/ada/libgnat/g-sets.adb
! cc5fe4fab8c77f2b72c9b5b568eab1da  gcc/ada/libgnat/g-sets.ads
! 9f5c6b484cb218c3dec8a619508cae0b  gcc/ada/libgnat/g-sha1.adb
! f4b6a3a711590b3531cfefbc3f8086fd  gcc/ada/libgnat/g-sha1.ads
! 6ffefd1f2202921cea605f70eb3df522  gcc/ada/libgnat/g-sha224.ads
! 015b189938e8871f0c1b6e7fe6a541e1  gcc/ada/libgnat/g-sha256.ads
! 83305938e74df444dc7d03d36d183edf  gcc/ada/libgnat/g-sha384.ads
! 7eaebe7e711b56c1ae36b42388e10f6e  gcc/ada/libgnat/g-sha512.ads
! f9fefe509c97d012ea2bdfa731a0adaa  gcc/ada/libgnat/g-shsh32.adb
! 5b8eef54e873a8590a9400e173b6801a  gcc/ada/libgnat/g-shsh32.ads
! fba82b3214fe7203564d1cd8daf7d293  gcc/ada/libgnat/g-shsh64.adb
! a24498def0584b6c17848d63d1d27c80  gcc/ada/libgnat/g-shsh64.ads
! 819f7ecf7e18e277da4dfc0210ef5c2a  gcc/ada/libgnat/g-shshco.adb
! 65f28b280e11e4b14ae3adb20183fd52  gcc/ada/libgnat/g-shshco.ads
! 283e1e3abcbc077f86710db49e2e87ea  gcc/ada/libgnat/g-soccon.ads
! ea5759edfb5f51bf7edf26ce38996dd5  gcc/ada/libgnat/g-socket.adb
! 18f7715b700a206574e94559ade7eb1a  gcc/ada/libgnat/g-socket.ads
! 80e0984ded3a6aa721bdffed402c0243  gcc/ada/libgnat/g-socket__dummy.adb
! b97cc8810770fdecef0486de203f6cf0  gcc/ada/libgnat/g-socket__dummy.ads
! 9eb596be87dc781658b44fc2403628fb  gcc/ada/libgnat/g-socthi.adb
! 41d043097b31e9a609282ea7b9f31771  gcc/ada/libgnat/g-socthi.ads
! 463a51cd17001a08f7221a12ff395a78  gcc/ada/libgnat/g-socthi__dummy.adb
! 1c7a932f58735c5499772c0429c044f6  gcc/ada/libgnat/g-socthi__dummy.ads
! d9ec8884a297688b223a8c567bf6685b  gcc/ada/libgnat/g-socthi__mingw.adb
! a1b16c6b1d4c9ef170c254d2b242b41f  gcc/ada/libgnat/g-socthi__mingw.ads
! 8818c77bc85c27970469e3b42b7fbc67  gcc/ada/libgnat/g-socthi__vxworks.adb
! d4dc78c5ee18e7f8034c9f57d1c9687f  gcc/ada/libgnat/g-socthi__vxworks.ads
! e27b7e6b811ce779bef7d1f49c35f22b  gcc/ada/libgnat/g-soliop.ads
! 5ead1bf74a4f2b8ba2d3e723819b4df4  gcc/ada/libgnat/g-soliop__lynxos.ads
! 69607de9f926a51371e8a0cdb3857512  gcc/ada/libgnat/g-soliop__mingw.ads
! 17c9d079fd5e06d3f686c339aa2ce5f7  gcc/ada/libgnat/g-soliop__qnx.ads
! e69f6c5abc77b3ecd8aba070fe4b2abd  gcc/ada/libgnat/g-soliop__solaris.ads
! c16345d769c62f21f7908f1f1877af9a  gcc/ada/libgnat/g-sothco.adb
! 77edb74f2da68cd2656a3f77d59f8fe6  gcc/ada/libgnat/g-sothco.ads
! 098022c6a3071fc06a454ddc06ceed20  gcc/ada/libgnat/g-sothco__dummy.adb
! d7aedbbd80aa98be61e8549f63d936e2  gcc/ada/libgnat/g-sothco__dummy.ads
! 680a7bc1d606f549c3fe584b446a0227  gcc/ada/libgnat/g-souinf.ads
! 70f5e2b103691d6b7b239e1013cd1e38  gcc/ada/libgnat/g-spchge.adb
! 032c5d8e1e48fd5e334831bcb98b6b96  gcc/ada/libgnat/g-spchge.ads
! 6f455f1a7bf555f9557999b391bcce8f  gcc/ada/libgnat/g-speche.adb
! 3e9a176bbe75a749cbd52d30efb6c082  gcc/ada/libgnat/g-speche.ads
! 6ecbca09d5a9c575f85d42413b57833a  gcc/ada/libgnat/g-spipat.adb
! e9fbeabeb97757dbc5348757df790fca  gcc/ada/libgnat/g-spipat.ads
! 1e819afcfb0c9c7268539523f09d1476  gcc/ada/libgnat/g-spitbo.adb
! 57d9dd98988aa15f4d3ee0704461b3b0  gcc/ada/libgnat/g-spitbo.ads
! 6dfad102df709074a5cf6688b8421038  gcc/ada/libgnat/g-sptabo.ads
! 773b3e0a18c178a95d6249e8382b6c5a  gcc/ada/libgnat/g-sptain.ads
! bdccce071fc2af683e7cda4c4dddcaca  gcc/ada/libgnat/g-sptavs.ads
! 74b2cf03d84f4f72d150b63455250df9  gcc/ada/libgnat/g-sse.ads
! 8177e45a04249209c5a38b9e8a122751  gcc/ada/libgnat/g-ssvety.ads
! 45a8475940459d0b2e995a3c1f213d7f  gcc/ada/libgnat/g-sthcso.adb
! 0ce4cdf1b0370a585af859d9f90af4bc  gcc/ada/libgnat/g-stheme.adb
! 1025f2c3b14c93528c4da7132b49b744  gcc/ada/libgnat/g-strhas.ads
! c3d11acb66085e1e184733fc4b9b1bcb  gcc/ada/libgnat/g-string.adb
! 1f8f8f16f2ec48c956b588a9de21fd0e  gcc/ada/libgnat/g-string.ads
! e75dc701e500258345394c01e9a39a8d  gcc/ada/libgnat/g-strspl.ads
! c1b38c106dba8247e1205c7c7a37a0c6  gcc/ada/libgnat/g-stseme.adb
! 9e8873c3be48b246e9f621278ae7b9e5  gcc/ada/libgnat/g-stsifd__sockets.adb
! 8819d093536634a723cbb36a885aa93e  gcc/ada/libgnat/g-table.adb
! 8d403b0783232432236cb834ed4010eb  gcc/ada/libgnat/g-table.ads
! 9c07fac7685c33caced992981ca1ace6  gcc/ada/libgnat/g-tasloc.adb
! ed90e23241997a8698ddf8c272e2b825  gcc/ada/libgnat/g-tasloc.ads
! d42e5235e4fa3aca1df656e66c9165a9  gcc/ada/libgnat/g-timsta.adb
! c94a22c9fe7427c5a10239ac76db68bf  gcc/ada/libgnat/g-timsta.ads
! b612fd9b5d160889c1099a8e37dfbf07  gcc/ada/libgnat/g-traceb.adb
! 86d22302a1a957995a2c0d0a39690c60  gcc/ada/libgnat/g-traceb.ads
! 7859e07c23a7e4445aa662dc2980444a  gcc/ada/libgnat/g-trasym.adb
! ee64372c67283ee2a93cfaa3ebd956b7  gcc/ada/libgnat/g-trasym.ads
! a7684b3fc6fe0ec77bbe0255785098c4  gcc/ada/libgnat/g-tty.adb
! 4b613a3bd8a2ad4c944389281366297d  gcc/ada/libgnat/g-tty.ads
! de7d663d130df117c216d0cd49e805e3  gcc/ada/libgnat/g-u3spch.adb
! 6c16dfb0bac5da773ade7d67f6166aa7  gcc/ada/libgnat/g-u3spch.ads
! 4a12074f3ff3f519c03f33b2166eb7dc  gcc/ada/libgnat/g-utf_32.adb
! e38845bc7d6551572141e6574784fdf4  gcc/ada/libgnat/g-utf_32.ads
! bdc6627dfb2a568c9a96dd3a3f45791c  gcc/ada/libgnat/g-wispch.adb
! 8c093d9fe2f47affa6366d94f73c77d6  gcc/ada/libgnat/g-wispch.ads
! eadaf60106a583284c1f2daad6a52c8e  gcc/ada/libgnat/g-wistsp.ads
! f47eed79b4f27a604b625eef397df485  gcc/ada/libgnat/g-zspche.adb
! 5ffa33b1e9722e0f0e9b230942d20e80  gcc/ada/libgnat/g-zspche.ads
! d31c0da40597c6e5d87a440f990eb9bf  gcc/ada/libgnat/g-zstspl.ads
! eda6eb39b51188c981183dd6332bb4cd  gcc/ada/libgnat/gnat.ads
! eed004f38dc2054d6ab2135830184fb4  gcc/ada/libgnat/i-c.adb
! a17d5545d513857737a1a94ec5e33532  gcc/ada/libgnat/i-c.ads
! 2a092fc898c90b6390d96e3a272e0683  gcc/ada/libgnat/i-cexten.ads
! 349bc3885fbd7d77bb075c966cd2bb52  gcc/ada/libgnat/i-cobol.adb
! aa2940f195f374171a7225aa8bcfbf08  gcc/ada/libgnat/i-cobol.ads
! ac74f52e99f10671aa45595d0f5802f0  gcc/ada/libgnat/i-cpoint.adb
! f90fe9937d6c20e28fd86215df9c4785  gcc/ada/libgnat/i-cpoint.ads
! ff8da8ffc489804d6eddc52d08c6fd0a  gcc/ada/libgnat/i-cstrea.adb
! 30075bcd1aa37993bf89eba245be5c80  gcc/ada/libgnat/i-cstrea.ads
! e45db06db037e2eb809a9a274199f89d  gcc/ada/libgnat/i-cstrin.adb
! 9a9bd86d796514f0c7cca3a1ffb09b56  gcc/ada/libgnat/i-cstrin.ads
! 655c473e922497c39f43e65299c0f260  gcc/ada/libgnat/i-fortra.adb
  fe08792d30f40125dd75d63c7bcd68fe  gcc/ada/libgnat/i-fortra.ads
! 8fa911a194413297b3ce3e7213766f3c  gcc/ada/libgnat/i-pacdec.adb
! 95433d85bf0bab9752e3f0e377251c40  gcc/ada/libgnat/i-pacdec.ads
! 672d3f657cc7ca0f589012aaed5935b9  gcc/ada/libgnat/i-vxwoio.adb
! 4704ec23514d09c1fdf3d87bfd2c65ef  gcc/ada/libgnat/i-vxwoio.ads
! c82ce4783685ef44b5240f7c3aea32bc  gcc/ada/libgnat/i-vxwork.ads
! 0e1538f52bfc26cf1efa53da20ec4e88  gcc/ada/libgnat/i-vxwork__x86.ads
! 0b46cc380f6fbc2cc5f2334ce3cdb1af  gcc/ada/libgnat/interfac.ads
  c2121d458a346c0b9d83825c544b9516  gcc/ada/libgnat/ioexcept.ads
  38f101ad4a6eba55ef694b1ab6315683  gcc/ada/libgnat/machcode.ads
! b4128c5fa5f4200336dc687193d31cff  gcc/ada/libgnat/memtrack.adb
! b113c295ae84cef68d53400f26cd924f  gcc/ada/libgnat/s-addima.adb
! 3120783f0b5808a5ff2c3cc0bcfe8372  gcc/ada/libgnat/s-addima.ads
! bf9d8d9ba5aa778bd962f179934b4ed1  gcc/ada/libgnat/s-addope.adb
! d77236998648e189c81fdd4a531e5e14  gcc/ada/libgnat/s-addope.ads
! c37d95e6bc4fdc3da526a7c249106352  gcc/ada/libgnat/s-aotase.adb
! 2e80d44e098886929b992ee03b9882dc  gcc/ada/libgnat/s-aotase.ads
! a11ea373bfe1dddfb0a75be0b18c2484  gcc/ada/libgnat/s-arit64.adb
! 838292eb3a6c2d528a0666a98f0dbd78  gcc/ada/libgnat/s-arit64.ads
! da8b5bb231f1d4d8d30b20bb937e9b49  gcc/ada/libgnat/s-assert.adb
! fe8bc10afac633c616864613044f9402  gcc/ada/libgnat/s-assert.ads
! 5fd31d9c8dd31d089ac59954d18d0619  gcc/ada/libgnat/s-atacco.adb
! 3ab716e3a00f91c26c3f640922cf98d6  gcc/ada/libgnat/s-atacco.ads
! 3739514d76c66e93c8078b6864e7fc9b  gcc/ada/libgnat/s-atocou.adb
! f1f327dccca77b6601cd0316cab6c62d  gcc/ada/libgnat/s-atocou.ads
! b0f698b6bf60b53f87de991902f7e1b4  gcc/ada/libgnat/s-atocou__builtin.adb
! 4bbe825b7782c77b7c2dab9b985ec026  gcc/ada/libgnat/s-atocou__x86.adb
! 54777ec9bda1e73bbd06ca4e15699895  gcc/ada/libgnat/s-atoope.ads
! c2e7d7b4d9997dc324d34b23a5528f88  gcc/ada/libgnat/s-atopar.adb
! df6e87bff224741fcc74ef1f4a979dcc  gcc/ada/libgnat/s-atopar.ads
! d7e67cf45709308f9393af133893d705  gcc/ada/libgnat/s-atopex.adb
! e88aaee45316b4de26735c7c6def734e  gcc/ada/libgnat/s-atopex.ads
! 1bba8b3a52d36a6773cf0acfc6f24788  gcc/ada/libgnat/s-atopri.adb
! ed13341cb38966e8490a0d042c36f43f  gcc/ada/libgnat/s-atopri.ads
! ed8ef67450c2df5fc5b236960ac5c61d  gcc/ada/libgnat/s-auxdec.adb
! 7b220c72a6e52c8207b62a2d212e741b  gcc/ada/libgnat/s-auxdec.ads
! e54ca55ca10d556fb097947e077afd0d  gcc/ada/libgnat/s-bignum.adb
! b4741724d0fdc874c2f00ece8d0b4351  gcc/ada/libgnat/s-bignum.ads
! 6e74bcd17ab036f487fa93e8f2bda19f  gcc/ada/libgnat/s-bitfie.ads
! 95faae561dd2db1d3677d785989d1a80  gcc/ada/libgnat/s-bitops.adb
! a1ad3269ca16ee830b4a9c228a32d857  gcc/ada/libgnat/s-bitops.ads
! 04ce5cc421af90e1dc1f548030e6615a  gcc/ada/libgnat/s-bituti.adb
! f91eed1ca975009d69cb4caf60b6e2eb  gcc/ada/libgnat/s-bituti.ads
! 885e5a2e26a0d2a3340e7627acbe930a  gcc/ada/libgnat/s-boarop.ads
! 849da979230dfb93b638654030fe6997  gcc/ada/libgnat/s-boustr.adb
! b69679644bf60f91f56c8c4bb32869e7  gcc/ada/libgnat/s-boustr.ads
! 0bac04ce17d2b35a4d12857b286355e9  gcc/ada/libgnat/s-bytswa.ads
! 51ee5daf240f42c6c41bbd79e41b9a7f  gcc/ada/libgnat/s-carsi8.adb
! c885435ef13b2801b56a0c21cfc10532  gcc/ada/libgnat/s-carsi8.ads
! 284c9361ebb09cad99ac2a28e9608e6f  gcc/ada/libgnat/s-carun8.adb
! 4ec8c97d03013721abe6d93cb75c6fe7  gcc/ada/libgnat/s-carun8.ads
! 3d9e3dede8822feb5ca06e70bd86e61a  gcc/ada/libgnat/s-casi16.adb
! 49744bda787240fe8a232568022e9b3a  gcc/ada/libgnat/s-casi16.ads
! 798a87d3990e2a174f4aef16410b17fc  gcc/ada/libgnat/s-casi32.adb
! 1edff1aa9af70fb8b61e7d2ba083b2c3  gcc/ada/libgnat/s-casi32.ads
! cca9207321d9322fa6f4c1ee7944e041  gcc/ada/libgnat/s-casi64.adb
! 802202864a5b79aa0957badb68d74267  gcc/ada/libgnat/s-casi64.ads
! 9607a44b5aa17a426dc7619c14343c9d  gcc/ada/libgnat/s-casuti.adb
! 19cb6bece0ef16d595d929b2250ebf74  gcc/ada/libgnat/s-casuti.ads
! 7e1444b89f3d19105bf96bd6f4d7bc25  gcc/ada/libgnat/s-caun16.adb
! eccc129baef91a68b973dd6a3876c975  gcc/ada/libgnat/s-caun16.ads
! 5b5d5aed460ebdf2bc258f7a38c4b90e  gcc/ada/libgnat/s-caun32.adb
! 79850330e480a521a331e9cbd71e320b  gcc/ada/libgnat/s-caun32.ads
! e6aa3256034ce8d9837289b6c5e1cde6  gcc/ada/libgnat/s-caun64.adb
! 57238330a2490db60797848178bde641  gcc/ada/libgnat/s-caun64.ads
! 9935a68425ffa1a3d1b16827e405ebb7  gcc/ada/libgnat/s-chepoo.ads
! 15082d3d0d37a7a8dec874252b5980ea  gcc/ada/libgnat/s-commun.adb
! ff5ccb5eb38b0fe98a75bfec39481850  gcc/ada/libgnat/s-commun.ads
! e84eb9a40ae4aa446ade7a019942395c  gcc/ada/libgnat/s-conca2.adb
! 46728bc19f229048487aa98f27f4a35c  gcc/ada/libgnat/s-conca2.ads
! bec7960a09ea8b99815a53f9009a7d42  gcc/ada/libgnat/s-conca3.adb
! 4985021939945dbd6d8db51f2412c6c6  gcc/ada/libgnat/s-conca3.ads
! 5239cb2bc71bc6e08370e9150d558f5c  gcc/ada/libgnat/s-conca4.adb
! 4c5a7a2d1211c11584921d1eba7da5da  gcc/ada/libgnat/s-conca4.ads
! cbceba6ba2eb9729d322715365def803  gcc/ada/libgnat/s-conca5.adb
! dfc20b0546d9cf2ca3c64be97c3cc259  gcc/ada/libgnat/s-conca5.ads
! f1ef2cff3163608bfbdafaa441807052  gcc/ada/libgnat/s-conca6.adb
! 5042f9251620a0affb6d10db1968ba75  gcc/ada/libgnat/s-conca6.ads
! ab46be37c8b82a5834388a3ba576b222  gcc/ada/libgnat/s-conca7.adb
! ef1f1f9cb67d992a320b16614ef58f4f  gcc/ada/libgnat/s-conca7.ads
! af4543ddeebe2977f9699115d0e7b50e  gcc/ada/libgnat/s-conca8.adb
! b2eb8325d704a35f3cdc1c94c61300f2  gcc/ada/libgnat/s-conca8.ads
! ca39a803c6b7add09b0004ddb6f2aa7e  gcc/ada/libgnat/s-conca9.adb
! 784bce8ae1a956f83867193fdeb92d7a  gcc/ada/libgnat/s-conca9.ads
! 362fa47e1804b303c0016e6052a86b66  gcc/ada/libgnat/s-crc32.adb
! f39fe6aefd773f29014ceacaa98d28e0  gcc/ada/libgnat/s-crc32.ads
! d00ff833bde0d8a7cad1bac0c2a8168d  gcc/ada/libgnat/s-crtl.ads
! cf3b487b657c152ccb76268326feb87f  gcc/ada/libgnat/s-dfmkio.ads
! 0d1fe58707b349405d61cd1e280858cc  gcc/ada/libgnat/s-dfmopr.ads
! 9ef762448646be18822054d65e07938c  gcc/ada/libgnat/s-dgmgop.ads
! db17913e62461143e1ee88d936f884bb  gcc/ada/libgnat/s-diflio.adb
! d74a3f06396b05e8f21cb6084e5b7cba  gcc/ada/libgnat/s-diflio.ads
! 1ea9dc0adef68466f0fa14f3dfe34ec6  gcc/ada/libgnat/s-diflmk.ads
! fd43bfa32d5e468d9b701181b9d3b002  gcc/ada/libgnat/s-digemk.ads
! edd2220851f91984256f01372647c8b1  gcc/ada/libgnat/s-diinio.adb
! 2e70686767ed16316e9e7550c82ffa40  gcc/ada/libgnat/s-diinio.ads
! b18ed0d5942797ce9413338a24154564  gcc/ada/libgnat/s-dilomk.ads
! 1630a1eae7dab206eafce6371e4504b9  gcc/ada/libgnat/s-dim.ads
! 19ca6eac9ad356ebda67bacde86a677f  gcc/ada/libgnat/s-dimkio.ads
! cd82d9e1a2dc8bcdffb5fe2b9e6ca3b3  gcc/ada/libgnat/s-dimmks.ads
! fe9c5cb4cf17b05f6dd06276f8af875b  gcc/ada/libgnat/s-direio.adb
! c0b3dc14958125722f77899028fffff5  gcc/ada/libgnat/s-direio.ads
! c3bf1e976c907cc9993bddf5cb40f6db  gcc/ada/libgnat/s-dlmkio.ads
! bb708365b024d40aa824cde8cb25d667  gcc/ada/libgnat/s-dlmopr.ads
! 65969d0d47f993c7ebd71c2196b404cd  gcc/ada/libgnat/s-dmotpr.ads
! 3de0b51736e0607274e9d9694379f106  gcc/ada/libgnat/s-dsaser.ads
! 36c444e2173d9ea52cfa09cc6dac540c  gcc/ada/libgnat/s-dwalin.adb
! 7ec1cc8b93bb90f2088793e344a5d6db  gcc/ada/libgnat/s-dwalin.ads
! e83fb04459da4b4ee2083bbb276b48a7  gcc/ada/libgnat/s-elaall.adb
! 4f575fdd9df8043efe416d8ebe93cf26  gcc/ada/libgnat/s-elaall.ads
! 446aa4702f2b58a3671a7c79e349b6ee  gcc/ada/libgnat/s-excdeb.adb
! cb29ce70d6af99cadacf2057b3735bfc  gcc/ada/libgnat/s-excdeb.ads
! 4a7c92b6446b07b44318736dca83c9bb  gcc/ada/libgnat/s-except.adb
! 76f3cf4b0b18cb4d68aaa5d3b89449a9  gcc/ada/libgnat/s-except.ads
! 502a84179fa98500db480f1972e15853  gcc/ada/libgnat/s-excmac__arm.adb
! 5ad89378d4578dd273dc0681acf16c8a  gcc/ada/libgnat/s-excmac__arm.ads
! 9262a98a61bcb2cea3201aafbf606bef  gcc/ada/libgnat/s-excmac__gcc.adb
! 1f7efee8f6a6da2d90af4fba0e17d00b  gcc/ada/libgnat/s-excmac__gcc.ads
! c44b74275118b52b6afa7019d76d78c4  gcc/ada/libgnat/s-exctab.adb
! 0f577dfd5267909c447cec6d2a957ee0  gcc/ada/libgnat/s-exctab.ads
! 1dbf8044be9dd7721bcb4e622338b3ba  gcc/ada/libgnat/s-exctra.adb
! a15ef3f87df22c6ae234f5f9df582f5a  gcc/ada/libgnat/s-exctra.ads
! 3fa1f837ddf9a2ed16a8f86f81b304a4  gcc/ada/libgnat/s-exnint.adb
! 89fcd8db8b08daeee97f2f6123f50569  gcc/ada/libgnat/s-exnint.ads
! 015edee337142e969067770a39ee81bf  gcc/ada/libgnat/s-exnllf.adb
! 428a2070affc9cfd64a4f11fe6782b7a  gcc/ada/libgnat/s-exnllf.ads
! d9ab675752801547d947d835bd8116e6  gcc/ada/libgnat/s-exnlli.adb
! 80cb9ab9bc9442d3bd077b3267e14d91  gcc/ada/libgnat/s-exnlli.ads
! 6b8fc127e9c49076dce970616b4386a6  gcc/ada/libgnat/s-expint.adb
! 131bbe5d856f63361b955324b9658f83  gcc/ada/libgnat/s-expint.ads
! d18aa2992281279fb79646b90de37222  gcc/ada/libgnat/s-explli.adb
! f018fa517d55e498aab75f6f0f726527  gcc/ada/libgnat/s-explli.ads
! f70fb8dfc0c92ee798b5011475c09b9b  gcc/ada/libgnat/s-expllu.adb
! 59c9f3861940fa3779ad0eb790aa9d2c  gcc/ada/libgnat/s-expllu.ads
! 86085f3ca6ebdb124668f2745dc0af78  gcc/ada/libgnat/s-expmod.adb
! 89604358ab039a628dd91debe34ef5c1  gcc/ada/libgnat/s-expmod.ads
! 97221de96738801b22df9d4d768ada11  gcc/ada/libgnat/s-expuns.adb
! 79c1408b744a3f58e1333871114a3bdd  gcc/ada/libgnat/s-expuns.ads
! 6aa43c4debba01dd5d8803249e1720c9  gcc/ada/libgnat/s-fatflt.ads
! a8bc53f48848e9b4d3147e8b72039de3  gcc/ada/libgnat/s-fatgen.adb
! e55b267e737679bdf06d2977476d9b33  gcc/ada/libgnat/s-fatgen.ads
! 3f0164e3899ef53089f7f7eb0984fa6f  gcc/ada/libgnat/s-fatlfl.ads
! c7d3e8d4bb5befb3fe1f3c63a6221bd2  gcc/ada/libgnat/s-fatllf.ads
! fe25efbce15da4f441b61bec39fa6335  gcc/ada/libgnat/s-fatsfl.ads
! e82d30efbb968a00141535fbab553e2e  gcc/ada/libgnat/s-ficobl.ads
! 4322dd10c068d50ef7e4314368206e21  gcc/ada/libgnat/s-filatt.ads
! 59bab8767ea8b08db27a2f0eb1710fa0  gcc/ada/libgnat/s-fileio.adb
! 549b3bede28983184a67f85bf5c0b757  gcc/ada/libgnat/s-fileio.ads
! e30dd5f2d739cd21e273a7fc88357e0a  gcc/ada/libgnat/s-finmas.adb
! 841200d9f7248e8cb41d30b4cac5599f  gcc/ada/libgnat/s-finmas.ads
! 75e5f39814d9a07deb8f0287712ad509  gcc/ada/libgnat/s-finroo.adb
! 4fc635f983868b36d14164a0c049182b  gcc/ada/libgnat/s-finroo.ads
! 08b583c7278a280797ec3dea7c6bcb5f  gcc/ada/libgnat/s-flocon.adb
! a777b7233ac3d9a99571a166b4b83915  gcc/ada/libgnat/s-flocon.ads
! 2311e6b146555dabf225a3f889850b58  gcc/ada/libgnat/s-flocon__none.adb
! 8c4f222a2f15e386bc7c383a71b1505f  gcc/ada/libgnat/s-fore.adb
! 623ee04c268f6fc08dc0e9b0055a9b38  gcc/ada/libgnat/s-fore.ads
! 1dfccc286f78fbb60c90dc9438fe9297  gcc/ada/libgnat/s-gearop.adb
! eb32531519af267d284b42a1c0588caa  gcc/ada/libgnat/s-gearop.ads
! 2d6f785d1c8f845c353a9387316178e0  gcc/ada/libgnat/s-genbig.adb
! f94e2ca0f8203fa71742bded0d1738a8  gcc/ada/libgnat/s-genbig.ads
! c48a1b36dc6fa58abea3c5e7e9643df0  gcc/ada/libgnat/s-geveop.adb
! 5912901fa62e055045b833865f46dc61  gcc/ada/libgnat/s-geveop.ads
! 93b7b252ac6e43b620e6e3163f777e46  gcc/ada/libgnat/s-gloloc.adb
! 848c9deceb74aa39afe3fbd453453449  gcc/ada/libgnat/s-gloloc.ads
! 4c69921a462a94f4d5cb347564773d8c  gcc/ada/libgnat/s-gloloc__mingw.adb
! 47d63ddcbb22683fdaa8bd4bdbca5f44  gcc/ada/libgnat/s-htable.adb
! 91c034fe6b5aa4392b09a3d0c59ee202  gcc/ada/libgnat/s-htable.ads
! 51cbde385b6d5eda07020cf8bc590c92  gcc/ada/libgnat/s-imenne.adb
! 349f7c8012727d757b6f9eaa961bbdac  gcc/ada/libgnat/s-imenne.ads
! 2a41401362dd1665b4586c4685cb2eb5  gcc/ada/libgnat/s-imgbiu.adb
! 58c969f2a64a360c638fb2b7945bc7c5  gcc/ada/libgnat/s-imgbiu.ads
! 618c6f427c6a7b7902902cbb1fa4cc5f  gcc/ada/libgnat/s-imgboo.adb
! 80218e2665c17e7aefa919cfd75131b2  gcc/ada/libgnat/s-imgboo.ads
! ca735cac31761d16647d31d0d40961bd  gcc/ada/libgnat/s-imgcha.adb
! 51cf800f75e59d5cc161bc9f72c3de8c  gcc/ada/libgnat/s-imgcha.ads
! cf8d92e13e48dec699f1e2ce0bf17578  gcc/ada/libgnat/s-imgdec.adb
! 3bb1c57318dca21dc5c687c64742b1ca  gcc/ada/libgnat/s-imgdec.ads
! e094d857cdcdd4650b77c9b7bc168d17  gcc/ada/libgnat/s-imgenu.adb
! f73c44e7f5276d6f2abd79b3ff91ecb4  gcc/ada/libgnat/s-imgenu.ads
! d525a585aa551875312c99f20b3be676  gcc/ada/libgnat/s-imgint.adb
! c1056dca0fbeaf5f913e69908ed62d79  gcc/ada/libgnat/s-imgint.ads
! 5c57258b2f974df2d6ba3216b164d5a9  gcc/ada/libgnat/s-imgllb.adb
! 2013c4cfeabe2a0ba6737e7a7b1b7e12  gcc/ada/libgnat/s-imgllb.ads
! 6d60a457d65ef50375ad59ed8a34756a  gcc/ada/libgnat/s-imglld.adb
! 53f8dadf14aecfa78706de1b8436d754  gcc/ada/libgnat/s-imglld.ads
! f7327b2ed6337de9c88e34509538282c  gcc/ada/libgnat/s-imglli.adb
! f95eae2b04e98ce7042997359c45b035  gcc/ada/libgnat/s-imglli.ads
! 64afc7c909dbb2f56978de4dae25b815  gcc/ada/libgnat/s-imgllu.adb
! cba97a660a29ad1d51cc1c161c7568ac  gcc/ada/libgnat/s-imgllu.ads
! 0b871b35ab1ecc6eca3d6152b4685b29  gcc/ada/libgnat/s-imgllw.adb
! c6e9ac1d64c2cfac048b0227ffb57ce1  gcc/ada/libgnat/s-imgllw.ads
! 203750b0738dff5825162522285210cd  gcc/ada/libgnat/s-imgrea.adb
! 51042ab90ac8d1561fab154eedf896e0  gcc/ada/libgnat/s-imgrea.ads
! 4e7f719cde8cc4cfcb3758822e098874  gcc/ada/libgnat/s-imguns.adb
! d2c63525ce6d09e60b64971cd2ddaa01  gcc/ada/libgnat/s-imguns.ads
! 79aa3b458afea7badb346bc5da16ea09  gcc/ada/libgnat/s-imgwch.adb
! 34f8b647778555ef28fccf4ee9409099  gcc/ada/libgnat/s-imgwch.ads
! b73e8e291bec8a94fbc4ff8bf98eef13  gcc/ada/libgnat/s-imgwiu.adb
! f7fa9ac1612f135c6cce98accafcc758  gcc/ada/libgnat/s-imgwiu.ads
! e87a616f028a0b17a65e9b769c168786  gcc/ada/libgnat/s-io.adb
! 61cd7c64000f203b613fd04715d242ce  gcc/ada/libgnat/s-io.ads
! 0f8675b5f56584bb876390cf8820a9fb  gcc/ada/libgnat/s-llflex.ads
! 5ee7ae77138d873c1bdcf3a9c4ed2b38  gcc/ada/libgnat/s-maccod.ads
! 54175ac52b2d4fa3e702724fcafc6175  gcc/ada/libgnat/s-mantis.adb
! 36a7b9a1778b0b69d1a4c7cfb492f337  gcc/ada/libgnat/s-mantis.ads
! 441feb5fb26574f5464198d6a962e6e9  gcc/ada/libgnat/s-mastop.adb
! 6c8b3efa60e6b3314fc6deae90dd270c  gcc/ada/libgnat/s-mastop.ads
! 307602cb6f14246a110f8f7fd0f915ff  gcc/ada/libgnat/s-memcop.ads
! 93ef0e1a8febcb63de7ca87eae8b81c5  gcc/ada/libgnat/s-memory.adb
! dd57ed5008db87c34f01255a20da97b5  gcc/ada/libgnat/s-memory.ads
! ec6d5d2550b81537178ccc751c5c332c  gcc/ada/libgnat/s-mmap.adb
! cfb45ec1af79a38dc3814fcc263dfce9  gcc/ada/libgnat/s-mmap.ads
! 9cf9a63f4392b718bb9ecf12109a661e  gcc/ada/libgnat/s-mmauni__long.ads
! f84bda64d7f659e1962722ab834f4882  gcc/ada/libgnat/s-mmosin__mingw.adb
! 60e9d3fb23c5a2437b98f48db7cb3103  gcc/ada/libgnat/s-mmosin__mingw.ads
! b6938f006c6ce95f4e920c8bdaa6fc17  gcc/ada/libgnat/s-mmosin__unix.adb
! 8906afac8e1a85c2563dd0bc3eaa3716  gcc/ada/libgnat/s-mmosin__unix.ads
! f08d0e94cdd5642d5ae084f459ac3567  gcc/ada/libgnat/s-multip.adb
  c4045ad22005510940d70e1a445db431  gcc/ada/libgnat/s-multip.ads
! 480094d72a734edeb42c7f5646072a7d  gcc/ada/libgnat/s-objrea.adb
! ff5d15e422a34fb0a9ede457870c83f9  gcc/ada/libgnat/s-objrea.ads
! 92f9546f6c8187b82cbd56bfdd1f577b  gcc/ada/libgnat/s-optide.adb
! fd01b6584d48e6571cdd710fb36185fa  gcc/ada/libgnat/s-os_lib.adb
! 86ede71c04b00d87a2a99d888b4cb803  gcc/ada/libgnat/s-os_lib.ads
! 89c9d84a8e7286677c624b6d5b85d3ed  gcc/ada/libgnat/s-osprim.ads
! 0bce1d0b888de6ed9b48adac313cf821  gcc/ada/libgnat/s-osprim__darwin.adb
! 599a8e7665b3b32b99dd5614f083de3e  gcc/ada/libgnat/s-osprim__lynxos.ads
! 6949dda422eb3f4885084f2000f184d4  gcc/ada/libgnat/s-osprim__mingw.adb
! 3ca2e7681ec6369304e37cf6ebfe396c  gcc/ada/libgnat/s-osprim__posix.adb
! 3b670785fd332a71f198e5f095fad708  gcc/ada/libgnat/s-osprim__posix2008.adb
! cf7c48fe2e1b3c5da9a7ca38b3d54ef5  gcc/ada/libgnat/s-osprim__rtems.adb
! 10a37af48c56ff738ff89d490a71121a  gcc/ada/libgnat/s-osprim__solaris.adb
! c6b9acc7d1149194b5ed64e89e9d5bcd  gcc/ada/libgnat/s-osprim__unix.adb
! 3fd4a46e3dddbac2dd591d0643dd8ac8  gcc/ada/libgnat/s-osprim__vxworks.adb
! 2d7cf8811f8bc2f542a8a4280257ad46  gcc/ada/libgnat/s-osprim__x32.adb
! c0cfac5ffff163f1174c2c29410dc4ea  gcc/ada/libgnat/s-osvers__vxworks-653.ads
! b54761ba398ceb9e0dc98b29577219dd  gcc/ada/libgnat/s-pack03.adb
! 6ae7f133ee679e776cc53ea2c943fd99  gcc/ada/libgnat/s-pack03.ads
! b8395e5debd7d19fde5e0c89ca128eb1  gcc/ada/libgnat/s-pack05.adb
! dfbe136b2e2936e2b00e2e35c15bd55e  gcc/ada/libgnat/s-pack05.ads
! 9eb42332b86afeba2e11d58792ee8bde  gcc/ada/libgnat/s-pack06.adb
! 511220ebdf966a79bd218f225fe0e276  gcc/ada/libgnat/s-pack06.ads
! 9fe583e1a7c9fe66463b2b275be21448  gcc/ada/libgnat/s-pack07.adb
! 16f8fc2c6985d608282a8f2b4d49af59  gcc/ada/libgnat/s-pack07.ads
! 6936b5ea0d54661af53808dabca54e1a  gcc/ada/libgnat/s-pack09.adb
! bdb5fa4d4aa98807adc823f6eb10207a  gcc/ada/libgnat/s-pack09.ads
! 4ab4e19890838e0a3d092d13b7adafa1  gcc/ada/libgnat/s-pack10.adb
! dcbb090ed31f660c2d7e8c164038da2a  gcc/ada/libgnat/s-pack10.ads
! bbd6fc0a2b48692937b48b5d366c8ba3  gcc/ada/libgnat/s-pack11.adb
! e055da4b9196857f82d316c7fe42b259  gcc/ada/libgnat/s-pack11.ads
! 46788ac0e2dc2288001b8e8beeb2eafa  gcc/ada/libgnat/s-pack12.adb
! 589337957c667840e7efddab87585095  gcc/ada/libgnat/s-pack12.ads
! d4ead080bde90041fd890ca7354daac8  gcc/ada/libgnat/s-pack13.adb
! d841181565e6c401124cb643410364b1  gcc/ada/libgnat/s-pack13.ads
! f5b01bf10971c9a9806343e0cb847e06  gcc/ada/libgnat/s-pack14.adb
! cae74afd30fcdc88016bf593fea17814  gcc/ada/libgnat/s-pack14.ads
! 19ef474b7d9b60f0cb1c45eb6e7cc3c9  gcc/ada/libgnat/s-pack15.adb
! 4f671c1b6a1d3658188e15e6d59e6f7c  gcc/ada/libgnat/s-pack15.ads
! b39cf56baade21a9c0f0310b9b407ebe  gcc/ada/libgnat/s-pack17.adb
! 3a1c3a2dacab5294c5d5c6d7234b7aca  gcc/ada/libgnat/s-pack17.ads
! de0ac2ee7674a76f06638df8f706e30f  gcc/ada/libgnat/s-pack18.adb
! 79328472f1091468a607dcd778695dd2  gcc/ada/libgnat/s-pack18.ads
! d0f60f60ccece9be480ab6d571b44dfc  gcc/ada/libgnat/s-pack19.adb
! f2894ecd6e9e5d6988a1c9297c140892  gcc/ada/libgnat/s-pack19.ads
! f004484711a4318822da9e8dca670c2b  gcc/ada/libgnat/s-pack20.adb
! 2f365ee8e9ab5837cd8ed5ae75368cd1  gcc/ada/libgnat/s-pack20.ads
! 052be9481246a4113472b7fea42664fa  gcc/ada/libgnat/s-pack21.adb
! ee3fb94aee94e0caeaab75fcac874f09  gcc/ada/libgnat/s-pack21.ads
! b9aff6ca6f0d36c72df1cc6294fb0579  gcc/ada/libgnat/s-pack22.adb
! 1973d2d96607e1c394f61c509de1e88b  gcc/ada/libgnat/s-pack22.ads
! 5fa92f329f30e1fcc8ba5e874db5f4b6  gcc/ada/libgnat/s-pack23.adb
! 2feaca0b94a6d4a2892624a229e2e954  gcc/ada/libgnat/s-pack23.ads
! 8468ff07d565b6482b8ce57baaeaa322  gcc/ada/libgnat/s-pack24.adb
! eaf2cb309a66ff2774b97eda3f508791  gcc/ada/libgnat/s-pack24.ads
! 1311a9ebe81689300c537c529f1038da  gcc/ada/libgnat/s-pack25.adb
! 8e97f46505efc31e97184d0e9c63740c  gcc/ada/libgnat/s-pack25.ads
! 05fef02e02e349e1de8c96f7e6736a8e  gcc/ada/libgnat/s-pack26.adb
! be09c47d238b97e28f378c2d5b90bdf0  gcc/ada/libgnat/s-pack26.ads
! f7a8339e3c4d03c4b8e0c4e3435d8977  gcc/ada/libgnat/s-pack27.adb
! 9413bb17212888da68bc32ed8d493b87  gcc/ada/libgnat/s-pack27.ads
! 99d0897e9e1d1cbcc59c7fe393152eb1  gcc/ada/libgnat/s-pack28.adb
! c7ba9fdbd37d76b80201bea81e3a7748  gcc/ada/libgnat/s-pack28.ads
! fb5bbbc8d4090afb94f9f9108421c8ed  gcc/ada/libgnat/s-pack29.adb
! 77e390d7171e9b395185bbbadf8f1c25  gcc/ada/libgnat/s-pack29.ads
! 24c5a4742e7ec097df74daa9afb1692a  gcc/ada/libgnat/s-pack30.adb
! 5336f4646ec36693ed06d13393fcac00  gcc/ada/libgnat/s-pack30.ads
! 6cb5e1caa8946faf4715454b44f8b759  gcc/ada/libgnat/s-pack31.adb
! 16a738b008780a66313a5ba62fe18623  gcc/ada/libgnat/s-pack31.ads
! 77c1c3e1d43a5306ae992cf95f0002b4  gcc/ada/libgnat/s-pack33.adb
! 82e5a397450882c6f065e33cdc051325  gcc/ada/libgnat/s-pack33.ads
! f5026f85bb992226fe73515d98b4d16e  gcc/ada/libgnat/s-pack34.adb
! a3a8cac85d2f594260440e910f8c5449  gcc/ada/libgnat/s-pack34.ads
! 49e8849026f224121237559936cfaacd  gcc/ada/libgnat/s-pack35.adb
! db455cc3753d3d2485ca8b42260e0b32  gcc/ada/libgnat/s-pack35.ads
! e3601062c4f4bb1733534a225114a865  gcc/ada/libgnat/s-pack36.adb
! ba77f7a11d48cf7d7c0925bb1338300e  gcc/ada/libgnat/s-pack36.ads
! 4a94a783746d4a9520a669b82d769aa2  gcc/ada/libgnat/s-pack37.adb
! f35b69048b1ae49ae1cb1ac96b1334ad  gcc/ada/libgnat/s-pack37.ads
! 0a7f4fd52028d9bd32058e0f6c42b9c1  gcc/ada/libgnat/s-pack38.adb
! 913c480066c4013b9bc2a14afef95a41  gcc/ada/libgnat/s-pack38.ads
! 1db6b943112bb6eeb15d0e809ec81084  gcc/ada/libgnat/s-pack39.adb
! 2280383d40013368af123cfa1c2af4df  gcc/ada/libgnat/s-pack39.ads
! 09374034c585df6eeb2c7444eca3ac1f  gcc/ada/libgnat/s-pack40.adb
! 1e00eab961a238c4d04b62b8899df1d2  gcc/ada/libgnat/s-pack40.ads
! 9ceb56feeadbdbd2ff52ce8bad587a37  gcc/ada/libgnat/s-pack41.adb
! 7d3e0abfe952e796e373781511a508e9  gcc/ada/libgnat/s-pack41.ads
! 8afc2572c4e694fcacc065e091bef92a  gcc/ada/libgnat/s-pack42.adb
! 133a9be5520221ec0da2c1212e9c1060  gcc/ada/libgnat/s-pack42.ads
! 5fcd4b3917cdd9e22eca727dcbc311b7  gcc/ada/libgnat/s-pack43.adb
! beb8d537715065c9fdd5d2f2ce1ca144  gcc/ada/libgnat/s-pack43.ads
! 1f80b34af5bcb4cf50af99be8ef046ea  gcc/ada/libgnat/s-pack44.adb
! 38f17ff3ebd9889c2401eb3f1d7d5246  gcc/ada/libgnat/s-pack44.ads
! 2b8abc8013c956e2ed6f2937551709b3  gcc/ada/libgnat/s-pack45.adb
! 62832fa1cb395869b96f425c348a7f8d  gcc/ada/libgnat/s-pack45.ads
! d5d024405fd4e780f6c0c5cd37066e51  gcc/ada/libgnat/s-pack46.adb
! f9b9e8d6e5cfdb8b700dc89af70c3d13  gcc/ada/libgnat/s-pack46.ads
! 07ad942b3599eff2a5b5dad1f15c5eb4  gcc/ada/libgnat/s-pack47.adb
! 52456088a787b789aebba5a24784ff4e  gcc/ada/libgnat/s-pack47.ads
! 528b0966940f1fce98bee6811bbfab8c  gcc/ada/libgnat/s-pack48.adb
! 5f44f68e4f3995aeb4b741e09cfcb16b  gcc/ada/libgnat/s-pack48.ads
! b98b7c44413ae9ed8ed4ebbb20a84151  gcc/ada/libgnat/s-pack49.adb
! e9457d6a3b390cc96768e3cc445a0afe  gcc/ada/libgnat/s-pack49.ads
! 7511b5f2d9d0b50bb5a7c3a0ff587f18  gcc/ada/libgnat/s-pack50.adb
! 8cec3a88ea9c71b66afe965346b200f6  gcc/ada/libgnat/s-pack50.ads
! b8c7ab2204f4f7ad9478e5bfb091c583  gcc/ada/libgnat/s-pack51.adb
! db8e8fc1e6ca33f43eecb3c931af706a  gcc/ada/libgnat/s-pack51.ads
! 5dcc26092e29a62d8ab2ac22436f936a  gcc/ada/libgnat/s-pack52.adb
! 40dbb4d2bd30cc419a86f17c74a8235d  gcc/ada/libgnat/s-pack52.ads
! 9ffff8b2479ada14cda50e693eba69c6  gcc/ada/libgnat/s-pack53.adb
! 4130ec35f699db2930e38ffd090febbf  gcc/ada/libgnat/s-pack53.ads
! 95ab7035da442567752f9a71146f50de  gcc/ada/libgnat/s-pack54.adb
! 9e3c2fd86efc976d5fe9e13a0ac6b115  gcc/ada/libgnat/s-pack54.ads
! 91ea5f3cdbb53e1b544599a2633faf63  gcc/ada/libgnat/s-pack55.adb
! 7ac0a317fcb587a34e017b0da8cf10d8  gcc/ada/libgnat/s-pack55.ads
! 7de211316154f68b9630e3ac40305edf  gcc/ada/libgnat/s-pack56.adb
! bf8de78c19d1e6c34cf1e429376960af  gcc/ada/libgnat/s-pack56.ads
! f2d538c936f43e33f46bbf459cd5c106  gcc/ada/libgnat/s-pack57.adb
! d318962f6f2bace51a1c67cc711679bc  gcc/ada/libgnat/s-pack57.ads
! 441834ef11d75d495069e8d7b993a4fd  gcc/ada/libgnat/s-pack58.adb
! 7c47f6f6878024e63aceeeed651e5a15  gcc/ada/libgnat/s-pack58.ads
! 8b4423dc426637e04959f4a577812eb7  gcc/ada/libgnat/s-pack59.adb
! c25db9bf2e8d3b42d23559b85db0b9c1  gcc/ada/libgnat/s-pack59.ads
! 5af2a9549b6eba722b79d26049b2eb50  gcc/ada/libgnat/s-pack60.adb
! 87da243ec732ac58cabe0b2a5572ab69  gcc/ada/libgnat/s-pack60.ads
! 7f9564a47ea66c1a84016f74079923fe  gcc/ada/libgnat/s-pack61.adb
! b858f8f921674ffa7ae4fa9b5f57bcea  gcc/ada/libgnat/s-pack61.ads
! a3774e32ba9c1e35cd5a3ac8114932c0  gcc/ada/libgnat/s-pack62.adb
! 613b9e5b8aca0b8cd8ffeed4c8ad38f7  gcc/ada/libgnat/s-pack62.ads
! 68f7e41749db740c058a9b6585a7960d  gcc/ada/libgnat/s-pack63.adb
! c20aa83380790c0d7d2b30b93cb6b064  gcc/ada/libgnat/s-pack63.ads
! 61d898e506928c93d29aa716f3473109  gcc/ada/libgnat/s-parame.adb
! 7b7da00ed0fc046546ef495e5b29a098  gcc/ada/libgnat/s-parame.ads
! 316591d7b06dab062e543b7b95bc7160  gcc/ada/libgnat/s-parame__ae653.ads
! a2a2bf58a62baa755e93a5da23ef3d96  gcc/ada/libgnat/s-parame__hpux.ads
! 20a265d4e40bc6a48c1d2c858fe59215  gcc/ada/libgnat/s-parame__rtems.adb
! beb86ed72a88a2bd7d3243a4f8ac07ef  gcc/ada/libgnat/s-parame__vxworks.adb
! 77236bf24090d0725d7a92b342244f21  gcc/ada/libgnat/s-parame__vxworks.ads
! b15289a4c5336cd66e9a5b053889391f  gcc/ada/libgnat/s-parint.adb
! aa12bc3dd9d07daed1a7344863f4caee  gcc/ada/libgnat/s-parint.ads
! 17806a60a20b22e36a1d4d8193ce89b5  gcc/ada/libgnat/s-pooglo.adb
! 7c523e3dfed03f6d5d32a26f53b0dbc8  gcc/ada/libgnat/s-pooglo.ads
! 8a16d06aa65f8efa5fb2313c048bc03d  gcc/ada/libgnat/s-pooloc.adb
! f7f20f8ff3f50e90c2343c55655ef7c6  gcc/ada/libgnat/s-pooloc.ads
! 08473661d57b31e2518a353e98432fd3  gcc/ada/libgnat/s-poosiz.adb
! 628c4a61a4114b8ba5a48c1bae321729  gcc/ada/libgnat/s-poosiz.ads
! 53da70beed22fdfdc5d5358d7eb101fc  gcc/ada/libgnat/s-powtab.ads
! 6cbac727ed95aa2b61cd8c2715ced440  gcc/ada/libgnat/s-purexc.ads
! 6620fc9f43c917a387a691b4db04e353  gcc/ada/libgnat/s-rannum.adb
! c560f69958cb86a1895d66977478283f  gcc/ada/libgnat/s-rannum.ads
! 8dbd9b24ed2637efcd54f34048824ea8  gcc/ada/libgnat/s-ransee.adb
! 2364b5b78e25443b20ec2b8cdb841ef5  gcc/ada/libgnat/s-ransee.ads
! 8d70d1e4988a5a72b130d3cf5799a1be  gcc/ada/libgnat/s-regexp.adb
! ae1319a8fc8f18434fec32c9f2a4c417  gcc/ada/libgnat/s-regexp.ads
! 413909875061eee55bd21b311e579e35  gcc/ada/libgnat/s-regpat.adb
! cc2bae05b220e92cce3f6cb076d3ead5  gcc/ada/libgnat/s-regpat.ads
! fe59fa1085c8d34ef0b787dd0fe12056  gcc/ada/libgnat/s-resfil.adb
! 59fd2e44e6749e4e7bf82385132c5385  gcc/ada/libgnat/s-resfil.ads
! b9fd2fa933e2ac4136f587da20513f33  gcc/ada/libgnat/s-restri.adb
! 48f3551afa2671c5ae54f2cea3c1276a  gcc/ada/libgnat/s-restri.ads
! e80caa3bd554fd9959e1f62f7d2544af  gcc/ada/libgnat/s-rident.ads
! c52737eee13208bddc9855d5681d0704  gcc/ada/libgnat/s-rpc.adb
! c1d9d8641f7c26bd64817edc917f7c87  gcc/ada/libgnat/s-rpc.ads
! addc519375fa907cccbe8dd1aed3f798  gcc/ada/libgnat/s-scaval.adb
! dc2ceb1d3240dc2eda508aa8bf51c131  gcc/ada/libgnat/s-scaval.ads
! f1a5dd6d9b4da96bd455be5a500a5cac  gcc/ada/libgnat/s-secsta.adb
! eea051c8a94a87ffb3da9e80032ead04  gcc/ada/libgnat/s-secsta.ads
! b732cc8bb8dbf077b38567803dc968d4  gcc/ada/libgnat/s-sequio.adb
! c25de87117d85e2b6a3d3cd284911f96  gcc/ada/libgnat/s-sequio.ads
! 2e3a6b4f92d3d7e1acc772fee90708c8  gcc/ada/libgnat/s-shasto.adb
! 8a3ae50853e2eb8a9d28b47e6ab54cd0  gcc/ada/libgnat/s-shasto.ads
! 052b13009a8bf7edad4bdee074b1673f  gcc/ada/libgnat/s-soflin.adb
! 498e4b65a0e03bc9a94a237a99f4862d  gcc/ada/libgnat/s-soflin.ads
! df4be614957f52797d5aecd311234634  gcc/ada/libgnat/s-soliin.adb
! 5a0a26cb30441003f1b56e834da37f75  gcc/ada/libgnat/s-soliin.ads
! 5b7b5264cfed8600b2015bf62d1a4fbb  gcc/ada/libgnat/s-sopco3.adb
! 881be4a1c8e3b25dbb8679cd9b7000d7  gcc/ada/libgnat/s-sopco3.ads
! 8883680c43fd4df8cf589851098d560f  gcc/ada/libgnat/s-sopco4.adb
! a69975f909c992bd6287db67d5b3ee5c  gcc/ada/libgnat/s-sopco4.ads
! e2e1e2025e177889c2d7e0731b692886  gcc/ada/libgnat/s-sopco5.adb
! f11d46608cb73757b15e779e0f8e6bb2  gcc/ada/libgnat/s-sopco5.ads
! c187b788d13f0c9d58a28004df012d45  gcc/ada/libgnat/s-spsufi.adb
! 630714b820265bbd9930a5e32795f2a7  gcc/ada/libgnat/s-spsufi.ads
! 1f386cefff742c26a0f430c3f654c04c  gcc/ada/libgnat/s-stache.adb
! 5f022e58fdd29520d8f393b10a15237d  gcc/ada/libgnat/s-stache.ads
! 144f160a8083d611a54b7ccd4f70027a  gcc/ada/libgnat/s-stalib.adb
! a09d5f20b67206e35b48c9560d9bb59b  gcc/ada/libgnat/s-stalib.ads
! a65b72eff6648d6dbf0efba6a1ddcac8  gcc/ada/libgnat/s-stausa.adb
! 3d62bf5929d1224aa3e8a0292c103e33  gcc/ada/libgnat/s-stausa.ads
! a67c90b921a8b4535096ad6d676ba7c6  gcc/ada/libgnat/s-stchop.adb
! c64616111f2322a8ef5eeeeb2cb3f196  gcc/ada/libgnat/s-stchop.ads
! 9f1d2c7410967596a5399cb737c049cb  gcc/ada/libgnat/s-stchop__limit.ads
! a8f31521ebd9b84df8102768f7d30e41  gcc/ada/libgnat/s-stchop__rtems.adb
! 8fc2bd7e26a5d1e5113609a6945e9a9d  gcc/ada/libgnat/s-stchop__vxworks.adb
! 8ea36b0d3ebae27962a750c908097616  gcc/ada/libgnat/s-stoele.adb
! 058aeb796639c2a678e5643b0713cbc2  gcc/ada/libgnat/s-stoele.ads
! 61990840dd06b7430990bc16d93e3cc9  gcc/ada/libgnat/s-stopoo.adb
! 79597b9a3b80b64c7c2b9fe6b769f70b  gcc/ada/libgnat/s-stopoo.ads
! ced175b1bf33f62a2907c660c4d85377  gcc/ada/libgnat/s-stposu.adb
! ae39f69147b1bafe0998a963ef1ea1c3  gcc/ada/libgnat/s-stposu.ads
! c38a890a587a1e56579957c4007b9c84  gcc/ada/libgnat/s-stratt.adb
! 89e8464a49754be1a8d2add0453737b4  gcc/ada/libgnat/s-stratt.ads
! 508bdbff9a8877c54de9e02af81a21e0  gcc/ada/libgnat/s-stratt__xdr.adb
! b4b1278ca581168e597734550c34e5ee  gcc/ada/libgnat/s-strcom.adb
! fbbfb70969bc466facb1677f5e6ec094  gcc/ada/libgnat/s-strcom.ads
! 402e78a9528afc2428dd907d34d62234  gcc/ada/libgnat/s-strhas.adb
! 47a4b77653b28c2f798002b2fa02cb93  gcc/ada/libgnat/s-strhas.ads
! a68e42112b9349743323cd021bddf2c2  gcc/ada/libgnat/s-string.adb
! dc169d65cd1a29397924e600d04484c7  gcc/ada/libgnat/s-string.ads
! aaa83c27e11829ebfdc17053330c19ab  gcc/ada/libgnat/s-strops.adb
! 791eaf5a35334cf3326e5ac1ad362b5a  gcc/ada/libgnat/s-strops.ads
! 5dda092312e579f886e08d958eed562c  gcc/ada/libgnat/s-ststop.adb
! 776bc11ce565c68a4d2d1c29ec40807c  gcc/ada/libgnat/s-ststop.ads
! 183e195ce98d2a4afc60440e2f35b44b  gcc/ada/libgnat/s-tasloc.adb
! 538890eb071b3e06542a8f4ae2c3c494  gcc/ada/libgnat/s-tasloc.ads
! b9f944b485a04e26709bc78e366abb8c  gcc/ada/libgnat/s-thread.ads
! 8d3aa26a90f5b43a0dff5e2c7ca8669a  gcc/ada/libgnat/s-thread__ae653.adb
! de8a9514b18b6f21fbae8ac1e171b3de  gcc/ada/libgnat/s-traceb.adb
! 7d623e9f65d76e05d3ac7195871d7db4  gcc/ada/libgnat/s-traceb.ads
! 848d6043b56bba486cc410e13f981f9b  gcc/ada/libgnat/s-traceb__hpux.adb
! 0cf6ad79e60748a5eba0b80ae6e02ab3  gcc/ada/libgnat/s-traceb__mastop.adb
! 9114e3b31cbf86ea75253698e4dcb60d  gcc/ada/libgnat/s-traent.adb
! 292e6f25682dedfb4e462f7c39863813  gcc/ada/libgnat/s-traent.ads
! 1b2a1ae23ee7a3b463479066e1f464bf  gcc/ada/libgnat/s-trasym.adb
! 8d1dd9146a5297d5529cd9ba78ab8b82  gcc/ada/libgnat/s-trasym.ads
! 88a750a101e8305c45bd33aea7038498  gcc/ada/libgnat/s-trasym__dwarf.adb
! b99040b51fe38632c84d83658c01433e  gcc/ada/libgnat/s-tsmona.adb
! 7a69fe0a0dc6ed171d7f364c1d33873c  gcc/ada/libgnat/s-tsmona__linux.adb
! 78cca26c276f5fd25637b768821aab0c  gcc/ada/libgnat/s-tsmona__mingw.adb
! 8c5debd6382a7ba7a18aa6a64719835c  gcc/ada/libgnat/s-unstyp.ads
! 17bf8de56c4273465c7965b7111e0bd6  gcc/ada/libgnat/s-utf_32.adb
! 814f9523ea5105de7164206d59735b46  gcc/ada/libgnat/s-utf_32.ads
! ad306bdcabee38f3c57e8e1151739c18  gcc/ada/libgnat/s-valboo.adb
! 2d21f4cac15948fb3ea3bdc96a28d74f  gcc/ada/libgnat/s-valboo.ads
! 51fcb6b3843d7f12666a5b41de038860  gcc/ada/libgnat/s-valcha.adb
! e08e1c5450ac03f4686afd4190040b87  gcc/ada/libgnat/s-valcha.ads
! a20ca5f34d3b516dfcf832ce9941612d  gcc/ada/libgnat/s-valdec.adb
! 6290e3bb57c65f3c65751ebff9d2b17e  gcc/ada/libgnat/s-valdec.ads
! 58c842ede8be447f57a1a39bbd2ccbfa  gcc/ada/libgnat/s-valenu.adb
! 246d2281f354f61bbd99253fe77150db  gcc/ada/libgnat/s-valenu.ads
! d0e3c73a5f1ec24d53afe6e70d2845b5  gcc/ada/libgnat/s-valint.adb
! 93d618bd10b71e17f583932d3715adce  gcc/ada/libgnat/s-valint.ads
! 2c4c5849ffcd3fbef91489b6b0468ed9  gcc/ada/libgnat/s-vallld.adb
! fdd8b27b18a9cff09cd2f4fe5123b5c4  gcc/ada/libgnat/s-vallld.ads
! cb1153e3a9db36a02951f3f4f2b97161  gcc/ada/libgnat/s-vallli.adb
! 7231ecfcbf0af67080c32661b1140449  gcc/ada/libgnat/s-vallli.ads
! af19a3da3612e5d0e25b9b59e79d7501  gcc/ada/libgnat/s-valllu.adb
! f165592d5485fab66534ac0a36f4cc2f  gcc/ada/libgnat/s-valllu.ads
! 92ac16fbb888795dd03fadedab450510  gcc/ada/libgnat/s-valrea.adb
! f2bd5c5a727f5758ca21d69762c1f76f  gcc/ada/libgnat/s-valrea.ads
! c5798511a6698b99901c80d9df4fefed  gcc/ada/libgnat/s-valuns.adb
! 339727fc7764296d20c4c6c5bf3d0ae3  gcc/ada/libgnat/s-valuns.ads
! c10928dead150b42bfcd7b4a0e24fc6b  gcc/ada/libgnat/s-valuti.adb
! 2e737fbac2aa3dce9c60ecf0985bd102  gcc/ada/libgnat/s-valuti.ads
! db9aa2bc9ff0f461487b3c6eda8ca4bb  gcc/ada/libgnat/s-valwch.adb
! 3aaf0dac9aeaec8ed0614636c18d8b3e  gcc/ada/libgnat/s-valwch.ads
! a7ba873b7a2ab3f9cfaa641d8935ebf8  gcc/ada/libgnat/s-veboop.adb
! b334fe3cd1a3e196f16f0f46b608c6e9  gcc/ada/libgnat/s-veboop.ads
! e7019807e20fdee91766e8225472792f  gcc/ada/libgnat/s-vector.ads
! 6bea7225db6ef6e94e81a139ed0eff54  gcc/ada/libgnat/s-vercon.adb
! c1bc784912b85cdd881b5f32d9da594d  gcc/ada/libgnat/s-vercon.ads
! ab2541dd284ac3111a9c881064e35520  gcc/ada/libgnat/s-wchcnv.adb
! 0b543cc342e7ebd3d3f602a2c3283ac0  gcc/ada/libgnat/s-wchcnv.ads
! 15b7492ffc16bd12f17d81d618485894  gcc/ada/libgnat/s-wchcon.adb
! 3ea09bca8e36a13d375190464dfbf529  gcc/ada/libgnat/s-wchcon.ads
! 329a50f3143405bec9a33081ac35c12d  gcc/ada/libgnat/s-wchjis.adb
! ef216c8998c85cc7d06c8f01a1acaee7  gcc/ada/libgnat/s-wchjis.ads
! 8afb327c18102ba765901b3ac0f66d55  gcc/ada/libgnat/s-wchstw.adb
! 854845e4b815b2920bb6dac33984d00f  gcc/ada/libgnat/s-wchstw.ads
! 1bc4be06a8861a863e53d86d5763efca  gcc/ada/libgnat/s-wchwts.adb
! 6b6943000c458df10ad901e9168badd5  gcc/ada/libgnat/s-wchwts.ads
! b5dd9ef8754a960f907bf2229ec3cc53  gcc/ada/libgnat/s-widboo.adb
! 13e3b9cba4d135279d2d28cd2f3e0f63  gcc/ada/libgnat/s-widboo.ads
! e7700764a72827ec7841979ce8a22190  gcc/ada/libgnat/s-widcha.adb
! 6133ab87142dc4d5b1df886244035a5c  gcc/ada/libgnat/s-widcha.ads
! 978df337a139ec8ed0f2b0f4f3a845d0  gcc/ada/libgnat/s-widenu.adb
! 98a8139c8e7fa3c79755e42137e13479  gcc/ada/libgnat/s-widenu.ads
! 5ec45e3934fd79aed981e554c4812924  gcc/ada/libgnat/s-widlli.adb
! 45a4fd94ebeb7631826ec47a27a350bc  gcc/ada/libgnat/s-widlli.ads
! ac51c3eb34cf66753be79ac94aa71dd0  gcc/ada/libgnat/s-widllu.adb
! 2f1d9895ef9cfba29ed0bf714933b3ac  gcc/ada/libgnat/s-widllu.ads
! cbfe05398d53b6329e6f81dcd39bb207  gcc/ada/libgnat/s-widwch.adb
! 4dd38a02af6ded17c8b0188075786b14  gcc/ada/libgnat/s-widwch.ads
! 40c3dd7c372b6e0eb3e520c510546287  gcc/ada/libgnat/s-win32.ads
! b50fbf5decefdca5c4cbf2bc370dfcbc  gcc/ada/libgnat/s-winext.ads
! c11325d9c96ebd05d20823b9baa83404  gcc/ada/libgnat/s-wwdcha.adb
! 174daa9cf1b82d882314148124d056bb  gcc/ada/libgnat/s-wwdcha.ads
! a4e706cbbc51963c230ef91b4cdf5fd1  gcc/ada/libgnat/s-wwdenu.adb
! 522df11d767fb9363b4a033eb9fa0dff  gcc/ada/libgnat/s-wwdenu.ads
! de39c38f9551db74633b980502922eac  gcc/ada/libgnat/s-wwdwch.adb
! 3dbf0f199dd450863a97cf250a2c9894  gcc/ada/libgnat/s-wwdwch.ads
  0f4c21401ad2531f8c5d4010537dc6d2  gcc/ada/libgnat/sequenio.ads
! c415b8ca0a8293ae5d4c5f7c0543f0dd  gcc/ada/libgnat/system-aix.ads
! 7539e24ed597c671c4e44e1e4222cc93  gcc/ada/libgnat/system-darwin-arm.ads
! a4e888f8880e125d374db8ca9c7c1f21  gcc/ada/libgnat/system-darwin-ppc.ads
! 40973ae941f96bd64344817926e6ba0c  gcc/ada/libgnat/system-darwin-x86.ads
! 1206023c2df69b31e366aad88d49ba4b  gcc/ada/libgnat/system-djgpp.ads
! a14fcb22cbc4eb7a47a6cc4d2bab6690  gcc/ada/libgnat/system-dragonfly-x86_64.ads
! 7024b7243e46518315783b65f54b4205  gcc/ada/libgnat/system-freebsd.ads
! 55706d6a640a4a45567c14272459797b  gcc/ada/libgnat/system-hpux-ia64.ads
! de2f45387f493e94a16510529cdb9137  gcc/ada/libgnat/system-hpux.ads
! bd76ff82a8786c1be1c168b2c4d16792  gcc/ada/libgnat/system-linux-alpha.ads
! 838193b1c51dd011fa8004ead1a893f6  gcc/ada/libgnat/system-linux-arm.ads
! 12b88cccc8b21bc7129c2ebe842b1af4  gcc/ada/libgnat/system-linux-hppa.ads
! 725c7f6fbab5e27e614b0a6b69c6741d  gcc/ada/libgnat/system-linux-ia64.ads
! 2c2f9377bceff9a1d41de0ec5c368d31  gcc/ada/libgnat/system-linux-m68k.ads
! d6fd1d78ea0055d54dcbfab9293cc3a4  gcc/ada/libgnat/system-linux-mips.ads
! 510c36435c77882e2f06adbf160be74c  gcc/ada/libgnat/system-linux-ppc.ads
! f17c1ede281ce2e8da8b4ee11ebbaea7  gcc/ada/libgnat/system-linux-riscv.ads
! 313921169ea8726c38840e9ad179f1a9  gcc/ada/libgnat/system-linux-s390.ads
! 34971666c35f415904a391f8e84ae172  gcc/ada/libgnat/system-linux-sh4.ads
! c6b8937b46b409ec72dcf89e3bd98833  gcc/ada/libgnat/system-linux-sparc.ads
! 0346d0bd7dd7e5fcb320cffc9adc10bc  gcc/ada/libgnat/system-linux-x86.ads
! 02479fbca8137e3403c69a6ea890a84e  gcc/ada/libgnat/system-lynxos178-ppc.ads
! 980fdcc4918cf7f88e9636135a63ce29  gcc/ada/libgnat/system-lynxos178-x86.ads
! 377f7c1e5e3f126daa8d80d97d306162  gcc/ada/libgnat/system-mingw.ads
! a4200a6efbfa8046253eb9b0768b8def  gcc/ada/libgnat/system-qnx-aarch64.ads
! 43360073fbd2c263d0a46e6e9e01a288  gcc/ada/libgnat/system-rtems.ads
! 0e290447eaa3311b2cee0a4dc1e73dc2  gcc/ada/libgnat/system-solaris-sparc.ads
! 59e0927747e3a0d62bb6a197203d14a6  gcc/ada/libgnat/system-solaris-x86.ads
! 70ca013dafc387e2d31489faf481e547  gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads
! fc14de7957a53d3e1a97c6b94b506774  gcc/ada/libgnat/system-vxworks-arm-rtp.ads
! 59e20bcfed25a295dc9246df79ad2e1a  gcc/ada/libgnat/system-vxworks-arm.ads
! cb92409e14073e5005fb61e154302ccb  gcc/ada/libgnat/system-vxworks-e500-kernel.ads
! 2911feced0bbdc7a4d6507346e3dba32  gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads
! 0e977ee4843f15cb999bb4a64fbb3ac4  gcc/ada/libgnat/system-vxworks-e500-rtp.ads
! ac35ab6469f79a2a35b58adc36fad8fe  gcc/ada/libgnat/system-vxworks-e500-vthread.ads
! 90a6a023175eab008dd4c66039bae501  gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
! b87f55544b1141f58a18b299b97c3231  gcc/ada/libgnat/system-vxworks-ppc-ravenscar.ads
! 86aae4e4a7bae90ef81af18087bd81d4  gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
! 08da7e3b2860a60eaed27f9a48999b87  gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
! 8fc10e0d59a43cf4fb05d9fed4e05ea3  gcc/ada/libgnat/system-vxworks-ppc-vthread.ads
! d175b97151c554fe28011bfe97e71e83  gcc/ada/libgnat/system-vxworks-ppc.ads
! 425369286c08ba0401b8f3ec78b23038  gcc/ada/libgnat/system-vxworks-x86-kernel.ads
! a2f6d479d824e18d093d9e475e9570c7  gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads
! 53cac010254746f97b290c293fdc88bd  gcc/ada/libgnat/system-vxworks-x86-rtp.ads
! 62a1a3685326d027abe4f19cdc289faf  gcc/ada/libgnat/system-vxworks-x86-vthread.ads
! 49802611c3ac0bf5e0cc1c0154e3cdab  gcc/ada/libgnat/system-vxworks-x86.ads
! 3531b351a6895cfac129f8c9345df0d0  gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
! 93fdfb685cc30adf367b4599e5a0db9b  gcc/ada/libgnat/system-vxworks7-aarch64.ads
! 015662cc6a02a9c2128baf77f60184ec  gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
! 59e20bcfed25a295dc9246df79ad2e1a  gcc/ada/libgnat/system-vxworks7-arm.ads
! a4507d7c23655d572a5dd9cb7cf97f43  gcc/ada/libgnat/system-vxworks7-e500-kernel.ads
! 624912ba9fbef3edc0052d45e52f1333  gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads
! a487ede34f2ff7887cc198de1c7c65ed  gcc/ada/libgnat/system-vxworks7-e500-rtp.ads
! 5a0174ece2444728d4c51cf5c615ad39  gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
! 901d7d476449454106e084f291328afb  gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
! 1fde31f86d6fdaa516d52d61d3cf1ace  gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads
! 7b48354c4ecd4f9904ba113d663df430  gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
! 6c73e6e406d18d3ec57f0c66bdb7e1b4  gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
! 99290d32d91b52e20702b5fa24953184  gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
! 705de30470f9ac9e7471e0d683ef8288  gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
! 87ec408ca1e4ef4355579b2eb91f7175  gcc/ada/libgnat/system-vxworks7-x86-rtp.ads
! dfebf93068d22857b20016c819b1cda9  gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
! f89f47e30415b8b487c4db8bc14f45a0  gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
! 0776f81383fe1ae07dfc6bb3a9f5f09a  gcc/ada/libgnat/system.ads
  2dc890e2791f7e9d6e1e9ca1cfb55c71  gcc/ada/libgnat/text_io.ads
  9a646eb97c6840de5d4bbb081dd2031a  gcc/ada/libgnat/unchconv.ads
  b8b0f9c3471d18ee5ac33521fe6f6d31  gcc/ada/libgnat/unchdeal.ads
! 8fd35713740067b6f3127c9bec70ef2e  gcc/ada/link.c
! fd1c9e241f5bf1bb5655c69153b41133  gcc/ada/live.adb
! 2ca01c3bc1753caf04cead42adf61dd5  gcc/ada/live.ads
! 2842f4ea8d238b2690181c6f4028426c  gcc/ada/locales.c
! 6f01d31d309436765d5a0cef3adb8a7c  gcc/ada/make.adb
! c258892952d80d97ea618936a32b954d  gcc/ada/make.ads
! 68eba17920b77908765320be2dc670e6  gcc/ada/make_util.adb
! 27046bd0d41298d0e4bfff4dfa806991  gcc/ada/make_util.ads
! e33e6066acebe8ee2a7beedaca456897  gcc/ada/makeusg.adb
! d59bb9ad893e176fa2cded8febe1f1e2  gcc/ada/makeusg.ads
! 95881a8bfebd05a728f26effb82c740a  gcc/ada/mdll-fil.adb
! 5ec0260db6f183999282f4bdec76ef22  gcc/ada/mdll-fil.ads
! 66cfd8c71ad3cca5343c7dc6f802a9bc  gcc/ada/mdll-utl.adb
! ab8b20a835280643629b5a641143549a  gcc/ada/mdll-utl.ads
! e100f1b269d9ae266ffca3877adef014  gcc/ada/mdll.adb
! 261280673b2339f066f390abf8fbc67f  gcc/ada/mdll.ads
! 7d63697660954f92cac6c4e07a280c5d  gcc/ada/mingw32.h
! b2b6b9406a11c98f785491f5486ba077  gcc/ada/mkdir.c
! 279b2738f2efc9b6f610d6f5184ef34a  gcc/ada/namet-sp.adb
! f439cce6363794d3f2bf7fdf6bcf34c5  gcc/ada/namet-sp.ads
! 13cbc3cc92bd0c8f0a5d57b918eb0e79  gcc/ada/namet.adb
! 8c936a9d41b5532f69f9c8b98b43e818  gcc/ada/namet.ads
! d3675300206d35a27ed9bbe5e8839359  gcc/ada/namet.h
! 4a97c62e7066b31ebc3c3103cf6240a0  gcc/ada/nlists.adb
! 5a951de2873fb6c2f03c6f8347e5f6e1  gcc/ada/nlists.ads
! 15774fc3c704057bddbbc8e1cdb5c50e  gcc/ada/nlists.h
  349f0f4aeff5f96eb16ad78474248af9  gcc/ada/nmake.adt
! c32014f6b854088cab7f0b1dce94ebb8  gcc/ada/opt.adb
! 9054f6f37e9f939c757de90193885d67  gcc/ada/opt.ads
! c8c5fce030b1329130be4c096fe0cbe3  gcc/ada/osint-b.adb
! 8c298953d9471b8f09276f9e823aeb81  gcc/ada/osint-b.ads
! 60a767aa365d0357ae749ba214a88910  gcc/ada/osint-c.adb
! f394a69a4da4d98fd3cd2bb688d8499a  gcc/ada/osint-c.ads
! 571c14fefb157d15c0a8d229212c6ea6  gcc/ada/osint-l.adb
! acd40f1c4af91725ff4f4d18a6340445  gcc/ada/osint-l.ads
! 083fb348b04bec4590e1156073a94834  gcc/ada/osint-m.adb
! 239204c26ee709e20e15e75111096c10  gcc/ada/osint-m.ads
! 1ebb243f979045cc187629196a1e0b76  gcc/ada/osint.adb
! 5fc9124c330263e4f0ba7dd19f0d0ecb  gcc/ada/osint.ads
! ed829e192c397cdec2dba8aa2699b6a6  gcc/ada/output.adb
! 65e1a9cdeb697962cb036363f6206f2d  gcc/ada/output.ads
! 27bb5b6e736aaa1fc8eed57cbfcb3a94  gcc/ada/par-ch10.adb
! c98a9a1e81cd483fd8d0214373188359  gcc/ada/par-ch11.adb
! 127c8a1c362db000af7b939210878751  gcc/ada/par-ch12.adb
! 55c8d4de1da40d4d102194d714cb762d  gcc/ada/par-ch13.adb
! 428593ed1355b57ecb1ea0e9a9534a13  gcc/ada/par-ch2.adb
! 5a964947bb82e980d7564df88ca82574  gcc/ada/par-ch3.adb
! 377ff34867b45a24671bdc16562857be  gcc/ada/par-ch4.adb
! 28482948d5cf70d302a920426ce12910  gcc/ada/par-ch5.adb
! 53d63f359c85e5fcc57ab65053dc5946  gcc/ada/par-ch6.adb
! 0a6b5489345cb8afb3178224153bad1a  gcc/ada/par-ch7.adb
! 8e9d6935b59f8e796495fae19fd2cb43  gcc/ada/par-ch8.adb
! bf799cf59bc2353008b3f3272d559332  gcc/ada/par-ch9.adb
! 7452dc095bea7f317ed5714592fa8e0b  gcc/ada/par-endh.adb
! 93c40803eba4b81c516e5e4b23ce1b42  gcc/ada/par-labl.adb
! cf1534203bfbcf4020a5fef0a4216b8b  gcc/ada/par-load.adb
! 375c750ff9d145a5b2bad134918b4189  gcc/ada/par-prag.adb
! 3a7c3c6f3abe05347fab1fcfe1a0bac5  gcc/ada/par-sync.adb
! 1724bb7e95c87b9d6924463642bd6d77  gcc/ada/par-tchk.adb
! b8014f66c4d19a6387944469bc8e06d8  gcc/ada/par-util.adb
! 4bbc83ba5572a01b765664695d46b78a  gcc/ada/par.adb
! 0ab1082f496b1f70db52015e6579063e  gcc/ada/par.ads
! f13f6d31dbce5fb198fc9e0b3b2aa1fb  gcc/ada/par_sco.adb
! 0673b3ca0e80f80837cd4db06571565d  gcc/ada/par_sco.ads
! 0e3f564686b2bbc1d8dca2a477577b18  gcc/ada/pprint.adb
! 551ecbe44785f283062d9c3bc172bbcf  gcc/ada/pprint.ads
! 4e59cb3116eda79a6d887d78635aab49  gcc/ada/prep.adb
! 21d10eb87dc6d3ca0a59abafa3b82efb  gcc/ada/prep.ads
! 1e43367063a9f7f36810b29a90f5f8d1  gcc/ada/prepcomp.adb
! 9c85683301109312cb3a9140bbfac2ea  gcc/ada/prepcomp.ads
! 6812945110f54dda00fb595f17bcde8f  gcc/ada/put_scos.adb
! 96958e4e08d4bdeed1342e74b1cd4543  gcc/ada/put_scos.ads
! 1231c0a0faaa10a815327106db7e4987  gcc/ada/raise-gcc.c
! f79007642d9a7d3998972ce565347edf  gcc/ada/raise.c
! dffb768ba213a86fe86d99f60a4a72e7  gcc/ada/raise.h
! 4b28970cff00271ab3684c65213e679d  gcc/ada/repinfo-input.adb
! 76bd1dc322f93f8ae11e24e7ffc85ff7  gcc/ada/repinfo-input.ads
! 01683e70257d4a198fcc94469ba0c787  gcc/ada/repinfo.adb
! 71bb9855f37a6feed515c0b8d3424183  gcc/ada/repinfo.ads
! 1f90c2626f1bcce4b135d73b3acaed47  gcc/ada/repinfo.h
! eb11090faf15da0fa1ad8ec1de8a3b84  gcc/ada/restrict.adb
! 5abafa61eb5f966d36380e4dd1f756da  gcc/ada/restrict.ads
! 6695e30f6498eb626207023fcdc2916d  gcc/ada/rident.ads
! aab13247ecf3d9a6694659f091f5b8c8  gcc/ada/rtfinal.c
! 33edfce26a510cd6af088d5fa6a1a75d  gcc/ada/rtinit.c
! ed832b1ef9cb9cd1443b01720c794c24  gcc/ada/rtsfind.adb
! c414e3dba7c1b3c469c5d57a6a631e4f  gcc/ada/rtsfind.ads
! df7024e0b20462aadb116bee58e5c187  gcc/ada/runtime.h
! 4f829d7ca120ee8aa6eb49b6260d4d8e  gcc/ada/s-oscons-tmplt.c
! e2bd3f0c3b48e93788404d0988c7671c  gcc/ada/sa_messages.adb
! 0fef12e5437cfe9e67a9c715fd30f4e6  gcc/ada/sa_messages.ads
! 2f30d9356a4df939430b8daf613e529f  gcc/ada/scans.adb
! 8865edb845b629a4142e8a4ba8dce43a  gcc/ada/scans.ads
! d554a85e1ed1960acc5f84a6cfbc24e4  gcc/ada/scil_ll.adb
! 7fbb4351ba79605fa9ce2820144769ac  gcc/ada/scil_ll.ads
! bd1ffb39cce5ee8ffe9d358c533baf0f  gcc/ada/scn.adb
! 502b72469e34dddedf7cc8e05119d9f4  gcc/ada/scn.ads
! 9e9407dfef30f3d7312d8a961855bc26  gcc/ada/scng.adb
! 41ac472b2681692caa5c3d469afab515  gcc/ada/scng.ads
! 0f7ba1542c44b554b232feab4bf9657f  gcc/ada/scos.adb
! 9175d6644c0950ed4e9db31348d394ea  gcc/ada/scos.ads
! 45b962bfdda3dd5e273343a0852a8697  gcc/ada/scos.h
! 18576e7e2ba6c916372aa28497182485  gcc/ada/sdefault.ads
! a7f3f171ad8e37317267c81ca345be81  gcc/ada/seh_init.c
! ae1c00a358eeffb620239df2ef5ed6d2  gcc/ada/sem.adb
! 3dfdf64349257d6ae5c24be9d575eea9  gcc/ada/sem.ads
! fb752c22b8eb8ad247bf2bfa726f6b54  gcc/ada/sem_aggr.adb
! 485691b078f71a72ce2548900945dbba  gcc/ada/sem_aggr.ads
! 3446d49371a24c96178cf77f2c63aa02  gcc/ada/sem_attr.adb
! 7471639f26325d59fc817d16515afd12  gcc/ada/sem_attr.ads
! c9cc40b23a1ed798f326580f5da2b84a  gcc/ada/sem_aux.adb
! 4b270683cd6acda782b0bce1cd870da5  gcc/ada/sem_aux.ads
! 35c8f9381c68f766f839bc1322af1f4c  gcc/ada/sem_case.adb
! 1c1d4fd245ae5a0e8054f9162c69be3f  gcc/ada/sem_case.ads
! 9c0ad8dd6dbac38767d30d6cdef83198  gcc/ada/sem_cat.adb
! d69d09d030a6c5ab1ae1b3cc4ec2c26f  gcc/ada/sem_cat.ads
! 606e6979d45a1c1dccca645c981a055c  gcc/ada/sem_ch10.adb
! 2c40b4ebae65870fbe7af8d4393d7933  gcc/ada/sem_ch10.ads
! d83bceab711706d275d9378f4336ad2f  gcc/ada/sem_ch11.adb
! a0012faf72f61196e5bc1a73ca29c19b  gcc/ada/sem_ch11.ads
! 0e47dc4821c0afe09d28328d269ea848  gcc/ada/sem_ch12.adb
! 341da8bb5ee0a7aa5f7da81c81f1f563  gcc/ada/sem_ch12.ads
! e7c80dbc4389ab0f94dc8de88a2b94e8  gcc/ada/sem_ch13.adb
! 3e3105bfd9807ba11c4056ee07ed898b  gcc/ada/sem_ch13.ads
! 3cd646cc22b07d10f2a3d75a8875afd9  gcc/ada/sem_ch2.adb
! 39c946a969e96e8fe5bc0bb0b0acd80b  gcc/ada/sem_ch2.ads
! c530e6059f79ddc6ca3a6dfaaf47e40a  gcc/ada/sem_ch3.adb
! e7b00f5a43c2474a64d6f67723f625b8  gcc/ada/sem_ch3.ads
! 63a705a6980f05436f244c2db3232003  gcc/ada/sem_ch4.adb
! 19579b727c30e521f95eba0adc1103de  gcc/ada/sem_ch4.ads
! d6fd03ec54ecf9b76f18379a15e92422  gcc/ada/sem_ch5.adb
! 321c53e0eb9d689f389afbaf967cd29f  gcc/ada/sem_ch5.ads
! e93a1a37b848f198ed47122d130acc72  gcc/ada/sem_ch6.adb
! 0f73b178f8b9ccd177a7fcd713c86f75  gcc/ada/sem_ch6.ads
! c1fe139720d49ecfa588e8a39dea6336  gcc/ada/sem_ch7.adb
! 6640abc1e85fd2f51cb0e46d799d54cb  gcc/ada/sem_ch7.ads
! 817e2c22a8c728ffc27d8809c290349a  gcc/ada/sem_ch8.adb
! 315b4d0642c74feb3e4a37dbf20d9efd  gcc/ada/sem_ch8.ads
! 7f3e3b5c95e8fadf5ccee0eac40147ed  gcc/ada/sem_ch9.adb
! c825ba457685094a8dcd5a6a443295de  gcc/ada/sem_ch9.ads
! 811e9183165c1ed35d03d071cd2c9126  gcc/ada/sem_dim.adb
! e5c8ef13f966e839e1d57915f5e44e5a  gcc/ada/sem_dim.ads
! 5723841baa66e0a4b15fd28d02e19444  gcc/ada/sem_disp.adb
! 6c493d4c086fa52bde30908ddc0e9176  gcc/ada/sem_disp.ads
! 959b218579b2e64397636ecaceacdaf1  gcc/ada/sem_dist.adb
! f788ea8d5f0f2470516a642b75557874  gcc/ada/sem_dist.ads
! 1478a24c52e192833239740883e40ab9  gcc/ada/sem_elab.adb
! 0e310eb17cfcf820d3325b99901f2baf  gcc/ada/sem_elab.ads
! 66478f248313a6353438068d57855a4e  gcc/ada/sem_elim.adb
! d7157c9afd35ef3281a9dfcd1bac623e  gcc/ada/sem_elim.ads
! 56edf458c9c7d087fe078048de357b87  gcc/ada/sem_eval.adb
! 09217bae6b0f9577ca683549d6c8de50  gcc/ada/sem_eval.ads
! ef90e4c30201738fa8d459b9ae5e85d4  gcc/ada/sem_intr.adb
! 680bab1e9d23c18e61abe924f3f38665  gcc/ada/sem_intr.ads
! 8148b127214186e75451265e6bbbb1e1  gcc/ada/sem_mech.adb
! b71f4da8ef5fe668191d3350a21789b0  gcc/ada/sem_mech.ads
! 9316b6ba4ec5d4d73539b1e7a0aa8f53  gcc/ada/sem_prag.adb
! a4b9861c7c02bcf35f1b7fe5e56c9c4e  gcc/ada/sem_prag.ads
! 35bb5bbb60367d54cbe70580c265d45a  gcc/ada/sem_res.adb
! 92e345ca327b9505c85a7924c19fc104  gcc/ada/sem_res.ads
! e5ab761e522c49025dfb606f056c8183  gcc/ada/sem_scil.adb
! 8bb437f214990c486a66a1fb3aa04ef0  gcc/ada/sem_scil.ads
! eec98dd7bf03522618e7b69e3cf21789  gcc/ada/sem_smem.adb
! 9f6d8d4450511a08bdce1cca16d90922  gcc/ada/sem_smem.ads
! 7ec636644a61ab4685e5c181f0d71f0d  gcc/ada/sem_type.adb
! f43911d13a9704b2643355d02f15c611  gcc/ada/sem_type.ads
! 5815aea772d5ef99af1120985c9df624  gcc/ada/sem_util.adb
! d27dcd283be546219473054b8d3d37b2  gcc/ada/sem_util.ads
! 216924ba1bc375462f6c4438816cea73  gcc/ada/sem_warn.adb
! b2a2e814a7d7c70b55e471dce65b8760  gcc/ada/sem_warn.ads
! b93776be04e6890ae57000449eec5e92  gcc/ada/set_targ.adb
! e2a143337d9c33ff098a1babd8526b68  gcc/ada/set_targ.ads
! 8283e6f44eb49e4271901ebce5df5fe8  gcc/ada/sfn_scan.adb
! 123e436605c415f79ef7c61b7b3c2291  gcc/ada/sfn_scan.ads
! 35b56829bed42f44eff152d301076bc0  gcc/ada/sigtramp-armdroid.c
! ce8bdbc1faf25978aaeeaf7fef14282e  gcc/ada/sigtramp-ios.c
! 959f65cbdf8bb00650bdd37c1b5b48af  gcc/ada/sigtramp-qnx.c
  6aea4f4f7077aa5e0b303c43da8d4d8c  gcc/ada/sigtramp-vxworks-target.inc
! 0e4813a6f67be0cfff30d1de22d291f6  gcc/ada/sigtramp-vxworks.c
! 581955a58be54ffd713d187d36bb77eb  gcc/ada/sigtramp.h
! 964d2d42ee863f446d936f5609b49576  gcc/ada/sinfo-cn.adb
! b3db2ea6c248b12d6a1aa909c2fb560f  gcc/ada/sinfo-cn.ads
! 04cd7c776876629d4dfcc2c0be7709dc  gcc/ada/sinfo.adb
! 2973d9e861b9a6619820bb37cd927ff0  gcc/ada/sinfo.ads
! ed64532bd55b81a2f3ee9c5e3f71950d  gcc/ada/sinput-c.adb
! 8dbd9525784306ba6737c3f646f36210  gcc/ada/sinput-c.ads
! a4e1a96e7fcc8fdf67a2666c9b25219c  gcc/ada/sinput-d.adb
! 8033689512233e3a191f58b15e4b2db6  gcc/ada/sinput-d.ads
! d808a8e77dcb2ceac3f7df82bdf615fb  gcc/ada/sinput-l.adb
! 1fa90022a9d7b33d43c44fc7a53d747c  gcc/ada/sinput-l.ads
! e4c10e29c06832fd1fd605fd428107ec  gcc/ada/sinput.adb
! 096d02e3c5956918835ed9752c2dbec6  gcc/ada/sinput.ads
! c2cb7998d90db14a7d03081370f0acf7  gcc/ada/snames.adb-tmpl
! ae7fa20ea0b853f6edd04234494e8fb6  gcc/ada/snames.ads-tmpl
  1d0f0a946dfb952f009ada43305106dd  gcc/ada/snames.h-tmpl
! 5ed6a363c24115485e6cea6d7b14e721  gcc/ada/socket.c
! ecba0441b0c08f91cbb4d9d57855d8a1  gcc/ada/spark_xrefs.adb
! a4d3247a60a43b8fb66e9f80fefec652  gcc/ada/spark_xrefs.ads
! c9a3fb3d37f7c8f03159f697300d5975  gcc/ada/sprint.adb
! 7f89761f9112f11fc32f3aabd10d4209  gcc/ada/sprint.ads
! f995abb75b38017c68bddb66ba689f75  gcc/ada/stand.adb
! b4535290e998256e998917bfedfe8762  gcc/ada/stand.ads
  92510faaca8c15e63e6f22f0b28dbe5f  gcc/ada/standard.ads.h
! db19233a0ba9a6d2567d0526c15e4ba7  gcc/ada/stringt.adb
! e66628557ba3f7ee5bea96b54018fae1  gcc/ada/stringt.ads
! a017e6973360b8754f9b99ba9203bed9  gcc/ada/stringt.h
! 9d0a10cda0308e97df7e8be39f047e91  gcc/ada/style.adb
! 46f8dfd8fa1884969af12c4e657a1125  gcc/ada/style.ads
! cd4b0571bc0559c8b01c6d71feb5359e  gcc/ada/styleg.adb
! 2ff7867acd81d0a4f306c08ac82ec825  gcc/ada/styleg.ads
! 4188eeda6e0ab8740fd14f7fdc9a42f0  gcc/ada/stylesw.adb
! 8ee2055fd6d5b8923b88ca0628da93fc  gcc/ada/stylesw.ads
! 7acf56086ed0016487bc7b993990ef9d  gcc/ada/switch-b.adb
! 10c2624ddbb44b95895434f1d5837370  gcc/ada/switch-b.ads
! 78a74b6a3041457159ffb2e1bcf585b1  gcc/ada/switch-c.adb
! 7ade1c576f0da32c3e87139642181216  gcc/ada/switch-c.ads
! 80c1f29f4480f24cdc7a5fd9f01b57d9  gcc/ada/switch-m.adb
! b083dee4926b502db7b5352e907016ee  gcc/ada/switch-m.ads
! a5507e2cb9fc96483410d5e85fec5f46  gcc/ada/switch.adb
! 1ec73212f02b1a4c45f67490c3bd7f54  gcc/ada/switch.ads
! a8622b1153f99f906216cb785f6cf530  gcc/ada/symbols.adb
! 7885552eab4c426ed16650a49dded033  gcc/ada/symbols.ads
! c17013bcd7ea95abfc4e17c481a31e13  gcc/ada/sysdep.c
! 213dc3186b3a5cbec6c7bcc285f88bb8  gcc/ada/table.adb
! b5fdef764c9ee0134c3c4a8949312b8f  gcc/ada/table.ads
! 123e79ca733a8bf03f09f197795e57b1  gcc/ada/targext.c
! 24ebbbc71b005eda1427f66038e6b6ff  gcc/ada/targparm.adb
! 06eba24546f58424ec35b2453c68bdb9  gcc/ada/targparm.ads
! cdf183c5334f14d076adc47a9d8ba503  gcc/ada/tb-gcc.c
! 00451a2b4e99c899c1f89602d775304a  gcc/ada/tbuild.adb
! 4e0e41ebc6e118d078072ebd9ef5299e  gcc/ada/tbuild.ads
! 2c95574ede4af5312d2c7a7f7e2f00ef  gcc/ada/tempdir.adb
! 85f5e4abcd75dc026adf17bcbc0e778a  gcc/ada/tempdir.ads
! 55eeae87e7d11bf6cacd5993a4bc406e  gcc/ada/terminals.c
! ab638d7890d59a129ab071eef8fbb3c7  gcc/ada/tracebak.c
! affc284db5ac9cbafd11b2d9de6fc107  gcc/ada/tree_gen.adb
! 2960cfd21cd508ef0059b3e8918bfffd  gcc/ada/tree_gen.ads
! c767501bb45de3606a130dfea0709594  gcc/ada/tree_in.adb
! ee24cc5650ff81e6205a57a950e20562  gcc/ada/tree_in.ads
! a5cd5fbff386c480e34c14c081668aee  gcc/ada/tree_io.adb
! 57c0c54eb3091ab00fd12c7c4bd77d82  gcc/ada/tree_io.ads
! dd6a8f4ee7a02d88edb39e75f5e0c817  gcc/ada/treepr.adb
! 256a315cbb6f828f19c3f4fa2bc01f1b  gcc/ada/treepr.ads
  b1a12d53199396f327ddecc980e710d1  gcc/ada/treeprs.adt
! b05a4bff0ee225d70b6baa6701c01bf2  gcc/ada/ttypes.ads
! 44b3c8087d3fd240264a1ad0dc77a0cf  gcc/ada/types.adb
! 4c87abee88a4561c9740aace35cf4d43  gcc/ada/types.ads
! 65692f8065fbbc6d3932d3745b31ca08  gcc/ada/types.h
! d3026904c303558eb723b0403c14f70a  gcc/ada/uintp.adb
! 0c5dd2eb3afae33fc43a2acfb7b1af66  gcc/ada/uintp.ads
! c8ae19867731bece434651b6b1afaebf  gcc/ada/uintp.h
! 0ab157a95877c623a4f4600d07b6af73  gcc/ada/uname.adb
! 89743788d5f4528350bd3a08a169b50e  gcc/ada/uname.ads
! 4c1ca05bc80ffd919eaebd44c01f5275  gcc/ada/urealp.adb
! 648285333a87e4b172c32477de5f995e  gcc/ada/urealp.ads
! d12b7d6a907a81fc78d9ae89ac90fbd9  gcc/ada/urealp.h
! c1004f90e87d20218ae89f44f7d300d2  gcc/ada/usage.adb
! 9ef90e9d51dada2ad1078cff235e9cb3  gcc/ada/usage.ads
! ba301bc1c75de50c289de448c66789d3  gcc/ada/validsw.adb
! 5de4741ac8e14fe7a03333e5056b7c97  gcc/ada/validsw.ads
  49ef8bc97a344f91b927f23054ade642  gcc/ada/vx_stack_info.c
  884e1a54368295893128977447d7e59c  gcc/ada/vxworks-arm-link.spec
  e158d4a4cda56237d4f66dfddc3b9915  gcc/ada/vxworks-e500-link.spec
--- 1325,2948 ----
  ed8c8d1cff975d8128d8a34e6fa60333  gcc/ada/libgnat/a-nscefu.ads
  ae6657265a333ec061d886c2e0a9be47  gcc/ada/libgnat/a-nscoty.ads
  c7bddd6abb488c8cd0d9982769254df5  gcc/ada/libgnat/a-nselfu.ads
! cc99ad8d43d44c965d5e6d3dfb18e986  gcc/ada/libgnat/a-nuauco.ads
! 140f1d6a7a3ede540e4cf3c741ff0150  gcc/ada/libgnat/a-nuauco__x86.ads
! a9b34fef6e03bca988c0ebabe8968540  gcc/ada/libgnat/a-nuaufl.ads
! 5924db0d2f5ae6ca9df8a89384823231  gcc/ada/libgnat/a-nuaufl__wraplf.ads
! 7714df1a41c354211d217f99429093ef  gcc/ada/libgnat/a-nubinu.ads
  22a793d6936415ee70b725c6d2b2020a  gcc/ada/libgnat/a-nucoar.ads
  bda677b507deb699333f9baa2c37a694  gcc/ada/libgnat/a-nucoty.ads
! e533ed477ad8685d492fb89e77082108  gcc/ada/libgnat/a-nudira.adb
! a035d3711e572aa51e51f29352b1d5b6  gcc/ada/libgnat/a-nudira.ads
  bd9eed0e40585ba218b0badca225b64c  gcc/ada/libgnat/a-nuelfu.ads
! 7d8e0139f36b7dab967302927557dc3d  gcc/ada/libgnat/a-nuflra.adb
! a9578d9ba7e4085b5ecb852fda146046  gcc/ada/libgnat/a-nuflra.ads
! d17a1a29b5ac23f90c8c9540cdffa904  gcc/ada/libgnat/a-numaux.ads
! c4d4bea6dcd8066d2ddcb0789ef64586  gcc/ada/libgnat/a-numeri.ads
  88b948f6713b009c76e8b3b7b75a22c9  gcc/ada/libgnat/a-nurear.ads
! 8a29f093fd694cf7d93cf4573886f1bf  gcc/ada/libgnat/a-rbtgbk.adb
! d23f49e551b0a84e5d9d04f92c303c43  gcc/ada/libgnat/a-rbtgbk.ads
! 1b4fd7972528605716ebb8e2ce850426  gcc/ada/libgnat/a-rbtgbo.adb
! 1f218110f4fd240964fdcf0debbbdeeb  gcc/ada/libgnat/a-rbtgbo.ads
! 6d53628a6992d08c3a927cbbf3d143bf  gcc/ada/libgnat/a-rbtgso.adb
! 7b35f5f0d0cb5f6728ead7c296e38649  gcc/ada/libgnat/a-rbtgso.ads
! bd517fcab8541d90ed29465793532e36  gcc/ada/libgnat/a-sbecin.adb
! 365183f37fa72e5f1b93b6bf2115de4e  gcc/ada/libgnat/a-sbecin.ads
! ce11ce2aab5afef651f11989ecc08a9f  gcc/ada/libgnat/a-sbhcin.adb
! 33794f9158ab65b6c21dcb96326a5da5  gcc/ada/libgnat/a-sbhcin.ads
! 7114c42014ec3143058d2acc2ca9bdb9  gcc/ada/libgnat/a-sblcin.adb
! 56080ba32efea0db61884a8990da9dfe  gcc/ada/libgnat/a-sblcin.ads
  67b280f23d76be962783b397ef7e60c7  gcc/ada/libgnat/a-scteio.ads
! 02bd343cd70236fe0354d1eef4ed62c0  gcc/ada/libgnat/a-secain.adb
! 3898030e946a2afd0d9df255643dfaf4  gcc/ada/libgnat/a-secain.ads
! 7d14e02122866e0530a6551193b8323d  gcc/ada/libgnat/a-sequio.adb
! 79e0b5302469759d5564c5bee10266f3  gcc/ada/libgnat/a-sequio.ads
! 4e16dded549e7342c1fd34255435a23c  gcc/ada/libgnat/a-sfecin.ads
! 03adbd963a2f93e215479cb1fa3b74c2  gcc/ada/libgnat/a-sfhcin.ads
! 4fdc7c933c6a3a05e210058f86738286  gcc/ada/libgnat/a-sflcin.ads
  43123af888cd4637ee6a1eaf9dde9e34  gcc/ada/libgnat/a-sfteio.ads
  63d0f0f0aed733a972873cb3a4b767ea  gcc/ada/libgnat/a-sfwtio.ads
  7207d517b5474be90def505e3a2be187  gcc/ada/libgnat/a-sfztio.ads
! d2539525b16040496c07912539ba3c62  gcc/ada/libgnat/a-shcain.adb
! 7ee9bfac69a9e5ccc98fd4b4943f6a06  gcc/ada/libgnat/a-shcain.ads
! b7f0f2bcef556b6665fbf77082783413  gcc/ada/libgnat/a-siocst.adb
! 8a55901edc5d36f522b755e92e9f318a  gcc/ada/libgnat/a-siocst.ads
  6fce3ea5eecdf93f2ec7d0446ebd14af  gcc/ada/libgnat/a-siteio.ads
  9330fbe80fe3844d3bf5aeb4946381f6  gcc/ada/libgnat/a-siwtio.ads
  c816a5bc136362b2468801e67deb9ae9  gcc/ada/libgnat/a-siztio.ads
! ae97bcb6b7cf363bc79750d6d13800ca  gcc/ada/libgnat/a-slcain.adb
! be23d887a2aeecfe9424d69c7a6e2057  gcc/ada/libgnat/a-slcain.ads
! 5ad270ee65f53ca6d11d07b3d3fec046  gcc/ada/libgnat/a-ssicst.adb
! 7d464e2b19e071ab5b3ab220d18d96d4  gcc/ada/libgnat/a-ssicst.ads
  3ec2f925719d14de3a80c38042157f78  gcc/ada/libgnat/a-ssitio.ads
  387afdf3ceb85d07a14d8ae4e2f0eeec  gcc/ada/libgnat/a-ssiwti.ads
  366683e8278e7e71bc63a8c7a3f2238f  gcc/ada/libgnat/a-ssizti.ads
! 24e95088cb64475c797c299d72f8a7eb  gcc/ada/libgnat/a-stboha.adb
  8274f77970c3b1ed9a51aa8ddf6a4d0f  gcc/ada/libgnat/a-stboha.ads
  756f44b0c7f4483ecd7302aee8bc110a  gcc/ada/libgnat/a-stfiha.ads
! a25bb60836b03a12db20c2c38d76371d  gcc/ada/libgnat/a-stmaco.ads
! 7794e1f4856a76d3a439520a9c55f678  gcc/ada/libgnat/a-stobbu.adb
! 1d3e99e361709c4c25dfbf0ecf64d12b  gcc/ada/libgnat/a-stobbu.ads
! 45fe2164eb6c7cf92d046e2456f6371a  gcc/ada/libgnat/a-stobfi.adb
! ee2218be3a04edb02581ec135257f67b  gcc/ada/libgnat/a-stobfi.ads
! fd849dd36fe4713fa819e7bf429e0b90  gcc/ada/libgnat/a-storio.adb
  34175bb2f712422ab4cfd24b3e452b0d  gcc/ada/libgnat/a-storio.ads
! 362bf484f5c36d24f82673a385564786  gcc/ada/libgnat/a-stoubu.adb
! b2f538217b8940820835eec730d8daab  gcc/ada/libgnat/a-stoubu.ads
! e7ab2165f08e0f127096d7a3999b2be7  gcc/ada/libgnat/a-stoufi.adb
! 130961e2e34ba6147edc699df21e302d  gcc/ada/libgnat/a-stoufi.ads
! 991ffdfc8192e8ed973966b30e6d0afe  gcc/ada/libgnat/a-stoufo.adb
! d5d9ca91439b10ee6d21b3a71d4dc9a0  gcc/ada/libgnat/a-stoufo.ads
! 399835be83b4a797c486d70ab5afdab9  gcc/ada/libgnat/a-stouut.adb
! f3378a7464fbbb58a1bf85987f86728a  gcc/ada/libgnat/a-stouut.ads
! c2880386d09aa0c4c4b940e9cc37e9d0  gcc/ada/libgnat/a-strbou.adb
! d25d318460ae2fafc6d243fea5a9f460  gcc/ada/libgnat/a-strbou.ads
! 5d0414a7df461978ee72753b27c93597  gcc/ada/libgnat/a-stream.adb
! 7efaa782c867acaf12b456485e2adc95  gcc/ada/libgnat/a-stream.ads
! 89d5d2d474c1393d73859a46c8ca8268  gcc/ada/libgnat/a-strfix.adb
! a0df2abd85b2d36021427e7961a3ec2c  gcc/ada/libgnat/a-strfix.ads
! ae008cc1e3670374e5686ee8b20a4230  gcc/ada/libgnat/a-strhas.adb
  930f541d2f838554d072231b1bcb510a  gcc/ada/libgnat/a-strhas.ads
  de0f93afe5feaf6819d5a9a2e09172e6  gcc/ada/libgnat/a-string.ads
! cbc68cb5081b8ddac3851b582a44ed45  gcc/ada/libgnat/a-strmap.adb
! 2dfaa24f675818379649f23d51bebc8d  gcc/ada/libgnat/a-strmap.ads
! ac1c3b25916f49573c56384752aca4bb  gcc/ada/libgnat/a-strsea.adb
! af180744e6971ade2b173d8916d2c437  gcc/ada/libgnat/a-strsea.ads
! 548c1a56c0e62ffef72b8873b0737f29  gcc/ada/libgnat/a-strsto.ads
! c766aa29d0339aabba00eef8c7dbeb46  gcc/ada/libgnat/a-strsup.adb
! 86cdfd3b9bf30a1c9a53a91e1e05d762  gcc/ada/libgnat/a-strsup.ads
! fcf78c3685bc71825762cdf344f5f5ec  gcc/ada/libgnat/a-strunb.adb
! ffbd21626ff1ce4caee4418dc2f90b3b  gcc/ada/libgnat/a-strunb.ads
! 9b4a512cdf8019c81320414ea7b11921  gcc/ada/libgnat/a-strunb__shared.adb
! 41077edacc554da630fad2231a8aa9b1  gcc/ada/libgnat/a-strunb__shared.ads
! ab135f084e71149485a03af43d526d94  gcc/ada/libgnat/a-ststbo.adb
! 711a41dfe11a36b9638847e7faaa9199  gcc/ada/libgnat/a-ststbo.ads
! 393974ba09999b9507b88d8db649cd22  gcc/ada/libgnat/a-ststio.adb
! c883d4828ff1906ed0cf3c8121a90d8e  gcc/ada/libgnat/a-ststio.ads
! 7a91203dcfd076856ad9a7fb72f9e013  gcc/ada/libgnat/a-ststun.adb
! 992157f40c7b3262d43c200d47d46e20  gcc/ada/libgnat/a-ststun.ads
! 56f72ef9a6a4b2d59c484e3b162014c9  gcc/ada/libgnat/a-stteou.ads
! 71bcf68b76b19419a438e9329963537e  gcc/ada/libgnat/a-stunau.adb
! 2dae78e3ab98e6b847473fadbc05df3e  gcc/ada/libgnat/a-stunau.ads
! f652b551908134eea3cd285c44d40f36  gcc/ada/libgnat/a-stunau__shared.adb
! 23240ade0f30a4b715b035e4d5fe16a3  gcc/ada/libgnat/a-stunha.adb
  da4a8d13f76850d714a8213ada7477d2  gcc/ada/libgnat/a-stunha.ads
! 2a6309c66e825c43c9fa14a6ad6444a6  gcc/ada/libgnat/a-stuten.adb
  91801320eab187501cb48bd0c74a06b0  gcc/ada/libgnat/a-stuten.ads
! 1d34d39cfcd6c2fd99141a4beb635f99  gcc/ada/libgnat/a-stwibo.adb
! 5e49f7add46327ae772cad1ca9274e4f  gcc/ada/libgnat/a-stwibo.ads
! 4779d8d741141bd2f0fe3b11002cc396  gcc/ada/libgnat/a-stwifi.adb
  b0cf3f05e49e1640bf231034269cb951  gcc/ada/libgnat/a-stwifi.ads
! c6110db3bf0eefc326cccfbd4225e20d  gcc/ada/libgnat/a-stwiha.adb
  3255ad19d07346032c9d005d6a27475f  gcc/ada/libgnat/a-stwiha.ads
! 2b2fcada1fe042ff8dbacdca5195095b  gcc/ada/libgnat/a-stwima.adb
! 919da092fbe829438db11136446845f6  gcc/ada/libgnat/a-stwima.ads
! 80762a7f1e61bc51a4cfb6d13414b444  gcc/ada/libgnat/a-stwise.adb
! c1a079cdffa2c127ee7152c7e5312b8d  gcc/ada/libgnat/a-stwise.ads
! b9c820e956816bbd4df8435019f228d4  gcc/ada/libgnat/a-stwisu.adb
! 622e1e6397c15371d4a3628046a1e974  gcc/ada/libgnat/a-stwisu.ads
! 0a44f179a3325c661f0858bacf5a3dbb  gcc/ada/libgnat/a-stwiun.adb
! e49bf5e6c76736a497fba6b1b3bbe5ef  gcc/ada/libgnat/a-stwiun.ads
! 482aa9cc3aecb42a9cf151978c50b0a5  gcc/ada/libgnat/a-stwiun__shared.adb
! 9cc266dec61ca32681baf77c81804337  gcc/ada/libgnat/a-stwiun__shared.ads
! 60c0e0037de1aa35687b38a19bd28bcc  gcc/ada/libgnat/a-stzbou.adb
! a4d545572bfec89ca9d1c7ef485b12d4  gcc/ada/libgnat/a-stzbou.ads
! 2257a6fede9dfafe4d1b46205bf3584e  gcc/ada/libgnat/a-stzfix.adb
  f3ddc25c20b07c4072918c6c0ea20ff9  gcc/ada/libgnat/a-stzfix.ads
! 29456d30ca067c4aecb9a48bbd4e32cd  gcc/ada/libgnat/a-stzhas.adb
! 41c71febbb354000bccca4ccd3a59c54  gcc/ada/libgnat/a-stzhas.ads
! 70b16ce3eeaff4986e286e5a84fea10e  gcc/ada/libgnat/a-stzmap.adb
! 4e64acdf29965dba3beb5d51e32089ae  gcc/ada/libgnat/a-stzmap.ads
! 147b96c280c7f4cd8bc5dd4c01618425  gcc/ada/libgnat/a-stzsea.adb
! ea978959e79f54608ac221e15b725367  gcc/ada/libgnat/a-stzsea.ads
! 4cc0ed2a4824444e353f3546396d0031  gcc/ada/libgnat/a-stzsup.adb
! 81e0ae8f829dcc96d120ced14de4bb1f  gcc/ada/libgnat/a-stzsup.ads
! c2d8b2a9ee32f773bc3f37eac9528ee9  gcc/ada/libgnat/a-stzunb.adb
! a71ee972db1ccf7a3c15e9ab18c5965f  gcc/ada/libgnat/a-stzunb.ads
! b78d8f3eede5ef99387247c42e085ea0  gcc/ada/libgnat/a-stzunb__shared.adb
! 9a741780917c398be10c5d3dbf3aead4  gcc/ada/libgnat/a-stzunb__shared.ads
! b523ee4efa646060867b5fd169ccffa6  gcc/ada/libgnat/a-suecin.adb
! bbe1435b6d5dde07d1a704975ef7b51d  gcc/ada/libgnat/a-suecin.ads
! 2536c3401fe78b04c631e669eb811d4b  gcc/ada/libgnat/a-suenco.adb
  24c625ef90e191bc1baa69c58ae2600f  gcc/ada/libgnat/a-suenco.ads
! 2ce50b5aca8a94c3b37082cec9e5322e  gcc/ada/libgnat/a-suenst.adb
  5a81ae9196b241db71c16198169dbed7  gcc/ada/libgnat/a-suenst.ads
! 3b7412a3d1d4dba2467db925fec7a94b  gcc/ada/libgnat/a-suewst.adb
  88073629f5531c7f6fba98820112cd02  gcc/ada/libgnat/a-suewst.ads
! f6273f68208d079bfb023e0d90cc279b  gcc/ada/libgnat/a-suezst.adb
  5aaf32a65e951f050f1cbb5adf5af9d2  gcc/ada/libgnat/a-suezst.ads
! 5a582dd6894f07470634ef2bd57dcd05  gcc/ada/libgnat/a-suhcin.adb
! 624d17e4e7c450b5a69785a9d9e7ae29  gcc/ada/libgnat/a-suhcin.ads
! 4580e794d38ce20e730de4961a681cf9  gcc/ada/libgnat/a-sulcin.adb
! ccf352f17ef85a5e3afdaeea00b5e95d  gcc/ada/libgnat/a-sulcin.ads
! 0e104266a4ed788fb22813395c47399e  gcc/ada/libgnat/a-suteio.adb
! 614c1b52a77aa4cedcf9d77ab61b97c2  gcc/ada/libgnat/a-suteio.ads
! dc42af9f80fe0912f764745fa25ca5cd  gcc/ada/libgnat/a-suteio__shared.adb
! 7a874db50a915dd2fed91020bb9cfcd7  gcc/ada/libgnat/a-swbwha.adb
  65f3f68c6718760b4c2b0beba2af9f82  gcc/ada/libgnat/a-swbwha.ads
  aaf273ef9a113dedcab8fb87b71b7365  gcc/ada/libgnat/a-swfwha.ads
! 7458fe84ee95b39dcb0f1a25eab525b6  gcc/ada/libgnat/a-swmwco.ads
! 6e95abdf02698150ef2b6a58f6623bca  gcc/ada/libgnat/a-swunau.adb
! adc23080f593d9f2398768f1c410e321  gcc/ada/libgnat/a-swunau.ads
! a9aa1e3d0d778c1345b497e4ee8cee56  gcc/ada/libgnat/a-swunau__shared.adb
! 8bda3ffc4eeb6a180635543a32a32f2d  gcc/ada/libgnat/a-swuwha.adb
  45d76b5b911889e181b3717ab6c91651  gcc/ada/libgnat/a-swuwha.ads
! c72305c6588745575f28be5703da5139  gcc/ada/libgnat/a-swuwti.adb
! bde3df4c98bcc94bc4003da104f03fec  gcc/ada/libgnat/a-swuwti.ads
! 0432a434a46ab90482ad2bfe99d41269  gcc/ada/libgnat/a-swuwti__shared.adb
! a7e7cae7fea4d883718e51dd85b714fe  gcc/ada/libgnat/a-szbzha.adb
  18b9cf476495930cec4ac3eb881257db  gcc/ada/libgnat/a-szbzha.ads
  32bb3b01e46ff7648c862537bd77aa0d  gcc/ada/libgnat/a-szfzha.ads
! 5a1ef5a08b4b5dde4dd1dcb480693724  gcc/ada/libgnat/a-szmzco.ads
! 474568fe8f57d275deeee90b56130ee8  gcc/ada/libgnat/a-szunau.adb
! cf92cdc6afd2fb152acbbaf852e58d31  gcc/ada/libgnat/a-szunau.ads
! 6246882989955dc3ab13aca75f4ab308  gcc/ada/libgnat/a-szunau__shared.adb
! 2c7475f78c376ace5c28ebd90226124c  gcc/ada/libgnat/a-szuzha.adb
  01cf107c9e66d7e5284c9b7ce2e2ed7e  gcc/ada/libgnat/a-szuzha.ads
! daeb742a06bf6c906fec3788594326c7  gcc/ada/libgnat/a-szuzti.adb
! 658c9774c750b6c574e5fc7befab78f2  gcc/ada/libgnat/a-szuzti.ads
! 9ab976052433dc1d378ca5903568798e  gcc/ada/libgnat/a-szuzti__shared.adb
! 86d91e9532edc488263c155e732f4256  gcc/ada/libgnat/a-tags.adb
! dbbe43050b49b0b88aceaec453fa4a57  gcc/ada/libgnat/a-tags.ads
! 426401490a86d7f2f289f04567ed1b33  gcc/ada/libgnat/a-teioed.adb
! 2ba66cca9fc1f051aae59655c1011b12  gcc/ada/libgnat/a-teioed.ads
! e517c014baa8cabc742c4718df1e0a7f  gcc/ada/libgnat/a-textio.adb
! c502629d29922ae98eec355f25ab47cb  gcc/ada/libgnat/a-textio.ads
  c74a673b222c3d0037a22fb766c67488  gcc/ada/libgnat/a-tgdico.ads
! 7a848ae44dad18ebbefb09f4c5563c65  gcc/ada/libgnat/a-tiboio.adb
  7b163db9f1467e9392f347bee1400136  gcc/ada/libgnat/a-tiboio.ads
! 67f965ef62d0665ee836755a03bc3af1  gcc/ada/libgnat/a-ticoau.adb
! 45d8572b37f01d5a4dc233d1fe2c7fe1  gcc/ada/libgnat/a-ticoau.ads
! 29356df5db0c15180bf0d2e1e8d9579b  gcc/ada/libgnat/a-ticoio.adb
! 17bd5485629796795caaaf42332e852c  gcc/ada/libgnat/a-ticoio.ads
! 7d0a352b558bb8630654c70069fe68e8  gcc/ada/libgnat/a-tideau.adb
! 73a3c4f61422740b1ce246c5afe6c413  gcc/ada/libgnat/a-tideau.ads
! d05dd19fea13009b66900ce4bb13066e  gcc/ada/libgnat/a-tideio.adb
! a424f1224421a8da8d386ae16cee5563  gcc/ada/libgnat/a-tideio.ads
! 2f6fd9c0027bedd247fa50705710d207  gcc/ada/libgnat/a-tideio__128.adb
! d59576972a4dd4b17e4b00057e38f784  gcc/ada/libgnat/a-tienau.adb
! e7af09a1eed0d3d7bf02b317ef9a25aa  gcc/ada/libgnat/a-tienau.ads
! d37dc4b66d3e3d9c4c08b308ba3539b7  gcc/ada/libgnat/a-tienio.adb
  d3f704d27dd8f64a1e52fcde5fd565d8  gcc/ada/libgnat/a-tienio.ads
! 11ab4efca04333102cb63ecf2360b189  gcc/ada/libgnat/a-tifiau.adb
! 24a9f843cd0a6f3e92b9e0a0b8172231  gcc/ada/libgnat/a-tifiau.ads
! a8b3ddd6611f5668d37c5e2ca04a85a2  gcc/ada/libgnat/a-tifiio.adb
! cb652b43513ee9f3e9818139e2f690db  gcc/ada/libgnat/a-tifiio.ads
! 5a21a371ccc3cec6b4c336f32c94e38f  gcc/ada/libgnat/a-tifiio__128.adb
! 7a563fd23622e89301937c451be820cf  gcc/ada/libgnat/a-tiflau.adb
! 31e55381891276237fc3353d729da1d1  gcc/ada/libgnat/a-tiflau.ads
! f600f87c5aff3d7a51b3f5c1b55d337f  gcc/ada/libgnat/a-tiflio.adb
! db828631bb8a8377d63d76aae1fd5dbf  gcc/ada/libgnat/a-tiflio.ads
! 3b78a63f59b63950eb21175611ca5c39  gcc/ada/libgnat/a-tigeau.adb
! ef178f9b2983f62908829fa22d06af27  gcc/ada/libgnat/a-tigeau.ads
! 099d70e9439831673090ef09d1011b86  gcc/ada/libgnat/a-tigeli.adb
! d1da66d510b30650b666e5201646fce3  gcc/ada/libgnat/a-tiinau.adb
! 4f251b42fd4f49c79cf867f034eb58a6  gcc/ada/libgnat/a-tiinau.ads
! d75e8d500c607ac83716ce19ec3a7a28  gcc/ada/libgnat/a-tiinio.adb
! 51cf4a9f3252af8991416721b96bd1eb  gcc/ada/libgnat/a-tiinio.ads
! 647f98937cb8c78c8465150af0c2a2b4  gcc/ada/libgnat/a-tiinio__128.adb
! 6820763c3abdb6a7521964e06c38bb31  gcc/ada/libgnat/a-timoio.adb
! 62243c88b1e322d76719ace237b12f65  gcc/ada/libgnat/a-timoio.ads
! 9f1ccde076a62c0cb43a0f1a7e5af2f6  gcc/ada/libgnat/a-timoio__128.adb
! cf4a9124840d9128a2b410336738be38  gcc/ada/libgnat/a-tiocst.adb
! 8f29dadcf26900c454dc19a850caefd2  gcc/ada/libgnat/a-tiocst.ads
! 1ec09e45dccb73c7e9b45c763842cdfc  gcc/ada/libgnat/a-tirsfi.adb
! 940b7104155c6c9ebfed3287f6a1b290  gcc/ada/libgnat/a-tirsfi.ads
! 50f3f0ad9c3c9c39bf018ec95898e069  gcc/ada/libgnat/a-titest.adb
  7b71ac41d87e6c43f98663d1d110846c  gcc/ada/libgnat/a-titest.ads
  1a5a51a7ff392f1819e96c8c7b6ba50b  gcc/ada/libgnat/a-tiunio.ads
  ebdefb0717ee54e84334b4468aea7da2  gcc/ada/libgnat/a-unccon.ads
  f5bc02683fdb56d97621e0a91a7452b9  gcc/ada/libgnat/a-uncdea.ads
! 06ec29b6a8e4d593c168a0d89f8fae8a  gcc/ada/libgnat/a-undesu.adb
  82a804005be52b8d315b11082ce952d4  gcc/ada/libgnat/a-undesu.ads
! 4ba6c73ff9135bd90aa097fb696e4419  gcc/ada/libgnat/a-wichha.adb
! bc85d10bd14a8eda24559935a5472a57  gcc/ada/libgnat/a-wichha.ads
! 275d3326bd6e12536c98a9501a5c0a87  gcc/ada/libgnat/a-wichun.adb
! adb4173fc3ed96bd492833c0994aea58  gcc/ada/libgnat/a-wichun.ads
  495dc144d91ae1388ae48ceb32e47f91  gcc/ada/libgnat/a-widcha.ads
! d12c64a7c07d4ad322cc2676de63dca5  gcc/ada/libgnat/a-witeio.adb
! 379382a6f34225f01437e60a370dcfa6  gcc/ada/libgnat/a-witeio.ads
! 99309f986366977d0e00f08c0d5e287d  gcc/ada/libgnat/a-wrstfi.adb
! db36c095f4ebc78aa4c84eae34eff5fd  gcc/ada/libgnat/a-wrstfi.ads
! f9ce2e067be48f43cff153a1e910f1a4  gcc/ada/libgnat/a-wtcoau.adb
! 74dcffe9c544e8308cf327290b382cc5  gcc/ada/libgnat/a-wtcoau.ads
! e0b771471e637fad94159347acd8194a  gcc/ada/libgnat/a-wtcoio.adb
! d76fe24c6988d732303e4f40830c2082  gcc/ada/libgnat/a-wtcoio.ads
! fe019029896f3ae047694ec07f88a035  gcc/ada/libgnat/a-wtcstr.adb
! 861cf8907f0558dc29f4760412be9bea  gcc/ada/libgnat/a-wtcstr.ads
! 80c1e61440ef3a4d4faac6133de0c772  gcc/ada/libgnat/a-wtdeau.adb
! 77e0b377916f3f86311da49b196eb172  gcc/ada/libgnat/a-wtdeau.ads
! e77f45a0070ec2dea24b394e63d31cd2  gcc/ada/libgnat/a-wtdeio.adb
  20d4a8b1dbec170436bce906004aaac8  gcc/ada/libgnat/a-wtdeio.ads
! 8d5bb6632d10f1f1c86e1dff45d02c2e  gcc/ada/libgnat/a-wtdeio__128.adb
! 64b32ec534c973f2d3c2fa5f5f7f68a7  gcc/ada/libgnat/a-wtedit.adb
! 1e2cab838acb970708d33f548736b858  gcc/ada/libgnat/a-wtedit.ads
! 0fb9e5e030ff8edb1d01ab462506c695  gcc/ada/libgnat/a-wtenau.adb
! b904be06cda617fd74017ea57fe405bc  gcc/ada/libgnat/a-wtenau.ads
! 773f313cb9ac2db1fc492ac710fcf5b3  gcc/ada/libgnat/a-wtenio.adb
  fa13b730a5c90ff293982415bf7bcecb  gcc/ada/libgnat/a-wtenio.ads
! 9184800a3306d75f277cde1eb74773a1  gcc/ada/libgnat/a-wtfiau.adb
! 30133cc1423d4391daa409fabbf38eb9  gcc/ada/libgnat/a-wtfiau.ads
! 770861491bf5963ea904a8474bb5ccdb  gcc/ada/libgnat/a-wtfiio.adb
  495444487be476924785b4b8eff6b910  gcc/ada/libgnat/a-wtfiio.ads
! c9bc87cae0bd38f0b4d80c163e9407c6  gcc/ada/libgnat/a-wtfiio__128.adb
! c0547b9a6ea693150b72b39e15974d4a  gcc/ada/libgnat/a-wtflau.adb
! 0d4fc350eb24c0317148ab987f160541  gcc/ada/libgnat/a-wtflau.ads
! af807f6ec0e7fdc9835733c5ff59c758  gcc/ada/libgnat/a-wtflio.adb
  bb57e8648d7de30496bb43f8a849fc3f  gcc/ada/libgnat/a-wtflio.ads
! a21d880234449cb10c9863c8fe095366  gcc/ada/libgnat/a-wtgeau.adb
! 509acc9dae2169795a342748c2c28289  gcc/ada/libgnat/a-wtgeau.ads
! 7289e5c14d0df061ab0c97dfa9854d97  gcc/ada/libgnat/a-wtinau.adb
! 9fe7634a0cca183a2aaccb22d023d7d2  gcc/ada/libgnat/a-wtinau.ads
! da60eb50808aca8a5786759aa1078de2  gcc/ada/libgnat/a-wtinio.adb
  62a64f1715aaaa145cf2b6d360381363  gcc/ada/libgnat/a-wtinio.ads
! 04c571990b83ec2ac57e395986a0e2bd  gcc/ada/libgnat/a-wtinio__128.adb
! e3d90f1d44b4582cce5783843c961098  gcc/ada/libgnat/a-wtmoio.adb
! 3af14d15898cba0664ece7130ee9ea12  gcc/ada/libgnat/a-wtmoio.ads
! 0b1904f7db0c74b51dbcd40edfa5c2b7  gcc/ada/libgnat/a-wtmoio__128.adb
! e0acdfaa5b1451ab4dcb8c38dfbe8230  gcc/ada/libgnat/a-wttest.adb
  53d3d301f9afb69992013f55fe363511  gcc/ada/libgnat/a-wttest.ads
! 3a30cf8c77cc2d72aaed70946ef379ff  gcc/ada/libgnat/a-wwboio.adb
  899e14502ec4dedbf4fdb28f8cecfa35  gcc/ada/libgnat/a-wwboio.ads
  1c2480c111fa5b71fca7c67f21525f8f  gcc/ada/libgnat/a-wwunio.ads
  107d2989204d28e32923acc02d444f67  gcc/ada/libgnat/a-zchara.ads
! 26ec384361fa688d4fc64be5b61017e9  gcc/ada/libgnat/a-zchhan.adb
! b4dfcd2a952fce78d22b325897b1391a  gcc/ada/libgnat/a-zchhan.ads
! 9bb827bf4d71a747d155c7d554aab905  gcc/ada/libgnat/a-zchuni.adb
! 8b0bb30553504f95ec5a1735180bc090  gcc/ada/libgnat/a-zchuni.ads
! 4b30c40ce6da89a309a1da523c7445ef  gcc/ada/libgnat/a-zrstfi.adb
! 0fd173c3dd2b15ed9f4313e9f09464fb  gcc/ada/libgnat/a-zrstfi.ads
! b220eef1430a7bac07c1d87e3bc5657f  gcc/ada/libgnat/a-ztcoau.adb
! 4f158ff20732f0f7ddb1a83263fee277  gcc/ada/libgnat/a-ztcoau.ads
! 5bac98ca0d46a3590c4a6a9698639e65  gcc/ada/libgnat/a-ztcoio.adb
! 7440d81a0d7886b3f76b271c7fcbf8b3  gcc/ada/libgnat/a-ztcoio.ads
! 7c9a33d0e9ab1b0f4460e70ad8d62d63  gcc/ada/libgnat/a-ztcstr.adb
! 4f808a45b43793790b07c5613f448b94  gcc/ada/libgnat/a-ztcstr.ads
! a43836522c9de51280b8ef28a273f496  gcc/ada/libgnat/a-ztdeau.adb
! e6406b072ed0c068c606ee6d62f25879  gcc/ada/libgnat/a-ztdeau.ads
! 64d7b4a6f3a4e7a5e105d1f2150b4a7e  gcc/ada/libgnat/a-ztdeio.adb
  a1457649e626ebf32915696e5afd2ac0  gcc/ada/libgnat/a-ztdeio.ads
! 57586358e10896d7ef728c26ff7e631e  gcc/ada/libgnat/a-ztdeio__128.adb
! 415e9be697a32fcdf914b41abda83f9f  gcc/ada/libgnat/a-ztedit.adb
! 9c6a4bf70117fc0a04446e5a341ef87d  gcc/ada/libgnat/a-ztedit.ads
! d4f0dcb4b4768bcd95dd49c8d4a54fbf  gcc/ada/libgnat/a-ztenau.adb
! 357c8a6d6f74409239f5269978e1c9db  gcc/ada/libgnat/a-ztenau.ads
! 3326861b0b6260406a5404fc0ec1f158  gcc/ada/libgnat/a-ztenio.adb
  33aa889d92f43b14a348a444135fc992  gcc/ada/libgnat/a-ztenio.ads
! 83774e52bbf642748d81ce1ccfbe32a0  gcc/ada/libgnat/a-ztexio.adb
! 55c6b3ba6a60a629cc4331dfd32113e4  gcc/ada/libgnat/a-ztexio.ads
! 4731bfedddc037e189b23366b47c0a3c  gcc/ada/libgnat/a-ztfiau.adb
! ad811ce7ec10d304309ece1212397ca1  gcc/ada/libgnat/a-ztfiau.ads
! 0c9c0d701e222b2d55a9666a611fc57c  gcc/ada/libgnat/a-ztfiio.adb
  9e2efe8c1c2d6658a575fbecb5ab1418  gcc/ada/libgnat/a-ztfiio.ads
! 5e9e02c20772e61edb13cde9bf290da7  gcc/ada/libgnat/a-ztfiio__128.adb
! efb04986a685b99fe0a5048d55e41ee4  gcc/ada/libgnat/a-ztflau.adb
! 7c247a8d0bfef5caeacba51c70410974  gcc/ada/libgnat/a-ztflau.ads
! bbb14a78f1e6f35545cd2587bde3d7e3  gcc/ada/libgnat/a-ztflio.adb
  7aae0945e67f16f4f77aa54a65552f3e  gcc/ada/libgnat/a-ztflio.ads
! 30491d3e355071d08a2d70503bba2ae4  gcc/ada/libgnat/a-ztgeau.adb
! 7d4418c187a0303650f27f7bb5a888eb  gcc/ada/libgnat/a-ztgeau.ads
! 0402f7220ac077ad06ab249b0ece580c  gcc/ada/libgnat/a-ztinau.adb
! 3996f1e5cc0619ad5c1c29598cfa75d5  gcc/ada/libgnat/a-ztinau.ads
! 724d14f5bd42a7b92b82968a38c436d3  gcc/ada/libgnat/a-ztinio.adb
  f0456d31ec0aa6f6786e1b635f8023cb  gcc/ada/libgnat/a-ztinio.ads
! d7e34374127a5b5f04e38b6b70005ec3  gcc/ada/libgnat/a-ztinio__128.adb
! 16f9f601cbecfe34bd05b0345ac0a604  gcc/ada/libgnat/a-ztmoio.adb
  9831d312ef279fc55e5e051745be05d2  gcc/ada/libgnat/a-ztmoio.ads
! e0da254648e9fb13aa5bccae554310a8  gcc/ada/libgnat/a-ztmoio__128.adb
! 14bda678ce5907c369a5598ad950867f  gcc/ada/libgnat/a-zttest.adb
  2caf047380f684add2bd5a35dc4e1091  gcc/ada/libgnat/a-zttest.ads
! b7c2bb95be036352d4474fbbbf49002a  gcc/ada/libgnat/a-zzboio.adb
  a80428bcd2bf9ab7214609e68ff1651c  gcc/ada/libgnat/a-zzboio.ads
  a6d7b54a7a1a401188cfe54d1c2bad3b  gcc/ada/libgnat/a-zzunio.ads
  aad41855092e5648dbc6e7ab9d94cda3  gcc/ada/libgnat/ada.ads
  71c71bcd90c113e366bf720c3d886660  gcc/ada/libgnat/calendar.ads
  e150ba4c7f01d70e0086543a96ffd40b  gcc/ada/libgnat/directio.ads
! 53080e367ccb4754a50fc562afa66973  gcc/ada/libgnat/g-allein.ads
! b61c77167d70e6b25409a2cf97b86e1d  gcc/ada/libgnat/g-alleve.adb
! 4443b619254c4b91132303bb58eb1426  gcc/ada/libgnat/g-alleve.ads
! 168c1b1d898ea2519f1fdf490423a835  gcc/ada/libgnat/g-alleve__hard.adb
! d2ce81973c03a4103fdf3d1d73d15f1e  gcc/ada/libgnat/g-alleve__hard.ads
! 124ac18cae256093385106fd8a229012  gcc/ada/libgnat/g-altcon.adb
! 78b18b3effc75834741bf4bedc7cb2b5  gcc/ada/libgnat/g-altcon.ads
! 6d1b4600a9498ce73410154b22bf1422  gcc/ada/libgnat/g-altive.ads
! 592ecf18b29faf403ce2d1277dbfcccf  gcc/ada/libgnat/g-alveop.adb
! 1aeaa8c6db7c803126e3f664cb1d6caf  gcc/ada/libgnat/g-alveop.ads
! 6d373aed91f08ef40c01628c4c4a49a3  gcc/ada/libgnat/g-alvety.ads
! 455d832532a0d5c8f4c70bb9d911a0ce  gcc/ada/libgnat/g-alvevi.ads
! 2892bc230f4bc13b9ad5b475b57049bb  gcc/ada/libgnat/g-arrspl.adb
! af2e597e4f0095b1ae54f76d13dd2479  gcc/ada/libgnat/g-arrspl.ads
! 511720f4c2c47355305ca98e0782e1a3  gcc/ada/libgnat/g-awk.adb
! ac4a93c1321ed86ee0fc9c44b7c18c0c  gcc/ada/libgnat/g-awk.ads
! 5a4bca21e472ddcb4b2edfa85b8afbb3  gcc/ada/libgnat/g-binenv.adb
! a85835519f67351f9ece1f5b40cc53fa  gcc/ada/libgnat/g-binenv.ads
! 72748e89d2bc05aa4befb977eb4f834b  gcc/ada/libgnat/g-brapre.ads
! 90fcc4274782bdf49297e47fbda85353  gcc/ada/libgnat/g-bubsor.adb
! 1a6de69e91fd3438f141af1f50a71bd0  gcc/ada/libgnat/g-bubsor.ads
! d40741a84136fa66bb3ccbd44b805be9  gcc/ada/libgnat/g-busora.adb
! 9de91965e6a05e46ef2ec7fbdadfbef1  gcc/ada/libgnat/g-busora.ads
! cca7b673ff2a3bb70fe47f71c9878559  gcc/ada/libgnat/g-busorg.adb
! cf6333d63cbd41330220f05a1075fc0a  gcc/ada/libgnat/g-busorg.ads
! 80c3f8a27c4b709943b83ffc4ab799f5  gcc/ada/libgnat/g-byorma.adb
! 2d6d8a3b89a4ea2d8b1b5394d104c6de  gcc/ada/libgnat/g-byorma.ads
! 3bb10277ca1e6e1d58f626aefb6d7a92  gcc/ada/libgnat/g-bytswa.adb
! bb3a0d07de4ecde8430afdf14aace693  gcc/ada/libgnat/g-bytswa.ads
! 5ef8046b6787f71bf17ca4b1188be6ea  gcc/ada/libgnat/g-calend.adb
! 5f0e84e1451d6880884b11398fdabfd6  gcc/ada/libgnat/g-calend.ads
! 1449e1ca47f123a8bd97f8a442e12835  gcc/ada/libgnat/g-casuti.adb
! 51f4660e97cd1b83bcfd6577430abd40  gcc/ada/libgnat/g-casuti.ads
! 7b35b08c59d6ae3d97161f4f217cdbbd  gcc/ada/libgnat/g-catiio.adb
! 3b699a2d615bf7cc95694e74ef2f6249  gcc/ada/libgnat/g-catiio.ads
! 5d431070f0402b5707822ea5cfa32265  gcc/ada/libgnat/g-cgi.adb
! d225a9276adab2dc9c10d60dde92df2b  gcc/ada/libgnat/g-cgi.ads
! e5270b41d55fc951d1e3709ad128171d  gcc/ada/libgnat/g-cgicoo.adb
! af766b22b599aa9005696116351c8879  gcc/ada/libgnat/g-cgicoo.ads
! cb5287fc8c86a7391b19a58c97c90983  gcc/ada/libgnat/g-cgideb.adb
! 7fb087ef116e1637d709221af5eca4db  gcc/ada/libgnat/g-cgideb.ads
! c71d608cf957605f0b8b79a3753772c5  gcc/ada/libgnat/g-comlin.adb
! 553128783edb67ba4087e02fffccda4b  gcc/ada/libgnat/g-comlin.ads
! b2ff6010ac8553b314d72b7faa487475  gcc/ada/libgnat/g-comver.adb
! 1fc1c362207c66082df969b20b09224e  gcc/ada/libgnat/g-comver.ads
! 579d474b7c39153f7f212a25edf3a4d3  gcc/ada/libgnat/g-cppexc.adb
! 41d9844c32469d26e8643f704fb0e233  gcc/ada/libgnat/g-cppexc.ads
! 700a38b653e474f40b98a2ad0ba61e5d  gcc/ada/libgnat/g-crc32.adb
! 1a7b1adfa6a382902d8d7527a1264d8a  gcc/ada/libgnat/g-crc32.ads
! 4f8cee1c85041f063b319bfc4a6ae000  gcc/ada/libgnat/g-ctrl_c.adb
! 0cb7848af218eba8ea3ab4b48b890d0a  gcc/ada/libgnat/g-ctrl_c.ads
! e1d16690d7f4d21e2a729047951b602d  gcc/ada/libgnat/g-curexc.ads
! 576f513df74ce21a13d6dc205816d5ee  gcc/ada/libgnat/g-debpoo.adb
! 20c5a7971e2db18b770af8eb9612bcd4  gcc/ada/libgnat/g-debpoo.ads
! 2aa0e5123a52ff0f4bd6b61c1fb02bb2  gcc/ada/libgnat/g-debuti.adb
! 2184b489112116a556310dbb61b08939  gcc/ada/libgnat/g-debuti.ads
! 6f379460dfc916f1bfa0bf0763f2fff2  gcc/ada/libgnat/g-decstr.adb
! b8ab140695a47592e3405f16c1b8b063  gcc/ada/libgnat/g-decstr.ads
! 648817e2b16a8a416bdd127e41dc0f72  gcc/ada/libgnat/g-deutst.ads
! 4f109b7ace555e69ec21a2c0edd5b205  gcc/ada/libgnat/g-diopit.adb
! 570bb7c6703f2d1bd76d2e09fa23a1fe  gcc/ada/libgnat/g-diopit.ads
! 3656f6c20a6ec0ac10c57ccf7e3163bc  gcc/ada/libgnat/g-dirope.adb
! 7ff8a2f13581b6133fe7c69ac161f717  gcc/ada/libgnat/g-dirope.ads
! 15364214ba8da6ca6eab2e017cafee43  gcc/ada/libgnat/g-dynhta.adb
! c81cc42c2e8b8b127cc57a3ac2d924fb  gcc/ada/libgnat/g-dynhta.ads
! 03013d64a03d692ad8ea3c1222010a81  gcc/ada/libgnat/g-dyntab.adb
! 93f0db1f202e5fe4c9baad72c960dc40  gcc/ada/libgnat/g-dyntab.ads
! e259a5980650bf0b58495bd321b18da1  gcc/ada/libgnat/g-eacodu.adb
! 6892dd04fc5b25126ae21239b999bb48  gcc/ada/libgnat/g-encstr.adb
! 60cb0036a0878f12d1b41b73c30a792f  gcc/ada/libgnat/g-encstr.ads
! 0c7356525966af261e3bdc60c00408f2  gcc/ada/libgnat/g-enutst.ads
! 9849c1db6ca8c38ae54b96447f8129a4  gcc/ada/libgnat/g-excact.adb
! a0071dde4aaf0c5a480bb374c72f1cb3  gcc/ada/libgnat/g-excact.ads
! 2c42b24539914ec3efc455899f1167e2  gcc/ada/libgnat/g-except.ads
! 92c5bfafc49a72f8ca0466cc69f587c2  gcc/ada/libgnat/g-exctra.adb
! 2a0568bfcbc40fc4cb02a95820877f0e  gcc/ada/libgnat/g-exctra.ads
! ec4df461b369194375c685f5ec242735  gcc/ada/libgnat/g-expect.adb
! 63b7e6b7a7fb7b9a711dcbcd0115fff0  gcc/ada/libgnat/g-expect.ads
! b4a217ef02a14d65dad52b0cff261247  gcc/ada/libgnat/g-exptty.adb
! e249643252d399aa38867500d253e6b7  gcc/ada/libgnat/g-exptty.ads
! d3356f767ebe3bbe05b207d019c01c42  gcc/ada/libgnat/g-flocon.ads
! e40402541cb32026930060339cf80bcf  gcc/ada/libgnat/g-forstr.adb
! daaae77ba310638b00b55e0786030058  gcc/ada/libgnat/g-forstr.ads
! 288509ca9c6df4a8c39244582e618669  gcc/ada/libgnat/g-graphs.adb
! 21bb468993f21d50be64a67d113d9cc1  gcc/ada/libgnat/g-graphs.ads
! 7deba3b8b17cd477b71a4530c0b87e50  gcc/ada/libgnat/g-heasor.adb
! 2d3f691997cfae7240bbf1570c01d0b3  gcc/ada/libgnat/g-heasor.ads
! 2bb555c53686887ef1df8bc999175bf8  gcc/ada/libgnat/g-hesora.adb
! 4a8893e1cdcf31245ef8728cdc4ad326  gcc/ada/libgnat/g-hesora.ads
! 3bc876a1a6f50b673c563562753922e9  gcc/ada/libgnat/g-hesorg.adb
! 6da5fcd3dc96bc771c8f1326c162ff57  gcc/ada/libgnat/g-hesorg.ads
! 91f02bb06b6f78e2966c42a2e6f712d4  gcc/ada/libgnat/g-htable.adb
! 5f585239c43781d883bdbf8280e8adc1  gcc/ada/libgnat/g-htable.ads
! 45fd336c30b0c23d5eedf148b7caaee3  gcc/ada/libgnat/g-io-put__vxworks.adb
! 4df0b562a7b2f0a61262c7da5f6db838  gcc/ada/libgnat/g-io.adb
! 5557c25f4e81de4dfb74d506417c091c  gcc/ada/libgnat/g-io.ads
! b52c24d99fd72c6501eed15d865f0d40  gcc/ada/libgnat/g-io_aux.adb
! 95cb4dd60cacc363ced2977441c992df  gcc/ada/libgnat/g-io_aux.ads
! 218d37a7698a1fcf42a0abad356afc9b  gcc/ada/libgnat/g-lists.adb
! f4618efbee0d011c31806aa30936f2f8  gcc/ada/libgnat/g-lists.ads
! b7c6a4b990b84072dd10c2db23c86a3d  gcc/ada/libgnat/g-locfil.adb
! be1235c39efd670bd21343f1a1c03bff  gcc/ada/libgnat/g-locfil.ads
! 8dde74f91f2ad5cd9310f3a1d6b99643  gcc/ada/libgnat/g-mbdira.adb
! 3eec40435438b864644852500d93eaee  gcc/ada/libgnat/g-mbdira.ads
! e0413a7537c172aeb07095401080432a  gcc/ada/libgnat/g-mbflra.adb
! 2a3b79cd21523cdcf8c0fe18686a35d4  gcc/ada/libgnat/g-mbflra.ads
! 7cef206bbf15b5e7f55be9fc85e8190d  gcc/ada/libgnat/g-md5.adb
! 1a93cfa089b45a4a13ff4c1095288cb7  gcc/ada/libgnat/g-md5.ads
! 47354a55828f2a697e1224f923c48086  gcc/ada/libgnat/g-memdum.adb
! 9c3fce0459a7d12dddd0972527c52242  gcc/ada/libgnat/g-memdum.ads
! 6e0397df4d98adf20f6b0260eb8f1410  gcc/ada/libgnat/g-moreex.adb
! 931bfaf51de03dc1788969ff1394b242  gcc/ada/libgnat/g-moreex.ads
! 404d3c6f7d1b7e10ec300cc4ed439b77  gcc/ada/libgnat/g-os_lib.adb
! cdfc447d62ea650105243b5ee2dfc5ea  gcc/ada/libgnat/g-os_lib.ads
! 587ede8aa49df3d637519ca496d9918d  gcc/ada/libgnat/g-pehage.adb
! c6e31495d4b957aca23eded16cc2c845  gcc/ada/libgnat/g-pehage.ads
! 784fe650eda30aed4cd04638b2a3f4a8  gcc/ada/libgnat/g-rannum.adb
! 01643f5d85a69887c0c5471947676108  gcc/ada/libgnat/g-rannum.ads
! 225feba48c85c7848c3da1ee85863e19  gcc/ada/libgnat/g-regexp.adb
! 1693bf1e541dc960470e6b2c60d63522  gcc/ada/libgnat/g-regexp.ads
! 212365c46639de192539501cb4d6b207  gcc/ada/libgnat/g-regist.adb
! 6fc57dc4939780fe550f5415be8f47ab  gcc/ada/libgnat/g-regist.ads
! 02c0968b1f2a2378cc18fa2a70aa5fa8  gcc/ada/libgnat/g-regpat.adb
! fb52c13eb87d5d5efe77ec5cf9219f69  gcc/ada/libgnat/g-regpat.ads
! 685d8edf263a8b7fa3ed5765062c7261  gcc/ada/libgnat/g-rewdat.adb
! e884fb15f10b52e33cbbebf4ec7d97e7  gcc/ada/libgnat/g-rewdat.ads
! 4b5b268b3672aa902466e00ad212decc  gcc/ada/libgnat/g-sechas.adb
! a9ce994ac63e5aa4c0958c1e1c8c2c6c  gcc/ada/libgnat/g-sechas.ads
! 56a2a4911d50ac64e86b840020307f60  gcc/ada/libgnat/g-sehamd.adb
! 091b222437bc15e405838ac1b482bc00  gcc/ada/libgnat/g-sehamd.ads
! b4b22b475378c7893f79298b3a0b6051  gcc/ada/libgnat/g-sehash.adb
! ff7fb5c46035678b37916c92efd6a8e7  gcc/ada/libgnat/g-sehash.ads
! 2f966bd72cfa71436e132176cce0607c  gcc/ada/libgnat/g-sercom.adb
! 2327eebf15f0161535f97e36d522c919  gcc/ada/libgnat/g-sercom.ads
! f10d7bb92b191d6ec3ca0a706ef90650  gcc/ada/libgnat/g-sercom__linux.adb
! a8558782ab0f4c0ae4a02acab7724a8f  gcc/ada/libgnat/g-sercom__mingw.adb
! cf9f76487630b5764583300619ee100f  gcc/ada/libgnat/g-sestin.ads
! 17abc89befd38713dbd3633a63acec05  gcc/ada/libgnat/g-sets.adb
! 9c2f84479da954966f31560976cc7bf8  gcc/ada/libgnat/g-sets.ads
! a30f92f02abe4b75f4d03e56fddda9cf  gcc/ada/libgnat/g-sha1.adb
! adfae26cd24fe1a8385e6066dc70a726  gcc/ada/libgnat/g-sha1.ads
! ff27b816de75b34cb05a3c9e68d0dbf4  gcc/ada/libgnat/g-sha224.ads
! 6b80d5d243f4871054bd9970fe6f77c5  gcc/ada/libgnat/g-sha256.ads
! 71b6cb8ed1a0982b5d17f496383dd8d9  gcc/ada/libgnat/g-sha384.ads
! 8bb659724d8ee789dfd04bd8d4c3061e  gcc/ada/libgnat/g-sha512.ads
! 1d6f77e765af8b5161dba0fdf9971f81  gcc/ada/libgnat/g-shsh32.adb
! b776e46df9493498ea1bb18f129fe244  gcc/ada/libgnat/g-shsh32.ads
! b9d565a780ee2ddd4ff86fa481078e97  gcc/ada/libgnat/g-shsh64.adb
! 79715dd078abdf4ae7293e8e6683025c  gcc/ada/libgnat/g-shsh64.ads
! f39fccee36573065e53f2911e3703f76  gcc/ada/libgnat/g-shshco.adb
! 1d3e6d5beee7c212b0af9d70a3d21fcd  gcc/ada/libgnat/g-shshco.ads
! 6e0a72a86dc722d7c7e69e880217e278  gcc/ada/libgnat/g-soccon.ads
! d41f46e98d5e9afbb81e228c87667a3b  gcc/ada/libgnat/g-socket.adb
! 8b5d0e5cb9af99bf2badba1f7feac655  gcc/ada/libgnat/g-socket.ads
! 848c9631a4f8327ffbcdc25a42b9e88b  gcc/ada/libgnat/g-socket__dummy.adb
! f81579e41de5d1a4f7d6bea879dcd8e0  gcc/ada/libgnat/g-socket__dummy.ads
! 3d785509e03faee4c0220507a9e9ef1c  gcc/ada/libgnat/g-socpol.adb
! 72236b368d92321627fbdf9a4059dbfc  gcc/ada/libgnat/g-socpol.ads
! 274bb162124aee3332889bd07c2fdd7a  gcc/ada/libgnat/g-socpol__dummy.adb
! 08d73765aa3aca733acacfec3f6df058  gcc/ada/libgnat/g-socpol__dummy.ads
! daca640c115c2022cc382fef01dde7d3  gcc/ada/libgnat/g-socthi.adb
! 8986e0f37092f63584c5a94778e10616  gcc/ada/libgnat/g-socthi.ads
! 854f888b534ccb5dec04c940e65b7c9c  gcc/ada/libgnat/g-socthi__dummy.adb
! 13e3df133ec95285ff159f2ea3192f57  gcc/ada/libgnat/g-socthi__dummy.ads
! 9ded057794bf9074a31924cae4f52910  gcc/ada/libgnat/g-socthi__mingw.adb
! 5293fc19eade9cc5126d488d951a5528  gcc/ada/libgnat/g-socthi__mingw.ads
! 95ae891356b2dcdca3675a1b88542cc1  gcc/ada/libgnat/g-socthi__vxworks.adb
! 0b4238b350bb58f9bdeac5e501fefbf4  gcc/ada/libgnat/g-socthi__vxworks.ads
! 3ef7c507d1801ccea5cab17be62d4af2  gcc/ada/libgnat/g-soliop.ads
! 40f061f67260010e42f53f5213430f51  gcc/ada/libgnat/g-soliop__lynxos.ads
! bdf05dba97ac26b6cdb9426a863b6124  gcc/ada/libgnat/g-soliop__mingw.ads
! cfac7e3b54c69ce2a4018302460a883d  gcc/ada/libgnat/g-soliop__qnx.ads
! 678a78e542b563a369e434943e537d71  gcc/ada/libgnat/g-soliop__solaris.ads
! c5fa36f708e8266f303076fece5d7aed  gcc/ada/libgnat/g-sopowa.adb
! 6c610fcd217073e7aad6188b75b160f8  gcc/ada/libgnat/g-sopowa__mingw.adb
! 762b3819f93aaff7611333d42408200d  gcc/ada/libgnat/g-sopowa__posix.adb
! a8b9ad6a09ca6008d0839df8fe681713  gcc/ada/libgnat/g-sothco.adb
! cadf48f62621d2ed1dc27013a862d480  gcc/ada/libgnat/g-sothco.ads
! 46d4fa3e5cf014b6f378d22c3ae02b03  gcc/ada/libgnat/g-sothco__dummy.adb
! 659d64d3563125f236b2f466e3a59d4a  gcc/ada/libgnat/g-sothco__dummy.ads
! 70e268b7a9d02cc2554f553546f9ed97  gcc/ada/libgnat/g-souinf.ads
! 9f87e22e35807fa7e7c3ee731024f891  gcc/ada/libgnat/g-spchge.adb
! eeecddb8eb07d5185a6b6418b364fef9  gcc/ada/libgnat/g-spchge.ads
! f8fb823d4189a3fbe91f2a0d3a863b30  gcc/ada/libgnat/g-speche.adb
! ab9dac00ab96c57991593df880faa37b  gcc/ada/libgnat/g-speche.ads
! 114015e6c6f365e81f004ee34b8bc672  gcc/ada/libgnat/g-spipat.adb
! f281dfc2555d933c67832af58a50a22e  gcc/ada/libgnat/g-spipat.ads
! 04f5abbb4046bc4ce8d8410c3dde8af6  gcc/ada/libgnat/g-spitbo.adb
! c852b3b56eb9c6df39be80ab624b4171  gcc/ada/libgnat/g-spitbo.ads
! f573af8134a5bdb1da36461648270b86  gcc/ada/libgnat/g-spogwa.adb
! ce3e0c7692b86054c567bdb096a351d0  gcc/ada/libgnat/g-spogwa.ads
! d3e2150d099265e44c815843fa3b3347  gcc/ada/libgnat/g-sptabo.ads
! d35aaea40f2b2bcca4a89e2df1758398  gcc/ada/libgnat/g-sptain.ads
! 5a7635ab917379368d1f916cfa4aa75c  gcc/ada/libgnat/g-sptavs.ads
! 3f18f7acae7b67f8799c02a917e4e8e0  gcc/ada/libgnat/g-sse.ads
! 6a285ca8d98d419c79153d64e076e52a  gcc/ada/libgnat/g-ssvety.ads
! fc4e1b95baf21934bd86d72639b0ed56  gcc/ada/libgnat/g-sthcso.adb
! 3ab08d46f61d59ef0200068d8c718fb1  gcc/ada/libgnat/g-stheme.adb
! c57e840184452a2c046f6a972e29876c  gcc/ada/libgnat/g-strhas.ads
! bc251a3f6100fcd562c1b369656ae8ae  gcc/ada/libgnat/g-string.adb
! cf0892231032e3b4990ece66ad6c7936  gcc/ada/libgnat/g-string.ads
! c0c4a306efc58cbc109c053760c513d7  gcc/ada/libgnat/g-strspl.ads
! 6c7ac61fefa408083a3ae7cc1f8c2ec8  gcc/ada/libgnat/g-stseme.adb
! 1f57c22f6b5946dd51936c6c8442158c  gcc/ada/libgnat/g-stsifd__sockets.adb
! dd65f32b0ec828fcd0e15cf2e4692846  gcc/ada/libgnat/g-table.adb
! 0e711aa10c0979e73eb1325700b72ebd  gcc/ada/libgnat/g-table.ads
! 0ecd7447eaf668a051fdfda3391d9a9d  gcc/ada/libgnat/g-tasloc.adb
! fb520959ae0c0651532a653a59234923  gcc/ada/libgnat/g-tasloc.ads
! 47f4ca8306414272ec654711747dc587  gcc/ada/libgnat/g-timsta.adb
! 8b1ce3db19b12e6a33b066a2291ecc54  gcc/ada/libgnat/g-timsta.ads
! 7a8e6feec66bf6942b4fe42f97becd1f  gcc/ada/libgnat/g-traceb.adb
! dbd714f1673491f5cac10aba0fa97657  gcc/ada/libgnat/g-traceb.ads
! 411248d740b5fea82fb32d5d0cde883b  gcc/ada/libgnat/g-trasym.adb
! 36d5770ccafc0a168cb412abf5345a74  gcc/ada/libgnat/g-trasym.ads
! 0970793c85c149e560df14ea32eee545  gcc/ada/libgnat/g-tty.adb
! 4b3c3561bff5919ae803530cb6f65aa2  gcc/ada/libgnat/g-tty.ads
! 0e3b08e094cd092d006680c978a23551  gcc/ada/libgnat/g-u3spch.adb
! e1c467aa5580d604cbdf1465257c2157  gcc/ada/libgnat/g-u3spch.ads
! be9701f445dae5e1a54cfa3315819b50  gcc/ada/libgnat/g-utf_32.adb
! 94611c82061bff2e7857d86843166d80  gcc/ada/libgnat/g-utf_32.ads
! eafe5742e68f64025458fda9fc623f3f  gcc/ada/libgnat/g-wispch.adb
! 3ef25ee8e0eff29a46691709dd00f77a  gcc/ada/libgnat/g-wispch.ads
! 9bf563492a32c63aa122ee0fccfabc32  gcc/ada/libgnat/g-wistsp.ads
! fa71743048ada76f20393781e3f42013  gcc/ada/libgnat/g-zspche.adb
! 340c0440e004ff9a7d1b046bacc6d932  gcc/ada/libgnat/g-zspche.ads
! 9f9f16210bac6a73e6fe999cf95825d8  gcc/ada/libgnat/g-zstspl.ads
! f8792544db9b79fb471b1ab8dfd89b19  gcc/ada/libgnat/gnat.ads
! 6a7e17a96ce7ae4e976d4663aff2e6cc  gcc/ada/libgnat/i-c.adb
! 66fc003c2a301cdca2257119d84e2f37  gcc/ada/libgnat/i-c.ads
! 69258f8075782264406612c1d51d78c3  gcc/ada/libgnat/i-cexten.ads
! 20bdc298a8eea80726cc2f8d7313c1b1  gcc/ada/libgnat/i-cexten__128.ads
! 742eba1a01c294130b7a0f3e95d705c1  gcc/ada/libgnat/i-cobol.adb
! 4216e51da73d7954f8297e9044e28f52  gcc/ada/libgnat/i-cobol.ads
! b109b11ea9892385930f086451cfa6f5  gcc/ada/libgnat/i-cpoint.adb
! 91520ffd91287a3d254af1e39127e33b  gcc/ada/libgnat/i-cpoint.ads
! 1eef90157f88d547c7f35e5d96601d3e  gcc/ada/libgnat/i-cstrea.adb
! 5ae88a5eff6be767f202a1b935463f63  gcc/ada/libgnat/i-cstrea.ads
! 1e90b31a775a35f4b9c33958be1f489d  gcc/ada/libgnat/i-cstrin.adb
! 72f59ec34ebdd90187da5433d16be703  gcc/ada/libgnat/i-cstrin.ads
! 5c8b61e589d4ae403731ed66ce16cd23  gcc/ada/libgnat/i-fortra.adb
  fe08792d30f40125dd75d63c7bcd68fe  gcc/ada/libgnat/i-fortra.ads
! 294e0b5491c67de6065ba266c95ff970  gcc/ada/libgnat/i-pacdec.adb
! 91f1e6cd5792d23a9386aa1025ecd641  gcc/ada/libgnat/i-pacdec.ads
! ef898870d5311b8ba82fd17cdd27c276  gcc/ada/libgnat/i-vxwoio.adb
! 8b07be34ee8ef0c29e0babf3ba3d2bd7  gcc/ada/libgnat/i-vxwoio.ads
! bdcd6709757197915fdea2249fb97ce1  gcc/ada/libgnat/i-vxwork.ads
! 4bbd1923f8cd479e70d6978d86b8acd2  gcc/ada/libgnat/i-vxwork__x86.ads
! 80bc992875d453fa5c1282fe7b151232  gcc/ada/libgnat/interfac.ads
! 51993a59775f1e3aa9b95d4d20b1f188  gcc/ada/libgnat/interfac__2020.ads
  c2121d458a346c0b9d83825c544b9516  gcc/ada/libgnat/ioexcept.ads
+ a8eb2329946dd4041335c2c4cfd086af  gcc/ada/libgnat/libada.gpr
+ 9b37ec6e60899a7dadce7f301acc9eee  gcc/ada/libgnat/libgnat.gpr
+ fbe275186bb4f8ccd7519acfa1499671  gcc/ada/libgnat/libgnat_common.gpr
  38f101ad4a6eba55ef694b1ab6315683  gcc/ada/libgnat/machcode.ads
! 5d96fe050a8a9c222b25dc5429df2feb  gcc/ada/libgnat/memtrack.adb
! 72260defef1c548460961aec8f6ad824  gcc/ada/libgnat/s-addima.adb
! 5865e94f441d822eac2767735fc5d9c5  gcc/ada/libgnat/s-addima.ads
! adbda9e28e610ddd8d26747b6679686d  gcc/ada/libgnat/s-addope.adb
! 990196a110bc590581af2f53bcee4d8e  gcc/ada/libgnat/s-addope.ads
! 9bd09334a1488b3ceb644248c54cacfe  gcc/ada/libgnat/s-aoinar.adb
! 087143d13a05d40d395461b209d510ee  gcc/ada/libgnat/s-aoinar.ads
! 0909903ba29b1c7f708a1a86a965ec28  gcc/ada/libgnat/s-aomoar.adb
! c81a0ba430a2392fcf68618e3a2024f1  gcc/ada/libgnat/s-aomoar.ads
! 1710a2df388af3f5618130eb826ce509  gcc/ada/libgnat/s-aotase.adb
! f392f8baf2bb9556e5223e5e578ffc35  gcc/ada/libgnat/s-aotase.ads
! 91bf2d4b5a22b809aa04f9cbb9e0adb0  gcc/ada/libgnat/s-aridou.adb
! 818aa915a9e6739257e142baef8b988c  gcc/ada/libgnat/s-aridou.ads
! b83694acaf16ccdd9888a2e3a68413b0  gcc/ada/libgnat/s-arit128.adb
! e8a616dce75d8d1c05403ba1c72cf436  gcc/ada/libgnat/s-arit128.ads
! 4f62af36cd09341aa51d28694b46fee0  gcc/ada/libgnat/s-arit32.adb
! 85887cc4723e69da16fb7ef21a205b75  gcc/ada/libgnat/s-arit32.ads
! f8f38a9b39eba0a07a3d818398872faf  gcc/ada/libgnat/s-arit64.adb
! bc1d9d1f4161a9d8603f9b918a16a0e0  gcc/ada/libgnat/s-arit64.ads
! 2f8d973a29903b3b949f60ee6a08b336  gcc/ada/libgnat/s-assert.adb
! 12794742493b209b2513d7748e0df79b  gcc/ada/libgnat/s-assert.ads
! db5b6ffa3476388400358f7009200a5f  gcc/ada/libgnat/s-atacco.adb
! eba43ca6e48fcb36f89e6f20b8c209ff  gcc/ada/libgnat/s-atacco.ads
! ac0c4ec9dd1379fdb84f06835bd5faf1  gcc/ada/libgnat/s-atocou.adb
! feebdf52cd14183ecdb53ded5902e666  gcc/ada/libgnat/s-atocou.ads
! a92113545a15841a55aa1ef9989f0a75  gcc/ada/libgnat/s-atocou__builtin.adb
! 4f424c38af732ab5e03f967786bd4b91  gcc/ada/libgnat/s-atocou__x86.adb
! f84d28add1014a5b2c182a92a73bfeec  gcc/ada/libgnat/s-atoope.ads
! 97ea758f1bb4a34e1ce2d820f5c0ce9e  gcc/ada/libgnat/s-atopex.adb
! da5bf85742617cd0a28fc4cc8cde1838  gcc/ada/libgnat/s-atopex.ads
! ccdc5cea2a4f209a01c5d64893f94f9b  gcc/ada/libgnat/s-atopri.adb
! 62bb2ffd65359d3468e7a394acf94277  gcc/ada/libgnat/s-atopri.ads
! 3de6b56a00c42dadbd35283781a104c4  gcc/ada/libgnat/s-auxdec.adb
! 538fcc2fdbc384c8b4d85dbb59e18866  gcc/ada/libgnat/s-auxdec.ads
! e8f78e084d304c55d6a72b4042b07fe7  gcc/ada/libgnat/s-bignum.adb
! f0fc96bcb20317555b3b3407107d42ee  gcc/ada/libgnat/s-bignum.ads
! 15cb2be9e9cd287da12e322f07291609  gcc/ada/libgnat/s-bitfie.ads
! ad6ba190009f6b059426acae7f1cf477  gcc/ada/libgnat/s-bitops.adb
! e3072895659a57969a7162dedc5f46eb  gcc/ada/libgnat/s-bitops.ads
! aa6ffe24b7ee4010e1cfd1dc67b51a0c  gcc/ada/libgnat/s-bituti.adb
! 7fe458c9405658ed76a16f97987daa22  gcc/ada/libgnat/s-bituti.ads
! ce2b88bad6d1503e143644b97874abfa  gcc/ada/libgnat/s-boarop.ads
! a8eb8d755a1f78d614dec3b30a2242af  gcc/ada/libgnat/s-boustr.adb
! b02911f0260035410216c657326723ab  gcc/ada/libgnat/s-boustr.ads
! a99a7b62ceebb8e7e686301d293fcd7a  gcc/ada/libgnat/s-bytswa.ads
! 3202fbdfab0b75ca81cda2edae30c4cf  gcc/ada/libgnat/s-carsi8.adb
! 5269791b90a657ed4de6b36ec00f2e6e  gcc/ada/libgnat/s-carsi8.ads
! 053719ca6e2c2750a82c34f01dbc337d  gcc/ada/libgnat/s-carun8.adb
! e531e727efa44a2547190e4146fde71d  gcc/ada/libgnat/s-carun8.ads
! 0673727378d100bd5ced003d5d0add76  gcc/ada/libgnat/s-casi128.adb
! 392541ead9785328966205097c452266  gcc/ada/libgnat/s-casi128.ads
! a9461974671d25f2b3661d00364b17e5  gcc/ada/libgnat/s-casi16.adb
! 3ce01ecbf4829ab1911f62aaa351ea2c  gcc/ada/libgnat/s-casi16.ads
! 3661c0535d5cc8a2b926a46996625a2a  gcc/ada/libgnat/s-casi32.adb
! 8c3364b553b47629381d6deb31ceee88  gcc/ada/libgnat/s-casi32.ads
! e35f191cae85bfd640d2b209e974bb71  gcc/ada/libgnat/s-casi64.adb
! 67aba8402c2d8f8ab8af95c433ee5f18  gcc/ada/libgnat/s-casi64.ads
! ba6cc180363c5293715c4b8cf79de898  gcc/ada/libgnat/s-casuti.adb
! 30b2b3f1244cc40a9b29e880fc23ada6  gcc/ada/libgnat/s-casuti.ads
! 0bb8f5467e68c9fb6e4fdd84189fbd2e  gcc/ada/libgnat/s-caun128.adb
! 4d67f98b15b1a26d460f4d6c13cb40c2  gcc/ada/libgnat/s-caun128.ads
! d3a946b2b292fe2f9999cfbb0b6e8a69  gcc/ada/libgnat/s-caun16.adb
! 6c2f59b6fd208527b1be8edc31ff7cb3  gcc/ada/libgnat/s-caun16.ads
! 9411bb305e2be82237d7cac3b8ae5bbb  gcc/ada/libgnat/s-caun32.adb
! 77a04088f3c5080a7d44f336d88834ad  gcc/ada/libgnat/s-caun32.ads
! 671a13867e3eb38deb3fc95fb2c30dd2  gcc/ada/libgnat/s-caun64.adb
! a95547d7b3f2f0705d47064175a33346  gcc/ada/libgnat/s-caun64.ads
! b32567f59a006854d248ac6b7bdc6a8d  gcc/ada/libgnat/s-chepoo.ads
! 57d67659bb07de4111fce4e3708a21bc  gcc/ada/libgnat/s-commun.adb
! 2b0052e846af517ac5cb2d4fcc2a3c74  gcc/ada/libgnat/s-commun.ads
! d1038cb9c78fae307bc3aa21dbb5032f  gcc/ada/libgnat/s-conca2.adb
! 5639b7d0a2b3e466b9d1cdbb600a8407  gcc/ada/libgnat/s-conca2.ads
! 35ed93c4b8a2d47ce7ad366ec0762c59  gcc/ada/libgnat/s-conca3.adb
! 77ec9a7f386102406e1a68bcb8e3047a  gcc/ada/libgnat/s-conca3.ads
! 76c3f43ef78a0bf226306b6ad8846f6a  gcc/ada/libgnat/s-conca4.adb
! ef4f113e62e139a8b1e7e464743e57dd  gcc/ada/libgnat/s-conca4.ads
! 71f81df85f2f465cf8d2fa140dc83721  gcc/ada/libgnat/s-conca5.adb
! ff40026289bc8ba6b2c4e918f84093cc  gcc/ada/libgnat/s-conca5.ads
! ceb1f62328661df49037326a7e6bf2dc  gcc/ada/libgnat/s-conca6.adb
! 777fb3bf93bd492c2935ab5e4480d7b7  gcc/ada/libgnat/s-conca6.ads
! 0001723f83d7592fe727a1b585ed1ce0  gcc/ada/libgnat/s-conca7.adb
! 4d1fc74c8527b18be883ac45d2abed4e  gcc/ada/libgnat/s-conca7.ads
! 3daadfb66d58b1ec505c9e482e8ae2b7  gcc/ada/libgnat/s-conca8.adb
! b695e3508c90e93536fdf8dfcedc7113  gcc/ada/libgnat/s-conca8.ads
! 0722f21ae087e3ebd99e1f04d5d9ff02  gcc/ada/libgnat/s-conca9.adb
! 36fb8c7589ff53735ddf4bb8f0db99cb  gcc/ada/libgnat/s-conca9.ads
! f10863bed8a67467608b15dc3e10d9e8  gcc/ada/libgnat/s-crc32.adb
! 026fefb2994b649c6a1ee5f6fcf5383d  gcc/ada/libgnat/s-crc32.ads
! 80128fb5fcc54f2cc229be18619c8166  gcc/ada/libgnat/s-crtl.ads
! 7d97379319f9caf01501db6b6ade1947  gcc/ada/libgnat/s-dfmkio.ads
! 7861425a0ee8ff59ed43b00c148c6625  gcc/ada/libgnat/s-dfmopr.ads
! 6cb00524aba89deaa7e6e10271420ea8  gcc/ada/libgnat/s-dgmgop.ads
! e1fc5587d6f88db609fc39a47b99f73e  gcc/ada/libgnat/s-diflio.adb
! b5312f29c7a83a8c57fc6bf1ab7ffdf7  gcc/ada/libgnat/s-diflio.ads
! fdff3626c1411ae01bdb9e1f774c6003  gcc/ada/libgnat/s-diflmk.ads
! b149bd7e3889f486e782dab3f2ff4312  gcc/ada/libgnat/s-digemk.ads
! ad8b3e0e640d82e96189db162faa58ff  gcc/ada/libgnat/s-diinio.adb
! cab4adad7107cb59f53ad5f40508ffaf  gcc/ada/libgnat/s-diinio.ads
! 9c8dc35245094fcb837ef27287137e8f  gcc/ada/libgnat/s-dilomk.ads
! da386635225fcbcc3a5553c19a228b3e  gcc/ada/libgnat/s-dim.ads
! 2fa3c3361121b6d4acd45726e6072d38  gcc/ada/libgnat/s-dimkio.ads
! 722ba3c919d70248730fe6bbc6a99b50  gcc/ada/libgnat/s-dimmks.ads
! 8bd404a6999337ee2bdedd29c30b5ea9  gcc/ada/libgnat/s-direio.adb
! df3e75368abbada2ac7ac8a688c60522  gcc/ada/libgnat/s-direio.ads
! 7c22fcabe19be9182e15dfd25bbcdcb3  gcc/ada/libgnat/s-dlmkio.ads
! f8a4584126b444bfd4408966324ceb82  gcc/ada/libgnat/s-dlmopr.ads
! 7f56016df6daecd0636379768657421a  gcc/ada/libgnat/s-dmotpr.ads
! 16105281d35bb4678544b788497c60c7  gcc/ada/libgnat/s-dsaser.ads
! c648c8ae7c1d5be12aa48bd68328b757  gcc/ada/libgnat/s-dwalin.adb
! 3b26bbad81429647fa91c78e14bbe36e  gcc/ada/libgnat/s-dwalin.ads
! a5339ba0c6ed98a1a4836870f13db3e3  gcc/ada/libgnat/s-elaall.adb
! 24f36a692d305131a25e47796f5ba5bd  gcc/ada/libgnat/s-elaall.ads
! 0dd4338cd28438a704f9186353e0e1fa  gcc/ada/libgnat/s-excdeb.adb
! d59a9e5990ff17c2da23b8a57ae9a012  gcc/ada/libgnat/s-excdeb.ads
! 46785adab829fb01f81b6f844004185e  gcc/ada/libgnat/s-except.adb
! 5d29e684bf78365274fa8b7475e61949  gcc/ada/libgnat/s-except.ads
! 0833e16d7a8c2bfaa477de26555d4596  gcc/ada/libgnat/s-excmac__arm.adb
! 1f387ebd1084f37f653ae7f284926626  gcc/ada/libgnat/s-excmac__arm.ads
! 759e6da28d6ca83f710497e2fee772d0  gcc/ada/libgnat/s-excmac__gcc.adb
! 42de5d265c560f9b05b38add94348aad  gcc/ada/libgnat/s-excmac__gcc.ads
! 84d09e207a176a373f2dea24462165ac  gcc/ada/libgnat/s-exctab.adb
! f28b4667ba3f14b0824bc04c87678f67  gcc/ada/libgnat/s-exctab.ads
! 163afc4f60eb95896433ae797a94e771  gcc/ada/libgnat/s-exctra.adb
! 58746115e95282950c071536adac791a  gcc/ada/libgnat/s-exctra.ads
! be6097f0c5fcb90dd5002019b5e31ec6  gcc/ada/libgnat/s-exnint.adb
! bea3559958520ad7b53fbdc9a93d5e1a  gcc/ada/libgnat/s-exnint.ads
! 630cec97bd1817f07f7967a16e0e6423  gcc/ada/libgnat/s-exnllf.adb
! 14adc4f2d85bbf5f2fe206259004fb96  gcc/ada/libgnat/s-exnllf.ads
! 57b0ad3d84494f8e49c8633f9fbe5087  gcc/ada/libgnat/s-exnlli.adb
! e9ee2699b94c534d0afb340170deccae  gcc/ada/libgnat/s-exnlli.ads
! 00202c6412243935c7d91f945a330efd  gcc/ada/libgnat/s-exnllli.ads
! 0657b064e862e286e4282a1f95fb3b0b  gcc/ada/libgnat/s-expint.adb
! 2a520e5ef77d5d8f93744a8bb852e371  gcc/ada/libgnat/s-expint.ads
! 85f951fba8dfb02e2d7088864f1999fd  gcc/ada/libgnat/s-explli.adb
! d6e2983533e23601d856f715ed765d50  gcc/ada/libgnat/s-explli.ads
! ff73727dd4fe8341262d6182c8becc21  gcc/ada/libgnat/s-expllli.ads
! dc66433ee0fb5e4c92c4e5be30174efd  gcc/ada/libgnat/s-explllu.ads
! 90ee393ef2e71711929aabf1916c61e1  gcc/ada/libgnat/s-expllu.adb
! c88a66530849d247b8ecd70674d31aa7  gcc/ada/libgnat/s-expllu.ads
! 9dce269df4800bf329dc17b6ff6d20c3  gcc/ada/libgnat/s-expmod.adb
! e7bbd971baddffc8c10b52f8069d087a  gcc/ada/libgnat/s-expmod.ads
! 1f9b7db2d50df6b32165cf2f97d3132f  gcc/ada/libgnat/s-exponn.adb
! 4d23c238d87330edac36c3345e12ddde  gcc/ada/libgnat/s-exponn.ads
! 48563aab06969bae2d30dc9b00533656  gcc/ada/libgnat/s-expont.adb
! a40a7038ef7ec07a4222710ec95ca5c1  gcc/ada/libgnat/s-expont.ads
! 829bba2174041b0f691e440b5ae1a9da  gcc/ada/libgnat/s-exponu.adb
! c4599ca02a073643cd724fd9095fa254  gcc/ada/libgnat/s-exponu.ads
! bafc5fb004375e9c4bc368785fc57663  gcc/ada/libgnat/s-expuns.adb
! b03284c66e65e31c105abda2311ace30  gcc/ada/libgnat/s-expuns.ads
! 8429877cbd5a2131d77564d46fc3f716  gcc/ada/libgnat/s-fatflt.ads
! 4570fdac5d2a54760122d2a97de7d352  gcc/ada/libgnat/s-fatgen.adb
! 4de438a65d4c443d452fe5634a41edc8  gcc/ada/libgnat/s-fatgen.ads
! b4c158e4dba4174571da761b9089746f  gcc/ada/libgnat/s-fatlfl.ads
! ca5fa0d4b2aebba5da1a3bdf56965b7d  gcc/ada/libgnat/s-fatllf.ads
! 117fb1bbe02f19fdb384ab479d0081c4  gcc/ada/libgnat/s-ficobl.ads
! 5583e01e5cb546ea4b37fb06bbf93f1c  gcc/ada/libgnat/s-filatt.ads
! bb1ff18bef4be87f17733a037035838d  gcc/ada/libgnat/s-fileio.adb
! b5ab3ee26ca0da63ac04afc40df2005a  gcc/ada/libgnat/s-fileio.ads
! 963836be538a6b3aacc554af2f4b9f5a  gcc/ada/libgnat/s-finmas.adb
! 92100c4a572f5f46627083beea204d09  gcc/ada/libgnat/s-finmas.ads
! 621c517f71a880066d7f42cac2f66c2a  gcc/ada/libgnat/s-finroo.adb
! da5e2f5c5a9de87998420ff3849f12a5  gcc/ada/libgnat/s-finroo.ads
! 357db2624ce0474d12ea303601e918b6  gcc/ada/libgnat/s-flocon.adb
! 162d9a1a4ae75fdf7863146298e5363d  gcc/ada/libgnat/s-flocon.ads
! 260027561d242848f3606c5bf011737b  gcc/ada/libgnat/s-flocon__none.adb
! 664b5f7eb74a5e9dd3dd13557ebc022a  gcc/ada/libgnat/s-fode128.ads
! ca1551c6f0d447692e7c171bc50ade7c  gcc/ada/libgnat/s-fode32.ads
! f12abff2663d20be858c684f85445eb8  gcc/ada/libgnat/s-fode64.ads
! 6a59a390b0efeb3b099b64949c5d16ee  gcc/ada/libgnat/s-fofi128.ads
! ae1946d1807f30a215797d6d76f2ea45  gcc/ada/libgnat/s-fofi32.ads
! 9e0690d6aa4995df8a33896bd7788d97  gcc/ada/libgnat/s-fofi64.ads
! 9d996da738f5b84aee0add05e0fe1236  gcc/ada/libgnat/s-fore_d.adb
! 57328dea21e064cc837bc9f814f5fb9e  gcc/ada/libgnat/s-fore_d.ads
! c42a2bc8cd049d3d32bf65ec6d88e87c  gcc/ada/libgnat/s-fore_f.adb
! d6a98037dc2d7dce8df579d6931198f7  gcc/ada/libgnat/s-fore_f.ads
! 81b7123e8cf333bbc4b02b5027b84959  gcc/ada/libgnat/s-forrea.adb
! f3c0ec7ed04b016ee9cfa503b1d7815f  gcc/ada/libgnat/s-forrea.ads
! 2e13e7b04c74b139ba475ccaab752a8d  gcc/ada/libgnat/s-gearop.adb
! 5a79f7a9fffb921af15b79a495059c21  gcc/ada/libgnat/s-gearop.ads
! 2a96a4eda27a597d4655364a832207ee  gcc/ada/libgnat/s-genbig.adb
! bce1f8b11ee28239f4c3d1ac5e4927cd  gcc/ada/libgnat/s-genbig.ads
! 4c1d97bbb56f17bd0757b1342ab2f836  gcc/ada/libgnat/s-geveop.adb
! fa170c7dc3345868e002eb90b609af1a  gcc/ada/libgnat/s-geveop.ads
! 37d1acce28e9d24cce9fadd903b03792  gcc/ada/libgnat/s-gloloc.adb
! 966c01f8ef32d2dec86f48046197ae74  gcc/ada/libgnat/s-gloloc.ads
! 4fa5a833f3e060b50037d9529048c011  gcc/ada/libgnat/s-gloloc__mingw.adb
! 487f82edff565c673cbb640f7d4f5ed4  gcc/ada/libgnat/s-htable.adb
! ed9057e7ae23ee4da0201f16188996b6  gcc/ada/libgnat/s-htable.ads
! 957d821ed5d7351e7e99774c4f4f920c  gcc/ada/libgnat/s-imageb.adb
! 5a6584f75a9fc7371e95ed5facf958d7  gcc/ada/libgnat/s-imageb.ads
! b719ba4609ee0d22d790bfa6af6ea9ea  gcc/ada/libgnat/s-imaged.adb
! f1063af3562119a3dfcf8c89dd415b7b  gcc/ada/libgnat/s-imaged.ads
! a342b2a55b5657f7a37b2eb16887b42c  gcc/ada/libgnat/s-imagef.adb
! e544bddc44e64f53baf1b52beb0919b8  gcc/ada/libgnat/s-imagef.ads
! 0301fb8e30554d0827f50df2b729cd3a  gcc/ada/libgnat/s-imagei.adb
! a0998648d9dc211b5bf9b7af08a93804  gcc/ada/libgnat/s-imagei.ads
! fd2c0ed4ff09cd177037cdb7f984d9a4  gcc/ada/libgnat/s-imageu.adb
! 8a0f3ac1b0001f906d7952b31ce8a1cf  gcc/ada/libgnat/s-imageu.ads
! 4706ed526a9ad59627f678613d53f2db  gcc/ada/libgnat/s-imagew.adb
! 4ee071d8aa3d2723421b9e6bc6ab9ca9  gcc/ada/libgnat/s-imagew.ads
! d3137a3346f7b112faeb272503783c99  gcc/ada/libgnat/s-imde128.ads
! ec8c93e773609f93977512ca560a1c82  gcc/ada/libgnat/s-imde32.ads
! 61d256fd83dd21daf70e41c4a053b933  gcc/ada/libgnat/s-imde64.ads
! 1281626baf406e4c86e90ae1448ab894  gcc/ada/libgnat/s-imenne.adb
! aee5de1f2757660eb397fe80b7375b96  gcc/ada/libgnat/s-imenne.ads
! 5eaa9fa58c19d0056a52cb4309d37a8d  gcc/ada/libgnat/s-imfi128.ads
! 930e73eddaeaf643b585738817a78f50  gcc/ada/libgnat/s-imfi32.ads
! eb6d98083459ee2e3e6d874cfa04f72a  gcc/ada/libgnat/s-imfi64.ads
! 5d63c26d460500b6afe9fec4ced9e787  gcc/ada/libgnat/s-imgbiu.adb
! 4ef6d1aadd5858f4c72391d11a050476  gcc/ada/libgnat/s-imgbiu.ads
! 42843e7fde059f427f6a36f5208769ee  gcc/ada/libgnat/s-imgboo.adb
! 359d2f9f8dead7da4129d1d91121348a  gcc/ada/libgnat/s-imgboo.ads
! 4ef4ff8ff71506a0e730e43252855d59  gcc/ada/libgnat/s-imgcha.adb
! 1228fbd720560c0a0e22e268b9b8cd86  gcc/ada/libgnat/s-imgcha.ads
! 2427cefa3d5f5bd2519ef1e699ef037d  gcc/ada/libgnat/s-imgenu.adb
! 6e14e67c8aeeaf28dba128d1c1fa7f4c  gcc/ada/libgnat/s-imgenu.ads
! 42e3cc8f630e96be928e0deca819b341  gcc/ada/libgnat/s-imgint.adb
! a545095f4bce287d69a9b59a035d45d1  gcc/ada/libgnat/s-imgint.ads
! 387f01c1cc6445d15d1a2d0042da63b2  gcc/ada/libgnat/s-imgllb.adb
! 0ae238475354472c9a874fae929358eb  gcc/ada/libgnat/s-imgllb.ads
! d2ce7202a6254b3db80b2b315e0ed50d  gcc/ada/libgnat/s-imglli.adb
! 81a4389f715138c9017d1f365f2409e2  gcc/ada/libgnat/s-imglli.ads
! a236d0079c0b1036b23c81855d0fa2ba  gcc/ada/libgnat/s-imglllb.ads
! 808f9a4e5d877b8e45e6b8536d3cce65  gcc/ada/libgnat/s-imgllli.ads
! 5521e02f61fc3ad369a7c4698f4f3b4b  gcc/ada/libgnat/s-imglllu.ads
! b24d352d5cfc21198615e58577012064  gcc/ada/libgnat/s-imglllw.ads
! f234f250253e6df0daff26c26a2f73de  gcc/ada/libgnat/s-imgllu.adb
! 01a0d8e48fe92c269eca2ca8287379ac  gcc/ada/libgnat/s-imgllu.ads
! 7ec27300e6091dd9b00405988692fa6a  gcc/ada/libgnat/s-imgllw.adb
! a0bfacb2c3ae9b5b3d397e6500c07671  gcc/ada/libgnat/s-imgllw.ads
! dce6bd85ddd7e8144b50cc00b44b6625  gcc/ada/libgnat/s-imgrea.adb
! 39ec0a895ad59cef50bee8b8d327e5ae  gcc/ada/libgnat/s-imgrea.ads
! abcf1a231d1fd92538dc5d9e57e31ed7  gcc/ada/libgnat/s-imguns.adb
! 631e98fe68a2b673629c126edd485765  gcc/ada/libgnat/s-imguns.ads
! b2f758e63f432d29cc2b16139a364ed4  gcc/ada/libgnat/s-imguti.adb
! 01170938d7718d0cf6fc9cc56aaa0e9c  gcc/ada/libgnat/s-imguti.ads
! 13edfb36cf2c13d13a219bee05787092  gcc/ada/libgnat/s-imgwch.adb
! a471bbf94f0e241f573fc0f1105a241f  gcc/ada/libgnat/s-imgwch.ads
! 241c4bb5d82339ac5c3f66beed5a2ea3  gcc/ada/libgnat/s-imgwiu.adb
! 7fbbed3dac9d2c7aa8d8fc20d32290cc  gcc/ada/libgnat/s-imgwiu.ads
! 7e2b8a32b76c636144be0b6d852f98d1  gcc/ada/libgnat/s-io.adb
! 2001bf92987049c8054d26e3ff9e7d2a  gcc/ada/libgnat/s-io.ads
! e56677828d65e781a074340c52c4cdf5  gcc/ada/libgnat/s-llflex.ads
! ae23fd16618055e54b87420484e68bb8  gcc/ada/libgnat/s-maccod.ads
! bd00acac3c5fcff2f5082f32cc97dc13  gcc/ada/libgnat/s-mantis.adb
! 64e5f692cb201ca91bf370aab7d98b16  gcc/ada/libgnat/s-mantis.ads
! 369e957355973a9e3a33051a0a8d0cef  gcc/ada/libgnat/s-mastop.adb
! f57be18c26930f98683a3c9661a1e9a9  gcc/ada/libgnat/s-mastop.ads
! 30dbf76839f0c13af781c2e49af81fd8  gcc/ada/libgnat/s-memcop.ads
! 1fb04437ac5bc777db746e4cf78e724c  gcc/ada/libgnat/s-memory.adb
! ada99e1f329507069ddb72f3031b5754  gcc/ada/libgnat/s-memory.ads
! 25a60fb3af5ba8b851f394aef46e5be9  gcc/ada/libgnat/s-mmap.adb
! dab2b8be550e55d00ca94247fac2498c  gcc/ada/libgnat/s-mmap.ads
! aa254fb95efa452bb15616e1b7bf174b  gcc/ada/libgnat/s-mmauni__long.ads
! 194ecdaf0f4da7cf4020c3c0e1669110  gcc/ada/libgnat/s-mmosin__mingw.adb
! 25f531f0dc5532d97e99d762ab0eaf4d  gcc/ada/libgnat/s-mmosin__mingw.ads
! 4cbd3ceb66ebfe9309f4d03cc2703792  gcc/ada/libgnat/s-mmosin__unix.adb
! ab01a15caf9165c063e0d20a38877d4d  gcc/ada/libgnat/s-mmosin__unix.ads
! 611b533cb01f61813d94cb23135309f6  gcc/ada/libgnat/s-multip.adb
  c4045ad22005510940d70e1a445db431  gcc/ada/libgnat/s-multip.ads
! 57f358fe3d35b54592c47ba86fe5b3d6  gcc/ada/libgnat/s-objrea.adb
! a36926f87fa0b574b0f018e9608a9f58  gcc/ada/libgnat/s-objrea.ads
! b0e9287c8eecd65d0d3b68e8cc84fa7d  gcc/ada/libgnat/s-optide.adb
! fdc60857ea008fc2ef4dd93a4be4017b  gcc/ada/libgnat/s-os_lib.adb
! 941a9e868e71769fb5d06f25039e0c01  gcc/ada/libgnat/s-os_lib.ads
! 4fa3052479a238c184ccbb8acfae7216  gcc/ada/libgnat/s-osprim.ads
! 2cbb7d626c96b8e4b9b9809958ed59d0  gcc/ada/libgnat/s-osprim__darwin.adb
! f5539c249f1867f95d0c1ba2e3e718fc  gcc/ada/libgnat/s-osprim__lynxos.ads
! 5d08e4f0f6140c63a77b6ffee91e077d  gcc/ada/libgnat/s-osprim__mingw.adb
! 44987890981a4890d2a92443e5bc4c93  gcc/ada/libgnat/s-osprim__posix.adb
! 6097164212bbdb9326264fc5df983ec8  gcc/ada/libgnat/s-osprim__posix2008.adb
! 8b8b3559c7d2b584be4c14c78d05bdab  gcc/ada/libgnat/s-osprim__rtems.adb
! b24307917e74d62eecb992f564d905fe  gcc/ada/libgnat/s-osprim__solaris.adb
! d85a8e90c12e2fda9454aa6d8b534aad  gcc/ada/libgnat/s-osprim__unix.adb
! eef2f98a7ea14aea35e30003674d4ec1  gcc/ada/libgnat/s-osprim__vxworks.adb
! 19d8d33a98aac2f1e7f14770d6d3e506  gcc/ada/libgnat/s-osprim__x32.adb
! c1aae562f0c9f6342aa463cca0bebfd2  gcc/ada/libgnat/s-osvers__vxworks-653.ads
! ca3eda032e23614b22b8f32fd8346092  gcc/ada/libgnat/s-pack03.adb
! bca3aa8c440de98088d2575e88004b1b  gcc/ada/libgnat/s-pack03.ads
! f325cd1ccb9cfcfede7662093f7441d7  gcc/ada/libgnat/s-pack05.adb
! 17b48fab23b6c9ea06fc6ab495996754  gcc/ada/libgnat/s-pack05.ads
! f58d4204ac8d667846b789518b1f482d  gcc/ada/libgnat/s-pack06.adb
! 77e4027fab9a53486448e59b7600e434  gcc/ada/libgnat/s-pack06.ads
! c82f76d792cf1e1a400919e24aab4a21  gcc/ada/libgnat/s-pack07.adb
! 9105f1aab9fff6dee38ecbf633978585  gcc/ada/libgnat/s-pack07.ads
! c4f869712fb8a42d3f3542c53acca3e5  gcc/ada/libgnat/s-pack09.adb
! 3b907999aa9bbac10f28dbc6e8ffa1b8  gcc/ada/libgnat/s-pack09.ads
! b9306e122d8d421bde6c46aa00813c53  gcc/ada/libgnat/s-pack10.adb
! 274ba00c70c57b29c53ea09391165d11  gcc/ada/libgnat/s-pack10.ads
! 446e560e1d168feb5d842bcad614e5fd  gcc/ada/libgnat/s-pack100.adb
! eb74b4779356b13a642b36697804284d  gcc/ada/libgnat/s-pack100.ads
! 5ab5444ae71e17dddaac4cc83b268f37  gcc/ada/libgnat/s-pack101.adb
! 17cebc69df59a69bf5e6da152fa46846  gcc/ada/libgnat/s-pack101.ads
! bdf843ac12f4a208cdfdfaec93202e9e  gcc/ada/libgnat/s-pack102.adb
! 7861a3411093f2714136b35cfac23f15  gcc/ada/libgnat/s-pack102.ads
! 839b6d1ae17903692e957721fcb8355a  gcc/ada/libgnat/s-pack103.adb
! 464ce990dc6c4f479b7852c2013a624a  gcc/ada/libgnat/s-pack103.ads
! 2c42782c119e4929660f6aa8821d6705  gcc/ada/libgnat/s-pack104.adb
! f020f420387adcaea26b1a987730b78f  gcc/ada/libgnat/s-pack104.ads
! f3c3cbdd14346408b4e4e27e79dd8928  gcc/ada/libgnat/s-pack105.adb
! d29d642aa14446d3681d610220fba3f1  gcc/ada/libgnat/s-pack105.ads
! f8d1f45622396d04f28b7efa097ae997  gcc/ada/libgnat/s-pack106.adb
! 5719ccf09be874bedf5e7ff2e6e50ee0  gcc/ada/libgnat/s-pack106.ads
! 303efdce43e0fc987b089b3593755c1c  gcc/ada/libgnat/s-pack107.adb
! ab5469093963966c6827983f72dd0ab7  gcc/ada/libgnat/s-pack107.ads
! 12976ed669260ffe03a55b600d7028b4  gcc/ada/libgnat/s-pack108.adb
! 1e35d169e24779b45d77dbc4328bb084  gcc/ada/libgnat/s-pack108.ads
! 2cc8db940a485a154659453d99c2975b  gcc/ada/libgnat/s-pack109.adb
! 32d7b8773a804b34fbd920278c215244  gcc/ada/libgnat/s-pack109.ads
! b2dac557fce841176e7e91f7860c9fae  gcc/ada/libgnat/s-pack11.adb
! 62619080d89e1dc19f3ccce710dbde9c  gcc/ada/libgnat/s-pack11.ads
! fab609ff4832a6fd8038eb7da6c7071b  gcc/ada/libgnat/s-pack110.adb
! 7202337eb9a0ff1755d16fcea5b8ea68  gcc/ada/libgnat/s-pack110.ads
! fe100230d1b8acf94fd400362bc8e546  gcc/ada/libgnat/s-pack111.adb
! 500a960e173c31308d3314510693f2ad  gcc/ada/libgnat/s-pack111.ads
! c089a679e7b8b4c1bd2165bd024f5b90  gcc/ada/libgnat/s-pack112.adb
! d56808b64f35e515bbca38bfedab13bf  gcc/ada/libgnat/s-pack112.ads
! 9bb9891b05c9218d1e71882f4f366b4c  gcc/ada/libgnat/s-pack113.adb
! a12d86a41860479380aa0163fa4f098b  gcc/ada/libgnat/s-pack113.ads
! eeb5b7c42781f22d3311aeeff946ddb7  gcc/ada/libgnat/s-pack114.adb
! 012626035e4705371b867fa91c5835f6  gcc/ada/libgnat/s-pack114.ads
! 7d090fdccfbac17c9c9325c6cc86f84e  gcc/ada/libgnat/s-pack115.adb
! 496fe5ab7066af6bcb6f30ac430ebbc0  gcc/ada/libgnat/s-pack115.ads
! 79f68ff29c1310090db9c9ad0e2fb4ca  gcc/ada/libgnat/s-pack116.adb
! 6c9809abb5d75bfc2125343f185829c8  gcc/ada/libgnat/s-pack116.ads
! 8c2eab9baaeaebf5a518853d0cd331ea  gcc/ada/libgnat/s-pack117.adb
! 4d6e4ea31f417c674c5523c6b5d15aa7  gcc/ada/libgnat/s-pack117.ads
! 2dd38449efa385a9dcb78503ac199f9a  gcc/ada/libgnat/s-pack118.adb
! 184bfc99cac445d66e63cbb162f1bda5  gcc/ada/libgnat/s-pack118.ads
! 3ffc11692eee244e8223d0700ce3b802  gcc/ada/libgnat/s-pack119.adb
! fcd10ae63b04194ecf5e002b367fe0da  gcc/ada/libgnat/s-pack119.ads
! 9f4b6dbec7a1306346e83c8f69d84b40  gcc/ada/libgnat/s-pack12.adb
! 9d5eacdd293064bb7cd5c81150deeeb7  gcc/ada/libgnat/s-pack12.ads
! 31abb4af7cb1c60ccde09fe0628e66a7  gcc/ada/libgnat/s-pack120.adb
! 519095c042dcbe5d3b0082cf6f698477  gcc/ada/libgnat/s-pack120.ads
! e41cbc3ad98f7a019648c28c44eec8eb  gcc/ada/libgnat/s-pack121.adb
! 25236606edd24a45a3a14bd54ca3923e  gcc/ada/libgnat/s-pack121.ads
! ea59319faaf96d2f5d2b2ca8263e5618  gcc/ada/libgnat/s-pack122.adb
! 4cd3d9eae73c1bcde08064844b95a2c8  gcc/ada/libgnat/s-pack122.ads
! e80a8c8cbd9d991212d8279e3819c245  gcc/ada/libgnat/s-pack123.adb
! 23e119c0a097aa7001edbc8889897ddc  gcc/ada/libgnat/s-pack123.ads
! e705cac38ea7beb267816d286da93f0e  gcc/ada/libgnat/s-pack124.adb
! e96053720b83f1937cb8737542eac646  gcc/ada/libgnat/s-pack124.ads
! 98425d63d2468631a3920dd8c351860b  gcc/ada/libgnat/s-pack125.adb
! 6f24bd68ff775207225e2ac338f2bf51  gcc/ada/libgnat/s-pack125.ads
! 7a8e27c121a7b940c5bada896e2ed57d  gcc/ada/libgnat/s-pack126.adb
! bdffc96ce9c61da4bd830712f302ddf0  gcc/ada/libgnat/s-pack126.ads
! 51419ec2152eac6a300e6b661b5eafe0  gcc/ada/libgnat/s-pack127.adb
! 5249264afe04859940f0ee5e077b2939  gcc/ada/libgnat/s-pack127.ads
! 0f9749f58bd21073eea634fde0fe6528  gcc/ada/libgnat/s-pack13.adb
! 52a9e8c02f6a6ab93f4a81a42cd61289  gcc/ada/libgnat/s-pack13.ads
! 02664d26345d6c55c87fd5a35ce77144  gcc/ada/libgnat/s-pack14.adb
! c6dddade011f752afefc9b667a4f68cb  gcc/ada/libgnat/s-pack14.ads
! 3905c135366ae7ca5815e37c7f82c682  gcc/ada/libgnat/s-pack15.adb
! d2dba5d176de56d50533e06faaa21ab3  gcc/ada/libgnat/s-pack15.ads
! c5d3fa3a996bb854a21efdda4b571e8d  gcc/ada/libgnat/s-pack17.adb
! d752b91e8d87541db871418ca1d7cbf3  gcc/ada/libgnat/s-pack17.ads
! 77fd1961b7cc9cd6a320bd83cec0794e  gcc/ada/libgnat/s-pack18.adb
! a45d3097da3c3b37236c0b0047b0ceab  gcc/ada/libgnat/s-pack18.ads
! 6b9fa7fc9ba1ea6f62c2092a9729d657  gcc/ada/libgnat/s-pack19.adb
! 5f109703da92522b80e3978aeb325c72  gcc/ada/libgnat/s-pack19.ads
! 2adfdcc428a0a3d68a975cde85f509d2  gcc/ada/libgnat/s-pack20.adb
! defea63537ba00ea5f2d3090546f5768  gcc/ada/libgnat/s-pack20.ads
! 39af6620dbee07f6c472f98f1d20333c  gcc/ada/libgnat/s-pack21.adb
! 0a9e23428004abd27d39c497c4b828c6  gcc/ada/libgnat/s-pack21.ads
! 67bb11a6c00bb22031cd6ab8ffcd185f  gcc/ada/libgnat/s-pack22.adb
! f9780134c74676eafc17bd8dcf59b9d6  gcc/ada/libgnat/s-pack22.ads
! c71e74eb99abd1cb0adb44b3bb28d882  gcc/ada/libgnat/s-pack23.adb
! dbe098a0477bb881f3f03a8047fd58dd  gcc/ada/libgnat/s-pack23.ads
! 107c941d2ecfb9a32ba7973611b612e6  gcc/ada/libgnat/s-pack24.adb
! cda4b74acd16fb7e188f2b967fd95365  gcc/ada/libgnat/s-pack24.ads
! 62320f06e34cd78fc58f57e59ff388b1  gcc/ada/libgnat/s-pack25.adb
! cbda45dec3b05cfcf72bb373b207f0f2  gcc/ada/libgnat/s-pack25.ads
! 1749874b6744a5118bd3fffedb1a9f37  gcc/ada/libgnat/s-pack26.adb
! c616b84b3bb4bf93753edb119c421bbd  gcc/ada/libgnat/s-pack26.ads
! 43be92c9fa9f7096ee75f300645076fd  gcc/ada/libgnat/s-pack27.adb
! 0ae28b19265828177e7ff9a5ba020da5  gcc/ada/libgnat/s-pack27.ads
! 4eace469d4d5a88b9e971db625adc4df  gcc/ada/libgnat/s-pack28.adb
! 0a519a35b13ffb62745222a375a74740  gcc/ada/libgnat/s-pack28.ads
! ab72c679349d084ec9c53c98bea805b0  gcc/ada/libgnat/s-pack29.adb
! 5cbfc9d70b6c8c5735dd86942cf34fe7  gcc/ada/libgnat/s-pack29.ads
! 1d8a9cf465bb3b56b1247f29631fea08  gcc/ada/libgnat/s-pack30.adb
! 4c0dac182bc296646ced03aff583bc1c  gcc/ada/libgnat/s-pack30.ads
! bfdfe822791aafeadec4ec3eedbfb3ee  gcc/ada/libgnat/s-pack31.adb
! 6eb3b23494d51cf3f046f703f3e52c33  gcc/ada/libgnat/s-pack31.ads
! 61d097bfaef50c00f9b3d053ee7ad577  gcc/ada/libgnat/s-pack33.adb
! 4a9637730692f23a3666e44aec12c500  gcc/ada/libgnat/s-pack33.ads
! 36959db4e6ee4d77f042e7adfa4fe89b  gcc/ada/libgnat/s-pack34.adb
! 136c045992204682fb684448e741fee3  gcc/ada/libgnat/s-pack34.ads
! d86e55ffd2cbe16971fad40b25ad9421  gcc/ada/libgnat/s-pack35.adb
! 80ac1781dd33bde9b4aef8924b20cac4  gcc/ada/libgnat/s-pack35.ads
! a414fdc07b17c0b0aec55c123a965203  gcc/ada/libgnat/s-pack36.adb
! e53149127ee1da438bec51e2aad1a8f0  gcc/ada/libgnat/s-pack36.ads
! 01761fdf5ad0e9f6715f63ffc3eade49  gcc/ada/libgnat/s-pack37.adb
! ef7ceba443dee467268738c1d81665c7  gcc/ada/libgnat/s-pack37.ads
! 071165e3d529c89e22c15896fefe96fd  gcc/ada/libgnat/s-pack38.adb
! 3e62a9128e70930ec1fc84a05567abab  gcc/ada/libgnat/s-pack38.ads
! d3fce8e639a56f4a22f732ed6e32353a  gcc/ada/libgnat/s-pack39.adb
! d1f9caacd9228585a595f2402d9fea80  gcc/ada/libgnat/s-pack39.ads
! 3f307603eb96220e28add9299d1eb8bf  gcc/ada/libgnat/s-pack40.adb
! b5457896c7b9ae99b59bed6ed07af33e  gcc/ada/libgnat/s-pack40.ads
! 858f89995aeb16d40d1a7028b7fb4d1b  gcc/ada/libgnat/s-pack41.adb
! 0ec8e5c9307ec378ec49a0a6b4b35280  gcc/ada/libgnat/s-pack41.ads
! 5b13871787a55bd4bf9fddb4e285bfa9  gcc/ada/libgnat/s-pack42.adb
! 4c465550ab1b0b962bebfefe2a08a53f  gcc/ada/libgnat/s-pack42.ads
! 3ea383dda21660e29f321718119d62bf  gcc/ada/libgnat/s-pack43.adb
! 88918b0a2a7c8a5e83c129502c59e307  gcc/ada/libgnat/s-pack43.ads
! 33ef57dc69601fcb7119395331d9af7d  gcc/ada/libgnat/s-pack44.adb
! d6e552914b99aaa48bb9abb2f4702222  gcc/ada/libgnat/s-pack44.ads
! 681e5bfaac039722698e84d0633d0e8c  gcc/ada/libgnat/s-pack45.adb
! 4a85ef2da93eff6a73e1adc54082d5be  gcc/ada/libgnat/s-pack45.ads
! 5d97d5cdf98f4e756b7876eb6f73bdca  gcc/ada/libgnat/s-pack46.adb
! f1ef65efecb6bb88b9b8ae707e092efa  gcc/ada/libgnat/s-pack46.ads
! a8953f1cafc1c82edcae967b82928f7f  gcc/ada/libgnat/s-pack47.adb
! dcf9d3ea5071c0a0eee58360b720886b  gcc/ada/libgnat/s-pack47.ads
! 123a8e82eaba3dd10305a989cbcfbdb2  gcc/ada/libgnat/s-pack48.adb
! b2997072692fe3d02ba0e6484e8287a8  gcc/ada/libgnat/s-pack48.ads
! 14fa61990488c455cb8c19415691b68a  gcc/ada/libgnat/s-pack49.adb
! ed901a8059e5af5b323a0aedf02b2847  gcc/ada/libgnat/s-pack49.ads
! 9448839e8dd6850b722b4f4adb5773e2  gcc/ada/libgnat/s-pack50.adb
! f2a82c8bb1214877735ce523708ba312  gcc/ada/libgnat/s-pack50.ads
! ed97472c123f9650ddbc311cdc7db1d7  gcc/ada/libgnat/s-pack51.adb
! 959f1a4493b73d8f3cf03f29fb31ba56  gcc/ada/libgnat/s-pack51.ads
! 362f830f537b9f917250a0a92c4f5e89  gcc/ada/libgnat/s-pack52.adb
! 62d680f61797f5507c750df43b038f08  gcc/ada/libgnat/s-pack52.ads
! 45bfec2dcd03d981eabae64c07689ea3  gcc/ada/libgnat/s-pack53.adb
! 282921602ae358724f53f6b2accaa446  gcc/ada/libgnat/s-pack53.ads
! d51eeb5e8a00b9dde7cc2358f7e0a569  gcc/ada/libgnat/s-pack54.adb
! ed2ff44800a6f60cdfe5ea892c82d556  gcc/ada/libgnat/s-pack54.ads
! 9dbfe7b47a24a161dabfa6e184c174e2  gcc/ada/libgnat/s-pack55.adb
! 45e2b7c389d4c2d668eeec9be6b2fc80  gcc/ada/libgnat/s-pack55.ads
! 3b26906437ba02a7fab834f75393a8e3  gcc/ada/libgnat/s-pack56.adb
! 1f7c067f59a3e246348b92dfbe93c116  gcc/ada/libgnat/s-pack56.ads
! 354a4db4c0f935f84efe3e5f98abb439  gcc/ada/libgnat/s-pack57.adb
! c606fa27a16e23a71de158a1dd9e7615  gcc/ada/libgnat/s-pack57.ads
! 70022ef673e8bba43ee37b065f5ac3a4  gcc/ada/libgnat/s-pack58.adb
! 8fcf9d87242a13acf3d9f101d9799043  gcc/ada/libgnat/s-pack58.ads
! eedb3ee61a848f79ee840a572a898f62  gcc/ada/libgnat/s-pack59.adb
! a84809cb843bfa8617599b0c93c4bcf4  gcc/ada/libgnat/s-pack59.ads
! 1ac3d94b27d17e97b97d298e9502bcd2  gcc/ada/libgnat/s-pack60.adb
! a0272dfa7e8049c9b938bd9916fbab9c  gcc/ada/libgnat/s-pack60.ads
! a2f2c204f25ffa3f925219a6a01a095f  gcc/ada/libgnat/s-pack61.adb
! f3ec988474a66aa39eea5d7359f92806  gcc/ada/libgnat/s-pack61.ads
! 2e233e28d4c316aa96e08ba1689a79e0  gcc/ada/libgnat/s-pack62.adb
! 1249d2f3829287a3aecd816723d617a9  gcc/ada/libgnat/s-pack62.ads
! 4b6b8b37c92f7cb9ecdf01d2910b2498  gcc/ada/libgnat/s-pack63.adb
! 2de0c7b2e891d220eeffe6dfe725590e  gcc/ada/libgnat/s-pack63.ads
! d5bf5419f3691823a82c10876309081b  gcc/ada/libgnat/s-pack65.adb
! f3f21a9c122ea72c39abbddd24b1f2f7  gcc/ada/libgnat/s-pack65.ads
! d44d069ac0a2f862a15f62a7fb93fac6  gcc/ada/libgnat/s-pack66.adb
! a0c4e9f76db43901ca35b976de4dd0d0  gcc/ada/libgnat/s-pack66.ads
! 0072baaf4c0a5376840f67b0867866e1  gcc/ada/libgnat/s-pack67.adb
! 11a4a0406e01c9dcb692e165de223714  gcc/ada/libgnat/s-pack67.ads
! ba2ce15617d7b618f3fe943874e79156  gcc/ada/libgnat/s-pack68.adb
! 1416a9ed79b588bd214fe28acdc476d1  gcc/ada/libgnat/s-pack68.ads
! 53a6f6bd0474418326dd886aaf0fe619  gcc/ada/libgnat/s-pack69.adb
! ea3aea6ae3386362ffd3ee4dc1fff66b  gcc/ada/libgnat/s-pack69.ads
! 837d5d7c114a25b35620d6a66dab182e  gcc/ada/libgnat/s-pack70.adb
! 3698ce749a4f2034e5190c43b8f49d9e  gcc/ada/libgnat/s-pack70.ads
! d4d7d42c8c7ade1d1c63a3b600187636  gcc/ada/libgnat/s-pack71.adb
! 44040597654a7ec5c9a73c3232db191e  gcc/ada/libgnat/s-pack71.ads
! 7951721e8a39bfadb5747ee8f8fccc5e  gcc/ada/libgnat/s-pack72.adb
! ee7c530f355cf2f9757b7182243f735c  gcc/ada/libgnat/s-pack72.ads
! 16fc733dcb5fa1e164645c1547be5df4  gcc/ada/libgnat/s-pack73.adb
! aba276a235f4eda5a724c8f6be008738  gcc/ada/libgnat/s-pack73.ads
! 2efdb41c1f52eee9099b7be5fe7d5ba5  gcc/ada/libgnat/s-pack74.adb
! ea3d13e0d59b861416c87a242e83e55b  gcc/ada/libgnat/s-pack74.ads
! fae31d9d7a30b946b1507ed4d778b0ac  gcc/ada/libgnat/s-pack75.adb
! eaf4a2e44f9ed528b2eb0c100bf55a6d  gcc/ada/libgnat/s-pack75.ads
! 89accc08670cf1a3152acc15e11d5a75  gcc/ada/libgnat/s-pack76.adb
! 48389c98350cc8c0b8e31d2924695e16  gcc/ada/libgnat/s-pack76.ads
! 03145570a6054b43d131e615074444e2  gcc/ada/libgnat/s-pack77.adb
! a76a52c345008737ad499a02874b967c  gcc/ada/libgnat/s-pack77.ads
! fc54e71745cb7dfdb4cf2f3e33af6278  gcc/ada/libgnat/s-pack78.adb
! 3a992cd4b8f8373af8f43aa1cc62699a  gcc/ada/libgnat/s-pack78.ads
! 4dd06e29f1584ac53d456e804cef5689  gcc/ada/libgnat/s-pack79.adb
! dd34e4264966f7c251a37623f529dc09  gcc/ada/libgnat/s-pack79.ads
! 15775be92a1f07a948b2b796f452be9d  gcc/ada/libgnat/s-pack80.adb
! 592aca4cf95640e73e6c21e69a9ce0c6  gcc/ada/libgnat/s-pack80.ads
! aa99f41ffc36e31fd3ed03ba96244529  gcc/ada/libgnat/s-pack81.adb
! 620440aad740937c0a6eb821e962973c  gcc/ada/libgnat/s-pack81.ads
! 427777782b04896147d6e48880124a3c  gcc/ada/libgnat/s-pack82.adb
! fb3c7a88ff92b0431154a7541902d1a4  gcc/ada/libgnat/s-pack82.ads
! 315cda339bfd94bb8199174418b3d814  gcc/ada/libgnat/s-pack83.adb
! 66d0657bf0df065c20292f2d01cac39a  gcc/ada/libgnat/s-pack83.ads
! fc133be5a5b131754cf5506fa73be643  gcc/ada/libgnat/s-pack84.adb
! 5557d3e0285f5eae87a1c8e99b7a178a  gcc/ada/libgnat/s-pack84.ads
! 44b82aa354e25d08085deddf889301ad  gcc/ada/libgnat/s-pack85.adb
! da2e15037409f66ee562765cb0b578a0  gcc/ada/libgnat/s-pack85.ads
! 11b7071fae70030591ed5c5404d80092  gcc/ada/libgnat/s-pack86.adb
! e445db04d88e3b7f9c2ce2e0b9f06d5c  gcc/ada/libgnat/s-pack86.ads
! 74b201c88ae18c5874753d09904c4aa5  gcc/ada/libgnat/s-pack87.adb
! ab877679c05d91b81aac7d89cf636af7  gcc/ada/libgnat/s-pack87.ads
! a30e7e145960c3f17935a0c1d0845e52  gcc/ada/libgnat/s-pack88.adb
! e1603983fe1963467d2429e848c007ed  gcc/ada/libgnat/s-pack88.ads
! 9dc332a4a2f74028a67f29a4ec6b6add  gcc/ada/libgnat/s-pack89.adb
! fc4a533da0d50c6055622eb9e2a1a32e  gcc/ada/libgnat/s-pack89.ads
! 81445ce2a49f0e54b88bafd737d84ec4  gcc/ada/libgnat/s-pack90.adb
! 97525dbaab098a2a7034180e83d63872  gcc/ada/libgnat/s-pack90.ads
! c4cbee79d8b8b6fba44fe7e8b6a333ff  gcc/ada/libgnat/s-pack91.adb
! 6c6c629437bd16526c2a4585bd28ffa1  gcc/ada/libgnat/s-pack91.ads
! 5a4242056f08c77fac872bcbb0ec572a  gcc/ada/libgnat/s-pack92.adb
! a6585e3ce0a0d29bbe0240d1f34805e4  gcc/ada/libgnat/s-pack92.ads
! e681e5da8e5ae60ddcdcbd42d782f649  gcc/ada/libgnat/s-pack93.adb
! 3a70de51c2d285edd84de859f537424b  gcc/ada/libgnat/s-pack93.ads
! f5b3d69a93cbfc029453ff383de0f411  gcc/ada/libgnat/s-pack94.adb
! f3fdd4308202560f022229a22a80ee1c  gcc/ada/libgnat/s-pack94.ads
! a77910674652663eb254c79ec4ea8430  gcc/ada/libgnat/s-pack95.adb
! d485a1bd121b58118d78855881715950  gcc/ada/libgnat/s-pack95.ads
! 44b07b1b1ff362e9fd3f2f04b410bc75  gcc/ada/libgnat/s-pack96.adb
! 187a05a3dd00db015d1f85239ffc7687  gcc/ada/libgnat/s-pack96.ads
! aab91e06f0b8ae9aefde5c43825ca583  gcc/ada/libgnat/s-pack97.adb
! 87885610fb905c45f0320ad05b63d164  gcc/ada/libgnat/s-pack97.ads
! 0aa14376cfb595f238fb982fc35580ee  gcc/ada/libgnat/s-pack98.adb
! e66486da53d07c5928afe2ed5e05f785  gcc/ada/libgnat/s-pack98.ads
! a3f332d17948adc79b2de25dac563794  gcc/ada/libgnat/s-pack99.adb
! 5c5bc0ebdc3d8a264e5d01cecfbecacb  gcc/ada/libgnat/s-pack99.ads
! 8630dcb5864bb4d30c894c8a2346bfa5  gcc/ada/libgnat/s-parame.adb
! 2f6047500aa770a9b56a4b12c46e1141  gcc/ada/libgnat/s-parame.ads
! 40572bea97a781fb08e34bab4180353d  gcc/ada/libgnat/s-parame__ae653.ads
! fd663bb9840209b0e68ab528a3799086  gcc/ada/libgnat/s-parame__hpux.ads
! d8d79e26ae471ed32859e3e2e471f2d4  gcc/ada/libgnat/s-parame__rtems.adb
! 4fac8501615e595f5421a3acfda1dee3  gcc/ada/libgnat/s-parame__vxworks.adb
! 3b27bb33caf990226bc9401d3da27be3  gcc/ada/libgnat/s-parame__vxworks.ads
! 6ef12dfa6faf3de4d38d79d5d4a8b8d4  gcc/ada/libgnat/s-parint.adb
! bff521600ba179509c6bea79cf575c94  gcc/ada/libgnat/s-parint.ads
! d0ad12a80e3531a2958b0aad5c4f74ae  gcc/ada/libgnat/s-pooglo.adb
! 3e0c31907128d7b54d2b7036440ee42d  gcc/ada/libgnat/s-pooglo.ads
! 5e7df4439f8e2f26d638443ece9fc873  gcc/ada/libgnat/s-pooloc.adb
! c8f4595b13a1a40471397fc6c624e373  gcc/ada/libgnat/s-pooloc.ads
! 4121b64e3d224a07a8354a00756e65bd  gcc/ada/libgnat/s-poosiz.adb
! 0f9ed4425115d091c24d178289b56bba  gcc/ada/libgnat/s-poosiz.ads
! 58a60931663ad6ffe891b32939528dc6  gcc/ada/libgnat/s-powflt.ads
! fe14093b2c226f856d6994ea26c5e343  gcc/ada/libgnat/s-powlfl.ads
! c3f69f9c25b6f57085c410ccd40c745f  gcc/ada/libgnat/s-powllf.ads
! 22dfc969d7b2d71cfc297bd9654913fe  gcc/ada/libgnat/s-purexc.ads
! 189b3c28a6d2cc16677c0270bc4594cc  gcc/ada/libgnat/s-putaim.adb
! 66120269340625696f17638a4081dfba  gcc/ada/libgnat/s-putaim.ads
! 4f4cbdc418ecf9308bcb8183f280a5a7  gcc/ada/libgnat/s-putima.adb
! d6844babc0cefd66bb6faedc75e61373  gcc/ada/libgnat/s-putima.ads
! 06d3e09b2db3ab1c03ebfbf16db2d7e8  gcc/ada/libgnat/s-rannum.adb
! d3566372255b10a501275e586c37d3db  gcc/ada/libgnat/s-rannum.ads
! 0e2e87dd4c9277061b131e328b3f5c05  gcc/ada/libgnat/s-ransee.adb
! 2128d450713bb8a6ad6f7d2b669b4f8d  gcc/ada/libgnat/s-ransee.ads
! 4875dd6e9213b501a98daf29703f060a  gcc/ada/libgnat/s-regexp.adb
! 992b83e68ce1c2aa88a8bd973d3e8f9b  gcc/ada/libgnat/s-regexp.ads
! 6ceed49c8cec41a5dd78b0150975ba24  gcc/ada/libgnat/s-regpat.adb
! 796b5648f0c4ccbf46521b11dabd65ec  gcc/ada/libgnat/s-regpat.ads
! f1d9a10b827763a2ef46934e4d721551  gcc/ada/libgnat/s-resfil.adb
! f8390315dfef614a5159ffcb4f1668d7  gcc/ada/libgnat/s-resfil.ads
! e64d33047208491fe0526260390d9bb5  gcc/ada/libgnat/s-restri.adb
! 6b95a646e1182205c3dc93d846a19689  gcc/ada/libgnat/s-restri.ads
! b121d762b347523cf9ac88e58dc6995e  gcc/ada/libgnat/s-rident.ads
! cba844f3577073a05c4caf8a1db5fcfd  gcc/ada/libgnat/s-rpc.adb
! 5a204f98ff673a4a41eeb97bf92a237b  gcc/ada/libgnat/s-rpc.ads
! 8f9bb62211536ea0a507bbaa4b1fc00b  gcc/ada/libgnat/s-scaval.adb
! 03346e54d79782d3ec37af1c638d7a0e  gcc/ada/libgnat/s-scaval.ads
! 44644c58f97dba13c8f8d5212e4cf8a3  gcc/ada/libgnat/s-scaval__128.adb
! 2719e2b894fbfd51052d5af127f3e7cf  gcc/ada/libgnat/s-scaval__128.ads
! c42d4045c0bc7ac4517b073eb5d49dd4  gcc/ada/libgnat/s-secsta.adb
! 6aece0ff273beb1d4fbb79d1342adff0  gcc/ada/libgnat/s-secsta.ads
! 738516efd1b3a798c8230e39e4f6458b  gcc/ada/libgnat/s-sequio.adb
! a8c11109985e8e23bcf237e2756fbeb1  gcc/ada/libgnat/s-sequio.ads
! 81630df21e4edc197dff604b6a1fb744  gcc/ada/libgnat/s-shabig.ads
! 7d3a1edcf3c2276e1a6298889f3e74a8  gcc/ada/libgnat/s-shasto.adb
! baed31e6be2aef0aafe291689cabc7fc  gcc/ada/libgnat/s-shasto.ads
! c5ffba481f7bb43d65d3c385e028103c  gcc/ada/libgnat/s-soflin.adb
! 3ac6cd9ee0744d854b3bfc8477ada086  gcc/ada/libgnat/s-soflin.ads
! 36d258f3880ddc5d339da263f3801c2d  gcc/ada/libgnat/s-soliin.adb
! eb770c3e48b86782041c97e2d7c9560e  gcc/ada/libgnat/s-soliin.ads
! ccff21a14cb7e862e3ad5375090b8b49  gcc/ada/libgnat/s-sopco3.adb
! df6f81e109c94cd6a39d8fd2d9f0c0fd  gcc/ada/libgnat/s-sopco3.ads
! 4be78119d60c941fe39dda5711a02952  gcc/ada/libgnat/s-sopco4.adb
! b981e47281b7382189f017163286083a  gcc/ada/libgnat/s-sopco4.ads
! 4ec8cf417d69c9ee121c8714f6d773b1  gcc/ada/libgnat/s-sopco5.adb
! 8ec240e29b9924db576da681c59ba9c7  gcc/ada/libgnat/s-sopco5.ads
! cb759ff3c241206e2bcb7e5311358688  gcc/ada/libgnat/s-spsufi.adb
! 632f4e6dada547e6e11947082bd8342e  gcc/ada/libgnat/s-spsufi.ads
! 49012b274f130dbae4fca428962d3fba  gcc/ada/libgnat/s-stache.adb
! a9ea3665df3327a8eeefe98f8f475973  gcc/ada/libgnat/s-stache.ads
! eeeb7e26e2291a6668a46ef6af3c4319  gcc/ada/libgnat/s-stalib.adb
! 2062244673d10683b255c16becfcd31e  gcc/ada/libgnat/s-stalib.ads
! 5667d745dd5474ea14e644f5943fe0c7  gcc/ada/libgnat/s-statxd.adb
! 4bf97f8b9b60bbfe7e1967cb604015e5  gcc/ada/libgnat/s-statxd.ads
! fc35a9beeaee8dc04fc5dcd4a8af0538  gcc/ada/libgnat/s-stausa.adb
! 06d948e1f9f4289e924a1c6925ac40c8  gcc/ada/libgnat/s-stausa.ads
! 6f63feed91bc985f321e96c90e857368  gcc/ada/libgnat/s-stchop.adb
! 7ccecdee6fb732276f3636d8eb8c7021  gcc/ada/libgnat/s-stchop.ads
! 9e4988e7a5be8f7e7ee9a98dfad05312  gcc/ada/libgnat/s-stchop__limit.ads
! f06d09edafa782ea5d4e55a453faabb6  gcc/ada/libgnat/s-stchop__rtems.adb
! a28b005bdb4e4940bbe49f5d0ea78039  gcc/ada/libgnat/s-stchop__vxworks.adb
! 7d438a48e40f6d490ebc1905c2ec6cf3  gcc/ada/libgnat/s-stoele.adb
! 0b7d9330bc0fd353d850a664841bcb5b  gcc/ada/libgnat/s-stoele.ads
! af12be7d6400d5c73ab2c9e5545634b0  gcc/ada/libgnat/s-stopoo.adb
! 052cb7641e5df216790b97841d18db1b  gcc/ada/libgnat/s-stopoo.ads
! a6f5e515f8443ac563f57fe19cd3993f  gcc/ada/libgnat/s-stposu.adb
! 8881eac9a3cef25fc801cb2eab1035b0  gcc/ada/libgnat/s-stposu.ads
! 4496677a6e71fc8a11ba156aa527a605  gcc/ada/libgnat/s-stratt.adb
! 19c1b6f5472ea25173c5351c81569705  gcc/ada/libgnat/s-stratt.ads
! 49464101d821540a897f54070079a996  gcc/ada/libgnat/s-strcom.adb
! 39e40f862c7273678ec83518c0df61e2  gcc/ada/libgnat/s-strcom.ads
! c2e0271b490ade3df9f4fb89f3ad2e3b  gcc/ada/libgnat/s-strhas.adb
! ad6689f6f2819cde5b52bae34939f8a4  gcc/ada/libgnat/s-strhas.ads
! c3b9c77760c9817e807bbdd6d5e9644f  gcc/ada/libgnat/s-string.adb
! 68bcf74bef517710b58ab05099f0ed0a  gcc/ada/libgnat/s-string.ads
! e5b13af1002795ac7dc0ebeb77d9fd60  gcc/ada/libgnat/s-strops.adb
! 544f93a0d007989d0b6a0e1adefd8c09  gcc/ada/libgnat/s-strops.ads
! 1e9562f5e07931e3daeae8ef1623777e  gcc/ada/libgnat/s-ststop.adb
! 79bbb9d4c17009232330ff19d02f8f52  gcc/ada/libgnat/s-ststop.ads
! 1c0af573fa0382a3f5a2672ccca8907f  gcc/ada/libgnat/s-tasloc.adb
! 2e0afe42684e604fbd8641a5710f405f  gcc/ada/libgnat/s-tasloc.ads
! 0e411f6e65f03660a82097da9d131767  gcc/ada/libgnat/s-thread.ads
! fea86440d2ba46f632f0659bea759d07  gcc/ada/libgnat/s-thread__ae653.adb
! 3ba7d4463691971efb0b7f2425ff79bf  gcc/ada/libgnat/s-traceb.adb
! 53c9af0ed98d36ed4641cf04284a63e6  gcc/ada/libgnat/s-traceb.ads
! 43d8ee9188387121837a0f539641deed  gcc/ada/libgnat/s-traceb__hpux.adb
! db393944be6b546e20ce1ba8627b6e68  gcc/ada/libgnat/s-traceb__mastop.adb
! 9f3079f8de6599d1d7d89e3d022768bf  gcc/ada/libgnat/s-traent.adb
! f40f2f16edec3e5c980cdece8402b5c7  gcc/ada/libgnat/s-traent.ads
! 383a81b97650b559f5dbd5b8da23b83b  gcc/ada/libgnat/s-trasym.adb
! 1feb0d8000996f4cabf250846ec6a960  gcc/ada/libgnat/s-trasym.ads
! 6ba88349e3f2339995bd184891764891  gcc/ada/libgnat/s-trasym__dwarf.adb
! a37246ddec613efee9abe5a5f4f9c00b  gcc/ada/libgnat/s-tsmona.adb
! 4e00845cbfcd5c6fb1965a80298269c9  gcc/ada/libgnat/s-tsmona__linux.adb
! 847ac6079bd94e35bc80f6edf3fde6bf  gcc/ada/libgnat/s-tsmona__mingw.adb
! 2944f17e1b3e33f3730b1b937614c4df  gcc/ada/libgnat/s-unstyp.ads
! b7f3f5f466f41b51a4bf80f7f659631e  gcc/ada/libgnat/s-utf_32.adb
! 20d820599465b3d3c883e73004c0728e  gcc/ada/libgnat/s-utf_32.ads
! 97e620d86cea3abb15cebd1383e754df  gcc/ada/libgnat/s-vade128.ads
! 67e5ff0de571b6f729065df0ac3a2384  gcc/ada/libgnat/s-vade32.ads
! be0d4858538cac407c1b10caa83b6a1c  gcc/ada/libgnat/s-vade64.ads
! 6a96baa5bb7b220a39b81d69d423da7d  gcc/ada/libgnat/s-vafi128.ads
! 217a1d2564fec7ccdca750b8b4143b54  gcc/ada/libgnat/s-vafi32.ads
! 3142f0d0d67e59f57f3565716c7ff9a7  gcc/ada/libgnat/s-vafi64.ads
! f39481fb26beb946fc3cdade29eb4166  gcc/ada/libgnat/s-valboo.adb
! e8de0092e036bd32029090bfc332c9a7  gcc/ada/libgnat/s-valboo.ads
! d82380e21317af60c55156f8ae44fd6a  gcc/ada/libgnat/s-valcha.adb
! 0d049293775f2c0e49ce5266635732a0  gcc/ada/libgnat/s-valcha.ads
! 853abb2e76c34b8bcec928876ac8cd7c  gcc/ada/libgnat/s-valenu.adb
! 8c6703fe0e665befa27fdc8380d4a845  gcc/ada/libgnat/s-valenu.ads
! 5f54b42c52b6cbf58039f97362760957  gcc/ada/libgnat/s-valflt.ads
! e45bc543dc615b5a4fcb066d32c863fc  gcc/ada/libgnat/s-valint.adb
! 321685ebe59eae47957601b232986b94  gcc/ada/libgnat/s-valint.ads
! 5c1084d4b7ec444691ec645552a1fe32  gcc/ada/libgnat/s-vallfl.ads
! 8072e55923a724a1fb54d05a9b74077b  gcc/ada/libgnat/s-valllf.ads
! c282d774f463afca7c59c5f6507d3686  gcc/ada/libgnat/s-vallli.adb
! a34c9884dbb5f8908bba393a2de949fa  gcc/ada/libgnat/s-vallli.ads
! ef59cfed58278ae1729f83372844b4ee  gcc/ada/libgnat/s-valllli.ads
! a4cebb37e5e22bee12429f282e8391f1  gcc/ada/libgnat/s-vallllu.ads
! ebb05b393442c7b706485f946618ea73  gcc/ada/libgnat/s-valllu.adb
! aef1d70a8b8200aa2e7a87f453e3608b  gcc/ada/libgnat/s-valllu.ads
! ffe06e66b3698906a9947b3da5d42883  gcc/ada/libgnat/s-valrea.adb
! 678c163f40e57a10282fdc98bab194f9  gcc/ada/libgnat/s-valrea.ads
! 80b9359368047a90bb403b1362c5c799  gcc/ada/libgnat/s-valued.adb
! be1df6959b636ad1a58167ae9c272eae  gcc/ada/libgnat/s-valued.ads
! 91431ac7a32bc13ada3a234eb2a4c7ad  gcc/ada/libgnat/s-valuef.adb
! f094a772abd5a45b75d425228cff81b3  gcc/ada/libgnat/s-valuef.ads
! 3bb8758c82e11dcd114dc793b3fefd76  gcc/ada/libgnat/s-valuei.adb
! b34718b9b08c18677e9e41434b8b5fc4  gcc/ada/libgnat/s-valuei.ads
! 99205191ef8e55c1cd8e587bbd3432b6  gcc/ada/libgnat/s-valuer.adb
! 2ad4249ab14c5e8019ec65abcb8d9b99  gcc/ada/libgnat/s-valuer.ads
! 012afda995f9dfe6232af405b8d44bd7  gcc/ada/libgnat/s-valueu.adb
! 7c85cc993bdc3f0640a27d4af7d4a8f5  gcc/ada/libgnat/s-valueu.ads
! 3ccbdabeee57195485093b2a3773ba9e  gcc/ada/libgnat/s-valuns.adb
! 878f17ce528d8d2a80e1f0789e7b5424  gcc/ada/libgnat/s-valuns.ads
! 7b570d4b661dcfb500f2c167127712b5  gcc/ada/libgnat/s-valuti.adb
! 044e5508f0aa3387440b522e62c75fc7  gcc/ada/libgnat/s-valuti.ads
! f57019cda279a60b392e6f25c0b43f65  gcc/ada/libgnat/s-valwch.adb
! 7d1ff9369ebf10f38f3b521d986f9acb  gcc/ada/libgnat/s-valwch.ads
! 52e248666eef2fe38df081998bb0e02c  gcc/ada/libgnat/s-veboop.adb
! f410af5106eb1afdb8dac913bfbd65b7  gcc/ada/libgnat/s-veboop.ads
! c831d82f89d414ab6dc313d733f44622  gcc/ada/libgnat/s-vector.ads
! e2036d9211c909975e7e9ff87199d906  gcc/ada/libgnat/s-vercon.adb
! 2f81c9f94f8d44edfbb6bf902e94d6e8  gcc/ada/libgnat/s-vercon.ads
! 2b7fe92855b1386769698bf6cecbe4ae  gcc/ada/libgnat/s-wchcnv.adb
! b2704e354412802f2a75e37262cca8e2  gcc/ada/libgnat/s-wchcnv.ads
! fdea3b26bd0f919b7ad61b97e944a1c9  gcc/ada/libgnat/s-wchcon.adb
! df692d4346238764ee8606eef673e6c8  gcc/ada/libgnat/s-wchcon.ads
! 0eea47d66ddfbd6acc2c1f72d0b23210  gcc/ada/libgnat/s-wchjis.adb
! f4513cc291fd64570263d3070cf5982f  gcc/ada/libgnat/s-wchjis.ads
! dc791c4bd7af9edcc28ae331ba435d8d  gcc/ada/libgnat/s-wchstw.adb
! c020241a709f8ceb301fd4cd2541cd66  gcc/ada/libgnat/s-wchstw.ads
! a3e9ee510030707e7d327874f9936701  gcc/ada/libgnat/s-wchwts.adb
! fac5f7e6321e3b09140c6644804ebd4d  gcc/ada/libgnat/s-wchwts.ads
! 636e0c239096390fd34af4e02f0aee24  gcc/ada/libgnat/s-widboo.adb
! 7b004565110eff8337ddb2b6174747e2  gcc/ada/libgnat/s-widboo.ads
! a30c2469d47eb281739328df750a707c  gcc/ada/libgnat/s-widcha.adb
! f6ccda7121a493722c9cb704d5f63e36  gcc/ada/libgnat/s-widcha.ads
! 853116ea2e8aa06fecc2a1fa344d82e7  gcc/ada/libgnat/s-widenu.adb
! 8226e395fa98b3f927fa9da0c60be34c  gcc/ada/libgnat/s-widenu.ads
! 671fb6ff2baac5eef110d83332a3b188  gcc/ada/libgnat/s-widint.ads
! e5d83646c2c20e7f8b931138c9415d8c  gcc/ada/libgnat/s-widlli.adb
! 4075027e8be641f41d9b35c4e7827a06  gcc/ada/libgnat/s-widlli.ads
! d9d35440c09d799aa643925acf32d13b  gcc/ada/libgnat/s-widllli.ads
! c267b4eb1951ce1e7b632f84dee58ffc  gcc/ada/libgnat/s-widlllu.ads
! 22caca38987a1e4eca0c8834de591771  gcc/ada/libgnat/s-widllu.adb
! e7ca07ec52f84bcd9760658fd55a1809  gcc/ada/libgnat/s-widllu.ads
! f5e39740565e276a3f52b5f4d35f3aa2  gcc/ada/libgnat/s-widthi.adb
! 2c7b4ca3c5bc20061afb0ddc52f77812  gcc/ada/libgnat/s-widthi.ads
! 4db5fa9495308f4e0a7fd2fa8e27d551  gcc/ada/libgnat/s-widthu.adb
! 05fcb42367b7f9b56b2be8c401d889b4  gcc/ada/libgnat/s-widthu.ads
! e5022a763df770beba52eece5a1c32d6  gcc/ada/libgnat/s-widuns.ads
! 3583def5e50382cd54e832de7bf86dd7  gcc/ada/libgnat/s-widwch.adb
! b60d57fb0a9dcf645be06f0007a1f1c3  gcc/ada/libgnat/s-widwch.ads
! 0807949e1fd737ce3401f74bbd143c5f  gcc/ada/libgnat/s-win32.ads
! f19309aca0b4ea910f51a92c1942f7bf  gcc/ada/libgnat/s-winext.ads
! b206614497537c45ac60f2e1109bf2fa  gcc/ada/libgnat/s-wwdcha.adb
! 6d23ddcf2926fd20f4feaf67c210343c  gcc/ada/libgnat/s-wwdcha.ads
! b955bbc47a2b35d4408a19411bd46b33  gcc/ada/libgnat/s-wwdenu.adb
! 0cea33dce74e7fb4613581cd1dcd3f70  gcc/ada/libgnat/s-wwdenu.ads
! 43e91da39ee331e72f23fa942dbe467e  gcc/ada/libgnat/s-wwdwch.adb
! 982c725dd83ef08584e71bdb88236245  gcc/ada/libgnat/s-wwdwch.ads
  0f4c21401ad2531f8c5d4010537dc6d2  gcc/ada/libgnat/sequenio.ads
! 79c9b766cc2023a4a9afb40ac4075dfe  gcc/ada/libgnat/system-aix.ads
! a7e1d975d4c35e7bec3932e349843657  gcc/ada/libgnat/system-darwin-arm.ads
! bed96e276db1b161e25c2996d12a1b8c  gcc/ada/libgnat/system-darwin-ppc.ads
! 3eef6d8b2f2638e2ed6c108e83115944  gcc/ada/libgnat/system-darwin-x86.ads
! c5c747b918002f48989efdbaa0d82579  gcc/ada/libgnat/system-djgpp.ads
! 63569ae963cad6ff29b60b9be9fd5f54  gcc/ada/libgnat/system-dragonfly-x86_64.ads
! 06b4fd1e66f65a9625ad4349cc511c61  gcc/ada/libgnat/system-freebsd.ads
! a453e48c70610fd75e8b8954cd141c79  gcc/ada/libgnat/system-hpux-ia64.ads
! 5d564498a952f31cbcbdbd815feb80f9  gcc/ada/libgnat/system-hpux.ads
! 659d4a41aa045806a111c8336cdf67aa  gcc/ada/libgnat/system-linux-alpha.ads
! fdd19a95f5cbe9dcf92b2f7c316aad24  gcc/ada/libgnat/system-linux-arm.ads
! a1bedc0223dd3bfb9d3effa9225e33b2  gcc/ada/libgnat/system-linux-hppa.ads
! bb41906d46197d48309d1f0cf27782c9  gcc/ada/libgnat/system-linux-ia64.ads
! 93e8883c92e91293948c5b34a7ca3e78  gcc/ada/libgnat/system-linux-m68k.ads
! 573159da906924eb569d074579658130  gcc/ada/libgnat/system-linux-mips.ads
! 3c26c3d3ed70e23ff3af5c5dde1789ec  gcc/ada/libgnat/system-linux-ppc.ads
! 1c6e360c20d8861dc5d310fdc286df22  gcc/ada/libgnat/system-linux-riscv.ads
! 5156568baa010b0ec0422a66eb8aa2ce  gcc/ada/libgnat/system-linux-s390.ads
! 711d7fc744e978cebf15fc920bec7f1c  gcc/ada/libgnat/system-linux-sh4.ads
! f8b5a432d74d3f01022fdc912ab54459  gcc/ada/libgnat/system-linux-sparc.ads
! b2fb017db92cf8408d0b8c00ed73d666  gcc/ada/libgnat/system-linux-x86.ads
! db8b8eb00e7deab67f8de2402f171c31  gcc/ada/libgnat/system-lynxos178-ppc.ads
! 6c64e8dae80fcaef0a88f2a3f77789b3  gcc/ada/libgnat/system-lynxos178-x86.ads
! 5fe96823026492f5023ed64494bb9b97  gcc/ada/libgnat/system-mingw.ads
! 747197dcfaeaa68ad60b4294b2d1da1e  gcc/ada/libgnat/system-qnx-aarch64.ads
! 573a9ebc49216d2795e47a1dcc28c2cd  gcc/ada/libgnat/system-rtems.ads
! 4d80f11c2961722f1fc5c63f362d11a7  gcc/ada/libgnat/system-solaris-sparc.ads
! 6022542e9a7535eb4b412e401e9fc3a9  gcc/ada/libgnat/system-solaris-x86.ads
! e59064263e43409bf6292197bfe97510  gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads
! 14851c7fef12a7b438bed7cba4cd92b4  gcc/ada/libgnat/system-vxworks-arm-rtp.ads
! a9a1285c00badc885e7e6c7e3938dc62  gcc/ada/libgnat/system-vxworks-arm.ads
! 1112a65e0996bc4b5501e3db3d231e20  gcc/ada/libgnat/system-vxworks-e500-kernel.ads
! ecf9fc2f7685f89a60a980d7df8b2c76  gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads
! 048e5a5c4208582a51955c2eb1cd2a9f  gcc/ada/libgnat/system-vxworks-e500-rtp.ads
! d3e90b5f41e3bfa93372f039c2d0cf17  gcc/ada/libgnat/system-vxworks-e500-vthread.ads
! ef763e1439e52f26127e321dd00aea90  gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
! 93032a1865a7e0a2e7ccd92778bc1dfe  gcc/ada/libgnat/system-vxworks-ppc-ravenscar.ads
! 742847a29ddb12d15d79370c9ab32ed0  gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
! cef7bb256d3dbbc886a2a261d4aecd7e  gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
! d2970eb2d348e3f416948fdcf16978b2  gcc/ada/libgnat/system-vxworks-ppc-vthread.ads
! 2337c882c2ca979af17b5d1875893ecf  gcc/ada/libgnat/system-vxworks-ppc.ads
! aab7f9f2077015843c35e9f0ce78215b  gcc/ada/libgnat/system-vxworks-x86-kernel.ads
! 8f51a643c214503016b6b14f1a54b2a2  gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads
! fa1b9c8e8927284c7abb42668054aa36  gcc/ada/libgnat/system-vxworks-x86-rtp.ads
! 3c48f438bf605c6348297e5db4a9784a  gcc/ada/libgnat/system-vxworks-x86-vthread.ads
! d3420b5d907b465965a8e8bd7deaf885  gcc/ada/libgnat/system-vxworks-x86.ads
! e330b51d3782b3ec5fdc99a1081dca05  gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
! 2fc7789396f8ad480d2d0749c9cdbd73  gcc/ada/libgnat/system-vxworks7-aarch64.ads
! 8447b846870c686fdd4232696ec737f4  gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
! a9a1285c00badc885e7e6c7e3938dc62  gcc/ada/libgnat/system-vxworks7-arm.ads
! 1c9e2691e99f1e1456c0f9dc0be09bda  gcc/ada/libgnat/system-vxworks7-e500-kernel.ads
! 4d35e7a887009ebf8bb9a5e7b1a1c357  gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads
! 8762b0d567e8750bb3578202e9224d02  gcc/ada/libgnat/system-vxworks7-e500-rtp.ads
! 3a38c0bb2a20c6567816b3334fbe0aac  gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
! b041ac4682d3fb2079f7ae8531bfae1e  gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
! 67eb453cded96dbdac3ae180749cc52d  gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads
! 48ac67d39ef324dbc6d886109eff19a9  gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
! fe4bab0e153b300dcf4582b7b9abbaab  gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
! 20d849af0f8e4451f06b6c53056acef4  gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
! fc4fe35c83fd68918d3fdf634d7c246f  gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
! 07532fa8e392a5246c540aa6f007e1e1  gcc/ada/libgnat/system-vxworks7-x86-rtp.ads
! 2949919056affead7235214cba2f0c4c  gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
! d2aa4548a9868150beea4d33c022d7fc  gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
  2dc890e2791f7e9d6e1e9ca1cfb55c71  gcc/ada/libgnat/text_io.ads
  9a646eb97c6840de5d4bbb081dd2031a  gcc/ada/libgnat/unchconv.ads
  b8b0f9c3471d18ee5ac33521fe6f6d31  gcc/ada/libgnat/unchdeal.ads
! 4fad3dfad39a352acdf789f317f57d1d  gcc/ada/link.c
! 3d965b5c634775853d29f9ca73a79b5e  gcc/ada/live.adb
! 53134fc12d5eafb7bd0829578bd688e5  gcc/ada/live.ads
! a0f71e8835f258edf11cacfeecd22cf8  gcc/ada/locales.c
! fcb25837a5d879b1c73efc9ba539474b  gcc/ada/make.adb
! e5f95f959961e6bf84bd08a0b177dd53  gcc/ada/make.ads
! 1c46758e68656eac566811ebf2a98bcb  gcc/ada/make_util.adb
! 474b87c38841afccb59140e8a2fadb9b  gcc/ada/make_util.ads
! ddde07ee98b4ad6a0575d9b51c61e595  gcc/ada/makeusg.adb
! 1ad4bd5cf42deeff7b0f24becc1908aa  gcc/ada/makeusg.ads
! bab1376d1d7e8559341a975d10d14c8b  gcc/ada/mdll-fil.adb
! aa698c252928cfce96d38027ecabb8e9  gcc/ada/mdll-fil.ads
! 9abc75d3fcf268dcdf10d33f061bee68  gcc/ada/mdll-utl.adb
! 33e7c353426bb9a4ede6960c3149ec26  gcc/ada/mdll-utl.ads
! edfe14c7c706fbe109838d15f8f8ee47  gcc/ada/mdll.adb
! 9626d410d6330780c58d3e52c0211ac5  gcc/ada/mdll.ads
! 011caab3d9d7c1ce5415a3706e27eb5b  gcc/ada/mingw32.h
! 63e1c5e64d717747d1e039e9b6a24955  gcc/ada/mkdir.c
! 5494dc1cdac25e8ca415479cf483ea5c  gcc/ada/namet-sp.adb
! 8dd9b5c3c6c736cf6f855e5717e0501b  gcc/ada/namet-sp.ads
! 4267d421d81da4c3388093041aaf74a4  gcc/ada/namet.adb
! db5ba24ec74c662526024ac446bfd65f  gcc/ada/namet.ads
! ec3d9cda46df62c9af3e6c8f5b46de06  gcc/ada/namet.h
! 93c208057c4de537a4c88717ee16632b  gcc/ada/nlists.adb
! 1c8b0ec04a81c7dbd6f4285416f547eb  gcc/ada/nlists.ads
! 33617c5a716dd2da832471fea4410d68  gcc/ada/nlists.h
  349f0f4aeff5f96eb16ad78474248af9  gcc/ada/nmake.adt
! 37fdc3b5a28d51bb41b4016fc22f306f  gcc/ada/opt.adb
! f066a98ad20b33886c5f0f0aea4296d6  gcc/ada/opt.ads
! 39f8a7cd7936424f4fa462262a92913c  gcc/ada/osint-b.adb
! 5d505c4866a0fe94c72fc28c1dae507f  gcc/ada/osint-b.ads
! e223b2bf9de2b2ee893572757e99a02f  gcc/ada/osint-c.adb
! 1c3401480c17e375453b83ff078fc21f  gcc/ada/osint-c.ads
! 0c889502c74d7b394fdc0d992a77342d  gcc/ada/osint-l.adb
! a61047bc784de9f3d1396f03856d4087  gcc/ada/osint-l.ads
! 36a91dd19392e5d0b867e0ec08b4cc99  gcc/ada/osint-m.adb
! 705e6f372d1faf465751654467f8822f  gcc/ada/osint-m.ads
! 46312b046cb2d09382facd20ed21adf9  gcc/ada/osint.adb
! 09b5d0791caa8b80705dc12c4d9fba31  gcc/ada/osint.ads
! e404e7dcd5ada04de77568405298a868  gcc/ada/output.adb
! 3cd49b64aa1d13c2a363ed553fac111f  gcc/ada/output.ads
! 60b6ed2bd2e9b3fa79b250b23c2b5171  gcc/ada/par-ch10.adb
! 9f9b8a78eea3e34b4eb3d05b15775117  gcc/ada/par-ch11.adb
! 5f6f2724ff5edae4f78650037fe8bc0b  gcc/ada/par-ch12.adb
! b9b5136bc3ed29ac5d5577e3236c59c2  gcc/ada/par-ch13.adb
! b98567d532ee7a0d2c884788eac2acb0  gcc/ada/par-ch2.adb
! c96bb61b4f38a92dc4f5c8f23290cab5  gcc/ada/par-ch3.adb
! af8a7c7091f68ba13d62efbe62c94282  gcc/ada/par-ch4.adb
! 28dd2b21e1d83df7967559d8c4c86cc4  gcc/ada/par-ch5.adb
! db0d84e8e8360351bb6fbd4c58654747  gcc/ada/par-ch6.adb
! df851b1ac654aaf3e5f2c7c974203b1c  gcc/ada/par-ch7.adb
! eea155ea68e8f5564f63ce8f427bc2f7  gcc/ada/par-ch8.adb
! 417db569b54ac6319b48cf0c7e155aed  gcc/ada/par-ch9.adb
! c8249094dfaa62a6c3785c5ff65a1dae  gcc/ada/par-endh.adb
! 9ae858bf2dd6fb27a8ccf9f6e6c19f30  gcc/ada/par-labl.adb
! a1d8b90a822f20210e0ce07003b6c243  gcc/ada/par-load.adb
! d86f3d4a0164f2b462350f3521f41cf1  gcc/ada/par-prag.adb
! 5c628f4fe23077207f5b0ec1e6866209  gcc/ada/par-sync.adb
! 454ff465e347b9b907f01d9f1b8a5b38  gcc/ada/par-tchk.adb
! 2a2dd13cde3d8698d258d8f535aff002  gcc/ada/par-util.adb
! 48d134d01ec2a3b7bccae0d841ab0220  gcc/ada/par.adb
! be0ddf1983e44849c4c682e2b944f798  gcc/ada/par.ads
! feaa995f4c86411a1e7eb922af5738c1  gcc/ada/par_sco.adb
! 3ba59fc7ef47ef809bfe7152827792e5  gcc/ada/par_sco.ads
! 00c7b88969e899fd05a6a706dc32733f  gcc/ada/pprint.adb
! 57989b1991c3e0b4bfaee67d7ea229d5  gcc/ada/pprint.ads
! a53ec08a9fc26dd755c145f98160f3b1  gcc/ada/prep.adb
! a2ddc8267987086b98b458cf5caabe4e  gcc/ada/prep.ads
! 1e971b3b1650b43718957467cb0da486  gcc/ada/prepcomp.adb
! 4a4eb0e2d33bf72f305bd9511048af7d  gcc/ada/prepcomp.ads
! 0ce88231f884ee2b8315d6e9dd9285f0  gcc/ada/put_scos.adb
! 05c43ca05e6d64c1c534e89f0e6887d7  gcc/ada/put_scos.ads
! d6aa4e1286ed91ef78d5b928f08ad812  gcc/ada/raise-gcc.c
! 3ce9a666b464606378570efbaad7b446  gcc/ada/raise.c
! 81e26727a457cd48867b56605ee2579e  gcc/ada/raise.h
! dee9611985e0d1ddb0598652ffde8534  gcc/ada/repinfo-input.adb
! ea265e6fa331462d9ed3793d78f020b2  gcc/ada/repinfo-input.ads
! 6f5b0ca60aa04892eb784346bfd35a6a  gcc/ada/repinfo.adb
! c03fe01aabb794a6d8726443037b2615  gcc/ada/repinfo.ads
! e21d1a343e95bb392390c6a817d70097  gcc/ada/repinfo.h
! 375027e45ffcf8326f585730fa9d191f  gcc/ada/restrict.adb
! 4473f1b14cc08aa331960608c5d301cf  gcc/ada/restrict.ads
! 5f0c7b2c4905109b4a24b18c3f4c8699  gcc/ada/rident.ads
! 603bdde9bda526324f9ce304f9215078  gcc/ada/rtfinal.c
! 71b8029372ba8f5ab88d1cd5d06c65f2  gcc/ada/rtinit.c
! e38d53992bbdb5181f34e9aae5ad784d  gcc/ada/rtsfind.adb
! 391dc7d3e0e92c631eaf88d577733e7c  gcc/ada/rtsfind.ads
! 01020e05ef8963636c4c944b3571bac2  gcc/ada/runtime.h
! 0d173c79df4e207ee478ec6fd4dd0e34  gcc/ada/s-oscons-tmplt.c
! 66e833e627034130ed506b06e4a333a0  gcc/ada/sa_messages.adb
! e36ac753cd026907359b1a6c2e334af9  gcc/ada/sa_messages.ads
! e4c2628a4c0ff27764362969bdd534e5  gcc/ada/scans.adb
! 645f9986ca70baeab85453cfbba087f3  gcc/ada/scans.ads
! ca9b836acff1212fafdae6aa390cb20e  gcc/ada/scil_ll.adb
! 293cf51e3cdb0bafdf22e5c16317c121  gcc/ada/scil_ll.ads
! cf98dccb07658f591d1e5a9b57c53948  gcc/ada/scn.adb
! 9fbb0c31d7ebbcb3061d5472b62bae6e  gcc/ada/scn.ads
! cc2c5dd8a03ca4efc4acefd89a588a5f  gcc/ada/scng.adb
! f2236e87d16c2a24352fd58ed5321baa  gcc/ada/scng.ads
! 2da8c40e26c995a1d452136120fd791d  gcc/ada/scos.adb
! b5fa1c7e1cb32ad0d3dd256cb0f4f80b  gcc/ada/scos.ads
! 72a88bddda1882a9d2aadd1fecf679a2  gcc/ada/scos.h
! 245b35cc08f05ebec3044ce5d1e1da66  gcc/ada/sdefault.ads
! 248df603af937bacda4c06a754c0cef9  gcc/ada/seh_init.c
! d7a7f3c2f3f057b6430caf6eb17065cd  gcc/ada/sem.adb
! d438a9237ea0067caf9abd9ef6565343  gcc/ada/sem.ads
! 746c2f64a838ebc8809e58896dfb9965  gcc/ada/sem_aggr.adb
! 77bdf69e7d05f2d9d84a1daa64c1a5a1  gcc/ada/sem_aggr.ads
! acb5c6e133e4fd339718744dd4fbcca8  gcc/ada/sem_attr.adb
! 8da09f4ae2750756773013986e14da43  gcc/ada/sem_attr.ads
! 1ce586272ba1df4a95cddd6cd0193f96  gcc/ada/sem_aux.adb
! 78367c66baadee04cc046c7e3fe8c97a  gcc/ada/sem_aux.ads
! d5457eefa4928094733d677a24cd9ede  gcc/ada/sem_case.adb
! c6a33720c4ba3d00bc583c87518e5980  gcc/ada/sem_case.ads
! 541fa1e90e870fd55821d5928c19bf9e  gcc/ada/sem_cat.adb
! 2ec2ce67ad670b16ba5fde83830ecf4b  gcc/ada/sem_cat.ads
! 35f464f52218ff1d7e723f722acec78d  gcc/ada/sem_ch10.adb
! 3e962239d46fbfa25ae0fcc5020f07da  gcc/ada/sem_ch10.ads
! ed42c53897f76de0362f503d80307e80  gcc/ada/sem_ch11.adb
! bb0e976f657e92ea176df2ab63008e91  gcc/ada/sem_ch11.ads
! ce4d479679ea66c7da2343af5a60a49e  gcc/ada/sem_ch12.adb
! 91261f169581b4c19684a14fd8f96c43  gcc/ada/sem_ch12.ads
! 9d0fa94206ce29b2253df5339d5a6371  gcc/ada/sem_ch13.adb
! 57429f8387d8ff964f77937f5a11948f  gcc/ada/sem_ch13.ads
! 27ecfe93459e591ddf10730f0a7b3a03  gcc/ada/sem_ch2.adb
! 1532aba80d87d1bc3acf3af3432f3a4b  gcc/ada/sem_ch2.ads
! a3022e87d4ef2d68cfeed11704c55f63  gcc/ada/sem_ch3.adb
! bf5181eceb3131edc0ae88d1f8dc4a79  gcc/ada/sem_ch3.ads
! 733edd91473ab94dc3434cdd29561f86  gcc/ada/sem_ch4.adb
! 4736b4b06c9365a93c5b330354906898  gcc/ada/sem_ch4.ads
! 09e4daeba969a6748462b9e1bbab57a0  gcc/ada/sem_ch5.adb
! 46c16fcf70ab4ee9381e47415f3f0213  gcc/ada/sem_ch5.ads
! b2740467e69aeda4fa4556dbbbe6f9e0  gcc/ada/sem_ch6.adb
! 07d1a14dc445352ee7e847bf5f89bbfe  gcc/ada/sem_ch6.ads
! 59570fb86510058b38dd0f68bdbca157  gcc/ada/sem_ch7.adb
! ffc59f9922dde56d8a48ade211773c08  gcc/ada/sem_ch7.ads
! 4d4a218f7a343882e4861941c810c401  gcc/ada/sem_ch8.adb
! e112c8497e7036354ef1b2cc89cd96da  gcc/ada/sem_ch8.ads
! 7044be84153a8f653f0c89adf2b5ef59  gcc/ada/sem_ch9.adb
! cf4cc88f391ca151b5529a9c83def3b2  gcc/ada/sem_ch9.ads
! 09aaeb0525d3ef92fdad3fa3e6349a94  gcc/ada/sem_dim.adb
! f07ebf18aecd0e6816cd6a35fa866a25  gcc/ada/sem_dim.ads
! 85de38bdb60baca51fee970e0024bc2d  gcc/ada/sem_disp.adb
! 2a3aa659e9d799e47d2e000c985de4ee  gcc/ada/sem_disp.ads
! 1f1968ab2e4eec816176de2f10645b95  gcc/ada/sem_dist.adb
! 44a998a6e6d882dba448e7e1aea07980  gcc/ada/sem_dist.ads
! b7a00e7a1fdb0163029620de0b81b433  gcc/ada/sem_elab.adb
! 193df60091e2d9bf06ccbcb309c26b73  gcc/ada/sem_elab.ads
! 02cff59a62200f88860198fccd15f348  gcc/ada/sem_elim.adb
! 945649ada8713dffa86569077bd6a48b  gcc/ada/sem_elim.ads
! ca720fcc36cb5825933df726c2446794  gcc/ada/sem_eval.adb
! 2db809581fa48b6f4d47de434b2df9c6  gcc/ada/sem_eval.ads
! 6c4fda840389713d097602aaf458dc35  gcc/ada/sem_intr.adb
! 87dd282f5584837ad701a97d0bda94f7  gcc/ada/sem_intr.ads
! 7a042eac334274f27f5cec6e4ca137cb  gcc/ada/sem_mech.adb
! 4b4150c9557fa50ca8bdd5d1b30dec58  gcc/ada/sem_mech.ads
! cb7f2932818cf15296c6e54aacfba84a  gcc/ada/sem_prag.adb
! 0a3a4d3df68490e4cafce685685a5a0a  gcc/ada/sem_prag.ads
! 32e9334a0b8113aa45d9a739afda458b  gcc/ada/sem_res.adb
! c18ac43b20949fd32407782bf0f69d90  gcc/ada/sem_res.ads
! ceeb3e67fc14eac0b759a2b189aba489  gcc/ada/sem_scil.adb
! 40313d60f28039ce7a03cc1027ede905  gcc/ada/sem_scil.ads
! 3a3771ead17ccb9a790737ad9a8c9e3a  gcc/ada/sem_smem.adb
! e9e58f2382df8370d57eeb66da51780a  gcc/ada/sem_smem.ads
! 55d2bb5cb99f7dc0d949befd3f434a86  gcc/ada/sem_type.adb
! 21567a7a45be86d3d6dccef9931177bb  gcc/ada/sem_type.ads
! 1b465ac58eddcc2fdb20c4f5dedfa6dd  gcc/ada/sem_util.adb
! d0ceb095c7ac1c341ad054d337cb7324  gcc/ada/sem_util.ads
! 38f3eaf93307c81e701317e7ce9386f9  gcc/ada/sem_warn.adb
! bafeaa174a1c6ddd4ffde2d131230ef4  gcc/ada/sem_warn.ads
! b2fa8ca943a74dfab0f9fda4a36777b8  gcc/ada/set_targ.adb
! ec7527bcf159999f6ddf531db337f1c1  gcc/ada/set_targ.ads
! 5ba95f528a42c888d9dbc7d50676a357  gcc/ada/sfn_scan.adb
! 22f88e6308d1a7832b020dce153f9016  gcc/ada/sfn_scan.ads
! bdb859f07f97cf798c1bb5bc4c8343da  gcc/ada/sigtramp-armdroid.c
! dc241f44674e6d69251a529299329c9d  gcc/ada/sigtramp-ios.c
! 215871eaa846bff6a0c87056ef5e3b40  gcc/ada/sigtramp-qnx.c
  6aea4f4f7077aa5e0b303c43da8d4d8c  gcc/ada/sigtramp-vxworks-target.inc
! 0f110dfe90db19a273bf57d0b2e159d4  gcc/ada/sigtramp-vxworks.c
! bc7b25491246007663bcb55020385a60  gcc/ada/sigtramp.h
! 17e88fafd9cabf8fe887cd81e002d990  gcc/ada/sinfo-cn.adb
! 0ccbe6d74867c2b71aa5ada88190c02f  gcc/ada/sinfo-cn.ads
! defc3b9605e70782de1056aca256424a  gcc/ada/sinfo.adb
! 47c57e9a4349a9d689e7e576aa2ee805  gcc/ada/sinfo.ads
! 2f4d44a3b9d343b6a44cd6a2997ee552  gcc/ada/sinput-c.adb
! f34e0381ce7e25e5579cacbd971a35a1  gcc/ada/sinput-c.ads
! 015bfd21bbe63bb6f6498e8443d98358  gcc/ada/sinput-d.adb
! 649fdd8368acecebad5b6c9fe345fe68  gcc/ada/sinput-d.ads
! 96b89a926a29a13d2d32ebf3e66a5bdb  gcc/ada/sinput-l.adb
! 2def0cb33e7c6f1e9e7e88cff8222652  gcc/ada/sinput-l.ads
! 0db99cc0a644a30a9cfe82a01ce6ea31  gcc/ada/sinput.adb
! 753fdf6f55e0fc3b7a7b47586155ac02  gcc/ada/sinput.ads
! 0c8e1a3fcd1a6eadd1860104776e2e83  gcc/ada/snames.adb-tmpl
! bc59233e946bc6c8c829997a70744397  gcc/ada/snames.ads-tmpl
  1d0f0a946dfb952f009ada43305106dd  gcc/ada/snames.h-tmpl
! 1937d8662d857690e5aa02f18de72fc5  gcc/ada/socket.c
! 0d2519dcd71376ca2eeec3e86512f6a6  gcc/ada/spark_xrefs.adb
! d6ef1b26ac59bad0fbe38c606086dde0  gcc/ada/spark_xrefs.ads
! 2b1786b48a43d72dd5f747c139a1a810  gcc/ada/sprint.adb
! cb7b3868ccdf644f8dcd19ee23b626a8  gcc/ada/sprint.ads
! 3d4ff3bd08d81b3502f1b5cb8b2f354a  gcc/ada/stand.ads
  92510faaca8c15e63e6f22f0b28dbe5f  gcc/ada/standard.ads.h
! 7d2cee302664eee1b142a8ba1de5c1c5  gcc/ada/stringt.adb
! b5e3a52da56366a49830e10d597631f1  gcc/ada/stringt.ads
! cbc3c16849db4f94bd53473dfd063623  gcc/ada/stringt.h
! 85cbebda740b713f94d24c84ea523e56  gcc/ada/style.adb
! 01f6dcb3f211f4a57e4fab5e8b42ef9e  gcc/ada/style.ads
! b7eb137c0fe7f166ce82c50012a3fbb1  gcc/ada/styleg.adb
! e294b26d034b26a5ca605576f3c7c269  gcc/ada/styleg.ads
! 6306efdc8955708d7ad75d02434241a0  gcc/ada/stylesw.adb
! 457351a18ff1f58a26b96ea700be0820  gcc/ada/stylesw.ads
! bf4dca2bfb46a5cc85392de10f5162ca  gcc/ada/switch-b.adb
! 1066379f34f8d9f7aea15b32a7210bfa  gcc/ada/switch-b.ads
! 619ba4d1207121b183a9510f0db0492d  gcc/ada/switch-c.adb
! b8739e5cab3169b1184aa5ffa00b6112  gcc/ada/switch-c.ads
! 612477eafd2d412a197106472d98ca41  gcc/ada/switch-m.adb
! c3bc9bd0dd7695c2435334190f33319e  gcc/ada/switch-m.ads
! 41a5711dfe385cc565c00a4f1ac15e5e  gcc/ada/switch.adb
! 1316160cb399034c8acf7eb0e87078b6  gcc/ada/switch.ads
! e9b617acfb0dd5cdd17ba990f8a8a5b1  gcc/ada/sysdep.c
! 9412b6fb1eeb3fde711ca66c3733980e  gcc/ada/table.adb
! 96a44cac40758e32b651b9210adcbfbf  gcc/ada/table.ads
! ea7e3fc5f73eaf30a216470d1e324e3f  gcc/ada/targext.c
! b0cc3cd6fafb0ea02c2279faa421d296  gcc/ada/targparm.adb
! bd294481530b20a5c62a0edcc5cf28b7  gcc/ada/targparm.ads
! 20136ccafa7576bfb2f09b383f4bd5b0  gcc/ada/tbuild.adb
! b8a378854e8f41322b70c5a488334589  gcc/ada/tbuild.ads
! f022dfd35f21a2dc08e45ec9733c43ec  gcc/ada/tempdir.adb
! 552d6b7517cbbc92ad6bc2f47feb5d19  gcc/ada/tempdir.ads
! 5db9be4ba6b9334639f152d70cda96dc  gcc/ada/terminals.c
! 9f2fa793f2cd355e63f29c5dea9f3ec3  gcc/ada/tracebak.c
! ee0120c8f593c2ce70db7c56064576ee  gcc/ada/treepr.adb
! 178d02bc8d4451dee8e6c753d5e8bb37  gcc/ada/treepr.ads
  b1a12d53199396f327ddecc980e710d1  gcc/ada/treeprs.adt
! 487f9a3d06b66ddce3c9a9f046d6eace  gcc/ada/ttypes.ads
! 55da25c889bc945c4eafd09bd9546d65  gcc/ada/types.adb
! 646b1bec882b16f5a6b64a76e07830b3  gcc/ada/types.ads
! 8b09caaa776bdf1beb42ba0f03323c3b  gcc/ada/types.h
! 6776f957cd89a3e1a932b0fba72506d6  gcc/ada/uintp.adb
! d568026ece2e4f41f6cc6195b7e87825  gcc/ada/uintp.ads
! ddf17011df98af1adc266b55c32f9f24  gcc/ada/uintp.h
! 38860b51d4ec221fa016f2777d58ae55  gcc/ada/uname.adb
! 0bb3b9037a5f67fcbdd700bfe31ff439  gcc/ada/uname.ads
! 11c0c1166d387fd6d04d37cba1876272  gcc/ada/urealp.adb
! fb8e214311c2472a864617824b779d72  gcc/ada/urealp.ads
! 0de0ce04217e34fa1c407c9ae0db32c9  gcc/ada/urealp.h
! 0fe825e817196c1a5b9bcc54cb146376  gcc/ada/usage.adb
! 40d39cffb7448703e4eb150fcf7a3083  gcc/ada/usage.ads
! d11181de0f17da07e3427303fecb8ef1  gcc/ada/validsw.adb
! 11c7b886fbe4fa2d281ddaf1ad2e4639  gcc/ada/validsw.ads
! 39b48dbc0580bc5e241790f61b5e7b21  gcc/ada/vast.adb
! 81ef35f15f179e53f9dc85633b772544  gcc/ada/vast.ads
  49ef8bc97a344f91b927f23054ade642  gcc/ada/vx_stack_info.c
  884e1a54368295893128977447d7e59c  gcc/ada/vxworks-arm-link.spec
  e158d4a4cda56237d4f66dfddc3b9915  gcc/ada/vxworks-e500-link.spec
*************** f972a9a2e32e4d6aa260193203ee6862  gcc/ad
*** 2672,4638 ****
  745188949cd7ff6df266579735782385  gcc/ada/vxworks-smp-ppc-link.spec
  297ba61aeda52a880298da8069891ecc  gcc/ada/vxworks-smp-x86-link.spec
  cf24e76097812a932a26f6600d193208  gcc/ada/vxworks-x86-link.spec
! 4a2a5f64f0c5b5080aee11eb113ad929  gcc/ada/warnsw.adb
! 7c4c33d057778a5f07792d05772fd795  gcc/ada/warnsw.ads
! 1aed02c25eb92221b9e17475bcf4cb50  gcc/ada/widechar.adb
! bc3910a41a91770a3a0e20e17a70f719  gcc/ada/widechar.ads
! 4828592e78577e7df5db506fb1804dae  gcc/ada/xeinfo.adb
! e1ddd6bb8921edf3a2fea24e6279eca3  gcc/ada/xnmake.adb
! e234511f5d129e9bc4876c5be992ffe4  gcc/ada/xoscons.adb
! 884d43deb30aa4aebc9243c344e1b34e  gcc/ada/xr_tabls.adb
! a6617a6b5331fdb03db23cf14b42f795  gcc/ada/xr_tabls.ads
! 11fcb2de8f885d426208728b263f10c1  gcc/ada/xref_lib.adb
! efebe7f5d522403a33b850a24dd9cd07  gcc/ada/xref_lib.ads
! 9850046bbde2ebe6e0ac9359ef601022  gcc/ada/xsinfo.adb
! 98720dde9a297e98960f1ae636982c99  gcc/ada/xsnamest.adb
! 2da8ae65290801fd795b744e8aa2bd91  gcc/ada/xtreeprs.adb
! a6b6cc6fb2c8e1208fd31f2f607a1a77  gcc/ada/xutil.adb
! 33170889e5f8d6d706c9860cc6182beb  gcc/ada/xutil.ads
! bf97b7f8e6545014e1b279ad0d620c83  gcc/addresses.h
! 67d63418585307e6c9257cbabf7057d4  gcc/alias.c
! 21e62ec43c0250de9df4a817cc9a5441  gcc/alias.h
! 08e25cef2848d0514379987946b6ca3a  gcc/align.h
! c7cfb5850156fc8afe634563752d95a3  gcc/alloc-pool.c
! ee7f0ff2bee3fadcdee7a89a27acb71b  gcc/alloc-pool.h
! 65245dc4bdd2968de38d06dda54d7719  gcc/analyzer/ChangeLog
! 77136ce027aa1a848c103c22012f4981  gcc/analyzer/analysis-plan.cc
! 1584264752cd434a0710f577b0dfa611  gcc/analyzer/analysis-plan.h
! 3a2b0d98433a870a9557dfdce96f66a9  gcc/analyzer/analyzer-logging.cc
! d5dd66577f75632b237c6425b063fc70  gcc/analyzer/analyzer-logging.h
! 3a45abe444b0cbc908f81b7171916451  gcc/analyzer/analyzer-pass.cc
! 0bf346b87a1d7c5ea2ca65b456b94e1f  gcc/analyzer/analyzer-selftests.cc
! a9db068d7723994b0c730cc4c114126d  gcc/analyzer/analyzer-selftests.h
! a724860199f34dd0384888c9bed2dd6f  gcc/analyzer/analyzer.cc
! 1b959342d0d88ff015233c463c71d3af  gcc/analyzer/analyzer.h
! ddc2a18939566fe493a667fd5de65bce  gcc/analyzer/analyzer.opt
! 009599458c30a02d77880c9fca8f9bf6  gcc/analyzer/bar-chart.cc
! dc2312e9c0688b1e7fe91d1ca1642ec9  gcc/analyzer/bar-chart.h
! ad2a5b0c1e575604199082414bf08db9  gcc/analyzer/call-string.cc
! 12ef807e7160c64549327d343aca8575  gcc/analyzer/call-string.h
! df6cc9263c939734f7c43c6ca14cabec  gcc/analyzer/checker-path.cc
! 68050292c1f1ead0db0b5e4818d56be7  gcc/analyzer/checker-path.h
! 8cdcda85575ead08a6ded8d3623389f7  gcc/analyzer/constraint-manager.cc
! 2e9fc2943f17345d45c5b9718a7d38be  gcc/analyzer/constraint-manager.h
! 77eb1650ad337da130379830dd247dff  gcc/analyzer/diagnostic-manager.cc
! ad14da94a8b2374492baef2a7d4e9218  gcc/analyzer/diagnostic-manager.h
! f5048af0d25b7dbf974b679448d7f334  gcc/analyzer/engine.cc
! 25f4d3f2aee0d26bd013cef58b940323  gcc/analyzer/engine.h
! 2b48a097a3d636540da8ae5befbcbf75  gcc/analyzer/exploded-graph.h
! c23db6af6fbcd2926ecf94f9c55170e5  gcc/analyzer/function-set.cc
! 82d3a2aaefb35a8b76c5161fac73f58e  gcc/analyzer/function-set.h
! 7eb7c7df565639ebc84b31703b2dc2b1  gcc/analyzer/pending-diagnostic.cc
! 6b6d4eedf515618a6238c08db3e46d07  gcc/analyzer/pending-diagnostic.h
! 1d3a35e2d7800b1db13686446c653847  gcc/analyzer/program-point.cc
! 7eaa95eebbd9676faa9360727bb40392  gcc/analyzer/program-point.h
! 1b0eb541fbf283da791ecc4b1c16ad9d  gcc/analyzer/program-state.cc
! 52bbeaecc53f2e453c11284091caad7a  gcc/analyzer/program-state.h
! 182aa791aea9dc8efb6b996500bc19e4  gcc/analyzer/reachability.h
! 264b908c80a9f940bca0fd7832b55016  gcc/analyzer/region-model.cc
! 3d54daf7447c41a8bd5c75431eb65158  gcc/analyzer/region-model.h
! ed569f88998981c80c84714b03968818  gcc/analyzer/sm-file.cc
! 271af09d320aacd914c7d780bbd5f524  gcc/analyzer/sm-malloc.cc
! 5e16b43c1391105e5763a2ef50ff95e0  gcc/analyzer/sm-malloc.dot
! dde319e2bb571247182c74e50f918de7  gcc/analyzer/sm-pattern-test.cc
! e84a9c62fec7d4cbbfc5837f3b406507  gcc/analyzer/sm-sensitive.cc
! b111c60ee4cc4518690e023bf113d446  gcc/analyzer/sm-signal.cc
! e3ca336c3f82684150519b35ee5504ac  gcc/analyzer/sm-taint.cc
! 09cf4f8a24f9128f63ab681ded26429d  gcc/analyzer/sm.cc
! 53098843a96ac2a02859f0aa2a574ff9  gcc/analyzer/sm.h
! b6d5041d7a0e7d3f106a56b6a693c4c3  gcc/analyzer/state-purge.cc
! d8c9aff92756dfb6bea625ad3991c6f4  gcc/analyzer/state-purge.h
! 7fb862b48294ed6a0179f1e37e83e379  gcc/analyzer/supergraph.cc
! ae73cd9f21809df4536e52b1d362b94e  gcc/analyzer/supergraph.h
! d311c2d7a0c5f301689d9840cec0a20a  gcc/array-traits.h
! 1f43f4cc8bac41ae3b316adce2259e1c  gcc/asan.c
! a2de801369a7f06644ece2df336529f1  gcc/asan.h
! 3c3a488f40039a38b62b0caa467387ae  gcc/attribs.c
! f2cd647934c49497538483a30bc682d0  gcc/attribs.h
! 380139df1e085fcd2d13cf87dbd21d22  gcc/auto-inc-dec.c
! 3641c656279d114724d1f8b58bbcb232  gcc/auto-profile.c
! 99bc5c71d5fb4bf69a5e455f79128f74  gcc/auto-profile.h
! d9b93533583bd6d03ba50eb7ced289ec  gcc/backend.h
! 5f05e2acbb25d4424e645fa90160db40  gcc/basic-block.h
! cf933c0e81e09ddcb384623eb6340d83  gcc/bb-reorder.c
! 18054ed38369e095ba2ef32684fd9dc2  gcc/bb-reorder.h
! f7b5eb17081fd36741c37e2fbae07255  gcc/bitmap.c
! 18c3da3fab8c769aed98aa69a2c72082  gcc/bitmap.h
! aa400898daf96dc45fdd63ffc02e43d9  gcc/brig-builtins.def
! ed34f69f684e0fb02b306082c0df4804  gcc/brig/ChangeLog
! bab627d6443c1a1acc88dda9e6f6e709  gcc/brig/Make-lang.in
! 0b230923a4c2c3af6b4d7ce68c999bb7  gcc/brig/brig-builtins.h
! 774fc3b6756369a6579cac74f64c911f  gcc/brig/brig-c.h
! 800dae4db247215f3b3da6237036b43c  gcc/brig/brig-lang.c
! 73fe36e84d4c0340a70c8b9542eb4d32  gcc/brig/brigfrontend/brig-arg-block-handler.cc
! 995ba8f651eef4d938173d4469a27e97  gcc/brig/brigfrontend/brig-atomic-inst-handler.cc
! bc607ad4f35203fd412c9f158e301ad1  gcc/brig/brigfrontend/brig-basic-inst-handler.cc
! c850a966ce4e815e9ce63c87945e9615  gcc/brig/brigfrontend/brig-branch-inst-handler.cc
! 8cd0a08baed3cc45fe2c0f0907c93b51  gcc/brig/brigfrontend/brig-cmp-inst-handler.cc
! 0f070394e8437f3775b65f9860864546  gcc/brig/brigfrontend/brig-code-entry-handler.cc
! 8bd6cb22c591b64e0b777df2e136fbed  gcc/brig/brigfrontend/brig-code-entry-handler.h
! b722a8cbde520808888104d474ad81d7  gcc/brig/brigfrontend/brig-comment-handler.cc
! 125df1720ef6fea7728c61c64d282cb9  gcc/brig/brigfrontend/brig-control-handler.cc
! 3ed619ddd93853dc8a117e4143c34d36  gcc/brig/brigfrontend/brig-copy-move-inst-handler.cc
! 9161c67056301980bea2c55449099d8d  gcc/brig/brigfrontend/brig-cvt-inst-handler.cc
! 1164acc2d5eea3fdad72ccf29150168e  gcc/brig/brigfrontend/brig-fbarrier-handler.cc
! 90ae46b4e92bbed153348bf2cb09c48f  gcc/brig/brigfrontend/brig-function-handler.cc
! 934b8fa1c04701fbf1d0d1ccb027da6e  gcc/brig/brigfrontend/brig-function.cc
! 4a2be5db9ab37af6f8647ce5bfbac49e  gcc/brig/brigfrontend/brig-function.h
! 62cd894d9d78942937d050dc8ad3e3c4  gcc/brig/brigfrontend/brig-inst-mod-handler.cc
! 94632b6709b7757e0158b2895d5385e0  gcc/brig/brigfrontend/brig-label-handler.cc
! 6ad43bb476672fbe408ca7a959bccaa7  gcc/brig/brigfrontend/brig-lane-inst-handler.cc
! 516eda017823ba26eb4a433a6d6054c4  gcc/brig/brigfrontend/brig-machine.c
! e13e332c831543a30cff1102ed3b2461  gcc/brig/brigfrontend/brig-machine.h
! bfdf68902772fc5a0646b66428fce548  gcc/brig/brigfrontend/brig-mem-inst-handler.cc
! b3c7fb7b39cf397906a18a2e84b7b09e  gcc/brig/brigfrontend/brig-module-handler.cc
! c8da0cf0d7cb4d66970dc188f916b897  gcc/brig/brigfrontend/brig-queue-inst-handler.cc
! 3c5a0ddb760337822f9bbb2f1b9340d8  gcc/brig/brigfrontend/brig-seg-inst-handler.cc
! 94ddeafd83d59bef8cede6a6e4237b3f  gcc/brig/brigfrontend/brig-signal-inst-handler.cc
! 4d0b02274ea7b3240dcc39c9dae2a331  gcc/brig/brigfrontend/brig-to-generic.cc
! 5626915b7bcc14aa908ddf2cc11d85b5  gcc/brig/brigfrontend/brig-to-generic.h
! e8bfb39daddda3b171c93739cfaed638  gcc/brig/brigfrontend/brig-util.cc
! 2a7ae98c76a0d8699cecd4dc587b18d6  gcc/brig/brigfrontend/brig-util.h
! ecbaa2372bfa258fc6fbba44b84f8ac4  gcc/brig/brigfrontend/brig-variable-handler.cc
! 3953cf4d9899a244871a7e4062da5173  gcc/brig/brigfrontend/phsa.h
! 0b0ce060fcb98a514344e22f6cd8181d  gcc/brig/brigspec.c
! 1dc251549b4affbfb25beeee430e56fc  gcc/brig/config-lang.in
! 612120aa92a9add1816850ffbde8ba02  gcc/brig/gccbrig.texi
! df2479761de54ed90a98e54f52fb50a2  gcc/brig/lang-specs.h
! 0d1a99c0e202b680ee608858701de0bf  gcc/brig/lang.opt
! d3b19e5439825080ec7a33d50b0068df  gcc/builtin-attrs.def
! 1be7e27be346b87cc4427d231810a8eb  gcc/builtin-types.def
! 39af395eb5e8f0e621018786a5efa1a7  gcc/builtins.c
! cf87a3e542aeb250ce5b39931e715fcd  gcc/builtins.def
! 2ecd530cb8252acf75726a9febdb44db  gcc/builtins.h
! 2d273c0cde6640f116ab42e8d75efebb  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
! 15beccd0d77567834582c6b0c51fd52a  gcc/c-family/c-ada-spec.c
! 5dc1afd075cf7eaa7849b1835aaf5151  gcc/c-family/c-ada-spec.h
! 9d64ecd919e42f1fb8fedbf776b6a3bb  gcc/c-family/c-attribs.c
! dbc3d1748796211da2be3ed9246d95dc  gcc/c-family/c-common.c
! 0c8a813eb65969867173b24c30327a76  gcc/c-family/c-common.def
! ef53645c9103d1b6ceaf102c3a883946  gcc/c-family/c-common.h
! d5f855d41dfcb98f0d6feb33202debad  gcc/c-family/c-cppbuiltin.c
! b79b7e60921422fbe6b099c267a8cf52  gcc/c-family/c-dump.c
! 93fc5c809f8ae4f1e90ecc39eeb9d378  gcc/c-family/c-format.c
! dada291f8df85c8b57a6d964ee4dba81  gcc/c-family/c-format.h
! d530c6ebfb68d3bd9fe3c35dd52a29d7  gcc/c-family/c-gimplify.c
! 958b4deab80e792fca27197e2187dbbc  gcc/c-family/c-indentation.c
! db7fa238fdc72d487e426feaa3986e9c  gcc/c-family/c-indentation.h
! dcd39370d6f1e36700fef1b5aa18a096  gcc/c-family/c-lex.c
! 6063463a86506d7e2ef869a98478b588  gcc/c-family/c-objc.h
! 4230105f5bdf4fc4760fb9e8d1ac0863  gcc/c-family/c-omp.c
! dc0ceb545e76ba6be4ab18e365d2a467  gcc/c-family/c-opts.c
! 7e0fb03255a370797142bf7ded619da2  gcc/c-family/c-pch.c
! e1dcf5091ff72788ca64e5879a09caf8  gcc/c-family/c-ppoutput.c
! 988cf6886387da459232d5f37b6b867f  gcc/c-family/c-pragma.c
! fa1be6f6dcbcb409cda3c0635b5cb544  gcc/c-family/c-pragma.h
! b48e4f4276a795639cb4b315ca84ae6f  gcc/c-family/c-pretty-print.c
! dafd8acb0fa10050cb72c333378a1c45  gcc/c-family/c-pretty-print.h
! a8bdd9b65b2cc27b05b145cdad985c83  gcc/c-family/c-semantics.c
! fc14322847441cb3667440bc87da3b52  gcc/c-family/c-spellcheck.cc
! 73f88e454f57a4152d206cee8eb9acce  gcc/c-family/c-spellcheck.h
! bfd80d2148106bac1d05ea7c2b9411eb  gcc/c-family/c-target-def.h
! 7242045cebb1e11387757265413d5251  gcc/c-family/c-target.def
! 2aa125b135889f7a2184e6c67397c8cb  gcc/c-family/c-target.h
! 59363b5de50fde85b78b236a80a4893b  gcc/c-family/c-ubsan.c
! 7cf91a9589ce350e33ba2b47bb1a325f  gcc/c-family/c-ubsan.h
! b5aa19bfc98083c8db4be815299238ea  gcc/c-family/c-warn.c
! a963b4151ab066656972c16278375da4  gcc/c-family/c.opt
! b43dece1279b57c11814d52a65e6b6ea  gcc/c-family/cppspec.c
! 5c832c1af744d342632adae122b0c3ab  gcc/c-family/known-headers.cc
! 01877474441e3959ec1e408406d4474a  gcc/c-family/known-headers.h
! 9a481669d5130c0d3aa82564914e7783  gcc/c-family/name-hint.h
! 69c44b7782ac83e39c309f89d6ba0a6f  gcc/c-family/stub-objc.c
! 77c7830a77f93ba8796cb41bcf4a4548  gcc/c/ChangeLog
! f6929faadb53d5b9422199d45077f288  gcc/c/Make-lang.in
! 126762639055b3b1b86e5d430aa07db1  gcc/c/c-aux-info.c
! e377a3eb832170e8484be76c63e35536  gcc/c/c-convert.c
! ceb1f485ef013cc700cf829f7d1dd7f9  gcc/c/c-decl.c
! 84043724eb03cdccb58873ba5e72c627  gcc/c/c-errors.c
! fb944462a2b56d967e6c2f3f2b311b11  gcc/c/c-fold.c
! 51b96bbd5befe77d593248445375d28d  gcc/c/c-lang.c
! 8ff8157204a8c00a98837c8c608eb8d3  gcc/c/c-lang.h
! a923e8ff4b2e324962750726e86ee483  gcc/c/c-objc-common.c
! b99037c5342efcb88c484e69767809b8  gcc/c/c-objc-common.h
! 06eca7c426692b5b4cb8ebc2fb08cb07  gcc/c/c-parser.c
! 4e3cefb76c65add787d87d68751b1a07  gcc/c/c-parser.h
! e9fc075c7931d694d1792d63eec30240  gcc/c/c-tree.h
! bf3dd86a36be51350b5ddc9bef9daa25  gcc/c/c-typeck.c
! c775f0b0fdab664f9af6d91c50d00bf1  gcc/c/config-lang.in
! 315c046f9a968d163b235879526db9de  gcc/c/gccspec.c
! 810ad966d180268d4d993296f973dd2a  gcc/c/gimple-parser.c
! 14ec0e320953e78f33b5863e1d79bb0c  gcc/c/gimple-parser.h
! fc827b1145fd3f0f9d5f7691bea63571  gcc/caller-save.c
! a6cdfb74ba62f020cdefaf687e2aa4b3  gcc/calls.c
! 592265a096667e0fa1b552ddabd549bd  gcc/calls.h
! 2b01edc68142ede17ac6323f22684799  gcc/ccmp.c
! 3ac7219b3911f5bcce4b246f7c388dcd  gcc/ccmp.h
! fc3b0da18c77e1bbc7e30a024af08ce7  gcc/cfg-flags.def
! ca842079779fd4ad57902f8f2c010008  gcc/cfg.c
! 82eb42382bd27f495e40808042cf77c9  gcc/cfg.h
! d7f9dff245907f699d68bdae5b50942c  gcc/cfganal.c
! 3afbd3e45b380b7210cbe10bf189399e  gcc/cfganal.h
! 7545937c02f6a985cafd1ad68106530a  gcc/cfgbuild.c
! 4ff5cc9e540613e104f270326dd30463  gcc/cfgbuild.h
! 9d2b81afe3b70f5c45d0a35f5d5b8cd8  gcc/cfgcleanup.c
! 18ca8e6def454559f2c04130a898ff21  gcc/cfgcleanup.h
! 6a2fc4f83cfcf5116d7783e763aa9283  gcc/cfgexpand.c
! 9efa3c99ef3749b3e429ee43c39e044f  gcc/cfgexpand.h
! b047418dcd01aa64f4e5150cec60e3de  gcc/cfghooks.c
! 0e2763c31f3c0575f4e5a386b4c571e0  gcc/cfghooks.h
! 10c217fa3fab09cb893c1dfab90f3b7e  gcc/cfgloop.c
! f053e5c7a3ba9334215470ab73217ce8  gcc/cfgloop.h
! 60932be4031375e83f13149bedb7d3f8  gcc/cfgloopanal.c
! c314ec0b1f1597f8e9f5c3f4e1dc0024  gcc/cfgloopmanip.c
! 6a4905a41957ce68c581d825ff73ae29  gcc/cfgloopmanip.h
! 9bfda4c07dc238fade6af611fc74b6e1  gcc/cfgrtl.c
! ec3e0c9cceed5cde000334a220d1fb2a  gcc/cfgrtl.h
! fde53137ba6eba2024e5c18c0b6cf126  gcc/cgraph.c
! 05f66df4f4ad23469d802fc5ff9e9407  gcc/cgraph.h
! 021c740e1daa2bdafc9ab317291049c2  gcc/cgraphbuild.c
! 4537dcaa864e307b8fc8c03fa97b7691  gcc/cgraphclones.c
! c8a675e59007c17716a525659fa4904d  gcc/cgraphunit.c
! 5a7eddec9678673e57d3a69ff6af685a  gcc/cif-code.def
! 5595308078fee082f4fe05d41d158b04  gcc/collect-utils.c
! d0e4b33a4a5624ecb4ca454449ef852e  gcc/collect-utils.h
! 0fc4bd5d5c5774e66988336e4b5da75d  gcc/collect2-aix.c
! 3f91bd4f770d3a36dc9dcc035a254573  gcc/collect2-aix.h
! 8cacc548fc8207796259da09c278b50f  gcc/collect2.c
! 416d4b94dd438f73c5d439f42105f2a3  gcc/collect2.h
! 1d67c810e859fc4af8b450c90ce93a11  gcc/color-macros.h
! b538ae3d0d86d85d58477d0cc2edbf19  gcc/combine-stack-adj.c
! 673b8f0c699c4719a259bfe1b233dcf7  gcc/combine.c
! 6942b61cb20a34ce213644d097e91820  gcc/common.md
! b78ea8df7546699f60269afaca5aae97  gcc/common.opt
! 97a5a84c9ace6b2ba5208d4acb473e94  gcc/common/common-target-def.h
! 12f036eba1ec1a240794559320929b8f  gcc/common/common-target.def
! d6b300b0e8835cc8196e8e5bf7b72075  gcc/common/common-target.h
! 7efabd3b58700394ffbb74779f18f099  gcc/common/common-targhooks.c
! b3d591cea0deadd38b0d7aeb3fc223bb  gcc/common/common-targhooks.h
! dd0800ae529a87b856ad6cab3b19894a  gcc/common/config/aarch64/aarch64-common.c
! 69cef0f9f5ee9931e966f2907b72f942  gcc/common/config/alpha/alpha-common.c
! 3a7a42cf8770939ad560368ce7b5ceed  gcc/common/config/arc/arc-common.c
! 0da8bb3da220f3915665f639ee92f902  gcc/common/config/arm/arm-common.c
! fc68d6ea70f63c48c9421e38883a1c7c  gcc/common/config/avr/avr-common.c
! bdfa0d893200599659fd8a98eb7915d5  gcc/common/config/bfin/bfin-common.c
! 371d7275ed8bc3b616ce7f3607c77bec  gcc/common/config/bpf/bpf-common.c
! 58b63f092615f42b2d1638cc1016a59c  gcc/common/config/c6x/c6x-common.c
! 524ca2a30881af8073830d8b9447567c  gcc/common/config/cr16/cr16-common.c
! bbc09fe8443e2608762326f3ce48ee75  gcc/common/config/cris/cris-common.c
! 33d041537809ad0bfb69f69916e26721  gcc/common/config/csky/csky-common.c
! 668b0b5acbb26d02e227528b7caac163  gcc/common/config/default-common.c
! b998e3e42e990e538681c8211c40adb4  gcc/common/config/epiphany/epiphany-common.c
! 1a02b9007e1d3b80641f228466e80f23  gcc/common/config/fr30/fr30-common.c
! 416f97ef53ec9c1437b08b2e0d1bfc7c  gcc/common/config/frv/frv-common.c
! 93f9752c019903aa3b88af20d312a32a  gcc/common/config/gcn/gcn-common.c
! f7b07b42faba07a6cd967478fb57b40c  gcc/common/config/h8300/h8300-common.c
! 62f27ccd6014a10fcac9f9005b1a412a  gcc/common/config/i386/i386-common.c
! 20f4d3f57481017d067c7437791054b3  gcc/common/config/i386/i386-cpuinfo.h
! f40a01d16708a5237ad64c2b1ee4ff00  gcc/common/config/ia64/ia64-common.c
! f9d2c3ee53d7c99a280e6f1442754992  gcc/common/config/iq2000/iq2000-common.c
! 12a26ad3144eb29c818970dba1363281  gcc/common/config/lm32/lm32-common.c
! ceb87882a6f130b91077790e817cecc8  gcc/common/config/m32r/m32r-common.c
! 968a8a14c29a92e48385fdc1dd4ea4a4  gcc/common/config/m68k/m68k-common.c
! e901c540523840b201568ff99671502e  gcc/common/config/mcore/mcore-common.c
! 9232ae64ac72cf56fa0911cd5e4fdbda  gcc/common/config/microblaze/microblaze-common.c
! a9dc31f9120afd4405eff675a022c54f  gcc/common/config/mips/mips-common.c
! 6b7297a4e167bbbec970f5de0df51224  gcc/common/config/mmix/mmix-common.c
! d3c7d390559b3c03fed53fdbe8e7bdf2  gcc/common/config/mn10300/mn10300-common.c
! ef79a3b7417f752740b343c917da45ab  gcc/common/config/msp430/msp430-common.c
! d8d0ac110f35576653f5479029231d73  gcc/common/config/nds32/nds32-common.c
! 4f9c6e249ed80c33cb24658680f46ce8  gcc/common/config/nios2/nios2-common.c
! 874942c6872245ab78e7c9e46b30a97b  gcc/common/config/nvptx/nvptx-common.c
! d557d88fd9fd5e9f4ee0e79ee00a2c9c  gcc/common/config/or1k/or1k-common.c
! b6ac968b98e4025b822753e1d568a650  gcc/common/config/pa/pa-common.c
! fb62a9b3bd5b370edeb53b5722c08a17  gcc/common/config/pdp11/pdp11-common.c
! 5f5ebca1101d7c14bcf4b39f4d08c6ca  gcc/common/config/pru/pru-common.c
! 8fcf8800dae6a18e3535975bc489da02  gcc/common/config/riscv/riscv-common.c
! 68af3357a3201fae75f3a4613db17877  gcc/common/config/rs6000/rs6000-common.c
! f2d6be4c91da71f813cebba7847fa462  gcc/common/config/rx/rx-common.c
! b8299275a430cfc7d3c9822664ba8ecc  gcc/common/config/s390/s390-common.c
! 7209d5f2e143a86964d99d93b3924d41  gcc/common/config/sh/sh-common.c
! 29d978138a43d673f27cc3e1ba5a7765  gcc/common/config/sparc/sparc-common.c
! 05e869eef74e61010f211bcf6132a152  gcc/common/config/tilegx/tilegx-common.c
! ebea9f0e03be4bc789e729bca9f2ebbf  gcc/common/config/tilepro/tilepro-common.c
! aad89abcdfd00e98c523bb0bba5100d7  gcc/common/config/v850/v850-common.c
! a7efe97f99223d6c668047665025b53e  gcc/common/config/vax/vax-common.c
! 664502d896632f83594e8c578d3392ff  gcc/common/config/visium/visium-common.c
! 901e4dd01d8496ecd6427045eedc92f3  gcc/common/config/xstormy16/xstormy16-common.c
! f6304e65f3c00a6a7aee195a39898f89  gcc/common/config/xtensa/xtensa-common.c
! 8763e6612b3f349cca760cdd8226cddd  gcc/compare-elim.c
! eab0d30a85465c8dfc86d5de1b6fbeb0  gcc/conditions.h
! c8cbeab9205c5362586933dd45dc115e  gcc/config.build
! 9bc1f370951145b7e1e1aec4c2987db1  gcc/config.gcc
! a0c075b392f11951c415335bdf967308  gcc/config.host
! 73178c94b78d70a1e76cc4ba6a1f728d  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
! e100e878ef9a128dbaa8fac0c0a00e15  gcc/config/aarch64/aarch64-arches.def
! 4e5ea11ae0bcae19b0b2e529ad5e6580  gcc/config/aarch64/aarch64-bti-insert.c
! 1e3e6b0b4deb9c4d7ba78b9ec8c7947e  gcc/config/aarch64/aarch64-builtins.c
! bebc910ea9166916d8b120860ae862a1  gcc/config/aarch64/aarch64-c.c
! 96b4a93528a81ef7ed4bbc138e10a4b0  gcc/config/aarch64/aarch64-cores.def
! 5c8cd25f4a4e8d19df2bff7cb2aafce7  gcc/config/aarch64/aarch64-cost-tables.h
! fadf3865cbccee62906724ea36f6575a  gcc/config/aarch64/aarch64-d.c
! c8996ccf16af2d4d91b72e3d4cc4cdf7  gcc/config/aarch64/aarch64-elf-raw.h
! f6e31a2ec81adfc19e0d3eb53fa70a1f  gcc/config/aarch64/aarch64-elf.h
! db5bb876150a15c836d4eaf710b1d33e  gcc/config/aarch64/aarch64-errata.h
! 34627774713402fda34d84355eb62270  gcc/config/aarch64/aarch64-freebsd.h
! 691ea9b94d448180137f9ec4f4157d08  gcc/config/aarch64/aarch64-fusion-pairs.def
! cb7effd6ac34216caf447046a224313f  gcc/config/aarch64/aarch64-ldpstp.md
! b9299f9c6d12537de258874dbfe343b6  gcc/config/aarch64/aarch64-linux.h
! 08bc178160775bbbd8fccc9c2347c8bd  gcc/config/aarch64/aarch64-modes.def
! c97840e68a2ac3eb338dc9997e7112d1  gcc/config/aarch64/aarch64-netbsd.h
! 1bac6726009e0fb8452d559c3dd88e26  gcc/config/aarch64/aarch64-option-extensions.def
! fd4267a19928f12195f70461bd5c06c4  gcc/config/aarch64/aarch64-opts.h
! 2d3c997a76ea54fd838b69085e0a560b  gcc/config/aarch64/aarch64-passes.def
! 35c2d2917b19276ad43af57a1983616f  gcc/config/aarch64/aarch64-protos.h
! 2e263bfa2bd1fea303c37b04ce63eb60  gcc/config/aarch64/aarch64-simd-builtin-types.def
! e861473941caf234c01ffa1712e67f68  gcc/config/aarch64/aarch64-simd-builtins.def
! f751afb71478b99261aa2566a170aa7c  gcc/config/aarch64/aarch64-simd.md
! effa2b4283bd899d74c40c2d2a83e79b  gcc/config/aarch64/aarch64-speculation.cc
! 191b10e29119e1fe80e00715be2780bb  gcc/config/aarch64/aarch64-sve-builtins-base.cc
! 8702c0c25fe5558a8c9f5dff4ad8a40d  gcc/config/aarch64/aarch64-sve-builtins-base.def
! a997446b74efbc16ebb8bf971be3a128  gcc/config/aarch64/aarch64-sve-builtins-base.h
! d1d1cacfde0bcd29053297bb5793b2b5  gcc/config/aarch64/aarch64-sve-builtins-functions.h
! a409ea2b8da22d105a9b010e79d28598  gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
! c94e53bffc6998ca046cd74f9e425e17  gcc/config/aarch64/aarch64-sve-builtins-shapes.h
! 0b43387d6c0d3a042a0a37a8037fae22  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
! 618643b7c84a6de14467802d82a5d2c2  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
! 825f04b0d5062963df3bbc66157d46d3  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
! 06c001bfb0fd04ddd3b534d4ffd1fc46  gcc/config/aarch64/aarch64-sve-builtins.cc
! abe33f03faf6cbe321c71fda2b57c71f  gcc/config/aarch64/aarch64-sve-builtins.def
! dec3b249c63675f5a0bcf80607264444  gcc/config/aarch64/aarch64-sve-builtins.h
! ada29bda03f7e55225f38d78867e08ae  gcc/config/aarch64/aarch64-sve.md
! 58533c161280fb74a5faa1e7075cbe1c  gcc/config/aarch64/aarch64-sve2.md
! 72a48135e1a40c91713b6d233fddd0ab  gcc/config/aarch64/aarch64-tune.md
! 9be3f2134bfe0325d95ce4a8e484c851  gcc/config/aarch64/aarch64-tuning-flags.def
! 284de9008114b29d2b3367a8907cabc9  gcc/config/aarch64/aarch64-vxworks.h
! 4c2994742844ebb740bafccaefbbce5e  gcc/config/aarch64/aarch64.c
! 77a28f34959cb9ea2609b78316480192  gcc/config/aarch64/aarch64.h
! ca51a2e111a02e923a268d101371e8bb  gcc/config/aarch64/aarch64.md
! 6c72acb73d060e176a5b91a92c729680  gcc/config/aarch64/aarch64.opt
! 50f832b6b6b6912cdbcecf928e8bd3de  gcc/config/aarch64/arm_acle.h
! beb001d25963acd80ffd85765795da0f  gcc/config/aarch64/arm_bf16.h
! e105f2c10d69091faa6afff1d24a2055  gcc/config/aarch64/arm_fp16.h
! ff5515782bebfacde1bf17e778e04041  gcc/config/aarch64/arm_neon.h
! 97c5b822218331a1f7a909d46ebaa70e  gcc/config/aarch64/arm_sve.h
! 8fe0cd83d00b400f8c3958eeb09b9a7c  gcc/config/aarch64/atomics.md
! 41e1078f5e43cdccd458276f86672c4a  gcc/config/aarch64/biarchilp32.h
! 471db9bdb42726f9e3088620822281cc  gcc/config/aarch64/biarchlp64.h
! 60c2456961e828947f52d5537ffe1906  gcc/config/aarch64/check-sve-md.awk
! dc0d348fb5cf5bdc3d8ec360ccd3845e  gcc/config/aarch64/constraints.md
! 9f627aa983d4d8c1e657bc80da0f60b6  gcc/config/aarch64/cortex-a57-fma-steering.c
! 652344702d20655bb320d62fe6a88de8  gcc/config/aarch64/driver-aarch64.c
! 6a676d12724ddaa2ac94f19291b424e6  gcc/config/aarch64/falkor-tag-collision-avoidance.c
! 792daee1b1c6682c2179f76a7c1f0966  gcc/config/aarch64/falkor.md
! e34211047f88b2c15a2d06ed84d68cb2  gcc/config/aarch64/geniterators.sh
! df0891baf7b5b4a6518824ae9bc70a4e  gcc/config/aarch64/gentune.sh
! bc12ae82223ebf794872cc3ca32f1fe0  gcc/config/aarch64/iterators.md
! 52269092b238bd0fa24fc117eda7723a  gcc/config/aarch64/predicates.md
! 6e7d185b76922a87ae30f2ff6904d3e0  gcc/config/aarch64/rtems.h
! f9247c06e620b0ace1c5a3e9d3bb9000  gcc/config/aarch64/saphira.md
! 0af55a5bd9fbf8e1acd6e1f187faf4b3  gcc/config/aarch64/t-aarch64
! ef72de63b2998cc5e591e9892d9654e3  gcc/config/aarch64/t-aarch64-freebsd
! 4313677a37d107f8084b9e50eaf93a52  gcc/config/aarch64/t-aarch64-linux
! ef72de63b2998cc5e591e9892d9654e3  gcc/config/aarch64/t-aarch64-netbsd
! e466d3d2b28e283c4297c02d9462149a  gcc/config/aarch64/t-aarch64-vxworks
! 9f999907d7f4fd3aa868e4f4e1cb8755  gcc/config/aarch64/thunderx.md
! 3dc77330e34e50f0b497ad41d516fbe2  gcc/config/aarch64/thunderx2t99.md
! db564cb2c0bc4b2857f5ebf9d38cd02e  gcc/config/aarch64/thunderx3t110.md
! 5201d59f925841440f30e45d1f2f8198  gcc/config/aarch64/tsv110.md
  8b41b511cae4a5eda35cf19755875d5a  gcc/config/aarch64/x-aarch64
! e9e4d81fc187a540c984a3ce5dc325bc  gcc/config/alpha/alpha-modes.def
! 026f7d9567ff45cd1b720c805c4166ab  gcc/config/alpha/alpha-passes.def
! 88126bcdf887c8ba5e84bd1fb0030c6e  gcc/config/alpha/alpha-protos.h
! 483023decd301796d70d7c031333b6d2  gcc/config/alpha/alpha.c
! 060573fbeb69cb096ba9000df08c9fa5  gcc/config/alpha/alpha.h
! 3d507b04ba3ecd3a41f026d0a54249c7  gcc/config/alpha/alpha.md
! d2a1e933711cdd89259088df02f012e0  gcc/config/alpha/alpha.opt
! 7308c8f6335b9787e51f586d69eba6bb  gcc/config/alpha/constraints.md
! b89f73a9c09d3ae0c2102ac2330c9f0c  gcc/config/alpha/driver-alpha.c
! 8b496a97d747b2fc282727956439a44b  gcc/config/alpha/elf.h
! 299ed6183ec12328d99c153093498919  gcc/config/alpha/elf.opt
! 779d80cf99722c3d0c2b1eb7ca6632e3  gcc/config/alpha/ev4.md
! b149a535086d9346d88c7a31def27955  gcc/config/alpha/ev5.md
! 6ef0f265f9771e296aa49fc5694fad8d  gcc/config/alpha/ev6.md
! 5ab4c9b093a15c9811b166e04eb1d5d8  gcc/config/alpha/linux-elf.h
! 229e81f868f9fd46ce05edec19b436a8  gcc/config/alpha/linux.h
! 2c7d85d1854f3ccb6075c8f45f77b740  gcc/config/alpha/netbsd.h
! 49168da0a23eee108e35470931009c0b  gcc/config/alpha/openbsd.h
! 5b7688b6f977e836e4a0896560486864  gcc/config/alpha/predicates.md
! 3d6b45b2619e2eb84efbedefd90cbd02  gcc/config/alpha/sync.md
! 876cc7f2b8c4b063798dfbf3c09de3db  gcc/config/alpha/t-alpha
  6e8dd648b9668f18b1dfd9f1203c9885  gcc/config/alpha/t-linux
! 52af44f92112c7d19fb1347001bc1223  gcc/config/alpha/t-vms
! 4cf7d7d6f343d668d5045253b6907c8c  gcc/config/alpha/vms.h
  1fd9a45b4f2b1e546182ce0fe35ac6d1  gcc/config/alpha/x-alpha
! 43836499de93ca4e71896d3991072283  gcc/config/arc/arc-arch.h
! 0ed13ffcbc84e25b995fd652230c6033  gcc/config/arc/arc-arches.def
! b535a7c0c52e9d13ef9e032111ca9416  gcc/config/arc/arc-c.c
! 7eff6e437cfedc87c0d38355ba6a9fbe  gcc/config/arc/arc-c.def
! 125cc35e19c77151de4d88a9df302c0c  gcc/config/arc/arc-cpus.def
! 952f84afe84257e01b109573de6b56f4  gcc/config/arc/arc-modes.def
! 4602cff8d5036a2b8fe4809c3ea8e33f  gcc/config/arc/arc-options.def
! 26b1e22a57116340ca0cd9fff3d54986  gcc/config/arc/arc-opts.h
! 00f8dc1493acfa61d26fa3cf749de48b  gcc/config/arc/arc-passes.def
! 58aea3f2b89da7b7222753ff13646b94  gcc/config/arc/arc-protos.h
! ce8b04500f309a047d2c7cc286be1d8a  gcc/config/arc/arc-simd.h
! 3c0faca04253158bd505c9849c0ffd51  gcc/config/arc/arc-tables.opt
! 4d928bd234be83dee16460110fbeaff3  gcc/config/arc/arc.c
! 77ad06e21ac35841c776ae6005db3dd2  gcc/config/arc/arc.h
! 9889a23f803be351cbd31032300871dc  gcc/config/arc/arc.md
! 2ea068e26704c415f7787d38311ecc93  gcc/config/arc/arc.opt
! fc26fae5989a14e52969e15e7d7b919d  gcc/config/arc/arc600.md
! cc894752fed7c92700fb35ca1391ca02  gcc/config/arc/arc700.md
! 5b22302213b3eaf49aff4feadeacdd8f  gcc/config/arc/arcEM.md
! 9a1f6342e53fc290ddf80d28fac14502  gcc/config/arc/arcHS.md
! f58b4b903ab6ad67974701df5446fdd7  gcc/config/arc/arcHS4x.md
! 8c0881da9e0300c3b11963b6a8a10b40  gcc/config/arc/atomic.md
! fba6b1af4002454bef6ebb16a74cfaa8  gcc/config/arc/big.h
! 06a70eecaaea3ca95e3f966a0229f59a  gcc/config/arc/builtins.def
! 225c1530898c81b9f98502ee62e5da97  gcc/config/arc/constraints.md
! e702d06e0fabae5a39c6b806c33558c1  gcc/config/arc/driver-arc.c
! a745d488230f034d75facec41fa09c43  gcc/config/arc/elf.h
  255d583e6d23d9cbed1614263d159a1b  gcc/config/arc/fpu.md
! 1cf19daf3f01d592a4a3941c8fe03565  gcc/config/arc/fpx.md
! 2eb56e0bea9144cfc2c19be8a757563c  gcc/config/arc/genmultilib.awk
! 3b5b0281e2e198701c379ba17890c7ce  gcc/config/arc/genoptions.awk
! 5058ba81bf1f6486ce49193b3a45aef6  gcc/config/arc/linux.h
! c30925a6f7f735763d4a0e03ed8df5ca  gcc/config/arc/predicates.md
! dbddd46d9ee51d84666b2db2edbb9e7c  gcc/config/arc/simdext.md
! eea4261516ee4ede23b1abadbc61af4b  gcc/config/arc/t-arc
! 40f14b0300dfed18304f44c2acaad734  gcc/config/arc/t-multilib
! 99260321d6ee626152e5db70503512db  gcc/config/arc/t-multilib-linux
! 1e169539985fa7b6e024dacda2c36225  gcc/config/arm/README-interworking
! 2842eea7cfaf9b7b6ea2e445d27cc205  gcc/config/arm/aarch-common-protos.h
! 3d8ba2aaee00973800016a36cd75656b  gcc/config/arm/aarch-common.c
! ee3c42e137c21bc92c7ac820b6fa3da6  gcc/config/arm/aarch-cost-tables.h
! 789272e082287ba7b243d2a476de4ff8  gcc/config/arm/aout.h
! db9303cf7fad69237031669a87f71c28  gcc/config/arm/arm-builtins.c
! 26b09ae8b9e7598fbdda3b4070bf9a6f  gcc/config/arm/arm-builtins.h
! cdfd6c5f642db3d9054b353436d07ff8  gcc/config/arm/arm-c.c
! d9a8150d31a0cc8008477c8483084110  gcc/config/arm/arm-cpus.in
! 906952c37687a5d171b557b157fef801  gcc/config/arm/arm-d.c
! f727e7f536ad470bb7174f2d00c1d383  gcc/config/arm/arm-fixed.md
! 319f20a9f136e727e3c101d606625902  gcc/config/arm/arm-flags.h
! 1c1a771b85355c38e023d6b54ea65f13  gcc/config/arm/arm-generic.md
! 39ccfe33ac81fb206aaf667df7b2c117  gcc/config/arm/arm-ldmstm.ml
! 043e53fa28fccc5766c5e2523369b020  gcc/config/arm/arm-modes.def
! 631077b70ffe49ffbd25cf0e6b76f611  gcc/config/arm/arm-opts.h
! 73cb023a7d434999e1423b3ee0206e84  gcc/config/arm/arm-protos.h
! 44622fc33fd2523937cfce491e279b46  gcc/config/arm/arm-simd-builtin-types.def
! 7e18ceffae1d853688d966ae433bc04d  gcc/config/arm/arm-tables.opt
! 69c3eacb08d45fb05967f4ec97e26170  gcc/config/arm/arm-tune.md
! fce45d3dcc0eec528c176bbad30a818e  gcc/config/arm/arm.c
! c935b17c9f16b1795ba5758c23e393b6  gcc/config/arm/arm.h
! 62d9c49aa28a593dec35aa169af5f7eb  gcc/config/arm/arm.md
! b3218434aa9744c269bbbc5820567f78  gcc/config/arm/arm.opt
! 92534062d244959bdcd18adc5d185c7f  gcc/config/arm/arm1020e.md
! d314474c68aa5c3ecc398062a2d4045e  gcc/config/arm/arm1026ejs.md
! f741dee0384ab03d7bb6e6805d83abd2  gcc/config/arm/arm1136jfs.md
! 1f7a44a5d9b7adde781b88f8e697fd98  gcc/config/arm/arm926ejs.md
! 97f684ea9cc3cbdd22f7900c4939743b  gcc/config/arm/arm_acle.h
! 0dc905b6489beef7ad46154782b1fe55  gcc/config/arm/arm_acle_builtins.def
! 1a32b6ba8dac586e316fb105c6ecd1d2  gcc/config/arm/arm_bf16.h
! f9fb2d4803a2675c9141c038ebb45808  gcc/config/arm/arm_cde.h
! 8de388e84807fa4a309ab2274386319b  gcc/config/arm/arm_cde_builtins.def
! faee14128e82903dd6092173e3fcda2d  gcc/config/arm/arm_cmse.h
! 121941743291dc22afc42381af34d1dd  gcc/config/arm/arm_fp16.h
! 2cca29152859ba7ddb7f3324bcbde3f8  gcc/config/arm/arm_mve.h
! fca7fa83ea32e5c25ed4df1608b90520  gcc/config/arm/arm_mve_builtins.def
! 14d3d18506f5715a0f1e4a2f35fa7b55  gcc/config/arm/arm_mve_types.h
! ca8113ea8aec0fb1e308327bddfc0512  gcc/config/arm/arm_neon.h
! 6e9160c8ea200eef24f7ecf505c55fbf  gcc/config/arm/arm_neon_builtins.def
! ac32751c0e64efbced83f35b83d8f829  gcc/config/arm/arm_vfp_builtins.def
! 965387e42581ad985b174ae130bb53cb  gcc/config/arm/bpabi.h
! 8bb1c17ec8080e1b63d856b81ee5f752  gcc/config/arm/constraints.md
! 803892c32478210901283c70f9a3b15c  gcc/config/arm/cortex-a15-neon.md
! f06e9583683aaf040494b47380ea3ca3  gcc/config/arm/cortex-a15.md
! a66392967adef19618efc84ae6ee6dd2  gcc/config/arm/cortex-a17-neon.md
! 53ba8ef9c500db5fecc9e7d5bea1321c  gcc/config/arm/cortex-a17.md
! 57efde358fd2f2856abdceadca732935  gcc/config/arm/cortex-a5.md
! 2c3e0390f0ecaa20bcfc56763a14908f  gcc/config/arm/cortex-a53.md
! 39bd52b399f6f893519b32cb1e43422b  gcc/config/arm/cortex-a57.md
! a54fe80d3aa4b89eff3f1ef162256c52  gcc/config/arm/cortex-a7.md
! 3ceeccc88180deed4165f20f19edc5c3  gcc/config/arm/cortex-a8-neon.md
! 82f394ffbe2aa8de0a64902b62bcc0b5  gcc/config/arm/cortex-a8.md
! 9c449e8465665a16e789e18cc238a0c3  gcc/config/arm/cortex-a9-neon.md
! aa76fda6ef74f7d2592384fff1dadbbb  gcc/config/arm/cortex-a9.md
! 62e1c1ebd73b644ce67e2d25b340e82f  gcc/config/arm/cortex-m4-fpu.md
! acb8b5b1f9da674cd0ddb0451f59709c  gcc/config/arm/cortex-m4.md
! 8e5bd2c42d87b2ca4c7d9d9c2a41fde7  gcc/config/arm/cortex-m7.md
! 981bcbc10e9f0842e0914f884dadbbbd  gcc/config/arm/cortex-r4.md
! f1b613569f4aae8f12b241d5d5af9675  gcc/config/arm/cortex-r4f.md
! 9fe975e6361789113c1d987e20ea0811  gcc/config/arm/crypto.def
! 4e2c1532c12770d155bc8fb27b2a5ed8  gcc/config/arm/crypto.md
! aa1ef2919ecf24dcaa7e104f4512b8ae  gcc/config/arm/driver-arm.c
! 333613da055f57216b674feec5de3e51  gcc/config/arm/elf.h
! 2f6210a087266ec5d1758bcf690bd1ea  gcc/config/arm/exynos-m1.md
! 3af20cb3bbe3168fc556154db238db95  gcc/config/arm/fa526.md
! 94acb6d866d5364b40b693fe28ca501a  gcc/config/arm/fa606te.md
! add7d5d06f85f84b6e9394c318ecdde3  gcc/config/arm/fa626te.md
! cba5bb06b2f0f89c465a6fb784d72b9d  gcc/config/arm/fa726te.md
! 3c7373e9263cc887cb228df9590c94a5  gcc/config/arm/fmp626.md
! 5a8b13a7aebcfe4ac43f21ef13a86eb9  gcc/config/arm/freebsd.h
! e28e0b5c3f8e0830c41307fb9251b5b7  gcc/config/arm/fuchsia-elf.h
! 07e92329bea7487d7d2889beb820dd16  gcc/config/arm/iterators.md
! df8c33c1d92134bde92a14a80201a228  gcc/config/arm/iwmmxt.md
! 51132ff11484e3ee066f07d796cf06ba  gcc/config/arm/iwmmxt2.md
! ead04158f0c4135990f48a876b12e071  gcc/config/arm/ldmstm.md
! 670597f9b8fcc9c84ca967e9d5b3c60b  gcc/config/arm/ldrdstrd.md
! 04dec2865e348e6e6a25126c8e925475  gcc/config/arm/linux-eabi.h
! 459900d341718d6451f9b6b64ea13eb8  gcc/config/arm/linux-elf.h
! 456cfcae0b5c3545cb4ad7f2e35d6ff4  gcc/config/arm/linux-gas.h
! 77bbfc52cec114473e16cc45525b78da  gcc/config/arm/marvell-f-iwmmxt.md
! 593ec45cb06c77ec6517d3934663cfae  gcc/config/arm/marvell-pj4.md
! f2cd1bfe02c6d51cc3919ec1fa7a85dd  gcc/config/arm/mmintrin.h
! 3ce97ce79d1eb53c9dcbdbfbef45c76e  gcc/config/arm/mve.md
! e09aaf8b4f2a91445bee305dbc7ce140  gcc/config/arm/neon.md
! e75b4fadda28d0bc88964789d006bf77  gcc/config/arm/netbsd-eabi.h
! da8d328015b35fd5b8cd1ba383e1bbb9  gcc/config/arm/netbsd-elf.h
! 03b45eaa4503cbe921ff88833b52156a  gcc/config/arm/parsecpu.awk
! 4c0cf4477f69270b5065bd93cb75d782  gcc/config/arm/predicates.md
! f4a86e4fad5b4973b6cdca4114088d5b  gcc/config/arm/rtems.h
! 07678b5b8ea0443225b9349ebcaba1fa  gcc/config/arm/semi.h
! 34fc812393e7e05c8e7e3044b3c9ad70  gcc/config/arm/symbian.h
! 764e30ffcb2d2b5345e25730561756aa  gcc/config/arm/sync.md
! 0b44c661a4fcd03784c39188a20363be  gcc/config/arm/t-aprofile
! 3f25dc0f49eface5117308ae09e426cd  gcc/config/arm/t-arm
! 47884ae185b6b2d1b47c57cb9841ee7f  gcc/config/arm/t-arm-elf
  4dc427c456af5e56b1ac39bda8969af6  gcc/config/arm/t-bpabi
! 36c19af924a28711b883d05647a5c296  gcc/config/arm/t-fuchsia
  e3950ec6bd159734835f8f8fb143efc6  gcc/config/arm/t-linux-androideabi
! 1abbe7e2dff325a461f882d81ae9d0d8  gcc/config/arm/t-linux-eabi
! 5a9bee6531255caed891c4648c339693  gcc/config/arm/t-multilib
! ba3c742cee71d778250a3ac85590c93f  gcc/config/arm/t-phoenix
! 71d2404306e1fb5e30aed648377b8ecf  gcc/config/arm/t-rmprofile
  c434e99f4fc47fd32ffab26fbeea8464  gcc/config/arm/t-rtems
! 7bc6fe2692f1011c28fb08ded09ee55e  gcc/config/arm/t-symbian
! 57111571363907f82abf9b0499b22c32  gcc/config/arm/t-vxworks
! 0e35c63b787d2c19596e4718db4dc64d  gcc/config/arm/thumb1.md
! de2a944122b1cd99e997917c51aa833e  gcc/config/arm/thumb2.md
! 7ebef77d5257a6de55452d0d2378a2b4  gcc/config/arm/types.md
! 1700cb3de0abc236d3c38a45bf6e0ee1  gcc/config/arm/uclinux-eabi.h
! 353f196adbf604b12e7b627a451a3e8d  gcc/config/arm/uclinux-elf.h
! 6d17f78ac9b80625b2e7af133a291da1  gcc/config/arm/uclinuxfdpiceabi.h
! e2b8dca0f9e3facba6e03b04aaa95212  gcc/config/arm/unknown-elf.h
! e075c37998acb90c1a6e11045354aa0d  gcc/config/arm/unspecs.md
! 984d0d34f4810c9a0d7c03d9e7ac1bc7  gcc/config/arm/vec-common.md
! f4302803fa64c3c4a8313d2262617a6f  gcc/config/arm/vfp.md
! d6b75cda88705fcb9bb24c973403a79f  gcc/config/arm/vfp11.md
! 754d278d0f42efc5ea21a852701d64b7  gcc/config/arm/vxworks.h
! a1e68ca6527d721ca9b727becce9d101  gcc/config/arm/vxworks.opt
  a17a638dc98f3f18b0e13448c69e1e65  gcc/config/arm/x-arm
! 8358320d4b42bd25431dbbca1b244794  gcc/config/arm/xgene1.md
! 15aa29cce867a5b2d0f99dee4b388730  gcc/config/avr/avr-arch.h
! 330bd7c90bb6f15237a1c5799f585b4d  gcc/config/avr/avr-c.c
! b32ac08793193c908cf6f2c8307ab9bc  gcc/config/avr/avr-devices.c
! 0d025ea443b5a769a0a2ca3b7c37c869  gcc/config/avr/avr-dimode.md
! bbcc6a87263c94c1cfbb32e4969d4283  gcc/config/avr/avr-fixed.md
! 5d711e017687aae3e59b0df95d59dcbb  gcc/config/avr/avr-log.c
! 0ed6c73fd0b08f4ed421b790f8600d3d  gcc/config/avr/avr-mcus.def
! 10f36903d707b5e8b3e4653688897980  gcc/config/avr/avr-modes.def
! 8b6aa398af35774c579315efe932fc5a  gcc/config/avr/avr-passes.def
! f81318ad36d3cca67e3a46d0abd3d15c  gcc/config/avr/avr-protos.h
! 4d053ed33b740b0734830d7bd98f6453  gcc/config/avr/avr-stdint.h
! 47ed6e3201d51772271927f81fe137cc  gcc/config/avr/avr.c
! 21d71f54485eb69b211ad0b06936cc50  gcc/config/avr/avr.h
! 9ea321c0ee0070ea3c25c2fa6383a17c  gcc/config/avr/avr.md
! 984dad17639021ce00cb71587c0eadfd  gcc/config/avr/avr.opt
! 086729f488470010fb9f2001ed63f388  gcc/config/avr/avrlibc.h
! 6d5d2da6a0e37536a5ebb1700945019f  gcc/config/avr/builtins.def
! 113547ca513679cb26664359349f59c5  gcc/config/avr/constraints.md
! e5b96d4bb15f2795f047f63185dde4f0  gcc/config/avr/driver-avr.c
! 10a20429894f90f6df26adba88cf1a5e  gcc/config/avr/elf.h
! f6fa6e8501f2fb495a87c578b0abb0e2  gcc/config/avr/gen-avr-mmcu-specs.c
! 9127f59a753ad4d0b87c17141ab6b2db  gcc/config/avr/gen-avr-mmcu-texi.c
! 9e1719f7ef577d3cd5b7aeb8f34ce954  gcc/config/avr/genmultilib.awk
! 118769bf842c1442af838d38e53384c7  gcc/config/avr/predicates.md
! e9856564133cbf092420ccd7b937e161  gcc/config/avr/specs.h
! ca6bef7f9f67933d105eb58e19c5cdec  gcc/config/avr/stdfix.h
! 24310b13f415b262973d30ae14cd3c75  gcc/config/avr/t-avr
! c60b575a55b708f4a04d93724d99d63d  gcc/config/bfin/bfin-modes.def
! af3c43afa0ba869c3a63054073c86870  gcc/config/bfin/bfin-opts.h
! c70515318989175fd4a7e999c4e6f9ea  gcc/config/bfin/bfin-protos.h
! 9b16134d231fac7236b36f32fddfaad6  gcc/config/bfin/bfin.c
! eedee8d5cfe52d681a4ad4bfe6345ff1  gcc/config/bfin/bfin.h
! ca6f2a2d59b8e1aca9906691dd94ca7c  gcc/config/bfin/bfin.md
! 89e7e7e08d0e01091e9daf3cf7870292  gcc/config/bfin/bfin.opt
! 3e50c96aa31b34dcdac430e2c7ad30b0  gcc/config/bfin/constraints.md
! f3cb30e61676f53daff6762cf9b8a96d  gcc/config/bfin/elf.h
! e1e6fd627f4b7514f27f56d1108f4696  gcc/config/bfin/linux.h
! 7ceadd1dd00764356946c4014cd02065  gcc/config/bfin/predicates.md
! 37fc428d03c20663124b94cda65264fb  gcc/config/bfin/print-sysroot-suffix.sh
! 3106e2bae4c523940c5535610e1998ed  gcc/config/bfin/rtems.h
! d3efed313917be0e30573467d261740b  gcc/config/bfin/sync.md
! e6ce823b2f8c8ee1f32d92b998baa5cc  gcc/config/bfin/t-bfin-elf
! 271c8186197325fb75a262d32a13b7f0  gcc/config/bfin/t-bfin-linux
! ce868686e5f0526d7cb6ca055c30072f  gcc/config/bfin/t-bfin-uclinux
  6f4817f759fcac5ac27233ee451780a6  gcc/config/bfin/t-rtems
! 2d290253b86e5f6b95958d70830d627b  gcc/config/bfin/uclinux.h
! 1252e92a950d1e13df636397c3fe096a  gcc/config/bpf/bpf-helpers.h
! f2e59c4eaca2034d760cec596b3fae20  gcc/config/bpf/bpf-opts.h
! 364a22d645333f30b748ccf0d9221523  gcc/config/bpf/bpf-protos.h
! 91a90aafb26f37313f9a0591c2902c55  gcc/config/bpf/bpf.c
! 67a9e5cb91dcc4cf5e191456811c53f4  gcc/config/bpf/bpf.h
! 55217985dd2ce7ec8091abab7a4720da  gcc/config/bpf/bpf.md
! 2827201f2e549ab03b7fde6f23f62680  gcc/config/bpf/bpf.opt
! 3dd8832965cd44da084efa8bbf5de946  gcc/config/bpf/constraints.md
! eb75e8393c609c7222b3563c4b05ba2b  gcc/config/bpf/predicates.md
  d41d8cd98f00b204e9800998ecf8427e  gcc/config/bpf/t-bpf
! d0f3b751d29e6d13bb031173f51c74f0  gcc/config/c6x/c6x-isas.def
! 31f79788f8d616dce3e3d564f879e058  gcc/config/c6x/c6x-modes.def
! 79e82e1a61f83d970ddcd05e8ea5dabf  gcc/config/c6x/c6x-mult.md
! f76411985fad5b531535403c60a31e25  gcc/config/c6x/c6x-mult.md.in
! 4d0c1fcce67fbceb2bf8a77f577429f9  gcc/config/c6x/c6x-opts.h
! d02443fdd56c95c02018dfea32288fa7  gcc/config/c6x/c6x-protos.h
! fe02a9bf3da041f982d602c3e8d59a52  gcc/config/c6x/c6x-sched.md
! b4bb91ccb3c5432539b5ddaacc1beb65  gcc/config/c6x/c6x-sched.md.in
! 1d1d6f1f5cc03565853a21cb52b70160  gcc/config/c6x/c6x-tables.opt
! 91edbb2cd09628263dd9f45b13401f11  gcc/config/c6x/c6x.c
! f211446aecc8c92733e4a6515a1e33fd  gcc/config/c6x/c6x.h
! 341195689b2e6fe991c9705b869078af  gcc/config/c6x/c6x.md
! 8136a85c062db19097bf81cc7a690837  gcc/config/c6x/c6x.opt
! bb49d3d83233fb8a1380e410bb3a62c1  gcc/config/c6x/c6x_intrinsics.h
! b374e9038d1ea1367354c20894448fb8  gcc/config/c6x/constraints.md
! cabe9f2ad460529a7bba7c6fb0390476  gcc/config/c6x/elf-common.h
! 67f693653b7f5d9f272f7243ec0d7842  gcc/config/c6x/elf.h
! 96d18c422628ba210caa35192665622f  gcc/config/c6x/genmult.sh
! 110055c0c6677b4e6777c460d9e67384  gcc/config/c6x/genopt.sh
! 1ca9d6144e9b6c66540a496ac1080ebc  gcc/config/c6x/gensched.sh
! eafe3f3aba0256186024183cc9984c28  gcc/config/c6x/predicates.md
! 40944094f79969d256cc8f623f1b133c  gcc/config/c6x/sync.md
! ebd00ad0d5ad97a40d8a6c3572294508  gcc/config/c6x/t-c6x
! 1f5f3ae40825b8a828473949d6ee3562  gcc/config/c6x/t-c6x-elf
  428034a210600b6b423dfadb06636e03  gcc/config/c6x/t-c6x-uclinux
! 76a5ab8ba86bc3d77ccbf4f732e305e2  gcc/config/c6x/uclinux-elf.h
! c60c2f5d9a4eab0f2bce1684a84c9d49  gcc/config/cr16/constraints.md
! 4f5b7a7f44091a776e5fa3f2ab8ac14e  gcc/config/cr16/cr16-protos.h
! 2ae0afc5e4934cbe10ad3b12d61ffece  gcc/config/cr16/cr16.c
! de3fb41a342a3d25c340b5c838ed61f1  gcc/config/cr16/cr16.h
! cc7f8e9ee93267e7a40aa7d45edb972d  gcc/config/cr16/cr16.md
! f0e5ee3c11327af0139e38235c5b4cc5  gcc/config/cr16/cr16.opt
! 231043dad8eb4a494117db16085b94c3  gcc/config/cr16/predicates.md
! 2409130b58d3142e51e9beca566e59ef  gcc/config/cr16/t-cr16
! a0a76a102e726a872671dcc10c2b1b25  gcc/config/cris/constraints.md
! 2345beb936bb3a857dc4d74998ba7f8e  gcc/config/cris/cris-protos.h
! c01a9493f56cf554b0de8324ddf2fc4f  gcc/config/cris/cris.c
! 95f51549037364f819e04d1a242d15ed  gcc/config/cris/cris.h
! f1b83c8d66580664778b28402a769227  gcc/config/cris/cris.md
! 6cb7c8ab8a98260f5a0a26e0dac3f9d8  gcc/config/cris/cris.opt
! f8367d6c683a8b7e8126ec58adb09315  gcc/config/cris/elf.opt
! 4ddcf9af7673330f1ee6b1d952329b99  gcc/config/cris/linux.h
! 93a069ca2833204c78766141a1d6c1a5  gcc/config/cris/linux.opt
! fa9d487fb4ac3390f0a64fddcd8b5e76  gcc/config/cris/predicates.md
! bc46c958afadfe5897c5879ae939af86  gcc/config/cris/sync.md
! e36fcecefd830f2ced0a5e940ceec538  gcc/config/cris/t-cris
! 943d20bae2241e0580a25ea9244e70a6  gcc/config/cris/t-elfmulti
! 5657034355d2720466dad6b98f794a8f  gcc/config/cris/t-linux
! 199262f401e44e2a9762b00ae038ad5f  gcc/config/csky/constraints.md
! b3c30a8621cc43c91c49b64d4ad06164  gcc/config/csky/csky-elf.h
! 2a171a5dc22a578c6c3095ff402cffa5  gcc/config/csky/csky-linux-elf.h
! f998a0cec8875b0772623ec4f7011ad0  gcc/config/csky/csky-protos.h
! 4ffa9349fba30b5b5f0ae3110bfcd967  gcc/config/csky/csky.c
! cfbae8209a55282ff9e09353bcde8afd  gcc/config/csky/csky.h
! 7d838dc387ea8adeeb31d485e9c58715  gcc/config/csky/csky.md
! f71ac0f01deb0d6db3b4943214af7509  gcc/config/csky/csky.opt
! 45243e9f63ae1112a328ae2f102b6fb2  gcc/config/csky/csky_cores.def
! e57a79abc0dde38c905f23215c31abc6  gcc/config/csky/csky_genopt.sh
! 6af641d640e38735eea7f58b19098e85  gcc/config/csky/csky_insn_dsp.md
! e527f402c7d7bb325c58870145056db8  gcc/config/csky/csky_insn_fpu.md
! 5f690e80502f7fb0333d4164e8ed0cbb  gcc/config/csky/csky_isa.def
! cfd48a157fcdcebff026b65cfc1d4727  gcc/config/csky/csky_isa.h
! f9e8cff23e8a735383e114dd29564fb0  gcc/config/csky/csky_opts.h
! 9b6ab75e96e268e489d72d67c0d60052  gcc/config/csky/csky_pipeline_ck801.md
! 163162de82cb4f84dae97f114ad3b468  gcc/config/csky/csky_pipeline_ck802.md
! c82cb2e9f587e1b4d768709bf036e9c8  gcc/config/csky/csky_pipeline_ck803.md
! f89bb5c1e5b4242c640c8d23773c6b0d  gcc/config/csky/csky_pipeline_ck810.md
! 978bb8c44fed076ea101cd336e7363ce  gcc/config/csky/csky_tables.opt
! ffa667e7d265230909c154a94cfad363  gcc/config/csky/predicates.md
! 1d0088086523b5cab4e20a54a85039b1  gcc/config/csky/print-sysroot-suffix.sh
! 02b748896d9a86f539487330cd18ebdd  gcc/config/csky/t-csky
! eb052b8d01bcc66ec2df70dc2fa9613d  gcc/config/csky/t-csky-elf
! 1026cc867bc5f4fec333b6048114963e  gcc/config/csky/t-csky-linux
! 9d4fc2f4697ee7f8aa6e4217e0a103fb  gcc/config/csky/t-sysroot-suffix
! 307a76c751f9048d7abd3f2407a7a04a  gcc/config/darwin-c.c
! f6f30c48e326885070e4511477005645  gcc/config/darwin-driver.c
! a3ce364c42d20501f7ff53cea9c94af3  gcc/config/darwin-f.c
! 73063d81d9e8ccfb36b462a062f0f3da  gcc/config/darwin-ppc-ldouble-patch.def
! bf622b24f99b32a50572bc7a96cfe612  gcc/config/darwin-protos.h
! a0a670e3b89eee95e5875b77c9f3a625  gcc/config/darwin-sections.def
! e567ddab91f9f5c25aa70d79d3da9774  gcc/config/darwin.c
! 38dcc6706f7f0790d3438e4c9eeec0a5  gcc/config/darwin.h
! faf4d2d82bcacf64bb0c8695f00b7895  gcc/config/darwin.opt
! 22ef11e2b04fb7440bd17058f103745f  gcc/config/dbx.h
! 3af56e740de05f1af8d575ff940e0c76  gcc/config/dbxcoff.h
! ad58fb2666fa68834ef425036a33e796  gcc/config/dbxelf.h
! 847bfdadbe2cc408bf29d9e8a5d1977f  gcc/config/default-c.c
! 070a07189b79506e98f0fe91dcb1792c  gcc/config/default-d.c
! dac86019adfd76b9abbad23b52821982  gcc/config/dragonfly-stdint.h
! 4be588a55cdfed6b36a448827ee13b92  gcc/config/dragonfly.h
! 89369453648e8416f7071df1e715c81c  gcc/config/dragonfly.opt
! f6c8d196bac6616b5d260210f6f98f74  gcc/config/elfos.h
! fba29f892ddcba5996697c974291fbc7  gcc/config/epiphany/constraints.md
! bc66b640f23280df275a7f27078b1050  gcc/config/epiphany/epiphany-modes.def
! b1f89de7c8ab4d07e71a644364bf49f6  gcc/config/epiphany/epiphany-protos.h
! 0e042d91cc1d5bbae191d12403138240  gcc/config/epiphany/epiphany-sched.md
! f004eb9dee2971bbc574ecb904b1a408  gcc/config/epiphany/epiphany.c
! 71cae34a3ae5d62accf10ebc6788e861  gcc/config/epiphany/epiphany.h
! 484d1b3e5a9c9358ad3cd4bb34a75c8e  gcc/config/epiphany/epiphany.md
! 26c0a9d86a89d39b4e26004920e251da  gcc/config/epiphany/epiphany.opt
! 6ad4bfd793f42f0d5bf540d438d2f4ec  gcc/config/epiphany/epiphany_intrinsics.h
! 89604da584289a7584025a43dca183a5  gcc/config/epiphany/mode-switch-use.c
! 60a191778c3f9e26d34f89ea85f8775b  gcc/config/epiphany/predicates.md
! 8af4db6dc7c9119dd26c3ea69956bc92  gcc/config/epiphany/resolve-sw-modes.c
! 81af24a6261432b45821ca5680de6c56  gcc/config/epiphany/rtems.h
! 8e933125b00a557b442fae0697c81553  gcc/config/epiphany/t-epiphany
! 3492dd090919cd40bb44b0b9fd42105d  gcc/config/flat.h
! f1110d3c084eee35af39171c4cac54c8  gcc/config/fr30/constraints.md
! c6d5d7323387406005a7be6f2c118315  gcc/config/fr30/fr30-protos.h
! 7162e9cab88cf69c7e2706b374b86543  gcc/config/fr30/fr30.c
! 82b92e96168d5dfbe801837f7fbfc269  gcc/config/fr30/fr30.h
! c4ea6bb8782330b89c04f0e1a06e3a55  gcc/config/fr30/fr30.md
! 454f0bb3c873d41a69457aead537ac38  gcc/config/fr30/fr30.opt
! b832fb51f3ee8dffed1ecedd4100185a  gcc/config/fr30/predicates.md
! 575f56895b79d2937a6a146e768c10c9  gcc/config/freebsd-nthr.h
! ec357fedcdf3b382cbadd886b2b6fd2a  gcc/config/freebsd-spec.h
! 17af055ecb3247704f2675cadfbcbab6  gcc/config/freebsd-stdint.h
! a6ba0a8c28b87cc33389b034703c895d  gcc/config/freebsd.h
! 0ccac11a41b2e0c45fc6433e333bcc02  gcc/config/freebsd.opt
! 839c939797763fe3e8a6cb52d8200bb5  gcc/config/frv/constraints.md
! 8a09f46dbe915c495a09344d35f1e99b  gcc/config/frv/frv-asm.h
! 0c0f5caad16b09b8a39fb435f8e3d328  gcc/config/frv/frv-modes.def
! 2bb3b48a7fae4aff5cf0af03ccae4a21  gcc/config/frv/frv-opts.h
! 4824e25d248ae774669d08d4d47df97e  gcc/config/frv/frv-protos.h
! bfd33800893a8841b09f6bd711abd011  gcc/config/frv/frv.c
! 66c741b1193a66caadacba75581910ca  gcc/config/frv/frv.h
! e949dc717d0cf82389263e20f78066f1  gcc/config/frv/frv.md
! b5c31bf925ee998aee7e2e993938e2dc  gcc/config/frv/frv.opt
! 75d9ef49a75cde86ffafcc2dd90c5dad  gcc/config/frv/linux.h
! b50ea19d2a3c7310e90353381db8fb1f  gcc/config/frv/predicates.md
! 108029c1f560b92c0f7f1977ce6f9050  gcc/config/frv/t-frv
! f6e2c33455b02f463285affb08ca2261  gcc/config/frv/t-linux
! abd3968af1d56444015369f6533ea6b3  gcc/config/ft32/constraints.md
! 53bab3b6d4f06d496943ad1d18a6599e  gcc/config/ft32/ft32-protos.h
! 5b25d6aab61d54a9bb13c5d21dac5e85  gcc/config/ft32/ft32.c
! 9e7595003f6e6fd5800297710f55b117  gcc/config/ft32/ft32.h
! c091a5a7ee8fe689d92ab6ce9cfea572  gcc/config/ft32/ft32.md
! 787b547d5c5f61c8d988c481b0266a6a  gcc/config/ft32/ft32.opt
! 9929301c2596b803759237124ec4ef84  gcc/config/ft32/predicates.md
! 0aa32d95501376099d72cabb1a86694b  gcc/config/ft32/t-ft32
! edbff2375c0db122cdbf8e97fde23320  gcc/config/fuchsia.h
! 9c978edc272b818a41a581478f1f284c  gcc/config/fused-madd.opt
! 8c8008a54a5a3b5d1207f51175696311  gcc/config/g.opt
! fb0cb0b629b175d67faaf03262950754  gcc/config/gcn/constraints.md
! 63a710460835772e33f39b40dbda8eb9  gcc/config/gcn/driver-gcn.c
! 891ed0e747820d658357785c039fd541  gcc/config/gcn/gcn-builtins.def
! 5803d78fb6ae58b3a0b42190b8e5c2de  gcc/config/gcn/gcn-hsa.h
! 760ca3ed167c137d41f0b26a964c0ebc  gcc/config/gcn/gcn-modes.def
! fa683344995f9f9ebec9feeda1ec716a  gcc/config/gcn/gcn-opts.h
! 881881cc69936fa410676f5021c9e283  gcc/config/gcn/gcn-passes.def
! 54c47b954f734b86287eb4413984d34d  gcc/config/gcn/gcn-protos.h
! 3b66c430ba0a152ca6fc850576c0d181  gcc/config/gcn/gcn-run.c
! 831bd5bec703edf157808a969bac3d0c  gcc/config/gcn/gcn-tree.c
! 1e3741097df04c340fb20812a86de75c  gcc/config/gcn/gcn-valu.md
! f5b51603ecd10f5da36fcf5e094c500c  gcc/config/gcn/gcn.c
! 6f3ef80b98547a0a87b2e33d148f5409  gcc/config/gcn/gcn.h
! 0e3b517c0d614395aa55129328ac7bed  gcc/config/gcn/gcn.md
! d709500121e0aed28db4a40934e9ff46  gcc/config/gcn/gcn.opt
! c29f6f2cb08ef76696269d1a5a81fd4c  gcc/config/gcn/mkoffload.c
! be28d5b62942adee0e8079fddff2f789  gcc/config/gcn/offload.h
! 81cd27a78f0d6de90cfe4a7b374caf20  gcc/config/gcn/predicates.md
! 6ce4160f70c2ddb214428c27938505a4  gcc/config/gcn/t-gcn-hsa
! 0d5ba75904ea3c19e8a0176c7b024e1f  gcc/config/gcn/t-omp-device
! 8e3b9d4e57135e5309c921d470ffec3c  gcc/config/glibc-c.c
! 604ea23c1f2d81c4f4dcc354ec000c60  gcc/config/glibc-d.c
! 3e9d4d52596cf3fad14edcc6f10633ae  gcc/config/glibc-stdint.h
! 09579a3ca0bc7053d8ca644250a7269f  gcc/config/gnu-user.h
! a4255710282fc35e86430b483841c20d  gcc/config/gnu-user.opt
! 2406dbe95ecc6e0a5c94fb2b54a0d704  gcc/config/gnu.h
! e33586234ad528ad975c3df7a69221b4  gcc/config/h8300/constraints.md
! 8b6ec31583a5956ea6d8f265f7fee125  gcc/config/h8300/elf.h
! 908372395df469ddba12c177b2c458f9  gcc/config/h8300/genmova.sh
! 7924adbbee90e3529f0ec4cd8caf964f  gcc/config/h8300/h8300-protos.h
! 350e6ee977e6d1c976788f84b1925421  gcc/config/h8300/h8300.c
! c02a8ceac36beae02ba948647ec5e435  gcc/config/h8300/h8300.h
! 70129c1e1325461ff1dffe64179f095f  gcc/config/h8300/h8300.md
! 552bae07a607f6c2e86e2c4e9c2d4200  gcc/config/h8300/h8300.opt
! 327ce1901a06154d5d6c7a9b114f22df  gcc/config/h8300/linux.h
! 9f0f96bad5eb6f0ca32fbfc8e07f990c  gcc/config/h8300/mova.md
! 8a75f2d7394d5c588faa735842beea56  gcc/config/h8300/predicates.md
! 56fd075cd0643631f00f0a2bbb6d7bec  gcc/config/h8300/t-h8300
! 4acd8a2eb4207e7d8b9bb58ecece60f8  gcc/config/h8300/t-linux
! e852919421b033ea104517065ffa1462  gcc/config/host-darwin.c
! 3945a0e6f175acfe9db1a2fde19f5128  gcc/config/host-darwin.h
! 1336927269b382e176eb3e943ebb3635  gcc/config/host-hpux.c
! 7f1872d88124105a80f506b539929f90  gcc/config/host-linux.c
! 68fae4b897e5155d264d6294ceb07870  gcc/config/host-netbsd.c
! 72d1eafe48c77d28cb403319afeea8f1  gcc/config/host-openbsd.c
! c00d821b196937c14ab82cd8b8449b11  gcc/config/host-solaris.c
  2c191e2d8d033611c6fccc8362d9e8f0  gcc/config/hpux-stdint.h
! 68f81e101010c0c397b7274426a71792  gcc/config/hpux11.opt
! 2acb444fe63c1ed1a5dc425e0f509995  gcc/config/i386/adxintrin.h
! 029528bc5f7d9a197a164582b27f30c6  gcc/config/i386/ammintrin.h
! d380c57a0329aacd2d8a724ad3a6079a  gcc/config/i386/athlon.md
! 4bb47640f466b2e88f0c7046f04532e0  gcc/config/i386/atom.md
! d120ca4b5af55d33c302db9317374660  gcc/config/i386/att.h
! 3a04b5ca1193544c1b9d299b429e9eda  gcc/config/i386/avx2intrin.h
! dbd1d7b0473faf433fb1e8d11c0d4fbc  gcc/config/i386/avx5124fmapsintrin.h
! 52a8ea8414c5e10244c4a5d67036e68b  gcc/config/i386/avx5124vnniwintrin.h
! 50ab3fdd458202f0f7dbb3a79c0af1a9  gcc/config/i386/avx512bf16intrin.h
! ba03bec1b5b42479d08bafd50432bfb6  gcc/config/i386/avx512bf16vlintrin.h
! e858463aa18e541bb926ca013db00830  gcc/config/i386/avx512bitalgintrin.h
! e6896c24e23ba9bb59f65f7eea7d814b  gcc/config/i386/avx512bwintrin.h
! 3b517b5dacb8f1ca675f305ca1f76828  gcc/config/i386/avx512cdintrin.h
! 1dd1837e886e1a52f02d2aa3f67182d2  gcc/config/i386/avx512dqintrin.h
! 43bf9d7c74dc1f9290224f374d6f469d  gcc/config/i386/avx512erintrin.h
! 0ff3fb865adabd6ab8aea106096d433f  gcc/config/i386/avx512fintrin.h
! 6c19b1782d389e155a239932643ccfe5  gcc/config/i386/avx512ifmaintrin.h
! ac74b24ec10ff04dae6993be08616614  gcc/config/i386/avx512ifmavlintrin.h
! 8da3bc9ec56da67548b118f1ba2e3a35  gcc/config/i386/avx512pfintrin.h
! 8b6cb39763645177db453b5b5ad55d32  gcc/config/i386/avx512vbmi2intrin.h
! d4b8798ee9188d0bbc86f15055cfe545  gcc/config/i386/avx512vbmi2vlintrin.h
! 25eb61e91cf01617f17b629e3f2340f6  gcc/config/i386/avx512vbmiintrin.h
! b49b6f9c5a262673cf3af85886e40e96  gcc/config/i386/avx512vbmivlintrin.h
! a928c86980e5871a8937937630a5d7a1  gcc/config/i386/avx512vlbwintrin.h
! d4158ab21e7caa9f5a7444f927f0c0bc  gcc/config/i386/avx512vldqintrin.h
! 7ee7284023035096528bdfb9b00cba6c  gcc/config/i386/avx512vlintrin.h
! aa15a16e9da9e4216965a81b04d5a022  gcc/config/i386/avx512vnniintrin.h
! 919dc7e447d73a0899224d9eff30e8a0  gcc/config/i386/avx512vnnivlintrin.h
! ca6830243956290bc943d140f0b28629  gcc/config/i386/avx512vp2intersectintrin.h
! 490e08c18b8dd0ab846fa1498047194c  gcc/config/i386/avx512vp2intersectvlintrin.h
! e336b51730d230958d6bac7d7b907be6  gcc/config/i386/avx512vpopcntdqintrin.h
! bd0592db95b7482ba4b8bc9720bf529e  gcc/config/i386/avx512vpopcntdqvlintrin.h
! 65a18a710dd0514cf112d48956d14b37  gcc/config/i386/avxintrin.h
! 98bc257ee15423f3b557e3832cc65b00  gcc/config/i386/avxmath.h
! 20efb110fe1e3adc4ad49725eaf679d7  gcc/config/i386/bdver1.md
! bc07d4a123734b26d99a7320d3f99ce1  gcc/config/i386/bdver3.md
! 77eaa02f19ac2d20b621470e0d52968c  gcc/config/i386/biarch64.h
! 3e09321ecb0d58ec428676e1e0b278d8  gcc/config/i386/biarchx32.h
! dbc43b13cc3759e55edf0b5591d10b90  gcc/config/i386/bmi2intrin.h
! 303259544e4d3334ef7931fb5baf3776  gcc/config/i386/bmiintrin.h
! 0046e28b185519595edf252aa565e62f  gcc/config/i386/bmmintrin.h
! 35253e90b1601326b81fc41196d75ef9  gcc/config/i386/bsd.h
! 0fa936acde0379b16f221906b4509063  gcc/config/i386/btver2.md
! 4d859197a6cb99cd8bdbaf7f1e688ceb  gcc/config/i386/cet.c
! c3e82040a77b9e0f2288eb36b5e7b5de  gcc/config/i386/cet.h
! 2972352f476fb9f001b61763535e6fad  gcc/config/i386/cetintrin.h
! bb1d61052a1d43541168457401ba2a3a  gcc/config/i386/cldemoteintrin.h
! 8361fabfa49ee27c90357589bfe9f655  gcc/config/i386/clflushoptintrin.h
! 0170927ead0aeaf93161fdd08efcf167  gcc/config/i386/clwbintrin.h
! 61269bfd02d4a7c317de063eea7f8921  gcc/config/i386/clzerointrin.h
! 861b9a715d2ae3c50a3d1b3974df0322  gcc/config/i386/constraints.md
! 4d95cabde0b66edd8b1b030b87cf0271  gcc/config/i386/core2.md
! dda38e5f852542c594cfd3fc33483328  gcc/config/i386/cpuid.h
! 0d5fa6eaebfd0f5392e1a44805032bcd  gcc/config/i386/cross-stdarg.h
! 70ea2f3fb34dd90c2c766c1fd3ce3252  gcc/config/i386/crtdll.h
! bfcd3e6fd3b7ade4cad500b08492030c  gcc/config/i386/cygming.h
! 11ae17247b8823b949ea23f578ef9eeb  gcc/config/i386/cygming.opt
! 0134403b587b08a253075743a2656106  gcc/config/i386/cygwin-stdint.h
! 1b2dce662c4d7271e97d8cf48d79873b  gcc/config/i386/cygwin-w64.h
! a920dc760960c1ed02cc219a810b4b04  gcc/config/i386/cygwin.h
! a7241e61e02eb91d00b8df74f7331812  gcc/config/i386/cygwin.opt
! 75e0432a057f52d12ba859bb128f61ce  gcc/config/i386/darwin.h
! 312f5339ec0f349e7303541f581bd417  gcc/config/i386/darwin32-biarch.h
! 6c01a2b4ab703b71d8ec42767643d9ac  gcc/config/i386/darwin64-biarch.h
! 5985a490a4884c362bb49d078c8264b9  gcc/config/i386/djgpp-stdint.h
! 420571d0f5f100779b738d6706f3f4f9  gcc/config/i386/djgpp.c
! 1c900766d45d7583affccb7ad7b02756  gcc/config/i386/djgpp.h
! 0c91769aab8f266208ffd10d734a07e5  gcc/config/i386/djgpp.opt
! 628b607baecf786f8361d7b152cbd4e8  gcc/config/i386/dragonfly.h
! bebaac8854c999c7149b751edbc7580e  gcc/config/i386/driver-i386.c
! ee0c1470c81c156315766d98c5417660  gcc/config/i386/driver-mingw32.c
! d8a01bc02966c3442a75c34b1afcc4d1  gcc/config/i386/emmintrin.h
! 03de34730ac4b1c095a7bd6a9123cd91  gcc/config/i386/enqcmdintrin.h
! 933a16e978617ef6d874807437360dde  gcc/config/i386/f16cintrin.h
! 71adcfe7784ec96bb2539c5fa9d20573  gcc/config/i386/fma4intrin.h
! 9564509678d38cade50ce9fc84cfdfbb  gcc/config/i386/fmaintrin.h
! 1578650991f6866e100a1e00f1252330  gcc/config/i386/freebsd.h
! 88c2d84b4e81d229da9e5dff1179d347  gcc/config/i386/freebsd64.h
! 7378b7ddf5ec527e7c3c209cc13c452e  gcc/config/i386/fxsrintrin.h
! d35e560cbb42518db17a8cedd311fa3c  gcc/config/i386/gas.h
  d87f5906e5cee04c568119528636e1c2  gcc/config/i386/gcc-auto-profile
! a97025f3b8d0b6e8558b3f831eec45a3  gcc/config/i386/geode.md
! 28ab431780449abc3ed930df21cd548a  gcc/config/i386/gfniintrin.h
! 8c1c6a9187020b0de4aea35fe6b5d409  gcc/config/i386/glm.md
! d29f097f3f93880451b5c21cd514b681  gcc/config/i386/gmm_malloc.h
! 132623450119877efd16dd9daed6be8c  gcc/config/i386/gnu-user-common.h
! 0dfd084da4332fcf6c9050bec27e3f56  gcc/config/i386/gnu-user.h
! 73850a2f70b235df8a7d1ea52fe0c2d9  gcc/config/i386/gnu-user64.h
! f1d87be98edc31bb8cda7488e6a85a26  gcc/config/i386/gnu.h
! 17c758587c4f0a17f70c65534ad31e59  gcc/config/i386/haswell.md
! 6a7dda51c9e6f8417ddc9c61de50ba90  gcc/config/i386/host-cygwin.c
! a272fd26d6041bc4515b6896c00c0a72  gcc/config/i386/host-i386-darwin.c
! 8bfef5d9a38354650eff6c97569a2b3d  gcc/config/i386/host-mingw32.c
! 7c05e9e74dcafa1fbe9d1675caea25f6  gcc/config/i386/i386-builtin-types.awk
! ec29ccbc1d26aeb4e0ec2191e078e9ba  gcc/config/i386/i386-builtin-types.def
! 5ab7f189cd953b5beee2d6f0c6edeb15  gcc/config/i386/i386-builtin.def
! aa49b8b957261bb05f06e5ff6ff21fb2  gcc/config/i386/i386-builtins.c
! aaba1d7f3051425031a61c126ca09427  gcc/config/i386/i386-builtins.h
! d92b63960664e87350adffa54bc9614e  gcc/config/i386/i386-c.c
! 0716ad09835ba6d14c45620bd88d07f9  gcc/config/i386/i386-d.c
! 705f51b3f8944c285185fd597bdc867a  gcc/config/i386/i386-expand.c
! a6e63c2f63741f10d6b63d604468a9df  gcc/config/i386/i386-expand.h
! d61c17f8e6169b83fc0be7d562ccd661  gcc/config/i386/i386-features.c
! 608d27b39a4b79afc971e416cb13f3f8  gcc/config/i386/i386-features.h
! a3fef6d6bd5891a01b6b7acc146b63bd  gcc/config/i386/i386-modes.def
! 18b18735366745ed5e8799a8bd0e9068  gcc/config/i386/i386-options.c
! b3e9baa55fb8746055ad945e5fbe38b8  gcc/config/i386/i386-options.h
! 924c47602884a3f6573760aad71baf6c  gcc/config/i386/i386-opts.h
! 942113f86f41f99e3b37fa463f0e076d  gcc/config/i386/i386-passes.def
! f674f550c6872e8fdd37477ce2bff33d  gcc/config/i386/i386-protos.h
! 3e30edb12c270c0f5cf123527c492b03  gcc/config/i386/i386.c
! 0e4f35e441236b8bea5403cb6607d1ef  gcc/config/i386/i386.h
! 387ac5de1d771e165eb944b2c697590d  gcc/config/i386/i386.md
! f766df0b13effe8c4f16b6991a53f84d  gcc/config/i386/i386.opt
! c58df180ee34f0f28fc135d0ec98da21  gcc/config/i386/i386elf.h
! f936c0131591cc882312338cc5f1c56f  gcc/config/i386/ia32intrin.h
! 1713ad4c35f694719c5fdf7937bf0a88  gcc/config/i386/iamcu.h
! 3cec3b0cbce15ec50daf8a009f30a82d  gcc/config/i386/immintrin.h
! a8b3b393c9f0be73328aae3ae06fc7cb  gcc/config/i386/intelmic-mkoffload.c
! b687856f68d7920f0344f31cff132f44  gcc/config/i386/intelmic-offload.h
! 9ffcae7cd6ef0540b41575879a945f04  gcc/config/i386/k6.md
! 9c0e4f4d4de3436e801002ececc91037  gcc/config/i386/kfreebsd-gnu.h
! c81f24e80d57571521d26ace9c6c3372  gcc/config/i386/kfreebsd-gnu64.h
! 30b2f294f41fdd117c79e9f0ada3c498  gcc/config/i386/kopensolaris-gnu.h
! c27366067c1e6e6795a5b86ac0a37f01  gcc/config/i386/linux-common.h
! d8d238e7a65dd0c369cf5bae50433560  gcc/config/i386/linux.h
! 67a00d808eb61f325515f73f0637cb60  gcc/config/i386/linux64.h
! 8888673261df670b2526ca90e78274c9  gcc/config/i386/lwpintrin.h
! 5f41427c90be2268d4eac853e4da36fe  gcc/config/i386/lynx.h
! 12aa995a7042ee361e1ab08428ea729e  gcc/config/i386/lzcntintrin.h
! d0080e836df5cac189dae34baeb4a5c6  gcc/config/i386/mingw-pthread.h
! 2ef2cdd84b3c2554eb994ddcb56b282f  gcc/config/i386/mingw-stdint.h
! 6e103d2eb935eee9bb9f4bc7254a827e  gcc/config/i386/mingw-w64.h
! 35e55e5b9cd67dbb48d2c9c6a202978b  gcc/config/i386/mingw-w64.opt
! ddcd1cb3a09ffbd9dd766cd2104f5bb5  gcc/config/i386/mingw.opt
! 7d7b39eb3d86f8c69e1f5097450641fa  gcc/config/i386/mingw32.h
! aa58ab6086f2737f5df04d3499dacccf  gcc/config/i386/mm3dnow.h
! 9d23fd034decf2b5d1ced4e20483318d  gcc/config/i386/mmintrin.h
! 1bb551f6bfc4e16496037b3723d0e0a0  gcc/config/i386/mmx.md
! 16fab98a5282ac6bb04ea826b7823259  gcc/config/i386/movdirintrin.h
! b0bf984f4cf56dc50b9fba82b07ad69f  gcc/config/i386/msformat-c.c
! f168b0ac83a82e4c663d7069f1247a9c  gcc/config/i386/mwaitxintrin.h
! ef071d7070b3eee2aff10ee4e0761c45  gcc/config/i386/netbsd-elf.h
! 7f5370d381e02f4b3d142cb322f167f6  gcc/config/i386/netbsd64.h
! 97e4a5d7d2929b3fa5740edce1455e1c  gcc/config/i386/nmmintrin.h
! 8ec4dbe06ec8a3a2f4821e1d5a8dff7e  gcc/config/i386/nto.h
! d6429ee37d6420ed933f5d2e64043c21  gcc/config/i386/nto.opt
! ae97da8ef7aad592dc4ec07fe6e28cf6  gcc/config/i386/openbsdelf.h
! c6a164c2860a0dfc4d2b8d754d064dbe  gcc/config/i386/pconfigintrin.h
! fe2879ad27950f84cb605031b04b4a25  gcc/config/i386/pentium.md
! 5c3afc0a66e6c1536ac3c10040b52532  gcc/config/i386/pkuintrin.h
! 7d54f97ef24a79c78776f3087c24e410  gcc/config/i386/pmm_malloc.h
! 487ba8725a661e6ad6ac03d689c7fd94  gcc/config/i386/pmmintrin.h
! 802334a752f1fe46124a67fbe61eb549  gcc/config/i386/popcntintrin.h
! 51fcfd66430949f4e3bba202f7d0619b  gcc/config/i386/ppro.md
! 4de7aece640ae46063c6f2e184cb6525  gcc/config/i386/predicates.md
! e5c19417278b165b0a627b5bbf4a15c1  gcc/config/i386/prfchwintrin.h
! 0fad5c9217918f04993b45cae5b8d6b6  gcc/config/i386/rdos.h
! a4ef723d79f7fc4b01c65f45ec60f796  gcc/config/i386/rdos64.h
! 9eebb2e96c09ae3bbce3beacbdf1d3fb  gcc/config/i386/rdseedintrin.h
! 67a1be8f8dd32aeeba3dd662d3c9c325  gcc/config/i386/rtemself.h
! d769072cfcdf88a307ad4c7cea4c3a1b  gcc/config/i386/rtmintrin.h
! b536f806896e5b96bf8c7ca33d07c56e  gcc/config/i386/sgxintrin.h
! 00b9c683cb79fd3a2089dc16592e72d2  gcc/config/i386/shaintrin.h
! f6b0a9b38fc804adcd8a679d1d1a298d  gcc/config/i386/slm.md
! 4530deeaee608a58494762629aba3c83  gcc/config/i386/smmintrin.h
! 59a6647bb24abb7905b8ebad61cdf12b  gcc/config/i386/sol2.h
! 1467e4a280bdbd255546bbb8598bdca1  gcc/config/i386/sse.md
! 25052628dbb6b92ee7352816628eafbc  gcc/config/i386/ssemath.h
! 5a6204853f559cf5c23ad0cbdbde8d0a  gcc/config/i386/stringop.def
! fcd2b90fc8aa0ee423309f1e928ac5f3  gcc/config/i386/subst.md
! 028440a1d000aebcd2eba797d53e8f46  gcc/config/i386/sync.md
! 6d2764479e7c7b7a1dfed63be9438478  gcc/config/i386/sysv4.h
! 6dc10eff36b3c555147afb6569d74500  gcc/config/i386/t-cet
! 5e1cda24cd3b7d11404571c8c71cb94d  gcc/config/i386/t-cygming
  d5339d6e5a09a02383903f617230e19e  gcc/config/i386/t-cygwin-w64
  98d94861be252f8541038afee279417f  gcc/config/i386/t-darwin32-biarch
  8f92133cb94c59e2939cd65dc5fc8cb4  gcc/config/i386/t-darwin64-biarch
  4c5d6e2fe993d41a182cdd83904065d4  gcc/config/i386/t-djgpp
! dbfc6d08f57c8020eb85b1a709835fbf  gcc/config/i386/t-freebsd64
  3a1c0dac7740fd9ef48c7bdf5f313c9d  gcc/config/i386/t-gmm_malloc
  d5939c6bccbf8957206c63308ce628a6  gcc/config/i386/t-gnu
! 09eb3a1e2b6cac6acf65855a0510264c  gcc/config/i386/t-i386
  c3fde04ef47ddd6ec0a60c98d7f55224  gcc/config/i386/t-intelmic
  51dcf9826007c01cfd67be11d5f0d538  gcc/config/i386/t-kfreebsd
  39ad69cb2a2e67aa8d46664a75b02789  gcc/config/i386/t-linux
! 2425261222cd15665592c430743ffbb2  gcc/config/i386/t-linux64
  cd662e746e08a18749e8272fa759278e  gcc/config/i386/t-mingw-w32
  67bcf41f125bbec93a13ad3bd98abaee  gcc/config/i386/t-mingw-w64
  f08b968820f569b865f6053578dc6e2b  gcc/config/i386/t-omp-device
  12a68576d3577a8da82089f18d60c613  gcc/config/i386/t-pmm_malloc
! c2de0396026aca5b08a6821628f9d9bf  gcc/config/i386/t-rtems
! f9cb6230c8f3aecef946853c8b9507ab  gcc/config/i386/t-sol2
! af24a4211ecc5bef39097e175d346788  gcc/config/i386/t-vxworks
  b80a5a4a8c8fc32ca318158abc98dc20  gcc/config/i386/t-vxworksae
! cbcadf526054512b25cd94babef3bf93  gcc/config/i386/tbmintrin.h
! a82d535033985b908b8cd2696f0edceb  gcc/config/i386/tmmintrin.h
! d4b870bdbde8f5baeda1feffe56fb711  gcc/config/i386/unix.h
! 0a466c87ea0dbf5fdb2f8fd697197f11  gcc/config/i386/vaesintrin.h
! f7938cba03bcf05da9876956ba4115a8  gcc/config/i386/vpclmulqdqintrin.h
! 7e58275a634d7ac11e318e4996594787  gcc/config/i386/vxworks.h
! 7909a40ac4665b827ddb4908b52960bb  gcc/config/i386/vxworksae.h
! ef13120be07c13003daf6ed35e2db4d2  gcc/config/i386/waitpkgintrin.h
! bd8b132073529509e4eec0c3d8dac773  gcc/config/i386/wbnoinvdintrin.h
! c571a8f09f75ab0a907408a6dd802375  gcc/config/i386/winnt-cxx.c
! 1ee05eae42bdbb467aa6243c812ca748  gcc/config/i386/winnt-stubs.c
! bf098ec2244c653d0631ee06c9e1cbdb  gcc/config/i386/winnt.c
! 2a10c624dc7734e0c224e0fdd7a68c66  gcc/config/i386/wmmintrin.h
  627c3e925a142fb6d2a14368fb637f28  gcc/config/i386/x-cygwin
  bae69273c5e47d61e99558ca73c4fabd  gcc/config/i386/x-darwin
  12e09c6fa27c603c6db59fbfc2a6b089  gcc/config/i386/x-i386
! 0a808e48a72da0d341a65a5817c52fcb  gcc/config/i386/x-mingw32
! 29de9b8d262bdfac7957d307635d2efd  gcc/config/i386/x86-64.h
! 52675b3e4f07c3271ee23e70f917c556  gcc/config/i386/x86-tune-costs.h
! 6afa97a74e62444316a8d65965128e10  gcc/config/i386/x86-tune-sched-atom.c
! bc631868cf8c8a5a71613a2fe2197f5d  gcc/config/i386/x86-tune-sched-bd.c
! aaeacee6e11072fd1883d33512ccc0a7  gcc/config/i386/x86-tune-sched-core.c
! d7b129600a2b5be302986124c48b9185  gcc/config/i386/x86-tune-sched.c
! 815eeac2701bf8ae219fb73170498a21  gcc/config/i386/x86-tune.def
! 14cf034ca3a3ff23ef6720da6c77563c  gcc/config/i386/x86intrin.h
! 8d86deedc973c8e14cb01945ca45f055  gcc/config/i386/xm-cygwin.h
! 37ac1d568896935329d5fd7fdbd5a56d  gcc/config/i386/xm-djgpp.h
! 9d7feccbd4927b2f22ebc8642e3cc149  gcc/config/i386/xm-mingw32.h
! ed81cecc3cd20cb88da894c9f6b6d763  gcc/config/i386/xmmintrin.h
! e544455b3557319c0ef22f96773d62b6  gcc/config/i386/xopintrin.h
! 672161224ec7acff37dab9df35c67e6c  gcc/config/i386/xsavecintrin.h
! d2b8cbd8bb3c85a0518ce4d267b620b1  gcc/config/i386/xsaveintrin.h
! efc43e48e6fcf11388b54c5293faa9ad  gcc/config/i386/xsaveoptintrin.h
! bcceda6967d76d1966b1afe43aa6039f  gcc/config/i386/xsavesintrin.h
! 4378489a4f2ec27d048c4612bd505ec7  gcc/config/i386/xtestintrin.h
! 059ad8dd890bfde15ef7649b7caa8829  gcc/config/i386/znver1.md
! 57cc5201febaf38bf58e0a4242bdc9fe  gcc/config/ia64/constraints.md
! 68c7d76fa7e98acb27f089056c1b8cd8  gcc/config/ia64/div.md
! 8982a2b6b6e175e36f688c71f27b754b  gcc/config/ia64/elf.h
! 78c84962489dc2b913f99cf37d2d6101  gcc/config/ia64/freebsd.h
  89edd175b4bfe583ec3ee965092fd5d0  gcc/config/ia64/hpux-unix2003.h
! 34a4ebcaad10e9742894ab326e21493e  gcc/config/ia64/hpux.h
! 8f866fe848a474e752a8200c9a7e30b4  gcc/config/ia64/ia64-c.c
! 61588240cae81a66996f5b96d71e5941  gcc/config/ia64/ia64-modes.def
! f435c4cb87c987d06685acfb8e5602a9  gcc/config/ia64/ia64-opts.h
! 7496bf19af8dfd078184c7b677f6962a  gcc/config/ia64/ia64-protos.h
! d6b979fa13a61f100b4cde9068a9231c  gcc/config/ia64/ia64.c
! fdc81e2c98249c1442e7318b38d97070  gcc/config/ia64/ia64.h
! 91e22924cefaadff78e47fa4e0d03e09  gcc/config/ia64/ia64.md
! a54f4deac7c2057498cbc7be33856c00  gcc/config/ia64/ia64.opt
  dcc77d7023d20b64688bf213c2d327b5  gcc/config/ia64/ia64intrin.h
! 79bb509f9c530854593158558d5ce90e  gcc/config/ia64/ilp32.opt
! b2010e7ace5853f2f0282f56b9b2eecc  gcc/config/ia64/itanium2.md
! 1ee446dc85d5b110a636073562725bc2  gcc/config/ia64/linux.h
! bebd71e9caa14f3da0e8328d3425385f  gcc/config/ia64/predicates.md
! e63e58c3a0b86302c4be5d3d52794d69  gcc/config/ia64/sync.md
! a4c0da9186866add2b184c2a49aa3bfc  gcc/config/ia64/sysv4.h
! 9d00cae4e877ab39a7b8082eb6c29d38  gcc/config/ia64/t-hpux
! b2caef94e0f5e7aa0cb97fbfdd178d65  gcc/config/ia64/t-ia64
  67736f64800d10923b58be4e448620d6  gcc/config/ia64/t-linux
! b7000b4c7ae4acb41d002913a5612bd9  gcc/config/ia64/vect.md
! 030cc07876d7e2683acc790dc5d8f1d4  gcc/config/ia64/vms.h
! 9d0d59e20c75ae581bd1b523ff78f022  gcc/config/ia64/vms.opt
! 7024aebbddc16f58f3fdcf5d67f2b8b9  gcc/config/initfini-array.h
! 2db6874026324e838e54102158473ab1  gcc/config/iq2000/abi
! 99d89754e9b5fdfa89b1d9541dcb3b07  gcc/config/iq2000/constraints.md
! a495303436bb1e6877eb2463add8c1ad  gcc/config/iq2000/iq2000-opts.h
! 381173785c4ebde328ec27c4db9609dd  gcc/config/iq2000/iq2000-protos.h
! 7b028a0c4a6e9d4841ca1533978cfa6d  gcc/config/iq2000/iq2000.c
! 5a47716b5582ec4b92cd009351fbc6db  gcc/config/iq2000/iq2000.h
! 83318e10a7ca7abdd9b03f3415ca5ac3  gcc/config/iq2000/iq2000.md
! 041fd0f34b30ccff32eb8eac796be990  gcc/config/iq2000/iq2000.opt
! b0a6d97bcfd66f8124ae6531db69b32a  gcc/config/iq2000/predicates.md
! 64e82d58c667d310c5611bbb68fce616  gcc/config/kfreebsd-gnu.h
! d7c0ba928d454fbd68603a7244297e6b  gcc/config/kopensolaris-gnu.h
! 0f56172093bf9435393735646271d635  gcc/config/linux-android.h
! 8aa091a45668861d042b9d265097d799  gcc/config/linux-android.opt
! 6f9608df4d88f58f7a2b539f3d331932  gcc/config/linux-protos.h
! f2bd8744ce0fc48ac1026250d974efe5  gcc/config/linux.c
! 0d3b044adc7837d94adb465cd5a40791  gcc/config/linux.h
! c0d5ebaf0e7b4da7b86a037ffb726960  gcc/config/linux.opt
! 8547076704cba237ae1321377cd58f1d  gcc/config/lm32/constraints.md
! 52f27bb15a87447631b49a9c125f91e7  gcc/config/lm32/lm32-protos.h
! 2e22d2fa596d111dfcdf619137be7a0d  gcc/config/lm32/lm32.c
! b3d41defc72407cde1a38e651a27c226  gcc/config/lm32/lm32.h
! 3d3bc340c0857f31487cf910839e8f66  gcc/config/lm32/lm32.md
! f8d93c80bc5985104e12a45f6c40c24a  gcc/config/lm32/lm32.opt
! ac1ab28777ea43daada0af7ec2705a9f  gcc/config/lm32/predicates.md
! e1f8b45ecf9106e0cc74576a0031b86e  gcc/config/lm32/rtems.h
  a9d1d80c40cc6eb8e9a32d54f82dae43  gcc/config/lm32/t-lm32
  660559cdac2b08e91486a9db7b4a2872  gcc/config/lm32/t-rtems
! 7da888d05255d50eb1466f7f4ae17196  gcc/config/lm32/uclinux-elf.h
! 592af776ffa7f6b4756b0cb028c1703a  gcc/config/lynx.h
! 381e2035570e6ccc20de8d5f4998a2b3  gcc/config/lynx.opt
! 901ab209a3fd2dd3f0735ebeb6e2ea6a  gcc/config/m32c/addsub.md
! a9389b42a350d189e873074d388ff1c2  gcc/config/m32c/bitops.md
! 6f576f0a839e135c6f7af8d3921a1100  gcc/config/m32c/blkmov.md
! 6677de534f93c5f702f455b7a1eb11dc  gcc/config/m32c/cond.md
! df59bbde062a49b32a1a69326a8692c2  gcc/config/m32c/constraints.md
! bc5b624eca28e1c19ddc1898e3946214  gcc/config/m32c/jump.md
! fa36d17db365cfcb17a41218fe76e52e  gcc/config/m32c/m32c-modes.def
! 6387b56bd8c3487c0a987a7419153e38  gcc/config/m32c/m32c-pragma.c
! 94f3d130e75abbbace0ee4028075a00b  gcc/config/m32c/m32c-protos.h
! 614b22a84dd827d4b251e0821ce6fe74  gcc/config/m32c/m32c.abi
! 1616f3bd0cfc884a0f2e253f2d785a76  gcc/config/m32c/m32c.c
! 79b6f449dfa1cda143e0a0b4964a1178  gcc/config/m32c/m32c.h
! 3f7a2846e48a8bd39517f56a07d51dd4  gcc/config/m32c/m32c.md
! bd74b80378f7cf3c77e4ee42448b3d00  gcc/config/m32c/m32c.opt
! e52bdafeb2d18498b78900a10ceb1e82  gcc/config/m32c/minmax.md
! 12bdd82c541acdb59454a052a2683537  gcc/config/m32c/mov.md
! d9ba3af6a63de61739c50ab999cf438c  gcc/config/m32c/muldiv.md
! dbb542ace3518140d4f93a2676a16e00  gcc/config/m32c/predicates.md
! 5063c9d8ec51300adcb425fd2e1e6325  gcc/config/m32c/prologue.md
! 17c4c882b35ab888fbca79b8fde10d2b  gcc/config/m32c/rtems.h
! 18e0e0ccf65e0066f72fe40bdd6561c7  gcc/config/m32c/shift.md
! 568a7c8d5dcb18eb3d9992b63a997ac7  gcc/config/m32c/t-m32c
! 1adc776f8aa495c89452caeb7b0c42b8  gcc/config/m32r/constraints.md
! 744683b44a38e40947d7b8cf8d6e885b  gcc/config/m32r/linux.h
! 3b5b7902b9367ac87ed46007781ea3ea  gcc/config/m32r/little.h
! 8cfbc9144a8dd68d38a1312524014db3  gcc/config/m32r/m32r-opts.h
! e91bb0ce17e132e9b22d15cfb83ba259  gcc/config/m32r/m32r-protos.h
! 30f27634405a4890fa275044ae2df89c  gcc/config/m32r/m32r.c
! f88148bb468d64cd27f23e4c18fd5de0  gcc/config/m32r/m32r.h
! c407f008378cb7c30b931a94ff0f981f  gcc/config/m32r/m32r.md
! 70885567ad0e6ff78541d5d609ed44b5  gcc/config/m32r/m32r.opt
! 821eea92d02a1b32ec8cec17cf2448ec  gcc/config/m32r/predicates.md
! 3b4215a003c4b36eb2fe0f98360d3142  gcc/config/m32r/t-linux
! a93eb64c2f54e7bb1e3b9fc1755bca96  gcc/config/m32r/t-m32r
! d701a6442cd23ce369e0b978a1dd0d58  gcc/config/m68k/cf.md
! 8d6f728361d6442c28af038064cd7fee  gcc/config/m68k/constraints.md
! a58d12a41a95acba58278144283fa82c  gcc/config/m68k/genopt.sh
! 46fd571ce79c7adc54c7f541300d6378  gcc/config/m68k/ieee.opt
! c3fdb6b05286696c2bfdf874d9556694  gcc/config/m68k/linux.h
! c65f20297d9591e9fe8fe4a618ea03be  gcc/config/m68k/m68020-elf.h
! 9f960cac65cee4f5a33a3d7648148d47  gcc/config/m68k/m68k-devices.def
! 796130f95cca99d003b4644d2e92aa24  gcc/config/m68k/m68k-isas.def
! e505930e899171cce16c111a96679a05  gcc/config/m68k/m68k-microarchs.def
! 856c534eb44527a33951eb04dfb2bc16  gcc/config/m68k/m68k-modes.def
! f4593bdd28aaffc973c5cb01c8ef8dd9  gcc/config/m68k/m68k-none.h
! 95a9e75ad3c552eb5ec3ac60718dd475  gcc/config/m68k/m68k-opts.h
! 9609c7fdce034692630a7365f278b0ac  gcc/config/m68k/m68k-protos.h
! c461b502dc70fe9eca8ffbccb6a14799  gcc/config/m68k/m68k-tables.opt
! 8cd10abab7250478caf44551bf5a150b  gcc/config/m68k/m68k.c
! c45d839fb85033ef1d43153d3260469b  gcc/config/m68k/m68k.h
! 01d85f93cca83f790dfeba90bc98c416  gcc/config/m68k/m68k.md
! f98b363ad9f5d922bef07448dc136b4a  gcc/config/m68k/m68k.opt
! bd1eb32f0087ca4e111254988cb59f74  gcc/config/m68k/m68kelf.h
! ba8bd977f5a4b7659f30b721cbb15849  gcc/config/m68k/m68kemb.h
  c0472199959f16fcb58702880954da6e  gcc/config/m68k/math-68881.h
! 9758da6fbe11c9142714028b1829f19a  gcc/config/m68k/netbsd-elf.h
! ea329edbb25bf87c4a7d2256594c561f  gcc/config/m68k/openbsd.h
! a066579ae62ad1f2edfcb869e0039df8  gcc/config/m68k/predicates.md
! 9c160aa075f17cbb2b25d41884075c21  gcc/config/m68k/print-sysroot-suffix.sh
! c28637f6ab62aec2cbe13f88233f652a  gcc/config/m68k/rtemself.h
! 5f412704bc92c686d4b1127ee4c0b10f  gcc/config/m68k/sync.md
  19d5ed41f3394c9423ff3afe64804076  gcc/config/m68k/t-cf
! fa6d4a523d107caedd0c0cc598f82d00  gcc/config/m68k/t-linux
  baa4595148bafa6426b8d665881ced45  gcc/config/m68k/t-m68k
  c8278c25339f71d746d91a193efd6cea  gcc/config/m68k/t-m68kbare
! f35cb57aa51ed7408545d1fae5a06953  gcc/config/m68k/t-mlibs
  0fd519d41689e5af998ca53a2f11e7d2  gcc/config/m68k/t-openbsd
  2919d876e31e6c4e0955d8cd4be5ce28  gcc/config/m68k/t-opts
  2899d62cd61c46fe504594a232959581  gcc/config/m68k/t-rtems
! 7f9310a246902f4c1e804e547ffee745  gcc/config/m68k/t-uclinux
! 1031836e6098e97bc2f98072048e8da2  gcc/config/m68k/uclinux.h
! 3d54225a63eb2bd9c162fe028b38d8f6  gcc/config/m68k/uclinux.opt
! 7774fdba2abba67246f1f88588b76fc8  gcc/config/mcore/constraints.md
! 4ac67daa73161a5bfe3c199feea3a690  gcc/config/mcore/mcore-elf.h
! 92562795a4e88ea5484cd7be7aa60d68  gcc/config/mcore/mcore-protos.h
! e90b504e93e1b7a770599ed6cf18b5aa  gcc/config/mcore/mcore.c
! fc28915f948321f063f26f547d0a6805  gcc/config/mcore/mcore.h
! 4eea731e71a0f8ccc4d5289675838a4c  gcc/config/mcore/mcore.md
! e6ff572fc1f3ff644668708335d56626  gcc/config/mcore/mcore.opt
! 943a998484ca56853e1ca00926f7c25c  gcc/config/mcore/predicates.md
! 3a763664479ea462574a78809718669e  gcc/config/mcore/t-mcore
! c725142d08146e69c3e228b17ca189a2  gcc/config/microblaze/constraints.md
! cc732fe95e765d4a4d5c0b0da6cd3343  gcc/config/microblaze/linux.h
! ee8a74787ffdb3857fc53b206c0ab957  gcc/config/microblaze/microblaze-c.c
! 5557002c306d6dca880fa623dacb208f  gcc/config/microblaze/microblaze-protos.h
! 88a830cde167be15fa1dd81c9f188738  gcc/config/microblaze/microblaze.c
! 03249b3e53d825974f558ef337e17bb1  gcc/config/microblaze/microblaze.h
! 9c7ea082f30c5538e32424b2ca6f3f08  gcc/config/microblaze/microblaze.md
! 23f671dfe2ab9db1ee8040d4c06f14e8  gcc/config/microblaze/microblaze.opt
! 4a256078334872edfc87e02ea51151b2  gcc/config/microblaze/predicates.md
! 48d3586ef307fad01c1734bfc333e893  gcc/config/microblaze/rtems.h
! 6e04bf12fa1d40be194dd4e2303e0022  gcc/config/microblaze/sync.md
  17818a25ae3112098cd91d698e37f0f7  gcc/config/microblaze/t-microblaze
  63ccba4e7f745d36609d7c129bac6288  gcc/config/microblaze/t-microblaze-linux
  a8b08640136e3e7712d2278eb84c21d9  gcc/config/microblaze/t-rtems
! 0aa2544356a5c750e2513b2c3770cb17  gcc/config/mips/10000.md
! 532f0d24b88aa9c70bb699aef5b1eddd  gcc/config/mips/20kc.md
! d72b38eac23d5927d58e4a80b6c5bc22  gcc/config/mips/24k.md
! 0a34b66b077cee2b2c68cdc92afb7714  gcc/config/mips/3000.md
! 739cdf19e29eb2b9b18ff3c235fa5e32  gcc/config/mips/4000.md
! 520fecd1bef1c9954ea6b48ff6cf1d31  gcc/config/mips/4100.md
! d4d62066d7bbe2b72b9e9902578d66ec  gcc/config/mips/4130.md
! 4151861b4ca9bfd3af1236bb79e82360  gcc/config/mips/4300.md
! 65fa74ca0c2ade26cfdc9f966ae5e52f  gcc/config/mips/4600.md
! ef968b5b5cb0e8065b902cfc5881ed7e  gcc/config/mips/4k.md
! dc60173f240106880dcadb769c7be2f5  gcc/config/mips/5000.md
! 29c0dac8db7c95de8b6c6c06b490572e  gcc/config/mips/5400.md
! b9fc31c54e78879bab9eecd180653213  gcc/config/mips/5500.md
! c48e98e8ce7b9094336a48453d323da7  gcc/config/mips/5k.md
! 810ba6b3fc98a8cb4ee5beccfc8dbe2e  gcc/config/mips/6000.md
! 164fefbb9dd9ec035443da7ef1288044  gcc/config/mips/7000.md
! 68666f5f9e2e1da3a27c9d106c4663f9  gcc/config/mips/74k.md
! 9c843452189a77eaff454a75f72d0f6d  gcc/config/mips/9000.md
! 04201089f283838810df35cb949085cf  gcc/config/mips/constraints.md
! 416348b78a8f8cbd2721f3e8486025c0  gcc/config/mips/driver-native.c
! 64e3c7cdc299d8bdec06bc9ac7bddb25  gcc/config/mips/elf.h
! 525bea2e678ef11208f6c0b947bcf79b  gcc/config/mips/elfoabi.h
! 8e06743ab559bb184decd13c595fd25d  gcc/config/mips/elforion.h
! 1453fa4c723feb9d2276416066ac839b  gcc/config/mips/frame-header-opt.c
! c54c7f10e3703498cfe80ceb4f3d2715  gcc/config/mips/generic.md
! 366a1f70e3ca7caf4b41343107d4b7d7  gcc/config/mips/genopt.sh
! 7ac2f235e50058b004e9f935dca27a38  gcc/config/mips/gnu-user.h
! 5c58d2f201b1b9e4f147f0835b7ed95b  gcc/config/mips/gs264e.md
! 923a7eed0a0c1f953193c3ece7e0cfb0  gcc/config/mips/gs464.md
! 0cdb992662c52e6d45ee991ac052b070  gcc/config/mips/gs464e.md
! a2b04d6ad6e386975d725127615c925c  gcc/config/mips/i6400.md
! c7288d590e2b52854b5d6742466ba42e  gcc/config/mips/linux-common.h
! ba9b1761cdcb7dd849959a0723278a96  gcc/config/mips/linux.h
! 6c74febaea5707a5ef3ea42d98e548bd  gcc/config/mips/loongson-mmi.md
! 470c00e546317b75e0470810d42d00f1  gcc/config/mips/loongson-mmiintrin.h
! 86b04aee4c1e5d1dad15666d33d790be  gcc/config/mips/loongson.h
! 538ef1c44649fa7774fb5a2b2828ef1f  gcc/config/mips/loongson2ef.md
! 5827be7d7de88b0fce28da246c1243fe  gcc/config/mips/m5100.md
! e4fbe7ebf8afa7202fad647aee0c880e  gcc/config/mips/micromips.md
! e8a643ad81fa44efed5c793bee5b54c0  gcc/config/mips/mips-cpus.def
! ea621d04860b860eb97db80286676185  gcc/config/mips/mips-d.c
! b6802d25ab6b1096e4f87670342dd4e4  gcc/config/mips/mips-dsp.md
! 236be612c7506ba763b07d3ea349556e  gcc/config/mips/mips-dspr2.md
! 2ad92ec35e1fcf1886378a41bd1a9ba3  gcc/config/mips/mips-fixed.md
! 3364e43b7eefd2a7eb15dd0ca69d0220  gcc/config/mips/mips-ftypes.def
! 25cb04c3c727fdc0e82a3e753a04b400  gcc/config/mips/mips-modes.def
! ece500ba29c04ecc1b09760cc9c5555a  gcc/config/mips/mips-msa.md
! ac6725a95f273de60b9b3463b44c1aad  gcc/config/mips/mips-opts.h
! bd088aa1b8b747e9c435d336ff7ded95  gcc/config/mips/mips-protos.h
! 3613c4c901769d3242c7bcaecbd1127c  gcc/config/mips/mips-ps-3d.md
! f50a957373d54fcdd5924d8ee73debce  gcc/config/mips/mips-tables.opt
! 430da2f9061824c02b6a34eabac739a1  gcc/config/mips/mips.c
! d7ca6bc4237a57d1093e4b11cad67198  gcc/config/mips/mips.h
! 79e0c33334d2d85258cc65b3e2d00a39  gcc/config/mips/mips.md
! 0c18b24e94fdbc8d4e16ccd81dac2622  gcc/config/mips/mips.opt
! 083a83c39a071f007984779d2e35cb16  gcc/config/mips/msa.h
! 1bd85834dcbf1471b45c96df5bd7f0a4  gcc/config/mips/mti-elf.h
! 666c4948c060a9fc0e57bc6d3bf0faa7  gcc/config/mips/mti-linux.h
! 4e1ab2efe522f9d9c7085d55d5ff2dfc  gcc/config/mips/n32-elf.h
! f369c1c10ce85d8cbb433c81426a7e82  gcc/config/mips/netbsd.h
! 5f7bef5ad66ebedb6bcc31cc4c855dea  gcc/config/mips/octeon.md
! c9ab10dd4cd225c306af8b773291cdd2  gcc/config/mips/p5600.md
! 0b474d59d5a604f58e00a0a72fc0d186  gcc/config/mips/p6600.md
! 2318af6ba20618c3a070ec95cc0da8a9  gcc/config/mips/predicates.md
! a410aa1e3deda41b645ed179193d5332  gcc/config/mips/r3900.h
! 2697d3ebed6cd212c6ea7251958f4dfb  gcc/config/mips/rtems.h
! 0430f3e2a3cd303c43a7331433fcdcae  gcc/config/mips/sb1.md
! fcb93db962a509630b638ae4cab69706  gcc/config/mips/sde.h
! 5fb077ab5a28995ee6651ffe591c55de  gcc/config/mips/sde.opt
! 25f3c7b7ffb6148980e3c349a98c86c2  gcc/config/mips/sdemtk.h
! 71d8b4d89012e4ff4d803c142a3c1113  gcc/config/mips/sr71k.md
! 16a004b3128cedcc2e49fffdf018fe87  gcc/config/mips/st.h
! 5f73d40658b0c31944b124235475cf0a  gcc/config/mips/sync.md
! 2377b10b17d626b56e0a0c3a8a1ee514  gcc/config/mips/t-elf
! 112eeb50a1e5c7892e5f5fae3ffc2cc9  gcc/config/mips/t-img-elf
! 65fbfc584e5b29ced467a8999de34bee  gcc/config/mips/t-img-linux
  f99fd825138aaee60804b8915e20d22e  gcc/config/mips/t-irix6
! d567afd474bf8207bcc062292962d068  gcc/config/mips/t-isa3264
! 027a5bf5f7951d9abb3b932bb8d3c240  gcc/config/mips/t-linux64
! 4dbedff523585484340240bc51610487  gcc/config/mips/t-mips
! 5e18a12207b12110226756d96b9f6597  gcc/config/mips/t-mti-elf
! 9ec9e9a8b62faad47c8444f766cb01f3  gcc/config/mips/t-mti-linux
! 211efbc1d6d708c7b1927b84a928ff68  gcc/config/mips/t-r3900
! 6b62b00e41f5fe948843abe34cda1527  gcc/config/mips/t-rtems
! 3e960bfaecbcf2d6d019eb4521b29bb2  gcc/config/mips/t-sb1
! a6f645ccf63c2a30e97af48811eb292d  gcc/config/mips/t-sde
! 018ddb42ab98a43fdcb556b5350070cf  gcc/config/mips/t-sdemtk
! e66c6af8839b60954bec18cc4c22058e  gcc/config/mips/t-sr71k
! ca24b09bcc0048e52fa655f5483fd4cb  gcc/config/mips/t-st
! 7f603be053f692308d84d84764291926  gcc/config/mips/t-vr
! c3c402d6409faa97666e864c566913ab  gcc/config/mips/t-vxworks
! f9aa77135457dc11243adb62cecec08e  gcc/config/mips/vr.h
! 3144bea1e7e7e8acbee25fdcd949845b  gcc/config/mips/vxworks.h
  28d4de1043946a571cca5f03b486aafe  gcc/config/mips/x-native
! 5e786c77242ef5f6ea13ca45f57bc273  gcc/config/mips/xlp.md
! c659879b35a0ff45aeb25eae74038763  gcc/config/mips/xlr.md
! 578aaa3acf3a544db004a9145f4abcbe  gcc/config/mmix/constraints.md
! 9fbe2d01cc7ef56cd34cb064e0b2e1e1  gcc/config/mmix/mmix-modes.def
! 6a809e7a0485359e3d1d28f3a4e8a971  gcc/config/mmix/mmix-protos.h
! 3ee8e5ab1d404b2e7d3340bf0e29733b  gcc/config/mmix/mmix.c
! 1a2838044d8e02062907ca6942716d93  gcc/config/mmix/mmix.h
! 8a3f2d7952826dff349aa195a7d0f474  gcc/config/mmix/mmix.md
! 3ac102804b6afcc58d818ca2aec87442  gcc/config/mmix/mmix.opt
! c684a8b3b0cde47ab749003e6079e15d  gcc/config/mmix/predicates.md
! 0e563c269d241b72ec2bcd4745caa814  gcc/config/mmix/t-mmix
! 94202fc94618e8ce499ec5f534e59614  gcc/config/mn10300/constraints.md
! 6ef7125d842ac5ec569f21cfe10748d0  gcc/config/mn10300/linux.h
! 4465f85df2143da9edda85bafb998401  gcc/config/mn10300/mn10300-modes.def
! 2beb06fca46de6fa7ed49530d5f6d407  gcc/config/mn10300/mn10300-opts.h
! 6b20f416ca4643cbdf975431776947ce  gcc/config/mn10300/mn10300-protos.h
! b05aaba3a9f0c805ab67a35e02fb31d6  gcc/config/mn10300/mn10300.c
! bb1b69ef5c6d99b23ae38fbf3c199831  gcc/config/mn10300/mn10300.h
! 82e4c93ec1dd50313d5cce2e2f638827  gcc/config/mn10300/mn10300.md
! c98a779feb1a72588fe721f52d6bf78b  gcc/config/mn10300/mn10300.opt
! 32ee66134e743e715e23e558b9ba6f2d  gcc/config/mn10300/predicates.md
! ca3fbdbfff3be13322e67f5bd25d1b63  gcc/config/mn10300/t-mn10300
! bef63a516e859c5deb4b65386a6b3bd2  gcc/config/moxie/constraints.md
! a9742d051f2142054b34eb225b5cc28f  gcc/config/moxie/moxie-protos.h
! f177353af311b0bcfcae595602200698  gcc/config/moxie/moxie.c
! 5d29dbc8877fdbdc9ec93a1869670f59  gcc/config/moxie/moxie.h
! 73a662902bcd64dda04530b6e7396b40  gcc/config/moxie/moxie.md
! 2c5e3606d004bd0027eb537ff8f195d5  gcc/config/moxie/moxie.opt
! 6b727b664495a0dd9899b8c145cd1df7  gcc/config/moxie/moxiebox.h
! 79e20f12a0c2bbb5220b6ece9a80746e  gcc/config/moxie/predicates.md
! c4a7a0a1e5711bbf1b3a303fc91d032b  gcc/config/moxie/rtems.h
! 5417380102a0c9d4a0b5f39a1bfcfbe7  gcc/config/moxie/t-moxie
! f08db188dd3c73017487c8df5f4879f3  gcc/config/moxie/uclinux.h
  f276505b774e975b88b6c90362783e73  gcc/config/msp430/README.txt
! c4ddd723271a2535581a64851e689bfe  gcc/config/msp430/constraints.md
! 587cb5941e1eeb810360f5b19b847acd  gcc/config/msp430/driver-msp430.c
! ceffd1d3932eda6c04e5a22ea8a313ef  gcc/config/msp430/msp430-c.c
! 5fdbfffb2c43b8ed7072072f878b6fcd  gcc/config/msp430/msp430-devices.c
! c6294f732af790b33b868d9c607a7e8c  gcc/config/msp430/msp430-devices.h
  e081143def3cf3a59cd1181fc9162d41  gcc/config/msp430/msp430-modes.def
! c848277a38c2865da0c28f9c723de9bf  gcc/config/msp430/msp430-opts.h
! 364086fb1e6d341e1abeb2645a084eda  gcc/config/msp430/msp430-protos.h
! a07a2d499f5ddde6b9d53eba93583cc8  gcc/config/msp430/msp430.c
! 700e35bc7d980137578c0479287e1dd0  gcc/config/msp430/msp430.h
! ba76b68c96582e83589cb37bef5b3b81  gcc/config/msp430/msp430.md
! ac5d15e42cba5ccc52970753b3e21178  gcc/config/msp430/msp430.opt
! d077d7591f7fde9c0abe7f11ad493a90  gcc/config/msp430/predicates.md
! 7d40bc6610b1d1068f3897debb35c6cf  gcc/config/msp430/t-msp430
! 19bcd44bf1591df20d71d30f50f1fe91  gcc/config/nds32/constants.md
! 6de283d11ff60057ec2c2e3b3d3208d0  gcc/config/nds32/constraints.md
! 1668172d18538f12e0ca66e64a4d5e51  gcc/config/nds32/elf.h
! 1255cd2a475063ac4c6c858c8a1a6d6b  gcc/config/nds32/iterators.md
! ecf5f0a3c298f89eb66dc690a5738f61  gcc/config/nds32/linux.h
! a7f1b91a8f1a4e3f35603545e00325cc  gcc/config/nds32/nds32-cost.c
! 7467712bf2d2be098fe3fa23021d592d  gcc/config/nds32/nds32-doubleword.md
! 55745eb750614f56b07f636f8a773abb  gcc/config/nds32/nds32-dspext.md
! 31814f363329285f2196fe554bada40d  gcc/config/nds32/nds32-e8.md
  c316334a86026beb55e5c25b4b855f95  gcc/config/nds32/nds32-elf.opt
! 12979ee9eef39c10271d9b2ce6d6b8f8  gcc/config/nds32/nds32-fp-as-gp.c
! 63e4de5dcf5f1a716180c4b728f89f2e  gcc/config/nds32/nds32-fpu.md
! a4d112680fa898fa4a9a2451065d6691  gcc/config/nds32/nds32-graywolf.md
! 1a561a929b23a36280542521c8044d8d  gcc/config/nds32/nds32-intrinsic.c
! 332575983065fb659e9cb0909e404ada  gcc/config/nds32/nds32-intrinsic.md
! 97aaaab2fe96bb65f47e659884fd7601  gcc/config/nds32/nds32-isr.c
  d94163fd5e4660359b8b12a0d90ed1bd  gcc/config/nds32/nds32-linux.opt
! 1d730ac8a4161546f38c17f6e5d0227f  gcc/config/nds32/nds32-md-auxiliary.c
! e0a71ebdf46c80d9bd8eb29ee33a4c05  gcc/config/nds32/nds32-memory-manipulation.c
! b714195a7a0c122ea12e87c1ff2da9b0  gcc/config/nds32/nds32-modes.def
! f6bfc7b36bb2375dae77d9864f53dd67  gcc/config/nds32/nds32-multiple.md
! 98005e798e2b9ab90100c116feb18f72  gcc/config/nds32/nds32-n10.md
! e7f6e000bbae4b4a508ecf40654f4674  gcc/config/nds32/nds32-n13.md
! 657d59cdbfa2234b2b9343774e4fddaa  gcc/config/nds32/nds32-n7.md
! 41b619972103b12d59e48ee79684ca18  gcc/config/nds32/nds32-n8.md
! b21d6383b3ab110dfca3af9196710d8e  gcc/config/nds32/nds32-n9-2r1w.md
! f1a25fbfd4a2d63db3f58ae282e9fa06  gcc/config/nds32/nds32-n9-3r2w.md
! ce25182ab8851ac3be8215cc945f99ab  gcc/config/nds32/nds32-opts.h
! 87ba5aea0290ac3e830d3903dd090b0d  gcc/config/nds32/nds32-peephole2.md
! 6bcffc2a66b5a45d4a781d02d1e0993a  gcc/config/nds32/nds32-pipelines-auxiliary.c
! fbb0c85f9c8c8704031b44633e2093d9  gcc/config/nds32/nds32-predicates.c
! a41a57b6167a1ac0891bc3e27aaeb11e  gcc/config/nds32/nds32-protos.h
! 404f903de570269a983b2db90a787163  gcc/config/nds32/nds32-relax-opt.c
! 246621d70f7c5eda1d649439b00d38e0  gcc/config/nds32/nds32-utils.c
! fe8b5fd7f332301f17d70871b66688a3  gcc/config/nds32/nds32.c
! 573055ed51bc1bfef773deb2bf39f4c6  gcc/config/nds32/nds32.h
! 73eb57fa03f15d67c9203bb543d075bd  gcc/config/nds32/nds32.md
! 006d433b90186e7124e3275650a288d1  gcc/config/nds32/nds32.opt
  c09acceb380f58ddb795ee3e973945d7  gcc/config/nds32/nds32_init.inc
! 1706cae26ab4ba27561136d975f0b41c  gcc/config/nds32/nds32_intrinsic.h
! b2770bcac9a20f148a3838ceba21c4d2  gcc/config/nds32/nds32_isr.h
! 9cfb53cb697c293b156e66071bb90879  gcc/config/nds32/pipelines.md
! a4ee581a0b907e10d39132e1a8c26e0b  gcc/config/nds32/predicates.md
! 0505ae0acd22a768aa302b6970385c9c  gcc/config/nds32/t-elf
! 6cb7c5cf0d527c2bdb878c0dd2f64886  gcc/config/nds32/t-linux
! b3be343d735e9668d62e4ff063eaee64  gcc/config/nds32/t-mlibs
! fafca9dfaa70cddffd62923d9fe86a34  gcc/config/nds32/t-nds32
! ceea8a100fa01dc4df67740eb1f5edc0  gcc/config/netbsd-d.c
! 105d3f89ff58584931c4ada52fd1ea5d  gcc/config/netbsd-elf.h
! 5f96f55a006f181346a135a5b93055b7  gcc/config/netbsd-elf.opt
! b16549b0c570c51670baca3f9ccbfe24  gcc/config/netbsd-protos.h
! efa773bcc6bcb5b21878777c9014d7a9  gcc/config/netbsd-stdint.h
! a051318fd5fa97af08c05ca48591c7e1  gcc/config/netbsd.c
! ff935fe4fe7a104875c9c09426eec42c  gcc/config/netbsd.h
! 32deffc2ba72cc05b6716a4e990b383d  gcc/config/netbsd.opt
! 5362478f92100e65f6701902c46c99d6  gcc/config/newlib-stdint.h
! 05e1a5b0373cce39aa6872b3ac9515ee  gcc/config/nios2/constraints.md
! 083dfa5ae8214c65f06ddb762c482a0a  gcc/config/nios2/elf.h
! 4af71ca68eb401d184f793fee1fa91da  gcc/config/nios2/elf.opt
! 1ede5a84b2808830a34d83e8c7f1428a  gcc/config/nios2/ldstwm.md
! c722dd5da3e5c0d2253f21014a82a3fd  gcc/config/nios2/linux.h
! 411753f0bfc18aca04a13661b107ffc8  gcc/config/nios2/nios2-ldstwm.sml
! 115905a42140bd6b8021432987162e16  gcc/config/nios2/nios2-opts.h
! 457f87a4b5dd3188dcb35d7730ff49a8  gcc/config/nios2/nios2-protos.h
! 7691dfc12115d547d69960ae4db8ca46  gcc/config/nios2/nios2.c
! 989b2992819c1c4e60566e1782c90ff2  gcc/config/nios2/nios2.h
! afd7a0bc550af6c6af48a78323288309  gcc/config/nios2/nios2.md
! 41b640a8b291878f2ad4ac9f967c435f  gcc/config/nios2/nios2.opt
! 9dff1c03b6807724ee9e3ea22e79c503  gcc/config/nios2/predicates.md
! b06eb4f4e4b409e760de176c40241687  gcc/config/nios2/rtems.h
! 73432f47272baeff91e8a8e41c8b2e16  gcc/config/nios2/sync.md
! 195af0614cdb76a935bea5a68912ed2b  gcc/config/nios2/t-nios2
! d835d08884a2846e70bef505767bd3f1  gcc/config/nios2/t-rtems
! b1dd3bb66ec6a2729fd8f218492bd12f  gcc/config/nvptx/mkoffload.c
  c2aabf1e8738380511a66426506fe906  gcc/config/nvptx/nvptx-modes.def
! f69e8296d0faf31ac6e0c63114465e34  gcc/config/nvptx/nvptx-opts.h
! 6bc8bb882a5681c91d3230b7025912fa  gcc/config/nvptx/nvptx-protos.h
! 42e08da3570deec40963c67e54eede38  gcc/config/nvptx/nvptx.c
! 57339b7de27558e634bb329734f050d2  gcc/config/nvptx/nvptx.h
! 391495ed22dce89f4982984d68ac1335  gcc/config/nvptx/nvptx.md
! 99e673a4a625e68b02c366b8775cd2ab  gcc/config/nvptx/nvptx.opt
! ac2c4d3eacbb8dc2222e17bc88fe3be4  gcc/config/nvptx/offload.h
  161bfe9f99d4d18fdb67553220ba175a  gcc/config/nvptx/t-nvptx
  f9036e875fd1f68b4e56b8e278983e89  gcc/config/nvptx/t-omp-device
! c201311c0e397fca467003401bb0ef98  gcc/config/openbsd-libpthread.h
  3d4a70d0decf61f1fba17df545cea7f5  gcc/config/openbsd-stdint.h
! 631d69b9674ac5306e5180870316bb1f  gcc/config/openbsd.h
! d9c565ca69e3fe8c9ec60b831b758694  gcc/config/openbsd.opt
! 1ebeb1b34f3981df11405db5e05f5195  gcc/config/or1k/constraints.md
! ce60de35b1c059dbdfb60bb8fd9091ce  gcc/config/or1k/elf.h
! b229770b33612b0a980950f27535acd6  gcc/config/or1k/elf.opt
! b6dbd0677f1a8b5035354b167ed838c9  gcc/config/or1k/linux.h
! 3a3e93d029fb8c55ed90895a012984ca  gcc/config/or1k/or1k-protos.h
! a9d006ee62315521bbd7490f21598a81  gcc/config/or1k/or1k.c
! 53544ba90cf1a6e7ad0cefa608efafa8  gcc/config/or1k/or1k.h
! 3fbb2a357dd33dab760bc17095d9007b  gcc/config/or1k/or1k.md
! ded80ae45e90ea3ece3ad7bdfb009db0  gcc/config/or1k/or1k.opt
! b30f2e5160bb8424cee4d14dfc490db1  gcc/config/or1k/predicates.md
! 51a4b32cb93473c16d7a242d68b0529c  gcc/config/or1k/rtems.h
! 1d2270d8dd7e536b26f4f79c8a806dfe  gcc/config/or1k/t-or1k
  f58d4380ee68891690f4302989ce00cb  gcc/config/or1k/t-rtems
! 2fe42c55b2fb7fa11f7ba03d88977b3b  gcc/config/pa/constraints.md
! 83e2c9a34b6efbff210794793fcb6906  gcc/config/pa/elf.h
! 2b84113f06e3e49b2aed2dec7daee6cd  gcc/config/pa/pa-64.h
! 3677a66108d41a9323e87ea553bc269b  gcc/config/pa/pa-d.c
! 3fbd965ba35dc319b1aec67e33c9024f  gcc/config/pa/pa-hpux.h
! 57a13e4f3edb2d274d9175aea60f885e  gcc/config/pa/pa-hpux.opt
! 67dda4b1f4131cfd31cb778f38150cfe  gcc/config/pa/pa-hpux10.h
! 7974c420b7820262ea38679e830067ee  gcc/config/pa/pa-hpux10.opt
! e81177c4aa7a87ed2812c87a84165086  gcc/config/pa/pa-hpux1010.h
! 9747a1cd4970b88a83faa92a20b58b01  gcc/config/pa/pa-hpux1010.opt
! c95587e85d356d533fff949c3f5ad8c0  gcc/config/pa/pa-hpux11.h
! 6139d9446c2f7e13a6377dbc8c017e6e  gcc/config/pa/pa-hpux1111.h
! 320938a23a02d45a88071e1bd61023a2  gcc/config/pa/pa-hpux1111.opt
! 549ed32002ae690c5432832037e0bbdb  gcc/config/pa/pa-hpux1131.h
! ffca2ab80ab4024c3a917ffc604a7458  gcc/config/pa/pa-hpux1131.opt
! 5cdb6f6c063503f27905c86e847fc462  gcc/config/pa/pa-linux.h
! 44aebbecb5da0d17ecc5827eb9c2d818  gcc/config/pa/pa-modes.def
! b8ee5c8677ab43e55b9f7e62764c4a04  gcc/config/pa/pa-netbsd.h
! 5196f090a3dcf604b76e4e893194e765  gcc/config/pa/pa-openbsd.h
! 9190ac8a03fb1c7c9e4131577920323b  gcc/config/pa/pa-opts.h
! 600cc6b55002e21d4f050a4ffa931a47  gcc/config/pa/pa-protos.h
! 4eed25740d2f252c2127973493e76427  gcc/config/pa/pa.c
! 729ac301be06873dad20c162c59219d4  gcc/config/pa/pa.h
! 1169398b9e95832e13ee896f35eaaabe  gcc/config/pa/pa.md
! 37c733417df67fda01071ce53eb5d250  gcc/config/pa/pa.opt
! cc3cc3d1899ff4f5cb88c2f9bafacd29  gcc/config/pa/pa32-linux.h
! 06da5dd5b5dd2bc20c1c12095a44d29a  gcc/config/pa/pa32-netbsd.h
! f875bc27b798cd1515abd4dcee1c1af7  gcc/config/pa/pa32-openbsd.h
! 29694dcdeff2890e9e6bf346659e39c1  gcc/config/pa/pa32-regs.h
! df3517b312120624a78c87cc60b2b045  gcc/config/pa/pa64-hpux.h
! 792086212ba1f2d6a135474832a948cd  gcc/config/pa/pa64-hpux.opt
! 2f9bfa2d4d00f1fdd939c06c175f24e0  gcc/config/pa/pa64-linux.h
! 977469f5d5cf406f2eaace9e52777477  gcc/config/pa/pa64-regs.h
  a9a6afd79b827565ffb8de8330b4cfe6  gcc/config/pa/pa64-start.h
! 1ccbeefe321fccb97b1ca34dfb471e58  gcc/config/pa/predicates.md
! e2a0eab7abfefce6a7b10e5a0be69ff9  gcc/config/pa/som.h
  4104beb84cb7f3a8a5915652c3da66c5  gcc/config/pa/t-dce-thr
  6fd25f8c665d2d7390ea94c01dcb8e34  gcc/config/pa/t-linux
  b6278c3de5f5690b62f0fdb46d14dfde  gcc/config/pa/t-pa
! a90097bffc956e07c48f29d768cd8df9  gcc/config/pdp11/constraints.md
! 0bdfeaaf5c7943a8c809b352f0132931  gcc/config/pdp11/pdp11-modes.def
! 354ecd77f51687336bef5f1880896cf1  gcc/config/pdp11/pdp11-protos.h
! 430cc94702151c59ffa35fcaa9e99f15  gcc/config/pdp11/pdp11.c
! 7f26078928eeff51af1344da8fbd8d45  gcc/config/pdp11/pdp11.h
! 26ff536c450b884feda3840dd25da6ee  gcc/config/pdp11/pdp11.md
! abc4f4f791c899788e568ea6f3648e0b  gcc/config/pdp11/pdp11.opt
! 9038121353d69721ad570f7a07e30c67  gcc/config/pdp11/predicates.md
! 9f4c3a4193ed50fa76cd955b8337a80e  gcc/config/pdp11/t-pdp11
! c6ada45d5322f40d24672511b4686d63  gcc/config/phoenix.h
! 1fda45802ca37e418d4e64fa5ccba290  gcc/config/print-sysroot-suffix.sh
! 6f557c2d977bd59909f3bc4bb25734ba  gcc/config/pru/alu-zext.md
! d70ff4457c816a2868efd41430cc0c1a  gcc/config/pru/constraints.md
! dadd60d492fc617e9ca373db6f3587f6  gcc/config/pru/predicates.md
! 4703d5f24afb0b25c978828c8e8c7707  gcc/config/pru/pru-opts.h
! caefb5dc74c9fc9e348140a89b961b5f  gcc/config/pru/pru-passes.c
! 0e7140c2b1173a33d311d150ff717ef0  gcc/config/pru/pru-pragma.c
! 3a7345edeffcda9e8cb68e8c7755a096  gcc/config/pru/pru-protos.h
! 4e7e59aae0bdbb74b1dea646e216f2a3  gcc/config/pru/pru.c
! 28f36ff04c2461f21554111ab947f31a  gcc/config/pru/pru.h
! eb9f4fcdfc5a4243c206f1565385b3ad  gcc/config/pru/pru.md
! 36f0dc6dab43d4ac67bedcea1b1f02fa  gcc/config/pru/pru.opt
! 89a1a5cf03a6568347ebef88d7c1d17a  gcc/config/pru/t-pru
! 83530f17e4a47c32ffa833fdb5b57f8b  gcc/config/riscv/constraints.md
! 54c9137770e5b9a13add15e693e41990  gcc/config/riscv/elf.h
! 2a60b07f7768a27a466d9a0bc59b5469  gcc/config/riscv/freebsd.h
! cae2a396ba118653ca99f372ece39631  gcc/config/riscv/generic.md
! 0cc54eaaf1c5b2b7254cee68d3089c59  gcc/config/riscv/linux.h
! 6452bca45d407656fecd5eae707123bf  gcc/config/riscv/multilib-generator
! 60ab753f464b2a88ee86189187f3ec90  gcc/config/riscv/peephole.md
! 594584ec2ba551e9b58f36f154ac382a  gcc/config/riscv/pic.md
! b8e72eb7f595b70b07a7e8e4c13547de  gcc/config/riscv/predicates.md
! 7bc8d4e3ef36abd53dd804df38a1b7c4  gcc/config/riscv/riscv-builtins.c
! 03814de089fda4c78022ab06ae39a189  gcc/config/riscv/riscv-c.c
! d720e237513fd5f86919b747aad43b3a  gcc/config/riscv/riscv-d.c
! dbd1ada02e99fc6757a037cd345573e2  gcc/config/riscv/riscv-ftypes.def
! d4a0e32d016f64d2515fc00ee90e9115  gcc/config/riscv/riscv-modes.def
! 5a4c013a8d773cdc1886b093f00452a7  gcc/config/riscv/riscv-opts.h
! a2db0ab03c898ea216460425bc2dc283  gcc/config/riscv/riscv-protos.h
  f60d94e10e9a0c6a4ddae1f3aae0bbc4  gcc/config/riscv/riscv-sr.c
! 1d3e84dbcb5e84dea4f3b3d34184af04  gcc/config/riscv/riscv.c
! ce01b3abd3639dab925bc8049f0f34e9  gcc/config/riscv/riscv.h
! c8a3e3e9cfba0a473b34470198d444c5  gcc/config/riscv/riscv.md
! 74bd90ecbb49ef32ca8e24c1d51b6a14  gcc/config/riscv/riscv.opt
! fedc147af199790c80324872da7c22fd  gcc/config/riscv/rtems.h
  462630614e6e7a6209f8f18b6dff0eef  gcc/config/riscv/sifive-7.md
! ed1fdbe0c1c20ab8b5dcf70240fcf773  gcc/config/riscv/sync.md
  1c27821991689abdaa7a908a0cc8dfa4  gcc/config/riscv/t-elf-multilib
  d8ae7bee35ef1ecd77143535da9aae78  gcc/config/riscv/t-linux
  1ed181a166b1d0e206c4a4e0024cce2a  gcc/config/riscv/t-linux-multilib
! 4a5605eae04350fd2184c710bde05984  gcc/config/riscv/t-riscv
  7dbd61c5a07b1adefe5429a41008fda5  gcc/config/riscv/t-rtems
  97a182737ed075d29be4ab1e848de420  gcc/config/riscv/t-withmultilib
! 486709f8942421d456e5b94085284446  gcc/config/riscv/withmultilib.h
! 80160be866129dce3d0d56e5a53404de  gcc/config/rl78/constraints.md
! ff76ea6253b1cdf06931ff8c061d3987  gcc/config/rl78/predicates.md
! 21c58dafc975632d19142dac94c8a3c8  gcc/config/rl78/rl78-c.c
! d0979e279749a44bafa5160fbe5e0b4d  gcc/config/rl78/rl78-expand.md
! 211161dfb9927506432c0294893b3973  gcc/config/rl78/rl78-opts.h
! 43707483f5aaff424c2ff3da45409bdd  gcc/config/rl78/rl78-protos.h
! d98876dce751b26e9ce9c68a5dbd3271  gcc/config/rl78/rl78-real.md
! 8c3f7655867ce7f2f4ab4811c3f184b4  gcc/config/rl78/rl78-virt.md
! 66c78a0c2670c19c2047afba4b2a05ec  gcc/config/rl78/rl78.c
! c00273b3439fe567ea0a3872ca372505  gcc/config/rl78/rl78.h
! eaca80ee8cff19d4a9f53e880456054f  gcc/config/rl78/rl78.md
! e5860d5c4536a46930e839adbed1eb18  gcc/config/rl78/rl78.opt
! 56de5e5137a0775bf74ec73599b236c7  gcc/config/rl78/t-rl78
! 6ef8ec003691b853b60b6175af0544aa  gcc/config/rpath.opt
! 069a6b16d651bb44466086a8459d6d92  gcc/config/rs6000/40x.md
! 74bb3e13d23d40db83ef7dc876111014  gcc/config/rs6000/440.md
! 09463e3b0eb713eff4bd53bbb8115929  gcc/config/rs6000/476.h
! fa98648707943ec2425252bc86bb12f6  gcc/config/rs6000/476.md
! b7ccf8f2ba2d1396e8626f45ce30af4e  gcc/config/rs6000/476.opt
! 5281cc5774e39b1c37af36f80c0c986d  gcc/config/rs6000/601.md
! ad318a17a4307a22eada2a5387cd16ec  gcc/config/rs6000/603.md
! 1b6565c5d642135b063543ce38aa6b1d  gcc/config/rs6000/6xx.md
! 6af4da53e2151c7b4e7fed2ecc523886  gcc/config/rs6000/7450.md
! 3022324b87f4d0ac00f6d8fa5ace2c2b  gcc/config/rs6000/7xx.md
! 4381332fa92fd885a05151d778b8d2c9  gcc/config/rs6000/8540.md
! 47fe2b87a3829fbda02fde06a5c50069  gcc/config/rs6000/a2.md
! f33ab722a2d7283c751e7a708083d57f  gcc/config/rs6000/aix-stdint.h
! 7913c25135924b6b6b4db7c0f79efa59  gcc/config/rs6000/aix.h
! 87c3de3f3baac62cde742ec311e2ea93  gcc/config/rs6000/aix61.h
! 8621952139923f16a93c35b6195372f1  gcc/config/rs6000/aix64.opt
! 970bd741336f3b6ad6cfc92047dda24d  gcc/config/rs6000/aix71.h
! 3c332f07ff88aa9b8b7a951dfefb7edd  gcc/config/rs6000/aix72.h
! c82150f37c90c7b09ce07d57173e6e1f  gcc/config/rs6000/altivec.h
! ee08238bb2eff082213c3fc4e1476fed  gcc/config/rs6000/altivec.md
! 174cef0139277020d6daf3b4321db0a7  gcc/config/rs6000/amo.h
! 7ad82036aad04f9e4b357a24e5c58941  gcc/config/rs6000/biarch64.h
! 3e51a92868e87279a0a9f776a0e25540  gcc/config/rs6000/bmi2intrin.h
! ffe5a1b05a5bc7b5d48543e8f9cc1617  gcc/config/rs6000/bmiintrin.h
! 127cf4899b4c067a85e987ef05ab96bc  gcc/config/rs6000/cell.md
! 8105d2f95a648b8b23310cff56eafb21  gcc/config/rs6000/constraints.md
! eca2a693ca9c1f44feaed0a002fae93f  gcc/config/rs6000/crypto.md
! 72c76656d6836b2f52e600ad3656aa68  gcc/config/rs6000/darwin.h
! 326ad273d6d1fa12fa4b88506a687a95  gcc/config/rs6000/darwin.md
! 432601bc5143ba8b393398fc2d9330a5  gcc/config/rs6000/darwin.opt
! 6bfd3c06ee79689ef4eead5c4e77124d  gcc/config/rs6000/darwin32-biarch.h
! e751b266aa2120ce44c4880910c66d58  gcc/config/rs6000/darwin64-biarch.h
! 50904929d2be1730d2a74d71fc4712b1  gcc/config/rs6000/darwin7.h
! d203a735214c9167b01dae3d03fe70a1  gcc/config/rs6000/default64.h
! 984792b09f951fea186992bb1be7c209  gcc/config/rs6000/dfp.md
! 84b1d738647584e6466f91e84169bde3  gcc/config/rs6000/driver-rs6000.c
! f67f39d3026bf6f3a724784cae7f8436  gcc/config/rs6000/e300c2c3.md
! b3cc72b8ae0ab3ef6d91521a5fcec2c1  gcc/config/rs6000/e500mc.md
! 9ae18b10b84b0bcfe1e5a56cb18a6ef9  gcc/config/rs6000/e500mc64.md
! 7423d714e77d78d695da69b17e85f756  gcc/config/rs6000/e5500.md
! 39710be727fbc50c31127cfba294c21b  gcc/config/rs6000/e6500.md
! adb51c0ede7af39901c908ef90b8ce02  gcc/config/rs6000/eabi.h
! 6f4ef6cba2a5a2954d623838b646b8f6  gcc/config/rs6000/eabialtivec.h
! 1d32f0357e8ebb371e436642b329216c  gcc/config/rs6000/eabisim.h
! 00ac4af2f26f595d33160122f1aeb09d  gcc/config/rs6000/emmintrin.h
! d38e4a0ca30e43063770e42f8b82b318  gcc/config/rs6000/freebsd.h
! 7ad43b5e10f2d469477c6bb354643b76  gcc/config/rs6000/freebsd64.h
! 39fd75208b3401fd5ec3058c3547e1c3  gcc/config/rs6000/genopt.sh
! 58f4531000b6cafedd5868c7f2e77bfb  gcc/config/rs6000/host-darwin.c
! 6cfa23d52debd4a531544eaca91f258b  gcc/config/rs6000/host-ppc64-darwin.c
! 247a33d981fcb936bdb22fdeb1683b42  gcc/config/rs6000/htm.md
! f1450818eb75bc606df84ab4761a595d  gcc/config/rs6000/htmintrin.h
! 35c1ff7bbc3135e846ebd7e10c981733  gcc/config/rs6000/htmxlintrin.h
! 348c3309ad9c079c89a0458a1055ba15  gcc/config/rs6000/linux.h
! 2797e5df99938afed94e86eae15a3e8e  gcc/config/rs6000/linux64.h
! a5b14520695a7ce5f93998a8fa3eea35  gcc/config/rs6000/linux64.opt
! aab6a02122e8086655ea2092bf5e8277  gcc/config/rs6000/linuxaltivec.h
! 28eb56aa72960c68f1ce93a0dcbbb50a  gcc/config/rs6000/lynx.h
  0cc3c5f9101501b8253ce3176c3ffce4  gcc/config/rs6000/milli.exp
! b6fc09392c42f3e842f22bfdc03be49a  gcc/config/rs6000/mm_malloc.h
! 71078d5c6ec0f418e1f2a767fe00d34a  gcc/config/rs6000/mma.md
! 5faae5d262f8fe7e0e4b93be7c651310  gcc/config/rs6000/mmintrin.h
! 61382586f43f8c34149111f3808e03ea  gcc/config/rs6000/mpc.md
! a24c854cbca4a77aa796b28b86a7a75d  gcc/config/rs6000/netbsd.h
! 9dddbc6ce32fc9f189af4c45ff4bdc3c  gcc/config/rs6000/option-defaults.h
! b24b9fba4116847326388c33dad0ca30  gcc/config/rs6000/pmmintrin.h
! f5ba99782614874631476169c08e7c89  gcc/config/rs6000/power10.md
! dbb156aa36d6c59e70d636f7196b08bc  gcc/config/rs6000/power4.md
! c70bb269e55104b36b354fb12e4d9880  gcc/config/rs6000/power5.md
! a63bced0c9173139737e131cba03b033  gcc/config/rs6000/power6.md
! 3dd3209f341105ff5b3dfc5eaec88b8f  gcc/config/rs6000/power7.md
! 7a511293f597b257085ff152392293cf  gcc/config/rs6000/power8.md
! b363744cf555db6f21cf65583a9f1d22  gcc/config/rs6000/power9.md
! 7b2b59e840776fe051a5e7d7f9025c5b  gcc/config/rs6000/ppc-asm.h
! 60e0334a510e1ca34a137e003ab080c5  gcc/config/rs6000/ppc-auxv.h
! 211f86e3790aaa31e29fab4dd00a1963  gcc/config/rs6000/ppu_intrinsics.h
! 61d4eaea3877c9a2976067fda9d3e5df  gcc/config/rs6000/predicates.md
! cf12165e4a785bafe38975f056fd2b33  gcc/config/rs6000/rs6000-builtin.def
! f6f55a2f1cdc9dc92c82f727c8adc32f  gcc/config/rs6000/rs6000-c.c
! d2cd066fab50ec564805b8e818f80a03  gcc/config/rs6000/rs6000-call.c
! 24fc94e29ab1ae855818c037fa366b61  gcc/config/rs6000/rs6000-cpus.def
! 48f25a13b4c16bbf8abc640b18baaf04  gcc/config/rs6000/rs6000-d.c
! 6ca6ecc62264d6525efb0303f303fbcb  gcc/config/rs6000/rs6000-internal.h
! 0680e4bef9d435c70ff0b0346875dc7e  gcc/config/rs6000/rs6000-linux.c
! e25bd37cb4cb46e8bca3b8fe77cf1f49  gcc/config/rs6000/rs6000-logue.c
! 6019ce43647fb67478f67b0014f9e197  gcc/config/rs6000/rs6000-modes.def
! 74d680e195ea101592ac1b6839d532c6  gcc/config/rs6000/rs6000-modes.h
! 478e6c4e3fffd52cc5f65d8201180f4e  gcc/config/rs6000/rs6000-opts.h
! 0d18db3973ed0496c5a7c9494302ef24  gcc/config/rs6000/rs6000-p8swap.c
! 5deaf0e53bbb270a90617edbf89b93c3  gcc/config/rs6000/rs6000-passes.def
! 563c0ef0afd159a301260d7c6cda4949  gcc/config/rs6000/rs6000-protos.h
! d6ec81c1ffdb5849dc866b5ef0282b43  gcc/config/rs6000/rs6000-string.c
! 6cd7b03a52d165ce37498421647b2870  gcc/config/rs6000/rs6000-tables.opt
! 4415d51d87b17aac8a5ea0aff420002e  gcc/config/rs6000/rs6000.c
! fd2cd530c3bbd8742e0822bf27d471a6  gcc/config/rs6000/rs6000.h
! 8575069a4bac51a089b88ba8b57cd6fe  gcc/config/rs6000/rs6000.md
! ae694700cb8a354c30bddf5dbacf3a24  gcc/config/rs6000/rs6000.opt
! f783f97dd8ba81866de4caa94379cf5d  gcc/config/rs6000/rs64.md
! d243ba917805636d3fe964e1bf471023  gcc/config/rs6000/rtems.h
! fdcf290afcca6a9a881bc2a4e2329ef2  gcc/config/rs6000/secureplt.h
! 06e7b5a5cd00206c607e731c8069a07a  gcc/config/rs6000/si2vmx.h
! 40c534235601ca14258240455fa44c7b  gcc/config/rs6000/smmintrin.h
! 20bac8f2b8a8a44bd13b812db40f4f1e  gcc/config/rs6000/spu2vmx.h
! e818c9691db0e753abfb496fdd862950  gcc/config/rs6000/sync.md
! 07c4b888d3d60a4a911568464811cbb7  gcc/config/rs6000/sysv4.h
! e87ab49fcde26eab7e6e677614ccf598  gcc/config/rs6000/sysv4.opt
! c41c6fcfccd13329270b8f20c9082980  gcc/config/rs6000/sysv4le.h
! 917a17dec8871b5fb52bee6799d13317  gcc/config/rs6000/t-aix52
  636250eb91fc5dada4804efcd525fc02  gcc/config/rs6000/t-darwin32-biarch
  f3250b9720d1149346f1ef8e21b52ea9  gcc/config/rs6000/t-darwin64-biarch
! a780d9a832bd0bf5f72ddf2e60db3aee  gcc/config/rs6000/t-fprules
! 8f0df6906893e97f7cbbc038b8c009b6  gcc/config/rs6000/t-freebsd64
  40e5cd20542141b80d5fcf1a7b10b3fd  gcc/config/rs6000/t-linux
! bf5b2f2013653dbf4c110ab2682c5f59  gcc/config/rs6000/t-linux64
  71c0a0470047f0171a3bb4c483eb2b72  gcc/config/rs6000/t-linux64bele
  489699b655594f05bae0b429fd261edb  gcc/config/rs6000/t-linux64le
  60f26523152f6a061a12cb17e987de12  gcc/config/rs6000/t-linux64lebe
! c8849c51ed697da336c77957f6ff07ad  gcc/config/rs6000/t-lynx
! 8c1807bfe71508400004462e889d884a  gcc/config/rs6000/t-netbsd
! 7f04a817dd1e9965de94fa2b01f581df  gcc/config/rs6000/t-ppccomm
! 0cad3696ebc4091476eb7b7bca27426a  gcc/config/rs6000/t-ppcendian
! cc35ccf5fc7ee9c6021fbb9a4518a5e8  gcc/config/rs6000/t-ppcgas
  1b8aba690a39464c4ea9c647d73d6983  gcc/config/rs6000/t-ppcos
! 7c55af762efc55837b20c85b5651a767  gcc/config/rs6000/t-rs6000
! f26fbf7a1adb516aabc60b157bff7620  gcc/config/rs6000/t-rtems
! 3a287ff0e99ea59191a91f04d86ca948  gcc/config/rs6000/t-vxworks
  f11925c88524d2fd457bf77944da1302  gcc/config/rs6000/t-vxworksae
  3f0601a68de7a0aee8264b538228d943  gcc/config/rs6000/t-vxworksmils
! 9107271d48c741591ed5e4a92925d84b  gcc/config/rs6000/titan.md
! 7b1e2f439e6bc01c529a8a58fcdec732  gcc/config/rs6000/tmmintrin.h
! 9376354b2d5ece1437c8903ce64d70ad  gcc/config/rs6000/vec_types.h
! d14f3dc62c5e064004d6e6dcd2713156  gcc/config/rs6000/vector.md
! 69b1644a956e3d3ef91b856c86941ccb  gcc/config/rs6000/vsx.md
! 6d50c0c76d5f156088c6f113c2ef3f81  gcc/config/rs6000/vxworks.h
! b6ff8b73a277bd9533ebb88d01316d55  gcc/config/rs6000/vxworksae.h
! 193beb2307a726d77214fcb2aa344f2e  gcc/config/rs6000/vxworksmils.h
  44a93bbae0ad5aba424ba7b97cc6914d  gcc/config/rs6000/x-aix
  af875b9bcb1ec1da1f33d5e34df8ca7b  gcc/config/rs6000/x-darwin
  9ffcc92667a16102520a017eabc7d7d2  gcc/config/rs6000/x-darwin64
  3f42272f4bcf66031ebf71a6c876adb8  gcc/config/rs6000/x-linux-relax
  1aff8cb3714b63b6c3367f552dae743f  gcc/config/rs6000/x-rs6000
! 699438376f6e4dc3ef37a1ec63277e85  gcc/config/rs6000/x86intrin.h
! 67a9f42301677a09272432835955a27d  gcc/config/rs6000/xcoff.h
! 285ba08bc485c243e5d79d05c57226e7  gcc/config/rs6000/xmmintrin.h
! 673ce4c8c33a932ce1baa7fbc9621388  gcc/config/rtems.h
! f26f246b25c615ef8d0cc7eb8f05403c  gcc/config/rtems.opt
! 992fe3bece71f0f5348cf6f4f498f847  gcc/config/rx/constraints.md
! d76f15f3fed2b762631d54825617012b  gcc/config/rx/elf.opt
  84ae77475029b49553276e3d7ed74cec  gcc/config/rx/linux.h
! 4733239793c89fb2380b1fe9faf7ab09  gcc/config/rx/predicates.md
! 4dec0e00a453cec73d53949a8acdc2b2  gcc/config/rx/rx-modes.def
! 4d08b916bd80dfaaa75c98eff965e6af  gcc/config/rx/rx-opts.h
! c3a79d901aee6465a1c4f79f49be52b2  gcc/config/rx/rx-protos.h
! 866ed35147bd5e69b78ed41ee29f2d43  gcc/config/rx/rx.c
! 3ce6990538668d90c55514f5d37178b7  gcc/config/rx/rx.h
! 71934ad113e06367fcca543f8366f5f9  gcc/config/rx/rx.md
! 21e8d7af619fe18580c1f7360f24a8d4  gcc/config/rx/rx.opt
  032cf36abc28f171fc24229e32796402  gcc/config/rx/t-linux
! 98a7bc8de5bb5eb88527c70c0f93bdd0  gcc/config/rx/t-rx
! d345858ec76314b6e3f2428a6ca7e3ac  gcc/config/s390/2064.md
! 27ce638bb6870e659231193e1f05b9eb  gcc/config/s390/2084.md
! bc7ceee4495930f7093117574d8587f3  gcc/config/s390/2097.md
! 41b7990c87d3da1360f07bdd1c55ead2  gcc/config/s390/2817.md
! ac31ee7b93adb2ebea233a1cf013b586  gcc/config/s390/2827.md
! 27e974850fabeb27fa9def78453fd7a2  gcc/config/s390/2964.md
! 5564f82be15c001295d47e0b128a6195  gcc/config/s390/3906.md
! 0bfef85c18701c9bd5e04c85d5ac9e34  gcc/config/s390/8561.md
! 9e59d44344a8bf128ef9cac58a3eff2e  gcc/config/s390/constraints.md
! d5ce86ea0834107d4c601f926b83a5f7  gcc/config/s390/driver-native.c
! 3e587d65527a47b79155557be284aa3d  gcc/config/s390/htmintrin.h
! 7c0b7f133299a7b1a83c3d47d4d7ec63  gcc/config/s390/htmxlintrin.h
! dad05d39209ae0f8f498ee3629e82ec7  gcc/config/s390/linux.h
! 543fe2b3c20b31e11cfc1949ad7287e4  gcc/config/s390/predicates.md
! b23199f8806db7c04ad508ccdec8e800  gcc/config/s390/s390-builtin-types.def
! 44c5bc66e94cd387309c79a82c767cdf  gcc/config/s390/s390-builtins.def
! b3a45837534366bfd92cc5c1e6a02c8a  gcc/config/s390/s390-builtins.h
! 0abbe86a42c7386f880f152be2783ef7  gcc/config/s390/s390-c.c
! 92e9bb8c94d8a71ee48dc24b820b6a13  gcc/config/s390/s390-d.c
! e3e94c066797685d8a2622b1c5957f4d  gcc/config/s390/s390-modes.def
! 20208c81b581795dd2ba29f268618abc  gcc/config/s390/s390-opts.h
! 6b36763d67c9b5c42e44faf743a3f705  gcc/config/s390/s390-passes.def
! b0455af5364399ae3ba243b620c905d9  gcc/config/s390/s390-protos.h
! a004804c184ed76916393fe8a1947b8a  gcc/config/s390/s390.c
! 0941f9097350fe7d34af5c92f0ecb0e4  gcc/config/s390/s390.h
! 5607cbff8f1ba849ee9e00308b50152a  gcc/config/s390/s390.md
! db7d06c04b3bf2d126240250a0a51879  gcc/config/s390/s390.opt
! ba0d65505653fe3c086f99808dab58a0  gcc/config/s390/s390intrin.h
! 0fa5845393381f5fc691db262b97d863  gcc/config/s390/s390x.h
! 309bba508b49969ef616cc84f8073b79  gcc/config/s390/subst.md
  551847ee4c38fa1a7e95fd93cdb32f17  gcc/config/s390/t-linux64
! 1997c7d4d6e7fe522d06f2378941884b  gcc/config/s390/t-s390
! e37aabde17c8b561ad3c102d4a1cbf5b  gcc/config/s390/tpf.h
! 6fa077116f1cbc5762ff181fc398ed79  gcc/config/s390/tpf.md
! 3f2768d9d3982dc1d6d1cfa890c28787  gcc/config/s390/tpf.opt
! 91270f5af620cd05e4b5bb0bd35ae881  gcc/config/s390/vecintrin.h
! 8b56860d17bb2ce903906c4b5b704037  gcc/config/s390/vector.md
! f58fcaabc56c48c98716508979fa7efd  gcc/config/s390/vx-builtins.md
  19876f77a242921272972ac5b8bd32d0  gcc/config/s390/x-native
! 5985eace683b2a8ad1b2eaee7cb0e876  gcc/config/sh/constraints.md
! c7e2bb4623731e0b7a72d763d2b21034  gcc/config/sh/divcost-analysis
! 5414cbcd2a287db493d382f2cc1e74ac  gcc/config/sh/divtab-sh4-300.c
! da37a65438a27321466e15adcdf133d6  gcc/config/sh/divtab-sh4.c
! e0d0b6e14200157e94457a4c63b63f65  gcc/config/sh/divtab.c
! 9b79f3903bad12910d3d863944bd11a8  gcc/config/sh/elf.h
! 8d012f30ba7d76b877f8ecc7f92e5ba7  gcc/config/sh/embed-elf.h
! 5a30b1570b654057a0ce052897438dcd  gcc/config/sh/iterators.md
! 5a539e47a7ea65ecd41167ad854eb62e  gcc/config/sh/linux.h
! 8c64ab966762e84bea8328455847038d  gcc/config/sh/little.h
! da040620ff0df510630aeadb3c1fd0e1  gcc/config/sh/netbsd-elf.h
! 2d07ac0e854b3acdd10e3007267572dc  gcc/config/sh/newlib.h
! 2357d56ecf68bd1426790f94015343a4  gcc/config/sh/predicates.md
! 151a45ae584a03175c31aea9c033196f  gcc/config/sh/rtems.h
! f12105d1e741dde47c7b00a27fec1066  gcc/config/sh/rtemself.h
! 87ea2d07e70415ca0868518f1a18ab28  gcc/config/sh/sh-c.c
! 9b8e3027163511609b01738576645a99  gcc/config/sh/sh-mem.cc
! 4ad1f7896df9791b3afbb76d09dc3e5e  gcc/config/sh/sh-modes.def
! 48c0918a05e74691155ef9a68cf7b64c  gcc/config/sh/sh-protos.h
! 78c1f721c3c8ff98ed88f7ce822737cc  gcc/config/sh/sh.c
! b6c12c698f6e35b850c6873027ecd0e4  gcc/config/sh/sh.h
! 40f18f288f7a15828276445eb2ba17b5  gcc/config/sh/sh.md
! b0b5595cc9fee44240d9039e6932e201  gcc/config/sh/sh.opt
! d1241f0a99270041951b4efeac3ff95b  gcc/config/sh/sh1.md
! 976304486e39c153fd8f423ebde0351e  gcc/config/sh/sh4-300.md
! 9e02230babd9a200f3fa0dd4ad315b9d  gcc/config/sh/sh4.md
! fc4ec07103bf7c89281a1164d8d6de76  gcc/config/sh/sh4a.md
! 3e42fbe1e8ec0cae5e5ce7f30fb48b87  gcc/config/sh/sh_optimize_sett_clrt.cc
! 564526070ab8cd06c5f9ae8e323a2ca5  gcc/config/sh/sh_treg_combine.cc
! d4294da731ca0599832d8349c4152a6d  gcc/config/sh/superh.h
  06158b0f1e33501120db330d7734228d  gcc/config/sh/superh.opt
! ba23249abae4fb97df2f95305a9eddde  gcc/config/sh/sync.md
  d136f788a5f1c0fd4a8cf495f33aabd8  gcc/config/sh/t-linux
  ad88281b142c81e6c7017a842c281d5f  gcc/config/sh/t-rtems
! e8cb51213ed8ca3a591aa6821fca9f25  gcc/config/sh/t-sh
  9f0e9638f478c08d204c5dce468c95ce  gcc/config/sh/t-vxworks
! 66b53f6143700c0a510816156629f6dc  gcc/config/sh/vxworks.h
! 228ca6f32d7253c614da148fb92dd161  gcc/config/sol2-c.c
  5c26c2321d68d4724b0d0076803c6b89  gcc/config/sol2-clearcap.map
  73dd11dea23019ab25cbbd70968694e7  gcc/config/sol2-clearcapv2.map
! 688d2c60232bb34b9e450ed06026d486  gcc/config/sol2-cxx.c
! b60d1f67a5859563001023cee2447b23  gcc/config/sol2-d.c
! 50d05d55ccc4d2f4cac37277b1991917  gcc/config/sol2-protos.h
! c901fa49dd8e10ee55763bfded94bb66  gcc/config/sol2-stubs.c
! b88f923072e16346978ac09b03a40d75  gcc/config/sol2.c
! 868476e703a0b57086a896217b5df5f6  gcc/config/sol2.h
! cb032b4ade610b7b38e01a8029da043e  gcc/config/sol2.opt
! 50b2fb73f5027d6d1039e2a69457fc47  gcc/config/sparc/biarch64.h
! 9e0cd0164714f6872c9429fc0fca673c  gcc/config/sparc/constraints.md
! 2efd27c62ae2719f31070c6787412567  gcc/config/sparc/cypress.md
! 3808583365285862fc6386ed857d5ff6  gcc/config/sparc/default64.h
! 4b41f03a9d67e606014a839424987fd7  gcc/config/sparc/driver-sparc.c
! 9ab9622e223528d958a728134b55b6f3  gcc/config/sparc/freebsd.h
! 4f56c43a4d82e01b567fe7887c23ce9f  gcc/config/sparc/hypersparc.md
! 374719978e012e941d60c64f131e76a9  gcc/config/sparc/leon.md
! 97d06ec06d753dcf57a975a67e5244c2  gcc/config/sparc/linux.h
! 9571e18a771ed70764487a75d74ebc74  gcc/config/sparc/linux64.h
! 1250ee775863cfad6a764a0d319f7b9b  gcc/config/sparc/long-double-switch.opt
! c32d936a5bbf913765503d5f31bf57d4  gcc/config/sparc/m8.md
! 359fddf85d1917ed97afd10032332eae  gcc/config/sparc/netbsd-elf.h
! 6c50c28140b398eb53f8a06a931cd139  gcc/config/sparc/niagara.md
! 7f6f949fe3de9fcaf5a5cccd1bfef1df  gcc/config/sparc/niagara2.md
! e3ac5cc563ce925b26751536e9d2d76a  gcc/config/sparc/niagara4.md
! d33c0fe0869410edc309d884ec9c7fe3  gcc/config/sparc/niagara7.md
! 8e4b25fde8b72e44a5f1913e5b97d377  gcc/config/sparc/openbsd1-64.h
! 8d05c37f846d378056cd1739f6734e56  gcc/config/sparc/openbsd64.h
! 46d6973919885745eb29e4f58d0095bd  gcc/config/sparc/predicates.md
! dbd7804b195211bfa4be46e6382c6634  gcc/config/sparc/rtemself.h
! f79ae1140c10492ceac088f7f5019e7d  gcc/config/sparc/sol2.h
! 4f56d0f947813fdbe0cd5eb35e0bbdc1  gcc/config/sparc/sp-elf.h
! 6f9d286d9e3e1c5a000251634b240853  gcc/config/sparc/sp64-elf.h
! ccae0d54ed31f04853ff923541eea0e5  gcc/config/sparc/sparc-c.c
! a5a9218acfb5d41578555d0441d5cb99  gcc/config/sparc/sparc-d.c
! b238c0d1e922a202048ce5909693e1aa  gcc/config/sparc/sparc-modes.def
! 342a12ff3ee1e493c9a9b06ca9c4a4bf  gcc/config/sparc/sparc-opts.h
! 6f520a376e0a7395f5c6f882a8e027c8  gcc/config/sparc/sparc-passes.def
! cd0869635ffc187db2e3827d1dd73fb8  gcc/config/sparc/sparc-protos.h
! 4e2876ef2fcc63bef4681d281802daa7  gcc/config/sparc/sparc.c
! 288b7c68d32676acb597bad918c57cac  gcc/config/sparc/sparc.h
! b9f1ec4e9c3a9d55473925f91e2c02b7  gcc/config/sparc/sparc.md
! d87d4abdd19b7cf412e9b02b7f36a78c  gcc/config/sparc/sparc.opt
! 8ed4dc36697fae85bbf65019d71bd589  gcc/config/sparc/sparclet.md
! e52c82a23c5c3b180a0ff5a8b8ad6d00  gcc/config/sparc/supersparc.md
! 9a3746b5a3e2e665ee112e40bda33690  gcc/config/sparc/sync.md
! 2b6d658607dac50c8962af02ab693ccb  gcc/config/sparc/sysv4.h
! 5a449384399e822db831cb3d68a928ff  gcc/config/sparc/t-elf
! 67504ced1c57951185ed425d66f4645b  gcc/config/sparc/t-leon
! 2208f6c1ddaaeeb2b242ba015879ea30  gcc/config/sparc/t-leon3
  4a7d3f368a24d549fabaafbe44fcb134  gcc/config/sparc/t-linux
! 0ef793ee019068f206c379b2f4beebb4  gcc/config/sparc/t-linux64
  75987b7fdc6fa9c9ff2108ff1003e6d2  gcc/config/sparc/t-netbsd64
! 7fea8dc847ac38cdb9fcd7083fbf16e8  gcc/config/sparc/t-rtems
! 5b4a088d6ca2a8adc88ddce3b260ada9  gcc/config/sparc/t-rtems-64
  511770bb20c2707fabd4f231ce8b83cf  gcc/config/sparc/t-sol2
! af64979ddea872d4b15fb34b0bd3dbae  gcc/config/sparc/t-sparc
  b04597637b0c08dd3e6d1a40c43e76b4  gcc/config/sparc/t-vxworks
! 9ed22285894b1943b92f33ce1ae2d915  gcc/config/sparc/tso.h
! cffa76777a44f928fc3f154e76acd451  gcc/config/sparc/ultra1_2.md
! 4808789135ace2a7236423031cf72755  gcc/config/sparc/ultra3.md
! ddcf393da7474cd9028d6e292f440389  gcc/config/sparc/visintrin.h
! 8cc02e82856c7a3a63c2c60e2d10141d  gcc/config/sparc/vxworks.h
  9b2ddc345afcea4f415dd0c8bc2d2ed3  gcc/config/sparc/x-sparc
! 201d2ebe4015846148ee53ccc3997a38  gcc/config/stormy16/constraints.md
! 7132a375b83b7d0f7b92a451b1c99b85  gcc/config/stormy16/predicates.md
! b33b7e1a343260a3130e14429dc4612c  gcc/config/stormy16/stormy-abi
! fd35558908c3a8894a2d26182f2a4fe3  gcc/config/stormy16/stormy16-protos.h
! b7dd297a0f8b04d138e2b27921a13394  gcc/config/stormy16/stormy16.c
! a2993ac9ab6819f674a591c205c380bc  gcc/config/stormy16/stormy16.h
! 16c9ed148fa51aa250e64630f3faa4fb  gcc/config/stormy16/stormy16.md
! 597ae22dd9b441fafb18ed9d46f5d804  gcc/config/stormy16/stormy16.opt
! 4b684c00c660f8c16bb9aa0ea0cbfb67  gcc/config/t-darwin
! 504058cf22cc6bccc110254509ee0072  gcc/config/t-glibc
! df559ae91d35a7aab48dc7c82cff7c1a  gcc/config/t-libunwind
! e117385f14635b9c12e0999996d8e50e  gcc/config/t-linux
! 4ea609470d22923b7c9a6534d7e39820  gcc/config/t-lynx
  5dad674732908a1c6e62e627e047929e  gcc/config/t-musl
! 2a4c0691d6451e7e024e3cf9c969cd23  gcc/config/t-netbsd
! 4b382926844dd76c21046df37b41105c  gcc/config/t-openbsd
! dd26e835e503ab54483fdc070b0fe9b7  gcc/config/t-pnt16-warn
  501751f2be56698ed1c9cf18358b67ac  gcc/config/t-rtems
  51d3678acb41d4448cc332f7a8e8cb2e  gcc/config/t-slibgcc
! 58d54b794f8ad3fdec68ae353eae4bd0  gcc/config/t-sol2
  94b3e10150e75899d2fc1410cf218e3f  gcc/config/t-sysroot-suffix
  6f78c5decbfb4b465e7c289b60109023  gcc/config/t-uclibc
! 26ee6ffef35a8f0e7422da7a9dec3ef0  gcc/config/t-vxworks
! 2e1dbf0db35fadc83dbf74c752e5f2af  gcc/config/t-winnt
! 01fb53702bf27470018d30e2337f837b  gcc/config/tilegx/constraints.md
  f62347fb17ffdccf93a30b860f9f4dc2  gcc/config/tilegx/feedback.h
! d9fb750f62c15cfb33bcae72c0d6a6e2  gcc/config/tilegx/linux.h
! 80cd0a8c89157e2be9bb0b54a9461900  gcc/config/tilegx/mul-tables.c
! f6e2035360da615bce0a8cf17729e196  gcc/config/tilegx/predicates.md
! 5fa5601dd939ccf10f9558d98657b161  gcc/config/tilegx/sync.md
  94847c7229d625be28df740c61698b73  gcc/config/tilegx/t-tilegx
! 665890153a4230e3122aef00786da176  gcc/config/tilegx/tilegx-builtins.h
! 4a238326db42afe765b6fee406fc6dfc  gcc/config/tilegx/tilegx-c.c
! f9f517594846aa7fd456284de0cc41c4  gcc/config/tilegx/tilegx-generic.md
! 864f2e3f6e74258b25cc2cfaef593026  gcc/config/tilegx/tilegx-modes.def
! bceacc472064246c374b98e4723ea247  gcc/config/tilegx/tilegx-multiply.h
! f0a4da811b2a2c9a981c12a46b3b2460  gcc/config/tilegx/tilegx-opts.h
! bb551d8949231e13c2fc39046fef68fd  gcc/config/tilegx/tilegx-protos.h
! 8a2a1787a13697ab4479f10b80e8a38f  gcc/config/tilegx/tilegx.c
! 2aaf5c1971f7997398e69dc6827b3c1a  gcc/config/tilegx/tilegx.h
! 176281778bda03c6b4f63ab11e5c866b  gcc/config/tilegx/tilegx.md
! 209d1a732de0a286638eed5c793f0da1  gcc/config/tilegx/tilegx.opt
! 4694ef81335429ad17d622ad71601731  gcc/config/tilepro/constraints.md
  f62347fb17ffdccf93a30b860f9f4dc2  gcc/config/tilepro/feedback.h
! 5895914640219424842e326ee0128581  gcc/config/tilepro/gen-mul-tables.cc
! f9a6b00f6ade874dfab06951d054adc9  gcc/config/tilepro/linux.h
! ff2860df2dc1c35c2c5606d33b5925f1  gcc/config/tilepro/mul-tables.c
! b77cabbf61dba5ad663f35f2cfcd1861  gcc/config/tilepro/predicates.md
  3f18cdd00997ddf3552919159dbe4bbb  gcc/config/tilepro/t-tilepro
! f4fdbd132d6b0beefc412ef1956ef968  gcc/config/tilepro/tilepro-builtins.h
! 7455e29a46a0cd988f3dd6663f57fcf4  gcc/config/tilepro/tilepro-c.c
! d6a4295d5b072beff3cb2ec6818f81fe  gcc/config/tilepro/tilepro-generic.md
! bbba4f343c82342d54ca4654c21228cb  gcc/config/tilepro/tilepro-modes.def
! 8f43c9487cb7f86ff080aafee1aa2452  gcc/config/tilepro/tilepro-multiply.h
! e48b7d87e8b4da1cd486133ccc35e199  gcc/config/tilepro/tilepro-protos.h
! adb4b3b6205c95fd6117caff9c211f13  gcc/config/tilepro/tilepro.c
! f491845be2792d6e15551666a8e566d5  gcc/config/tilepro/tilepro.h
! 0e421c9ab025df0c9a49956a28ec3146  gcc/config/tilepro/tilepro.md
! e461dcbe4b3a545d042e9053cc6137dc  gcc/config/tilepro/tilepro.opt
  17fd5cabcc31b720b23bad47cf7fe84c  gcc/config/tm-dwarf2.h
! c7643b8578205c263707de49c1153c30  gcc/config/usegas.h
  a6ae71a556271cc116214b3e9e87d867  gcc/config/usegld.h
! de40ee1662f1ea7cae5191e6e4860221  gcc/config/v850/constraints.md
! 8dd0b0e4c69bd1ad38976cb631d29b90  gcc/config/v850/predicates.md
! ee0d0d851a6e78cf1a4d418ba594bf6e  gcc/config/v850/rtems.h
  41b5d5e91cc905b1e3ba5de47db5f9c6  gcc/config/v850/t-rtems
! 20c50a15e75e372f1f25b65b60419f61  gcc/config/v850/t-v850
! febe9b5cba5f44a70bb11187bd07665c  gcc/config/v850/v850-c.c
! ade232ed2b82b488493d7842e45562d6  gcc/config/v850/v850-modes.def
! 6a3f27035a2cc56e832c5908cc96ac77  gcc/config/v850/v850-opts.h
! d1083fcb130828b85bb45274339262ab  gcc/config/v850/v850-protos.h
! 453f9a627ecc987362f9d9b19cacd430  gcc/config/v850/v850.c
! c67042ebe5f805086f92bf5c8a3bbce6  gcc/config/v850/v850.h
! f57aeefbcfacf9d210b6d76a3c20e741  gcc/config/v850/v850.md
! 4d6a0ac421535367a6df8cb8d8172791  gcc/config/v850/v850.opt
! b28ca5483d216c01c8bdf526d17f7dac  gcc/config/vax/builtins.md
! 497629c0a279f5002c7de3872db838af  gcc/config/vax/constraints.md
! 317f7aef3ff9950eccea732219179607  gcc/config/vax/elf.h
! 89187a1d9a0e86507dc457f229a8e948  gcc/config/vax/elf.opt
! b2b58f6d82fefc95e06bac8b8ac4e540  gcc/config/vax/linux.h
! 8462e55fe71a8590fb7811f1ff9b6b89  gcc/config/vax/netbsd-elf.h
! 1e057b2646d1731244a2ea8eff8ce571  gcc/config/vax/openbsd.h
! e0e031ae9eaf7924d50cce68890f8384  gcc/config/vax/openbsd1.h
! 0c63b3d169f1eb346a0d1570cafc8a8f  gcc/config/vax/predicates.md
! 383ac356dcde6f1b65c754410fa1648f  gcc/config/vax/vax-modes.def
! e66055c5f7ef9434bc4f63fa7613ff25  gcc/config/vax/vax-protos.h
! 554a9b950d349d0b04507bf8668ba586  gcc/config/vax/vax.c
! 64ea187ccd0c4e1d4bd8ab821a9f29dd  gcc/config/vax/vax.h
! 557a9fbd183b7938221b3200801c2df9  gcc/config/vax/vax.md
! a491ce24d47bbd09f0e4f1d4e3454e96  gcc/config/vax/vax.opt
! d8a9c08f847a7ac3be10fc4125267443  gcc/config/visium/constraints.md
! 3ca079cdb32b9aa0d68867076a267df8  gcc/config/visium/elf.h
! e9870a742b338906b9d1fb557dc4281a  gcc/config/visium/gr5.md
! a9b60c96380e1c9bec9f780993594eb7  gcc/config/visium/gr6.md
! a41c39bbf342117f450a00a307551975  gcc/config/visium/predicates.md
! ea0061e6f80d1834970ba05e8b407137  gcc/config/visium/t-visium
! c17fe04c728469bca7aacd5c6f955055  gcc/config/visium/visium-modes.def
! f1ef09822fd20a9ac0411f159285d77a  gcc/config/visium/visium-opts.h
! d1320f02dcb9de908930af4812c60cf9  gcc/config/visium/visium-passes.def
! 7453cad513348fd15f16d199143e2e06  gcc/config/visium/visium-protos.h
! 410d80052c7e3046e2c86178a4ab1270  gcc/config/visium/visium.c
! 31610e9140f52501a70fce5bdcdae9d6  gcc/config/visium/visium.h
! 2f0ce19087302bf6e169fac6dd515b57  gcc/config/visium/visium.md
! 2e34ff289cccc4e955409fa3b2a8d2b9  gcc/config/visium/visium.opt
! 8501f93cdb2e1fcf4c341befda6d1aa4  gcc/config/vms/make-crtlmap.awk
! f2ea18d4f69aa41e0eababba57c7620e  gcc/config/vms/t-vms
! 4563de01d14ed1ab9117994c84ac2072  gcc/config/vms/t-vmsnative
! 3dc684dba710cfbf155819580c8a84df  gcc/config/vms/vms-ar.c
! 4832e04a40681cc3147c47d1ce6e5a0f  gcc/config/vms/vms-c.c
  88a072da5fbb7828331d88720c03679d  gcc/config/vms/vms-crtlmap.map
! 34ff0a8a685825d32b6f54b7b8d568a2  gcc/config/vms/vms-f.c
! af52c65cff982a13d87e0aa096db18a6  gcc/config/vms/vms-ld.c
! 05b9490d77f3fdcfa3b99026b9d16da8  gcc/config/vms/vms-opts.h
! 7e7428ff5ce67552baf298543543e842  gcc/config/vms/vms-protos.h
! 4bcd7182624690b803a3dd7f2c42c3a5  gcc/config/vms/vms-stdint.h
! 389c71f313f897c684ab9c1ccdde432b  gcc/config/vms/vms.c
! c7e2bedf16dac656cb07f094b33470e8  gcc/config/vms/vms.h
! 737a65994fc9d9ed2d94943f8b142374  gcc/config/vms/vms.opt
! ee439c13103126f43ee107b459654976  gcc/config/vms/x-vms
! fad6f38b6ad631f05a1d0effed32edf4  gcc/config/vms/xm-vms.h
! 8112eabe742d5ee259a9b9e8e765a093  gcc/config/vx-common.h
! 26c75ba188ecccb505bc95c6236980fd  gcc/config/vxworks-c.c
! 6e93d644f37cf07885e6b71dff5b274b  gcc/config/vxworks-dummy.h
! 2806f769c4393a81c36c344b119c9736  gcc/config/vxworks-stdint.h
! 2a040840497fbb7a7f08ddeae3442798  gcc/config/vxworks.c
! c5be02a1b8074b6281284769591b3070  gcc/config/vxworks.h
! bcf250e27ab11a4b0950f570d9e4f0d0  gcc/config/vxworks.opt
! c2b41ef1ac209bafdda89e15134a049b  gcc/config/vxworks/_vxworks-versions.h
  2c7fb7482d87758a9305ce4fec4c94ea  gcc/config/vxworks/_yvals-wrapper.h
  01e406b5ec3947608efc9e86649771ac  gcc/config/vxworks/_yvals.h
  9e122a12d3e14f20967d135228bf88dc  gcc/config/vxworks/complex.h
--- 2952,4982 ----
  745188949cd7ff6df266579735782385  gcc/ada/vxworks-smp-ppc-link.spec
  297ba61aeda52a880298da8069891ecc  gcc/ada/vxworks-smp-x86-link.spec
  cf24e76097812a932a26f6600d193208  gcc/ada/vxworks-x86-link.spec
! 860c19e56f3d39ef44e44c1fd41664dc  gcc/ada/vxworks7-cert-rtp-link.spec
! a4c31f21970c4586891846b93f40d801  gcc/ada/warnsw.adb
! 827ebed8c15baa4d09bf60dcaf8d97ca  gcc/ada/warnsw.ads
! 18f178163a20a1f25824b55fe75ffe79  gcc/ada/widechar.adb
! c3fe0a30d997ac558d8cd369b7848277  gcc/ada/widechar.ads
! 53e96745130f200c3bdc708db6b848de  gcc/ada/xeinfo.adb
! 2fd4e080391f7b2fe016d3ebfae35e3f  gcc/ada/xnmake.adb
! f5203a4415586ebb91f04d9c4e2b31ad  gcc/ada/xoscons.adb
! 5955570573ef24673f2b0afa7613b803  gcc/ada/xr_tabls.adb
! 40d136e505894d95d0c42d24f33953db  gcc/ada/xr_tabls.ads
! 3ded8aeb3d8f019e732ae277202835e3  gcc/ada/xref_lib.adb
! b7ff47b27255dd50263543f0b5aa9135  gcc/ada/xref_lib.ads
! 127f5d43e21d4717e276071b82baff90  gcc/ada/xsinfo.adb
! 070e810a3ce06654af6d39c5a7c7d5f6  gcc/ada/xsnamest.adb
! c309b7a190960aa537e3a7707a67bb65  gcc/ada/xtreeprs.adb
! 6159f99c522f8dcc77d11e24ea792dbc  gcc/ada/xutil.adb
! 0031559b96ebc24dd2c747d1f8a00f12  gcc/ada/xutil.ads
! d3e945808548972240fb2f1b7494a8bd  gcc/addresses.h
! 3045d45db0db300d02be3c139d5f8c5b  gcc/adjust-alignment.c
! b7a90c45c5477c6b5975292eb532f64f  gcc/alias.c
! 5446b95e14f1a787f9e0a6d82db041bf  gcc/alias.h
! e561a7bae0b2b221a73a390c77be757b  gcc/align.h
! 23442a2d3df1b83bd32978d68e46bcd1  gcc/alloc-pool.c
! 3ec9e55d9093d096913575231b7b7943  gcc/alloc-pool.h
! 4bc4bfe2045eef6dc2794b5a6a4a390e  gcc/analyzer/ChangeLog
! 7ea5759779b2ed252edaea813907bd5a  gcc/analyzer/analysis-plan.cc
! 4717c47360bc5772a2a5d0afdeae18e0  gcc/analyzer/analysis-plan.h
! 73de39c552e216c1cc1fe1e7d3513cc6  gcc/analyzer/analyzer-logging.cc
! d0081cc7ad4b5cba46ab06970fa72bb2  gcc/analyzer/analyzer-logging.h
! edca3a9887d89c37586785c292fc5989  gcc/analyzer/analyzer-pass.cc
! c2cf9d34a21571d8acec6c8231a49bbb  gcc/analyzer/analyzer-selftests.cc
! 56894b238dce27535cfbad7a39b76e16  gcc/analyzer/analyzer-selftests.h
! ab1a1c4c3f82ed6806cb4e722e3a66c3  gcc/analyzer/analyzer.cc
! 22f32fbd67587c338dd9254167e7e388  gcc/analyzer/analyzer.h
! 661c0babcf0e7a5138917c2fc3ec2edf  gcc/analyzer/analyzer.opt
! 1ef3b59ee3119254057f7cd83ce90fbf  gcc/analyzer/bar-chart.cc
! 3083d2a026bd42d40613d43c2f21fcc4  gcc/analyzer/bar-chart.h
! 9b62ca6dc34a09f50145f5b61d272bad  gcc/analyzer/call-string.cc
! 1f760f478bba4edcb281d68edb9045c5  gcc/analyzer/call-string.h
! 15700e7ecc5645ea48ce677e8f54ad7b  gcc/analyzer/checker-path.cc
! 20bd401aba0e7a732049c44b41bbe604  gcc/analyzer/checker-path.h
! e8bbf1718bd23bbe0021e69270c32966  gcc/analyzer/complexity.cc
! 9ee3719737d8440c3e6b1f925e350525  gcc/analyzer/complexity.h
! 5bd662ff33a0283b78b88921a93def50  gcc/analyzer/constraint-manager.cc
! 4ae502dacd7c0ccc679154922478e4e0  gcc/analyzer/constraint-manager.h
! feb7fc05a744e341ecb884bfc9c7d22b  gcc/analyzer/diagnostic-manager.cc
! 28fdf2442227e1253d37b0857f997501  gcc/analyzer/diagnostic-manager.h
! 0953736e74cd265c409a1f8a2f048b14  gcc/analyzer/engine.cc
! e90f82f6fa234cea036d87c315906a4f  gcc/analyzer/engine.h
! a07ce96959a56e56ecc042d055a3d0e8  gcc/analyzer/exploded-graph.h
! ebeb52d49420ae2b268ffbfc4a02e515  gcc/analyzer/feasible-graph.cc
! c5724208b3a91394da482f45c5125d46  gcc/analyzer/feasible-graph.h
! e9260f872f4deaa00e67cb88fcc970b0  gcc/analyzer/function-set.cc
! 9b37bde9380e5bdca3a8972023d4b11b  gcc/analyzer/function-set.h
! ae169b6a0f9422d8a83bc87caf63ac71  gcc/analyzer/pending-diagnostic.cc
! 58cd6ebab838e4c3eb2c07f925a0aa87  gcc/analyzer/pending-diagnostic.h
! c2fb252f174415b0644c6deee8b3af95  gcc/analyzer/program-point.cc
! 09b1408fbe1c9a1f43ac1f8de6599084  gcc/analyzer/program-point.h
! 525d1d5ec60d82f913ae7c906029e265  gcc/analyzer/program-state.cc
! c4d612a96ce20b139f0d233760a0cb77  gcc/analyzer/program-state.h
! 838a432ea8dde43104d6e6d9b06fa101  gcc/analyzer/reachability.h
! 4f1084100e6452ac8cd6245011a452cc  gcc/analyzer/region-model-impl-calls.cc
! 19c11e9a2411ef9eb0ef031c48b026d1  gcc/analyzer/region-model-manager.cc
! 9faa52eb7a0589418eea7610e39ea842  gcc/analyzer/region-model-reachability.cc
! 0a0e9c1f4c814b36727206784fad7196  gcc/analyzer/region-model-reachability.h
! 5b93aaf0af5a0c5997f08fde09135f7e  gcc/analyzer/region-model.cc
! 7cd61c5361a5ab742da99aea7fe6d33a  gcc/analyzer/region-model.h
! 0bcdef0cbfb916234ac8a30a820d716b  gcc/analyzer/region.cc
! 821031b2cb42153e649f270612c73ce9  gcc/analyzer/region.h
! c4dac83db9546e290daf74b0b530b9e7  gcc/analyzer/sm-file.cc
! a47a1ddc7c84233217b2c2fa821fe5bb  gcc/analyzer/sm-malloc.cc
! 2d359609f738aa3f949920ac674fb886  gcc/analyzer/sm-malloc.dot
! e60888404e0efbc46edbb012bdffb470  gcc/analyzer/sm-pattern-test.cc
! 38650323e4aacbf04621da597ae78fbf  gcc/analyzer/sm-sensitive.cc
! fc8fa3324d4b1cee7dbe09b5c359392e  gcc/analyzer/sm-signal.cc
! 6a6be25f52789d81fc74c632e9905b18  gcc/analyzer/sm-taint.cc
! 7565695a16e50fea758de778ce2e517b  gcc/analyzer/sm.cc
! 2d56c8f91158fc747839add6dd1f883d  gcc/analyzer/sm.h
! d1740145f2366ef993079808555efe90  gcc/analyzer/state-purge.cc
! f120126786d5313c48e4fbdef1deb90f  gcc/analyzer/state-purge.h
! a8dfbfef7f3b133499696d3305dae01b  gcc/analyzer/store.cc
! ec8d7ce32092da6320a813780ce519c0  gcc/analyzer/store.h
! 8e4eceefe5a130b8fe395934d81e06f0  gcc/analyzer/supergraph.cc
! b1345e496e4e4a76d182dc95dd2b92b2  gcc/analyzer/supergraph.h
! 3b37c7333ab6aa9f14ceb721081be1c3  gcc/analyzer/svalue.cc
! 5bd06686fe1071f96bd7114dd6faa1b8  gcc/analyzer/svalue.h
! 185fe9c53545064ee1e53b91358f7de7  gcc/analyzer/trimmed-graph.cc
! 74a5cb5dcaf4cfb2dce05019ec345914  gcc/analyzer/trimmed-graph.h
! 4dc5fb48242295b1a20860e9026ef907  gcc/array-traits.h
! a44d34fc91236820a8048065a4f8e614  gcc/asan.c
! 487ef86d71c549a16efa36238b86952f  gcc/asan.h
! 542d06ea0e3478abe23c1efa8f3be1c9  gcc/attr-fnspec.h
! 1560a04f3054fd422ef2f9b0bdd81b4c  gcc/attribs.c
! b62a19a18359e023c63a5a045f9d97dd  gcc/attribs.h
! 0abcbaaeab3b080c913716fca5d4a9fd  gcc/auto-inc-dec.c
! 2eef15ab83617fc37f40877b720394d9  gcc/auto-profile.c
! 1963f1d6c80c316f8cdcc8a028d3c9ca  gcc/auto-profile.h
! 3ff58d5a06d5eaee37d7cb2ed6c43edf  gcc/backend.h
! c85b11c624a3273aac7365b0f34125b6  gcc/basic-block.h
! 28009e6ac712423681bc6e96d2da535f  gcc/bb-reorder.c
! d0ab00f1b3fc80f5bfda75adc6c362d6  gcc/bb-reorder.h
! 3eea6568054bfc75db84951d4d2337eb  gcc/bitmap.c
! 25f9d6a11468ade49e9d5f448c7ec111  gcc/bitmap.h
! 6b9e1cb83032742218edd1600590d286  gcc/brig-builtins.def
! 59cd8e781a9ebad05a7f8396c23d3f8f  gcc/brig/ChangeLog
! 32f54aacbd7e3a02140d36f7e8f58da6  gcc/brig/Make-lang.in
! 966892b9e3cc742708ffb50160e7ea6f  gcc/brig/brig-builtins.h
! 0676a7ca45684ceb5fbde93beb5b3950  gcc/brig/brig-c.h
! 1ab2060328bc79a2d5aab21f6c206db0  gcc/brig/brig-lang.c
! f94aca8021e6a490ba7723b65c953cb7  gcc/brig/brigfrontend/brig-arg-block-handler.cc
! 8791e40b4d8eb3025ce1e6af8697faef  gcc/brig/brigfrontend/brig-atomic-inst-handler.cc
! 148977ae1d57373d3a3aa33549a74d27  gcc/brig/brigfrontend/brig-basic-inst-handler.cc
! 2865ff9eb0796e38b2c70eceb67aa4f2  gcc/brig/brigfrontend/brig-branch-inst-handler.cc
! 49a8ba9b4979fbfecdb6ece48df34c24  gcc/brig/brigfrontend/brig-cmp-inst-handler.cc
! 91f016167347657b197dff6cd86f92da  gcc/brig/brigfrontend/brig-code-entry-handler.cc
! 19928afd0221eeb84903ca84423a3773  gcc/brig/brigfrontend/brig-code-entry-handler.h
! d66d598c3e4be1925c68bfef41a30278  gcc/brig/brigfrontend/brig-comment-handler.cc
! f7be85bd0ce9385761c5dbcd1a5c67bd  gcc/brig/brigfrontend/brig-control-handler.cc
! db04bcb67edd115f1dadb16495b00111  gcc/brig/brigfrontend/brig-copy-move-inst-handler.cc
! cf531d6bd8a55ea294cae0b4ce59001c  gcc/brig/brigfrontend/brig-cvt-inst-handler.cc
! 8cb1946907d1e50bfe62b80a6db36c9e  gcc/brig/brigfrontend/brig-fbarrier-handler.cc
! fdc41a162dc9bc96ec960f5ec370e43f  gcc/brig/brigfrontend/brig-function-handler.cc
! 71c2aca0d5a08acc76bfdcbfc231e598  gcc/brig/brigfrontend/brig-function.cc
! ac8182a965c651e67da897bba8f68062  gcc/brig/brigfrontend/brig-function.h
! 4f9e8d2ef3ab796050f6c6cc860226f7  gcc/brig/brigfrontend/brig-inst-mod-handler.cc
! 31d82c5a14cdb5d60c80443ae6d8c3c8  gcc/brig/brigfrontend/brig-label-handler.cc
! 42d7129ee06bc0fb5a66ae30c6b353b6  gcc/brig/brigfrontend/brig-lane-inst-handler.cc
! f97038c577d5a0ba8d782c0e13ebfbe3  gcc/brig/brigfrontend/brig-machine.c
! 9a024092aa03ef009717a68dd809765c  gcc/brig/brigfrontend/brig-machine.h
! 82c9248d3281220cd4fac5fd8d63d63c  gcc/brig/brigfrontend/brig-mem-inst-handler.cc
! 58d6aaa137f4cbaa330c3c2957b2d877  gcc/brig/brigfrontend/brig-module-handler.cc
! f3f8c0764c443833babf1b5a331a8325  gcc/brig/brigfrontend/brig-queue-inst-handler.cc
! 3244888dad48558f56ee651f6af3d1f3  gcc/brig/brigfrontend/brig-seg-inst-handler.cc
! 4a8139768883b5b66a7a530113c3c9b5  gcc/brig/brigfrontend/brig-signal-inst-handler.cc
! f24ee32cd3d2a773c8e82090769137f3  gcc/brig/brigfrontend/brig-to-generic.cc
! 69d79676fea8873f9bbc4fc07acf9af3  gcc/brig/brigfrontend/brig-to-generic.h
! 34b166e8b4897182a998fccb1be666b8  gcc/brig/brigfrontend/brig-util.cc
! d9e2fd4476f1d68098415f64337e84f3  gcc/brig/brigfrontend/brig-util.h
! 114b47262a72afdb81132cde6848ea39  gcc/brig/brigfrontend/brig-variable-handler.cc
! 92b81214376d948c1abf2f9123379808  gcc/brig/brigfrontend/hsa-brig-format.h
! a22024fd9249890634b3313bd1719264  gcc/brig/brigfrontend/phsa.h
! 178500afa7a1cecbc78ec0ef76332179  gcc/brig/brigspec.c
! cc2164b02cd1b96873ef661498e9eb6a  gcc/brig/config-lang.in
! 70db166d2ccbe32a49c48d3c4ede5d27  gcc/brig/gccbrig.texi
! a1cc43f2d0aedbd5540d15c4ec568a8d  gcc/brig/lang-specs.h
! 746844ca02d1cafc9fb4b3f354b3dc78  gcc/brig/lang.opt
! 1b7da82494d0c161ca60a8de1b55195a  gcc/builtin-attrs.def
! 0fb3ced35d472c83b8689686b224ad01  gcc/builtin-types.def
! f2bd18ba5f985491c97b39f80d934e55  gcc/builtins.c
! ae94d8196a803d4a2c69cded88dbbb76  gcc/builtins.def
! f501faddb738e7422e75672d29bfc823  gcc/builtins.h
! c174e61ac5af6f9f6b598b886f2dd91a  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
! ff19b079a30065b282983bff90d28fe1  gcc/c-family/c-ada-spec.c
! aaefdc238734ee62a127bef557ad07e3  gcc/c-family/c-ada-spec.h
! fbaa53dbebc050740de435f65a7ca841  gcc/c-family/c-attribs.c
! 57f6c7ce4089c15002cdc50a7abe5acc  gcc/c-family/c-common.c
! e46ad48dbbcefe97d0490955db40eddf  gcc/c-family/c-common.def
! dfe16edb3b81b111e6c4034e30b62631  gcc/c-family/c-common.h
! 6e9e06501cc27a2058a421843d2dfd09  gcc/c-family/c-cppbuiltin.c
! e8d118aa27a40cfef46375271877c458  gcc/c-family/c-dump.c
! 4500270427ab612e2b2c86f8bca2616e  gcc/c-family/c-format.c
! 24ddc77a1aaacd70e8638b0cbeb2d12d  gcc/c-family/c-format.h
! 77e82f3c8d0ce0df0c22bbf84684cd21  gcc/c-family/c-gimplify.c
! 47cae120dbbc6dc65b3d06445c7ffd2c  gcc/c-family/c-indentation.c
! d0a5008a37b6b90aad01170ec4597384  gcc/c-family/c-indentation.h
! 987a47512367efd11640028189ddd6da  gcc/c-family/c-lex.c
! 5be62f7688c8de29dc7aa9faf1367d40  gcc/c-family/c-objc.h
! c4bf621294fcadfd3001becb5d34473c  gcc/c-family/c-omp.c
! b400b3781898b623a6b61c01f8e7e6f2  gcc/c-family/c-opts.c
! 0c3e87810e8edfc7c91b38b0958fe994  gcc/c-family/c-pch.c
! 094ea467499de4520c5a2f6ee1abc7e0  gcc/c-family/c-ppoutput.c
! ff199d71952d05520517d7906169f3ff  gcc/c-family/c-pragma.c
! ae0c3df9ebba6d5955c4d243271bc4ef  gcc/c-family/c-pragma.h
! 11df78e1d721f3698c04edf421c48aba  gcc/c-family/c-pretty-print.c
! 020ff5f56ad03d7bca8b8eec66f6b106  gcc/c-family/c-pretty-print.h
! 4cf9dde57eca469e002941f3476f5e47  gcc/c-family/c-semantics.c
! 39f5e410e60e515e5090db5fa8b436e7  gcc/c-family/c-spellcheck.cc
! 81ea7161b8159e20b33f0b4e8cf4c29e  gcc/c-family/c-spellcheck.h
! 1b4bd0524aaca890cc050af5017a483d  gcc/c-family/c-target-def.h
! 2a979b918b62205beea7e25f63c95fff  gcc/c-family/c-target.def
! 25b2b1b67352149295b6b87a3266dbfd  gcc/c-family/c-target.h
! 337b2798f48579a4ae2ea047fc7557d5  gcc/c-family/c-ubsan.c
! 687717e96ebfecf566b59f5ed52dd61c  gcc/c-family/c-ubsan.h
! e91048cd1bccb22ff126d244814dddf0  gcc/c-family/c-warn.c
! da4418c25d267f1c9ad5ec51e864ebdc  gcc/c-family/c.opt
! dda3a883f8b1367723b357a3494a9ad2  gcc/c-family/cppspec.c
! 03976e75d63506e61159cb33e38a17a4  gcc/c-family/known-headers.cc
! 24a64eac5a3ca85c2141b26c328e720c  gcc/c-family/known-headers.h
! d945fcf11b0cf9b680801477d4d6dc5d  gcc/c-family/name-hint.h
! 10c210b270bd57796c125ceacb8aacf3  gcc/c-family/stub-objc.c
! d0cee2014ea5d68cf0e48c6b1e171485  gcc/c/ChangeLog
! c2c16ebc27917ec274266a7f0a5de762  gcc/c/Make-lang.in
! 4b3d7694a2cabd663e29accad2dc49fd  gcc/c/c-aux-info.c
! 477103be514e3fee8add675ebdf6c643  gcc/c/c-convert.c
! af946625b9720884a8e55174da999768  gcc/c/c-decl.c
! 252e1c166ac85eeca88c8832c302422b  gcc/c/c-errors.c
! 1780d134b036bd5b5ecee22b7e214eee  gcc/c/c-fold.c
! ac32535d53226e7747b1f0c599af0aa6  gcc/c/c-lang.c
! 7679e451f36a4519a03c17b2df2b1f45  gcc/c/c-lang.h
! 792fcf94fea9b93654d3fded1ee28405  gcc/c/c-objc-common.c
! 6dedcac49f0945db05052a9a1ccdba34  gcc/c/c-objc-common.h
! 2e38188b82a49d8c47578fa2dbb9a323  gcc/c/c-parser.c
! e8275c52f6f57f9005771a7e88cab453  gcc/c/c-parser.h
! 88b5db93f3375c32222a9f47e689286d  gcc/c/c-tree.h
! dd4d9380dba73e4141bc98c5a71232fb  gcc/c/c-typeck.c
! 14475dbf3b5b7a18fbbedf33d6d8b389  gcc/c/config-lang.in
! aa25d2829660b30c35d0853ebf4823c8  gcc/c/gccspec.c
! 5543668009c8b1a506c088278d56eb1f  gcc/c/gimple-parser.c
! 11de19cdadf88dc735a98424b4446d0f  gcc/c/gimple-parser.h
! 6e9b6512ecb2e91435f3965783d9d8a9  gcc/caller-save.c
! 9647c4ec3f8dc4592c6c2a37e22a2ad7  gcc/calls.c
! 9d7dc213758e156c7688bea530991bbb  gcc/calls.h
! f8f30bc82844b74d9260c5b65a8df708  gcc/ccmp.c
! bcc5728c95c60624d67bb7472fc6bfbe  gcc/ccmp.h
! c79281095d98e567b1cdd6bd2e75a3d7  gcc/cfg-flags.def
! 63d656248058bc51a5dbfd25e2e5bc28  gcc/cfg.c
! ca6328adbf190b5d1895b2f4bf21c53b  gcc/cfg.h
! a3f6082ee8044d951dd495cf2599bd46  gcc/cfganal.c
! 06649f7ed6b72ab7eec91dad178178ce  gcc/cfganal.h
! 2ac76b0a5a1835a7bd0662c6595617d6  gcc/cfgbuild.c
! 8d2d2838a75a74f980c02a0c1dccc6f7  gcc/cfgbuild.h
! be1222d673389bc9676408437af17523  gcc/cfgcleanup.c
! 76493c30b63093a62270af2c53f028b4  gcc/cfgcleanup.h
! 663ec79d8ba8c772d748e0e9749aa19d  gcc/cfgexpand.c
! c4c6266c4888e09280fdca3bcdd6c927  gcc/cfgexpand.h
! 241b624068329a0557ba643040ea7a52  gcc/cfghooks.c
! 2844f8c444cf87319afcc888a92372d4  gcc/cfghooks.h
! 13550c9ff7be56f421a602f6ba842631  gcc/cfgloop.c
! aa71757a8881b31ac75eda23b83e392d  gcc/cfgloop.h
! 532afc445fb123afc9610af6032bf074  gcc/cfgloopanal.c
! e492ea8cd99e478c79b30344c8fb3872  gcc/cfgloopmanip.c
! 48131d2e7e0d663e5f4d7a8c8c2863f6  gcc/cfgloopmanip.h
! 57da497689234ac138829550215f80d5  gcc/cfgrtl.c
! 627d4ecbd5c5b924d8cd3e490761285c  gcc/cfgrtl.h
! 3c76f58b3f3e0e44a99975afed43c27e  gcc/cgraph.c
! dccdc21f74f0e2a035bc78105bec8a3e  gcc/cgraph.h
! ab4feb9f136b4b239302421056d5aa8a  gcc/cgraphbuild.c
! c8a1525cfb171995108034e37d5933a6  gcc/cgraphclones.c
! 2b08a54f89b4650895dbbcdb3e2d34e9  gcc/cgraphunit.c
! 521bd63dc8fb9c35c26f7a2b7c04f7c6  gcc/cif-code.def
! b49865466bbb7aec08e5fc1f12b8fee1  gcc/collect-utils.c
! 35567207ddff3c6a55598c11201c07e9  gcc/collect-utils.h
! 2e9b2ff70bc3b01d2592857c05906fe9  gcc/collect2-aix.c
! 4a4133868bd2d57a5c7ee709f9bc72d5  gcc/collect2-aix.h
! 81aaf7b483670958abe873646f02a5b9  gcc/collect2.c
! e7cf7224890831969cdba55079c3f8c5  gcc/collect2.h
! f7e4d84c9831e6b006e3abaf0cda296d  gcc/color-macros.h
! ed6f48014eba9e2fdba773c6bbc66f41  gcc/combine-stack-adj.c
! f5e15d2ef2bb91d3293c334b42de702e  gcc/combine.c
! 654752e8e1da5146591a7aa1c1503728  gcc/common.md
! e830d7a639390f601506579c91d429ac  gcc/common.opt
! d39719c8a8249d7c11783eb1a99e6629  gcc/common/common-target-def.h
! 77b5f9067bdf47c77a81595371bc8097  gcc/common/common-target.def
! e99e94f2234ef2a69147e0d4ee70f2b4  gcc/common/common-target.h
! 52e3ac42276a17461e1787c6a7933909  gcc/common/common-targhooks.c
! 2faa1fd8c8565c8fcbefea103dc655ef  gcc/common/common-targhooks.h
! af218d96808155b08cb781a3ceae404d  gcc/common/config/aarch64/aarch64-common.c
! a303a5d9bcbab6c766f777d8ea7bf8ec  gcc/common/config/alpha/alpha-common.c
! 5ec3ee8198db84e2d7c130fdcecb2628  gcc/common/config/arc/arc-common.c
! 47b91985fed3ffe67b7b624493ef3fca  gcc/common/config/arm/arm-common.c
! 105247587f3306522c28945279c5b3d5  gcc/common/config/avr/avr-common.c
! f85c0fadead416e555bc6af5c42571eb  gcc/common/config/bfin/bfin-common.c
! 1393f4a9986b435c97277636348da4ef  gcc/common/config/bpf/bpf-common.c
! f6d39339d06de4679e87dfbf8ab1d6e5  gcc/common/config/c6x/c6x-common.c
! fcc86a4ca8d05def4429d5630636c248  gcc/common/config/cr16/cr16-common.c
! b9e205cf83be687340f57069d2828c97  gcc/common/config/cris/cris-common.c
! 6e1692541aa64c28e46a5bd1f5d0bf6f  gcc/common/config/csky/csky-common.c
! 0f7312b8d0b66dd632bf83c70a749e6a  gcc/common/config/default-common.c
! 16ddfb2f9271e0c991efb9c914d2e313  gcc/common/config/epiphany/epiphany-common.c
! 889c4b13dfecfa86c2bac4eda05dd951  gcc/common/config/fr30/fr30-common.c
! b302028eafbaf815953381baed1c74b4  gcc/common/config/frv/frv-common.c
! 9b09cc59d4b2abf439f40174f9576a69  gcc/common/config/gcn/gcn-common.c
! 4c82be520bd57ce5fdb0b57810fa90c9  gcc/common/config/h8300/h8300-common.c
! d90b3399afb50df7c96291efe28ebdd6  gcc/common/config/i386/cpuinfo.h
! ced3a9a878c0b332c66d28880f9ba1c8  gcc/common/config/i386/i386-common.c
! abdf89aeee73e0bc78d1c7c7096c04de  gcc/common/config/i386/i386-cpuinfo.h
! 2b7433f285684f4da203c7d39cd60be7  gcc/common/config/i386/i386-isas.h
! 41afdf8ce4284f33a46b2605ce6eafc7  gcc/common/config/ia64/ia64-common.c
! 48dcb9e9504ab558c9bfeb4d255c570a  gcc/common/config/iq2000/iq2000-common.c
! 6d748e18cdc7a7d21a35e4e486f5a396  gcc/common/config/lm32/lm32-common.c
! a1588ef1737452dcc45b75928e6ca171  gcc/common/config/m32r/m32r-common.c
! bc1ffa91addb2c8818396addfed9f55c  gcc/common/config/m68k/m68k-common.c
! 036b71eb6252f1d4da64d732fc95724c  gcc/common/config/mcore/mcore-common.c
! 9257dab20a02dde649e3458bfdbf3dc4  gcc/common/config/microblaze/microblaze-common.c
! 2a8a73eac7cb4fe038d7140a6c49ef0a  gcc/common/config/mips/mips-common.c
! b6419c337568dd173d2f8c1e4f3faed3  gcc/common/config/mmix/mmix-common.c
! 26477273369d8c91549deb7113bc8f11  gcc/common/config/mn10300/mn10300-common.c
! 5a70e12ecb200e388b740c40a310b8d2  gcc/common/config/msp430/msp430-common.c
! fac874fb3e2ac405b8a89713fa296443  gcc/common/config/nds32/nds32-common.c
! da6eae53a78649d358a44750e71ba100  gcc/common/config/nios2/nios2-common.c
! c90e4a6fa0f79bf807dcfbed250daa98  gcc/common/config/nvptx/nvptx-common.c
! 98f8d987b5eefbb63a8c11517af73bcc  gcc/common/config/or1k/or1k-common.c
! dcf26e1a553f369f46a4715d27f98011  gcc/common/config/pa/pa-common.c
! 632a5fdabf385ce711aa58e26b678e45  gcc/common/config/pdp11/pdp11-common.c
! dc136056beaa5131fb60de92a65b0cd4  gcc/common/config/pru/pru-common.c
! 24fac0d7166b73095a41547bb2914b43  gcc/common/config/riscv/riscv-common.c
! 8d78614e94cef65542a3c18e21fbf71a  gcc/common/config/rs6000/rs6000-common.c
! 356ae7f15ec175ef0839a3cad41c7a8d  gcc/common/config/rx/rx-common.c
! d206c0a3bb718fb9f848902d92b1ee99  gcc/common/config/s390/s390-common.c
! 7e2a19d57fd75e9f77c7f92f0461111f  gcc/common/config/sh/sh-common.c
! 0d35cfa0c5b6fff1703404123f09de26  gcc/common/config/sparc/sparc-common.c
! f969c92621b2f91048e39bbd4160557a  gcc/common/config/tilegx/tilegx-common.c
! e6160ce2fa84e59a23f085913b5b21b1  gcc/common/config/tilepro/tilepro-common.c
! 8cc892ccbea812b016eb83c06b903b42  gcc/common/config/v850/v850-common.c
! b06bd63be3390da03901ca5e4793c912  gcc/common/config/vax/vax-common.c
! adba2f65f35979e33c3e4f513a73203f  gcc/common/config/visium/visium-common.c
! c76932f579954210dab548bf32d46347  gcc/common/config/xstormy16/xstormy16-common.c
! adb9f88eafb276d0ce398300d4103015  gcc/common/config/xtensa/xtensa-common.c
! b2ffc0034da9ccbf178a5e5748c52c0a  gcc/compare-elim.c
! e4b6829ec591a11a2cb0db458fe65ff2  gcc/conditions.h
! cc62394ef13d37ac049f14027a48482a  gcc/config.build
! 6cb82a9f7591022f08c544cb7816d7f2  gcc/config.gcc
! 31bf67644c4d7d8b27828e16398dc1d9  gcc/config.host
! f8cecc4150d2af30d61e6bc2deb93449  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
! 1e9e77d433aa4a980b2aa08ff1ac55db  gcc/config/aarch64/aarch64-arches.def
! a94bede1b4891fc8181d9314554673d2  gcc/config/aarch64/aarch64-bti-insert.c
! 73f1d76b1e34329d429fa9dd801cea9e  gcc/config/aarch64/aarch64-builtins.c
! cb3be802be5a763bd10184170ac16652  gcc/config/aarch64/aarch64-c.c
! e59a3f748c562e36ae56da5a4a570356  gcc/config/aarch64/aarch64-cc-fusion.cc
! 6b8131c2fbd26b7762c85c7ad0710c70  gcc/config/aarch64/aarch64-cores.def
! 2636adc152921b1cd0fe5d6edefa4ce6  gcc/config/aarch64/aarch64-cost-tables.h
! 7a209f0ae0add87b9144ece813928a90  gcc/config/aarch64/aarch64-d.c
! 89bdbb01cb73e3f0919c1d6d2ba307bb  gcc/config/aarch64/aarch64-elf-raw.h
! f21ecc1635eb9a794f1d03cc75500f1d  gcc/config/aarch64/aarch64-elf.h
! 90d5a8b0bf7c4aee052f2892bd06cd9f  gcc/config/aarch64/aarch64-errata.h
! 8933374edbf830f362aa88cc9cbf56bf  gcc/config/aarch64/aarch64-freebsd.h
! 81e20548549eec1bda12655880536aff  gcc/config/aarch64/aarch64-fusion-pairs.def
! 4bf6eb8aa5d716f9f3868a520832836a  gcc/config/aarch64/aarch64-ldpstp.md
! 02999a24065853e9ae6c97ba1453c6e2  gcc/config/aarch64/aarch64-linux.h
! 900f62f582105e91c9eba7381f3b34a0  gcc/config/aarch64/aarch64-modes.def
! c5cb6a8b03d65fae0375198834e67a89  gcc/config/aarch64/aarch64-netbsd.h
! b94d8d3eab975242d7f1db8a1921e2d4  gcc/config/aarch64/aarch64-option-extensions.def
! 5070a0c7b6edddd4794f877823f6a675  gcc/config/aarch64/aarch64-opts.h
! bd39101ee7e523cee8589bddf788a863  gcc/config/aarch64/aarch64-passes.def
! 7a366109c1f49ff55df33391359f1aa3  gcc/config/aarch64/aarch64-protos.h
! f4e8ddb01a0c073af7bd47950e5052d8  gcc/config/aarch64/aarch64-simd-builtin-types.def
! a57e7294debe2760574e76f5405efc29  gcc/config/aarch64/aarch64-simd-builtins.def
! 88a00d0b8cb3f671c65a4040c7ea0367  gcc/config/aarch64/aarch64-simd.md
! 5a9f2f65b25636e30ba5254866b36124  gcc/config/aarch64/aarch64-speculation.cc
! 2193126f11ce458f9f1292dcf8f9f1bf  gcc/config/aarch64/aarch64-sve-builtins-base.cc
! 2e5ac221624603ecfcaff6c29bbc8ff0  gcc/config/aarch64/aarch64-sve-builtins-base.def
! 6eb01fac73f48bc4c2e6486a90db2fe3  gcc/config/aarch64/aarch64-sve-builtins-base.h
! a48e47086140739b3f98e0b42b8b2c88  gcc/config/aarch64/aarch64-sve-builtins-functions.h
! 158c675614d9405feb5c84fa533b6365  gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
! 21155877c1a7c30e32f03119e5d572d3  gcc/config/aarch64/aarch64-sve-builtins-shapes.h
! d825b33742f9b68f8efbad389e7a83ff  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
! d7b507459d8322632f7a6054d221420c  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
! 27772360ef1e61832d4975722c8f9388  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
! 8b07b4ea6c45579f7a06fee6c687e734  gcc/config/aarch64/aarch64-sve-builtins.cc
! 84e976c61e7df417c4615f873f6260d9  gcc/config/aarch64/aarch64-sve-builtins.def
! 2bb49c05f0be70f85d5eb7341a3fed80  gcc/config/aarch64/aarch64-sve-builtins.h
! 5e6e1dde55cd12f7db6a9092cfe77058  gcc/config/aarch64/aarch64-sve.md
! 024f1f15f2747beb21971036aa2e89d9  gcc/config/aarch64/aarch64-sve2.md
! 3d0ddef54fa3101a229b2cc9d1f8749a  gcc/config/aarch64/aarch64-tune.md
! 02788d998926c5d56579837ba517a991  gcc/config/aarch64/aarch64-tuning-flags.def
! 9f502cdcedcd85f77d279b53ea68cfc3  gcc/config/aarch64/aarch64-vxworks.h
! 4b01c4e6f295536a6c5b17f5561ad6ae  gcc/config/aarch64/aarch64.c
! 0ca942e84e4b92f73aaaec7bfa1ccbc9  gcc/config/aarch64/aarch64.h
! b8da1492bc2664bd2d3f1e52f07a2ceb  gcc/config/aarch64/aarch64.md
! 4923901cd53cde9dcd83c7f0dab8ef58  gcc/config/aarch64/aarch64.opt
! 9fef16059a26a1320f080c830acef3bf  gcc/config/aarch64/arm_acle.h
! ba8c2535e9626ae4e550de5047888287  gcc/config/aarch64/arm_bf16.h
! 05d7dd122d4058557d659713d2c9b8c7  gcc/config/aarch64/arm_fp16.h
! ae69dc7e22047d2b46f6970580beb3c1  gcc/config/aarch64/arm_neon.h
! ef1dd222bbbaca1e6dac76b9321bab92  gcc/config/aarch64/arm_sve.h
! d92a3d5acf1ebe31d01e378d08932d3b  gcc/config/aarch64/atomics.md
! c5e4dc1aa8aa96b1e98708782e715b10  gcc/config/aarch64/biarchilp32.h
! 5b6abcf28f1e954ef136e3756734f1cc  gcc/config/aarch64/biarchlp64.h
! d1bbf361745ec677a615eb0a11e5b715  gcc/config/aarch64/check-sve-md.awk
! ebb9d4d878045fbeb245aaf5a1fa19b7  gcc/config/aarch64/constraints.md
! 1ad03640d8fc76d1f796698531cdb0f1  gcc/config/aarch64/cortex-a57-fma-steering.c
! cf52b0975e4c0d0924ed38da6a43949c  gcc/config/aarch64/driver-aarch64.c
! 9dca576b967f36193e144d26def4a9c5  gcc/config/aarch64/falkor-tag-collision-avoidance.c
! 72804cc2b3f5d7e52809a06b3c251c54  gcc/config/aarch64/falkor.md
! 67157c8970cb22f05a2e298f9a6b84c7  gcc/config/aarch64/geniterators.sh
! 9a3499491d4a8101f057a66925192785  gcc/config/aarch64/gentune.sh
! 05fb97992a51e3216fc9eb440e168427  gcc/config/aarch64/iterators.md
! 3bd19c6960fb43796a91b7c323749120  gcc/config/aarch64/predicates.md
! 1a2b7c99ac3e699f010a2a5e143dfb8c  gcc/config/aarch64/rtems.h
! 38550170272505346a8ad5dd6a1b63db  gcc/config/aarch64/saphira.md
! 7459db542df0cab065589aa58e8e93ff  gcc/config/aarch64/t-aarch64
! b012c1f5b32ef8620150f29283c8aaeb  gcc/config/aarch64/t-aarch64-freebsd
! a264697d79eed5fef4c77cdd8f870ae4  gcc/config/aarch64/t-aarch64-linux
! b012c1f5b32ef8620150f29283c8aaeb  gcc/config/aarch64/t-aarch64-netbsd
! ab48ffa82fb8892fbe901a1484e361d2  gcc/config/aarch64/t-aarch64-vxworks
! cffb77e28aaee1ef71df44208c8cf08e  gcc/config/aarch64/thunderx.md
! 92f39a3e7710d5bfe5657e35e0ac0058  gcc/config/aarch64/thunderx2t99.md
! 0385995321948c293208a3c8e11ccb05  gcc/config/aarch64/thunderx3t110.md
! 5284f896b6a094c24139bc55a13dd29b  gcc/config/aarch64/tsv110.md
  8b41b511cae4a5eda35cf19755875d5a  gcc/config/aarch64/x-aarch64
! 3af502026ddf49d69ce20f7f355413c5  gcc/config/alpha/alpha-modes.def
! 7b2a95a3c1649335efec41840c0563b4  gcc/config/alpha/alpha-passes.def
! 734c46dde1390585094d037bd921b4be  gcc/config/alpha/alpha-protos.h
! 5555e630af513fb70ff81e8224650ddf  gcc/config/alpha/alpha.c
! b583c637be36f7ba4943158c259f9071  gcc/config/alpha/alpha.h
! 96f465578b3bc22c52447c9dfa49487b  gcc/config/alpha/alpha.md
! c8a659f2d0ece9ed25fb00c2b65109dc  gcc/config/alpha/alpha.opt
! a69c90e08fbd52ed0a529d829106ee0b  gcc/config/alpha/constraints.md
! 922bc1be27f184824dfc6ee89eb40afb  gcc/config/alpha/driver-alpha.c
! 71b456abb6ba28ef390d8665eb986ca7  gcc/config/alpha/elf.h
! b2e7fd5895398a60097812bda344908e  gcc/config/alpha/elf.opt
! 24c560b186b12f1e569216f1fdee293d  gcc/config/alpha/ev4.md
! 2c40c2dff38fa716014d2a876f121e92  gcc/config/alpha/ev5.md
! 9548e09fdf569e439f479c3e8d8f6cf9  gcc/config/alpha/ev6.md
! 94ba2e261cf99a359bb052692241ed4e  gcc/config/alpha/linux-elf.h
! 5d94999f26e19ac7f216b788b8af8bbb  gcc/config/alpha/linux.h
! 1e4a93b59fc1ed77d69bb826b4b5a636  gcc/config/alpha/netbsd.h
! 32cd36e05984e606dd85615a68b0b773  gcc/config/alpha/openbsd.h
! 3d273036189ef9b6a2d58ce129d071fe  gcc/config/alpha/predicates.md
! cc9e3d1396b7dc743ebfb166aa411c15  gcc/config/alpha/sync.md
! fdbb91f07b7195d65f4e9d9d2098acde  gcc/config/alpha/t-alpha
  6e8dd648b9668f18b1dfd9f1203c9885  gcc/config/alpha/t-linux
! de1fa8b5ec0135002586a573da8e5d3d  gcc/config/alpha/t-vms
! 9312d528eacea1a2d5eb040e65f85d5b  gcc/config/alpha/vms.h
  1fd9a45b4f2b1e546182ce0fe35ac6d1  gcc/config/alpha/x-alpha
! f2650206fce4bea2c4a8f3b1bd15d557  gcc/config/arc/arc-arch.h
! 359335e2f192a637db17bac4f57f9f2e  gcc/config/arc/arc-arches.def
! 68b0bed4d1a0d0ccbbe69b749d535579  gcc/config/arc/arc-c.c
! c5c2cb498d2b40d6c3d1a14c322b5664  gcc/config/arc/arc-c.def
! 5d58de8355c697860ec1c81d52a58cf9  gcc/config/arc/arc-cpus.def
! f210d0e86d6a1c639ddd0293a521fa40  gcc/config/arc/arc-modes.def
! 098d4fc5c07db3dc9f0c6f3c187e41f4  gcc/config/arc/arc-options.def
! 140fe7021f313fd7bd4697c4d96a5ad2  gcc/config/arc/arc-opts.h
! 89247c6eb904410f7d7c8e7f04aa1ea0  gcc/config/arc/arc-passes.def
! ef4a0acf9779d29cf36495a057cee6f0  gcc/config/arc/arc-protos.h
! 0ab44e2572284f7a20d5e8bda975d914  gcc/config/arc/arc-simd.h
! c1c288c9a70add71779ddea1381561a3  gcc/config/arc/arc-tables.opt
! a40f511772273395113cace6ee6309a9  gcc/config/arc/arc.c
! 8b0a774ea5e84605edce913464b8a27d  gcc/config/arc/arc.h
! 94f22f749e8219663dc3341c9a6dca32  gcc/config/arc/arc.md
! ed0ac9440c0f5f1b4f72a3602bd5ca34  gcc/config/arc/arc.opt
! a7930f00d9b7b05367e91b43a1f42895  gcc/config/arc/arc600.md
! 5168429e439fc01e49fec5f6bcb7e7c7  gcc/config/arc/arc700.md
! e95572b327bad96f0b577e1722e144cf  gcc/config/arc/arcEM.md
! 5a901549845127819793b90989ba1f85  gcc/config/arc/arcHS.md
! 5dbfc6b83d2b695a0ac69d043e3816b3  gcc/config/arc/arcHS4x.md
! 969b749bcbdde02a9abf0a5f7d42b274  gcc/config/arc/atomic.md
! cc4d5a57dc230a3a474b7814d546b0c3  gcc/config/arc/big.h
! 9e6d4f46fa1c4871a2091c17cebd6b97  gcc/config/arc/builtins.def
! 6abd961b7d712d2f5bdd3f548e9ba492  gcc/config/arc/constraints.md
! cfeede9413247641930e6edf25c1c87e  gcc/config/arc/driver-arc.c
! 029d958c6b7cc45f98f73b993d1c366b  gcc/config/arc/elf.h
  255d583e6d23d9cbed1614263d159a1b  gcc/config/arc/fpu.md
! 8ce0af4bcc9c3034ccaa5bad3565de26  gcc/config/arc/fpx.md
! 93679dc2f557a6d1b2516cbe2273c781  gcc/config/arc/genmultilib.awk
! 170daa192c0ac6675ca7c29957bc243a  gcc/config/arc/genoptions.awk
! 74bbb5c37887182e5e7f61b46b3f990a  gcc/config/arc/linux.h
! 51f5b1ebe1fd693ba42e524882b6e37f  gcc/config/arc/predicates.md
! 568058e6276b1761862e9f6ac7ce6283  gcc/config/arc/simdext.md
! 8cc8fec220d6de6e07b26b1fb360d3ce  gcc/config/arc/t-arc
! a3f6d72692b8c9dd6beeaeb49b41dc01  gcc/config/arc/t-multilib
! 1cc5f2c623c109a0ca59f4729f06d1f7  gcc/config/arc/t-multilib-linux
! a43f49882ebd60b6ec1f3546fcc4255a  gcc/config/arm/README-interworking
! 0477ae3e3b9aff03d7dea09042999055  gcc/config/arm/aarch-common-protos.h
! bafeb90dee387b017b95b6ebdf1e7d23  gcc/config/arm/aarch-common.c
! 52cd23cb3f4fdb8cb709cbc94d331939  gcc/config/arm/aarch-cost-tables.h
! d48d5df954efeefe686652ee316a5ea3  gcc/config/arm/aout.h
! 4209093957da24b06ca8ee2328b86d08  gcc/config/arm/arm-builtins.c
! 4379c1e8afc18227f1b48f0dcdebd62c  gcc/config/arm/arm-builtins.h
! 2b4483898971c01058bf41ab04414e54  gcc/config/arm/arm-c.c
! 099c804c27d0b17467ee66b4faedbf31  gcc/config/arm/arm-cpus.in
! 5510fc0a22e6f1b48800e5ae75faf958  gcc/config/arm/arm-d.c
! e697f61ce1f19207b754f9e4e060df79  gcc/config/arm/arm-fixed.md
! 9f56291be317bd7c26843f3b901e70ab  gcc/config/arm/arm-flags.h
! 32250970374653b73e974c0432dbe0f4  gcc/config/arm/arm-generic.md
! cadb5b1cf604bbd9e06000676a096db5  gcc/config/arm/arm-ldmstm.ml
! 05bf396d4add547832f286e046643971  gcc/config/arm/arm-modes.def
! 25635e5e9dde05adc23f3ba0d5866385  gcc/config/arm/arm-opts.h
! 2f343760980e3203a52e4b7018b8f0e2  gcc/config/arm/arm-protos.h
! 095ccfc0877933dc53eb40c2369fcf9a  gcc/config/arm/arm-simd-builtin-types.def
! e15ee919dad399c4e00ca11efe4bcd94  gcc/config/arm/arm-tables.opt
! d70a50caf4aae1fb3ab57300fd85cd84  gcc/config/arm/arm-tune.md
! f840b1fd1464a2ed535d24c277ff5f0f  gcc/config/arm/arm.c
! b6763c8e9e46271e3e8eb051a7bd1be0  gcc/config/arm/arm.h
! 5eee27e9ca928aaac742a3c2f8128e8b  gcc/config/arm/arm.md
! 1f7927fcb3bddfa1015198c6c51c566b  gcc/config/arm/arm.opt
! 4e8f8d7a828a2fafaf77c37723c261d2  gcc/config/arm/arm1020e.md
! d70cb415fe667cb4c7ac20d8fe3dd244  gcc/config/arm/arm1026ejs.md
! 6c2465b6e56604f9ea139960f9f28bc0  gcc/config/arm/arm1136jfs.md
! c57eb0d04bce6b337e419a074f83c9ac  gcc/config/arm/arm926ejs.md
! 094d833c0a9095d17ab518993eb69ac5  gcc/config/arm/arm_acle.h
! e989cbde7f13f942a27f2663cf070d1c  gcc/config/arm/arm_acle_builtins.def
! 272e0ad6dab00cfc4a5dab8eafa0dba4  gcc/config/arm/arm_bf16.h
! cbd337565b4f575afdb3dd52410870b1  gcc/config/arm/arm_cde.h
! b3ff620bd4c7d4f7a374b8b19c778f8b  gcc/config/arm/arm_cde_builtins.def
! d6ade416bb7470bf6720a319a6338eea  gcc/config/arm/arm_cmse.h
! 4f4f4a20209f5621b7e361bd1aceed91  gcc/config/arm/arm_fp16.h
! ea1fb5d9e9347c1d90599dc6665e1c0e  gcc/config/arm/arm_mve.h
! 908c5eff411e7da1583bec9a5f5eb9f5  gcc/config/arm/arm_mve_builtins.def
! 88bbc52aa44aed209be04d7e97d96e42  gcc/config/arm/arm_mve_types.h
! 0d21d34455eeb1963a503ce34afb6181  gcc/config/arm/arm_neon.h
! 7a92ce6bcbb0d443fd30bb1456be63e0  gcc/config/arm/arm_neon_builtins.def
! d046918bcae84588bd3674d5fd1379da  gcc/config/arm/arm_vfp_builtins.def
! d38fb86a101a0c45b14efe3c44729d0c  gcc/config/arm/bpabi.h
! f202d6b26eae69e1d38719f4676cf1b9  gcc/config/arm/common.md
! 98b2033272cadcfab68d536db9fd764b  gcc/config/arm/constraints.md
! 3ead1f829830bdb9b191217dd8bed34c  gcc/config/arm/cortex-a15-neon.md
! 995634fa135396159bf8d72f6af5b817  gcc/config/arm/cortex-a15.md
! 9dce3b82c4f7d4e8e6740b8fd8bac33c  gcc/config/arm/cortex-a17-neon.md
! a9cc42689720ea8dc56704c497609793  gcc/config/arm/cortex-a17.md
! 4a3c884bcfef7048502df0054f943758  gcc/config/arm/cortex-a5.md
! 3975419260d751e0f716f359aa419714  gcc/config/arm/cortex-a53.md
! da5bf048c4b39076dfdc0238cc8d8cba  gcc/config/arm/cortex-a57.md
! e4bad8e2d295a4be59dcc67221c1e920  gcc/config/arm/cortex-a7.md
! dc96aacb756f5f6bd544f2f338dd388c  gcc/config/arm/cortex-a8-neon.md
! 8da6e6f5e7d530a5dfcd308f22c3114b  gcc/config/arm/cortex-a8.md
! c2c8a47136d2d2ab15746b6295fae37c  gcc/config/arm/cortex-a9-neon.md
! 888e3b55e54b01dc2064a96861ff8528  gcc/config/arm/cortex-a9.md
! 5fa8d9226399b5c6376597e09960b244  gcc/config/arm/cortex-m4-fpu.md
! 0e57517fbd00369f93798dcd0b1d69dd  gcc/config/arm/cortex-m4.md
! f711224f5aade6be2b8623ac4f7a3619  gcc/config/arm/cortex-m7.md
! feb37da4ab94384cd45d00b78053c43a  gcc/config/arm/cortex-r4.md
! dae8e1862e28590cb3e305a125c03f23  gcc/config/arm/cortex-r4f.md
! db672d3bf120053136f8785ca78f30f4  gcc/config/arm/crypto.def
! 0357bf50b1aedb2a838e322c43bf39b7  gcc/config/arm/crypto.md
! 06aefdf8a428a038d263110882d11901  gcc/config/arm/driver-arm.c
! eb8ac5825aa98b1de4080c2d5d2bac1a  gcc/config/arm/elf.h
! 0fc4a399b09e2d166599b4b454686d03  gcc/config/arm/exynos-m1.md
! f2023d1001207deff25610a6ba5defe0  gcc/config/arm/fa526.md
! 3c5cd9d9b81046f483f8bb23824051c1  gcc/config/arm/fa606te.md
! 545b0165cfaf2c02c2a3e9927156d772  gcc/config/arm/fa626te.md
! 8d7ef78a55e953c4efbeb7a507b2c909  gcc/config/arm/fa726te.md
! e8f87dd39e307c81c6dae8a3edd043f2  gcc/config/arm/fmp626.md
! 188a2196ca715a0a3b153bdb153df481  gcc/config/arm/freebsd.h
! 3e95055c41005c4d71e52d43abc83c1d  gcc/config/arm/fuchsia-elf.h
! ff890c264ce6d3805bae3235d04bfea4  gcc/config/arm/iterators.md
! 7cc764e7427411ddf078ac06848cd77d  gcc/config/arm/iwmmxt.md
! ce372c0d2b66d97508d2975727540cfc  gcc/config/arm/iwmmxt2.md
! d69b9646816d0775125dc3d35c12b4e9  gcc/config/arm/ldmstm.md
! 6e96d01ded8a5fdf41422e165c5fd750  gcc/config/arm/ldrdstrd.md
! ecffe56fab8520ae8bb52c40c2dddcc3  gcc/config/arm/linux-eabi.h
! bd2045b2f5d8245c16a45237dce679a6  gcc/config/arm/linux-elf.h
! 4cd31f4b65a03e7092e927d9df3eed9f  gcc/config/arm/linux-gas.h
! 41ed5979d5b4c0328c84b1411af4d063  gcc/config/arm/marvell-f-iwmmxt.md
! 64a1f7d58f31d526a6b511b59068a296  gcc/config/arm/marvell-pj4.md
! 43fdc3285e4cf2925affd75f5e519dda  gcc/config/arm/mmintrin.h
! 347225d733a4128167c172d699e6b490  gcc/config/arm/mve.md
! 33e45b75c78ff66fdc300364f690e2ec  gcc/config/arm/neon.md
! e602d4f71105bebaba1f0160067b903c  gcc/config/arm/netbsd-eabi.h
! 4868137991adc2b3ed94f92b94681a5c  gcc/config/arm/netbsd-elf.h
! cae8e4d7062cc8528b86ba742f87b233  gcc/config/arm/parsecpu.awk
! 6cd54aae61604447f82f1f8ce4241e07  gcc/config/arm/predicates.md
! caa19ea0702740cb515513dc3ffd1b34  gcc/config/arm/rtems.h
! fd8f292e71a132025a8830e9fb1d20a5  gcc/config/arm/semi.h
! e726b8b47355a98ca8086010faca628b  gcc/config/arm/symbian.h
! f5b66921a1f511140ea58745ab46a1f7  gcc/config/arm/sync.md
! 8badd5029d52a0d2eb7c0b8382b11c32  gcc/config/arm/t-aprofile
! 0457e96bc4b1969f20fb34f134dad03c  gcc/config/arm/t-arm
! d9e3716a846550c13e8f893a49641899  gcc/config/arm/t-arm-elf
  4dc427c456af5e56b1ac39bda8969af6  gcc/config/arm/t-bpabi
! 8d67404982da420db25687717428b78f  gcc/config/arm/t-fuchsia
  e3950ec6bd159734835f8f8fb143efc6  gcc/config/arm/t-linux-androideabi
! 38f852e8a280ed7764b2b2969e73b984  gcc/config/arm/t-linux-eabi
! 0c67576ec2d3fa0d713d42c3ddcac2ab  gcc/config/arm/t-multilib
! 8a2cebef7aa8ff109c2afa853812d5f7  gcc/config/arm/t-phoenix
! d3d190d673777be70637ad752a46c805  gcc/config/arm/t-rmprofile
  c434e99f4fc47fd32ffab26fbeea8464  gcc/config/arm/t-rtems
! 0608d6c58b6f51d78cb76e7173fde2b4  gcc/config/arm/t-symbian
! 8069db9516f877b2af5cb2cc7b6f9290  gcc/config/arm/t-vxworks
! 588b792e7610a89bcf2ba7965e0eb255  gcc/config/arm/thumb1.md
! c1ce8990c1043f299ab96a7d2c9feac2  gcc/config/arm/thumb2.md
! 69d922b1b0c625143462a478dbcb5de7  gcc/config/arm/types.md
! 61a16e5032a6d43fa8f2e7aa951493c7  gcc/config/arm/uclinux-eabi.h
! 0c4b326414e106a6841e37bf28ac8135  gcc/config/arm/uclinux-elf.h
! 9bc8c1d93425150291f333f13713387d  gcc/config/arm/uclinuxfdpiceabi.h
! 3285e4d14032fb0ae4faa2809a98b43b  gcc/config/arm/unknown-elf.h
! 4d486054574a4f147041002f62b9faa5  gcc/config/arm/unspecs.md
! 5e5d89d88bc9f673b8438bee294f54c2  gcc/config/arm/vec-common.md
! a536f225a59e0e18e662c5792de3b578  gcc/config/arm/vfp.md
! 5b03ce06f03ed9738ed6cee13b1475ab  gcc/config/arm/vfp11.md
! 77f809b2e1735d57d8681bbd8e506d7c  gcc/config/arm/vxworks.h
! 3f347f182b169716d6be40e6781e10b4  gcc/config/arm/vxworks.opt
  a17a638dc98f3f18b0e13448c69e1e65  gcc/config/arm/x-arm
! 53c463a79ed2a15849a3e55bf97d4e15  gcc/config/arm/xgene1.md
! 892adc022f756711b44b611a66c3f995  gcc/config/avr/avr-arch.h
! ccc46ada82df0fa7bb9733dffafcea11  gcc/config/avr/avr-c.c
! 776d48463e19f4ba6e745325104ee6b2  gcc/config/avr/avr-devices.c
! c1947a9af665ace4b4179086e3c165e4  gcc/config/avr/avr-dimode.md
! 5f03a05113cd8c94a499c82dc45fe84d  gcc/config/avr/avr-fixed.md
! f30a55e0255dba5d5d2c19df2c480a7c  gcc/config/avr/avr-log.c
! ae58fc8e911e5126311ae65b36e36520  gcc/config/avr/avr-mcus.def
! cd740966e7749795d372fba373ae3928  gcc/config/avr/avr-modes.def
! 7643e434f13ab3e2404f779621622d00  gcc/config/avr/avr-passes.def
! b81c0f73ca7db3f1fb88d95aae490ab6  gcc/config/avr/avr-protos.h
! 794d72dff8f490d2477d53cf0a17a59e  gcc/config/avr/avr-stdint.h
! da4759beb267e1b95c7f6aa98dfa02bd  gcc/config/avr/avr.c
! 255b3120305b831dc27d5e9fd24cba03  gcc/config/avr/avr.h
! 69ba81ee0df70de20935f38148e99876  gcc/config/avr/avr.md
! 4825a8c46960995423e4772273636241  gcc/config/avr/avr.opt
! c66b7ff6ce2c1dd01571398ba1dfa7d7  gcc/config/avr/avrlibc.h
! 2c477f95ea623b47ad6d8a669bcaedc8  gcc/config/avr/builtins.def
! d57cfce95da8bb853b2a4fa9dd9e2e41  gcc/config/avr/constraints.md
! 80c041554bb9ea92837a12a4d551f71d  gcc/config/avr/driver-avr.c
! 0aea93aacc85a638c37311db3d7896de  gcc/config/avr/elf.h
! f3e5f97da1fd6e0ef0928386a7f4282e  gcc/config/avr/gen-avr-mmcu-specs.c
! 063adffbd8221e11a68bee0d0e0544c4  gcc/config/avr/gen-avr-mmcu-texi.c
! d9827fe491e7081285903a74c00792cb  gcc/config/avr/genmultilib.awk
! 11d62e247c84e33dcb11bc718dbaa65b  gcc/config/avr/predicates.md
! 45ce2b67ec91ea77fa047191075cccef  gcc/config/avr/specs.h
! ad5ecf50af7a72a21b929c9eb1c8156e  gcc/config/avr/stdfix.h
! 2f4e5522c6b717d2f8d7f6f503c59226  gcc/config/avr/t-avr
! 2756b76f4f1567d916b7efa2fbd04cf5  gcc/config/bfin/bfin-modes.def
! a76dfb7bf94f40d85ae72b05b47351c0  gcc/config/bfin/bfin-opts.h
! 819990c6b4b80a5d4aca5f57b73a24d4  gcc/config/bfin/bfin-protos.h
! ebf59a009843565bdb7f7b421aa71a41  gcc/config/bfin/bfin.c
! 1ec985f3e4f5dfaa7b81776612949906  gcc/config/bfin/bfin.h
! dd6c6066591db90d0ee72471ebf2bf74  gcc/config/bfin/bfin.md
! 53442494b7fbbec48b91fee3f70d4025  gcc/config/bfin/bfin.opt
! a1d9c224d6dba8f2f16b474950b25511  gcc/config/bfin/constraints.md
! f845de9049bb421596edf1bb0fdb828b  gcc/config/bfin/elf.h
! 59e5f9e4e5d23b590255022a472561f9  gcc/config/bfin/linux.h
! b6f1fc10c719f4ed096856d43f3b69af  gcc/config/bfin/predicates.md
! 1bc7cdcf05c1e1082a30a2ba424365b5  gcc/config/bfin/print-sysroot-suffix.sh
! a36f8cfe0200b7b83c2cd0b451af4568  gcc/config/bfin/rtems.h
! fdc480553d6e39f23efefe1384d0aca9  gcc/config/bfin/sync.md
! d03105666acb1a9f30b1b136545fcbbd  gcc/config/bfin/t-bfin-elf
! a4169ea7c305414c0004d2e1323dff47  gcc/config/bfin/t-bfin-linux
! 25de22a888463feb521f8ab62575e8b5  gcc/config/bfin/t-bfin-uclinux
  6f4817f759fcac5ac27233ee451780a6  gcc/config/bfin/t-rtems
! 3b79945fb7cef44596228264f9c115c1  gcc/config/bfin/uclinux.h
! c9d6fa09859274c45cb98fee18a15653  gcc/config/bpf/bpf-helpers.h
! 8e8c35a3fcfe39836567c0598109153a  gcc/config/bpf/bpf-opts.h
! 0a812651ffbdf008842ab5324f284a01  gcc/config/bpf/bpf-protos.h
! 50fb8e1176f8adb0bbd6534131ed369f  gcc/config/bpf/bpf.c
! 585c97ba3e05429fce70b83df8042d60  gcc/config/bpf/bpf.h
! bc6fc98da097d9c9818e924597315fc7  gcc/config/bpf/bpf.md
! 9fae99ea46af877072be6e635250fb6a  gcc/config/bpf/bpf.opt
! 7178fd1d3de4e7146939e82d1d3a3b2f  gcc/config/bpf/constraints.md
! eedf5fb16825f78bd29c003598d23cd6  gcc/config/bpf/predicates.md
  d41d8cd98f00b204e9800998ecf8427e  gcc/config/bpf/t-bpf
! b4eaf8bae7d1a6bdf25c5bddf9a122a3  gcc/config/c6x/c6x-isas.def
! c4d5cee7544af0ae3024b48eecaede7f  gcc/config/c6x/c6x-modes.def
! 8409aa510d2c7b3407b2d9fd4ec1bb57  gcc/config/c6x/c6x-mult.md
! 96170c9fcf305f16925ca15465196670  gcc/config/c6x/c6x-mult.md.in
! 18491b2fa2829293cae03ee795608ee2  gcc/config/c6x/c6x-opts.h
! d825adc7ee1c8cd891d52fa41c630b57  gcc/config/c6x/c6x-protos.h
! 20f4eb13584b46ce02f131bb43953912  gcc/config/c6x/c6x-sched.md
! 408a80257d4ad41061221d3e549dc7dd  gcc/config/c6x/c6x-sched.md.in
! e4942dc4e50257b7461cea5ae67aba10  gcc/config/c6x/c6x-tables.opt
! eade163d2e41cb9453b164b29e3641ef  gcc/config/c6x/c6x.c
! 9a8805781b656e7f0343e112e60d8e09  gcc/config/c6x/c6x.h
! e7d37381ae0e5a00e70d53e470b1ccb9  gcc/config/c6x/c6x.md
! 2f4d50c6560b82130becdd43159d1484  gcc/config/c6x/c6x.opt
! 42dcc641cff0a9e8669cd668a4abbb1b  gcc/config/c6x/c6x_intrinsics.h
! db926e839c99f0dd396b9a2ab74bfeba  gcc/config/c6x/constraints.md
! ec3cc71150534c92df8240fde547c4df  gcc/config/c6x/elf-common.h
! 059c6a37861c81ffce8c501bcebb7976  gcc/config/c6x/elf.h
! 854506319c13134eb6693a4a39aa7e72  gcc/config/c6x/genmult.sh
! ac89cfea93cc957357181a80a74bec4d  gcc/config/c6x/genopt.sh
! 30131f63c76c37145f49d98dffdc7e76  gcc/config/c6x/gensched.sh
! 6a861a021009a3177b2f50cc979692e8  gcc/config/c6x/predicates.md
! c4d80b1d0a46210a62086d11a18387f0  gcc/config/c6x/sync.md
! 9bc85c3b8055fabe3eb0f81d0d70d0a1  gcc/config/c6x/t-c6x
! 164b036647efcf66ceeab592e7600f85  gcc/config/c6x/t-c6x-elf
  428034a210600b6b423dfadb06636e03  gcc/config/c6x/t-c6x-uclinux
! c1527a04e3a037a2d02ad05c51965cc5  gcc/config/c6x/uclinux-elf.h
! 85ebca89e2f9c7c0ce5cbbdb9acdc779  gcc/config/cr16/constraints.md
! ddc742c5a795cc90363cfe341f23a8c2  gcc/config/cr16/cr16-protos.h
! 2f9f1763b32e9973854df88997347401  gcc/config/cr16/cr16.c
! 28cbd23d02254973af053805d1e02fa7  gcc/config/cr16/cr16.h
! 91e47a39f697dd2bb8f58b99992f27b6  gcc/config/cr16/cr16.md
! 823514400d9df17a1c31b33ff330afb5  gcc/config/cr16/cr16.opt
! e62acac3d5caa3602079a82025dc561d  gcc/config/cr16/predicates.md
! 0c7cfeabdd926946ffda7ba1e67a3aaf  gcc/config/cr16/t-cr16
! f9860aed01e7f2d8dd67f2c4a5ee9bdd  gcc/config/cris/constraints.md
! 06c50643188bd9cc3d5c8a1e88159957  gcc/config/cris/cris-modes.def
! 9e4cfa751d5efcb49ad0339ee9dc0f30  gcc/config/cris/cris-passes.def
! aff86dd08a27d28a9d25109f1b3a155f  gcc/config/cris/cris-protos.h
! 4148b734c6acdb89af79bef4bfaf1639  gcc/config/cris/cris.c
! 0326eeb80107d0409ce75c31a0cf0487  gcc/config/cris/cris.h
! 43e34cfdd35b4339b2a296c0a5da4b6e  gcc/config/cris/cris.md
! bace91811fe9204c4492ac987d609ef4  gcc/config/cris/cris.opt
! 81c1c5e3e5d9d4077057c4d3a8c5f273  gcc/config/cris/elf.opt
! 6ecd25a4f4a0a4e1a874f9d1caf4ac11  gcc/config/cris/predicates.md
! 3d74a56d026bf1a78313fd4b8bc5287d  gcc/config/cris/sync.md
! bb6348e64338fe486d7bc77137834e44  gcc/config/cris/t-cris
! b838757736afd1c79f7da312cb2e305b  gcc/config/cris/t-elfmulti
! 4ddae35394ec8e780dfae22d9b226e9b  gcc/config/csky/constraints.md
! fd9f2701b324584835adbc87ddf3ed3e  gcc/config/csky/csky-elf.h
! c6da8c43049e06ecbe25521de348da96  gcc/config/csky/csky-linux-elf.h
! 0c5e1b1896c6a45e17b18432ca1cc09f  gcc/config/csky/csky-protos.h
! 0eff7e7fd03ddf046e07985f8780af45  gcc/config/csky/csky.c
! c53b6f3442758c16fdf6d2b494afb482  gcc/config/csky/csky.h
! f70e22a401b91c78d87ab95f284fdd4c  gcc/config/csky/csky.md
! 37485b38d8a102357d169e28ff787ada  gcc/config/csky/csky.opt
! aaf32624c75f2908acde137f4b9c8c5d  gcc/config/csky/csky_cores.def
! 68324b30c7db755a5d88d43e72b4db7a  gcc/config/csky/csky_genopt.sh
! 191604c25ba284cd6f23052674887e83  gcc/config/csky/csky_insn_dsp.md
! 9ebb286c27d9aa7bacf50128b512e1e2  gcc/config/csky/csky_insn_fpu.md
! 3829282fd1b68db9116b50dd88e66dc6  gcc/config/csky/csky_isa.def
! d370155a552ad48a981ec1e40e15999c  gcc/config/csky/csky_isa.h
! 7d49b41f0810cdcd0d2b8e3c45243ec7  gcc/config/csky/csky_opts.h
! 346f09a487a941599173dc2f95e7eef7  gcc/config/csky/csky_pipeline_ck801.md
! db1e9ab731342109c9e0de72233c1e76  gcc/config/csky/csky_pipeline_ck802.md
! f4abd53a3efb27a167c0b1ddc954cae0  gcc/config/csky/csky_pipeline_ck803.md
! 8b3e64498ad942dd5485b58fcf8b2379  gcc/config/csky/csky_pipeline_ck810.md
! 2f049f6cb92b9b360e0bea0e11c75f14  gcc/config/csky/csky_tables.opt
! 5783bf025ed91d1c55a09b0ceecf26a1  gcc/config/csky/predicates.md
! d60f590cb6f4d4348e1e3d111785452e  gcc/config/csky/print-sysroot-suffix.sh
! 47a5c18ef0ececda6384e4f1397951d2  gcc/config/csky/t-csky
! 50644547da413f442c233fc649602657  gcc/config/csky/t-csky-elf
! 75c37c753546509bef2946cf75d47653  gcc/config/csky/t-csky-linux
! 4495725c3c863ee081187ccfd1118a02  gcc/config/csky/t-sysroot-suffix
! 685a395c368e53ba7a4fbc601ef966a5  gcc/config/darwin-c.c
! bf77a54b5c52ed103705a4e960d9f814  gcc/config/darwin-d.c
! b641eb2a04d3dd69bad6a6c8694920c5  gcc/config/darwin-driver.c
! dbb6f1d5dc4ceaaf0fd2e5bc4bbb2a29  gcc/config/darwin-f.c
! 1e7f34ef6b48c907fbf5b2d5a629e957  gcc/config/darwin-ppc-ldouble-patch.def
! d888c4de74a969d5751349e288d4728d  gcc/config/darwin-protos.h
! fe391a430f76c969aa3909a7239a4812  gcc/config/darwin-sections.def
! f3c161ffb8d4dc03f4e543edf272f615  gcc/config/darwin.c
! 90c1ecd7968c8d953e1a8f44a4612571  gcc/config/darwin.h
! a2d60a223a30b390f4a9b3f6c6f3a4b4  gcc/config/darwin.opt
! 23bab33707e2ef99310565f620c62080  gcc/config/dbx.h
! 04c3ad90675d44af0d58b60b7ce96c32  gcc/config/dbxcoff.h
! 201708cb71e4d33abc802e38b34cb75c  gcc/config/dbxelf.h
! 7f36fe29c3ba3de362ebee9659ca2c0d  gcc/config/default-c.c
! 10d519a10eb60f0f820d73d7bd4a5652  gcc/config/default-d.c
! 76b6675d29b19f6fa54af85e759d8ea7  gcc/config/dragonfly-d.c
! 71b2f47fe0c71e75fc8c00bf617787e8  gcc/config/dragonfly-stdint.h
! d42ef97c5515246eeacc4bf7623659ad  gcc/config/dragonfly.h
! 1c53bc4fbe184f2d385bd66f216e5aaf  gcc/config/dragonfly.opt
! a6627ffbe98a1f3d165a077187bad42b  gcc/config/elfos.h
! 26a36dc2c4dbc89fd57192c8b4f3fab0  gcc/config/epiphany/constraints.md
! 429cad21199885c3384e40735ad6ce49  gcc/config/epiphany/epiphany-modes.def
! 801af077e35c9df6d0651097da2f4044  gcc/config/epiphany/epiphany-protos.h
! e59d6a031a223f62b897db22b28675e7  gcc/config/epiphany/epiphany-sched.md
! 1a99d8769d63bcfbb68dbfb0dbf9353f  gcc/config/epiphany/epiphany.c
! c934c116fd44ff1574976bfca48d567d  gcc/config/epiphany/epiphany.h
! 564b9524f371d17417e237fbf41f30f4  gcc/config/epiphany/epiphany.md
! 97363f42dc2cba7e2d10dec27e8519e2  gcc/config/epiphany/epiphany.opt
! b4ccaf093bb1f009f7f63524184c762a  gcc/config/epiphany/epiphany_intrinsics.h
! b122cb1dd6cb789d0a79dd2391021ca4  gcc/config/epiphany/mode-switch-use.c
! c95d6f42bc9e73b363b471357678bda0  gcc/config/epiphany/predicates.md
! c37b30111322548fa1f1b5b293bc9d13  gcc/config/epiphany/resolve-sw-modes.c
! 2747a5b60b5d575b0ed0ebf15513aa0b  gcc/config/epiphany/rtems.h
! 0345179dde20347474295ca02856c657  gcc/config/epiphany/t-epiphany
! 5a842c313a09d93416cdaf2ab3333520  gcc/config/flat.h
! ac9c7b7fbc39e87f0bf544a02292d44c  gcc/config/fr30/constraints.md
! a0c5b498ae475f459d18c29baa57d711  gcc/config/fr30/fr30-protos.h
! bfccf32b2f1bfdc6914deef6fb2092b9  gcc/config/fr30/fr30.c
! 9a64f241513030a09f4d2fc475e2e0d3  gcc/config/fr30/fr30.h
! a63a84e5ea1a2b912487bc97daa211cc  gcc/config/fr30/fr30.md
! 9c44ce42d09c29b6720221be8ac76637  gcc/config/fr30/fr30.opt
! 8b5551c4252c5c4a55e297b2abe5bef1  gcc/config/fr30/predicates.md
! d8afd1bfda601bab1d213c3bf4fcd46b  gcc/config/freebsd-d.c
! 08f9c8e5e264396f90a4529f4f6375cb  gcc/config/freebsd-nthr.h
! 51d5ae30ce3244cce7e79b70c23e196f  gcc/config/freebsd-spec.h
! cd641a4477e4c117109ceb2ac4f7f854  gcc/config/freebsd-stdint.h
! 96c50fe33f127d394bb31c7381b537b3  gcc/config/freebsd.h
! 2ad2d6626b69b31b8f003bfef35d6f9d  gcc/config/freebsd.opt
! a926152f735c27cc9d4d536b3d446628  gcc/config/frv/constraints.md
! 1501495531206405813b4cfe5d9abf30  gcc/config/frv/frv-asm.h
! ac33bfd728d7b0304baad49c90e46f87  gcc/config/frv/frv-modes.def
! 8ddc8664df1a488b1ace7f6a5e053595  gcc/config/frv/frv-opts.h
! ad0c45316408de39f748b510fbf263e3  gcc/config/frv/frv-protos.h
! 1ecaebbd4f8350562fc7064e89530a8e  gcc/config/frv/frv.c
! 0e0a2a4cc7b48c1469474c70334f0d47  gcc/config/frv/frv.h
! c2293117065e641a3cc15d785c46536d  gcc/config/frv/frv.md
! bec14eb47d30932bb17a6b4bb90c74c2  gcc/config/frv/frv.opt
! b0733d7419f6be478d66f18c20d253e2  gcc/config/frv/linux.h
! 37bc7fbac875f1e8d08b4cb17f30573b  gcc/config/frv/predicates.md
! 0eb844404fea2d61e27f9bb893628645  gcc/config/frv/t-frv
! ff50af67ed2bb3a37d4b33441e70c1f0  gcc/config/frv/t-linux
! 675fe96f39450656e0de64467b264041  gcc/config/ft32/constraints.md
! e24441b49f90d32c9614c0fa30e53f18  gcc/config/ft32/ft32-protos.h
! 97dee3fa0bb20575fddf3229f25c5ddb  gcc/config/ft32/ft32.c
! 2bd7905acd3080c2cec7414206ca1d40  gcc/config/ft32/ft32.h
! 6922bdc145bd86c90f14a74d7ba2594b  gcc/config/ft32/ft32.md
! 2eb1af375bdd4b44fec59eba65f9d6da  gcc/config/ft32/ft32.opt
! 116c2a814f3f6bdd5c3b3427a044b0ae  gcc/config/ft32/predicates.md
! fa0e0ad732b2d43429272b9b3219bcb5  gcc/config/ft32/t-ft32
! 370f671d46b32c25413ba4fb17be3bd2  gcc/config/fuchsia.h
! ae85d420d4bf4958137e8cb372f3f369  gcc/config/fused-madd.opt
! 3ef7b0d5225414d3e2e75ee5a7be8dda  gcc/config/g.opt
! a733f81349c20385c50f770a10f7de6c  gcc/config/gcn/constraints.md
! 82b13df8b593c159805782c7dbe7fda9  gcc/config/gcn/driver-gcn.c
! 732098b93e714142df8252b91f3dce07  gcc/config/gcn/gcn-builtins.def
! 96b200bc289b328d2d0d2eb7da2641c2  gcc/config/gcn/gcn-hsa.h
! 1d42068551367c9e444a731d3bada9e4  gcc/config/gcn/gcn-modes.def
! 6dd458e9f9a8a36ba0fdf5e54d5d60a9  gcc/config/gcn/gcn-opts.h
! f98eab048f5a637fd467a18481b30752  gcc/config/gcn/gcn-protos.h
! 51d24974357a28897734b5ec5c2d6b63  gcc/config/gcn/gcn-run.c
! 6760b3c4adf61c7dacb360016778a0ef  gcc/config/gcn/gcn-tree.c
! d42e33f803c5c56a29dab7012f66b7e6  gcc/config/gcn/gcn-valu.md
! 0c9440f5fb92d224a97f23c6c92d5e70  gcc/config/gcn/gcn.c
! 0a40d3d00785d82115ce3014003dfb19  gcc/config/gcn/gcn.h
! 27f2f0b461fc498e0f1ea853b4b8e5b9  gcc/config/gcn/gcn.md
! 3bbef486086d67495f98d2e7ed1133d4  gcc/config/gcn/gcn.opt
! 9891b2e85f3e7ebf68e436fe7dfe159d  gcc/config/gcn/mkoffload.c
! 589b28de219a2e291d2de1d1c971e5a7  gcc/config/gcn/offload.h
! b5330a50584c27019826b271b0f61941  gcc/config/gcn/predicates.md
! bcfdc39d82599c4a137956732c96c957  gcc/config/gcn/t-gcn-hsa
! e847e0da0c2d88300803484023231c14  gcc/config/gcn/t-omp-device
! 5f27b434d02f9b7295a2893661294767  gcc/config/glibc-c.c
! e9938157d6cf2e3e3f09ce226b008ec3  gcc/config/glibc-d.c
! f8a642ceaf3efe91fbe5fe61f40505f5  gcc/config/glibc-stdint.h
! 8014f277143dd3f1861ff81a4175738d  gcc/config/gnu-user.h
! 6b48c6825de8b01be1ba4deb71a10330  gcc/config/gnu-user.opt
! c894d85e6c5f9607f83a6e007cfacb2f  gcc/config/gnu.h
! 0feb34cad3a43079f7e9cca6704028e1  gcc/config/h8300/addsub.md
! 5c70f05e2d8c2c2e8badd881471bf640  gcc/config/h8300/bitfield.md
! 739a66e1d02dc0301bb4fc684ad21f97  gcc/config/h8300/combiner.md
! 1e9ffe93e0e7ff026a01a3a4bf10a689  gcc/config/h8300/constraints.md
! 85ca1d670e370df9efaab39e43dbab8f  gcc/config/h8300/divmod.md
! 45f45682c4ad7bff04b526e592542e45  gcc/config/h8300/elf.h
! 135a616ba91a8a5f150eaf97233d3445  gcc/config/h8300/extensions.md
! 695cd81dfb912a0ea62cbb85ae917e13  gcc/config/h8300/genmova.sh
! fce2df2444def70d0ec699c328802259  gcc/config/h8300/h8300-modes.def
! aa00820e6b487ec1a3b7da59c3375226  gcc/config/h8300/h8300-protos.h
! b6b29092c057b7ab699b3967f7728fa2  gcc/config/h8300/h8300.c
! 9bbc5716f543195d4c0f338d85748483  gcc/config/h8300/h8300.h
! 00d9101ffd31238f9cf1b2748a1af8fd  gcc/config/h8300/h8300.md
! 269bd23897f429f623e104ae9a71af32  gcc/config/h8300/h8300.opt
! afb50ec680d8184ce6d098f1abab2de7  gcc/config/h8300/jumpcall.md
! 5b6d27ff26b577328021a335f98d041e  gcc/config/h8300/linux.h
! e82f0e24370875405fc8ac81fd38c382  gcc/config/h8300/logical.md
! 0eaf500581a3ee2a982743772cbf9baf  gcc/config/h8300/mova.md
! 89bfb55bb5ffb16eb60d5b3f0d83a6f2  gcc/config/h8300/movepush.md
! 1cc3e9b120dcaec74f74e65b2bc56f8c  gcc/config/h8300/multiply.md
! fc7ee39dc20614bae8a3a48a66cbe9fd  gcc/config/h8300/other.md
! c1aee67fcf1ef3d546eb371dc4fc0695  gcc/config/h8300/peepholes.md
! 70fbc7a4201e4848062dcc320e29d262  gcc/config/h8300/predicates.md
! 9408f38af0138d69b898cdbd9c5c079a  gcc/config/h8300/proepi.md
! 17f2d7f0a11c766c9db02b97ff3ec96a  gcc/config/h8300/shiftrotate.md
! fa113ab2ce2ecb35801333089606d27a  gcc/config/h8300/t-h8300
! ec6b78e14e330b2834d5072ec199af82  gcc/config/h8300/t-linux
! de68ba63b5898b0f6d41860abd8dd67f  gcc/config/h8300/testcompare.md
! e71081f44c45c6f7015f891cb881bda4  gcc/config/host-darwin.c
! 08555921514c5ede8b38a1204f7e24c2  gcc/config/host-darwin.h
! 09c703aa5fb5e1ebe43451a266b08e45  gcc/config/host-hpux.c
! ce3c8e3aceb984fed9047665478326c7  gcc/config/host-linux.c
! f7058f530e780386bfff96d559515732  gcc/config/host-netbsd.c
! bce872407ffa808d0db599bc7629d590  gcc/config/host-openbsd.c
! 0d48b7931c02b5621b0af0eeca37e2d2  gcc/config/host-solaris.c
  2c191e2d8d033611c6fccc8362d9e8f0  gcc/config/hpux-stdint.h
! 3c7925b05c2dab7ea7529815092e77c4  gcc/config/hpux11.opt
! 263b37387c22edd1eb9e96646a158fa6  gcc/config/i386/adxintrin.h
! 5b432e4704ce6c673a612e9ee95f8330  gcc/config/i386/ammintrin.h
! 1370c6b87459e052cf08c262cd78ff9a  gcc/config/i386/amxbf16intrin.h
! 7238b88d61a2bcc3ff4690334bf34d7b  gcc/config/i386/amxint8intrin.h
! 47b31af903b1397db0cc07e940b08e5b  gcc/config/i386/amxtileintrin.h
! 191a6ecdf5316e7035dcc896f1aaaaf0  gcc/config/i386/athlon.md
! 1203fdf8b1487c9f925131b28b02b44b  gcc/config/i386/atom.md
! 24b0ba3db73234857e9f4e731b3667a0  gcc/config/i386/att.h
! 5a82bdf78e64c8cf7480964b2128d873  gcc/config/i386/avx2intrin.h
! 0a6cb593262395bc291cb0d92015ad64  gcc/config/i386/avx5124fmapsintrin.h
! 7723144a0f10bb7b090a57a091e3b069  gcc/config/i386/avx5124vnniwintrin.h
! 6ea0db3c330bfe4947b655b49a5fe6c3  gcc/config/i386/avx512bf16intrin.h
! 17ade423b427c62e967e5b967ddfb79c  gcc/config/i386/avx512bf16vlintrin.h
! 618b88152e063926b86abd8ffa5d1a6b  gcc/config/i386/avx512bitalgintrin.h
! 118a53e3f98f316a1cbf54453cad801f  gcc/config/i386/avx512bwintrin.h
! fc95a6779839884b9fc3c3eecfab9669  gcc/config/i386/avx512cdintrin.h
! 24ec5926e7dab13cac695a894e4aeef1  gcc/config/i386/avx512dqintrin.h
! 8cc4f2851dfd47e6cbd9f8043434b618  gcc/config/i386/avx512erintrin.h
! 57760a73af5f476ce5071cf19e403644  gcc/config/i386/avx512fintrin.h
! 06c4e386cd05fafff0c2d017aa8ba05e  gcc/config/i386/avx512ifmaintrin.h
! 3a6a368007d6b7c1d9bc93f91ca4bfc3  gcc/config/i386/avx512ifmavlintrin.h
! 2c23a2ad463c4660ffec749da97c76b5  gcc/config/i386/avx512pfintrin.h
! a0c0e88addebad24adfb1f8e5365f2bc  gcc/config/i386/avx512vbmi2intrin.h
! 6a23978cfeeb2ee4d14a12db97552e55  gcc/config/i386/avx512vbmi2vlintrin.h
! 53ea451d4062d5780ffe52f79796fbd3  gcc/config/i386/avx512vbmiintrin.h
! 1f2a1cd6949ea60bb4f394767fea292a  gcc/config/i386/avx512vbmivlintrin.h
! d442ca6ba65d88252446650d365d976b  gcc/config/i386/avx512vlbwintrin.h
! 193e0561211290a017203889a8493ad9  gcc/config/i386/avx512vldqintrin.h
! 493da1f43b7d7e61cee810aa9763d5a3  gcc/config/i386/avx512vlintrin.h
! ef5341dfb493824b3754736d510cb1c6  gcc/config/i386/avx512vnniintrin.h
! 04105c4479e4c01b1929435603e0692e  gcc/config/i386/avx512vnnivlintrin.h
! a969a30b3a2e94336738f2f9e502e111  gcc/config/i386/avx512vp2intersectintrin.h
! 3c58c709bc23bb34c2ccdea02afaf083  gcc/config/i386/avx512vp2intersectvlintrin.h
! 5802bdcf96501f2f5ae54e6fab72580b  gcc/config/i386/avx512vpopcntdqintrin.h
! 2abfe40a3d6b4c81aa88838acc5f13a7  gcc/config/i386/avx512vpopcntdqvlintrin.h
! 56808e378039c6259fb02670a8058641  gcc/config/i386/avxintrin.h
! 5aa4e21c1fed1376f3f4064fd53d1392  gcc/config/i386/avxmath.h
! db53c9013345485c7da192d58adf0476  gcc/config/i386/avxvnniintrin.h
! ca108380d0dffef4c7a5146eef2b8413  gcc/config/i386/bdver1.md
! 29e622d10c86e3f2156498bc001fda86  gcc/config/i386/bdver3.md
! 3357019c425f5d4ee295236f4ea3907a  gcc/config/i386/biarch64.h
! f3fe570a9a0f5eea26809292b7a2ba99  gcc/config/i386/biarchx32.h
! b62a55814e1394d7f451bb96c5d19992  gcc/config/i386/bmi2intrin.h
! e60820399d449004a50aee109408bda7  gcc/config/i386/bmiintrin.h
! 07beaefa8828a57a17582739cd8125b7  gcc/config/i386/bmmintrin.h
! a9201ca9fc04e72085670ed1c89ed1d0  gcc/config/i386/bsd.h
! af01cc9f3729f016bc4c78afea6a7b3b  gcc/config/i386/btver2.md
! a8d6049f5a5f72a7fbe3b8d4c2c0d4ba  gcc/config/i386/cet.h
! 41bb75e6eea2d4813baa3289706ba7b2  gcc/config/i386/cetintrin.h
! 62aac65b3ed61249d6be157fe4afb091  gcc/config/i386/cldemoteintrin.h
! 39bdcc420e8a84a74cd5947223064b10  gcc/config/i386/clflushoptintrin.h
! 3e3bde0662c291cb954da4c63efe9ce7  gcc/config/i386/clwbintrin.h
! 0c3d45c97529fbdedb432fc823cf8a6f  gcc/config/i386/clzerointrin.h
! 382547d8f3f766db06cdcffe38237ebd  gcc/config/i386/constraints.md
! 6b090caccbe40cc7364c01d6955ae695  gcc/config/i386/core2.md
! 63121c44c1f55ab239d908600580e6e4  gcc/config/i386/cpuid.h
! d953ded987a4f0af89ae9755a0f7ef97  gcc/config/i386/cross-stdarg.h
! 2231fe3b31aa5b8c847d515b62cfa994  gcc/config/i386/crtdll.h
! a2f5dc3cebc9ff380d4e2f7612ee5a71  gcc/config/i386/cygming.h
! c9c593611b6e66ec45e60aa9d4ff592d  gcc/config/i386/cygming.opt
! e54ea527bab7db8b62707abf7d8590ca  gcc/config/i386/cygwin-stdint.h
! b5ae0a1d0b938c1efa427d0072eabbf1  gcc/config/i386/cygwin-w64.h
! 986fdbf17c77b47402de2e1d369fdb93  gcc/config/i386/cygwin.h
! aa7f76fe99be46381f2818bb1514a2f5  gcc/config/i386/cygwin.opt
! 746464bd1413bdc2ccdd62a67866f0b9  gcc/config/i386/darwin.h
! 7278e344d001e5395e9c717c5cae889a  gcc/config/i386/darwin32-biarch.h
! 3b66dd00c3f0e4488dd4708e91a674b8  gcc/config/i386/darwin64-biarch.h
! 2361d24556fbdcd6f9f833148a1254fa  gcc/config/i386/djgpp-stdint.h
! d04ed61f749e229f239897b3baca4938  gcc/config/i386/djgpp.c
! 7eef87bf6d5ed6ed58a3f49b605fa304  gcc/config/i386/djgpp.h
! eb87f240e280f50a4f7213e4c1693b58  gcc/config/i386/djgpp.opt
! 7107a1b32e7712e57535cf017a9e3b31  gcc/config/i386/dragonfly.h
! 321f0e2a4bd37b9d5b408a06e3013af7  gcc/config/i386/driver-i386.c
! 3957794a408aca3d78d50443cdaa5160  gcc/config/i386/driver-mingw32.c
! e72c937e4e357eeb933f8a933c0c725c  gcc/config/i386/emmintrin.h
! 4f000e9cad83855e36be99512cff28a1  gcc/config/i386/enqcmdintrin.h
! 5dca9fc8ad0373a79d14f2d2627fe342  gcc/config/i386/f16cintrin.h
! de22fe956565fe70e9f6e91f3a38fc99  gcc/config/i386/fma4intrin.h
! b2ce7749429816e6e2c8ffbdbf650a6f  gcc/config/i386/fmaintrin.h
! ff05b8e7f14c1f9cbe4691a475d8cb62  gcc/config/i386/freebsd.h
! 1bb7c1ea5ebab3621ccf47b69a803aae  gcc/config/i386/freebsd64.h
! 38af74017977ef87ee4928cd8119615e  gcc/config/i386/fxsrintrin.h
! ea421e955b9420fa01f752557868d6f0  gcc/config/i386/gas.h
  d87f5906e5cee04c568119528636e1c2  gcc/config/i386/gcc-auto-profile
! 82f699b20b56ef956ba64fed907ea2a2  gcc/config/i386/geode.md
! 5ee4f49d0e7aab0f82a49d884fbc049b  gcc/config/i386/gfniintrin.h
! 150b5138b9224e24e53f821c744484eb  gcc/config/i386/glm.md
! 1875affe4277584801678d7587573a36  gcc/config/i386/gmm_malloc.h
! 1c08f4ff502d16c18bb54e318e030ce4  gcc/config/i386/gnu-property.c
! c9dd44c13100f270f8dac4c4353d5205  gcc/config/i386/gnu-user-common.h
! f63afc859775aca634f9c3038a88a2e8  gcc/config/i386/gnu-user.h
! 69d747426a2cd567127374ec436971c7  gcc/config/i386/gnu-user64.h
! 54529083ddab72f042302240de5c66c4  gcc/config/i386/gnu.h
! 3688414c789551729f539ac00a1959db  gcc/config/i386/haswell.md
! 778af68d34cac9803f97b5a2d277cf37  gcc/config/i386/host-cygwin.c
! 54879f151cb49c41b25012bad45ff4fa  gcc/config/i386/host-i386-darwin.c
! 6a81b196bbb5f45746b5c1414563946d  gcc/config/i386/host-mingw32.c
! dfd31f5b9f3ae6b0f0cfbc91f34b22d3  gcc/config/i386/hresetintrin.h
! f416d4c1b5f76b0c32dcfa57cbef9de0  gcc/config/i386/i386-builtin-types.awk
! 4e99fd2d8e886c8fedca887be1ceccad  gcc/config/i386/i386-builtin-types.def
! 094549bd33b7a6e8f7a4436ee1c277fb  gcc/config/i386/i386-builtin.def
! 09e10002a6dc731605eff1b2b0ab61d9  gcc/config/i386/i386-builtins.c
! 2eb66258231da97923f18a6fb2fb2526  gcc/config/i386/i386-builtins.h
! b085fb8ef5a9a2c4378570f242a500eb  gcc/config/i386/i386-c.c
! e87e1d322f0b5d6d0862f8b523832d11  gcc/config/i386/i386-d.c
! 466c9e4c52f4812bb8f98cb830706dd5  gcc/config/i386/i386-expand.c
! 68f53a8d27a4bdcd5018b83939e20f6c  gcc/config/i386/i386-expand.h
! dd464cbc7d083f9311116080f270e855  gcc/config/i386/i386-features.c
! 86c0fda429064123819ee0155f367a5f  gcc/config/i386/i386-features.h
! 04cdac9cb26ba183b03b6f9c7a01b792  gcc/config/i386/i386-modes.def
! 75bd60f7c7716ea766afbecc8b7745e4  gcc/config/i386/i386-options.c
! fe60119ebc2cc86648e81161137ee957  gcc/config/i386/i386-options.h
! 2eee2fdc557e00fe7ae2b060d3805162  gcc/config/i386/i386-opts.h
! b52d1366937ad82efd6efd1590e73779  gcc/config/i386/i386-passes.def
! 8e992ffb4886e7c76cbc74f8c32676d5  gcc/config/i386/i386-protos.h
! 6143bce1df47c425c983849c2d0f4dc3  gcc/config/i386/i386.c
! 025f58293e657c7a5df1cb61e5038490  gcc/config/i386/i386.h
! 8bdadd3e190e3177f204e1415e42b66b  gcc/config/i386/i386.md
! 8d399c6852e8afbacee177e10412b81b  gcc/config/i386/i386.opt
! c10c5e5da62216f81b78dd46673df070  gcc/config/i386/i386elf.h
! 25a5b83a18282cf9a16fb422c7b7aa81  gcc/config/i386/ia32intrin.h
! fa1c19397f6d7ac84e3a77d2fd9d70bc  gcc/config/i386/iamcu.h
! 3ce8963cf73ccf635fd53ce0930a7da5  gcc/config/i386/immintrin.h
! c14173e496e1e984d1b647264b8f98ab  gcc/config/i386/intelmic-mkoffload.c
! 811b0b00a8c0fc124e622ad90b547852  gcc/config/i386/intelmic-offload.h
! 47310d5ba442b06cdedcdd06e9c4b177  gcc/config/i386/k6.md
! efa399a1683c2e9e620fe07fb93a27cc  gcc/config/i386/keylockerintrin.h
! 4d16043ddf484b49f258111f16673bf0  gcc/config/i386/kfreebsd-gnu.h
! 7ed0dc43e55f25c2d16997360745fa1c  gcc/config/i386/kfreebsd-gnu64.h
! e25cabdfc5646b345eb7b5e25ad23625  gcc/config/i386/kopensolaris-gnu.h
! e000f39370e7db781a2612bd57ff2a1c  gcc/config/i386/linux-common.h
! 5fcf5477921b3b4ea9362b1183335850  gcc/config/i386/linux.h
! ed16e42326df5567034dce043d45a719  gcc/config/i386/linux64.h
! 37d0bc3f86f837f1b2deae4ee5b240bd  gcc/config/i386/lwpintrin.h
! 6e2f234802dc1807a2142f293afced8e  gcc/config/i386/lynx.h
! 5bd9da959ad79e849d0ded2a10415e66  gcc/config/i386/lzcntintrin.h
! 2cd35fa3d499c2c1e50055c513822737  gcc/config/i386/mingw-pthread.h
! c912f02783f7a414328c5eb819720dfc  gcc/config/i386/mingw-stdint.h
! 90855d0698622212817d8825b63faa8b  gcc/config/i386/mingw-w64.h
! 4b1f092fa8c0e01719f92b1c69851f1d  gcc/config/i386/mingw-w64.opt
! 3a5730df9219d8ba566f353d1466e6a4  gcc/config/i386/mingw.opt
! 4f99f725b6d79818a588a196c0547503  gcc/config/i386/mingw32.h
! 8c2a40be98f698117815409db5755e07  gcc/config/i386/mm3dnow.h
! ebadd8939e5045c483e0067e83f84ea5  gcc/config/i386/mmintrin.h
! a4907954895f6236cf5afcdba2be40d0  gcc/config/i386/mmx.md
! 3ead5a3ca4f10d35ec0b1d203eaff264  gcc/config/i386/movdirintrin.h
! de4344ede8a257d98598f21855100331  gcc/config/i386/msformat-c.c
! adf3c14908d936944b2ea922606143fb  gcc/config/i386/mwaitxintrin.h
! 0e21d66bda8a66c89768a983be7fe0c6  gcc/config/i386/netbsd-elf.h
! ad369093e019a0008ffcaa00fc1a9d03  gcc/config/i386/netbsd64.h
! fe5c6cd44f6407a878554f5522880cf6  gcc/config/i386/nmmintrin.h
! ea4646632f0c33d007f51c3870147b0c  gcc/config/i386/nto.h
! ddcb120bd2dd518b9e9ff21da3af9092  gcc/config/i386/nto.opt
! 0626a0366289685e0c40684fcb3de783  gcc/config/i386/openbsdelf.h
! 24b8247a77542f8774c4eb7900669016  gcc/config/i386/pconfigintrin.h
! ab0bc4d2292acd69dbbf4d7b6f0c309d  gcc/config/i386/pentium.md
! c44e6c969a56ce15caac8fb01e42f8b6  gcc/config/i386/pkuintrin.h
! 635647f1ab99ee96dd5ccc07618b2098  gcc/config/i386/pmm_malloc.h
! 4f2f47252d95d07f01d45b0222278acc  gcc/config/i386/pmmintrin.h
! b912f7a44accd114d932f1bd128eb83c  gcc/config/i386/popcntintrin.h
! b753cd41f6fdd8ee8be1c1034d4d3e9e  gcc/config/i386/ppro.md
! 0defde032cf7feecbeb11fa4b03c37ed  gcc/config/i386/predicates.md
! 7df26c7af82cf825758be1dddd83d323  gcc/config/i386/prfchwintrin.h
! 6d07e8e896f2aafcdeabb31c3f68dbac  gcc/config/i386/rdos.h
! f78da15b73fdb639b57920b0a86dd843  gcc/config/i386/rdos64.h
! 89c221695ee77e529de9345a4857a667  gcc/config/i386/rdseedintrin.h
! ce08abc4ca53730d8530efa0fc1ac873  gcc/config/i386/rtemself.h
! e1e11d9cd0e8002dee79ab23d590ed1a  gcc/config/i386/rtmintrin.h
! 35dadf1860cbcebf78cf85dfc72f316c  gcc/config/i386/serializeintrin.h
! 76a58cad0f61b44b8fe7d4915dd50d07  gcc/config/i386/sgxintrin.h
! 738791e034eae8f304812280d786951d  gcc/config/i386/shaintrin.h
! f808dc4b45bc244b7588e4dbe292d158  gcc/config/i386/slm.md
! aa606ad57b003eaf3855a789cfdbdfda  gcc/config/i386/smmintrin.h
! 86d70f5d5123563facc0d2e2dcfbd9e6  gcc/config/i386/sol2.h
! 327485d704d25d9c54214dca61cecb58  gcc/config/i386/sse.md
! df2791f0495a636b555c9a5f3f9ff153  gcc/config/i386/ssemath.h
! fdb6c5262186a722ee43fabb890960ae  gcc/config/i386/stringop.def
! fdbc1c329d68559ae10ad05554ed8b15  gcc/config/i386/subst.md
! f43066a2caae3939a53f8f855f69bc69  gcc/config/i386/sync.md
! 523680b87658712da91756e5298ef1b9  gcc/config/i386/sysv4.h
! 260160f6386fd4a4cfba109571bdc862  gcc/config/i386/t-cygming
  d5339d6e5a09a02383903f617230e19e  gcc/config/i386/t-cygwin-w64
  98d94861be252f8541038afee279417f  gcc/config/i386/t-darwin32-biarch
  8f92133cb94c59e2939cd65dc5fc8cb4  gcc/config/i386/t-darwin64-biarch
  4c5d6e2fe993d41a182cdd83904065d4  gcc/config/i386/t-djgpp
! 1f4fa538507be7ed71d3de1f7044a983  gcc/config/i386/t-freebsd64
  3a1c0dac7740fd9ef48c7bdf5f313c9d  gcc/config/i386/t-gmm_malloc
  d5939c6bccbf8957206c63308ce628a6  gcc/config/i386/t-gnu
! e6397043c320f46b30091283f4821cbb  gcc/config/i386/t-gnu-property
! 3d2dfb3e9e6270ca47e84d8ecc33a902  gcc/config/i386/t-i386
  c3fde04ef47ddd6ec0a60c98d7f55224  gcc/config/i386/t-intelmic
  51dcf9826007c01cfd67be11d5f0d538  gcc/config/i386/t-kfreebsd
  39ad69cb2a2e67aa8d46664a75b02789  gcc/config/i386/t-linux
! 5b47a0a81e41e98d3aa64f7068d10e37  gcc/config/i386/t-linux64
  cd662e746e08a18749e8272fa759278e  gcc/config/i386/t-mingw-w32
  67bcf41f125bbec93a13ad3bd98abaee  gcc/config/i386/t-mingw-w64
  f08b968820f569b865f6053578dc6e2b  gcc/config/i386/t-omp-device
  12a68576d3577a8da82089f18d60c613  gcc/config/i386/t-pmm_malloc
! 3294904a3dfd5c4738a2d2674b6bafd3  gcc/config/i386/t-rtems
! 30e794d70ef1385b5d9cd7597c67e420  gcc/config/i386/t-sol2
! 17093f3079d5c350bd1aea028845141e  gcc/config/i386/t-vxworks
  b80a5a4a8c8fc32ca318158abc98dc20  gcc/config/i386/t-vxworksae
! 8f2742c5384ea504dd09aa6d53505c68  gcc/config/i386/tbmintrin.h
! bf8ed74a2bd0dbd7bdd9ca9d43f881f7  gcc/config/i386/tmmintrin.h
! dc4a21bccdf5e50692bb3f8e1b212fed  gcc/config/i386/tsxldtrkintrin.h
! b6641b5f4756ee97ac2b08ef48840c72  gcc/config/i386/uintrintrin.h
! b17e9a7d2e931aa76f39cb379121fe74  gcc/config/i386/unix.h
! 37d0e42f0e357072e9c374bd8d3675c7  gcc/config/i386/vaesintrin.h
! 572228cf66709298b339e5060476550f  gcc/config/i386/vpclmulqdqintrin.h
! 6a144336e877160462acca14ffff69ff  gcc/config/i386/vxworks.h
! 5a19a148670955c1547256bb4d34f001  gcc/config/i386/vxworksae.h
! eede74031d50d03c3a90ce1056bf311e  gcc/config/i386/waitpkgintrin.h
! 7d158f1926bd4e087e49b4273c7cb260  gcc/config/i386/wbnoinvdintrin.h
! 376a221887c2df38da7c2c6dc81fc799  gcc/config/i386/winnt-cxx.c
! f1dccd3e065a37af0bc94226ffad931e  gcc/config/i386/winnt-d.c
! 0878afa7d753dfbb613ff2eafd75c0bb  gcc/config/i386/winnt-stubs.c
! 496679b182c9fab8b06275c3315d45bf  gcc/config/i386/winnt.c
! cadb3f72418ba1b08a78435820016345  gcc/config/i386/wmmintrin.h
  627c3e925a142fb6d2a14368fb637f28  gcc/config/i386/x-cygwin
  bae69273c5e47d61e99558ca73c4fabd  gcc/config/i386/x-darwin
  12e09c6fa27c603c6db59fbfc2a6b089  gcc/config/i386/x-i386
! 97c8723c0a17cc27496bf3f2e00575fd  gcc/config/i386/x-mingw32
! 79a43ba764ecdf9a8182ebdd85310d50  gcc/config/i386/x86-64.h
! e8de4d87d46a089a190cdcfd5ab996cb  gcc/config/i386/x86-tune-costs.h
! 7fbc73604928f2f3eae088fea7082e0b  gcc/config/i386/x86-tune-sched-atom.c
! 8e3814442de68a4801c8a7449d277e25  gcc/config/i386/x86-tune-sched-bd.c
! 83e27c2de80a1b674196a9f6c758a5a6  gcc/config/i386/x86-tune-sched-core.c
! 9a5ed19a8a9efd3aa8f780c637126988  gcc/config/i386/x86-tune-sched.c
! e4c639befde2ed972037502a8c268a95  gcc/config/i386/x86-tune.def
! 428bfd014df969c4371ae2db1254cbc7  gcc/config/i386/x86gprintrin.h
! 01c872023bcadf9bc3f32938f1290d99  gcc/config/i386/x86intrin.h
! bedb15dc5d9dc0741fa2f65684e6afc8  gcc/config/i386/xm-cygwin.h
! 632cea0ba390f635083b2227179602ea  gcc/config/i386/xm-djgpp.h
! 140ea44571ef35b3a03d1365f14ca2d5  gcc/config/i386/xm-mingw32.h
! 4a6ed6e424b88d5035e3e8f341605e34  gcc/config/i386/xmmintrin.h
! 52609834f7079326fece899956e91313  gcc/config/i386/xopintrin.h
! 1204d5e0c8e3c529834b7432dc6dfd81  gcc/config/i386/xsavecintrin.h
! 68241aedb0d08e7498ac4ec9ed1c2783  gcc/config/i386/xsaveintrin.h
! ced95bb984b96ed6d6768b2b5d4d9d23  gcc/config/i386/xsaveoptintrin.h
! 8b1811e1567e01938b667ebe3954f991  gcc/config/i386/xsavesintrin.h
! 28f7cd3a41b61a99c1560e6e0aef01c2  gcc/config/i386/xtestintrin.h
! 1a12d00791dc5750b71e438d322ddf2b  gcc/config/i386/znver1.md
! b4f1f741cb220bde1a5477221381c160  gcc/config/ia64/constraints.md
! fb20b99e59a0837f7730623933540364  gcc/config/ia64/div.md
! ebab5f6ec27511ec34a317311dc1fb3d  gcc/config/ia64/elf.h
! fc38fed4b419d7baacd5e2aeaf0907df  gcc/config/ia64/freebsd.h
  89edd175b4bfe583ec3ee965092fd5d0  gcc/config/ia64/hpux-unix2003.h
! c05c3e328149dc1368fe39582c50a681  gcc/config/ia64/hpux.h
! 54b1e96aee001fac7e82f7677d87fb19  gcc/config/ia64/ia64-c.c
! 87a48f76590c1526adbdfc0e5b487f63  gcc/config/ia64/ia64-modes.def
! fb2a648b5b42647d93703ec1a763127a  gcc/config/ia64/ia64-opts.h
! 88dac5ae24ec63f44bc3995f73b3402e  gcc/config/ia64/ia64-protos.h
! 1293fd6558b4787a20dc5f9aedcaf378  gcc/config/ia64/ia64.c
! 8c12b45d74ebb7dfad8edafae0bcedfd  gcc/config/ia64/ia64.h
! 019abc73c0877db421ea662d2dde1641  gcc/config/ia64/ia64.md
! 5801e0eb3c9e43b1a14fd543a029569b  gcc/config/ia64/ia64.opt
  dcc77d7023d20b64688bf213c2d327b5  gcc/config/ia64/ia64intrin.h
! 4b86fa74a7636ffdb9787a8643220eec  gcc/config/ia64/ilp32.opt
! ef35197279b492c0f03db2be4af9550c  gcc/config/ia64/itanium2.md
! 736bd64ceb98f5e82f6f343adbc4363a  gcc/config/ia64/linux.h
! 4dd6678c41a28a26226823d3dcfd13e5  gcc/config/ia64/predicates.md
! c5fef6bae8e2719e8e1714c32efadb33  gcc/config/ia64/sync.md
! 7812ea35099636289a6c15a6604d3e8f  gcc/config/ia64/sysv4.h
! c0250b0c37d7fa734d0cb46c0b2a38b1  gcc/config/ia64/t-hpux
! ecd2eb048639b226c66b484afc1db7bc  gcc/config/ia64/t-ia64
  67736f64800d10923b58be4e448620d6  gcc/config/ia64/t-linux
! de11210e721afefa6711545176a69c07  gcc/config/ia64/vect.md
! f2c9df77c312ac536026f78de3935654  gcc/config/ia64/vms.h
! aa85b11ca73afbe4c87fbb341bb60ea1  gcc/config/ia64/vms.opt
! 48623b369e6f4348becac05dc57367d6  gcc/config/initfini-array.h
! 427f415bd88193684fdaa0d83e494702  gcc/config/iq2000/abi
! ba95cc055c87b678122aa53b42694b0d  gcc/config/iq2000/constraints.md
! 570464f808f4789c3dbeced89e303710  gcc/config/iq2000/iq2000-opts.h
! dfe8e69a1cead98174bdfe8840a0e1e7  gcc/config/iq2000/iq2000-protos.h
! a2439e450ba389e3484d90dbd2cf03d9  gcc/config/iq2000/iq2000.c
! 6e9dd5dbea31ab234fbfb4ca7b56f2c3  gcc/config/iq2000/iq2000.h
! 41deeabe714e51390b5517706901c7bb  gcc/config/iq2000/iq2000.md
! e0d2df414639c2b1d48a747e066e73e5  gcc/config/iq2000/iq2000.opt
! 9a5a0e12e4826d6a936fc1d2fd44d75b  gcc/config/iq2000/predicates.md
! b35e7aa6798e18be972a77ad6cb71581  gcc/config/kfreebsd-gnu.h
! 0252347a96801a882ffb0304eea0038e  gcc/config/kopensolaris-gnu.h
! d88908c1f1be156dd76a1d95479538f4  gcc/config/linux-android.h
! 9732c22669168f53451ddbbf6304e923  gcc/config/linux-android.opt
! d346387fa76bb85ca7b362afea3e349f  gcc/config/linux-protos.h
! a11a91a8d62e393c0a2ebeaa8bb84eb2  gcc/config/linux.c
! 035f0504b24b213064e21b8091b83bdd  gcc/config/linux.h
! 478c20e44c47f112477328e3524e71bd  gcc/config/linux.opt
! 33d605a6160b54f51844d471f8b37bf2  gcc/config/lm32/constraints.md
! 8d6b1cd265aaf048f3e9b6c7679ce6c6  gcc/config/lm32/lm32-protos.h
! c7d536607d523bb296dbf4b5b91b49ed  gcc/config/lm32/lm32.c
! f2af4acb1059e654efed4e1bbc51f143  gcc/config/lm32/lm32.h
! 548cd44a56b861ea125c331870a4ad3e  gcc/config/lm32/lm32.md
! 9a249d3b3d234eaf811829bc24682f30  gcc/config/lm32/lm32.opt
! ae6a9b8b65fb42c82b09b57d8616ad7a  gcc/config/lm32/predicates.md
! d1bd62d45eaef79c1b32e21c13a536ee  gcc/config/lm32/rtems.h
  a9d1d80c40cc6eb8e9a32d54f82dae43  gcc/config/lm32/t-lm32
  660559cdac2b08e91486a9db7b4a2872  gcc/config/lm32/t-rtems
! 9177ac536ecf5956261c9f57654b7da9  gcc/config/lm32/uclinux-elf.h
! 1d34816592584af197c40ba1f56d1260  gcc/config/lynx.h
! 071a159be3e2ba5f2df99f13c63921fa  gcc/config/lynx.opt
! f36f04bf512941f427ad8c8b91718f85  gcc/config/m32c/addsub.md
! 5650cb29a05a4dcfaefdb3b8c1019617  gcc/config/m32c/bitops.md
! 19f5526ef4e25ee78a486f42113aadae  gcc/config/m32c/blkmov.md
! 02267fad34a77671e20f58d61c351397  gcc/config/m32c/cond.md
! e3aa8d2e50dca817c681bb6d799d658c  gcc/config/m32c/constraints.md
! 0e41d8d8ee6cb56c0e563d0b6fd4a6bb  gcc/config/m32c/jump.md
! d06250d6100b78208c3b28c571c6bf8d  gcc/config/m32c/m32c-modes.def
! b55771a4e7ef98a46ea5a6ec5eba3203  gcc/config/m32c/m32c-pragma.c
! de3000462acd3eafd3f8f25bad057a3b  gcc/config/m32c/m32c-protos.h
! 4b66f4329ded96c40719351957377174  gcc/config/m32c/m32c.abi
! 1dc52514eac3e12a4f948fc4290f2190  gcc/config/m32c/m32c.c
! b73a827aaff1faaf41deef838aef8181  gcc/config/m32c/m32c.h
! 9b71e1e7d780d06e3e8fc2469d7ba413  gcc/config/m32c/m32c.md
! 15893c07c190f8182254885c05d07fc1  gcc/config/m32c/m32c.opt
! 3b6c76dfdfdc3dcd43bf81f309b0ee35  gcc/config/m32c/minmax.md
! 764c746c08158c3363ffe2d955419297  gcc/config/m32c/mov.md
! 83c3896335a0b020ae8361ecbf173e72  gcc/config/m32c/muldiv.md
! 900a7bfa13b1585a8e397ab706696de3  gcc/config/m32c/predicates.md
! 9a20fa89c4294d90dc7f6044a0bd298b  gcc/config/m32c/prologue.md
! 7addc8f11f627275ab46c561f335942e  gcc/config/m32c/rtems.h
! 8b4bb58678109ace58cee0c61f0b1619  gcc/config/m32c/shift.md
! b8a3603dccf5c661fac5928318f400de  gcc/config/m32c/t-m32c
! 6b453eb1ac3a3290b287bbb61903288f  gcc/config/m32r/constraints.md
! 0db2efd8e225490fee35e81ea7407c36  gcc/config/m32r/linux.h
! a413e060f823e310f0398a7d6443fb8b  gcc/config/m32r/little.h
! c20244a1cdb7448944c17d8cfe30b968  gcc/config/m32r/m32r-opts.h
! 783f7caaac016ee9fbcba0180acf40ec  gcc/config/m32r/m32r-protos.h
! 38e83876e345a7faf54f7e80f82cba27  gcc/config/m32r/m32r.c
! e333bf4883f492d12f6149515659c675  gcc/config/m32r/m32r.h
! c363127e05a6d9e2a0407c72e6b296ee  gcc/config/m32r/m32r.md
! df7c96994ec3e906b21ea7159394d8ec  gcc/config/m32r/m32r.opt
! 9ee63682ad4bff23b196236768e9b84c  gcc/config/m32r/predicates.md
! e31234913635018c07ac44ec36347bff  gcc/config/m32r/t-linux
! bc02cecd972e5873d7e16e9701d552a3  gcc/config/m32r/t-m32r
! 594b6759202beb6443afddd756b41618  gcc/config/m68k/cf.md
! dbc6fb1c37367a838e72e9beb2917975  gcc/config/m68k/constraints.md
! 5e69b21c86a418836bfd2e77202fda31  gcc/config/m68k/genopt.sh
! 12c75385ecc6a95ef618b041bc9b150d  gcc/config/m68k/ieee.opt
! aaeca1cc3a35d3cf7efad02e6da5f83c  gcc/config/m68k/linux.h
! ebae2b5008ba81897a057955a2798359  gcc/config/m68k/m68020-elf.h
! 2b474c53a9a1fa109e9877cf1ecb7ba8  gcc/config/m68k/m68k-devices.def
! 513a812bf024b269657e6b9be8f0ca6e  gcc/config/m68k/m68k-isas.def
! e95622b004006c9720e9eb2407bee4c2  gcc/config/m68k/m68k-microarchs.def
! 1d4578a2258d826f9c52729f67bd80f1  gcc/config/m68k/m68k-modes.def
! cf2501ddbaf6dcfd1cebd3a721ff3d4a  gcc/config/m68k/m68k-none.h
! 50f446307c655437b2727ac35853d8ec  gcc/config/m68k/m68k-opts.h
! 0fa1aa9658cfa6e0e63370fb372b56a9  gcc/config/m68k/m68k-protos.h
! 6a83e791c85c61abceea5c616e7d41eb  gcc/config/m68k/m68k-tables.opt
! 02d7c9e45339b442d75bc8d3707c6cfd  gcc/config/m68k/m68k.c
! 71c681ab4d49ac7c235f59e3684ce72e  gcc/config/m68k/m68k.h
! f0c4b0cbd145ae30d89c75b9d23d0dd9  gcc/config/m68k/m68k.md
! 2579550a73e90682048a8ebccfab32e7  gcc/config/m68k/m68k.opt
! df24e5620dee3db7ff23fb2aeeacba72  gcc/config/m68k/m68kelf.h
! a2a184d82937a38be07cddd5e9be5114  gcc/config/m68k/m68kemb.h
  c0472199959f16fcb58702880954da6e  gcc/config/m68k/math-68881.h
! 3f026bf6e0b284291e55b1cf7e5dedb1  gcc/config/m68k/netbsd-elf.h
! 3354867988f5632d4796f3e2fe53a887  gcc/config/m68k/openbsd.h
! 45cefaf9003911b21b39b534aeb575de  gcc/config/m68k/predicates.md
! 5b8cf71ad7e7f44b20a75ae652d22eb7  gcc/config/m68k/print-sysroot-suffix.sh
! 6f2baa166dabed458c5729618be1a86a  gcc/config/m68k/rtemself.h
! b45d4068fe3ac2abf51df75035e2cc44  gcc/config/m68k/sync.md
  19d5ed41f3394c9423ff3afe64804076  gcc/config/m68k/t-cf
! 4f96cbb7c086889f4baf86e42e1d091f  gcc/config/m68k/t-linux
  baa4595148bafa6426b8d665881ced45  gcc/config/m68k/t-m68k
  c8278c25339f71d746d91a193efd6cea  gcc/config/m68k/t-m68kbare
! 8f3069d96b80178713e738a74a4b7f90  gcc/config/m68k/t-mlibs
  0fd519d41689e5af998ca53a2f11e7d2  gcc/config/m68k/t-openbsd
  2919d876e31e6c4e0955d8cd4be5ce28  gcc/config/m68k/t-opts
  2899d62cd61c46fe504594a232959581  gcc/config/m68k/t-rtems
! 98a77d9f868d370ef1bdf4b4205c3b81  gcc/config/m68k/t-uclinux
! ae0f33baf8aad52883d911b212f5cdf2  gcc/config/m68k/uclinux.h
! 880c7ecbeca894049fc22848055807dc  gcc/config/m68k/uclinux.opt
! de054b3ca841cde1b51ab93ead7fe165  gcc/config/mcore/constraints.md
! 2855d3edfa206c963e50cd5f150d10fe  gcc/config/mcore/mcore-elf.h
! bedf9a27a0a2c347812a4cfa148c8c35  gcc/config/mcore/mcore-protos.h
! 613b74b328a902fbe101f0c3dbdd0990  gcc/config/mcore/mcore.c
! ebd3668ea76041d586c375a6bf330e90  gcc/config/mcore/mcore.h
! 7a20cfeeeac8b03cb78dbbcdd743a235  gcc/config/mcore/mcore.md
! 51dff2cb043b70cd28d07c79c9b3db89  gcc/config/mcore/mcore.opt
! ccb31dd2e613ea63febf122562af9e68  gcc/config/mcore/predicates.md
! 37438277460ac996badd7da3d5ae53a3  gcc/config/mcore/t-mcore
! 754b1e8e3c9e242971d0815eb0d13a6b  gcc/config/microblaze/constraints.md
! 09fe256071d39f6547a74e432fa74c68  gcc/config/microblaze/linux.h
! 83bf4f10883f6d9735fc9830b14eff24  gcc/config/microblaze/microblaze-c.c
! 4c958c9830d99b71c55a915f5087ca6a  gcc/config/microblaze/microblaze-protos.h
! 7681ff55c49d568e72bfc887d453cc30  gcc/config/microblaze/microblaze.c
! 85339f4feb09d1271527cb952529b919  gcc/config/microblaze/microblaze.h
! 475b490ad1becb69c5d9ac98db46cc62  gcc/config/microblaze/microblaze.md
! 3b0dee8f5b5f42c0ad3e038a629f0f11  gcc/config/microblaze/microblaze.opt
! 7328a364bd25fae66803ef76e62708b8  gcc/config/microblaze/predicates.md
! 73942535ea6ecce789228385b87d3dbe  gcc/config/microblaze/rtems.h
! 09c3b26a5f25e12bf125e876ab0cca25  gcc/config/microblaze/sync.md
  17818a25ae3112098cd91d698e37f0f7  gcc/config/microblaze/t-microblaze
  63ccba4e7f745d36609d7c129bac6288  gcc/config/microblaze/t-microblaze-linux
  a8b08640136e3e7712d2278eb84c21d9  gcc/config/microblaze/t-rtems
! 207a70b57805e1f730f167eaaf78d375  gcc/config/mips/10000.md
! 59cf6e01539c33ba5175f53d10645293  gcc/config/mips/20kc.md
! 06667eea47c81552a4e1ae90724c5773  gcc/config/mips/24k.md
! d147cd11e0c67debe302a5a49a8c8f47  gcc/config/mips/3000.md
! 153eabe3333c0477669eb6e5f51625b9  gcc/config/mips/4000.md
! c951320893b40f25628ff9968a328dbc  gcc/config/mips/4100.md
! 6cf9855b4c9039920c5a24af159ae1ba  gcc/config/mips/4130.md
! 55502e0fb603a1aad337833c1dd26e61  gcc/config/mips/4300.md
! e2fe86c37b5ad0523f862be254dca4f4  gcc/config/mips/4600.md
! 2cab074b0d66e05ba4c35fb19d0fc64b  gcc/config/mips/4k.md
! 243e5baef70dd7b2d341776ab69d093f  gcc/config/mips/5000.md
! cd5ee578b8ad09b3ec3d67df5883b6dd  gcc/config/mips/5400.md
! 8b5f2d53a0e0432249f45a33cf155cdd  gcc/config/mips/5500.md
! db0d1c8a3b95f3279bcc6b99acbc2fc5  gcc/config/mips/5k.md
! 07eb4060a0381dead526ec15e8acbc53  gcc/config/mips/6000.md
! 3c4c8631f3a4478c212e6c2289ace41f  gcc/config/mips/7000.md
! caded01ae0b728effad4417753db2ca0  gcc/config/mips/74k.md
! 8c25d523fb40e91ff6f76f86e66dc37a  gcc/config/mips/9000.md
! d67ec97f9f9e1d5bcf583bf28e6406ef  gcc/config/mips/constraints.md
! db9307f81352439d709004a2c09bd3a2  gcc/config/mips/driver-native.c
! 9a677843d924d1517619b79307a3e19c  gcc/config/mips/elf.h
! 17dfc740f60b651166c7762e70a796e4  gcc/config/mips/elfoabi.h
! fde7cbbe8f8b8ade9910a0765b38a362  gcc/config/mips/elforion.h
! d3cb0b5b02e943128f1c00fea6f388b4  gcc/config/mips/frame-header-opt.c
! 45451d4728cb76141898a57812424ee4  gcc/config/mips/generic.md
! 88998235af80c743045f5f85621536d5  gcc/config/mips/genopt.sh
! c32285773525cd8f11a0763d145451e3  gcc/config/mips/gnu-user.h
! 0e1c487d3c9f3cc1b0bed4fc05891f35  gcc/config/mips/gs264e.md
! a7ce0001cb2f280f4fa8a3a33ddcf8aa  gcc/config/mips/gs464.md
! 7b9926862f43be6598f94075ff42b3c8  gcc/config/mips/gs464e.md
! 6bbfb76a306e4fb13675f3192b89efe2  gcc/config/mips/i6400.md
! 3650a27a8514395d42c276fe5ae6e57f  gcc/config/mips/linux-common.h
! 877f3ecbe38026391f8ed3f7bd6fa843  gcc/config/mips/linux.h
! add4b4838d8cbeacd45cf82d610df7df  gcc/config/mips/loongson-mmi.md
! 36a9a7bf88440c91715c4e214f7ecd04  gcc/config/mips/loongson-mmiintrin.h
! 42c44ddc5936cb3f92d09f3458127390  gcc/config/mips/loongson.h
! 88eafe1f5edbd3493e18b1800a42d77b  gcc/config/mips/loongson2ef.md
! 8c2be3bba43c86cf7d7776cd35be8e17  gcc/config/mips/m5100.md
! df776efabac3deea45e8af596426db50  gcc/config/mips/micromips.md
! 891c22e4ce1fbcd5b76b1da593985ab4  gcc/config/mips/mips-cpus.def
! ecdaa0df7ff80b4dae784974fb6aec3f  gcc/config/mips/mips-d.c
! c367c0630f7f023a908b12f4b0bcd43e  gcc/config/mips/mips-dsp.md
! 1e430aed06f2d59db5cfaa2ed082bbf9  gcc/config/mips/mips-dspr2.md
! af514a1f925002faa534e8e9af7e4c2a  gcc/config/mips/mips-fixed.md
! 6fe9c019b23470a4713ed97e64767ff0  gcc/config/mips/mips-ftypes.def
! b125f873d072e558225faced30c16710  gcc/config/mips/mips-modes.def
! d2eef2c7d7f371aedf3d94a966d813e3  gcc/config/mips/mips-msa.md
! 82ce3594b1b612d1465ebdab253281a5  gcc/config/mips/mips-opts.h
! af1ca632aaba0d0a534933782ef7d114  gcc/config/mips/mips-protos.h
! e972e6ee968c5ceea9564ce75b572eb5  gcc/config/mips/mips-ps-3d.md
! b47b9237ca1cdd376492147fef2ebceb  gcc/config/mips/mips-tables.opt
! a50e341adc97bed7a59783ccb354cc4a  gcc/config/mips/mips.c
! 7dde563fb33bd1ab036762c99d9e484b  gcc/config/mips/mips.h
! cc41f5dfa824b8ebc1999709b81b6ecb  gcc/config/mips/mips.md
! 3bafa6a814101c62b01241da0805afca  gcc/config/mips/mips.opt
! 1fd42223964cc3f11f1cfd752daa8661  gcc/config/mips/msa.h
! be6c2c0ff3bd551ad19de35b7bf8a746  gcc/config/mips/mti-elf.h
! 9cce52aa207547861744c07a652ad293  gcc/config/mips/mti-linux.h
! 5d21ef19c6966537b2810515c0c771ca  gcc/config/mips/n32-elf.h
! af5f33fe97d295db83e00cbef23b56bd  gcc/config/mips/netbsd.h
! 65d9032ee9348a31ae00d98ca176a84a  gcc/config/mips/octeon.md
! f7866bc8a8d2091438e28099c0810614  gcc/config/mips/p5600.md
! d7878e7b4a161aa0d5898546226d3253  gcc/config/mips/p6600.md
! 6a6bd71f64e25549c8077f86164f53e7  gcc/config/mips/predicates.md
! 9064c5cf2d5f79ed0bc641cc010b831d  gcc/config/mips/r3900.h
! 4b67914db87ba0a1af22c8f80450bf50  gcc/config/mips/rtems.h
! a26c7aa400b11c75256ea9416adfa41b  gcc/config/mips/sb1.md
! 6bbddaedec2b5070efc0b41611261479  gcc/config/mips/sde.h
! 0e0f8d297eb79d14b43f8cb06783e8e6  gcc/config/mips/sde.opt
! cc78ee0926d98e9e65806a9fd177f8a7  gcc/config/mips/sdemtk.h
! 276824079e102e84a62f4ae2afe9723f  gcc/config/mips/sr71k.md
! e49e25c3c010e90ce06240313ab6fac3  gcc/config/mips/st.h
! fa1bfc95d15a014c67bee2bcb59547eb  gcc/config/mips/sync.md
! 84148177e8c2b2057414bf535b157ce1  gcc/config/mips/t-elf
! 28982a822a95dab6f6b9a203b8daf4ab  gcc/config/mips/t-img-elf
! d1b871f1c51d0849b7a7ee98e0627ff9  gcc/config/mips/t-img-linux
  f99fd825138aaee60804b8915e20d22e  gcc/config/mips/t-irix6
! 0eed341949343bc317a1e82419d1e2aa  gcc/config/mips/t-isa3264
! 9551cac0c5c85fb77e20b0eddf31ad0b  gcc/config/mips/t-linux64
! e70ae13d31a4a9a8d25f93b43c3b80d6  gcc/config/mips/t-mips
! 2c02999945c32d8eca801bf761afd575  gcc/config/mips/t-mti-elf
! 00905a75d84355cf00d8ec0e33656518  gcc/config/mips/t-mti-linux
! 03e59e8541ec183a8665f6e98ee0609f  gcc/config/mips/t-r3900
! 6f499bd391d054ee4fb5c0c979ed3414  gcc/config/mips/t-rtems
! 5ef774bf597fd8545bf32f63aee11f08  gcc/config/mips/t-sb1
! 3cc33d54b51e78cdb833539d8b817349  gcc/config/mips/t-sde
! 4c21e0e7b5638f30e7b6bbfa5f6533dc  gcc/config/mips/t-sdemtk
! c35042a60cbb9c3573425be723fb62f2  gcc/config/mips/t-sr71k
! 4a5b94ccfa56718c10ac987f5550e51a  gcc/config/mips/t-st
! 46ce0be1f18689fa0f8f11915bb7ff23  gcc/config/mips/t-vr
! 05be1f629ecea27c5c53fe721c9af797  gcc/config/mips/t-vxworks
! bf9b2976a917d1194b9f2246d8280cf6  gcc/config/mips/vr.h
! ac3c2b32541ac44d2db2ced743c99736  gcc/config/mips/vxworks.h
  28d4de1043946a571cca5f03b486aafe  gcc/config/mips/x-native
! e80758080cf80095fb7053b0979e2c59  gcc/config/mips/xlp.md
! 0c7f416d5ee38c59fb808ea033f9527f  gcc/config/mips/xlr.md
! 0377b2bc7dc06a8cf57d7cbcfb75193f  gcc/config/mmix/constraints.md
! aff84b141da7a5369ff504c2671979c6  gcc/config/mmix/mmix-modes.def
! fde2d8673605274015716be62d61e826  gcc/config/mmix/mmix-protos.h
! a14b17d4dccfad690d3d77c59d851934  gcc/config/mmix/mmix.c
! 3399b22a28e25ad3e5fbd70335aa4532  gcc/config/mmix/mmix.h
! 21a333052e498bc925744d25480b7e39  gcc/config/mmix/mmix.md
! 8865f3c65caab3cddb237581d8393d85  gcc/config/mmix/mmix.opt
! cc3118d3373c8595c356d4da91f90dcf  gcc/config/mmix/predicates.md
! 050333e486703262c45555fe06055b59  gcc/config/mmix/t-mmix
! 7f470c7773c030ec5008355711667827  gcc/config/mn10300/constraints.md
! 6ebd59fd52e6364c7819cb81909b80e0  gcc/config/mn10300/linux.h
! 3bc9fee9a8adde0d87722f3390262482  gcc/config/mn10300/mn10300-modes.def
! f6b4069ec034f05579c9df40570c1b64  gcc/config/mn10300/mn10300-opts.h
! a778b60741fc18c19a351f1ed98cd239  gcc/config/mn10300/mn10300-protos.h
! d9af0b928fc083b0478adc64fbb37901  gcc/config/mn10300/mn10300.c
! 8c494fde61d00746703d43b567e1a762  gcc/config/mn10300/mn10300.h
! fc97a828871a4b085e4055d666a16560  gcc/config/mn10300/mn10300.md
! 260e037d582ca6dc05626f4ad78e726d  gcc/config/mn10300/mn10300.opt
! 00c2af96d7b5d7752202b8a1f5561f95  gcc/config/mn10300/predicates.md
! 4d80e3a21ce8f60687cc8eba58e87c4b  gcc/config/mn10300/t-mn10300
! 5029c5619ce911e0b95c7594918e20b8  gcc/config/moxie/constraints.md
! 0c05129f9233d3fcb9a948a0e64241a5  gcc/config/moxie/moxie-protos.h
! 5d305276e97df3a38df5d2044cf00c16  gcc/config/moxie/moxie.c
! 7744997abc1538ac208844f69722d834  gcc/config/moxie/moxie.h
! 8eabbfc56d81a4b83395260268833863  gcc/config/moxie/moxie.md
! 35ac81cbd8e8d8bb29d64f1201989b5e  gcc/config/moxie/moxie.opt
! cf40b507a7482538ef4ed13a1af87f87  gcc/config/moxie/moxiebox.h
! a233fe7f07d8870199a4a840c8cc8851  gcc/config/moxie/predicates.md
! f12f187017cb40cc28a9338e2de99264  gcc/config/moxie/rtems.h
! ccf94e699c43371caa0655b47542799d  gcc/config/moxie/t-moxie
! 0a760906aa082b9e1f70d9b9b7f807be  gcc/config/moxie/uclinux.h
  f276505b774e975b88b6c90362783e73  gcc/config/msp430/README.txt
! a8dffddb364ed157ede6cf015e77d83d  gcc/config/msp430/constraints.md
! e72ebec5657b474087d2bd158b7eeb51  gcc/config/msp430/driver-msp430.c
! b4f3c7e06b210c61c9c5b9aeaf588c9f  gcc/config/msp430/msp430-c.c
! 2c1c96162a472debc9dab3db144d1435  gcc/config/msp430/msp430-devices.c
! c294f752a7edfb1e21ced64619e09b37  gcc/config/msp430/msp430-devices.h
  e081143def3cf3a59cd1181fc9162d41  gcc/config/msp430/msp430-modes.def
! 5f66636ea189cb030213f493eb606bb0  gcc/config/msp430/msp430-opts.h
! ef03bfed700cd4225418b5dcacb5ad36  gcc/config/msp430/msp430-protos.h
! 3c8cd7827868683cc46ecc1fe1fc062a  gcc/config/msp430/msp430.c
! 8dfee1fce1d6153b2860144c89a26176  gcc/config/msp430/msp430.h
! 4bf817d19c2b3928a4072433cde6be2c  gcc/config/msp430/msp430.md
! a20875cf634836537faeacfb5a4f59d1  gcc/config/msp430/msp430.opt
! 60ce8491cbf3331b771540f23381625a  gcc/config/msp430/predicates.md
! 43b0d7aa9e45e830b6c5b14d1d3141d6  gcc/config/msp430/t-msp430
! c9e31973fa3f34be3b6c2235ee72369e  gcc/config/nds32/constants.md
! 6071343a7db67c0afd558e6f8f7fca39  gcc/config/nds32/constraints.md
! 96d3c26ae8efca44e1ee3f822f0b6020  gcc/config/nds32/elf.h
! 91aa06c31ddf88721538610e6e5f1aec  gcc/config/nds32/iterators.md
! af58c131cb82f271d6b777662ab7e6a1  gcc/config/nds32/linux.h
! dbae75994723f9245a8bcc54583decf0  gcc/config/nds32/nds32-cost.c
! 756635857a4dc85c98886fa4fcbef9ef  gcc/config/nds32/nds32-doubleword.md
! 9750feac2bc9b68b5977b33492dc629a  gcc/config/nds32/nds32-dspext.md
! 0927e24a92095f7131f5f67b5886b7e1  gcc/config/nds32/nds32-e8.md
  c316334a86026beb55e5c25b4b855f95  gcc/config/nds32/nds32-elf.opt
! ff8756f3a5ae5cd3b27cf3248813ae9b  gcc/config/nds32/nds32-fp-as-gp.c
! bfba0d20b3630df333820e2d8fde09f2  gcc/config/nds32/nds32-fpu.md
! fb8f5266673835509271a06586b0eec6  gcc/config/nds32/nds32-graywolf.md
! 59d03ddd51daadeff04840993ba49730  gcc/config/nds32/nds32-intrinsic.c
! 58f3c263abb7385d72dec6d49c5402e1  gcc/config/nds32/nds32-intrinsic.md
! 3d458d21924c1cd07a09ab650d74dab4  gcc/config/nds32/nds32-isr.c
  d94163fd5e4660359b8b12a0d90ed1bd  gcc/config/nds32/nds32-linux.opt
! 592beabbe4d2b4fc8ca40f41719cfd39  gcc/config/nds32/nds32-md-auxiliary.c
! 79ef26daf4629503d4f1f18adcad9899  gcc/config/nds32/nds32-memory-manipulation.c
! d92e1385335b0d9d946f1de22c2745e8  gcc/config/nds32/nds32-modes.def
! 0185a5ab14c0e4165237e6a7c746a38f  gcc/config/nds32/nds32-multiple.md
! 736e9f86a9667c35fc84bde35234ac52  gcc/config/nds32/nds32-n10.md
! 6520965c9de0f4c2265afe52a57524b7  gcc/config/nds32/nds32-n13.md
! 191b304993331bcbcf4c234ccd83d538  gcc/config/nds32/nds32-n7.md
! 9c7e42cdb964a3908d507daf7cd9980e  gcc/config/nds32/nds32-n8.md
! bd95221de0f4945e2305d76243cdc326  gcc/config/nds32/nds32-n9-2r1w.md
! 136b4b636581de536050b5e550bea06d  gcc/config/nds32/nds32-n9-3r2w.md
! b3c17bb539ff9f9a8c424816af121774  gcc/config/nds32/nds32-opts.h
! f3466868be1ae87e895ec877decf6e35  gcc/config/nds32/nds32-peephole2.md
! 80e72560e917e56418ffe2263c571973  gcc/config/nds32/nds32-pipelines-auxiliary.c
! 88da56316e487b75bf67b3fbd3855e45  gcc/config/nds32/nds32-predicates.c
! cecf8ed407c479b2b66f871bdda34eb2  gcc/config/nds32/nds32-protos.h
! 2bf8857163e0e8e3bb3d1dbacbaac0da  gcc/config/nds32/nds32-relax-opt.c
! b9e1844c4ee9e43b8f2528dabe0185f5  gcc/config/nds32/nds32-utils.c
! 35d215c9e0b758cd30f125495f70808b  gcc/config/nds32/nds32.c
! 0b6740a5900580cbeec4b5fcc1bc6247  gcc/config/nds32/nds32.h
! a28b1def6205883f16e1e403961c95a5  gcc/config/nds32/nds32.md
! d8602ec3f40f7adb13f72f6a7582cbf7  gcc/config/nds32/nds32.opt
  c09acceb380f58ddb795ee3e973945d7  gcc/config/nds32/nds32_init.inc
! a80002b7becf04fb9a3f72ae5b9618c6  gcc/config/nds32/nds32_intrinsic.h
! 17475dbb78491a1f5460cf3dec718f22  gcc/config/nds32/nds32_isr.h
! fa896da4a45c2ee48fdb389972dbcbfb  gcc/config/nds32/pipelines.md
! c2f26cfcffd1b8dc4a316af43228f97f  gcc/config/nds32/predicates.md
! 9b625a74b2aa7600056b8131fec93803  gcc/config/nds32/t-elf
! c69829c71c43b5d13b40c052f01b3b86  gcc/config/nds32/t-linux
! 89b35c9320193378808933c8b3eab3e5  gcc/config/nds32/t-mlibs
! e5d5ee625c384b6cf6f993006fbb6402  gcc/config/nds32/t-nds32
! fb19f040c3c1dd70c70df2da17c3e20c  gcc/config/netbsd-d.c
! 15f232609850fa1ce539d03097614706  gcc/config/netbsd-elf.h
! 6b45050b1388d0fea138a7de3280717c  gcc/config/netbsd-elf.opt
! 3ea936eb7ff2e15d1fdba12d15d379db  gcc/config/netbsd-protos.h
! 66a44a1bcce9e21225a9404ea1ea1520  gcc/config/netbsd-stdint.h
! af34fb5a4ba7910371c99cb06e3dc40d  gcc/config/netbsd.c
! a6d14c3ec010275da3e953a4990c5dac  gcc/config/netbsd.h
! d3851f9d7a2dc15557391b7f67ae5583  gcc/config/netbsd.opt
! 312b332a2a19e314d3a0bbbed9fa7c8c  gcc/config/newlib-stdint.h
! 9bbb0e3dc5b3ea91bac03ac61f4a902e  gcc/config/nios2/constraints.md
! 61bc52fc5087f93162b88245b3bbf731  gcc/config/nios2/elf.h
! 15e35aa9946f54e9f66a4a9c0e7bb257  gcc/config/nios2/elf.opt
! 8ca4a295d066f9ef6341b3177a5f9ef8  gcc/config/nios2/ldstwm.md
! df25273b42658dd3bf2f794473663a63  gcc/config/nios2/linux.h
! 21ac2faa6c0cd4cc27a1efa5febd26c8  gcc/config/nios2/nios2-ldstwm.sml
! 84aa941f307242ac69c916ed78e76443  gcc/config/nios2/nios2-opts.h
! 64d150c84d6a232c3c50fa7951ee0b51  gcc/config/nios2/nios2-protos.h
! df48e8df2d902c40910a111d7287d4c5  gcc/config/nios2/nios2.c
! c23dad057f5efbfca49712cae738f125  gcc/config/nios2/nios2.h
! e8d6d383632cb24f52b62b1a43bc3306  gcc/config/nios2/nios2.md
! 53c5a21d2b70a962f037b87be59cc91f  gcc/config/nios2/nios2.opt
! 4e0c44b284ccd1962a407546f0ffc714  gcc/config/nios2/predicates.md
! 10056de80bc047feb0e5c1d1d408a912  gcc/config/nios2/rtems.h
! 2484545b8413ab110fb39a8534e19514  gcc/config/nios2/sync.md
! addd410d89c8d535d3bb44bcdc976f34  gcc/config/nios2/t-nios2
! 3369cb7fd894ad0eaae773a6ab4a00dd  gcc/config/nios2/t-rtems
! c44a21d6173dfc25f9ea06d39259b98b  gcc/config/nvptx/mkoffload.c
  c2aabf1e8738380511a66426506fe906  gcc/config/nvptx/nvptx-modes.def
! dca89acc73c1e607543f77bff11454fb  gcc/config/nvptx/nvptx-opts.h
! 9ca7d94c2be28d9abdb34a47582fd30f  gcc/config/nvptx/nvptx-protos.h
! 97df8d6a973ad417516fdaac450c5d34  gcc/config/nvptx/nvptx.c
! c0b0b2bacfa72578f4672edf1c0f50db  gcc/config/nvptx/nvptx.h
! 9c8498d440319ec5925062d2d6c68415  gcc/config/nvptx/nvptx.md
! 6d617ffea69db6bcfe22bbd6fb2c7e29  gcc/config/nvptx/nvptx.opt
! e917c97da0e4b76432a791778f806d36  gcc/config/nvptx/offload.h
  161bfe9f99d4d18fdb67553220ba175a  gcc/config/nvptx/t-nvptx
  f9036e875fd1f68b4e56b8e278983e89  gcc/config/nvptx/t-omp-device
! 67620e0936250e48d59613b6124a8424  gcc/config/openbsd-d.c
! d74d3525f940d27436889ef730d84755  gcc/config/openbsd-libpthread.h
  3d4a70d0decf61f1fba17df545cea7f5  gcc/config/openbsd-stdint.h
! 2f03d8c6f233734c425c066a3a610299  gcc/config/openbsd.h
! 1237c0f0c21f84d1a890451a2bc447db  gcc/config/openbsd.opt
! f26db210861297c237df0c594e4c4691  gcc/config/or1k/constraints.md
! cd1569e39b4e4d7d755497bd32dc47ea  gcc/config/or1k/elf.h
! 319583e7aa6c3be58a218e0f2f30baf8  gcc/config/or1k/elf.opt
! 190d11ed2685816912329f7dc4dd8fe1  gcc/config/or1k/linux.h
! 73440462fceeb3a685172073ff432096  gcc/config/or1k/or1k-protos.h
! 1348c0e12bfba12eb6bf88babf2b584a  gcc/config/or1k/or1k.c
! 9cc947d9f0d0165ed1026667258ce5c9  gcc/config/or1k/or1k.h
! 8f439232206201a8946633ec1d82af82  gcc/config/or1k/or1k.md
! 748faeb9d6350682a79366ba99fccc96  gcc/config/or1k/or1k.opt
! d6e9de18c21719b5ad42e0ac98a823a8  gcc/config/or1k/predicates.md
! f86fc2dac4e5119d00917f9aad9cf384  gcc/config/or1k/rtems.h
! 6e9d994897653baaaf200c9027564386  gcc/config/or1k/t-or1k
  f58d4380ee68891690f4302989ce00cb  gcc/config/or1k/t-rtems
! 8b8ba2b5d8f7259e9e496481e0b16ca6  gcc/config/pa/constraints.md
! 98d71aa95ac7ee507b50b69e9588f53a  gcc/config/pa/elf.h
! 4604d212bda13ead36e4fb031c7c151e  gcc/config/pa/pa-64.h
! 1835287d499c5f20bc5971f77d8c59f2  gcc/config/pa/pa-d.c
! 49adb8849b89392f7c51e3bce0d7e07b  gcc/config/pa/pa-hpux.h
! 14351757ad9891cb21df1be8f0602b45  gcc/config/pa/pa-hpux.opt
! 0ace1a5e8695491e017227e2317ac23e  gcc/config/pa/pa-hpux10.h
! 6a920bf1a262a7c99fb173114f192a63  gcc/config/pa/pa-hpux10.opt
! 4ee348186693eaa4a6ab8bda53b9ab26  gcc/config/pa/pa-hpux1010.h
! f149462f68efe87f30a548606bd0f89a  gcc/config/pa/pa-hpux1010.opt
! 75ea79fef5e58eef2d45fd6818cf2f42  gcc/config/pa/pa-hpux11.h
! c1cb9c1696900e1a42acec48514f0407  gcc/config/pa/pa-hpux1111.h
! 3282a42c8895f9ba055c97fc64362b11  gcc/config/pa/pa-hpux1111.opt
! b0fb9ca642462e6862d1af7601acb142  gcc/config/pa/pa-hpux1131.h
! 426815cf30b8a89a2704db8859a2aee6  gcc/config/pa/pa-hpux1131.opt
! 9eabf18ee63c9837aa080baafd4c4a1d  gcc/config/pa/pa-linux.h
! f052cae9c5a228802a7d2733d556561d  gcc/config/pa/pa-modes.def
! e20b327d30706926261c1317764ee479  gcc/config/pa/pa-netbsd.h
! caff43adac59469f64f1c7e4385c27d2  gcc/config/pa/pa-openbsd.h
! 904b7f071b6b5c7fbcd244403e468d7f  gcc/config/pa/pa-opts.h
! 3dcfc38179fe177fc6950b5fcb6b8b03  gcc/config/pa/pa-protos.h
! 56b401f7a0a112b06a0c7adaab935078  gcc/config/pa/pa.c
! 23727f8173330ae59e57f891a5cec95d  gcc/config/pa/pa.h
! b9512015ae56de8d929cfdaf89a15296  gcc/config/pa/pa.md
! dc7c62057067f030141ea54a0ee5f7ff  gcc/config/pa/pa.opt
! d414dff3f6a4b50b49f81539036bff88  gcc/config/pa/pa32-linux.h
! 8e685ad04b0b38e5885bfcc8012cdd92  gcc/config/pa/pa32-netbsd.h
! dedcc9a6eddd69c21c777bb8aa7e4a57  gcc/config/pa/pa32-openbsd.h
! 88e8786958c2f49a0e619ff2c1786c44  gcc/config/pa/pa32-regs.h
! 769cd3ea5fb051c3232099ade0d4b7e3  gcc/config/pa/pa64-hpux.h
! 4f25545a275e9fe5ba6305488ca6b05f  gcc/config/pa/pa64-hpux.opt
! a2f3af5eec6e99e29cb85deae8d9a2e5  gcc/config/pa/pa64-linux.h
! a42105d8bc7e82bc45ac8da4fbcdc875  gcc/config/pa/pa64-regs.h
  a9a6afd79b827565ffb8de8330b4cfe6  gcc/config/pa/pa64-start.h
! 4bfec2e9652e4336e3c94772feb82232  gcc/config/pa/predicates.md
! e93d4d41261cde3dfe1a90d3e5ed1132  gcc/config/pa/som.h
  4104beb84cb7f3a8a5915652c3da66c5  gcc/config/pa/t-dce-thr
  6fd25f8c665d2d7390ea94c01dcb8e34  gcc/config/pa/t-linux
  b6278c3de5f5690b62f0fdb46d14dfde  gcc/config/pa/t-pa
! 24f93a3736588ed56cca5230c87febe4  gcc/config/pdp11/constraints.md
! 8783695422a3cc810efc99a92010d2fd  gcc/config/pdp11/pdp11-modes.def
! ee70a17be36a2e5f4c100227ea2d3599  gcc/config/pdp11/pdp11-protos.h
! a2e7b320206dcb6d0c0766823c889367  gcc/config/pdp11/pdp11.c
! cff22a09cde078d24e6e3c64fd05413a  gcc/config/pdp11/pdp11.h
! 2d5b9e1f119bd84ad5d1f7236e88f07b  gcc/config/pdp11/pdp11.md
! adcd93d9df3e4003beabd42eac95eea9  gcc/config/pdp11/pdp11.opt
! 9aaa33fe7413f512a498506e3b3259c2  gcc/config/pdp11/predicates.md
! 6b7f573dccc276ebb2addbc8a233fcd0  gcc/config/pdp11/t-pdp11
! 2907859bc3b63c034660392cb470267e  gcc/config/phoenix.h
! 729c9350391d74035cc99d62e094b669  gcc/config/print-sysroot-suffix.sh
! 3159dbd951a57be2014ba48c4de251f1  gcc/config/pru/alu-zext.md
! 3a0f43efb574d2c6bb9f301b845e8395  gcc/config/pru/constraints.md
! 504f2ff02cacd17a40209a895c68dbbd  gcc/config/pru/predicates.md
! 40b63a0f22894a3cb47c58b52083f1ff  gcc/config/pru/pru-opts.h
! c62f794a3016ccd74f1cc0e579e8aea3  gcc/config/pru/pru-passes.c
! b6607d3410bf037c34e0b8a0422adbe5  gcc/config/pru/pru-pragma.c
! 8008f645c2d6305298f0f5996b8530a8  gcc/config/pru/pru-protos.h
! a7fdc306986a7202a2f2b209faf8f5ea  gcc/config/pru/pru.c
! 783a6ce5f683fda7f039ad745e09e1f9  gcc/config/pru/pru.h
! 06d17121b1ca155cfd8a17344a5d3f8d  gcc/config/pru/pru.md
! 3b98988e55ce8cf649751cd3d3bf38cd  gcc/config/pru/pru.opt
! 10430f6518a3627421b6e41146222090  gcc/config/pru/t-pru
! 6640cd20ab489aefe5a211afafcd3692  gcc/config/riscv/arch-canonicalize
! 1b1e5fb14202743e68ddd48543aca24e  gcc/config/riscv/constraints.md
! ef0028af881cf895e537c21cc4643fb8  gcc/config/riscv/elf.h
! de2fc9c3ace4fd5d8f5573b8bd906069  gcc/config/riscv/freebsd.h
! 69166b0924d5c3c2d1f7e72fa40247ae  gcc/config/riscv/generic.md
! 1950ffa0536a23ea56ed8e99b993615e  gcc/config/riscv/linux.h
! 8840f86fc173ca5b9a1f9bf8f22ed9d1  gcc/config/riscv/multilib-generator
! 4e629508d2e1b7aaba28f7173c7b07bb  gcc/config/riscv/peephole.md
! 82fdb0fb5f4287f1bf506404d0ad0c41  gcc/config/riscv/pic.md
! 7e2a43545d38d2540fdd13ed3e22adbe  gcc/config/riscv/predicates.md
! f9c0791b3dbcf7aee60d29862a7d7c70  gcc/config/riscv/riscv-builtins.c
! 5b7056f5b738f06dc6f321f954818c24  gcc/config/riscv/riscv-c.c
! 09decd8605acb0b96996257078390b2a  gcc/config/riscv/riscv-cores.def
! aead97962d12004bef87017b0ff26bad  gcc/config/riscv/riscv-d.c
! d79ed8f84354bbde78492c096f5d05ba  gcc/config/riscv/riscv-ftypes.def
! 5332cdc57d255d79b47739cb93c378d7  gcc/config/riscv/riscv-modes.def
! f246e78b2654ab5d1fd33ede72f31d05  gcc/config/riscv/riscv-opts.h
! 0674236422e04162b66bdb80c60bdab8  gcc/config/riscv/riscv-passes.def
! 00e38bf454ad4a280301d1e5b16dfaf9  gcc/config/riscv/riscv-protos.h
! 5a056ac88b21a92249c97026dd86fb63  gcc/config/riscv/riscv-shorten-memrefs.c
  f60d94e10e9a0c6a4ddae1f3aae0bbc4  gcc/config/riscv/riscv-sr.c
! fe56b04e91c00c9e49f48d845571ab3b  gcc/config/riscv/riscv-subset.h
! 36e0c095928721ac732e6cf8038d244d  gcc/config/riscv/riscv.c
! 655fe146c062173f7f3977838ab24522  gcc/config/riscv/riscv.h
! 669de2f404329e0417902902f3dfab46  gcc/config/riscv/riscv.md
! c0d2436df779dea19601aa657555596e  gcc/config/riscv/riscv.opt
! 0a71dd013f158a4aa8183a3df7bfead1  gcc/config/riscv/rtems.h
  462630614e6e7a6209f8f18b6dff0eef  gcc/config/riscv/sifive-7.md
! 29fc0216ff4cf6b387754748c6a26f3d  gcc/config/riscv/sync.md
  1c27821991689abdaa7a908a0cc8dfa4  gcc/config/riscv/t-elf-multilib
  d8ae7bee35ef1ecd77143535da9aae78  gcc/config/riscv/t-linux
  1ed181a166b1d0e206c4a4e0024cce2a  gcc/config/riscv/t-linux-multilib
! 99085f9c31ac8fb14f276d774e1f8e72  gcc/config/riscv/t-riscv
  7dbd61c5a07b1adefe5429a41008fda5  gcc/config/riscv/t-rtems
  97a182737ed075d29be4ab1e848de420  gcc/config/riscv/t-withmultilib
! 0478f4e79601d91fb8ad8f210b304a7b  gcc/config/riscv/t-withmultilib-generator
! 61a949c3b6e9949677ecb87c7dd89aac  gcc/config/rl78/constraints.md
! 572e3026262220c40cf27840498f5a3d  gcc/config/rl78/predicates.md
! 6a94d99b48f252fbbe3a3821ffa8e148  gcc/config/rl78/rl78-c.c
! de007450d9a5d4edc243569e1a92d050  gcc/config/rl78/rl78-expand.md
! a85b79db86092a0ab20b17aac8431d4b  gcc/config/rl78/rl78-opts.h
! b620547883412fbeebcc89cbb2be71a7  gcc/config/rl78/rl78-protos.h
! df13d69f15a78712e709819e19b5eb58  gcc/config/rl78/rl78-real.md
! 0f758406f0279aea97bffeb2e780bd26  gcc/config/rl78/rl78-virt.md
! d383b4529ab816692b9c9fc5e3ed400a  gcc/config/rl78/rl78.c
! f07ad8057c6d9ac4d88db0a0456ede44  gcc/config/rl78/rl78.h
! d933969f0ed6c74e712921035310d41e  gcc/config/rl78/rl78.md
! 7543afd8a1cdbb134369c97d36157346  gcc/config/rl78/rl78.opt
! b8ab7b117ac843a8f7d4c4ffa79341a0  gcc/config/rl78/t-rl78
! d22c8890dc8a7b7f6fcf482ea45c98c3  gcc/config/rpath.opt
! cc657622a7833f21cf41fd88e7954133  gcc/config/rs6000/40x.md
! 627d98d01c467e8a3e82ccb6cbf3c232  gcc/config/rs6000/440.md
! 1169f14a6b731cf0ab8796a4a1560a1c  gcc/config/rs6000/476.h
! fe30e9f2c6680c3a0ffbb8c32aaf03fc  gcc/config/rs6000/476.md
! 16f8ea20ee5a16ffb0578adaaae6a722  gcc/config/rs6000/476.opt
! 8bebd0ba7d09100998b70711c283e120  gcc/config/rs6000/601.md
! c4ee8dff4b53ff20a117eb8419b45dfd  gcc/config/rs6000/603.md
! 539365d9416f2665f34a6157e8164c01  gcc/config/rs6000/6xx.md
! 37de1ca43e80414564771bac13fd272c  gcc/config/rs6000/7450.md
! 5694ce94385ecd19d08754c78644e5e6  gcc/config/rs6000/7xx.md
! 0342f39328d64e5982bb3f94168b17db  gcc/config/rs6000/8540.md
! 50c0da5fa8979225eeb102a8b2ee0094  gcc/config/rs6000/a2.md
! bee6a7628f0cee352ae751f13fd603f3  gcc/config/rs6000/aix-stdint.h
! 51c523ddcbc1334b5f698d9b49a8d44b  gcc/config/rs6000/aix.h
! 36c9a6523bd55cdaa1c9b01077874227  gcc/config/rs6000/aix61.h
! fb71eb5fc1d1db9e3d37cd4846d955d2  gcc/config/rs6000/aix64.opt
! 931deba58b9a69ecbec050b9a2a45a74  gcc/config/rs6000/aix71.h
! 2d2077a0fd16cbb9bfde496cec021702  gcc/config/rs6000/aix72.h
! 2c61aecf4ad333799cf125ed109723cf  gcc/config/rs6000/altivec.h
! 32214734daaccda9137e0bba344a709c  gcc/config/rs6000/altivec.md
! 0c189a8215a637236016075d7153c0dd  gcc/config/rs6000/amo.h
! 8c3585d22f96b860147fbb93ebbbf06f  gcc/config/rs6000/biarch64.h
! c82bb588a1f3b6715f005e723b02aaf9  gcc/config/rs6000/bmi2intrin.h
! f60f0b041683bd09fde61d526b77a06b  gcc/config/rs6000/bmiintrin.h
! fea022102d4856327a0e7478d476825d  gcc/config/rs6000/cell.md
! 39f59e5bae022fcbbef313410d10672c  gcc/config/rs6000/constraints.md
! 87701804dfcbf3943f2ef24c36f6b98a  gcc/config/rs6000/crypto.md
! 6a0f87914108e296ad7d6c8c7fb4aef6  gcc/config/rs6000/darwin.h
! dc42f2136f2aebd9918fbf719166f4b2  gcc/config/rs6000/darwin.md
! d7cfb8e861e9ce70e75110e0717d4d48  gcc/config/rs6000/darwin.opt
! ca74b9e31768f3d073078ccbbf6db3b4  gcc/config/rs6000/darwin32-biarch.h
! 9a9eabe5fde024a9e8fb7da1f3065798  gcc/config/rs6000/darwin64-biarch.h
! 15d4fb2ad496a66a85102eac5202047a  gcc/config/rs6000/darwin7.h
! 402972fd0d7c627a52416797c9cec3b4  gcc/config/rs6000/default64.h
! f45ccc7ed70cc29a63e8c5efa3fe135c  gcc/config/rs6000/dfp.md
! cb22a6d4f5872cde08f9b1d8cdbc43a9  gcc/config/rs6000/driver-rs6000.c
! 8f83d7c9e905cf53e85e17effff65e94  gcc/config/rs6000/e300c2c3.md
! e48e30df023432a0999f7219dd167766  gcc/config/rs6000/e500mc.md
! 15078c51a9c9340e7d7e492a0acb0d30  gcc/config/rs6000/e500mc64.md
! 27c2c493a22cf2c6167ca1cf6ce61b44  gcc/config/rs6000/e5500.md
! 6299f7478b39da37132844e2423b618a  gcc/config/rs6000/e6500.md
! 1645c6c2584fc4d395804e020830ff0f  gcc/config/rs6000/eabi.h
! b106f3dd78c027be0e6fa9e040d3d7d1  gcc/config/rs6000/eabialtivec.h
! 8fe4344bd8fd32f48a15e10f99d9f820  gcc/config/rs6000/eabisim.h
! bd291b65ad28211370bde89d9e88c7ae  gcc/config/rs6000/emmintrin.h
! fbeee1c894dc51358ee6abecca818f38  gcc/config/rs6000/freebsd.h
! c815c61d1f8556dee28776379d38f97f  gcc/config/rs6000/freebsd64.h
! 3662bff96213633b847a42192d436ba8  gcc/config/rs6000/fusion.md
! cc6275f107c95ae2cf7a775a25460296  gcc/config/rs6000/genfusion.pl
! c466bda58b985814fa22f4d4bc0a464a  gcc/config/rs6000/genopt.sh
! 96ef7ba4b98df3c89168a75c71690601  gcc/config/rs6000/host-darwin.c
! 775ea72fb46676e26f93f160be6cc291  gcc/config/rs6000/host-ppc64-darwin.c
! 5c3bdcb1b652548c3c51f7d137eeec2d  gcc/config/rs6000/htm.md
! 947e4fc8941feb6d78ffa647b9e867ce  gcc/config/rs6000/htmintrin.h
! 4f55e86cb57831d27bd7329f112d6fb6  gcc/config/rs6000/htmxlintrin.h
! eb5963a9afac325222a3cf411425b69b  gcc/config/rs6000/linux.h
! 8bec1a629d31cc69c35d9dc5fd4c3d77  gcc/config/rs6000/linux64.h
! 0bbcee311ec2d8e7219c402ad62f2935  gcc/config/rs6000/linux64.opt
! 254a479975bb0033d38c5532c46689a5  gcc/config/rs6000/linuxaltivec.h
! b3d3483f2acc61db4751725d0556e646  gcc/config/rs6000/lynx.h
  0cc3c5f9101501b8253ce3176c3ffce4  gcc/config/rs6000/milli.exp
! 7151c90fd6e11f55cab19007cca511bc  gcc/config/rs6000/mm_malloc.h
! 3346b3beff747f20752bff067e555451  gcc/config/rs6000/mma.md
! c40f50dc03075bb41a64373adb30112d  gcc/config/rs6000/mmintrin.h
! 7da8551ea5a0e205407dfa782c773ce4  gcc/config/rs6000/mpc.md
! 5bca07190d45ef2ade8d1a237c5ac20b  gcc/config/rs6000/netbsd.h
! d1918653ab5439dfd3636ceb66800628  gcc/config/rs6000/option-defaults.h
! 46370b1354544906ee1f18bf5ee65e42  gcc/config/rs6000/pcrel-opt.md
! 84d852177b47e1fcd8d20355aeb4a2a4  gcc/config/rs6000/pmmintrin.h
! b59cef3d741ed1b8575800d49274b094  gcc/config/rs6000/power10.md
! ee97c3d3da7334e31ee2e714ae392125  gcc/config/rs6000/power4.md
! 377d2d64b0642c07bdab693f542c4988  gcc/config/rs6000/power5.md
! 56f637c066be25f0e1df986784252bbb  gcc/config/rs6000/power6.md
! fc071bb968f683a069ae0962bf6c4c42  gcc/config/rs6000/power7.md
! d9fb9904c02856f7a1ec4b25a72a8402  gcc/config/rs6000/power8.md
! de0878750a3c4d20a063d22571380621  gcc/config/rs6000/power9.md
! bb48fecf965ae77e0dd88aae5488f291  gcc/config/rs6000/ppc-asm.h
! 751ccf6be4b01d18f226acef853ef444  gcc/config/rs6000/ppc-auxv.h
! bfe475364cf3901b029f758b9ccfd8b8  gcc/config/rs6000/ppu_intrinsics.h
! 42cebd49012ccb2e4fd39dbbe301b26b  gcc/config/rs6000/predicates.md
! 7d1f4e694e441bd490d994726420b31c  gcc/config/rs6000/rs6000-builtin.def
! 409fa16c817d831a4d622f9b632dc15e  gcc/config/rs6000/rs6000-c.c
! 68ed1a97788a990b76d90f4cc283118c  gcc/config/rs6000/rs6000-call.c
! 3a5bc4c78f272bb2a76f60c1fbf5dce0  gcc/config/rs6000/rs6000-cpus.def
! 7c18f5387ecc6581faacf61631fecb37  gcc/config/rs6000/rs6000-d.c
! 3c13c2c833d8ab0f2dfd5f0d9f432dde  gcc/config/rs6000/rs6000-internal.h
! bdb01381a7509193220dbd43b881802b  gcc/config/rs6000/rs6000-linux.c
! 6fee991de656852424a421b6cc8113f4  gcc/config/rs6000/rs6000-logue.c
! 8d3fa7c26d80c9ee359e3991e289666e  gcc/config/rs6000/rs6000-modes.def
! e65509760cf40241ff24df3a715c4f43  gcc/config/rs6000/rs6000-modes.h
! b7cac3afa5fb8f71d3b8ea1a0cd5c7ce  gcc/config/rs6000/rs6000-opts.h
! 5da7e4e020e0378b0d896f382d9fd4d2  gcc/config/rs6000/rs6000-p8swap.c
! 26ea894428823455da38add11e434423  gcc/config/rs6000/rs6000-passes.def
! 00c6fc44dcc86d36065fbda93661b17b  gcc/config/rs6000/rs6000-pcrel-opt.c
! 39fa09a60604eae142447fcf0f829606  gcc/config/rs6000/rs6000-protos.h
! 8cfc3e1c712d5e4cef1250c605cdca98  gcc/config/rs6000/rs6000-string.c
! 7a14e24f9ddae251943bacda6071c833  gcc/config/rs6000/rs6000-tables.opt
! 1a575a047ec962bfb0a38631484b30da  gcc/config/rs6000/rs6000.c
! 022b2f8662d8edc52cee799c94db3d74  gcc/config/rs6000/rs6000.h
! 2ddc79e73d09fcbdbeaec2e84b8e5064  gcc/config/rs6000/rs6000.md
! b15e0219e943cb69bb7f16f4a16d430d  gcc/config/rs6000/rs6000.opt
! c7f02424d98bd46c451c6c03893132ba  gcc/config/rs6000/rs64.md
! 49c33d9ae6a5142ba9a3e0c617c6cdc2  gcc/config/rs6000/rtems.h
! b13403d0a3113444b4d47950f5cba69e  gcc/config/rs6000/secureplt.h
! f6fd7be6926a0f8aa7fd3c3c105fe905  gcc/config/rs6000/si2vmx.h
! 050357a1637de917eedddffab4cef27f  gcc/config/rs6000/smmintrin.h
! 1cb7c7dac47be97126c30f4b384ab8de  gcc/config/rs6000/spu2vmx.h
! 35284754edbf099ba3f34621db1e14f3  gcc/config/rs6000/sync.md
! 02b934139a896ec4d1951184fe879275  gcc/config/rs6000/sysv4.h
! 9c042ea04c17db32bdf709dd1e57dca5  gcc/config/rs6000/sysv4.opt
! 643c18274e90fd26bbb6184f1a232be9  gcc/config/rs6000/sysv4le.h
! 98f66680ba32040a587f7409f8b1ac5d  gcc/config/rs6000/t-aix52
! 4e422123f0871effc2b790d928ba471c  gcc/config/rs6000/t-aix64
  636250eb91fc5dada4804efcd525fc02  gcc/config/rs6000/t-darwin32-biarch
  f3250b9720d1149346f1ef8e21b52ea9  gcc/config/rs6000/t-darwin64-biarch
! 3c56e27cd4b012d23cb6f1ca23d2ee8d  gcc/config/rs6000/t-fprules
! 428117fb7fc39d4b986721bb9a62260d  gcc/config/rs6000/t-freebsd64
  40e5cd20542141b80d5fcf1a7b10b3fd  gcc/config/rs6000/t-linux
! c4a95ba3fe3ba43cf7a20e38f6f97d43  gcc/config/rs6000/t-linux64
  71c0a0470047f0171a3bb4c483eb2b72  gcc/config/rs6000/t-linux64bele
  489699b655594f05bae0b429fd261edb  gcc/config/rs6000/t-linux64le
  60f26523152f6a061a12cb17e987de12  gcc/config/rs6000/t-linux64lebe
! f8fa950d8832c10c3d56d74a76e6ca4e  gcc/config/rs6000/t-lynx
! f86123341245f4c6640ae62be7c764e3  gcc/config/rs6000/t-netbsd
! a6b51489641a338647ec5c62b2c57063  gcc/config/rs6000/t-ppccomm
! 5362ae64ee0fef54de5aaa03f9681327  gcc/config/rs6000/t-ppcendian
! 4926b14756498c795fff06e6418c09cc  gcc/config/rs6000/t-ppcgas
  1b8aba690a39464c4ea9c647d73d6983  gcc/config/rs6000/t-ppcos
! 67cb48ae93012381975865b9dcd42aa7  gcc/config/rs6000/t-rs6000
! 6d7850e3ddb17d1bd681815d01556fba  gcc/config/rs6000/t-rtems
! 5b0559fc3febaa083e29dc5d4523f430  gcc/config/rs6000/t-vxworks
  f11925c88524d2fd457bf77944da1302  gcc/config/rs6000/t-vxworksae
  3f0601a68de7a0aee8264b538228d943  gcc/config/rs6000/t-vxworksmils
! cc0cc82e1a5c2e41b283b3b890368e20  gcc/config/rs6000/titan.md
! e7d9802113af7f106be83e0d60f10bac  gcc/config/rs6000/tmmintrin.h
! 5d59b8706cb4357b0b55b2b15c113f77  gcc/config/rs6000/vec_types.h
! 247e2fbf5d925291a6f1b31156033e1b  gcc/config/rs6000/vector.md
! c392250ad95714c30d30593f3bb32834  gcc/config/rs6000/vsx.md
! 03af911a40d435aa33855b53091e91d7  gcc/config/rs6000/vxworks.h
! 8d88ff930fb293ccc19693f4198f0ffb  gcc/config/rs6000/vxworksae.h
! 7dc95d3194372c5c0ac2e9b886d11097  gcc/config/rs6000/vxworksmils.h
  44a93bbae0ad5aba424ba7b97cc6914d  gcc/config/rs6000/x-aix
  af875b9bcb1ec1da1f33d5e34df8ca7b  gcc/config/rs6000/x-darwin
  9ffcc92667a16102520a017eabc7d7d2  gcc/config/rs6000/x-darwin64
  3f42272f4bcf66031ebf71a6c876adb8  gcc/config/rs6000/x-linux-relax
  1aff8cb3714b63b6c3367f552dae743f  gcc/config/rs6000/x-rs6000
! cd352b7dae266946ea1432f3087e478b  gcc/config/rs6000/x86intrin.h
! 1f68ec49be41fcbbc5edf6461732b616  gcc/config/rs6000/xcoff.h
! a395b93932607e082764fd6338f5ddc9  gcc/config/rs6000/xmmintrin.h
! 6f40de2bceef1102ced6e9e62cf8780f  gcc/config/rtems.h
! 4fc47ba72f6e5bc6ad16e9993ed01536  gcc/config/rtems.opt
! 7fdcbf6a0552c69e8b6c1b2c0ec17a41  gcc/config/rx/constraints.md
! ef49ba0eda1debfdbf86e76738dd4d87  gcc/config/rx/elf.opt
  84ae77475029b49553276e3d7ed74cec  gcc/config/rx/linux.h
! 33ee179b34a2eb601f9485aecdb5a44d  gcc/config/rx/predicates.md
! ca62f0da16183b123ed51d87c6a95261  gcc/config/rx/rx-modes.def
! 8cb7c0d0ee0fb64f53b79e504225de6f  gcc/config/rx/rx-opts.h
! 8af7d65721b5b8defcb84a9db5e3a4da  gcc/config/rx/rx-protos.h
! 37e7079aed3153b7317df85b6f3b6ee9  gcc/config/rx/rx.c
! d2904d916d43fdc0310a752ed2a2c59f  gcc/config/rx/rx.h
! 879f36a83f17ac111c6f6a1b09073d52  gcc/config/rx/rx.md
! 167f160b1691cf287cb0a1c0412c7508  gcc/config/rx/rx.opt
  032cf36abc28f171fc24229e32796402  gcc/config/rx/t-linux
! 88e849e6598e1fb13cfc629838e9bfab  gcc/config/rx/t-rx
! 61e1723a0ac1399867cadae94395f729  gcc/config/s390/2064.md
! 257bbed0316aefc96a037f0a474b5376  gcc/config/s390/2084.md
! 3c78a54349c646bda0874395446ba437  gcc/config/s390/2097.md
! 371049958a80e8cd8d411bdcc2be7a91  gcc/config/s390/2817.md
! 2031a06c920ce15d67ad02c8867ba494  gcc/config/s390/2827.md
! 6205d0cca9479c2dcd5c10d28fce247d  gcc/config/s390/2964.md
! a971b3640a3d7b88d20ef0e92abf9324  gcc/config/s390/3906.md
! 9ebd4b5a83e1dfe318e9604fd342595b  gcc/config/s390/8561.md
! 5a8e22ff23d87a558b94acca3b8754dd  gcc/config/s390/constraints.md
! 593084f0122028311d8c27758822047c  gcc/config/s390/driver-native.c
! eea54eb2d5be394c5e1deb85a2ce7d0d  gcc/config/s390/htmintrin.h
! 1e94fd3732594eed7cb7c9cdd952d01d  gcc/config/s390/htmxlintrin.h
! c9b817d15324f399218870b825623350  gcc/config/s390/linux.h
! 009310c293c086a04da4a36754fe4310  gcc/config/s390/predicates.md
! 450293c45cad155e0914e838978eeece  gcc/config/s390/s390-builtin-types.def
! a5cb38bffc3b3382f4ff950c8d762f78  gcc/config/s390/s390-builtins.def
! 5eeac8eed4d5e326eaacd304a583c792  gcc/config/s390/s390-builtins.h
! 2e5a6e6316abc8b914e823218d33f1e2  gcc/config/s390/s390-c.c
! b8518a69c0543b0ab9a0194ccd0628c8  gcc/config/s390/s390-d.c
! 5b41350b22c1a027f0d29006df753cce  gcc/config/s390/s390-modes.def
! 71d30cf642c8424d2074ee64e2df28fc  gcc/config/s390/s390-opts.h
! 0cda88116bff0a5ea22724e0f749d0ea  gcc/config/s390/s390-passes.def
! 82c0fbbcc31f177afdb9a9feec3bb485  gcc/config/s390/s390-protos.h
! f7beee6d4cdc090fa5d4434200c7fe09  gcc/config/s390/s390.c
! 601754c49344531d1181e98cc26a2007  gcc/config/s390/s390.h
! f3d1623a2a959abb2186519805ff0e0b  gcc/config/s390/s390.md
! 78a3ffef1c30d585c4ac165a02312e96  gcc/config/s390/s390.opt
! 4d1a750cc61210e4e7dacc3b05c202cb  gcc/config/s390/s390intrin.h
! 33f73e7880d2cc346d18611e3062cb5c  gcc/config/s390/s390x.h
! c7d66ac4bbcf504879ad210e2f9085d7  gcc/config/s390/subst.md
  551847ee4c38fa1a7e95fd93cdb32f17  gcc/config/s390/t-linux64
! 2cfed5b3e9a6940f6f0c461e41d32dc2  gcc/config/s390/t-s390
! 53fb8a01a9af1fefe380f46897e0eb3b  gcc/config/s390/tpf.h
! 57706f67f812a74c2275e9a1f34602c6  gcc/config/s390/tpf.md
! 7d6bd68ca86c3340136814011885df72  gcc/config/s390/tpf.opt
! 52a230b0e8c27d825f1048d81c54f313  gcc/config/s390/vecintrin.h
! abcbf2f33d12c6a37f4a1bb9b7a88595  gcc/config/s390/vector.md
! 61702fd5f23b53d0940eaf4898e4e89e  gcc/config/s390/vx-builtins.md
  19876f77a242921272972ac5b8bd32d0  gcc/config/s390/x-native
! 6a5d7379165d447e6331bc9d2e3abbc8  gcc/config/sh/constraints.md
! ffe53d98b45f377c2aa442e2a53241e2  gcc/config/sh/divcost-analysis
! 551ee7c986573c36b8b78ed7d40089fd  gcc/config/sh/divtab-sh4-300.c
! e1f432996e98789b9962cd923f4fabe1  gcc/config/sh/divtab-sh4.c
! 320a177d025baa23d3a40af8b012ac0e  gcc/config/sh/divtab.c
! f723de4a83b85f80b49f9701c0447862  gcc/config/sh/elf.h
! 5bfada9a7fd7c3e860d3387a285c45f1  gcc/config/sh/embed-elf.h
! 7f41c2e4584f5f2a1cc3fd857e03e803  gcc/config/sh/iterators.md
! 62204296743b9203c688a441a9757057  gcc/config/sh/linux.h
! 1f257ed19e17d32c9e867a3fb602b340  gcc/config/sh/little.h
! adcef5eddced78f87ec18ac2e781d45c  gcc/config/sh/netbsd-elf.h
! 37339f0c0fd0544bc637684b308c58f8  gcc/config/sh/newlib.h
! b710cd20c617c7ee7fb9ac759787f22d  gcc/config/sh/predicates.md
! 19cdfca30fa5d8c891881da933bddbe0  gcc/config/sh/rtems.h
! 4a3e1aa5b89942ab75bf2628526aa8af  gcc/config/sh/rtemself.h
! 1cdb289b0e7e3c4d4e88d2708c747f70  gcc/config/sh/sh-c.c
! fc1bf3d98ba4868ac185ac03af952e88  gcc/config/sh/sh-mem.cc
! 2143917d9da6004c5d38619849b35534  gcc/config/sh/sh-modes.def
! 5ce91cd44cd6f721b7498e50643fe273  gcc/config/sh/sh-protos.h
! fcc4dc434a25f92288b3b4934aa633f5  gcc/config/sh/sh.c
! 5616a24f889393d41e9fa0010c8e249e  gcc/config/sh/sh.h
! 29769c718219ae18be67242072aa8b8b  gcc/config/sh/sh.md
! e02a937f714f704741abcb139eebd433  gcc/config/sh/sh.opt
! 2fdd70cc6d89a7205ef035084235f4ec  gcc/config/sh/sh1.md
! 2bd4053c0d5e4aa6b93d0c36772af770  gcc/config/sh/sh4-300.md
! fc22de21c1718b5acb0bb324bfa30ec6  gcc/config/sh/sh4.md
! b65c1cfbcd87f4e63912bfc4430ac6fb  gcc/config/sh/sh4a.md
! 7bb3e0dc4bda8adac4830bee31043ba6  gcc/config/sh/sh_optimize_sett_clrt.cc
! ac57d8d3cb1f14439cf73e3f341dd2a9  gcc/config/sh/sh_treg_combine.cc
! f30882a6215b8e2a550b2d404d65ac45  gcc/config/sh/superh.h
  06158b0f1e33501120db330d7734228d  gcc/config/sh/superh.opt
! b7769ae5038bf2050b9b823af7e86938  gcc/config/sh/sync.md
  d136f788a5f1c0fd4a8cf495f33aabd8  gcc/config/sh/t-linux
  ad88281b142c81e6c7017a842c281d5f  gcc/config/sh/t-rtems
! 4223b10c47d9bde55e5ddf8ee3d9b375  gcc/config/sh/t-sh
  9f0e9638f478c08d204c5dce468c95ce  gcc/config/sh/t-vxworks
! a249a1b79cb6e67f3fb6fb375239a10f  gcc/config/sh/vxworks.h
! 1e03b7580e5a056b280b0993d9adea77  gcc/config/sol2-c.c
  5c26c2321d68d4724b0d0076803c6b89  gcc/config/sol2-clearcap.map
  73dd11dea23019ab25cbbd70968694e7  gcc/config/sol2-clearcapv2.map
! daf530df33b7d314a1a7ea93096a1128  gcc/config/sol2-cxx.c
! 24bafd84e67864c228ffd4b6ef8f8d68  gcc/config/sol2-d.c
! 97ea32386ac69d4ab7a9f7d18523f782  gcc/config/sol2-protos.h
! cd0bf14dc38178008246e20e970d9e21  gcc/config/sol2-stubs.c
! 2fc77b1383e522960284354ead101b91  gcc/config/sol2.c
! 879f26249fbe743b2c3ee6a76185517f  gcc/config/sol2.h
! d3304d46556ce709ccc0317b07d8ec9a  gcc/config/sol2.opt
! 41e18a40dd57f8ac6e231b2a0eb9eeb7  gcc/config/sparc/biarch64.h
! f1883ceb989a450146631e32191812e5  gcc/config/sparc/constraints.md
! bca177eb0473cc7fd60c1f268282663c  gcc/config/sparc/cypress.md
! c3da2f6d64d0828afc8ab8b2eb4c9ce2  gcc/config/sparc/default64.h
! dba7e2b89d25850ed88d3df9d908b04a  gcc/config/sparc/driver-sparc.c
! 4d5da08e210ff4ae14b018ef0fdcaa12  gcc/config/sparc/freebsd.h
! cbcc569238f4519e913cec1cadefdc46  gcc/config/sparc/hypersparc.md
! caff42ee3fbdf9d4c0c898b6015d5c51  gcc/config/sparc/leon.md
! fe7084bb31e8913acc97482b438b948f  gcc/config/sparc/linux.h
! 77c7e2f056cc6443b0a03cd2d5598258  gcc/config/sparc/linux64.h
! 056c173c33c18bd79ddc6d6442218676  gcc/config/sparc/long-double-switch.opt
! aa2db25246a32372c5ff2d5ac80c59ee  gcc/config/sparc/m8.md
! e9633f0ae47d5fe3d908578c4130be3e  gcc/config/sparc/netbsd-elf.h
! 1938328036f761f1cc88712845a6e8a8  gcc/config/sparc/niagara.md
! ae1fcbbc8a15cd903e22cac21df78e70  gcc/config/sparc/niagara2.md
! 409b782f9a61920dde3691bd7fbf07e5  gcc/config/sparc/niagara4.md
! 8c5be0aadb4c014d5348a81c96675eeb  gcc/config/sparc/niagara7.md
! 2a347d9bfbcd46b9d2e0f02a20a287af  gcc/config/sparc/openbsd1-64.h
! 3d5edd0c90b0e6db476cfd5905ae8c1d  gcc/config/sparc/openbsd64.h
! ccf6ce819ca1a664cc0a27296fe6d37a  gcc/config/sparc/predicates.md
! b9d01d4d1a9a46d694ce6fe918ad97df  gcc/config/sparc/rtemself.h
! de0415b43ccf9962190767d9d673bdd6  gcc/config/sparc/sol2.h
! bd373e4c36d4f36006262f8ad76ea34d  gcc/config/sparc/sp-elf.h
! 7f3272d43031813a458f09aea259ac77  gcc/config/sparc/sp64-elf.h
! a2c001107d11d64a6867b5ad3cf7b5b7  gcc/config/sparc/sparc-c.c
! 54653da5737fd74bb8b80866d7cf2017  gcc/config/sparc/sparc-d.c
! f41fda97335f7a023ecd43436e246ca6  gcc/config/sparc/sparc-modes.def
! b23d1fca28e4b9ff46c0ae43780f1e49  gcc/config/sparc/sparc-opts.h
! d133793a37112a304bbee95d6391bde1  gcc/config/sparc/sparc-passes.def
! 9da368e6d99a08be41e8a2859745f7d6  gcc/config/sparc/sparc-protos.h
! 0622ebefda6352e6b33d6207887ca5b8  gcc/config/sparc/sparc.c
! e8f1684102f06e96754e89e697c7a040  gcc/config/sparc/sparc.h
! ddaa24ea4ac0d4d43fc086f64dca957d  gcc/config/sparc/sparc.md
! 62c5420a5eab896a62add46521e02815  gcc/config/sparc/sparc.opt
! b62168c8d25717e777239fb6d2c2bdf7  gcc/config/sparc/sparclet.md
! c87db0e52fe6f1b5721136e265bd705a  gcc/config/sparc/supersparc.md
! 9fd1101df0273cd72c851f5a92189d8e  gcc/config/sparc/sync.md
! 0671c09b69799ee74b6ee0abb22f5ddc  gcc/config/sparc/sysv4.h
! 784ba365f0a521ed34a2b0ce14358c9a  gcc/config/sparc/t-elf
! a9667e893d8e0201464dda5d9dcd72eb  gcc/config/sparc/t-leon
! 3bd0abb99c7cefb98ea11e9de681dc06  gcc/config/sparc/t-leon3
  4a7d3f368a24d549fabaafbe44fcb134  gcc/config/sparc/t-linux
! be838019c0823c727d69991d6b92a8a3  gcc/config/sparc/t-linux64
  75987b7fdc6fa9c9ff2108ff1003e6d2  gcc/config/sparc/t-netbsd64
! fc61a311312b257cad9e92fb4b68ec46  gcc/config/sparc/t-rtems
! 3fab20f95c3e896eba00e1ecb45f722c  gcc/config/sparc/t-rtems-64
  511770bb20c2707fabd4f231ce8b83cf  gcc/config/sparc/t-sol2
! e4c11048d729fc97400d3fda6cd69e8e  gcc/config/sparc/t-sparc
  b04597637b0c08dd3e6d1a40c43e76b4  gcc/config/sparc/t-vxworks
! d3b4ae0287d8450e8a5e99c1f8ea333b  gcc/config/sparc/tso.h
! 7d4d1b2be9d0794d455aa470efee9b30  gcc/config/sparc/ultra1_2.md
! f007b3e3de9aaf3f5d96b15e6cce6731  gcc/config/sparc/ultra3.md
! cd6e19dcf288575e7958e9160158a0a6  gcc/config/sparc/visintrin.h
! bdf77bb177c5f75e690ba2312f815e81  gcc/config/sparc/vxworks.h
  9b2ddc345afcea4f415dd0c8bc2d2ed3  gcc/config/sparc/x-sparc
! 562993ea78c297dd4ab88e93b65abc9c  gcc/config/stormy16/constraints.md
! 5c33fa78a2ad448246668ae3cb7df3ae  gcc/config/stormy16/predicates.md
! 45ef82ae0a8d9088a0b6fd1fe1a76d90  gcc/config/stormy16/stormy-abi
! a1bac601d82fe1d733248fbca4cb703c  gcc/config/stormy16/stormy16-protos.h
! 627ac5ccb4a603d688b031635f0a9e35  gcc/config/stormy16/stormy16.c
! d790e43254d9ac8bda2e6b4f55974705  gcc/config/stormy16/stormy16.h
! 7c347d42d0dcbf4579a60f6481964fd7  gcc/config/stormy16/stormy16.md
! f51f3fe6a2cf0daab4c5fd47f0266dfd  gcc/config/stormy16/stormy16.opt
! 4ccfc452130afd1277ddf578faea2531  gcc/config/t-darwin
! e6b99697d5f0f9738cf7a230b23c6459  gcc/config/t-dragonfly
! 5c0cc6acef074c7bbe71ca42a8d8e71f  gcc/config/t-freebsd
! 29365df696a0990ec29acc8800a10ec3  gcc/config/t-glibc
! 900756249b1a10abf0e9dde1140f3e51  gcc/config/t-libunwind
! 232bfa7c4a707d88409ac0d23ac1da68  gcc/config/t-linux
! 99147f9d5b217c7127caa459d53f28d6  gcc/config/t-lynx
  5dad674732908a1c6e62e627e047929e  gcc/config/t-musl
! cf175949790970f5dc56002ec8064dfb  gcc/config/t-netbsd
! 8acc351f052e7d44e78e5b049d0a124a  gcc/config/t-openbsd
! 45ea87ff9ccfe246dc3a28d7e137b7b2  gcc/config/t-pnt16-warn
  501751f2be56698ed1c9cf18358b67ac  gcc/config/t-rtems
  51d3678acb41d4448cc332f7a8e8cb2e  gcc/config/t-slibgcc
! 28a4954f9c852c9cf6aefffface69da0  gcc/config/t-sol2
  94b3e10150e75899d2fc1410cf218e3f  gcc/config/t-sysroot-suffix
  6f78c5decbfb4b465e7c289b60109023  gcc/config/t-uclibc
! 88caadcc98bbcf6c7cfb74cbdf6d41ae  gcc/config/t-vxworks
! 4bad79d49a7cdb5faf1468e97ccfbc35  gcc/config/t-winnt
! 197e911393d23fe1912c152030d9c63e  gcc/config/tilegx/constraints.md
  f62347fb17ffdccf93a30b860f9f4dc2  gcc/config/tilegx/feedback.h
! 8525d026aa9df4140b6c01ef428d522b  gcc/config/tilegx/linux.h
! eca36a99199bc518f8c5bc1e11b7f1ac  gcc/config/tilegx/mul-tables.c
! 0b36122163d6c57e62c978b43f4fb234  gcc/config/tilegx/predicates.md
! 83a270082295f585ad0126447ef92621  gcc/config/tilegx/sync.md
  94847c7229d625be28df740c61698b73  gcc/config/tilegx/t-tilegx
! 341548174821f01f1c7467c61963366b  gcc/config/tilegx/tilegx-builtins.h
! 6682f09bf54d0166f7aed85d0f400b02  gcc/config/tilegx/tilegx-c.c
! 7dfe59c129fd7feab0ad6b7b96e02b44  gcc/config/tilegx/tilegx-generic.md
! bcba0d24e618f157786f0a42bfcf0c75  gcc/config/tilegx/tilegx-modes.def
! ae19f41171a60963b86535af4a9a094e  gcc/config/tilegx/tilegx-multiply.h
! dd108c4e08e3dfeac2ef1a5d1bdc8264  gcc/config/tilegx/tilegx-opts.h
! 8bdc822556abfe63bfa6354b8b51b6b5  gcc/config/tilegx/tilegx-protos.h
! acb2b7a676593dc97292218f018685e2  gcc/config/tilegx/tilegx.c
! 4595acfb169fa80f7a83669fcf079ae2  gcc/config/tilegx/tilegx.h
! f4410f8e050ccee97ee129e9063ea8c0  gcc/config/tilegx/tilegx.md
! 557ae9e8eb9d7e236218ae3d90bf8751  gcc/config/tilegx/tilegx.opt
! c387c44b6e6a7768c8230f9895cb2b2c  gcc/config/tilepro/constraints.md
  f62347fb17ffdccf93a30b860f9f4dc2  gcc/config/tilepro/feedback.h
! 9098dcc4db99d0eaf1d682431bab928e  gcc/config/tilepro/gen-mul-tables.cc
! 73f582498292440c97799a431dd8993e  gcc/config/tilepro/linux.h
! ce9144c5ac87f719213c7fed543cea7d  gcc/config/tilepro/mul-tables.c
! 2aafe04a74fd58c9260f32303a6321b9  gcc/config/tilepro/predicates.md
  3f18cdd00997ddf3552919159dbe4bbb  gcc/config/tilepro/t-tilepro
! f7ede512ec5f3761e3a26f64a5624ca7  gcc/config/tilepro/tilepro-builtins.h
! c4819750c46d03c20c4d289ddbbdf992  gcc/config/tilepro/tilepro-c.c
! 7eb13faa3726bf0750d24e27d870a599  gcc/config/tilepro/tilepro-generic.md
! 9134d8080922c7051ca36dfab31808ff  gcc/config/tilepro/tilepro-modes.def
! c191741e56c9fbf690b52d9cadf256ab  gcc/config/tilepro/tilepro-multiply.h
! e81b3414895c1b716a598b137f5fa628  gcc/config/tilepro/tilepro-protos.h
! c71d8bb3b87af0337e882ae233736b01  gcc/config/tilepro/tilepro.c
! 32ccf584b7d4089998a19493842591ff  gcc/config/tilepro/tilepro.h
! 1d8cc30575deb4dbc941764bcad4a619  gcc/config/tilepro/tilepro.md
! b97ee2f5d85ccead768ac302e99e743d  gcc/config/tilepro/tilepro.opt
  17fd5cabcc31b720b23bad47cf7fe84c  gcc/config/tm-dwarf2.h
! 5c136b2e8885db042bb049c78c9e955d  gcc/config/usegas.h
  a6ae71a556271cc116214b3e9e87d867  gcc/config/usegld.h
! f410ad608b013ba78124e51f9c5efe9c  gcc/config/v850/constraints.md
! c5a3c89a1c923e2476bf07126705ffd2  gcc/config/v850/predicates.md
! d2e41a02aa6f43c6e8c0fbb02e5a1812  gcc/config/v850/rtems.h
  41b5d5e91cc905b1e3ba5de47db5f9c6  gcc/config/v850/t-rtems
! 89c3f32e12f7042ede7cea030bbd2361  gcc/config/v850/t-v850
! dbbaee77cc147fa9a327a31a76756c18  gcc/config/v850/v850-c.c
! 384b5b17fe167742cd6e5115063c1386  gcc/config/v850/v850-modes.def
! 748072e9ac0d6727203ed4805e6e09e3  gcc/config/v850/v850-opts.h
! 2e6c8e1ed082a63900e313c202b26840  gcc/config/v850/v850-protos.h
! 4d0c0de89ce82c6b0e903b455b02ae5a  gcc/config/v850/v850.c
! 50d0eed0d2aa8da1050d851613335ab9  gcc/config/v850/v850.h
! e8484740d5719d2e1b12a880e2b0de68  gcc/config/v850/v850.md
! 90a6ed7b51cbc9dae9f69666a478d7d5  gcc/config/v850/v850.opt
! 6609374c2d2b3aacf29f62cd73f5a343  gcc/config/vax/builtins.md
! 85b5974e2bad18a70309b939815093ed  gcc/config/vax/constraints.md
! 5bb720226e6d447777ddb574d3380f76  gcc/config/vax/elf.h
! 1a8efb9ad4517c812682f8fa922e2802  gcc/config/vax/elf.opt
! 7b0c8e9cb91c7be445099a8946de8845  gcc/config/vax/linux.h
! 5b745bf4a85df9576df2cd1024f81ce7  gcc/config/vax/netbsd-elf.h
! 5cd1435f2a16fcb5505a495c732e5df4  gcc/config/vax/openbsd.h
! e73530b82940344e65c464f787f0ea53  gcc/config/vax/openbsd1.h
! a1e190d3b341bc6ddeb76fbf961e7b78  gcc/config/vax/predicates.md
! 4c689845b2e868dbae5ebbbb8b8005d8  gcc/config/vax/vax-modes.def
! 7e0c2696f78ab7b89c7db443c436779c  gcc/config/vax/vax-protos.h
! 2522a4b8b0975ff57bdb34deff6447d1  gcc/config/vax/vax.c
! a68f8b03e844439f59b4160c2f55efa9  gcc/config/vax/vax.h
! 48661c71f0f5d9bfbc22a2ff6cc7d0e9  gcc/config/vax/vax.md
! e520abd9398f1388046ec8dc7914589d  gcc/config/vax/vax.opt
! d80f4fcca05c464187a4256ac7f26d56  gcc/config/visium/constraints.md
! 421863138c200f1fa1d74ed5fa5ca84d  gcc/config/visium/elf.h
! b101fe12afce4531562c46fd695f42ef  gcc/config/visium/gr5.md
! 91b6a567cccfacf2f6fcfc492063ce9c  gcc/config/visium/gr6.md
! 26886e21b60775d13dd9ba0bfce264ff  gcc/config/visium/predicates.md
! 86d7fcc4645a8ff4e92b6be797fbbc79  gcc/config/visium/t-visium
! 0c8d1268199f74868866c3f3b9fb73f4  gcc/config/visium/visium-modes.def
! bae69735f03839fb213bbec99b157b79  gcc/config/visium/visium-opts.h
! 29ea606398f47c0deb0981abb81e7aa6  gcc/config/visium/visium-passes.def
! 31aa2bd49205ecdb391cdf598c6b09b5  gcc/config/visium/visium-protos.h
! cc820131ba5262aa363c14cc7ec49ebb  gcc/config/visium/visium.c
! 00e7824ad7f627693be706aacb70c37d  gcc/config/visium/visium.h
! 9b6f57ee259afb6b58122d02c72a9147  gcc/config/visium/visium.md
! 3c6f66507be96571022410d913b14c39  gcc/config/visium/visium.opt
! a35383b156a256ba8b7a543665d0c364  gcc/config/vms/make-crtlmap.awk
! 2a2cbceba3284ecc6659a28f4655d4e1  gcc/config/vms/t-vms
! 7f3fd5e5fbdd12393abf8baf7b0d7cf4  gcc/config/vms/t-vmsnative
! ed9ef5f03aaab5cea39519986fb0ea94  gcc/config/vms/vms-ar.c
! 686c99f46111c26b3f62f88fe322ef40  gcc/config/vms/vms-c.c
  88a072da5fbb7828331d88720c03679d  gcc/config/vms/vms-crtlmap.map
! b2a03daf85a7a9c0c602ab47d426e936  gcc/config/vms/vms-f.c
! 96f9e97a2d2f8a6b4413b9b59ffb2f41  gcc/config/vms/vms-ld.c
! fed0294dccf7d4c6dc84f620ec547967  gcc/config/vms/vms-opts.h
! 3588a87c0d437892a287d7847cc0cf70  gcc/config/vms/vms-protos.h
! c5c7cd36faf5d207ad3c0c789592c691  gcc/config/vms/vms-stdint.h
! e7d3a88c0991f70ab9fbb932203b1c51  gcc/config/vms/vms.c
! ae2820ac7d43cf59e93f97657bc44c4d  gcc/config/vms/vms.h
! 828a857c6b0f3a23869e1adaeb53f3df  gcc/config/vms/vms.opt
! d169abb7e439c5dc86b832320f47569f  gcc/config/vms/x-vms
! 19d889677a4e78220b438c10136349ea  gcc/config/vms/xm-vms.h
! dee67ec53a46a62887841142c72bb876  gcc/config/vx-common.h
! ee2d7624a1cf8a055beab64a9f01a8d9  gcc/config/vxworks-c.c
! 35ab1cb7e1a5fc52ce8d72b668a912d4  gcc/config/vxworks-dummy.h
! 3fa5a61490392704bd52ce26bba3a1ac  gcc/config/vxworks-stdint.h
! 5ee1854216d708e655c076effc3235b8  gcc/config/vxworks.c
! 56aa96f581f4396a46ec78b5bce42346  gcc/config/vxworks.h
! 93a6417ac698f4a1b486f240a11d75b8  gcc/config/vxworks.opt
! d55d2805d12ce9917cb284aac8570878  gcc/config/vxworks/_vxworks-versions.h
  2c7fb7482d87758a9305ce4fec4c94ea  gcc/config/vxworks/_yvals-wrapper.h
  01e406b5ec3947608efc9e86649771ac  gcc/config/vxworks/_yvals.h
  9e122a12d3e14f20967d135228bf88dc  gcc/config/vxworks/complex.h
*************** c2b41ef1ac209bafdda89e15134a049b  gcc/co
*** 4641,4648 ****
  6844198023015462d685c40332394d86  gcc/config/vxworks/setjmp.h
  69890065cadae9a4f89c1b535e9155b2  gcc/config/vxworks/stdint.h
  e8eef5870ca1f50784d7ccedc98d709d  gcc/config/vxworks/vxworks-predef.h
! f8926c769a478ba5b2dcd1b56e10f3fd  gcc/config/vxworksae.h
! 4da70b98e557a35a241b90c282dbf645  gcc/config/winnt-c.c
  5cc0a69d6149e22cb7ea38c2206a2af3  gcc/config/x-cflags-O1
  e039340cbf1639956ac7be2a90852c1b  gcc/config/x-darwin
  70a634635eff456ffab3bc53b2a81690  gcc/config/x-hpux
--- 4985,4992 ----
  6844198023015462d685c40332394d86  gcc/config/vxworks/setjmp.h
  69890065cadae9a4f89c1b535e9155b2  gcc/config/vxworks/stdint.h
  e8eef5870ca1f50784d7ccedc98d709d  gcc/config/vxworks/vxworks-predef.h
! 5cf2045e7c212d5a5a9a24fe63fa030a  gcc/config/vxworksae.h
! b93dc9cc6617eb733ccb70bc6911c444  gcc/config/winnt-c.c
  5cc0a69d6149e22cb7ea38c2206a2af3  gcc/config/x-cflags-O1
  e039340cbf1639956ac7be2a90852c1b  gcc/config/x-darwin
  70a634635eff456ffab3bc53b2a81690  gcc/config/x-hpux
*************** be8a6e9a94bd2fa1d41af513297364dc  gcc/co
*** 4650,4680 ****
  7b1b069277d1d63aa08b764e640329ac  gcc/config/x-netbsd
  2a6ad432bb06a41ba76f613b392d784b  gcc/config/x-openbsd
  6ad0b39a7daae38439d6d8cfd23c3ba5  gcc/config/x-solaris
! 03713c370194e223aa53a745942aaef7  gcc/config/xtensa/constraints.md
! bdd6fe78b0d860780cb7efdde0834ec3  gcc/config/xtensa/elf.h
! ce8ca95484de99228f896fb9332ae966  gcc/config/xtensa/elf.opt
! 9fd60c338daded1be9155b39beb48800  gcc/config/xtensa/linux.h
! e098923d01f56b015bd9394b076efc3d  gcc/config/xtensa/predicates.md
! e557ecaffbbb4eb64490360efd555668  gcc/config/xtensa/t-xtensa
! 406bc4b8d1489ac3962d33f8eb5cb400  gcc/config/xtensa/uclinux.h
! 424241a3454f60f5932a1d1254b93f89  gcc/config/xtensa/uclinux.opt
! e42654dd30c5612779ef93d34c3c29c1  gcc/config/xtensa/xtensa-protos.h
! 4b406144187fcb6b5592c3d7f97b1c5e  gcc/config/xtensa/xtensa.c
! a23e48474ee8aa13f49b361bd3c98841  gcc/config/xtensa/xtensa.h
! 01660331fadee5f3e28f5bfb0cd602fb  gcc/config/xtensa/xtensa.md
! 08b3738376c03bf4cee8df572e6705f2  gcc/config/xtensa/xtensa.opt
! 3d0bb9449a92a7e6ef5e3ab43b13afd9  gcc/configure
! ced95d22dbf8f9a8455ac7374b36d1b8  gcc/configure.ac
! b87ae58d1c8749424f6bd5aaa5d01093  gcc/context.c
! b2a80d0c51705d2a0d6e75048c697b96  gcc/context.h
! 1b4f206d9f1dfe887814858b2628b6ee  gcc/convert.c
! 820c5ad95c096f30b56db96ceb9aebd8  gcc/convert.h
! 3eceab35d7f2339c2e8af9f963d14a94  gcc/coretypes.h
! cc47dc829b58cf28ea4a0d34724ef655  gcc/coroutine-builtins.def
! ccc965b70117adaa9e520ce66d2cdc1c  gcc/coroutine-passes.cc
! c199911d8b7f237f51f4b1b1606e1625  gcc/coverage.c
! 1929f2519bcd6977e0d213f459d3b40c  gcc/coverage.h
! b304d5dd687844905b128c005d8e175b  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
--- 4994,5024 ----
  7b1b069277d1d63aa08b764e640329ac  gcc/config/x-netbsd
  2a6ad432bb06a41ba76f613b392d784b  gcc/config/x-openbsd
  6ad0b39a7daae38439d6d8cfd23c3ba5  gcc/config/x-solaris
! c67d6db68add0126408109cc5b6457ae  gcc/config/xtensa/constraints.md
! bf27ee51add23d218ca627b3d40fda5d  gcc/config/xtensa/elf.h
! 3a971bb0d6a114496a5942d1ddc00326  gcc/config/xtensa/elf.opt
! 1c4e0a2008f4677243015613dd5a8b46  gcc/config/xtensa/linux.h
! 0aa9ecb2e40c4ba9958ab5c4944fbd77  gcc/config/xtensa/predicates.md
! 229d83aa036bafd17c30632942638b60  gcc/config/xtensa/t-xtensa
! 1bcf98a33e1bda802125575257a30784  gcc/config/xtensa/uclinux.h
! 9f2e36203965b3914925884725920df2  gcc/config/xtensa/uclinux.opt
! 84c554b196894a50ca18c5fd8a6edf20  gcc/config/xtensa/xtensa-protos.h
! 60d5fac2ea03746ae1e18a5e2b80e5d2  gcc/config/xtensa/xtensa.c
! 06bc01a7ccf9f8e76a200854e3483443  gcc/config/xtensa/xtensa.h
! 6c6d0b85211762c11d2e72a6182bb110  gcc/config/xtensa/xtensa.md
! f5b73b7b0901f94c273f343137c0a387  gcc/config/xtensa/xtensa.opt
! 7f5f59faef0a8c1ad691ed3d6faf6264  gcc/configure
! 14fe2307e0656ba32d41e5a7d9ddfc48  gcc/configure.ac
! 27d42bf7c74759dfd549975615fc5068  gcc/context.c
! 16c3aa3c912f686f2a31e9390d85475c  gcc/context.h
! f4ce7d4c40b8bd5fdb65296621e3c102  gcc/convert.c
! 70fc96b69d15408e8fdd3f28979c7efe  gcc/convert.h
! 92835f17ff8a4bbd6044d57005ebfbe2  gcc/coretypes.h
! 165e8c92386e4de91399049eaf43a842  gcc/coroutine-builtins.def
! b92bf93ad5a628ce259b9055426c0cd4  gcc/coroutine-passes.cc
! cbbbaadcc62e9dd87c5fc82593b79b9f  gcc/coverage.c
! 040e51182a2000cd08580cee4c8591c6  gcc/coverage.h
! 605b141128847c2dc999afe7215f068d  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
*************** c70c873ca0345be312457bdc551e3636  gcc/cp
*** 4702,4772 ****
  965f4de4d6e16d776ab9b1a3e169c08e  gcc/cp/ChangeLog-2017
  f6ebb1c64d8e002666e58a4da0d97ecb  gcc/cp/ChangeLog-2018
  6e4e23f29e05a4d68f00e1e0306fe285  gcc/cp/ChangeLog-2019
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
! 6df3c44d0c0dd3bec79bc34db725697a  gcc/cp/Make-lang.in
! fd0465d46d6794ff1574f592b953651b  gcc/cp/NEWS
! ef2971659ae56d25e9b92f5c0d6ae953  gcc/cp/call.c
! 8ff7b45f5a8aee8f834b85eeca6a88f9  gcc/cp/cfns.gperf
! 37c2b7bedf298de9dac0cafb46f58d9b  gcc/cp/cfns.h
! 57409632337ddbaad983fb519de29af4  gcc/cp/class.c
! 8aaf367382ec0ba58ec54105f81bae4c  gcc/cp/config-lang.in
! 9bdccd276b0ba57819d1a4c494c0d55f  gcc/cp/constexpr.c
! 4b1f6f9dedfda7cf254bc9dbf937d978  gcc/cp/constraint.cc
! a8d5d416a66f9ee80ee5f129d1d6e00f  gcc/cp/coroutines.cc
! a782c11aa8a2187a3a1716eb7324e70c  gcc/cp/cp-gimplify.c
! eab55c7f7088d85452230ea3e4fb6e0b  gcc/cp/cp-lang.c
! 1b652554949dd65ee7cf9f3033110264  gcc/cp/cp-name-hint.h
! 172ce9c8be17744f898dc4d87767f723  gcc/cp/cp-objcp-common.c
! 867dac9005ac1106eeacfcb9bfb19498  gcc/cp/cp-objcp-common.h
! 942c4d40b949ce9d5caf97e8afd8c883  gcc/cp/cp-tree.def
! 0721518f8c98e8ee49f5388dd327cd99  gcc/cp/cp-tree.h
! 1fdd2540a34a8d3711868857e16b12ea  gcc/cp/cp-ubsan.c
! c64b73fd8b79045795b5c4cd84908e4c  gcc/cp/cvt.c
! eb2e3a9c14c44c0cc5c5dbcc9c82618d  gcc/cp/cxx-pretty-print.c
! b5cc2e7a6254261a168bd34a412a0fc6  gcc/cp/cxx-pretty-print.h
! d3ae9ba172c333b9f86fb5e24063006f  gcc/cp/decl.c
! 5c07af228d899d28c4a7a4096ae1ae34  gcc/cp/decl.h
! 15d4a7a21ae493da7bb9e9e011ba4156  gcc/cp/decl2.c
! 98c98b8f005396a75738d141023feafe  gcc/cp/dump.c
! 31839945a2103c24d966396fc5d42f75  gcc/cp/error.c
! 6f9d4b390db81bcd02469d0869f2bc46  gcc/cp/except.c
! 1f0efe7b19143c3848cff516e6fd0b2f  gcc/cp/expr.c
! 01b0de4604aab6440ec5ea83f09fb4d6  gcc/cp/friend.c
! acc27a3f2e7fed4b7ba30986e3dbf8e9  gcc/cp/g++spec.c
! 93646ca7ce1523518eafdc0a273bc3d3  gcc/cp/init.c
! a7e4b302de0b3ac5a73b009febb3ca5d  gcc/cp/lambda.c
! 2395c9f9b982880dfc925c3cbd76a4bc  gcc/cp/lang-specs.h
! 8c0a7e69fc667bef06ad7bdf5b6d4a32  gcc/cp/lex.c
! 88f9b3b7adcb56a71c281373d1c5643e  gcc/cp/logic.cc
! e9abc90fbb89800538e4fc30b89579bc  gcc/cp/mangle.c
! 954cd6ed86e4c27db74922ef8e6f7530  gcc/cp/method.c
! 000b6d6b0fa83d65ec0b2422b53b863b  gcc/cp/name-lookup.c
! f09435d1b0c974cfe45f48bfc0669984  gcc/cp/name-lookup.h
! a7154f7d3b54c0184476a88977d4ab3c  gcc/cp/operators.def
! 2786790fbafb8faefa78a7b85b81022b  gcc/cp/optimize.c
! f2aef030af2fafdb8b12b4b650d80ca0  gcc/cp/parser.c
! bb1759eb82ec59c0a317878693eb4f45  gcc/cp/parser.h
! 29758a85528c0cbb14a6b156518cbb2c  gcc/cp/pt.c
! 322572fac27749e839caf803dad33025  gcc/cp/ptree.c
! 7ff8a27380a1e6717713246bd546b2d3  gcc/cp/rtti.c
! b239665685aa93eae46b21aeabe23c8d  gcc/cp/search.c
! 2585494511f8123d9a4feb60d34f605a  gcc/cp/semantics.c
! 8e3d5e5af1e6f5b746d19f43aa59cef1  gcc/cp/tree.c
! cae322bfce187ac1a745d5219629864a  gcc/cp/type-utils.h
! 8cad24814bdf5b3f98b8a8801f7be07a  gcc/cp/typeck.c
! 3bec5e7f30e41c99a85f2d83a785aec2  gcc/cp/typeck2.c
! 06da302baeb2dc3b6a3cf7b842ae87fe  gcc/cp/vtable-class-hierarchy.c
! 3fb2d72bc2ca089b8759ce3e4ef4e807  gcc/cppbuiltin.c
! 95b9b9600032c06f6166f88d2560827d  gcc/cppbuiltin.h
! d810e2056298f1078b649030d36a60dc  gcc/cppdefault.c
! 76e05bdfb378e95d27c573bb828f9c12  gcc/cppdefault.h
! 1e22b16fe811191e4839719c4d9939cd  gcc/cprop.c
! 823cf420b4ae4e73d0a0cf712e43793e  gcc/cse.c
! 9b1c75dc9d50876118df7d62bae8de96  gcc/cselib.c
! ec27fbd17f014711211a34a157aaaff3  gcc/cselib.h
  1ded054093de910d9786c62bc4fe8cc6  gcc/cstamp-h.in
! ef1f19b223b83f450354d18f923b9425  gcc/d/ChangeLog
  86f687c485111eedca2eb048294f957e  gcc/d/ChangeLog-2006
  70ed1c47fd9b3f5dd95055642ed79265  gcc/d/ChangeLog-2007
  a7090ab2dd83aa4f44823c17566b83ef  gcc/d/ChangeLog-2008
--- 5046,5120 ----
  965f4de4d6e16d776ab9b1a3e169c08e  gcc/cp/ChangeLog-2017
  f6ebb1c64d8e002666e58a4da0d97ecb  gcc/cp/ChangeLog-2018
  6e4e23f29e05a4d68f00e1e0306fe285  gcc/cp/ChangeLog-2019
+ 1ea0510e0c84257e030079fda09b655d  gcc/cp/ChangeLog-2020
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
! 82f86a266d5edfdd6fbdee627fdfc94d  gcc/cp/Make-lang.in
! 0a26ffba318387d72b4f8b17aff409a1  gcc/cp/call.c
! 013fc77930854f5ca6df4b4955b9cd5d  gcc/cp/cfns.gperf
! 94073c4e9f5c434dbd02f5fab8ef2fec  gcc/cp/cfns.h
! f51271bf6a8e25603229bb085fd1a03b  gcc/cp/class.c
! 52c149e840d6ef546324992e040dffc9  gcc/cp/config-lang.in
! 31006e4dca5ddef501be23ddc18b56af  gcc/cp/constexpr.c
! e59888c4b2e807ee4755ea017646347f  gcc/cp/constraint.cc
! c4785444431b910e34c2c67b98327827  gcc/cp/coroutines.cc
! b0614f8fc3249686170512bf4c5dbaeb  gcc/cp/cp-gimplify.c
! 9f675ade86f6f438186c3359d251522d  gcc/cp/cp-lang.c
! 3a17e28f03f7b86b06a0f7f2f1b38ee1  gcc/cp/cp-name-hint.h
! 28f4d1cb7de533b07b26906c3ec5715e  gcc/cp/cp-objcp-common.c
! fc5f614233d1e1aab44be266429426d9  gcc/cp/cp-objcp-common.h
! e5a3c0227c5d7f6f15753ecf70d86dce  gcc/cp/cp-tree.def
! 4da399024d5de5e749d73262b0e84080  gcc/cp/cp-tree.h
! ad2891a30f319f1059b3cd8cb85c2a66  gcc/cp/cp-ubsan.c
! 2c2bd655cad853eb84eec82524fe4555  gcc/cp/cvt.c
! 80fc2cbdfb0b939d06eb0c83cec629b0  gcc/cp/cxx-pretty-print.c
! f217ad40ae4095f745573953940bc517  gcc/cp/cxx-pretty-print.h
! e1d2e688bfdabc5e2777cd379b1ade4f  gcc/cp/decl.c
! 2ee48334d4ea854bc0b6138b17db0eca  gcc/cp/decl.h
! 6f3c044c89a8aff081edbfda64a72943  gcc/cp/decl2.c
! babde369bad84c4348cbb81fef27de19  gcc/cp/dump.c
! 65e7fee5d2a2ff328b09d262bdeb3b42  gcc/cp/error.c
! 8a2d7d619c6e8c08e0343f09a3c80da1  gcc/cp/except.c
! 9ef7eb731264636da96bb3ee4f5d92bd  gcc/cp/expr.c
! bf339c04a11eb1ff6ae77b76d8a44e0c  gcc/cp/friend.c
! af1b9753c30b60683233adf6dc1ebed9  gcc/cp/g++spec.c
! 85d8a43e72cec1df7cb88b50d2834059  gcc/cp/init.c
! 4c6d184f73f5e153ec2ec81680795e3f  gcc/cp/lambda.c
! 1b5fe425de21c6959e8fcf809a4d9bf0  gcc/cp/lang-specs.h
! 8b55a87f580d7fabcd05e1be8bf8678a  gcc/cp/lex.c
! 20341309f9f4bfc81d9c3baa9650fb94  gcc/cp/logic.cc
! 6a99efdedfd8cedb5d52696e6d3c69ca  gcc/cp/mangle.c
! e9bd33d0476c27e8dc7ae163523b0c43  gcc/cp/mapper-client.cc
! 7e088d81d8f48a2718ab084df953d006  gcc/cp/mapper-client.h
! e9215833b37c3eb15eca691a16a697c2  gcc/cp/mapper-resolver.cc
! b339223c7639666116d15108fa6521e1  gcc/cp/method.c
! b1525c556e713cc0fbcf3e3c3ba88fa1  gcc/cp/module.cc
! 5e460df0f03c90fb6be7c42a9f1be39f  gcc/cp/name-lookup.c
! 52ba207fa7ad048f1f1071286baa8328  gcc/cp/name-lookup.h
! 74ef5d5c783b19f58d24af2f5d586229  gcc/cp/operators.def
! 135e2526b78ff7fba60e97120acd13ce  gcc/cp/optimize.c
! 13be310652ff04725a680dd36ccfae7e  gcc/cp/parser.c
! 33e6205b133939ff76752369e76e776e  gcc/cp/parser.h
! f25f5aee6f03de2bcb40c6b6d8b7f794  gcc/cp/pt.c
! 185afe382f5cbb5102c5c681fca68144  gcc/cp/ptree.c
! bdab4ec23333cd272294d37c3c663a86  gcc/cp/rtti.c
! 8084016588b31c1e78c2f511f8f1fe23  gcc/cp/search.c
! b2f9dae073781456dff9d4c1ee2161e6  gcc/cp/semantics.c
! d4aa69f3c985960663723f3067246b55  gcc/cp/tree.c
! 7edfa58f1051f1f2f0f0b14381ef44a3  gcc/cp/type-utils.h
! e35bb5c0e0547d80c6262997e9566c08  gcc/cp/typeck.c
! b5d164dd463526f4016b112a20e058a0  gcc/cp/typeck2.c
! 2106dba4a8c689a23ae0c6ed874a57e3  gcc/cp/vtable-class-hierarchy.c
! a1dcb34fdd7a1dfb94f27bc0ac1a9306  gcc/cppbuiltin.c
! 26ece193a6d338989d1c337b7137c072  gcc/cppbuiltin.h
! 6e7d827a3ec222ae6ca62e9c22436e8a  gcc/cppdefault.c
! 35cd9b2cb53030bd2c74276e74b26538  gcc/cppdefault.h
! c57481c9317d4093e4f4c6cfbaa4139c  gcc/cprop.c
! 8453e4603f3a5d2e76b69d883c9bb4e9  gcc/cse.c
! a7c636b547b9582524b0bd62c6178487  gcc/cselib.c
! 857b8e6c3caa1a049b93761fde09419a  gcc/cselib.h
  1ded054093de910d9786c62bc4fe8cc6  gcc/cstamp-h.in
! 6ba156c77363148790cd222912e1711a  gcc/d/ChangeLog
  86f687c485111eedca2eb048294f957e  gcc/d/ChangeLog-2006
  70ed1c47fd9b3f5dd95055642ed79265  gcc/d/ChangeLog-2007
  a7090ab2dd83aa4f44823c17566b83ef  gcc/d/ChangeLog-2008
*************** bceb78f40e91b21668a604125812931c  gcc/d/
*** 4781,5123 ****
  6a5c0420caa0ca8a0670fcc6768ffad2  gcc/d/ChangeLog-2017
  d46228dde1a38d9a1d640d737074c7c6  gcc/d/ChangeLog-2018
  2bdf87680f3ebc496c728540c3e6d88a  gcc/d/ChangeLog-2019
! a24248ae4062800ab22eb699b5eaab39  gcc/d/Make-lang.in
  426254b45d40584d0597c63f3fd1f889  gcc/d/README.gcc
! a19568c9e376fa3deab3a175f14443a2  gcc/d/config-lang.in
! cd46a07008703f3011cf3fc599a24da1  gcc/d/d-attribs.cc
! 6367fad2ef849168bd280abc831f796e  gcc/d/d-builtins.cc
! 53b1fdfd8ddecfd40b30aea23cf1d23e  gcc/d/d-codegen.cc
! 836fe4104cb1f24171d5a819f8fa35e2  gcc/d/d-convert.cc
! 82503e77563d3ec8e545f2620cde0557  gcc/d/d-diagnostic.cc
! e827b9b6a1e1c0bd9a4813a84f17af9b  gcc/d/d-frontend.cc
! 6d4172dbc76a861d1c70b5a3061e128a  gcc/d/d-incpath.cc
! 32518f29f8ff7afd2e597aa60aecd9c1  gcc/d/d-lang.cc
! b09323f8c17afc822f365183b33e439e  gcc/d/d-longdouble.cc
! f42d8bfed669a3bec3e42184acae5aaf  gcc/d/d-spec.cc
! 1ff10fc29d25a993642906d95b7b87b4  gcc/d/d-system.h
! 309e4b64f0c8a14646510395413a3c23  gcc/d/d-target-def.h
! 5f7ca136b6ee5d5de5a023ef180fb31a  gcc/d/d-target.cc
! 190f70769a319f3e03954d38569386a9  gcc/d/d-target.def
! f6be21ab2346d2541839e048e3f4a06d  gcc/d/d-target.h
! 69794a5bb5ef563bb29567fef3ef24e3  gcc/d/d-tree.def
! 2013a43477769e0cde4d574630f8f779  gcc/d/d-tree.h
! aed520bf60d59379bd29dec4d0f54ed2  gcc/d/decl.cc
! bb43b09505bba37d2c084b519c8d89a5  gcc/d/dmd/MERGE
! 094ef829e65f40de6ff4b765b3ca0aba  gcc/d/dmd/access.c
! 1a1309d17942e7ece838aa8b9019864e  gcc/d/dmd/aggregate.h
! 11894ed29d3ac5c1a3ba241acbf5412e  gcc/d/dmd/aliasthis.c
! 011eee4b4d379cb77c5845582821d9f6  gcc/d/dmd/aliasthis.h
! d6700a03d223a79b39185f992082e587  gcc/d/dmd/apply.c
! eb3d7b4d26ca9e025ea9d6d0179576b6  gcc/d/dmd/arrayop.c
! 97612f1fe18fbbe3d451adede636905b  gcc/d/dmd/arraytypes.h
! 0739e196938d19a0416710b538d262e3  gcc/d/dmd/attrib.c
! eb1669eed7fced6e31215a0bbdaf1e42  gcc/d/dmd/attrib.h
! 9244c5239749c1cf53844cf043c07215  gcc/d/dmd/blockexit.c
  e4224ccaecb14d942c71d31bef20d78c  gcc/d/dmd/boostlicense.txt
! 329afb6c19991c957a705c8aa3168dcc  gcc/d/dmd/canthrow.c
! 71b2987c4c086034392d6cec93c5bc36  gcc/d/dmd/clone.c
! a08115f4884c22aade2c43474e78216e  gcc/d/dmd/compiler.h
! b3601d5b994054853b715fff03bad6ce  gcc/d/dmd/complex_t.h
! 37969409573cd5970e77e6bad5ce2616  gcc/d/dmd/cond.c
! 3743612ce9ac20ed2a1664625fdfccf1  gcc/d/dmd/cond.h
! 3fdd1677662d9a463525c79db213bf3d  gcc/d/dmd/constfold.c
! 246cd36a8335ddc3fe07c00f884ed3b3  gcc/d/dmd/cppmangle.c
! d6532d0f561d63f9672705445e9dde50  gcc/d/dmd/ctfe.h
! c662c55c8aae55d27e3b68a9aa38cba7  gcc/d/dmd/ctfeexpr.c
! b0076f51e79d7b18fff3eefe2add9c4f  gcc/d/dmd/dcast.c
! 34fbecfa46241805033c00dd7667ac24  gcc/d/dmd/dclass.c
! f961e06eea77022ef0afbf95788f8404  gcc/d/dmd/declaration.c
! 8d4dbbdd280a6e3b03147947ee2bd749  gcc/d/dmd/declaration.h
! 5a7c717f181ee24ab602f9840351150d  gcc/d/dmd/delegatize.c
! a49adabd6aa48af49bb679336a57d2d3  gcc/d/dmd/denum.c
! c8feb4a7b8143de030b53ba5295519ba  gcc/d/dmd/dimport.c
! ca29b4914c6fdc1a6c128670688384a8  gcc/d/dmd/dinterpret.c
! 7deff36a83845e52a8c9847a7cba9170  gcc/d/dmd/dmacro.c
! 37ba1a4108dbe079aea76894644b7c16  gcc/d/dmd/dmangle.c
! 4d37ecf79a73ea949e07baaa3fc2f9ed  gcc/d/dmd/dmodule.c
! 5f54189aedac12836f2df11a357e71af  gcc/d/dmd/doc.c
! 4c00886b8bdda30fdac7a78f434022c5  gcc/d/dmd/doc.h
! f0d136e0508bb5438759fe69ee7c32a9  gcc/d/dmd/dscope.c
! b50cfa47cb8fd1fbcd7cc384338a0e27  gcc/d/dmd/dstruct.c
! 329d1b917bd152f496bceca2f898a85a  gcc/d/dmd/dsymbol.c
! 8836427b763120a97169597daa2bfdc1  gcc/d/dmd/dsymbol.h
! 778bad9851a7685d3ec2ac088d7c659e  gcc/d/dmd/dtemplate.c
! f6c9f6a66f23e9acaa4952ef5df3c0b9  gcc/d/dmd/dversion.c
! f69a19e34a9f63afd02b76eb1b84cc68  gcc/d/dmd/entity.c
! c6f02113251e440cbb35240ec47dbb6f  gcc/d/dmd/enum.h
! b51bf064e22dde0a02049ba02cfc1c3b  gcc/d/dmd/errors.h
! 8966a99836d97acba39cd471926927c6  gcc/d/dmd/escape.c
! fa613b9334c70d6f828316e8ae0f45c7  gcc/d/dmd/expression.c
! e1c998286f9d3e7786e3deb044986d0a  gcc/d/dmd/expression.h
! 4f358bccc279a74caf798931d015ec0a  gcc/d/dmd/expressionsem.c
! 8ccd6562dee14a44a3b18f83de41c7e6  gcc/d/dmd/func.c
! aa8bdbd09e2a54e6a89ea90aaad8d409  gcc/d/dmd/globals.h
! 7dd635952261e678b949533d3d2abdc4  gcc/d/dmd/hdrgen.c
! 2a9c3a3fc7a48af7f0e406c439488e76  gcc/d/dmd/hdrgen.h
! 4ee59e36e45466c7afd2bc0f6d3547ab  gcc/d/dmd/iasm.c
! d9eee6e40d808d3db3e0d6b296221a0a  gcc/d/dmd/iasmgcc.c
! 8fa255ffb531c2721ee34986be4275ee  gcc/d/dmd/identifier.c
! 5ba05fa85520f3c178b4432d31d73163  gcc/d/dmd/identifier.h
! bfb38d49bd9956815b90dbcd2d3323bd  gcc/d/dmd/idgen.c
! 1fce24ed5769ea22b6d348bb658bda0a  gcc/d/dmd/impcnvgen.c
! 2343efd0e1148e1869616cf1f124f879  gcc/d/dmd/imphint.c
! 3cbe47f7dc4e663d9eff752fe7b235db  gcc/d/dmd/import.h
! a6154b8c32c4c05a19fa754b527f1a8c  gcc/d/dmd/init.c
! 4207c5be97bddde791583393d96eade8  gcc/d/dmd/init.h
! 2dc613762362afb19c2ffd558b83f3c7  gcc/d/dmd/initsem.c
! 1a8605bfe0b6e73b1cc9f90ee4496cbf  gcc/d/dmd/intrange.c
! 567b455d492c5d9cd1e3c49c62ff1481  gcc/d/dmd/intrange.h
! a784303cfc245133d757e0f076e3aa05  gcc/d/dmd/json.c
! 0874e54c3d5203ca513ecab7fcb155ec  gcc/d/dmd/json.h
! 8f758c5b4b93265dd9803fcb436ac882  gcc/d/dmd/lexer.c
! fbf4bf2243c8e7efcb849f07457b0422  gcc/d/dmd/lexer.h
! aa27fa9fcab046604292cc23e32920aa  gcc/d/dmd/macro.h
! 3a5e02b34a70c25dca7c038ede27c96f  gcc/d/dmd/mangle.h
! 24d743d1eec9c6f5c9f25e00ee87737e  gcc/d/dmd/mars.h
! 9ad7be3bd76dfa484f594eff9bca1692  gcc/d/dmd/module.h
! 0f9520a933eb9af07f9263685b46ae90  gcc/d/dmd/mtype.c
! eea7558ba165100d50774086716ea78f  gcc/d/dmd/mtype.h
! cb8d9d9bfab84ac59a0b018752f2f899  gcc/d/dmd/nogc.c
! 885902ace75746551ea90ae607e0ddf7  gcc/d/dmd/nspace.c
! 43d2025e893f24122becbb80566a1daf  gcc/d/dmd/nspace.h
! f5f2eb2223e6f90b6d90d09654bf406e  gcc/d/dmd/objc.c
! 76f0be8aa39ca81a768a3aa89b004bb5  gcc/d/dmd/objc.h
! 9d9f94c666b73069f7b3bfe65e61dfd5  gcc/d/dmd/opover.c
! 349679fed14ea55f3707017e2d577d0a  gcc/d/dmd/optimize.c
! e85b7f6977cfcada79da9448ec369ddf  gcc/d/dmd/parse.c
! 54bb68a95d94d6780ae2ea17457bbcfb  gcc/d/dmd/parse.h
  54ae5cbd9a68461db24a887f1116fd0f  gcc/d/dmd/readme.txt
! f0e9c7f0d76d8dcedee441ddaaf3672f  gcc/d/dmd/root/aav.c
! 107f8f50e7c6bae5c407b959d8288caf  gcc/d/dmd/root/aav.h
! 0236a3b68faa840e2f4c9a8cd26e6216  gcc/d/dmd/root/array.h
! fa0c72dd92064d021cd1e1bb28013259  gcc/d/dmd/root/checkedint.c
! 6078735073476dce81ff8f8b9d1e319c  gcc/d/dmd/root/checkedint.h
! 06db64e44b67fae24ea59a57492e54a5  gcc/d/dmd/root/ctfloat.h
! 0bf21bcfc4e86031ff8566ebea46fa34  gcc/d/dmd/root/dcompat.h
! beae8932858990e6690ced9631ccf03e  gcc/d/dmd/root/dsystem.h
! 8f85dc9d89054614ebd630b80b30aea3  gcc/d/dmd/root/file.c
! 7233783a2029abcf30eb6b59ddc94bb6  gcc/d/dmd/root/file.h
! 6fed484def2526d96b86d3bd581b26fd  gcc/d/dmd/root/filename.c
! f2ca037fa71bfea2e76dd3a789fd9247  gcc/d/dmd/root/filename.h
! ee7b4265119e47ed90eb90ee011f2761  gcc/d/dmd/root/hash.h
! ba8687ea2a9d3ab7e1d067863fc529e8  gcc/d/dmd/root/object.h
! 952f157e00a3e7ae1c725d5cac248333  gcc/d/dmd/root/outbuffer.c
! b22b547b64259bb5b9f7e7fb8ec9adfc  gcc/d/dmd/root/outbuffer.h
! 087becb386e1698c3a689f5be013fbba  gcc/d/dmd/root/port.h
! 1813ee84d381c2682cf670a3f62ccf9a  gcc/d/dmd/root/rmem.c
! c8ea90d5b998978f795ce5afb34b8c15  gcc/d/dmd/root/rmem.h
! 018008ba64954b0e59eed4dd2b1577cb  gcc/d/dmd/root/root.h
! eb73fecb7909599061c1cf38bf5c6fcf  gcc/d/dmd/root/rootobject.c
! 5b15a72df83798b14bf729cf902a16d8  gcc/d/dmd/root/speller.c
! d35dd34358834aa34681039e67814200  gcc/d/dmd/root/speller.h
! 12dbef52da3c69966d97898f0b2881b7  gcc/d/dmd/root/stringtable.c
! 8b9e14aedaddd8915c38d82eb5c392fa  gcc/d/dmd/root/stringtable.h
! 41aa4f7610f35b223651cc0657d5852e  gcc/d/dmd/safe.c
! 99bb2633b0c00509db40da97bdf145f0  gcc/d/dmd/sapply.c
! 48764bb43ad587cdfcdf6fd6fa500910  gcc/d/dmd/scope.h
! 1e4a863f5ae848d5a900ec7aed69c1f4  gcc/d/dmd/sideeffect.c
! af526917f0d6eb741050933b23b0f07c  gcc/d/dmd/statement.c
! 05bb54d47eb310546442020ae1f048fa  gcc/d/dmd/statement.h
! d0e33be98032ead2774fae5e88b4984b  gcc/d/dmd/statementsem.c
! fc3c63f7b78d3687cbab1e73aae55e32  gcc/d/dmd/staticassert.c
! 09ffba9fc16bea5afa1ea9f7651eadf8  gcc/d/dmd/staticassert.h
! 4ebaecbeb84a7fba49670de781cbd594  gcc/d/dmd/staticcond.c
! 16e26a80a54cd563c071648936b7514f  gcc/d/dmd/target.h
! c88403aa4fd8206f45ab332311a17b12  gcc/d/dmd/template.h
! 1ac2f028930ee11d977b93c12a3ec8f0  gcc/d/dmd/tokens.c
! ce919d86c112b2e7ddcc40d8fd3cf547  gcc/d/dmd/tokens.h
! d92b1926b74c692556a0ad954f4b6576  gcc/d/dmd/traits.c
! 03a3ccbc0c9909eb55b9c05c59d247cc  gcc/d/dmd/typesem.c
! f5d2efc5f08db02dabb55c961bbcefd8  gcc/d/dmd/utf.c
! b6b97848ff841c2ba786e35a155e7969  gcc/d/dmd/utf.h
! 892df329899d0581aea17c5742a9652a  gcc/d/dmd/utils.c
! a8f7c4f694d68924d68d98d7d2c17d09  gcc/d/dmd/version.h
! ee40ca13e71f17c1810a03367e9f8b1b  gcc/d/dmd/visitor.h
! 9b444b7c16e6c612b224128647a8ce78  gcc/d/expr.cc
! 68181946228b38dfb5d6fccf924382c4  gcc/d/gdc.texi
! a3c0cc319f091942f45eea92a6af41ff  gcc/d/imports.cc
! eba82f3bc8e120da884c4e286247b5ec  gcc/d/intrinsics.cc
! 0a8e8941af328b030e83d1e9cc0b9065  gcc/d/intrinsics.def
! fc37be5fab470b465ee72bc78fb30ee1  gcc/d/lang-specs.h
! a085b5c31a34e6c194c3108b96c1e203  gcc/d/lang.opt
! 5c54be0965988fdb2d1f8b03967519fd  gcc/d/longdouble.h
! 68484f70c484e6e0f6edd6ed23c6edaa  gcc/d/modules.cc
! 4cf8cc279a987b0fda776077fd53061f  gcc/d/runtime.cc
! 9c2b70944203746f17b8754ba2109510  gcc/d/runtime.def
! b860ba3324520aff7268d00ff5a3b2f4  gcc/d/toir.cc
! a2a98eaba38f1e875923c2593e78fa9b  gcc/d/typeinfo.cc
! 833a6b769ba1bb6f9756f95475c95a80  gcc/d/types.cc
  ffe6cb4083340e61aa80419c3ac2f84a  gcc/d/verstr.h
! 23255cea1662b0963ce7c3e1710e029a  gcc/data-streamer-in.c
! 0d6914c885d2d2663af7c555d5e975ba  gcc/data-streamer-out.c
! 2b861a2b885c17c8d6ae6325e42fcd16  gcc/data-streamer.c
! 081506946c05b494035cf52830bf27e5  gcc/data-streamer.h
! 6f23a94234a560fd589a27982ecf3f92  gcc/dbgcnt.c
! 0cba9499868fb6b31f4deb8815f9c3e3  gcc/dbgcnt.def
! c7d4ee2375dfed64f89c23a7a1677ddb  gcc/dbgcnt.h
! 4cc15e1a8bfae0edd68fa9289db25da9  gcc/dbxout.c
! b2c67555baa6589904606940767b23ff  gcc/dbxout.h
! 18cd06bfb8c326f55380a65d00cfb6f9  gcc/dce.c
! 435a31ff9e2aa0bd367221b75b0e15ec  gcc/dce.h
! 8faf97d5bbaf6a36d0005c3c87267744  gcc/ddg.c
! 59da2bc5ce55136bd8eabe9cc5f63b4b  gcc/ddg.h
! e9d9e05a0b6f8f15ba28ff3888380ed6  gcc/debug.c
! a1b2c00dcbd84be01801fd4b9198d223  gcc/debug.h
! cdfb0a811106ec043407542baf7936a3  gcc/defaults.h
! c82ea2db441f54fd5bed97fa5659ff40  gcc/df-core.c
! 0505a2edaae5dbd6fdd5fde586f42b9d  gcc/df-problems.c
! 329f23fc4ea106dc379b19c513c38c09  gcc/df-scan.c
! 771515ed74f6501ab163f711a8122827  gcc/df.h
! e282ae86679520c20d97d15c218fc57e  gcc/dfp.c
! 5c66f8f8f59916e4380cf315b42cacf9  gcc/dfp.h
! 877188ebcd9dcabec3f1ecbfdc22d8b8  gcc/diagnostic-color.c
! 016bbc25d43bb5852b3993cba4c12c61  gcc/diagnostic-color.h
! d2a80c190c3eb5a51be41e7c6b6b8c98  gcc/diagnostic-core.h
! cb505e5c822eeb700c7416410ca8e87a  gcc/diagnostic-event-id.h
! bbde7f6dd56b01db41f891eb358c53e8  gcc/diagnostic-format-json.cc
! dab35169857f9bb827138ab6affcbb60  gcc/diagnostic-metadata.h
! aade1173dd6f115b127877cefbb259fd  gcc/diagnostic-path.h
! e0f558a959c6fc5a17109fa644eb8104  gcc/diagnostic-show-locus.c
! 93bc0f7d061c0f4c02ccdfbd4382ce5b  gcc/diagnostic-url.h
! 5c1461d8d32c2917f28461ee07b64907  gcc/diagnostic.c
! f5f485db43d07ff9ade0011e703a75ea  gcc/diagnostic.def
! 5c35ab7611fa5dad5ee2839f7c0916c0  gcc/diagnostic.h
! c3d7796e8c490a7455f812daee526da0  gcc/digraph.cc
! 35880394731bee8378e32c7012d214d9  gcc/digraph.h
! d6b648d3482325c27264e0493bb0371c  gcc/doc/analyzer.texi
! 1fd1459991a7e73e3c31788a3814ce28  gcc/doc/avr-mmcu.texi
! 17fe8a85018171ca99286684039d7e8b  gcc/doc/bugreport.texi
! 7bf09b680cd0a57839b51545c0eb76c8  gcc/doc/cfg.texi
! c7ab0bb44231847f578570eaa3ce4dc4  gcc/doc/collect2.texi
! c18771821b3c0277be8874098ef0a496  gcc/doc/compat.texi
! 5f84df0b2b113dc51b31809fe2644a2a  gcc/doc/configfiles.texi
! 0aeda9bf1c0b3e2f6f82916a118096d8  gcc/doc/configterms.texi
! 591c43bd3e0acf5e1319e6a54b9797dd  gcc/doc/contrib.texi
! 9d45c807a3aa05e4129599f4144c79d3  gcc/doc/contribute.texi
! 1eb4129d4ffb7d5ff30477fd5d06e7a5  gcc/doc/cpp.1
! a68f36164d42cf40e5e1abdea67329c5  gcc/doc/cpp.info
! 47fad7d64be4d5d98cf8fbd106ca6595  gcc/doc/cpp.texi
! 0de35fd948c2d1bfadf0b56403bcd70c  gcc/doc/cppdiropts.texi
! ec4caf3825b9937f10f1dde42b534a68  gcc/doc/cppenv.texi
! 853cfd24195656e2b0cb2dc824537be0  gcc/doc/cppinternals.info
! c0d6abb8d561540b8519a01789ab20e4  gcc/doc/cppinternals.texi
! 1592fa0920a0202b757dece389015e3f  gcc/doc/cppopts.texi
! 314fc175d338403fc1a2d890f6f325b7  gcc/doc/cppwarnopts.texi
! 9374d5087265c05334980b795fa72ac7  gcc/doc/extend.texi
! 470b981de977916fd30c8a64c80b7fde  gcc/doc/fragments.texi
! 20adbdf5bf9edc8cb6efd4a9cfc1a5c8  gcc/doc/frontends.texi
! b0b9d8ae777757595b4688386eb6679a  gcc/doc/fsf-funding.7
! a8d28af5c3cc98ae55ec28263d75d724  gcc/doc/g++.1
! a8d28af5c3cc98ae55ec28263d75d724  gcc/doc/gcc.1
! ba5d55ac7b472ec8db993c85d12215e2  gcc/doc/gcc.info
! 7a4d49e66462ecaddb8c3d35a4be3ce7  gcc/doc/gcc.texi
! d61ab40e3392add707f6249a3c2092b6  gcc/doc/gccinstall.info
! 30b5380d3dbb5ebb1451a14563e794c7  gcc/doc/gccint.info
! 4c3bb0ef5f4f8fd8a877cebf249596fa  gcc/doc/gccint.texi
! e0a0204abbcc7a5a3c65e7276ed87775  gcc/doc/gcov-dump.1
! d0a4d191b48a6c48c8e5d1d6673aca45  gcc/doc/gcov-dump.texi
! b40862df89491d53c495ca5cea39e698  gcc/doc/gcov-tool.1
! 51792fbbdc63c819a9ca77e38c002af9  gcc/doc/gcov-tool.texi
! ee04364302d651111c2bee101ab4f434  gcc/doc/gcov.1
! 7b5042f630659261fc8686377fa6b034  gcc/doc/gcov.texi
! e92265395b7daf7dc7ce05d3ec64a376  gcc/doc/generic.texi
! de261b2cf5540422f2a5db8b3d22ce62  gcc/doc/gfdl.7
! 0e5c5b0a49d7d5d8f9d78c598e7b35d2  gcc/doc/gfortran.1
! af5c4e3c5b6e9491191874ab81bae52b  gcc/doc/gimple.texi
  290370669f02bef1502ada9273e5261f  gcc/doc/gnu.texi
! 6ed08ba8d7ef3218c5e3ff79c34b41f5  gcc/doc/gpl.7
! 7cdd885d331cff4af22305f97d7c2f90  gcc/doc/gty.texi
! 791902062ac528ae5e40ab627fddda4a  gcc/doc/headerdirs.texi
! 5965b4c8e9b7704d12a73ce2dd213ed5  gcc/doc/hostconfig.texi
! b02684d211c0e12e8729292abc354999  gcc/doc/implement-c.texi
! f0a1721965b52f8af1bf18421f80a1cd  gcc/doc/implement-cxx.texi
  b82b1143f78f373e3c76f6958d830869  gcc/doc/include/fdl.texi
  8787976f426cd52da24a856cd41d87be  gcc/doc/include/funding.texi
! 0cc7996727c2ad1f7c433474788eb980  gcc/doc/include/gcc-common.texi
  b6389c8331319f90193f11ac084e86e4  gcc/doc/include/gpl_v3.texi
  73819b3930a3d4be5d6234070d02386a  gcc/doc/include/texinfo.tex
! 67f7627681f57b4da56093b89cbb81a3  gcc/doc/install-old.texi
! 507e662d273e2f473df8eab2b62c0212  gcc/doc/install.texi
! 7a4b82d3eebd4858aa30fe0f4404d548  gcc/doc/install.texi2html
! 31edfbf55a9d3df130c88d68f0169c39  gcc/doc/interface.texi
! bb84b689d5f2b4b7e04051d27cc528e6  gcc/doc/invoke.texi
! 3a49345ce16cd33f59d6cf7e0ee815ab  gcc/doc/languages.texi
! 268b9397afea988eadd93ce81b1bb9a2  gcc/doc/libgcc.texi
! e02b5aa8f429c0957c133e264c9dc3ec  gcc/doc/loop.texi
! 342f196d219eec9bcd005d096487ce48  gcc/doc/lto-dump.1
! b99bd8da5b02b02634f7d9a942ffbe71  gcc/doc/lto-dump.texi
! f18a876be44fd2b5c38b7c10dcf2bc94  gcc/doc/lto.texi
! a8f68d3e6eec459c1c1d361c337737a3  gcc/doc/makefile.texi
! c2fbe695637d5a60c4c93d3b087f787c  gcc/doc/match-and-simplify.texi
! fe19c9e22f8f360c68c5f8dadfb6a0a2  gcc/doc/md.texi
! 96c0f3c8b6eb6dec256fab41ebcb6940  gcc/doc/objc.texi
! 96829850d23c2a1afd0b6602e04af34d  gcc/doc/optinfo.texi
! e83c93b65129f543360b733215ff372e  gcc/doc/options.texi
! a494bd0055c6b948ccee9f92a1465983  gcc/doc/passes.texi
! c8cddba054facb64016d208fa5f6cee0  gcc/doc/plugins.texi
  0603ab3940871fa2a55ddbd7c2719eb7  gcc/doc/poly-int.texi
! ad9645d6c4b09dcccdbd6c29369ab018  gcc/doc/portability.texi
! 474fab6f0ffc4d3c4d47c5899a77c2ff  gcc/doc/rtl.texi
! e93d1c976693b8f2c62a65d0f0d4fd59  gcc/doc/service.texi
! 15b657d5a52b2aa1de21bb9c4499bf9d  gcc/doc/sourcebuild.texi
! 83f77099f0e2da567afa1db2d4aa019a  gcc/doc/standards.texi
! bcc6572b23a052ebc2e186ec4a5a8671  gcc/doc/tm.texi
! dc581a5117c71fbc7421597aaee23164  gcc/doc/tm.texi.in
! be339fb0cf01bb799a3f37e28806bcc9  gcc/doc/tree-ssa.texi
! 22918ac595134457b6332deb61368a06  gcc/doc/trouble.texi
! f10e623abba8dc994d37054d758954c8  gcc/doc/ux.texi
! 276e18f1d0320ec1bdba0ddf86ecae5e  gcc/dojump.c
! d65a7bcd57c757755933c045255522cc  gcc/dojump.h
! e911cf106df06a7f8a07a872c183a8d8  gcc/dominance.c
! d9946b8965ca229b280652f12b9dab87  gcc/dominance.h
! 1b18eb5f217a8e112f186a01c70d3690  gcc/domwalk.c
! 83abd26c71936a6759e8808b71197115  gcc/domwalk.h
! 1e9816cb4a810b19ef22718afbeec7c8  gcc/double-int.c
! b0fe848c6de3272f77738d74b1edb83b  gcc/double-int.h
! 423c68a59ec57d97d5d0a1559d5fc431  gcc/dse.c
! 6bde9d4a9aa963bd53323ec1b94f383a  gcc/dump-context.h
! b9bc3242c68d8a7bd8a08ddebe9e5632  gcc/dumpfile.c
! 656e63928359881a05a37f3d0a7e9df8  gcc/dumpfile.h
! e5a1ef097d8d0890346bf3c6741e17ed  gcc/dwarf2asm.c
! 2a9be6ccac90aaf4e0e0d339effc65a5  gcc/dwarf2asm.h
! e09de3e0f1007de61eebb01cabb81846  gcc/dwarf2cfi.c
! 980fbd917f1d648495728e44814554e8  gcc/dwarf2out.c
! 56e7493de2306d771426d08c953ba38f  gcc/dwarf2out.h
! e6300fda4482943609922a8ada0055ba  gcc/early-remat.c
! acd39cd487582156a31695fa0540491a  gcc/edit-context.c
! 86a7830502c4192323bdc9712d3866f5  gcc/edit-context.h
! 331389a1dd0917f3aaa097f3f1ea9f9d  gcc/emit-rtl.c
! 32636560259bd68a4dcfc268907b98f6  gcc/emit-rtl.h
! 1599b8f61bfe954037be2b7318a44122  gcc/errors.c
! be4b862f1488d8a23c64b9b34a3a9449  gcc/errors.h
! cdea5e1cf5cd4c15744cba55826fc9ed  gcc/escaped_string.h
! ecbdc29ba9b602eb5e55c1523296777a  gcc/et-forest.c
! d408aef16c3bfb7b86cef637feac8745  gcc/et-forest.h
! 241dffa213208d61454b129b72b68d26  gcc/except.c
! c6370f22bbfcbcb87187c92f76076171  gcc/except.h
! e5ca1c392b78812e6cf88944b72bf4c9  gcc/exec-tool.in
! 2df040e1b08c855994fe954aaac6b1c7  gcc/explow.c
! 8c8476ba0f61914dffce238540c59b95  gcc/explow.h
! 53f1e20ea7ce2aebb5c2a79aba3b6207  gcc/expmed.c
! 5e0174392e3f3a8cc0a63391e02aa772  gcc/expmed.h
! b3f480ff9fd14424d47186e1a4f24840  gcc/expr.c
! 39274814d6e8332f62ce66e987da6dcd  gcc/expr.h
! a89ff289b70e8fa646431a2b2cd439d3  gcc/fibonacci_heap.c
! 9bcdbc3fe605cab6b77a06f781d4a583  gcc/fibonacci_heap.h
! 72d69df2a7342dacf3a28da06ec7fd9e  gcc/file-find.c
! 3a0ed947855546c492e4b676d0eb63c2  gcc/file-find.h
! 2fe15f555cf7ccad77b34664a7d23e2c  gcc/file-prefix-map.c
! 18c93bbee2db27ce4ba55e889fb70e24  gcc/file-prefix-map.h
! 6669822d4a81f35390411b5eb0f1c7fb  gcc/final.c
! 7b558697758efc7082fea137d4806ccd  gcc/fixed-value.c
! c7818ea72561a6c3ef3613f1f94eef57  gcc/fixed-value.h
! 853a15166bd8b0611fff2a2838e5572c  gcc/flag-types.h
! 2ba3f19d1d4d27e75495303b9c20747e  gcc/flags.h
! 8111a2f80dd9f60a732dad3f26e81e97  gcc/fold-const-call.c
! 16906a527f09ac9bf549f3acfa4223cd  gcc/fold-const-call.h
! fd7ac0ac119fb78f18c4baccccd61e50  gcc/fold-const.c
! abc79786bf3632dfb6fbaa4020b7260a  gcc/fold-const.h
! 772aa6c6a37e8c7dac96b1073a322534  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
--- 5129,5484 ----
  6a5c0420caa0ca8a0670fcc6768ffad2  gcc/d/ChangeLog-2017
  d46228dde1a38d9a1d640d737074c7c6  gcc/d/ChangeLog-2018
  2bdf87680f3ebc496c728540c3e6d88a  gcc/d/ChangeLog-2019
! e432bfc5c605ae0b1beedf0492ad40d1  gcc/d/ChangeLog-2020
! 6898d1f79bb53b436f3709b6ff681517  gcc/d/Make-lang.in
  426254b45d40584d0597c63f3fd1f889  gcc/d/README.gcc
! c828f621dae15ecdebcb6483cc2a359a  gcc/d/config-lang.in
! 3c42dd5aa2e4e648942c684e41796bdf  gcc/d/d-attribs.cc
! 32f089ccc19997cf8fe98a15c5662e70  gcc/d/d-builtins.cc
! 993597c4f9ba6f8210d937d7f21f3090  gcc/d/d-codegen.cc
! 75ceab1f211190aa8a607de211d92550  gcc/d/d-compiler.cc
! 82b1072428e1e4a69e409bb4e3af67a5  gcc/d/d-convert.cc
! c68cc8b289e0bed7991d8ba214514b52  gcc/d/d-ctfloat.cc
! 96e81ac3898e23a215821a9ca3faac03  gcc/d/d-diagnostic.cc
! 09192172a5a79210fa72e7fb89a15d5a  gcc/d/d-frontend.cc
! 0410f105b76530dc8ba9c7328b5a0b73  gcc/d/d-gimplify.cc
! 47fd25e95ab17fd0c598380f4dcf775e  gcc/d/d-incpath.cc
! 8bd015b1113b59d5dd51fbe30bc3d191  gcc/d/d-lang.cc
! 4caed6522470a27c7bc55349d4e41997  gcc/d/d-longdouble.cc
! a80cf667b6cde2503c142172b86d4a32  gcc/d/d-port.cc
! 1d2f02a991ef8c5867e8d8bce66baea5  gcc/d/d-spec.cc
! 5a2b9ffbe1b7e05aae3752561c81df38  gcc/d/d-system.h
! 269cf45854f0a7573a9c0fee24922f96  gcc/d/d-target-def.h
! 47901d67a22e6cb06354d26f256b1f44  gcc/d/d-target.cc
! e510e0920097f33c1584945cb08e080f  gcc/d/d-target.def
! bd403a5022b9229546c86481f8f9b61e  gcc/d/d-target.h
! 03f0da7679723f02dabef26c57f6b354  gcc/d/d-tree.def
! 9600777cf46c86c9c4f80b0554b654d1  gcc/d/d-tree.h
! 9fb8e724c04c912b1230d8f6fbcb2083  gcc/d/decl.cc
! 3b33e14d54fdeb23eedefb85531d96d9  gcc/d/dmd/MERGE
! 56e5dec62f6a10592384f715f378eef0  gcc/d/dmd/access.c
! 3791d70488bc98342964c686b935b89c  gcc/d/dmd/aggregate.h
! eece32d82156ad5d3988556db9b81f03  gcc/d/dmd/aliasthis.c
! aac81d65f76195316f543667e7745353  gcc/d/dmd/aliasthis.h
! 3ad72c8100aa1dfde82f71857be1971d  gcc/d/dmd/apply.c
! 250076790cfd255b1605b9d7b2129d24  gcc/d/dmd/arrayop.c
! 2c30fc9c278a1f7224273b010c555d77  gcc/d/dmd/arraytypes.h
! 8ff2e360969b815af63ecfebbbca7ef6  gcc/d/dmd/ast_node.h
! e62ac10cab814f6974cf5fc5279c63cb  gcc/d/dmd/attrib.c
! 13d1a3c27646b56ee5b82a61e608a55b  gcc/d/dmd/attrib.h
! 36d4aa9dea4b358f5661dce717f0991c  gcc/d/dmd/blockexit.c
  e4224ccaecb14d942c71d31bef20d78c  gcc/d/dmd/boostlicense.txt
! a51ed07f5da186d65847749167e82c0e  gcc/d/dmd/canthrow.c
! ae717399fd26f7747a58c12390bc9014  gcc/d/dmd/chkformat.c
! 5e28d0ededd7e4af10c1aff346014852  gcc/d/dmd/clone.c
! d05f10bcb9ba460086b710ba23400fb3  gcc/d/dmd/compiler.h
! 40cd3a2487d04f502dd3425f131c26e9  gcc/d/dmd/complex_t.h
! cfa088396fc34937bb0d815cb916890e  gcc/d/dmd/cond.c
! 5542a5ec234264dd4893910c9fa95200  gcc/d/dmd/cond.h
! 64bbdcaeea500396e82b7395d8e9b627  gcc/d/dmd/constfold.c
! 5328bd316bae93daf3c0c8353e1a5be7  gcc/d/dmd/cppmangle.c
! 50a4587df5508c17ec0ba64e907e6c2a  gcc/d/dmd/ctfe.h
! 52d369590e7009570bb88a39be30427c  gcc/d/dmd/ctfeexpr.c
! 0ec22f74a330e8f376f81bbaf6201ecd  gcc/d/dmd/dcast.c
! a7638e93d90f022b82f6ec861081f2da  gcc/d/dmd/dclass.c
! d33b24b30e8e31a17e3a7e39f3c67bdd  gcc/d/dmd/declaration.c
! d23cee2b9d07116997cebcb46669827a  gcc/d/dmd/declaration.h
! 20e6433cd9095919b4a2bee01595a9b6  gcc/d/dmd/delegatize.c
! 8fe999fa3cb1a5480c72d74362fe5584  gcc/d/dmd/denum.c
! bda548f1854f17362b4dc956996b72c1  gcc/d/dmd/dimport.c
! 7476164fdd79d9abae245d95c68d40db  gcc/d/dmd/dinterpret.c
! 26be8934a4c84e87ab8c06032f54f67d  gcc/d/dmd/dmacro.c
! ae3f5303a6957010e3af61bcd0b976b7  gcc/d/dmd/dmangle.c
! f48ad9578476ae3893dd5a8ae3267e33  gcc/d/dmd/dmodule.c
! 8bd7d5710183f8ba15b7341ad7bd4fbf  gcc/d/dmd/doc.c
! de792e1d70eaba27ca84765b28a15659  gcc/d/dmd/doc.h
! 0b50a9fdfb5fb7e542fc9e30badb24b3  gcc/d/dmd/dscope.c
! 7372f6ae79a6b90d79cfe3858dfed2b3  gcc/d/dmd/dstruct.c
! 9c78611a204489bd89ab19b28315f022  gcc/d/dmd/dsymbol.c
! b0cd857fd633fe19b72db3c598608fe4  gcc/d/dmd/dsymbol.h
! e6e9f96fc7ad7b74acb4d37576ac84c7  gcc/d/dmd/dsymbolsem.c
! d5b34f72fef968b37217c531947bc6ba  gcc/d/dmd/dtemplate.c
! 7788cc23e060465e5ffdea72fe9c35fb  gcc/d/dmd/dversion.c
! 65a1534ca37e92d9491ddc791ef238ad  gcc/d/dmd/entity.c
! 660ab05c0f664d6f7e48fecd034297ba  gcc/d/dmd/enum.h
! dda2e57e23eed0e5d751a553fb16d446  gcc/d/dmd/errors.h
! 577fa35cc9a9391c0626f6c86b7ff946  gcc/d/dmd/escape.c
! 3be1dba0ba0485b5e466d6f65220c240  gcc/d/dmd/expression.c
! 11feb2ecd1b2bb9a12253457534dd5cd  gcc/d/dmd/expression.h
! 57e89e9282fbe7f6b030678889c18c67  gcc/d/dmd/expressionsem.c
! 7f44497a182abfa3fb9dc8a2759f0f64  gcc/d/dmd/func.c
! 584c6d25fe0605ec4df673034ed70a09  gcc/d/dmd/globals.h
! 7a04a18c4e7fb560860651d33c970846  gcc/d/dmd/hdrgen.c
! 6827ec6203f1ff8ee8a4ead7512ca7f9  gcc/d/dmd/hdrgen.h
! 2a7b6b9623967d706691446d7c1dc41d  gcc/d/dmd/iasm.c
! a5dbb319611f0a3c62dcebc7aadf230f  gcc/d/dmd/iasmgcc.c
! cbacd4f4d6e27f73e37acead4efdbd70  gcc/d/dmd/identifier.c
! 9a70fe04d8c53782624c99772b05e45b  gcc/d/dmd/identifier.h
! cbc616d68690aabfd8e9a91a5080c4e9  gcc/d/dmd/idgen.c
! 2d05de281e3adf429a6392f0af1321fc  gcc/d/dmd/impcnvgen.c
! 4d688f7e97853fa9c349972eac4abc2b  gcc/d/dmd/imphint.c
! d9d91393b7bc325a70d4a1fc10c5d583  gcc/d/dmd/import.h
! 467015546b2641171ac4c37e30ae76c6  gcc/d/dmd/init.c
! 31ea11155d85df5187943a831a57c2ce  gcc/d/dmd/init.h
! 1450e4c864680e7cdbd2094992289f9e  gcc/d/dmd/initsem.c
! 95c0af3370fb30aa3374ffcaa509f58e  gcc/d/dmd/intrange.c
! 9365b5e4e7a32dfacf12451d68fdc3de  gcc/d/dmd/intrange.h
! 0e6647ca35c8d43705fb29b09ff6562d  gcc/d/dmd/json.c
! 48bdf804491036bffbcbc26be6a4800f  gcc/d/dmd/json.h
! b084a971a8b6a96c616331bd416fc88c  gcc/d/dmd/lexer.c
! d57595937258e947361ea999c0db9692  gcc/d/dmd/lexer.h
! 7f3e76171e1fda79b3bdfbbe3724b3c4  gcc/d/dmd/macro.h
! 85372a43a93b7459bce42818377dd5a9  gcc/d/dmd/mangle.h
! 92fb8f6e169ab24b2f6710cb36fae5e4  gcc/d/dmd/mars.h
! 26a6be934d8259bef0d27b7d681559b3  gcc/d/dmd/module.h
! 93a84c3cd503c344db20367251a7d971  gcc/d/dmd/mtype.c
! f89d40d7ae1dfd6c020cf5f1cfc3cefe  gcc/d/dmd/mtype.h
! 820182635d7ecd2a4891f7785361a3cb  gcc/d/dmd/nogc.c
! 1d367eb0929de9e9b942aee4c5a5c337  gcc/d/dmd/nspace.c
! c81b419170ba590d04d056b044a9a441  gcc/d/dmd/nspace.h
! 23d5c690adfa7d3418f4a33c60905e6d  gcc/d/dmd/objc.c
! 6da314d908369af759772f7e21920b5e  gcc/d/dmd/objc.h
! 505c499e034ba9fe8810721419e11478  gcc/d/dmd/opover.c
! 7f68302b9c0b9920fde3d09d6b171f9b  gcc/d/dmd/optimize.c
! 8b1e6fd6581e22f193e34580297c9740  gcc/d/dmd/parse.c
! 3372a096b210843296205e4680374675  gcc/d/dmd/parse.h
  54ae5cbd9a68461db24a887f1116fd0f  gcc/d/dmd/readme.txt
! 12df853a0cbc6d057158ed8dcbe25627  gcc/d/dmd/root/aav.c
! 2a230c532cde4b972c6c04e56d197d4c  gcc/d/dmd/root/aav.h
! 84fbb43a2e729c56030cbb7f7b8af4b1  gcc/d/dmd/root/array.h
! 4e8d69d5088aa0cdd6b69948adb9f6d0  gcc/d/dmd/root/bitarray.h
! 092236c0d831e050e416ef1158a7d2cb  gcc/d/dmd/root/checkedint.c
! 6e0d0dc01930ab7dfec2b515706f63ef  gcc/d/dmd/root/checkedint.h
! 65925481fc2951740b1bfe23a332f5cb  gcc/d/dmd/root/ctfloat.h
! 92a8f63d3d96314a39668f6d0ab8febb  gcc/d/dmd/root/dcompat.h
! 2bee808b731d6d94f5a152b27bde91c2  gcc/d/dmd/root/dsystem.h
! cbb5a236c04e6434c7ee08f6d04812fe  gcc/d/dmd/root/file.c
! e4b4bbefed670be811f0369b96d41bba  gcc/d/dmd/root/file.h
! 9a84dc36ffce09b8f3c5b43ff00949d4  gcc/d/dmd/root/filename.c
! 81cc03fcc64679de51adbcbad835a6dd  gcc/d/dmd/root/filename.h
! 00c2a4b8c9fb2e110fd3b09f97727ba2  gcc/d/dmd/root/hash.h
! 836f51b44e4b3c53053ef5d5bf260171  gcc/d/dmd/root/object.h
! a859585d0aff7d03977e3ddd2a180de0  gcc/d/dmd/root/outbuffer.c
! b2ca031327dddfda2c363d801b1ca5f5  gcc/d/dmd/root/outbuffer.h
! 12b9b1920b7cfdaf05c46bb9ea8ce0a4  gcc/d/dmd/root/port.h
! 10e565189a97623df667a8f6f137f1b8  gcc/d/dmd/root/rmem.c
! 4b0c75dbba6e2c81d9d1c8d2911928e7  gcc/d/dmd/root/rmem.h
! 367e670a7324fb4ed8f2adb5b5aadb55  gcc/d/dmd/root/root.h
! 29ad53c6ec4d5aca722b5cf9af394530  gcc/d/dmd/root/rootobject.c
! 76514edd997faf1d4c36f6e899eae972  gcc/d/dmd/root/speller.c
! 2c3c03cbd6f1d3e4f29f90b35477eedb  gcc/d/dmd/root/speller.h
! 4d2c821a6538d45de565c4e0208f5eba  gcc/d/dmd/root/stringtable.c
! 50dd5f59f01133df1de293656686cc0d  gcc/d/dmd/root/stringtable.h
! f480d6504f04aae8a00702230b8f3ad4  gcc/d/dmd/safe.c
! d2617f94be8000960e01a4663dc214d7  gcc/d/dmd/sapply.c
! 957a867c3cd95771d5fa94c813bf6d51  gcc/d/dmd/scope.h
! 318a596d46dc5308e62921eb7801489b  gcc/d/dmd/semantic2.c
! 562d041710d78f335e24018054b15299  gcc/d/dmd/semantic3.c
! 5963ebbbb918bc178d2ff35e0e4cf141  gcc/d/dmd/sideeffect.c
! 8c0befb9b471533fd7d890e0c19e45b9  gcc/d/dmd/statement.c
! 0f1b528d9e383870af5eb8eb5b24fe81  gcc/d/dmd/statement.h
! 6a6ee7b71e2824249d9d3c1c5af9d397  gcc/d/dmd/statement_rewrite_walker.h
! 4d9900051b7a4bb8e7f1233f165776cc  gcc/d/dmd/statementsem.c
! 641aa7d7d8feacbca554d10e49c0ef53  gcc/d/dmd/staticassert.c
! 2ce7bef5338431cd8b7012cd98d75b3c  gcc/d/dmd/staticassert.h
! 58e2a84abe6eaaa7c3217f7780afac41  gcc/d/dmd/staticcond.c
! 2f1fd2714b537e805114a3229e7cdf06  gcc/d/dmd/target.h
! 487f8c23d8d5281f408fad4dbe6689ab  gcc/d/dmd/template.h
! 8eb47cb9e9818109fe6e591d274d7488  gcc/d/dmd/templateparamsem.c
! b5aec8792fe3feebbe9c1aea617e25f7  gcc/d/dmd/tokens.c
! f84fae1a61c553e9207c6f16383a3c8c  gcc/d/dmd/tokens.h
! 7466ed4162908a8c753b05437a185a24  gcc/d/dmd/traits.c
! df2a78f5b00debf6e042e43602e9d42c  gcc/d/dmd/typesem.c
! 722c7e5c7787cc94bd446dabfd0ae0d9  gcc/d/dmd/utf.c
! 2a8e6c6a0addccab2f6c3aea1e6cf238  gcc/d/dmd/utf.h
! 24197b380374c982964e1ded75baa656  gcc/d/dmd/utils.c
! 4f4d6813c8ea201f84a5a083a752c723  gcc/d/dmd/version.h
! 0ab1d21cbddf7956fc552e2637e36eb7  gcc/d/dmd/visitor.h
! e8bece7f1e0fceb464ddd8ffe335d553  gcc/d/expr.cc
! b12d8cdbe556dcc8f51b72d45078d563  gcc/d/gdc.texi
! 4ef002e6f38a41b929d9fb7ee2d7d853  gcc/d/imports.cc
! fd28164e92119c746c3971d13fd80699  gcc/d/intrinsics.cc
! 4fe7ce256ef44a3d0fae8336b3d3ed5d  gcc/d/intrinsics.def
! d86483b35c844004766bacbcd21e16ed  gcc/d/lang-specs.h
! dcd9f842c89c2eb8cda2d4e66cfd3a75  gcc/d/lang.opt
! 012a2404a4bf3adc2e1e37947bf01902  gcc/d/longdouble.h
! ea64a4d9552ea8f63780ef71e40ad1cc  gcc/d/modules.cc
! 920201a2a1193fcf0af779565d49ea5d  gcc/d/runtime.cc
! fb778fcb2c41447123e9fc33e23ee981  gcc/d/runtime.def
! ae989ab42b7ea7dde3347e42e5cc28c2  gcc/d/toir.cc
! 8b888dc2ba6cceaff399e78b43e887df  gcc/d/typeinfo.cc
! 5044f1a2a7c0d860d5f118453582b445  gcc/d/types.cc
  ffe6cb4083340e61aa80419c3ac2f84a  gcc/d/verstr.h
! 888f179fbed34dff2cb09f3941f28b3f  gcc/data-streamer-in.c
! bdbe70f8cb140083bbbf06e081f01c55  gcc/data-streamer-out.c
! 16f31b8f1dc7e405518ffebe98f7e39d  gcc/data-streamer.c
! d4d423c0ee3b1e4dcb2c1a57c6f07f0e  gcc/data-streamer.h
! 2ba4b3127094fe9811396e325a5b1e7f  gcc/dbgcnt.c
! 0082072c379913b8e78bdc4214d4ff32  gcc/dbgcnt.def
! 55eaeb62341ca00152e00e7df912317e  gcc/dbgcnt.h
! ed7e3e91446674e4868921e79d3db943  gcc/dbxout.c
! 233b74ba843a379d2b893c010b7bcd2b  gcc/dbxout.h
! 51f20e6dda3d9b8802f5f4d6b1aa5edb  gcc/dce.c
! f04393d6cb3beb8b2a1666d322412d81  gcc/dce.h
! e7ee33ea43a39261fa7fb53cbe532985  gcc/ddg.c
! 0c28d2b61e807cd6c77dd86ad2aee337  gcc/ddg.h
! 358d4f0925f3781c284139e085a43119  gcc/debug.c
! 85a8e4f9dce37242af74a0eccac95d68  gcc/debug.h
! c3f1bea532ad148b97392cd37536943f  gcc/defaults.h
! 78f1f6b9bc278d026982087b11acbb30  gcc/df-core.c
! b6af87c075b8eed58a3bce50a1f7d7ad  gcc/df-problems.c
! 85ab5e157b541546e9db627c1c346bf0  gcc/df-scan.c
! 6c24eea69becc41cb923f65e7276e2d1  gcc/df.h
! 361d7ab2ccda0310c21f287c644b8bca  gcc/dfp.c
! 1af308648d69dc7ed2dcd7eabb379bba  gcc/dfp.h
! ae430a63bfbf8542739c3e61f175b3e7  gcc/diagnostic-color.c
! 72fd0c6450ff590ba12b5a8d55062758  gcc/diagnostic-color.h
! dd28f99406cc56aa197b33e9367dbcb7  gcc/diagnostic-core.h
! 1a211d546c70dfcb742c50b45748c27a  gcc/diagnostic-event-id.h
! a6c1b7e5dddc21d94ace4b61d80162a1  gcc/diagnostic-format-json.cc
! 0eeb8a323ec4d6ebd8d0fab8f8078815  gcc/diagnostic-metadata.h
! e817216f3e948be28b9ad1adad6b0615  gcc/diagnostic-path.h
! dcbbaf4ec5bb2746a9604773207969f7  gcc/diagnostic-show-locus.c
! bab3b6fb291c363f78f9ee199e93845a  gcc/diagnostic-url.h
! a60d3b2dcb5f7ad6ac9493f3c600ef76  gcc/diagnostic.c
! 68b312055a870807ee88155e23203ecf  gcc/diagnostic.def
! 2e2faeaaeb8de2147afa0fa5a0723bbc  gcc/diagnostic.h
! 7216b81308a9d590c289dd4cbb71fe6e  gcc/digraph.cc
! 2e73066d8b4ea02ee4d898818dcc1a54  gcc/digraph.h
! 5891833a36e5bd03bd93933e157f18b8  gcc/doc/analyzer.texi
! 196cec6ad9da5c01b63fc1d3d16f3fca  gcc/doc/avr-mmcu.texi
! 37449e85605dd6949a6b283a189a76da  gcc/doc/bugreport.texi
! e5f7c3bb5a62582c943f557cd1c728dc  gcc/doc/cfg.texi
! 36ecd212a288a1cf26e92ece84e21417  gcc/doc/collect2.texi
! d3f48eb6291337b70a8663fea43c5e35  gcc/doc/compat.texi
! 2fab6c33298f75dbf038a0697460e8d6  gcc/doc/configfiles.texi
! 218582d80c3a5be7ef0215bc9e37347d  gcc/doc/configterms.texi
! 3f7bc37ecd638efa9217dbc8049586bd  gcc/doc/contrib.texi
! 21f4ebe254eeaf839f14e76f6d98e0f3  gcc/doc/contribute.texi
! a7ea0bb8d4e9cdb003d702f3493d02f9  gcc/doc/cpp.1
! 9d3f4012d1f518c1e0d61a6fd579f357  gcc/doc/cpp.info
! 5e57810b75ccdf527751bf17e1fbd7e2  gcc/doc/cpp.texi
! 9fdf410cbb02057509020001009b7a76  gcc/doc/cppdiropts.texi
! dab6d92d04827098dfeb7e47e827f2b5  gcc/doc/cppenv.texi
! 8722a4efd4cd2f38e670e42bdc490144  gcc/doc/cppinternals.info
! 5d6d94ebaaee9c663ccd7de2d90928cb  gcc/doc/cppinternals.texi
! 0b1d4f633c271ebe3278233e58d2dd20  gcc/doc/cppopts.texi
! 5e580ffce6393e71cea1d0f253c2235e  gcc/doc/cppwarnopts.texi
! c033f9650b896dcf3329f7201b6d71ef  gcc/doc/extend.texi
! 25e9d455e6d1bd64d661a3b9b7c760d1  gcc/doc/fragments.texi
! b286e11fcfd62c37fae56d6d6c31d1fe  gcc/doc/frontends.texi
! 576a749854b0fe636b7d0da8ab0e02cc  gcc/doc/fsf-funding.7
! 561f1916a8b54c7d8a5e99fbd0900980  gcc/doc/g++.1
! 561f1916a8b54c7d8a5e99fbd0900980  gcc/doc/gcc.1
! fb0980437d537706bec5fe3bf22eff7c  gcc/doc/gcc.info
! 1b8b50b15f7f7dfd2bfc10cf04e79196  gcc/doc/gcc.texi
! 486a806dd1964419c00ed78379c054da  gcc/doc/gccinstall.info
! bea0b87d195bd7b41d6ef8cfcb78417b  gcc/doc/gccint.info
! e0b2b9651dfdfcc12ee2da87c17e11e1  gcc/doc/gccint.texi
! 15f3078f17120062c88c890b3067dba0  gcc/doc/gcov-dump.1
! d9797edde2661ae0e512c8176c290ae9  gcc/doc/gcov-dump.texi
! 8abf0e6581bac0ec9623ae6339c4f40b  gcc/doc/gcov-tool.1
! ca308b028dbb9daa82d92ccca156e07b  gcc/doc/gcov-tool.texi
! 533eee9968c37e75cacbc2e0a3794f86  gcc/doc/gcov.1
! fd33c1e0e0091bc38ffbee7177921ff3  gcc/doc/gcov.texi
! 3bc5fab4bd53960b1121c87434e0b742  gcc/doc/generic.texi
! cb6f488bdaa7a780ce739faaaf57ea53  gcc/doc/gfdl.7
! 483da9f8a658ec0a9faf91c3b684be3e  gcc/doc/gfortran.1
! 587484a2f8ff3cf6b292b5c044724d4b  gcc/doc/gimple.texi
  290370669f02bef1502ada9273e5261f  gcc/doc/gnu.texi
! 21356228b155c108a0df7ce5d8b77e97  gcc/doc/gpl.7
! c89eb85139a4c6829a59358310920b18  gcc/doc/gty.texi
! 7bf48d369f1899cf21f53b06605706c6  gcc/doc/headerdirs.texi
! 880f6eba982285c503ae42d08a7abad8  gcc/doc/hostconfig.texi
! f5e8dbf5e49e4652b7393cd31b2dc978  gcc/doc/implement-c.texi
! 41cc199306b69ae81d9b4c2aa273c4f7  gcc/doc/implement-cxx.texi
  b82b1143f78f373e3c76f6958d830869  gcc/doc/include/fdl.texi
  8787976f426cd52da24a856cd41d87be  gcc/doc/include/funding.texi
! 0d74934d0ac0cf69cc54e08ca0abcae6  gcc/doc/include/gcc-common.texi
  b6389c8331319f90193f11ac084e86e4  gcc/doc/include/gpl_v3.texi
  73819b3930a3d4be5d6234070d02386a  gcc/doc/include/texinfo.tex
! 9003c1b6a06c7661deb5ffc0dd0e145f  gcc/doc/install-old.texi
! 3c2b50a637ded9348363b04591715ebd  gcc/doc/install.texi
! 532fb3c092b7b296ddcec4a99a0c475d  gcc/doc/install.texi2html
! 2bdd76b105eea8ff35649ac4ffb8eb5d  gcc/doc/interface.texi
! eeb0f63ad50b7ba7b1bb2f4613b6d798  gcc/doc/invoke.texi
! c0f8bb0ef887855830a3b2948920db28  gcc/doc/languages.texi
! 0250c30f49d52e180cf510442a084475  gcc/doc/libgcc.texi
! 3c5a8fa331cb442336e2ff249f1f0aee  gcc/doc/loop.texi
! 5554953b1e1d9afcf88af19b2376c829  gcc/doc/lto-dump.1
! 45b0e2c9fe4e809535fd2665b7efe706  gcc/doc/lto-dump.texi
! 1e20b8193e6a33b7a5258cacf05c5634  gcc/doc/lto.texi
! 959966ff2c0bf27c64314d6bdc06d05a  gcc/doc/makefile.texi
! 3c7466056002814f6c005ea620b49ed5  gcc/doc/match-and-simplify.texi
! 2d1b0c08dcb217cf0acaacd071a8d97f  gcc/doc/md.texi
! f769222ae6869bc37b118c5be0d92d0b  gcc/doc/objc.texi
! 76a993580876d01ee5f77b3512773a81  gcc/doc/optinfo.texi
! 8bf2bba12f2fb6df2869c9bebd35dc64  gcc/doc/options.texi
! 1b3e1afd821c6fd158f2382616e82a26  gcc/doc/passes.texi
! 6d12d3b04d19748966c49a7c13307be8  gcc/doc/plugins.texi
  0603ab3940871fa2a55ddbd7c2719eb7  gcc/doc/poly-int.texi
! 3c91752a7efcf15b052979c89d7d5bbc  gcc/doc/portability.texi
! a307378c56ec70371c9a935472cbfd42  gcc/doc/rtl.texi
! 47714e0c449e2849262ea093f2a51055  gcc/doc/service.texi
! 2a2424de5e45e8f0091cac3e29487994  gcc/doc/sourcebuild.texi
! 9881c6973427acd0eb815283b1cb2c8f  gcc/doc/standards.texi
! 3d6c2ee1446f357354bfbbad1b10d94f  gcc/doc/tm.texi
! 13a320e0af21cf7e5c6db65e0663f2ca  gcc/doc/tm.texi.in
! 3bb2055106c22395abf95d30d7743e0c  gcc/doc/tree-ssa.texi
! c4ec3b51062989971ecee27d9a765ace  gcc/doc/trouble.texi
! 32028ce5e1d5119d8df72ebdf6c2ce1f  gcc/doc/ux.texi
! c247015669b5390c3cc897117efc631a  gcc/dojump.c
! 65b3f7a15fe3cae6dd34ae6675409c86  gcc/dojump.h
! a2f207c234d4682ccf4f6d5aa495a223  gcc/dominance.c
! 365c5869a09e50147416898404673cce  gcc/dominance.h
! 1773e8aac5d05ee9d39ec8ee343becb5  gcc/domwalk.c
! 8cea2a00e1535e5f231ab41a9682ef64  gcc/domwalk.h
! dd64460f06e1554c5fd8e1fe09836939  gcc/double-int.c
! a16c69e33dc1ae6808e9a513e2545d03  gcc/double-int.h
! 36eb0e4ab78e524788de3bca959ad797  gcc/dse.c
! dbe8c1d99e18c5f9a07096a230996e8f  gcc/dump-context.h
! 43bfbc6fc46ac173417adbbceab515a2  gcc/dumpfile.c
! a0e7d76c9e6820c8c60fd7162484c1aa  gcc/dumpfile.h
! 8731562505e8ee4827d4bffe59b4e5e6  gcc/dwarf2asm.c
! b301aca61d8288586da32dd2c3e6c7ea  gcc/dwarf2asm.h
! 301a89cf04dc4a12bb77b09ad0daa51f  gcc/dwarf2cfi.c
! 42cc894ee52149b87b847a1cc1741f10  gcc/dwarf2out.c
! f9339d6f2072113fa5a26bc27c7764c9  gcc/dwarf2out.h
! ebea3ea6cf3d0454b1f648e8b4047922  gcc/early-remat.c
! 5d0344605084d3d22969ca333fe08a2e  gcc/edit-context.c
! f5dacf671f84564bb73a46cd515800a4  gcc/edit-context.h
! 77e8d660e3de5f5101840e1cf555d5bb  gcc/emit-rtl.c
! 3eb40e7e84207f7a1af03674336f1ab6  gcc/emit-rtl.h
! f5dba8046a94c319e61cc3cd8a11ad44  gcc/errors.c
! f22c15861cfd290b1e83fccc65b534d1  gcc/errors.h
! e4a758c0717017e530a551158fe05460  gcc/escaped_string.h
! fa2e545077bed02cd450f695d1d3a3bd  gcc/et-forest.c
! 55e328bfde7103c0f827d2dec978b600  gcc/et-forest.h
! 1da50c5c4a1ecf74913f87f1a132430b  gcc/except.c
! acf60971867c3bda77169fa63b5d9155  gcc/except.h
! 9871618d2d568c6a2b19b26d979f1ca8  gcc/exec-tool.in
! fecefee7b65371f00bf648b6b8c94a13  gcc/explow.c
! 4abb7d44019c01df643228a63102e0a4  gcc/explow.h
! b767401751b3ecc09cdd1d19c768f236  gcc/expmed.c
! 461a5c7a292b43e45d34d15a6123aa1b  gcc/expmed.h
! d72d2c641c6493f738d4f2529cba9867  gcc/expr.c
! 8dcbd4db5ca82e1fb16c9af198cace7e  gcc/expr.h
! 361f6eafe4496f203f4bc0ba87d7ef2a  gcc/fibonacci_heap.c
! 8f6ccc49ae1e2133d15bff71830df67c  gcc/fibonacci_heap.h
! e7e18ce2573a662e30c5fd6b58a1eb3a  gcc/file-find.c
! c7891cb18bd7d53442b00c8f0f6f2ad3  gcc/file-find.h
! 274a4f2064b82d7c0ddbfa2991658078  gcc/file-prefix-map.c
! 53f82142016ce50fc45ed195f5ba2da3  gcc/file-prefix-map.h
! 256e091cd677cfbd1dc3b060bf15c05e  gcc/final.c
! dd5675fa5273cb81f71cfac4c6f14485  gcc/fixed-value.c
! bc014c20048c035718ad5836f6097d78  gcc/fixed-value.h
! 5c89638f196f5a8bdaff99024fe13136  gcc/flag-types.h
! 764f38b5e7ac1b3b4079577b45cb0331  gcc/flags.h
! 891064e4722e3a6a11417a8a1ecd065a  gcc/fold-const-call.c
! d74e6be78940750833ff959c0f5571bd  gcc/fold-const-call.h
! c68ce58638eee99c5a051930b8888465  gcc/fold-const.c
! 3812bf5faa6f093ebc438439b278eb2e  gcc/fold-const.h
! 2d0c2862d7995b8eb2cd3995db5618d6  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
*************** b378eb9df97ed252ce2624646d05df15  gcc/fo
*** 5134,5943 ****
  a71efd3e199a80ee07c7f350cc8fcf91  gcc/fortran/ChangeLog-2015
  87a1607d67d7b571432a0e83b1e4aabf  gcc/fortran/ChangeLog-2016
  1ee95f47d9685043c09a7b41933d263b  gcc/fortran/ChangeLog-2017
! 7329983fba9efec50463c1ec516a8bb6  gcc/fortran/ChangeLog-2018
  65ff19d3a00eda2236e8a41b7f46ab5a  gcc/fortran/ChangeLog-2019
  9e0636f92243fb9b3480e27cefc96749  gcc/fortran/ChangeLog.ptr
! 5c6f2ebe741a0ada8c3033e2ea5d2ad7  gcc/fortran/Make-lang.in
! 5909b9f6e71710f62afe91d5f67898f7  gcc/fortran/arith.c
! ca8b1e108aefbac2b7ac57c153617f6c  gcc/fortran/arith.h
! 55de4a4c2701c0ba48282c56f1abe2b8  gcc/fortran/array.c
! 22a0a106380de68c4cdc48f21e8df1eb  gcc/fortran/bbt.c
! 22ecc117897a6c4b6194a4d61bb923b8  gcc/fortran/check.c
! 1fe39e75cdb5ee802bdcb031acea2ebc  gcc/fortran/class.c
! ff1762e0971ecf2d08fcffa2311224bd  gcc/fortran/config-lang.in
! d0f92e4c6353c809d59a8b3d9f6c1b82  gcc/fortran/constructor.c
! d74f46867c50e9065742294cf7981112  gcc/fortran/constructor.h
! 4efe6493248584f03dd65b0e819ce135  gcc/fortran/convert.c
! 77b4df9f2bddbb8a2a5e86a839f55ef1  gcc/fortran/cpp.c
! b36a6c41c7be94c6ecabf570d20ef218  gcc/fortran/cpp.h
! f014f88abd3f67ba65654dfb86f07d39  gcc/fortran/data.c
! 4577ffbed1dda4ed381606219c395ead  gcc/fortran/data.h
! 3f5a04f5bb693295d67073d617e8823e  gcc/fortran/decl.c
! ff2a9c749b3cdddd0069d2681223f4b0  gcc/fortran/dependency.c
! c44b979760eb69c741f2153783e81265  gcc/fortran/dependency.h
! 3e38fbef8d1fa77431311f2c23b04486  gcc/fortran/dump-parse-tree.c
! 339cf2cc8c2a7445bbf46589cfd8565c  gcc/fortran/error.c
! fbdae72a697a9654ae4c9ccd88c35ec9  gcc/fortran/expr.c
! d7765a920ed5575a88d4db604b220ae8  gcc/fortran/f95-lang.c
! 21570896d1e722052eda078eddb91dfa  gcc/fortran/frontend-passes.c
! 4a9175c58f9890ba356a1a7a096d5080  gcc/fortran/gfc-diagnostic.def
! 6185d88092feb0bfe9da2dd3a00c4a9b  gcc/fortran/gfc-internals.texi
! 17177e55236611c7e98245be84363e7f  gcc/fortran/gfortran.h
! 1b627b78375ba0ef99d0e6e89e3cceb7  gcc/fortran/gfortran.info
! ba78f919c059d2c39dea6fd637ec60c4  gcc/fortran/gfortran.texi
! 4cc401504b7e658fab348681169c32a4  gcc/fortran/gfortranspec.c
! de362facd5665a99e0a34902e84ed6ec  gcc/fortran/interface.c
! 7256db821cba2b44b836e8e30516fecf  gcc/fortran/intrinsic.c
! ceea3037f74de08ef111da7bb019ed4c  gcc/fortran/intrinsic.h
! 9f9aec12ab6a67091b66c4f231a3e1f8  gcc/fortran/intrinsic.texi
! a06453ed65fec3338fa1b2817ff8957b  gcc/fortran/invoke.texi
! 452f712e0cb0e2762a3c36879ef0f87a  gcc/fortran/io.c
! 6d5e915cff913cdb02ba2baa120b8fe8  gcc/fortran/ioparm.def
! 2bee38469d4ce1098c8c91e20abe8440  gcc/fortran/iresolve.c
! 06cbd27c3b0bbe8982f480c02560715c  gcc/fortran/iso-c-binding.def
! 1bc68fc9ea57d5448d32e38f470839ef  gcc/fortran/iso-fortran-env.def
! 4704c3c4e98e7f39a242215740f10a69  gcc/fortran/lang-specs.h
! e283f0937fc450e80999166335b17244  gcc/fortran/lang.opt
! 226cf6b14c1286da7bf2193ae58b56d2  gcc/fortran/libgfortran.h
! 095aa6e3e39eb3e48718d509f03fc1bb  gcc/fortran/match.c
! 828ba0a275b20969ca5988535d6e958a  gcc/fortran/match.h
! be55c16cc142b0c725759a753b87bf54  gcc/fortran/matchexp.c
! a7b0953cc8a68adc1bb8bbae3cfe218d  gcc/fortran/mathbuiltins.def
! 6fec7cdea16d5f5e62a6bac40b8979d3  gcc/fortran/misc.c
! bd4c85f1bfaf568b8b1630bd615948df  gcc/fortran/module.c
! 3bb5b3503be17cad8ed191502a38e84c  gcc/fortran/openmp.c
! a846edad604c36aca8373eca299f9003  gcc/fortran/options.c
! dbc9f2cffbd2f5ce5884eb74b2e03ddd  gcc/fortran/parse.c
! be3bc61c20fd3fe95f04b104478ae250  gcc/fortran/parse.h
! b86b74cbf789383840f1451cc4524da2  gcc/fortran/primary.c
! 323681db6af246f08164c5b1ea496f6d  gcc/fortran/resolve.c
! 9210d7371a77a15b79b659e8719ab872  gcc/fortran/scanner.c
! 679740af5fd1779d09bad19b2a37b9cf  gcc/fortran/scanner.h
! 09726f1a464706d391e025f9496c8fa4  gcc/fortran/simplify.c
! c992b80ea1e122025853709b9349485d  gcc/fortran/st.c
! 68eda559c17fe42472ac86c38c28a099  gcc/fortran/symbol.c
! 45d37e6409d42b3c81e83c67c0d01bd0  gcc/fortran/target-memory.c
! 2079251ce04664a8bcacf6d0d1b9c63d  gcc/fortran/target-memory.h
! e12707b8c46b85932364de984731828b  gcc/fortran/trans-array.c
! 5f7e7c6d824b5b11c403458ed281d99d  gcc/fortran/trans-array.h
! 3b24f22e64661b57edc88f7be8c0e39d  gcc/fortran/trans-common.c
! 7067790d4cb3a5061b0d1ce2e9c343e9  gcc/fortran/trans-const.c
! b56b11f97407d25ca49b09760f059abe  gcc/fortran/trans-const.h
! ec676dfb451d6c22b40bb4810359b33b  gcc/fortran/trans-decl.c
! 90fea29116e02814d66f538fb1ce3d42  gcc/fortran/trans-expr.c
! 244e3b15555416cc7f3603daceea2c06  gcc/fortran/trans-intrinsic.c
! 8b2a38b5821ecb86b2d2c64402eab26a  gcc/fortran/trans-io.c
! a74d6a9935c305f1edb58fb8465761de  gcc/fortran/trans-openmp.c
! 00dc6e1aa41a173d932848434cc34999  gcc/fortran/trans-stmt.c
! 5bf228024f266738a2c924e3b4c3c159  gcc/fortran/trans-stmt.h
! b3bf67da1073ccf863398e9d1b067315  gcc/fortran/trans-types.c
! 9c69f1144a81294c83c5dfccf059e4c4  gcc/fortran/trans-types.h
! d64a1b4f0cf5fc8fb67e745e08325f43  gcc/fortran/trans.c
! 81530ead86dd639638783c7081dd79d5  gcc/fortran/trans.h
! 125b02d4dda231478bb8db64c9539602  gcc/fortran/trigd_fe.inc
! 58b4d60332325e7af086f8737b608276  gcc/fortran/types.def
! 1b79283e54291d237be28ab4ae4b3f1d  gcc/fp-test.c
! 0016a094a47192e17ab43316c6b81e77  gcc/function-abi.cc
! f5575b9b4148e14a06bd15e48a059fe9  gcc/function-abi.h
! 1d1c7fefe6627b480bdca65a93572b85  gcc/function-tests.c
! cc5e9a9ba4d793fc256e197e82d0c868  gcc/function.c
! 471a2138d677294e0d8b0ad39fdac18d  gcc/function.h
! be4b170ee267123479f1e1f21b624f1b  gcc/fwprop.c
! dedbe8a6eb31269c6155407f0628b3dd  gcc/gcc-ar.c
! 56dd7d0a4ae49da481226f30c2fe7f5b  gcc/gcc-main.c
! cfff649691185f367fd2b8e73ac7ad99  gcc/gcc-plugin.h
! 62560119c356b251cca1099cb4c0e36e  gcc/gcc-rich-location.c
! 833829dec49e2b78c0ce9e6ff94ed95e  gcc/gcc-rich-location.h
! 1e7a8acabfe981225ee07f2ca2588326  gcc/gcc-symtab.h
! 946de02a6e781d494fb1bf22e6d93aa9  gcc/gcc.c
! bd03f9afb8e7458acac40b10fd781d0a  gcc/gcc.h
! bbb1c23e69c2fe3a3d5ad53c86e1ecb6  gcc/gcov-counter.def
! f54685150224625db645d8f0a852916f  gcc/gcov-dump.c
! 484597673270a5a8b9bf584634305e35  gcc/gcov-io.c
! c9495f16c4875ab5710ac89f993d61ab  gcc/gcov-io.h
! eb19b7e5481ed7c089d8ac513ae148e5  gcc/gcov-iov.c
! aee3fcda20da194ec98aa98556358c00  gcc/gcov-tool.c
! e571aa63c92577c6d5ce04d416acd787  gcc/gcov.c
! 57534db1bc326efcefb493220c9ab97d  gcc/gcse-common.c
! 2c6530bdb3b5581fc612ef52433f8ceb  gcc/gcse-common.h
! 659ddf33c9bf27677cb15bb7598a8ff0  gcc/gcse.c
! 993ee242994af7a6ebc7048b114e96eb  gcc/gcse.h
  af83e4b4719ee065872080b713d24c2f  gcc/gdbasan.in
! 71d4cf836dc33b9a30259dc76a88a456  gcc/gdbhooks.py
! 13474a2da527bffbdd204b6a4cf6a018  gcc/gdbinit.in
! 2e4895b4b5e7f3abf871072c5207a93f  gcc/gen-pass-instances.awk
! e9af3b8fff88d274a6e753e43c9948f9  gcc/genattr-common.c
! 68d611037bf8235de4329fc123615070  gcc/genattr.c
! 9c515c26e6924aa8b8c92bacf7d6bf3e  gcc/genattrtab.c
! 83bddb7b29a89ce15134964788f95d57  gcc/genautomata.c
! 60a4266e8dce6b8ed5398b72611997dc  gcc/gencfn-macros.c
! e42e43fb36e1993abb65afbe7eb0d3a5  gcc/gencheck.c
! 5b30cf7b5b0d5f1f445a820cc9a30e84  gcc/genchecksum.c
! 3a9dcdc559f8c4396c2c0fcf5e367ef4  gcc/gencodes.c
! 5c7451d37513bbcdf6a533c4118c7878  gcc/genconditions.c
! b3839103fa0b153f5f766d5e9c0fff08  gcc/genconfig.c
! 5d82a21c27e4fc31eb9121e941ab44ed  gcc/genconstants.c
! 643b236075127cb3912a428241d7045e  gcc/genemit.c
! a121314dddd509799e606d5c36ef4f21  gcc/genenums.c
! a1e549f76fdae9e7751ece58813a2001  gcc/generic-match-head.c
! 29bf3289ba360de671cfcd854cf59a22  gcc/generic-match.h
! 512811c4f04c2a6b3ee96bd1050c8254  gcc/genextract.c
! 6b1b20df0e1c1d98bbb87eda8feb1aa9  gcc/genflags.c
! d5ba0558db6b0ab6fa6173d1928e95a8  gcc/gengenrtl.c
! 0e579dbf33edf4a0dc80774e9e69fda8  gcc/gengtype-lex.c
! 790251f979c35416aba2f02f062588a3  gcc/gengtype-lex.l
! 50e413eeb1665bf9eb5c8f68ac1b3513  gcc/gengtype-parse.c
! 0f39be6bb5abe83175ebce4bd00ad8b8  gcc/gengtype-state.c
! 463038bf026c759c463af1fb0d8a86a1  gcc/gengtype.c
! 215ee17e23d17d65a0b56cf76b62f901  gcc/gengtype.h
! c1c7599224250bd93ebc7dcef067a076  gcc/genhooks.c
! 8d21f7ff1f70228de01363b76ad5ab1a  gcc/genmatch.c
! 8c44a4d939ec94e379e8a574520fe3e6  gcc/genmddeps.c
! e79c6522ff497010c38446377491071e  gcc/genmddump.c
! e4938046b50ba40c17f434670c0ead69  gcc/genmodes.c
! 95af5c997d4061fe3166f781255bf14c  gcc/genmultilib
! 2c0ce87fa8d960673b677d33829e1116  gcc/genopinit.c
! fc324df5d80f306269487bad7d6e8dbb  gcc/genoutput.c
! a6a37e86920edbb3a2a05d7885a2ce51  gcc/genpeep.c
! 60b8f6175038a8f5bcbae86f8e00cf20  gcc/genpreds.c
! 029cccec0680d8a8f9f62d595b5d0568  gcc/genrecog.c
! bdb5ee99b3d070d4aeb0da55e40de43e  gcc/gensupport.c
! 83b2db005e4df1d4508ef4eb8bd5f7bd  gcc/gensupport.h
! d2bd7ac2b513b85f1c3d65acf99e96dd  gcc/gentarget-def.c
! 3b6e739be4ba14e9b6dcb57bca3b5d50  gcc/ggc-common.c
! 61bd85cc51b538706015145674678f08  gcc/ggc-internal.h
! 2337385754388399735e723eff3c5c7e  gcc/ggc-none.c
! ce3966624143329cede707e857779565  gcc/ggc-page.c
! e4995e4de577b4b27e3875c087a4e945  gcc/ggc-tests.c
! fef9e50d2114dea9d6dd02b3b69d93f8  gcc/ggc.h
! c47bf3facc266285c6e5bd3e650c492a  gcc/gimple-builder.c
! de56894589d757f1f3f145c4c83b72ff  gcc/gimple-builder.h
! 7558743a36f3786faa1b536fc3b338b8  gcc/gimple-expr.c
! 75dcc7cd70023b5f7d5893cd38d98788  gcc/gimple-expr.h
! 4fe1162d57d3bae501e56a8d470384de  gcc/gimple-fold.c
! 0a76fb5bab9be03fb7841b54cc77fe13  gcc/gimple-fold.h
! 288a5e28f5cb5268fc516fcb152423e4  gcc/gimple-iterator.c
! fb4e7f4a72cf6ee4d871410e32f4969e  gcc/gimple-iterator.h
! a7c2e28e37ef8167aff9fe098a4c173b  gcc/gimple-laddress.c
! bb40f1f807b876d770535627d96d48fb  gcc/gimple-loop-interchange.cc
! 520e4809f6e1714500ab6ae9357133c0  gcc/gimple-loop-jam.c
! b9f5a83262367b5f8bba49d409d5764b  gcc/gimple-loop-versioning.cc
! 16718adca4a822e2cc7c3ae616e08fed  gcc/gimple-low.c
! ee3c9c60a48a8b0a2788cc604f0c7e26  gcc/gimple-low.h
! cfa94a6b4f0e2941647e8a2af20f2cb5  gcc/gimple-match-head.c
! 11dab3fe1b5cbbd351efc991f909986e  gcc/gimple-match.h
! 7c0782f660353864ff00956fa0b67bcf  gcc/gimple-predict.h
! 8d0ee2122e3ec95b06bab624b0b1c323  gcc/gimple-pretty-print.c
! ac8ca6e9ad16ee58747fca666306d275  gcc/gimple-pretty-print.h
! ed17d1c5e9fc48436a080788ce2b0ef1  gcc/gimple-ssa-backprop.c
! e0505ac1c8203b199b62569942aa4e86  gcc/gimple-ssa-evrp-analyze.c
! 71112140489595b03f3055b8302a67c7  gcc/gimple-ssa-evrp-analyze.h
! 99487699bd43229ba38ae6f32357515f  gcc/gimple-ssa-evrp.c
! 66a99b8b8ed32ca17bfaa44d94fb352d  gcc/gimple-ssa-isolate-paths.c
! 52b5e409d797ce70c64b4786ee0bf3b8  gcc/gimple-ssa-nonnull-compare.c
! c7c49b9d0297fb5d524ed3f7394f0968  gcc/gimple-ssa-split-paths.c
! bf48772e4c10881b67ac229cd00aff50  gcc/gimple-ssa-sprintf.c
! ac5dbcfe7111f50fc65855861276c78c  gcc/gimple-ssa-store-merging.c
! 8960c3cbca38a2eaf05bd32e3ecf4854  gcc/gimple-ssa-strength-reduction.c
! 83fd2fdd73077218ec13ec004aef5ab0  gcc/gimple-ssa-warn-alloca.c
! 607c1680feb4c13645189178ebc89958  gcc/gimple-ssa-warn-restrict.c
! cd32ce95364c22a13f86ddf632be31a0  gcc/gimple-ssa-warn-restrict.h
! 8ff75884d02d2da12247c38659c37203  gcc/gimple-ssa.h
! 6d3adbf1bdbcfd2a2b66bd506a67fbff  gcc/gimple-streamer-in.c
! d9ea07394823dd8a26da7b58b5afce44  gcc/gimple-streamer-out.c
! d376e7ef4e9d5e74acaf4daeba853396  gcc/gimple-streamer.h
! e327bc104b99adf5aed02da136e8697a  gcc/gimple-walk.c
! 5940404ea55d4fb5081ef2c12fe5df54  gcc/gimple-walk.h
! 2a7ea6ff9720ff35ea254cfd171b3373  gcc/gimple.c
! d4f63d3a8fc90415c3899934879d276f  gcc/gimple.def
! 49236c9c5e2a9761277ed11ebc366699  gcc/gimple.h
! 0d22d1df93aff237ce1c96b54a6eb509  gcc/gimplify-me.c
! 13e150fec65c17a13458b4af15a922ab  gcc/gimplify-me.h
! b89fc2f0f1d6606668bf3cdaa962c3c4  gcc/gimplify.c
! 39d4e3996900e0d2d838e0c7dcf99364  gcc/gimplify.h
! 1caa0bdf66e19f5a1051d40c48026308  gcc/ginclude/float.h
! 62f748511bcda55470e6287312fd2661  gcc/ginclude/iso646.h
! 31655569db399f4c74c9e0e8b7d8cc60  gcc/ginclude/stdalign.h
! b59504429fd173d496ea95544ab360b0  gcc/ginclude/stdarg.h
! a101d1d5a84ff43732c8d85ce59d06b4  gcc/ginclude/stdatomic.h
! 0e293fea8fa19ef7ab3b7b503adff99c  gcc/ginclude/stdbool.h
! 862bb94651e55628ab3700c73b0fcc15  gcc/ginclude/stddef.h
! 2f45ae0a06d2004361180522eb70ab3b  gcc/ginclude/stdfix.h
! 931b2690bf9c0eb0d46fff319ed752e8  gcc/ginclude/stdint-gcc.h
  f85aa0745c3e9e0d32fa64753089b2f1  gcc/ginclude/stdint-wrap.h
! e90b813b6527b6fb646b5444a4e7c494  gcc/ginclude/stdnoreturn.h
! a7b6c54cea96cb12874d9565e58bab5a  gcc/ginclude/tgmath.h
! 0608636acf1496b7f55fd44f5db0b82b  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
! f68ba128faa37699b34eabd954dec2e7  gcc/glimits.h
! 13b67b6159c16f58f434cbb3f7288446  gcc/go/ChangeLog
! 7704e902d7eca77c3c54d4b0d74e1280  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
! ba1d1d5398ab441ac25b708319bb4d33  gcc/go/config-lang.in
! b6812433e2bf40a03c8504f580a5b3ec  gcc/go/gccgo.texi
! cafbcde405852de043f309f5e2ac94bd  gcc/go/go-backend.c
! 6f9ac459ff5936a3d21de3435d396d78  gcc/go/go-c.h
! acff316a0e8db218432f2764fe58cb08  gcc/go/go-gcc-diagnostics.cc
! d3eb3a363d2930cfe4aece1e0fecfa5b  gcc/go/go-gcc.cc
! f855b94c159262d963922f45595f57c2  gcc/go/go-gcc.h
! 3499471e15b7bebf09eb4c8d732e38e1  gcc/go/go-lang.c
  c5d6aaa7e913ef205113a2bba2e5206f  gcc/go/go-linemap.cc
  91c7a6773e207cc086ae0888826cc3c4  gcc/go/go-location.h
! 46f49e79ed5bd91f45e19fb1abf77ce3  gcc/go/go-sha1.cc
! 00f8a1b9148cad694608d662b6a0776f  gcc/go/go-system.h
  5d4950ecb7b26d2c5e4e7b4e0dd74707  gcc/go/gofrontend/LICENSE
! 265c45fc65e314ac8d82a411bae280f7  gcc/go/gofrontend/MERGE
  3a55d95595a6f9e37dee53826b4daff2  gcc/go/gofrontend/PATENTS
  31c16a91d82f8ad3319819ebbba2d17f  gcc/go/gofrontend/README
! db2b7cea2edb5acc9de424c6dce22fa0  gcc/go/gofrontend/ast-dump.cc
  456b6d4cc785176b6e3eb0c685a93b39  gcc/go/gofrontend/ast-dump.h
  32aa7052db47bfc5454f727796ff9e56  gcc/go/gofrontend/backend.h
! 572e6b35cb2c4a5fba6fd55869b716a7  gcc/go/gofrontend/escape.cc
  ee8753eb1d8ca2fa168f6a71d3991455  gcc/go/gofrontend/escape.h
! 5a76e1b0c3bb652ded19fa44e450e24f  gcc/go/gofrontend/export.cc
  b72c14ae63bb87f55620d747d46e54c7  gcc/go/gofrontend/export.h
! ac3c88abaef713cb2763b05063c1b929  gcc/go/gofrontend/expressions.cc
! 069f200e4989ff9c0d926178aaf9ba75  gcc/go/gofrontend/expressions.h
  bf7f8a519eadaa90804fe15cfa37ba6f  gcc/go/gofrontend/go-diagnostics.cc
  accfd5ea41ee789e6adbaec31a228cfe  gcc/go/gofrontend/go-diagnostics.h
  19e66447fa803385274b4e1a7501a4d5  gcc/go/gofrontend/go-dump.cc
  e3f005ccc40000dcaf14ab6eec979f69  gcc/go/gofrontend/go-dump.h
! ef0428755dfb8fc3c63f2ff2b98dfba0  gcc/go/gofrontend/go-encode-id.cc
! 0491d1338e2f10c9482209a399b9cb7a  gcc/go/gofrontend/go-encode-id.h
  5c3b272e93c618f5e831eccd285ded86  gcc/go/gofrontend/go-linemap.h
  c08c0bc386a3e50faacf99daf94c080f  gcc/go/gofrontend/go-optimize.cc
  ead5ac25b7b99d361225e0fd940e286a  gcc/go/gofrontend/go-optimize.h
  5b59619fab7e543c5bb28dd8a6d62793  gcc/go/gofrontend/go-sha1.h
! f188a4cc852cce399578fed642d80c58  gcc/go/gofrontend/go.cc
! a4c885c50bbb8c2c83d0a2069dbb18fb  gcc/go/gofrontend/gogo.cc
! d3adeac895b9e65ae40e35e5900e2e49  gcc/go/gofrontend/gogo.h
  f9015ccccf7764d4c6eeae1bd5e01c7f  gcc/go/gofrontend/import-archive.cc
! 4977c0485fdca1b31edaf8c338bd0eb4  gcc/go/gofrontend/import.cc
! afc7bb7126035325a762faf7c85efac0  gcc/go/gofrontend/import.h
! 645f4b34701e265c1bb2801a58a0a297  gcc/go/gofrontend/lex.cc
! 809b00c1b8061dc164ee643afeab1728  gcc/go/gofrontend/lex.h
! 314b446659529e9798897935d734f546  gcc/go/gofrontend/names.cc
  98235b1a736055cd6a130337a9ee8e8e  gcc/go/gofrontend/operator.h
! 31dc7bdbf56e129fca9c669514274730  gcc/go/gofrontend/parse.cc
! f357626f19bab8cc886fa493297fb98d  gcc/go/gofrontend/parse.h
  2c0d81f700bca5c56dfcd3a7673e2e82  gcc/go/gofrontend/runtime.cc
! d06692b6fc36eb8f27f18b03d93dfe8d  gcc/go/gofrontend/runtime.def
  978a7b1924ca7f696fa5d0da3c9ccf60  gcc/go/gofrontend/runtime.h
! ce246f27da12d02048de7fb1cefcd8d8  gcc/go/gofrontend/statements.cc
! 920cfdf0c1c3060aa49c3086ce3c8f9c  gcc/go/gofrontend/statements.h
  bfc57c7a1e73452c4b277ad13efbddbd  gcc/go/gofrontend/string-dump.h
! ffafef0322dcc5c4259593b2e68ca5b4  gcc/go/gofrontend/types.cc
! 810eb9eb2aa41a5ac0337db05bbbd9dd  gcc/go/gofrontend/types.h
  3662dad559a197b0771d9930d494949d  gcc/go/gofrontend/unsafe.cc
! febdf68cead89eb29ba957c3d6d664ec  gcc/go/gofrontend/wb.cc
! 06e709c603027775705da760296923e0  gcc/go/gospec.c
! bfd45c09cf77f5527b4623c7654cb355  gcc/go/lang-specs.h
! c25395d3e2495cf2567b37bbcd071437  gcc/go/lang.opt
! 3b455f308aba731953aa47e9dd84c3c3  gcc/godump.c
! b7e7fa2dc2de04474ef52ebe420b3451  gcc/graph.c
! 839b194b2cd5c9a609442a88ad11ac39  gcc/graph.h
! 8139dbb5830992482fb067cd9cf0794b  gcc/graphds.c
! 457a2796deceaa2b79a03b696868d73e  gcc/graphds.h
! e2a20626e1276d03fa3180699bdb1aff  gcc/graphite-dependences.c
! d8625f99ef250492371df9d84da85a22  gcc/graphite-isl-ast-to-gimple.c
! 351b2b0993589bc92344a65e19da54f8  gcc/graphite-optimize-isl.c
! 0f58b38ecb3fcb3589b704cf40f597a3  gcc/graphite-poly.c
! 6ba0a8167879cac232b7fe2884cfa962  gcc/graphite-scop-detection.c
! d38ae5781531139b8c948261630b4698  gcc/graphite-sese-to-poly.c
! adfb36e39047d05938f58afee1707ba2  gcc/graphite.c
! fcfd513fe46f8e355b17f791b3e7f8b1  gcc/graphite.h
! 80a4b69f2b5410202050aa15835e9644  gcc/graphviz.cc
! cbe130979dbe50ea15f92dd52b14849c  gcc/graphviz.h
! df76083b260c9e1d82bef6ed2d699805  gcc/gsstruct.def
! 85c5e0f1bf69977fbd1ea67a3a5861ba  gcc/gstab.h
! 9b12fee3db52c52f03d0e1afd4e1a775  gcc/gsyms.h
  c32a1d882e7039afe158bb9e59b65223  gcc/gsyslimits.h
  053ee4a84e4593c88c088f25e153d1a5  gcc/gtm-builtins.def
! bd1cf7e70b3f5f0e7999c55ded790165  gcc/haifa-sched.c
! 936e28d016d21e6983035b885cce6131  gcc/hard-reg-set.h
! 6816dc2ac61c2a286a189f4c41d48e74  gcc/hash-map-tests.c
! ddbaa7672c35efe47d57ecebe2873a9e  gcc/hash-map-traits.h
! 235e7cf3815cd1614a6c7e11dd177052  gcc/hash-map.h
! fc3f2d9a23089f1a4d93461ba1ad8aee  gcc/hash-set-tests.c
! d2208af2148337a8e67bc9cf309d7ece  gcc/hash-set.h
! 7e6c79aab531b9fa9468eaecd73b3149  gcc/hash-table.c
! b671413a1f6a8b9b0a183857baac91c8  gcc/hash-table.h
! ce7c1abc6361e31b62a6d87d5b3fe0d4  gcc/hash-traits.h
! 77890a4bdbe9595fc93574557e76299a  gcc/highlev-plugin-common.h
! ee2713b53ad90744beff820c82a075eb  gcc/hooks.c
! fb093bf891e05e735d136613944f51ed  gcc/hooks.h
! ac5835135ebeea8cfa463615b704dbea  gcc/host-default.c
! 30913d695c292f965bf498d9b8b02eac  gcc/hosthooks-def.h
! ee03c299e91c70930e1630dedc44cf6b  gcc/hosthooks.h
! 84841372e32f06a1fc09a44cfa3abfef  gcc/hsa-brig-format.h
! dbf750dabdd85b194d998e7511551962  gcc/hsa-brig.c
! da96456925299dc0de952ca021113513  gcc/hsa-builtins.def
! 03b89303f9ba314748e772e520e598dd  gcc/hsa-common.c
! bc10d380257e50c884b17282f7d3152e  gcc/hsa-common.h
! c4447555ab5eba3ddaf5653957e55c4a  gcc/hsa-dump.c
! f61bfa11e5056710d46d3ef576f21438  gcc/hsa-gen.c
! 98431bbb0fd8cc8565529cf98d4aecc5  gcc/hsa-regalloc.c
! 0d03c84006ee5171d42014d2edfc2ce4  gcc/hw-doloop.c
! ba4bc2226879e0be934d32f6f2aadeaa  gcc/hw-doloop.h
! 909d931869b7d5535696c8f9e6fbc58d  gcc/hwint.c
! 53f6c7822d2955059f5474124b89c8d8  gcc/hwint.h
! 444198392af6fe362f336f37512cc421  gcc/ifcvt.c
! 7cf51303d986638791f93b75b6e05e25  gcc/ifcvt.h
! c7a8101076016714491228c2c888df88  gcc/inchash.c
! 1a0d7710c9a7b84ecbb544fedf87876c  gcc/inchash.h
! 3cd74ac1886d6df0ddce454476286700  gcc/incpath.c
! b1c13208d7fed5aaf4f6354a476bcb85  gcc/incpath.h
! bb7625e06a7a5c3eaa2663ef67390296  gcc/init-regs.c
! 0ec26379af5afa4e4c6a56e12dfe40a6  gcc/input.c
! c42fd0cba475850a67b5632c064b15f1  gcc/input.h
! 6d78172e2a0c33268dad6e86e0dfa48b  gcc/insn-addr.h
! 193c9002f0704dc6813a239f047c2926  gcc/insn-notes.def
! 71b527a2fca68005159309ce466213a7  gcc/int-vector-builder.h
! 52a2a8fc62c48147a03db274fb03f0ef  gcc/internal-fn.c
! c10958cc3a7b24c385a20752fe3a2e0d  gcc/internal-fn.def
! 3c1df9bc16a9f19cb9508150c300bca9  gcc/internal-fn.h
! 819569bc34e13c349c3932d6e6da1df2  gcc/intl.c
! bb3281212ea808669439ad4662b1b953  gcc/intl.h
! 9091098d66baa63d871f42b506403c89  gcc/ipa-comdats.c
! dfd39f5ba8007ab59d4b1a2d5ce92229  gcc/ipa-cp.c
! de4f6e1ed44e7c2c2979237aed35b442  gcc/ipa-devirt.c
! 2d647198abf8f778cda6c4163e07680d  gcc/ipa-fnsummary.c
! 074cb8448c24cdcd2c461a1010d38ba6  gcc/ipa-fnsummary.h
! 8a41316f338b5a85f877fd92ef93cccf  gcc/ipa-hsa.c
! 53d00c9b7b15544414d17d6417e0cd41  gcc/ipa-icf-gimple.c
! 40ffe5c628abcce1956aecbf2bb47c35  gcc/ipa-icf-gimple.h
! 794e85e2a4189b7edb6b8e052de2207c  gcc/ipa-icf.c
! 1cc0966a66a1fdde5387f312e3feae85  gcc/ipa-icf.h
! bfc25a0b140dcb9010bed1d5cda4ac03  gcc/ipa-inline-analysis.c
! 548b57d8647aadd1ddfdfe86db803ae0  gcc/ipa-inline-transform.c
! 583cb3e30c6bd939aa176db36f0fad67  gcc/ipa-inline.c
! bcd49baed1b788693f2054a0dccd974d  gcc/ipa-inline.h
! 0716f1369edccc925147ea7fa52a0c1f  gcc/ipa-param-manipulation.c
! e63fee9db5b563404cea0ca9776d7184  gcc/ipa-param-manipulation.h
! 2d241e119d12331dba76d610313bfdbb  gcc/ipa-polymorphic-call.c
! b0a1a35798dfa17cb36973fddca8deec  gcc/ipa-predicate.c
! 3ec5aa020f8389f9c1ed0ec73750bb24  gcc/ipa-predicate.h
! eb01604e680f043c4bba795d60de053a  gcc/ipa-profile.c
! b60d8fad076005a263597cb526b2ec14  gcc/ipa-prop.c
! 132af043eff9d5a61ad484e126e81afc  gcc/ipa-prop.h
! f3e970e99ab71a9a0e4570d28f006480  gcc/ipa-pure-const.c
! 02921cf6e5e57296e9cf087bb164b8cc  gcc/ipa-ref.c
! de42570b6f80064efcbd15aa15f687a7  gcc/ipa-ref.h
! 165cab683c90b638603bed4138b2d41c  gcc/ipa-reference.c
! 9eefdcbb15155dc403bd5991f911cd30  gcc/ipa-reference.h
! f055de76a5a05f54d00a80ac20759a93  gcc/ipa-split.c
! c451e3d5d412c783574e743f7316ce9e  gcc/ipa-sra.c
! 455cfd66c52224becd8618c34429a359  gcc/ipa-utils.c
! 06d9500a201d2a69eb2f99ba5a3525a5  gcc/ipa-utils.h
! 07a2becdd98104b287d8d760fcf0f7cd  gcc/ipa-visibility.c
! 9009a2b0c225422a5b1b543b758b6c09  gcc/ipa.c
! ba0f8a4827b070b9b7f97d9d09936884  gcc/ira-build.c
! 433798122aec602e970402e8b960d598  gcc/ira-color.c
! 8d2f4b9c89bc42d97800f26301dcdc10  gcc/ira-conflicts.c
! b2c01e63c584a9f375c6026f80aa6c14  gcc/ira-costs.c
! b1c18acf2cccfa59fdbf8d8ca83dae19  gcc/ira-emit.c
! c71f8a316429e69526b4c989081a638a  gcc/ira-int.h
! b8e3c890bc1ccade77558f2eba0dce60  gcc/ira-lives.c
! 94db6b40114ccb20995ee760399d65f5  gcc/ira.c
! bcf6b7eea8ae7e6b363a86565178be1f  gcc/ira.h
! 7a4e770c6d51b1f35bb2994ca37824aa  gcc/is-a.h
! 47a0f9aab4e71e28b314511393d00f8d  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
! 076bc0388a1d91f63b16ea0bb0196cd3  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
! b39429aa4ac3879df6dcedfef177fc8f  gcc/jit/config-lang.in
  df53fb6b84c435b56ac2cb2727b62b27  gcc/jit/docs/Makefile
! deb386a5d39ee1488e2412e40b3b28fd  gcc/jit/docs/_build/texinfo/Makefile
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/_build/texinfo/factorial.png
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/_build/texinfo/factorial1.png
! 030920105837bdd0e8968597af30fe19  gcc/jit/docs/_build/texinfo/libgccjit.texi
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/_build/texinfo/sum-of-squares.png
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/_build/texinfo/sum-of-squares1.png
! ca76494673cc253691815b96c087345b  gcc/jit/docs/conf.py
! ce8005bdec6ef2b41a50acc73c6eea54  gcc/jit/docs/cp/index.rst
! 8e15670ab23179312012c12756ceac99  gcc/jit/docs/cp/intro/index.rst
! 3cb2387a14c114bb1c87ee9cec1c652d  gcc/jit/docs/cp/intro/tutorial01.rst
! 6e6f883749134a173ebb9beafe8d2209  gcc/jit/docs/cp/intro/tutorial02.rst
! f7b33b973fce7919c658f0fa279fee10  gcc/jit/docs/cp/intro/tutorial03.rst
! 56949a52bae44d799398e4db1f1f3107  gcc/jit/docs/cp/intro/tutorial04.rst
! 0cc8c2f0c67bf9102e117f5b285d0f9a  gcc/jit/docs/cp/topics/compilation.rst
! f2c261acea7315712808ea58a826b54d  gcc/jit/docs/cp/topics/contexts.rst
! 191d10d6e57919bc64f4a6cc4b8e15ed  gcc/jit/docs/cp/topics/expressions.rst
! 1191390ffd44606af4398d4b37126227  gcc/jit/docs/cp/topics/functions.rst
! 0c54ddb525e49890a12d22b35fb089d7  gcc/jit/docs/cp/topics/index.rst
! dbe379092aa6c05dbffb0694a78c8459  gcc/jit/docs/cp/topics/locations.rst
! add5cdfedb88b99876c8e3c91623197a  gcc/jit/docs/cp/topics/objects.rst
! 887a6d012ee49d7b2bede295849141ba  gcc/jit/docs/cp/topics/types.rst
  98a4c0efa41e5eb7177483e4cd99a81e  gcc/jit/docs/examples/emit-alphabet.bf
! bdd9ccba76c8819071a037214fc12eda  gcc/jit/docs/examples/tut01-hello-world.c
! 3dec33d9e879ee1291e188ee551fe43b  gcc/jit/docs/examples/tut01-hello-world.cc
! 1730c60d1510b573f955be0dafee9de2  gcc/jit/docs/examples/tut02-square.c
! 66abef6711552981d4a38658b6caed86  gcc/jit/docs/examples/tut02-square.cc
! 52ee9d2f4ea3ec839905a5c4d71c440e  gcc/jit/docs/examples/tut03-sum-of-squares.c
! 1e68961faaa8f91c9fc3a467e8f82693  gcc/jit/docs/examples/tut03-sum-of-squares.cc
  6369d2b07520cb0fc9d14082499f6be2  gcc/jit/docs/examples/tut04-toyvm/Makefile
  999c1d2b92d5d71565c67854aad60e9c  gcc/jit/docs/examples/tut04-toyvm/factorial.toy
  efe1998ded06ac3721d9ced4d96056f0  gcc/jit/docs/examples/tut04-toyvm/fibonacci.toy
! 22c9f360ff80e88d5efb695c24e3799b  gcc/jit/docs/examples/tut04-toyvm/toyvm.c
! 447968b944474a53171fdb4f0a15885e  gcc/jit/docs/examples/tut04-toyvm/toyvm.cc
  3cbe9daf70398730ee60aa4caf2fc200  gcc/jit/docs/examples/tut05-bf.c
! 448bd66e7e8c1df0627067a19aa2b62c  gcc/jit/docs/index.rst
! 2b427690f363645cc726f8b4ab39dc89  gcc/jit/docs/internals/index.rst
  d72502d68617b68873d385bcee6e9c4b  gcc/jit/docs/internals/test-hello-world.exe.log.txt
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/intro/factorial.png
! ec16582ba2076f33edf297c3360cf0bb  gcc/jit/docs/intro/index.rst
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/intro/sum-of-squares.png
! 7db0adfd6d32cb6153b624fa38e6d455  gcc/jit/docs/intro/tutorial01.rst
! d51ced96d065aa2aa5c11654bbfba709  gcc/jit/docs/intro/tutorial02.rst
! 3624cb5922a727bef81c83cc3b57896d  gcc/jit/docs/intro/tutorial03.rst
! 7fc50d033af048b5cdfe0dcb99696630  gcc/jit/docs/intro/tutorial04.rst
! 0d304fe633c4d67f2f008e587e07a532  gcc/jit/docs/intro/tutorial05.rst
! 2fd9690e9c7cad99531c396d81cc5f48  gcc/jit/docs/topics/compatibility.rst
! e5cc57d5261db1c4bef963b95e7e5033  gcc/jit/docs/topics/compilation.rst
! e7c9b49f4c1cd7882fff5f18cffead05  gcc/jit/docs/topics/contexts.rst
! 31ff75895b991d5f013b450048987137  gcc/jit/docs/topics/expressions.rst
! 42b9346d7ab6434da611831ce51fdace  gcc/jit/docs/topics/function-pointers.rst
! 313cef3360fdfca33b8b9f2fc2c146bd  gcc/jit/docs/topics/functions.rst
! 9eddc74d30fc8ceba47c98f9fd7bfebf  gcc/jit/docs/topics/index.rst
! 66eead7164e2ca8bba615b2d81e6b376  gcc/jit/docs/topics/locations.rst
! 07a3e8438fe9d23fea98d4522ba4250b  gcc/jit/docs/topics/objects.rst
! 20462f41ee7c6db3b6efbd8652a6658f  gcc/jit/docs/topics/performance.rst
! de3f98951549becf5e8cd6b9a431090b  gcc/jit/docs/topics/types.rst
! e2064f0ad41c212d2286a5e1eac3f74e  gcc/jit/dummy-frontend.c
! bb35ae34749c3d4b831522b940eb81d6  gcc/jit/jit-builtins.c
! 090374dda1f0e505802f1f5cdb547b8b  gcc/jit/jit-builtins.h
! 2378e5ac5c7a83208505ca578b7913fc  gcc/jit/jit-common.h
! ea419635755d7efb6f5fdce54e6b328e  gcc/jit/jit-logging.c
! 0371184fca08135a5bd2fd6d522bd2c4  gcc/jit/jit-logging.h
! 97775f30db0bb1ad83365bb2f874c41d  gcc/jit/jit-playback.c
! 3fa78ff3a4af23a1f6519b7355ed748c  gcc/jit/jit-playback.h
! 408667927cd77b35ea0fc24bb362a8d2  gcc/jit/jit-recording.c
! d8362bbecabbeaa66520015ccc40463b  gcc/jit/jit-recording.h
! 9074ee3f90a811e70cda1a2f963ffabf  gcc/jit/jit-result.c
! fe1228d7c213b3e5bfd95eacd3d791b6  gcc/jit/jit-result.h
! c848f27ded55a2f763299971f6c14265  gcc/jit/jit-spec.c
! 3acc8c4eb5c0fbb45eceb3b4d2e19aac  gcc/jit/jit-tempdir.c
! 55eadd678b8a3e868041496d6b824a23  gcc/jit/jit-tempdir.h
! f6a67ddfe81bc8b53bf555c63b29fd09  gcc/jit/libgccjit++.h
! 3a62de1daec347561284912bc471c623  gcc/jit/libgccjit.c
! 9d0cfdab42aff8ea47817e65cd0d5a86  gcc/jit/libgccjit.h
! ce9938eb018513e4d37f0ba3ef363d7f  gcc/jit/libgccjit.map
  aaaa50e3d4a7c60cc413faccb2d831c6  gcc/jit/notes.txt
! 519256d1e6f6073febc27396bc150a7b  gcc/json.cc
! 468c660d521ad598c2f63385ef52d9ab  gcc/json.h
! 98a787014a06d02481045b278ca932e4  gcc/jump.c
! 228119d515593cfac00cc0aee8cacee0  gcc/langhooks-def.h
! b147eae329641650f3c48b095f474ac8  gcc/langhooks.c
! c787d9baf51bc557a95ad884fcd45b95  gcc/langhooks.h
! cbb681d03a3851d9beda14715a6509b9  gcc/lcm.c
! 4549aefd7bae03257e5b9040c4f6c0e2  gcc/lcm.h
! 2c826f50876743ae0927419559e14909  gcc/libfuncs.h
! b9464a8ae0695e06d665d982c57730ab  gcc/limitx.h
  83de5c6450456e215a5484083afcd32a  gcc/limity.h
! ba663f306c0c9dc5e602465aa6d791f4  gcc/lists.c
  30b8e3e407f46ad2cb39260ec4bab9f6  gcc/lock-and-run.sh
! fa0e89979a1d8c821d2594597ddc309b  gcc/loop-doloop.c
! 899e33ea3264342544a1a784e8d2532c  gcc/loop-init.c
! 3e6f92459929015e502152eb07b712ef  gcc/loop-invariant.c
! c157087005c8286392f4367214245e9f  gcc/loop-iv.c
! 3996431341adbc53210b6c9e8d0e4236  gcc/loop-unroll.c
! a5e0549da42bf024e74e0520d5360537  gcc/loop-unroll.h
! f2bc1c8b2ac107014231694bd6db858f  gcc/lower-subreg.c
! ba2ef3e2bf21473fb9725dd9cb2d4a7b  gcc/lower-subreg.h
! 82dfebddd71d20981f3d2952aaf44e43  gcc/lra-assigns.c
! 00884867b71e299135b57055ecf93608  gcc/lra-coalesce.c
! 264e4ce6ff8547419eadb3124f55b383  gcc/lra-constraints.c
! f534f4cb8858ccf3049e418e3d9e5f37  gcc/lra-eliminations.c
! ecd6cda6d0692277e20bd96230825d84  gcc/lra-int.h
! 131ee484a0c9bc738b870661604ff96c  gcc/lra-lives.c
! c6e8b72465923c832850bc83c9e9c085  gcc/lra-remat.c
! 09fce56317682a0920a5b696ef4ca16a  gcc/lra-spills.c
! 6e148b780cdce4a70dab9286f98d7467  gcc/lra.c
! de3a9e5dafc34e41ce918d46e8051170  gcc/lra.h
! 48256086fea956f99a65ee44c8ab26be  gcc/lto-cgraph.c
! 3a09f58063306a01ab493833c6f23278  gcc/lto-compress.c
! aa402e11f42c338c24c7ad2196df098c  gcc/lto-compress.h
! fcbfbec19f2e07d0f1dc4d1032b5ae3c  gcc/lto-opts.c
! f601534108bd7d15ecfcf5db1692890f  gcc/lto-section-in.c
! 97dbb324bc66497e90859cdd69f25c91  gcc/lto-section-names.h
! 25a5d56053984a5dd00d68af10f528e4  gcc/lto-section-out.c
! 61996695ed1a7e1a968d13c6444854eb  gcc/lto-streamer-in.c
! 2af05e42cf3672b695a784eebaa19f26  gcc/lto-streamer-out.c
! 6322b1521fdaf76be3c90f339ba47a75  gcc/lto-streamer.c
! bf545b81282ac814f0c63f2793423d41  gcc/lto-streamer.h
! 3bc10d0f98328d53593b7a5c6118b7ca  gcc/lto-wrapper.c
! b4848b3b7bf858d440b604d6042672c8  gcc/lto/ChangeLog
! ff902999e2da9680340e8d0cace7ec16  gcc/lto/Make-lang.in
! 6bb73fcbce79fbfce7649ed545fd08e2  gcc/lto/common.c
! 12eb383f6e35176f4a54226df1009acf  gcc/lto/common.h
! 2e4d9da0394eac821ae33adc1a53269b  gcc/lto/config-lang.in
! 81b2a370df1549610181f306e77ed2bd  gcc/lto/lang-specs.h
! 4e5f8ecd6e3f3ad81eb3093a005c117a  gcc/lto/lang.opt
! 8d4103759b0e731f8614263440220be9  gcc/lto/lto-common.c
! 1f511e123435b0e61b836e30cf5668af  gcc/lto/lto-common.h
! 2b81de691bf19af9e0ed25a22fda7a07  gcc/lto/lto-dump.c
! 479f7bf15a3deb111645a21d9998abf7  gcc/lto/lto-lang.c
! 1bc67ab0f9f83d40a805dd10d648f63c  gcc/lto/lto-object.c
! f69e26707dff9b05cb66088088fd0657  gcc/lto/lto-partition.c
! 4791bed61e066d5abe05742105993e98  gcc/lto/lto-partition.h
! b672d112629d3228c6b752757b4db549  gcc/lto/lto-symtab.c
! 03b1ee6398a4bf2a3eccd0533faa27f9  gcc/lto/lto-symtab.h
! b2744f1cc52a269124401262957ac3bb  gcc/lto/lto-tree.h
! 18e8e565efa16bc43473a149bfa2179c  gcc/lto/lto.c
! ae1f5f39ba98a3c7758fa9933bb5e230  gcc/lto/lto.h
! b13745c2d7c8d78a175492fe7e3feb8d  gcc/machmode.def
! b3dde66d1523f50e15e4e0229fcf13f1  gcc/machmode.h
! b05eff1a563e18d9d927004e16b2ce00  gcc/main.c
! f290c9de5108fb2e6494ecb2e9288e0f  gcc/match.pd
! 1cc67605dff78497d108bb65aec8efb3  gcc/mcf.c
! 25a428eb0074bcb4e34a5faa06b0cc4d  gcc/mem-stats-traits.h
! f67514301092d230fdc3a545f4b3bfc9  gcc/mem-stats.h
! 8a696aaf8f82f671cb738ad25b34a6a8  gcc/memmodel.h
! 27e74d241813a6bf9ff97ec80fe4bbcb  gcc/memory-block.cc
! eccf0b52370f379dfae09512acb66ffb  gcc/memory-block.h
! eabfaa5f3f130f5eecd38b7e0fabf3bb  gcc/mkconfig.sh
! 9000a7c1aad3bfde63573b4ed0ee23cc  gcc/mode-classes.def
! 07afcffe769aaf6f4c2700740fb1def3  gcc/mode-switching.c
! fa592ee1fde0c1f4cdb77992427d5fdd  gcc/modulo-sched.c
! 2e0b84cc43cf21e916fc5727f4b74ff1  gcc/multiple_target.c
! 12190cb820058d79d679f03f9e0db9a5  gcc/objc/ChangeLog
! fcd05e1453dc56982727d6b4728d6ca9  gcc/objc/Make-lang.in
! 88d6d4c884e7d92ad2d64ce7e15b9e97  gcc/objc/config-lang.in
! ac21dc9666c05c196265804e425f0312  gcc/objc/lang-specs.h
! d0d01ab3cb9b90dca53f64f6a254c4ae  gcc/objc/objc-act.c
! 5c8f878c19a21af39fd93737716ca606  gcc/objc/objc-act.h
! 47a5deaa30e6b91412d3fa243c6186fc  gcc/objc/objc-encoding.c
! ee24ecdf18b5da5342cb3d8b4499bc9e  gcc/objc/objc-encoding.h
! b4429584ae1dd523688b51d1b16a75cd  gcc/objc/objc-gnu-runtime-abi-01.c
! f29f73d75b2f764eaad1e0f950021925  gcc/objc/objc-lang.c
! ba8bb35eefefe34c0ef8e803ad1e613f  gcc/objc/objc-map.c
! 1aaf5add0617237079ba66d42de1a477  gcc/objc/objc-map.h
! 8d951cea523899a847909ad38727bffb  gcc/objc/objc-next-metadata-tags.h
! 3f85912e75c87488b100e85cc43fd62b  gcc/objc/objc-next-runtime-abi-01.c
! 3c3c27a40f8af470fe30f1f15a6d95ee  gcc/objc/objc-next-runtime-abi-02.c
! 2a89763b1defc1d85553c320a63060db  gcc/objc/objc-runtime-hooks.h
! 7da1b4ce33d1f2d6d06154c5c47d21b7  gcc/objc/objc-runtime-shared-support.c
! 9626708ffde2a801337d858ad9f4b9f1  gcc/objc/objc-runtime-shared-support.h
! 0996fe056d9bbb9cd033a1c4cc77e561  gcc/objc/objc-tree.def
! 38807c97b995da73c03aad09c1a01d60  gcc/objcp/ChangeLog
! 3cbc95bd25fa86ffaff1f83e52772e28  gcc/objcp/Make-lang.in
! c7ddd8c51d7e8c1428875a246dc4cb33  gcc/objcp/config-lang.in
! ded26818173a53d24e4db8138bb737cf  gcc/objcp/lang-specs.h
! be872037f2be317642757dff9ee4e7e9  gcc/objcp/objcp-decl.c
! 4d6c6650decaa2d51b88c66909397347  gcc/objcp/objcp-decl.h
! 004a8fa747c0865adad4be841a260d0d  gcc/objcp/objcp-lang.c
! 0886e27233c32e6179a7381c27d8b4c2  gcc/omp-builtins.def
! 31e7a3b935ff01c1c1a6630bf518a1be  gcc/omp-expand.c
! d5c5e7983604146d429dd7d971026ffc  gcc/omp-expand.h
! 217e6d59e7657f5aa858cb9ac22e25e5  gcc/omp-general.c
! 9b5747816823c44340c559fe9034bd42  gcc/omp-general.h
! eec49c45264ffe98078e1790dde1d085  gcc/omp-grid.c
! 58dec197c27b0fe6b637589c91ce6570  gcc/omp-grid.h
! e2caad963b9a5b0058b2287f35ca50c7  gcc/omp-low.c
! d8bb78f41734f384394b7458c6980f00  gcc/omp-low.h
! c44ad711e41ca3278cc397873a44b2fd  gcc/omp-offload.c
! fc27509534cd1450c6222e58845bcdbc  gcc/omp-offload.h
! 59ab69eec1d5213481bcd9dea612609d  gcc/omp-simd-clone.c
! f69d96f435266c7bde5f8e1677c167e1  gcc/omp-simd-clone.h
! d0a81eedcf152cd33ce84cf504e1acbd  gcc/opt-functions.awk
! 3224099293c3389515c08fd516efb3d0  gcc/opt-gather.awk
! e9ff0cfa95e86ae1886c4322c7dd2d2a  gcc/opt-include.awk
! d4c77d899ed54a70c8bcf26edd0c2c6c  gcc/opt-problem.cc
! 1d3c2117e9d2bcf5d148792f6113a7ab  gcc/opt-problem.h
! f6885740ff693e22f9a5971d818da588  gcc/opt-read.awk
! fdc71225274b5bbd7461c268a4b55ce6  gcc/opt-suggestions.c
! 271403c815926d9c4d7b617c31a0c180  gcc/opt-suggestions.h
! 23474b5dfd6321e11991cf3a28972555  gcc/optabs-libfuncs.c
! fa2a542060df3355a0449a17595e4815  gcc/optabs-libfuncs.h
! ce3203c7c65c8263219fbffa1ff0ef86  gcc/optabs-query.c
! 1f74c7600f0c443bd2a7cdca35da4876  gcc/optabs-query.h
! d01f60269beadf5cb9768181db709e47  gcc/optabs-tree.c
! 94e973433ee0ce514bc9f632a4c19f18  gcc/optabs-tree.h
! 932500f45ed743e0a99f712a22772896  gcc/optabs.c
! a630396c73c1da2c58720ee05affceab  gcc/optabs.def
! 223e4d121c4d9d6d042026e30b09fd70  gcc/optabs.h
! a0dde41e8d529a09be349c6cef989ef7  gcc/optc-gen.awk
! a338c39751f95cfbf684b502ef6e0c48  gcc/optc-save-gen.awk
! 6df41233837644dd3bdc263f625fb944  gcc/opth-gen.awk
! 48520c0760111cf85fb1be4912b78d8a  gcc/optinfo-emit-json.cc
! d287cce3219121596e708cf96a5379e3  gcc/optinfo-emit-json.h
! 92d593cb5e650fa79d86c14117ac794a  gcc/optinfo.cc
! aced1909ce22d0d2abaf931cb20a7d9c  gcc/optinfo.h
! c3ba56dedec8e14dcfb5d90c45476fac  gcc/opts-common.c
! 1df7723e0e429b5782fab606f607a6ed  gcc/opts-diagnostic.h
! 4d01c863898bf8c7c8ae1e51a829c669  gcc/opts-global.c
! 4f86708eb9ba3499c3e2cf786f37aca8  gcc/opts.c
! b9db66046cc8d424df631c6e6125c3ad  gcc/opts.h
! dad5ae63231bd35e23b9877dbb8c82ae  gcc/ordered-hash-map-tests.cc
! 7e515f0766d0e07e39cd6b2cd2d727cc  gcc/ordered-hash-map.h
! b8d511167e898d2837c31e9eca543c39  gcc/output.h
! 97d1be4a9cd38fea89c9ddcdf49b67dc  gcc/params.opt
! f9634d3f1151e564d7cb0fc885b12d5e  gcc/pass_manager.h
! 9d214db07046f26e3e060be4abd2751d  gcc/passes.c
! 3cab992bdc211eabec0ff4fe14614229  gcc/passes.def
! 1f2be2b4db63158092aa9a432324b9f4  gcc/plugin.c
! 1a2ee442016e04c400c5b1ecfa2b6f7a  gcc/plugin.def
! d57e52d4dd66ce4213264b80d2489b27  gcc/plugin.h
! 00429d123b8dc554a1595ff9debba4db  gcc/po/ChangeLog
! 1c98342dfff1dce80a9f3dd527d40985  gcc/po/EXCLUDES
! df8eb609dbb028d033b7d05185cc0715  gcc/po/be.gmo
! f0d7b1b3080241060878bfbc2536042b  gcc/po/be.po
! 221f7653b95e1e5336b3f82a3fd3fe10  gcc/po/da.gmo
! e5adb834789959ed3364f07584753cc5  gcc/po/da.po
! 1952f9a24447c1607fa60116b45e93d5  gcc/po/de.gmo
! 5fb1874941b8bd5807ffa770aac73a79  gcc/po/de.po
  189b9d1af87594807b0d0e10036a64c3  gcc/po/el.gmo
! 903b56f226a973b055b3696584ec2a4c  gcc/po/el.po
! bb8d8399ac3876e5909669b24a42fbd5  gcc/po/es.gmo
! 4cb6b62d1a98064732a5c481fa04228e  gcc/po/es.po
! f4772c0e70eac57b9bde5ed4d98d160c  gcc/po/exgettext
! 97e74cc24ae0282c2503d61dd778e4cb  gcc/po/fi.gmo
! bc93396b1252d3c7e58994319de46a46  gcc/po/fi.po
! e196e23e0e57a6dc57f6488506dc05c9  gcc/po/fr.gmo
! e1ae86e446dbc6712cd5114e71822251  gcc/po/fr.po
! b9de36119897356a50fbbb3515773aa1  gcc/po/gcc.pot
! 4a80754a114619235beb0f8c1a1216f8  gcc/po/hr.gmo
! 285a2b202bc2bc6b449f7344170b8210  gcc/po/hr.po
! ae62f5f7e298dd61a05ab2b8757d41fb  gcc/po/id.gmo
! 4ab9deda54b0268638f51c029e14d341  gcc/po/id.po
! b794bced81868779857ec1ddbd784a12  gcc/po/ja.gmo
! 51a2d2bdc7dde022dd7f4cd5be57b044  gcc/po/ja.po
! a203f998a3f9da5ef255d297b08e6786  gcc/po/nl.gmo
! f0b829c94ea140a5b609d67f71411cbc  gcc/po/nl.po
! 29ea10279ffaa84e56f1515a80e61893  gcc/po/ru.gmo
! 480b129724752f5429dc3cb0578f0004  gcc/po/ru.po
! 82ea3b52618af9d59e8b9a705bca7391  gcc/po/sr.gmo
! 05440c682d80df4b7d43ad914265f1f2  gcc/po/sr.po
! 3982a518f9bee3f807d4fec9b1ce3dc4  gcc/po/sv.gmo
! 1dd7d094cba73c4a84ec683b494b9d55  gcc/po/sv.po
! d2321ef60d7f6bcf58e3c491288122bb  gcc/po/tr.gmo
! 0286e8d52f56c9c1d4cce64ce76e57f4  gcc/po/tr.po
! 25e8b12c6741793730870a4645eaf27b  gcc/po/uk.gmo
! b00cda2a43bec932dc26a7a62d2433e4  gcc/po/uk.po
! 6565b3a2a12c2080fd9cd64dfc42bac2  gcc/po/vi.gmo
! 35c6841366c93c543aea41d49a20959b  gcc/po/vi.po
! 79b4bc47cc7613c7ff388ae28de20ae6  gcc/po/zh_CN.gmo
! 6b7c58fcff14f40c13371d312b1707a3  gcc/po/zh_CN.po
! 45a600cfa371ed5822650ec8b0b1cead  gcc/po/zh_TW.gmo
! 03aca84ca869f460221bf58140f96040  gcc/po/zh_TW.po
! 3e810a4ad7bb49c60f02b4cd9631fb28  gcc/poly-int-types.h
! 653045738566582cf810de3860dc9cb8  gcc/poly-int.h
! b63265778fad2e12ae472e77541500e0  gcc/postreload-gcse.c
! 6335227eb5d91a254fcd50a44e0687f5  gcc/postreload.c
! f2c1800ed41bd812f0023ec9476be06f  gcc/predict.c
! 2d7027b865f15345d18016536def0e97  gcc/predict.def
! 3ffe5c036e76418548382910f68886ff  gcc/predict.h
! ffa0ac5f57de240c2aff1e32b7a30632  gcc/prefix.c
! 52606b908aa60aec4ebd8754fdd3a8d1  gcc/prefix.h
! 240244b0fc346fd0cad227ebc35c037f  gcc/pretty-print.c
! 36cf753bd778904b86266d71a84cbc7b  gcc/pretty-print.h
! f4d80b76ca9fd611a89eb26a335ac5a8  gcc/print-rtl-function.c
! 620871aacc5dd204d4f7a26ba88fd3fa  gcc/print-rtl.c
! d42f0624f378967150c8244675db31db  gcc/print-rtl.h
! f687a5464ba4db8971b316012893fa55  gcc/print-tree.c
! dd88202c7885f5e3e50c22a5b73b473b  gcc/print-tree.h
! 9024db84423daa4a2e19e8742db51779  gcc/profile-count.c
! 392b2114ccc30539b6c40e0eea1fd589  gcc/profile-count.h
! 1b44e6f5afc1ef606b881598cc8887e4  gcc/profile.c
! 92e19f494d702423ea57ca70d07aa612  gcc/profile.h
! 2222787f926ca5327846090e4591fa83  gcc/range-op.cc
! 270efc867fdb2d3b17282de596f65d10  gcc/range-op.h
! 37752a1d96f6610050f3220b4b062c36  gcc/range.cc
! 8a55f6b0714096298a0c267d2c93c802  gcc/range.h
! 4466aa9a3d122cc1549d50b99284fb68  gcc/read-md.c
! 641f74be562c061ad76c25f358182540  gcc/read-md.h
! 3e153d95772f220936426e6dbfddd06a  gcc/read-rtl-function.c
! cb9ed6f9beb45255274771f0401e8ced  gcc/read-rtl-function.h
! 437121d85d30d0a998b32903bad42923  gcc/read-rtl.c
! ca583beab99b1d486d0e37ae7699bcb1  gcc/real.c
! eba2922f65dc437f981d495af9aea3e3  gcc/real.h
! 457e3af42be2fa1ae17b1f1a8d24bb12  gcc/realmpfr.c
! 92b92805d57b18955d48576ec085dd07  gcc/realmpfr.h
! ea54106d519e178742fdc5983d50e3a3  gcc/recog.c
! f9b0b9ccb8dce0dc6e8bd42ac39df744  gcc/recog.h
! 8e54776d694e025778117e5c6cd2b732  gcc/ree.c
! befe5e6a24516f07a0b1a18ea35c02d6  gcc/reg-notes.def
! bb6e216fc486b5cadc4ece706f7f2121  gcc/reg-stack.c
! ce2f803ba77e7c6cd65a618549c594aa  gcc/regcprop.c
! bde5467e48834f6809fe9cb47c41a8ca  gcc/regcprop.h
! 1420eec348e2fde96d1e5acc37e1d4b6  gcc/reginfo.c
! 8f4fe2c17357e9685afb16fbfadd234d  gcc/regrename.c
! bcbdd3b92acf14e4567d6d593f2135c7  gcc/regrename.h
! 0e8e6cb957a6286f48af42a43766157c  gcc/regs.h
! 54bdd1fa2150c00899466f5e44c3be07  gcc/regset.h
! 1e9242bc16fa3b3cb4f0ddd56e9ffe81  gcc/regstat.c
! c93b37d397b5c93b87ce1ad522f13011  gcc/reload.c
! a44890645b9dfcfa05c4af85a2fac907  gcc/reload.h
! dea38c72c4f9b81bd50774c1dee40cb1  gcc/reload1.c
! 5d7ea9a101117932e6ac39594b06fc21  gcc/reorg.c
! 4afb822d880f66219661578994d5d004  gcc/resource.c
! cd83d2a9e863eb3f902732831333489a  gcc/resource.h
! 491e08526137ec76f3066b0e3a204fc8  gcc/rtl-error.c
! 63bf1d95d167ccb1b416c22e60401626  gcc/rtl-error.h
! abb55417521c73d3ddfa65202e62bbdc  gcc/rtl-iter.h
! 6c258d748c725574ffe9c742761a8b3e  gcc/rtl-tests.c
! 0dd98e9f4d6ccae54a54472fd00090ff  gcc/rtl.c
! 160eb5d0d186585de6b61ba5d972ee7b  gcc/rtl.def
! 60d61a7bf84bfcfb028c1739312fa531  gcc/rtl.h
! bd655da7aaabfdbae83012592e6e1369  gcc/rtlanal.c
! 942d35a2f884f0f12d2001b6439cddc3  gcc/rtlhash.c
! 57e6da5db1b3709e1315094c4bf97280  gcc/rtlhash.h
! c677566b52c69cc4009d23260723bee9  gcc/rtlhooks-def.h
! 1462a0e3e247418bf9fefea584d37f6a  gcc/rtlhooks.c
! fef6ff58d122ba4c50c83473782fb490  gcc/rtx-vector-builder.c
! 9228a0a0c8df3d90b1337bdfb04450e8  gcc/rtx-vector-builder.h
! 524001705fe7d1b3b8fac2ca26c81436  gcc/run-rtl-passes.c
! 0116c6ac7b1b875e47af238fec34212c  gcc/run-rtl-passes.h
! 5dfa17f81fb7790b86c349c236b4f44e  gcc/sancov.c
! f240987e980f287b9805cfc2d5fd984a  gcc/sanitizer.def
! 817ddb7f7764595b40f6608ed6d3a6b2  gcc/sanopt.c
! 373f74032e8a5f451fed82a6278199be  gcc/sbitmap.c
! 483913290dec10f928e898c49a41451a  gcc/sbitmap.h
! 557abf726d1b4112b7487455dca2835d  gcc/sched-deps.c
! 4d0e82094d07a3d1fcb77597528574e7  gcc/sched-ebb.c
! af84672b488a77f55e64acc404a8247c  gcc/sched-int.h
! ca4aafee79a43508daae81cf16032056  gcc/sched-rgn.c
! 356c26e6ceb13bd21956b42b85cff4a8  gcc/sel-sched-dump.c
! b1acddcdb2c4787992303ad7d35aa2d5  gcc/sel-sched-dump.h
! 04779a2605008ae3c0a2b1c960265503  gcc/sel-sched-ir.c
! 0913097b5f6ecae7b8a67c820b11c507  gcc/sel-sched-ir.h
! 08d85de316f6a959a7d7305e10681aef  gcc/sel-sched.c
! 275948e3a332ad16e6906f53167f589a  gcc/sel-sched.h
! d02d17a85e55fa53a7b465e813d7c4ab  gcc/selftest-diagnostic.c
! a89173f7d4cb511e9eb93ef251ea5e11  gcc/selftest-diagnostic.h
! 74da6a05d71b05ca05670ee73c0d04cb  gcc/selftest-rtl.c
! 93aa8133ebc4486ccc93e798fe8ca630  gcc/selftest-rtl.h
! cd47a586f84774287b1ae6039918de93  gcc/selftest-run-tests.c
! 87497fb8d51a1b550167954a65252d22  gcc/selftest.c
! 600be880e7c6f53a990c540d0b454f03  gcc/selftest.h
! ef568131c8d4d7222af07d3763b56e65  gcc/sese.c
! 864eb28c47f8c33ba1bf884c029fbcc1  gcc/sese.h
! 00fd88b09937f2b769fa2f9272f7ab17  gcc/shortest-paths.h
! 4aa3a6a87e889e9aff468c2e5e85b448  gcc/shrink-wrap.c
! 5e637aae9a69290f9f96753c397c1d88  gcc/shrink-wrap.h
! 7badcd0ab93bdcec709d922156555d25  gcc/signop.h
! aa7c696f6bdad9a7b3a29f4655938b74  gcc/simplify-rtx.c
! 14fe5d55540c4c40ffc22d287df5df9e  gcc/sort.cc
! 1a7797b28152cdee032918d0640d8674  gcc/sparseset.c
! f4db2c7d894531a625d21c115830e0cf  gcc/sparseset.h
! 614175220fb8060c8d11c8559a6a19b3  gcc/spellcheck-tree.c
! e673d6258f44a0397b3b513ef5b76e71  gcc/spellcheck-tree.h
! edd3df81767520e0bb821454c8108b08  gcc/spellcheck.c
! a0d6fb614c99b5ed0d82662ab76e6244  gcc/spellcheck.h
! 77c346ce015590ad6825aee3471d3dcb  gcc/sreal.c
! 684d31c10fd2b3dd6682e100d1f6e960  gcc/sreal.h
! 1e9d92d6871de32f21a2ec26e1d9f7ed  gcc/ssa-iterators.h
! ee59d89281c80b33f858abafe542140a  gcc/ssa.h
! 1cd8ca042d449f43936e08eeb659944f  gcc/stab.def
! f8d497da9f2552791c318e340c05442f  gcc/stack-ptr-mod.c
! 9230e321541e08cd87dda997058c5969  gcc/statistics.c
! 4c1ba43b39de56389d70edd54dbe93eb  gcc/statistics.h
! 69aec0a6256ffea36bec6b009cbee78b  gcc/stmt.c
! 92af97d1e25f56f0c912e3cb2deb7f26  gcc/stmt.h
! 420e9bd3b46d5fd2bd1725c6e96f6684  gcc/stor-layout.c
! 1e2af7b36b8fd71912d0bb841be0513c  gcc/stor-layout.h
! 27b1078769e011b4a396d9ecb63d9708  gcc/store-motion.c
! cbb758f617ea43fc42398026a1f8180e  gcc/streamer-hooks.c
! 568ee7272f27d312c2df956eca4d94a6  gcc/streamer-hooks.h
! 0de22eb2b12b770cb6de819ea905a5da  gcc/stringpool.c
! bfdca4569d35709ce75da33b94ac2e70  gcc/stringpool.h
! 9e6308f2e503cd91a233707e5ed2ce2b  gcc/substring-locations.c
! e4a560b5e6e370fac3e19056516f5d6a  gcc/substring-locations.h
! 4ed30ac7489a61ef5a3917e251049626  gcc/symbol-summary.h
! 6a6e3a4f5b2ad563805d660e4cee5687  gcc/symtab.c
! 15199dc71e42c38afeb48e52386cd7c9  gcc/sync-builtins.def
! 7cbf7fc7e93019e864ca3804aadb5329  gcc/system.h
! d6ecdbf40714f0d6f9a354ad491022af  gcc/target-def.h
! 47ee6bb619d9c31303daebd8d16a51e5  gcc/target-globals.c
! cc33296515dbe6d36bf2e748250b71ce  gcc/target-globals.h
! 28240c397814bb44a0b9b81c24f5c902  gcc/target-hooks-macros.h
! e2164620d88b7b5e86874b70ea560f64  gcc/target-insns.def
! 22cf28a9359902a598bfddcd32edf3cd  gcc/target.def
! 89a400520f2087866beeb8140416f45d  gcc/target.h
! d4582a9831d4b16fe13326c8c145c4e5  gcc/targhooks.c
! 7bbf8e5d152f6a9369b8fad9f737885a  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 73fc81a667f79d9b198a0655e6f5fd6d  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
--- 5495,6346 ----
  a71efd3e199a80ee07c7f350cc8fcf91  gcc/fortran/ChangeLog-2015
  87a1607d67d7b571432a0e83b1e4aabf  gcc/fortran/ChangeLog-2016
  1ee95f47d9685043c09a7b41933d263b  gcc/fortran/ChangeLog-2017
! 39853cc400101b0b047305cb3e912707  gcc/fortran/ChangeLog-2018
  65ff19d3a00eda2236e8a41b7f46ab5a  gcc/fortran/ChangeLog-2019
+ d1595b2ed8fb2a33f6ce0dc595f4f33c  gcc/fortran/ChangeLog-2020
  9e0636f92243fb9b3480e27cefc96749  gcc/fortran/ChangeLog.ptr
! ff3a70a964289eb29172b7a5e086ee3f  gcc/fortran/Make-lang.in
! c94010cef8a73c5e297afefe04caaae0  gcc/fortran/arith.c
! 5478da78bbb9c6f5ec6f4c291556f64b  gcc/fortran/arith.h
! e10f177dc7e3d6973918a96dc5e93a56  gcc/fortran/array.c
! 41d9862a96a73a3888dd71dbfd6a6f48  gcc/fortran/bbt.c
! b9648ed7c8263f2cec845d363a68ff72  gcc/fortran/check.c
! 4c8a8a5c9449c107c7e01bf7cc89b79c  gcc/fortran/class.c
! f5d7a68caf3076d5812b149cf771093f  gcc/fortran/config-lang.in
! 9ec79e4ff334ab1ae73233b75630f91b  gcc/fortran/constructor.c
! 8306e6e55c16d82d8de3979194536043  gcc/fortran/constructor.h
! b860d37e8ed1b28a0e78ef2e1737bbe5  gcc/fortran/convert.c
! b1628a6231ddb7f7e4b2cf44b836b928  gcc/fortran/cpp.c
! 315cf57aecb390202190f4259ba3a36b  gcc/fortran/cpp.h
! ee7a54e5c7f7a1043642f3148aa0e591  gcc/fortran/data.c
! 82bc765451efda646706547a38c09487  gcc/fortran/data.h
! da0ed52348d249891050d15225213ce9  gcc/fortran/decl.c
! c4f73bba061adfe9eabf763a1a418e5b  gcc/fortran/dependency.c
! d43b0d544fe709c25b81ee187b848372  gcc/fortran/dependency.h
! fc814ce5ee0d7b357f14b97588a3287c  gcc/fortran/dump-parse-tree.c
! d1cd71bb3644df2833513aea82c56ad6  gcc/fortran/error.c
! 40c222db9afb4aade2e78913d8cde34f  gcc/fortran/expr.c
! da3a0c04f8f87fdb6697ab1965ac58bc  gcc/fortran/f95-lang.c
! 5c33fb216098ae54c56bc71eb80126ba  gcc/fortran/frontend-passes.c
! 61d212b06741cc79879806a53df1eaa2  gcc/fortran/gfc-diagnostic.def
! 862a8dcb967ce0c214bce57208763cfc  gcc/fortran/gfc-internals.texi
! 8b712096f004065d234038713d5bf54e  gcc/fortran/gfortran.h
! ebcc4785e72bfe5d21a6d084addf3537  gcc/fortran/gfortran.info
! 58ec938eb719edf2ffe5dbfcce4dd1d8  gcc/fortran/gfortran.texi
! 13ef845dc55ae5b20f8afe50368263ea  gcc/fortran/gfortranspec.c
! b6aa8016346c509bd9d98ab0c07934ea  gcc/fortran/interface.c
! b6f1a6482d5c8b97c0bc41685787e8ce  gcc/fortran/intrinsic.c
! 43926b3d3cb608065d7e2befcc1fbe32  gcc/fortran/intrinsic.h
! 415a7fa5aad704b33c61cdb38b93fa0b  gcc/fortran/intrinsic.texi
! c6a48e4292d1489642fbb1664cc3e6c3  gcc/fortran/invoke.texi
! 4021a600e4ca47c88cd34cf59f8691b0  gcc/fortran/io.c
! cfb055fb9cb1a68a9974d4b65003c3cb  gcc/fortran/ioparm.def
! 04eeec6d55c2c7d0d92e7d8774c9b5f3  gcc/fortran/iresolve.c
! 074cd74d31e55c226d9f97157593dc3d  gcc/fortran/iso-c-binding.def
! efbaccc5d8e94375f348176fc0781246  gcc/fortran/iso-fortran-env.def
! 0a1b06a8103dcc19be16396515acaa9b  gcc/fortran/lang-specs.h
! 09e0020c10cf80b36c91236e34f4d348  gcc/fortran/lang.opt
! 4c92759881e572b635603ebb42a2455f  gcc/fortran/libgfortran.h
! 2e4d9ea3c639a6715051ebde58262ecd  gcc/fortran/match.c
! 7da585148fe4f59ce5a733a65b82746c  gcc/fortran/match.h
! af7a3aa1a1204dd37e34eefa510399cd  gcc/fortran/matchexp.c
! b3b81cd6b5386b281800a93f8e4ade0b  gcc/fortran/mathbuiltins.def
! 13cec2483d7671b602f3161db57a1fb0  gcc/fortran/misc.c
! 34d7f6342ff4b004dd80669ed3646570  gcc/fortran/module.c
! 3f332e4dd1a46dd98884958785e287cc  gcc/fortran/openmp.c
! 94fda6c5e12794dcdd5f378023229c01  gcc/fortran/options.c
! 7a1ff8b370a5de7e6dc995c1b743a4df  gcc/fortran/parse.c
! 35501e834b34f6440232d3c4c2bbd56c  gcc/fortran/parse.h
! a0839b6b84bd126d6aa5148960cfdc49  gcc/fortran/primary.c
! 7c7879d3180ccafc514d6f1920b1066a  gcc/fortran/resolve.c
! 15654692fbf8143321f77d50d70bf5db  gcc/fortran/scanner.c
! e878063bf09025352b6adf6b5d0ab78d  gcc/fortran/scanner.h
! d3c787af94e69f46f1e85afb889fc65b  gcc/fortran/simplify.c
! 52826d539d76cfcf3218c02df40aecf6  gcc/fortran/st.c
! c1a3de4077034d12dd68fb20cf9de471  gcc/fortran/symbol.c
! dc10ee025e16e46509e02167a75b52c8  gcc/fortran/target-memory.c
! 0ce203c000f89bcab4e2f2b5885ec8f5  gcc/fortran/target-memory.h
! 53e021ac53a04310c396ff2ff14f7232  gcc/fortran/trans-array.c
! 7573a17519177720f72e955cea6c4ffd  gcc/fortran/trans-array.h
! ec0059b31f88bbb8c77c8501ca451961  gcc/fortran/trans-common.c
! 42b243fa66682aca47b104fdf75790a3  gcc/fortran/trans-const.c
! 08d74bbf02852561cf584f029734d164  gcc/fortran/trans-const.h
! bc9eb123aed6778c28f36f73cb9b2a69  gcc/fortran/trans-decl.c
! 79c4da6d3df0aa48fde2792442e8cde4  gcc/fortran/trans-expr.c
! 626235aa1e06873290fd654dc6e9b616  gcc/fortran/trans-intrinsic.c
! d442a2920715f33cb7ca72f6cf551377  gcc/fortran/trans-io.c
! 3aceabd62b350bd42caa5dc8a1bb2e0b  gcc/fortran/trans-openmp.c
! cbe07c0d52783e66e642dca959a50e01  gcc/fortran/trans-stmt.c
! adac91a5c3e9a289d1e225ac37f895f2  gcc/fortran/trans-stmt.h
! a217e68738bdcc2fb42dc6d5abada5c2  gcc/fortran/trans-types.c
! a1fc23f04301b08a0068afcd35eff141  gcc/fortran/trans-types.h
! 8cbeb3565f45e859c5c085e783fa0db6  gcc/fortran/trans.c
! 65f6796a8401638ce9d34408602e8797  gcc/fortran/trans.h
! 4933a105c1594895df1049f4ba65aa6a  gcc/fortran/trigd_fe.inc
! 83124a3111ee9ddc77f41f656b346c44  gcc/fortran/types.def
! 47606f3caeb8667613c0b0a243ec2342  gcc/fp-test.c
! a7378b0ee32d1a8103f2106f776ddeef  gcc/function-abi.cc
! 85a682a8db05fbb8149ff43de9b26ac7  gcc/function-abi.h
! 3be627fea3a3a6c9f0031cdd2808bada  gcc/function-tests.c
! 68fc8b62afa68e6f2d869346c445e1d6  gcc/function.c
! d79e4923da49c9efd0d27575ebe0c3e0  gcc/function.h
! bc49cccf40de468c5af3f7b3077601e9  gcc/fwprop.c
! 628dd8bc4c3033a144ca9d7411e136d8  gcc/gcc-ar.c
! 9b3cde5e018ae1629dad78df7495c686  gcc/gcc-main.c
! 36270fbfd00ae013d66af03d3b996492  gcc/gcc-plugin.h
! 219ebc9f8c4780423b0e00faf25cf15c  gcc/gcc-rich-location.c
! 7c5eb0bd2d135dca8076b6bbc8e46fe2  gcc/gcc-rich-location.h
! a3ee86700ebe6da680866c325a9e6d01  gcc/gcc-symtab.h
! a3276c3d0e67868a7c0a8030d79a1c39  gcc/gcc.c
! 43c0152df742051b3b7f216ea3327943  gcc/gcc.h
! 90734fcaf7c44a435600bae6c4f56607  gcc/gcov-counter.def
! 2b180ee6c8ef5773ae1afe08e2a54ba5  gcc/gcov-dump.c
! e032de0a4f21692633427f5784f1ba2a  gcc/gcov-io.c
! 61c2e6a9bd20c215b89cc0a608b46955  gcc/gcov-io.h
! 9afcd572ff991ca0ef8d882afb91238d  gcc/gcov-iov.c
! 667795832b55dfdeeeba297c67c51ded  gcc/gcov-tool.c
! 8a4068270d8814f765ea71e10702e412  gcc/gcov.c
! 9ffcae42c1998aaa1d1ad9d8513bf523  gcc/gcse-common.c
! 54daf4578fe36e4c52ee5e02e3543dbd  gcc/gcse-common.h
! 8d9f85a330d647efae671bfb616adb3b  gcc/gcse.c
! 4aa40aaadd49ce353aa1bbbd30f305d1  gcc/gcse.h
  af83e4b4719ee065872080b713d24c2f  gcc/gdbasan.in
! aaa4d9f783dca382190c06942747b88f  gcc/gdbhooks.py
! f7a76c2178455861766b55b2ea6c1a90  gcc/gdbinit.in
! b97506b2880dff907fe0885ca976988d  gcc/gen-pass-instances.awk
! 14f3e6f58d913889ab05499961d1d8ce  gcc/genattr-common.c
! c8daa28b1f2ce679ebe5b81d97a39bf0  gcc/genattr.c
! 857bce67d2baacb488ee062b6aad37a7  gcc/genattrtab.c
! 5e22519ce3f1209f28adc934102abc6f  gcc/genautomata.c
! dced76e3826cb05f9a04f180df8e979e  gcc/gencfn-macros.c
! e10cb04b2dd3349bc164b72623aad725  gcc/gencheck.c
! c920211a66f60aee1bd685d466ad0b1b  gcc/genchecksum.c
! 3baf30d853d5796d6c4294c6e853096a  gcc/gencodes.c
! 5f09fa48385b2d5d96276f1de8d69132  gcc/genconditions.c
! 2dcb52a0fc3fa4fe0804cf6fce152ed2  gcc/genconfig.c
! dd3c872700fc3cbd561dcd8da99e48d6  gcc/genconstants.c
! 28414f1934057369df9b38283563f07f  gcc/genemit.c
! 5515dbfe6da4ebbeeb7c82287ab99cb4  gcc/genenums.c
! 837b58b37f8a325a85eff474915a9d44  gcc/generic-match-head.c
! 1fe363efff16e5f61dc836ca90c79ac6  gcc/generic-match.h
! 0851ab0217a3550c4694dc56da1d14a0  gcc/genextract.c
! d8284cac8286a7a7d64ac13ec870daa7  gcc/genflags.c
! 950b7513fef07bfbefb505897b6d7448  gcc/gengenrtl.c
! 43450f708d750d4d2fbda2713d577e38  gcc/gengtype-lex.c
! 8ea8a37c0cf6f91ded53bb6db384da0d  gcc/gengtype-lex.l
! 548a8efcdbfd7022ebabcc0492a34cf9  gcc/gengtype-parse.c
! 87b2b2c69bc05df6161d23040833a374  gcc/gengtype-state.c
! a37cbb582a0ae6a61b86eda06ffb9ac6  gcc/gengtype.c
! 94881ec27434a3f6e7b70357815509c7  gcc/gengtype.h
! 89b650e6804cbe365244e8a1a6c62d2f  gcc/genhooks.c
! 3153b01c6502511189cd27b40fac2dbb  gcc/genmatch.c
! 54cca04c9cb300d0ab0ad99273a73e7c  gcc/genmddeps.c
! 0b1ec8e93aaa85abaf253992e194254d  gcc/genmddump.c
! f1d29bde9cddf2b5a4a9c55cad19d1fa  gcc/genmodes.c
! 573d812be2fa353cda5db820100e6420  gcc/genmultilib
! 9f48352ced1163a4587ebee2051ce0f5  gcc/genopinit.c
! 7e1b609db6d5c123ae6901c930f01735  gcc/genoutput.c
! e26a33688e93a17c6d28f9f1a142a5a7  gcc/genpeep.c
! 9d9e66a6ea9495706ea11325b56ff947  gcc/genpreds.c
! eee65b830d92b08ccefe0305a7ecf443  gcc/genrecog.c
! 7b267fb18416db55766adcdc5040b393  gcc/gensupport.c
! 276b0239802b262fa9255b7d95ff3a50  gcc/gensupport.h
! ee26a74157272577fcd385b7f1cc5e68  gcc/gentarget-def.c
! f57cf443d784ee093c2c5ba1ab06c0bc  gcc/ggc-common.c
! 579c17aa1e95997848af63105dab74db  gcc/ggc-internal.h
! 17c34c7502be938cc4e7b52a66470c53  gcc/ggc-none.c
! 7bfeded454c8971d940aa36328e9cf6d  gcc/ggc-page.c
! ecf8d9fd8c961c7c8143950d0dffa4ad  gcc/ggc-tests.c
! 8c4c95942af92fe1df1464e359aa00e5  gcc/ggc.h
! dcef4e7504f56e78778689f65c6435c7  gcc/gimple-array-bounds.cc
! ca2520162ec5b4b80e57e4f46690e4c6  gcc/gimple-array-bounds.h
! 0050f15d9f43589b0e2f6d2502d4f292  gcc/gimple-builder.c
! 6a22e0a2c2e663ac23a368e20fa1fe9c  gcc/gimple-builder.h
! f8ba9cab742ed3119a01b78072b86fa9  gcc/gimple-expr.c
! 6b5f6aa1713f09243d1159a75ecd7976  gcc/gimple-expr.h
! 2462a2e7fccc33fee874f0fe8d44d2b6  gcc/gimple-fold.c
! 19b1447666533a8e534b359325a40685  gcc/gimple-fold.h
! ae9c923ed2c8a79aaa3ca54a22881ef0  gcc/gimple-if-to-switch.cc
! 16b85d8ae65dd9edd56bbf0d38b43aa9  gcc/gimple-isel.cc
! 58eb44f6e28f845aeb88cd375156397c  gcc/gimple-iterator.c
! 6fd4aeb4f777fa04b054a2682011f913  gcc/gimple-iterator.h
! 3471799f94511265663f55a068653533  gcc/gimple-laddress.c
! 15a508d2b59347e0a94e1bd8c7d9dff4  gcc/gimple-loop-interchange.cc
! aa23525c55951890a8fda49ab63fe9fa  gcc/gimple-loop-jam.c
! b7bd86f1e8a440a81a812eede18b61dd  gcc/gimple-loop-versioning.cc
! 70563b4bd57a3dbe8cc827ff4e0397f2  gcc/gimple-low.c
! e0253d8d1270dfd7059ea3316782e941  gcc/gimple-low.h
! 5e921a612fa7af507b01e317dac6506c  gcc/gimple-match-head.c
! 0a23920f2e7d4e6b624470e6baea813a  gcc/gimple-match.h
! 5f9cee3b6f666df0127815986e25eda3  gcc/gimple-predict.h
! 0780ae9f7851e54c1063bb2e57d983ab  gcc/gimple-pretty-print.c
! 3ff1cbafa7db47dee0ab5fd8570498e7  gcc/gimple-pretty-print.h
! bdda27c9d29ee72cf684145ff6a2d505  gcc/gimple-range-cache.cc
! 61c00a870b28816a35a9cf192e3f250b  gcc/gimple-range-cache.h
! 68bc95c68a5d3ef09ad9d5cb40fc7394  gcc/gimple-range-edge.cc
! 723ede0e82e5626cca6fcbb16ff6f571  gcc/gimple-range-edge.h
! 13413d7cf635bc5431995e5c77657b3c  gcc/gimple-range-gori.cc
! f61a8ff332c742ad4bc134e6154e28c7  gcc/gimple-range-gori.h
! bc5838ec9e016c7427658d8c118a40a4  gcc/gimple-range.cc
! 2d980e6a5826d8329a850f52ac7682f2  gcc/gimple-range.h
! e3b577427781a76267364ec3efa54f51  gcc/gimple-ssa-backprop.c
! 07f08a30d5a28800e5c2ea26c217d226  gcc/gimple-ssa-evrp-analyze.c
! e5bfc6ff4a07f1f5591f18021b017283  gcc/gimple-ssa-evrp-analyze.h
! 84bc1f1b8180d0896c63d8a631d2008c  gcc/gimple-ssa-evrp.c
! f96959d86d6678e1a7fdf38b6e127bcd  gcc/gimple-ssa-isolate-paths.c
! b6d23698f494095d6a2998fccaa3f8b9  gcc/gimple-ssa-nonnull-compare.c
! aced049779ec566808a605d67e3515fc  gcc/gimple-ssa-split-paths.c
! 1d753067436e68b37dba76eb3eb35ff8  gcc/gimple-ssa-sprintf.c
! 352c8c44167851386876c1fc86f631ab  gcc/gimple-ssa-store-merging.c
! 3e8d8a511e1e447865e4c63ef9d1f0dc  gcc/gimple-ssa-strength-reduction.c
! 3ac9a7ed69ad0ec6148c051f54d9a4df  gcc/gimple-ssa-warn-alloca.c
! 3a0b8da8458ff788072a9389e1e51b1b  gcc/gimple-ssa-warn-restrict.c
! cc4f6240e418b12d3aa1b0720c58934c  gcc/gimple-ssa-warn-restrict.h
! 495e1a1ff15867379be8e30c1585c550  gcc/gimple-ssa.h
! 86582d0b25b77eb58dcf6d25a67f7bd7  gcc/gimple-streamer-in.c
! 179791432d914d2b4a5bc300bb27ecda  gcc/gimple-streamer-out.c
! 1af5ae446d1fd8b5441632e7a4149331  gcc/gimple-streamer.h
! a03a2727de3be34d59e9134e6f48e5fd  gcc/gimple-walk.c
! 3e8f456bcdd4750b0b7c2ea2a509e3a9  gcc/gimple-walk.h
! 2ca8b41f8255fff815f1be826fda5c1e  gcc/gimple.c
! 4817f53b0ae7f841b0a2912852140f7a  gcc/gimple.def
! 4e58785096fa2390261f56f7a49c11ca  gcc/gimple.h
! e9afce92bc9364d0b5565b93832dc4e8  gcc/gimplify-me.c
! 224fdd664cd0f580204dafa07a303940  gcc/gimplify-me.h
! 38cf4f0222177ed36a09320ea9c68e2c  gcc/gimplify.c
! 856b47f3f4a5bbd47b90f36cbc2fb193  gcc/gimplify.h
! 911cef7485ca1b6df98ae6a03e5f003a  gcc/ginclude/float.h
! 5c63f78b341c5627e43ead0434e54a83  gcc/ginclude/iso646.h
! 84c0769f63e132d952967dc0a0b29d1c  gcc/ginclude/stdalign.h
! 5e924f4859a353cfe5630921ef7419e4  gcc/ginclude/stdarg.h
! 49e6aeabbbbf77f94a706ba24b179f19  gcc/ginclude/stdatomic.h
! bea975cc4cca239db9592b67c10bbd12  gcc/ginclude/stdbool.h
! 7b88ecc021d23f09422baa2497aa596b  gcc/ginclude/stddef.h
! 1531f66f300c490fe42e9063e778f3a5  gcc/ginclude/stdfix.h
! 62c6e3d3db397c54df8b35ab5256d7c1  gcc/ginclude/stdint-gcc.h
  f85aa0745c3e9e0d32fa64753089b2f1  gcc/ginclude/stdint-wrap.h
! f600ba03fe6a2c3cd6c70bcc66153eed  gcc/ginclude/stdnoreturn.h
! 9a059ab5591828a6c3d62d5222c2279b  gcc/ginclude/tgmath.h
! fd1e7b72f05881b3313665c73e2f4da9  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
! 5081e1e198938204286d03d45535b34b  gcc/glimits.h
! 1318fd56a24d0f30ce785f55461ed461  gcc/go/ChangeLog
! e905ea0930382dd7f885f6df4e826e16  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
! 441e07f72df962bba81b0fca4787a622  gcc/go/config-lang.in
! 88479225176a663f9ecb3aed6b241ad6  gcc/go/gccgo.texi
! 1bfe12d4d420dea782bfc43f73f50629  gcc/go/go-backend.c
! 36093348dc9f5bfa786624db0014386e  gcc/go/go-c.h
! 19e44eeadca75d05b7d0722682e1268d  gcc/go/go-gcc-diagnostics.cc
! f5b8f5e58f1495f1a6fa986687a114c5  gcc/go/go-gcc.cc
! a64e89816f7f16f13cbd044f4c56515e  gcc/go/go-gcc.h
! c48761e2b947c22f3ca2f5eed4f8cdf9  gcc/go/go-lang.c
  c5d6aaa7e913ef205113a2bba2e5206f  gcc/go/go-linemap.cc
  91c7a6773e207cc086ae0888826cc3c4  gcc/go/go-location.h
! 3a0ebd75d30f31d898f41763a9326903  gcc/go/go-sha1.cc
! 5345db4cb134b73159be87b15d9d9fae  gcc/go/go-system.h
  5d4950ecb7b26d2c5e4e7b4e0dd74707  gcc/go/gofrontend/LICENSE
! 32c90d143f74b7a667fbca19dbfe6fea  gcc/go/gofrontend/MERGE
  3a55d95595a6f9e37dee53826b4daff2  gcc/go/gofrontend/PATENTS
  31c16a91d82f8ad3319819ebbba2d17f  gcc/go/gofrontend/README
! 38df5a2d45162cae2b454cd17fa8df7a  gcc/go/gofrontend/ast-dump.cc
  456b6d4cc785176b6e3eb0c685a93b39  gcc/go/gofrontend/ast-dump.h
  32aa7052db47bfc5454f727796ff9e56  gcc/go/gofrontend/backend.h
! f4698d5111935f1c789b7efd8ed91a74  gcc/go/gofrontend/embed.cc
! 374636e1427f469d60b661c2c2ec21d0  gcc/go/gofrontend/escape.cc
  ee8753eb1d8ca2fa168f6a71d3991455  gcc/go/gofrontend/escape.h
! 41e47500f61f75ad228a7d51a2df529b  gcc/go/gofrontend/export.cc
  b72c14ae63bb87f55620d747d46e54c7  gcc/go/gofrontend/export.h
! 01ebbe3abbfdc2cc1aa110e0df4d84f3  gcc/go/gofrontend/expressions.cc
! c87e0f8b68d6e4e8638ca14783d9c684  gcc/go/gofrontend/expressions.h
  bf7f8a519eadaa90804fe15cfa37ba6f  gcc/go/gofrontend/go-diagnostics.cc
  accfd5ea41ee789e6adbaec31a228cfe  gcc/go/gofrontend/go-diagnostics.h
  19e66447fa803385274b4e1a7501a4d5  gcc/go/gofrontend/go-dump.cc
  e3f005ccc40000dcaf14ab6eec979f69  gcc/go/gofrontend/go-dump.h
! c5fba9a845a2d2f13e8459bdec0d6b18  gcc/go/gofrontend/go-encode-id.cc
! d1f133d9f54a935571cc84512acdeb69  gcc/go/gofrontend/go-encode-id.h
  5c3b272e93c618f5e831eccd285ded86  gcc/go/gofrontend/go-linemap.h
  c08c0bc386a3e50faacf99daf94c080f  gcc/go/gofrontend/go-optimize.cc
  ead5ac25b7b99d361225e0fd940e286a  gcc/go/gofrontend/go-optimize.h
  5b59619fab7e543c5bb28dd8a6d62793  gcc/go/gofrontend/go-sha1.h
! 8d64d49cf01e7d7605f32b644d82c7e1  gcc/go/gofrontend/go.cc
! 12e12b97da3aa5556d12fa3d6b869535  gcc/go/gofrontend/gogo.cc
! e18f70d89bfa53160912cf9e9be1a912  gcc/go/gofrontend/gogo.h
  f9015ccccf7764d4c6eeae1bd5e01c7f  gcc/go/gofrontend/import-archive.cc
! 1496f53f85d6a3a7304496aeaad6272f  gcc/go/gofrontend/import.cc
! 0a9e27f1c3baa96ef288093aae5e2d3d  gcc/go/gofrontend/import.h
! 81f7aa5cb47f00e4c16a0f9af7c54b10  gcc/go/gofrontend/lex.cc
! e334b91562a94d1584423d0152a3408e  gcc/go/gofrontend/lex.h
! 43b62193a1fb46a6002699db1d668d60  gcc/go/gofrontend/names.cc
  98235b1a736055cd6a130337a9ee8e8e  gcc/go/gofrontend/operator.h
! 13c5b5418ef8b2b082fc2dab629bdc49  gcc/go/gofrontend/parse.cc
! 1718bd1f08e3ba35038cc644bc16f687  gcc/go/gofrontend/parse.h
  2c0d81f700bca5c56dfcd3a7673e2e82  gcc/go/gofrontend/runtime.cc
! f5457f31b072a79cb18b4a3779db3ab3  gcc/go/gofrontend/runtime.def
  978a7b1924ca7f696fa5d0da3c9ccf60  gcc/go/gofrontend/runtime.h
! f966b58e11b83f1b8890c1ef9331b22e  gcc/go/gofrontend/statements.cc
! 2eb4054e4a44955e627d6732684b0563  gcc/go/gofrontend/statements.h
  bfc57c7a1e73452c4b277ad13efbddbd  gcc/go/gofrontend/string-dump.h
! 37cd4f1d749e2cd005a072ec909e5833  gcc/go/gofrontend/types.cc
! 1f89d4553c3d2e12136f23fee3bcb4d4  gcc/go/gofrontend/types.h
  3662dad559a197b0771d9930d494949d  gcc/go/gofrontend/unsafe.cc
! 090095c2b56e6d719c7e5ec12e5daf7a  gcc/go/gofrontend/wb.cc
! e54fa7b2eb4871dc0180ab15d67520d6  gcc/go/gospec.c
! 84e0725f269b734371a03c6a936b80ac  gcc/go/lang-specs.h
! 21223a7ec8f67e860c302b35f751e136  gcc/go/lang.opt
! b920757dfe5652d51b19446f99c28a4b  gcc/godump.c
! 0f5819a7cfb5d152bc73620584ab9694  gcc/graph.c
! 6518582a0f750ebafd37191f5ab8ddc9  gcc/graph.h
! f571062b3e3399dc225a203aaf0453ec  gcc/graphds.c
! 3a923748471bde9c76981812de6e8d96  gcc/graphds.h
! cbb74dcdb56c5350c4d5e724b52b83b4  gcc/graphite-dependences.c
! 16dfa8fb215204566b6a63c2dd4a4a00  gcc/graphite-isl-ast-to-gimple.c
! 40078652243dec6bde96bc9605161830  gcc/graphite-optimize-isl.c
! cac5a3a0a5507ee75db4b2d77657d37b  gcc/graphite-poly.c
! 17c9801b105ba432f28a37f75daf7d2b  gcc/graphite-scop-detection.c
! fe9eb63ea539aeda358a1205a887b3a5  gcc/graphite-sese-to-poly.c
! 5cfa977a168e0076f0a61905e2d42061  gcc/graphite.c
! 6d40472c6a6ca2e407b9fb53752d325b  gcc/graphite.h
! 9c20fa595654927f37b82de67fd0bc66  gcc/graphviz.cc
! 7f19dc16c2b154abcaac4827fd84d9db  gcc/graphviz.h
! 0e72d362ed4037146374926a642a9eda  gcc/gsstruct.def
! c5513ef74034b4747840c3ba1832b32e  gcc/gstab.h
! 0ad3735a86e85c1288f083d20419774a  gcc/gsyms.h
  c32a1d882e7039afe158bb9e59b65223  gcc/gsyslimits.h
  053ee4a84e4593c88c088f25e153d1a5  gcc/gtm-builtins.def
! 7a5ce92e9ebe94f4c30d2e485e7f9c74  gcc/haifa-sched.c
! 69070a6f376400ec35ffa830de4144e2  gcc/hard-reg-set.h
! 6242bc0cf92fb018b511de099c4f2f24  gcc/hash-map-tests.c
! 8de07ddcae80f91418a94b24e3646990  gcc/hash-map-traits.h
! 7429369f6658981db56baaec01d642bd  gcc/hash-map.h
! 16e2f9f6b430ddce706e730efc684112  gcc/hash-set-tests.c
! 1cfe5f517d788192961b7aaa5764857a  gcc/hash-set.h
! b2326f04bc12ea8777ead7646b0e123d  gcc/hash-table.c
! a12365c0cfe3f735c645a4b77894a99a  gcc/hash-table.h
! b8e10cc03382e6a86da9ee13f1772130  gcc/hash-traits.h
! fd9d4e47e708e95cf233e8a1723b36ea  gcc/highlev-plugin-common.h
! 0885495cbfdfbecf32be7af9c2490942  gcc/hooks.c
! 484c05f4c7c536e681b131ca3219752b  gcc/hooks.h
! f5c07894fc823218e9f5099bc58d41fa  gcc/host-default.c
! 9820ed482f076272a9da16ab933a4a9a  gcc/hosthooks-def.h
! c295442f623ae639ab0eef77ed196a06  gcc/hosthooks.h
! 4e7abde5d74479bb9eba1e320701ea1f  gcc/hw-doloop.c
! 47380fcad22a8fd1e1a458f7d1a9e758  gcc/hw-doloop.h
! 5447fa3d6d110fde15af8fa04ca0f1a1  gcc/hwint.c
! c753347aefd98061e32a83982d6c8f1b  gcc/hwint.h
! bb01b04dd711f32f99184a693ca3c079  gcc/ifcvt.c
! 5b179229655a9e1ff4addac6bd17bfd3  gcc/ifcvt.h
! 4a8573d35397afe052d60dc399f91959  gcc/inchash.c
! ff9cd748484a95fca3cf23a3ed3844e7  gcc/inchash.h
! 10154f3e446307647acfad7a9257e8c0  gcc/incpath.c
! c890af2497a7295e5ad9f2603cf17cb8  gcc/incpath.h
! 49c0905b34673d1e7112d909ab59ab50  gcc/init-regs.c
! 58658ed4853449eb71ecc2faa5fec8cf  gcc/input.c
! 3e1af2416ad34267258219c82ee2e784  gcc/input.h
! 8448a04e26d84db7cae7935f7d8c3b9a  gcc/insn-addr.h
! 723316db4cf40aed5f78795fd24221c1  gcc/insn-notes.def
! 7f143576fc4600b1f908b599cc1d58b5  gcc/int-vector-builder.h
! 38cf6f9f47fdd1f319fd27e209ea3e3c  gcc/internal-fn.c
! f3f89b671d0605b3e93ee9b6ef8a3852  gcc/internal-fn.def
! de5c239aa4766cc69fc2017ae8e7d8d1  gcc/internal-fn.h
! 6aa6c9959854056e3c3e0d2587f2ef78  gcc/intl.c
! 0fef88b77c65fd1ec349ae84ced8a83d  gcc/intl.h
! 57522642f0e35761146d57a1f4971ce7  gcc/ipa-comdats.c
! dbd6245c2c0bc4886f24cb2fc0f0bec6  gcc/ipa-cp.c
! 0ca725ecef6f1f086a5dd68523861ec2  gcc/ipa-devirt.c
! a48c5a327011724a19455045c1e16fc3  gcc/ipa-fnsummary.c
! f95a69b1f3983dc781ef570590f5b01d  gcc/ipa-fnsummary.h
! 06396f30697409d67438cc57d0d322ee  gcc/ipa-icf-gimple.c
! bde983e86d6dce7cfa528ed5003fbf84  gcc/ipa-icf-gimple.h
! f797e88796d2c2bdb45fdd0f7774f7e5  gcc/ipa-icf.c
! d1c62ca27392156d9ab55eb9a8c5941f  gcc/ipa-icf.h
! 6ff03f4502965e2dae22d99c4abbc97c  gcc/ipa-inline-analysis.c
! 8eb383763689a3d5ad9bd67cbd1fcb32  gcc/ipa-inline-transform.c
! ec72952e216f97113f1ba6e99817c9ab  gcc/ipa-inline.c
! a10b26f8b2cd4e43b6eb7b9c5fc18a0d  gcc/ipa-inline.h
! 527be6d4d86fbdd9748e4c8e967604f6  gcc/ipa-modref-tree.c
! 0d2c0f1bc1412e346c4a96960ac25b80  gcc/ipa-modref-tree.h
! b34f26fbc3fa70ef76fb873cc646c5b2  gcc/ipa-modref.c
! 24571d56e05a081b381bee5973dbc170  gcc/ipa-modref.h
! 7fa1822ba1a8b23a31dadc8f68c33f31  gcc/ipa-param-manipulation.c
! 0ec8c7dc1c02b4b835fb52f233bdcd80  gcc/ipa-param-manipulation.h
! 257879916ba7a05ee55dbe52f518dbc6  gcc/ipa-polymorphic-call.c
! 55afec3b06a051269d9c3495954f589c  gcc/ipa-predicate.c
! b6c2e60f0bb50b61ffc003d4287b4a7d  gcc/ipa-predicate.h
! 2c565d155fe9a836088f9f0b8d38b331  gcc/ipa-profile.c
! 14d0d0dbe85f834b11e4c50cb08ffb7d  gcc/ipa-prop.c
! db43a69947e08896b0deae8af495f3f1  gcc/ipa-prop.h
! 4d75dd61a8fe7a93586454a68d715a8e  gcc/ipa-pure-const.c
! f4b0cf2eeaf1190a6a7682b15df55bf3  gcc/ipa-ref.c
! b0b504a2c999e7b1ad1df73df84cfb8c  gcc/ipa-ref.h
! 4b604c3db2c1086771ca173c0fdd97dc  gcc/ipa-reference.c
! 9033a420e6a286037d901439da8f5ff2  gcc/ipa-reference.h
! e098ddbd4be0af0842f88e64e8f4466b  gcc/ipa-split.c
! 5539f0c1689812b826eb8f22f66bc112  gcc/ipa-sra.c
! 842380624d66fae05d3a693e5929ffa5  gcc/ipa-utils.c
! 1766c3b1f6b59b660404460b25d838d3  gcc/ipa-utils.h
! 9cdf0cbb22a93045634de6e5fc83cbb8  gcc/ipa-visibility.c
! 6ab4e45205e31cca2377bf609c076656  gcc/ipa.c
! 420f64db44a55dc486630154a503b01a  gcc/ira-build.c
! 2cbce09d0852b3b962ef019a924084be  gcc/ira-color.c
! 05ded0649c09aca2587c5e6478e40a1f  gcc/ira-conflicts.c
! fcdecd375e9f7dcef39dfb29545d6859  gcc/ira-costs.c
! 90a73493c275e6fa26e716b5f9a62dcb  gcc/ira-emit.c
! 5aec1e89bce0dbfd2b02b96804404e27  gcc/ira-int.h
! 6b1fed42d9f5470a586a9f4a2df1625e  gcc/ira-lives.c
! c365b13304c481cc4b9f3145c452a198  gcc/ira.c
! f2cefc86c9a11fe045772f372434ad3c  gcc/ira.h
! a034d62871bbde98ccf4abce95e4bbd3  gcc/is-a.h
! dd335e7d147186c7f4aa9327f600007b  gcc/iterator-utils.h
! 85c6f43bc72830eb74705d2f54169445  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
! 5177a0b7d3558762e662b8d676cde430  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
! 7a93c8cedef319d0da7ea43c5ac5fa02  gcc/jit/config-lang.in
  df53fb6b84c435b56ac2cb2727b62b27  gcc/jit/docs/Makefile
! aefe50c9e37a2e7a06545dbc6b38bbd4  gcc/jit/docs/_build/texinfo/Makefile
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/_build/texinfo/factorial.png
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/_build/texinfo/factorial1.png
! 27acbf7fa2700f2093f680abaa233b0e  gcc/jit/docs/_build/texinfo/libgccjit.texi
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/_build/texinfo/sum-of-squares.png
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/_build/texinfo/sum-of-squares1.png
! 4ac392e79208cea578e8f77fd205f5dc  gcc/jit/docs/conf.py
! d956eed537297cb449649a3680f9e6b6  gcc/jit/docs/cp/index.rst
! 2651cd1ee910d13946f20f5d24643cae  gcc/jit/docs/cp/intro/index.rst
! e129ea685dd93a066f970538de39fb10  gcc/jit/docs/cp/intro/tutorial01.rst
! 417a26847dcca161201ac3dc975710f6  gcc/jit/docs/cp/intro/tutorial02.rst
! 903c805021c441ecc5e5148c9f3f0b86  gcc/jit/docs/cp/intro/tutorial03.rst
! 071ae55ee0ad46673eae816a542b7f3a  gcc/jit/docs/cp/intro/tutorial04.rst
! 81d0879ec3da87b9ad38262b1a9d76d7  gcc/jit/docs/cp/topics/asm.rst
! 3d1c6663332db948f4abc55e33cb1c75  gcc/jit/docs/cp/topics/compilation.rst
! 7418bd4a7434755c6443f89b5e9bd718  gcc/jit/docs/cp/topics/contexts.rst
! 1e240b0064582e38468e9946691d6be1  gcc/jit/docs/cp/topics/expressions.rst
! b6c1d6961aafaae57f9ddde47cc86b8f  gcc/jit/docs/cp/topics/functions.rst
! 3b88bcfd7c57b0b99df9e686bf2ea9bb  gcc/jit/docs/cp/topics/index.rst
! 703194459edf78a7deda83b6d25ee6bf  gcc/jit/docs/cp/topics/locations.rst
! f4b4d37712fe03787aec1ebfce8f1d57  gcc/jit/docs/cp/topics/objects.rst
! 582b5f0139e25c0e37e9d6dca6d2dac2  gcc/jit/docs/cp/topics/types.rst
  98a4c0efa41e5eb7177483e4cd99a81e  gcc/jit/docs/examples/emit-alphabet.bf
! 24095142bbe96437290a6248f5c22ac7  gcc/jit/docs/examples/tut01-hello-world.c
! 00a1dee07f6591b2bd78e3cc6e154aa9  gcc/jit/docs/examples/tut01-hello-world.cc
! 9994c34a7d43a857516aa1a28caeef50  gcc/jit/docs/examples/tut02-square.c
! d132178089ea0320c6d2dfdcd76ea716  gcc/jit/docs/examples/tut02-square.cc
! 448f12bbf8ed48b80a3d157f50ef8664  gcc/jit/docs/examples/tut03-sum-of-squares.c
! 062536d04b8c5f0c3e3b00406f11e3eb  gcc/jit/docs/examples/tut03-sum-of-squares.cc
  6369d2b07520cb0fc9d14082499f6be2  gcc/jit/docs/examples/tut04-toyvm/Makefile
  999c1d2b92d5d71565c67854aad60e9c  gcc/jit/docs/examples/tut04-toyvm/factorial.toy
  efe1998ded06ac3721d9ced4d96056f0  gcc/jit/docs/examples/tut04-toyvm/fibonacci.toy
! ae0ac29af361438e8685d31c71f90b2c  gcc/jit/docs/examples/tut04-toyvm/toyvm.c
! 8025e30a5a8e3e1830084243004e6a70  gcc/jit/docs/examples/tut04-toyvm/toyvm.cc
  3cbe9daf70398730ee60aa4caf2fc200  gcc/jit/docs/examples/tut05-bf.c
! 0cd2786bc335e1864971d23fc9a144b7  gcc/jit/docs/index.rst
! 011aca92c584ea08ce925e7ac431c80b  gcc/jit/docs/internals/index.rst
  d72502d68617b68873d385bcee6e9c4b  gcc/jit/docs/internals/test-hello-world.exe.log.txt
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/intro/factorial.png
! 431adb6806ca3fa64a74466fdce5f9e0  gcc/jit/docs/intro/index.rst
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/intro/sum-of-squares.png
! 03421f416ff6c8c550c002783429da66  gcc/jit/docs/intro/tutorial01.rst
! c4b1bad79e102f68d57bbea04d840d2f  gcc/jit/docs/intro/tutorial02.rst
! e025bb9ae26e458a776dc8c6a9d0e2b9  gcc/jit/docs/intro/tutorial03.rst
! 2e11a2b49b4ed5133b330e5ebbbc80c7  gcc/jit/docs/intro/tutorial04.rst
! 229a18e22637447793872a06d5648908  gcc/jit/docs/intro/tutorial05.rst
! 609ee22d98c43ae72cabc14bf7f0db0c  gcc/jit/docs/topics/asm.rst
! e14ac928eed672aa0813738a9e6be349  gcc/jit/docs/topics/compatibility.rst
! 5c612531bc64c6257894ef30908be314  gcc/jit/docs/topics/compilation.rst
! 7ec549ccc2b46e847d76c9456c1b8ecd  gcc/jit/docs/topics/contexts.rst
! 649de93c5bb4aef99b994291de78b3ae  gcc/jit/docs/topics/expressions.rst
! ab3e41b12056f1e3647f5e10f80566be  gcc/jit/docs/topics/function-pointers.rst
! cba3e883a8bc6016528431cd2976b97b  gcc/jit/docs/topics/functions.rst
! e3961d2b5be64b85c50bfa5c62a76728  gcc/jit/docs/topics/index.rst
! f383480cae732453fdc0840798156777  gcc/jit/docs/topics/locations.rst
! e392cf227ebf265d2cf6c0b91ff1ec63  gcc/jit/docs/topics/objects.rst
! 344f74a846df80e523e805d1f10e82d7  gcc/jit/docs/topics/performance.rst
! 1d1cf03656a1e7d868921b55ea6efafa  gcc/jit/docs/topics/types.rst
! 08893100252fb29f861871367e19088f  gcc/jit/dummy-frontend.c
! edf7af6ea819ca9e8808709a392fc48d  gcc/jit/jit-builtins.c
! 74c00b718035eddae618e017e314fa0d  gcc/jit/jit-builtins.h
! c11779a47ed270de47ed2a6154896ab2  gcc/jit/jit-common.h
! b6d839f613d7ba1e2049ece1005e6d9d  gcc/jit/jit-logging.c
! 7cba46ec14b5fdbeb1b2afaa60343ae7  gcc/jit/jit-logging.h
! bb210f226e0cf65442cde3139534b6fd  gcc/jit/jit-playback.c
! 986c94b3e1f28d1f08449933a2662721  gcc/jit/jit-playback.h
! 115de2434f9dac9fe426ec052bb0e781  gcc/jit/jit-recording.c
! 01b40c0320a54733e62039338f3329f1  gcc/jit/jit-recording.h
! 2b4df168c05501aec7ee5853e455165b  gcc/jit/jit-result.c
! 737e89d941a9eabb2a83eeb02c419aca  gcc/jit/jit-result.h
! a65e8f285929bc594ef4ed7801575b61  gcc/jit/jit-spec.c
! 62eec0f11512401a753b5d61e4e8fa8e  gcc/jit/jit-tempdir.c
! e3db52c2bdf2089f3518cad629deba24  gcc/jit/jit-tempdir.h
! 03df4ed6fc879ff9b7887db08cf7b72e  gcc/jit/jit-w32.c
! 9fa963f67a08d2dc921cd6d505db85fc  gcc/jit/jit-w32.h
! d85e22e3a831e54a55caed1c440a5a0c  gcc/jit/libgccjit++.h
! 833a65f04d21fabe3a57534d3a54f644  gcc/jit/libgccjit.c
! af3735f9a574fcc19ed30bac19464af0  gcc/jit/libgccjit.h
! 92eab2771f504aaf31f5de8e70466b9e  gcc/jit/libgccjit.map
  aaaa50e3d4a7c60cc413faccb2d831c6  gcc/jit/notes.txt
! 33509cf6c78192754449490531df9afd  gcc/json.cc
! 1751079be41a6e0e3a93335a8c8a3487  gcc/json.h
! f46f8a420e068add24447575c91851a0  gcc/jump.c
! 8f385b34eb3b04ffd9416f38a57cec77  gcc/langhooks-def.h
! 1bb1f2cc5fcaa98339e1031e35334b4b  gcc/langhooks.c
! 79d19ec345ccfb73e37c51d98f9c7319  gcc/langhooks.h
! 2966a137017533401da8437bbd04f2a9  gcc/lcm.c
! bdae38125e17ccdbcbd3740ff81dfc29  gcc/lcm.h
! 6d1fc2506b845573b3a3c469b6f7c9e5  gcc/libfuncs.h
! 583b6faaa019e1ef72380c889fdec5cc  gcc/limitx.h
  83de5c6450456e215a5484083afcd32a  gcc/limity.h
! 7eb300e545644ff4b4eae3716b99482c  gcc/lists.c
  30b8e3e407f46ad2cb39260ec4bab9f6  gcc/lock-and-run.sh
! a09713569704def17fe9b152b78ba9cc  gcc/loop-doloop.c
! 9f6ba5d7d3c36c5fbe0b75e45c60a201  gcc/loop-init.c
! 1c61f23d635715ed6a13b4e503483976  gcc/loop-invariant.c
! 6dcb3e50702c1fe35fd4c4afc5d49fc5  gcc/loop-iv.c
! e44196ccae22e5b571a6fc06b0fdda4b  gcc/loop-unroll.c
! 4e3d14a2bb20bbfa0b2d7c513a99193d  gcc/loop-unroll.h
! 238b4457d72f8b584d6d0aa811cd3184  gcc/lower-subreg.c
! 643bcadd79bc8430146b2c58a5fbdf02  gcc/lower-subreg.h
! 82ed779f8cf362b55236c12723aac541  gcc/lra-assigns.c
! c2e5571dfeb8184312575c2fd39a0c13  gcc/lra-coalesce.c
! 24e64007b5c904a15926fce970066a7f  gcc/lra-constraints.c
! 4ab369c9de8d32d33099df49e6d9d1fb  gcc/lra-eliminations.c
! 5980c281076ead34e5f20748bdaff2c0  gcc/lra-int.h
! 39882530244da95ee68fcf8642a261ad  gcc/lra-lives.c
! 7ebc003e14a046b20364addb18b925e9  gcc/lra-remat.c
! 93619388b5977a612f81f1a5f6d8cbb1  gcc/lra-spills.c
! 7caa6a007513219815bef12df3e9433a  gcc/lra.c
! 5cf7029a6ad442e84e48ac1d45a8a5ee  gcc/lra.h
! b18ef0c868c3693b6eb6c22f3bf3921f  gcc/lto-cgraph.c
! 1c62e9f5c1d6d037f3dae174e3b39412  gcc/lto-compress.c
! 2cd135622df35abe09c369e3d3649aca  gcc/lto-compress.h
! e891b7eb2f83b1624be70538a0e0d189  gcc/lto-opts.c
! 47aac9d44038f619b8a94acf28f087cf  gcc/lto-section-in.c
! 9893be09e11b4b0a29845a41ec6d3cad  gcc/lto-section-names.h
! 9363334f16d1c6574695194883b24bd0  gcc/lto-section-out.c
! db7cd7675793a8855cd0550edb79177a  gcc/lto-streamer-in.c
! 40a5c9904f9b80ca7236bd30c0679296  gcc/lto-streamer-out.c
! 5ad327021166fdb0ecad2661fbca70be  gcc/lto-streamer.c
! 5a903cbe75cdea50d6c4d8ff5365b860  gcc/lto-streamer.h
! 8a45ce855be3f79e24add330a8fe9755  gcc/lto-wrapper.c
! 385bf0905220c815f31a1b2501857f67  gcc/lto/ChangeLog
! d5bb42eff522196004d91ca34cfaa49b  gcc/lto/Make-lang.in
! c1fff5b6c2a7f236e55f0d3b5cb28062  gcc/lto/common.c
! 71bd5c32de47c74a39491375ef7f71c5  gcc/lto/common.h
! 38e6a5e2f440f66a514fd524aeb49bc6  gcc/lto/config-lang.in
! f9f8e7b721f11cb6fda71038fa294211  gcc/lto/lang-specs.h
! ef551b8e8a4e1a4744f051f802241208  gcc/lto/lang.opt
! 5307cc563ba05b9628bcfcd20c7b008b  gcc/lto/lto-common.c
! 42ff60fe4976af063eeac9ef4237318e  gcc/lto/lto-common.h
! 618e4b7d8d607a603d4b29c305bf420a  gcc/lto/lto-dump.c
! eee2b801c9d9d5815a706f5230cf4543  gcc/lto/lto-lang.c
! 32650b324a62c273d74bce56bdf24eb8  gcc/lto/lto-object.c
! 6b9c32795380fd112bdd9382d90bb966  gcc/lto/lto-partition.c
! 11275487d3fdff451ea5d49bac49948e  gcc/lto/lto-partition.h
! a2ca7044cc53910baa4e330728493648  gcc/lto/lto-symtab.c
! 678e59118f3c450d4c302bb537bfc126  gcc/lto/lto-symtab.h
! a3d7fa7b491b3c623e8ad32109a8af10  gcc/lto/lto-tree.h
! 7049ec17edb333bc321530606e9e0766  gcc/lto/lto.c
! 79c922d71cdca27a28f9b921a17e4415  gcc/lto/lto.h
! c0598ad047996b6b546ae37ac7961415  gcc/machmode.def
! 9ed2f72363a926d2750418ef5c5cf728  gcc/machmode.h
! 1e3feea915d17412b3e57a55c5a785e8  gcc/main.c
! 2fe786e5ea9d2e89aad5ea6a966cecb3  gcc/match.pd
! 4b41ba6f5c2972934928d702e6ab5c99  gcc/mcf.c
! 12ed5d7cdbe37098551333c0d54e68ad  gcc/mem-stats-traits.h
! d36e5c61d9079e93d8844808c4280f3b  gcc/mem-stats.h
! 821fb4b5564db5b035190d56e39c64f6  gcc/memmodel.h
! 1c8fb1810ae245d05c2e570e2bbbf2f0  gcc/memory-block.cc
! 4b7bcf166b9d495d8a7927923eaacfae  gcc/memory-block.h
! f48ef213fac95cd91d953e912e2353c5  gcc/mkconfig.sh
! 7e3e688e0b70e4fd2f9ef2132d5a1ac6  gcc/mode-classes.def
! ffb6709ef6e104f353edb09bc1651596  gcc/mode-switching.c
! e95cc42d1ca395d7b9c3004c118880c2  gcc/modulo-sched.c
! 182920edccd8d6d9f2ddfe9b0c117876  gcc/multiple_target.c
! f82c4a6b9621c8883a3eab86f0dd3768  gcc/mux-utils.h
! b21f376fb6905a4addb574e93931c9ea  gcc/objc/ChangeLog
! 8a483da76277f1107ee3864484da7cfd  gcc/objc/Make-lang.in
! 81acf2f4cbd8edc8581291e0c02e76f9  gcc/objc/config-lang.in
! 8ca11b02b2a9e21229f11063fb154aee  gcc/objc/lang-specs.h
! d64749fa6e7edf794e43ca2d299513e8  gcc/objc/objc-act.c
! d82921cbb439a19f64f1d25a6a14f4c4  gcc/objc/objc-act.h
! 3d5a7b3f2b8ede25454e6cc796103e45  gcc/objc/objc-encoding.c
! da34ed0a750a923083050676a1d84d7f  gcc/objc/objc-encoding.h
! 1ec80ae69345505cefde7f2b3ec43757  gcc/objc/objc-gnu-runtime-abi-01.c
! da44c8a74d037da7c6f82e94b45d4f31  gcc/objc/objc-lang.c
! 9119c424c5236534f584a7402787b21b  gcc/objc/objc-map.c
! 3fcca193bef44adbb41940862673aebb  gcc/objc/objc-map.h
! 70a2bbb9f1a1c992e16b427f0f1b1e53  gcc/objc/objc-next-metadata-tags.h
! efc719a9d69c08a88c9ca68c3d91dea6  gcc/objc/objc-next-runtime-abi-01.c
! 10f604e0990badb228f6efd7253f925b  gcc/objc/objc-next-runtime-abi-02.c
! 1efae5adac9e2d08776809405ec27a56  gcc/objc/objc-runtime-hooks.h
! 3c7320cdc77c5d2c8ad240f498e04b42  gcc/objc/objc-runtime-shared-support.c
! 544d016401099d9ba39ea7ddbce01333  gcc/objc/objc-runtime-shared-support.h
! 88490072a5d5ef2282898959e8e55de1  gcc/objc/objc-tree.def
! a2d08bc9741b8d91658ddaf1da1314e3  gcc/objcp/ChangeLog
! 8268a2fcb604c22c75202509b0338862  gcc/objcp/Make-lang.in
! add0ba454d5eb83cd065d29d3f6b676a  gcc/objcp/config-lang.in
! fbbceaf466354af7b3851fc32a591c77  gcc/objcp/lang-specs.h
! 8dbca9bd89fc3206efeeae8593dbba79  gcc/objcp/objcp-decl.c
! f839d2547a23f21881f462d878a2df5d  gcc/objcp/objcp-decl.h
! a7a0bf03aa321b1e7cc047dd65c275c4  gcc/objcp/objcp-lang.c
! 605fb5272cb554608cefda2c23cc03c0  gcc/obstack-utils.h
! 7b56d1dcf3fd603f94c47c1cf6f3841a  gcc/omp-builtins.def
! 079e9f2c902b70e61e63d018d5de4e95  gcc/omp-expand.c
! acdf170f52ac34b2d16d7fc8d784656e  gcc/omp-expand.h
! 14463d04236a263151e6f2b4f030e49b  gcc/omp-general.c
! 9b7e003d231715f982f2185c6971389b  gcc/omp-general.h
! 2d6d5ab243524629eddc942fa57acc44  gcc/omp-low.c
! c8a35605fb251282ba6b62d2877c47ad  gcc/omp-low.h
! 968555a5938f5016374fc7d6fe116877  gcc/omp-oacc-kernels-decompose.cc
! 655ce306b6a6a7a3eafc559e46ec1feb  gcc/omp-offload.c
! d71fab83488e17c36772acdb30630baa  gcc/omp-offload.h
! c6c1d2b4fef8a0566ed2f596764b4095  gcc/omp-simd-clone.c
! 909a1a93f282ec30c282438b2c473dc1  gcc/omp-simd-clone.h
! bd237663f814338857293d57435ae0cb  gcc/opt-functions.awk
! a5997eea63f27b2f160f553e02720823  gcc/opt-gather.awk
! e31916815933ce03699303686e1d68a9  gcc/opt-include.awk
! 6a251fbaa228ff904a30d0f558c7a760  gcc/opt-problem.cc
! 56d8bdaa783f296c25aae288e0b6a651  gcc/opt-problem.h
! daad6e85fa888e78ea461f1e895527be  gcc/opt-read.awk
! df80e7a26a0f6adb5d02ff9b18699a2a  gcc/opt-suggestions.c
! 3604764a75ad709d3fd64f2e1e168f43  gcc/opt-suggestions.h
! 6e48b122f95d98d38e883fc04ab1c521  gcc/optabs-libfuncs.c
! dcb81b8ac4afdc7cb3fd19ea5e279e5d  gcc/optabs-libfuncs.h
! 3365c04d909aa83e33bf9f6a5de76028  gcc/optabs-query.c
! 3d45bbec835bec871b2db466d0150a4e  gcc/optabs-query.h
! 61e13119f6a364afebb3707250f4e681  gcc/optabs-tree.c
! 6793a28de0c56876c2112b5d16023055  gcc/optabs-tree.h
! 76d42c8af725bc8fd95df88104ae4184  gcc/optabs.c
! b53437741beaf4c99ae67bb5623581dc  gcc/optabs.def
! bb7dd65101e190027bd7f5d00537d338  gcc/optabs.h
! 87a1a5bcddba75fc52ca8e27664704dc  gcc/optc-gen.awk
! 990b061d98f28e3f81bece38e55950bb  gcc/optc-save-gen.awk
! 644f55b613498a30ad5561d8ac2ef3e4  gcc/opth-gen.awk
! 41e153ce211a7ce936f374042e78626c  gcc/optinfo-emit-json.cc
! 9f4a9925296f20d19d64305038880c83  gcc/optinfo-emit-json.h
! 856ea796d22dcbc9579527e46613d813  gcc/optinfo.cc
! bc4ea40198df1dade8ab163363fce555  gcc/optinfo.h
! 4f56fcf0a392e7e80904a168ee8e362e  gcc/opts-common.c
! d5cb4f8e14c4ba3e56b5393c98bf2a04  gcc/opts-diagnostic.h
! c9cb78ef27abfd3a19982545f0f1808d  gcc/opts-global.c
! f316f70576f525302035fef1dada4d51  gcc/opts.c
! e49edd063f36ca8da3c7e467dd2e72bb  gcc/opts.h
! 529cc4ae108023927cb547f8ca02217a  gcc/ordered-hash-map-tests.cc
! b8aef1accc1173ea4c812bb38b6d838c  gcc/ordered-hash-map.h
! 5a1e78bb30f4fce7f27617243badc49f  gcc/output.h
! f92ea18beb7824a07ead8b038cb616fa  gcc/params.opt
! a20c703e91812007ab8b94eec673c02c  gcc/pass_manager.h
! e733e0309389f9d07184e98b6ad9b536  gcc/passes.c
! 79107250ba3fffee8a8c1198fac08f35  gcc/passes.def
! f09db14eb185fcdd795ff7e690b607a3  gcc/plugin.c
! 3cc53b8d5f30aebe3f70c00e1bc4929e  gcc/plugin.def
! 7a5190d86531b8d3fa67e8cea7db5d60  gcc/plugin.h
! 57ca23df184b7d5cea012002364fd7c0  gcc/po/ChangeLog
! edbad8e043a44996d844fa6a7965ea6f  gcc/po/EXCLUDES
! f2e76d86dce1f72d4adc901bce318410  gcc/po/be.gmo
! 4a6595e0d1efdc009baff3ba01e6f26c  gcc/po/be.po
! 680b85df73c3595a24203e46470cab71  gcc/po/da.gmo
! b86030cf9d880a8a505232e4d7daeea3  gcc/po/da.po
! 2592a4f8acaa422d63401381755fb757  gcc/po/de.gmo
! 6ee45c1580da051315e2f0faddbc145e  gcc/po/de.po
  189b9d1af87594807b0d0e10036a64c3  gcc/po/el.gmo
! ab12e04dcf763cdf4f9113fa830f8360  gcc/po/el.po
! 55c8a96ca847d59cd76eee314c03f796  gcc/po/es.gmo
! 63a6b147a9adae25951af7aba5f4d74c  gcc/po/es.po
! 7864bb17dac2262d471e713d8281391d  gcc/po/exgettext
! 13d326d68d0562189cef7984da95acfa  gcc/po/fi.gmo
! 2c1761ca35bd42a7eb0c5535d930a9be  gcc/po/fi.po
! 71279e2abd2ee7cf0ef02848212a6158  gcc/po/fr.gmo
! a633a294a9f315d1845ad14e1ded2583  gcc/po/fr.po
! fafff4869386a8e2668a6de96a56838f  gcc/po/gcc.pot
! 93a1b38e65e3c610a790c05f56e0b4c7  gcc/po/hr.gmo
! 3af93a44d7f7ed137d4ce467170977b9  gcc/po/hr.po
! bd3b111921b049b6e2ed6e1d2263340b  gcc/po/id.gmo
! 731ac7d76d6ef57df5d7d86cd69e53b2  gcc/po/id.po
! d3e1693255d9279e935958e497d1d6ee  gcc/po/ja.gmo
! 11e7e11ee1ad16e75cbeac86c27c0fa1  gcc/po/ja.po
! 53742057e3aba5de16019e5240ccf1cf  gcc/po/nl.gmo
! 0277b4d7b27b0630d7c1c4e59be81d1d  gcc/po/nl.po
! 66e8002082a9fca761fc7982dbcbd85d  gcc/po/ru.gmo
! bee3fd16e0f9a7358e259a3e35451151  gcc/po/ru.po
! 17ec3ed77e7652f5ceadf345c6996e5c  gcc/po/sr.gmo
! 6bcb9d6d23eb0ff57bdd99e6c2317e58  gcc/po/sr.po
! ee008571489ed6d907913f83379ea286  gcc/po/sv.gmo
! 170270f23f072e26507ca44dc3529bdd  gcc/po/sv.po
! 39b2fc0e884a5171b4cd7e0bc71c4b4b  gcc/po/tr.gmo
! a1d92cbb958b6483ab4a5fa3ae2f2c8b  gcc/po/tr.po
! de93cc2ac5e3199818be862789007989  gcc/po/uk.gmo
! 765b1375db1f261ee8c52b74914b1a73  gcc/po/uk.po
! 74badc940a2b0fe1c95de867f9ff00ea  gcc/po/vi.gmo
! eecf9d53b15f6e34666bbdce968a60ab  gcc/po/vi.po
! 063ca46691ddfeded1a1c8450b8a449e  gcc/po/zh_CN.gmo
! a683ee6c0ab9790d46130680bfb3db10  gcc/po/zh_CN.po
! 589d724356fd1ecb32afdc230e66e40d  gcc/po/zh_TW.gmo
! 7af2d032897fec96be49dd7518cd7725  gcc/po/zh_TW.po
! b5cf217de74bfb4c25a64c52994cfb70  gcc/poly-int-types.h
! 0799d24ba449e6a51e2fd9ed43c2c895  gcc/poly-int.h
! 64ee81daa4eca1addeddac912f6da05f  gcc/postreload-gcse.c
! af9461c061cc0812c9c223fb6d8ec1bb  gcc/postreload.c
! 1c6e02c995e8a1da4d8f82546e0f7c22  gcc/predict.c
! 692b197c8926e88856e6061898336287  gcc/predict.def
! 41abb41efe44ad2ee6ea81fa0efe8981  gcc/predict.h
! df55ecfee3c8d6902de1f0a401662b34  gcc/prefix.c
! 9fba94532cf396fff56f772ffa6107b8  gcc/prefix.h
! d29c40bceaa5fc6b443a08ba4630233b  gcc/pretty-print.c
! d01d7a2533e9497668e7404796746bd9  gcc/pretty-print.h
! 90a47dce7301a37bf58e4042ebabe951  gcc/print-rtl-function.c
! cb226062ece2a84c1c6361850c4031c0  gcc/print-rtl.c
! deee577e231c225d30f402a5dbfbbf97  gcc/print-rtl.h
! c254cdb20b6b4f0d1184f5efbdb7a12c  gcc/print-tree.c
! 939e1ac4ae79e543283a86483c65be64  gcc/print-tree.h
! 1a448948309f39bb6e30b497b910e707  gcc/profile-count.c
! 732d17acf6267a969e39ba2419b27ff9  gcc/profile-count.h
! a96706db9e9f3013d94609d7b3718fab  gcc/profile.c
! 1cb6f0995127d2a5f07d8852252b9204  gcc/profile.h
! 52cec455380092519532cea3363400b3  gcc/range-op.cc
! 530b558465d45ba8a4791807c6b35b24  gcc/range-op.h
! e63b7b269775057b328a377113078b16  gcc/range.cc
! 1d7d661f2f501c3ed5b4b1b370a6a4f0  gcc/range.h
! a486c75e8bb4883fbf34d1f33297b7b6  gcc/read-md.c
! c02193da75688acb66896e09eb244741  gcc/read-md.h
! 2de4ba78c5390a42fd0329c2be88b8c2  gcc/read-rtl-function.c
! ea3522c1c481b20f1132e7405a14ac3f  gcc/read-rtl-function.h
! f16337b3cb06bf956e8b9881213c9ca6  gcc/read-rtl.c
! b6a7e3c07ce91ee0243c2a016e2430d4  gcc/real.c
! 2a8c2fe81f01afe8b43a1f6a07743fd1  gcc/real.h
! 3cfbe5c8f6f8cb8aeeb10c0c20847942  gcc/realmpfr.c
! 1336428ec3de403ee3a67a32e46a2950  gcc/realmpfr.h
! 6a97b272d95ec05f8a4ca551c2031d37  gcc/recog.c
! 6d79a91b3db1ae875470ac88c3017e73  gcc/recog.h
! d413cb4a0b232cc480a3b8be25d8be8c  gcc/ree.c
! 4991d12d362b1f941f85124f99dd06ed  gcc/reg-notes.def
! 37dee4e1c279832a39f2cc014a775cc4  gcc/reg-stack.c
! 759e7984181b2e8c82e81c4a8a390197  gcc/regcprop.c
! f0e333f39bc1495a06bf48c9bf845507  gcc/regcprop.h
! afbaaa4f2b3dbd0fe78f439084f99424  gcc/reginfo.c
! 94f9d872d3709162b0c8f5cb5a59f3f2  gcc/regrename.c
! db1c9b9d3057a97aba76c18fa6e65fe3  gcc/regrename.h
! cbb3ec9de2848e74201ddcf7756e6912  gcc/regs.h
! b4f529c79dd2003cb163fccdd4d12a8c  gcc/regset.h
! 112f438c4bd1a37cd81243afadaf37b1  gcc/regstat.c
! 84939526df0225ab3d08d6c879686b42  gcc/reload.c
! 3d85d06e0f7956157e20afc1f42fcc4c  gcc/reload.h
! fc737be9f0a22313bce027bb53172bbc  gcc/reload1.c
! 0f882f5afe61c8f2d0f0b96fce3cd1d1  gcc/reorg.c
! e706490a6624ce6a4464a59f26d1a1ef  gcc/resource.c
! e28191cb00a98e949cbc143f320a07f6  gcc/resource.h
! 395545fee8f1c11da026dce110db4a5b  gcc/rtl-error.c
! 398f3fc2e537011bb0d00cdd81ae876c  gcc/rtl-error.h
! 4e409a0d5cc6dc9e0629b228d3b558ba  gcc/rtl-iter.h
! b476f310624f2f8985ae9e6f5cf84795  gcc/rtl-ssa.h
! 2bd899bd5847e63d4b3c22b4c3f8d681  gcc/rtl-ssa/access-utils.h
! 9822866edc851e6fd12a04438671f67e  gcc/rtl-ssa/accesses.cc
! f83f422aa1010eeeedab15e026a7da14  gcc/rtl-ssa/accesses.h
! d732812e79a20c21accf4bbde2d16fe6  gcc/rtl-ssa/blocks.cc
! 26f90cf52a833397e160517c50f76928  gcc/rtl-ssa/blocks.h
! b749412578d62bfb2a22711a55df1124  gcc/rtl-ssa/change-utils.h
! 91a7a054b154b2b8dc02633939d813fe  gcc/rtl-ssa/changes.cc
! c56eb80685157a57af3f4b646a16c3f5  gcc/rtl-ssa/changes.h
! 30aa74b1044e85d68bd3845aa629468d  gcc/rtl-ssa/functions.cc
! d3d3033d7a0921fde6380ce023929f4c  gcc/rtl-ssa/functions.h
! c13065dc1b1a9319f869cccc13d93de1  gcc/rtl-ssa/insn-utils.h
! de2b4ba71be041cd082a66fef50ee399  gcc/rtl-ssa/insns.cc
! e1595b6b1a7c703394640bffc7357aa5  gcc/rtl-ssa/insns.h
! 3e2be38fa239ba65ce01840b6b1e6717  gcc/rtl-ssa/internals.h
! 3bcc3658e3e130fbbe4a9fbd9b0c3cd3  gcc/rtl-ssa/internals.inl
! 35c148bf46eb74781693030d7425a974  gcc/rtl-ssa/is-a.inl
! 105bec65bd605c46e6821361bf1e5708  gcc/rtl-ssa/member-fns.inl
! fc0c483ef35b0916889eb450dec30684  gcc/rtl-ssa/movement.h
! 6ee04c4c4fb71b581e0a42e7b5a7a73c  gcc/rtl-tests.c
! 58bca7bde7fb084efb6dfd6ce87c9dcc  gcc/rtl.c
! 6e2727b9e2075fddcf252ad25dc6d604  gcc/rtl.def
! 36fd5e447e6324c0bac82d65b5b365a3  gcc/rtl.h
! f1c9464a3f3b95e046a84ab7490fa640  gcc/rtlanal.c
! 394592e1cbc71b6283d230cf895f1248  gcc/rtlanal.h
! 600140db9bd5eefa41bca935dcc1a901  gcc/rtlhash.c
! 97a32042580f6bc444125e76325e9f8e  gcc/rtlhash.h
! d442e404f8a12b3482e26c26359a21e4  gcc/rtlhooks-def.h
! 5c83843134a5634190ac6b06ecab793f  gcc/rtlhooks.c
! e2fa89c07eab45e7d8ce537cdc0fca26  gcc/rtx-vector-builder.c
! e5637ad1421cf58755da5be7aa6e031e  gcc/rtx-vector-builder.h
! d756cda29fd0d41dd981deb94691ead6  gcc/run-rtl-passes.c
! 849a7f68c59cf805134725f6d573a12a  gcc/run-rtl-passes.h
! 88681762ad1b72a93cd61d0ceb6922d4  gcc/sancov.c
! 30e67ef52139f9ecf2b0d6888b611676  gcc/sanitizer.def
! 20f2980f4e9da1cc5e45710ad173a56c  gcc/sanopt.c
! 652586958a380c79d7c38c0636cb92cf  gcc/sbitmap.c
! dd08726afeecf49aad987d4602b45083  gcc/sbitmap.h
! 5ba010d53c8923a1bfac3c71876ec3cf  gcc/sched-deps.c
! 1dccb8120a3864d3dad7e50e67049a04  gcc/sched-ebb.c
! a8ab69f209817a41138f90b904cb7edb  gcc/sched-int.h
! 7e8892a23a063802c661974bdff21879  gcc/sched-rgn.c
! 0f47429913095f74e550ab80382df538  gcc/sel-sched-dump.c
! 30aed15a512cd06bec303a19beb3e317  gcc/sel-sched-dump.h
! a81acae3c8eb55b9ef11d3725fd55380  gcc/sel-sched-ir.c
! 32ad0fcb213a9554215b78467d9d8c75  gcc/sel-sched-ir.h
! 1e3da1400d44477e586418140c5d4bab  gcc/sel-sched.c
! a263ac7eb263d57d0455625ac91b1815  gcc/sel-sched.h
! 81d86b5e84c70aa16ff704be30595478  gcc/selftest-diagnostic.c
! 266029d83f048bbaa186112f998ff289  gcc/selftest-diagnostic.h
! a58b078dfc2bee6fff5ee6c5c8542221  gcc/selftest-rtl.c
! 0a3fdf0a7c1020814aa458f9a978ebe5  gcc/selftest-rtl.h
! 764a7bc7372f40e78b70bf1e3cc2011c  gcc/selftest-run-tests.c
! 0256b9c977081184cd3a5907950fdd0d  gcc/selftest.c
! ca6c4f01ecb98f274836e166b200acdb  gcc/selftest.h
! 213896722fa74c4884070001b3a930a2  gcc/sese.c
! 256d72469217c4294582199ff0064ae6  gcc/sese.h
! 29fbb2d830b49fedf1c7c03f9afdb693  gcc/shortest-paths.h
! 5a6f3e0a703dafe4f1c3b50ce45ba3a3  gcc/shrink-wrap.c
! 9897b577c2ae3dd2e97acbc7f9997aa1  gcc/shrink-wrap.h
! 76ee65471a4687e0cc302ecc0eabc3ed  gcc/signop.h
! 66188e1d2a014f8da6b9f0efc088d4af  gcc/simplify-rtx.c
! d725c1ed28fee55321c1c32911d4a901  gcc/sort.cc
! 547559932032c53f749936f4ba29219d  gcc/sparseset.c
! b20b0d6450f782b45d5fc19a0f3afc6b  gcc/sparseset.h
! a0bd356844b79af9c45b4fafe8042ba8  gcc/spellcheck-tree.c
! 7378c8ab08c6c1892a425eed6914788a  gcc/spellcheck-tree.h
! 19ad406f40d5fb9d45d9e1bc2a755d25  gcc/spellcheck.c
! fce094b8d65c6be9ee501d18f3bdd196  gcc/spellcheck.h
! 76d47608d5a09c52796654b91af873bc  gcc/splay-tree-utils.cc
! 8925bd354a6cec7e3a93baca2faea91e  gcc/splay-tree-utils.h
! 0e5658f8917cda0fde86f53fcf4fd246  gcc/splay-tree-utils.tcc
! ca166e9be3879c73288fcf5aa8b15061  gcc/sreal.c
! e21ab1dd466e275c55e4d9436f0ff6fc  gcc/sreal.h
! 684df6130537ea5d117383f38321b712  gcc/ssa-iterators.h
! 9c05d3e1415bdfa6a2ad5323337e36a7  gcc/ssa.h
! d6e902e1888744274c2611087cd4fb1a  gcc/stab.def
! 738d6eddb41bc5386cde6728ae4dbfb3  gcc/stack-ptr-mod.c
! 7e2ceb17ac9ff8aa77aeb5d9cba17ce1  gcc/statistics.c
! ccd953321d2603ba18ef5b6536815833  gcc/statistics.h
! 7588fbd59266bcd160cfd33fb0eb5d80  gcc/stmt.c
! 41b5fe94eb0a36e9f9edf3a3fdd6b215  gcc/stmt.h
! 85c11cbf0e417386cd7459ba3fc1d24e  gcc/stor-layout.c
! 406feb3d225e839add7be6e10e526345  gcc/stor-layout.h
! 94159ed363bf1689cf4a8aa85ca88bcc  gcc/store-motion.c
! 1e33dff2827f85693cb4f885a8425185  gcc/streamer-hooks.c
! 9ab54c0386b4f7964f5f46f6d51f745a  gcc/streamer-hooks.h
! 225060532ff5c2b868012b5842b39af8  gcc/stringpool.c
! ba17f60121ba1b5f039f9dc1078b46f8  gcc/stringpool.h
! 0e9ba4d784593d4ed23ac7186c35ae50  gcc/substring-locations.c
! 8dd5c05fb4ef8cc3bf57f5ca63d32846  gcc/substring-locations.h
! 8789ac541d37b67407d2c8a73d692d40  gcc/symbol-summary.h
! 236c95c47ab750764d02d4876b55e442  gcc/symtab-clones.cc
! bedb42e729e5bd698d0861dc145266fb  gcc/symtab-clones.h
! 8a9324974824a4c433f0d463bbfb69ec  gcc/symtab-thunks.cc
! b5513d86b09f522ec7305a04036d4f3b  gcc/symtab-thunks.h
! 029042861500eb0a8f1e377d8df298d2  gcc/symtab.c
! f013ee71feefa0d9ab11d092dab3f62c  gcc/sync-builtins.def
! 91833cabb7e6cf8d404d225be6b34c76  gcc/system.h
! aba120075a77f6e309a720d322ee9eed  gcc/target-def.h
! 292e1d752e2b328261c6a201aeb21faa  gcc/target-globals.c
! 3e5db4530f6645ebcf4b051d11524230  gcc/target-globals.h
! 5ccf494f338932b80bf5f93892dd28e0  gcc/target-hooks-macros.h
! d55ca9dbaab4bc389a7da2b52a7ccd04  gcc/target-insns.def
! a97076dcae70efe7371593bbeda80c7d  gcc/target.def
! b3739b072aa976c2f9f9825ac6d07c80  gcc/target.h
! b71dcf011f9b95f3a705da052a95caf9  gcc/targhooks.c
! 104445ec4cf950b087d249c268d36edc  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! b253d718e2bb0bb79ba6ba971b73a95a  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
*************** c9ec5aa19ca3c027fb99e61cbe7aff7a  gcc/te
*** 5951,5973 ****
  56d86aa0407680dda8cd96fe85221770  gcc/testsuite/ChangeLog-2017
  321b9905bcb2a68af6bf33c8b58ec43f  gcc/testsuite/ChangeLog-2018
  91a08c35405a286b3ada0b88a667a7e5  gcc/testsuite/ChangeLog-2019
  e7518ff11c24876171978acda7f03080  gcc/testsuite/ChangeLog.graphite
  ec409caa3f1727e7dbe6b65dd8df068c  gcc/testsuite/ChangeLog.jit
  4e315f3ead950078f8af109b2d771220  gcc/testsuite/ChangeLog.ptr
  b2adb3e6b3129c9473b7e401edb63a71  gcc/testsuite/ChangeLog.tree-ssa
! 1fd0e526724502e5f94f8553322fe3ca  gcc/testsuite/README
! 5e6d962a0a84c47d756125b7b464b9f5  gcc/testsuite/README.compat
! 132006ff23f5e158ab76811de2d4af87  gcc/testsuite/README.gcc
  2ad7c00ea00d78f6d6ee090f7894dadc  gcc/testsuite/ada/.gitignore
  4004844198395fe50ecb798ed5d30f4b  gcc/testsuite/ada/acats/elabd.lst
  b32871a59b0c07cb4eda259b98fa6aab  gcc/testsuite/ada/acats/floatstore.lst
  bb4e4f9d3c0e72730e0bf397d375689c  gcc/testsuite/ada/acats/norun.lst
  17a66c0b337fb03b6f449227ed33297c  gcc/testsuite/ada/acats/overflow.lst
  1485f263dfb9303b015015ae88161a8b  gcc/testsuite/ada/acats/run_acats.sh
! bbbad26915ffd111192936917be7de9a  gcc/testsuite/ada/acats/run_all.sh
  6467abb463602aeb04583b3822f653f4  gcc/testsuite/ada/acats/run_test.exp
  5723a26fced8721c3e90e6e7a9ba2a23  gcc/testsuite/ada/acats/stackcheck.lst
! d45e1c07702f81b7fa521c99282fd51b  gcc/testsuite/ada/acats/support/acats25.lst
  2f262cdb98b38922d7b7f84414f43b84  gcc/testsuite/ada/acats/support/checkfil.ada
  4edf20410814582eae331707f2ae2c77  gcc/testsuite/ada/acats/support/enumchek.ada
  8f3ec4fe93c0095e34d79e9a41dde4e9  gcc/testsuite/ada/acats/support/f340a000.a
--- 6354,6377 ----
  56d86aa0407680dda8cd96fe85221770  gcc/testsuite/ChangeLog-2017
  321b9905bcb2a68af6bf33c8b58ec43f  gcc/testsuite/ChangeLog-2018
  91a08c35405a286b3ada0b88a667a7e5  gcc/testsuite/ChangeLog-2019
+ 4b46ab741e570fbea4c5e62643efc2bc  gcc/testsuite/ChangeLog-2020
  e7518ff11c24876171978acda7f03080  gcc/testsuite/ChangeLog.graphite
  ec409caa3f1727e7dbe6b65dd8df068c  gcc/testsuite/ChangeLog.jit
  4e315f3ead950078f8af109b2d771220  gcc/testsuite/ChangeLog.ptr
  b2adb3e6b3129c9473b7e401edb63a71  gcc/testsuite/ChangeLog.tree-ssa
! 0edb4e6fa8a4958c412996f0fc107ea3  gcc/testsuite/README
! 25476f23ae8bf54276a8bfd08cf7f84f  gcc/testsuite/README.compat
! ebabd4943e4b977b06c2f19d5d783217  gcc/testsuite/README.gcc
  2ad7c00ea00d78f6d6ee090f7894dadc  gcc/testsuite/ada/.gitignore
  4004844198395fe50ecb798ed5d30f4b  gcc/testsuite/ada/acats/elabd.lst
  b32871a59b0c07cb4eda259b98fa6aab  gcc/testsuite/ada/acats/floatstore.lst
  bb4e4f9d3c0e72730e0bf397d375689c  gcc/testsuite/ada/acats/norun.lst
  17a66c0b337fb03b6f449227ed33297c  gcc/testsuite/ada/acats/overflow.lst
  1485f263dfb9303b015015ae88161a8b  gcc/testsuite/ada/acats/run_acats.sh
! 99f08957d80806465fb1b48a59fdf892  gcc/testsuite/ada/acats/run_all.sh
  6467abb463602aeb04583b3822f653f4  gcc/testsuite/ada/acats/run_test.exp
  5723a26fced8721c3e90e6e7a9ba2a23  gcc/testsuite/ada/acats/stackcheck.lst
! feaec71549d40900aa5bcbd842c9fa57  gcc/testsuite/ada/acats/support/acats26.lst
  2f262cdb98b38922d7b7f84414f43b84  gcc/testsuite/ada/acats/support/checkfil.ada
  4edf20410814582eae331707f2ae2c77  gcc/testsuite/ada/acats/support/enumchek.ada
  8f3ec4fe93c0095e34d79e9a41dde4e9  gcc/testsuite/ada/acats/support/f340a000.a
*************** d2c427a2c2e845d2d5991d7e86689284  gcc/te
*** 6004,6010 ****
  f75e17c909e83e1879e87a3ba3ffd7cc  gcc/testsuite/ada/acats/support/fc70a00.a
  cdb7ee32751757a29e821ba020228a0e  gcc/testsuite/ada/acats/support/fc70b00.a
  8af79a6be55981313da73bc0bb01f617  gcc/testsuite/ada/acats/support/fc70c00.a
! 617441115997780085b5128e266033b3  gcc/testsuite/ada/acats/support/fcndecl.ada
  3ce3384936274aa48a8c4a38fa7109ac  gcc/testsuite/ada/acats/support/fd72a00.a
  5c9a93b4c9f45c15707e4b3b123aee9c  gcc/testsuite/ada/acats/support/fdb0a00.a
  bf9c7650a6f8303b6a69ff5eb2660b15  gcc/testsuite/ada/acats/support/fdd2a00.a
--- 6408,6414 ----
  f75e17c909e83e1879e87a3ba3ffd7cc  gcc/testsuite/ada/acats/support/fc70a00.a
  cdb7ee32751757a29e821ba020228a0e  gcc/testsuite/ada/acats/support/fc70b00.a
  8af79a6be55981313da73bc0bb01f617  gcc/testsuite/ada/acats/support/fc70c00.a
! 65011f4705018476715af62324c335b3  gcc/testsuite/ada/acats/support/fcndecl.ada
  3ce3384936274aa48a8c4a38fa7109ac  gcc/testsuite/ada/acats/support/fd72a00.a
  5c9a93b4c9f45c15707e4b3b123aee9c  gcc/testsuite/ada/acats/support/fdb0a00.a
  bf9c7650a6f8303b6a69ff5eb2660b15  gcc/testsuite/ada/acats/support/fdd2a00.a
*************** f88af2b3eb53ad7c8700efbd0f878915  gcc/te
*** 6017,6035 ****
  67770e9161b0f48f3fc9392bd3460272  gcc/testsuite/ada/acats/support/fxf2a00.a
  6628969f51dd10c56235f9d7420e2d44  gcc/testsuite/ada/acats/support/fxf3a00.a
  6a9b6ce90538e9126e7e5badc62ddca2  gcc/testsuite/ada/acats/support/impbit.adb
! b113d49c3bea37c2a556c5c3dff926d3  gcc/testsuite/ada/acats/support/impdef.a
  4f2f9bfdfcfd8c5ecaf503416d1cfc5f  gcc/testsuite/ada/acats/support/impdefd.a
  edf70d423a69adebd38e9b29f35a2ba1  gcc/testsuite/ada/acats/support/impdefe.a
! f4c51093f419176fbe553f5299e3791a  gcc/testsuite/ada/acats/support/impdefg.a
  5d9a0f98d9f15211e0773263febb974b  gcc/testsuite/ada/acats/support/impdefh.a
  f2604ccc5244696793b33e7b83c57c45  gcc/testsuite/ada/acats/support/lencheck.ada
! 6b2f1cd3290cd6ebb6f3e9ad1ae797de  gcc/testsuite/ada/acats/support/macro.dfs
  72980ae1a3bbd5b71aa915cefeaebf6e  gcc/testsuite/ada/acats/support/macrodef.adb
  4d7b79a3ff077d1ab05a78ebcf5a1de3  gcc/testsuite/ada/acats/support/macrosub.ada
! 72f1263dc9ff4e693aa8ec258a9b59df  gcc/testsuite/ada/acats/support/repbody.ada
  ec6c02ebb16da7cc117e3a65c06d385a  gcc/testsuite/ada/acats/support/repspec.ada
  356cf4b2e0cc1e02ef1deddb5567de36  gcc/testsuite/ada/acats/support/spprt13s.tst
! 55beacb5dbd7bec1713e30eb0c5196e5  gcc/testsuite/ada/acats/support/tctouch.ada
  26945b868319fda8b82f82c677a35562  gcc/testsuite/ada/acats/support/tsttests.dat
  91c39a37d5651ca4a1e6aa82cd2f1269  gcc/testsuite/ada/acats/support/widechr.a
  dc179b8a7c506c961b229b7ec7d2de53  gcc/testsuite/ada/acats/tests/a/a22006b.ada
--- 6421,6439 ----
  67770e9161b0f48f3fc9392bd3460272  gcc/testsuite/ada/acats/support/fxf2a00.a
  6628969f51dd10c56235f9d7420e2d44  gcc/testsuite/ada/acats/support/fxf3a00.a
  6a9b6ce90538e9126e7e5badc62ddca2  gcc/testsuite/ada/acats/support/impbit.adb
! 1ccb5211fbcff1d5604e6ccee6542df7  gcc/testsuite/ada/acats/support/impdef.a
  4f2f9bfdfcfd8c5ecaf503416d1cfc5f  gcc/testsuite/ada/acats/support/impdefd.a
  edf70d423a69adebd38e9b29f35a2ba1  gcc/testsuite/ada/acats/support/impdefe.a
! cadfd8a5487a315a6fbd8eef397219e9  gcc/testsuite/ada/acats/support/impdefg.a
  5d9a0f98d9f15211e0773263febb974b  gcc/testsuite/ada/acats/support/impdefh.a
  f2604ccc5244696793b33e7b83c57c45  gcc/testsuite/ada/acats/support/lencheck.ada
! 79c0994222b2a5fc702eb4bc3dc1ba8e  gcc/testsuite/ada/acats/support/macro.dfs
  72980ae1a3bbd5b71aa915cefeaebf6e  gcc/testsuite/ada/acats/support/macrodef.adb
  4d7b79a3ff077d1ab05a78ebcf5a1de3  gcc/testsuite/ada/acats/support/macrosub.ada
! 29539981686659a32e9b3a46eafe0a56  gcc/testsuite/ada/acats/support/repbody.ada
  ec6c02ebb16da7cc117e3a65c06d385a  gcc/testsuite/ada/acats/support/repspec.ada
  356cf4b2e0cc1e02ef1deddb5567de36  gcc/testsuite/ada/acats/support/spprt13s.tst
! e250c306fa98a053bdf37159af289d57  gcc/testsuite/ada/acats/support/tctouch.ada
  26945b868319fda8b82f82c677a35562  gcc/testsuite/ada/acats/support/tsttests.dat
  91c39a37d5651ca4a1e6aa82cd2f1269  gcc/testsuite/ada/acats/support/widechr.a
  dc179b8a7c506c961b229b7ec7d2de53  gcc/testsuite/ada/acats/tests/a/a22006b.ada
*************** ec207723e08de50ca0964ad3318f8235  gcc/te
*** 6235,6240 ****
--- 6639,6645 ----
  092ff51133e865dad2cd6192506f9980  gcc/testsuite/ada/acats/tests/c3/c35003b.ada
  55caad169adcfa6b58689ceb3dc1d505  gcc/testsuite/ada/acats/tests/c3/c35003d.ada
  b2b10d16689d994b421c7f356c4eebe9  gcc/testsuite/ada/acats/tests/c3/c35102a.ada
+ 9d1972c0cc4eb7b2203cca27c4e785f1  gcc/testsuite/ada/acats/tests/c3/c352001.a
  6adbf240f9a88c67e6dc4d9a3ae2f449  gcc/testsuite/ada/acats/tests/c3/c354002.a
  1c6bd8c5607c8d83b1fb16cf20b35965  gcc/testsuite/ada/acats/tests/c3/c354003.a
  831543d10fff09679865a63cb6261690  gcc/testsuite/ada/acats/tests/c3/c35502a.ada
*************** ab7bedd7c7899bfe816d9a4b9ac394d4  gcc/te
*** 6626,6632 ****
  90e0f447154023e2eab627e883738386  gcc/testsuite/ada/acats/tests/c4/c43215b.ada
  f0098152f11a322c39c1479f279dc3d7  gcc/testsuite/ada/acats/tests/c4/c43222a.ada
  bf1baa8817f6afb1d613db2046cb78de  gcc/testsuite/ada/acats/tests/c4/c43224a.ada
! 56e5625c21ab1ee78f47b6310cfe18e6  gcc/testsuite/ada/acats/tests/c4/c433001.a
  196c158a32a4bc1774a4d934b1a6632e  gcc/testsuite/ada/acats/tests/c4/c44003d.ada
  bf440c6d6ead3b13b20d4e127607337e  gcc/testsuite/ada/acats/tests/c4/c44003f.ada
  2f9030320131a08536fa11fa1a117664  gcc/testsuite/ada/acats/tests/c4/c44003g.ada
--- 7031,7037 ----
  90e0f447154023e2eab627e883738386  gcc/testsuite/ada/acats/tests/c4/c43215b.ada
  f0098152f11a322c39c1479f279dc3d7  gcc/testsuite/ada/acats/tests/c4/c43222a.ada
  bf1baa8817f6afb1d613db2046cb78de  gcc/testsuite/ada/acats/tests/c4/c43224a.ada
! 1e8e32f41f79462323a2f9d9c83d7939  gcc/testsuite/ada/acats/tests/c4/c433001.a
  196c158a32a4bc1774a4d934b1a6632e  gcc/testsuite/ada/acats/tests/c4/c44003d.ada
  bf440c6d6ead3b13b20d4e127607337e  gcc/testsuite/ada/acats/tests/c4/c44003f.ada
  2f9030320131a08536fa11fa1a117664  gcc/testsuite/ada/acats/tests/c4/c44003g.ada
*************** b79ca71dc3632b190bdef98c6e0d142b  gcc/te
*** 6675,6680 ****
--- 7080,7086 ----
  ecfe4965aad0d9bc1dc0dea01acceae3  gcc/testsuite/ada/acats/tests/c4/c45282a.ada
  52a7cd2f9612b968a81d14f925d96de2  gcc/testsuite/ada/acats/tests/c4/c45282b.ada
  b3bd1b305af20f17ece9aabad0feaef1  gcc/testsuite/ada/acats/tests/c4/c45291a.ada
+ c8d3cf99b5249db2c22ec520cb247e14  gcc/testsuite/ada/acats/tests/c4/c453001.a
  eaeb6ce37e830b736db8d34c6a83bb7d  gcc/testsuite/ada/acats/tests/c4/c45303a.ada
  f1ec15c9cdb65dbf13e1375cf7996f12  gcc/testsuite/ada/acats/tests/c4/c45304a.ada
  55a19685b3e235e5bb6750cb9d7df962  gcc/testsuite/ada/acats/tests/c4/c45304b.dep
*************** f8ed3027af651e8a9c09b39c0abf883c  gcc/te
*** 6754,6762 ****
  cfe72bc879be3b00ef382558884d4b1d  gcc/testsuite/ada/acats/tests/c4/c45614a.ada
  c49e020a85a8868eed26fc38aaab04bf  gcc/testsuite/ada/acats/tests/c4/c45614b.dep
  41f7a3468254617c1e8fd2e5932a25b4  gcc/testsuite/ada/acats/tests/c4/c45614c.dep
- 8249e4f0f91ac94fc89e010ab0676dcc  gcc/testsuite/ada/acats/tests/c4/c45622a.ada
- 384ad656cde3c64a171371d85398c0b0  gcc/testsuite/ada/acats/tests/c4/c45624a.ada
- 9138c58fedfceb74d55bddf3170f5c21  gcc/testsuite/ada/acats/tests/c4/c45624b.ada
  ac5d52f05c31abf886e8c8c4468e3276  gcc/testsuite/ada/acats/tests/c4/c45631a.ada
  08c1f1a469e3e9753825625f1a28b1ea  gcc/testsuite/ada/acats/tests/c4/c45631b.dep
  3d90d62c311cc7457e997be47d4bc90b  gcc/testsuite/ada/acats/tests/c4/c45631c.dep
--- 7160,7165 ----
*************** ec69fdc3a65a761d8134bc49e6570216  gcc/te
*** 6778,6783 ****
--- 7181,7188 ----
  5bc44a3344b33409dd851c6b03e885b7  gcc/testsuite/ada/acats/tests/c4/c460010.a
  f62a801d63af2b71a0b6fc1ab47ef7e7  gcc/testsuite/ada/acats/tests/c4/c460011.a
  a2898cc40c52d07d2a1d5f39c8daae42  gcc/testsuite/ada/acats/tests/c4/c460012.a
+ 41b9bdba491afbeb94cec249b368498b  gcc/testsuite/ada/acats/tests/c4/c460013.a
+ 8caad81fc1b11cdf36c43c5366ffe8c4  gcc/testsuite/ada/acats/tests/c4/c460014.a
  4578ba3cbcc42767bfa1d9fb8beed52f  gcc/testsuite/ada/acats/tests/c4/c46011a.ada
  573e5b85d6d0d9289787bcf7f265aea9  gcc/testsuite/ada/acats/tests/c4/c46013a.ada
  ad32d1cce692c7cd1ef8bf3d2f70dee2  gcc/testsuite/ada/acats/tests/c4/c46014a.ada
*************** fa480782be6698aa97970fcf14c2f19b  gcc/te
*** 6957,6962 ****
--- 7362,7369 ----
  22c213bb3f4fac53cfad7701e5a6591a  gcc/testsuite/ada/acats/tests/c6/c61008a.ada
  5fb3b13780dfa407dfa99fcfa590913f  gcc/testsuite/ada/acats/tests/c6/c61009a.ada
  25cf5d0e53424f3054a20393c002970e  gcc/testsuite/ada/acats/tests/c6/c61010a.ada
+ fc4b87310c6618ffbf7d4df1f222a45f  gcc/testsuite/ada/acats/tests/c6/c620001.a
+ 2a393ff1326482d8490f5be202d8483c  gcc/testsuite/ada/acats/tests/c6/c620002.a
  97d97866837d419b1ddcfa6ccda2511e  gcc/testsuite/ada/acats/tests/c6/c62002a.ada
  29777c913c6649484125c1aa56f0093f  gcc/testsuite/ada/acats/tests/c6/c62003a.ada
  3e2cc6ba1c79eb1d9f3fe3bbb646cf6b  gcc/testsuite/ada/acats/tests/c6/c62003b.ada
*************** a4f8e8b6876d4b862928b00edca5f5d9  gcc/te
*** 7086,7092 ****
  d0ecfbaed2a882166d23beefe5f4e191  gcc/testsuite/ada/acats/tests/c7/c761003.a
  553e4393e53175606097eb8c9b415d22  gcc/testsuite/ada/acats/tests/c7/c761004.a
  4a7c5e1c13695ae75ad3a4df49a55b63  gcc/testsuite/ada/acats/tests/c7/c761005.a
! edc086df977204eba15518077b9694dc  gcc/testsuite/ada/acats/tests/c7/c761006.a
  a8b974a47ec1f7a4a5fc2ef06975f069  gcc/testsuite/ada/acats/tests/c7/c761007.a
  6ca84026fc9a5682d2db1f346eb920cd  gcc/testsuite/ada/acats/tests/c7/c761010.a
  8f26af4ffb9bc7a2e15aee7b1c0c2346  gcc/testsuite/ada/acats/tests/c7/c761011.a
--- 7493,7499 ----
  d0ecfbaed2a882166d23beefe5f4e191  gcc/testsuite/ada/acats/tests/c7/c761003.a
  553e4393e53175606097eb8c9b415d22  gcc/testsuite/ada/acats/tests/c7/c761004.a
  4a7c5e1c13695ae75ad3a4df49a55b63  gcc/testsuite/ada/acats/tests/c7/c761005.a
! d4f8faae1d5f7970e56d7a30c10a99c7  gcc/testsuite/ada/acats/tests/c7/c761006.a
  a8b974a47ec1f7a4a5fc2ef06975f069  gcc/testsuite/ada/acats/tests/c7/c761007.a
  6ca84026fc9a5682d2db1f346eb920cd  gcc/testsuite/ada/acats/tests/c7/c761010.a
  8f26af4ffb9bc7a2e15aee7b1c0c2346  gcc/testsuite/ada/acats/tests/c7/c761011.a
*************** d02e3ef0eb5c7ba2f412817b49644270  gcc/te
*** 7418,7430 ****
  da6bb14a212aa02754b6596d741c04b8  gcc/testsuite/ada/acats/tests/c9/c960002.a
  4c5c6b7d7706870241781f97576eef1b  gcc/testsuite/ada/acats/tests/c9/c960004.a
  f703a55c27d27529f63150ba86c8e428  gcc/testsuite/ada/acats/tests/c9/c96001a.ada
! f90e90ea3d83de85db44a3ecade9d953  gcc/testsuite/ada/acats/tests/c9/c96004a.ada
  2f64957621aaee0d11d2f8171f4e6709  gcc/testsuite/ada/acats/tests/c9/c96005a.ada
  7fad724f14640158cc9929364f0bb44f  gcc/testsuite/ada/acats/tests/c9/c96005b.tst
  6e3aebd279f9456cefe6dc63b3b9331e  gcc/testsuite/ada/acats/tests/c9/c96005d.ada
  48530b441ec07b282f87a1b285f46461  gcc/testsuite/ada/acats/tests/c9/c96005f.ada
  4ea722032f17d484d0a99cb53bc930ac  gcc/testsuite/ada/acats/tests/c9/c96006a.ada
! 771d12b900e5d9c522ff5953f00f3f07  gcc/testsuite/ada/acats/tests/c9/c96007a.ada
  031bef964d04e0ec5db2ff1f13daa5c1  gcc/testsuite/ada/acats/tests/c9/c96008a.ada
  f1d6b97aec5c567380c522a41db1aba7  gcc/testsuite/ada/acats/tests/c9/c96008b.ada
  9f6fd5618561fb30c4c3b3865512f084  gcc/testsuite/ada/acats/tests/c9/c97112a.ada
--- 7825,7837 ----
  da6bb14a212aa02754b6596d741c04b8  gcc/testsuite/ada/acats/tests/c9/c960002.a
  4c5c6b7d7706870241781f97576eef1b  gcc/testsuite/ada/acats/tests/c9/c960004.a
  f703a55c27d27529f63150ba86c8e428  gcc/testsuite/ada/acats/tests/c9/c96001a.ada
! 3551216de1ec0430cae6be8fbba64031  gcc/testsuite/ada/acats/tests/c9/c96004a.ada
  2f64957621aaee0d11d2f8171f4e6709  gcc/testsuite/ada/acats/tests/c9/c96005a.ada
  7fad724f14640158cc9929364f0bb44f  gcc/testsuite/ada/acats/tests/c9/c96005b.tst
  6e3aebd279f9456cefe6dc63b3b9331e  gcc/testsuite/ada/acats/tests/c9/c96005d.ada
  48530b441ec07b282f87a1b285f46461  gcc/testsuite/ada/acats/tests/c9/c96005f.ada
  4ea722032f17d484d0a99cb53bc930ac  gcc/testsuite/ada/acats/tests/c9/c96006a.ada
! 83d75c4aa3732428ebf8864a605ee0d4  gcc/testsuite/ada/acats/tests/c9/c96007a.ada
  031bef964d04e0ec5db2ff1f13daa5c1  gcc/testsuite/ada/acats/tests/c9/c96008a.ada
  f1d6b97aec5c567380c522a41db1aba7  gcc/testsuite/ada/acats/tests/c9/c96008b.ada
  9f6fd5618561fb30c4c3b3865512f084  gcc/testsuite/ada/acats/tests/c9/c97112a.ada
*************** ce7a78707740e7c8442c44280bd4b429  gcc/te
*** 7696,7702 ****
  fee21ac92aa6b69bea4a12f412715df6  gcc/testsuite/ada/acats/tests/cb/cb41001.a
  3bbe3f0aeccac5d0203ed045c2ccf49e  gcc/testsuite/ada/acats/tests/cb/cb41002.a
  d456462b7a7e6f3773b86bf24468d231  gcc/testsuite/ada/acats/tests/cb/cb41003.a
! 4307df06cca1689791f15b3bd3a48c6f  gcc/testsuite/ada/acats/tests/cb/cb41004.a
  01e2daee09a3391b981c7a63ebe0ae28  gcc/testsuite/ada/acats/tests/cb/cb5001a.ada
  5a22bfb3766d46433b2b7b2f046d0ea9  gcc/testsuite/ada/acats/tests/cb/cb5001b.ada
  63153559a0add5135a21197c6c8c0a9f  gcc/testsuite/ada/acats/tests/cb/cb5002a.ada
--- 8103,8109 ----
  fee21ac92aa6b69bea4a12f412715df6  gcc/testsuite/ada/acats/tests/cb/cb41001.a
  3bbe3f0aeccac5d0203ed045c2ccf49e  gcc/testsuite/ada/acats/tests/cb/cb41002.a
  d456462b7a7e6f3773b86bf24468d231  gcc/testsuite/ada/acats/tests/cb/cb41003.a
! fffb38bf5df913140c6261714aa601ea  gcc/testsuite/ada/acats/tests/cb/cb41004.a
  01e2daee09a3391b981c7a63ebe0ae28  gcc/testsuite/ada/acats/tests/cb/cb5001a.ada
  5a22bfb3766d46433b2b7b2f046d0ea9  gcc/testsuite/ada/acats/tests/cb/cb5001b.ada
  63153559a0add5135a21197c6c8c0a9f  gcc/testsuite/ada/acats/tests/cb/cb5002a.ada
*************** e21f329f8aeeeaaf980ab3ae301de7cb  gcc/te
*** 7743,7749 ****
  eb08409ceff83c49baa04e734c258681  gcc/testsuite/ada/acats/tests/cc/cc3015a.ada
  37ffe8fd743867700b2e0249fd73f16b  gcc/testsuite/ada/acats/tests/cc/cc3016b.ada
  92e8dfd4f50c7e3595bbd6ef5ebb4302  gcc/testsuite/ada/acats/tests/cc/cc3016c.ada
! aafd0412498a2b8a29690a5782def2af  gcc/testsuite/ada/acats/tests/cc/cc3016f.ada
  195ab10c1ca9bbfd5b16ade12e3259e2  gcc/testsuite/ada/acats/tests/cc/cc3016i.ada
  a5976b043f8ea78109e2936d58a009a8  gcc/testsuite/ada/acats/tests/cc/cc3017b.ada
  21e94c5f1086f6624d5237d010ecc0f2  gcc/testsuite/ada/acats/tests/cc/cc3017c.ada
--- 8150,8156 ----
  eb08409ceff83c49baa04e734c258681  gcc/testsuite/ada/acats/tests/cc/cc3015a.ada
  37ffe8fd743867700b2e0249fd73f16b  gcc/testsuite/ada/acats/tests/cc/cc3016b.ada
  92e8dfd4f50c7e3595bbd6ef5ebb4302  gcc/testsuite/ada/acats/tests/cc/cc3016c.ada
! 3bb5847d2c36a04a53a9dc138c40e34a  gcc/testsuite/ada/acats/tests/cc/cc3016f.ada
  195ab10c1ca9bbfd5b16ade12e3259e2  gcc/testsuite/ada/acats/tests/cc/cc3016i.ada
  a5976b043f8ea78109e2936d58a009a8  gcc/testsuite/ada/acats/tests/cc/cc3017b.ada
  21e94c5f1086f6624d5237d010ecc0f2  gcc/testsuite/ada/acats/tests/cc/cc3017c.ada
*************** cdcdd3477a39a731b6a087ee53c8d310  gcc/te
*** 7906,7911 ****
--- 8313,8320 ----
  58da39f40326823d0b3dcca45acdc03a  gcc/testsuite/ada/acats/tests/cd/cd30004.a
  b20df3bfc89786bd52ff18a24d92a63a  gcc/testsuite/ada/acats/tests/cd/cd300050.am
  6fc396067544f25307ce6a100bb5ef10  gcc/testsuite/ada/acats/tests/cd/cd300051.c
+ 53302b5bf903a58fb95e205690813d78  gcc/testsuite/ada/acats/tests/cd/cd30011.a
+ 03b96d80ed2b752193a510629a87cc3c  gcc/testsuite/ada/acats/tests/cd/cd30012.a
  a8163e0d624406b874260e4169d9e49c  gcc/testsuite/ada/acats/tests/cd/cd3014a.ada
  b3c46e3333ad22ce02ee156f3f0bccff  gcc/testsuite/ada/acats/tests/cd/cd3014c.ada
  a341da17e2d571e891434aa086ae7d3e  gcc/testsuite/ada/acats/tests/cd/cd3014d.ada
*************** bc9859e9de09dbae5b873f61d7dd6d25  gcc/te
*** 7987,7993 ****
  463ecdd8176f35af59f9b3791565e928  gcc/testsuite/ada/acats/tests/cd/cd72a01.a
  97e1c7a2d8dcad44f97e8a054d7ddbfa  gcc/testsuite/ada/acats/tests/cd/cd72a02.a
  094d528313c32d60bc8ef9966a3ba667  gcc/testsuite/ada/acats/tests/cd/cd7305a.ada
! 629979bac6abf15ab3d99550d8e406cc  gcc/testsuite/ada/acats/tests/cd/cd90001.a
  b35e132e38a1316bb94eb5685e744e45  gcc/testsuite/ada/acats/tests/cd/cd92001.a
  4acd15be94cdb921d9aaaf1c68bc86bd  gcc/testsuite/ada/acats/tests/cd/cda201a.ada
  95c680f466bbb6b462cff702c8c051d8  gcc/testsuite/ada/acats/tests/cd/cda201b.ada
--- 8396,8402 ----
  463ecdd8176f35af59f9b3791565e928  gcc/testsuite/ada/acats/tests/cd/cd72a01.a
  97e1c7a2d8dcad44f97e8a054d7ddbfa  gcc/testsuite/ada/acats/tests/cd/cd72a02.a
  094d528313c32d60bc8ef9966a3ba667  gcc/testsuite/ada/acats/tests/cd/cd7305a.ada
! 89a9ca0baa4aea5a158e931fd05972da  gcc/testsuite/ada/acats/tests/cd/cd90001.a
  b35e132e38a1316bb94eb5685e744e45  gcc/testsuite/ada/acats/tests/cd/cd92001.a
  4acd15be94cdb921d9aaaf1c68bc86bd  gcc/testsuite/ada/acats/tests/cd/cda201a.ada
  95c680f466bbb6b462cff702c8c051d8  gcc/testsuite/ada/acats/tests/cd/cda201b.ada
*************** ee7ec1f6b6ec4c5ef50b1d777026421a  gcc/te
*** 8269,8274 ****
--- 8678,8684 ----
  c4b3b8c1c9564099bdde092389cc2da4  gcc/testsuite/ada/acats/tests/cxa/cxa3001.a
  edb7feb6536121adfd4fd4a2f3d69a3f  gcc/testsuite/ada/acats/tests/cxa/cxa3002.a
  48392592efa08a198d6e5d7a1a663683  gcc/testsuite/ada/acats/tests/cxa/cxa3003.a
+ 7eb11ccdd82615be75ded3c2d5c126d1  gcc/testsuite/ada/acats/tests/cxa/cxa3004.a
  587c9299b8e48a8519d98c13c91ad290  gcc/testsuite/ada/acats/tests/cxa/cxa4001.a
  448cbac61205b8887f79bf74d5666a04  gcc/testsuite/ada/acats/tests/cxa/cxa4002.a
  46d3d97d6347f9b5ec34b3513bcfab40  gcc/testsuite/ada/acats/tests/cxa/cxa4003.a
*************** e272d6fb88a469d5600466803e241311  gcc/te
*** 8305,8310 ****
--- 8715,8721 ----
  90cfac79483d313e3e60ee66dd47bbb9  gcc/testsuite/ada/acats/tests/cxa/cxa4034.a
  d5b5e8186c886aee7a112ba901ef5b8c  gcc/testsuite/ada/acats/tests/cxa/cxa5011.a
  a67372b949970924bc0a9dd48dfc4999  gcc/testsuite/ada/acats/tests/cxa/cxa5012.a
+ 1bc3b7995dbf8b972dd33ceccc5775f8  gcc/testsuite/ada/acats/tests/cxa/cxa5013.a
  7f31584ea86307c534d43e91b8d28708  gcc/testsuite/ada/acats/tests/cxa/cxa5015.a
  ee786104570339c108786248363e8be5  gcc/testsuite/ada/acats/tests/cxa/cxa5a01.a
  59b52d99d8ad7539d9702fd5808604ab  gcc/testsuite/ada/acats/tests/cxa/cxa5a02.a
*************** cc1a3cfdd0d446ad5ae2882d5b1f089b  gcc/te
*** 8345,8351 ****
  6788fdbde2fdac4a827fd20b38d8711b  gcc/testsuite/ada/acats/tests/cxa/cxac002.a
  bc2d4997d303b5a8cd8ac49ea128eabc  gcc/testsuite/ada/acats/tests/cxa/cxac003.a
  0fed3fbdda367e73cc20e053e436b99f  gcc/testsuite/ada/acats/tests/cxa/cxac004.a
! ff2f17bb0b13b236e6c31f0c229fbd4e  gcc/testsuite/ada/acats/tests/cxa/cxac005.a
  1ea54203b702bc16f99a16da31812413  gcc/testsuite/ada/acats/tests/cxa/cxaca01.a
  177daeac77a726a44c2f67d470718c26  gcc/testsuite/ada/acats/tests/cxa/cxaca02.a
  56fc9878aa06e841c10ea2264f6970c0  gcc/testsuite/ada/acats/tests/cxa/cxacb01.a
--- 8756,8762 ----
  6788fdbde2fdac4a827fd20b38d8711b  gcc/testsuite/ada/acats/tests/cxa/cxac002.a
  bc2d4997d303b5a8cd8ac49ea128eabc  gcc/testsuite/ada/acats/tests/cxa/cxac003.a
  0fed3fbdda367e73cc20e053e436b99f  gcc/testsuite/ada/acats/tests/cxa/cxac004.a
! c03fcfa6083accd85e20bd1ddecb7e8e  gcc/testsuite/ada/acats/tests/cxa/cxac005.a
  1ea54203b702bc16f99a16da31812413  gcc/testsuite/ada/acats/tests/cxa/cxaca01.a
  177daeac77a726a44c2f67d470718c26  gcc/testsuite/ada/acats/tests/cxa/cxaca02.a
  56fc9878aa06e841c10ea2264f6970c0  gcc/testsuite/ada/acats/tests/cxa/cxacb01.a
*************** bf39b2f4f07ed6a4665a9dda2b002ff4  gcc/te
*** 8362,8367 ****
--- 8773,8779 ----
  834af9fa57783899a0e35eb445000495  gcc/testsuite/ada/acats/tests/cxb/cxb30041.am
  1f7e6c754cd6392302f6a73881265fcb  gcc/testsuite/ada/acats/tests/cxb/cxb3005.a
  47cb358f8b5c39994c472ca6162c0605  gcc/testsuite/ada/acats/tests/cxb/cxb30060.c
+ 43769c5f0a9930881f7e0db2f6a8a256  gcc/testsuite/ada/acats/tests/cxb/cxb30061.am
  593282429f5462d5ed18dcd8dcdb51d9  gcc/testsuite/ada/acats/tests/cxb/cxb3007.a
  f846172da7dd713a885e8d2a7d06687e  gcc/testsuite/ada/acats/tests/cxb/cxb3008.a
  d2f1180bb38e13d62efbd9773c8b157b  gcc/testsuite/ada/acats/tests/cxb/cxb3009.a
*************** fc709f860964cb89f985c7186e9f4747  gcc/te
*** 8386,8392 ****
  c09620903bb91a1bb4eb42d58e681d41  gcc/testsuite/ada/acats/tests/cxb/cxb5002.a
  d523751f359c8b2cd39c46362a810f62  gcc/testsuite/ada/acats/tests/cxb/cxb5003.a
  161785b3f8117f52fdfa5e2be103fe50  gcc/testsuite/ada/acats/tests/cxf/cxf1001.a
! ad4bbc622fb0f691963012f8e37dad9a  gcc/testsuite/ada/acats/tests/cxf/cxf2001.a
  6dbe0dc7ad8bcf924dea296b0e6d64f8  gcc/testsuite/ada/acats/tests/cxf/cxf2002.a
  df30106f75773ccdd081af9128456937  gcc/testsuite/ada/acats/tests/cxf/cxf2003.a
  bbdc713b858e164ba488b05b51a426d4  gcc/testsuite/ada/acats/tests/cxf/cxf2004.a
--- 8798,8804 ----
  c09620903bb91a1bb4eb42d58e681d41  gcc/testsuite/ada/acats/tests/cxb/cxb5002.a
  d523751f359c8b2cd39c46362a810f62  gcc/testsuite/ada/acats/tests/cxb/cxb5003.a
  161785b3f8117f52fdfa5e2be103fe50  gcc/testsuite/ada/acats/tests/cxf/cxf1001.a
! 38832640106024eeab3e787b3e1abf12  gcc/testsuite/ada/acats/tests/cxf/cxf2001.a
  6dbe0dc7ad8bcf924dea296b0e6d64f8  gcc/testsuite/ada/acats/tests/cxf/cxf2002.a
  df30106f75773ccdd081af9128456937  gcc/testsuite/ada/acats/tests/cxf/cxf2003.a
  bbdc713b858e164ba488b05b51a426d4  gcc/testsuite/ada/acats/tests/cxf/cxf2004.a
*************** b886a43ab960ee3b74b75b1a1895e692  gcc/te
*** 8555,8561 ****
  004386b31584ba3e3f7171f7674e4137  gcc/testsuite/ada/acats/tests/l/la140272.am
  9c63871113de9b518e90c90fe8e20f28  gcc/testsuite/ada/acats/tests/l/la140273.a
  7dbb3fe0d397fe7a60736cb608563ac7  gcc/testsuite/brig.dg/README
! 211c09b5c5060a11306b9a2833f7dc74  gcc/testsuite/brig.dg/dg.exp
  d7b27695da6c28d237451b4f5ae5af57  gcc/testsuite/brig.dg/test/gimple/alloca.hsail
  1f502a10b337d4d5d3cc57c4fd0d0f06  gcc/testsuite/brig.dg/test/gimple/atomics.hsail
  d837592f24865f99386ab68c6917abc5  gcc/testsuite/brig.dg/test/gimple/branches.hsail
--- 8967,8973 ----
  004386b31584ba3e3f7171f7674e4137  gcc/testsuite/ada/acats/tests/l/la140272.am
  9c63871113de9b518e90c90fe8e20f28  gcc/testsuite/ada/acats/tests/l/la140273.a
  7dbb3fe0d397fe7a60736cb608563ac7  gcc/testsuite/brig.dg/README
! 075d164955578b32904674b15440550c  gcc/testsuite/brig.dg/dg.exp
  d7b27695da6c28d237451b4f5ae5af57  gcc/testsuite/brig.dg/test/gimple/alloca.hsail
  1f502a10b337d4d5d3cc57c4fd0d0f06  gcc/testsuite/brig.dg/test/gimple/atomics.hsail
  d837592f24865f99386ab68c6917abc5  gcc/testsuite/brig.dg/test/gimple/branches.hsail
*************** ae90c21f583f2b6a421fc30804d8899d  gcc/te
*** 8565,8589 ****
  314cacaffe0535c7e1dab5e7cf00868f  gcc/testsuite/brig.dg/test/gimple/kernarg.hsail
  9d8377687de37d3501d4060cba204c55  gcc/testsuite/brig.dg/test/gimple/mem.hsail
  5847a2f69238995faccc83b042397536  gcc/testsuite/brig.dg/test/gimple/mulhi.hsail
! ea10e351e2b2a41c5b6390f56a5dcaa9  gcc/testsuite/brig.dg/test/gimple/packed.hsail
  b1d581eabac062c87bc61c1f774274ac  gcc/testsuite/brig.dg/test/gimple/priv-array-offset-access.hsail
  94b970ae376af0e284f2976c104818e0  gcc/testsuite/brig.dg/test/gimple/smoke_test.hsail
  1dc6e95345fe36c7fa2a0733cb0ad9dd  gcc/testsuite/brig.dg/test/gimple/variables.hsail
  58a44273e0caa3895dd39c85e67ec453  gcc/testsuite/brig.dg/test/gimple/vector.hsail
  25005a9265a333af56789fab16cd8e0e  gcc/testsuite/c-c++-common/Waddress-1.c
  81e4d27a297a7ce6fddf1ac2a8961317  gcc/testsuite/c-c++-common/Waddress-2.c
! dda33c019e496be4e84dd8626f348849  gcc/testsuite/c-c++-common/Waddress-of-packed-member-1.c
! 207f18f4c1cbc9d727f3bb3a12c71488  gcc/testsuite/c-c++-common/Waddress-of-packed-member-2.c
  26f47ca8f4d16158af229f5e0181ba58  gcc/testsuite/c-c++-common/Warray-bounds-2.c
  34280c62c9b758155754170a9b229274  gcc/testsuite/c-c++-common/Warray-bounds-3.c
  77fb98b4de58c40eb015ddc94143f957  gcc/testsuite/c-c++-common/Warray-bounds-4.c
  c51902099b5071373c02eb23d9a61aab  gcc/testsuite/c-c++-common/Warray-bounds-5.c
! 203394759972b9c6903ff56811c2ddad  gcc/testsuite/c-c++-common/Warray-bounds-6.c
! 2930cfb73fb50e5386eb6c6687b1db57  gcc/testsuite/c-c++-common/Warray-bounds-7.c
  8c8f0a3b217c247195f32bdfc2d93c74  gcc/testsuite/c-c++-common/Warray-bounds-8.c
! f79b5855c5db09326cd9eab0c793bf7a  gcc/testsuite/c-c++-common/Warray-bounds.c
  fe25f03fdb469ad245f6cae14480ddad  gcc/testsuite/c-c++-common/Wattributes-2.c
! 4ea2b701de6d6668157aec6f55c563f9  gcc/testsuite/c-c++-common/Wattributes.c
  714425fa09f1458ac9dd7cad4ad33ed2  gcc/testsuite/c-c++-common/Wbool-compare-1.c
  2137f66b6bcfc9d19df56b2f3ea80f8e  gcc/testsuite/c-c++-common/Wbool-compare-2.c
  da6daa27c49af7ff04e05ae804b39498  gcc/testsuite/c-c++-common/Wbool-compare-3.c
--- 8977,9001 ----
  314cacaffe0535c7e1dab5e7cf00868f  gcc/testsuite/brig.dg/test/gimple/kernarg.hsail
  9d8377687de37d3501d4060cba204c55  gcc/testsuite/brig.dg/test/gimple/mem.hsail
  5847a2f69238995faccc83b042397536  gcc/testsuite/brig.dg/test/gimple/mulhi.hsail
! 0da3ce95f7ae9cfc01ac54ffe1ae4ddb  gcc/testsuite/brig.dg/test/gimple/packed.hsail
  b1d581eabac062c87bc61c1f774274ac  gcc/testsuite/brig.dg/test/gimple/priv-array-offset-access.hsail
  94b970ae376af0e284f2976c104818e0  gcc/testsuite/brig.dg/test/gimple/smoke_test.hsail
  1dc6e95345fe36c7fa2a0733cb0ad9dd  gcc/testsuite/brig.dg/test/gimple/variables.hsail
  58a44273e0caa3895dd39c85e67ec453  gcc/testsuite/brig.dg/test/gimple/vector.hsail
  25005a9265a333af56789fab16cd8e0e  gcc/testsuite/c-c++-common/Waddress-1.c
  81e4d27a297a7ce6fddf1ac2a8961317  gcc/testsuite/c-c++-common/Waddress-2.c
! cc70faf06727814cce7b45e0a0d0614d  gcc/testsuite/c-c++-common/Waddress-of-packed-member-1.c
! 76fa33c917471922e94d50763fda451c  gcc/testsuite/c-c++-common/Waddress-of-packed-member-2.c
  26f47ca8f4d16158af229f5e0181ba58  gcc/testsuite/c-c++-common/Warray-bounds-2.c
  34280c62c9b758155754170a9b229274  gcc/testsuite/c-c++-common/Warray-bounds-3.c
  77fb98b4de58c40eb015ddc94143f957  gcc/testsuite/c-c++-common/Warray-bounds-4.c
  c51902099b5071373c02eb23d9a61aab  gcc/testsuite/c-c++-common/Warray-bounds-5.c
! 1614a81bdc170f1a42520e869c6dd71e  gcc/testsuite/c-c++-common/Warray-bounds-6.c
! 9b53f623c31e9c02bcd8e8045056e09d  gcc/testsuite/c-c++-common/Warray-bounds-7.c
  8c8f0a3b217c247195f32bdfc2d93c74  gcc/testsuite/c-c++-common/Warray-bounds-8.c
! ad210b6699449d7c2f1c95f9c363d606  gcc/testsuite/c-c++-common/Warray-bounds.c
  fe25f03fdb469ad245f6cae14480ddad  gcc/testsuite/c-c++-common/Wattributes-2.c
! 0bcda44055ed5df42b261295603d2147  gcc/testsuite/c-c++-common/Wattributes.c
  714425fa09f1458ac9dd7cad4ad33ed2  gcc/testsuite/c-c++-common/Wbool-compare-1.c
  2137f66b6bcfc9d19df56b2f3ea80f8e  gcc/testsuite/c-c++-common/Wbool-compare-2.c
  da6daa27c49af7ff04e05ae804b39498  gcc/testsuite/c-c++-common/Wbool-compare-3.c
*************** ab46b28ebe1588d3da5a24b1ba47c9dc  gcc/te
*** 8606,8611 ****
--- 9018,9024 ----
  3d6ea0597eb0a1b1b935837de16a8173  gcc/testsuite/c-c++-common/Wduplicated-branches-12.c
  fca6e5f273133ee6617fb0a82ba4bf1a  gcc/testsuite/c-c++-common/Wduplicated-branches-13.c
  462caec7e63757a76ecab2ca7cdcdebf  gcc/testsuite/c-c++-common/Wduplicated-branches-14.c
+ 1f672b9a7faf5e23780f5898c31cdd80  gcc/testsuite/c-c++-common/Wduplicated-branches-15.c
  a9148fdc62aa5500700fdbd7bf8c06d2  gcc/testsuite/c-c++-common/Wduplicated-branches-2.c
  fd06760c164e43598b6a89def0a7452a  gcc/testsuite/c-c++-common/Wduplicated-branches-3.c
  2738bcffd08a822ee8535306b0a0877b  gcc/testsuite/c-c++-common/Wduplicated-branches-4.c
*************** ef4f4b5de989d9dc5bddbdc69330bc75  gcc/te
*** 8622,8627 ****
--- 9035,9043 ----
  856413eebe730a0c7a3ad5fb9397241a  gcc/testsuite/c-c++-common/Wformat-pr84258.c
  312a2ba796d2f8b759556fb3292d0dc4  gcc/testsuite/c-c++-common/Wformat-pr88257.c
  bfab16ac2e29ff30ff0d3dd400e68b04  gcc/testsuite/c-c++-common/Wformat-pr88257.h
+ 7d8476b6035890bc98e075d73a99fd04  gcc/testsuite/c-c++-common/Wfree-nonheap-object-2.c
+ 9646292e1a4040353e02ce54d2082c27  gcc/testsuite/c-c++-common/Wfree-nonheap-object-3.c
+ 22813c8f8f4a22dbef46549dbed9d5c8  gcc/testsuite/c-c++-common/Wfree-nonheap-object.c
  55160ccf08a9b1444b32deb900dac569  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-1.c
  9954ed8dee26e5b5fa02ab1f16163f1e  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-10.c
  0f8e0df13f6d9cf6ae7fd7f44107fce1  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-11.c
*************** fe8be64a5ffbdd7f1b048e0b006a8032  gcc/te
*** 8634,8640 ****
  75973c0313c1e658457523c8e8f276a2  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-18.c
  8061984e81bfdc3a2dcdf03946f3c827  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-19.c
  ce97808550378e45798e0d88816d3ede  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-2.c
! 62e2cd5d47dda651cf1981063bcaa0e6  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-20.c
  fddc9b97a6e9dd44633b16accd983ec8  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-21.c
  94d166a5939003908b4c7285746f0620  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-22.c
  4a592b2acbf4824d20acc6185132f697  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-23.c
--- 9050,9056 ----
  75973c0313c1e658457523c8e8f276a2  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-18.c
  8061984e81bfdc3a2dcdf03946f3c827  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-19.c
  ce97808550378e45798e0d88816d3ede  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-2.c
! 71ece17b5fee0f6c5abeed00fd21768e  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-20.c
  fddc9b97a6e9dd44633b16accd983ec8  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-21.c
  94d166a5939003908b4c7285746f0620  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-22.c
  4a592b2acbf4824d20acc6185132f697  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-23.c
*************** cda3bb9ca57e369084621185346974dc  gcc/te
*** 8655,8662 ****
  3c49eb8103fe7dc5e5ef9a32c553d418  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-37.c
  209de9c779ee1c2bb93781cd743aa8e7  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-4.c
  006c2c882c026a00e907e95f539d0817  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-5.c
! f0bf64bc19e536120d0c8506bd78b88b  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-6.c
! 390b371eb66b3e4f5fd4b3109671cc40  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c
  4b64bcc0915807f44996fe6274bf008e  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-8.c
  5e51a81bf671fcaa946052b108021b4f  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-9.c
  43ae39f0679e1d383a18e2949e8dde25  gcc/testsuite/c-c++-common/Wint-in-bool-context-2.c
--- 9071,9078 ----
  3c49eb8103fe7dc5e5ef9a32c553d418  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-37.c
  209de9c779ee1c2bb93781cd743aa8e7  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-4.c
  006c2c882c026a00e907e95f539d0817  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-5.c
! 35ef745805a62adf180cc3c34449ff39  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-6.c
! 04da5c6a59c11741367cd83d451829d7  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c
  4b64bcc0915807f44996fe6274bf008e  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-8.c
  5e51a81bf671fcaa946052b108021b4f  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-9.c
  43ae39f0679e1d383a18e2949e8dde25  gcc/testsuite/c-c++-common/Wint-in-bool-context-2.c
*************** a4097e11dbd186a4a835f4b4cc1bdc2e  gcc/te
*** 8675,8684 ****
  e19dad747a19c74fc5083f841ecaf657  gcc/testsuite/c-c++-common/Wmemset-transposed-args2.c
  1d01a5f65df63425868edba223b37272  gcc/testsuite/c-c++-common/Wmisleading-indentation-2.c
  d17ae32a38b973bb1e30dfe6eedbd3b8  gcc/testsuite/c-c++-common/Wmisleading-indentation-2.md
! 06bf63ac4f267a19987a293dd3d978dc  gcc/testsuite/c-c++-common/Wmisleading-indentation-3.c
  336ca93b175f135bba95e9e1462d761f  gcc/testsuite/c-c++-common/Wmisleading-indentation-4.c
  e0c2b30e8f5146a4572f1179b3dd0c61  gcc/testsuite/c-c++-common/Wmisleading-indentation-pr70693.c
! d9091ba345f1ee07c6637a19dad991e5  gcc/testsuite/c-c++-common/Wmisleading-indentation.c
  b884f1ec71306f73d1b3a258e4b09926  gcc/testsuite/c-c++-common/Wmultistatement-macros-1.c
  f11643259ba4e19e4611a961f1bd9817  gcc/testsuite/c-c++-common/Wmultistatement-macros-10.c
  a1ec261a39e03b21a59823121e95d874  gcc/testsuite/c-c++-common/Wmultistatement-macros-11.c
--- 9091,9102 ----
  e19dad747a19c74fc5083f841ecaf657  gcc/testsuite/c-c++-common/Wmemset-transposed-args2.c
  1d01a5f65df63425868edba223b37272  gcc/testsuite/c-c++-common/Wmisleading-indentation-2.c
  d17ae32a38b973bb1e30dfe6eedbd3b8  gcc/testsuite/c-c++-common/Wmisleading-indentation-2.md
! 395a0a903e6e849452276783431987a1  gcc/testsuite/c-c++-common/Wmisleading-indentation-3.c
  336ca93b175f135bba95e9e1462d761f  gcc/testsuite/c-c++-common/Wmisleading-indentation-4.c
+ cf4158d0a3ab3c67e7bb3304d044b16f  gcc/testsuite/c-c++-common/Wmisleading-indentation-5.c
  e0c2b30e8f5146a4572f1179b3dd0c61  gcc/testsuite/c-c++-common/Wmisleading-indentation-pr70693.c
! f45c9bbce5d89d30db65ab853a4143d2  gcc/testsuite/c-c++-common/Wmisleading-indentation.c
! 6c40dabc9d6af3978a6cf20c50cf6a33  gcc/testsuite/c-c++-common/Wmismatched-dealloc.c
  b884f1ec71306f73d1b3a258e4b09926  gcc/testsuite/c-c++-common/Wmultistatement-macros-1.c
  f11643259ba4e19e4611a961f1bd9817  gcc/testsuite/c-c++-common/Wmultistatement-macros-10.c
  a1ec261a39e03b21a59823121e95d874  gcc/testsuite/c-c++-common/Wmultistatement-macros-11.c
*************** ccb8ce6afa2243d9aec47e26a1e585f2  gcc/te
*** 8700,8706 ****
  11d3248b6ea99e7a45d1a774cb605703  gcc/testsuite/c-c++-common/Wprio-ctor-dtor.c
  418addd7c496fa3ae10687ea8dd6668c  gcc/testsuite/c-c++-common/Wrestrict-2.c
  444583f2170154222066726b97ff69ff  gcc/testsuite/c-c++-common/Wrestrict-3.c
! 634d3b1c41d2942b4647a1b3db84dcf5  gcc/testsuite/c-c++-common/Wrestrict.c
  51fdd1aacef3259e17622c73fe086bee  gcc/testsuite/c-c++-common/Wreturn-local-addr.c
  d57f0b6d660c8299b95ba02b346d2d76  gcc/testsuite/c-c++-common/Wsequence-point-1.c
  3831f9cd25e86185c0d7bd260ddc4a22  gcc/testsuite/c-c++-common/Wsequence-point-2.c
--- 9118,9124 ----
  11d3248b6ea99e7a45d1a774cb605703  gcc/testsuite/c-c++-common/Wprio-ctor-dtor.c
  418addd7c496fa3ae10687ea8dd6668c  gcc/testsuite/c-c++-common/Wrestrict-2.c
  444583f2170154222066726b97ff69ff  gcc/testsuite/c-c++-common/Wrestrict-3.c
! b2245d12607c90c46a2055f2fc00b761  gcc/testsuite/c-c++-common/Wrestrict.c
  51fdd1aacef3259e17622c73fe086bee  gcc/testsuite/c-c++-common/Wreturn-local-addr.c
  d57f0b6d660c8299b95ba02b346d2d76  gcc/testsuite/c-c++-common/Wsequence-point-1.c
  3831f9cd25e86185c0d7bd260ddc4a22  gcc/testsuite/c-c++-common/Wsequence-point-2.c
*************** f8b8dcb9f64cd4f1158a36e44cdf76b7  gcc/te
*** 8724,8740 ****
  d2ebf4f8689ab32e5be23f1ebf97667f  gcc/testsuite/c-c++-common/Wshift-overflow-7.c
  2095424b6b86a7ddbae9c94c16fa2157  gcc/testsuite/c-c++-common/Wsign-compare-1.c
  40bc1e540d092c06d14dc9842ee9cd03  gcc/testsuite/c-c++-common/Wsign-conversion-1.c
! de15cabafc30a00e81c083c9a9428ac8  gcc/testsuite/c-c++-common/Wsizeof-pointer-div.c
! 32df34b1472bcfdea6e41e9ce2f31d7c  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess1.c
  bf0b620625355f346eefd54a379f0ac2  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess2.c
  9435b893d35596d6e6c421a7d0ca6b4e  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess3.c
  c2f8af9a24cbf598244cbdf23a6eb007  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess4.c
! 10fbcaf8f85faf81c5222e12ccd7746b  gcc/testsuite/c-c++-common/Wstringop-overflow-2.c
! 2dc81fc124460cc2ec5d7aef6b94b6f3  gcc/testsuite/c-c++-common/Wstringop-overflow.c
  b9163d26f5124adacd165e32f8b32a62  gcc/testsuite/c-c++-common/Wstringop-truncation-2.c
  e43106fc454dedd36c41a975a04be5e3  gcc/testsuite/c-c++-common/Wstringop-truncation-3.c
  e80b7aaae365db3fe8339ddc534cc5c0  gcc/testsuite/c-c++-common/Wstringop-truncation-4.c
! b32553a80bbb7f2d37ad1425d200e8da  gcc/testsuite/c-c++-common/Wstringop-truncation.c
  9d794a1763749ee0180f56ce7aed6d0c  gcc/testsuite/c-c++-common/Wswitch-outside-range-1.c
  91da5133e61260ea9e9663f1e6a778fd  gcc/testsuite/c-c++-common/Wswitch-outside-range-2.c
  e47c13cfff5cd19e684db7748de8566d  gcc/testsuite/c-c++-common/Wswitch-outside-range-3.c
--- 9142,9159 ----
  d2ebf4f8689ab32e5be23f1ebf97667f  gcc/testsuite/c-c++-common/Wshift-overflow-7.c
  2095424b6b86a7ddbae9c94c16fa2157  gcc/testsuite/c-c++-common/Wsign-compare-1.c
  40bc1e540d092c06d14dc9842ee9cd03  gcc/testsuite/c-c++-common/Wsign-conversion-1.c
! c7eebf2a6120dfecf1a6ae7de1f49694  gcc/testsuite/c-c++-common/Wsizeof-array-div1.c
! 60f2f0aa7f30ae4b7fc18937d32ed9b7  gcc/testsuite/c-c++-common/Wsizeof-pointer-div.c
! f8e71991761921aac66c6e562d69b2e8  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess1.c
  bf0b620625355f346eefd54a379f0ac2  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess2.c
  9435b893d35596d6e6c421a7d0ca6b4e  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess3.c
  c2f8af9a24cbf598244cbdf23a6eb007  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess4.c
! f99318c6660ede68836f5ad6e8d8ce00  gcc/testsuite/c-c++-common/Wstringop-overflow-2.c
! ed599254a04855f3e360dc18fbdba9d9  gcc/testsuite/c-c++-common/Wstringop-overflow.c
  b9163d26f5124adacd165e32f8b32a62  gcc/testsuite/c-c++-common/Wstringop-truncation-2.c
  e43106fc454dedd36c41a975a04be5e3  gcc/testsuite/c-c++-common/Wstringop-truncation-3.c
  e80b7aaae365db3fe8339ddc534cc5c0  gcc/testsuite/c-c++-common/Wstringop-truncation-4.c
! 8fbb5eb134edcf2c44483393cbe2582c  gcc/testsuite/c-c++-common/Wstringop-truncation.c
  9d794a1763749ee0180f56ce7aed6d0c  gcc/testsuite/c-c++-common/Wswitch-outside-range-1.c
  91da5133e61260ea9e9663f1e6a778fd  gcc/testsuite/c-c++-common/Wswitch-outside-range-2.c
  e47c13cfff5cd19e684db7748de8566d  gcc/testsuite/c-c++-common/Wswitch-outside-range-3.c
*************** adeb73c262eb712e84e2823a98c1199c  gcc/te
*** 8789,8795 ****
  483882054d8d099b9769ca966f926bf0  gcc/testsuite/c-c++-common/asan/alloca_overflow_right.c
  f521c0adacbecee9cbfcbdd089681c95  gcc/testsuite/c-c++-common/asan/alloca_safe_access.c
  e4943a29b314a6337f7b56e003bd32eb  gcc/testsuite/c-c++-common/asan/alloca_underflow_left.c
! 83eb03dd0d4fe6c522bc215fca0bc0a3  gcc/testsuite/c-c++-common/asan/asan-interface-1.c
  3acc8f2042e817e0870af868f00255f9  gcc/testsuite/c-c++-common/asan/asan-stack-small.c
  966c2b8ee203d9d76e0a1b80b23e46ea  gcc/testsuite/c-c++-common/asan/attrib-1.c
  328bc4f2618808b8aed2a1e944810a42  gcc/testsuite/c-c++-common/asan/bitfield-1.c
--- 9208,9214 ----
  483882054d8d099b9769ca966f926bf0  gcc/testsuite/c-c++-common/asan/alloca_overflow_right.c
  f521c0adacbecee9cbfcbdd089681c95  gcc/testsuite/c-c++-common/asan/alloca_safe_access.c
  e4943a29b314a6337f7b56e003bd32eb  gcc/testsuite/c-c++-common/asan/alloca_underflow_left.c
! 9a261f8bffecf43239790dbf2d8aca82  gcc/testsuite/c-c++-common/asan/asan-interface-1.c
  3acc8f2042e817e0870af868f00255f9  gcc/testsuite/c-c++-common/asan/asan-stack-small.c
  966c2b8ee203d9d76e0a1b80b23e46ea  gcc/testsuite/c-c++-common/asan/attrib-1.c
  328bc4f2618808b8aed2a1e944810a42  gcc/testsuite/c-c++-common/asan/bitfield-1.c
*************** e4943a29b314a6337f7b56e003bd32eb  gcc/te
*** 8797,8809 ****
  8a68fad7266da19c9cd65712ddef26ee  gcc/testsuite/c-c++-common/asan/bitfield-3.c
  1e9a26c9d4dc1a7909c9ae8af2c4046c  gcc/testsuite/c-c++-common/asan/bitfield-4.c
  a19feeb74b26953ebaaf91c93429fd81  gcc/testsuite/c-c++-common/asan/bitfield-5.c
! 4bd67b0d36532dc2480c1d573a461e0f  gcc/testsuite/c-c++-common/asan/clone-test-1.c
  2b7a63d20c047f64c3e1caa408ba593b  gcc/testsuite/c-c++-common/asan/force-inline-opt0-1.c
  b2db2d3e56743cf6e27e5b5285ce58c8  gcc/testsuite/c-c++-common/asan/global-overflow-1.c
  3e11274291024634a4a707ea2297e543  gcc/testsuite/c-c++-common/asan/halt_on_error-1.c
  110b851a84d7abdb717efa4ccf904baf  gcc/testsuite/c-c++-common/asan/halt_on_error-2.c
  583c97672fe7272cc8e06d1fc5e3adfb  gcc/testsuite/c-c++-common/asan/heap-overflow-1.c
  915db5fd3e96749605b646bc5e5e0a5a  gcc/testsuite/c-c++-common/asan/inc.c
  c5ea8dd9bf7600304dc54e7f49427fc6  gcc/testsuite/c-c++-common/asan/instrument-with-calls-1.c
  e9ac694e62021365bb12134eac0ea1b3  gcc/testsuite/c-c++-common/asan/instrument-with-calls-2.c
  09cec4772e57416c636d606886d98e21  gcc/testsuite/c-c++-common/asan/instrument-with-calls-3.c
--- 9216,9230 ----
  8a68fad7266da19c9cd65712ddef26ee  gcc/testsuite/c-c++-common/asan/bitfield-3.c
  1e9a26c9d4dc1a7909c9ae8af2c4046c  gcc/testsuite/c-c++-common/asan/bitfield-4.c
  a19feeb74b26953ebaaf91c93429fd81  gcc/testsuite/c-c++-common/asan/bitfield-5.c
! fc345f9432dbaf202b33b89e3729af4e  gcc/testsuite/c-c++-common/asan/clone-test-1.c
  2b7a63d20c047f64c3e1caa408ba593b  gcc/testsuite/c-c++-common/asan/force-inline-opt0-1.c
  b2db2d3e56743cf6e27e5b5285ce58c8  gcc/testsuite/c-c++-common/asan/global-overflow-1.c
  3e11274291024634a4a707ea2297e543  gcc/testsuite/c-c++-common/asan/halt_on_error-1.c
  110b851a84d7abdb717efa4ccf904baf  gcc/testsuite/c-c++-common/asan/halt_on_error-2.c
  583c97672fe7272cc8e06d1fc5e3adfb  gcc/testsuite/c-c++-common/asan/heap-overflow-1.c
  915db5fd3e96749605b646bc5e5e0a5a  gcc/testsuite/c-c++-common/asan/inc.c
+ e0d196ee96eadd2755e9d28ce9b687e6  gcc/testsuite/c-c++-common/asan/inline-kernel.c
+ 5c5faec9d18c20198397cf668e0f176a  gcc/testsuite/c-c++-common/asan/inline.c
  c5ea8dd9bf7600304dc54e7f49427fc6  gcc/testsuite/c-c++-common/asan/instrument-with-calls-1.c
  e9ac694e62021365bb12134eac0ea1b3  gcc/testsuite/c-c++-common/asan/instrument-with-calls-2.c
  09cec4772e57416c636d606886d98e21  gcc/testsuite/c-c++-common/asan/instrument-with-calls-3.c
*************** b6fba65be56233636391b792d7776a15  gcc/te
*** 8817,8823 ****
  b7d8c6d2bcb21a1f7e5b1b1ae09c6681  gcc/testsuite/c-c++-common/asan/misalign-2.c
  8f1c6f5ef60541210633d5a1071d4a56  gcc/testsuite/c-c++-common/asan/no-asan-check-glob.c
  a5e083f102b9aa8e451588e7e265474b  gcc/testsuite/c-c++-common/asan/no-asan-globals.c
! f4c8bd1fd7322a794b8155bf56b32c57  gcc/testsuite/c-c++-common/asan/no-asan-stack.c
  8099f3d3920d256516883cb1b7e71ff2  gcc/testsuite/c-c++-common/asan/no-instrument-reads.c
  20176f47a686eca119ca3a7c75c73823  gcc/testsuite/c-c++-common/asan/no-instrument-writes.c
  27d25b9b4b4e627edd4828e7aad7a60e  gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-1.c
--- 9238,9244 ----
  b7d8c6d2bcb21a1f7e5b1b1ae09c6681  gcc/testsuite/c-c++-common/asan/misalign-2.c
  8f1c6f5ef60541210633d5a1071d4a56  gcc/testsuite/c-c++-common/asan/no-asan-check-glob.c
  a5e083f102b9aa8e451588e7e265474b  gcc/testsuite/c-c++-common/asan/no-asan-globals.c
! e9f94841664798f613927a2d6968103d  gcc/testsuite/c-c++-common/asan/no-asan-stack.c
  8099f3d3920d256516883cb1b7e71ff2  gcc/testsuite/c-c++-common/asan/no-instrument-reads.c
  20176f47a686eca119ca3a7c75c73823  gcc/testsuite/c-c++-common/asan/no-instrument-writes.c
  27d25b9b4b4e627edd4828e7aad7a60e  gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-1.c
*************** f040c23b54cf32adff7b8ed8f739fb60  gcc/te
*** 8836,8842 ****
  db4942fb1e6237d8999cbd7befad36c5  gcc/testsuite/c-c++-common/asan/no-redundant-odr-indicators-1.c
  d96e86e0b770414e72de009b6c7afadd  gcc/testsuite/c-c++-common/asan/no-use-after-return.c
  869ef47c74f02e648046301bafcd185b  gcc/testsuite/c-c++-common/asan/null-deref-1.c
! 3e857d6ff4535c06a4b5ec02097ee920  gcc/testsuite/c-c++-common/asan/pointer-compare-1.c
  7b3d7827b76153028c59412c76979a9a  gcc/testsuite/c-c++-common/asan/pointer-compare-2.c
  9c368a814bd51803559b20c95cbb2ca4  gcc/testsuite/c-c++-common/asan/pointer-compare-3.c
  3d53127b19faa90799f41b902bed87ab  gcc/testsuite/c-c++-common/asan/pointer-subtract-1.c
--- 9257,9263 ----
  db4942fb1e6237d8999cbd7befad36c5  gcc/testsuite/c-c++-common/asan/no-redundant-odr-indicators-1.c
  d96e86e0b770414e72de009b6c7afadd  gcc/testsuite/c-c++-common/asan/no-use-after-return.c
  869ef47c74f02e648046301bafcd185b  gcc/testsuite/c-c++-common/asan/null-deref-1.c
! 59906ecf875395218548e49754288ce9  gcc/testsuite/c-c++-common/asan/pointer-compare-1.c
  7b3d7827b76153028c59412c76979a9a  gcc/testsuite/c-c++-common/asan/pointer-compare-2.c
  9c368a814bd51803559b20c95cbb2ca4  gcc/testsuite/c-c++-common/asan/pointer-compare-3.c
  3d53127b19faa90799f41b902bed87ab  gcc/testsuite/c-c++-common/asan/pointer-subtract-1.c
*************** c8e34a9a26867d8e55d6f7b2f75c5ea0  gcc/te
*** 8845,8852 ****
  21163244bb8e247a93b03aa6378144eb  gcc/testsuite/c-c++-common/asan/pointer-subtract-4.c
  9a0dd3dcef02945c8967f40a29316496  gcc/testsuite/c-c++-common/asan/pr56330.c
  202bae43b2843228776d43c8d07c92c8  gcc/testsuite/c-c++-common/asan/pr59029.c
! 0e87bd931ae1ab52ea5326305fe87bbf  gcc/testsuite/c-c++-common/asan/pr59063-1.c
! 953a5092087152a6b17aca5e785c5a82  gcc/testsuite/c-c++-common/asan/pr59063-2.c
  31c558f06954a14ead49eeebe130dd9a  gcc/testsuite/c-c++-common/asan/pr61530.c
  36a8e4bdcb9cdd4c57029e7a7c755fde  gcc/testsuite/c-c++-common/asan/pr62089.c
  10127067cac44d34f08d701d26036156  gcc/testsuite/c-c++-common/asan/pr62140-1.c
--- 9266,9273 ----
  21163244bb8e247a93b03aa6378144eb  gcc/testsuite/c-c++-common/asan/pointer-subtract-4.c
  9a0dd3dcef02945c8967f40a29316496  gcc/testsuite/c-c++-common/asan/pr56330.c
  202bae43b2843228776d43c8d07c92c8  gcc/testsuite/c-c++-common/asan/pr59029.c
! 65128b17436f6406d9e224257030e000  gcc/testsuite/c-c++-common/asan/pr59063-1.c
! 71cab99b55f359571fa3f6adc89dbc61  gcc/testsuite/c-c++-common/asan/pr59063-2.c
  31c558f06954a14ead49eeebe130dd9a  gcc/testsuite/c-c++-common/asan/pr61530.c
  36a8e4bdcb9cdd4c57029e7a7c755fde  gcc/testsuite/c-c++-common/asan/pr62089.c
  10127067cac44d34f08d701d26036156  gcc/testsuite/c-c++-common/asan/pr62140-1.c
*************** cbc001fdbd160c2b35cb6fbce99eec06  gcc/te
*** 8865,8870 ****
--- 9286,9294 ----
  d28d598c3f2451cc37c1f66782dabfec  gcc/testsuite/c-c++-common/asan/pr88333.c
  62ed79bf235f51a98c4b6b7829b845a2  gcc/testsuite/c-c++-common/asan/pr88619.c
  9812809bad1f3dafa58acebb37551dff  gcc/testsuite/c-c++-common/asan/pr89124.c
+ 9f8c17096f122cc8a62296cbc3f6cec4  gcc/testsuite/c-c++-common/asan/pr98204.c
+ dd3e55591722bc562e2c125d8f24fa56  gcc/testsuite/c-c++-common/asan/pr98920.c
+ b997527b1b8cef295d289fc1956dfe2a  gcc/testsuite/c-c++-common/asan/pr99168.c
  53382ff9da47e361b5e5dc525d26e518  gcc/testsuite/c-c++-common/asan/red-align-1.c
  40dc4b3092482d9427dfbc9415f0b0a8  gcc/testsuite/c-c++-common/asan/red-align-2.c
  8940936501084c6e4d7f6d110ba612d8  gcc/testsuite/c-c++-common/asan/rlimit-mmap-test-1.c
*************** ca3a4e630befd762fc8576e74160a5a4  gcc/te
*** 8883,8895 ****
  0a2e4001b6ac2328ef0e29cfc0519941  gcc/testsuite/c-c++-common/asan/user-section-2.c
  3e31f5c1b9397bc124776d607d15c688  gcc/testsuite/c-c++-common/asan/user-section-3.c
  8a1805e319233a0be84ec2f57d73fdf0  gcc/testsuite/c-c++-common/asmgoto-1.c
! 0ae07bead2631c8edcb00032badf04af  gcc/testsuite/c-c++-common/asmgoto-2.c
  23fd6d68a2d88cbcf8cd954faf8fb296  gcc/testsuite/c-c++-common/asmgoto-3.c
  dcd81f0d6cf4d767d2d3f42f805b143b  gcc/testsuite/c-c++-common/asmgoto-4.c
  3965a9ab5dc92c92b09bb770bf0f0749  gcc/testsuite/c-c++-common/attr-aligned-1.c
! 60a72243e0d12ee432c336b955b7f836  gcc/testsuite/c-c++-common/attr-copy.c
  7013572d9ddd96911ba5c9684a120afa  gcc/testsuite/c-c++-common/attr-fallthrough-1.c
! d74ec118aa5c7b9d1779b844850d814b  gcc/testsuite/c-c++-common/attr-fallthrough-2.c
  ecc5351c14d6a9924c9ba3fe13409d1d  gcc/testsuite/c-c++-common/attr-may-alias-1.c
  38e52e11c86808356af8a92c21eed6fb  gcc/testsuite/c-c++-common/attr-may-alias-2.c
  c8b98a656dafef917e51ff4b5433e980  gcc/testsuite/c-c++-common/attr-nocf-check-1.c
--- 9307,9319 ----
  0a2e4001b6ac2328ef0e29cfc0519941  gcc/testsuite/c-c++-common/asan/user-section-2.c
  3e31f5c1b9397bc124776d607d15c688  gcc/testsuite/c-c++-common/asan/user-section-3.c
  8a1805e319233a0be84ec2f57d73fdf0  gcc/testsuite/c-c++-common/asmgoto-1.c
! b52858b1b0e17f71a6cbfe1dbc98f153  gcc/testsuite/c-c++-common/asmgoto-2.c
  23fd6d68a2d88cbcf8cd954faf8fb296  gcc/testsuite/c-c++-common/asmgoto-3.c
  dcd81f0d6cf4d767d2d3f42f805b143b  gcc/testsuite/c-c++-common/asmgoto-4.c
  3965a9ab5dc92c92b09bb770bf0f0749  gcc/testsuite/c-c++-common/attr-aligned-1.c
! e923f51b7486cc54ba78d31bc374766a  gcc/testsuite/c-c++-common/attr-copy.c
  7013572d9ddd96911ba5c9684a120afa  gcc/testsuite/c-c++-common/attr-fallthrough-1.c
! 1fd32b4c2291451fdfca75ea5c3368e7  gcc/testsuite/c-c++-common/attr-fallthrough-2.c
  ecc5351c14d6a9924c9ba3fe13409d1d  gcc/testsuite/c-c++-common/attr-may-alias-1.c
  38e52e11c86808356af8a92c21eed6fb  gcc/testsuite/c-c++-common/attr-may-alias-2.c
  c8b98a656dafef917e51ff4b5433e980  gcc/testsuite/c-c++-common/attr-nocf-check-1.c
*************** c8b98a656dafef917e51ff4b5433e980  gcc/te
*** 8897,8915 ****
  c646b644758e950a4110aea0b34c55f2  gcc/testsuite/c-c++-common/attr-nocf-check-3.c
  6e74d4217acfc4ff85814de60a3f7e75  gcc/testsuite/c-c++-common/attr-nonstring-1.c
  8121851e9adc24f2cb9196e1c2dab2ab  gcc/testsuite/c-c++-common/attr-nonstring-2.c
! ae68ce1c3e422bd9410658aded021175  gcc/testsuite/c-c++-common/attr-nonstring-3.c
  40d520a76461aa407b60693028189473  gcc/testsuite/c-c++-common/attr-nonstring-4.c
  aecf8808dcce2f2171e6ff35d91b4e01  gcc/testsuite/c-c++-common/attr-nonstring-5.c
! d26d1d76d721a6b00e027af33557e823  gcc/testsuite/c-c++-common/attr-nonstring-6.c
  86ea749bcbbf7e6b48a29eb97f3481f0  gcc/testsuite/c-c++-common/attr-nonstring-7.c
! d33489fa23f1333508c24af91d628caa  gcc/testsuite/c-c++-common/attr-nonstring-8.c
  98687838cf46c8c28ee0ab7af818dc38  gcc/testsuite/c-c++-common/attr-opt-1.c
  5ad24543b6d83246f7cebf2bed5c2379  gcc/testsuite/c-c++-common/attr-simd-2.c
  ba228dab53d862be27c7036d86f735eb  gcc/testsuite/c-c++-common/attr-simd-4.c
  8a1a222d75843dbe3f9d7834834cefa3  gcc/testsuite/c-c++-common/attr-simd-5.c
  1cafca2ba73fd84aa440894e83542ca4  gcc/testsuite/c-c++-common/attr-simd.c
! 292821efd19a5d49bffff909953846d5  gcc/testsuite/c-c++-common/attr-used-2.c
! e123297fccae243c537f91e155c74a71  gcc/testsuite/c-c++-common/attr-used.c
  c16cfe2fc05f8ec7fa89428b9e32fef6  gcc/testsuite/c-c++-common/attr-warn-unused-result.c
  0757d414096e0b54b72399cfd533c8fc  gcc/testsuite/c-c++-common/attributes-1.c
  6d7e356a55667553550e9cd33323e1f5  gcc/testsuite/c-c++-common/attributes-2.c
--- 9321,9355 ----
  c646b644758e950a4110aea0b34c55f2  gcc/testsuite/c-c++-common/attr-nocf-check-3.c
  6e74d4217acfc4ff85814de60a3f7e75  gcc/testsuite/c-c++-common/attr-nonstring-1.c
  8121851e9adc24f2cb9196e1c2dab2ab  gcc/testsuite/c-c++-common/attr-nonstring-2.c
! c3654b7b59b3c9795191f3ba8956b636  gcc/testsuite/c-c++-common/attr-nonstring-3.c
  40d520a76461aa407b60693028189473  gcc/testsuite/c-c++-common/attr-nonstring-4.c
  aecf8808dcce2f2171e6ff35d91b4e01  gcc/testsuite/c-c++-common/attr-nonstring-5.c
! 1fe056301e1358a5a84901dc70b18ff6  gcc/testsuite/c-c++-common/attr-nonstring-6.c
  86ea749bcbbf7e6b48a29eb97f3481f0  gcc/testsuite/c-c++-common/attr-nonstring-7.c
! a64bfafada3fcdd3081bfa50b0677966  gcc/testsuite/c-c++-common/attr-nonstring-8.c
  98687838cf46c8c28ee0ab7af818dc38  gcc/testsuite/c-c++-common/attr-opt-1.c
+ 8d1dd31ffd75e182c35879b275b838f6  gcc/testsuite/c-c++-common/attr-retain-1.c
+ f87049d3f8f00219a982070324ee0f35  gcc/testsuite/c-c++-common/attr-retain-2.c
+ 4de67302bfe88af5e0e57d4bf78f397f  gcc/testsuite/c-c++-common/attr-retain-3.c
+ 3289ab2836be0f6b496e8239acfc6a4f  gcc/testsuite/c-c++-common/attr-retain-4.c
+ a62197120e93eed4bd64d141d6baa411  gcc/testsuite/c-c++-common/attr-retain-5.c
+ 511d62b0f59745a4be662ba7cfb9ebf9  gcc/testsuite/c-c++-common/attr-retain-6.c
+ a9a489c34a0d2601c46b7482ebd71e9d  gcc/testsuite/c-c++-common/attr-retain-7.c
+ 3d42e870659770b0b762203aa78f09be  gcc/testsuite/c-c++-common/attr-retain-8.c
+ 65b11158430a285feede10c19cfde4a0  gcc/testsuite/c-c++-common/attr-retain-9.c
  5ad24543b6d83246f7cebf2bed5c2379  gcc/testsuite/c-c++-common/attr-simd-2.c
  ba228dab53d862be27c7036d86f735eb  gcc/testsuite/c-c++-common/attr-simd-4.c
  8a1a222d75843dbe3f9d7834834cefa3  gcc/testsuite/c-c++-common/attr-simd-5.c
  1cafca2ba73fd84aa440894e83542ca4  gcc/testsuite/c-c++-common/attr-simd.c
! 4a8c900352b41f7f81b5e982203aa47f  gcc/testsuite/c-c++-common/attr-used-2.c
! 64568f542038e5966961f07cc96eda3d  gcc/testsuite/c-c++-common/attr-used-3.c
! e627e94303559061b566ee6a67d2e153  gcc/testsuite/c-c++-common/attr-used-4.c
! 52ed0b5526f024f30c64d90ae4e0e209  gcc/testsuite/c-c++-common/attr-used-5.c
! 19b8d40c0098f7509763eda78c1b4e7c  gcc/testsuite/c-c++-common/attr-used-6.c
! 63ff21caf029c53a19ce6ec60c81053a  gcc/testsuite/c-c++-common/attr-used-7.c
! b11e87307044446d68555332a0f37924  gcc/testsuite/c-c++-common/attr-used-8.c
! 521cb3e451ddff9ddf9ed5b9a101b6c4  gcc/testsuite/c-c++-common/attr-used-9.c
! 0765b8273c3c0c19396e32788dd03b94  gcc/testsuite/c-c++-common/attr-used.c
  c16cfe2fc05f8ec7fa89428b9e32fef6  gcc/testsuite/c-c++-common/attr-warn-unused-result.c
  0757d414096e0b54b72399cfd533c8fc  gcc/testsuite/c-c++-common/attributes-1.c
  6d7e356a55667553550e9cd33323e1f5  gcc/testsuite/c-c++-common/attributes-2.c
*************** c16cfe2fc05f8ec7fa89428b9e32fef6  gcc/te
*** 8917,8933 ****
  5113c71e64eb505940e6121dbd1b0816  gcc/testsuite/c-c++-common/attributes-4.c
  debeca168f3a9a432da9b7fe19f105d0  gcc/testsuite/c-c++-common/attributes-enum-1.c
  05e6e3f334bd062d9e932f51ca25a73d  gcc/testsuite/c-c++-common/attributes-enum-2.c
! e1214c78ebce01448d71917e783e66f3  gcc/testsuite/c-c++-common/builtin-arith-overflow-1.c
  563de839d84e990d18f755b18712b764  gcc/testsuite/c-c++-common/builtin-arith-overflow-2.c
  edbcc39f20e5248e2b957a28e01fee51  gcc/testsuite/c-c++-common/builtin-arith-overflow-3.c
  9db04682d9ed26e120c150f32a81c167  gcc/testsuite/c-c++-common/builtin-convertvector-1.c
  86e09291e64c6f0da9f5f640b3c8b994  gcc/testsuite/c-c++-common/builtin-convertvector-2.c
  2b8aa91fb8f2e3743b68c66f3224582b  gcc/testsuite/c-c++-common/builtin-has-attribute-2.c
! ccfd13cce4ab8791afda954376d1c8cf  gcc/testsuite/c-c++-common/builtin-has-attribute-3.c
! 2a8d5fdd1a6ca18c1fc68875e9c194c4  gcc/testsuite/c-c++-common/builtin-has-attribute-4.c
  644a56a25891a93fe4795b7d0f76ec7d  gcc/testsuite/c-c++-common/builtin-has-attribute-5.c
  7650a3311ed3e7acf0a184ac5699582f  gcc/testsuite/c-c++-common/builtin-has-attribute-6.c
! 06ac707ad6d0e1fa46b8ba936c28a84e  gcc/testsuite/c-c++-common/builtin-has-attribute-7.c
  9b1460d00f6b69ba7c437630d978f9c5  gcc/testsuite/c-c++-common/builtin-has-attribute.c
  0aa8a0c8ebe6c4dea5fc14bb97f9f327  gcc/testsuite/c-c++-common/builtin-offsetof-2.c
  41df51bc4faa62cf4b0a5b0f48fd7eda  gcc/testsuite/c-c++-common/builtin-offsetof.c
--- 9357,9376 ----
  5113c71e64eb505940e6121dbd1b0816  gcc/testsuite/c-c++-common/attributes-4.c
  debeca168f3a9a432da9b7fe19f105d0  gcc/testsuite/c-c++-common/attributes-enum-1.c
  05e6e3f334bd062d9e932f51ca25a73d  gcc/testsuite/c-c++-common/attributes-enum-2.c
! 638cc45b546ce4e45ccb7b3846c6747f  gcc/testsuite/c-c++-common/builtin-arith-overflow-1.c
  563de839d84e990d18f755b18712b764  gcc/testsuite/c-c++-common/builtin-arith-overflow-2.c
  edbcc39f20e5248e2b957a28e01fee51  gcc/testsuite/c-c++-common/builtin-arith-overflow-3.c
+ 16488560f51c9fbb0acea48f3f246dd7  gcc/testsuite/c-c++-common/builtin-clear-padding-1.c
+ 05a22e0270d8d2693bab4092ee6a1edc  gcc/testsuite/c-c++-common/builtin-clear-padding-2.c
+ 0ba3f576ed243d50b6d6f59a8e9daa19  gcc/testsuite/c-c++-common/builtin-clear-padding-3.c
  9db04682d9ed26e120c150f32a81c167  gcc/testsuite/c-c++-common/builtin-convertvector-1.c
  86e09291e64c6f0da9f5f640b3c8b994  gcc/testsuite/c-c++-common/builtin-convertvector-2.c
  2b8aa91fb8f2e3743b68c66f3224582b  gcc/testsuite/c-c++-common/builtin-has-attribute-2.c
! 3c94c9b2bf7483a968279a2877b70e66  gcc/testsuite/c-c++-common/builtin-has-attribute-3.c
! 62fb6c2ef8aad2d15856d8aa969c3438  gcc/testsuite/c-c++-common/builtin-has-attribute-4.c
  644a56a25891a93fe4795b7d0f76ec7d  gcc/testsuite/c-c++-common/builtin-has-attribute-5.c
  7650a3311ed3e7acf0a184ac5699582f  gcc/testsuite/c-c++-common/builtin-has-attribute-6.c
! 5514cfe6c224181390702c01abb85a75  gcc/testsuite/c-c++-common/builtin-has-attribute-7.c
  9b1460d00f6b69ba7c437630d978f9c5  gcc/testsuite/c-c++-common/builtin-has-attribute.c
  0aa8a0c8ebe6c4dea5fc14bb97f9f327  gcc/testsuite/c-c++-common/builtin-offsetof-2.c
  41df51bc4faa62cf4b0a5b0f48fd7eda  gcc/testsuite/c-c++-common/builtin-offsetof.c
*************** dfcddf8e03e527e614cad79d5530f49e  gcc/te
*** 8947,8954 ****
--- 9390,9416 ----
  fe9ba880903f66a472e33ffd221fe3ee  gcc/testsuite/c-c++-common/conflict-markers-8.c
  60862ce07b266f605ac33d7ec3a6ab37  gcc/testsuite/c-c++-common/conflict-markers-9.c
  2a61ee01bf6046a5b3ebef68f4abffe8  gcc/testsuite/c-c++-common/convert-vec-1.c
+ 62a7104f94454920e2aea21e5d85503a  gcc/testsuite/c-c++-common/cpp/counter-2.c
+ 8685d36e43046dc3ae7ce373aa03821c  gcc/testsuite/c-c++-common/cpp/counter-3.c
  7df2c1d437a437ae20fe8cd33d071a1a  gcc/testsuite/c-c++-common/cpp/diagnostic-pragma-1.c
  da5e564f6cffb4d2f63384ba5d7351b1  gcc/testsuite/c-c++-common/cpp/diagnostic-pragma-2.c
+ 7e07a117bfa1cbd4313441da514b62a7  gcc/testsuite/c-c++-common/cpp/dir-only-1.c
+ 94f40e67e3617fd463bd2b73d2f6d54c  gcc/testsuite/c-c++-common/cpp/dir-only-1.h
+ 92a3350e430f3da6be21354b2cc4eb5d  gcc/testsuite/c-c++-common/cpp/dir-only-2.c
+ d17c82849bf7f540adedf0e80d9b41df  gcc/testsuite/c-c++-common/cpp/dir-only-3.c
+ f120018b9734950cca9c0e7ba0e9a33a  gcc/testsuite/c-c++-common/cpp/dir-only-3a.h
+ afcc2d95020f60f9c075e5d42a4acf61  gcc/testsuite/c-c++-common/cpp/dir-only-3b.h
+ f92a7893a9a99e42109477db09c830bd  gcc/testsuite/c-c++-common/cpp/dir-only-4.c
+ 49762996e3f398b07d222129485b9866  gcc/testsuite/c-c++-common/cpp/dir-only-5.c
+ 346ea499c21962b87cb824294a83c7d5  gcc/testsuite/c-c++-common/cpp/dir-only-6.c
+ e9e3763df2499b30da22eca4c488b15f  gcc/testsuite/c-c++-common/cpp/dir-only-7.c
+ 2f39366e508484177a054b88deafea45  gcc/testsuite/c-c++-common/cpp/dir-only-8.c
+ 24433a4e764e479df8f2b0fafe6a0130  gcc/testsuite/c-c++-common/cpp/endif.c
+ 65db27307aa0cdf0b3c0323431e08a15  gcc/testsuite/c-c++-common/cpp/endif.h
+ d320f7159ec0c49c01579cadb6132ae4  gcc/testsuite/c-c++-common/cpp/eof-1.c
+ 6f2f302c190f3a83dc6888390ee3b28c  gcc/testsuite/c-c++-common/cpp/eof-2.c
+ 6d793027f92f3668bc379d25936d8781  gcc/testsuite/c-c++-common/cpp/eof-2.h
+ 5d15dc76c8bd6eb00137bc1aef3eeaa1  gcc/testsuite/c-c++-common/cpp/eof-3.c
  80917e73eda1f9f63bafbcc4d94a0927  gcc/testsuite/c-c++-common/cpp/ffile-prefix-map.c
  040be3c971d2d342750c402c54b9b869  gcc/testsuite/c-c++-common/cpp/fmacro-prefix-map.c
  1ccb9ebc08e51c65b99fa5f74657100a  gcc/testsuite/c-c++-common/cpp/fmax-include-depth-1a.h
*************** bc23e7fea0a34a28d11356c984dbef26  gcc/te
*** 8961,8966 ****
--- 9423,9433 ----
  63f74f9fe01b458a7f669b372a1d3acc  gcc/testsuite/c-c++-common/cpp/has-include-1.c
  531592f10d055837951d413baf4a7c33  gcc/testsuite/c-c++-common/cpp/has-include-next-1.c
  f886530357fac0e7bc06382bcf2120f9  gcc/testsuite/c-c++-common/cpp/line-1.c
+ 3b236d3ebd6688157dfec255f8054957  gcc/testsuite/c-c++-common/cpp/line-2.c
+ 876ace0217b7806955a4e72551b3afbc  gcc/testsuite/c-c++-common/cpp/line-2.h
+ bc17d61a124641a580dcb74c99aed4d6  gcc/testsuite/c-c++-common/cpp/line-3.c
+ e4a82afc909a711b27adb1d72035a0f7  gcc/testsuite/c-c++-common/cpp/line-4.c
+ b0dbf2ee0d65771fb476f1bead18e214  gcc/testsuite/c-c++-common/cpp/line-4.h
  ec867e7b9ed2db10d86511396a956702  gcc/testsuite/c-c++-common/cpp/macro-arg-count-1.c
  1ea6a04229ddcedf5e76f5218e8d0f3d  gcc/testsuite/c-c++-common/cpp/macro-arg-count-2.c
  38afd926394292efa57d77eed0f14ef2  gcc/testsuite/c-c++-common/cpp/normalize-3.c
*************** c85025f0def783f70f9bb6a4ea9a23f3  gcc/te
*** 8977,8983 ****
  4bb69916f59c91d0c3c7583ed1c0eb97  gcc/testsuite/c-c++-common/cpp/pr60400-1.h
  87d0240913bd5df7fe5938e4ab645f1f  gcc/testsuite/c-c++-common/cpp/pr60400-2.h
  6256ffd73a1cef9163b3da9b062f1310  gcc/testsuite/c-c++-common/cpp/pr60400.c
! 5e5bc603cb54f22e303862dd47211ded  gcc/testsuite/c-c++-common/cpp/pr63831-1.c
  a72a693524249dca84528ebc132082b5  gcc/testsuite/c-c++-common/cpp/pr63831-2.c
  fc6312863e2a09e397690651369f617d  gcc/testsuite/c-c++-common/cpp/pr65238-1.c
  98b26af476c2ea78a482486746564d25  gcc/testsuite/c-c++-common/cpp/pr88974.c
--- 9444,9450 ----
  4bb69916f59c91d0c3c7583ed1c0eb97  gcc/testsuite/c-c++-common/cpp/pr60400-1.h
  87d0240913bd5df7fe5938e4ab645f1f  gcc/testsuite/c-c++-common/cpp/pr60400-2.h
  6256ffd73a1cef9163b3da9b062f1310  gcc/testsuite/c-c++-common/cpp/pr60400.c
! 1f4c21df8e953c03a1e56e665ab6624d  gcc/testsuite/c-c++-common/cpp/pr63831-1.c
  a72a693524249dca84528ebc132082b5  gcc/testsuite/c-c++-common/cpp/pr63831-2.c
  fc6312863e2a09e397690651369f617d  gcc/testsuite/c-c++-common/cpp/pr65238-1.c
  98b26af476c2ea78a482486746564d25  gcc/testsuite/c-c++-common/cpp/pr88974.c
*************** d2d827c3a2830dd9430591dd49019960  gcc/te
*** 8992,8997 ****
--- 9459,9467 ----
  684f6231e94addb6c14e7eebb5df2132  gcc/testsuite/c-c++-common/cpp/pr93545-2.c
  aa884d944cf2bbf71c7c642a33b7244f  gcc/testsuite/c-c++-common/cpp/pr93545-3.c
  6409b79dc5abde19a70909f1a884d018  gcc/testsuite/c-c++-common/cpp/pr93545-4.c
+ 53ddac2799c628f00a456708b4eab264  gcc/testsuite/c-c++-common/cpp/pr96323.c
+ 7b4c563757483bd5f5e1b37915f01b6d  gcc/testsuite/c-c++-common/cpp/pr97471.c
+ f2e2a6171e51d284aef6b4356f338ad3  gcc/testsuite/c-c++-common/cpp/pragma-eof.c
  17f09d053664aa8b96634b37ce0988da  gcc/testsuite/c-c++-common/cpp/spaceship-1.c
  9cdc13ca5a948af9c95ec156cac8609c  gcc/testsuite/c-c++-common/cpp/ucnid-2011-1-utf8.c
  791d43cbbb9115404405c22be44e4ae7  gcc/testsuite/c-c++-common/cpp/ucnid-2011-1.c
*************** b15ede4348fb88921443e477ccfed8c5  gcc/te
*** 9008,9013 ****
--- 9478,9484 ----
  9f26ab0e1663587353727208a8b1fe9e  gcc/testsuite/c-c++-common/cpp/warning-zero-in-literals-1.c
  36dd0a2ab7ef169ecc90eb0e12535005  gcc/testsuite/c-c++-common/cpp/warning-zero-location-2.c
  f517ccd69d4612259fd415543074a1e1  gcc/testsuite/c-c++-common/cpp/warning-zero-location.c
+ 0fe3124dc7d47efc651433ee329a7a9e  gcc/testsuite/c-c++-common/cpp/wide-narrow-predef-macros.c
  e0679adbe0d4b1cebebea8c808d31d66  gcc/testsuite/c-c++-common/cxxbitfields-3.c
  8396e54be3fd4ced4b4e48c5c558f34f  gcc/testsuite/c-c++-common/cxxbitfields-6.c
  e48cf012715a725279208fd10940b8e2  gcc/testsuite/c-c++-common/dfp/call-by-value.c
*************** c1e3864749304a6fd7444645efcde664  gcc/te
*** 9067,9073 ****
  fa27917c09e30fcb6a9125e3d7b79031  gcc/testsuite/c-c++-common/dfp/func-vararg-alternate-d64.c
  794c2e51b1bcfe88de72f6fc4f8a0b12  gcc/testsuite/c-c++-common/dfp/func-vararg-alternate.h
  f2655cf47c699ffd70a4800a7965f5ff  gcc/testsuite/c-c++-common/dfp/func-vararg-dfp.c
- 4d3dcc1d998e15da6dd6f2156a6f052d  gcc/testsuite/c-c++-common/dfp/func-vararg-mixed-2.c
  c472f30e4082dc34aeea575d6e58b64f  gcc/testsuite/c-c++-common/dfp/func-vararg-mixed.c
  fa14e990a9f33a29bec53c7b4ffb09a1  gcc/testsuite/c-c++-common/dfp/func-vararg-size0.c
  5a7e97b0e9d6e77b3040dcfd12e3d21e  gcc/testsuite/c-c++-common/dfp/inf-1.c
--- 9538,9543 ----
*************** ec9404dfa572066d29306781114781a5  gcc/te
*** 9094,9104 ****
  b55d67c31827320a4218c9bfa118857d  gcc/testsuite/c-c++-common/dfp/struct-layout-1.c
  48d67f7f36d890f8419440d99f232731  gcc/testsuite/c-c++-common/dfp/usual-arith-conv-const.c
  c0e0d2f46bf19ec2b6f3291f97a1ac27  gcc/testsuite/c-c++-common/dfp/usual-arith-conv.c
! c61445e4f3f7abcd07bdc13453dab78f  gcc/testsuite/c-c++-common/diagnostic-format-json-1.c
! 57848ca2604428b467faa3fe84a6f322  gcc/testsuite/c-c++-common/diagnostic-format-json-2.c
! 7aa8d52d5b2a4b1c6822e6dec65911fc  gcc/testsuite/c-c++-common/diagnostic-format-json-3.c
! b1d771b9d7217e823e590c2decdf1b7c  gcc/testsuite/c-c++-common/diagnostic-format-json-4.c
! 8b9be60b2836ff3affa36f7dafd186cf  gcc/testsuite/c-c++-common/diagnostic-format-json-5.c
  d5d9e4636806cc2c21ba5269905d360d  gcc/testsuite/c-c++-common/dump-ada-spec-1.c
  4e1eb848dd5329ff9c951118474783d5  gcc/testsuite/c-c++-common/dump-ada-spec-10.c
  8814d397a23c89c3297e65f3682e9915  gcc/testsuite/c-c++-common/dump-ada-spec-11.c
--- 9564,9582 ----
  b55d67c31827320a4218c9bfa118857d  gcc/testsuite/c-c++-common/dfp/struct-layout-1.c
  48d67f7f36d890f8419440d99f232731  gcc/testsuite/c-c++-common/dfp/usual-arith-conv-const.c
  c0e0d2f46bf19ec2b6f3291f97a1ac27  gcc/testsuite/c-c++-common/dfp/usual-arith-conv.c
! b791e333c7992738d6e55368c254b200  gcc/testsuite/c-c++-common/diagnostic-format-json-1.c
! 47fa94b7aa8c13bdadc4c4ec23527516  gcc/testsuite/c-c++-common/diagnostic-format-json-2.c
! 310956db3dcfb59b2a596783587a9310  gcc/testsuite/c-c++-common/diagnostic-format-json-3.c
! 02191452899d70d18010f5eb049932c6  gcc/testsuite/c-c++-common/diagnostic-format-json-4.c
! 620a210f29cb12610f18db257397f821  gcc/testsuite/c-c++-common/diagnostic-format-json-5.c
! 7ba00026f4502cec45f9e81640ab2978  gcc/testsuite/c-c++-common/diagnostic-units-1.c
! a3932920c58cae162a8f51b19ff5c460  gcc/testsuite/c-c++-common/diagnostic-units-2.c
! 82cb424e6ccab8351b892a0bc4f1b4e9  gcc/testsuite/c-c++-common/diagnostic-units-3.c
! 3053629f98cdba232c284d44682b9986  gcc/testsuite/c-c++-common/diagnostic-units-4.c
! 3e6ca55e5516983685837237b1c0dc3b  gcc/testsuite/c-c++-common/diagnostic-units-5.c
! d3a4a3980471a9347fa30c638963e627  gcc/testsuite/c-c++-common/diagnostic-units-6.c
! d6da2f25b2f5afde9f10397776b43aa4  gcc/testsuite/c-c++-common/diagnostic-units-7.c
! d15d4889de7dc8f1733f21a938d767e6  gcc/testsuite/c-c++-common/diagnostic-units-8.c
  d5d9e4636806cc2c21ba5269905d360d  gcc/testsuite/c-c++-common/dump-ada-spec-1.c
  4e1eb848dd5329ff9c951118474783d5  gcc/testsuite/c-c++-common/dump-ada-spec-10.c
  8814d397a23c89c3297e65f3682e9915  gcc/testsuite/c-c++-common/dump-ada-spec-11.c
*************** f4eb480d84c0d74ec37a6a42e4f034f6  gcc/te
*** 9133,9138 ****
--- 9611,9617 ----
  a485c2cf2b8fb5018ff6ffa1d09b0291  gcc/testsuite/c-c++-common/fold-masked-cmp-1.c
  6e779ad03a964087cf36696c444f20e2  gcc/testsuite/c-c++-common/fold-masked-cmp-2.c
  9b3df6f3fe1425a3c20ed01eae079f75  gcc/testsuite/c-c++-common/fold-masked-cmp-3.c
+ 4e4f084f5a737ff7447ff9a4d812b396  gcc/testsuite/c-c++-common/goacc-gomp/atomic.c
  1d12f3305ca06a823562f0fccea56f16  gcc/testsuite/c-c++-common/goacc-gomp/nesting-1.c
  25018148b12e7e9ba0bb52c882a3c39b  gcc/testsuite/c-c++-common/goacc-gomp/nesting-fail-1.c
  0c724489142a5ed4513ada6ff6ebaea9  gcc/testsuite/c-c++-common/goacc-gomp/pr93465-1.c
*************** a485c2cf2b8fb5018ff6ffa1d09b0291  gcc/te
*** 9140,9150 ****
  06b0d3f7a3b04e4b89feaac74e124f6e  gcc/testsuite/c-c++-common/goacc/acc-icf.c
  8260c137601a88121ec2c63d0df63ff6  gcc/testsuite/c-c++-common/goacc/asyncwait-1.c
  d426111516a83fc5f035da114398322c  gcc/testsuite/c-c++-common/goacc/asyncwait-5.c
  063beec82d4803f5428815adff355071  gcc/testsuite/c-c++-common/goacc/builtin-goacc-parlevel-id-size-2.c
  db600cccace791c8c14dab91dc19af17  gcc/testsuite/c-c++-common/goacc/builtin-goacc-parlevel-id-size.c
  f1fea57305dfe837e7453401fd24f606  gcc/testsuite/c-c++-common/goacc/cache-1.c
  154e13d09dbd32a818555841bcb2b393  gcc/testsuite/c-c++-common/goacc/cache-2.c
! bcfe8a9967e414cfd4feeeb577f10508  gcc/testsuite/c-c++-common/goacc/cache-3-1.c
  36f9abb3ac94c762f04511594ed7b548  gcc/testsuite/c-c++-common/goacc/cache-3-2.c
  069b96601ec3dbb953900d35acabe0b6  gcc/testsuite/c-c++-common/goacc/classify-kernels-unparallelized.c
  47a7c99ae34f4da1883673ac8d09df16  gcc/testsuite/c-c++-common/goacc/classify-kernels.c
--- 9619,9630 ----
  06b0d3f7a3b04e4b89feaac74e124f6e  gcc/testsuite/c-c++-common/goacc/acc-icf.c
  8260c137601a88121ec2c63d0df63ff6  gcc/testsuite/c-c++-common/goacc/asyncwait-1.c
  d426111516a83fc5f035da114398322c  gcc/testsuite/c-c++-common/goacc/asyncwait-5.c
+ a2cd1716ba4f647ad86a615b0dd86f7e  gcc/testsuite/c-c++-common/goacc/atomic.c
  063beec82d4803f5428815adff355071  gcc/testsuite/c-c++-common/goacc/builtin-goacc-parlevel-id-size-2.c
  db600cccace791c8c14dab91dc19af17  gcc/testsuite/c-c++-common/goacc/builtin-goacc-parlevel-id-size.c
  f1fea57305dfe837e7453401fd24f606  gcc/testsuite/c-c++-common/goacc/cache-1.c
  154e13d09dbd32a818555841bcb2b393  gcc/testsuite/c-c++-common/goacc/cache-2.c
! d520e956ceb1443b8b3d0b100a48fa63  gcc/testsuite/c-c++-common/goacc/cache-3-1.c
  36f9abb3ac94c762f04511594ed7b548  gcc/testsuite/c-c++-common/goacc/cache-3-2.c
  069b96601ec3dbb953900d35acabe0b6  gcc/testsuite/c-c++-common/goacc/classify-kernels-unparallelized.c
  47a7c99ae34f4da1883673ac8d09df16  gcc/testsuite/c-c++-common/goacc/classify-kernels.c
*************** d99c4bf7d10ae08e76de310ac61ac639  gcc/te
*** 9153,9170 ****
  9bba0489de28001a02b9a04fdfda1eda  gcc/testsuite/c-c++-common/goacc/classify-serial.c
  ed0df84115a0f8b333602804bdee2a95  gcc/testsuite/c-c++-common/goacc/clauses-fail.c
  8bfd01f209498815723e71000488572c  gcc/testsuite/c-c++-common/goacc/collapse-1.c
  ca2517a3cc3cd3ae7a63df0a68ad4598  gcc/testsuite/c-c++-common/goacc/combined-directives-2.c
  c4d8a118d81caeb284f473723a6b890f  gcc/testsuite/c-c++-common/goacc/combined-directives-3.c
  6a3920d3728f9ade384ff4fd7f3a5d2c  gcc/testsuite/c-c++-common/goacc/combined-directives.c
  c68fccfb3ff8b00b01d51396677c6d59  gcc/testsuite/c-c++-common/goacc/combined-reduction.c
  6ff2b7486e948a4634adb071ea7906c0  gcc/testsuite/c-c++-common/goacc/data-1.c
  3723e03d13b0b843a30211fff8a058f5  gcc/testsuite/c-c++-common/goacc/data-2.c
! e75caef46436ded4565214b5c6407772  gcc/testsuite/c-c++-common/goacc/data-clause-1.c
  df0c5b2a3f8fd74e59ef06f3c576902b  gcc/testsuite/c-c++-common/goacc/data-clause-2.c
  84f08e112686de908716edd944c7dc5b  gcc/testsuite/c-c++-common/goacc/data-clause-duplicate-1.c
  9002f93f9316611a4bf82150a101d933  gcc/testsuite/c-c++-common/goacc/declare-1.c
  49a1e1e29de03de0f3ad515f0e13524f  gcc/testsuite/c-c++-common/goacc/declare-2.c
! 0560ac2e807203ffc51c8c17edd4abd6  gcc/testsuite/c-c++-common/goacc/declare-pr90861.c
  229bed5ef7072db0fa428c10c115e33d  gcc/testsuite/c-c++-common/goacc/declare-pr94120.c
  d8469e069b8c26c06d8a2d2aab67a981  gcc/testsuite/c-c++-common/goacc/deep-copy-arrayofstruct.c
  17b63246fd51599bad2716165cbcff0d  gcc/testsuite/c-c++-common/goacc/default-1.c
--- 9633,9651 ----
  9bba0489de28001a02b9a04fdfda1eda  gcc/testsuite/c-c++-common/goacc/classify-serial.c
  ed0df84115a0f8b333602804bdee2a95  gcc/testsuite/c-c++-common/goacc/clauses-fail.c
  8bfd01f209498815723e71000488572c  gcc/testsuite/c-c++-common/goacc/collapse-1.c
+ a29008ff83202ed302993eae2ce59225  gcc/testsuite/c-c++-common/goacc/collapse-2.c
  ca2517a3cc3cd3ae7a63df0a68ad4598  gcc/testsuite/c-c++-common/goacc/combined-directives-2.c
  c4d8a118d81caeb284f473723a6b890f  gcc/testsuite/c-c++-common/goacc/combined-directives-3.c
  6a3920d3728f9ade384ff4fd7f3a5d2c  gcc/testsuite/c-c++-common/goacc/combined-directives.c
  c68fccfb3ff8b00b01d51396677c6d59  gcc/testsuite/c-c++-common/goacc/combined-reduction.c
  6ff2b7486e948a4634adb071ea7906c0  gcc/testsuite/c-c++-common/goacc/data-1.c
  3723e03d13b0b843a30211fff8a058f5  gcc/testsuite/c-c++-common/goacc/data-2.c
! 8303b2d602314b7af0f96f923e175484  gcc/testsuite/c-c++-common/goacc/data-clause-1.c
  df0c5b2a3f8fd74e59ef06f3c576902b  gcc/testsuite/c-c++-common/goacc/data-clause-2.c
  84f08e112686de908716edd944c7dc5b  gcc/testsuite/c-c++-common/goacc/data-clause-duplicate-1.c
  9002f93f9316611a4bf82150a101d933  gcc/testsuite/c-c++-common/goacc/declare-1.c
  49a1e1e29de03de0f3ad515f0e13524f  gcc/testsuite/c-c++-common/goacc/declare-2.c
! fbee36d1c4d6ed4bfdee66194ad75772  gcc/testsuite/c-c++-common/goacc/declare-pr90861.c
  229bed5ef7072db0fa428c10c115e33d  gcc/testsuite/c-c++-common/goacc/declare-pr94120.c
  d8469e069b8c26c06d8a2d2aab67a981  gcc/testsuite/c-c++-common/goacc/deep-copy-arrayofstruct.c
  17b63246fd51599bad2716165cbcff0d  gcc/testsuite/c-c++-common/goacc/default-1.c
*************** ee2c56a8648c3d2971c138604ce265a2  gcc/te
*** 9182,9188 ****
  c7a7080eb3718456e352647005144afe  gcc/testsuite/c-c++-common/goacc/host_data-1.c
  d77fd6ebff8fb0a959f82a4fb9de022e  gcc/testsuite/c-c++-common/goacc/host_data-2.c
  f5740839231c8e8304cea75d03b7fb0b  gcc/testsuite/c-c++-common/goacc/if-clause-1.c
! da99712686fe793685ab6055e56491ed  gcc/testsuite/c-c++-common/goacc/if-clause-2.c
  35214a1f58c7ba1873cf8c89c85258dd  gcc/testsuite/c-c++-common/goacc/kernels-1.c
  e2a6a7ea3514aa716297087affe838f6  gcc/testsuite/c-c++-common/goacc/kernels-alias-2.c
  32c2fd7fd331413c4271e2034798b5fc  gcc/testsuite/c-c++-common/goacc/kernels-alias-3.c
--- 9663,9669 ----
  c7a7080eb3718456e352647005144afe  gcc/testsuite/c-c++-common/goacc/host_data-1.c
  d77fd6ebff8fb0a959f82a4fb9de022e  gcc/testsuite/c-c++-common/goacc/host_data-2.c
  f5740839231c8e8304cea75d03b7fb0b  gcc/testsuite/c-c++-common/goacc/if-clause-1.c
! c5545c53ad57c8cd77914272ce63cef3  gcc/testsuite/c-c++-common/goacc/if-clause-2.c
  35214a1f58c7ba1873cf8c89c85258dd  gcc/testsuite/c-c++-common/goacc/kernels-1.c
  e2a6a7ea3514aa716297087affe838f6  gcc/testsuite/c-c++-common/goacc/kernels-alias-2.c
  32c2fd7fd331413c4271e2034798b5fc  gcc/testsuite/c-c++-common/goacc/kernels-alias-3.c
*************** fd810ebe54a80c58e76683e0a559234f  gcc/te
*** 9198,9203 ****
--- 9679,9688 ----
  e3a0f1c375f36ae3f072b97ca4be8af8  gcc/testsuite/c-c++-common/goacc/kernels-alias.c
  37219df46c20afb4e83e03c1789b55cd  gcc/testsuite/c-c++-common/goacc/kernels-counter-var-redundant-load.c
  dc5878971e2c2137e5f435ee5228012f  gcc/testsuite/c-c++-common/goacc/kernels-counter-vars-function-scope.c
+ 8f3401119f039c2620e244de2c8ef071  gcc/testsuite/c-c++-common/goacc/kernels-decompose-1.c
+ 795dc03488d818408ac6473651280d4f  gcc/testsuite/c-c++-common/goacc/kernels-decompose-2.c
+ 42817bd3897b5f66b34418a7fb98310c  gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-1.c
+ 31f4fc1987d31a16fe7a2a864c9670f8  gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-2.c
  af37b31b976b1c0c41e3db72c626d179  gcc/testsuite/c-c++-common/goacc/kernels-default-2.c
  375d0db26deebb908509391d770e8db4  gcc/testsuite/c-c++-common/goacc/kernels-default.c
  e24acb47fd402e8856dba2a851ec9fe1  gcc/testsuite/c-c++-common/goacc/kernels-double-reduction-n.c
*************** abf2f06821ef83fd68a177bc03b2f19d  gcc/te
*** 9248,9254 ****
  e01bc16654eb70269f569e503d5a0905  gcc/testsuite/c-c++-common/goacc/pcreate.c
  8813fa952a39d7fcd8c338a20bbf1a30  gcc/testsuite/c-c++-common/goacc/pr69916.c
  8e1c43f24e2ef7b983cdb547f2f410a7  gcc/testsuite/c-c++-common/goacc/pr70688.c
! 091ae7cbab8ef2ea646aa972e71bd3fe  gcc/testsuite/c-c++-common/goacc/pr79428-1.c
  d398b6a88925d39ad550f7a21e489047  gcc/testsuite/c-c++-common/goacc/pr84217.c
  f4e4c18e18f7861d92862c9c4423bf8f  gcc/testsuite/c-c++-common/goacc/pr85782.c
  f7c53b4b7cfca23e012fb42b7951f318  gcc/testsuite/c-c++-common/goacc/pr92793-1.c
--- 9733,9739 ----
  e01bc16654eb70269f569e503d5a0905  gcc/testsuite/c-c++-common/goacc/pcreate.c
  8813fa952a39d7fcd8c338a20bbf1a30  gcc/testsuite/c-c++-common/goacc/pr69916.c
  8e1c43f24e2ef7b983cdb547f2f410a7  gcc/testsuite/c-c++-common/goacc/pr70688.c
! 3cab895fbfe4d9a2a6ee0aceffb2970e  gcc/testsuite/c-c++-common/goacc/pr79428-1.c
  d398b6a88925d39ad550f7a21e489047  gcc/testsuite/c-c++-common/goacc/pr84217.c
  f4e4c18e18f7861d92862c9c4423bf8f  gcc/testsuite/c-c++-common/goacc/pr85782.c
  f7c53b4b7cfca23e012fb42b7951f318  gcc/testsuite/c-c++-common/goacc/pr92793-1.c
*************** b0bf71cce5ee03e8c5cc8266b46bfe0a  gcc/te
*** 9279,9288 ****
  5109f14e1fb05cda829d216ab6c5a02f  gcc/testsuite/c-c++-common/goacc/tile-2.c
  a140f15e3d552040b8f3c805cd73f542  gcc/testsuite/c-c++-common/goacc/tile.c
  4f12915b0be66791d61798f30094289c  gcc/testsuite/c-c++-common/goacc/uninit-copy-clause.c
! 24f0eb8713a279c75419581844e98bd8  gcc/testsuite/c-c++-common/goacc/uninit-dim-clause.c
! 02aac19701241a7e121ea309b5db974f  gcc/testsuite/c-c++-common/goacc/uninit-firstprivate-clause.c
! c277c821e8dab2b986f74cffbac26f2e  gcc/testsuite/c-c++-common/goacc/uninit-if-clause.c
! 00b3a6624d2c759ac9f1d1531ee37791  gcc/testsuite/c-c++-common/goacc/uninit-use-device-clause.c
  3e0f236b99de22401e18251d5b11c962  gcc/testsuite/c-c++-common/goacc/update-1.c
  1c02e1d791c7d07a364d26261ecfa2fd  gcc/testsuite/c-c++-common/goacc/update-if_present-1.c
  06778a56b7e33709b030ad02b8e68560  gcc/testsuite/c-c++-common/goacc/update-if_present-2.c
--- 9764,9773 ----
  5109f14e1fb05cda829d216ab6c5a02f  gcc/testsuite/c-c++-common/goacc/tile-2.c
  a140f15e3d552040b8f3c805cd73f542  gcc/testsuite/c-c++-common/goacc/tile.c
  4f12915b0be66791d61798f30094289c  gcc/testsuite/c-c++-common/goacc/uninit-copy-clause.c
! 8ff2155015a769278973d385c09e06ea  gcc/testsuite/c-c++-common/goacc/uninit-dim-clause.c
! c318a594a0ee4648dcb80161c22fd94d  gcc/testsuite/c-c++-common/goacc/uninit-firstprivate-clause.c
! 4d1086ba1f1e8d24fec2b62f6c3958e3  gcc/testsuite/c-c++-common/goacc/uninit-if-clause.c
! dc80449bfdca5a99a480536d2e1db33b  gcc/testsuite/c-c++-common/goacc/uninit-use-device-clause.c
  3e0f236b99de22401e18251d5b11c962  gcc/testsuite/c-c++-common/goacc/update-1.c
  1c02e1d791c7d07a364d26261ecfa2fd  gcc/testsuite/c-c++-common/goacc/update-if_present-1.c
  06778a56b7e33709b030ad02b8e68560  gcc/testsuite/c-c++-common/goacc/update-if_present-2.c
*************** d8d78230b698b1427515ae7b473eaf5f  gcc/te
*** 9290,9295 ****
--- 9775,9785 ----
  63761edcc60694bb3443638fd038e6de  gcc/testsuite/c-c++-common/gomp/Wparentheses-2.c
  87caf85546707f566688fc6b60a4d1e9  gcc/testsuite/c-c++-common/gomp/Wparentheses-3.c
  f2eeacd8e01fce5f98daff2393115250  gcc/testsuite/c-c++-common/gomp/Wparentheses-4.c
+ e9f8d7d790e775b8803a987279857fd8  gcc/testsuite/c-c++-common/gomp/allocate-1.c
+ a279457a2689563eb7f9fd80f7f626b4  gcc/testsuite/c-c++-common/gomp/allocate-2.c
+ 9caab435288f915f6d7fe59b84b443c9  gcc/testsuite/c-c++-common/gomp/allocate-3.c
+ b5cc36629f2af04781e8aa71d6a7ae0b  gcc/testsuite/c-c++-common/gomp/allocate-4.c
+ 707e03e99cd36b731a7a26db01686e9f  gcc/testsuite/c-c++-common/gomp/allocate-5.c
  594f9585c33418a75a6d249f9f52a31b  gcc/testsuite/c-c++-common/gomp/atomic-1.c
  ca9adc82afaa4bfe9afab3d0c83d5427  gcc/testsuite/c-c++-common/gomp/atomic-10.c
  95e1c98e0d2d1d928153976ab5e8cb8f  gcc/testsuite/c-c++-common/gomp/atomic-12.c
*************** b2ce89f1ba635f8d6701308583cd4759  gcc/te
*** 9313,9320 ****
  45c8c473f031ba94eb1154ab4f79b457  gcc/testsuite/c-c++-common/gomp/cancel-1.c
  192802715f9a6395e2ccf6ce992c4fee  gcc/testsuite/c-c++-common/gomp/cancel-2.c
  22b424a04e803213ee1d9b44ee71dfdd  gcc/testsuite/c-c++-common/gomp/clause-dups-1.c
! ebe8429c37f6fa2e045dd0eb77355133  gcc/testsuite/c-c++-common/gomp/clauses-1.c
! dacaf1dba8b8934a8347980fb0ce8a45  gcc/testsuite/c-c++-common/gomp/clauses-2.c
  657094047e2432f3bc3c5cafde1eafcd  gcc/testsuite/c-c++-common/gomp/clauses-3.c
  8d9ef02ce9840a58a8c64026e4df30b2  gcc/testsuite/c-c++-common/gomp/clauses-4.c
  b5dcc71908364b350a7c979c2633f7fb  gcc/testsuite/c-c++-common/gomp/clauses-5.c
--- 9803,9810 ----
  45c8c473f031ba94eb1154ab4f79b457  gcc/testsuite/c-c++-common/gomp/cancel-1.c
  192802715f9a6395e2ccf6ce992c4fee  gcc/testsuite/c-c++-common/gomp/cancel-2.c
  22b424a04e803213ee1d9b44ee71dfdd  gcc/testsuite/c-c++-common/gomp/clause-dups-1.c
! 17e4e79f619e96757401f1004472d1a2  gcc/testsuite/c-c++-common/gomp/clauses-1.c
! 53df5de9ab063edd49814ad88fb4fb9b  gcc/testsuite/c-c++-common/gomp/clauses-2.c
  657094047e2432f3bc3c5cafde1eafcd  gcc/testsuite/c-c++-common/gomp/clauses-3.c
  8d9ef02ce9840a58a8c64026e4df30b2  gcc/testsuite/c-c++-common/gomp/clauses-4.c
  b5dcc71908364b350a7c979c2633f7fb  gcc/testsuite/c-c++-common/gomp/clauses-5.c
*************** bd8b4a8c817f542091fc2d7fded4917a  gcc/te
*** 9333,9338 ****
--- 9823,9829 ----
  51e43bef12ddebee2151356a6379e207  gcc/testsuite/c-c++-common/gomp/declare-variant-11.c
  a5afca905d34b587b6fd9cf5feeb7b84  gcc/testsuite/c-c++-common/gomp/declare-variant-12.c
  75564d16588312df035165e1f86306ff  gcc/testsuite/c-c++-common/gomp/declare-variant-13.c
+ 9a928119f9dc1e5ae5c9aa9f002564c5  gcc/testsuite/c-c++-common/gomp/declare-variant-14.c
  8d01699da719427efa576f7174290b30  gcc/testsuite/c-c++-common/gomp/declare-variant-2.c
  94f924cd613b79f5f8ab07c38cc88b01  gcc/testsuite/c-c++-common/gomp/declare-variant-3.c
  65b510d9e426dc2a3b6896eb93dd8335  gcc/testsuite/c-c++-common/gomp/declare-variant-4.c
*************** ee52d5fc3f8423c9720ccca8a58180a2  gcc/te
*** 9341,9358 ****
  d029e5eb6faefe6ca785e1b9e12615d3  gcc/testsuite/c-c++-common/gomp/declare-variant-7.c
  ec57ddf60230099a4e71566afe991826  gcc/testsuite/c-c++-common/gomp/declare-variant-8.c
  97b1f9bfd5c062c5e04176f9ca2486bd  gcc/testsuite/c-c++-common/gomp/declare-variant-9.c
! 5c3aa6169a1b08a0610a7d8c42ae8536  gcc/testsuite/c-c++-common/gomp/default-1.c
  210213fef63c2c9f7b4d77ee3540dfd2  gcc/testsuite/c-c++-common/gomp/defaultmap-1.c
  cfe9ce2bee6dfde91d715b2c34a5a896  gcc/testsuite/c-c++-common/gomp/defaultmap-2.c
! 4da503b34b8a16292bec4b7b5d6bf6ca  gcc/testsuite/c-c++-common/gomp/defaultmap-3.c
! f65cd3e2b7713964176e994c1aab473e  gcc/testsuite/c-c++-common/gomp/depend-1.c
  4a1085d5478dc95bc2936ae4c0e4c7fd  gcc/testsuite/c-c++-common/gomp/depend-2.c
  6252c7733cc10415438eac4ecc8f3741  gcc/testsuite/c-c++-common/gomp/depend-3.c
  685c37a890fe3f63baeef038dca54d42  gcc/testsuite/c-c++-common/gomp/depend-4.c
  90e9e15dcfe2bb1bc2d07cc4f05b3bb5  gcc/testsuite/c-c++-common/gomp/depend-5.c
  96ee24acfb0236cf20bc30472bd80148  gcc/testsuite/c-c++-common/gomp/depend-6.c
  4a7e69295838b1320de92a6b5208a196  gcc/testsuite/c-c++-common/gomp/depend-iterator-1.c
! f6ebc71161cbbf685aa218b4a86497d4  gcc/testsuite/c-c++-common/gomp/depend-iterator-2.c
  a4e597074c9ce25ed2b94adda52102d5  gcc/testsuite/c-c++-common/gomp/depobj-1.c
  b0614882466e367a20795bf8a724df2a  gcc/testsuite/c-c++-common/gomp/depobj-2.c
  389475c8477c859e20aa20be1676dbd0  gcc/testsuite/c-c++-common/gomp/distribute-1.c
--- 9832,9849 ----
  d029e5eb6faefe6ca785e1b9e12615d3  gcc/testsuite/c-c++-common/gomp/declare-variant-7.c
  ec57ddf60230099a4e71566afe991826  gcc/testsuite/c-c++-common/gomp/declare-variant-8.c
  97b1f9bfd5c062c5e04176f9ca2486bd  gcc/testsuite/c-c++-common/gomp/declare-variant-9.c
! 0dbf545a4d885c579a6fa72fe4bf8332  gcc/testsuite/c-c++-common/gomp/default-1.c
  210213fef63c2c9f7b4d77ee3540dfd2  gcc/testsuite/c-c++-common/gomp/defaultmap-1.c
  cfe9ce2bee6dfde91d715b2c34a5a896  gcc/testsuite/c-c++-common/gomp/defaultmap-2.c
! 5ccd214a0e6437b9a7e3a44ab4d50f74  gcc/testsuite/c-c++-common/gomp/defaultmap-3.c
! 066630abcddd44ac2372567273262326  gcc/testsuite/c-c++-common/gomp/depend-1.c
  4a1085d5478dc95bc2936ae4c0e4c7fd  gcc/testsuite/c-c++-common/gomp/depend-2.c
  6252c7733cc10415438eac4ecc8f3741  gcc/testsuite/c-c++-common/gomp/depend-3.c
  685c37a890fe3f63baeef038dca54d42  gcc/testsuite/c-c++-common/gomp/depend-4.c
  90e9e15dcfe2bb1bc2d07cc4f05b3bb5  gcc/testsuite/c-c++-common/gomp/depend-5.c
  96ee24acfb0236cf20bc30472bd80148  gcc/testsuite/c-c++-common/gomp/depend-6.c
  4a7e69295838b1320de92a6b5208a196  gcc/testsuite/c-c++-common/gomp/depend-iterator-1.c
! 3ec0d6b08677a898631647adbce575dc  gcc/testsuite/c-c++-common/gomp/depend-iterator-2.c
  a4e597074c9ce25ed2b94adda52102d5  gcc/testsuite/c-c++-common/gomp/depobj-1.c
  b0614882466e367a20795bf8a724df2a  gcc/testsuite/c-c++-common/gomp/depobj-2.c
  389475c8477c859e20aa20be1676dbd0  gcc/testsuite/c-c++-common/gomp/distribute-1.c
*************** b057ecd7a4beaa9561fa8fa6d3f3128f  gcc/te
*** 9370,9380 ****
  ad68611dd933bed25a8c937612a58830  gcc/testsuite/c-c++-common/gomp/for-5.c
  950c6183fde386cc5d3fa35c2805eeb0  gcc/testsuite/c-c++-common/gomp/for-6.c
  b9f70a44108d3410396c88c5623b3919  gcc/testsuite/c-c++-common/gomp/for-7.c
- 52e6c91a76e14e06cc40b81b362ebe34  gcc/testsuite/c-c++-common/gomp/gridify-1.c
- c24725037d3fce70e48f0d8904037cee  gcc/testsuite/c-c++-common/gomp/gridify-2.c
- c7544ae76b33ed7babf0c27bf94d0136  gcc/testsuite/c-c++-common/gomp/gridify-3.c
  1216c6524ff3a9bfcf178bb37b9b3961  gcc/testsuite/c-c++-common/gomp/has-include-1.c
- 314e58aff1081ed7acd30d0b457fa992  gcc/testsuite/c-c++-common/gomp/hsa-indirect-call-1.c
  23583f36afaee374633de54a6b57a3e6  gcc/testsuite/c-c++-common/gomp/if-1.c
  1a907f0d46c82ea2b68fa098d75a6865  gcc/testsuite/c-c++-common/gomp/if-2.c
  71d3b22e0e174e813b323afe92d6f310  gcc/testsuite/c-c++-common/gomp/if-3.c
--- 9861,9867 ----
*************** d173a4359da95b48c8d051a752a820ad  gcc/te
*** 9390,9398 ****
  9592f2cca3c5fd7c0e8fd9da7cb178d1  gcc/testsuite/c-c++-common/gomp/loop-3.c
  96f80819d26df95994ad31e806db9ad9  gcc/testsuite/c-c++-common/gomp/loop-4.c
  f57f51983db80a2fd1be027e87767d44  gcc/testsuite/c-c++-common/gomp/loop-5.c
! 79e7c179ffe995fbe8303140a1c09688  gcc/testsuite/c-c++-common/gomp/map-1.c
  6ec7216703861e0dcd0752796794b32b  gcc/testsuite/c-c++-common/gomp/map-2.c
  84b32011b7cc61bdab96dc5182d6fa16  gcc/testsuite/c-c++-common/gomp/map-3.c
  3b2e33f5ff6d1fab628bbc47b669bb42  gcc/testsuite/c-c++-common/gomp/master-combined-1.c
  8fdb590ce90d1a3c558de7dc81a38d89  gcc/testsuite/c-c++-common/gomp/master-combined-2.c
  6fa2115821b7e05f4b4772c894f7cf12  gcc/testsuite/c-c++-common/gomp/nesting-1.c
--- 9877,9889 ----
  9592f2cca3c5fd7c0e8fd9da7cb178d1  gcc/testsuite/c-c++-common/gomp/loop-3.c
  96f80819d26df95994ad31e806db9ad9  gcc/testsuite/c-c++-common/gomp/loop-4.c
  f57f51983db80a2fd1be027e87767d44  gcc/testsuite/c-c++-common/gomp/loop-5.c
! a09826f6b14616132ea27a08de9075b1  gcc/testsuite/c-c++-common/gomp/loop-6.c
! 576203a21b3e04e83b9327037d1c1809  gcc/testsuite/c-c++-common/gomp/loop-7.c
! 6b8389c7145e0ad858f6b5fe2cab60e4  gcc/testsuite/c-c++-common/gomp/map-1.c
  6ec7216703861e0dcd0752796794b32b  gcc/testsuite/c-c++-common/gomp/map-2.c
  84b32011b7cc61bdab96dc5182d6fa16  gcc/testsuite/c-c++-common/gomp/map-3.c
+ f26a9793012d174bb469a5a2bbe88ed8  gcc/testsuite/c-c++-common/gomp/map-4.c
+ 277cedbcd2effa8734f83ed409ddc325  gcc/testsuite/c-c++-common/gomp/map-5.c
  3b2e33f5ff6d1fab628bbc47b669bb42  gcc/testsuite/c-c++-common/gomp/master-combined-1.c
  8fdb590ce90d1a3c558de7dc81a38d89  gcc/testsuite/c-c++-common/gomp/master-combined-2.c
  6fa2115821b7e05f4b4772c894f7cf12  gcc/testsuite/c-c++-common/gomp/nesting-1.c
*************** ce3fb89f1513613421cc620156235d68  gcc/te
*** 9403,9409 ****
  16f6f2aa3b13e584355ef5103361c8dd  gcc/testsuite/c-c++-common/gomp/order-1.c
  fd9490b39935ee32a52e7d5b5bed20d0  gcc/testsuite/c-c++-common/gomp/order-2.c
  db900e16f622568df37b1e202fd25b9f  gcc/testsuite/c-c++-common/gomp/order-3.c
! 45e1a414c7fd275bfb69b8395e7bf291  gcc/testsuite/c-c++-common/gomp/order-4.c
  346e1047ae41de5d851736fb41185adb  gcc/testsuite/c-c++-common/gomp/ordered-1.c
  ef86bb29dfbea0543e8ca02ce440c823  gcc/testsuite/c-c++-common/gomp/ordered-2.c
  c8eb196146424dae7866984b548de18b  gcc/testsuite/c-c++-common/gomp/ordered-3.c
--- 9894,9900 ----
  16f6f2aa3b13e584355ef5103361c8dd  gcc/testsuite/c-c++-common/gomp/order-1.c
  fd9490b39935ee32a52e7d5b5bed20d0  gcc/testsuite/c-c++-common/gomp/order-2.c
  db900e16f622568df37b1e202fd25b9f  gcc/testsuite/c-c++-common/gomp/order-3.c
! 2c96377fc6a30d8bf8d1cd396f082ca2  gcc/testsuite/c-c++-common/gomp/order-4.c
  346e1047ae41de5d851736fb41185adb  gcc/testsuite/c-c++-common/gomp/ordered-1.c
  ef86bb29dfbea0543e8ca02ce440c823  gcc/testsuite/c-c++-common/gomp/ordered-2.c
  c8eb196146424dae7866984b548de18b  gcc/testsuite/c-c++-common/gomp/ordered-3.c
*************** f4fc237b3b36260e213984cfa4346314  gcc/te
*** 9440,9450 ****
  18a1208abfd097e948c6551f3813c293  gcc/testsuite/c-c++-common/gomp/pr67502.c
  e403fd2da7ac85d61ff83e1ef894ef8d  gcc/testsuite/c-c++-common/gomp/pr67517.c
  f230f09eac11df86e31192d6bf15c8d3  gcc/testsuite/c-c++-common/gomp/pr67521.c
! befbc361d92f725fefa0029d54d3c22b  gcc/testsuite/c-c++-common/gomp/pr70550-1.c
! 4c7e38cbcd8c76fb43d8ce5a9a036711  gcc/testsuite/c-c++-common/gomp/pr70550-2.c
  9c6ccd1b697ca4b2f7de134bafdfda56  gcc/testsuite/c-c++-common/gomp/pr71371.c
  8d4187a1bda8777b2ff9ff3a8693ac86  gcc/testsuite/c-c++-common/gomp/pr71758.c
! 659f0eff37ee1bdc697ff7962e983724  gcc/testsuite/c-c++-common/gomp/pr79428-2.c
  d4234712e8b6ad1706a38530b6e6d890  gcc/testsuite/c-c++-common/gomp/pr79428-5.c
  2d68db57522d751eb11d8a844fa51e6d  gcc/testsuite/c-c++-common/gomp/pr79428-6.c
  0c4f14dc0d4f392e3f8ebc8a86ed2e2f  gcc/testsuite/c-c++-common/gomp/pr79429.c
--- 9931,9941 ----
  18a1208abfd097e948c6551f3813c293  gcc/testsuite/c-c++-common/gomp/pr67502.c
  e403fd2da7ac85d61ff83e1ef894ef8d  gcc/testsuite/c-c++-common/gomp/pr67517.c
  f230f09eac11df86e31192d6bf15c8d3  gcc/testsuite/c-c++-common/gomp/pr67521.c
! 9f50ec58488eb9200d091817de3889b9  gcc/testsuite/c-c++-common/gomp/pr70550-1.c
! e190a645f896748d3c59a5dbc48ef10e  gcc/testsuite/c-c++-common/gomp/pr70550-2.c
  9c6ccd1b697ca4b2f7de134bafdfda56  gcc/testsuite/c-c++-common/gomp/pr71371.c
  8d4187a1bda8777b2ff9ff3a8693ac86  gcc/testsuite/c-c++-common/gomp/pr71758.c
! 614efdad9d7eb5024aff3b6080e84f0b  gcc/testsuite/c-c++-common/gomp/pr79428-2.c
  d4234712e8b6ad1706a38530b6e6d890  gcc/testsuite/c-c++-common/gomp/pr79428-5.c
  2d68db57522d751eb11d8a844fa51e6d  gcc/testsuite/c-c++-common/gomp/pr79428-6.c
  0c4f14dc0d4f392e3f8ebc8a86ed2e2f  gcc/testsuite/c-c++-common/gomp/pr79429.c
*************** e4152974615471671fa0299b4121889f  gcc/te
*** 9470,9479 ****
  c47f7acdcdd1614c035f4f07306fc305  gcc/testsuite/c-c++-common/gomp/pr91987.c
  bfdfa56ffe2ff48534494fc41ae0f4d1  gcc/testsuite/c-c++-common/gomp/pr93555-1.c
  b31fd83ffcebdfef84e1d323888e9a76  gcc/testsuite/c-c++-common/gomp/pr93555-2.c
  ae2ea6f7d6a1c903e63c85894d80fa1f  gcc/testsuite/c-c++-common/gomp/pr97958.c
  5f698bea3b17b89ee6b2d1f2c4d53245  gcc/testsuite/c-c++-common/gomp/pr98187.c
  5d522e2f1f7455bc45f6c1f230d5a5b0  gcc/testsuite/c-c++-common/gomp/priority-1.c
! 1dc7bbbafb91e179ac43fa3959ab125f  gcc/testsuite/c-c++-common/gomp/reduction-1.c
  857f55ab743945a521e3287d1b905b4b  gcc/testsuite/c-c++-common/gomp/reduction-task-1.c
  040477a98707a5ccf3fe66c561644189  gcc/testsuite/c-c++-common/gomp/reduction-task-2.c
  6bfb4e8e6e1307990ff6a4535855f6b7  gcc/testsuite/c-c++-common/gomp/reduction-task-3.c
--- 9961,9977 ----
  c47f7acdcdd1614c035f4f07306fc305  gcc/testsuite/c-c++-common/gomp/pr91987.c
  bfdfa56ffe2ff48534494fc41ae0f4d1  gcc/testsuite/c-c++-common/gomp/pr93555-1.c
  b31fd83ffcebdfef84e1d323888e9a76  gcc/testsuite/c-c++-common/gomp/pr93555-2.c
+ 5099f2ef60912770f0c4404cf9b2c25b  gcc/testsuite/c-c++-common/gomp/pr94874.c
+ df4d5a9505c92f441e5ea85708315fed  gcc/testsuite/c-c++-common/gomp/pr96424.c
+ 2d2174ea1983262434b1c948662fa390  gcc/testsuite/c-c++-common/gomp/pr96867.c
+ 16407f97a063776e00434477f996fecf  gcc/testsuite/c-c++-common/gomp/pr97289.c
+ 164aefc7e8183e2dba0d1ca04fc30cad  gcc/testsuite/c-c++-common/gomp/pr97862.c
  ae2ea6f7d6a1c903e63c85894d80fa1f  gcc/testsuite/c-c++-common/gomp/pr97958.c
  5f698bea3b17b89ee6b2d1f2c4d53245  gcc/testsuite/c-c++-common/gomp/pr98187.c
+ ca8127e06402e403622dc86e29c1968a  gcc/testsuite/c-c++-common/gomp/pr99226.c
+ c256c2058eeb3e746f5e3aa43e5ef703  gcc/testsuite/c-c++-common/gomp/pr99322.c
  5d522e2f1f7455bc45f6c1f230d5a5b0  gcc/testsuite/c-c++-common/gomp/priority-1.c
! a5ab254ee603749ef9330558229e6163  gcc/testsuite/c-c++-common/gomp/reduction-1.c
  857f55ab743945a521e3287d1b905b4b  gcc/testsuite/c-c++-common/gomp/reduction-task-1.c
  040477a98707a5ccf3fe66c561644189  gcc/testsuite/c-c++-common/gomp/reduction-task-2.c
  6bfb4e8e6e1307990ff6a4535855f6b7  gcc/testsuite/c-c++-common/gomp/reduction-task-3.c
*************** b69afb2466e8b2efa22ee4a458ff3bc2  gcc/te
*** 9488,9493 ****
--- 9986,9992 ----
  e413f648ce33386781b2b3e3e93cb96b  gcc/testsuite/c-c++-common/gomp/scan-5.c
  8af1ef16f27f56d5d687ed958b671d57  gcc/testsuite/c-c++-common/gomp/schedule-1.c
  22fba04602b98c0a4fd88b5b47d5ffee  gcc/testsuite/c-c++-common/gomp/schedule-modifiers-1.c
+ 5924e1e32a4e62ad7e1324d01a4ed89e  gcc/testsuite/c-c++-common/gomp/schedule-modifiers-2.c
  0ec2e2f575568924dc191f53badc3e5d  gcc/testsuite/c-c++-common/gomp/schedule-simd-1.c
  328147f679f9eac26be960bf85acb2e8  gcc/testsuite/c-c++-common/gomp/sections1.c
  a51768554ba67aa659d21bbab17ca919  gcc/testsuite/c-c++-common/gomp/simd-setjmp-1.c
*************** cbcc4bef361026a7cc530337842d4576  gcc/te
*** 9506,9511 ****
--- 10005,10012 ----
  0c93f7b88c30539ace084df2f4c7f5ae  gcc/testsuite/c-c++-common/gomp/sink-4.c
  0f606c818aafa917b4e4ca06798a0500  gcc/testsuite/c-c++-common/gomp/target-data-1.c
  a8435825c61a8dc6ab7b5b8cda3dd35d  gcc/testsuite/c-c++-common/gomp/target-teams-1.c
+ 25d48772fc72e3c1f8e2192ec44ffb95  gcc/testsuite/c-c++-common/gomp/task-detach-1.c
+ 1bc40a217ad51b17433b0b59c1491757  gcc/testsuite/c-c++-common/gomp/task-detach-2.c
  bd7a4a612b8188086bf0650fb29a279a  gcc/testsuite/c-c++-common/gomp/taskloop-reduction-1.c
  2308634fac41b5571bbc8ecf6a185772  gcc/testsuite/c-c++-common/gomp/taskwait-depend-1.c
  539c731e3f7fd40b1bf0432a8a02c04f  gcc/testsuite/c-c++-common/gomp/teams-1.c
*************** d8649d74f0435be9dfbda3d78613de4d  gcc/te
*** 9517,9528 ****
  e26c6f6984625a53461cd5383d9d7094  gcc/testsuite/c-c++-common/guality/Og-global-dse-1.c
  7cea7ea892b69a1a021d0bb57e2130d6  gcc/testsuite/c-c++-common/guality/Og-static-wo-1.c
  715226741a182526f3d2c9f0d0384ac7  gcc/testsuite/c-c++-common/guality/pr43141.c
  8f5de27b05717c97b322a2c6d71bdda2  gcc/testsuite/c-c++-common/ident-0a.c
! 43fa0c72c2114313b8484bf6f08b7085  gcc/testsuite/c-c++-common/ident-0b.c
  913b04050a78f75ec2d32ab4e198e989  gcc/testsuite/c-c++-common/ident-1a.c
! cea63df81735ada46afff25af3ff219f  gcc/testsuite/c-c++-common/ident-1b.c
  95d6831062edf82ecda36472a66a9860  gcc/testsuite/c-c++-common/ident-2a.c
! 2a0f2df5b9617b37d109f67ebecf1f6d  gcc/testsuite/c-c++-common/ident-2b.c
  8f32b18329b5c8dd71fb25378fd948e4  gcc/testsuite/c-c++-common/inc-from-1.c
  04bd9a83f144ae30a025fcacf972dd84  gcc/testsuite/c-c++-common/inc-from-1a.h
  02d78d2beff73feb134e61377926c8c6  gcc/testsuite/c-c++-common/inc-from-1b.h
--- 10018,10085 ----
  e26c6f6984625a53461cd5383d9d7094  gcc/testsuite/c-c++-common/guality/Og-global-dse-1.c
  7cea7ea892b69a1a021d0bb57e2130d6  gcc/testsuite/c-c++-common/guality/Og-static-wo-1.c
  715226741a182526f3d2c9f0d0384ac7  gcc/testsuite/c-c++-common/guality/pr43141.c
+ 2edc518fe8f7641eee4454794cc91c8c  gcc/testsuite/c-c++-common/hwasan/aligned-alloc.c
+ 5a99403ed7c8d93fdff7ad2011ac018b  gcc/testsuite/c-c++-common/hwasan/alloca-array-accessible.c
+ d6a93365ce10aa090cd499fb86193a0c  gcc/testsuite/c-c++-common/hwasan/alloca-base-init.c
+ 40c902a38793f746997b860914f31045  gcc/testsuite/c-c++-common/hwasan/alloca-gets-different-tag.c
+ 3f7f9dcfc96ce314b8d960d97bcb52b4  gcc/testsuite/c-c++-common/hwasan/alloca-outside-caught.c
+ 547e9adde82130a73a2ced63c88deb21  gcc/testsuite/c-c++-common/hwasan/arguments-1.c
+ 648b204333db837d8503ea3fcc7b5e55  gcc/testsuite/c-c++-common/hwasan/arguments-2.c
+ 6d489ba4eb1ce5cceded8bc67c7c2d1e  gcc/testsuite/c-c++-common/hwasan/arguments-3.c
+ 45ae4d2f42bd7222a3e8cd1115d9799a  gcc/testsuite/c-c++-common/hwasan/arguments.c
+ ea3bd6ad99fc0b75e643d47378ddae86  gcc/testsuite/c-c++-common/hwasan/asan-pr63316.c
+ b5f38e3c42020a47bf53cf73dfca26c7  gcc/testsuite/c-c++-common/hwasan/asan-pr70541.c
+ 2c6d8de162f3d16220b7e9222df6aa9e  gcc/testsuite/c-c++-common/hwasan/asan-pr78106.c
+ 32c8e8023b21c758fea43aef2a50c841  gcc/testsuite/c-c++-common/hwasan/asan-pr79944.c
+ 7df6d99c1d7f0a63a016ae5b7c37e5d7  gcc/testsuite/c-c++-common/hwasan/asan-rlimit-mmap-test-1.c
+ d182cbfb9bfa11dddd767cad620d828a  gcc/testsuite/c-c++-common/hwasan/bitfield-1.c
+ 2f474939123ac48bbe65153426c9cad8  gcc/testsuite/c-c++-common/hwasan/bitfield-2.c
+ 1b98c6196875d839f48fbb51235b44c6  gcc/testsuite/c-c++-common/hwasan/builtin-special-handling.c
+ ba40d465ba36451b257309ff68e5a488  gcc/testsuite/c-c++-common/hwasan/check-interface.c
+ f44e1d535ed848b242590be9807085e4  gcc/testsuite/c-c++-common/hwasan/halt_on_error-1.c
+ 2e356f3a5a84ac907719c0c90f0e15c3  gcc/testsuite/c-c++-common/hwasan/handles-poly_int-marked-vars.c
+ ac7a0ade4744ce5d14407daf7c3e998d  gcc/testsuite/c-c++-common/hwasan/heap-overflow.c
+ b8a75949d5842171c6ef396c7daab76e  gcc/testsuite/c-c++-common/hwasan/hwasan-poison-optimisation.c
+ 060eb40ec48e4dc23c12e6b61b7ea750  gcc/testsuite/c-c++-common/hwasan/hwasan-thread-access-parent.c
+ 81ccd096d83b8fa1dfcfc61001649496  gcc/testsuite/c-c++-common/hwasan/hwasan-thread-basic-failure.c
+ 7efc0793081dc17013ea007a1274504f  gcc/testsuite/c-c++-common/hwasan/hwasan-thread-clears-stack.c
+ bf27eba0aaefbc14fdfeb32d90400a84  gcc/testsuite/c-c++-common/hwasan/hwasan-thread-success.c
+ 2a9c8876bcc3184cf12dcb18ca70626a  gcc/testsuite/c-c++-common/hwasan/kernel-defaults.c
+ cb739aab77fb27271b4e819a9c5a650d  gcc/testsuite/c-c++-common/hwasan/large-aligned-0.c
+ df2a1fe61e97ae81c6d3e365f94973a8  gcc/testsuite/c-c++-common/hwasan/large-aligned-1.c
+ d109bec7c8574b28e7698a90fc84582e  gcc/testsuite/c-c++-common/hwasan/large-aligned-untagging-0.c
+ ab21cd74c015ac1e39feedd1f9ac7599  gcc/testsuite/c-c++-common/hwasan/large-aligned-untagging-1.c
+ 5bec95c2fe1d679d7613182dc94aff8e  gcc/testsuite/c-c++-common/hwasan/large-aligned-untagging-2.c
+ dcb2ad39d0cf5ebe372d5ee0335d32d3  gcc/testsuite/c-c++-common/hwasan/large-aligned-untagging-3.c
+ d698da99f9c8edf5460a643d70b64cbd  gcc/testsuite/c-c++-common/hwasan/large-aligned-untagging-4.c
+ 5d330a354737bad5fd47f7add5e27d5b  gcc/testsuite/c-c++-common/hwasan/large-aligned-untagging-5.c
+ fda17ee470d3f2eba9350d6b60297807  gcc/testsuite/c-c++-common/hwasan/large-aligned-untagging-6.c
+ fefbda864a26468a9393bb2095d5381f  gcc/testsuite/c-c++-common/hwasan/large-aligned-untagging-7.c
+ 38ce58602b1e2eaa5fd4743d545fdd21  gcc/testsuite/c-c++-common/hwasan/macro-definition.c
+ 20cf04ed1815bf0d665b390969030c2c  gcc/testsuite/c-c++-common/hwasan/no-sanitize-attribute.c
+ 7377983fcf29ee84b1984b1eeca47eee  gcc/testsuite/c-c++-common/hwasan/param-instrument-mem-intrinsics.c
+ 08c921d252dabceaa165b164ae146e0a  gcc/testsuite/c-c++-common/hwasan/param-instrument-reads-and-writes.c
+ df9d5a9ade93ba5262e6f430b477773f  gcc/testsuite/c-c++-common/hwasan/param-instrument-reads.c
+ 5073ec381df8ea9112d19b0b9de20d59  gcc/testsuite/c-c++-common/hwasan/param-instrument-writes.c
+ 4add894ab81173fac503077beb96196d  gcc/testsuite/c-c++-common/hwasan/random-frame-tag.c
+ aa795736ea117bbe49456fd6e83520e8  gcc/testsuite/c-c++-common/hwasan/sanity-check-pure-c.c
+ 94f78a6b04df5a5688921e5b3f576574  gcc/testsuite/c-c++-common/hwasan/setjmp-longjmp-0.c
+ 5ec6378e1e30788903f884aaddff5294  gcc/testsuite/c-c++-common/hwasan/setjmp-longjmp-1.c
+ e4d5eb20b188e55ac6a64e3c0c9e8df6  gcc/testsuite/c-c++-common/hwasan/stack-tagging-basic-0.c
+ 4993bf4713b1a03c76d0ac655a2ebe98  gcc/testsuite/c-c++-common/hwasan/stack-tagging-basic-1.c
+ 6147638e8e5113273815f41efd4e4931  gcc/testsuite/c-c++-common/hwasan/stack-tagging-disable.c
+ c805f0e50b68c0f1a9a99f61e7123fb6  gcc/testsuite/c-c++-common/hwasan/unprotected-allocas-0.c
+ f007ef6d3bbb6f88e9353821e2968665  gcc/testsuite/c-c++-common/hwasan/unprotected-allocas-1.c
+ 2194789f84f46284602f3dca5f4f182d  gcc/testsuite/c-c++-common/hwasan/use-after-free.c
+ 52098474cabc8794b8d8fdb52f03257e  gcc/testsuite/c-c++-common/hwasan/vararray-outside-caught.c
+ da23345311aef7a3ffb7ee38efcb91e2  gcc/testsuite/c-c++-common/hwasan/vararray-stack-restore-correct.c
+ 4e542a97fc7b5654ac195be5d9301617  gcc/testsuite/c-c++-common/hwasan/very-large-objects.c
  8f5de27b05717c97b322a2c6d71bdda2  gcc/testsuite/c-c++-common/ident-0a.c
! 49e1710d9e4d7c207566fc1f825b990c  gcc/testsuite/c-c++-common/ident-0b.c
  913b04050a78f75ec2d32ab4e198e989  gcc/testsuite/c-c++-common/ident-1a.c
! ffd7a2ffdb9f158ab45a7ac818104c50  gcc/testsuite/c-c++-common/ident-1b.c
  95d6831062edf82ecda36472a66a9860  gcc/testsuite/c-c++-common/ident-2a.c
! c5ddd992be61d8712cb3a31ca1f1e0b2  gcc/testsuite/c-c++-common/ident-2b.c
  8f32b18329b5c8dd71fb25378fd948e4  gcc/testsuite/c-c++-common/inc-from-1.c
  04bd9a83f144ae30a025fcacf972dd84  gcc/testsuite/c-c++-common/inc-from-1a.h
  02d78d2beff73feb134e61377926c8c6  gcc/testsuite/c-c++-common/inc-from-1b.h
*************** ed31996e3dda298f798652d482bc4224  gcc/te
*** 9531,9537 ****
  d4e3dc1aa87409198ff78d00e3448b7a  gcc/testsuite/c-c++-common/int128-2.c
  de3dd2daeb344b4e1fbcc4551d6441bc  gcc/testsuite/c-c++-common/int128-types-1.c
  37e6e8dd79b2c2f2bb37230ea9a57ccd  gcc/testsuite/c-c++-common/memset-array.c
! 16e78eb051bc8429084bad4220c47a8c  gcc/testsuite/c-c++-common/missing-close-symbol.c
  713fea9d9874d11292e4a767484540db  gcc/testsuite/c-c++-common/missing-header-1.c
  a26cac5f6c3bf19d27815db147fb6b76  gcc/testsuite/c-c++-common/missing-header-2.c
  28fa0dc109db1913bd5f6088442c8b67  gcc/testsuite/c-c++-common/missing-header-3.c
--- 10088,10095 ----
  d4e3dc1aa87409198ff78d00e3448b7a  gcc/testsuite/c-c++-common/int128-2.c
  de3dd2daeb344b4e1fbcc4551d6441bc  gcc/testsuite/c-c++-common/int128-types-1.c
  37e6e8dd79b2c2f2bb37230ea9a57ccd  gcc/testsuite/c-c++-common/memset-array.c
! a0d46d3bd8ed95e55c2b2ecffdac07c6  gcc/testsuite/c-c++-common/missing-close-func-paren.c
! b9ad712a28a3034ba943a199daca6a18  gcc/testsuite/c-c++-common/missing-close-symbol.c
  713fea9d9874d11292e4a767484540db  gcc/testsuite/c-c++-common/missing-header-1.c
  a26cac5f6c3bf19d27815db147fb6b76  gcc/testsuite/c-c++-common/missing-header-2.c
  28fa0dc109db1913bd5f6088442c8b67  gcc/testsuite/c-c++-common/missing-header-3.c
*************** a26cac5f6c3bf19d27815db147fb6b76  gcc/te
*** 9541,9556 ****
  a1ccbbeb722e380d831827588c7f4d57  gcc/testsuite/c-c++-common/nonnull-2.c
  56f94db4972b3a054d2adecfd106d42a  gcc/testsuite/c-c++-common/nonnull-3.c
  a7f92f1077c23eb293a388ad0c9418d7  gcc/testsuite/c-c++-common/opaque-vector.c
! 8ae15f4cc1a3d855f57b363a617c368f  gcc/testsuite/c-c++-common/patchable_function_entry-decl.c
! 2e25fd811978da14fc47e4213d8f03a3  gcc/testsuite/c-c++-common/patchable_function_entry-default.c
! 6105dd94f96458c48bb2721645afb78c  gcc/testsuite/c-c++-common/patchable_function_entry-definition.c
  f5dce8e27cfb8a6bfffe57596fecb796  gcc/testsuite/c-c++-common/pr19807-1.c
  325d7c32f3748e10d55ba2faba3f1ce2  gcc/testsuite/c-c++-common/pr19807-2.c
  fb902cfe5a28251e99c554d18fb797e4  gcc/testsuite/c-c++-common/pr19807-3.c
  a369d890b3c8a2c5aefbfa5a42a6d9f8  gcc/testsuite/c-c++-common/pr20000.c
  84cc81e8de7fc76ea0c59bd53658e880  gcc/testsuite/c-c++-common/pr20318.c
  740052c7ac807a2f73312082a624ac77  gcc/testsuite/c-c++-common/pr27336.c
! 925a1a843ad1e0d85ac747d8e0cedf62  gcc/testsuite/c-c++-common/pr28656.c
  255e51279bc61c31135265871f548ae6  gcc/testsuite/c-c++-common/pr30020.c
  b26d0787722b770e1bedb29da6ca65db  gcc/testsuite/c-c++-common/pr33193.c
  19a0263d13d2e33c9a7e8aeaa26cf684  gcc/testsuite/c-c++-common/pr33763.c
--- 10099,10117 ----
  a1ccbbeb722e380d831827588c7f4d57  gcc/testsuite/c-c++-common/nonnull-2.c
  56f94db4972b3a054d2adecfd106d42a  gcc/testsuite/c-c++-common/nonnull-3.c
  a7f92f1077c23eb293a388ad0c9418d7  gcc/testsuite/c-c++-common/opaque-vector.c
! b0c7bf5988f0583459fa73ced65ee847  gcc/testsuite/c-c++-common/patchable_function_entry-decl.c
! 8eda77bfb76b312688d152f13a8c8b93  gcc/testsuite/c-c++-common/patchable_function_entry-default.c
! 66aa0e2905364a564c6cdf951d2dcaf5  gcc/testsuite/c-c++-common/patchable_function_entry-definition.c
! 8dc709a510615d4b7752427741282b37  gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c
! 80a177ccd304d62e86cb7f75375f0958  gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c
! 498ddd8ad30f33954c75dc8c4bb14a15  gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c
  f5dce8e27cfb8a6bfffe57596fecb796  gcc/testsuite/c-c++-common/pr19807-1.c
  325d7c32f3748e10d55ba2faba3f1ce2  gcc/testsuite/c-c++-common/pr19807-2.c
  fb902cfe5a28251e99c554d18fb797e4  gcc/testsuite/c-c++-common/pr19807-3.c
  a369d890b3c8a2c5aefbfa5a42a6d9f8  gcc/testsuite/c-c++-common/pr20000.c
  84cc81e8de7fc76ea0c59bd53658e880  gcc/testsuite/c-c++-common/pr20318.c
  740052c7ac807a2f73312082a624ac77  gcc/testsuite/c-c++-common/pr27336.c
! 38e1bc8bcae1f0a1fd673a7346034e47  gcc/testsuite/c-c++-common/pr28656.c
  255e51279bc61c31135265871f548ae6  gcc/testsuite/c-c++-common/pr30020.c
  b26d0787722b770e1bedb29da6ca65db  gcc/testsuite/c-c++-common/pr33193.c
  19a0263d13d2e33c9a7e8aeaa26cf684  gcc/testsuite/c-c++-common/pr33763.c
*************** d8239263162d96344888c161406c0381  gcc/te
*** 9587,9613 ****
  3e3619a29ac604287240669cd469815c  gcc/testsuite/c-c++-common/pr51628-10.c
  8f1cad0b0344a02bf34ca7863df2e5ce  gcc/testsuite/c-c++-common/pr51628-11.c
  e2292b6470e5cfedc05946d5b76dca9c  gcc/testsuite/c-c++-common/pr51628-12.c
! 298f691e4888e88d4036d5c4633f4494  gcc/testsuite/c-c++-common/pr51628-13.c
  8d8bc677c4a30e9dd0275a69babcb13f  gcc/testsuite/c-c++-common/pr51628-14.c
! 9767e6c70a308c2ca700bf0a9946fa32  gcc/testsuite/c-c++-common/pr51628-15.c
! 71b6f74f705db82d0c0c27c9aff3bbab  gcc/testsuite/c-c++-common/pr51628-16.c
  233731c5864423f4b09f23e29f2a5174  gcc/testsuite/c-c++-common/pr51628-2.c
! 6d55535bb79dfa409908af34bdd50df9  gcc/testsuite/c-c++-common/pr51628-26.c
! c6e176b1ebaf5def4c3b54f8c9903dab  gcc/testsuite/c-c++-common/pr51628-27.c
! dcc0dc6b8ae06526ce4e67ba42e8c416  gcc/testsuite/c-c++-common/pr51628-28.c
! 00c3c0f5dbd53157dcb7f153cdb620d5  gcc/testsuite/c-c++-common/pr51628-29.c
! f33f90ef5c30d130c8db7cc3630d14d0  gcc/testsuite/c-c++-common/pr51628-3.c
! b2e23822fa484c28c82e7fba0a7d2714  gcc/testsuite/c-c++-common/pr51628-30.c
! 8c6a1bf5dcbe401ecd38235ef4b1b053  gcc/testsuite/c-c++-common/pr51628-31.c
! b52f2fcc30d0904eb38c81ed8f3e0425  gcc/testsuite/c-c++-common/pr51628-32.c
! a114af576fa1bae3e8a141e9bc78fb44  gcc/testsuite/c-c++-common/pr51628-33.c
! ef7a8115fdb2e69df2ccff750b9a1238  gcc/testsuite/c-c++-common/pr51628-35.c
! 1fbe9f205f432e19e6c157117f27ced2  gcc/testsuite/c-c++-common/pr51628-4.c
! 809da67174106aab9dfb5d03173504b3  gcc/testsuite/c-c++-common/pr51628-5.c
! a0b7e21a03f5895add48d5e0668a8147  gcc/testsuite/c-c++-common/pr51628-6.c
  ef4bca6875e6d260de7ba0490e9b878e  gcc/testsuite/c-c++-common/pr51628-7.c
! 7445853c57a5b58f4c64bb6360b07326  gcc/testsuite/c-c++-common/pr51628-8.c
! 3c7d88f69b773b5248be8aa9bcf3d053  gcc/testsuite/c-c++-common/pr51628-9.c
  765e6d527def56cb3a5295e8b879c82c  gcc/testsuite/c-c++-common/pr51712.c
  65339c78e1b0a00a94b3eb33bb35abc0  gcc/testsuite/c-c++-common/pr51768.c
  19c5c8c6c4a09bd9d296a28e8078a301  gcc/testsuite/c-c++-common/pr52177.c
--- 10148,10174 ----
  3e3619a29ac604287240669cd469815c  gcc/testsuite/c-c++-common/pr51628-10.c
  8f1cad0b0344a02bf34ca7863df2e5ce  gcc/testsuite/c-c++-common/pr51628-11.c
  e2292b6470e5cfedc05946d5b76dca9c  gcc/testsuite/c-c++-common/pr51628-12.c
! 6df72ff534d7b809009eb34f2a93e98b  gcc/testsuite/c-c++-common/pr51628-13.c
  8d8bc677c4a30e9dd0275a69babcb13f  gcc/testsuite/c-c++-common/pr51628-14.c
! f0aa9b49cda072020687273cf0aa20d5  gcc/testsuite/c-c++-common/pr51628-15.c
! 466691ee8924f512fe4ee79c866d6fe9  gcc/testsuite/c-c++-common/pr51628-16.c
  233731c5864423f4b09f23e29f2a5174  gcc/testsuite/c-c++-common/pr51628-2.c
! e0177418b423f1aa5b517cda5fb722fd  gcc/testsuite/c-c++-common/pr51628-26.c
! bc5a5b95531c814a03f1159a7a299cff  gcc/testsuite/c-c++-common/pr51628-27.c
! 51e17a62cc52e52ef9309da61fea32eb  gcc/testsuite/c-c++-common/pr51628-28.c
! ef77e6bb9b03c4a390cc8b759e68e80d  gcc/testsuite/c-c++-common/pr51628-29.c
! 63d023bdb6283436b1455d514d67afa9  gcc/testsuite/c-c++-common/pr51628-3.c
! b38dfeaadc637074e6438912c9f2da8c  gcc/testsuite/c-c++-common/pr51628-30.c
! 5d803d54b60d0f70d9530aaa77e36203  gcc/testsuite/c-c++-common/pr51628-31.c
! f6c9cc746b637ab7b6f4bec6071407ec  gcc/testsuite/c-c++-common/pr51628-32.c
! 4a01321c3acc2373ff7220ae5cb2c2c7  gcc/testsuite/c-c++-common/pr51628-33.c
! 615dac13c6240ca70d1141592027a5e0  gcc/testsuite/c-c++-common/pr51628-35.c
! c690c03b2b910fceb861f262f8044693  gcc/testsuite/c-c++-common/pr51628-4.c
! adc5a3ccf7f16f59fb802f78fdd9cb3b  gcc/testsuite/c-c++-common/pr51628-5.c
! 397667acc281dbdbde005ab217b058e7  gcc/testsuite/c-c++-common/pr51628-6.c
  ef4bca6875e6d260de7ba0490e9b878e  gcc/testsuite/c-c++-common/pr51628-7.c
! 7bc6877f9a325577cb697e6b414477b0  gcc/testsuite/c-c++-common/pr51628-8.c
! 5871f0abd77e93237c78404262467a51  gcc/testsuite/c-c++-common/pr51628-9.c
  765e6d527def56cb3a5295e8b879c82c  gcc/testsuite/c-c++-common/pr51712.c
  65339c78e1b0a00a94b3eb33bb35abc0  gcc/testsuite/c-c++-common/pr51768.c
  19c5c8c6c4a09bd9d296a28e8078a301  gcc/testsuite/c-c++-common/pr52177.c
*************** e9ab7e8194d7254751245044f83dc8be  gcc/te
*** 9621,9627 ****
  f1d943c48a18ca5c666d26543205d144  gcc/testsuite/c-c++-common/pr55619.c
  3db0ead60e4a73b927872aff202102be  gcc/testsuite/c-c++-common/pr55771.c
  0c7d9dbc79d0449ecbce0d3cf963a080  gcc/testsuite/c-c++-common/pr56302.c
! abab614f0a54935c73af82b38d108644  gcc/testsuite/c-c++-common/pr56493.c
  a83a3dfeb8c2e989fe3570117b3eacd4  gcc/testsuite/c-c++-common/pr56566.c
  e257567d3e45108aa92c38c2756f8082  gcc/testsuite/c-c++-common/pr56607.c
  93039c44a01737b0dc6ca34eeea375fc  gcc/testsuite/c-c++-common/pr57371-1.c
--- 10182,10188 ----
  f1d943c48a18ca5c666d26543205d144  gcc/testsuite/c-c++-common/pr55619.c
  3db0ead60e4a73b927872aff202102be  gcc/testsuite/c-c++-common/pr55771.c
  0c7d9dbc79d0449ecbce0d3cf963a080  gcc/testsuite/c-c++-common/pr56302.c
! c7d2dcdde3dbe4940d1c087ffdb32959  gcc/testsuite/c-c++-common/pr56493.c
  a83a3dfeb8c2e989fe3570117b3eacd4  gcc/testsuite/c-c++-common/pr56566.c
  e257567d3e45108aa92c38c2756f8082  gcc/testsuite/c-c++-common/pr56607.c
  93039c44a01737b0dc6ca34eeea375fc  gcc/testsuite/c-c++-common/pr57371-1.c
*************** ac18dadba9a9fbd1c44d112676b2c95f  gcc/te
*** 9638,9644 ****
  6f606926d4e7b5b2645899689fb8f653  gcc/testsuite/c-c++-common/pr58346-3.c
  770ddad4b09eec26315a0781ccbc6400  gcc/testsuite/c-c++-common/pr59032.c
  7225dd9014c53a23626cebda50fdb083  gcc/testsuite/c-c++-common/pr59037.c
! b21baa52e383c5709d3550fa0e5b0ab5  gcc/testsuite/c-c++-common/pr59223.c
  dbc97fe604e706a16c5c9ec71c85bc5e  gcc/testsuite/c-c++-common/pr59280.c
  2228db5dd66e8a4546cf84be29f70333  gcc/testsuite/c-c++-common/pr59521-1.c
  5211dad5b208080d55509655666fc81c  gcc/testsuite/c-c++-common/pr59521-2.c
--- 10199,10205 ----
  6f606926d4e7b5b2645899689fb8f653  gcc/testsuite/c-c++-common/pr58346-3.c
  770ddad4b09eec26315a0781ccbc6400  gcc/testsuite/c-c++-common/pr59032.c
  7225dd9014c53a23626cebda50fdb083  gcc/testsuite/c-c++-common/pr59037.c
! ebf7b8bd2059a68f0323f0002bfff958  gcc/testsuite/c-c++-common/pr59223.c
  dbc97fe604e706a16c5c9ec71c85bc5e  gcc/testsuite/c-c++-common/pr59280.c
  2228db5dd66e8a4546cf84be29f70333  gcc/testsuite/c-c++-common/pr59521-1.c
  5211dad5b208080d55509655666fc81c  gcc/testsuite/c-c++-common/pr59521-2.c
*************** ad768f900ccd45a1c88b7d0f9d0a7317  gcc/te
*** 9658,9664 ****
  53e0beba2fc0ed51f72b8c45e804dfb3  gcc/testsuite/c-c++-common/pr65120.c
  2cd83f4e65f35f2fe2cc8fc9a3fd8394  gcc/testsuite/c-c++-common/pr65556.c
  2b3acc23f7d545f6d7e839c0bb76d7fa  gcc/testsuite/c-c++-common/pr65830.c
! a9a485258f83c69df2db1edbc1b8da25  gcc/testsuite/c-c++-common/pr66208.c
  0eaa335b485fac18a046168e23451cbe  gcc/testsuite/c-c++-common/pr66322.c
  e827ebe372e4239bd1ec76051f4882f1  gcc/testsuite/c-c++-common/pr67639.c
  7399efb952d306383053d5e268f89c04  gcc/testsuite/c-c++-common/pr67653.c
--- 10219,10225 ----
  53e0beba2fc0ed51f72b8c45e804dfb3  gcc/testsuite/c-c++-common/pr65120.c
  2cd83f4e65f35f2fe2cc8fc9a3fd8394  gcc/testsuite/c-c++-common/pr65556.c
  2b3acc23f7d545f6d7e839c0bb76d7fa  gcc/testsuite/c-c++-common/pr65830.c
! 20b84da4c075074401bdf6cb5a937d06  gcc/testsuite/c-c++-common/pr66208.c
  0eaa335b485fac18a046168e23451cbe  gcc/testsuite/c-c++-common/pr66322.c
  e827ebe372e4239bd1ec76051f4882f1  gcc/testsuite/c-c++-common/pr67639.c
  7399efb952d306383053d5e268f89c04  gcc/testsuite/c-c++-common/pr67653.c
*************** ee387176acb2650d09f446c7722b79b9  gcc/te
*** 9707,9713 ****
  646c34a9fbef614941550b581b975534  gcc/testsuite/c-c++-common/pr80162-2.c
  419f389745d95caa13ce51a02e5a2abf  gcc/testsuite/c-c++-common/pr80162-3.c
  23a387907d550f4d99b8e38b9154c710  gcc/testsuite/c-c++-common/pr81052.c
! 60f2bd590d8ba62b197416cccd2bdb41  gcc/testsuite/c-c++-common/pr81376.c
  29c7ff6eb5caca1dd6391410ce6c69e4  gcc/testsuite/c-c++-common/pr82112.c
  49fab2d699364fd497a4ea99d034dd39  gcc/testsuite/c-c++-common/pr82872.c
  331f0a8981efa3c9d46048548df29cb7  gcc/testsuite/c-c++-common/pr83059.c
--- 10268,10274 ----
  646c34a9fbef614941550b581b975534  gcc/testsuite/c-c++-common/pr80162-2.c
  419f389745d95caa13ce51a02e5a2abf  gcc/testsuite/c-c++-common/pr80162-3.c
  23a387907d550f4d99b8e38b9154c710  gcc/testsuite/c-c++-common/pr81052.c
! bebc31048be44ae555572a0e940ffae0  gcc/testsuite/c-c++-common/pr81376.c
  29c7ff6eb5caca1dd6391410ce6c69e4  gcc/testsuite/c-c++-common/pr82112.c
  49fab2d699364fd497a4ea99d034dd39  gcc/testsuite/c-c++-common/pr82872.c
  331f0a8981efa3c9d46048548df29cb7  gcc/testsuite/c-c++-common/pr83059.c
*************** f3cef6e9a9aa2cd42daabd8901f27dcd  gcc/te
*** 9721,9727 ****
  ecc72a9bb2a70f28d6c832a7f8f58ed5  gcc/testsuite/c-c++-common/pr85822.c
  163480c4288d9e1dda1b280af14b74b3  gcc/testsuite/c-c++-common/pr86093.c
  560f197d397172fed3c7f2d02716684a  gcc/testsuite/c-c++-common/pr88664-1.c
! f187b1fa4588b6b485c67bc45272ee70  gcc/testsuite/c-c++-common/pr88664-2.c
  e1c6090860137d89e82f5f3641323830  gcc/testsuite/c-c++-common/pr88984.c
  6a2204c315ddd7bab3f04f84e4490bd5  gcc/testsuite/c-c++-common/pr89566.c
  13205c717bffbf6f93c9d98e9dd5f17f  gcc/testsuite/c-c++-common/pr89888.c
--- 10282,10288 ----
  ecc72a9bb2a70f28d6c832a7f8f58ed5  gcc/testsuite/c-c++-common/pr85822.c
  163480c4288d9e1dda1b280af14b74b3  gcc/testsuite/c-c++-common/pr86093.c
  560f197d397172fed3c7f2d02716684a  gcc/testsuite/c-c++-common/pr88664-1.c
! 37404a66ce9591b0943a6d1c5d6300ba  gcc/testsuite/c-c++-common/pr88664-2.c
  e1c6090860137d89e82f5f3641323830  gcc/testsuite/c-c++-common/pr88984.c
  6a2204c315ddd7bab3f04f84e4490bd5  gcc/testsuite/c-c++-common/pr89566.c
  13205c717bffbf6f93c9d98e9dd5f17f  gcc/testsuite/c-c++-common/pr89888.c
*************** b45c683e1065f93893860cdb2a150b1c  gcc/te
*** 9744,9769 ****
  bf9f9984774fc19887b8b04e985fbdc2  gcc/testsuite/c-c++-common/pr92833-4.c
  e0634fac709f26330953f3dcafaa2394  gcc/testsuite/c-c++-common/pr94385.c
  4dfa0ccb316da545a1f8b242aac41f3e  gcc/testsuite/c-c++-common/pr94755.c
  87b3bbe050a2e54c8aa76908ea34822d  gcc/testsuite/c-c++-common/pr95903.c
  0ff677a7f94c47b0db47cc14f3e6f746  gcc/testsuite/c-c++-common/pr96369.c
  e7da4642e25c14b28d3cbf86173d69a5  gcc/testsuite/c-c++-common/pr96545.c
  7859693e4c5c966ac09c6aa874fe5eb9  gcc/testsuite/c-c++-common/pr98556.c
  b0ba836310044e7b419ef679f0b48d6f  gcc/testsuite/c-c++-common/raw-string-1.c
  554e7071d2525351de28445762633866  gcc/testsuite/c-c++-common/raw-string-10.c
  fc54e7227094f307fa566b3a8cd0ba9a  gcc/testsuite/c-c++-common/raw-string-11.c
  36fc0e5938743faa94593b1c507a505d  gcc/testsuite/c-c++-common/raw-string-12.c
  e1e03bbcd5180090470439197165fcf8  gcc/testsuite/c-c++-common/raw-string-13.c
! ccdf5fc3d595a050f9cd8f9e554aa949  gcc/testsuite/c-c++-common/raw-string-14.c
  17ee2bb32f453315e1e6946fecb9e042  gcc/testsuite/c-c++-common/raw-string-15.c
! a9e4f39ad9b99f05d841c41b00193b88  gcc/testsuite/c-c++-common/raw-string-16.c
  b81ba5a5d59db8aba066b1ea5875ae1c  gcc/testsuite/c-c++-common/raw-string-17.c
  f2cf446aee9e562e0f50535d8dc722b8  gcc/testsuite/c-c++-common/raw-string-18.c
  f22b56f7443efc755e1ea54a224e054f  gcc/testsuite/c-c++-common/raw-string-19.c
  800165e4838b55a02b4e0876d627a84e  gcc/testsuite/c-c++-common/raw-string-2.c
  4363cd68e71914dc9788eb4a02529350  gcc/testsuite/c-c++-common/raw-string-3.c
  e49568f3823955061595d6d2bc00ec34  gcc/testsuite/c-c++-common/raw-string-4.c
! 0ef9b44619e4e029b0c7aff6cf309d37  gcc/testsuite/c-c++-common/raw-string-5.c
! cbf92e6574f134b4f8e6ff340cd78684  gcc/testsuite/c-c++-common/raw-string-6.c
  a183a8ddeb27d5e9654e05ba36537908  gcc/testsuite/c-c++-common/raw-string-7.c
  1be74e84c9b067d6ddd2a8488e5e6019  gcc/testsuite/c-c++-common/raw-string-8.c
  4ff3ed308d8da8d77850a30d4f12d391  gcc/testsuite/c-c++-common/raw-string-9.c
--- 10305,10344 ----
  bf9f9984774fc19887b8b04e985fbdc2  gcc/testsuite/c-c++-common/pr92833-4.c
  e0634fac709f26330953f3dcafaa2394  gcc/testsuite/c-c++-common/pr94385.c
  4dfa0ccb316da545a1f8b242aac41f3e  gcc/testsuite/c-c++-common/pr94755.c
+ 929cea3bdb297538cfc0c1ee57044cbd  gcc/testsuite/c-c++-common/pr95237-1.c
+ b187a63b12eb08d465531237173b6e60  gcc/testsuite/c-c++-common/pr95237-2.c
+ df410f3147718269c4803aff76eeb506  gcc/testsuite/c-c++-common/pr95237-3.c
+ 008b50e09db5b996693d07ee64802760  gcc/testsuite/c-c++-common/pr95237-4.c
+ cf5e6597a7cb70201de2edbc9067b8dd  gcc/testsuite/c-c++-common/pr95237-5.c
+ 6b32157c61425afa720c8f6caa9d65eb  gcc/testsuite/c-c++-common/pr95237-6.c
+ 517e6b53d80905d33a7852acd8ca3958  gcc/testsuite/c-c++-common/pr95237-7.c
+ 233b68a21c9f6da07fc8e09d657f3f09  gcc/testsuite/c-c++-common/pr95237-8.c
+ e53af2aa7d10757161196113a6bde0d9  gcc/testsuite/c-c++-common/pr95237-9.c
+ ea224ace5832cd0eba6a6d58558ed280  gcc/testsuite/c-c++-common/pr95378.c
  87b3bbe050a2e54c8aa76908ea34822d  gcc/testsuite/c-c++-common/pr95903.c
+ 418b58eb94ef29a984762e4e81ee2057  gcc/testsuite/c-c++-common/pr96192-1.c
  0ff677a7f94c47b0db47cc14f3e6f746  gcc/testsuite/c-c++-common/pr96369.c
  e7da4642e25c14b28d3cbf86173d69a5  gcc/testsuite/c-c++-common/pr96545.c
+ 4fe8ad019b60941d4903ffbf3df4e8dc  gcc/testsuite/c-c++-common/pr97164.c
  7859693e4c5c966ac09c6aa874fe5eb9  gcc/testsuite/c-c++-common/pr98556.c
+ dcb1283b3d236483f0079fddb308212a  gcc/testsuite/c-c++-common/pr98943.c
+ 7e14f7ea529494ee1df50282a20a267c  gcc/testsuite/c-c++-common/pr99113.c
  b0ba836310044e7b419ef679f0b48d6f  gcc/testsuite/c-c++-common/raw-string-1.c
  554e7071d2525351de28445762633866  gcc/testsuite/c-c++-common/raw-string-10.c
  fc54e7227094f307fa566b3a8cd0ba9a  gcc/testsuite/c-c++-common/raw-string-11.c
  36fc0e5938743faa94593b1c507a505d  gcc/testsuite/c-c++-common/raw-string-12.c
  e1e03bbcd5180090470439197165fcf8  gcc/testsuite/c-c++-common/raw-string-13.c
! 8a90c5c0fea70e9939ec5079189a5c4b  gcc/testsuite/c-c++-common/raw-string-14.c
  17ee2bb32f453315e1e6946fecb9e042  gcc/testsuite/c-c++-common/raw-string-15.c
! c2704c66cab13556f52fe262264620a8  gcc/testsuite/c-c++-common/raw-string-16.c
  b81ba5a5d59db8aba066b1ea5875ae1c  gcc/testsuite/c-c++-common/raw-string-17.c
  f2cf446aee9e562e0f50535d8dc722b8  gcc/testsuite/c-c++-common/raw-string-18.c
  f22b56f7443efc755e1ea54a224e054f  gcc/testsuite/c-c++-common/raw-string-19.c
  800165e4838b55a02b4e0876d627a84e  gcc/testsuite/c-c++-common/raw-string-2.c
  4363cd68e71914dc9788eb4a02529350  gcc/testsuite/c-c++-common/raw-string-3.c
  e49568f3823955061595d6d2bc00ec34  gcc/testsuite/c-c++-common/raw-string-4.c
! 707043c6192a38d3f235caa32cb05034  gcc/testsuite/c-c++-common/raw-string-5.c
! 35d03227b9135586c8ed98f9dccd5927  gcc/testsuite/c-c++-common/raw-string-6.c
  a183a8ddeb27d5e9654e05ba36537908  gcc/testsuite/c-c++-common/raw-string-7.c
  1be74e84c9b067d6ddd2a8488e5e6019  gcc/testsuite/c-c++-common/raw-string-8.c
  4ff3ed308d8da8d77850a30d4f12d391  gcc/testsuite/c-c++-common/raw-string-9.c
*************** e6b8806ad0c5451ea3a2026279567203  gcc/te
*** 9829,9834 ****
--- 10404,10419 ----
  c1e50a7071b6999a8895b383c899231c  gcc/testsuite/c-c++-common/torture/aarch64-vect-lane-1.c
  e71883f492cebf8129478eb15f05b834  gcc/testsuite/c-c++-common/torture/aarch64-vect-lane-2.c
  a10b02fb3b2593b2641dfd572427f365  gcc/testsuite/c-c++-common/torture/asm-inline.c
+ 4456d62b0c9d26f4bc6d7feb57e531ea  gcc/testsuite/c-c++-common/torture/attr-noinit-1.c
+ 4af5d9ab597a3d1d807b0b808da0d557  gcc/testsuite/c-c++-common/torture/attr-noinit-2.c
+ 923db8c72ddf0494e1c474214083baf3  gcc/testsuite/c-c++-common/torture/attr-noinit-3.c
+ 5d4380318adbcfde4ba27ca6b1db3d2b  gcc/testsuite/c-c++-common/torture/attr-noinit-invalid.c
+ b197053d2b7a9103f76ef8190412fb65  gcc/testsuite/c-c++-common/torture/attr-noinit-main.inc
+ 917e21ee93c6045e0797d8f66db6f35c  gcc/testsuite/c-c++-common/torture/attr-persistent-1.c
+ b3c4ee91f93d55bb17b52e7be1926d46  gcc/testsuite/c-c++-common/torture/attr-persistent-2.c
+ ed63b6714ecec0d6cf1643e4fd41ee3f  gcc/testsuite/c-c++-common/torture/attr-persistent-3.c
+ 6a88d7d32ff5148b8a7b6b7e1d148e73  gcc/testsuite/c-c++-common/torture/attr-persistent-invalid.c
+ c9d443b03daacdbd926bfa8fc66aeb5a  gcc/testsuite/c-c++-common/torture/attr-persistent-main.inc
  44b670d0aec741e3503143d1fd81cfa5  gcc/testsuite/c-c++-common/torture/builtin-arith-overflow-1.c
  465154bc8a7a51c9299788073fd630ec  gcc/testsuite/c-c++-common/torture/builtin-arith-overflow-1.h
  070fcd634c88f93e465c85d1f83bd66a  gcc/testsuite/c-c++-common/torture/builtin-arith-overflow-10.c
*************** f64e9a0e7b5ee2dca69c8d247f6246ab  gcc/te
*** 9869,9874 ****
--- 10454,10464 ----
  6099fd0b163b9c570575cfa376ad44ae  gcc/testsuite/c-c++-common/torture/builtin-arith-overflow-p-8.c
  1521bd071912021d30375778ada20c27  gcc/testsuite/c-c++-common/torture/builtin-arith-overflow-p-9.c
  c0ced56aa092fbe05fcfb0400e4a7973  gcc/testsuite/c-c++-common/torture/builtin-arith-overflow.h
+ 80c6991dac30744cf52461dd3f956e72  gcc/testsuite/c-c++-common/torture/builtin-clear-padding-1.c
+ dcfe45ba6f5d3cfc6a596ae589694b44  gcc/testsuite/c-c++-common/torture/builtin-clear-padding-2.c
+ 895fbc9bc655600ce8926f0324c028bf  gcc/testsuite/c-c++-common/torture/builtin-clear-padding-3.c
+ 4ff8867bffb2428f7170faffc42f73a7  gcc/testsuite/c-c++-common/torture/builtin-clear-padding-4.c
+ 02ccc099dac6a69400f154fddb7c755d  gcc/testsuite/c-c++-common/torture/builtin-clear-padding-5.c
  e6519a905d51bc4a47ceea85c886d98b  gcc/testsuite/c-c++-common/torture/builtin-convertvector-1.c
  255588ac3834ead37b7f36c6b58cd61b  gcc/testsuite/c-c++-common/torture/complex-alias-1.c
  252f95ec0162dd10262e227d09b36737  gcc/testsuite/c-c++-common/torture/complex-sign-add.c
*************** e098360b3686787abea6589b13d9e806  gcc/te
*** 9904,9910 ****
  f5a8bd24ba1cbffe7d9e10dd33f8c8c1  gcc/testsuite/c-c++-common/torture/vector-shift2.c
  40259110b2785bd0fcaeebafedfb158d  gcc/testsuite/c-c++-common/torture/vector-subscript-1.c
  b4f1856686c2244fb9bfda949a06390e  gcc/testsuite/c-c++-common/torture/vector-subscript-2.c
! 6b54276027e366e3fb4a3caf944a9bde  gcc/testsuite/c-c++-common/torture/vector-subscript-3.c
  688eae1733e2d8a48273b19e35eeee9f  gcc/testsuite/c-c++-common/torture/vshuf-16.inc
  7abbeab542449f5fc00970bfd346934d  gcc/testsuite/c-c++-common/torture/vshuf-2.inc
  91dd6de1cc64afc152b2fbd0f5b8f147  gcc/testsuite/c-c++-common/torture/vshuf-4.inc
--- 10494,10500 ----
  f5a8bd24ba1cbffe7d9e10dd33f8c8c1  gcc/testsuite/c-c++-common/torture/vector-shift2.c
  40259110b2785bd0fcaeebafedfb158d  gcc/testsuite/c-c++-common/torture/vector-subscript-1.c
  b4f1856686c2244fb9bfda949a06390e  gcc/testsuite/c-c++-common/torture/vector-subscript-2.c
! 551da46ea8e339d15446ce3d3902958b  gcc/testsuite/c-c++-common/torture/vector-subscript-3.c
  688eae1733e2d8a48273b19e35eeee9f  gcc/testsuite/c-c++-common/torture/vshuf-16.inc
  7abbeab542449f5fc00970bfd346934d  gcc/testsuite/c-c++-common/torture/vshuf-2.inc
  91dd6de1cc64afc152b2fbd0f5b8f147  gcc/testsuite/c-c++-common/torture/vshuf-4.inc
*************** c8736adfa514ce69214538a49b7c88b2  gcc/te
*** 9930,9935 ****
--- 10520,10528 ----
  6374856da2d117eb7fa13572b3bf6de0  gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c
  da953592b5918925210396862fda7319  gcc/testsuite/c-c++-common/tsan/free_race.c
  5578b49fb40ddbd6c66d77de07144fba  gcc/testsuite/c-c++-common/tsan/free_race2.c
+ 81d8d58ede80d173b1b472d5c0f3d9a2  gcc/testsuite/c-c++-common/tsan/func_entry_exit.c
+ 03862ec23df05c353f1addf0092e0d59  gcc/testsuite/c-c++-common/tsan/func_entry_exit_disabled.c
+ 5aaa89ef6ecd6d52e014a7dbe6bff4e9  gcc/testsuite/c-c++-common/tsan/inline.c
  9cd9665193a2711474b2d693c1034406  gcc/testsuite/c-c++-common/tsan/mutexset1.c
  52d73498f49b7b249b4b5a5652826619  gcc/testsuite/c-c++-common/tsan/pr65400-1.c
  695efb40d461078d61105c562aeff7de  gcc/testsuite/c-c++-common/tsan/pr65400-2.c
*************** e35caecbc64e5306c5790ce0f003eff6  gcc/te
*** 9951,9956 ****
--- 10544,10550 ----
  2a1cc14372eafa2d784920c8669e47db  gcc/testsuite/c-c++-common/tsan/tiny_race.c
  75b79548e5a2ab6acf3a7d2bb32e6f36  gcc/testsuite/c-c++-common/tsan/tls_race.c
  1048d0e6a3ca80d3b4720a445847e7cb  gcc/testsuite/c-c++-common/tsan/tsan_barrier.h
+ 257bcb6e3df922acaf85096287053435  gcc/testsuite/c-c++-common/tsan/volatile.c
  3e2de6169eb53b32bfe7a21d0500e2f7  gcc/testsuite/c-c++-common/tsan/write_in_reader_lock.c
  8d737655fe783ab4170cda3a8b41a7f2  gcc/testsuite/c-c++-common/ubsan/align-1.c
  f77090a8c54bd7c9695bd1baea42b2ad  gcc/testsuite/c-c++-common/ubsan/align-10.c
*************** bf3eafbf8ab8751240e00f5411cf7d52  gcc/te
*** 9972,9981 ****
  f7ac21b5467fdafd31e4d63c13bba697  gcc/testsuite/c-c++-common/ubsan/bounds-10.c
  8a79b5ac2324b237d4b97f40d8caef20  gcc/testsuite/c-c++-common/ubsan/bounds-11.c
  c0cea811b60785fdbeb5a8c17cbfe97d  gcc/testsuite/c-c++-common/ubsan/bounds-12.c
! e41a9c9640280bfabdc970ff41f1e444  gcc/testsuite/c-c++-common/ubsan/bounds-13.c
  cd3471a668bc0c1cefbc4a040f2df388  gcc/testsuite/c-c++-common/ubsan/bounds-14.c
  c5c4bd7ee0bda3e080d5ab175b9b63cb  gcc/testsuite/c-c++-common/ubsan/bounds-15.c
! 92ade334a1c74443f36e11b5aa9e8137  gcc/testsuite/c-c++-common/ubsan/bounds-2.c
  e7f60e0642d24587e57ad55271053c36  gcc/testsuite/c-c++-common/ubsan/bounds-3.c
  55d21c141077691618a0992441b77856  gcc/testsuite/c-c++-common/ubsan/bounds-4.c
  c4c0ec4e493317355a230d4d4a6dd09d  gcc/testsuite/c-c++-common/ubsan/bounds-5.c
--- 10566,10575 ----
  f7ac21b5467fdafd31e4d63c13bba697  gcc/testsuite/c-c++-common/ubsan/bounds-10.c
  8a79b5ac2324b237d4b97f40d8caef20  gcc/testsuite/c-c++-common/ubsan/bounds-11.c
  c0cea811b60785fdbeb5a8c17cbfe97d  gcc/testsuite/c-c++-common/ubsan/bounds-12.c
! 8f13cc9cd85cff091c6bf14ddbef9776  gcc/testsuite/c-c++-common/ubsan/bounds-13.c
  cd3471a668bc0c1cefbc4a040f2df388  gcc/testsuite/c-c++-common/ubsan/bounds-14.c
  c5c4bd7ee0bda3e080d5ab175b9b63cb  gcc/testsuite/c-c++-common/ubsan/bounds-15.c
! f850e06c219ce39b9e49f07966a2cf65  gcc/testsuite/c-c++-common/ubsan/bounds-2.c
  e7f60e0642d24587e57ad55271053c36  gcc/testsuite/c-c++-common/ubsan/bounds-3.c
  55d21c141077691618a0992441b77856  gcc/testsuite/c-c++-common/ubsan/bounds-4.c
  c4c0ec4e493317355a230d4d4a6dd09d  gcc/testsuite/c-c++-common/ubsan/bounds-5.c
*************** c16185cce86267ea0c9dd646ac8e24fe  gcc/te
*** 9986,9998 ****
  ea241630b0a3aed6153f59337a91f543  gcc/testsuite/c-c++-common/ubsan/builtin-1.c
  70def46beb46626b6c3e1f45c5df351a  gcc/testsuite/c-c++-common/ubsan/const-char-1.c
  1b7d27b069201b0a663821b3643c112b  gcc/testsuite/c-c++-common/ubsan/const-expr-1.c
! 17e0db17e3d0a29a2dcec179bfe160fb  gcc/testsuite/c-c++-common/ubsan/div-by-zero-1.c
  05b159dca2694a2a43f92aaf1e866b20  gcc/testsuite/c-c++-common/ubsan/div-by-zero-2.c
  e421ddf2d69b41e79c4238d86ca23e02  gcc/testsuite/c-c++-common/ubsan/div-by-zero-3.c
  9b2ae70c831a456b9f440b2c9d1131a6  gcc/testsuite/c-c++-common/ubsan/div-by-zero-4.c
  701ee447bdcb3bdd63f4e19e0aa275c7  gcc/testsuite/c-c++-common/ubsan/div-by-zero-5.c
! f1d5ba00cab5b6e91752dc500c497bad  gcc/testsuite/c-c++-common/ubsan/div-by-zero-6.c
! be42c7c0119ada6c8b75859883b7947d  gcc/testsuite/c-c++-common/ubsan/div-by-zero-7.c
  8d9e9d9d9f81061daf513b5ba1554c80  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-1.c
  96159bb28961f7d226730c47d4f46b1c  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-10.c
  412e240273773d78a1d355e70f1bb47f  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-11.c
--- 10580,10592 ----
  ea241630b0a3aed6153f59337a91f543  gcc/testsuite/c-c++-common/ubsan/builtin-1.c
  70def46beb46626b6c3e1f45c5df351a  gcc/testsuite/c-c++-common/ubsan/const-char-1.c
  1b7d27b069201b0a663821b3643c112b  gcc/testsuite/c-c++-common/ubsan/const-expr-1.c
! 967a19e8ebcf02886c03bde760bd29d2  gcc/testsuite/c-c++-common/ubsan/div-by-zero-1.c
  05b159dca2694a2a43f92aaf1e866b20  gcc/testsuite/c-c++-common/ubsan/div-by-zero-2.c
  e421ddf2d69b41e79c4238d86ca23e02  gcc/testsuite/c-c++-common/ubsan/div-by-zero-3.c
  9b2ae70c831a456b9f440b2c9d1131a6  gcc/testsuite/c-c++-common/ubsan/div-by-zero-4.c
  701ee447bdcb3bdd63f4e19e0aa275c7  gcc/testsuite/c-c++-common/ubsan/div-by-zero-5.c
! 6f79bf0d7a915586511e6d16f808b12f  gcc/testsuite/c-c++-common/ubsan/div-by-zero-6.c
! d48169540b483892cb5aef4288256769  gcc/testsuite/c-c++-common/ubsan/div-by-zero-7.c
  8d9e9d9d9f81061daf513b5ba1554c80  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-1.c
  96159bb28961f7d226730c47d4f46b1c  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-10.c
  412e240273773d78a1d355e70f1bb47f  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-11.c
*************** ad0210bfe2c0bf78466fbeb232c7f222  gcc/te
*** 10007,10012 ****
--- 10601,10607 ----
  a6690a3246008f2c5cea6ca866063155  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-9.c
  2474ecce86d8ab1d663e5a060e9ae5ee  gcc/testsuite/c-c++-common/ubsan/float-cast.h
  edf61d9eda5f13ef6802aeed6ada88f8  gcc/testsuite/c-c++-common/ubsan/float-div-by-zero-1.c
+ 2dfe9300c7c0663dfcd4b1f1892e2d6e  gcc/testsuite/c-c++-common/ubsan/inline.c
  ff2685208629414a89fbb3161f228476  gcc/testsuite/c-c++-common/ubsan/load-bool-enum.c
  3c0ae577713ec4c85f5ad514bc7596aa  gcc/testsuite/c-c++-common/ubsan/nonnull-1.c
  5c4f1ab5d64a7368a8615e6b97b39494  gcc/testsuite/c-c++-common/ubsan/nonnull-2.c
*************** a61b9d88d557ac4c1e79416cd543c935  gcc/te
*** 10043,10054 ****
  c850f12076b9a7a84c2510d513a753e2  gcc/testsuite/c-c++-common/ubsan/opts-4.c
  0cec8e20d85727de45815056e293d32a  gcc/testsuite/c-c++-common/ubsan/overflow-1.c
  20327c28f0f8a29693dcdbef9d007593  gcc/testsuite/c-c++-common/ubsan/overflow-2.c
! 2f624f3189625b04a455b2b21845fd79  gcc/testsuite/c-c++-common/ubsan/overflow-add-1.c
! 698eadcb9537db85db3f8ac6b3f18b4c  gcc/testsuite/c-c++-common/ubsan/overflow-add-2.c
  a4b098303ece4486995742ff29ccdd05  gcc/testsuite/c-c++-common/ubsan/overflow-add-3.c
  c52181a20cd068403270fa30cac1a008  gcc/testsuite/c-c++-common/ubsan/overflow-add-4.c
  ae090ae431e425fca22fede2f8f4c79d  gcc/testsuite/c-c++-common/ubsan/overflow-add-5.c
! fa2824820b886341903209ee9990b9b1  gcc/testsuite/c-c++-common/ubsan/overflow-int128.c
  d66651cbf901e6206e6d2ce5a7adb0eb  gcc/testsuite/c-c++-common/ubsan/overflow-mul-1.c
  e51cf27d2d19a5058aebe25dc3bf614b  gcc/testsuite/c-c++-common/ubsan/overflow-mul-2.c
  1df8b28c58ecd85fc4313c448d687105  gcc/testsuite/c-c++-common/ubsan/overflow-mul-3.c
--- 10638,10649 ----
  c850f12076b9a7a84c2510d513a753e2  gcc/testsuite/c-c++-common/ubsan/opts-4.c
  0cec8e20d85727de45815056e293d32a  gcc/testsuite/c-c++-common/ubsan/overflow-1.c
  20327c28f0f8a29693dcdbef9d007593  gcc/testsuite/c-c++-common/ubsan/overflow-2.c
! 0287438532e192ca85b3fab0748e11a7  gcc/testsuite/c-c++-common/ubsan/overflow-add-1.c
! fe38964f8532802a42fe779509f4d1a6  gcc/testsuite/c-c++-common/ubsan/overflow-add-2.c
  a4b098303ece4486995742ff29ccdd05  gcc/testsuite/c-c++-common/ubsan/overflow-add-3.c
  c52181a20cd068403270fa30cac1a008  gcc/testsuite/c-c++-common/ubsan/overflow-add-4.c
  ae090ae431e425fca22fede2f8f4c79d  gcc/testsuite/c-c++-common/ubsan/overflow-add-5.c
! 1b3f4241791b3db20b24323c80a24d25  gcc/testsuite/c-c++-common/ubsan/overflow-int128.c
  d66651cbf901e6206e6d2ce5a7adb0eb  gcc/testsuite/c-c++-common/ubsan/overflow-mul-1.c
  e51cf27d2d19a5058aebe25dc3bf614b  gcc/testsuite/c-c++-common/ubsan/overflow-mul-2.c
  1df8b28c58ecd85fc4313c448d687105  gcc/testsuite/c-c++-common/ubsan/overflow-mul-3.c
*************** dbe71690dd793ddf3ef2e0bf6b784c9d  gcc/te
*** 10056,10063 ****
  8f45c5d65ff4a40cc4e2dcf3245dfea9  gcc/testsuite/c-c++-common/ubsan/overflow-negate-1.c
  e26e9729e8705bf53b7e72d2234a1460  gcc/testsuite/c-c++-common/ubsan/overflow-negate-2.c
  f5a7d303164048f0b25d898120f096bf  gcc/testsuite/c-c++-common/ubsan/overflow-negate-3.c
! c5caeabe0f89d97d9650fc69f30cb9a5  gcc/testsuite/c-c++-common/ubsan/overflow-sub-1.c
! 15af98756e5d145d8dc12d01e43af55e  gcc/testsuite/c-c++-common/ubsan/overflow-sub-2.c
  07bd365729762ed921bb1e56769ec361  gcc/testsuite/c-c++-common/ubsan/overflow-sub-3.c
  3fdfb7b541ab32d9386d01e5297559fe  gcc/testsuite/c-c++-common/ubsan/overflow-sub-4.c
  a419ef4838cde6817792405820466636  gcc/testsuite/c-c++-common/ubsan/overflow-vec-1.c
--- 10651,10658 ----
  8f45c5d65ff4a40cc4e2dcf3245dfea9  gcc/testsuite/c-c++-common/ubsan/overflow-negate-1.c
  e26e9729e8705bf53b7e72d2234a1460  gcc/testsuite/c-c++-common/ubsan/overflow-negate-2.c
  f5a7d303164048f0b25d898120f096bf  gcc/testsuite/c-c++-common/ubsan/overflow-negate-3.c
! bfb38cda4e974fdf0572322fe35e3a46  gcc/testsuite/c-c++-common/ubsan/overflow-sub-1.c
! e38a861012a1449b45bab897d23db346  gcc/testsuite/c-c++-common/ubsan/overflow-sub-2.c
  07bd365729762ed921bb1e56769ec361  gcc/testsuite/c-c++-common/ubsan/overflow-sub-3.c
  3fdfb7b541ab32d9386d01e5297559fe  gcc/testsuite/c-c++-common/ubsan/overflow-sub-4.c
  a419ef4838cde6817792405820466636  gcc/testsuite/c-c++-common/ubsan/overflow-vec-1.c
*************** c962eb5650005b79998810435b1e82d1  gcc/te
*** 10135,10141 ****
  8af001e8ff983bfd84b0a936ff9befb9  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-4.c
  9c807e811e70e221cd998e1b72f70b62  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-5.c
  baef423cb5f61aa5a3319edd2f7175a4  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-6.c
! 75b1bb4cf31787a3a75efd68fd959196  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-7.c
  75b6300bdccd71b7db2032bdc7508f00  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-8.c
  311c1943d328360a8fbfb5f0fa51de97  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-9.c
  e556d95fc8d53f6631375ea8b85d3075  gcc/testsuite/c-c++-common/ubsan/save-expr-1.c
--- 10730,10736 ----
  8af001e8ff983bfd84b0a936ff9befb9  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-4.c
  9c807e811e70e221cd998e1b72f70b62  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-5.c
  baef423cb5f61aa5a3319edd2f7175a4  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-6.c
! b5c4a602aedad6e9f83186fa5c6fd79d  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-7.c
  75b6300bdccd71b7db2032bdc7508f00  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-8.c
  311c1943d328360a8fbfb5f0fa51de97  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-9.c
  e556d95fc8d53f6631375ea8b85d3075  gcc/testsuite/c-c++-common/ubsan/save-expr-1.c
*************** a9431f9dc63f136cd7b87acbc9209f71  gcc/te
*** 10172,10178 ****
  21c4940c3e3640a911a8ccc6f76bdc36  gcc/testsuite/c-c++-common/uninit-F.c
  85d196bebea2c4def45d8c6e63870e6c  gcc/testsuite/c-c++-common/uninit-G-O0.c
  4cfe4b2e4f92f6209a95e39f22388d47  gcc/testsuite/c-c++-common/uninit-G.c
! fc07508abc561415843db1779595ba31  gcc/testsuite/c-c++-common/uninit-pr51010.c
  cb4b7334f818eb4777a0dbbbe293dfb4  gcc/testsuite/c-c++-common/unroll-1.c
  8a23f495b74c44a5f687098ff6b980c4  gcc/testsuite/c-c++-common/unroll-2.c
  dac3ad0f2dce2fdefe8bfcfd62cfa471  gcc/testsuite/c-c++-common/unroll-3.c
--- 10767,10773 ----
  21c4940c3e3640a911a8ccc6f76bdc36  gcc/testsuite/c-c++-common/uninit-F.c
  85d196bebea2c4def45d8c6e63870e6c  gcc/testsuite/c-c++-common/uninit-G-O0.c
  4cfe4b2e4f92f6209a95e39f22388d47  gcc/testsuite/c-c++-common/uninit-G.c
! 904b8a36454cb0cfffd3a4b0ab07482d  gcc/testsuite/c-c++-common/uninit-pr51010.c
  cb4b7334f818eb4777a0dbbbe293dfb4  gcc/testsuite/c-c++-common/unroll-1.c
  8a23f495b74c44a5f687098ff6b980c4  gcc/testsuite/c-c++-common/unroll-2.c
  dac3ad0f2dce2fdefe8bfcfd62cfa471  gcc/testsuite/c-c++-common/unroll-3.c
*************** f05c0689692cbede80befe82de25dc21  gcc/te
*** 10206,10224 ****
  5d6889d4089a1f4aaf45e435f0eb55bf  gcc/testsuite/c-c++-common/vla-1.c
  f692b95d21d9a595194cabd09b94759b  gcc/testsuite/c-c++-common/warn-ommitted-condop.c
  4047fbaa76a1a5d41ea12f6f27df3243  gcc/testsuite/c-c++-common/wdate-time.c
! 9429a29ba85ed365fc5fbe98d1262a84  gcc/testsuite/config/default.exp
! 58dc5a5cf5db074f93f28ff8913eed25  gcc/testsuite/g++.dg/20090107-1.C
! e530347ad81371c3d469f2a1d1245735  gcc/testsuite/g++.dg/20090121-1.C
  34c8e7d537bafbaafc64457157d9941d  gcc/testsuite/g++.dg/DRs/dr1207-1.C
  135ae25fc37d38f1d817ed5038d76739  gcc/testsuite/g++.dg/DRs/dr1207-2.C
  8ce864b8f2d2ae710018ffa009a91983  gcc/testsuite/g++.dg/DRs/dr1423.C
  c78a7d0e0f56139db13df05e5557054a  gcc/testsuite/g++.dg/DRs/dr1511-1.C
  a8a423a0388215f96cf72d6abf415d72  gcc/testsuite/g++.dg/DRs/dr1511-2.C
  5402422aa468b0e17faae787be45ca05  gcc/testsuite/g++.dg/DRs/dr1778.C
  e1ec3bf667b6fc27346a0e4a5cf1958b  gcc/testsuite/g++.dg/DRs/dr1940.C
  b76a9cedbf2dc42cfc090cc116dd5b23  gcc/testsuite/g++.dg/DRs/dr2137-1.C
  c34c077c14a731c1e76b55760a45595e  gcc/testsuite/g++.dg/DRs/dr2137-2.C
! 150674e33ec632b8ae1b75047191bc79  gcc/testsuite/g++.dg/README
  c2db197c9d51ba75cb2475afeb61f7a3  gcc/testsuite/g++.dg/Walloca1.C
  a41465f245515983bde6bb1167545c97  gcc/testsuite/g++.dg/Wattributes-2.C
  855737fcfec2beb103a1b9c7c6e31f1c  gcc/testsuite/g++.dg/Wattributes-3.C
--- 10801,10835 ----
  5d6889d4089a1f4aaf45e435f0eb55bf  gcc/testsuite/c-c++-common/vla-1.c
  f692b95d21d9a595194cabd09b94759b  gcc/testsuite/c-c++-common/warn-ommitted-condop.c
  4047fbaa76a1a5d41ea12f6f27df3243  gcc/testsuite/c-c++-common/wdate-time.c
! 462e99e9925256ef00efecd3c8c8e56f  gcc/testsuite/c-c++-common/zero-scratch-regs-1.c
! 5713b2f199152f92e0018937d9b04af8  gcc/testsuite/c-c++-common/zero-scratch-regs-10.c
! bd70f9cf65ebd1e8dceff746c5d08cef  gcc/testsuite/c-c++-common/zero-scratch-regs-11.c
! 3de299c55b18f023da96edc5affac7da  gcc/testsuite/c-c++-common/zero-scratch-regs-2.c
! 36143f3f7a466e6b774a0b1bca02855b  gcc/testsuite/c-c++-common/zero-scratch-regs-3.c
! 391b6f6417f516fef26bc8122a465851  gcc/testsuite/c-c++-common/zero-scratch-regs-4.c
! a1f90abfa586e9a650f276b2c91c9ad4  gcc/testsuite/c-c++-common/zero-scratch-regs-5.c
! c77f02020cbcf85af6784093386ef648  gcc/testsuite/c-c++-common/zero-scratch-regs-6.c
! 906f617c4f95bbe9b519d54be2bd1cca  gcc/testsuite/c-c++-common/zero-scratch-regs-7.c
! 4d515b2db504947e3c4dbc5f6f03c6f0  gcc/testsuite/c-c++-common/zero-scratch-regs-8.c
! b1407379483166171545ff9c4b51ce2d  gcc/testsuite/c-c++-common/zero-scratch-regs-9.c
! 5e947ff19698fccb8ffb7ac65277ba5b  gcc/testsuite/c-c++-common/zero-scratch-regs-attr-usages.c
! c09261c9c970d0efd82b97e108d21821  gcc/testsuite/config/default.exp
! 8024a8d05ac43431e4b1302cfb4f3a39  gcc/testsuite/g++.dg/20090107-1.C
! 1c4ef3fc928b689d06e4e43bd7b1118c  gcc/testsuite/g++.dg/20090121-1.C
  34c8e7d537bafbaafc64457157d9941d  gcc/testsuite/g++.dg/DRs/dr1207-1.C
  135ae25fc37d38f1d817ed5038d76739  gcc/testsuite/g++.dg/DRs/dr1207-2.C
  8ce864b8f2d2ae710018ffa009a91983  gcc/testsuite/g++.dg/DRs/dr1423.C
  c78a7d0e0f56139db13df05e5557054a  gcc/testsuite/g++.dg/DRs/dr1511-1.C
  a8a423a0388215f96cf72d6abf415d72  gcc/testsuite/g++.dg/DRs/dr1511-2.C
  5402422aa468b0e17faae787be45ca05  gcc/testsuite/g++.dg/DRs/dr1778.C
+ fa21ec294f03c517a2834da0764dd305  gcc/testsuite/g++.dg/DRs/dr188.C
  e1ec3bf667b6fc27346a0e4a5cf1958b  gcc/testsuite/g++.dg/DRs/dr1940.C
  b76a9cedbf2dc42cfc090cc116dd5b23  gcc/testsuite/g++.dg/DRs/dr2137-1.C
  c34c077c14a731c1e76b55760a45595e  gcc/testsuite/g++.dg/DRs/dr2137-2.C
! 3f7c4c9040359275e31ad38de5ffd272  gcc/testsuite/g++.dg/DRs/dr2237.C
! 33ccffb334dd7be92e0462b76cdef639  gcc/testsuite/g++.dg/DRs/dr2303.C
! 7a4b27e45b2c85a34faf94f75f8945d1  gcc/testsuite/g++.dg/DRs/dr625.C
! 6658ee600f846603866a6df5792ccb86  gcc/testsuite/g++.dg/README
  c2db197c9d51ba75cb2475afeb61f7a3  gcc/testsuite/g++.dg/Walloca1.C
  a41465f245515983bde6bb1167545c97  gcc/testsuite/g++.dg/Wattributes-2.C
  855737fcfec2beb103a1b9c7c6e31f1c  gcc/testsuite/g++.dg/Wattributes-3.C
*************** f2143b28e578a3bad2b2e83b50e55a09  gcc/te
*** 10230,10236 ****
  8beea6608726e30b4c6e45d68c7fd049  gcc/testsuite/g++.dg/Wclass-memaccess-3.C
  a870375da7bcd4c5c455867aab227d04  gcc/testsuite/g++.dg/Wclass-memaccess-4.C
  4ba67574e50be395fe4f4c58eaac86a7  gcc/testsuite/g++.dg/Wclass-memaccess-5.C
! 0c3f9ec615c7fb98f24e74081dfa3a73  gcc/testsuite/g++.dg/Wclass-memaccess.C
  5ae126d2bd8ea7c9e7da7c0f0bf249a8  gcc/testsuite/g++.dg/Wframe-address-in-Wall.C
  5ba575936ea99c0ac6a33f32f31ed443  gcc/testsuite/g++.dg/Wframe-address.C
  d3da67df470514d2b026a69fffe2d402  gcc/testsuite/g++.dg/Wmissing-attributes-1.C
--- 10841,10848 ----
  8beea6608726e30b4c6e45d68c7fd049  gcc/testsuite/g++.dg/Wclass-memaccess-3.C
  a870375da7bcd4c5c455867aab227d04  gcc/testsuite/g++.dg/Wclass-memaccess-4.C
  4ba67574e50be395fe4f4c58eaac86a7  gcc/testsuite/g++.dg/Wclass-memaccess-5.C
! b0d394df2af420d13fbc302b3902dc22  gcc/testsuite/g++.dg/Wclass-memaccess-6.C
! dec1adf9dfa9070a36845d4db36d64e6  gcc/testsuite/g++.dg/Wclass-memaccess.C
  5ae126d2bd8ea7c9e7da7c0f0bf249a8  gcc/testsuite/g++.dg/Wframe-address-in-Wall.C
  5ba575936ea99c0ac6a33f32f31ed443  gcc/testsuite/g++.dg/Wframe-address.C
  d3da67df470514d2b026a69fffe2d402  gcc/testsuite/g++.dg/Wmissing-attributes-1.C
*************** e0ed2bcd5db945f103903a86b3a49c2d  gcc/te
*** 10264,10270 ****
  bc705538e65a16b827802aba882afacf  gcc/testsuite/g++.dg/abi/abi-tag22a.C
  21817c8cd19d14a9bf6c9b52af552433  gcc/testsuite/g++.dg/abi/abi-tag23.C
  82b6ed97723352d5afce1767847102bd  gcc/testsuite/g++.dg/abi/abi-tag23a.C
! e28f7bfbab23e1a4a9e329b0e39398c7  gcc/testsuite/g++.dg/abi/abi-tag24.C
  672da7923f5fc8c4fdca6ba95309ee35  gcc/testsuite/g++.dg/abi/abi-tag24a.C
  180f41404374f95826fea78a1e0d3ab2  gcc/testsuite/g++.dg/abi/abi-tag3.C
  8f06678f1bcfb407a4c87c8834c4b5d6  gcc/testsuite/g++.dg/abi/abi-tag4.C
--- 10876,10882 ----
  bc705538e65a16b827802aba882afacf  gcc/testsuite/g++.dg/abi/abi-tag22a.C
  21817c8cd19d14a9bf6c9b52af552433  gcc/testsuite/g++.dg/abi/abi-tag23.C
  82b6ed97723352d5afce1767847102bd  gcc/testsuite/g++.dg/abi/abi-tag23a.C
! 951b17ec3204c422ddb5974c3f4facf5  gcc/testsuite/g++.dg/abi/abi-tag24.C
  672da7923f5fc8c4fdca6ba95309ee35  gcc/testsuite/g++.dg/abi/abi-tag24a.C
  180f41404374f95826fea78a1e0d3ab2  gcc/testsuite/g++.dg/abi/abi-tag3.C
  8f06678f1bcfb407a4c87c8834c4b5d6  gcc/testsuite/g++.dg/abi/abi-tag4.C
*************** afcddf1b30dc19c258215591ad57145a  gcc/te
*** 10368,10373 ****
--- 10980,10986 ----
  7b495c695618e4f19335c4fb222ac39e  gcc/testsuite/g++.dg/abi/key1.C
  bb31b4837b79e765fedbacaa8bb430d3  gcc/testsuite/g++.dg/abi/key2.C
  d06c8255efe2bb66e4bb6606d9fb8b0c  gcc/testsuite/g++.dg/abi/lambda-capture1.C
+ ab6dac1a25f6d8fc7ccddc228d1d80f2  gcc/testsuite/g++.dg/abi/lambda-defarg1.C
  2c4486b0b97a7d8919b8fffad18a0478  gcc/testsuite/g++.dg/abi/lambda-static-1.C
  75bbddd165a101e33a88857c65eb383d  gcc/testsuite/g++.dg/abi/lambda-vis.C
  44d0f298ab4a8fb8dcb8f4930bac5fd0  gcc/testsuite/g++.dg/abi/layout1.C
*************** d06c8255efe2bb66e4bb6606d9fb8b0c  gcc/te
*** 10376,10382 ****
  1b56fef803fe85ec97121919ad3ba2b9  gcc/testsuite/g++.dg/abi/local1-a.cc
  4ab5160617737559c38e1ffb650b797e  gcc/testsuite/g++.dg/abi/local1.C
  34ecb36205a7c22314ddda92d332a23d  gcc/testsuite/g++.dg/abi/local2.C
! bee4d955172926975486f104ee65f047  gcc/testsuite/g++.dg/abi/macro0.C
  06f0193b05c4ae743af4e38aec8d1122  gcc/testsuite/g++.dg/abi/macro2.C
  5a637c99e4aa66fa130b6c1d893fc41e  gcc/testsuite/g++.dg/abi/main.C
  ad6491d281aef40e7e1cf7d856f2aa05  gcc/testsuite/g++.dg/abi/mangle-arm-crypto.C
--- 10989,10995 ----
  1b56fef803fe85ec97121919ad3ba2b9  gcc/testsuite/g++.dg/abi/local1-a.cc
  4ab5160617737559c38e1ffb650b797e  gcc/testsuite/g++.dg/abi/local1.C
  34ecb36205a7c22314ddda92d332a23d  gcc/testsuite/g++.dg/abi/local2.C
! 8f9b1dad971382994a3f762d4995d31b  gcc/testsuite/g++.dg/abi/macro0.C
  06f0193b05c4ae743af4e38aec8d1122  gcc/testsuite/g++.dg/abi/macro2.C
  5a637c99e4aa66fa130b6c1d893fc41e  gcc/testsuite/g++.dg/abi/main.C
  ad6491d281aef40e7e1cf7d856f2aa05  gcc/testsuite/g++.dg/abi/mangle-arm-crypto.C
*************** cd207cce9213418d57092b0421db04a0  gcc/te
*** 10448,10458 ****
  0d690ffa5424c03eaf7dafd4d6ddb50c  gcc/testsuite/g++.dg/abi/mangle69.C
  0cdd24a1b15598b312927e271f3f773e  gcc/testsuite/g++.dg/abi/mangle7.C
  09d5c0b39937ef8fcdbd59cc1b8a35f3  gcc/testsuite/g++.dg/abi/mangle70.C
! bdb7d5e9e8b96f820db6f1caaf850dfc  gcc/testsuite/g++.dg/abi/mangle71.C
  e8f728908ea1c92ddf0ca367f3ddd8ef  gcc/testsuite/g++.dg/abi/mangle72.C
  b3ecb552fa1904358ec43eadbf16a954  gcc/testsuite/g++.dg/abi/mangle73.C
  1e408015b0df315173c32e6b3f5736cc  gcc/testsuite/g++.dg/abi/mangle74.C
  0016fd51a6bc2e14276cddc1051332e2  gcc/testsuite/g++.dg/abi/mangle75.C
  cc6afae4c242d6e5a9083cec1a9a9907  gcc/testsuite/g++.dg/abi/mangle8.C
  7e14b0353ae53e5a5a8bcf850c4fcbc9  gcc/testsuite/g++.dg/abi/mangle9.C
  d85264fae2b4c2eb4d8629cb29c42e90  gcc/testsuite/g++.dg/abi/no-linkage-expr1.C
--- 11061,11073 ----
  0d690ffa5424c03eaf7dafd4d6ddb50c  gcc/testsuite/g++.dg/abi/mangle69.C
  0cdd24a1b15598b312927e271f3f773e  gcc/testsuite/g++.dg/abi/mangle7.C
  09d5c0b39937ef8fcdbd59cc1b8a35f3  gcc/testsuite/g++.dg/abi/mangle70.C
! 1841423b488b171815dd9599f75d32d6  gcc/testsuite/g++.dg/abi/mangle71.C
  e8f728908ea1c92ddf0ca367f3ddd8ef  gcc/testsuite/g++.dg/abi/mangle72.C
  b3ecb552fa1904358ec43eadbf16a954  gcc/testsuite/g++.dg/abi/mangle73.C
  1e408015b0df315173c32e6b3f5736cc  gcc/testsuite/g++.dg/abi/mangle74.C
  0016fd51a6bc2e14276cddc1051332e2  gcc/testsuite/g++.dg/abi/mangle75.C
+ 1a979c9a72e11be89ad73eaf79638eda  gcc/testsuite/g++.dg/abi/mangle76.C
+ e5c7e131b3b1de43068d98300d1a745c  gcc/testsuite/g++.dg/abi/mangle77.C
  cc6afae4c242d6e5a9083cec1a9a9907  gcc/testsuite/g++.dg/abi/mangle8.C
  7e14b0353ae53e5a5a8bcf850c4fcbc9  gcc/testsuite/g++.dg/abi/mangle9.C
  d85264fae2b4c2eb4d8629cb29c42e90  gcc/testsuite/g++.dg/abi/no-linkage-expr1.C
*************** fb1d0cb0e1212195f80165239ff17d68  gcc/te
*** 10501,10513 ****
  dc506d93d81e95fa999dc2dd977c180a  gcc/testsuite/g++.dg/abi/pr83487.C
  86c4d281ffe73426a479f225666ccf3e  gcc/testsuite/g++.dg/abi/pr83489.C
  4ae824d15f94a9ab65d55cbaee54371a  gcc/testsuite/g++.dg/abi/pr87137.C
  4a1543932abd77ea1cfba28eecdeeef4  gcc/testsuite/g++.dg/abi/pragma-pack1.C
  2b576a18b3eaae586de7d82ddcfeb8f0  gcc/testsuite/g++.dg/abi/ref-temp1.C
  758c2fd81af2f42665b56b5d21b15e9f  gcc/testsuite/g++.dg/abi/regparm1.C
  d90943e976dded1f4182aeb500d1f2c7  gcc/testsuite/g++.dg/abi/rtti1.C
  8deae0db66776c34c77f2551c9679b7c  gcc/testsuite/g++.dg/abi/rtti2.C
  29332af8c5e95e4a72ba540bd8b29ec0  gcc/testsuite/g++.dg/abi/rtti3.C
! 6f2a71b6b0932c6186e1dbd588a2df57  gcc/testsuite/g++.dg/abi/scoped1.C
  6411485049218cb0255b44f1daecc4cd  gcc/testsuite/g++.dg/abi/spec1.C
  70e68bc55fe1945f2a8504c05b72996b  gcc/testsuite/g++.dg/abi/structret1.C
  0a188cd301551f22c8ddc09030b2eb28  gcc/testsuite/g++.dg/abi/thunk1.C
--- 11116,11133 ----
  dc506d93d81e95fa999dc2dd977c180a  gcc/testsuite/g++.dg/abi/pr83487.C
  86c4d281ffe73426a479f225666ccf3e  gcc/testsuite/g++.dg/abi/pr83489.C
  4ae824d15f94a9ab65d55cbaee54371a  gcc/testsuite/g++.dg/abi/pr87137.C
+ 06e12702e23f63ad7e9ff5fb005fc0da  gcc/testsuite/g++.dg/abi/pr98531-1.C
+ a612359f7851a82e1755e8a1d7d750c8  gcc/testsuite/g++.dg/abi/pr98531-2.C
+ 3b08956316b86515387a9ec36363d591  gcc/testsuite/g++.dg/abi/pr98531-3.C
+ fcd31b037e301fd0bc75088f33016314  gcc/testsuite/g++.dg/abi/pr98531-4.C
  4a1543932abd77ea1cfba28eecdeeef4  gcc/testsuite/g++.dg/abi/pragma-pack1.C
+ 52881b96c9e71b8371f854008be9823f  gcc/testsuite/g++.dg/abi/pure-virtual1.C
  2b576a18b3eaae586de7d82ddcfeb8f0  gcc/testsuite/g++.dg/abi/ref-temp1.C
  758c2fd81af2f42665b56b5d21b15e9f  gcc/testsuite/g++.dg/abi/regparm1.C
  d90943e976dded1f4182aeb500d1f2c7  gcc/testsuite/g++.dg/abi/rtti1.C
  8deae0db66776c34c77f2551c9679b7c  gcc/testsuite/g++.dg/abi/rtti2.C
  29332af8c5e95e4a72ba540bd8b29ec0  gcc/testsuite/g++.dg/abi/rtti3.C
! bdedfe2846378dfa383ae32b5d75d715  gcc/testsuite/g++.dg/abi/scoped1.C
  6411485049218cb0255b44f1daecc4cd  gcc/testsuite/g++.dg/abi/spec1.C
  70e68bc55fe1945f2a8504c05b72996b  gcc/testsuite/g++.dg/abi/structret1.C
  0a188cd301551f22c8ddc09030b2eb28  gcc/testsuite/g++.dg/abi/thunk1.C
*************** a3ef49aa5fa035e0eaa1fb23c589fe61  gcc/te
*** 10533,10559 ****
  6881f6a907aed22e3604db9a81d71753  gcc/testsuite/g++.dg/abi/vthunk3.C
  59cdef1c2f5ac26231205b723cb9ea52  gcc/testsuite/g++.dg/abi/vtt1.C
  cb66889e261971e64a6568617bffaeaa  gcc/testsuite/g++.dg/addr_builtin-1.C
! ecd03bae079c6305cd465a27f7220ff6  gcc/testsuite/g++.dg/analyzer/analyzer.exp
  0918dccee8951925f7bc4640874a6cd3  gcc/testsuite/g++.dg/analyzer/cstdlib-2.C
  b1051c81ee9929eae4057f7d1ce5ecd2  gcc/testsuite/g++.dg/analyzer/cstdlib.C
  e618363917558f650a6b91cce53eb8d2  gcc/testsuite/g++.dg/analyzer/malloc.C
! c1b3414587c698d22d3b866194a5a95e  gcc/testsuite/g++.dg/analyzer/pr93212.C
  6730f749b069d8ed2ba525a0ff83ad2c  gcc/testsuite/g++.dg/analyzer/pr93288.C
  c12e9b1c9d4173ff464e74ea78ab647e  gcc/testsuite/g++.dg/analyzer/pr93777.C
  a2fd899038ad8292f72a6822b197251e  gcc/testsuite/g++.dg/analyzer/pr93899.C
! a2758017cbe70d6725a03103a1efc89c  gcc/testsuite/g++.dg/analyzer/pr93950.C
! af6376136b82ff87b709854f25d0da2b  gcc/testsuite/g++.dg/analyzer/pr94028.C
  52afe02bc242a0578da458c6b600f7a9  gcc/testsuite/g++.dg/analyzer/pr94816.C
! 8fbe9f1a2d96d5386432457537ce4c2b  gcc/testsuite/g++.dg/asan/asan.exp
  aaab0b483d6b43b9fb8facfcf01ac3b3  gcc/testsuite/g++.dg/asan/asan_globals_test-wrapper.cc
  58f1893fa192cc0429f68ba9628696b9  gcc/testsuite/g++.dg/asan/asan_globals_test.cc
  573f81866bae96b4c422317d9f9f630c  gcc/testsuite/g++.dg/asan/asan_mem_test.cc
  ae18505cf8bcf60c7595916e5c13ca68  gcc/testsuite/g++.dg/asan/asan_oob_test.cc
  a21e7d58f33bd86c0ccf7a0bac1f06bf  gcc/testsuite/g++.dg/asan/asan_str_test.cc
! e389cd6f81e4734968cb855965c77ff8  gcc/testsuite/g++.dg/asan/asan_test.C
! 0fcc90e0914494e1fd2869f9e48e49da  gcc/testsuite/g++.dg/asan/asan_test.cc
  7b5f694f7ad9cbae4aab558727eaceaf  gcc/testsuite/g++.dg/asan/asan_test_config.h
! 6398e6ad4dd068bfb5be8cc034d1ade0  gcc/testsuite/g++.dg/asan/asan_test_utils.h
  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
--- 11153,11195 ----
  6881f6a907aed22e3604db9a81d71753  gcc/testsuite/g++.dg/abi/vthunk3.C
  59cdef1c2f5ac26231205b723cb9ea52  gcc/testsuite/g++.dg/abi/vtt1.C
  cb66889e261971e64a6568617bffaeaa  gcc/testsuite/g++.dg/addr_builtin-1.C
! 2f5108ed5b6b9b8c5c8dc9bf131e306f  gcc/testsuite/g++.dg/analyzer/analyzer.exp
  0918dccee8951925f7bc4640874a6cd3  gcc/testsuite/g++.dg/analyzer/cstdlib-2.C
  b1051c81ee9929eae4057f7d1ce5ecd2  gcc/testsuite/g++.dg/analyzer/cstdlib.C
+ 7951a855cc080064bcfdf98631e39a2e  gcc/testsuite/g++.dg/analyzer/ctor-dtor-1.C
+ d1eaf073a251f60143e80284bc5a504c  gcc/testsuite/g++.dg/analyzer/dyncast-1.C
  e618363917558f650a6b91cce53eb8d2  gcc/testsuite/g++.dg/analyzer/malloc.C
! 7292fd874dc6a2a17f2f505c44add678  gcc/testsuite/g++.dg/analyzer/new-1.C
! bcda06f94e400d0e9992cb49d4db7fdb  gcc/testsuite/g++.dg/analyzer/new-vs-malloc.C
! 59859cf5b46d93773ba76707d6b27904  gcc/testsuite/g++.dg/analyzer/placement-new.C
! 337663ec28ba5178e5e5832bde31b266  gcc/testsuite/g++.dg/analyzer/pr93212.C
  6730f749b069d8ed2ba525a0ff83ad2c  gcc/testsuite/g++.dg/analyzer/pr93288.C
  c12e9b1c9d4173ff464e74ea78ab647e  gcc/testsuite/g++.dg/analyzer/pr93777.C
  a2fd899038ad8292f72a6822b197251e  gcc/testsuite/g++.dg/analyzer/pr93899.C
! eaa9774dd2e5983a606c09705cc0910d  gcc/testsuite/g++.dg/analyzer/pr93950.C
! 317062e91d10f97f58ad71d672140545  gcc/testsuite/g++.dg/analyzer/pr94011.C
! c90584aac63ae727d47d415aa0a5f85b  gcc/testsuite/g++.dg/analyzer/pr94028.C
! f7fda54a6437cce3dc8394b07cfb3eeb  gcc/testsuite/g++.dg/analyzer/pr94503.C
  52afe02bc242a0578da458c6b600f7a9  gcc/testsuite/g++.dg/analyzer/pr94816.C
! 6509a360a1cfc8a35798c6570be50e53  gcc/testsuite/g++.dg/analyzer/pr95042.C
! 1f1ca76966db742950e5c41205a0e5c5  gcc/testsuite/g++.dg/analyzer/pr96641.C
! 193b3e5ec79d8a574b99f4e8d24f1371  gcc/testsuite/g++.dg/analyzer/pr96643.C
! 81f94699d318a0dddde448db3be19c82  gcc/testsuite/g++.dg/analyzer/pr96723.C
! 0e3d325deb7c52ea428d98b81934cc8f  gcc/testsuite/g++.dg/analyzer/pr96763.C
! 61469d4979998dc9ab89402985b38608  gcc/testsuite/g++.dg/analyzer/pr97116.C
! fd2e08e4f10e3ceec481fed9289f968c  gcc/testsuite/g++.dg/analyzer/pr97489.C
! db2b7f6c1be40cc086aa678eb7d66cad  gcc/testsuite/g++.dg/analyzer/pr99064.C
! b355f66bf32fab6d4e4348cbfdd707d2  gcc/testsuite/g++.dg/analyzer/vfunc-1.C
! 82fda82080a7cebe84e11c5479b8ec9c  gcc/testsuite/g++.dg/asan/asan.exp
  aaab0b483d6b43b9fb8facfcf01ac3b3  gcc/testsuite/g++.dg/asan/asan_globals_test-wrapper.cc
  58f1893fa192cc0429f68ba9628696b9  gcc/testsuite/g++.dg/asan/asan_globals_test.cc
  573f81866bae96b4c422317d9f9f630c  gcc/testsuite/g++.dg/asan/asan_mem_test.cc
  ae18505cf8bcf60c7595916e5c13ca68  gcc/testsuite/g++.dg/asan/asan_oob_test.cc
  a21e7d58f33bd86c0ccf7a0bac1f06bf  gcc/testsuite/g++.dg/asan/asan_str_test.cc
! b3ee475b9ac75657f5397ac26f2397ea  gcc/testsuite/g++.dg/asan/asan_test.C
! 2c352907f3b51c80dddf49f6527d00d3  gcc/testsuite/g++.dg/asan/asan_test.cc
  7b5f694f7ad9cbae4aab558727eaceaf  gcc/testsuite/g++.dg/asan/asan_test_config.h
! a455db6e8dc9b02d6f2c59488f513896  gcc/testsuite/g++.dg/asan/asan_test_utils.h
  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
*************** b12b848862ca9a5a126f8b4e8792dc16  gcc/te
*** 10563,10571 ****
  5f2a67fd91c75ba5a90b0d1a57e0eecf  gcc/testsuite/g++.dg/asan/function-argument-1.C
  4adc70d309d06b0a3b945fc6ae2ce74c  gcc/testsuite/g++.dg/asan/function-argument-2.C
  755ec68ccd2c79e025ea8d5f7e65347d  gcc/testsuite/g++.dg/asan/function-argument-3.C
! 6a60061a97076056217dbb01be7089e7  gcc/testsuite/g++.dg/asan/interception-failure-test-1.C
! c109f79c447a9f4bd35cac5dbc643adb  gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C
! 5ec947b9e800038195a332828bd0637b  gcc/testsuite/g++.dg/asan/interception-test-1.C
  280404310b225d80bc4ec71addcc10a9  gcc/testsuite/g++.dg/asan/large-func-test-1.C
  e472f2ce37f2b55b1358ec08717d9f08  gcc/testsuite/g++.dg/asan/pr55617.C
  74a04a20e12a8acd0fd7d05742cf8d63  gcc/testsuite/g++.dg/asan/pr62017.C
--- 11199,11208 ----
  5f2a67fd91c75ba5a90b0d1a57e0eecf  gcc/testsuite/g++.dg/asan/function-argument-1.C
  4adc70d309d06b0a3b945fc6ae2ce74c  gcc/testsuite/g++.dg/asan/function-argument-2.C
  755ec68ccd2c79e025ea8d5f7e65347d  gcc/testsuite/g++.dg/asan/function-argument-3.C
! c7018c25d3568fc8c57341e5f27c2399  gcc/testsuite/g++.dg/asan/function-argument-4.C
! 23a150302e388ceffe71037fe85813ef  gcc/testsuite/g++.dg/asan/interception-failure-test-1.C
! fb777e6427f4a224508112af8340c3d4  gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C
! 5528ec64328b52adcb592f8a39c2ea36  gcc/testsuite/g++.dg/asan/interception-test-1.C
  280404310b225d80bc4ec71addcc10a9  gcc/testsuite/g++.dg/asan/large-func-test-1.C
  e472f2ce37f2b55b1358ec08717d9f08  gcc/testsuite/g++.dg/asan/pr55617.C
  74a04a20e12a8acd0fd7d05742cf8d63  gcc/testsuite/g++.dg/asan/pr62017.C
*************** e0c61fc1ff04506222ad9ce3d489202f  gcc/te
*** 10584,10591 ****
--- 11221,11230 ----
  58d155b02b38f916700022148c84d5f5  gcc/testsuite/g++.dg/asan/pr85774.C
  76052a66ecc75316257825ff6b1b32d5  gcc/testsuite/g++.dg/asan/pr88901.C
  97920da6fda518a6cd947eb7202b69e4  gcc/testsuite/g++.dg/asan/pr90570.C
+ 56ddf6b0eef2f412cb50abd01d073ff2  gcc/testsuite/g++.dg/asan/pr95025.C
  9c6dffd9e0de8f0d2190e6988743452f  gcc/testsuite/g++.dg/asan/pr97145.C
  6157dc3bff06f9dd66065a653bb2e839  gcc/testsuite/g++.dg/asan/pr97414.C
+ e95dab53b60445ec421fcf8b99d2a7c1  gcc/testsuite/g++.dg/asan/pr99877.C
  9c127ef1a489fa3066b519905bbcd4df  gcc/testsuite/g++.dg/asan/sanitizer_pthread_wrappers.h
  ec57ce9e20b59de0ebec29f657a688f0  gcc/testsuite/g++.dg/asan/sanitizer_test_config.h
  55a37a27a50226341bc745f47d1908c5  gcc/testsuite/g++.dg/asan/sanitizer_test_utils.h
*************** e20a12eb6455f420adb919299f6e8991  gcc/te
*** 10604,10610 ****
  7876e3ae48981ffdea338e795be1efe9  gcc/testsuite/g++.dg/asm-qual-1.C
  0a7cdd480ff9677cd742fad1ef91da3a  gcc/testsuite/g++.dg/asm-qual-2.C
  d20368f5d5a6e496d867b6db2befc2af  gcc/testsuite/g++.dg/asm-qual-3.C
! 3f82172340234f6a96fec5c00f7bcbae  gcc/testsuite/g++.dg/bprob/bprob.exp
  6683eda46cb30a95dcb3ae310aa86684  gcc/testsuite/g++.dg/bprob/g++-bprob-1.C
  91292dc36de1287d9de59661dd0c8c78  gcc/testsuite/g++.dg/bprob/g++-bprob-2.C
  eb7c2ac5d3e686273e3fe6fe17a3abe4  gcc/testsuite/g++.dg/cdce3.C
--- 11243,11249 ----
  7876e3ae48981ffdea338e795be1efe9  gcc/testsuite/g++.dg/asm-qual-1.C
  0a7cdd480ff9677cd742fad1ef91da3a  gcc/testsuite/g++.dg/asm-qual-2.C
  d20368f5d5a6e496d867b6db2befc2af  gcc/testsuite/g++.dg/asm-qual-3.C
! cebc2f46fc7a60122d9b2f3bdc5fe433  gcc/testsuite/g++.dg/bprob/bprob.exp
  6683eda46cb30a95dcb3ae310aa86684  gcc/testsuite/g++.dg/bprob/g++-bprob-1.C
  91292dc36de1287d9de59661dd0c8c78  gcc/testsuite/g++.dg/bprob/g++-bprob-2.C
  eb7c2ac5d3e686273e3fe6fe17a3abe4  gcc/testsuite/g++.dg/cdce3.C
*************** bd34927c7e8ef0637a91744aa30c8e22  gcc/te
*** 10616,10622 ****
  13aa9df754ce327f35901d755310d167  gcc/testsuite/g++.dg/charset/asm5.c
  188e64ef71cd1832cf590f89eb899d5b  gcc/testsuite/g++.dg/charset/attribute1.c
  5ec905da0c5303d292f6f23f2befdd9b  gcc/testsuite/g++.dg/charset/attribute2.c
! b24fe142cc1226303cf33c6109301302  gcc/testsuite/g++.dg/charset/charset.exp
  c3f1b1efe5249f47d609a5022d321c0a  gcc/testsuite/g++.dg/charset/extern1.cc
  e00c15044b80ea8ae41ddca791f728b5  gcc/testsuite/g++.dg/charset/extern2.cc
  8c029ca8175e4d8995ea0dbac6040733  gcc/testsuite/g++.dg/charset/extern3.cc
--- 11255,11261 ----
  13aa9df754ce327f35901d755310d167  gcc/testsuite/g++.dg/charset/asm5.c
  188e64ef71cd1832cf590f89eb899d5b  gcc/testsuite/g++.dg/charset/attribute1.c
  5ec905da0c5303d292f6f23f2befdd9b  gcc/testsuite/g++.dg/charset/attribute2.c
! 7cf37485a96c8b4af089044e98aeb7df  gcc/testsuite/g++.dg/charset/charset.exp
  c3f1b1efe5249f47d609a5022d321c0a  gcc/testsuite/g++.dg/charset/extern1.cc
  e00c15044b80ea8ae41ddca791f728b5  gcc/testsuite/g++.dg/charset/extern2.cc
  8c029ca8175e4d8995ea0dbac6040733  gcc/testsuite/g++.dg/charset/extern3.cc
*************** f21dc1eb54ea34814c912bb958cc243b  gcc/te
*** 10655,10661 ****
  3e6b5a438641d0fa418b9b6b59dc9ad5  gcc/testsuite/g++.dg/compat/abi/vbase8-4_main.C
  218fc83d35fc2202ce2c23a8d88a2a0e  gcc/testsuite/g++.dg/compat/abi/vbase8-4_x.C
  ad654d45c988963d6d91e514325cd68c  gcc/testsuite/g++.dg/compat/abi/vbase8-4_y.C
! 6ea04d217d21b87cb6270731a49c10ab  gcc/testsuite/g++.dg/compat/break/README
  a1f42f9828f95c9f3dd670a142b67209  gcc/testsuite/g++.dg/compat/break/bitfield5.h
  a4f5bc9b9eeba848df2b3660451312e5  gcc/testsuite/g++.dg/compat/break/bitfield5_main.C
  34a963a4f73f5fc81a2a3c61cb1410b4  gcc/testsuite/g++.dg/compat/break/bitfield5_x.C
--- 11294,11300 ----
  3e6b5a438641d0fa418b9b6b59dc9ad5  gcc/testsuite/g++.dg/compat/abi/vbase8-4_main.C
  218fc83d35fc2202ce2c23a8d88a2a0e  gcc/testsuite/g++.dg/compat/abi/vbase8-4_x.C
  ad654d45c988963d6d91e514325cd68c  gcc/testsuite/g++.dg/compat/abi/vbase8-4_y.C
! c638e626102046775bf9a173d4a31643  gcc/testsuite/g++.dg/compat/break/README
  a1f42f9828f95c9f3dd670a142b67209  gcc/testsuite/g++.dg/compat/break/bitfield5.h
  a4f5bc9b9eeba848df2b3660451312e5  gcc/testsuite/g++.dg/compat/break/bitfield5_main.C
  34a963a4f73f5fc81a2a3c61cb1410b4  gcc/testsuite/g++.dg/compat/break/bitfield5_x.C
*************** d9e96ae25c2319373bcfd08d3028762f  gcc/te
*** 10676,10682 ****
  c066ba2e23a50eda1497704cad37719c  gcc/testsuite/g++.dg/compat/break/vbase11_main.C
  cc9fd160c8ac0d554f08ed78757c1ad7  gcc/testsuite/g++.dg/compat/break/vbase11_x.C
  3af15235a86640de95ef01c264b9a669  gcc/testsuite/g++.dg/compat/break/vbase11_y.C
! 3e6bff6590ca30834c6847a59801fc53  gcc/testsuite/g++.dg/compat/compat.exp
  d84d0fab6bdaa40e3302c2dc1bd89d10  gcc/testsuite/g++.dg/compat/decimal/compat-common.h
  5606bac1873edfc020404d944e030ebb  gcc/testsuite/g++.dg/compat/decimal/decimal-dummy.h
  3d52f6f9878705d4ff92b2d02c56e07f  gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C
--- 11315,11321 ----
  c066ba2e23a50eda1497704cad37719c  gcc/testsuite/g++.dg/compat/break/vbase11_main.C
  cc9fd160c8ac0d554f08ed78757c1ad7  gcc/testsuite/g++.dg/compat/break/vbase11_x.C
  3af15235a86640de95ef01c264b9a669  gcc/testsuite/g++.dg/compat/break/vbase11_y.C
! 934c2a66981521941125693688fb57f9  gcc/testsuite/g++.dg/compat/compat.exp
  d84d0fab6bdaa40e3302c2dc1bd89d10  gcc/testsuite/g++.dg/compat/decimal/compat-common.h
  5606bac1873edfc020404d944e030ebb  gcc/testsuite/g++.dg/compat/decimal/decimal-dummy.h
  3d52f6f9878705d4ff92b2d02c56e07f  gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C
*************** f1c6d9efd6c764f87b1c7f64adfdc065  gcc/te
*** 10737,10743 ****
  59795c3025478139a06e32e485657745  gcc/testsuite/g++.dg/compat/eh/filter1_y.C
  f858c620725c1fa9e60d5f73d3262345  gcc/testsuite/g++.dg/compat/eh/filter2_main.C
  93ea6392a008bc4ab584a68bd3d08d74  gcc/testsuite/g++.dg/compat/eh/filter2_x.C
! 66042eba77dd6fd0a616acfa398dac38  gcc/testsuite/g++.dg/compat/eh/filter2_y.C
  38e1dfdb58be8ee752ace0ded7df8d8f  gcc/testsuite/g++.dg/compat/eh/new1_main.C
  32274bdb332d4c08c3c495f8eadaffd7  gcc/testsuite/g++.dg/compat/eh/new1_x.C
  2970c9d1070c0d448813e9ba88f9c95b  gcc/testsuite/g++.dg/compat/eh/new1_y.C
--- 11376,11382 ----
  59795c3025478139a06e32e485657745  gcc/testsuite/g++.dg/compat/eh/filter1_y.C
  f858c620725c1fa9e60d5f73d3262345  gcc/testsuite/g++.dg/compat/eh/filter2_main.C
  93ea6392a008bc4ab584a68bd3d08d74  gcc/testsuite/g++.dg/compat/eh/filter2_x.C
! c8721dc9e994c0f5165ab3b47a7bacc7  gcc/testsuite/g++.dg/compat/eh/filter2_y.C
  38e1dfdb58be8ee752ace0ded7df8d8f  gcc/testsuite/g++.dg/compat/eh/new1_main.C
  32274bdb332d4c08c3c495f8eadaffd7  gcc/testsuite/g++.dg/compat/eh/new1_x.C
  2970c9d1070c0d448813e9ba88f9c95b  gcc/testsuite/g++.dg/compat/eh/new1_y.C
*************** e6954ac1ae67eacbb067ca0a7269df99  gcc/te
*** 10774,10793 ****
  7099b2ccdbe9faffb91a1279b3d9c958  gcc/testsuite/g++.dg/compat/init/init-ref2_main.C
  6599bf4c55d10d3d74d35fd52dc68f6c  gcc/testsuite/g++.dg/compat/init/init-ref2_x.C
  75bddd0f3c0ceb101b0c3111cedc4fb4  gcc/testsuite/g++.dg/compat/init/init-ref2_y.C
! 671f508f8a60b0484992d3dcf80e1dec  gcc/testsuite/g++.dg/compat/struct-layout-1.exp
  b3150d6e06b56824040f5b2dadcf18ce  gcc/testsuite/g++.dg/compat/struct-layout-1.h
! 64c18c9c891a213c1db3b2ed314f8c5e  gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c
  e615a3a6c348fc2427a919e6edad325b  gcc/testsuite/g++.dg/compat/struct-layout-1_x1.h
  7d588bff78cea94dd3152a4c181ee8c9  gcc/testsuite/g++.dg/compat/struct-layout-1_x2.h
  19ad318afa2e0f52259db40da0911c65  gcc/testsuite/g++.dg/compat/struct-layout-1_y1.h
  7dc3e674ef2752731b6cd90ebd1aeb0a  gcc/testsuite/g++.dg/compat/struct-layout-1_y2.h
  7d6e46af1d90aeac247ba7174a61e45e  gcc/testsuite/g++.dg/concepts/abbrev1.C
  bbe257fc7d17e04ac4c36e490e7b696c  gcc/testsuite/g++.dg/concepts/abbrev2.C
  89bf38264d72aa453e4c1c4701a8f567  gcc/testsuite/g++.dg/concepts/abbrev3.C
  40574d83b6e6c0a770005422615c8327  gcc/testsuite/g++.dg/concepts/abbrev5.C
  9663874f56d0631c2a09e42c9361512f  gcc/testsuite/g++.dg/concepts/abbrev6.C
  71892a5b6444f40ee5d0d9091ab65361  gcc/testsuite/g++.dg/concepts/abbrev7.C
  83ca9e0fd92b3a6de47c569615d1b14a  gcc/testsuite/g++.dg/concepts/abbrev8.C
  a54467f50f9862e2fbf96195651a862b  gcc/testsuite/g++.dg/concepts/attrib1.C
  e00adf6112b032ea6e685ae5c723e579  gcc/testsuite/g++.dg/concepts/auto1.C
  1a06f0a3072bebfa6fe8dd131f1d2335  gcc/testsuite/g++.dg/concepts/auto3.C
--- 11413,11435 ----
  7099b2ccdbe9faffb91a1279b3d9c958  gcc/testsuite/g++.dg/compat/init/init-ref2_main.C
  6599bf4c55d10d3d74d35fd52dc68f6c  gcc/testsuite/g++.dg/compat/init/init-ref2_x.C
  75bddd0f3c0ceb101b0c3111cedc4fb4  gcc/testsuite/g++.dg/compat/init/init-ref2_y.C
! dae278aacaf1421495ff012fc7f6c34e  gcc/testsuite/g++.dg/compat/struct-layout-1.exp
  b3150d6e06b56824040f5b2dadcf18ce  gcc/testsuite/g++.dg/compat/struct-layout-1.h
! 78cfce9cf8a86fdda9aa267ac227bd42  gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c
  e615a3a6c348fc2427a919e6edad325b  gcc/testsuite/g++.dg/compat/struct-layout-1_x1.h
  7d588bff78cea94dd3152a4c181ee8c9  gcc/testsuite/g++.dg/compat/struct-layout-1_x2.h
  19ad318afa2e0f52259db40da0911c65  gcc/testsuite/g++.dg/compat/struct-layout-1_y1.h
  7dc3e674ef2752731b6cd90ebd1aeb0a  gcc/testsuite/g++.dg/compat/struct-layout-1_y2.h
  7d6e46af1d90aeac247ba7174a61e45e  gcc/testsuite/g++.dg/concepts/abbrev1.C
+ e0f7c49cdfbfcaa7701a5401b95e06a0  gcc/testsuite/g++.dg/concepts/abbrev10.C
+ c73fad2099e140497cd7ca7d384222de  gcc/testsuite/g++.dg/concepts/abbrev11.C
  bbe257fc7d17e04ac4c36e490e7b696c  gcc/testsuite/g++.dg/concepts/abbrev2.C
  89bf38264d72aa453e4c1c4701a8f567  gcc/testsuite/g++.dg/concepts/abbrev3.C
  40574d83b6e6c0a770005422615c8327  gcc/testsuite/g++.dg/concepts/abbrev5.C
  9663874f56d0631c2a09e42c9361512f  gcc/testsuite/g++.dg/concepts/abbrev6.C
  71892a5b6444f40ee5d0d9091ab65361  gcc/testsuite/g++.dg/concepts/abbrev7.C
  83ca9e0fd92b3a6de47c569615d1b14a  gcc/testsuite/g++.dg/concepts/abbrev8.C
+ f77068318f53312d2455ce0a714f40df  gcc/testsuite/g++.dg/concepts/abbrev9.C
  a54467f50f9862e2fbf96195651a862b  gcc/testsuite/g++.dg/concepts/attrib1.C
  e00adf6112b032ea6e685ae5c723e579  gcc/testsuite/g++.dg/concepts/auto1.C
  1a06f0a3072bebfa6fe8dd131f1d2335  gcc/testsuite/g++.dg/concepts/auto3.C
*************** aa0c99b661698145a9cd82a85923f427  gcc/te
*** 10798,10821 ****
  7fa91a4d3cb5f95e6e26a4c7abb0e0e4  gcc/testsuite/g++.dg/concepts/debug1.C
  6998d7862b5427a03025dd3e7dffc011  gcc/testsuite/g++.dg/concepts/decl-diagnose.C
  8346c9032841f194c406529cc8ed4eb8  gcc/testsuite/g++.dg/concepts/deduction-constraint1.C
! 30cf53f963bc12ad0d7d4587aaf54795  gcc/testsuite/g++.dg/concepts/diagnostic1.C
! 8095b1755f82b0f807c784e1e874fd02  gcc/testsuite/g++.dg/concepts/diagnostic10.C
  4844c47d58b026222c294f4a7e10680c  gcc/testsuite/g++.dg/concepts/diagnostic11.C
  1a0deb127020a3e80d3a637598d66e17  gcc/testsuite/g++.dg/concepts/diagnostic12.C
! ca675f7f2eaf5268fa8f269fe885bd17  gcc/testsuite/g++.dg/concepts/diagnostic13.C
! 23ea99fcdf9285ddc5a529e855a85802  gcc/testsuite/g++.dg/concepts/diagnostic2.C
! ba493726060ecc642f6af4cc75d5fa75  gcc/testsuite/g++.dg/concepts/diagnostic3.C
! d085d03b9ae2155896eeed6f4cb6b1a9  gcc/testsuite/g++.dg/concepts/diagnostic4.C
! bbaa70d1a96703adfaaf6a4101764608  gcc/testsuite/g++.dg/concepts/diagnostic5.C
  b383f5a2190e1234282797b64ffc0dc8  gcc/testsuite/g++.dg/concepts/diagnostic6.C
  27e3f997ced26bbdf184fd5906c3a8dc  gcc/testsuite/g++.dg/concepts/diagnostic7.C
  c9d7cb8a10b8d288002e523cc80a1f58  gcc/testsuite/g++.dg/concepts/diagnostic8.C
! 8cd798d86c7b165bed797b2aa21000e1  gcc/testsuite/g++.dg/concepts/diagnostic9.C
  2b0fa9bdf385b722e568cee62a91fa4b  gcc/testsuite/g++.dg/concepts/dr1430.C
  60125e183bd40bfbd86f4bb4ff301e9d  gcc/testsuite/g++.dg/concepts/equiv.C
  bad35a69b0266b020bc955ced2b14050  gcc/testsuite/g++.dg/concepts/equiv2.C
  5035d2866ee1c240c402c7e67d6968f3  gcc/testsuite/g++.dg/concepts/expression.C
! 68d7445920b17eef554f0cc279df62c7  gcc/testsuite/g++.dg/concepts/expression2.C
  2da19a671e12ee60540bcf641442c919  gcc/testsuite/g++.dg/concepts/expression3.C
  f14e1908080965f7c87e82ab9ed5ee5b  gcc/testsuite/g++.dg/concepts/fn-concept1.C
  a015e2a869410024084e8975978f298a  gcc/testsuite/g++.dg/concepts/fn-concept2.C
--- 11440,11466 ----
  7fa91a4d3cb5f95e6e26a4c7abb0e0e4  gcc/testsuite/g++.dg/concepts/debug1.C
  6998d7862b5427a03025dd3e7dffc011  gcc/testsuite/g++.dg/concepts/decl-diagnose.C
  8346c9032841f194c406529cc8ed4eb8  gcc/testsuite/g++.dg/concepts/deduction-constraint1.C
! c43c8c0443db1da23ae2180c5b4f688d  gcc/testsuite/g++.dg/concepts/diagnostic1.C
! fc3e1038d2ddd359b5ea90ab469aed59  gcc/testsuite/g++.dg/concepts/diagnostic10.C
  4844c47d58b026222c294f4a7e10680c  gcc/testsuite/g++.dg/concepts/diagnostic11.C
  1a0deb127020a3e80d3a637598d66e17  gcc/testsuite/g++.dg/concepts/diagnostic12.C
! 9a1ebfe628af4997f538ddc008cd6440  gcc/testsuite/g++.dg/concepts/diagnostic13.C
! 21ef60ea1c10078f9a73502249868868  gcc/testsuite/g++.dg/concepts/diagnostic14.C
! 513ed21afc6e2fbd849f7323535b309c  gcc/testsuite/g++.dg/concepts/diagnostic15.C
! 27a7858fa5861377320c52cf05cca000  gcc/testsuite/g++.dg/concepts/diagnostic16.C
! d352f75f268eea6c2a42ba0bacd702bd  gcc/testsuite/g++.dg/concepts/diagnostic2.C
! 43b3f3ef79f7a8577a5888a9d29002eb  gcc/testsuite/g++.dg/concepts/diagnostic3.C
! 16b69c7102110cf6646baa3518c9f7f6  gcc/testsuite/g++.dg/concepts/diagnostic4.C
! f7fdf5e1ceaf1a59cf71d50d58950a1e  gcc/testsuite/g++.dg/concepts/diagnostic5.C
  b383f5a2190e1234282797b64ffc0dc8  gcc/testsuite/g++.dg/concepts/diagnostic6.C
  27e3f997ced26bbdf184fd5906c3a8dc  gcc/testsuite/g++.dg/concepts/diagnostic7.C
  c9d7cb8a10b8d288002e523cc80a1f58  gcc/testsuite/g++.dg/concepts/diagnostic8.C
! d44301076a2b5c1b6d67f8097ebccdc3  gcc/testsuite/g++.dg/concepts/diagnostic9.C
  2b0fa9bdf385b722e568cee62a91fa4b  gcc/testsuite/g++.dg/concepts/dr1430.C
  60125e183bd40bfbd86f4bb4ff301e9d  gcc/testsuite/g++.dg/concepts/equiv.C
  bad35a69b0266b020bc955ced2b14050  gcc/testsuite/g++.dg/concepts/equiv2.C
  5035d2866ee1c240c402c7e67d6968f3  gcc/testsuite/g++.dg/concepts/expression.C
! 9fe31807d4c7abdadc0b3bfa1b68cea5  gcc/testsuite/g++.dg/concepts/expression2.C
  2da19a671e12ee60540bcf641442c919  gcc/testsuite/g++.dg/concepts/expression3.C
  f14e1908080965f7c87e82ab9ed5ee5b  gcc/testsuite/g++.dg/concepts/fn-concept1.C
  a015e2a869410024084e8975978f298a  gcc/testsuite/g++.dg/concepts/fn-concept2.C
*************** a015e2a869410024084e8975978f298a  gcc/te
*** 10826,10832 ****
  4dd03402749878866e4f5d94da8e75e3  gcc/testsuite/g++.dg/concepts/fn2.C
  cc7500226000e3e87e2736cc200d4c7c  gcc/testsuite/g++.dg/concepts/fn3.C
  cc1601b7716f484ee7c5f82116543bae  gcc/testsuite/g++.dg/concepts/fn4.C
! 7ecc65e89c25136d8b1c42b54d80e050  gcc/testsuite/g++.dg/concepts/fn5.C
  55899286db3b427fd2fd1770035fbe28  gcc/testsuite/g++.dg/concepts/fn6.C
  98535529d421332d371f71209699354e  gcc/testsuite/g++.dg/concepts/fn7.C
  a26b2070428e3acfa5b0c970a4be2807  gcc/testsuite/g++.dg/concepts/fn8.C
--- 11471,11477 ----
  4dd03402749878866e4f5d94da8e75e3  gcc/testsuite/g++.dg/concepts/fn2.C
  cc7500226000e3e87e2736cc200d4c7c  gcc/testsuite/g++.dg/concepts/fn3.C
  cc1601b7716f484ee7c5f82116543bae  gcc/testsuite/g++.dg/concepts/fn4.C
! be6a162428e71f50ff28282a1dca5de1  gcc/testsuite/g++.dg/concepts/fn5.C
  55899286db3b427fd2fd1770035fbe28  gcc/testsuite/g++.dg/concepts/fn6.C
  98535529d421332d371f71209699354e  gcc/testsuite/g++.dg/concepts/fn7.C
  a26b2070428e3acfa5b0c970a4be2807  gcc/testsuite/g++.dg/concepts/fn8.C
*************** c178953ecb918aa200a7f0f03bf09981  gcc/te
*** 10842,10856 ****
  3cc2b02e26adc4e9633a91f5f4d23c70  gcc/testsuite/g++.dg/concepts/intro5.C
  89851cc1d5282540ddd5b7c363c09182  gcc/testsuite/g++.dg/concepts/intro6.C
  aa49aa9c949ab002547d4de60b75a2a2  gcc/testsuite/g++.dg/concepts/intro7.C
  b87f17cf2a26b3aae11c5af4b7a7a31d  gcc/testsuite/g++.dg/concepts/locations1.C
  8167dac3599949519b5c414584b01961  gcc/testsuite/g++.dg/concepts/no-bool1.C
  99fa25ca7339fc5649a04c6d92dbeb51  gcc/testsuite/g++.dg/concepts/partial-concept-id1.C
  5c91e2d6a8320f7acb83e659f98eb31f  gcc/testsuite/g++.dg/concepts/partial-concept-id2.C
  32c0dae64f1cc7aa540683e2f77ecad8  gcc/testsuite/g++.dg/concepts/partial-spec5.C
  575947e3e4749ae08aa2015744969cb7  gcc/testsuite/g++.dg/concepts/placeholder2.C
  cb637c31f7267e6cb6c02a89a06fecf0  gcc/testsuite/g++.dg/concepts/placeholder3.C
  79b01ce4c0ddc29b29698e41deb18cda  gcc/testsuite/g++.dg/concepts/placeholder4.C
! df6b9790772106cf6b4000ea3f4e6df7  gcc/testsuite/g++.dg/concepts/placeholder5.C
  a3041d3b0ddd1e4e139656fef2568888  gcc/testsuite/g++.dg/concepts/placeholder6.C
  bff91be12faf541761b92b8a7ac5de0f  gcc/testsuite/g++.dg/concepts/pr65634.C
  e1b13bd2e7e5b547138d71c7e88ff143  gcc/testsuite/g++.dg/concepts/pr65636.C
--- 11487,11503 ----
  3cc2b02e26adc4e9633a91f5f4d23c70  gcc/testsuite/g++.dg/concepts/intro5.C
  89851cc1d5282540ddd5b7c363c09182  gcc/testsuite/g++.dg/concepts/intro6.C
  aa49aa9c949ab002547d4de60b75a2a2  gcc/testsuite/g++.dg/concepts/intro7.C
+ 29af9c990e1fe56208ba66e5fbe5e9f1  gcc/testsuite/g++.dg/concepts/local-extern.C
  b87f17cf2a26b3aae11c5af4b7a7a31d  gcc/testsuite/g++.dg/concepts/locations1.C
  8167dac3599949519b5c414584b01961  gcc/testsuite/g++.dg/concepts/no-bool1.C
+ a0d717a73a9e41d16aea89209cfa3945  gcc/testsuite/g++.dg/concepts/pack-1.C
  99fa25ca7339fc5649a04c6d92dbeb51  gcc/testsuite/g++.dg/concepts/partial-concept-id1.C
  5c91e2d6a8320f7acb83e659f98eb31f  gcc/testsuite/g++.dg/concepts/partial-concept-id2.C
  32c0dae64f1cc7aa540683e2f77ecad8  gcc/testsuite/g++.dg/concepts/partial-spec5.C
  575947e3e4749ae08aa2015744969cb7  gcc/testsuite/g++.dg/concepts/placeholder2.C
  cb637c31f7267e6cb6c02a89a06fecf0  gcc/testsuite/g++.dg/concepts/placeholder3.C
  79b01ce4c0ddc29b29698e41deb18cda  gcc/testsuite/g++.dg/concepts/placeholder4.C
! c6b1dbd7752014fd21d59c3495671ca9  gcc/testsuite/g++.dg/concepts/placeholder5.C
  a3041d3b0ddd1e4e139656fef2568888  gcc/testsuite/g++.dg/concepts/placeholder6.C
  bff91be12faf541761b92b8a7ac5de0f  gcc/testsuite/g++.dg/concepts/pr65634.C
  e1b13bd2e7e5b547138d71c7e88ff143  gcc/testsuite/g++.dg/concepts/pr65636.C
*************** c793a07aee900824ca395d9ccff6ee08  gcc/te
*** 10858,10864 ****
  76e72c4c67a6783304ed40aa1d086f52  gcc/testsuite/g++.dg/concepts/pr65848.C
  20df532acfc2d4b7d650ec7dfa5ad3a4  gcc/testsuite/g++.dg/concepts/pr67249.C
  fe07e4925bae0dcfe3312c31c956ea94  gcc/testsuite/g++.dg/concepts/pr67544.C
! 476bc5bbed2ea2bfb16666545c112304  gcc/testsuite/g++.dg/concepts/pr67595.C
  362815b654ac87fabacd65452bb918af  gcc/testsuite/g++.dg/concepts/pr67655.C
  6b93c9bfdaa98cfad9237a7e53a8916a  gcc/testsuite/g++.dg/concepts/pr67656.C
  938a9ea93b681cf74f4086e88a80408c  gcc/testsuite/g++.dg/concepts/pr68434.C
--- 11505,11511 ----
  76e72c4c67a6783304ed40aa1d086f52  gcc/testsuite/g++.dg/concepts/pr65848.C
  20df532acfc2d4b7d650ec7dfa5ad3a4  gcc/testsuite/g++.dg/concepts/pr67249.C
  fe07e4925bae0dcfe3312c31c956ea94  gcc/testsuite/g++.dg/concepts/pr67544.C
! 7d27b24ac23ab02a1d7fb495d15a14b4  gcc/testsuite/g++.dg/concepts/pr67595.C
  362815b654ac87fabacd65452bb918af  gcc/testsuite/g++.dg/concepts/pr67655.C
  6b93c9bfdaa98cfad9237a7e53a8916a  gcc/testsuite/g++.dg/concepts/pr67656.C
  938a9ea93b681cf74f4086e88a80408c  gcc/testsuite/g++.dg/concepts/pr68434.C
*************** fa61e3c373fcba452c87c1104eb24869  gcc/te
*** 10879,10885 ****
  98aa97d685d33746362a4796779451ff  gcc/testsuite/g++.dg/concepts/pr92804-2.C
  04a8f3f636785ef43666611471409399  gcc/testsuite/g++.dg/concepts/pr93729.C
  a0d717a73a9e41d16aea89209cfa3945  gcc/testsuite/g++.dg/concepts/pr93933.C
! 7a0477eb036739c0c97b917a8eb16ff7  gcc/testsuite/g++.dg/concepts/pr94252.C
  133bd1f7fbfc0df42c679d0cefe16434  gcc/testsuite/g++.dg/concepts/pr94827.C
  42fd858d044be8a33f514fa6649f23a7  gcc/testsuite/g++.dg/concepts/pr95181-2.C
  e68480b7ad09bc8b28b4647c839fdc1c  gcc/testsuite/g++.dg/concepts/pr95181.C
--- 11526,11532 ----
  98aa97d685d33746362a4796779451ff  gcc/testsuite/g++.dg/concepts/pr92804-2.C
  04a8f3f636785ef43666611471409399  gcc/testsuite/g++.dg/concepts/pr93729.C
  a0d717a73a9e41d16aea89209cfa3945  gcc/testsuite/g++.dg/concepts/pr93933.C
! c30679471840f9e089d6a23a33648b3e  gcc/testsuite/g++.dg/concepts/pr94252.C
  133bd1f7fbfc0df42c679d0cefe16434  gcc/testsuite/g++.dg/concepts/pr94827.C
  42fd858d044be8a33f514fa6649f23a7  gcc/testsuite/g++.dg/concepts/pr95181-2.C
  e68480b7ad09bc8b28b4647c839fdc1c  gcc/testsuite/g++.dg/concepts/pr95181.C
*************** b3506f6da49052d7a7e20089f99f17b7  gcc/te
*** 10959,10965 ****
  9b3ae1f3e79f50fca27a3e00a91d2baa  gcc/testsuite/g++.dg/conversion/pr16333.C
  519c18e7a304cfef222dd6fb78722c0d  gcc/testsuite/g++.dg/conversion/pr41426.C
  57621b2c950d1c44fdcadc7ab14ae9ac  gcc/testsuite/g++.dg/conversion/pr59879.C
! 8b2bb99143f24d50ba196f502ccab927  gcc/testsuite/g++.dg/conversion/pr66211.C
  e6b7c453fcfdf5af281f4aa01491a4be  gcc/testsuite/g++.dg/conversion/pr66895.C
  23830a13c326c99bae67e56e30ebc0b4  gcc/testsuite/g++.dg/conversion/ptrmem1.C
  669a0fc3874954d521630e2f2403b12c  gcc/testsuite/g++.dg/conversion/ptrmem2.C
--- 11606,11612 ----
  9b3ae1f3e79f50fca27a3e00a91d2baa  gcc/testsuite/g++.dg/conversion/pr16333.C
  519c18e7a304cfef222dd6fb78722c0d  gcc/testsuite/g++.dg/conversion/pr41426.C
  57621b2c950d1c44fdcadc7ab14ae9ac  gcc/testsuite/g++.dg/conversion/pr59879.C
! 7c2baf81a4424b9894f9edf958000455  gcc/testsuite/g++.dg/conversion/pr66211.C
  e6b7c453fcfdf5af281f4aa01491a4be  gcc/testsuite/g++.dg/conversion/pr66895.C
  23830a13c326c99bae67e56e30ebc0b4  gcc/testsuite/g++.dg/conversion/ptrmem1.C
  669a0fc3874954d521630e2f2403b12c  gcc/testsuite/g++.dg/conversion/ptrmem2.C
*************** a647e8fcab9b54f8fc6ba62e8b48ef4a  gcc/te
*** 10973,10984 ****
--- 11620,11633 ----
  22a29b13e567e331e66cb8d722f343ec  gcc/testsuite/g++.dg/conversion/qual1.C
  ca578f19b2d380be0549cc9c2f904f2e  gcc/testsuite/g++.dg/conversion/qual2.C
  d8a86369c88b1e698b51da5f95da9c9b  gcc/testsuite/g++.dg/conversion/qual3.C
+ eb243a0f27cded7003b7b6eecd96f5d2  gcc/testsuite/g++.dg/conversion/real-to-int1.C
  53724dc0cd699d864fc77299b7051204  gcc/testsuite/g++.dg/conversion/ref1.C
  af773a52f134a886314eae7065bee26e  gcc/testsuite/g++.dg/conversion/ref2.C
  b80ab713758c51e69280fe2ae2dee7c9  gcc/testsuite/g++.dg/conversion/ref3.C
  407bbe8b3c959a948fc7df986c991e76  gcc/testsuite/g++.dg/conversion/ref4.C
  ec278d0c2a69cb842dbe397a2f7cd1da  gcc/testsuite/g++.dg/conversion/ref5.C
  7694270a112c0852442331463edd46d7  gcc/testsuite/g++.dg/conversion/ref6.C
+ 29aabecbfa0b52f6dea2d926d1985528  gcc/testsuite/g++.dg/conversion/ref7.C
  6e5e81ebfb94f64d88135e578c526065  gcc/testsuite/g++.dg/conversion/reinterpret1.C
  da446c68ad3e26a27f1f02cfb80bb439  gcc/testsuite/g++.dg/conversion/reinterpret2.C
  f267cf08380163dcddb564b0eaf39749  gcc/testsuite/g++.dg/conversion/reinterpret3.C
*************** ff4276300b4842eb3dd7e602a1cca38b  gcc/te
*** 11013,11019 ****
  a8b153bbc8ce941d24c7c0e6ab6c5831  gcc/testsuite/g++.dg/coroutines/co-return-syntax-07-vararg.C
  01b708a2c3de35e1c4714ed8e4223ac4  gcc/testsuite/g++.dg/coroutines/co-return-syntax-08-bad-return.C
  3583594a4a80757f5d4368c8d77a858c  gcc/testsuite/g++.dg/coroutines/co-return-syntax-09-lambda-auto.C
! a2ab97f31987c6efd53efa959d69c3cb  gcc/testsuite/g++.dg/coroutines/co-return-syntax-10-movable.C
  85e7e0815826bd828101765c5fd78a66  gcc/testsuite/g++.dg/coroutines/co-return-warning-1.C
  aa517ad92377039530de5c9dc496beda  gcc/testsuite/g++.dg/coroutines/co-yield-syntax-00-needs-expr.C
  5e7fab059a6acab2c92b4dbc895ee573  gcc/testsuite/g++.dg/coroutines/co-yield-syntax-01-outside-fn.C
--- 11662,11668 ----
  a8b153bbc8ce941d24c7c0e6ab6c5831  gcc/testsuite/g++.dg/coroutines/co-return-syntax-07-vararg.C
  01b708a2c3de35e1c4714ed8e4223ac4  gcc/testsuite/g++.dg/coroutines/co-return-syntax-08-bad-return.C
  3583594a4a80757f5d4368c8d77a858c  gcc/testsuite/g++.dg/coroutines/co-return-syntax-09-lambda-auto.C
! 6707f9fc8aacf660ae1beb8d09e4c119  gcc/testsuite/g++.dg/coroutines/co-return-syntax-10-movable.C
  85e7e0815826bd828101765c5fd78a66  gcc/testsuite/g++.dg/coroutines/co-return-warning-1.C
  aa517ad92377039530de5c9dc496beda  gcc/testsuite/g++.dg/coroutines/co-yield-syntax-00-needs-expr.C
  5e7fab059a6acab2c92b4dbc895ee573  gcc/testsuite/g++.dg/coroutines/co-yield-syntax-01-outside-fn.C
*************** bdf425a510ce924668a7bcbca275f7d7  gcc/te
*** 11045,11056 ****
  bd0ea3710f987fa8b866de1dda671af6  gcc/testsuite/g++.dg/coroutines/coro-missing-ueh-3.C
  1e8c7244ef18cce6ae04d3ba82a340a4  gcc/testsuite/g++.dg/coroutines/coro-missing-ueh.h
  8bb9a557eebbfb2add0de2e6f7f82a62  gcc/testsuite/g++.dg/coroutines/coro-pre-proc.C
! 1d70f12cf58a9dfd8bdb128ab7657e17  gcc/testsuite/g++.dg/coroutines/coro.h
  cb41fef7448625fa4e0c8fd96e24fc4d  gcc/testsuite/g++.dg/coroutines/coro1-allocators.h
  478574fcd282b18447d13478fa0bec3f  gcc/testsuite/g++.dg/coroutines/coro1-missing-await-method.C
  6f5627b19b794cfdd383607165c8ad4e  gcc/testsuite/g++.dg/coroutines/coro1-refs-and-ctors.h
  6487c0454968e62ff493f215450a35cc  gcc/testsuite/g++.dg/coroutines/coro1-ret-int-yield-int.h
! 717fc21c526305fc294a1c2108d5c4fc  gcc/testsuite/g++.dg/coroutines/coroutines.exp
  cbb42d13b1660a8eb1d40a3d88308140  gcc/testsuite/g++.dg/coroutines/pr93458-1-missing-traits.C
  d9151fc224e4913ed7ffacd748769917  gcc/testsuite/g++.dg/coroutines/pr93458-2-bad-traits.C
  e9b715cb41c54f5b179b4725b788e338  gcc/testsuite/g++.dg/coroutines/pr93458-3-missing-handle.C
--- 11694,11705 ----
  bd0ea3710f987fa8b866de1dda671af6  gcc/testsuite/g++.dg/coroutines/coro-missing-ueh-3.C
  1e8c7244ef18cce6ae04d3ba82a340a4  gcc/testsuite/g++.dg/coroutines/coro-missing-ueh.h
  8bb9a557eebbfb2add0de2e6f7f82a62  gcc/testsuite/g++.dg/coroutines/coro-pre-proc.C
! 10f071e3371232e29f491fa03b59105a  gcc/testsuite/g++.dg/coroutines/coro.h
  cb41fef7448625fa4e0c8fd96e24fc4d  gcc/testsuite/g++.dg/coroutines/coro1-allocators.h
  478574fcd282b18447d13478fa0bec3f  gcc/testsuite/g++.dg/coroutines/coro1-missing-await-method.C
  6f5627b19b794cfdd383607165c8ad4e  gcc/testsuite/g++.dg/coroutines/coro1-refs-and-ctors.h
  6487c0454968e62ff493f215450a35cc  gcc/testsuite/g++.dg/coroutines/coro1-ret-int-yield-int.h
! 0338cdb719c46fedef7227899cb0ad47  gcc/testsuite/g++.dg/coroutines/coroutines.exp
  cbb42d13b1660a8eb1d40a3d88308140  gcc/testsuite/g++.dg/coroutines/pr93458-1-missing-traits.C
  d9151fc224e4913ed7ffacd748769917  gcc/testsuite/g++.dg/coroutines/pr93458-2-bad-traits.C
  e9b715cb41c54f5b179b4725b788e338  gcc/testsuite/g++.dg/coroutines/pr93458-3-missing-handle.C
*************** f41f630eebfc858cbd9471df42c4a56a  gcc/te
*** 11070,11076 ****
  9d01ddcc0b1513ede783b802cb9b0351  gcc/testsuite/g++.dg/coroutines/pr95345.C
  8bf205f696ed7639e65915dc4a69b1e6  gcc/testsuite/g++.dg/coroutines/pr95346.C
  5f7f99cdffd231c601cf3a57331ecac7  gcc/testsuite/g++.dg/coroutines/pr95350.C
! 613fabc2b581a4b24f46b9c5790e1733  gcc/testsuite/g++.dg/coroutines/pr95440.C
  05100d20f9b9853bd56ead602feb1718  gcc/testsuite/g++.dg/coroutines/pr95477.C
  ad31826ccc407ca77f13ccedabe598c9  gcc/testsuite/g++.dg/coroutines/pr95505.C
  d7c4d12326724992c8854e0b38126068  gcc/testsuite/g++.dg/coroutines/pr95518.C
--- 11719,11725 ----
  9d01ddcc0b1513ede783b802cb9b0351  gcc/testsuite/g++.dg/coroutines/pr95345.C
  8bf205f696ed7639e65915dc4a69b1e6  gcc/testsuite/g++.dg/coroutines/pr95346.C
  5f7f99cdffd231c601cf3a57331ecac7  gcc/testsuite/g++.dg/coroutines/pr95350.C
! ee1e9ba3bc8622e1fe7548c1e6368ec6  gcc/testsuite/g++.dg/coroutines/pr95440.C
  05100d20f9b9853bd56ead602feb1718  gcc/testsuite/g++.dg/coroutines/pr95477.C
  ad31826ccc407ca77f13ccedabe598c9  gcc/testsuite/g++.dg/coroutines/pr95505.C
  d7c4d12326724992c8854e0b38126068  gcc/testsuite/g++.dg/coroutines/pr95518.C
*************** d8ffc7c1c2fcbfd4c0bb050517731ff9  gcc/te
*** 11088,11100 ****
  6d0115907d0cc08584303902e33744a6  gcc/testsuite/g++.dg/coroutines/pr95616-6.C
  4e6b40bbd7b9ffb020740b0b4b48256b  gcc/testsuite/g++.dg/coroutines/pr95711.C
  da3e043a65035766965e80d23c99bf52  gcc/testsuite/g++.dg/coroutines/pr95736.C
! b9a4b958153e8961fe51aff06850871d  gcc/testsuite/g++.dg/coroutines/pr95813.C
  b221a446db70accee39ff0c2783ab71c  gcc/testsuite/g++.dg/coroutines/pr95822.C
  71e3db62fe8c830866c66122ae3a0b56  gcc/testsuite/g++.dg/coroutines/pr95823.C
  f3711dab25fac8bb7802f39735ea954d  gcc/testsuite/g++.dg/coroutines/pr95824.C
  03aa07b826568c4887ee864d32462f71  gcc/testsuite/g++.dg/coroutines/pr96251.C
  09ad0ccdf1203d227f2f6da85d74297c  gcc/testsuite/g++.dg/coroutines/pr96749-1.C
! 3d20b72ac7ae9d1f9c21f6eb6fb34484  gcc/testsuite/g++.dg/coroutines/pr96749-2.C
  0dd229753914401c8af3e84d3934dbfc  gcc/testsuite/g++.dg/coroutines/pr97438.C
  7f93d96e5cf64c45c34eb259e9bb9c11  gcc/testsuite/g++.dg/coroutines/pr97587.C
  f095b3e5361e6b39aaa76b256225bae8  gcc/testsuite/g++.dg/coroutines/pr98118.C
--- 11737,11749 ----
  6d0115907d0cc08584303902e33744a6  gcc/testsuite/g++.dg/coroutines/pr95616-6.C
  4e6b40bbd7b9ffb020740b0b4b48256b  gcc/testsuite/g++.dg/coroutines/pr95711.C
  da3e043a65035766965e80d23c99bf52  gcc/testsuite/g++.dg/coroutines/pr95736.C
! e3b448ff619930645332a6a1bf5b3da2  gcc/testsuite/g++.dg/coroutines/pr95813.C
  b221a446db70accee39ff0c2783ab71c  gcc/testsuite/g++.dg/coroutines/pr95822.C
  71e3db62fe8c830866c66122ae3a0b56  gcc/testsuite/g++.dg/coroutines/pr95823.C
  f3711dab25fac8bb7802f39735ea954d  gcc/testsuite/g++.dg/coroutines/pr95824.C
  03aa07b826568c4887ee864d32462f71  gcc/testsuite/g++.dg/coroutines/pr96251.C
  09ad0ccdf1203d227f2f6da85d74297c  gcc/testsuite/g++.dg/coroutines/pr96749-1.C
! c9053b02ff32311dfd9d7b646bb29551  gcc/testsuite/g++.dg/coroutines/pr96749-2.C
  0dd229753914401c8af3e84d3934dbfc  gcc/testsuite/g++.dg/coroutines/pr97438.C
  7f93d96e5cf64c45c34eb259e9bb9c11  gcc/testsuite/g++.dg/coroutines/pr97587.C
  f095b3e5361e6b39aaa76b256225bae8  gcc/testsuite/g++.dg/coroutines/pr98118.C
*************** deb6cb3161ca7aaacc743984b6723181  gcc/te
*** 11273,11278 ****
--- 11922,11928 ----
  71433a4f3fa9f224a79ae109bcf47fe5  gcc/testsuite/g++.dg/cpp0x/Wnarrowing15.C
  b128409123afa20f665fe2d5e291048c  gcc/testsuite/g++.dg/cpp0x/Wnarrowing16.C
  58eec29aef8f1d51c0570f6246dea0bd  gcc/testsuite/g++.dg/cpp0x/Wnarrowing17.C
+ 378c161f7f4fe5f6220dceedd8380af8  gcc/testsuite/g++.dg/cpp0x/Wnarrowing18.C
  24c57c9d07145952c5515888f1ebb983  gcc/testsuite/g++.dg/cpp0x/Wnarrowing2.C
  74bb2cd707774dcc79b45b939b21d2a8  gcc/testsuite/g++.dg/cpp0x/Wnarrowing3.C
  98f5997ac53fff61b85f99bfe358a506  gcc/testsuite/g++.dg/cpp0x/Wnarrowing4.C
*************** c3c8c909d55a85cee2df782b68266997  gcc/te
*** 11287,11301 ****
  9ef1f4b39f40753d0d1a24c7162f8a44  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move4.C
  aba8379d171d780d658e34f3d05b5e75  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move5.C
  debcb24c519f8e6b34f023322cfa298d  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move6.C
! f15c5b4ad07fec10f24a5a1d2084529a  gcc/testsuite/g++.dg/cpp0x/Wredundant-move1.C
  9152f7fa178c6fded32bb7225ef99aed  gcc/testsuite/g++.dg/cpp0x/Wredundant-move2.C
  92e755ee27a0ccd4a822b92823809fd7  gcc/testsuite/g++.dg/cpp0x/Wredundant-move3.C
  f484fdd6adea6e43439c02b25b4c9558  gcc/testsuite/g++.dg/cpp0x/Wredundant-move4.C
  afacfc74d8c3f71a144b740a8aa04f04  gcc/testsuite/g++.dg/cpp0x/Wredundant-move5.C
  3f9c37b20518d9a4f69786b1e555218f  gcc/testsuite/g++.dg/cpp0x/Wredundant-move6.C
! b5de7908b14806ee1e366edcfab4c1c3  gcc/testsuite/g++.dg/cpp0x/Wredundant-move7.C
  31bdf6319be7f7f87074649fe3f2c238  gcc/testsuite/g++.dg/cpp0x/Wredundant-move8.C
! 023f4f6ea4e0ea334b7937d78ef38016  gcc/testsuite/g++.dg/cpp0x/Wredundant-move9.C
  6ae3451e0c7b222e73c985a0c76a4253  gcc/testsuite/g++.dg/cpp0x/Wunused-parm.C
  c28cdde196a3db6b64575b3ff628c1c2  gcc/testsuite/g++.dg/cpp0x/Wunused-value1.C
  55786f3aa688ed102bd0cfac7a240204  gcc/testsuite/g++.dg/cpp0x/Wunused-variable-1.C
--- 11937,11951 ----
  9ef1f4b39f40753d0d1a24c7162f8a44  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move4.C
  aba8379d171d780d658e34f3d05b5e75  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move5.C
  debcb24c519f8e6b34f023322cfa298d  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move6.C
! ea96308ea8a97f5c0656090eccbc9858  gcc/testsuite/g++.dg/cpp0x/Wredundant-move1.C
  9152f7fa178c6fded32bb7225ef99aed  gcc/testsuite/g++.dg/cpp0x/Wredundant-move2.C
  92e755ee27a0ccd4a822b92823809fd7  gcc/testsuite/g++.dg/cpp0x/Wredundant-move3.C
  f484fdd6adea6e43439c02b25b4c9558  gcc/testsuite/g++.dg/cpp0x/Wredundant-move4.C
  afacfc74d8c3f71a144b740a8aa04f04  gcc/testsuite/g++.dg/cpp0x/Wredundant-move5.C
  3f9c37b20518d9a4f69786b1e555218f  gcc/testsuite/g++.dg/cpp0x/Wredundant-move6.C
! 92920804c1723ba0b6e6aea95fbf80c4  gcc/testsuite/g++.dg/cpp0x/Wredundant-move7.C
  31bdf6319be7f7f87074649fe3f2c238  gcc/testsuite/g++.dg/cpp0x/Wredundant-move8.C
! d395cfb34ebd994ce1bbfbc41826b8a1  gcc/testsuite/g++.dg/cpp0x/Wredundant-move9.C
  6ae3451e0c7b222e73c985a0c76a4253  gcc/testsuite/g++.dg/cpp0x/Wunused-parm.C
  c28cdde196a3db6b64575b3ff628c1c2  gcc/testsuite/g++.dg/cpp0x/Wunused-value1.C
  55786f3aa688ed102bd0cfac7a240204  gcc/testsuite/g++.dg/cpp0x/Wunused-variable-1.C
*************** ae3a00e426b12806ada699df6be4f347  gcc/te
*** 11381,11386 ****
--- 12031,12037 ----
  5e9fb88ddf17555fecef35f85f811100  gcc/testsuite/g++.dg/cpp0x/alias-decl-68.C
  e227fd117edd6417d4721f5cf77d96ca  gcc/testsuite/g++.dg/cpp0x/alias-decl-69.C
  816dbf372a71890f9515376534ec312b  gcc/testsuite/g++.dg/cpp0x/alias-decl-7.C
+ 2b6a57b666b21c32c78675b73c3c2d86  gcc/testsuite/g++.dg/cpp0x/alias-decl-70.C
  77aa48fcd9f9b9ffab08fa7ebc5d52e2  gcc/testsuite/g++.dg/cpp0x/alias-decl-8.C
  0fea677a266ad89646463d41e4df0566  gcc/testsuite/g++.dg/cpp0x/alias-decl-80296.C
  2b0ac9ee7e77902ee76b92dfbfcc37b3  gcc/testsuite/g++.dg/cpp0x/alias-decl-9.C
*************** c194f48c0c5ddd81f4151d3104e6eaa4  gcc/te
*** 11388,11401 ****
  0c857f35d307877fbdc35abb07bb117c  gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286.C
  e2071d46036912555df15661828c4105  gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286a.C
  ef369c9d8dbd4b3ba5c764f92fc53a46  gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286b.C
! 4579dafea4a6c084d33527587a75c260  gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1558.C
  830a80101d211b99c4fce4c743aa6771  gcc/testsuite/g++.dg/cpp0x/alias-decl-enum-1.C
  42802675fdf183e36c26b59ce2188fbd  gcc/testsuite/g++.dg/cpp0x/alias-decl-pmf1.C
  276db5de570a4b8f2cfb42b6fc5b0a0b  gcc/testsuite/g++.dg/cpp0x/alias-decl-pr92206-1.C
  2a4fbf633a4b91c09573d05167888906  gcc/testsuite/g++.dg/cpp0x/alias-decl-pr92206-2.C
  211b1bb1a33b29cff03e25acefb6f840  gcc/testsuite/g++.dg/cpp0x/alias-decl-pr92206-3.C
  40651f96c24fbc6da71f67630650ea18  gcc/testsuite/g++.dg/cpp0x/alias-decl-pr92206-4.C
  2828cf381230838bedb15702c2b763f2  gcc/testsuite/g++.dg/cpp0x/alias-decl-pr96805.C
  3160c52a8ac131b03192a1bc86ef7a35  gcc/testsuite/g++.dg/cpp0x/alignas1.C
  4866e3b93b878ee0244a039b009071ca  gcc/testsuite/g++.dg/cpp0x/alignas10.C
  cda964826837ac50113537351c4b8f2b  gcc/testsuite/g++.dg/cpp0x/alignas11.C
--- 12039,12055 ----
  0c857f35d307877fbdc35abb07bb117c  gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286.C
  e2071d46036912555df15661828c4105  gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286a.C
  ef369c9d8dbd4b3ba5c764f92fc53a46  gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286b.C
! cc6f68db48a7d48195916001cb0b7b64  gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1558.C
  830a80101d211b99c4fce4c743aa6771  gcc/testsuite/g++.dg/cpp0x/alias-decl-enum-1.C
+ 0b019bac5dcafdd642abe83896a7483d  gcc/testsuite/g++.dg/cpp0x/alias-decl-equiv1.C
  42802675fdf183e36c26b59ce2188fbd  gcc/testsuite/g++.dg/cpp0x/alias-decl-pmf1.C
  276db5de570a4b8f2cfb42b6fc5b0a0b  gcc/testsuite/g++.dg/cpp0x/alias-decl-pr92206-1.C
  2a4fbf633a4b91c09573d05167888906  gcc/testsuite/g++.dg/cpp0x/alias-decl-pr92206-2.C
  211b1bb1a33b29cff03e25acefb6f840  gcc/testsuite/g++.dg/cpp0x/alias-decl-pr92206-3.C
  40651f96c24fbc6da71f67630650ea18  gcc/testsuite/g++.dg/cpp0x/alias-decl-pr92206-4.C
  2828cf381230838bedb15702c2b763f2  gcc/testsuite/g++.dg/cpp0x/alias-decl-pr96805.C
+ 615df70052d63b7ad5ab632bb7f1f346  gcc/testsuite/g++.dg/cpp0x/alias-decl-targ1.C
+ f5ed750984341c509996395f9c245964  gcc/testsuite/g++.dg/cpp0x/alias-decl-variadic1.C
  3160c52a8ac131b03192a1bc86ef7a35  gcc/testsuite/g++.dg/cpp0x/alignas1.C
  4866e3b93b878ee0244a039b009071ca  gcc/testsuite/g++.dg/cpp0x/alignas10.C
  cda964826837ac50113537351c4b8f2b  gcc/testsuite/g++.dg/cpp0x/alignas11.C
*************** ff12be74ca1ae28c77d541ad1dc53873  gcc/te
*** 11406,11411 ****
--- 12060,12066 ----
  6b919a388a7f6ff57c7976486c409fb7  gcc/testsuite/g++.dg/cpp0x/alignas16.C
  d9734e67258a1ae418f1c09c99e52585  gcc/testsuite/g++.dg/cpp0x/alignas17.C
  5c210fde91e5e95aefb4df1c7ace2980  gcc/testsuite/g++.dg/cpp0x/alignas18.C
+ c35ab3d4ee0cd5a668ae4e1f3805363e  gcc/testsuite/g++.dg/cpp0x/alignas19.C
  f1354435b9e53f5c5d923994edebb49f  gcc/testsuite/g++.dg/cpp0x/alignas2.C
  af0c02bf93d49e5385b61d3e59a21e28  gcc/testsuite/g++.dg/cpp0x/alignas3.C
  4e770e3d245d014c238b07e798e03b36  gcc/testsuite/g++.dg/cpp0x/alignas4.C
*************** f6ed96119608d817c8a36a47de91e2bc  gcc/te
*** 11419,11424 ****
--- 12074,12082 ----
  8cd0bcba8f4a0b5cd3567ba6a1af2749  gcc/testsuite/g++.dg/cpp0x/alignof3.C
  49ca0981579359ddb45186db7cc1d8cc  gcc/testsuite/g++.dg/cpp0x/alignof4.C
  84144e8af694c7831f254688551faf4a  gcc/testsuite/g++.dg/cpp0x/alignof5.C
+ 4144161bc01c509d0393e38c5ae33b26  gcc/testsuite/g++.dg/cpp0x/alignof6.C
+ 2dbb9193d14b6b43917760c05ab17a54  gcc/testsuite/g++.dg/cpp0x/alignof7.C
+ 5d890faf4a821ee4240f531a35dde130  gcc/testsuite/g++.dg/cpp0x/alignof8.C
  e679c3ff5560017984a9332e3cd8e485  gcc/testsuite/g++.dg/cpp0x/anon-union1.C
  7b2ba02a276836f1d780b2c828e8dca5  gcc/testsuite/g++.dg/cpp0x/anon-union2.C
  2dd5002330171bc4d37d9ba0cc381c6a  gcc/testsuite/g++.dg/cpp0x/attrib54.C
*************** db7f71aaaa2f73308e27313c0029f47b  gcc/te
*** 11452,11458 ****
  3d8db8c33e753c0134f6f319133442ff  gcc/testsuite/g++.dg/cpp0x/auto27.C
  44d2e83b6f5fa64578c3121035174b58  gcc/testsuite/g++.dg/cpp0x/auto28.C
  0c6f2e035663c64946f00a0114eb6b45  gcc/testsuite/g++.dg/cpp0x/auto29.C
! e150c93512982c4419d33525ee5ba3b2  gcc/testsuite/g++.dg/cpp0x/auto3.C
  137b55f91ad6b59634d3e05053c11138  gcc/testsuite/g++.dg/cpp0x/auto30.C
  24926b96269b354631ff38d43957ddae  gcc/testsuite/g++.dg/cpp0x/auto31.C
  2cbc64372a2839e349e2ff9492fea8c2  gcc/testsuite/g++.dg/cpp0x/auto32.C
--- 12110,12116 ----
  3d8db8c33e753c0134f6f319133442ff  gcc/testsuite/g++.dg/cpp0x/auto27.C
  44d2e83b6f5fa64578c3121035174b58  gcc/testsuite/g++.dg/cpp0x/auto28.C
  0c6f2e035663c64946f00a0114eb6b45  gcc/testsuite/g++.dg/cpp0x/auto29.C
! 701572707062cb14dc0c2fee7daff48a  gcc/testsuite/g++.dg/cpp0x/auto3.C
  137b55f91ad6b59634d3e05053c11138  gcc/testsuite/g++.dg/cpp0x/auto30.C
  24926b96269b354631ff38d43957ddae  gcc/testsuite/g++.dg/cpp0x/auto31.C
  2cbc64372a2839e349e2ff9492fea8c2  gcc/testsuite/g++.dg/cpp0x/auto32.C
*************** e737c0b34a3d5c19f425eb66805b856e  gcc/te
*** 11479,11486 ****
  a7a713ea7071d14dc175b795f443d1b0  gcc/testsuite/g++.dg/cpp0x/auto51.C
  82c8de2d5483bfd6986bf62177371967  gcc/testsuite/g++.dg/cpp0x/auto52.C
  d7e67c489de3f4699b1cb6ee43c6142c  gcc/testsuite/g++.dg/cpp0x/auto53.C
  7051782825f2720fd5eee3be6f2027e9  gcc/testsuite/g++.dg/cpp0x/auto7.C
! 8d3d58dc35a430cd31eb2af8eeb5a61c  gcc/testsuite/g++.dg/cpp0x/auto9.C
  4a89b70ea75ae6415ffb0149eed4dc01  gcc/testsuite/g++.dg/cpp0x/bad_array_new1.C
  a8491f3e4ee92a8454ad6b7d6c1e4429  gcc/testsuite/g++.dg/cpp0x/bad_array_new2.C
  1ea60b441f8073714f5b0d7662a304e9  gcc/testsuite/g++.dg/cpp0x/bind.C
--- 12137,12146 ----
  a7a713ea7071d14dc175b795f443d1b0  gcc/testsuite/g++.dg/cpp0x/auto51.C
  82c8de2d5483bfd6986bf62177371967  gcc/testsuite/g++.dg/cpp0x/auto52.C
  d7e67c489de3f4699b1cb6ee43c6142c  gcc/testsuite/g++.dg/cpp0x/auto53.C
+ f6b00042d67759a33bbf3becf2621e18  gcc/testsuite/g++.dg/cpp0x/auto54.C
+ c927462765eef1949fbb945e0a8b8a4a  gcc/testsuite/g++.dg/cpp0x/auto55.C
  7051782825f2720fd5eee3be6f2027e9  gcc/testsuite/g++.dg/cpp0x/auto7.C
! 2f31670e4a2ab4485678d229fa64a484  gcc/testsuite/g++.dg/cpp0x/auto9.C
  4a89b70ea75ae6415ffb0149eed4dc01  gcc/testsuite/g++.dg/cpp0x/bad_array_new1.C
  a8491f3e4ee92a8454ad6b7d6c1e4429  gcc/testsuite/g++.dg/cpp0x/bad_array_new2.C
  1ea60b441f8073714f5b0d7662a304e9  gcc/testsuite/g++.dg/cpp0x/bind.C
*************** c11fb9d024f89aea2e027172cee4bda2  gcc/te
*** 11496,11501 ****
--- 12156,12162 ----
  00e99c6cae64f722f78b0f72a5209b78  gcc/testsuite/g++.dg/cpp0x/collapse.C
  5337801b3f3b1399a7748f6f77351f43  gcc/testsuite/g++.dg/cpp0x/cond1.C
  82b611352fd26c7db573eb5226ef4366  gcc/testsuite/g++.dg/cpp0x/cond2.C
+ 49892879cc50168564ac99cc87bfb0ab  gcc/testsuite/g++.dg/cpp0x/constexpr-100111.C
  3e4cac522763806230540d3da6cc5ee1  gcc/testsuite/g++.dg/cpp0x/constexpr-46336.C
  d079e67f3b2be485ac7aed93b70984d2  gcc/testsuite/g++.dg/cpp0x/constexpr-46420.C
  329a82a822423273c0c0256fd27a6d52  gcc/testsuite/g++.dg/cpp0x/constexpr-47570.C
*************** ac98415dcf1478783865ded48b802514  gcc/te
*** 11508,11513 ****
--- 12169,12175 ----
  ae50dcd26c1db9c21ab23c7c6fd3e728  gcc/testsuite/g++.dg/cpp0x/constexpr-51707.C
  96317097d82b7260177af2929bb7e881  gcc/testsuite/g++.dg/cpp0x/constexpr-52282-1.C
  d55311e37ed0d20d2c44697761f33eca  gcc/testsuite/g++.dg/cpp0x/constexpr-52672.C
+ e9ea7773788d76f72c08dab0e1cc9a9c  gcc/testsuite/g++.dg/cpp0x/constexpr-52830.C
  ed879f2262461536a8a87a38152015b7  gcc/testsuite/g++.dg/cpp0x/constexpr-52892-1.C
  3ae1b0a16fe1c7d2133dc2faf68bfc01  gcc/testsuite/g++.dg/cpp0x/constexpr-52892-2.C
  ecc3b96f5ee5f153f34313ef65b34ef6  gcc/testsuite/g++.dg/cpp0x/constexpr-53094-1.C
*************** b78047226f0990dcef2a33c9ae385550  gcc/te
*** 11539,11545 ****
  d5611e2fce29fd70d832ad1caeacb2bf  gcc/testsuite/g++.dg/cpp0x/constexpr-67376.C
  946afd138ffa02d03047727df00be72b  gcc/testsuite/g++.dg/cpp0x/constexpr-68754.C
  9d889c590c21552a82c4176e20c4be44  gcc/testsuite/g++.dg/cpp0x/constexpr-69315.C
! a723d744b819b77f155d66488ce1a623  gcc/testsuite/g++.dg/cpp0x/constexpr-70001-1.C
  c31c54ee094906f9917e908e31bbf1b5  gcc/testsuite/g++.dg/cpp0x/constexpr-70001-2.C
  bf6a1a2ec9530a412bf9a3f7e95df3c8  gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
  0f8db74a4f4db29acf48fd0a0cf80732  gcc/testsuite/g++.dg/cpp0x/constexpr-70001-4.C
--- 12201,12207 ----
  d5611e2fce29fd70d832ad1caeacb2bf  gcc/testsuite/g++.dg/cpp0x/constexpr-67376.C
  946afd138ffa02d03047727df00be72b  gcc/testsuite/g++.dg/cpp0x/constexpr-68754.C
  9d889c590c21552a82c4176e20c4be44  gcc/testsuite/g++.dg/cpp0x/constexpr-69315.C
! 4a75cc4bc0ceaf1f7f97d667630b002d  gcc/testsuite/g++.dg/cpp0x/constexpr-70001-1.C
  c31c54ee094906f9917e908e31bbf1b5  gcc/testsuite/g++.dg/cpp0x/constexpr-70001-2.C
  bf6a1a2ec9530a412bf9a3f7e95df3c8  gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
  0f8db74a4f4db29acf48fd0a0cf80732  gcc/testsuite/g++.dg/cpp0x/constexpr-70001-4.C
*************** b9007290e56f8c058df6fc2174bc755b  gcc/te
*** 11564,11569 ****
--- 12226,12232 ----
  5a518662f72ee08bfff694cc4d66124c  gcc/testsuite/g++.dg/cpp0x/constexpr-92015.C
  387eeb0eae44c4e907323a8c822cb5c8  gcc/testsuite/g++.dg/cpp0x/constexpr-92443.C
  b2e8cc3ca2686458232f6ab8399d9dda  gcc/testsuite/g++.dg/cpp0x/constexpr-93169.C
+ bc7ccf4287a38e8f82df800db6150879  gcc/testsuite/g++.dg/cpp0x/constexpr-95307.C
  32c39fce8b20cb104d6da1cffca8a530  gcc/testsuite/g++.dg/cpp0x/constexpr-96241.C
  6aa74413b4ef74580a0a5da7abf23914  gcc/testsuite/g++.dg/cpp0x/constexpr-98.C
  5f550fa68a208c2d1f3f6d02dca0b709  gcc/testsuite/g++.dg/cpp0x/constexpr-98295.C
*************** b2677ed5d88c259b9b0fac3db40c4180  gcc/te
*** 11578,11584 ****
  a41c6fa5f9f050cf59e34e5334dd0947  gcc/testsuite/g++.dg/cpp0x/constexpr-arith-overflow.C
  4901daebef7a51847b08d357c96855a3  gcc/testsuite/g++.dg/cpp0x/constexpr-arith-overflow2.C
  d184daf58a1efefa9b5d9f2675332595  gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr.C
! a507f11a2d85cb4ed8213ac9d2770e97  gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr10.C
  8fd033f4e6b69599a1e293c45d0814cb  gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr2.C
  0a82455c1794efadc3bbb4e4ba357339  gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr3.C
  12a7829023637da75e6542a82c846dd8  gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr4.C
--- 12241,12247 ----
  a41c6fa5f9f050cf59e34e5334dd0947  gcc/testsuite/g++.dg/cpp0x/constexpr-arith-overflow.C
  4901daebef7a51847b08d357c96855a3  gcc/testsuite/g++.dg/cpp0x/constexpr-arith-overflow2.C
  d184daf58a1efefa9b5d9f2675332595  gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr.C
! 63eee311d4a3d8cc4e3036fb19147515  gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr10.C
  8fd033f4e6b69599a1e293c45d0814cb  gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr2.C
  0a82455c1794efadc3bbb4e4ba357339  gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr3.C
  12a7829023637da75e6542a82c846dd8  gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr4.C
*************** a3fe89999694d5e28c05f50283b43674  gcc/te
*** 11602,11608 ****
  827176e8937b1c43dc1626c4a7abe125  gcc/testsuite/g++.dg/cpp0x/constexpr-array20.C
  9f1d33f7fbc48aae53064b372e0b7551  gcc/testsuite/g++.dg/cpp0x/constexpr-array21.C
  f4f262de9adf968192a3da56a3c4adc1  gcc/testsuite/g++.dg/cpp0x/constexpr-array22.C
! 2e25f59424b3bb9e86bdcc2fe91c41af  gcc/testsuite/g++.dg/cpp0x/constexpr-array23.C
  3ac9c1d9fb2c907fc817b194d0e9d585  gcc/testsuite/g++.dg/cpp0x/constexpr-array24.C
  37381df196b22d02192a5089e6c46365  gcc/testsuite/g++.dg/cpp0x/constexpr-array25.C
  0a27a7a45bdad25c5a48b1f4e3bfcb8b  gcc/testsuite/g++.dg/cpp0x/constexpr-array26.C
--- 12265,12271 ----
  827176e8937b1c43dc1626c4a7abe125  gcc/testsuite/g++.dg/cpp0x/constexpr-array20.C
  9f1d33f7fbc48aae53064b372e0b7551  gcc/testsuite/g++.dg/cpp0x/constexpr-array21.C
  f4f262de9adf968192a3da56a3c4adc1  gcc/testsuite/g++.dg/cpp0x/constexpr-array22.C
! 566124ae45a23962c8800a404d8db0e0  gcc/testsuite/g++.dg/cpp0x/constexpr-array23.C
  3ac9c1d9fb2c907fc817b194d0e9d585  gcc/testsuite/g++.dg/cpp0x/constexpr-array24.C
  37381df196b22d02192a5089e6c46365  gcc/testsuite/g++.dg/cpp0x/constexpr-array25.C
  0a27a7a45bdad25c5a48b1f4e3bfcb8b  gcc/testsuite/g++.dg/cpp0x/constexpr-array26.C
*************** f6676b44835c5329c16a5bb57f317adc  gcc/te
*** 11625,11639 ****
  5698e51a559a43ae4c1e9bb2dcc0f8b5  gcc/testsuite/g++.dg/cpp0x/constexpr-base5.C
  4be3d6eef956cee1b5ae2edcf04a605b  gcc/testsuite/g++.dg/cpp0x/constexpr-base6.C
  096985eadd4b3ef7a0521407d61d2085  gcc/testsuite/g++.dg/cpp0x/constexpr-base6b.C
  e4e15e959aaae288fa7a722d7abb7509  gcc/testsuite/g++.dg/cpp0x/constexpr-bitfield.C
  18b0f5c8eeb4a3196bc623c2fd1205ee  gcc/testsuite/g++.dg/cpp0x/constexpr-bitfield2.C
! 271aba96fb8bf37bed15d4848cc13f01  gcc/testsuite/g++.dg/cpp0x/constexpr-bitfield3.C
  27e0f50b50c73fe5b226a30b40ed229d  gcc/testsuite/g++.dg/cpp0x/constexpr-builtin1.C
  49ef21a2036978e291dda3cfdd0db015  gcc/testsuite/g++.dg/cpp0x/constexpr-builtin2.C
  9b79d9e139bdca82ac944985ea038aa0  gcc/testsuite/g++.dg/cpp0x/constexpr-builtin3.C
  85fdfb48424c10ce307707bc1d85353b  gcc/testsuite/g++.dg/cpp0x/constexpr-builtin4.C
  a3e1dfa48f53c341c8fd1fed39d39593  gcc/testsuite/g++.dg/cpp0x/constexpr-cache1.C
  2d072e1c9404478ff6f2aff9be053f5d  gcc/testsuite/g++.dg/cpp0x/constexpr-cast.C
  c69a3f036aa1a3b23cdbaaea842e210b  gcc/testsuite/g++.dg/cpp0x/constexpr-cleanup.C
  4c7ae3f55ce6d714d60e08811293b1e3  gcc/testsuite/g++.dg/cpp0x/constexpr-comma1.C
  80367967b9445fd60f61c8e306a887c1  gcc/testsuite/g++.dg/cpp0x/constexpr-complex.C
--- 12288,12305 ----
  5698e51a559a43ae4c1e9bb2dcc0f8b5  gcc/testsuite/g++.dg/cpp0x/constexpr-base5.C
  4be3d6eef956cee1b5ae2edcf04a605b  gcc/testsuite/g++.dg/cpp0x/constexpr-base6.C
  096985eadd4b3ef7a0521407d61d2085  gcc/testsuite/g++.dg/cpp0x/constexpr-base6b.C
+ cc4e6caab0fb0ed4c0220072c544d36f  gcc/testsuite/g++.dg/cpp0x/constexpr-base7.C
  e4e15e959aaae288fa7a722d7abb7509  gcc/testsuite/g++.dg/cpp0x/constexpr-bitfield.C
  18b0f5c8eeb4a3196bc623c2fd1205ee  gcc/testsuite/g++.dg/cpp0x/constexpr-bitfield2.C
! 0414f248fbbcd3aa3e94cb525b3e610c  gcc/testsuite/g++.dg/cpp0x/constexpr-bitfield3.C
  27e0f50b50c73fe5b226a30b40ed229d  gcc/testsuite/g++.dg/cpp0x/constexpr-builtin1.C
  49ef21a2036978e291dda3cfdd0db015  gcc/testsuite/g++.dg/cpp0x/constexpr-builtin2.C
  9b79d9e139bdca82ac944985ea038aa0  gcc/testsuite/g++.dg/cpp0x/constexpr-builtin3.C
  85fdfb48424c10ce307707bc1d85353b  gcc/testsuite/g++.dg/cpp0x/constexpr-builtin4.C
  a3e1dfa48f53c341c8fd1fed39d39593  gcc/testsuite/g++.dg/cpp0x/constexpr-cache1.C
  2d072e1c9404478ff6f2aff9be053f5d  gcc/testsuite/g++.dg/cpp0x/constexpr-cast.C
+ c617e2dbb5fde7d48a70e2596c3b5468  gcc/testsuite/g++.dg/cpp0x/constexpr-cast2.C
+ 7cd97e4615765a106cbe7e09df58b19e  gcc/testsuite/g++.dg/cpp0x/constexpr-cast3.C
  c69a3f036aa1a3b23cdbaaea842e210b  gcc/testsuite/g++.dg/cpp0x/constexpr-cleanup.C
  4c7ae3f55ce6d714d60e08811293b1e3  gcc/testsuite/g++.dg/cpp0x/constexpr-comma1.C
  80367967b9445fd60f61c8e306a887c1  gcc/testsuite/g++.dg/cpp0x/constexpr-complex.C
*************** ad96b3db3327ae43c2490e49c0c6271b  gcc/te
*** 11765,11771 ****
  eaac16fcdf22c3bbc12d42310c8808c0  gcc/testsuite/g++.dg/cpp0x/constexpr-inline-1.C
  3028c5814c73724e635c8dabd796f82f  gcc/testsuite/g++.dg/cpp0x/constexpr-inline.C
  683db5db98fc74d6eadc7aa9954bdb28  gcc/testsuite/g++.dg/cpp0x/constexpr-invisiref1.C
! 37f592a6d675c9e237fe68fa9fdf71ca  gcc/testsuite/g++.dg/cpp0x/constexpr-is_literal.C
  78f36282c1b77dbf3aea60391389914d  gcc/testsuite/g++.dg/cpp0x/constexpr-list1.C
  f288c9405b4d691b91ef3844e3b9dd08  gcc/testsuite/g++.dg/cpp0x/constexpr-list2.C
  25358bf087f99e99f8fbfc8bcd9f01be  gcc/testsuite/g++.dg/cpp0x/constexpr-main.C
--- 12431,12437 ----
  eaac16fcdf22c3bbc12d42310c8808c0  gcc/testsuite/g++.dg/cpp0x/constexpr-inline-1.C
  3028c5814c73724e635c8dabd796f82f  gcc/testsuite/g++.dg/cpp0x/constexpr-inline.C
  683db5db98fc74d6eadc7aa9954bdb28  gcc/testsuite/g++.dg/cpp0x/constexpr-invisiref1.C
! f9b635cca60e39e92118ea02065b9619  gcc/testsuite/g++.dg/cpp0x/constexpr-is_literal.C
  78f36282c1b77dbf3aea60391389914d  gcc/testsuite/g++.dg/cpp0x/constexpr-list1.C
  f288c9405b4d691b91ef3844e3b9dd08  gcc/testsuite/g++.dg/cpp0x/constexpr-list2.C
  25358bf087f99e99f8fbfc8bcd9f01be  gcc/testsuite/g++.dg/cpp0x/constexpr-main.C
*************** ddcd4dc55809dc226c321025c894f2b0  gcc/te
*** 11793,11799 ****
  e30db9bfd86140e4533c65e96fcc3879  gcc/testsuite/g++.dg/cpp0x/constexpr-nonstatic.C
  2b6a53b16231810c0a21185dce583796  gcc/testsuite/g++.dg/cpp0x/constexpr-nsdmi1.C
  990beb043ae4d800be378b30e8be4884  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C
! 3623c3968c6c158956f2321675d38aad  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C
  d4c1a5cc0803346fbc25f7a4d5748fd8  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr.C
  da36a7fb764d4698ece80f56e1801401  gcc/testsuite/g++.dg/cpp0x/constexpr-object1.C
  a3363a18129aba2537ab6af225e19a74  gcc/testsuite/g++.dg/cpp0x/constexpr-object2.C
--- 12459,12465 ----
  e30db9bfd86140e4533c65e96fcc3879  gcc/testsuite/g++.dg/cpp0x/constexpr-nonstatic.C
  2b6a53b16231810c0a21185dce583796  gcc/testsuite/g++.dg/cpp0x/constexpr-nsdmi1.C
  990beb043ae4d800be378b30e8be4884  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C
! 7edfd1f97b60d8d22edb48040aab65ff  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C
  d4c1a5cc0803346fbc25f7a4d5748fd8  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr.C
  da36a7fb764d4698ece80f56e1801401  gcc/testsuite/g++.dg/cpp0x/constexpr-object1.C
  a3363a18129aba2537ab6af225e19a74  gcc/testsuite/g++.dg/cpp0x/constexpr-object2.C
*************** b0f3e3a129a29b94607b7667c179da90  gcc/te
*** 11804,11810 ****
  a5ce11f6f7a1de2ab9382765eaae19a9  gcc/testsuite/g++.dg/cpp0x/constexpr-overflow3.C
  9b22329501cdc0c04eb177944b0b9482  gcc/testsuite/g++.dg/cpp0x/constexpr-pedantic.C
  21cafe90c117f963b0c4d2102a2109a0  gcc/testsuite/g++.dg/cpp0x/constexpr-pmf1.C
! a53083b794641f9adbc3c1129a42b34c  gcc/testsuite/g++.dg/cpp0x/constexpr-pmf2.C
  71bf544adf239f884a43b6d72e78604e  gcc/testsuite/g++.dg/cpp0x/constexpr-pos1.C
  e29b90d7c0ad7662446a6055addb6315  gcc/testsuite/g++.dg/cpp0x/constexpr-potential1.C
  a82ef0f27014a7256099b10bb3cb2b1a  gcc/testsuite/g++.dg/cpp0x/constexpr-ptrcomp1.C
--- 12470,12476 ----
  a5ce11f6f7a1de2ab9382765eaae19a9  gcc/testsuite/g++.dg/cpp0x/constexpr-overflow3.C
  9b22329501cdc0c04eb177944b0b9482  gcc/testsuite/g++.dg/cpp0x/constexpr-pedantic.C
  21cafe90c117f963b0c4d2102a2109a0  gcc/testsuite/g++.dg/cpp0x/constexpr-pmf1.C
! 22f1652453d581ac1aa114c7e107eb73  gcc/testsuite/g++.dg/cpp0x/constexpr-pmf2.C
  71bf544adf239f884a43b6d72e78604e  gcc/testsuite/g++.dg/cpp0x/constexpr-pos1.C
  e29b90d7c0ad7662446a6055addb6315  gcc/testsuite/g++.dg/cpp0x/constexpr-potential1.C
  a82ef0f27014a7256099b10bb3cb2b1a  gcc/testsuite/g++.dg/cpp0x/constexpr-ptrcomp1.C
*************** e36688d452f93f851f133220f8cfd8b0  gcc/te
*** 11815,11820 ****
--- 12481,12487 ----
  207019aa55e1983b45122db974bd0948  gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem5.C
  bdbdee9b8211644ca4eaf7ef1be48857  gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem6.C
  32da508b62d5ba45ac51680a9a5638a4  gcc/testsuite/g++.dg/cpp0x/constexpr-ptrsub.C
+ a8dbcd77100e0e0c9591a9ee22bda39f  gcc/testsuite/g++.dg/cpp0x/constexpr-ptrsub2.C
  c893e2388f9acef593b874b1e6b02071  gcc/testsuite/g++.dg/cpp0x/constexpr-pure.C
  301175b1db937e1f73fbe85f81fd00e9  gcc/testsuite/g++.dg/cpp0x/constexpr-recursion.C
  d0613cd67d583f80a028bb4816e6c9e8  gcc/testsuite/g++.dg/cpp0x/constexpr-recursion2.C
*************** fa38f028820b71aa1be6862fa8eb6f7c  gcc/te
*** 11880,11885 ****
--- 12547,12553 ----
  fac54481719d52997e799f9f5944ce10  gcc/testsuite/g++.dg/cpp0x/constexpr-template7.C
  67f2412b410857ef08f653682a138ab6  gcc/testsuite/g++.dg/cpp0x/constexpr-template8.C
  e95760da3e98d263ace1fe8f57c6a5eb  gcc/testsuite/g++.dg/cpp0x/constexpr-template9.C
+ 6b376db978f95eefa5abc27419e2daef  gcc/testsuite/g++.dg/cpp0x/constexpr-this1.C
  53ba7c64d852ccf921166074b871f796  gcc/testsuite/g++.dg/cpp0x/constexpr-throw.C
  b7bf8a1d982f3cd7c0d65d88c6ff540e  gcc/testsuite/g++.dg/cpp0x/constexpr-trivial1.C
  84e0e6cb7a446e49a36a296402d9eb94  gcc/testsuite/g++.dg/cpp0x/constexpr-trivial2.C
*************** ec6bf8354ca1b8834959e856431d6ac4  gcc/te
*** 11913,11918 ****
--- 12581,12587 ----
  370c9ae430ac133c7a4882e418a08a3e  gcc/testsuite/g++.dg/cpp0x/constexpr-virtual6.C
  58e380f5c0bc16e86009e605e19acb07  gcc/testsuite/g++.dg/cpp0x/constexpr-volatile.C
  5081c9b6e2b0e12bf7d6e127f365efe7  gcc/testsuite/g++.dg/cpp0x/constexpr-volatile2.C
+ 30ced1e6b63c1eb7ae6b537c9e49bc1f  gcc/testsuite/g++.dg/cpp0x/constexpr-volatile3.C
  7bca20d6ac21d6cb78ab16d5c52b7e64  gcc/testsuite/g++.dg/cpp0x/constexpr-wstring1.C
  b16fc42e77fa07ebcdb1053ea5d24120  gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C
  70dc080523c40a07cec30261f6f7007a  gcc/testsuite/g++.dg/cpp0x/conv-tmpl1.C
*************** c2a9b59fdf83e881c9a8f6677ffa2654  gcc/te
*** 11938,11944 ****
--- 12607,12615 ----
  a184097469012f150396f1e605627cd2  gcc/testsuite/g++.dg/cpp0x/decltype-33838.C
  51bee11248b9515ebb07cbd465c4fc47  gcc/testsuite/g++.dg/cpp0x/decltype-38655.C
  b42a56c36f2871854befe2c275e21536  gcc/testsuite/g++.dg/cpp0x/decltype-54581.C
+ cf97f1097745402b81c3380e8aa5780a  gcc/testsuite/g++.dg/cpp0x/decltype-71879.C
  a5f546aaf002e31dc77b29dbac735473  gcc/testsuite/g++.dg/cpp0x/decltype-77338.C
+ 52a79da77531c2f2ad078138f3cd0fd5  gcc/testsuite/g++.dg/cpp0x/decltype-96652.C
  56d1686eed232cf78dc19ba7e9220f8d  gcc/testsuite/g++.dg/cpp0x/decltype-call1.C
  3df1dfeae5659a7702340d1f4c142e85  gcc/testsuite/g++.dg/cpp0x/decltype-call2.C
  94b4a0fd5edd628fe8247db245d9f0ad  gcc/testsuite/g++.dg/cpp0x/decltype-call3.C
*************** f49279cc171d16a17bbe55ead8c7c201  gcc/te
*** 11982,11988 ****
  bd08c6c7799c44db7137d5bdda4a4c33  gcc/testsuite/g++.dg/cpp0x/decltype34.C
  95cd470ca6c72ab1ad4c4c00a9fd3dab  gcc/testsuite/g++.dg/cpp0x/decltype35.C
  8a11d3d983e7acb1fa3f5c9f3970324d  gcc/testsuite/g++.dg/cpp0x/decltype36.C
! 3869d95e391dba45b73631274c1ea985  gcc/testsuite/g++.dg/cpp0x/decltype37.C
  a3ba35bd21a746eed5c781d96b7ac1b4  gcc/testsuite/g++.dg/cpp0x/decltype38.C
  5c5a2ca8e170bf1af59a6323bf4acb8b  gcc/testsuite/g++.dg/cpp0x/decltype39.C
  7a625ad305e74af8e70eecc8a90abfe4  gcc/testsuite/g++.dg/cpp0x/decltype4.C
--- 12653,12659 ----
  bd08c6c7799c44db7137d5bdda4a4c33  gcc/testsuite/g++.dg/cpp0x/decltype34.C
  95cd470ca6c72ab1ad4c4c00a9fd3dab  gcc/testsuite/g++.dg/cpp0x/decltype35.C
  8a11d3d983e7acb1fa3f5c9f3970324d  gcc/testsuite/g++.dg/cpp0x/decltype36.C
! 24a5d8bcd87e712f75bb4a78b1913e51  gcc/testsuite/g++.dg/cpp0x/decltype37.C
  a3ba35bd21a746eed5c781d96b7ac1b4  gcc/testsuite/g++.dg/cpp0x/decltype38.C
  5c5a2ca8e170bf1af59a6323bf4acb8b  gcc/testsuite/g++.dg/cpp0x/decltype39.C
  7a625ad305e74af8e70eecc8a90abfe4  gcc/testsuite/g++.dg/cpp0x/decltype4.C
*************** d523840f4fa291dfef125fedce66c6a9  gcc/te
*** 12011,12018 ****
  ecf2c1e8197fb556dd17e877c07d5855  gcc/testsuite/g++.dg/cpp0x/decltype60.C
  052b7eec67bbc39fded7404fdeff4428  gcc/testsuite/g++.dg/cpp0x/decltype61.C
  b7d187347381223b6effdb89e05e85df  gcc/testsuite/g++.dg/cpp0x/decltype62.C
! e0815b98196aea0739acd0b3e2b6b78f  gcc/testsuite/g++.dg/cpp0x/decltype63.C
! d1cca64c7d07feb94e9c8e864770cb6d  gcc/testsuite/g++.dg/cpp0x/decltype64.C
  55f881ad7708a2a5bbec53f3c555b54a  gcc/testsuite/g++.dg/cpp0x/decltype65.C
  ed578aa82f9f891f97537571406ae86e  gcc/testsuite/g++.dg/cpp0x/decltype66.C
  eb43241ea5b225a09884d83e5c0f03b1  gcc/testsuite/g++.dg/cpp0x/decltype67.C
--- 12682,12689 ----
  ecf2c1e8197fb556dd17e877c07d5855  gcc/testsuite/g++.dg/cpp0x/decltype60.C
  052b7eec67bbc39fded7404fdeff4428  gcc/testsuite/g++.dg/cpp0x/decltype61.C
  b7d187347381223b6effdb89e05e85df  gcc/testsuite/g++.dg/cpp0x/decltype62.C
! 40dc3c23831b6205543d8fe88deacb1d  gcc/testsuite/g++.dg/cpp0x/decltype63.C
! cf659a5c0dee752b2ebfbcb637c97e44  gcc/testsuite/g++.dg/cpp0x/decltype64.C
  55f881ad7708a2a5bbec53f3c555b54a  gcc/testsuite/g++.dg/cpp0x/decltype65.C
  ed578aa82f9f891f97537571406ae86e  gcc/testsuite/g++.dg/cpp0x/decltype66.C
  eb43241ea5b225a09884d83e5c0f03b1  gcc/testsuite/g++.dg/cpp0x/decltype67.C
*************** e88dd76d94beebe947081c522d04a783  gcc/te
*** 12025,12030 ****
--- 12696,12705 ----
  8a424595eeb543dc61f8e67f3612677c  gcc/testsuite/g++.dg/cpp0x/decltype73.C
  193e7380e34c2fdae5c5ba9c6764410f  gcc/testsuite/g++.dg/cpp0x/decltype74.C
  7fb3846e66a785a7faa535980ada0e9e  gcc/testsuite/g++.dg/cpp0x/decltype75.C
+ 5efe00221ae0525d0617cea4f3b6aed2  gcc/testsuite/g++.dg/cpp0x/decltype76.C
+ f192edc5aab7159d4df05835d1b9ecd0  gcc/testsuite/g++.dg/cpp0x/decltype77.C
+ 21abe8f16d0d01595ec939e338038b2b  gcc/testsuite/g++.dg/cpp0x/decltype78.C
+ 6fca30204c9f40dfe34f43d06bc82ff6  gcc/testsuite/g++.dg/cpp0x/decltype79.C
  bbdff105c665351973aaa6a25eaa0940  gcc/testsuite/g++.dg/cpp0x/decltype8.C
  037e88423c377bc171f0dea56fb59c12  gcc/testsuite/g++.dg/cpp0x/decltype9.C
  3b20b1750b2ca6ed0f61eed98be9416e  gcc/testsuite/g++.dg/cpp0x/deduce.C
*************** d4426133b81413ad1d3051caa8d7c24a  gcc/te
*** 12124,12136 ****
  61e6b95f09ff3fc301b7bd5af3f1e592  gcc/testsuite/g++.dg/cpp0x/elision2.C
  27d722d5f244016b7eb68c69205b406b  gcc/testsuite/g++.dg/cpp0x/elision3.C
  5c711968979f97af62f871b9ff96e097  gcc/testsuite/g++.dg/cpp0x/elision_conv.C
! 3370bb8bb4d3cb46e73b821ac6785756  gcc/testsuite/g++.dg/cpp0x/elision_neg.C
  af521f07a34d29e505189640746f3ea0  gcc/testsuite/g++.dg/cpp0x/elision_weak.C
  f9db6c19fc344b45754b8ddbe2566345  gcc/testsuite/g++.dg/cpp0x/enum1.C
  239bcda977968c64660c02c29c92dd44  gcc/testsuite/g++.dg/cpp0x/enum10.C
  8b05050aad9e84ebb22fb71980c21641  gcc/testsuite/g++.dg/cpp0x/enum11.C
  94effbb2a76778ab55a7d31e5660b288  gcc/testsuite/g++.dg/cpp0x/enum12.C
! c0cab7be770f6201fe49acb2ddc82ddb  gcc/testsuite/g++.dg/cpp0x/enum13.C
  79aba4eac5026d1a15e09c3559aaa681  gcc/testsuite/g++.dg/cpp0x/enum14.C
  9b0e3954bb0489d3d5d9fad8bc0ca905  gcc/testsuite/g++.dg/cpp0x/enum15.C
  e96829e4dc7341548f88f5e5e5c472f2  gcc/testsuite/g++.dg/cpp0x/enum16.C
--- 12799,12811 ----
  61e6b95f09ff3fc301b7bd5af3f1e592  gcc/testsuite/g++.dg/cpp0x/elision2.C
  27d722d5f244016b7eb68c69205b406b  gcc/testsuite/g++.dg/cpp0x/elision3.C
  5c711968979f97af62f871b9ff96e097  gcc/testsuite/g++.dg/cpp0x/elision_conv.C
! 712ed8dcff4a69a8702cf91a4d752be3  gcc/testsuite/g++.dg/cpp0x/elision_neg.C
  af521f07a34d29e505189640746f3ea0  gcc/testsuite/g++.dg/cpp0x/elision_weak.C
  f9db6c19fc344b45754b8ddbe2566345  gcc/testsuite/g++.dg/cpp0x/enum1.C
  239bcda977968c64660c02c29c92dd44  gcc/testsuite/g++.dg/cpp0x/enum10.C
  8b05050aad9e84ebb22fb71980c21641  gcc/testsuite/g++.dg/cpp0x/enum11.C
  94effbb2a76778ab55a7d31e5660b288  gcc/testsuite/g++.dg/cpp0x/enum12.C
! 14611c3d71595e430b9a449084b95a17  gcc/testsuite/g++.dg/cpp0x/enum13.C
  79aba4eac5026d1a15e09c3559aaa681  gcc/testsuite/g++.dg/cpp0x/enum14.C
  9b0e3954bb0489d3d5d9fad8bc0ca905  gcc/testsuite/g++.dg/cpp0x/enum15.C
  e96829e4dc7341548f88f5e5e5c472f2  gcc/testsuite/g++.dg/cpp0x/enum16.C
*************** f62a97fe793cbb758f511e602db308aa  gcc/te
*** 12180,12185 ****
--- 12855,12861 ----
  225f7337cc65089cb4dbd094cb84c9c2  gcc/testsuite/g++.dg/cpp0x/error6.C
  f75f41e0c1359b56dd9a9190d3b7dbfc  gcc/testsuite/g++.dg/cpp0x/error7.C
  013461f339aafa92beaf749d69a672d1  gcc/testsuite/g++.dg/cpp0x/error8.C
+ fd7ae1b35a49011d276e428736f4f11a  gcc/testsuite/g++.dg/cpp0x/error9.C
  04d26b3451de750c55737c07deb1b299  gcc/testsuite/g++.dg/cpp0x/explicit-inst1.C
  4832f2785046f753a4492ac893cbed61  gcc/testsuite/g++.dg/cpp0x/explicit1.C
  4dd1f6fb02b660c2afd73b2484741309  gcc/testsuite/g++.dg/cpp0x/explicit10.C
*************** be032bb4361dd11f064d960f788b56ae  gcc/te
*** 12200,12207 ****
  a90d02344ce471556a85a9970c53f219  gcc/testsuite/g++.dg/cpp0x/extern_template-3.C
  e69d01a320a7471c0585ac2d75efcac2  gcc/testsuite/g++.dg/cpp0x/extern_template-4.C
  b25800bcf52ab901ab8ddbc9ea153561  gcc/testsuite/g++.dg/cpp0x/extern_template-5.C
  592cc710524d5d21c28b065dd6c6de7c  gcc/testsuite/g++.dg/cpp0x/fallthrough1.C
! c2982fdb85366105719171be7bb04eb0  gcc/testsuite/g++.dg/cpp0x/fallthrough2.C
  bcba4e18395ca9e8f9917788775bc3c1  gcc/testsuite/g++.dg/cpp0x/fntmp-equiv1.C
  e719fc0782c02fa926744188563c8722  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg1.C
  101686a12f4027487963b47c2243cef7  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg10.C
--- 12876,12884 ----
  a90d02344ce471556a85a9970c53f219  gcc/testsuite/g++.dg/cpp0x/extern_template-3.C
  e69d01a320a7471c0585ac2d75efcac2  gcc/testsuite/g++.dg/cpp0x/extern_template-4.C
  b25800bcf52ab901ab8ddbc9ea153561  gcc/testsuite/g++.dg/cpp0x/extern_template-5.C
+ b44ed86d19fab7414d28d1f3fd36a7f9  gcc/testsuite/g++.dg/cpp0x/extern_template-6.C
  592cc710524d5d21c28b065dd6c6de7c  gcc/testsuite/g++.dg/cpp0x/fallthrough1.C
! fabf296040650b16fb1ee761285e2841  gcc/testsuite/g++.dg/cpp0x/fallthrough2.C
  bcba4e18395ca9e8f9917788775bc3c1  gcc/testsuite/g++.dg/cpp0x/fntmp-equiv1.C
  e719fc0782c02fa926744188563c8722  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg1.C
  101686a12f4027487963b47c2243cef7  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg10.C
*************** d4322d3a60ab9276cc1264c288db974f  gcc/te
*** 12236,12241 ****
--- 12913,12919 ----
  4ae8baf4fdff1d18d31b0e4d7b426ece  gcc/testsuite/g++.dg/cpp0x/friend3.C
  31af356fd46efd356e7ce6ac470d2427  gcc/testsuite/g++.dg/cpp0x/friend4.C
  026439040836176852865f6754370e70  gcc/testsuite/g++.dg/cpp0x/friend5.C
+ 736bc36c391541a4cfc54f1e72d16923  gcc/testsuite/g++.dg/cpp0x/friend6.C
  4ee6b098255abe7601f2a9f6bc71d637  gcc/testsuite/g++.dg/cpp0x/gen-attrs-1.C
  cb97cb3c29926aede38017aa01da015d  gcc/testsuite/g++.dg/cpp0x/gen-attrs-10.C
  7de2f3d73363a0558cd75484e381dcca  gcc/testsuite/g++.dg/cpp0x/gen-attrs-11.C
*************** bc43ce97e9bc5daf3503a6eb18b5f526  gcc/te
*** 12298,12308 ****
  21ffb7b66577a1e363c063bd539c7530  gcc/testsuite/g++.dg/cpp0x/gen-attrs-58.C
  8b1eab7dca23abfa68d79475abe6ca6d  gcc/testsuite/g++.dg/cpp0x/gen-attrs-59.C
  d1722efa262e03d4b29a04648feeaa80  gcc/testsuite/g++.dg/cpp0x/gen-attrs-6.C
! a5d7e64856d35c4f9d4fe7a1a1d99cab  gcc/testsuite/g++.dg/cpp0x/gen-attrs-60.C
  7b0e99b02e7789690f20d9d1114188d0  gcc/testsuite/g++.dg/cpp0x/gen-attrs-61.C
  b151953ee723cc3bd3afc60e2ad0e6ad  gcc/testsuite/g++.dg/cpp0x/gen-attrs-62.C
  c157a52995fc54c0b46c8795dea13ada  gcc/testsuite/g++.dg/cpp0x/gen-attrs-63.C
! c75dea1e932fc65c88986652795dcbc3  gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C
  52f82ed142fbe1acdd0fe0b6f0d56e33  gcc/testsuite/g++.dg/cpp0x/gen-attrs-65.C
  40fb270687c3b0ccc01dc21db4e07678  gcc/testsuite/g++.dg/cpp0x/gen-attrs-66.C
  7007c2d7d8cdb780cdcb952d51859183  gcc/testsuite/g++.dg/cpp0x/gen-attrs-67.C
--- 12976,12986 ----
  21ffb7b66577a1e363c063bd539c7530  gcc/testsuite/g++.dg/cpp0x/gen-attrs-58.C
  8b1eab7dca23abfa68d79475abe6ca6d  gcc/testsuite/g++.dg/cpp0x/gen-attrs-59.C
  d1722efa262e03d4b29a04648feeaa80  gcc/testsuite/g++.dg/cpp0x/gen-attrs-6.C
! c39b7a651d41ae8206e4121d2a561994  gcc/testsuite/g++.dg/cpp0x/gen-attrs-60.C
  7b0e99b02e7789690f20d9d1114188d0  gcc/testsuite/g++.dg/cpp0x/gen-attrs-61.C
  b151953ee723cc3bd3afc60e2ad0e6ad  gcc/testsuite/g++.dg/cpp0x/gen-attrs-62.C
  c157a52995fc54c0b46c8795dea13ada  gcc/testsuite/g++.dg/cpp0x/gen-attrs-63.C
! 2c0b772f5cb6e41ea853f0aa2e9bb79e  gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C
  52f82ed142fbe1acdd0fe0b6f0d56e33  gcc/testsuite/g++.dg/cpp0x/gen-attrs-65.C
  40fb270687c3b0ccc01dc21db4e07678  gcc/testsuite/g++.dg/cpp0x/gen-attrs-66.C
  7007c2d7d8cdb780cdcb952d51859183  gcc/testsuite/g++.dg/cpp0x/gen-attrs-67.C
*************** b76ee20d4e5161664ef1b5b122268e53  gcc/te
*** 12311,12316 ****
--- 12989,12995 ----
  f55fa66c82d267feca5db82dc835210a  gcc/testsuite/g++.dg/cpp0x/gen-attrs-7.C
  40cf365212691f5dfcdf3a1b85548079  gcc/testsuite/g++.dg/cpp0x/gen-attrs-70.C
  1e684e9934b01f7c9c53981ab2a9cd8f  gcc/testsuite/g++.dg/cpp0x/gen-attrs-71.C
+ 47cf728d336aa8b06ee1ae9e0421fa73  gcc/testsuite/g++.dg/cpp0x/gen-attrs-72.C
  d7e6d19983fefaaf3bad930060d8d107  gcc/testsuite/g++.dg/cpp0x/gen-attrs-73.C
  29ab98a7b8d445bb51e5069dd98f7cca  gcc/testsuite/g++.dg/cpp0x/gen-attrs-8.C
  5dd92815927177080853d47a890f5439  gcc/testsuite/g++.dg/cpp0x/gen-attrs-9.C
*************** baf0ca575018768eef366236d48b8fdb  gcc/te
*** 12356,12370 ****
  3d78a96bfe85979925f00548e4564fc0  gcc/testsuite/g++.dg/cpp0x/inh-ctor25.C
  220354c7c42e1ac117aa19761c5a16d6  gcc/testsuite/g++.dg/cpp0x/inh-ctor26.C
  3dd2cbce9f770ed128820376bcfc0ea3  gcc/testsuite/g++.dg/cpp0x/inh-ctor27.C
! 4c4ae18e25ac45da8c988754866e6e46  gcc/testsuite/g++.dg/cpp0x/inh-ctor28.C
  a7a3abf33b10ca007c7fa43b9a1b4c19  gcc/testsuite/g++.dg/cpp0x/inh-ctor29.C
  bbc63910b25c6f98c35fc2a38455ffe0  gcc/testsuite/g++.dg/cpp0x/inh-ctor3.C
  ef58cfd45b994e29a5ffb11ea1d0cd8b  gcc/testsuite/g++.dg/cpp0x/inh-ctor30.C
  d07f1b6155878998e554213d7b63dd95  gcc/testsuite/g++.dg/cpp0x/inh-ctor31.C
  eb356bb5e47b9ce813f868c74583298f  gcc/testsuite/g++.dg/cpp0x/inh-ctor32.C
! cf8d547a477f23de9fcd096bf5e63dd9  gcc/testsuite/g++.dg/cpp0x/inh-ctor33.C
  3e2bbbf810a96449bcff45e067d280dd  gcc/testsuite/g++.dg/cpp0x/inh-ctor34.C
  f933eabf4dcde8d87d03370c9257ce9d  gcc/testsuite/g++.dg/cpp0x/inh-ctor35.C
  47ad482b069988147c4dcac60c026f4d  gcc/testsuite/g++.dg/cpp0x/inh-ctor3a.C
  071eafda7f7d2d4bff42921fbd048a45  gcc/testsuite/g++.dg/cpp0x/inh-ctor4.C
  972640c006b3bcd568fc760f06817f9f  gcc/testsuite/g++.dg/cpp0x/inh-ctor5.C
--- 13035,13051 ----
  3d78a96bfe85979925f00548e4564fc0  gcc/testsuite/g++.dg/cpp0x/inh-ctor25.C
  220354c7c42e1ac117aa19761c5a16d6  gcc/testsuite/g++.dg/cpp0x/inh-ctor26.C
  3dd2cbce9f770ed128820376bcfc0ea3  gcc/testsuite/g++.dg/cpp0x/inh-ctor27.C
! 48029edfe0255d5b925cd71e792db3c4  gcc/testsuite/g++.dg/cpp0x/inh-ctor28.C
  a7a3abf33b10ca007c7fa43b9a1b4c19  gcc/testsuite/g++.dg/cpp0x/inh-ctor29.C
  bbc63910b25c6f98c35fc2a38455ffe0  gcc/testsuite/g++.dg/cpp0x/inh-ctor3.C
  ef58cfd45b994e29a5ffb11ea1d0cd8b  gcc/testsuite/g++.dg/cpp0x/inh-ctor30.C
  d07f1b6155878998e554213d7b63dd95  gcc/testsuite/g++.dg/cpp0x/inh-ctor31.C
  eb356bb5e47b9ce813f868c74583298f  gcc/testsuite/g++.dg/cpp0x/inh-ctor32.C
! 91fb1bbb0e0976a6ebadf14fc40f2b46  gcc/testsuite/g++.dg/cpp0x/inh-ctor33.C
  3e2bbbf810a96449bcff45e067d280dd  gcc/testsuite/g++.dg/cpp0x/inh-ctor34.C
  f933eabf4dcde8d87d03370c9257ce9d  gcc/testsuite/g++.dg/cpp0x/inh-ctor35.C
+ 6b966c11af96a673d8cb7c70df13bde7  gcc/testsuite/g++.dg/cpp0x/inh-ctor36.C
+ 864c0137be7d20d35b8ce196814a16a5  gcc/testsuite/g++.dg/cpp0x/inh-ctor37.C
  47ad482b069988147c4dcac60c026f4d  gcc/testsuite/g++.dg/cpp0x/inh-ctor3a.C
  071eafda7f7d2d4bff42921fbd048a45  gcc/testsuite/g++.dg/cpp0x/inh-ctor4.C
  972640c006b3bcd568fc760f06817f9f  gcc/testsuite/g++.dg/cpp0x/inh-ctor5.C
*************** f0118d5667765863d9b140fbe97f21fe  gcc/te
*** 12394,12399 ****
--- 13075,13081 ----
  8d42dd7607b094785c2cd3a8c2078180  gcc/testsuite/g++.dg/cpp0x/initlist-ctor2.C
  85f4b64a3f7721e892ec214ca53047d4  gcc/testsuite/g++.dg/cpp0x/initlist-deduce.C
  12570a3277b174fbec9867439383c712  gcc/testsuite/g++.dg/cpp0x/initlist-deduce2.C
+ d95f4f566aa82caa249bf1188b86d6f2  gcc/testsuite/g++.dg/cpp0x/initlist-deduce3.C
  164cef62ad37c1cf80ca6128f56094b2  gcc/testsuite/g++.dg/cpp0x/initlist-defarg1.C
  be08dc99a94b7b3278c8c66a5274c415  gcc/testsuite/g++.dg/cpp0x/initlist-defarg2.C
  7f34f94c8b3b4fffe98a24b8ebadd5f6  gcc/testsuite/g++.dg/cpp0x/initlist-dr1518.C
*************** f8949630a7a02f66d0ceb796b5525cb8  gcc/te
*** 12406,12411 ****
--- 13088,13095 ----
  75fe6dcf44e6fa0a35cfaa871faa2b15  gcc/testsuite/g++.dg/cpp0x/initlist-new1.C
  7bddf9c6b842f5be4f0dcb028b72f5d6  gcc/testsuite/g++.dg/cpp0x/initlist-new2.C
  c7426143406ef7a62dfbbb6b6ef974ca  gcc/testsuite/g++.dg/cpp0x/initlist-new3.C
+ 2462ced2f35f174d3a192fbb553556f8  gcc/testsuite/g++.dg/cpp0x/initlist-new4.C
+ 0eb8216638573813eaf1d41d50899505  gcc/testsuite/g++.dg/cpp0x/initlist-new5.C
  bcbe398391cda8139c8462f46935b7e2  gcc/testsuite/g++.dg/cpp0x/initlist-opt.C
  e572423dbc63856346f68c0f83dab54a  gcc/testsuite/g++.dg/cpp0x/initlist-overload1.C
  a054a7d4e96233b7a3a6591843a8d33f  gcc/testsuite/g++.dg/cpp0x/initlist-pmf1.C
*************** fd02e573e3be3d0a146192cd840840a1  gcc/te
*** 12415,12420 ****
--- 13099,13105 ----
  ba6e21cbf49dfcec1abdc4c1f798637e  gcc/testsuite/g++.dg/cpp0x/initlist-ref-2267.C
  b981bb775821a5230961a162ba38ff43  gcc/testsuite/g++.dg/cpp0x/initlist-template1.C
  2c5adc68213f17b3f69e8102a8f14f45  gcc/testsuite/g++.dg/cpp0x/initlist-template2.C
+ f3ae4bc828514dae6bd94cd99286d406  gcc/testsuite/g++.dg/cpp0x/initlist-template3.C
  2f9a54ac2bb0726ff243477bd69bf361  gcc/testsuite/g++.dg/cpp0x/initlist-throw1.C
  24e8338168b54a612286b2c935ff5970  gcc/testsuite/g++.dg/cpp0x/initlist-throw2.C
  742c772ced8eedc3c0511b94b8410082  gcc/testsuite/g++.dg/cpp0x/initlist-value.C
*************** e78b41b2aa461ebe540e52ebf6339d42  gcc/te
*** 12488,12494 ****
  012b0613830ba9e997ec6a1aa5dd1787  gcc/testsuite/g++.dg/cpp0x/initlist47.C
  d375ad850b8e39546ef2da5df1ce9682  gcc/testsuite/g++.dg/cpp0x/initlist48.C
  fa1b568c2a6b67c0aef8139179850064  gcc/testsuite/g++.dg/cpp0x/initlist49.C
! 183e795572ccb885e18a0603b606b818  gcc/testsuite/g++.dg/cpp0x/initlist5.C
  f3fac88e7a8455137c0751872cb1eb16  gcc/testsuite/g++.dg/cpp0x/initlist50.C
  abd2d26d4b777b0c8e12c00766e69a53  gcc/testsuite/g++.dg/cpp0x/initlist51.C
  e1a1ac5d906a6e7358e62d1a8a2ff538  gcc/testsuite/g++.dg/cpp0x/initlist52.C
--- 13173,13179 ----
  012b0613830ba9e997ec6a1aa5dd1787  gcc/testsuite/g++.dg/cpp0x/initlist47.C
  d375ad850b8e39546ef2da5df1ce9682  gcc/testsuite/g++.dg/cpp0x/initlist48.C
  fa1b568c2a6b67c0aef8139179850064  gcc/testsuite/g++.dg/cpp0x/initlist49.C
! 481aa69f954fee0d04b6369bade4e79f  gcc/testsuite/g++.dg/cpp0x/initlist5.C
  f3fac88e7a8455137c0751872cb1eb16  gcc/testsuite/g++.dg/cpp0x/initlist50.C
  abd2d26d4b777b0c8e12c00766e69a53  gcc/testsuite/g++.dg/cpp0x/initlist51.C
  e1a1ac5d906a6e7358e62d1a8a2ff538  gcc/testsuite/g++.dg/cpp0x/initlist52.C
*************** aa2ae58d6dec43d7b085b1c3f56c8a6b  gcc/te
*** 12508,12515 ****
  a68c6107558f25b70fd1a97ccd9b3825  gcc/testsuite/g++.dg/cpp0x/initlist66.C
  6650a9c1344eadc6fe089c86a5926e66  gcc/testsuite/g++.dg/cpp0x/initlist67.C
  320891e66b5f1bd721aa9516c0049cf3  gcc/testsuite/g++.dg/cpp0x/initlist68.C
! a8954ad28498e07c2893529b0c6442c1  gcc/testsuite/g++.dg/cpp0x/initlist69.C
! cbf2282d3c567b5a6052614b90bf5909  gcc/testsuite/g++.dg/cpp0x/initlist7.C
  2d66a677a148bf90b713edeecf9c1bbb  gcc/testsuite/g++.dg/cpp0x/initlist70.C
  a33532ad7af196396dbdaa8318439b90  gcc/testsuite/g++.dg/cpp0x/initlist71.C
  a92c5fb6a84d2db86bc3c1e4b73d2393  gcc/testsuite/g++.dg/cpp0x/initlist72.C
--- 13193,13200 ----
  a68c6107558f25b70fd1a97ccd9b3825  gcc/testsuite/g++.dg/cpp0x/initlist66.C
  6650a9c1344eadc6fe089c86a5926e66  gcc/testsuite/g++.dg/cpp0x/initlist67.C
  320891e66b5f1bd721aa9516c0049cf3  gcc/testsuite/g++.dg/cpp0x/initlist68.C
! b9ce10415551f68c3e333092292e5092  gcc/testsuite/g++.dg/cpp0x/initlist69.C
! 8d60c06950f2ffe4729add1b30acfb7b  gcc/testsuite/g++.dg/cpp0x/initlist7.C
  2d66a677a148bf90b713edeecf9c1bbb  gcc/testsuite/g++.dg/cpp0x/initlist70.C
  a33532ad7af196396dbdaa8318439b90  gcc/testsuite/g++.dg/cpp0x/initlist71.C
  a92c5fb6a84d2db86bc3c1e4b73d2393  gcc/testsuite/g++.dg/cpp0x/initlist72.C
*************** bd9a289d0125621da4bc499b31e3f4dc  gcc/te
*** 12534,12540 ****
  9b12d77819d15cca867962c6c284d597  gcc/testsuite/g++.dg/cpp0x/initlist9.C
  8ac4b7fda1afbabe884fb435e50058e7  gcc/testsuite/g++.dg/cpp0x/initlist90.C
  2246fe95f3db3abaf2aef16782aad4aa  gcc/testsuite/g++.dg/cpp0x/initlist91.C
! 1db2904b88a501ae452f0c8fc1fc5cdf  gcc/testsuite/g++.dg/cpp0x/initlist92.C
  cf8755fd15f43cbec418f59193dc9a93  gcc/testsuite/g++.dg/cpp0x/initlist93.C
  45d64991bc424279411d7f51c978e541  gcc/testsuite/g++.dg/cpp0x/initlist94.C
  c27ca98c8a89c6bae88c1f75ab92d8f2  gcc/testsuite/g++.dg/cpp0x/initlist95.C
--- 13219,13225 ----
  9b12d77819d15cca867962c6c284d597  gcc/testsuite/g++.dg/cpp0x/initlist9.C
  8ac4b7fda1afbabe884fb435e50058e7  gcc/testsuite/g++.dg/cpp0x/initlist90.C
  2246fe95f3db3abaf2aef16782aad4aa  gcc/testsuite/g++.dg/cpp0x/initlist91.C
! 2735af816e973a5554481f3793ff77ad  gcc/testsuite/g++.dg/cpp0x/initlist92.C
  cf8755fd15f43cbec418f59193dc9a93  gcc/testsuite/g++.dg/cpp0x/initlist93.C
  45d64991bc424279411d7f51c978e541  gcc/testsuite/g++.dg/cpp0x/initlist94.C
  c27ca98c8a89c6bae88c1f75ab92d8f2  gcc/testsuite/g++.dg/cpp0x/initlist95.C
*************** db7bc02fc98b9ea2b1ac747f9c1b93fc  gcc/te
*** 12609,12614 ****
--- 13294,13300 ----
  af8f4c292dd27cf325f9b83b0e8ae304  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv11.C
  e68f0f2940c3cb9d879b66d1c30fa709  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv12.C
  3dbab9bf6a8658397ceee8badb58e22b  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv13.C
+ ed3487156cee5be1e9868e2280ee1aad  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv14.C
  299fbfde279f22ba6cf7e79d7e17f49b  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv2.C
  13859d1112ce3900c792dcdc2e8ae085  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv3.C
  b91c55a7472ec7a8d2f35a01f04cc387  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv4.C
*************** bd61a64850a53981780c02a87f9f1dca  gcc/te
*** 12676,12683 ****
  c9399095e908bfb2c338755b0557db76  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice28.C
  3818f1aaa373b0a184b4836fac169bab  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice29.C
  8163be06d8cb83f18060b0f809886f54  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice3.C
! 566757828ca7fd872e3ce086519d1f94  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice30.C
! 509c6bc8173633403a3b69ff7b8b13df  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice31.C
  7e07661dc1ca992b2b4883b3ef8927b7  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice32.C
  47226bea0ac5dc3c286fd8fe05473a80  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice4.C
  08db2d244c01eaf3577fdfbf5896e831  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice5.C
--- 13362,13369 ----
  c9399095e908bfb2c338755b0557db76  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice28.C
  3818f1aaa373b0a184b4836fac169bab  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice29.C
  8163be06d8cb83f18060b0f809886f54  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice3.C
! 0b31d0d3f6b2fa94663ed8a6941f2a4f  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice30.C
! 0c30efad493d2dad3526fe6eae9e0ec9  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice31.C
  7e07661dc1ca992b2b4883b3ef8927b7  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice32.C
  47226bea0ac5dc3c286fd8fe05473a80  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice4.C
  08db2d244c01eaf3577fdfbf5896e831  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice5.C
*************** b4ee4e860077c15b5f446a344ee80eb1  gcc/te
*** 12716,12721 ****
--- 13402,13408 ----
  fc0cbc487d6a1b6d02de8cbeb0f06f70  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
  45c8811455b2ff67d0b834d61c336d54  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ns-scope.C
  a50b2f4594cb996e8a25dfe3e8da9a93  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi1.C
+ b8cb4ea322362f9ce500dbe9e1e567dd  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi10.C
  771626fe4c5491ce91092c43744cb02c  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi2.C
  6a7d73b6c513d33dae55973e8fe4ad1d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi3.C
  c8026e051502bc9cfe9092dd262c02cc  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi4.C
*************** d99567b8456dc927600ebf819b5a5619  gcc/te
*** 12733,12739 ****
  cd133675ffbc6460b5d974d9620d59d5  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref2.C
  8c20100753c25aa9b1b9e7bf49794a6f  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-rep1.C
  1513e36e6bd3517091ebe8591db0f6a9  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-return1.C
! b746a9843adc2ec2cb6797348c4a9a12  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-sfinae1.C
  b91279d49de21edd13a5e72ad91a5008  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-shadow1.C
  63aa45acf8523f89e051425dc0837732  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-shadow2.C
  e81e4a7747008a7958f1b544db0eea2f  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-shadow3.C
--- 13420,13426 ----
  cd133675ffbc6460b5d974d9620d59d5  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref2.C
  8c20100753c25aa9b1b9e7bf49794a6f  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-rep1.C
  1513e36e6bd3517091ebe8591db0f6a9  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-return1.C
! 8055bd5b6e44c886ec71c0ed52b4451c  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-sfinae1.C
  b91279d49de21edd13a5e72ad91a5008  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-shadow1.C
  63aa45acf8523f89e051425dc0837732  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-shadow2.C
  e81e4a7747008a7958f1b544db0eea2f  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-shadow3.C
*************** b8cc2b4775f53161af6fb5ad8dd9aec9  gcc/te
*** 12750,12755 ****
--- 13437,13443 ----
  bd42363d4165a48ad99bfda7142b3178  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template14.C
  60815d14466a48a5c352df28f6455161  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template15.C
  47be9f019182b953c600aba25cf571cc  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template16.C
+ c776356a4f4638869d4016c6bf4a52cf  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template17.C
  dbe71301a1e8df7942fe34c5beb4c73e  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template2.C
  94cfc36278ab817fd2df7010aa3c83ba  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template3.C
  e099bfa2ff82527ea9b86eaaab9acb43  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template4.C
*************** bb6feb4793b61fdd7abfa89b1284d0ab  gcc/te
*** 12787,12792 ****
--- 13475,13483 ----
  76cbd45d77305f1f4413f70fb8213751  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-use2.C
  18c978d671e4db891b45910e69c90461  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic1.C
  3ac45d44a43ae18f34839cf90f32815e  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic10.C
+ e28b7ba4f97d99103a4aaa5baa5f22b8  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic11.C
+ 1cdbaa0235aedc3580cd19f0e8e140c6  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic12.C
+ e14a3518aff17f223367df506659dc75  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic13.C
  4207a17bd687f925ffa814b5967e6fad  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic2.C
  4aceadd2b246ab66ad033bf33c21e79a  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic3.C
  f834269fe12aa32c10b9a1ccedad58d6  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic4.C
*************** fbb4a596d7a8bbadec829208456e278b  gcc/te
*** 12806,12812 ****
  7255e800041a798555ab9b7f8fd3108d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-warn4.C
  55e51064d61136b2fc56a556b82f97cd  gcc/testsuite/g++.dg/cpp0x/lambda/pr94426-1.C
  3d6f07b3db79eaa5784b2af709c297de  gcc/testsuite/g++.dg/cpp0x/lambda/pr94426-2.C
! 597f79827ab167c158bc3b52aa51e573  gcc/testsuite/g++.dg/cpp0x/linkage2.C
  b5bfe09b3a6a445ea1f567939c595cc9  gcc/testsuite/g++.dg/cpp0x/literal-type1.C
  ceadcf043cb7e277e03b4160aab8102e  gcc/testsuite/g++.dg/cpp0x/local-targ1.C
  2fc41c677c8e84c030121c0ae006b699  gcc/testsuite/g++.dg/cpp0x/local-type1.C
--- 13497,13503 ----
  7255e800041a798555ab9b7f8fd3108d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-warn4.C
  55e51064d61136b2fc56a556b82f97cd  gcc/testsuite/g++.dg/cpp0x/lambda/pr94426-1.C
  3d6f07b3db79eaa5784b2af709c297de  gcc/testsuite/g++.dg/cpp0x/lambda/pr94426-2.C
! 44f5f91a5cb9c33f86811de9e904fc62  gcc/testsuite/g++.dg/cpp0x/linkage2.C
  b5bfe09b3a6a445ea1f567939c595cc9  gcc/testsuite/g++.dg/cpp0x/literal-type1.C
  ceadcf043cb7e277e03b4160aab8102e  gcc/testsuite/g++.dg/cpp0x/local-targ1.C
  2fc41c677c8e84c030121c0ae006b699  gcc/testsuite/g++.dg/cpp0x/local-type1.C
*************** cd8432c1af15f4b569241057f6cca8bc  gcc/te
*** 12816,12822 ****
  c994f9d97744ab8028b2b30365d6830e  gcc/testsuite/g++.dg/cpp0x/mem-init-aggr1.C
  edbd3e745ec9870bfa9a7bafa2fc38f3  gcc/testsuite/g++.dg/cpp0x/missing-initializer_list-include.C
  58a99d1c1963761ed991a9da0a1064c2  gcc/testsuite/g++.dg/cpp0x/move-return1.C
! d65ada4fd009a56ebcd4b33c423d37e3  gcc/testsuite/g++.dg/cpp0x/move-return2.C
  c1feee422fd37f5c7d79276a96c23d07  gcc/testsuite/g++.dg/cpp0x/move1.C
  9ae0ac924c5c1dafc246af2360f9164a  gcc/testsuite/g++.dg/cpp0x/mutable1.C
  e2a2d13a6043d589d665cbb45ea56db8  gcc/testsuite/g++.dg/cpp0x/named.C
--- 13507,13515 ----
  c994f9d97744ab8028b2b30365d6830e  gcc/testsuite/g++.dg/cpp0x/mem-init-aggr1.C
  edbd3e745ec9870bfa9a7bafa2fc38f3  gcc/testsuite/g++.dg/cpp0x/missing-initializer_list-include.C
  58a99d1c1963761ed991a9da0a1064c2  gcc/testsuite/g++.dg/cpp0x/move-return1.C
! 51b201d42d9b3f195e93472faa5b3fb3  gcc/testsuite/g++.dg/cpp0x/move-return2.C
! bd419357717e135d33957eadeb436bf1  gcc/testsuite/g++.dg/cpp0x/move-return3.C
! 99adfe2ae5608964dc00791646e2b7c4  gcc/testsuite/g++.dg/cpp0x/move-return4.C
  c1feee422fd37f5c7d79276a96c23d07  gcc/testsuite/g++.dg/cpp0x/move1.C
  9ae0ac924c5c1dafc246af2360f9164a  gcc/testsuite/g++.dg/cpp0x/mutable1.C
  e2a2d13a6043d589d665cbb45ea56db8  gcc/testsuite/g++.dg/cpp0x/named.C
*************** fe526337c46e51da61277e503a425d3c  gcc/te
*** 12826,12831 ****
--- 13519,13525 ----
  4c9fa986dc7f6deef6a257359aa5e2ca  gcc/testsuite/g++.dg/cpp0x/new1.C
  5103d8a889c20932b4c0d1f36f771d88  gcc/testsuite/g++.dg/cpp0x/new2.C
  619ac7b9f67c073afd9a0d09b9e71a25  gcc/testsuite/g++.dg/cpp0x/new3.C
+ fd416d8d36f2dd6e9ba7d2cef681fdbb  gcc/testsuite/g++.dg/cpp0x/new4.C
  49906341e996621b46c7c41ec0499a34  gcc/testsuite/g++.dg/cpp0x/new5.C
  981a1b52d13a4061d8e2bfcbe9c0fba0  gcc/testsuite/g++.dg/cpp0x/no-weak1.C
  ed2c46be3ce8712f09fcd7a4cc944efd  gcc/testsuite/g++.dg/cpp0x/noexcept01.C
*************** a7ce890814702f4e47accec9c16c9a87  gcc/te
*** 12857,12863 ****
  8a14caa5e693140f84b5e595cc4a5bcd  gcc/testsuite/g++.dg/cpp0x/noexcept27.C
  312e5911742d260a76aa347c139166f2  gcc/testsuite/g++.dg/cpp0x/noexcept28.C
  e72e3f7b7460146d789bd2377c71d5d0  gcc/testsuite/g++.dg/cpp0x/noexcept29.C
! 2258713eac3a128f685687e7daa36fb6  gcc/testsuite/g++.dg/cpp0x/noexcept30.C
  a1bfa16a893d783dac2fb16b310309aa  gcc/testsuite/g++.dg/cpp0x/noexcept31.C
  561d9b65f7315d6bab3a710ec4347c9c  gcc/testsuite/g++.dg/cpp0x/noexcept32.C
  3d6304a7e40ea170469ff8d2c1f0376e  gcc/testsuite/g++.dg/cpp0x/noexcept33.C
--- 13551,13557 ----
  8a14caa5e693140f84b5e595cc4a5bcd  gcc/testsuite/g++.dg/cpp0x/noexcept27.C
  312e5911742d260a76aa347c139166f2  gcc/testsuite/g++.dg/cpp0x/noexcept28.C
  e72e3f7b7460146d789bd2377c71d5d0  gcc/testsuite/g++.dg/cpp0x/noexcept29.C
! cfad5669952ee25edab337f1649e6f22  gcc/testsuite/g++.dg/cpp0x/noexcept30.C
  a1bfa16a893d783dac2fb16b310309aa  gcc/testsuite/g++.dg/cpp0x/noexcept31.C
  561d9b65f7315d6bab3a710ec4347c9c  gcc/testsuite/g++.dg/cpp0x/noexcept32.C
  3d6304a7e40ea170469ff8d2c1f0376e  gcc/testsuite/g++.dg/cpp0x/noexcept33.C
*************** b30089102d26f0e176aa3f8e7e75923a  gcc/te
*** 12885,12892 ****
--- 13579,13594 ----
  dbb54b67a2672d41d2a9ce040685f064  gcc/testsuite/g++.dg/cpp0x/noexcept55.C
  3d489ab8bea1f26d9895fd708e8aaba1  gcc/testsuite/g++.dg/cpp0x/noexcept56.C
  0899d3ce9c806d82592b9a4f2847bdf8  gcc/testsuite/g++.dg/cpp0x/noexcept57.C
+ eb9e42c40db2bd100ed3905cb18947ba  gcc/testsuite/g++.dg/cpp0x/noexcept58.C
+ 5daa2e1649c8ccd9e4ecd52374598291  gcc/testsuite/g++.dg/cpp0x/noexcept59.C
  8baf3fe2d599fb545d36b51d50d630ec  gcc/testsuite/g++.dg/cpp0x/noexcept60.C
  b950d7f903d3f69a347ad242cbfee61d  gcc/testsuite/g++.dg/cpp0x/noexcept61.C
+ d4b0d9f048e8a94c9bc255582c53738a  gcc/testsuite/g++.dg/cpp0x/noexcept62.C
+ eae74812dc8afb850498c1fb2e6dc011  gcc/testsuite/g++.dg/cpp0x/noexcept63.C
+ cca73583c4a76ad797962fdf199a6c28  gcc/testsuite/g++.dg/cpp0x/noexcept64.C
+ 674ebea57ca9cfc05c27f698d27fa64a  gcc/testsuite/g++.dg/cpp0x/noexcept65.C
+ 23638301f70f9a122fe207093a3b2196  gcc/testsuite/g++.dg/cpp0x/noexcept66.C
+ e423ce7aafce83ac62c98b5375c8fce1  gcc/testsuite/g++.dg/cpp0x/noexcept67.C
  3bf83ccb654cedbb57a45851fb14aa9d  gcc/testsuite/g++.dg/cpp0x/nolinkage1.C
  6b7c91b931bbdacbbffbf9b90a79bc6a  gcc/testsuite/g++.dg/cpp0x/nolinkage1.h
  c92e0eda44dd6b3d74960b249fa5204f  gcc/testsuite/g++.dg/cpp0x/nolinkage1a.cc
*************** ef00b2c2beb9680889aec5881ac6e71e  gcc/te
*** 12958,12963 ****
--- 13660,13667 ----
  efbe4509f010d6478960eb76bc669dd0  gcc/testsuite/g++.dg/cpp0x/nsdmi13.C
  4d72e716873de669b52b72c5b41d93a3  gcc/testsuite/g++.dg/cpp0x/nsdmi14.C
  7cd51474116ca8dd2736084e94727623  gcc/testsuite/g++.dg/cpp0x/nsdmi15.C
+ 98b169ddbc5b4cddfcdd1ec3f434b525  gcc/testsuite/g++.dg/cpp0x/nsdmi16.C
+ 938fe3bd2a8bdd5397e5aa81de153a8e  gcc/testsuite/g++.dg/cpp0x/nsdmi17.C
  6441ebb320eb7cce0916b770b17635d3  gcc/testsuite/g++.dg/cpp0x/nsdmi2.C
  85b39906b9b70d2b99a9fb6081840246  gcc/testsuite/g++.dg/cpp0x/nsdmi3.C
  5f65bb87e42c6ccb9b5a2788ce979bcf  gcc/testsuite/g++.dg/cpp0x/nsdmi4.C
*************** f6b13d6e4f8551af6696e76147a52fb9  gcc/te
*** 12969,12975 ****
  91cd11ac5ee209597b98320eabafd845  gcc/testsuite/g++.dg/cpp0x/nullptr01.C
  fcc799cee7059e225863da99315d2210  gcc/testsuite/g++.dg/cpp0x/nullptr02.C
  8c580eb6e0700da9be9e44c2e2030a91  gcc/testsuite/g++.dg/cpp0x/nullptr03.C
! 2dcea1abe0b32722aeeab20063515a6e  gcc/testsuite/g++.dg/cpp0x/nullptr04.C
  a73ee885f74ff59b41948dc0192b6b15  gcc/testsuite/g++.dg/cpp0x/nullptr05.C
  a0a21f891d39101a0a143ee4037a89c0  gcc/testsuite/g++.dg/cpp0x/nullptr06.C
  c1eb4016685cdf315801aa4137a02728  gcc/testsuite/g++.dg/cpp0x/nullptr07.C
--- 13673,13679 ----
  91cd11ac5ee209597b98320eabafd845  gcc/testsuite/g++.dg/cpp0x/nullptr01.C
  fcc799cee7059e225863da99315d2210  gcc/testsuite/g++.dg/cpp0x/nullptr02.C
  8c580eb6e0700da9be9e44c2e2030a91  gcc/testsuite/g++.dg/cpp0x/nullptr03.C
! 3b4df60e7b0d79e953786a1cbdf420e3  gcc/testsuite/g++.dg/cpp0x/nullptr04.C
  a73ee885f74ff59b41948dc0192b6b15  gcc/testsuite/g++.dg/cpp0x/nullptr05.C
  a0a21f891d39101a0a143ee4037a89c0  gcc/testsuite/g++.dg/cpp0x/nullptr06.C
  c1eb4016685cdf315801aa4137a02728  gcc/testsuite/g++.dg/cpp0x/nullptr07.C
*************** d3a9ba2ba0ca938f90a73718215a4848  gcc/te
*** 12987,12993 ****
  9c99b127852710c9cde19450bbe37096  gcc/testsuite/g++.dg/cpp0x/nullptr19.C
  f1f210112cd22398f4597d7ad0a84584  gcc/testsuite/g++.dg/cpp0x/nullptr20.C
  3c06870c6a02ab57bc136a872305b5e1  gcc/testsuite/g++.dg/cpp0x/nullptr21.C
! a4dbc4f72397e532b78c8d61b7e16c31  gcc/testsuite/g++.dg/cpp0x/nullptr22.C
  d777236ca68365e8e6a7b45bf4e707fb  gcc/testsuite/g++.dg/cpp0x/nullptr23.C
  c7a8f71f47c13e1bfdd9dca2d50df8dd  gcc/testsuite/g++.dg/cpp0x/nullptr24.C
  919c30e34ad54bc368e76f0aa00195fd  gcc/testsuite/g++.dg/cpp0x/nullptr25.C
--- 13691,13697 ----
  9c99b127852710c9cde19450bbe37096  gcc/testsuite/g++.dg/cpp0x/nullptr19.C
  f1f210112cd22398f4597d7ad0a84584  gcc/testsuite/g++.dg/cpp0x/nullptr20.C
  3c06870c6a02ab57bc136a872305b5e1  gcc/testsuite/g++.dg/cpp0x/nullptr21.C
! bd7207f5ebefc0564ca4bfcc8bfb3af0  gcc/testsuite/g++.dg/cpp0x/nullptr22.C
  d777236ca68365e8e6a7b45bf4e707fb  gcc/testsuite/g++.dg/cpp0x/nullptr23.C
  c7a8f71f47c13e1bfdd9dca2d50df8dd  gcc/testsuite/g++.dg/cpp0x/nullptr24.C
  919c30e34ad54bc368e76f0aa00195fd  gcc/testsuite/g++.dg/cpp0x/nullptr25.C
*************** fb7661df85ad6b415b31574c67fa4ee0  gcc/te
*** 13019,13024 ****
--- 13723,13729 ----
  e1598f2c9f261104495d9e7d921f8264  gcc/testsuite/g++.dg/cpp0x/overload.C
  15b4148c92763edcf90b0fe0cb6f7742  gcc/testsuite/g++.dg/cpp0x/overload2.C
  e51fa7b3953a97711f4b666480bad308  gcc/testsuite/g++.dg/cpp0x/overload3.C
+ efb7ae6928ea9000a0ff27b30a77cb58  gcc/testsuite/g++.dg/cpp0x/overload4.C
  c03c417198197c4ba3676deef5492d64  gcc/testsuite/g++.dg/cpp0x/overloadn.C
  7106d3a84752de0a3ebea3782eff9dcc  gcc/testsuite/g++.dg/cpp0x/override1.C
  7b0edd2d71ca32e524d6ff808a7ab0b7  gcc/testsuite/g++.dg/cpp0x/override2.C
*************** afadc39839ba83cfae01b237f8ccdcc8  gcc/te
*** 13120,13126 ****
  eeb523f167581f8351c6d531dca2372c  gcc/testsuite/g++.dg/cpp0x/pr61038.C
  c1ef2b1e3f9c5996571cb4f587bfb4b0  gcc/testsuite/g++.dg/cpp0x/pr61924.C
  8f244afd8a5ce2775b514cac0bb33b05  gcc/testsuite/g++.dg/cpp0x/pr62024.C
! 3056ea078cfbb843787e0d1ea5882b74  gcc/testsuite/g++.dg/cpp0x/pr62101.C
  dcc9991c95d6681373580f55f9125b93  gcc/testsuite/g++.dg/cpp0x/pr63506-1.C
  ee533a2a01523eee2758b09df759f0f2  gcc/testsuite/g++.dg/cpp0x/pr63506-2.C
  e9182fc181b2f685d1473abd3dc6494e  gcc/testsuite/g++.dg/cpp0x/pr63904.C
--- 13825,13831 ----
  eeb523f167581f8351c6d531dca2372c  gcc/testsuite/g++.dg/cpp0x/pr61038.C
  c1ef2b1e3f9c5996571cb4f587bfb4b0  gcc/testsuite/g++.dg/cpp0x/pr61924.C
  8f244afd8a5ce2775b514cac0bb33b05  gcc/testsuite/g++.dg/cpp0x/pr62024.C
! b77c15f8e47eefdd2c1f1e5cb707a9bf  gcc/testsuite/g++.dg/cpp0x/pr62101.C
  dcc9991c95d6681373580f55f9125b93  gcc/testsuite/g++.dg/cpp0x/pr63506-1.C
  ee533a2a01523eee2758b09df759f0f2  gcc/testsuite/g++.dg/cpp0x/pr63506-2.C
  e9182fc181b2f685d1473abd3dc6494e  gcc/testsuite/g++.dg/cpp0x/pr63904.C
*************** e85408993e6b3f61f5073e187d03547d  gcc/te
*** 13143,13149 ****
  0962e3a6b5951296548ed3ba38744cf9  gcc/testsuite/g++.dg/cpp0x/pr68116.C
  448bc36042e9d013ec7bfb4a8df5c4ca  gcc/testsuite/g++.dg/cpp0x/pr68348.C
  9fa085e414e7864d4503ab7c516f33a3  gcc/testsuite/g++.dg/cpp0x/pr68724.C
! ab186fe632aff8530f69060d5961b489  gcc/testsuite/g++.dg/cpp0x/pr68726.C
  d584417478a609ab589447aa7e173812  gcc/testsuite/g++.dg/cpp0x/pr69056.C
  72ddfeb4cc0f740fe85e9fb11ecf08c6  gcc/testsuite/g++.dg/cpp0x/pr69481.C
  0986c11825f9b8bd879f039e6c19c442  gcc/testsuite/g++.dg/cpp0x/pr69637-1.C
--- 13848,13854 ----
  0962e3a6b5951296548ed3ba38744cf9  gcc/testsuite/g++.dg/cpp0x/pr68116.C
  448bc36042e9d013ec7bfb4a8df5c4ca  gcc/testsuite/g++.dg/cpp0x/pr68348.C
  9fa085e414e7864d4503ab7c516f33a3  gcc/testsuite/g++.dg/cpp0x/pr68724.C
! c0edf3639960b767f1f8d042067bcc34  gcc/testsuite/g++.dg/cpp0x/pr68726.C
  d584417478a609ab589447aa7e173812  gcc/testsuite/g++.dg/cpp0x/pr69056.C
  72ddfeb4cc0f740fe85e9fb11ecf08c6  gcc/testsuite/g++.dg/cpp0x/pr69481.C
  0986c11825f9b8bd879f039e6c19c442  gcc/testsuite/g++.dg/cpp0x/pr69637-1.C
*************** a6b1e946ce6b2addfbce8c262b2be0b7  gcc/te
*** 13180,13186 ****
  169c3bbacfb8f7d5faac8fa85aa0dc43  gcc/testsuite/g++.dg/cpp0x/pr77948-4.C
  d5df7fcaed094a9a6f7ce763934ea568  gcc/testsuite/g++.dg/cpp0x/pr77948-5.C
  721634feeb8471093375be0580ea797f  gcc/testsuite/g++.dg/cpp0x/pr77948-6.C
! 785e97f705ee538cb0d469f646b74caa  gcc/testsuite/g++.dg/cpp0x/pr78341.C
  b4d7017820845d86c934ceb6c48d1527  gcc/testsuite/g++.dg/cpp0x/pr78469.C
  7f20ecc1d0425b01c320b4d638d5dc4c  gcc/testsuite/g++.dg/cpp0x/pr78649.C
  fc11ff78853c75dd1793494cd38f1023  gcc/testsuite/g++.dg/cpp0x/pr78693.C
--- 13885,13891 ----
  169c3bbacfb8f7d5faac8fa85aa0dc43  gcc/testsuite/g++.dg/cpp0x/pr77948-4.C
  d5df7fcaed094a9a6f7ce763934ea568  gcc/testsuite/g++.dg/cpp0x/pr77948-5.C
  721634feeb8471093375be0580ea797f  gcc/testsuite/g++.dg/cpp0x/pr77948-6.C
! 14d14c928e19f398f98fb6745ee3e36b  gcc/testsuite/g++.dg/cpp0x/pr78341.C
  b4d7017820845d86c934ceb6c48d1527  gcc/testsuite/g++.dg/cpp0x/pr78469.C
  7f20ecc1d0425b01c320b4d638d5dc4c  gcc/testsuite/g++.dg/cpp0x/pr78649.C
  fc11ff78853c75dd1793494cd38f1023  gcc/testsuite/g++.dg/cpp0x/pr78693.C
*************** d34b0013209051900b8114802ea89d6d  gcc/te
*** 13197,13207 ****
  c20676c0ea9414db47138c5a34d0d20f  gcc/testsuite/g++.dg/cpp0x/pr79369.C
  a5009c71493536f14c34f935f9b9d0a3  gcc/testsuite/g++.dg/cpp0x/pr79457.C
  3d1d584dec389d0b247f2bb60b8805d6  gcc/testsuite/g++.dg/cpp0x/pr79652.C
! 0b13b84af448e02075acf50ed59b222c  gcc/testsuite/g++.dg/cpp0x/pr80259.C
  44672ad65ba62004ce19b12000a5ee61  gcc/testsuite/g++.dg/cpp0x/pr80805.C
  a4e088e97cf0dd72799037b961615941  gcc/testsuite/g++.dg/cpp0x/pr81060.C
  8610bcce3b940f764e90b97cb24b8e55  gcc/testsuite/g++.dg/cpp0x/pr81167.C
! cf7e1353a8e8b9e80d7ddcca77e147b6  gcc/testsuite/g++.dg/cpp0x/pr81246.C
  d2cc68f28cd5fe75d6cff2b41782fb3c  gcc/testsuite/g++.dg/cpp0x/pr81325.C
  b0aef9b4e29c1c639c49513dd20eddaa  gcc/testsuite/g++.dg/cpp0x/pr82299.C
  ae82fe5e053fc4946915e74822cff52e  gcc/testsuite/g++.dg/cpp0x/pr82401.C
--- 13902,13912 ----
  c20676c0ea9414db47138c5a34d0d20f  gcc/testsuite/g++.dg/cpp0x/pr79369.C
  a5009c71493536f14c34f935f9b9d0a3  gcc/testsuite/g++.dg/cpp0x/pr79457.C
  3d1d584dec389d0b247f2bb60b8805d6  gcc/testsuite/g++.dg/cpp0x/pr79652.C
! 440b6e8b6c27bd0705abddd50dad7c55  gcc/testsuite/g++.dg/cpp0x/pr80259.C
  44672ad65ba62004ce19b12000a5ee61  gcc/testsuite/g++.dg/cpp0x/pr80805.C
  a4e088e97cf0dd72799037b961615941  gcc/testsuite/g++.dg/cpp0x/pr81060.C
  8610bcce3b940f764e90b97cb24b8e55  gcc/testsuite/g++.dg/cpp0x/pr81167.C
! 978d448791aca155f4682b17978bd641  gcc/testsuite/g++.dg/cpp0x/pr81246.C
  d2cc68f28cd5fe75d6cff2b41782fb3c  gcc/testsuite/g++.dg/cpp0x/pr81325.C
  b0aef9b4e29c1c639c49513dd20eddaa  gcc/testsuite/g++.dg/cpp0x/pr82299.C
  ae82fe5e053fc4946915e74822cff52e  gcc/testsuite/g++.dg/cpp0x/pr82401.C
*************** bb7f83402a9ba07412c928a5c22bdf7d  gcc/te
*** 13222,13228 ****
  3357d765c2a248307f8a2822fc51cdf5  gcc/testsuite/g++.dg/cpp0x/pr84606.C
  4645cdc10faa1c61c439188409dd5b38  gcc/testsuite/g++.dg/cpp0x/pr84609.C
  8ad683b7769fad28d118622160fbe8d4  gcc/testsuite/g++.dg/cpp0x/pr84610.C
! 820ed4071fe24e095cbca9c7cb169a60  gcc/testsuite/g++.dg/cpp0x/pr84630.C
  c340da8892c614858df3de778cf44493  gcc/testsuite/g++.dg/cpp0x/pr84642.C
  446bb10d54695b463693374fcca15f06  gcc/testsuite/g++.dg/cpp0x/pr84676.C
  f87bb7b5d326b2381e5de10c17cfee3f  gcc/testsuite/g++.dg/cpp0x/pr84705.C
--- 13927,13933 ----
  3357d765c2a248307f8a2822fc51cdf5  gcc/testsuite/g++.dg/cpp0x/pr84606.C
  4645cdc10faa1c61c439188409dd5b38  gcc/testsuite/g++.dg/cpp0x/pr84609.C
  8ad683b7769fad28d118622160fbe8d4  gcc/testsuite/g++.dg/cpp0x/pr84610.C
! 853f51efcf213783c07b221d7afd1dc7  gcc/testsuite/g++.dg/cpp0x/pr84630.C
  c340da8892c614858df3de778cf44493  gcc/testsuite/g++.dg/cpp0x/pr84642.C
  446bb10d54695b463693374fcca15f06  gcc/testsuite/g++.dg/cpp0x/pr84676.C
  f87bb7b5d326b2381e5de10c17cfee3f  gcc/testsuite/g++.dg/cpp0x/pr84705.C
*************** baf0dc0526b9c7116fa5e5cbccbe2286  gcc/te
*** 13320,13326 ****
  406a665e1cf18ab29d627440010b6614  gcc/testsuite/g++.dg/cpp0x/ref-qual18.C
  b29a1864b99db07583a850e2242025b0  gcc/testsuite/g++.dg/cpp0x/ref-qual19.C
  17d77d3ef6cc0e1cfd53228f15a40017  gcc/testsuite/g++.dg/cpp0x/ref-qual2.C
! c6680777cdfaad9f3efaabc261fd7dc7  gcc/testsuite/g++.dg/cpp0x/ref-qual20.C
  68b27ec15231994ad0330625660d2720  gcc/testsuite/g++.dg/cpp0x/ref-qual3.C
  1bb06529f586a3e77263290dd006534e  gcc/testsuite/g++.dg/cpp0x/ref-qual4.C
  32e38316bdc7aa39b2e1811744ca40b7  gcc/testsuite/g++.dg/cpp0x/ref-qual5.C
--- 14025,14031 ----
  406a665e1cf18ab29d627440010b6614  gcc/testsuite/g++.dg/cpp0x/ref-qual18.C
  b29a1864b99db07583a850e2242025b0  gcc/testsuite/g++.dg/cpp0x/ref-qual19.C
  17d77d3ef6cc0e1cfd53228f15a40017  gcc/testsuite/g++.dg/cpp0x/ref-qual2.C
! 14edaa2083aa1c7fda41f39e5ec57607  gcc/testsuite/g++.dg/cpp0x/ref-qual20.C
  68b27ec15231994ad0330625660d2720  gcc/testsuite/g++.dg/cpp0x/ref-qual3.C
  1bb06529f586a3e77263290dd006534e  gcc/testsuite/g++.dg/cpp0x/ref-qual4.C
  32e38316bdc7aa39b2e1811744ca40b7  gcc/testsuite/g++.dg/cpp0x/ref-qual5.C
*************** c288331543b30d300aa6764b7ae67cda  gcc/te
*** 13330,13336 ****
  ed1433ae38ea49612a71ea6123c29d74  gcc/testsuite/g++.dg/cpp0x/ref-qual9.C
  3d3c78a78484238b76f840d346c73307  gcc/testsuite/g++.dg/cpp0x/reference_collapsing.C
  c64ae67d31b051e49d0eb8f2c33f4819  gcc/testsuite/g++.dg/cpp0x/reinterpret_cast1.C
! b40ac51909e6a02c84a04247688b185c  gcc/testsuite/g++.dg/cpp0x/reinterpret_cast2.C
  2d33d6463b23da791a795f21e50b808a  gcc/testsuite/g++.dg/cpp0x/rv-array1.C
  9122229630112e85dde4be74e27fcb88  gcc/testsuite/g++.dg/cpp0x/rv-bitfield.C
  1e9966d28717f5fb799ff5c2afa3c83b  gcc/testsuite/g++.dg/cpp0x/rv-bitfield2.C
--- 14035,14041 ----
  ed1433ae38ea49612a71ea6123c29d74  gcc/testsuite/g++.dg/cpp0x/ref-qual9.C
  3d3c78a78484238b76f840d346c73307  gcc/testsuite/g++.dg/cpp0x/reference_collapsing.C
  c64ae67d31b051e49d0eb8f2c33f4819  gcc/testsuite/g++.dg/cpp0x/reinterpret_cast1.C
! 1c7786594a67e7c162cf4c6f3d4bc847  gcc/testsuite/g++.dg/cpp0x/reinterpret_cast2.C
  2d33d6463b23da791a795f21e50b808a  gcc/testsuite/g++.dg/cpp0x/rv-array1.C
  9122229630112e85dde4be74e27fcb88  gcc/testsuite/g++.dg/cpp0x/rv-bitfield.C
  1e9966d28717f5fb799ff5c2afa3c83b  gcc/testsuite/g++.dg/cpp0x/rv-bitfield2.C
*************** b40ac51909e6a02c84a04247688b185c  gcc/te
*** 13340,13346 ****
  2f59293907015075e8362ece252a2234  gcc/testsuite/g++.dg/cpp0x/rv-cast3.C
  db69e4e0631892725d99d48517e599d5  gcc/testsuite/g++.dg/cpp0x/rv-cast4.C
  264ff9d7cfc38198ff55c16a016563aa  gcc/testsuite/g++.dg/cpp0x/rv-cast5.C
! 2afe0a70cc7f7f067a60ce414d09ab4a  gcc/testsuite/g++.dg/cpp0x/rv-cast6.C
  27fca615b5ec8b1c9bd7d91180538466  gcc/testsuite/g++.dg/cpp0x/rv-cast7.C
  ccba3040ed86b5ffae7d72b18f556d1c  gcc/testsuite/g++.dg/cpp0x/rv-cond1.C
  682309935142019cb21a9df2c35d9a5c  gcc/testsuite/g++.dg/cpp0x/rv-cond2.C
--- 14045,14051 ----
  2f59293907015075e8362ece252a2234  gcc/testsuite/g++.dg/cpp0x/rv-cast3.C
  db69e4e0631892725d99d48517e599d5  gcc/testsuite/g++.dg/cpp0x/rv-cast4.C
  264ff9d7cfc38198ff55c16a016563aa  gcc/testsuite/g++.dg/cpp0x/rv-cast5.C
! b8fe055b5bc96b67484c0ff47e76ec44  gcc/testsuite/g++.dg/cpp0x/rv-cast6.C
  27fca615b5ec8b1c9bd7d91180538466  gcc/testsuite/g++.dg/cpp0x/rv-cast7.C
  ccba3040ed86b5ffae7d72b18f556d1c  gcc/testsuite/g++.dg/cpp0x/rv-cond1.C
  682309935142019cb21a9df2c35d9a5c  gcc/testsuite/g++.dg/cpp0x/rv-cond2.C
*************** f213598004dcfd0117fecc9593637790  gcc/te
*** 13356,13361 ****
--- 14061,14067 ----
  94c30aa2c23a35b6b477f7b1b868841b  gcc/testsuite/g++.dg/cpp0x/rv-func2.C
  b90dda56d04244318a53aa1fd8d04e61  gcc/testsuite/g++.dg/cpp0x/rv-func3.C
  a622d27a6844d3ef35c8d8c481a42bb5  gcc/testsuite/g++.dg/cpp0x/rv-init1.C
+ 6cec3415d3784c4ea3c10aa20d1aec6e  gcc/testsuite/g++.dg/cpp0x/rv-life.C
  eb4954f499863f542d04423a5703a544  gcc/testsuite/g++.dg/cpp0x/rv-lvalue-req.C
  2a81ce678792db63349c1f40f691b226  gcc/testsuite/g++.dg/cpp0x/rv-reinterpret.C
  57ca627add7fb3090157211ed3ea80fd  gcc/testsuite/g++.dg/cpp0x/rv-restrict.C
*************** c50ea6693dabedb7cd0a362c0e829771  gcc/te
*** 13430,13436 ****
  7b81463244b957c8c4af2aa02bc32a56  gcc/testsuite/g++.dg/cpp0x/sfinae37.C
  170c0a00eb3f33ad1955cde8ce81c0d8  gcc/testsuite/g++.dg/cpp0x/sfinae38.C
  df4b8c3a52c1091071aae51a9baba3a2  gcc/testsuite/g++.dg/cpp0x/sfinae39.C
! d1cc7ac4b5fb11b5d2d649dbec1501f3  gcc/testsuite/g++.dg/cpp0x/sfinae4.C
  2fb8fa59910d2727eae209d68c2185da  gcc/testsuite/g++.dg/cpp0x/sfinae40.C
  90a3580cc1ad805e9c175338e56e381a  gcc/testsuite/g++.dg/cpp0x/sfinae41.C
  6df8559e47140ac644ebf747ad1e33df  gcc/testsuite/g++.dg/cpp0x/sfinae42.C
--- 14136,14142 ----
  7b81463244b957c8c4af2aa02bc32a56  gcc/testsuite/g++.dg/cpp0x/sfinae37.C
  170c0a00eb3f33ad1955cde8ce81c0d8  gcc/testsuite/g++.dg/cpp0x/sfinae38.C
  df4b8c3a52c1091071aae51a9baba3a2  gcc/testsuite/g++.dg/cpp0x/sfinae39.C
! 2c412c3941a21ee9a3c92cb3c11905a8  gcc/testsuite/g++.dg/cpp0x/sfinae4.C
  2fb8fa59910d2727eae209d68c2185da  gcc/testsuite/g++.dg/cpp0x/sfinae40.C
  90a3580cc1ad805e9c175338e56e381a  gcc/testsuite/g++.dg/cpp0x/sfinae41.C
  6df8559e47140ac644ebf747ad1e33df  gcc/testsuite/g++.dg/cpp0x/sfinae42.C
*************** e1722a256dfcd4ecb3759322af915f24  gcc/te
*** 13459,13464 ****
--- 14165,14171 ----
  5550601713048fc2035e09b7afa2de0d  gcc/testsuite/g++.dg/cpp0x/sfinae63.C
  5057317176f66cb1d8063c4f091fb9ef  gcc/testsuite/g++.dg/cpp0x/sfinae64.C
  fadfd124d98089fde0add757adc40755  gcc/testsuite/g++.dg/cpp0x/sfinae65.C
+ 652e811b9432bae8ea8feb762a0c0616  gcc/testsuite/g++.dg/cpp0x/sfinae66.C
  ec1a51ea3fd41e6e61c8f425bde1fd0b  gcc/testsuite/g++.dg/cpp0x/sfinae7.C
  547894832b1452d5f513938e0cb8a166  gcc/testsuite/g++.dg/cpp0x/sfinae8.C
  03177ceac1dca2efe41bd4b603c2a79e  gcc/testsuite/g++.dg/cpp0x/sfinae9.C
*************** b37ccc1795a94faef1d66ac5782dcc39  gcc/te
*** 13470,13475 ****
--- 14177,14183 ----
  e884bf1c365eb117bddb8cf25bb61944  gcc/testsuite/g++.dg/cpp0x/static_assert13.C
  51637c7e4d8745c6a05dd4de2ac799bc  gcc/testsuite/g++.dg/cpp0x/static_assert14.C
  ef0f59d78fc1f37751b79acad3704989  gcc/testsuite/g++.dg/cpp0x/static_assert15.C
+ 53545b7342e66ae87c68f3a770b6a193  gcc/testsuite/g++.dg/cpp0x/static_assert16.C
  7c94507411d8f0fcd4964618204cd929  gcc/testsuite/g++.dg/cpp0x/static_assert2.C
  f24eae3c4070d37d2bbcb3f45a386807  gcc/testsuite/g++.dg/cpp0x/static_assert3.C
  09c6459c722f7fda152e22ef59d4e30c  gcc/testsuite/g++.dg/cpp0x/static_assert4.C
*************** f130c799f5624997275657362cbc155f  gcc/te
*** 13497,13502 ****
--- 14205,14211 ----
  09bf4c9ea4be9a78430f128693f12e1b  gcc/testsuite/g++.dg/cpp0x/temp_default7.C
  3b5dc721d5f8945d257645537b85505e  gcc/testsuite/g++.dg/cpp0x/template_deduction.C
  d8e8033cd6a6a6a2fbf1368f7775ac8b  gcc/testsuite/g++.dg/cpp0x/this1.C
+ d163f4d1121a82d4c4ddd269817b4753  gcc/testsuite/g++.dg/cpp0x/this2.C
  488528fbea12aa95fa338d2a320f5fb0  gcc/testsuite/g++.dg/cpp0x/trailing1.C
  b3ffcd3fe45fdfaefdabb2511bf9b313  gcc/testsuite/g++.dg/cpp0x/trailing10.C
  876e96d0eed6375333af80e688e23863  gcc/testsuite/g++.dg/cpp0x/trailing11.C
*************** c0bba2c546aa3f650d69e738211a7b4e  gcc/te
*** 13555,13561 ****
  66db6abb93529ba90cdfe4e4b42525f8  gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
  11761d8ff202feddb1cf7a455d6a5512  gcc/testsuite/g++.dg/cpp0x/udlit-sfinae-neg.C
  3ec6c18837b63f9912c715949577f4f0  gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
! a689d876ac0ee6a58ece549add3e16c7  gcc/testsuite/g++.dg/cpp0x/udlit-shadow-neg.C
  7ed88f5df044b39c06dd30c049f587a3  gcc/testsuite/g++.dg/cpp0x/udlit-string-length.C
  e4eff855502dea296eb6bc9057513594  gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
  6936b5e9fca3eaf5914d66bf5edc59f8  gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.h
--- 14264,14270 ----
  66db6abb93529ba90cdfe4e4b42525f8  gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
  11761d8ff202feddb1cf7a455d6a5512  gcc/testsuite/g++.dg/cpp0x/udlit-sfinae-neg.C
  3ec6c18837b63f9912c715949577f4f0  gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
! ec2d616dd2258bb82da2943a8cbc2999  gcc/testsuite/g++.dg/cpp0x/udlit-shadow-neg.C
  7ed88f5df044b39c06dd30c049f587a3  gcc/testsuite/g++.dg/cpp0x/udlit-string-length.C
  e4eff855502dea296eb6bc9057513594  gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
  6936b5e9fca3eaf5914d66bf5edc59f8  gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.h
*************** d628aec947fb9383000669568fb54fe3  gcc/te
*** 13577,13585 ****
  2ba8015512089b81fdf68ee5e452e37b  gcc/testsuite/g++.dg/cpp0x/union7.C
  88c785e361fc4c7ed26f0505241bad1d  gcc/testsuite/g++.dg/cpp0x/union8.C
  6d6ff5e1107f65ae6fdc850aaada06ea  gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C
! 7687213971360103949df277ec9a4982  gcc/testsuite/g++.dg/cpp0x/using-enum-1.C
! e6703a4614bef3d010b5cc8bf620cd8c  gcc/testsuite/g++.dg/cpp0x/using-enum-2.C
! 8618a58fcd10d54e825b7c30f4c6d0b6  gcc/testsuite/g++.dg/cpp0x/using-enum-3.C
  c2935d37441711e00030dd4962af84b5  gcc/testsuite/g++.dg/cpp0x/variadic-104.C
  0fa36631e12ec97e9e0d646888cd43ab  gcc/testsuite/g++.dg/cpp0x/variadic-alias1.C
  05f34d2879385095df8946531cb7c747  gcc/testsuite/g++.dg/cpp0x/variadic-alias2.C
--- 14286,14294 ----
  2ba8015512089b81fdf68ee5e452e37b  gcc/testsuite/g++.dg/cpp0x/union7.C
  88c785e361fc4c7ed26f0505241bad1d  gcc/testsuite/g++.dg/cpp0x/union8.C
  6d6ff5e1107f65ae6fdc850aaada06ea  gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C
! 6f9d1985ea073c86a564ef727a7040e8  gcc/testsuite/g++.dg/cpp0x/using-enum-1.C
! 254a80107b287ecb07d7172823209c09  gcc/testsuite/g++.dg/cpp0x/using-enum-2.C
! f7ee372a6e85bc9010a49d3d9086a4ff  gcc/testsuite/g++.dg/cpp0x/using-enum-3.C
  c2935d37441711e00030dd4962af84b5  gcc/testsuite/g++.dg/cpp0x/variadic-104.C
  0fa36631e12ec97e9e0d646888cd43ab  gcc/testsuite/g++.dg/cpp0x/variadic-alias1.C
  05f34d2879385095df8946531cb7c747  gcc/testsuite/g++.dg/cpp0x/variadic-alias2.C
*************** c2935d37441711e00030dd4962af84b5  gcc/te
*** 13589,13594 ****
--- 14298,14304 ----
  c0422b5906ec9f754211435f9c08f8dd  gcc/testsuite/g++.dg/cpp0x/variadic-crash3.C
  b6f531b83989cd62725f0bfeb30ad7fe  gcc/testsuite/g++.dg/cpp0x/variadic-crash4.C
  10ac54e6a2408dc79bbc43e024c85267  gcc/testsuite/g++.dg/cpp0x/variadic-crash5.C
+ 0a24ad717370f7802f37ceebffc7eb3d  gcc/testsuite/g++.dg/cpp0x/variadic-crash6.C
  51ab54d13c1bc4b5bb4bbc37b0c91002  gcc/testsuite/g++.dg/cpp0x/variadic-decltype1.C
  838c74313216e798999fa2b5ad006175  gcc/testsuite/g++.dg/cpp0x/variadic-default.C
  a959853b4b06b6225bb508d5c51f1e43  gcc/testsuite/g++.dg/cpp0x/variadic-diag1.C
*************** eae406793547757d01528d5680162682  gcc/te
*** 13655,13661 ****
  14d049c47cd861f03247bae7077f7a4a  gcc/testsuite/g++.dg/cpp0x/variadic-unify-3.C
  72f7c5714fa45fa32619b387e484e88b  gcc/testsuite/g++.dg/cpp0x/variadic-unify.C
  30d5d2ca1010b71be91917305590fe27  gcc/testsuite/g++.dg/cpp0x/variadic-unresolved.C
! edf9e45ed1a17b392fa9f15f8a7cce75  gcc/testsuite/g++.dg/cpp0x/variadic-value1.C
  6ea870203ba6aa066e88fcb8e46edb75  gcc/testsuite/g++.dg/cpp0x/variadic1.C
  0c446134e3623f43b88b5e13a619a005  gcc/testsuite/g++.dg/cpp0x/variadic10.C
  96b880605040024fe863103abac1fa81  gcc/testsuite/g++.dg/cpp0x/variadic100.C
--- 14365,14371 ----
  14d049c47cd861f03247bae7077f7a4a  gcc/testsuite/g++.dg/cpp0x/variadic-unify-3.C
  72f7c5714fa45fa32619b387e484e88b  gcc/testsuite/g++.dg/cpp0x/variadic-unify.C
  30d5d2ca1010b71be91917305590fe27  gcc/testsuite/g++.dg/cpp0x/variadic-unresolved.C
! fa162cd670612451c5e6f4d3b834fa02  gcc/testsuite/g++.dg/cpp0x/variadic-value1.C
  6ea870203ba6aa066e88fcb8e46edb75  gcc/testsuite/g++.dg/cpp0x/variadic1.C
  0c446134e3623f43b88b5e13a619a005  gcc/testsuite/g++.dg/cpp0x/variadic10.C
  96b880605040024fe863103abac1fa81  gcc/testsuite/g++.dg/cpp0x/variadic100.C
*************** b57d433ff6861deeea42dc39e9d48cc2  gcc/te
*** 13805,13811 ****
  df1724948cff2ef496b805fb76373296  gcc/testsuite/g++.dg/cpp0x/variadic71.C
  00da5cc622c7da92fca6cad428b91af7  gcc/testsuite/g++.dg/cpp0x/variadic72.C
  c709704d530daa80748259ccf3033a31  gcc/testsuite/g++.dg/cpp0x/variadic73.C
! 5d3a78a3816a898e36c9bb28ef13807a  gcc/testsuite/g++.dg/cpp0x/variadic74.C
  e4f8dfd0aa613faabae60d8f99e8e498  gcc/testsuite/g++.dg/cpp0x/variadic75.C
  9ae68224072da4a2723e2c666742afdf  gcc/testsuite/g++.dg/cpp0x/variadic76.C
  d81d142f600f2ba73ae42c555c79601e  gcc/testsuite/g++.dg/cpp0x/variadic77.C
--- 14515,14521 ----
  df1724948cff2ef496b805fb76373296  gcc/testsuite/g++.dg/cpp0x/variadic71.C
  00da5cc622c7da92fca6cad428b91af7  gcc/testsuite/g++.dg/cpp0x/variadic72.C
  c709704d530daa80748259ccf3033a31  gcc/testsuite/g++.dg/cpp0x/variadic73.C
! 6e3d434f28df49c8fd4d0c0feb5dfd06  gcc/testsuite/g++.dg/cpp0x/variadic74.C
  e4f8dfd0aa613faabae60d8f99e8e498  gcc/testsuite/g++.dg/cpp0x/variadic75.C
  9ae68224072da4a2723e2c666742afdf  gcc/testsuite/g++.dg/cpp0x/variadic76.C
  d81d142f600f2ba73ae42c555c79601e  gcc/testsuite/g++.dg/cpp0x/variadic77.C
*************** d7602a60449fc61c76ec8c46127f6987  gcc/te
*** 13870,13881 ****
--- 14580,14594 ----
  5441b844f46626eb4ee92671f215a0b5  gcc/testsuite/g++.dg/cpp0x/vt-57397-1.C
  933e239fc892d78ec5fe2fba93d8e41e  gcc/testsuite/g++.dg/cpp0x/vt-57397-2.C
  119e25bef9bfd9bc501817cb6a7a133b  gcc/testsuite/g++.dg/cpp0x/vt-57626.C
+ 671b50bb42e6789a78615f66472afc69  gcc/testsuite/g++.dg/cpp0x/vt-58156.C
  79b4b3485953dcb62a7d989eae0fa304  gcc/testsuite/g++.dg/cpp0x/vt-59361.C
+ de8984a8783e77b806124c27bcca13f3  gcc/testsuite/g++.dg/cpp0x/vt-59978.C
  fe10132d07abc445cf58f99300dd5293  gcc/testsuite/g++.dg/cpp0x/vt-59988.C
  efa56e661c1b93922e31accf4dc07df8  gcc/testsuite/g++.dg/cpp0x/vt-60130.C
  807e377941696e140fbbcccd051a50d1  gcc/testsuite/g++.dg/cpp0x/vt-62276.C
  8ac95c50a3d7168072927406cdd104eb  gcc/testsuite/g++.dg/cpp0x/vt-65071.C
  d8fa3c0c87cf46338e86be98f1bcc123  gcc/testsuite/g++.dg/cpp0x/vt-65790.C
+ 672a353d77f5482c78324f9217811ea5  gcc/testsuite/g++.dg/cpp0x/vt-88982.C
  f2fd005acb516521f99d057df5d3a68d  gcc/testsuite/g++.dg/cpp0x/warn-ovl1.C
  abea1f5e822e6917069778a5824b4379  gcc/testsuite/g++.dg/cpp0x/warn-ovl2.C
  b823b50bc430c6f0253adad46e2b9fea  gcc/testsuite/g++.dg/cpp0x/warn_cxx0x.C
*************** c8a2c7e8b1e0cbd3443ab02738d85644  gcc/te
*** 13888,13898 ****
  7e139c0fd3ae89953faa45ef71bd8838  gcc/testsuite/g++.dg/cpp1y/alias-decl1.C
  51bba41824667d1a48654ae6fb05aad6  gcc/testsuite/g++.dg/cpp1y/alias-decl2.C
  9cb42e3162b14f4df1a55310215558e2  gcc/testsuite/g++.dg/cpp1y/alias-decl3.C
! 438090a75b721771fcfd7c5159abbb67  gcc/testsuite/g++.dg/cpp1y/attr-deprecated-2.C
  e373712ec656768ee571d2a278d813da  gcc/testsuite/g++.dg/cpp1y/attr-deprecated-3.C
  27985f1bda815c3234299bd64d8847b2  gcc/testsuite/g++.dg/cpp1y/attr-deprecated-neg.C
  668d7e4abca655f37806cd95cf359930  gcc/testsuite/g++.dg/cpp1y/attr-deprecated.C
  fb2e417a364945cb8149b9526292009b  gcc/testsuite/g++.dg/cpp1y/attributes-enum-1.C
  7dee7c173ea24d639c1b37774d37d9b4  gcc/testsuite/g++.dg/cpp1y/auto-dtor1.C
  dc5451a9ff24848e54d61818d52a6d94  gcc/testsuite/g++.dg/cpp1y/auto-fn1.C
  7f87375ea759512b1c52f02744bd144b  gcc/testsuite/g++.dg/cpp1y/auto-fn10.C
--- 14601,14612 ----
  7e139c0fd3ae89953faa45ef71bd8838  gcc/testsuite/g++.dg/cpp1y/alias-decl1.C
  51bba41824667d1a48654ae6fb05aad6  gcc/testsuite/g++.dg/cpp1y/alias-decl2.C
  9cb42e3162b14f4df1a55310215558e2  gcc/testsuite/g++.dg/cpp1y/alias-decl3.C
! 222e67daa09965d93b0dfe511a84bcde  gcc/testsuite/g++.dg/cpp1y/attr-deprecated-2.C
  e373712ec656768ee571d2a278d813da  gcc/testsuite/g++.dg/cpp1y/attr-deprecated-3.C
  27985f1bda815c3234299bd64d8847b2  gcc/testsuite/g++.dg/cpp1y/attr-deprecated-neg.C
  668d7e4abca655f37806cd95cf359930  gcc/testsuite/g++.dg/cpp1y/attr-deprecated.C
  fb2e417a364945cb8149b9526292009b  gcc/testsuite/g++.dg/cpp1y/attributes-enum-1.C
+ 4b1ec34d7c78102b044c47930c2c4315  gcc/testsuite/g++.dg/cpp1y/auto-96647.C
  7dee7c173ea24d639c1b37774d37d9b4  gcc/testsuite/g++.dg/cpp1y/auto-dtor1.C
  dc5451a9ff24848e54d61818d52a6d94  gcc/testsuite/g++.dg/cpp1y/auto-fn1.C
  7f87375ea759512b1c52f02744bd144b  gcc/testsuite/g++.dg/cpp1y/auto-fn10.C
*************** f14e5c551fb573045f545479bf77b0d9  gcc/te
*** 13947,13968 ****
  e8b2e4a51212edac48bff97c2ba40b77  gcc/testsuite/g++.dg/cpp1y/auto-fn55.C
  c58aea587f92e9318dcbcd4325ab9500  gcc/testsuite/g++.dg/cpp1y/auto-fn56.C
  16b6f02943caa33a60147c1a057fc46d  gcc/testsuite/g++.dg/cpp1y/auto-fn57.C
  3861eed28323480e4913eea3d9c0ec00  gcc/testsuite/g++.dg/cpp1y/auto-fn6.C
  0e31cca86c98231e2720ee96ce25a02d  gcc/testsuite/g++.dg/cpp1y/auto-fn60.C
  03b6f2674c38c8f6ed9f7fc03583b1dc  gcc/testsuite/g++.dg/cpp1y/auto-fn7.C
  e9a317fa32e36cef4553b50965e48550  gcc/testsuite/g++.dg/cpp1y/auto-fn8.C
  d67958b896eb1dae6f8862fd59b01c62  gcc/testsuite/g++.dg/cpp1y/auto-fn9.C
  252d5e23574d814692eda27da0d3490e  gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C
  74303a8348f1ee9cdd9f827d5ae03cee  gcc/testsuite/g++.dg/cpp1y/auto-neg1.C
  637930aa51b16c9a514c1e2843645f75  gcc/testsuite/g++.dg/cpp1y/builtin_FUNCTION.C
! 2fff80acd4abc211f58b325601c3ee03  gcc/testsuite/g++.dg/cpp1y/builtin_location.C
  f3e3d98fcbe616df26f26eb779c66c1f  gcc/testsuite/g++.dg/cpp1y/complex_literals.h
  22aa7b94d36d9e158c5c52dd546a0e7c  gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
  99847692cf2ccd072e419199625ee070  gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
  5f47973cdaddb1d27f6ea767e7275723  gcc/testsuite/g++.dg/cpp1y/complex_literals2.C
  a1995c633dded5a3445bad4fcc3b55cf  gcc/testsuite/g++.dg/cpp1y/complex_literals2a.C
  2d72668eefa5659edd32ef8dabc1c48e  gcc/testsuite/g++.dg/cpp1y/constexpr-50060.C
! d3ca7557e59bd6b82fae38b637088145  gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
  9ecc58eab147adafbf3780c51ed706fc  gcc/testsuite/g++.dg/cpp1y/constexpr-70265-1.C
  d93e3fd296aeb9e52296327a0f0755cb  gcc/testsuite/g++.dg/cpp1y/constexpr-70265-2.C
  4549cd7ef9ad61651767a36edd2f8190  gcc/testsuite/g++.dg/cpp1y/constexpr-71537.C
--- 14661,14685 ----
  e8b2e4a51212edac48bff97c2ba40b77  gcc/testsuite/g++.dg/cpp1y/auto-fn55.C
  c58aea587f92e9318dcbcd4325ab9500  gcc/testsuite/g++.dg/cpp1y/auto-fn56.C
  16b6f02943caa33a60147c1a057fc46d  gcc/testsuite/g++.dg/cpp1y/auto-fn57.C
+ 6fb9fbe5ab7c10e45ae6b0a39a34daf7  gcc/testsuite/g++.dg/cpp1y/auto-fn58.C
+ 30bcbf110bfbb5781cb2d0893a476868  gcc/testsuite/g++.dg/cpp1y/auto-fn59.C
  3861eed28323480e4913eea3d9c0ec00  gcc/testsuite/g++.dg/cpp1y/auto-fn6.C
  0e31cca86c98231e2720ee96ce25a02d  gcc/testsuite/g++.dg/cpp1y/auto-fn60.C
+ 3f6c82c7a4c98568a0da01aaede06cbd  gcc/testsuite/g++.dg/cpp1y/auto-fn61.C
  03b6f2674c38c8f6ed9f7fc03583b1dc  gcc/testsuite/g++.dg/cpp1y/auto-fn7.C
  e9a317fa32e36cef4553b50965e48550  gcc/testsuite/g++.dg/cpp1y/auto-fn8.C
  d67958b896eb1dae6f8862fd59b01c62  gcc/testsuite/g++.dg/cpp1y/auto-fn9.C
  252d5e23574d814692eda27da0d3490e  gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C
  74303a8348f1ee9cdd9f827d5ae03cee  gcc/testsuite/g++.dg/cpp1y/auto-neg1.C
  637930aa51b16c9a514c1e2843645f75  gcc/testsuite/g++.dg/cpp1y/builtin_FUNCTION.C
! b95ecf876a00318b8f10685332dab36a  gcc/testsuite/g++.dg/cpp1y/builtin_location.C
  f3e3d98fcbe616df26f26eb779c66c1f  gcc/testsuite/g++.dg/cpp1y/complex_literals.h
  22aa7b94d36d9e158c5c52dd546a0e7c  gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
  99847692cf2ccd072e419199625ee070  gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
  5f47973cdaddb1d27f6ea767e7275723  gcc/testsuite/g++.dg/cpp1y/complex_literals2.C
  a1995c633dded5a3445bad4fcc3b55cf  gcc/testsuite/g++.dg/cpp1y/complex_literals2a.C
  2d72668eefa5659edd32ef8dabc1c48e  gcc/testsuite/g++.dg/cpp1y/constexpr-50060.C
! 9b2030f5f70b0e913feb1b957c799f4f  gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
  9ecc58eab147adafbf3780c51ed706fc  gcc/testsuite/g++.dg/cpp1y/constexpr-70265-1.C
  d93e3fd296aeb9e52296327a0f0755cb  gcc/testsuite/g++.dg/cpp1y/constexpr-70265-2.C
  4549cd7ef9ad61651767a36edd2f8190  gcc/testsuite/g++.dg/cpp1y/constexpr-71537.C
*************** cfc19422b140639fdc2dc2bf7ca295b6  gcc/te
*** 13976,13986 ****
--- 14693,14705 ----
  c31b3bbd5d5198b87b168be79f7471eb  gcc/testsuite/g++.dg/cpp1y/constexpr-79681-2.C
  0e229f72c4a6ba1d2879bc40d887b2ad  gcc/testsuite/g++.dg/cpp1y/constexpr-80739.C
  07754f0c0515460293659ab43f076a1a  gcc/testsuite/g++.dg/cpp1y/constexpr-82218.C
+ 2b5de21f188100c4ec483576d0f79c84  gcc/testsuite/g++.dg/cpp1y/constexpr-82304.C
  e4f44ba83e70dc31ae39e2b7a5451b57  gcc/testsuite/g++.dg/cpp1y/constexpr-83116.C
  0a22dbeb49c9df6cba648ed043c987fe  gcc/testsuite/g++.dg/cpp1y/constexpr-83921-1.C
  89c250c04581764fb43ea62b9fbb5271  gcc/testsuite/g++.dg/cpp1y/constexpr-83921-2.C
  b4fe76990ca1de144127b4f046e4bcc4  gcc/testsuite/g++.dg/cpp1y/constexpr-83921-3.C
  f45415e4c5b0363b3295c1e66382cee8  gcc/testsuite/g++.dg/cpp1y/constexpr-84192.C
+ 936182876782ae21f7b511f66e1aaf05  gcc/testsuite/g++.dg/cpp1y/constexpr-84494.C
  b9e6a245bf8b000527fce6b59f4f31f8  gcc/testsuite/g++.dg/cpp1y/constexpr-84808.C
  91d1033833da4a787f371688d7a57b85  gcc/testsuite/g++.dg/cpp1y/constexpr-86524.C
  64bd8ff31626e8ade0181a27877bbb95  gcc/testsuite/g++.dg/cpp1y/constexpr-86767.C
*************** d8d5c97f0cfc535ec6b3092d8c2ad0a6  gcc/te
*** 13995,14006 ****
  489bd3de48ef1607ca304163277af5df  gcc/testsuite/g++.dg/cpp1y/constexpr-89652.C
  90fa885f78614bf5c1521576e421e9bd  gcc/testsuite/g++.dg/cpp1y/constexpr-89785-1.C
  9db0b914527a8b909b9c56595af3e4d8  gcc/testsuite/g++.dg/cpp1y/constexpr-89785-2.C
  6da026613aee5ef4a0c106f2bd05788e  gcc/testsuite/g++.dg/cpp1y/constexpr-90383-1.C
  14a30fd2e20dff6196843757b1aeaa95  gcc/testsuite/g++.dg/cpp1y/constexpr-90383-2.C
  689e7fdbc7e2f53c290b53e763b04728  gcc/testsuite/g++.dg/cpp1y/constexpr-96241.C
  7b969c5a8bcb74e6e17d4cb0df34a497  gcc/testsuite/g++.dg/cpp1y/constexpr-98122.C
  8a973746cd3be6ec951f7d289c327099  gcc/testsuite/g++.dg/cpp1y/constexpr-98672.C
! c410a0259982426fcc8bf751139fbcd3  gcc/testsuite/g++.dg/cpp1y/constexpr-arith-overflow.C
  8ca7fb9e44e526f77542eaa59593c544  gcc/testsuite/g++.dg/cpp1y/constexpr-array1.C
  10c765e5671de39fd3d751b2e3a5408b  gcc/testsuite/g++.dg/cpp1y/constexpr-array2.C
  192478e53d1e7dc7ab67b7b22a9678c1  gcc/testsuite/g++.dg/cpp1y/constexpr-array3.C
--- 14714,14729 ----
  489bd3de48ef1607ca304163277af5df  gcc/testsuite/g++.dg/cpp1y/constexpr-89652.C
  90fa885f78614bf5c1521576e421e9bd  gcc/testsuite/g++.dg/cpp1y/constexpr-89785-1.C
  9db0b914527a8b909b9c56595af3e4d8  gcc/testsuite/g++.dg/cpp1y/constexpr-89785-2.C
+ d74feec74ad417ce346db9a37de13b2b  gcc/testsuite/g++.dg/cpp1y/constexpr-90199.C
  6da026613aee5ef4a0c106f2bd05788e  gcc/testsuite/g++.dg/cpp1y/constexpr-90383-1.C
  14a30fd2e20dff6196843757b1aeaa95  gcc/testsuite/g++.dg/cpp1y/constexpr-90383-2.C
+ d331ead07f524eb8eb9cff1a8f14ee16  gcc/testsuite/g++.dg/cpp1y/constexpr-96182.C
  689e7fdbc7e2f53c290b53e763b04728  gcc/testsuite/g++.dg/cpp1y/constexpr-96241.C
  7b969c5a8bcb74e6e17d4cb0df34a497  gcc/testsuite/g++.dg/cpp1y/constexpr-98122.C
  8a973746cd3be6ec951f7d289c327099  gcc/testsuite/g++.dg/cpp1y/constexpr-98672.C
! e2c8c3a4cbd87e3f3523320895a62432  gcc/testsuite/g++.dg/cpp1y/constexpr-99859-1.C
! 8c594d5fa749f298c6145256cb9997d1  gcc/testsuite/g++.dg/cpp1y/constexpr-99859-2.C
! ebd0a1c9ae39d958e38ea981380c5fbe  gcc/testsuite/g++.dg/cpp1y/constexpr-arith-overflow.C
  8ca7fb9e44e526f77542eaa59593c544  gcc/testsuite/g++.dg/cpp1y/constexpr-array1.C
  10c765e5671de39fd3d751b2e3a5408b  gcc/testsuite/g++.dg/cpp1y/constexpr-array2.C
  192478e53d1e7dc7ab67b7b22a9678c1  gcc/testsuite/g++.dg/cpp1y/constexpr-array3.C
*************** f4f6c3d1cdaf2aa67bfa2b8c851853d5  gcc/te
*** 14025,14030 ****
--- 14748,14754 ----
  af9863e9fca568fa5ae3ad41b051cf84  gcc/testsuite/g++.dg/cpp1y/constexpr-incr2.C
  3e9dd485a2a6d99132c92a6d04b96ee9  gcc/testsuite/g++.dg/cpp1y/constexpr-initlist1.C
  ab56709d31a56066e2a96779bd194779  gcc/testsuite/g++.dg/cpp1y/constexpr-instantiate.C
+ c1f0367d18b0ce3b18a08cd6eb3f8931  gcc/testsuite/g++.dg/cpp1y/constexpr-label.C
  14b35cb8a87b121f413f22b600d19592  gcc/testsuite/g++.dg/cpp1y/constexpr-local-compound1.C
  3a3d744ee7d9f610351075218538740d  gcc/testsuite/g++.dg/cpp1y/constexpr-local1.C
  b9802763e15bc5d3383abb6baf492f9a  gcc/testsuite/g++.dg/cpp1y/constexpr-local2.C
*************** c3cd90392b0ef60308de7e44fb884c6f  gcc/te
*** 14053,14064 ****
  3ebd2f678927c3d6b60ebc749680a96e  gcc/testsuite/g++.dg/cpp1y/constexpr-recursion1.C
  777febedb9b77383ec600e70a1668eb9  gcc/testsuite/g++.dg/cpp1y/constexpr-ref1.C
  6688f378d2b0f24307bbda6bfb45a808  gcc/testsuite/g++.dg/cpp1y/constexpr-return1.C
! 6e50f37c1a0a8d3872910b9dac070f5d  gcc/testsuite/g++.dg/cpp1y/constexpr-return2.C
  0158e9ac9fca9d7aa70811273fb72c2c  gcc/testsuite/g++.dg/cpp1y/constexpr-return3.C
  f26e00c9422f9be7f87b118eec33dd74  gcc/testsuite/g++.dg/cpp1y/constexpr-return4.C
  c69ba72fc14047c9cc9057e15304f72a  gcc/testsuite/g++.dg/cpp1y/constexpr-return5.C
  2b3be651759737646c7a0b061b9bb029  gcc/testsuite/g++.dg/cpp1y/constexpr-sfinae.C
! 8da09b0f23d52a1a1f622c7910168332  gcc/testsuite/g++.dg/cpp1y/constexpr-shift1.C
  42e780d71c01eb9a00c567de03b8f270  gcc/testsuite/g++.dg/cpp1y/constexpr-static1.C
  f705c3231fd3394bbd8e1f6d3c18f870  gcc/testsuite/g++.dg/cpp1y/constexpr-switch1.C
  469cd1fc4d897d90592a00ce78be9201  gcc/testsuite/g++.dg/cpp1y/constexpr-switch2.C
--- 14777,14788 ----
  3ebd2f678927c3d6b60ebc749680a96e  gcc/testsuite/g++.dg/cpp1y/constexpr-recursion1.C
  777febedb9b77383ec600e70a1668eb9  gcc/testsuite/g++.dg/cpp1y/constexpr-ref1.C
  6688f378d2b0f24307bbda6bfb45a808  gcc/testsuite/g++.dg/cpp1y/constexpr-return1.C
! 0ddea6e50e190614deb2d4073399abfc  gcc/testsuite/g++.dg/cpp1y/constexpr-return2.C
  0158e9ac9fca9d7aa70811273fb72c2c  gcc/testsuite/g++.dg/cpp1y/constexpr-return3.C
  f26e00c9422f9be7f87b118eec33dd74  gcc/testsuite/g++.dg/cpp1y/constexpr-return4.C
  c69ba72fc14047c9cc9057e15304f72a  gcc/testsuite/g++.dg/cpp1y/constexpr-return5.C
  2b3be651759737646c7a0b061b9bb029  gcc/testsuite/g++.dg/cpp1y/constexpr-sfinae.C
! 1ce0523f4b7ead8ad47c3fac0b9417c6  gcc/testsuite/g++.dg/cpp1y/constexpr-shift1.C
  42e780d71c01eb9a00c567de03b8f270  gcc/testsuite/g++.dg/cpp1y/constexpr-static1.C
  f705c3231fd3394bbd8e1f6d3c18f870  gcc/testsuite/g++.dg/cpp1y/constexpr-switch1.C
  469cd1fc4d897d90592a00ce78be9201  gcc/testsuite/g++.dg/cpp1y/constexpr-switch2.C
*************** f9177d17a8e7ca1cf52d2e3f3738490b  gcc/te
*** 14102,14109 ****
  83f6314e632d195e61997bd04ab32847  gcc/testsuite/g++.dg/cpp1y/context-conv1.C
  382c88b3557d1313cf8ea52c3a5c5e11  gcc/testsuite/g++.dg/cpp1y/cplusplus.C
  f8cacc42b6d0ee02c4ec28b4871b946c  gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C
  516d0cef75f4267f67d755a810807bc2  gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C
! 72e5ba540e8106a24b1c940578366f90  gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C
  2ccf049767734b973a90dea30576d8a8  gcc/testsuite/g++.dg/cpp1y/digit-sep.C
  c4436fb0148cf765eb9ae5580af8f058  gcc/testsuite/g++.dg/cpp1y/dr1560.C
  f76edece5ff5aa3ce9cb5508f587b65c  gcc/testsuite/g++.dg/cpp1y/feat-cxx11-neg.C
--- 14826,14834 ----
  83f6314e632d195e61997bd04ab32847  gcc/testsuite/g++.dg/cpp1y/context-conv1.C
  382c88b3557d1313cf8ea52c3a5c5e11  gcc/testsuite/g++.dg/cpp1y/cplusplus.C
  f8cacc42b6d0ee02c4ec28b4871b946c  gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C
+ 5b15891a6820c943437e7dcf50430c8c  gcc/testsuite/g++.dg/cpp1y/decltype-auto1.C
  516d0cef75f4267f67d755a810807bc2  gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C
! 7831663fbcb0e77846ba3e5ab2442d2e  gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C
  2ccf049767734b973a90dea30576d8a8  gcc/testsuite/g++.dg/cpp1y/digit-sep.C
  c4436fb0148cf765eb9ae5580af8f058  gcc/testsuite/g++.dg/cpp1y/dr1560.C
  f76edece5ff5aa3ce9cb5508f587b65c  gcc/testsuite/g++.dg/cpp1y/feat-cxx11-neg.C
*************** c158c48cdc574a61e06922b17254f0d7  gcc/te
*** 14141,14146 ****
--- 14866,14872 ----
  3d83ad628fa7a413326bf23651c5bb6e  gcc/testsuite/g++.dg/cpp1y/lambda-generic-90548.C
  b5a737fba00746ac9bc15993af743991  gcc/testsuite/g++.dg/cpp1y/lambda-generic-90842.C
  195b05ddf7063d0ac4ebe911f6d5bcdb  gcc/testsuite/g++.dg/cpp1y/lambda-generic-95451.C
+ b3b113da61831ee64e68c118f850ec29  gcc/testsuite/g++.dg/cpp1y/lambda-generic-Wunused.C
  87f3d5397981cf431912aae6490ea63a  gcc/testsuite/g++.dg/cpp1y/lambda-generic-auto1.C
  18a2431f49a5d003b8c4af0ee1ee26fb  gcc/testsuite/g++.dg/cpp1y/lambda-generic-cfun.C
  043e19917f87f2b2acd754fc6d7db469  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const1.C
*************** a429d84bc7f4132705bbe16ebbde7773  gcc/te
*** 14158,14163 ****
--- 14884,14890 ----
  10531fe45da275dc1869ac9e617de99d  gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep.C
  82b03b4626aa950dab28dc141638ae81  gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep2.C
  b3d105376831c9fced97427b9128fab4  gcc/testsuite/g++.dg/cpp1y/lambda-generic-empty1.C
+ d3f8bce30776925a103e5bcc1681b6ab  gcc/testsuite/g++.dg/cpp1y/lambda-generic-enum1.C
  b7efd8d29878f4a8e3a07f9cf622188c  gcc/testsuite/g++.dg/cpp1y/lambda-generic-func1.C
  82fea772a2540cf9ab702c17cc2cdb54  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice1.C
  2c1a495f8eecefe79fade7ccb361c16c  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice10.C
*************** fd449c2760b279bd0767e28da8a563bf  gcc/te
*** 14169,14174 ****
--- 14896,14902 ----
  6481e5c27cf4d02abca8974e663bd61d  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice7.C
  8efe65d95bbc02645dd6c2656587135e  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice8.C
  cbe44bb553e043d66e5399d7f388dabf  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice9.C
+ 65815d2456686230a8b4da8685461cb9  gcc/testsuite/g++.dg/cpp1y/lambda-generic-local-class1.C
  a5e1f08b66165b58419bbab37da9a962  gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C
  230ab773acec47b7efe832181c6c4972  gcc/testsuite/g++.dg/cpp1y/lambda-generic-nested1.C
  fcdbf299db7426d40d79e7ce91bbbc1e  gcc/testsuite/g++.dg/cpp1y/lambda-generic-nested2.C
*************** c0a147006244a6b57ce3f875f94e64bc  gcc/te
*** 14201,14206 ****
--- 14929,14935 ----
  c9ebf7c65d25936f6751b5ecbf146c97  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic19.C
  723f502d3b40be6c90106e7124cc9e69  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic2.C
  d146dfb92f0c30b11d9e7d20af8428d9  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic20.C
+ a85138cb5fc79cb28fc85f398f8a118d  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic21.C
  93fa62fac80c2db40c8540dcc1bb3cb1  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic3.C
  3b97ac4e949f2c389ffb4065dc536705  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic4.C
  141535a56934b529ba244dc7e7d15d06  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic5.C
*************** a0fd7a682321878b07d220b8dae15ac3  gcc/te
*** 14243,14255 ****
  7686aff0777cf041b8454732d1f17d8e  gcc/testsuite/g++.dg/cpp1y/left-shift-1.C
  5905dcf4a0cf928e5f5eef8ea574d3ee  gcc/testsuite/g++.dg/cpp1y/left-shift-2.C
  8505d7bc855e9e02e1d7a75fe803d027  gcc/testsuite/g++.dg/cpp1y/mangle1.C
! 3ffbaa4fcb8bc90aafd10807baffd953  gcc/testsuite/g++.dg/cpp1y/new1.C
! 9256359f4beba431f86f82a3fe54e942  gcc/testsuite/g++.dg/cpp1y/new2.C
  57ba16f858c68b0fbba78bdf9dabaf2a  gcc/testsuite/g++.dg/cpp1y/noexcept1.C
  bedfe39f995dd913a1715072975f6a1c  gcc/testsuite/g++.dg/cpp1y/nontype1.C
  4707396951c53026c3f457ecd9db5312  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr1.C
  5326d1798f69e0f75031ab294cf8dd21  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr10.C
  c9dde900e1dd03846724a7195332d8ea  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr11.C
  6181386fced4d11038690bcc0729a80d  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr2.C
  379f3d0c83382658777fb1c2f47ed88a  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr3.C
  d986a2e035160bd06d7fd81798876e53  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr4.C
--- 14972,14986 ----
  7686aff0777cf041b8454732d1f17d8e  gcc/testsuite/g++.dg/cpp1y/left-shift-1.C
  5905dcf4a0cf928e5f5eef8ea574d3ee  gcc/testsuite/g++.dg/cpp1y/left-shift-2.C
  8505d7bc855e9e02e1d7a75fe803d027  gcc/testsuite/g++.dg/cpp1y/mangle1.C
! 105e2ac1493d370f7fefe776ab7d70db  gcc/testsuite/g++.dg/cpp1y/new1.C
! b7000c26c6ee8cc9d890f03d21c575eb  gcc/testsuite/g++.dg/cpp1y/new2.C
  57ba16f858c68b0fbba78bdf9dabaf2a  gcc/testsuite/g++.dg/cpp1y/noexcept1.C
  bedfe39f995dd913a1715072975f6a1c  gcc/testsuite/g++.dg/cpp1y/nontype1.C
  4707396951c53026c3f457ecd9db5312  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr1.C
  5326d1798f69e0f75031ab294cf8dd21  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr10.C
  c9dde900e1dd03846724a7195332d8ea  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr11.C
+ a145c30f655e3947d4d12895d47f8848  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
+ 620462324dd7279425148f8c5c72821a  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr13.C
  6181386fced4d11038690bcc0729a80d  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr2.C
  379f3d0c83382658777fb1c2f47ed88a  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr3.C
  d986a2e035160bd06d7fd81798876e53  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr4.C
*************** e8c6da7fb812f06074a9399c95d62136  gcc/te
*** 14269,14275 ****
  f5ccbfc0fb9fd723ce3d0565bf79908b  gcc/testsuite/g++.dg/cpp1y/paren5.C
  a59e5fd28eae5235838080483b6939a6  gcc/testsuite/g++.dg/cpp1y/phoobhar.h
  7d18afb36bcaa55af2030c6546d5df38  gcc/testsuite/g++.dg/cpp1y/pr57640.C
! c4165eafc91468f7acbe5ba99603b2e7  gcc/testsuite/g++.dg/cpp1y/pr57644.C
  247d52471516e4b902d29d652eae1a51  gcc/testsuite/g++.dg/cpp1y/pr58533.C
  fcd7af7fef98efaa8babe7825f41330a  gcc/testsuite/g++.dg/cpp1y/pr58637.C
  ce757cdfd194857eb718a7fca15efe39  gcc/testsuite/g++.dg/cpp1y/pr58708.C
--- 15000,15006 ----
  f5ccbfc0fb9fd723ce3d0565bf79908b  gcc/testsuite/g++.dg/cpp1y/paren5.C
  a59e5fd28eae5235838080483b6939a6  gcc/testsuite/g++.dg/cpp1y/phoobhar.h
  7d18afb36bcaa55af2030c6546d5df38  gcc/testsuite/g++.dg/cpp1y/pr57640.C
! 854092e98063500453c7c800d8eb73a5  gcc/testsuite/g++.dg/cpp1y/pr57644.C
  247d52471516e4b902d29d652eae1a51  gcc/testsuite/g++.dg/cpp1y/pr58533.C
  fcd7af7fef98efaa8babe7825f41330a  gcc/testsuite/g++.dg/cpp1y/pr58637.C
  ce757cdfd194857eb718a7fca15efe39  gcc/testsuite/g++.dg/cpp1y/pr58708.C
*************** ccdf243ad72b9b0a028429d373468fef  gcc/te
*** 14294,14305 ****
  36ea8d632059da318eba95db916a7d67  gcc/testsuite/g++.dg/cpp1y/pr61636-1.C
  9b956ed4d6ed5d2856ccf34af41742c3  gcc/testsuite/g++.dg/cpp1y/pr61636-2.C
  8b18feb5bcdddcab93132675568377e3  gcc/testsuite/g++.dg/cpp1y/pr61636-3.C
! a7fdcf5a41f128d6b68a0a032fd16221  gcc/testsuite/g++.dg/cpp1y/pr63996.C
  2c3711481ac610009a2b6d143c205af4  gcc/testsuite/g++.dg/cpp1y/pr64382.C
  2bf768dd7e19ea1f0872089c05d29aeb  gcc/testsuite/g++.dg/cpp1y/pr64626-1.C
  b82fb5e4a473d7355f2d603a5f9c0809  gcc/testsuite/g++.dg/cpp1y/pr64626-2.C
! c4d4008e57b846a8f10168eea5d8c311  gcc/testsuite/g++.dg/cpp1y/pr65202.C
! d5c5f62de8cf97d34f282f05a28fd8c3  gcc/testsuite/g++.dg/cpp1y/pr65340.C
  8b86bdc4bfeb8e4d82a1740a397c43fb  gcc/testsuite/g++.dg/cpp1y/pr66443-cxx14-2.C
  588f6aed05a30eafdb7e7d6c69a5c995  gcc/testsuite/g++.dg/cpp1y/pr66443-cxx14-3.C
  8e1dcbd08baa1ec4a3bc393fef54bcfe  gcc/testsuite/g++.dg/cpp1y/pr66443-cxx14.C
--- 15025,15036 ----
  36ea8d632059da318eba95db916a7d67  gcc/testsuite/g++.dg/cpp1y/pr61636-1.C
  9b956ed4d6ed5d2856ccf34af41742c3  gcc/testsuite/g++.dg/cpp1y/pr61636-2.C
  8b18feb5bcdddcab93132675568377e3  gcc/testsuite/g++.dg/cpp1y/pr61636-3.C
! c3f1913cb028d278739938fb67306ebd  gcc/testsuite/g++.dg/cpp1y/pr63996.C
  2c3711481ac610009a2b6d143c205af4  gcc/testsuite/g++.dg/cpp1y/pr64382.C
  2bf768dd7e19ea1f0872089c05d29aeb  gcc/testsuite/g++.dg/cpp1y/pr64626-1.C
  b82fb5e4a473d7355f2d603a5f9c0809  gcc/testsuite/g++.dg/cpp1y/pr64626-2.C
! a016a50cc0abc52bffc6bceff1508657  gcc/testsuite/g++.dg/cpp1y/pr65202.C
! e265e6e9deab5b038e7ef1df080d9b79  gcc/testsuite/g++.dg/cpp1y/pr65340.C
  8b86bdc4bfeb8e4d82a1740a397c43fb  gcc/testsuite/g++.dg/cpp1y/pr66443-cxx14-2.C
  588f6aed05a30eafdb7e7d6c69a5c995  gcc/testsuite/g++.dg/cpp1y/pr66443-cxx14-3.C
  8e1dcbd08baa1ec4a3bc393fef54bcfe  gcc/testsuite/g++.dg/cpp1y/pr66443-cxx14.C
*************** cc303b3b2d7233ccfd58467de3214ada  gcc/te
*** 14311,14322 ****
  0b713438d71229ec0d7fbc8d6beb65d5  gcc/testsuite/g++.dg/cpp1y/pr68278.C
  66407b019be3ad24d7c8b0a10c4ec4ec  gcc/testsuite/g++.dg/cpp1y/pr68388.C
  165032b8d9d8145284b0a64c372765ec  gcc/testsuite/g++.dg/cpp1y/pr68396.C
! d922a51336a9dacf3c4cea341b942c52  gcc/testsuite/g++.dg/cpp1y/pr68578.C
  86afb9921518e8277bc8224c588a770e  gcc/testsuite/g++.dg/cpp1y/pr69066.C
  1d13e596981d58f9b60198cf74b31224  gcc/testsuite/g++.dg/cpp1y/pr70001.C
  fcbcd555635fe6701df362a0faf73cb3  gcc/testsuite/g++.dg/cpp1y/pr71875.C
  349a60e47349360ddd62a8bcc5e96309  gcc/testsuite/g++.dg/cpp1y/pr72759.C
! 1e1d4639866302ab049166b69696e990  gcc/testsuite/g++.dg/cpp1y/pr77321.C
  cfda3f0fd7c7e2780a1c69a24a5dd8ca  gcc/testsuite/g++.dg/cpp1y/pr77446.C
  b1dd0e1128f26d2c0df901543e326c60  gcc/testsuite/g++.dg/cpp1y/pr77539.C
  c008d1c5e0d0e13a914b30aa87836359  gcc/testsuite/g++.dg/cpp1y/pr77585.C
--- 15042,15053 ----
  0b713438d71229ec0d7fbc8d6beb65d5  gcc/testsuite/g++.dg/cpp1y/pr68278.C
  66407b019be3ad24d7c8b0a10c4ec4ec  gcc/testsuite/g++.dg/cpp1y/pr68388.C
  165032b8d9d8145284b0a64c372765ec  gcc/testsuite/g++.dg/cpp1y/pr68396.C
! ec5f3c884cd501d9b9d6585fabf2150d  gcc/testsuite/g++.dg/cpp1y/pr68578.C
  86afb9921518e8277bc8224c588a770e  gcc/testsuite/g++.dg/cpp1y/pr69066.C
  1d13e596981d58f9b60198cf74b31224  gcc/testsuite/g++.dg/cpp1y/pr70001.C
  fcbcd555635fe6701df362a0faf73cb3  gcc/testsuite/g++.dg/cpp1y/pr71875.C
  349a60e47349360ddd62a8bcc5e96309  gcc/testsuite/g++.dg/cpp1y/pr72759.C
! 3c255eede9224955a23910f5e84e2114  gcc/testsuite/g++.dg/cpp1y/pr77321.C
  cfda3f0fd7c7e2780a1c69a24a5dd8ca  gcc/testsuite/g++.dg/cpp1y/pr77446.C
  b1dd0e1128f26d2c0df901543e326c60  gcc/testsuite/g++.dg/cpp1y/pr77539.C
  c008d1c5e0d0e13a914b30aa87836359  gcc/testsuite/g++.dg/cpp1y/pr77585.C
*************** eed72e4e3c9aec24d904cb1baa5f2711  gcc/te
*** 14358,14364 ****
  e4968a83309cb7b0ed242d3d6971a6a3  gcc/testsuite/g++.dg/cpp1y/pr87322.C
  82895ea6b585468afa3ea096948a4f4d  gcc/testsuite/g++.dg/cpp1y/pr87410.C
  76d3c8355d513d753398e1184e4c4ece  gcc/testsuite/g++.dg/cpp1y/pr89767.C
! d2d0bc874f9c02f4cf129f688184d93c  gcc/testsuite/g++.dg/cpp1y/pr90996.C
  7d645783aac5a4916b59afe86e71ea63  gcc/testsuite/g++.dg/cpp1y/pr91845.C
  00fd55359af11227a5a4b86e14abbb87  gcc/testsuite/g++.dg/cpp1y/pr94066-2.C
  b0cb037b3d1369f48884f81384e62dbb  gcc/testsuite/g++.dg/cpp1y/pr94066-3.C
--- 15089,15095 ----
  e4968a83309cb7b0ed242d3d6971a6a3  gcc/testsuite/g++.dg/cpp1y/pr87322.C
  82895ea6b585468afa3ea096948a4f4d  gcc/testsuite/g++.dg/cpp1y/pr87410.C
  76d3c8355d513d753398e1184e4c4ece  gcc/testsuite/g++.dg/cpp1y/pr89767.C
! c467fa18d9fd990ded06e474c9bddf3b  gcc/testsuite/g++.dg/cpp1y/pr90996.C
  7d645783aac5a4916b59afe86e71ea63  gcc/testsuite/g++.dg/cpp1y/pr91845.C
  00fd55359af11227a5a4b86e14abbb87  gcc/testsuite/g++.dg/cpp1y/pr94066-2.C
  b0cb037b3d1369f48884f81384e62dbb  gcc/testsuite/g++.dg/cpp1y/pr94066-3.C
*************** a6b17e53216ceda3fdbc1dc56643ba6a  gcc/te
*** 14415,14425 ****
  8794fe86c499aa19549c780c79aa368a  gcc/testsuite/g++.dg/cpp1y/var-templ38.C
  8d67f45e619e5e401002587bef8da3a5  gcc/testsuite/g++.dg/cpp1y/var-templ39.C
  8fbb09c96293e0ad0adec02f8c333330  gcc/testsuite/g++.dg/cpp1y/var-templ39a.C
! a82697cf228f6c067aa7a0fdefbfe94c  gcc/testsuite/g++.dg/cpp1y/var-templ4.C
  bb4283f25d1a9ee27311f1ab54256222  gcc/testsuite/g++.dg/cpp1y/var-templ40.C
  97a88f991a43115b826c1da3bd102d68  gcc/testsuite/g++.dg/cpp1y/var-templ42.C
  a993ff7d133c102704948fe5282c51e1  gcc/testsuite/g++.dg/cpp1y/var-templ43.C
! 2f854373ca136d848fd84adcbe545474  gcc/testsuite/g++.dg/cpp1y/var-templ44.C
  78c0fd59914253b2e79c0b0d1764b88c  gcc/testsuite/g++.dg/cpp1y/var-templ45.C
  56c46be1bc1585a49aae9a5951624730  gcc/testsuite/g++.dg/cpp1y/var-templ46.C
  ffde32febe1810ce3df7e034c7d427c5  gcc/testsuite/g++.dg/cpp1y/var-templ47.C
--- 15146,15156 ----
  8794fe86c499aa19549c780c79aa368a  gcc/testsuite/g++.dg/cpp1y/var-templ38.C
  8d67f45e619e5e401002587bef8da3a5  gcc/testsuite/g++.dg/cpp1y/var-templ39.C
  8fbb09c96293e0ad0adec02f8c333330  gcc/testsuite/g++.dg/cpp1y/var-templ39a.C
! 7029d63d0b09f1e4ac4b57cf4b6d2ba7  gcc/testsuite/g++.dg/cpp1y/var-templ4.C
  bb4283f25d1a9ee27311f1ab54256222  gcc/testsuite/g++.dg/cpp1y/var-templ40.C
  97a88f991a43115b826c1da3bd102d68  gcc/testsuite/g++.dg/cpp1y/var-templ42.C
  a993ff7d133c102704948fe5282c51e1  gcc/testsuite/g++.dg/cpp1y/var-templ43.C
! c424ae25604ada5b07e377fe2b5ca7a6  gcc/testsuite/g++.dg/cpp1y/var-templ44.C
  78c0fd59914253b2e79c0b0d1764b88c  gcc/testsuite/g++.dg/cpp1y/var-templ45.C
  56c46be1bc1585a49aae9a5951624730  gcc/testsuite/g++.dg/cpp1y/var-templ46.C
  ffde32febe1810ce3df7e034c7d427c5  gcc/testsuite/g++.dg/cpp1y/var-templ47.C
*************** dc3178e9e6877534395f10339750116a  gcc/te
*** 14444,14449 ****
--- 15175,15184 ----
  f857aeaa600cb3e85cdb97a6e0963bbd  gcc/testsuite/g++.dg/cpp1y/var-templ63.C
  991cbb9f56016f3a219a03bb5ad62999  gcc/testsuite/g++.dg/cpp1y/var-templ64.C
  b49a994714f8ac92c508dd3d6ab50d9d  gcc/testsuite/g++.dg/cpp1y/var-templ65.C
+ 7529fbbd88bafa278def3a31f12327db  gcc/testsuite/g++.dg/cpp1y/var-templ66.C
+ 9e8483cf087cf5a9253eda7a0e3287b3  gcc/testsuite/g++.dg/cpp1y/var-templ67.C
+ b481e5273496bfbbf3b3909be7169b4c  gcc/testsuite/g++.dg/cpp1y/var-templ68.C
+ 7ec7355a58dc65697a20d36778907420  gcc/testsuite/g++.dg/cpp1y/var-templ68a.C
  3c670164f1a7f8f91ef1db2f80526182  gcc/testsuite/g++.dg/cpp1y/var-templ7.C
  7490ba7f2bf9511118a48f52e8c4ceed  gcc/testsuite/g++.dg/cpp1y/var-templ8.C
  c62c3c5ce4dabfb077ffd26896b1d204  gcc/testsuite/g++.dg/cpp1y/var-templ9.C
*************** c5e8ac858eac19a1f1f10709e9b49389  gcc/te
*** 14480,14489 ****
  1c005f415746635350d5fd1bf3068b93  gcc/testsuite/g++.dg/cpp1z/aligned-new8.C
  15f78f24e2133987caada47dbd4501b6  gcc/testsuite/g++.dg/cpp1z/attr-lambda1.C
  34121807f233280bd4b9ceb565c64cf6  gcc/testsuite/g++.dg/cpp1z/attributes-enum-1.C
! e474313e7bab15f973c71282c2c16e26  gcc/testsuite/g++.dg/cpp1z/attributes-enum-1a.C
  1a8594071bf162a6b7ab2b120a5e43d3  gcc/testsuite/g++.dg/cpp1z/bool-increment1.C
  daf6a1ab8d18fad76864f7a9c31adc71  gcc/testsuite/g++.dg/cpp1z/byte1.C
  6da7247a3eb4b4c4507555e38efb303e  gcc/testsuite/g++.dg/cpp1z/byte2.C
  6e5c654f918bffb16660300054fe6143  gcc/testsuite/g++.dg/cpp1z/class-deduction1.C
  521dabadcf6ec5d76ee583121d751149  gcc/testsuite/g++.dg/cpp1z/class-deduction10.C
  517aaeb274419d156e09eb5a7d5b7077  gcc/testsuite/g++.dg/cpp1z/class-deduction11.C
--- 15215,15227 ----
  1c005f415746635350d5fd1bf3068b93  gcc/testsuite/g++.dg/cpp1z/aligned-new8.C
  15f78f24e2133987caada47dbd4501b6  gcc/testsuite/g++.dg/cpp1z/attr-lambda1.C
  34121807f233280bd4b9ceb565c64cf6  gcc/testsuite/g++.dg/cpp1z/attributes-enum-1.C
! a6e3099890bf75adfc276a625b3b0e3f  gcc/testsuite/g++.dg/cpp1z/attributes-enum-1a.C
! a88352c069738f54613c17951d635f5e  gcc/testsuite/g++.dg/cpp1z/auto1.C
  1a8594071bf162a6b7ab2b120a5e43d3  gcc/testsuite/g++.dg/cpp1z/bool-increment1.C
  daf6a1ab8d18fad76864f7a9c31adc71  gcc/testsuite/g++.dg/cpp1z/byte1.C
  6da7247a3eb4b4c4507555e38efb303e  gcc/testsuite/g++.dg/cpp1z/byte2.C
+ 2cd76aed036d115c3cb06e8ca0d0ece1  gcc/testsuite/g++.dg/cpp1z/class-deduction-decltype1.C
+ 3366b9d94d7b1a6e36f4c73b5364de67  gcc/testsuite/g++.dg/cpp1z/class-deduction-spec1.C
  6e5c654f918bffb16660300054fe6143  gcc/testsuite/g++.dg/cpp1z/class-deduction1.C
  521dabadcf6ec5d76ee583121d751149  gcc/testsuite/g++.dg/cpp1z/class-deduction10.C
  517aaeb274419d156e09eb5a7d5b7077  gcc/testsuite/g++.dg/cpp1z/class-deduction11.C
*************** a1e4f09d18085c224de08ec884913d64  gcc/te
*** 14521,14527 ****
  65dfb3384edaa0ad78087b469c477935  gcc/testsuite/g++.dg/cpp1z/class-deduction41.C
  735bfcbdd79f76b3f7f0dc10574f959c  gcc/testsuite/g++.dg/cpp1z/class-deduction42.C
  14588c674c28898baeb2885902b55749  gcc/testsuite/g++.dg/cpp1z/class-deduction43.C
! f73083e81a15e534882d1c7948e853d6  gcc/testsuite/g++.dg/cpp1z/class-deduction44.C
  f0759d947c5e40742ab64c03a4ba4a28  gcc/testsuite/g++.dg/cpp1z/class-deduction45.C
  501a43a228e76342d2d2eebaa55bbe7b  gcc/testsuite/g++.dg/cpp1z/class-deduction46.C
  289cb125cb6fac3235f631d21e0318a8  gcc/testsuite/g++.dg/cpp1z/class-deduction47.C
--- 15259,15265 ----
  65dfb3384edaa0ad78087b469c477935  gcc/testsuite/g++.dg/cpp1z/class-deduction41.C
  735bfcbdd79f76b3f7f0dc10574f959c  gcc/testsuite/g++.dg/cpp1z/class-deduction42.C
  14588c674c28898baeb2885902b55749  gcc/testsuite/g++.dg/cpp1z/class-deduction43.C
! b0a7164488d7911c1de7e0cb11ad737d  gcc/testsuite/g++.dg/cpp1z/class-deduction44.C
  f0759d947c5e40742ab64c03a4ba4a28  gcc/testsuite/g++.dg/cpp1z/class-deduction45.C
  501a43a228e76342d2d2eebaa55bbe7b  gcc/testsuite/g++.dg/cpp1z/class-deduction46.C
  289cb125cb6fac3235f631d21e0318a8  gcc/testsuite/g++.dg/cpp1z/class-deduction47.C
*************** e2a156ae37a7cc2e6e931224eb20400d  gcc/te
*** 14548,14569 ****
  0c2a81eea07958b08b069497c1cc14eb  gcc/testsuite/g++.dg/cpp1z/class-deduction66.C
  5904fb8094f306eaee279b33016868b2  gcc/testsuite/g++.dg/cpp1z/class-deduction67.C
  436996455ea0d5216238b13ac0ebe6c2  gcc/testsuite/g++.dg/cpp1z/class-deduction68.C
! 8b1542d99030e64c79c33255cf494144  gcc/testsuite/g++.dg/cpp1z/class-deduction69.C
  8c52b34d6b90a66b237e8933d7a2bed6  gcc/testsuite/g++.dg/cpp1z/class-deduction7.C
  9406dbc175f78b97b71ebe629b05d784  gcc/testsuite/g++.dg/cpp1z/class-deduction70.C
  b880b797e64a3be4339be5f3b8f87a90  gcc/testsuite/g++.dg/cpp1z/class-deduction71.C
  e5c7ffb3df4f8d1853f8366805381932  gcc/testsuite/g++.dg/cpp1z/class-deduction72.C
  5bd09760c3c40512c7e433c6714430ac  gcc/testsuite/g++.dg/cpp1z/class-deduction75.C
  f9a725e57aa9a1790952eaaee10816ec  gcc/testsuite/g++.dg/cpp1z/class-deduction78.C
  923f9361e61894453314ebd0b52faf9a  gcc/testsuite/g++.dg/cpp1z/class-deduction8.C
  3920e918276476b088679b893b9cde19  gcc/testsuite/g++.dg/cpp1z/class-deduction9.C
  d09105e6c1f377543e5514e34d2837cd  gcc/testsuite/g++.dg/cpp1z/constexpr-83692.C
  6962bfa121a4383ee0b7a8f045abde3f  gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C
  db812bf22a911000584c903aac50ffd3  gcc/testsuite/g++.dg/cpp1z/constexpr-96862.C
  58f65982ee216b64a2a721ba861c9e63  gcc/testsuite/g++.dg/cpp1z/constexpr-array1.C
  d309961f0255b13605cf111efa2b095a  gcc/testsuite/g++.dg/cpp1z/constexpr-if-lambda1.C
  6031d9adb83bdf87e2dd05c8108493d1  gcc/testsuite/g++.dg/cpp1z/constexpr-if-lambda2.C
! b69483cc09e62cb071dd7f82e188cc62  gcc/testsuite/g++.dg/cpp1z/constexpr-if-lambda3.C
  b70f4276933d24cd68ae2e047a954ece  gcc/testsuite/g++.dg/cpp1z/constexpr-if1.C
  1e52ede853069710bb8cc3b5b323de8c  gcc/testsuite/g++.dg/cpp1z/constexpr-if10.C
  6ad161b09218162d754ac9e397dad17c  gcc/testsuite/g++.dg/cpp1z/constexpr-if11.C
--- 15286,15320 ----
  0c2a81eea07958b08b069497c1cc14eb  gcc/testsuite/g++.dg/cpp1z/class-deduction66.C
  5904fb8094f306eaee279b33016868b2  gcc/testsuite/g++.dg/cpp1z/class-deduction67.C
  436996455ea0d5216238b13ac0ebe6c2  gcc/testsuite/g++.dg/cpp1z/class-deduction68.C
! 0c4cbf1c1555dcd38bc681ec78ffb409  gcc/testsuite/g++.dg/cpp1z/class-deduction69.C
  8c52b34d6b90a66b237e8933d7a2bed6  gcc/testsuite/g++.dg/cpp1z/class-deduction7.C
  9406dbc175f78b97b71ebe629b05d784  gcc/testsuite/g++.dg/cpp1z/class-deduction70.C
  b880b797e64a3be4339be5f3b8f87a90  gcc/testsuite/g++.dg/cpp1z/class-deduction71.C
  e5c7ffb3df4f8d1853f8366805381932  gcc/testsuite/g++.dg/cpp1z/class-deduction72.C
+ dfbccb6f5601846d275514b7684d01a1  gcc/testsuite/g++.dg/cpp1z/class-deduction73.C
+ 9b5ddfc7c836919b6863a55bff2863e8  gcc/testsuite/g++.dg/cpp1z/class-deduction74.C
  5bd09760c3c40512c7e433c6714430ac  gcc/testsuite/g++.dg/cpp1z/class-deduction75.C
+ fdd6c8fc7721d160e8df7058409c8c10  gcc/testsuite/g++.dg/cpp1z/class-deduction76.C
+ 5991e451e740b314274ebf9fa4d78de6  gcc/testsuite/g++.dg/cpp1z/class-deduction77.C
  f9a725e57aa9a1790952eaaee10816ec  gcc/testsuite/g++.dg/cpp1z/class-deduction78.C
+ 377dc3ec42a3297a8896196723815f08  gcc/testsuite/g++.dg/cpp1z/class-deduction79.C
  923f9361e61894453314ebd0b52faf9a  gcc/testsuite/g++.dg/cpp1z/class-deduction8.C
+ 6b93fe07e0f3dfb99e296fdab0a61edc  gcc/testsuite/g++.dg/cpp1z/class-deduction80.C
+ f663fe16c189e85a87c99ac3e556cdff  gcc/testsuite/g++.dg/cpp1z/class-deduction81.C
+ 16ab4bb2d39ae0464b7ce8564fd1f55b  gcc/testsuite/g++.dg/cpp1z/class-deduction82.C
+ 23e958854e1d39365c37e1a997d55a26  gcc/testsuite/g++.dg/cpp1z/class-deduction83.C
+ 7d0faa5e56f529947c47f73b3309ce56  gcc/testsuite/g++.dg/cpp1z/class-deduction84.C
+ 533990a3a8f21fecb63572f9aaf57a51  gcc/testsuite/g++.dg/cpp1z/class-deduction85.C
  3920e918276476b088679b893b9cde19  gcc/testsuite/g++.dg/cpp1z/class-deduction9.C
  d09105e6c1f377543e5514e34d2837cd  gcc/testsuite/g++.dg/cpp1z/constexpr-83692.C
  6962bfa121a4383ee0b7a8f045abde3f  gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C
+ 45c5f013f34b63d5d77c2d394365a506  gcc/testsuite/g++.dg/cpp1z/constexpr-96575.C
  db812bf22a911000584c903aac50ffd3  gcc/testsuite/g++.dg/cpp1z/constexpr-96862.C
  58f65982ee216b64a2a721ba861c9e63  gcc/testsuite/g++.dg/cpp1z/constexpr-array1.C
  d309961f0255b13605cf111efa2b095a  gcc/testsuite/g++.dg/cpp1z/constexpr-if-lambda1.C
  6031d9adb83bdf87e2dd05c8108493d1  gcc/testsuite/g++.dg/cpp1z/constexpr-if-lambda2.C
! 6a2eb0af9be5a3b73df8e66127a94fd9  gcc/testsuite/g++.dg/cpp1z/constexpr-if-lambda3.C
! 2746f29337da849f597ad6ce8bbb74c2  gcc/testsuite/g++.dg/cpp1z/constexpr-if-lambda4.C
  b70f4276933d24cd68ae2e047a954ece  gcc/testsuite/g++.dg/cpp1z/constexpr-if1.C
  1e52ede853069710bb8cc3b5b323de8c  gcc/testsuite/g++.dg/cpp1z/constexpr-if10.C
  6ad161b09218162d754ac9e397dad17c  gcc/testsuite/g++.dg/cpp1z/constexpr-if11.C
*************** b304cf37009380270fe9705af58081b3  gcc/te
*** 14616,14621 ****
--- 15367,15373 ----
  e85ae52cdaf9d0d5b13778ba237ba5c5  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda23.C
  58bd2e2abbc1edcb0a954b8ed6ac8821  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda24.C
  f4382f5ede902e4b05c952d6a46baa75  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda25.C
+ 17ee74d9fa54f13716e63580af967ad8  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda26.C
  7a1275d47f91f21fc9a37f0e47b89dad  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda3.C
  5267d9825ab86007a9529cb6214eae5c  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda4.C
  7b6d8d9af2ed24c66e7de295c6bd2cf9  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda5.C
*************** be58a05c982a80cf0c6b4457f2ee655c  gcc/te
*** 14677,14682 ****
--- 15429,15435 ----
  af1e704cf45a12bb8c7e2865e6b7debc  gcc/testsuite/g++.dg/cpp1z/decomp5.C
  7f5a05827bf70c6aae1a8d8e3d44d7f8  gcc/testsuite/g++.dg/cpp1z/decomp50.C
  1464417f149b2affc5587e647192d27f  gcc/testsuite/g++.dg/cpp1z/decomp51.C
+ 713d57a2d4c81f9a5b157a3078e995a1  gcc/testsuite/g++.dg/cpp1z/decomp52.C
  483e3caa4572c2f88ee6dff747cf3056  gcc/testsuite/g++.dg/cpp1z/decomp53.C
  46ef66cc9a593b59b8b3f161586b0533  gcc/testsuite/g++.dg/cpp1z/decomp54.C
  9e963a76a6e736436964ce0e71d75f41  gcc/testsuite/g++.dg/cpp1z/decomp55.C
*************** af1e704cf45a12bb8c7e2865e6b7debc  gcc/te
*** 14684,14694 ****
  09468d9aa8e4fe8ac0677b17a3c509a2  gcc/testsuite/g++.dg/cpp1z/decomp7.C
  0d7ba62c8322f4f98a085026e3ac529a  gcc/testsuite/g++.dg/cpp1z/decomp8.C
  20aa008483ed89882491910be20354b8  gcc/testsuite/g++.dg/cpp1z/decomp9.C
! 40f1c40a38ee1c2120da25bbb5e2fe29  gcc/testsuite/g++.dg/cpp1z/direct-enum-init1.C
  bb80552b47c4d46b3400512a6ca45bad  gcc/testsuite/g++.dg/cpp1z/dr393.C
  51bdf0d78f7ce1379a544070332830da  gcc/testsuite/g++.dg/cpp1z/elide1.C
  6b57844cae97efac146accbaaa00449b  gcc/testsuite/g++.dg/cpp1z/elide2.C
  bafa3ed0da0c14fc9337428032934f0f  gcc/testsuite/g++.dg/cpp1z/elide3.C
  c19f90a6b67cea2957e319db88a63ee3  gcc/testsuite/g++.dg/cpp1z/elide5.C
  63be3b6d75aa3c2c8088552683d5245e  gcc/testsuite/g++.dg/cpp1z/eval-order10.C
  bb194d9ce590c9e5e69935ebac0f25e4  gcc/testsuite/g++.dg/cpp1z/eval-order2.C
--- 15437,15448 ----
  09468d9aa8e4fe8ac0677b17a3c509a2  gcc/testsuite/g++.dg/cpp1z/decomp7.C
  0d7ba62c8322f4f98a085026e3ac529a  gcc/testsuite/g++.dg/cpp1z/decomp8.C
  20aa008483ed89882491910be20354b8  gcc/testsuite/g++.dg/cpp1z/decomp9.C
! fefdc934b2400f6aa155ad0d67a11e85  gcc/testsuite/g++.dg/cpp1z/direct-enum-init1.C
  bb80552b47c4d46b3400512a6ca45bad  gcc/testsuite/g++.dg/cpp1z/dr393.C
  51bdf0d78f7ce1379a544070332830da  gcc/testsuite/g++.dg/cpp1z/elide1.C
  6b57844cae97efac146accbaaa00449b  gcc/testsuite/g++.dg/cpp1z/elide2.C
  bafa3ed0da0c14fc9337428032934f0f  gcc/testsuite/g++.dg/cpp1z/elide3.C
+ d0b40ed850fd3e55310fb990acbb4a46  gcc/testsuite/g++.dg/cpp1z/elide4.C
  c19f90a6b67cea2957e319db88a63ee3  gcc/testsuite/g++.dg/cpp1z/elide5.C
  63be3b6d75aa3c2c8088552683d5245e  gcc/testsuite/g++.dg/cpp1z/eval-order10.C
  bb194d9ce590c9e5e69935ebac0f25e4  gcc/testsuite/g++.dg/cpp1z/eval-order2.C
*************** bb194d9ce590c9e5e69935ebac0f25e4  gcc/te
*** 14698,14720 ****
  f6da488c72cf7236fa560fcdd857f03e  gcc/testsuite/g++.dg/cpp1z/eval-order6.C
  b0b559b7ffc93f41fa89c0810a34700c  gcc/testsuite/g++.dg/cpp1z/eval-order7.C
  b1d46849077c6ddc0bf882ba4c716533  gcc/testsuite/g++.dg/cpp1z/eval-order8.C
  8aee82acb16c495821151939f3d0d794  gcc/testsuite/g++.dg/cpp1z/fallthrough1.C
  94fc4260b2d8c506d1ac06cb7d4f1d7f  gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C
  ccf8e15dbea694ff2ac1c38763e318b9  gcc/testsuite/g++.dg/cpp1z/fold-ice1.C
  ce2a217eddd91a6985c4920af6223b7f  gcc/testsuite/g++.dg/cpp1z/fold-lambda.C
  d11a817298d2b6e508f52834a1dc54bd  gcc/testsuite/g++.dg/cpp1z/fold-lambda2.C
  1bbf4f67975bc37756736d418385d82a  gcc/testsuite/g++.dg/cpp1z/fold-lambda3.C
  a53a61e2c3773add424075de3343c370  gcc/testsuite/g++.dg/cpp1z/fold-mangle.C
  948a131387412e7ed7b39e35fce2096a  gcc/testsuite/g++.dg/cpp1z/fold1.C
  c74b2113efcb17ebf1be773837691046  gcc/testsuite/g++.dg/cpp1z/fold10.C
  ba52c35faa435abd9cb368147dc00857  gcc/testsuite/g++.dg/cpp1z/fold11.C
  5e8f1589e281e551eba15be5ad14bd8b  gcc/testsuite/g++.dg/cpp1z/fold2.C
  a33f917557c76cefc8e7e59dedbf0a4e  gcc/testsuite/g++.dg/cpp1z/fold3.C
  954117a731946951912acd1615190810  gcc/testsuite/g++.dg/cpp1z/fold4.C
  efd0a9cc44fe0ceb7d84ee3bef5c3930  gcc/testsuite/g++.dg/cpp1z/fold5.C
  44c8b5a5d0f20b930ab25cf9946e08e8  gcc/testsuite/g++.dg/cpp1z/fold6.C
  0037b504155820e8e9ee3c1238384540  gcc/testsuite/g++.dg/cpp1z/fold7.C
! d5097890520de2a85ebd837650f33a25  gcc/testsuite/g++.dg/cpp1z/fold7a.C
  9ddb0f13647b115199daf752aadfb113  gcc/testsuite/g++.dg/cpp1z/fold8.C
  5cec02eac2db79d2dd3ac9f9d2dbc70f  gcc/testsuite/g++.dg/cpp1z/fold9.C
  fade45a91157c646e6940a215501f1c9  gcc/testsuite/g++.dg/cpp1z/gen-attrs1.C
--- 15452,15477 ----
  f6da488c72cf7236fa560fcdd857f03e  gcc/testsuite/g++.dg/cpp1z/eval-order6.C
  b0b559b7ffc93f41fa89c0810a34700c  gcc/testsuite/g++.dg/cpp1z/eval-order7.C
  b1d46849077c6ddc0bf882ba4c716533  gcc/testsuite/g++.dg/cpp1z/eval-order8.C
+ ac52217413394dc373d70b0ce1022a25  gcc/testsuite/g++.dg/cpp1z/eval-order9.C
  8aee82acb16c495821151939f3d0d794  gcc/testsuite/g++.dg/cpp1z/fallthrough1.C
  94fc4260b2d8c506d1ac06cb7d4f1d7f  gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C
  ccf8e15dbea694ff2ac1c38763e318b9  gcc/testsuite/g++.dg/cpp1z/fold-ice1.C
  ce2a217eddd91a6985c4920af6223b7f  gcc/testsuite/g++.dg/cpp1z/fold-lambda.C
  d11a817298d2b6e508f52834a1dc54bd  gcc/testsuite/g++.dg/cpp1z/fold-lambda2.C
  1bbf4f67975bc37756736d418385d82a  gcc/testsuite/g++.dg/cpp1z/fold-lambda3.C
+ 79a45042b6e6a0c0f2a25ce023ac5976  gcc/testsuite/g++.dg/cpp1z/fold-lambda4.C
  a53a61e2c3773add424075de3343c370  gcc/testsuite/g++.dg/cpp1z/fold-mangle.C
  948a131387412e7ed7b39e35fce2096a  gcc/testsuite/g++.dg/cpp1z/fold1.C
  c74b2113efcb17ebf1be773837691046  gcc/testsuite/g++.dg/cpp1z/fold10.C
  ba52c35faa435abd9cb368147dc00857  gcc/testsuite/g++.dg/cpp1z/fold11.C
+ 91bd8e80a033defa1c149b412cb7ba1c  gcc/testsuite/g++.dg/cpp1z/fold12.C
  5e8f1589e281e551eba15be5ad14bd8b  gcc/testsuite/g++.dg/cpp1z/fold2.C
  a33f917557c76cefc8e7e59dedbf0a4e  gcc/testsuite/g++.dg/cpp1z/fold3.C
  954117a731946951912acd1615190810  gcc/testsuite/g++.dg/cpp1z/fold4.C
  efd0a9cc44fe0ceb7d84ee3bef5c3930  gcc/testsuite/g++.dg/cpp1z/fold5.C
  44c8b5a5d0f20b930ab25cf9946e08e8  gcc/testsuite/g++.dg/cpp1z/fold6.C
  0037b504155820e8e9ee3c1238384540  gcc/testsuite/g++.dg/cpp1z/fold7.C
! bd11bdac9c20a2f5798e7207aca814ab  gcc/testsuite/g++.dg/cpp1z/fold7a.C
  9ddb0f13647b115199daf752aadfb113  gcc/testsuite/g++.dg/cpp1z/fold8.C
  5cec02eac2db79d2dd3ac9f9d2dbc70f  gcc/testsuite/g++.dg/cpp1z/fold9.C
  fade45a91157c646e6940a215501f1c9  gcc/testsuite/g++.dg/cpp1z/gen-attrs1.C
*************** f69ee0a615bde7dfd06a3b48e0303b4a  gcc/te
*** 14739,14744 ****
--- 15496,15502 ----
  d95a7954c2fb5882e812dea5447bc8e2  gcc/testsuite/g++.dg/cpp1z/inh-ctor36.C
  e00bd522f82d2142164143e052a19333  gcc/testsuite/g++.dg/cpp1z/inh-ctor37.C
  be0b9dc11980180485123e93ea184fee  gcc/testsuite/g++.dg/cpp1z/inh-ctor38.C
+ a8c51f396d0edac0ec6e7cd2ddb30662  gcc/testsuite/g++.dg/cpp1z/inh-ctor39.C
  73bc70a4a9270cd9a335fe4c011dfa67  gcc/testsuite/g++.dg/cpp1z/init-statement1.C
  e71e6554bb5fba57e95cb9f345190b4e  gcc/testsuite/g++.dg/cpp1z/init-statement10.C
  4163d5fb8483550c98a47bed8b3deb6b  gcc/testsuite/g++.dg/cpp1z/init-statement2.C
*************** eb09374f9955af523e3f7767c4ef9b75  gcc/te
*** 14759,14764 ****
--- 15517,15523 ----
  30ea7a0df040d49da61f977af41d7ab6  gcc/testsuite/g++.dg/cpp1z/inline-var6.C
  ccfcd25cc3fcf43345e501263a74dd42  gcc/testsuite/g++.dg/cpp1z/inline-var7.C
  8bfc66e6a58a5eb9b429a1d9b4f4d581  gcc/testsuite/g++.dg/cpp1z/inline-var8.C
+ eb93f179b897016fd2cc051e599339bd  gcc/testsuite/g++.dg/cpp1z/inline-var9.C
  2eb7c8c6899f0df45df9a494fae11bac  gcc/testsuite/g++.dg/cpp1z/lambda-__func__.C
  7a8a15c87abf5409fafc54402d33a274  gcc/testsuite/g++.dg/cpp1z/lambda-inherit1.C
  015fa9d631289b4abe8bd2e5a5af64bf  gcc/testsuite/g++.dg/cpp1z/lambda-this1.C
*************** ccfcd25cc3fcf43345e501263a74dd42  gcc/te
*** 14767,14772 ****
--- 15526,15532 ----
  f0929bbaf568d27f99846551432c2355  gcc/testsuite/g++.dg/cpp1z/lambda-this4.C
  b2e693257fda5fe10cbb34d955388a18  gcc/testsuite/g++.dg/cpp1z/lambda-this5.C
  8eada34c37dd9c88a198df9ad47fe463  gcc/testsuite/g++.dg/cpp1z/lambda-this6.C
+ 5c12f165e35a5895c64e657c52849d04  gcc/testsuite/g++.dg/cpp1z/lambda-this7.C
  5e200a2d5bf3f215cbed7959057efae1  gcc/testsuite/g++.dg/cpp1z/launder1.C
  53bc478df6abc05a4afccaa39805cab4  gcc/testsuite/g++.dg/cpp1z/launder2.C
  ac1986fd8c7fe4bed9f3610b5c780124  gcc/testsuite/g++.dg/cpp1z/launder3.C
*************** e0b73494f7b91982a1836c4e948f3eea  gcc/te
*** 14779,14784 ****
--- 15539,15545 ----
  fc7418031e26a28172ef21ddc7c912c4  gcc/testsuite/g++.dg/cpp1z/launder6.h
  487d661499bb066b39b803e765439022  gcc/testsuite/g++.dg/cpp1z/launder7.C
  8c00bb45a9c85ed9405a729bd816a035  gcc/testsuite/g++.dg/cpp1z/launder8.C
+ df8a257f423ac22fb7f1854781367a03  gcc/testsuite/g++.dg/cpp1z/launder9.C
  9dcadfa9d20011f3e066495703f8c81a  gcc/testsuite/g++.dg/cpp1z/maybe_unused1.C
  70b91464888d2ac03bdef0b9d1602ecb  gcc/testsuite/g++.dg/cpp1z/namespace-attribs.C
  28b40b660c69bfa1ecd5cb549d5af263  gcc/testsuite/g++.dg/cpp1z/namespace-attribs2.C
*************** e2d27f023f98f0f6d5bbc4b4af73820d  gcc/te
*** 14808,14813 ****
--- 15569,15576 ----
  b844f1c10ac36bdb44fcc5f47c7ed338  gcc/testsuite/g++.dg/cpp1z/noexcept-type20.C
  bedc458500693b5518d2b34bdc4de5cb  gcc/testsuite/g++.dg/cpp1z/noexcept-type21.C
  67c6b023262a15cbea344311656cb28f  gcc/testsuite/g++.dg/cpp1z/noexcept-type22.C
+ 34cf97af47dbe4a7ade75b94363e77b9  gcc/testsuite/g++.dg/cpp1z/noexcept-type23.C
+ 8a677f921d635efea7480743417cad8f  gcc/testsuite/g++.dg/cpp1z/noexcept-type24.C
  a07bd6eee0bbce4f76caa1372e66c614  gcc/testsuite/g++.dg/cpp1z/noexcept-type3.C
  a1507d2a44a55f27a0e7109b7c2a2c43  gcc/testsuite/g++.dg/cpp1z/noexcept-type4.C
  2cbc6352072676c50982358370c66f1e  gcc/testsuite/g++.dg/cpp1z/noexcept-type5.C
*************** baa03d7258d20d4b9ab40c9db7bbc6b5  gcc/te
*** 14823,14830 ****
  860ae3b8c654bd66c0253265e5b6d892  gcc/testsuite/g++.dg/cpp1z/nontype-auto14.C
  0c28961eb2ce3227d4100b611ce2c7f1  gcc/testsuite/g++.dg/cpp1z/nontype-auto15.C
  98029cae32829adabcd476dc0d20251a  gcc/testsuite/g++.dg/cpp1z/nontype-auto16.C
  ed6e021d8ba1db6a16b34256da084028  gcc/testsuite/g++.dg/cpp1z/nontype-auto2.C
! 3a446b71c97b1e78592ef48f4bcfd24f  gcc/testsuite/g++.dg/cpp1z/nontype-auto3.C
  b7708449a230c66742c4b7273cffd6ff  gcc/testsuite/g++.dg/cpp1z/nontype-auto4.C
  1402258969b8e2de72b5d503776c4a4d  gcc/testsuite/g++.dg/cpp1z/nontype-auto5.C
  1126560f14c9ac76930eefae35fad50c  gcc/testsuite/g++.dg/cpp1z/nontype-auto6.C
--- 15586,15595 ----
  860ae3b8c654bd66c0253265e5b6d892  gcc/testsuite/g++.dg/cpp1z/nontype-auto14.C
  0c28961eb2ce3227d4100b611ce2c7f1  gcc/testsuite/g++.dg/cpp1z/nontype-auto15.C
  98029cae32829adabcd476dc0d20251a  gcc/testsuite/g++.dg/cpp1z/nontype-auto16.C
+ 136588cec3c8fd1e4bfed33946433773  gcc/testsuite/g++.dg/cpp1z/nontype-auto17.C
+ 837d034a6f13e4e73019dee244d8bd6e  gcc/testsuite/g++.dg/cpp1z/nontype-auto18.C
  ed6e021d8ba1db6a16b34256da084028  gcc/testsuite/g++.dg/cpp1z/nontype-auto2.C
! cd20029423efae4adb87e862f927bf40  gcc/testsuite/g++.dg/cpp1z/nontype-auto3.C
  b7708449a230c66742c4b7273cffd6ff  gcc/testsuite/g++.dg/cpp1z/nontype-auto4.C
  1402258969b8e2de72b5d503776c4a4d  gcc/testsuite/g++.dg/cpp1z/nontype-auto5.C
  1126560f14c9ac76930eefae35fad50c  gcc/testsuite/g++.dg/cpp1z/nontype-auto6.C
*************** b7708449a230c66742c4b7273cffd6ff  gcc/te
*** 14832,14840 ****
  b5a776ba4be1f55785284a7421d87fc2  gcc/testsuite/g++.dg/cpp1z/nontype-auto8.C
  a97faaabc3ad077a0c916a25784bae51  gcc/testsuite/g++.dg/cpp1z/nontype-auto9.C
  60dbc607aaeb0f721ef86a2e43d10472  gcc/testsuite/g++.dg/cpp1z/nontype1.C
! ad5f480f1f43de47e1a5e2e810d33318  gcc/testsuite/g++.dg/cpp1z/nontype2.C
! 0301a912d713a3f2a8b549eca0a42fef  gcc/testsuite/g++.dg/cpp1z/nontype3.C
! 5479076752989317d16e52a175be48d1  gcc/testsuite/g++.dg/cpp1z/nontype3a.C
  e668ace19a2b0d8946e0e19fd8317af1  gcc/testsuite/g++.dg/cpp1z/pr78771.C
  bc5edc17d9b70d77a054dd4736a66223  gcc/testsuite/g++.dg/cpp1z/pr79143.C
  07da6d9fdd2eb774e9b4b1d81aaca836  gcc/testsuite/g++.dg/cpp1z/pr81016.C
--- 15597,15605 ----
  b5a776ba4be1f55785284a7421d87fc2  gcc/testsuite/g++.dg/cpp1z/nontype-auto8.C
  a97faaabc3ad077a0c916a25784bae51  gcc/testsuite/g++.dg/cpp1z/nontype-auto9.C
  60dbc607aaeb0f721ef86a2e43d10472  gcc/testsuite/g++.dg/cpp1z/nontype1.C
! c621c0bd6807d2ddfd41755033d7b5d3  gcc/testsuite/g++.dg/cpp1z/nontype2.C
! ae3e1959f85f05c9ec509a6dbdbe24ca  gcc/testsuite/g++.dg/cpp1z/nontype3.C
! 97b68e1efbd20ee3ef9eee20ccf717b4  gcc/testsuite/g++.dg/cpp1z/nontype3a.C
  e668ace19a2b0d8946e0e19fd8317af1  gcc/testsuite/g++.dg/cpp1z/pr78771.C
  bc5edc17d9b70d77a054dd4736a66223  gcc/testsuite/g++.dg/cpp1z/pr79143.C
  07da6d9fdd2eb774e9b4b1d81aaca836  gcc/testsuite/g++.dg/cpp1z/pr81016.C
*************** e4fd2a00b40168e67247f9a0f2e50b71  gcc/te
*** 14845,14854 ****
  c5b5c1a950ce1e2defbefbf994279e3a  gcc/testsuite/g++.dg/cpp1z/pr84325.C
  8090b267280923a584d953fe87730fe4  gcc/testsuite/g++.dg/cpp1z/pr84533.C
  dc65e28886d5d2ddf2556993e5252efd  gcc/testsuite/g++.dg/cpp1z/pr85569.C
! 6bb9e9f0644cdafb4d68dc573d484d7d  gcc/testsuite/g++.dg/cpp1z/pr86648.C
  1b308c8d2c5bd6aaa400ca37147401ab  gcc/testsuite/g++.dg/cpp1z/pr87814.C
  4f9ffba3612b44613643f987ded6b130  gcc/testsuite/g++.dg/cpp1z/pr92536.C
  8dc6f63eb680c65d6bbd8ae84186b5b9  gcc/testsuite/g++.dg/cpp1z/pr99790.C
  b333972b880ee4234fb66ca5b658a366  gcc/testsuite/g++.dg/cpp1z/range-for1.C
  5cafd2c77bd36404914decb1342b683f  gcc/testsuite/g++.dg/cpp1z/register1.C
  b1bd2d8ee7197a19db531a7761c34c27  gcc/testsuite/g++.dg/cpp1z/register2.C
--- 15610,15620 ----
  c5b5c1a950ce1e2defbefbf994279e3a  gcc/testsuite/g++.dg/cpp1z/pr84325.C
  8090b267280923a584d953fe87730fe4  gcc/testsuite/g++.dg/cpp1z/pr84533.C
  dc65e28886d5d2ddf2556993e5252efd  gcc/testsuite/g++.dg/cpp1z/pr85569.C
! 3342aca61da3a816dc4ee1bf2d1c1231  gcc/testsuite/g++.dg/cpp1z/pr86648.C
  1b308c8d2c5bd6aaa400ca37147401ab  gcc/testsuite/g++.dg/cpp1z/pr87814.C
  4f9ffba3612b44613643f987ded6b130  gcc/testsuite/g++.dg/cpp1z/pr92536.C
  8dc6f63eb680c65d6bbd8ae84186b5b9  gcc/testsuite/g++.dg/cpp1z/pr99790.C
+ cad36ab63ab9c5a14fe2ebdee0d073ca  gcc/testsuite/g++.dg/cpp1z/pr99833.C
  b333972b880ee4234fb66ca5b658a366  gcc/testsuite/g++.dg/cpp1z/range-for1.C
  5cafd2c77bd36404914decb1342b683f  gcc/testsuite/g++.dg/cpp1z/register1.C
  b1bd2d8ee7197a19db531a7761c34c27  gcc/testsuite/g++.dg/cpp1z/register2.C
*************** b1bd2d8ee7197a19db531a7761c34c27  gcc/te
*** 14856,14862 ****
  f35c40f9359deda380357490b21bcf4f  gcc/testsuite/g++.dg/cpp1z/regress1.C
  4b6186538f9f700c48d99d65cfe78bbd  gcc/testsuite/g++.dg/cpp1z/regress2.C
  1cec7e8e1ac5999209a00a7fd3e2dbab  gcc/testsuite/g++.dg/cpp1z/static1.C
! 094a522881aa40ad994ad388299b017f  gcc/testsuite/g++.dg/cpp1z/static2.C
  491588e8dd93d83d5049e3c332e8755f  gcc/testsuite/g++.dg/cpp1z/static_assert-nomsg.C
  7dd3448d4722a9ee0446db6aa3c7a0b0  gcc/testsuite/g++.dg/cpp1z/ttp1.C
  64b3f9e4e9d3f04ac339e1f86e353e9b  gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm-neg.C
--- 15622,15628 ----
  f35c40f9359deda380357490b21bcf4f  gcc/testsuite/g++.dg/cpp1z/regress1.C
  4b6186538f9f700c48d99d65cfe78bbd  gcc/testsuite/g++.dg/cpp1z/regress2.C
  1cec7e8e1ac5999209a00a7fd3e2dbab  gcc/testsuite/g++.dg/cpp1z/static1.C
! 41cdf88b4e2dc9ba29ab954fd0f3d05c  gcc/testsuite/g++.dg/cpp1z/static2.C
  491588e8dd93d83d5049e3c332e8755f  gcc/testsuite/g++.dg/cpp1z/static_assert-nomsg.C
  7dd3448d4722a9ee0446db6aa3c7a0b0  gcc/testsuite/g++.dg/cpp1z/ttp1.C
  64b3f9e4e9d3f04ac339e1f86e353e9b  gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm-neg.C
*************** f07c4450546fe355a7c675c46750a186  gcc/te
*** 14872,15002 ****
  fe69b2dd849cca71544b409a3695f4d5  gcc/testsuite/g++.dg/cpp1z/using6.C
  fa1cfed74923d833a77392dd28d8adaa  gcc/testsuite/g++.dg/cpp1z/using7.C
  fcb976b72ee32e007373a445749a9790  gcc/testsuite/g++.dg/cpp1z/using8.C
  335634ca6f39db21a4305967e6392c7e  gcc/testsuite/g++.dg/cpp1z/utf8-2.C
! 3603315f9eaa807813fd71a585596d9d  gcc/testsuite/g++.dg/cpp1z/utf8-2a.C
  744ee2159e8e7541ebf28afa0155714d  gcc/testsuite/g++.dg/cpp1z/utf8-neg.C
  c307915525471ee8f08e6059faf237d8  gcc/testsuite/g++.dg/cpp1z/utf8.C
! 90304e7077881cbe7081da0b6575dbea  gcc/testsuite/g++.dg/cpp2a/aggr1.C
  4c16f1196fa5b9ac2fd9ba5882eba51c  gcc/testsuite/g++.dg/cpp2a/aggr2.C
  92044f5b7098db5aa135ac9643297edb  gcc/testsuite/g++.dg/cpp2a/array-conv1.C
  dcefa6f7ce1e506ba667f2d5026092f5  gcc/testsuite/g++.dg/cpp2a/array-conv10.C
! b6121836bdb5334214115daf4c4c8c0d  gcc/testsuite/g++.dg/cpp2a/array-conv11.C
! 9e1eb31ba17d258408dcc70c68f8ce38  gcc/testsuite/g++.dg/cpp2a/array-conv12.C
! 3ea2c098b51284673de72fc1f35ef09d  gcc/testsuite/g++.dg/cpp2a/array-conv13.C
! 63cb8d3409e86ae5968c94d1eb035740  gcc/testsuite/g++.dg/cpp2a/array-conv14.C
! c1fe4bbf7561a5b5b5ffe3a846dde5ba  gcc/testsuite/g++.dg/cpp2a/array-conv15.C
! 8b81e74ab42ca3804c0b9eed008886f0  gcc/testsuite/g++.dg/cpp2a/array-conv16.C
! bb72fd0fc60bbd00f69c79c23956de36  gcc/testsuite/g++.dg/cpp2a/array-conv17.C
! 000c35aeab2350b36cd05da789507f0c  gcc/testsuite/g++.dg/cpp2a/array-conv2.C
! 4b0f80ba1f5a24313947f0b80250f9e3  gcc/testsuite/g++.dg/cpp2a/array-conv3.C
! 47c95e11532cbd54b662471f2b16786e  gcc/testsuite/g++.dg/cpp2a/array-conv4.C
! a3fc3109e4ddb93f48ea67e32f1826da  gcc/testsuite/g++.dg/cpp2a/array-conv5.C
! 567dc8504f7914c5af3de78807441341  gcc/testsuite/g++.dg/cpp2a/array-conv6.C
! 3928d55a48af650dec6762423e43ac7b  gcc/testsuite/g++.dg/cpp2a/array-conv7.C
! d5faaf0c72f92534890783255d559035  gcc/testsuite/g++.dg/cpp2a/array-conv8.C
! 0f19b16fa2030da8a27a4cd85cdcbbde  gcc/testsuite/g++.dg/cpp2a/array-conv9.C
! f2e78d3b66c26dddbe62f358e2dfbd05  gcc/testsuite/g++.dg/cpp2a/attr-likely1.C
! 948d69f53be2b901feffe3471235ba88  gcc/testsuite/g++.dg/cpp2a/attr-likely2.C
! 56ca9ac4b0dd2143a0e1c8217120157f  gcc/testsuite/g++.dg/cpp2a/attr-likely3.C
! 3bd91d09350d4cef4cd92526bb838712  gcc/testsuite/g++.dg/cpp2a/attr-likely4.C
  226027e75a967be6575ae9d36491d307  gcc/testsuite/g++.dg/cpp2a/attr-likely5.C
  fdfceca1c064eeb01d47f6a29cee1f95  gcc/testsuite/g++.dg/cpp2a/attr-likely6.C
  efde6c8c1860e6796275cd76c0810b5d  gcc/testsuite/g++.dg/cpp2a/bitfield1.C
  6459f6af0671a76d588568648ec2536c  gcc/testsuite/g++.dg/cpp2a/bitfield2.C
  dbb38d79b4b755c3350566626fdf9bd8  gcc/testsuite/g++.dg/cpp2a/bitfield3.C
  74cc445497f4dd39bb1cc3a9955074a9  gcc/testsuite/g++.dg/cpp2a/bitfield4.C
  2a52f543924b11d7fbba0d5b92cdf169  gcc/testsuite/g++.dg/cpp2a/char8_t1.C
  6af0af64f6a4543707d9245ae3e3cb2c  gcc/testsuite/g++.dg/cpp2a/char8_t2.C
! e4ab256b90ae140854cd97b00b09ab4e  gcc/testsuite/g++.dg/cpp2a/class-deduction-aggr1.C
! 751fbb75edb28b274498b0c6ad196089  gcc/testsuite/g++.dg/cpp2a/class-deduction-aggr2.C
! 62962717f7746d6af072ffa09002f237  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias1.C
! 22b0bdcc9e29ff5505abd2886fa49a6d  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias2.C
  06de637acc58c0572ef2eb75419e55e3  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias4.C
! d91909221a5cbeda4fbefe089cb008d0  gcc/testsuite/g++.dg/cpp2a/comma1.C
! aee795f23186e5e93f06f950260e8a90  gcc/testsuite/g++.dg/cpp2a/comma2.C
  d6c6fbba9ebe083780b2e382feedd3f0  gcc/testsuite/g++.dg/cpp2a/comma3.C
! 51ad0eed6b1e3af74162d1ee0de0254c  gcc/testsuite/g++.dg/cpp2a/comma4.C
! 873b38016694f36e0f5959b9f7fbdbd1  gcc/testsuite/g++.dg/cpp2a/comma5.C
  3982ca152ace777ab5c2835845d0dbcc  gcc/testsuite/g++.dg/cpp2a/concepts-access1.C
! 1f0ded73dc9b67e623cce2d93bfa53b9  gcc/testsuite/g++.dg/cpp2a/concepts-alias.C
  7ae1a25f7b8ee467de1b91bf2df83b3f  gcc/testsuite/g++.dg/cpp2a/concepts-alias2.C
! c9ae2922e7ca13c8c3d78041f2d30547  gcc/testsuite/g++.dg/cpp2a/concepts-alias3.C
! d53f9d7d923dd6658a5305d9d4d26e41  gcc/testsuite/g++.dg/cpp2a/concepts-alias4.C
! 97afaa6a75445f78c6cd19df9bc19812  gcc/testsuite/g++.dg/cpp2a/concepts-alias5.C
  6f7e254d7b669dfe3f33771c2590967f  gcc/testsuite/g++.dg/cpp2a/concepts-attrib1.C
! 49a86f88eba1b892a83b3da918e27c06  gcc/testsuite/g++.dg/cpp2a/concepts-class.C
  63ed441f3454dbb9de59b7ce9563a475  gcc/testsuite/g++.dg/cpp2a/concepts-class2.C
! 1059641b64b63abf2253d1b78cb42078  gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
! 610f0901dc0d33df64b4145bae0639b9  gcc/testsuite/g++.dg/cpp2a/concepts-complete1.C
! dff99d1b92f8d4a8afb653036ee3db4c  gcc/testsuite/g++.dg/cpp2a/concepts-constrained-parm.C
  65e4b424a121ebbab5beacb2ebbf0591  gcc/testsuite/g++.dg/cpp2a/concepts-conv1.C
! aacf362e672adce9828b11e236d60b0d  gcc/testsuite/g++.dg/cpp2a/concepts-conv2.C
  c7b9c33b4c64892adbf5412ad5123053  gcc/testsuite/g++.dg/cpp2a/concepts-ctad1.C
  fb0e127ecb1cec0db6d4a1f2dc191508  gcc/testsuite/g++.dg/cpp2a/concepts-ctad2.C
! c4ffa958ff3793f7e4e8b0266163aebd  gcc/testsuite/g++.dg/cpp2a/concepts-decltype.C
  2ff1559b74cd8147b9de258edac783b1  gcc/testsuite/g++.dg/cpp2a/concepts-defarg1.C
  c215ebfad2b56bf6dd6b0a287515afa7  gcc/testsuite/g++.dg/cpp2a/concepts-dep1.C
! e6511c7a38a3c0fa4202eea51ae4eb5a  gcc/testsuite/g++.dg/cpp2a/concepts-dr1430.C
  9a6f2742da84cba311f0be393cccdd14  gcc/testsuite/g++.dg/cpp2a/concepts-err1.C
! 0050b48e4aadcd6e7a7a5f847e9ea194  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-inst1.C
! 50134d48e3665ce19f7f1f9b70600123  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-inst2.C
! 597b6b0f2495a1be9a1a4a7e2fd31f97  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-inst3.C
! f6e3eae363fbac6b83981b652d5c0757  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-inst4.C
  740230459551566f4362724f116bc96e  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-inst5.C
! 6c2946afbfe2b6b4a0c53b011b509f22  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
! b746e5172fbca5c9cf5cacb584302e06  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec2.C
! 3cc8ab82faeca71a945d6a2baa21955e  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec3.C
! 426cc2365ef290350dcdcb42b66b0024  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
! a2c3aedd76ee0cb5e29b12ae18618114  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
! 0d0e684440373113370ef3357c6e2a4b  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec6.C
! 130bb40848e21c27be12c24f308aa1df  gcc/testsuite/g++.dg/cpp2a/concepts-feature-macro.C
! 4e8f5170d90d3729c4becaa7a13773cb  gcc/testsuite/g++.dg/cpp2a/concepts-fn1.C
! 0e4ba7562739ee9cd5968ea60063c27e  gcc/testsuite/g++.dg/cpp2a/concepts-fn2.C
! 309433fb4d40b97837ec7e73bda9795b  gcc/testsuite/g++.dg/cpp2a/concepts-fn3.C
! e25670cc6a641732f54fe017b26fd246  gcc/testsuite/g++.dg/cpp2a/concepts-fn4.C
  24a9eaf01cde49642308b85f4d4dcc5e  gcc/testsuite/g++.dg/cpp2a/concepts-fn5.C
  361e29e28ac51bd246a126bf9582d546  gcc/testsuite/g++.dg/cpp2a/concepts-fn7.C
  54600170a553fbe02a4c3cc4c16271ab  gcc/testsuite/g++.dg/cpp2a/concepts-fnparm1.C
! 5863b9cd7a393866bc485f74934fbc6d  gcc/testsuite/g++.dg/cpp2a/concepts-friend1.C
! 70b514731a5baa0a2d0093a300fdb886  gcc/testsuite/g++.dg/cpp2a/concepts-friend2.C
  3f315ba7ac021707fcaa518bf77b73e4  gcc/testsuite/g++.dg/cpp2a/concepts-friend3.C
! 7b35d21b203429bd5d98983dd5c0cf35  gcc/testsuite/g++.dg/cpp2a/concepts-friend4.C
  535b411a30b7e4636ae8516c5caf72bb  gcc/testsuite/g++.dg/cpp2a/concepts-friend5.C
  921090d482556f3414f75aa90ca0fcfb  gcc/testsuite/g++.dg/cpp2a/concepts-friend6.C
  8fc5265429852a8c08186712fb5cc368  gcc/testsuite/g++.dg/cpp2a/concepts-friend7.C
! 0a22b0845402691798ba6a63161e5ddf  gcc/testsuite/g++.dg/cpp2a/concepts-iconv1.C
  1937ae9933c87a03a76c217d414991cf  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor10.C
  fe1e62c95a2bf83c96a7c376426b20ce  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor11.C
! fe0dea8096fe1f2f44e2c10888c64a1b  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor2.C
! b282c3fc46ef2f36eb59d67e87054f01  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor4.C
  c9ef579033e02c74ef195108ea465ecc  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor5.C
! cae7654b412cbf33a1a4ba4c32c278ef  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor6.C
  fd816746b85408f6a9941c624a49f53b  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor7.C
  ee878af04e01dedb5da886a5465c4e0c  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor8.C
  138159544ab6a8bb9f504f8704b0b104  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor9.C
! 3d5780945f96712ff75a5a77b7376769  gcc/testsuite/g++.dg/cpp2a/concepts-lambda1.C
  d5de687d9a2db5030fe9635cd6b560fc  gcc/testsuite/g++.dg/cpp2a/concepts-lambda10.C
  e459f662c1babef952fc8ed43a3c456a  gcc/testsuite/g++.dg/cpp2a/concepts-lambda11.C
  00c2df64959390d6aa7fae1303f13993  gcc/testsuite/g++.dg/cpp2a/concepts-lambda12.C
! 47e8d5f8d842b2bffab4e009786d6131  gcc/testsuite/g++.dg/cpp2a/concepts-lambda2.C
! 2fc0bda8d986396f3dc4f755b1b8ff25  gcc/testsuite/g++.dg/cpp2a/concepts-lambda3.C
! 7489e09e51fba58cbc65eff2195b25d8  gcc/testsuite/g++.dg/cpp2a/concepts-lambda4.C
! 024723b56bff45488813a85f5f282959  gcc/testsuite/g++.dg/cpp2a/concepts-lambda5.C
  703446324db78bbaafc058da29f6c29d  gcc/testsuite/g++.dg/cpp2a/concepts-lambda6.C
  187d3db81a640f58a3351aaa777dec3f  gcc/testsuite/g++.dg/cpp2a/concepts-lambda7.C
  0efbf18a87e0e22f167e8f8664d4b14f  gcc/testsuite/g++.dg/cpp2a/concepts-lambda8.C
  dcc812ca298a6d2d310068abfa0d1270  gcc/testsuite/g++.dg/cpp2a/concepts-lambda9.C
! d242a6264213cd3917d39cd479b7a400  gcc/testsuite/g++.dg/cpp2a/concepts-locations1.C
! 450f4f063fbed3602e5e74f3d066929d  gcc/testsuite/g++.dg/cpp2a/concepts-member-concept.C
! 3c79e2c6fe09b25b7de1995d82b5ab10  gcc/testsuite/g++.dg/cpp2a/concepts-memfun-err.C
! 300591a1438faedc220d202b5184731e  gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
! 08e70f5a0d06a1a1f1c475e009d2a51e  gcc/testsuite/g++.dg/cpp2a/concepts-memtmpl1.C
  e09adbfcc76e9a9b156fb1128f518684  gcc/testsuite/g++.dg/cpp2a/concepts-memtmpl2.C
  913d434a43b62d7d2f966fd44a4a141e  gcc/testsuite/g++.dg/cpp2a/concepts-memtmpl3.C
  64d63b0665647539131af9fc002ada89  gcc/testsuite/g++.dg/cpp2a/concepts-nested1.C
! f3cb989a6948f733a4298a7b864bf544  gcc/testsuite/g++.dg/cpp2a/concepts-noexcept1.C
  e4aaef3dab277c2193eb4dcca63838d3  gcc/testsuite/g++.dg/cpp2a/concepts-nonbool1.C
  db9b9a846a39244749267e6c2d9751ef  gcc/testsuite/g++.dg/cpp2a/concepts-nonbool2.C
  346f87c83404f356f2db97a19e1e04a2  gcc/testsuite/g++.dg/cpp2a/concepts-p1141.C
  517f6d7a5f4dd6f650d5d9a39a8a2f24  gcc/testsuite/g++.dg/cpp2a/concepts-p2092.C
  c02adf26d58e820807cae8699c98d45a  gcc/testsuite/g++.dg/cpp2a/concepts-p2113a.C
--- 15638,15820 ----
  fe69b2dd849cca71544b409a3695f4d5  gcc/testsuite/g++.dg/cpp1z/using6.C
  fa1cfed74923d833a77392dd28d8adaa  gcc/testsuite/g++.dg/cpp1z/using7.C
  fcb976b72ee32e007373a445749a9790  gcc/testsuite/g++.dg/cpp1z/using8.C
+ 25f1583b4ac1d583f8771e8b23eda387  gcc/testsuite/g++.dg/cpp1z/using9.C
  335634ca6f39db21a4305967e6392c7e  gcc/testsuite/g++.dg/cpp1z/utf8-2.C
! 5be5d7f2f40f7aea358f9007942afde2  gcc/testsuite/g++.dg/cpp1z/utf8-2a.C
  744ee2159e8e7541ebf28afa0155714d  gcc/testsuite/g++.dg/cpp1z/utf8-neg.C
  c307915525471ee8f08e6059faf237d8  gcc/testsuite/g++.dg/cpp1z/utf8.C
! 94d923eb6e3e9a6e1a82b6aa88915ed5  gcc/testsuite/g++.dg/cpp23/cplusplus.C
! d39bcd154de40d84b2eefbe2f9697524  gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C
! 570aa212dcff2a498d044c98fa66a858  gcc/testsuite/g++.dg/cpp23/lambda-specifiers1.C
! 0b54a398f8b42d5fc1ce9e8f422c3298  gcc/testsuite/g++.dg/cpp23/lambda-specifiers2.C
! 5fe66da6d2baee159060686defa0e47e  gcc/testsuite/g++.dg/cpp23/size_t-literals.C
! 6e521186d896dd387882c734f9554b0d  gcc/testsuite/g++.dg/cpp2a/aggr1.C
  4c16f1196fa5b9ac2fd9ba5882eba51c  gcc/testsuite/g++.dg/cpp2a/aggr2.C
  92044f5b7098db5aa135ac9643297edb  gcc/testsuite/g++.dg/cpp2a/array-conv1.C
  dcefa6f7ce1e506ba667f2d5026092f5  gcc/testsuite/g++.dg/cpp2a/array-conv10.C
! 71cfe439be3c0f01d3811d5e5c9a0170  gcc/testsuite/g++.dg/cpp2a/array-conv11.C
! 3bf6977831d7db45f9c91e9a274e6997  gcc/testsuite/g++.dg/cpp2a/array-conv12.C
! 1c6ed08f74f07ad6aabd1f75b9cd12ff  gcc/testsuite/g++.dg/cpp2a/array-conv13.C
! 6ac8e84e15f3efc7ad119552a8fd3515  gcc/testsuite/g++.dg/cpp2a/array-conv14.C
! aed906f7014c1a51274df0cbb94bba3b  gcc/testsuite/g++.dg/cpp2a/array-conv15.C
! 74e7d215bd5ee1a772b012aea6b9f78c  gcc/testsuite/g++.dg/cpp2a/array-conv16.C
! b2ab0d6d08683d3e74f7ae666c10d290  gcc/testsuite/g++.dg/cpp2a/array-conv17.C
! 9b4db28c4982946c2b71e341bc82b9cf  gcc/testsuite/g++.dg/cpp2a/array-conv2.C
! 38b13d13ed969a534f6b836584fa99e6  gcc/testsuite/g++.dg/cpp2a/array-conv3.C
! d9d6989aea7f5df59fab46b5d1055fbe  gcc/testsuite/g++.dg/cpp2a/array-conv4.C
! c53ac09a3787edd30ff967c54502b901  gcc/testsuite/g++.dg/cpp2a/array-conv5.C
! f9ed321f36ce7b529c2396e4335a9741  gcc/testsuite/g++.dg/cpp2a/array-conv6.C
! dc9861043ac8b6f31d3e0c2ab06b207e  gcc/testsuite/g++.dg/cpp2a/array-conv7.C
! 657bf1a950977009fc70ab10dd8e8d22  gcc/testsuite/g++.dg/cpp2a/array-conv8.C
! bf806c7f6cbefb6e5f28fb5d1a8c3f45  gcc/testsuite/g++.dg/cpp2a/array-conv9.C
! 261c7672569b7a1474bf6ab2c82cce22  gcc/testsuite/g++.dg/cpp2a/attr-likely1.C
! 26168cb1e76c0a02cdb358f0276aed6d  gcc/testsuite/g++.dg/cpp2a/attr-likely2.C
! 6cfe4bc460562265cf6bc134ae408913  gcc/testsuite/g++.dg/cpp2a/attr-likely3.C
! f45c14802a831b4c2d66638708833b4e  gcc/testsuite/g++.dg/cpp2a/attr-likely4.C
  226027e75a967be6575ae9d36491d307  gcc/testsuite/g++.dg/cpp2a/attr-likely5.C
  fdfceca1c064eeb01d47f6a29cee1f95  gcc/testsuite/g++.dg/cpp2a/attr-likely6.C
+ 3ad5e93951baf0d22ea016ff9e7e5647  gcc/testsuite/g++.dg/cpp2a/bit-cast1.C
+ a3d09682b891e46d2909fa15e90968be  gcc/testsuite/g++.dg/cpp2a/bit-cast10.C
+ 1a2fa5e09ce4afea93f8549367941793  gcc/testsuite/g++.dg/cpp2a/bit-cast2.C
+ 4cd9a6c75b7b9c06d500d33a4b70e045  gcc/testsuite/g++.dg/cpp2a/bit-cast3.C
+ 43041147b254e878b1962b35b230ff79  gcc/testsuite/g++.dg/cpp2a/bit-cast4.C
+ 4088424a41352416e337df3284b9f736  gcc/testsuite/g++.dg/cpp2a/bit-cast5.C
+ bcecfdcccf9edb773fbec699fe2b71c0  gcc/testsuite/g++.dg/cpp2a/bit-cast6.C
+ 583ccc51ba286c15a022f783fb8ed515  gcc/testsuite/g++.dg/cpp2a/bit-cast7.C
+ 39ca439b4e0272dadf02ecf57bd67d4d  gcc/testsuite/g++.dg/cpp2a/bit-cast8.C
+ 2e7969cce6c326c0c378ccf7a44a7c3a  gcc/testsuite/g++.dg/cpp2a/bit-cast9.C
  efde6c8c1860e6796275cd76c0810b5d  gcc/testsuite/g++.dg/cpp2a/bitfield1.C
  6459f6af0671a76d588568648ec2536c  gcc/testsuite/g++.dg/cpp2a/bitfield2.C
  dbb38d79b4b755c3350566626fdf9bd8  gcc/testsuite/g++.dg/cpp2a/bitfield3.C
  74cc445497f4dd39bb1cc3a9955074a9  gcc/testsuite/g++.dg/cpp2a/bitfield4.C
  2a52f543924b11d7fbba0d5b92cdf169  gcc/testsuite/g++.dg/cpp2a/char8_t1.C
  6af0af64f6a4543707d9245ae3e3cb2c  gcc/testsuite/g++.dg/cpp2a/char8_t2.C
! f185c95e6533c47459ae6a6e7821f682  gcc/testsuite/g++.dg/cpp2a/class-deduction-abbrev1.C
! d9bcdea082949e0c87b6954f2dd67298  gcc/testsuite/g++.dg/cpp2a/class-deduction-aggr1.C
! 28f5f39099d59e2a95b5239e6d85699e  gcc/testsuite/g++.dg/cpp2a/class-deduction-aggr10.C
! bfe691406f456aa2bf87cad44ebe9fdf  gcc/testsuite/g++.dg/cpp2a/class-deduction-aggr2.C
! 874ea45b0464e3169c1d395e9b4c624e  gcc/testsuite/g++.dg/cpp2a/class-deduction-aggr3.C
! f664fc9add616872e35649f615430da5  gcc/testsuite/g++.dg/cpp2a/class-deduction-aggr4.C
! 104b0bd5ee1f7652604cf4de216abdf3  gcc/testsuite/g++.dg/cpp2a/class-deduction-aggr5.C
! 3484e1c7a721138c69cf488686882d22  gcc/testsuite/g++.dg/cpp2a/class-deduction-aggr6.C
! cb1a58e37d4fb866418947cb0f59edad  gcc/testsuite/g++.dg/cpp2a/class-deduction-aggr7.C
! 3d085184d808daa075a1d636b41ede25  gcc/testsuite/g++.dg/cpp2a/class-deduction-aggr8.C
! a6e0596871a58160e95f35f1da953609  gcc/testsuite/g++.dg/cpp2a/class-deduction-aggr9.C
! 435d8338859edbe8d0c9cba841bea218  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias1.C
! 5fc58f05c478c6749c3f3dd4351420b0  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias2.C
! 2fd0252922ffc9e49528942c28494f78  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias3.C
  06de637acc58c0572ef2eb75419e55e3  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias4.C
! 0538d499885f751447275fb21053fc26  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias5.C
! 65613b3e49f308133a1a98bbfe9acfc7  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias6.C
! 3d59688f146fdaa417c0679c3daf962b  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias7.C
! 860b0c6e24138897f501915458fc4a3e  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias8.C
! c1e1f79f140203dd924a70f88886c62e  gcc/testsuite/g++.dg/cpp2a/comma1.C
! 09399dec8eb1e8129209692532bf9ba5  gcc/testsuite/g++.dg/cpp2a/comma2.C
  d6c6fbba9ebe083780b2e382feedd3f0  gcc/testsuite/g++.dg/cpp2a/comma3.C
! 91cdf86169cdf8a6437bdab0961cddb2  gcc/testsuite/g++.dg/cpp2a/comma4.C
! 748110ebf8f30e5bf4ddcacbf8d323d5  gcc/testsuite/g++.dg/cpp2a/comma5.C
  3982ca152ace777ab5c2835845d0dbcc  gcc/testsuite/g++.dg/cpp2a/concepts-access1.C
! 4af40a8c84fb1337e9cb46bed9294d68  gcc/testsuite/g++.dg/cpp2a/concepts-alias.C
  7ae1a25f7b8ee467de1b91bf2df83b3f  gcc/testsuite/g++.dg/cpp2a/concepts-alias2.C
! 02000fba8afd50c1bb78d185c12511eb  gcc/testsuite/g++.dg/cpp2a/concepts-alias3.C
! 60ea1f10322739348de77ef356876752  gcc/testsuite/g++.dg/cpp2a/concepts-alias4.C
! fb350867aa8cdc67b249fa261640a65d  gcc/testsuite/g++.dg/cpp2a/concepts-alias5.C
  6f7e254d7b669dfe3f33771c2590967f  gcc/testsuite/g++.dg/cpp2a/concepts-attrib1.C
! 482c7f451336e07eabe2f9835704eda8  gcc/testsuite/g++.dg/cpp2a/concepts-ca107.C
! ea403ba40e42238758942621a96e8847  gcc/testsuite/g++.dg/cpp2a/concepts-class.C
  63ed441f3454dbb9de59b7ce9563a475  gcc/testsuite/g++.dg/cpp2a/concepts-class2.C
! 23827376311292569303ff5fd4542c5c  gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
! d6b4a2062d9072a514a787db6f02cc29  gcc/testsuite/g++.dg/cpp2a/concepts-complete1.C
! cb8668f19e63ee61b88c50eb36fc3645  gcc/testsuite/g++.dg/cpp2a/concepts-complete2.C
! 697e220e643e4dd5dbf81947b8621a99  gcc/testsuite/g++.dg/cpp2a/concepts-complete3.C
! 11178c260b3e89ebdbdce2a5bca50b11  gcc/testsuite/g++.dg/cpp2a/concepts-constrained-parm.C
  65e4b424a121ebbab5beacb2ebbf0591  gcc/testsuite/g++.dg/cpp2a/concepts-conv1.C
! 3797e31584c1026d45ee1b5b08c4188b  gcc/testsuite/g++.dg/cpp2a/concepts-conv2.C
! 3dfc2b34ff14f4caaefbb3aa208ead6a  gcc/testsuite/g++.dg/cpp2a/concepts-conv3.C
! c9bd56a9892857fac63c37d445f93faa  gcc/testsuite/g++.dg/cpp2a/concepts-conv3a.C
  c7b9c33b4c64892adbf5412ad5123053  gcc/testsuite/g++.dg/cpp2a/concepts-ctad1.C
  fb0e127ecb1cec0db6d4a1f2dc191508  gcc/testsuite/g++.dg/cpp2a/concepts-ctad2.C
! b767b966d12988229b81b213bca08722  gcc/testsuite/g++.dg/cpp2a/concepts-ctad3.C
! 6cb53000f2b233d691cd0777f551b3c5  gcc/testsuite/g++.dg/cpp2a/concepts-decltype.C
! ce0107015099b9bc8bbb6308d69d1335  gcc/testsuite/g++.dg/cpp2a/concepts-decltype2.C
! 20942197b42aecb2031c455e6c7139db  gcc/testsuite/g++.dg/cpp2a/concepts-decltype3.C
  2ff1559b74cd8147b9de258edac783b1  gcc/testsuite/g++.dg/cpp2a/concepts-defarg1.C
+ 8b450b687a58857141c45425bdbf8e80  gcc/testsuite/g++.dg/cpp2a/concepts-defarg2.C
  c215ebfad2b56bf6dd6b0a287515afa7  gcc/testsuite/g++.dg/cpp2a/concepts-dep1.C
! 37eafad18707c0514512d3caa8c07489  gcc/testsuite/g++.dg/cpp2a/concepts-dr1430.C
  9a6f2742da84cba311f0be393cccdd14  gcc/testsuite/g++.dg/cpp2a/concepts-err1.C
! 9cfd545ae89835254bd89b814539ec8f  gcc/testsuite/g++.dg/cpp2a/concepts-err2.C
! d953a772cd1d2f181c0e4b6b2f47961d  gcc/testsuite/g++.dg/cpp2a/concepts-err3.C
! 58c69136270d7c38c79f96cdf4f5677a  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-inst1.C
! a36328931eee1fbab16d05f42eacf4bd  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-inst2.C
! 8d43f44aae36b8a20d34b07e48caa27e  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-inst3.C
! ec6220905e567a0d8dab4a952fe8c861  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-inst4.C
  740230459551566f4362724f116bc96e  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-inst5.C
! 503fee90026f6e892cef6edc9f26066a  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
! 8c6ce7d3a7a3dd1eadb46601b80f9ab1  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec2.C
! d3c85c507d4288a8286336935645f41c  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec3.C
! 4b80e979535ae4fa609a83187700f5e3  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
! dfba4781e85f6add0289734b8835a055  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
! 68f3034bcc5d853319e01e07fd096130  gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec6.C
! 3e23e5ef22d81c4913709b17ced786d1  gcc/testsuite/g++.dg/cpp2a/concepts-feature-macro.C
! 33e885426a730901465b983fca026a37  gcc/testsuite/g++.dg/cpp2a/concepts-fn1.C
! a6a50b6488710734804c5c75b79b903a  gcc/testsuite/g++.dg/cpp2a/concepts-fn2.C
! 2694712a2d8d12fcfe811c20125c2a4f  gcc/testsuite/g++.dg/cpp2a/concepts-fn3.C
! 08efcf48120e6ce58d99f8853570a854  gcc/testsuite/g++.dg/cpp2a/concepts-fn4.C
  24a9eaf01cde49642308b85f4d4dcc5e  gcc/testsuite/g++.dg/cpp2a/concepts-fn5.C
+ 0f1a6b3b582e8d9538428d983f021ba9  gcc/testsuite/g++.dg/cpp2a/concepts-fn6.C
  361e29e28ac51bd246a126bf9582d546  gcc/testsuite/g++.dg/cpp2a/concepts-fn7.C
  54600170a553fbe02a4c3cc4c16271ab  gcc/testsuite/g++.dg/cpp2a/concepts-fnparm1.C
! ddf7b3c6cc5b3127a1fb9f8ada7bd1d3  gcc/testsuite/g++.dg/cpp2a/concepts-friend1.C
! 2fdb3d1a7c3f6a1361b9e8a0700d78f5  gcc/testsuite/g++.dg/cpp2a/concepts-friend2.C
  3f315ba7ac021707fcaa518bf77b73e4  gcc/testsuite/g++.dg/cpp2a/concepts-friend3.C
! ac59cd12de1286d61d74c57276a780ba  gcc/testsuite/g++.dg/cpp2a/concepts-friend4.C
  535b411a30b7e4636ae8516c5caf72bb  gcc/testsuite/g++.dg/cpp2a/concepts-friend5.C
  921090d482556f3414f75aa90ca0fcfb  gcc/testsuite/g++.dg/cpp2a/concepts-friend6.C
  8fc5265429852a8c08186712fb5cc368  gcc/testsuite/g++.dg/cpp2a/concepts-friend7.C
! 9cc4512c24e2e9e9e5f02efffe4313b7  gcc/testsuite/g++.dg/cpp2a/concepts-friend8.C
! 99da7c31998a40b6a93d18ba7b0f8b17  gcc/testsuite/g++.dg/cpp2a/concepts-iconv1.C
  1937ae9933c87a03a76c217d414991cf  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor10.C
  fe1e62c95a2bf83c96a7c376426b20ce  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor11.C
! 3d78675fa4ef2d0ff62dde829e46f274  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor2.C
! e251532eb14b2687c86c2eb70068c425  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor4.C
  c9ef579033e02c74ef195108ea465ecc  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor5.C
! 540eba60a600da81a2415a9faceb01e4  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor6.C
  fd816746b85408f6a9941c624a49f53b  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor7.C
  ee878af04e01dedb5da886a5465c4e0c  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor8.C
  138159544ab6a8bb9f504f8704b0b104  gcc/testsuite/g++.dg/cpp2a/concepts-inherit-ctor9.C
! 6c029993c72cd17cc3d1bbb2f235ca9c  gcc/testsuite/g++.dg/cpp2a/concepts-lambda1.C
  d5de687d9a2db5030fe9635cd6b560fc  gcc/testsuite/g++.dg/cpp2a/concepts-lambda10.C
  e459f662c1babef952fc8ed43a3c456a  gcc/testsuite/g++.dg/cpp2a/concepts-lambda11.C
  00c2df64959390d6aa7fae1303f13993  gcc/testsuite/g++.dg/cpp2a/concepts-lambda12.C
! b593885abfe9fa1e41aac5773b850812  gcc/testsuite/g++.dg/cpp2a/concepts-lambda13.C
! ce799078e9f1ff1339d260a0437f50bb  gcc/testsuite/g++.dg/cpp2a/concepts-lambda14.C
! 06d21d29a1465389d640dd9c6385524d  gcc/testsuite/g++.dg/cpp2a/concepts-lambda15.C
! e4194669f093a7afc4d5ecdf72352e0f  gcc/testsuite/g++.dg/cpp2a/concepts-lambda16.C
! 06bd50a31b004aed3b6d5dbd8ba09c45  gcc/testsuite/g++.dg/cpp2a/concepts-lambda17.C
! c61f89754bf19eb066c90223050eb1d6  gcc/testsuite/g++.dg/cpp2a/concepts-lambda2.C
! f2b845034b89685c0074632f8a1947ff  gcc/testsuite/g++.dg/cpp2a/concepts-lambda3.C
! 6f185f0a7016ab67c7f0d4ffa7012182  gcc/testsuite/g++.dg/cpp2a/concepts-lambda4.C
! 86976d8466300862e381a2182c187b35  gcc/testsuite/g++.dg/cpp2a/concepts-lambda5.C
  703446324db78bbaafc058da29f6c29d  gcc/testsuite/g++.dg/cpp2a/concepts-lambda6.C
  187d3db81a640f58a3351aaa777dec3f  gcc/testsuite/g++.dg/cpp2a/concepts-lambda7.C
  0efbf18a87e0e22f167e8f8664d4b14f  gcc/testsuite/g++.dg/cpp2a/concepts-lambda8.C
  dcc812ca298a6d2d310068abfa0d1270  gcc/testsuite/g++.dg/cpp2a/concepts-lambda9.C
! 512dbb965f20f63bb126b8e5deed8a15  gcc/testsuite/g++.dg/cpp2a/concepts-locations1.C
! 866a570be4d1afdfa0c2b5130d439bb2  gcc/testsuite/g++.dg/cpp2a/concepts-member-concept.C
! d12b098e52b49342652a92f712e212d7  gcc/testsuite/g++.dg/cpp2a/concepts-memfun-err.C
! 02865ef6ff74cb9b4108964da2da397f  gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
! 7f5a683e6cb36d020f2d955fd2b5662a  gcc/testsuite/g++.dg/cpp2a/concepts-memtmpl1.C
  e09adbfcc76e9a9b156fb1128f518684  gcc/testsuite/g++.dg/cpp2a/concepts-memtmpl2.C
  913d434a43b62d7d2f966fd44a4a141e  gcc/testsuite/g++.dg/cpp2a/concepts-memtmpl3.C
  64d63b0665647539131af9fc002ada89  gcc/testsuite/g++.dg/cpp2a/concepts-nested1.C
! 6a7534cd7752ba1e8a71bcb62eaf6954  gcc/testsuite/g++.dg/cpp2a/concepts-nodiscard1.C
! af32b8a680f8728b4cf3162357b86e68  gcc/testsuite/g++.dg/cpp2a/concepts-noexcept1.C
  e4aaef3dab277c2193eb4dcca63838d3  gcc/testsuite/g++.dg/cpp2a/concepts-nonbool1.C
  db9b9a846a39244749267e6c2d9751ef  gcc/testsuite/g++.dg/cpp2a/concepts-nonbool2.C
+ 89327af296c5eb0dd5649a853dc818a7  gcc/testsuite/g++.dg/cpp2a/concepts-nonbool3.C
+ d832de2b6b1b93adff12b06c34e84556  gcc/testsuite/g++.dg/cpp2a/concepts-nondep1.C
+ ca398f2b2e8443dc7a94b70c83a40ca1  gcc/testsuite/g++.dg/cpp2a/concepts-nondep1a.C
  346f87c83404f356f2db97a19e1e04a2  gcc/testsuite/g++.dg/cpp2a/concepts-p1141.C
  517f6d7a5f4dd6f650d5d9a39a8a2f24  gcc/testsuite/g++.dg/cpp2a/concepts-p2092.C
  c02adf26d58e820807cae8699c98d45a  gcc/testsuite/g++.dg/cpp2a/concepts-p2113a.C
*************** d419d794d35f72a64d62ad6da7dc8b75  gcc/te
*** 15004,15016 ****
  832c51f3914e8bfe28767b53255b00e6  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec.C
  73a09ba5b73bea20b72e95116b9c7dee  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec2.C
  3c01201683b221045bd1faca7a936921  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec3.C
! bf127974b4c1572f39de08f9509b2a0d  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec4.C
! 88be4540da27326033ee60aad32e8c9f  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec5.C
! ef6587e2dae4d0ef1b6bb2d49637a22b  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec6.C
  f43d24631924e6835f35ad16f9b77ac9  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec7.C
  b48de652a269ba0411d9c971e6b06869  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec8.C
! b98a0dc46b059f2124b0dffa0ae4a059  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder1.C
! c807f37867eb805d17186a363f6d4ad8  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder2.C
  fc797eabdd1dc0d22609e8841d633f99  gcc/testsuite/g++.dg/cpp2a/concepts-pmf1.C
  2e23f19968091d773a47c43a32a784ae  gcc/testsuite/g++.dg/cpp2a/concepts-pr58500.C
  07c6a4dff1357ef61c0d30b12db5c948  gcc/testsuite/g++.dg/cpp2a/concepts-pr58534.C
--- 15822,15841 ----
  832c51f3914e8bfe28767b53255b00e6  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec.C
  73a09ba5b73bea20b72e95116b9c7dee  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec2.C
  3c01201683b221045bd1faca7a936921  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec3.C
! fe3419a05a4d0b37befa20fa2b74e5c7  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec4.C
! 76420e0f0903d454e793407f2236943a  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec5.C
! 8bfe79d0bc0c6485ed7632f09862c764  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec6.C
  f43d24631924e6835f35ad16f9b77ac9  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec7.C
  b48de652a269ba0411d9c971e6b06869  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec8.C
! 66e23ad7cf5207487bf51a95b73faeae  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec9.C
! 29ec7a379f70ee79ba0310d8fc45703b  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder1.C
! 9a1776b1d9b3c080e847b78507e8c1c6  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder2.C
! d4ce4a5306e35eff2b78390b50d6c95b  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder3.C
! e428d578c8a0c5a61ab85eddccb24071  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder4.C
! 7585fa6ca3788d97b1251109859e1448  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder5.C
! c2d0d078fee9a53020db24bba52afb7a  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder6.C
! d52bc31ed2109bf517ab9f47b7e08903  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder7.C
! 8ebe9b5f46fa5edb161d44cdccda7129  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder8.C
  fc797eabdd1dc0d22609e8841d633f99  gcc/testsuite/g++.dg/cpp2a/concepts-pmf1.C
  2e23f19968091d773a47c43a32a784ae  gcc/testsuite/g++.dg/cpp2a/concepts-pr58500.C
  07c6a4dff1357ef61c0d30b12db5c948  gcc/testsuite/g++.dg/cpp2a/concepts-pr58534.C
*************** cb815d3a7525bf862890051adf239ce3  gcc/te
*** 15027,15160 ****
  a6017b5415fc2bcf7a3df910703e0137  gcc/testsuite/g++.dg/cpp2a/concepts-pr60390.C
  19ab34c3acffcfac10237d280b6846a3  gcc/testsuite/g++.dg/cpp2a/concepts-pr60391.C
  bc89487bc8fc4fa7edd814ad73b2f5a0  gcc/testsuite/g++.dg/cpp2a/concepts-pr60573.C
! 7fdccaeb32e2a3769ce5c7cca78695e7  gcc/testsuite/g++.dg/cpp2a/concepts-pr65552.C
  ef2825ac191806b395137eaaec2b6414  gcc/testsuite/g++.dg/cpp2a/concepts-pr65575.C
! 1e3dd7178625c6fde13b35e39af8c995  gcc/testsuite/g++.dg/cpp2a/concepts-pr65634.C
! 909aa0c9137cce90d94854576bb83e86  gcc/testsuite/g++.dg/cpp2a/concepts-pr65636.C
! 9accac5cf543bad9888edeadbe192652  gcc/testsuite/g++.dg/cpp2a/concepts-pr65848.C
! 112ed648d043c56e3d7539fbad2c68e4  gcc/testsuite/g++.dg/cpp2a/concepts-pr65854.C
  d5540bff1427bc002f17c05393848561  gcc/testsuite/g++.dg/cpp2a/concepts-pr66091.C
! 83eceec2f6d467269fb88f69568bdf45  gcc/testsuite/g++.dg/cpp2a/concepts-pr66844.C
! 5e4b2ab0dfb6b35e940a35bb278f4fda  gcc/testsuite/g++.dg/cpp2a/concepts-pr66962.C
! a6fbfcdd74711a99e415fd1017b6acdc  gcc/testsuite/g++.dg/cpp2a/concepts-pr67070.C
! 7cbf6ceebb460e12a2140162c41f2d6c  gcc/testsuite/g++.dg/cpp2a/concepts-pr67147.C
! 6123bda71230fb589de92ffe78d189e1  gcc/testsuite/g++.dg/cpp2a/concepts-pr67148.C
! c893b47c1c25ad9178a23f299060d318  gcc/testsuite/g++.dg/cpp2a/concepts-pr67178.C
! 7b97ea001deac93f9ba88b1644dccb68  gcc/testsuite/g++.dg/cpp2a/concepts-pr67210.C
! d1e9900088721f563ab0892b95b1e290  gcc/testsuite/g++.dg/cpp2a/concepts-pr67217.C
! 3bab2d4691bd6098c5e865605c1b76d1  gcc/testsuite/g++.dg/cpp2a/concepts-pr67225-1.C
! 4f691bbcc56c7da949464e6518b79569  gcc/testsuite/g++.dg/cpp2a/concepts-pr67225-2.C
! 1ace04585809b420cc01104abb9c08f0  gcc/testsuite/g++.dg/cpp2a/concepts-pr67225-3.C
! 2d3dcf4ad2971f3e8bac044c5cd35e25  gcc/testsuite/g++.dg/cpp2a/concepts-pr67225-4.C
! a66a3ec1c1b1a8845c67882415cf80a8  gcc/testsuite/g++.dg/cpp2a/concepts-pr67225-5.C
! 7d3467539a28d37fecc587015fe12389  gcc/testsuite/g++.dg/cpp2a/concepts-pr67319.C
! 8d810329baae33a037492d35a8826d2d  gcc/testsuite/g++.dg/cpp2a/concepts-pr67427.C
! c909b7f2a69deaad73725f364b4e25a1  gcc/testsuite/g++.dg/cpp2a/concepts-pr67654.C
! 4078e24af392880f8ed062c6644a185e  gcc/testsuite/g++.dg/cpp2a/concepts-pr67658.C
! e8ccef3ac68f834dc5fd1dca494dbca5  gcc/testsuite/g++.dg/cpp2a/concepts-pr67684.C
  52dd16d4b1af9e29eb4c5a67fd65e197  gcc/testsuite/g++.dg/cpp2a/concepts-pr67685.C
! 0a1de42347ac5920e943d15730993107  gcc/testsuite/g++.dg/cpp2a/concepts-pr67692.C
! 909e71f256e20078be77170ff26b0dcb  gcc/testsuite/g++.dg/cpp2a/concepts-pr67697.C
! 3eb16a666d09b1465255522a14415d85  gcc/testsuite/g++.dg/cpp2a/concepts-pr67719.C
! cafd8c823979b56fbe67934d1ecb65ba  gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
! b1c9ded94dda8aa882df6a1146a70c73  gcc/testsuite/g++.dg/cpp2a/concepts-pr67825.C
! 6ea6799cabc50a38b9a2caffa03be61a  gcc/testsuite/g++.dg/cpp2a/concepts-pr67860.C
! 6be46335bbae8ac4cf97b2e956e938be  gcc/testsuite/g++.dg/cpp2a/concepts-pr67862.C
! 201ba9f3760592784357594f863de04d  gcc/testsuite/g++.dg/cpp2a/concepts-pr67969.C
! 1ddf90a88e96a030186e59d89121a366  gcc/testsuite/g++.dg/cpp2a/concepts-pr68093-1.C
! f81739e919d0f5397da6715805a8abcb  gcc/testsuite/g++.dg/cpp2a/concepts-pr68093-2.C
! 109cb94579ac2fb7036be752cbf22c92  gcc/testsuite/g++.dg/cpp2a/concepts-pr68372.C
! 6f13a48d213684e6ee35e355c86386fb  gcc/testsuite/g++.dg/cpp2a/concepts-pr68434.C
! 3c662c90f3773f45210367b655ec9082  gcc/testsuite/g++.dg/cpp2a/concepts-pr68683.C
! 9ed8bc418bcfef20bdc885b70bd46347  gcc/testsuite/g++.dg/cpp2a/concepts-pr68812.C
! ab814752a8fc6e67d877255ced6c3e5b  gcc/testsuite/g++.dg/cpp2a/concepts-pr69235.C
! 0e0686736d5a861831512607943e1c1a  gcc/testsuite/g++.dg/cpp2a/concepts-pr71368.C
! 36592d76ba0cf9efda541faeaeef7f64  gcc/testsuite/g++.dg/cpp2a/concepts-pr71385.C
! f36303972e49bde29e87ca918f852265  gcc/testsuite/g++.dg/cpp2a/concepts-pr71965.C
  f99d03cfb87e520750e7842a753421d3  gcc/testsuite/g++.dg/cpp2a/concepts-pr72415.C
! cdf37630b78b3f9e04094879d0257ef9  gcc/testsuite/g++.dg/cpp2a/concepts-pr78752.C
! eccbf1ee4f0e45802c4a3f18b107238a  gcc/testsuite/g++.dg/cpp2a/concepts-pr79759.C
  a9a9b929432f59c2ddc85af61b0f7742  gcc/testsuite/g++.dg/cpp2a/concepts-pr80471.C
! 99ff8a11806f5e99a3afc0733e7c3a16  gcc/testsuite/g++.dg/cpp2a/concepts-pr80746.C
! 052fb3fc149f78bcc345a8563c3d8b1e  gcc/testsuite/g++.dg/cpp2a/concepts-pr80773.C
! 384fade1278ddcbedb67a213afe5bdc1  gcc/testsuite/g++.dg/cpp2a/concepts-pr82507.C
! 003e52a6dd8293f869d9b241d0f7c5b7  gcc/testsuite/g++.dg/cpp2a/concepts-pr82740.C
! d3c95df6b3e840ce5b057fce61cf2f03  gcc/testsuite/g++.dg/cpp2a/concepts-pr84140.C
! bfdeefaf9ba551898ab26a17e2801cf5  gcc/testsuite/g++.dg/cpp2a/concepts-pr84551.C
! 909df2dea6a1452488e32ef5ae94f686  gcc/testsuite/g++.dg/cpp2a/concepts-pr84810.C
! 0dccbf3a01d3f1c9df08b877b6072ccc  gcc/testsuite/g++.dg/cpp2a/concepts-pr84979-2.C
! c21f9519cee58f2375bcd67c88d916ca  gcc/testsuite/g++.dg/cpp2a/concepts-pr84979-3.C
! abd2cd5422360b442518ae562be25146  gcc/testsuite/g++.dg/cpp2a/concepts-pr84979.C
  59cb220f0035bd18b133b1aee68c3f93  gcc/testsuite/g++.dg/cpp2a/concepts-pr84980.C
  7eeddbc465798c530d779ab3ff662f46  gcc/testsuite/g++.dg/cpp2a/concepts-pr85265.C
  27d70640425a392e01875d0ec6be9397  gcc/testsuite/g++.dg/cpp2a/concepts-pr85706.C
! 7146581ce13825897cde0c96cdc9bde3  gcc/testsuite/g++.dg/cpp2a/concepts-pr85808.C
! b288d8244c2672dee54856abdf06ab82  gcc/testsuite/g++.dg/cpp2a/concepts-pr86269.C
! 359cc6e59e756e4eb5ef4dc6c3ac1e15  gcc/testsuite/g++.dg/cpp2a/concepts-pr87441.C
! 4be496b84e26af881b7e52baac1b97fc  gcc/testsuite/g++.dg/cpp2a/concepts-pr88395.C
! ad41d6401d6b97e849f2ae6bc9550ec0  gcc/testsuite/g++.dg/cpp2a/concepts-pr92078.C
! f4b183526cfe9ad33da61767f57bfa99  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat1.C
! 84256142a8508fa36800f3615824eb84  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C
! 30fecb02d5027944e49d148bbe29841f  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat3.C
! 3d6b88f76517d7a215f718ef94c813c8  gcc/testsuite/g++.dg/cpp2a/concepts-requires1.C
! d62a7cc4fc79b7e88a1310543bed27a2  gcc/testsuite/g++.dg/cpp2a/concepts-requires10.C
! 6e2668969c2dd086e14ef8210a2ca0eb  gcc/testsuite/g++.dg/cpp2a/concepts-requires11.C
! bbb5924312fcab32fff166e30c037b66  gcc/testsuite/g++.dg/cpp2a/concepts-requires12.C
! 9fb62c8c3b10be3b5f17d91f1fe620e9  gcc/testsuite/g++.dg/cpp2a/concepts-requires13.C
! 8227a3bf0363352b60ff3ec1b2715d62  gcc/testsuite/g++.dg/cpp2a/concepts-requires14.C
! 266cf8bbb31031f7f9b1bd313518f2ae  gcc/testsuite/g++.dg/cpp2a/concepts-requires15.C
! af7a9821e93413fc91d888f721bf4cc5  gcc/testsuite/g++.dg/cpp2a/concepts-requires16.C
! 8e2fcb55e54edd6c1b53187813b765b6  gcc/testsuite/g++.dg/cpp2a/concepts-requires17.C
! c3c6b4ddd051128a69e57e9d6fc84f0b  gcc/testsuite/g++.dg/cpp2a/concepts-requires18.C
! ae6f54cecee17944fb4e035e777df729  gcc/testsuite/g++.dg/cpp2a/concepts-requires19.C
! bf8af008c314faab5d57ae5358cb2cac  gcc/testsuite/g++.dg/cpp2a/concepts-requires2.C
! 78325450404effe9c1e9e8231764ee21  gcc/testsuite/g++.dg/cpp2a/concepts-requires20.C
! 59722259f0b1fce83daf4f38e47bc441  gcc/testsuite/g++.dg/cpp2a/concepts-requires21.C
  533db7e7d7422951c2d0551729c35e3d  gcc/testsuite/g++.dg/cpp2a/concepts-requires24.C
! 03f03cb93ced25683545d58c3fb58c93  gcc/testsuite/g++.dg/cpp2a/concepts-requires3.C
! 53efb89dca9c98e8f37de61b12380be5  gcc/testsuite/g++.dg/cpp2a/concepts-requires4.C
! 97418d8430be07544b31736dfb0dc928  gcc/testsuite/g++.dg/cpp2a/concepts-requires5.C
! f93f3305aa00a3c319cb8b40d5c8a5d2  gcc/testsuite/g++.dg/cpp2a/concepts-requires6.C
! 3cf642f6816cb27fa0e2ac27b9a7b848  gcc/testsuite/g++.dg/cpp2a/concepts-requires7.C
! ef54593157ed85e93426b55f8d2dbea3  gcc/testsuite/g++.dg/cpp2a/concepts-requires8.C
! 8082355b58e1e919b8c8ece8778df93b  gcc/testsuite/g++.dg/cpp2a/concepts-requires9.C
! bc1ba800c2d459258747a850ee36b4b8  gcc/testsuite/g++.dg/cpp2a/concepts-return-req1.C
  dfcd95576f20c2cc8e894aafe754dd43  gcc/testsuite/g++.dg/cpp2a/concepts-sfinae1.C
  e7d2cd347c791b674d0be66da74077a1  gcc/testsuite/g++.dg/cpp2a/concepts-syntax1.C
! 64d2cf2646f4681cca095fb60f81dec3  gcc/testsuite/g++.dg/cpp2a/concepts-template-parm1.C
! 57b4c08fcf774ee11eb54aa5489645d9  gcc/testsuite/g++.dg/cpp2a/concepts-template-parm10.C
! 172239d804956749903e7afcf82637fc  gcc/testsuite/g++.dg/cpp2a/concepts-template-parm2.C
! 5e5d397041d6e751bad8e69582284dae  gcc/testsuite/g++.dg/cpp2a/concepts-template-parm5.C
! e1e0aac390ef41d2bc4021b038af7cc6  gcc/testsuite/g++.dg/cpp2a/concepts-template-parm6.C
! 34ac346e1adf515c388573b2334f2148  gcc/testsuite/g++.dg/cpp2a/concepts-template-parm8.C
! f68325735265b5d142b3e07277cb76bf  gcc/testsuite/g++.dg/cpp2a/concepts-template-parm9.C
  39c15f1dc604f714304d144250164089  gcc/testsuite/g++.dg/cpp2a/concepts-traits1.C
! 08413b38db4b8a19c0e8b40ba2849b37  gcc/testsuite/g++.dg/cpp2a/concepts-traits2.C
! 1134c226e2e288e7ccfe2f4ef126c5b2  gcc/testsuite/g++.dg/cpp2a/concepts-ts1.C
! 9d663869646313024f64a5d0cc6a1f85  gcc/testsuite/g++.dg/cpp2a/concepts-ts2.C
! 66c2a1b07bcb9802b73da73f7616999c  gcc/testsuite/g++.dg/cpp2a/concepts-ts3.C
! fa216b68436eac8fa6527aa4539e1f7c  gcc/testsuite/g++.dg/cpp2a/concepts-ts4.C
! 86aad33e101114ce8bda6fd384549350  gcc/testsuite/g++.dg/cpp2a/concepts-ts5.C
! 04054c883f1b9a81d1638d700341f17c  gcc/testsuite/g++.dg/cpp2a/concepts-ts6.C
  427561cea6003909c32f28fbe3d276c7  gcc/testsuite/g++.dg/cpp2a/concepts-ttp1.C
  e9afe83f998c36b2fb7c1f09347d0bde  gcc/testsuite/g++.dg/cpp2a/concepts-ttp2.C
! f225c04d9e98e102817629e7fab79048  gcc/testsuite/g++.dg/cpp2a/concepts-using1.C
! 2de1ba9cf25203d4cb78da6576eb04a0  gcc/testsuite/g++.dg/cpp2a/concepts-using2.C
  dcaf7dd2f1e98c3d3da49fbec7b5d2ab  gcc/testsuite/g++.dg/cpp2a/concepts-variadic1.C
  48e56d9773523969e244eb7e1261e6c1  gcc/testsuite/g++.dg/cpp2a/concepts-variadic2.C
  249b3f4302b45c107e3ce9d2aebc31b4  gcc/testsuite/g++.dg/cpp2a/concepts-variadic3.C
! 0b0b19d3414765f9a1b42b98ca9bf8e3  gcc/testsuite/g++.dg/cpp2a/concepts.C
! b161e3fbf88100e1535509e047f06809  gcc/testsuite/g++.dg/cpp2a/concepts1.C
! 013a145a2d053aaeef9dcc88c1f12b74  gcc/testsuite/g++.dg/cpp2a/concepts2.C
! 67de50cccc438d06d64da82c73078e61  gcc/testsuite/g++.dg/cpp2a/concepts3.C
! f94d879149d65198591f99a7ce7ff182  gcc/testsuite/g++.dg/cpp2a/concepts4.C
! c47ee6e77b781d14ee71e2203e7dd5ab  gcc/testsuite/g++.dg/cpp2a/concepts5.C
! 04a52edbd5aeae09d3e1575641875e8c  gcc/testsuite/g++.dg/cpp2a/concepts6.C
  08839525e53c3fc606634abfb05f00d4  gcc/testsuite/g++.dg/cpp2a/cond-triv1.C
  a1c6131537b9b8fdd4e1a9f8ba34bf08  gcc/testsuite/g++.dg/cpp2a/cond-triv1a.C
! d689d961e53e00d9f6613def807f788c  gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
  06108a2b84aac0c8eb7f2844fc732944  gcc/testsuite/g++.dg/cpp2a/consteval-expinst1.C
! 6d65c5f6a694720924df4c35e6a5f488  gcc/testsuite/g++.dg/cpp2a/consteval-void1.C
  e653be614b47427e0ec998982e197f92  gcc/testsuite/g++.dg/cpp2a/consteval1.C
  405a4e1920b1811e8affa4f06ff6cb2c  gcc/testsuite/g++.dg/cpp2a/consteval10.C
  248503818c0f58904cf573627cfae347  gcc/testsuite/g++.dg/cpp2a/consteval11.C
--- 15852,16008 ----
  a6017b5415fc2bcf7a3df910703e0137  gcc/testsuite/g++.dg/cpp2a/concepts-pr60390.C
  19ab34c3acffcfac10237d280b6846a3  gcc/testsuite/g++.dg/cpp2a/concepts-pr60391.C
  bc89487bc8fc4fa7edd814ad73b2f5a0  gcc/testsuite/g++.dg/cpp2a/concepts-pr60573.C
! d9e495a50301fc18b6519a58b37f0e75  gcc/testsuite/g++.dg/cpp2a/concepts-pr65552.C
  ef2825ac191806b395137eaaec2b6414  gcc/testsuite/g++.dg/cpp2a/concepts-pr65575.C
! b6b6ca694f72c96ddf8323f8f47b9a30  gcc/testsuite/g++.dg/cpp2a/concepts-pr65634.C
! 419ce7f9a789795063fd527a54b173fc  gcc/testsuite/g++.dg/cpp2a/concepts-pr65636.C
! 5a1d2311d59bc80baa4a175fc3e9ac7f  gcc/testsuite/g++.dg/cpp2a/concepts-pr65848.C
! 3db889f25404e785557f5d1a8bbd3057  gcc/testsuite/g++.dg/cpp2a/concepts-pr65854.C
  d5540bff1427bc002f17c05393848561  gcc/testsuite/g++.dg/cpp2a/concepts-pr66091.C
! eba6b77b814ef5e75a5d87f2147e2c06  gcc/testsuite/g++.dg/cpp2a/concepts-pr66844.C
! df7a18db64b370a45805fb151fc0de95  gcc/testsuite/g++.dg/cpp2a/concepts-pr66962.C
! eade582d72f3e6b1e06dacf6ee9217ce  gcc/testsuite/g++.dg/cpp2a/concepts-pr67070.C
! d0535f13efe2f4a56e6de25c122b35b9  gcc/testsuite/g++.dg/cpp2a/concepts-pr67147.C
! 0dc83269858647aa5dba5ceae232a823  gcc/testsuite/g++.dg/cpp2a/concepts-pr67148.C
! 2d2842093c20739f7b3438e8c7bdae89  gcc/testsuite/g++.dg/cpp2a/concepts-pr67178.C
! ad609edfa0bd5fd5ce502592f3ed81b2  gcc/testsuite/g++.dg/cpp2a/concepts-pr67210.C
! 595458aae83450bc59b1e7ae5d94db55  gcc/testsuite/g++.dg/cpp2a/concepts-pr67217.C
! c1ec010d40ead55576d4d7addbda8b52  gcc/testsuite/g++.dg/cpp2a/concepts-pr67225-1.C
! 5d002da99c4a6b7ef703fa8322184a9c  gcc/testsuite/g++.dg/cpp2a/concepts-pr67225-2.C
! 82d208b5a8e3c50cb83b1ce6c32add28  gcc/testsuite/g++.dg/cpp2a/concepts-pr67225-3.C
! 64f967bcc6d19dcdcfffc4010cdbbc37  gcc/testsuite/g++.dg/cpp2a/concepts-pr67225-4.C
! e60b5a476be37b67e2ba6d9688f582d9  gcc/testsuite/g++.dg/cpp2a/concepts-pr67225-5.C
! 20a0e46e4470fafd8a7a3ee64fb56102  gcc/testsuite/g++.dg/cpp2a/concepts-pr67319.C
! 1ac710a7d6f69a918425959181873c6d  gcc/testsuite/g++.dg/cpp2a/concepts-pr67427.C
! 9e5b29e90d1b910d2be0707be5929145  gcc/testsuite/g++.dg/cpp2a/concepts-pr67654.C
! ae4d820cd3c3b5bb54ba918fa4d19087  gcc/testsuite/g++.dg/cpp2a/concepts-pr67658.C
! e31e56eb4744ca4b71c65e155a043b5e  gcc/testsuite/g++.dg/cpp2a/concepts-pr67684.C
  52dd16d4b1af9e29eb4c5a67fd65e197  gcc/testsuite/g++.dg/cpp2a/concepts-pr67685.C
! 4b970f2783514d7d82a50e089b1c5b09  gcc/testsuite/g++.dg/cpp2a/concepts-pr67692.C
! 87472cb7efb033cc3aa7dcc9f6ad183f  gcc/testsuite/g++.dg/cpp2a/concepts-pr67697.C
! f29981061f8cb438309e69f739004f9f  gcc/testsuite/g++.dg/cpp2a/concepts-pr67719.C
! 4ad1b21aadf3a9dc7c4bb2a7512d513b  gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
! c0cb939993562548cd292abcb4d22fc0  gcc/testsuite/g++.dg/cpp2a/concepts-pr67825.C
! 166fb9af7a7fb60b0b20b50973a7229a  gcc/testsuite/g++.dg/cpp2a/concepts-pr67860.C
! b6411bcfc2057e11162b3a93571a88a5  gcc/testsuite/g++.dg/cpp2a/concepts-pr67862.C
! cc918bd6a04833054ab23f8cf9fc6268  gcc/testsuite/g++.dg/cpp2a/concepts-pr67969.C
! 8768fe8868ea59a0dbdcd8a06eeea88b  gcc/testsuite/g++.dg/cpp2a/concepts-pr68093-1.C
! eaf49dffb6a686df128c4d776d9841ee  gcc/testsuite/g++.dg/cpp2a/concepts-pr68093-2.C
! fc66789c1778509f88237d2478ea9fa1  gcc/testsuite/g++.dg/cpp2a/concepts-pr68372.C
! b0179a71ee48b86f61897ec4ceada460  gcc/testsuite/g++.dg/cpp2a/concepts-pr68434.C
! 622a93304a713a039d8147084421021d  gcc/testsuite/g++.dg/cpp2a/concepts-pr68683.C
! a626bbc0f760ff0acf7d2e5160a6749f  gcc/testsuite/g++.dg/cpp2a/concepts-pr68812.C
! cead0d53901737495789d54fe5f4a5ee  gcc/testsuite/g++.dg/cpp2a/concepts-pr68828.C
! c13352bf00a96f6833e0036e342966ea  gcc/testsuite/g++.dg/cpp2a/concepts-pr69235.C
! 33f2896a6c79cf0c5e5190c14c6aa108  gcc/testsuite/g++.dg/cpp2a/concepts-pr71368.C
! 8ca01691ad30f8406d7975eb5174580c  gcc/testsuite/g++.dg/cpp2a/concepts-pr71385.C
! 465947a162683479beb8265b8a80b825  gcc/testsuite/g++.dg/cpp2a/concepts-pr71965.C
  f99d03cfb87e520750e7842a753421d3  gcc/testsuite/g++.dg/cpp2a/concepts-pr72415.C
! 44dd6e924e6725284b2bd8b2f2730b34  gcc/testsuite/g++.dg/cpp2a/concepts-pr78173.C
! 8e6661d642e235ac93a4dd3480b3f6af  gcc/testsuite/g++.dg/cpp2a/concepts-pr78752-2.C
! 8057eb9ed15291378fc80a4cecabb8ee  gcc/testsuite/g++.dg/cpp2a/concepts-pr78752.C
! d8292402c5e2ddad2ccd2ba6d2e6de42  gcc/testsuite/g++.dg/cpp2a/concepts-pr79759.C
  a9a9b929432f59c2ddc85af61b0f7742  gcc/testsuite/g++.dg/cpp2a/concepts-pr80471.C
! 1f5f2a4d614cd9dcc832af752ec3a60e  gcc/testsuite/g++.dg/cpp2a/concepts-pr80746.C
! 904098607b115169ac11a1741721286f  gcc/testsuite/g++.dg/cpp2a/concepts-pr80773.C
! 9f7fd91ec56fa4cd960eaa63059a5510  gcc/testsuite/g++.dg/cpp2a/concepts-pr82507.C
! f1cbfc7c7a5b436ba46f015490d1f5e3  gcc/testsuite/g++.dg/cpp2a/concepts-pr82740.C
! 254ef1258be3b4ea81014ce3f0ff41aa  gcc/testsuite/g++.dg/cpp2a/concepts-pr84140.C
! 36d00fa8a1fecaba261bd00d6dd6094e  gcc/testsuite/g++.dg/cpp2a/concepts-pr84551.C
! 32711f92204c15d0d19e4313d121f6b8  gcc/testsuite/g++.dg/cpp2a/concepts-pr84810.C
! 2a5a858e25e1416cbd2029c32f64cf71  gcc/testsuite/g++.dg/cpp2a/concepts-pr84979-2.C
! 6bd241ea34c787bf8f72199a6d0cbfd2  gcc/testsuite/g++.dg/cpp2a/concepts-pr84979-3.C
! 22398666d350a2e24538f2403ca8c4ec  gcc/testsuite/g++.dg/cpp2a/concepts-pr84979.C
  59cb220f0035bd18b133b1aee68c3f93  gcc/testsuite/g++.dg/cpp2a/concepts-pr84980.C
  7eeddbc465798c530d779ab3ff662f46  gcc/testsuite/g++.dg/cpp2a/concepts-pr85265.C
  27d70640425a392e01875d0ec6be9397  gcc/testsuite/g++.dg/cpp2a/concepts-pr85706.C
! d2442a59cddf2d53ae6261852ada8b20  gcc/testsuite/g++.dg/cpp2a/concepts-pr85808.C
! 3ec7fd936ea8f9e5e43d1b44ab8f2317  gcc/testsuite/g++.dg/cpp2a/concepts-pr86002.C
! 80166dc2f827ff198d6fa5167ed0be5f  gcc/testsuite/g++.dg/cpp2a/concepts-pr86269.C
! 3d1ff458b6249f9f9032ae10025f0524  gcc/testsuite/g++.dg/cpp2a/concepts-pr87441.C
! e4824ff4a368f4083c4ab5643225d818  gcc/testsuite/g++.dg/cpp2a/concepts-pr88395.C
! 8a643ff56f3caf008108eb2d5cebd974  gcc/testsuite/g++.dg/cpp2a/concepts-pr91525.C
! a1669b67bbdc997b3e18d984f69a5dd7  gcc/testsuite/g++.dg/cpp2a/concepts-pr92078.C
! 84e3bf69ec5b7c3c513058b3d69bfc41  gcc/testsuite/g++.dg/cpp2a/concepts-pr95497.C
! f14a1d093c6192fd601a94286a19cd55  gcc/testsuite/g++.dg/cpp2a/concepts-pr97093.C
! b643732d29e3ea4d763cb2354949bd77  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat1.C
! 494a9362815e7269cd14d3b6eb900c68  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C
! c74823853141d61f8e8a8e1d3a3f8bd4  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat3.C
! e73f0ee4378def5488befad6282159a1  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat4.C
! 05d0c4aeef396d36ed2d0d824682b06c  gcc/testsuite/g++.dg/cpp2a/concepts-redecl1.C
! 89a75de6ffea2b5931b15021369b2a4e  gcc/testsuite/g++.dg/cpp2a/concepts-requires1.C
! 2a75164ac4ebdba51dd415fcd578a8f9  gcc/testsuite/g++.dg/cpp2a/concepts-requires10.C
! 59a92d3b83bc1161b8f2568b153fa042  gcc/testsuite/g++.dg/cpp2a/concepts-requires11.C
! 415c2e492ca2b29d75e2cfff7b65800c  gcc/testsuite/g++.dg/cpp2a/concepts-requires12.C
! 50a7180279256d68b718405cb812e643  gcc/testsuite/g++.dg/cpp2a/concepts-requires13.C
! a5b609605dfd79c62d821dd012d93957  gcc/testsuite/g++.dg/cpp2a/concepts-requires14.C
! 8d32598232aba1aefacd45b40fe0557e  gcc/testsuite/g++.dg/cpp2a/concepts-requires15.C
! 359bd60500622c32ea720834bf52d54c  gcc/testsuite/g++.dg/cpp2a/concepts-requires16.C
! 790fd61424aa3cc91aa82a9a25436fbc  gcc/testsuite/g++.dg/cpp2a/concepts-requires17.C
! 6077e16d9abd615d63a00ebf39169c90  gcc/testsuite/g++.dg/cpp2a/concepts-requires18.C
! f690511bcb36a75942cd883e65ebd180  gcc/testsuite/g++.dg/cpp2a/concepts-requires19.C
! e18eb288326d7eb40203d35a3f67cce7  gcc/testsuite/g++.dg/cpp2a/concepts-requires2.C
! e1183c59c9203938e22642174a8d0224  gcc/testsuite/g++.dg/cpp2a/concepts-requires20.C
! 54ca6374f9acbeb707cc60238ba07cf7  gcc/testsuite/g++.dg/cpp2a/concepts-requires21.C
! de98c5b97dd70e513e1c4be84c9e9153  gcc/testsuite/g++.dg/cpp2a/concepts-requires22.C
! 807c0144ab62f5a7972b062d0ff7cdcc  gcc/testsuite/g++.dg/cpp2a/concepts-requires23.C
  533db7e7d7422951c2d0551729c35e3d  gcc/testsuite/g++.dg/cpp2a/concepts-requires24.C
! ed7e50860b352f18084c5990524595b2  gcc/testsuite/g++.dg/cpp2a/concepts-requires3.C
! d3851914c01bf78597e5cb411ed0b3d5  gcc/testsuite/g++.dg/cpp2a/concepts-requires4.C
! 480013be0f806d0b078176447ae77360  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
! 3e6c8a3f7643afee74d038d893eb011f  gcc/testsuite/g++.dg/cpp2a/concepts-requires8.C
! cd7abc8d42b6882b26382ab5c9549dc9  gcc/testsuite/g++.dg/cpp2a/concepts-requires9.C
! df41d5e3eb088a4079a9e8ca6adc1cd1  gcc/testsuite/g++.dg/cpp2a/concepts-return-req1.C
! 73d7ca2c4ac7816b0388f526d4e04629  gcc/testsuite/g++.dg/cpp2a/concepts-return-req2.C
  dfcd95576f20c2cc8e894aafe754dd43  gcc/testsuite/g++.dg/cpp2a/concepts-sfinae1.C
+ 94e516c88a3b958114e11fa18857ea12  gcc/testsuite/g++.dg/cpp2a/concepts-spec1.C
  e7d2cd347c791b674d0be66da74077a1  gcc/testsuite/g++.dg/cpp2a/concepts-syntax1.C
! 6481a02e05fcaca18a06555309e672d6  gcc/testsuite/g++.dg/cpp2a/concepts-template-parm1.C
! 437145357446d9d26ecec49e56fc89f2  gcc/testsuite/g++.dg/cpp2a/concepts-template-parm10.C
! c66c957a03459efed336ab628ac7a020  gcc/testsuite/g++.dg/cpp2a/concepts-template-parm2.C
! 95492dd69ffdbd68e23f9ff1d52bf2f6  gcc/testsuite/g++.dg/cpp2a/concepts-template-parm5.C
! 476e5200a2508065879f3ee51bfd73b5  gcc/testsuite/g++.dg/cpp2a/concepts-template-parm6.C
! 9ff1f88974ac56dba726f1074288f8e9  gcc/testsuite/g++.dg/cpp2a/concepts-template-parm8.C
! ec9215388b111eac1916dca163b2b4dd  gcc/testsuite/g++.dg/cpp2a/concepts-template-parm9.C
  39c15f1dc604f714304d144250164089  gcc/testsuite/g++.dg/cpp2a/concepts-traits1.C
! c9a6ab7bc0f1947e843b9c7150ccb98c  gcc/testsuite/g++.dg/cpp2a/concepts-traits2.C
! 82c399ad9b34b095f9489e636de58940  gcc/testsuite/g++.dg/cpp2a/concepts-ts1.C
! 202e848af4b3017e51ab2eb5995fffeb  gcc/testsuite/g++.dg/cpp2a/concepts-ts2.C
! ea441494e2367b584a16520ca6327732  gcc/testsuite/g++.dg/cpp2a/concepts-ts3.C
! ef5b971f899385a069755bce1facefe5  gcc/testsuite/g++.dg/cpp2a/concepts-ts4.C
! 12b763f5c24e003b13c6c0d6a71f4ca6  gcc/testsuite/g++.dg/cpp2a/concepts-ts5.C
! ac4c42a0f2fd071297e154c82dd3e5cc  gcc/testsuite/g++.dg/cpp2a/concepts-ts6.C
  427561cea6003909c32f28fbe3d276c7  gcc/testsuite/g++.dg/cpp2a/concepts-ttp1.C
  e9afe83f998c36b2fb7c1f09347d0bde  gcc/testsuite/g++.dg/cpp2a/concepts-ttp2.C
! 12bfd0f0b99ab93e9f3c3ea3610ad8db  gcc/testsuite/g++.dg/cpp2a/concepts-uneval1.C
! 728cf90d57c99021cb85c6b8dd9ffa5e  gcc/testsuite/g++.dg/cpp2a/concepts-uneval2.C
! 0b2965d78d2aee9abfaea9a39dd0dd98  gcc/testsuite/g++.dg/cpp2a/concepts-using1.C
! a95dbf28241ffec87fb48912ed83e629  gcc/testsuite/g++.dg/cpp2a/concepts-using2.C
! 8d75a7bd1dff1e92992b77d66deb889b  gcc/testsuite/g++.dg/cpp2a/concepts-using3.C
  dcaf7dd2f1e98c3d3da49fbec7b5d2ab  gcc/testsuite/g++.dg/cpp2a/concepts-variadic1.C
  48e56d9773523969e244eb7e1261e6c1  gcc/testsuite/g++.dg/cpp2a/concepts-variadic2.C
  249b3f4302b45c107e3ce9d2aebc31b4  gcc/testsuite/g++.dg/cpp2a/concepts-variadic3.C
! febdd429495dc851f5bbf867e39f3a72  gcc/testsuite/g++.dg/cpp2a/concepts.C
! 160297ff756513e092454f628e8488b8  gcc/testsuite/g++.dg/cpp2a/concepts1.C
! 1deb98908cc4b11e53587a5a2210f89a  gcc/testsuite/g++.dg/cpp2a/concepts2.C
! 26ed9bafd76c7078f0759a783c2be6c1  gcc/testsuite/g++.dg/cpp2a/concepts3.C
! a5bcfd6448aee299516dc72ad96a3840  gcc/testsuite/g++.dg/cpp2a/concepts4.C
! a85f735eaeba5ac419aa763ef414d52c  gcc/testsuite/g++.dg/cpp2a/concepts5.C
! 98213dbb7894e57b6c08cd05928870ac  gcc/testsuite/g++.dg/cpp2a/concepts6.C
  08839525e53c3fc606634abfb05f00d4  gcc/testsuite/g++.dg/cpp2a/cond-triv1.C
  a1c6131537b9b8fdd4e1a9f8ba34bf08  gcc/testsuite/g++.dg/cpp2a/cond-triv1a.C
! b821d53c13959d1237a15620094c9130  gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
! 32d8d55981aa81f973b7e8fdf83830c7  gcc/testsuite/g++.dg/cpp2a/consteval-defarg1.C
! 6b5fc6f23fc6df75d45300b8bc1ad4ef  gcc/testsuite/g++.dg/cpp2a/consteval-defarg2.C
  06108a2b84aac0c8eb7f2844fc732944  gcc/testsuite/g++.dg/cpp2a/consteval-expinst1.C
! 7b90d1522f394885f74ddf54ce29750f  gcc/testsuite/g++.dg/cpp2a/consteval-virtual1.C
! 9f2787601c2b5593ddafd943b082968f  gcc/testsuite/g++.dg/cpp2a/consteval-virtual2.C
! 291b799cfb4c7cddd247f15746dbb707  gcc/testsuite/g++.dg/cpp2a/consteval-virtual3.C
! 62f39a2c2e1e72c9bb550d376c5e4d77  gcc/testsuite/g++.dg/cpp2a/consteval-virtual4.C
! 5e73be2f5744ad8e05681324ba8dbde6  gcc/testsuite/g++.dg/cpp2a/consteval-virtual5.C
! 7304d62f237130fb269c9aebf2c90bc3  gcc/testsuite/g++.dg/cpp2a/consteval-void1.C
  e653be614b47427e0ec998982e197f92  gcc/testsuite/g++.dg/cpp2a/consteval1.C
  405a4e1920b1811e8affa4f06ff6cb2c  gcc/testsuite/g++.dg/cpp2a/consteval10.C
  248503818c0f58904cf573627cfae347  gcc/testsuite/g++.dg/cpp2a/consteval11.C
*************** f8b2a0016c59d132f059d57a7638806f  gcc/te
*** 15175,15261 ****
  72c19713fa49fcd9432f9e2dfe1238e0  gcc/testsuite/g++.dg/cpp2a/consteval8.C
  be6031c0bedd5678304d7154f8ea2b35  gcc/testsuite/g++.dg/cpp2a/consteval9.C
  249686f0fb9ecbea2e909ed986426855  gcc/testsuite/g++.dg/cpp2a/constexpr-98122.C
  2004a926e55a105d0f80db50528a9def  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor1.C
  cbf5d5a37bc2a85bde738f9433003a39  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor10.C
! 11daa2f71262bf8c179b08396204886d  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor2.C
! 2b77805fc0d5367b858ca7a151bd44dd  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor3.C
! 6612240552037f96610d1036e189667a  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor4.C
  c35079b724daf37ab1e1277e8f08b5c0  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor9.C
! 77847bd5bc54ddd71ad77ec6149f6f49  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic1.C
! 8ca9b95821eda87c7379977dd8f80b9d  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic10.C
! 3238926f6b5ca70dc43b1380e6048cfc  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic11.C
! ea54d1c8690d472c24238f9f5abecd48  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic12.C
! 6da838dd1ff448ea4a6c1730e73ae472  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic13.C
! 8927d60bc9396d837f176e5d73448242  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic14.C
! edb7d7be6b46d70792214104a24ff8c7  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic15.C
! 6ed744dc4fb9f62d58703f01ce9b30c1  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic16.C
! 03380a90ea4d733e735d2d2e3e38b278  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic17.C
! 4e656316e29e1f59780ed261fd6a9691  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic18.C
! 65e3827ea970ba905e0a28e3dfdf6eac  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic2.C
! d196c5c6e5440f9a1caceccdade57ed1  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic3.C
! ffbaf403243f8253191d66df4ed5bd6d  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic4.C
! 943a1caf3170f84a4dddfde6dc51e8fc  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic5.C
! cb27900606ea01f7799f2dfd8317de89  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic6.C
! 4eacc1a2cc2a99ba12f15f2a62d9eb61  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic7.C
! 10c562fa24bc6c8e5738e63dbba6de20  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic8.C
! 4a85793a3b2d61ee76b0ad5681eb864d  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic9.C
! d873a56c371cbc3d2da88d96699e2f94  gcc/testsuite/g++.dg/cpp2a/constexpr-init1.C
! a051225a39b501f8d45d7fdb201cc9c0  gcc/testsuite/g++.dg/cpp2a/constexpr-init10.C
! 15fddd5bc582b42e0e4165cd770f1fd2  gcc/testsuite/g++.dg/cpp2a/constexpr-init11.C
! dfbf21f582187cf831eca541d7382a90  gcc/testsuite/g++.dg/cpp2a/constexpr-init12.C
! 7a73a4338f29c3bc847851ba7196cfe6  gcc/testsuite/g++.dg/cpp2a/constexpr-init13.C
! 3c1cfdec18ee5d1c2bb0e73501d18db8  gcc/testsuite/g++.dg/cpp2a/constexpr-init14.C
! 65933130a5b39c7dedfb43843d0795b1  gcc/testsuite/g++.dg/cpp2a/constexpr-init15.C
! c14acb56b304b0d4fcec1b49e60bce76  gcc/testsuite/g++.dg/cpp2a/constexpr-init16.C
! a50f440ec0d7add2c1539f3c251a3f0d  gcc/testsuite/g++.dg/cpp2a/constexpr-init17.C
  78692be905c050a45eb193424c070e00  gcc/testsuite/g++.dg/cpp2a/constexpr-init18.C
  19b43f05f30882dc34aa0e5a30033796  gcc/testsuite/g++.dg/cpp2a/constexpr-init19.C
! 8ee0be486044fc252c53936792eb140a  gcc/testsuite/g++.dg/cpp2a/constexpr-init2.C
  a94c82ed85193a40a70f8909b798a539  gcc/testsuite/g++.dg/cpp2a/constexpr-init20.C
! 7d0f54226031c3b8a4b566dca3abc9b3  gcc/testsuite/g++.dg/cpp2a/constexpr-init3.C
! 724f7a2d576ecea17f82748e914501e5  gcc/testsuite/g++.dg/cpp2a/constexpr-init4.C
! 5ca0d4debca63a7ecf354f2be2d0ea20  gcc/testsuite/g++.dg/cpp2a/constexpr-init5.C
! 1ee62fd20552b2382cd0af3d5a75463a  gcc/testsuite/g++.dg/cpp2a/constexpr-init6.C
! 1dd8e0dad04cc49d62cf76939a8998c6  gcc/testsuite/g++.dg/cpp2a/constexpr-init7.C
! 4dd2ef3fe76f3c7c7dad3363b8951251  gcc/testsuite/g++.dg/cpp2a/constexpr-init8.C
! b956928f88daa370afdd06c9164d12e5  gcc/testsuite/g++.dg/cpp2a/constexpr-init9.C
  8cdbce536f6ecfcbdb0c5b905216c240  gcc/testsuite/g++.dg/cpp2a/constexpr-inst1.C
! 6d74cfb60b3b345974087dcf3ed59f2b  gcc/testsuite/g++.dg/cpp2a/constexpr-new1.C
! ee2ec05ccc231153595e8b6481ac0140  gcc/testsuite/g++.dg/cpp2a/constexpr-new10.C
! 1098798e09a7a2f6cf0bdb381d4546f2  gcc/testsuite/g++.dg/cpp2a/constexpr-new11.C
! 8cb928e79805a68c108a3645690fd2ee  gcc/testsuite/g++.dg/cpp2a/constexpr-new12.C
! 0e0114d216fdefa1313e14bd47963f19  gcc/testsuite/g++.dg/cpp2a/constexpr-new13.C
  6340911062f801186a4ac6aa85195912  gcc/testsuite/g++.dg/cpp2a/constexpr-new14.C
  d03c70bf2e20a7e4078f0e590a42e18a  gcc/testsuite/g++.dg/cpp2a/constexpr-new16.C
  8b5edf9c38364b0932161b7fd5869ae6  gcc/testsuite/g++.dg/cpp2a/constexpr-new17.C
! fbb86f233bb9ab7859ddbc542f26808b  gcc/testsuite/g++.dg/cpp2a/constexpr-new2.C
! 61fba59adab72d7883d782fd370b3730  gcc/testsuite/g++.dg/cpp2a/constexpr-new3.C
! f609675a5974c3dfcbd3c080a928f787  gcc/testsuite/g++.dg/cpp2a/constexpr-new4.C
! 13168706d3a30093b80a47cb7fbef7d5  gcc/testsuite/g++.dg/cpp2a/constexpr-new5.C
! 3cbdee1a96116b296ca5e74759e5dbed  gcc/testsuite/g++.dg/cpp2a/constexpr-new6.C
! cfa0f4cf985fbc5ca99e1d0f6b42df79  gcc/testsuite/g++.dg/cpp2a/constexpr-new7.C
! f023df1377d45fb81106b0b466d0f4d9  gcc/testsuite/g++.dg/cpp2a/constexpr-new8.C
! 69fcfcf9ada7c672bc604f4000cfd446  gcc/testsuite/g++.dg/cpp2a/constexpr-new9.C
  fe2e298a3cf2e9094a79a25a4ffd8fc2  gcc/testsuite/g++.dg/cpp2a/constexpr-shift1.C
  1d1e610556de3295af12cf17177f42b7  gcc/testsuite/g++.dg/cpp2a/constexpr-try1.C
  27ac7e1957f04ea6ee6160a7f7c14ecc  gcc/testsuite/g++.dg/cpp2a/constexpr-try2.C
  c169c0f663257a769b1da0d94c0c7307  gcc/testsuite/g++.dg/cpp2a/constexpr-try3.C
  d74e93a21b21eb22ce0742e9b6bbb923  gcc/testsuite/g++.dg/cpp2a/constexpr-try4.C
  379e0a2257c175d93bee70f8cbbc80ce  gcc/testsuite/g++.dg/cpp2a/constexpr-try5.C
! a06e0bf7d06db818f4e12c75114dbeed  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid1.C
! 16acc8935c95dad87b79bfc94ec0c466  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid2.C
! 9319974b612b41534ec0f7855ecd2231  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid3.C
  d5cf00e36fa4ba1a100d8370416e1bc2  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid4.C
! 32b93fff52d4d89fb3b40f4b0b327fa6  gcc/testsuite/g++.dg/cpp2a/constexpr-union1.C
  6d84a7bd78f9867ce0a07e6b0d26241b  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual1.C
  974c3f89c0f3ffa8993db35751b7f993  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual10.C
  90499949f9ce8adc6318bfabadf24305  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual11.C
  39ba616431ef9cb9d44cd94730cf075c  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual12.C
  49f57461d06a171699e46760a6897b2a  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual13.C
! 402840205084f07ec2c6bb566171ea8e  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual14.C
! 951c8b64153a58a8121e2123efa1bf4a  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual15.C
  d39d73d76c96183868eeee6ef1f857f5  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual16.C
  3705fff5ce2b4615567efbbb0bd45eab  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual17.C
  8356345162577a74b103ae82b69fde6d  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual2.C
  387607aa06c3438be11d475781b728ae  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual3.C
  4d58f9556b7091659bbc5730f1a2697b  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual4.C
--- 16023,16120 ----
  72c19713fa49fcd9432f9e2dfe1238e0  gcc/testsuite/g++.dg/cpp2a/consteval8.C
  be6031c0bedd5678304d7154f8ea2b35  gcc/testsuite/g++.dg/cpp2a/consteval9.C
  249686f0fb9ecbea2e909ed986426855  gcc/testsuite/g++.dg/cpp2a/constexpr-98122.C
+ d28d3e5520803aa70919b2a4b20e6386  gcc/testsuite/g++.dg/cpp2a/constexpr-99287.C
  2004a926e55a105d0f80db50528a9def  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor1.C
  cbf5d5a37bc2a85bde738f9433003a39  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor10.C
! 18ceb8d2ffe5d8e310f40839d2edf0d5  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor2.C
! 16ca73f823848454829fa2e5ea9b75f8  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor3.C
! 780076eefadeb33a1dce586533960b80  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor4.C
! 1ab49acfb4093ac63d8a1117dc494fcd  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor5.C
! e4a44aaa3ef782710c6fe5bed9f0f6cc  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor6.C
! 71368b9907c9488382043e579290be8e  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor7.C
! 2ace88efd8c64f15ecec7394adb6c643  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor8.C
  c35079b724daf37ab1e1277e8f08b5c0  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor9.C
! bd02bcf8862aba3fa6689c619512c0fc  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic1.C
! b5f4f9a8f5933754f321648f67e54dac  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic10.C
! 9dd9af59811f7e51984420eb1396429f  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic11.C
! 15268a28d01e2c5f3b8e199a3c412199  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic12.C
! 245e9a62156e3df3195f188342c0442b  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic13.C
! 4bbc8c155bf00bbeffcd491fee037b03  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic14.C
! 3ea3f5f5236e9cc53279d901672dd818  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic15.C
! 1a30baf82f09866d37d6e96a76379f47  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic16.C
! aa504b7ff788990adcf5e4c4b174e0ae  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic17.C
! 8fe226b0e900985b1f76643e8aaf737b  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic18.C
! 6a856dd4720aaf5ca7ba6e7422f849a9  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic2.C
! 6ddf97a1878f89c02ca0c76de5f0f08f  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic3.C
! 28c0eaf9ba35a479b5d50ddb90e7dc07  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic4.C
! 241e6a526a9b83d4a9af6d771aa58339  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic5.C
! 55e976b338f57ee64b3d331c56fad439  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic6.C
! 757c1b921a2bd5069e5b89f0254e0528  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic7.C
! 6951be3b101c71e7ba4f26c0359d99e3  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic8.C
! a3321cfaafcd76ed99e5ad88a213868d  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic9.C
! 573850937e1fbb5a2c2bc0b4b0da9e0a  gcc/testsuite/g++.dg/cpp2a/constexpr-indeterminate1.C
! 36b687c1aaec7560f8f30286dfb2333d  gcc/testsuite/g++.dg/cpp2a/constexpr-init1.C
! 3d47e986a1a87c4a72e6fd1725b4e073  gcc/testsuite/g++.dg/cpp2a/constexpr-init10.C
! 04c3b02790750ecd890832ae5a34b579  gcc/testsuite/g++.dg/cpp2a/constexpr-init11.C
! d5a45edda643ea413b271e9b0eeaba6f  gcc/testsuite/g++.dg/cpp2a/constexpr-init12.C
! 696a89ceac92afe7c7ebd3f9e8408a51  gcc/testsuite/g++.dg/cpp2a/constexpr-init13.C
! c1654c622837df3169e7754828fda19f  gcc/testsuite/g++.dg/cpp2a/constexpr-init14.C
! e09ffc2ba5f6a1ab261398122bc0c9e7  gcc/testsuite/g++.dg/cpp2a/constexpr-init15.C
! fa18d410e4118425de72c6cf57d09982  gcc/testsuite/g++.dg/cpp2a/constexpr-init16.C
! 3a64e1f0a8b17d66565d788b05b0840e  gcc/testsuite/g++.dg/cpp2a/constexpr-init17.C
  78692be905c050a45eb193424c070e00  gcc/testsuite/g++.dg/cpp2a/constexpr-init18.C
  19b43f05f30882dc34aa0e5a30033796  gcc/testsuite/g++.dg/cpp2a/constexpr-init19.C
! 2865da6445445c4c614b839971af9b90  gcc/testsuite/g++.dg/cpp2a/constexpr-init2.C
  a94c82ed85193a40a70f8909b798a539  gcc/testsuite/g++.dg/cpp2a/constexpr-init20.C
! d36dc1f73de070f083e4540bf2abf1a9  gcc/testsuite/g++.dg/cpp2a/constexpr-init21.C
! c6ad8dd084ea7848f43b81095f5664a0  gcc/testsuite/g++.dg/cpp2a/constexpr-init3.C
! 41402b0966f8577d729ff533aebaa8cb  gcc/testsuite/g++.dg/cpp2a/constexpr-init4.C
! 3658cd70e02d2a1b9bdd1b43b2e99cba  gcc/testsuite/g++.dg/cpp2a/constexpr-init5.C
! 6b2b5f5702d9a6213a87e661af98ef03  gcc/testsuite/g++.dg/cpp2a/constexpr-init6.C
! 6b5f19f014ae3db7e60a11b291ce7fc7  gcc/testsuite/g++.dg/cpp2a/constexpr-init7.C
! 2afe0fb80d2df81a442af38326ae475c  gcc/testsuite/g++.dg/cpp2a/constexpr-init8.C
! 6f831164f051d810464fd57353d1f786  gcc/testsuite/g++.dg/cpp2a/constexpr-init9.C
  8cdbce536f6ecfcbdb0c5b905216c240  gcc/testsuite/g++.dg/cpp2a/constexpr-inst1.C
! fc64959989383a30e896772beafe5765  gcc/testsuite/g++.dg/cpp2a/constexpr-new1.C
! bf612b2e0a4a17b8bf679dd44dbbf19c  gcc/testsuite/g++.dg/cpp2a/constexpr-new10.C
! 8f2efe7c8b150f5362a6ee3c235d3d14  gcc/testsuite/g++.dg/cpp2a/constexpr-new11.C
! 4b1bc923fe1171a6f3a5f32e27c87ec3  gcc/testsuite/g++.dg/cpp2a/constexpr-new12.C
! 897d64e74d4fec51d18faea9a304c8e5  gcc/testsuite/g++.dg/cpp2a/constexpr-new13.C
  6340911062f801186a4ac6aa85195912  gcc/testsuite/g++.dg/cpp2a/constexpr-new14.C
+ 8088a7cc9210263a003278c59aa0c59e  gcc/testsuite/g++.dg/cpp2a/constexpr-new15.C
  d03c70bf2e20a7e4078f0e590a42e18a  gcc/testsuite/g++.dg/cpp2a/constexpr-new16.C
  8b5edf9c38364b0932161b7fd5869ae6  gcc/testsuite/g++.dg/cpp2a/constexpr-new17.C
! affc6e3db6b22de78239c415dfdfc947  gcc/testsuite/g++.dg/cpp2a/constexpr-new18.C
! ab73ad61b3eadcfd65c5bacdfba0e5d6  gcc/testsuite/g++.dg/cpp2a/constexpr-new19.C
! ac9bb69a57b021f97f435bdd64fdc923  gcc/testsuite/g++.dg/cpp2a/constexpr-new2.C
! d1fc949626e604a60a7cd826bb9fe696  gcc/testsuite/g++.dg/cpp2a/constexpr-new3.C
! 44e96a6cfd450fc9d40c13cc7a4e98f3  gcc/testsuite/g++.dg/cpp2a/constexpr-new4.C
! 66825681dc4cfbae4a8a300bd9102662  gcc/testsuite/g++.dg/cpp2a/constexpr-new5.C
! f219afce12bf5fd4f3da185e5ddf7bf6  gcc/testsuite/g++.dg/cpp2a/constexpr-new6.C
! f6fd24fce19ffd757bf721f94a36b7f4  gcc/testsuite/g++.dg/cpp2a/constexpr-new7.C
! d29f558af48deff313645aecd90adb8d  gcc/testsuite/g++.dg/cpp2a/constexpr-new8.C
! 89741a348551bf62e5198e689a2cb9eb  gcc/testsuite/g++.dg/cpp2a/constexpr-new9.C
  fe2e298a3cf2e9094a79a25a4ffd8fc2  gcc/testsuite/g++.dg/cpp2a/constexpr-shift1.C
  1d1e610556de3295af12cf17177f42b7  gcc/testsuite/g++.dg/cpp2a/constexpr-try1.C
  27ac7e1957f04ea6ee6160a7f7c14ecc  gcc/testsuite/g++.dg/cpp2a/constexpr-try2.C
  c169c0f663257a769b1da0d94c0c7307  gcc/testsuite/g++.dg/cpp2a/constexpr-try3.C
  d74e93a21b21eb22ce0742e9b6bbb923  gcc/testsuite/g++.dg/cpp2a/constexpr-try4.C
  379e0a2257c175d93bee70f8cbbc80ce  gcc/testsuite/g++.dg/cpp2a/constexpr-try5.C
! e8575fbcf5a3e212ea28a4b89fbf8253  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid1.C
! e9ee7a058b99aafd367d4607dea8fd61  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid2.C
! f078be8dacba182f7d71dbd5dc780d67  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid3.C
  d5cf00e36fa4ba1a100d8370416e1bc2  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid4.C
! a9a14bb307d24157192c2d361ae5fcbe  gcc/testsuite/g++.dg/cpp2a/constexpr-union1.C
  6d84a7bd78f9867ce0a07e6b0d26241b  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual1.C
  974c3f89c0f3ffa8993db35751b7f993  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual10.C
  90499949f9ce8adc6318bfabadf24305  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual11.C
  39ba616431ef9cb9d44cd94730cf075c  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual12.C
  49f57461d06a171699e46760a6897b2a  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual13.C
! 6802accb77b453d3a5e4edf60c967450  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual14.C
! a04c89910e58ec260c08da15567aa724  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual15.C
  d39d73d76c96183868eeee6ef1f857f5  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual16.C
  3705fff5ce2b4615567efbbb0bd45eab  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual17.C
+ aad62a0962b0becb6f9d460d4e8a552b  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual18.C
  8356345162577a74b103ae82b69fde6d  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual2.C
  387607aa06c3438be11d475781b728ae  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual3.C
  4d58f9556b7091659bbc5730f1a2697b  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual4.C
*************** ff80d3043b2e823e497517b5dffee736  gcc/te
*** 15264,15284 ****
  f3e4086567377173b2f1ad21c51c419a  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual7.C
  14a42156bc38212446e31ee33ae3d28a  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual8.C
  c9096ec9ab85bc8af326d314ed3e9209  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual9.C
! 596e39a279ed39eb9df294854798fce7  gcc/testsuite/g++.dg/cpp2a/constinit1.C
! 3dff6988af4ae23413cf47dd58d7f0c5  gcc/testsuite/g++.dg/cpp2a/constinit10.C
! 42d824dc040ef9764f60945adf588876  gcc/testsuite/g++.dg/cpp2a/constinit11.C
! deed6bb16468a074e8deea737b77814c  gcc/testsuite/g++.dg/cpp2a/constinit12.C
  a5ab0c1acf96ddc777b5af2b1b69b23d  gcc/testsuite/g++.dg/cpp2a/constinit13.C
! 5e9f60a6078f56890912afa5a6db1738  gcc/testsuite/g++.dg/cpp2a/constinit14.C
! cd69d28fbc3005238abfb4b0ee371d68  gcc/testsuite/g++.dg/cpp2a/constinit15.C
  9f7da905ea744d36251021c627953aa7  gcc/testsuite/g++.dg/cpp2a/constinit2.C
! 32bcf9ec13340c1d190f07fe25a3be4e  gcc/testsuite/g++.dg/cpp2a/constinit3.C
! fbb9a6e7ceb354ed7018b9bdfce8059f  gcc/testsuite/g++.dg/cpp2a/constinit4.C
! 3cfe5cf777d44104518fe94885f5a27e  gcc/testsuite/g++.dg/cpp2a/constinit5.C
  b096e4f747004d3775e106436def90fb  gcc/testsuite/g++.dg/cpp2a/constinit6.C
  f0123af928ae02ae0fadf251ffb95ffb  gcc/testsuite/g++.dg/cpp2a/constinit7.C
! c933b5cfa4228a1611c891b032606991  gcc/testsuite/g++.dg/cpp2a/constinit8.C
! eff032d0db5e352f8e53b891ad58b3bf  gcc/testsuite/g++.dg/cpp2a/constinit9.C
  7126b921087cb1629e4184935766b627  gcc/testsuite/g++.dg/cpp2a/cplusplus.C
  a36a7ca1d0eff1f81629dd71a462961f  gcc/testsuite/g++.dg/cpp2a/decomp1-aux.cc
  97d028d9e7af8226aa281ebcad5bf29f  gcc/testsuite/g++.dg/cpp2a/decomp1.C
--- 16123,16143 ----
  f3e4086567377173b2f1ad21c51c419a  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual7.C
  14a42156bc38212446e31ee33ae3d28a  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual8.C
  c9096ec9ab85bc8af326d314ed3e9209  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual9.C
! dbce59796cf14d5203c5f6510a0ae622  gcc/testsuite/g++.dg/cpp2a/constinit1.C
! 4d2e42a015d2f0120fc0657144a14aca  gcc/testsuite/g++.dg/cpp2a/constinit10.C
! 36472405e08ac35611ed0b721d258f6c  gcc/testsuite/g++.dg/cpp2a/constinit11.C
! 2d9298d9f42f10ccc04187480965d2df  gcc/testsuite/g++.dg/cpp2a/constinit12.C
  a5ab0c1acf96ddc777b5af2b1b69b23d  gcc/testsuite/g++.dg/cpp2a/constinit13.C
! abe4f29f72a423fef4342d122db1f1e3  gcc/testsuite/g++.dg/cpp2a/constinit14.C
! 6c452707a42527df0dd492198f4a03d6  gcc/testsuite/g++.dg/cpp2a/constinit15.C
  9f7da905ea744d36251021c627953aa7  gcc/testsuite/g++.dg/cpp2a/constinit2.C
! ec97b4f24af7c726b645ccd07978270a  gcc/testsuite/g++.dg/cpp2a/constinit3.C
! ec5836ef75d0047a1e68f87292524d25  gcc/testsuite/g++.dg/cpp2a/constinit4.C
! dedfc59644b0e60dc6b2af2a6aa72984  gcc/testsuite/g++.dg/cpp2a/constinit5.C
  b096e4f747004d3775e106436def90fb  gcc/testsuite/g++.dg/cpp2a/constinit6.C
  f0123af928ae02ae0fadf251ffb95ffb  gcc/testsuite/g++.dg/cpp2a/constinit7.C
! ea31517e527d7eb88edeeab341ec1a8b  gcc/testsuite/g++.dg/cpp2a/constinit8.C
! 6e6e9c5d790a5990689843e6f2ec1722  gcc/testsuite/g++.dg/cpp2a/constinit9.C
  7126b921087cb1629e4184935766b627  gcc/testsuite/g++.dg/cpp2a/cplusplus.C
  a36a7ca1d0eff1f81629dd71a462961f  gcc/testsuite/g++.dg/cpp2a/decomp1-aux.cc
  97d028d9e7af8226aa281ebcad5bf29f  gcc/testsuite/g++.dg/cpp2a/decomp1.C
*************** aad29b064fff817ac1e3a613ef44faf8  gcc/te
*** 15286,15297 ****
  3346982296b26f900025d1f7046594b7  gcc/testsuite/g++.dg/cpp2a/decomp3.C
  9e5b823284742c68e17318ea0110e785  gcc/testsuite/g++.dg/cpp2a/desig1.C
  103bcc9cdab7e0e9e904e2a42cfecd99  gcc/testsuite/g++.dg/cpp2a/desig10.C
! 477c6f3f13b176577db95b2be79d5b2a  gcc/testsuite/g++.dg/cpp2a/desig11.C
  817b69190ae4e1f25ada971a556ea5cb  gcc/testsuite/g++.dg/cpp2a/desig12.C
! 1ca9ed28e32a5aa7ea91f1b6c8ca5c91  gcc/testsuite/g++.dg/cpp2a/desig13.C
  6d38c77badd579c8ce5e225a881fb734  gcc/testsuite/g++.dg/cpp2a/desig14.C
  bc8c268c08fedc23cbbb52f3be804b6b  gcc/testsuite/g++.dg/cpp2a/desig15.C
! 660e750ca110e87932946efeee331317  gcc/testsuite/g++.dg/cpp2a/desig2.C
  9f489d7f3f58294a91f5e5ea62989f5c  gcc/testsuite/g++.dg/cpp2a/desig3.C
  a1e304613b1097092d10ed459e46fe0c  gcc/testsuite/g++.dg/cpp2a/desig4.C
  bf71e77b18ad9c10b7e9f64f07ee9d28  gcc/testsuite/g++.dg/cpp2a/desig5.C
--- 16145,16158 ----
  3346982296b26f900025d1f7046594b7  gcc/testsuite/g++.dg/cpp2a/decomp3.C
  9e5b823284742c68e17318ea0110e785  gcc/testsuite/g++.dg/cpp2a/desig1.C
  103bcc9cdab7e0e9e904e2a42cfecd99  gcc/testsuite/g++.dg/cpp2a/desig10.C
! 3826f47812937a822640bb78864297c9  gcc/testsuite/g++.dg/cpp2a/desig11.C
  817b69190ae4e1f25ada971a556ea5cb  gcc/testsuite/g++.dg/cpp2a/desig12.C
! 066f887b6c181fc98180fd5544d3119d  gcc/testsuite/g++.dg/cpp2a/desig13.C
  6d38c77badd579c8ce5e225a881fb734  gcc/testsuite/g++.dg/cpp2a/desig14.C
  bc8c268c08fedc23cbbb52f3be804b6b  gcc/testsuite/g++.dg/cpp2a/desig15.C
! e45f962710cd5503949da46156ed4ab9  gcc/testsuite/g++.dg/cpp2a/desig16.C
! b3b483cf26f0312c306ce1c7d48e001b  gcc/testsuite/g++.dg/cpp2a/desig17.C
! 97c50b687300c510314f41249a28b6ad  gcc/testsuite/g++.dg/cpp2a/desig2.C
  9f489d7f3f58294a91f5e5ea62989f5c  gcc/testsuite/g++.dg/cpp2a/desig3.C
  a1e304613b1097092d10ed459e46fe0c  gcc/testsuite/g++.dg/cpp2a/desig4.C
  bf71e77b18ad9c10b7e9f64f07ee9d28  gcc/testsuite/g++.dg/cpp2a/desig5.C
*************** c9656baaa09fe4a7d5bf855b0e825993  gcc/te
*** 15299,15316 ****
  7982e2341bf3fb4a35f33c5b3d4265d7  gcc/testsuite/g++.dg/cpp2a/desig7.C
  959c102bf551d6792d067544e06b6b06  gcc/testsuite/g++.dg/cpp2a/desig8.C
  e4e06994c2abc2f0b15bad63bc84687d  gcc/testsuite/g++.dg/cpp2a/desig9.C
! 0f5eca4d1a3e411b2f92cfe4dcc9da24  gcc/testsuite/g++.dg/cpp2a/destroying-delete1.C
! 6e914859ea21bd81866c20a9354a980b  gcc/testsuite/g++.dg/cpp2a/destroying-delete2.C
! 542b12f208a0f82a62df2046a9ae96f8  gcc/testsuite/g++.dg/cpp2a/destroying-delete3.C
! b7838db4e0bec4e4f4d40a6620198a5b  gcc/testsuite/g++.dg/cpp2a/destroying-delete4.C
  7603d8495e5c4177167103f15193f880  gcc/testsuite/g++.dg/cpp2a/explicit1.C
  4ead5e099c42078c2e5d56a7f2e11d60  gcc/testsuite/g++.dg/cpp2a/explicit10.C
  f590d02ef6749385162db55c11bc0572  gcc/testsuite/g++.dg/cpp2a/explicit11.C
  e8e7d84b8d1f40eb68384d1a3999a9d8  gcc/testsuite/g++.dg/cpp2a/explicit12.C
  099ff5f340c64b508606b9bed918fe74  gcc/testsuite/g++.dg/cpp2a/explicit13.C
! 810f0281b91e7183e3cf352d69a13932  gcc/testsuite/g++.dg/cpp2a/explicit14.C
! a226c2e3c24e7d0eeccd78f590a27ebc  gcc/testsuite/g++.dg/cpp2a/explicit15.C
! 2eb30ce4c96cd82452c0c9f4d990e26b  gcc/testsuite/g++.dg/cpp2a/explicit16.C
  4f274bd2175020b40ce5b2de0d923fdd  gcc/testsuite/g++.dg/cpp2a/explicit2.C
  e2b8b1544e1a743421685574bc054539  gcc/testsuite/g++.dg/cpp2a/explicit3.C
  7b8cb14575cc7970a40229dcb79d6390  gcc/testsuite/g++.dg/cpp2a/explicit4.C
--- 16160,16181 ----
  7982e2341bf3fb4a35f33c5b3d4265d7  gcc/testsuite/g++.dg/cpp2a/desig7.C
  959c102bf551d6792d067544e06b6b06  gcc/testsuite/g++.dg/cpp2a/desig8.C
  e4e06994c2abc2f0b15bad63bc84687d  gcc/testsuite/g++.dg/cpp2a/desig9.C
! 3a435d47b279e8fb5ad5497d52a8419b  gcc/testsuite/g++.dg/cpp2a/destroying-delete1.C
! 5ec493f5d121e6cb1670ef4889b7a1ee  gcc/testsuite/g++.dg/cpp2a/destroying-delete2.C
! cc0268c504556040e78bce5b6a029f64  gcc/testsuite/g++.dg/cpp2a/destroying-delete3.C
! 709f9b5a4431b31c6b23bb87e2d889b1  gcc/testsuite/g++.dg/cpp2a/destroying-delete4.C
! 13ce43bc00d27c743e449e1386ffa46a  gcc/testsuite/g++.dg/cpp2a/enum-conv1.C
! dedca5854b0e7bf2b75e811a11f0a159  gcc/testsuite/g++.dg/cpp2a/enum-conv2.C
! e2d076d1bf2b561366a64fc2e1ea3381  gcc/testsuite/g++.dg/cpp2a/enum-conv3.C
  7603d8495e5c4177167103f15193f880  gcc/testsuite/g++.dg/cpp2a/explicit1.C
  4ead5e099c42078c2e5d56a7f2e11d60  gcc/testsuite/g++.dg/cpp2a/explicit10.C
  f590d02ef6749385162db55c11bc0572  gcc/testsuite/g++.dg/cpp2a/explicit11.C
  e8e7d84b8d1f40eb68384d1a3999a9d8  gcc/testsuite/g++.dg/cpp2a/explicit12.C
  099ff5f340c64b508606b9bed918fe74  gcc/testsuite/g++.dg/cpp2a/explicit13.C
! 5226906939f776a8190f817d4fda0f6c  gcc/testsuite/g++.dg/cpp2a/explicit14.C
! ac9badd1182f4823050414ca0e462c36  gcc/testsuite/g++.dg/cpp2a/explicit15.C
! bbaa6b9b318dd0cb35b260ac54ce5548  gcc/testsuite/g++.dg/cpp2a/explicit16.C
! ce913ea3fabca8ffd187ffabb084a00b  gcc/testsuite/g++.dg/cpp2a/explicit17.C
  4f274bd2175020b40ce5b2de0d923fdd  gcc/testsuite/g++.dg/cpp2a/explicit2.C
  e2b8b1544e1a743421685574bc054539  gcc/testsuite/g++.dg/cpp2a/explicit3.C
  7b8cb14575cc7970a40229dcb79d6390  gcc/testsuite/g++.dg/cpp2a/explicit4.C
*************** ffff1f1e5445186cd85fc18de4595b89  gcc/te
*** 15319,15325 ****
  2c9a2b5474c2b3d7b8c260a855385434  gcc/testsuite/g++.dg/cpp2a/explicit7.C
  aa2bb54a77cb3fec28379d767c80f012  gcc/testsuite/g++.dg/cpp2a/explicit8.C
  05f18b846e0e3446396676836acfabc0  gcc/testsuite/g++.dg/cpp2a/explicit9.C
! 90ff9f82d3f4c9ee7ae0bffc49cdf71d  gcc/testsuite/g++.dg/cpp2a/feat-cxx2a.C
  1308cad2957585ab947868996b5fa85c  gcc/testsuite/g++.dg/cpp2a/fn-template1.C
  96c4e27953bf932ba7135b847e79207d  gcc/testsuite/g++.dg/cpp2a/fn-template10.C
  2cbcabc3565e69c4edf1f078a2c0aecc  gcc/testsuite/g++.dg/cpp2a/fn-template11.C
--- 16184,16190 ----
  2c9a2b5474c2b3d7b8c260a855385434  gcc/testsuite/g++.dg/cpp2a/explicit7.C
  aa2bb54a77cb3fec28379d767c80f012  gcc/testsuite/g++.dg/cpp2a/explicit8.C
  05f18b846e0e3446396676836acfabc0  gcc/testsuite/g++.dg/cpp2a/explicit9.C
! c0b09186575f0d09e16d2837933358ec  gcc/testsuite/g++.dg/cpp2a/feat-cxx2a.C
  1308cad2957585ab947868996b5fa85c  gcc/testsuite/g++.dg/cpp2a/fn-template1.C
  96c4e27953bf932ba7135b847e79207d  gcc/testsuite/g++.dg/cpp2a/fn-template10.C
  2cbcabc3565e69c4edf1f078a2c0aecc  gcc/testsuite/g++.dg/cpp2a/fn-template11.C
*************** aa2bb54a77cb3fec28379d767c80f012  gcc/te
*** 15327,15333 ****
  e5c5b8063534735056740b0a92de3a91  gcc/testsuite/g++.dg/cpp2a/fn-template13.C
  c0b0351de70a0a86e1341d6e7ad393dc  gcc/testsuite/g++.dg/cpp2a/fn-template14.C
  bb05f6aa04fb50f162813ec05ba63d6c  gcc/testsuite/g++.dg/cpp2a/fn-template15.C
! eebf7978c51120ae088d13ba7c495396  gcc/testsuite/g++.dg/cpp2a/fn-template16.C
  5be334c7ec427e32bec50c37c927f566  gcc/testsuite/g++.dg/cpp2a/fn-template17.C
  c187aa931c17eb73cbb88ab97078392e  gcc/testsuite/g++.dg/cpp2a/fn-template18.C
  4cd4e9e3c71accfbee0c11bbbd717647  gcc/testsuite/g++.dg/cpp2a/fn-template19.C
--- 16192,16198 ----
  e5c5b8063534735056740b0a92de3a91  gcc/testsuite/g++.dg/cpp2a/fn-template13.C
  c0b0351de70a0a86e1341d6e7ad393dc  gcc/testsuite/g++.dg/cpp2a/fn-template14.C
  bb05f6aa04fb50f162813ec05ba63d6c  gcc/testsuite/g++.dg/cpp2a/fn-template15.C
! 625268b46ac0cc70a8606c94ac580be3  gcc/testsuite/g++.dg/cpp2a/fn-template16.C
  5be334c7ec427e32bec50c37c927f566  gcc/testsuite/g++.dg/cpp2a/fn-template17.C
  c187aa931c17eb73cbb88ab97078392e  gcc/testsuite/g++.dg/cpp2a/fn-template18.C
  4cd4e9e3c71accfbee0c11bbbd717647  gcc/testsuite/g++.dg/cpp2a/fn-template19.C
*************** b67c0882307bae581d479d6ccd962725  gcc/te
*** 15339,15352 ****
  4b303717beb6d4ba59f719e006fbc2ad  gcc/testsuite/g++.dg/cpp2a/fn-template4.C
  bc63639b07fc35a159383408739b1edd  gcc/testsuite/g++.dg/cpp2a/fn-template5.C
  bb8d6be95bfb22151d11535f6f528b3d  gcc/testsuite/g++.dg/cpp2a/fn-template6.C
! 60e16b508aac30ee8f84ad3d57c9c960  gcc/testsuite/g++.dg/cpp2a/fn-template7.C
  35e700365d14e52c78b0b7072708cb91  gcc/testsuite/g++.dg/cpp2a/fn-template8.C
  96034c328245dab4ff913aea0bb8ac22  gcc/testsuite/g++.dg/cpp2a/fn-template9.C
  66879a3657af8619d59730538e1ee393  gcc/testsuite/g++.dg/cpp2a/inline-asm1.C
! 1dd7f180589d7fa9749e0becf23041d0  gcc/testsuite/g++.dg/cpp2a/inline-asm2.C
! 7ac725de08593808d7b980841f2749d7  gcc/testsuite/g++.dg/cpp2a/inline-asm3.C
  5aa6c838680e7a1a1da22f5ee9de6c76  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated1.C
  f2ad91569581aa3fa670ae32821491f9  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated10.C
  4617b7d86ad3299b351c033f194bee8a  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated2.C
  73b56ba004639bd18c7c3c95c3bfd080  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated3.C
  5c37b5cacdb70688ac2e90c563d9613c  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated4.C
--- 16204,16221 ----
  4b303717beb6d4ba59f719e006fbc2ad  gcc/testsuite/g++.dg/cpp2a/fn-template4.C
  bc63639b07fc35a159383408739b1edd  gcc/testsuite/g++.dg/cpp2a/fn-template5.C
  bb8d6be95bfb22151d11535f6f528b3d  gcc/testsuite/g++.dg/cpp2a/fn-template6.C
! d5daad6510fdebbc8a224878e13daadb  gcc/testsuite/g++.dg/cpp2a/fn-template7.C
  35e700365d14e52c78b0b7072708cb91  gcc/testsuite/g++.dg/cpp2a/fn-template8.C
  96034c328245dab4ff913aea0bb8ac22  gcc/testsuite/g++.dg/cpp2a/fn-template9.C
+ 48115fb5ca7c34dc80b55641d058c2f5  gcc/testsuite/g++.dg/cpp2a/implicit-move1.C
+ 0f15089a4b48e4442cd76dc0b58935e6  gcc/testsuite/g++.dg/cpp2a/implicit-move2.C
+ 667c1542ea5f74feb06d42ad62ef73db  gcc/testsuite/g++.dg/cpp2a/implicit-move3.C
  66879a3657af8619d59730538e1ee393  gcc/testsuite/g++.dg/cpp2a/inline-asm1.C
! 13c4bca5287520b44f794ff87c222cc6  gcc/testsuite/g++.dg/cpp2a/inline-asm2.C
! f9f5ebc76edafa3cb1e99a32c67ec4f3  gcc/testsuite/g++.dg/cpp2a/inline-asm3.C
  5aa6c838680e7a1a1da22f5ee9de6c76  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated1.C
  f2ad91569581aa3fa670ae32821491f9  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated10.C
+ 90589ce06ced8c136aaf37770e1ec488  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated11.C
  4617b7d86ad3299b351c033f194bee8a  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated2.C
  73b56ba004639bd18c7c3c95c3bfd080  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated3.C
  5c37b5cacdb70688ac2e90c563d9613c  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated4.C
*************** f2ad91569581aa3fa670ae32821491f9  gcc/te
*** 15354,15399 ****
  724355f3cd691d6763da9a88f8f5ef72  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated6.C
  2745fc684e028b3d39bec425df6c1404  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated7.C
  701a2fd7b4ea3bddd0f07315aa1f060b  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated8.C
! 84b05d119793cded18a3c5eba8796bb5  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated9.C
! 2e05b1d33f8a3c312340fec1123d5516  gcc/testsuite/g++.dg/cpp2a/lambda-generic-variadic20.C
  c1cdf23c08dcb292bbd629847ef95a23  gcc/testsuite/g++.dg/cpp2a/lambda-generic-variadic21.C
  f3d333d9133ccc3fed58f15dd1e6c1c1  gcc/testsuite/g++.dg/cpp2a/lambda-generic1.C
  101950bd66265e5e952f39292d61abee  gcc/testsuite/g++.dg/cpp2a/lambda-generic2.C
  f3183e909b7fd601906b1f284b8514e9  gcc/testsuite/g++.dg/cpp2a/lambda-generic3.C
  53b70e7bd216f774ecdcfeda866f430c  gcc/testsuite/g++.dg/cpp2a/lambda-generic4.C
! 4aeeac8ebcb51044cd9c82d45ee9a511  gcc/testsuite/g++.dg/cpp2a/lambda-generic5.C
  39b7c67b1277b814bc1960e8dd413aaf  gcc/testsuite/g++.dg/cpp2a/lambda-generic6.C
! 9ed9fd3beac8131f2ddd0a747eaf2128  gcc/testsuite/g++.dg/cpp2a/lambda-generic7.C
! 9046b5f0a50e1a6bc966fd9b3b6dfd20  gcc/testsuite/g++.dg/cpp2a/lambda-mangle.C
! 3ab1babdc49679a44f405e45f0d73567  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init1.C
! 00668662ccb6f2bfdc76911b02c45eca  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init2.C
  4a00e775daa831f33ae91ab118695086  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init3.C
! 135fe04bd1e5322dc2e118df4c43eb3d  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init4.C
! 60272cd99712da3380fe2c9f4b4f5165  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init5.C
  22ec10632b049637a7cbf82f46eda177  gcc/testsuite/g++.dg/cpp2a/lambda-this1.C
  c09b3406a6984eced941c654f03df8b6  gcc/testsuite/g++.dg/cpp2a/lambda-this2.C
! a10b478d00c08a3b0686eea62d1bb5db  gcc/testsuite/g++.dg/cpp2a/lambda-this3.C
! 385f400e8a65a027fde845c3598c1720  gcc/testsuite/g++.dg/cpp2a/lambda-uneval1.C
  8764db80a4d4bd4462720cfe04e40d95  gcc/testsuite/g++.dg/cpp2a/lambda-uneval10.C
! 4eea54a3939ff7a2c7afdf36f144b333  gcc/testsuite/g++.dg/cpp2a/lambda-uneval11.C
! 8907474362bba20ea17ea84df157c10f  gcc/testsuite/g++.dg/cpp2a/lambda-uneval12.C
! a042fe1d6c080773b9d8dccdcf551899  gcc/testsuite/g++.dg/cpp2a/lambda-uneval2.C
! 5538ced8055aabec6472952d45a61d6d  gcc/testsuite/g++.dg/cpp2a/lambda-uneval3.C
! 19f0c1ca3444d81896fecc2a315b4063  gcc/testsuite/g++.dg/cpp2a/lambda-uneval4.C
! 1dc530fcd3b36aa79e1ab49e1190307f  gcc/testsuite/g++.dg/cpp2a/lambda-uneval5.C
! 02638897ccd4b14b0186735aa7aa099c  gcc/testsuite/g++.dg/cpp2a/lambda-uneval6.C
! e53bc33f76486b8726e49bd9c9f2c8cd  gcc/testsuite/g++.dg/cpp2a/lambda-uneval7.C
! 9ad0ae2ae43255010f3a6d1191ffafbc  gcc/testsuite/g++.dg/cpp2a/lambda-uneval8.C
! 90481a04cb323bb8be780af3cb0ca6fa  gcc/testsuite/g++.dg/cpp2a/lambda-uneval9.C
  212ff71ca0975687074cfc7aa4299751  gcc/testsuite/g++.dg/cpp2a/lambda-uneval9.cc
  5237f3fe8ad9a25771fab3b505424daa  gcc/testsuite/g++.dg/cpp2a/lambda-uneval9.h
  ef0d69f00a9d28bc07bc6d0fcbf840b5  gcc/testsuite/g++.dg/cpp2a/lambda1.C
! d3455abc58bb6904afd4636abab82ab2  gcc/testsuite/g++.dg/cpp2a/multiple-deleted-destroying-delete-error-1.C
! 4339e49d18711263da9900951cee3490  gcc/testsuite/g++.dg/cpp2a/multiple-deleted-destroying-delete-error-2.C
  0128760d24dbfb958ed58b3a135f5b72  gcc/testsuite/g++.dg/cpp2a/nested-inline-ns1.C
! 0307867d4629113203f10f9bbdbfe9ce  gcc/testsuite/g++.dg/cpp2a/nested-inline-ns2.C
! 4c267e7f3452a21a5fd87bbb17ec9d16  gcc/testsuite/g++.dg/cpp2a/no_unique_address1.C
  186640015f4c7e2121b0e4f91c56e99f  gcc/testsuite/g++.dg/cpp2a/no_unique_address11.C
  c94ac6fb1a99bf541b66d604620fa09b  gcc/testsuite/g++.dg/cpp2a/no_unique_address2.C
  67a61649264fea12fb7cc5c31bc5313e  gcc/testsuite/g++.dg/cpp2a/no_unique_address3.C
  ca2c81baf4111b5e8e15980b5237a344  gcc/testsuite/g++.dg/cpp2a/no_unique_address4.C
--- 16223,16281 ----
  724355f3cd691d6763da9a88f8f5ef72  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated6.C
  2745fc684e028b3d39bec425df6c1404  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated7.C
  701a2fd7b4ea3bddd0f07315aa1f060b  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated8.C
! b37f129ff7900818716e38b8fde743c0  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated9.C
! 40ea32951dfb4570c1774e238c30f434  gcc/testsuite/g++.dg/cpp2a/lambda-generic-variadic20.C
  c1cdf23c08dcb292bbd629847ef95a23  gcc/testsuite/g++.dg/cpp2a/lambda-generic-variadic21.C
  f3d333d9133ccc3fed58f15dd1e6c1c1  gcc/testsuite/g++.dg/cpp2a/lambda-generic1.C
  101950bd66265e5e952f39292d61abee  gcc/testsuite/g++.dg/cpp2a/lambda-generic2.C
  f3183e909b7fd601906b1f284b8514e9  gcc/testsuite/g++.dg/cpp2a/lambda-generic3.C
  53b70e7bd216f774ecdcfeda866f430c  gcc/testsuite/g++.dg/cpp2a/lambda-generic4.C
! 1b8d02a388107dbc70264736d884ce33  gcc/testsuite/g++.dg/cpp2a/lambda-generic5.C
  39b7c67b1277b814bc1960e8dd413aaf  gcc/testsuite/g++.dg/cpp2a/lambda-generic6.C
! eba3722d0e4a07fca1ba3b23f971441e  gcc/testsuite/g++.dg/cpp2a/lambda-generic7.C
! 28b7d87a9c0382e6077a9a8f61f3fbbb  gcc/testsuite/g++.dg/cpp2a/lambda-generic8.C
! 1a3525c82baa00fdaf939a1cf412b044  gcc/testsuite/g++.dg/cpp2a/lambda-generic9.C
! 1932f73cfc280b9b5c5b1f04a277d6b3  gcc/testsuite/g++.dg/cpp2a/lambda-mangle.C
! f50c8e7c7812a7eade38d014e8410110  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init1.C
! 3ff21d150a56481dd5638dcc5bea08e6  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init2.C
  4a00e775daa831f33ae91ab118695086  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init3.C
! 76aebdeb346269b3700ddb3dc4e2d8ac  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init4.C
! 922e5dff9ed1946970d8d28661c33f0f  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init5.C
! 05ee01266fc805cc3327ad09e070330c  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init6.C
  22ec10632b049637a7cbf82f46eda177  gcc/testsuite/g++.dg/cpp2a/lambda-this1.C
  c09b3406a6984eced941c654f03df8b6  gcc/testsuite/g++.dg/cpp2a/lambda-this2.C
! 1e71778cc108a3420e2ae13532521955  gcc/testsuite/g++.dg/cpp2a/lambda-this3.C
! 7abf5ee5e303cb03e6f86befc4db72e5  gcc/testsuite/g++.dg/cpp2a/lambda-uneval1.C
  8764db80a4d4bd4462720cfe04e40d95  gcc/testsuite/g++.dg/cpp2a/lambda-uneval10.C
! 7b52674a2e7474eb9db1b1396088d25a  gcc/testsuite/g++.dg/cpp2a/lambda-uneval11.C
! 192206513f337817843dc6ba46bc0aab  gcc/testsuite/g++.dg/cpp2a/lambda-uneval12.C
! c79632f5b81fdadda65a61ca549d97f6  gcc/testsuite/g++.dg/cpp2a/lambda-uneval13.C
! 467e186d5def67de47b9fdac7558fede  gcc/testsuite/g++.dg/cpp2a/lambda-uneval14.C
! 53c7dceb19a2ce9e52327177ea4fc212  gcc/testsuite/g++.dg/cpp2a/lambda-uneval15.C
! e99d0c361f9eaa55d53c9232f30b64cf  gcc/testsuite/g++.dg/cpp2a/lambda-uneval2.C
! 95297857429ac8850dbeb5773639ea6b  gcc/testsuite/g++.dg/cpp2a/lambda-uneval3.C
! 2f7bd1774e5f890e65ee937419a29669  gcc/testsuite/g++.dg/cpp2a/lambda-uneval4.C
! 8e6b610dd3dab06841943bfa5f325489  gcc/testsuite/g++.dg/cpp2a/lambda-uneval5.C
! 91159fd20af1b89a4545ef0450293574  gcc/testsuite/g++.dg/cpp2a/lambda-uneval6.C
! 130b660c2024a96caecca1b21e084390  gcc/testsuite/g++.dg/cpp2a/lambda-uneval7.C
! bff8b5e2df5278f99aa4066a82b1285b  gcc/testsuite/g++.dg/cpp2a/lambda-uneval8.C
! 08ec9a15851bc6a582e81d325da35f7f  gcc/testsuite/g++.dg/cpp2a/lambda-uneval9.C
  212ff71ca0975687074cfc7aa4299751  gcc/testsuite/g++.dg/cpp2a/lambda-uneval9.cc
  5237f3fe8ad9a25771fab3b505424daa  gcc/testsuite/g++.dg/cpp2a/lambda-uneval9.h
  ef0d69f00a9d28bc07bc6d0fcbf840b5  gcc/testsuite/g++.dg/cpp2a/lambda1.C
! dadbd3e108a5f0ebf254744df54b05ab  gcc/testsuite/g++.dg/cpp2a/multiple-deleted-destroying-delete-error-1.C
! 47eb51ee8983c1226202a6523dab937c  gcc/testsuite/g++.dg/cpp2a/multiple-deleted-destroying-delete-error-2.C
  0128760d24dbfb958ed58b3a135f5b72  gcc/testsuite/g++.dg/cpp2a/nested-inline-ns1.C
! d9bff9cdf3dc1a6af99aa29fc0728f9c  gcc/testsuite/g++.dg/cpp2a/nested-inline-ns2.C
! 9c1adc14b39c8a68932650148fb322f1  gcc/testsuite/g++.dg/cpp2a/new-array1.C
! 1e4a874dbd3e2bfe3622fa9bd0100e01  gcc/testsuite/g++.dg/cpp2a/new-array2.C
! 05dae4b83dc89e795a06d15b78af77ce  gcc/testsuite/g++.dg/cpp2a/new-array3.C
! 891f708521634e9d83ac2b1ac129ff73  gcc/testsuite/g++.dg/cpp2a/new-array4.C
! c1d290f9e69cfcb8741cc145f0506d7c  gcc/testsuite/g++.dg/cpp2a/new-array5.C
! b9a453a0ec01130cf321abf54d07d956  gcc/testsuite/g++.dg/cpp2a/no_unique_address1.C
! 2b1e75d7781da136b7ea2f59d27f7c82  gcc/testsuite/g++.dg/cpp2a/no_unique_address10.C
  186640015f4c7e2121b0e4f91c56e99f  gcc/testsuite/g++.dg/cpp2a/no_unique_address11.C
+ e95698a38fe4cc0a60b4857fa65742ca  gcc/testsuite/g++.dg/cpp2a/no_unique_address12.C
  c94ac6fb1a99bf541b66d604620fa09b  gcc/testsuite/g++.dg/cpp2a/no_unique_address2.C
  67a61649264fea12fb7cc5c31bc5313e  gcc/testsuite/g++.dg/cpp2a/no_unique_address3.C
  ca2c81baf4111b5e8e15980b5237a344  gcc/testsuite/g++.dg/cpp2a/no_unique_address4.C
*************** ca2c81baf4111b5e8e15980b5237a344  gcc/te
*** 15402,15481 ****
  9318f81f05d77350f58751e060980401  gcc/testsuite/g++.dg/cpp2a/no_unique_address7.C
  eae4af23fdda50f9fc7fe629f33c9c57  gcc/testsuite/g++.dg/cpp2a/no_unique_address7a.C
  5a41d496a4c136629867a07c791d2d45  gcc/testsuite/g++.dg/cpp2a/no_unique_address8.C
! 6647a1d3caab1cda433ee9754d0c951d  gcc/testsuite/g++.dg/cpp2a/nodiscard-constructor1.C
! 93cc1db4ace22bb872d29fbb5745afa5  gcc/testsuite/g++.dg/cpp2a/nodiscard-constructor2.C
! 09db435ebfb3318083fe5610f954e35e  gcc/testsuite/g++.dg/cpp2a/nodiscard-once.C
! dac92dbf9952ca7efd12eed613154307  gcc/testsuite/g++.dg/cpp2a/nodiscard-reason-nonstring.C
! a5bf4ac6fed2afb798ec7247135f597a  gcc/testsuite/g++.dg/cpp2a/nodiscard-reason-only-one.C
! 100713951dce2f8d41de252b6336fba6  gcc/testsuite/g++.dg/cpp2a/nodiscard-reason.C
! 4af9e26d4ea402abdaffaaa72b32d774  gcc/testsuite/g++.dg/cpp2a/nontype-class-defarg1.C
! 8a5ad7899bb7f9d7da3fa8d33021f744  gcc/testsuite/g++.dg/cpp2a/nontype-class1.C
! 27670232ed032d4697dcda1a46e006bd  gcc/testsuite/g++.dg/cpp2a/nontype-class10.C
! 0b5018437c6a0da344ea0dbe3dd7891b  gcc/testsuite/g++.dg/cpp2a/nontype-class11.C
! 3769945b61aa2b1acc196f4d6175848c  gcc/testsuite/g++.dg/cpp2a/nontype-class12.C
! c7877307f19ce4174d69e10af3dc2b39  gcc/testsuite/g++.dg/cpp2a/nontype-class13.C
! 12db8572dc3ed4ec116c606d9c08b2ee  gcc/testsuite/g++.dg/cpp2a/nontype-class14.C
! fc6060e8ca8c838dca5c26d3d60199fd  gcc/testsuite/g++.dg/cpp2a/nontype-class15.C
! 3cbcd691f4a41972b8e0e01630766765  gcc/testsuite/g++.dg/cpp2a/nontype-class16.C
! c55c8688160d512ac1e5a22cb91a90a3  gcc/testsuite/g++.dg/cpp2a/nontype-class17.C
! aa3c5d23779fb7b236f955c1e7e09ac4  gcc/testsuite/g++.dg/cpp2a/nontype-class18.C
! 3c58a3fab8f598b0ade16965db1c6bb4  gcc/testsuite/g++.dg/cpp2a/nontype-class19.C
! 1e477cdeb16a64be43f95930df6cbebf  gcc/testsuite/g++.dg/cpp2a/nontype-class2.C
! e8d8db2969710fcebdad2b203045f51e  gcc/testsuite/g++.dg/cpp2a/nontype-class20.C
! e214a6e227705189b8298aa5dccd3e2e  gcc/testsuite/g++.dg/cpp2a/nontype-class21.C
! 51f1da7fef1598009140af9576ded743  gcc/testsuite/g++.dg/cpp2a/nontype-class22.C
! 62d20304c0732cf963aa8ac10fcb1394  gcc/testsuite/g++.dg/cpp2a/nontype-class23.C
! e28f8527c413dd173f65f4e36e3b01dc  gcc/testsuite/g++.dg/cpp2a/nontype-class24.C
! ec976d0bd155a7dc13a9fd655b837dc0  gcc/testsuite/g++.dg/cpp2a/nontype-class25.C
! fe8ba68ddeb121a2bdcddb2e0a2855fa  gcc/testsuite/g++.dg/cpp2a/nontype-class26.C
! 42fb7cc9b91686c3557c208a02f2bccd  gcc/testsuite/g++.dg/cpp2a/nontype-class27.C
! 33ff9c8956e88cca1099964c25f742f4  gcc/testsuite/g++.dg/cpp2a/nontype-class28.C
! b81c2846eeda1a442c4ef51e741fc059  gcc/testsuite/g++.dg/cpp2a/nontype-class29.C
! 475e0128b5973f3b9cb034e09e7f1702  gcc/testsuite/g++.dg/cpp2a/nontype-class3.C
! 3d386083caa824f6d8025a784e88a07c  gcc/testsuite/g++.dg/cpp2a/nontype-class30.C
! 676ac74877c4d01b6ba644540b3686eb  gcc/testsuite/g++.dg/cpp2a/nontype-class31.C
! a5a08e2d75d606a411ed8e42c87f2544  gcc/testsuite/g++.dg/cpp2a/nontype-class32.C
! 24ee72128d9ac9085aba2add87c30681  gcc/testsuite/g++.dg/cpp2a/nontype-class33.C
! e5477b92d3ebe13e93ea8ba84289945a  gcc/testsuite/g++.dg/cpp2a/nontype-class34.C
! b66cc25742c341fcd6c4b6d32fbbca35  gcc/testsuite/g++.dg/cpp2a/nontype-class35.C
! 88e14a109b60c1402d5db157e643e04f  gcc/testsuite/g++.dg/cpp2a/nontype-class36.C
! a350dc772e2fca91018f392330494102  gcc/testsuite/g++.dg/cpp2a/nontype-class37.C
! 4fd52bde00b799a128d66f6a76100b0d  gcc/testsuite/g++.dg/cpp2a/nontype-class4.C
  f113107fa400cb6a116e20f7dfa67f7b  gcc/testsuite/g++.dg/cpp2a/nontype-class40.C
! ec58f5751e495c0046ef627360867578  gcc/testsuite/g++.dg/cpp2a/nontype-class5.C
! be2750e5a930dd0cbbfe41d900aec74c  gcc/testsuite/g++.dg/cpp2a/nontype-class6.C
! d421b9d8d4be141296899cf8c5757671  gcc/testsuite/g++.dg/cpp2a/nontype-class7.C
! a551e473e65964b6fd38b180f2919f80  gcc/testsuite/g++.dg/cpp2a/nontype-class8.C
! af7e7a1962e60f3668f36e15606726bc  gcc/testsuite/g++.dg/cpp2a/nontype-class9.C
! ac64f7e8cac7dbbebf2a68fc8ccc3496  gcc/testsuite/g++.dg/cpp2a/paren-init1.C
! 64011eb85ee2495b463228b0dcafeaf5  gcc/testsuite/g++.dg/cpp2a/paren-init10.C
! c7e4f491c3ec4aa2b05ce94b23c156ec  gcc/testsuite/g++.dg/cpp2a/paren-init11.C
! dd30d56b4b8b79a294de94733913b733  gcc/testsuite/g++.dg/cpp2a/paren-init12.C
! 0fda7649e553e42cac1f961250da8559  gcc/testsuite/g++.dg/cpp2a/paren-init13.C
  0156582670344863057fbed622cc7237  gcc/testsuite/g++.dg/cpp2a/paren-init14.C
! ecb5786f4475a1df00c36089398ef20e  gcc/testsuite/g++.dg/cpp2a/paren-init15.C
! f1dbf115eb5c32a9509d95da3cff2617  gcc/testsuite/g++.dg/cpp2a/paren-init16.C
  78e96d8ec19a073664f86d5b6befd0c8  gcc/testsuite/g++.dg/cpp2a/paren-init17.C
! 9a967352e4dc2ea71978dc00daf8f7b6  gcc/testsuite/g++.dg/cpp2a/paren-init18.C
! 6995f9f16a016bbef6245fea82dbb032  gcc/testsuite/g++.dg/cpp2a/paren-init19.C
! b55418b30a96ebc7599d984f6138a30c  gcc/testsuite/g++.dg/cpp2a/paren-init2.C
! d0d10a2ce03d090730a5b999d36630ba  gcc/testsuite/g++.dg/cpp2a/paren-init20.C
! 0e964dd27763ab7bcaf0f701de0cba6e  gcc/testsuite/g++.dg/cpp2a/paren-init21.C
! 1ac578b2a50f4964b32e3f1fdeb0c807  gcc/testsuite/g++.dg/cpp2a/paren-init22.C
! fb97148b8730f6500483ca95c9c455a0  gcc/testsuite/g++.dg/cpp2a/paren-init23.C
! 6098aee11f8f52c2d1ed1af978aca69a  gcc/testsuite/g++.dg/cpp2a/paren-init24.C
! a07cd1aa6629ef1d133dd1bdfa035093  gcc/testsuite/g++.dg/cpp2a/paren-init25.C
! 7b5ea5f8954cb0985c8ee379c61a6d89  gcc/testsuite/g++.dg/cpp2a/paren-init26.C
! 67184075d06cda1363ed1529aaccf14e  gcc/testsuite/g++.dg/cpp2a/paren-init3.C
! 956f48634b09ca0119ccfc5158ba3b46  gcc/testsuite/g++.dg/cpp2a/paren-init4.C
! c15f28b443dd09680b8521febe04ae4e  gcc/testsuite/g++.dg/cpp2a/paren-init5.C
! 9820254026895db928f6b9f4e23298c7  gcc/testsuite/g++.dg/cpp2a/paren-init6.C
! c0ccbb80bb4919c0518f51d715d0177e  gcc/testsuite/g++.dg/cpp2a/paren-init7.C
! cd90c5ada6be81e3ad3a5a4d393672bc  gcc/testsuite/g++.dg/cpp2a/paren-init8.C
! f000e2a675b3a60670876a40b578823b  gcc/testsuite/g++.dg/cpp2a/paren-init9.C
! 57c2192944acf328df3f747bc59a3e3d  gcc/testsuite/g++.dg/cpp2a/pr88534.C
! fd07f3346ebca247b445c7db0b17b5b2  gcc/testsuite/g++.dg/cpp2a/pr88537.C
! 13ae5aaf7dca0a1630ba951d7eb1285a  gcc/testsuite/g++.dg/cpp2a/pr89913.C
  0b76f09e4e3095958613ee48842ded89  gcc/testsuite/g++.dg/cpp2a/ptrmem1.C
  da15d1527c3c507a9553f42e04caab59  gcc/testsuite/g++.dg/cpp2a/ptrmem1a.C
  8a099b90a43fdebc8971953e67a02c98  gcc/testsuite/g++.dg/cpp2a/range-for1.C
--- 16284,16387 ----
  9318f81f05d77350f58751e060980401  gcc/testsuite/g++.dg/cpp2a/no_unique_address7.C
  eae4af23fdda50f9fc7fe629f33c9c57  gcc/testsuite/g++.dg/cpp2a/no_unique_address7a.C
  5a41d496a4c136629867a07c791d2d45  gcc/testsuite/g++.dg/cpp2a/no_unique_address8.C
! 25c2443a2983afb243dcbf172501bce6  gcc/testsuite/g++.dg/cpp2a/no_unique_address9.C
! 2717793c6be5004e0bf2ffade512583f  gcc/testsuite/g++.dg/cpp2a/nodiscard-constructor1.C
! 96c20effe8d6cded483f3dd47fffcdf8  gcc/testsuite/g++.dg/cpp2a/nodiscard-constructor2.C
! e62646013a184c789932c992b3a78a00  gcc/testsuite/g++.dg/cpp2a/nodiscard-once.C
! bb9c8f19f3d33b56fadd1fd415391bad  gcc/testsuite/g++.dg/cpp2a/nodiscard-reason-nonstring.C
! 0e71f2f5f3d4746777dace7a1bd7d922  gcc/testsuite/g++.dg/cpp2a/nodiscard-reason-only-one.C
! ba1604c5e001a8e2d0ac4a1d96b8ef4a  gcc/testsuite/g++.dg/cpp2a/nodiscard-reason.C
! 92acf70265f44c6269d81727fc45ec65  gcc/testsuite/g++.dg/cpp2a/nontype-class-defarg1.C
! 289612441c6058a96bbc8a881af74702  gcc/testsuite/g++.dg/cpp2a/nontype-class-union1.C
! 3683e4a5274766aeaa901f8f9eae4859  gcc/testsuite/g++.dg/cpp2a/nontype-class1.C
! 2fb0684799fa01275e6f99a373ec6284  gcc/testsuite/g++.dg/cpp2a/nontype-class10.C
! 08f03b29c19900b870836d94a4f5b81e  gcc/testsuite/g++.dg/cpp2a/nontype-class11.C
! 965afbd6e6b3971c52cb8835ae9c65dd  gcc/testsuite/g++.dg/cpp2a/nontype-class12.C
! c20fb0165ce8d3df0ce80cee9daeba1b  gcc/testsuite/g++.dg/cpp2a/nontype-class13.C
! 6eceabf44dc29c27a95443c47fee2f22  gcc/testsuite/g++.dg/cpp2a/nontype-class14.C
! a5d21bca44952ef8adb083c593512635  gcc/testsuite/g++.dg/cpp2a/nontype-class15.C
! 77fa18b6e9490711e459635b1f5b9db0  gcc/testsuite/g++.dg/cpp2a/nontype-class16.C
! b99d85c36b91961cbc2493398734d5db  gcc/testsuite/g++.dg/cpp2a/nontype-class17.C
! a3f48ed441ce59c70584f08f2be5d8ac  gcc/testsuite/g++.dg/cpp2a/nontype-class18.C
! aaf2720490f0ac97b963e373369cbd99  gcc/testsuite/g++.dg/cpp2a/nontype-class19.C
! c44a33bd71563a30a4217b652bf42938  gcc/testsuite/g++.dg/cpp2a/nontype-class2.C
! 52146bac1c05784f8f54bf24f0ad561b  gcc/testsuite/g++.dg/cpp2a/nontype-class20.C
! cebbbfd7352695795162e450a396c11c  gcc/testsuite/g++.dg/cpp2a/nontype-class21.C
! fe73288d02727ff9145f5982811c416f  gcc/testsuite/g++.dg/cpp2a/nontype-class22.C
! 559e986511a16c20afcd52c8d811ea0b  gcc/testsuite/g++.dg/cpp2a/nontype-class23.C
! 9952523271a915d02a66256193873632  gcc/testsuite/g++.dg/cpp2a/nontype-class24.C
! 7971fdbbc796f24f8248a77567735610  gcc/testsuite/g++.dg/cpp2a/nontype-class25.C
! 8fff05dcf342dce62c23c4279ebadc5c  gcc/testsuite/g++.dg/cpp2a/nontype-class26.C
! 67c73873e6247c0fcd0ff283d6236efa  gcc/testsuite/g++.dg/cpp2a/nontype-class27.C
! 9072f3977b94900a417c572976f174f6  gcc/testsuite/g++.dg/cpp2a/nontype-class28.C
! e7b7d630b069cfa3b35bbb6df98d1f42  gcc/testsuite/g++.dg/cpp2a/nontype-class29.C
! 98608a860cc12faefde09c0bb99898aa  gcc/testsuite/g++.dg/cpp2a/nontype-class3.C
! f72011b47e640dca16a0febecd9db42d  gcc/testsuite/g++.dg/cpp2a/nontype-class30.C
! fa369e2856ae3e05afdeb4e51f057499  gcc/testsuite/g++.dg/cpp2a/nontype-class31.C
! ea2c08e6fd29f54c1a8a5cad0d76f8b2  gcc/testsuite/g++.dg/cpp2a/nontype-class32.C
! 663ede0219b81f73cd344c92bdba3d33  gcc/testsuite/g++.dg/cpp2a/nontype-class33.C
! 390290377435af19c9336dd8ded3eee0  gcc/testsuite/g++.dg/cpp2a/nontype-class34.C
! 5baaa516a91678b2d478b1025e5e52bc  gcc/testsuite/g++.dg/cpp2a/nontype-class35.C
! 35b6337aa2140010aa590e186b8f4246  gcc/testsuite/g++.dg/cpp2a/nontype-class36.C
! ce8d3a2faecdda617d9b5c543a6edcc3  gcc/testsuite/g++.dg/cpp2a/nontype-class37.C
! 3c78de97468a94e2bbf8833bd8d31e4f  gcc/testsuite/g++.dg/cpp2a/nontype-class38.C
! 44cc10fde42b8f5a16094c4febf8b726  gcc/testsuite/g++.dg/cpp2a/nontype-class39.C
! 9b45793f5224c814c2a1573efc122d48  gcc/testsuite/g++.dg/cpp2a/nontype-class4.C
  f113107fa400cb6a116e20f7dfa67f7b  gcc/testsuite/g++.dg/cpp2a/nontype-class40.C
! 7286d508630c80ed19174fc66e53be56  gcc/testsuite/g++.dg/cpp2a/nontype-class41.C
! fdbb14f57371ab3bfa7ac79ae1fbee3e  gcc/testsuite/g++.dg/cpp2a/nontype-class42.C
! 0414deef1719d066d7ffbeb2c14e1fe3  gcc/testsuite/g++.dg/cpp2a/nontype-class43.C
! f748a095405dd580be1ea5ce646c26bb  gcc/testsuite/g++.dg/cpp2a/nontype-class44.C
! 1724161e3c4a13c45aa669a07a0bf4a5  gcc/testsuite/g++.dg/cpp2a/nontype-class5.C
! 86d91c051a62b8d9f32d57f4047a6534  gcc/testsuite/g++.dg/cpp2a/nontype-class6.C
! c78f774590fd68025c389ab4361f5714  gcc/testsuite/g++.dg/cpp2a/nontype-class7.C
! 44a04e768668501da12fed78805a7d70  gcc/testsuite/g++.dg/cpp2a/nontype-class8.C
! bae1c36e9d9dcb762070154c47a6b3c3  gcc/testsuite/g++.dg/cpp2a/nontype-class9.C
! 59cd71252db72b562133526c9a064fa0  gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
! 8958094420e548b2425f24fcc5fe5fd3  gcc/testsuite/g++.dg/cpp2a/nontype-subob1.C
! 03bb531700d42cc1b3d2850aaf3f6cd7  gcc/testsuite/g++.dg/cpp2a/nontype-subob2.C
! de60a968b199113b10c3f84c0d977aa5  gcc/testsuite/g++.dg/cpp2a/paren-init1.C
! 61e3175dfefc553be6493f382717ed21  gcc/testsuite/g++.dg/cpp2a/paren-init10.C
! dfdcdca8f94f36a1aa0a0e2c89d39cd4  gcc/testsuite/g++.dg/cpp2a/paren-init11.C
! 5b7ecb82354eb3ac931111d8c780272a  gcc/testsuite/g++.dg/cpp2a/paren-init12.C
! 6e9e1a857aced2427a46e9305b30201c  gcc/testsuite/g++.dg/cpp2a/paren-init13.C
  0156582670344863057fbed622cc7237  gcc/testsuite/g++.dg/cpp2a/paren-init14.C
! 9ee7ed4e6850065510842e41877c41e9  gcc/testsuite/g++.dg/cpp2a/paren-init15.C
! 14636913df46fef8a2ebec6b6af7119a  gcc/testsuite/g++.dg/cpp2a/paren-init16.C
  78e96d8ec19a073664f86d5b6befd0c8  gcc/testsuite/g++.dg/cpp2a/paren-init17.C
! 209776d9f0a8a1f864ef7f1861600939  gcc/testsuite/g++.dg/cpp2a/paren-init18.C
! eccbcddee3093058901b1a40c12da4aa  gcc/testsuite/g++.dg/cpp2a/paren-init19.C
! 63d476fe1a31940a9cd2ca38be796f44  gcc/testsuite/g++.dg/cpp2a/paren-init2.C
! 98866091144494400e49790e8e8c3849  gcc/testsuite/g++.dg/cpp2a/paren-init20.C
! 4711da067217c1285d684a830364301b  gcc/testsuite/g++.dg/cpp2a/paren-init21.C
! 2a68427cb002d270fadc24d2051c3029  gcc/testsuite/g++.dg/cpp2a/paren-init22.C
! 03d5a1c006dd9ab9c8a727dc17cc9cdb  gcc/testsuite/g++.dg/cpp2a/paren-init23.C
! 9626afb53fc8be258ab34e8196f85122  gcc/testsuite/g++.dg/cpp2a/paren-init24.C
! f848c9a557cf406ff9a831132b662f3a  gcc/testsuite/g++.dg/cpp2a/paren-init25.C
! a5e28670c00918b42598d57217162587  gcc/testsuite/g++.dg/cpp2a/paren-init26.C
! 20be13609c21f6b4fa9e6fae28365221  gcc/testsuite/g++.dg/cpp2a/paren-init27.C
! 10142534741226e064d434be61c623d2  gcc/testsuite/g++.dg/cpp2a/paren-init28.C
! 20452dd218480f199ecf397e8f1908d7  gcc/testsuite/g++.dg/cpp2a/paren-init29.C
! c969e723b51508fb98bbc54b3b088917  gcc/testsuite/g++.dg/cpp2a/paren-init3.C
! 78b7df1370f4c2cfa0b15ff19adfe016  gcc/testsuite/g++.dg/cpp2a/paren-init30.C
! ea5c8a084e134dc0226629054f6b8db0  gcc/testsuite/g++.dg/cpp2a/paren-init31.C
! 3bab30fa9a6af777c4820d7f1a9ff74e  gcc/testsuite/g++.dg/cpp2a/paren-init32.C
! 20bad650eefd5a3661ccc8ff74f4ee5b  gcc/testsuite/g++.dg/cpp2a/paren-init33.C
! 5dcb532d61f7322453365b630b7eeec1  gcc/testsuite/g++.dg/cpp2a/paren-init34.C
! 21e71f3162abd9751094104c0159c323  gcc/testsuite/g++.dg/cpp2a/paren-init35.C
! 0ef61146c2fa955bc93665db5f659444  gcc/testsuite/g++.dg/cpp2a/paren-init36.C
! 57eb2722cf6f699bdfa2068b9a72dcfb  gcc/testsuite/g++.dg/cpp2a/paren-init37.C
! f917e8e53ce100d9b00585ebdb34ff7a  gcc/testsuite/g++.dg/cpp2a/paren-init4.C
! 27b16b7687e7dee72f901646937411af  gcc/testsuite/g++.dg/cpp2a/paren-init5.C
! 7b6aa3241d306dea0df872ed947e3df4  gcc/testsuite/g++.dg/cpp2a/paren-init6.C
! 98005d747053b3076aa53928776efb7e  gcc/testsuite/g++.dg/cpp2a/paren-init7.C
! ddb0c78842f6b4e3e4606849bc1a4a82  gcc/testsuite/g++.dg/cpp2a/paren-init8.C
! fc8ccbfe7f14dd4a41ff708c5a05b226  gcc/testsuite/g++.dg/cpp2a/paren-init9.C
! 7d1c1719a1c3e44cf69662819769f8a5  gcc/testsuite/g++.dg/cpp2a/pr88534.C
! 3a4139bbe15eef2dce96cb020b2681f7  gcc/testsuite/g++.dg/cpp2a/pr88537.C
! b94ce4741edeca1190c4590e425522dc  gcc/testsuite/g++.dg/cpp2a/pr89913.C
! 3e07a78a62c8fb8bb5f05d3360073723  gcc/testsuite/g++.dg/cpp2a/pr98082.C
! d5943026b7bd9f1357d76ae6399779ce  gcc/testsuite/g++.dg/cpp2a/pr99833.C
  0b76f09e4e3095958613ee48842ded89  gcc/testsuite/g++.dg/cpp2a/ptrmem1.C
  da15d1527c3c507a9553f42e04caab59  gcc/testsuite/g++.dg/cpp2a/ptrmem1a.C
  8a099b90a43fdebc8971953e67a02c98  gcc/testsuite/g++.dg/cpp2a/range-for1.C
*************** bf80b786a1a4ec9eac5fda8277196264  gcc/te
*** 15496,15603 ****
  2bd66f342ffc69804585e162a722f4b9  gcc/testsuite/g++.dg/cpp2a/range-for7.C
  3c0149d6d960f694469d39f927642d6f  gcc/testsuite/g++.dg/cpp2a/range-for8.C
  56bf7a295364a50ff08473d2937104c0  gcc/testsuite/g++.dg/cpp2a/range-for9.C
! 18fbf129962aa3150977503402599ef6  gcc/testsuite/g++.dg/cpp2a/spaceship-constexpr1.C
! 4881fc2219a4ceb65efa64e148e42603  gcc/testsuite/g++.dg/cpp2a/spaceship-constexpr2.C
  53471c31db550d658146ff8dbe979243  gcc/testsuite/g++.dg/cpp2a/spaceship-constexpr3.C
! 587f65922226a6d28c81130849ff1415  gcc/testsuite/g++.dg/cpp2a/spaceship-decltype1.C
! ed0eeef840713a14ea0467ceb8b3b471  gcc/testsuite/g++.dg/cpp2a/spaceship-eq1.C
! 533959e40173ca97743ed20e4a635bf7  gcc/testsuite/g++.dg/cpp2a/spaceship-eq1a.C
! 9e2287ccbeadf8c866c06c1e25a2a7da  gcc/testsuite/g++.dg/cpp2a/spaceship-eq2.C
! 8ffbd01e8f35f13852b9047143f9d6d9  gcc/testsuite/g++.dg/cpp2a/spaceship-eq3.C
! 8a44ffdfd2ebdf36315097ca18ce2854  gcc/testsuite/g++.dg/cpp2a/spaceship-eq4.C
! de9cd6440bb711ef2b2c609014012815  gcc/testsuite/g++.dg/cpp2a/spaceship-eq5.C
! 3d4f30de034c307366a26bd1a29f122e  gcc/testsuite/g++.dg/cpp2a/spaceship-eq6.C
! c71a66368f4e9464ded202d9a701d2ec  gcc/testsuite/g++.dg/cpp2a/spaceship-eq7.C
! 24169634f1de0e7c7bacdff0d74572ea  gcc/testsuite/g++.dg/cpp2a/spaceship-eq8.C
! ccca39496e50c0a043d542392e29e9d0  gcc/testsuite/g++.dg/cpp2a/spaceship-eq9.C
! a0f605b21fa0056a2fc69f1b7f659760  gcc/testsuite/g++.dg/cpp2a/spaceship-err1.C
! 4133b0e37dcd6061463fe1c2935dea61  gcc/testsuite/g++.dg/cpp2a/spaceship-err2.C
! 850cf7e8627939799f2de96807c1d1da  gcc/testsuite/g++.dg/cpp2a/spaceship-err3.C
! 7b9f9bc6c5c8d11177b4b61541c95605  gcc/testsuite/g++.dg/cpp2a/spaceship-err4.C
  ebb778c7a30944f50dc09ed15f9d75bd  gcc/testsuite/g++.dg/cpp2a/spaceship-friend1.C
  256e727cc84c1b3653dac7bcdf88436a  gcc/testsuite/g++.dg/cpp2a/spaceship-ref1.C
! 34c09939c8689ee0a45a2e7360ae2eea  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite1.C
  5ed489f0b3d4ebc68b2d0d0e9af9363b  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite2.C
! 82abd87990b7c0b98bc801bee9b68ca1  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite3.C
! e417634700c010b305515a00a6dac374  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite4.C
  4f54ab89b8fefcf1d8169983349ee500  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite5.C
! 07f1ce1aaf2454a1e8490b58116b1530  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar1-neg.C
! 0afcd0b3480e9fb572f605b1fe134ce8  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar1.C
! 0779e353a53d9e06bce3f450ed88dbd8  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar1a.C
! eb1889aa7cdceb6ad414017e27e78c4d  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar2.C
! 62050b11a77640e707d480b084d3a421  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar3.C
! 8d9b7f86a23347338680eecb1dbd67b8  gcc/testsuite/g++.dg/cpp2a/spaceship-sfinae1.C
! 6b0b0c252b23a36c706f1655cbe95d0a  gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg1.C
! f5d80b2a9f3b114c72870af8328643d5  gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg2.C
! 78f037494c017782d2798575fc6cdec8  gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg3.C
  15bc319256750cf3a9caf5d852b30aa1  gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg4.C
! 697bd9e7e306365958b40057a0d7b55b  gcc/testsuite/g++.dg/cpp2a/spaceship-synth1.C
! 61aa63111778f4132d40487bc4745e46  gcc/testsuite/g++.dg/cpp2a/spaceship-synth1a.C
! 4ac1cba9a4694cc58050cb82757fb6ee  gcc/testsuite/g++.dg/cpp2a/spaceship-synth2.C
! 47eae24e3da5c84424909f73bafe6cb5  gcc/testsuite/g++.dg/cpp2a/spaceship-synth2a.C
! 881a7649d93edbfa1135b9b21fd0c2bf  gcc/testsuite/g++.dg/cpp2a/spaceship-synth2b.C
! 1834bf54678a284f6306c0c07cb5d40b  gcc/testsuite/g++.dg/cpp2a/spaceship-synth3.C
! 4d26d3fd9a6e1e8f0d3fe05632af731d  gcc/testsuite/g++.dg/cpp2a/spaceship-synth3a.C
! af8e8c7d6ff8ce27e8a13199eb6a9f13  gcc/testsuite/g++.dg/cpp2a/spaceship-synth4.C
! 21ae1934f1ba13d90c4439f2bd089a48  gcc/testsuite/g++.dg/cpp2a/spaceship-synth5.C
! dd387c28d3900e48cdeb39a89a6ebd13  gcc/testsuite/g++.dg/cpp2a/spaceship-synth6.C
! d94f618e0f3aac111fc1d3377af6c9c9  gcc/testsuite/g++.dg/cpp2a/spaceship-synth7.C
! a75a1063a830b65f52d846e485896b4b  gcc/testsuite/g++.dg/cpp2a/spaceship-synth8.C
  e6eff6554eb70bbd03e6aacbb13adf31  gcc/testsuite/g++.dg/cpp2a/spaceship-synth9.C
  15d8852abeec5772820ae98eb7eaba47  gcc/testsuite/g++.dg/cpp2a/spaceship-union1.C
! 1d30652a622c913e10ef22e11297e99e  gcc/testsuite/g++.dg/cpp2a/spaceship-vec1.C
! 1e1c8532eb7a2db750cd330cc1cf23d0  gcc/testsuite/g++.dg/cpp2a/spaceship-weak1.C
! a30bddb8eb14d1379e07b91b8b55f74f  gcc/testsuite/g++.dg/cpp2a/srcloc1.C
! 0099a81f985bdef83a75bc097461f0f6  gcc/testsuite/g++.dg/cpp2a/srcloc10.C
! eb831fc4eba526593c8bc3aeaef7f069  gcc/testsuite/g++.dg/cpp2a/srcloc11.C
! 0c1a1b58c46272cfa5e104f22703bf83  gcc/testsuite/g++.dg/cpp2a/srcloc12.C
! cc2aca21552d9e2beb90f3c4903b6d7e  gcc/testsuite/g++.dg/cpp2a/srcloc13.C
! 5657fc9df77f6a21709e885f9f3e2106  gcc/testsuite/g++.dg/cpp2a/srcloc14.C
! 87dfbc65759a4daa448a68d5287dede3  gcc/testsuite/g++.dg/cpp2a/srcloc2.C
! bc6deac82773d6e2c0cf08f63abcb80a  gcc/testsuite/g++.dg/cpp2a/srcloc3.C
! 05079901e37b9837e281d5b61901765a  gcc/testsuite/g++.dg/cpp2a/srcloc4.C
! 4867634940561d91316cb0abd1abb41b  gcc/testsuite/g++.dg/cpp2a/srcloc5.C
! 6d86946bb1212abdb91aaf6847e33f38  gcc/testsuite/g++.dg/cpp2a/srcloc6.C
! 5fa6832caf8658492f803bf084471531  gcc/testsuite/g++.dg/cpp2a/srcloc7.C
! f3aa0f38bd83add476351d76a5bf4004  gcc/testsuite/g++.dg/cpp2a/srcloc8.C
! 3ece3972fed1cbc16a0f3debeaff9c81  gcc/testsuite/g++.dg/cpp2a/srcloc9.C
! 75725712e94ed2ad3d99aa2fecd9696b  gcc/testsuite/g++.dg/cpp2a/typename1.C
! 81de08be5823e555799ee3d4efce1e85  gcc/testsuite/g++.dg/cpp2a/typename10.C
! 8c5478e2e42361a7e4e981020f2e9f3c  gcc/testsuite/g++.dg/cpp2a/typename11.C
! fb1be0bd9733b177390a3f38f6ba644f  gcc/testsuite/g++.dg/cpp2a/typename12.C
! 572f50d6dfa3c4f0fdaaf80a8a59f6b4  gcc/testsuite/g++.dg/cpp2a/typename13.C
! 6a5487c6fdec11b67262939db0faf8ea  gcc/testsuite/g++.dg/cpp2a/typename14.C
! 7862f0ba0eaba818dce7841823579992  gcc/testsuite/g++.dg/cpp2a/typename15.C
! e9ef08a5ea78f77bc5db34abcd097585  gcc/testsuite/g++.dg/cpp2a/typename16.C
! 725070b07fcd1d002a28daca9cf7dbc9  gcc/testsuite/g++.dg/cpp2a/typename17.C
! 3d56d8b742236c88b155d220c14e91eb  gcc/testsuite/g++.dg/cpp2a/typename2.C
! 7b164ec96eddef0d3d54141d1fc6d8ab  gcc/testsuite/g++.dg/cpp2a/typename3.C
! 3825378b5ab0b376980e999134b361e7  gcc/testsuite/g++.dg/cpp2a/typename4.C
! 2040d0f5f1c5274c7d35359c20bea0c8  gcc/testsuite/g++.dg/cpp2a/typename5.C
! b3c6c8b5938eee52a69b07b50478e16c  gcc/testsuite/g++.dg/cpp2a/typename6.C
! 65f5d22e74121a74c86b198b50452b12  gcc/testsuite/g++.dg/cpp2a/typename7.C
! 119a0397640f4f2f7fa34816f5f7c490  gcc/testsuite/g++.dg/cpp2a/typename8.C
! 5abf788d7226625c5f7c99383518e5a5  gcc/testsuite/g++.dg/cpp2a/typename9.C
  68bb72590987e461c557730fb61a660a  gcc/testsuite/g++.dg/cpp2a/ucn1.C
! f79e4f1c69def9ab965c9d570fcd4717  gcc/testsuite/g++.dg/cpp2a/ucn2.C
! 3dbe99cdea34b8fadc3ecd11bb1e1380  gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C
! d0524cdec70fb41523aae371548f0249  gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C
! 4105b2b21629c5122b5eac396ca2ace5  gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad.C
! fc875772e280d6860400721ab59c2a23  gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg.C
! 99c1330ed710ed734bb2976909ac6cd2  gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg2.C
! 4d45da3e24f1267e48c17658fd5bb4a9  gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp.C
! 75b74988ee548efb6f2a0e209db0c83f  gcc/testsuite/g++.dg/cpp2a/volatile1.C
! 8e4abc5980a05aa68b936cca386e4618  gcc/testsuite/g++.dg/cpp2a/volatile2.C
  38a1560b8b9b22be4d576d30a8cef4c3  gcc/testsuite/g++.dg/cpp2a/volatile3.C
! 552e3d266c035e0dbeca3c878bc5a2f5  gcc/testsuite/g++.dg/cpp2a/volatile4.C
  e71a3440857a0df24410cbe91e45c678  gcc/testsuite/g++.dg/debug/anonunion1.C
  e4aee91d21a8cdbd286094f893319c70  gcc/testsuite/g++.dg/debug/const1.C
  2e4398a10938bba8e5fd13cd2d12e691  gcc/testsuite/g++.dg/debug/const2.C
  7d21ffa2ab4a579692d45c2c52190a0d  gcc/testsuite/g++.dg/debug/const3.C
  b196cb4af4d539f545ae961b8905ba24  gcc/testsuite/g++.dg/debug/const4.C
  8c7b9540eb6278b6bd197c3c55ae7945  gcc/testsuite/g++.dg/debug/const5.C
  36f088b22dca6ab78668e7d505839fbd  gcc/testsuite/g++.dg/debug/crash1.C
! ded9c0d2205e8d96e4f9df9e0893f32a  gcc/testsuite/g++.dg/debug/debug.exp
  2b6f3bdb657c8865549db08f96a15223  gcc/testsuite/g++.dg/debug/debug1.C
  cece96666e504d9287aaadf8a4855138  gcc/testsuite/g++.dg/debug/debug2.C
  b5c1d1e26252e6e306ee37c885cc449b  gcc/testsuite/g++.dg/debug/debug3.C
--- 16402,16532 ----
  2bd66f342ffc69804585e162a722f4b9  gcc/testsuite/g++.dg/cpp2a/range-for7.C
  3c0149d6d960f694469d39f927642d6f  gcc/testsuite/g++.dg/cpp2a/range-for8.C
  56bf7a295364a50ff08473d2937104c0  gcc/testsuite/g++.dg/cpp2a/range-for9.C
! 23d437af665cfd4b1086d4497d4e8fe5  gcc/testsuite/g++.dg/cpp2a/spaceship-constexpr1.C
! 860dab1621019c38393bc07b92b6d02f  gcc/testsuite/g++.dg/cpp2a/spaceship-constexpr2.C
  53471c31db550d658146ff8dbe979243  gcc/testsuite/g++.dg/cpp2a/spaceship-constexpr3.C
! 494f62ed4d3c86eb9614203922c107f6  gcc/testsuite/g++.dg/cpp2a/spaceship-decltype1.C
! 78449a6026dc94a1940145f131e40dbd  gcc/testsuite/g++.dg/cpp2a/spaceship-eq1.C
! 7ef8ca64f3d128751171c4bc6c6d1dc9  gcc/testsuite/g++.dg/cpp2a/spaceship-eq10.C
! 35b5b00dc11e88e35813caed81c920fc  gcc/testsuite/g++.dg/cpp2a/spaceship-eq1a.C
! da366bbf37859e5c77c24a8138c72180  gcc/testsuite/g++.dg/cpp2a/spaceship-eq2.C
! 930eb55b3ccd27e9ad1d90ede793b4f1  gcc/testsuite/g++.dg/cpp2a/spaceship-eq3.C
! 2e352e95da1c82415807443658c1a83a  gcc/testsuite/g++.dg/cpp2a/spaceship-eq4.C
! 08a0480f8c4995afec7c957681a59391  gcc/testsuite/g++.dg/cpp2a/spaceship-eq5.C
! 1d81eaad3295957fc272634f08a3559c  gcc/testsuite/g++.dg/cpp2a/spaceship-eq6.C
! 5e8683c564701688d34f215f2c8fdcce  gcc/testsuite/g++.dg/cpp2a/spaceship-eq7.C
! 458ab3bc053c8e5b29b32609f049961e  gcc/testsuite/g++.dg/cpp2a/spaceship-eq8.C
! 039f81184a3e938f07fdddb2d0d4dc7a  gcc/testsuite/g++.dg/cpp2a/spaceship-eq9.C
! 5f4d4d14ca51e77019d54b7cf6a9e8ab  gcc/testsuite/g++.dg/cpp2a/spaceship-err1.C
! fec9ec94498ae1aef80337be531cfa79  gcc/testsuite/g++.dg/cpp2a/spaceship-err2.C
! f0b381dc1068e13197aafa5434301a0e  gcc/testsuite/g++.dg/cpp2a/spaceship-err3.C
! 810bc29b38dab05c72043929f15628b5  gcc/testsuite/g++.dg/cpp2a/spaceship-err4.C
! a23752018562dba0fd625f34b6aaf89b  gcc/testsuite/g++.dg/cpp2a/spaceship-err5.C
! c0498bdab0da3d0f2726f005d8cde8c7  gcc/testsuite/g++.dg/cpp2a/spaceship-err6.C
  ebb778c7a30944f50dc09ed15f9d75bd  gcc/testsuite/g++.dg/cpp2a/spaceship-friend1.C
+ e980e1da8fb13bc55d58a2c9c4789bb6  gcc/testsuite/g++.dg/cpp2a/spaceship-p1186.C
  256e727cc84c1b3653dac7bcdf88436a  gcc/testsuite/g++.dg/cpp2a/spaceship-ref1.C
! 9c7a76d7702f9a61e3ce4503195a6106  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite1.C
  5ed489f0b3d4ebc68b2d0d0e9af9363b  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite2.C
! 9b7dacddefd20fb8386155f921a7def1  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite3.C
! 04933aadceb65a4efdba3b45f2497b97  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite4.C
  4f54ab89b8fefcf1d8169983349ee500  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite5.C
! 63d1925bb0c4627f5897eec1b93f80c2  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar1-neg.C
! d03a0af017f2ed1b2a80044fd5a5cdbb  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar1.C
! ec383069980676d6ec1898483b690eb5  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar1a.C
! f63b5565ab0bb6d2125aa5a844f18e62  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar2.C
! 4e73ff4fb43ecf6cf74294bda1fffe61  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar3.C
! 65d5bce771b3e48a893d1ec638885d3a  gcc/testsuite/g++.dg/cpp2a/spaceship-sfinae1.C
! a1b5541b791ba1834869a1ceeb340ddc  gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg1.C
! e6037687c8367081183d5ad6f709b4a7  gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg2.C
! 48cc4340eb8546a39438777b57d87c47  gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg3.C
  15bc319256750cf3a9caf5d852b30aa1  gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg4.C
! 853bb4d901c7e141b3533566d35db6c5  gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg5.C
! fbe4f142dfdc31d389f336c3a2132127  gcc/testsuite/g++.dg/cpp2a/spaceship-synth1.C
! 56777e80c383d43521bd39e52f0c078c  gcc/testsuite/g++.dg/cpp2a/spaceship-synth10.C
! 8f91979209d8d288d5c97266ecd046d7  gcc/testsuite/g++.dg/cpp2a/spaceship-synth1a.C
! 5daa0011ffb3db93835d71c071ec0d71  gcc/testsuite/g++.dg/cpp2a/spaceship-synth2.C
! 6a6f4a83eb2e888266655b23bebfc463  gcc/testsuite/g++.dg/cpp2a/spaceship-synth2a.C
! 11472284858852761b17d91d0241a879  gcc/testsuite/g++.dg/cpp2a/spaceship-synth2b.C
! 978fce503fa7c4ff024a23077fd1ea4e  gcc/testsuite/g++.dg/cpp2a/spaceship-synth3.C
! a67be1d60ec528984146c8bdd51cea55  gcc/testsuite/g++.dg/cpp2a/spaceship-synth3a.C
! ab1df3b823c1b3eb75d2ed7f56e1db29  gcc/testsuite/g++.dg/cpp2a/spaceship-synth4.C
! 9cf4b21e47e7125f4ac79cc64be706db  gcc/testsuite/g++.dg/cpp2a/spaceship-synth5.C
! fa24ee04269507190905ce50ace9fb4d  gcc/testsuite/g++.dg/cpp2a/spaceship-synth6.C
! 1b6f8df9a6ce77ca9e241e892b9a4dbb  gcc/testsuite/g++.dg/cpp2a/spaceship-synth7.C
! 83f77ef2823ba7737df735f6162a6a41  gcc/testsuite/g++.dg/cpp2a/spaceship-synth8.C
  e6eff6554eb70bbd03e6aacbb13adf31  gcc/testsuite/g++.dg/cpp2a/spaceship-synth9.C
  15d8852abeec5772820ae98eb7eaba47  gcc/testsuite/g++.dg/cpp2a/spaceship-union1.C
! 894dc2618d8240d82bbbd6fa81e459f0  gcc/testsuite/g++.dg/cpp2a/spaceship-vec1.C
! bca03d65e166f32cbeed0699c7c57e41  gcc/testsuite/g++.dg/cpp2a/spaceship-weak1.C
! 450162c9df6c789ff19c8cbd1f169756  gcc/testsuite/g++.dg/cpp2a/srcloc1.C
! 249b6495683b7831ab695dd97edb19d3  gcc/testsuite/g++.dg/cpp2a/srcloc10.C
! 804144cce9b1f47744f67af4ef5dbdba  gcc/testsuite/g++.dg/cpp2a/srcloc11.C
! 998dcd7a7b593ce302b0b74e63d1d798  gcc/testsuite/g++.dg/cpp2a/srcloc12.C
! 2b422344645b5d1654bece69b8f3ca27  gcc/testsuite/g++.dg/cpp2a/srcloc13.C
! 56a81e759dacca04e0c82bbba386b431  gcc/testsuite/g++.dg/cpp2a/srcloc14.C
! 71c58519c119b67982e201d387b37c21  gcc/testsuite/g++.dg/cpp2a/srcloc15.C
! 725c5c46c434d5e1d0f5af34104e5583  gcc/testsuite/g++.dg/cpp2a/srcloc16.C
! e13ad9cd7ad81ba583e7c26eafc6ec63  gcc/testsuite/g++.dg/cpp2a/srcloc17.C
! a8ec3f289340278b03ee97c8ebff51ae  gcc/testsuite/g++.dg/cpp2a/srcloc18.C
! c951a3e5bb4bc2d67ee9dcf55822ab1e  gcc/testsuite/g++.dg/cpp2a/srcloc19.C
! 73b3d0055024c3e89cf343ad697d921f  gcc/testsuite/g++.dg/cpp2a/srcloc2.C
! bdcc6dcb33b016ca165853f376d37a46  gcc/testsuite/g++.dg/cpp2a/srcloc3.C
! 105c3578c5e06652ad38da066c2e6f4b  gcc/testsuite/g++.dg/cpp2a/srcloc4.C
! b10f83b6961f4d7c400d206766b3878a  gcc/testsuite/g++.dg/cpp2a/srcloc5.C
! bcc53868897c6b7b0d9524d3ab3d2f81  gcc/testsuite/g++.dg/cpp2a/srcloc6.C
! da9e539e26cc915ffc354969e83b6629  gcc/testsuite/g++.dg/cpp2a/srcloc7.C
! e33d8dfcd9d9e756757f2e739e60b790  gcc/testsuite/g++.dg/cpp2a/srcloc8.C
! ac8e3b7b16797ead0bcffd21ca5f79b6  gcc/testsuite/g++.dg/cpp2a/srcloc9.C
! 5de890e01a292e99b75abedf4b2aa561  gcc/testsuite/g++.dg/cpp2a/typename1.C
! da817b2e1901bc27f9d38ebf5e51459b  gcc/testsuite/g++.dg/cpp2a/typename10.C
! 736ca6dbc6d6e66b218a41d3aaeec22a  gcc/testsuite/g++.dg/cpp2a/typename11.C
! 5b685c938fd2aebaee819c8a73186ecd  gcc/testsuite/g++.dg/cpp2a/typename12.C
! cd160b995427f2fd25958ef79cc162ee  gcc/testsuite/g++.dg/cpp2a/typename13.C
! f31edb89ffa878f30cd23fb95ebfd690  gcc/testsuite/g++.dg/cpp2a/typename14.C
! 680346e0e71a16f8e7184e488de00f5e  gcc/testsuite/g++.dg/cpp2a/typename15.C
! 17737e53be1a657293a7525f40ec6458  gcc/testsuite/g++.dg/cpp2a/typename16.C
! c37114f2c299b1353e4ae097e4a91dd7  gcc/testsuite/g++.dg/cpp2a/typename17.C
! d224c0d892dce00b86c27b7273cfc4ec  gcc/testsuite/g++.dg/cpp2a/typename18.C
! 48c8feb514d2bd212fffb60d1e5bdb99  gcc/testsuite/g++.dg/cpp2a/typename19.C
! 9ff514e3692b8417ce58b350b72be55c  gcc/testsuite/g++.dg/cpp2a/typename2.C
! 2e8484718a05b01814f471b1b641a73e  gcc/testsuite/g++.dg/cpp2a/typename3.C
! 4186a029eb5953f4fb36219fb9f70fed  gcc/testsuite/g++.dg/cpp2a/typename4.C
! cf2c88b738d02df2f5de1f7e99cb7bf6  gcc/testsuite/g++.dg/cpp2a/typename5.C
! 48837ddd9c4f7d2b87b1bb9381602d33  gcc/testsuite/g++.dg/cpp2a/typename6.C
! 0ddc2e0e177635387b7bb76b8154ec48  gcc/testsuite/g++.dg/cpp2a/typename7.C
! d5f9722c983a8693c05cb62cb32deda1  gcc/testsuite/g++.dg/cpp2a/typename8.C
! 3804f8b3199ad2e1689f500b100b9c74  gcc/testsuite/g++.dg/cpp2a/typename9.C
  68bb72590987e461c557730fb61a660a  gcc/testsuite/g++.dg/cpp2a/ucn1.C
! 8f3d31e322ecfe76ed9089a1dfcd33b7  gcc/testsuite/g++.dg/cpp2a/ucn2.C
! 0e5c519e73d14664dd7e8b3b68d1c2f4  gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C
! ad2201a1b978f4f4fbdb00d19864f54d  gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C
! 8a7f7465c6acee0050e7da22ab20d5fc  gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad.C
! 4f2ea21c6a4b05f9bb5a6571d4805a8f  gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg.C
! 7f0d1385e1d873dc35e42cfe339b6373  gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg2.C
! d4af70129929097daef5c738f2508ba5  gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp.C
! 8b123b46e3ee970336060676f9af3ef4  gcc/testsuite/g++.dg/cpp2a/using-enum-1.C
! fd7bc6d132436a68e16dbd3cf7dbe4a1  gcc/testsuite/g++.dg/cpp2a/using-enum-2.C
! 22767ec36a28df188bc83c009954898e  gcc/testsuite/g++.dg/cpp2a/using-enum-3.C
! e83eaca9dc6f24d5d311cbc3b0f5e3e8  gcc/testsuite/g++.dg/cpp2a/using-enum-4.C
! 9959db44af19d491600d9dc71df77ac0  gcc/testsuite/g++.dg/cpp2a/using-enum-5.C
! 80a1ff42550802ab580a6397e54ea596  gcc/testsuite/g++.dg/cpp2a/using-enum-6.C
! e0594ebf50b79f339906f3410ba74411  gcc/testsuite/g++.dg/cpp2a/using-enum-7.C
! 2a6d4537e5c7ceafb005d88ac7453264  gcc/testsuite/g++.dg/cpp2a/using-enum-8.C
! eb3624cc3c4aaf45b38420c1d813e807  gcc/testsuite/g++.dg/cpp2a/volatile1.C
! 1268b9025db1cda367f76654228c1829  gcc/testsuite/g++.dg/cpp2a/volatile2.C
  38a1560b8b9b22be4d576d30a8cef4c3  gcc/testsuite/g++.dg/cpp2a/volatile3.C
! 6ef0acb96637db85886dfa5cfceedf60  gcc/testsuite/g++.dg/cpp2a/volatile4.C
! 96dafb009a7feee933cad2b35c2cccf6  gcc/testsuite/g++.dg/cpp2a/volatile5.C
  e71a3440857a0df24410cbe91e45c678  gcc/testsuite/g++.dg/debug/anonunion1.C
+ 8dbd2136c39269d38b72a0226e914678  gcc/testsuite/g++.dg/debug/cleanup1.C
  e4aee91d21a8cdbd286094f893319c70  gcc/testsuite/g++.dg/debug/const1.C
  2e4398a10938bba8e5fd13cd2d12e691  gcc/testsuite/g++.dg/debug/const2.C
  7d21ffa2ab4a579692d45c2c52190a0d  gcc/testsuite/g++.dg/debug/const3.C
  b196cb4af4d539f545ae961b8905ba24  gcc/testsuite/g++.dg/debug/const4.C
  8c7b9540eb6278b6bd197c3c55ae7945  gcc/testsuite/g++.dg/debug/const5.C
  36f088b22dca6ab78668e7d505839fbd  gcc/testsuite/g++.dg/debug/crash1.C
! 23719bc76bc6d533a01b2cc833c3f97b  gcc/testsuite/g++.dg/debug/debug.exp
  2b6f3bdb657c8865549db08f96a15223  gcc/testsuite/g++.dg/debug/debug1.C
  cece96666e504d9287aaadf8a4855138  gcc/testsuite/g++.dg/debug/debug2.C
  b5c1d1e26252e6e306ee37c885cc449b  gcc/testsuite/g++.dg/debug/debug3.C
*************** b7caea13113bd3088703cc54a7f61b52  gcc/te
*** 15607,15620 ****
  fa08fe949e7e3b814b4413eb1c2e0b1e  gcc/testsuite/g++.dg/debug/debug7.C
  f3e5e740f9e7210ccece705c6d548267  gcc/testsuite/g++.dg/debug/debug8.C
  21cf4d633ed522aaeda6d51af07ab604  gcc/testsuite/g++.dg/debug/debug9.C
  e25f237fd34799fd718d0e101e5f81ab  gcc/testsuite/g++.dg/debug/dwarf-eh-personality-1.C
  f00c28023dea45fb37e147045583baca  gcc/testsuite/g++.dg/debug/dwarf2/accessibility1.C
! 9d9776c0c7cab69306c3fde6f15fbe2c  gcc/testsuite/g++.dg/debug/dwarf2/align-1.C
! 18655fdc7297c68ef51ff932fc44e0bf  gcc/testsuite/g++.dg/debug/dwarf2/align-2.C
! 382a78a050a1daa0a151a86fa2c92ca6  gcc/testsuite/g++.dg/debug/dwarf2/align-3.C
! 9544f5f56f3bce8e50adf20a8bf2ef93  gcc/testsuite/g++.dg/debug/dwarf2/align-4.C
! 006d55deed233e994afd3e2a6982bdcc  gcc/testsuite/g++.dg/debug/dwarf2/align-5.C
! bf2220c05d1a85b19612b61b6732ac07  gcc/testsuite/g++.dg/debug/dwarf2/align-6.C
  c20098d8433107f926a8d5fabfb70e3b  gcc/testsuite/g++.dg/debug/dwarf2/anonname1.C
  cc8cc227c23048bcf594a85463fd6374  gcc/testsuite/g++.dg/debug/dwarf2/array-0.C
  6d7f704b3fa1c061e5f4bdaffbb7f0e2  gcc/testsuite/g++.dg/debug/dwarf2/array-1.C
--- 16536,16550 ----
  fa08fe949e7e3b814b4413eb1c2e0b1e  gcc/testsuite/g++.dg/debug/debug7.C
  f3e5e740f9e7210ccece705c6d548267  gcc/testsuite/g++.dg/debug/debug8.C
  21cf4d633ed522aaeda6d51af07ab604  gcc/testsuite/g++.dg/debug/debug9.C
+ c2ba2a83498cf61f2e3d3c04a24507a9  gcc/testsuite/g++.dg/debug/defaulted1.C
  e25f237fd34799fd718d0e101e5f81ab  gcc/testsuite/g++.dg/debug/dwarf-eh-personality-1.C
  f00c28023dea45fb37e147045583baca  gcc/testsuite/g++.dg/debug/dwarf2/accessibility1.C
! 8a063b9e6d4a0a800ac8501b6264ca9e  gcc/testsuite/g++.dg/debug/dwarf2/align-1.C
! 2eec2d4b7a84bcac7a24863eb124075f  gcc/testsuite/g++.dg/debug/dwarf2/align-2.C
! 981b7f3e9053813af7b8af17b4d68165  gcc/testsuite/g++.dg/debug/dwarf2/align-3.C
! 66db0ba47601e68332dc81736c3e8d9b  gcc/testsuite/g++.dg/debug/dwarf2/align-4.C
! 05354f65002b43c4419fefd83d286bd6  gcc/testsuite/g++.dg/debug/dwarf2/align-5.C
! d8f419af5fea8e5f0acc5df03ff735dc  gcc/testsuite/g++.dg/debug/dwarf2/align-6.C
  c20098d8433107f926a8d5fabfb70e3b  gcc/testsuite/g++.dg/debug/dwarf2/anonname1.C
  cc8cc227c23048bcf594a85463fd6374  gcc/testsuite/g++.dg/debug/dwarf2/array-0.C
  6d7f704b3fa1c061e5f4bdaffbb7f0e2  gcc/testsuite/g++.dg/debug/dwarf2/array-1.C
*************** a3b0790d7c7d8a7f32c52e58d6dc6967  gcc/te
*** 15629,15641 ****
  5bc0695b9e25d8bd7ab40bb846cfe645  gcc/testsuite/g++.dg/debug/dwarf2/constexpr-var-1.C
  ab8980eae15554e92e57b8e4ddfc3d38  gcc/testsuite/g++.dg/debug/dwarf2/deallocator.C
  6239637f8dd625e114ae1c449f66f431  gcc/testsuite/g++.dg/debug/dwarf2/default-arg1.C
! ec3e87dcf0160896056ee89e02f65e4c  gcc/testsuite/g++.dg/debug/dwarf2/defaulted-member-function-1.C
! 3023638816f901c7099b7645a6353f40  gcc/testsuite/g++.dg/debug/dwarf2/defaulted-member-function-2.C
! 495af04c35194cc1d015c2a93765a073  gcc/testsuite/g++.dg/debug/dwarf2/defaulted-member-function-3.C
  b60cdd725e03d3b1d9c56248e0f623f0  gcc/testsuite/g++.dg/debug/dwarf2/deleted-member-function.C
  2d11614b04b4a82a2bd316bf588c7852  gcc/testsuite/g++.dg/debug/dwarf2/dwarf2-1.C
  906b48b71d0ea35137dc20a9fd2f8965  gcc/testsuite/g++.dg/debug/dwarf2/dwarf2-2.C
! 90fa2f4ece0b62472f918ea24b3a4727  gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp
  626624da3f5685a0850aad1b683ac3d4  gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-nested.C
  22d59b45b21c13f83b0b24bf88a853bf  gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C
  1b130ad10876bc9db6cf83c8fa07435f  gcc/testsuite/g++.dg/debug/dwarf2/enum1.C
--- 16559,16571 ----
  5bc0695b9e25d8bd7ab40bb846cfe645  gcc/testsuite/g++.dg/debug/dwarf2/constexpr-var-1.C
  ab8980eae15554e92e57b8e4ddfc3d38  gcc/testsuite/g++.dg/debug/dwarf2/deallocator.C
  6239637f8dd625e114ae1c449f66f431  gcc/testsuite/g++.dg/debug/dwarf2/default-arg1.C
! 31c652b7a7ca00754ce7edb453eceef6  gcc/testsuite/g++.dg/debug/dwarf2/defaulted-member-function-1.C
! b2c8b3306db46316b9bd092051e44e6d  gcc/testsuite/g++.dg/debug/dwarf2/defaulted-member-function-2.C
! b68f44c11557e3825fd41d4340b7bf62  gcc/testsuite/g++.dg/debug/dwarf2/defaulted-member-function-3.C
  b60cdd725e03d3b1d9c56248e0f623f0  gcc/testsuite/g++.dg/debug/dwarf2/deleted-member-function.C
  2d11614b04b4a82a2bd316bf588c7852  gcc/testsuite/g++.dg/debug/dwarf2/dwarf2-1.C
  906b48b71d0ea35137dc20a9fd2f8965  gcc/testsuite/g++.dg/debug/dwarf2/dwarf2-2.C
! 3c68c94a7da92a91234b4901afb00fc3  gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp
  626624da3f5685a0850aad1b683ac3d4  gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-nested.C
  22d59b45b21c13f83b0b24bf88a853bf  gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C
  1b130ad10876bc9db6cf83c8fa07435f  gcc/testsuite/g++.dg/debug/dwarf2/enum1.C
*************** ecc49cbd0f2be0ca43c3bc117a7a1a9d  gcc/te
*** 15661,15674 ****
  d6a23e0e5a6ec9b1682a91b30d778f71  gcc/testsuite/g++.dg/debug/dwarf2/imported-module-4.C
  93bfc5990594c4c0244151f6fdc98bc7  gcc/testsuite/g++.dg/debug/dwarf2/imported-module.C
  73ac452cd11b5b9c8e3a8e8d4201a15a  gcc/testsuite/g++.dg/debug/dwarf2/inline-ns-1.C
! 41510ffdf4c706ab9c8121d8f4485647  gcc/testsuite/g++.dg/debug/dwarf2/inline-ns-2.C
! e0036fcbd6e1ec38a9856b2ab0437138  gcc/testsuite/g++.dg/debug/dwarf2/inline-var-1.C
! ef873f60e957c0b68b6fbb4875ec351a  gcc/testsuite/g++.dg/debug/dwarf2/inline-var-2.C
  b35aef275e8c1cc68e99f8801dc846e4  gcc/testsuite/g++.dg/debug/dwarf2/inline1.C
  b2bca0913e4135c3359c9933520119f6  gcc/testsuite/g++.dg/debug/dwarf2/integer-typedef.C
  160222ca46523a932828616d1c7b60e0  gcc/testsuite/g++.dg/debug/dwarf2/lambda1.C
! 6a93b393353d5a24a6567767109c6898  gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp11.C
! 8bbd68c3c61392b207b0d11f93104cec  gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp14.C
  9528ad1e140eff24c9bcff8ebae30d9f  gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp98.C
  8b8e5eddccdaa519cdbef29f72e2fb88  gcc/testsuite/g++.dg/debug/dwarf2/lineno-simple1.C
  4d61da9cfa655abcc31e78d858f44dc6  gcc/testsuite/g++.dg/debug/dwarf2/local-var-in-contructor.C
--- 16591,16607 ----
  d6a23e0e5a6ec9b1682a91b30d778f71  gcc/testsuite/g++.dg/debug/dwarf2/imported-module-4.C
  93bfc5990594c4c0244151f6fdc98bc7  gcc/testsuite/g++.dg/debug/dwarf2/imported-module.C
  73ac452cd11b5b9c8e3a8e8d4201a15a  gcc/testsuite/g++.dg/debug/dwarf2/inline-ns-1.C
! 7dd5f228bacebc3767bc6c5f2898a4db  gcc/testsuite/g++.dg/debug/dwarf2/inline-ns-2.C
! 4374f5796e7962c0f358c029be19ca64  gcc/testsuite/g++.dg/debug/dwarf2/inline-var-1.C
! 426c32ddf7d9af847314e35e007c028e  gcc/testsuite/g++.dg/debug/dwarf2/inline-var-2.C
! b417a416a8a1cf833a827647470d303c  gcc/testsuite/g++.dg/debug/dwarf2/inline-var-3.C
  b35aef275e8c1cc68e99f8801dc846e4  gcc/testsuite/g++.dg/debug/dwarf2/inline1.C
  b2bca0913e4135c3359c9933520119f6  gcc/testsuite/g++.dg/debug/dwarf2/integer-typedef.C
  160222ca46523a932828616d1c7b60e0  gcc/testsuite/g++.dg/debug/dwarf2/lambda1.C
! c3fa5758249954844813f6f83797cbb6  gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp11.C
! b7cb0f476479fbda78bd90153450d0f6  gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp14.C
! 84736775aaab673865f2994daaa52e89  gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp17.C
! 01ba88f2df292f8690678f5ec8687d78  gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp20.C
  9528ad1e140eff24c9bcff8ebae30d9f  gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp98.C
  8b8e5eddccdaa519cdbef29f72e2fb88  gcc/testsuite/g++.dg/debug/dwarf2/lineno-simple1.C
  4d61da9cfa655abcc31e78d858f44dc6  gcc/testsuite/g++.dg/debug/dwarf2/local-var-in-contructor.C
*************** edbc6bb86a7ee8f81e1b5853b74c2352  gcc/te
*** 15682,15688 ****
  e64fec6e11d681323560675ce433a296  gcc/testsuite/g++.dg/debug/dwarf2/nested-3.C
  9caca590d0b2747d8553259a98ef571f  gcc/testsuite/g++.dg/debug/dwarf2/nested-4.C
  c7ffd1dd0ae40378732be3ac8729a37c  gcc/testsuite/g++.dg/debug/dwarf2/non-virtual-thunk.C
! 804b19b7b58e86e4e92d0018c08cf7b7  gcc/testsuite/g++.dg/debug/dwarf2/noreturn-function.C
  b3cbbd79d5ff077a6732280d76b2284e  gcc/testsuite/g++.dg/debug/dwarf2/omp-fesdr.C
  7054dc65c88179389afb9e79cad0df38  gcc/testsuite/g++.dg/debug/dwarf2/pr41063.C
  9118e81e091fae9d3d9c8c39a846e724  gcc/testsuite/g++.dg/debug/dwarf2/pr44641.C
--- 16615,16621 ----
  e64fec6e11d681323560675ce433a296  gcc/testsuite/g++.dg/debug/dwarf2/nested-3.C
  9caca590d0b2747d8553259a98ef571f  gcc/testsuite/g++.dg/debug/dwarf2/nested-4.C
  c7ffd1dd0ae40378732be3ac8729a37c  gcc/testsuite/g++.dg/debug/dwarf2/non-virtual-thunk.C
! abe2799d2ba99877ff9ac9491b7f3baf  gcc/testsuite/g++.dg/debug/dwarf2/noreturn-function.C
  b3cbbd79d5ff077a6732280d76b2284e  gcc/testsuite/g++.dg/debug/dwarf2/omp-fesdr.C
  7054dc65c88179389afb9e79cad0df38  gcc/testsuite/g++.dg/debug/dwarf2/pr41063.C
  9118e81e091fae9d3d9c8c39a846e724  gcc/testsuite/g++.dg/debug/dwarf2/pr44641.C
*************** b3cbbd79d5ff077a6732280d76b2284e  gcc/te
*** 15693,15699 ****
  61d7e2de1732fd9c25378d4c85a4bb53  gcc/testsuite/g++.dg/debug/dwarf2/pr46527.C
  77d7e1ad341ac6addc71df4dbb8ec2e2  gcc/testsuite/g++.dg/debug/dwarf2/pr52260.C
  bec26218174ce021c4d89096b9f0c537  gcc/testsuite/g++.dg/debug/dwarf2/pr54508.C
! 2d5f72ae99d7dbf7d7dae7e5fa539b2d  gcc/testsuite/g++.dg/debug/dwarf2/pr61433.C
  3dc0f561c3ebaf29a4f14ee6f25555c1  gcc/testsuite/g++.dg/debug/dwarf2/pr67764.C
  3cfcb26c02f6e51b53e2490df47fc140  gcc/testsuite/g++.dg/debug/dwarf2/pr77363.C
  5530d5c25216033510bd314f7bccbcca  gcc/testsuite/g++.dg/debug/dwarf2/pr78835.C
--- 16626,16632 ----
  61d7e2de1732fd9c25378d4c85a4bb53  gcc/testsuite/g++.dg/debug/dwarf2/pr46527.C
  77d7e1ad341ac6addc71df4dbb8ec2e2  gcc/testsuite/g++.dg/debug/dwarf2/pr52260.C
  bec26218174ce021c4d89096b9f0c537  gcc/testsuite/g++.dg/debug/dwarf2/pr54508.C
! 4c0d597e83fc2b5e8fb252e99bae1dae  gcc/testsuite/g++.dg/debug/dwarf2/pr61433.C
  3dc0f561c3ebaf29a4f14ee6f25555c1  gcc/testsuite/g++.dg/debug/dwarf2/pr67764.C
  3cfcb26c02f6e51b53e2490df47fc140  gcc/testsuite/g++.dg/debug/dwarf2/pr77363.C
  5530d5c25216033510bd314f7bccbcca  gcc/testsuite/g++.dg/debug/dwarf2/pr78835.C
*************** d7ed5be36e8ab58d3d73c325b6ec84ab  gcc/te
*** 15708,15724 ****
  a6b0d9b886cd92ee869a01fd967f123e  gcc/testsuite/g++.dg/debug/dwarf2/pr87462.C
  eb8df2f4b1148c5f6b77553d91cb7877  gcc/testsuite/g++.dg/debug/dwarf2/pr88006.C
  1f426b6d87ce5765a45728a91f7e3337  gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C
! 48e69b012a6da8a3f37c0eea7d671389  gcc/testsuite/g++.dg/debug/dwarf2/ptrdmem-1.C
  5d8f03fa19703b37b960eccf4cdd64b6  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-1.C
  76d02e352aba879b4ba37be3e5443ee8  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-2.C
  332f87c00059cf860922539ea58fc908  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-3.C
  5ee5136319eb2e380c30aea5cdd61634  gcc/testsuite/g++.dg/debug/dwarf2/redeclaration-1.C
  2059d1611fd4125683228bd68f4312ee  gcc/testsuite/g++.dg/debug/dwarf2/ref-1.C
! bdde1e24a294c024b9b2adf45e0760a5  gcc/testsuite/g++.dg/debug/dwarf2/ref-2.C
! 02d44a43fa8c60878f29557602a53a8c  gcc/testsuite/g++.dg/debug/dwarf2/ref-3.C
! 1b6cd8f060e516ecaec39f18829e40d4  gcc/testsuite/g++.dg/debug/dwarf2/ref-4.C
! 522ee51bb2fb9a84470873043a083428  gcc/testsuite/g++.dg/debug/dwarf2/refqual-1.C
! 0a52b97974e00ff5e85a58b25d0aaa21  gcc/testsuite/g++.dg/debug/dwarf2/refqual-2.C
  2c4eb567006dc5fec6253f66d61d30ce  gcc/testsuite/g++.dg/debug/dwarf2/rv1.C
  2618274e057973a8aef0c6a38c2614f7  gcc/testsuite/g++.dg/debug/dwarf2/self-ref-1.C
  f9af9d5a34157b52dcb1eb1b1f046d89  gcc/testsuite/g++.dg/debug/dwarf2/self-ref-2.C
--- 16641,16657 ----
  a6b0d9b886cd92ee869a01fd967f123e  gcc/testsuite/g++.dg/debug/dwarf2/pr87462.C
  eb8df2f4b1148c5f6b77553d91cb7877  gcc/testsuite/g++.dg/debug/dwarf2/pr88006.C
  1f426b6d87ce5765a45728a91f7e3337  gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C
! e03d4790a0350f655bfc579c2cf31194  gcc/testsuite/g++.dg/debug/dwarf2/ptrdmem-1.C
  5d8f03fa19703b37b960eccf4cdd64b6  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-1.C
  76d02e352aba879b4ba37be3e5443ee8  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-2.C
  332f87c00059cf860922539ea58fc908  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-3.C
  5ee5136319eb2e380c30aea5cdd61634  gcc/testsuite/g++.dg/debug/dwarf2/redeclaration-1.C
  2059d1611fd4125683228bd68f4312ee  gcc/testsuite/g++.dg/debug/dwarf2/ref-1.C
! 49f64e5b9319be6e42ee1b9a13b65e96  gcc/testsuite/g++.dg/debug/dwarf2/ref-2.C
! 94f8a74cc2ac79b710e18a4bd24e4541  gcc/testsuite/g++.dg/debug/dwarf2/ref-3.C
! 7ecfeac1746c1f5e23de192de322f31b  gcc/testsuite/g++.dg/debug/dwarf2/ref-4.C
! 2e2fd2ea6835761a269ec35eadc3b573  gcc/testsuite/g++.dg/debug/dwarf2/refqual-1.C
! 643c99f412076c5ee5610ca249b2a5fd  gcc/testsuite/g++.dg/debug/dwarf2/refqual-2.C
  2c4eb567006dc5fec6253f66d61d30ce  gcc/testsuite/g++.dg/debug/dwarf2/rv1.C
  2618274e057973a8aef0c6a38c2614f7  gcc/testsuite/g++.dg/debug/dwarf2/self-ref-1.C
  f9af9d5a34157b52dcb1eb1b1f046d89  gcc/testsuite/g++.dg/debug/dwarf2/self-ref-2.C
*************** a79b4fb3cb7873c05364c263058a7f1a  gcc/te
*** 15760,15765 ****
--- 16693,16699 ----
  32c2c4afd9960daa839e702a7ad2b0ed  gcc/testsuite/g++.dg/debug/dwarf2/typedef4.C
  ddbacc1f20aaa6efbe151f3f8d8b9aa9  gcc/testsuite/g++.dg/debug/dwarf2/typedef5.C
  1bac29a975fef390435bcddbc2f1112b  gcc/testsuite/g++.dg/debug/dwarf2/typedef6.C
+ 14de01102edbb95fe2d8f800da61dff8  gcc/testsuite/g++.dg/debug/dwarf2/using-enum.C
  d11dcc4e37738beb9e8be03ce7630c35  gcc/testsuite/g++.dg/debug/enum-1.C
  ae15f5aa018a04a1250780eca928d27c  gcc/testsuite/g++.dg/debug/enum-2.C
  a0ac13a0885ee162c972f58ffbd934e7  gcc/testsuite/g++.dg/debug/localclass1.C
*************** be43932f6739cc9bbbf58a055e612eda  gcc/te
*** 15831,15843 ****
  da0d7c1dfdd1c7020c650fa166f8669f  gcc/testsuite/g++.dg/delayedfold/builtin1.C
  d4f839df58fe0f7f95cc2bf558eee2ff  gcc/testsuite/g++.dg/delayedfold/df-warn-signedunsigned1.C
  87428c39183ce85f1dea3199542dc642  gcc/testsuite/g++.dg/delayedfold/df-warn-signedunsigned2.C
! 322399341fd8c6e34affaac64c72f457  gcc/testsuite/g++.dg/delayedfold/fwrapv1.C
  99f358e7fe81af5363dbf7c9db912938  gcc/testsuite/g++.dg/delayedfold/switch-1.C
  826d6a64cf151baeb4f6abc6b3e40e75  gcc/testsuite/g++.dg/delayedfold/unary-plus1.C
  5381563d83a802d89887422d01bc17d1  gcc/testsuite/g++.dg/dfp/44473-1.C
  ca2c3afed1d1ac0b4c3f2b2b82264602  gcc/testsuite/g++.dg/dfp/44473-2.C
  694614d4f71e398dcda11523059a774e  gcc/testsuite/g++.dg/dfp/base.C
! fc3e6e5f2b3af13e727b4623292c514c  gcc/testsuite/g++.dg/dfp/dfp.exp
  b98372f1dd5bbd1ea23e2933d4bdf03a  gcc/testsuite/g++.dg/dfp/mangle-1.C
  c0592e7184d9390b10cd93d3b6f1f7a0  gcc/testsuite/g++.dg/dfp/mangle-2.C
  97de1869469f8592b096b761b6a2cceb  gcc/testsuite/g++.dg/dfp/mangle-3.C
--- 16765,16777 ----
  da0d7c1dfdd1c7020c650fa166f8669f  gcc/testsuite/g++.dg/delayedfold/builtin1.C
  d4f839df58fe0f7f95cc2bf558eee2ff  gcc/testsuite/g++.dg/delayedfold/df-warn-signedunsigned1.C
  87428c39183ce85f1dea3199542dc642  gcc/testsuite/g++.dg/delayedfold/df-warn-signedunsigned2.C
! f00dea52c61cb46b3702ed0755e5be94  gcc/testsuite/g++.dg/delayedfold/fwrapv1.C
  99f358e7fe81af5363dbf7c9db912938  gcc/testsuite/g++.dg/delayedfold/switch-1.C
  826d6a64cf151baeb4f6abc6b3e40e75  gcc/testsuite/g++.dg/delayedfold/unary-plus1.C
  5381563d83a802d89887422d01bc17d1  gcc/testsuite/g++.dg/dfp/44473-1.C
  ca2c3afed1d1ac0b4c3f2b2b82264602  gcc/testsuite/g++.dg/dfp/44473-2.C
  694614d4f71e398dcda11523059a774e  gcc/testsuite/g++.dg/dfp/base.C
! 99352f4ee74dd0a92e063603e8bdeaa8  gcc/testsuite/g++.dg/dfp/dfp.exp
  b98372f1dd5bbd1ea23e2933d4bdf03a  gcc/testsuite/g++.dg/dfp/mangle-1.C
  c0592e7184d9390b10cd93d3b6f1f7a0  gcc/testsuite/g++.dg/dfp/mangle-2.C
  97de1869469f8592b096b761b6a2cceb  gcc/testsuite/g++.dg/dfp/mangle-3.C
*************** becc0e6f064af285a504ff10eaffc525  gcc/te
*** 15847,15853 ****
  3a865b01c504023d0b90b1f055163c6a  gcc/testsuite/g++.dg/dfp/nofields.C
  919ff80bde2b401e1cf10423071bab16  gcc/testsuite/g++.dg/dfp/pr92744.C
  cd0133a632a541db051ef84d53754ac6  gcc/testsuite/g++.dg/dfp/typeid1.C
! 42967579b2dda1d86d9ef2d93d3c302e  gcc/testsuite/g++.dg/dg.exp
  acfb4c292cab52af7c96437dfeb91332  gcc/testsuite/g++.dg/diagnostic/aka1.C
  6daf9c84b004ad38b36ca9e885175631  gcc/testsuite/g++.dg/diagnostic/aka2.C
  0aacbf4bd10589d329e7f0a05be533bb  gcc/testsuite/g++.dg/diagnostic/aka3.C
--- 16781,16787 ----
  3a865b01c504023d0b90b1f055163c6a  gcc/testsuite/g++.dg/dfp/nofields.C
  919ff80bde2b401e1cf10423071bab16  gcc/testsuite/g++.dg/dfp/pr92744.C
  cd0133a632a541db051ef84d53754ac6  gcc/testsuite/g++.dg/dfp/typeid1.C
! a6b0a7e3ea4d102b606bb8593d4669b9  gcc/testsuite/g++.dg/dg.exp
  acfb4c292cab52af7c96437dfeb91332  gcc/testsuite/g++.dg/diagnostic/aka1.C
  6daf9c84b004ad38b36ca9e885175631  gcc/testsuite/g++.dg/diagnostic/aka2.C
  0aacbf4bd10589d329e7f0a05be533bb  gcc/testsuite/g++.dg/diagnostic/aka3.C
*************** e083f6b3ba321e7cdc9c8d54972f027b  gcc/te
*** 15861,15867 ****
  1f68f132aa0d07e47ed9cf254749fe74  gcc/testsuite/g++.dg/diagnostic/array-init1.C
  f468ff0e470b813ba90ab6f552dfbb51  gcc/testsuite/g++.dg/diagnostic/auto-storage-1.C
  ff860856c2893a017f1f53ffe7a296c7  gcc/testsuite/g++.dg/diagnostic/auto1.C
! eb129992ec5b8849abc98fab070a13b9  gcc/testsuite/g++.dg/diagnostic/bad-binary-ops.C
  748783b112c42a8deeb80f2d23c3aa1f  gcc/testsuite/g++.dg/diagnostic/base-operand-non-pointer-1.C
  d7dcca6cdb24ff15a17be482e130bf4e  gcc/testsuite/g++.dg/diagnostic/bindings1.C
  424dce5e3d57a2b34afe27e7bbf2592d  gcc/testsuite/g++.dg/diagnostic/bitfld1.C
--- 16795,16801 ----
  1f68f132aa0d07e47ed9cf254749fe74  gcc/testsuite/g++.dg/diagnostic/array-init1.C
  f468ff0e470b813ba90ab6f552dfbb51  gcc/testsuite/g++.dg/diagnostic/auto-storage-1.C
  ff860856c2893a017f1f53ffe7a296c7  gcc/testsuite/g++.dg/diagnostic/auto1.C
! 2782c3a1ba0fe921f95b73de11d6bf55  gcc/testsuite/g++.dg/diagnostic/bad-binary-ops.C
  748783b112c42a8deeb80f2d23c3aa1f  gcc/testsuite/g++.dg/diagnostic/base-operand-non-pointer-1.C
  d7dcca6cdb24ff15a17be482e130bf4e  gcc/testsuite/g++.dg/diagnostic/bindings1.C
  424dce5e3d57a2b34afe27e7bbf2592d  gcc/testsuite/g++.dg/diagnostic/bitfld1.C
*************** e824a88234abd039ffea31d13a8e9e42  gcc/te
*** 15876,15881 ****
--- 16810,16816 ----
  4a4ed8a805a81f8726e0ba889c68ff19  gcc/testsuite/g++.dg/diagnostic/disable.C
  526efa2a8771e0409f39701dd3fc5953  gcc/testsuite/g++.dg/diagnostic/duplicate1.C
  c3989c492c520c5e5c36e77898e2bd15  gcc/testsuite/g++.dg/diagnostic/enum1.C
+ 3fd7c0c4c80c4df54c4f6b4749e1ff43  gcc/testsuite/g++.dg/diagnostic/enum2.C
  3127905a449847bc27a84d6b88588e2a  gcc/testsuite/g++.dg/diagnostic/expr1.C
  4d21f6027d297038928184dbbcd7b6f3  gcc/testsuite/g++.dg/diagnostic/extern-initialized.C
  dd6972e7b92113e6456388c099d1d0fc  gcc/testsuite/g++.dg/diagnostic/friend1.C
*************** b4e50b6bf0aa4ab59b9a9cb6e129a903  gcc/te
*** 15887,15895 ****
--- 16822,16832 ----
  35450697df4db69677623dcc4bc44bf5  gcc/testsuite/g++.dg/diagnostic/inhibit-warn-1.C
  52261a78171046d8af667baa598b3996  gcc/testsuite/g++.dg/diagnostic/inhibit-warn-2.C
  6d7540ee092b9f6493a209b3d3f89d93  gcc/testsuite/g++.dg/diagnostic/integral-array-size-1.C
+ 37b0194164dc105d145926e992c5fffa  gcc/testsuite/g++.dg/diagnostic/local1.C
  3cb4de68f3722265cb8bb8c3ec74b8c2  gcc/testsuite/g++.dg/diagnostic/long-short.C
  5e5dde276892455bc269dfa7e14e456a  gcc/testsuite/g++.dg/diagnostic/main1.C
  17ad778ff7ed164cbd2116ff51b37594  gcc/testsuite/g++.dg/diagnostic/main2.C
+ 1c088f537800130c2d2097ad3522d6a7  gcc/testsuite/g++.dg/diagnostic/mem-init1.C
  f75c82dfbdf0eea67c71d62ca274e22b  gcc/testsuite/g++.dg/diagnostic/member-decl-1.C
  4656c9afc261871baeb12bca5d22f022  gcc/testsuite/g++.dg/diagnostic/member-fn-1.C
  f3b416e81c428ee9582715ac61d2b3d7  gcc/testsuite/g++.dg/diagnostic/method1.C
*************** a57099362f24a92fdb8ee593039405ff  gcc/te
*** 15899,15904 ****
--- 16836,16842 ----
  9d7674eed83757573728bbef236ded56  gcc/testsuite/g++.dg/diagnostic/no-type-1.C
  73dad116eb74143834495f4a629e6bd2  gcc/testsuite/g++.dg/diagnostic/no-type-2.C
  9263f333c38478346aa5e13a0c8459dc  gcc/testsuite/g++.dg/diagnostic/not-a-function-template-1.C
+ 007925d2676b7700dad8049631aae066  gcc/testsuite/g++.dg/diagnostic/nullptr.C
  7c189158703237d2d0c14e780590b5e1  gcc/testsuite/g++.dg/diagnostic/out-of-class-redeclaration.C
  207e83e3375d72608a09172b9c8521ae  gcc/testsuite/g++.dg/diagnostic/param-type-mismatch-2.C
  bd4b7e0e3c910f4e6940a6a7cca5b15b  gcc/testsuite/g++.dg/diagnostic/param-type-mismatch-3.C
*************** f1fa5cf0ff0d4ecdd2e636f162a3a570  gcc/te
*** 15924,15934 ****
  57b92c115e79109cf96eddc39b98af38  gcc/testsuite/g++.dg/diagnostic/pr85464.C
  73be249375b18fbe6b5505508caa8845  gcc/testsuite/g++.dg/diagnostic/pr86201.C
  e6f1beb39c362797a43008d683753438  gcc/testsuite/g++.dg/diagnostic/pr86993.C
! 5b3831bc052cf03ddc5b5e39f65be1a5  gcc/testsuite/g++.dg/diagnostic/pr87386.C
  6353aa551355349c668a14f1198abfd4  gcc/testsuite/g++.dg/diagnostic/pr89390.C
  649d1979156f33f9f6c4357bdaedf2ba  gcc/testsuite/g++.dg/diagnostic/pr90243.C
  4ac55408be5d699804ff4f1575d67dfa  gcc/testsuite/g++.dg/diagnostic/pr90767-1.C
  033514e06412cda29f05e9038f2c494d  gcc/testsuite/g++.dg/diagnostic/pr90767-2.C
  64e332410e9790f9161cfceca5cb41d4  gcc/testsuite/g++.dg/diagnostic/redeclaration-1.C
  bb193b240fa78433d956d57357da2858  gcc/testsuite/g++.dg/diagnostic/ref1.C
  b70b854343c43b4b0eac609476ee8fc1  gcc/testsuite/g++.dg/diagnostic/ref2.C
--- 16862,16878 ----
  57b92c115e79109cf96eddc39b98af38  gcc/testsuite/g++.dg/diagnostic/pr85464.C
  73be249375b18fbe6b5505508caa8845  gcc/testsuite/g++.dg/diagnostic/pr86201.C
  e6f1beb39c362797a43008d683753438  gcc/testsuite/g++.dg/diagnostic/pr86993.C
! 804f6e85a4c9ec7a2b969641eded2b2f  gcc/testsuite/g++.dg/diagnostic/pr87386.C
  6353aa551355349c668a14f1198abfd4  gcc/testsuite/g++.dg/diagnostic/pr89390.C
  649d1979156f33f9f6c4357bdaedf2ba  gcc/testsuite/g++.dg/diagnostic/pr90243.C
  4ac55408be5d699804ff4f1575d67dfa  gcc/testsuite/g++.dg/diagnostic/pr90767-1.C
  033514e06412cda29f05e9038f2c494d  gcc/testsuite/g++.dg/diagnostic/pr90767-2.C
+ 8a3570c4f5e80686d76b595291cb51a6  gcc/testsuite/g++.dg/diagnostic/pr96045-1.C
+ e189e0c892951d7a0756094c06ff9ad3  gcc/testsuite/g++.dg/diagnostic/pr96045-2.C
+ 5507cf31f35b15260187a95b5c916e6d  gcc/testsuite/g++.dg/diagnostic/pr96045-3.C
+ bd9b993605b269dc55604ebbb4049ea6  gcc/testsuite/g++.dg/diagnostic/pr96328.C
+ 235559a0e679b9d9b09aa82af7add023  gcc/testsuite/g++.dg/diagnostic/ptrtomem1.C
+ 22810075c6736e148fdad4df31746f9b  gcc/testsuite/g++.dg/diagnostic/ptrtomem2.C
  64e332410e9790f9161cfceca5cb41d4  gcc/testsuite/g++.dg/diagnostic/redeclaration-1.C
  bb193b240fa78433d956d57357da2858  gcc/testsuite/g++.dg/diagnostic/ref1.C
  b70b854343c43b4b0eac609476ee8fc1  gcc/testsuite/g++.dg/diagnostic/ref2.C
*************** e3aa447c8519e3886f54a6a8d59c31c4  gcc/te
*** 15937,15942 ****
--- 16881,16889 ----
  ed0a135e3f6f6280fe8fd6ee38207fb6  gcc/testsuite/g++.dg/diagnostic/returning-a-value-1.C
  d625b560f030fba41078f9ffd66c536e  gcc/testsuite/g++.dg/diagnostic/signed-unsigned.C
  56b153bce2ef2880be3f566067731dc9  gcc/testsuite/g++.dg/diagnostic/static-cdtor-1.C
+ b754a2ad578f67afe512ad74ff03b31f  gcc/testsuite/g++.dg/diagnostic/static_assert1.C
+ a7b5530f2822e6294b3a5ff037237c86  gcc/testsuite/g++.dg/diagnostic/static_assert2.C
+ fb6ded9332966bea148bf51803a3e64f  gcc/testsuite/g++.dg/diagnostic/static_assert3.C
  c5118b2b3d40ad89746624615a874180  gcc/testsuite/g++.dg/diagnostic/string-literal-concat.C
  ecb01c09c49ca387feb23a52c154974e  gcc/testsuite/g++.dg/diagnostic/thread-thread_local.C
  367b21b37820f516cd49cb6ead5340a9  gcc/testsuite/g++.dg/diagnostic/thread1.C
*************** ecb01c09c49ca387feb23a52c154974e  gcc/te
*** 15944,15953 ****
  6f7f3458ffa289e17679c8ec1f42faef  gcc/testsuite/g++.dg/diagnostic/trailing1.C
  aa6cc7f21e4a9b8011b04ea928f76027  gcc/testsuite/g++.dg/diagnostic/two-or-more-data-types-1.C
  d84401f4f10886da506d8acbdb74a1d9  gcc/testsuite/g++.dg/diagnostic/typedef-initialized.C
! 0afd8f1b85bcfcca0e1fc015e51c70df  gcc/testsuite/g++.dg/diagnostic/unclosed-extern-c.C
! b7f5e1f6b72f1264ce2e8730582cc334  gcc/testsuite/g++.dg/diagnostic/unclosed-function.C
! ba6469f1b782e19346b02d71b3bc296e  gcc/testsuite/g++.dg/diagnostic/unclosed-namespace.C
! 570dbb042fd573648e202e46e6f691a3  gcc/testsuite/g++.dg/diagnostic/unclosed-struct.C
  0420bcbb4f7abd68c02f908026ad1f11  gcc/testsuite/g++.dg/diagnostic/variably-modified-type-1.C
  242539537e0b01ca558d91adcac7cb35  gcc/testsuite/g++.dg/diagnostic/variadic1.C
  793d6d70a83796d613da9b245936f84c  gcc/testsuite/g++.dg/diagnostic/virtual-constexpr.C
--- 16891,16900 ----
  6f7f3458ffa289e17679c8ec1f42faef  gcc/testsuite/g++.dg/diagnostic/trailing1.C
  aa6cc7f21e4a9b8011b04ea928f76027  gcc/testsuite/g++.dg/diagnostic/two-or-more-data-types-1.C
  d84401f4f10886da506d8acbdb74a1d9  gcc/testsuite/g++.dg/diagnostic/typedef-initialized.C
! 7e036e85321b20d585371bca79400c51  gcc/testsuite/g++.dg/diagnostic/unclosed-extern-c.C
! 41b891220463d2f235b6aafb7a120598  gcc/testsuite/g++.dg/diagnostic/unclosed-function.C
! 1f7945145b6225ba6290bb000423cf46  gcc/testsuite/g++.dg/diagnostic/unclosed-namespace.C
! 349d7476d1a27bd2806b8e0a3097a511  gcc/testsuite/g++.dg/diagnostic/unclosed-struct.C
  0420bcbb4f7abd68c02f908026ad1f11  gcc/testsuite/g++.dg/diagnostic/variably-modified-type-1.C
  242539537e0b01ca558d91adcac7cb35  gcc/testsuite/g++.dg/diagnostic/variadic1.C
  793d6d70a83796d613da9b245936f84c  gcc/testsuite/g++.dg/diagnostic/virtual-constexpr.C
*************** d4e8a0fe46920b2021613a1a745597e4  gcc/te
*** 15965,15980 ****
  88ca3337a1391414cccfd8e3f11d8b42  gcc/testsuite/g++.dg/eh/async-unwind1.C
  8c15167347f9d4cc57635e5a972d90ef  gcc/testsuite/g++.dg/eh/async-unwind2.C
  b9f64f18eca81e96e3ebd977319e1b79  gcc/testsuite/g++.dg/eh/builtin1.C
! d96613aa4a2556af2cf1a9fb692538cb  gcc/testsuite/g++.dg/eh/builtin10.C
! e8cc8fc87183f22b9812ed73898d40b1  gcc/testsuite/g++.dg/eh/builtin11.C
  cf2ee83accf5b8bc32948deeccb20e4c  gcc/testsuite/g++.dg/eh/builtin2.C
  5f8f99eaafc1e0281b960d70d150372a  gcc/testsuite/g++.dg/eh/builtin3.C
  d600e61118e165a8544e4a21e24396b0  gcc/testsuite/g++.dg/eh/builtin4.C
! 35f23e9af48ddf35dc466ed4f678231c  gcc/testsuite/g++.dg/eh/builtin5.C
! 42f677dc90f94a642881f052a715628a  gcc/testsuite/g++.dg/eh/builtin6.C
! 7d8d3fc837f9763d6fdac7f3c727cdb5  gcc/testsuite/g++.dg/eh/builtin7.C
  7e4b9e4543f0a98b8d1468a4cb10b99d  gcc/testsuite/g++.dg/eh/builtin8.C
! c6c405fbe42fb39c03e93abf949eac32  gcc/testsuite/g++.dg/eh/builtin9.C
  98cf19968cec5fc832747640edb98eee  gcc/testsuite/g++.dg/eh/cast1.C
  396745d0c48e93d18fd067292d72181d  gcc/testsuite/g++.dg/eh/catch1.C
  a8749c98147fe230e16618ed168a7ffd  gcc/testsuite/g++.dg/eh/catch2.C
--- 16912,16927 ----
  88ca3337a1391414cccfd8e3f11d8b42  gcc/testsuite/g++.dg/eh/async-unwind1.C
  8c15167347f9d4cc57635e5a972d90ef  gcc/testsuite/g++.dg/eh/async-unwind2.C
  b9f64f18eca81e96e3ebd977319e1b79  gcc/testsuite/g++.dg/eh/builtin1.C
! 36d2a4018dffa2538fcc3adaa3219552  gcc/testsuite/g++.dg/eh/builtin10.C
! 41996de496969b5956e33c7f22bea6d4  gcc/testsuite/g++.dg/eh/builtin11.C
  cf2ee83accf5b8bc32948deeccb20e4c  gcc/testsuite/g++.dg/eh/builtin2.C
  5f8f99eaafc1e0281b960d70d150372a  gcc/testsuite/g++.dg/eh/builtin3.C
  d600e61118e165a8544e4a21e24396b0  gcc/testsuite/g++.dg/eh/builtin4.C
! 8d7d2d4feb8a6f43520598c57e896c33  gcc/testsuite/g++.dg/eh/builtin5.C
! 02df52a3c0bfbf035a812fe8fc80e5f3  gcc/testsuite/g++.dg/eh/builtin6.C
! a72a33cd27761d11f89064103a75cc91  gcc/testsuite/g++.dg/eh/builtin7.C
  7e4b9e4543f0a98b8d1468a4cb10b99d  gcc/testsuite/g++.dg/eh/builtin8.C
! fe786dbaa60a08d6ef8cf17a5ccae1da  gcc/testsuite/g++.dg/eh/builtin9.C
  98cf19968cec5fc832747640edb98eee  gcc/testsuite/g++.dg/eh/cast1.C
  396745d0c48e93d18fd067292d72181d  gcc/testsuite/g++.dg/eh/catch1.C
  a8749c98147fe230e16618ed168a7ffd  gcc/testsuite/g++.dg/eh/catch2.C
*************** a52fa6cd93c130963df8e930451d74a1  gcc/te
*** 15995,16000 ****
--- 16942,16948 ----
  8d0d0d1daa7ce211b24bfa05d2bcc16c  gcc/testsuite/g++.dg/eh/cond5.C
  e2de0bdd91c75a83e86d8e423986c99d  gcc/testsuite/g++.dg/eh/cond6.C
  43098e3dd291c59e61245771f6e306d0  gcc/testsuite/g++.dg/eh/crash1.C
+ 5bbc5d24a72f53288620959d714d8145  gcc/testsuite/g++.dg/eh/crash2.C
  365a9a74302377cb0e82e7f5f1a7bca9  gcc/testsuite/g++.dg/eh/crossjump1.C
  0aa754d9c4446d12efdfc8a0736605bb  gcc/testsuite/g++.dg/eh/ctor1.C
  1ca64f6d54bb332c6c32d876edf896c0  gcc/testsuite/g++.dg/eh/ctor2.C
*************** bafc15005abdfe9131f6074efde175eb  gcc/te
*** 16038,16044 ****
  339f1ef3219aace218fecaa5c9b19c83  gcc/testsuite/g++.dg/eh/pr29166.C
  fa076f7aee99ba9138c0541bc50c2e01  gcc/testsuite/g++.dg/eh/pr38662.C
  3c71b722751263d1baefa007004a90bb  gcc/testsuite/g++.dg/eh/pr41819.C
! a081cebee3412cc144c315a53ce4d824  gcc/testsuite/g++.dg/eh/pr42859.C
  6b7a6fb9b5bb6227cd79629a94634556  gcc/testsuite/g++.dg/eh/pr43365.C
  6eb9d68250f630420d0fdb982047fe17  gcc/testsuite/g++.dg/eh/pr45569.C
  d38795dc5765c85251d1b51d2837fa65  gcc/testsuite/g++.dg/eh/pr84968.C
--- 16986,16992 ----
  339f1ef3219aace218fecaa5c9b19c83  gcc/testsuite/g++.dg/eh/pr29166.C
  fa076f7aee99ba9138c0541bc50c2e01  gcc/testsuite/g++.dg/eh/pr38662.C
  3c71b722751263d1baefa007004a90bb  gcc/testsuite/g++.dg/eh/pr41819.C
! 95a348b65d678b6ebd4ff12262eeb554  gcc/testsuite/g++.dg/eh/pr42859.C
  6b7a6fb9b5bb6227cd79629a94634556  gcc/testsuite/g++.dg/eh/pr43365.C
  6eb9d68250f630420d0fdb982047fe17  gcc/testsuite/g++.dg/eh/pr45569.C
  d38795dc5765c85251d1b51d2837fa65  gcc/testsuite/g++.dg/eh/pr84968.C
*************** be5af3c4aa82f74a07dbbdc316e9c02c  gcc/te
*** 16053,16059 ****
  55e1817e6d2f866b9cd25ef5751e2b9c  gcc/testsuite/g++.dg/eh/simd-3.C
  d46aab23b9e76d1da7631a4184db1622  gcc/testsuite/g++.dg/eh/simd-4.C
  7bbbffa771c48a85ca22cc69554f7cc4  gcc/testsuite/g++.dg/eh/simd-5.C
! 07d357aaf982eecae2e6b5376bfd4a08  gcc/testsuite/g++.dg/eh/spbp.C
  82939fb6cdaf944681687fca28788638  gcc/testsuite/g++.dg/eh/spec1.C
  3d659e64086eab4c277f68cb3479ada7  gcc/testsuite/g++.dg/eh/spec10.C
  45bfdfe42eb7ac9675e33aa8fc84d845  gcc/testsuite/g++.dg/eh/spec11.C
--- 17001,17007 ----
  55e1817e6d2f866b9cd25ef5751e2b9c  gcc/testsuite/g++.dg/eh/simd-3.C
  d46aab23b9e76d1da7631a4184db1622  gcc/testsuite/g++.dg/eh/simd-4.C
  7bbbffa771c48a85ca22cc69554f7cc4  gcc/testsuite/g++.dg/eh/simd-5.C
! 8eaf0730198c7e8fe14a657869d38fde  gcc/testsuite/g++.dg/eh/spbp.C
  82939fb6cdaf944681687fca28788638  gcc/testsuite/g++.dg/eh/spec1.C
  3d659e64086eab4c277f68cb3479ada7  gcc/testsuite/g++.dg/eh/spec10.C
  45bfdfe42eb7ac9675e33aa8fc84d845  gcc/testsuite/g++.dg/eh/spec11.C
*************** d0664ba773ff7e78659033ad657627df  gcc/te
*** 16091,16096 ****
--- 17039,17046 ----
  c272c27e69863d4ba063be24a228ce5f  gcc/testsuite/g++.dg/expr/anew2.C
  88cfba5bf8bdd95998bb48be16446076  gcc/testsuite/g++.dg/expr/anew3.C
  bfeb38eba4e729358fcc5f4cb5c9dd13  gcc/testsuite/g++.dg/expr/anew4.C
+ c828541271559a47f4c228c8c370abe4  gcc/testsuite/g++.dg/expr/anew5.C
+ b44680673370d5b57a3f488d2078f6b1  gcc/testsuite/g++.dg/expr/anew6.C
  39cb0859475193884781cf1fe587c70e  gcc/testsuite/g++.dg/expr/assign1.C
  1723ce2e07d2ea83eb69de8e2f9b8023  gcc/testsuite/g++.dg/expr/assign2.C
  4e0c5b60b2779b95727ec7ec01b7d7c7  gcc/testsuite/g++.dg/expr/bitfield1.C
*************** ac65084e9b69975292ff758f7f35b1c0  gcc/te
*** 16106,16112 ****
  0591dbb0a00409792de5be5fe1b6f0e8  gcc/testsuite/g++.dg/expr/bitfield6.C
  d7b50316002a163842608f185be9c7a2  gcc/testsuite/g++.dg/expr/bitfield7.C
  781063f5a0d1ba5f19965b3dec7d3ee0  gcc/testsuite/g++.dg/expr/bitfield8.C
! f7feef6eca2fd890a8914fedc2a62ddf  gcc/testsuite/g++.dg/expr/bitfield9.C
  eb06260294e61e12c0f7735831410cea  gcc/testsuite/g++.dg/expr/bool1.C
  448350f587fd3cc956d7a9997d51df5b  gcc/testsuite/g++.dg/expr/bool2.C
  5d212aa1221b038fde4fdbdb6891be1d  gcc/testsuite/g++.dg/expr/bool3.C
--- 17056,17062 ----
  0591dbb0a00409792de5be5fe1b6f0e8  gcc/testsuite/g++.dg/expr/bitfield6.C
  d7b50316002a163842608f185be9c7a2  gcc/testsuite/g++.dg/expr/bitfield7.C
  781063f5a0d1ba5f19965b3dec7d3ee0  gcc/testsuite/g++.dg/expr/bitfield8.C
! edb80073477bf921280d0be269d5a4f3  gcc/testsuite/g++.dg/expr/bitfield9.C
  eb06260294e61e12c0f7735831410cea  gcc/testsuite/g++.dg/expr/bool1.C
  448350f587fd3cc956d7a9997d51df5b  gcc/testsuite/g++.dg/expr/bool2.C
  5d212aa1221b038fde4fdbdb6891be1d  gcc/testsuite/g++.dg/expr/bool3.C
*************** ed8e65f6a9fb8340f4d8881b00bc8a62  gcc/te
*** 16128,16133 ****
--- 17078,17084 ----
  c9eba403b9c8b560219498d333b0acb4  gcc/testsuite/g++.dg/expr/cast8.C
  8b3e4787ac841e3157f9c47278119629  gcc/testsuite/g++.dg/expr/cast9.C
  0bfd27616952c8ba004102d8eaa6d65c  gcc/testsuite/g++.dg/expr/comma1.C
+ b453d21780690908160fa3721a036485  gcc/testsuite/g++.dg/expr/composite-ptr-type.C
  b27e986bef1cb10bc8c753783a8faee7  gcc/testsuite/g++.dg/expr/compound-asn1.C
  3c180246d5162c05266af924ad6ac090  gcc/testsuite/g++.dg/expr/cond1.C
  20edede9a48ddc0bc93fb7444a1a8b69  gcc/testsuite/g++.dg/expr/cond10.C
*************** b1bfb08b8dd0886fd13d34d4e48087cc  gcc/te
*** 16173,16178 ****
--- 17124,17132 ----
  e0ba8ce6144da0b9ed7164d2baac70c5  gcc/testsuite/g++.dg/expr/pr19355-1.C
  60bb03281297f707f9874467907ac6cf  gcc/testsuite/g++.dg/expr/pr29066.C
  45c0fe859061b956d94f9743c51c2fa6  gcc/testsuite/g++.dg/expr/ptr-arith1.C
+ 13112f3c26efe031e498e9d598fd432b  gcc/testsuite/g++.dg/expr/ptr-comp1.C
+ 9cd0d78bf3adf868453a660652fb543c  gcc/testsuite/g++.dg/expr/ptr-comp2.C
+ 8e7ebd3abd11e20445775435479bf925  gcc/testsuite/g++.dg/expr/ptr-comp3.C
  d108472b30fd8a2ccb535bb57ff25d0a  gcc/testsuite/g++.dg/expr/ptrmem1.C
  fdcee3f5eda44b0547ceaf548bc1c6e9  gcc/testsuite/g++.dg/expr/ptrmem10.C
  00a3281a5c60b23cc64b650f1e1bc13e  gcc/testsuite/g++.dg/expr/ptrmem4.C
*************** e5f9fb7d1c25afe2ab0823f495d251e5  gcc/te
*** 16303,16309 ****
  08df1b213d9eeb12775360e53eec043b  gcc/testsuite/g++.dg/ext/atomic-3.C
  3bd94d186fb606881384da59e8f70e70  gcc/testsuite/g++.dg/ext/atomic-4.C
  1950649c8f857d169571920a062b9b44  gcc/testsuite/g++.dg/ext/attr-access-2.C
! ffa943cec6add4d24848f34095f637ea  gcc/testsuite/g++.dg/ext/attr-access.C
  f48f0952142f3f8ed8f9b4eb6628059f  gcc/testsuite/g++.dg/ext/attr-alias-1.C
  c21af9dbc94718fc298b5a372185c516  gcc/testsuite/g++.dg/ext/attr-alias-2.C
  c539a731f1a6de3f18f5433e194cc609  gcc/testsuite/g++.dg/ext/attr-alias-3.C
--- 17257,17263 ----
  08df1b213d9eeb12775360e53eec043b  gcc/testsuite/g++.dg/ext/atomic-3.C
  3bd94d186fb606881384da59e8f70e70  gcc/testsuite/g++.dg/ext/atomic-4.C
  1950649c8f857d169571920a062b9b44  gcc/testsuite/g++.dg/ext/attr-access-2.C
! 668952a04b6886a4c1432ffb9dc255fc  gcc/testsuite/g++.dg/ext/attr-access.C
  f48f0952142f3f8ed8f9b4eb6628059f  gcc/testsuite/g++.dg/ext/attr-alias-1.C
  c21af9dbc94718fc298b5a372185c516  gcc/testsuite/g++.dg/ext/attr-alias-2.C
  c539a731f1a6de3f18f5433e194cc609  gcc/testsuite/g++.dg/ext/attr-alias-3.C
*************** c4d592607823e7f7c77865976b6361e7  gcc/te
*** 16317,16322 ****
--- 17271,17277 ----
  82a231e2eb77d00d265a0e2bba947dab  gcc/testsuite/g++.dg/ext/attr-copy.C
  ad620f3309b132f76780e1b18d9ccf44  gcc/testsuite/g++.dg/ext/attr-deprecated-1.C
  4f52cf13191aac1dca2c63c401a89783  gcc/testsuite/g++.dg/ext/attr-deprecated-2.C
+ 32409e2a44b020e2c5da0de856e26ebe  gcc/testsuite/g++.dg/ext/attr-expr1.C
  aa0f4c78aad650ce464c5b577e8460de  gcc/testsuite/g++.dg/ext/attr-flatten1.C
  05a897b022b2892abfd4bc74855a0921  gcc/testsuite/g++.dg/ext/attr-ifunc-1.C
  f6a0b8c7b4c6f39da51366edee2ee37f  gcc/testsuite/g++.dg/ext/attr-ifunc-2.C
*************** e838465650dcaf4ebfc99419e88cbd0d  gcc/te
*** 16333,16339 ****
  b37c917c3a9e6449d44ee2d37a652ed1  gcc/testsuite/g++.dg/ext/attr-noinline-3.C
  c0753527e7e02acfc0eb52c0c85b43ad  gcc/testsuite/g++.dg/ext/attr-noinline-4.C
  ac8e92acc4020cb32c1c3e0a9dff5a30  gcc/testsuite/g++.dg/ext/attr-noinline.C
! 414cd616e0fbb3c53d2f8fa18c8a214d  gcc/testsuite/g++.dg/ext/attr-nonnull.C
  6affbaf478378161ae232fe636e1999a  gcc/testsuite/g++.dg/ext/attr-noreturn-2.C
  261c636a0b72a6f3c392a97843be46fd  gcc/testsuite/g++.dg/ext/attr-noreturn-3.C
  4e6f03229f7a2fb9e6f4db04b2cc9ab7  gcc/testsuite/g++.dg/ext/attr-noreturn.C
--- 17288,17294 ----
  b37c917c3a9e6449d44ee2d37a652ed1  gcc/testsuite/g++.dg/ext/attr-noinline-3.C
  c0753527e7e02acfc0eb52c0c85b43ad  gcc/testsuite/g++.dg/ext/attr-noinline-4.C
  ac8e92acc4020cb32c1c3e0a9dff5a30  gcc/testsuite/g++.dg/ext/attr-noinline.C
! cdcb29a1916cc8e223708587fd620a64  gcc/testsuite/g++.dg/ext/attr-nonnull.C
  6affbaf478378161ae232fe636e1999a  gcc/testsuite/g++.dg/ext/attr-noreturn-2.C
  261c636a0b72a6f3c392a97843be46fd  gcc/testsuite/g++.dg/ext/attr-noreturn-3.C
  4e6f03229f7a2fb9e6f4db04b2cc9ab7  gcc/testsuite/g++.dg/ext/attr-noreturn.C
*************** a73db09c380f6e6f784f26040b011488  gcc/te
*** 16392,16398 ****
  ad40278e44f810062402fc64b141c84f  gcc/testsuite/g++.dg/ext/attrib46.C
  1c7d85537c72737692a80f15c0701a2c  gcc/testsuite/g++.dg/ext/attrib47.C
  ca699314b91eb8b52392070eaa448db1  gcc/testsuite/g++.dg/ext/attrib48.C
! 37359ec036867c1f61f910c2de03867a  gcc/testsuite/g++.dg/ext/attrib49.C
  ec01dbb0bb96c7cda806a516a5cf87d4  gcc/testsuite/g++.dg/ext/attrib5.C
  fc191c8337e77232a243ff44298f4d6b  gcc/testsuite/g++.dg/ext/attrib50.C
  af25a0593501f973025a5ff65b1951fd  gcc/testsuite/g++.dg/ext/attrib51.C
--- 17347,17353 ----
  ad40278e44f810062402fc64b141c84f  gcc/testsuite/g++.dg/ext/attrib46.C
  1c7d85537c72737692a80f15c0701a2c  gcc/testsuite/g++.dg/ext/attrib47.C
  ca699314b91eb8b52392070eaa448db1  gcc/testsuite/g++.dg/ext/attrib48.C
! 6c1c8d4a5644a211c0532050ea1cb35c  gcc/testsuite/g++.dg/ext/attrib49.C
  ec01dbb0bb96c7cda806a516a5cf87d4  gcc/testsuite/g++.dg/ext/attrib5.C
  fc191c8337e77232a243ff44298f4d6b  gcc/testsuite/g++.dg/ext/attrib50.C
  af25a0593501f973025a5ff65b1951fd  gcc/testsuite/g++.dg/ext/attrib51.C
*************** f6addddeaf5bf3773bacaf903a33daa7  gcc/te
*** 16407,16412 ****
--- 17362,17368 ----
  76284b29c6fce52f56ddbcc04acd3a97  gcc/testsuite/g++.dg/ext/attrib6.C
  b6c134d4646b46725f8f4f231df5349f  gcc/testsuite/g++.dg/ext/attrib60.C
  df4711200e4e7cd7c5366aa4bdd29d74  gcc/testsuite/g++.dg/ext/attrib61.C
+ 7fcf8dcb8e15b7e121eaede34f3aedfa  gcc/testsuite/g++.dg/ext/attrib62.C
  7af1e9265de26187b4a3a3880f99ac11  gcc/testsuite/g++.dg/ext/attrib7.C
  23c4a640241391acec5a1fd2c3fa5f25  gcc/testsuite/g++.dg/ext/attrib8.C
  db629587302d47a98b453a1702e900c9  gcc/testsuite/g++.dg/ext/attrib9.C
*************** db629587302d47a98b453a1702e900c9  gcc/te
*** 16415,16428 ****
  a8e28df2204ab9f7db8588620468deda  gcc/testsuite/g++.dg/ext/attribute-may-alias-3.C
  4e942e1ae7c363f18aaabe51cb1adca5  gcc/testsuite/g++.dg/ext/attribute-may-alias-4.C
  e9c8686674fcb227f6d617dace6be79d  gcc/testsuite/g++.dg/ext/attribute-may-alias-5.C
! ca94f9782ff19bc2f53f5f625b6feffe  gcc/testsuite/g++.dg/ext/attribute-test-1.C
  e2de938850cd9962c18c0007baaec934  gcc/testsuite/g++.dg/ext/attribute-test-2.C
  6ed72516e9f4d78a022f1835bdb61857  gcc/testsuite/g++.dg/ext/attribute-test-3.C
  fc54da8c09474e6aa630170df92c6131  gcc/testsuite/g++.dg/ext/attribute-test-4.C
  eaf75750cddfa9e45aeb6ff3b41b6de2  gcc/testsuite/g++.dg/ext/bases.C
  04ec7dfbe34b1cf4d456d6205af4fb8f  gcc/testsuite/g++.dg/ext/bases2.C
  d50bde0e4438bca5f499291e8e266e7c  gcc/testsuite/g++.dg/ext/bases3.C
! 923b176668f5084b5c9e372d30ecd044  gcc/testsuite/g++.dg/ext/bitfield1.C
  c96e03b84c7e1cbbeb5d28b361467e3f  gcc/testsuite/g++.dg/ext/bitfield2.C
  7f576a1821fbfcaac12d0427c7c95262  gcc/testsuite/g++.dg/ext/bitfield3.C
  27e7f277d640d9764e58437f0345ad9d  gcc/testsuite/g++.dg/ext/bitfield4.C
--- 17371,17384 ----
  a8e28df2204ab9f7db8588620468deda  gcc/testsuite/g++.dg/ext/attribute-may-alias-3.C
  4e942e1ae7c363f18aaabe51cb1adca5  gcc/testsuite/g++.dg/ext/attribute-may-alias-4.C
  e9c8686674fcb227f6d617dace6be79d  gcc/testsuite/g++.dg/ext/attribute-may-alias-5.C
! 45626fc73006e978854754f76f50cb76  gcc/testsuite/g++.dg/ext/attribute-test-1.C
  e2de938850cd9962c18c0007baaec934  gcc/testsuite/g++.dg/ext/attribute-test-2.C
  6ed72516e9f4d78a022f1835bdb61857  gcc/testsuite/g++.dg/ext/attribute-test-3.C
  fc54da8c09474e6aa630170df92c6131  gcc/testsuite/g++.dg/ext/attribute-test-4.C
  eaf75750cddfa9e45aeb6ff3b41b6de2  gcc/testsuite/g++.dg/ext/bases.C
  04ec7dfbe34b1cf4d456d6205af4fb8f  gcc/testsuite/g++.dg/ext/bases2.C
  d50bde0e4438bca5f499291e8e266e7c  gcc/testsuite/g++.dg/ext/bases3.C
! 541b1b0a262e2b932accd940c0ab744f  gcc/testsuite/g++.dg/ext/bitfield1.C
  c96e03b84c7e1cbbeb5d28b361467e3f  gcc/testsuite/g++.dg/ext/bitfield2.C
  7f576a1821fbfcaac12d0427c7c95262  gcc/testsuite/g++.dg/ext/bitfield3.C
  27e7f277d640d9764e58437f0345ad9d  gcc/testsuite/g++.dg/ext/bitfield4.C
*************** aee0568fa7f966a2398438c01e48d5d8  gcc/te
*** 16435,16440 ****
--- 17391,17397 ----
  f858ebd95b83f4b214a9ef94ced0beb5  gcc/testsuite/g++.dg/ext/builtin-arith-overflow-1.C
  85ec4b83c9e5b2bc81e40e73aa3f129b  gcc/testsuite/g++.dg/ext/builtin-arith-overflow-2.C
  fff9b32833bf9b9b7bbcc10ac630a0d9  gcc/testsuite/g++.dg/ext/builtin-bswap1.C
+ cb1f5787f134f3ea0a60b047b2e5da42  gcc/testsuite/g++.dg/ext/builtin-clear-padding-1.C
  e365f8ad6640a0436ca0135ba83acfe3  gcc/testsuite/g++.dg/ext/builtin-convertvector-1.C
  85ee2bb51775678716017f28fed495b0  gcc/testsuite/g++.dg/ext/builtin-has-attribute.C
  282c952c379da688cac62d8eceee8d16  gcc/testsuite/g++.dg/ext/builtin-has-attribute2.C
*************** b619a632f099ce3dab4b1867824fb8ba  gcc/te
*** 16534,16540 ****
  35f45813a9e02081105f413dba5483a7  gcc/testsuite/g++.dg/ext/cond3.C
  cdc7152adabb958f4aa80615de6f6929  gcc/testsuite/g++.dg/ext/cond4.C
  65a3298462ef1b7eae8f56cd64782e6f  gcc/testsuite/g++.dg/ext/consteval1.C
! 73539c1d4ba1b0802d549b4bbdc929c2  gcc/testsuite/g++.dg/ext/constexpr-attr-cleanup1.C
  6090149115c2b20514a8f0eea93988bf  gcc/testsuite/g++.dg/ext/constexpr-builtin1.C
  6f06936a70e143d2d4010948b821e19a  gcc/testsuite/g++.dg/ext/constexpr-pr82781.C
  3f1e0d73980f7d0ad16399fb51512b7b  gcc/testsuite/g++.dg/ext/constexpr-pr93549.C
--- 17491,17497 ----
  35f45813a9e02081105f413dba5483a7  gcc/testsuite/g++.dg/ext/cond3.C
  cdc7152adabb958f4aa80615de6f6929  gcc/testsuite/g++.dg/ext/cond4.C
  65a3298462ef1b7eae8f56cd64782e6f  gcc/testsuite/g++.dg/ext/consteval1.C
! aedb0bd74d236b797fb016d0b7034db4  gcc/testsuite/g++.dg/ext/constexpr-attr-cleanup1.C
  6090149115c2b20514a8f0eea93988bf  gcc/testsuite/g++.dg/ext/constexpr-builtin1.C
  6f06936a70e143d2d4010948b821e19a  gcc/testsuite/g++.dg/ext/constexpr-pr82781.C
  3f1e0d73980f7d0ad16399fb51512b7b  gcc/testsuite/g++.dg/ext/constexpr-pr93549.C
*************** fd3b6665cd27a15dcd7f9f07ad53481e  gcc/te
*** 16583,16589 ****
  2b3beeb98e4629b876a5c9e1613b55ec  gcc/testsuite/g++.dg/ext/dllimport7.C
  619d91e2e14d184184e55b956ce47635  gcc/testsuite/g++.dg/ext/dllimport8.C
  24e046aee349bd5ae33e22cd21cdfce5  gcc/testsuite/g++.dg/ext/dllimport9.C
! cfd6fca862458e42100b9df11b48ee9e  gcc/testsuite/g++.dg/ext/fixed1.C
  2dec269695cc75bd9f6561ca76c86464  gcc/testsuite/g++.dg/ext/fixed2.C
  88af3feecdd9869b201068a709831a35  gcc/testsuite/g++.dg/ext/flexarray-mangle-2.C
  31f2a2b3f054574d84fef409981d9033  gcc/testsuite/g++.dg/ext/flexarray-mangle.C
--- 17540,17546 ----
  2b3beeb98e4629b876a5c9e1613b55ec  gcc/testsuite/g++.dg/ext/dllimport7.C
  619d91e2e14d184184e55b956ce47635  gcc/testsuite/g++.dg/ext/dllimport8.C
  24e046aee349bd5ae33e22cd21cdfce5  gcc/testsuite/g++.dg/ext/dllimport9.C
! dba2df84120e79d3695ac23fcaa36a96  gcc/testsuite/g++.dg/ext/fixed1.C
  2dec269695cc75bd9f6561ca76c86464  gcc/testsuite/g++.dg/ext/fixed2.C
  88af3feecdd9869b201068a709831a35  gcc/testsuite/g++.dg/ext/flexarray-mangle-2.C
  31f2a2b3f054574d84fef409981d9033  gcc/testsuite/g++.dg/ext/flexarray-mangle.C
*************** c0dc41d4a72302e0ac9ef29725c83d30  gcc/te
*** 16593,16599 ****
  dd7550889cf0d41c9400551794f8692d  gcc/testsuite/g++.dg/ext/flexary10.C
  0b124f63dabdd2f90b8c042c8a233bf5  gcc/testsuite/g++.dg/ext/flexary11.C
  6a5488720de549743f03ad256dcef6d0  gcc/testsuite/g++.dg/ext/flexary12.C
! eb1675a6ae555aabd96820e386de976c  gcc/testsuite/g++.dg/ext/flexary13.C
  2ea7dcbe16574519f66a2d3f21059b8d  gcc/testsuite/g++.dg/ext/flexary14.C
  05fe822b180be902095b4ddaaa5dfc5e  gcc/testsuite/g++.dg/ext/flexary15.C
  210a2b48daeaa3ac9f1e524b6ea66a8c  gcc/testsuite/g++.dg/ext/flexary16.C
--- 17550,17556 ----
  dd7550889cf0d41c9400551794f8692d  gcc/testsuite/g++.dg/ext/flexary10.C
  0b124f63dabdd2f90b8c042c8a233bf5  gcc/testsuite/g++.dg/ext/flexary11.C
  6a5488720de549743f03ad256dcef6d0  gcc/testsuite/g++.dg/ext/flexary12.C
! 0c84425f353587c77748ab0c61b52806  gcc/testsuite/g++.dg/ext/flexary13.C
  2ea7dcbe16574519f66a2d3f21059b8d  gcc/testsuite/g++.dg/ext/flexary14.C
  05fe822b180be902095b4ddaaa5dfc5e  gcc/testsuite/g++.dg/ext/flexary15.C
  210a2b48daeaa3ac9f1e524b6ea66a8c  gcc/testsuite/g++.dg/ext/flexary16.C
*************** f66f889c43e1cd491c7d66ecdd645529  gcc/te
*** 16618,16623 ****
--- 17575,17581 ----
  b2c60991d5b6f21b7202a6d5a7c81412  gcc/testsuite/g++.dg/ext/flexary34.C
  17026c219335daa904b63aabf2ba8120  gcc/testsuite/g++.dg/ext/flexary35.C
  da96fc262f063d29280b10e42245318e  gcc/testsuite/g++.dg/ext/flexary36.C
+ af99e27a41b2fdd9e20db6d7755a990c  gcc/testsuite/g++.dg/ext/flexary37.C
  bdc1e53895229e84f994524314021292  gcc/testsuite/g++.dg/ext/flexary38.C
  7c5aa9e0bd6655b7c3b04f320d67e736  gcc/testsuite/g++.dg/ext/flexary4.C
  55d07993cbe972abdb053af6f481f34e  gcc/testsuite/g++.dg/ext/flexary5.C
*************** deb5d60ce9955a69d116b30edd2cf933  gcc/te
*** 16715,16720 ****
--- 17673,17684 ----
  d97310b12ece2c21881785f78f44e64a  gcc/testsuite/g++.dg/ext/is_literal_type1.C
  cce82a97f2d80557fc2ee719db6afda2  gcc/testsuite/g++.dg/ext/is_literal_type2.C
  c2a9f4dd52c4575b0a2274166a418bd4  gcc/testsuite/g++.dg/ext/is_literal_type3.C
+ e67120ecbad2182a8b5968b32fa2b9b2  gcc/testsuite/g++.dg/ext/is_nothrow_constructible1.C
+ f21216a45d73afa0f45a28cdfc72ee5e  gcc/testsuite/g++.dg/ext/is_nothrow_constructible2.C
+ 87907ea2536e2aec35a04030fc8592ce  gcc/testsuite/g++.dg/ext/is_nothrow_constructible3.C
+ fafacdd1be04cd54ee0db94365707bc0  gcc/testsuite/g++.dg/ext/is_nothrow_constructible4.C
+ f5236918ade9df134083c1a1193f0f88  gcc/testsuite/g++.dg/ext/is_nothrow_constructible5.C
+ 594bc3f1122959c08f61aa87d182e406  gcc/testsuite/g++.dg/ext/is_nothrow_constructible6.C
  23bf9f19377330f98f34038ddb75c870  gcc/testsuite/g++.dg/ext/is_pod.C
  84c3a14b6222536e4f6c6bb7519b5400  gcc/testsuite/g++.dg/ext/is_pod_98.C
  f316c6cb603f1746eab7e3d67e84b5c4  gcc/testsuite/g++.dg/ext/is_pod_incomplete.C
*************** d56b3b186d74ce2abcc3c8de6c92aa7e  gcc/te
*** 16793,16799 ****
  e7effb51effd21039f6a2279ef9eceb0  gcc/testsuite/g++.dg/ext/pr80363.C
  1b3ffc0732f44537886c801745c94ae1  gcc/testsuite/g++.dg/ext/pr81706.C
  71fb749805ae577817f89bff35879fdd  gcc/testsuite/g++.dg/ext/pr83996.C
! cd0cbeebe009b5dfd71bcf22febd3a49  gcc/testsuite/g++.dg/ext/pr84598.C
  f98308f5f6f065948a3528650a514bb8  gcc/testsuite/g++.dg/ext/pr84683.C
  34e0b268c0bb5c955827493d3be37c00  gcc/testsuite/g++.dg/ext/pr84724-1.C
  74c347613ec3c25e4da991429d6dcfc0  gcc/testsuite/g++.dg/ext/pr84724-2.C
--- 17757,17763 ----
  e7effb51effd21039f6a2279ef9eceb0  gcc/testsuite/g++.dg/ext/pr80363.C
  1b3ffc0732f44537886c801745c94ae1  gcc/testsuite/g++.dg/ext/pr81706.C
  71fb749805ae577817f89bff35879fdd  gcc/testsuite/g++.dg/ext/pr83996.C
! a4d7cad47f88b4ad6e237b461b2d6787  gcc/testsuite/g++.dg/ext/pr84598.C
  f98308f5f6f065948a3528650a514bb8  gcc/testsuite/g++.dg/ext/pr84683.C
  34e0b268c0bb5c955827493d3be37c00  gcc/testsuite/g++.dg/ext/pr84724-1.C
  74c347613ec3c25e4da991429d6dcfc0  gcc/testsuite/g++.dg/ext/pr84724-2.C
*************** d814f6f0836684a40f5b18c632f31b13  gcc/te
*** 16801,16809 ****
  ddac7a382afa64bc6fab7d0e2248ed55  gcc/testsuite/g++.dg/ext/pr84828.C
  fca1fb7faa22e3e4acb26bac8f67ef7a  gcc/testsuite/g++.dg/ext/pr84843-1.C
  33703c3d719b8109639f48b141e6c0d7  gcc/testsuite/g++.dg/ext/pr84843-2.C
! f70d6dc3a1a4426b96fa02bbb196e0a2  gcc/testsuite/g++.dg/ext/pr85503.C
  a355ef8a91fca7be6ca2387ec0ad27bd  gcc/testsuite/g++.dg/ext/pr93998.C
  0de975ae227332dc92f27d4dc970fa65  gcc/testsuite/g++.dg/ext/pr94197.C
  ad117686eb16e680b29f2f5e45ebe0df  gcc/testsuite/g++.dg/ext/pragmaweak1.C
  ae2794e104309a224e228d70e4cede48  gcc/testsuite/g++.dg/ext/pretty1.C
  faa8333681bedde3ba84daa60ec26ff8  gcc/testsuite/g++.dg/ext/pretty2.C
--- 17765,17774 ----
  ddac7a382afa64bc6fab7d0e2248ed55  gcc/testsuite/g++.dg/ext/pr84828.C
  fca1fb7faa22e3e4acb26bac8f67ef7a  gcc/testsuite/g++.dg/ext/pr84843-1.C
  33703c3d719b8109639f48b141e6c0d7  gcc/testsuite/g++.dg/ext/pr84843-2.C
! a3a19e204ac6e54df8904525f84903a0  gcc/testsuite/g++.dg/ext/pr85503.C
  a355ef8a91fca7be6ca2387ec0ad27bd  gcc/testsuite/g++.dg/ext/pr93998.C
  0de975ae227332dc92f27d4dc970fa65  gcc/testsuite/g++.dg/ext/pr94197.C
+ 2e98a912d14514a9d68f342ae3ccc4cd  gcc/testsuite/g++.dg/ext/pr99508.C
  ad117686eb16e680b29f2f5e45ebe0df  gcc/testsuite/g++.dg/ext/pragmaweak1.C
  ae2794e104309a224e228d70e4cede48  gcc/testsuite/g++.dg/ext/pretty1.C
  faa8333681bedde3ba84daa60ec26ff8  gcc/testsuite/g++.dg/ext/pretty2.C
*************** e4a78d4631d98dda8d34b1baf828c158  gcc/te
*** 16846,16853 ****
  96d325d0b1cb729ac3fd1b3d32a6b67b  gcc/testsuite/g++.dg/ext/sync-3.C
  8c1a53cd9e4e1b9fb0704282cb179e2b  gcc/testsuite/g++.dg/ext/sync-4.C
  fe2b610653d8cfc25626ade10b9f3f7e  gcc/testsuite/g++.dg/ext/temp-extend1.C
! fd488da65b9de81be655103cb823fd46  gcc/testsuite/g++.dg/ext/timevar1.C
! c24cf794da85348840a86c5ccf862b83  gcc/testsuite/g++.dg/ext/timevar2.C
  b0c4b5418bbb0cea1304a888bae68465  gcc/testsuite/g++.dg/ext/tmplattr1.C
  0a9cab0d65461d0c39982ea2387640db  gcc/testsuite/g++.dg/ext/tmplattr10.C
  089638758b33bf99338184db0181179c  gcc/testsuite/g++.dg/ext/tmplattr2.C
--- 17811,17818 ----
  96d325d0b1cb729ac3fd1b3d32a6b67b  gcc/testsuite/g++.dg/ext/sync-3.C
  8c1a53cd9e4e1b9fb0704282cb179e2b  gcc/testsuite/g++.dg/ext/sync-4.C
  fe2b610653d8cfc25626ade10b9f3f7e  gcc/testsuite/g++.dg/ext/temp-extend1.C
! 2675e23e86fbe9a78af350a8266a3fc5  gcc/testsuite/g++.dg/ext/timevar1.C
! 57829a88d996cfd97d30cc0272b34c02  gcc/testsuite/g++.dg/ext/timevar2.C
  b0c4b5418bbb0cea1304a888bae68465  gcc/testsuite/g++.dg/ext/tmplattr1.C
  0a9cab0d65461d0c39982ea2387640db  gcc/testsuite/g++.dg/ext/tmplattr10.C
  089638758b33bf99338184db0181179c  gcc/testsuite/g++.dg/ext/tmplattr2.C
*************** cac7810767ae23faa6823a798e9c3cea  gcc/te
*** 16876,16882 ****
  a9d136cfb86815cbf4d2e46089c90ce0  gcc/testsuite/g++.dg/ext/typeof8.C
  d7e6d10c23ed31b44c2e6c3268ab2b30  gcc/testsuite/g++.dg/ext/typeof9.C
  365e2c3a8b25788d819bb132cd50c108  gcc/testsuite/g++.dg/ext/unary_trait_incomplete.C
! 7b042b4eb820fa7d1a9bc713f37c33fc  gcc/testsuite/g++.dg/ext/undef-bool-1.C
  b56af9a8974b21c26c4d8df3e75c33dd  gcc/testsuite/g++.dg/ext/underlying_type1.C
  999bb6333438249f93af4d0c7b177d10  gcc/testsuite/g++.dg/ext/underlying_type10.C
  32d08b925dba9e7ca38d9ec9643c84fa  gcc/testsuite/g++.dg/ext/underlying_type11.C
--- 17841,17847 ----
  a9d136cfb86815cbf4d2e46089c90ce0  gcc/testsuite/g++.dg/ext/typeof8.C
  d7e6d10c23ed31b44c2e6c3268ab2b30  gcc/testsuite/g++.dg/ext/typeof9.C
  365e2c3a8b25788d819bb132cd50c108  gcc/testsuite/g++.dg/ext/unary_trait_incomplete.C
! ca736ec11bb72d52657ce5c352fa4126  gcc/testsuite/g++.dg/ext/undef-bool-1.C
  b56af9a8974b21c26c4d8df3e75c33dd  gcc/testsuite/g++.dg/ext/underlying_type1.C
  999bb6333438249f93af4d0c7b177d10  gcc/testsuite/g++.dg/ext/underlying_type10.C
  32d08b925dba9e7ca38d9ec9643c84fa  gcc/testsuite/g++.dg/ext/underlying_type11.C
*************** ed785b06528c5ed0fec073ec7ec447d2  gcc/te
*** 16901,16907 ****
  8489bdb85e5446c128b69c25e8731e24  gcc/testsuite/g++.dg/ext/utf-badconcat.C
  4d3e1e2d76aabbc270bb762c8b9aab48  gcc/testsuite/g++.dg/ext/utf-badconcat2.C
  dc07217be8352750ef7e90618d9a0325  gcc/testsuite/g++.dg/ext/utf-cvt-char8_t.C
! 2a1ac787634fd59c24b901511b971a46  gcc/testsuite/g++.dg/ext/utf-cvt.C
  bb128ce7c4aa022f8046c469bbe3faa3  gcc/testsuite/g++.dg/ext/utf-cxx0x.C
  07e45385218c387ea86d515d2c0bb6ad  gcc/testsuite/g++.dg/ext/utf-cxx98.C
  5726c2969c1004bdc054dc6c4dbe7b62  gcc/testsuite/g++.dg/ext/utf-dflt.C
--- 17866,17872 ----
  8489bdb85e5446c128b69c25e8731e24  gcc/testsuite/g++.dg/ext/utf-badconcat.C
  4d3e1e2d76aabbc270bb762c8b9aab48  gcc/testsuite/g++.dg/ext/utf-badconcat2.C
  dc07217be8352750ef7e90618d9a0325  gcc/testsuite/g++.dg/ext/utf-cvt-char8_t.C
! bf8ab1fbee9372adebdfaa9a7f4b1688  gcc/testsuite/g++.dg/ext/utf-cvt.C
  bb128ce7c4aa022f8046c469bbe3faa3  gcc/testsuite/g++.dg/ext/utf-cxx0x.C
  07e45385218c387ea86d515d2c0bb6ad  gcc/testsuite/g++.dg/ext/utf-cxx98.C
  5726c2969c1004bdc054dc6c4dbe7b62  gcc/testsuite/g++.dg/ext/utf-dflt.C
*************** b23df01dd6bcf3a8469032ec56f50cca  gcc/te
*** 16952,16958 ****
  0ef4dacbc69d231f805bc247669d5157  gcc/testsuite/g++.dg/ext/vector25.C
  90e2e9a7d8de41b91b36e73f97d2d368  gcc/testsuite/g++.dg/ext/vector26.C
  3cf136e3fe2bdc443fd4f83b9b2da48e  gcc/testsuite/g++.dg/ext/vector27.C
! abdeb34b11f4d994523c72c30c39e053  gcc/testsuite/g++.dg/ext/vector28.C
  586098ef0e0e0ff1300efeabda4cf0fa  gcc/testsuite/g++.dg/ext/vector29.C
  06e44a4208434952189cfd9cd55ae2d8  gcc/testsuite/g++.dg/ext/vector3.C
  6ca255361ad69ad75b523ad0b133b0fb  gcc/testsuite/g++.dg/ext/vector30.C
--- 17917,17923 ----
  0ef4dacbc69d231f805bc247669d5157  gcc/testsuite/g++.dg/ext/vector25.C
  90e2e9a7d8de41b91b36e73f97d2d368  gcc/testsuite/g++.dg/ext/vector26.C
  3cf136e3fe2bdc443fd4f83b9b2da48e  gcc/testsuite/g++.dg/ext/vector27.C
! 2ea015b73c077fb5d4aac325d1543587  gcc/testsuite/g++.dg/ext/vector28.C
  586098ef0e0e0ff1300efeabda4cf0fa  gcc/testsuite/g++.dg/ext/vector29.C
  06e44a4208434952189cfd9cd55ae2d8  gcc/testsuite/g++.dg/ext/vector3.C
  6ca255361ad69ad75b523ad0b133b0fb  gcc/testsuite/g++.dg/ext/vector30.C
*************** ff1db1bf54183447b20849ac3c27f4ab  gcc/te
*** 16967,16972 ****
--- 17932,17938 ----
  5c11df1535be5ad9f9d71b5736be9c81  gcc/testsuite/g++.dg/ext/vector38.C
  72f43e40f9934a61ef48ff977ec8f942  gcc/testsuite/g++.dg/ext/vector39.C
  1d6b45dce331a414b31b64c5104ab383  gcc/testsuite/g++.dg/ext/vector4.C
+ 7527a84a941056775919388a2f30abe5  gcc/testsuite/g++.dg/ext/vector40.C
  3231264b4b96091ab8a2351e76707e8d  gcc/testsuite/g++.dg/ext/vector5.C
  f630b6880676201345d2e753913e064c  gcc/testsuite/g++.dg/ext/vector6.C
  499980717843a208168505a264f263e3  gcc/testsuite/g++.dg/ext/vector7.C
*************** fada77e89afed01f6b16c99bba16e18a  gcc/te
*** 17048,17060 ****
  dc76fc17bcb2fe7dfe39be101a9bd6b5  gcc/testsuite/g++.dg/ext/visibility/warn4.C
  40de40133f2bc2f79491601ee0e6ed42  gcc/testsuite/g++.dg/ext/visibility/warn5.C
  4082034db0092dc3aa5494bbab342da6  gcc/testsuite/g++.dg/ext/visibility/warn6.C
! 2d67d40ae5d9fe9bc1ca39101524a8fd  gcc/testsuite/g++.dg/ext/vla1.C
  7967571bc95c3a621226952301d1fbee  gcc/testsuite/g++.dg/ext/vla10.C
  c5bcafe042901a792f46e18883b76b80  gcc/testsuite/g++.dg/ext/vla11.C
  d6ec4274cb64a4db7ca0c60b6cd380b0  gcc/testsuite/g++.dg/ext/vla12.C
  29d6caf5110470674c8b7228eb8626f3  gcc/testsuite/g++.dg/ext/vla13.C
  d064d37eab722d0bbe6af95ae3d5c12d  gcc/testsuite/g++.dg/ext/vla14.C
! 262b0d85a04b82cf3b0203b4b399b507  gcc/testsuite/g++.dg/ext/vla15.C
  3906162597e70fb55c58c873cfd6d1e2  gcc/testsuite/g++.dg/ext/vla16.C
  27174f17bf4ed6dc2e7cfe6b2ac58bda  gcc/testsuite/g++.dg/ext/vla17.C
  f964b5b8563862b3b5de4077cc1fb8e4  gcc/testsuite/g++.dg/ext/vla18.C
--- 18014,18026 ----
  dc76fc17bcb2fe7dfe39be101a9bd6b5  gcc/testsuite/g++.dg/ext/visibility/warn4.C
  40de40133f2bc2f79491601ee0e6ed42  gcc/testsuite/g++.dg/ext/visibility/warn5.C
  4082034db0092dc3aa5494bbab342da6  gcc/testsuite/g++.dg/ext/visibility/warn6.C
! 30bb3952596b6a02b52d5dad8e1de252  gcc/testsuite/g++.dg/ext/vla1.C
  7967571bc95c3a621226952301d1fbee  gcc/testsuite/g++.dg/ext/vla10.C
  c5bcafe042901a792f46e18883b76b80  gcc/testsuite/g++.dg/ext/vla11.C
  d6ec4274cb64a4db7ca0c60b6cd380b0  gcc/testsuite/g++.dg/ext/vla12.C
  29d6caf5110470674c8b7228eb8626f3  gcc/testsuite/g++.dg/ext/vla13.C
  d064d37eab722d0bbe6af95ae3d5c12d  gcc/testsuite/g++.dg/ext/vla14.C
! 3253440b1682c03d37e9fe0077dc39cb  gcc/testsuite/g++.dg/ext/vla15.C
  3906162597e70fb55c58c873cfd6d1e2  gcc/testsuite/g++.dg/ext/vla16.C
  27174f17bf4ed6dc2e7cfe6b2ac58bda  gcc/testsuite/g++.dg/ext/vla17.C
  f964b5b8563862b3b5de4077cc1fb8e4  gcc/testsuite/g++.dg/ext/vla18.C
*************** f964b5b8563862b3b5de4077cc1fb8e4  gcc/te
*** 17062,17068 ****
  83bf1823c9e81467f20ea26043a713e9  gcc/testsuite/g++.dg/ext/vla2.C
  d35e3d499f9c61083c8cc1857f8e1c17  gcc/testsuite/g++.dg/ext/vla20.C
  9b6080415288de72842bd85208414ade  gcc/testsuite/g++.dg/ext/vla21.C
! 0ba2afbdaf6e73dfcd5ff164e2020f97  gcc/testsuite/g++.dg/ext/vla22.C
  6aaa10f349349a2417e726c48cb7e61e  gcc/testsuite/g++.dg/ext/vla3.C
  aaa77e556dd365b972bc30be4df0d443  gcc/testsuite/g++.dg/ext/vla4.C
  cd0140e3425e97d1c4b919a0ef8b54c3  gcc/testsuite/g++.dg/ext/vla5.C
--- 18028,18035 ----
  83bf1823c9e81467f20ea26043a713e9  gcc/testsuite/g++.dg/ext/vla2.C
  d35e3d499f9c61083c8cc1857f8e1c17  gcc/testsuite/g++.dg/ext/vla20.C
  9b6080415288de72842bd85208414ade  gcc/testsuite/g++.dg/ext/vla21.C
! a74556a89523d9e92d56253803605cd3  gcc/testsuite/g++.dg/ext/vla22.C
! 094facd4da54e59d052fc6a3d9479d29  gcc/testsuite/g++.dg/ext/vla23.C
  6aaa10f349349a2417e726c48cb7e61e  gcc/testsuite/g++.dg/ext/vla3.C
  aaa77e556dd365b972bc30be4df0d443  gcc/testsuite/g++.dg/ext/vla4.C
  cd0140e3425e97d1c4b919a0ef8b54c3  gcc/testsuite/g++.dg/ext/vla5.C
*************** a90a1ccb44e24f11ce27ee962f1c9c2d  gcc/te
*** 17088,17094 ****
  be0288522b31602de2c7b3eeb2fb4b18  gcc/testsuite/g++.dg/gcov/gcov-14.C
  56dbe86604b8680b3d2c3f63fd217d0a  gcc/testsuite/g++.dg/gcov/gcov-15.C
  1a43a673011a87c94649d32b935958ea  gcc/testsuite/g++.dg/gcov/gcov-16.C
! 8a878271fda0c051fbf0d23ab78d7afe  gcc/testsuite/g++.dg/gcov/gcov-2.C
  0e241a16c3faf2f0c387bd2978d2b824  gcc/testsuite/g++.dg/gcov/gcov-3.C
  2c83bff9a3f14aa6fc5d7755bf82c9b6  gcc/testsuite/g++.dg/gcov/gcov-3.h
  a7c093e32d8e0cc08e02c3253748979c  gcc/testsuite/g++.dg/gcov/gcov-4.C
--- 18055,18062 ----
  be0288522b31602de2c7b3eeb2fb4b18  gcc/testsuite/g++.dg/gcov/gcov-14.C
  56dbe86604b8680b3d2c3f63fd217d0a  gcc/testsuite/g++.dg/gcov/gcov-15.C
  1a43a673011a87c94649d32b935958ea  gcc/testsuite/g++.dg/gcov/gcov-16.C
! e805ae6edf39a4a965f4aeb5e98c1ab7  gcc/testsuite/g++.dg/gcov/gcov-17.C
! 089da33c19e685cf43a3b1b99fa8cee6  gcc/testsuite/g++.dg/gcov/gcov-2.C
  0e241a16c3faf2f0c387bd2978d2b824  gcc/testsuite/g++.dg/gcov/gcov-3.C
  2c83bff9a3f14aa6fc5d7755bf82c9b6  gcc/testsuite/g++.dg/gcov/gcov-3.h
  a7c093e32d8e0cc08e02c3253748979c  gcc/testsuite/g++.dg/gcov/gcov-4.C
*************** a7c093e32d8e0cc08e02c3253748979c  gcc/te
*** 17099,17107 ****
  1daf1c411209223b51591e3ac9090bfb  gcc/testsuite/g++.dg/gcov/gcov-dump-1.C
  7def4ed5b129018a31fbca4ad8fd6300  gcc/testsuite/g++.dg/gcov/gcov-dump-2.C
  7c98164def1e3b4af2573a0cde4a581e  gcc/testsuite/g++.dg/gcov/gcov-threads-1.C
! e8016e64b36ea6f92c155227c4f60b5f  gcc/testsuite/g++.dg/gcov/gcov.exp
  28167c93ffea74cb328ff3cd087d643a  gcc/testsuite/g++.dg/gcov/gcovpart-12b.C
! 25de875469d245ed763e16daa6d3e695  gcc/testsuite/g++.dg/gcov/loop.C
  7d9eee67c3f8041f2ddace387e1df1c2  gcc/testsuite/g++.dg/gcov/pr16855-priority.C
  0e2959a120e9dabe4dc820b1236a1579  gcc/testsuite/g++.dg/gcov/pr16855.C
  62015e4e627cd00c71bb0efd21af8d60  gcc/testsuite/g++.dg/gcov/pr84548.C
--- 18067,18076 ----
  1daf1c411209223b51591e3ac9090bfb  gcc/testsuite/g++.dg/gcov/gcov-dump-1.C
  7def4ed5b129018a31fbca4ad8fd6300  gcc/testsuite/g++.dg/gcov/gcov-dump-2.C
  7c98164def1e3b4af2573a0cde4a581e  gcc/testsuite/g++.dg/gcov/gcov-threads-1.C
! 03ad48bbeb7dd85884131d311266dac2  gcc/testsuite/g++.dg/gcov/gcov.exp
! f1179ddefb9d0f823abc3eb9c07a73a1  gcc/testsuite/g++.dg/gcov/gcov.py
  28167c93ffea74cb328ff3cd087d643a  gcc/testsuite/g++.dg/gcov/gcovpart-12b.C
! 4486858dfdc63ab6e7f3c42c2b6b11ed  gcc/testsuite/g++.dg/gcov/loop.C
  7d9eee67c3f8041f2ddace387e1df1c2  gcc/testsuite/g++.dg/gcov/pr16855-priority.C
  0e2959a120e9dabe4dc820b1236a1579  gcc/testsuite/g++.dg/gcov/pr16855.C
  62015e4e627cd00c71bb0efd21af8d60  gcc/testsuite/g++.dg/gcov/pr84548.C
*************** c8c006792fd429653df69e08d74da961  gcc/te
*** 17110,17134 ****
  4b51d237aa9bfa5af327e60a92ae443d  gcc/testsuite/g++.dg/gcov/pr88263-2.C
  2256e0b8d2be05ed34e75663798e12c1  gcc/testsuite/g++.dg/gcov/pr88263.C
  14809830afac2f8e87ac2dfecece2811  gcc/testsuite/g++.dg/gcov/pr97069.C
  7ad2f2c71c908fc0a03c6dc6be0bbd06  gcc/testsuite/g++.dg/gcov/ternary.C
! c56c9bc96d6ffb74b370972c513e82d0  gcc/testsuite/g++.dg/goacc-gomp/goacc-gomp.exp
  57aec36453f242d12bf5515cb425f04e  gcc/testsuite/g++.dg/goacc/cache-1.C
  1f2e4a88f87fa010e31b6c237e00aea7  gcc/testsuite/g++.dg/goacc/cache-2.C
! b840f293143db1590792daa6b3dc4c3f  gcc/testsuite/g++.dg/goacc/cache-3-1.C
  a730ee1a3c27eea558527775d082bec6  gcc/testsuite/g++.dg/goacc/cache-3-2.C
  820844228685ed372375612618b6a716  gcc/testsuite/g++.dg/goacc/data-1.C
! fbe9820bd578944613a9936dbd66ffcb  gcc/testsuite/g++.dg/goacc/data-clause-1.C
  866b94f28bffcdc4daadd6a07d80a096  gcc/testsuite/g++.dg/goacc/data-clause-2.C
  ab5a2e3886c2a5718ee179f9c9a446ce  gcc/testsuite/g++.dg/goacc/declare-pr94120.C
  2b70bd2b15144e92ee104c07a8e2bc13  gcc/testsuite/g++.dg/goacc/deviceptr-1.C
  50fb26ed859d201ce4b714967a5c4066  gcc/testsuite/g++.dg/goacc/firstprivate-mappings-1.C
! 46bb9ceeee177c041d50a650267e25d2  gcc/testsuite/g++.dg/goacc/goacc.exp
  4fb843954b38655551a396240e94dda0  gcc/testsuite/g++.dg/goacc/mdc.C
  e2e937b81f60d45e6f0fbe6cdc7207e4  gcc/testsuite/g++.dg/goacc/reference.C
  18b27d379a2a779f530009ced1114ae3  gcc/testsuite/g++.dg/goacc/routine-1.C
  9be1fd00ad32c627f4396d3b564fad56  gcc/testsuite/g++.dg/goacc/routine-2.C
  af26fce137579d8a882aa73c2269b690  gcc/testsuite/g++.dg/goacc/template.C
  63c7a5fb86ca9e170a766952f0dda797  gcc/testsuite/g++.dg/goacc/tile-1.C
  0f8c6d06e1f378355b0404338dbd037b  gcc/testsuite/g++.dg/gomp/atomic-14.C
  4c00b09b19e9a90c9f90d361477d4f07  gcc/testsuite/g++.dg/gomp/atomic-17.C
  1ca861261dd5cdd3c5786a09fbd6c14a  gcc/testsuite/g++.dg/gomp/atomic-18.C
--- 18079,18109 ----
  4b51d237aa9bfa5af327e60a92ae443d  gcc/testsuite/g++.dg/gcov/pr88263-2.C
  2256e0b8d2be05ed34e75663798e12c1  gcc/testsuite/g++.dg/gcov/pr88263.C
  14809830afac2f8e87ac2dfecece2811  gcc/testsuite/g++.dg/gcov/pr97069.C
+ a967f09270d7b705a4f98a125b76c7a6  gcc/testsuite/g++.dg/gcov/pr98273.C
  7ad2f2c71c908fc0a03c6dc6be0bbd06  gcc/testsuite/g++.dg/gcov/ternary.C
! 13fff407256fdeadcb3617a113957a17  gcc/testsuite/g++.dg/gcov/test-gcov-17.py
! 756bdf5e4081168579b0347da701c42f  gcc/testsuite/g++.dg/gcov/test-pr98273.py
! a816b42138c64e009ad7f88f876b3803  gcc/testsuite/g++.dg/goacc-gomp/goacc-gomp.exp
  57aec36453f242d12bf5515cb425f04e  gcc/testsuite/g++.dg/goacc/cache-1.C
  1f2e4a88f87fa010e31b6c237e00aea7  gcc/testsuite/g++.dg/goacc/cache-2.C
! 7f9f08a09fc949be2045ab00795bc184  gcc/testsuite/g++.dg/goacc/cache-3-1.C
  a730ee1a3c27eea558527775d082bec6  gcc/testsuite/g++.dg/goacc/cache-3-2.C
  820844228685ed372375612618b6a716  gcc/testsuite/g++.dg/goacc/data-1.C
! d4df15d043d8968539a88c1beeda4e7e  gcc/testsuite/g++.dg/goacc/data-clause-1.C
  866b94f28bffcdc4daadd6a07d80a096  gcc/testsuite/g++.dg/goacc/data-clause-2.C
  ab5a2e3886c2a5718ee179f9c9a446ce  gcc/testsuite/g++.dg/goacc/declare-pr94120.C
  2b70bd2b15144e92ee104c07a8e2bc13  gcc/testsuite/g++.dg/goacc/deviceptr-1.C
  50fb26ed859d201ce4b714967a5c4066  gcc/testsuite/g++.dg/goacc/firstprivate-mappings-1.C
! ada0b64fd084872e20f55ba767d06b29  gcc/testsuite/g++.dg/goacc/goacc.exp
  4fb843954b38655551a396240e94dda0  gcc/testsuite/g++.dg/goacc/mdc.C
  e2e937b81f60d45e6f0fbe6cdc7207e4  gcc/testsuite/g++.dg/goacc/reference.C
  18b27d379a2a779f530009ced1114ae3  gcc/testsuite/g++.dg/goacc/routine-1.C
  9be1fd00ad32c627f4396d3b564fad56  gcc/testsuite/g++.dg/goacc/routine-2.C
  af26fce137579d8a882aa73c2269b690  gcc/testsuite/g++.dg/goacc/template.C
  63c7a5fb86ca9e170a766952f0dda797  gcc/testsuite/g++.dg/goacc/tile-1.C
+ e741249479c6c7025b48c7e503fcff98  gcc/testsuite/g++.dg/gomp/allocate-1.C
+ 49202612ed526412e25f866f82bd0573  gcc/testsuite/g++.dg/gomp/allocate-2.C
+ 0c676d0276d06d9e6ec17a845969619a  gcc/testsuite/g++.dg/gomp/allocate-3.C
  0f8c6d06e1f378355b0404338dbd037b  gcc/testsuite/g++.dg/gomp/atomic-14.C
  4c00b09b19e9a90c9f90d361477d4f07  gcc/testsuite/g++.dg/gomp/atomic-17.C
  1ca861261dd5cdd3c5786a09fbd6c14a  gcc/testsuite/g++.dg/gomp/atomic-18.C
*************** e183953e6fde368f2c7dba36fc31364f  gcc/te
*** 17159,17165 ****
  fe6047f5ca7e2eac34792a3acc1193c2  gcc/testsuite/g++.dg/gomp/copyin-1.C
  73dc4c4897395dc7c307860e0c371fe1  gcc/testsuite/g++.dg/gomp/critical-1.C
  67c49c3ef2f12e8a48820530d769fbd8  gcc/testsuite/g++.dg/gomp/critical-2.C
! e37018ce176ced10f86c28cdd98befdf  gcc/testsuite/g++.dg/gomp/critical-3.C
  95693fccfc1037bad323688e488ff28a  gcc/testsuite/g++.dg/gomp/declare-simd-1.C
  6363ff64193eeb8db033202fd0e140f2  gcc/testsuite/g++.dg/gomp/declare-simd-2.C
  d10a9dad0712612df3be24ae02ed9f6a  gcc/testsuite/g++.dg/gomp/declare-simd-3.C
--- 18134,18140 ----
  fe6047f5ca7e2eac34792a3acc1193c2  gcc/testsuite/g++.dg/gomp/copyin-1.C
  73dc4c4897395dc7c307860e0c371fe1  gcc/testsuite/g++.dg/gomp/critical-1.C
  67c49c3ef2f12e8a48820530d769fbd8  gcc/testsuite/g++.dg/gomp/critical-2.C
! d51c209a538c8e7658a85ca99d8eb17b  gcc/testsuite/g++.dg/gomp/critical-3.C
  95693fccfc1037bad323688e488ff28a  gcc/testsuite/g++.dg/gomp/declare-simd-1.C
  6363ff64193eeb8db033202fd0e140f2  gcc/testsuite/g++.dg/gomp/declare-simd-2.C
  d10a9dad0712612df3be24ae02ed9f6a  gcc/testsuite/g++.dg/gomp/declare-simd-3.C
*************** d66c2d955608b28091f45938dce39989  gcc/te
*** 17169,17174 ****
--- 18144,18150 ----
  cd6bf0619b43f5bc63b2d8c757532754  gcc/testsuite/g++.dg/gomp/declare-simd-7.C
  634bd3d929883e4c691a682ea0817a3e  gcc/testsuite/g++.dg/gomp/declare-target-1.C
  afbb2c51ce08bb72df769bd10e2948b8  gcc/testsuite/g++.dg/gomp/declare-target-2.C
+ 00c210712d93b7b86bd0fd979516b3a4  gcc/testsuite/g++.dg/gomp/declare-target-3.C
  661796737d5bdc4f428545f6e32f9ac2  gcc/testsuite/g++.dg/gomp/declare-variant-1.C
  14f834df1acdef3ccbee41dbf18da40d  gcc/testsuite/g++.dg/gomp/declare-variant-2.C
  61438eb8a5d5231221ac5015a580d002  gcc/testsuite/g++.dg/gomp/declare-variant-3.C
*************** a3f2e52db25001dd2c0c657370103181  gcc/te
*** 17177,17184 ****
  123fa55359a62c8d9629112336b31c22  gcc/testsuite/g++.dg/gomp/declare-variant-6.C
  dab31b3a40ca29ce009cab53890820ab  gcc/testsuite/g++.dg/gomp/declare-variant-7.C
  f1c961906365e69ec5d85efca251f7e0  gcc/testsuite/g++.dg/gomp/declare-variant-8.C
! c75b0d654d83deb86c542efca3d79c2b  gcc/testsuite/g++.dg/gomp/depend-1.C
! cdd29f4ee662c46448400d10d8f0535c  gcc/testsuite/g++.dg/gomp/depend-2.C
  fb99d6d7d52ead46e97905bf42cf8877  gcc/testsuite/g++.dg/gomp/depend-iterator-1.C
  55e3a09904888da975d3d4b76f18d294  gcc/testsuite/g++.dg/gomp/depend-iterator-2.C
  3bb931acb0bb9987aa54258180ee8d8b  gcc/testsuite/g++.dg/gomp/depobj-1.C
--- 18153,18160 ----
  123fa55359a62c8d9629112336b31c22  gcc/testsuite/g++.dg/gomp/declare-variant-6.C
  dab31b3a40ca29ce009cab53890820ab  gcc/testsuite/g++.dg/gomp/declare-variant-7.C
  f1c961906365e69ec5d85efca251f7e0  gcc/testsuite/g++.dg/gomp/declare-variant-8.C
! 7051d268375289f1835cdff78728de81  gcc/testsuite/g++.dg/gomp/depend-1.C
! 5ed836221748ac8946497bda6d311d53  gcc/testsuite/g++.dg/gomp/depend-2.C
  fb99d6d7d52ead46e97905bf42cf8877  gcc/testsuite/g++.dg/gomp/depend-iterator-1.C
  55e3a09904888da975d3d4b76f18d294  gcc/testsuite/g++.dg/gomp/depend-iterator-2.C
  3bb931acb0bb9987aa54258180ee8d8b  gcc/testsuite/g++.dg/gomp/depobj-1.C
*************** b5dd1e3c7e6a1c45e25d9fbbcf82dc0c  gcc/te
*** 17206,17224 ****
  80a82ac0d4faa464e36b67b133df4697  gcc/testsuite/g++.dg/gomp/for-7.C
  d9604d99f8b1a6974afc5a3cab2765b3  gcc/testsuite/g++.dg/gomp/for-8.C
  34eb86e893e0bd796aad8d236b5bc215  gcc/testsuite/g++.dg/gomp/for-9.C
! fe2e9ca60d004cd7764e38938b60bb3e  gcc/testsuite/g++.dg/gomp/gomp.exp
  eb763d050fd680e1a3302fbda441475d  gcc/testsuite/g++.dg/gomp/lastprivate-1.C
  7f682781cd88149270eb73eb44f419f7  gcc/testsuite/g++.dg/gomp/linear-1.C
  2fe09fbd7df28122d262deb35faa2ae9  gcc/testsuite/g++.dg/gomp/linear-2.C
! 6dcaf2b099c377baab33fe0ad0e0e268  gcc/testsuite/g++.dg/gomp/loop-1.C
! 0db0b5c5ee97400a4061d2ef2ccb3e62  gcc/testsuite/g++.dg/gomp/loop-2.C
  af9aa00aecd9c08bb1bacab6e47db24c  gcc/testsuite/g++.dg/gomp/loop-3.C
  84c5a2238f80432c8d0755b414a0d9b8  gcc/testsuite/g++.dg/gomp/loop-4.C
  a4271cf7824f2a837486e7951ee23884  gcc/testsuite/g++.dg/gomp/macro-1.C
  eabb0107af4ef893414bb3cef506ad03  gcc/testsuite/g++.dg/gomp/macro-2.C
  942f8defe03c25bf08f780cf22c0a1e5  gcc/testsuite/g++.dg/gomp/macro-3.C
  9254a2c9545e874172464af7e042681f  gcc/testsuite/g++.dg/gomp/macro-4.C
! dbc7af2c9881647a9db4f06611448f96  gcc/testsuite/g++.dg/gomp/map-1.C
  cd955c2057012ba387a6b029e23c0d53  gcc/testsuite/g++.dg/gomp/map-2.C
  9dff449fe2d97c4b3ade07b982e69364  gcc/testsuite/g++.dg/gomp/master-1.C
  c6830eca56ca17885a14ffa21aeb16c4  gcc/testsuite/g++.dg/gomp/master-2.C
--- 18182,18202 ----
  80a82ac0d4faa464e36b67b133df4697  gcc/testsuite/g++.dg/gomp/for-7.C
  d9604d99f8b1a6974afc5a3cab2765b3  gcc/testsuite/g++.dg/gomp/for-8.C
  34eb86e893e0bd796aad8d236b5bc215  gcc/testsuite/g++.dg/gomp/for-9.C
! 51bb99ec40d787387cea7c547cae83bc  gcc/testsuite/g++.dg/gomp/gomp.exp
  eb763d050fd680e1a3302fbda441475d  gcc/testsuite/g++.dg/gomp/lastprivate-1.C
  7f682781cd88149270eb73eb44f419f7  gcc/testsuite/g++.dg/gomp/linear-1.C
  2fe09fbd7df28122d262deb35faa2ae9  gcc/testsuite/g++.dg/gomp/linear-2.C
! b233240aa872c73ae04a12a8d81356a7  gcc/testsuite/g++.dg/gomp/loop-1.C
! c220284cfbbe6d86192d110c5d4bcf7a  gcc/testsuite/g++.dg/gomp/loop-2.C
  af9aa00aecd9c08bb1bacab6e47db24c  gcc/testsuite/g++.dg/gomp/loop-3.C
  84c5a2238f80432c8d0755b414a0d9b8  gcc/testsuite/g++.dg/gomp/loop-4.C
+ 16c5d24784bf5777212249fa80d7581d  gcc/testsuite/g++.dg/gomp/loop-5.C
+ 113dea997a32d872d9e4ab19dfaa1722  gcc/testsuite/g++.dg/gomp/loop-6.C
  a4271cf7824f2a837486e7951ee23884  gcc/testsuite/g++.dg/gomp/macro-1.C
  eabb0107af4ef893414bb3cef506ad03  gcc/testsuite/g++.dg/gomp/macro-2.C
  942f8defe03c25bf08f780cf22c0a1e5  gcc/testsuite/g++.dg/gomp/macro-3.C
  9254a2c9545e874172464af7e042681f  gcc/testsuite/g++.dg/gomp/macro-4.C
! 2a90373b9280848f40b1036e42fdd914  gcc/testsuite/g++.dg/gomp/map-1.C
  cd955c2057012ba387a6b029e23c0d53  gcc/testsuite/g++.dg/gomp/map-2.C
  9dff449fe2d97c4b3ade07b982e69364  gcc/testsuite/g++.dg/gomp/master-1.C
  c6830eca56ca17885a14ffa21aeb16c4  gcc/testsuite/g++.dg/gomp/master-2.C
*************** ad5a2c143fabe766d3848eb100ea6c38  gcc/te
*** 17234,17240 ****
  20b058bc3ab390f835dc26da1b4b891e  gcc/testsuite/g++.dg/gomp/ordered-1.C
  ad83350cdd58e73fddf0b7bacdf348a8  gcc/testsuite/g++.dg/gomp/ordered-2.C
  92d8f2d0169326b7681c946be683ef2c  gcc/testsuite/g++.dg/gomp/parallel-1.C
! 37cd70c6dfa42e4ca92a22cf9bd83ad8  gcc/testsuite/g++.dg/gomp/parallel-2.C
  f711435274df71049aa71808a78fc7a5  gcc/testsuite/g++.dg/gomp/parallel-3.C
  5d09e3c0e650269fbab3a248edade585  gcc/testsuite/g++.dg/gomp/parallel-4.C
  d9a1f43ca6ac2a073e22bbbf243f300b  gcc/testsuite/g++.dg/gomp/parallel-5.C
--- 18212,18218 ----
  20b058bc3ab390f835dc26da1b4b891e  gcc/testsuite/g++.dg/gomp/ordered-1.C
  ad83350cdd58e73fddf0b7bacdf348a8  gcc/testsuite/g++.dg/gomp/ordered-2.C
  92d8f2d0169326b7681c946be683ef2c  gcc/testsuite/g++.dg/gomp/parallel-1.C
! 83f43f752a04866c618b6aa62a00dc8c  gcc/testsuite/g++.dg/gomp/parallel-2.C
  f711435274df71049aa71808a78fc7a5  gcc/testsuite/g++.dg/gomp/parallel-3.C
  5d09e3c0e650269fbab3a248edade585  gcc/testsuite/g++.dg/gomp/parallel-4.C
  d9a1f43ca6ac2a073e22bbbf243f300b  gcc/testsuite/g++.dg/gomp/parallel-5.C
*************** ebf8a1329362091236a2248545e72ed3  gcc/te
*** 17361,17369 ****
  32a827a0f114f3ea9fa6a18789870b5a  gcc/testsuite/g++.dg/gomp/pr92504.C
  e80a40859e24951bb463534000ef38b8  gcc/testsuite/g++.dg/gomp/pr94477.C
  357f11d1519441281479c8d4810b10f7  gcc/testsuite/g++.dg/gomp/pr94512.C
  7faadc6618faa24df7ab4f7cc242a698  gcc/testsuite/g++.dg/gomp/pr98383.C
! dcb3c560603f305a96698f6ee96b13da  gcc/testsuite/g++.dg/gomp/pr99007.C
! a3f91d106380d3bcaf59045bcf7186c6  gcc/testsuite/g++.dg/gomp/predetermined-1.C
  a6479847f9d522f85cbd16a46d7f9698  gcc/testsuite/g++.dg/gomp/private-1.C
  d447246d410ae61ed9f733998e77b958  gcc/testsuite/g++.dg/gomp/reference-1.C
  4afe79565f9f5122ef9e82d486550a31  gcc/testsuite/g++.dg/gomp/requires-1.C
--- 18339,18348 ----
  32a827a0f114f3ea9fa6a18789870b5a  gcc/testsuite/g++.dg/gomp/pr92504.C
  e80a40859e24951bb463534000ef38b8  gcc/testsuite/g++.dg/gomp/pr94477.C
  357f11d1519441281479c8d4810b10f7  gcc/testsuite/g++.dg/gomp/pr94512.C
+ ece594bf6d3e6ff699a427e6b710a3e9  gcc/testsuite/g++.dg/gomp/pr95063.C
  7faadc6618faa24df7ab4f7cc242a698  gcc/testsuite/g++.dg/gomp/pr98383.C
! 7526d50396828b70db2a5c6c2e0c06f1  gcc/testsuite/g++.dg/gomp/pr99007.C
! 950c91c8fcc43774b39c6a0d1739e526  gcc/testsuite/g++.dg/gomp/predetermined-1.C
  a6479847f9d522f85cbd16a46d7f9698  gcc/testsuite/g++.dg/gomp/private-1.C
  d447246d410ae61ed9f733998e77b958  gcc/testsuite/g++.dg/gomp/reference-1.C
  4afe79565f9f5122ef9e82d486550a31  gcc/testsuite/g++.dg/gomp/requires-1.C
*************** a041602adc6954974b227cecf103a64b  gcc/te
*** 17373,17379 ****
  c8fdbed05305ecb29a74eae041f265e9  gcc/testsuite/g++.dg/gomp/sections-2.C
  b72fe99f861779472bd3b1cf3587d478  gcc/testsuite/g++.dg/gomp/sections-3.C
  9f60edc949854690c68fa7fb1e8b3157  gcc/testsuite/g++.dg/gomp/sections-4.C
! bc8d10db21e758cc96c7406b3b7f65fc  gcc/testsuite/g++.dg/gomp/sharing-1.C
  f97f1706978c263c63bb1cf7a9b02300  gcc/testsuite/g++.dg/gomp/sharing-2.C
  641ac4dd2d2bc4be8797863fb6b5c286  gcc/testsuite/g++.dg/gomp/simd-1.C
  02e91fef2b3e3caf9b1f7f5696c2c507  gcc/testsuite/g++.dg/gomp/simd-2.C
--- 18352,18358 ----
  c8fdbed05305ecb29a74eae041f265e9  gcc/testsuite/g++.dg/gomp/sections-2.C
  b72fe99f861779472bd3b1cf3587d478  gcc/testsuite/g++.dg/gomp/sections-3.C
  9f60edc949854690c68fa7fb1e8b3157  gcc/testsuite/g++.dg/gomp/sections-4.C
! 001ce7e20e9af591527473ee699c1fee  gcc/testsuite/g++.dg/gomp/sharing-1.C
  f97f1706978c263c63bb1cf7a9b02300  gcc/testsuite/g++.dg/gomp/sharing-2.C
  641ac4dd2d2bc4be8797863fb6b5c286  gcc/testsuite/g++.dg/gomp/simd-1.C
  02e91fef2b3e3caf9b1f7f5696c2c507  gcc/testsuite/g++.dg/gomp/simd-2.C
*************** d5056d7847f2753ff16e19275fe96735  gcc/te
*** 17384,17398 ****
  8c284b2db0213aba2b9a945275ec6d74  gcc/testsuite/g++.dg/gomp/target-2.C
  e364244678eabb5fde7dbd8cb1a23102  gcc/testsuite/g++.dg/gomp/target-teams-1.C
  926d8449d7242be3abf0b04b4f5a0201  gcc/testsuite/g++.dg/gomp/task-1.C
  35893a5f773c2133df70cf6c3b2593a4  gcc/testsuite/g++.dg/gomp/taskgroup-1.C
  104e3fe5ad79c64aa1ed9ae097073285  gcc/testsuite/g++.dg/gomp/teams-1.C
! 33fc8a878f4414ba039926e6a9849731  gcc/testsuite/g++.dg/gomp/this-1.C
  6c90d0418afc4d79214d65c1c8937352  gcc/testsuite/g++.dg/gomp/this-2.C
  e413a547924c043723b9ade8080ee072  gcc/testsuite/g++.dg/gomp/tls-1.C
  cd8b1db623a07d865bb9a34cd8affe37  gcc/testsuite/g++.dg/gomp/tls-2.C
  b3697ff885906cda6a552df791bb35c6  gcc/testsuite/g++.dg/gomp/tls-3.C
  7b108a5b7b252626f91aed0e8bda77e1  gcc/testsuite/g++.dg/gomp/tls-4.C
! c35cc59f312d14fe0d8ea21d233f8f77  gcc/testsuite/g++.dg/gomp/tls-5.C
  5df51839d4b6592a64ff05d9c24d693a  gcc/testsuite/g++.dg/gomp/tls-template1.C
  cdb19019e3d63d31e78731723c51bd64  gcc/testsuite/g++.dg/gomp/tls-wrap1.C
  fff6cd9fbe5b2180d935f90ad7d2033b  gcc/testsuite/g++.dg/gomp/tls-wrap2.C
--- 18363,18378 ----
  8c284b2db0213aba2b9a945275ec6d74  gcc/testsuite/g++.dg/gomp/target-2.C
  e364244678eabb5fde7dbd8cb1a23102  gcc/testsuite/g++.dg/gomp/target-teams-1.C
  926d8449d7242be3abf0b04b4f5a0201  gcc/testsuite/g++.dg/gomp/task-1.C
+ dd317148fbd7859764db9b7028cfa23d  gcc/testsuite/g++.dg/gomp/task-detach-1.C
  35893a5f773c2133df70cf6c3b2593a4  gcc/testsuite/g++.dg/gomp/taskgroup-1.C
  104e3fe5ad79c64aa1ed9ae097073285  gcc/testsuite/g++.dg/gomp/teams-1.C
! ff128067ae6995a40c86a14e37d2e928  gcc/testsuite/g++.dg/gomp/this-1.C
  6c90d0418afc4d79214d65c1c8937352  gcc/testsuite/g++.dg/gomp/this-2.C
  e413a547924c043723b9ade8080ee072  gcc/testsuite/g++.dg/gomp/tls-1.C
  cd8b1db623a07d865bb9a34cd8affe37  gcc/testsuite/g++.dg/gomp/tls-2.C
  b3697ff885906cda6a552df791bb35c6  gcc/testsuite/g++.dg/gomp/tls-3.C
  7b108a5b7b252626f91aed0e8bda77e1  gcc/testsuite/g++.dg/gomp/tls-4.C
! a6ef6bd1e8a2da71647e8c95531956be  gcc/testsuite/g++.dg/gomp/tls-5.C
  5df51839d4b6592a64ff05d9c24d693a  gcc/testsuite/g++.dg/gomp/tls-template1.C
  cdb19019e3d63d31e78731723c51bd64  gcc/testsuite/g++.dg/gomp/tls-wrap1.C
  fff6cd9fbe5b2180d935f90ad7d2033b  gcc/testsuite/g++.dg/gomp/tls-wrap2.C
*************** b057b654090f4695277d8c1866894100  gcc/te
*** 17410,17422 ****
  d647e97b4f8477aa549f4f2f6eb6daa1  gcc/testsuite/g++.dg/gomp/tpl-parallel-2.C
  9e724e74b65abd98b17d7ce93dd59b9e  gcc/testsuite/g++.dg/gomp/tpl-target-update.C
  15a026d9ed91a8def01363b77d9ca4a5  gcc/testsuite/g++.dg/gomp/udr-1.C
! d23c7fcb3b560b7b7a925d5ca6fa6100  gcc/testsuite/g++.dg/gomp/udr-2.C
  8f936f92e4618f6d92d63d32189ab5d4  gcc/testsuite/g++.dg/gomp/udr-3.C
  a10dd83ffd8fea8213e9a3713b91277f  gcc/testsuite/g++.dg/gomp/udr-4.C
  cbb9b7e93953b72bbadec7a3dd5d1de0  gcc/testsuite/g++.dg/gomp/udr-5.C
  432e931e22639a849a7183275e9c7582  gcc/testsuite/g++.dg/gomp/udr-6.C
  b143b6294c19bb76e169a4c5c1a3beb5  gcc/testsuite/g++.dg/gomp/unmappable-1.C
! 4b7956577174dd62405ba527e4b4eec9  gcc/testsuite/g++.dg/graphite/graphite.exp
  de81689ffe7845348fd7504b61336c82  gcc/testsuite/g++.dg/graphite/id-1.C
  5c6a1178f4fd620e8792644c534c29f8  gcc/testsuite/g++.dg/graphite/pr39447.C
  266d67267efa84e1ec7b55b895fd2442  gcc/testsuite/g++.dg/graphite/pr41305.C
--- 18390,18402 ----
  d647e97b4f8477aa549f4f2f6eb6daa1  gcc/testsuite/g++.dg/gomp/tpl-parallel-2.C
  9e724e74b65abd98b17d7ce93dd59b9e  gcc/testsuite/g++.dg/gomp/tpl-target-update.C
  15a026d9ed91a8def01363b77d9ca4a5  gcc/testsuite/g++.dg/gomp/udr-1.C
! 423bd7d1b2c603c3574210f5678ba5bd  gcc/testsuite/g++.dg/gomp/udr-2.C
  8f936f92e4618f6d92d63d32189ab5d4  gcc/testsuite/g++.dg/gomp/udr-3.C
  a10dd83ffd8fea8213e9a3713b91277f  gcc/testsuite/g++.dg/gomp/udr-4.C
  cbb9b7e93953b72bbadec7a3dd5d1de0  gcc/testsuite/g++.dg/gomp/udr-5.C
  432e931e22639a849a7183275e9c7582  gcc/testsuite/g++.dg/gomp/udr-6.C
  b143b6294c19bb76e169a4c5c1a3beb5  gcc/testsuite/g++.dg/gomp/unmappable-1.C
! 9a714ec26db9cd176e6cf441379c99f9  gcc/testsuite/g++.dg/graphite/graphite.exp
  de81689ffe7845348fd7504b61336c82  gcc/testsuite/g++.dg/graphite/id-1.C
  5c6a1178f4fd620e8792644c534c29f8  gcc/testsuite/g++.dg/graphite/pr39447.C
  266d67267efa84e1ec7b55b895fd2442  gcc/testsuite/g++.dg/graphite/pr41305.C
*************** dcecc8a81073a9824c153ff083f81a4a  gcc/te
*** 17425,17431 ****
  012194f3f4441fc0dc8fb4ba94a8882b  gcc/testsuite/g++.dg/graphite/pr42681.C
  dfe63b7d52f6d97e04da25f267ac330c  gcc/testsuite/g++.dg/graphite/pr42930.C
  4cf735ba9e5b65e201dbbd4ec916b359  gcc/testsuite/g++.dg/graphite/pr43026.C
! c8700f3b3fdd3b41ff1abbf2a2c0186d  gcc/testsuite/g++.dg/guality/guality.exp
  2e0a2ac35d8a11426ad1e59f818a5d03  gcc/testsuite/g++.dg/guality/guality.h
  9f6bd16255ea79978f41ff1fd8300ddc  gcc/testsuite/g++.dg/guality/pr46815.C
  be57153d0806c5827262dfc205d1ddd5  gcc/testsuite/g++.dg/guality/pr55541.C
--- 18405,18411 ----
  012194f3f4441fc0dc8fb4ba94a8882b  gcc/testsuite/g++.dg/graphite/pr42681.C
  dfe63b7d52f6d97e04da25f267ac330c  gcc/testsuite/g++.dg/graphite/pr42930.C
  4cf735ba9e5b65e201dbbd4ec916b359  gcc/testsuite/g++.dg/graphite/pr43026.C
! a75b83e8d5052fa0817648b5802726ae  gcc/testsuite/g++.dg/guality/guality.exp
  2e0a2ac35d8a11426ad1e59f818a5d03  gcc/testsuite/g++.dg/guality/guality.h
  9f6bd16255ea79978f41ff1fd8300ddc  gcc/testsuite/g++.dg/guality/pr46815.C
  be57153d0806c5827262dfc205d1ddd5  gcc/testsuite/g++.dg/guality/pr55541.C
*************** be57153d0806c5827262dfc205d1ddd5  gcc/te
*** 17434,17441 ****
  0c2592ea712ffdd8518c042cf08c44f6  gcc/testsuite/g++.dg/guality/pr82630.C
  a4cc053c9d17978de8abeaa091606802  gcc/testsuite/g++.dg/guality/pr86687.C
  a0dca44ebd71904f8aeb3e055b8d94c7  gcc/testsuite/g++.dg/guality/pr93888.C
! 8773744d52f1fedc9192c4b6b54678d9  gcc/testsuite/g++.dg/guality/redeclaration1.C
  d4b1aa612cf9b628d986d19617ad2770  gcc/testsuite/g++.dg/header.C
  176e66df5d6aa9dd76c8fe406b78a370  gcc/testsuite/g++.dg/inherit/access1.C
  06874da0f9322a8d8220986c9c167391  gcc/testsuite/g++.dg/inherit/access2.C
  782f289a8885743348299a4efef52f20  gcc/testsuite/g++.dg/inherit/access3.C
--- 18414,18423 ----
  0c2592ea712ffdd8518c042cf08c44f6  gcc/testsuite/g++.dg/guality/pr82630.C
  a4cc053c9d17978de8abeaa091606802  gcc/testsuite/g++.dg/guality/pr86687.C
  a0dca44ebd71904f8aeb3e055b8d94c7  gcc/testsuite/g++.dg/guality/pr93888.C
! 0a776e30f0b520134b2f63d4d5e4e170  gcc/testsuite/g++.dg/guality/redeclaration1.C
  d4b1aa612cf9b628d986d19617ad2770  gcc/testsuite/g++.dg/header.C
+ ab79aaf52be89928967b23711a7d0eb5  gcc/testsuite/g++.dg/hwasan/hwasan.exp
+ da4fad928e1600184552de0820443fc5  gcc/testsuite/g++.dg/hwasan/rvo-handled.C
  176e66df5d6aa9dd76c8fe406b78a370  gcc/testsuite/g++.dg/inherit/access1.C
  06874da0f9322a8d8220986c9c167391  gcc/testsuite/g++.dg/inherit/access2.C
  782f289a8885743348299a4efef52f20  gcc/testsuite/g++.dg/inherit/access3.C
*************** b2e3895967ecb8400e50a741276a16ea  gcc/te
*** 17500,17505 ****
--- 18482,18488 ----
  de0ba7f6938effcb783f64534175a2c4  gcc/testsuite/g++.dg/inherit/pr30297.C
  d52d42fc3833f2c9203fd161bd8ca97e  gcc/testsuite/g++.dg/inherit/pr48798.C
  89131addad59ec4a9674ff0bf8009038  gcc/testsuite/g++.dg/inherit/pr57942.C
+ d6aca6742bad1ff6e997c4c03bd93ac4  gcc/testsuite/g++.dg/inherit/pr97268.C
  b741552f2cdc68c44c52f0ce8e4b84fa  gcc/testsuite/g++.dg/inherit/protected1.C
  57ff79e4f3304cf12253ad956fe99a96  gcc/testsuite/g++.dg/inherit/ptrmem1.C
  fad492da1e6e9e175df8d618db9cf1fa  gcc/testsuite/g++.dg/inherit/ptrmem2.C
*************** fbd285dcc7270a076d780f76a8ce05f4  gcc/te
*** 17518,17524 ****
  fd1a48e42812d7a049499f6df69ff7fe  gcc/testsuite/g++.dg/inherit/thunk5.C
  2dfbca1638b220825eaaf7ab19f120af  gcc/testsuite/g++.dg/inherit/thunk6.C
  658608f7154000cf6832d516ba8f2be5  gcc/testsuite/g++.dg/inherit/thunk7.C
! 4d1b2c07599a5eb535ef57e6a781d9a4  gcc/testsuite/g++.dg/inherit/thunk8.C
  fb6adb819d82abbffb1f0f36f85868ba  gcc/testsuite/g++.dg/inherit/thunk9.C
  543b190c9c0d744209af04ea332cc27e  gcc/testsuite/g++.dg/inherit/typedef1.C
  be87b303cd68bc0083e229657e8d162a  gcc/testsuite/g++.dg/inherit/typeinfo1.C
--- 18501,18507 ----
  fd1a48e42812d7a049499f6df69ff7fe  gcc/testsuite/g++.dg/inherit/thunk5.C
  2dfbca1638b220825eaaf7ab19f120af  gcc/testsuite/g++.dg/inherit/thunk6.C
  658608f7154000cf6832d516ba8f2be5  gcc/testsuite/g++.dg/inherit/thunk7.C
! d540211dfef88a56103ba31d3189b9f3  gcc/testsuite/g++.dg/inherit/thunk8.C
  fb6adb819d82abbffb1f0f36f85868ba  gcc/testsuite/g++.dg/inherit/thunk9.C
  543b190c9c0d744209af04ea332cc27e  gcc/testsuite/g++.dg/inherit/typedef1.C
  be87b303cd68bc0083e229657e8d162a  gcc/testsuite/g++.dg/inherit/typeinfo1.C
*************** c3ef752ebc840d838c3182a9a37846aa  gcc/te
*** 17529,17535 ****
  26f51eac0b25566825aafb23697d10a4  gcc/testsuite/g++.dg/inherit/using2.C
  c9b550ead8867586800cdeee63308c31  gcc/testsuite/g++.dg/inherit/using3.C
  2849e299956afd1664047e5a467eefd5  gcc/testsuite/g++.dg/inherit/using4.C
! 86f5581cd6f6c121d25316a6c0176f89  gcc/testsuite/g++.dg/inherit/using5.C
  2a609ed8062419576ed46e3e969999d6  gcc/testsuite/g++.dg/inherit/using6.C
  824afb5f78d6295dc194ab9e7d3ef6c1  gcc/testsuite/g++.dg/inherit/using7.C
  d6728c160968c11c85593017e8436bec  gcc/testsuite/g++.dg/inherit/using8.C
--- 18512,18518 ----
  26f51eac0b25566825aafb23697d10a4  gcc/testsuite/g++.dg/inherit/using2.C
  c9b550ead8867586800cdeee63308c31  gcc/testsuite/g++.dg/inherit/using3.C
  2849e299956afd1664047e5a467eefd5  gcc/testsuite/g++.dg/inherit/using4.C
! 5731eb402824f97d1252107e66cacf50  gcc/testsuite/g++.dg/inherit/using5.C
  2a609ed8062419576ed46e3e969999d6  gcc/testsuite/g++.dg/inherit/using6.C
  824afb5f78d6295dc194ab9e7d3ef6c1  gcc/testsuite/g++.dg/inherit/using7.C
  d6728c160968c11c85593017e8436bec  gcc/testsuite/g++.dg/inherit/using8.C
*************** a7bd0d962c09abd6aa73b256f57ea748  gcc/te
*** 17567,17577 ****
  73cffa4fc460568d6244b242fb867fb5  gcc/testsuite/g++.dg/init/array0.C
  92960aa3fba7b251d088910f7ca36c73  gcc/testsuite/g++.dg/init/array1.C
  52be26e8b242500ae671c570de13a1a7  gcc/testsuite/g++.dg/init/array10.C
! 277d5eaa0119e28a1c7aaa014f13a7c9  gcc/testsuite/g++.dg/init/array11.C
  cdd8bcf2d0f951ea0f042ff962ed9854  gcc/testsuite/g++.dg/init/array12.C
  d0bb03e714f655f56840d4e660ac77be  gcc/testsuite/g++.dg/init/array13.C
  46ee7376992213a7ad7da95e9c59931d  gcc/testsuite/g++.dg/init/array14.C
! 4b343cab41b920a5cd17c596fa24cc6f  gcc/testsuite/g++.dg/init/array15.C
  ac9d7c65d09251952287101b9c38771d  gcc/testsuite/g++.dg/init/array16.C
  bebae7e64d01c783fefaf2f358272230  gcc/testsuite/g++.dg/init/array17.C
  2010ab8cabd116e1c5704c568327ae76  gcc/testsuite/g++.dg/init/array18.C
--- 18550,18560 ----
  73cffa4fc460568d6244b242fb867fb5  gcc/testsuite/g++.dg/init/array0.C
  92960aa3fba7b251d088910f7ca36c73  gcc/testsuite/g++.dg/init/array1.C
  52be26e8b242500ae671c570de13a1a7  gcc/testsuite/g++.dg/init/array10.C
! 8748605914a325a2f261b23fd3561ecc  gcc/testsuite/g++.dg/init/array11.C
  cdd8bcf2d0f951ea0f042ff962ed9854  gcc/testsuite/g++.dg/init/array12.C
  d0bb03e714f655f56840d4e660ac77be  gcc/testsuite/g++.dg/init/array13.C
  46ee7376992213a7ad7da95e9c59931d  gcc/testsuite/g++.dg/init/array14.C
! b1549a9bc301572f770559980a857397  gcc/testsuite/g++.dg/init/array15.C
  ac9d7c65d09251952287101b9c38771d  gcc/testsuite/g++.dg/init/array16.C
  bebae7e64d01c783fefaf2f358272230  gcc/testsuite/g++.dg/init/array17.C
  2010ab8cabd116e1c5704c568327ae76  gcc/testsuite/g++.dg/init/array18.C
*************** cf7a09cc35d90ab53aa78b61324a89ff  gcc/te
*** 17585,17591 ****
  cd3850e151894462d2f417f022f58b7c  gcc/testsuite/g++.dg/init/array25.C
  5f26b794d27564d1f002c6a0cd333681  gcc/testsuite/g++.dg/init/array26.C
  30e0ae9123ab7bb807c4503c3a24b828  gcc/testsuite/g++.dg/init/array27.C
! 31f8d8fbbffb74c0f4ff150f89760941  gcc/testsuite/g++.dg/init/array28.C
  0212d2961b78684e39260cc7bf7ae66a  gcc/testsuite/g++.dg/init/array3.C
  cf61432d9f6af13d42de3b054c64bb90  gcc/testsuite/g++.dg/init/array30.C
  d66c992a20c3561fa8622cdd1936d442  gcc/testsuite/g++.dg/init/array31.C
--- 18568,18574 ----
  cd3850e151894462d2f417f022f58b7c  gcc/testsuite/g++.dg/init/array25.C
  5f26b794d27564d1f002c6a0cd333681  gcc/testsuite/g++.dg/init/array26.C
  30e0ae9123ab7bb807c4503c3a24b828  gcc/testsuite/g++.dg/init/array27.C
! 214a6d5277d4d0e79a72026f2ced2b41  gcc/testsuite/g++.dg/init/array28.C
  0212d2961b78684e39260cc7bf7ae66a  gcc/testsuite/g++.dg/init/array3.C
  cf61432d9f6af13d42de3b054c64bb90  gcc/testsuite/g++.dg/init/array30.C
  d66c992a20c3561fa8622cdd1936d442  gcc/testsuite/g++.dg/init/array31.C
*************** f39111fa11b0d25bd84e443cd5df726a  gcc/te
*** 17597,17603 ****
  19db4c9c603da402ed789531b2bde44e  gcc/testsuite/g++.dg/init/array37.C
  13b72fbb067df53b72897d23c0b09bc3  gcc/testsuite/g++.dg/init/array38.C
  20a0a07b0a16e0d3394815c93cf1ae55  gcc/testsuite/g++.dg/init/array39.C
! dafd4fb071c88ff21250002b43675816  gcc/testsuite/g++.dg/init/array4.C
  c78f890c91fdf049382c54b81829036e  gcc/testsuite/g++.dg/init/array40.C
  3069a9d1d08fb86eb0dacb7754298c53  gcc/testsuite/g++.dg/init/array41.C
  40d7d180bb48e5e751055e0ee5e1d6ea  gcc/testsuite/g++.dg/init/array42.C
--- 18580,18586 ----
  19db4c9c603da402ed789531b2bde44e  gcc/testsuite/g++.dg/init/array37.C
  13b72fbb067df53b72897d23c0b09bc3  gcc/testsuite/g++.dg/init/array38.C
  20a0a07b0a16e0d3394815c93cf1ae55  gcc/testsuite/g++.dg/init/array39.C
! a82da606f2deae46784697a2e5730d6b  gcc/testsuite/g++.dg/init/array4.C
  c78f890c91fdf049382c54b81829036e  gcc/testsuite/g++.dg/init/array40.C
  3069a9d1d08fb86eb0dacb7754298c53  gcc/testsuite/g++.dg/init/array41.C
  40d7d180bb48e5e751055e0ee5e1d6ea  gcc/testsuite/g++.dg/init/array42.C
*************** e7a4920eaa905e671e74b6482c654721  gcc/te
*** 17620,17625 ****
--- 18603,18609 ----
  9f4936c6c43f83107b24fe0d4675180e  gcc/testsuite/g++.dg/init/array58.C
  75ec5b148dcbeb2412d88d1fcfb89b82  gcc/testsuite/g++.dg/init/array59.C
  12f516d0ef7088644b46185bbd83ef4d  gcc/testsuite/g++.dg/init/array6.C
+ c083b6ec43687658fab80f7d11038fb8  gcc/testsuite/g++.dg/init/array60.C
  02cf876b0b0d2594118addc046b9112a  gcc/testsuite/g++.dg/init/array7.C
  4ab5bb9dc38b78d749ba584adefbdc33  gcc/testsuite/g++.dg/init/array8.C
  b1c2a3438d19ab4734ef026ce6aba7fa  gcc/testsuite/g++.dg/init/array9.C
*************** fbb2da53a2909025ce7bb4e5fd138563  gcc/te
*** 17655,17661 ****
  0ac36de7c095e58a6e1031bab57934e3  gcc/testsuite/g++.dg/init/const4.C
  d20e9e92d2904deda74fbcf84cb823bb  gcc/testsuite/g++.dg/init/const5.C
  1e8e9dc83b9cc3b9c04e15495abf5871  gcc/testsuite/g++.dg/init/const6.C
! 86e7aae1ce3a38516b917d63224d4d0f  gcc/testsuite/g++.dg/init/const7.C
  f95f725ee79bd108445d875c500d252a  gcc/testsuite/g++.dg/init/const8.C
  a0407d922750e957b395ce4c7537f3f8  gcc/testsuite/g++.dg/init/const9.C
  56a9eccbb4c3fff84a7c2e812f9f8efa  gcc/testsuite/g++.dg/init/constant1.C
--- 18639,18645 ----
  0ac36de7c095e58a6e1031bab57934e3  gcc/testsuite/g++.dg/init/const4.C
  d20e9e92d2904deda74fbcf84cb823bb  gcc/testsuite/g++.dg/init/const5.C
  1e8e9dc83b9cc3b9c04e15495abf5871  gcc/testsuite/g++.dg/init/const6.C
! 9a88ec0b4a17f045dee0cfdbe6a87f9a  gcc/testsuite/g++.dg/init/const7.C
  f95f725ee79bd108445d875c500d252a  gcc/testsuite/g++.dg/init/const8.C
  a0407d922750e957b395ce4c7537f3f8  gcc/testsuite/g++.dg/init/const9.C
  56a9eccbb4c3fff84a7c2e812f9f8efa  gcc/testsuite/g++.dg/init/constant1.C
*************** e657849b9797c7df684fd4fafe1341d1  gcc/te
*** 17694,17701 ****
--- 18678,18687 ----
  074911fc1326d50c75879cb3d5b7a7c7  gcc/testsuite/g++.dg/init/elide4.C
  c3504b39a6dc15f7e9a22986743ea38c  gcc/testsuite/g++.dg/init/elide5.C
  210b4300164756f497bbe2319f298e4a  gcc/testsuite/g++.dg/init/elide6.C
+ 482a68c2f76d597051f9be7376fcaf4f  gcc/testsuite/g++.dg/init/elide7.C
  d2ea13322f402d3ce506a9a1106ee836  gcc/testsuite/g++.dg/init/empty1.C
  2e99b553f901f5c5d03ec2f96b9ab845  gcc/testsuite/g++.dg/init/empty2.C
+ 5808f0bb0a1ec4426a2b23d99bd8069f  gcc/testsuite/g++.dg/init/empty3.C
  0fab5264214dd4964a69af401f3e7e7c  gcc/testsuite/g++.dg/init/enum1.C
  ca9a6dc8d27f3cf82314cfcd92133441  gcc/testsuite/g++.dg/init/enum2.C
  1b6b87db9a47d5b010067f2e79b87143  gcc/testsuite/g++.dg/init/error1.C
*************** f61f4940bc97502688606d4b7f1701a2  gcc/te
*** 17732,17738 ****
  675e2069fd4b702f2d78c2cfd416d065  gcc/testsuite/g++.dg/init/new15.C
  c52e42cacc9e8e4d847ceae5031544ca  gcc/testsuite/g++.dg/init/new16.C
  946a0ab6c75da67700a0c85a5b7be291  gcc/testsuite/g++.dg/init/new17.C
! 7862306efaa800c61d8fc66bdf464259  gcc/testsuite/g++.dg/init/new18.C
  fc83be635626d62edf6199ab442d0651  gcc/testsuite/g++.dg/init/new19.C
  7502916c49c92544e10e7a1d3ce41eea  gcc/testsuite/g++.dg/init/new2.C
  9b183ec2b575bdf5465306fc4e259b43  gcc/testsuite/g++.dg/init/new20.C
--- 18718,18724 ----
  675e2069fd4b702f2d78c2cfd416d065  gcc/testsuite/g++.dg/init/new15.C
  c52e42cacc9e8e4d847ceae5031544ca  gcc/testsuite/g++.dg/init/new16.C
  946a0ab6c75da67700a0c85a5b7be291  gcc/testsuite/g++.dg/init/new17.C
! 38fe190a252623fccf88545c8d610a3c  gcc/testsuite/g++.dg/init/new18.C
  fc83be635626d62edf6199ab442d0651  gcc/testsuite/g++.dg/init/new19.C
  7502916c49c92544e10e7a1d3ce41eea  gcc/testsuite/g++.dg/init/new2.C
  9b183ec2b575bdf5465306fc4e259b43  gcc/testsuite/g++.dg/init/new20.C
*************** f7a95da9dc93980c45559b153a887a60  gcc/te
*** 17741,17747 ****
  c6bfe3c407b3ca0eac5cfe23b9a35d23  gcc/testsuite/g++.dg/init/new23.C
  55a9e7ab7780295582670cb7aa2e312f  gcc/testsuite/g++.dg/init/new24.C
  e0f01277a5986e3a5f23ca6c34e91155  gcc/testsuite/g++.dg/init/new25.C
! d20a83f8968c6c9a1d648762dc1a9e2c  gcc/testsuite/g++.dg/init/new26.C
  d5a5bcf8bba7f46ab8feba49e73be0f0  gcc/testsuite/g++.dg/init/new27.C
  7fc4838fffcb429888d20344300ac8d6  gcc/testsuite/g++.dg/init/new28.C
  ea98cc4326612e97a8fabdee28dcf0ba  gcc/testsuite/g++.dg/init/new29.C
--- 18727,18733 ----
  c6bfe3c407b3ca0eac5cfe23b9a35d23  gcc/testsuite/g++.dg/init/new23.C
  55a9e7ab7780295582670cb7aa2e312f  gcc/testsuite/g++.dg/init/new24.C
  e0f01277a5986e3a5f23ca6c34e91155  gcc/testsuite/g++.dg/init/new25.C
! ef24aa2cf03eaf12834a87994979413f  gcc/testsuite/g++.dg/init/new26.C
  d5a5bcf8bba7f46ab8feba49e73be0f0  gcc/testsuite/g++.dg/init/new27.C
  7fc4838fffcb429888d20344300ac8d6  gcc/testsuite/g++.dg/init/new28.C
  ea98cc4326612e97a8fabdee28dcf0ba  gcc/testsuite/g++.dg/init/new29.C
*************** a3216a95d614cdbac63bafe50438a3b0  gcc/te
*** 17754,17767 ****
  b00cbbf0a7198ffe55206723b3837c1a  gcc/testsuite/g++.dg/init/new35.C
  9a5926ac1fac1582a28a1430529e44de  gcc/testsuite/g++.dg/init/new36.C
  015fe68d7de8b61ed6109a20dcfe0d37  gcc/testsuite/g++.dg/init/new37.C
! d1771050ed51b5b528a1d2e25c932df1  gcc/testsuite/g++.dg/init/new38.C
  7f288a4718c1a7dd30315c4183a1b0c1  gcc/testsuite/g++.dg/init/new39.C
  19dcda79922ea7017c7e260394e77415  gcc/testsuite/g++.dg/init/new4.C
  5820f2c8665ae379ada4b0966210eb15  gcc/testsuite/g++.dg/init/new40.C
  cbd73e68a7e047fb1fead38045398b76  gcc/testsuite/g++.dg/init/new41.C
  d11503933ddf4a9a5fa720f05ff832e4  gcc/testsuite/g++.dg/init/new42.C
  4c322b0cc937d75127552f528e31fbab  gcc/testsuite/g++.dg/init/new43.C
! 5267004e814a23375247fdcc80a3d987  gcc/testsuite/g++.dg/init/new44.C
  d2d77d6c719441f941b5b510dcb137a2  gcc/testsuite/g++.dg/init/new45.C
  d15f6f1dc25618b84c64325897aefd35  gcc/testsuite/g++.dg/init/new46.C
  578919234003568d10881d031eee7b19  gcc/testsuite/g++.dg/init/new47.C
--- 18740,18753 ----
  b00cbbf0a7198ffe55206723b3837c1a  gcc/testsuite/g++.dg/init/new35.C
  9a5926ac1fac1582a28a1430529e44de  gcc/testsuite/g++.dg/init/new36.C
  015fe68d7de8b61ed6109a20dcfe0d37  gcc/testsuite/g++.dg/init/new37.C
! e657ff4a616d1d27cf871f4da9462ee0  gcc/testsuite/g++.dg/init/new38.C
  7f288a4718c1a7dd30315c4183a1b0c1  gcc/testsuite/g++.dg/init/new39.C
  19dcda79922ea7017c7e260394e77415  gcc/testsuite/g++.dg/init/new4.C
  5820f2c8665ae379ada4b0966210eb15  gcc/testsuite/g++.dg/init/new40.C
  cbd73e68a7e047fb1fead38045398b76  gcc/testsuite/g++.dg/init/new41.C
  d11503933ddf4a9a5fa720f05ff832e4  gcc/testsuite/g++.dg/init/new42.C
  4c322b0cc937d75127552f528e31fbab  gcc/testsuite/g++.dg/init/new43.C
! 72d8c3ceba95e9c90600792a0e8fcf8e  gcc/testsuite/g++.dg/init/new44.C
  d2d77d6c719441f941b5b510dcb137a2  gcc/testsuite/g++.dg/init/new45.C
  d15f6f1dc25618b84c64325897aefd35  gcc/testsuite/g++.dg/init/new46.C
  578919234003568d10881d031eee7b19  gcc/testsuite/g++.dg/init/new47.C
*************** e6aa309a87de688020673480763c4211  gcc/te
*** 17794,17800 ****
  47bced0af8605e929d7e7f6148cc59e6  gcc/testsuite/g++.dg/init/pr35878_3.C
  130a8c69db344833b83e331574b3fd38  gcc/testsuite/g++.dg/init/pr35878_4.C
  624e9f796f15d614e6a391af843914f4  gcc/testsuite/g++.dg/init/pr42556.C
! 481b19d9fc272818d50f088ce1bf201c  gcc/testsuite/g++.dg/init/pr42844.C
  f1538253537779bf466c8d9c117f1ee9  gcc/testsuite/g++.dg/init/pr43064-1.C
  70ed9e061ee1cb44f807f10567f1ff1a  gcc/testsuite/g++.dg/init/pr43064-2.C
  24b4ea9d126b54359f2cc64275eba9a5  gcc/testsuite/g++.dg/init/pr43064-3.C
--- 18780,18786 ----
  47bced0af8605e929d7e7f6148cc59e6  gcc/testsuite/g++.dg/init/pr35878_3.C
  130a8c69db344833b83e331574b3fd38  gcc/testsuite/g++.dg/init/pr35878_4.C
  624e9f796f15d614e6a391af843914f4  gcc/testsuite/g++.dg/init/pr42556.C
! 28fac663ee9b445a3893f9473de8aecb  gcc/testsuite/g++.dg/init/pr42844.C
  f1538253537779bf466c8d9c117f1ee9  gcc/testsuite/g++.dg/init/pr43064-1.C
  70ed9e061ee1cb44f807f10567f1ff1a  gcc/testsuite/g++.dg/init/pr43064-2.C
  24b4ea9d126b54359f2cc64275eba9a5  gcc/testsuite/g++.dg/init/pr43064-3.C
*************** eac75da8029ebf097e358f87837418c2  gcc/te
*** 17863,17869 ****
  1f2f25119a1894dd17a5a18eddf879f2  gcc/testsuite/g++.dg/init/string2.C
  eb0ab4cca242bde3c7961959702f4e12  gcc/testsuite/g++.dg/init/string3.C
  4b3faebcf1dcdc7165bfeb4c982ac9e2  gcc/testsuite/g++.dg/init/string4.C
! 464ffe4e1b50541d7e57d078a34f951c  gcc/testsuite/g++.dg/init/strlen.C
  58b4c5838fafdec40fe718447129945f  gcc/testsuite/g++.dg/init/struct1.C
  ecbe90032bd93aed4a7b737be9838847  gcc/testsuite/g++.dg/init/struct2.C
  22d61e3cdadcbb46755a2e1556954646  gcc/testsuite/g++.dg/init/struct3.C
--- 18849,18855 ----
  1f2f25119a1894dd17a5a18eddf879f2  gcc/testsuite/g++.dg/init/string2.C
  eb0ab4cca242bde3c7961959702f4e12  gcc/testsuite/g++.dg/init/string3.C
  4b3faebcf1dcdc7165bfeb4c982ac9e2  gcc/testsuite/g++.dg/init/string4.C
! e1330cb213ab284c84dcf788a68e6aa3  gcc/testsuite/g++.dg/init/strlen.C
  58b4c5838fafdec40fe718447129945f  gcc/testsuite/g++.dg/init/struct1.C
  ecbe90032bd93aed4a7b737be9838847  gcc/testsuite/g++.dg/init/struct2.C
  22d61e3cdadcbb46755a2e1556954646  gcc/testsuite/g++.dg/init/struct3.C
*************** a07f29cc13922f46ee402c672bab1763  gcc/te
*** 17884,17890 ****
  ca385abd9d6b36d0667c2ad521a0233e  gcc/testsuite/g++.dg/init/value6.C
  4487271d3a3d8cbbe87a8aa0dee4b541  gcc/testsuite/g++.dg/init/value7.C
  8301ee378a2cddfa351a850b83e9542a  gcc/testsuite/g++.dg/init/value8.C
! f486b963f0b6c68f60e277c5d3821f29  gcc/testsuite/g++.dg/init/value9.C
  c5a2ccfd21d2f44046825123706e505a  gcc/testsuite/g++.dg/init/vbase1.C
  f950998991b01d5ad8aa91b1f8d04255  gcc/testsuite/g++.dg/init/vbase2.C
  e4ace0ef4caaae06eef685ccaefd464e  gcc/testsuite/g++.dg/init/vector1.C
--- 18870,18876 ----
  ca385abd9d6b36d0667c2ad521a0233e  gcc/testsuite/g++.dg/init/value6.C
  4487271d3a3d8cbbe87a8aa0dee4b541  gcc/testsuite/g++.dg/init/value7.C
  8301ee378a2cddfa351a850b83e9542a  gcc/testsuite/g++.dg/init/value8.C
! ac0a59cc779709a0f2049784d3349ce1  gcc/testsuite/g++.dg/init/value9.C
  c5a2ccfd21d2f44046825123706e505a  gcc/testsuite/g++.dg/init/vbase1.C
  f950998991b01d5ad8aa91b1f8d04255  gcc/testsuite/g++.dg/init/vbase2.C
  e4ace0ef4caaae06eef685ccaefd464e  gcc/testsuite/g++.dg/init/vector1.C
*************** e56f74042aa8aa5dbbb9f60f5673507c  gcc/te
*** 17903,17915 ****
  a3ef5649648039007c89bf5cb9fe814b  gcc/testsuite/g++.dg/ipa/devirt-16.C
  6dcf4578bc9c92f114c8c61ef2660571  gcc/testsuite/g++.dg/ipa/devirt-17.C
  4b23a4e562c19810f0c55f0817916933  gcc/testsuite/g++.dg/ipa/devirt-18.C
! 3d9202965ff74415b8d9d5ceecfec714  gcc/testsuite/g++.dg/ipa/devirt-19.C
  bf854bda030a1dd51eb37b4771a0dcb3  gcc/testsuite/g++.dg/ipa/devirt-2.C
  38cc93e595d53663e7624f3bf745ba39  gcc/testsuite/g++.dg/ipa/devirt-20.C
  67e019ff1f3d279e2c6b5f223b061ebc  gcc/testsuite/g++.dg/ipa/devirt-21.C
  ef2c20211e1e4ece4ec9e3d8ea3d585f  gcc/testsuite/g++.dg/ipa/devirt-22.C
  e4bbbef263835020ccf2c62595fa7b76  gcc/testsuite/g++.dg/ipa/devirt-23.C
! 8d58528adf789041a50a82c406170971  gcc/testsuite/g++.dg/ipa/devirt-24.C
  8e1a95281390a20596d1470878312533  gcc/testsuite/g++.dg/ipa/devirt-25.C
  abf9c5109aa819804228db274d44a58c  gcc/testsuite/g++.dg/ipa/devirt-26.C
  c5e9a1f0512a55d50ec7174c592a3022  gcc/testsuite/g++.dg/ipa/devirt-27.C
--- 18889,18901 ----
  a3ef5649648039007c89bf5cb9fe814b  gcc/testsuite/g++.dg/ipa/devirt-16.C
  6dcf4578bc9c92f114c8c61ef2660571  gcc/testsuite/g++.dg/ipa/devirt-17.C
  4b23a4e562c19810f0c55f0817916933  gcc/testsuite/g++.dg/ipa/devirt-18.C
! 738b02e35a19328285cb21b4ce45b66f  gcc/testsuite/g++.dg/ipa/devirt-19.C
  bf854bda030a1dd51eb37b4771a0dcb3  gcc/testsuite/g++.dg/ipa/devirt-2.C
  38cc93e595d53663e7624f3bf745ba39  gcc/testsuite/g++.dg/ipa/devirt-20.C
  67e019ff1f3d279e2c6b5f223b061ebc  gcc/testsuite/g++.dg/ipa/devirt-21.C
  ef2c20211e1e4ece4ec9e3d8ea3d585f  gcc/testsuite/g++.dg/ipa/devirt-22.C
  e4bbbef263835020ccf2c62595fa7b76  gcc/testsuite/g++.dg/ipa/devirt-23.C
! 672d0d9d8ecb7dcfdbe42192d19e0a68  gcc/testsuite/g++.dg/ipa/devirt-24.C
  8e1a95281390a20596d1470878312533  gcc/testsuite/g++.dg/ipa/devirt-25.C
  abf9c5109aa819804228db274d44a58c  gcc/testsuite/g++.dg/ipa/devirt-26.C
  c5e9a1f0512a55d50ec7174c592a3022  gcc/testsuite/g++.dg/ipa/devirt-27.C
*************** f47bc7a9c37789213c8eb800176ec3ff  gcc/te
*** 17941,17947 ****
  3493d9039777102a9dc179a10e6ff032  gcc/testsuite/g++.dg/ipa/devirt-5.C
  d87145e88d34f5d2eae546222df30b3b  gcc/testsuite/g++.dg/ipa/devirt-50.C
  be088974e9a3b5a0dd791b417e8d9180  gcc/testsuite/g++.dg/ipa/devirt-51.C
! fc38ff8896f0722b271df69cdb4d61c5  gcc/testsuite/g++.dg/ipa/devirt-52.C
  73c427e623b0b8f8a01f5e78210d25f7  gcc/testsuite/g++.dg/ipa/devirt-53.C
  8c636e7513618b1b3735a28c660923df  gcc/testsuite/g++.dg/ipa/devirt-6.C
  0184c3241b7a2b5aeaa0c74da5e829d3  gcc/testsuite/g++.dg/ipa/devirt-7.C
--- 18927,18933 ----
  3493d9039777102a9dc179a10e6ff032  gcc/testsuite/g++.dg/ipa/devirt-5.C
  d87145e88d34f5d2eae546222df30b3b  gcc/testsuite/g++.dg/ipa/devirt-50.C
  be088974e9a3b5a0dd791b417e8d9180  gcc/testsuite/g++.dg/ipa/devirt-51.C
! a17fb1866d0a49d29c3f53828cca1b51  gcc/testsuite/g++.dg/ipa/devirt-52.C
  73c427e623b0b8f8a01f5e78210d25f7  gcc/testsuite/g++.dg/ipa/devirt-53.C
  8c636e7513618b1b3735a28c660923df  gcc/testsuite/g++.dg/ipa/devirt-6.C
  0184c3241b7a2b5aeaa0c74da5e829d3  gcc/testsuite/g++.dg/ipa/devirt-7.C
*************** d0415e5d5ed79c73a04e7df5551e4b95  gcc/te
*** 17987,17993 ****
  ecfa94e705bc436ad699767b1e4c929e  gcc/testsuite/g++.dg/ipa/polymorphic-call-1.C
  02f3704c0511b2d171c55dbf09c64325  gcc/testsuite/g++.dg/ipa/pr43695.C
  5345293723ad062b59b168c319738e1e  gcc/testsuite/g++.dg/ipa/pr43812.C
! 6128eb5cd9434152c784f6e0d952b885  gcc/testsuite/g++.dg/ipa/pr44372.C
  34f01b9fc4157e35aef42fe4303714df  gcc/testsuite/g++.dg/ipa/pr45565.C
  c39768e60c48a8140ac1eb7b8c2adfcb  gcc/testsuite/g++.dg/ipa/pr45572-1.C
  0d4cd7a0dcc526799f7b4db021c2f68d  gcc/testsuite/g++.dg/ipa/pr45572-2.C
--- 18973,18979 ----
  ecfa94e705bc436ad699767b1e4c929e  gcc/testsuite/g++.dg/ipa/polymorphic-call-1.C
  02f3704c0511b2d171c55dbf09c64325  gcc/testsuite/g++.dg/ipa/pr43695.C
  5345293723ad062b59b168c319738e1e  gcc/testsuite/g++.dg/ipa/pr43812.C
! b001cbe3dfdeb7d2a1061f024aa08ea4  gcc/testsuite/g++.dg/ipa/pr44372.C
  34f01b9fc4157e35aef42fe4303714df  gcc/testsuite/g++.dg/ipa/pr45565.C
  c39768e60c48a8140ac1eb7b8c2adfcb  gcc/testsuite/g++.dg/ipa/pr45572-1.C
  0d4cd7a0dcc526799f7b4db021c2f68d  gcc/testsuite/g++.dg/ipa/pr45572-2.C
*************** b6207250e81c199b2860b99758c7c707  gcc/te
*** 18004,18010 ****
  31b6d18c1858b5f5148de832f3fb7915  gcc/testsuite/g++.dg/ipa/pr55264.C
  7c5981c91101d5d0b6e2a89e61d7a675  gcc/testsuite/g++.dg/ipa/pr56310.C
  dee7ba2e84e87c8e1991a1d3b02db130  gcc/testsuite/g++.dg/ipa/pr57670.C
! 5a6d72186433ddf66c47d9776cf5901c  gcc/testsuite/g++.dg/ipa/pr58371.C
  3d60f991ff8f5bbc382f8b3de7af1f5b  gcc/testsuite/g++.dg/ipa/pr59176.C
  16e01d7c14ca47634024cefe29fb2085  gcc/testsuite/g++.dg/ipa/pr59355.C
  e5598a6623b0d9d17b639bb9715c0aa1  gcc/testsuite/g++.dg/ipa/pr59737.C
--- 18990,18996 ----
  31b6d18c1858b5f5148de832f3fb7915  gcc/testsuite/g++.dg/ipa/pr55264.C
  7c5981c91101d5d0b6e2a89e61d7a675  gcc/testsuite/g++.dg/ipa/pr56310.C
  dee7ba2e84e87c8e1991a1d3b02db130  gcc/testsuite/g++.dg/ipa/pr57670.C
! 64f9aafa9789b89f20b1e74604fba3a7  gcc/testsuite/g++.dg/ipa/pr58371.C
  3d60f991ff8f5bbc382f8b3de7af1f5b  gcc/testsuite/g++.dg/ipa/pr59176.C
  16e01d7c14ca47634024cefe29fb2085  gcc/testsuite/g++.dg/ipa/pr59355.C
  e5598a6623b0d9d17b639bb9715c0aa1  gcc/testsuite/g++.dg/ipa/pr59737.C
*************** b4ed3dbf8f8e816894c2f48fe44a3e6f  gcc/te
*** 18029,18035 ****
  b52e84f9754809a1066f9dc82ae31fa3  gcc/testsuite/g++.dg/ipa/pr63574.C
  b600f6a6c38f9918243512d82a0540ce  gcc/testsuite/g++.dg/ipa/pr63580.C
  44d4a5b47e3986a86c55c57dcc8f571e  gcc/testsuite/g++.dg/ipa/pr63587-1.C
! 160f97d6c1f1ce979b0bbca80b385849  gcc/testsuite/g++.dg/ipa/pr63587-2.C
  29e3b273cd77d035cc1824cae0705fdd  gcc/testsuite/g++.dg/ipa/pr63595.C
  9a83145d2e920a59bd2baabfc283d5be  gcc/testsuite/g++.dg/ipa/pr63621.C
  cbec9db210200f035b58e9a660e61435  gcc/testsuite/g++.dg/ipa/pr63814.C
--- 19015,19021 ----
  b52e84f9754809a1066f9dc82ae31fa3  gcc/testsuite/g++.dg/ipa/pr63574.C
  b600f6a6c38f9918243512d82a0540ce  gcc/testsuite/g++.dg/ipa/pr63580.C
  44d4a5b47e3986a86c55c57dcc8f571e  gcc/testsuite/g++.dg/ipa/pr63587-1.C
! 16f06ed98461c869aa40ea1f283d4798  gcc/testsuite/g++.dg/ipa/pr63587-2.C
  29e3b273cd77d035cc1824cae0705fdd  gcc/testsuite/g++.dg/ipa/pr63595.C
  9a83145d2e920a59bd2baabfc283d5be  gcc/testsuite/g++.dg/ipa/pr63621.C
  cbec9db210200f035b58e9a660e61435  gcc/testsuite/g++.dg/ipa/pr63814.C
*************** f3021b0cdc3816bbbaf3ca610d163e73  gcc/te
*** 18068,18077 ****
  015159cfa161eb427da1e671b39b4765  gcc/testsuite/g++.dg/ipa/pr69649.C
  194a097c70d864b41ebba3d641ff6e2c  gcc/testsuite/g++.dg/ipa/pr71146.C
  cad676606f867ff6d3c0c30870ad11a0  gcc/testsuite/g++.dg/ipa/pr71207.C
! 3a8004c0e4c3f3ec713f3674c6464c08  gcc/testsuite/g++.dg/ipa/pr77333.C
  d53e2610da5ee135ff2297e91a0715be  gcc/testsuite/g++.dg/ipa/pr77905.C
  0d66afc3b6be386c8e29a4e0bbb7485d  gcc/testsuite/g++.dg/ipa/pr78188.C
! cd3bfd7464a01a39c5f262829629741b  gcc/testsuite/g++.dg/ipa/pr78211.C
  5d5f3f917e9a4e2fa641676d7142698c  gcc/testsuite/g++.dg/ipa/pr79776.C
  e3931f023ac1cf9205a7c1660d952c18  gcc/testsuite/g++.dg/ipa/pr79931.C
  89f95e75e402e5135147f26252be06e5  gcc/testsuite/g++.dg/ipa/pr80205.C
--- 19054,19063 ----
  015159cfa161eb427da1e671b39b4765  gcc/testsuite/g++.dg/ipa/pr69649.C
  194a097c70d864b41ebba3d641ff6e2c  gcc/testsuite/g++.dg/ipa/pr71146.C
  cad676606f867ff6d3c0c30870ad11a0  gcc/testsuite/g++.dg/ipa/pr71207.C
! 8895037176a91e928a3c38bf755330c6  gcc/testsuite/g++.dg/ipa/pr77333.C
  d53e2610da5ee135ff2297e91a0715be  gcc/testsuite/g++.dg/ipa/pr77905.C
  0d66afc3b6be386c8e29a4e0bbb7485d  gcc/testsuite/g++.dg/ipa/pr78188.C
! aede7b889362650415d748c59b378f68  gcc/testsuite/g++.dg/ipa/pr78211.C
  5d5f3f917e9a4e2fa641676d7142698c  gcc/testsuite/g++.dg/ipa/pr79776.C
  e3931f023ac1cf9205a7c1660d952c18  gcc/testsuite/g++.dg/ipa/pr79931.C
  89f95e75e402e5135147f26252be06e5  gcc/testsuite/g++.dg/ipa/pr80205.C
*************** c430165f569fa5b83e06f136d915a840  gcc/te
*** 18080,18086 ****
  e9a3cd760e81664690da407f52b34364  gcc/testsuite/g++.dg/ipa/pr82352.C
  05592a0935fec817a7688eb12baa50c2  gcc/testsuite/g++.dg/ipa/pr82801.C
  a6ea68da40fdbc3c5627d8fd52058c74  gcc/testsuite/g++.dg/ipa/pr83549.C
! 2930f992579665fa9d99d3b01d2fd984  gcc/testsuite/g++.dg/ipa/pr83667.C
  d31daabe5d2bb29c818c1bbbe31a5a4b  gcc/testsuite/g++.dg/ipa/pr84658.C
  89c35bb41f6079175e75624ae113f0c2  gcc/testsuite/g++.dg/ipa/pr84825.C
  7a74ca095291672fedb99619674166cc  gcc/testsuite/g++.dg/ipa/pr85421.C
--- 19066,19072 ----
  e9a3cd760e81664690da407f52b34364  gcc/testsuite/g++.dg/ipa/pr82352.C
  05592a0935fec817a7688eb12baa50c2  gcc/testsuite/g++.dg/ipa/pr82801.C
  a6ea68da40fdbc3c5627d8fd52058c74  gcc/testsuite/g++.dg/ipa/pr83549.C
! 06f49f7abbe4bfaee23390b33bd5d8a6  gcc/testsuite/g++.dg/ipa/pr83667.C
  d31daabe5d2bb29c818c1bbbe31a5a4b  gcc/testsuite/g++.dg/ipa/pr84658.C
  89c35bb41f6079175e75624ae113f0c2  gcc/testsuite/g++.dg/ipa/pr84825.C
  7a74ca095291672fedb99619674166cc  gcc/testsuite/g++.dg/ipa/pr85421.C
*************** ae00f300fcb65b82231e34cb12efb4fd  gcc/te
*** 18102,18108 ****
  5876d4ac836871fb0c8247b9473d8271  gcc/testsuite/g++.dg/ipa/pr93223.C
  3c519f2160f2b11ce69ac7b30cb0fd2b  gcc/testsuite/g++.dg/ipa/pr93621.C
  3d99a30891927744757482e357f847ea  gcc/testsuite/g++.dg/ipa/pr93763.C
! d3df33dcbe541a771b4c0b3f601eea5b  gcc/testsuite/g++.dg/ipa/pr94856.C
  67ce956b024be06467602bda94a08aa7  gcc/testsuite/g++.dg/ipa/pr98690.C
  36fa3f305af8daf292a5a974b6cd8017  gcc/testsuite/g++.dg/ipa/pure-const-1.C
  82a7eaa06c8e9918346a40ce4e5c9881  gcc/testsuite/g++.dg/ipa/pure-const-2.C
--- 19088,19097 ----
  5876d4ac836871fb0c8247b9473d8271  gcc/testsuite/g++.dg/ipa/pr93223.C
  3c519f2160f2b11ce69ac7b30cb0fd2b  gcc/testsuite/g++.dg/ipa/pr93621.C
  3d99a30891927744757482e357f847ea  gcc/testsuite/g++.dg/ipa/pr93763.C
! dfc539d5b0e398accca796ab3e0f2a78  gcc/testsuite/g++.dg/ipa/pr94856.C
! ea65f96a07ad0a1b72deeb1386d1979e  gcc/testsuite/g++.dg/ipa/pr96806.C
! 8275998d07d56e45576d3c7e02c0aa4c  gcc/testsuite/g++.dg/ipa/pr98057.C
! e2988362ecb41c55df743fe23666ff05  gcc/testsuite/g++.dg/ipa/pr98075.C
  67ce956b024be06467602bda94a08aa7  gcc/testsuite/g++.dg/ipa/pr98690.C
  36fa3f305af8daf292a5a974b6cd8017  gcc/testsuite/g++.dg/ipa/pure-const-1.C
  82a7eaa06c8e9918346a40ce4e5c9881  gcc/testsuite/g++.dg/ipa/pure-const-2.C
*************** e11a3ab6dd51269a647930526c6c6eeb  gcc/te
*** 18163,18169 ****
  a1cbc0febcffce8e0f164e0feb720ea6  gcc/testsuite/g++.dg/lookup/extern-c-redecl5.C
  16a3850e9d48d6307623ac0730522dd5  gcc/testsuite/g++.dg/lookup/extern-c-redecl6.C
  8edbcd92c87ea5d2359ce61b0d93f861  gcc/testsuite/g++.dg/lookup/extern-c-static1.C
! 20c3233791717613823bca5ee2594703  gcc/testsuite/g++.dg/lookup/extern-redecl1.C
  c961035d55063ab35ff011e8098d8ea9  gcc/testsuite/g++.dg/lookup/forscope1.C
  a456249cabb4263894413ab00792e156  gcc/testsuite/g++.dg/lookup/forscope2.C
  f095afdbf961d01e5ac006fff4dbda02  gcc/testsuite/g++.dg/lookup/friend1.C
--- 19152,19159 ----
  a1cbc0febcffce8e0f164e0feb720ea6  gcc/testsuite/g++.dg/lookup/extern-c-redecl5.C
  16a3850e9d48d6307623ac0730522dd5  gcc/testsuite/g++.dg/lookup/extern-c-redecl6.C
  8edbcd92c87ea5d2359ce61b0d93f861  gcc/testsuite/g++.dg/lookup/extern-c-static1.C
! d25871b5460a9dd3b12221d883ea3021  gcc/testsuite/g++.dg/lookup/extern-redecl1.C
! c10fd3b7b6484a86ce4b90f995336e25  gcc/testsuite/g++.dg/lookup/extern-redecl2.C
  c961035d55063ab35ff011e8098d8ea9  gcc/testsuite/g++.dg/lookup/forscope1.C
  a456249cabb4263894413ab00792e156  gcc/testsuite/g++.dg/lookup/forscope2.C
  f095afdbf961d01e5ac006fff4dbda02  gcc/testsuite/g++.dg/lookup/friend1.C
*************** b9e805fb75a33ef1129f6679048f585f  gcc/te
*** 18222,18227 ****
--- 19212,19218 ----
  b4c9a3125082aac3aa6b866492a89640  gcc/testsuite/g++.dg/lookup/koenig12.C
  13b993a64fc2cc91de616884657a007a  gcc/testsuite/g++.dg/lookup/koenig13.C
  6f6f54957497ff01c410e425ceb5eb0a  gcc/testsuite/g++.dg/lookup/koenig14.C
+ c10e651a50b7b681144be5c6638dd98c  gcc/testsuite/g++.dg/lookup/koenig15.C
  c44c726de3c9ebad9efc6f0268a223d3  gcc/testsuite/g++.dg/lookup/koenig2.C
  0efd4ef624e1a631dad2972522c30301  gcc/testsuite/g++.dg/lookup/koenig3.C
  634eca78a66aff86cb1d96384411430c  gcc/testsuite/g++.dg/lookup/koenig4.C
*************** aad2c467c14168ed79e3c1e65b775cb4  gcc/te
*** 18233,18244 ****
--- 19224,19239 ----
  12a0ebc43d6dd6ccb9d7bbf98d09755f  gcc/testsuite/g++.dg/lookup/lambda1.C
  2e2a3c97b00100544902ae284deb2b80  gcc/testsuite/g++.dg/lookup/linkage1.C
  ca86ea8309b14f35f10e1d9671f22271  gcc/testsuite/g++.dg/lookup/linkage2.C
+ d95c77667d411b3dadeaad0287a033ff  gcc/testsuite/g++.dg/lookup/local-extern.C
  6438f8158c9b2b3fffe8884a62ce29af  gcc/testsuite/g++.dg/lookup/main1.C
  87fc629e5c4d461f8b0b8d07b9e85a50  gcc/testsuite/g++.dg/lookup/member1.C
  c3c7c64dd008283d64151a83f3fb88f5  gcc/testsuite/g++.dg/lookup/member2.C
  0014cd2335a3fc2ab0314f2b01e6434c  gcc/testsuite/g++.dg/lookup/member3.C
  a02c9e78c023a6582cecd8bcf992d2fd  gcc/testsuite/g++.dg/lookup/member4.C
  acece40c5f32aaa3b38f954b91368d3c  gcc/testsuite/g++.dg/lookup/member5.C
+ f81aac5278aa8141c0b1aedacbd46e7c  gcc/testsuite/g++.dg/lookup/missing-std-include-10.C
+ 6bc56500657f8c3b71b20af4c69e967f  gcc/testsuite/g++.dg/lookup/missing-std-include-10.h
+ 0a27fbf25062d8b94cfcffbfb481b8b7  gcc/testsuite/g++.dg/lookup/missing-std-include-11.C
  63850d2da277a993459adc90859da456  gcc/testsuite/g++.dg/lookup/missing-std-include-2.C
  29a08861fcce5ce8183c96169e17d4c1  gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
  2089959ff25a41b6553e2e30bcdab132  gcc/testsuite/g++.dg/lookup/missing-std-include-4.C
*************** f73a831dbfcd6430b723ed4198037c98  gcc/te
*** 18268,18273 ****
--- 19263,19270 ----
  8fad00e146fe0525b4a78080a95a7ca8  gcc/testsuite/g++.dg/lookup/ns2.C
  326caa0ef916da51fec348c662a91f18  gcc/testsuite/g++.dg/lookup/ns3.C
  b16d2b44bfa0aeed86e99a04f412703d  gcc/testsuite/g++.dg/lookup/ns4.C
+ 03c780f0918b370b2240f09b83a68b35  gcc/testsuite/g++.dg/lookup/operator-1.C
+ 6c03273d407e5d6de3e0a600b18d65db  gcc/testsuite/g++.dg/lookup/operator-2.C
  87eba878015147f0a75c48fd47e42fbb  gcc/testsuite/g++.dg/lookup/pr21802.C
  2378e813c805e961b5f594f4a76ec56d  gcc/testsuite/g++.dg/lookup/pr60994.C
  e8c219b570d08e589efca8f832a6b0b3  gcc/testsuite/g++.dg/lookup/pr67074.C
*************** ed8fbd78bcc2e25f56f4b46841242626  gcc/te
*** 18279,18285 ****
  f1733e79f7cd811d7c156dc2ca948be1  gcc/testsuite/g++.dg/lookup/pr80891-2.C
  4225629262d07739e4d67b593b2c11fe  gcc/testsuite/g++.dg/lookup/pr80891-3.C
  fea53cc76bc6dd15d6953532a0def9eb  gcc/testsuite/g++.dg/lookup/pr80891-4.C
! 69140e1fd7a11e5908795e34f2ce9cee  gcc/testsuite/g++.dg/lookup/pr80891-5.C
  e39913eb836c105e19f8a2ef46a2702f  gcc/testsuite/g++.dg/lookup/pr80913.C
  26ef1fd7163e6344bfb894634f561ab2  gcc/testsuite/g++.dg/lookup/pr80979.C
  d342db9fb18156df9393faba58928d3b  gcc/testsuite/g++.dg/lookup/pr81124.C
--- 19276,19282 ----
  f1733e79f7cd811d7c156dc2ca948be1  gcc/testsuite/g++.dg/lookup/pr80891-2.C
  4225629262d07739e4d67b593b2c11fe  gcc/testsuite/g++.dg/lookup/pr80891-3.C
  fea53cc76bc6dd15d6953532a0def9eb  gcc/testsuite/g++.dg/lookup/pr80891-4.C
! 6e22b6f91085f0d1b544ce1da248e04c  gcc/testsuite/g++.dg/lookup/pr80891-5.C
  e39913eb836c105e19f8a2ef46a2702f  gcc/testsuite/g++.dg/lookup/pr80913.C
  26ef1fd7163e6344bfb894634f561ab2  gcc/testsuite/g++.dg/lookup/pr80979.C
  d342db9fb18156df9393faba58928d3b  gcc/testsuite/g++.dg/lookup/pr81124.C
*************** c6368361a57f0364aefeee48a1733b7f  gcc/te
*** 18294,18300 ****
  4d4656996d848753635c6f150fe8821c  gcc/testsuite/g++.dg/lookup/pr84804.C
  70c6508383e6959de6c9f06e16b1fc74  gcc/testsuite/g++.dg/lookup/pr84812.C
  5610d7c94e4b37700da0165852dc16a0  gcc/testsuite/g++.dg/lookup/pr84836.C
! 4e61a1a0aea0f7453c4aae03502b9084  gcc/testsuite/g++.dg/lookup/pr84962.C
  b0d2b85719be4698bf6dbe4c553cb0fc  gcc/testsuite/g++.dg/lookup/pr84970.C
  6b555b80311b62daa1ffa5ce1810a621  gcc/testsuite/g++.dg/lookup/pr85634-2.C
  506978ed752f3a82436436e374de9f31  gcc/testsuite/g++.dg/lookup/pr85634.C
--- 19291,19297 ----
  4d4656996d848753635c6f150fe8821c  gcc/testsuite/g++.dg/lookup/pr84804.C
  70c6508383e6959de6c9f06e16b1fc74  gcc/testsuite/g++.dg/lookup/pr84812.C
  5610d7c94e4b37700da0165852dc16a0  gcc/testsuite/g++.dg/lookup/pr84836.C
! 6531b6f0d418c24a78e45c6fec75c5e3  gcc/testsuite/g++.dg/lookup/pr84962.C
  b0d2b85719be4698bf6dbe4c553cb0fc  gcc/testsuite/g++.dg/lookup/pr84970.C
  6b555b80311b62daa1ffa5ce1810a621  gcc/testsuite/g++.dg/lookup/pr85634-2.C
  506978ed752f3a82436436e374de9f31  gcc/testsuite/g++.dg/lookup/pr85634.C
*************** d85c77d90a65a6ab99636a50096dd54e  gcc/te
*** 18306,18316 ****
  ce3cad33334f23d34dc1c7641daaf22a  gcc/testsuite/g++.dg/lookup/pr90754.C
  3d384542a620fae8987b3de3d5ed239f  gcc/testsuite/g++.dg/lookup/pr91826.C
  c0d5ffeb75a35d8442846603fb55dbb5  gcc/testsuite/g++.dg/lookup/pr94257.C
  9fc063d780e4510399927cfe832e8770  gcc/testsuite/g++.dg/lookup/pretty1.C
  f30dda31dee159f3aebbbc269a5fd8e4  gcc/testsuite/g++.dg/lookup/ptrmem1.C
  a2c2f830b707488f1f2104abe37f00dc  gcc/testsuite/g++.dg/lookup/redecl1.C
  a0c29cb4b5f7577e6f70badabcf54df5  gcc/testsuite/g++.dg/lookup/scope-operator1.C
! fa7c50e4d56c600949d4298fb44c320f  gcc/testsuite/g++.dg/lookup/scoped1.C
  bf3eaff26a33ccd4611b5f6e55765a4d  gcc/testsuite/g++.dg/lookup/scoped10.C
  ded308bf80d3b50738f4d56dc16fada2  gcc/testsuite/g++.dg/lookup/scoped2.C
  fd5b1d6b45ff24d721908d389585b869  gcc/testsuite/g++.dg/lookup/scoped3.C
--- 19303,19319 ----
  ce3cad33334f23d34dc1c7641daaf22a  gcc/testsuite/g++.dg/lookup/pr90754.C
  3d384542a620fae8987b3de3d5ed239f  gcc/testsuite/g++.dg/lookup/pr91826.C
  c0d5ffeb75a35d8442846603fb55dbb5  gcc/testsuite/g++.dg/lookup/pr94257.C
+ 6f2568fcabfc17df94621b4396ce6485  gcc/testsuite/g++.dg/lookup/pr97877.C
+ a08f7a8ee36ffedf58d45cdd0bea310c  gcc/testsuite/g++.dg/lookup/pr97905.C
+ f7f019c20c4a98b96f2eecf985428f03  gcc/testsuite/g++.dg/lookup/pr99030.C
+ a4d811ecd0c3887d68812c42b8d16691  gcc/testsuite/g++.dg/lookup/pr99039.C
+ f3f1703b34389748bf54d9576b9b99a7  gcc/testsuite/g++.dg/lookup/pr99116-1.C
+ cba7f8d0ef2bdfaf7627f1941b7dcd57  gcc/testsuite/g++.dg/lookup/pr99116-2.C
  9fc063d780e4510399927cfe832e8770  gcc/testsuite/g++.dg/lookup/pretty1.C
  f30dda31dee159f3aebbbc269a5fd8e4  gcc/testsuite/g++.dg/lookup/ptrmem1.C
  a2c2f830b707488f1f2104abe37f00dc  gcc/testsuite/g++.dg/lookup/redecl1.C
  a0c29cb4b5f7577e6f70badabcf54df5  gcc/testsuite/g++.dg/lookup/scope-operator1.C
! d4c09ae1055370e4dd84dbc6a2c452f5  gcc/testsuite/g++.dg/lookup/scoped1.C
  bf3eaff26a33ccd4611b5f6e55765a4d  gcc/testsuite/g++.dg/lookup/scoped10.C
  ded308bf80d3b50738f4d56dc16fada2  gcc/testsuite/g++.dg/lookup/scoped2.C
  fd5b1d6b45ff24d721908d389585b869  gcc/testsuite/g++.dg/lookup/scoped3.C
*************** e7755a95bf2085eda8b7891a22965f08  gcc/te
*** 18332,18338 ****
  a793e64bb6b34881797f23d0f6a812f7  gcc/testsuite/g++.dg/lookup/template1.C
  7019845dfb6dbd2d5547a6f72b822068  gcc/testsuite/g++.dg/lookup/template2.C
  75b2b90a34407d67ae6e6b01b7e2a7f7  gcc/testsuite/g++.dg/lookup/template3.C
! 8b9ae54e36b3204ee122989fbde5a184  gcc/testsuite/g++.dg/lookup/this1.C
  0f014086c6e90e67e8879d132fc019d6  gcc/testsuite/g++.dg/lookup/two-stage1.C
  1d4d95969d27910bf0528926c351da6c  gcc/testsuite/g++.dg/lookup/two-stage2.C
  673f5cb94e0c6c5a86bce634e4eb2be5  gcc/testsuite/g++.dg/lookup/two-stage3.C
--- 19335,19341 ----
  a793e64bb6b34881797f23d0f6a812f7  gcc/testsuite/g++.dg/lookup/template1.C
  7019845dfb6dbd2d5547a6f72b822068  gcc/testsuite/g++.dg/lookup/template2.C
  75b2b90a34407d67ae6e6b01b7e2a7f7  gcc/testsuite/g++.dg/lookup/template3.C
! 230f917f7f04354731ed6ab070fc0e97  gcc/testsuite/g++.dg/lookup/this1.C
  0f014086c6e90e67e8879d132fc019d6  gcc/testsuite/g++.dg/lookup/two-stage1.C
  1d4d95969d27910bf0528926c351da6c  gcc/testsuite/g++.dg/lookup/two-stage2.C
  673f5cb94e0c6c5a86bce634e4eb2be5  gcc/testsuite/g++.dg/lookup/two-stage3.C
*************** ddb95e89fa0dec0bbd065160a0fd5f62  gcc/te
*** 18358,18364 ****
  c860cb0eb295ebcb219fbcb0357233e3  gcc/testsuite/g++.dg/lookup/using23.C
  b6a4f61b322984d6698a73fe3804d547  gcc/testsuite/g++.dg/lookup/using24.C
  aff7de7adc795eb143921ae465b9ec0f  gcc/testsuite/g++.dg/lookup/using25.C
! 7bba506898a01af3df59b1d5f328502f  gcc/testsuite/g++.dg/lookup/using26.C
  37ed5e841d52c7a968b6808018f1412b  gcc/testsuite/g++.dg/lookup/using27.C
  c327a4c816ef51deda0133814e487924  gcc/testsuite/g++.dg/lookup/using28.C
  41083ecc0cd067bef02bf05dcac8caa3  gcc/testsuite/g++.dg/lookup/using29.C
--- 19361,19367 ----
  c860cb0eb295ebcb219fbcb0357233e3  gcc/testsuite/g++.dg/lookup/using23.C
  b6a4f61b322984d6698a73fe3804d547  gcc/testsuite/g++.dg/lookup/using24.C
  aff7de7adc795eb143921ae465b9ec0f  gcc/testsuite/g++.dg/lookup/using25.C
! a6328d8566e02a3202b9b3286fb4e02e  gcc/testsuite/g++.dg/lookup/using26.C
  37ed5e841d52c7a968b6808018f1412b  gcc/testsuite/g++.dg/lookup/using27.C
  c327a4c816ef51deda0133814e487924  gcc/testsuite/g++.dg/lookup/using28.C
  41083ecc0cd067bef02bf05dcac8caa3  gcc/testsuite/g++.dg/lookup/using29.C
*************** a37f284dd65a3609bf1db28414d17c25  gcc/te
*** 18373,18379 ****
  ca7ffb32cb71dd0c7f7be2f574172240  gcc/testsuite/g++.dg/lookup/using37.C
  6133d93b9e3d1477d5f921d386c406a0  gcc/testsuite/g++.dg/lookup/using38.C
  5f4e9941a5eb0ad3e74459e375672825  gcc/testsuite/g++.dg/lookup/using39.C
! 953656ff4c7acb536fc06f7a2025eda8  gcc/testsuite/g++.dg/lookup/using4.C
  c7eba10fde1c022b01e7cea82dca77f0  gcc/testsuite/g++.dg/lookup/using40.C
  b30a19e7bafa9e7d872f9e48eb523485  gcc/testsuite/g++.dg/lookup/using41.C
  1cf6b98d2fe6086859c5c7dd1613c8c2  gcc/testsuite/g++.dg/lookup/using42.C
--- 19376,19382 ----
  ca7ffb32cb71dd0c7f7be2f574172240  gcc/testsuite/g++.dg/lookup/using37.C
  6133d93b9e3d1477d5f921d386c406a0  gcc/testsuite/g++.dg/lookup/using38.C
  5f4e9941a5eb0ad3e74459e375672825  gcc/testsuite/g++.dg/lookup/using39.C
! d4da93a0724232b1f316bd87632c3c06  gcc/testsuite/g++.dg/lookup/using4.C
  c7eba10fde1c022b01e7cea82dca77f0  gcc/testsuite/g++.dg/lookup/using40.C
  b30a19e7bafa9e7d872f9e48eb523485  gcc/testsuite/g++.dg/lookup/using41.C
  1cf6b98d2fe6086859c5c7dd1613c8c2  gcc/testsuite/g++.dg/lookup/using42.C
*************** e6b9eddad8d672688c883ca8af446a66  gcc/te
*** 18387,18393 ****
  389a92cf6aacf98eb4b24781b6ec7ebc  gcc/testsuite/g++.dg/lookup/using50.C
  f987ef07d14ec2f00187c4c84c596777  gcc/testsuite/g++.dg/lookup/using51.C
  c215c3d00f87b59d1c59614eaf8713ea  gcc/testsuite/g++.dg/lookup/using52.C
! 53157a76416a826debea6ae860ec038e  gcc/testsuite/g++.dg/lookup/using53.C
  9650e8814f13fa13eae326438a1fdf61  gcc/testsuite/g++.dg/lookup/using54.C
  2c031b9dc98ae61c00b9677b6ad27297  gcc/testsuite/g++.dg/lookup/using55.C
  9ab8d14e576848ca2e357e33a402d9d8  gcc/testsuite/g++.dg/lookup/using56.C
--- 19390,19396 ----
  389a92cf6aacf98eb4b24781b6ec7ebc  gcc/testsuite/g++.dg/lookup/using50.C
  f987ef07d14ec2f00187c4c84c596777  gcc/testsuite/g++.dg/lookup/using51.C
  c215c3d00f87b59d1c59614eaf8713ea  gcc/testsuite/g++.dg/lookup/using52.C
! f49c14d03d35e01b6261427790692a09  gcc/testsuite/g++.dg/lookup/using53.C
  9650e8814f13fa13eae326438a1fdf61  gcc/testsuite/g++.dg/lookup/using54.C
  2c031b9dc98ae61c00b9677b6ad27297  gcc/testsuite/g++.dg/lookup/using55.C
  9ab8d14e576848ca2e357e33a402d9d8  gcc/testsuite/g++.dg/lookup/using56.C
*************** c215c3d00f87b59d1c59614eaf8713ea  gcc/te
*** 18398,18403 ****
--- 19401,19410 ----
  1326174db9cb7a0642c670ad6288426d  gcc/testsuite/g++.dg/lookup/using60.C
  e0b7621e55bc08def1537fb40f4102ca  gcc/testsuite/g++.dg/lookup/using61.C
  6382215c9cbc065f0c9afff8f5f2e25c  gcc/testsuite/g++.dg/lookup/using62.C
+ 81877e69327d2efc8448f67dfb78ce8c  gcc/testsuite/g++.dg/lookup/using63.C
+ 6c26df12875686b1804ffb0f4bd77408  gcc/testsuite/g++.dg/lookup/using64.C
+ 109f9257daa57f3721dc498d62169cb6  gcc/testsuite/g++.dg/lookup/using65.C
+ d858e2316bc63bb7df9c94f3a0c89324  gcc/testsuite/g++.dg/lookup/using66.C
  9be044a2ccf500ea6536f0f7ccbdef45  gcc/testsuite/g++.dg/lookup/using7.C
  05105c11218492c8a6c6943b32a316ec  gcc/testsuite/g++.dg/lookup/using8.C
  94092d782dab067a9255cde42b45a3bf  gcc/testsuite/g++.dg/lookup/using9.C
*************** e0b7621e55bc08def1537fb40f4102ca  gcc/te
*** 18405,18411 ****
  c3ea1857c08073dd9cb62c97df1dfc09  gcc/testsuite/g++.dg/lto/20080829_0.C
  87ec15bcb9a0ae242a5c3d889670e857  gcc/testsuite/g++.dg/lto/20080904_0.C
  f5d65d77dbb11fe409fcc8a6172582d1  gcc/testsuite/g++.dg/lto/20080907_0.C
! c1e83fe1d8e70a572a1c857cd072e22f  gcc/testsuite/g++.dg/lto/20080908-1_0.C
  9765338d51d81df52f5c43d2e5e40643  gcc/testsuite/g++.dg/lto/20080908-2_0.C
  5099dc41f267dd624df5d8fc4dfacc06  gcc/testsuite/g++.dg/lto/20080908-3_0.C
  42370e2b0e5ddc6d2f9564966930e73f  gcc/testsuite/g++.dg/lto/20080909-1_0.C
--- 19412,19418 ----
  c3ea1857c08073dd9cb62c97df1dfc09  gcc/testsuite/g++.dg/lto/20080829_0.C
  87ec15bcb9a0ae242a5c3d889670e857  gcc/testsuite/g++.dg/lto/20080904_0.C
  f5d65d77dbb11fe409fcc8a6172582d1  gcc/testsuite/g++.dg/lto/20080907_0.C
! 0e1291249e3c4dbd9b46de810486f920  gcc/testsuite/g++.dg/lto/20080908-1_0.C
  9765338d51d81df52f5c43d2e5e40643  gcc/testsuite/g++.dg/lto/20080908-2_0.C
  5099dc41f267dd624df5d8fc4dfacc06  gcc/testsuite/g++.dg/lto/20080908-3_0.C
  42370e2b0e5ddc6d2f9564966930e73f  gcc/testsuite/g++.dg/lto/20080909-1_0.C
*************** b7c3e533b1333e670fd330cd8ec53900  gcc/te
*** 18460,18466 ****
  d15df87cc28d9d979322de144056e392  gcc/testsuite/g++.dg/lto/20081217-1_0.C
  296babb8d81e392a3eb3bd07fdb13abf  gcc/testsuite/g++.dg/lto/20081217-2_0.C
  1192dbaec8e9beb2883f6b31c5f54179  gcc/testsuite/g++.dg/lto/20081219_0.C
! f59c1786515e2448abc8abf5a1c29eb0  gcc/testsuite/g++.dg/lto/20081219_1.C
  1ce6c1aebc36b1f96969c33548c941e3  gcc/testsuite/g++.dg/lto/20090106_0.C
  ea89b08bb23cbd99492773e11d27c75c  gcc/testsuite/g++.dg/lto/20090112_0.C
  e3e45aab92462ef1598354a107aea37a  gcc/testsuite/g++.dg/lto/20090128_0.C
--- 19467,19473 ----
  d15df87cc28d9d979322de144056e392  gcc/testsuite/g++.dg/lto/20081217-1_0.C
  296babb8d81e392a3eb3bd07fdb13abf  gcc/testsuite/g++.dg/lto/20081217-2_0.C
  1192dbaec8e9beb2883f6b31c5f54179  gcc/testsuite/g++.dg/lto/20081219_0.C
! 14afcf02987ab442daa68d105471c3bb  gcc/testsuite/g++.dg/lto/20081219_1.C
  1ce6c1aebc36b1f96969c33548c941e3  gcc/testsuite/g++.dg/lto/20090106_0.C
  ea89b08bb23cbd99492773e11d27c75c  gcc/testsuite/g++.dg/lto/20090112_0.C
  e3e45aab92462ef1598354a107aea37a  gcc/testsuite/g++.dg/lto/20090128_0.C
*************** f9e0bfc0c49325e7a145a4980e750d1a  gcc/te
*** 18480,18486 ****
  af95ff52b10d0e17c8fe8216f7c09b32  gcc/testsuite/g++.dg/lto/20090313_1.C
  45a8b4648f6eb8bbf2796a6dcf8c4b1b  gcc/testsuite/g++.dg/lto/20090315_0.C
  4668a3c2619c1eb17bf2ef65e3938fe5  gcc/testsuite/g++.dg/lto/20090315_1.C
! 51124f3634eec6fa281bac1b61afa59e  gcc/testsuite/g++.dg/lto/20091002-1_0.C
  08550918f1bd228cd8e092af474c1bd2  gcc/testsuite/g++.dg/lto/20091002-2_0.C
  b13b68c8324ea6d19905ff2ed7fdda94  gcc/testsuite/g++.dg/lto/20091002-3_0.C
  93a671aaefea7542bfaecc843d4aa87e  gcc/testsuite/g++.dg/lto/20091004-1_0.C
--- 19487,19493 ----
  af95ff52b10d0e17c8fe8216f7c09b32  gcc/testsuite/g++.dg/lto/20090313_1.C
  45a8b4648f6eb8bbf2796a6dcf8c4b1b  gcc/testsuite/g++.dg/lto/20090315_0.C
  4668a3c2619c1eb17bf2ef65e3938fe5  gcc/testsuite/g++.dg/lto/20090315_1.C
! e5bbc62db9327f9fdefc42d197e6fa17  gcc/testsuite/g++.dg/lto/20091002-1_0.C
  08550918f1bd228cd8e092af474c1bd2  gcc/testsuite/g++.dg/lto/20091002-2_0.C
  b13b68c8324ea6d19905ff2ed7fdda94  gcc/testsuite/g++.dg/lto/20091002-3_0.C
  93a671aaefea7542bfaecc843d4aa87e  gcc/testsuite/g++.dg/lto/20091004-1_0.C
*************** a44566d13ced1a79770276fc437e80d4  gcc/te
*** 18553,18559 ****
  62ce00e27e2297def984a00e603cd45f  gcc/testsuite/g++.dg/lto/inline-crossmodule-1.h
  08353ac2e76a0bc6d953f77bca05c308  gcc/testsuite/g++.dg/lto/inline-crossmodule-1_0.C
  a9aa6c16f15dfad712dab4d5e34d1ad3  gcc/testsuite/g++.dg/lto/inline-crossmodule-1_1.C
! 648ce35660839774c9a34229818c5dc1  gcc/testsuite/g++.dg/lto/lto.exp
  95d507e6740bbc0a4bd79e79c59225e8  gcc/testsuite/g++.dg/lto/odr-1_0.C
  9db1b1f72a71107aab0a900b608189d8  gcc/testsuite/g++.dg/lto/odr-1_1.C
  5c6ba6285c9f905aad689d0df9b3b508  gcc/testsuite/g++.dg/lto/odr-2_0.C
--- 19560,19566 ----
  62ce00e27e2297def984a00e603cd45f  gcc/testsuite/g++.dg/lto/inline-crossmodule-1.h
  08353ac2e76a0bc6d953f77bca05c308  gcc/testsuite/g++.dg/lto/inline-crossmodule-1_0.C
  a9aa6c16f15dfad712dab4d5e34d1ad3  gcc/testsuite/g++.dg/lto/inline-crossmodule-1_1.C
! c20655d92e3ed73d30af9647f9551f4e  gcc/testsuite/g++.dg/lto/lto.exp
  95d507e6740bbc0a4bd79e79c59225e8  gcc/testsuite/g++.dg/lto/odr-1_0.C
  9db1b1f72a71107aab0a900b608189d8  gcc/testsuite/g++.dg/lto/odr-1_1.C
  5c6ba6285c9f905aad689d0df9b3b508  gcc/testsuite/g++.dg/lto/odr-2_0.C
*************** d41d8cd98f00b204e9800998ecf8427e  gcc/te
*** 18635,18641 ****
  a8d79eafba6d19cc77d3447c4e964c71  gcc/testsuite/g++.dg/lto/pr65475_1.C
  53b9b01a1dd9fa1d4939863b65f32118  gcc/testsuite/g++.dg/lto/pr65475b_0.C
  32e103d153c6009c9d362f60e06c61b3  gcc/testsuite/g++.dg/lto/pr65475b_1.C
! 4c46ea8e1f6a05c2359869eae96abf2e  gcc/testsuite/g++.dg/lto/pr65475c_0.C
  e8cf2a3b6fd4daf5bb8b404d59602d2f  gcc/testsuite/g++.dg/lto/pr65475c_1.C
  4b27326200ddb5b6cebf69d6dcc7bd0f  gcc/testsuite/g++.dg/lto/pr65549_0.C
  98ff31b886562e851e98d8334aedbbc7  gcc/testsuite/g++.dg/lto/pr66180_0.C
--- 19642,19648 ----
  a8d79eafba6d19cc77d3447c4e964c71  gcc/testsuite/g++.dg/lto/pr65475_1.C
  53b9b01a1dd9fa1d4939863b65f32118  gcc/testsuite/g++.dg/lto/pr65475b_0.C
  32e103d153c6009c9d362f60e06c61b3  gcc/testsuite/g++.dg/lto/pr65475b_1.C
! b0be053370eef0727a9bc5a52471bfd8  gcc/testsuite/g++.dg/lto/pr65475c_0.C
  e8cf2a3b6fd4daf5bb8b404d59602d2f  gcc/testsuite/g++.dg/lto/pr65475c_1.C
  4b27326200ddb5b6cebf69d6dcc7bd0f  gcc/testsuite/g++.dg/lto/pr65549_0.C
  98ff31b886562e851e98d8334aedbbc7  gcc/testsuite/g++.dg/lto/pr66180_0.C
*************** b972d1fd05b76ae528924efc5e87e1e0  gcc/te
*** 18659,18665 ****
  e2b3ea5caae8976b182bb721752f096a  gcc/testsuite/g++.dg/lto/pr78472_1.C
  03aea5d153d1094ec80f182b550ad105  gcc/testsuite/g++.dg/lto/pr79000_0.C
  96a285b9e00d7ac1bddf1aa2d1737651  gcc/testsuite/g++.dg/lto/pr79000_1.c
! cbabc80851a14f5ce9acf898d69e0c56  gcc/testsuite/g++.dg/lto/pr79050_0.C
  fc5790b972183d141230e551e9de78a5  gcc/testsuite/g++.dg/lto/pr79671_0.C
  2b83a5f8260536dd9d7e43db9852168b  gcc/testsuite/g++.dg/lto/pr79671_1.c
  e818718060d8a56058024842b3c50923  gcc/testsuite/g++.dg/lto/pr80287_0.C
--- 19666,19672 ----
  e2b3ea5caae8976b182bb721752f096a  gcc/testsuite/g++.dg/lto/pr78472_1.C
  03aea5d153d1094ec80f182b550ad105  gcc/testsuite/g++.dg/lto/pr79000_0.C
  96a285b9e00d7ac1bddf1aa2d1737651  gcc/testsuite/g++.dg/lto/pr79000_1.c
! 5f96f0a8bac431f1df417d8fee7e0bd8  gcc/testsuite/g++.dg/lto/pr79050_0.C
  fc5790b972183d141230e551e9de78a5  gcc/testsuite/g++.dg/lto/pr79671_0.C
  2b83a5f8260536dd9d7e43db9852168b  gcc/testsuite/g++.dg/lto/pr79671_1.c
  e818718060d8a56058024842b3c50923  gcc/testsuite/g++.dg/lto/pr80287_0.C
*************** ccdae431579a6d857d9b594afc510a82  gcc/te
*** 18669,18675 ****
  c69ee89888cbc8e3a690a9c93e2f0082  gcc/testsuite/g++.dg/lto/pr83121_0.C
  6181d611dccf43a1ef7f9931a589ab56  gcc/testsuite/g++.dg/lto/pr83121_1.C
  e16ec991c91a1fecd1f045a13d50a6ab  gcc/testsuite/g++.dg/lto/pr83720_0.C
! da2c2beb2ab408e0b785bbdc6af85ed7  gcc/testsuite/g++.dg/lto/pr84805_0.C
  774e7ed2d836a73febe2f3b698184aa5  gcc/testsuite/g++.dg/lto/pr84805_1.C
  9e331b6a573e4b616f77b2582f99b74e  gcc/testsuite/g++.dg/lto/pr84805_2.C
  129aa46ac2a0e760a1f1095a3e7ccf6d  gcc/testsuite/g++.dg/lto/pr85176_0.C
--- 19676,19682 ----
  c69ee89888cbc8e3a690a9c93e2f0082  gcc/testsuite/g++.dg/lto/pr83121_0.C
  6181d611dccf43a1ef7f9931a589ab56  gcc/testsuite/g++.dg/lto/pr83121_1.C
  e16ec991c91a1fecd1f045a13d50a6ab  gcc/testsuite/g++.dg/lto/pr83720_0.C
! 8500812bd77feb17c6ee9a553a143300  gcc/testsuite/g++.dg/lto/pr84805_0.C
  774e7ed2d836a73febe2f3b698184aa5  gcc/testsuite/g++.dg/lto/pr84805_1.C
  9e331b6a573e4b616f77b2582f99b74e  gcc/testsuite/g++.dg/lto/pr84805_2.C
  129aa46ac2a0e760a1f1095a3e7ccf6d  gcc/testsuite/g++.dg/lto/pr85176_0.C
*************** a154c230ca678644ced231367fd697d3  gcc/te
*** 18695,18701 ****
  5ddd8396b535cb08306863df28f22bf7  gcc/testsuite/g++.dg/lto/pr88758_1.C
  ea4edae735415c73e2a3055e504105dc  gcc/testsuite/g++.dg/lto/pr89330_0.C
  68d5a7d425f219b1683f4ca9cf340fbb  gcc/testsuite/g++.dg/lto/pr89330_1.C
! 03ab546a755ae56fce36b8c6151a6cf3  gcc/testsuite/g++.dg/lto/pr89335_0.C
  cb782e35cc277d1b7be31cdb2b766e39  gcc/testsuite/g++.dg/lto/pr89358_0.C
  4f6e362a864f5ac4f9b9b99e660e0674  gcc/testsuite/g++.dg/lto/pr89358_1.C
  71c4e0358186a48bc58fd216bc445a9a  gcc/testsuite/g++.dg/lto/pr90939_0.C
--- 19702,19708 ----
  5ddd8396b535cb08306863df28f22bf7  gcc/testsuite/g++.dg/lto/pr88758_1.C
  ea4edae735415c73e2a3055e504105dc  gcc/testsuite/g++.dg/lto/pr89330_0.C
  68d5a7d425f219b1683f4ca9cf340fbb  gcc/testsuite/g++.dg/lto/pr89330_1.C
! e85cd7d5596a53bc1ee6e0d012801edb  gcc/testsuite/g++.dg/lto/pr89335_0.C
  cb782e35cc277d1b7be31cdb2b766e39  gcc/testsuite/g++.dg/lto/pr89358_0.C
  4f6e362a864f5ac4f9b9b99e660e0674  gcc/testsuite/g++.dg/lto/pr89358_1.C
  71c4e0358186a48bc58fd216bc445a9a  gcc/testsuite/g++.dg/lto/pr90939_0.C
*************** ce8be172edac90152397f5825f64ab68  gcc/te
*** 18708,18719 ****
  f3edef1ce387276626f5233209353c56  gcc/testsuite/g++.dg/lto/pr92609_0.C
  42d332f131b2a45f8c5d542d547db308  gcc/testsuite/g++.dg/lto/pr92609_1.C
  2d449b278a535f9f851a800e453b07a6  gcc/testsuite/g++.dg/lto/pr93166_0.C
  d92f918a28c68fc934d26fc7ceb822b5  gcc/testsuite/g++.dg/lto/pr96591_0.C
  b8735311421a9557b475c780e1712295  gcc/testsuite/g++.dg/lto/pr96690_0.C
  6232508298dd20a759cf64fffbca9f5e  gcc/testsuite/g++.dg/lto/v1-plugin-api-not-supported_0.C
  dbe30d4af4bd2caeabf4784c3ef0ca9d  gcc/testsuite/g++.dg/missing-return.C
  0611288c84e3f846cb789e1b0d0e7706  gcc/testsuite/g++.dg/missing-symbol-2.C
! 31719b284ce99aff2f67474fd71f79cb  gcc/testsuite/g++.dg/opt/20050511-1.C
  5e1f1ec360f2ae54c78ee347de5c583f  gcc/testsuite/g++.dg/opt/20181025-1.C
  960bd912d3dccb44df0ecdebdfd45b44  gcc/testsuite/g++.dg/opt/alias1.C
  15bcb0db43b0a7c6f0b1a4ff014da35d  gcc/testsuite/g++.dg/opt/alias2.C
--- 19715,20751 ----
  f3edef1ce387276626f5233209353c56  gcc/testsuite/g++.dg/lto/pr92609_0.C
  42d332f131b2a45f8c5d542d547db308  gcc/testsuite/g++.dg/lto/pr92609_1.C
  2d449b278a535f9f851a800e453b07a6  gcc/testsuite/g++.dg/lto/pr93166_0.C
+ 2ddbed867f8a06e5917b4b7dd8594763  gcc/testsuite/g++.dg/lto/pr95677.C
  d92f918a28c68fc934d26fc7ceb822b5  gcc/testsuite/g++.dg/lto/pr96591_0.C
  b8735311421a9557b475c780e1712295  gcc/testsuite/g++.dg/lto/pr96690_0.C
  6232508298dd20a759cf64fffbca9f5e  gcc/testsuite/g++.dg/lto/v1-plugin-api-not-supported_0.C
  dbe30d4af4bd2caeabf4784c3ef0ca9d  gcc/testsuite/g++.dg/missing-return.C
  0611288c84e3f846cb789e1b0d0e7706  gcc/testsuite/g++.dg/missing-symbol-2.C
! 3e82072151bc1ef9460e5aa293c1f7e9  gcc/testsuite/g++.dg/modules/access-1_a.C
! 09b5b33549e0fae8241fc5c1e511aa94  gcc/testsuite/g++.dg/modules/access-1_b.C
! 3530117fb493e047e12aef4eb9b47cdb  gcc/testsuite/g++.dg/modules/access-1_c.C
! 5d129e8bc113c7e51cafe5981b65f2b7  gcc/testsuite/g++.dg/modules/adhoc-1_a.C
! 16c64a2c2890011c1485d5a569134ad9  gcc/testsuite/g++.dg/modules/adhoc-1_b.C
! 9c824c1a28f6bcf79fd72186d79fe93c  gcc/testsuite/g++.dg/modules/adl-1_a.C
! 3bb31e23ac383185d41cda2c5fcbdaf3  gcc/testsuite/g++.dg/modules/adl-1_b.C
! 46103f57f3287176308fc33634d7da8e  gcc/testsuite/g++.dg/modules/adl-1_c.C
! 8ec67653666a329a8a9cfe407bfa8337  gcc/testsuite/g++.dg/modules/adl-2_a.C
! 7eba5423b616a24d46ca9f4ff601f068  gcc/testsuite/g++.dg/modules/adl-2_b.C
! ecc4cdff1fc19f2bbddbccb4517d4d32  gcc/testsuite/g++.dg/modules/adl-2_c.C
! bd66ca585f19d4134a1459d928b36ae9  gcc/testsuite/g++.dg/modules/adl-3_a.C
! a259a9b00d1160c845c55e9291b4a06b  gcc/testsuite/g++.dg/modules/adl-3_b.C
! c6bae9ebe0d151a4e90da3eb0190d6c9  gcc/testsuite/g++.dg/modules/adl-3_c.C
! 2db95f9305aa7836803dc6e9c51e92fb  gcc/testsuite/g++.dg/modules/adl-4_a.C
! 35342463b6e2512152cf33f494607043  gcc/testsuite/g++.dg/modules/adl-4_b.C
! c03085d054b414379e2393c066d0d997  gcc/testsuite/g++.dg/modules/adl-5_a.c
! acda5ed59aa700353a640d4574448925  gcc/testsuite/g++.dg/modules/adl-5_b.C
! 3b266e88f18eff80afa4008e92a1178c  gcc/testsuite/g++.dg/modules/adl-5_c.C
! ecc4cdff1fc19f2bbddbccb4517d4d32  gcc/testsuite/g++.dg/modules/adl-5_d.C
! 84f5dc8c8fe19d892ed655362cbbabc1  gcc/testsuite/g++.dg/modules/alias-1_a.H
! e6b3e06ae5eedff2deb2b4aafbe2aff6  gcc/testsuite/g++.dg/modules/alias-1_b.C
! 87bfff6916b05ac863e65eb34d2f39c5  gcc/testsuite/g++.dg/modules/alias-1_c.C
! 47c81b163d9ad33ba764df13c1aa2cba  gcc/testsuite/g++.dg/modules/alias-1_d.C
! 3e89e370c4d90e1b86b2db56d8934fb0  gcc/testsuite/g++.dg/modules/alias-1_e.C
! f317a314753ff96e2d9e59fc588e689f  gcc/testsuite/g++.dg/modules/alias-1_f.C
! ef2bca1fe28aab857ad570bb97dfa565  gcc/testsuite/g++.dg/modules/alias-2_b.C
! fba23da3f9ec6a6b93d60f4ef252481e  gcc/testsuite/g++.dg/modules/align-type-1_a.C
! 0f37e2e98366e55c9539dfead51cb028  gcc/testsuite/g++.dg/modules/align-type-1_b.C
! 6e36c74fc6da256a9a69d602eaf80799  gcc/testsuite/g++.dg/modules/ambig-1_a.C
! cc8a24e3071762db42b8cc93b84bc218  gcc/testsuite/g++.dg/modules/ambig-1_b.C
! 2a95a2f6f71a0ac30f32466820d2a814  gcc/testsuite/g++.dg/modules/anon-1_a.C
! b57fe141e2fed60dcd3525891f099585  gcc/testsuite/g++.dg/modules/anon-1_b.C
! f2f40d23b84601853ad5eb408b4167d4  gcc/testsuite/g++.dg/modules/anon-1_c.C
! f9f5e3f832e9fc9f27be84c9dd931af4  gcc/testsuite/g++.dg/modules/anon-2.h
! 454233368c6bda5f938abc5b4c5af4cb  gcc/testsuite/g++.dg/modules/anon-2_a.H
! 32732079649b2eb040c1ba0b3d2f5e7d  gcc/testsuite/g++.dg/modules/anon-2_b.C
! a7104a7f65a894a81867f80af8612399  gcc/testsuite/g++.dg/modules/atom-decl-0_a.C
! bb5c4cd9a7635fa1f03740e04c841427  gcc/testsuite/g++.dg/modules/atom-decl-0_b.C
! 264f336f97e542ff429a149616ccd617  gcc/testsuite/g++.dg/modules/atom-decl-0_c.C
! 5fe01ffbb194d47bd597f946d31eda44  gcc/testsuite/g++.dg/modules/atom-decl-2.C
! cbcaa228a99405e9d30bda5bc62e67ff  gcc/testsuite/g++.dg/modules/atom-decl-3.C
! 8248fdb627967da2d022688e25d50185  gcc/testsuite/g++.dg/modules/atom-pragma-1.C
! 847140d0ba90e454b64518cf34e0df81  gcc/testsuite/g++.dg/modules/atom-pragma-3.C
! 0ca64939ad66eb60fdbc6abbae2de084  gcc/testsuite/g++.dg/modules/atom-preamble-1.C
! fa0b1f89a565691ef90d71ff4335f004  gcc/testsuite/g++.dg/modules/atom-preamble-2_a.C
! ff6388df65ce7040fcb3fed7c265c6b3  gcc/testsuite/g++.dg/modules/atom-preamble-2_b.C
! 35c4a0f83a6a20cd4877f80ff98aea13  gcc/testsuite/g++.dg/modules/atom-preamble-2_c.C
! 6a377a656bec55ca6faa7f5c34a54514  gcc/testsuite/g++.dg/modules/atom-preamble-2_d.C
! 78b6cd37597e8bead1d104e4543b02fe  gcc/testsuite/g++.dg/modules/atom-preamble-2_e.C
! 8814ec06b94adb7091c1b98e0948bae5  gcc/testsuite/g++.dg/modules/atom-preamble-2_f.C
! f401bc7b53e7de843d517ee0ad528749  gcc/testsuite/g++.dg/modules/atom-preamble-3.C
! 374551efb5c4f0de442b7a47ff980083  gcc/testsuite/g++.dg/modules/atom-preamble-4.C
! 81c0c5e828fc012cafc9fa3658ffa887  gcc/testsuite/g++.dg/modules/auto-1.h
! 29e4a658cd6f3050ca87707ca8d0bd7b  gcc/testsuite/g++.dg/modules/auto-1_a.H
! 1e77f8d752cd0eeb7af8d66ff149dcec  gcc/testsuite/g++.dg/modules/auto-1_b.C
! 3b264755fa54e09c174088a50027eb56  gcc/testsuite/g++.dg/modules/auto-2.h
! d479e8fed74f485f9b8e9b4816402569  gcc/testsuite/g++.dg/modules/auto-2_a.H
! 9e4842387b313ba5aa98f2d5cc9a3592  gcc/testsuite/g++.dg/modules/auto-2_b.C
! 72bf9acc19d27deaa12e7c7f1cdabe03  gcc/testsuite/g++.dg/modules/bad-mapper-1.C
! 429207e0eb777b4a43a566e8777f6503  gcc/testsuite/g++.dg/modules/bad-mapper-2.C
! aa678a370b72d6bb266600443ab8d76f  gcc/testsuite/g++.dg/modules/bad-mapper-3.C
! 757428deb56e7859633745b2778125ea  gcc/testsuite/g++.dg/modules/ben-1.map
! 0e9c9830fda5e7d8283ad2b410eb9e74  gcc/testsuite/g++.dg/modules/ben-1_a.C
! 859e9af2f22665e71d4c53310b3fc495  gcc/testsuite/g++.dg/modules/ben-1_b.C
! e222ae13ea3198a57cf77c7b9716951c  gcc/testsuite/g++.dg/modules/bfield-1_a.C
! ad57e7a7e7d0763a5d7b53eebeef2326  gcc/testsuite/g++.dg/modules/bfield-1_b.C
! 8fe510d9d635ecd99e7dfc62a2cd5b10  gcc/testsuite/g++.dg/modules/bfield-2_a.C
! 6cb146eb2d95ac9baf9b3e5d650677c7  gcc/testsuite/g++.dg/modules/bfield-2_b.C
! 9175185dccd187937b7ecfd1e08a2f53  gcc/testsuite/g++.dg/modules/binding-1_a.H
! 3c5dfe77c841814ff90a0546f7aa6f24  gcc/testsuite/g++.dg/modules/binding-1_b.H
! 942ce8ea8cdc38780ea8e94d33cfd1d3  gcc/testsuite/g++.dg/modules/binding-1_c.C
! 6247234e10229fe1f007fb7ebce8baae  gcc/testsuite/g++.dg/modules/binding-2.H
! 9f96f92847a3bf5bed4ca21d22dc7706  gcc/testsuite/g++.dg/modules/bool-1.h
! 71cd96ea0f9ca336ec4f50ef4d6949a7  gcc/testsuite/g++.dg/modules/bool-1_a.H
! c93b823398a766831d77299480881f8c  gcc/testsuite/g++.dg/modules/bool-1_b.H
! c6cd935c87d3011588860690f34dcffa  gcc/testsuite/g++.dg/modules/bool-1_c.C
! 67226a0f8fb18f2758255a7e268f26e1  gcc/testsuite/g++.dg/modules/bug-1_a.C
! 88cddc44441b25d3b40a26a97bbb9459  gcc/testsuite/g++.dg/modules/bug-1_b.C
! 55f76fb62baa0263bb591fd5ac620cfb  gcc/testsuite/g++.dg/modules/builtin-1_a.C
! 236c48837d220069251a3abe2784e304  gcc/testsuite/g++.dg/modules/builtin-1_b.C
! 140e231775a8971dedf71fa2312c672e  gcc/testsuite/g++.dg/modules/builtin-2.C
! 54b53e57e74a927bf618027c4279ab4a  gcc/testsuite/g++.dg/modules/builtin-3_a.C
! 0d7e7464f7c34a6c0cc3aa93140a05ff  gcc/testsuite/g++.dg/modules/builtin-3_b.C
! b0d0096af0d19822d8cb05c223e05689  gcc/testsuite/g++.dg/modules/builtin-4_a.H
! 0280c2f8edd5c3f82deb4c8951dd5171  gcc/testsuite/g++.dg/modules/builtin-4_b.C
! 2fc7c0c3bdd4845f5602aa0fc6a2308a  gcc/testsuite/g++.dg/modules/builtin-5_a.H
! 98f3f4662f584e5aeab28b008fa7ef42  gcc/testsuite/g++.dg/modules/builtin-5_b.C
! d30b2aaa5892cbc8534763261c64ebf0  gcc/testsuite/g++.dg/modules/builtin-6_a.H
! 96da7af5dda2de67510ad6fbe4f0dd18  gcc/testsuite/g++.dg/modules/builtin-6_b.C
! 5b3d707477991d6e1a4567469533efd8  gcc/testsuite/g++.dg/modules/builtin-7_a.H
! 76a5f994255832c37033d000bf5a15c2  gcc/testsuite/g++.dg/modules/builtin-7_b.C
! c260a7dd28df40b7c5b61dcd0901fff3  gcc/testsuite/g++.dg/modules/by-name-1.C
! 0b5e2f8be888204ea96851f7d171ff72  gcc/testsuite/g++.dg/modules/cexpr-1_a.C
! 6f4f6f034ae6c6f611a1b844eb7146ed  gcc/testsuite/g++.dg/modules/cexpr-1_b.C
! a6052479b7749f10c8955222e0e5f377  gcc/testsuite/g++.dg/modules/cexpr-2_a.C
! eca65e3a9db1fb6ccbd70d53907f93dd  gcc/testsuite/g++.dg/modules/cexpr-2_b.C
! 9e8b6b97c14fc8ba72560634615d4fbe  gcc/testsuite/g++.dg/modules/circ-1_a.C
! 98607f9dff6572a0baa9956e2dd1be8c  gcc/testsuite/g++.dg/modules/circ-1_b.C
! e7d806e1771c11cb72e41af12e6d57e4  gcc/testsuite/g++.dg/modules/circ-1_c.C
! cedd15f6c5ea2087db7309f8e58574a4  gcc/testsuite/g++.dg/modules/circ-1_d.C
! 86586d456dae6a665b6dc0eea845c1d2  gcc/testsuite/g++.dg/modules/class-1_a.C
! 52c0c896346bdeeeb006d315251b80a8  gcc/testsuite/g++.dg/modules/class-1_b.C
! 10b7bdfdbc0bf357572444729f4dafc4  gcc/testsuite/g++.dg/modules/class-1_c.C
! 73cd9fa388064a8a95d78623072eb56f  gcc/testsuite/g++.dg/modules/class-2_a.C
! 3ce7cca7ac9da9c39f34cc6dd1ecc31d  gcc/testsuite/g++.dg/modules/class-2_b.C
! a4f57ec0d20cbf8b3fdb3a6f46267f36  gcc/testsuite/g++.dg/modules/class-3_a.C
! dc15684074e1e51123bfb7a826400fbf  gcc/testsuite/g++.dg/modules/class-3_b.C
! 41581ad580463ad4aecdfe3130fbb176  gcc/testsuite/g++.dg/modules/class-3_c.C
! 7a146baf244ffdc4a0e884ee2fc6b731  gcc/testsuite/g++.dg/modules/class-3_d.C
! efb305bcd35a2947757b06c81b909178  gcc/testsuite/g++.dg/modules/class-4_a.C
! 19d9cd56491c93f5bce54e8dddf6b4ea  gcc/testsuite/g++.dg/modules/class-4_b.C
! 590bdbf9098f9b25da94048dbe793b00  gcc/testsuite/g++.dg/modules/class-5_a.C
! 5f65f54fd08e4b32437f4ad168574184  gcc/testsuite/g++.dg/modules/class-5_b.C
! f73cd8061b8033aeeaa4fa6c27d79dbc  gcc/testsuite/g++.dg/modules/class-5_c.C
! d2021078b4d0431265aa2e51c677d5e7  gcc/testsuite/g++.dg/modules/class-6_a.C
! 9062665121ec23a61445000df924c532  gcc/testsuite/g++.dg/modules/class-6_b.C
! b20368ab03f98c59dacd7baa3f0f0950  gcc/testsuite/g++.dg/modules/class-6_c.C
! bc38928c9f8a6800dafc162f6e6f58fb  gcc/testsuite/g++.dg/modules/class-7_a.C
! 28c5aa4a4d4042fde977d983f2877a82  gcc/testsuite/g++.dg/modules/class-7_b.C
! 928857b618d675c87816a776ca3df35b  gcc/testsuite/g++.dg/modules/class-7_c.C
! 7b6003994dfc085b0c0b40260c5903bf  gcc/testsuite/g++.dg/modules/class-8_a.C
! 4cda6e81598164c1353e6d8587668d7d  gcc/testsuite/g++.dg/modules/class-8_b.C
! 2b3f45f6e4c8ec8128239deb281b75bd  gcc/testsuite/g++.dg/modules/clone-1_a.C
! 9f5521e5bd740049dc967e0822fcb6ba  gcc/testsuite/g++.dg/modules/clone-1_b.C
! b82e625ae44f653d9caf5a917ed2565a  gcc/testsuite/g++.dg/modules/concept-1_a.C
! 2ae2870ddbfb381e60200518e1e9b824  gcc/testsuite/g++.dg/modules/concept-1_b.C
! 6bc1b6fc0acb09251969b0d3737c9f40  gcc/testsuite/g++.dg/modules/concept-2_a.C
! 6ae8627cc79f9ab7a713400f4d7feb17  gcc/testsuite/g++.dg/modules/concept-2_b.C
! 02eefbbe4339b1385ab2da9bbdd26ea6  gcc/testsuite/g++.dg/modules/concept-3_a.C
! dfe7506d730963140ab74f39446ae1d5  gcc/testsuite/g++.dg/modules/concept-3_b.C
! 43b1cb4d006d6274be94dc22949bd680  gcc/testsuite/g++.dg/modules/concept-4.H
! 2cf01bc8229df49ab24be47bf95bc4b3  gcc/testsuite/g++.dg/modules/concept-5.h
! 441547ec48372e124092d6db397733e9  gcc/testsuite/g++.dg/modules/concept-5_a.H
! b6db4e57770ab4a96d0120ec2744eab0  gcc/testsuite/g++.dg/modules/concept-5_b.C
! 83305f4742d5dfabffb02c0e555c7dad  gcc/testsuite/g++.dg/modules/concept-6.h
! 0b495a916f11e2b6207f31f15ec2c734  gcc/testsuite/g++.dg/modules/concept-6_a.H
! 15c6474f9e36ad631a5e20c87355fc02  gcc/testsuite/g++.dg/modules/concept-6_b.C
! 065c21c126c925a3e00aca89ecd68082  gcc/testsuite/g++.dg/modules/constrained-partial-1_a.C
! 36ec67bdeefa980122cd592ead6b309b  gcc/testsuite/g++.dg/modules/constrained-partial-1_b.C
! 097ffafa56bf8b6bcbb8f85c58b0e187  gcc/testsuite/g++.dg/modules/convop-1_a.C
! 02940f3eec05ab2c1e44ea29d72255b6  gcc/testsuite/g++.dg/modules/convop-1_b.C
! ac21ba6dd7a4b896ded96e6d9d998074  gcc/testsuite/g++.dg/modules/cpp-1.C
! 7df70a1a3701f4e80b19b9464ac25c08  gcc/testsuite/g++.dg/modules/cpp-2_a.H
! 783ab638033bc17058b529268c3f6d93  gcc/testsuite/g++.dg/modules/cpp-2_b.H
! 5f27c96b6732cdc8b9d48c67932295fc  gcc/testsuite/g++.dg/modules/cpp-2_c.C
! c2a9522111346f993bfbf518c09ba47e  gcc/testsuite/g++.dg/modules/cpp-3.C
! ce30e0cf66d2582f7002c6e0c0db5c23  gcc/testsuite/g++.dg/modules/cpp-4.C
! 06dff50a736dc7a8b9894fc499b7e4e4  gcc/testsuite/g++.dg/modules/cpp-4.h
! b1f03c901247645230e4966afda6e912  gcc/testsuite/g++.dg/modules/cpp-5_a.H
! fbe86dd2a8732d33bad7bda15fc0e2db  gcc/testsuite/g++.dg/modules/cpp-5_b.C
! 61e65380bfb3781f18a612e670d9cddb  gcc/testsuite/g++.dg/modules/cpp-5_c.C
! dc18c9abbb7b929baad44d4d17cf481c  gcc/testsuite/g++.dg/modules/cpp-6_a.H
! a74bddfbe727d105bb545eedc62f745d  gcc/testsuite/g++.dg/modules/cpp-6_b.H
! 90b1664a6631dd17825517ae4610dbed  gcc/testsuite/g++.dg/modules/cpp-6_c.C
! 3f48d0308ff4b07b3b669154768b92a9  gcc/testsuite/g++.dg/modules/debug-1_a.C
! cc14e75db917eabf9a773192831be701  gcc/testsuite/g++.dg/modules/debug-1_b.C
! b1f1d5b00d4a65d0a4d2f96f3fe4003f  gcc/testsuite/g++.dg/modules/decomp-1_a.C
! 92f4e44ce0c072d5153a2b467bb8dad0  gcc/testsuite/g++.dg/modules/decomp-1_b.C
! ea68e74f44f4c82e8ae6f2c690b55c60  gcc/testsuite/g++.dg/modules/deferred-1.h
! 57e2a4b0e73953c7ade22c1689af65d7  gcc/testsuite/g++.dg/modules/deferred-1_a.H
! 3eb6987f167a4bbf09756b47c0721723  gcc/testsuite/g++.dg/modules/deferred-1_b.C
! d5627ec2e4dc9b1ef99e54bdc03e1c7a  gcc/testsuite/g++.dg/modules/dep-1_a.C
! 63bbbccfef2a3fd41022bb0a4b4f8eb5  gcc/testsuite/g++.dg/modules/dep-1_b.C
! 128e76c43221794f4f3e993541e871cc  gcc/testsuite/g++.dg/modules/dep-2.C
! cb642b297719a8133fff6a8330998c3d  gcc/testsuite/g++.dg/modules/dep-3.C
! 27fe0d89834d0c4dccb54eb85dcb2b1e  gcc/testsuite/g++.dg/modules/dir-only-1.C
! 3b6b2231ee799128ed7e8abf8e4bd8ca  gcc/testsuite/g++.dg/modules/dir-only-2_a.H
! f8ae8345e0918908805964c313e6738d  gcc/testsuite/g++.dg/modules/dir-only-2_b.C
! 98e286748a71de409ea8ea91c61bff89  gcc/testsuite/g++.dg/modules/dir-only-3.C
! 751bc164d219ba7ac2c0a5df96b7e328  gcc/testsuite/g++.dg/modules/dir-only-4.C
! 7e9a537d2bfa5adb9b6da64d83a6f631  gcc/testsuite/g++.dg/modules/dir-recovery.C
! ebeb00e11d9140a28e9529cf3483427c  gcc/testsuite/g++.dg/modules/enum-1_a.C
! 07cd39c397707ffd7ecad5f19200c483  gcc/testsuite/g++.dg/modules/enum-1_b.C
! 930da5cebd5959d9a725229b25f0d412  gcc/testsuite/g++.dg/modules/enum-2_a.C
! 5488ef734856a78f2d7be7a0489c33b5  gcc/testsuite/g++.dg/modules/enum-2_b.C
! 0549402567a272ffa20820adf0cb881a  gcc/testsuite/g++.dg/modules/enum-3_a.C
! e4a2c17790830bf4e1a4711c1ca8d84c  gcc/testsuite/g++.dg/modules/enum-3_b.C
! de2d4e1136f5e90cc75f4e18d71823ee  gcc/testsuite/g++.dg/modules/enum-4_a.C
! 0fd21e4588f1a75f2c8fc75c900a98af  gcc/testsuite/g++.dg/modules/enum-4_b.C
! 1ef87250390185e05da039deee6c3ecd  gcc/testsuite/g++.dg/modules/enum-5_a.H
! ecd54690c8b04f22cdc32ce2da3d001b  gcc/testsuite/g++.dg/modules/enum-5_b.C
! fba4e0e215f5f8e00fb56dcf5aafa8f4  gcc/testsuite/g++.dg/modules/enum-6_a.H
! 172b60e07780d3a7275e1cde7159fd39  gcc/testsuite/g++.dg/modules/enum-6_b.C
! 171f6ec422c5cddc36ee301ff0b7b9f7  gcc/testsuite/g++.dg/modules/enum-7.C
! 10e6ca39c29810b6b4e2685f03418689  gcc/testsuite/g++.dg/modules/enum-8_a.H
! f2791267d753e8cd1679a1f96c9cc5da  gcc/testsuite/g++.dg/modules/enum-8_b.H
! 6c4e4f9f21faf0b8906b27d93c8940e5  gcc/testsuite/g++.dg/modules/enum-8_c.C
! 49bb87ed835e48bf12d123782293d31b  gcc/testsuite/g++.dg/modules/enum-8_d.C
! 3d6c6246260d49fb3e01cfbc543f50c3  gcc/testsuite/g++.dg/modules/enum-bad-1_a.H
! fe3b83716afeebfb21410e24299a7c65  gcc/testsuite/g++.dg/modules/enum-bad-1_b.C
! 4d9c4e0b2fc2a89e93b40dfbcd287523  gcc/testsuite/g++.dg/modules/err-1_a.C
! 472f7f080b5984583da1c960bfd14348  gcc/testsuite/g++.dg/modules/err-1_b.C
! 56a139aeedfaff3f9087f35d8d3c7921  gcc/testsuite/g++.dg/modules/err-1_c.C
! 276b778c799ba4a791a9558677c94b74  gcc/testsuite/g++.dg/modules/err-1_d.C
! c311149a0a6563fecde09d7efca30c49  gcc/testsuite/g++.dg/modules/except-1.C
! 58ba527eabeb40387b7a87e17acde97e  gcc/testsuite/g++.dg/modules/except-2.h
! 42fe73c6e9bb38516c0e64b82241e406  gcc/testsuite/g++.dg/modules/except-2_a.H
! 73ff1bed2f90ad9c6754d15529005276  gcc/testsuite/g++.dg/modules/except-2_b.C
! 02160187f0e3f5a0204e79e1d79af370  gcc/testsuite/g++.dg/modules/except-3.h
! 9b91cb67ef3997e6e6510055696fea36  gcc/testsuite/g++.dg/modules/except-3_a.H
! 3bad6e7573d6b5409a829e01d0ffe5b0  gcc/testsuite/g++.dg/modules/except-3_b.C
! cb17af4e1eb66bb3cb7788a721007fca  gcc/testsuite/g++.dg/modules/exp-xlate-1_a.H
! 0dbb925b1876b5a9913a4082238721d7  gcc/testsuite/g++.dg/modules/exp-xlate-1_b.C
! 92949b19e9a68f9337ca11fe99f3370f  gcc/testsuite/g++.dg/modules/export-1.C
! 72f93a05f3b46d53e36617fe0e02c955  gcc/testsuite/g++.dg/modules/extern-tpl-1_a.H
! 3315098b4e8445874ea0c80fd4fb9568  gcc/testsuite/g++.dg/modules/extern-tpl-1_b.C
! af71a71f12f25f2b3cb5a86a955b562b  gcc/testsuite/g++.dg/modules/extern-tpl-1_c.C
! bf65bbda1f86c67b51592fc4c909ce07  gcc/testsuite/g++.dg/modules/extern-tpl-2_a.H
! aeceb1a41cd15ae9c0195c66b2cb26db  gcc/testsuite/g++.dg/modules/extern-tpl-2_b.H
! dcb3e2331eb2684a6500c6dc16130b98  gcc/testsuite/g++.dg/modules/extern-tpl-2_c.C
! aa899969e8b42307961a751a6ebd8f1a  gcc/testsuite/g++.dg/modules/extern-tpl-2_d.C
! d71dc02e0dccd34f57e09aa796289c04  gcc/testsuite/g++.dg/modules/flag-1_a.C
! c24d799e9fbfec25ec3006fa0b94eb6e  gcc/testsuite/g++.dg/modules/flag-1_b.C
! d0e66028f7bb2b6764d1f42f5dd90fb0  gcc/testsuite/g++.dg/modules/fn-inline-1_a.C
! dea19e8abb6a9adc691590e33dd5b742  gcc/testsuite/g++.dg/modules/fn-inline-1_b.C
! b95bfe4179a1074b2469bbf640df8507  gcc/testsuite/g++.dg/modules/fn-inline-1_c.C
! aea84e1ee79a28bf76003883aae845d4  gcc/testsuite/g++.dg/modules/freeze-1_a.C
! 2630f4c41b5b8de69a1173e8e5098ec9  gcc/testsuite/g++.dg/modules/freeze-1_b.C
! b1593a47c024d179302751243a0ddf7e  gcc/testsuite/g++.dg/modules/freeze-1_c.C
! 4b5838885d8482e6f45a3f476290e92f  gcc/testsuite/g++.dg/modules/freeze-1_d.C
! 8fcab2cff53b2d8a5b252819cfc97930  gcc/testsuite/g++.dg/modules/friend-1_a.C
! 965df98a384b69dc039aa01146450993  gcc/testsuite/g++.dg/modules/friend-1_b.C
! 7cf2445dd7db33a1920c890fa101e827  gcc/testsuite/g++.dg/modules/friend-1_c.C
! 1de0e6bd5a1abd176a55c2c53039e473  gcc/testsuite/g++.dg/modules/friend-2_a.C
! 66ca5339eb38056f3413040ff9a486a9  gcc/testsuite/g++.dg/modules/friend-2_b.C
! dcfbb296e393fdde1324f08c7b97a38a  gcc/testsuite/g++.dg/modules/friend-3.C
! fe8d8abf0fe0d8513419931c2b196435  gcc/testsuite/g++.dg/modules/friend-4_a.C
! bea28bf2d0c8e81e2aa1b15bb16a1ff4  gcc/testsuite/g++.dg/modules/friend-4_b.C
! 40fe25738c2ab0fc4119c06009d85558  gcc/testsuite/g++.dg/modules/friend-5_a.C
! 10b235d5b7a95f8b45731e7bb3e49249  gcc/testsuite/g++.dg/modules/friend-5_b.C
! b09c70e919f5f68af6dd16c29a5ce19d  gcc/testsuite/g++.dg/modules/gc-1_a.C
! c540f5ea9f060fd57192bf19deceb485  gcc/testsuite/g++.dg/modules/gc-1_b.C
! 55edcdc178b3faf5ab15daa299ad7892  gcc/testsuite/g++.dg/modules/gc-1_c.C
! 66209067910bf13a3f4f69f6cb86d362  gcc/testsuite/g++.dg/modules/gc-1_d.C
! 7e55fb2b58ae21062a1aae92abeddaee  gcc/testsuite/g++.dg/modules/gc-2.map
! cef172cd93d1a6e052c327bd27330206  gcc/testsuite/g++.dg/modules/gc-2_a.C
! 1b9f3db57d9d19197198678b0148167e  gcc/testsuite/g++.dg/modules/global-1_a.C
! 74c104e0382f51c3e4731f87bfb1d6ff  gcc/testsuite/g++.dg/modules/global-1_b.C
! 2d5deee114e6afcfeb0a9e6710b404c3  gcc/testsuite/g++.dg/modules/global-2_a.C
! 8b05414fb29bffae2691f34c67b57ffa  gcc/testsuite/g++.dg/modules/global-2_b.C
! 225b520af368cd219a447b9f12978218  gcc/testsuite/g++.dg/modules/global-3_a.C
! cacc2b46a47db294c8b68d4d9a2920ea  gcc/testsuite/g++.dg/modules/global-3_b.C
! 6f3ceb7882156071a42db084f3053be2  gcc/testsuite/g++.dg/modules/gmf-1_a.C
! 7852b7d8e4cb76520db9b88648925e58  gcc/testsuite/g++.dg/modules/gmf-1_b.C
! 45b7d09c5a6a02321d7e3f6636a6c8a6  gcc/testsuite/g++.dg/modules/gmf-2_a.H
! 31c5551d44ce3f70f0f22d8d576e2b75  gcc/testsuite/g++.dg/modules/gmf-2_b.C
! 1ca2ba5ea79ef736f484295d9da304f2  gcc/testsuite/g++.dg/modules/gmf-2_c.C
! 4dc3b222271da4959eeb5cfa26310bee  gcc/testsuite/g++.dg/modules/gmf-2_d.C
! 1cf97d32b82f47a801cd23d81c8f0f95  gcc/testsuite/g++.dg/modules/gvar_a.C
! afaed3ac146cb32fc66a243b79a7697e  gcc/testsuite/g++.dg/modules/gvar_b.C
! 980aa97f168b883404fa30d8d0df5514  gcc/testsuite/g++.dg/modules/hdr-1_a.H
! 4d9686b932f0f4de142816c77188a269  gcc/testsuite/g++.dg/modules/hdr-1_b.H
! a019a46920ed46fd8bfa291454b001fd  gcc/testsuite/g++.dg/modules/hdr-1_c.C
! 07b2bcafac3586c586137ef7eea059a8  gcc/testsuite/g++.dg/modules/hdr-init-1_a.H
! 07b2bcafac3586c586137ef7eea059a8  gcc/testsuite/g++.dg/modules/hdr-init-1_b.H
! 411e1bc5a4b64167fd35549890849c60  gcc/testsuite/g++.dg/modules/hdr-init-1_c.C
! 179a1e853888e51aa1eb1b83369b18ab  gcc/testsuite/g++.dg/modules/hello-1_a.C
! 0d1f1f8b1a13cb592cc7a12aeddcdd2a  gcc/testsuite/g++.dg/modules/hello-1_b.C
! 5b2fd64582759540fd82f5d665aa8e8b  gcc/testsuite/g++.dg/modules/horcrux-1_a.C
! 788de7c389f8b3a13de07086529b3b5e  gcc/testsuite/g++.dg/modules/horcrux-1_b.C
! ea76c720a8e24b78691dffa2eef6d22d  gcc/testsuite/g++.dg/modules/ice-1.C
! 9bfeaf9cef06ca3d110e922527eca7d1  gcc/testsuite/g++.dg/modules/imp-inline-1_a.C
! 2036754df88d4c67e6c2bea5d0faec70  gcc/testsuite/g++.dg/modules/imp-inline-1_b.C
! 721b56d9b31aeb6501e728106fd0d0db  gcc/testsuite/g++.dg/modules/imp-member-1_a.C
! c1a2a3390492a95192a3736b25423528  gcc/testsuite/g++.dg/modules/imp-member-1_b.C
! 707c639d14f2d2fc997128997ebb51f2  gcc/testsuite/g++.dg/modules/imp-member-1_c.C
! 7c69efa38575e2874e2b078a2378203f  gcc/testsuite/g++.dg/modules/imp-member-1_d.C
! 42e7a04b055fd1979ca6be84e0260963  gcc/testsuite/g++.dg/modules/imp-member-1_e.C
! 5c8e44d337047237f920ed5a3df0a8d6  gcc/testsuite/g++.dg/modules/imp-member-2_a.C
! 8a574d4894596714f7d0497433a93ebe  gcc/testsuite/g++.dg/modules/imp-member-2_b.C
! 7c358b73d07322ea12822262e4d376a7  gcc/testsuite/g++.dg/modules/imp-member-2_c.C
! 09b2e78c7082c3c6f91d5c66b21e9f2b  gcc/testsuite/g++.dg/modules/imp-member-3.H
! 1f7d51f903fe6c300810c1d8d856401e  gcc/testsuite/g++.dg/modules/import-1_a.C
! cd504ebaf4fc289e921acc9934ead55f  gcc/testsuite/g++.dg/modules/import-1_b.C
! 7dc13fb6d933fb23dc0f7251fa928bde  gcc/testsuite/g++.dg/modules/import-1_c.C
! d241ee70106120af3aebfb9b58365f05  gcc/testsuite/g++.dg/modules/import-1_d.C
! bf47d0291689c8a86ba720a7aebd052a  gcc/testsuite/g++.dg/modules/import-1_e.C
! b4d53c10532737d55c31b6daeea36cb7  gcc/testsuite/g++.dg/modules/import-1_f.C
! 7cd03b6136521b0946018cd6213c0277  gcc/testsuite/g++.dg/modules/import-1_g.C
! 750579c756e3c94a08cc23dcfda0b714  gcc/testsuite/g++.dg/modules/import-2.C
! ff98048b9b36b54c9905a7a1eb0d5f49  gcc/testsuite/g++.dg/modules/inc-xlate-1.map
! b7927bd395b5232680f2db58be05462a  gcc/testsuite/g++.dg/modules/inc-xlate-1_a.H
! 3b005c8cf012fd1acb3ecdbc8aadc695  gcc/testsuite/g++.dg/modules/inc-xlate-1_b.H
! 9a9415510743e8b7e83b4f6ab1babf0e  gcc/testsuite/g++.dg/modules/inc-xlate-1_c.C
! 95b490b14ab67d7ecf7ab92c74cf2316  gcc/testsuite/g++.dg/modules/inc-xlate-1_e.C
! f66ca65219477c8d92b6f467b65e6d70  gcc/testsuite/g++.dg/modules/indirect-1_a.C
! 95ec57062ea1ce04938a32d1339202e2  gcc/testsuite/g++.dg/modules/indirect-1_b.C
! dff0f26eb5087deaef96b9d54314b6a4  gcc/testsuite/g++.dg/modules/indirect-1_c.C
! 7959f43a638872f72358f6afd3921aeb  gcc/testsuite/g++.dg/modules/indirect-2_a.C
! 3b279d20d6f9b17047cd5dfb4553fab2  gcc/testsuite/g++.dg/modules/indirect-2_b.C
! 000412366748e0a40001148af86b72cc  gcc/testsuite/g++.dg/modules/indirect-2_c.C
! ecf2e4ddd87fc8079d71d327bb21fa91  gcc/testsuite/g++.dg/modules/indirect-3_a.C
! 31de8cfc8b5d20da2f853697ed420a09  gcc/testsuite/g++.dg/modules/indirect-3_b.C
! c119afc0df74c0b17381b088d145b86c  gcc/testsuite/g++.dg/modules/indirect-3_c.C
! fee5d6f962f7988ae62febd5f1a8e244  gcc/testsuite/g++.dg/modules/indirect-4_a.C
! 896a19175e213ea62b9b91cd64995e4a  gcc/testsuite/g++.dg/modules/indirect-4_b.C
! dfea171c241790df8f63ba50f342a189  gcc/testsuite/g++.dg/modules/indirect-4_c.C
! c62cb6c2400ea0e101dd0ed969bd4d04  gcc/testsuite/g++.dg/modules/inext-1.H
! 5e921af9b318fd9ca4328648337456f1  gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1.h
! c01dcb11c5d36976b14d9fd7c4516581  gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1_a.H
! b0fd01fc5ecf329ebeb91627e98dd165  gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1_b.C
! 6f534c4c44593fcb2f1b0e2f899fbc10  gcc/testsuite/g++.dg/modules/init-1_a.C
! 0b620f715f0e94e454380a2cffbc8367  gcc/testsuite/g++.dg/modules/init-1_b.C
! d96a13fbbabfd668054b4b668fc429ed  gcc/testsuite/g++.dg/modules/init-2_a.C
! c6de6d840b40fe71295d508f1d4b4b2c  gcc/testsuite/g++.dg/modules/init-2_b.C
! f4b1cec17a5fb61383cbebe8288f37ad  gcc/testsuite/g++.dg/modules/init-2_c.C
! 30908e323612f1e35765a18cc68bc403  gcc/testsuite/g++.dg/modules/inst-1_a.C
! c1563babb7ad3b33d7a48b6846276373  gcc/testsuite/g++.dg/modules/inst-1_b.C
! 3a7d1df29e3e9ca965b7f8c21b60b189  gcc/testsuite/g++.dg/modules/inst-2_a.C
! b97855be7b5eed58d6034ad47a8bfd75  gcc/testsuite/g++.dg/modules/inst-2_b.C
! 3fa2472ee15d859201bd85231c9186e8  gcc/testsuite/g++.dg/modules/inst-3_a.C
! f85ebf4b2077209c911f242b12a9af86  gcc/testsuite/g++.dg/modules/inst-3_b.C
! c8f6159c50d59c6586f5797b42391c86  gcc/testsuite/g++.dg/modules/inst-4_a.C
! 1f7270dae43f8a3ccf80c77bbaa1fa4d  gcc/testsuite/g++.dg/modules/inst-4_b.C
! 9c1e5aa4fca91a8158a8ba8a5acab036  gcc/testsuite/g++.dg/modules/inst-5_a.H
! 45ff01b5a1d0276885e30fb3445f5ed3  gcc/testsuite/g++.dg/modules/inst-5_b.C
! 74b37c982e91a9398109704457f7d69c  gcc/testsuite/g++.dg/modules/internal-1.C
! c66d17d0fb2dc80371978510d0cc1f0f  gcc/testsuite/g++.dg/modules/internal-2_a.H
! 21bb55995bb6fa8ed6a8fa69368f7f36  gcc/testsuite/g++.dg/modules/internal-2_b.H
! ba3bc4f8f333742fb78f03db052c4ffa  gcc/testsuite/g++.dg/modules/internal-2_c.C
! 20bf75fd153c12a7ca095561b3087399  gcc/testsuite/g++.dg/modules/iostream-1_a.H
! d78c1de0f7d9cac90e50c0208adc2926  gcc/testsuite/g++.dg/modules/iostream-1_b.C
! 1cdaea6816310f2f6af91d7384b2267b  gcc/testsuite/g++.dg/modules/isalnum.H
! 51d6cd56760e51f42b0853dc49c9bf77  gcc/testsuite/g++.dg/modules/keyword-1_a.C
! 37de4dbdbe8e0e57b0f65d374829f234  gcc/testsuite/g++.dg/modules/keyword-1_b.C
! d40eb3b191ce03c71ec885f4126c9c01  gcc/testsuite/g++.dg/modules/lambda-1_a.C
! 0c208993fd82c4dab83fb16f53f43099  gcc/testsuite/g++.dg/modules/lambda-1_b.C
! 0b364ead1b387b5505e2f7bf2e5dc3b5  gcc/testsuite/g++.dg/modules/lambda-2.h
! c052fecb32317d1f524105398df554d5  gcc/testsuite/g++.dg/modules/lambda-2_a.H
! e3676715d9e1f1ebb174393d67b56580  gcc/testsuite/g++.dg/modules/lambda-2_b.C
! 484e30a07e9d58863b02005ce27cce26  gcc/testsuite/g++.dg/modules/lambda-2_c.C
! 4f67e790d8f9d7e593d0166076910edc  gcc/testsuite/g++.dg/modules/lambda-3.h
! 8a3bae9a5f1c56f6db799c2c07421e67  gcc/testsuite/g++.dg/modules/lambda-3_a.H
! 8a0f470eaebc8a74e2410f56ad84eba5  gcc/testsuite/g++.dg/modules/lambda-3_b.C
! 82966471b64562677c0cd92d866d7f33  gcc/testsuite/g++.dg/modules/lambda-3_c.C
! 75c458d0a4e5fd48ebf5fe0a815dc618  gcc/testsuite/g++.dg/modules/lambda-4.h
! 3ce346d138ce19438f7c71e4634b4cea  gcc/testsuite/g++.dg/modules/lambda-4_a.H
! d30c873b55b93fa8afc633ee0ae189de  gcc/testsuite/g++.dg/modules/lambda-4_b.C
! 339bacba8e80ec5eeefc4bb1a3dba7ba  gcc/testsuite/g++.dg/modules/lang-1_a.H
! 6340d54fa6505dc3e1f348d4eb7c40ff  gcc/testsuite/g++.dg/modules/lang-1_b.C
! 59ccc3469393fd4a35b408bbf78b94d9  gcc/testsuite/g++.dg/modules/lang-1_c.C
! 2b3081d597950e3beb85661a683d44a1  gcc/testsuite/g++.dg/modules/lang-2_a.C
! 34287388d4e4550523525c1fcb12f18e  gcc/testsuite/g++.dg/modules/lang-2_b.C
! f9e6b80b1e66a7547173ff7f3f39a78a  gcc/testsuite/g++.dg/modules/late-ret-1.H
! c363febb29cf4d3eccc01979daac4c46  gcc/testsuite/g++.dg/modules/late-ret-2_a.H
! 9f2ead4d0b90ea087689b20fd95f201f  gcc/testsuite/g++.dg/modules/late-ret-2_b.H
! dd92d85eeb5c04f6fec2b384b49b0a07  gcc/testsuite/g++.dg/modules/late-ret-2_c.C
! ad4492ce734ab625ca31a8dcc2cfe939  gcc/testsuite/g++.dg/modules/late-ret-3_a.H
! 1cf6300ea570cf6c3e8fa7e76d33804c  gcc/testsuite/g++.dg/modules/late-ret-3_b.H
! 276da43d466a2829c1bdbe61d568e6cc  gcc/testsuite/g++.dg/modules/late-ret-3_c.C
! 739350acfa3eb5d0429706893705d31b  gcc/testsuite/g++.dg/modules/lazy-1_a.C
! 874867dd9f2863a33cff5a80f9a8c6fa  gcc/testsuite/g++.dg/modules/lazy-1_b.C
! 5ad3883c603e1646226b91fad2ac09e3  gcc/testsuite/g++.dg/modules/leg-merge-1_a.H
! f11e8b581d4f54a25df7b5104694ba49  gcc/testsuite/g++.dg/modules/leg-merge-1_b.H
! 1d7ffd55d385272696ba852eb9e3b598  gcc/testsuite/g++.dg/modules/leg-merge-1_c.C
! dfab4ad434eca33572a10573c9690e14  gcc/testsuite/g++.dg/modules/leg-merge-1_d.C
! 9471a75eedb12cb2f52102b41cedd4b0  gcc/testsuite/g++.dg/modules/leg-merge-2_a.H
! 57bd300f5074e07bddf8ecfd8181236e  gcc/testsuite/g++.dg/modules/leg-merge-2_b.H
! f114ff70e108e19c6642003e1fbf6014  gcc/testsuite/g++.dg/modules/leg-merge-2_c.C
! 57ed2ca28eca70f1e419241124baa97a  gcc/testsuite/g++.dg/modules/leg-merge-3_a.H
! a3e6aadae3ea9067d46fcc1e1f5943b0  gcc/testsuite/g++.dg/modules/leg-merge-3_b.H
! b2c17820c6eb74bc0c247b9a0bb2327b  gcc/testsuite/g++.dg/modules/leg-merge-3_c.C
! 7c3c74506283c34f6427541f9006c2a9  gcc/testsuite/g++.dg/modules/leg-merge-3_d.C
! 4232f2218c15b8a16a02c41973dd0ca7  gcc/testsuite/g++.dg/modules/leg-merge-4_a.H
! 13dd572cc0d008ab2434d77217ad1e47  gcc/testsuite/g++.dg/modules/leg-merge-4_b.H
! 2ce68f7ec77a0950fb1ec3c4f8856601  gcc/testsuite/g++.dg/modules/leg-merge-4_c.C
! 60d15d1c50e0c3bd81c29cfe58067e8e  gcc/testsuite/g++.dg/modules/leg-merge-5_a.H
! cb9a9dc8e64a6564d7273e98a4a18a05  gcc/testsuite/g++.dg/modules/leg-merge-5_b.H
! b1944004cbb1647ce96543281f848308  gcc/testsuite/g++.dg/modules/leg-merge-5_c.C
! 073621f36d9ad8b77c247886ab8acde5  gcc/testsuite/g++.dg/modules/leg-merge-6_a.H
! 5256121a0847e65a7446b25af6ca8e87  gcc/testsuite/g++.dg/modules/leg-merge-6_b.H
! 0a6b27f72509fb47d0825f7b4a509888  gcc/testsuite/g++.dg/modules/leg-merge-6_c.C
! 5d3f68e7bdf54077e68522f56186d23b  gcc/testsuite/g++.dg/modules/leg-merge-7_a.H
! 14b7bc84e4315c76c6dd3bec11fc29f7  gcc/testsuite/g++.dg/modules/leg-merge-7_b.H
! 259587d4c0e6e9d9193f8c89ffa13f48  gcc/testsuite/g++.dg/modules/leg-merge-7_c.C
! 237ae6619d6b4bb3447d3af8d8db63f8  gcc/testsuite/g++.dg/modules/leg-merge-8_a.H
! 8ee1992c03b1467bbafd430edf07fec2  gcc/testsuite/g++.dg/modules/leg-merge-8_b.H
! 2fa2cde60b7926a1a5a3ad46d7f3f4b5  gcc/testsuite/g++.dg/modules/leg-merge-8_c.C
! 703c282211b471198a9391c9992329a9  gcc/testsuite/g++.dg/modules/leg-merge-9_a.H
! 703c282211b471198a9391c9992329a9  gcc/testsuite/g++.dg/modules/leg-merge-9_b.H
! e18c3a23eba36733cf05553270fa81bd  gcc/testsuite/g++.dg/modules/leg-merge-9_c.C
! c576bdee458f6f483b00f28cc459beaf  gcc/testsuite/g++.dg/modules/legacy-1_a.H
! f4a1375654e97f253ede987c6ad4914c  gcc/testsuite/g++.dg/modules/legacy-1_b.C
! 5c6c1ac16a50d695518b7a0da809fc89  gcc/testsuite/g++.dg/modules/legacy-1_c.C
! 0beb887bfa01dea335fad0e226f7b040  gcc/testsuite/g++.dg/modules/legacy-2.h
! 8238ce72a993c47db4f0762f1162a636  gcc/testsuite/g++.dg/modules/legacy-2.map
! 3dcfdfa80e1d3c2f93b53e2decd2c6c9  gcc/testsuite/g++.dg/modules/legacy-2_a.H
! 527600d3c742b4260476e5ccbe0e2cf9  gcc/testsuite/g++.dg/modules/legacy-2_b.H
! e67c086978b2e3cb0c3873c56a04d2ca  gcc/testsuite/g++.dg/modules/legacy-2_c.C
! 5acca7c06d669d87a8e3d6aad304d652  gcc/testsuite/g++.dg/modules/legacy-2_d.C
! 0beb887bfa01dea335fad0e226f7b040  gcc/testsuite/g++.dg/modules/legacy-3.h
! d9533adea02d81b5f7caa581e917ada6  gcc/testsuite/g++.dg/modules/legacy-3_a.H
! 9e120706ec106f55f2cbcb0722fffff5  gcc/testsuite/g++.dg/modules/legacy-3_b.H
! be0289470123d9ff0bce2d230229248d  gcc/testsuite/g++.dg/modules/legacy-3_c.H
! bdd4d508ee0bf1bbb17be17e8c636dd8  gcc/testsuite/g++.dg/modules/legacy-6.map
! fdead5385bc3d506ead01a41a926db48  gcc/testsuite/g++.dg/modules/legacy-6_a.H
! 46b103796536647590e870edc876e248  gcc/testsuite/g++.dg/modules/legacy-6_b.H
! c60c880a94062353fdac1013bb51cb6e  gcc/testsuite/g++.dg/modules/legacy-6_c.C
! 2dc76b97ea3bd034692e1f5c0d0cee86  gcc/testsuite/g++.dg/modules/legacy-6_d.C
! 39d17cd35712e3da1b8a529d5ffee567  gcc/testsuite/g++.dg/modules/legacy-6_e.C
! 9a427949ba2ade5d13bd9c9c8b1775e4  gcc/testsuite/g++.dg/modules/legacy-6_f.C
! 26e1037b59659190e44a2178fed19150  gcc/testsuite/g++.dg/modules/legacy-7_a.H
! e4a1fdd615c0dabcdf2172a6c65861e2  gcc/testsuite/g++.dg/modules/legacy-7_b.C
! 569a4fbc493555c870bf30a5cf857cf7  gcc/testsuite/g++.dg/modules/legacy-8_a.H
! 4c17c322197dfa5d492f7afe3f074b04  gcc/testsuite/g++.dg/modules/legacy-8_b.H
! 94931f77d4ebb12aa417264e9ff8d456  gcc/testsuite/g++.dg/modules/legacy-8_c.C
! d7d7e27d0e139fa841601b198a24f426  gcc/testsuite/g++.dg/modules/legacy-8_d.C
! 6be71fb1f101e2854eadfb51e10a3f21  gcc/testsuite/g++.dg/modules/legacy-8_e.C
! 0feb5f91ea1d83dc6a56699a6cf47e4f  gcc/testsuite/g++.dg/modules/libfn-1_a.C
! de079e1ffd5d086ec2d06480cd780d88  gcc/testsuite/g++.dg/modules/libfn-1_b.C
! ff959189b1f27ff5d9f9973b727b39fb  gcc/testsuite/g++.dg/modules/literals-1_a.C
! 6c8bcc94aaf7310fc4d5df2b8e2e6426  gcc/testsuite/g++.dg/modules/literals-1_b.C
! a1c73182260914d493b7e86a0a904c5b  gcc/testsuite/g++.dg/modules/loc-1_a.C
! 25b636adf61b61bf981a70d73beb4b62  gcc/testsuite/g++.dg/modules/loc-1_b.C
! 22ff7afa68ec257a25fdf407f9de59ee  gcc/testsuite/g++.dg/modules/loc-1_c.C
! 40c6cf2f98594bc9fd66694356426ccc  gcc/testsuite/g++.dg/modules/loc-2_a.C
! 3d77ad1235e4df1d4754e4addda4a15e  gcc/testsuite/g++.dg/modules/loc-2_b.C
! 2e0710dd47ce563beb5fbd7cdba9fd5e  gcc/testsuite/g++.dg/modules/loc-2_c.C
! d924cff1bbe926b1f17e1167003881bb  gcc/testsuite/g++.dg/modules/loc-2_d.C
! 534d7688514278aa4aef358e6e5d3ac7  gcc/testsuite/g++.dg/modules/loc-2_e.C
! 4de75d3275f355ae864778aed70bae70  gcc/testsuite/g++.dg/modules/loc-2_f.C
! 6531454223747b5248efd268335cd69f  gcc/testsuite/g++.dg/modules/loc-wrapper-1.h
! 084b7fe112f0f51317dca6c0aab9cc6d  gcc/testsuite/g++.dg/modules/loc-wrapper-1_a.H
! 8cdd1ec4497b754d0e88faf6273069e8  gcc/testsuite/g++.dg/modules/loc-wrapper-1_b.C
! fa425b904c91756156e90fa502c1823a  gcc/testsuite/g++.dg/modules/local-1_a.C
! 7a9670a2e6d1da0523bb31034ed44eb4  gcc/testsuite/g++.dg/modules/local-1_b.C
! ce65ab4cb05b352f2419532c262ce8a7  gcc/testsuite/g++.dg/modules/local-extern-1.C
! 1359e279796b01a08c62b123c58ff722  gcc/testsuite/g++.dg/modules/local-extern-2.H
! d5075b90a1d0dfe23d60cb4ab1413d7b  gcc/testsuite/g++.dg/modules/local-struct-1_a.C
! 97a25b386cbb06eb1a298409eccbcc0e  gcc/testsuite/g++.dg/modules/local-struct-1_b.C
! 16c505e7ec3f958c4b72ee9779d716a2  gcc/testsuite/g++.dg/modules/macloc-1_a.C
! d5fee47db8f5a2cba3951a9d1bca86e8  gcc/testsuite/g++.dg/modules/macloc-1_b.C
! 2a85bdb214d9bf838d19743ae52a8eb1  gcc/testsuite/g++.dg/modules/macloc-1_c.C
! ddb273cbc07eab5b86b37390799d6b67  gcc/testsuite/g++.dg/modules/macloc-1_d.C
! 4c439568041e127af0ef1a6518db12d9  gcc/testsuite/g++.dg/modules/macloc-2_a.H
! 3feee9e584173f8dbd418f8f9d4b0dac  gcc/testsuite/g++.dg/modules/macloc-2_b.C
! 010af63ccf6250d1429d74df13c60c33  gcc/testsuite/g++.dg/modules/macro-1_a.H
! 7ee4f95c19024510fe36bcb2394bfbd6  gcc/testsuite/g++.dg/modules/macro-1_b.C
! 0148808b241508a60193064d0b20dff7  gcc/testsuite/g++.dg/modules/macro-2_a.H
! 62567504f524952292e88bd0435230aa  gcc/testsuite/g++.dg/modules/macro-2_b.H
! c7d8ad261e10cebe64036c183d9da527  gcc/testsuite/g++.dg/modules/macro-2_c.H
! e4b3630d81d3f7824cd663c8e2431e69  gcc/testsuite/g++.dg/modules/macro-2_d.C
! 3ea9762252021c55eeb94aaaca6338f8  gcc/testsuite/g++.dg/modules/macro-3_a.H
! d80de6ae02a5d31f77df78abda5b58c1  gcc/testsuite/g++.dg/modules/macro-3_b.H
! c66dbbdd25ccc73ad806cf31aaa568b5  gcc/testsuite/g++.dg/modules/macro-3_c.C
! 4a3be8a8ce5681cab24a6d51ace8d81c  gcc/testsuite/g++.dg/modules/macro-4_a.H
! 1f055816afac8ef651a33ab24e05921e  gcc/testsuite/g++.dg/modules/macro-4_b.H
! 9086d5303c6f219bd968dda5ad61758b  gcc/testsuite/g++.dg/modules/macro-4_c.H
! dfc2a45ae9da800ccc33ab677d6128b1  gcc/testsuite/g++.dg/modules/macro-4_d.C
! 6bcb3c3ca599b4c0c4c87e7139c88787  gcc/testsuite/g++.dg/modules/macro-4_e.C
! a4bc36e1ccc6f99b35c4c9c711fa9b5e  gcc/testsuite/g++.dg/modules/macro-4_f.C
! 605ec7376642c6b7d5a4e8a591805a95  gcc/testsuite/g++.dg/modules/macro-4_g.C
! 2f7b306efc364836ec067a5050083257  gcc/testsuite/g++.dg/modules/macro-5_a.H
! 5d938d5215f33f02f869f220ad5984bc  gcc/testsuite/g++.dg/modules/macro-5_b.H
! 643eed857a5ab9b6d8084262d0157aac  gcc/testsuite/g++.dg/modules/macro-5_c.C
! 611a1f54665a9d3810be73bd40eeddae  gcc/testsuite/g++.dg/modules/macro-6_a.H
! c91fa85cc31942f800f328b891ae9ba3  gcc/testsuite/g++.dg/modules/macro-6_b.C
! 85aac9c6e0553ea8940e13ab2331bf93  gcc/testsuite/g++.dg/modules/macro-6_c.C
! 2bd361d4f6eec647962dbe8cc178ec00  gcc/testsuite/g++.dg/modules/macro-7_a.C
! 2a5934442c1460d97e29bcd00434e81d  gcc/testsuite/g++.dg/modules/macro-7_b.C
! 9b3c96f28175168f6817a4665a02d2cb  gcc/testsuite/g++.dg/modules/macro-7_c.C
! 7e55fb2b58ae21062a1aae92abeddaee  gcc/testsuite/g++.dg/modules/map-1.map
! 4937456105df94b310b2e5b07d99684e  gcc/testsuite/g++.dg/modules/map-1_a.C
! 47dd78dbe2bd86b2a089fcb4568428b6  gcc/testsuite/g++.dg/modules/map-1_b.C
! a97222399bb913d6fd1cb08089f15ea2  gcc/testsuite/g++.dg/modules/map-1_b.map
! 5df73d307105f16991d7470834d8cd0d  gcc/testsuite/g++.dg/modules/map-2.C
! 8549e2f90bc7f7a37a2a8e9658f48fe5  gcc/testsuite/g++.dg/modules/map-2.map
! 4a4216d7255a9fd278a06e19d4b0de0d  gcc/testsuite/g++.dg/modules/member-def-1_a.C
! 1dc6340e7ef11f58a5cf3b15c433d2d9  gcc/testsuite/g++.dg/modules/member-def-1_b.C
! 3cdaaf54e8ba823f68b82fe18413bc7c  gcc/testsuite/g++.dg/modules/member-def-1_c.C
! f691c09989d6058636ac0eaed83e2c4a  gcc/testsuite/g++.dg/modules/member-def-1_d.C
! fead4c02dd484c1c8c2a14069d7982f9  gcc/testsuite/g++.dg/modules/member-def-2_a.C
! 5ca5c0fd9d2d85af88b312ba816fa0f3  gcc/testsuite/g++.dg/modules/member-def-2_b.C
! 8bc88cbbe340174776ec829fdbb0755b  gcc/testsuite/g++.dg/modules/member-def-2_c.C
! 03bbc2550ace46589a4e535d301f608b  gcc/testsuite/g++.dg/modules/member-def-2_d.C
! 2d4e1648bccbafb604c116d49a74a799  gcc/testsuite/g++.dg/modules/memref-1_a.C
! f3e7b8f4ecec1dcfedf0461f3acc9e3e  gcc/testsuite/g++.dg/modules/memref-1_b.C
! 2f43b22fe1592145d0ad189a6973f938  gcc/testsuite/g++.dg/modules/merge-10.h
! d5934cf72cefca349298a81564263336  gcc/testsuite/g++.dg/modules/merge-10_a.H
! 82319717256d34e9b86df3daf1db6b6b  gcc/testsuite/g++.dg/modules/merge-10_b.C
! daab7c81a3fa7f14ce78017e900dbd0a  gcc/testsuite/g++.dg/modules/merge-11.h
! 071ebfc6ecfeb61633419e041e639269  gcc/testsuite/g++.dg/modules/merge-11_a.H
! 44b4740063caf1983df758fbc8e7918c  gcc/testsuite/g++.dg/modules/merge-11_b.C
! 9755d8d45b84d6c8705af152856538e4  gcc/testsuite/g++.dg/modules/merge-12.h
! bb15d408a95827f9205c004050b260ea  gcc/testsuite/g++.dg/modules/merge-12_a.H
! 89b52248218e3d8bc53607514ba3d74b  gcc/testsuite/g++.dg/modules/merge-12_b.C
! 670de6169cdb3a66802b841fc89d3d4e  gcc/testsuite/g++.dg/modules/merge-13.h
! 89c0113ac48ed542b33a334fdce52bef  gcc/testsuite/g++.dg/modules/merge-13_a.H
! 44da512f507f5f88a1b564683b1b0298  gcc/testsuite/g++.dg/modules/merge-13_b.C
! ca7b36d1b7f4fd393c2c37ee138f29b3  gcc/testsuite/g++.dg/modules/merge-14.h
! 268e59fd4fe11d294d3adb28af0cfdb5  gcc/testsuite/g++.dg/modules/merge-14_a.H
! d16216fec3482f9e1caf9bedef521ab5  gcc/testsuite/g++.dg/modules/merge-14_b.C
! ad612066341a6b2452ce9f70926f838b  gcc/testsuite/g++.dg/modules/merge-15.h
! 4c96867dfa4d4fd972868534c55366da  gcc/testsuite/g++.dg/modules/merge-15_a.H
! cfe8c498fab66643f98a83cac79e77f5  gcc/testsuite/g++.dg/modules/merge-15_b.C
! c55f90e5ef6f7ab3992f6606da04c6d7  gcc/testsuite/g++.dg/modules/merge-1_a.C
! 8dfdc3716d1dda6833ec359936a84a2c  gcc/testsuite/g++.dg/modules/merge-1_b.C
! 4f1ab1a658f8fe8b82d453787cd70235  gcc/testsuite/g++.dg/modules/merge-2_a.H
! 8cdb66c1a7c6fd5f699a54755e0262c3  gcc/testsuite/g++.dg/modules/merge-2_b.C
! bafe05354251f1f0df54dbb55d13354f  gcc/testsuite/g++.dg/modules/merge-3_a.H
! 9b65ec02e40512a553c91436c8345011  gcc/testsuite/g++.dg/modules/merge-3_b.C
! 4616d805187f1f1e275281816766f4a6  gcc/testsuite/g++.dg/modules/merge-4.h
! 947f34a4b2526f90c7af06fb8d567976  gcc/testsuite/g++.dg/modules/merge-4_a.H
! bef87dc2fe9aaf3ed58ff9421287f00e  gcc/testsuite/g++.dg/modules/merge-4_b.C
! 35ec0927d9e09f8f7c6ee4239442945e  gcc/testsuite/g++.dg/modules/merge-5.h
! c99ebd905e63039daee0d5bdb79bdc98  gcc/testsuite/g++.dg/modules/merge-5_a.H
! 44e588bd3c575938f8d08fbc35b8dbf8  gcc/testsuite/g++.dg/modules/merge-5_b.C
! 9de5b8ed60340369be9d291e53c819c6  gcc/testsuite/g++.dg/modules/merge-6.h
! 563832fe31bee4dd9873a26da6f8c3e7  gcc/testsuite/g++.dg/modules/merge-6_a.H
! a378e8bf38982a3967d56f5cc02b5ace  gcc/testsuite/g++.dg/modules/merge-6_b.C
! d3d28fefb8d4f22ce54d5c27e0ace90c  gcc/testsuite/g++.dg/modules/merge-7.h
! 08a9136b13ad4b549b36b3302b793dad  gcc/testsuite/g++.dg/modules/merge-7_a.H
! bc7418eddbb679341ea40b87a93997bc  gcc/testsuite/g++.dg/modules/merge-7_b.C
! 1b72741751c8e814f5e37ab11f3ab74e  gcc/testsuite/g++.dg/modules/merge-8.h
! 1f6518fa44e9434ed12639d77e2c41dc  gcc/testsuite/g++.dg/modules/merge-8_a.H
! b1677dc08eeae94f22b404ad6cd1c7c8  gcc/testsuite/g++.dg/modules/merge-8_b.C
! b1edad776f663405432e237b01562da9  gcc/testsuite/g++.dg/modules/merge-9.h
! 4b6ba404725a785a4acb87e6d137e2d0  gcc/testsuite/g++.dg/modules/merge-9_a.H
! 386f61018ee7c77f24d006af7906190f  gcc/testsuite/g++.dg/modules/merge-9_b.C
! b81fed6364eb58ee2407877494605bcd  gcc/testsuite/g++.dg/modules/mod-decl-0-2a.C
! d18ea4b05b1e0f0d55713abe96ac2a67  gcc/testsuite/g++.dg/modules/mod-decl-0.C
! bffbee8b2f9944d25a80d0749b305404  gcc/testsuite/g++.dg/modules/mod-decl-1.C
! 2ab7e1970f6fdd4ecc60b34844bd2ce3  gcc/testsuite/g++.dg/modules/mod-decl-2_a.C
! b490c4db8daf8e9d41aeffc432a9e3f2  gcc/testsuite/g++.dg/modules/mod-decl-2_b.C
! 659c2ac0c2c7658f7b01141e2c497180  gcc/testsuite/g++.dg/modules/mod-decl-2_c.C
! 932436868c6d9c9ecc0ea5e8e79e686f  gcc/testsuite/g++.dg/modules/mod-decl-3.C
! edf99b9cce0faf25cf9ad4ef1969818c  gcc/testsuite/g++.dg/modules/mod-decl-5_a.C
! 0ff713ecebca50c06b239bfa600db209  gcc/testsuite/g++.dg/modules/mod-decl-5_b.C
! 7f70d1873bf472647d158f20402bd01c  gcc/testsuite/g++.dg/modules/mod-exp-1_a.C
! 974215233d26b773e6a1ff1cfa4a376e  gcc/testsuite/g++.dg/modules/mod-exp-1_b.C
! 618ce9aafa84ba02f10e1688dfda7ce4  gcc/testsuite/g++.dg/modules/mod-imp-1_a.C
! 959dbf87d3ff182e9da66c726109cd1b  gcc/testsuite/g++.dg/modules/mod-imp-1_b.C
! feb619362551a7621a20f0f2b1844f0a  gcc/testsuite/g++.dg/modules/mod-imp-1_c.C
! c0f68b81080e1704ac2c5549e39c9620  gcc/testsuite/g++.dg/modules/mod-imp-1_d.C
! cf5d329c7c2942caafaca05e407459ca  gcc/testsuite/g++.dg/modules/mod-impl-1_a.C
! 73c3b45d094eefa4a36b804c43c2f886  gcc/testsuite/g++.dg/modules/mod-impl-1_b.C
! 801b83a7698ffb6e211e25b4b252054d  gcc/testsuite/g++.dg/modules/mod-impl-1_c.C
! ae4483640acf3f2232b2a5d94c079882  gcc/testsuite/g++.dg/modules/mod-impl-1_d.C
! 64c7475f7b296509a963f290d0c516f2  gcc/testsuite/g++.dg/modules/mod-indirect-1_a.C
! 9c6cf18afb32c8fee7e41f0229813d09  gcc/testsuite/g++.dg/modules/mod-indirect-1_b.C
! 2b4f3029fd3379573a362776e39e419f  gcc/testsuite/g++.dg/modules/mod-indirect-1_c.C
! 54168c89f3133eed8b6b92b1fc2045c5  gcc/testsuite/g++.dg/modules/mod-indirect-1_d.C
! de6660e4acc49035a9e5e9821835deb7  gcc/testsuite/g++.dg/modules/mod-indirect-1_e.C
! 0596f8440d6e7faaedea1a0e9a9b0abb  gcc/testsuite/g++.dg/modules/mod-stamp-1_a.C
! 9ee990c6915cfcce4c19d1af207e2718  gcc/testsuite/g++.dg/modules/mod-stamp-1_b.C
! 8f791002bd4f86102e51942791f60a5e  gcc/testsuite/g++.dg/modules/mod-stamp-1_c.C
! 8c51aa8958a134b9ef359f0045da83f4  gcc/testsuite/g++.dg/modules/mod-stamp-1_d.C
! 94bfe4a9657c23dbc8ce759db1c06da3  gcc/testsuite/g++.dg/modules/mod-sym-1.C
! 34b383c2af14ed128b219ddb2a82216f  gcc/testsuite/g++.dg/modules/mod-sym-2.C
! d14cb80e340ed6b7ddd5e319ea1bb089  gcc/testsuite/g++.dg/modules/mod-sym-3.C
! b66a905fae26f7efc4eaf3f3c60a6b65  gcc/testsuite/g++.dg/modules/mod-tpl-1_a.C
! e83f9a9aca70673da8258ca0631a2125  gcc/testsuite/g++.dg/modules/mod-tpl-1_b.C
! ad9ef329572dab16f2d3d5613538cd3f  gcc/testsuite/g++.dg/modules/mod-tpl-2_a.C
! 95ab3577dee99f3d59838a96f1cbf4fc  gcc/testsuite/g++.dg/modules/mod-tpl-2_b.C
! 1561667e80513a985350c588c47355ec  gcc/testsuite/g++.dg/modules/modules.exp
! f49c118362c9a45e801940d0725a767d  gcc/testsuite/g++.dg/modules/mutual-friend.ii
! ebce3d8effe71472ad6b1910c0b435f6  gcc/testsuite/g++.dg/modules/namespace-1_a.C
! c34c17e18223f5c84607e68a5f2dd81a  gcc/testsuite/g++.dg/modules/namespace-1_b.C
! 9fc8de4ea84d52d9c619890b0581ed9e  gcc/testsuite/g++.dg/modules/namespace-1_c.C
! c95c31df178449622df4cc13fb8d490f  gcc/testsuite/g++.dg/modules/namespace-2_a.C
! 8a66c0b70a51ea5adc5bd9d77821246d  gcc/testsuite/g++.dg/modules/namespace-2_b.C
! ecd73f07c59c7479f5dd6eefeceeaf84  gcc/testsuite/g++.dg/modules/namespace-3_a.C
! 1d79204018988774f2737d60d38da3d0  gcc/testsuite/g++.dg/modules/namespace-3_b.C
! c9c28ac9e2974c410a59c8e8dcf70517  gcc/testsuite/g++.dg/modules/namespace-4_a.C
! 309e15d16714b62c7df72adfedb0e0c1  gcc/testsuite/g++.dg/modules/namespace-4_b.C
! fa60a80639cb24311477303e0d98d2b7  gcc/testsuite/g++.dg/modules/namespace-4_c.C
! df4019992d5e5a1273b138d6bd686af4  gcc/testsuite/g++.dg/modules/nest-1_a.C
! 4473568de7cd981f9865964a715d52c9  gcc/testsuite/g++.dg/modules/nest-1_b.C
! 30dd50d7bea9010cc0f08e61a8de0daa  gcc/testsuite/g++.dg/modules/nest-1_c.C
! 1beb27f90a942c498e40a0f3da1a7510  gcc/testsuite/g++.dg/modules/nested-1_a.C
! 708f6d534e6b0d59eb297dc7f4ec5458  gcc/testsuite/g++.dg/modules/nested-1_b.C
! fe3676399a11e1dea7180f390589c4c1  gcc/testsuite/g++.dg/modules/nested-1_c.C
! c8dd6333c1f472e58d2eb1b3b4e378c0  gcc/testsuite/g++.dg/modules/nested-2_a.C
! 055a22443ad399c8884273a48ddcfdd2  gcc/testsuite/g++.dg/modules/nested-2_b.C
! 592bb8750c47b8560951e9dddba2c12d  gcc/testsuite/g++.dg/modules/nested-constr-1.h
! 0b4761cfe7f3d3aad208c69da12955bf  gcc/testsuite/g++.dg/modules/nested-constr-1_a.H
! 7b3f81b2c5db3adf6c6efe468aa089ac  gcc/testsuite/g++.dg/modules/nested-constr-1_b.C
! 0ff5bb2bb1cbe7d7b4ee0600a0a2fd0f  gcc/testsuite/g++.dg/modules/nested-constr-2_a.C
! 4731525471190d48c93c3839dc5c8859  gcc/testsuite/g++.dg/modules/nested-constr-2_b.C
! a45746b328dd43b264fcb7f8e47d5d2f  gcc/testsuite/g++.dg/modules/nested-constr-2_c.C
! 5acf6c75210fb44142d29f637f37ea79  gcc/testsuite/g++.dg/modules/nodes-1_a.C
! 1fd0d2e987b202b8147ac0f73acc309c  gcc/testsuite/g++.dg/modules/nodes-1_b.C
! fe2be001ff06f90ddf69de49281c1f9e  gcc/testsuite/g++.dg/modules/noexcept-1.h
! 27450e98b9802ab246c93b1b673cef1d  gcc/testsuite/g++.dg/modules/noexcept-1_a.H
! 1ff638d2682442bf8bf5d274ec557894  gcc/testsuite/g++.dg/modules/noexcept-1_b.C
! 5267120dfe33094309707a439761d2ad  gcc/testsuite/g++.dg/modules/ns-alias-1_a.C
! 5c1f7c01d38a7bbf2a7cb1627d2269cb  gcc/testsuite/g++.dg/modules/ns-alias-1_b.C
! 35b6f149929214b0f06a476383cbce84  gcc/testsuite/g++.dg/modules/ns-alias-1_c.C
! ecfd681f05958bda26e4f6f94ae91eb5  gcc/testsuite/g++.dg/modules/ns-dir-1_a.C
! 8b8f93e886dd9913a363870a1b38cc79  gcc/testsuite/g++.dg/modules/ns-dir-1_b.C
! df497977e1f4b1acc0a4975c753af263  gcc/testsuite/g++.dg/modules/ns-dup-1_a.C
! cf2dddb2e47b62e2e29928a52033afc3  gcc/testsuite/g++.dg/modules/ns-dup-1_b.C
! f1ef6fc10f6dd25e63ee2bbe1dab6539  gcc/testsuite/g++.dg/modules/ns-imp-1_a.C
! 2994fcf712efde9826b4412c62467918  gcc/testsuite/g++.dg/modules/ns-imp-1_b.C
! d8ffe9c40cd8dc56c9e40c8bc4162433  gcc/testsuite/g++.dg/modules/ns-imp-1_c.C
! c864fd4170958a3c0ec430b7ed4c2cd1  gcc/testsuite/g++.dg/modules/ns-part-1_a.C
! a2aa06a6dcdfe826f8453f44b86ccdb9  gcc/testsuite/g++.dg/modules/ns-part-1_b.C
! 09a19382893c420024f60fc553e46f98  gcc/testsuite/g++.dg/modules/ns-part-1_c.C
! 3d00837382b2eca4c90e4c08b1ea1938  gcc/testsuite/g++.dg/modules/nsdmi-1_a.C
! 6cb7d26fcc0836ec3d62ff53322af1a3  gcc/testsuite/g++.dg/modules/nsdmi-1_b.C
! 431c9b35843130b9d9e5706eb1d8a1a0  gcc/testsuite/g++.dg/modules/nsdmi-2.C
! 33a8e3b2d73eadf2ddf53cb10f435343  gcc/testsuite/g++.dg/modules/omp-1_a.C
! 6125a4aa43e54b47468e393abfb80318  gcc/testsuite/g++.dg/modules/omp-1_b.C
! 4c77bd7c0292fc10e62cc381e37f7a23  gcc/testsuite/g++.dg/modules/omp-1_c.C
! 3b7fd8a01c48ee2820c8e0a28b6b5fb6  gcc/testsuite/g++.dg/modules/omp-2_a.C
! f74357d8d48ab8b254a9c5d85e5afc04  gcc/testsuite/g++.dg/modules/omp-2_b.C
! 34456a885afd5a670c7b1b36d6100de6  gcc/testsuite/g++.dg/modules/only-1.C
! 457cc97eb504e8bcc8d9e91eb9ca090c  gcc/testsuite/g++.dg/modules/only-2.C
! 05f020b885cb1696012f8f737d88e9c5  gcc/testsuite/g++.dg/modules/only-3.C
! f393f31348fe15bf7b4624e5ca1f4f88  gcc/testsuite/g++.dg/modules/operator-1_a.C
! 5c06e271381a24e83bfc8cee53a57923  gcc/testsuite/g++.dg/modules/operator-1_b.C
! 6fb875df6869ba99b747dcf36b733deb  gcc/testsuite/g++.dg/modules/p0713-1.C
! ff696e0f510ea557c23989199362bba3  gcc/testsuite/g++.dg/modules/p0713-2.C
! cc14aa73d152fe3714edc19282ab0a15  gcc/testsuite/g++.dg/modules/p0713-3.C
! c05001e1ed1bc8701ae61710ad3585cd  gcc/testsuite/g++.dg/modules/part-1_a.C
! 8cc6c00af73d534c5bcd66d9d7757f8c  gcc/testsuite/g++.dg/modules/part-1_b.C
! 103cfc3318415410b659f66bfb16f1bf  gcc/testsuite/g++.dg/modules/part-1_c.C
! c25dee0db611465704daa0f024ba6f16  gcc/testsuite/g++.dg/modules/part-2_a.C
! 537e2b9ab30d26870d776c292153dab5  gcc/testsuite/g++.dg/modules/part-2_b.C
! 50846ce65f897f1d3ba3a3aa49d6f289  gcc/testsuite/g++.dg/modules/part-2_c.C
! 1a06142dbf26af2a0a2ed268535dd787  gcc/testsuite/g++.dg/modules/part-2_d.C
! c41e429d0d80bf5849c440134fd8d7ba  gcc/testsuite/g++.dg/modules/part-2_e.C
! baf4e8b7831356093a11c56e3ae634ec  gcc/testsuite/g++.dg/modules/part-3_a.C
! 5b7ccdb316ce9de13b2bca5cac532af7  gcc/testsuite/g++.dg/modules/part-3_b.C
! 547911f55790e30d282b577e76aebba5  gcc/testsuite/g++.dg/modules/part-3_c.C
! e23e53ed0c89c7bdae023f3dc51bad4c  gcc/testsuite/g++.dg/modules/part-3_d.C
! 8b9c6e1196615f517a11e7261313ccb0  gcc/testsuite/g++.dg/modules/part-4_a.C
! 1d6ca2188119d136bb0071bd0fe6aa73  gcc/testsuite/g++.dg/modules/part-4_b.C
! 062ebeb76530614073ca97e94ab0a295  gcc/testsuite/g++.dg/modules/part-4_c.C
! 93fc73e421646b1788b2eeb0cf13e19d  gcc/testsuite/g++.dg/modules/part-5_a.C
! e115c186406e6dac67acb8502b56f4b9  gcc/testsuite/g++.dg/modules/part-5_b.C
! 7137e917a5e942ab77d964f57997ede2  gcc/testsuite/g++.dg/modules/part-5_c.C
! 37080fa8f1c26d23eb1e433852ba75d2  gcc/testsuite/g++.dg/modules/part-6_a.C
! aa59d18b5e4ed41a1d66cc83fb3166df  gcc/testsuite/g++.dg/modules/part-6_b.C
! af38ea18433a4e188e95c6a0a1b7184e  gcc/testsuite/g++.dg/modules/part-6_c.C
! d59eb8fb4e76b8bc0f9e514c192189b8  gcc/testsuite/g++.dg/modules/part-6_d.C
! 48f96b49082f1214f027245a1851cc4e  gcc/testsuite/g++.dg/modules/part-6_e.C
! 313fe2b20e8cde7e78b0d13627486021  gcc/testsuite/g++.dg/modules/part-7_a.C
! eb2a1afb9a4c89e577b3c59dcae4271d  gcc/testsuite/g++.dg/modules/part-7_b.C
! 5b39859e1f2d22d859bb78e9eff78da0  gcc/testsuite/g++.dg/modules/part-7_c.C
! 4a63ea2156774361bdb95ea0657e42a8  gcc/testsuite/g++.dg/modules/part-hdr-1_a.H
! f81067b696c43b08df9acdf613c63e43  gcc/testsuite/g++.dg/modules/part-hdr-1_b.C
! e366846489950b58c52df35a27846525  gcc/testsuite/g++.dg/modules/part-hdr-1_c.C
! ba7d48392796734c4987c87b6436e0ce  gcc/testsuite/g++.dg/modules/part-mac-1_a.H
! 82898be3b0684369c261ee7bf3005de6  gcc/testsuite/g++.dg/modules/part-mac-1_b.C
! e366846489950b58c52df35a27846525  gcc/testsuite/g++.dg/modules/part-mac-1_c.C
! 6dce6b530852880662a2a88b22a82982  gcc/testsuite/g++.dg/modules/partial-1.h
! 6dbe3ef9e0f9f227062003ba18e1cc0b  gcc/testsuite/g++.dg/modules/partial-1_a.H
! cc4a92d4663ab8a3eb6403f1efd63522  gcc/testsuite/g++.dg/modules/partial-1_b.C
! fbd0b1dab6ed1e2ae131e2b1eb041193  gcc/testsuite/g++.dg/modules/pmf-1.h
! 7ca52ed66494aace282e9a020f27d054  gcc/testsuite/g++.dg/modules/pmf-1_a.H
! 0ba74499682d415a48c7a572004349f1  gcc/testsuite/g++.dg/modules/pmf-1_b.C
! e687b3fee0938d40c890c91d23a95a1b  gcc/testsuite/g++.dg/modules/pmf-2.h
! 2bbfed7b7200f95fcbfd4829ff82c049  gcc/testsuite/g++.dg/modules/pmf-2_a.H
! f979d20df148ee22f4beaaca4b13ab43  gcc/testsuite/g++.dg/modules/pmf-2_b.C
! 9cd1aa1d8f7aa9bbaa6202c0531b93a2  gcc/testsuite/g++.dg/modules/pmp-1_a.C
! 807404dae49679f55eec9277e3160153  gcc/testsuite/g++.dg/modules/pmp-1_b.C
! 2234c7539ce1ba0ef576226e3393ce3e  gcc/testsuite/g++.dg/modules/pmp-2.C
! 3a56ec9de09c0aba7fb1a5e3c762e714  gcc/testsuite/g++.dg/modules/pmp-3.C
! 56ba9e2a41b995724a511df79d8df541  gcc/testsuite/g++.dg/modules/pr98531-1.h
! 7155fba8679861dc6ac8879b5f49a6eb  gcc/testsuite/g++.dg/modules/pr98531-1_a.H
! db36409e89afb58e627178caf0f3d7d5  gcc/testsuite/g++.dg/modules/pr98531-1_b.C
! 56ba9e2a41b995724a511df79d8df541  gcc/testsuite/g++.dg/modules/pr98531-2.h
! d521f5defa1c2439ade983caa3878626  gcc/testsuite/g++.dg/modules/pr98531-2_a.H
! 2b82d0cf5b32e7c41af4333a71f469d6  gcc/testsuite/g++.dg/modules/pr98531-2_b.C
! 9e8182e3476983d7beb42f05892c0ac8  gcc/testsuite/g++.dg/modules/pr98531-3.h
! c259b1281e8af31d180336aca7392b9e  gcc/testsuite/g++.dg/modules/pr98531-3_a.H
! 9bc0019a79d4a55bdb80742f0cc03640  gcc/testsuite/g++.dg/modules/pr98531-3_b.C
! 63636712c391a0bb20418c4bd980e9cc  gcc/testsuite/g++.dg/modules/pr98591.H
! 7d183d0302a9438f220450375475b1cb  gcc/testsuite/g++.dg/modules/pr98718_a.C
! b0d808922fe102b75c7298def0b6648b  gcc/testsuite/g++.dg/modules/pr98718_b.C
! 8cf1acffb67e16e64b43f5ddd3c4e52a  gcc/testsuite/g++.dg/modules/pr98741_a.H
! ba9f1f60bd25fb25b1989b645b9351fc  gcc/testsuite/g++.dg/modules/pr98741_b.H
! eb2e34a90bfcd64a24bb7caeac5dab34  gcc/testsuite/g++.dg/modules/pr98741_c.C
! 7ff22202c616d739ae16d025c025d6dc  gcc/testsuite/g++.dg/modules/pr98741_d.C
! 869fc90d53adfa09653d469b08728a3b  gcc/testsuite/g++.dg/modules/pr98770_a.C
! 064b887ff00dbba6de1c8842987607c0  gcc/testsuite/g++.dg/modules/pr98770_b.C
! eef775ab5fb3f5f47aeb09bf155720ca  gcc/testsuite/g++.dg/modules/pr98843_a.C
! 5a474079fb15623d60d2da66d7a004f1  gcc/testsuite/g++.dg/modules/pr98843_b.H
! dcba3385a9d6327598512baf6ae5d4b5  gcc/testsuite/g++.dg/modules/pr98843_c.C
! ba54387ee46c4fb19a3ab9a4844cfd61  gcc/testsuite/g++.dg/modules/pr98944_a.C
! ffae0410baa0cf1f144b964387bfbcfe  gcc/testsuite/g++.dg/modules/pr98944_b.C
! 701cfcc8c357aa094f34aa029490f60d  gcc/testsuite/g++.dg/modules/pr98944_c.C
! a3323ba22bbfa9772b24db538aeb6eed  gcc/testsuite/g++.dg/modules/pr98944_d.C
! af1b95042fd2d6b253524aa91fe9a321  gcc/testsuite/g++.dg/modules/pr99023_a.X
! 0f47104a2b5e50105b77be4fa733f547  gcc/testsuite/g++.dg/modules/pr99023_b.X
! fa6f37da884582c7c5b2c64f3ff374c1  gcc/testsuite/g++.dg/modules/pr99039_a.C
! a44f9dc7dfc41fee43a04d3fce2ab510  gcc/testsuite/g++.dg/modules/pr99039_b.C
! 7fdbdbd01fa4fd6223aaad6e202ea497  gcc/testsuite/g++.dg/modules/pr99040_a.C
! d3922fc29d0463ecc831e46bc974d5b3  gcc/testsuite/g++.dg/modules/pr99040_b.C
! 5356f9e2ae897594a6208b1434be2f97  gcc/testsuite/g++.dg/modules/pr99040_c.C
! 35199cd634cc47ab3b3b8eab2c0d35b0  gcc/testsuite/g++.dg/modules/pr99040_d.C
! 179c3c1db04e0b42e76277c62e5f3932  gcc/testsuite/g++.dg/modules/pr99050_a.H
! b7e1d9ff3c0fc1cb573ab8564f4c775d  gcc/testsuite/g++.dg/modules/pr99050_b.C
! c6bc457ee1bf928a28da74304e251a1e  gcc/testsuite/g++.dg/modules/pr99071_a.H
! 98ad7aa1471ca9b20c8c4b0d5a818f49  gcc/testsuite/g++.dg/modules/pr99071_b.H
! ef555ee952d6399b10990de5171b6fa9  gcc/testsuite/g++.dg/modules/pr99072.H
! 08c41f579dbe003c5b812c3a9ec75877  gcc/testsuite/g++.dg/modules/pr99153_a.H
! 558328a4bbfde4537ee9b51c8eff91a2  gcc/testsuite/g++.dg/modules/pr99153_b.H
! 9aa6a2b7ce69815ae65132a4db04c6df  gcc/testsuite/g++.dg/modules/pr99166_a.X
! f00811cd6f66f9ba8824caabcce7d87f  gcc/testsuite/g++.dg/modules/pr99166_b.C
! 3b1682f83f9f4ee5ae2514c9275174ce  gcc/testsuite/g++.dg/modules/pr99166_c.C
! 1e04c4a89d2ebc9776d85bc1a364e425  gcc/testsuite/g++.dg/modules/pr99166_d.C
! 05c8debf789c168791df08687c30468a  gcc/testsuite/g++.dg/modules/pr99170-1_a.H
! 27c7377a258283c1a8b67cb2ea4c3c2a  gcc/testsuite/g++.dg/modules/pr99170-1_b.C
! ed4cc5f779957df88a87423411dd8542  gcc/testsuite/g++.dg/modules/pr99170-2.h
! 2a40e69f5e1e2c7afc77aeccdd752328  gcc/testsuite/g++.dg/modules/pr99170-2_a.C
! b203d4c40a623398d42b8317bb02be40  gcc/testsuite/g++.dg/modules/pr99170-2_b.C
! 5a3c25420f20cae6dd43f1a5e0426559  gcc/testsuite/g++.dg/modules/pr99170-3_a.H
! 9043084755a05169912d71af79743031  gcc/testsuite/g++.dg/modules/pr99170-3_b.C
! fcd1d8752bf031b8281ba50f1df03921  gcc/testsuite/g++.dg/modules/pr99174-1_a.C
! f6ff77ccf9f6f071738a6e9b57b6c50c  gcc/testsuite/g++.dg/modules/pr99174-1_b.C
! c72f8c02b8850ae0ab3c120cd41906d9  gcc/testsuite/g++.dg/modules/pr99174-1_c.C
! 65fd975813cd4e8941155001c2700bf0  gcc/testsuite/g++.dg/modules/pr99174.H
! 9f93a8608e38c668198868d8ea01a717  gcc/testsuite/g++.dg/modules/pr99208_a.C
! bd48a321958cd7a20645f65f2d7dc5bb  gcc/testsuite/g++.dg/modules/pr99208_b.C
! 75f0971659a67408d087f0737975f10e  gcc/testsuite/g++.dg/modules/pr99238.h
! 109109d5d7c253bc78b74a2031dbba40  gcc/testsuite/g++.dg/modules/pr99238_a.H
! 3d16f02398903cf0cae686b31f568ff9  gcc/testsuite/g++.dg/modules/pr99238_b.H
! 44e42c0a3802f94685e92dd1a781579f  gcc/testsuite/g++.dg/modules/pr99239_a.H
! b5f3bb3edcc3a656b65a8716b720e847  gcc/testsuite/g++.dg/modules/pr99239_b.H
! 005dd56aed93b6a1125e743196aac65a  gcc/testsuite/g++.dg/modules/pr99245_a.H
! cc289c85e82ccf935549d4dc3a501fae  gcc/testsuite/g++.dg/modules/pr99245_b.H
! 2a3721c580d031feecdb5f25213ef967  gcc/testsuite/g++.dg/modules/pr99248.h
! ab050acad0d47cd8d0e2cfe10372a5ad  gcc/testsuite/g++.dg/modules/pr99248_a.H
! 87661523c857176e611aa3a6e7b313a8  gcc/testsuite/g++.dg/modules/pr99248_b.H
! ee8bb8c3ae62ad604f69280b8e1fa672  gcc/testsuite/g++.dg/modules/pr99283-1_a.H
! bafa0a3feff90cff7fd7453323399e48  gcc/testsuite/g++.dg/modules/pr99283-1_b.H
! 9072ac46d18f268d42875347d6006362  gcc/testsuite/g++.dg/modules/pr99283-2_a.H
! 2b764f5bbd67ee8ea0121dfc06466405  gcc/testsuite/g++.dg/modules/pr99283-2_b.H
! 5d6f98cbbb04be9796e697f52b7784e7  gcc/testsuite/g++.dg/modules/pr99283-2_c.H
! 9e03df7ead28a1a772a9154623d80fc2  gcc/testsuite/g++.dg/modules/pr99283-3_a.H
! f7c0323ad452266c75ed9ed790256c00  gcc/testsuite/g++.dg/modules/pr99283-3_b.H
! 14fe6f36f8b0745444ed8f4dffaa1624  gcc/testsuite/g++.dg/modules/pr99283-4.H
! f865c2a36fab986ae69ef28fc03c5e9c  gcc/testsuite/g++.dg/modules/pr99283-5.h
! edd82ce6cd6d48fee756f4b3574343a4  gcc/testsuite/g++.dg/modules/pr99283-5_a.H
! c2b866c7ee9eaf36b269b9125ceb7c88  gcc/testsuite/g++.dg/modules/pr99283-5_b.H
! a17edb342b1ae79f259519508bdd426a  gcc/testsuite/g++.dg/modules/pr99283-5_c.C
! af6d5a8a83a1130ef1473bc83112e217  gcc/testsuite/g++.dg/modules/pr99283-6.h
! 32caa4cea14224cd4100756134b6debe  gcc/testsuite/g++.dg/modules/pr99283-6_a.H
! e1fe747b8f2f9ce4b64165c48e4663de  gcc/testsuite/g++.dg/modules/pr99283-6_b.H
! 38e35cb2102f82b459bd0175444264cc  gcc/testsuite/g++.dg/modules/pr99283-6_c.C
! 70c62d54934efc1931a65a630fb4f67a  gcc/testsuite/g++.dg/modules/pr99283-6_d.H
! 4be5b138a6d751f5fa47683719e627a8  gcc/testsuite/g++.dg/modules/pr99283-7-swap.h
! 8e8371dddcdd807df50d538f654282ee  gcc/testsuite/g++.dg/modules/pr99283-7-traits.h
! 53dbae21a1d2ac4d3a3a68acf557fa48  gcc/testsuite/g++.dg/modules/pr99283-7_a.H
! 4d85b0604b7e9b7449192ec196314740  gcc/testsuite/g++.dg/modules/pr99283-7_b.H
! 5b59ca11818ebb005afa11203d4aafbe  gcc/testsuite/g++.dg/modules/pr99283-7_c.C
! 86c607bca21191bfa0db713f068c0763  gcc/testsuite/g++.dg/modules/pr99283-7_d.H
! 7c86c401a9b877c4bf4240d294f88465  gcc/testsuite/g++.dg/modules/pr99285_a.H
! 36d9b92c5482d6351f969f16f6a75186  gcc/testsuite/g++.dg/modules/pr99285_b.H
! 21ea96e94a43b998b132a6068a50c73b  gcc/testsuite/g++.dg/modules/pr99294.h
! 3f9de587a67fe16ad32142478b145bb3  gcc/testsuite/g++.dg/modules/pr99294_a.C
! 32a7c505afdfe7483de475fa0450a26e  gcc/testsuite/g++.dg/modules/pr99294_b.C
! fef22f03937836b2e6643435fd0ff30a  gcc/testsuite/g++.dg/modules/pr99344_a.C
! 187d55b7ea81342dd730c889ce2e54b0  gcc/testsuite/g++.dg/modules/pr99344_b.C
! 5eb3328674ac9b14d498980dc0ef26dd  gcc/testsuite/g++.dg/modules/pr99377_a.H
! add697b9dad03234b264f8eed3625f24  gcc/testsuite/g++.dg/modules/pr99377_b.C
! ca57a8cb09eb7df5c27154b21d6289a9  gcc/testsuite/g++.dg/modules/pr99377_c.C
! 943c67818e4b1a2043b6121709962335  gcc/testsuite/g++.dg/modules/pr99389_a.H
! d8ec21f4d0dc1fc86d5e4662a1051bff  gcc/testsuite/g++.dg/modules/pr99389_b.C
! 8019f82d2383ac222d010ba256ee352d  gcc/testsuite/g++.dg/modules/pr99389_c.C
! c37810207a06a1928195c0efeff0eb23  gcc/testsuite/g++.dg/modules/pr99423_a.H
! 078d456f277edb436cd11a9e84317b0f  gcc/testsuite/g++.dg/modules/pr99423_b.H
! ce7cd849a44e48fa8e8bd6c2d9e3e67d  gcc/testsuite/g++.dg/modules/pr99425-1.h
! 47ee279973d36a0112cfffaf385ea5c1  gcc/testsuite/g++.dg/modules/pr99425-1_a.H
! a2d67b9b9a3f38858f22901e06e2023a  gcc/testsuite/g++.dg/modules/pr99425-1_b.H
! de4c9079b3ad276f569faf6a0394e836  gcc/testsuite/g++.dg/modules/pr99425-1_c.C
! d4766744800e02903dd697bb7711d230  gcc/testsuite/g++.dg/modules/pr99425-2_a.X
! d28b40c4a9fe5f71617519108d0959da  gcc/testsuite/g++.dg/modules/pr99425-2_b.X
! 1dd229997f3c4f33c4b9ccf63293ea5f  gcc/testsuite/g++.dg/modules/pr99468.H
! 525fd39d717ca8cbe85d5f0646b1f0fe  gcc/testsuite/g++.dg/modules/pr99480_a.H
! 150436f2c80061db0e2f96239df8bcf7  gcc/testsuite/g++.dg/modules/pr99480_b.H
! 75b0e6da75d4ada78ac3a76e0da8440c  gcc/testsuite/g++.dg/modules/pr99496_a.H
! 3b3a21f6262c516ab22c909411ee37a4  gcc/testsuite/g++.dg/modules/pr99496_b.C
! b47420b7ee24177c7d40855900ab6d71  gcc/testsuite/g++.dg/modules/pr99528.h
! 1d7633fa59fefa7eb2756c186fdb9112  gcc/testsuite/g++.dg/modules/pr99528_a.H
! e443dec27e206b005f0646d1e22e3875  gcc/testsuite/g++.dg/modules/pr99528_b.H
! 8ff032db27c049d7b01ae81e7d746c4c  gcc/testsuite/g++.dg/modules/pr99528_c.C
! 3270e81c8805ada5e5597b402fd0be41  gcc/testsuite/g++.dg/modules/pragma-1_a.H
! c2a457efea6d0cdb629c5997577c1bec  gcc/testsuite/g++.dg/modules/pragma-1_b.C
! d4bc751ae09414f1a933d682c0a1d50b  gcc/testsuite/g++.dg/modules/predef-1.C
! 9e88b85c21c1edb3dcbb16d96a3b463a  gcc/testsuite/g++.dg/modules/predef-1.h
! 2e2fe033780bbb4ff38d6d00783bdbbe  gcc/testsuite/g++.dg/modules/predef-2.h
! eed4254d9556c75f0c053d2c2a6cf9d0  gcc/testsuite/g++.dg/modules/predef-2_a.C
! 4adfb3356bcba8ea615b7f03928003d1  gcc/testsuite/g++.dg/modules/predef-2_b.C
! 5b94d0fcf28e69bfec6c53db99794934  gcc/testsuite/g++.dg/modules/preproc-1.C
! a8cbc7218d2f85e1382a0c6fab6b026c  gcc/testsuite/g++.dg/modules/preproc-2_a.H
! 0944092d3f91b04b84818ee55ea1cdcb  gcc/testsuite/g++.dg/modules/preproc-2_b.C
! c6e1edb52b5891ae1f08bf6d3cf18168  gcc/testsuite/g++.dg/modules/printf-1_a.H
! 9c1772c0b13c48601f0ed1233cc497f1  gcc/testsuite/g++.dg/modules/printf-1_b.C
! 5cd56fd1bbc5b89cb15ebc8d548cfaa0  gcc/testsuite/g++.dg/modules/reparent-1_a.C
! da0cfcb5ac1aec80b1194aff6f469086  gcc/testsuite/g++.dg/modules/reparent-1_b.C
! 4a1010d46cad7859a223396bd885c740  gcc/testsuite/g++.dg/modules/reparent-1_c.C
! 3d89e9cad1a7ef5ee12611c1eda68591  gcc/testsuite/g++.dg/modules/scc-1.C
! 381497aeb07dcdcf0ac1dff8bae080e4  gcc/testsuite/g++.dg/modules/scc-2.C
! 1ea36c9c27e88f193688e35c7e951ff1  gcc/testsuite/g++.dg/modules/shadow-1_a.C
! d911bb0c8e7e30517b19a26ec7df2caa  gcc/testsuite/g++.dg/modules/shadow-1_b.C
! 705fd48d90f803e5220981d3e79d4db7  gcc/testsuite/g++.dg/modules/stat-mem-1.h
! aae07c059c641c03943c0e067167d486  gcc/testsuite/g++.dg/modules/stat-mem-1_a.H
! df985f4dcd12d98035a56d56fcdd7015  gcc/testsuite/g++.dg/modules/stat-mem-1_b.C
! 4b6500d6c6626151076b179e3f19a6f3  gcc/testsuite/g++.dg/modules/stat-tpl-1_a.H
! 8284b0df8548e8013a5edbde6f832f93  gcc/testsuite/g++.dg/modules/static-1_a.C
! c080c59625958504bf04e1d791f2e185  gcc/testsuite/g++.dg/modules/static-1_b.C
! ccd007366f5705a31d52fe9c5bab9141  gcc/testsuite/g++.dg/modules/static-1_c.C
! ead144c6dd6a554943704f3fcabf2981  gcc/testsuite/g++.dg/modules/std-1_a.C
! 44eb33e5fba5df9a2f785daa5a7a97df  gcc/testsuite/g++.dg/modules/std-1_b.C
! 4a699eee76dc46f6a20c7f5f5797357c  gcc/testsuite/g++.dg/modules/stdio-1_a.H
! 37612669466de5cfca7ce69e87c24b51  gcc/testsuite/g++.dg/modules/stdio-1_b.C
! ca9003bc2800bcf7617b612f1b9ccade  gcc/testsuite/g++.dg/modules/stdns_a.C
! d61afed1706378021acddadc6fd9432c  gcc/testsuite/g++.dg/modules/stdns_b.C
! 29f650af8bf97d32458f05b06959b26d  gcc/testsuite/g++.dg/modules/string-1_a.H
! ef28b2634fdf892dda62a1cb87d77d5b  gcc/testsuite/g++.dg/modules/string-1_b.C
! 70a29e6bbd2f4f11f62cb744ff25ea8f  gcc/testsuite/g++.dg/modules/string-view1.C
! 7875dbb1e2099c8c43b6076bd5e803d8  gcc/testsuite/g++.dg/modules/string-view2.C
! 807dee9ffcea2ce4eaf5377a88b1a0d1  gcc/testsuite/g++.dg/modules/sv-1.h
! ccd47d1ef1d5748e9fa9556e5be38e88  gcc/testsuite/g++.dg/modules/sv-1_a.C
! f3a297562b64c48a9d44578c1d4e2f17  gcc/testsuite/g++.dg/modules/sv-1_b.C
! b0292568f9efa5f019059ac51097f343  gcc/testsuite/g++.dg/modules/sym-subst-1.C
! ab796623dd9b8d4bca278f341844c137  gcc/testsuite/g++.dg/modules/sym-subst-2_a.C
! 6f3d962042e8a9b297e9174619c8b422  gcc/testsuite/g++.dg/modules/sym-subst-2_b.C
! 200d03ca6c9ce0cbb868c852268c15cf  gcc/testsuite/g++.dg/modules/sym-subst-3_a.C
! 35ff6fd270f4bda312c8418f732abf1a  gcc/testsuite/g++.dg/modules/sym-subst-3_b.C
! 1d6c355ba813e84fd809ea5858712397  gcc/testsuite/g++.dg/modules/sym-subst-4.C
! fced0c8129b7ead5817381f8cac1528f  gcc/testsuite/g++.dg/modules/sym-subst-5.C
! 89cece6e118fd6f32c2ef1dcfb69d09a  gcc/testsuite/g++.dg/modules/sym-subst-6.C
! fbd4c9345f73c8edbbeb1bfe02293ed7  gcc/testsuite/g++.dg/modules/sys/inext-1.H
! ea4b5904f70eebbbb3d51fadf842357a  gcc/testsuite/g++.dg/modules/tdef-1_a.C
! 2a121abd95086507345a5cc1fea0ba42  gcc/testsuite/g++.dg/modules/tdef-1_b.C
! 6ddfca76e54474a52104f68b332388fa  gcc/testsuite/g++.dg/modules/tdef-2_a.C
! b22cefa63ea1fe2698c54a12229cd742  gcc/testsuite/g++.dg/modules/tdef-2_b.C
! aaba6b299c37172db2fd3445956424c6  gcc/testsuite/g++.dg/modules/tdef-2_c.C
! e68a38fefea30dff317acde6c63e8052  gcc/testsuite/g++.dg/modules/tdef-3_a.C
! 4a13407256431d10903a678966a95437  gcc/testsuite/g++.dg/modules/tdef-3_b.C
! 0b5b95de236ccc86f0b7bbce7c3ae8df  gcc/testsuite/g++.dg/modules/tdef-3_c.C
! 1f0ec519e1e639f5b0253380dfba6fb2  gcc/testsuite/g++.dg/modules/tdef-4_a.C
! eaf9c34d29d30c2bc1553121695aeda6  gcc/testsuite/g++.dg/modules/tdef-4_b.C
! 1ab80b85c3b92b6a948752a2e3dcadac  gcc/testsuite/g++.dg/modules/tdef-4_c.C
! c252fd4bd8cad42078d6d12dc9ce54f6  gcc/testsuite/g++.dg/modules/tdef-5_a.C
! d81de9ac9a370d0a7ca30221ad55dfe7  gcc/testsuite/g++.dg/modules/tdef-5_b.C
! ddbe8bda580e29c1d5c59f71487e5113  gcc/testsuite/g++.dg/modules/tdef-6_a.H
! a2a2eb6b00ccf170c28aa99bb439af41  gcc/testsuite/g++.dg/modules/tdef-6_b.C
! 77a879a26ae4640326dfd794e435a66b  gcc/testsuite/g++.dg/modules/tdef-7.h
! 473122f7351d33177ba8e0a028cf694c  gcc/testsuite/g++.dg/modules/tdef-7_a.H
! c856f3770a45bfa8b4d209a61967e702  gcc/testsuite/g++.dg/modules/tdef-7_b.C
! 6696a10cc3711d4800a82f13a2215909  gcc/testsuite/g++.dg/modules/tdef-8_a.C
! 9a72a1672c5546e622c228d0b60ca0b2  gcc/testsuite/g++.dg/modules/tdef-8_b.C
! 21ea96e94a43b998b132a6068a50c73b  gcc/testsuite/g++.dg/modules/tdef-inst-1.h
! 489c5e2999bf8c59a45b7da2cceb4263  gcc/testsuite/g++.dg/modules/tdef-inst-1_a.C
! e7946cb9ca0e05cd9aa5194c00847d3f  gcc/testsuite/g++.dg/modules/tdef-inst-1_b.C
! 4ee1b098ceb95d001b4cea367f4c6ebb  gcc/testsuite/g++.dg/modules/thunk-1_a.C
! 69d722c6c58df72cabc0c72876607de8  gcc/testsuite/g++.dg/modules/thunk-1_b.C
! f16e5ebd7556493c43cc2faf1b348ae3  gcc/testsuite/g++.dg/modules/tinfo-1.C
! e286ace3527b1df8ed834d790b085543  gcc/testsuite/g++.dg/modules/tinfo-2_a.H
! f8f86df19db8e0f5288eeefb3a4debab  gcc/testsuite/g++.dg/modules/tinfo-2_b.C
! a0161e5171615a705e466f33a67e1fea  gcc/testsuite/g++.dg/modules/tmpl-part-req-1.h
! bcb4b8223c944a14f1f870d40de0d7c5  gcc/testsuite/g++.dg/modules/tmpl-part-req-1_a.H
! 7b43023b911064f99874c117b3aeac2b  gcc/testsuite/g++.dg/modules/tmpl-part-req-1_b.C
! 58bd4900df05483b2344346485a47c09  gcc/testsuite/g++.dg/modules/tmpl-part-req-2.h
! 13a9b36176f72bc30e99ab6e0ea5fe61  gcc/testsuite/g++.dg/modules/tmpl-part-req-2_a.H
! 68312439b323001d7c4e11ee418456ec  gcc/testsuite/g++.dg/modules/tmpl-part-req-2_b.C
! 4731c735e39a1345013d1243efba68a0  gcc/testsuite/g++.dg/modules/tname-spec-1_a.H
! e4105c5cabf673c67794d0aaca132595  gcc/testsuite/g++.dg/modules/tname-spec-1_b.C
! c79b3ebf5076ccdcf99975ff06d0b3f9  gcc/testsuite/g++.dg/modules/token-1.C
! b73a077a0ab38a01c81ddb318de1bfe3  gcc/testsuite/g++.dg/modules/token-2_a.C
! 3a031f8e927948f37292e40a3900b922  gcc/testsuite/g++.dg/modules/token-2_b.C
! 26f2981a4a196c42d43d44e594789469  gcc/testsuite/g++.dg/modules/token-3.C
! 49975dbba17cade48151fd60bf99176f  gcc/testsuite/g++.dg/modules/token-4.C
! 9608f5db1e481a09223505097802644d  gcc/testsuite/g++.dg/modules/token-5.C
! e94085704a235d4ed1f290404d2dd7e2  gcc/testsuite/g++.dg/modules/tpl-alias-1.h
! df2ce42357122835dcedaec11a445552  gcc/testsuite/g++.dg/modules/tpl-alias-1_a.H
! 9b18f4bfd07781fe50356e9a44c31ca2  gcc/testsuite/g++.dg/modules/tpl-alias-1_b.C
! 65517e84ed3e59784e4372c3dc247bcd  gcc/testsuite/g++.dg/modules/tpl-ary-1.h
! 5fa04fc801d430e5dbd1dab1459cca84  gcc/testsuite/g++.dg/modules/tpl-ary-1_a.H
! d3a54a49a1ba81d237d4bf20e66aac82  gcc/testsuite/g++.dg/modules/tpl-ary-1_b.C
! 568c1cd88ad3a69ad031b2c7fd81a128  gcc/testsuite/g++.dg/modules/tpl-extern-fn-1_a.H
! ceb308a6392d6912753d38c2f9a2bccb  gcc/testsuite/g++.dg/modules/tpl-extern-fn-1_b.C
! 5910e745d56845def209b091e3e8e888  gcc/testsuite/g++.dg/modules/tpl-extern-var-1_a.H
! 3a893c5a8b908d302fc91bf865138018  gcc/testsuite/g++.dg/modules/tpl-extern-var-1_b.C
! 051a2753ec2e8d615e18875ab2746fa8  gcc/testsuite/g++.dg/modules/tpl-friend-1_a.C
! 2d9be0b173bceba0cbfd5a1ee4909f4c  gcc/testsuite/g++.dg/modules/tpl-friend-1_b.C
! 127b3c98362ebb3267f51d1773afb775  gcc/testsuite/g++.dg/modules/tpl-friend-2_a.C
! 4511743d659541c1148b76a234b62a41  gcc/testsuite/g++.dg/modules/tpl-friend-2_b.C
! 95a880cc0f3eee2ff8309d2183f7f9d4  gcc/testsuite/g++.dg/modules/tpl-friend-3_a.C
! 2f75113d46c35f669145b81d5620b94d  gcc/testsuite/g++.dg/modules/tpl-friend-3_b.C
! adb5b6ed8eef474e9f6bafa33731a042  gcc/testsuite/g++.dg/modules/tpl-friend-4_a.C
! ab9ad3f69ee578c68df73507b4f930a9  gcc/testsuite/g++.dg/modules/tpl-friend-4_b.C
! 1f2f52689be42a71bbc1cf6eff6c461e  gcc/testsuite/g++.dg/modules/tpl-friend-5_a.C
! 5f2fac82e8e0bea67da5ecec2e0e9639  gcc/testsuite/g++.dg/modules/tpl-friend-5_b.C
! 8db49887098b46b35f28ec9c7738acc5  gcc/testsuite/g++.dg/modules/tpl-friend-6_a.C
! b51b053beacc19bf223fb0111d5cc38e  gcc/testsuite/g++.dg/modules/tpl-friend-6_b.C
! 940f3e9291fe7841eb211bd483df6203  gcc/testsuite/g++.dg/modules/tpl-friend-7_a.C
! 47ca0ba1815983a6f1f480f0edf3d827  gcc/testsuite/g++.dg/modules/tpl-friend-7_b.C
! 34f345480583a302fca05d661038880e  gcc/testsuite/g++.dg/modules/tpl-friend-merge-1.cc
! 429f3d1daac109d3a2717ed74c3368a4  gcc/testsuite/g++.dg/modules/tpl-friend-merge-1.h
! 48815aab963fd190cbc6bab4de9786e5  gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_a.H
! c3a597a86ab8aea976e73b9fb71e8904  gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_b.H
! 8c450abdb3235156ba3778ce4d2fb4c9  gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_c.H
! bfcdf70f7788a8dca2494d7d8d98cf17  gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_d.C
! 2f2e36fe2c5786eb40d564742c4b2b2d  gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_e.C
! 29059418af14e2e24bbe106c907ce051  gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_f.C
! d1ae70fdfdc2e0a3b7413557b93e6667  gcc/testsuite/g++.dg/modules/tpl-spec-1_a.C
! a27985b4d2c331b6fd3664ba0db91db0  gcc/testsuite/g++.dg/modules/tpl-spec-1_b.C
! fca545a9a5246c83ffa778552ee9c057  gcc/testsuite/g++.dg/modules/tpl-spec-2_a.C
! 9cdc38cd1de1b774fd5bd5525506964c  gcc/testsuite/g++.dg/modules/tpl-spec-2_b.C
! 5393afd28f9dc22b5680b318763bc052  gcc/testsuite/g++.dg/modules/tpl-spec-2_c.C
! 73921f79aa0159341e32d381478ee979  gcc/testsuite/g++.dg/modules/tpl-spec-2_d.C
! 09bb3f251de36d1eac6ff3b3201d1b2c  gcc/testsuite/g++.dg/modules/tpl-spec-3_a.C
! 0f7ebd9f663a5f2653614fca8ecc80b7  gcc/testsuite/g++.dg/modules/tpl-spec-3_b.C
! 0b779eb3f6cd92dc02ef75401fecfcea  gcc/testsuite/g++.dg/modules/tpl-spec-4_a.C
! bf06ee8fbede92aacd5ecf4a5c769327  gcc/testsuite/g++.dg/modules/tpl-spec-4_b.C
! 438281eba29eb7b032b6d0ad195492b6  gcc/testsuite/g++.dg/modules/tpl-spec-5_a.C
! 294267a65afa0341d609ba402ab7898b  gcc/testsuite/g++.dg/modules/tpl-spec-5_b.C
! ba47118b706b0830fd726f1ab7253614  gcc/testsuite/g++.dg/modules/tpl-spec-6_a.C
! ad09111c5e018f53c8a715b8bdcfb7ad  gcc/testsuite/g++.dg/modules/tpl-spec-6_b.C
! bd4d984a60145ba6156e8fc50d4f5ed0  gcc/testsuite/g++.dg/modules/tpl-spec-7.C
! e98a12b4ae46870b0643fa1223fdc3b4  gcc/testsuite/g++.dg/modules/tpl-tpl-friend-1_a.C
! 3dd3da204a400133a64f0d5961a045af  gcc/testsuite/g++.dg/modules/tpl-tpl-friend-1_b.C
! cc129c773de8f392f991d9083e48611b  gcc/testsuite/g++.dg/modules/tpl-tpl-mem-1_a.C
! 64597d000a68df8b0d8c82c5c943de72  gcc/testsuite/g++.dg/modules/tpl-tpl-mem-1_b.C
! f0bc523554acc263989f192ebbb84ea3  gcc/testsuite/g++.dg/modules/tpl-tpl-merge-1.h
! b4c1f8d538ee0069095a239923dbf728  gcc/testsuite/g++.dg/modules/tpl-tpl-merge-1_a.H
! 2425676e7b90ec77068e7f3af3fd7514  gcc/testsuite/g++.dg/modules/tpl-tpl-merge-1_b.C
! 9f571a8a213d395d7e549856d5846f73  gcc/testsuite/g++.dg/modules/tpl-tpl-merge-2.h
! 5bad669ecce1108ff754e74565be6504  gcc/testsuite/g++.dg/modules/tpl-tpl-merge-2_a.H
! 04064cca268086d4d790f4f1e658fd84  gcc/testsuite/g++.dg/modules/tpl-tpl-merge-2_b.C
! 85e2641eaa848c2c3b3739afd6c775db  gcc/testsuite/g++.dg/modules/tpl-tpl-parm-1_a.H
! f53853f3e59f32e37b5b9941e4c50056  gcc/testsuite/g++.dg/modules/tpl-tpl-parm-1_b.C
! 1c56a9cb510ef23c13f8a119062f900c  gcc/testsuite/g++.dg/modules/tpl-tpl-parm-2.h
! 252df98addda5b956a41ee5cc242a3d1  gcc/testsuite/g++.dg/modules/tpl-tpl-parm-2_a.H
! 3b78a6420a91e57cb39eba23453abe12  gcc/testsuite/g++.dg/modules/tpl-tpl-parm-2_b.C
! 3ea9228cba4614a8473ad18f8afe66bb  gcc/testsuite/g++.dg/modules/tplmem-1_a.C
! 4814bd5f82df53868ae07daa570e3f50  gcc/testsuite/g++.dg/modules/tplmem-1_b.C
! e15357c9ac25080b25626bc78516e02b  gcc/testsuite/g++.dg/modules/tplmem-3_a.C
! b040bc0531aab955a851fcd673e14e10  gcc/testsuite/g++.dg/modules/tplmem-3_b.C
! 38151b770d1dfc4c4f8cff989eed35c1  gcc/testsuite/g++.dg/modules/ttp-1_a.C
! 156e9ee0e97776f3488b33231cc5dd73  gcc/testsuite/g++.dg/modules/ttp-1_b.C
! 6bd584dd3cdcda52eafffce724e484cf  gcc/testsuite/g++.dg/modules/ttp-2_a.C
! abb264131cf69ea3d4038a76ed813597  gcc/testsuite/g++.dg/modules/ttp-2_b.C
! 0e8353b097aca11633f48af143017b46  gcc/testsuite/g++.dg/modules/ttp-3_a.C
! 45d12a3e78d3382cd9c35a1159dc0f12  gcc/testsuite/g++.dg/modules/ttp-3_b.C
! 0caa5672645b8b70e134f077e695f1f4  gcc/testsuite/g++.dg/modules/typename-1_a.C
! d92fe811980f743f6ceae665d0e6d815  gcc/testsuite/g++.dg/modules/typename-1_b.C
! 634f316800fb64083c45650e2e916e91  gcc/testsuite/g++.dg/modules/unnamed-1_a.C
! fcd88fa087afa6876483c9180896600f  gcc/testsuite/g++.dg/modules/unnamed-1_b.C
! b56edd1f3ed182e1e681ca48a66740bf  gcc/testsuite/g++.dg/modules/unnamed-2.C
! e4a6306468bce09f1c68b8841c79217d  gcc/testsuite/g++.dg/modules/used-1_a.H
! 59b1ee96e3967482f0bbb3d3c8233b09  gcc/testsuite/g++.dg/modules/used-1_b.H
! d0a65a400403c2a39b1e17cff3a2376c  gcc/testsuite/g++.dg/modules/used-1_c.C
! d1bb4b9f574e484059e6aed78c592b09  gcc/testsuite/g++.dg/modules/using-1_a.C
! 9117c391ec874e241340d0076cae8490  gcc/testsuite/g++.dg/modules/using-1_b.C
! fb3dbacda6463c6d08dd383a53fee3f7  gcc/testsuite/g++.dg/modules/using-1_c.C
! 4598c7be99880404501401a922992bd6  gcc/testsuite/g++.dg/modules/using-2_a.C
! 6b4b2d371a744b85199cac5287239fec  gcc/testsuite/g++.dg/modules/using-2_b.C
! 261f659bf38a6f29853351db24461fae  gcc/testsuite/g++.dg/modules/using-2_c.C
! 659d4832d90f6414eef1fdc13dd63d76  gcc/testsuite/g++.dg/modules/using-3.C
! bcc6cc64890192d647d85da41996ed1e  gcc/testsuite/g++.dg/modules/using-4_a.C
! f7d6d7386bd922589ea2e579fdd741e5  gcc/testsuite/g++.dg/modules/using-4_b.C
! 0650e45892eb431529641f277d164339  gcc/testsuite/g++.dg/modules/using-5_a.C
! afb514813305c672931b507422b7c9be  gcc/testsuite/g++.dg/modules/using-5_b.C
! bbdcba8100255b764adf52e756836716  gcc/testsuite/g++.dg/modules/using-6_a.C
! 397b69c332ef27a5d426c8de689490c8  gcc/testsuite/g++.dg/modules/using-6_b.C
! 2dc02daab2156be8c7218e8e03460a83  gcc/testsuite/g++.dg/modules/using-7.C
! f4344ac47fb7c4a34242c5b78f6b9c9e  gcc/testsuite/g++.dg/modules/using-8_a.C
! 397b69c332ef27a5d426c8de689490c8  gcc/testsuite/g++.dg/modules/using-8_b.C
! 049f8f601c4bdc1afd389a14a09a4c68  gcc/testsuite/g++.dg/modules/using-enum-1_a.H
! c9f2d72a8dee37071e77211f901a236f  gcc/testsuite/g++.dg/modules/using-enum-1_b.C
! 5bb95ddb69a1aaef4a3d6c5521bc7637  gcc/testsuite/g++.dg/modules/var-1_a.C
! efdc24cd50e9b94c305919ac428b2a71  gcc/testsuite/g++.dg/modules/var-1_b.C
! e89823e1ba3dc96a18ef91f3e9ee167c  gcc/testsuite/g++.dg/modules/var-tpl-1_a.C
! eb2ad12d4827c51d7751ae4192a8fae0  gcc/testsuite/g++.dg/modules/var-tpl-1_b.C
! 5f8cf2838a372b40a928ec329398609d  gcc/testsuite/g++.dg/modules/var-tpl-concept-1.h
! adc4f32bd70209871e3deed494628f03  gcc/testsuite/g++.dg/modules/var-tpl-concept-1_a.C
! 5363cb6d035a0839de3364cef17f901a  gcc/testsuite/g++.dg/modules/var-tpl-concept-1_b.C
! bfda5ff6cc03bf07bd84d1dc1cb444ee  gcc/testsuite/g++.dg/modules/virt-1_a.C
! ef900fef308d0ecbd503017332905389  gcc/testsuite/g++.dg/modules/virt-1_b.C
! 73aabdf470b341374dca4d3970fe98d9  gcc/testsuite/g++.dg/modules/virt-2_a.C
! fff4d217ed50f7d0061235e42d569374  gcc/testsuite/g++.dg/modules/virt-2_b.C
! c33c2c38a1bcbf161aef9468e589415a  gcc/testsuite/g++.dg/modules/virt-2_c.C
! 1127461faa60a09d4c3f0ce98cd9d08b  gcc/testsuite/g++.dg/modules/vmort-1_a.C
! e4510618d0f219adedac6528c5d88023  gcc/testsuite/g++.dg/modules/vmort-1_b.C
! fd51a80db9cdb5d0aca98cd21e6b7bb6  gcc/testsuite/g++.dg/modules/vmort-2_a.C
! d3b9ed9f839fcb523afc599b67ede85f  gcc/testsuite/g++.dg/modules/vmort-2_b.C
! 7782b9a66ea06a005a6c0688dd52799d  gcc/testsuite/g++.dg/modules/vmort-2_c.C
! 7bb05084bc922edff1737dd0dc8d7f00  gcc/testsuite/g++.dg/modules/vtt-1_a.C
! 271c66801ebcec5dedc002f7ea1634ad  gcc/testsuite/g++.dg/modules/vtt-1_b.C
! fb2dff43314c2b3715f353986395f3c8  gcc/testsuite/g++.dg/modules/vtt-1_c.C
! 61a0de9a0b291c9828e798d288cd1d63  gcc/testsuite/g++.dg/modules/vtt-2.h
! 1f7a42538a18498e42ad3605fc45068e  gcc/testsuite/g++.dg/modules/vtt-2_a.H
! b9e6dd7232aadc013278f66fb1b6943a  gcc/testsuite/g++.dg/modules/vtt-2_b.C
! 1f4f7d511678a6fe4008c486952c066e  gcc/testsuite/g++.dg/modules/xtreme-header-1.h
! 98f4134fbdf70aa52f8b7485cc2b7bee  gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
! 0192d2cf9b607dfc75c5ec8ccf0ab892  gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
! bed7f5d7a3cc0e071270be9feca8f82d  gcc/testsuite/g++.dg/modules/xtreme-header-1_c.C
! b2b961423bdc518da35f7a8b09f5da6f  gcc/testsuite/g++.dg/modules/xtreme-header-2.h
! 808f4bde53dc63bf027df7f3f42c142d  gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
! 1a0932537d7d7b9406b78d1164a48f5b  gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
! ae606742eb915a1cb398dcbbce5c625d  gcc/testsuite/g++.dg/modules/xtreme-header-2_c.C
! 3a9936d16689abac86f0b68ea78e28f7  gcc/testsuite/g++.dg/modules/xtreme-header-3.h
! e808cf676980441a0c5c2009e77a4968  gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
! e3f6e6e8e6976ab3351dcb353813117d  gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
! e3f46a4d08250c04de34d13c77cc9b82  gcc/testsuite/g++.dg/modules/xtreme-header-3_c.C
! 46dd41193a40d53f540694c2ba8fcd0a  gcc/testsuite/g++.dg/modules/xtreme-header-4.h
! 24ab9d562e5e2b3930fcb012396d6306  gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
! a2b734b7b5d6a9c62113cd806de11bfc  gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
! 76e936c3575d46324e5f96282702e11e  gcc/testsuite/g++.dg/modules/xtreme-header-4_c.C
! e8228349c15997bd101dce93d255e164  gcc/testsuite/g++.dg/modules/xtreme-header-5.h
! d17e82ac87ed66555ffde8058e4d0c76  gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
! 39cf119bbb49dcf4fec1fe451ffa231b  gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
! c3636cf9dd8b860418b1ec20eca2fcfa  gcc/testsuite/g++.dg/modules/xtreme-header-5_c.C
! 0eb86c325687230f651493809df4232e  gcc/testsuite/g++.dg/modules/xtreme-header-6.h
! 85dfd677144240809d1219f05d17f8ab  gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
! dafc999dc77232ecf4da841ea0785153  gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
! 63b82749637ed6fb8c7c3635237b5133  gcc/testsuite/g++.dg/modules/xtreme-header-6_c.C
! d94a040fd383960841da3874312807b4  gcc/testsuite/g++.dg/modules/xtreme-header.h
! 17ec177cae98b9faed2d659aff2838fc  gcc/testsuite/g++.dg/modules/xtreme-header_a.H
! 5c6d89fdd3100b17ff424aaee91d841b  gcc/testsuite/g++.dg/modules/xtreme-header_b.C
! 275063e55db5497a82b6a8afb6b265f0  gcc/testsuite/g++.dg/modules/xtreme-tr1.h
! 6df9a71a58dbf8146adfa33a7c18858e  gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
! 847138241047c39840018b1c3eb8bd7d  gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
! 328d5426468f09a9a108df6191684b78  gcc/testsuite/g++.dg/no-stack-protector-attr-2.C
! 7d6c1b26f4587930274e314a38ba5659  gcc/testsuite/g++.dg/no-stack-protector-attr-3.C
! 020cc92178f45d27f797218781bfe02c  gcc/testsuite/g++.dg/no-stack-protector-attr.C
! 8782d87c3ab6e3b20b317d9f1492e146  gcc/testsuite/g++.dg/opt/20050511-1.C
  5e1f1ec360f2ae54c78ee347de5c583f  gcc/testsuite/g++.dg/opt/20181025-1.C
  960bd912d3dccb44df0ecdebdfd45b44  gcc/testsuite/g++.dg/opt/alias1.C
  15bcb0db43b0a7c6f0b1a4ff014da35d  gcc/testsuite/g++.dg/opt/alias2.C
*************** b879c3972fcf09a0bef4781d973dea10  gcc/te
*** 18752,18758 ****
  815190a461caeca9af90923572df6303  gcc/testsuite/g++.dg/opt/const1.C
  4bcc868b38c719f7e50e39d9f302169b  gcc/testsuite/g++.dg/opt/const2.C
  9ccc1a8633e5cf3c51fd3491baa248ec  gcc/testsuite/g++.dg/opt/const3.C
! 6b2e1cf4863e58457238c73c49085813  gcc/testsuite/g++.dg/opt/const4.C
  8acf967b641c44d3b713b18abd459981  gcc/testsuite/g++.dg/opt/const5.C
  77ef3f0315a1d75cc03361805c714b79  gcc/testsuite/g++.dg/opt/const6.C
  8a6577c2e8b91d69c2d55b8ed2488fc8  gcc/testsuite/g++.dg/opt/copysign-1.C
--- 20784,20790 ----
  815190a461caeca9af90923572df6303  gcc/testsuite/g++.dg/opt/const1.C
  4bcc868b38c719f7e50e39d9f302169b  gcc/testsuite/g++.dg/opt/const2.C
  9ccc1a8633e5cf3c51fd3491baa248ec  gcc/testsuite/g++.dg/opt/const3.C
! 6ce6781eee8599f8f5762ae874d368af  gcc/testsuite/g++.dg/opt/const4.C
  8acf967b641c44d3b713b18abd459981  gcc/testsuite/g++.dg/opt/const5.C
  77ef3f0315a1d75cc03361805c714b79  gcc/testsuite/g++.dg/opt/const6.C
  8a6577c2e8b91d69c2d55b8ed2488fc8  gcc/testsuite/g++.dg/opt/copysign-1.C
*************** b38ce2cc80cbd8da836a5faae6d33aff  gcc/te
*** 18779,18785 ****
  76e33d670a50db6c3e799393d2903f1b  gcc/testsuite/g++.dg/opt/dtor4-aux.cc
  901c1f4a3e8f81d1bc0f7a633ce9b6be  gcc/testsuite/g++.dg/opt/dtor4.C
  1224352d3dfac75031ae528b98238fad  gcc/testsuite/g++.dg/opt/dtor4.h
! 564b784a12ba92dca47a9a4958428cc8  gcc/testsuite/g++.dg/opt/dump1.C
  c65684013d98188fa96db47010840657  gcc/testsuite/g++.dg/opt/eh1.C
  4bc90d9400a86fd4bca87067006586da  gcc/testsuite/g++.dg/opt/eh2.C
  18b23691d6af0cdfab89ec422af1cdb1  gcc/testsuite/g++.dg/opt/eh3.C
--- 20811,20817 ----
  76e33d670a50db6c3e799393d2903f1b  gcc/testsuite/g++.dg/opt/dtor4-aux.cc
  901c1f4a3e8f81d1bc0f7a633ce9b6be  gcc/testsuite/g++.dg/opt/dtor4.C
  1224352d3dfac75031ae528b98238fad  gcc/testsuite/g++.dg/opt/dtor4.h
! 150e576fe8287592fe2a0105f26b37f5  gcc/testsuite/g++.dg/opt/dump1.C
  c65684013d98188fa96db47010840657  gcc/testsuite/g++.dg/opt/eh1.C
  4bc90d9400a86fd4bca87067006586da  gcc/testsuite/g++.dg/opt/eh2.C
  18b23691d6af0cdfab89ec422af1cdb1  gcc/testsuite/g++.dg/opt/eh3.C
*************** eb5f705d59dfe97f6ee0739884a4d329  gcc/te
*** 18793,18803 ****
  a46d4940a485effb55a52f27a3660542  gcc/testsuite/g++.dg/opt/expect1.C
  e8a21bcc87a675b894f8d5ad9b5b0170  gcc/testsuite/g++.dg/opt/expect2.C
  b5b63cd3c6f555a0f702d932b247aceb  gcc/testsuite/g++.dg/opt/flifetime-dse1.C
! 0bcef1a3c2e8ea55e1fe4e0544a14df7  gcc/testsuite/g++.dg/opt/flifetime-dse2.C
  6b28fea971bdae1f538677719e8dcd02  gcc/testsuite/g++.dg/opt/flifetime-dse3.C
! 60f8519dd32174df7d646ed0197c21c4  gcc/testsuite/g++.dg/opt/flifetime-dse4.C
  aebb50b965b9e3fe7a46ed8be7099eb9  gcc/testsuite/g++.dg/opt/flifetime-dse5.C
  db93c1e44055c4c1c91b5d89fef595e3  gcc/testsuite/g++.dg/opt/flifetime-dse6.C
  d48bf743fe7cd2670b77dd76e8fc1714  gcc/testsuite/g++.dg/opt/float1.C
  65e3fab7de933a99f4b5f52a982ea8d1  gcc/testsuite/g++.dg/opt/fold1.C
  8bda53d5b874de63c6fb463b2e63a8f9  gcc/testsuite/g++.dg/opt/fold2.C
--- 20825,20837 ----
  a46d4940a485effb55a52f27a3660542  gcc/testsuite/g++.dg/opt/expect1.C
  e8a21bcc87a675b894f8d5ad9b5b0170  gcc/testsuite/g++.dg/opt/expect2.C
  b5b63cd3c6f555a0f702d932b247aceb  gcc/testsuite/g++.dg/opt/flifetime-dse1.C
! 6647f629d4b2c11a3db7015f35d1a77f  gcc/testsuite/g++.dg/opt/flifetime-dse2.C
  6b28fea971bdae1f538677719e8dcd02  gcc/testsuite/g++.dg/opt/flifetime-dse3.C
! 4f5b3273c995dbeb65a21e90dfe524bc  gcc/testsuite/g++.dg/opt/flifetime-dse4.C
  aebb50b965b9e3fe7a46ed8be7099eb9  gcc/testsuite/g++.dg/opt/flifetime-dse5.C
  db93c1e44055c4c1c91b5d89fef595e3  gcc/testsuite/g++.dg/opt/flifetime-dse6.C
+ 7f2491fad6607a8022e147f6997c748d  gcc/testsuite/g++.dg/opt/flifetime-dse7.C
+ fff9fa57c01a271127be7c93381da29e  gcc/testsuite/g++.dg/opt/flifetime-dse8.C
  d48bf743fe7cd2670b77dd76e8fc1714  gcc/testsuite/g++.dg/opt/float1.C
  65e3fab7de933a99f4b5f52a982ea8d1  gcc/testsuite/g++.dg/opt/fold1.C
  8bda53d5b874de63c6fb463b2e63a8f9  gcc/testsuite/g++.dg/opt/fold2.C
*************** e94377182a1dedb230f53db874897364  gcc/te
*** 18852,18857 ****
--- 20886,20892 ----
  3a570f71e0d06b55d991f8cab4b017d2  gcc/testsuite/g++.dg/opt/nrv18.C
  b5ea3678b95f88606bb0d37ee1f58a68  gcc/testsuite/g++.dg/opt/nrv19.C
  360692bdb55de35cb68717ceb6c51fd7  gcc/testsuite/g++.dg/opt/nrv2.C
+ b95995f2a1b93421818fb349cdf03d17  gcc/testsuite/g++.dg/opt/nrv20.C
  42adcc800d5d2029a2b831e1453e8f32  gcc/testsuite/g++.dg/opt/nrv3.C
  b2773b15109a2fc43572a97edf29b236  gcc/testsuite/g++.dg/opt/nrv4.C
  13481653ab41a707cb4c4eed2199c57f  gcc/testsuite/g++.dg/opt/nrv5.C
*************** d6a356e006ceb7cfd944f66314b28fac  gcc/te
*** 18923,18929 ****
  5932b660e4368861f26ec5f7e1c980d4  gcc/testsuite/g++.dg/opt/pr42295.C
  6d1e020d4984faabf203c22b44e746bb  gcc/testsuite/g++.dg/opt/pr42508.C
  8bc8beae0a0e34141223a7ef500c655b  gcc/testsuite/g++.dg/opt/pr43655.C
! cd0c9d7e5a29f6757712fcd93472d70a  gcc/testsuite/g++.dg/opt/pr44919.C
  144f6e4897f5aeb63b6da39909c71ed9  gcc/testsuite/g++.dg/opt/pr45316.C
  6cc5ee8ac3179431ed53016627f5f5e8  gcc/testsuite/g++.dg/opt/pr45412.C
  984c2716bb788c7268aa480a2ad92114  gcc/testsuite/g++.dg/opt/pr46640.C
--- 20958,20964 ----
  5932b660e4368861f26ec5f7e1c980d4  gcc/testsuite/g++.dg/opt/pr42295.C
  6d1e020d4984faabf203c22b44e746bb  gcc/testsuite/g++.dg/opt/pr42508.C
  8bc8beae0a0e34141223a7ef500c655b  gcc/testsuite/g++.dg/opt/pr43655.C
! 5ee55738efbb57dbbc78f4745a8602e2  gcc/testsuite/g++.dg/opt/pr44919.C
  144f6e4897f5aeb63b6da39909c71ed9  gcc/testsuite/g++.dg/opt/pr45316.C
  6cc5ee8ac3179431ed53016627f5f5e8  gcc/testsuite/g++.dg/opt/pr45412.C
  984c2716bb788c7268aa480a2ad92114  gcc/testsuite/g++.dg/opt/pr46640.C
*************** a16d353b041e86feb28f12b266aeadab  gcc/te
*** 18933,18939 ****
  795f414b8075cb07e338e90313b07d50  gcc/testsuite/g++.dg/opt/pr47280.C
  f3354bc934b81b5fc93ff5fd02c9dc9a  gcc/testsuite/g++.dg/opt/pr47355.C
  ce12e27bbb9344379eb93fb80a67ab97  gcc/testsuite/g++.dg/opt/pr47366.C
! 92057859bd751fa0758c95c78f0015b7  gcc/testsuite/g++.dg/opt/pr47615.C
  32b9348acc365a25c1e63908184a61bc  gcc/testsuite/g++.dg/opt/pr47632.C
  33506a150063a0e5ef4bd82b202852d9  gcc/testsuite/g++.dg/opt/pr47639.c
  16fdb00e82f91a3d2db5392bf143a395  gcc/testsuite/g++.dg/opt/pr48272.C
--- 20968,20974 ----
  795f414b8075cb07e338e90313b07d50  gcc/testsuite/g++.dg/opt/pr47280.C
  f3354bc934b81b5fc93ff5fd02c9dc9a  gcc/testsuite/g++.dg/opt/pr47355.C
  ce12e27bbb9344379eb93fb80a67ab97  gcc/testsuite/g++.dg/opt/pr47366.C
! 4479af75349155b0e00d76a989293cee  gcc/testsuite/g++.dg/opt/pr47615.C
  32b9348acc365a25c1e63908184a61bc  gcc/testsuite/g++.dg/opt/pr47632.C
  33506a150063a0e5ef4bd82b202852d9  gcc/testsuite/g++.dg/opt/pr47639.c
  16fdb00e82f91a3d2db5392bf143a395  gcc/testsuite/g++.dg/opt/pr48272.C
*************** fe9b6c3dabf0ae1d3eb188f56c992822  gcc/te
*** 18961,18967 ****
  18dd1a114766366695a4ed34bf5f0741  gcc/testsuite/g++.dg/opt/pr55281.C
  f555a4552399a1314507b7d9744f7eef  gcc/testsuite/g++.dg/opt/pr55329.C
  eb316460089208481c6b3e5a0c34a90a  gcc/testsuite/g++.dg/opt/pr55331.C
! 7057b0c0d36c90d59e489132e8fff3fe  gcc/testsuite/g++.dg/opt/pr55717.C
  a11366306b88724f9bb36fdef806b6bd  gcc/testsuite/g++.dg/opt/pr56381.C
  47b528a0159c73411ef4285b052d60be  gcc/testsuite/g++.dg/opt/pr56999.C
  11efe66e14d9aba903f11007f0f3a4e8  gcc/testsuite/g++.dg/opt/pr57411.C
--- 20996,21002 ----
  18dd1a114766366695a4ed34bf5f0741  gcc/testsuite/g++.dg/opt/pr55281.C
  f555a4552399a1314507b7d9744f7eef  gcc/testsuite/g++.dg/opt/pr55329.C
  eb316460089208481c6b3e5a0c34a90a  gcc/testsuite/g++.dg/opt/pr55331.C
! e19ebb209e95191eb4d52fa66eacd47f  gcc/testsuite/g++.dg/opt/pr55717.C
  a11366306b88724f9bb36fdef806b6bd  gcc/testsuite/g++.dg/opt/pr56381.C
  47b528a0159c73411ef4285b052d60be  gcc/testsuite/g++.dg/opt/pr56999.C
  11efe66e14d9aba903f11007f0f3a4e8  gcc/testsuite/g++.dg/opt/pr57411.C
*************** b5c6104c29743bbd0bba0fb8c0978bd7  gcc/te
*** 18978,18984 ****
  658809bc6695a7036a3aa07912cf983c  gcc/testsuite/g++.dg/opt/pr59647.C
  bc581baefa9c2cdf340c7afe5ec42620  gcc/testsuite/g++.dg/opt/pr59947.C
  fcc0cbf12c3c1ff2231451798c2c5d37  gcc/testsuite/g++.dg/opt/pr60002.C
! e676633b5d90b99891eacfad5d4d65cc  gcc/testsuite/g++.dg/opt/pr60597.C
  cd9ce81573f1dd55ed9926ad0afbe423  gcc/testsuite/g++.dg/opt/pr60849.C
  2ca5ee004fc73e412a39de0dd38e1b4c  gcc/testsuite/g++.dg/opt/pr60912.C
  08e7585d2d80f49eb43743bb5ae7f9f1  gcc/testsuite/g++.dg/opt/pr61456.C
--- 21013,21019 ----
  658809bc6695a7036a3aa07912cf983c  gcc/testsuite/g++.dg/opt/pr59647.C
  bc581baefa9c2cdf340c7afe5ec42620  gcc/testsuite/g++.dg/opt/pr59947.C
  fcc0cbf12c3c1ff2231451798c2c5d37  gcc/testsuite/g++.dg/opt/pr60002.C
! 460232703752f4b1c801d9c715d86146  gcc/testsuite/g++.dg/opt/pr60597.C
  cd9ce81573f1dd55ed9926ad0afbe423  gcc/testsuite/g++.dg/opt/pr60849.C
  2ca5ee004fc73e412a39de0dd38e1b4c  gcc/testsuite/g++.dg/opt/pr60912.C
  08e7585d2d80f49eb43743bb5ae7f9f1  gcc/testsuite/g++.dg/opt/pr61456.C
*************** cd9ce81573f1dd55ed9926ad0afbe423  gcc/te
*** 18986,18992 ****
  605b35864e90bc674d9bcccd823e0ad7  gcc/testsuite/g++.dg/opt/pr62078.C
  8aeb5ff713ad724762a1f8ee5d01ab93  gcc/testsuite/g++.dg/opt/pr62146.C
  70b8c5fe5271089bc9d959cdb9d64688  gcc/testsuite/g++.dg/opt/pr64338.C
! f69ba555897c04c22d5a97c185b87599  gcc/testsuite/g++.dg/opt/pr64411.C
  64757e568a9c597885a2ba3732520fb6  gcc/testsuite/g++.dg/opt/pr65003.C
  b945a12f6d1f23ffaf6b58c4a52a828d  gcc/testsuite/g++.dg/opt/pr65074.C
  12eb0915d4b7275f1bc0c55a27fe5a16  gcc/testsuite/g++.dg/opt/pr65105-4.C
--- 21021,21027 ----
  605b35864e90bc674d9bcccd823e0ad7  gcc/testsuite/g++.dg/opt/pr62078.C
  8aeb5ff713ad724762a1f8ee5d01ab93  gcc/testsuite/g++.dg/opt/pr62146.C
  70b8c5fe5271089bc9d959cdb9d64688  gcc/testsuite/g++.dg/opt/pr64338.C
! 3c1b1ad139bebd3635dac55af68bc9b3  gcc/testsuite/g++.dg/opt/pr64411.C
  64757e568a9c597885a2ba3732520fb6  gcc/testsuite/g++.dg/opt/pr65003.C
  b945a12f6d1f23ffaf6b58c4a52a828d  gcc/testsuite/g++.dg/opt/pr65074.C
  12eb0915d4b7275f1bc0c55a27fe5a16  gcc/testsuite/g++.dg/opt/pr65105-4.C
*************** a9fbf233b631f1d45170b9aacad1f922  gcc/te
*** 19032,19039 ****
  82f0bf4cb38579cf06831526624b0a6e  gcc/testsuite/g++.dg/opt/pr80275.C
  3793c7fdebffcc14d6e627f6ab5cdb04  gcc/testsuite/g++.dg/opt/pr80385.C
  6f2ff952423a3011c52cacf4acb601f1  gcc/testsuite/g++.dg/opt/pr80436.C
! 2790fce2a0e9448ee4a7971cc6fb2063  gcc/testsuite/g++.dg/opt/pr81715.C
! 10c7a1569629659b172e9764c905a3bf  gcc/testsuite/g++.dg/opt/pr82159-2.C
  2ef205fc60b004319bdd85aaab41122a  gcc/testsuite/g++.dg/opt/pr82159.C
  de2c75d60389e1ec0cbe062c8582d2d9  gcc/testsuite/g++.dg/opt/pr82577.C
  d30ca1c821e579353187057dde122039  gcc/testsuite/g++.dg/opt/pr82778.C
--- 21067,21074 ----
  82f0bf4cb38579cf06831526624b0a6e  gcc/testsuite/g++.dg/opt/pr80275.C
  3793c7fdebffcc14d6e627f6ab5cdb04  gcc/testsuite/g++.dg/opt/pr80385.C
  6f2ff952423a3011c52cacf4acb601f1  gcc/testsuite/g++.dg/opt/pr80436.C
! 97574f7cfa38ba2094043dc3a7f02589  gcc/testsuite/g++.dg/opt/pr81715.C
! 2b4d4f8e6529784b4ac0ea783ee0f03d  gcc/testsuite/g++.dg/opt/pr82159-2.C
  2ef205fc60b004319bdd85aaab41122a  gcc/testsuite/g++.dg/opt/pr82159.C
  de2c75d60389e1ec0cbe062c8582d2d9  gcc/testsuite/g++.dg/opt/pr82577.C
  d30ca1c821e579353187057dde122039  gcc/testsuite/g++.dg/opt/pr82778.C
*************** e7a93fead9e89e9926c6bc67249dc6b8  gcc/te
*** 19054,19060 ****
  d1a8e92d247b883fcbec24a8363eec07  gcc/testsuite/g++.dg/opt/pr87360.C
  1212695477c8b0f600a726a3a2dcb780  gcc/testsuite/g++.dg/opt/pr87475.C
  d7e7e553cae877565f3c59601122b241  gcc/testsuite/g++.dg/opt/pr87967.C
! f9afd65b4100f3c114f7ec5e639cd10b  gcc/testsuite/g++.dg/opt/pr87974.C
  590a67ccef782671fe42aa5849e90c0c  gcc/testsuite/g++.dg/opt/pr88478.C
  dd4b362edbe19cdf29a47f7bb90e6e2a  gcc/testsuite/g++.dg/opt/pr89187.C
  eea9eb29aff452d80dae491fa69bef1b  gcc/testsuite/g++.dg/opt/pr89188.C
--- 21089,21095 ----
  d1a8e92d247b883fcbec24a8363eec07  gcc/testsuite/g++.dg/opt/pr87360.C
  1212695477c8b0f600a726a3a2dcb780  gcc/testsuite/g++.dg/opt/pr87475.C
  d7e7e553cae877565f3c59601122b241  gcc/testsuite/g++.dg/opt/pr87967.C
! b46b1706fbe2c085ecc37ddd79d5ea79  gcc/testsuite/g++.dg/opt/pr87974.C
  590a67ccef782671fe42aa5849e90c0c  gcc/testsuite/g++.dg/opt/pr88478.C
  dd4b362edbe19cdf29a47f7bb90e6e2a  gcc/testsuite/g++.dg/opt/pr89187.C
  eea9eb29aff452d80dae491fa69bef1b  gcc/testsuite/g++.dg/opt/pr89188.C
*************** dacd41d6dbf618fb881768d6a068d7f1  gcc/te
*** 19081,19090 ****
--- 21116,21134 ----
  2ae3bd1284401f329edadc0752cf28be  gcc/testsuite/g++.dg/opt/pr96194.C
  2f5723dc00ebdebb54dc9e15de17ee39  gcc/testsuite/g++.dg/opt/pr96354.C
  dcb0e957efba822ddb1534eef4cc12de  gcc/testsuite/g++.dg/opt/pr96722.C
+ 4b753129b68995eae44509f12e5d1b7f  gcc/testsuite/g++.dg/opt/pr97315-1.C
+ 79549a33c6d768c44bac8faf72935e35  gcc/testsuite/g++.dg/opt/pr97767.C
+ 4ef3daa69807c9e8a0d77dc39f9f81d5  gcc/testsuite/g++.dg/opt/pr98130.C
  74487436d9724e422f05da3a16a1c6fe  gcc/testsuite/g++.dg/opt/pr98282.C
  8d0b947835b4a22ae10b582e5083ee6b  gcc/testsuite/g++.dg/opt/pr98353.C
+ 1feebed1bf569600f59cb65977c1a897  gcc/testsuite/g++.dg/opt/pr98403.C
+ f891e81674aaa6ff000b9d68221e0a78  gcc/testsuite/g++.dg/opt/pr98464.C
+ c0b1b7801571c037b0d819bb1b2fd897  gcc/testsuite/g++.dg/opt/pr98550.C
+ c053dc5cfc80e82d4a13e2b993212e58  gcc/testsuite/g++.dg/opt/pr98743.C
  4ac62e4a2244c1f9840d274f8c85a2d7  gcc/testsuite/g++.dg/opt/pr98834.C
  841b31767df25235634c79f15b505601  gcc/testsuite/g++.dg/opt/pr99034.C
+ ddf3cfcb6556d3f65d76b61d63c8f12d  gcc/testsuite/g++.dg/opt/pr99305.C
+ 458d1c1eb655d901fab6401cefc014fb  gcc/testsuite/g++.dg/opt/pr99456.C
  1451eba24eea82cbd0c1ab87885c0f77  gcc/testsuite/g++.dg/opt/preinc1.C
  0841088f825be785d32663d712ecf675  gcc/testsuite/g++.dg/opt/ptrintsum1.C
  8ceccf2f02b3f64f372600e32148e146  gcc/testsuite/g++.dg/opt/ptrmem1.C
*************** e269c16ecf97c6c4ed676a410b5ddf4a  gcc/te
*** 19102,19108 ****
  db27c1fd21ac905678bdd2950b920236  gcc/testsuite/g++.dg/opt/reg-stack4.C
  25e9962e240d8c8ed05cecb4820f38d3  gcc/testsuite/g++.dg/opt/reload1.C
  eea08af86e12b2945858317c96c4626e  gcc/testsuite/g++.dg/opt/reload2.C
! cc59a920019c5a1283b69a21d8bdd150  gcc/testsuite/g++.dg/opt/reload3.C
  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
--- 21146,21152 ----
  db27c1fd21ac905678bdd2950b920236  gcc/testsuite/g++.dg/opt/reg-stack4.C
  25e9962e240d8c8ed05cecb4820f38d3  gcc/testsuite/g++.dg/opt/reload1.C
  eea08af86e12b2945858317c96c4626e  gcc/testsuite/g++.dg/opt/reload2.C
! 956e06e814d6206eb0d5c45bb49e6d91  gcc/testsuite/g++.dg/opt/reload3.C
  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
*************** da113259afc60dbf3dd7e421650ce386  gcc/te
*** 19115,19121 ****
  e6a6097b4d5bd61ae38897f3b753019c  gcc/testsuite/g++.dg/opt/static5.C
  f8fa04e44f6fd70dc42a62899c9f64d6  gcc/testsuite/g++.dg/opt/static6.C
  a183aae17f1d8c8615291ebf7a5dc391  gcc/testsuite/g++.dg/opt/store-merging-1.C
! bdeac4f651cc766e9258a3e309a2e083  gcc/testsuite/g++.dg/opt/store-merging-2.C
  b7ff171a7ea369be5eef1fa7876f131e  gcc/testsuite/g++.dg/opt/store-merging-3.C
  12b141d678db6c6a275748357e7fc1d2  gcc/testsuite/g++.dg/opt/store-merging-4.C
  60be25e48eb621d1ff683d818d13b520  gcc/testsuite/g++.dg/opt/strength-reduce.C
--- 21159,21165 ----
  e6a6097b4d5bd61ae38897f3b753019c  gcc/testsuite/g++.dg/opt/static5.C
  f8fa04e44f6fd70dc42a62899c9f64d6  gcc/testsuite/g++.dg/opt/static6.C
  a183aae17f1d8c8615291ebf7a5dc391  gcc/testsuite/g++.dg/opt/store-merging-1.C
! 6252c7bf23bf186b1723587134a83a82  gcc/testsuite/g++.dg/opt/store-merging-2.C
  b7ff171a7ea369be5eef1fa7876f131e  gcc/testsuite/g++.dg/opt/store-merging-3.C
  12b141d678db6c6a275748357e7fc1d2  gcc/testsuite/g++.dg/opt/store-merging-4.C
  60be25e48eb621d1ff683d818d13b520  gcc/testsuite/g++.dg/opt/strength-reduce.C
*************** b7ff171a7ea369be5eef1fa7876f131e  gcc/te
*** 19124,19132 ****
  0cc8575163405751cafdeec02c836cfb  gcc/testsuite/g++.dg/opt/switch3.C
  3f7a508706743fec6408316af296cebd  gcc/testsuite/g++.dg/opt/switch4.C
  fef275baea684e27b49402e946869af7  gcc/testsuite/g++.dg/opt/temp1.C
! 3a03380a215b8d907bcfc208d09d5204  gcc/testsuite/g++.dg/opt/temp2.C
  0146d1b3727676ef281dada91e18ba91  gcc/testsuite/g++.dg/opt/template1.C
! 423a720c5d6fa9172e277e0cd1c91f34  gcc/testsuite/g++.dg/opt/thunk1.C
  178df7a1f97e8581d95b76bda27dc33d  gcc/testsuite/g++.dg/opt/thunk2.C
  755e2f574eb0074e3c8ebdeab001b832  gcc/testsuite/g++.dg/opt/thunk3-1.C
  f869a43935cc3631852fcb3f8e68ecfd  gcc/testsuite/g++.dg/opt/thunk3.C
--- 21168,21176 ----
  0cc8575163405751cafdeec02c836cfb  gcc/testsuite/g++.dg/opt/switch3.C
  3f7a508706743fec6408316af296cebd  gcc/testsuite/g++.dg/opt/switch4.C
  fef275baea684e27b49402e946869af7  gcc/testsuite/g++.dg/opt/temp1.C
! 87d1d236af929b10a19a096eb6a917be  gcc/testsuite/g++.dg/opt/temp2.C
  0146d1b3727676ef281dada91e18ba91  gcc/testsuite/g++.dg/opt/template1.C
! 81ebb860d684ee0d613b726acab6adc6  gcc/testsuite/g++.dg/opt/thunk1.C
  178df7a1f97e8581d95b76bda27dc33d  gcc/testsuite/g++.dg/opt/thunk2.C
  755e2f574eb0074e3c8ebdeab001b832  gcc/testsuite/g++.dg/opt/thunk3-1.C
  f869a43935cc3631852fcb3f8e68ecfd  gcc/testsuite/g++.dg/opt/thunk3.C
*************** c7f48544f74c23480e79a8c68b0ab1a8  gcc/te
*** 19145,19157 ****
  52fff29b07362fe5d23c4905a7595e39  gcc/testsuite/g++.dg/opt/vt3.C
  a0b34e9a729ff5b2181e421f2d8fb7c4  gcc/testsuite/g++.dg/opt/vt4.C
  57ab207fa6f8b3558759d13d1a56154e  gcc/testsuite/g++.dg/other/PR23205.C
! 6fee34d8b3b51c74ff33cdfe391ca591  gcc/testsuite/g++.dg/other/abstract1.C
! 5b3b01a17e4d701d6c3c5ef404bd8f57  gcc/testsuite/g++.dg/other/abstract2.C
  32f6a4ff28854973168944cb1ac27537  gcc/testsuite/g++.dg/other/abstract3.C
! 7ac72c1e4cfd61c68a7528160187b2f0  gcc/testsuite/g++.dg/other/abstract4.C
! df81d021f1adcf8dae661aa394aa2a89  gcc/testsuite/g++.dg/other/abstract5.C
  7f10e9e51c9dab9a3c9109c1c3e17f8f  gcc/testsuite/g++.dg/other/abstract6.C
  e6a4785ed0b7c7e727981cc2ee9613cb  gcc/testsuite/g++.dg/other/abstract7.C
  1952aeb9951f8c72a9b8ee8487e2991b  gcc/testsuite/g++.dg/other/access1.C
  82943bdfa7212d2f4f087a74983a7471  gcc/testsuite/g++.dg/other/access2.C
  9badaf0d3171514f4d628f2da49a35a9  gcc/testsuite/g++.dg/other/access3.C
--- 21189,21202 ----
  52fff29b07362fe5d23c4905a7595e39  gcc/testsuite/g++.dg/opt/vt3.C
  a0b34e9a729ff5b2181e421f2d8fb7c4  gcc/testsuite/g++.dg/opt/vt4.C
  57ab207fa6f8b3558759d13d1a56154e  gcc/testsuite/g++.dg/other/PR23205.C
! 3b2d6e520a67586ffdc3595ba397d91a  gcc/testsuite/g++.dg/other/abstract1.C
! f70708b0fe4401269dacc34ed85850e3  gcc/testsuite/g++.dg/other/abstract2.C
  32f6a4ff28854973168944cb1ac27537  gcc/testsuite/g++.dg/other/abstract3.C
! 3e7aeca400ef47f53151bd3c5364ffe6  gcc/testsuite/g++.dg/other/abstract4.C
! 6d36fb2ffed4c9b37e41161b3514ec79  gcc/testsuite/g++.dg/other/abstract5.C
  7f10e9e51c9dab9a3c9109c1c3e17f8f  gcc/testsuite/g++.dg/other/abstract6.C
  e6a4785ed0b7c7e727981cc2ee9613cb  gcc/testsuite/g++.dg/other/abstract7.C
+ 1d71451999123a2516894aa6244a77c2  gcc/testsuite/g++.dg/other/abstract8.C
  1952aeb9951f8c72a9b8ee8487e2991b  gcc/testsuite/g++.dg/other/access1.C
  82943bdfa7212d2f4f087a74983a7471  gcc/testsuite/g++.dg/other/access2.C
  9badaf0d3171514f4d628f2da49a35a9  gcc/testsuite/g++.dg/other/access3.C
*************** e7bda64a0fd9d0057a48814a978e1851  gcc/te
*** 19160,19169 ****
  a0196ebfddfdcb265613530b34c75302  gcc/testsuite/g++.dg/other/anon-union2.C
  662c11d709b6ca85c73287be5207f3ac  gcc/testsuite/g++.dg/other/anon-union3.C
  7ea92f81a45b2537512cf880ee35fe92  gcc/testsuite/g++.dg/other/anon-union4.C
  25bec11b40119085408d52eaa5b86f6e  gcc/testsuite/g++.dg/other/anon2.C
  ac03cab67f2c4f5731d36b19f2ee4f42  gcc/testsuite/g++.dg/other/anon3.C
  735bc52cab8eca56a711c2c10845c981  gcc/testsuite/g++.dg/other/anon4.C
! 3fede9e4cef5d5ca279556dc456ab16e  gcc/testsuite/g++.dg/other/anon5.C
  1c68df289b2577a8e2753eaf82704fed  gcc/testsuite/g++.dg/other/anon6.C
  6bdea0a90642ef923b08522ad0f6f67b  gcc/testsuite/g++.dg/other/anon7.C
  f282d7d63120a2f2e0ee707e7dd2fe1e  gcc/testsuite/g++.dg/other/anon8.C
--- 21205,21215 ----
  a0196ebfddfdcb265613530b34c75302  gcc/testsuite/g++.dg/other/anon-union2.C
  662c11d709b6ca85c73287be5207f3ac  gcc/testsuite/g++.dg/other/anon-union3.C
  7ea92f81a45b2537512cf880ee35fe92  gcc/testsuite/g++.dg/other/anon-union4.C
+ d0b5965b4982fc2453056380914a719f  gcc/testsuite/g++.dg/other/anon-union5.C
  25bec11b40119085408d52eaa5b86f6e  gcc/testsuite/g++.dg/other/anon2.C
  ac03cab67f2c4f5731d36b19f2ee4f42  gcc/testsuite/g++.dg/other/anon3.C
  735bc52cab8eca56a711c2c10845c981  gcc/testsuite/g++.dg/other/anon4.C
! 641a219149b93d616c99181899a7eb19  gcc/testsuite/g++.dg/other/anon5.C
  1c68df289b2577a8e2753eaf82704fed  gcc/testsuite/g++.dg/other/anon6.C
  6bdea0a90642ef923b08522ad0f6f67b  gcc/testsuite/g++.dg/other/anon7.C
  f282d7d63120a2f2e0ee707e7dd2fe1e  gcc/testsuite/g++.dg/other/anon8.C
*************** a7f642f46d2d9259194f51e24e5b9ee6  gcc/te
*** 19271,19277 ****
  882ae3374943737dff102fb18c1f0eee  gcc/testsuite/g++.dg/other/error20.C
  a2be38215425d44d563961ccb735829a  gcc/testsuite/g++.dg/other/error21.C
  f7bb8260b75f7cc0e622720e6eb02238  gcc/testsuite/g++.dg/other/error22.C
! 1f6df281a9ccdbb4a81481b9af525622  gcc/testsuite/g++.dg/other/error23.C
  2375c807ce0c075f1d59638a7f097b1b  gcc/testsuite/g++.dg/other/error24.C
  0d6d68d045e0c2ed1b27b9b14ec1b229  gcc/testsuite/g++.dg/other/error25.C
  95ef6ac826a8b7b9cb452a9280289ff8  gcc/testsuite/g++.dg/other/error26.C
--- 21317,21323 ----
  882ae3374943737dff102fb18c1f0eee  gcc/testsuite/g++.dg/other/error20.C
  a2be38215425d44d563961ccb735829a  gcc/testsuite/g++.dg/other/error21.C
  f7bb8260b75f7cc0e622720e6eb02238  gcc/testsuite/g++.dg/other/error22.C
! 10571abc216d388492c31697b31e7d94  gcc/testsuite/g++.dg/other/error23.C
  2375c807ce0c075f1d59638a7f097b1b  gcc/testsuite/g++.dg/other/error24.C
  0d6d68d045e0c2ed1b27b9b14ec1b229  gcc/testsuite/g++.dg/other/error25.C
  95ef6ac826a8b7b9cb452a9280289ff8  gcc/testsuite/g++.dg/other/error26.C
*************** fd41e2a884d224845fc1b776df3eb9bd  gcc/te
*** 19284,19290 ****
  c744ed5aaa2c2c1507e6c50193db38bb  gcc/testsuite/g++.dg/other/error32.C
  dc99910fb2d0aaf7a5c4306f76bad987  gcc/testsuite/g++.dg/other/error33.C
  f4020af99d5cd87e4e7dbd1bc9415ef9  gcc/testsuite/g++.dg/other/error34.C
! 366cca2fa3537b73e2cb2d8333a5f412  gcc/testsuite/g++.dg/other/error35.C
  82a7d9e64c93dc6a0cb8f8e5b33cb4b5  gcc/testsuite/g++.dg/other/error4.C
  2dc8fe3ed4586980f9360d1cf34c2a71  gcc/testsuite/g++.dg/other/error5.C
  211bf7afef91ced5b9f2bdf67115b606  gcc/testsuite/g++.dg/other/error6.C
--- 21330,21336 ----
  c744ed5aaa2c2c1507e6c50193db38bb  gcc/testsuite/g++.dg/other/error32.C
  dc99910fb2d0aaf7a5c4306f76bad987  gcc/testsuite/g++.dg/other/error33.C
  f4020af99d5cd87e4e7dbd1bc9415ef9  gcc/testsuite/g++.dg/other/error34.C
! f4ff66d3666148740eb666f07fc5155b  gcc/testsuite/g++.dg/other/error35.C
  82a7d9e64c93dc6a0cb8f8e5b33cb4b5  gcc/testsuite/g++.dg/other/error4.C
  2dc8fe3ed4586980f9360d1cf34c2a71  gcc/testsuite/g++.dg/other/error5.C
  211bf7afef91ced5b9f2bdf67115b606  gcc/testsuite/g++.dg/other/error6.C
*************** bc5371eb8e8dcf79efb0889828991560  gcc/te
*** 19326,19336 ****
  710d41055b4bb35ff1473bcd3c776607  gcc/testsuite/g++.dg/other/gc3.C
  88d3ce293bea84b74d7f26a42a8538fb  gcc/testsuite/g++.dg/other/gc4.C
  47195a1b7ad4c24c5ccc7cbf50e26bb0  gcc/testsuite/g++.dg/other/gc5.C
  3ca5017faf45f39326ff4e30a1ec1ba8  gcc/testsuite/g++.dg/other/i386-1.C
  9913a24914ce11f6a0606c70ed58cb96  gcc/testsuite/g++.dg/other/i386-10.C
  8925c3efd781e76570846cfd6f817fd2  gcc/testsuite/g++.dg/other/i386-11.C
! 4b4735255b7bc0e382a4a3006dde703a  gcc/testsuite/g++.dg/other/i386-2.C
! b461f0929de1ee7bc0428b6e7f24c47f  gcc/testsuite/g++.dg/other/i386-3.C
  a4ad4c2cb3c1448496351241a77aedb7  gcc/testsuite/g++.dg/other/i386-4.C
  a32a5af1b4c57aabcbdaa817835a698d  gcc/testsuite/g++.dg/other/i386-7.C
  b3ef431f4cf4776208d7042aff2ddb83  gcc/testsuite/g++.dg/other/i386-8.C
--- 21372,21384 ----
  710d41055b4bb35ff1473bcd3c776607  gcc/testsuite/g++.dg/other/gc3.C
  88d3ce293bea84b74d7f26a42a8538fb  gcc/testsuite/g++.dg/other/gc4.C
  47195a1b7ad4c24c5ccc7cbf50e26bb0  gcc/testsuite/g++.dg/other/gc5.C
+ a526cd2f6c0f7190ee33480a675c4cfc  gcc/testsuite/g++.dg/other/gc6.C
+ eda67a8394a25b381e47971e78264eba  gcc/testsuite/g++.dg/other/gc7.C
  3ca5017faf45f39326ff4e30a1ec1ba8  gcc/testsuite/g++.dg/other/i386-1.C
  9913a24914ce11f6a0606c70ed58cb96  gcc/testsuite/g++.dg/other/i386-10.C
  8925c3efd781e76570846cfd6f817fd2  gcc/testsuite/g++.dg/other/i386-11.C
! db8aca3c9d9b8318c58ee47494cb2c19  gcc/testsuite/g++.dg/other/i386-2.C
! 4c76b6a25ee613f5e0fd1a83e397e1d1  gcc/testsuite/g++.dg/other/i386-3.C
  a4ad4c2cb3c1448496351241a77aedb7  gcc/testsuite/g++.dg/other/i386-4.C
  a32a5af1b4c57aabcbdaa817835a698d  gcc/testsuite/g++.dg/other/i386-7.C
  b3ef431f4cf4776208d7042aff2ddb83  gcc/testsuite/g++.dg/other/i386-8.C
*************** f90c8d6149f32ba2d05926d185233e6f  gcc/te
*** 19354,19362 ****
  452d570f73a334919cfa670c983dc7af  gcc/testsuite/g++.dg/other/main3.C
  688ada87fb447bcc4f314e612d65b84b  gcc/testsuite/g++.dg/other/mmintrin.C
  6b0d71cb40f690a059f35fa91d64ee5f  gcc/testsuite/g++.dg/other/mult-stor1.C
! 34552611e0ea3221799b7ea6c572fbc0  gcc/testsuite/g++.dg/other/nested-extern-1.C
! 2d4374350b7c46b467d19f44539be761  gcc/testsuite/g++.dg/other/nested-extern-2.C
! 668a3b5ad920346b135fa852ca249d17  gcc/testsuite/g++.dg/other/nested-extern.cc
  215e6a764d31f0aa51c23be690b977f4  gcc/testsuite/g++.dg/other/new-size-type.C
  c0f07a710445638bf000415028b6640b  gcc/testsuite/g++.dg/other/new1.C
  19db1ddd1315d0e4c56dedc097a4416c  gcc/testsuite/g++.dg/other/new2.C
--- 21402,21411 ----
  452d570f73a334919cfa670c983dc7af  gcc/testsuite/g++.dg/other/main3.C
  688ada87fb447bcc4f314e612d65b84b  gcc/testsuite/g++.dg/other/mmintrin.C
  6b0d71cb40f690a059f35fa91d64ee5f  gcc/testsuite/g++.dg/other/mult-stor1.C
! ebb91c2b0072fbe70f09b0fb26a8cb70  gcc/testsuite/g++.dg/other/nested-extern-1.C
! d32079973d903931a6a5e3a3f13eb2c2  gcc/testsuite/g++.dg/other/nested-extern-1.cc
! 4f31f1d30f904a85f5b99f5ea9f4572d  gcc/testsuite/g++.dg/other/nested-extern-2.C
! 67c8b77f4a4a5c484f160eb030111205  gcc/testsuite/g++.dg/other/nested-extern-2.cc
  215e6a764d31f0aa51c23be690b977f4  gcc/testsuite/g++.dg/other/new-size-type.C
  c0f07a710445638bf000415028b6640b  gcc/testsuite/g++.dg/other/new1.C
  19db1ddd1315d0e4c56dedc097a4416c  gcc/testsuite/g++.dg/other/new2.C
*************** d1890389f5f562271d7e893ae4fd7589  gcc/te
*** 19375,19381 ****
  cac3a2322a3125e5a823dc9f229c758f  gcc/testsuite/g++.dg/other/opaque-1.C
  7a5dbd4caee5a237ac3f6d7a6f714ae4  gcc/testsuite/g++.dg/other/opaque-2.C
  65ca5d2233ccb3f4a0b5a56b450d91f9  gcc/testsuite/g++.dg/other/opaque-3.C
! e39ffc27c2cc367fb38574d001689277  gcc/testsuite/g++.dg/other/operator1.C
  5aee1ce1a5ded079aafc86ef8d346c95  gcc/testsuite/g++.dg/other/operator2.C
  da1ba255024d00bac0a97620f4ffaba7  gcc/testsuite/g++.dg/other/operator3.C
  983bbfea996145b298440ca410c9fb19  gcc/testsuite/g++.dg/other/operator4.C
--- 21424,21430 ----
  cac3a2322a3125e5a823dc9f229c758f  gcc/testsuite/g++.dg/other/opaque-1.C
  7a5dbd4caee5a237ac3f6d7a6f714ae4  gcc/testsuite/g++.dg/other/opaque-2.C
  65ca5d2233ccb3f4a0b5a56b450d91f9  gcc/testsuite/g++.dg/other/opaque-3.C
! 9bd2a3c1afdd7e84e6e2de30de18d305  gcc/testsuite/g++.dg/other/operator1.C
  5aee1ce1a5ded079aafc86ef8d346c95  gcc/testsuite/g++.dg/other/operator2.C
  da1ba255024d00bac0a97620f4ffaba7  gcc/testsuite/g++.dg/other/operator3.C
  983bbfea996145b298440ca410c9fb19  gcc/testsuite/g++.dg/other/operator4.C
*************** d135b9a72f0f848337f5db8cd4d42ca2  gcc/te
*** 19391,19397 ****
  de07ec93dc9f688d2fe2f33f07228d16  gcc/testsuite/g++.dg/other/pr28304.C
  daa3dd95dcf11dd94769cefae514e231  gcc/testsuite/g++.dg/other/pr28432.C
  48bde066b5a1f49cb245295c9709e82b  gcc/testsuite/g++.dg/other/pr29610.C
! 7c1a4ef9dd889bd9a64eeb9657827800  gcc/testsuite/g++.dg/other/pr31078.C
  0f2a7bff0be04943ce8d960d7d18c321  gcc/testsuite/g++.dg/other/pr33558-2.C
  cdb0690d5ccabd89d3f2a5358e496e8f  gcc/testsuite/g++.dg/other/pr33558.C
  47c3e5b8844cd1d867dcffd6b821201f  gcc/testsuite/g++.dg/other/pr33601.C
--- 21440,21446 ----
  de07ec93dc9f688d2fe2f33f07228d16  gcc/testsuite/g++.dg/other/pr28304.C
  daa3dd95dcf11dd94769cefae514e231  gcc/testsuite/g++.dg/other/pr28432.C
  48bde066b5a1f49cb245295c9709e82b  gcc/testsuite/g++.dg/other/pr29610.C
! be1a24b0d870b3d97b309bf9cf454383  gcc/testsuite/g++.dg/other/pr31078.C
  0f2a7bff0be04943ce8d960d7d18c321  gcc/testsuite/g++.dg/other/pr33558-2.C
  cdb0690d5ccabd89d3f2a5358e496e8f  gcc/testsuite/g++.dg/other/pr33558.C
  47c3e5b8844cd1d867dcffd6b821201f  gcc/testsuite/g++.dg/other/pr33601.C
*************** bbfdbf39dac3f32203388a2dad06f24a  gcc/te
*** 19418,19425 ****
  3f80d803f33ca352a2d86ba6db9d48fe  gcc/testsuite/g++.dg/other/pr49912.C
  ac3ba0e4d0da02a871ab3d83b9cc0bf2  gcc/testsuite/g++.dg/other/pr50212.C
  36a8c3554403443884b8a9901e71ac7e  gcc/testsuite/g++.dg/other/pr50464.C
! 32abf9d955e99055f4097b78694c63bf  gcc/testsuite/g++.dg/other/pr52048.C
! fabb6972aff6deb2bdad232c673e2652  gcc/testsuite/g++.dg/other/pr53574.C
  064314e5b4858c9dbb88aea445e7faae  gcc/testsuite/g++.dg/other/pr53811.C
  3897186c7463a8e2de39bcb048266ca4  gcc/testsuite/g++.dg/other/pr54300.C
  1c3d9bf135ffc7cc603bc74e12c322d8  gcc/testsuite/g++.dg/other/pr55073.C
--- 21467,21474 ----
  3f80d803f33ca352a2d86ba6db9d48fe  gcc/testsuite/g++.dg/other/pr49912.C
  ac3ba0e4d0da02a871ab3d83b9cc0bf2  gcc/testsuite/g++.dg/other/pr50212.C
  36a8c3554403443884b8a9901e71ac7e  gcc/testsuite/g++.dg/other/pr50464.C
! 7a4b5520ea7d06e8d32be2f8e928eb28  gcc/testsuite/g++.dg/other/pr52048.C
! a858eb635022d11c2de48befef4bc9c9  gcc/testsuite/g++.dg/other/pr53574.C
  064314e5b4858c9dbb88aea445e7faae  gcc/testsuite/g++.dg/other/pr53811.C
  3897186c7463a8e2de39bcb048266ca4  gcc/testsuite/g++.dg/other/pr54300.C
  1c3d9bf135ffc7cc603bc74e12c322d8  gcc/testsuite/g++.dg/other/pr55073.C
*************** e55644b29ef2ddb4f407f2db5d2d9134  gcc/te
*** 19450,19462 ****
  82a5633c4b93f75de45b869ecaed0e9b  gcc/testsuite/g++.dg/other/pr87398.C
  5f6ab4128e11120f688850f44d53ecaf  gcc/testsuite/g++.dg/other/pr87574.C
  df676a65c96d13e14bff94fbda29e6ef  gcc/testsuite/g++.dg/other/pr87916.C
! b1274127b8fc8016cc05daf9749df88a  gcc/testsuite/g++.dg/other/pr88187.C
  e716b31d86bef260a0d00fd877fbc9cf  gcc/testsuite/g++.dg/other/pr88568.C
  24ac76b9cd1e6471539e65dc34e63be3  gcc/testsuite/g++.dg/other/pr89560.C
  a0e823e69e02d21c09fddd6ef53d51e3  gcc/testsuite/g++.dg/other/pr89692.C
  64ff90efb0bd953cbcb7d0d41855c3b3  gcc/testsuite/g++.dg/other/pr92201.C
  7ef84cd9319380c6f6e3fae08246d66e  gcc/testsuite/g++.dg/other/pr94326.C
  141ea52566d65432ae8af0941e19572f  gcc/testsuite/g++.dg/other/pr94339.C
  2b96e0cda3aaa703c284fca6a0dd72c9  gcc/testsuite/g++.dg/other/pragma-re-1.C
  bdec0c9208af6ee3a9ab1f2c07d3ba19  gcc/testsuite/g++.dg/other/pragma-re-2.C
  f804e6064a0c7cd94d73f58ba8f6e5e0  gcc/testsuite/g++.dg/other/profile1.C
--- 21499,21512 ----
  82a5633c4b93f75de45b869ecaed0e9b  gcc/testsuite/g++.dg/other/pr87398.C
  5f6ab4128e11120f688850f44d53ecaf  gcc/testsuite/g++.dg/other/pr87574.C
  df676a65c96d13e14bff94fbda29e6ef  gcc/testsuite/g++.dg/other/pr87916.C
! 9ecd0075397474bd19d0304fcb545393  gcc/testsuite/g++.dg/other/pr88187.C
  e716b31d86bef260a0d00fd877fbc9cf  gcc/testsuite/g++.dg/other/pr88568.C
  24ac76b9cd1e6471539e65dc34e63be3  gcc/testsuite/g++.dg/other/pr89560.C
  a0e823e69e02d21c09fddd6ef53d51e3  gcc/testsuite/g++.dg/other/pr89692.C
  64ff90efb0bd953cbcb7d0d41855c3b3  gcc/testsuite/g++.dg/other/pr92201.C
  7ef84cd9319380c6f6e3fae08246d66e  gcc/testsuite/g++.dg/other/pr94326.C
  141ea52566d65432ae8af0941e19572f  gcc/testsuite/g++.dg/other/pr94339.C
+ 3db2eb8b4ba6c11f00978ab4a8a8a0a7  gcc/testsuite/g++.dg/other/pr95231.C
  2b96e0cda3aaa703c284fca6a0dd72c9  gcc/testsuite/g++.dg/other/pragma-re-1.C
  bdec0c9208af6ee3a9ab1f2c07d3ba19  gcc/testsuite/g++.dg/other/pragma-re-2.C
  f804e6064a0c7cd94d73f58ba8f6e5e0  gcc/testsuite/g++.dg/other/profile1.C
*************** f9ca50b6e63332cd9218b158f25436d8  gcc/te
*** 19497,19503 ****
  6312bd4cf43fd17e803778af8b1f2031  gcc/testsuite/g++.dg/other/switch1.C
  37c0f6f7c04f78d10db7b76974117a16  gcc/testsuite/g++.dg/other/switch2.C
  bb7141945a25ded3ef95f8a4fab53bff  gcc/testsuite/g++.dg/other/switch3.C
! 91ad29304eedabb4ad6a5d7287bc26b3  gcc/testsuite/g++.dg/other/switch4.C
  9bae0d01ef429f94e58c536f39c9ca7b  gcc/testsuite/g++.dg/other/synth1.C
  bbbc42226f302577b317dbefbed13e8a  gcc/testsuite/g++.dg/other/thunk1.C
  123a1d9e28482bdcbc8dda30bc694c21  gcc/testsuite/g++.dg/other/thunk2a.C
--- 21547,21553 ----
  6312bd4cf43fd17e803778af8b1f2031  gcc/testsuite/g++.dg/other/switch1.C
  37c0f6f7c04f78d10db7b76974117a16  gcc/testsuite/g++.dg/other/switch2.C
  bb7141945a25ded3ef95f8a4fab53bff  gcc/testsuite/g++.dg/other/switch3.C
! 6be2049d130249765f95acaa423811d7  gcc/testsuite/g++.dg/other/switch4.C
  9bae0d01ef429f94e58c536f39c9ca7b  gcc/testsuite/g++.dg/other/synth1.C
  bbbc42226f302577b317dbefbed13e8a  gcc/testsuite/g++.dg/other/thunk1.C
  123a1d9e28482bdcbc8dda30bc694c21  gcc/testsuite/g++.dg/other/thunk2a.C
*************** b71aeb26aa9311659d87b7de1be00dcc  gcc/te
*** 19541,19546 ****
--- 21591,21598 ----
  e549b742987ea4bf15156f2ff8b335da  gcc/testsuite/g++.dg/overload/builtin1.C
  3a79826fd499e94593a88f2c06436f3d  gcc/testsuite/g++.dg/overload/builtin2.C
  a0b8fd80bfd82adaa23c61a98df112fb  gcc/testsuite/g++.dg/overload/builtin3.C
+ 00a13b8822d521554dfc3d828c4b61bc  gcc/testsuite/g++.dg/overload/builtin4.C
+ 81a9a7dc5e05bdf48beb527ba53bf4fd  gcc/testsuite/g++.dg/overload/builtin5.C
  2808df88b455ae0dd789dc64c1e34b25  gcc/testsuite/g++.dg/overload/cond1.C
  5067a4c6731aae0336243d6867599e99  gcc/testsuite/g++.dg/overload/cond2.C
  a0940c624da881bbf5ac3c841243c409  gcc/testsuite/g++.dg/overload/conv-op1.C
*************** e5c64067fac4b9dcfc16ca552eabfc2c  gcc/te
*** 19576,19582 ****
  1b0fbab7d8f3687b841e09b252eb3654  gcc/testsuite/g++.dg/overload/new1.C
  0b2f9fcba5861b39ff227c1cbfa754b7  gcc/testsuite/g++.dg/overload/operator-star-1.C
  ffc2123ab343a779a615e519a991e1d9  gcc/testsuite/g++.dg/overload/operator1.C
! fba8bf477a1c53b74bf8cd875cf19fa9  gcc/testsuite/g++.dg/overload/operator2.C
  e28afd768a2d5516c9bb5a7357c72738  gcc/testsuite/g++.dg/overload/operator3.C
  dcdfcb2530eb653d4b7e6f556992d19d  gcc/testsuite/g++.dg/overload/operator4.C
  ecc217fd3257caf539a7d5322c023048  gcc/testsuite/g++.dg/overload/operator5.C
--- 21628,21634 ----
  1b0fbab7d8f3687b841e09b252eb3654  gcc/testsuite/g++.dg/overload/new1.C
  0b2f9fcba5861b39ff227c1cbfa754b7  gcc/testsuite/g++.dg/overload/operator-star-1.C
  ffc2123ab343a779a615e519a991e1d9  gcc/testsuite/g++.dg/overload/operator1.C
! db97393859300db8e109f09ae25eb7dd  gcc/testsuite/g++.dg/overload/operator2.C
  e28afd768a2d5516c9bb5a7357c72738  gcc/testsuite/g++.dg/overload/operator3.C
  dcdfcb2530eb653d4b7e6f556992d19d  gcc/testsuite/g++.dg/overload/operator4.C
  ecc217fd3257caf539a7d5322c023048  gcc/testsuite/g++.dg/overload/operator5.C
*************** f95f2ce9408aae34f003cb20506e3a38  gcc/te
*** 19612,19617 ****
--- 21664,21670 ----
  41352a2a4cc8c007e49113d208fc4fac  gcc/testsuite/g++.dg/parse/access1.C
  16ade0f8aea6447dcee481171623cf6b  gcc/testsuite/g++.dg/parse/access10.C
  540a07a7ab8558b0f45439640f7704e6  gcc/testsuite/g++.dg/parse/access11.C
+ 6046a3158ae016cd50c3a9dee9e2807a  gcc/testsuite/g++.dg/parse/access12.C
  f1ac82a9ba8ce5b8b202ad832e593845  gcc/testsuite/g++.dg/parse/access2.C
  752b3707237c1f83483b50a66bf06844  gcc/testsuite/g++.dg/parse/access3.C
  d15089685ef9bec1d6011e43465e0eb2  gcc/testsuite/g++.dg/parse/access4.C
*************** c51ee1846816a95e9af6e3d6b9e65695  gcc/te
*** 19646,19653 ****
  fc7bb3a300dd247cd39bd47963487340  gcc/testsuite/g++.dg/parse/attr-externally-visible-2.C
  d84032d5d61187d741ca91d1d16ee607  gcc/testsuite/g++.dg/parse/attr1.C
  3d4935439f09d7756194078a14580819  gcc/testsuite/g++.dg/parse/attr2.C
! a2620501321f8a5646f2c9de16693667  gcc/testsuite/g++.dg/parse/attr3.C
! 613c12af0cf7e6e2804b2bd04b2d2caf  gcc/testsuite/g++.dg/parse/attr4.C
  73272b6d0088d70ce32ad135b8b8bdd1  gcc/testsuite/g++.dg/parse/bitfield1.C
  44f7fcda1355d2713f1553e89b1837b8  gcc/testsuite/g++.dg/parse/bitfield2.C
  8ba3c4b4e1071c4bc6a0af4986fa5735  gcc/testsuite/g++.dg/parse/bitfield3.C
--- 21699,21706 ----
  fc7bb3a300dd247cd39bd47963487340  gcc/testsuite/g++.dg/parse/attr-externally-visible-2.C
  d84032d5d61187d741ca91d1d16ee607  gcc/testsuite/g++.dg/parse/attr1.C
  3d4935439f09d7756194078a14580819  gcc/testsuite/g++.dg/parse/attr2.C
! bb225cf58b6046362a2a5c266d668d71  gcc/testsuite/g++.dg/parse/attr3.C
! 9ca7ebe83672a0e3c639a4eff33fa711  gcc/testsuite/g++.dg/parse/attr4.C
  73272b6d0088d70ce32ad135b8b8bdd1  gcc/testsuite/g++.dg/parse/bitfield1.C
  44f7fcda1355d2713f1553e89b1837b8  gcc/testsuite/g++.dg/parse/bitfield2.C
  8ba3c4b4e1071c4bc6a0af4986fa5735  gcc/testsuite/g++.dg/parse/bitfield3.C
*************** c5147fdec1f8af57aa91c7960d61a37c  gcc/te
*** 19674,19684 ****
  8e7b288b4c83f50703e3121d871e7ca1  gcc/testsuite/g++.dg/parse/colon-autocorrect-2.C
  cc7bbad3182c61322827fb53d2c0de46  gcc/testsuite/g++.dg/parse/comma1.C
  7a61c8e71deeb5afa8198794ebdf7d32  gcc/testsuite/g++.dg/parse/comma2.C
! dd658e7c9733b60929540c19d338685e  gcc/testsuite/g++.dg/parse/concat1.C
  73b5fec6848a7932aba299c38c57d8ed  gcc/testsuite/g++.dg/parse/cond1.C
  5b95db4d3d95193611271dcf7d869fe5  gcc/testsuite/g++.dg/parse/cond2.C
  b43f54f7685ba9c6743e2c7a3cd0dd8d  gcc/testsuite/g++.dg/parse/cond3.C
! 2b89c868d5f6925718dfd16fdc5617c6  gcc/testsuite/g++.dg/parse/cond4.C
  66345f83d8ed0f9b1c9d5b8315c90b1e  gcc/testsuite/g++.dg/parse/cond5.C
  b0795e5b3f32e6bc74686a1b7a47cc0b  gcc/testsuite/g++.dg/parse/cond6.C
  3324118a038143e4211e8415c1ccfbb4  gcc/testsuite/g++.dg/parse/cond7.C
--- 21727,21737 ----
  8e7b288b4c83f50703e3121d871e7ca1  gcc/testsuite/g++.dg/parse/colon-autocorrect-2.C
  cc7bbad3182c61322827fb53d2c0de46  gcc/testsuite/g++.dg/parse/comma1.C
  7a61c8e71deeb5afa8198794ebdf7d32  gcc/testsuite/g++.dg/parse/comma2.C
! 4c4fb9d735c72b92a2a26f198f25d1e5  gcc/testsuite/g++.dg/parse/concat1.C
  73b5fec6848a7932aba299c38c57d8ed  gcc/testsuite/g++.dg/parse/cond1.C
  5b95db4d3d95193611271dcf7d869fe5  gcc/testsuite/g++.dg/parse/cond2.C
  b43f54f7685ba9c6743e2c7a3cd0dd8d  gcc/testsuite/g++.dg/parse/cond3.C
! 2ab01bbc129e64e9cf38a5d58331af01  gcc/testsuite/g++.dg/parse/cond4.C
  66345f83d8ed0f9b1c9d5b8315c90b1e  gcc/testsuite/g++.dg/parse/cond5.C
  b0795e5b3f32e6bc74686a1b7a47cc0b  gcc/testsuite/g++.dg/parse/cond6.C
  3324118a038143e4211e8415c1ccfbb4  gcc/testsuite/g++.dg/parse/cond7.C
*************** b4ad8051949ca376a6cc70a559e52951  gcc/te
*** 19692,19702 ****
  1f1ea9b1dfbfdad52826fde93326f9d6  gcc/testsuite/g++.dg/parse/constant6.C
  e773e9fc506890dda1d6fbb37fd77ae4  gcc/testsuite/g++.dg/parse/constant7.C
  8079503763f87550059a8ccbd0832bdd  gcc/testsuite/g++.dg/parse/constructor1.C
! 372cd66c0636977b2eaf4be6b4310a42  gcc/testsuite/g++.dg/parse/constructor2.C
  d9621983a7cb4db7ed484bed67203810  gcc/testsuite/g++.dg/parse/constructor3.C
  5a399fbfb7b6718be8ad9eb3ea24af68  gcc/testsuite/g++.dg/parse/conv_op1.C
  721a281ff33124a1c49ed8d68d2419fb  gcc/testsuite/g++.dg/parse/crash1.C
! 2af76aeb0c88a4458d4439db563e0893  gcc/testsuite/g++.dg/parse/crash10.C
  4435ac4f24fa5731340d43e4ff33bb31  gcc/testsuite/g++.dg/parse/crash11.C
  ba3ce4aeaf342d1d4f96b2f4eb0ce87a  gcc/testsuite/g++.dg/parse/crash12.C
  5ff7964a35afa4ce9e2420f621d97746  gcc/testsuite/g++.dg/parse/crash13.C
--- 21745,21755 ----
  1f1ea9b1dfbfdad52826fde93326f9d6  gcc/testsuite/g++.dg/parse/constant6.C
  e773e9fc506890dda1d6fbb37fd77ae4  gcc/testsuite/g++.dg/parse/constant7.C
  8079503763f87550059a8ccbd0832bdd  gcc/testsuite/g++.dg/parse/constructor1.C
! e92276350b0bdb1103bc329a38e10ac7  gcc/testsuite/g++.dg/parse/constructor2.C
  d9621983a7cb4db7ed484bed67203810  gcc/testsuite/g++.dg/parse/constructor3.C
  5a399fbfb7b6718be8ad9eb3ea24af68  gcc/testsuite/g++.dg/parse/conv_op1.C
  721a281ff33124a1c49ed8d68d2419fb  gcc/testsuite/g++.dg/parse/crash1.C
! 34cd5b83c8bcc14f4d86f10a3b62817a  gcc/testsuite/g++.dg/parse/crash10.C
  4435ac4f24fa5731340d43e4ff33bb31  gcc/testsuite/g++.dg/parse/crash11.C
  ba3ce4aeaf342d1d4f96b2f4eb0ce87a  gcc/testsuite/g++.dg/parse/crash12.C
  5ff7964a35afa4ce9e2420f621d97746  gcc/testsuite/g++.dg/parse/crash13.C
*************** ba3ce4aeaf342d1d4f96b2f4eb0ce87a  gcc/te
*** 19704,19710 ****
  a61247b0784709761dc6bf67cf0c5a0c  gcc/testsuite/g++.dg/parse/crash15.C
  1715d57823b1ff6a57385e3c29065708  gcc/testsuite/g++.dg/parse/crash16.C
  d8abd079d4556274ffc3d12c8558da15  gcc/testsuite/g++.dg/parse/crash17.C
! 59417db75a907524c7c380a22ed23ba8  gcc/testsuite/g++.dg/parse/crash18.C
  eb32a88d28a61859bc72ced3dd8d06d6  gcc/testsuite/g++.dg/parse/crash19.C
  763dc11e85b1839d0dbe23a9460bf2df  gcc/testsuite/g++.dg/parse/crash2.C
  b84d930c04ca612c1edfd721a6b22909  gcc/testsuite/g++.dg/parse/crash20.C
--- 21757,21763 ----
  a61247b0784709761dc6bf67cf0c5a0c  gcc/testsuite/g++.dg/parse/crash15.C
  1715d57823b1ff6a57385e3c29065708  gcc/testsuite/g++.dg/parse/crash16.C
  d8abd079d4556274ffc3d12c8558da15  gcc/testsuite/g++.dg/parse/crash17.C
! 49a92f03eafbb07b992e15e43a3faf01  gcc/testsuite/g++.dg/parse/crash18.C
  eb32a88d28a61859bc72ced3dd8d06d6  gcc/testsuite/g++.dg/parse/crash19.C
  763dc11e85b1839d0dbe23a9460bf2df  gcc/testsuite/g++.dg/parse/crash2.C
  b84d930c04ca612c1edfd721a6b22909  gcc/testsuite/g++.dg/parse/crash20.C
*************** ad522b1ad2583c4f8a4b7c1b0563b63d  gcc/te
*** 19714,19720 ****
  f82fb7e2ff5fb5225e6ca7b3298b1409  gcc/testsuite/g++.dg/parse/crash24.C
  284c9d1c6adc9ab8c728e9695edc40b9  gcc/testsuite/g++.dg/parse/crash25.C
  49ff4a07e8b55a4e75a25add1656211b  gcc/testsuite/g++.dg/parse/crash26.C
! 668499d14cf7bce476dba23762cb87c5  gcc/testsuite/g++.dg/parse/crash27.C
  13f84e278094b4130876743926689ceb  gcc/testsuite/g++.dg/parse/crash28.C
  b81fff544050c834b6a58605e98eb828  gcc/testsuite/g++.dg/parse/crash29.C
  1893d49612e9a07e189ba50eff994ac3  gcc/testsuite/g++.dg/parse/crash3.C
--- 21767,21773 ----
  f82fb7e2ff5fb5225e6ca7b3298b1409  gcc/testsuite/g++.dg/parse/crash24.C
  284c9d1c6adc9ab8c728e9695edc40b9  gcc/testsuite/g++.dg/parse/crash25.C
  49ff4a07e8b55a4e75a25add1656211b  gcc/testsuite/g++.dg/parse/crash26.C
! 197579e164c4faf980de90e49f1eca55  gcc/testsuite/g++.dg/parse/crash27.C
  13f84e278094b4130876743926689ceb  gcc/testsuite/g++.dg/parse/crash28.C
  b81fff544050c834b6a58605e98eb828  gcc/testsuite/g++.dg/parse/crash29.C
  1893d49612e9a07e189ba50eff994ac3  gcc/testsuite/g++.dg/parse/crash3.C
*************** b81fff544050c834b6a58605e98eb828  gcc/te
*** 19722,19729 ****
  3f377b1238236c8a670ec95bf9a0a396  gcc/testsuite/g++.dg/parse/crash31.C
  0387da9d39ca10d79a678d23662f5d0f  gcc/testsuite/g++.dg/parse/crash32.C
  d35a83b30077f54e9a04bed1c6946996  gcc/testsuite/g++.dg/parse/crash33.C
! 44bb2b0c8bcd18955a57cb24fc95e2ff  gcc/testsuite/g++.dg/parse/crash34.C
! 5194e08088db0ba805ec7f6468c6a749  gcc/testsuite/g++.dg/parse/crash35.C
  45cdd5263d466996ad8f4fa6719e2855  gcc/testsuite/g++.dg/parse/crash36.C
  a082e1ec4d2ff1d8b432964e3209d790  gcc/testsuite/g++.dg/parse/crash37.C
  4a7260e30600ec64262e39249bd74759  gcc/testsuite/g++.dg/parse/crash38.C
--- 21775,21782 ----
  3f377b1238236c8a670ec95bf9a0a396  gcc/testsuite/g++.dg/parse/crash31.C
  0387da9d39ca10d79a678d23662f5d0f  gcc/testsuite/g++.dg/parse/crash32.C
  d35a83b30077f54e9a04bed1c6946996  gcc/testsuite/g++.dg/parse/crash33.C
! f824d66de93483bee5f6f7609bdc615b  gcc/testsuite/g++.dg/parse/crash34.C
! 4710961d5387de13a4075a9bd78ecb4e  gcc/testsuite/g++.dg/parse/crash35.C
  45cdd5263d466996ad8f4fa6719e2855  gcc/testsuite/g++.dg/parse/crash36.C
  a082e1ec4d2ff1d8b432964e3209d790  gcc/testsuite/g++.dg/parse/crash37.C
  4a7260e30600ec64262e39249bd74759  gcc/testsuite/g++.dg/parse/crash38.C
*************** dc0f5d9180d0b99a7fb9e42ce24cc0d2  gcc/te
*** 19742,19755 ****
  ec70b335d5e3257c01119d789272f9f1  gcc/testsuite/g++.dg/parse/crash5.C
  e49f65c7e6e2821e630cacc1e09ae350  gcc/testsuite/g++.dg/parse/crash50.C
  4cf7d5674d2dcd5c3ed5f2b0314b425d  gcc/testsuite/g++.dg/parse/crash51.C
! 5f07107c9f99fbf5a60fd8c4a755fba1  gcc/testsuite/g++.dg/parse/crash52.C
  bb6ac4a17ab02af350881f64213ce26e  gcc/testsuite/g++.dg/parse/crash53.C
  89608ec2e140e06e734f5122f389e91a  gcc/testsuite/g++.dg/parse/crash54.C
! 97eb738614a951923ff07df519522e5c  gcc/testsuite/g++.dg/parse/crash55.C
  28ddbaa14692a16c706c5c2beb55f24b  gcc/testsuite/g++.dg/parse/crash56.C
  6fc258bb800a72857ca75dc2832d771d  gcc/testsuite/g++.dg/parse/crash57.C
  71b15313ba16339bb71e8e5d55013108  gcc/testsuite/g++.dg/parse/crash58.C
! 28cfa1a043f913bce4272a36002fca8a  gcc/testsuite/g++.dg/parse/crash59.C
  3cae354cb01ecb5097fe78c4d17c8ccd  gcc/testsuite/g++.dg/parse/crash6.C
  42e40332697734bbf2a5f363a0412b58  gcc/testsuite/g++.dg/parse/crash60.C
  56df7e2152fccb934ef7891103aa596f  gcc/testsuite/g++.dg/parse/crash61.C
--- 21795,21808 ----
  ec70b335d5e3257c01119d789272f9f1  gcc/testsuite/g++.dg/parse/crash5.C
  e49f65c7e6e2821e630cacc1e09ae350  gcc/testsuite/g++.dg/parse/crash50.C
  4cf7d5674d2dcd5c3ed5f2b0314b425d  gcc/testsuite/g++.dg/parse/crash51.C
! fce92d0b2434297dd51f1b3a28fc1fc4  gcc/testsuite/g++.dg/parse/crash52.C
  bb6ac4a17ab02af350881f64213ce26e  gcc/testsuite/g++.dg/parse/crash53.C
  89608ec2e140e06e734f5122f389e91a  gcc/testsuite/g++.dg/parse/crash54.C
! f3924301e9a75e88ee237b6baeb316be  gcc/testsuite/g++.dg/parse/crash55.C
  28ddbaa14692a16c706c5c2beb55f24b  gcc/testsuite/g++.dg/parse/crash56.C
  6fc258bb800a72857ca75dc2832d771d  gcc/testsuite/g++.dg/parse/crash57.C
  71b15313ba16339bb71e8e5d55013108  gcc/testsuite/g++.dg/parse/crash58.C
! 49cd738f848a028194aa372d70eff8b6  gcc/testsuite/g++.dg/parse/crash59.C
  3cae354cb01ecb5097fe78c4d17c8ccd  gcc/testsuite/g++.dg/parse/crash6.C
  42e40332697734bbf2a5f363a0412b58  gcc/testsuite/g++.dg/parse/crash60.C
  56df7e2152fccb934ef7891103aa596f  gcc/testsuite/g++.dg/parse/crash61.C
*************** bb6ac4a17ab02af350881f64213ce26e  gcc/te
*** 19758,19764 ****
  9780b0576f8f381caa012fd27c2b608b  gcc/testsuite/g++.dg/parse/crash64.C
  3fae4596904aa2d63a517ea2ea3ed98a  gcc/testsuite/g++.dg/parse/crash65.C
  07930e0dbd20d96ea69be3ee056c6870  gcc/testsuite/g++.dg/parse/crash66.C
! d2a1c0aeebb2a24b610c23275c77d0b4  gcc/testsuite/g++.dg/parse/crash67.C
  781c7565551294a35c28556fa0b0f31d  gcc/testsuite/g++.dg/parse/crash68.C
  9d029e464a093503e2921a501a313118  gcc/testsuite/g++.dg/parse/crash69.C
  34393b72e5dec85fca930dee15e2f669  gcc/testsuite/g++.dg/parse/crash7.C
--- 21811,21817 ----
  9780b0576f8f381caa012fd27c2b608b  gcc/testsuite/g++.dg/parse/crash64.C
  3fae4596904aa2d63a517ea2ea3ed98a  gcc/testsuite/g++.dg/parse/crash65.C
  07930e0dbd20d96ea69be3ee056c6870  gcc/testsuite/g++.dg/parse/crash66.C
! 303163720fef6882450eaccce136da0c  gcc/testsuite/g++.dg/parse/crash67.C
  781c7565551294a35c28556fa0b0f31d  gcc/testsuite/g++.dg/parse/crash68.C
  9d029e464a093503e2921a501a313118  gcc/testsuite/g++.dg/parse/crash69.C
  34393b72e5dec85fca930dee15e2f669  gcc/testsuite/g++.dg/parse/crash7.C
*************** d2a1c0aeebb2a24b610c23275c77d0b4  gcc/te
*** 19768,19774 ****
  5940e29a523673e2c47048c21c11d678  gcc/testsuite/g++.dg/parse/ctor1.C
  6a4d22d64949d622a19d9e79684aad65  gcc/testsuite/g++.dg/parse/ctor10.C
  31da095055ef151d5be0868d53a4bdcb  gcc/testsuite/g++.dg/parse/ctor2.C
! b3490a1d11f612825f12c98d6c08c3cc  gcc/testsuite/g++.dg/parse/ctor3.C
  c98adb0de8743928eaf1466baf071cbf  gcc/testsuite/g++.dg/parse/ctor4.C
  38f499b6bc73e7a54e6e1dd10ff2bf15  gcc/testsuite/g++.dg/parse/ctor5.C
  029f99332fa546e28fc0e5a825a5db37  gcc/testsuite/g++.dg/parse/ctor6.C
--- 21821,21827 ----
  5940e29a523673e2c47048c21c11d678  gcc/testsuite/g++.dg/parse/ctor1.C
  6a4d22d64949d622a19d9e79684aad65  gcc/testsuite/g++.dg/parse/ctor10.C
  31da095055ef151d5be0868d53a4bdcb  gcc/testsuite/g++.dg/parse/ctor2.C
! 851ffd08face1b11f5eff629189ea51e  gcc/testsuite/g++.dg/parse/ctor3.C
  c98adb0de8743928eaf1466baf071cbf  gcc/testsuite/g++.dg/parse/ctor4.C
  38f499b6bc73e7a54e6e1dd10ff2bf15  gcc/testsuite/g++.dg/parse/ctor5.C
  029f99332fa546e28fc0e5a825a5db37  gcc/testsuite/g++.dg/parse/ctor6.C
*************** c4144e09bf19fa4b0932506c5eb3e8ee  gcc/te
*** 19786,19795 ****
  010df34c714b830e2adbcaf95afdec27  gcc/testsuite/g++.dg/parse/defarg14.C
  940fdfa84af569b5525f54e635438b5b  gcc/testsuite/g++.dg/parse/defarg15.C
  10563fde273c2fb4f6e0c4a5a9f5b387  gcc/testsuite/g++.dg/parse/defarg16.C
  1bff48df8c11aeda15e3471bf1a33226  gcc/testsuite/g++.dg/parse/defarg2.C
  09fddda5e825bb04b1493087728c9162  gcc/testsuite/g++.dg/parse/defarg3.C
  0385e46623d8f7f6c4993e05a03c73fd  gcc/testsuite/g++.dg/parse/defarg4.C
! bdbfe5453980b13fed6df11afd4e2141  gcc/testsuite/g++.dg/parse/defarg5.C
  678f064b5748e2170b7cde4ce0fd5c70  gcc/testsuite/g++.dg/parse/defarg6.C
  df79a42075eeb5573f55e49dcd6c933e  gcc/testsuite/g++.dg/parse/defarg7.C
  2ddc96ad19034a90f65c85271f14ae72  gcc/testsuite/g++.dg/parse/defarg8.C
--- 21839,21849 ----
  010df34c714b830e2adbcaf95afdec27  gcc/testsuite/g++.dg/parse/defarg14.C
  940fdfa84af569b5525f54e635438b5b  gcc/testsuite/g++.dg/parse/defarg15.C
  10563fde273c2fb4f6e0c4a5a9f5b387  gcc/testsuite/g++.dg/parse/defarg16.C
+ 2b9f9e058b527917bc68c93c960d7e24  gcc/testsuite/g++.dg/parse/defarg17.C
  1bff48df8c11aeda15e3471bf1a33226  gcc/testsuite/g++.dg/parse/defarg2.C
  09fddda5e825bb04b1493087728c9162  gcc/testsuite/g++.dg/parse/defarg3.C
  0385e46623d8f7f6c4993e05a03c73fd  gcc/testsuite/g++.dg/parse/defarg4.C
! 3dd23b6818ff46d947d8229efad73d5c  gcc/testsuite/g++.dg/parse/defarg5.C
  678f064b5748e2170b7cde4ce0fd5c70  gcc/testsuite/g++.dg/parse/defarg6.C
  df79a42075eeb5573f55e49dcd6c933e  gcc/testsuite/g++.dg/parse/defarg7.C
  2ddc96ad19034a90f65c85271f14ae72  gcc/testsuite/g++.dg/parse/defarg8.C
*************** a406f4dfcc4d1199effdd47c1f57d137  gcc/te
*** 19799,19805 ****
  c8d90b5459dbdf7bf29e5b2a79f38d17  gcc/testsuite/g++.dg/parse/dtor1.C
  23c806ba9e6196854cbbb11ad8950882  gcc/testsuite/g++.dg/parse/dtor10.C
  a575cbd3d6c23d5f2fda52ee2477968e  gcc/testsuite/g++.dg/parse/dtor11.C
! 2d72f9efae372fbca9d31f234d0395c1  gcc/testsuite/g++.dg/parse/dtor12.C
  7631561059875a1e55d895f731f35a00  gcc/testsuite/g++.dg/parse/dtor13.C
  ced832c704713d5dd4581483a10c8a33  gcc/testsuite/g++.dg/parse/dtor14.C
  784814c1cb95ee4da37b2ff4009fc31b  gcc/testsuite/g++.dg/parse/dtor15.C
--- 21853,21859 ----
  c8d90b5459dbdf7bf29e5b2a79f38d17  gcc/testsuite/g++.dg/parse/dtor1.C
  23c806ba9e6196854cbbb11ad8950882  gcc/testsuite/g++.dg/parse/dtor10.C
  a575cbd3d6c23d5f2fda52ee2477968e  gcc/testsuite/g++.dg/parse/dtor11.C
! cc71949aad97ab6e041afb09a9b64dbd  gcc/testsuite/g++.dg/parse/dtor12.C
  7631561059875a1e55d895f731f35a00  gcc/testsuite/g++.dg/parse/dtor13.C
  ced832c704713d5dd4581483a10c8a33  gcc/testsuite/g++.dg/parse/dtor14.C
  784814c1cb95ee4da37b2ff4009fc31b  gcc/testsuite/g++.dg/parse/dtor15.C
*************** ced832c704713d5dd4581483a10c8a33  gcc/te
*** 19807,19813 ****
  836b38edb2c6c3669f71f87e64fe7f27  gcc/testsuite/g++.dg/parse/dtor17.C
  1d7ced46ba93cd282dde965b7f3d48b1  gcc/testsuite/g++.dg/parse/dtor2.C
  558fe9b75c7e9893083e871d54fbf811  gcc/testsuite/g++.dg/parse/dtor3.C
! 0e5bfee2fe061692451a1e06a97362d4  gcc/testsuite/g++.dg/parse/dtor4.C
  68a13da7bcec55954cbe2e2f02f9f4bc  gcc/testsuite/g++.dg/parse/dtor5.C
  4f0008153fab4493cc20d14cc321950d  gcc/testsuite/g++.dg/parse/dtor6.C
  a2852b8a5379f2ca58b9cfa5f41e4baf  gcc/testsuite/g++.dg/parse/dtor7.C
--- 21861,21867 ----
  836b38edb2c6c3669f71f87e64fe7f27  gcc/testsuite/g++.dg/parse/dtor17.C
  1d7ced46ba93cd282dde965b7f3d48b1  gcc/testsuite/g++.dg/parse/dtor2.C
  558fe9b75c7e9893083e871d54fbf811  gcc/testsuite/g++.dg/parse/dtor3.C
! 4fc72c1b50a7285abb8cd83c84900825  gcc/testsuite/g++.dg/parse/dtor4.C
  68a13da7bcec55954cbe2e2f02f9f4bc  gcc/testsuite/g++.dg/parse/dtor5.C
  4f0008153fab4493cc20d14cc321950d  gcc/testsuite/g++.dg/parse/dtor6.C
  a2852b8a5379f2ca58b9cfa5f41e4baf  gcc/testsuite/g++.dg/parse/dtor7.C
*************** fc78fe78fba2427e541a1c8d2cb5fa07  gcc/te
*** 19837,19846 ****
  a64e620ac0df90a741fe0e470ee25a52  gcc/testsuite/g++.dg/parse/error-column.C
  0f041c482da9fb63f8ffc054da4ca736  gcc/testsuite/g++.dg/parse/error1.C
  1b426326d733469340c3dd64f9c16e00  gcc/testsuite/g++.dg/parse/error10.C
! 5aa114d6002c04c3be5a435f41b03334  gcc/testsuite/g++.dg/parse/error11.C
  278d07900414689dd3933c8bce314e1c  gcc/testsuite/g++.dg/parse/error12.C
  60381da056d6f2263f2135ad61e209f3  gcc/testsuite/g++.dg/parse/error13.C
! 2a46b8b4619c2013dc77a36f411b845c  gcc/testsuite/g++.dg/parse/error14.C
  8b6e5341ef7a19631a09747f796b658e  gcc/testsuite/g++.dg/parse/error15.C
  97abee8a23c7425d9e7919660662b547  gcc/testsuite/g++.dg/parse/error16.C
  668d56e7078acbf69608349771886f88  gcc/testsuite/g++.dg/parse/error17.C
--- 21891,21900 ----
  a64e620ac0df90a741fe0e470ee25a52  gcc/testsuite/g++.dg/parse/error-column.C
  0f041c482da9fb63f8ffc054da4ca736  gcc/testsuite/g++.dg/parse/error1.C
  1b426326d733469340c3dd64f9c16e00  gcc/testsuite/g++.dg/parse/error10.C
! 90083c58894cc9db8d64137c7e6375d9  gcc/testsuite/g++.dg/parse/error11.C
  278d07900414689dd3933c8bce314e1c  gcc/testsuite/g++.dg/parse/error12.C
  60381da056d6f2263f2135ad61e209f3  gcc/testsuite/g++.dg/parse/error13.C
! 7b011fafeff06fb944a50de43f8b7d0e  gcc/testsuite/g++.dg/parse/error14.C
  8b6e5341ef7a19631a09747f796b658e  gcc/testsuite/g++.dg/parse/error15.C
  97abee8a23c7425d9e7919660662b547  gcc/testsuite/g++.dg/parse/error16.C
  668d56e7078acbf69608349771886f88  gcc/testsuite/g++.dg/parse/error17.C
*************** b14e8b97a8342f70111f73990af8baef  gcc/te
*** 19861,19874 ****
  2ae7ac29f23156097f82fbafc938565b  gcc/testsuite/g++.dg/parse/error30.C
  4253299be031aa184372343d76b84d72  gcc/testsuite/g++.dg/parse/error31.C
  81aaf9f86b7cb492ef66ae73654e62f7  gcc/testsuite/g++.dg/parse/error32.C
! 7a93dd107ad88a0c6f42c28466e2581e  gcc/testsuite/g++.dg/parse/error33.C
  aa5cf2a4e64629f94de3077bdf380a72  gcc/testsuite/g++.dg/parse/error34.C
  adbc0dcb8db3dcf042a3fc8340a835ef  gcc/testsuite/g++.dg/parse/error35.C
  bc676204e93dcf8837534e35a5bed395  gcc/testsuite/g++.dg/parse/error36.C
  882092dbe71ac5ba94aa530da454dca1  gcc/testsuite/g++.dg/parse/error37.C
  a5c4f0b49b0574ea999f9047daeea726  gcc/testsuite/g++.dg/parse/error38.C
  9ce4240430acb6de0c83e5272759d9b2  gcc/testsuite/g++.dg/parse/error39.C
! 36675870861df04d64c29e077ffed5ad  gcc/testsuite/g++.dg/parse/error4.C
  2feadf6bf5d6879bdff0beec6d842793  gcc/testsuite/g++.dg/parse/error40.C
  af8f049fbe98d54c80fc13d2e22b4245  gcc/testsuite/g++.dg/parse/error41.C
  39e6dd88ac530577aaf1363d98ffd541  gcc/testsuite/g++.dg/parse/error42.C
--- 21915,21928 ----
  2ae7ac29f23156097f82fbafc938565b  gcc/testsuite/g++.dg/parse/error30.C
  4253299be031aa184372343d76b84d72  gcc/testsuite/g++.dg/parse/error31.C
  81aaf9f86b7cb492ef66ae73654e62f7  gcc/testsuite/g++.dg/parse/error32.C
! 29e0fb0205aa305fb6c13cb45b7e5a0b  gcc/testsuite/g++.dg/parse/error33.C
  aa5cf2a4e64629f94de3077bdf380a72  gcc/testsuite/g++.dg/parse/error34.C
  adbc0dcb8db3dcf042a3fc8340a835ef  gcc/testsuite/g++.dg/parse/error35.C
  bc676204e93dcf8837534e35a5bed395  gcc/testsuite/g++.dg/parse/error36.C
  882092dbe71ac5ba94aa530da454dca1  gcc/testsuite/g++.dg/parse/error37.C
  a5c4f0b49b0574ea999f9047daeea726  gcc/testsuite/g++.dg/parse/error38.C
  9ce4240430acb6de0c83e5272759d9b2  gcc/testsuite/g++.dg/parse/error39.C
! 2f8e6fdba7c0161f0c3b4ee4d7fa2261  gcc/testsuite/g++.dg/parse/error4.C
  2feadf6bf5d6879bdff0beec6d842793  gcc/testsuite/g++.dg/parse/error40.C
  af8f049fbe98d54c80fc13d2e22b4245  gcc/testsuite/g++.dg/parse/error41.C
  39e6dd88ac530577aaf1363d98ffd541  gcc/testsuite/g++.dg/parse/error42.C
*************** e239b71c7990da088bcfd31703f60698  gcc/te
*** 19878,19891 ****
  8de67eff0c50f1a370fb7fc74fe6fae5  gcc/testsuite/g++.dg/parse/error47.C
  ddffe8f7dd326eb80b3046802a0d21bd  gcc/testsuite/g++.dg/parse/error48.C
  292376e2be24a46ea252920cf5da636f  gcc/testsuite/g++.dg/parse/error49.C
! e8ee97100204f4165dcac5fcd2ad6444  gcc/testsuite/g++.dg/parse/error5.C
  0ba6ce1df5478883d60be213063c00e2  gcc/testsuite/g++.dg/parse/error50.C
  bba782461d9063d3de581fbf5e046e4d  gcc/testsuite/g++.dg/parse/error51.C
  ca37cf225f4eaf29edd1f2bc4394b03d  gcc/testsuite/g++.dg/parse/error52.C
  eccd002c3598e3bb16e3d70bf745fb7c  gcc/testsuite/g++.dg/parse/error53.C
  eed70889be27b9442f89ed3e60063c22  gcc/testsuite/g++.dg/parse/error54.C
  179fe99eaadef5f7d5b40cf1ed576380  gcc/testsuite/g++.dg/parse/error55.C
! 3164b541239b0a998f99dcf0c3e487e7  gcc/testsuite/g++.dg/parse/error56.C
  78aabb3fd9ccbbc7a699352db0420c52  gcc/testsuite/g++.dg/parse/error57.C
  deb25ba4bd4f0a3257c6f7a5c680ae1d  gcc/testsuite/g++.dg/parse/error58.C
  c3815b12d6adb1ac6f7c8f2379deb21d  gcc/testsuite/g++.dg/parse/error59.C
--- 21932,21945 ----
  8de67eff0c50f1a370fb7fc74fe6fae5  gcc/testsuite/g++.dg/parse/error47.C
  ddffe8f7dd326eb80b3046802a0d21bd  gcc/testsuite/g++.dg/parse/error48.C
  292376e2be24a46ea252920cf5da636f  gcc/testsuite/g++.dg/parse/error49.C
! 66d3d6d632d88d9018e5e0183265f863  gcc/testsuite/g++.dg/parse/error5.C
  0ba6ce1df5478883d60be213063c00e2  gcc/testsuite/g++.dg/parse/error50.C
  bba782461d9063d3de581fbf5e046e4d  gcc/testsuite/g++.dg/parse/error51.C
  ca37cf225f4eaf29edd1f2bc4394b03d  gcc/testsuite/g++.dg/parse/error52.C
  eccd002c3598e3bb16e3d70bf745fb7c  gcc/testsuite/g++.dg/parse/error53.C
  eed70889be27b9442f89ed3e60063c22  gcc/testsuite/g++.dg/parse/error54.C
  179fe99eaadef5f7d5b40cf1ed576380  gcc/testsuite/g++.dg/parse/error55.C
! 8b9ec16ec1281a05f6e584078788306c  gcc/testsuite/g++.dg/parse/error56.C
  78aabb3fd9ccbbc7a699352db0420c52  gcc/testsuite/g++.dg/parse/error57.C
  deb25ba4bd4f0a3257c6f7a5c680ae1d  gcc/testsuite/g++.dg/parse/error58.C
  c3815b12d6adb1ac6f7c8f2379deb21d  gcc/testsuite/g++.dg/parse/error59.C
*************** c3815b12d6adb1ac6f7c8f2379deb21d  gcc/te
*** 19893,19898 ****
--- 21947,21953 ----
  026aaa79a36259f6c4f9cd79bc47cd46  gcc/testsuite/g++.dg/parse/error60.C
  1770bd4111f50f08d153011b97e0ee41  gcc/testsuite/g++.dg/parse/error61.C
  1c27b0becdebc68ee67aaab409111d9b  gcc/testsuite/g++.dg/parse/error62.C
+ 39157b5f9d86e45cb8d1abe69a66ad29  gcc/testsuite/g++.dg/parse/error63.C
  69f9cb5c7beb27587f6ec060eeafc314  gcc/testsuite/g++.dg/parse/error7.C
  a9b4e068ec9bd53e03eab1f20b49779f  gcc/testsuite/g++.dg/parse/error8.C
  645fd7881b9edb38e573c6cc40ee26e9  gcc/testsuite/g++.dg/parse/error9.C
*************** e8e9b52687fc710dc5ded14930091f3f  gcc/te
*** 19930,19936 ****
  9326901f7db3032f59fb639815b474a6  gcc/testsuite/g++.dg/parse/inline1.C
  8a358f275adc3c09077b41c1f5d592a5  gcc/testsuite/g++.dg/parse/int-as-enum1.C
  c12d9155fd8f8a30342ccfa522a9b569  gcc/testsuite/g++.dg/parse/invalid-op1.C
! adf76cb1d4d3208a2d576a5bb3e80973  gcc/testsuite/g++.dg/parse/invalid1.C
  a2fa8a0dd7deb88a1e01c25b61d481cf  gcc/testsuite/g++.dg/parse/ivdep-2.C
  2d53558cac722f5823796f1f2f7b4b48  gcc/testsuite/g++.dg/parse/ivdep-3.C
  69b33deb6f06bb118a45d7839cc58fbd  gcc/testsuite/g++.dg/parse/ivdep.C
--- 21985,21991 ----
  9326901f7db3032f59fb639815b474a6  gcc/testsuite/g++.dg/parse/inline1.C
  8a358f275adc3c09077b41c1f5d592a5  gcc/testsuite/g++.dg/parse/int-as-enum1.C
  c12d9155fd8f8a30342ccfa522a9b569  gcc/testsuite/g++.dg/parse/invalid-op1.C
! 6497ede08b383a50f75d2dbd0b91a2cc  gcc/testsuite/g++.dg/parse/invalid1.C
  a2fa8a0dd7deb88a1e01c25b61d481cf  gcc/testsuite/g++.dg/parse/ivdep-2.C
  2d53558cac722f5823796f1f2f7b4b48  gcc/testsuite/g++.dg/parse/ivdep-3.C
  69b33deb6f06bb118a45d7839cc58fbd  gcc/testsuite/g++.dg/parse/ivdep.C
*************** e91f3d3016e1e200ebed1193330b5657  gcc/te
*** 20001,20007 ****
  8a4367896acda2c1db8e321d02d4aa92  gcc/testsuite/g++.dg/parse/operator7.C
  90d5ee3d87668accad2338969cd780c5  gcc/testsuite/g++.dg/parse/operator8.C
  97df02de60afc1c8121f12444de25a1a  gcc/testsuite/g++.dg/parse/operator9.C
! b8b60c6b3d20bc77c7acd224354d653f  gcc/testsuite/g++.dg/parse/parameter-declaration-1.C
  e3ddebbe6b42d002375e551ea770cbdf  gcc/testsuite/g++.dg/parse/parameter-declaration-2.C
  de20c30d40f4cceef57124b5828bf816  gcc/testsuite/g++.dg/parse/parens1.C
  0f3dcfdbce26ce78daa93488bd7ef0a1  gcc/testsuite/g++.dg/parse/parens2.C
--- 22056,22062 ----
  8a4367896acda2c1db8e321d02d4aa92  gcc/testsuite/g++.dg/parse/operator7.C
  90d5ee3d87668accad2338969cd780c5  gcc/testsuite/g++.dg/parse/operator8.C
  97df02de60afc1c8121f12444de25a1a  gcc/testsuite/g++.dg/parse/operator9.C
! 41d922b04756465eee24d19696666566  gcc/testsuite/g++.dg/parse/parameter-declaration-1.C
  e3ddebbe6b42d002375e551ea770cbdf  gcc/testsuite/g++.dg/parse/parameter-declaration-2.C
  de20c30d40f4cceef57124b5828bf816  gcc/testsuite/g++.dg/parse/parens1.C
  0f3dcfdbce26ce78daa93488bd7ef0a1  gcc/testsuite/g++.dg/parse/parens2.C
*************** a14487514c96c75316c03639ab23dab9  gcc/te
*** 20015,20022 ****
  c203de39cbb4bd246d0e315aa6662a15  gcc/testsuite/g++.dg/parse/parse7.C
  3dc9f90d48dd411fea57be7de299a941  gcc/testsuite/g++.dg/parse/parser-pr14875-2.C
  ce5771924fa5fd60b270c30c11bee489  gcc/testsuite/g++.dg/parse/parser-pr14875.C
! 60f356cbf87c5217242b01cb3ba5973d  gcc/testsuite/g++.dg/parse/parser-pr28152-2.C
! 513992280ea99f218cc3d5a0156a57e3  gcc/testsuite/g++.dg/parse/parser-pr28152.C
  2dde7d845edb3fc1b6b06c1f7c1d71f6  gcc/testsuite/g++.dg/parse/pr16696-permissive.C
  f8326578679fecd658e1bec2d3ed7654  gcc/testsuite/g++.dg/parse/pr16696.C
  29f6ba15da1283765b5179abe6707d09  gcc/testsuite/g++.dg/parse/pr18770.C
--- 22070,22077 ----
  c203de39cbb4bd246d0e315aa6662a15  gcc/testsuite/g++.dg/parse/parse7.C
  3dc9f90d48dd411fea57be7de299a941  gcc/testsuite/g++.dg/parse/parser-pr14875-2.C
  ce5771924fa5fd60b270c30c11bee489  gcc/testsuite/g++.dg/parse/parser-pr14875.C
! 290161573b66c49ae4261f07f77681d3  gcc/testsuite/g++.dg/parse/parser-pr28152-2.C
! a0fee4f3ee4678b54afd993b619baa05  gcc/testsuite/g++.dg/parse/parser-pr28152.C
  2dde7d845edb3fc1b6b06c1f7c1d71f6  gcc/testsuite/g++.dg/parse/pr16696-permissive.C
  f8326578679fecd658e1bec2d3ed7654  gcc/testsuite/g++.dg/parse/pr16696.C
  29f6ba15da1283765b5179abe6707d09  gcc/testsuite/g++.dg/parse/pr18770.C
*************** a57434275b0ab07b7a1f918fef7791bc  gcc/te
*** 20037,20045 ****
  3930c44cf906dd15accdf14325d83232  gcc/testsuite/g++.dg/parse/pr56961.C
  b893c32fee81fd67a1f9e66dbeff6407  gcc/testsuite/g++.dg/parse/pr58664.C
  d2e5ab6ef2b2e82037e93dcbedcca8bc  gcc/testsuite/g++.dg/parse/pr58705.C
! b89fc0d62ee0e3196c61129ecd005612  gcc/testsuite/g++.dg/parse/pr58898.C
  e15eb2cabfff226dbddb78a9de3a8892  gcc/testsuite/g++.dg/parse/pr61804.C
! 5cf1aa6b471b7c8c4120c7b9642955c6  gcc/testsuite/g++.dg/parse/pr68722.C
  fb75bc3a19e60d2b8469ab27556b4ded  gcc/testsuite/g++.dg/parse/pr69628.C
  1e79347577849ae03e3a20e2fc6247ff  gcc/testsuite/g++.dg/parse/pr70635.C
  e3d84d14b44ce06e61ad505e48389e36  gcc/testsuite/g++.dg/parse/pr71238.C
--- 22092,22100 ----
  3930c44cf906dd15accdf14325d83232  gcc/testsuite/g++.dg/parse/pr56961.C
  b893c32fee81fd67a1f9e66dbeff6407  gcc/testsuite/g++.dg/parse/pr58664.C
  d2e5ab6ef2b2e82037e93dcbedcca8bc  gcc/testsuite/g++.dg/parse/pr58705.C
! df38d3dc50e7c41a5045bef66152f731  gcc/testsuite/g++.dg/parse/pr58898.C
  e15eb2cabfff226dbddb78a9de3a8892  gcc/testsuite/g++.dg/parse/pr61804.C
! 194a916e919f2db7dd03a5c246e4fa6c  gcc/testsuite/g++.dg/parse/pr68722.C
  fb75bc3a19e60d2b8469ab27556b4ded  gcc/testsuite/g++.dg/parse/pr69628.C
  1e79347577849ae03e3a20e2fc6247ff  gcc/testsuite/g++.dg/parse/pr70635.C
  e3d84d14b44ce06e61ad505e48389e36  gcc/testsuite/g++.dg/parse/pr71238.C
*************** f04a95da8935ec0cc5089d05affb78d8  gcc/te
*** 20052,20057 ****
--- 22107,22115 ----
  a22ea5750225f2612d7e42c34ccab198  gcc/testsuite/g++.dg/parse/pr83634.C
  7e4a18dbdde15d3df2c3ac9c839f0aa2  gcc/testsuite/g++.dg/parse/pr84263.C
  eb26fb436b8f8415a8abc1bccfbe0115  gcc/testsuite/g++.dg/parse/pr88180.C
+ e092324667ee9b9d28e3bbedbac9d8cb  gcc/testsuite/g++.dg/parse/pr96257.C
+ 5ed1c736ecb0dfd7d196f7b0355e826d  gcc/testsuite/g++.dg/parse/pr96258.C
+ 44edf260253cab603050f781362fdeda  gcc/testsuite/g++.dg/parse/pragma-recovery.C
  5a9d33aff7826f90760a0154af35d9f0  gcc/testsuite/g++.dg/parse/pragma1.C
  1f6123ac6fb8020a2ebda2653a23c5d2  gcc/testsuite/g++.dg/parse/pragma2.C
  d516a5d017b9be02cd665abb61b0fbaf  gcc/testsuite/g++.dg/parse/pragma3.C
*************** ccda843a2ca5dc21854ae45c663fcbad  gcc/te
*** 20108,20114 ****
  28909671f33bd21fb848fe0c1fa14d4d  gcc/testsuite/g++.dg/parse/template17.C
  21a7e0a623d36278bd4a022fb38512fb  gcc/testsuite/g++.dg/parse/template18.C
  d9c0c19ed47afc7da8f6bd80eebada3a  gcc/testsuite/g++.dg/parse/template19.C
! 6b40568bdbad53032a96cfdb15c0ab9c  gcc/testsuite/g++.dg/parse/template2.C
  b7b8ce1da8b4f096c9bf00a54541b5cc  gcc/testsuite/g++.dg/parse/template20.C
  cdeae758bf6e47b2afe6918f9464d5cd  gcc/testsuite/g++.dg/parse/template21.C
  d78d3545746fb82961904ad1f53e768d  gcc/testsuite/g++.dg/parse/template22.C
--- 22166,22172 ----
  28909671f33bd21fb848fe0c1fa14d4d  gcc/testsuite/g++.dg/parse/template17.C
  21a7e0a623d36278bd4a022fb38512fb  gcc/testsuite/g++.dg/parse/template18.C
  d9c0c19ed47afc7da8f6bd80eebada3a  gcc/testsuite/g++.dg/parse/template19.C
! a5f0dbcd6c741d926c79710f13b01d25  gcc/testsuite/g++.dg/parse/template2.C
  b7b8ce1da8b4f096c9bf00a54541b5cc  gcc/testsuite/g++.dg/parse/template20.C
  cdeae758bf6e47b2afe6918f9464d5cd  gcc/testsuite/g++.dg/parse/template21.C
  d78d3545746fb82961904ad1f53e768d  gcc/testsuite/g++.dg/parse/template22.C
*************** be0c14c201a30f9cc491685549d8902d  gcc/te
*** 20160,20165 ****
--- 22218,22224 ----
  e831cec93609978519f8f94b9c7e0a97  gcc/testsuite/g++.dg/parse/undefined5.C
  3c77b612897459ac063cdd9973cc337f  gcc/testsuite/g++.dg/parse/undefined6.C
  51aa2c13898ac16fd8a1a4a06126600a  gcc/testsuite/g++.dg/parse/undefined7.C
+ af673838e50cc77997dda4e3240550bb  gcc/testsuite/g++.dg/parse/uneval1.C
  92ada8b4167dd116c5c66ea62a120b06  gcc/testsuite/g++.dg/parse/unnamed1.C
  360bd7fc805f109039114cc041982c84  gcc/testsuite/g++.dg/parse/unnamed2.C
  6bd4c0f7191355f693af56ab02582e5d  gcc/testsuite/g++.dg/parse/using1.C
*************** f9271dce9d7980fa8b426246ec2b9126  gcc/te
*** 20183,20193 ****
  4a61ad56a41cb4cbee40e9821143277c  gcc/testsuite/g++.dg/pch/operator-1.Hs
  a42f209088bbce8d3650be5966861b6b  gcc/testsuite/g++.dg/pch/pch.C
  95603c8965412870090ed14011f4b123  gcc/testsuite/g++.dg/pch/pch.Hs
! 689a9946b16a4ee6a07f717440f6b70c  gcc/testsuite/g++.dg/pch/pch.exp
  a79b4c14973bc580e45325abf4c19b72  gcc/testsuite/g++.dg/pch/pr90326.C
  8733db8bb02cf7abd5d7d07601acc332  gcc/testsuite/g++.dg/pch/pr90326.Hs
  f820a691997c43f0fd5a910e8712635b  gcc/testsuite/g++.dg/pch/pr92458.C
  e9ae8a849e2de0433a9a6c5964f76889  gcc/testsuite/g++.dg/pch/pr92458.Hs
  73dd9e7d0e0351552a2f49cc0882db47  gcc/testsuite/g++.dg/pch/static-1.C
  4aaad0cfa4436b8cd8b37b1bf218edc8  gcc/testsuite/g++.dg/pch/static-1.Hs
  a5379c2bad433698a01b3bc2d5473a2e  gcc/testsuite/g++.dg/pch/system-1.C
--- 22242,22254 ----
  4a61ad56a41cb4cbee40e9821143277c  gcc/testsuite/g++.dg/pch/operator-1.Hs
  a42f209088bbce8d3650be5966861b6b  gcc/testsuite/g++.dg/pch/pch.C
  95603c8965412870090ed14011f4b123  gcc/testsuite/g++.dg/pch/pch.Hs
! 408d2df6439e4254bbbf6d36880dd6c5  gcc/testsuite/g++.dg/pch/pch.exp
  a79b4c14973bc580e45325abf4c19b72  gcc/testsuite/g++.dg/pch/pr90326.C
  8733db8bb02cf7abd5d7d07601acc332  gcc/testsuite/g++.dg/pch/pr90326.Hs
  f820a691997c43f0fd5a910e8712635b  gcc/testsuite/g++.dg/pch/pr92458.C
  e9ae8a849e2de0433a9a6c5964f76889  gcc/testsuite/g++.dg/pch/pr92458.Hs
+ c4ed7c5c1b5c91bb4573097f617b5fa9  gcc/testsuite/g++.dg/pch/pr98343.C
+ a66d3ab2fd678cd355efddf18299c45d  gcc/testsuite/g++.dg/pch/pr98343.Hs
  73dd9e7d0e0351552a2f49cc0882db47  gcc/testsuite/g++.dg/pch/static-1.C
  4aaad0cfa4436b8cd8b37b1bf218edc8  gcc/testsuite/g++.dg/pch/static-1.Hs
  a5379c2bad433698a01b3bc2d5473a2e  gcc/testsuite/g++.dg/pch/system-1.C
*************** f368c2dc2c8c1266d4d8818bb13e9118  gcc/te
*** 20208,20220 ****
  d48932e126573eb4d5278c326a4af0e8  gcc/testsuite/g++.dg/plugin/decl_plugin.c
  9880cec200dc03944e221b5ce5bc6af7  gcc/testsuite/g++.dg/plugin/def-plugin-test.C
  e3ad892294170cf17b98bdad69100bf4  gcc/testsuite/g++.dg/plugin/def_plugin.c
! 406e0fe308e2f193b57545619c128826  gcc/testsuite/g++.dg/plugin/diagnostic-test-expressions-1.C
  253c4ed5efcbc1a8dd179a32c3c99365  gcc/testsuite/g++.dg/plugin/diagnostic-test-inlining-1.C
  eee78b3feee80f24a70dface0869a07e  gcc/testsuite/g++.dg/plugin/dumb-plugin-test-1.C
  3f89fe2cf6d913c11fe72de567ff1303  gcc/testsuite/g++.dg/plugin/dumb_plugin.c
  b393922db8d338bed7f3bcf037edd19c  gcc/testsuite/g++.dg/plugin/header-plugin-test.C
  3a80079be7a0bfd6f8efce4de8795fcb  gcc/testsuite/g++.dg/plugin/header_plugin.c
! 0dc5c9d3e973321bd682f09fe9ad86d6  gcc/testsuite/g++.dg/plugin/plugin.exp
  0555e81b1b7c9c8e06b4e9d9ffccb7ff  gcc/testsuite/g++.dg/plugin/pragma_plugin-test-1.C
  bb9719af4ef365b9625ed93e9794b8b2  gcc/testsuite/g++.dg/plugin/pragma_plugin.c
  503f96544096dfaa1ea93338e21923ff  gcc/testsuite/g++.dg/plugin/self-assign-test-1.C
--- 22269,22282 ----
  d48932e126573eb4d5278c326a4af0e8  gcc/testsuite/g++.dg/plugin/decl_plugin.c
  9880cec200dc03944e221b5ce5bc6af7  gcc/testsuite/g++.dg/plugin/def-plugin-test.C
  e3ad892294170cf17b98bdad69100bf4  gcc/testsuite/g++.dg/plugin/def_plugin.c
! 6652a1da9c3cb05ec0bc5f50dd31c065  gcc/testsuite/g++.dg/plugin/diagnostic-test-expressions-1.C
  253c4ed5efcbc1a8dd179a32c3c99365  gcc/testsuite/g++.dg/plugin/diagnostic-test-inlining-1.C
  eee78b3feee80f24a70dface0869a07e  gcc/testsuite/g++.dg/plugin/dumb-plugin-test-1.C
  3f89fe2cf6d913c11fe72de567ff1303  gcc/testsuite/g++.dg/plugin/dumb_plugin.c
  b393922db8d338bed7f3bcf037edd19c  gcc/testsuite/g++.dg/plugin/header-plugin-test.C
  3a80079be7a0bfd6f8efce4de8795fcb  gcc/testsuite/g++.dg/plugin/header_plugin.c
! 0422777feb5bb202ec0e53d6551fe397  gcc/testsuite/g++.dg/plugin/location-overflow-test-pr96391.c
! 9a268761b815d83629a86f78cee5f8cb  gcc/testsuite/g++.dg/plugin/plugin.exp
  0555e81b1b7c9c8e06b4e9d9ffccb7ff  gcc/testsuite/g++.dg/plugin/pragma_plugin-test-1.C
  bb9719af4ef365b9625ed93e9794b8b2  gcc/testsuite/g++.dg/plugin/pragma_plugin.c
  503f96544096dfaa1ea93338e21923ff  gcc/testsuite/g++.dg/plugin/self-assign-test-1.C
*************** df445dd466c64ca9de2502714fd94669  gcc/te
*** 20237,20248 ****
  d7eeb077df9cd6945e841f312c006ac0  gcc/testsuite/g++.dg/pr45330.C
  c1dfe66a41c2a01c9391cc0b19068630  gcc/testsuite/g++.dg/pr45788.C
  4e1d8a1af98ff692467fa16f5a8da67f  gcc/testsuite/g++.dg/pr46065.C
! f8a176d1fc5d47b59c3be174c032504f  gcc/testsuite/g++.dg/pr46852.C
  7affa7ae7d35122d45703a6d24ae54f9  gcc/testsuite/g++.dg/pr46868.C
  3946927cb1dd0a7ac3d8009e703d00c4  gcc/testsuite/g++.dg/pr46890.C
  9c1057b2baef3c7b14a3990a7dab5c62  gcc/testsuite/g++.dg/pr47053.C
  7d415c3f086a787fac9c43c2198e69a2  gcc/testsuite/g++.dg/pr47589.C
! 8e52e34a3550ea8976d44af88f2f9743  gcc/testsuite/g++.dg/pr48484.C
  e384db5ab7dd22da4d2f37d7651bb107  gcc/testsuite/g++.dg/pr48633.C
  91af1bf8e0bef02ef0fdef13fea1c20e  gcc/testsuite/g++.dg/pr48660.C
  eb8473dadb424bb65d0d3d0b5588e217  gcc/testsuite/g++.dg/pr48772.C
--- 22299,22310 ----
  d7eeb077df9cd6945e841f312c006ac0  gcc/testsuite/g++.dg/pr45330.C
  c1dfe66a41c2a01c9391cc0b19068630  gcc/testsuite/g++.dg/pr45788.C
  4e1d8a1af98ff692467fa16f5a8da67f  gcc/testsuite/g++.dg/pr46065.C
! 1d10ac3a8b3a5afd75f6be63244ce474  gcc/testsuite/g++.dg/pr46852.C
  7affa7ae7d35122d45703a6d24ae54f9  gcc/testsuite/g++.dg/pr46868.C
  3946927cb1dd0a7ac3d8009e703d00c4  gcc/testsuite/g++.dg/pr46890.C
  9c1057b2baef3c7b14a3990a7dab5c62  gcc/testsuite/g++.dg/pr47053.C
  7d415c3f086a787fac9c43c2198e69a2  gcc/testsuite/g++.dg/pr47589.C
! c6570d38e7ef08be1d7d0b9a1b133bfe  gcc/testsuite/g++.dg/pr48484.C
  e384db5ab7dd22da4d2f37d7651bb107  gcc/testsuite/g++.dg/pr48633.C
  91af1bf8e0bef02ef0fdef13fea1c20e  gcc/testsuite/g++.dg/pr48660.C
  eb8473dadb424bb65d0d3d0b5588e217  gcc/testsuite/g++.dg/pr48772.C
*************** eb8473dadb424bb65d0d3d0b5588e217  gcc/te
*** 20253,20260 ****
  687fcdd96edb8d9d6910173004998886  gcc/testsuite/g++.dg/pr50763-4.C
  cea7cdabebcdd0a13585c5a24f935537  gcc/testsuite/g++.dg/pr51264-4.C
  f1579266bed8aff77e6a7423b465785d  gcc/testsuite/g++.dg/pr53037-1.C
! 74f88cf4d95a2b57cb0298f30cf43468  gcc/testsuite/g++.dg/pr53037-2.C
! cc6a0609c1ad6e8374611de8a9b5749c  gcc/testsuite/g++.dg/pr53037-3.C
  1fad21ebd3029aa083079a53f62c0826  gcc/testsuite/g++.dg/pr53037-4.C
  0b9eb0c4f1c54889f863cda45ee97771  gcc/testsuite/g++.dg/pr53055.C
  602b3ed9ed82ed3733e6a28dadc4d0e6  gcc/testsuite/g++.dg/pr54442.C
--- 22315,22322 ----
  687fcdd96edb8d9d6910173004998886  gcc/testsuite/g++.dg/pr50763-4.C
  cea7cdabebcdd0a13585c5a24f935537  gcc/testsuite/g++.dg/pr51264-4.C
  f1579266bed8aff77e6a7423b465785d  gcc/testsuite/g++.dg/pr53037-1.C
! 686be698d314dfb4322fe619611e65e9  gcc/testsuite/g++.dg/pr53037-2.C
! 6103233ea86140f70422ab0834b1c3b8  gcc/testsuite/g++.dg/pr53037-3.C
  1fad21ebd3029aa083079a53f62c0826  gcc/testsuite/g++.dg/pr53037-4.C
  0b9eb0c4f1c54889f863cda45ee97771  gcc/testsuite/g++.dg/pr53055.C
  602b3ed9ed82ed3733e6a28dadc4d0e6  gcc/testsuite/g++.dg/pr54442.C
*************** da36360b1eaeaaf6b1adffefc9001717  gcc/te
*** 20264,20271 ****
  a925ae8e8cb9fbbaebf7c8d183952481  gcc/testsuite/g++.dg/pr55513.C
  41015247f207e30260f56af8eb9c6021  gcc/testsuite/g++.dg/pr55604.C
  3e6fd08b5cdf6e46c9fefb4cb0720e23  gcc/testsuite/g++.dg/pr57175.C
! 0c1e34f9d8675954029dfe2951e92306  gcc/testsuite/g++.dg/pr57662.C
! 225f4713b7ff821a0136d014b3cd4723  gcc/testsuite/g++.dg/pr57878.C
  511234314f9b0a3ba0b9f5c6d7080948  gcc/testsuite/g++.dg/pr58123.C
  1c3bb90a5b9e846331336c61b714d4a9  gcc/testsuite/g++.dg/pr58389.C
  3ec8eae79152a63de1c1e2cca524349f  gcc/testsuite/g++.dg/pr58438.C
--- 22326,22333 ----
  a925ae8e8cb9fbbaebf7c8d183952481  gcc/testsuite/g++.dg/pr55513.C
  41015247f207e30260f56af8eb9c6021  gcc/testsuite/g++.dg/pr55604.C
  3e6fd08b5cdf6e46c9fefb4cb0720e23  gcc/testsuite/g++.dg/pr57175.C
! 30e309355b8a4ded0ec5e7560f1ad370  gcc/testsuite/g++.dg/pr57662.C
! b01bbf7436a5394cc1b921b12a607281  gcc/testsuite/g++.dg/pr57878.C
  511234314f9b0a3ba0b9f5c6d7080948  gcc/testsuite/g++.dg/pr58123.C
  1c3bb90a5b9e846331336c61b714d4a9  gcc/testsuite/g++.dg/pr58389.C
  3ec8eae79152a63de1c1e2cca524349f  gcc/testsuite/g++.dg/pr58438.C
*************** a925ae8e8cb9fbbaebf7c8d183952481  gcc/te
*** 20273,20279 ****
  2740ddd548a54604f2c8c71617ef6535  gcc/testsuite/g++.dg/pr59445.C
  f30a79885e763e341eec192a87cfd3ff  gcc/testsuite/g++.dg/pr59477.C
  4afad787e09b4874a12312416375d3cb  gcc/testsuite/g++.dg/pr59482.C
! 047d64cd87785ad203ae42aba78bfb80  gcc/testsuite/g++.dg/pr59510.C
  6ef903a30658765c574e6f3aa8592058  gcc/testsuite/g++.dg/pr59695.C
  fa1dc55610fe4dfef588295b0ecfe299  gcc/testsuite/g++.dg/pr60517.C
  e62d61557e0b631dc728666416a732c0  gcc/testsuite/g++.dg/pr60518.C
--- 22335,22341 ----
  2740ddd548a54604f2c8c71617ef6535  gcc/testsuite/g++.dg/pr59445.C
  f30a79885e763e341eec192a87cfd3ff  gcc/testsuite/g++.dg/pr59477.C
  4afad787e09b4874a12312416375d3cb  gcc/testsuite/g++.dg/pr59482.C
! 84aeafa5e38573ce45036ced58547b13  gcc/testsuite/g++.dg/pr59510.C
  6ef903a30658765c574e6f3aa8592058  gcc/testsuite/g++.dg/pr59695.C
  fa1dc55610fe4dfef588295b0ecfe299  gcc/testsuite/g++.dg/pr60517.C
  e62d61557e0b631dc728666416a732c0  gcc/testsuite/g++.dg/pr60518.C
*************** c196198d50bad93b87f24ccaf1c0ee15  gcc/te
*** 20294,20300 ****
  20c87edb878a871975f97ea1b4aa5331  gcc/testsuite/g++.dg/pr64353.C
  19486da89030bba1a8dcb18937f021ef  gcc/testsuite/g++.dg/pr64688-2.C
  2925678828b854c5f2a448d4d34d8e08  gcc/testsuite/g++.dg/pr64688.C
! 951008bcdb44de20d54de2c9a99575df  gcc/testsuite/g++.dg/pr65032.C
  2a99023224d23b7b4c2df438196b9877  gcc/testsuite/g++.dg/pr65049.C
  e806b69344c18eb3f9f4d25e7ef1cbb7  gcc/testsuite/g++.dg/pr65240-1.C
  ee3a7e458d7954444a8959c8662bdeba  gcc/testsuite/g++.dg/pr65240-2.C
--- 22356,22362 ----
  20c87edb878a871975f97ea1b4aa5331  gcc/testsuite/g++.dg/pr64353.C
  19486da89030bba1a8dcb18937f021ef  gcc/testsuite/g++.dg/pr64688-2.C
  2925678828b854c5f2a448d4d34d8e08  gcc/testsuite/g++.dg/pr64688.C
! 0f0d9bb4908d6bdb56109652b1ef4e88  gcc/testsuite/g++.dg/pr65032.C
  2a99023224d23b7b4c2df438196b9877  gcc/testsuite/g++.dg/pr65049.C
  e806b69344c18eb3f9f4d25e7ef1cbb7  gcc/testsuite/g++.dg/pr65240-1.C
  ee3a7e458d7954444a8959c8662bdeba  gcc/testsuite/g++.dg/pr65240-2.C
*************** ee3a7e458d7954444a8959c8662bdeba  gcc/te
*** 20303,20320 ****
  ff90a96b0f5bda64aea35147770302e1  gcc/testsuite/g++.dg/pr65240.h
  0057ba501387c41f5fcb4c3488ae63ac  gcc/testsuite/g++.dg/pr65242.C
  c987d521d6ec4222a0bbaff58ae0df77  gcc/testsuite/g++.dg/pr65295.C
! 3b4312eed9dd9b2a86eadf1d7beb1e82  gcc/testsuite/g++.dg/pr66655.C
! d7dba78f8755778892c14ddaf49a9ce9  gcc/testsuite/g++.dg/pr66655.h
! aa40a4a91073b1035b9353971692e0bc  gcc/testsuite/g++.dg/pr66655_1.cc
  c014278b0e7c6cf72bd8834b1b9d6631  gcc/testsuite/g++.dg/pr66866.C
  e76d57f03d20c287845bd04c939c4d73  gcc/testsuite/g++.dg/pr67211.C
! af5d9b1cf7a2f7f86d5b6b547f1bc9a9  gcc/testsuite/g++.dg/pr67351.C
  c15a8cc45a8eaf8903cfaae658dc8822  gcc/testsuite/g++.dg/pr67405.C
  61d6f57e830446105d84b6744eecd7eb  gcc/testsuite/g++.dg/pr67666.C
  df58569c9a1333fb8dee09999e7eeecb  gcc/testsuite/g++.dg/pr67671.C
  7aa565b1500342b604aecf54db072ea9  gcc/testsuite/g++.dg/pr67699.C
  bf309241753f1671e6d207f116095ec9  gcc/testsuite/g++.dg/pr67876.C
! 6a66f0b1d8bb8551d84d7f5dae5755ac  gcc/testsuite/g++.dg/pr67989.C
  8a1667caa97af1247ebb15df34a53d0a  gcc/testsuite/g++.dg/pr68062.C
  b3847f98e7816541cd3d0a8cfdedb14d  gcc/testsuite/g++.dg/pr68392.C
  daea4abf04b6790441bb5b87a622a604  gcc/testsuite/g++.dg/pr68449.C
--- 22365,22382 ----
  ff90a96b0f5bda64aea35147770302e1  gcc/testsuite/g++.dg/pr65240.h
  0057ba501387c41f5fcb4c3488ae63ac  gcc/testsuite/g++.dg/pr65242.C
  c987d521d6ec4222a0bbaff58ae0df77  gcc/testsuite/g++.dg/pr65295.C
! 20bcb78b164336c6b42304de362d905a  gcc/testsuite/g++.dg/pr66655.C
! 575d8cfa0f7cc7a30ac74c14eec274d2  gcc/testsuite/g++.dg/pr66655.h
! 9b717eabe7d22f65a71673e3ffc1470b  gcc/testsuite/g++.dg/pr66655_1.cc
  c014278b0e7c6cf72bd8834b1b9d6631  gcc/testsuite/g++.dg/pr66866.C
  e76d57f03d20c287845bd04c939c4d73  gcc/testsuite/g++.dg/pr67211.C
! 54fc8bd86f8a81eead6183ed98044e5e  gcc/testsuite/g++.dg/pr67351.C
  c15a8cc45a8eaf8903cfaae658dc8822  gcc/testsuite/g++.dg/pr67405.C
  61d6f57e830446105d84b6744eecd7eb  gcc/testsuite/g++.dg/pr67666.C
  df58569c9a1333fb8dee09999e7eeecb  gcc/testsuite/g++.dg/pr67671.C
  7aa565b1500342b604aecf54db072ea9  gcc/testsuite/g++.dg/pr67699.C
  bf309241753f1671e6d207f116095ec9  gcc/testsuite/g++.dg/pr67876.C
! f309c59249df49285a064e766c124035  gcc/testsuite/g++.dg/pr67989.C
  8a1667caa97af1247ebb15df34a53d0a  gcc/testsuite/g++.dg/pr68062.C
  b3847f98e7816541cd3d0a8cfdedb14d  gcc/testsuite/g++.dg/pr68392.C
  daea4abf04b6790441bb5b87a622a604  gcc/testsuite/g++.dg/pr68449.C
*************** dd5b895f9e8e377b3fc861eecf9bdbf7  gcc/te
*** 20339,20345 ****
  8756c72da60c2ac8cdddc20291df82e3  gcc/testsuite/g++.dg/pr71655.C
  e71ffaaf0dda0a585015ab52583b2b01  gcc/testsuite/g++.dg/pr71694.C
  1202ce040862ab92e1f0e7f8da8f372a  gcc/testsuite/g++.dg/pr71973-1.C
! 4d7bbea7ad49c81e67fcd756ddcfd12f  gcc/testsuite/g++.dg/pr71973-2.C
  77a4316445a154cba3284882042820df  gcc/testsuite/g++.dg/pr71973-3.C
  5d11f2248bc8824c7b2c877cacdb859e  gcc/testsuite/g++.dg/pr77427.C
  076ca4036036dc71eb84d0a58a23b250  gcc/testsuite/g++.dg/pr77550.C
--- 22401,22407 ----
  8756c72da60c2ac8cdddc20291df82e3  gcc/testsuite/g++.dg/pr71655.C
  e71ffaaf0dda0a585015ab52583b2b01  gcc/testsuite/g++.dg/pr71694.C
  1202ce040862ab92e1f0e7f8da8f372a  gcc/testsuite/g++.dg/pr71973-1.C
! 723e9507a3916605af59b5df349ee3e5  gcc/testsuite/g++.dg/pr71973-2.C
  77a4316445a154cba3284882042820df  gcc/testsuite/g++.dg/pr71973-3.C
  5d11f2248bc8824c7b2c877cacdb859e  gcc/testsuite/g++.dg/pr77427.C
  076ca4036036dc71eb84d0a58a23b250  gcc/testsuite/g++.dg/pr77550.C
*************** bee8b26ef225678f65e45458f23ce109  gcc/te
*** 20362,20368 ****
  b42ea8f998f15f7464ba5a80c55dbed3  gcc/testsuite/g++.dg/pr80481.C
  914b9d1358e92d529a3e1887bc7efeed  gcc/testsuite/g++.dg/pr80707.C
  b5452fdc9af692c5acb4d9af45519954  gcc/testsuite/g++.dg/pr81007.C
! ae763dce4f42199fa995b643f784bb5d  gcc/testsuite/g++.dg/pr81194.C
  31b5d01134fc2be1551e446b9276fc9b  gcc/testsuite/g++.dg/pr81308-1.C
  2805e4032e3a5ed95dbba05da6ae2744  gcc/testsuite/g++.dg/pr81308-2.C
  11fd788c1699adfa6c7e984373e41c98  gcc/testsuite/g++.dg/pr82128.C
--- 22424,22430 ----
  b42ea8f998f15f7464ba5a80c55dbed3  gcc/testsuite/g++.dg/pr80481.C
  914b9d1358e92d529a3e1887bc7efeed  gcc/testsuite/g++.dg/pr80707.C
  b5452fdc9af692c5acb4d9af45519954  gcc/testsuite/g++.dg/pr81007.C
! e9006c7bfc034d54a14402a2a461f286  gcc/testsuite/g++.dg/pr81194.C
  31b5d01134fc2be1551e446b9276fc9b  gcc/testsuite/g++.dg/pr81308-1.C
  2805e4032e3a5ed95dbba05da6ae2744  gcc/testsuite/g++.dg/pr81308-2.C
  11fd788c1699adfa6c7e984373e41c98  gcc/testsuite/g++.dg/pr82128.C
*************** bf14562b088e1e4c01e4050adbd18394  gcc/te
*** 20375,20383 ****
  a8cae2d227c02ee5705e9b5b205bb1d1  gcc/testsuite/g++.dg/pr83979.c
  8528aaf5d93c3e6771dcc4828d7264b5  gcc/testsuite/g++.dg/pr84231.C
  083c1f5c90058b5d83822264c5d52f0e  gcc/testsuite/g++.dg/pr84264.C
! da4464f64c7ae819c4a0629cfaf7095e  gcc/testsuite/g++.dg/pr84279.C
  fcd3d77f2c884effb0321a5b04ff8ca6  gcc/testsuite/g++.dg/pr84492.C
! 18983b086a2ae1ee8b28131db73bc2fa  gcc/testsuite/g++.dg/pr84729.C
  75d741968e42202427b6e9c163e5c326  gcc/testsuite/g++.dg/pr84821.C
  7d7a517b4c7f29f290c497586f9e3065  gcc/testsuite/g++.dg/pr84933.C
  4d2db17f03f3c3519e3970f90016bf3e  gcc/testsuite/g++.dg/pr84943-2.C
--- 22437,22445 ----
  a8cae2d227c02ee5705e9b5b205bb1d1  gcc/testsuite/g++.dg/pr83979.c
  8528aaf5d93c3e6771dcc4828d7264b5  gcc/testsuite/g++.dg/pr84231.C
  083c1f5c90058b5d83822264c5d52f0e  gcc/testsuite/g++.dg/pr84264.C
! 11b4cccb7d83f94f276075c4b5417588  gcc/testsuite/g++.dg/pr84279.C
  fcd3d77f2c884effb0321a5b04ff8ca6  gcc/testsuite/g++.dg/pr84492.C
! ebc2502b64fbdf6e7c61b806ec979487  gcc/testsuite/g++.dg/pr84729.C
  75d741968e42202427b6e9c163e5c326  gcc/testsuite/g++.dg/pr84821.C
  7d7a517b4c7f29f290c497586f9e3065  gcc/testsuite/g++.dg/pr84933.C
  4d2db17f03f3c3519e3970f90016bf3e  gcc/testsuite/g++.dg/pr84943-2.C
*************** a632da06916027a661eebd4e506433e3  gcc/te
*** 20419,20433 ****
  9392f1da9f8e22c24888dd87d007f7b3  gcc/testsuite/g++.dg/pr92365.C
  00730c1ddad403168d9d04f13d328e21  gcc/testsuite/g++.dg/pr92370.C
  751024b9fd9d5af197249b2242be0e5b  gcc/testsuite/g++.dg/pr92542.C
  3a47aae18b4224a029e9016939955b70  gcc/testsuite/g++.dg/pr93674.C
  68083424b21377a269cb1f4b7edce028  gcc/testsuite/g++.dg/pr93974.C
  6eca5639737684ae37b7c4be3e650f82  gcc/testsuite/g++.dg/pr94027.C
  1c2d093bc20fb04da453865d04388278  gcc/testsuite/g++.dg/pr94314-2.C
! d5530d211c06b5ff8e8537e3a1e5b9de  gcc/testsuite/g++.dg/pr94314-3.C
  b28f1aa5479585861779a602aaf7d3f3  gcc/testsuite/g++.dg/pr94314-4.C
! 95ea08ceed65b4a6869e1c0f7118b910  gcc/testsuite/g++.dg/pr94314.C
  482706f039139a44488ccf489c439fdd  gcc/testsuite/g++.dg/pr94666.C
  939bc5c1461d182a2a1c2c7b64a2951c  gcc/testsuite/g++.dg/pr97627.C
  184e70d5635b77134bb901b25ccd4c61  gcc/testsuite/g++.dg/predict-1.C
  df9c1f0040c84d9c37fd8d281618f2df  gcc/testsuite/g++.dg/predict-2.C
  9eaee03e6354eabcc7fc34abc5cc11db  gcc/testsuite/g++.dg/predict-3.C
--- 22481,22509 ----
  9392f1da9f8e22c24888dd87d007f7b3  gcc/testsuite/g++.dg/pr92365.C
  00730c1ddad403168d9d04f13d328e21  gcc/testsuite/g++.dg/pr92370.C
  751024b9fd9d5af197249b2242be0e5b  gcc/testsuite/g++.dg/pr92542.C
+ 6ccbaa9e2a98332fae31dba7420596de  gcc/testsuite/g++.dg/pr93195a.C
+ 7c80245d25cf6ddc4edafb1d0ab9627d  gcc/testsuite/g++.dg/pr93195b.C
  3a47aae18b4224a029e9016939955b70  gcc/testsuite/g++.dg/pr93674.C
  68083424b21377a269cb1f4b7edce028  gcc/testsuite/g++.dg/pr93974.C
  6eca5639737684ae37b7c4be3e650f82  gcc/testsuite/g++.dg/pr94027.C
  1c2d093bc20fb04da453865d04388278  gcc/testsuite/g++.dg/pr94314-2.C
! 435a4374f33be9cc7594fc57bce10ce4  gcc/testsuite/g++.dg/pr94314-3.C
  b28f1aa5479585861779a602aaf7d3f3  gcc/testsuite/g++.dg/pr94314-4.C
! fdf3135e57da2e320f80a80723315d9f  gcc/testsuite/g++.dg/pr94314.C
  482706f039139a44488ccf489c439fdd  gcc/testsuite/g++.dg/pr94666.C
+ 8567df518ccb50301e2a6ac33853f9db  gcc/testsuite/g++.dg/pr95768.C
+ 5fa1238dc25e63c91396c8b3a76f125d  gcc/testsuite/g++.dg/pr96308.C
+ d7c3ed7863806da0874952af08162681  gcc/testsuite/g++.dg/pr96818.C
+ c228b3ed01594ed861f4cadcaf972679  gcc/testsuite/g++.dg/pr97538.C
+ 54b7e9e284a4bb84b630d364fb0bcec9  gcc/testsuite/g++.dg/pr97560.C
+ 2a6f1b00aec00903f653b66170171e05  gcc/testsuite/g++.dg/pr97609.C
  939bc5c1461d182a2a1c2c7b64a2951c  gcc/testsuite/g++.dg/pr97627.C
+ 45c7d0b314ede5e6800294c0564f4ad7  gcc/testsuite/g++.dg/pr98136.C
+ 3c3d1ae2c4512842cdd56b62eb3843c0  gcc/testsuite/g++.dg/pr98213.C
+ 66a9e8988a7a1c485ca65b45157efb0f  gcc/testsuite/g++.dg/pr98330.C
+ 4c8ee28b75b6181d48b6370da1d724c1  gcc/testsuite/g++.dg/pr98499.C
+ b9c413e1dc01687c00feebd03ca30772  gcc/testsuite/g++.dg/pr99165.C
+ 26d6cca564c83a4cd20ad0860975aebe  gcc/testsuite/g++.dg/pr99218.C
  184e70d5635b77134bb901b25ccd4c61  gcc/testsuite/g++.dg/predict-1.C
  df9c1f0040c84d9c37fd8d281618f2df  gcc/testsuite/g++.dg/predict-2.C
  9eaee03e6354eabcc7fc34abc5cc11db  gcc/testsuite/g++.dg/predict-3.C
*************** b0c0786c803eaf05e6755f729c87257e  gcc/te
*** 20481,20487 ****
  3357bf9a2204710e948cb278fb4c4266  gcc/testsuite/g++.dg/simulate-thread/atomics-2.C
  0f9193c70bd9c12ca05e5645fdd35442  gcc/testsuite/g++.dg/simulate-thread/bitfields-2.C
  f9a70819a6e534b6c462618926ea0a80  gcc/testsuite/g++.dg/simulate-thread/bitfields.C
! 3074d0bcd3f9155983534d8a8c3f4cea  gcc/testsuite/g++.dg/simulate-thread/simulate-thread.exp
  c6cf9552e831a422e53a8ee8d8817449  gcc/testsuite/g++.dg/simulate-thread/simulate-thread.gdb
  8ed1bb09d81129e522f6ac6dce99d52a  gcc/testsuite/g++.dg/simulate-thread/simulate-thread.h
  2a467b197d39f6d623192355bbc4b5d3  gcc/testsuite/g++.dg/special/conpr-1.C
--- 22557,22563 ----
  3357bf9a2204710e948cb278fb4c4266  gcc/testsuite/g++.dg/simulate-thread/atomics-2.C
  0f9193c70bd9c12ca05e5645fdd35442  gcc/testsuite/g++.dg/simulate-thread/bitfields-2.C
  f9a70819a6e534b6c462618926ea0a80  gcc/testsuite/g++.dg/simulate-thread/bitfields.C
! 417bf79d18f36137f438f1e7b3d2c6b5  gcc/testsuite/g++.dg/simulate-thread/simulate-thread.exp
  c6cf9552e831a422e53a8ee8d8817449  gcc/testsuite/g++.dg/simulate-thread/simulate-thread.gdb
  8ed1bb09d81129e522f6ac6dce99d52a  gcc/testsuite/g++.dg/simulate-thread/simulate-thread.h
  2a467b197d39f6d623192355bbc4b5d3  gcc/testsuite/g++.dg/special/conpr-1.C
*************** ce313483756ae4ae75458a512a089656  gcc/te
*** 20491,20497 ****
  09034a812fccea6ecaa6edd2f8089fc9  gcc/testsuite/g++.dg/special/conpr-3a.cc
  0d5597e1f29008b02b626a0d09bf9c34  gcc/testsuite/g++.dg/special/conpr-3b.cc
  a0eb468046d5e36275ade20495e2f0c4  gcc/testsuite/g++.dg/special/conpr-4.C
! 5e86b2c0ba1c76afe6d7725c8f765b28  gcc/testsuite/g++.dg/special/ecos.exp
  d646642e04b6f7a6bb987dddc08a0268  gcc/testsuite/g++.dg/special/initp1.C
  ae5f6e9b349b6bd54b510d6f4e11eab0  gcc/testsuite/g++.dg/special/initpri1.C
  495d2d9e552898de91e04d1536c2d0bc  gcc/testsuite/g++.dg/special/initpri2.C
--- 22567,22573 ----
  09034a812fccea6ecaa6edd2f8089fc9  gcc/testsuite/g++.dg/special/conpr-3a.cc
  0d5597e1f29008b02b626a0d09bf9c34  gcc/testsuite/g++.dg/special/conpr-3b.cc
  a0eb468046d5e36275ade20495e2f0c4  gcc/testsuite/g++.dg/special/conpr-4.C
! fb633cf0b73b71287579d4a438e884b3  gcc/testsuite/g++.dg/special/ecos.exp
  d646642e04b6f7a6bb987dddc08a0268  gcc/testsuite/g++.dg/special/initp1.C
  ae5f6e9b349b6bd54b510d6f4e11eab0  gcc/testsuite/g++.dg/special/initpri1.C
  495d2d9e552898de91e04d1536c2d0bc  gcc/testsuite/g++.dg/special/initpri2.C
*************** c1046dd316dec6f0b685aa481a1b9387  gcc/te
*** 20500,20505 ****
--- 22576,22582 ----
  b57591402d64bc0218597be33d025525  gcc/testsuite/g++.dg/spellcheck-fields.C
  10062571e916c88fbeb05d689547ddb5  gcc/testsuite/g++.dg/spellcheck-identifiers-2.C
  328a465a44edb7f7e2aea06d3d34791d  gcc/testsuite/g++.dg/spellcheck-identifiers.C
+ fa82b75c818bf152419737b1f56ac4fc  gcc/testsuite/g++.dg/spellcheck-inttypes.C
  c0c20230f9ca78ee531a757fe9c20cdc  gcc/testsuite/g++.dg/spellcheck-macro-ordering-2.C
  c7d19bcfd6293dcc2e1b62c71b24d14e  gcc/testsuite/g++.dg/spellcheck-macro-ordering.C
  138b26dd96477d5ca37e93e1baad9a7f  gcc/testsuite/g++.dg/spellcheck-ns.C
*************** f5d8d2f92f0dbaa3ca7558a778137fb3  gcc/te
*** 20510,20517 ****
  4671c4e6fc200d3456e42dec09c68203  gcc/testsuite/g++.dg/spellcheck-pr80177.C
  569260f7b52f8c920f20c7151931a919  gcc/testsuite/g++.dg/spellcheck-reswords.C
  a450a634e49ab2a381246a13bda48525  gcc/testsuite/g++.dg/spellcheck-single-vs-multiple.C
  46f61fb2a7c1973c8e816d526bb76ffc  gcc/testsuite/g++.dg/spellcheck-stdlib.C
! a347a630d5e9c05f18b4d187be4879a1  gcc/testsuite/g++.dg/spellcheck-typenames.C
  9ad7d6448de7763f41feba51662efa9e  gcc/testsuite/g++.dg/sso-1.C
  3effe360372112f0a4945b07676db736  gcc/testsuite/g++.dg/sso-2.C
  bd131607abeb702a0c04932a3e443c5d  gcc/testsuite/g++.dg/stackprotectexplicit2.C
--- 22587,22595 ----
  4671c4e6fc200d3456e42dec09c68203  gcc/testsuite/g++.dg/spellcheck-pr80177.C
  569260f7b52f8c920f20c7151931a919  gcc/testsuite/g++.dg/spellcheck-reswords.C
  a450a634e49ab2a381246a13bda48525  gcc/testsuite/g++.dg/spellcheck-single-vs-multiple.C
+ cf711ea2ac1f0a7044e001bc02282e5e  gcc/testsuite/g++.dg/spellcheck-stdint.C
  46f61fb2a7c1973c8e816d526bb76ffc  gcc/testsuite/g++.dg/spellcheck-stdlib.C
! 7eb03d350a29bce257b72d771d908294  gcc/testsuite/g++.dg/spellcheck-typenames.C
  9ad7d6448de7763f41feba51662efa9e  gcc/testsuite/g++.dg/sso-1.C
  3effe360372112f0a4945b07676db736  gcc/testsuite/g++.dg/sso-2.C
  bd131607abeb702a0c04932a3e443c5d  gcc/testsuite/g++.dg/stackprotectexplicit2.C
*************** dd2defc24babdb2f3aa8673df9c6f9ee  gcc/te
*** 20524,20530 ****
  1b0c9fccd7b07ffc338e9e9ca4dbb8c0  gcc/testsuite/g++.dg/tc1/dr128.C
  0af74303a4251b24669c368429e4af91  gcc/testsuite/g++.dg/tc1/dr135.C
  99d9baa145878193d96bb8fdf40450f8  gcc/testsuite/g++.dg/tc1/dr137.C
! 977fe6e540037e43f48a3d49f20d4b41  gcc/testsuite/g++.dg/tc1/dr142.C
  4293e24bf448b6ddc91f799f06874284  gcc/testsuite/g++.dg/tc1/dr147.C
  db994e5b10fcb3e8ba3d62cd17b3ae65  gcc/testsuite/g++.dg/tc1/dr152.C
  9b56ad73b780b825e0de60463c83386f  gcc/testsuite/g++.dg/tc1/dr159.C
--- 22602,22608 ----
  1b0c9fccd7b07ffc338e9e9ca4dbb8c0  gcc/testsuite/g++.dg/tc1/dr128.C
  0af74303a4251b24669c368429e4af91  gcc/testsuite/g++.dg/tc1/dr135.C
  99d9baa145878193d96bb8fdf40450f8  gcc/testsuite/g++.dg/tc1/dr137.C
! 3744495bca19f5bc07f054153fed1b2d  gcc/testsuite/g++.dg/tc1/dr142.C
  4293e24bf448b6ddc91f799f06874284  gcc/testsuite/g++.dg/tc1/dr147.C
  db994e5b10fcb3e8ba3d62cd17b3ae65  gcc/testsuite/g++.dg/tc1/dr152.C
  9b56ad73b780b825e0de60463c83386f  gcc/testsuite/g++.dg/tc1/dr159.C
*************** f5dd522ddee3217946f5d8e187a18f08  gcc/te
*** 20543,20549 ****
  f95188ab9a32c62f14c6cecc4da4c6b7  gcc/testsuite/g++.dg/tc1/dr217.C
  9c539eaced56bf5f6dfcc87de03577a2  gcc/testsuite/g++.dg/tc1/dr48.C
  2d505ce906bacb84abf98000ee1f70ad  gcc/testsuite/g++.dg/tc1/dr49.C
! 943b2484b7266a9c7cb540f47820ed0e  gcc/testsuite/g++.dg/tc1/dr52.C
  6a9b2ff3865ebd4b9b4a24ea9e5fa1e0  gcc/testsuite/g++.dg/tc1/dr68.C
  99fbd5404170a32ec3b81a4c87114aa9  gcc/testsuite/g++.dg/tc1/dr74.C
  4dd95811a9583fd5b2412c2c99d7dff9  gcc/testsuite/g++.dg/tc1/dr76.C
--- 22621,22627 ----
  f95188ab9a32c62f14c6cecc4da4c6b7  gcc/testsuite/g++.dg/tc1/dr217.C
  9c539eaced56bf5f6dfcc87de03577a2  gcc/testsuite/g++.dg/tc1/dr48.C
  2d505ce906bacb84abf98000ee1f70ad  gcc/testsuite/g++.dg/tc1/dr49.C
! 67859d251420e5fcec24790feb06b815  gcc/testsuite/g++.dg/tc1/dr52.C
  6a9b2ff3865ebd4b9b4a24ea9e5fa1e0  gcc/testsuite/g++.dg/tc1/dr68.C
  99fbd5404170a32ec3b81a4c87114aa9  gcc/testsuite/g++.dg/tc1/dr74.C
  4dd95811a9583fd5b2412c2c99d7dff9  gcc/testsuite/g++.dg/tc1/dr76.C
*************** c7c275427c1f23da1f5270746886e61d  gcc/te
*** 20576,20581 ****
--- 22654,22665 ----
  f1f5a04f41640e7625de6d557491ab7d  gcc/testsuite/g++.dg/template/access28.C
  3d00ae17a8a2fd7c7d604f91e69dd892  gcc/testsuite/g++.dg/template/access29.C
  4568008afd0d9ae5ca44f4521d3e1151  gcc/testsuite/g++.dg/template/access3.C
+ e0e17709d0e15ab59acb98fddf75974d  gcc/testsuite/g++.dg/template/access30.C
+ d5229c37c43e6a9c1a45d1ec7d2bf7e5  gcc/testsuite/g++.dg/template/access31.C
+ 79b719408cfbd1e6a4a920a5d3ccfeab  gcc/testsuite/g++.dg/template/access32.C
+ 9e6c1fd417041a51a4d86a49baef2d00  gcc/testsuite/g++.dg/template/access33.C
+ 8085d28744228961aaed5d3af4e1df4e  gcc/testsuite/g++.dg/template/access34.C
+ 0524646845bf130c39116db60554f59c  gcc/testsuite/g++.dg/template/access35.C
  7ea6af968e54287945d17d2352e36fd6  gcc/testsuite/g++.dg/template/access4.C
  043c53bbc7cad60a3c72bfa79987f011  gcc/testsuite/g++.dg/template/access5.C
  3f2e5ae210f767c1589637afbcf45353  gcc/testsuite/g++.dg/template/access6.C
*************** a1f7515ba86f0bee05a8d1da2482e446  gcc/te
*** 20626,20632 ****
  14ad9d85455e159c57805c987fca372e  gcc/testsuite/g++.dg/template/array28.C
  cb999728c2f55f8eb566e7b89e2c6991  gcc/testsuite/g++.dg/template/array29.C
  353ce65cd4b47cb87d4a7e33038e372d  gcc/testsuite/g++.dg/template/array3.C
! 57b951296eaf5bbf4255fc53b943fb9d  gcc/testsuite/g++.dg/template/array30.C
  d2eee19abbd6cd68d3e5a6d0796250ea  gcc/testsuite/g++.dg/template/array31.C
  58bf2945c28e88b34cd3972d57fea390  gcc/testsuite/g++.dg/template/array32.C
  cfe8d64e9ca37d3d958070b43b9508ee  gcc/testsuite/g++.dg/template/array33.C
--- 22710,22716 ----
  14ad9d85455e159c57805c987fca372e  gcc/testsuite/g++.dg/template/array28.C
  cb999728c2f55f8eb566e7b89e2c6991  gcc/testsuite/g++.dg/template/array29.C
  353ce65cd4b47cb87d4a7e33038e372d  gcc/testsuite/g++.dg/template/array3.C
! 01870f622e2ef7c68c4b39308420e4ec  gcc/testsuite/g++.dg/template/array30.C
  d2eee19abbd6cd68d3e5a6d0796250ea  gcc/testsuite/g++.dg/template/array31.C
  58bf2945c28e88b34cd3972d57fea390  gcc/testsuite/g++.dg/template/array32.C
  cfe8d64e9ca37d3d958070b43b9508ee  gcc/testsuite/g++.dg/template/array33.C
*************** c557bdb58ff52b9fc368185880923627  gcc/te
*** 20636,20642 ****
  294448858892b33e7116237b86ab785a  gcc/testsuite/g++.dg/template/array6.C
  aceb847bfdf79fcbbe209d69a1fcd05a  gcc/testsuite/g++.dg/template/array7.C
  9135445bfc294af3cf8b77142f5e8782  gcc/testsuite/g++.dg/template/array8.C
! 9ff0e683b6d55fee7915dd8f28470138  gcc/testsuite/g++.dg/template/array9.C
  1425424ec12dc2d174e963018ba1fb0a  gcc/testsuite/g++.dg/template/arrow1.C
  588bddbb18429763190474bb78d16fb3  gcc/testsuite/g++.dg/template/arrow2.C
  e30efe0e5c7e8e02c14d6e5369fe8a0d  gcc/testsuite/g++.dg/template/arrow3.C
--- 22720,22726 ----
  294448858892b33e7116237b86ab785a  gcc/testsuite/g++.dg/template/array6.C
  aceb847bfdf79fcbbe209d69a1fcd05a  gcc/testsuite/g++.dg/template/array7.C
  9135445bfc294af3cf8b77142f5e8782  gcc/testsuite/g++.dg/template/array8.C
! 25773901576b8d0bd68e8e9999cb3b20  gcc/testsuite/g++.dg/template/array9.C
  1425424ec12dc2d174e963018ba1fb0a  gcc/testsuite/g++.dg/template/arrow1.C
  588bddbb18429763190474bb78d16fb3  gcc/testsuite/g++.dg/template/arrow2.C
  e30efe0e5c7e8e02c14d6e5369fe8a0d  gcc/testsuite/g++.dg/template/arrow3.C
*************** cb422094173e29b6267dd8e869190b16  gcc/te
*** 20669,20681 ****
  85fdca2492646ea03edf6e35b0a582d0  gcc/testsuite/g++.dg/template/canon-type-5.C
  c54175875559dba3c1940b58610bf79a  gcc/testsuite/g++.dg/template/canon-type-6.C
  d4dd1fcb5ba5fa6c770548eb750325c0  gcc/testsuite/g++.dg/template/canon-type-7.C
! 692bdd39b8e6b8277d4dc42d635d4e0c  gcc/testsuite/g++.dg/template/canon-type-8.C
  883c715e739a48e6b3cdf914b95fb5e0  gcc/testsuite/g++.dg/template/canon-type-9.C
  dae4547b0ed98c262ad1adff2778e177  gcc/testsuite/g++.dg/template/cast1.C
  e37c2b4d718f2648117dc43cd2edf39d  gcc/testsuite/g++.dg/template/cast2.C
  f715bb7e6f7666f67d1ebfc95f66935e  gcc/testsuite/g++.dg/template/cast3.C
  ecc63f230e45932f5db42d1a44143758  gcc/testsuite/g++.dg/template/cast4.C
  f5d2e883a8bc60334451d54c7ef5bef7  gcc/testsuite/g++.dg/template/cast5.C
  bff0337fddd26da8a7224599975ab1ba  gcc/testsuite/g++.dg/template/char1.C
  706f2857327f695c7b984df9d14be0b0  gcc/testsuite/g++.dg/template/class1.C
  4a9fdbf9e37ab379d97118860f6e5744  gcc/testsuite/g++.dg/template/class2.C
--- 22753,22766 ----
  85fdca2492646ea03edf6e35b0a582d0  gcc/testsuite/g++.dg/template/canon-type-5.C
  c54175875559dba3c1940b58610bf79a  gcc/testsuite/g++.dg/template/canon-type-6.C
  d4dd1fcb5ba5fa6c770548eb750325c0  gcc/testsuite/g++.dg/template/canon-type-7.C
! 568217f500ba39327214c1423855c5ee  gcc/testsuite/g++.dg/template/canon-type-8.C
  883c715e739a48e6b3cdf914b95fb5e0  gcc/testsuite/g++.dg/template/canon-type-9.C
  dae4547b0ed98c262ad1adff2778e177  gcc/testsuite/g++.dg/template/cast1.C
  e37c2b4d718f2648117dc43cd2edf39d  gcc/testsuite/g++.dg/template/cast2.C
  f715bb7e6f7666f67d1ebfc95f66935e  gcc/testsuite/g++.dg/template/cast3.C
  ecc63f230e45932f5db42d1a44143758  gcc/testsuite/g++.dg/template/cast4.C
  f5d2e883a8bc60334451d54c7ef5bef7  gcc/testsuite/g++.dg/template/cast5.C
+ 25e5d2cd5ae3a3b20f4fbabdcf17fc48  gcc/testsuite/g++.dg/template/cast6.C
  bff0337fddd26da8a7224599975ab1ba  gcc/testsuite/g++.dg/template/char1.C
  706f2857327f695c7b984df9d14be0b0  gcc/testsuite/g++.dg/template/class1.C
  4a9fdbf9e37ab379d97118860f6e5744  gcc/testsuite/g++.dg/template/class2.C
*************** d75b945d8bfffb304a8d55dc4a97d457  gcc/te
*** 20699,20706 ****
  5a23112c6b3e5d838934cc1d80f3d075  gcc/testsuite/g++.dg/template/const6.C
  4a59aab32c22e47414d9d9e930f7986d  gcc/testsuite/g++.dg/template/const7.C
  29ed92e899cee3c271630df694a225fc  gcc/testsuite/g++.dg/template/const8.C
! 86a7d82d7e4fadd71353ebf643d761f0  gcc/testsuite/g++.dg/template/constant1.C
! 84ddc9149ab5cd6be47e98d5f28f6bfb  gcc/testsuite/g++.dg/template/constant2.C
  446a4c3e34ffa3232ea0f3f944b579fb  gcc/testsuite/g++.dg/template/conv1.C
  2c3b429768e3e6f954114fbd126e3122  gcc/testsuite/g++.dg/template/conv10.C
  1f099f4d18cc01cba4d862343a26e74b  gcc/testsuite/g++.dg/template/conv11.C
--- 22784,22791 ----
  5a23112c6b3e5d838934cc1d80f3d075  gcc/testsuite/g++.dg/template/const6.C
  4a59aab32c22e47414d9d9e930f7986d  gcc/testsuite/g++.dg/template/const7.C
  29ed92e899cee3c271630df694a225fc  gcc/testsuite/g++.dg/template/const8.C
! 101921c4e4a0cdd475e00e1db99a21ce  gcc/testsuite/g++.dg/template/constant1.C
! 51647a78bb51a37026dd489471c29bf2  gcc/testsuite/g++.dg/template/constant2.C
  446a4c3e34ffa3232ea0f3f944b579fb  gcc/testsuite/g++.dg/template/conv1.C
  2c3b429768e3e6f954114fbd126e3122  gcc/testsuite/g++.dg/template/conv10.C
  1f099f4d18cc01cba4d862343a26e74b  gcc/testsuite/g++.dg/template/conv11.C
*************** f75072de1c2abdfca708b732cbfafa89  gcc/te
*** 20725,20732 ****
  44d05d042dc79a79585f17b3bcda6ec0  gcc/testsuite/g++.dg/template/crash103.C
  1225a54926913e691b51137aef8b5d33  gcc/testsuite/g++.dg/template/crash104.C
  f07fd8a3820e9db30fbbab54d71dd891  gcc/testsuite/g++.dg/template/crash105.C
! ebe8deab4ad98d26b1d7546c1959a48b  gcc/testsuite/g++.dg/template/crash106.C
! a644730d37dada35a360aa5de1995f15  gcc/testsuite/g++.dg/template/crash107.C
  01e34c6dbadd8c372851425abdb78adb  gcc/testsuite/g++.dg/template/crash108.C
  b3167df4bc44e634fce27a27e383e9a4  gcc/testsuite/g++.dg/template/crash109.C
  b9d6c3e2462b2f141eef9706fb73f7ad  gcc/testsuite/g++.dg/template/crash11.C
--- 22810,22817 ----
  44d05d042dc79a79585f17b3bcda6ec0  gcc/testsuite/g++.dg/template/crash103.C
  1225a54926913e691b51137aef8b5d33  gcc/testsuite/g++.dg/template/crash104.C
  f07fd8a3820e9db30fbbab54d71dd891  gcc/testsuite/g++.dg/template/crash105.C
! d00025415184603d65c2c72426112c43  gcc/testsuite/g++.dg/template/crash106.C
! 792c7b5aeb05b03e17861b41172963b0  gcc/testsuite/g++.dg/template/crash107.C
  01e34c6dbadd8c372851425abdb78adb  gcc/testsuite/g++.dg/template/crash108.C
  b3167df4bc44e634fce27a27e383e9a4  gcc/testsuite/g++.dg/template/crash109.C
  b9d6c3e2462b2f141eef9706fb73f7ad  gcc/testsuite/g++.dg/template/crash11.C
*************** ef817469f252f778c53765d1bbf1e129  gcc/te
*** 20739,20745 ****
  1ec1f2242385bbd641d2a127f8932ab5  gcc/testsuite/g++.dg/template/crash116.C
  c46bfc45cf117d650bdd4a356b6c84a3  gcc/testsuite/g++.dg/template/crash117.C
  6c418d187f79d11a3f9864df6523f98c  gcc/testsuite/g++.dg/template/crash118.C
! 36bbabd9c454600f8b5832f5f8b2a00b  gcc/testsuite/g++.dg/template/crash119.C
  627140de004634696fc53c98684c31c2  gcc/testsuite/g++.dg/template/crash12.C
  230fdf28e2679badd4d1e2ada88965a3  gcc/testsuite/g++.dg/template/crash120.C
  df0ba8413403f6b40fdb4cf483e8ae03  gcc/testsuite/g++.dg/template/crash121.C
--- 22824,22830 ----
  1ec1f2242385bbd641d2a127f8932ab5  gcc/testsuite/g++.dg/template/crash116.C
  c46bfc45cf117d650bdd4a356b6c84a3  gcc/testsuite/g++.dg/template/crash117.C
  6c418d187f79d11a3f9864df6523f98c  gcc/testsuite/g++.dg/template/crash118.C
! 0447baaa0179929b6c4fbb9ab7254841  gcc/testsuite/g++.dg/template/crash119.C
  627140de004634696fc53c98684c31c2  gcc/testsuite/g++.dg/template/crash12.C
  230fdf28e2679badd4d1e2ada88965a3  gcc/testsuite/g++.dg/template/crash120.C
  df0ba8413403f6b40fdb4cf483e8ae03  gcc/testsuite/g++.dg/template/crash121.C
*************** d14caefc036fb29a67deb7bc23946ad0  gcc/te
*** 20754,20759 ****
--- 22839,22845 ----
  df27fa537f93cbc7c2d2e1f1d60aee3e  gcc/testsuite/g++.dg/template/crash13.C
  9c6b765ef2765893236204902d1a1e19  gcc/testsuite/g++.dg/template/crash130.C
  89f747766be706a5f5c19c7e4868993b  gcc/testsuite/g++.dg/template/crash131.C
+ 8295637f711a0ce2e777cc798e8a6d00  gcc/testsuite/g++.dg/template/crash132.C
  7c732ef3b17279bd746eb1196b0d76fe  gcc/testsuite/g++.dg/template/crash14.C
  e50e217f7da35dc497156675b2547e44  gcc/testsuite/g++.dg/template/crash15.C
  0b7b35a94bb1a8a5457b2c3bd299d5e2  gcc/testsuite/g++.dg/template/crash16.C
*************** df38e330499294dc7efff5c11e5c3530  gcc/te
*** 20786,20792 ****
  0e9a3be86c767d4c26ffb432816872ef  gcc/testsuite/g++.dg/template/crash40.C
  d19af02c7a265a8211457432a191f4f5  gcc/testsuite/g++.dg/template/crash41.C
  7845da4d1b1384a76c0c0244fc45ef41  gcc/testsuite/g++.dg/template/crash42.C
! 445602937029d55446b2a4e962079812  gcc/testsuite/g++.dg/template/crash43.C
  37c9686aad1de31e5858e6070db0fd76  gcc/testsuite/g++.dg/template/crash44.C
  0a5188978e44004ccb2352fb7ea44cf5  gcc/testsuite/g++.dg/template/crash45.C
  933d195d117ede217f70567360e6e511  gcc/testsuite/g++.dg/template/crash46.C
--- 22872,22878 ----
  0e9a3be86c767d4c26ffb432816872ef  gcc/testsuite/g++.dg/template/crash40.C
  d19af02c7a265a8211457432a191f4f5  gcc/testsuite/g++.dg/template/crash41.C
  7845da4d1b1384a76c0c0244fc45ef41  gcc/testsuite/g++.dg/template/crash42.C
! b01c11b4d77c761e36d0ddf04d2ac666  gcc/testsuite/g++.dg/template/crash43.C
  37c9686aad1de31e5858e6070db0fd76  gcc/testsuite/g++.dg/template/crash44.C
  0a5188978e44004ccb2352fb7ea44cf5  gcc/testsuite/g++.dg/template/crash45.C
  933d195d117ede217f70567360e6e511  gcc/testsuite/g++.dg/template/crash46.C
*************** c85f4fa8150e192f434daf84a485d751  gcc/te
*** 20820,20827 ****
  5af3f62d9558cd52f4d5aa70db89dd19  gcc/testsuite/g++.dg/template/crash72.C
  b6d335f5ace93b3d4a0fd5d2614a2df2  gcc/testsuite/g++.dg/template/crash73.C
  1363ef4acbdebfd7f9100d267a7e11ab  gcc/testsuite/g++.dg/template/crash74.C
! 3f3886cb6cade0a026bbcff85e44887b  gcc/testsuite/g++.dg/template/crash75.C
! f1a8c42b37d318db77076e2f45ccbce5  gcc/testsuite/g++.dg/template/crash76.C
  e5bf482e74f6efd9012f177851306bed  gcc/testsuite/g++.dg/template/crash77.C
  63aa4ea81419f0f2436d71c62bb543c3  gcc/testsuite/g++.dg/template/crash78.C
  fbd484dabcedafb4f6a55188390fd076  gcc/testsuite/g++.dg/template/crash79.C
--- 22906,22913 ----
  5af3f62d9558cd52f4d5aa70db89dd19  gcc/testsuite/g++.dg/template/crash72.C
  b6d335f5ace93b3d4a0fd5d2614a2df2  gcc/testsuite/g++.dg/template/crash73.C
  1363ef4acbdebfd7f9100d267a7e11ab  gcc/testsuite/g++.dg/template/crash74.C
! 67446878f3d30897b6066f5755db7515  gcc/testsuite/g++.dg/template/crash75.C
! a5e5765e0c9de4e6fa24589726daf7a9  gcc/testsuite/g++.dg/template/crash76.C
  e5bf482e74f6efd9012f177851306bed  gcc/testsuite/g++.dg/template/crash77.C
  63aa4ea81419f0f2436d71c62bb543c3  gcc/testsuite/g++.dg/template/crash78.C
  fbd484dabcedafb4f6a55188390fd076  gcc/testsuite/g++.dg/template/crash79.C
*************** c9dc4ab7acea171537b7ea2d00500ffa  gcc/te
*** 20832,20842 ****
  3e538c7423ba15ab0a53e61e7f3a2d57  gcc/testsuite/g++.dg/template/crash83.C
  8db4ae991cd33734286b7234c8ca8fe0  gcc/testsuite/g++.dg/template/crash84.C
  fac18fbcfe10c67843c28437a6b92d3c  gcc/testsuite/g++.dg/template/crash85.C
! 47853dc98c900252d376e5f23b10a9c9  gcc/testsuite/g++.dg/template/crash87.C
  59238bcb93582e024a0c5cb12c7ab7e1  gcc/testsuite/g++.dg/template/crash88.C
  253b3010ea41f19cf1dc0f74c2af6b21  gcc/testsuite/g++.dg/template/crash89.C
  44592f20d07e36f90633528dd90bfad3  gcc/testsuite/g++.dg/template/crash9.C
! 36b0f029ca4df92d2fde216b9443c83b  gcc/testsuite/g++.dg/template/crash90.C
  6e5869fff35fe84df27ea845600fd1b3  gcc/testsuite/g++.dg/template/crash91.C
  e7ff2129d4e25ee3b9f96c6b85e5ebc9  gcc/testsuite/g++.dg/template/crash92.C
  6ce63664012487deb9533d83bc1200a8  gcc/testsuite/g++.dg/template/crash93.C
--- 22918,22928 ----
  3e538c7423ba15ab0a53e61e7f3a2d57  gcc/testsuite/g++.dg/template/crash83.C
  8db4ae991cd33734286b7234c8ca8fe0  gcc/testsuite/g++.dg/template/crash84.C
  fac18fbcfe10c67843c28437a6b92d3c  gcc/testsuite/g++.dg/template/crash85.C
! 4e68e76b3d605d015e45ddf7015b54fb  gcc/testsuite/g++.dg/template/crash87.C
  59238bcb93582e024a0c5cb12c7ab7e1  gcc/testsuite/g++.dg/template/crash88.C
  253b3010ea41f19cf1dc0f74c2af6b21  gcc/testsuite/g++.dg/template/crash89.C
  44592f20d07e36f90633528dd90bfad3  gcc/testsuite/g++.dg/template/crash9.C
! 6dc1679f704a073c3d6c7683ed6140ab  gcc/testsuite/g++.dg/template/crash90.C
  6e5869fff35fe84df27ea845600fd1b3  gcc/testsuite/g++.dg/template/crash91.C
  e7ff2129d4e25ee3b9f96c6b85e5ebc9  gcc/testsuite/g++.dg/template/crash92.C
  6ce63664012487deb9533d83bc1200a8  gcc/testsuite/g++.dg/template/crash93.C
*************** a2d8358dfed423c4946dd5255b3cc157  gcc/te
*** 20923,20928 ****
--- 23009,23016 ----
  961c1bd1f64eeab0006d6d1c049502ad  gcc/testsuite/g++.dg/template/dependent-name8.C
  0d70e119838e4a812a49bbd71a56c2fa  gcc/testsuite/g++.dg/template/dependent-name9.C
  613ac0918dbcfb8b08b6918921bf45f6  gcc/testsuite/g++.dg/template/dependent-scope1.C
+ 935d94b24ad55cca0fb4dcb6ec820e23  gcc/testsuite/g++.dg/template/dependent-tmpl1.C
+ a77e6e7dfe945ae93a74a5a76f57b7c3  gcc/testsuite/g++.dg/template/dependent-tmpl2.C
  cbc02ebab52202016bb66877922a9029  gcc/testsuite/g++.dg/template/double-greater-than-fixit.C
  24d110fcc400ef7bdd0cd7b6baead25e  gcc/testsuite/g++.dg/template/dr1391-1.C
  02af2091a050c58d8318a5ee3b8a4291  gcc/testsuite/g++.dg/template/dr1391-2.C
*************** c10faccbba72797e793c4697fe233f9c  gcc/te
*** 20936,20942 ****
  1884ceace01fa586f2b2e401389c4d6c  gcc/testsuite/g++.dg/template/dtor10.C
  9fd7932701e6809fa0bec2f61112a78d  gcc/testsuite/g++.dg/template/dtor2.C
  1a5ba691093323438c61f31621e88355  gcc/testsuite/g++.dg/template/dtor3.C
! 6e56714a3e1899ea002e689d9f32a53f  gcc/testsuite/g++.dg/template/dtor4.C
  6df398ccb1fe455e5493303db41ea421  gcc/testsuite/g++.dg/template/dtor5.C
  7c26bce0e147a736ed5e0ed0993c315e  gcc/testsuite/g++.dg/template/dtor6.C
  4a814bc6794f74cc5cd4043a45a39370  gcc/testsuite/g++.dg/template/dtor7.C
--- 23024,23030 ----
  1884ceace01fa586f2b2e401389c4d6c  gcc/testsuite/g++.dg/template/dtor10.C
  9fd7932701e6809fa0bec2f61112a78d  gcc/testsuite/g++.dg/template/dtor2.C
  1a5ba691093323438c61f31621e88355  gcc/testsuite/g++.dg/template/dtor3.C
! 30baa920951cc8b6314c9d2634a73d46  gcc/testsuite/g++.dg/template/dtor4.C
  6df398ccb1fe455e5493303db41ea421  gcc/testsuite/g++.dg/template/dtor5.C
  7c26bce0e147a736ed5e0ed0993c315e  gcc/testsuite/g++.dg/template/dtor6.C
  4a814bc6794f74cc5cd4043a45a39370  gcc/testsuite/g++.dg/template/dtor7.C
*************** dfe8fe9abce8be55414485a111a8c15f  gcc/te
*** 20954,20960 ****
  294cb584d05edd3313c80b73e8cd5f4d  gcc/testsuite/g++.dg/template/enum6.C
  64a39245eac282a03a7fe5d39bebcde3  gcc/testsuite/g++.dg/template/enum7.C
  c9482bcfa2d35bb4e349100f9060f230  gcc/testsuite/g++.dg/template/enum8.C
! 96f7108f863832f018e00d40ac665c3e  gcc/testsuite/g++.dg/template/error-recovery1.C
  b3e2bbd8608c9f9206f9850201803c3c  gcc/testsuite/g++.dg/template/error-recovery2.C
  27356488b9c5da7cda4057e6aac17f5a  gcc/testsuite/g++.dg/template/error-recovery3.C
  8d2033f67ecc3fbeb7e386658b6253a0  gcc/testsuite/g++.dg/template/error-recovery4.C
--- 23042,23048 ----
  294cb584d05edd3313c80b73e8cd5f4d  gcc/testsuite/g++.dg/template/enum6.C
  64a39245eac282a03a7fe5d39bebcde3  gcc/testsuite/g++.dg/template/enum7.C
  c9482bcfa2d35bb4e349100f9060f230  gcc/testsuite/g++.dg/template/enum8.C
! 84da5f16e9ca41c31737fa160f9252cd  gcc/testsuite/g++.dg/template/error-recovery1.C
  b3e2bbd8608c9f9206f9850201803c3c  gcc/testsuite/g++.dg/template/error-recovery2.C
  27356488b9c5da7cda4057e6aac17f5a  gcc/testsuite/g++.dg/template/error-recovery3.C
  8d2033f67ecc3fbeb7e386658b6253a0  gcc/testsuite/g++.dg/template/error-recovery4.C
*************** d8c534ccbad9bbbc650685d274b0d2ca  gcc/te
*** 20975,20999 ****
  0410b7c7bd9073553278277bf23f74ff  gcc/testsuite/g++.dg/template/error22.C
  fa7f4116ebf37e2b57813ba48500f497  gcc/testsuite/g++.dg/template/error23.C
  6c54776e760954055280860b689859b0  gcc/testsuite/g++.dg/template/error24.C
! 88e5836eca5b1d6a4995747486ad482a  gcc/testsuite/g++.dg/template/error25.C
  4193d6f584da90f2fe4c2e4cc8ef6c43  gcc/testsuite/g++.dg/template/error26.C
  d94402fce12c3debaa6aa7a22d0d5261  gcc/testsuite/g++.dg/template/error27.C
  a687552bc36835830b1f2af841f44459  gcc/testsuite/g++.dg/template/error28.C
  f942827c4c8f49e463f6196ed54942bb  gcc/testsuite/g++.dg/template/error29.C
  0e96862a75ffea6e3b8357e5251534dd  gcc/testsuite/g++.dg/template/error3.C
! dbb1788e9f2e9b977e0fb076e036e15d  gcc/testsuite/g++.dg/template/error30.C
  0f550f42a764725b5ef085971e281ea8  gcc/testsuite/g++.dg/template/error31.C
  95475caa3d2f02af77559820e82ebb1c  gcc/testsuite/g++.dg/template/error32.C
  237801950642a8652b123fbc000b9471  gcc/testsuite/g++.dg/template/error33.C
! 411a4732230a0fbd8972e03886c8d341  gcc/testsuite/g++.dg/template/error34.C
! 7b9093b26f8920c628c47bed533cc022  gcc/testsuite/g++.dg/template/error35.C
  39b6e4fbac4ab72f5dbde172cb19c369  gcc/testsuite/g++.dg/template/error36.C
  34ab2aefdfc2ee66c4a1c5d1830304e9  gcc/testsuite/g++.dg/template/error37.C
  ad5929ca4266aae58691ea1f8fae24e6  gcc/testsuite/g++.dg/template/error38.C
  20b72e33a910404fc40a48eb851375f6  gcc/testsuite/g++.dg/template/error39.C
  f141cefa67bbe6be0f8ee023996a1fbb  gcc/testsuite/g++.dg/template/error4.C
  b9e41ae6abb7bd214530b9d8fee49b42  gcc/testsuite/g++.dg/template/error40.C
! 69ccae3809305b08d23a96a1e4730072  gcc/testsuite/g++.dg/template/error41.C
  ab2750d62bfb7afdc283b7fa1c8c2a0a  gcc/testsuite/g++.dg/template/error42.C
  d58d76bac4c95f750552f6b080278a6d  gcc/testsuite/g++.dg/template/error43.C
  b001446d33d8c616d09be4d167938ac3  gcc/testsuite/g++.dg/template/error44.C
--- 23063,23087 ----
  0410b7c7bd9073553278277bf23f74ff  gcc/testsuite/g++.dg/template/error22.C
  fa7f4116ebf37e2b57813ba48500f497  gcc/testsuite/g++.dg/template/error23.C
  6c54776e760954055280860b689859b0  gcc/testsuite/g++.dg/template/error24.C
! 71733e631fa8818c87871de65f8e6b9d  gcc/testsuite/g++.dg/template/error25.C
  4193d6f584da90f2fe4c2e4cc8ef6c43  gcc/testsuite/g++.dg/template/error26.C
  d94402fce12c3debaa6aa7a22d0d5261  gcc/testsuite/g++.dg/template/error27.C
  a687552bc36835830b1f2af841f44459  gcc/testsuite/g++.dg/template/error28.C
  f942827c4c8f49e463f6196ed54942bb  gcc/testsuite/g++.dg/template/error29.C
  0e96862a75ffea6e3b8357e5251534dd  gcc/testsuite/g++.dg/template/error3.C
! 502376238140e1cc91dddc2190992aba  gcc/testsuite/g++.dg/template/error30.C
  0f550f42a764725b5ef085971e281ea8  gcc/testsuite/g++.dg/template/error31.C
  95475caa3d2f02af77559820e82ebb1c  gcc/testsuite/g++.dg/template/error32.C
  237801950642a8652b123fbc000b9471  gcc/testsuite/g++.dg/template/error33.C
! 105a82b535a16d4389529eac52326659  gcc/testsuite/g++.dg/template/error34.C
! ec5424870d858d65af5e881fa9983775  gcc/testsuite/g++.dg/template/error35.C
  39b6e4fbac4ab72f5dbde172cb19c369  gcc/testsuite/g++.dg/template/error36.C
  34ab2aefdfc2ee66c4a1c5d1830304e9  gcc/testsuite/g++.dg/template/error37.C
  ad5929ca4266aae58691ea1f8fae24e6  gcc/testsuite/g++.dg/template/error38.C
  20b72e33a910404fc40a48eb851375f6  gcc/testsuite/g++.dg/template/error39.C
  f141cefa67bbe6be0f8ee023996a1fbb  gcc/testsuite/g++.dg/template/error4.C
  b9e41ae6abb7bd214530b9d8fee49b42  gcc/testsuite/g++.dg/template/error40.C
! 7dafb2ad3666985b705d79256abcfdcc  gcc/testsuite/g++.dg/template/error41.C
  ab2750d62bfb7afdc283b7fa1c8c2a0a  gcc/testsuite/g++.dg/template/error42.C
  d58d76bac4c95f750552f6b080278a6d  gcc/testsuite/g++.dg/template/error43.C
  b001446d33d8c616d09be4d167938ac3  gcc/testsuite/g++.dg/template/error44.C
*************** bae48045ce1df918f09c5521dbfe01db  gcc/te
*** 21009,21020 ****
  16cfef30d9df45bb874d63e467a7acb2  gcc/testsuite/g++.dg/template/error53.C
  88b870e41229c363cbb5085bd02d7557  gcc/testsuite/g++.dg/template/error54.C
  55e4e0e15fc84a205703c1483c8dcb09  gcc/testsuite/g++.dg/template/error55.C
! 8b7713e41d887ceb5c007134cb418a41  gcc/testsuite/g++.dg/template/error56.C
  d7dd197474ca91bf31cfac374404267d  gcc/testsuite/g++.dg/template/error57.C
  07b03a083081547de28e0a1afd970688  gcc/testsuite/g++.dg/template/error58.C
  8f931fa8690071fcefc2b1d1d7483bfc  gcc/testsuite/g++.dg/template/error6.C
  3eacbecd65bcd0b71a23a9e2127f6e27  gcc/testsuite/g++.dg/template/error7.C
! 2f875903b8471a6a88b171e0dd3303cc  gcc/testsuite/g++.dg/template/error8.C
  140297b8d72a104b762af1a4e390e9ec  gcc/testsuite/g++.dg/template/error9.C
  e55630cc11be91571d5b580292e51090  gcc/testsuite/g++.dg/template/explicit-args1.C
  8c9d021c07761a64a71d7ed3a6cbd9f8  gcc/testsuite/g++.dg/template/explicit-args2.C
--- 23097,23109 ----
  16cfef30d9df45bb874d63e467a7acb2  gcc/testsuite/g++.dg/template/error53.C
  88b870e41229c363cbb5085bd02d7557  gcc/testsuite/g++.dg/template/error54.C
  55e4e0e15fc84a205703c1483c8dcb09  gcc/testsuite/g++.dg/template/error55.C
! 5ab9045e0c04a7f30535d864a605ddc4  gcc/testsuite/g++.dg/template/error56.C
  d7dd197474ca91bf31cfac374404267d  gcc/testsuite/g++.dg/template/error57.C
  07b03a083081547de28e0a1afd970688  gcc/testsuite/g++.dg/template/error58.C
+ 4077977a426a678e1310042bae833fd5  gcc/testsuite/g++.dg/template/error59.C
  8f931fa8690071fcefc2b1d1d7483bfc  gcc/testsuite/g++.dg/template/error6.C
  3eacbecd65bcd0b71a23a9e2127f6e27  gcc/testsuite/g++.dg/template/error7.C
! c9b240f0c05d21fb3eecb76bae171790  gcc/testsuite/g++.dg/template/error8.C
  140297b8d72a104b762af1a4e390e9ec  gcc/testsuite/g++.dg/template/error9.C
  e55630cc11be91571d5b580292e51090  gcc/testsuite/g++.dg/template/explicit-args1.C
  8c9d021c07761a64a71d7ed3a6cbd9f8  gcc/testsuite/g++.dg/template/explicit-args2.C
*************** b0a401cf45ed38cceaf9b0b254083c87  gcc/te
*** 21053,21059 ****
  282bfacb14630f61074b079267fd06a2  gcc/testsuite/g++.dg/template/friend15.C
  594b1d8549baa1139753596a807dbd91  gcc/testsuite/g++.dg/template/friend16.C
  28be52aef0745966b3435343b559e859  gcc/testsuite/g++.dg/template/friend17.C
! f9d91f7f647c86863fb887a784a193a8  gcc/testsuite/g++.dg/template/friend18.C
  599c6765352974ba5694506637bc1ea3  gcc/testsuite/g++.dg/template/friend19.C
  9d4f5b3213673d62379489a71f82b196  gcc/testsuite/g++.dg/template/friend20.C
  7ccd2fc3b3e573a3074eaf2980b008c9  gcc/testsuite/g++.dg/template/friend21.C
--- 23142,23148 ----
  282bfacb14630f61074b079267fd06a2  gcc/testsuite/g++.dg/template/friend15.C
  594b1d8549baa1139753596a807dbd91  gcc/testsuite/g++.dg/template/friend16.C
  28be52aef0745966b3435343b559e859  gcc/testsuite/g++.dg/template/friend17.C
! ba8a12270f4ff7f78c3c02b44028d7bc  gcc/testsuite/g++.dg/template/friend18.C
  599c6765352974ba5694506637bc1ea3  gcc/testsuite/g++.dg/template/friend19.C
  9d4f5b3213673d62379489a71f82b196  gcc/testsuite/g++.dg/template/friend20.C
  7ccd2fc3b3e573a3074eaf2980b008c9  gcc/testsuite/g++.dg/template/friend21.C
*************** e149357d205dbd99b9633575f81b34c7  gcc/te
*** 21109,21115 ****
--- 23198,23208 ----
  980ef0e11d8088865a3decbd5c2197eb  gcc/testsuite/g++.dg/template/friend65.C
  134eb1fa2dfe0e7e1737c002d17c7781  gcc/testsuite/g++.dg/template/friend66.C
  f8b96612d216a7b190f337247c8e8315  gcc/testsuite/g++.dg/template/friend67.C
+ 5fd10061d799b3da808888d5834b1df1  gcc/testsuite/g++.dg/template/friend68.C
+ 58712e229c64b951fc1f50272bfd28f5  gcc/testsuite/g++.dg/template/friend69.C
  1d4f923241bfe8578940f39c34f80d7c  gcc/testsuite/g++.dg/template/friend7.C
+ 33f91697bdb7e2294d13e7eb88e92b55  gcc/testsuite/g++.dg/template/friend70.C
+ 20f36227317bf6bb8a652c05ab8aac80  gcc/testsuite/g++.dg/template/friend71.C
  ceb858e95982ac0af2e9168f31aea229  gcc/testsuite/g++.dg/template/friend8.C
  59b5bf61b7f6210d3cf3b9b45692794a  gcc/testsuite/g++.dg/template/friend9.C
  d5d24fc94d133229a10c5b13f44c253b  gcc/testsuite/g++.dg/template/func1.C
*************** bead5f49843ac4a923c8b06419fc1688  gcc/te
*** 21118,21123 ****
--- 23211,23217 ----
  4b00efc6df70febef975b0e3b186b589  gcc/testsuite/g++.dg/template/incomplete1.C
  6eb242700c6d66d2e369769157f668e1  gcc/testsuite/g++.dg/template/incomplete10.C
  013b3193d7f45f44f8c7e8a4b8e35e24  gcc/testsuite/g++.dg/template/incomplete11.C
+ df3a53ea10f472305fa74419388585e8  gcc/testsuite/g++.dg/template/incomplete12.C
  df42e6e9d79980210f8fc115b6f3ea26  gcc/testsuite/g++.dg/template/incomplete2.C
  0b05707ff39fe3ad9f22ea6ba6d5be2c  gcc/testsuite/g++.dg/template/incomplete3.C
  8b8acaf760a13971063951b263ef315c  gcc/testsuite/g++.dg/template/incomplete4.C
*************** d7b45350c258784a47a153c1dedc979d  gcc/te
*** 21176,21181 ****
--- 23270,23278 ----
  5dec59646872d8a02daabc81749addb4  gcc/testsuite/g++.dg/template/linkage1.C
  29182ba864d966fb7660afbfb5b53867  gcc/testsuite/g++.dg/template/local-fn1.C
  5c91f2205ed2a7f3fb059e7ae61d14a0  gcc/testsuite/g++.dg/template/local-fn2.C
+ 0a5354fadb501a8e2beb59a5fee1674a  gcc/testsuite/g++.dg/template/local-fn3.C
+ d9981244f2f8fd4e74d52397db28fe14  gcc/testsuite/g++.dg/template/local-fn4.C
+ 2b0aaea042d19245e7e8611f526bdba8  gcc/testsuite/g++.dg/template/local-var1.C
  97787b0149d1c2ccd1052e2a39deabcc  gcc/testsuite/g++.dg/template/local1.C
  d32b0f4cfabbf7cf6a3f55db155096d2  gcc/testsuite/g++.dg/template/local2.C
  e254df20b082728d0e04a8e1b3b18557  gcc/testsuite/g++.dg/template/local3.C
*************** e8013d76ce3f8f9574197fee5026c527  gcc/te
*** 21188,21193 ****
--- 23285,23295 ----
  858241029bc9c5f2b0eb96ca1ff057a8  gcc/testsuite/g++.dg/template/lookup1.C
  cbe64dcb0e938a140c14903e9bebca64  gcc/testsuite/g++.dg/template/lookup10.C
  ef1d094142f0760b24e0164ef37929d0  gcc/testsuite/g++.dg/template/lookup11.C
+ dafd18b2a80a47f586915194376b5a3e  gcc/testsuite/g++.dg/template/lookup12.C
+ 10e6252791faabf11605b88f40f253c7  gcc/testsuite/g++.dg/template/lookup13.C
+ 50146857b99639fbbe16acbe2b459e7a  gcc/testsuite/g++.dg/template/lookup14.C
+ 234161e540c0b821bea3172ffd68f500  gcc/testsuite/g++.dg/template/lookup15.C
+ ac8830ccab134a3fc1afbb58a4aad381  gcc/testsuite/g++.dg/template/lookup16.C
  3327af698900091e44488904c96d0346  gcc/testsuite/g++.dg/template/lookup2.C
  0287287b4b02081228b1429a9526248d  gcc/testsuite/g++.dg/template/lookup3.C
  9932d99ab28768093ab672853377af03  gcc/testsuite/g++.dg/template/lookup4.C
*************** c0214387b51fcbd1778447a0a4a88720  gcc/te
*** 21205,21210 ****
--- 23307,23313 ----
  ddb3b643353af64559b17335859b3a54  gcc/testsuite/g++.dg/template/mem-partial2.C
  bb1864ad7f8c081274c8cf093f07ecb0  gcc/testsuite/g++.dg/template/mem-partial3.C
  2171be6a79133771e7c16903d8e61c00  gcc/testsuite/g++.dg/template/mem-spec1.C
+ 39fa35264006fd1ea4c0a84d6c8210b8  gcc/testsuite/g++.dg/template/mem-spec2.C
  08ee485d4a84252ae107afcbd8bb4b13  gcc/testsuite/g++.dg/template/mem_func_ptr.C
  243250e800627bff6492af7984793066  gcc/testsuite/g++.dg/template/mem_func_ptr2.C
  06216f93446b1e4df8acba1818eeb751  gcc/testsuite/g++.dg/template/member.C
*************** c68d85d18e13eca7b98c51e07b278cf0  gcc/te
*** 21290,21302 ****
  0841e0681f53f5792b711984e991f3a8  gcc/testsuite/g++.dg/template/nontype1.C
  e9af055ac6a0774b7565e0722c861adb  gcc/testsuite/g++.dg/template/nontype10.C
  9ba9723e8601b19208ac3f8350ee6695  gcc/testsuite/g++.dg/template/nontype11.C
! 3037367fee1a9d22fe259b9e9c046cff  gcc/testsuite/g++.dg/template/nontype12.C
! dab95fa2dfa5f83e92b3df59ccb21257  gcc/testsuite/g++.dg/template/nontype13.C
  937af4e6ac2cefe2dff1503c7819130f  gcc/testsuite/g++.dg/template/nontype14.C
  e4e6038ded9c7ed667109894758cea89  gcc/testsuite/g++.dg/template/nontype15.C
  6a5ee3bb412ed08b6f509ead28c93bf1  gcc/testsuite/g++.dg/template/nontype16.C
  6938006fe193f5813dbc894a73ef554f  gcc/testsuite/g++.dg/template/nontype17.C
! 2e2e9f4aee22cc3045d21afc23fb88ce  gcc/testsuite/g++.dg/template/nontype18.C
  03c70922eb3eb5694336f20230eab2eb  gcc/testsuite/g++.dg/template/nontype19.C
  00bcc57cb7d33b0250bf5efd8de34dbf  gcc/testsuite/g++.dg/template/nontype2.C
  3d747fedb6daaf7d52479222a69439ee  gcc/testsuite/g++.dg/template/nontype20.C
--- 23393,23405 ----
  0841e0681f53f5792b711984e991f3a8  gcc/testsuite/g++.dg/template/nontype1.C
  e9af055ac6a0774b7565e0722c861adb  gcc/testsuite/g++.dg/template/nontype10.C
  9ba9723e8601b19208ac3f8350ee6695  gcc/testsuite/g++.dg/template/nontype11.C
! c83fa877ca439acda974b9a818a8851c  gcc/testsuite/g++.dg/template/nontype12.C
! 026a3a74d3eecb7e9f71f4dc66815dc5  gcc/testsuite/g++.dg/template/nontype13.C
  937af4e6ac2cefe2dff1503c7819130f  gcc/testsuite/g++.dg/template/nontype14.C
  e4e6038ded9c7ed667109894758cea89  gcc/testsuite/g++.dg/template/nontype15.C
  6a5ee3bb412ed08b6f509ead28c93bf1  gcc/testsuite/g++.dg/template/nontype16.C
  6938006fe193f5813dbc894a73ef554f  gcc/testsuite/g++.dg/template/nontype17.C
! 4ad362f03280b101277f49932eb96c8c  gcc/testsuite/g++.dg/template/nontype18.C
  03c70922eb3eb5694336f20230eab2eb  gcc/testsuite/g++.dg/template/nontype19.C
  00bcc57cb7d33b0250bf5efd8de34dbf  gcc/testsuite/g++.dg/template/nontype2.C
  3d747fedb6daaf7d52479222a69439ee  gcc/testsuite/g++.dg/template/nontype20.C
*************** e4e6038ded9c7ed667109894758cea89  gcc/te
*** 21304,21310 ****
  4104efa445f1a5c0a6ea00569a6e73b5  gcc/testsuite/g++.dg/template/nontype22.C
  d17e17b15018e6bc4a807c47ac6956b7  gcc/testsuite/g++.dg/template/nontype23.C
  9b952f9c7bfac2154aa77f23f13c1fd3  gcc/testsuite/g++.dg/template/nontype24.C
! 6e69ac1b2510da77629987a3fa245810  gcc/testsuite/g++.dg/template/nontype25.C
  2b3037f477965e6ee2c5f77022f74ae7  gcc/testsuite/g++.dg/template/nontype26.C
  9fa0b3b07546b30d6e129c3bdd6ff439  gcc/testsuite/g++.dg/template/nontype27.C
  29426ea06c65ca7c3fa8d5ecd6177ab6  gcc/testsuite/g++.dg/template/nontype28.C
--- 23407,23413 ----
  4104efa445f1a5c0a6ea00569a6e73b5  gcc/testsuite/g++.dg/template/nontype22.C
  d17e17b15018e6bc4a807c47ac6956b7  gcc/testsuite/g++.dg/template/nontype23.C
  9b952f9c7bfac2154aa77f23f13c1fd3  gcc/testsuite/g++.dg/template/nontype24.C
! d208e10201185efb319abd86bee2ff98  gcc/testsuite/g++.dg/template/nontype25.C
  2b3037f477965e6ee2c5f77022f74ae7  gcc/testsuite/g++.dg/template/nontype26.C
  9fa0b3b07546b30d6e129c3bdd6ff439  gcc/testsuite/g++.dg/template/nontype27.C
  29426ea06c65ca7c3fa8d5ecd6177ab6  gcc/testsuite/g++.dg/template/nontype28.C
*************** a90bca38d3ce6988650e843cd4d6cf44  gcc/te
*** 21314,21320 ****
  1b9356f2c2f64b75b3145a2a1f0fd55a  gcc/testsuite/g++.dg/template/nontype5.C
  40280792650dbefbd9ff94ba5cc5d03e  gcc/testsuite/g++.dg/template/nontype6.C
  067e989ca8724df7b1bbbef443eb9947  gcc/testsuite/g++.dg/template/nontype7.C
! 2fa0b5151b9ddce38c818f64b671a73b  gcc/testsuite/g++.dg/template/nontype8.C
  5345b8ffaffe474e8bf43916398a25ef  gcc/testsuite/g++.dg/template/nontype9.C
  72688e70f855e78a966cd593acf9f923  gcc/testsuite/g++.dg/template/ntp1.C
  506fde7f525665b80bb8ae93c21fa34f  gcc/testsuite/g++.dg/template/ntp2.C
--- 23417,23423 ----
  1b9356f2c2f64b75b3145a2a1f0fd55a  gcc/testsuite/g++.dg/template/nontype5.C
  40280792650dbefbd9ff94ba5cc5d03e  gcc/testsuite/g++.dg/template/nontype6.C
  067e989ca8724df7b1bbbef443eb9947  gcc/testsuite/g++.dg/template/nontype7.C
! d2a658e6e5656194059cbf7e7b02f924  gcc/testsuite/g++.dg/template/nontype8.C
  5345b8ffaffe474e8bf43916398a25ef  gcc/testsuite/g++.dg/template/nontype9.C
  72688e70f855e78a966cd593acf9f923  gcc/testsuite/g++.dg/template/ntp1.C
  506fde7f525665b80bb8ae93c21fa34f  gcc/testsuite/g++.dg/template/ntp2.C
*************** ef296b5932e0fe10416d5e48eb64ccb1  gcc/te
*** 21355,21361 ****
  efb971f4591133c5f1a27dea6aeb5d1a  gcc/testsuite/g++.dg/template/param1.C
  335d675c515abc3965d67af12d3a7c72  gcc/testsuite/g++.dg/template/param2.C
  9cdc0ea3c87c4634fd17c85b389758e3  gcc/testsuite/g++.dg/template/param3.C
! 491cbf3256ec0db4f4e1089be6ae400a  gcc/testsuite/g++.dg/template/partial-order1.C
  e187a317d102d915368fe357726202ba  gcc/testsuite/g++.dg/template/partial-specialization.C
  85762b85724149f8854c0c886e8d724f  gcc/testsuite/g++.dg/template/partial-specialization2.C
  e3bba8fb10b84a1583b714234f4d0593  gcc/testsuite/g++.dg/template/partial-specialization3.C
--- 23458,23465 ----
  efb971f4591133c5f1a27dea6aeb5d1a  gcc/testsuite/g++.dg/template/param1.C
  335d675c515abc3965d67af12d3a7c72  gcc/testsuite/g++.dg/template/param2.C
  9cdc0ea3c87c4634fd17c85b389758e3  gcc/testsuite/g++.dg/template/param3.C
! 486d4c5a4f5f81e0939deae14d55e933  gcc/testsuite/g++.dg/template/partial-order1.C
! ae5d48999739c18e13002880ad3cd978  gcc/testsuite/g++.dg/template/partial-order2.C
  e187a317d102d915368fe357726202ba  gcc/testsuite/g++.dg/template/partial-specialization.C
  85762b85724149f8854c0c886e8d724f  gcc/testsuite/g++.dg/template/partial-specialization2.C
  e3bba8fb10b84a1583b714234f4d0593  gcc/testsuite/g++.dg/template/partial-specialization3.C
*************** ed8b9d57a67bc5c5ea55951ca907f5d9  gcc/te
*** 21374,21380 ****
  e2ea27f4d30c89986de472da016881a2  gcc/testsuite/g++.dg/template/partial2.C
  629ba41b72a6f4a573aa2b2fc66bf5c8  gcc/testsuite/g++.dg/template/partial3.C
  dbd288590e967c40dee79909821124df  gcc/testsuite/g++.dg/template/partial4.C
! 9c48338a379acd2108e67fe63d4d8461  gcc/testsuite/g++.dg/template/partial5.C
  af2b317af1f920fbca6b70a32297df09  gcc/testsuite/g++.dg/template/partial6.C
  27869f98e951e86a28a79500f1a221da  gcc/testsuite/g++.dg/template/partial7.C
  2b23d416282107a906fcf6e2b3a898e7  gcc/testsuite/g++.dg/template/partial8.C
--- 23478,23484 ----
  e2ea27f4d30c89986de472da016881a2  gcc/testsuite/g++.dg/template/partial2.C
  629ba41b72a6f4a573aa2b2fc66bf5c8  gcc/testsuite/g++.dg/template/partial3.C
  dbd288590e967c40dee79909821124df  gcc/testsuite/g++.dg/template/partial4.C
! 5fb7e14f347a27ef95a822332fd0dcd4  gcc/testsuite/g++.dg/template/partial5.C
  af2b317af1f920fbca6b70a32297df09  gcc/testsuite/g++.dg/template/partial6.C
  27869f98e951e86a28a79500f1a221da  gcc/testsuite/g++.dg/template/partial7.C
  2b23d416282107a906fcf6e2b3a898e7  gcc/testsuite/g++.dg/template/partial8.C
*************** cf462ecaa4f46ef7ba1818384c6683de  gcc/te
*** 21392,21398 ****
  468f7c75660d2ffe5da840805cc9c9a0  gcc/testsuite/g++.dg/template/pr34938-1.C
  1b70b2796cdcfb9cc89a6a6b61ac77cf  gcc/testsuite/g++.dg/template/pr34938-2.C
  8b412f982420deb1ea42c0e8ebcbb0b4  gcc/testsuite/g++.dg/template/pr35240.C
! 65f61cad906468d3220688454e8f7d0c  gcc/testsuite/g++.dg/template/pr39425.C
  698fef868c92929bbef3fe847bfc6295  gcc/testsuite/g++.dg/template/pr4926-1.C
  0d32e7db5cb64695659c0e46c96c565e  gcc/testsuite/g++.dg/template/pr49377.C
  df23572d8e2f0cf034d6db6ec7b62489  gcc/testsuite/g++.dg/template/pr51199.C
--- 23496,23502 ----
  468f7c75660d2ffe5da840805cc9c9a0  gcc/testsuite/g++.dg/template/pr34938-1.C
  1b70b2796cdcfb9cc89a6a6b61ac77cf  gcc/testsuite/g++.dg/template/pr34938-2.C
  8b412f982420deb1ea42c0e8ebcbb0b4  gcc/testsuite/g++.dg/template/pr35240.C
! 321d0ac1d9cf5311261f751a76316619  gcc/testsuite/g++.dg/template/pr39425.C
  698fef868c92929bbef3fe847bfc6295  gcc/testsuite/g++.dg/template/pr4926-1.C
  0d32e7db5cb64695659c0e46c96c565e  gcc/testsuite/g++.dg/template/pr49377.C
  df23572d8e2f0cf034d6db6ec7b62489  gcc/testsuite/g++.dg/template/pr51199.C
*************** d740ce064b1e034f304c3efdeace013e  gcc/te
*** 21421,21427 ****
  a28a4941fa94389caaf911a2fcb4d409  gcc/testsuite/g++.dg/template/pr67337.C
  3f5886c7fabe6c32b33db38257b58ee4  gcc/testsuite/g++.dg/template/pr68936.C
  dc596bbe718062e4efd87fdbfac8a395  gcc/testsuite/g++.dg/template/pr68948.C
! bf82435ec5f3be96850da99795d95d48  gcc/testsuite/g++.dg/template/pr68978.C
  af6d997be6d23572000a1f53fb362c54  gcc/testsuite/g++.dg/template/pr69091.C
  74c16422bfee14becfdab59426868fb7  gcc/testsuite/g++.dg/template/pr69961a.C
  2bb8ec1b3640d593c78682666bf1f95a  gcc/testsuite/g++.dg/template/pr69961b.C
--- 23525,23531 ----
  a28a4941fa94389caaf911a2fcb4d409  gcc/testsuite/g++.dg/template/pr67337.C
  3f5886c7fabe6c32b33db38257b58ee4  gcc/testsuite/g++.dg/template/pr68936.C
  dc596bbe718062e4efd87fdbfac8a395  gcc/testsuite/g++.dg/template/pr68948.C
! d61719a4c95fa31a2f3b02de9b02129f  gcc/testsuite/g++.dg/template/pr68978.C
  af6d997be6d23572000a1f53fb362c54  gcc/testsuite/g++.dg/template/pr69091.C
  74c16422bfee14becfdab59426868fb7  gcc/testsuite/g++.dg/template/pr69961a.C
  2bb8ec1b3640d593c78682666bf1f95a  gcc/testsuite/g++.dg/template/pr69961b.C
*************** f85232cc2d2ce2406ad9221174563c83  gcc/te
*** 21434,21440 ****
  949c06bdf670a4d1cd8949ec77ca0c2a  gcc/testsuite/g++.dg/template/pr71406.C
  a05d9f2c4073e577f0ab01a93faddc8d  gcc/testsuite/g++.dg/template/pr71710.C
  655840d9d98c03e2ea702b0d6b99d8e3  gcc/testsuite/g++.dg/template/pr71826.C
! f2a730df4b5bb0224d3120077bf8bdef  gcc/testsuite/g++.dg/template/pr79650.C
  ce358495eb96da767724476d23c8fe46  gcc/testsuite/g++.dg/template/pr81899.C
  b5069234288499e0b7264b4e3c1ba8c5  gcc/testsuite/g++.dg/template/pr83825.C
  aae2cda56dda501cbe121ad5f9961d12  gcc/testsuite/g++.dg/template/pr83988.C
--- 23538,23544 ----
  949c06bdf670a4d1cd8949ec77ca0c2a  gcc/testsuite/g++.dg/template/pr71406.C
  a05d9f2c4073e577f0ab01a93faddc8d  gcc/testsuite/g++.dg/template/pr71710.C
  655840d9d98c03e2ea702b0d6b99d8e3  gcc/testsuite/g++.dg/template/pr71826.C
! 1b7d477d1e7ddba03084b6aa47e41865  gcc/testsuite/g++.dg/template/pr79650.C
  ce358495eb96da767724476d23c8fe46  gcc/testsuite/g++.dg/template/pr81899.C
  b5069234288499e0b7264b4e3c1ba8c5  gcc/testsuite/g++.dg/template/pr83825.C
  aae2cda56dda501cbe121ad5f9961d12  gcc/testsuite/g++.dg/template/pr83988.C
*************** e8d40cd108e2f974a3fc10d060390e72  gcc/te
*** 21454,21460 ****
--- 23558,23575 ----
  58e4366fc2e06fbcebe48e7f053ae773  gcc/testsuite/g++.dg/template/pr90138.C
  4415cbfb73a456e4f8771706daa1c8ae  gcc/testsuite/g++.dg/template/pr90916.C
  88f54efc4feef5b437c46f16554c427b  gcc/testsuite/g++.dg/template/pr92440.C
+ 879f2ddb0bd7cce4775cd1ce02a715f8  gcc/testsuite/g++.dg/template/pr95263.C
+ ba5359b3b242b9dcf160ced942b84c77  gcc/testsuite/g++.dg/template/pr95672.C
+ d825be7334938ed0813b268843286b89  gcc/testsuite/g++.dg/template/pr97105.C
+ 1a9c2b77bea572d9e9b53d1028ecba93  gcc/testsuite/g++.dg/template/pr97399.C
+ 486493b3b0093218ac03594efca72c4d  gcc/testsuite/g++.dg/template/pr97460.C
+ 73c1b6b8e8b15c3d12c47ccfe8bb59b1  gcc/testsuite/g++.dg/template/pr98115.C
+ 67a92c9612ce09dd1cfa9e129a8f8b63  gcc/testsuite/g++.dg/template/pr98116-2.C
+ e27c01404306e4a198c15e879cb726f8  gcc/testsuite/g++.dg/template/pr98116.C
  17c58ce0f08533aa192bc9dbae681ca8  gcc/testsuite/g++.dg/template/pr98297.C
+ 2e8e9933326fc0863dde0e654cb51a9f  gcc/testsuite/g++.dg/template/pr98372.C
+ 740c6084182b0c900da39cff40ae2dbf  gcc/testsuite/g++.dg/template/pr98538.C
+ 68416209643fba4d77e584f3afe52562  gcc/testsuite/g++.dg/template/pr99425.C
  04907f98f8eab7c64ced6646f5140346  gcc/testsuite/g++.dg/template/pretty1.C
  b1805d4b386b8dcd432f41c68e255100  gcc/testsuite/g++.dg/template/pseudodtor1.C
  5bbbdc0bd84a1cf86dd283b16e7aa6ba  gcc/testsuite/g++.dg/template/pseudodtor2.C
*************** c7309345696ac164222361961daab266  gcc/te
*** 21537,21542 ****
--- 23652,23658 ----
  2fc8ecaf6e21a27a95a25b7e1641c675  gcc/testsuite/g++.dg/template/redecl4.C
  c6c126721707d148ce66066de06c754b  gcc/testsuite/g++.dg/template/ref1.C
  e5547a0a17e476f40de83fdf6f7b297f  gcc/testsuite/g++.dg/template/ref10.C
+ 55ce57535ea4f812b4b3a2be7cafa6c4  gcc/testsuite/g++.dg/template/ref11.C
  a02f5612e9219b8cd807bc11c6baa86d  gcc/testsuite/g++.dg/template/ref2.C
  03590f95ff079c31de0f7962f9d2850e  gcc/testsuite/g++.dg/template/ref3.C
  c3bbc6f642a26de6b3238750b8f9c01f  gcc/testsuite/g++.dg/template/ref4.C
*************** b8b893e1844c502297d1e4e9591779ef  gcc/te
*** 21550,21558 ****
  1ffed1eba156ff05925971c1bb91cd3d  gcc/testsuite/g++.dg/template/scope2.C
  a7bf058a51ee7236a37311a73bf15c69  gcc/testsuite/g++.dg/template/scope3.C
  b3e926a09671bb6d64fb4f63dde975e0  gcc/testsuite/g++.dg/template/scope4.C
! 77939ad3c1d2d8dd6718190f59d34cce  gcc/testsuite/g++.dg/template/scope5.C
  0186275439ee5dd117414c26c3ceb2be  gcc/testsuite/g++.dg/template/scope6.C
! 72ffb989291c9247b76445d291858548  gcc/testsuite/g++.dg/template/sfinae-dr657.C
  d4a6fe33f1456d026d068d25f316aa9c  gcc/testsuite/g++.dg/template/sfinae1.C
  08e40e1ccd7635d093d248a8b6295788  gcc/testsuite/g++.dg/template/sfinae10.C
  52303ab3e71ec37ab5f5099984d9715b  gcc/testsuite/g++.dg/template/sfinae11.C
--- 23666,23674 ----
  1ffed1eba156ff05925971c1bb91cd3d  gcc/testsuite/g++.dg/template/scope2.C
  a7bf058a51ee7236a37311a73bf15c69  gcc/testsuite/g++.dg/template/scope3.C
  b3e926a09671bb6d64fb4f63dde975e0  gcc/testsuite/g++.dg/template/scope4.C
! ef990e1f472156561fef3a8840a530bd  gcc/testsuite/g++.dg/template/scope5.C
  0186275439ee5dd117414c26c3ceb2be  gcc/testsuite/g++.dg/template/scope6.C
! 08b97a56f0e4650959c70cc0fae65678  gcc/testsuite/g++.dg/template/sfinae-dr657.C
  d4a6fe33f1456d026d068d25f316aa9c  gcc/testsuite/g++.dg/template/sfinae1.C
  08e40e1ccd7635d093d248a8b6295788  gcc/testsuite/g++.dg/template/sfinae10.C
  52303ab3e71ec37ab5f5099984d9715b  gcc/testsuite/g++.dg/template/sfinae11.C
*************** d3563277f19308849fcd4549cbe2c20d  gcc/te
*** 21574,21580 ****
--- 23690,23699 ----
  8ddef44076eb6e19a48862cb31a69912  gcc/testsuite/g++.dg/template/sfinae26.C
  ae991b2f4a945b814f41ee4ceb9ae3e5  gcc/testsuite/g++.dg/template/sfinae27.C
  071c3f65cf279133e0877210d8149c4e  gcc/testsuite/g++.dg/template/sfinae28.C
+ 11878edfe417b0b07db30c7ca13b099e  gcc/testsuite/g++.dg/template/sfinae29.C
  df17c39af3a33df1f3370cca4ca51b18  gcc/testsuite/g++.dg/template/sfinae3.C
+ 6ed43416c7527cfd981b9c32ebcd26cd  gcc/testsuite/g++.dg/template/sfinae30.C
+ 7f378098b4a82d5d47518ed450e9113c  gcc/testsuite/g++.dg/template/sfinae31.C
  14c823d80f9e1e49b0085a00aa357406  gcc/testsuite/g++.dg/template/sfinae4.C
  d489a85672b2d956beff65b15b095039  gcc/testsuite/g++.dg/template/sfinae5.C
  2622d4a8e2409cf748878b7d2db89477  gcc/testsuite/g++.dg/template/sfinae6.C
*************** ddcb9be925a64a1c49b8f8cc6c154cf3  gcc/te
*** 21584,21596 ****
  a9f3ce4ee662be853b285ba58e2dfe52  gcc/testsuite/g++.dg/template/sfinae9.C
  35f10d9140d7f7e60832129e6d6da8b9  gcc/testsuite/g++.dg/template/shadow1.C
  5e634d2a60e0733658f162eeab1d5673  gcc/testsuite/g++.dg/template/shadow2.C
  429c749d4a969d6e6782e2108d66cc72  gcc/testsuite/g++.dg/template/shift1.C
  5664cd51517905bbc52f63fe0838b133  gcc/testsuite/g++.dg/template/show-template-tree-2.C
! 718456f60ad535aa400d0196535918c2  gcc/testsuite/g++.dg/template/show-template-tree-3.C
  d877f1c36160b725fc3f9f90ef621cf5  gcc/testsuite/g++.dg/template/show-template-tree-4.C
  867d87de9574acb1f1fc4a93cc164842  gcc/testsuite/g++.dg/template/show-template-tree-no-elide-type.C
  5e99130628ae881b7184e2f80c2a042f  gcc/testsuite/g++.dg/template/show-template-tree.C
! 7c5a9f5b83dd9b578bd8929e6f368d16  gcc/testsuite/g++.dg/template/sizeof-template-argument.C
  8af3d67f6d9f4dd6cda097137e1aaa5e  gcc/testsuite/g++.dg/template/sizeof1.C
  c3dde08186236701373c41bd64c9338e  gcc/testsuite/g++.dg/template/sizeof10.C
  e3638c15767d9302f941629764026e63  gcc/testsuite/g++.dg/template/sizeof11.C
--- 23703,23716 ----
  a9f3ce4ee662be853b285ba58e2dfe52  gcc/testsuite/g++.dg/template/sfinae9.C
  35f10d9140d7f7e60832129e6d6da8b9  gcc/testsuite/g++.dg/template/shadow1.C
  5e634d2a60e0733658f162eeab1d5673  gcc/testsuite/g++.dg/template/shadow2.C
+ 80100adb7d1a8e87190128c3325860b9  gcc/testsuite/g++.dg/template/shadow3.C
  429c749d4a969d6e6782e2108d66cc72  gcc/testsuite/g++.dg/template/shift1.C
  5664cd51517905bbc52f63fe0838b133  gcc/testsuite/g++.dg/template/show-template-tree-2.C
! d9dae838c40af5175f21e20ff53de34e  gcc/testsuite/g++.dg/template/show-template-tree-3.C
  d877f1c36160b725fc3f9f90ef621cf5  gcc/testsuite/g++.dg/template/show-template-tree-4.C
  867d87de9574acb1f1fc4a93cc164842  gcc/testsuite/g++.dg/template/show-template-tree-no-elide-type.C
  5e99130628ae881b7184e2f80c2a042f  gcc/testsuite/g++.dg/template/show-template-tree.C
! 81dfd3f1152ab57a7276dd0431e4ed44  gcc/testsuite/g++.dg/template/sizeof-template-argument.C
  8af3d67f6d9f4dd6cda097137e1aaa5e  gcc/testsuite/g++.dg/template/sizeof1.C
  c3dde08186236701373c41bd64c9338e  gcc/testsuite/g++.dg/template/sizeof10.C
  e3638c15767d9302f941629764026e63  gcc/testsuite/g++.dg/template/sizeof11.C
*************** c634bc3cd5d70e255a55643ffffb70b2  gcc/te
*** 21643,21648 ****
--- 23763,23769 ----
  fba856a61db5644cba94060c62cec29f  gcc/testsuite/g++.dg/template/spec39.C
  2a1077a58e27e49e8f92e9122c330685  gcc/testsuite/g++.dg/template/spec4.C
  db248bf3385995858dfa9699c65edbc1  gcc/testsuite/g++.dg/template/spec40.C
+ da5f0a5054c4116cf98816d81b2705a5  gcc/testsuite/g++.dg/template/spec41.C
  ac4700345bbf0d5aafda66965305864b  gcc/testsuite/g++.dg/template/spec5.C
  2fc2335d45186d3c105fae00aac3b8b3  gcc/testsuite/g++.dg/template/spec6.C
  b5c9ce57ec18ecb1da9249a4839466d0  gcc/testsuite/g++.dg/template/spec7.C
*************** df8c17723bf6f25c15869e425bf4d988  gcc/te
*** 21730,21735 ****
--- 23851,23857 ----
  d9dcbec8c7ed6d179520a787d5246717  gcc/testsuite/g++.dg/template/ttp30.C
  bba921ba78bd2bb216169aa4ed7d5a1f  gcc/testsuite/g++.dg/template/ttp31.C
  b16d03388df71f44a49ac42b14bb0b78  gcc/testsuite/g++.dg/template/ttp32.C
+ eff4a38049a6b02f4545e91036c5fce8  gcc/testsuite/g++.dg/template/ttp33.C
  ab6711e26bfa413d472fc55475e7cc75  gcc/testsuite/g++.dg/template/ttp4.C
  786176b167efb2fb05f5876afccf4ea7  gcc/testsuite/g++.dg/template/ttp5.C
  ede8e95c1aeeeb0cf1c4cfb0fd860e07  gcc/testsuite/g++.dg/template/ttp6.C
*************** ed9372cf56fbc13b47d33c9145d1e02c  gcc/te
*** 21796,21801 ****
--- 23918,23924 ----
  9e947348c80b5b375430f354424dbea6  gcc/testsuite/g++.dg/template/typename20.C
  331317e575027725a91f3ca79535e495  gcc/testsuite/g++.dg/template/typename21.C
  3aa0f96082caf4a3387f62e5bf838e85  gcc/testsuite/g++.dg/template/typename22.C
+ 7977d6d210f57215d68afe73ad6ab35f  gcc/testsuite/g++.dg/template/typename23.C
  462be480a1ce1e091374b678ce018264  gcc/testsuite/g++.dg/template/typename3.C
  e539dae13a2fcf8c5c897799294fa8f0  gcc/testsuite/g++.dg/template/typename4.C
  657b2e18e1c5bda47ab17e796163c009  gcc/testsuite/g++.dg/template/typename5.C
*************** b98f8ca68199027ec91aea21199d5807  gcc/te
*** 21861,21873 ****
  562f64a462f01cebdb6f2624c9cbaf03  gcc/testsuite/g++.dg/template/void13.C
  25f480eeead08db92a5bce8ac9a6c4ed  gcc/testsuite/g++.dg/template/void14.C
  28483e5e5ebefbb2745d92348d976139  gcc/testsuite/g++.dg/template/void2.C
! ee2c719010594f95ed2d21f0642c236d  gcc/testsuite/g++.dg/template/void3.C
  f52ef262006018fae2f9121ca966abcd  gcc/testsuite/g++.dg/template/void4.C
  29bdbfbe89710bff6d9ae0b64b0d06f5  gcc/testsuite/g++.dg/template/void5.C
  3e91aaf45c71ca012016688078a0eac0  gcc/testsuite/g++.dg/template/void6.C
! 9c26fdd99b68713bdda4b32d10cac5a2  gcc/testsuite/g++.dg/template/void7.C
  d7375b6b148303af73024b27635ad7cd  gcc/testsuite/g++.dg/template/void8.C
! 40eb8a19e0fcd553ccef6d762b7efceb  gcc/testsuite/g++.dg/template/void9.C
  98fb9a7526b5989b48ce49e7131f8f76  gcc/testsuite/g++.dg/template/vtable1.C
  16a3287999d8f75052cf24fd78ff1e9f  gcc/testsuite/g++.dg/template/vtable2.C
  568762f54a977de73383a34dd88e7c45  gcc/testsuite/g++.dg/template/warn1.C
--- 23984,23996 ----
  562f64a462f01cebdb6f2624c9cbaf03  gcc/testsuite/g++.dg/template/void13.C
  25f480eeead08db92a5bce8ac9a6c4ed  gcc/testsuite/g++.dg/template/void14.C
  28483e5e5ebefbb2745d92348d976139  gcc/testsuite/g++.dg/template/void2.C
! 9fa7653765434ca39e016cca61f5ead7  gcc/testsuite/g++.dg/template/void3.C
  f52ef262006018fae2f9121ca966abcd  gcc/testsuite/g++.dg/template/void4.C
  29bdbfbe89710bff6d9ae0b64b0d06f5  gcc/testsuite/g++.dg/template/void5.C
  3e91aaf45c71ca012016688078a0eac0  gcc/testsuite/g++.dg/template/void6.C
! fd0b5bee4a9b82d0ba9a59d8a3ca6030  gcc/testsuite/g++.dg/template/void7.C
  d7375b6b148303af73024b27635ad7cd  gcc/testsuite/g++.dg/template/void8.C
! c1b6547a976b131d0c29c12ac6a4d5fc  gcc/testsuite/g++.dg/template/void9.C
  98fb9a7526b5989b48ce49e7131f8f76  gcc/testsuite/g++.dg/template/vtable1.C
  16a3287999d8f75052cf24fd78ff1e9f  gcc/testsuite/g++.dg/template/vtable2.C
  568762f54a977de73383a34dd88e7c45  gcc/testsuite/g++.dg/template/warn1.C
*************** abcd9d688bd97352cf2201ae04eb0bcd  gcc/te
*** 21884,21890 ****
  5b67d09a03c0a87ddd8fb4065b354311  gcc/testsuite/g++.dg/tls/pr69000.C
  f4ebaa2e9bc5b065a4c81b1ec15efe2c  gcc/testsuite/g++.dg/tls/pr77285-1.C
  f1ca461838c5ae75f6825f6cd92ae307  gcc/testsuite/g++.dg/tls/pr77285-2.C
! 9b319b2b3e9145fa2715751a0c8c710e  gcc/testsuite/g++.dg/tls/pr79288.C
  eaa257e5d01462b4484236d4e40a6e81  gcc/testsuite/g++.dg/tls/pr85400.C
  a9720fe58f11ddd0e2a21ab5df5a77bf  gcc/testsuite/g++.dg/tls/static-1.C
  29ba155db4cb83d5330b9a806c2cd296  gcc/testsuite/g++.dg/tls/static-1a.cc
--- 24007,24013 ----
  5b67d09a03c0a87ddd8fb4065b354311  gcc/testsuite/g++.dg/tls/pr69000.C
  f4ebaa2e9bc5b065a4c81b1ec15efe2c  gcc/testsuite/g++.dg/tls/pr77285-1.C
  f1ca461838c5ae75f6825f6cd92ae307  gcc/testsuite/g++.dg/tls/pr77285-2.C
! 4db79bd63ba94ab802fb63629928af1d  gcc/testsuite/g++.dg/tls/pr79288.C
  eaa257e5d01462b4484236d4e40a6e81  gcc/testsuite/g++.dg/tls/pr85400.C
  a9720fe58f11ddd0e2a21ab5df5a77bf  gcc/testsuite/g++.dg/tls/static-1.C
  29ba155db4cb83d5330b9a806c2cd296  gcc/testsuite/g++.dg/tls/static-1a.cc
*************** cf26e329259baed2e3c2675d10b71343  gcc/te
*** 21932,21938 ****
  3aecfa587091ae9e3524d10e3013ccf0  gcc/testsuite/g++.dg/tls/thread_local7g.C
  9399e18da7889fb7fc5333e641e339e4  gcc/testsuite/g++.dg/tls/thread_local8.C
  46eb3382c1226c7ec68020221453058a  gcc/testsuite/g++.dg/tls/thread_local9.C
! 635b6436bc0dbe25d3cfe8b7ec1282e7  gcc/testsuite/g++.dg/tls/tls.exp
  86479ffee518e8ec862d5e9dcaa9866f  gcc/testsuite/g++.dg/tls/tls_model1.C
  7212556766805451a098e554a8ab648e  gcc/testsuite/g++.dg/tls/trivial.C
  debf53c602437e43da099fa943834a84  gcc/testsuite/g++.dg/tm/20100429.C
--- 24055,24061 ----
  3aecfa587091ae9e3524d10e3013ccf0  gcc/testsuite/g++.dg/tls/thread_local7g.C
  9399e18da7889fb7fc5333e641e339e4  gcc/testsuite/g++.dg/tls/thread_local8.C
  46eb3382c1226c7ec68020221453058a  gcc/testsuite/g++.dg/tls/thread_local9.C
! a82ac5b5da7f4998222b5709b05d500d  gcc/testsuite/g++.dg/tls/tls.exp
  86479ffee518e8ec862d5e9dcaa9866f  gcc/testsuite/g++.dg/tls/tls_model1.C
  7212556766805451a098e554a8ab648e  gcc/testsuite/g++.dg/tls/trivial.C
  debf53c602437e43da099fa943834a84  gcc/testsuite/g++.dg/tm/20100429.C
*************** b3c6fad876fb9fbc95733f84b7fb6645  gcc/te
*** 21943,21955 ****
  7de0dbf10fd117711f389b7fbc639fe1  gcc/testsuite/g++.dg/tm/attrib-3.C
  118ca6537a61acc3774d0044bb336a87  gcc/testsuite/g++.dg/tm/attrib-4.C
  b4d9d66549182e06b5e9ff2861010156  gcc/testsuite/g++.dg/tm/attrib-5.C
! 225a252590c8499fb3f4aa8d83c36e51  gcc/testsuite/g++.dg/tm/cgraph_edge.C
  26ce6286d392a15b839e7fc7af9bd42c  gcc/testsuite/g++.dg/tm/composite1.C
  4cc09ae741099d64dbfe97781c2f2c5e  gcc/testsuite/g++.dg/tm/dynamic1.C
  e7ac1fbc7bbdfa0754921c8933a12002  gcc/testsuite/g++.dg/tm/dynamic2.C
  1caf5063be1ab535e40aefa7b9cd867d  gcc/testsuite/g++.dg/tm/fatomic-1.C
  d3c5e44e88d7c6db3c096fd6f7ee700f  gcc/testsuite/g++.dg/tm/inherit1.C
! 1ce3f400abc68016d7383c23c8dbf574  gcc/testsuite/g++.dg/tm/inherit2.C
  f998f0f5c7644d7092979cb106ddd9c0  gcc/testsuite/g++.dg/tm/jump1.C
  ec88f0f4e35e3f0f1a00afeb7ac5fdf4  gcc/testsuite/g++.dg/tm/keyword1.C
  1b6440e012a31a0930bec047419e1189  gcc/testsuite/g++.dg/tm/lambda1.C
--- 24066,24078 ----
  7de0dbf10fd117711f389b7fbc639fe1  gcc/testsuite/g++.dg/tm/attrib-3.C
  118ca6537a61acc3774d0044bb336a87  gcc/testsuite/g++.dg/tm/attrib-4.C
  b4d9d66549182e06b5e9ff2861010156  gcc/testsuite/g++.dg/tm/attrib-5.C
! 63b85f212952256eb9f0b93f90629112  gcc/testsuite/g++.dg/tm/cgraph_edge.C
  26ce6286d392a15b839e7fc7af9bd42c  gcc/testsuite/g++.dg/tm/composite1.C
  4cc09ae741099d64dbfe97781c2f2c5e  gcc/testsuite/g++.dg/tm/dynamic1.C
  e7ac1fbc7bbdfa0754921c8933a12002  gcc/testsuite/g++.dg/tm/dynamic2.C
  1caf5063be1ab535e40aefa7b9cd867d  gcc/testsuite/g++.dg/tm/fatomic-1.C
  d3c5e44e88d7c6db3c096fd6f7ee700f  gcc/testsuite/g++.dg/tm/inherit1.C
! 00b2c3ab16f7f24d4ef90cb327b8c62c  gcc/testsuite/g++.dg/tm/inherit2.C
  f998f0f5c7644d7092979cb106ddd9c0  gcc/testsuite/g++.dg/tm/jump1.C
  ec88f0f4e35e3f0f1a00afeb7ac5fdf4  gcc/testsuite/g++.dg/tm/keyword1.C
  1b6440e012a31a0930bec047419e1189  gcc/testsuite/g++.dg/tm/lambda1.C
*************** b8417aa0335eeb4b3381d508ea7f5c38  gcc/te
*** 22012,22019 ****
  8ee54951fa048ab382ca2cdb618a0489  gcc/testsuite/g++.dg/tm/template-3.C
  90fa076ea202f452e01e1b4dcbe98e33  gcc/testsuite/g++.dg/tm/template-4.C
  0b77afa8d842f0a0b08d94321879afc3  gcc/testsuite/g++.dg/tm/template-5.C
! 815232899ba7f932ed43435bfdb602df  gcc/testsuite/g++.dg/tm/tm.exp
! dd280847415c955ad23236033d5aaf8d  gcc/testsuite/g++.dg/tm/unsafe1.C
  21a5d2c89779740daec0728828afc1e7  gcc/testsuite/g++.dg/tm/unsafe2.C
  6c44d3ee04abacf4b43b2418345ac8d3  gcc/testsuite/g++.dg/tm/vector-1.C
  f02c3e541bcedd1c79e00c876e095e0f  gcc/testsuite/g++.dg/tm/wrap-2.C
--- 24135,24142 ----
  8ee54951fa048ab382ca2cdb618a0489  gcc/testsuite/g++.dg/tm/template-3.C
  90fa076ea202f452e01e1b4dcbe98e33  gcc/testsuite/g++.dg/tm/template-4.C
  0b77afa8d842f0a0b08d94321879afc3  gcc/testsuite/g++.dg/tm/template-5.C
! 9aa210e4efb569cc00de32c4fbbca1cb  gcc/testsuite/g++.dg/tm/tm.exp
! 74d340d87dae689e01101883f8aa0e51  gcc/testsuite/g++.dg/tm/unsafe1.C
  21a5d2c89779740daec0728828afc1e7  gcc/testsuite/g++.dg/tm/unsafe2.C
  6c44d3ee04abacf4b43b2418345ac8d3  gcc/testsuite/g++.dg/tm/vector-1.C
  f02c3e541bcedd1c79e00c876e095e0f  gcc/testsuite/g++.dg/tm/wrap-2.C
*************** cba46ba0e799162dc4863891ff25ded3  gcc/te
*** 22025,22035 ****
  525821efab8625fd7aaf799d1e7ba186  gcc/testsuite/g++.dg/torture/20100825.C
  7071cc03da4664bd6eba9045894856c2  gcc/testsuite/g++.dg/torture/20120420-1.C
  8e57d382980230ca521d366b656b79bc  gcc/testsuite/g++.dg/torture/20121105-1.C
! 2f7707c8db2f9b99d0d0951435f21110  gcc/testsuite/g++.dg/torture/20141013.C
  817906803d35f56621dc188401ae1c1b  gcc/testsuite/g++.dg/torture/20180705-1.C
  080ecc95e15ea3b4ed02e0e24c727d53  gcc/testsuite/g++.dg/torture/PR58294.C
! 41d5944768b1a3c34b0b955c70258f71  gcc/testsuite/g++.dg/torture/Wsizeof-pointer-memaccess1.C
! 647cbe611f3567d12652a8416806320b  gcc/testsuite/g++.dg/torture/Wsizeof-pointer-memaccess2.C
  a355b5babe57316222353d49f4f77705  gcc/testsuite/g++.dg/torture/aarch64-vect-init-1.C
  3f917b76ecc29754d6290571f9e5d95f  gcc/testsuite/g++.dg/torture/accessor-fixits-1.C
  569e15f12e6edb3871caa313c9b90918  gcc/testsuite/g++.dg/torture/accessor-fixits-2.C
--- 24148,24158 ----
  525821efab8625fd7aaf799d1e7ba186  gcc/testsuite/g++.dg/torture/20100825.C
  7071cc03da4664bd6eba9045894856c2  gcc/testsuite/g++.dg/torture/20120420-1.C
  8e57d382980230ca521d366b656b79bc  gcc/testsuite/g++.dg/torture/20121105-1.C
! 6170b6412c56e4e8b9acf5fec85b85ad  gcc/testsuite/g++.dg/torture/20141013.C
  817906803d35f56621dc188401ae1c1b  gcc/testsuite/g++.dg/torture/20180705-1.C
  080ecc95e15ea3b4ed02e0e24c727d53  gcc/testsuite/g++.dg/torture/PR58294.C
! fcec9f16b462c0dbbbf999c903573c12  gcc/testsuite/g++.dg/torture/Wsizeof-pointer-memaccess1.C
! e0639b0af892e171cf6f37f580a2f9fc  gcc/testsuite/g++.dg/torture/Wsizeof-pointer-memaccess2.C
  a355b5babe57316222353d49f4f77705  gcc/testsuite/g++.dg/torture/aarch64-vect-init-1.C
  3f917b76ecc29754d6290571f9e5d95f  gcc/testsuite/g++.dg/torture/accessor-fixits-1.C
  569e15f12e6edb3871caa313c9b90918  gcc/testsuite/g++.dg/torture/accessor-fixits-2.C
*************** e8df79dfae7c9da7b00835c990c545ce  gcc/te
*** 22041,22046 ****
--- 24164,24172 ----
  bbb4b68b2b55f3e5d143dfc3cb49196e  gcc/testsuite/g++.dg/torture/accessor-fixits-8.C
  7748c98522dde244b68d92ecd7ac7b3e  gcc/testsuite/g++.dg/torture/accessor-fixits-9.C
  1902630dcd0f17977840257dac9bf162  gcc/testsuite/g++.dg/torture/alias-1.C
+ 00be4e22c0324902fc2682eb7eb97766  gcc/testsuite/g++.dg/torture/builtin-clear-padding-1.C
+ 0d7497eea071865e0a522c601884bc48  gcc/testsuite/g++.dg/torture/builtin-clear-padding-2.C
+ bea4ac8fffc99273818cdff738206eea  gcc/testsuite/g++.dg/torture/builtin-clear-padding-3.C
  318bc94e0ad549681cfaba4d1ff517f8  gcc/testsuite/g++.dg/torture/builtin-location.C
  12bbc31ebdb5389852fb19dbc0efd9b4  gcc/testsuite/g++.dg/torture/covariant-1.C
  ce4f8106ed96ef070bead8ca0df02eea  gcc/testsuite/g++.dg/torture/darwin-cfstring-3.C
*************** ac9b9ea255f72e7339eeaf103a832da5  gcc/te
*** 22073,22081 ****
  14c55feaed358b412b860a9e9092a6a0  gcc/testsuite/g++.dg/torture/pr34222.C
  a236f1d6b976dcdc6d96e37d197d8bba  gcc/testsuite/g++.dg/torture/pr34235.C
  4d3937e73b843fa062f46a8e5db013c3  gcc/testsuite/g++.dg/torture/pr34241.C
! 1a999024715fd40eac594a7f4cfec76f  gcc/testsuite/g++.dg/torture/pr34641.C
  b4f36f5dd9e57a473980dae121c14b78  gcc/testsuite/g++.dg/torture/pr34651.C
! baea9083b561c64a85b3d055f4f6c29c  gcc/testsuite/g++.dg/torture/pr34850.C
  85e911bb9e21255ea86be27fe65584a1  gcc/testsuite/g++.dg/torture/pr34953.C
  5ed9cac836f27c61b211cf0002cc3911  gcc/testsuite/g++.dg/torture/pr35164-1.C
  d189c1337cd585db66672b0b6d7b9ff3  gcc/testsuite/g++.dg/torture/pr35164-2.C
--- 24199,24207 ----
  14c55feaed358b412b860a9e9092a6a0  gcc/testsuite/g++.dg/torture/pr34222.C
  a236f1d6b976dcdc6d96e37d197d8bba  gcc/testsuite/g++.dg/torture/pr34235.C
  4d3937e73b843fa062f46a8e5db013c3  gcc/testsuite/g++.dg/torture/pr34241.C
! e7e4ce2c7e9990640127154544698283  gcc/testsuite/g++.dg/torture/pr34641.C
  b4f36f5dd9e57a473980dae121c14b78  gcc/testsuite/g++.dg/torture/pr34651.C
! 51f97435a7df9d8f58714bb5010a39d0  gcc/testsuite/g++.dg/torture/pr34850.C
  85e911bb9e21255ea86be27fe65584a1  gcc/testsuite/g++.dg/torture/pr34953.C
  5ed9cac836f27c61b211cf0002cc3911  gcc/testsuite/g++.dg/torture/pr35164-1.C
  d189c1337cd585db66672b0b6d7b9ff3  gcc/testsuite/g++.dg/torture/pr35164-2.C
*************** e33eadcaed926d8254fad85a797b2dde  gcc/te
*** 22085,22091 ****
  99776ddbd6dfc9915d264bab7b74874a  gcc/testsuite/g++.dg/torture/pr36191.C
  f508d53acbdd768a7f71915a40a5c3e9  gcc/testsuite/g++.dg/torture/pr36444.C
  f117dae760330db0d2bea5b44a033809  gcc/testsuite/g++.dg/torture/pr36445.C
! 07388d4212d77cb542cb6ce5b52a3671  gcc/testsuite/g++.dg/torture/pr36745.C
  aecf9faf44d165086befbd3204383a10  gcc/testsuite/g++.dg/torture/pr36826.C
  c6a3b37eb5619ce18630ad425b920a56  gcc/testsuite/g++.dg/torture/pr36960.C
  a6f8a68c45819e14c2089195e56b5d01  gcc/testsuite/g++.dg/torture/pr37146-1.C
--- 24211,24217 ----
  99776ddbd6dfc9915d264bab7b74874a  gcc/testsuite/g++.dg/torture/pr36191.C
  f508d53acbdd768a7f71915a40a5c3e9  gcc/testsuite/g++.dg/torture/pr36444.C
  f117dae760330db0d2bea5b44a033809  gcc/testsuite/g++.dg/torture/pr36445.C
! af30fb4681e5615ac88f4716edb334e4  gcc/testsuite/g++.dg/torture/pr36745.C
  aecf9faf44d165086befbd3204383a10  gcc/testsuite/g++.dg/torture/pr36826.C
  c6a3b37eb5619ce18630ad425b920a56  gcc/testsuite/g++.dg/torture/pr36960.C
  a6f8a68c45819e14c2089195e56b5d01  gcc/testsuite/g++.dg/torture/pr37146-1.C
*************** a6f8a68c45819e14c2089195e56b5d01  gcc/te
*** 22093,22099 ****
  a77a01236fb32add6af8d40930f948c0  gcc/testsuite/g++.dg/torture/pr37343.C
  812d6862a7c6ee4d0b3f6e68a439d3af  gcc/testsuite/g++.dg/torture/pr37345.C
  0062aafd51bb4104c7553c9a0698f0ca  gcc/testsuite/g++.dg/torture/pr37354.C
! b9e867af0146342c37d2ac67626d327e  gcc/testsuite/g++.dg/torture/pr37421.C
  ddcb713d149db91f8154d95a295da33d  gcc/testsuite/g++.dg/torture/pr37456.C
  de29b40a08801f9b5e56f032d4682fb1  gcc/testsuite/g++.dg/torture/pr37716.C
  1ecbbaaa6e73ba832830eab989e19fa4  gcc/testsuite/g++.dg/torture/pr37922.C
--- 24219,24225 ----
  a77a01236fb32add6af8d40930f948c0  gcc/testsuite/g++.dg/torture/pr37343.C
  812d6862a7c6ee4d0b3f6e68a439d3af  gcc/testsuite/g++.dg/torture/pr37345.C
  0062aafd51bb4104c7553c9a0698f0ca  gcc/testsuite/g++.dg/torture/pr37354.C
! 9dbad880762a5d962638e5519c790b8c  gcc/testsuite/g++.dg/torture/pr37421.C
  ddcb713d149db91f8154d95a295da33d  gcc/testsuite/g++.dg/torture/pr37456.C
  de29b40a08801f9b5e56f032d4682fb1  gcc/testsuite/g++.dg/torture/pr37716.C
  1ecbbaaa6e73ba832830eab989e19fa4  gcc/testsuite/g++.dg/torture/pr37922.C
*************** b6de7aac61c5d7ce80cf371bebc02c8a  gcc/te
*** 22122,22128 ****
  2014a44a47c32b0a108fb3a11ffb57d3  gcc/testsuite/g++.dg/torture/pr40642.C
  91e7beb2ed0c5925d2d5b5b4bf37f40f  gcc/testsuite/g++.dg/torture/pr40834.C
  fa014de9d87f4833c5c4020ce1b29d2f  gcc/testsuite/g++.dg/torture/pr40924.C
! 9de1cbb6e777ff829c2cff3f290f8d27  gcc/testsuite/g++.dg/torture/pr40991.C
  8891afbc518a1af478d823bddfecbe7a  gcc/testsuite/g++.dg/torture/pr41144.C
  f28f286c697e103cd07cfc388614a22f  gcc/testsuite/g++.dg/torture/pr41183.C
  9a4c30ad05a6c9428a3e66a4527ee68a  gcc/testsuite/g++.dg/torture/pr41186.C
--- 24248,24254 ----
  2014a44a47c32b0a108fb3a11ffb57d3  gcc/testsuite/g++.dg/torture/pr40642.C
  91e7beb2ed0c5925d2d5b5b4bf37f40f  gcc/testsuite/g++.dg/torture/pr40834.C
  fa014de9d87f4833c5c4020ce1b29d2f  gcc/testsuite/g++.dg/torture/pr40924.C
! 121ef05c4591b28c7218d38b8877e2c9  gcc/testsuite/g++.dg/torture/pr40991.C
  8891afbc518a1af478d823bddfecbe7a  gcc/testsuite/g++.dg/torture/pr41144.C
  f28f286c697e103cd07cfc388614a22f  gcc/testsuite/g++.dg/torture/pr41183.C
  9a4c30ad05a6c9428a3e66a4527ee68a  gcc/testsuite/g++.dg/torture/pr41186.C
*************** c2620174c12bbff392c51fb1170c0929  gcc/te
*** 22192,22205 ****
  76848843bf5ed9a6d83a170499d76c64  gcc/testsuite/g++.dg/torture/pr47559.C
  70a176c24f3b9e0ed32161bafd163296  gcc/testsuite/g++.dg/torture/pr47714.C
  e01f63077b5ff221c0cf9cc6d814eb33  gcc/testsuite/g++.dg/torture/pr48165.C
! 236190cb99c42189a89d66399d254d34  gcc/testsuite/g++.dg/torture/pr48271.C
  18613acec96a26174e1888e6b7290966  gcc/testsuite/g++.dg/torture/pr48600.C
  db620ec233982ee1836c3317fec0f45d  gcc/testsuite/g++.dg/torture/pr48661.C
  a19a960df4a90e813925ed2bffee64b3  gcc/testsuite/g++.dg/torture/pr48695.C
  9f37a6cceabc57b93082714e5a4d2035  gcc/testsuite/g++.dg/torture/pr48954.C
  66f4e88fb15a5c2f5a4fc2d591edff41  gcc/testsuite/g++.dg/torture/pr49039.C
  8fb5fa994e892c2497eac146b34e663e  gcc/testsuite/g++.dg/torture/pr49115.C
! 197f855365db53ac8050ee3269d32855  gcc/testsuite/g++.dg/torture/pr49394.C
  cffdc9798a9b714a7acb5448aee49c12  gcc/testsuite/g++.dg/torture/pr49519.C
  fb6d1315d0bb0a6ecaaa982300921ad0  gcc/testsuite/g++.dg/torture/pr49615.C
  0a508430aa4eff5b532a237388ea0851  gcc/testsuite/g++.dg/torture/pr49628.C
--- 24318,24331 ----
  76848843bf5ed9a6d83a170499d76c64  gcc/testsuite/g++.dg/torture/pr47559.C
  70a176c24f3b9e0ed32161bafd163296  gcc/testsuite/g++.dg/torture/pr47714.C
  e01f63077b5ff221c0cf9cc6d814eb33  gcc/testsuite/g++.dg/torture/pr48165.C
! 2f1024eae367cf5af061cda3bc153b52  gcc/testsuite/g++.dg/torture/pr48271.C
  18613acec96a26174e1888e6b7290966  gcc/testsuite/g++.dg/torture/pr48600.C
  db620ec233982ee1836c3317fec0f45d  gcc/testsuite/g++.dg/torture/pr48661.C
  a19a960df4a90e813925ed2bffee64b3  gcc/testsuite/g++.dg/torture/pr48695.C
  9f37a6cceabc57b93082714e5a4d2035  gcc/testsuite/g++.dg/torture/pr48954.C
  66f4e88fb15a5c2f5a4fc2d591edff41  gcc/testsuite/g++.dg/torture/pr49039.C
  8fb5fa994e892c2497eac146b34e663e  gcc/testsuite/g++.dg/torture/pr49115.C
! 5acc44972b497ec217b87c1f085f5c24  gcc/testsuite/g++.dg/torture/pr49394.C
  cffdc9798a9b714a7acb5448aee49c12  gcc/testsuite/g++.dg/torture/pr49519.C
  fb6d1315d0bb0a6ecaaa982300921ad0  gcc/testsuite/g++.dg/torture/pr49615.C
  0a508430aa4eff5b532a237388ea0851  gcc/testsuite/g++.dg/torture/pr49628.C
*************** f78c290cd93810760d7c42ec15fba75b  gcc/te
*** 22228,22242 ****
  5468badf348c7b9460f2b6b80ef1ff99  gcc/testsuite/g++.dg/torture/pr53321.C
  d599ebf8031516ce985dd3ae65bd8b97  gcc/testsuite/g++.dg/torture/pr53336.C
  f6aef73358d7ae2e3102160fa47a97c9  gcc/testsuite/g++.dg/torture/pr53364.C
! 9971c44b1b5cb3b0d2ac016a6d368504  gcc/testsuite/g++.dg/torture/pr53602.C
  9a98404f2bdaa970f43c1300bb87cc27  gcc/testsuite/g++.dg/torture/pr53693.C
! 2451bd65177ebf8e21cce668d860960b  gcc/testsuite/g++.dg/torture/pr53752.C
  fbe94bcf48ad5e7374ea220cc3ae42c0  gcc/testsuite/g++.dg/torture/pr53970.C
  223cbe0817bf9dd882b64bfda782f806  gcc/testsuite/g++.dg/torture/pr54563.C
  dc106f856185dd3ee7cfdb5a86571091  gcc/testsuite/g++.dg/torture/pr54647.C
  dedc14a5f4caa87ea494123f2002de83  gcc/testsuite/g++.dg/torture/pr54684.C
  bc202d330bb84df550bb0522780984e0  gcc/testsuite/g++.dg/torture/pr54735.C
! f5888585c2eb141c2b505968b41cc02b  gcc/testsuite/g++.dg/torture/pr54838.C
  bcd076e1e29ffe2a0707d7ff61cdfd27  gcc/testsuite/g++.dg/torture/pr54902.C
  53c65341ae2385c2ebc4b26fd454cc44  gcc/testsuite/g++.dg/torture/pr55260-1.C
  519a40ca79bffb405b64d395bbacd3ba  gcc/testsuite/g++.dg/torture/pr55260-2.C
--- 24354,24368 ----
  5468badf348c7b9460f2b6b80ef1ff99  gcc/testsuite/g++.dg/torture/pr53321.C
  d599ebf8031516ce985dd3ae65bd8b97  gcc/testsuite/g++.dg/torture/pr53336.C
  f6aef73358d7ae2e3102160fa47a97c9  gcc/testsuite/g++.dg/torture/pr53364.C
! dad5f6df8311295c4832533334c84d00  gcc/testsuite/g++.dg/torture/pr53602.C
  9a98404f2bdaa970f43c1300bb87cc27  gcc/testsuite/g++.dg/torture/pr53693.C
! ff4072f62ae5ddefa538d5777a2ff63c  gcc/testsuite/g++.dg/torture/pr53752.C
  fbe94bcf48ad5e7374ea220cc3ae42c0  gcc/testsuite/g++.dg/torture/pr53970.C
  223cbe0817bf9dd882b64bfda782f806  gcc/testsuite/g++.dg/torture/pr54563.C
  dc106f856185dd3ee7cfdb5a86571091  gcc/testsuite/g++.dg/torture/pr54647.C
  dedc14a5f4caa87ea494123f2002de83  gcc/testsuite/g++.dg/torture/pr54684.C
  bc202d330bb84df550bb0522780984e0  gcc/testsuite/g++.dg/torture/pr54735.C
! 5b3b84ca4c8089658e5240e67fe2ffd1  gcc/testsuite/g++.dg/torture/pr54838.C
  bcd076e1e29ffe2a0707d7ff61cdfd27  gcc/testsuite/g++.dg/torture/pr54902.C
  53c65341ae2385c2ebc4b26fd454cc44  gcc/testsuite/g++.dg/torture/pr55260-1.C
  519a40ca79bffb405b64d395bbacd3ba  gcc/testsuite/g++.dg/torture/pr55260-2.C
*************** f57dc8a39ba283ab87221e83f802be5a  gcc/te
*** 22262,22268 ****
  5dc530d4fc0332bbb42d6d5c5c47a692  gcc/testsuite/g++.dg/torture/pr58201.h
  1f56a692b545bbff0314a6e3861e243e  gcc/testsuite/g++.dg/torture/pr58201_0.C
  af1ff8fa6013e1d4ae4758b7461f737e  gcc/testsuite/g++.dg/torture/pr58201_1.C
! d41e6195c23ad9a190b97e14b13872e3  gcc/testsuite/g++.dg/torture/pr58252.C
  48a599efda21690e55e7bf0a86c7e51d  gcc/testsuite/g++.dg/torture/pr58369.C
  0beeff4e8bd02953482f92d8ad4f242e  gcc/testsuite/g++.dg/torture/pr58380.C
  a3e67cbbb6404b1b7479dade4457c170  gcc/testsuite/g++.dg/torture/pr58464.C
--- 24388,24394 ----
  5dc530d4fc0332bbb42d6d5c5c47a692  gcc/testsuite/g++.dg/torture/pr58201.h
  1f56a692b545bbff0314a6e3861e243e  gcc/testsuite/g++.dg/torture/pr58201_0.C
  af1ff8fa6013e1d4ae4758b7461f737e  gcc/testsuite/g++.dg/torture/pr58201_1.C
! 2077b52280274a9db1c2057efc0fe66f  gcc/testsuite/g++.dg/torture/pr58252.C
  48a599efda21690e55e7bf0a86c7e51d  gcc/testsuite/g++.dg/torture/pr58369.C
  0beeff4e8bd02953482f92d8ad4f242e  gcc/testsuite/g++.dg/torture/pr58380.C
  a3e67cbbb6404b1b7479dade4457c170  gcc/testsuite/g++.dg/torture/pr58464.C
*************** ab630470e82097e058f526be0adf3ab9  gcc/te
*** 22397,22403 ****
  c4901bbe41ce1310894b59ad5e94230b  gcc/testsuite/g++.dg/torture/pr81360.C
  2ea00b74c66f7b415383da9b9e2d1015  gcc/testsuite/g++.dg/torture/pr81365.C
  3b3a07eb1cd5bd893a2cd5e7522dd666  gcc/testsuite/g++.dg/torture/pr81462.C
! 6fa54f57371a0937faf8fe3307c0f38c  gcc/testsuite/g++.dg/torture/pr81659.C
  48162199f246f0afced679d08e6befd4  gcc/testsuite/g++.dg/torture/pr81812.C
  8a5f9f9294cebeb70876c5b1c9ea7cfd  gcc/testsuite/g++.dg/torture/pr81877.C
  51ad14f7722c92d3074ceddad1e864f0  gcc/testsuite/g++.dg/torture/pr81884.C
--- 24523,24529 ----
  c4901bbe41ce1310894b59ad5e94230b  gcc/testsuite/g++.dg/torture/pr81360.C
  2ea00b74c66f7b415383da9b9e2d1015  gcc/testsuite/g++.dg/torture/pr81365.C
  3b3a07eb1cd5bd893a2cd5e7522dd666  gcc/testsuite/g++.dg/torture/pr81462.C
! c7a7d567583231a1de08bea8433d06a5  gcc/testsuite/g++.dg/torture/pr81659.C
  48162199f246f0afced679d08e6befd4  gcc/testsuite/g++.dg/torture/pr81812.C
  8a5f9f9294cebeb70876c5b1c9ea7cfd  gcc/testsuite/g++.dg/torture/pr81877.C
  51ad14f7722c92d3074ceddad1e864f0  gcc/testsuite/g++.dg/torture/pr81884.C
*************** bff863905887579e8aac699fddb4b928  gcc/te
*** 22405,22411 ****
  22414dc3cabbf804f8f8f89b0d5c45b5  gcc/testsuite/g++.dg/torture/pr81987.C
  56f289074e2ec405f84e8945ba2fd8e7  gcc/testsuite/g++.dg/torture/pr82060.C
  5c1263a91ff6c6cd35d7064c44081a27  gcc/testsuite/g++.dg/torture/pr82084.C
! de2083e3c32dc90879197a99c2956537  gcc/testsuite/g++.dg/torture/pr82154.C
  464b46d5d33b83e255dda6cc6950001a  gcc/testsuite/g++.dg/torture/pr82823.C
  7b31d7e6cf7338af5c217f792e597cec  gcc/testsuite/g++.dg/torture/pr82902.C
  c27ff8c719172e781d9a4d4c2da6a666  gcc/testsuite/g++.dg/torture/pr82985.C
--- 24531,24537 ----
  22414dc3cabbf804f8f8f89b0d5c45b5  gcc/testsuite/g++.dg/torture/pr81987.C
  56f289074e2ec405f84e8945ba2fd8e7  gcc/testsuite/g++.dg/torture/pr82060.C
  5c1263a91ff6c6cd35d7064c44081a27  gcc/testsuite/g++.dg/torture/pr82084.C
! 5432e74411bf9828af77fa6e1ac39706  gcc/testsuite/g++.dg/torture/pr82154.C
  464b46d5d33b83e255dda6cc6950001a  gcc/testsuite/g++.dg/torture/pr82823.C
  7b31d7e6cf7338af5c217f792e597cec  gcc/testsuite/g++.dg/torture/pr82902.C
  c27ff8c719172e781d9a4d4c2da6a666  gcc/testsuite/g++.dg/torture/pr82985.C
*************** d1b878a0538cc40530c3ecf9a0d7407f  gcc/te
*** 22437,22443 ****
  a014b3fd5fa24febe9c7ec72a11db609  gcc/testsuite/g++.dg/torture/pr87997.C
  152891f73ca5338367c7fe59b2825056  gcc/testsuite/g++.dg/torture/pr88130.C
  dbe58e15424b476b932c58cb5bc16046  gcc/testsuite/g++.dg/torture/pr88149.C
! cf4f053f829cc77941d9499636dba788  gcc/testsuite/g++.dg/torture/pr88861.C
  28251f0199f94a1606cac696e1db484b  gcc/testsuite/g++.dg/torture/pr89303.C
  6295f2521ee059610fe7d8e12800e20b  gcc/testsuite/g++.dg/torture/pr89698.C
  922274fa2bea46eb7cee843b1f139ab8  gcc/testsuite/g++.dg/torture/pr90194.C
--- 24563,24569 ----
  a014b3fd5fa24febe9c7ec72a11db609  gcc/testsuite/g++.dg/torture/pr87997.C
  152891f73ca5338367c7fe59b2825056  gcc/testsuite/g++.dg/torture/pr88130.C
  dbe58e15424b476b932c58cb5bc16046  gcc/testsuite/g++.dg/torture/pr88149.C
! 663e2233e0848f2299ed87a276fc8d21  gcc/testsuite/g++.dg/torture/pr88861.C
  28251f0199f94a1606cac696e1db484b  gcc/testsuite/g++.dg/torture/pr89303.C
  6295f2521ee059610fe7d8e12800e20b  gcc/testsuite/g++.dg/torture/pr89698.C
  922274fa2bea46eb7cee843b1f139ab8  gcc/testsuite/g++.dg/torture/pr90194.C
*************** c09ff981d388790529f959a054685551  gcc/te
*** 22452,22471 ****
  012536b5aeeb81c62c942db315ce8848  gcc/testsuite/g++.dg/torture/pr91680.C
  176182a6555162b35b97697d2d133df3  gcc/testsuite/g++.dg/torture/pr92152.C
  1779028417f5f8e86e290051fd916516  gcc/testsuite/g++.dg/torture/pr92384.C
! 9a35859e6e5e4c19eca4b2f529432576  gcc/testsuite/g++.dg/torture/pr92421.C
  128505e31d0c3cfec9b59aafee1a7c1a  gcc/testsuite/g++.dg/torture/pr93246.C
  7265e1a5a23e5663d3be632b4f3eb62a  gcc/testsuite/g++.dg/torture/pr93273.C
! 8069d106d9dc8307faeb5a5bdb4693e8  gcc/testsuite/g++.dg/torture/pr93347.C
  73bfb5fbb91194a61d555deea3068d63  gcc/testsuite/g++.dg/torture/pr94202.C
  82ba90720d09eac5e4f7c2b54e9ceefa  gcc/testsuite/g++.dg/torture/pr94216.C
  36a3b069a153f0060c6f91ebc9823189  gcc/testsuite/g++.dg/torture/pr94303.C
  8a54174d92b1f9bb07faa27614358474  gcc/testsuite/g++.dg/torture/pr94582.C
  a799c054c48a1adfe45dbd068b878bcf  gcc/testsuite/g++.dg/torture/pr95308.C
  e81182d941656df2cf9317a908d63c3a  gcc/testsuite/g++.dg/torture/pr95493-1.C
  3162c3dc7f72a4b2566d143f27e1095d  gcc/testsuite/g++.dg/torture/pr95493.C
  881563a4734c7bc6a542eac2ffa6e78b  gcc/testsuite/g++.dg/torture/pr95548.C
  b8b82b8b079f8b69e6feb08f5f8b6787  gcc/testsuite/g++.dg/torture/pr95717.C
  ae315ba77976817d76246168005eeed5  gcc/testsuite/g++.dg/torture/pr97474.C
  6aafdf23f8121e344e96b390c6833ec3  gcc/testsuite/g++.dg/torture/pr99777.C
  e47702cb1ff0caccc17257524e8667dc  gcc/testsuite/g++.dg/torture/predcom-1.C
  d28910105d9c9253d94d70eacd5e19d4  gcc/testsuite/g++.dg/torture/pushpop_macro.C
--- 24578,24601 ----
  012536b5aeeb81c62c942db315ce8848  gcc/testsuite/g++.dg/torture/pr91680.C
  176182a6555162b35b97697d2d133df3  gcc/testsuite/g++.dg/torture/pr92152.C
  1779028417f5f8e86e290051fd916516  gcc/testsuite/g++.dg/torture/pr92384.C
! a5f9935d95a8b379688d9d02f216eee4  gcc/testsuite/g++.dg/torture/pr92421.C
  128505e31d0c3cfec9b59aafee1a7c1a  gcc/testsuite/g++.dg/torture/pr93246.C
  7265e1a5a23e5663d3be632b4f3eb62a  gcc/testsuite/g++.dg/torture/pr93273.C
! 89f6b83a53ea3f9c8933c6af8bb1b491  gcc/testsuite/g++.dg/torture/pr93347.C
  73bfb5fbb91194a61d555deea3068d63  gcc/testsuite/g++.dg/torture/pr94202.C
  82ba90720d09eac5e4f7c2b54e9ceefa  gcc/testsuite/g++.dg/torture/pr94216.C
  36a3b069a153f0060c6f91ebc9823189  gcc/testsuite/g++.dg/torture/pr94303.C
  8a54174d92b1f9bb07faa27614358474  gcc/testsuite/g++.dg/torture/pr94582.C
+ bdad2a22da5e508fb04f59e1ed5f7372  gcc/testsuite/g++.dg/torture/pr95268.C
+ d7b24817b654bd26f83a7a25390ba85e  gcc/testsuite/g++.dg/torture/pr95284.C
  a799c054c48a1adfe45dbd068b878bcf  gcc/testsuite/g++.dg/torture/pr95308.C
  e81182d941656df2cf9317a908d63c3a  gcc/testsuite/g++.dg/torture/pr95493-1.C
  3162c3dc7f72a4b2566d143f27e1095d  gcc/testsuite/g++.dg/torture/pr95493.C
  881563a4734c7bc6a542eac2ffa6e78b  gcc/testsuite/g++.dg/torture/pr95548.C
  b8b82b8b079f8b69e6feb08f5f8b6787  gcc/testsuite/g++.dg/torture/pr95717.C
  ae315ba77976817d76246168005eeed5  gcc/testsuite/g++.dg/torture/pr97474.C
+ 0ce41593aacf4a64d2a12d686d969de6  gcc/testsuite/g++.dg/torture/pr97960.C
+ e4a2806756d77b77d7647a06211473a0  gcc/testsuite/g++.dg/torture/pr98568.C
  6aafdf23f8121e344e96b390c6833ec3  gcc/testsuite/g++.dg/torture/pr99777.C
  e47702cb1ff0caccc17257524e8667dc  gcc/testsuite/g++.dg/torture/predcom-1.C
  d28910105d9c9253d94d70eacd5e19d4  gcc/testsuite/g++.dg/torture/pushpop_macro.C
*************** cae456330f7461197045e0a2f5fa12ce  gcc/te
*** 22478,22484 ****
  798d1fe29ec407f8783626ddb0d01446  gcc/testsuite/g++.dg/torture/stackalign/eh-thiscall-1.C
  ac2b625997ec285af8b6598167ada1fa  gcc/testsuite/g++.dg/torture/stackalign/eh-vararg-1.C
  5e58161ad482c690ceda702d708037b4  gcc/testsuite/g++.dg/torture/stackalign/eh-vararg-2.C
! 752074e81b5704a44dc9f2fb10bed7b3  gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp
  b1433c47f1b3510e41343cb1176ab88e  gcc/testsuite/g++.dg/torture/stackalign/stdcall-1.C
  b01a92d8302c9dc593001dd53f236dcf  gcc/testsuite/g++.dg/torture/stackalign/test-unwind.h
  46c8c72894cd196236d1548df5c8b779  gcc/testsuite/g++.dg/torture/stackalign/throw-1.C
--- 24608,24614 ----
  798d1fe29ec407f8783626ddb0d01446  gcc/testsuite/g++.dg/torture/stackalign/eh-thiscall-1.C
  ac2b625997ec285af8b6598167ada1fa  gcc/testsuite/g++.dg/torture/stackalign/eh-vararg-1.C
  5e58161ad482c690ceda702d708037b4  gcc/testsuite/g++.dg/torture/stackalign/eh-vararg-2.C
! 761bc86a6064e359ccfc61fdc6e02b59  gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp
  b1433c47f1b3510e41343cb1176ab88e  gcc/testsuite/g++.dg/torture/stackalign/stdcall-1.C
  b01a92d8302c9dc593001dd53f236dcf  gcc/testsuite/g++.dg/torture/stackalign/test-unwind.h
  46c8c72894cd196236d1548df5c8b779  gcc/testsuite/g++.dg/torture/stackalign/throw-1.C
*************** e5c358735afed9e9c54950b2b1516563  gcc/te
*** 22531,22537 ****
  4596cc60725cb368fc62ab2b1db48ad4  gcc/testsuite/g++.dg/tree-prof/reorder.C
  45ee371a772198109e5e2acb3f7c0f0b  gcc/testsuite/g++.dg/tree-prof/reorder_class1.h
  3dacd3cf3baf954cf35437e3859e7171  gcc/testsuite/g++.dg/tree-prof/reorder_class2.h
! 28e945d4a1fac2512469e382d0b50f68  gcc/testsuite/g++.dg/tree-prof/tree-prof.exp
  2a1f9c8b1ccb241e4745f1e06c56fac3  gcc/testsuite/g++.dg/tree-ssa/20040317-1.C
  9b3694af0b6195c5c10b4b0caa6af5a4  gcc/testsuite/g++.dg/tree-ssa/alias-access-path-1.C
  2beabec34d757a40497771a8e2204be6  gcc/testsuite/g++.dg/tree-ssa/array-temp1.C
--- 24661,24667 ----
  4596cc60725cb368fc62ab2b1db48ad4  gcc/testsuite/g++.dg/tree-prof/reorder.C
  45ee371a772198109e5e2acb3f7c0f0b  gcc/testsuite/g++.dg/tree-prof/reorder_class1.h
  3dacd3cf3baf954cf35437e3859e7171  gcc/testsuite/g++.dg/tree-prof/reorder_class2.h
! 48a21377db7e75a1f567a2a233cc0c84  gcc/testsuite/g++.dg/tree-prof/tree-prof.exp
  2a1f9c8b1ccb241e4745f1e06c56fac3  gcc/testsuite/g++.dg/tree-ssa/20040317-1.C
  9b3694af0b6195c5c10b4b0caa6af5a4  gcc/testsuite/g++.dg/tree-ssa/alias-access-path-1.C
  2beabec34d757a40497771a8e2204be6  gcc/testsuite/g++.dg/tree-ssa/array-temp1.C
*************** e5c358735afed9e9c54950b2b1516563  gcc/te
*** 22539,22545 ****
  92014ea122d687546fe3649560d8b2a7  gcc/testsuite/g++.dg/tree-ssa/builtin1.C
  713d6b942f1fdfec168122607d26adf6  gcc/testsuite/g++.dg/tree-ssa/calloc.C
  96f78e0eceff770431ee91e38866bb06  gcc/testsuite/g++.dg/tree-ssa/copyprop-1.C
! d91b8a641aa0d5f214c5844a6944163c  gcc/testsuite/g++.dg/tree-ssa/copyprop.C
  87d33077dde5db2d1e9e001bd82dc9cd  gcc/testsuite/g++.dg/tree-ssa/counts-1.C
  6c20484753d2fb5081463a83f21e1f85  gcc/testsuite/g++.dg/tree-ssa/cprop-vcond.C
  ac99be7ada2631c077352f322dd05ca0  gcc/testsuite/g++.dg/tree-ssa/deleted-label1.C
--- 24669,24675 ----
  92014ea122d687546fe3649560d8b2a7  gcc/testsuite/g++.dg/tree-ssa/builtin1.C
  713d6b942f1fdfec168122607d26adf6  gcc/testsuite/g++.dg/tree-ssa/calloc.C
  96f78e0eceff770431ee91e38866bb06  gcc/testsuite/g++.dg/tree-ssa/copyprop-1.C
! 976b25599ddf8018c866aa1c66d6dba9  gcc/testsuite/g++.dg/tree-ssa/copyprop.C
  87d33077dde5db2d1e9e001bd82dc9cd  gcc/testsuite/g++.dg/tree-ssa/counts-1.C
  6c20484753d2fb5081463a83f21e1f85  gcc/testsuite/g++.dg/tree-ssa/cprop-vcond.C
  ac99be7ada2631c077352f322dd05ca0  gcc/testsuite/g++.dg/tree-ssa/deleted-label1.C
*************** e7acf0a7b027c556c76317572440f052  gcc/te
*** 22556,22561 ****
--- 24686,24692 ----
  bca63426f4323897c7869d093f089d80  gcc/testsuite/g++.dg/tree-ssa/fold-compare.C
  9c918af3cab5a77ccdb922ddbdb9c126  gcc/testsuite/g++.dg/tree-ssa/forwprop-switch.C
  64c09190e248a41f55f2136c28fdea69  gcc/testsuite/g++.dg/tree-ssa/fwprop-align.C
+ 8bb6414e80e2b42a36361d40348b3534  gcc/testsuite/g++.dg/tree-ssa/if-to-switch-1.C
  127599cd2fc99b9d009cc2cd103b0b2e  gcc/testsuite/g++.dg/tree-ssa/inline-1.C
  05007feb9baa282cc5097a6f8208ee56  gcc/testsuite/g++.dg/tree-ssa/inline-2.C
  dc09af43ca9827d657db7f2b91897bea  gcc/testsuite/g++.dg/tree-ssa/inline-3.C
*************** fc543c41c4e9412257ec7327d35091bd  gcc/te
*** 22597,22603 ****
  aebde03bd95152e23e293110d01cc55f  gcc/testsuite/g++.dg/tree-ssa/pr19476-7.C
  7faa1b335a071fd2ae1fc67590ce21d7  gcc/testsuite/g++.dg/tree-ssa/pr19637.C
  a425019d3ee630ab12baac6d527c530b  gcc/testsuite/g++.dg/tree-ssa/pr19786.C
! 36bd9beac17d2e8b1b1d232781a1f7e9  gcc/testsuite/g++.dg/tree-ssa/pr19807.C
  f05b30134e85add64a7b367e35828cf5  gcc/testsuite/g++.dg/tree-ssa/pr19952.C
  22324561762dc41c7dbd5cf1400cfe5b  gcc/testsuite/g++.dg/tree-ssa/pr20280.C
  41846b62265c3bb2f5a736155a172f33  gcc/testsuite/g++.dg/tree-ssa/pr20458.C
--- 24728,24734 ----
  aebde03bd95152e23e293110d01cc55f  gcc/testsuite/g++.dg/tree-ssa/pr19476-7.C
  7faa1b335a071fd2ae1fc67590ce21d7  gcc/testsuite/g++.dg/tree-ssa/pr19637.C
  a425019d3ee630ab12baac6d527c530b  gcc/testsuite/g++.dg/tree-ssa/pr19786.C
! 284eaec9bac51536b4d1aad2a6ae64fb  gcc/testsuite/g++.dg/tree-ssa/pr19807.C
  f05b30134e85add64a7b367e35828cf5  gcc/testsuite/g++.dg/tree-ssa/pr19952.C
  22324561762dc41c7dbd5cf1400cfe5b  gcc/testsuite/g++.dg/tree-ssa/pr20280.C
  41846b62265c3bb2f5a736155a172f33  gcc/testsuite/g++.dg/tree-ssa/pr20458.C
*************** aa931156abafd21884e323d601aa367f  gcc/te
*** 22614,22620 ****
  941b942a95d741f6184e06a6436ab545  gcc/testsuite/g++.dg/tree-ssa/pr22071.C
  7c4b92ce09c59b2004e7746f2b1bd386  gcc/testsuite/g++.dg/tree-ssa/pr22279.C
  1ea79bad3adcdf5685946133e3c5e95f  gcc/testsuite/g++.dg/tree-ssa/pr22404.C
! 869ca6729edd45e41ddf99e39c41ab5a  gcc/testsuite/g++.dg/tree-ssa/pr22444.C
  48e06b851bf1784a8edda8606ba10d99  gcc/testsuite/g++.dg/tree-ssa/pr22488.C
  65be1fbed029e9a8dc4952880c85496f  gcc/testsuite/g++.dg/tree-ssa/pr22550.C
  8757b801b93bd7b27358f98ca8bc55b2  gcc/testsuite/g++.dg/tree-ssa/pr22615.C
--- 24745,24751 ----
  941b942a95d741f6184e06a6436ab545  gcc/testsuite/g++.dg/tree-ssa/pr22071.C
  7c4b92ce09c59b2004e7746f2b1bd386  gcc/testsuite/g++.dg/tree-ssa/pr22279.C
  1ea79bad3adcdf5685946133e3c5e95f  gcc/testsuite/g++.dg/tree-ssa/pr22404.C
! db1af9a77c0f22346ecb9602a8ecbee2  gcc/testsuite/g++.dg/tree-ssa/pr22444.C
  48e06b851bf1784a8edda8606ba10d99  gcc/testsuite/g++.dg/tree-ssa/pr22488.C
  65be1fbed029e9a8dc4952880c85496f  gcc/testsuite/g++.dg/tree-ssa/pr22550.C
  8757b801b93bd7b27358f98ca8bc55b2  gcc/testsuite/g++.dg/tree-ssa/pr22615.C
*************** fc23f194bae9c81c5e59ce474597bd1c  gcc/te
*** 22629,22635 ****
  2c3a0f58b5c4d9910b46c690b81523e9  gcc/testsuite/g++.dg/tree-ssa/pr24238.C
  c7d08277c75dad45e79a0f43ab257c4c  gcc/testsuite/g++.dg/tree-ssa/pr24351-1.C
  35351f51c829a8c2ba2180c169d060d1  gcc/testsuite/g++.dg/tree-ssa/pr24351-2.C
! 6df50a18597dadadc96b6f211fbb2b8d  gcc/testsuite/g++.dg/tree-ssa/pr24351-3.C
  9a08ef02da783cd1df3302f368440d82  gcc/testsuite/g++.dg/tree-ssa/pr24439.C
  106c9716380acfba412f6534beaba23b  gcc/testsuite/g++.dg/tree-ssa/pr25771.C
  9b83f20893ef5febef9dbb2f7ade2aa1  gcc/testsuite/g++.dg/tree-ssa/pr26140.C
--- 24760,24766 ----
  2c3a0f58b5c4d9910b46c690b81523e9  gcc/testsuite/g++.dg/tree-ssa/pr24238.C
  c7d08277c75dad45e79a0f43ab257c4c  gcc/testsuite/g++.dg/tree-ssa/pr24351-1.C
  35351f51c829a8c2ba2180c169d060d1  gcc/testsuite/g++.dg/tree-ssa/pr24351-2.C
! 3ef3a12d07f786050c5e1e54f115d7b6  gcc/testsuite/g++.dg/tree-ssa/pr24351-3.C
  9a08ef02da783cd1df3302f368440d82  gcc/testsuite/g++.dg/tree-ssa/pr24439.C
  106c9716380acfba412f6534beaba23b  gcc/testsuite/g++.dg/tree-ssa/pr25771.C
  9b83f20893ef5febef9dbb2f7ade2aa1  gcc/testsuite/g++.dg/tree-ssa/pr26140.C
*************** c7d08277c75dad45e79a0f43ab257c4c  gcc/te
*** 22637,22645 ****
  0f61e3b02d9689c33c95f07a9421ed69  gcc/testsuite/g++.dg/tree-ssa/pr26443.C
  f08282d681d172ebc2a1c9dc4cc201ec  gcc/testsuite/g++.dg/tree-ssa/pr26757.C
  83ef921384e1984e08001c3c48ee8116  gcc/testsuite/g++.dg/tree-ssa/pr27090.C
! afe6c2d5f5fe286db0bf5a59a3834018  gcc/testsuite/g++.dg/tree-ssa/pr27283.C
! 73fb9ccb09fd5339af597037d7192b96  gcc/testsuite/g++.dg/tree-ssa/pr27291.C
! 267aeb20b2a1ded7a355eecdb05b69a1  gcc/testsuite/g++.dg/tree-ssa/pr27548.C
  b7fb5b853f7854c141799346f2354a0c  gcc/testsuite/g++.dg/tree-ssa/pr27549.C
  597fc2a6ee55d98094415cfe6c9afa80  gcc/testsuite/g++.dg/tree-ssa/pr27830.C
  086db4c922e923a9d5c7b0582a1ba9f5  gcc/testsuite/g++.dg/tree-ssa/pr27894.C
--- 24768,24776 ----
  0f61e3b02d9689c33c95f07a9421ed69  gcc/testsuite/g++.dg/tree-ssa/pr26443.C
  f08282d681d172ebc2a1c9dc4cc201ec  gcc/testsuite/g++.dg/tree-ssa/pr26757.C
  83ef921384e1984e08001c3c48ee8116  gcc/testsuite/g++.dg/tree-ssa/pr27090.C
! d79082aa96dedad0ea6f2c53b26bd08f  gcc/testsuite/g++.dg/tree-ssa/pr27283.C
! eed667ceb17ac8672bbc6c5f4d4b00ad  gcc/testsuite/g++.dg/tree-ssa/pr27291.C
! 236a798a445310f0104f157f5241ce0e  gcc/testsuite/g++.dg/tree-ssa/pr27548.C
  b7fb5b853f7854c141799346f2354a0c  gcc/testsuite/g++.dg/tree-ssa/pr27549.C
  597fc2a6ee55d98094415cfe6c9afa80  gcc/testsuite/g++.dg/tree-ssa/pr27830.C
  086db4c922e923a9d5c7b0582a1ba9f5  gcc/testsuite/g++.dg/tree-ssa/pr27894.C
*************** c8bd1a4a60ae7b3886c575e82da06256  gcc/te
*** 22673,22679 ****
  9fa7c9a1677573428aaa46e9bd0f12e7  gcc/testsuite/g++.dg/tree-ssa/pr41905.C
  91fe55fdc4c162c106f9fe9a49ed7329  gcc/testsuite/g++.dg/tree-ssa/pr41906.C
  b3721c1012726f86c682c19ffbad76a6  gcc/testsuite/g++.dg/tree-ssa/pr41961.C
! ed4d9de99c0842c6382480defb9d9552  gcc/testsuite/g++.dg/tree-ssa/pr42337.C
  e2c24d55a6b2e21cfe1781dded2f3465  gcc/testsuite/g++.dg/tree-ssa/pr43411.C
  4ae64fe9713a771de3eec6d2ef7baf39  gcc/testsuite/g++.dg/tree-ssa/pr44706.C
  bf024d05ee739cc11776ea4df13e3e55  gcc/testsuite/g++.dg/tree-ssa/pr44914.C
--- 24804,24810 ----
  9fa7c9a1677573428aaa46e9bd0f12e7  gcc/testsuite/g++.dg/tree-ssa/pr41905.C
  91fe55fdc4c162c106f9fe9a49ed7329  gcc/testsuite/g++.dg/tree-ssa/pr41906.C
  b3721c1012726f86c682c19ffbad76a6  gcc/testsuite/g++.dg/tree-ssa/pr41961.C
! f56be237c5b4f819e8b8a838af2ff0dc  gcc/testsuite/g++.dg/tree-ssa/pr42337.C
  e2c24d55a6b2e21cfe1781dded2f3465  gcc/testsuite/g++.dg/tree-ssa/pr43411.C
  4ae64fe9713a771de3eec6d2ef7baf39  gcc/testsuite/g++.dg/tree-ssa/pr44706.C
  bf024d05ee739cc11776ea4df13e3e55  gcc/testsuite/g++.dg/tree-ssa/pr44914.C
*************** b9485492461c48ebd2bb0ed7c80fca4e  gcc/te
*** 22683,22689 ****
  7b0e4882ed9e6e78fb17c21e24090631  gcc/testsuite/g++.dg/tree-ssa/pr46734.C
  248739916e15886a0a5ff7d34a13f30e  gcc/testsuite/g++.dg/tree-ssa/pr46987.C
  17b2dd8d2a9a3ac4de6f0295ef166de9  gcc/testsuite/g++.dg/tree-ssa/pr47707.C
! 6872861571c025abdad6c6c70514bc3a  gcc/testsuite/g++.dg/tree-ssa/pr49516.C
  deec61f943ce8761e57e704eca7387bf  gcc/testsuite/g++.dg/tree-ssa/pr49911.C
  1b5c1a0f49c65052fc81ec925592af2c  gcc/testsuite/g++.dg/tree-ssa/pr50622.C
  89739f72c7f9bd6fcc4c05cbe340d2f7  gcc/testsuite/g++.dg/tree-ssa/pr50741.C
--- 24814,24820 ----
  7b0e4882ed9e6e78fb17c21e24090631  gcc/testsuite/g++.dg/tree-ssa/pr46734.C
  248739916e15886a0a5ff7d34a13f30e  gcc/testsuite/g++.dg/tree-ssa/pr46987.C
  17b2dd8d2a9a3ac4de6f0295ef166de9  gcc/testsuite/g++.dg/tree-ssa/pr47707.C
! 6405f8fe122976a0a8cbe32b8f2f1861  gcc/testsuite/g++.dg/tree-ssa/pr49516.C
  deec61f943ce8761e57e704eca7387bf  gcc/testsuite/g++.dg/tree-ssa/pr49911.C
  1b5c1a0f49c65052fc81ec925592af2c  gcc/testsuite/g++.dg/tree-ssa/pr50622.C
  89739f72c7f9bd6fcc4c05cbe340d2f7  gcc/testsuite/g++.dg/tree-ssa/pr50741.C
*************** d3522c1a0ee5ce4a75cee9a89f394737  gcc/te
*** 22709,22715 ****
  07328ee6469ac64e4bd4807c2a72bd66  gcc/testsuite/g++.dg/tree-ssa/pr81719.C
  8f34a42b700068a3be53751206c5e499  gcc/testsuite/g++.dg/tree-ssa/pr82294.C
  cb1020cc1be52a08fe1719b557fc0fc6  gcc/testsuite/g++.dg/tree-ssa/pr83215.C
! 78e4cdca86a95451ea077fdcf7feb7b6  gcc/testsuite/g++.dg/tree-ssa/pr83518.C
  99096ec4f30fcdb55089995ea662cded  gcc/testsuite/g++.dg/tree-ssa/pr83523.C
  61fe56181a8e9245b77fd272e9912ecd  gcc/testsuite/g++.dg/tree-ssa/pr86062.C
  39af726ca8012f85160b6180dd60017f  gcc/testsuite/g++.dg/tree-ssa/pr86544.C
--- 24840,24846 ----
  07328ee6469ac64e4bd4807c2a72bd66  gcc/testsuite/g++.dg/tree-ssa/pr81719.C
  8f34a42b700068a3be53751206c5e499  gcc/testsuite/g++.dg/tree-ssa/pr82294.C
  cb1020cc1be52a08fe1719b557fc0fc6  gcc/testsuite/g++.dg/tree-ssa/pr83215.C
! c0b65a34728bd0641ed11250d156dd96  gcc/testsuite/g++.dg/tree-ssa/pr83518.C
  99096ec4f30fcdb55089995ea662cded  gcc/testsuite/g++.dg/tree-ssa/pr83523.C
  61fe56181a8e9245b77fd272e9912ecd  gcc/testsuite/g++.dg/tree-ssa/pr86062.C
  39af726ca8012f85160b6180dd60017f  gcc/testsuite/g++.dg/tree-ssa/pr86544.C
*************** ea4e143932bfcde8a35c6a9f47ca6cde  gcc/te
*** 22723,22729 ****
  2650e6ee3cdee1000d24ba2bb4b5fc07  gcc/testsuite/g++.dg/tree-ssa/pr89698.C
  1f998bcf66238aaf5155a2aca15ee3b0  gcc/testsuite/g++.dg/tree-ssa/pr89802.C
  b866758c2fd516b4dacfd775ceebf59a  gcc/testsuite/g++.dg/tree-ssa/pr90078.C
! 1061b976e57c110c5a7df9897a8cdb30  gcc/testsuite/g++.dg/tree-ssa/pr90883.C
  9c68536b936415a2c855dd49016280dc  gcc/testsuite/g++.dg/tree-ssa/pr92751.C
  f7f91db98b82775383e3b70a8d3b498d  gcc/testsuite/g++.dg/tree-ssa/pr93516.C
  b510682a84117ab69d6d6fc7663c13eb  gcc/testsuite/g++.dg/tree-ssa/pr93667.C
--- 24854,24860 ----
  2650e6ee3cdee1000d24ba2bb4b5fc07  gcc/testsuite/g++.dg/tree-ssa/pr89698.C
  1f998bcf66238aaf5155a2aca15ee3b0  gcc/testsuite/g++.dg/tree-ssa/pr89802.C
  b866758c2fd516b4dacfd775ceebf59a  gcc/testsuite/g++.dg/tree-ssa/pr90078.C
! d9e572ac70847e4ef80b8b3b7e595d60  gcc/testsuite/g++.dg/tree-ssa/pr90883.C
  9c68536b936415a2c855dd49016280dc  gcc/testsuite/g++.dg/tree-ssa/pr92751.C
  f7f91db98b82775383e3b70a8d3b498d  gcc/testsuite/g++.dg/tree-ssa/pr93516.C
  b510682a84117ab69d6d6fc7663c13eb  gcc/testsuite/g++.dg/tree-ssa/pr93667.C
*************** b510682a84117ab69d6d6fc7663c13eb  gcc/te
*** 22732,22739 ****
--- 24863,24874 ----
  e3fc8e52e34eeab2a0ee22888a080920  gcc/testsuite/g++.dg/tree-ssa/pr94224.C
  923e882ed0f63d86765b1563169471f0  gcc/testsuite/g++.dg/tree-ssa/pr94403.C
  898168c15a8e46be3b42ea4b0dae43a7  gcc/testsuite/g++.dg/tree-ssa/pr95638.C
+ 8cb82713ae80f84d454074acf0670135  gcc/testsuite/g++.dg/tree-ssa/pr95649.C
+ e53cec97097a9dc8117c2effbf4ea8d5  gcc/testsuite/g++.dg/tree-ssa/pr96930.C
  632b446e932f27efac2329d2234eb487  gcc/testsuite/g++.dg/tree-ssa/pr96979.C
+ 070d15097a92bcf12a8f98ecaa8b021c  gcc/testsuite/g++.dg/tree-ssa/pr97736.C
  b8201bfa7e55c2eb8fbf876e25c8e4a4  gcc/testsuite/g++.dg/tree-ssa/pred-1.C
+ 03a91158b9e309f0b4795ad80f62f016  gcc/testsuite/g++.dg/tree-ssa/pta-delete-1.C
  cbfe7d75cb5b5c7850564b006625c5e3  gcc/testsuite/g++.dg/tree-ssa/ptrmemfield.C
  f115b68cd787a27ea9c1c1050f60230c  gcc/testsuite/g++.dg/tree-ssa/restrict1.C
  4cf4b44ab3ea1e0ad116a3e615779fc1  gcc/testsuite/g++.dg/tree-ssa/restrict2.C
*************** dc3ef40ef566357c4f0d41f5f42c2bcc  gcc/te
*** 22766,22778 ****
  cd932ca55aa9252a2188bb383ac82ed7  gcc/testsuite/g++.dg/tsan/pr64265.C
  96f255f38a0cb7c1f48e01e6e96d0abf  gcc/testsuite/g++.dg/tsan/pr80110.C
  ba8b56e337f98c3bdfc0402e0dac484a  gcc/testsuite/g++.dg/tsan/pr88018.C
! 9918e1bc64a2cd45a30805e1436ed14d  gcc/testsuite/g++.dg/tsan/tsan.exp
  1048d0e6a3ca80d3b4720a445847e7cb  gcc/testsuite/g++.dg/tsan/tsan_barrier.h
  4a8a525549940ddd77b19875ffb1bcc6  gcc/testsuite/g++.dg/tsan/vptr_benign_race.C
  580f9f0da39034a82858b2ac3acfb1dc  gcc/testsuite/g++.dg/tsan/vptr_harmful_race.C
  8e35b815e5a8449757c488b50920c983  gcc/testsuite/g++.dg/ubsan/align-1.C
  edd0f3a5f8a8fc672ad606424b99556e  gcc/testsuite/g++.dg/ubsan/align-2.C
  2f3fe688d6c3cf6cb8662e809944b816  gcc/testsuite/g++.dg/ubsan/align-3.C
  a5c9a4af6ba744a4f85e714099331f92  gcc/testsuite/g++.dg/ubsan/attrib-1.C
  e0dd5668236c82185e44268a5d7921e7  gcc/testsuite/g++.dg/ubsan/cxx11-shift-1.C
  858f50197cab1823688292dba8b98ab7  gcc/testsuite/g++.dg/ubsan/cxx11-shift-2.C
--- 24901,24914 ----
  cd932ca55aa9252a2188bb383ac82ed7  gcc/testsuite/g++.dg/tsan/pr64265.C
  96f255f38a0cb7c1f48e01e6e96d0abf  gcc/testsuite/g++.dg/tsan/pr80110.C
  ba8b56e337f98c3bdfc0402e0dac484a  gcc/testsuite/g++.dg/tsan/pr88018.C
! de72bd7c19fc047d8e97a5a456b78c98  gcc/testsuite/g++.dg/tsan/tsan.exp
  1048d0e6a3ca80d3b4720a445847e7cb  gcc/testsuite/g++.dg/tsan/tsan_barrier.h
  4a8a525549940ddd77b19875ffb1bcc6  gcc/testsuite/g++.dg/tsan/vptr_benign_race.C
  580f9f0da39034a82858b2ac3acfb1dc  gcc/testsuite/g++.dg/tsan/vptr_harmful_race.C
  8e35b815e5a8449757c488b50920c983  gcc/testsuite/g++.dg/ubsan/align-1.C
  edd0f3a5f8a8fc672ad606424b99556e  gcc/testsuite/g++.dg/ubsan/align-2.C
  2f3fe688d6c3cf6cb8662e809944b816  gcc/testsuite/g++.dg/ubsan/align-3.C
+ 091303ac6b23c180ed41c610ac00741d  gcc/testsuite/g++.dg/ubsan/align-4.C
  a5c9a4af6ba744a4f85e714099331f92  gcc/testsuite/g++.dg/ubsan/attrib-1.C
  e0dd5668236c82185e44268a5d7921e7  gcc/testsuite/g++.dg/ubsan/cxx11-shift-1.C
  858f50197cab1823688292dba8b98ab7  gcc/testsuite/g++.dg/ubsan/cxx11-shift-2.C
*************** a654df71119821a4303cc9fe0501191b  gcc/te
*** 22797,22803 ****
  155d46dcdeb22f59fb989789b1e6b3d8  gcc/testsuite/g++.dg/ubsan/pr59415.C
  c01510327223fa5084d138538e05d01f  gcc/testsuite/g++.dg/ubsan/pr59437.C
  f79c5c3fe416583c001d6aaea7674732  gcc/testsuite/g++.dg/ubsan/pr60569.C
! 466d1bf6779270f6883dced3f26abd19  gcc/testsuite/g++.dg/ubsan/pr61272.C
  f9e7d9219975e0613b7d53ed55c87efe  gcc/testsuite/g++.dg/ubsan/pr63813.C
  a84e2582a036f0562ca82b54e5c2ead4  gcc/testsuite/g++.dg/ubsan/pr63913.C
  341f6e40cbb9b1de3fd3286888e58949  gcc/testsuite/g++.dg/ubsan/pr63956.C
--- 24933,24939 ----
  155d46dcdeb22f59fb989789b1e6b3d8  gcc/testsuite/g++.dg/ubsan/pr59415.C
  c01510327223fa5084d138538e05d01f  gcc/testsuite/g++.dg/ubsan/pr59437.C
  f79c5c3fe416583c001d6aaea7674732  gcc/testsuite/g++.dg/ubsan/pr60569.C
! 69f588f67ecc143557f50a8f217e20fc  gcc/testsuite/g++.dg/ubsan/pr61272.C
  f9e7d9219975e0613b7d53ed55c87efe  gcc/testsuite/g++.dg/ubsan/pr63813.C
  a84e2582a036f0562ca82b54e5c2ead4  gcc/testsuite/g++.dg/ubsan/pr63913.C
  341f6e40cbb9b1de3fd3286888e58949  gcc/testsuite/g++.dg/ubsan/pr63956.C
*************** ce25b7039c57de8705414023fc9b982c  gcc/te
*** 22807,22813 ****
  54361cd42a8bed584d37949028315596  gcc/testsuite/g++.dg/ubsan/pr64984.C
  ef9929349a5d5780851a743ed422521f  gcc/testsuite/g++.dg/ubsan/pr65000.C
  5403a132e4165e8898a2f4860e743e2f  gcc/testsuite/g++.dg/ubsan/pr65019.C
! 62241b92aa2450cf7825a725612b0b85  gcc/testsuite/g++.dg/ubsan/pr65583.C
  6b9e3645a368a7574abbb4bdca772998  gcc/testsuite/g++.dg/ubsan/pr65610.C
  f2d0208086b464032d5e78dca9f9c038  gcc/testsuite/g++.dg/ubsan/pr66452.C
  a31d68dcdd494a9e3696522314a2d394  gcc/testsuite/g++.dg/ubsan/pr66977.C
--- 24943,24949 ----
  54361cd42a8bed584d37949028315596  gcc/testsuite/g++.dg/ubsan/pr64984.C
  ef9929349a5d5780851a743ed422521f  gcc/testsuite/g++.dg/ubsan/pr65000.C
  5403a132e4165e8898a2f4860e743e2f  gcc/testsuite/g++.dg/ubsan/pr65019.C
! 92be2ed85986901ccc7843be6ebc1d70  gcc/testsuite/g++.dg/ubsan/pr65583.C
  6b9e3645a368a7574abbb4bdca772998  gcc/testsuite/g++.dg/ubsan/pr65610.C
  f2d0208086b464032d5e78dca9f9c038  gcc/testsuite/g++.dg/ubsan/pr66452.C
  a31d68dcdd494a9e3696522314a2d394  gcc/testsuite/g++.dg/ubsan/pr66977.C
*************** ccd812768635f8e01d90fa3320899ee9  gcc/te
*** 22846,22852 ****
  589c762c486b69664ddd1b82b8e4638a  gcc/testsuite/g++.dg/ubsan/pr83555.C
  1e73d2818207263906c21f51263036de  gcc/testsuite/g++.dg/ubsan/pr83987-2.C
  18c06ad656504d030053c0f32b2e5da2  gcc/testsuite/g++.dg/ubsan/pr83987.C
! 94af237452630bc235b32950ee64cecc  gcc/testsuite/g++.dg/ubsan/pr85029.C
  4b9f781093ad8d786afab10e64079ef9  gcc/testsuite/g++.dg/ubsan/pr86406.C
  b418b9ea8faf4e227b8682929711cea2  gcc/testsuite/g++.dg/ubsan/pr89234.C
  ca328b27d187715f9ca0336509eb5c8b  gcc/testsuite/g++.dg/ubsan/pr91993.C
--- 24982,24988 ----
  589c762c486b69664ddd1b82b8e4638a  gcc/testsuite/g++.dg/ubsan/pr83555.C
  1e73d2818207263906c21f51263036de  gcc/testsuite/g++.dg/ubsan/pr83987-2.C
  18c06ad656504d030053c0f32b2e5da2  gcc/testsuite/g++.dg/ubsan/pr83987.C
! 1c9515f4dc8c1f5da83f9fb796843ea8  gcc/testsuite/g++.dg/ubsan/pr85029.C
  4b9f781093ad8d786afab10e64079ef9  gcc/testsuite/g++.dg/ubsan/pr86406.C
  b418b9ea8faf4e227b8682929711cea2  gcc/testsuite/g++.dg/ubsan/pr89234.C
  ca328b27d187715f9ca0336509eb5c8b  gcc/testsuite/g++.dg/ubsan/pr91993.C
*************** ceefdce8629af65f842f11d82ad86264  gcc/te
*** 22863,22877 ****
  a512113af0ac3172f2466ee3a8c93259  gcc/testsuite/g++.dg/ubsan/static-init-1.C
  b1a38b150fef25f02239b481561ad148  gcc/testsuite/g++.dg/ubsan/static-init-2.C
  76c5d965e0f0683fddef3a001be6193c  gcc/testsuite/g++.dg/ubsan/static-init-3.C
! c6e9a1f1f95582f394ba0de4e90a4998  gcc/testsuite/g++.dg/ubsan/ubsan.exp
  cc0dd6c9b1afc04ca7636be396fec990  gcc/testsuite/g++.dg/ubsan/vla-1.C
  5217088a7dd4248f6e9f0170ee0f262b  gcc/testsuite/g++.dg/ubsan/vptr-1.C
  5de2b1282f667edcca7c8b102d137b0d  gcc/testsuite/g++.dg/ubsan/vptr-10.C
  7871fdd28f8d26bc692ef38fd24d6573  gcc/testsuite/g++.dg/ubsan/vptr-11.C
  7ea8c58d0c37f70dfea7b71ab85c3a47  gcc/testsuite/g++.dg/ubsan/vptr-12.C
  15e8bf03defcc64ccdf3ff070adfbf9c  gcc/testsuite/g++.dg/ubsan/vptr-13.C
! eb65a43bfca2604f5a8b2e2f09212f46  gcc/testsuite/g++.dg/ubsan/vptr-14.C
  500f520fd0d0a4c5ee755bfb137697de  gcc/testsuite/g++.dg/ubsan/vptr-15.C
  1968a8f982e5990a850fcae723fa33cc  gcc/testsuite/g++.dg/ubsan/vptr-18.C
  cef046f562c0a23eb331cea94cd5b44f  gcc/testsuite/g++.dg/ubsan/vptr-2.C
  729147822cd9bf5bf718456c1dbff28d  gcc/testsuite/g++.dg/ubsan/vptr-3.C
--- 24999,25016 ----
  a512113af0ac3172f2466ee3a8c93259  gcc/testsuite/g++.dg/ubsan/static-init-1.C
  b1a38b150fef25f02239b481561ad148  gcc/testsuite/g++.dg/ubsan/static-init-2.C
  76c5d965e0f0683fddef3a001be6193c  gcc/testsuite/g++.dg/ubsan/static-init-3.C
! 9fa75d580ce9a35e561b204d8bdf8b2d  gcc/testsuite/g++.dg/ubsan/ubsan.exp
  cc0dd6c9b1afc04ca7636be396fec990  gcc/testsuite/g++.dg/ubsan/vla-1.C
+ f36d3df10de7d616fdeaf6bd08060535  gcc/testsuite/g++.dg/ubsan/vla-2.C
  5217088a7dd4248f6e9f0170ee0f262b  gcc/testsuite/g++.dg/ubsan/vptr-1.C
  5de2b1282f667edcca7c8b102d137b0d  gcc/testsuite/g++.dg/ubsan/vptr-10.C
  7871fdd28f8d26bc692ef38fd24d6573  gcc/testsuite/g++.dg/ubsan/vptr-11.C
  7ea8c58d0c37f70dfea7b71ab85c3a47  gcc/testsuite/g++.dg/ubsan/vptr-12.C
  15e8bf03defcc64ccdf3ff070adfbf9c  gcc/testsuite/g++.dg/ubsan/vptr-13.C
! 8757263be27343c1e4ea91a5c6c7ff1e  gcc/testsuite/g++.dg/ubsan/vptr-14.C
  500f520fd0d0a4c5ee755bfb137697de  gcc/testsuite/g++.dg/ubsan/vptr-15.C
+ dcd9726dc8b4e6083387751cc9d6254d  gcc/testsuite/g++.dg/ubsan/vptr-16.C
+ 7e7bbb42c768722416820e592f65ca97  gcc/testsuite/g++.dg/ubsan/vptr-17.C
  1968a8f982e5990a850fcae723fa33cc  gcc/testsuite/g++.dg/ubsan/vptr-18.C
  cef046f562c0a23eb331cea94cd5b44f  gcc/testsuite/g++.dg/ubsan/vptr-2.C
  729147822cd9bf5bf718456c1dbff28d  gcc/testsuite/g++.dg/ubsan/vptr-3.C
*************** dc35acb0f3b80c07fb4789cb89eb09b2  gcc/te
*** 22941,22952 ****
--- 25080,25102 ----
  6f2e63784179305f0c880851e4919fe0  gcc/testsuite/g++.dg/vect/pr87914.cc
  f43552c44ef4b1c173b99eef9aa263d8  gcc/testsuite/g++.dg/vect/pr89653.cc
  e3c0964a70677f56a2eccf0db300d710  gcc/testsuite/g++.dg/vect/pr92595.cc
+ 61256228c999b0fe6df91a3666bfd697  gcc/testsuite/g++.dg/vect/pr95290.cc
+ 76acf1f17c191c2e7f29bb8bfda15df9  gcc/testsuite/g++.dg/vect/pr95297.cc
  955af9691b3585e5265111804390ac00  gcc/testsuite/g++.dg/vect/pr95401.cc
  fd07a827606ccd02203378d37b593056  gcc/testsuite/g++.dg/vect/pr95401a.cc
  cbe0abb42f5376d089dc918e9d8f8188  gcc/testsuite/g++.dg/vect/pr95487.cc
+ c66ee3a2b6a8151f02527a038fc39dc7  gcc/testsuite/g++.dg/vect/pr95576.cc
+ c0a7423fe6c8b91501b54c66ebfe3c32  gcc/testsuite/g++.dg/vect/pr96022.cc
+ 205c96f3e1585c2ae71bceabcad0796b  gcc/testsuite/g++.dg/vect/pr96163.cc
  542124827fb9187c91a9422b19bbdbd5  gcc/testsuite/g++.dg/vect/pr97255.cc
+ 59531286c9e0eca9137074a891cbae16  gcc/testsuite/g++.dg/vect/pr97347.cc
+ ad03cf9b82f9825b989c4dbfdd8a2d38  gcc/testsuite/g++.dg/vect/pr98064.cc
+ aba3bb29ee5e870ffa4ce33d7d243b2d  gcc/testsuite/g++.dg/vect/pr99149.cc
+ b9b7aeb622b8ca037050c102cf2f4775  gcc/testsuite/g++.dg/vect/pr99220.cc
  fc32d36182f79190004abe52c516089e  gcc/testsuite/g++.dg/vect/simd-1.cc
  c0baf08fc01514d3f4fca19bf3fc9596  gcc/testsuite/g++.dg/vect/simd-10.cc
+ e22e62780a55903eaa4dea16c509b7dd  gcc/testsuite/g++.dg/vect/simd-11.cc
+ 412158f8b3df0970a3e6497d52fd7d96  gcc/testsuite/g++.dg/vect/simd-12.cc
  a5d6231f7567ef96e7131ef4ea370a2a  gcc/testsuite/g++.dg/vect/simd-2.cc
  71351a654774962f7607bd6e837a0198  gcc/testsuite/g++.dg/vect/simd-3.cc
  f8b252fe5073b3930ea717bc88d9ee44  gcc/testsuite/g++.dg/vect/simd-4.cc
*************** af7f6d5e825e23ddb64f4928bc24e570  gcc/te
*** 22966,22978 ****
  c3079a303a422fbdcc1f72b0e2a98a47  gcc/testsuite/g++.dg/vect/simd-clone-5.cc
  b8fb5b23ece050421d669915c600780b  gcc/testsuite/g++.dg/vect/simd-clone-6.cc
  781254f2b1a514c9ba0f4e29b2e8d1a3  gcc/testsuite/g++.dg/vect/simd-clone-7.cc
  3bc95c24ca829b61efcb7f80670d3ab5  gcc/testsuite/g++.dg/vect/simd-mask-store-bool.cc
! 3c7b50dc56c581720a466e94943ccdae  gcc/testsuite/g++.dg/vect/slp-pr50413.cc
! ba398e1bec8514d144840b9f8de00b90  gcc/testsuite/g++.dg/vect/slp-pr50819.cc
! 4ad89227426a088579ffcf4a99ca1a49  gcc/testsuite/g++.dg/vect/slp-pr56812.cc
! c1895bfb0b734e779d0cca226e85ec37  gcc/testsuite/g++.dg/vect/slp-pr87105.cc
  0b813e60a26de881560d29211902ec5c  gcc/testsuite/g++.dg/vect/slp-pr92516.cc
! c9d6b32e59f230fcac5322dce21712c2  gcc/testsuite/g++.dg/vect/vect.exp
  71d10a285587bb46cc1bf1ab339fa743  gcc/testsuite/g++.dg/warn/83895.C
  daeef1989c46da48d17102900d28c0c7  gcc/testsuite/g++.dg/warn/Waddress-1.C
  76f33c61a70fa23046bdab31539d3229  gcc/testsuite/g++.dg/warn/Waddress-2.C
--- 25116,25132 ----
  c3079a303a422fbdcc1f72b0e2a98a47  gcc/testsuite/g++.dg/vect/simd-clone-5.cc
  b8fb5b23ece050421d669915c600780b  gcc/testsuite/g++.dg/vect/simd-clone-6.cc
  781254f2b1a514c9ba0f4e29b2e8d1a3  gcc/testsuite/g++.dg/vect/simd-clone-7.cc
+ 76efe246291fd426ffddd2ad9aba280b  gcc/testsuite/g++.dg/vect/simd-complex-num-null-node.cc
  3bc95c24ca829b61efcb7f80670d3ab5  gcc/testsuite/g++.dg/vect/simd-mask-store-bool.cc
! 470e82597279413bc82b08b1c7f1a530  gcc/testsuite/g++.dg/vect/slp-pr50413.cc
! 11df4aee7aba1f03c88e69e2642c282a  gcc/testsuite/g++.dg/vect/slp-pr50819.cc
! 65d174ec4c50c0d41899b909f7c4c318  gcc/testsuite/g++.dg/vect/slp-pr56812.cc
! 1d058dbf5c45144767f1dcf45b0e4501  gcc/testsuite/g++.dg/vect/slp-pr87105.cc
  0b813e60a26de881560d29211902ec5c  gcc/testsuite/g++.dg/vect/slp-pr92516.cc
! 575eb20a7046f483778f87a8b184d092  gcc/testsuite/g++.dg/vect/slp-pr97636.cc
! c4870dc8df97cfdf99e9845844e277e0  gcc/testsuite/g++.dg/vect/slp-pr98855.cc
! 474ba1e8afc259a33d5d37ef2c18cf22  gcc/testsuite/g++.dg/vect/vec-cond-expr-eh.C
! 4c4988dc2dd2a935b16d2d85b551d22c  gcc/testsuite/g++.dg/vect/vect.exp
  71d10a285587bb46cc1bf1ab339fa743  gcc/testsuite/g++.dg/warn/83895.C
  daeef1989c46da48d17102900d28c0c7  gcc/testsuite/g++.dg/warn/Waddress-1.C
  76f33c61a70fa23046bdab31539d3229  gcc/testsuite/g++.dg/warn/Waddress-2.C
*************** f70b05c7c6da2eb1e388cdb09831d355  gcc/te
*** 22984,22998 ****
  37d0be0d56d9e0aa2b1a4c10c166ffd2  gcc/testsuite/g++.dg/warn/Walways-true-1.C
  b743913da43f9ec511faf7814e2e77c8  gcc/testsuite/g++.dg/warn/Walways-true-2.C
  85946d6c4d80b74fc3bf7351777c73a0  gcc/testsuite/g++.dg/warn/Walways-true-3.C
  798433d4099cd8d7572fde802e640896  gcc/testsuite/g++.dg/warn/Warray-bounds-2.C
  de22eb15ae2420b77fbb90f3b584c785  gcc/testsuite/g++.dg/warn/Warray-bounds-3.C
  44982cde6de999156b24ac5b0d41b330  gcc/testsuite/g++.dg/warn/Warray-bounds-4.C
  843811e9e3bbecf56a84c608e9fd1073  gcc/testsuite/g++.dg/warn/Warray-bounds-5.C
  d53003b93dc25906e11f3f1291fb8a1d  gcc/testsuite/g++.dg/warn/Warray-bounds-6.C
  2dd5f5327b10ed709f19f591b16a7848  gcc/testsuite/g++.dg/warn/Warray-bounds-7.C
! 2a06d75a1a56ce005ed9b2c4557b7da7  gcc/testsuite/g++.dg/warn/Warray-bounds-8.C
  6eeb1f365add4be4bdb7ddd36c65ac44  gcc/testsuite/g++.dg/warn/Warray-bounds-9.C
  2d6a670b4e83bb7433e838e5b33398be  gcc/testsuite/g++.dg/warn/Warray-bounds.C
  d9be18151631c99a55837fcc6f6ada21  gcc/testsuite/g++.dg/warn/Wbool-operation-1.C
  d489a76c7b7ab5b0e165f2342a4e6974  gcc/testsuite/g++.dg/warn/Wbraces1.C
  61b34d5718e2ced8ea67aec611b5a81e  gcc/testsuite/g++.dg/warn/Wbraces2.C
--- 25138,25168 ----
  37d0be0d56d9e0aa2b1a4c10c166ffd2  gcc/testsuite/g++.dg/warn/Walways-true-1.C
  b743913da43f9ec511faf7814e2e77c8  gcc/testsuite/g++.dg/warn/Walways-true-2.C
  85946d6c4d80b74fc3bf7351777c73a0  gcc/testsuite/g++.dg/warn/Walways-true-3.C
+ 31884c272729c36503a83644d8a5da3a  gcc/testsuite/g++.dg/warn/Warray-bounds-10.C
+ 46868ccc2900cad79bbc60748b0f9a2d  gcc/testsuite/g++.dg/warn/Warray-bounds-11.C
+ 78540f5a492103fb057f69838aed0582  gcc/testsuite/g++.dg/warn/Warray-bounds-12.C
+ a48159ca7c6ab8b2c9be10d9045d0fcd  gcc/testsuite/g++.dg/warn/Warray-bounds-13.C
+ 751a532e4227b40e2fb6a1e86824d452  gcc/testsuite/g++.dg/warn/Warray-bounds-14.C
+ 572a6d7fa549dc456ad9ccafcd0de9c3  gcc/testsuite/g++.dg/warn/Warray-bounds-15.C
+ a51e59121ac395643cb3896da790dc94  gcc/testsuite/g++.dg/warn/Warray-bounds-16.C
+ 95942f0a33d153158cb14cc46802363b  gcc/testsuite/g++.dg/warn/Warray-bounds-17.C
+ 35573117acc546f03b1b924b513e72cd  gcc/testsuite/g++.dg/warn/Warray-bounds-18.C
+ 0186412c3f9a47b93aafb28f79f2d7c7  gcc/testsuite/g++.dg/warn/Warray-bounds-19.C
  798433d4099cd8d7572fde802e640896  gcc/testsuite/g++.dg/warn/Warray-bounds-2.C
+ 1b0615848ca5ff6a70ebec91e1f985ec  gcc/testsuite/g++.dg/warn/Warray-bounds-20.C
+ b524c7274934e8875fa2c0efd508fc92  gcc/testsuite/g++.dg/warn/Warray-bounds-21.C
+ 017ae9052a1c7ed7c39be76298ec9639  gcc/testsuite/g++.dg/warn/Warray-bounds-22.C
+ d36f126068fa0852b0b29fa28089dbd3  gcc/testsuite/g++.dg/warn/Warray-bounds-23.C
+ a0e826a4537965b07b3880791c956f9a  gcc/testsuite/g++.dg/warn/Warray-bounds-24.C
  de22eb15ae2420b77fbb90f3b584c785  gcc/testsuite/g++.dg/warn/Warray-bounds-3.C
  44982cde6de999156b24ac5b0d41b330  gcc/testsuite/g++.dg/warn/Warray-bounds-4.C
  843811e9e3bbecf56a84c608e9fd1073  gcc/testsuite/g++.dg/warn/Warray-bounds-5.C
  d53003b93dc25906e11f3f1291fb8a1d  gcc/testsuite/g++.dg/warn/Warray-bounds-6.C
  2dd5f5327b10ed709f19f591b16a7848  gcc/testsuite/g++.dg/warn/Warray-bounds-7.C
! d7cbf62602ce3f0fa143eaedf4981bb9  gcc/testsuite/g++.dg/warn/Warray-bounds-8.C
  6eeb1f365add4be4bdb7ddd36c65ac44  gcc/testsuite/g++.dg/warn/Warray-bounds-9.C
  2d6a670b4e83bb7433e838e5b33398be  gcc/testsuite/g++.dg/warn/Warray-bounds.C
+ 060f3f7d5c9e12d3ee82fa6b0a768523  gcc/testsuite/g++.dg/warn/Warray-bounds15.C
  d9be18151631c99a55837fcc6f6ada21  gcc/testsuite/g++.dg/warn/Wbool-operation-1.C
  d489a76c7b7ab5b0e165f2342a4e6974  gcc/testsuite/g++.dg/warn/Wbraces1.C
  61b34d5718e2ced8ea67aec611b5a81e  gcc/testsuite/g++.dg/warn/Wbraces2.C
*************** d15107f3d840c1f7539a3dc2f640a5df  gcc/te
*** 23010,23020 ****
  f9f3693c109e335911bc80e8396e0c60  gcc/testsuite/g++.dg/warn/Wclass-conversion1.C
  d1f9d6bf90b8f6a0b12581bcdadaf0cc  gcc/testsuite/g++.dg/warn/Wclass-conversion2.C
  91fa9d535a67070a0cbd4728cca02222  gcc/testsuite/g++.dg/warn/Wconditionally-supported-1.C
! 2087b0b8d0d8185a0532862748386767  gcc/testsuite/g++.dg/warn/Wconversion-integer.C
! a37b991eb8dccd0a84c0bdc7607d2d44  gcc/testsuite/g++.dg/warn/Wconversion-null-2.C
  b256e2e86a0c654704aeae4db0b68327  gcc/testsuite/g++.dg/warn/Wconversion-null-3.C
  cd3f4d5845660bede5b707ef057841a1  gcc/testsuite/g++.dg/warn/Wconversion-null-4.C
! c0ce42965ebf4e59b1164a436748625c  gcc/testsuite/g++.dg/warn/Wconversion-null.C
  2c4607ce27b629a3ea583bebe9da3a48  gcc/testsuite/g++.dg/warn/Wconversion-pr34389.C
  66a4d02772540ffde95b6db60a129d05  gcc/testsuite/g++.dg/warn/Wconversion-pr91993.C
  576bee0a7ec892ed245bd67b3471168c  gcc/testsuite/g++.dg/warn/Wconversion-pr94067.C
--- 25180,25191 ----
  f9f3693c109e335911bc80e8396e0c60  gcc/testsuite/g++.dg/warn/Wclass-conversion1.C
  d1f9d6bf90b8f6a0b12581bcdadaf0cc  gcc/testsuite/g++.dg/warn/Wclass-conversion2.C
  91fa9d535a67070a0cbd4728cca02222  gcc/testsuite/g++.dg/warn/Wconditionally-supported-1.C
! 0a5318e679484e4c698dc3557ca77477  gcc/testsuite/g++.dg/warn/Wconversion-integer.C
! 6cdba00d4fc0e7d2742e63c92a31a3df  gcc/testsuite/g++.dg/warn/Wconversion-null-2.C
  b256e2e86a0c654704aeae4db0b68327  gcc/testsuite/g++.dg/warn/Wconversion-null-3.C
  cd3f4d5845660bede5b707ef057841a1  gcc/testsuite/g++.dg/warn/Wconversion-null-4.C
! 2a9f0bdd60c8c6df369985ff90a8c3e6  gcc/testsuite/g++.dg/warn/Wconversion-null-5.C
! bc62ca5d41c48fc463c9f801cf992f38  gcc/testsuite/g++.dg/warn/Wconversion-null.C
  2c4607ce27b629a3ea583bebe9da3a48  gcc/testsuite/g++.dg/warn/Wconversion-pr34389.C
  66a4d02772540ffde95b6db60a129d05  gcc/testsuite/g++.dg/warn/Wconversion-pr91993.C
  576bee0a7ec892ed245bd67b3471168c  gcc/testsuite/g++.dg/warn/Wconversion-pr94067.C
*************** c0ce42965ebf4e59b1164a436748625c  gcc/te
*** 23023,23030 ****
  736c0fc05f17bc3cebde2b3749d2c04e  gcc/testsuite/g++.dg/warn/Wconversion-real-integer2.C
  d10152133e840d3699814c5271083357  gcc/testsuite/g++.dg/warn/Wconversion1.C
  aeadbc7507b32cb0295c0b4fb7b26084  gcc/testsuite/g++.dg/warn/Wconversion2.C
! f7dd0981dd1da24582fb107a2de2d745  gcc/testsuite/g++.dg/warn/Wconversion3.C
  45616b67235f1f39274574bca634f499  gcc/testsuite/g++.dg/warn/Wconversion4.C
  2d2da24222711602624d6870a966c8b0  gcc/testsuite/g++.dg/warn/Wctor-dtor.C
  b75d4f8883c7ddd7a04229eea603e6d3  gcc/testsuite/g++.dg/warn/Wctor-dtor2.C
  81f664dba5a025cdc726a4ce39403653  gcc/testsuite/g++.dg/warn/Wdelete-incomplete-1.C
--- 25194,25206 ----
  736c0fc05f17bc3cebde2b3749d2c04e  gcc/testsuite/g++.dg/warn/Wconversion-real-integer2.C
  d10152133e840d3699814c5271083357  gcc/testsuite/g++.dg/warn/Wconversion1.C
  aeadbc7507b32cb0295c0b4fb7b26084  gcc/testsuite/g++.dg/warn/Wconversion2.C
! bd809ba5b78959a32e5c921c83c4f02b  gcc/testsuite/g++.dg/warn/Wconversion3.C
  45616b67235f1f39274574bca634f499  gcc/testsuite/g++.dg/warn/Wconversion4.C
+ abded6dbddb20c9ffe5f2e0690cd191b  gcc/testsuite/g++.dg/warn/Wconversion5.C
+ aa8ce74ba265dc04c8b67795c14ea628  gcc/testsuite/g++.dg/warn/Wctad-maybe-unsupported.C
+ 84424ecfda695823bf02ce4faf2727d9  gcc/testsuite/g++.dg/warn/Wctad-maybe-unsupported.h
+ a1916c2510751afdcbb293e075fc4b79  gcc/testsuite/g++.dg/warn/Wctad-maybe-unsupported2.C
+ 924d0a16e978c03688e392123f204dff  gcc/testsuite/g++.dg/warn/Wctad-maybe-unsupported3.C
  2d2da24222711602624d6870a966c8b0  gcc/testsuite/g++.dg/warn/Wctor-dtor.C
  b75d4f8883c7ddd7a04229eea603e6d3  gcc/testsuite/g++.dg/warn/Wctor-dtor2.C
  81f664dba5a025cdc726a4ce39403653  gcc/testsuite/g++.dg/warn/Wdelete-incomplete-1.C
*************** bd11a2daa2d98e0a5e4ef883cd664911  gcc/te
*** 23038,23055 ****
  c71f5fb3792e0ba57c0a4e43cd39038f  gcc/testsuite/g++.dg/warn/Wdiv-by-zero.C
  cf2551312abb241854e1de4e7dcfd670  gcc/testsuite/g++.dg/warn/Wdouble-promotion.C
  ee0b4d9e331b2ed8b1a730e066fc0084  gcc/testsuite/g++.dg/warn/Wdtor1.C
! f96322151d880e92c72d4b0060bb14e3  gcc/testsuite/g++.dg/warn/Wduplicated-branches1.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
  c32e2d9c26f73ceab75448129f154a62  gcc/testsuite/g++.dg/warn/Wduplicated-branches5.C
  53e8ba692e810326b135e28115da516a  gcc/testsuite/g++.dg/warn/Wduplicated-cond1.C
  8b9cbae2542d0ee1294a9aba56467023  gcc/testsuite/g++.dg/warn/Wenum-compare-no-2.C
  0159dc16051c0a3deaba6db2eeae85f8  gcc/testsuite/g++.dg/warn/Wenum-compare-no.C
  b141ada1b2936d65fc9a46fee390d652  gcc/testsuite/g++.dg/warn/Wenum-compare.C
  d267dddcbfdc3e1208a643c82d1c0886  gcc/testsuite/g++.dg/warn/Wextra-1.C
  fd872aba23fcbd09e4b5cb3b61dbaadf  gcc/testsuite/g++.dg/warn/Wextra-2.C
! ffae502f9f84f2574fe4580f73c4ddc9  gcc/testsuite/g++.dg/warn/Wextra-3.C
  8c47e0bcd8bf968023ffb07f7b921fcc  gcc/testsuite/g++.dg/warn/Wextra-4.C
  30a67fe46ead0acff3908a2c07a30489  gcc/testsuite/g++.dg/warn/Wextra-semi.C
  a2a1c47c22d508bea7ea5f6ecfa4f8e0  gcc/testsuite/g++.dg/warn/Wfloat-equal-1.C
--- 25214,25236 ----
  c71f5fb3792e0ba57c0a4e43cd39038f  gcc/testsuite/g++.dg/warn/Wdiv-by-zero.C
  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
  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
  c32e2d9c26f73ceab75448129f154a62  gcc/testsuite/g++.dg/warn/Wduplicated-branches5.C
+ c1c94fbed68712c556c47675075fab08  gcc/testsuite/g++.dg/warn/Wduplicated-branches6.C
+ df34a3119747a72018c056305c89abd6  gcc/testsuite/g++.dg/warn/Wduplicated-branches7.C
  53e8ba692e810326b135e28115da516a  gcc/testsuite/g++.dg/warn/Wduplicated-cond1.C
  8b9cbae2542d0ee1294a9aba56467023  gcc/testsuite/g++.dg/warn/Wenum-compare-no-2.C
  0159dc16051c0a3deaba6db2eeae85f8  gcc/testsuite/g++.dg/warn/Wenum-compare-no.C
  b141ada1b2936d65fc9a46fee390d652  gcc/testsuite/g++.dg/warn/Wenum-compare.C
+ 59f0fa30a449850f341e25908ccec7be  gcc/testsuite/g++.dg/warn/Wexceptions1.C
+ b23ca232425f1d48e75c85c218d0b204  gcc/testsuite/g++.dg/warn/Wexceptions2.C
+ 03631075795ca8fb59d7010e5057c378  gcc/testsuite/g++.dg/warn/Wexceptions3.C
  d267dddcbfdc3e1208a643c82d1c0886  gcc/testsuite/g++.dg/warn/Wextra-1.C
  fd872aba23fcbd09e4b5cb3b61dbaadf  gcc/testsuite/g++.dg/warn/Wextra-2.C
! 9b40c378598236ac6aefbcde251bcffa  gcc/testsuite/g++.dg/warn/Wextra-3.C
  8c47e0bcd8bf968023ffb07f7b921fcc  gcc/testsuite/g++.dg/warn/Wextra-4.C
  30a67fe46ead0acff3908a2c07a30489  gcc/testsuite/g++.dg/warn/Wextra-semi.C
  a2a1c47c22d508bea7ea5f6ecfa4f8e0  gcc/testsuite/g++.dg/warn/Wfloat-equal-1.C
*************** c051125966f7b3d00fdd612ba7549043  gcc/te
*** 23059,23068 ****
  9af8ba70e2572530afefa641561d5f5c  gcc/testsuite/g++.dg/warn/Wformat-pr71863.C
  2f32a8a1e61e4b8d8e49fa51a8336602  gcc/testsuite/g++.dg/warn/Wformat-ranges-c++11.C
  13806d7523b42aa362c0431d74bdaf85  gcc/testsuite/g++.dg/warn/Wformat-ranges.C
  caf05a8324926e9472342da0584539ad  gcc/testsuite/g++.dg/warn/Wignored-attributes-1.C
  55295c0bc11e5dffe89757d080280054  gcc/testsuite/g++.dg/warn/Wignored-attributes-2.C
  a5142c9cd89ebb3502a6adbdb75fa29c  gcc/testsuite/g++.dg/warn/Wignored-qualifiers1.C
! 223a9cc82cfdc42f62bbb5398c219cc8  gcc/testsuite/g++.dg/warn/Wimplicit-fallthrough-1.C
  e8496d82a0f58fc4bc26efa7a0a75fd3  gcc/testsuite/g++.dg/warn/Wimplicit-fallthrough-2.C
  126f476a9780bcba16781feab90ed2d8  gcc/testsuite/g++.dg/warn/Wimplicit-fallthrough-3.C
  d08dead319fb957e35430972a673a2fe  gcc/testsuite/g++.dg/warn/Wimplicit-fallthrough-4.C
--- 25240,25255 ----
  9af8ba70e2572530afefa641561d5f5c  gcc/testsuite/g++.dg/warn/Wformat-pr71863.C
  2f32a8a1e61e4b8d8e49fa51a8336602  gcc/testsuite/g++.dg/warn/Wformat-ranges-c++11.C
  13806d7523b42aa362c0431d74bdaf85  gcc/testsuite/g++.dg/warn/Wformat-ranges.C
+ 1f088fdb5ad33a236b6a530b858d7816  gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-2.C
+ 1aa6546fa5ce8c8ed4a822cce70a4601  gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
+ 55d500ce55b0e7b9f2e52d00593782d8  gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-4.C
+ f25961c7b179af7200015aeb505d51e6  gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-5.C
+ 22bd17b03f712caef0bc32ea1942421d  gcc/testsuite/g++.dg/warn/Wfree-nonheap-object.C
+ d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/g++.dg/warn/Wfree-nonheap-object.s
  caf05a8324926e9472342da0584539ad  gcc/testsuite/g++.dg/warn/Wignored-attributes-1.C
  55295c0bc11e5dffe89757d080280054  gcc/testsuite/g++.dg/warn/Wignored-attributes-2.C
  a5142c9cd89ebb3502a6adbdb75fa29c  gcc/testsuite/g++.dg/warn/Wignored-qualifiers1.C
! f9b7e3158d7918eb87fb4faeb4bb757d  gcc/testsuite/g++.dg/warn/Wimplicit-fallthrough-1.C
  e8496d82a0f58fc4bc26efa7a0a75fd3  gcc/testsuite/g++.dg/warn/Wimplicit-fallthrough-2.C
  126f476a9780bcba16781feab90ed2d8  gcc/testsuite/g++.dg/warn/Wimplicit-fallthrough-3.C
  d08dead319fb957e35430972a673a2fe  gcc/testsuite/g++.dg/warn/Wimplicit-fallthrough-4.C
*************** c793e11db22751c42cd4efac4c6e4868  gcc/te
*** 23073,23078 ****
--- 25260,25266 ----
  34ef776f2e6de10953d2565fdd08a426  gcc/testsuite/g++.dg/warn/Winit-list1.C
  59963a59cab2e70536733c20bef445b9  gcc/testsuite/g++.dg/warn/Winit-list2.C
  be08197ff1e9fe131158c9e64ecfcf10  gcc/testsuite/g++.dg/warn/Winit-list3.C
+ 267d9b4cf246c71186f6e11d22876701  gcc/testsuite/g++.dg/warn/Winit-list4.C
  5aaa168dd17b2a6cccd0048ee7abaa2e  gcc/testsuite/g++.dg/warn/Winit-self-2.C
  279c1660a514d3b05c577d1c615c3a99  gcc/testsuite/g++.dg/warn/Winit-self-3.C
  6a51f790f1905c68f12c2109638c7edb  gcc/testsuite/g++.dg/warn/Winit-self.C
*************** b383f047a6af35035ecd836253175c30  gcc/te
*** 23085,23090 ****
--- 25273,25283 ----
  13ee95f1cd2836b595541e2a9917c06d  gcc/testsuite/g++.dg/warn/Wlogical-op-2.C
  0d474dffc39eac06f1ef0fff37a5792f  gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
  640ad4c16d17c7bf605e6b30568da488  gcc/testsuite/g++.dg/warn/Wmemset-transposed-args-1.C
+ 1184b1df4ae243b5ab6917e0e3b219b6  gcc/testsuite/g++.dg/warn/Wmismatched-dealloc-2.C
+ d183cd43f2c2caf1b71024ba3762ff44  gcc/testsuite/g++.dg/warn/Wmismatched-dealloc.C
+ 74decc16b8ca63b12db874b7dde868cf  gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-2.C
+ 5c4cad449e21fe0fade92c9c0d19fb5f  gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-3.C
+ 3089b7e4a074a4993652acd742390397  gcc/testsuite/g++.dg/warn/Wmismatched-new-delete.C
  9e3053e15f6b0726e17bd19ce7fc3bf8  gcc/testsuite/g++.dg/warn/Wmismatched-tags-2.C
  34c810b16cc722166ffa4de29c41c7e5  gcc/testsuite/g++.dg/warn/Wmismatched-tags-3.C
  52f77f366a578c7b96fa3a4d1ae9a1c9  gcc/testsuite/g++.dg/warn/Wmismatched-tags-4.C
*************** b306962faed01d9c7837f5c94d8fd54b  gcc/te
*** 23095,23100 ****
--- 25288,25294 ----
  8bb91ffb5e984d7b02129f07fd4bd69c  gcc/testsuite/g++.dg/warn/Wmismatched-tags.C
  d3017d025f43f9093bf016847e418a34  gcc/testsuite/g++.dg/warn/Wmissing-declarations-1.C
  050c0fd9eb9dcd48940d99ba2041761b  gcc/testsuite/g++.dg/warn/Wmissing-field-initializers-1.C
+ 4e9d814761a91eb81f95a59e1186b932  gcc/testsuite/g++.dg/warn/Wmissing-field-initializers-2.C
  df77bef9a13ed28df97e854b2336076a  gcc/testsuite/g++.dg/warn/Wmultistatement-macros-1.C
  13048d07bf8630f21562df0b77b67343  gcc/testsuite/g++.dg/warn/Wno-div-by-zero.C
  7c3ea8d27e4d862f83fc6998269f6f42  gcc/testsuite/g++.dg/warn/Wno-narrowing1.C
*************** dab35a90f2d5d7420299ca9413e0edb0  gcc/te
*** 23112,23120 ****
  d8d1e3a45dd0a9c718cefdd08d54e264  gcc/testsuite/g++.dg/warn/Wnonnull-compare-8.C
  8985dc85b454de0b3c6bd0f0353e3ab7  gcc/testsuite/g++.dg/warn/Wnonnull-compare-9.C
  88849261dc2753b60777f99076e31e3f  gcc/testsuite/g++.dg/warn/Wnonnull1.C
  d38c5795330625342ab67317e9b6f464  gcc/testsuite/g++.dg/warn/Wnonnull2.C
! d8522883128c1eb223545be773c44b16  gcc/testsuite/g++.dg/warn/Wnonnull3.C
! 754841cc2f972f4f939f30784b78678c  gcc/testsuite/g++.dg/warn/Wnonnull4.C
  31408de946ef5836f2d1678b9f86f912  gcc/testsuite/g++.dg/warn/Wnull-conversion-1.C
  708b44e9b5964e2a171dfb6a7de72854  gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C
  8c56c916a791bfbd1ac25b63b43b766c  gcc/testsuite/g++.dg/warn/Wnvdtor-2.C
--- 25306,25322 ----
  d8d1e3a45dd0a9c718cefdd08d54e264  gcc/testsuite/g++.dg/warn/Wnonnull-compare-8.C
  8985dc85b454de0b3c6bd0f0353e3ab7  gcc/testsuite/g++.dg/warn/Wnonnull-compare-9.C
  88849261dc2753b60777f99076e31e3f  gcc/testsuite/g++.dg/warn/Wnonnull1.C
+ e9bd41d60be4f82ef43b5f35de41d514  gcc/testsuite/g++.dg/warn/Wnonnull10.C
+ 0166bf4f9caed1fb50326d999e252eb2  gcc/testsuite/g++.dg/warn/Wnonnull11.C
+ ec8a63d1096101cfc1e23b18809d3a81  gcc/testsuite/g++.dg/warn/Wnonnull12.C
  d38c5795330625342ab67317e9b6f464  gcc/testsuite/g++.dg/warn/Wnonnull2.C
! 2c88984bc06322d15c6f4f0922d037dc  gcc/testsuite/g++.dg/warn/Wnonnull3.C
! 2a01811fb8cc7758c4e764c1092e0006  gcc/testsuite/g++.dg/warn/Wnonnull4.C
! 3deb8178d63a9a341e9f7c25e9e96817  gcc/testsuite/g++.dg/warn/Wnonnull5.C
! a215f154659b59810e8473a01a441638  gcc/testsuite/g++.dg/warn/Wnonnull6.C
! b91b98129fd734ae30b45bf95e83759e  gcc/testsuite/g++.dg/warn/Wnonnull7.C
! eb91609b0aa76e42e2f92087d16b9514  gcc/testsuite/g++.dg/warn/Wnonnull8.C
! fdf0333e4f692b793361bbbaf7948216  gcc/testsuite/g++.dg/warn/Wnonnull9.C
  31408de946ef5836f2d1678b9f86f912  gcc/testsuite/g++.dg/warn/Wnull-conversion-1.C
  708b44e9b5964e2a171dfb6a7de72854  gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C
  8c56c916a791bfbd1ac25b63b43b766c  gcc/testsuite/g++.dg/warn/Wnvdtor-2.C
*************** f54d3fb57e7ea75f1954d2671e769fd5  gcc/te
*** 23158,23171 ****
  2d2ebfb174ee9ab83c9537cf9981ae96  gcc/testsuite/g++.dg/warn/Wparentheses-7.C
  fbe474c3ff1c910d01a5cb5e4447a752  gcc/testsuite/g++.dg/warn/Wparentheses-8.C
  6e767451a876da4d1880041cbfd264b0  gcc/testsuite/g++.dg/warn/Wparentheses-9.C
! 184d771612bace8fe83aa2c544d77f27  gcc/testsuite/g++.dg/warn/Wplacement-new-size-1.C
! 23d12cf3261d73355920a8fd0dc6d2c4  gcc/testsuite/g++.dg/warn/Wplacement-new-size-2.C
  d384bb1bb46e31c69b6a5c612b417019  gcc/testsuite/g++.dg/warn/Wplacement-new-size-3.C
  175ea195dd8d43c87f6e9050006ff679  gcc/testsuite/g++.dg/warn/Wplacement-new-size-4.C
! 029f3e09a24477727351d7980a8295f8  gcc/testsuite/g++.dg/warn/Wplacement-new-size-5.C
! cf07a6425825916a5c88195fecd3e891  gcc/testsuite/g++.dg/warn/Wplacement-new-size-6.C
! 934adf3fa796531ee74d3f3896aa6d80  gcc/testsuite/g++.dg/warn/Wplacement-new-size.C
  f828038b7b0977748fac3e57cac5a3da  gcc/testsuite/g++.dg/warn/Wpointer-arith-1.C
  bc5f141d5ba64d906981c425b810d3ed  gcc/testsuite/g++.dg/warn/Wredundant-decls-spec.C
  f03226124ff1dcc1fed0a1fa8c9a335c  gcc/testsuite/g++.dg/warn/Wredundant-tags-2.C
  0369ff7656e712932961336c9fab1a58  gcc/testsuite/g++.dg/warn/Wredundant-tags-3.C
--- 25360,25377 ----
  2d2ebfb174ee9ab83c9537cf9981ae96  gcc/testsuite/g++.dg/warn/Wparentheses-7.C
  fbe474c3ff1c910d01a5cb5e4447a752  gcc/testsuite/g++.dg/warn/Wparentheses-8.C
  6e767451a876da4d1880041cbfd264b0  gcc/testsuite/g++.dg/warn/Wparentheses-9.C
! d6d302322c17b62b7594047d0c81b5cd  gcc/testsuite/g++.dg/warn/Wplacement-new-size-1.C
! cdbb40e0e6f99e726332c11579b1d822  gcc/testsuite/g++.dg/warn/Wplacement-new-size-2.C
  d384bb1bb46e31c69b6a5c612b417019  gcc/testsuite/g++.dg/warn/Wplacement-new-size-3.C
  175ea195dd8d43c87f6e9050006ff679  gcc/testsuite/g++.dg/warn/Wplacement-new-size-4.C
! e191e992bff7bfd6c86ad6a14042ebe0  gcc/testsuite/g++.dg/warn/Wplacement-new-size-5.C
! ff02dfdca5384a6dba041d67fc7df02c  gcc/testsuite/g++.dg/warn/Wplacement-new-size-6.C
! 0710efa8038e519865c2476304e6c15a  gcc/testsuite/g++.dg/warn/Wplacement-new-size-7.C
! 0fb3af2ed13e25ac0782b4803b5b4512  gcc/testsuite/g++.dg/warn/Wplacement-new-size-8.C
! 378993931f53f053e2168ddac044d56f  gcc/testsuite/g++.dg/warn/Wplacement-new-size.C
  f828038b7b0977748fac3e57cac5a3da  gcc/testsuite/g++.dg/warn/Wpointer-arith-1.C
+ 1d9458fc60d7d418323599b03b1bdb66  gcc/testsuite/g++.dg/warn/Wrange-loop-construct.C
+ 68ce3ed4f1a0e041fcb5b20b12b8ba42  gcc/testsuite/g++.dg/warn/Wrange-loop-construct2.C
  bc5f141d5ba64d906981c425b810d3ed  gcc/testsuite/g++.dg/warn/Wredundant-decls-spec.C
  f03226124ff1dcc1fed0a1fa8c9a335c  gcc/testsuite/g++.dg/warn/Wredundant-tags-2.C
  0369ff7656e712932961336c9fab1a58  gcc/testsuite/g++.dg/warn/Wredundant-tags-3.C
*************** ea532b8d02c84e413fb770ee0fdd34c7  gcc/te
*** 23203,23208 ****
--- 25409,25415 ----
  78a781a7fee9227b3174b6dee0ac20b3  gcc/testsuite/g++.dg/warn/Wsequence-point-1.C
  d0d6c5fe9b201bcd8b68523fbf3f0ce2  gcc/testsuite/g++.dg/warn/Wsequence-point-2.C
  21e8a0380962b41685ed2da030d6e679  gcc/testsuite/g++.dg/warn/Wsequence-point-3.C
+ f58385057fb43a4541194480dc43d360  gcc/testsuite/g++.dg/warn/Wsequence-point-4.C
  8fb4b9a6c1d26c1e9bde7782d85ab4db  gcc/testsuite/g++.dg/warn/Wsequence-point-pr18050.C
  44fe19ff71727efce22e2f732d2ac553  gcc/testsuite/g++.dg/warn/Wshadow-1.C
  501d6f433bab53d27b046fc419dcb80a  gcc/testsuite/g++.dg/warn/Wshadow-10.C
*************** c9a313a018bffcf8c74feab4d7de24ee  gcc/te
*** 23212,23217 ****
--- 25419,25425 ----
  0adab2b878928f4991d26bb70783199d  gcc/testsuite/g++.dg/warn/Wshadow-14.C
  7eb0487629ffafe8015a0f69383aaa9d  gcc/testsuite/g++.dg/warn/Wshadow-15.C
  ffad6b5038655c4c4e389de3106c88b0  gcc/testsuite/g++.dg/warn/Wshadow-16.C
+ 38815e928f4e863202914977f5520b74  gcc/testsuite/g++.dg/warn/Wshadow-17.C
  6a6527871d476c4275232fa53d041994  gcc/testsuite/g++.dg/warn/Wshadow-2.C
  c6d10f027652eb4c20869c7eaeebb358  gcc/testsuite/g++.dg/warn/Wshadow-3.C
  2e33a5dd790901f2d6f4cc57f311efc6  gcc/testsuite/g++.dg/warn/Wshadow-4.C
*************** e7ad3fcdb672b3530f545b7c0b1f364a  gcc/te
*** 23239,23250 ****
  fb0027ea1d09ff6e88b90961d97d2660  gcc/testsuite/g++.dg/warn/Wsign-conversion-4.C
  817fdd7ad31942555dbd1e01b7c17dfe  gcc/testsuite/g++.dg/warn/Wsign-conversion-5.C
  65bb0b1a539c8d633ac1654e8cb4ac71  gcc/testsuite/g++.dg/warn/Wsign-conversion.C
  e0c1598f06e0781562c2dec6e2bc4c5a  gcc/testsuite/g++.dg/warn/Wsizeof-pointer-memaccess-1.C
  44dc4b5572b60846a2322e12b0510783  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-1.C
  414da1b51217d31e1c2f4c076e8fe650  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-2.C
  c99391b2f8a50e512108d98c5c776a47  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-3.C
  018ddc3284f5451940a479a4b278702c  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-4.C
! f203af23e924be80d891b0c53a7bee3e  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-5.C
  9bfa63eab4c0454c657aa1ca8810d425  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-6.C
  de6922f52681362a988b2a9e27c6e865  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-7.C
  71435332433246858548fb92a3a29591  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-8.C
--- 25447,25461 ----
  fb0027ea1d09ff6e88b90961d97d2660  gcc/testsuite/g++.dg/warn/Wsign-conversion-4.C
  817fdd7ad31942555dbd1e01b7c17dfe  gcc/testsuite/g++.dg/warn/Wsign-conversion-5.C
  65bb0b1a539c8d633ac1654e8cb4ac71  gcc/testsuite/g++.dg/warn/Wsign-conversion.C
+ a230b0e143737a3bc87d7817fba9ff35  gcc/testsuite/g++.dg/warn/Wsize_t-literals.C
+ 292abb1414ad9c9591d43a1af528efb7  gcc/testsuite/g++.dg/warn/Wsizeof-array-div1.C
+ cbcfc6b4d8223d306b12e82d62c0edd3  gcc/testsuite/g++.dg/warn/Wsizeof-array-div2.C
  e0c1598f06e0781562c2dec6e2bc4c5a  gcc/testsuite/g++.dg/warn/Wsizeof-pointer-memaccess-1.C
  44dc4b5572b60846a2322e12b0510783  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-1.C
  414da1b51217d31e1c2f4c076e8fe650  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-2.C
  c99391b2f8a50e512108d98c5c776a47  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-3.C
  018ddc3284f5451940a479a4b278702c  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-4.C
! b2f077cb98ad88f7fa2d475708c2ea90  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-5.C
  9bfa63eab4c0454c657aa1ca8810d425  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-6.C
  de6922f52681362a988b2a9e27c6e865  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-7.C
  71435332433246858548fb92a3a29591  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-8.C
*************** ef9cbc9a3736627428296e32dffe78fd  gcc/te
*** 23257,23263 ****
  fd3e58149ce1fbe517a6bbeb205ae2d9  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
  b84015e5a6773bd08e2a0f87ad5c4641  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-nested-arrays.C
  f345b06fca626501d991adc9447c18e0  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-placement-new.C
! 443205fcd20b9b14da1367b1b8e16bce  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-signed-unsigned.C
  73aa8fdd361564d9ba904d4252613717  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-struct-included.C
  16b9a30664bf0e9e0ead763d2f5c3a33  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-tmpl.C
  d635ff290903ee4e0276548a094a3551  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-union-2.C
--- 25468,25474 ----
  fd3e58149ce1fbe517a6bbeb205ae2d9  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
  b84015e5a6773bd08e2a0f87ad5c4641  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-nested-arrays.C
  f345b06fca626501d991adc9447c18e0  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-placement-new.C
! 466955c9310c236c76f3bbc5582969f8  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-signed-unsigned.C
  73aa8fdd361564d9ba904d4252613717  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-struct-included.C
  16b9a30664bf0e9e0ead763d2f5c3a33  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-tmpl.C
  d635ff290903ee4e0276548a094a3551  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-union-2.C
*************** a0b497dc1f8dc8ce49f81bc391f0deb1  gcc/te
*** 23269,23277 ****
  839fdbb04e93708d893f0f0e3f961ef5  gcc/testsuite/g++.dg/warn/Wstring-literal-comparison-4.C
  6410b05c3b999712196121758246d3f4  gcc/testsuite/g++.dg/warn/Wstringop-overflow-1.C
  bab7e5656bf0736ab8cd5ae9256981d6  gcc/testsuite/g++.dg/warn/Wstringop-overflow-2.C
! c2c192602e1a4e71810c3242785cc4cd  gcc/testsuite/g++.dg/warn/Wstringop-overflow-3.C
  c555293c1b84203987ee5112b6ef8bdf  gcc/testsuite/g++.dg/warn/Wstringop-overflow-4.C
  d1f308b2ce4d89fda2347e839404f085  gcc/testsuite/g++.dg/warn/Wstringop-overflow-5.C
  ac765247730b2bbd6e40254f091bba3e  gcc/testsuite/g++.dg/warn/Wstringop-truncation-1.C
  68de0b45c161b67b13b219e943fa0f70  gcc/testsuite/g++.dg/warn/Wstringop-truncation-2.C
  4aec9a180c35fbd202eef17e2e9d1652  gcc/testsuite/g++.dg/warn/Wsubobject-linkage-1.C
--- 25480,25490 ----
  839fdbb04e93708d893f0f0e3f961ef5  gcc/testsuite/g++.dg/warn/Wstring-literal-comparison-4.C
  6410b05c3b999712196121758246d3f4  gcc/testsuite/g++.dg/warn/Wstringop-overflow-1.C
  bab7e5656bf0736ab8cd5ae9256981d6  gcc/testsuite/g++.dg/warn/Wstringop-overflow-2.C
! fc43844819b668594cd996e06b4958c0  gcc/testsuite/g++.dg/warn/Wstringop-overflow-3.C
  c555293c1b84203987ee5112b6ef8bdf  gcc/testsuite/g++.dg/warn/Wstringop-overflow-4.C
  d1f308b2ce4d89fda2347e839404f085  gcc/testsuite/g++.dg/warn/Wstringop-overflow-5.C
+ 1bab351a542f6d244c9a83d65c6f27d4  gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
+ d82f666f00c8743076b52f2debf12c0a  gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
  ac765247730b2bbd6e40254f091bba3e  gcc/testsuite/g++.dg/warn/Wstringop-truncation-1.C
  68de0b45c161b67b13b219e943fa0f70  gcc/testsuite/g++.dg/warn/Wstringop-truncation-2.C
  4aec9a180c35fbd202eef17e2e9d1652  gcc/testsuite/g++.dg/warn/Wsubobject-linkage-1.C
*************** b59dc530212e2b55715a884d39fa09dc  gcc/te
*** 23294,23302 ****
  239ced8be8851ec6043b4692f9b00ec1  gcc/testsuite/g++.dg/warn/Wtautological-compare2.C
  6a0a00683f536a5822e62da415a84001  gcc/testsuite/g++.dg/warn/Wtautological-compare3.C
  81432c4786638b6267d11220821c16df  gcc/testsuite/g++.dg/warn/Wterminate1.C
! 088b62a93500fb56a36d7cb30babcb76  gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C
  dc1d92954793f77541307f143e148bd1  gcc/testsuite/g++.dg/warn/Wtype-limits-no.C
! 2222683b91dc91fe15e0d65ad2e003ac  gcc/testsuite/g++.dg/warn/Wtype-limits.C
  3b1a12f11ebbf80f8ab2cf6a03558cbc  gcc/testsuite/g++.dg/warn/Wtype-limits2.C
  f0d5fa8f13284bd1701b617d1310eef3  gcc/testsuite/g++.dg/warn/Wtype-limits3.C
  24b7acd7bbd9c40fc0427f1673b0d2eb  gcc/testsuite/g++.dg/warn/Wtype-limits4.C
--- 25507,25515 ----
  239ced8be8851ec6043b4692f9b00ec1  gcc/testsuite/g++.dg/warn/Wtautological-compare2.C
  6a0a00683f536a5822e62da415a84001  gcc/testsuite/g++.dg/warn/Wtautological-compare3.C
  81432c4786638b6267d11220821c16df  gcc/testsuite/g++.dg/warn/Wterminate1.C
! 7d0e395d869f7d3cd17cf4ce00d94005  gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C
  dc1d92954793f77541307f143e148bd1  gcc/testsuite/g++.dg/warn/Wtype-limits-no.C
! cd1aa1863460ab1916308e4808eb5608  gcc/testsuite/g++.dg/warn/Wtype-limits.C
  3b1a12f11ebbf80f8ab2cf6a03558cbc  gcc/testsuite/g++.dg/warn/Wtype-limits2.C
  f0d5fa8f13284bd1701b617d1310eef3  gcc/testsuite/g++.dg/warn/Wtype-limits3.C
  24b7acd7bbd9c40fc0427f1673b0d2eb  gcc/testsuite/g++.dg/warn/Wtype-limits4.C
*************** f0d5fa8f13284bd1701b617d1310eef3  gcc/te
*** 23305,23310 ****
--- 25518,25526 ----
  cb6b38abe346f8950bdb218ab4c6e17d  gcc/testsuite/g++.dg/warn/Wuninitializable-member.C
  fe4c6303d7ec13423e71cfb150c05d00  gcc/testsuite/g++.dg/warn/Wuninitialized-1.C
  01a8663e3575b9fdd6f13fef9387d669  gcc/testsuite/g++.dg/warn/Wuninitialized-10.C
+ 5133d39459a0fa751e7c8606e7d29b94  gcc/testsuite/g++.dg/warn/Wuninitialized-11.C
+ 6cbb1f3c3335added60923dffee22b16  gcc/testsuite/g++.dg/warn/Wuninitialized-12.C
+ a0dbc67641d49814408bb7698b2c5690  gcc/testsuite/g++.dg/warn/Wuninitialized-13.C
  21fc5ac0f1ee255b648d071723254d87  gcc/testsuite/g++.dg/warn/Wuninitialized-2.C
  ff7e55750a566580a7e5b746cf7dfa22  gcc/testsuite/g++.dg/warn/Wuninitialized-3.C
  be5b47714ba41b25933660896d6c7427  gcc/testsuite/g++.dg/warn/Wuninitialized-4.C
*************** b81dd316dd30881afe998cc16667340f  gcc/te
*** 23392,23397 ****
--- 25608,25622 ----
  66e0712402c08575f2486cc95d89f9b2  gcc/testsuite/g++.dg/warn/Wunused-var-9.C
  f62d0efa105434ddb77f8584066aa865  gcc/testsuite/g++.dg/warn/Wunused-var30.C
  7c73aa4b260c1d16ea9a76d2e0a28fcb  gcc/testsuite/g++.dg/warn/Wuseless-cast.C
+ 9de23321d5ac135de5ba8afa251a359a  gcc/testsuite/g++.dg/warn/Wvexing-parse.C
+ 47c8ae3dc7144acf6191de59ea2930a1  gcc/testsuite/g++.dg/warn/Wvexing-parse2.C
+ 8a7c0f92b372b8761c8b842613d7c6a2  gcc/testsuite/g++.dg/warn/Wvexing-parse3.C
+ 3fac6f840c6c078c1a73ebf0a6226bc0  gcc/testsuite/g++.dg/warn/Wvexing-parse4.C
+ f2bb4485db599cd0184c6c1cef7cf684  gcc/testsuite/g++.dg/warn/Wvexing-parse5.C
+ 1ba5f976e345c33eade852897ac75974  gcc/testsuite/g++.dg/warn/Wvexing-parse6.C
+ 19bd8d58d1a88735a0180d4b273d11aa  gcc/testsuite/g++.dg/warn/Wvexing-parse7.C
+ d9a45a5f137b824cf2e42d19538b272c  gcc/testsuite/g++.dg/warn/Wvexing-parse8.C
+ a62668dfe3d8bd1ab5ff6a40912827c3  gcc/testsuite/g++.dg/warn/Wvexing-parse9.C
  1ba3b36134af7d809fb68326b89b016f  gcc/testsuite/g++.dg/warn/Wvla-1.C
  e0a59089f41c9b702723e5c098e4302b  gcc/testsuite/g++.dg/warn/Wvla-2.C
  f5b2f2c118a7c1b3e90a8636387dc180  gcc/testsuite/g++.dg/warn/Wvla-3.C
*************** ef6b448559dfb55f716baaf60ef6e508  gcc/te
*** 23442,23448 ****
  04c4b9125f6d5753da834bd850607d4b  gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.h
  85dc72a0303b57c698ce2804c195f5b0  gcc/testsuite/g++.dg/warn/ctor-init-1.C
  450b64494a8df8181368be08d23e5bf9  gcc/testsuite/g++.dg/warn/ctor1.C
! e415b9568db9cd79464c85885dc0c9e2  gcc/testsuite/g++.dg/warn/delete-array-1.C
  5e82dff093572958fe905e90b2e4c7cd  gcc/testsuite/g++.dg/warn/delete-non-virtual-dtor.C
  5db9baaca9f35dabdbd94d03186f12ea  gcc/testsuite/g++.dg/warn/deprecated-10.C
  1ad1df12de321b9457640c9c53f46b52  gcc/testsuite/g++.dg/warn/deprecated-11.C
--- 25667,25673 ----
  04c4b9125f6d5753da834bd850607d4b  gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.h
  85dc72a0303b57c698ce2804c195f5b0  gcc/testsuite/g++.dg/warn/ctor-init-1.C
  450b64494a8df8181368be08d23e5bf9  gcc/testsuite/g++.dg/warn/ctor1.C
! 65a1227988a2d15894bcbca10ddd6b88  gcc/testsuite/g++.dg/warn/delete-array-1.C
  5e82dff093572958fe905e90b2e4c7cd  gcc/testsuite/g++.dg/warn/delete-non-virtual-dtor.C
  5db9baaca9f35dabdbd94d03186f12ea  gcc/testsuite/g++.dg/warn/deprecated-10.C
  1ad1df12de321b9457640c9c53f46b52  gcc/testsuite/g++.dg/warn/deprecated-11.C
*************** f9f47c74a750ce8f2c75e0d27d3ad1f7  gcc/te
*** 23452,23467 ****
  482df2a6c06bdf9046c6729484298715  gcc/testsuite/g++.dg/warn/deprecated-3.C
  98c2c2dc0644115f45902f826dc56a04  gcc/testsuite/g++.dg/warn/deprecated-4.C
  9fb0087e50484de53d979d8e849be2eb  gcc/testsuite/g++.dg/warn/deprecated-5.C
! d60678ca37a80aa4ebda0d59eadddffe  gcc/testsuite/g++.dg/warn/deprecated-6.C
  1a91ee27a48ba8f3961c5489d98ca492  gcc/testsuite/g++.dg/warn/deprecated-7.C
  d045bc52a4a03d37180fee8ad8870655  gcc/testsuite/g++.dg/warn/deprecated-8.C
  23dd18e6f89656425163e0bb64041897  gcc/testsuite/g++.dg/warn/deprecated-9.C
! 03b377eeeda85b54f58f24455395c8f6  gcc/testsuite/g++.dg/warn/deprecated.C
  9c49d36a54518ba5874b3fe7045ef791  gcc/testsuite/g++.dg/warn/do-empty.C
  5a7eeba899c76f78dcca48b8dba0d5ed  gcc/testsuite/g++.dg/warn/effc1.C
  ea529389c86d5a43c531a82630dfde8b  gcc/testsuite/g++.dg/warn/effc2.C
  581fe782e950506df5b2e6de5c53cb2c  gcc/testsuite/g++.dg/warn/effc3.C
  4a0f0aecda6783c6d0892554af1a77e3  gcc/testsuite/g++.dg/warn/effc4.C
  9362e9b4176e1dea1998f49b49d8bbcc  gcc/testsuite/g++.dg/warn/empty-body.C
  931d147f4baed695f1a67ae899cebd03  gcc/testsuite/g++.dg/warn/format1.C
  77cfd7b8f34afd97ff68bc102b6c6fc6  gcc/testsuite/g++.dg/warn/format2.C
--- 25677,25693 ----
  482df2a6c06bdf9046c6729484298715  gcc/testsuite/g++.dg/warn/deprecated-3.C
  98c2c2dc0644115f45902f826dc56a04  gcc/testsuite/g++.dg/warn/deprecated-4.C
  9fb0087e50484de53d979d8e849be2eb  gcc/testsuite/g++.dg/warn/deprecated-5.C
! ae3003754f90886680af749834c6730e  gcc/testsuite/g++.dg/warn/deprecated-6.C
  1a91ee27a48ba8f3961c5489d98ca492  gcc/testsuite/g++.dg/warn/deprecated-7.C
  d045bc52a4a03d37180fee8ad8870655  gcc/testsuite/g++.dg/warn/deprecated-8.C
  23dd18e6f89656425163e0bb64041897  gcc/testsuite/g++.dg/warn/deprecated-9.C
! 4b0d3da8c118274de49a1313d46d71a6  gcc/testsuite/g++.dg/warn/deprecated.C
  9c49d36a54518ba5874b3fe7045ef791  gcc/testsuite/g++.dg/warn/do-empty.C
  5a7eeba899c76f78dcca48b8dba0d5ed  gcc/testsuite/g++.dg/warn/effc1.C
  ea529389c86d5a43c531a82630dfde8b  gcc/testsuite/g++.dg/warn/effc2.C
  581fe782e950506df5b2e6de5c53cb2c  gcc/testsuite/g++.dg/warn/effc3.C
  4a0f0aecda6783c6d0892554af1a77e3  gcc/testsuite/g++.dg/warn/effc4.C
+ e23a1b891d60e3aeee8455c892107582  gcc/testsuite/g++.dg/warn/effc5.C
  9362e9b4176e1dea1998f49b49d8bbcc  gcc/testsuite/g++.dg/warn/empty-body.C
  931d147f4baed695f1a67ae899cebd03  gcc/testsuite/g++.dg/warn/format1.C
  77cfd7b8f34afd97ff68bc102b6c6fc6  gcc/testsuite/g++.dg/warn/format2.C
*************** b1b07f098bea0b4e921c1a567adc0834  gcc/te
*** 23471,23477 ****
  677e021d0f4c6a2c24627bc9093ea7d6  gcc/testsuite/g++.dg/warn/format6.C
  cf1e5660ee1cd060f1bf1da012306d6b  gcc/testsuite/g++.dg/warn/format7.C
  73f4dcb572247643b18b851965928450  gcc/testsuite/g++.dg/warn/format8.C
! 0c9c89f4c1915fc0e57a3c9ad26f78cb  gcc/testsuite/g++.dg/warn/forward-inner.C
  0163a6a329fdf7f5efa7b908b04848a0  gcc/testsuite/g++.dg/warn/friend.C
  e81d20f2a65cb672129118ceab24cd3e  gcc/testsuite/g++.dg/warn/huge-val1.C
  450618a497d9ab1567d9bc1ed188ded4  gcc/testsuite/g++.dg/warn/if-empty-1.C
--- 25697,25703 ----
  677e021d0f4c6a2c24627bc9093ea7d6  gcc/testsuite/g++.dg/warn/format6.C
  cf1e5660ee1cd060f1bf1da012306d6b  gcc/testsuite/g++.dg/warn/format7.C
  73f4dcb572247643b18b851965928450  gcc/testsuite/g++.dg/warn/format8.C
! b54db3adf6b298085f3c9eaca4c15e9d  gcc/testsuite/g++.dg/warn/forward-inner.C
  0163a6a329fdf7f5efa7b908b04848a0  gcc/testsuite/g++.dg/warn/friend.C
  e81d20f2a65cb672129118ceab24cd3e  gcc/testsuite/g++.dg/warn/huge-val1.C
  450618a497d9ab1567d9bc1ed188ded4  gcc/testsuite/g++.dg/warn/if-empty-1.C
*************** f69540cf16bb392d5bf1e5edfc8e067e  gcc/te
*** 23488,23494 ****
  43a7ad018e2ced981acc916d2df8f96b  gcc/testsuite/g++.dg/warn/main-3.C
  b8c62de5dbf97777a789b0e6031264f5  gcc/testsuite/g++.dg/warn/main-4.C
  217f0311161c670d6ef0fbd06a3c6b91  gcc/testsuite/g++.dg/warn/main.C
! 68194fd1059acb30f535aeb5e1f19261  gcc/testsuite/g++.dg/warn/miss-format-1.C
  16abc69e85d22f8f70a63462a1b1b3a7  gcc/testsuite/g++.dg/warn/miss-format-2.C
  d38eae092825c980b4c8c291c3d56273  gcc/testsuite/g++.dg/warn/miss-format-3.C
  ed4e1a2fb0bdeb0c706fbaea8bc05dfa  gcc/testsuite/g++.dg/warn/miss-format-4.C
--- 25714,25720 ----
  43a7ad018e2ced981acc916d2df8f96b  gcc/testsuite/g++.dg/warn/main-3.C
  b8c62de5dbf97777a789b0e6031264f5  gcc/testsuite/g++.dg/warn/main-4.C
  217f0311161c670d6ef0fbd06a3c6b91  gcc/testsuite/g++.dg/warn/main.C
! c975c6c74265f804ae82f394ecb5e7ae  gcc/testsuite/g++.dg/warn/miss-format-1.C
  16abc69e85d22f8f70a63462a1b1b3a7  gcc/testsuite/g++.dg/warn/miss-format-2.C
  d38eae092825c980b4c8c291c3d56273  gcc/testsuite/g++.dg/warn/miss-format-3.C
  ed4e1a2fb0bdeb0c706fbaea8bc05dfa  gcc/testsuite/g++.dg/warn/miss-format-4.C
*************** aa07b1519cde34fc8f8e23f6aa2bb1ab  gcc/te
*** 23503,23508 ****
--- 25729,25735 ----
  8db016677c2d190805a73f645d796177  gcc/testsuite/g++.dg/warn/multiple-sign-compare-warn-1.C
  2a38cb3b99f4836b9a33dc198780048d  gcc/testsuite/g++.dg/warn/mvp.C
  222bcab73f426393102c4743551318d6  gcc/testsuite/g++.dg/warn/mvp2.C
+ 3be2e723345d4bc198e2e5c95ae0febc  gcc/testsuite/g++.dg/warn/mvp3.C
  f90f92d0ee11df948b19aaef9ca54cd1  gcc/testsuite/g++.dg/warn/new1.C
  941aec727045c0f85cb4623dd4ce20f1  gcc/testsuite/g++.dg/warn/no-write-strings.C
  6adcefb77f3d19b68939121f98972d29  gcc/testsuite/g++.dg/warn/noeffect2.C
*************** b731b5d32c1f477ed23555d37dcf870a  gcc/te
*** 23571,23576 ****
--- 25798,25805 ----
  72fb841aa429f78f0934f4bc0bd3edc1  gcc/testsuite/g++.dg/warn/pr61945.C
  70f21eda14d944ba09e0f2a624291f2f  gcc/testsuite/g++.dg/warn/pr77496.C
  62fde56fd55223e0af2436edca399912  gcc/testsuite/g++.dg/warn/pr79290.C
+ a57e4640a3dda500c8eb3374c6e1ae4c  gcc/testsuite/g++.dg/warn/pr80635-1.C
+ 00a4731317a08cb84ce3e84b766012b4  gcc/testsuite/g++.dg/warn/pr80635-2.C
  b396f058eef27622b6e932e0515dc223  gcc/testsuite/g++.dg/warn/pr81119.C
  ad68bbb45548b2f681a5f0e57f41ef19  gcc/testsuite/g++.dg/warn/pr81275-1.C
  0faf646f98471e86eee5164be65067cd  gcc/testsuite/g++.dg/warn/pr81275-2.C
*************** d8e09f06f5ec03c8ee79f8a008ae77df  gcc/te
*** 23586,23591 ****
--- 25815,25826 ----
  500686ed724976c6a2b34774c6eee1ff  gcc/testsuite/g++.dg/warn/pr86881.C
  ce1795beaf121736938082b1586a2f94  gcc/testsuite/g++.dg/warn/pr8715.C
  41d0999e678f282f81aa977cf81ba0b3  gcc/testsuite/g++.dg/warn/pr89622.C
+ 37719da32df67afc280c61a27fae6b55  gcc/testsuite/g++.dg/warn/pr94038-2.C
+ 40a4d3dcab887172fd468176e5fb2332  gcc/testsuite/g++.dg/warn/pr94038-3.C
+ 58af815807256ae18fe57c0b4996a2af  gcc/testsuite/g++.dg/warn/pr94038.C
+ 4fc4b29c137c0cb618864138e849a92d  gcc/testsuite/g++.dg/warn/pr98104.C
+ cf80814e02c2da0a19617c3487687595  gcc/testsuite/g++.dg/warn/pr98160.C
+ b95277fda9b1b8a4b6b4202b57e14529  gcc/testsuite/g++.dg/warn/pr98413.C
  4cf78b7f61fb98cbc6e1ef39bf3dc758  gcc/testsuite/g++.dg/warn/pragma-system_header1.C
  8087d9a9b2025e1e865ffef1a1d71343  gcc/testsuite/g++.dg/warn/pragma-system_header1.h
  9bcc53cc5dde27e75ab5715ac9f3c8aa  gcc/testsuite/g++.dg/warn/pragma-system_header2.C
*************** cbeb61a079567f59bdce9faa40877398  gcc/te
*** 23617,23622 ****
--- 25852,25861 ----
  70adf2e2f20bd052cfca2787bd225b0c  gcc/testsuite/g++.dg/warn/template-2.C
  6f5999bf56f2861a257750422cda17b6  gcc/testsuite/g++.dg/warn/translate-ice-1.C
  81ccb812ec92857cf80d860b4ffa0d31  gcc/testsuite/g++.dg/warn/undefined1.C
+ 338b16478b2b401f31f40a2d7b08dfb1  gcc/testsuite/g++.dg/warn/uninit-1.C
+ 69c608be9c8c02e5a60a4342603a5fac  gcc/testsuite/g++.dg/warn/uninit-pr48483.C
+ 75fa85b1e27813223938d58d1e38e67f  gcc/testsuite/g++.dg/warn/uninit-pr55288.C
+ 4cdbc10f60c2aab00b399523a5cb099d  gcc/testsuite/g++.dg/warn/uninit-pr82800.C
  f61b425b296038544edfc817dc29fd84  gcc/testsuite/g++.dg/warn/unit-1.C
  b90595080713a3c154e188ca44093e52  gcc/testsuite/g++.dg/warn/unused-fn1.C
  d10b13b30c4f610f231317924054b5ee  gcc/testsuite/g++.dg/warn/unused-result1-Werror.c
*************** a731807749e8149045d38e9527236cfb  gcc/te
*** 23640,23652 ****
  7ee088b6ee11ace2d0d1f03194f7175c  gcc/testsuite/g++.dg/wrappers/pr83902.C
  b7f5a1ba1143dce1dc12328785c4adc2  gcc/testsuite/g++.dg/wrappers/pr88680.C
  0f50e2f8443a5b2c7ab7d719426284f9  gcc/testsuite/g++.dg/wrappers/sanitizer_coverage_libcdep_new.C
! 2024b5c1698566856be470e026d079b3  gcc/testsuite/g++.dg/wrappers/wrapper-around-type-pack-expansion.C
  1cdb371f2e69de6a5ce47c572f798792  gcc/testsuite/g++.old-deja/g++.abi/aggregates.C
  ce9ca8f244fec164cb519029110d5c74  gcc/testsuite/g++.old-deja/g++.abi/align.C
  c64fc2b155672121ad97bcef7f926939  gcc/testsuite/g++.old-deja/g++.abi/arraynew.C
  811b66f6f326ad47076d1bf6651e452c  gcc/testsuite/g++.old-deja/g++.abi/bitfields.C
  cadb8d830b6294a594d395f81b7e01d7  gcc/testsuite/g++.old-deja/g++.abi/crash1.C
! 777b0f6e8a27246fb901416fa7d15279  gcc/testsuite/g++.old-deja/g++.abi/cxa_vec.C
  0986f0fa6e2b1e040a29e2f45b5ad7ab  gcc/testsuite/g++.old-deja/g++.abi/empty.C
  29fb727b0033afcb4e2ef33e88bc3cc3  gcc/testsuite/g++.old-deja/g++.abi/empty2.C
  3008954886dc6032553976cfe7d8866b  gcc/testsuite/g++.old-deja/g++.abi/empty3.C
--- 25879,25891 ----
  7ee088b6ee11ace2d0d1f03194f7175c  gcc/testsuite/g++.dg/wrappers/pr83902.C
  b7f5a1ba1143dce1dc12328785c4adc2  gcc/testsuite/g++.dg/wrappers/pr88680.C
  0f50e2f8443a5b2c7ab7d719426284f9  gcc/testsuite/g++.dg/wrappers/sanitizer_coverage_libcdep_new.C
! e0f22f49342e56e463159c6afc905367  gcc/testsuite/g++.dg/wrappers/wrapper-around-type-pack-expansion.C
  1cdb371f2e69de6a5ce47c572f798792  gcc/testsuite/g++.old-deja/g++.abi/aggregates.C
  ce9ca8f244fec164cb519029110d5c74  gcc/testsuite/g++.old-deja/g++.abi/align.C
  c64fc2b155672121ad97bcef7f926939  gcc/testsuite/g++.old-deja/g++.abi/arraynew.C
  811b66f6f326ad47076d1bf6651e452c  gcc/testsuite/g++.old-deja/g++.abi/bitfields.C
  cadb8d830b6294a594d395f81b7e01d7  gcc/testsuite/g++.old-deja/g++.abi/crash1.C
! 06bd32f5e9ea8b68ebc38fb4d69b5464  gcc/testsuite/g++.old-deja/g++.abi/cxa_vec.C
  0986f0fa6e2b1e040a29e2f45b5ad7ab  gcc/testsuite/g++.old-deja/g++.abi/empty.C
  29fb727b0033afcb4e2ef33e88bc3cc3  gcc/testsuite/g++.old-deja/g++.abi/empty2.C
  3008954886dc6032553976cfe7d8866b  gcc/testsuite/g++.old-deja/g++.abi/empty3.C
*************** da80b7e97d4e9ee67decc3ead64065ff  gcc/te
*** 23743,23749 ****
  320f3eae6dc6bbd5aa64e7a285f758f7  gcc/testsuite/g++.old-deja/g++.bob/template2.C
  d3aa332b02a50a2c976fd3acd8f16058  gcc/testsuite/g++.old-deja/g++.bob/template3.C
  aeb5818b98767c6df0e85e3dd85f0da7  gcc/testsuite/g++.old-deja/g++.bob/template4.C
! 423bef047dc63940d13ee2de061008e0  gcc/testsuite/g++.old-deja/g++.brendan/README
  ae92d366fb4b1fb345a39cf07442d5f1  gcc/testsuite/g++.old-deja/g++.brendan/abstract1.C
  fc6063368e5474a8653856d27762de94  gcc/testsuite/g++.old-deja/g++.brendan/access1.C
  cd7e52b4b869a50f1833437935e02700  gcc/testsuite/g++.old-deja/g++.brendan/alignof.C
--- 25982,25988 ----
  320f3eae6dc6bbd5aa64e7a285f758f7  gcc/testsuite/g++.old-deja/g++.bob/template2.C
  d3aa332b02a50a2c976fd3acd8f16058  gcc/testsuite/g++.old-deja/g++.bob/template3.C
  aeb5818b98767c6df0e85e3dd85f0da7  gcc/testsuite/g++.old-deja/g++.bob/template4.C
! 2c1f7de9f8379d66def3b3aa34a24965  gcc/testsuite/g++.old-deja/g++.brendan/README
  ae92d366fb4b1fb345a39cf07442d5f1  gcc/testsuite/g++.old-deja/g++.brendan/abstract1.C
  fc6063368e5474a8653856d27762de94  gcc/testsuite/g++.old-deja/g++.brendan/access1.C
  cd7e52b4b869a50f1833437935e02700  gcc/testsuite/g++.old-deja/g++.brendan/alignof.C
*************** a9b230fa3f6f281be0b5d7c1b0744eeb  gcc/te
*** 23775,23781 ****
  ebcf953de22d960ed17d4f132adceedc  gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
  62172a7e4c59ed5aa0aa705ae8090fe0  gcc/testsuite/g++.old-deja/g++.brendan/crash1.C
  9bb5650319b1cbd73f548bcbcadbf2b4  gcc/testsuite/g++.old-deja/g++.brendan/crash10.C
! 19d24d5c4045bf3b7ed4a9d851a675c2  gcc/testsuite/g++.old-deja/g++.brendan/crash11.C
  c487c2f1d306c4b5ffd996ab598aac07  gcc/testsuite/g++.old-deja/g++.brendan/crash12.C
  440a4666ca3b9be9549267d67d3e2987  gcc/testsuite/g++.old-deja/g++.brendan/crash13.C
  4b3db8cbbfa7bf87638bbbff3162da29  gcc/testsuite/g++.old-deja/g++.brendan/crash14.C
--- 26014,26020 ----
  ebcf953de22d960ed17d4f132adceedc  gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
  62172a7e4c59ed5aa0aa705ae8090fe0  gcc/testsuite/g++.old-deja/g++.brendan/crash1.C
  9bb5650319b1cbd73f548bcbcadbf2b4  gcc/testsuite/g++.old-deja/g++.brendan/crash10.C
! cd4e6c94edc7344f866733e2c178caa0  gcc/testsuite/g++.old-deja/g++.brendan/crash11.C
  c487c2f1d306c4b5ffd996ab598aac07  gcc/testsuite/g++.old-deja/g++.brendan/crash12.C
  440a4666ca3b9be9549267d67d3e2987  gcc/testsuite/g++.old-deja/g++.brendan/crash13.C
  4b3db8cbbfa7bf87638bbbff3162da29  gcc/testsuite/g++.old-deja/g++.brendan/crash14.C
*************** ae88d651341f4eb739d20b6a95da3d05  gcc/te
*** 23826,23832 ****
  f99628dfc0766d237ee572c05c96f5ef  gcc/testsuite/g++.old-deja/g++.brendan/crash57.C
  2ea8e7e4ddc11489cf2a94e03e54ed33  gcc/testsuite/g++.old-deja/g++.brendan/crash58.C
  fe6ac67b99c1ddd7b2d92896792a2eea  gcc/testsuite/g++.old-deja/g++.brendan/crash6.C
! 08f4af8421ae9483842f92b9e3925bcb  gcc/testsuite/g++.old-deja/g++.brendan/crash60.C
  cdbb9c9cfe241a7d44af748e52523748  gcc/testsuite/g++.old-deja/g++.brendan/crash61.C
  75b73030bfec1570c06879b52ebb4bb3  gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
  b5e65de5c1bb4027ac6b7ddc11ee87e4  gcc/testsuite/g++.old-deja/g++.brendan/crash63.C
--- 26065,26071 ----
  f99628dfc0766d237ee572c05c96f5ef  gcc/testsuite/g++.old-deja/g++.brendan/crash57.C
  2ea8e7e4ddc11489cf2a94e03e54ed33  gcc/testsuite/g++.old-deja/g++.brendan/crash58.C
  fe6ac67b99c1ddd7b2d92896792a2eea  gcc/testsuite/g++.old-deja/g++.brendan/crash6.C
! d995e343cb6f6d3f31cff4bb747358ad  gcc/testsuite/g++.old-deja/g++.brendan/crash60.C
  cdbb9c9cfe241a7d44af748e52523748  gcc/testsuite/g++.old-deja/g++.brendan/crash61.C
  75b73030bfec1570c06879b52ebb4bb3  gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
  b5e65de5c1bb4027ac6b7ddc11ee87e4  gcc/testsuite/g++.old-deja/g++.brendan/crash63.C
*************** e2a9f30a7ba6f25639381c312b380c4d  gcc/te
*** 23857,23863 ****
  0b35828a3baa2558fbffe3e9ac2165c9  gcc/testsuite/g++.old-deja/g++.brendan/enum-clash.C
  f4a6198b346287ed8325efbed8566b1d  gcc/testsuite/g++.old-deja/g++.brendan/enum1.C
  2082b04653c52e598d8ab0a387abe4bc  gcc/testsuite/g++.old-deja/g++.brendan/enum10.C
! 8fedd9fc66adfce5ebeb3860f90fd79c  gcc/testsuite/g++.old-deja/g++.brendan/enum11.C
  6e6712bb465842808e9709b41ad09c15  gcc/testsuite/g++.old-deja/g++.brendan/enum12.C
  3ea57e60fd8bc5fc0eb4dcd8ebb05a7b  gcc/testsuite/g++.old-deja/g++.brendan/enum13.C
  b180e28476416bee81e2f1814451fa2a  gcc/testsuite/g++.old-deja/g++.brendan/enum14.C
--- 26096,26102 ----
  0b35828a3baa2558fbffe3e9ac2165c9  gcc/testsuite/g++.old-deja/g++.brendan/enum-clash.C
  f4a6198b346287ed8325efbed8566b1d  gcc/testsuite/g++.old-deja/g++.brendan/enum1.C
  2082b04653c52e598d8ab0a387abe4bc  gcc/testsuite/g++.old-deja/g++.brendan/enum10.C
! a51211040c90c105c3a570fc726d6822  gcc/testsuite/g++.old-deja/g++.brendan/enum11.C
  6e6712bb465842808e9709b41ad09c15  gcc/testsuite/g++.old-deja/g++.brendan/enum12.C
  3ea57e60fd8bc5fc0eb4dcd8ebb05a7b  gcc/testsuite/g++.old-deja/g++.brendan/enum13.C
  b180e28476416bee81e2f1814451fa2a  gcc/testsuite/g++.old-deja/g++.brendan/enum14.C
*************** cd6b194c7bc5cf94285bc6cd0a157e70  gcc/te
*** 23977,23983 ****
  7a7306f6328f57ef001c6f5ba4e22fa9  gcc/testsuite/g++.old-deja/g++.brendan/ptrmem2.C
  93bc75083ebf8ae5a37fd6ac51d10e9a  gcc/testsuite/g++.old-deja/g++.brendan/ptrmem3.C
  b8d1e42f311d8afc82fcf4dbfd490613  gcc/testsuite/g++.old-deja/g++.brendan/ptrmem4.C
! 964a895f23ebbce94a2c5bfe6e3845b5  gcc/testsuite/g++.old-deja/g++.brendan/recurse.C
  d9a3a9426b5c7eef00685fb12ada0206  gcc/testsuite/g++.old-deja/g++.brendan/redecl1.C
  e2e8fdf313b5b763652b98d52b6fd29f  gcc/testsuite/g++.old-deja/g++.brendan/redecl2.C
  1c6e3ab3c0ac7f1ecdf1f598fbf9174d  gcc/testsuite/g++.old-deja/g++.brendan/redecl3.C
--- 26216,26222 ----
  7a7306f6328f57ef001c6f5ba4e22fa9  gcc/testsuite/g++.old-deja/g++.brendan/ptrmem2.C
  93bc75083ebf8ae5a37fd6ac51d10e9a  gcc/testsuite/g++.old-deja/g++.brendan/ptrmem3.C
  b8d1e42f311d8afc82fcf4dbfd490613  gcc/testsuite/g++.old-deja/g++.brendan/ptrmem4.C
! 764dbbb775315c25c5c546b9e5bef328  gcc/testsuite/g++.old-deja/g++.brendan/recurse.C
  d9a3a9426b5c7eef00685fb12ada0206  gcc/testsuite/g++.old-deja/g++.brendan/redecl1.C
  e2e8fdf313b5b763652b98d52b6fd29f  gcc/testsuite/g++.old-deja/g++.brendan/redecl2.C
  1c6e3ab3c0ac7f1ecdf1f598fbf9174d  gcc/testsuite/g++.old-deja/g++.brendan/redecl3.C
*************** d0a889978ab8f9bd09b800a37a128f5c  gcc/te
*** 24038,24046 ****
  8e9ce7664c7ead346fec4fdcd7af9171  gcc/testsuite/g++.old-deja/g++.brendan/visibility3.C
  715aa94186b2b202e2e9a4997d26444f  gcc/testsuite/g++.old-deja/g++.brendan/visibility4.C
  847a939f79de7db94d518e72f9bf6da4  gcc/testsuite/g++.old-deja/g++.brendan/visibility5.C
! c486f983e5332238c42c6177b2f172b4  gcc/testsuite/g++.old-deja/g++.brendan/visibility6.C
  48ad59d384cdff01d4a45b43be64c6eb  gcc/testsuite/g++.old-deja/g++.brendan/visibility7.C
! 309b81bb2e342c20517dbc2127c819c8  gcc/testsuite/g++.old-deja/g++.brendan/visibility8.C
  481ec0c76b5b6fc7b7c19ca345a4b93f  gcc/testsuite/g++.old-deja/g++.brendan/visibility9.C
  62ac13ff7f4e3b97c427d1b8e55a3aa8  gcc/testsuite/g++.old-deja/g++.brendan/vtables1.C
  b2f8f2c21840b4f450c2e42ca987cc2e  gcc/testsuite/g++.old-deja/g++.brendan/warnings1.C
--- 26277,26285 ----
  8e9ce7664c7ead346fec4fdcd7af9171  gcc/testsuite/g++.old-deja/g++.brendan/visibility3.C
  715aa94186b2b202e2e9a4997d26444f  gcc/testsuite/g++.old-deja/g++.brendan/visibility4.C
  847a939f79de7db94d518e72f9bf6da4  gcc/testsuite/g++.old-deja/g++.brendan/visibility5.C
! e68f22f1b5468ae1993649d6a2e78355  gcc/testsuite/g++.old-deja/g++.brendan/visibility6.C
  48ad59d384cdff01d4a45b43be64c6eb  gcc/testsuite/g++.old-deja/g++.brendan/visibility7.C
! 1748a32411a73a16fae53d2b0e4a9ac6  gcc/testsuite/g++.old-deja/g++.brendan/visibility8.C
  481ec0c76b5b6fc7b7c19ca345a4b93f  gcc/testsuite/g++.old-deja/g++.brendan/visibility9.C
  62ac13ff7f4e3b97c427d1b8e55a3aa8  gcc/testsuite/g++.old-deja/g++.brendan/vtables1.C
  b2f8f2c21840b4f450c2e42ca987cc2e  gcc/testsuite/g++.old-deja/g++.brendan/warnings1.C
*************** f2464867a8a1c97f8d6bc0d764230456  gcc/te
*** 24096,24102 ****
  2a8b87bd0b980874491bd21a47307da3  gcc/testsuite/g++.old-deja/g++.bugs/900220_02.C
  581257e0732520f2bf2fdeb02256af41  gcc/testsuite/g++.old-deja/g++.bugs/900220_03.C
  9ca59f87faf9b2f3195d8bc7355cbf0b  gcc/testsuite/g++.old-deja/g++.bugs/900221_01.C
! c909a243922356a5c5951cf3b10652b8  gcc/testsuite/g++.old-deja/g++.bugs/900227_01.C
  26fe39f1081f43538ee5c334612db22b  gcc/testsuite/g++.old-deja/g++.bugs/900321_01.C
  2edfa97432f7032677694e75adc57ca8  gcc/testsuite/g++.old-deja/g++.bugs/900321_02.C
  b2b96c7ebd782c8f5262719e72124b85  gcc/testsuite/g++.old-deja/g++.bugs/900321_04.C
--- 26335,26341 ----
  2a8b87bd0b980874491bd21a47307da3  gcc/testsuite/g++.old-deja/g++.bugs/900220_02.C
  581257e0732520f2bf2fdeb02256af41  gcc/testsuite/g++.old-deja/g++.bugs/900220_03.C
  9ca59f87faf9b2f3195d8bc7355cbf0b  gcc/testsuite/g++.old-deja/g++.bugs/900221_01.C
! 0efb9392df25c8a55b9faa45dbdcbaf0  gcc/testsuite/g++.old-deja/g++.bugs/900227_01.C
  26fe39f1081f43538ee5c334612db22b  gcc/testsuite/g++.old-deja/g++.bugs/900321_01.C
  2edfa97432f7032677694e75adc57ca8  gcc/testsuite/g++.old-deja/g++.bugs/900321_02.C
  b2b96c7ebd782c8f5262719e72124b85  gcc/testsuite/g++.old-deja/g++.bugs/900321_04.C
*************** f94f78525b0f62afaadc1a57a6b875f5  gcc/te
*** 24121,24127 ****
  9ce300e0f9e6df86bea8c5421165dc2b  gcc/testsuite/g++.old-deja/g++.bugs/900404_01.C
  154a87b721d11ed1738fbab683ce754a  gcc/testsuite/g++.old-deja/g++.bugs/900404_02.C
  aafbe08bde2c86ffa855c88d6df524dc  gcc/testsuite/g++.old-deja/g++.bugs/900404_03.C
! 556dbc5118f231ade8f41134ea065eb2  gcc/testsuite/g++.old-deja/g++.bugs/900404_04.C
  3aa3b22817d9f6db7acec24197a9f449  gcc/testsuite/g++.old-deja/g++.bugs/900404_07.C
  4df342af36e75b7594742a38d8d90ee7  gcc/testsuite/g++.old-deja/g++.bugs/900405_01.C
  56b3109f93c4aee9592ddbf3c51a1730  gcc/testsuite/g++.old-deja/g++.bugs/900406_01.C
--- 26360,26366 ----
  9ce300e0f9e6df86bea8c5421165dc2b  gcc/testsuite/g++.old-deja/g++.bugs/900404_01.C
  154a87b721d11ed1738fbab683ce754a  gcc/testsuite/g++.old-deja/g++.bugs/900404_02.C
  aafbe08bde2c86ffa855c88d6df524dc  gcc/testsuite/g++.old-deja/g++.bugs/900404_03.C
! 87f75389bbcb1e7284989d370196b83f  gcc/testsuite/g++.old-deja/g++.bugs/900404_04.C
  3aa3b22817d9f6db7acec24197a9f449  gcc/testsuite/g++.old-deja/g++.bugs/900404_07.C
  4df342af36e75b7594742a38d8d90ee7  gcc/testsuite/g++.old-deja/g++.bugs/900405_01.C
  56b3109f93c4aee9592ddbf3c51a1730  gcc/testsuite/g++.old-deja/g++.bugs/900406_01.C
*************** e04f0d66f5d7d54dcb1732090fd6134e  gcc/te
*** 24151,24157 ****
  365ad489a4b8cb4d59c97741b1d326bb  gcc/testsuite/g++.old-deja/g++.bugs/900520_06.C
  d1f812b0fed8696924824353accf115f  gcc/testsuite/g++.old-deja/g++.eh/badalloc1.C
  a431791e8c02c6fc5c746db5efcfb40b  gcc/testsuite/g++.old-deja/g++.eh/catch1.C
! 1e641d82ee233ceda2ae0ab2028661f9  gcc/testsuite/g++.old-deja/g++.eh/catch10.C
  a83d60c4fb96f4454d525c1e8b6a33a7  gcc/testsuite/g++.old-deja/g++.eh/catch11.C
  22f50aa9e05125f9a73411eeae9cd099  gcc/testsuite/g++.old-deja/g++.eh/catch12.C
  c186c63c8ba86a5b6cb465f7ab19d63d  gcc/testsuite/g++.old-deja/g++.eh/catch13.C
--- 26390,26396 ----
  365ad489a4b8cb4d59c97741b1d326bb  gcc/testsuite/g++.old-deja/g++.bugs/900520_06.C
  d1f812b0fed8696924824353accf115f  gcc/testsuite/g++.old-deja/g++.eh/badalloc1.C
  a431791e8c02c6fc5c746db5efcfb40b  gcc/testsuite/g++.old-deja/g++.eh/catch1.C
! 9901d8b9eb879f28ec0ad577b19ddafa  gcc/testsuite/g++.old-deja/g++.eh/catch10.C
  a83d60c4fb96f4454d525c1e8b6a33a7  gcc/testsuite/g++.old-deja/g++.eh/catch11.C
  22f50aa9e05125f9a73411eeae9cd099  gcc/testsuite/g++.old-deja/g++.eh/catch12.C
  c186c63c8ba86a5b6cb465f7ab19d63d  gcc/testsuite/g++.old-deja/g++.eh/catch13.C
*************** bd0efa0a1fe0ed98636fcebbc5fd05e3  gcc/te
*** 24233,24239 ****
  0358c365e76d6d31e6b0d88db4a8b90b  gcc/testsuite/g++.old-deja/g++.ext/array3.C
  b2f69c1973b3d4b6b9e01df5ce3b43ba  gcc/testsuite/g++.old-deja/g++.ext/array4.C
  60de5c23c65fe5ebd8cb2707b86aa75a  gcc/testsuite/g++.old-deja/g++.ext/arrnew.C
! 5cc28e7a578065b4d715c4144e71ab47  gcc/testsuite/g++.old-deja/g++.ext/arrnew2.C
  a73fc887eed082ef683e77dde6521d24  gcc/testsuite/g++.old-deja/g++.ext/asmspec1.C
  9b40e92e0865a215292a4a7e43b7fd64  gcc/testsuite/g++.old-deja/g++.ext/attrib1.C
  070be7491ea6affff1e06a73a335043e  gcc/testsuite/g++.old-deja/g++.ext/attrib2.C
--- 26472,26478 ----
  0358c365e76d6d31e6b0d88db4a8b90b  gcc/testsuite/g++.old-deja/g++.ext/array3.C
  b2f69c1973b3d4b6b9e01df5ce3b43ba  gcc/testsuite/g++.old-deja/g++.ext/array4.C
  60de5c23c65fe5ebd8cb2707b86aa75a  gcc/testsuite/g++.old-deja/g++.ext/arrnew.C
! 3b1d2b4a436934bda663db7e77bac872  gcc/testsuite/g++.old-deja/g++.ext/arrnew2.C
  a73fc887eed082ef683e77dde6521d24  gcc/testsuite/g++.old-deja/g++.ext/asmspec1.C
  9b40e92e0865a215292a4a7e43b7fd64  gcc/testsuite/g++.old-deja/g++.ext/attrib1.C
  070be7491ea6affff1e06a73a335043e  gcc/testsuite/g++.old-deja/g++.ext/attrib2.C
*************** a27f8fda827e27cce6b195811cf0f147  gcc/te
*** 24302,24308 ****
  4f5487852e19f0bcc0bfdfa34fe26a75  gcc/testsuite/g++.old-deja/g++.jason/access5.C
  3b6c2594ca82c2df2368cad55253186e  gcc/testsuite/g++.old-deja/g++.jason/access6.C
  b7def766ff417373e755c602745a7f45  gcc/testsuite/g++.old-deja/g++.jason/access7.C
! 52c83307beb05763080ffe916dffc635  gcc/testsuite/g++.old-deja/g++.jason/access8.C
  b809cea88b6deb90f883f62542a22c96  gcc/testsuite/g++.old-deja/g++.jason/access9.C
  40698f8dcb21cc22f4864696f1071eed  gcc/testsuite/g++.old-deja/g++.jason/aggregate.C
  e93de2ac8d3a17e3e532f0ed4d57518d  gcc/testsuite/g++.old-deja/g++.jason/ambig1.C
--- 26541,26547 ----
  4f5487852e19f0bcc0bfdfa34fe26a75  gcc/testsuite/g++.old-deja/g++.jason/access5.C
  3b6c2594ca82c2df2368cad55253186e  gcc/testsuite/g++.old-deja/g++.jason/access6.C
  b7def766ff417373e755c602745a7f45  gcc/testsuite/g++.old-deja/g++.jason/access7.C
! 1e9c0836f94485eb2874b73aa60fda73  gcc/testsuite/g++.old-deja/g++.jason/access8.C
  b809cea88b6deb90f883f62542a22c96  gcc/testsuite/g++.old-deja/g++.jason/access9.C
  40698f8dcb21cc22f4864696f1071eed  gcc/testsuite/g++.old-deja/g++.jason/aggregate.C
  e93de2ac8d3a17e3e532f0ed4d57518d  gcc/testsuite/g++.old-deja/g++.jason/ambig1.C
*************** beb07d7e7193d5b20c559e39f9f833bb  gcc/te
*** 24458,24464 ****
  190eaf169c3c8d34166229478918fdae  gcc/testsuite/g++.old-deja/g++.jason/opeq4.C
  5292a09a4c6bef333b385323117453e7  gcc/testsuite/g++.old-deja/g++.jason/opeq5.C
  1477d34b82967d572fc358778ff2b504  gcc/testsuite/g++.old-deja/g++.jason/opeq6.C
! c894615b1093262b28e220a7da0cf53a  gcc/testsuite/g++.old-deja/g++.jason/operator.C
  185eea2532af5023b78f9ce2e69cbacf  gcc/testsuite/g++.old-deja/g++.jason/operator2.C
  fa239349b87333357926a294a44fee03  gcc/testsuite/g++.old-deja/g++.jason/opover.C
  50849d785fd4c47ffa71357f340f5f0e  gcc/testsuite/g++.old-deja/g++.jason/optimize.C
--- 26697,26703 ----
  190eaf169c3c8d34166229478918fdae  gcc/testsuite/g++.old-deja/g++.jason/opeq4.C
  5292a09a4c6bef333b385323117453e7  gcc/testsuite/g++.old-deja/g++.jason/opeq5.C
  1477d34b82967d572fc358778ff2b504  gcc/testsuite/g++.old-deja/g++.jason/opeq6.C
! 2385098fa5acb042b1fcf96583d618a6  gcc/testsuite/g++.old-deja/g++.jason/operator.C
  185eea2532af5023b78f9ce2e69cbacf  gcc/testsuite/g++.old-deja/g++.jason/operator2.C
  fa239349b87333357926a294a44fee03  gcc/testsuite/g++.old-deja/g++.jason/opover.C
  50849d785fd4c47ffa71357f340f5f0e  gcc/testsuite/g++.old-deja/g++.jason/optimize.C
*************** f09660c79805379617f5d3f5b0e40aab  gcc/te
*** 24572,24578 ****
  4db6c46266a3c32e83e4b4f8e13f4321  gcc/testsuite/g++.old-deja/g++.jason/rfg9.C
  8d7bfb887f857b536bd49eb6280f1359  gcc/testsuite/g++.old-deja/g++.jason/rvalue1.C
  a7a84efb83b07b626b9173305e6c605d  gcc/testsuite/g++.old-deja/g++.jason/rvalue2.C
! 83d2df5596b586feab620eede29bd329  gcc/testsuite/g++.old-deja/g++.jason/rvalue3.C
  647286463ce7ee3841394dc65c3053c9  gcc/testsuite/g++.old-deja/g++.jason/scoping.C
  d662843f32b192516f98c87aba14c1db  gcc/testsuite/g++.old-deja/g++.jason/scoping10.C
  55dc1fca689030b5a494bddbb4c29887  gcc/testsuite/g++.old-deja/g++.jason/scoping11.C
--- 26811,26817 ----
  4db6c46266a3c32e83e4b4f8e13f4321  gcc/testsuite/g++.old-deja/g++.jason/rfg9.C
  8d7bfb887f857b536bd49eb6280f1359  gcc/testsuite/g++.old-deja/g++.jason/rvalue1.C
  a7a84efb83b07b626b9173305e6c605d  gcc/testsuite/g++.old-deja/g++.jason/rvalue2.C
! c2c689fa3048f0f112599a28c19a3e57  gcc/testsuite/g++.old-deja/g++.jason/rvalue3.C
  647286463ce7ee3841394dc65c3053c9  gcc/testsuite/g++.old-deja/g++.jason/scoping.C
  d662843f32b192516f98c87aba14c1db  gcc/testsuite/g++.old-deja/g++.jason/scoping10.C
  55dc1fca689030b5a494bddbb4c29887  gcc/testsuite/g++.old-deja/g++.jason/scoping11.C
*************** ad2c663d36d9a0f17dc938a311946155  gcc/te
*** 24636,24642 ****
  d0e4ae132818153928f40bc2612f14f8  gcc/testsuite/g++.old-deja/g++.jason/template35.C
  e6113f8014999e52216f910eba291de1  gcc/testsuite/g++.old-deja/g++.jason/template36.C
  1ef0ca563dd56e9475343428fa1d8a6b  gcc/testsuite/g++.old-deja/g++.jason/template39.C
! 9b49387d1e7e76656995dd4e191c11d0  gcc/testsuite/g++.old-deja/g++.jason/template4.C
  3ef76a22c445af6d004e4af1d4e1ef5d  gcc/testsuite/g++.old-deja/g++.jason/template40.C
  06612c475479383f58b655c5b6f0dad6  gcc/testsuite/g++.old-deja/g++.jason/template41.C
  a38dfe63aedc2cf73a44464a7ca9b564  gcc/testsuite/g++.old-deja/g++.jason/template42.C
--- 26875,26881 ----
  d0e4ae132818153928f40bc2612f14f8  gcc/testsuite/g++.old-deja/g++.jason/template35.C
  e6113f8014999e52216f910eba291de1  gcc/testsuite/g++.old-deja/g++.jason/template36.C
  1ef0ca563dd56e9475343428fa1d8a6b  gcc/testsuite/g++.old-deja/g++.jason/template39.C
! 88d66a0f67d412f0b931466bce6ecac0  gcc/testsuite/g++.old-deja/g++.jason/template4.C
  3ef76a22c445af6d004e4af1d4e1ef5d  gcc/testsuite/g++.old-deja/g++.jason/template40.C
  06612c475479383f58b655c5b6f0dad6  gcc/testsuite/g++.old-deja/g++.jason/template41.C
  a38dfe63aedc2cf73a44464a7ca9b564  gcc/testsuite/g++.old-deja/g++.jason/template42.C
*************** a4a98da49e2e4b8c46f1e9653be42b53  gcc/te
*** 24690,24696 ****
  1c73e8224f5abf06d0756ccb118b07ce  gcc/testsuite/g++.old-deja/g++.law/access1.C
  32a3f6717059fbc586527e3b51806ff7  gcc/testsuite/g++.old-deja/g++.law/access2.C
  600cbff068bad85a667a7c3b74fcda09  gcc/testsuite/g++.old-deja/g++.law/access3.C
! 669f5951b843e050aeb5cfc2de19e489  gcc/testsuite/g++.old-deja/g++.law/access4.C
  a899855ccf854a1622bf92c1ca44ce9c  gcc/testsuite/g++.old-deja/g++.law/access5.C
  6228c9473c663871bdfef1ec7076da53  gcc/testsuite/g++.old-deja/g++.law/arg1.C
  abee0cae5523dfb95a0555bdeda523be  gcc/testsuite/g++.old-deja/g++.law/arg10.C
--- 26929,26935 ----
  1c73e8224f5abf06d0756ccb118b07ce  gcc/testsuite/g++.old-deja/g++.law/access1.C
  32a3f6717059fbc586527e3b51806ff7  gcc/testsuite/g++.old-deja/g++.law/access2.C
  600cbff068bad85a667a7c3b74fcda09  gcc/testsuite/g++.old-deja/g++.law/access3.C
! 10444249acdf836bb22ce92cd613c0fa  gcc/testsuite/g++.old-deja/g++.law/access4.C
  a899855ccf854a1622bf92c1ca44ce9c  gcc/testsuite/g++.old-deja/g++.law/access5.C
  6228c9473c663871bdfef1ec7076da53  gcc/testsuite/g++.old-deja/g++.law/arg1.C
  abee0cae5523dfb95a0555bdeda523be  gcc/testsuite/g++.old-deja/g++.law/arg10.C
*************** c05c2f1ee3a19b333421bc4f4791b463  gcc/te
*** 24713,24719 ****
  057e61f135edc44d894404532230c505  gcc/testsuite/g++.old-deja/g++.law/arm16.C
  7967ab12475bf7177886ea4f6cfe8359  gcc/testsuite/g++.old-deja/g++.law/arm2.C
  fa3fe87a524763ec485b4809b2b2e5f2  gcc/testsuite/g++.old-deja/g++.law/arm3.C
! 52ad024cb6dcdc4df071c7097fb83ca8  gcc/testsuite/g++.old-deja/g++.law/arm4.C
  2b4a336aec2b1f50014550ed0e9a7d37  gcc/testsuite/g++.old-deja/g++.law/arm5.C
  a68ae1accdd8bf6e6fc405b3f7a0dfb5  gcc/testsuite/g++.old-deja/g++.law/arm6.C
  945a0be661f253e32d06947b00b5a957  gcc/testsuite/g++.old-deja/g++.law/arm7.C
--- 26952,26958 ----
  057e61f135edc44d894404532230c505  gcc/testsuite/g++.old-deja/g++.law/arm16.C
  7967ab12475bf7177886ea4f6cfe8359  gcc/testsuite/g++.old-deja/g++.law/arm2.C
  fa3fe87a524763ec485b4809b2b2e5f2  gcc/testsuite/g++.old-deja/g++.law/arm3.C
! e6aef9a0b701d0c55caae8e224ae447e  gcc/testsuite/g++.old-deja/g++.law/arm4.C
  2b4a336aec2b1f50014550ed0e9a7d37  gcc/testsuite/g++.old-deja/g++.law/arm5.C
  a68ae1accdd8bf6e6fc405b3f7a0dfb5  gcc/testsuite/g++.old-deja/g++.law/arm6.C
  945a0be661f253e32d06947b00b5a957  gcc/testsuite/g++.old-deja/g++.law/arm7.C
*************** db1d243c61078bc4946fb42ac383a954  gcc/te
*** 24808,24814 ****
  3dcbeb7d145ae39da345f01ab8299d61  gcc/testsuite/g++.old-deja/g++.law/global-init1.C
  48e16841a2d71a47ef942cdd221a4ce2  gcc/testsuite/g++.old-deja/g++.law/incdec1.C
  58d32a605230d807049eb5e9c92fd62f  gcc/testsuite/g++.old-deja/g++.law/init1.C
! c33c89be27ac5f2efdfcd9e1a03b88df  gcc/testsuite/g++.old-deja/g++.law/init10.C
  3950c430bd280f39e8049a1f539a5785  gcc/testsuite/g++.old-deja/g++.law/init11.C
  c3e54fbfdc7acd00564d8782151e53d6  gcc/testsuite/g++.old-deja/g++.law/init13.C
  7c4b313b31666bebeda89f6c518a0fbe  gcc/testsuite/g++.old-deja/g++.law/init14.C
--- 27047,27053 ----
  3dcbeb7d145ae39da345f01ab8299d61  gcc/testsuite/g++.old-deja/g++.law/global-init1.C
  48e16841a2d71a47ef942cdd221a4ce2  gcc/testsuite/g++.old-deja/g++.law/incdec1.C
  58d32a605230d807049eb5e9c92fd62f  gcc/testsuite/g++.old-deja/g++.law/init1.C
! 7a563721e64d1df336b2339f0e7a9013  gcc/testsuite/g++.old-deja/g++.law/init10.C
  3950c430bd280f39e8049a1f539a5785  gcc/testsuite/g++.old-deja/g++.law/init11.C
  c3e54fbfdc7acd00564d8782151e53d6  gcc/testsuite/g++.old-deja/g++.law/init13.C
  7c4b313b31666bebeda89f6c518a0fbe  gcc/testsuite/g++.old-deja/g++.law/init14.C
*************** d621cc9a35c3180103ded4695025f3cb  gcc/te
*** 24825,24831 ****
  2983fb2df63a87b23801a2e31f0fd6ea  gcc/testsuite/g++.old-deja/g++.law/inline7.C
  c19fee3a5e6a2b1bb1ddf308671313bf  gcc/testsuite/g++.old-deja/g++.law/mentor1.C
  4412eb140fc4d53d0e79cc7b9c480177  gcc/testsuite/g++.old-deja/g++.law/missed-error1.C
! e52d0ecfd0100ea91b4ef0b4826396a5  gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
  148550d0fadd59c32845caec87bce551  gcc/testsuite/g++.old-deja/g++.law/missed-error3.C
  9f60400f904c292745b6a579c3b0857c  gcc/testsuite/g++.old-deja/g++.law/missing1.C
  21dbe19532a5dba9213a523d74ea1bb4  gcc/testsuite/g++.old-deja/g++.law/nest1.C
--- 27064,27070 ----
  2983fb2df63a87b23801a2e31f0fd6ea  gcc/testsuite/g++.old-deja/g++.law/inline7.C
  c19fee3a5e6a2b1bb1ddf308671313bf  gcc/testsuite/g++.old-deja/g++.law/mentor1.C
  4412eb140fc4d53d0e79cc7b9c480177  gcc/testsuite/g++.old-deja/g++.law/missed-error1.C
! dbe57536ce9b753bd04e630d155a6ea2  gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
  148550d0fadd59c32845caec87bce551  gcc/testsuite/g++.old-deja/g++.law/missed-error3.C
  9f60400f904c292745b6a579c3b0857c  gcc/testsuite/g++.old-deja/g++.law/missing1.C
  21dbe19532a5dba9213a523d74ea1bb4  gcc/testsuite/g++.old-deja/g++.law/nest1.C
*************** bf2c9b06556999dd1a62fb7f0b8a0cbc  gcc/te
*** 24918,24924 ****
  de29ab2e92616aa500d00dccc5c13384  gcc/testsuite/g++.old-deja/g++.law/visibility1.C
  f0172f6ae49ffde513b6ca7a5245ae8b  gcc/testsuite/g++.old-deja/g++.law/visibility10.C
  a25826be78810e5dc71078f5af23ec75  gcc/testsuite/g++.old-deja/g++.law/visibility11.C
! 272058e75bb7c78065dbfe14a119aae2  gcc/testsuite/g++.old-deja/g++.law/visibility12.C
  078e450db48872ef44e7b3927f9ff1cc  gcc/testsuite/g++.old-deja/g++.law/visibility13.C
  dce4661dcbcb694a1167a86aab76bfea  gcc/testsuite/g++.old-deja/g++.law/visibility14.C
  19496a95dc9ffcac0325b3637ab1e8da  gcc/testsuite/g++.old-deja/g++.law/visibility15.C
--- 27157,27163 ----
  de29ab2e92616aa500d00dccc5c13384  gcc/testsuite/g++.old-deja/g++.law/visibility1.C
  f0172f6ae49ffde513b6ca7a5245ae8b  gcc/testsuite/g++.old-deja/g++.law/visibility10.C
  a25826be78810e5dc71078f5af23ec75  gcc/testsuite/g++.old-deja/g++.law/visibility11.C
! ad7c4fefca597101b93106d397f18f11  gcc/testsuite/g++.old-deja/g++.law/visibility12.C
  078e450db48872ef44e7b3927f9ff1cc  gcc/testsuite/g++.old-deja/g++.law/visibility13.C
  dce4661dcbcb694a1167a86aab76bfea  gcc/testsuite/g++.old-deja/g++.law/visibility14.C
  19496a95dc9ffcac0325b3637ab1e8da  gcc/testsuite/g++.old-deja/g++.law/visibility15.C
*************** ea7844806f8312d4dc27b0469a993bba  gcc/te
*** 24936,24946 ****
  5bf028a54c42be753c5a70a61ce49abc  gcc/testsuite/g++.old-deja/g++.law/visibility27.C
  a24bfda97e2b33d0ab14a8f7ba45e74a  gcc/testsuite/g++.old-deja/g++.law/visibility28.C
  9e4bafcb0396f1d1497046a7eb4ecac9  gcc/testsuite/g++.old-deja/g++.law/visibility3.C
! 94b00fc9148ab5d8ea7628939caaf7d2  gcc/testsuite/g++.old-deja/g++.law/visibility4.C
  0044a4d62dfe2cacb9a0fb82f9dc6fbc  gcc/testsuite/g++.old-deja/g++.law/visibility5.C
  3a5f90628d111f3e2ca93e98f0d232cd  gcc/testsuite/g++.old-deja/g++.law/visibility6.C
  1488ef54e32cd312ecec7c1d429f5990  gcc/testsuite/g++.old-deja/g++.law/visibility7.C
! b2ccebc4cc846ad50345fce9e5b3d5e3  gcc/testsuite/g++.old-deja/g++.law/visibility8.C
  73f0dee638ec0f7c42ea7c319c1aeb8d  gcc/testsuite/g++.old-deja/g++.law/visibility9.C
  f3059608a1f797e501185505c8997b6d  gcc/testsuite/g++.old-deja/g++.law/vtable1.C
  248e82b0d6c1c80f463a405ecdc6ed4a  gcc/testsuite/g++.old-deja/g++.law/vtable2.C
--- 27175,27185 ----
  5bf028a54c42be753c5a70a61ce49abc  gcc/testsuite/g++.old-deja/g++.law/visibility27.C
  a24bfda97e2b33d0ab14a8f7ba45e74a  gcc/testsuite/g++.old-deja/g++.law/visibility28.C
  9e4bafcb0396f1d1497046a7eb4ecac9  gcc/testsuite/g++.old-deja/g++.law/visibility3.C
! a282846406efaa1627dbbb3b4bf1c5e5  gcc/testsuite/g++.old-deja/g++.law/visibility4.C
  0044a4d62dfe2cacb9a0fb82f9dc6fbc  gcc/testsuite/g++.old-deja/g++.law/visibility5.C
  3a5f90628d111f3e2ca93e98f0d232cd  gcc/testsuite/g++.old-deja/g++.law/visibility6.C
  1488ef54e32cd312ecec7c1d429f5990  gcc/testsuite/g++.old-deja/g++.law/visibility7.C
! 4f213ed76214c30e54bfd2d2b2aaee66  gcc/testsuite/g++.old-deja/g++.law/visibility8.C
  73f0dee638ec0f7c42ea7c319c1aeb8d  gcc/testsuite/g++.old-deja/g++.law/visibility9.C
  f3059608a1f797e501185505c8997b6d  gcc/testsuite/g++.old-deja/g++.law/vtable1.C
  248e82b0d6c1c80f463a405ecdc6ed4a  gcc/testsuite/g++.old-deja/g++.law/vtable2.C
*************** d75f8b22af6f32d638b5028678690bf2  gcc/te
*** 25047,25053 ****
  345f34ac2b4fff477c33d35030442686  gcc/testsuite/g++.old-deja/g++.mike/explicit1.C
  5d4b3f2ce15b60cc3c7c9355f7f02c50  gcc/testsuite/g++.old-deja/g++.mike/explicit2.C
  bb215f95244a8c053f7a3cc356de3981  gcc/testsuite/g++.old-deja/g++.mike/for1.C
! c1827f56cbae70426266bc7b5c33eefe  gcc/testsuite/g++.old-deja/g++.mike/for2.C
  45614c0636f513ef349aa932b1e98cc3  gcc/testsuite/g++.old-deja/g++.mike/for3.C
  a1e7ce7dc410f960fdf67a65a9619343  gcc/testsuite/g++.old-deja/g++.mike/fresco1.C
  f47d13b17809698e784e1f15ec970ac7  gcc/testsuite/g++.old-deja/g++.mike/hog1.C
--- 27286,27292 ----
  345f34ac2b4fff477c33d35030442686  gcc/testsuite/g++.old-deja/g++.mike/explicit1.C
  5d4b3f2ce15b60cc3c7c9355f7f02c50  gcc/testsuite/g++.old-deja/g++.mike/explicit2.C
  bb215f95244a8c053f7a3cc356de3981  gcc/testsuite/g++.old-deja/g++.mike/for1.C
! 1bcf52eca3d444ed9735f98c6c29de27  gcc/testsuite/g++.old-deja/g++.mike/for2.C
  45614c0636f513ef349aa932b1e98cc3  gcc/testsuite/g++.old-deja/g++.mike/for3.C
  a1e7ce7dc410f960fdf67a65a9619343  gcc/testsuite/g++.old-deja/g++.mike/fresco1.C
  f47d13b17809698e784e1f15ec970ac7  gcc/testsuite/g++.old-deja/g++.mike/hog1.C
*************** bececf06bce4b261ae8fcfd6da928cff  gcc/te
*** 25122,25128 ****
  bbb693427523d00af2fdf69c55f7c100  gcc/testsuite/g++.old-deja/g++.mike/ns12.C
  b0789f1b98268e2d7f80d5b25c929e42  gcc/testsuite/g++.old-deja/g++.mike/ns13.C
  075f2dbb8b6d85c4822f746063384fdb  gcc/testsuite/g++.old-deja/g++.mike/ns14.C
! 2f905a9f6b790d26b468b7bb07d971c9  gcc/testsuite/g++.old-deja/g++.mike/ns15.C
  9be7d6e725403b1902c85e3e64c44b8a  gcc/testsuite/g++.old-deja/g++.mike/ns2.C
  ad7e7ff96ee25569c612972fdbc0b0f2  gcc/testsuite/g++.old-deja/g++.mike/ns3.C
  dbf61afb40127648f192a500027fa778  gcc/testsuite/g++.old-deja/g++.mike/ns4.C
--- 27361,27367 ----
  bbb693427523d00af2fdf69c55f7c100  gcc/testsuite/g++.old-deja/g++.mike/ns12.C
  b0789f1b98268e2d7f80d5b25c929e42  gcc/testsuite/g++.old-deja/g++.mike/ns13.C
  075f2dbb8b6d85c4822f746063384fdb  gcc/testsuite/g++.old-deja/g++.mike/ns14.C
! 9bc886d80eaef88382a6488c34b38ac3  gcc/testsuite/g++.old-deja/g++.mike/ns15.C
  9be7d6e725403b1902c85e3e64c44b8a  gcc/testsuite/g++.old-deja/g++.mike/ns2.C
  ad7e7ff96ee25569c612972fdbc0b0f2  gcc/testsuite/g++.old-deja/g++.mike/ns3.C
  dbf61afb40127648f192a500027fa778  gcc/testsuite/g++.old-deja/g++.mike/ns4.C
*************** f8e1370e29d3532e48d29f7659a4a571  gcc/te
*** 25218,25224 ****
  31d4b934b63d1ccd3fce41f3cdd4ee83  gcc/testsuite/g++.old-deja/g++.mike/p6311.C
  05e8c7b1970fa70f65e311dfe64f4800  gcc/testsuite/g++.old-deja/g++.mike/p646.C
  6305cff2956e86afbcf693994724bcc8  gcc/testsuite/g++.old-deja/g++.mike/p6578.C
! 2128b4975a9eca5711e8fae9df9ee8b8  gcc/testsuite/g++.old-deja/g++.mike/p658.C
  c08220ad297c848fcc61433677ce38a7  gcc/testsuite/g++.old-deja/g++.mike/p6610a.C
  1d9b4b88ab42fb70b17b3240da3263ef  gcc/testsuite/g++.old-deja/g++.mike/p6610b.C
  3140578e9dcaa7d7356d613cbcfdc303  gcc/testsuite/g++.old-deja/g++.mike/p6611.C
--- 27457,27463 ----
  31d4b934b63d1ccd3fce41f3cdd4ee83  gcc/testsuite/g++.old-deja/g++.mike/p6311.C
  05e8c7b1970fa70f65e311dfe64f4800  gcc/testsuite/g++.old-deja/g++.mike/p646.C
  6305cff2956e86afbcf693994724bcc8  gcc/testsuite/g++.old-deja/g++.mike/p6578.C
! 83a903f8fd2b690b4b0bc4571e32e26c  gcc/testsuite/g++.old-deja/g++.mike/p658.C
  c08220ad297c848fcc61433677ce38a7  gcc/testsuite/g++.old-deja/g++.mike/p6610a.C
  1d9b4b88ab42fb70b17b3240da3263ef  gcc/testsuite/g++.old-deja/g++.mike/p6610b.C
  3140578e9dcaa7d7356d613cbcfdc303  gcc/testsuite/g++.old-deja/g++.mike/p6611.C
*************** ff668e97c862ec9d9872e11a1ca7e91f  gcc/te
*** 25353,25359 ****
  1576f73d488f01626d95cc2b893b6fda  gcc/testsuite/g++.old-deja/g++.ns/bogus1.C
  f4e9ca642ad2357663c99460eb9dc63d  gcc/testsuite/g++.old-deja/g++.ns/crash1.C
  3a95064d597c5a12f6a8fbcb78c86a9f  gcc/testsuite/g++.old-deja/g++.ns/crash2.C
! 50dda260af919caf4b52ad13576ac248  gcc/testsuite/g++.old-deja/g++.ns/crash3.C
  e62c91a9ce451cfbd36af63f733470b6  gcc/testsuite/g++.old-deja/g++.ns/crash4.C
  e7ae6c01430fe184836d998bc4619af4  gcc/testsuite/g++.old-deja/g++.ns/extern1.C
  1ac4f8617c42fa9ac34245cdbdf20c7d  gcc/testsuite/g++.old-deja/g++.ns/friend1.C
--- 27592,27598 ----
  1576f73d488f01626d95cc2b893b6fda  gcc/testsuite/g++.old-deja/g++.ns/bogus1.C
  f4e9ca642ad2357663c99460eb9dc63d  gcc/testsuite/g++.old-deja/g++.ns/crash1.C
  3a95064d597c5a12f6a8fbcb78c86a9f  gcc/testsuite/g++.old-deja/g++.ns/crash2.C
! 281539beee56498ddcf3a49c109edd2e  gcc/testsuite/g++.old-deja/g++.ns/crash3.C
  e62c91a9ce451cfbd36af63f733470b6  gcc/testsuite/g++.old-deja/g++.ns/crash4.C
  e7ae6c01430fe184836d998bc4619af4  gcc/testsuite/g++.old-deja/g++.ns/extern1.C
  1ac4f8617c42fa9ac34245cdbdf20c7d  gcc/testsuite/g++.old-deja/g++.ns/friend1.C
*************** d79eec58cdd08f618d30b9dbb15833d2  gcc/te
*** 25414,25420 ****
  a6d668c517d698af92324c4653d1daa3  gcc/testsuite/g++.old-deja/g++.ns/template4.C
  442e49475c9a00e4cbed4344561a2788  gcc/testsuite/g++.old-deja/g++.ns/template5.C
  8f3f01d9a9a8f5fdba3934718e292dbc  gcc/testsuite/g++.old-deja/g++.ns/template6.C
! 78e004a53326c5071a5bd7ef8d3c172d  gcc/testsuite/g++.old-deja/g++.ns/template7.C
  572350f61cd31fb645db99d27eea1ae9  gcc/testsuite/g++.old-deja/g++.ns/template8.C
  ee74d571b61ee2790eca68613745e54a  gcc/testsuite/g++.old-deja/g++.ns/template9.C
  407b4397b4f3b0785112e49bb5cd3005  gcc/testsuite/g++.old-deja/g++.ns/type1.C
--- 27653,27659 ----
  a6d668c517d698af92324c4653d1daa3  gcc/testsuite/g++.old-deja/g++.ns/template4.C
  442e49475c9a00e4cbed4344561a2788  gcc/testsuite/g++.old-deja/g++.ns/template5.C
  8f3f01d9a9a8f5fdba3934718e292dbc  gcc/testsuite/g++.old-deja/g++.ns/template6.C
! b8bd39b6eff0e797ef9c43661db01fb5  gcc/testsuite/g++.old-deja/g++.ns/template7.C
  572350f61cd31fb645db99d27eea1ae9  gcc/testsuite/g++.old-deja/g++.ns/template8.C
  ee74d571b61ee2790eca68613745e54a  gcc/testsuite/g++.old-deja/g++.ns/template9.C
  407b4397b4f3b0785112e49bb5cd3005  gcc/testsuite/g++.old-deja/g++.ns/type1.C
*************** d2a61b5f238fbeef49772675bd6c035f  gcc/te
*** 25481,25487 ****
  9725e4e1ea76fc92aedfa42ae56fd439  gcc/testsuite/g++.old-deja/g++.other/access11.C
  5607efc598712c2be2844d0ce4b7d7e1  gcc/testsuite/g++.old-deja/g++.other/access2.C
  95bc91bf3f9273af01c9579897a93507  gcc/testsuite/g++.old-deja/g++.other/access3.C
! a4aa31e9b40538852abfcda7b638efdb  gcc/testsuite/g++.old-deja/g++.other/access4.C
  8c4bee7285989e59f3019a3018e7abba  gcc/testsuite/g++.old-deja/g++.other/access5.C
  f110d7b225f989a476f79c155a5e5d16  gcc/testsuite/g++.old-deja/g++.other/access6.C
  5bbdd196b21c242c9350b8a1c871cbc9  gcc/testsuite/g++.old-deja/g++.other/access7.C
--- 27720,27726 ----
  9725e4e1ea76fc92aedfa42ae56fd439  gcc/testsuite/g++.old-deja/g++.other/access11.C
  5607efc598712c2be2844d0ce4b7d7e1  gcc/testsuite/g++.old-deja/g++.other/access2.C
  95bc91bf3f9273af01c9579897a93507  gcc/testsuite/g++.old-deja/g++.other/access3.C
! 254a95840beac75780e506861330f168  gcc/testsuite/g++.old-deja/g++.other/access4.C
  8c4bee7285989e59f3019a3018e7abba  gcc/testsuite/g++.old-deja/g++.other/access5.C
  f110d7b225f989a476f79c155a5e5d16  gcc/testsuite/g++.old-deja/g++.other/access6.C
  5bbdd196b21c242c9350b8a1c871cbc9  gcc/testsuite/g++.old-deja/g++.other/access7.C
*************** aad0443f7c41b4a122886b6f70c3ee81  gcc/te
*** 25503,25509 ****
  28ca54f7b047c4a242f5908ac0c5f3ca  gcc/testsuite/g++.old-deja/g++.other/anon9.C
  3f1e42cde842279c479b7e4613fc7b6e  gcc/testsuite/g++.old-deja/g++.other/array1.C
  d50b30478795daedce9de07a07ed3991  gcc/testsuite/g++.old-deja/g++.other/array2.C
! 411d0d10a2d4315b64fbac017194d094  gcc/testsuite/g++.old-deja/g++.other/array3.C
  95a3df89db79879be49e39caf37b733d  gcc/testsuite/g++.old-deja/g++.other/array4.C
  ad371cb0e0e5569f8e4f12bdaefa7c0d  gcc/testsuite/g++.old-deja/g++.other/array5.C
  e3d968a14c4d5d023f855b46af29bb70  gcc/testsuite/g++.old-deja/g++.other/array6.C
--- 27742,27748 ----
  28ca54f7b047c4a242f5908ac0c5f3ca  gcc/testsuite/g++.old-deja/g++.other/anon9.C
  3f1e42cde842279c479b7e4613fc7b6e  gcc/testsuite/g++.old-deja/g++.other/array1.C
  d50b30478795daedce9de07a07ed3991  gcc/testsuite/g++.old-deja/g++.other/array2.C
! d4bd485d6db117363f466d302b9ebee3  gcc/testsuite/g++.old-deja/g++.other/array3.C
  95a3df89db79879be49e39caf37b733d  gcc/testsuite/g++.old-deja/g++.other/array4.C
  ad371cb0e0e5569f8e4f12bdaefa7c0d  gcc/testsuite/g++.old-deja/g++.other/array5.C
  e3d968a14c4d5d023f855b46af29bb70  gcc/testsuite/g++.old-deja/g++.other/array6.C
*************** ca920fbfee24aea8dd36d80beb365d07  gcc/te
*** 25596,25602 ****
  52b9cd9c6a2f857dac5de21020b454ea  gcc/testsuite/g++.old-deja/g++.other/crash29.C
  05f9169b3c0aa560e0ba3e11e6ed4a94  gcc/testsuite/g++.old-deja/g++.other/crash3.C
  b0e3fbc2c0d2fb0ff1517a0e45a060da  gcc/testsuite/g++.old-deja/g++.other/crash30.C
! 1703e72cd30f5bb840b4131a1214464e  gcc/testsuite/g++.old-deja/g++.other/crash31.C
  fb6f532d92ee6ae53c407a3e37396fcc  gcc/testsuite/g++.old-deja/g++.other/crash32.C
  af86322780df2d44590d8b2285db668a  gcc/testsuite/g++.old-deja/g++.other/crash33.C
  8737598586da048dab5bd4c2c89c4eaf  gcc/testsuite/g++.old-deja/g++.other/crash34.C
--- 27835,27841 ----
  52b9cd9c6a2f857dac5de21020b454ea  gcc/testsuite/g++.old-deja/g++.other/crash29.C
  05f9169b3c0aa560e0ba3e11e6ed4a94  gcc/testsuite/g++.old-deja/g++.other/crash3.C
  b0e3fbc2c0d2fb0ff1517a0e45a060da  gcc/testsuite/g++.old-deja/g++.other/crash30.C
! 2f80b82cb047c393515ca09499c2320f  gcc/testsuite/g++.old-deja/g++.other/crash31.C
  fb6f532d92ee6ae53c407a3e37396fcc  gcc/testsuite/g++.old-deja/g++.other/crash32.C
  af86322780df2d44590d8b2285db668a  gcc/testsuite/g++.old-deja/g++.other/crash33.C
  8737598586da048dab5bd4c2c89c4eaf  gcc/testsuite/g++.old-deja/g++.other/crash34.C
*************** b23319808394ce6738b1508b7f4ec38d  gcc/te
*** 25632,25638 ****
  b82c1ff0b46d37526b002e9eadb7b5a2  gcc/testsuite/g++.old-deja/g++.other/debug9.C
  ce3c15e4b9c0fc4646ac8142395acc53  gcc/testsuite/g++.old-deja/g++.other/decl1.C
  589daf00ab11a288c7fe3c5d5b24404c  gcc/testsuite/g++.old-deja/g++.other/decl2.C
! da4392d4b8319374e5f686fd1c71ef28  gcc/testsuite/g++.old-deja/g++.other/decl3.C
  87f1ee2bbfeb5481b12d8c5030343b02  gcc/testsuite/g++.old-deja/g++.other/decl4.C
  3ccfd73bbc4074f9cb1cf40feeda16de  gcc/testsuite/g++.old-deja/g++.other/decl5.C
  033a1c9932a565526b522af53e4e58b8  gcc/testsuite/g++.old-deja/g++.other/decl6.C
--- 27871,27877 ----
  b82c1ff0b46d37526b002e9eadb7b5a2  gcc/testsuite/g++.old-deja/g++.other/debug9.C
  ce3c15e4b9c0fc4646ac8142395acc53  gcc/testsuite/g++.old-deja/g++.other/decl1.C
  589daf00ab11a288c7fe3c5d5b24404c  gcc/testsuite/g++.old-deja/g++.other/decl2.C
! 7969b9ed0fc55d3bfa3b62b98a9911f0  gcc/testsuite/g++.old-deja/g++.other/decl3.C
  87f1ee2bbfeb5481b12d8c5030343b02  gcc/testsuite/g++.old-deja/g++.other/decl4.C
  3ccfd73bbc4074f9cb1cf40feeda16de  gcc/testsuite/g++.old-deja/g++.other/decl5.C
  033a1c9932a565526b522af53e4e58b8  gcc/testsuite/g++.old-deja/g++.other/decl6.C
*************** c60e35453aa201f9a53cebeea1e937f0  gcc/te
*** 25649,25655 ****
  56c31a277d90ddf2a30fb0acb32b386a  gcc/testsuite/g++.old-deja/g++.other/defarg8.C
  f7f9c2f14ef416153be680c07c0850ff  gcc/testsuite/g++.old-deja/g++.other/defarg9.C
  34f6525c6eb87fdc45c8fcf8d0b2115a  gcc/testsuite/g++.old-deja/g++.other/delete1.C
! 779792404c1ce0b4fc3262f45ab83083  gcc/testsuite/g++.old-deja/g++.other/delete2.C
  49bad56c5760d85acb515a9a73eb18b2  gcc/testsuite/g++.old-deja/g++.other/delete3.C
  48cb9639142065438719c2e0123ef935  gcc/testsuite/g++.old-deja/g++.other/delete4.C
  f2e3e23b1fda185e1f462c9e3bf913e6  gcc/testsuite/g++.old-deja/g++.other/delete5.C
--- 27888,27894 ----
  56c31a277d90ddf2a30fb0acb32b386a  gcc/testsuite/g++.old-deja/g++.other/defarg8.C
  f7f9c2f14ef416153be680c07c0850ff  gcc/testsuite/g++.old-deja/g++.other/defarg9.C
  34f6525c6eb87fdc45c8fcf8d0b2115a  gcc/testsuite/g++.old-deja/g++.other/delete1.C
! b453de23a9a42236701db32f7c39cd5c  gcc/testsuite/g++.old-deja/g++.other/delete2.C
  49bad56c5760d85acb515a9a73eb18b2  gcc/testsuite/g++.old-deja/g++.other/delete3.C
  48cb9639142065438719c2e0123ef935  gcc/testsuite/g++.old-deja/g++.other/delete4.C
  f2e3e23b1fda185e1f462c9e3bf913e6  gcc/testsuite/g++.old-deja/g++.other/delete5.C
*************** e0228ca9cb60d1437fd658fe2d597301  gcc/te
*** 25698,25704 ****
  989a20c8af821e747e17e6f4d9323de7  gcc/testsuite/g++.old-deja/g++.other/enum5.C
  a062e6feea05b79de6f4a91e26e7acb3  gcc/testsuite/g++.old-deja/g++.other/explicit1.C
  6cb1995f72f4ef7e804728794ac1e3e2  gcc/testsuite/g++.old-deja/g++.other/expr1.C
! cb97f0a4d350c5545ed921b0c95d1800  gcc/testsuite/g++.old-deja/g++.other/exprstmt1.C
  20c3e7bd2094e334ab8bfcd82a2b1e43  gcc/testsuite/g++.old-deja/g++.other/externC1.C
  e4bbf19796485a7cc4158d83c4d3cf4d  gcc/testsuite/g++.old-deja/g++.other/externC2.C
  d9d8a652760a5ef1b74c8b6ce815177d  gcc/testsuite/g++.old-deja/g++.other/externC3.C
--- 27937,27943 ----
  989a20c8af821e747e17e6f4d9323de7  gcc/testsuite/g++.old-deja/g++.other/enum5.C
  a062e6feea05b79de6f4a91e26e7acb3  gcc/testsuite/g++.old-deja/g++.other/explicit1.C
  6cb1995f72f4ef7e804728794ac1e3e2  gcc/testsuite/g++.old-deja/g++.other/expr1.C
! a41193e68852f93706b043425adcb320  gcc/testsuite/g++.old-deja/g++.other/exprstmt1.C
  20c3e7bd2094e334ab8bfcd82a2b1e43  gcc/testsuite/g++.old-deja/g++.other/externC1.C
  e4bbf19796485a7cc4158d83c4d3cf4d  gcc/testsuite/g++.old-deja/g++.other/externC2.C
  d9d8a652760a5ef1b74c8b6ce815177d  gcc/testsuite/g++.old-deja/g++.other/externC3.C
*************** ef17244e8beb00b8e2b159085fa4524c  gcc/te
*** 25749,25758 ****
  5841802bbaf58c45a8be3d0bc688eae3  gcc/testsuite/g++.old-deja/g++.other/inline1.C
  50d7ee902563f62414c3d4e1c3e2be49  gcc/testsuite/g++.old-deja/g++.other/inline10.C
  3bd78b7aee29c89595c18932ab7c6ff7  gcc/testsuite/g++.old-deja/g++.other/inline11.C
! b345c4f1fbc76ff8eea95ef0d960c978  gcc/testsuite/g++.old-deja/g++.other/inline12.C
  6d138e6b605ced1518ce48da2e4a8313  gcc/testsuite/g++.old-deja/g++.other/inline13.C
  5048bcdb68a786e7e91b6c13276ea7d9  gcc/testsuite/g++.old-deja/g++.other/inline14.C
! d065f7b802be155187ff416cf56db93e  gcc/testsuite/g++.old-deja/g++.other/inline15.C
  94a6d3c26b108e05298c1283ec8a85a9  gcc/testsuite/g++.old-deja/g++.other/inline16.C
  71248f6786229af294e1836c18601abb  gcc/testsuite/g++.old-deja/g++.other/inline17.C
  69da7d680ad5e7376411f896aed134fa  gcc/testsuite/g++.old-deja/g++.other/inline18.C
--- 27988,27997 ----
  5841802bbaf58c45a8be3d0bc688eae3  gcc/testsuite/g++.old-deja/g++.other/inline1.C
  50d7ee902563f62414c3d4e1c3e2be49  gcc/testsuite/g++.old-deja/g++.other/inline10.C
  3bd78b7aee29c89595c18932ab7c6ff7  gcc/testsuite/g++.old-deja/g++.other/inline11.C
! 83e5590d5100240c5024930a3fff8632  gcc/testsuite/g++.old-deja/g++.other/inline12.C
  6d138e6b605ced1518ce48da2e4a8313  gcc/testsuite/g++.old-deja/g++.other/inline13.C
  5048bcdb68a786e7e91b6c13276ea7d9  gcc/testsuite/g++.old-deja/g++.other/inline14.C
! 6e7ab2cff90e716850f612d2d61e68a4  gcc/testsuite/g++.old-deja/g++.other/inline15.C
  94a6d3c26b108e05298c1283ec8a85a9  gcc/testsuite/g++.old-deja/g++.other/inline16.C
  71248f6786229af294e1836c18601abb  gcc/testsuite/g++.old-deja/g++.other/inline17.C
  69da7d680ad5e7376411f896aed134fa  gcc/testsuite/g++.old-deja/g++.other/inline18.C
*************** b822d2c88362af7f0d14e2ef2c0e5a40  gcc/te
*** 25786,25792 ****
  f02d7bee1a6e33dff41829b90a2f55e5  gcc/testsuite/g++.old-deja/g++.other/local1.C
  b0c55f20739e7cf716fcd5af1b14be8b  gcc/testsuite/g++.old-deja/g++.other/local2.C
  d66fe3a8dd3fe648291bfe2f4d9cff5d  gcc/testsuite/g++.old-deja/g++.other/local3.C
! 27f9dff2a26887c8da1bef9ace8c5587  gcc/testsuite/g++.old-deja/g++.other/local4.C
  f99b40c8a5dca68f114e31c176c89436  gcc/testsuite/g++.old-deja/g++.other/lookup1.C
  d870c2b83ff4174d5142d37d47482ac8  gcc/testsuite/g++.old-deja/g++.other/lookup10.C
  4d8dd7569edee5d6f3ae1b7961abcaf3  gcc/testsuite/g++.old-deja/g++.other/lookup11.C
--- 28025,28031 ----
  f02d7bee1a6e33dff41829b90a2f55e5  gcc/testsuite/g++.old-deja/g++.other/local1.C
  b0c55f20739e7cf716fcd5af1b14be8b  gcc/testsuite/g++.old-deja/g++.other/local2.C
  d66fe3a8dd3fe648291bfe2f4d9cff5d  gcc/testsuite/g++.old-deja/g++.other/local3.C
! f6d0ca57df62b9221f30bf24c88123af  gcc/testsuite/g++.old-deja/g++.other/local4.C
  f99b40c8a5dca68f114e31c176c89436  gcc/testsuite/g++.old-deja/g++.other/lookup1.C
  d870c2b83ff4174d5142d37d47482ac8  gcc/testsuite/g++.old-deja/g++.other/lookup10.C
  4d8dd7569edee5d6f3ae1b7961abcaf3  gcc/testsuite/g++.old-deja/g++.other/lookup11.C
*************** b570e69e7f39e0f5f39cb8f160b4ef20  gcc/te
*** 25826,25832 ****
  eb713ae1628b9077dbad880b05e1249d  gcc/testsuite/g++.old-deja/g++.other/new3.C
  30ec7e2f8989e636154506533aaaaabd  gcc/testsuite/g++.old-deja/g++.other/new4.C
  32154308cdeb3f9a775d1995218bf06b  gcc/testsuite/g++.old-deja/g++.other/new5.C
! 8d97f61246148e95eb61f4e8e573780f  gcc/testsuite/g++.old-deja/g++.other/new6.C
  efc771b4a76d0c053b9d50fa8846a444  gcc/testsuite/g++.old-deja/g++.other/new7.C
  3d711ec70ea8da8349b2ae221992e597  gcc/testsuite/g++.old-deja/g++.other/null2.C
  05838d9a27becab2a8f87c6b9cf5a7ef  gcc/testsuite/g++.old-deja/g++.other/null3.C
--- 28065,28071 ----
  eb713ae1628b9077dbad880b05e1249d  gcc/testsuite/g++.old-deja/g++.other/new3.C
  30ec7e2f8989e636154506533aaaaabd  gcc/testsuite/g++.old-deja/g++.other/new4.C
  32154308cdeb3f9a775d1995218bf06b  gcc/testsuite/g++.old-deja/g++.other/new5.C
! 51929d73e9cc200056dcf9058f92b101  gcc/testsuite/g++.old-deja/g++.other/new6.C
  efc771b4a76d0c053b9d50fa8846a444  gcc/testsuite/g++.old-deja/g++.other/new7.C
  3d711ec70ea8da8349b2ae221992e597  gcc/testsuite/g++.old-deja/g++.other/null2.C
  05838d9a27becab2a8f87c6b9cf5a7ef  gcc/testsuite/g++.old-deja/g++.other/null3.C
*************** b62e589f26ea50c3e520fbd34f0dfe9d  gcc/te
*** 25962,25968 ****
  de2953c02f20c253d55673ce9923a7ab  gcc/testsuite/g++.old-deja/g++.other/union2.C
  ec9963b19a70446506c638f4004a4f77  gcc/testsuite/g++.old-deja/g++.other/union3.C
  e3acc80ebcbe5b254d3b0f851c3cfc52  gcc/testsuite/g++.old-deja/g++.other/union4.C
! c71a89f813d35de962beba88b40cd212  gcc/testsuite/g++.old-deja/g++.other/using1.C
  6c35041de2c842ecc924c4de5eb53781  gcc/testsuite/g++.old-deja/g++.other/using2.C
  e4a2069418bcc2986985c27805d0f9fc  gcc/testsuite/g++.old-deja/g++.other/using3.C
  b9957a14eef8c9cfa198dafcb46f2a11  gcc/testsuite/g++.old-deja/g++.other/using4.C
--- 28201,28207 ----
  de2953c02f20c253d55673ce9923a7ab  gcc/testsuite/g++.old-deja/g++.other/union2.C
  ec9963b19a70446506c638f4004a4f77  gcc/testsuite/g++.old-deja/g++.other/union3.C
  e3acc80ebcbe5b254d3b0f851c3cfc52  gcc/testsuite/g++.old-deja/g++.other/union4.C
! d0efdf8988ed0a3a3507e974a9381921  gcc/testsuite/g++.old-deja/g++.other/using1.C
  6c35041de2c842ecc924c4de5eb53781  gcc/testsuite/g++.old-deja/g++.other/using2.C
  e4a2069418bcc2986985c27805d0f9fc  gcc/testsuite/g++.old-deja/g++.other/using3.C
  b9957a14eef8c9cfa198dafcb46f2a11  gcc/testsuite/g++.old-deja/g++.other/using4.C
*************** e4534f08b10c7d0e52a22a8c645b799d  gcc/te
*** 26021,26027 ****
  773908de3086f266546f3b9c039e01f6  gcc/testsuite/g++.old-deja/g++.pt/cond2.C
  df2c973c281b61ba430c736c714be46c  gcc/testsuite/g++.old-deja/g++.pt/cond3.C
  62fec5a71882a865b9fc5990e0a91f49  gcc/testsuite/g++.old-deja/g++.pt/const1.C
! 7a0b8d93048493a27e5dc08cd0e9d20f  gcc/testsuite/g++.old-deja/g++.pt/const2.C
  39f08277505df0f4dda7bde601ff4ef1  gcc/testsuite/g++.old-deja/g++.pt/conv1.C
  9275b4addba7abf9dad17529be1ea6d3  gcc/testsuite/g++.old-deja/g++.pt/conv2.C
  c0f0a60cf74d252087303d25f5507357  gcc/testsuite/g++.old-deja/g++.pt/conv3.C
--- 28260,28266 ----
  773908de3086f266546f3b9c039e01f6  gcc/testsuite/g++.old-deja/g++.pt/cond2.C
  df2c973c281b61ba430c736c714be46c  gcc/testsuite/g++.old-deja/g++.pt/cond3.C
  62fec5a71882a865b9fc5990e0a91f49  gcc/testsuite/g++.old-deja/g++.pt/const1.C
! 7514e9af1e1b454844bf4e32fdeabb9e  gcc/testsuite/g++.old-deja/g++.pt/const2.C
  39f08277505df0f4dda7bde601ff4ef1  gcc/testsuite/g++.old-deja/g++.pt/conv1.C
  9275b4addba7abf9dad17529be1ea6d3  gcc/testsuite/g++.old-deja/g++.pt/conv2.C
  c0f0a60cf74d252087303d25f5507357  gcc/testsuite/g++.old-deja/g++.pt/conv3.C
*************** b6d440ee5ae5a25fabec17351329472e  gcc/te
*** 26033,26039 ****
  fcadc5744a7361e664ae053c8da7d49f  gcc/testsuite/g++.old-deja/g++.pt/crash13.C
  8362f30058de81564a32b4120b51b1d4  gcc/testsuite/g++.old-deja/g++.pt/crash14.C
  2abe02bab2c536f2c534865125b58f90  gcc/testsuite/g++.old-deja/g++.pt/crash15.C
! 52d9eb530f798eab057c84a23a13292a  gcc/testsuite/g++.old-deja/g++.pt/crash16.C
  1811071a193b352d2fe96d8aaad51eac  gcc/testsuite/g++.old-deja/g++.pt/crash17.C
  1e0208226d67f07bbcf7d617588c459f  gcc/testsuite/g++.old-deja/g++.pt/crash18.C
  77a6447cd59f76d2af86fbf4cc3b75a6  gcc/testsuite/g++.old-deja/g++.pt/crash19.C
--- 28272,28278 ----
  fcadc5744a7361e664ae053c8da7d49f  gcc/testsuite/g++.old-deja/g++.pt/crash13.C
  8362f30058de81564a32b4120b51b1d4  gcc/testsuite/g++.old-deja/g++.pt/crash14.C
  2abe02bab2c536f2c534865125b58f90  gcc/testsuite/g++.old-deja/g++.pt/crash15.C
! d7539f6f35a58b52a6d9f2f4b7dc0f40  gcc/testsuite/g++.old-deja/g++.pt/crash16.C
  1811071a193b352d2fe96d8aaad51eac  gcc/testsuite/g++.old-deja/g++.pt/crash17.C
  1e0208226d67f07bbcf7d617588c459f  gcc/testsuite/g++.old-deja/g++.pt/crash18.C
  77a6447cd59f76d2af86fbf4cc3b75a6  gcc/testsuite/g++.old-deja/g++.pt/crash19.C
*************** b68c315d87c6da3200c5e40ecf94e0a3  gcc/te
*** 26048,26054 ****
  8986c1670e0c717d65ec99c78532722b  gcc/testsuite/g++.old-deja/g++.pt/crash27.C
  e6988c3246df244e0363fc784e781da1  gcc/testsuite/g++.old-deja/g++.pt/crash28.C
  0511f114a053d6ee5a46245be973b120  gcc/testsuite/g++.old-deja/g++.pt/crash29.C
! 2e1dfa6a1a9675ee0d665dc7dd928002  gcc/testsuite/g++.old-deja/g++.pt/crash3.C
  acf4b3be0fecc691751cb7785e03caae  gcc/testsuite/g++.old-deja/g++.pt/crash30.C
  d7866497f7e5839b6b2923ee09574812  gcc/testsuite/g++.old-deja/g++.pt/crash31.C
  b5d183852d6986ed354dbff38c6e9bfa  gcc/testsuite/g++.old-deja/g++.pt/crash32.C
--- 28287,28293 ----
  8986c1670e0c717d65ec99c78532722b  gcc/testsuite/g++.old-deja/g++.pt/crash27.C
  e6988c3246df244e0363fc784e781da1  gcc/testsuite/g++.old-deja/g++.pt/crash28.C
  0511f114a053d6ee5a46245be973b120  gcc/testsuite/g++.old-deja/g++.pt/crash29.C
! c35a65931b750ab0e45e1b13ceed015d  gcc/testsuite/g++.old-deja/g++.pt/crash3.C
  acf4b3be0fecc691751cb7785e03caae  gcc/testsuite/g++.old-deja/g++.pt/crash30.C
  d7866497f7e5839b6b2923ee09574812  gcc/testsuite/g++.old-deja/g++.pt/crash31.C
  b5d183852d6986ed354dbff38c6e9bfa  gcc/testsuite/g++.old-deja/g++.pt/crash32.C
*************** c123d0b9a12303c4b06fb3047614c601  gcc/te
*** 26092,26101 ****
  f22cf44c7dbbb47eb64c9173b3afe6c9  gcc/testsuite/g++.old-deja/g++.pt/crash67.C
  3854df7d687f6b27c1a8728b646f4944  gcc/testsuite/g++.old-deja/g++.pt/crash68.C
  21e63e2b294b7398e7c7f5acd5839428  gcc/testsuite/g++.old-deja/g++.pt/crash7.C
! f32b9eb07f1cae3cb7c21796d41732d3  gcc/testsuite/g++.old-deja/g++.pt/crash8.C
  bacabf0a4a53038418059a8709d926f4  gcc/testsuite/g++.old-deja/g++.pt/crash9.C
  175bbaa432316cf80ec13fb36b444aff  gcc/testsuite/g++.old-deja/g++.pt/ctor1.C
! a6b4e27547baeda5f7f6c29ad2d456d5  gcc/testsuite/g++.old-deja/g++.pt/ctor2.C
  ad2cc6cd72ed2f9aa4e2d8675680e0f2  gcc/testsuite/g++.old-deja/g++.pt/debug1.C
  7ff13cbadc027cf3969e195ccccf78aa  gcc/testsuite/g++.old-deja/g++.pt/decl1.C
  9858f161fed7cab46f56279efd868f75  gcc/testsuite/g++.old-deja/g++.pt/decl2.C
--- 28331,28340 ----
  f22cf44c7dbbb47eb64c9173b3afe6c9  gcc/testsuite/g++.old-deja/g++.pt/crash67.C
  3854df7d687f6b27c1a8728b646f4944  gcc/testsuite/g++.old-deja/g++.pt/crash68.C
  21e63e2b294b7398e7c7f5acd5839428  gcc/testsuite/g++.old-deja/g++.pt/crash7.C
! ad3d46649e47e04d7a041e7e1644c382  gcc/testsuite/g++.old-deja/g++.pt/crash8.C
  bacabf0a4a53038418059a8709d926f4  gcc/testsuite/g++.old-deja/g++.pt/crash9.C
  175bbaa432316cf80ec13fb36b444aff  gcc/testsuite/g++.old-deja/g++.pt/ctor1.C
! 556a591a899707b0d8264cbb11a96234  gcc/testsuite/g++.old-deja/g++.pt/ctor2.C
  ad2cc6cd72ed2f9aa4e2d8675680e0f2  gcc/testsuite/g++.old-deja/g++.pt/debug1.C
  7ff13cbadc027cf3969e195ccccf78aa  gcc/testsuite/g++.old-deja/g++.pt/decl1.C
  9858f161fed7cab46f56279efd868f75  gcc/testsuite/g++.old-deja/g++.pt/decl2.C
*************** eabeaf4b2054a66a79f97abba1d052c5  gcc/te
*** 26257,26263 ****
  81c9926f980edcd17231f56b9568b0dc  gcc/testsuite/g++.old-deja/g++.pt/friend31.C
  e0415ad05dbf52952020fef5fcda1c12  gcc/testsuite/g++.old-deja/g++.pt/friend32.C
  ad0e4e76bf18c847685fe381b2db7801  gcc/testsuite/g++.old-deja/g++.pt/friend33.C
! 7fd566f65442c4f27f4580049b3f9b54  gcc/testsuite/g++.old-deja/g++.pt/friend34.C
  8128d5f99ff0424b79698d2a412658bd  gcc/testsuite/g++.old-deja/g++.pt/friend35.C
  14cafbdd39314e5cca83ecee2ab80c28  gcc/testsuite/g++.old-deja/g++.pt/friend36.C
  c2141644fc33bf55b5da066f773db6fa  gcc/testsuite/g++.old-deja/g++.pt/friend37.C
--- 28496,28502 ----
  81c9926f980edcd17231f56b9568b0dc  gcc/testsuite/g++.old-deja/g++.pt/friend31.C
  e0415ad05dbf52952020fef5fcda1c12  gcc/testsuite/g++.old-deja/g++.pt/friend32.C
  ad0e4e76bf18c847685fe381b2db7801  gcc/testsuite/g++.old-deja/g++.pt/friend33.C
! 772be54f186a58d75a545253d97a5493  gcc/testsuite/g++.old-deja/g++.pt/friend34.C
  8128d5f99ff0424b79698d2a412658bd  gcc/testsuite/g++.old-deja/g++.pt/friend35.C
  14cafbdd39314e5cca83ecee2ab80c28  gcc/testsuite/g++.old-deja/g++.pt/friend36.C
  c2141644fc33bf55b5da066f773db6fa  gcc/testsuite/g++.old-deja/g++.pt/friend37.C
*************** e3bff0b8c186e28a157dd612f7988fc6  gcc/te
*** 26470,26476 ****
  beb45c829eba7caee32113489bd66046  gcc/testsuite/g++.old-deja/g++.pt/overload13.C
  a7cc7afc5b4d3917287e2eb1136e72b7  gcc/testsuite/g++.old-deja/g++.pt/overload14.C
  b120569cbaba674fa6fa0e1461c92fc8  gcc/testsuite/g++.old-deja/g++.pt/overload15.C
! 2c3b593af50ec95ea505735b3f65dc50  gcc/testsuite/g++.old-deja/g++.pt/overload2.C
  17d985f8e0055d711bd6f46440b506c0  gcc/testsuite/g++.old-deja/g++.pt/overload3.C
  3810576128729d1dc68f6e22b99defef  gcc/testsuite/g++.old-deja/g++.pt/overload4.C
  cf5bc865967699ad3f2906d8d936bfe5  gcc/testsuite/g++.old-deja/g++.pt/overload5.C
--- 28709,28715 ----
  beb45c829eba7caee32113489bd66046  gcc/testsuite/g++.old-deja/g++.pt/overload13.C
  a7cc7afc5b4d3917287e2eb1136e72b7  gcc/testsuite/g++.old-deja/g++.pt/overload14.C
  b120569cbaba674fa6fa0e1461c92fc8  gcc/testsuite/g++.old-deja/g++.pt/overload15.C
! d788850ba73ae3403d1a7fbb8c13e009  gcc/testsuite/g++.old-deja/g++.pt/overload2.C
  17d985f8e0055d711bd6f46440b506c0  gcc/testsuite/g++.old-deja/g++.pt/overload3.C
  3810576128729d1dc68f6e22b99defef  gcc/testsuite/g++.old-deja/g++.pt/overload4.C
  cf5bc865967699ad3f2906d8d936bfe5  gcc/testsuite/g++.old-deja/g++.pt/overload5.C
*************** fa0318448a07e1f2736619aa01d8732d  gcc/te
*** 26525,26531 ****
  be4c4aaf4896a204dd3b537e9467220b  gcc/testsuite/g++.old-deja/g++.pt/spec18.C
  20894f40e5d69e5aae0b8e042159c827  gcc/testsuite/g++.old-deja/g++.pt/spec19.C
  6dea43e72960bc1d42aee3da9eaf0230  gcc/testsuite/g++.old-deja/g++.pt/spec2.C
! 1703c00f03b6cf89638b3fbe8c9704e8  gcc/testsuite/g++.old-deja/g++.pt/spec20.C
  25b12bac3c14d516ca04719edc708f32  gcc/testsuite/g++.old-deja/g++.pt/spec21.C
  05b0244f0c064cd598fd696cc4cdfbf1  gcc/testsuite/g++.old-deja/g++.pt/spec22.C
  367cdf2dd4f938be53439e37487c6a8f  gcc/testsuite/g++.old-deja/g++.pt/spec23.C
--- 28764,28770 ----
  be4c4aaf4896a204dd3b537e9467220b  gcc/testsuite/g++.old-deja/g++.pt/spec18.C
  20894f40e5d69e5aae0b8e042159c827  gcc/testsuite/g++.old-deja/g++.pt/spec19.C
  6dea43e72960bc1d42aee3da9eaf0230  gcc/testsuite/g++.old-deja/g++.pt/spec2.C
! b1a3ba7235eea7ca9df252cf433cdd5f  gcc/testsuite/g++.old-deja/g++.pt/spec20.C
  25b12bac3c14d516ca04719edc708f32  gcc/testsuite/g++.old-deja/g++.pt/spec21.C
  05b0244f0c064cd598fd696cc4cdfbf1  gcc/testsuite/g++.old-deja/g++.pt/spec22.C
  367cdf2dd4f938be53439e37487c6a8f  gcc/testsuite/g++.old-deja/g++.pt/spec23.C
*************** e4bacbe47abba3ebf1104b50d7cf9249  gcc/te
*** 26736,26742 ****
  e890a612b46d6c7b501609a21a4674a8  gcc/testsuite/g++.old-deja/g++.rfg/00321_01-.C
  e26ad5718ff51449da03b8b3023ebab1  gcc/testsuite/g++.old-deja/g++.rfg/00324_02-.C
  18090564deaeabb2833db724176f5e3e  gcc/testsuite/g++.old-deja/g++.robertl/980310-1.C
! e75dadf889a505534ebcd554bb96618f  gcc/testsuite/g++.old-deja/g++.robertl/README
  7043c0e8dd58f93b9ec2d562d4af77b8  gcc/testsuite/g++.old-deja/g++.robertl/eb10.C
  ee83a1efbd7590614fbf204920c56047  gcc/testsuite/g++.old-deja/g++.robertl/eb102.C
  16b83875b8a1cbbdb43a0c94bc18228d  gcc/testsuite/g++.old-deja/g++.robertl/eb103.C
--- 28975,28981 ----
  e890a612b46d6c7b501609a21a4674a8  gcc/testsuite/g++.old-deja/g++.rfg/00321_01-.C
  e26ad5718ff51449da03b8b3023ebab1  gcc/testsuite/g++.old-deja/g++.rfg/00324_02-.C
  18090564deaeabb2833db724176f5e3e  gcc/testsuite/g++.old-deja/g++.robertl/980310-1.C
! 1c4348bdac8331cd084d64cb7791eb02  gcc/testsuite/g++.old-deja/g++.robertl/README
  7043c0e8dd58f93b9ec2d562d4af77b8  gcc/testsuite/g++.old-deja/g++.robertl/eb10.C
  ee83a1efbd7590614fbf204920c56047  gcc/testsuite/g++.old-deja/g++.robertl/eb102.C
  16b83875b8a1cbbdb43a0c94bc18228d  gcc/testsuite/g++.old-deja/g++.robertl/eb103.C
*************** d0815bd10637ef31f290d081ddbda880  gcc/te
*** 26745,26751 ****
  5ef889682d511f0ac101f0885f5a3831  gcc/testsuite/g++.old-deja/g++.robertl/eb106.C
  3e53dc52c997be42c47ab4e29c760531  gcc/testsuite/g++.old-deja/g++.robertl/eb107.C
  a3612f3f68ec2ae185d88189192c82c3  gcc/testsuite/g++.old-deja/g++.robertl/eb108.C
! 4b6fb71a4faf9481b3e240fb4f782449  gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
  cefd72ccf9ccca809d4dc7746e56f11f  gcc/testsuite/g++.old-deja/g++.robertl/eb11.C
  4e0fb43b2a17ed42c66d97c75cbcff3b  gcc/testsuite/g++.old-deja/g++.robertl/eb110.C
  389459a1b35359ae0a53adadeb39890c  gcc/testsuite/g++.old-deja/g++.robertl/eb111.C
--- 28984,28990 ----
  5ef889682d511f0ac101f0885f5a3831  gcc/testsuite/g++.old-deja/g++.robertl/eb106.C
  3e53dc52c997be42c47ab4e29c760531  gcc/testsuite/g++.old-deja/g++.robertl/eb107.C
  a3612f3f68ec2ae185d88189192c82c3  gcc/testsuite/g++.old-deja/g++.robertl/eb108.C
! 58ffba5403cd0872f89b0bf73bd08879  gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
  cefd72ccf9ccca809d4dc7746e56f11f  gcc/testsuite/g++.old-deja/g++.robertl/eb11.C
  4e0fb43b2a17ed42c66d97c75cbcff3b  gcc/testsuite/g++.old-deja/g++.robertl/eb110.C
  389459a1b35359ae0a53adadeb39890c  gcc/testsuite/g++.old-deja/g++.robertl/eb111.C
*************** dfa1bab9d1d1dbb5b57ebf2c698892d7  gcc/te
*** 26787,26793 ****
  9d707a3f73b9ac5715f144793aab4cf0  gcc/testsuite/g++.old-deja/g++.robertl/eb23.C
  6746831f359d3159b992e820ac0aa390  gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
  bfed9395e04ba5cc65f81b655ac0007e  gcc/testsuite/g++.old-deja/g++.robertl/eb26.C
! 46860c6367a581d0f42194a27712715e  gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
  dc881655a5dcfa0cdbdd902204cb69d8  gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
  2d148cfc1aef7e73c84dde3cfba1ce8c  gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
  0164d1f50c2dd32169fccc50aa1a7e01  gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
--- 29026,29032 ----
  9d707a3f73b9ac5715f144793aab4cf0  gcc/testsuite/g++.old-deja/g++.robertl/eb23.C
  6746831f359d3159b992e820ac0aa390  gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
  bfed9395e04ba5cc65f81b655ac0007e  gcc/testsuite/g++.old-deja/g++.robertl/eb26.C
! 6b11589b6124db13df6ce690ffc10020  gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
  dc881655a5dcfa0cdbdd902204cb69d8  gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
  2d148cfc1aef7e73c84dde3cfba1ce8c  gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
  0164d1f50c2dd32169fccc50aa1a7e01  gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
*************** f81c5754161a5ff2ebd2406bece56fd1  gcc/te
*** 26817,26829 ****
  515d9f8631388b57acb4079b3ad6e1d9  gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
  62fa73b17247c1714c275a963fa7328a  gcc/testsuite/g++.old-deja/g++.robertl/eb56.C
  0777d21b3dd550747ecc5bbf0087c1fc  gcc/testsuite/g++.old-deja/g++.robertl/eb57.C
! 993d0fecd5d11eb52beef6b83d0d7f9f  gcc/testsuite/g++.old-deja/g++.robertl/eb58.C
  0a93ceef805435716e94c493f877f9c7  gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
  1a1f9e745e06ee3866366991f2da25eb  gcc/testsuite/g++.old-deja/g++.robertl/eb6.C
  9ec1bcc10a422ce1681840b226b2e797  gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
  e79679e8d57af97c777b23ef2b290a90  gcc/testsuite/g++.old-deja/g++.robertl/eb61.C
  4bb576d55e0e1e12e3e9ceeebef0ceec  gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
! 3113643f536820a2abae4e1a313bf241  gcc/testsuite/g++.old-deja/g++.robertl/eb63.C
  b6595ba27fd258c0900d7e3a4566c9ca  gcc/testsuite/g++.old-deja/g++.robertl/eb64.C
  de75043540ca4e516fe1727234b3000e  gcc/testsuite/g++.old-deja/g++.robertl/eb65.C
  e728f40777563cb885cfa405a188c976  gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
--- 29056,29068 ----
  515d9f8631388b57acb4079b3ad6e1d9  gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
  62fa73b17247c1714c275a963fa7328a  gcc/testsuite/g++.old-deja/g++.robertl/eb56.C
  0777d21b3dd550747ecc5bbf0087c1fc  gcc/testsuite/g++.old-deja/g++.robertl/eb57.C
! ae46e078954256bdbe67e9f8d2c6f181  gcc/testsuite/g++.old-deja/g++.robertl/eb58.C
  0a93ceef805435716e94c493f877f9c7  gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
  1a1f9e745e06ee3866366991f2da25eb  gcc/testsuite/g++.old-deja/g++.robertl/eb6.C
  9ec1bcc10a422ce1681840b226b2e797  gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
  e79679e8d57af97c777b23ef2b290a90  gcc/testsuite/g++.old-deja/g++.robertl/eb61.C
  4bb576d55e0e1e12e3e9ceeebef0ceec  gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
! 6eb7ce0adf67ed69b5d47720c1b1fb00  gcc/testsuite/g++.old-deja/g++.robertl/eb63.C
  b6595ba27fd258c0900d7e3a4566c9ca  gcc/testsuite/g++.old-deja/g++.robertl/eb64.C
  de75043540ca4e516fe1727234b3000e  gcc/testsuite/g++.old-deja/g++.robertl/eb65.C
  e728f40777563cb885cfa405a188c976  gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
*************** ace655424d8104d76d1f908b54d8526d  gcc/te
*** 26835,26841 ****
  cadd13ad50ffcc1ec9077249dc0d84c6  gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
  be75e16bfbc653f4918a04c9b9ffb7ea  gcc/testsuite/g++.old-deja/g++.robertl/eb74.C
  055def38a375aca3237eeade062815d5  gcc/testsuite/g++.old-deja/g++.robertl/eb75.C
! a76393df8d77e4b40f3b7709a5b15716  gcc/testsuite/g++.old-deja/g++.robertl/eb76.C
  349f93b6aba01075501dbe0c1897a06a  gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
  a3fc556e3505fac837f3d398e1d92829  gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
  a085e6cf1eca394616113132643a792e  gcc/testsuite/g++.old-deja/g++.robertl/eb8.C
--- 29074,29080 ----
  cadd13ad50ffcc1ec9077249dc0d84c6  gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
  be75e16bfbc653f4918a04c9b9ffb7ea  gcc/testsuite/g++.old-deja/g++.robertl/eb74.C
  055def38a375aca3237eeade062815d5  gcc/testsuite/g++.old-deja/g++.robertl/eb75.C
! 2e30effa3d0f0268cf014677f519ff37  gcc/testsuite/g++.old-deja/g++.robertl/eb76.C
  349f93b6aba01075501dbe0c1897a06a  gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
  a3fc556e3505fac837f3d398e1d92829  gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
  a085e6cf1eca394616113132643a792e  gcc/testsuite/g++.old-deja/g++.robertl/eb8.C
*************** c887f1048097d9ab3916cf9b44becbe7  gcc/te
*** 26871,26900 ****
  109add3f9d0f1266286de36607a6be27  gcc/testsuite/g++.old-deja/g++.robertl/ice990323-4.C
  1e0df75bb630426aaa9e32e30df6eeaf  gcc/testsuite/g++.old-deja/g++.robertl/ice990323-5.C
  c04c5df1af975e2555996996c93c2bc3  gcc/testsuite/g++.old-deja/g++.warn/cast-align1.C
! 8e6c43e1ca88faef2525ef3c74453bb2  gcc/testsuite/g++.old-deja/g++.warn/flow1.C
  f0d75f94742cf514d429d51c4d4df58c  gcc/testsuite/g++.old-deja/g++.warn/impint.C
  4331e954dcb709dcbbc35224b3be85da  gcc/testsuite/g++.old-deja/g++.warn/impint2.C
  a885b90302ee9e0cb5c2e13efa009de3  gcc/testsuite/g++.old-deja/g++.warn/inline.C
  d53cb2073c8f36697f63dfe19779eb13  gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
  0c1003d602150141b4f4705044d2624f  gcc/testsuite/g++.old-deja/g++.warn/virt1.C
! f84204eeee088712d5aa5c3265daeced  gcc/testsuite/g++.old-deja/old-deja.exp
! 11ceb0f25bac23f3aab1177dba0175df  gcc/testsuite/g++.target/aarch64/aarch64.exp
! 3bf9651fdd715d050011949283abe2f0  gcc/testsuite/g++.target/aarch64/bfloat_cpp_typecheck.C
  c11e5f97e7a5971cc5c5017024f54496  gcc/testsuite/g++.target/aarch64/diag_aka_1.C
  4d5fd415b9746bcd53f093e8282fb37d  gcc/testsuite/g++.target/aarch64/no_unique_address_1.C
  20b857cf626aad749264f74e19d94347  gcc/testsuite/g++.target/aarch64/no_unique_address_2.C
  1755134bcb84bdbcfd658df7150649e0  gcc/testsuite/g++.target/aarch64/pr89752.C
! 4eb23bc723381e2b3528eb5a2f0df15a  gcc/testsuite/g++.target/aarch64/pr94052.C
  376b3a47b3ddd89e448a765321d0e622  gcc/testsuite/g++.target/aarch64/pr94514.C
  af40dade74feb71f52277a623af87930  gcc/testsuite/g++.target/aarch64/pr94515-1.C
  2d1f8d2fa70c2b254972cb8fdfbdf71e  gcc/testsuite/g++.target/aarch64/pr94515-2.C
  56e1fb5ac93105ccd085e98d790ec76d  gcc/testsuite/g++.target/aarch64/pr95114.C
! e43908e16a16a9cb2513ec42f1dcbf6f  gcc/testsuite/g++.target/aarch64/pr95726.C
  1ce9a3af843eab0dca2dbb5193fb0db2  gcc/testsuite/g++.target/aarch64/return_address_sign_ab_exception.C
  1649b9447d9bcb87e619e52bd2ad8119  gcc/testsuite/g++.target/aarch64/return_address_sign_b_exception.C
! d12f923a17b36c7b804c494648bbe368  gcc/testsuite/g++.target/aarch64/sve/aarch64-sve.exp
! dde1b6f7b14058049c5559162f66af85  gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
! 0a7a41652025fd66e66985d2a8096931  gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle.exp
  a4694db6f43496d141f7d03b0bad5454  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/add_1.C
  c9bec53dca7f345d3812bc87a82ac56e  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/add_1.h
  c264d7575a5c60660881b415fc9e52ba  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/add_2.C
--- 29110,29142 ----
  109add3f9d0f1266286de36607a6be27  gcc/testsuite/g++.old-deja/g++.robertl/ice990323-4.C
  1e0df75bb630426aaa9e32e30df6eeaf  gcc/testsuite/g++.old-deja/g++.robertl/ice990323-5.C
  c04c5df1af975e2555996996c93c2bc3  gcc/testsuite/g++.old-deja/g++.warn/cast-align1.C
! f6e9ca10dae6185d4eea5862e8d53b07  gcc/testsuite/g++.old-deja/g++.warn/flow1.C
  f0d75f94742cf514d429d51c4d4df58c  gcc/testsuite/g++.old-deja/g++.warn/impint.C
  4331e954dcb709dcbbc35224b3be85da  gcc/testsuite/g++.old-deja/g++.warn/impint2.C
  a885b90302ee9e0cb5c2e13efa009de3  gcc/testsuite/g++.old-deja/g++.warn/inline.C
  d53cb2073c8f36697f63dfe19779eb13  gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
  0c1003d602150141b4f4705044d2624f  gcc/testsuite/g++.old-deja/g++.warn/virt1.C
! 9db5edbc66abe3faac9be3ff82011df6  gcc/testsuite/g++.old-deja/old-deja.exp
! bee40081d8891411f689d510017ed4cc  gcc/testsuite/g++.target/aarch64/aarch64.exp
! 3f212b0014307c14669d5a3154904207  gcc/testsuite/g++.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp
! 992600153061bcf9c4f34a765c2c8f7e  gcc/testsuite/g++.target/aarch64/advsimd-intrinsics/pr98852.C
! ebce94697839c9a076df3569eade77eb  gcc/testsuite/g++.target/aarch64/bfloat_cpp_typecheck.C
  c11e5f97e7a5971cc5c5017024f54496  gcc/testsuite/g++.target/aarch64/diag_aka_1.C
  4d5fd415b9746bcd53f093e8282fb37d  gcc/testsuite/g++.target/aarch64/no_unique_address_1.C
  20b857cf626aad749264f74e19d94347  gcc/testsuite/g++.target/aarch64/no_unique_address_2.C
  1755134bcb84bdbcfd658df7150649e0  gcc/testsuite/g++.target/aarch64/pr89752.C
! ba9d23bf9864be2b6061429c3faa49b7  gcc/testsuite/g++.target/aarch64/pr94052.C
  376b3a47b3ddd89e448a765321d0e622  gcc/testsuite/g++.target/aarch64/pr94514.C
  af40dade74feb71f52277a623af87930  gcc/testsuite/g++.target/aarch64/pr94515-1.C
  2d1f8d2fa70c2b254972cb8fdfbdf71e  gcc/testsuite/g++.target/aarch64/pr94515-2.C
  56e1fb5ac93105ccd085e98d790ec76d  gcc/testsuite/g++.target/aarch64/pr95114.C
! 716e0dc0f2b0b7fa20373a1a78ece033  gcc/testsuite/g++.target/aarch64/pr95726.C
  1ce9a3af843eab0dca2dbb5193fb0db2  gcc/testsuite/g++.target/aarch64/return_address_sign_ab_exception.C
  1649b9447d9bcb87e619e52bd2ad8119  gcc/testsuite/g++.target/aarch64/return_address_sign_b_exception.C
! 7df5e70f80e65eff33f23719e1fb97de  gcc/testsuite/g++.target/aarch64/sve/aarch64-sve.exp
! a6360472eed92aa68d9de7e0dcbbc077  gcc/testsuite/g++.target/aarch64/sve/abd_1.C
! 96d7bcbba2173dbb0323c9eb5f6f5c68  gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
! 0b7f7e2c0e465c0444688dd5c4cd9213  gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle.exp
  a4694db6f43496d141f7d03b0bad5454  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/add_1.C
  c9bec53dca7f345d3812bc87a82ac56e  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/add_1.h
  c264d7575a5c60660881b415fc9e52ba  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/add_2.C
*************** a6ae885cab1c3ae4d6ab40d96a214a79  gcc/te
*** 26982,26987 ****
--- 29224,29255 ----
  c83c4271b6d4f87612c44c996d5968ff  gcc/testsuite/g++.target/aarch64/sve/catch_5.C
  7e08c226dff0f6bdf9c5f8c0fe3ece13  gcc/testsuite/g++.target/aarch64/sve/catch_6.C
  c899089ca792c1e83b415a8d10ab78a1  gcc/testsuite/g++.target/aarch64/sve/catch_7.C
+ fa5a4b0b236a26c7921b277f854021a1  gcc/testsuite/g++.target/aarch64/sve/cond_abd_1.C
+ f3a4cbc25a7de14b41bcce26ec52acc7  gcc/testsuite/g++.target/aarch64/sve/cond_abd_2.C
+ 0143514592590e2486719d355b3b84a6  gcc/testsuite/g++.target/aarch64/sve/cond_abd_3.C
+ 5c8153d86ffb7ef22cca95ac598acb31  gcc/testsuite/g++.target/aarch64/sve/cond_abd_4.C
+ 10e670a58a76fa7f0cafa33214a498a5  gcc/testsuite/g++.target/aarch64/sve/cond_arith_1.C
+ 64cba8dd22e638beb545c593e7afb199  gcc/testsuite/g++.target/aarch64/sve/cond_arith_2.C
+ 36b41892b47c3aa5caecef0d4e8bf862  gcc/testsuite/g++.target/aarch64/sve/cond_arith_3.C
+ 9190ff97141b31431c6c1b407cf51bdb  gcc/testsuite/g++.target/aarch64/sve/cond_arith_4.C
+ 7e83242383b1a0a25c76378db05ce87c  gcc/testsuite/g++.target/aarch64/sve/cond_bic_1.C
+ 3a6550fea2a0329eec671826e8834586  gcc/testsuite/g++.target/aarch64/sve/cond_bic_2.C
+ 3ce1abb44dd48bbe624752bcf6fec194  gcc/testsuite/g++.target/aarch64/sve/cond_bic_3.C
+ a6e5997407db108284d60a84abf919a1  gcc/testsuite/g++.target/aarch64/sve/cond_bic_4.C
+ 08b3e06a8d8891d69548b707a5cd51b3  gcc/testsuite/g++.target/aarch64/sve/cond_mla_1.C
+ ca57293de42bf04aed22e66f85797112  gcc/testsuite/g++.target/aarch64/sve/cond_mla_2.C
+ 134d67b246d82844add02a8a4ffba36f  gcc/testsuite/g++.target/aarch64/sve/cond_mla_3.C
+ be187251c59e6dc0b26a57432fc68c7c  gcc/testsuite/g++.target/aarch64/sve/cond_mla_4.C
+ 930e15115f0476d00b8dd99819b01de5  gcc/testsuite/g++.target/aarch64/sve/cond_mla_5.C
+ f7209577cd6a619ff7c355983c2a2756  gcc/testsuite/g++.target/aarch64/sve/cond_mls_1.C
+ c722dfaaeffef619dd6e5580d5dc11a9  gcc/testsuite/g++.target/aarch64/sve/cond_mls_2.C
+ c050c9b77de2dd290692900a5e7ac94b  gcc/testsuite/g++.target/aarch64/sve/cond_mls_3.C
+ cfcb15a11c43ba23143487af1421fea1  gcc/testsuite/g++.target/aarch64/sve/cond_mls_4.C
+ 9ee169ec99f2b5478698063a39233c9b  gcc/testsuite/g++.target/aarch64/sve/cond_mls_5.C
+ 699a8eda308ce04d6bac0c7e965c5c20  gcc/testsuite/g++.target/aarch64/sve/cond_shift_1.C
+ 76352f3e12ab8e5946754c63b7e0360b  gcc/testsuite/g++.target/aarch64/sve/cond_shift_2.C
+ 7684cb65d15eebfe4c63065380e70cf8  gcc/testsuite/g++.target/aarch64/sve/cond_shift_3.C
+ cdabe3aee66dacd2306a52f295e6ad65  gcc/testsuite/g++.target/aarch64/sve/cond_shift_4.C
  8f4fd9eaf21a37867e1a2707dd4c55ff  gcc/testsuite/g++.target/aarch64/sve/const_pred_1.C
  420dc885d52b3e17151a1b0a15ce1f69  gcc/testsuite/g++.target/aarch64/sve/const_pred_2.C
  2dba13f0e9fa8960c67039c6e7e63f04  gcc/testsuite/g++.target/aarch64/sve/const_pred_3.C
*************** c899089ca792c1e83b415a8d10ab78a1  gcc/te
*** 26992,27011 ****
  f3ce91773bd0b4a3127c481ccd50f20e  gcc/testsuite/g++.target/aarch64/sve/dup_sel_4.C
  88995b2addb79f14a72ba650d83a3920  gcc/testsuite/g++.target/aarch64/sve/dup_sel_5.C
  9e6f261244b524db00958d47111eef62  gcc/testsuite/g++.target/aarch64/sve/dup_sel_6.C
! 60ab87d7242254a4d2d15c17e64879ce  gcc/testsuite/g++.target/aarch64/sve/pr96974.C
  6979d0ef19d61a437acf8559362a5af8  gcc/testsuite/g++.target/aarch64/sve/pr99813.C
  221b0724e04f13318fe418921311ae33  gcc/testsuite/g++.target/aarch64/sve/tls_2.C
  7d111b2af4cdd362d19027877d6ff20b  gcc/testsuite/g++.target/aarch64/sve/vcond_1.C
  aa928203aafdb1f6793fe73d77390fc9  gcc/testsuite/g++.target/aarch64/sve/vcond_1_run.C
! c4db82f4b6429b3c21f34c1a33a5a196  gcc/testsuite/g++.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp
! 025446347904ff44c5c393582c825b57  gcc/testsuite/g++.target/arm/arm.exp
  99b5cde1aa5ba8d3c40ce3af92ef40f5  gcc/testsuite/g++.target/arm/bfloat_cpp_typecheck.C
  e64278e516f7ebae5481e326b54f28dd  gcc/testsuite/g++.target/arm/cde_mve.C
! 2cb2007d989541ae9af09a86c886f1fb  gcc/testsuite/g++.target/arm/mve.exp
! 739abe94807464b66c9484720789acb1  gcc/testsuite/g++.target/arm/no_unique_address_1.C
! 0437fd022b0aa45608be73a65770e277  gcc/testsuite/g++.target/arm/no_unique_address_2.C
  86ce099311b8a462979885c1f82c41db  gcc/testsuite/g++.target/arm/pr81497.C
! bac47f3af32181c35f06a84f9b24d820  gcc/testsuite/g++.target/arm/pr95726.C
  af3c38f63117225abea203946d38310c  gcc/testsuite/g++.target/i386/avx-check.h
  0c5eaeccd7cb858b14466a66a9848484  gcc/testsuite/g++.target/i386/avx-os-support.h
  d01c52e5837b17bc9fa153504ea3aaff  gcc/testsuite/g++.target/i386/avx-pr54700-1.C
--- 29260,29287 ----
  f3ce91773bd0b4a3127c481ccd50f20e  gcc/testsuite/g++.target/aarch64/sve/dup_sel_4.C
  88995b2addb79f14a72ba650d83a3920  gcc/testsuite/g++.target/aarch64/sve/dup_sel_5.C
  9e6f261244b524db00958d47111eef62  gcc/testsuite/g++.target/aarch64/sve/dup_sel_6.C
! 57a0aa7896383cbb0273342d58a4a7b5  gcc/testsuite/g++.target/aarch64/sve/max_1.C
! ab6c5e333d0a740ae5ecff69966813a2  gcc/testsuite/g++.target/aarch64/sve/min_1.C
! 032fe0d5fa79aaf6c36c32fb19a50c00  gcc/testsuite/g++.target/aarch64/sve/pr96974.C
! 6c0e94c363caf9e62df35ea98b4918ed  gcc/testsuite/g++.target/aarch64/sve/pr98177-1.C
! e64000c150bb204c31dca884ee33dd4f  gcc/testsuite/g++.target/aarch64/sve/pr98177-2.C
! 93beeb2f54f185bcaa9bbc741e3969f0  gcc/testsuite/g++.target/aarch64/sve/pr99216.C
! 7a3f6881450cc6c3e64742a99fe7ce38  gcc/testsuite/g++.target/aarch64/sve/pr99766.C
! 2593683d9c7386135d4e8b8ef8a59b7a  gcc/testsuite/g++.target/aarch64/sve/pr99781.C
  6979d0ef19d61a437acf8559362a5af8  gcc/testsuite/g++.target/aarch64/sve/pr99813.C
  221b0724e04f13318fe418921311ae33  gcc/testsuite/g++.target/aarch64/sve/tls_2.C
  7d111b2af4cdd362d19027877d6ff20b  gcc/testsuite/g++.target/aarch64/sve/vcond_1.C
  aa928203aafdb1f6793fe73d77390fc9  gcc/testsuite/g++.target/aarch64/sve/vcond_1_run.C
! d781f46d1e9b4baf743fb70810f6fa6a  gcc/testsuite/g++.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp
! 6641cdc36ed7b63701fe0ef5214d218e  gcc/testsuite/g++.target/arm/arm.exp
  99b5cde1aa5ba8d3c40ce3af92ef40f5  gcc/testsuite/g++.target/arm/bfloat_cpp_typecheck.C
  e64278e516f7ebae5481e326b54f28dd  gcc/testsuite/g++.target/arm/cde_mve.C
! 205ccdefdbb3b9b53e0013ab1c5146c0  gcc/testsuite/g++.target/arm/mve.exp
! fefb1ea34abe2e49510cd8293f8c14e5  gcc/testsuite/g++.target/arm/no_unique_address_1.C
! bb7292912fa6d506586421d0df58412b  gcc/testsuite/g++.target/arm/no_unique_address_2.C
  86ce099311b8a462979885c1f82c41db  gcc/testsuite/g++.target/arm/pr81497.C
! c66ac2233f3efac56ec64b9294b3708d  gcc/testsuite/g++.target/arm/pr95726.C
! 881bcc41183f756e0d7cbda13b2b51df  gcc/testsuite/g++.target/arm/pr99593.C
  af3c38f63117225abea203946d38310c  gcc/testsuite/g++.target/i386/avx-check.h
  0c5eaeccd7cb858b14466a66a9848484  gcc/testsuite/g++.target/i386/avx-os-support.h
  d01c52e5837b17bc9fa153504ea3aaff  gcc/testsuite/g++.target/i386/avx-pr54700-1.C
*************** a4d5da9937e99905b3690c88b7431aa7  gcc/te
*** 27013,27020 ****
  16aa802b1a9f81b592b5893f84f37c44  gcc/testsuite/g++.target/i386/avx2-check.h
  074d2a8f9ad1c4fb9c585d003bcc655f  gcc/testsuite/g++.target/i386/avx2-pr54700-1.C
  c89f1a3e08d60ec31255e6ecadfed12e  gcc/testsuite/g++.target/i386/avx2-pr54700-2.C
  7a33fea3b2ecb10736e762b211f6ae42  gcc/testsuite/g++.target/i386/crc32-4.C
! 3cf0dd28d3906c410780e04e2531ed68  gcc/testsuite/g++.target/i386/i386.exp
  0ec10c6dd8c46db7332b15201fba84ba  gcc/testsuite/g++.target/i386/m128-check.h
  a1f73425439294ed2e5c470eb6a67f31  gcc/testsuite/g++.target/i386/m256-check.h
  d9283642c1e353810c049d439e8f3c60  gcc/testsuite/g++.target/i386/mv1.C
--- 29289,29305 ----
  16aa802b1a9f81b592b5893f84f37c44  gcc/testsuite/g++.target/i386/avx2-check.h
  074d2a8f9ad1c4fb9c585d003bcc655f  gcc/testsuite/g++.target/i386/avx2-pr54700-1.C
  c89f1a3e08d60ec31255e6ecadfed12e  gcc/testsuite/g++.target/i386/avx2-pr54700-2.C
+ 734b3ce37270b7f5daf230629716c5c2  gcc/testsuite/g++.target/i386/avx512bw-pr96246-1.C
+ 2caa88a24107fa33264fd116f453ae5e  gcc/testsuite/g++.target/i386/avx512bw-pr96246-2.C
+ 4a44f470ea24c20123902146bd5273ad  gcc/testsuite/g++.target/i386/avx512bw-pr98537-1.C
+ 3ec2a7fddbb432f8b259b0ada49c99a8  gcc/testsuite/g++.target/i386/avx512f-helper.h
+ cbe0c3947d51802a4bf66ce01377fb64  gcc/testsuite/g++.target/i386/avx512f-pr96891-1.C
+ c174ff7705931b0de0e317387956baa9  gcc/testsuite/g++.target/i386/avx512vl-pr96246-1.C
+ 989085cee5b240a6124a1eb805392cfd  gcc/testsuite/g++.target/i386/avx512vl-pr96246-2.C
+ 4b4064fa7873d4cb7157ac2a64b60aa1  gcc/testsuite/g++.target/i386/avx512vl-pr98537-1.C
+ 6fb49c93f0095a942a2bf1dd276425d5  gcc/testsuite/g++.target/i386/avx512vl-pr98537-2.C
  7a33fea3b2ecb10736e762b211f6ae42  gcc/testsuite/g++.target/i386/crc32-4.C
! d9e69c3fbb0935ee7e83bf287faa8455  gcc/testsuite/g++.target/i386/i386.exp
  0ec10c6dd8c46db7332b15201fba84ba  gcc/testsuite/g++.target/i386/m128-check.h
  a1f73425439294ed2e5c470eb6a67f31  gcc/testsuite/g++.target/i386/m256-check.h
  d9283642c1e353810c049d439e8f3c60  gcc/testsuite/g++.target/i386/mv1.C
*************** d7d81744846ecefe8f7677db1eb870be  gcc/te
*** 27026,27032 ****
  7bd56e010086961d6b148fa238972ab3  gcc/testsuite/g++.target/i386/mv13.C
  51ba34bcfd4aa85e44bfffe933c6081a  gcc/testsuite/g++.target/i386/mv14.C
  fd2faa1ce293884909e71ac1de0fa72f  gcc/testsuite/g++.target/i386/mv15.C
! 2b6d12ce72d5d744bbd49e7916e0fa39  gcc/testsuite/g++.target/i386/mv16.C
  5d29a5380a7809fd409e2a8fbce62e46  gcc/testsuite/g++.target/i386/mv17.C
  fefb95a7923263c40f6ccbf9f5345d5e  gcc/testsuite/g++.target/i386/mv18.C
  2020e957a2dbc426e1e4a2974db97293  gcc/testsuite/g++.target/i386/mv19.C
--- 29311,29317 ----
  7bd56e010086961d6b148fa238972ab3  gcc/testsuite/g++.target/i386/mv13.C
  51ba34bcfd4aa85e44bfffe933c6081a  gcc/testsuite/g++.target/i386/mv14.C
  fd2faa1ce293884909e71ac1de0fa72f  gcc/testsuite/g++.target/i386/mv15.C
! 0949ffb5d1b695e462fbb444422e1c6f  gcc/testsuite/g++.target/i386/mv16.C
  5d29a5380a7809fd409e2a8fbce62e46  gcc/testsuite/g++.target/i386/mv17.C
  fefb95a7923263c40f6ccbf9f5345d5e  gcc/testsuite/g++.target/i386/mv18.C
  2020e957a2dbc426e1e4a2974db97293  gcc/testsuite/g++.target/i386/mv19.C
*************** bc255ba4628b94d5377f0ba915ad26da  gcc/te
*** 27040,27045 ****
--- 29325,29331 ----
  c3abd0fb44ca490064aaa6988814d40c  gcc/testsuite/g++.target/i386/mv26.C
  203c2fb05767e713a362682a2dcedfc7  gcc/testsuite/g++.target/i386/mv27.C
  015182fced49b5ec2160104b1e1fcfd5  gcc/testsuite/g++.target/i386/mv28.C
+ dac0893381524d0f9aaec2e84e62637f  gcc/testsuite/g++.target/i386/mv29.C
  bad9a677892adffe2c45653797aad55c  gcc/testsuite/g++.target/i386/mv3.C
  253207ecb3f4d04076efa9253026fa4c  gcc/testsuite/g++.target/i386/mv4.C
  dc39143004995c38b524d1b929c9c96c  gcc/testsuite/g++.target/i386/mv5.C
*************** b36d1f7d78bc796a0f4968f5bb51711a  gcc/te
*** 27078,27098 ****
  ce4ef4a52cb8cca61d3ad37ccd43c5c3  gcc/testsuite/g++.target/i386/pr93828.C
  706d6ce9a5089e7aa1faffbd83f7723b  gcc/testsuite/g++.target/i386/pr94046-1.C
  9d95623392a0cfa69554963dbae983f2  gcc/testsuite/g++.target/i386/pr94046-2.C
! 3149dd0884ee10a0876d7743a659b70e  gcc/testsuite/g++.target/i386/pr94185.C
  bdb455b2331ad2932c1fc9e92219df39  gcc/testsuite/g++.target/i386/pr97054.C
  12b9e7025b922a770edbd85b09d3b099  gcc/testsuite/g++.target/i386/pr98847.C
  a621b799eff193996043d9d5462e5c27  gcc/testsuite/g++.target/i386/sse4_1-check.h
  821d1f6cc7812ffc5220fc45c484c00f  gcc/testsuite/g++.target/i386/sse4_1-pr54700-1.C
  05e47f652ea4bc7c8df9bae20aaaa2b4  gcc/testsuite/g++.target/i386/sse4_1-pr54700-2.C
  5848d6741a53192ff50fe53e91b24df1  gcc/testsuite/g++.target/nios2/hello-pie.C
! cf299fb8efec54c0218258732856b164  gcc/testsuite/g++.target/nios2/nios2.exp
! 2befd7b6b3b422b64609deed67a6306d  gcc/testsuite/g++.target/powerpc/powerpc.exp
  63b698681e4a076eb88feccb3e6373df  gcc/testsuite/g++.target/powerpc/pr94707-1.C
  75c93ba90b3ca18a6d5c5264e2816651  gcc/testsuite/g++.target/powerpc/pr94707-2.C
  a63f2ade84bc38838f3986dfc4bc9d85  gcc/testsuite/g++.target/powerpc/pr94707-3.C
  e1ba72e4820ed6fee0a19c482579539a  gcc/testsuite/g++.target/powerpc/pr94707-4.C
  3a43ed7b11c1baf0bdf8cc9925427947  gcc/testsuite/g++.target/powerpc/pr94707-5.C
  229f6b2d39c1c51f9eb5681c67c35091  gcc/testsuite/g++.target/powerpc/pr94707-6.C
  4aa850893daf75099b810c7d79530d83  gcc/testsuite/g++.target/powerpc/pr99041.C
  fb915623fe5d0c1208c53c6de33e722a  gcc/testsuite/g++.target/powerpc/undef-bool-3.C
  84541f8edc35b61b62256dbd71b731b8  gcc/testsuite/g++.target/riscv/call-with-empty-struct-float.C
--- 29364,29391 ----
  ce4ef4a52cb8cca61d3ad37ccd43c5c3  gcc/testsuite/g++.target/i386/pr93828.C
  706d6ce9a5089e7aa1faffbd83f7723b  gcc/testsuite/g++.target/i386/pr94046-1.C
  9d95623392a0cfa69554963dbae983f2  gcc/testsuite/g++.target/i386/pr94046-2.C
! ba6d7ab9bcf9d2c19d1b8ac3ed405800  gcc/testsuite/g++.target/i386/pr94185.C
! 64e33a95d43ea5ee0af2cfdcb318bf00  gcc/testsuite/g++.target/i386/pr95229.C
  bdb455b2331ad2932c1fc9e92219df39  gcc/testsuite/g++.target/i386/pr97054.C
  12b9e7025b922a770edbd85b09d3b099  gcc/testsuite/g++.target/i386/pr98847.C
+ eafc363e633aef7542e621d7ecaa914e  gcc/testsuite/g++.target/i386/pr99108.C
+ 3660db29974db1f63f1a1f458c8894db  gcc/testsuite/g++.target/i386/pr99679-1.C
+ b3fdfe2866e1905292894d815f1fa291  gcc/testsuite/g++.target/i386/pr99679-2.C
  a621b799eff193996043d9d5462e5c27  gcc/testsuite/g++.target/i386/sse4_1-check.h
  821d1f6cc7812ffc5220fc45c484c00f  gcc/testsuite/g++.target/i386/sse4_1-pr54700-1.C
  05e47f652ea4bc7c8df9bae20aaaa2b4  gcc/testsuite/g++.target/i386/sse4_1-pr54700-2.C
+ 436543179ef45c1a7c596bfa70c8ef1d  gcc/testsuite/g++.target/msp430/data-attributes.C
+ 105ca4af68fcc0dddd766a75cb581d3b  gcc/testsuite/g++.target/msp430/msp430.exp
  5848d6741a53192ff50fe53e91b24df1  gcc/testsuite/g++.target/nios2/hello-pie.C
! b3b6e31577bc973ad6e12e7336213059  gcc/testsuite/g++.target/nios2/nios2.exp
! fa8aa783bcf6fa703e7e93442b148996  gcc/testsuite/g++.target/powerpc/powerpc.exp
  63b698681e4a076eb88feccb3e6373df  gcc/testsuite/g++.target/powerpc/pr94707-1.C
  75c93ba90b3ca18a6d5c5264e2816651  gcc/testsuite/g++.target/powerpc/pr94707-2.C
  a63f2ade84bc38838f3986dfc4bc9d85  gcc/testsuite/g++.target/powerpc/pr94707-3.C
  e1ba72e4820ed6fee0a19c482579539a  gcc/testsuite/g++.target/powerpc/pr94707-4.C
  3a43ed7b11c1baf0bdf8cc9925427947  gcc/testsuite/g++.target/powerpc/pr94707-5.C
  229f6b2d39c1c51f9eb5681c67c35091  gcc/testsuite/g++.target/powerpc/pr94707-6.C
+ a71a068de2c137d6ff37cfba20e45e06  gcc/testsuite/g++.target/powerpc/pr97947.C
  4aa850893daf75099b810c7d79530d83  gcc/testsuite/g++.target/powerpc/pr99041.C
  fb915623fe5d0c1208c53c6de33e722a  gcc/testsuite/g++.target/powerpc/undef-bool-3.C
  84541f8edc35b61b62256dbd71b731b8  gcc/testsuite/g++.target/riscv/call-with-empty-struct-float.C
*************** fb915623fe5d0c1208c53c6de33e722a  gcc/te
*** 27101,27112 ****
  bda24fd764e95be6398892d48adf8be7  gcc/testsuite/g++.target/riscv/frflags.C
  4c45e102d6dd19ee08a476904b64542d  gcc/testsuite/g++.target/riscv/pr96759.C
  ac37e529bda1269045c3681cc4b425dd  gcc/testsuite/g++.target/riscv/pr97682.C
! cc3d65ef1611bfdbd9239932d1d5a246  gcc/testsuite/g++.target/riscv/riscv.exp
  63c9cacf807bdee09a1606a202373f30  gcc/testsuite/g++.target/s390/pr94704-1.C
  f536562eba9a9954ace3a616ac52f438  gcc/testsuite/g++.target/s390/pr94704-2.C
  673a3b45283bd1b872f1b198781a14a3  gcc/testsuite/g++.target/s390/pr94704-3.C
  0a3c74a94606c9870a40fec1d0577aa8  gcc/testsuite/g++.target/s390/pr94704-4.C
! bdcecdf9ad7dd87d004284feab172bb4  gcc/testsuite/g++.target/s390/s390.exp
  ab411a7e60cfec57473a2cab3ecc3197  gcc/testsuite/gcc.c-torture/ChangeLog.0
  84740fd4194274c1fbddfa5575623a40  gcc/testsuite/gcc.c-torture/compat/strct-layout.c
  3bb9d56b7cd137b146d286534c43ff8c  gcc/testsuite/gcc.c-torture/compat/struct-align.c
--- 29394,29408 ----
  bda24fd764e95be6398892d48adf8be7  gcc/testsuite/g++.target/riscv/frflags.C
  4c45e102d6dd19ee08a476904b64542d  gcc/testsuite/g++.target/riscv/pr96759.C
  ac37e529bda1269045c3681cc4b425dd  gcc/testsuite/g++.target/riscv/pr97682.C
! 27530d4b7acf9021544916f3300ffbe1  gcc/testsuite/g++.target/riscv/riscv.exp
  63c9cacf807bdee09a1606a202373f30  gcc/testsuite/g++.target/s390/pr94704-1.C
  f536562eba9a9954ace3a616ac52f438  gcc/testsuite/g++.target/s390/pr94704-2.C
  673a3b45283bd1b872f1b198781a14a3  gcc/testsuite/g++.target/s390/pr94704-3.C
  0a3c74a94606c9870a40fec1d0577aa8  gcc/testsuite/g++.target/s390/pr94704-4.C
! c0aa169f53b6c831c9c42b449fec63b6  gcc/testsuite/g++.target/s390/pr98722.C
! 182cb3ea97d85a56bc3010b65ebcb2a0  gcc/testsuite/g++.target/s390/s390.exp
! f53fd3b921a5138fb5d1fa0708eecb01  gcc/testsuite/g++.target/xtensa/pr95571.C
! 3c06ffa92768f174ce56001fc4b33e43  gcc/testsuite/g++.target/xtensa/xtensa.exp
  ab411a7e60cfec57473a2cab3ecc3197  gcc/testsuite/gcc.c-torture/ChangeLog.0
  84740fd4194274c1fbddfa5575623a40  gcc/testsuite/gcc.c-torture/compat/strct-layout.c
  3bb9d56b7cd137b146d286534c43ff8c  gcc/testsuite/gcc.c-torture/compat/struct-align.c
*************** cbe67a4212b7d85b023f62848033fa31  gcc/te
*** 27889,27894 ****
--- 30185,30198 ----
  2686caedfece44eebd26639e72abcc2a  gcc/testsuite/gcc.c-torture/compile/as.c
  321496eed48efe49415b2ae94d72a5e5  gcc/testsuite/gcc.c-torture/compile/ase.c
  7f1bd05b409cd463e690dde1e88b8d88  gcc/testsuite/gcc.c-torture/compile/asmgoto-1.c
+ 18a637c4aa993d567f93a8a02756d1c8  gcc/testsuite/gcc.c-torture/compile/asmgoto-2.c
+ 1dc09506975eee8e6b4451c77c2ca0f5  gcc/testsuite/gcc.c-torture/compile/asmgoto-3.c
+ 44775d2c2c8031eaffd51797729f6b78  gcc/testsuite/gcc.c-torture/compile/asmgoto-4.c
+ 22f5be5aa586df70b0fd5248cd64def3  gcc/testsuite/gcc.c-torture/compile/asmgoto-5.c
+ 0bbe13cb510a94a6ade32456423b2799  gcc/testsuite/gcc.c-torture/compile/attr-retain-1.c
+ ac0d75a26dbd7b82fa02ab4f5c265b75  gcc/testsuite/gcc.c-torture/compile/attr-retain-2.c
+ 16c9fd8e3aabf68056e65c3fde97fd4c  gcc/testsuite/gcc.c-torture/compile/attr-used-retain-1.c
+ e9afcf78aba1d501c2099075165c0f26  gcc/testsuite/gcc.c-torture/compile/attr-used-retain-2.c
  4f3a6a3945ac2d0657452e368e414b3b  gcc/testsuite/gcc.c-torture/compile/b.c
  d351eb0aef889fc366a8342f32ae1358  gcc/testsuite/gcc.c-torture/compile/b1.c
  b33b87bd4fa8d4bfab27492de9998c37  gcc/testsuite/gcc.c-torture/compile/b2.c
*************** f5766202f628b43d0fac0910adc0eecb  gcc/te
*** 27940,27946 ****
  2db408a5885d812f5975ff6d22d8deb5  gcc/testsuite/gcc.c-torture/compile/cn1.c
  6bc0454ef3b51ee1abf897438c9d20f8  gcc/testsuite/gcc.c-torture/compile/comb.c
  646c27d881cf11bdfb63a423ffd3b604  gcc/testsuite/gcc.c-torture/compile/combine-hang.c
! 119615f6cb0e0d0fff1ba70235cb74f1  gcc/testsuite/gcc.c-torture/compile/compile.exp
  a87e64aae03ac41e010753e916d8ee6d  gcc/testsuite/gcc.c-torture/compile/complex-1.c
  9d993598ddcfa7b7cd841fe5a114cec2  gcc/testsuite/gcc.c-torture/compile/complex-2.c
  e78988c1feb46a12813cd47feaaab89f  gcc/testsuite/gcc.c-torture/compile/complex-3.c
--- 30244,30250 ----
  2db408a5885d812f5975ff6d22d8deb5  gcc/testsuite/gcc.c-torture/compile/cn1.c
  6bc0454ef3b51ee1abf897438c9d20f8  gcc/testsuite/gcc.c-torture/compile/comb.c
  646c27d881cf11bdfb63a423ffd3b604  gcc/testsuite/gcc.c-torture/compile/combine-hang.c
! 451f766d8a3473c5d2e6fb8c4e975633  gcc/testsuite/gcc.c-torture/compile/compile.exp
  a87e64aae03ac41e010753e916d8ee6d  gcc/testsuite/gcc.c-torture/compile/complex-1.c
  9d993598ddcfa7b7cd841fe5a114cec2  gcc/testsuite/gcc.c-torture/compile/complex-2.c
  e78988c1feb46a12813cd47feaaab89f  gcc/testsuite/gcc.c-torture/compile/complex-3.c
*************** dfbc2317c7fa9d675ee5c2302422d2b6  gcc/te
*** 28032,28038 ****
  fe23d373fefbb1f73641cf2629aafdf5  gcc/testsuite/gcc.c-torture/compile/limits-enumconst.c
  afe4aef5d3378c3de0bf57047eb44e18  gcc/testsuite/gcc.c-torture/compile/limits-exprparen.c
  5b7186b86538dc952f4c95318fdce09c  gcc/testsuite/gcc.c-torture/compile/limits-externalid.c
! 83f6a4b3c5dc3a1630f4f80b6a3809e4  gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c
  36d72264f5e696b511dde1637d841085  gcc/testsuite/gcc.c-torture/compile/limits-fnargs.c
  55cfdb5990e20b1be0681fb2deba1a7e  gcc/testsuite/gcc.c-torture/compile/limits-fndefn.c
  e654525b67ca3025d522d3690364a827  gcc/testsuite/gcc.c-torture/compile/limits-idexternal.c
--- 30336,30342 ----
  fe23d373fefbb1f73641cf2629aafdf5  gcc/testsuite/gcc.c-torture/compile/limits-enumconst.c
  afe4aef5d3378c3de0bf57047eb44e18  gcc/testsuite/gcc.c-torture/compile/limits-exprparen.c
  5b7186b86538dc952f4c95318fdce09c  gcc/testsuite/gcc.c-torture/compile/limits-externalid.c
! 7f007616a05afcbae38d8344cd9cbeb5  gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c
  36d72264f5e696b511dde1637d841085  gcc/testsuite/gcc.c-torture/compile/limits-fnargs.c
  55cfdb5990e20b1be0681fb2deba1a7e  gcc/testsuite/gcc.c-torture/compile/limits-fndefn.c
  e654525b67ca3025d522d3690364a827  gcc/testsuite/gcc.c-torture/compile/limits-idexternal.c
*************** e18e20f5d0041343d6eca71244c570eb  gcc/te
*** 28423,28429 ****
  23de553c5cbe4727f60b7b0172595dd6  gcc/testsuite/gcc.c-torture/compile/pr42705.c
  4057522a64c58df2b5da6602273218c5  gcc/testsuite/gcc.c-torture/compile/pr42708-1.c
  dd407e8c07f6548bb5efc0dce1455f68  gcc/testsuite/gcc.c-torture/compile/pr42716.c
! 79c510d28f77e0f6c430fc1784531aa5  gcc/testsuite/gcc.c-torture/compile/pr42717.c
  cee69619caa9666102d6672ef44dc238  gcc/testsuite/gcc.c-torture/compile/pr42730.c
  ecb5439125a9127a3294acfa7d2780f4  gcc/testsuite/gcc.c-torture/compile/pr42749.c
  c5120bf1af38535196ef2bde7295a8b2  gcc/testsuite/gcc.c-torture/compile/pr42927.c
--- 30727,30733 ----
  23de553c5cbe4727f60b7b0172595dd6  gcc/testsuite/gcc.c-torture/compile/pr42705.c
  4057522a64c58df2b5da6602273218c5  gcc/testsuite/gcc.c-torture/compile/pr42708-1.c
  dd407e8c07f6548bb5efc0dce1455f68  gcc/testsuite/gcc.c-torture/compile/pr42716.c
! cc02982a768ef376bb5b625c481ada2e  gcc/testsuite/gcc.c-torture/compile/pr42717.c
  cee69619caa9666102d6672ef44dc238  gcc/testsuite/gcc.c-torture/compile/pr42730.c
  ecb5439125a9127a3294acfa7d2780f4  gcc/testsuite/gcc.c-torture/compile/pr42749.c
  c5120bf1af38535196ef2bde7295a8b2  gcc/testsuite/gcc.c-torture/compile/pr42927.c
*************** c603dfcc25939709bf17b345d5803b57  gcc/te
*** 28609,28614 ****
--- 30913,30920 ----
  88d17f371159d937d3b28f12cfe981f9  gcc/testsuite/gcc.c-torture/compile/pr58343.c
  d8d774512f5c54747a271b1747b00907  gcc/testsuite/gcc.c-torture/compile/pr58344.c
  aed52c33f2d115ba3a26be3745e0fbce  gcc/testsuite/gcc.c-torture/compile/pr58775.c
+ a4dc37be64069f61ae856b05ea036acb  gcc/testsuite/gcc.c-torture/compile/pr58901-0.c
+ 4ccb19f8afa350b23638c34426ab172f  gcc/testsuite/gcc.c-torture/compile/pr58901-1.c
  c9a5adeac50f275b83c75e39d16b3d71  gcc/testsuite/gcc.c-torture/compile/pr58946.c
  571c52faa25d3608854e219ebf69b6af  gcc/testsuite/gcc.c-torture/compile/pr58970-1.c
  f37bac81441c991f1d44253a46743598  gcc/testsuite/gcc.c-torture/compile/pr58970-2.c
*************** d47d48bc5d0479f66961edb27b343038  gcc/te
*** 28637,28643 ****
  536212210d5a7e3242586a0b99ad2fd0  gcc/testsuite/gcc.c-torture/compile/pr61159.c
  9463b77ac06a55b7d4a912e2b3389cc1  gcc/testsuite/gcc.c-torture/compile/pr61222-1.c
  e2006840cb2c2f8c11c42c49fd948263  gcc/testsuite/gcc.c-torture/compile/pr61222-2.c
! 60eaa4587246fc369c09efb11175ba7b  gcc/testsuite/gcc.c-torture/compile/pr61684.c
  4911986338db4a40f38685a96d77ae91  gcc/testsuite/gcc.c-torture/compile/pr61848.c
  7852df38c2c35b0607814110b63dad40  gcc/testsuite/gcc.c-torture/compile/pr62312.c
  38017a7b7046101f1f7e251a44c87e50  gcc/testsuite/gcc.c-torture/compile/pr63282.c
--- 30943,30949 ----
  536212210d5a7e3242586a0b99ad2fd0  gcc/testsuite/gcc.c-torture/compile/pr61159.c
  9463b77ac06a55b7d4a912e2b3389cc1  gcc/testsuite/gcc.c-torture/compile/pr61222-1.c
  e2006840cb2c2f8c11c42c49fd948263  gcc/testsuite/gcc.c-torture/compile/pr61222-2.c
! eb9a44bf10d9af818d3d8df7abc434ba  gcc/testsuite/gcc.c-torture/compile/pr61684.c
  4911986338db4a40f38685a96d77ae91  gcc/testsuite/gcc.c-torture/compile/pr61848.c
  7852df38c2c35b0607814110b63dad40  gcc/testsuite/gcc.c-torture/compile/pr62312.c
  38017a7b7046101f1f7e251a44c87e50  gcc/testsuite/gcc.c-torture/compile/pr63282.c
*************** e0d6dae3e4ec80a7af59c5a2351d64cd  gcc/te
*** 28681,28687 ****
  37c76943f2ee5558a09545bc1b17b89d  gcc/testsuite/gcc.c-torture/compile/pr70355.c
  86500b6aaf9f75325f0cad332855ed1b  gcc/testsuite/gcc.c-torture/compile/pr70633.c
  6aa2a7d0fe94be24238130841efe702b  gcc/testsuite/gcc.c-torture/compile/pr70916.c
! 5a1019493cad94310cfe0d0eea9fbcb0  gcc/testsuite/gcc.c-torture/compile/pr71109.c
  329f204bcd03c83da441493cb753c554  gcc/testsuite/gcc.c-torture/compile/pr71112.c
  25ea11998401d4aac4c189df9a53715b  gcc/testsuite/gcc.c-torture/compile/pr71272.c
  5dd5f6724944ca1e08ed8793f7052be3  gcc/testsuite/gcc.c-torture/compile/pr71295.c
--- 30987,30993 ----
  37c76943f2ee5558a09545bc1b17b89d  gcc/testsuite/gcc.c-torture/compile/pr70355.c
  86500b6aaf9f75325f0cad332855ed1b  gcc/testsuite/gcc.c-torture/compile/pr70633.c
  6aa2a7d0fe94be24238130841efe702b  gcc/testsuite/gcc.c-torture/compile/pr70916.c
! 3a7ef784565bfc2f1fffd2117b711d9a  gcc/testsuite/gcc.c-torture/compile/pr71109.c
  329f204bcd03c83da441493cb753c554  gcc/testsuite/gcc.c-torture/compile/pr71112.c
  25ea11998401d4aac4c189df9a53715b  gcc/testsuite/gcc.c-torture/compile/pr71272.c
  5dd5f6724944ca1e08ed8793f7052be3  gcc/testsuite/gcc.c-torture/compile/pr71295.c
*************** a08af5da6dce88ef7b897f14c7b60b04  gcc/te
*** 28744,28750 ****
  cf75d7c413d3d683bf4554c4893b52b8  gcc/testsuite/gcc.c-torture/compile/pr82875.c
  c0e8c2714ac70d507f78a1178adf86cd  gcc/testsuite/gcc.c-torture/compile/pr82879.c
  27e740102c35556b9e44b4dca0223a85  gcc/testsuite/gcc.c-torture/compile/pr82913.c
! 959a1f6ee99272eaebe65620d3ee1875  gcc/testsuite/gcc.c-torture/compile/pr83051-2.c
  7836a61d000aaaa21cb999e1d2d86bfa  gcc/testsuite/gcc.c-torture/compile/pr83051.c
  5eda9df2bbaeab95e5faf93c4ce3be6e  gcc/testsuite/gcc.c-torture/compile/pr83069.c
  3548758183b01e15047e314437b617fe  gcc/testsuite/gcc.c-torture/compile/pr83104.c
--- 31050,31056 ----
  cf75d7c413d3d683bf4554c4893b52b8  gcc/testsuite/gcc.c-torture/compile/pr82875.c
  c0e8c2714ac70d507f78a1178adf86cd  gcc/testsuite/gcc.c-torture/compile/pr82879.c
  27e740102c35556b9e44b4dca0223a85  gcc/testsuite/gcc.c-torture/compile/pr82913.c
! 5d0467079bb8f8d3020a8245cbbff662  gcc/testsuite/gcc.c-torture/compile/pr83051-2.c
  7836a61d000aaaa21cb999e1d2d86bfa  gcc/testsuite/gcc.c-torture/compile/pr83051.c
  5eda9df2bbaeab95e5faf93c4ce3be6e  gcc/testsuite/gcc.c-torture/compile/pr83069.c
  3548758183b01e15047e314437b617fe  gcc/testsuite/gcc.c-torture/compile/pr83104.c
*************** ef075b9205f28b968b8202a82de7d8d8  gcc/te
*** 28786,28793 ****
  361fbc1308c9fae317298dd7c88c44ed  gcc/testsuite/gcc.c-torture/compile/pr89399.c
  d16a0436ee4e7c019d745cad343ff18b  gcc/testsuite/gcc.c-torture/compile/pr89412.c
  7e90de04544a1d8e3c372e47c2627c60  gcc/testsuite/gcc.c-torture/compile/pr89655.c
! fc86c5909e9a80383dab6366a0f8648d  gcc/testsuite/gcc.c-torture/compile/pr89663-1.c
! d4dbf09e5eb47acf96d5130e26f84000  gcc/testsuite/gcc.c-torture/compile/pr89663-2.c
  85c74cdcb2f35d038f3606a817979061  gcc/testsuite/gcc.c-torture/compile/pr89703-1.c
  834bb0f0fe637b3f72cd75082e139b0a  gcc/testsuite/gcc.c-torture/compile/pr89703-2.c
  9e0af4f9e229aa8a0151b863c40f3072  gcc/testsuite/gcc.c-torture/compile/pr89998-1.c
--- 31092,31099 ----
  361fbc1308c9fae317298dd7c88c44ed  gcc/testsuite/gcc.c-torture/compile/pr89399.c
  d16a0436ee4e7c019d745cad343ff18b  gcc/testsuite/gcc.c-torture/compile/pr89412.c
  7e90de04544a1d8e3c372e47c2627c60  gcc/testsuite/gcc.c-torture/compile/pr89655.c
! 342a9c93bd17aa2f6e2ee789a10d35c6  gcc/testsuite/gcc.c-torture/compile/pr89663-1.c
! ae377dc5bfe4399808db661879decd39  gcc/testsuite/gcc.c-torture/compile/pr89663-2.c
  85c74cdcb2f35d038f3606a817979061  gcc/testsuite/gcc.c-torture/compile/pr89703-1.c
  834bb0f0fe637b3f72cd75082e139b0a  gcc/testsuite/gcc.c-torture/compile/pr89703-2.c
  9e0af4f9e229aa8a0151b863c40f3072  gcc/testsuite/gcc.c-torture/compile/pr89998-1.c
*************** b592aab14164964644385997ee799b46  gcc/te
*** 28825,28833 ****
--- 31131,31158 ----
  93952665a8b02a3a49c7d7c5bc5f1a97  gcc/testsuite/gcc.c-torture/compile/pr94621.c
  7dbeb8aaf9175e2573e86afe5b6d8d82  gcc/testsuite/gcc.c-torture/compile/pr94686.c
  4c276c62b7e78b13a7d3f39d5c83e159  gcc/testsuite/gcc.c-torture/compile/pr96426.c
+ 1ac24d88dcb5f92a2c7d6a682965c0c7  gcc/testsuite/gcc.c-torture/compile/pr96796.c
+ 20924a82616e145cfa02d32f61cf6d09  gcc/testsuite/gcc.c-torture/compile/pr96998.c
+ 35e9b69fa6a8536400fd234999bb050c  gcc/testsuite/gcc.c-torture/compile/pr97141.c
  9877434a52aaa17b1ab89487f9497639  gcc/testsuite/gcc.c-torture/compile/pr97144.c
+ c9ed8216d07e31f7a802eeba042e1179  gcc/testsuite/gcc.c-torture/compile/pr97205.c
+ cc5e48690516796c192d2b020ebc6353  gcc/testsuite/gcc.c-torture/compile/pr97243.c
+ e672533f0d4a6792ad60114dedbca802  gcc/testsuite/gcc.c-torture/compile/pr97576.c
+ c78cceed0dd8426d7c1d6f399fa3390e  gcc/testsuite/gcc.c-torture/compile/pr97578.c
+ 835f7a3d701aaaa1a2985c869be63315  gcc/testsuite/gcc.c-torture/compile/pr97979.c
+ 1ecd4c9d478fb14673cceb746a00bead  gcc/testsuite/gcc.c-torture/compile/pr98087.c
+ 7e0f6d7ee1c980c77417cb943e0904c4  gcc/testsuite/gcc.c-torture/compile/pr98096.c
+ 7f028828d8227d20488876d65505b284  gcc/testsuite/gcc.c-torture/compile/pr98199.c
+ f05db374223d7b2d04542e78819ebf13  gcc/testsuite/gcc.c-torture/compile/pr98229.c
+ afa209d89b66fe03aba3f459a35d2da2  gcc/testsuite/gcc.c-torture/compile/pr98256.c
+ 28b98e653090dab5f230399ac27e14fe  gcc/testsuite/gcc.c-torture/compile/pr98407.c
+ 9c331d16806e7d4210142bc26af4264e  gcc/testsuite/gcc.c-torture/compile/pr98629.c
+ 07cf3fbb05b113cd514ce6703a369179  gcc/testsuite/gcc.c-torture/compile/pr98726.c
+ cd903132649fbefa350b8179bddd0078  gcc/testsuite/gcc.c-torture/compile/pr98849.c
  96a2bedeedcefc8923dc44147661604e  gcc/testsuite/gcc.c-torture/compile/pr99225.c
  11bf664a070ad544ff6eddf359ebb9d0  gcc/testsuite/gcc.c-torture/compile/pr99324.c
+ 7e408a9bcbb29363eda9fb015d8d84f3  gcc/testsuite/gcc.c-torture/compile/pr99647.c
+ e69d829e7459addd09ce31c5321dc0c0  gcc/testsuite/gcc.c-torture/compile/pr99822.c
  c5c13bdc8c7ab97f002934f003e92b63  gcc/testsuite/gcc.c-torture/compile/pret-arg.c
  554bb1e8a9da058c129438ee67eeacaa  gcc/testsuite/gcc.c-torture/compile/pta-1.c
  ed716c1d1727fc2c748162e0cbc4ee47  gcc/testsuite/gcc.c-torture/compile/ptr-conv-1.c
*************** c9b566b9fe301689b348091c63337ef0  gcc/te
*** 29658,29664 ****
  7e6404590ac1c63073db26f5f4f6678f  gcc/testsuite/gcc.c-torture/execute/980716-1.c
  31b527163cf6da493944a59a085e42de  gcc/testsuite/gcc.c-torture/execute/980929-1.c
  f7f3690e06d26fe3df93a615f00e7bcf  gcc/testsuite/gcc.c-torture/execute/981001-1.c
! 72919ef297023e01c9289255b651b6f6  gcc/testsuite/gcc.c-torture/execute/981019-1.c
  110c0127fb9c326b19a7638dadb90dc4  gcc/testsuite/gcc.c-torture/execute/981130-1.c
  a1b902b69b18b1b8038fc0bc11d7f046  gcc/testsuite/gcc.c-torture/execute/981206-1.c
  48d49924121d8bdb210a9eb31ffb73f9  gcc/testsuite/gcc.c-torture/execute/990106-1.c
--- 31983,31989 ----
  7e6404590ac1c63073db26f5f4f6678f  gcc/testsuite/gcc.c-torture/execute/980716-1.c
  31b527163cf6da493944a59a085e42de  gcc/testsuite/gcc.c-torture/execute/980929-1.c
  f7f3690e06d26fe3df93a615f00e7bcf  gcc/testsuite/gcc.c-torture/execute/981001-1.c
! d458024a3ce484b7eeec9e940b47453e  gcc/testsuite/gcc.c-torture/execute/981019-1.c
  110c0127fb9c326b19a7638dadb90dc4  gcc/testsuite/gcc.c-torture/execute/981130-1.c
  a1b902b69b18b1b8038fc0bc11d7f046  gcc/testsuite/gcc.c-torture/execute/981206-1.c
  48d49924121d8bdb210a9eb31ffb73f9  gcc/testsuite/gcc.c-torture/execute/990106-1.c
*************** caa74354806f94b1777d3d438547d909  gcc/te
*** 29761,29767 ****
  d7d9ce89ee3d3fe0e8938f62790f051e  gcc/testsuite/gcc.c-torture/execute/builtins/abs-2.c
  1dda6f7a5d9ce23a5db5f59c430ae29e  gcc/testsuite/gcc.c-torture/execute/builtins/abs-3-lib.c
  8784d3bd9b264b3c2abfb7b7ea25ccb6  gcc/testsuite/gcc.c-torture/execute/builtins/abs-3.c
! 94c4b7dfeb2614af1a0b6c2d5601c023  gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp
  82dc8c0cc07405b06eb5eee9b43cb713  gcc/testsuite/gcc.c-torture/execute/builtins/chk.h
  f36e146a2aececdc84d9199d53a363ec  gcc/testsuite/gcc.c-torture/execute/builtins/complex-1-lib.c
  8b5a662c0134cd00115a5866e1c0b6c9  gcc/testsuite/gcc.c-torture/execute/builtins/complex-1.c
--- 32086,32092 ----
  d7d9ce89ee3d3fe0e8938f62790f051e  gcc/testsuite/gcc.c-torture/execute/builtins/abs-2.c
  1dda6f7a5d9ce23a5db5f59c430ae29e  gcc/testsuite/gcc.c-torture/execute/builtins/abs-3-lib.c
  8784d3bd9b264b3c2abfb7b7ea25ccb6  gcc/testsuite/gcc.c-torture/execute/builtins/abs-3.c
! 710ac7a18a8cdc05723de6fd00da66ec  gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp
  82dc8c0cc07405b06eb5eee9b43cb713  gcc/testsuite/gcc.c-torture/execute/builtins/chk.h
  f36e146a2aececdc84d9199d53a363ec  gcc/testsuite/gcc.c-torture/execute/builtins/complex-1-lib.c
  8b5a662c0134cd00115a5866e1c0b6c9  gcc/testsuite/gcc.c-torture/execute/builtins/complex-1.c
*************** e329c7fca0108570e81273f5b62d90e0  gcc/te
*** 29952,29958 ****
  b75081070e5d6cda7c7fa71f2652e5c4  gcc/testsuite/gcc.c-torture/execute/enum-1.c
  0de8cd8896dc35069287acffcf0cf023  gcc/testsuite/gcc.c-torture/execute/enum-2.c
  91b8922c3b6304ab6ab99942dbca6c66  gcc/testsuite/gcc.c-torture/execute/enum-3.c
! cf2cf60f6413a358f4b1cbee3089e2dd  gcc/testsuite/gcc.c-torture/execute/execute.exp
  3f877fc808f2ba680241c6f0726afdb8  gcc/testsuite/gcc.c-torture/execute/extzvsi.c
  d2dbbb18d94c0dbb1f03952bbd682bdc  gcc/testsuite/gcc.c-torture/execute/ffs-1.c
  59890cc9fc7ac6d103d95e083b353cd1  gcc/testsuite/gcc.c-torture/execute/ffs-2.c
--- 32277,32283 ----
  b75081070e5d6cda7c7fa71f2652e5c4  gcc/testsuite/gcc.c-torture/execute/enum-1.c
  0de8cd8896dc35069287acffcf0cf023  gcc/testsuite/gcc.c-torture/execute/enum-2.c
  91b8922c3b6304ab6ab99942dbca6c66  gcc/testsuite/gcc.c-torture/execute/enum-3.c
! 7732eacd0086b7602afc33b52f84ab6d  gcc/testsuite/gcc.c-torture/execute/execute.exp
  3f877fc808f2ba680241c6f0726afdb8  gcc/testsuite/gcc.c-torture/execute/extzvsi.c
  d2dbbb18d94c0dbb1f03952bbd682bdc  gcc/testsuite/gcc.c-torture/execute/ffs-1.c
  59890cc9fc7ac6d103d95e083b353cd1  gcc/testsuite/gcc.c-torture/execute/ffs-2.c
*************** e6e4bf75b7bfe776a42e2d834c668aa0  gcc/te
*** 30010,30016 ****
  987c92fc82b6f0a9fcd149cb6983020f  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-8l.c
  eda53ee18df0e1666f58ac145f30c8bc  gcc/testsuite/gcc.c-torture/execute/ieee/hugeval.c
  c8b196e822d4b979813f1d04c3197dff  gcc/testsuite/gcc.c-torture/execute/ieee/hugeval.x
! b3c7279459a434ec44b8bc32f642c7ba  gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
  becc504a322770453dcee9cedb700b2a  gcc/testsuite/gcc.c-torture/execute/ieee/inf-1.c
  455ba77f92be22cda1b657fc7de869ac  gcc/testsuite/gcc.c-torture/execute/ieee/inf-2.c
  2b23329ee0437a7e47b835bee3d9d3e1  gcc/testsuite/gcc.c-torture/execute/ieee/inf-3.c
--- 32335,32341 ----
  987c92fc82b6f0a9fcd149cb6983020f  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-8l.c
  eda53ee18df0e1666f58ac145f30c8bc  gcc/testsuite/gcc.c-torture/execute/ieee/hugeval.c
  c8b196e822d4b979813f1d04c3197dff  gcc/testsuite/gcc.c-torture/execute/ieee/hugeval.x
! 4091ab9eb641fa6f62e72a956c541e84  gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
  becc504a322770453dcee9cedb700b2a  gcc/testsuite/gcc.c-torture/execute/ieee/inf-1.c
  455ba77f92be22cda1b657fc7de869ac  gcc/testsuite/gcc.c-torture/execute/ieee/inf-2.c
  2b23329ee0437a7e47b835bee3d9d3e1  gcc/testsuite/gcc.c-torture/execute/ieee/inf-3.c
*************** d08148dfbcdf48e35ad4e101a660c58e  gcc/te
*** 30042,30048 ****
  b2ab2df25ae61fdb2695a27e3847bca4  gcc/testsuite/gcc.c-torture/execute/ieee/unsafe-fp-assoc-1.x
  82761f24b0b6519b8b92f35a92ea3ca6  gcc/testsuite/gcc.c-torture/execute/ieee/unsafe-fp-assoc.c
  ea22da05fc8da75320add456648e6527  gcc/testsuite/gcc.c-torture/execute/ifcvt-onecmpl-abs-1.c
! 0276373cd8135a78a877447ec6be5e3f  gcc/testsuite/gcc.c-torture/execute/index-1.c
  39b4709b291132e1529e9a6d8ad044e8  gcc/testsuite/gcc.c-torture/execute/inst-check.c
  faa4832387fde3461378ec0209713caf  gcc/testsuite/gcc.c-torture/execute/int-compare.c
  9d7747e1d62c3b22bb9105369b89992e  gcc/testsuite/gcc.c-torture/execute/ipa-sra-1.c
--- 32367,32373 ----
  b2ab2df25ae61fdb2695a27e3847bca4  gcc/testsuite/gcc.c-torture/execute/ieee/unsafe-fp-assoc-1.x
  82761f24b0b6519b8b92f35a92ea3ca6  gcc/testsuite/gcc.c-torture/execute/ieee/unsafe-fp-assoc.c
  ea22da05fc8da75320add456648e6527  gcc/testsuite/gcc.c-torture/execute/ifcvt-onecmpl-abs-1.c
! 6bd045962c169d3ac0d8f959dda0ffd9  gcc/testsuite/gcc.c-torture/execute/index-1.c
  39b4709b291132e1529e9a6d8ad044e8  gcc/testsuite/gcc.c-torture/execute/inst-check.c
  faa4832387fde3461378ec0209713caf  gcc/testsuite/gcc.c-torture/execute/int-compare.c
  9d7747e1d62c3b22bb9105369b89992e  gcc/testsuite/gcc.c-torture/execute/ipa-sra-1.c
*************** a1747d3f25b202a434a5b39127e8ea5f  gcc/te
*** 30101,30107 ****
  2ca880bb55d87383e26ffc8fa0112943  gcc/testsuite/gcc.c-torture/execute/nestfunc-5.c
  946aaf0b744e9e60a1b63616ecd74ab0  gcc/testsuite/gcc.c-torture/execute/nestfunc-6.c
  6896ae9f33bd0e4a4be1233cac5fdf70  gcc/testsuite/gcc.c-torture/execute/nestfunc-7.c
- 2006ab79a07dbda1acd80ca33b0dd6b6  gcc/testsuite/gcc.c-torture/execute/noinit-attribute.c
  e854bc80f793329b6c96d31e3f80a012  gcc/testsuite/gcc.c-torture/execute/p18298.c
  3c169902d628502c10f1402f266d1ce3  gcc/testsuite/gcc.c-torture/execute/packed-1.c
  800a3f99834a5cdcc44e2f924fa80443  gcc/testsuite/gcc.c-torture/execute/packed-2.c
--- 32426,32431 ----
*************** aa9ab7b3132881e662d2a7075ddb4ec4  gcc/te
*** 30127,30133 ****
  f8cf5a460b360bafad4142b746516305  gcc/testsuite/gcc.c-torture/execute/pr20187-1.c
  541908079884467c4a08f7987a344a71  gcc/testsuite/gcc.c-torture/execute/pr20466-1.c
  f881996934b53f50e79ef53efa9360c5  gcc/testsuite/gcc.c-torture/execute/pr20527-1.c
! f1ac9598d8e4a0e0e0722af37b489282  gcc/testsuite/gcc.c-torture/execute/pr20601-1.c
  affcc44de516e8e0c367fc2a2571d57d  gcc/testsuite/gcc.c-torture/execute/pr20621-1.c
  d0b7114647f223fd5d76807fabb2b2f4  gcc/testsuite/gcc.c-torture/execute/pr21173.c
  61c6c8c4c1deb8b1fe25a10b4b953f3d  gcc/testsuite/gcc.c-torture/execute/pr21331.c
--- 32451,32457 ----
  f8cf5a460b360bafad4142b746516305  gcc/testsuite/gcc.c-torture/execute/pr20187-1.c
  541908079884467c4a08f7987a344a71  gcc/testsuite/gcc.c-torture/execute/pr20466-1.c
  f881996934b53f50e79ef53efa9360c5  gcc/testsuite/gcc.c-torture/execute/pr20527-1.c
! c4d4100775bd3f164faa4568489656b5  gcc/testsuite/gcc.c-torture/execute/pr20601-1.c
  affcc44de516e8e0c367fc2a2571d57d  gcc/testsuite/gcc.c-torture/execute/pr20621-1.c
  d0b7114647f223fd5d76807fabb2b2f4  gcc/testsuite/gcc.c-torture/execute/pr21173.c
  61c6c8c4c1deb8b1fe25a10b4b953f3d  gcc/testsuite/gcc.c-torture/execute/pr21331.c
*************** f329f12d16c42f0725561cd741dfe0fc  gcc/te
*** 30146,30152 ****
  bba94602a8d44fc47d974658cc1eda4b  gcc/testsuite/gcc.c-torture/execute/pr22493-1.c
  dd00be933cede2d9e5e60bb682a83aee  gcc/testsuite/gcc.c-torture/execute/pr22630.c
  cfcc861f4888e288449ba119b16f4191  gcc/testsuite/gcc.c-torture/execute/pr23047.c
! c3e8f0b9380c70dce6af34736ac05a0c  gcc/testsuite/gcc.c-torture/execute/pr23135.c
  daf80206ebf1679b1938f38f4dd13747  gcc/testsuite/gcc.c-torture/execute/pr23324.c
  1780265ac830ca44c4e0788e686e85d1  gcc/testsuite/gcc.c-torture/execute/pr23467.c
  a832db54bb9231364468a1a69cd515f0  gcc/testsuite/gcc.c-torture/execute/pr23604.c
--- 32470,32476 ----
  bba94602a8d44fc47d974658cc1eda4b  gcc/testsuite/gcc.c-torture/execute/pr22493-1.c
  dd00be933cede2d9e5e60bb682a83aee  gcc/testsuite/gcc.c-torture/execute/pr22630.c
  cfcc861f4888e288449ba119b16f4191  gcc/testsuite/gcc.c-torture/execute/pr23047.c
! 48f72974737146a53a3c367be69db908  gcc/testsuite/gcc.c-torture/execute/pr23135.c
  daf80206ebf1679b1938f38f4dd13747  gcc/testsuite/gcc.c-torture/execute/pr23324.c
  1780265ac830ca44c4e0788e686e85d1  gcc/testsuite/gcc.c-torture/execute/pr23467.c
  a832db54bb9231364468a1a69cd515f0  gcc/testsuite/gcc.c-torture/execute/pr23604.c
*************** e2e618ea38dca1617acc5a2fda1306c3  gcc/te
*** 30219,30225 ****
  c36176ca013c416b13caea628d33c739  gcc/testsuite/gcc.c-torture/execute/pr36034-2.c
  84c4f0c948073b60906c7e4e1c16a2eb  gcc/testsuite/gcc.c-torture/execute/pr36038.c
  404e0d0562d2bb840ac9493e4142a462  gcc/testsuite/gcc.c-torture/execute/pr36077.c
- 2385cf0ff78fa38ec31f193980662796  gcc/testsuite/gcc.c-torture/execute/pr36093.c
  0db31669569f6d3cf134ab206b46cd16  gcc/testsuite/gcc.c-torture/execute/pr36321.c
  2bff4fb950576927ddd23367c027b002  gcc/testsuite/gcc.c-torture/execute/pr36339.c
  e937f92fb1f2d65532c4c7deeea7ebff  gcc/testsuite/gcc.c-torture/execute/pr36343.c
--- 32543,32548 ----
*************** cd3c47793cec4f6f1818d37a5f87e12f  gcc/te
*** 30288,30294 ****
  e1c90e5d63e50e72d3af2ef2ef99702a  gcc/testsuite/gcc.c-torture/execute/pr43438.c
  2202cff26e335eac3459e1004691c3ba  gcc/testsuite/gcc.c-torture/execute/pr43560.c
  567b622287769b340f5289a5e6a8f9af  gcc/testsuite/gcc.c-torture/execute/pr43629.c
- 9cc119afe7bb4a3a953e08fad7f65837  gcc/testsuite/gcc.c-torture/execute/pr43783.c
  0d2f2231afc1c87bde5955e33afeb246  gcc/testsuite/gcc.c-torture/execute/pr43784.c
  8e6b794db1e633e2fbcb3ec2ce2c55c7  gcc/testsuite/gcc.c-torture/execute/pr43835.c
  96a70e45097c5e44d5aa0886806ab53a  gcc/testsuite/gcc.c-torture/execute/pr43987.c
--- 32611,32616 ----
*************** aabd04a07a0d971be339d16e78bb0f0a  gcc/te
*** 30343,30355 ****
  b3c29fdc59ac0da93a59be35ab048363  gcc/testsuite/gcc.c-torture/execute/pr50865.c
  ac434ab17f7b0e048799e0edd8ec80f0  gcc/testsuite/gcc.c-torture/execute/pr51023.c
  595c73124fcac9f4cf5b0249ee76cb3a  gcc/testsuite/gcc.c-torture/execute/pr51323.c
! 3e36a4868ec88516be686d498f7acf0c  gcc/testsuite/gcc.c-torture/execute/pr51447.c
  770995de6083a82d04458b4cc9be1d5b  gcc/testsuite/gcc.c-torture/execute/pr51466.c
  476ff716671fb6afbc7b79411addb72d  gcc/testsuite/gcc.c-torture/execute/pr51581-1.c
  b2e34e81bb215e36864b1e48f07f75a6  gcc/testsuite/gcc.c-torture/execute/pr51581-2.c
  e6c3b91f3f0906ae521d79d14987052d  gcc/testsuite/gcc.c-torture/execute/pr51877.c
  249058277e15712c14bf1f67f58a4465  gcc/testsuite/gcc.c-torture/execute/pr51933.c
! 1af3824c80842730a3176bf9a528787a  gcc/testsuite/gcc.c-torture/execute/pr52129.c
  63d7f65d6f5ad1df1f79c25da155d3e4  gcc/testsuite/gcc.c-torture/execute/pr52209.c
  786b5fcaefcaf81d136d2c8fa5206f59  gcc/testsuite/gcc.c-torture/execute/pr52286.c
  9f617dcb041fd2c2ab735a72d9f6626f  gcc/testsuite/gcc.c-torture/execute/pr52760.c
--- 32665,32677 ----
  b3c29fdc59ac0da93a59be35ab048363  gcc/testsuite/gcc.c-torture/execute/pr50865.c
  ac434ab17f7b0e048799e0edd8ec80f0  gcc/testsuite/gcc.c-torture/execute/pr51023.c
  595c73124fcac9f4cf5b0249ee76cb3a  gcc/testsuite/gcc.c-torture/execute/pr51323.c
! 70c85f1f7ffcaac88d3711dac0422456  gcc/testsuite/gcc.c-torture/execute/pr51447.c
  770995de6083a82d04458b4cc9be1d5b  gcc/testsuite/gcc.c-torture/execute/pr51466.c
  476ff716671fb6afbc7b79411addb72d  gcc/testsuite/gcc.c-torture/execute/pr51581-1.c
  b2e34e81bb215e36864b1e48f07f75a6  gcc/testsuite/gcc.c-torture/execute/pr51581-2.c
  e6c3b91f3f0906ae521d79d14987052d  gcc/testsuite/gcc.c-torture/execute/pr51877.c
  249058277e15712c14bf1f67f58a4465  gcc/testsuite/gcc.c-torture/execute/pr51933.c
! f83b0f7d2f04307562d4a5d0153f2798  gcc/testsuite/gcc.c-torture/execute/pr52129.c
  63d7f65d6f5ad1df1f79c25da155d3e4  gcc/testsuite/gcc.c-torture/execute/pr52209.c
  786b5fcaefcaf81d136d2c8fa5206f59  gcc/testsuite/gcc.c-torture/execute/pr52286.c
  9f617dcb041fd2c2ab735a72d9f6626f  gcc/testsuite/gcc.c-torture/execute/pr52760.c
*************** faa159c3027fedb99ec92a72bd973031  gcc/te
*** 30415,30421 ****
  a0805a93c878ba5b6bbad037b4565428  gcc/testsuite/gcc.c-torture/execute/pr59014-2.c
  368f6dd22bdbb68be24ec532b96befe5  gcc/testsuite/gcc.c-torture/execute/pr59014.c
  3739df7efd9db516415c65375f7c54a8  gcc/testsuite/gcc.c-torture/execute/pr59101.c
! 19bbafa69ba9ff006f30b8feca877cdb  gcc/testsuite/gcc.c-torture/execute/pr59221.c
  38915f9cad2ddd8621d9162e69c2bf90  gcc/testsuite/gcc.c-torture/execute/pr59229.c
  04ea45cb22f89cc875c88ae412fe7521  gcc/testsuite/gcc.c-torture/execute/pr59358.c
  3ba08e16e58e453c34aa3d98917b4d4c  gcc/testsuite/gcc.c-torture/execute/pr59387.c
--- 32737,32743 ----
  a0805a93c878ba5b6bbad037b4565428  gcc/testsuite/gcc.c-torture/execute/pr59014-2.c
  368f6dd22bdbb68be24ec532b96befe5  gcc/testsuite/gcc.c-torture/execute/pr59014.c
  3739df7efd9db516415c65375f7c54a8  gcc/testsuite/gcc.c-torture/execute/pr59101.c
! 52ef7f2d7a5489fe043e7cc065c48dfa  gcc/testsuite/gcc.c-torture/execute/pr59221.c
  38915f9cad2ddd8621d9162e69c2bf90  gcc/testsuite/gcc.c-torture/execute/pr59229.c
  04ea45cb22f89cc875c88ae412fe7521  gcc/testsuite/gcc.c-torture/execute/pr59358.c
  3ba08e16e58e453c34aa3d98917b4d4c  gcc/testsuite/gcc.c-torture/execute/pr59387.c
*************** bde573a038beddcffeec20c14f6d7a95  gcc/te
*** 30480,30486 ****
  efa89e125a9677fb3985040dcc5db4c2  gcc/testsuite/gcc.c-torture/execute/pr67781.c
  ed53e3d0211f54495c95ef4aeab25e54  gcc/testsuite/gcc.c-torture/execute/pr67929_1.c
  c3b563a20e26ed9b84baded5cfc1983c  gcc/testsuite/gcc.c-torture/execute/pr68143_1.c
! f8b9dc90d463fcbda620e773cb94586a  gcc/testsuite/gcc.c-torture/execute/pr68185.c
  f20b6c8891260e3275a695dd6aeeafa1  gcc/testsuite/gcc.c-torture/execute/pr68249.c
  8d1f0f42d68ffb94eaf275f513ee2845  gcc/testsuite/gcc.c-torture/execute/pr68250.c
  3dc7dfa89b1ead7f331642a71ce96e0d  gcc/testsuite/gcc.c-torture/execute/pr68321.c
--- 32802,32808 ----
  efa89e125a9677fb3985040dcc5db4c2  gcc/testsuite/gcc.c-torture/execute/pr67781.c
  ed53e3d0211f54495c95ef4aeab25e54  gcc/testsuite/gcc.c-torture/execute/pr67929_1.c
  c3b563a20e26ed9b84baded5cfc1983c  gcc/testsuite/gcc.c-torture/execute/pr68143_1.c
! 9d6806e891bd11a599bc9b21ba5c2894  gcc/testsuite/gcc.c-torture/execute/pr68185.c
  f20b6c8891260e3275a695dd6aeeafa1  gcc/testsuite/gcc.c-torture/execute/pr68249.c
  8d1f0f42d68ffb94eaf275f513ee2845  gcc/testsuite/gcc.c-torture/execute/pr68250.c
  3dc7dfa89b1ead7f331642a71ce96e0d  gcc/testsuite/gcc.c-torture/execute/pr68321.c
*************** ee17bd481fb3fe7371a97d45e7fb1698  gcc/te
*** 30617,30623 ****
  ad7c474351d293f3938a5aff5d1faf91  gcc/testsuite/gcc.c-torture/execute/pr91632.c
  af6b84b440f79dbac6f54234769daf51  gcc/testsuite/gcc.c-torture/execute/pr91635.c
  e491cd912e4c821bb963400abd41d7a4  gcc/testsuite/gcc.c-torture/execute/pr92140.c
! 7266c6d4a2a909485f98c7b8e4dd563d  gcc/testsuite/gcc.c-torture/execute/pr92618.c
  a11f543d4a1ab92e9bc0bd9bcd9816f5  gcc/testsuite/gcc.c-torture/execute/pr92904.c
  939617e1c292efb910f1f0cd19535584  gcc/testsuite/gcc.c-torture/execute/pr93213.c
  941740e7f507e4c05b6d934415e8b6ec  gcc/testsuite/gcc.c-torture/execute/pr93249.c
--- 32939,32945 ----
  ad7c474351d293f3938a5aff5d1faf91  gcc/testsuite/gcc.c-torture/execute/pr91632.c
  af6b84b440f79dbac6f54234769daf51  gcc/testsuite/gcc.c-torture/execute/pr91635.c
  e491cd912e4c821bb963400abd41d7a4  gcc/testsuite/gcc.c-torture/execute/pr92140.c
! 854a71715fd9cbd55f4c8b5f7a2932e5  gcc/testsuite/gcc.c-torture/execute/pr92618.c
  a11f543d4a1ab92e9bc0bd9bcd9816f5  gcc/testsuite/gcc.c-torture/execute/pr92904.c
  939617e1c292efb910f1f0cd19535584  gcc/testsuite/gcc.c-torture/execute/pr93213.c
  941740e7f507e4c05b6d934415e8b6ec  gcc/testsuite/gcc.c-torture/execute/pr93249.c
*************** fa267d86210141e4c59493413edf3921  gcc/te
*** 30640,30659 ****
--- 32962,32991 ----
  069570d24b413c25a6dd15040ff939b8  gcc/testsuite/gcc.c-torture/execute/pr94724.c
  4cd616d2ecf1c6299b79404d41a63d52  gcc/testsuite/gcc.c-torture/execute/pr94734.c
  fd35de1f432762813573329dad3a87bc  gcc/testsuite/gcc.c-torture/execute/pr94809.c
+ 3a2ee261c45f678268a8613d9a5eca5d  gcc/testsuite/gcc.c-torture/execute/pr95731.c
  e4dc387d4eea606978e976692b75a8bb  gcc/testsuite/gcc.c-torture/execute/pr96549.c
  6a71aff067fb3f586d16c1440d422065  gcc/testsuite/gcc.c-torture/execute/pr97073.c
+ d88cf563f9c8bf4575ac5a71228e1b46  gcc/testsuite/gcc.c-torture/execute/pr97325.c
  1a58eed4c60138c89963841495bfbc6a  gcc/testsuite/gcc.c-torture/execute/pr97386-1.c
  21cbedc011449b157f53d2f3ff96e083  gcc/testsuite/gcc.c-torture/execute/pr97386-2.c
  b0c3c1f5504b6a0b610d53abaf6f4d2a  gcc/testsuite/gcc.c-torture/execute/pr97404.c
  f4fa55fcb3f239001064c5e8e1fa994f  gcc/testsuite/gcc.c-torture/execute/pr97421-1.c
  2898c28d80fab73d33bc9a72fd6eedd5  gcc/testsuite/gcc.c-torture/execute/pr97421-2.c
  e38ae79f8053ebd6f76a8c00ed1eb4da  gcc/testsuite/gcc.c-torture/execute/pr97421-3.c
+ cb733aef3f70b7e9783d3e960bd7d1b8  gcc/testsuite/gcc.c-torture/execute/pr97695.c
  c5d9f6e864aa6ce765a8ec4276629c5f  gcc/testsuite/gcc.c-torture/execute/pr97764.c
+ 38ae3977156254634cecdb2eb8a2c868  gcc/testsuite/gcc.c-torture/execute/pr97836.c
+ 4aba7c31e5b79f85ac783a249d5c9482  gcc/testsuite/gcc.c-torture/execute/pr97888-1.c
+ b77c0d88fd06be516e1bddd02f64ee13  gcc/testsuite/gcc.c-torture/execute/pr97888-2.c
+ c0604879f00bf14de861680217e4ac2e  gcc/testsuite/gcc.c-torture/execute/pr98366.c
  58f14240090be9619912d042ff552198  gcc/testsuite/gcc.c-torture/execute/pr98474.c
  f25dd6049e9c8dd046ca17e8bc55d979  gcc/testsuite/gcc.c-torture/execute/pr98681.c
+ ae44deb4614c123593fdaca1fc142b88  gcc/testsuite/gcc.c-torture/execute/pr98727.c
+ d448583a119a41dc260aaaf1f90a10c9  gcc/testsuite/gcc.c-torture/execute/pr98736.c
  f4f2930202484cfce2950cfa08ed6346  gcc/testsuite/gcc.c-torture/execute/pr98853-1.c
  9778e9dbac722a3f0e3643e7322e5a78  gcc/testsuite/gcc.c-torture/execute/pr98853-2.c
  68a00a5f6197b192d0a9ba3b1f2f4938  gcc/testsuite/gcc.c-torture/execute/pr99079.c
+ 1ff23ec06c77aefc42faa46db9f3fa0d  gcc/testsuite/gcc.c-torture/execute/pr99751.c
  8587088d2eab0e974762ba6cd20b4f04  gcc/testsuite/gcc.c-torture/execute/printf-1.c
  9bc91ebc5706a25ee5b9542884f53fa1  gcc/testsuite/gcc.c-torture/execute/printf-2.c
  9e89c9802e280d635a7bc6756bbaf6e6  gcc/testsuite/gcc.c-torture/execute/printf-chk-1.c
*************** f30bf0095addeef700a83f36c598deab  gcc/te
*** 30765,30772 ****
  5d8fbb34f7ad51fedc394527a5885d4d  gcc/testsuite/gcc.c-torture/execute/zerolen-2.c
  44c6ad090d3f06206aa54f59582ae32c  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.c
  76a05adc513bcf00de7e94465ef0bc6d  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x
! 3e1d730839b9bd57de130545fee4c6e7  gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp
! 8cf6c10cc3f6f6695cc9ffd3f2ab8fac  gcc/testsuite/gcc.dg-selftests/dg-final.exp
  d0289bfc068c575e2168df7bc156b45a  gcc/testsuite/gcc.dg/20000108-1.c
  586ef49702317acb226ba076aeea11ee  gcc/testsuite/gcc.dg/20000111-1.c
  d8a5405adb98e221c4fa41ce145177c6  gcc/testsuite/gcc.dg/20000623-1.c
--- 33097,33104 ----
  5d8fbb34f7ad51fedc394527a5885d4d  gcc/testsuite/gcc.c-torture/execute/zerolen-2.c
  44c6ad090d3f06206aa54f59582ae32c  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.c
  76a05adc513bcf00de7e94465ef0bc6d  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x
! bdcbc5cab14e0e84344eb82db2a16368  gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp
! 9f934e665466881aea1787d1cc031924  gcc/testsuite/gcc.dg-selftests/dg-final.exp
  d0289bfc068c575e2168df7bc156b45a  gcc/testsuite/gcc.dg/20000108-1.c
  586ef49702317acb226ba076aeea11ee  gcc/testsuite/gcc.dg/20000111-1.c
  d8a5405adb98e221c4fa41ce145177c6  gcc/testsuite/gcc.dg/20000623-1.c
*************** eba89ad67022c84bc992baf8fd3f5a6b  gcc/te
*** 30829,30840 ****
  234845b8848f5680ff818f62f351bd2d  gcc/testsuite/gcc.dg/20020530-1.c
  da093a504dd5180ba0a2d674a33283b6  gcc/testsuite/gcc.dg/20020607-1.c
  9460cc0e67fb619fc3dd04804f75c660  gcc/testsuite/gcc.dg/20020607-2.c
! dddfbc646375e6b8e0e25e3df4bdccba  gcc/testsuite/gcc.dg/20020919-1.c
  f73b8f76b68c625111a3567ed0b32593  gcc/testsuite/gcc.dg/20021006-1.c
  db4ae37e58ac25724070033d60b98346  gcc/testsuite/gcc.dg/20021014-1.c
  e0a338b56ef60f7330376e2cca8ee295  gcc/testsuite/gcc.dg/20021018-1.c
  a80fc1e3c09e8ce28290a89b6310c081  gcc/testsuite/gcc.dg/20021023-1.c
! c702744d904906ce3bcacbb59236ece1  gcc/testsuite/gcc.dg/20021029-1.c
  dbac8533c2d035b1062c392d57919926  gcc/testsuite/gcc.dg/20021029-2.c
  9614eaf8aeab9dce78f299f486339133  gcc/testsuite/gcc.dg/20021116-1.c
  352f6d00f9872a03fa995703402ca5f6  gcc/testsuite/gcc.dg/20030107-1.c
--- 33161,33172 ----
  234845b8848f5680ff818f62f351bd2d  gcc/testsuite/gcc.dg/20020530-1.c
  da093a504dd5180ba0a2d674a33283b6  gcc/testsuite/gcc.dg/20020607-1.c
  9460cc0e67fb619fc3dd04804f75c660  gcc/testsuite/gcc.dg/20020607-2.c
! b540c59b566647ef61a8c9670457783b  gcc/testsuite/gcc.dg/20020919-1.c
  f73b8f76b68c625111a3567ed0b32593  gcc/testsuite/gcc.dg/20021006-1.c
  db4ae37e58ac25724070033d60b98346  gcc/testsuite/gcc.dg/20021014-1.c
  e0a338b56ef60f7330376e2cca8ee295  gcc/testsuite/gcc.dg/20021018-1.c
  a80fc1e3c09e8ce28290a89b6310c081  gcc/testsuite/gcc.dg/20021023-1.c
! e0d3e010baaffb9e233555a5e987890f  gcc/testsuite/gcc.dg/20021029-1.c
  dbac8533c2d035b1062c392d57919926  gcc/testsuite/gcc.dg/20021029-2.c
  9614eaf8aeab9dce78f299f486339133  gcc/testsuite/gcc.dg/20021116-1.c
  352f6d00f9872a03fa995703402ca5f6  gcc/testsuite/gcc.dg/20030107-1.c
*************** b7bd984eb5b7d4b89a35583b6c25f974  gcc/te
*** 30879,30885 ****
  0e31f15cce2c41678fc3e7f76a6d7da2  gcc/testsuite/gcc.dg/20031218-2.c
  d88f26e336c418f871b1a921ead6b08a  gcc/testsuite/gcc.dg/20031218-3.c
  9fe96201a56e928b8136e3d47faf364d  gcc/testsuite/gcc.dg/20031222-1.c
! 04444e46a008bb05fce67105c5bfb5db  gcc/testsuite/gcc.dg/20031223-1.c
  a9c8dcbd471f438d0945eb02ab3198fb  gcc/testsuite/gcc.dg/20040123-1.c
  7e2e1a54addca114c33bf6ca2ba82886  gcc/testsuite/gcc.dg/20040127-1.c
  082c5fc10d174cbd05a8f07b9af453fa  gcc/testsuite/gcc.dg/20040127-2.c
--- 33211,33217 ----
  0e31f15cce2c41678fc3e7f76a6d7da2  gcc/testsuite/gcc.dg/20031218-2.c
  d88f26e336c418f871b1a921ead6b08a  gcc/testsuite/gcc.dg/20031218-3.c
  9fe96201a56e928b8136e3d47faf364d  gcc/testsuite/gcc.dg/20031222-1.c
! f9266fb2a711d07c8fd9b9bd8e584e54  gcc/testsuite/gcc.dg/20031223-1.c
  a9c8dcbd471f438d0945eb02ab3198fb  gcc/testsuite/gcc.dg/20040123-1.c
  7e2e1a54addca114c33bf6ca2ba82886  gcc/testsuite/gcc.dg/20040127-1.c
  082c5fc10d174cbd05a8f07b9af453fa  gcc/testsuite/gcc.dg/20040127-2.c
*************** ee28ee06af1da501336f2f38e98910b4  gcc/te
*** 30915,30921 ****
  34cf82bacd1c9932010b6a50bd4f0048  gcc/testsuite/gcc.dg/20050105-2.c
  9948d4e3e5351e024798418604e6256d  gcc/testsuite/gcc.dg/20050111-1.c
  3f23e1ca4e89021942ea442e650fdf5a  gcc/testsuite/gcc.dg/20050111-2.c
! 6f84c12aefa77507f596e3acab014b03  gcc/testsuite/gcc.dg/20050121-1.c
  6b4801db99785258ad0d6fdf2df389d8  gcc/testsuite/gcc.dg/20050121-2.c
  d75e2e831928738c29dcbe7834ecb877  gcc/testsuite/gcc.dg/20050209-1.c
  964311fd8cdd1cfcbd7fef202a610618  gcc/testsuite/gcc.dg/20050307-1.c
--- 33247,33253 ----
  34cf82bacd1c9932010b6a50bd4f0048  gcc/testsuite/gcc.dg/20050105-2.c
  9948d4e3e5351e024798418604e6256d  gcc/testsuite/gcc.dg/20050111-1.c
  3f23e1ca4e89021942ea442e650fdf5a  gcc/testsuite/gcc.dg/20050111-2.c
! 19f002d300e2858722e171996c132ba1  gcc/testsuite/gcc.dg/20050121-1.c
  6b4801db99785258ad0d6fdf2df389d8  gcc/testsuite/gcc.dg/20050121-2.c
  d75e2e831928738c29dcbe7834ecb877  gcc/testsuite/gcc.dg/20050209-1.c
  964311fd8cdd1cfcbd7fef202a610618  gcc/testsuite/gcc.dg/20050307-1.c
*************** cda741cce59ba0dcd70871f300400003  gcc/te
*** 30986,30992 ****
  eba607c17011c649eb3d7e1c5513ffdd  gcc/testsuite/gcc.dg/Foundation.framework/empty
  509fc4e45ca169a2f01541865c72e7d9  gcc/testsuite/gcc.dg/O16384.c
  5572aaa0a05957fff2416d1f5f7c0cc6  gcc/testsuite/gcc.dg/PR68002.c
! bcbd6625a7a7c49fc6c00b2f370fb53a  gcc/testsuite/gcc.dg/README
  bd2b0579d869dd45682e46db89fcdb4f  gcc/testsuite/gcc.dg/Wabsolute-value.c
  3b152bda38c8adacaa17cce7b0cf4e42  gcc/testsuite/gcc.dg/Waddress-2.c
  e061bee34094ea6ecd29d049eafb229b  gcc/testsuite/gcc.dg/Waddress.c
--- 33318,33324 ----
  eba607c17011c649eb3d7e1c5513ffdd  gcc/testsuite/gcc.dg/Foundation.framework/empty
  509fc4e45ca169a2f01541865c72e7d9  gcc/testsuite/gcc.dg/O16384.c
  5572aaa0a05957fff2416d1f5f7c0cc6  gcc/testsuite/gcc.dg/PR68002.c
! 99828623c9bf77544aeea2ded6f1de1b  gcc/testsuite/gcc.dg/README
  bd2b0579d869dd45682e46db89fcdb4f  gcc/testsuite/gcc.dg/Wabsolute-value.c
  3b152bda38c8adacaa17cce7b0cf4e42  gcc/testsuite/gcc.dg/Waddress-2.c
  e061bee34094ea6ecd29d049eafb229b  gcc/testsuite/gcc.dg/Waddress.c
*************** c143a2e5b3c091bca208b2ee65084704  gcc/te
*** 31010,31028 ****
  b580d6c39293c3a9a94690d5dfc0c878  gcc/testsuite/gcc.dg/Walloc-size-larger-than-8.c
  9a97a011793c5a7247611e2bc518f6f5  gcc/testsuite/gcc.dg/Walloc-size-larger-than-9.c
  273a2c834452fc45390aa6d1a81ea2f2  gcc/testsuite/gcc.dg/Walloc-size-larger-than.c
! f88e1e5fbc4c4286a0cb31defcba1969  gcc/testsuite/gcc.dg/Walloca-1.c
  538a90f3521bf6b465ebbc392080610e  gcc/testsuite/gcc.dg/Walloca-10.c
  bb3fac63e26e1a1793361a553f83b373  gcc/testsuite/gcc.dg/Walloca-11.c
! c824f4d990ca4b00f526c30abd07ab52  gcc/testsuite/gcc.dg/Walloca-12.c
! 8f13970f5e06aa7a0d7a73dc09115590  gcc/testsuite/gcc.dg/Walloca-13.c
! cc10297f86bec2e2661d09cf65412103  gcc/testsuite/gcc.dg/Walloca-14.c
  e5cdd59c60a14eb884306afcedf7c6f6  gcc/testsuite/gcc.dg/Walloca-15.c
  49fa808f10f6cbd4c7788eebd86de9fd  gcc/testsuite/gcc.dg/Walloca-16.c
! ca6004ae108af1b7bc6c10668ef8e9b1  gcc/testsuite/gcc.dg/Walloca-2.c
! 6c398f9605e00f8c848777e1be880af3  gcc/testsuite/gcc.dg/Walloca-3.c
  36f55471d7b2e97ecb15bfc57d7392da  gcc/testsuite/gcc.dg/Walloca-4.c
  570dc925a559b3fc45d262becb2674fb  gcc/testsuite/gcc.dg/Walloca-5.c
! 6974dd579ed8a8eaa396080af1b82bbb  gcc/testsuite/gcc.dg/Walloca-6.c
  086edff3c013c97671a563687ca84f55  gcc/testsuite/gcc.dg/Walloca-7.c
  a08c361f7c9eede0b13d3d1b3cfd2040  gcc/testsuite/gcc.dg/Walloca-8.c
  f4ae192745e9cc38db12b7ac4545d0fa  gcc/testsuite/gcc.dg/Walloca-9.c
--- 33342,33360 ----
  b580d6c39293c3a9a94690d5dfc0c878  gcc/testsuite/gcc.dg/Walloc-size-larger-than-8.c
  9a97a011793c5a7247611e2bc518f6f5  gcc/testsuite/gcc.dg/Walloc-size-larger-than-9.c
  273a2c834452fc45390aa6d1a81ea2f2  gcc/testsuite/gcc.dg/Walloc-size-larger-than.c
! d264d25955b548eb2c7066d1fc44c895  gcc/testsuite/gcc.dg/Walloca-1.c
  538a90f3521bf6b465ebbc392080610e  gcc/testsuite/gcc.dg/Walloca-10.c
  bb3fac63e26e1a1793361a553f83b373  gcc/testsuite/gcc.dg/Walloca-11.c
! 55dc1f00b00f6e508fe83fc8f64b989f  gcc/testsuite/gcc.dg/Walloca-12.c
! ce8d58b6331fa1f7b9a626023ca30647  gcc/testsuite/gcc.dg/Walloca-13.c
! b62a67c07815a09e72a8c257fbaebf29  gcc/testsuite/gcc.dg/Walloca-14.c
  e5cdd59c60a14eb884306afcedf7c6f6  gcc/testsuite/gcc.dg/Walloca-15.c
  49fa808f10f6cbd4c7788eebd86de9fd  gcc/testsuite/gcc.dg/Walloca-16.c
! cbbef569089fee4566079038d91ab85b  gcc/testsuite/gcc.dg/Walloca-2.c
! 04f1b6d386a6d8d9db3395b82964428c  gcc/testsuite/gcc.dg/Walloca-3.c
  36f55471d7b2e97ecb15bfc57d7392da  gcc/testsuite/gcc.dg/Walloca-4.c
  570dc925a559b3fc45d262becb2674fb  gcc/testsuite/gcc.dg/Walloca-5.c
! 6c3b2ffab9934f7d398b2209ab129de9  gcc/testsuite/gcc.dg/Walloca-6.c
  086edff3c013c97671a563687ca84f55  gcc/testsuite/gcc.dg/Walloca-7.c
  a08c361f7c9eede0b13d3d1b3cfd2040  gcc/testsuite/gcc.dg/Walloca-8.c
  f4ae192745e9cc38db12b7ac4545d0fa  gcc/testsuite/gcc.dg/Walloca-9.c
*************** dedff38471f8963dc7ff6b71f19af4e2  gcc/te
*** 31054,31097 ****
  1ac6f17bcd2f058f86a0facf496777b3  gcc/testsuite/gcc.dg/Warray-bounds-28.c
  07e494b2b5359be461562717db03429c  gcc/testsuite/gcc.dg/Warray-bounds-29.c
  9eeb5d2b156c00ad712626333e2f1f56  gcc/testsuite/gcc.dg/Warray-bounds-3.c
! 4f43fd18343d276ed494114618011bb6  gcc/testsuite/gcc.dg/Warray-bounds-30.c
  162af82980c3b72cce2dfae4adbcca0c  gcc/testsuite/gcc.dg/Warray-bounds-31.c
! 198472db9dd8251649a7dffd49badcdf  gcc/testsuite/gcc.dg/Warray-bounds-32.c
  6b9ac8ad880ced5374b2667375c34928  gcc/testsuite/gcc.dg/Warray-bounds-33.c
  0d5c45e1045ae1cfb51e99b1a996737e  gcc/testsuite/gcc.dg/Warray-bounds-34.c
  70792e0f2bd388c08d846ece8c1a9894  gcc/testsuite/gcc.dg/Warray-bounds-35.c
  53cf522d5540d20053932c1c37e42025  gcc/testsuite/gcc.dg/Warray-bounds-36.c
  88110b8c8042e3a992d1fae3d97c87b0  gcc/testsuite/gcc.dg/Warray-bounds-37.c
  e7237b88231aff2adb46cd199c02550b  gcc/testsuite/gcc.dg/Warray-bounds-38.c
! 4f35518eac43adbb6f85b2a0cb35d927  gcc/testsuite/gcc.dg/Warray-bounds-39.c
  84a306ba6a47b60426131bffe9ec7a0c  gcc/testsuite/gcc.dg/Warray-bounds-4.c
! 4e40d774fd6f3a1ad4a56086ce6b9341  gcc/testsuite/gcc.dg/Warray-bounds-40.c
  ade1fdd3e190a5dcc364ebe1609610ba  gcc/testsuite/gcc.dg/Warray-bounds-41.c
  f789b1e7b8becd79f38feadd4851b46e  gcc/testsuite/gcc.dg/Warray-bounds-42.c
! 4d9b6b8d80def8d89af5874a24726506  gcc/testsuite/gcc.dg/Warray-bounds-43.c
  bcfdc1bd403c9aafe13abbe133808f9a  gcc/testsuite/gcc.dg/Warray-bounds-44.c
  f3112cdf9edbe2af3277d38e4643af1f  gcc/testsuite/gcc.dg/Warray-bounds-45.c
! 50fd97dee7428d7e6c3072622349930c  gcc/testsuite/gcc.dg/Warray-bounds-46.c
  cb64293b7b9a92cb5cd94dedde913801  gcc/testsuite/gcc.dg/Warray-bounds-47.c
! 2fe49c25ace93ab2853206ca80d1d2e1  gcc/testsuite/gcc.dg/Warray-bounds-48.c
  3aa7adb94918bc13234602f8516dd1a9  gcc/testsuite/gcc.dg/Warray-bounds-49.c
  6a53ea6731c8e33605392ac843284e1c  gcc/testsuite/gcc.dg/Warray-bounds-5.c
! 76a2757b12530b21cccc5dd788dc15ee  gcc/testsuite/gcc.dg/Warray-bounds-50.c
  69c29926e1d21fcf8f9256fdb81062ea  gcc/testsuite/gcc.dg/Warray-bounds-51.c
! 53cad39cdfeaf164945a42347fce66f8  gcc/testsuite/gcc.dg/Warray-bounds-52.c
! 72800328d862a0135c725baaf6a7ea1c  gcc/testsuite/gcc.dg/Warray-bounds-53.c
! 38bbfdf3f0e681ece852d41b8cd8809b  gcc/testsuite/gcc.dg/Warray-bounds-54.c
  3735dc90a235299206d9177f18fbe519  gcc/testsuite/gcc.dg/Warray-bounds-55.c
! 4913df81f0b792a696fe889319065f9b  gcc/testsuite/gcc.dg/Warray-bounds-56.c
  fcd274aa9e98ef2eed6f4ff3d3a74b4c  gcc/testsuite/gcc.dg/Warray-bounds-57.c
! 8344c134aba4eaeeb2e6013c60761a78  gcc/testsuite/gcc.dg/Warray-bounds-58.c
  7de695ba5920d7bf7dad04b97e1dd4b9  gcc/testsuite/gcc.dg/Warray-bounds-59.c
  80c3d31a9d8de2d05bed1c5c1e97d4c5  gcc/testsuite/gcc.dg/Warray-bounds-6.c
  1b21b1f193ad0d2c647f55a9a290acf2  gcc/testsuite/gcc.dg/Warray-bounds-61.c
  5be3608072cf842ac1c1ee348830d85a  gcc/testsuite/gcc.dg/Warray-bounds-7.c
  21d65e4a3ed9e583a7990c62514f991a  gcc/testsuite/gcc.dg/Warray-bounds-8.c
  4e1e873542b1218915f33f761b49e234  gcc/testsuite/gcc.dg/Warray-bounds-9.c
  0b85a8646c05f520e95768e6d605a0dd  gcc/testsuite/gcc.dg/Warray-bounds.c
  09bb4331b7486fe7f81374366f7df056  gcc/testsuite/gcc.dg/Wattribute-alias.c
  335e155c329413d2a8e0eaf02def9f82  gcc/testsuite/gcc.dg/Wattributes-1.c
  3726bb79299560facdb4e0a352f6c5c2  gcc/testsuite/gcc.dg/Wattributes-10.c
--- 33386,33447 ----
  1ac6f17bcd2f058f86a0facf496777b3  gcc/testsuite/gcc.dg/Warray-bounds-28.c
  07e494b2b5359be461562717db03429c  gcc/testsuite/gcc.dg/Warray-bounds-29.c
  9eeb5d2b156c00ad712626333e2f1f56  gcc/testsuite/gcc.dg/Warray-bounds-3.c
! 32c6bbc4cfebd62192d54063476cb5a9  gcc/testsuite/gcc.dg/Warray-bounds-30.c
  162af82980c3b72cce2dfae4adbcca0c  gcc/testsuite/gcc.dg/Warray-bounds-31.c
! 75bcac3d74e7039aa63757acb754d677  gcc/testsuite/gcc.dg/Warray-bounds-32.c
  6b9ac8ad880ced5374b2667375c34928  gcc/testsuite/gcc.dg/Warray-bounds-33.c
  0d5c45e1045ae1cfb51e99b1a996737e  gcc/testsuite/gcc.dg/Warray-bounds-34.c
  70792e0f2bd388c08d846ece8c1a9894  gcc/testsuite/gcc.dg/Warray-bounds-35.c
  53cf522d5540d20053932c1c37e42025  gcc/testsuite/gcc.dg/Warray-bounds-36.c
  88110b8c8042e3a992d1fae3d97c87b0  gcc/testsuite/gcc.dg/Warray-bounds-37.c
  e7237b88231aff2adb46cd199c02550b  gcc/testsuite/gcc.dg/Warray-bounds-38.c
! 51cf8f7f77d0b01204452bd074d852bc  gcc/testsuite/gcc.dg/Warray-bounds-39.c
  84a306ba6a47b60426131bffe9ec7a0c  gcc/testsuite/gcc.dg/Warray-bounds-4.c
! a24dbf2381bca49baad37bd9894a1364  gcc/testsuite/gcc.dg/Warray-bounds-40.c
  ade1fdd3e190a5dcc364ebe1609610ba  gcc/testsuite/gcc.dg/Warray-bounds-41.c
  f789b1e7b8becd79f38feadd4851b46e  gcc/testsuite/gcc.dg/Warray-bounds-42.c
! 9f10034dcc846ba4d394b4b6c294f41e  gcc/testsuite/gcc.dg/Warray-bounds-43.c
  bcfdc1bd403c9aafe13abbe133808f9a  gcc/testsuite/gcc.dg/Warray-bounds-44.c
  f3112cdf9edbe2af3277d38e4643af1f  gcc/testsuite/gcc.dg/Warray-bounds-45.c
! 6e95be44603cc2f0f4a1e04edd5ae3c4  gcc/testsuite/gcc.dg/Warray-bounds-46.c
  cb64293b7b9a92cb5cd94dedde913801  gcc/testsuite/gcc.dg/Warray-bounds-47.c
! 62fb96fbec5aa97bc91149028e507e28  gcc/testsuite/gcc.dg/Warray-bounds-48.c
  3aa7adb94918bc13234602f8516dd1a9  gcc/testsuite/gcc.dg/Warray-bounds-49.c
  6a53ea6731c8e33605392ac843284e1c  gcc/testsuite/gcc.dg/Warray-bounds-5.c
! 99ca661fd44c871abb678e58007bc467  gcc/testsuite/gcc.dg/Warray-bounds-50.c
  69c29926e1d21fcf8f9256fdb81062ea  gcc/testsuite/gcc.dg/Warray-bounds-51.c
! cc4d87376121fbd87425aadccaddbf48  gcc/testsuite/gcc.dg/Warray-bounds-52.c
! 2e06a9ac76c84c0cc45e97edd5cc021f  gcc/testsuite/gcc.dg/Warray-bounds-53.c
! 12a0fa5409b214bab70ca278f4e5c555  gcc/testsuite/gcc.dg/Warray-bounds-54.c
  3735dc90a235299206d9177f18fbe519  gcc/testsuite/gcc.dg/Warray-bounds-55.c
! 1b1959a1d1ebfb04562568b593cbc665  gcc/testsuite/gcc.dg/Warray-bounds-56.c
  fcd274aa9e98ef2eed6f4ff3d3a74b4c  gcc/testsuite/gcc.dg/Warray-bounds-57.c
! e487b1e3afb81459de026ce1e504fba3  gcc/testsuite/gcc.dg/Warray-bounds-58.c
  7de695ba5920d7bf7dad04b97e1dd4b9  gcc/testsuite/gcc.dg/Warray-bounds-59.c
  80c3d31a9d8de2d05bed1c5c1e97d4c5  gcc/testsuite/gcc.dg/Warray-bounds-6.c
  1b21b1f193ad0d2c647f55a9a290acf2  gcc/testsuite/gcc.dg/Warray-bounds-61.c
+ c78bbb71f763798ca7a0fb499b6de460  gcc/testsuite/gcc.dg/Warray-bounds-62.c
+ c6fb1eddded2a406e3cf969e99ff8581  gcc/testsuite/gcc.dg/Warray-bounds-63.c
+ 885e1e30393f12e893506bb2afbd4e4e  gcc/testsuite/gcc.dg/Warray-bounds-64.c
+ 1df7f806db7a39bd9829ad74b9781b37  gcc/testsuite/gcc.dg/Warray-bounds-65.c
+ 0e2312b94c8aaebec696c5ebbd21b4c8  gcc/testsuite/gcc.dg/Warray-bounds-66.c
+ 2131e610c7552a866719b6f05200b219  gcc/testsuite/gcc.dg/Warray-bounds-67.c
+ 51359502b5a5964989bb9a3452967e27  gcc/testsuite/gcc.dg/Warray-bounds-68.c
+ 046a84350f26e4565c2d5464cfceaa35  gcc/testsuite/gcc.dg/Warray-bounds-69.c
  5be3608072cf842ac1c1ee348830d85a  gcc/testsuite/gcc.dg/Warray-bounds-7.c
+ bd5d161ada67db246eb1ad520d4f5497  gcc/testsuite/gcc.dg/Warray-bounds-70.c
  21d65e4a3ed9e583a7990c62514f991a  gcc/testsuite/gcc.dg/Warray-bounds-8.c
  4e1e873542b1218915f33f761b49e234  gcc/testsuite/gcc.dg/Warray-bounds-9.c
  0b85a8646c05f520e95768e6d605a0dd  gcc/testsuite/gcc.dg/Warray-bounds.c
+ 08e3a5d407e0fc2dbcabe26ce368584d  gcc/testsuite/gcc.dg/Warray-parameter-2.c
+ f6a786ff1a6cb61cde5db224523fe850  gcc/testsuite/gcc.dg/Warray-parameter-3.c
+ 9d5c473fe24359cf5dc7d2cd313b459c  gcc/testsuite/gcc.dg/Warray-parameter-4.c
+ 63747ac1f532ee92e6bae2bb3c3536d9  gcc/testsuite/gcc.dg/Warray-parameter-5.c
+ afd1e9e12b9f03d47bc7d0a07df0c5d5  gcc/testsuite/gcc.dg/Warray-parameter-6.c
+ 8062c6aa0e8bde1eb625eb32bf6be129  gcc/testsuite/gcc.dg/Warray-parameter-7.c
+ a8dc9cdf9fada2be584320b55edec236  gcc/testsuite/gcc.dg/Warray-parameter-8.c
+ 2991b35700cc4b55ee85a6af0af3aa7c  gcc/testsuite/gcc.dg/Warray-parameter-9.c
+ 222ba3f1d84fa436a7986096292f8e36  gcc/testsuite/gcc.dg/Warray-parameter.c
  09bb4331b7486fe7f81374366f7df056  gcc/testsuite/gcc.dg/Wattribute-alias.c
  335e155c329413d2a8e0eaf02def9f82  gcc/testsuite/gcc.dg/Wattributes-1.c
  3726bb79299560facdb4e0a352f6c5c2  gcc/testsuite/gcc.dg/Wattributes-10.c
*************** fcd274aa9e98ef2eed6f4ff3d3a74b4c  gcc/te
*** 31099,31105 ****
  b87b7ebc31064d6e57b0af0b3017afeb  gcc/testsuite/gcc.dg/Wattributes-3.c
  1988735c2661df622a2ab226b3a093b9  gcc/testsuite/gcc.dg/Wattributes-4.c
  5b6c200e82806a6e48523fca76ca9baa  gcc/testsuite/gcc.dg/Wattributes-5.c
! 56bb3d3e6eaa6644c90198422c744dc4  gcc/testsuite/gcc.dg/Wattributes-6.c
  fe25f03fdb469ad245f6cae14480ddad  gcc/testsuite/gcc.dg/Wattributes-7.c
  88ca5f23785409e414d83a6e43d561a3  gcc/testsuite/gcc.dg/Wattributes-8.c
  3657d8392090a291a46e662e66ab20ac  gcc/testsuite/gcc.dg/Wbad-function-cast-1.c
--- 33449,33455 ----
  b87b7ebc31064d6e57b0af0b3017afeb  gcc/testsuite/gcc.dg/Wattributes-3.c
  1988735c2661df622a2ab226b3a093b9  gcc/testsuite/gcc.dg/Wattributes-4.c
  5b6c200e82806a6e48523fca76ca9baa  gcc/testsuite/gcc.dg/Wattributes-5.c
! 2b2bba50cdf649b0d5aaa58f907d702f  gcc/testsuite/gcc.dg/Wattributes-6.c
  fe25f03fdb469ad245f6cae14480ddad  gcc/testsuite/gcc.dg/Wattributes-7.c
  88ca5f23785409e414d83a6e43d561a3  gcc/testsuite/gcc.dg/Wattributes-8.c
  3657d8392090a291a46e662e66ab20ac  gcc/testsuite/gcc.dg/Wbad-function-cast-1.c
*************** fa34af530f0819d48745f85d1a99fb6d  gcc/te
*** 31110,31123 ****
  7566692ce56f5d8e565c6c8843c8cbd4  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-13.c
  ab52664274ba5b752e4f5ce0bd3d96cf  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-14.c
  c36a96f0a2054d693f222a7f39b91b3b  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-15.c
  2bb84c00111f6527a9304d59b8a154e2  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-2.c
  51888114842c76923a1f651aa8164d20  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-3.c
! 6aca32ed7e4387f07b916fdfa6266ad4  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-4.c
  6ac379a9179bcb846ad2589dfa8985b4  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-5.c
  5202898a25df5cc8ec38caa2f601f70f  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-6.c
  efce06ed4bf7a2b2d008a8d7dc7d7c5d  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-7.c
  87df707b31832d3a13ac5b7916a7f705  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-8.c
! bdbc145e08a843eebbaf0d279182690b  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-9.c
  3c23d0d31c840616639418091650b2b2  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch.c
  3987306283bace0fc6f28fca72555786  gcc/testsuite/gcc.dg/Wc++-compat.c
  f2b65bca6e66a382f6b71bfb0da71f93  gcc/testsuite/gcc.dg/Wc90-c99-compat-1.c
--- 33460,33475 ----
  7566692ce56f5d8e565c6c8843c8cbd4  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-13.c
  ab52664274ba5b752e4f5ce0bd3d96cf  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-14.c
  c36a96f0a2054d693f222a7f39b91b3b  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-15.c
+ 52b67d3eb6e8eef443e0a3f92d94b4d3  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-16.c
  2bb84c00111f6527a9304d59b8a154e2  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-2.c
  51888114842c76923a1f651aa8164d20  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-3.c
! 170a588446cae3e8cc514828ad956e96  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-4.c
  6ac379a9179bcb846ad2589dfa8985b4  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-5.c
  5202898a25df5cc8ec38caa2f601f70f  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-6.c
  efce06ed4bf7a2b2d008a8d7dc7d7c5d  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-7.c
  87df707b31832d3a13ac5b7916a7f705  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-8.c
! 8a8837539e33ca8ac417627e3ec2aa48  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-9.c
! 9b33351e5312ae176453336710b80112  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-ignore.c
  3c23d0d31c840616639418091650b2b2  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch.c
  3987306283bace0fc6f28fca72555786  gcc/testsuite/gcc.dg/Wc++-compat.c
  f2b65bca6e66a382f6b71bfb0da71f93  gcc/testsuite/gcc.dg/Wc90-c99-compat-1.c
*************** a3fccbf1a7232687802f00c0e1f6aa94  gcc/te
*** 31204,31209 ****
--- 33556,33565 ----
  8d0791011fc11919d43bcce331d009ee  gcc/testsuite/gcc.dg/Wframe-larger-than-2.c
  ef08bcadd8d487914acf2e600b7cdba9  gcc/testsuite/gcc.dg/Wframe-larger-than-3.c
  c0d5151a121a2bf7d609671e32fa7369  gcc/testsuite/gcc.dg/Wframe-larger-than.c
+ 2cbe255fb8526e8ca50c5dd883504ddd  gcc/testsuite/gcc.dg/Wfree-nonheap-object-2.c
+ e273443a6f4eccf5890b6c4d46998324  gcc/testsuite/gcc.dg/Wfree-nonheap-object-3.c
+ 15322620a340e31f77c3b61cdb0f6321  gcc/testsuite/gcc.dg/Wfree-nonheap-object-4.c
+ bffa4b7686d94b14a3aff3c48fbcbcc6  gcc/testsuite/gcc.dg/Wfree-nonheap-object.c
  cb738b6ee3ce33cfd417ae097ee81f56  gcc/testsuite/gcc.dg/Wimplicit-fallthrough-1.c
  ae92a1d93725fe1a5989579c55f7c873  gcc/testsuite/gcc.dg/Wimplicit-function-declaration-c89-default.c
  b2f857eeba51813f44aa61785c849357  gcc/testsuite/gcc.dg/Wimplicit-function-declaration-c89-pedantic.c
*************** afe3ee2ad32e9663adf1bf0ad0d91263  gcc/te
*** 31225,31230 ****
--- 33581,33589 ----
  9323a6a92dcf4c5b25b6c5bbd0d9345b  gcc/testsuite/gcc.dg/Wlarger-than3.c
  d79543b851bd31a8a690f71bf1604287  gcc/testsuite/gcc.dg/Wlarger-than4.c
  7a78b5f2f518e41ccc653581c0c185fa  gcc/testsuite/gcc.dg/Wlogical-op-1.c
+ 5b9ea5a8d55eeba7c4e4fa9121f05ed9  gcc/testsuite/gcc.dg/Wmismatched-dealloc-2.c
+ 059095539bcd6196f3b0457d59426e0d  gcc/testsuite/gcc.dg/Wmismatched-dealloc-3.c
+ e9b43cdaccdcfde39febbc540e1b23a1  gcc/testsuite/gcc.dg/Wmismatched-dealloc.c
  a97f092c5509b2033f63d1931d689d9c  gcc/testsuite/gcc.dg/Wmissing-attributes.c
  4dffc6d38cc584021e126813104bef46  gcc/testsuite/gcc.dg/Wmissing-braces-fixits.c
  35da4f7c3dc7c98520fafca7b32a76e7  gcc/testsuite/gcc.dg/Wmissing-parameter-type-Wextra.c
*************** cf21dd47d3e7a7fd332e4ebdad43f47f  gcc/te
*** 31236,31245 ****
  2fb7927f6cb43b738ac0c6c4695c7fed  gcc/testsuite/gcc.dg/Wno-all.c
  f273410ff764324a50afef028667ebe5  gcc/testsuite/gcc.dg/Wno-attribute-warning.c
  d45570f5347d0d2fceb2f46d5bb28195  gcc/testsuite/gcc.dg/Wno-c++-compat.c
! 2843490ca0540e4f75efd19bc45f6423  gcc/testsuite/gcc.dg/Wno-frame-address.c
  78b26e55f8111808885390fc48d39f07  gcc/testsuite/gcc.dg/Wno-pointer-sign.c
  86e970a811686b96a8c946217879e0b6  gcc/testsuite/gcc.dg/Wnonnull-2.c
  359b700d31704492b8af3694547fa2b7  gcc/testsuite/gcc.dg/Wnonnull-3.c
  12ac8bc4beaf9edbdf04979c8dfcb9e8  gcc/testsuite/gcc.dg/Wnonnull.c
  d7f40d768e2fdadb8ed5f332424b19cf  gcc/testsuite/gcc.dg/Wobjsize-1.c
  964f8252363c2458931200da17eaaa36  gcc/testsuite/gcc.dg/Wobjsize-1.h
--- 33595,33607 ----
  2fb7927f6cb43b738ac0c6c4695c7fed  gcc/testsuite/gcc.dg/Wno-all.c
  f273410ff764324a50afef028667ebe5  gcc/testsuite/gcc.dg/Wno-attribute-warning.c
  d45570f5347d0d2fceb2f46d5bb28195  gcc/testsuite/gcc.dg/Wno-c++-compat.c
! 3d8226a48302922b6854d6583a5de791  gcc/testsuite/gcc.dg/Wno-frame-address.c
  78b26e55f8111808885390fc48d39f07  gcc/testsuite/gcc.dg/Wno-pointer-sign.c
  86e970a811686b96a8c946217879e0b6  gcc/testsuite/gcc.dg/Wnonnull-2.c
  359b700d31704492b8af3694547fa2b7  gcc/testsuite/gcc.dg/Wnonnull-3.c
+ a8ed41f0035b4c09381758070ff0cc62  gcc/testsuite/gcc.dg/Wnonnull-4.c
+ 122d168a76610b5995ed8402529d4c4d  gcc/testsuite/gcc.dg/Wnonnull-5.c
+ 349ca7e23fb9ac66e9d5e90eeec2b9bc  gcc/testsuite/gcc.dg/Wnonnull-6.c
  12ac8bc4beaf9edbdf04979c8dfcb9e8  gcc/testsuite/gcc.dg/Wnonnull.c
  d7f40d768e2fdadb8ed5f332424b19cf  gcc/testsuite/gcc.dg/Wobjsize-1.c
  964f8252363c2458931200da17eaaa36  gcc/testsuite/gcc.dg/Wobjsize-1.h
*************** cbcad025f9db9dd9bc691ef7d570b45a  gcc/te
*** 31305,31330 ****
  7d01961948e81451fba10af184d093f0  gcc/testsuite/gcc.dg/Wrestrict-2.c
  43d30678ba33cddb6c841bf40dfdd00d  gcc/testsuite/gcc.dg/Wrestrict-20.c
  430fc6af8946de5e86d8f7257f6fd392  gcc/testsuite/gcc.dg/Wrestrict-21.c
  8419743602ff50406cde80f5966c551d  gcc/testsuite/gcc.dg/Wrestrict-3.c
  f2eda54521742f896f2566e9eb58a04d  gcc/testsuite/gcc.dg/Wrestrict-4.c
  f56e03be28331b4bfb167f5242de9f60  gcc/testsuite/gcc.dg/Wrestrict-5.c
  36417853230ae255ba34aed0d26d7ce9  gcc/testsuite/gcc.dg/Wrestrict-6.c
  fe0626428135706f333c543b692a92d1  gcc/testsuite/gcc.dg/Wrestrict-7.c
  ca4f1b5ab467df7523ff4071434ec4df  gcc/testsuite/gcc.dg/Wrestrict-8.c
! 84048cc58144742bc26abad7d02f9602  gcc/testsuite/gcc.dg/Wrestrict-9.c
  700e83815b3577c72420082462c3b61b  gcc/testsuite/gcc.dg/Wrestrict.c
  a03f514f500af8001574fcd81565c4f3  gcc/testsuite/gcc.dg/Wreturn-local-addr-10.c
! a930dfc9679e654bd31bd4321b2dc728  gcc/testsuite/gcc.dg/Wreturn-local-addr-2.c
! 6ed12063a65902ff8f5eab321628ddc8  gcc/testsuite/gcc.dg/Wreturn-local-addr-3.c
! 622525bc9beb11b0683de98635e99f3d  gcc/testsuite/gcc.dg/Wreturn-local-addr-4.c
  7c92cb5dc7fd32304a6c5b0aa3389f7e  gcc/testsuite/gcc.dg/Wreturn-local-addr-5.c
! d95ad8c1dd5967bdc9c5dddf2ced088f  gcc/testsuite/gcc.dg/Wreturn-local-addr-6.c
  fa730b9c27f8bb9bf2ffba2e5f5eb6b3  gcc/testsuite/gcc.dg/Wreturn-local-addr-7.c
  5abe9ee55436dc7786de8e7b8e103f35  gcc/testsuite/gcc.dg/Wreturn-local-addr-8.c
  1710ae940d1c034fe8d203bc32766332  gcc/testsuite/gcc.dg/Wreturn-local-addr-9.c
  273fe6c85c6f362c0ae3de1a2bf4755f  gcc/testsuite/gcc.dg/Wreturn-local-addr.c
  6fe9a73749a8da4ecb255e790a1cc26f  gcc/testsuite/gcc.dg/Wreturn-type.c
  13346214a933b039e18e4797462ec5c7  gcc/testsuite/gcc.dg/Wreturn-type2.c
  8fb4b9a6c1d26c1e9bde7782d85ab4db  gcc/testsuite/gcc.dg/Wsequence-point-pr18050.c
  ba00dd90a738fcf012b52b2de2803708  gcc/testsuite/gcc.dg/Wshadow-1.c
  976b3de3264afbbae8a2106e5bfd616b  gcc/testsuite/gcc.dg/Wshadow-2.c
--- 33667,33694 ----
  7d01961948e81451fba10af184d093f0  gcc/testsuite/gcc.dg/Wrestrict-2.c
  43d30678ba33cddb6c841bf40dfdd00d  gcc/testsuite/gcc.dg/Wrestrict-20.c
  430fc6af8946de5e86d8f7257f6fd392  gcc/testsuite/gcc.dg/Wrestrict-21.c
+ d49a9b700850d16301f8a6b3602788e1  gcc/testsuite/gcc.dg/Wrestrict-22.c
  8419743602ff50406cde80f5966c551d  gcc/testsuite/gcc.dg/Wrestrict-3.c
  f2eda54521742f896f2566e9eb58a04d  gcc/testsuite/gcc.dg/Wrestrict-4.c
  f56e03be28331b4bfb167f5242de9f60  gcc/testsuite/gcc.dg/Wrestrict-5.c
  36417853230ae255ba34aed0d26d7ce9  gcc/testsuite/gcc.dg/Wrestrict-6.c
  fe0626428135706f333c543b692a92d1  gcc/testsuite/gcc.dg/Wrestrict-7.c
  ca4f1b5ab467df7523ff4071434ec4df  gcc/testsuite/gcc.dg/Wrestrict-8.c
! cea920b3a29300c471794198f93fc0a4  gcc/testsuite/gcc.dg/Wrestrict-9.c
  700e83815b3577c72420082462c3b61b  gcc/testsuite/gcc.dg/Wrestrict.c
  a03f514f500af8001574fcd81565c4f3  gcc/testsuite/gcc.dg/Wreturn-local-addr-10.c
! 558cdcfdbcea2e951ca16bb9dc822999  gcc/testsuite/gcc.dg/Wreturn-local-addr-2.c
! ba93ea27d2cd79e4a77d24e7eb571ed7  gcc/testsuite/gcc.dg/Wreturn-local-addr-3.c
! 448c664bb6cb77859bafe80c20d85ff8  gcc/testsuite/gcc.dg/Wreturn-local-addr-4.c
  7c92cb5dc7fd32304a6c5b0aa3389f7e  gcc/testsuite/gcc.dg/Wreturn-local-addr-5.c
! a0209913132e94c550d86d3ec5c6a0d1  gcc/testsuite/gcc.dg/Wreturn-local-addr-6.c
  fa730b9c27f8bb9bf2ffba2e5f5eb6b3  gcc/testsuite/gcc.dg/Wreturn-local-addr-7.c
  5abe9ee55436dc7786de8e7b8e103f35  gcc/testsuite/gcc.dg/Wreturn-local-addr-8.c
  1710ae940d1c034fe8d203bc32766332  gcc/testsuite/gcc.dg/Wreturn-local-addr-9.c
  273fe6c85c6f362c0ae3de1a2bf4755f  gcc/testsuite/gcc.dg/Wreturn-local-addr.c
  6fe9a73749a8da4ecb255e790a1cc26f  gcc/testsuite/gcc.dg/Wreturn-type.c
  13346214a933b039e18e4797462ec5c7  gcc/testsuite/gcc.dg/Wreturn-type2.c
+ 1566816b16d321a8375c1a99ca768245  gcc/testsuite/gcc.dg/Wreturn-type3.c
  8fb4b9a6c1d26c1e9bde7782d85ab4db  gcc/testsuite/gcc.dg/Wsequence-point-pr18050.c
  ba00dd90a738fcf012b52b2de2803708  gcc/testsuite/gcc.dg/Wshadow-1.c
  976b3de3264afbbae8a2106e5bfd616b  gcc/testsuite/gcc.dg/Wshadow-2.c
*************** cc7f39c7e255ea356ff676dbdce55538  gcc/te
*** 31337,31344 ****
  c12d0314b764a8bf5274d839b36d0546  gcc/testsuite/gcc.dg/Wshadow-local-3.c
  cf54ea7bbdd51f8c8836196a2245b7a3  gcc/testsuite/gcc.dg/Wsign-compare-1.c
  237f1b26e4102299eec1e1bba599997e  gcc/testsuite/gcc.dg/Wsign-conversion.c
! afe50c3c8f87b9cc95e9346e7fd790d9  gcc/testsuite/gcc.dg/Wsizeof-pointer-memaccess1.c
! d0d0077384ea3d376bc5c7ec94859407  gcc/testsuite/gcc.dg/Wstack-usage.c
  3a7ae7960ae82ab1685a31948e9dec07  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-const-ptr-nonconst-ptr.c
  9016254766f4f60f27ba7db959765253  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-never-dereferenced.c
  11133e767498d2c300e770ea51fbecd5  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-pta-1.c
--- 33701,33708 ----
  c12d0314b764a8bf5274d839b36d0546  gcc/testsuite/gcc.dg/Wshadow-local-3.c
  cf54ea7bbdd51f8c8836196a2245b7a3  gcc/testsuite/gcc.dg/Wsign-compare-1.c
  237f1b26e4102299eec1e1bba599997e  gcc/testsuite/gcc.dg/Wsign-conversion.c
! 76d5ef4f4368a8a8e196627028eff45e  gcc/testsuite/gcc.dg/Wsizeof-pointer-memaccess1.c
! 598e33a7a2676c8ca6803c6d453487ea  gcc/testsuite/gcc.dg/Wstack-usage.c
  3a7ae7960ae82ab1685a31948e9dec07  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-const-ptr-nonconst-ptr.c
  9016254766f4f60f27ba7db959765253  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-never-dereferenced.c
  11133e767498d2c300e770ea51fbecd5  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-pta-1.c
*************** b4fa8ef0543e57cfa53079c5788efd7b  gcc/te
*** 31367,31373 ****
  c6b34215adb77d2d1d506195471e2c42  gcc/testsuite/gcc.dg/Wstrict-overflow-22.c
  bfc663ffe6e57f766fa3d5ea61094f45  gcc/testsuite/gcc.dg/Wstrict-overflow-23.c
  3b6ef5e52e800d297a469573a036037e  gcc/testsuite/gcc.dg/Wstrict-overflow-24.c
! 57978405912360cfa636df83a32492ad  gcc/testsuite/gcc.dg/Wstrict-overflow-25.c
  2ae95adea145503dd29f9ab2e813f13e  gcc/testsuite/gcc.dg/Wstrict-overflow-26.c
  a06e16e230ac019477b77494aeb0fec0  gcc/testsuite/gcc.dg/Wstrict-overflow-27.c
  bb2099f1da2a18a8306bbf5e15b7e411  gcc/testsuite/gcc.dg/Wstrict-overflow-3.c
--- 33731,33737 ----
  c6b34215adb77d2d1d506195471e2c42  gcc/testsuite/gcc.dg/Wstrict-overflow-22.c
  bfc663ffe6e57f766fa3d5ea61094f45  gcc/testsuite/gcc.dg/Wstrict-overflow-23.c
  3b6ef5e52e800d297a469573a036037e  gcc/testsuite/gcc.dg/Wstrict-overflow-24.c
! 1183e3a61062495f2a2c7d53c3304fc4  gcc/testsuite/gcc.dg/Wstrict-overflow-25.c
  2ae95adea145503dd29f9ab2e813f13e  gcc/testsuite/gcc.dg/Wstrict-overflow-26.c
  a06e16e230ac019477b77494aeb0fec0  gcc/testsuite/gcc.dg/Wstrict-overflow-27.c
  bb2099f1da2a18a8306bbf5e15b7e411  gcc/testsuite/gcc.dg/Wstrict-overflow-3.c
*************** bb2099f1da2a18a8306bbf5e15b7e411  gcc/te
*** 31378,31425 ****
  dca4d071a83223262a2d5fa630b1dce7  gcc/testsuite/gcc.dg/Wstrict-overflow-8.c
  c31d451fdf70251ea95a67385daae0da  gcc/testsuite/gcc.dg/Wstrict-overflow-9.c
  d16c4746f11d3c8c32ad67a5f38a857d  gcc/testsuite/gcc.dg/Wstring-compare-2.c
  e887fe774c4998e55326ddafc6795bed  gcc/testsuite/gcc.dg/Wstring-compare.c
  b2ac295c001e28b6659dd1cbaecfc2a9  gcc/testsuite/gcc.dg/Wstring-literal-comparison-1.c
  c608f5d02a06d2e24d8ab0ca0d977f67  gcc/testsuite/gcc.dg/Wstring-literal-comparison-2.c
  a0b497dc1f8dc8ce49f81bc391f0deb1  gcc/testsuite/gcc.dg/Wstring-literal-comparison-3.c
  839fdbb04e93708d893f0f0e3f961ef5  gcc/testsuite/gcc.dg/Wstring-literal-comparison-4.c
! 4a0505bb7e1d5be1e9fe09a75f403842  gcc/testsuite/gcc.dg/Wstringop-overflow-10.c
! cad914648d153bd836024253f8ecc46c  gcc/testsuite/gcc.dg/Wstringop-overflow-11.c
! 39ad7553f5c685d24e14e55b6a0e5623  gcc/testsuite/gcc.dg/Wstringop-overflow-12.c
  678dd8795e2d4b71950da04a334572b3  gcc/testsuite/gcc.dg/Wstringop-overflow-13.c
  577f745388a86398d56f13ea1f0206e2  gcc/testsuite/gcc.dg/Wstringop-overflow-14.c
! 6bea3e2b3d8f8329e232486ed0388755  gcc/testsuite/gcc.dg/Wstringop-overflow-15.c
  e2fac449ae832c81aae5b9abe7514224  gcc/testsuite/gcc.dg/Wstringop-overflow-16.c
! 0e3f5d76fcbc6d756fb0bb485aec9681  gcc/testsuite/gcc.dg/Wstringop-overflow-17.c
  0a51125b45f5bb7eef06d222d474237a  gcc/testsuite/gcc.dg/Wstringop-overflow-18.c
  b5a3ffd63651849d688100d2798c30b6  gcc/testsuite/gcc.dg/Wstringop-overflow-19.c
  af4e5809f9266e2fb666c9460e41953b  gcc/testsuite/gcc.dg/Wstringop-overflow-2.c
  27fcd84b8007a626fab9afdda1e6539e  gcc/testsuite/gcc.dg/Wstringop-overflow-20.c
  8c6011cc4d33e34f8175a3f1987b560e  gcc/testsuite/gcc.dg/Wstringop-overflow-21.c
! 665284446fee137cc88c0aef6b96d5c2  gcc/testsuite/gcc.dg/Wstringop-overflow-22.c
! 9ddb40459f2773714feaf1dad7bb03cd  gcc/testsuite/gcc.dg/Wstringop-overflow-23.c
! d3b6d28bb7b82c8adcf28e5d05965a4e  gcc/testsuite/gcc.dg/Wstringop-overflow-24.c
! a5f711b68699ddb0dae9c06f24910625  gcc/testsuite/gcc.dg/Wstringop-overflow-25.c
  a12f3d3cadf20e360082b45e4281ddf9  gcc/testsuite/gcc.dg/Wstringop-overflow-26.c
! ae95c4d679463885d5e5154c0ad671f9  gcc/testsuite/gcc.dg/Wstringop-overflow-27.c
! 0b488d63c6154e37228d1c1fe134c77a  gcc/testsuite/gcc.dg/Wstringop-overflow-28.c
! 282107b9a90f9bf53656b70af268a5ba  gcc/testsuite/gcc.dg/Wstringop-overflow-29.c
  5d48ea7df70ba4f96d66951fae7159f6  gcc/testsuite/gcc.dg/Wstringop-overflow-3.c
  7c84e0c01a5c5e3d3007bf94ba654a0f  gcc/testsuite/gcc.dg/Wstringop-overflow-30.c
  cc8e118f33fe820b55d7576cd6e8fb7d  gcc/testsuite/gcc.dg/Wstringop-overflow-31.c
  668a5a1b6231cf303a907b7876c1f9af  gcc/testsuite/gcc.dg/Wstringop-overflow-32.c
  975f320b4cadb606592c196f32d08f02  gcc/testsuite/gcc.dg/Wstringop-overflow-4.c
  b6e551c9441e53cd1be6e84faec996ed  gcc/testsuite/gcc.dg/Wstringop-overflow-5.c
  3ed0228ee42fdeeee600954a398a1234  gcc/testsuite/gcc.dg/Wstringop-overflow-6.c
  739ccb86ac13fef9cbd1d60df950a4b5  gcc/testsuite/gcc.dg/Wstringop-overflow-8.c
! 06200f42c1136753848f7e8305c5828c  gcc/testsuite/gcc.dg/Wstringop-overflow-9.c
! a8bda9df612c3a9b646c6cbd213d0746  gcc/testsuite/gcc.dg/Wstringop-overflow.c
  77f8b46e5b817f35a15c273b28d5ea1d  gcc/testsuite/gcc.dg/Wstringop-truncation-2.c
  123dc9f0fa7c858d0a700362851787d2  gcc/testsuite/gcc.dg/Wstringop-truncation-3.c
  ac58f2a58734d632defb053d4fc5cd8d  gcc/testsuite/gcc.dg/Wstringop-truncation-4.c
  d340fb2bff4bae993fdc64a768dad9a1  gcc/testsuite/gcc.dg/Wstringop-truncation-5.c
  3c1253e8229d27969906a7fa1ae6cdb1  gcc/testsuite/gcc.dg/Wstringop-truncation-6.c
  baf3cd22f28d859b2ec832b01d23c451  gcc/testsuite/gcc.dg/Wstringop-truncation-8.c
  f65f24bc4270d9f36a9993e2724b5b55  gcc/testsuite/gcc.dg/Wstringop-truncation.c
  063811cae4064dfe33ddbcd11e9f93ee  gcc/testsuite/gcc.dg/Wswitch-2.c
  fffa3daae0aa096b127d7b76b64fdeba  gcc/testsuite/gcc.dg/Wswitch-default.c
--- 33742,33830 ----
  dca4d071a83223262a2d5fa630b1dce7  gcc/testsuite/gcc.dg/Wstrict-overflow-8.c
  c31d451fdf70251ea95a67385daae0da  gcc/testsuite/gcc.dg/Wstrict-overflow-9.c
  d16c4746f11d3c8c32ad67a5f38a857d  gcc/testsuite/gcc.dg/Wstring-compare-2.c
+ 48bbf69aa65d298f7a9efb1da71474cf  gcc/testsuite/gcc.dg/Wstring-compare-3.c
  e887fe774c4998e55326ddafc6795bed  gcc/testsuite/gcc.dg/Wstring-compare.c
  b2ac295c001e28b6659dd1cbaecfc2a9  gcc/testsuite/gcc.dg/Wstring-literal-comparison-1.c
  c608f5d02a06d2e24d8ab0ca0d977f67  gcc/testsuite/gcc.dg/Wstring-literal-comparison-2.c
  a0b497dc1f8dc8ce49f81bc391f0deb1  gcc/testsuite/gcc.dg/Wstring-literal-comparison-3.c
  839fdbb04e93708d893f0f0e3f961ef5  gcc/testsuite/gcc.dg/Wstring-literal-comparison-4.c
! 633e342b1f1848dfffdc4e7671a9e67d  gcc/testsuite/gcc.dg/Wstringop-overflow-10.c
! 571a6cfdad81bc7b1b2e9bd67b6a9973  gcc/testsuite/gcc.dg/Wstringop-overflow-11.c
! b37ad851100f4bbe9a93d013de6855e6  gcc/testsuite/gcc.dg/Wstringop-overflow-12.c
  678dd8795e2d4b71950da04a334572b3  gcc/testsuite/gcc.dg/Wstringop-overflow-13.c
  577f745388a86398d56f13ea1f0206e2  gcc/testsuite/gcc.dg/Wstringop-overflow-14.c
! 5ae7d3be56041b88dcde3575ba0cd7d6  gcc/testsuite/gcc.dg/Wstringop-overflow-15.c
  e2fac449ae832c81aae5b9abe7514224  gcc/testsuite/gcc.dg/Wstringop-overflow-16.c
! d366ca5d83db48731bafe29064edaa87  gcc/testsuite/gcc.dg/Wstringop-overflow-17.c
  0a51125b45f5bb7eef06d222d474237a  gcc/testsuite/gcc.dg/Wstringop-overflow-18.c
  b5a3ffd63651849d688100d2798c30b6  gcc/testsuite/gcc.dg/Wstringop-overflow-19.c
  af4e5809f9266e2fb666c9460e41953b  gcc/testsuite/gcc.dg/Wstringop-overflow-2.c
  27fcd84b8007a626fab9afdda1e6539e  gcc/testsuite/gcc.dg/Wstringop-overflow-20.c
  8c6011cc4d33e34f8175a3f1987b560e  gcc/testsuite/gcc.dg/Wstringop-overflow-21.c
! 0e40c3c68f4dd0be9285c294a2eff04f  gcc/testsuite/gcc.dg/Wstringop-overflow-22.c
! 1f59494ebaecbe071a2c01d2905e2063  gcc/testsuite/gcc.dg/Wstringop-overflow-23.c
! c5b2dc2356fd5ccabe71e439d6ef62df  gcc/testsuite/gcc.dg/Wstringop-overflow-24.c
! b3c7a2a93013311f2a1426d17d94074d  gcc/testsuite/gcc.dg/Wstringop-overflow-25.c
  a12f3d3cadf20e360082b45e4281ddf9  gcc/testsuite/gcc.dg/Wstringop-overflow-26.c
! d75556624422f599c13c9d1a65bd84fb  gcc/testsuite/gcc.dg/Wstringop-overflow-27.c
! 5f31e355a7e7583abaf12963e0889e77  gcc/testsuite/gcc.dg/Wstringop-overflow-28.c
! d66169d9c9200a12f5a885f937a1f21c  gcc/testsuite/gcc.dg/Wstringop-overflow-29.c
  5d48ea7df70ba4f96d66951fae7159f6  gcc/testsuite/gcc.dg/Wstringop-overflow-3.c
  7c84e0c01a5c5e3d3007bf94ba654a0f  gcc/testsuite/gcc.dg/Wstringop-overflow-30.c
  cc8e118f33fe820b55d7576cd6e8fb7d  gcc/testsuite/gcc.dg/Wstringop-overflow-31.c
  668a5a1b6231cf303a907b7876c1f9af  gcc/testsuite/gcc.dg/Wstringop-overflow-32.c
+ 77fe78ac00612e3e71920645caa45a04  gcc/testsuite/gcc.dg/Wstringop-overflow-33.c
+ 9439b755b18aadc5f72f353cc7600653  gcc/testsuite/gcc.dg/Wstringop-overflow-34.c
+ 13754b916e5864101bd91a8f527bcd2a  gcc/testsuite/gcc.dg/Wstringop-overflow-35.c
+ 5716c2c5f024632a181daf9fa118beda  gcc/testsuite/gcc.dg/Wstringop-overflow-36.c
+ a9379e3d73fc65bf48db2f440d0394fb  gcc/testsuite/gcc.dg/Wstringop-overflow-37.c
+ e75c1027bb0b8f2c2697b6cee86bfd67  gcc/testsuite/gcc.dg/Wstringop-overflow-38.c
+ ba118a95c99308209283d1459a41d71c  gcc/testsuite/gcc.dg/Wstringop-overflow-39.c
  975f320b4cadb606592c196f32d08f02  gcc/testsuite/gcc.dg/Wstringop-overflow-4.c
+ a73c11cb63e83bca9055ba05c4e88b53  gcc/testsuite/gcc.dg/Wstringop-overflow-40.c
+ 2bcf86ddb4cab5b647a6699c8dd586f5  gcc/testsuite/gcc.dg/Wstringop-overflow-41.c
+ cedc6d362f1bd13505f6fdf4dcaa101f  gcc/testsuite/gcc.dg/Wstringop-overflow-42.c
+ 575754f25245323aa2916c8b2f7bbf53  gcc/testsuite/gcc.dg/Wstringop-overflow-43.c
+ 855fbbdc3d5be4f2d0684e44e4fec515  gcc/testsuite/gcc.dg/Wstringop-overflow-44.c
+ d4f0d56a7c087ab9e26e9e5b226957e0  gcc/testsuite/gcc.dg/Wstringop-overflow-45.c
+ cc0f088dbb6a7164eecab4a65ac543a9  gcc/testsuite/gcc.dg/Wstringop-overflow-46.c
+ 7ac6d0bbb8c05eac4c5a2e73f640cee7  gcc/testsuite/gcc.dg/Wstringop-overflow-47.c
+ e47b31031fbcddf0625b2f4928216e92  gcc/testsuite/gcc.dg/Wstringop-overflow-49.c
  b6e551c9441e53cd1be6e84faec996ed  gcc/testsuite/gcc.dg/Wstringop-overflow-5.c
+ 8f7f0322c20d1913c505cfa93fc16056  gcc/testsuite/gcc.dg/Wstringop-overflow-50.c
+ 30bfa774158fdf94ab4e1ec6ba1d5d1c  gcc/testsuite/gcc.dg/Wstringop-overflow-51.c
+ c815b2efdf55c4de505762685ef71bc5  gcc/testsuite/gcc.dg/Wstringop-overflow-52.c
+ 3b40f9fa6398b4ac96d54b52985854c7  gcc/testsuite/gcc.dg/Wstringop-overflow-53.c
+ 0f7f0c6fd8115112808853d1769b2b23  gcc/testsuite/gcc.dg/Wstringop-overflow-54.c
+ 81fa21cbbddfba979b4a6037e013769c  gcc/testsuite/gcc.dg/Wstringop-overflow-55.c
+ 69fe355ae220e5f0eb451b036a3e7945  gcc/testsuite/gcc.dg/Wstringop-overflow-56.c
+ c3428e5083743bc319eaa32eaa6d9a6a  gcc/testsuite/gcc.dg/Wstringop-overflow-57.c
+ 4722c1c11d466b375de20aa8d4f1588b  gcc/testsuite/gcc.dg/Wstringop-overflow-58.c
+ 6caa97f015a492b8ee0412091922238e  gcc/testsuite/gcc.dg/Wstringop-overflow-59.c
  3ed0228ee42fdeeee600954a398a1234  gcc/testsuite/gcc.dg/Wstringop-overflow-6.c
+ 7bbffc672c74ca8a522c2041f9deb5ee  gcc/testsuite/gcc.dg/Wstringop-overflow-60.c
+ 13806369a45fb57dae28977cfc2ecadb  gcc/testsuite/gcc.dg/Wstringop-overflow-61.c
+ ee38ba18b584e17241b5c4dbe845e71e  gcc/testsuite/gcc.dg/Wstringop-overflow-62.c
+ 5f5bbe8b13d63449ad123893fd334f76  gcc/testsuite/gcc.dg/Wstringop-overflow-63.c
+ ca15ac122386ace1c5f64e5fc3ed9352  gcc/testsuite/gcc.dg/Wstringop-overflow-64.c
+ ba09b89eacd1a1f030c52761621d27c3  gcc/testsuite/gcc.dg/Wstringop-overflow-65.c
+ a8fd1d734e0d0078a564b6c6951f3f06  gcc/testsuite/gcc.dg/Wstringop-overflow-66.c
+ 11b9e3955ab46194825fbf5d88ba5648  gcc/testsuite/gcc.dg/Wstringop-overflow-7.c
  739ccb86ac13fef9cbd1d60df950a4b5  gcc/testsuite/gcc.dg/Wstringop-overflow-8.c
! efc30ea8232c5270c8cbd61b0a271ef1  gcc/testsuite/gcc.dg/Wstringop-overflow-9.c
! f16f5c5471020dfe24813accb55a72a7  gcc/testsuite/gcc.dg/Wstringop-overflow.c
! 82a023f65dab8d4e888e7b6af021dc1d  gcc/testsuite/gcc.dg/Wstringop-overread-2.c
! ce1a42317ef0bc7599074fc1fe734a77  gcc/testsuite/gcc.dg/Wstringop-overread-3.c
! 2b88278edbf923406d84a3e78cb08c26  gcc/testsuite/gcc.dg/Wstringop-overread-4.c
! 42b1936595b9e663e43d14172db8178e  gcc/testsuite/gcc.dg/Wstringop-overread-5.c
! 086cf53083b996ca149eb7632e452a82  gcc/testsuite/gcc.dg/Wstringop-overread.c
  77f8b46e5b817f35a15c273b28d5ea1d  gcc/testsuite/gcc.dg/Wstringop-truncation-2.c
  123dc9f0fa7c858d0a700362851787d2  gcc/testsuite/gcc.dg/Wstringop-truncation-3.c
  ac58f2a58734d632defb053d4fc5cd8d  gcc/testsuite/gcc.dg/Wstringop-truncation-4.c
  d340fb2bff4bae993fdc64a768dad9a1  gcc/testsuite/gcc.dg/Wstringop-truncation-5.c
  3c1253e8229d27969906a7fa1ae6cdb1  gcc/testsuite/gcc.dg/Wstringop-truncation-6.c
  baf3cd22f28d859b2ec832b01d23c451  gcc/testsuite/gcc.dg/Wstringop-truncation-8.c
+ 77155a31fb8b537609b740a460da7d04  gcc/testsuite/gcc.dg/Wstringop-truncation-9.c
  f65f24bc4270d9f36a9993e2724b5b55  gcc/testsuite/gcc.dg/Wstringop-truncation.c
  063811cae4064dfe33ddbcd11e9f93ee  gcc/testsuite/gcc.dg/Wswitch-2.c
  fffa3daae0aa096b127d7b76b64fdeba  gcc/testsuite/gcc.dg/Wswitch-default.c
*************** b253477a3902ebd779d9157f874209db  gcc/te
*** 31444,31449 ****
--- 33849,33855 ----
  a26163cac9d2b7f9af5ad4374cec57b0  gcc/testsuite/gcc.dg/Wunused-label-1.c
  4a11600660260a54a1edb6ab26868a8d  gcc/testsuite/gcc.dg/Wunused-local-typedefs.c
  b78ad59c1fd73748fa964daace29fe76  gcc/testsuite/gcc.dg/Wunused-parm-1.c
+ 2b3a836eaff7da84551c312f59a1ba9a  gcc/testsuite/gcc.dg/Wunused-result.c
  b31b0721d3eba986f699c77f9409f23c  gcc/testsuite/gcc.dg/Wunused-value-1.c
  0e2f3b92f8f7cad06f95763f4f3e4a46  gcc/testsuite/gcc.dg/Wunused-value-2.c
  a13eb5b6d56da8e97b1f212cb86cf10e  gcc/testsuite/gcc.dg/Wunused-value-3.c
*************** e84c031d0cb7a11693c4b37f0142bded  gcc/te
*** 31461,31469 ****
  3dcd82b8bf10367d8a50030a2aaf75e4  gcc/testsuite/gcc.dg/Wvla-6.c
  f6407be4600095686ecc96595d2738b5  gcc/testsuite/gcc.dg/Wvla-7.c
  d82ccf26405a48ba48cf01a532ba9660  gcc/testsuite/gcc.dg/Wvla-larger-than-1.c
! 2c15d91570d383e63dc02b5321705864  gcc/testsuite/gcc.dg/Wvla-larger-than-2.c
  cfa79c0ccdb4661ab37d8dd91c0b69c2  gcc/testsuite/gcc.dg/Wvla-larger-than-3.c
! 3ad546376a0787ce65973caf6dfc24e3  gcc/testsuite/gcc.dg/Wvla-larger-than-4.c
  5fffb57610eb1fa0134cbf5e15786d2f  gcc/testsuite/gcc.dg/Wwrite-strings-1.c
  cae758f0744109b377d852d3f70c4bb4  gcc/testsuite/gcc.dg/Wzero-length-array-bounds-2.c
  fdd470d58568d2da9fbf935b7a830003  gcc/testsuite/gcc.dg/Wzero-length-array-bounds.c
--- 33867,33883 ----
  3dcd82b8bf10367d8a50030a2aaf75e4  gcc/testsuite/gcc.dg/Wvla-6.c
  f6407be4600095686ecc96595d2738b5  gcc/testsuite/gcc.dg/Wvla-7.c
  d82ccf26405a48ba48cf01a532ba9660  gcc/testsuite/gcc.dg/Wvla-larger-than-1.c
! c8849c136769b4d5fe441ab284b49719  gcc/testsuite/gcc.dg/Wvla-larger-than-2.c
  cfa79c0ccdb4661ab37d8dd91c0b69c2  gcc/testsuite/gcc.dg/Wvla-larger-than-3.c
! 93fd4352fb385bc1039adcaf51e1723d  gcc/testsuite/gcc.dg/Wvla-larger-than-4.c
! bb6bfe4639819fd02e238129b72af1c1  gcc/testsuite/gcc.dg/Wvla-parameter-2.c
! 62a2c486287bf98e7759d9a79900a83f  gcc/testsuite/gcc.dg/Wvla-parameter-3.c
! 7b7fde0c88aeeb625320c956342a669d  gcc/testsuite/gcc.dg/Wvla-parameter-4.c
! c0135afc5269c6f871dc2d0d446ace02  gcc/testsuite/gcc.dg/Wvla-parameter-5.c
! 9816fc98d7e0e6bfff4591725207d6f3  gcc/testsuite/gcc.dg/Wvla-parameter-6.c
! 4581771b1d9ff810d049b8ce329f44c9  gcc/testsuite/gcc.dg/Wvla-parameter-7.c
! 7ff33616e48a67890693f52bd25ae101  gcc/testsuite/gcc.dg/Wvla-parameter-8.c
! 719e8d0d3ef2404f3da8959ccf484f95  gcc/testsuite/gcc.dg/Wvla-parameter.c
  5fffb57610eb1fa0134cbf5e15786d2f  gcc/testsuite/gcc.dg/Wwrite-strings-1.c
  cae758f0744109b377d852d3f70c4bb4  gcc/testsuite/gcc.dg/Wzero-length-array-bounds-2.c
  fdd470d58568d2da9fbf935b7a830003  gcc/testsuite/gcc.dg/Wzero-length-array-bounds.c
*************** b3869c9bd68bb9659f230f48bf56f83c  gcc/te
*** 31494,31597 ****
  5ad6d0d750af2e3c8488e96cfa1aa195  gcc/testsuite/gcc.dg/always_inline2.c
  99fe8a4ba9676a42a20bb593c81371e0  gcc/testsuite/gcc.dg/always_inline3.c
  2f201e4820ee4947af45383e1434d613  gcc/testsuite/gcc.dg/analyzer/20020129-1.c
! e4b7019a901624ca32609262dee70622  gcc/testsuite/gcc.dg/analyzer/CVE-2005-1689-dedupe-issue.c
! 901aed1e270b8639e12f7b18f707cc08  gcc/testsuite/gcc.dg/analyzer/CVE-2005-1689-minimal.c
  2a4fb2c70afac3ec00d2aa07665c4bec  gcc/testsuite/gcc.dg/analyzer/abort.c
! 82e8957ff0b54fc2f5571137a9d7fd7d  gcc/testsuite/gcc.dg/analyzer/alloca-leak.c
! 72dd688f580f18e56a2822cdbb571760  gcc/testsuite/gcc.dg/analyzer/analyzer-decls.h
  90dda8fe240a90810c6e1ceac986f94d  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-0.c
  4a550fb2a3d0da71845491af53126fc1  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-1.c
  4af04acb904167afb9365e7d69bb67d7  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-2.c
  49f34d122be90ac08b79866dc15f776d  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-2a.c
  91071d4bdc9f508d03823383cfe8302a  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-3.c
  936c1358c732a05bab2a8932de0b6544  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-3a.c
! c2b7216cc2b7e1d3a1cfd4f2fb3c3c23  gcc/testsuite/gcc.dg/analyzer/analyzer.exp
! 13efec8b09eb316f7d4122d7ddaf1192  gcc/testsuite/gcc.dg/analyzer/attribute-nonnull.c
  768424351f1b238f53407ec9bb29e126  gcc/testsuite/gcc.dg/analyzer/call-summaries-1.c
! a62354e19a794afb3e5b627c152104d7  gcc/testsuite/gcc.dg/analyzer/compound-assignment-1.c
  a60083781c2444fc0afb93119adde9cd  gcc/testsuite/gcc.dg/analyzer/compound-assignment-2.c
! a0743765aee35ad1debd1d115cf9fd0a  gcc/testsuite/gcc.dg/analyzer/compound-assignment-3.c
! 3f8f9bf7f9e9f610a6137e05055a4b5c  gcc/testsuite/gcc.dg/analyzer/conditionals-3.c
! abbef7f64d5848db646ee99f4bb78d83  gcc/testsuite/gcc.dg/analyzer/conditionals-notrans.c
  8cfdc88c0b5a96aa0b303a5409085dfc  gcc/testsuite/gcc.dg/analyzer/conditionals-trans.c
! f2f093a79675258864df995b7fce24c3  gcc/testsuite/gcc.dg/analyzer/data-model-1.c
! e13c5ec8115d2fd77663dc4dba8bd0eb  gcc/testsuite/gcc.dg/analyzer/data-model-10.c
  6c6fdb499c22eb058dcbea40374d2696  gcc/testsuite/gcc.dg/analyzer/data-model-11.c
  9117b1e1f037bbea1974142b15b71ebf  gcc/testsuite/gcc.dg/analyzer/data-model-12.c
! 37c58d5050b1e1c8f900af35ba718081  gcc/testsuite/gcc.dg/analyzer/data-model-13.c
! cbbbe3f2980d9579945a1b737d6748e4  gcc/testsuite/gcc.dg/analyzer/data-model-14.c
  1360165d72546f0514e05f720ac9fe62  gcc/testsuite/gcc.dg/analyzer/data-model-15.c
! 735a779588e61cac1d0a612346b2003f  gcc/testsuite/gcc.dg/analyzer/data-model-16.c
  2dd1b0e38379c6d256ce6fb601769518  gcc/testsuite/gcc.dg/analyzer/data-model-17.c
! fee1b8a6f35cb8324eabdd8edfc3ae67  gcc/testsuite/gcc.dg/analyzer/data-model-18.c
  7eb55f055f46c9020d8e30ecaf87a8ec  gcc/testsuite/gcc.dg/analyzer/data-model-19.c
  4553c74241f2cd9efbf26371de99807d  gcc/testsuite/gcc.dg/analyzer/data-model-2.c
  e7daf7589a18b2ab24bdc2f3f62367d5  gcc/testsuite/gcc.dg/analyzer/data-model-4.c
! bd50bcb676b27b8756f1d3314e7a828c  gcc/testsuite/gcc.dg/analyzer/data-model-5.c
! 16a8bff026c7e16721b5fe73c1474199  gcc/testsuite/gcc.dg/analyzer/data-model-5b.c
! d411eb06597e3d637a4c3448dc4bf48f  gcc/testsuite/gcc.dg/analyzer/data-model-5c.c
! b23229f3203e11e84929eff6449beb44  gcc/testsuite/gcc.dg/analyzer/data-model-5d.c
! 4f328cc8ed7c748cf29c3a7da524d7d5  gcc/testsuite/gcc.dg/analyzer/data-model-6.c
  be7aafbe051db1d04fdb6dda26644e29  gcc/testsuite/gcc.dg/analyzer/data-model-7.c
! 3277b998dd20dc90d5012446de1ae6a5  gcc/testsuite/gcc.dg/analyzer/data-model-8.c
  31f1a32a7438f9e74a61e8b03567a77e  gcc/testsuite/gcc.dg/analyzer/data-model-9.c
  e9598af7814c9b574008795653746252  gcc/testsuite/gcc.dg/analyzer/data-model-path-1.c
  13ffe607de30212adc9ebda16cc7cbbc  gcc/testsuite/gcc.dg/analyzer/disabling.c
! c9e33535bc3a0d69ffee72f1472ed374  gcc/testsuite/gcc.dg/analyzer/dot-output.c
  0ec3d38b15165ad7732c142bfbb0329f  gcc/testsuite/gcc.dg/analyzer/double-free-lto-1-a.c
  5da5e08e5a3b9fac183936207016118f  gcc/testsuite/gcc.dg/analyzer/double-free-lto-1-b.c
  9bd730005568e90798a30108ba063dd2  gcc/testsuite/gcc.dg/analyzer/double-free-lto-1.h
  6d17b9b60da13df7ebd7b19f81cc43a3  gcc/testsuite/gcc.dg/analyzer/edges-1.c
  5349560ff6dd31c0631eedd6b00658ee  gcc/testsuite/gcc.dg/analyzer/edges-2.c
  cd58bff2b56161f01ab9307737cbe5dd  gcc/testsuite/gcc.dg/analyzer/equivalence.c
  a5f30efaea21fb670c8c02fcd0a225ba  gcc/testsuite/gcc.dg/analyzer/expect-1.c
  795627eea0b935f0c9c3b36f636d9a99  gcc/testsuite/gcc.dg/analyzer/explode-1.c
! 5c46fbe606dd7d9f75c1d627e6edb7f0  gcc/testsuite/gcc.dg/analyzer/explode-2.c
  8a65bc460ebfced6ab82065135e57d26  gcc/testsuite/gcc.dg/analyzer/factorial.c
  0d6e01df673fded93678160ef3f843e9  gcc/testsuite/gcc.dg/analyzer/fibonacci.c
  8377f2dd6fe8a11668e28671ad01ffe4  gcc/testsuite/gcc.dg/analyzer/fields.c
! 482c0f4cc24006bf22bcbc484a73ec53  gcc/testsuite/gcc.dg/analyzer/file-1.c
  e9d3699471cb51251871aeac21fb74ac  gcc/testsuite/gcc.dg/analyzer/file-2.c
  c04f42892bc69046879362bd3dafd510  gcc/testsuite/gcc.dg/analyzer/file-paths-1.c
  c9f76d12c82b804f1293bf80c42d98c8  gcc/testsuite/gcc.dg/analyzer/file-pr58237.c
  e02f4f3f73df89227f8853a4206f0cad  gcc/testsuite/gcc.dg/analyzer/function-ptr-1.c
  3c5d45b92c6abb855743843f006dea85  gcc/testsuite/gcc.dg/analyzer/function-ptr-2.c
  6a55e6868fb6e1f3a4844412e8ad9f93  gcc/testsuite/gcc.dg/analyzer/function-ptr-3.c
  cd629fc9b87516508b6418bde7e6512b  gcc/testsuite/gcc.dg/analyzer/gzio-2.c
  7d1b6662384f920fc830afc797151100  gcc/testsuite/gcc.dg/analyzer/gzio-3.c
  c2840f0bce03aedaccec84de418cdc83  gcc/testsuite/gcc.dg/analyzer/gzio-3a.c
  95ad79e96dde48a914a9588f08788b19  gcc/testsuite/gcc.dg/analyzer/gzio.c
  a2174c9e3aefc65ef7370280cd66e38b  gcc/testsuite/gcc.dg/analyzer/infinite-recursion.c
  e7d3ac631bcaca30613f84fbe2cfae3f  gcc/testsuite/gcc.dg/analyzer/loop-2.c
! 085185a5f15659c30b0767bccfba81af  gcc/testsuite/gcc.dg/analyzer/loop-2a.c
! 5630604474dbc49c4502e569988c6e24  gcc/testsuite/gcc.dg/analyzer/loop-3.c
! 6372496162ccc986cb43f0b3f1af9ae6  gcc/testsuite/gcc.dg/analyzer/loop-4.c
! 43355a975719d87b22e8b6606957e4cf  gcc/testsuite/gcc.dg/analyzer/loop.c
! a4df3748ee73a161d7d8364358219c13  gcc/testsuite/gcc.dg/analyzer/malloc-1.c
  016c3c7250e597b255e646086af41c0d  gcc/testsuite/gcc.dg/analyzer/malloc-2.c
  9de3ac19ac5e83db9dc669b5ded16421  gcc/testsuite/gcc.dg/analyzer/malloc-3.c
! ba88f04bbd9701960fac71a03acdee3b  gcc/testsuite/gcc.dg/analyzer/malloc-4.c
  a0bcfa3badd49dd40ba6ca4b9c4af6e3  gcc/testsuite/gcc.dg/analyzer/malloc-5.c
  05416e600ebee9c3e0688b9ab257266f  gcc/testsuite/gcc.dg/analyzer/malloc-callbacks.c
  212fdabc9998e80319bb376300f15a4c  gcc/testsuite/gcc.dg/analyzer/malloc-dce.c
  a0baef29e471a23f4b1d85765e6c323a  gcc/testsuite/gcc.dg/analyzer/malloc-dedupe-1.c
  0eb3eab22850b1ee96240fa0f315c8f7  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-1.c
  d079e62118cc134df565e6e8305c0f02  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-10.c
  13f13f3283f3e240e014762cf1d8cf06  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-11.c
  3ff62c1047006323bbbda7abeda5a977  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-12.c
! 00874038e23c293447f0218c28f435c6  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-13.c
  c975c8677595ca5266f4944072467ac6  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-2.c
  5a40812b01235635b102868981304a4d  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-3.c
  a6eae3933449af6dac24eda8dcb9bafb  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-4.c
  d9f3cbeacacaa6c2c8a5d2691c8ee146  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-5.c
  8c3ed72cdfbd43a79f4a2aafbab9472e  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-6.c
  894ac8f22f5ee97dbf69a6bb77eb0d23  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-7.c
! 901a3490b3882fbb8ccfad14cb647d4e  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-double-free.c
  bcfb83da5d02ca988bcaa7b692b3f47d  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-lto-a.c
  f4e3e9fe67ce001d0a4d83f475ee2e1e  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-lto-b.c
  8046594199f747ea766d853de506a64d  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-lto-c.c
  fe31474c1de3fcecf8fc2126e5d77be5  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-lto.h
! ba66f3d9ad981c938b83f174da55fa40  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-unchecked.c
  501c9d5c4d00231c3decfa9f95a02441  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-9.c
  168f305fb9c8d51e36c601552613511f  gcc/testsuite/gcc.dg/analyzer/malloc-macro-inline-events.c
  3b54059434a92ec2ec4a823b5d865edb  gcc/testsuite/gcc.dg/analyzer/malloc-macro-separate-events.c
--- 33908,34055 ----
  5ad6d0d750af2e3c8488e96cfa1aa195  gcc/testsuite/gcc.dg/always_inline2.c
  99fe8a4ba9676a42a20bb593c81371e0  gcc/testsuite/gcc.dg/always_inline3.c
  2f201e4820ee4947af45383e1434d613  gcc/testsuite/gcc.dg/analyzer/20020129-1.c
! f69e8cd9fd4e56cc65e71a4dfef997a4  gcc/testsuite/gcc.dg/analyzer/CVE-2005-1689-dedupe-issue-2.c
! 1a5f9e3123194efaadd5fb7ab38396df  gcc/testsuite/gcc.dg/analyzer/CVE-2005-1689-dedupe-issue.c
! 86d6d6ec23a415364e5fca0ca3cc5e2e  gcc/testsuite/gcc.dg/analyzer/CVE-2005-1689-minimal.c
  2a4fb2c70afac3ec00d2aa07665c4bec  gcc/testsuite/gcc.dg/analyzer/abort.c
! ae69c46005567e7d1eb865066adcb226  gcc/testsuite/gcc.dg/analyzer/abs-1.c
! ca39a9bcc32da0de969872e39eec2dcb  gcc/testsuite/gcc.dg/analyzer/aliasing-1.c
! 21ccef1b042617794f28392a02c47c2e  gcc/testsuite/gcc.dg/analyzer/aliasing-2.c
! 18fc2a84aecda4ede234a6de9d8690c2  gcc/testsuite/gcc.dg/analyzer/alloca-leak.c
! dd4df85fe659db1378fda61d87434683  gcc/testsuite/gcc.dg/analyzer/analyzer-decls.h
  90dda8fe240a90810c6e1ceac986f94d  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-0.c
  4a550fb2a3d0da71845491af53126fc1  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-1.c
  4af04acb904167afb9365e7d69bb67d7  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-2.c
  49f34d122be90ac08b79866dc15f776d  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-2a.c
  91071d4bdc9f508d03823383cfe8302a  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-3.c
  936c1358c732a05bab2a8932de0b6544  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-3a.c
! 0b1c654ffdac2437b7967e0cd8585abe  gcc/testsuite/gcc.dg/analyzer/analyzer.exp
! 3d758ecb74d0d9588a9ab65677c2ad84  gcc/testsuite/gcc.dg/analyzer/attr-malloc-1.c
! b4515e65ed785bcd07a7162f6ccb804a  gcc/testsuite/gcc.dg/analyzer/attr-malloc-2.c
! 046d0c0ef6b5715f28a641d19c38b314  gcc/testsuite/gcc.dg/analyzer/attr-malloc-4.c
! 52c21034354662dddfd5114d1e6b1126  gcc/testsuite/gcc.dg/analyzer/attr-malloc-5.c
! 243c8e733d93a30f1b96b68044c19782  gcc/testsuite/gcc.dg/analyzer/attr-malloc-6.c
! 35f38fdea541935448e811384d026d07  gcc/testsuite/gcc.dg/analyzer/attr-malloc-CVE-2019-19078-usb-leak.c
! bccece796597d19d1f7a0fea1ecd1d5c  gcc/testsuite/gcc.dg/analyzer/attr-malloc-misuses.c
! 86a8afc40e3c3f447547c16cf1afd633  gcc/testsuite/gcc.dg/analyzer/attribute-nonnull.c
! de1c3d5d0b46c866fdd4ebeca363175b  gcc/testsuite/gcc.dg/analyzer/bzero-1.c
! 2a6fd4b0596437c81584911234e358fe  gcc/testsuite/gcc.dg/analyzer/bzip2-arg-parse-1.c
  768424351f1b238f53407ec9bb29e126  gcc/testsuite/gcc.dg/analyzer/call-summaries-1.c
! a99cd9f5718c9d37aee6aee0294cc872  gcc/testsuite/gcc.dg/analyzer/callbacks-1.c
! 0b7fa83ab4d00972ea110527aa160a26  gcc/testsuite/gcc.dg/analyzer/callbacks-2.c
! 054c975de1ad550bc0b3a3000890f5ab  gcc/testsuite/gcc.dg/analyzer/callbacks-3.c
! 4a02cf452d655d2580f80ad2a8f4ae53  gcc/testsuite/gcc.dg/analyzer/casts-1.c
! 079606c0ec9f4acfbec886c8a9bf1f97  gcc/testsuite/gcc.dg/analyzer/casts-2.c
! 2faef601592f61931a6a0fa8bf058245  gcc/testsuite/gcc.dg/analyzer/combined-conditionals-1.c
! 0b52169dbc3123d514322d16dd4277af  gcc/testsuite/gcc.dg/analyzer/compound-assignment-1.c
  a60083781c2444fc0afb93119adde9cd  gcc/testsuite/gcc.dg/analyzer/compound-assignment-2.c
! ea761a32a87e7dd14f7f4d83472c0e79  gcc/testsuite/gcc.dg/analyzer/compound-assignment-3.c
! 30287a7a2b8f02421828017087fff16b  gcc/testsuite/gcc.dg/analyzer/compound-assignment-4.c
! 8294d8bf908c4d04509527018707d466  gcc/testsuite/gcc.dg/analyzer/compound-assignment-5.c
! a9211e3f54bc8dd31aed70c7c3f9b905  gcc/testsuite/gcc.dg/analyzer/conditionals-3.c
! 1c0a20304d7da2a80255211819446599  gcc/testsuite/gcc.dg/analyzer/conditionals-notrans.c
  8cfdc88c0b5a96aa0b303a5409085dfc  gcc/testsuite/gcc.dg/analyzer/conditionals-trans.c
! f1ebe00e74296d613bd894b33db01459  gcc/testsuite/gcc.dg/analyzer/data-model-1.c
! fbf171c2475c36b54306b4fa689eee97  gcc/testsuite/gcc.dg/analyzer/data-model-10.c
  6c6fdb499c22eb058dcbea40374d2696  gcc/testsuite/gcc.dg/analyzer/data-model-11.c
  9117b1e1f037bbea1974142b15b71ebf  gcc/testsuite/gcc.dg/analyzer/data-model-12.c
! 01dd89f886f8267655367177e67d8a7f  gcc/testsuite/gcc.dg/analyzer/data-model-13.c
! 2e73658157673972ef9183ffaef41abf  gcc/testsuite/gcc.dg/analyzer/data-model-14.c
  1360165d72546f0514e05f720ac9fe62  gcc/testsuite/gcc.dg/analyzer/data-model-15.c
! 8985d4acdbaec3ea42e821c7cd37e427  gcc/testsuite/gcc.dg/analyzer/data-model-16.c
  2dd1b0e38379c6d256ce6fb601769518  gcc/testsuite/gcc.dg/analyzer/data-model-17.c
! 41986412fcfd0857f096ced958eeadf1  gcc/testsuite/gcc.dg/analyzer/data-model-18.c
  7eb55f055f46c9020d8e30ecaf87a8ec  gcc/testsuite/gcc.dg/analyzer/data-model-19.c
  4553c74241f2cd9efbf26371de99807d  gcc/testsuite/gcc.dg/analyzer/data-model-2.c
+ b3d1205c18024feae48af7ea2263b10a  gcc/testsuite/gcc.dg/analyzer/data-model-20.c
+ 1a7244f30f830702369a54bb48fc8aef  gcc/testsuite/gcc.dg/analyzer/data-model-21.c
  e7daf7589a18b2ab24bdc2f3f62367d5  gcc/testsuite/gcc.dg/analyzer/data-model-4.c
! ec77a3f181dddb102f833affeab3f86a  gcc/testsuite/gcc.dg/analyzer/data-model-5.c
! 50de8dcfc0305e565c234999fa450fed  gcc/testsuite/gcc.dg/analyzer/data-model-5b.c
! d932e32ee23667f73c2b38527aaef2a9  gcc/testsuite/gcc.dg/analyzer/data-model-5c.c
! ce3825071f0459fd39e18dc4443bc5a7  gcc/testsuite/gcc.dg/analyzer/data-model-5d.c
  be7aafbe051db1d04fdb6dda26644e29  gcc/testsuite/gcc.dg/analyzer/data-model-7.c
! e30a91c7d128ee44d4a195e5868ee03a  gcc/testsuite/gcc.dg/analyzer/data-model-8.c
  31f1a32a7438f9e74a61e8b03567a77e  gcc/testsuite/gcc.dg/analyzer/data-model-9.c
  e9598af7814c9b574008795653746252  gcc/testsuite/gcc.dg/analyzer/data-model-path-1.c
+ 64840faa76375f58a4f02239bbee2133  gcc/testsuite/gcc.dg/analyzer/describe-1.c
  13ffe607de30212adc9ebda16cc7cbbc  gcc/testsuite/gcc.dg/analyzer/disabling.c
! 755fd6b33501ddcdd674252b43e6c382  gcc/testsuite/gcc.dg/analyzer/dot-output.c
  0ec3d38b15165ad7732c142bfbb0329f  gcc/testsuite/gcc.dg/analyzer/double-free-lto-1-a.c
  5da5e08e5a3b9fac183936207016118f  gcc/testsuite/gcc.dg/analyzer/double-free-lto-1-b.c
  9bd730005568e90798a30108ba063dd2  gcc/testsuite/gcc.dg/analyzer/double-free-lto-1.h
  6d17b9b60da13df7ebd7b19f81cc43a3  gcc/testsuite/gcc.dg/analyzer/edges-1.c
  5349560ff6dd31c0631eedd6b00658ee  gcc/testsuite/gcc.dg/analyzer/edges-2.c
  cd58bff2b56161f01ab9307737cbe5dd  gcc/testsuite/gcc.dg/analyzer/equivalence.c
+ 7a41edb146e30ff88645faff41cd6660  gcc/testsuite/gcc.dg/analyzer/error-1.c
+ 959242e188dc1726d5f00627897522c2  gcc/testsuite/gcc.dg/analyzer/error-2.c
+ c5de56a4561f064e270ee358ffb7aa30  gcc/testsuite/gcc.dg/analyzer/error-3.c
  a5f30efaea21fb670c8c02fcd0a225ba  gcc/testsuite/gcc.dg/analyzer/expect-1.c
  795627eea0b935f0c9c3b36f636d9a99  gcc/testsuite/gcc.dg/analyzer/explode-1.c
! 4ea0cc97a9fb5644dbe8324c68757243  gcc/testsuite/gcc.dg/analyzer/explode-2.c
  8a65bc460ebfced6ab82065135e57d26  gcc/testsuite/gcc.dg/analyzer/factorial.c
+ c67fd7150c48c2cbde13c569af42d724  gcc/testsuite/gcc.dg/analyzer/feasibility-1.c
+ 00d15989662428086fefe3003fd1d85d  gcc/testsuite/gcc.dg/analyzer/feasibility-2.c
  0d6e01df673fded93678160ef3f843e9  gcc/testsuite/gcc.dg/analyzer/fibonacci.c
  8377f2dd6fe8a11668e28671ad01ffe4  gcc/testsuite/gcc.dg/analyzer/fields.c
! f743a2cf23b8153fcd2ae2ff3c1405d3  gcc/testsuite/gcc.dg/analyzer/file-1.c
  e9d3699471cb51251871aeac21fb74ac  gcc/testsuite/gcc.dg/analyzer/file-2.c
+ 4d1005ccd0e2c6b96780497a29dc930f  gcc/testsuite/gcc.dg/analyzer/file-3.c
  c04f42892bc69046879362bd3dafd510  gcc/testsuite/gcc.dg/analyzer/file-paths-1.c
  c9f76d12c82b804f1293bf80c42d98c8  gcc/testsuite/gcc.dg/analyzer/file-pr58237.c
+ 20d65cfa29c33455231b4036f2cf5708  gcc/testsuite/gcc.dg/analyzer/first-field-1.c
+ 205728a949c258519a4725538e6f2dd9  gcc/testsuite/gcc.dg/analyzer/first-field-2.c
  e02f4f3f73df89227f8853a4206f0cad  gcc/testsuite/gcc.dg/analyzer/function-ptr-1.c
  3c5d45b92c6abb855743843f006dea85  gcc/testsuite/gcc.dg/analyzer/function-ptr-2.c
  6a55e6868fb6e1f3a4844412e8ad9f93  gcc/testsuite/gcc.dg/analyzer/function-ptr-3.c
+ 1e42bf8a97fe52a292508ac165061fc7  gcc/testsuite/gcc.dg/analyzer/getchar-1.c
  cd629fc9b87516508b6418bde7e6512b  gcc/testsuite/gcc.dg/analyzer/gzio-2.c
  7d1b6662384f920fc830afc797151100  gcc/testsuite/gcc.dg/analyzer/gzio-3.c
  c2840f0bce03aedaccec84de418cdc83  gcc/testsuite/gcc.dg/analyzer/gzio-3a.c
  95ad79e96dde48a914a9588f08788b19  gcc/testsuite/gcc.dg/analyzer/gzio.c
  a2174c9e3aefc65ef7370280cd66e38b  gcc/testsuite/gcc.dg/analyzer/infinite-recursion.c
+ 28a2c270aa1b745766369de60cee0f7c  gcc/testsuite/gcc.dg/analyzer/init.c
+ 7a48058aaf7419920b16429c67d04982  gcc/testsuite/gcc.dg/analyzer/invalid-shift-1.c
+ 094b1340efd825baefc9ac68d2865171  gcc/testsuite/gcc.dg/analyzer/leak-2.c
+ eb03171d1b4b9b2cd8818ae997ef845f  gcc/testsuite/gcc.dg/analyzer/loop-0-up-to-n-by-1-with-iter-obj.c
+ ccff25473fa2d7eb6b31302f8757af2e  gcc/testsuite/gcc.dg/analyzer/loop-0-up-to-n-by-1.c
  e7d3ac631bcaca30613f84fbe2cfae3f  gcc/testsuite/gcc.dg/analyzer/loop-2.c
! 4d56089d171363f19a0cb7507989e5b5  gcc/testsuite/gcc.dg/analyzer/loop-2a.c
! 38554e26f0a2347fa36dcc051c5d5320  gcc/testsuite/gcc.dg/analyzer/loop-3.c
! 6d93f0cf0bc02b3114118aaa8e04225b  gcc/testsuite/gcc.dg/analyzer/loop-4.c
! 023047bf69fcdca407120a729401408a  gcc/testsuite/gcc.dg/analyzer/loop-n-down-to-1-by-1.c
! 75b7cc74c9b14b70bb65de3f647a82ee  gcc/testsuite/gcc.dg/analyzer/loop-start-down-to-end-by-1.c
! 2fa08222599a99bcd200f76449e6b9f0  gcc/testsuite/gcc.dg/analyzer/loop-start-down-to-end-by-step.c
! 8ad1b0087276cc9cb69d159e668f8e0f  gcc/testsuite/gcc.dg/analyzer/loop-start-to-end-by-step.c
! a338db9e662a64be9acd7699f6b8f480  gcc/testsuite/gcc.dg/analyzer/loop-start-up-to-end-by-1.c
! bac89c08a695635d761a021615d9e74e  gcc/testsuite/gcc.dg/analyzer/loop.c
! 81e073aeefb95d2569eae992eccc97e2  gcc/testsuite/gcc.dg/analyzer/malloc-1.c
  016c3c7250e597b255e646086af41c0d  gcc/testsuite/gcc.dg/analyzer/malloc-2.c
  9de3ac19ac5e83db9dc669b5ded16421  gcc/testsuite/gcc.dg/analyzer/malloc-3.c
! 2b64001dfbd8f6e02b57086866f713a5  gcc/testsuite/gcc.dg/analyzer/malloc-4.c
  a0bcfa3badd49dd40ba6ca4b9c4af6e3  gcc/testsuite/gcc.dg/analyzer/malloc-5.c
  05416e600ebee9c3e0688b9ab257266f  gcc/testsuite/gcc.dg/analyzer/malloc-callbacks.c
  212fdabc9998e80319bb376300f15a4c  gcc/testsuite/gcc.dg/analyzer/malloc-dce.c
  a0baef29e471a23f4b1d85765e6c323a  gcc/testsuite/gcc.dg/analyzer/malloc-dedupe-1.c
+ 98d6716096afb847d597604ce1dd4ebc  gcc/testsuite/gcc.dg/analyzer/malloc-in-loop.c
  0eb3eab22850b1ee96240fa0f315c8f7  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-1.c
  d079e62118cc134df565e6e8305c0f02  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-10.c
  13f13f3283f3e240e014762cf1d8cf06  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-11.c
  3ff62c1047006323bbbda7abeda5a977  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-12.c
! 865e5f8c81482626d2e9eae5344bcf6e  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-13.c
! 040536c40f5543d2f3a0fded49c9f951  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-13a.c
  c975c8677595ca5266f4944072467ac6  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-2.c
  5a40812b01235635b102868981304a4d  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-3.c
  a6eae3933449af6dac24eda8dcb9bafb  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-4.c
  d9f3cbeacacaa6c2c8a5d2691c8ee146  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-5.c
  8c3ed72cdfbd43a79f4a2aafbab9472e  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-6.c
  894ac8f22f5ee97dbf69a6bb77eb0d23  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-7.c
! f0aff4423fc2056f3172a11bb1c0157f  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-double-free.c
  bcfb83da5d02ca988bcaa7b692b3f47d  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-lto-a.c
  f4e3e9fe67ce001d0a4d83f475ee2e1e  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-lto-b.c
  8046594199f747ea766d853de506a64d  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-lto-c.c
  fe31474c1de3fcecf8fc2126e5d77be5  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-lto.h
! 5f921e1ce909e758710bf0167b5edda6  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-unchecked.c
  501c9d5c4d00231c3decfa9f95a02441  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-9.c
  168f305fb9c8d51e36c601552613511f  gcc/testsuite/gcc.dg/analyzer/malloc-macro-inline-events.c
  3b54059434a92ec2ec4a823b5d865edb  gcc/testsuite/gcc.dg/analyzer/malloc-macro-separate-events.c
*************** c70af2073448635855d144cc02268df7  gcc/te
*** 31607,31681 ****
  c0512edf80944ffafce5cf9e1f06c2ee  gcc/testsuite/gcc.dg/analyzer/malloc-paths-5.c
  54fdccce21f567ce613c24d9a16b1593  gcc/testsuite/gcc.dg/analyzer/malloc-paths-6.c
  601cd4c7b73ebb6e97b3bda99e6bea6b  gcc/testsuite/gcc.dg/analyzer/malloc-paths-7.c
! 3089c1b54277b869ac4994a2509553cc  gcc/testsuite/gcc.dg/analyzer/malloc-paths-8.c
! 1beac6132c76ebe4b724d6abba1197ec  gcc/testsuite/gcc.dg/analyzer/malloc-paths-9.c
! a8b1db244288ca6ec63020501fa25f44  gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-1a.c
  b5bb321785e7bea5388cb2b64e173213  gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-1b.c
! d7204fca4edaf2cb5d7c398d62db1a0f  gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-2.c
! d7110c4301f018913e342393a2489aac  gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-3.c
  79dc7e451e8ed0274f282b8d09979e95  gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-4.c
  aaddc4b9a407ce80be75f1c757af9df4  gcc/testsuite/gcc.dg/analyzer/operations.c
  7c6c9ed633de8bd71c9e5bf5ec95ceb7  gcc/testsuite/gcc.dg/analyzer/params-2.c
! cbbc65bdd80b46086e6b95f12ff350cb  gcc/testsuite/gcc.dg/analyzer/params.c
  4d166a6392bd44e453b465258f187cd0  gcc/testsuite/gcc.dg/analyzer/paths-1.c
  25979d0595f5e4da39288a37576604b7  gcc/testsuite/gcc.dg/analyzer/paths-1a.c
  7a5be82eddd4e1df5ecb4f1b14585036  gcc/testsuite/gcc.dg/analyzer/paths-2.c
! 71230188d4847e38a0ee144ab0a04635  gcc/testsuite/gcc.dg/analyzer/paths-3.c
! e565aecec909cb8e45dffe5f10282e8d  gcc/testsuite/gcc.dg/analyzer/paths-4.c
  324a76012fa37a5e46e7862f10d0b4ca  gcc/testsuite/gcc.dg/analyzer/paths-5.c
! 14daa2edd3a6b494be09a6f6b8d35baf  gcc/testsuite/gcc.dg/analyzer/paths-6.c
! 37559e40adc40598aacfb38ce04fac2f  gcc/testsuite/gcc.dg/analyzer/paths-7.c
  b818695de20677346ff28a3913c7b163  gcc/testsuite/gcc.dg/analyzer/pattern-test-1.c
  bdfc84bbf5e13810fd8696c1956e6639  gcc/testsuite/gcc.dg/analyzer/pattern-test-2.c
  8704d0b888bfd7cbf5c7f8dfbb9f5610  gcc/testsuite/gcc.dg/analyzer/pointer-merging.c
  4d9dda4c090b351e888380f256fdf703  gcc/testsuite/gcc.dg/analyzer/pr61861.c
  ddd38a6cae93f735290778e9e2854548  gcc/testsuite/gcc.dg/analyzer/pr93290.c
  571c9ec61e278add06ca460a7d410139  gcc/testsuite/gcc.dg/analyzer/pr93352.c
  a593341d1b08c788e70141f3755b74a7  gcc/testsuite/gcc.dg/analyzer/pr93375.c
! 5af6dc0618950aef5750fc67654e6426  gcc/testsuite/gcc.dg/analyzer/pr93382.c
  8865edf8f256b0fc34c1ce3be6c823d2  gcc/testsuite/gcc.dg/analyzer/pr93457.c
! 5636f51c3d08a8a5f240d1158e452ca3  gcc/testsuite/gcc.dg/analyzer/pr93546.c
  9d197d56580541ddcf5a28595b6fcd8a  gcc/testsuite/gcc.dg/analyzer/pr93547.c
  dc22921b1f8adf04e247fd77f0e4622d  gcc/testsuite/gcc.dg/analyzer/pr93669.c
! 232e1c58787e125648e3b01cad52db2d  gcc/testsuite/gcc.dg/analyzer/pr94047.c
! a1c501f8851d0963de5c78d9a4b2e5df  gcc/testsuite/gcc.dg/analyzer/pr94099.c
  76559ba88816dd3d385d56090dd3e037  gcc/testsuite/gcc.dg/analyzer/pr94105.c
! 84ea9217d13710dd776a9c663ae54a38  gcc/testsuite/gcc.dg/analyzer/pr94447.c
  1be53c5b37cf4078b3541a25345038a4  gcc/testsuite/gcc.dg/analyzer/pr94639.c
  6cd931319824cc8853e7a562f4f1b30a  gcc/testsuite/gcc.dg/analyzer/pr94732.c
  0026c538f0e20f37842630fe25b7d4c0  gcc/testsuite/gcc.dg/analyzer/pr94754.c
  8c73c87efb75a0bef0c4a982a728d2a5  gcc/testsuite/gcc.dg/analyzer/pragma-1.c
  65666ac62f3a2ea02329e2df4a3dc80b  gcc/testsuite/gcc.dg/analyzer/scope-1.c
! 49adf13bb69c9a24dcff7498ad2bd3a1  gcc/testsuite/gcc.dg/analyzer/sensitive-1.c
! 78d76b644fe6411c0921454516c499db  gcc/testsuite/gcc.dg/analyzer/setjmp-1.c
! 04aae94e56b20c3f3d5235aa94ab60b7  gcc/testsuite/gcc.dg/analyzer/setjmp-2.c
! 6c6cb6a6c201f1b8f47a38577f31dfd7  gcc/testsuite/gcc.dg/analyzer/setjmp-3.c
! 84ba7da3fe15e99b5b441a4b942e19ba  gcc/testsuite/gcc.dg/analyzer/setjmp-4.c
! eb035b334284ffc201296ae715955e42  gcc/testsuite/gcc.dg/analyzer/setjmp-5.c
! 50950b88e825a7742cd63c20f9163592  gcc/testsuite/gcc.dg/analyzer/setjmp-6.c
! 88dfef524f286f6b5c151c35fd3193e7  gcc/testsuite/gcc.dg/analyzer/setjmp-7.c
! edc26ee22f211d708fb8d6e43e05e56c  gcc/testsuite/gcc.dg/analyzer/setjmp-7a.c
! 08c1ceea5897eabcaaf304e589f5ac42  gcc/testsuite/gcc.dg/analyzer/setjmp-8.c
! 1015785cba0c9c27207964deca324466  gcc/testsuite/gcc.dg/analyzer/setjmp-9.c
! b7cad5034f52ffd4ab562e314dcfe505  gcc/testsuite/gcc.dg/analyzer/setjmp-pr93378.c
! 82c7d9b1dba815d21cccbd0531a99116  gcc/testsuite/gcc.dg/analyzer/signal-1.c
! 76a25ba063f96f00fb68322367cc602f  gcc/testsuite/gcc.dg/analyzer/signal-2.c
! 11124cccbfa03f0a988f9047cc992c34  gcc/testsuite/gcc.dg/analyzer/signal-3.c
! 203f2245519ea408bd4159948c1ce11f  gcc/testsuite/gcc.dg/analyzer/signal-4a.c
! fb0d579063f916e5bedc89b55d68d6e1  gcc/testsuite/gcc.dg/analyzer/signal-4b.c
! d9899c47ca2f265b946b085b426ec939  gcc/testsuite/gcc.dg/analyzer/signal-5.c
! 49f480d4d7e19eba5947a6ad8d889af1  gcc/testsuite/gcc.dg/analyzer/signal-6.c
! 42bf71ea3854d9a69028d2969a337b11  gcc/testsuite/gcc.dg/analyzer/sigsetjmp-5.c
! c4084842b4a023798231dad7541106ff  gcc/testsuite/gcc.dg/analyzer/sigsetjmp-6.c
  5c824937a2b8b50d8d983130fccd4e81  gcc/testsuite/gcc.dg/analyzer/strcmp-1.c
  5231cd301b8d86c62bf8321d1e5bfb4b  gcc/testsuite/gcc.dg/analyzer/switch.c
! 96a903a7627af5b8e0e96211021003da  gcc/testsuite/gcc.dg/analyzer/taint-1.c
! 187acf6a267cf461fb091a640692d1ad  gcc/testsuite/gcc.dg/analyzer/test-setjmp.h
  1044a7408c5d7630501b02b9726d7b8b  gcc/testsuite/gcc.dg/analyzer/torture/20060625-1.c
! 162282c0b10a4cc38877f55bf08b305c  gcc/testsuite/gcc.dg/analyzer/torture/analyzer-torture.exp
! b89b5e35f5f658f9f5eac009fcd12be7  gcc/testsuite/gcc.dg/analyzer/torture/conditionals-2.c
  4c43e729ef81f365c923eb98024417c6  gcc/testsuite/gcc.dg/analyzer/torture/conftest-1.c
  2a944db68262f05280b26c9c165685c9  gcc/testsuite/gcc.dg/analyzer/torture/intptr_t.c
  52faf878195ceb4ad78e8c760c4f86f4  gcc/testsuite/gcc.dg/analyzer/torture/poc.c
  d1bd725bfd85304b0430a4afe4ef5b4e  gcc/testsuite/gcc.dg/analyzer/torture/pr51628-30.c
  ca62b5bdb1c5cf71cd203f8d475fbcdc  gcc/testsuite/gcc.dg/analyzer/torture/pr59037.c
--- 34065,34244 ----
  c0512edf80944ffafce5cf9e1f06c2ee  gcc/testsuite/gcc.dg/analyzer/malloc-paths-5.c
  54fdccce21f567ce613c24d9a16b1593  gcc/testsuite/gcc.dg/analyzer/malloc-paths-6.c
  601cd4c7b73ebb6e97b3bda99e6bea6b  gcc/testsuite/gcc.dg/analyzer/malloc-paths-7.c
! 3969fbaaf8932e239565d3c47d853692  gcc/testsuite/gcc.dg/analyzer/malloc-paths-8.c
! 6cc81ee18fb6d2aecab26207acd6c349  gcc/testsuite/gcc.dg/analyzer/malloc-paths-9.c
! 8261cb8449d54e0382dc64b74d46d2c0  gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-1a.c
  b5bb321785e7bea5388cb2b64e173213  gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-1b.c
! d464c105278a3135eece0b536dfddef1  gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-2.c
! d612c4dbe9f34c8b84f01f0c3b2c896f  gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-3.c
  79dc7e451e8ed0274f282b8d09979e95  gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-4.c
+ 89b234c7a25eca3d9b5ca536ea353da4  gcc/testsuite/gcc.dg/analyzer/memcpy-1.c
+ b9b1ecda7d18d3f9e093eaade3bfdc9f  gcc/testsuite/gcc.dg/analyzer/memset-1.c
  aaddc4b9a407ce80be75f1c757af9df4  gcc/testsuite/gcc.dg/analyzer/operations.c
  7c6c9ed633de8bd71c9e5bf5ec95ceb7  gcc/testsuite/gcc.dg/analyzer/params-2.c
! 7cc16c21f19526f1926009cff6d0e22f  gcc/testsuite/gcc.dg/analyzer/params.c
  4d166a6392bd44e453b465258f187cd0  gcc/testsuite/gcc.dg/analyzer/paths-1.c
  25979d0595f5e4da39288a37576604b7  gcc/testsuite/gcc.dg/analyzer/paths-1a.c
  7a5be82eddd4e1df5ecb4f1b14585036  gcc/testsuite/gcc.dg/analyzer/paths-2.c
! db94fe63d590662e55109a2a7e5e8fe8  gcc/testsuite/gcc.dg/analyzer/paths-3.c
! b2f9a5491dd667376463503a6098b666  gcc/testsuite/gcc.dg/analyzer/paths-4.c
  324a76012fa37a5e46e7862f10d0b4ca  gcc/testsuite/gcc.dg/analyzer/paths-5.c
! e743e8bda033473fcaea2882346cd62e  gcc/testsuite/gcc.dg/analyzer/paths-6.c
! 58de178e30758a2cbc22f446455554a1  gcc/testsuite/gcc.dg/analyzer/paths-7.c
  b818695de20677346ff28a3913c7b163  gcc/testsuite/gcc.dg/analyzer/pattern-test-1.c
  bdfc84bbf5e13810fd8696c1956e6639  gcc/testsuite/gcc.dg/analyzer/pattern-test-2.c
  8704d0b888bfd7cbf5c7f8dfbb9f5610  gcc/testsuite/gcc.dg/analyzer/pointer-merging.c
+ 3f583dbde80b3efe12b65cefa6758f9f  gcc/testsuite/gcc.dg/analyzer/pr100011.c
  4d9dda4c090b351e888380f256fdf703  gcc/testsuite/gcc.dg/analyzer/pr61861.c
+ 3b715088546567d4c2cc30cc26417f11  gcc/testsuite/gcc.dg/analyzer/pr93032-mztools-simplified.c
+ 9198ebbc5c221a40b5e3d9c3b8dfadad  gcc/testsuite/gcc.dg/analyzer/pr93032-mztools.c
  ddd38a6cae93f735290778e9e2854548  gcc/testsuite/gcc.dg/analyzer/pr93290.c
  571c9ec61e278add06ca460a7d410139  gcc/testsuite/gcc.dg/analyzer/pr93352.c
+ 78f6a2bac494d559babbd8d3edebe61a  gcc/testsuite/gcc.dg/analyzer/pr93355-localealias-feasibility-2.c
+ d4232896f839f8b1b10297172b034331  gcc/testsuite/gcc.dg/analyzer/pr93355-localealias-feasibility-3.c
+ 2bdba09142e4e808f4a5922c1d58f0c5  gcc/testsuite/gcc.dg/analyzer/pr93355-localealias-feasibility.c
+ 34c8a40339a82547bfbde334593d1f9a  gcc/testsuite/gcc.dg/analyzer/pr93355-localealias-simplified.c
+ 0ddb73cbb7d38d16a36e6ec4f7fc183e  gcc/testsuite/gcc.dg/analyzer/pr93355-localealias.c
  a593341d1b08c788e70141f3755b74a7  gcc/testsuite/gcc.dg/analyzer/pr93375.c
! 8004661c4d744c3fb9a808f9349b3fff  gcc/testsuite/gcc.dg/analyzer/pr93382.c
  8865edf8f256b0fc34c1ce3be6c823d2  gcc/testsuite/gcc.dg/analyzer/pr93457.c
! 87cc4e2cb508a70da43eb0d9e6c83cd9  gcc/testsuite/gcc.dg/analyzer/pr93546.c
  9d197d56580541ddcf5a28595b6fcd8a  gcc/testsuite/gcc.dg/analyzer/pr93547.c
  dc22921b1f8adf04e247fd77f0e4622d  gcc/testsuite/gcc.dg/analyzer/pr93669.c
! 6c8c208f91e712fb856e8b40b7a757c1  gcc/testsuite/gcc.dg/analyzer/pr93695-1.c
! d092c910db92eea5975a648161bb95f1  gcc/testsuite/gcc.dg/analyzer/pr93938.c
! 53fbbd0134bcc70f28d3359778b0af59  gcc/testsuite/gcc.dg/analyzer/pr94047.c
! 872037e09757aa86b694f245b71c154d  gcc/testsuite/gcc.dg/analyzer/pr94099.c
  76559ba88816dd3d385d56090dd3e037  gcc/testsuite/gcc.dg/analyzer/pr94105.c
! 2b860df7bd7544da2d884a29b5b8270b  gcc/testsuite/gcc.dg/analyzer/pr94399.c
! 9c96000a1a0a853d0179d8fd11c65e55  gcc/testsuite/gcc.dg/analyzer/pr94447.c
! e5b15ee45fe6adafc7624ced3274120b  gcc/testsuite/gcc.dg/analyzer/pr94458.c
! 0c775d0f9074e6cf5558982e3f78d348  gcc/testsuite/gcc.dg/analyzer/pr94596.c
  1be53c5b37cf4078b3541a25345038a4  gcc/testsuite/gcc.dg/analyzer/pr94639.c
+ fd0f492f05905f9735a1c3fb5aba65e2  gcc/testsuite/gcc.dg/analyzer/pr94640.c
+ 87350f01f0e843ad0a8ac8470aab44a3  gcc/testsuite/gcc.dg/analyzer/pr94688.c
+ 746bbf11842faa157eaa0c33fef10249  gcc/testsuite/gcc.dg/analyzer/pr94689.c
  6cd931319824cc8853e7a562f4f1b30a  gcc/testsuite/gcc.dg/analyzer/pr94732.c
  0026c538f0e20f37842630fe25b7d4c0  gcc/testsuite/gcc.dg/analyzer/pr94754.c
+ 0556ddfd9dd826211ba6a53ea757ed52  gcc/testsuite/gcc.dg/analyzer/pr94839.c
+ d11c1fff0713538d5e1cb409bf0ccb85  gcc/testsuite/gcc.dg/analyzer/pr94851-1.c
+ a9fbffc5e38669e3c83b48e66c7dfa47  gcc/testsuite/gcc.dg/analyzer/pr94851-2.c
+ 9ea2ed915597b6c25fabf8d6beb5fffd  gcc/testsuite/gcc.dg/analyzer/pr94851-3.c
+ e25cdbeef846ec06d9e2bc17cf57bb2b  gcc/testsuite/gcc.dg/analyzer/pr94851-4.c
+ 625c8ff23ceec5d99faa9d1e9eaff558  gcc/testsuite/gcc.dg/analyzer/pr94858-1.c
+ 620f1057b370b6e564abca5a9e79231d  gcc/testsuite/gcc.dg/analyzer/pr94858-2.c
+ de6895701db3c05fb80ecd2032f4075f  gcc/testsuite/gcc.dg/analyzer/pr95026.c
+ da360e3b0e9156b732e2cd7f740dacb8  gcc/testsuite/gcc.dg/analyzer/pr95152-4.c
+ 174c15d3dd4d02fbcfb284b9da683c75  gcc/testsuite/gcc.dg/analyzer/pr95152-5.c
+ cad22848bbe62237ae68e9fbe69f44e1  gcc/testsuite/gcc.dg/analyzer/pr95240.c
+ d0a6505c532b4244902d3dd3501af977  gcc/testsuite/gcc.dg/analyzer/pr96598.c
+ a18aec5c928fb5cf0238f90bc5890720  gcc/testsuite/gcc.dg/analyzer/pr96611.c
+ 905860989acbfee07070993a010cda3b  gcc/testsuite/gcc.dg/analyzer/pr96639.c
+ 29816e82bef6bf88156d55346d54b72f  gcc/testsuite/gcc.dg/analyzer/pr96642.c
+ 1cc9fc986e0c43dbfa3116f2b887d305  gcc/testsuite/gcc.dg/analyzer/pr96644.c
+ 8122e564ee9470c65abe46b95a4e01e0  gcc/testsuite/gcc.dg/analyzer/pr96646.c
+ dbff5f371056a62a0166453b66a4e27a  gcc/testsuite/gcc.dg/analyzer/pr96648.c
+ 7355069be28eed8d00160ea24380a9a5  gcc/testsuite/gcc.dg/analyzer/pr96650-1-notrans.c
+ d9c33cd022fc3054544749865b40e10f  gcc/testsuite/gcc.dg/analyzer/pr96650-1-trans.c
+ aa029c0bea41b0e118a8ca1f50d23b60  gcc/testsuite/gcc.dg/analyzer/pr96650-2-notrans.c
+ 8493678def139ca7a82b058857427371  gcc/testsuite/gcc.dg/analyzer/pr96650-2-trans.c
+ 6839dc70e12ccfcef828a166458c4e34  gcc/testsuite/gcc.dg/analyzer/pr96651-1.c
+ e1cc82ec2de0b3a6c6717f542456a7f7  gcc/testsuite/gcc.dg/analyzer/pr96651-2.c
+ d777926cfd1375880c4f587b8ba11656  gcc/testsuite/gcc.dg/analyzer/pr96653.c
+ 93d3de68df9d3d71a9a39d6fc15caaee  gcc/testsuite/gcc.dg/analyzer/pr96699.c
+ 59b287a3143a88ac8698f48e67bca083  gcc/testsuite/gcc.dg/analyzer/pr96705.c
+ 67da9ec38c31a6847b0a534944782b5e  gcc/testsuite/gcc.dg/analyzer/pr96713.c
+ 24a97b42d46668731e6aa353b0a87964  gcc/testsuite/gcc.dg/analyzer/pr96764.c
+ 054ab1c927a55fe5f67ab96348c0bfac  gcc/testsuite/gcc.dg/analyzer/pr96777.c
+ 3675cea43058febb213ff4846d03855f  gcc/testsuite/gcc.dg/analyzer/pr96792.c
+ 1f77532b62ff4656e5c8af026fbcbe52  gcc/testsuite/gcc.dg/analyzer/pr96841.c
+ ec51c705859096428ddf0f549b1d2378  gcc/testsuite/gcc.dg/analyzer/pr96860-1.c
+ b67ccef1b701357aa6aefedbaa975f0e  gcc/testsuite/gcc.dg/analyzer/pr96860-2.c
+ 5839d172a96605828b373470e9bcf285  gcc/testsuite/gcc.dg/analyzer/pr97029.c
+ 5bd94fca89134ed6b5d3236ba6cc6a31  gcc/testsuite/gcc.dg/analyzer/pr97072.c
+ d01f45d8713ae323b82e7597f5c3ee13  gcc/testsuite/gcc.dg/analyzer/pr97074.c
+ e2da6e0e14d8c8ac966c0b44386c520d  gcc/testsuite/gcc.dg/analyzer/pr97130.c
+ 2c0f51e668635fdd7cc909b70544228f  gcc/testsuite/gcc.dg/analyzer/pr97233.c
+ 87cd37c72323b82cb97b0d3004f56d53  gcc/testsuite/gcc.dg/analyzer/pr97514.c
+ 24a26a508b16bde1fcc26b2aed77385b  gcc/testsuite/gcc.dg/analyzer/pr97568.c
+ 34f442bdd073980116520abe424e006f  gcc/testsuite/gcc.dg/analyzer/pr97608.c
+ 2676b5a12adc3dc9e19dd9c888bdf9ce  gcc/testsuite/gcc.dg/analyzer/pr97668.c
+ 9b541aec01bec34ac52fa0ef2c5131f0  gcc/testsuite/gcc.dg/analyzer/pr98073.c
+ 31a9bfe2d10d9507c3d3caf182f7947b  gcc/testsuite/gcc.dg/analyzer/pr98293.c
+ 3733787070f9a95f53c9511db298d0f0  gcc/testsuite/gcc.dg/analyzer/pr98564.c
+ 3bde06fdbe5781b1a2192331d50f515a  gcc/testsuite/gcc.dg/analyzer/pr98575-1.c
+ bd0446dc7bfc92ba7fa31dec5245fdc8  gcc/testsuite/gcc.dg/analyzer/pr98580-a.c
+ ec3f6b6ab51e286be338a54b446589e9  gcc/testsuite/gcc.dg/analyzer/pr98580-b.c
+ e30ab4cce96a744448409fe77f3c5efa  gcc/testsuite/gcc.dg/analyzer/pr98599-a.c
+ b8dedb68ebd6efc83061dc56ccf05a12  gcc/testsuite/gcc.dg/analyzer/pr98599-b.c
+ 237849dd5408542078d3548b6b0df88d  gcc/testsuite/gcc.dg/analyzer/pr98628.c
+ a139a65f55f3b94f92a93d5819d999ff  gcc/testsuite/gcc.dg/analyzer/pr98918.c
+ 2f332992660e2dbdaae244db1650e97b  gcc/testsuite/gcc.dg/analyzer/pr98969.c
+ 57df4107e960a57eca633b3a56ad53c0  gcc/testsuite/gcc.dg/analyzer/pr99042.c
+ db49279a7bbbbb8a7993d65e3a0ed602  gcc/testsuite/gcc.dg/analyzer/pr99044-1.c
+ 7197855d9b8070e963d693ec7f9cd794  gcc/testsuite/gcc.dg/analyzer/pr99044-2.c
+ baf16dc1857c19a9a8641b088c4ef29e  gcc/testsuite/gcc.dg/analyzer/pr99193-1.c
+ c02e88827b0942e66ceabd0e09c7e937  gcc/testsuite/gcc.dg/analyzer/pr99193-2.c
+ 09012f76ab7c3d223bdf9fb86100350f  gcc/testsuite/gcc.dg/analyzer/pr99193-3.c
+ e422c6ce308a7783d27e6e5bfb6d5ea5  gcc/testsuite/gcc.dg/analyzer/pr99716-1.c
+ d8d378a2c67cc6181de376d249607099  gcc/testsuite/gcc.dg/analyzer/pr99716-2.c
+ 0c63418b3608af001507560347c90d57  gcc/testsuite/gcc.dg/analyzer/pr99716-3.c
+ cbb6adcc2621ebf0e7bda4537a8d8250  gcc/testsuite/gcc.dg/analyzer/pr99771-1.c
+ 14044d052e4f92b71975a1fd4333d97a  gcc/testsuite/gcc.dg/analyzer/pr99774-1.c
+ eed361a309e3745bd4ef7b47ad455045  gcc/testsuite/gcc.dg/analyzer/pr99774-2.c
+ 999daf76457c2842454c315884e1181c  gcc/testsuite/gcc.dg/analyzer/pr99886.c
+ e7ec58c8488f858c6b9c88105194899a  gcc/testsuite/gcc.dg/analyzer/pr99906.c
  8c73c87efb75a0bef0c4a982a728d2a5  gcc/testsuite/gcc.dg/analyzer/pragma-1.c
+ 25803d877478b3ef63abcf1d97271824  gcc/testsuite/gcc.dg/analyzer/realloc-1.c
+ 80fa663011e0905b551ff26c0f4ab6aa  gcc/testsuite/gcc.dg/analyzer/refcounting-1.c
+ eb90114c90a666d2fc417737f203862d  gcc/testsuite/gcc.dg/analyzer/rhbz1878600.c
  65666ac62f3a2ea02329e2df4a3dc80b  gcc/testsuite/gcc.dg/analyzer/scope-1.c
! a3e079fdb0af6c6373526bb5b0925662  gcc/testsuite/gcc.dg/analyzer/sensitive-1.c
! 235b23e579165b5bc29ded1884282ac0  gcc/testsuite/gcc.dg/analyzer/setjmp-1.c
! c902cc7285dfa4f09d6212b2507fac70  gcc/testsuite/gcc.dg/analyzer/setjmp-2.c
! 179069b5df1a39fd4f81202fade56325  gcc/testsuite/gcc.dg/analyzer/setjmp-3.c
! fc3a3a42af2e0edb17f7af2cf30f4343  gcc/testsuite/gcc.dg/analyzer/setjmp-4.c
! 621d7a83afd4ca0f2772b21c5dd08a48  gcc/testsuite/gcc.dg/analyzer/setjmp-5.c
! c04d5fc1dea77f1e99f32e5ee47e000f  gcc/testsuite/gcc.dg/analyzer/setjmp-6.c
! 27cf1c2faaa334e8717833bc2394aa77  gcc/testsuite/gcc.dg/analyzer/setjmp-7.c
! 51e087d07482f17215c8c8ac1ecf70b6  gcc/testsuite/gcc.dg/analyzer/setjmp-7a.c
! 6fd7af9fe85c8fa521ef73ff135dd1af  gcc/testsuite/gcc.dg/analyzer/setjmp-8.c
! 24ae6e59284354d0ed2f5e6a015abbb3  gcc/testsuite/gcc.dg/analyzer/setjmp-9.c
! 93fc25e0ff71cfdd7223fa0bb7841517  gcc/testsuite/gcc.dg/analyzer/setjmp-pr93378.c
! 0cb4c7a3599bf002d40a3b5ac76644aa  gcc/testsuite/gcc.dg/analyzer/signal-1.c
! a6cb10f4e6f6aa799d4c4c4aea433d9d  gcc/testsuite/gcc.dg/analyzer/signal-2.c
! e98f83f7b7082df7aa09ee75584ec411  gcc/testsuite/gcc.dg/analyzer/signal-3.c
! 1adf6dece1a903ab46c7a61fa7e2014e  gcc/testsuite/gcc.dg/analyzer/signal-4a.c
! 6da7042834e11fe11d26cbdd4e7031a4  gcc/testsuite/gcc.dg/analyzer/signal-4b.c
! e9a1ff715baaef06ea9e16086ff0f48c  gcc/testsuite/gcc.dg/analyzer/signal-5.c
! c3d6877dc6b6aaf933b97e6748b315cc  gcc/testsuite/gcc.dg/analyzer/signal-6.c
! 7c0bf2888cac40134f61a3ceca65cf6c  gcc/testsuite/gcc.dg/analyzer/signal-exit.c
! 8a4efecb85182b606cd44ba871d0f3ab  gcc/testsuite/gcc.dg/analyzer/signal-registration-loc.c
! 21f29e324e02af30bdd09e1978dc26f6  gcc/testsuite/gcc.dg/analyzer/sigsetjmp-5.c
! 8959874363aade3ab965125e11d3ded5  gcc/testsuite/gcc.dg/analyzer/sigsetjmp-6.c
! 041939ea34c3dd2bdd2d95257e5520ad  gcc/testsuite/gcc.dg/analyzer/single-field.c
! 48e91216499370bacb005fecdb79b36b  gcc/testsuite/gcc.dg/analyzer/stale-frame-1.c
  5c824937a2b8b50d8d983130fccd4e81  gcc/testsuite/gcc.dg/analyzer/strcmp-1.c
+ 75d08bca79f4ac1789e8518f83e25230  gcc/testsuite/gcc.dg/analyzer/strcpy-1.c
+ 94cb92233eb5c2bcada4066b1a45a8c5  gcc/testsuite/gcc.dg/analyzer/strdup-1.c
+ 62ef5682e1c09c511b5a2f27b4cdef3f  gcc/testsuite/gcc.dg/analyzer/strndup-1.c
  5231cd301b8d86c62bf8321d1e5bfb4b  gcc/testsuite/gcc.dg/analyzer/switch.c
! 5fd1467a3fda46f1c5783eb10827dc00  gcc/testsuite/gcc.dg/analyzer/symbolic-1.c
! 2982a3481c63231cadba1329977640bd  gcc/testsuite/gcc.dg/analyzer/symbolic-2.c
! 24d2d7b09cf8245a68dd00b36075e2cd  gcc/testsuite/gcc.dg/analyzer/symbolic-3.c
! 784de898ae2196cc28e4405a23f94314  gcc/testsuite/gcc.dg/analyzer/symbolic-4.c
! 8d8ebd7d911c51e682f6290fd9fca032  gcc/testsuite/gcc.dg/analyzer/symbolic-5.c
! 2874e0dd4822b9e02d76d958c6b96223  gcc/testsuite/gcc.dg/analyzer/symbolic-6.c
! 2fbcc4d35e990ea06e218d02a38e74eb  gcc/testsuite/gcc.dg/analyzer/taint-1.c
! ca97da792ccb8600104f461e27f88997  gcc/testsuite/gcc.dg/analyzer/test-setjmp.h
  1044a7408c5d7630501b02b9726d7b8b  gcc/testsuite/gcc.dg/analyzer/torture/20060625-1.c
! 2e86ca4009e75424e9ba48f34d0a798b  gcc/testsuite/gcc.dg/analyzer/torture/analyzer-torture.exp
! 6600a700d9c3d03886029438e22848f6  gcc/testsuite/gcc.dg/analyzer/torture/conditionals-2.c
  4c43e729ef81f365c923eb98024417c6  gcc/testsuite/gcc.dg/analyzer/torture/conftest-1.c
  2a944db68262f05280b26c9c165685c9  gcc/testsuite/gcc.dg/analyzer/torture/intptr_t.c
+ fe447f16fa32a6662b71d48cefafbccc  gcc/testsuite/gcc.dg/analyzer/torture/loop-inc-ptr-1.c
+ b8568508a8d8d6b0005149ac11f93783  gcc/testsuite/gcc.dg/analyzer/torture/loop-inc-ptr-2.c
+ 707a0e095b5e167db1cb6f2fa2cad4da  gcc/testsuite/gcc.dg/analyzer/torture/loop-inc-ptr-3.c
  52faf878195ceb4ad78e8c760c4f86f4  gcc/testsuite/gcc.dg/analyzer/torture/poc.c
  d1bd725bfd85304b0430a4afe4ef5b4e  gcc/testsuite/gcc.dg/analyzer/torture/pr51628-30.c
  ca62b5bdb1c5cf71cd203f8d475fbcdc  gcc/testsuite/gcc.dg/analyzer/torture/pr59037.c
*************** edff473b255c0dea0c18477a32ff789c  gcc/te
*** 31694,31704 ****
  7d61ba3b8fe5f40159915f93daf67457  gcc/testsuite/gcc.dg/analyzer/torture/pr93647.c
  629733f05345c8989dab989cdae31c50  gcc/testsuite/gcc.dg/analyzer/torture/pr93649.c
  049209558c45a95b2d1cfb0369c75138  gcc/testsuite/gcc.dg/analyzer/torture/pr93947.c
! ab5362e8af82749f5a189a48550b1ffa  gcc/testsuite/gcc.dg/analyzer/unknown-fns.c
  838b90b78b8ec4ed64b4613806941236  gcc/testsuite/gcc.dg/analyzer/zlib-1.c
! 72704013b6094efa82b5a26694affa36  gcc/testsuite/gcc.dg/analyzer/zlib-2.c
  c446a843da441b1eef1485816ccae17b  gcc/testsuite/gcc.dg/analyzer/zlib-3.c
! 71eb72b69857c2408ac8252740039ae8  gcc/testsuite/gcc.dg/analyzer/zlib-4.c
  9994e9236629499aa37d1d0d4d893158  gcc/testsuite/gcc.dg/analyzer/zlib-5.c
  4d2dcddc4524859ec98f647d42524984  gcc/testsuite/gcc.dg/analyzer/zlib-6.c
  9a236d4e4079496d64daed78574cc006  gcc/testsuite/gcc.dg/and-1.c
--- 34257,34274 ----
  7d61ba3b8fe5f40159915f93daf67457  gcc/testsuite/gcc.dg/analyzer/torture/pr93647.c
  629733f05345c8989dab989cdae31c50  gcc/testsuite/gcc.dg/analyzer/torture/pr93649.c
  049209558c45a95b2d1cfb0369c75138  gcc/testsuite/gcc.dg/analyzer/torture/pr93947.c
! c1e2ec7b982a6c1d3f3d88277f0a5412  gcc/testsuite/gcc.dg/analyzer/unknown-fns-2.c
! 9346d04a573f82a1a5d2aa442f8df654  gcc/testsuite/gcc.dg/analyzer/unknown-fns-3.c
! 81481da5bab0e2c1f85b1504bcfab189  gcc/testsuite/gcc.dg/analyzer/unknown-fns-4.c
! b06ba7887a4ece7ea7f11a9caf8e97b4  gcc/testsuite/gcc.dg/analyzer/unknown-fns.c
! fb0acf2dd995d01b9b08a8f1188592f7  gcc/testsuite/gcc.dg/analyzer/use-after-free.c
! 0e26412eb45800cfc2b9b5909a28b098  gcc/testsuite/gcc.dg/analyzer/vla-1.c
! 6fcd3abc5b1f2edc5e93bd98f3438e8c  gcc/testsuite/gcc.dg/analyzer/write-to-const-1.c
! 67dbd7690fda51d588dc970ff6d5f81e  gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-1.c
  838b90b78b8ec4ed64b4613806941236  gcc/testsuite/gcc.dg/analyzer/zlib-1.c
! 57902d5ce798d9c34760d0ab62f511a0  gcc/testsuite/gcc.dg/analyzer/zlib-2.c
  c446a843da441b1eef1485816ccae17b  gcc/testsuite/gcc.dg/analyzer/zlib-3.c
! df72c008ff04db0cf35cc53f456d09e9  gcc/testsuite/gcc.dg/analyzer/zlib-4.c
  9994e9236629499aa37d1d0d4d893158  gcc/testsuite/gcc.dg/analyzer/zlib-5.c
  4d2dcddc4524859ec98f647d42524984  gcc/testsuite/gcc.dg/analyzer/zlib-6.c
  9a236d4e4079496d64daed78574cc006  gcc/testsuite/gcc.dg/and-1.c
*************** b83db629f91a7356b28b31cfbbc330ad  gcc/te
*** 31736,31745 ****
  8d6052373f557446fbc2c85bbada1d63  gcc/testsuite/gcc.dg/array-const-3.c
  c11a907de50c52966dc3fac763e376b5  gcc/testsuite/gcc.dg/array-init-1.c
  f5a2800fc5f21185bd9bdbd69e270c10  gcc/testsuite/gcc.dg/array-init-2.c
! f1924cd169cc9af518b51afd9f11da82  gcc/testsuite/gcc.dg/array-quals-1.c
  142997aec138f2b5487250ef14d6de54  gcc/testsuite/gcc.dg/array-quals-2.c
  889ad8871787262fb9533d339c717e6a  gcc/testsuite/gcc.dg/aru-2.c
! 98492b6f4e07d454dfb2f7f000fdb282  gcc/testsuite/gcc.dg/asan/asan.exp
  738544a74dbe22f6a41201227dfe9cd9  gcc/testsuite/gcc.dg/asan/nosanitize-and-inline.c
  a5e988481cd66b8acf6c610b847cb713  gcc/testsuite/gcc.dg/asan/pr56417.c
  0c13e4008bb665f05b030eb42e43183f  gcc/testsuite/gcc.dg/asan/pr63845.c
--- 34306,34316 ----
  8d6052373f557446fbc2c85bbada1d63  gcc/testsuite/gcc.dg/array-const-3.c
  c11a907de50c52966dc3fac763e376b5  gcc/testsuite/gcc.dg/array-init-1.c
  f5a2800fc5f21185bd9bdbd69e270c10  gcc/testsuite/gcc.dg/array-init-2.c
! ad76181b383bac32f71b8ce6107cb0c1  gcc/testsuite/gcc.dg/array-quals-1.c
  142997aec138f2b5487250ef14d6de54  gcc/testsuite/gcc.dg/array-quals-2.c
  889ad8871787262fb9533d339c717e6a  gcc/testsuite/gcc.dg/aru-2.c
! c3a77b3c243c9ea87f79d62f7db200dc  gcc/testsuite/gcc.dg/asan/asan.exp
! b8a049317908d7e0078316ad82437346  gcc/testsuite/gcc.dg/asan/nested-1.c
  738544a74dbe22f6a41201227dfe9cd9  gcc/testsuite/gcc.dg/asan/nosanitize-and-inline.c
  a5e988481cd66b8acf6c610b847cb713  gcc/testsuite/gcc.dg/asan/pr56417.c
  0c13e4008bb665f05b030eb42e43183f  gcc/testsuite/gcc.dg/asan/pr63845.c
*************** db5432c9efc7dc40270438aeee76eb69  gcc/te
*** 31765,31771 ****
  650fc3032a7e08987ca619b55b3a366b  gcc/testsuite/gcc.dg/asan/pr82545.c
  9bc80e3f249062d650dd94cb87ee3fc3  gcc/testsuite/gcc.dg/asan/pr83185.c
  c6879980a054642fecf33371357e8e0e  gcc/testsuite/gcc.dg/asan/pr86962.c
! 73adb0a2b667c56247eeda7268b38c1e  gcc/testsuite/gcc.dg/asan/pr87930.c
  3454dc6f285abc03efc10b39853cc81b  gcc/testsuite/gcc.dg/asan/pr97294.c
  da89dc3f01ef08b35253f1daef462bec  gcc/testsuite/gcc.dg/asan/sancov-1.c
  7f4f842288c94385c74120c61927a140  gcc/testsuite/gcc.dg/asan/use-after-scope-1.c
--- 34336,34344 ----
  650fc3032a7e08987ca619b55b3a366b  gcc/testsuite/gcc.dg/asan/pr82545.c
  9bc80e3f249062d650dd94cb87ee3fc3  gcc/testsuite/gcc.dg/asan/pr83185.c
  c6879980a054642fecf33371357e8e0e  gcc/testsuite/gcc.dg/asan/pr86962.c
! 76a27eb04f5b4f3c17bf6b48a7f82ab5  gcc/testsuite/gcc.dg/asan/pr87930.c
! 39c8a5f3240912f763b37da76e663389  gcc/testsuite/gcc.dg/asan/pr95033.c
! 7ce9fbfd8ab6da25366344e542f90eb2  gcc/testsuite/gcc.dg/asan/pr95051.c
  3454dc6f285abc03efc10b39853cc81b  gcc/testsuite/gcc.dg/asan/pr97294.c
  da89dc3f01ef08b35253f1daef462bec  gcc/testsuite/gcc.dg/asan/sancov-1.c
  7f4f842288c94385c74120c61927a140  gcc/testsuite/gcc.dg/asan/use-after-scope-1.c
*************** b6d936bcef333630cc9629b477556dad  gcc/te
*** 31849,31862 ****
  cfbaa184996beeec40d054222582f88d  gcc/testsuite/gcc.dg/atomic-store-4.c
  46ad754bc98b69bc0f3db1488d026dc2  gcc/testsuite/gcc.dg/atomic-store-5.c
  ce7e52f61e6fb003d8ae0bf9772503eb  gcc/testsuite/gcc.dg/atomic-store-6.c
! 85a0998aa3124ffabc37d5461475d248  gcc/testsuite/gcc.dg/atomic/atomic.exp
  c341a56eb40ffc48dba93161f0413185  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-1.c
  53c07ebd1f125e7d5c8ac384d45e3763  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-2.c
  26c96c849ea8b781c5176b22d3ae0f3f  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-3.c
  5eb307935a17eefbd29848f81bc97f15  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-4.c
  3c5d4d4c6cf5bcc01671dbaab29f7927  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-5.c
! 3d4c3308bc0c0167721fc07e6d7e07f3  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-6.c
! 67c3d3e9eb4497d2b48999a580aea758  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-7.c
  c130cbfd55eeb7a9e065d9b93d8876cb  gcc/testsuite/gcc.dg/atomic/pr65345-4.c
  81f6a9440e5c693903c6f41e0cf1d7f4  gcc/testsuite/gcc.dg/atomic/pr71675.c
  1da4fb2f8213200b5bf27cf23efe8f22  gcc/testsuite/gcc.dg/atomic/pr80640-2.c
--- 34422,34435 ----
  cfbaa184996beeec40d054222582f88d  gcc/testsuite/gcc.dg/atomic-store-4.c
  46ad754bc98b69bc0f3db1488d026dc2  gcc/testsuite/gcc.dg/atomic-store-5.c
  ce7e52f61e6fb003d8ae0bf9772503eb  gcc/testsuite/gcc.dg/atomic-store-6.c
! 2d75d7f841194733bcd4f57385650bbf  gcc/testsuite/gcc.dg/atomic/atomic.exp
  c341a56eb40ffc48dba93161f0413185  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-1.c
  53c07ebd1f125e7d5c8ac384d45e3763  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-2.c
  26c96c849ea8b781c5176b22d3ae0f3f  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-3.c
  5eb307935a17eefbd29848f81bc97f15  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-4.c
  3c5d4d4c6cf5bcc01671dbaab29f7927  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-5.c
! c104d4bbbf393aecc426659f83432644  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-6.c
! 05addf91f06d7c4032d0a8225739b02c  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-7.c
  c130cbfd55eeb7a9e065d9b93d8876cb  gcc/testsuite/gcc.dg/atomic/pr65345-4.c
  81f6a9440e5c693903c6f41e0cf1d7f4  gcc/testsuite/gcc.dg/atomic/pr71675.c
  1da4fb2f8213200b5bf27cf23efe8f22  gcc/testsuite/gcc.dg/atomic/pr80640-2.c
*************** ff1ec98147c12be11b863dc1a27f57bf  gcc/te
*** 31886,31902 ****
  a359b1b7ed800b2cdf75a0973a3f80a1  gcc/testsuite/gcc.dg/atomic/stdatomic-op-2.c
  12486f7b3c267eaaaa08d804da9dea40  gcc/testsuite/gcc.dg/atomic/stdatomic-op-3.c
  fad7c0269692b9a06af9de23c06ea500  gcc/testsuite/gcc.dg/atomic/stdatomic-op-4.c
! 73eb83f8caaede2225ce3084c3bd7f25  gcc/testsuite/gcc.dg/atomic/stdatomic-op-5.c
  cf011205fa8585115ba0b4456ca190b2  gcc/testsuite/gcc.dg/atomic/stdatomic-store-1.c
  1bcea72621449b18af70432182bb3a94  gcc/testsuite/gcc.dg/atomic/stdatomic-store-2.c
  59364eb5ee91b59390edeb4b4d0da025  gcc/testsuite/gcc.dg/atomic/stdatomic-store-3.c
  c5eb132664fcdccfe3b42e49e06fba83  gcc/testsuite/gcc.dg/atomic/stdatomic-store-4.c
! 10068247729e9cd3aff521270899182f  gcc/testsuite/gcc.dg/atomic/stdatomic-vm.c
  5add97ebb6a9fee090a771dfb77b535f  gcc/testsuite/gcc.dg/attr-access-read-only-2.c
! aaf612040d6d739ea77da97e8c85fdec  gcc/testsuite/gcc.dg/attr-access-read-only.c
! bbb9b70a44d0de19f26c40d391676792  gcc/testsuite/gcc.dg/attr-access-read-write-2.c
! 88fa0e4ca3b34d5aa399b6f7570c1105  gcc/testsuite/gcc.dg/attr-access-read-write.c
! 2069cb0510bda6e72cca3eebfca1c0b1  gcc/testsuite/gcc.dg/attr-access-write-only.c
  54188f3eaf9698b14ee4b2bad777cc98  gcc/testsuite/gcc.dg/attr-access.c
  bfcf3d61cfaeb70ffaf79290c46dc732  gcc/testsuite/gcc.dg/attr-alias-1.c
  e1871215b9eef07b10dc8c1bf21c038a  gcc/testsuite/gcc.dg/attr-alias-2.c
--- 34459,34480 ----
  a359b1b7ed800b2cdf75a0973a3f80a1  gcc/testsuite/gcc.dg/atomic/stdatomic-op-2.c
  12486f7b3c267eaaaa08d804da9dea40  gcc/testsuite/gcc.dg/atomic/stdatomic-op-3.c
  fad7c0269692b9a06af9de23c06ea500  gcc/testsuite/gcc.dg/atomic/stdatomic-op-4.c
! 948fbb4b294e8fce185990a39356653a  gcc/testsuite/gcc.dg/atomic/stdatomic-op-5.c
  cf011205fa8585115ba0b4456ca190b2  gcc/testsuite/gcc.dg/atomic/stdatomic-store-1.c
  1bcea72621449b18af70432182bb3a94  gcc/testsuite/gcc.dg/atomic/stdatomic-store-2.c
  59364eb5ee91b59390edeb4b4d0da025  gcc/testsuite/gcc.dg/atomic/stdatomic-store-3.c
  c5eb132664fcdccfe3b42e49e06fba83  gcc/testsuite/gcc.dg/atomic/stdatomic-store-4.c
! c89f0e1e985d6078d674e80e7ee5d409  gcc/testsuite/gcc.dg/atomic/stdatomic-vm.c
! 7a95cc948c901f13a58b40e8863e4fea  gcc/testsuite/gcc.dg/attr-access-2.c
! 980513435d8c2f32d3b2d0a40cbcb6e6  gcc/testsuite/gcc.dg/attr-access-3.c
! 3188310f8a182999a87b02cda61cacb6  gcc/testsuite/gcc.dg/attr-access-4.c
! 51f049631e825521091ac9309103dc49  gcc/testsuite/gcc.dg/attr-access-5.c
! 88fb544053c4fae3ec2eb1a600efb88a  gcc/testsuite/gcc.dg/attr-access-none.c
  5add97ebb6a9fee090a771dfb77b535f  gcc/testsuite/gcc.dg/attr-access-read-only-2.c
! a245c3a9d22aaced37b0f8a6a394aa03  gcc/testsuite/gcc.dg/attr-access-read-only.c
! 17f32f325f19dd03827f8c7cf485fd9c  gcc/testsuite/gcc.dg/attr-access-read-write-2.c
! 7d1d87c5a1b0c30e4c6387185af21229  gcc/testsuite/gcc.dg/attr-access-read-write.c
! 31057904a95020c421865f2cc8c81dbb  gcc/testsuite/gcc.dg/attr-access-write-only.c
  54188f3eaf9698b14ee4b2bad777cc98  gcc/testsuite/gcc.dg/attr-access.c
  bfcf3d61cfaeb70ffaf79290c46dc732  gcc/testsuite/gcc.dg/attr-alias-1.c
  e1871215b9eef07b10dc8c1bf21c038a  gcc/testsuite/gcc.dg/attr-alias-2.c
*************** a9ff03a6ff85f7c46fced4797280e236  gcc/te
*** 31910,31918 ****
  daf15f1ec989bc8e1d4831a0d1c70e3e  gcc/testsuite/gcc.dg/attr-alloc_align-2.c
  a40448e5fa79d5f463c4408a645a3bb7  gcc/testsuite/gcc.dg/attr-alloc_align-3.c
  20673f6fc38505564ee86bd12ff52bee  gcc/testsuite/gcc.dg/attr-alloc_align-4.c
  a2b6348e7f085fa83db64bd978c4e56c  gcc/testsuite/gcc.dg/attr-alloc_size-10.c
! acc676cc7cbe238cce1cf065706f8c06  gcc/testsuite/gcc.dg/attr-alloc_size-11.c
  95ee9b201db957fb93ce07864f13b9b4  gcc/testsuite/gcc.dg/attr-alloc_size-12.c
  6e7b391534abc17673b1ce896f7c3a66  gcc/testsuite/gcc.dg/attr-alloc_size-2.c
  ea7bcf6a72a5617495c3e237cdd515f8  gcc/testsuite/gcc.dg/attr-alloc_size-3.c
  027fba1dfd863548c3847f174d9efa33  gcc/testsuite/gcc.dg/attr-alloc_size-4.c
--- 34488,34498 ----
  daf15f1ec989bc8e1d4831a0d1c70e3e  gcc/testsuite/gcc.dg/attr-alloc_align-2.c
  a40448e5fa79d5f463c4408a645a3bb7  gcc/testsuite/gcc.dg/attr-alloc_align-3.c
  20673f6fc38505564ee86bd12ff52bee  gcc/testsuite/gcc.dg/attr-alloc_align-4.c
+ 97a9f10f1ebd5c89262aa838eb08f235  gcc/testsuite/gcc.dg/attr-alloc_align-5.c
  a2b6348e7f085fa83db64bd978c4e56c  gcc/testsuite/gcc.dg/attr-alloc_size-10.c
! 305748d5293287364731d3d5ddbad056  gcc/testsuite/gcc.dg/attr-alloc_size-11.c
  95ee9b201db957fb93ce07864f13b9b4  gcc/testsuite/gcc.dg/attr-alloc_size-12.c
+ be16f6b71bd68991024f0ec321092a06  gcc/testsuite/gcc.dg/attr-alloc_size-13.c
  6e7b391534abc17673b1ce896f7c3a66  gcc/testsuite/gcc.dg/attr-alloc_size-2.c
  ea7bcf6a72a5617495c3e237cdd515f8  gcc/testsuite/gcc.dg/attr-alloc_size-3.c
  027fba1dfd863548c3847f174d9efa33  gcc/testsuite/gcc.dg/attr-alloc_size-4.c
*************** bff5bf12c7a752b89f17af335428c788  gcc/te
*** 31929,31939 ****
  6e85d9fda9c397d492aa648ec798d6b8  gcc/testsuite/gcc.dg/attr-assume_aligned-4.c
  98639a922ccd34ef430959327ab91ce7  gcc/testsuite/gcc.dg/attr-copy-2.c
  b2c4e769d6b76333376078e568f8eaa8  gcc/testsuite/gcc.dg/attr-copy-3.c
! 33bfe432b84ca62b61405f079f342fc2  gcc/testsuite/gcc.dg/attr-copy-4.c
  b89b2a5e91e59587574b0ef6b1f1b4c7  gcc/testsuite/gcc.dg/attr-copy-5.c
! 2e8ef3bda676c7ad375d26757a98539f  gcc/testsuite/gcc.dg/attr-copy-6.c
  c10fa29096ca32d276cd578446b49f94  gcc/testsuite/gcc.dg/attr-copy-7.c
! 3fa183282ac58f59f04453b026ab5935  gcc/testsuite/gcc.dg/attr-copy-8.c
  b354bea7c992db9900660e8f86e50619  gcc/testsuite/gcc.dg/attr-copy.c
  2ab690f26f6524b356d114e0c2e001f6  gcc/testsuite/gcc.dg/attr-error-1.c
  2325b5c5b5a2514369e43e2225cbb43b  gcc/testsuite/gcc.dg/attr-externally-visible-1.c
--- 34509,34519 ----
  6e85d9fda9c397d492aa648ec798d6b8  gcc/testsuite/gcc.dg/attr-assume_aligned-4.c
  98639a922ccd34ef430959327ab91ce7  gcc/testsuite/gcc.dg/attr-copy-2.c
  b2c4e769d6b76333376078e568f8eaa8  gcc/testsuite/gcc.dg/attr-copy-3.c
! 3366e3a3db8c8a30d5a7e6f8c872146d  gcc/testsuite/gcc.dg/attr-copy-4.c
  b89b2a5e91e59587574b0ef6b1f1b4c7  gcc/testsuite/gcc.dg/attr-copy-5.c
! 98e146d54f44c9b519ca1bd637d92b1a  gcc/testsuite/gcc.dg/attr-copy-6.c
  c10fa29096ca32d276cd578446b49f94  gcc/testsuite/gcc.dg/attr-copy-7.c
! 80ddfc710ac1746e479d9236789f2d96  gcc/testsuite/gcc.dg/attr-copy-8.c
  b354bea7c992db9900660e8f86e50619  gcc/testsuite/gcc.dg/attr-copy.c
  2ab690f26f6524b356d114e0c2e001f6  gcc/testsuite/gcc.dg/attr-error-1.c
  2325b5c5b5a2514369e43e2225cbb43b  gcc/testsuite/gcc.dg/attr-externally-visible-1.c
*************** fdff5507603fa1993842a13ecf8090c5  gcc/te
*** 31946,31951 ****
--- 34526,34532 ----
  dfcbcb413d45b799130076be29aefda8  gcc/testsuite/gcc.dg/attr-ifunc-4.c
  691220b853ff6986c4b9f90caaeb2008  gcc/testsuite/gcc.dg/attr-ifunc-5.c
  ba4bb570d75087182c6efb61a9373abf  gcc/testsuite/gcc.dg/attr-invalid.c
+ 2ce7fcf0401eadd3f754af0e964c56d5  gcc/testsuite/gcc.dg/attr-malloc.c
  dda577a8db5a9ac846b12e6d6d62a0dd  gcc/testsuite/gcc.dg/attr-may-alias-1.c
  f298b442f1417f4a5a952b04dbe114b5  gcc/testsuite/gcc.dg/attr-mode-1.c
  e427c17eb1d839cc3cf176d262cdffc0  gcc/testsuite/gcc.dg/attr-mode-2.c
*************** e02ec6b9f7fd9ab37c02f7efd3c1f1d5  gcc/te
*** 31955,31964 ****
  2e8d579abde3b50be916cdcd11691f06  gcc/testsuite/gcc.dg/attr-nest.c
  09064ad2ea81b8688ea9d81edf13c136  gcc/testsuite/gcc.dg/attr-noinline.c
  23420c6eb2e3bb0c1cccb8e5b6e5547c  gcc/testsuite/gcc.dg/attr-noipa.c
! e3c9fe25e18dde2e3ddabab4444ae2dc  gcc/testsuite/gcc.dg/attr-nonstring-2.c
! 8d8b342bc89bdc6a55554323f38fb453  gcc/testsuite/gcc.dg/attr-nonstring-3.c
! 0367a98116cad5b8fc2e6c08f5d7d70d  gcc/testsuite/gcc.dg/attr-nonstring-4.c
! 64691a187301ec1b2085cd2f40c0d41a  gcc/testsuite/gcc.dg/attr-nonstring.c
  b384d3e6b1dc6a5cce4210c51589c4f5  gcc/testsuite/gcc.dg/attr-vector_size.c
  fa7929b130df76e25cb947b7f8fdc470  gcc/testsuite/gcc.dg/attr-weak-1.c
  db8374eda20551d6cd60bccb85b32576  gcc/testsuite/gcc.dg/attr-weak-hidden-1.c
--- 34536,34548 ----
  2e8d579abde3b50be916cdcd11691f06  gcc/testsuite/gcc.dg/attr-nest.c
  09064ad2ea81b8688ea9d81edf13c136  gcc/testsuite/gcc.dg/attr-noinline.c
  23420c6eb2e3bb0c1cccb8e5b6e5547c  gcc/testsuite/gcc.dg/attr-noipa.c
! fc78d84ff250fc629f2d14152588c44c  gcc/testsuite/gcc.dg/attr-nonstring-2.c
! bb1973e41826aae1a7a467d0b6906cab  gcc/testsuite/gcc.dg/attr-nonstring-3.c
! b14762492fad19373298579706b4fbfc  gcc/testsuite/gcc.dg/attr-nonstring-4.c
! 91e470676d23307e9650ac576093d59d  gcc/testsuite/gcc.dg/attr-nonstring.c
! fa14ccaa355e91828fbdd1d92f202deb  gcc/testsuite/gcc.dg/attr-noreturn.c
! 154b3c8b79eb7c731befec33ebaf3c4d  gcc/testsuite/gcc.dg/attr-returns-nonnull.c
! 27da52df078954faf55a7223c4ea08ac  gcc/testsuite/gcc.dg/attr-section.c
  b384d3e6b1dc6a5cce4210c51589c4f5  gcc/testsuite/gcc.dg/attr-vector_size.c
  fa7929b130df76e25cb947b7f8fdc470  gcc/testsuite/gcc.dg/attr-weak-1.c
  db8374eda20551d6cd60bccb85b32576  gcc/testsuite/gcc.dg/attr-weak-hidden-1.c
*************** a8b698b276857d272916880be5579a44  gcc/te
*** 31973,31979 ****
  c42096cdd70af11210a8acce42d72fc4  gcc/testsuite/gcc.dg/attr-weakref-5.c
  728ad18ac3017195abfa17386cbb7a12  gcc/testsuite/gcc.dg/auto-type-1.c
  c5e609e52b13380aa093916bc7d09fce  gcc/testsuite/gcc.dg/auto-type-2.c
! fe22d9b5ec9c2ac950ca8ab8f618b6ab  gcc/testsuite/gcc.dg/autopar/autopar.exp
  aa4d5a35793f7cfe360cd57078e1adc3  gcc/testsuite/gcc.dg/autopar/outer-1.c
  025c98b5845d57489814930464df1724  gcc/testsuite/gcc.dg/autopar/outer-2.c
  89a6c222b7a3ca9428f07d4ea8489cee  gcc/testsuite/gcc.dg/autopar/outer-3.c
--- 34557,34563 ----
  c42096cdd70af11210a8acce42d72fc4  gcc/testsuite/gcc.dg/attr-weakref-5.c
  728ad18ac3017195abfa17386cbb7a12  gcc/testsuite/gcc.dg/auto-type-1.c
  c5e609e52b13380aa093916bc7d09fce  gcc/testsuite/gcc.dg/auto-type-2.c
! 678b9390a38368642e36f876da581ece  gcc/testsuite/gcc.dg/autopar/autopar.exp
  aa4d5a35793f7cfe360cd57078e1adc3  gcc/testsuite/gcc.dg/autopar/outer-1.c
  025c98b5845d57489814930464df1724  gcc/testsuite/gcc.dg/autopar/outer-2.c
  89a6c222b7a3ca9428f07d4ea8489cee  gcc/testsuite/gcc.dg/autopar/outer-3.c
*************** f5cb55cc488457202693155371836b5c  gcc/te
*** 32007,32013 ****
  19e1847731146a159a6588f862145063  gcc/testsuite/gcc.dg/autopar/pr57103.c
  27391de0a65828f2a5e9cbbe81fb90d1  gcc/testsuite/gcc.dg/autopar/pr57185.c
  7e9ac1304afaec188783250cdbd8529e  gcc/testsuite/gcc.dg/autopar/pr68373.c
! 57941600aefec203e2e5f9e34821b9b5  gcc/testsuite/gcc.dg/autopar/pr68460.c
  bdcc98b7f8d7f0592e9ad3ac475d06fa  gcc/testsuite/gcc.dg/autopar/pr69039.c
  e8df827a503c8bf993ec7855403a1236  gcc/testsuite/gcc.dg/autopar/pr69062.c
  a345c8424d097325ceddaefa74a387d5  gcc/testsuite/gcc.dg/autopar/pr69108.c
--- 34591,34597 ----
  19e1847731146a159a6588f862145063  gcc/testsuite/gcc.dg/autopar/pr57103.c
  27391de0a65828f2a5e9cbbe81fb90d1  gcc/testsuite/gcc.dg/autopar/pr57185.c
  7e9ac1304afaec188783250cdbd8529e  gcc/testsuite/gcc.dg/autopar/pr68373.c
! a160bf9ca285c1328930133b412b1b5f  gcc/testsuite/gcc.dg/autopar/pr68460.c
  bdcc98b7f8d7f0592e9ad3ac475d06fa  gcc/testsuite/gcc.dg/autopar/pr69039.c
  e8df827a503c8bf993ec7855403a1236  gcc/testsuite/gcc.dg/autopar/pr69062.c
  a345c8424d097325ceddaefa74a387d5  gcc/testsuite/gcc.dg/autopar/pr69108.c
*************** a72aed4598b891bea75a07eca33210c9  gcc/te
*** 32034,32040 ****
  f55a1275009ff460210d4b9c67a189a3  gcc/testsuite/gcc.dg/autopar/uns-outer-4.c
  0e589f3e4ce3143c9d88fb74f872e3fe  gcc/testsuite/gcc.dg/autopar/uns-outer-5.c
  f5e8e01c793a266fa480ec93df8de475  gcc/testsuite/gcc.dg/autopar/uns-outer-6.c
! 18864e3457c9bca8eff39ae518c3d3fa  gcc/testsuite/gcc.dg/bad-binary-ops.c
  c3ec1cf03ff502f2425714ca80d1c941  gcc/testsuite/gcc.dg/bad-dereference.c
  1119d66eeb90467d2bae27e88b92d6bf  gcc/testsuite/gcc.dg/bconstp-1.c
  5e5285944749a753ae7cfa3cc1c2f6fd  gcc/testsuite/gcc.dg/bconstp-2.c
--- 34618,34624 ----
  f55a1275009ff460210d4b9c67a189a3  gcc/testsuite/gcc.dg/autopar/uns-outer-4.c
  0e589f3e4ce3143c9d88fb74f872e3fe  gcc/testsuite/gcc.dg/autopar/uns-outer-5.c
  f5e8e01c793a266fa480ec93df8de475  gcc/testsuite/gcc.dg/autopar/uns-outer-6.c
! 66a2373ba20bd9b0ef16c05942372b8b  gcc/testsuite/gcc.dg/bad-binary-ops.c
  c3ec1cf03ff502f2425714ca80d1c941  gcc/testsuite/gcc.dg/bad-dereference.c
  1119d66eeb90467d2bae27e88b92d6bf  gcc/testsuite/gcc.dg/bconstp-1.c
  5e5285944749a753ae7cfa3cc1c2f6fd  gcc/testsuite/gcc.dg/bconstp-2.c
*************** ec5b9b1f32647a9cacda264af9d27b8f  gcc/te
*** 32049,32056 ****
  7f07619c88610f37cf243e4e9548534f  gcc/testsuite/gcc.dg/bf-no-ms-layout.c
  0e3716c5009f5c5e6a6e6e89d7cb2051  gcc/testsuite/gcc.dg/bf-spl1.c
  f4bf2e19a922fd5744282ba866d43442  gcc/testsuite/gcc.dg/binary-constants-1.c
! bd5d3a8490573c6355f2fdc8e8a63c31  gcc/testsuite/gcc.dg/binary-constants-2.c
! 5c22d915babdc365eb81c95dd656dfc5  gcc/testsuite/gcc.dg/binary-constants-3.c
  16e2db9209248819980447a37415a521  gcc/testsuite/gcc.dg/binary-constants-4.c
  a86091ec273ff27540aaaa095b9a958c  gcc/testsuite/gcc.dg/binop-notand1.c
  3774003a9f55357dd8778aa645322ead  gcc/testsuite/gcc.dg/binop-notand1a.c
--- 34633,34640 ----
  7f07619c88610f37cf243e4e9548534f  gcc/testsuite/gcc.dg/bf-no-ms-layout.c
  0e3716c5009f5c5e6a6e6e89d7cb2051  gcc/testsuite/gcc.dg/bf-spl1.c
  f4bf2e19a922fd5744282ba866d43442  gcc/testsuite/gcc.dg/binary-constants-1.c
! 82e7cacde02c83919fa111dccb87525b  gcc/testsuite/gcc.dg/binary-constants-2.c
! c54768f9350a4a646eac0814d35f84bf  gcc/testsuite/gcc.dg/binary-constants-3.c
  16e2db9209248819980447a37415a521  gcc/testsuite/gcc.dg/binary-constants-4.c
  a86091ec273ff27540aaaa095b9a958c  gcc/testsuite/gcc.dg/binop-notand1.c
  3774003a9f55357dd8778aa645322ead  gcc/testsuite/gcc.dg/binop-notand1a.c
*************** c9bbd70f3dbd7558a9c1c7a6e5901e7b  gcc/te
*** 32099,32113 ****
  29dee620c099065fec233358259a8a12  gcc/testsuite/gcc.dg/bss.c
  bc286f4ff365c89c597fd19aa53a46c4  gcc/testsuite/gcc.dg/builtin-alloc-size.c
  fef5a8d7a1f7cdc1db96edce26047f61  gcc/testsuite/gcc.dg/builtin-apply1.c
! db3123edd0284dc82ac22327d1efab9f  gcc/testsuite/gcc.dg/builtin-apply2.c
  4844379205910806b383dbde4bb6bb59  gcc/testsuite/gcc.dg/builtin-apply3.c
  e1eed7b7fb47002f691a4ddfbcb683a9  gcc/testsuite/gcc.dg/builtin-apply4.c
  ba28fc0bde6fe3759423e5308218c5de  gcc/testsuite/gcc.dg/builtin-arith-overflow-1.c
  2f5a429e4857e305cbaaea57ef8fce49  gcc/testsuite/gcc.dg/builtin-arith-overflow-2.c
  d040792d1dd4c9dd03defd6b33b73ca3  gcc/testsuite/gcc.dg/builtin-arith-overflow-3.c
  451f7ecc855ee325551342a0928e36e3  gcc/testsuite/gcc.dg/builtin-assume-aligned-1.c
  81addba5c0e1838ae8925847f9549ba9  gcc/testsuite/gcc.dg/builtin-assume-aligned-2.c
  e37f4aca281a2c82829d2bf1650d5193  gcc/testsuite/gcc.dg/builtin-bswap-1.c
  ffc151478579fb7668adfc666bae4351  gcc/testsuite/gcc.dg/builtin-bswap-2.c
  8ccef9903c65aa8a5c0f7230fad726cd  gcc/testsuite/gcc.dg/builtin-bswap-3.c
  7c810cf00f9d6aa8115b2f0dbc13b483  gcc/testsuite/gcc.dg/builtin-bswap-4.c
--- 34683,34702 ----
  29dee620c099065fec233358259a8a12  gcc/testsuite/gcc.dg/bss.c
  bc286f4ff365c89c597fd19aa53a46c4  gcc/testsuite/gcc.dg/builtin-alloc-size.c
  fef5a8d7a1f7cdc1db96edce26047f61  gcc/testsuite/gcc.dg/builtin-apply1.c
! 78d28f033625b669605e6d67ec738c43  gcc/testsuite/gcc.dg/builtin-apply2.c
  4844379205910806b383dbde4bb6bb59  gcc/testsuite/gcc.dg/builtin-apply3.c
  e1eed7b7fb47002f691a4ddfbcb683a9  gcc/testsuite/gcc.dg/builtin-apply4.c
  ba28fc0bde6fe3759423e5308218c5de  gcc/testsuite/gcc.dg/builtin-arith-overflow-1.c
  2f5a429e4857e305cbaaea57ef8fce49  gcc/testsuite/gcc.dg/builtin-arith-overflow-2.c
  d040792d1dd4c9dd03defd6b33b73ca3  gcc/testsuite/gcc.dg/builtin-arith-overflow-3.c
+ eeaf7ec8b6a81975e20c95464780d69b  gcc/testsuite/gcc.dg/builtin-arith-overflow-4.c
+ 57438e502d4a94ddefa57cc49b25f836  gcc/testsuite/gcc.dg/builtin-arith-overflow-5.c
  451f7ecc855ee325551342a0928e36e3  gcc/testsuite/gcc.dg/builtin-assume-aligned-1.c
  81addba5c0e1838ae8925847f9549ba9  gcc/testsuite/gcc.dg/builtin-assume-aligned-2.c
  e37f4aca281a2c82829d2bf1650d5193  gcc/testsuite/gcc.dg/builtin-bswap-1.c
+ 4ce2c6f029c4970f13dfce974c8072b5  gcc/testsuite/gcc.dg/builtin-bswap-10.c
+ 999414d3fa6e5bfeb2e073f6ae328e91  gcc/testsuite/gcc.dg/builtin-bswap-11.c
+ e54ba2d93788169a40952b8e3c57713a  gcc/testsuite/gcc.dg/builtin-bswap-12.c
  ffc151478579fb7668adfc666bae4351  gcc/testsuite/gcc.dg/builtin-bswap-2.c
  8ccef9903c65aa8a5c0f7230fad726cd  gcc/testsuite/gcc.dg/builtin-bswap-3.c
  7c810cf00f9d6aa8115b2f0dbc13b483  gcc/testsuite/gcc.dg/builtin-bswap-4.c
*************** dee8624db42c149e727e832415aa5090  gcc/te
*** 32120,32125 ****
--- 34709,34716 ----
  547dc816e801f8746cd259482702fa77  gcc/testsuite/gcc.dg/builtin-bswap-9.c
  0eecd573e98a27ed33860504d72d4c26  gcc/testsuite/gcc.dg/builtin-choose-expr-2.c
  fa0708362233291f1148a615c4b1f287  gcc/testsuite/gcc.dg/builtin-choose-expr.c
+ a38873fa20580cba65903a262d4fd423  gcc/testsuite/gcc.dg/builtin-clear-padding-1.c
+ dc15cf451146f969eb7aa4813cfbaac9  gcc/testsuite/gcc.dg/builtin-clear-padding-2.c
  b152d7b3044cd4c130385716be2c314d  gcc/testsuite/gcc.dg/builtin-complex-err-1.c
  8a5469840816c0e59551cba587e09908  gcc/testsuite/gcc.dg/builtin-complex-err-2.c
  0c222cc6e71e46ddf388523376157d29  gcc/testsuite/gcc.dg/builtin-constant_p-1.c
*************** f122f7a281486824649a6f822f81d9d0  gcc/te
*** 32144,32151 ****
  869d1b49b0a28836ddaebf74d3462566  gcc/testsuite/gcc.dg/builtin-object-size-18.c
  581a4845d9f8f961c091eaf11a4010f0  gcc/testsuite/gcc.dg/builtin-object-size-19.c
  bccfbcebba6af45769a56fafeb152ae5  gcc/testsuite/gcc.dg/builtin-object-size-2.c
  64f46620da8757a8b762bbe273a1f084  gcc/testsuite/gcc.dg/builtin-object-size-3.c
! 16785bd3dc0c2d63e625b59efba820ae  gcc/testsuite/gcc.dg/builtin-object-size-4.c
  d65c470a9173c5d0f37963aa85d49753  gcc/testsuite/gcc.dg/builtin-object-size-5.c
  67f72c638739e21e5096efb451c998f8  gcc/testsuite/gcc.dg/builtin-object-size-6.c
  7d6776c6e0c882e6255b02670cc2458d  gcc/testsuite/gcc.dg/builtin-object-size-7.c
--- 34735,34744 ----
  869d1b49b0a28836ddaebf74d3462566  gcc/testsuite/gcc.dg/builtin-object-size-18.c
  581a4845d9f8f961c091eaf11a4010f0  gcc/testsuite/gcc.dg/builtin-object-size-19.c
  bccfbcebba6af45769a56fafeb152ae5  gcc/testsuite/gcc.dg/builtin-object-size-2.c
+ e93226957585f3511d4d0f68e18234d7  gcc/testsuite/gcc.dg/builtin-object-size-20.c
+ 6866a8187425ffe835c719a45992dae9  gcc/testsuite/gcc.dg/builtin-object-size-21.c
  64f46620da8757a8b762bbe273a1f084  gcc/testsuite/gcc.dg/builtin-object-size-3.c
! a7fcf95cb160fae2721ec0d0470911c2  gcc/testsuite/gcc.dg/builtin-object-size-4.c
  d65c470a9173c5d0f37963aa85d49753  gcc/testsuite/gcc.dg/builtin-object-size-5.c
  67f72c638739e21e5096efb451c998f8  gcc/testsuite/gcc.dg/builtin-object-size-6.c
  7d6776c6e0c882e6255b02670cc2458d  gcc/testsuite/gcc.dg/builtin-object-size-7.c
*************** b8f4d79971032c6c7c0bf1ef3c3ffdeb  gcc/te
*** 32158,32168 ****
  66732ebd5af8dead0fcb2edc10124f5c  gcc/testsuite/gcc.dg/builtin-stpncpy.c
  641e02f6eead02fdda4581c9a18073ef  gcc/testsuite/gcc.dg/builtin-stringop-chk-1.c
  ed1656f783d92fedc726aeba8e49f03a  gcc/testsuite/gcc.dg/builtin-stringop-chk-2.c
! c70331611a8d62854827d12fe83f7428  gcc/testsuite/gcc.dg/builtin-stringop-chk-4.c
! b24ec70e9d186ef80673b135ae63200d  gcc/testsuite/gcc.dg/builtin-stringop-chk-5.c
  1109497a6a7e6e51e3cea141ef370b83  gcc/testsuite/gcc.dg/builtin-stringop-chk-6.c
  824b313a112ab0c34a8cc694d5c78d6c  gcc/testsuite/gcc.dg/builtin-stringop-chk-7.c
! 73225957ae488ada79955632d57b0406  gcc/testsuite/gcc.dg/builtin-stringop-chk-8.c
  2187a1040a7eeb50f480e563045c0cee  gcc/testsuite/gcc.dg/builtin-stringop-chk-9.c
  5494c95d7bb39a02a19619b786ecaa52  gcc/testsuite/gcc.dg/builtin-strncat-chk-1.c
  e6fb34d9dcc3e8d3fb2c859d542bd34b  gcc/testsuite/gcc.dg/builtin-strstr-1.c
--- 34751,34761 ----
  66732ebd5af8dead0fcb2edc10124f5c  gcc/testsuite/gcc.dg/builtin-stpncpy.c
  641e02f6eead02fdda4581c9a18073ef  gcc/testsuite/gcc.dg/builtin-stringop-chk-1.c
  ed1656f783d92fedc726aeba8e49f03a  gcc/testsuite/gcc.dg/builtin-stringop-chk-2.c
! 44b05a58d80b188f35c0c4b70a9555a5  gcc/testsuite/gcc.dg/builtin-stringop-chk-4.c
! d095a43265afe96e8ebfe7d91dabf6d1  gcc/testsuite/gcc.dg/builtin-stringop-chk-5.c
  1109497a6a7e6e51e3cea141ef370b83  gcc/testsuite/gcc.dg/builtin-stringop-chk-6.c
  824b313a112ab0c34a8cc694d5c78d6c  gcc/testsuite/gcc.dg/builtin-stringop-chk-7.c
! 353e8ae827406b0ad9c164ac6cae2dfc  gcc/testsuite/gcc.dg/builtin-stringop-chk-8.c
  2187a1040a7eeb50f480e563045c0cee  gcc/testsuite/gcc.dg/builtin-stringop-chk-9.c
  5494c95d7bb39a02a19619b786ecaa52  gcc/testsuite/gcc.dg/builtin-strncat-chk-1.c
  e6fb34d9dcc3e8d3fb2c859d542bd34b  gcc/testsuite/gcc.dg/builtin-strstr-1.c
*************** bed8aa54aaa767e19afc5377399a58fa  gcc/te
*** 32253,32259 ****
  adf85e554b5d3abf9d35ffe7726aa9f2  gcc/testsuite/gcc.dg/c11-align-6.c
  d01d97509c83a924e0a4dd7a59a90613  gcc/testsuite/gcc.dg/c11-align-7.c
  46784e79957a93e1799c5ca3d61d8878  gcc/testsuite/gcc.dg/c11-align-8.c
! d8e656734a7163cfd1fb6c02bc56c554  gcc/testsuite/gcc.dg/c11-align-9.c
  73272f1d085d0d6415ba75242a5bf57a  gcc/testsuite/gcc.dg/c11-anon-struct-1.c
  d36e0eddf04bed52d7912609b92f693d  gcc/testsuite/gcc.dg/c11-anon-struct-2.c
  6eb0868f68915910abd540f5e1d57664  gcc/testsuite/gcc.dg/c11-anon-struct-3.c
--- 34846,34852 ----
  adf85e554b5d3abf9d35ffe7726aa9f2  gcc/testsuite/gcc.dg/c11-align-6.c
  d01d97509c83a924e0a4dd7a59a90613  gcc/testsuite/gcc.dg/c11-align-7.c
  46784e79957a93e1799c5ca3d61d8878  gcc/testsuite/gcc.dg/c11-align-8.c
! a4126c8f3dd9531f3b177b3dd0e22944  gcc/testsuite/gcc.dg/c11-align-9.c
  73272f1d085d0d6415ba75242a5bf57a  gcc/testsuite/gcc.dg/c11-anon-struct-1.c
  d36e0eddf04bed52d7912609b92f693d  gcc/testsuite/gcc.dg/c11-anon-struct-2.c
  6eb0868f68915910abd540f5e1d57664  gcc/testsuite/gcc.dg/c11-anon-struct-3.c
*************** fe3d87d9d937306c1cfb738ab291a1d0  gcc/te
*** 32265,32279 ****
--- 34858,34885 ----
  5d6e2b42910e5112d06671dbd0c78216  gcc/testsuite/gcc.dg/c11-attr-syntax-1.c
  702e136f31d9890c28e72e8e148a9ac0  gcc/testsuite/gcc.dg/c11-attr-syntax-2.c
  0892eab8020222640ce5b22436df8b66  gcc/testsuite/gcc.dg/c11-attr-syntax-3.c
+ 4158b6be4262e66b2a9f8886f0f7baf1  gcc/testsuite/gcc.dg/c11-binary-constants-1.c
+ 9bcd4768404841c553b6364640c3289c  gcc/testsuite/gcc.dg/c11-binary-constants-2.c
+ fb6856ed42272d2e75705288147407d4  gcc/testsuite/gcc.dg/c11-bool-1.c
+ 9a07880fd314b8e69dd8af8fcd6f653b  gcc/testsuite/gcc.dg/c11-bool-limits-1.c
  21c81cbf669757afced7cbebd75e9f95  gcc/testsuite/gcc.dg/c11-builtins-1.c
+ 47c6a18b65d09a5d8bfb22cb00e62f09  gcc/testsuite/gcc.dg/c11-compare-incomplete-1.c
+ 507babbb6da0d18aba4c0234531bfc0e  gcc/testsuite/gcc.dg/c11-compare-incomplete-2.c
  12ef1e10f51b7a7205f424c6c3ce9ef9  gcc/testsuite/gcc.dg/c11-complex-1.c
  d9a2f9168158c56d6257cb7866dbe1f8  gcc/testsuite/gcc.dg/c11-float-1.c
  5a0906a4ebef0b27aa6dd7d4cad0cf9f  gcc/testsuite/gcc.dg/c11-float-2.c
  04b2d9216570787bdcc1f01fba4ad2a8  gcc/testsuite/gcc.dg/c11-float-3.c
+ 41ab83e3a406a7516c960cb70255cc5c  gcc/testsuite/gcc.dg/c11-float-4.c
+ 393ef19efe1927d270c2b7a7943708db  gcc/testsuite/gcc.dg/c11-float-5.c
+ f5943e612c16b7bcb16ca6226253ea6c  gcc/testsuite/gcc.dg/c11-float-6.c
  0223046956e0ac17c6d4ec16a73e0052  gcc/testsuite/gcc.dg/c11-float-dfp-1.c
+ e6ce0af835170a38d7c6aafc1bc9d582  gcc/testsuite/gcc.dg/c11-float-dfp-2.c
  8472bf4fa0a02e831b47e014c3d8ff39  gcc/testsuite/gcc.dg/c11-generic-1.c
  9067e724c4ff52e45f30d96d1baf4aa5  gcc/testsuite/gcc.dg/c11-generic-2.c
  edccfa9a6ec4138450a583864191741b  gcc/testsuite/gcc.dg/c11-generic-3.c
+ 3db892ff7dff5c32a37d9f3b20627c73  gcc/testsuite/gcc.dg/c11-labels-1.c
+ 22f625932f22946e080ea3988bd9f854  gcc/testsuite/gcc.dg/c11-labels-2.c
+ 2476375795b6f2042388440bb97fa092  gcc/testsuite/gcc.dg/c11-labels-3.c
  78d114a088cf800bcb136263001e0c24  gcc/testsuite/gcc.dg/c11-noreturn-1.c
  79a7c7ddbbeb534965c073907ba1502d  gcc/testsuite/gcc.dg/c11-noreturn-2.c
  bd510e212640224d22dba81f49c4b9e7  gcc/testsuite/gcc.dg/c11-noreturn-3.c
*************** d8272e1d572d33a852614f0a74a31345  gcc/te
*** 32281,32286 ****
--- 34887,34896 ----
  f9262f126c900d76cdb16f0afbfc600f  gcc/testsuite/gcc.dg/c11-noreturn-5.c
  d33ce50710ecd86a247a10319e5421d3  gcc/testsuite/gcc.dg/c11-old-style-definition-1.c
  e197e3e287789d1604bf0e0c997b89fe  gcc/testsuite/gcc.dg/c11-old-style-definition-2.c
+ 76c61754cd6702dd0aa8c96472ab6679  gcc/testsuite/gcc.dg/c11-parm-omit-1.c
+ 622604c98660355bd64b729ef5b57fae  gcc/testsuite/gcc.dg/c11-parm-omit-2.c
+ d937c7e18efe1399d1b5f21633b97edd  gcc/testsuite/gcc.dg/c11-parm-omit-3.c
+ 935cd3a139ee689c19326c2aa5cdf149  gcc/testsuite/gcc.dg/c11-parm-omit-4.c
  d595f49307eb5192b976a26bca7a9c80  gcc/testsuite/gcc.dg/c11-pointer-float-1.c
  efe9f8d43440cd3d52de742b3f407e19  gcc/testsuite/gcc.dg/c11-static-assert-1.c
  7108e0131dd58f0a0943232e07ae7a08  gcc/testsuite/gcc.dg/c11-static-assert-10.c
*************** cd00c6feebac836c0ec488202c21d6a7  gcc/te
*** 32310,32335 ****
  1a6078af67236639a20541935b9c1759  gcc/testsuite/gcc.dg/c2x-attr-deprecated-1.c
  a94bb301958b9a62e50e21c069442512  gcc/testsuite/gcc.dg/c2x-attr-deprecated-2.c
  ec4ce1d7cd47b2d554a69b72933ba06b  gcc/testsuite/gcc.dg/c2x-attr-deprecated-3.c
! d89d5c6f41d4141c937044caa94b140d  gcc/testsuite/gcc.dg/c2x-attr-deprecated-4.c
  6684ae2b2a9246bfaf5fc88fd7ca0ecd  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-1.c
  ade7f27c3af0e55308b3f8378df7247b  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-2.c
  8ff9a4ace7a0658c0b47caa687fc54b8  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-3.c
! aaff04a01945938b21c730b0bb54dde6  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-4.c
  9d7950144aebc8e6d928d4108ed10486  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-5.c
  92ef8a5b7fe2bb4f8741a8267b9abb0b  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-6.c
  59a7370a702940f2d82aeef30bcd3cae  gcc/testsuite/gcc.dg/c2x-attr-maybe_unused-1.c
  4672e1aa92d294e631e09697818f5a40  gcc/testsuite/gcc.dg/c2x-attr-maybe_unused-2.c
  ddd2e02d1492c4dd2fd93bb872328e72  gcc/testsuite/gcc.dg/c2x-attr-maybe_unused-3.c
! 7129695dc8048fc4d9512ef4ae74ea1b  gcc/testsuite/gcc.dg/c2x-attr-maybe_unused-4.c
  f2989cbea7233f22a5f3e5881d430d6e  gcc/testsuite/gcc.dg/c2x-attr-syntax-1.c
  230b0d85a26ef13ac13065780826c4b3  gcc/testsuite/gcc.dg/c2x-attr-syntax-2.c
! 9190e12d8783e5a3ed9560b5e495a088  gcc/testsuite/gcc.dg/c2x-attr-syntax-3.c
  a83848b7b241c7b8e115c3a4dddb747f  gcc/testsuite/gcc.dg/c2x-attr-syntax-4.c
! 7873ad377ca65860c055a65e8c2c6d16  gcc/testsuite/gcc.dg/c2x-attr-syntax-5.c
  396a74b7c1b42fdf67e5d3c36f655b65  gcc/testsuite/gcc.dg/c2x-builtins-1.c
  90f5c814361317bbacff5ea0a7b26cf1  gcc/testsuite/gcc.dg/c2x-float-1.c
  fd42672c4bbfd0a0de2075c67b750445  gcc/testsuite/gcc.dg/c2x-float-no-dfp-1.c
  955a6943803983df967cf04984c949b8  gcc/testsuite/gcc.dg/c2x-float-no-dfp-2.c
  9aa46756a285d809fdf673f01df53026  gcc/testsuite/gcc.dg/c2x-no-dfp-1.c
  96fb9744f0d87599adaf21898d43a8da  gcc/testsuite/gcc.dg/c2x-old-style-definition-1.c
  142fa04ae5383196024c6e12791b4272  gcc/testsuite/gcc.dg/c2x-old-style-definition-2.c
--- 34920,34972 ----
  1a6078af67236639a20541935b9c1759  gcc/testsuite/gcc.dg/c2x-attr-deprecated-1.c
  a94bb301958b9a62e50e21c069442512  gcc/testsuite/gcc.dg/c2x-attr-deprecated-2.c
  ec4ce1d7cd47b2d554a69b72933ba06b  gcc/testsuite/gcc.dg/c2x-attr-deprecated-3.c
! 040e55ecdcf60d5df0f050c4955388f9  gcc/testsuite/gcc.dg/c2x-attr-deprecated-4.c
  6684ae2b2a9246bfaf5fc88fd7ca0ecd  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-1.c
  ade7f27c3af0e55308b3f8378df7247b  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-2.c
  8ff9a4ace7a0658c0b47caa687fc54b8  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-3.c
! f92fdbd923b9ff881a9b6de11a93320f  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-4.c
  9d7950144aebc8e6d928d4108ed10486  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-5.c
  92ef8a5b7fe2bb4f8741a8267b9abb0b  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-6.c
  59a7370a702940f2d82aeef30bcd3cae  gcc/testsuite/gcc.dg/c2x-attr-maybe_unused-1.c
  4672e1aa92d294e631e09697818f5a40  gcc/testsuite/gcc.dg/c2x-attr-maybe_unused-2.c
  ddd2e02d1492c4dd2fd93bb872328e72  gcc/testsuite/gcc.dg/c2x-attr-maybe_unused-3.c
! fcb97faa38daf1241ac63b55b08b2291  gcc/testsuite/gcc.dg/c2x-attr-maybe_unused-4.c
! 41ec962da570a27ed3fb272af3dc3c45  gcc/testsuite/gcc.dg/c2x-attr-nodiscard-1.c
! 41ab2ed4cfcfc9d072cf81d55e82cf5b  gcc/testsuite/gcc.dg/c2x-attr-nodiscard-2.c
! 1b417b2cef24f7e8d651858eb4706c35  gcc/testsuite/gcc.dg/c2x-attr-nodiscard-3.c
! 4538cf4e8b0845911921e1899d0347ea  gcc/testsuite/gcc.dg/c2x-attr-nodiscard-4.c
  f2989cbea7233f22a5f3e5881d430d6e  gcc/testsuite/gcc.dg/c2x-attr-syntax-1.c
  230b0d85a26ef13ac13065780826c4b3  gcc/testsuite/gcc.dg/c2x-attr-syntax-2.c
! b8f200f508d05887dc47a551eb3f7d0d  gcc/testsuite/gcc.dg/c2x-attr-syntax-3.c
  a83848b7b241c7b8e115c3a4dddb747f  gcc/testsuite/gcc.dg/c2x-attr-syntax-4.c
! 9b0765846cb41d393e7fb47b1e4cdee4  gcc/testsuite/gcc.dg/c2x-attr-syntax-5.c
! 1ee4223adce9600a47bbb336ca696c0b  gcc/testsuite/gcc.dg/c2x-binary-constants-1.c
! 4a865b821e9afd1b12f18920156de316  gcc/testsuite/gcc.dg/c2x-binary-constants-2.c
! ba639c5eb00f59a2ddffbee0249ebe64  gcc/testsuite/gcc.dg/c2x-binary-constants-3.c
! 877291ec915869126d7261bbbafe5547  gcc/testsuite/gcc.dg/c2x-bool-1.c
! e4c4e5028ccfb46dfcc79a41e4ed5488  gcc/testsuite/gcc.dg/c2x-bool-limits-1.c
  396a74b7c1b42fdf67e5d3c36f655b65  gcc/testsuite/gcc.dg/c2x-builtins-1.c
  90f5c814361317bbacff5ea0a7b26cf1  gcc/testsuite/gcc.dg/c2x-float-1.c
+ 7f0f89a42c938a971abc808663e81081  gcc/testsuite/gcc.dg/c2x-float-10.c
+ 1798707b6c0b60203833f7f8a48f98a5  gcc/testsuite/gcc.dg/c2x-float-2.c
+ dd22f71fd3db4e7e3bff58f62a3349ea  gcc/testsuite/gcc.dg/c2x-float-3.c
+ 117d0c1e261e52e8a8368ff4edba8d40  gcc/testsuite/gcc.dg/c2x-float-4.c
+ 59e11a3113c2663bf03b469466cc63dc  gcc/testsuite/gcc.dg/c2x-float-5.c
+ ab3ebd8a2507f0a729a6822cfdcbd6fd  gcc/testsuite/gcc.dg/c2x-float-6.c
+ 9e1b33f14dcbfee5e1f8e2a1fe859de2  gcc/testsuite/gcc.dg/c2x-float-7.c
+ 778c287b9a0f07077ee4bfe28b14f673  gcc/testsuite/gcc.dg/c2x-float-8.c
+ 13752a9f8db4b847dcf36a69feeb451d  gcc/testsuite/gcc.dg/c2x-float-9.c
  fd42672c4bbfd0a0de2075c67b750445  gcc/testsuite/gcc.dg/c2x-float-no-dfp-1.c
  955a6943803983df967cf04984c949b8  gcc/testsuite/gcc.dg/c2x-float-no-dfp-2.c
+ c896c681d16278ccfb60277ea6d60ea7  gcc/testsuite/gcc.dg/c2x-float-no-dfp-3.c
+ 2e0314c2eb8a19080246928d8ac80274  gcc/testsuite/gcc.dg/c2x-float-no-dfp-4.c
+ 2d19c187230a819591ad1acd5e6861a2  gcc/testsuite/gcc.dg/c2x-has-c-attribute-1.c
+ 275b1acfc5a1273e3ed71f10bf280108  gcc/testsuite/gcc.dg/c2x-has-c-attribute-2.c
+ 996b1c79eeba71a3fb4a6d0c6f775bbf  gcc/testsuite/gcc.dg/c2x-has-c-attribute-3.c
+ 12af672718164067826449dc3d706cfc  gcc/testsuite/gcc.dg/c2x-has-c-attribute-4.c
+ e12d838e9ae1c0ef00e7615fccef3476  gcc/testsuite/gcc.dg/c2x-labels-1.c
+ 885da369c5855d3bcd78e084bf36d154  gcc/testsuite/gcc.dg/c2x-labels-2.c
+ 0d32e7389b35d1d631d4805cf6be6ec7  gcc/testsuite/gcc.dg/c2x-labels-3.c
  9aa46756a285d809fdf673f01df53026  gcc/testsuite/gcc.dg/c2x-no-dfp-1.c
  96fb9744f0d87599adaf21898d43a8da  gcc/testsuite/gcc.dg/c2x-old-style-definition-1.c
  142fa04ae5383196024c6e12791b4272  gcc/testsuite/gcc.dg/c2x-old-style-definition-2.c
*************** fd42672c4bbfd0a0de2075c67b750445  gcc/te
*** 32337,32342 ****
--- 34974,34983 ----
  b4b8a88f7469ab941346f4d6f9cb1e32  gcc/testsuite/gcc.dg/c2x-old-style-definition-4.c
  fec316d2e27f8fe61a00d3fdae1ca5f3  gcc/testsuite/gcc.dg/c2x-old-style-definition-5.c
  640358448cdec8263151e6b5d7a13aa0  gcc/testsuite/gcc.dg/c2x-old-style-definition-6.c
+ c65227cf031fcfb6cea27f0b13ee542c  gcc/testsuite/gcc.dg/c2x-parm-omit-1.c
+ 597596705ccebbf3aaa0271c02ad0ee9  gcc/testsuite/gcc.dg/c2x-parm-omit-2.c
+ 46a1998613654b31cf08003d875762d9  gcc/testsuite/gcc.dg/c2x-parm-omit-3.c
+ a941a1c2cdfbb1167a15b9c33ae3006d  gcc/testsuite/gcc.dg/c2x-parm-omit-4.c
  5a0b89a86561a35e1a3f052f805e31a5  gcc/testsuite/gcc.dg/c2x-static-assert-1.c
  b7acfb59773a55aff25adad54de3b253  gcc/testsuite/gcc.dg/c2x-static-assert-2.c
  c641ae56954ced84038d41d853a95c30  gcc/testsuite/gcc.dg/c2x-utf8char-1.c
*************** e5276aadb831e54d0b1946f2b38d598d  gcc/te
*** 32375,32381 ****
  987632064a52b420975daf1a286353fa  gcc/testsuite/gcc.dg/c90-flex-array-1.c
  f42aadf986dd6f03b9347a7efe581fa2  gcc/testsuite/gcc.dg/c90-flex-array-2.c
  2610ad04c8281a8e27f15cb78b0668db  gcc/testsuite/gcc.dg/c90-float-1.c
! a8abf6b9b8837b0ae6c78b7ff75f70e9  gcc/testsuite/gcc.dg/c90-fordecl-1.c
  499a46e260cf78eac5c5868455351362  gcc/testsuite/gcc.dg/c90-func-1.c
  328959b78d7e19c1de4578a96678b2ae  gcc/testsuite/gcc.dg/c90-func-2.c
  795ff8eaa6bed3ca17bd1af5d645fb07  gcc/testsuite/gcc.dg/c90-func-2.h
--- 35016,35022 ----
  987632064a52b420975daf1a286353fa  gcc/testsuite/gcc.dg/c90-flex-array-1.c
  f42aadf986dd6f03b9347a7efe581fa2  gcc/testsuite/gcc.dg/c90-flex-array-2.c
  2610ad04c8281a8e27f15cb78b0668db  gcc/testsuite/gcc.dg/c90-float-1.c
! 4334b94c8f9b062a431076fcb6beb861  gcc/testsuite/gcc.dg/c90-fordecl-1.c
  499a46e260cf78eac5c5868455351362  gcc/testsuite/gcc.dg/c90-func-1.c
  328959b78d7e19c1de4578a96678b2ae  gcc/testsuite/gcc.dg/c90-func-2.c
  795ff8eaa6bed3ca17bd1af5d645fb07  gcc/testsuite/gcc.dg/c90-func-2.h
*************** e674ac9efc9bb122bb40176f2984342b  gcc/te
*** 32425,32430 ****
--- 35066,35074 ----
  6dd4518038be6ff0567ac664d6a0d8be  gcc/testsuite/gcc.dg/c99-bool-1.c
  08b21a580456edf9041b31d597756025  gcc/testsuite/gcc.dg/c99-bool-2.c
  ccd874fe7bbe3119dea418cd5523ada9  gcc/testsuite/gcc.dg/c99-bool-3.c
+ e48b04bf4b78be83245611481fa25dd4  gcc/testsuite/gcc.dg/c99-bool-4.c
+ 0bc3c57035ee60663407bca658e7474c  gcc/testsuite/gcc.dg/c99-compare-incomplete-1.c
+ 43dbe58d14127c6a2bf1fb5c1dafc4b6  gcc/testsuite/gcc.dg/c99-compare-incomplete-2.c
  94c1ef1009a482c1dbbd57f7a319d3f1  gcc/testsuite/gcc.dg/c99-complex-1.c
  406a5feeb7ccc8af3e1b1b32ef2bf41f  gcc/testsuite/gcc.dg/c99-complex-2.c
  e98f91356cd47c9c21ab37ec6c60cecb  gcc/testsuite/gcc.dg/c99-complex-3.c
*************** f58931af8311670f4e7ca6c218de61e8  gcc/te
*** 32555,32561 ****
  b19d1feeef4110bea875a543dbbe5ef2  gcc/testsuite/gcc.dg/cast-qual-3.c
  7cf8e5bafba14ba705d72e0297e402d0  gcc/testsuite/gcc.dg/cdce1.c
  11ec8737ce99297ae6e2f4ec003ccd1f  gcc/testsuite/gcc.dg/cdce2.c
! 71459b30dfb09ee1d1f69f340f80d722  gcc/testsuite/gcc.dg/cdce3.c
  c8850be7a0e22bf2e52b8e88bb01c409  gcc/testsuite/gcc.dg/char-compare.c
  9c1af6a5f1547d7888309e68fa1e645e  gcc/testsuite/gcc.dg/charset/asm1.c
  de11a3779b8f68e37026c0989fe00062  gcc/testsuite/gcc.dg/charset/asm2.c
--- 35199,35205 ----
  b19d1feeef4110bea875a543dbbe5ef2  gcc/testsuite/gcc.dg/cast-qual-3.c
  7cf8e5bafba14ba705d72e0297e402d0  gcc/testsuite/gcc.dg/cdce1.c
  11ec8737ce99297ae6e2f4ec003ccd1f  gcc/testsuite/gcc.dg/cdce2.c
! 1488f440ee8aa97877192c9f0d525bf4  gcc/testsuite/gcc.dg/cdce3.c
  c8850be7a0e22bf2e52b8e88bb01c409  gcc/testsuite/gcc.dg/char-compare.c
  9c1af6a5f1547d7888309e68fa1e645e  gcc/testsuite/gcc.dg/charset/asm1.c
  de11a3779b8f68e37026c0989fe00062  gcc/testsuite/gcc.dg/charset/asm2.c
*************** bd34927c7e8ef0637a91744aa30c8e22  gcc/te
*** 32567,32573 ****
  7bcfb1562ffc5ec66175fdcc52054745  gcc/testsuite/gcc.dg/charset/attribute2.c
  d256d028f437be7e103b223e7c20fe96  gcc/testsuite/gcc.dg/charset/builtin1.c
  a00066d47a6f8dc20ebf4861a2541212  gcc/testsuite/gcc.dg/charset/builtin2.c
! c5803a443f11e4d11879b06e357344cf  gcc/testsuite/gcc.dg/charset/charset.exp
  8c029ca8175e4d8995ea0dbac6040733  gcc/testsuite/gcc.dg/charset/extern.c
  5314225894f8ef8a8d8249f4a0973380  gcc/testsuite/gcc.dg/charset/function.c
  a59f9cb8c1327a655a207f133f19d6fb  gcc/testsuite/gcc.dg/charset/string.c
--- 35211,35217 ----
  7bcfb1562ffc5ec66175fdcc52054745  gcc/testsuite/gcc.dg/charset/attribute2.c
  d256d028f437be7e103b223e7c20fe96  gcc/testsuite/gcc.dg/charset/builtin1.c
  a00066d47a6f8dc20ebf4861a2541212  gcc/testsuite/gcc.dg/charset/builtin2.c
! 95996a1a10f4889447e7b54d67e6effb  gcc/testsuite/gcc.dg/charset/charset.exp
  8c029ca8175e4d8995ea0dbac6040733  gcc/testsuite/gcc.dg/charset/extern.c
  5314225894f8ef8a8d8249f4a0973380  gcc/testsuite/gcc.dg/charset/function.c
  a59f9cb8c1327a655a207f133f19d6fb  gcc/testsuite/gcc.dg/charset/string.c
*************** c7cb5e1831bea1746c3a206e4c26e3ec  gcc/te
*** 32605,32611 ****
  ed52253f6b0d3e0e42d8c7d911691e47  gcc/testsuite/gcc.dg/compare8.c
  e505e91e0c3898015606540b084a3cf3  gcc/testsuite/gcc.dg/compare9.c
  320a670a68ed763f73f02634dc198ac9  gcc/testsuite/gcc.dg/compat/compat-common.h
! 0f6bca7383e41efac0ce3283759591bb  gcc/testsuite/gcc.dg/compat/compat.exp
  24894b4e4b3498731affefac610f0a05  gcc/testsuite/gcc.dg/compat/fnptr-by-value-1_main.c
  fe9eda5144c4b80c732bde86debf0550  gcc/testsuite/gcc.dg/compat/fnptr-by-value-1_x.c
  564c8abb5b6fdd9d796e4c9983416c75  gcc/testsuite/gcc.dg/compat/fnptr-by-value-1_y.c
--- 35249,35255 ----
  ed52253f6b0d3e0e42d8c7d911691e47  gcc/testsuite/gcc.dg/compare8.c
  e505e91e0c3898015606540b084a3cf3  gcc/testsuite/gcc.dg/compare9.c
  320a670a68ed763f73f02634dc198ac9  gcc/testsuite/gcc.dg/compat/compat-common.h
! 1eb9a72dcfbd9055d91e3afd4aa28aca  gcc/testsuite/gcc.dg/compat/compat.exp
  24894b4e4b3498731affefac610f0a05  gcc/testsuite/gcc.dg/compat/fnptr-by-value-1_main.c
  fe9eda5144c4b80c732bde86debf0550  gcc/testsuite/gcc.dg/compat/fnptr-by-value-1_x.c
  564c8abb5b6fdd9d796e4c9983416c75  gcc/testsuite/gcc.dg/compat/fnptr-by-value-1_y.c
*************** b13ce33543763e05e497e6e9b0b06afc  gcc/te
*** 32780,32788 ****
  b2ee80d950ef18b6d552d6f80b1ea7ec  gcc/testsuite/gcc.dg/compat/struct-complex-2_main.c
  a03c72d9882332482357735b2b82316a  gcc/testsuite/gcc.dg/compat/struct-complex-2_x.c
  8797a70232b48157299f45876cf6b247  gcc/testsuite/gcc.dg/compat/struct-complex-2_y.c
! a740b7aef77d535f9ed5b97c4f5981c4  gcc/testsuite/gcc.dg/compat/struct-layout-1.exp
  63acee7a9bb7d9a457beb370e4beede2  gcc/testsuite/gcc.dg/compat/struct-layout-1.h
! b6387e3bbec3d790c42ef44208119615  gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c
  997082aeb20119519c8c3e77ee7f6cd1  gcc/testsuite/gcc.dg/compat/struct-layout-1_main.c
  b3da097900e3dfe300ea64885a287dc4  gcc/testsuite/gcc.dg/compat/struct-layout-1_test.h
  7a2c01872720f537c35327ff79b01fa3  gcc/testsuite/gcc.dg/compat/struct-layout-1_x.c
--- 35424,35432 ----
  b2ee80d950ef18b6d552d6f80b1ea7ec  gcc/testsuite/gcc.dg/compat/struct-complex-2_main.c
  a03c72d9882332482357735b2b82316a  gcc/testsuite/gcc.dg/compat/struct-complex-2_x.c
  8797a70232b48157299f45876cf6b247  gcc/testsuite/gcc.dg/compat/struct-complex-2_y.c
! 7a45e58e33ccedbc0d391ec8ce29f1c1  gcc/testsuite/gcc.dg/compat/struct-layout-1.exp
  63acee7a9bb7d9a457beb370e4beede2  gcc/testsuite/gcc.dg/compat/struct-layout-1.h
! d628ab6f03137145384ca913f20d6ac3  gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c
  997082aeb20119519c8c3e77ee7f6cd1  gcc/testsuite/gcc.dg/compat/struct-layout-1_main.c
  b3da097900e3dfe300ea64885a287dc4  gcc/testsuite/gcc.dg/compat/struct-layout-1_test.h
  7a2c01872720f537c35327ff79b01fa3  gcc/testsuite/gcc.dg/compat/struct-layout-1_x.c
*************** b674b2aeb681aa44d931199aa6db6fd8  gcc/te
*** 32860,32867 ****
  e4076ab8b4eaeecdcbb527dfc36e6b0a  gcc/testsuite/gcc.dg/compound-literal-1.c
  0f6847b008a2fc6d389626675248c378  gcc/testsuite/gcc.dg/compound-lvalue-1.c
  1446a4d262092084b79d8f6b2b822154  gcc/testsuite/gcc.dg/concat.c
! 1514f96c11b1be4f94d4f0cb980865de  gcc/testsuite/gcc.dg/concat2.c
! a135e7633aae73af2316d15cec88e40c  gcc/testsuite/gcc.dg/cond-constqual-1.c
  1c97a6a4590c6eb2e7d9d7b15729539a  gcc/testsuite/gcc.dg/cond-lvalue-1.c
  ec1a2cbdf91e1a1313a3574d47d6a323  gcc/testsuite/gcc.dg/const-1.c
  596a3a673cfe30ee42413e4a7a07e289  gcc/testsuite/gcc.dg/const-2.c
--- 35504,35511 ----
  e4076ab8b4eaeecdcbb527dfc36e6b0a  gcc/testsuite/gcc.dg/compound-literal-1.c
  0f6847b008a2fc6d389626675248c378  gcc/testsuite/gcc.dg/compound-lvalue-1.c
  1446a4d262092084b79d8f6b2b822154  gcc/testsuite/gcc.dg/concat.c
! b210f7864dc335cf71ab4f5ac69bd153  gcc/testsuite/gcc.dg/concat2.c
! 087a5205b175e15ce4450f2657dc15dc  gcc/testsuite/gcc.dg/cond-constqual-1.c
  1c97a6a4590c6eb2e7d9d7b15729539a  gcc/testsuite/gcc.dg/cond-lvalue-1.c
  ec1a2cbdf91e1a1313a3574d47d6a323  gcc/testsuite/gcc.dg/const-1.c
  596a3a673cfe30ee42413e4a7a07e289  gcc/testsuite/gcc.dg/const-2.c
*************** ec1a2cbdf91e1a1313a3574d47d6a323  gcc/te
*** 32871,32877 ****
  88bbf89357957ad93147bfe868e6a9e3  gcc/testsuite/gcc.dg/const-float128.c
  e3f3945c878b9cf4fa5b3f0074bd6302  gcc/testsuite/gcc.dg/const-float80-ped.c
  e781844c1655d36c9b6e04d59aad8996  gcc/testsuite/gcc.dg/const-float80.c
! 6c07d525221284c760106956672ef60b  gcc/testsuite/gcc.dg/const-uniq-1.c
  45c05b0df046fbbbc9ea0cea8b6eca6a  gcc/testsuite/gcc.dg/constructor-1.c
  79de76f1d9fe6810bc65fa1f39adc1dc  gcc/testsuite/gcc.dg/conv-1.c
  3a476a2d0c391587638c234c7b082c5a  gcc/testsuite/gcc.dg/conv-2.c
--- 35515,35521 ----
  88bbf89357957ad93147bfe868e6a9e3  gcc/testsuite/gcc.dg/const-float128.c
  e3f3945c878b9cf4fa5b3f0074bd6302  gcc/testsuite/gcc.dg/const-float80-ped.c
  e781844c1655d36c9b6e04d59aad8996  gcc/testsuite/gcc.dg/const-float80.c
! 46fd50d67e377613dde0e2f128244fd8  gcc/testsuite/gcc.dg/const-uniq-1.c
  45c05b0df046fbbbc9ea0cea8b6eca6a  gcc/testsuite/gcc.dg/constructor-1.c
  79de76f1d9fe6810bc65fa1f39adc1dc  gcc/testsuite/gcc.dg/conv-1.c
  3a476a2d0c391587638c234c7b082c5a  gcc/testsuite/gcc.dg/conv-2.c
*************** d6fdc59bae27f9e3097840361d13c67a  gcc/te
*** 32931,32937 ****
  342b42bbace19c658aff4b38bba906c3  gcc/testsuite/gcc.dg/cpp/_Pragma7.c
  5d435e2d88987bbe8d9e62951d0d9d04  gcc/testsuite/gcc.dg/cpp/arith-1.c
  55fe1a813facb5ba765d096c8e745fa1  gcc/testsuite/gcc.dg/cpp/arith-3.c
! 8ed0c3a7260f4792ea1ca3ab205665f5  gcc/testsuite/gcc.dg/cpp/assembl2.S
  d2ceecccef1772ada3beff72d6faed3e  gcc/testsuite/gcc.dg/cpp/assembler.S
  9ca3af4c8a508d8e50858641266fef9f  gcc/testsuite/gcc.dg/cpp/assert1.c
  5e115586c68bc98bb44755b93dcf7068  gcc/testsuite/gcc.dg/cpp/assert2.c
--- 35575,35581 ----
  342b42bbace19c658aff4b38bba906c3  gcc/testsuite/gcc.dg/cpp/_Pragma7.c
  5d435e2d88987bbe8d9e62951d0d9d04  gcc/testsuite/gcc.dg/cpp/arith-1.c
  55fe1a813facb5ba765d096c8e745fa1  gcc/testsuite/gcc.dg/cpp/arith-3.c
! 554b47d6da103d1803a3aee83bb7fc07  gcc/testsuite/gcc.dg/cpp/assembl2.S
  d2ceecccef1772ada3beff72d6faed3e  gcc/testsuite/gcc.dg/cpp/assembler.S
  9ca3af4c8a508d8e50858641266fef9f  gcc/testsuite/gcc.dg/cpp/assert1.c
  5e115586c68bc98bb44755b93dcf7068  gcc/testsuite/gcc.dg/cpp/assert2.c
*************** d62663c6040cd44ce9ceaef5ef47e6be  gcc/te
*** 33008,33016 ****
  0afc77e6745b381c2db4e3eb47069397  gcc/testsuite/gcc.dg/cpp/cmdlne-dU-8.c
  dc9eac76c9e4283c4325c2a6c902a00b  gcc/testsuite/gcc.dg/cpp/cmdlne-dU-9.c
  d698e775932010971513c46f0883bce0  gcc/testsuite/gcc.dg/cpp/counter-1.c
! 62a7104f94454920e2aea21e5d85503a  gcc/testsuite/gcc.dg/cpp/counter-2.c
! 8685d36e43046dc3ae7ce373aa03821c  gcc/testsuite/gcc.dg/cpp/counter-3.c
! 95849426d8877f794067679ea84be16f  gcc/testsuite/gcc.dg/cpp/cpp.exp
  a4207c77f8d160b9e8cfe0b186630d5a  gcc/testsuite/gcc.dg/cpp/cxxcom1.c
  d77a661fbfed762f6397bfd3581e855e  gcc/testsuite/gcc.dg/cpp/cxxcom2.c
  8af19f954e4c7d8397aa53ac210b124e  gcc/testsuite/gcc.dg/cpp/cxxcom2.h
--- 35652,35658 ----
  0afc77e6745b381c2db4e3eb47069397  gcc/testsuite/gcc.dg/cpp/cmdlne-dU-8.c
  dc9eac76c9e4283c4325c2a6c902a00b  gcc/testsuite/gcc.dg/cpp/cmdlne-dU-9.c
  d698e775932010971513c46f0883bce0  gcc/testsuite/gcc.dg/cpp/counter-1.c
! d2c8b81a59a8ae3e36d9b69e01d06f87  gcc/testsuite/gcc.dg/cpp/cpp.exp
  a4207c77f8d160b9e8cfe0b186630d5a  gcc/testsuite/gcc.dg/cpp/cxxcom1.c
  d77a661fbfed762f6397bfd3581e855e  gcc/testsuite/gcc.dg/cpp/cxxcom2.c
  8af19f954e4c7d8397aa53ac210b124e  gcc/testsuite/gcc.dg/cpp/cxxcom2.h
*************** a83181694c7989336a8d88357624bf7d  gcc/te
*** 33023,33045 ****
  7c767936cfc5aa6d5eb65700ff8f8bcf  gcc/testsuite/gcc.dg/cpp/digraph1.c
  6affb409d38829f180f4436ae9a801e6  gcc/testsuite/gcc.dg/cpp/digraph2.c
  855b7a2dfd829a85c270587471927c38  gcc/testsuite/gcc.dg/cpp/digraphs.c
- 7e07a117bfa1cbd4313441da514b62a7  gcc/testsuite/gcc.dg/cpp/dir-only-1.c
- 94f40e67e3617fd463bd2b73d2f6d54c  gcc/testsuite/gcc.dg/cpp/dir-only-1.h
- 92a3350e430f3da6be21354b2cc4eb5d  gcc/testsuite/gcc.dg/cpp/dir-only-2.c
- d17c82849bf7f540adedf0e80d9b41df  gcc/testsuite/gcc.dg/cpp/dir-only-3.c
- f120018b9734950cca9c0e7ba0e9a33a  gcc/testsuite/gcc.dg/cpp/dir-only-3a.h
- afcc2d95020f60f9c075e5d42a4acf61  gcc/testsuite/gcc.dg/cpp/dir-only-3b.h
- f92a7893a9a99e42109477db09c830bd  gcc/testsuite/gcc.dg/cpp/dir-only-4.c
- fb3a38929da78ace6561f5faebdefdc2  gcc/testsuite/gcc.dg/cpp/dir-only-5.c
- 346ea499c21962b87cb824294a83c7d5  gcc/testsuite/gcc.dg/cpp/dir-only-6.c
  fa408884a98e264adfa272034313c93c  gcc/testsuite/gcc.dg/cpp/direct2.c
  c2372ef669c7156fb94e3b2282a17de7  gcc/testsuite/gcc.dg/cpp/direct2s.c
  f7d33748385116eadf13c192e8243ef5  gcc/testsuite/gcc.dg/cpp/directiv.c
  fc3e59a3f9e82902fa08c3a03f5d0783  gcc/testsuite/gcc.dg/cpp/empty-include.c
  af960c05f0a6ab2d5eb3aa99551fa658  gcc/testsuite/gcc.dg/cpp/endif-pedantic1.c
  7c382a782b850e952b48792d8a3d1526  gcc/testsuite/gcc.dg/cpp/endif-pedantic2.c
- 24433a4e764e479df8f2b0fafe6a0130  gcc/testsuite/gcc.dg/cpp/endif.c
- 65db27307aa0cdf0b3c0323431e08a15  gcc/testsuite/gcc.dg/cpp/endif.h
  b7bb414df09ccb2077133b21ba630ce8  gcc/testsuite/gcc.dg/cpp/error-1.c
  6a2ac941bc99ce6af7ed79d05fbb5aed  gcc/testsuite/gcc.dg/cpp/escape-1.c
  3f966d736c5e8d8df46521821e7b2f3c  gcc/testsuite/gcc.dg/cpp/escape-2.c
--- 35665,35676 ----
*************** d2356c14719220729fca6a1807576fd6  gcc/te
*** 33102,33107 ****
--- 35733,35741 ----
  ed521ab2015dc11905c0db0f47732ede  gcc/testsuite/gcc.dg/cpp/lexnum.c
  16a05b8dec57217099711665531100e4  gcc/testsuite/gcc.dg/cpp/lexstrng.c
  b2fb8ec5d478e897e9db8d7828591599  gcc/testsuite/gcc.dg/cpp/line1.c
+ fd62adc835762cbe106bbd1113ef0a85  gcc/testsuite/gcc.dg/cpp/line10.c
+ 4afb318532af4ebbcf187ac407c85b0e  gcc/testsuite/gcc.dg/cpp/line11.c
+ 61a6c9f0ddb6b044d48297e16a52dbb7  gcc/testsuite/gcc.dg/cpp/line12.c
  c348b5a80ad501977e9146fc2e7afbbd  gcc/testsuite/gcc.dg/cpp/line2.c
  93dab1bfe183dd7b43e7c717106ecd0f  gcc/testsuite/gcc.dg/cpp/line3.c
  ec8b7c55e765d2fb094b7d63a6c2bc04  gcc/testsuite/gcc.dg/cpp/line4.c
*************** ec8b7c55e765d2fb094b7d63a6c2bc04  gcc/te
*** 33109,33114 ****
--- 35743,35749 ----
  4a9284dd8542cefacfc0882430c1bf0b  gcc/testsuite/gcc.dg/cpp/line6.c
  6e98e4bd6873de514b32bc78f313812c  gcc/testsuite/gcc.dg/cpp/line7.c
  2284416c986903d4499f1864b9438843  gcc/testsuite/gcc.dg/cpp/line8.c
+ 96bf917adfb6da8089008673a6d8c6c1  gcc/testsuite/gcc.dg/cpp/line9.c
  6d2dca73976a80ec91bc144348cc04ba  gcc/testsuite/gcc.dg/cpp/mac-dir-1.c
  c9d6799c913b0653058dbcfa64dc7400  gcc/testsuite/gcc.dg/cpp/mac-dir-2.c
  113750304551cf66be21ae220198c164  gcc/testsuite/gcc.dg/cpp/mac-eol-at-eof.c
*************** bc4aa62d83dfd42a64f58676ac47bef2  gcc/te
*** 33255,33260 ****
--- 35890,35898 ----
  03d16051004a87d22afbae42047a8255  gcc/testsuite/gcc.dg/cpp/pr7263-2.h
  40691d8c192e544c8c6f5b4e0ac55f49  gcc/testsuite/gcc.dg/cpp/pr7263-3.c
  4dcc5471dd1f7e43b320e12621a537bb  gcc/testsuite/gcc.dg/cpp/pr7263-3.h
+ 327d70bade94ee7a0d7a74a6cb47c306  gcc/testsuite/gcc.dg/cpp/pr97989-1.c
+ 7c965cf710addd2ef52c87e2a8dcbc6a  gcc/testsuite/gcc.dg/cpp/pr97989-2.c
+ b7f8fcb34083c60ccd543167bcebc6f7  gcc/testsuite/gcc.dg/cpp/pr98882.c
  9265868d739a8c184b456918f8ed5c9c  gcc/testsuite/gcc.dg/cpp/pragma-1.c
  9241d9486090aa8021616b792a43cb0e  gcc/testsuite/gcc.dg/cpp/pragma-2.c
  e5582da61bf791df4e080109c993f646  gcc/testsuite/gcc.dg/cpp/pragma-3.c
*************** b15cea37c4ded07fc57b07d8f33952d6  gcc/te
*** 33336,33342 ****
  6578778098ba13c021eb700dfd69f03d  gcc/testsuite/gcc.dg/cpp/trad/funlike-2.c
  af96521a5a56b63fb222ba768d70b662  gcc/testsuite/gcc.dg/cpp/trad/funlike-3.c
  fd5d9fe2e2eb7fb83e65ff1a9a796a79  gcc/testsuite/gcc.dg/cpp/trad/funlike-4.c
! e54707954f8ae4c3302a9004b32bb8a6  gcc/testsuite/gcc.dg/cpp/trad/funlike-5.c
  7130b3b6c0b5f3d495e985016ffde6d5  gcc/testsuite/gcc.dg/cpp/trad/funlike.c
  d053d892d7fc318c08b842d74d97d99b  gcc/testsuite/gcc.dg/cpp/trad/hash.c
  32ea053370bc2b0f24745d4195d12cdd  gcc/testsuite/gcc.dg/cpp/trad/include.c
--- 35974,35980 ----
  6578778098ba13c021eb700dfd69f03d  gcc/testsuite/gcc.dg/cpp/trad/funlike-2.c
  af96521a5a56b63fb222ba768d70b662  gcc/testsuite/gcc.dg/cpp/trad/funlike-3.c
  fd5d9fe2e2eb7fb83e65ff1a9a796a79  gcc/testsuite/gcc.dg/cpp/trad/funlike-4.c
! ba1f78286cd426a87fdfabc2730693c8  gcc/testsuite/gcc.dg/cpp/trad/funlike-5.c
  7130b3b6c0b5f3d495e985016ffde6d5  gcc/testsuite/gcc.dg/cpp/trad/funlike.c
  d053d892d7fc318c08b842d74d97d99b  gcc/testsuite/gcc.dg/cpp/trad/hash.c
  32ea053370bc2b0f24745d4195d12cdd  gcc/testsuite/gcc.dg/cpp/trad/include.c
*************** fb8d966edc2bb4f9de1858ef3f07c225  gcc/te
*** 33385,33391 ****
  c1aa9faf5b39d1bba0aeaa85934f3e1a  gcc/testsuite/gcc.dg/cpp/trad/redef1.c
  d02c582ddc7f3e7e944d26e530487750  gcc/testsuite/gcc.dg/cpp/trad/redef2.c
  98ee20f87a972bda969b7109dd4c69d2  gcc/testsuite/gcc.dg/cpp/trad/strify.c
! 0e38abf14746e2befcb6659322dfb09c  gcc/testsuite/gcc.dg/cpp/trad/trad.exp
  4934795b44ee5b4d4a100c69ae18a71a  gcc/testsuite/gcc.dg/cpp/trad/uchar.c
  9741e04a76510827749554c1610f8b02  gcc/testsuite/gcc.dg/cpp/trad/xwin1.c
  1cd5384614e3226fa238ee19dd09ecce  gcc/testsuite/gcc.dg/cpp/trigraphs.c
--- 36023,36029 ----
  c1aa9faf5b39d1bba0aeaa85934f3e1a  gcc/testsuite/gcc.dg/cpp/trad/redef1.c
  d02c582ddc7f3e7e944d26e530487750  gcc/testsuite/gcc.dg/cpp/trad/redef2.c
  98ee20f87a972bda969b7109dd4c69d2  gcc/testsuite/gcc.dg/cpp/trad/strify.c
! 2efe08ae2661f0b834f7c117271ca667  gcc/testsuite/gcc.dg/cpp/trad/trad.exp
  4934795b44ee5b4d4a100c69ae18a71a  gcc/testsuite/gcc.dg/cpp/trad/uchar.c
  9741e04a76510827749554c1610f8b02  gcc/testsuite/gcc.dg/cpp/trad/xwin1.c
  1cd5384614e3226fa238ee19dd09ecce  gcc/testsuite/gcc.dg/cpp/trigraphs.c
*************** e774025e676a5ba24033d7695eb66167  gcc/te
*** 33418,33424 ****
  fe82f155f148a27e0e5e22f4daa9c8a9  gcc/testsuite/gcc.dg/cpp/ucnid-7.c
  61c56edc15a32ccdde33a9edfa0ce52a  gcc/testsuite/gcc.dg/cpp/ucnid-9-utf8.c
  3a60bfbca52807a70e98675905f3dff4  gcc/testsuite/gcc.dg/cpp/ucnid-9.c
! c14a6dba224f25dd66cdcd2cb4df8733  gcc/testsuite/gcc.dg/cpp/ucs.c
  88c569be154e0e70cfbf086f33d7230c  gcc/testsuite/gcc.dg/cpp/unc1.c
  8d8bb2f1961112449dfe64b4d3e31170  gcc/testsuite/gcc.dg/cpp/unc2.c
  24e8bbf6a63455e62f7395086eb33b20  gcc/testsuite/gcc.dg/cpp/unc3.c
--- 36056,36062 ----
  fe82f155f148a27e0e5e22f4daa9c8a9  gcc/testsuite/gcc.dg/cpp/ucnid-7.c
  61c56edc15a32ccdde33a9edfa0ce52a  gcc/testsuite/gcc.dg/cpp/ucnid-9-utf8.c
  3a60bfbca52807a70e98675905f3dff4  gcc/testsuite/gcc.dg/cpp/ucnid-9.c
! f88a7cceb445a1a8bd921ab18c9b29d9  gcc/testsuite/gcc.dg/cpp/ucs.c
  88c569be154e0e70cfbf086f33d7230c  gcc/testsuite/gcc.dg/cpp/unc1.c
  8d8bb2f1961112449dfe64b4d3e31170  gcc/testsuite/gcc.dg/cpp/unc2.c
  24e8bbf6a63455e62f7395086eb33b20  gcc/testsuite/gcc.dg/cpp/unc3.c
*************** bddbf619aa148dc52dba82e2f937b89a  gcc/te
*** 33464,33469 ****
--- 36102,36108 ----
  febe83ee27f0e3494e3bd4484d6a7d21  gcc/testsuite/gcc.dg/cpp/widestr1.c
  e283abc5c7ec3171392ff96f4b1a8745  gcc/testsuite/gcc.dg/cr-decimal-dig-1.c
  3cb82ba3124ec1df5576fd26e4f9b957  gcc/testsuite/gcc.dg/cr-decimal-dig-2.c
+ 8da715eeea2441a852e1a680975292fe  gcc/testsuite/gcc.dg/cr-decimal-dig-3.c
  ea8e81ccf9b0e8a7d31a02ddf10f3ae7  gcc/testsuite/gcc.dg/cse_recip.c
  dc6685bcab4cd7ed276483fd8d031507  gcc/testsuite/gcc.dg/ctor1.c
  13a7eb422d70031061c88832496b4b3b  gcc/testsuite/gcc.dg/cwsc0.c
*************** ea7172af490d3fb85bddeb7037fddc2e  gcc/te
*** 33527,33542 ****
  16edfbc8489f8d2648184f4d56272f9a  gcc/testsuite/gcc.dg/debug/debug-5.c
  3a93989c56d211b178b4ce1cb7b8db55  gcc/testsuite/gcc.dg/debug/debug-6.c
  92ca009107fd3047af0ed6bffbcf92f2  gcc/testsuite/gcc.dg/debug/debug-7.c
! 94b52bdb30dd953c0873b5d99cb8cc9a  gcc/testsuite/gcc.dg/debug/debug.exp
  900fe69daa3b56214378610d534c3e53  gcc/testsuite/gcc.dg/debug/dwarf2-1.c
  9cf87b67a0fe641563a13455b49c7154  gcc/testsuite/gcc.dg/debug/dwarf2-2.c
! d3259b89942460cf03b1158fd923a48d  gcc/testsuite/gcc.dg/debug/dwarf2/align-1.c
! b89ec2392579ce48e2d7fac3c375399b  gcc/testsuite/gcc.dg/debug/dwarf2/align-2.c
! e7756d5b15ebe09f2b877683e2fe9063  gcc/testsuite/gcc.dg/debug/dwarf2/align-3.c
! 4e09ad54ab9170f11fe967e2e3805749  gcc/testsuite/gcc.dg/debug/dwarf2/align-4.c
! 71ceb4e0c2ab671044662d3e94b48e94  gcc/testsuite/gcc.dg/debug/dwarf2/align-5.c
! 539e627d4b4e5830d219db589112b93b  gcc/testsuite/gcc.dg/debug/dwarf2/align-6.c
! 3da74019bd161498c18f72b0cf13544e  gcc/testsuite/gcc.dg/debug/dwarf2/align-as-1.c
  960684a8cdd6ba444e70021a855ed3bc  gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c
  9246faab0f66f1e81e013645ae0d75d4  gcc/testsuite/gcc.dg/debug/dwarf2/array-0.c
  1739a83d1b73c28f343a4438c9128988  gcc/testsuite/gcc.dg/debug/dwarf2/array-1.c
--- 36166,36181 ----
  16edfbc8489f8d2648184f4d56272f9a  gcc/testsuite/gcc.dg/debug/debug-5.c
  3a93989c56d211b178b4ce1cb7b8db55  gcc/testsuite/gcc.dg/debug/debug-6.c
  92ca009107fd3047af0ed6bffbcf92f2  gcc/testsuite/gcc.dg/debug/debug-7.c
! 01ff48e40d946c82d3cd4a5e7afb7ff6  gcc/testsuite/gcc.dg/debug/debug.exp
  900fe69daa3b56214378610d534c3e53  gcc/testsuite/gcc.dg/debug/dwarf2-1.c
  9cf87b67a0fe641563a13455b49c7154  gcc/testsuite/gcc.dg/debug/dwarf2-2.c
! 0b09f7a5e1f45f894f8df2a63437e7c8  gcc/testsuite/gcc.dg/debug/dwarf2/align-1.c
! 450efa8b8c67e969228886547f6548dd  gcc/testsuite/gcc.dg/debug/dwarf2/align-2.c
! 5eecc9ef7afcdbd7d6c0551ebd5f5574  gcc/testsuite/gcc.dg/debug/dwarf2/align-3.c
! a867ee9a7a4904bba3041f5c34773c17  gcc/testsuite/gcc.dg/debug/dwarf2/align-4.c
! 0e66ebd351a1496f368c0be9c27e8226  gcc/testsuite/gcc.dg/debug/dwarf2/align-5.c
! 2547466de6461579750da924e8f2632c  gcc/testsuite/gcc.dg/debug/dwarf2/align-6.c
! e898af150e57dd7954d947894917b696  gcc/testsuite/gcc.dg/debug/dwarf2/align-as-1.c
  960684a8cdd6ba444e70021a855ed3bc  gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c
  9246faab0f66f1e81e013645ae0d75d4  gcc/testsuite/gcc.dg/debug/dwarf2/array-0.c
  1739a83d1b73c28f343a4438c9128988  gcc/testsuite/gcc.dg/debug/dwarf2/array-1.c
*************** b7cc1fa0904bcda319bf91dbe2a3a4fe  gcc/te
*** 33551,33557 ****
  bdc28ca82c4aedd54c51bdc86bec14a5  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-char1.c
  4b7a125fecbeb3f74e765f6067334894  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-char2.c
  160bdd9acd7baf6b98a6468e849e1720  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-char3.c
! c5d36017ee5890bb51e46e0f2c62cd66  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-dfp.c
  d7be4ab4f744be959d9b1f979d8776a1  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die1.c
  e1e677b07f8a4247d198553d2276d486  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die2.c
  d3b5f2a98b01ca0ff71e95a13825d34a  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die3.c
--- 36190,36196 ----
  bdc28ca82c4aedd54c51bdc86bec14a5  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-char1.c
  4b7a125fecbeb3f74e765f6067334894  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-char2.c
  160bdd9acd7baf6b98a6468e849e1720  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-char3.c
! 0034c480b30b0cfd56f42d4ad22069ca  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-dfp.c
  d7be4ab4f744be959d9b1f979d8776a1  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die1.c
  e1e677b07f8a4247d198553d2276d486  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die2.c
  d3b5f2a98b01ca0ff71e95a13825d34a  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die3.c
*************** d3b5f2a98b01ca0ff71e95a13825d34a  gcc/te
*** 33559,33572 ****
  def2dee9b2491fbb973dfb55909e5c6e  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die6.c
  000d5e531bb7fcbf91c11842e29324f8  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die7.c
  f66089195ed63eab74be808668a83c7e  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-file1.c
! e55c53007787d3e78580dd760ee7faf7  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-float.c
  fbe375bf9288bf092b7cef1996c14a1f  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-merge.c
  05dde46babff3ba7e4ea1940a11314c2  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-uninit.c
  42c6c9570a94e44ac29201a8df0d4450  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-3.c
  41463d28a9bbf97a554feb4c959fed01  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-3.h
! 462bd6cda37f33e5231c0b148dfa36e1  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro.c
! aebe8d7b9a0825a5634ec67d6d6289b8  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c
! ed0bdc80f99a199f13feb82dff81a1d7  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp
  362aa298514051f8a5b0ce8f2e1ee91a  gcc/testsuite/gcc.dg/debug/dwarf2/enum-loc1.c
  59c839cb709f2082c72d622c16f665f4  gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.c
  f7dc86f08b2d23f2ec144956f62a155d  gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.h
--- 36198,36211 ----
  def2dee9b2491fbb973dfb55909e5c6e  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die6.c
  000d5e531bb7fcbf91c11842e29324f8  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die7.c
  f66089195ed63eab74be808668a83c7e  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-file1.c
! b7bdb0c7a32f4bc749473e8f77cc5fea  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-float.c
  fbe375bf9288bf092b7cef1996c14a1f  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-merge.c
  05dde46babff3ba7e4ea1940a11314c2  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-uninit.c
  42c6c9570a94e44ac29201a8df0d4450  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-3.c
  41463d28a9bbf97a554feb4c959fed01  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-3.h
! 9e89388c0e1fb3e82696e9c739160c92  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro.c
! eec651e182274afc1200132346cdf1ed  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c
! a514a5c9a44b1ec90624212b2ee5ceae  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp
  362aa298514051f8a5b0ce8f2e1ee91a  gcc/testsuite/gcc.dg/debug/dwarf2/enum-loc1.c
  59c839cb709f2082c72d622c16f665f4  gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.c
  f7dc86f08b2d23f2ec144956f62a155d  gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.h
*************** f7dc86f08b2d23f2ec144956f62a155d  gcc/te
*** 33581,33598 ****
  70fb7d2db15a4cf8bf70176e041f380f  gcc/testsuite/gcc.dg/debug/dwarf2/fesd.h
  f30a377973368d1a41bc4f8e2a0e33e9  gcc/testsuite/gcc.dg/debug/dwarf2/global-used-types.c
  f9ab56344241c22521f8d9245e677c22  gcc/testsuite/gcc.dg/debug/dwarf2/inline1.c
! bb05b461438dedaf9815370bdd3b86d0  gcc/testsuite/gcc.dg/debug/dwarf2/inline2.c
  8580bd27cd825c8d49e674c9f31c683c  gcc/testsuite/gcc.dg/debug/dwarf2/inline3.c
  586e0e8fb83eb0dc0f5b5a3a5b6236bf  gcc/testsuite/gcc.dg/debug/dwarf2/inline4.c
! 815f6fad0e75554bf7760faa0113fba0  gcc/testsuite/gcc.dg/debug/dwarf2/inline5.c
  e7c46c2fc25b3773b6adcbd27af4b924  gcc/testsuite/gcc.dg/debug/dwarf2/ipa-cp1.c
  fa5aff1721ed3bcbbc6a8566df69c415  gcc/testsuite/gcc.dg/debug/dwarf2/lang-c11-d4-strict.c
  2fb82c8ff39c218a50492de7eb131b5b  gcc/testsuite/gcc.dg/debug/dwarf2/lang-c11.c
! 4dd5165e8cd664488db38815f2d8a8eb  gcc/testsuite/gcc.dg/debug/dwarf2/lang-c89.c
  e2f52a89972160427f649396e34b1d0c  gcc/testsuite/gcc.dg/debug/dwarf2/lang-c99.c
  4e1fecf5ecf52fb6fb5fda7ea3f6eda7  gcc/testsuite/gcc.dg/debug/dwarf2/nested_fun.c
! b7bfb03c278bb3f5fd83199e15651c8d  gcc/testsuite/gcc.dg/debug/dwarf2/noreturn-function-attribute.c
! 61c1aec3058f1ed77a5f21788e4e5282  gcc/testsuite/gcc.dg/debug/dwarf2/noreturn-function-keyword.c
  937e8a07b611d24efb44f969833a3cb8  gcc/testsuite/gcc.dg/debug/dwarf2/omp-fesdr.c
  250736f38c859fc89fb993ad3155eb20  gcc/testsuite/gcc.dg/debug/dwarf2/pr29609-1.c
  8f522ee214d1db3d04f240eb20eb4474  gcc/testsuite/gcc.dg/debug/dwarf2/pr29609-2.c
--- 36220,36238 ----
  70fb7d2db15a4cf8bf70176e041f380f  gcc/testsuite/gcc.dg/debug/dwarf2/fesd.h
  f30a377973368d1a41bc4f8e2a0e33e9  gcc/testsuite/gcc.dg/debug/dwarf2/global-used-types.c
  f9ab56344241c22521f8d9245e677c22  gcc/testsuite/gcc.dg/debug/dwarf2/inline1.c
! 47291ca2a7f639676f2662f2d578253f  gcc/testsuite/gcc.dg/debug/dwarf2/inline2.c
  8580bd27cd825c8d49e674c9f31c683c  gcc/testsuite/gcc.dg/debug/dwarf2/inline3.c
  586e0e8fb83eb0dc0f5b5a3a5b6236bf  gcc/testsuite/gcc.dg/debug/dwarf2/inline4.c
! b024aabf64c74205609d3f981c1e165b  gcc/testsuite/gcc.dg/debug/dwarf2/inline5.c
! 40c9e189b7b61e8f4d69ce3f98f98206  gcc/testsuite/gcc.dg/debug/dwarf2/inline6.c
  e7c46c2fc25b3773b6adcbd27af4b924  gcc/testsuite/gcc.dg/debug/dwarf2/ipa-cp1.c
  fa5aff1721ed3bcbbc6a8566df69c415  gcc/testsuite/gcc.dg/debug/dwarf2/lang-c11-d4-strict.c
  2fb82c8ff39c218a50492de7eb131b5b  gcc/testsuite/gcc.dg/debug/dwarf2/lang-c11.c
! db9ffff8041692f984045d5638e00792  gcc/testsuite/gcc.dg/debug/dwarf2/lang-c89.c
  e2f52a89972160427f649396e34b1d0c  gcc/testsuite/gcc.dg/debug/dwarf2/lang-c99.c
  4e1fecf5ecf52fb6fb5fda7ea3f6eda7  gcc/testsuite/gcc.dg/debug/dwarf2/nested_fun.c
! edee97b42c75ecf594a2c63a31f4c416  gcc/testsuite/gcc.dg/debug/dwarf2/noreturn-function-attribute.c
! cbcc356a35e8a8665137c7ae64ec5914  gcc/testsuite/gcc.dg/debug/dwarf2/noreturn-function-keyword.c
  937e8a07b611d24efb44f969833a3cb8  gcc/testsuite/gcc.dg/debug/dwarf2/omp-fesdr.c
  250736f38c859fc89fb993ad3155eb20  gcc/testsuite/gcc.dg/debug/dwarf2/pr29609-1.c
  8f522ee214d1db3d04f240eb20eb4474  gcc/testsuite/gcc.dg/debug/dwarf2/pr29609-2.c
*************** b4499156df64f1b7410c38ff8b1865a5  gcc/te
*** 33605,33612 ****
  1aaca8c754a9fafdb23c2bcdeb986341  gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-2.c
  4d8b5ac62038a270cdba44416217bf78  gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-3.c
  343b01662d4c3428a1954d1e640268ee  gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-4.c
! e5802b39435099e02d4a48192ba1d240  gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-5.c
! 9b09adb09c74a75b4362c50cc632ae0f  gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-6.c
  c75ff1bce0a372eeb5f3f124bbf03dd2  gcc/testsuite/gcc.dg/debug/dwarf2/pr41543.c
  f3585dc62ae648c6def8f07287ea7b86  gcc/testsuite/gcc.dg/debug/dwarf2/pr41695.c
  4b3f83e90fdd84c4cc85d5f43a9ebc91  gcc/testsuite/gcc.dg/debug/dwarf2/pr43237.c
--- 36245,36254 ----
  1aaca8c754a9fafdb23c2bcdeb986341  gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-2.c
  4d8b5ac62038a270cdba44416217bf78  gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-3.c
  343b01662d4c3428a1954d1e640268ee  gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-4.c
! 74da939a94172777440999ba70bee8af  gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-5.c
! e1041e8089cb3951c21e2dd345255165  gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-6.c
! ce4b90b8127f43ef25eeafe7acb42024  gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-7.c
! 01403d9c3b7e96a72bba1859b702c647  gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-8.c
  c75ff1bce0a372eeb5f3f124bbf03dd2  gcc/testsuite/gcc.dg/debug/dwarf2/pr41543.c
  f3585dc62ae648c6def8f07287ea7b86  gcc/testsuite/gcc.dg/debug/dwarf2/pr41695.c
  4b3f83e90fdd84c4cc85d5f43a9ebc91  gcc/testsuite/gcc.dg/debug/dwarf2/pr43237.c
*************** f3585dc62ae648c6def8f07287ea7b86  gcc/te
*** 33618,33624 ****
  94f8101679e6cc4b9fabcf3f776ded40  gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c
  cfefd61a4eb768d07be5d7d9490c6bd2  gcc/testsuite/gcc.dg/debug/dwarf2/pr53948.c
  eb3e8d32cc98a65b9bf903f485425719  gcc/testsuite/gcc.dg/debug/dwarf2/pr66482.c
! f03dc9944066917662e80164971b7db3  gcc/testsuite/gcc.dg/debug/dwarf2/pr71855.c
  adcb04100f301278ba60a4cc3b3966e4  gcc/testsuite/gcc.dg/debug/dwarf2/pr80263.c
  1cf911d01bc2c994d2a07f737953584a  gcc/testsuite/gcc.dg/debug/dwarf2/pr82718-1.c
  a0e45b136bc1a3039b9214576e8d8072  gcc/testsuite/gcc.dg/debug/dwarf2/pr82718-2.c
--- 36260,36266 ----
  94f8101679e6cc4b9fabcf3f776ded40  gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c
  cfefd61a4eb768d07be5d7d9490c6bd2  gcc/testsuite/gcc.dg/debug/dwarf2/pr53948.c
  eb3e8d32cc98a65b9bf903f485425719  gcc/testsuite/gcc.dg/debug/dwarf2/pr66482.c
! 3aefd6c464c0631839d12e370ea3b504  gcc/testsuite/gcc.dg/debug/dwarf2/pr71855.c
  adcb04100f301278ba60a4cc3b3966e4  gcc/testsuite/gcc.dg/debug/dwarf2/pr80263.c
  1cf911d01bc2c994d2a07f737953584a  gcc/testsuite/gcc.dg/debug/dwarf2/pr82718-1.c
  a0e45b136bc1a3039b9214576e8d8072  gcc/testsuite/gcc.dg/debug/dwarf2/pr82718-2.c
*************** a0e45b136bc1a3039b9214576e8d8072  gcc/te
*** 33628,33633 ****
--- 36270,36277 ----
  3fe83570daf6a275058d5254e5811a58  gcc/testsuite/gcc.dg/debug/dwarf2/pr88644.c
  0a9ec3f245a699fc382f6c01f2a0dfc1  gcc/testsuite/gcc.dg/debug/dwarf2/pr93751-1.c
  22969d5136ad5d2620d957786d4185b3  gcc/testsuite/gcc.dg/debug/dwarf2/pr93751-2.c
+ 3f36843050f11684be6fb397c153b409  gcc/testsuite/gcc.dg/debug/dwarf2/pr96383-1.c
+ 11fb63a022ef225ca8bbb9385c30877d  gcc/testsuite/gcc.dg/debug/dwarf2/pr96383-2.c
  7ae13aa81396f493cb8a335ce69a2865  gcc/testsuite/gcc.dg/debug/dwarf2/pr97060.c
  04ed708ea8db6a152acb5ebe98de283b  gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c
  84c94e8435cec0cb1a4a8e83a9c3633d  gcc/testsuite/gcc.dg/debug/dwarf2/short-circuit.c
*************** a63511079fef380917f27519b23f325a  gcc/te
*** 33636,33642 ****
  e66bb5d7eb1937b8e960a120ae59bc55  gcc/testsuite/gcc.dg/debug/dwarf2/sso-3.c
  09751288671698dde4edb8c708f7ba96  gcc/testsuite/gcc.dg/debug/dwarf2/stacked-qualified-types-1.c
  be5234588fc6e541c504e6b35d23834c  gcc/testsuite/gcc.dg/debug/dwarf2/stacked-qualified-types-2.c
! dbceec17d4b404736614d1e76850a9cb  gcc/testsuite/gcc.dg/debug/dwarf2/stacked-qualified-types-3.c
  cfd09bc6ab94deff89da0b2f33da544d  gcc/testsuite/gcc.dg/debug/dwarf2/static1.c
  ca27b118a8f01285a381ac42b5dcdcaa  gcc/testsuite/gcc.dg/debug/dwarf2/struct-loc1.c
  b3f045b532c693bbfb8cfed8c0609564  gcc/testsuite/gcc.dg/debug/dwarf2/var1.c
--- 36280,36286 ----
  e66bb5d7eb1937b8e960a120ae59bc55  gcc/testsuite/gcc.dg/debug/dwarf2/sso-3.c
  09751288671698dde4edb8c708f7ba96  gcc/testsuite/gcc.dg/debug/dwarf2/stacked-qualified-types-1.c
  be5234588fc6e541c504e6b35d23834c  gcc/testsuite/gcc.dg/debug/dwarf2/stacked-qualified-types-2.c
! 75ab40ea68e77c21cb6b82770e17544f  gcc/testsuite/gcc.dg/debug/dwarf2/stacked-qualified-types-3.c
  cfd09bc6ab94deff89da0b2f33da544d  gcc/testsuite/gcc.dg/debug/dwarf2/static1.c
  ca27b118a8f01285a381ac42b5dcdcaa  gcc/testsuite/gcc.dg/debug/dwarf2/struct-loc1.c
  b3f045b532c693bbfb8cfed8c0609564  gcc/testsuite/gcc.dg/debug/dwarf2/var1.c
*************** f04843ea87c9c55accf161e9ee241f15  gcc/te
*** 33680,33685 ****
--- 36324,36330 ----
  2444e8441e19d7a1f14287f247114ea3  gcc/testsuite/gcc.dg/debug/pr80321.c
  067b1f11792d11ac95c4950051ac7aac  gcc/testsuite/gcc.dg/debug/pr85252.c
  a9e9af5e94d12834ec3ce411c747df0d  gcc/testsuite/gcc.dg/debug/pr89704.c
+ 84183a64e0ba8b13df039e80dd994201  gcc/testsuite/gcc.dg/debug/pr97714.c
  e39702ba4ac8cdf1b4d7895fa15c394f  gcc/testsuite/gcc.dg/debug/redecl-1.c
  60c3f3165dda429cbc7646a06969d16c  gcc/testsuite/gcc.dg/debug/redecl-2.c
  175fa916ededdb94d71518eecbe6fa1a  gcc/testsuite/gcc.dg/debug/redecl-3.c
*************** d785bb4b05232cffefa83ac650b83553  gcc/te
*** 33698,33705 ****
  f56d6956bbfc1fc3f607c86c096cfbc8  gcc/testsuite/gcc.dg/decl-5.c
  12f0cb8aff1ab5cf6c741f1c72f2bcc3  gcc/testsuite/gcc.dg/decl-6.c
  8f59d23bb18dd7ef0efa5f8b27892822  gcc/testsuite/gcc.dg/decl-7.c
! f2a43b9055a504225e2e812e271556d8  gcc/testsuite/gcc.dg/decl-8.c
! b32912c8e07c282af908a5ad2b253e14  gcc/testsuite/gcc.dg/decl-9.c
  d0670e7a7e4d7796fd6328449dacb860  gcc/testsuite/gcc.dg/decl-global-ext.c
  09c753a3dc3874366c4411192abb2d76  gcc/testsuite/gcc.dg/decl-nospec-1.c
  51042f0f58908379420b10249326d9f5  gcc/testsuite/gcc.dg/decl-nospec-2.c
--- 36343,36350 ----
  f56d6956bbfc1fc3f607c86c096cfbc8  gcc/testsuite/gcc.dg/decl-5.c
  12f0cb8aff1ab5cf6c741f1c72f2bcc3  gcc/testsuite/gcc.dg/decl-6.c
  8f59d23bb18dd7ef0efa5f8b27892822  gcc/testsuite/gcc.dg/decl-7.c
! 5e3509005f8b8201a5685176d3f1a7b0  gcc/testsuite/gcc.dg/decl-8.c
! 95ca9acf6875c098c0c8ab8ee6e91d35  gcc/testsuite/gcc.dg/decl-9.c
  d0670e7a7e4d7796fd6328449dacb860  gcc/testsuite/gcc.dg/decl-global-ext.c
  09c753a3dc3874366c4411192abb2d76  gcc/testsuite/gcc.dg/decl-nospec-1.c
  51042f0f58908379420b10249326d9f5  gcc/testsuite/gcc.dg/decl-nospec-2.c
*************** fab5a640c4568914b07985435cbfca57  gcc/te
*** 33745,33750 ****
--- 36390,36397 ----
  3df60bf7fc5addda94bde087254e63e5  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c
  f0ae4245e06f4788c24978a3b8a12df6  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c
  2d5128bddc0d69a547254935ce84b555  gcc/testsuite/gcc.dg/dfp/builtin-complex.c
+ 22f3c782df5fe8d1cc2647be9e54ef57  gcc/testsuite/gcc.dg/dfp/builtin-snan-1.c
+ d52de125edb1b6785a1995c8d138b9f0  gcc/testsuite/gcc.dg/dfp/builtin-snan-2.c
  1cd0f9502eb6f26f75689878d1315dde  gcc/testsuite/gcc.dg/dfp/builtin-tgmath-dfp-err.c
  8be219bdc31d596f6310b63d26678f47  gcc/testsuite/gcc.dg/dfp/builtin-tgmath-dfp.c
  542b4e7b047bab0dc3ccb2eb7cd05a9a  gcc/testsuite/gcc.dg/dfp/c11-constants-1.c
*************** efe3f3991a7d9f3ec4e1fa44d8e69924  gcc/te
*** 33757,33766 ****
  7f6ee6a620379941fa2b8e44acc05ecf  gcc/testsuite/gcc.dg/dfp/c2x-float-dfp-1.c
  df6bbc8f4a494f18ad1e51f53bcfd58c  gcc/testsuite/gcc.dg/dfp/c2x-float-dfp-2.c
  1387cf7a470c6add4d2d07cc5e58d297  gcc/testsuite/gcc.dg/dfp/c2x-float-dfp-3.c
  0379e71a7cf1b285ffef8b4dde5594dd  gcc/testsuite/gcc.dg/dfp/c2x-keywords-1.c
  ffc58943af7de130d10bfd3f57045f1e  gcc/testsuite/gcc.dg/dfp/c2x-keywords-2.c
  8d5e21e8c81c2782dea6a23e88335770  gcc/testsuite/gcc.dg/dfp/cast-bad.c
! e1ab172aed47a730ac6b87d026f76d09  gcc/testsuite/gcc.dg/dfp/composite-type.c
  3c65f46a3ffe17287ae9c6467e54c161  gcc/testsuite/gcc.dg/dfp/constants-c99.c
  e17bcd0ca787144bf6d3f3bd95a2efdd  gcc/testsuite/gcc.dg/dfp/constants-hex.c
  147e4fc0ca2998ab61a5ea632ce3d638  gcc/testsuite/gcc.dg/dfp/constants-pedantic.c
--- 36404,36418 ----
  7f6ee6a620379941fa2b8e44acc05ecf  gcc/testsuite/gcc.dg/dfp/c2x-float-dfp-1.c
  df6bbc8f4a494f18ad1e51f53bcfd58c  gcc/testsuite/gcc.dg/dfp/c2x-float-dfp-2.c
  1387cf7a470c6add4d2d07cc5e58d297  gcc/testsuite/gcc.dg/dfp/c2x-float-dfp-3.c
+ 650dcb6748c5eb8be1db8edd73a6d7df  gcc/testsuite/gcc.dg/dfp/c2x-float-dfp-4.c
+ f1eecd5c32aa4286fcced10e76739b36  gcc/testsuite/gcc.dg/dfp/c2x-float-dfp-5.c
+ 048fbb2af93266720551c32d250d2057  gcc/testsuite/gcc.dg/dfp/c2x-float-dfp-6.c
+ bc2d4b0eaada2a32d1d15e3dc45e22ca  gcc/testsuite/gcc.dg/dfp/c2x-float-dfp-7.c
+ 6e15c45c21cd982b0f53ccfc3d279b89  gcc/testsuite/gcc.dg/dfp/c2x-float-dfp-8.c
  0379e71a7cf1b285ffef8b4dde5594dd  gcc/testsuite/gcc.dg/dfp/c2x-keywords-1.c
  ffc58943af7de130d10bfd3f57045f1e  gcc/testsuite/gcc.dg/dfp/c2x-keywords-2.c
  8d5e21e8c81c2782dea6a23e88335770  gcc/testsuite/gcc.dg/dfp/cast-bad.c
! 9c6d48d59205671979b452ec8bb555bd  gcc/testsuite/gcc.dg/dfp/composite-type.c
  3c65f46a3ffe17287ae9c6467e54c161  gcc/testsuite/gcc.dg/dfp/constants-c99.c
  e17bcd0ca787144bf6d3f3bd95a2efdd  gcc/testsuite/gcc.dg/dfp/constants-hex.c
  147e4fc0ca2998ab61a5ea632ce3d638  gcc/testsuite/gcc.dg/dfp/constants-pedantic.c
*************** dfe075c7272c802e4c6f44b1a66f1302  gcc/te
*** 33776,33782 ****
  4004acaaacb54ecad2e0c6ee8e8224d5  gcc/testsuite/gcc.dg/dfp/dfp-dbg.h
  b0c002cff8051f24b9c9db05f3062f21  gcc/testsuite/gcc.dg/dfp/dfp-except.h
  aadafbfd9e0540666c99d31e72e91f96  gcc/testsuite/gcc.dg/dfp/dfp-round.h
! 4b7e6e79df9551ab2a37c627eac6817c  gcc/testsuite/gcc.dg/dfp/dfp.exp
  0daf957dbef663389abca329acc1d74c  gcc/testsuite/gcc.dg/dfp/fe-binop.c
  dc5f56a82263868da11e7d3a3e80a8c8  gcc/testsuite/gcc.dg/dfp/fe-check.h
  e014b3254e79531d97833550fdb2486d  gcc/testsuite/gcc.dg/dfp/fe-convert-1.c
--- 36428,36434 ----
  4004acaaacb54ecad2e0c6ee8e8224d5  gcc/testsuite/gcc.dg/dfp/dfp-dbg.h
  b0c002cff8051f24b9c9db05f3062f21  gcc/testsuite/gcc.dg/dfp/dfp-except.h
  aadafbfd9e0540666c99d31e72e91f96  gcc/testsuite/gcc.dg/dfp/dfp-round.h
! e633f84e058c54fcd4f3b8d825372bc7  gcc/testsuite/gcc.dg/dfp/dfp.exp
  0daf957dbef663389abca329acc1d74c  gcc/testsuite/gcc.dg/dfp/fe-binop.c
  dc5f56a82263868da11e7d3a3e80a8c8  gcc/testsuite/gcc.dg/dfp/fe-check.h
  e014b3254e79531d97833550fdb2486d  gcc/testsuite/gcc.dg/dfp/fe-convert-1.c
*************** ef8eb17f7da56bfde3d6840acb400831  gcc/te
*** 33819,33825 ****
  53e450baff1edfc9b3bf82a5a1b2a674  gcc/testsuite/gcc.dg/dfp/warn-abs-2.c
  9190a1b37c2c0dd750746fbca83c728e  gcc/testsuite/gcc.dg/dfp/wtr-conversion-1.c
  1d1366a913ab3a21a6dbd1b236fc57a4  gcc/testsuite/gcc.dg/dg-test-1.c
! 57bda86fe4bf0bef86c9a91bfd215222  gcc/testsuite/gcc.dg/dg.exp
  f26c27ac11691c96c083fca389b2dbb6  gcc/testsuite/gcc.dg/di-longlong64-sync-1.c
  a7ce88f792a87e99ee9aa3c1a4bf5983  gcc/testsuite/gcc.dg/di-sync-multithread.c
  034e91f8d262e00b27763ec15c59df1d  gcc/testsuite/gcc.dg/diag-aka-1.c
--- 36471,36477 ----
  53e450baff1edfc9b3bf82a5a1b2a674  gcc/testsuite/gcc.dg/dfp/warn-abs-2.c
  9190a1b37c2c0dd750746fbca83c728e  gcc/testsuite/gcc.dg/dfp/wtr-conversion-1.c
  1d1366a913ab3a21a6dbd1b236fc57a4  gcc/testsuite/gcc.dg/dg-test-1.c
! 211656ab2e2c8e53d24e6514901e9d26  gcc/testsuite/gcc.dg/dg.exp
  f26c27ac11691c96c083fca389b2dbb6  gcc/testsuite/gcc.dg/di-longlong64-sync-1.c
  a7ce88f792a87e99ee9aa3c1a4bf5983  gcc/testsuite/gcc.dg/di-sync-multithread.c
  034e91f8d262e00b27763ec15c59df1d  gcc/testsuite/gcc.dg/diag-aka-1.c
*************** ce354ccb3e1bed31286dc21c6b83f645  gcc/te
*** 33889,33896 ****
  73f28900e3ff651e8b225317ff0598d6  gcc/testsuite/gcc.dg/dump-pass.c
  319beb8755465d44ed9f566b896d8645  gcc/testsuite/gcc.dg/dx-test.c
  98e009f186009113a73f83a1d6acae4c  gcc/testsuite/gcc.dg/empty-source-1.c
! 24181e05d79451b0e07859547ed2a8b9  gcc/testsuite/gcc.dg/empty-source-2.c
! b1ed7d39dfea44368e120889578631cc  gcc/testsuite/gcc.dg/empty-source-3.c
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gcc.dg/empty.h
  c3d0e5f87b23f96c728ab8dd3707bb9b  gcc/testsuite/gcc.dg/empty1.c
  7908cbe605cd47ed92b1586d03a7c349  gcc/testsuite/gcc.dg/empty2.c
--- 36541,36548 ----
  73f28900e3ff651e8b225317ff0598d6  gcc/testsuite/gcc.dg/dump-pass.c
  319beb8755465d44ed9f566b896d8645  gcc/testsuite/gcc.dg/dx-test.c
  98e009f186009113a73f83a1d6acae4c  gcc/testsuite/gcc.dg/empty-source-1.c
! 5b56996b5f5a025f35a69404bb0be3d9  gcc/testsuite/gcc.dg/empty-source-2.c
! bc02c112e097220e06aa0cfc803d1b07  gcc/testsuite/gcc.dg/empty-source-3.c
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gcc.dg/empty.h
  c3d0e5f87b23f96c728ab8dd3707bb9b  gcc/testsuite/gcc.dg/empty1.c
  7908cbe605cd47ed92b1586d03a7c349  gcc/testsuite/gcc.dg/empty2.c
*************** af315092d026865340052aee7b9849a3  gcc/te
*** 33946,33952 ****
  11f3b667f90a009058a0bbb781d75c33  gcc/testsuite/gcc.dg/fixed-point/convert-sat.c
  17daa5326aad34d453af61740fa3b55b  gcc/testsuite/gcc.dg/fixed-point/convert.h
  4d465f534ba6b0040d0b907de70eb06d  gcc/testsuite/gcc.dg/fixed-point/define.c
! 4f328ef4e92bd45e5591ef0f666367fe  gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp
  7172d69a38fc3346148178e2346509cf  gcc/testsuite/gcc.dg/fixed-point/func-array.c
  c71cd62369fd73371bd64d9e9c2653fe  gcc/testsuite/gcc.dg/fixed-point/func-mixed.c
  2b619b6a57d0ac97a39f559544f66909  gcc/testsuite/gcc.dg/fixed-point/func-scalar.c
--- 36598,36604 ----
  11f3b667f90a009058a0bbb781d75c33  gcc/testsuite/gcc.dg/fixed-point/convert-sat.c
  17daa5326aad34d453af61740fa3b55b  gcc/testsuite/gcc.dg/fixed-point/convert.h
  4d465f534ba6b0040d0b907de70eb06d  gcc/testsuite/gcc.dg/fixed-point/define.c
! 591d77b2ddf1b5792d1584435b05abf0  gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp
  7172d69a38fc3346148178e2346509cf  gcc/testsuite/gcc.dg/fixed-point/func-array.c
  c71cd62369fd73371bd64d9e9c2653fe  gcc/testsuite/gcc.dg/fixed-point/func-mixed.c
  2b619b6a57d0ac97a39f559544f66909  gcc/testsuite/gcc.dg/fixed-point/func-scalar.c
*************** d8b37ea89b70427d76a100b7f8387198  gcc/te
*** 33980,33987 ****
  50fc39034c0bf4c2dc167ee2ce72b01a  gcc/testsuite/gcc.dg/fixed-point/union-init.c
  0e3d47ebe3c269f5cbc87b257cae1213  gcc/testsuite/gcc.dg/fixed-point/view-convert-2.c
  b26ec4207090108ad96e87a3a0dbcd15  gcc/testsuite/gcc.dg/fixed-point/view-convert.c
! f8e7a49cc4f98c63f2c403f60a4bed9b  gcc/testsuite/gcc.dg/fixits-pr84852-1.c
! 8716f68d0b926a8d8bac3c12ce0ab6fd  gcc/testsuite/gcc.dg/fixits-pr84852-2.c
  191af7b32d3e6f8856bf440cade6a4db  gcc/testsuite/gcc.dg/fixits.c
  ef50af421660786db0fe02810452b32f  gcc/testsuite/gcc.dg/fixuns-trunc-1.c
  85db05f8c70ca4dbcefde9d1c06692c6  gcc/testsuite/gcc.dg/float-exact-1.c
--- 36632,36639 ----
  50fc39034c0bf4c2dc167ee2ce72b01a  gcc/testsuite/gcc.dg/fixed-point/union-init.c
  0e3d47ebe3c269f5cbc87b257cae1213  gcc/testsuite/gcc.dg/fixed-point/view-convert-2.c
  b26ec4207090108ad96e87a3a0dbcd15  gcc/testsuite/gcc.dg/fixed-point/view-convert.c
! 29adbe1a894d99427ac9ab804e656989  gcc/testsuite/gcc.dg/fixits-pr84852-1.c
! d0d6a914156d5c3df669e283a9d6c0d4  gcc/testsuite/gcc.dg/fixits-pr84852-2.c
  191af7b32d3e6f8856bf440cade6a4db  gcc/testsuite/gcc.dg/fixits.c
  ef50af421660786db0fe02810452b32f  gcc/testsuite/gcc.dg/fixuns-trunc-1.c
  85db05f8c70ca4dbcefde9d1c06692c6  gcc/testsuite/gcc.dg/float-exact-1.c
*************** a37478860517cdafde8ff3d3f2a58d1c  gcc/te
*** 34055,34062 ****
  64339b2ae6b4e40d896218f68e77d78f  gcc/testsuite/gcc.dg/fold-cond-3.c
  bc4dc77fe0d5a497c4f5a8fedce878ef  gcc/testsuite/gcc.dg/fold-condcmpconv-1.c
  2c2601a7fc4c7b7ab5ef5af7d6cca601  gcc/testsuite/gcc.dg/fold-condcmpconv-2.c
! 8fd9724f349a184326a2da4dfe1e3a1c  gcc/testsuite/gcc.dg/fold-convmaxconv-1.c
! 85421025bdc15dbfc77321ae26af820c  gcc/testsuite/gcc.dg/fold-convminconv-1.c
  eaf814577ce35df4d8865fd97a483ccb  gcc/testsuite/gcc.dg/fold-convnotconv-1.c
  399ab8aec7dfc124d0cca585c4c944be  gcc/testsuite/gcc.dg/fold-convround-1.c
  eeea2ac960772dd525f684fc36a59a66  gcc/testsuite/gcc.dg/fold-copysign-1.c
--- 36707,36714 ----
  64339b2ae6b4e40d896218f68e77d78f  gcc/testsuite/gcc.dg/fold-cond-3.c
  bc4dc77fe0d5a497c4f5a8fedce878ef  gcc/testsuite/gcc.dg/fold-condcmpconv-1.c
  2c2601a7fc4c7b7ab5ef5af7d6cca601  gcc/testsuite/gcc.dg/fold-condcmpconv-2.c
! ee5011d0e6b7fccb87df0fdf4ed4cdaf  gcc/testsuite/gcc.dg/fold-convmaxconv-1.c
! bd0bf08bda1424362307a0339137a72d  gcc/testsuite/gcc.dg/fold-convminconv-1.c
  eaf814577ce35df4d8865fd97a483ccb  gcc/testsuite/gcc.dg/fold-convnotconv-1.c
  399ab8aec7dfc124d0cca585c4c944be  gcc/testsuite/gcc.dg/fold-convround-1.c
  eeea2ac960772dd525f684fc36a59a66  gcc/testsuite/gcc.dg/fold-copysign-1.c
*************** fb1942ab921b43867b7fbb82f748d327  gcc/te
*** 34080,34085 ****
--- 36732,36743 ----
  41a30bfd154e6a754a1119edf6cf8589  gcc/testsuite/gcc.dg/fold-ior-1.c
  fd3863d5ae19c0c093a97ed5576367d6  gcc/testsuite/gcc.dg/fold-ior-2.c
  b5d8a05161524c954f45b0f078d90f8d  gcc/testsuite/gcc.dg/fold-ior-3.c
+ 7f6284b1b20285c53e8e8c122daba558  gcc/testsuite/gcc.dg/fold-isfinite-1.c
+ df9cae5951cdf4855b200bba7d44d331  gcc/testsuite/gcc.dg/fold-isfinite-2.c
+ ddbdbd94a8cd2d53cbec12d24f971dea  gcc/testsuite/gcc.dg/fold-isinf-1.c
+ a89adc86410e213406ecc162c744911f  gcc/testsuite/gcc.dg/fold-isinf-2.c
+ f2f03b3c9dfdfdcbc400f9030b23f015  gcc/testsuite/gcc.dg/fold-isnan-1.c
+ da09ef95c9aee0e35a704bcf6e6bfb38  gcc/testsuite/gcc.dg/fold-isnan-2.c
  01defe038de535a58fd6c5d773378f41  gcc/testsuite/gcc.dg/fold-minus-1.c
  aa592ccdac8f70b26c990460947430ab  gcc/testsuite/gcc.dg/fold-minus-2.c
  f3b0cfa8a6b33e8a81636f65dfcac5e8  gcc/testsuite/gcc.dg/fold-minus-3.c
*************** ef996b86a085ad039dc5e5799132ffe1  gcc/te
*** 34098,34103 ****
--- 36756,36766 ----
  752ba8eb6f89a24123b8c656372c3c42  gcc/testsuite/gcc.dg/fold-notshift-2.c
  1df9de219efcd44d2b3c725d348239a0  gcc/testsuite/gcc.dg/fold-notunord.c
  edf04ed94f4d31ed71837cb761ddf3d8  gcc/testsuite/gcc.dg/fold-overflow-1.c
+ 647b56a24a0d21ebe266bd649aaf99bf  gcc/testsuite/gcc.dg/fold-parity-1.c
+ 9bc6cd668247ae9b2b9e3ba10d56570a  gcc/testsuite/gcc.dg/fold-parity-2.c
+ 56ccfc29ed372a45b5750ee742c00839  gcc/testsuite/gcc.dg/fold-parity-3.c
+ 523d8643dd8ead06e45cdc0ae035abd0  gcc/testsuite/gcc.dg/fold-parity-4.c
+ af4f7ab587d0ad7e4f819f784486cf10  gcc/testsuite/gcc.dg/fold-parity-5.c
  54aa9b110f6cc41b3a8069183e125e4b  gcc/testsuite/gcc.dg/fold-perm.c
  2cd5d659a1bbfb19ac32b1f216d642c9  gcc/testsuite/gcc.dg/fold-plus-1.c
  aaf2343db123edcb5a12fe5e85de4492  gcc/testsuite/gcc.dg/fold-plus-2.c
*************** aad1306a4d98044fd7a6a788f7f87ed7  gcc/te
*** 34108,34113 ****
--- 36771,36777 ----
  4bcf36e52d4461466ece7031feca9f36  gcc/testsuite/gcc.dg/fold-popcount-2.c
  0847f8634b6f906d81ae3fc6a2ada832  gcc/testsuite/gcc.dg/fold-popcount-3.c
  683ec5200f3b1bc188c710a610cc4004  gcc/testsuite/gcc.dg/fold-popcount-4.c
+ 933e15fd86f7bd810ceeca9032515ae2  gcc/testsuite/gcc.dg/fold-popcount-5.c
  2521382255d026b527045de9a1f523ec  gcc/testsuite/gcc.dg/fold-reassoc-1.c
  6be22998a5dadde1050406829d46b305  gcc/testsuite/gcc.dg/fold-reassoc-2.c
  76f7470b6189ce228d02129a9dfc4c00  gcc/testsuite/gcc.dg/fold-reassoc-3.c
*************** a7f3b96f5d756ec071af19efd5f08c26  gcc/te
*** 34139,34145 ****
  fd0fed4c372f03e7cb66f4d19c80e7b6  gcc/testsuite/gcc.dg/format/attr-7.c
  64d9fc9cbe7300c0af8401e21d02732c  gcc/testsuite/gcc.dg/format/attr-8.c
  1f25229fd502854e756c57639b3b879d  gcc/testsuite/gcc.dg/format/bitfld-1.c
! 2b9df07c2e06cb9eaa0f54c7325c2de0  gcc/testsuite/gcc.dg/format/branch-1.c
  a5f952800e5755765d6e77745c013e40  gcc/testsuite/gcc.dg/format/builtin-1.c
  c4a2f22ec8cdf76a1d3e0d474153e132  gcc/testsuite/gcc.dg/format/c2x-strftime-1.c
  4b1ae078a369185069c34052aa23541e  gcc/testsuite/gcc.dg/format/c90-printf-1.c
--- 36803,36809 ----
  fd0fed4c372f03e7cb66f4d19c80e7b6  gcc/testsuite/gcc.dg/format/attr-7.c
  64d9fc9cbe7300c0af8401e21d02732c  gcc/testsuite/gcc.dg/format/attr-8.c
  1f25229fd502854e756c57639b3b879d  gcc/testsuite/gcc.dg/format/bitfld-1.c
! 2dfa44096e91c2082e5eb88a3df61ab0  gcc/testsuite/gcc.dg/format/branch-1.c
  a5f952800e5755765d6e77745c013e40  gcc/testsuite/gcc.dg/format/builtin-1.c
  c4a2f22ec8cdf76a1d3e0d474153e132  gcc/testsuite/gcc.dg/format/c2x-strftime-1.c
  4b1ae078a369185069c34052aa23541e  gcc/testsuite/gcc.dg/format/c90-printf-1.c
*************** d48360a30dc24fbd67e388a9848b02d3  gcc/te
*** 34180,34186 ****
  0f2ebefdffa8d565f653d54653327fe8  gcc/testsuite/gcc.dg/format/ext-7.c
  9b01ff037cc666ebab469fea9243a970  gcc/testsuite/gcc.dg/format/ext-8.c
  15bea7790574d1770ac396bfef50a19e  gcc/testsuite/gcc.dg/format/few-1.c
! 5bcad5353bd6b19068568807bdda7b7c  gcc/testsuite/gcc.dg/format/format.exp
  3c298331a5764a4c3e39e92fb781efd5  gcc/testsuite/gcc.dg/format/format.h
  9511da811944e674f4785ad683fe8226  gcc/testsuite/gcc.dg/format/gcc_diag-1.c
  c466aec6fdb07134648d00570dc00c71  gcc/testsuite/gcc.dg/format/gcc_diag-10.c
--- 36844,36850 ----
  0f2ebefdffa8d565f653d54653327fe8  gcc/testsuite/gcc.dg/format/ext-7.c
  9b01ff037cc666ebab469fea9243a970  gcc/testsuite/gcc.dg/format/ext-8.c
  15bea7790574d1770ac396bfef50a19e  gcc/testsuite/gcc.dg/format/few-1.c
! 373b1559d2405582d4a6d7814c81948e  gcc/testsuite/gcc.dg/format/format.exp
  3c298331a5764a4c3e39e92fb781efd5  gcc/testsuite/gcc.dg/format/format.h
  9511da811944e674f4785ad683fe8226  gcc/testsuite/gcc.dg/format/gcc_diag-1.c
  c466aec6fdb07134648d00570dc00c71  gcc/testsuite/gcc.dg/format/gcc_diag-10.c
*************** feeb7cfce9ad672071b89dcf03893b7a  gcc/te
*** 34228,34234 ****
  e58cf173fb9bfa84eff5fb39357945ca  gcc/testsuite/gcc.dg/format/ms_c94-scanf-1.c
  1b311952c69a9f800f47207c755a2ed5  gcc/testsuite/gcc.dg/format/ms_c99-printf-1.c
  568c3a73608f9ee615c471d2598f5dd9  gcc/testsuite/gcc.dg/format/ms_c99-printf-2.c
! ed52005e2f3a8f7c1bbcf6473941a698  gcc/testsuite/gcc.dg/format/ms_c99-printf-3.c
  8f634008e45b4bb49664876af0c27fd9  gcc/testsuite/gcc.dg/format/ms_c99-scanf-1.c
  b33c306a22217ef0879583d08d8c6d24  gcc/testsuite/gcc.dg/format/ms_c99-scanf-2.c
  08e2efdadf39c4eb3abee9de7189056b  gcc/testsuite/gcc.dg/format/ms_c99-scanf-3.c
--- 36892,36898 ----
  e58cf173fb9bfa84eff5fb39357945ca  gcc/testsuite/gcc.dg/format/ms_c94-scanf-1.c
  1b311952c69a9f800f47207c755a2ed5  gcc/testsuite/gcc.dg/format/ms_c99-printf-1.c
  568c3a73608f9ee615c471d2598f5dd9  gcc/testsuite/gcc.dg/format/ms_c99-printf-2.c
! 4d1b9816afefc88cbd31e42309d59b34  gcc/testsuite/gcc.dg/format/ms_c99-printf-3.c
  8f634008e45b4bb49664876af0c27fd9  gcc/testsuite/gcc.dg/format/ms_c99-scanf-1.c
  b33c306a22217ef0879583d08d8c6d24  gcc/testsuite/gcc.dg/format/ms_c99-scanf-2.c
  08e2efdadf39c4eb3abee9de7189056b  gcc/testsuite/gcc.dg/format/ms_c99-scanf-3.c
*************** a6b042c93ecf197f981aaebd8a1804db  gcc/te
*** 34284,34290 ****
  e7a25a12dae650e03485cd984a177acc  gcc/testsuite/gcc.dg/format/pr78498.c
  9e804b4e8ea2d8b0ae475f4640219733  gcc/testsuite/gcc.dg/format/pr78569.c
  b5fc99d5cd488987e446fd40c88fdcde  gcc/testsuite/gcc.dg/format/pr78680.c
! a66c8cef2b8be649ca3bbdc25d56a0d2  gcc/testsuite/gcc.dg/format/pr79210.c
  26ef3595e4d7bd004063fa2f9183b411  gcc/testsuite/gcc.dg/format/pr80619.c
  5caacdfcb70fb6b71dd7eea3ed07bf1e  gcc/testsuite/gcc.dg/format/pr80919.c
  29caabda4f0970842bda436e701889de  gcc/testsuite/gcc.dg/format/pr96935.c
--- 36948,36954 ----
  e7a25a12dae650e03485cd984a177acc  gcc/testsuite/gcc.dg/format/pr78498.c
  9e804b4e8ea2d8b0ae475f4640219733  gcc/testsuite/gcc.dg/format/pr78569.c
  b5fc99d5cd488987e446fd40c88fdcde  gcc/testsuite/gcc.dg/format/pr78680.c
! 9663058512908be4411943eb64802320  gcc/testsuite/gcc.dg/format/pr79210.c
  26ef3595e4d7bd004063fa2f9183b411  gcc/testsuite/gcc.dg/format/pr80619.c
  5caacdfcb70fb6b71dd7eea3ed07bf1e  gcc/testsuite/gcc.dg/format/pr80919.c
  29caabda4f0970842bda436e701889de  gcc/testsuite/gcc.dg/format/pr96935.c
*************** cfde414df06a7d559244461a11116f3a  gcc/te
*** 34309,34316 ****
  dfe38eb512efba921d1fc5abef411b1a  gcc/testsuite/gcc.dg/fpermitted-flt-eval-methods_4.c
  efdf83d01ddd79162b4664860b902b22  gcc/testsuite/gcc.dg/framework-1.c
  ab168371521010cab0fb40567190798a  gcc/testsuite/gcc.dg/framework-2.c
! 64df64085507ec64d22852b8707338d7  gcc/testsuite/gcc.dg/free-1.c
! 02ede66b758de954d4d7f02f6f393f04  gcc/testsuite/gcc.dg/free-2.c
  60aef7ab4a0a9bca44f5182276f77cc3  gcc/testsuite/gcc.dg/fshort-wchar.c
  e69d451610be384e22b38ba06231497c  gcc/testsuite/gcc.dg/fstack-protector-strong.c
  e229fba1e745ea8e6ffbf5e48314ecd3  gcc/testsuite/gcc.dg/ftrapv-1.c
--- 36973,36980 ----
  dfe38eb512efba921d1fc5abef411b1a  gcc/testsuite/gcc.dg/fpermitted-flt-eval-methods_4.c
  efdf83d01ddd79162b4664860b902b22  gcc/testsuite/gcc.dg/framework-1.c
  ab168371521010cab0fb40567190798a  gcc/testsuite/gcc.dg/framework-2.c
! 72cddfd9b852c1976438d75d9facbec7  gcc/testsuite/gcc.dg/free-1.c
! b545fd5015b04774ac8c95c87722bfc2  gcc/testsuite/gcc.dg/free-2.c
  60aef7ab4a0a9bca44f5182276f77cc3  gcc/testsuite/gcc.dg/fshort-wchar.c
  e69d451610be384e22b38ba06231497c  gcc/testsuite/gcc.dg/fstack-protector-strong.c
  e229fba1e745ea8e6ffbf5e48314ecd3  gcc/testsuite/gcc.dg/ftrapv-1.c
*************** f8edb1215bfe058bb498b26b97756168  gcc/te
*** 34366,34376 ****
  f67882b336f63b608ae43b6730adaaaf  gcc/testsuite/gcc.dg/gimplefe-38.c
  2f4f2de04a6580523825226c6f012cdb  gcc/testsuite/gcc.dg/gimplefe-39.c
  e6814c98756761f222d943c13ee581ad  gcc/testsuite/gcc.dg/gimplefe-4.c
- dc74a68d7d4f6ba1501c231d929ce6b4  gcc/testsuite/gcc.dg/gimplefe-40.c
- 91223cbc995b53e58dcd6701cda19613  gcc/testsuite/gcc.dg/gimplefe-41.c
  9ddf86d2eb77d21c2e05769b1538d391  gcc/testsuite/gcc.dg/gimplefe-42.c
  34f653039b6a19157b5e6e939514150b  gcc/testsuite/gcc.dg/gimplefe-43.c
! 626a39cbf1e745f1998be3b9a9cb3bb4  gcc/testsuite/gcc.dg/gimplefe-44.c
  b900f5308b7aaf209ad303e7426ad1bc  gcc/testsuite/gcc.dg/gimplefe-5.c
  003508c84556e4dd5119101f7dec73f6  gcc/testsuite/gcc.dg/gimplefe-6.c
  8537131248e8cadb5cf09db5f3a17687  gcc/testsuite/gcc.dg/gimplefe-7.c
--- 37030,37038 ----
  f67882b336f63b608ae43b6730adaaaf  gcc/testsuite/gcc.dg/gimplefe-38.c
  2f4f2de04a6580523825226c6f012cdb  gcc/testsuite/gcc.dg/gimplefe-39.c
  e6814c98756761f222d943c13ee581ad  gcc/testsuite/gcc.dg/gimplefe-4.c
  9ddf86d2eb77d21c2e05769b1538d391  gcc/testsuite/gcc.dg/gimplefe-42.c
  34f653039b6a19157b5e6e939514150b  gcc/testsuite/gcc.dg/gimplefe-43.c
! e77515df730caf92aaccc463aedcd8c1  gcc/testsuite/gcc.dg/gimplefe-44.c
  b900f5308b7aaf209ad303e7426ad1bc  gcc/testsuite/gcc.dg/gimplefe-5.c
  003508c84556e4dd5119101f7dec73f6  gcc/testsuite/gcc.dg/gimplefe-6.c
  8537131248e8cadb5cf09db5f3a17687  gcc/testsuite/gcc.dg/gimplefe-7.c
*************** c633216963c8d3e5cf26c00e55663895  gcc/te
*** 34383,34388 ****
--- 37045,37051 ----
  719f43f5e6f1bc8bf0f22ef4ca3d2b7a  gcc/testsuite/gcc.dg/gimplefe-error-5.c
  00285c44e7a48a1a7fcc5b322913c553  gcc/testsuite/gcc.dg/gimplefe-error-6.c
  f19ba5ec082add7d45bee659e0ca766a  gcc/testsuite/gcc.dg/gimplefe-error-7.c
+ 1989e8a17547cd0fcc58a9e35f5281fc  gcc/testsuite/gcc.dg/gimplefe-error-8.c
  a7deb2e877a1f5f71b5144b4d0e6f4ab  gcc/testsuite/gcc.dg/globalalias-2.c
  af413f2a965da90de86711f81ac54bc6  gcc/testsuite/gcc.dg/globalalias.c
  644bbd61aaed9ff26399d6df215c0bf6  gcc/testsuite/gcc.dg/gnu-cond-expr-1.c
*************** ae8f65ff46d5c742b9d555f0c48fdbe3  gcc/te
*** 34413,34426 ****
  465c3878b47ae66788561ddbec36b439  gcc/testsuite/gcc.dg/gnu99-init-1.c
  21af052ed022fbb55651109aaef9f7e0  gcc/testsuite/gcc.dg/gnu99-init-2.c
  6981df5e05752f9975e927f7aa20f8e0  gcc/testsuite/gcc.dg/gnu99-static-1.c
! 4c517cd5d51dacde490134dc952b2349  gcc/testsuite/gcc.dg/goacc-gomp/goacc-gomp.exp
  e301304e13590c1ce7f775ce00ef95b0  gcc/testsuite/gcc.dg/goacc/acc_on_device-1.c
! 53e112735e46d20018e96b668e991e9f  gcc/testsuite/gcc.dg/goacc/goacc.exp
  38ff5d5da36acaa115b012c71942b1df  gcc/testsuite/gcc.dg/goacc/loop-processing-1.c
  9e00e7a94f979942198724398d213cee  gcc/testsuite/gcc.dg/goacc/nested-function-1.c
  d28df196e898f3e95d6f476710c89624  gcc/testsuite/gcc.dg/goacc/nested-function-2.c
  75dd052bd164a3a9070c1d0861bc0e3c  gcc/testsuite/gcc.dg/goacc/pr71373.c
  cee73d50b5f0bd43a38d2bf9b09de485  gcc/testsuite/gcc.dg/goacc/pr98183.c
  0efab8bb88a4de7665f8a7841b8036c9  gcc/testsuite/gcc.dg/gomp/_Atomic-1.c
  81038627537341e18385b8972c32c159  gcc/testsuite/gcc.dg/gomp/_Atomic-2.c
  5a7e8af9edd68a5e923dd69b3eed3ae2  gcc/testsuite/gcc.dg/gomp/_Atomic-3.c
--- 37076,37090 ----
  465c3878b47ae66788561ddbec36b439  gcc/testsuite/gcc.dg/gnu99-init-1.c
  21af052ed022fbb55651109aaef9f7e0  gcc/testsuite/gcc.dg/gnu99-init-2.c
  6981df5e05752f9975e927f7aa20f8e0  gcc/testsuite/gcc.dg/gnu99-static-1.c
! 2a4aeea4adf51c7519c93b5cace03bc0  gcc/testsuite/gcc.dg/goacc-gomp/goacc-gomp.exp
  e301304e13590c1ce7f775ce00ef95b0  gcc/testsuite/gcc.dg/goacc/acc_on_device-1.c
! fb2464a92b6e224c08a550ee7d8d715f  gcc/testsuite/gcc.dg/goacc/goacc.exp
  38ff5d5da36acaa115b012c71942b1df  gcc/testsuite/gcc.dg/goacc/loop-processing-1.c
  9e00e7a94f979942198724398d213cee  gcc/testsuite/gcc.dg/goacc/nested-function-1.c
  d28df196e898f3e95d6f476710c89624  gcc/testsuite/gcc.dg/goacc/nested-function-2.c
  75dd052bd164a3a9070c1d0861bc0e3c  gcc/testsuite/gcc.dg/goacc/pr71373.c
  cee73d50b5f0bd43a38d2bf9b09de485  gcc/testsuite/gcc.dg/goacc/pr98183.c
+ f0990e08177a1fbd146dd2412ed83858  gcc/testsuite/gcc.dg/goacc/tile-1.c
  0efab8bb88a4de7665f8a7841b8036c9  gcc/testsuite/gcc.dg/gomp/_Atomic-1.c
  81038627537341e18385b8972c32c159  gcc/testsuite/gcc.dg/gomp/_Atomic-2.c
  5a7e8af9edd68a5e923dd69b3eed3ae2  gcc/testsuite/gcc.dg/gomp/_Atomic-3.c
*************** e2edaa99a329f7ec13d86c69f5fb6685  gcc/te
*** 34439,34445 ****
  bbd3874d19e1e391dc965b955b06bb4f  gcc/testsuite/gcc.dg/gomp/appendix-a/a.21.3.c
  7e4279c348306c5cdf7353260b7be57c  gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.1.c
  f939a327dadbbb577fd23dd8271c7c3a  gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.2.c
! 72c96c7a7d30592ea61a8a32618c3df4  gcc/testsuite/gcc.dg/gomp/appendix-a/a.24.1.c
  89da5674ba83628613e5f756ebdd7041  gcc/testsuite/gcc.dg/gomp/appendix-a/a.26.2.c
  a1284ef9e3b555a89fd81e45ce8bf334  gcc/testsuite/gcc.dg/gomp/appendix-a/a.27.1.c
  b7c0f23928a4856b07cc2b38adc7a05f  gcc/testsuite/gcc.dg/gomp/appendix-a/a.30.1.c
--- 37103,37109 ----
  bbd3874d19e1e391dc965b955b06bb4f  gcc/testsuite/gcc.dg/gomp/appendix-a/a.21.3.c
  7e4279c348306c5cdf7353260b7be57c  gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.1.c
  f939a327dadbbb577fd23dd8271c7c3a  gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.2.c
! 700ffba6f8e33b352d13764baff04849  gcc/testsuite/gcc.dg/gomp/appendix-a/a.24.1.c
  89da5674ba83628613e5f756ebdd7041  gcc/testsuite/gcc.dg/gomp/appendix-a/a.26.2.c
  a1284ef9e3b555a89fd81e45ce8bf334  gcc/testsuite/gcc.dg/gomp/appendix-a/a.27.1.c
  b7c0f23928a4856b07cc2b38adc7a05f  gcc/testsuite/gcc.dg/gomp/appendix-a/a.30.1.c
*************** acb5ff1fe34bdf360b3e8e1e27057c7c  gcc/te
*** 34464,34470 ****
  e6f45fe83443f902400a658e93f132bc  gcc/testsuite/gcc.dg/gomp/atomic-5.c
  22d57060102bd3c8f22f99655931b078  gcc/testsuite/gcc.dg/gomp/atomic-6.c
  5bdf2d77d1853d97a643ac387a3d4898  gcc/testsuite/gcc.dg/gomp/barrier-1.c
! c810b7347465014e305c14700d42a85b  gcc/testsuite/gcc.dg/gomp/barrier-2.c
  23825024eeec4f1d1ec2539c8661d97f  gcc/testsuite/gcc.dg/gomp/block-1.c
  24937ceae4814ecb18d438678ba39fba  gcc/testsuite/gcc.dg/gomp/block-10.c
  64de75e0ae05fb493c94bd4478f76721  gcc/testsuite/gcc.dg/gomp/block-11.c
--- 37128,37134 ----
  e6f45fe83443f902400a658e93f132bc  gcc/testsuite/gcc.dg/gomp/atomic-5.c
  22d57060102bd3c8f22f99655931b078  gcc/testsuite/gcc.dg/gomp/atomic-6.c
  5bdf2d77d1853d97a643ac387a3d4898  gcc/testsuite/gcc.dg/gomp/barrier-1.c
! 16fc33de0e18582d5964943c2ec3ad40  gcc/testsuite/gcc.dg/gomp/barrier-2.c
  23825024eeec4f1d1ec2539c8661d97f  gcc/testsuite/gcc.dg/gomp/block-1.c
  24937ceae4814ecb18d438678ba39fba  gcc/testsuite/gcc.dg/gomp/block-10.c
  64de75e0ae05fb493c94bd4478f76721  gcc/testsuite/gcc.dg/gomp/block-11.c
*************** c810b7347465014e305c14700d42a85b  gcc/te
*** 34473,34479 ****
  546fc61745b9a7596ccf9ae67da7be8b  gcc/testsuite/gcc.dg/gomp/block-4.c
  7d48803787049e31369b0f411af741c7  gcc/testsuite/gcc.dg/gomp/block-5.c
  836974bc19e48b4ba237e9be1404d281  gcc/testsuite/gcc.dg/gomp/block-6.c
! 17f7da7684b46a98f721a4c305549405  gcc/testsuite/gcc.dg/gomp/block-7.c
  9d8e30eba0019473bc7e43fcdc6b48c1  gcc/testsuite/gcc.dg/gomp/block-8.c
  79682352a0c94e668e3de0e2a7fa1c22  gcc/testsuite/gcc.dg/gomp/block-9.c
  4910624b952a49e6626cc2f12abebbbf  gcc/testsuite/gcc.dg/gomp/cancel-1.c
--- 37137,37143 ----
  546fc61745b9a7596ccf9ae67da7be8b  gcc/testsuite/gcc.dg/gomp/block-4.c
  7d48803787049e31369b0f411af741c7  gcc/testsuite/gcc.dg/gomp/block-5.c
  836974bc19e48b4ba237e9be1404d281  gcc/testsuite/gcc.dg/gomp/block-6.c
! b6791d2dc8bbcd1cde186bf6d48381b1  gcc/testsuite/gcc.dg/gomp/block-7.c
  9d8e30eba0019473bc7e43fcdc6b48c1  gcc/testsuite/gcc.dg/gomp/block-8.c
  79682352a0c94e668e3de0e2a7fa1c22  gcc/testsuite/gcc.dg/gomp/block-9.c
  4910624b952a49e6626cc2f12abebbbf  gcc/testsuite/gcc.dg/gomp/cancel-1.c
*************** dbc6b0f25b3415b892a1907086b7068c  gcc/te
*** 34491,34499 ****
  dbf4fad9a516a5e21a83632a1bc47d48  gcc/testsuite/gcc.dg/gomp/declare-simd-2.c
  f34b5c5fe038b2af1f915413d2bbddd0  gcc/testsuite/gcc.dg/gomp/declare-simd-3.c
  8ad7fd6bf872bcd397b6264c4199830e  gcc/testsuite/gcc.dg/gomp/declare-simd-4.c
! f27de0628e77fcd4c557b16b4b5e48e7  gcc/testsuite/gcc.dg/gomp/declare-simd-5.c
  d9fdf9f47a3764723441a571868d9cba  gcc/testsuite/gcc.dg/gomp/declare-variant-1.c
! 9c18909ae2365477bd6a3dc067d99a7d  gcc/testsuite/gcc.dg/gomp/declare-variant-2.c
  4cbde8501b67eb0634877343d20eda34  gcc/testsuite/gcc.dg/gomp/dump-new-function-2.c
  5a6bfb1bc31247155e2a2829449a3dd5  gcc/testsuite/gcc.dg/gomp/dump-new-function-3.c
  da3311b0af85a7a45f6b528ac08bee72  gcc/testsuite/gcc.dg/gomp/dump-new-function.c
--- 37155,37163 ----
  dbf4fad9a516a5e21a83632a1bc47d48  gcc/testsuite/gcc.dg/gomp/declare-simd-2.c
  f34b5c5fe038b2af1f915413d2bbddd0  gcc/testsuite/gcc.dg/gomp/declare-simd-3.c
  8ad7fd6bf872bcd397b6264c4199830e  gcc/testsuite/gcc.dg/gomp/declare-simd-4.c
! 12e124b338a2896b223eb44c1f6fb7d5  gcc/testsuite/gcc.dg/gomp/declare-simd-5.c
  d9fdf9f47a3764723441a571868d9cba  gcc/testsuite/gcc.dg/gomp/declare-variant-1.c
! 8ccac109d8934a0cb21d67c6ec1a3b31  gcc/testsuite/gcc.dg/gomp/declare-variant-2.c
  4cbde8501b67eb0634877343d20eda34  gcc/testsuite/gcc.dg/gomp/dump-new-function-2.c
  5a6bfb1bc31247155e2a2829449a3dd5  gcc/testsuite/gcc.dg/gomp/dump-new-function-3.c
  da3311b0af85a7a45f6b528ac08bee72  gcc/testsuite/gcc.dg/gomp/dump-new-function.c
*************** d04c18e8518877b08e0371599b6643ed  gcc/te
*** 34524,34532 ****
  80a82ac0d4faa464e36b67b133df4697  gcc/testsuite/gcc.dg/gomp/for-7.c
  d9604d99f8b1a6974afc5a3cab2765b3  gcc/testsuite/gcc.dg/gomp/for-8.c
  34eb86e893e0bd796aad8d236b5bc215  gcc/testsuite/gcc.dg/gomp/for-9.c
! d1f9f9182d108dadf774c1c098f4c3d0  gcc/testsuite/gcc.dg/gomp/gomp.exp
  f23a4bf5a986b8f5c098e677d3a78a11  gcc/testsuite/gcc.dg/gomp/linear-1.c
! 56144d4bd65d209b536c4decb65d9c15  gcc/testsuite/gcc.dg/gomp/loop-1.c
  a4271cf7824f2a837486e7951ee23884  gcc/testsuite/gcc.dg/gomp/macro-1.c
  eabb0107af4ef893414bb3cef506ad03  gcc/testsuite/gcc.dg/gomp/macro-2.c
  0d468ea6d8d3343f4663748bf3bf83ac  gcc/testsuite/gcc.dg/gomp/macro-3.c
--- 37188,37197 ----
  80a82ac0d4faa464e36b67b133df4697  gcc/testsuite/gcc.dg/gomp/for-7.c
  d9604d99f8b1a6974afc5a3cab2765b3  gcc/testsuite/gcc.dg/gomp/for-8.c
  34eb86e893e0bd796aad8d236b5bc215  gcc/testsuite/gcc.dg/gomp/for-9.c
! fb6a7b6c338514569109730e1ce07adb  gcc/testsuite/gcc.dg/gomp/gomp.exp
  f23a4bf5a986b8f5c098e677d3a78a11  gcc/testsuite/gcc.dg/gomp/linear-1.c
! 11c71eb5733cf2b2fd8236737c95dfad  gcc/testsuite/gcc.dg/gomp/loop-1.c
! 110dfd4b42962d803dd77ce77900455c  gcc/testsuite/gcc.dg/gomp/loop-2.c
  a4271cf7824f2a837486e7951ee23884  gcc/testsuite/gcc.dg/gomp/macro-1.c
  eabb0107af4ef893414bb3cef506ad03  gcc/testsuite/gcc.dg/gomp/macro-2.c
  0d468ea6d8d3343f4663748bf3bf83ac  gcc/testsuite/gcc.dg/gomp/macro-3.c
*************** ad5a2c143fabe766d3848eb100ea6c38  gcc/te
*** 34547,34553 ****
  94425c0fe2326ebaf98958aacc1d262d  gcc/testsuite/gcc.dg/gomp/ordered-1.c
  d7769c446568c18d557180c850cf3b4a  gcc/testsuite/gcc.dg/gomp/ordered-2.c
  92d8f2d0169326b7681c946be683ef2c  gcc/testsuite/gcc.dg/gomp/parallel-1.c
! 37cd70c6dfa42e4ca92a22cf9bd83ad8  gcc/testsuite/gcc.dg/gomp/parallel-2.c
  f711435274df71049aa71808a78fc7a5  gcc/testsuite/gcc.dg/gomp/parallel-3.c
  d9a1f43ca6ac2a073e22bbbf243f300b  gcc/testsuite/gcc.dg/gomp/parallel-4.c
  7a163e65fe52b23fc85f2daa18c442ee  gcc/testsuite/gcc.dg/gomp/pr25874.c
--- 37212,37218 ----
  94425c0fe2326ebaf98958aacc1d262d  gcc/testsuite/gcc.dg/gomp/ordered-1.c
  d7769c446568c18d557180c850cf3b4a  gcc/testsuite/gcc.dg/gomp/ordered-2.c
  92d8f2d0169326b7681c946be683ef2c  gcc/testsuite/gcc.dg/gomp/parallel-1.c
! 9f67411770a7ed029ecc31a0322360f4  gcc/testsuite/gcc.dg/gomp/parallel-2.c
  f711435274df71049aa71808a78fc7a5  gcc/testsuite/gcc.dg/gomp/parallel-3.c
  d9a1f43ca6ac2a073e22bbbf243f300b  gcc/testsuite/gcc.dg/gomp/parallel-4.c
  7a163e65fe52b23fc85f2daa18c442ee  gcc/testsuite/gcc.dg/gomp/pr25874.c
*************** ca3e6f1780ac0a60027cbe93e57cbbf1  gcc/te
*** 34590,34596 ****
  514cd6cfd6d72a935e5dbc2d1b3609f4  gcc/testsuite/gcc.dg/gomp/pr38676.c
  d202c807b4080808baf99ab9f32b21a4  gcc/testsuite/gcc.dg/gomp/pr39495-1.c
  a68bce75892f83dcd1d4ea4ff82fd7e4  gcc/testsuite/gcc.dg/gomp/pr39495-2.c
! 4a61a37a3515bf0dfee678cc9b365685  gcc/testsuite/gcc.dg/gomp/pr44085.c
  b479e6893611bbb984727c7b24fecade  gcc/testsuite/gcc.dg/gomp/pr46032-2.c
  522c7bfc279cd473b82f0baaadea4fef  gcc/testsuite/gcc.dg/gomp/pr46032-3.c
  81cc1ab572093091d240bd4f73616466  gcc/testsuite/gcc.dg/gomp/pr47963.c
--- 37255,37261 ----
  514cd6cfd6d72a935e5dbc2d1b3609f4  gcc/testsuite/gcc.dg/gomp/pr38676.c
  d202c807b4080808baf99ab9f32b21a4  gcc/testsuite/gcc.dg/gomp/pr39495-1.c
  a68bce75892f83dcd1d4ea4ff82fd7e4  gcc/testsuite/gcc.dg/gomp/pr39495-2.c
! ec3e057593bad1ce490caa7f3ca2b2f8  gcc/testsuite/gcc.dg/gomp/pr44085.c
  b479e6893611bbb984727c7b24fecade  gcc/testsuite/gcc.dg/gomp/pr46032-2.c
  522c7bfc279cd473b82f0baaadea4fef  gcc/testsuite/gcc.dg/gomp/pr46032-3.c
  81cc1ab572093091d240bd4f73616466  gcc/testsuite/gcc.dg/gomp/pr47963.c
*************** ef3626bfd9a01c1b3e4b0d6ca7d55c1a  gcc/te
*** 34641,34651 ****
  ed760ac8f4b74b9e23f9f524135a1729  gcc/testsuite/gcc.dg/gomp/pr91216.c
  c5e93f26d77634fb8db0acbd556b6ce8  gcc/testsuite/gcc.dg/gomp/pr92557.c
  d3c061d3fd7dc8cf903b23054af3c7ea  gcc/testsuite/gcc.dg/gomp/pr95108.c
  c2316c5f28dbb215f431c0063ca94849  gcc/testsuite/gcc.dg/gomp/pr98183.c
! eba9d866ef5b70c6241e6331f056bb25  gcc/testsuite/gcc.dg/gomp/pr99007-1.c
  419477a8634e4c558ec385e7956f2c04  gcc/testsuite/gcc.dg/gomp/pr99007-2.c
  d48a7b042ba2c6c301caa63e9559a4ea  gcc/testsuite/gcc.dg/gomp/pr99007-3.c
  c5bf7c7917177162a66f3e2ca3cca6d0  gcc/testsuite/gcc.dg/gomp/pr99542.c
  32d1b4709fce01c7b0f596da5c040f2a  gcc/testsuite/gcc.dg/gomp/preprocess-1.c
  5a96f232ac76ad6d8182f67c3f3a4acf  gcc/testsuite/gcc.dg/gomp/reduction-1.c
  ee48ac12f6aa280cf17765633b31f541  gcc/testsuite/gcc.dg/gomp/reduction-2.c
--- 37306,37319 ----
  ed760ac8f4b74b9e23f9f524135a1729  gcc/testsuite/gcc.dg/gomp/pr91216.c
  c5e93f26d77634fb8db0acbd556b6ce8  gcc/testsuite/gcc.dg/gomp/pr92557.c
  d3c061d3fd7dc8cf903b23054af3c7ea  gcc/testsuite/gcc.dg/gomp/pr95108.c
+ da512b545678729b0d7bcd5bacb007b4  gcc/testsuite/gcc.dg/gomp/pr95315-2.c
+ 85d3353326749dd2dc30a9c4cf8752be  gcc/testsuite/gcc.dg/gomp/pr95315.c
  c2316c5f28dbb215f431c0063ca94849  gcc/testsuite/gcc.dg/gomp/pr98183.c
! 00144472eaceec65e6944b47a2152522  gcc/testsuite/gcc.dg/gomp/pr99007-1.c
  419477a8634e4c558ec385e7956f2c04  gcc/testsuite/gcc.dg/gomp/pr99007-2.c
  d48a7b042ba2c6c301caa63e9559a4ea  gcc/testsuite/gcc.dg/gomp/pr99007-3.c
  c5bf7c7917177162a66f3e2ca3cca6d0  gcc/testsuite/gcc.dg/gomp/pr99542.c
+ 7e28101f22358515983ce58766fa9a3a  gcc/testsuite/gcc.dg/gomp/pr99544.c
  32d1b4709fce01c7b0f596da5c040f2a  gcc/testsuite/gcc.dg/gomp/preprocess-1.c
  5a96f232ac76ad6d8182f67c3f3a4acf  gcc/testsuite/gcc.dg/gomp/reduction-1.c
  ee48ac12f6aa280cf17765633b31f541  gcc/testsuite/gcc.dg/gomp/reduction-2.c
*************** ee48ac12f6aa280cf17765633b31f541  gcc/te
*** 34654,34663 ****
  c8fdbed05305ecb29a74eae041f265e9  gcc/testsuite/gcc.dg/gomp/sections-2.c
  b72fe99f861779472bd3b1cf3587d478  gcc/testsuite/gcc.dg/gomp/sections-3.c
  9f60edc949854690c68fa7fb1e8b3157  gcc/testsuite/gcc.dg/gomp/sections-4.c
! 05bf529c2997a9784d163e65f386d5a6  gcc/testsuite/gcc.dg/gomp/sharing-1.c
  a7ac9c7250e12a3e2fa3681701b90c4f  gcc/testsuite/gcc.dg/gomp/sharing-2.c
  883a70127feb584b7b7699b066cd3ee5  gcc/testsuite/gcc.dg/gomp/sharing-3.c
  5202c32cea52b95c1af73171cd56c299  gcc/testsuite/gcc.dg/gomp/simd-1.c
  eadcc6e8f85f7b3ef33b80d3fa14380e  gcc/testsuite/gcc.dg/gomp/simd-clones-1.c
  ee13d224fd76947e011c7a925be81f89  gcc/testsuite/gcc.dg/gomp/simd-clones-2.c
  c14634a323696079f49ec83c65002f01  gcc/testsuite/gcc.dg/gomp/simd-clones-3.c
--- 37322,37333 ----
  c8fdbed05305ecb29a74eae041f265e9  gcc/testsuite/gcc.dg/gomp/sections-2.c
  b72fe99f861779472bd3b1cf3587d478  gcc/testsuite/gcc.dg/gomp/sections-3.c
  9f60edc949854690c68fa7fb1e8b3157  gcc/testsuite/gcc.dg/gomp/sections-4.c
! 3204cae0e47462621115d4cebb22d26d  gcc/testsuite/gcc.dg/gomp/sharing-1.c
  a7ac9c7250e12a3e2fa3681701b90c4f  gcc/testsuite/gcc.dg/gomp/sharing-2.c
  883a70127feb584b7b7699b066cd3ee5  gcc/testsuite/gcc.dg/gomp/sharing-3.c
  5202c32cea52b95c1af73171cd56c299  gcc/testsuite/gcc.dg/gomp/simd-1.c
+ 126d0fa445584b17786d97ff1868b4b2  gcc/testsuite/gcc.dg/gomp/simd-2.c
+ 71529f4901112537840ae2e908cd9b63  gcc/testsuite/gcc.dg/gomp/simd-3.c
  eadcc6e8f85f7b3ef33b80d3fa14380e  gcc/testsuite/gcc.dg/gomp/simd-clones-1.c
  ee13d224fd76947e011c7a925be81f89  gcc/testsuite/gcc.dg/gomp/simd-clones-2.c
  c14634a323696079f49ec83c65002f01  gcc/testsuite/gcc.dg/gomp/simd-clones-3.c
*************** ad6a9027ae49be1e64cb9dd3311b1b94  gcc/te
*** 34672,34677 ****
--- 37342,37348 ----
  871d2afbf0f76e5d008f733eaf14a059  gcc/testsuite/gcc.dg/gomp/static.c
  0e4b88bcdaea3e0ec538494446e27cde  gcc/testsuite/gcc.dg/gomp/target-1.c
  3dbda1e12ff1651f658704d415f7e84f  gcc/testsuite/gcc.dg/gomp/target-2.c
+ f2e9b1993ad0ade2480d28889a6b9b76  gcc/testsuite/gcc.dg/gomp/task-detach-1.c
  4741c3d5f20c56daf5979276c5b6f618  gcc/testsuite/gcc.dg/gomp/taskgroup-1.c
  b98a2bc5c4eb574a9dd2efa360dc67c3  gcc/testsuite/gcc.dg/gomp/teams-1.c
  b67cfbf3900e01ed3c366e88b3a04171  gcc/testsuite/gcc.dg/gomp/tls-1.c
*************** f0694a8a27ae0ef269767479c6b54201  gcc/te
*** 34681,34687 ****
  ce7f414e0b315f56a4c5e6b6f61c2ddf  gcc/testsuite/gcc.dg/gomp/udr-3.c
  79c19553e59dc76750e93a7bd9060361  gcc/testsuite/gcc.dg/gomp/udr-4.c
  cc2e57695051196863b0f1a101527357  gcc/testsuite/gcc.dg/gomp/uninit-1.c
! 62c0658f5f31fd0088a3fae5f3648416  gcc/testsuite/gcc.dg/gomp/vla-1.c
  83b9ba2d397c47edb4b0069374a5e5a0  gcc/testsuite/gcc.dg/gomp/vla-2.c
  bbeaec29af5c6a868849b415a3392680  gcc/testsuite/gcc.dg/gomp/vla-3.c
  918f95f1e69776f38cf05325ce52cf69  gcc/testsuite/gcc.dg/gomp/vla-4.c
--- 37352,37358 ----
  ce7f414e0b315f56a4c5e6b6f61c2ddf  gcc/testsuite/gcc.dg/gomp/udr-3.c
  79c19553e59dc76750e93a7bd9060361  gcc/testsuite/gcc.dg/gomp/udr-4.c
  cc2e57695051196863b0f1a101527357  gcc/testsuite/gcc.dg/gomp/uninit-1.c
! 3900107f28986c0a648cdde2b189d84f  gcc/testsuite/gcc.dg/gomp/vla-1.c
  83b9ba2d397c47edb4b0069374a5e5a0  gcc/testsuite/gcc.dg/gomp/vla-2.c
  bbeaec29af5c6a868849b415a3392680  gcc/testsuite/gcc.dg/gomp/vla-3.c
  918f95f1e69776f38cf05325ce52cf69  gcc/testsuite/gcc.dg/gomp/vla-4.c
*************** d52311b9c131d936e432ecb0ead28e52  gcc/te
*** 34755,34761 ****
  5e3ef65d649f9a7d1c1d6819a2188844  gcc/testsuite/gcc.dg/graphite/block-pr47654.c
  c3029918e87d1d13ebf16885b60ceb30  gcc/testsuite/gcc.dg/graphite/fuse-1.c
  63d4a7071763336f82d3784cd09338d4  gcc/testsuite/gcc.dg/graphite/fuse-2.c
! 12cac57428ac6b4aff1022c3ec3ea8ec  gcc/testsuite/gcc.dg/graphite/graphite.exp
  fcc649eff8ed5565979257e4569372a8  gcc/testsuite/gcc.dg/graphite/id-1.c
  09f79b77ac016159bcb104dc023d7b07  gcc/testsuite/gcc.dg/graphite/id-10.c
  3e96948dcff7f34717278e07eb31443a  gcc/testsuite/gcc.dg/graphite/id-11.c
--- 37426,37432 ----
  5e3ef65d649f9a7d1c1d6819a2188844  gcc/testsuite/gcc.dg/graphite/block-pr47654.c
  c3029918e87d1d13ebf16885b60ceb30  gcc/testsuite/gcc.dg/graphite/fuse-1.c
  63d4a7071763336f82d3784cd09338d4  gcc/testsuite/gcc.dg/graphite/fuse-2.c
! 0e91e0d2a7cef669613878bda53b1ce4  gcc/testsuite/gcc.dg/graphite/graphite.exp
  fcc649eff8ed5565979257e4569372a8  gcc/testsuite/gcc.dg/graphite/id-1.c
  09f79b77ac016159bcb104dc023d7b07  gcc/testsuite/gcc.dg/graphite/id-10.c
  3e96948dcff7f34717278e07eb31443a  gcc/testsuite/gcc.dg/graphite/id-11.c
*************** c9e8998af64165292da0f348d0b87b58  gcc/te
*** 35011,35017 ****
  b53f45865574ccabd59e1d656437b74c  gcc/testsuite/gcc.dg/graphite/scop-23.c
  9ee27af941ef11d6edd8d2b9cd697a91  gcc/testsuite/gcc.dg/graphite/scop-24.c
  44f99b16a0aa9674919373c67af38463  gcc/testsuite/gcc.dg/graphite/scop-3.c
! 7f1ab880e33b0de94fa0db019bdd010a  gcc/testsuite/gcc.dg/graphite/scop-4.c
  d2057cb4a30d57b0b93681004cdb79ee  gcc/testsuite/gcc.dg/graphite/scop-5.c
  e71816cd1a50c344fa5b377647b8c170  gcc/testsuite/gcc.dg/graphite/scop-6.c
  66890a5de32de9c1f1da0bacb4c8067c  gcc/testsuite/gcc.dg/graphite/scop-7.c
--- 37682,37688 ----
  b53f45865574ccabd59e1d656437b74c  gcc/testsuite/gcc.dg/graphite/scop-23.c
  9ee27af941ef11d6edd8d2b9cd697a91  gcc/testsuite/gcc.dg/graphite/scop-24.c
  44f99b16a0aa9674919373c67af38463  gcc/testsuite/gcc.dg/graphite/scop-3.c
! 4aaf278cefd4f7a2f59482be0da945e1  gcc/testsuite/gcc.dg/graphite/scop-4.c
  d2057cb4a30d57b0b93681004cdb79ee  gcc/testsuite/gcc.dg/graphite/scop-5.c
  e71816cd1a50c344fa5b377647b8c170  gcc/testsuite/gcc.dg/graphite/scop-6.c
  66890a5de32de9c1f1da0bacb4c8067c  gcc/testsuite/gcc.dg/graphite/scop-7.c
*************** b9aafcde73d659e8a8f12aec94a7cb09  gcc/te
*** 35041,35047 ****
  46fe10dc7c2a1b21f0d7af66c601ad44  gcc/testsuite/gcc.dg/guality/drap.c
  6572d7b6a1c070b8e6c4fe22f6133e02  gcc/testsuite/gcc.dg/guality/example.c
  c2dbe29811bd94d5d243fab419e7cc46  gcc/testsuite/gcc.dg/guality/guality.c
! ad3832865ce6297602ae5c702ff44e94  gcc/testsuite/gcc.dg/guality/guality.exp
  8c384d0e247915329d53a586d7639107  gcc/testsuite/gcc.dg/guality/guality.h
  2d9c26760bf9d33b3f102b5e17c22c93  gcc/testsuite/gcc.dg/guality/inline-params-2.c
  1acafa5b9d5aeba7e4788b85be32dc52  gcc/testsuite/gcc.dg/guality/inline-params.c
--- 37712,37718 ----
  46fe10dc7c2a1b21f0d7af66c601ad44  gcc/testsuite/gcc.dg/guality/drap.c
  6572d7b6a1c070b8e6c4fe22f6133e02  gcc/testsuite/gcc.dg/guality/example.c
  c2dbe29811bd94d5d243fab419e7cc46  gcc/testsuite/gcc.dg/guality/guality.c
! 6a55e291b85166259225a8d7acf8f3c5  gcc/testsuite/gcc.dg/guality/guality.exp
  8c384d0e247915329d53a586d7639107  gcc/testsuite/gcc.dg/guality/guality.h
  2d9c26760bf9d33b3f102b5e17c22c93  gcc/testsuite/gcc.dg/guality/inline-params-2.c
  1acafa5b9d5aeba7e4788b85be32dc52  gcc/testsuite/gcc.dg/guality/inline-params.c
*************** e7dd4b85c878db0844a2af69bc853d37  gcc/te
*** 35101,35107 ****
  98fd462ab643d1f911532ca037efefd0  gcc/testsuite/gcc.dg/guality/pr58791-3.c
  488eeeba067b664dd360f9c8a77ed0f6  gcc/testsuite/gcc.dg/guality/pr58791-4.c
  5aecfb2723beadb92903d5b3b9926d2e  gcc/testsuite/gcc.dg/guality/pr58791-5.c
! c50accaf1f83b535f5fbf5a19c1358dd  gcc/testsuite/gcc.dg/guality/pr59776.c
  835fde6d6312ffd1b474991dd006c97b  gcc/testsuite/gcc.dg/guality/pr63300-const-volatile.c
  bd4a9885fb6107771b347577a3a69af9  gcc/testsuite/gcc.dg/guality/pr67192.c
  6f9f612c16ed980a7a97f6d09a05b6e1  gcc/testsuite/gcc.dg/guality/pr68037-1.c
--- 37772,37778 ----
  98fd462ab643d1f911532ca037efefd0  gcc/testsuite/gcc.dg/guality/pr58791-3.c
  488eeeba067b664dd360f9c8a77ed0f6  gcc/testsuite/gcc.dg/guality/pr58791-4.c
  5aecfb2723beadb92903d5b3b9926d2e  gcc/testsuite/gcc.dg/guality/pr58791-5.c
! c6549503dc81409438c556c795f6ad8a  gcc/testsuite/gcc.dg/guality/pr59776.c
  835fde6d6312ffd1b474991dd006c97b  gcc/testsuite/gcc.dg/guality/pr63300-const-volatile.c
  bd4a9885fb6107771b347577a3a69af9  gcc/testsuite/gcc.dg/guality/pr67192.c
  6f9f612c16ed980a7a97f6d09a05b6e1  gcc/testsuite/gcc.dg/guality/pr68037-1.c
*************** a7fd762dc34522882305feff890fdc31  gcc/te
*** 35120,35125 ****
--- 37791,37798 ----
  a6784dd514ea635dd749972057296862  gcc/testsuite/gcc.dg/guality/pr90131.c
  0b685ef87ae28820211d55fb7f51b104  gcc/testsuite/gcc.dg/guality/pr90716.c
  c9c3c711c2fb8ac1a0051b259a2d0a19  gcc/testsuite/gcc.dg/guality/pr95343.c
+ 347dd976fda7a8d33374697df5c9ab7b  gcc/testsuite/gcc.dg/guality/pr98219-1.c
+ 1879e4eac130703154f9f4c54d4eb843  gcc/testsuite/gcc.dg/guality/pr98219-2.c
  9102efe5e2518fc06add3b4152dbbf46  gcc/testsuite/gcc.dg/guality/prevent-optimization.h
  c0d9571f415055f61c0ecd1bd0b82a7f  gcc/testsuite/gcc.dg/guality/restrict.c
  ed974f3f5302f2126afc51c7c8a44af0  gcc/testsuite/gcc.dg/guality/rotatetest.c
*************** beabf14243b2b65800f0733144ef725e  gcc/te
*** 35139,35148 ****
--- 37812,37826 ----
  dc12526b2575b25bbb0263164484aeb3  gcc/testsuite/gcc.dg/hoist-register-pressure-1.c
  0df11bb9dd20d8cf406324e2baa18d83  gcc/testsuite/gcc.dg/hoist-register-pressure-2.c
  dd0c3d86be7753351dad89d50055a01e  gcc/testsuite/gcc.dg/hoist-register-pressure-3.c
+ 69b33ffde92e3a08b238cf0389cbae8f  gcc/testsuite/gcc.dg/hwasan/hwasan.exp
+ f20946bfbddc67e74cf619bd02e31549  gcc/testsuite/gcc.dg/hwasan/nested-functions-0.c
+ 36c11146134a4d86c84c359d41e52a7c  gcc/testsuite/gcc.dg/hwasan/nested-functions-1.c
+ a5a7f8d29428537e3a2276c6511f420c  gcc/testsuite/gcc.dg/hwasan/nested-functions-2.c
  7d7e529edfbef249e01f5cafb7a44ad9  gcc/testsuite/gcc.dg/ia64-sync-1.c
  015c5dd786b5f6f18e977ffea401ffc5  gcc/testsuite/gcc.dg/ia64-sync-2.c
  fa339ef9a072a4d4f0a19e1dfafb8e21  gcc/testsuite/gcc.dg/ia64-sync-3.c
  cecd94d2778bef289fc62f969f31fdb8  gcc/testsuite/gcc.dg/ia64-sync-4.c
+ ba16630eaf919a3610f03c0689107582  gcc/testsuite/gcc.dg/ia64-sync-5.c
  722c7cd48ae9b896df5993611367f1c4  gcc/testsuite/gcc.dg/iec-559-macros-1.c
  5a4cfed9afaf84ef9a07fe4d29666586  gcc/testsuite/gcc.dg/iec-559-macros-2.c
  bcac56f7ef0989f6a5639eb10779652e  gcc/testsuite/gcc.dg/iec-559-macros-3.c
*************** f46dce055fca6bcb88a60d11a0bb710b  gcc/te
*** 35155,35161 ****
  450618a497d9ab1567d9bc1ed188ded4  gcc/testsuite/gcc.dg/if-empty-1.c
  3fcd24000493dccbffcab8d7f571db16  gcc/testsuite/gcc.dg/ifcvt-1.c
  788cdc139607df186471194c57393d9b  gcc/testsuite/gcc.dg/ifcvt-2.c
! e9f9e5e070c0fd51913bc50fa8ee6cdc  gcc/testsuite/gcc.dg/ifcvt-3.c
  2cf8d8adc52e9522b8029ae17e5a1dd6  gcc/testsuite/gcc.dg/ifcvt-4.c
  851af7bdf70bdcebc1bbfe12c989a445  gcc/testsuite/gcc.dg/ifcvt-5.c
  18c54e879b05c8aed2d3ad8ec198fe6d  gcc/testsuite/gcc.dg/ifcvt-fabs-1.c
--- 37833,37839 ----
  450618a497d9ab1567d9bc1ed188ded4  gcc/testsuite/gcc.dg/if-empty-1.c
  3fcd24000493dccbffcab8d7f571db16  gcc/testsuite/gcc.dg/ifcvt-1.c
  788cdc139607df186471194c57393d9b  gcc/testsuite/gcc.dg/ifcvt-2.c
! 1406d8ef80fc3e9a51abb05637775214  gcc/testsuite/gcc.dg/ifcvt-3.c
  2cf8d8adc52e9522b8029ae17e5a1dd6  gcc/testsuite/gcc.dg/ifcvt-4.c
  851af7bdf70bdcebc1bbfe12c989a445  gcc/testsuite/gcc.dg/ifcvt-5.c
  18c54e879b05c8aed2d3ad8ec198fe6d  gcc/testsuite/gcc.dg/ifcvt-fabs-1.c
*************** c686dca1473baeadaf2f166d4c96e4ef  gcc/te
*** 35165,35171 ****
  38fd7e66d9e9047306640ae6d027b37c  gcc/testsuite/gcc.dg/iftrap-2.c
  f77f4e1b3820c0e1099e7438eb895d42  gcc/testsuite/gcc.dg/imag-1.c
  0b9c32da80718012a226452338fe25a6  gcc/testsuite/gcc.dg/incomplete-typedef-1.c
! ce43227b4d52cc00cbf6cb001ca292d5  gcc/testsuite/gcc.dg/independent-cloneids-1.c
  40f334b77ba095bba2fa33655034825f  gcc/testsuite/gcc.dg/init-bad-1.c
  5cad920dfbdb642fa95b968bf1309d8b  gcc/testsuite/gcc.dg/init-bad-2.c
  08719f36ce425d988539aac42fc7c6e9  gcc/testsuite/gcc.dg/init-bad-3.c
--- 37843,37849 ----
  38fd7e66d9e9047306640ae6d027b37c  gcc/testsuite/gcc.dg/iftrap-2.c
  f77f4e1b3820c0e1099e7438eb895d42  gcc/testsuite/gcc.dg/imag-1.c
  0b9c32da80718012a226452338fe25a6  gcc/testsuite/gcc.dg/incomplete-typedef-1.c
! f56673c5900fb2e39c7f865e95e75d5a  gcc/testsuite/gcc.dg/independent-cloneids-1.c
  40f334b77ba095bba2fa33655034825f  gcc/testsuite/gcc.dg/init-bad-1.c
  5cad920dfbdb642fa95b968bf1309d8b  gcc/testsuite/gcc.dg/init-bad-2.c
  08719f36ce425d988539aac42fc7c6e9  gcc/testsuite/gcc.dg/init-bad-3.c
*************** f70ded6613ae8c6868fcd8a898089b34  gcc/te
*** 35244,35251 ****
  c98bd8084443af9809a9b85283a91966  gcc/testsuite/gcc.dg/instrument-1.c
  50e20d44cf899b50a377dfbe7b59c8e6  gcc/testsuite/gcc.dg/instrument-2.c
  0d49d6b891baf686b7989dc2f3e27fd4  gcc/testsuite/gcc.dg/instrument-3.c
! 8afc9a23899f2c0f2e06dba974dc3a7c  gcc/testsuite/gcc.dg/intermod-1.c
! 345baf437ceb6cd649669a691a99fd3b  gcc/testsuite/gcc.dg/intmax_t-1.c
  623aed8859c8d8790d8542fcad873744  gcc/testsuite/gcc.dg/invalid-call-1.c
  dfbda23c0d941f8279a80a5be93dcf25  gcc/testsuite/gcc.dg/ipa/20040703-wpa.c
  ee8131c6a8c9753b56fee8c390b0317c  gcc/testsuite/gcc.dg/ipa/PR64550.c
--- 37922,37929 ----
  c98bd8084443af9809a9b85283a91966  gcc/testsuite/gcc.dg/instrument-1.c
  50e20d44cf899b50a377dfbe7b59c8e6  gcc/testsuite/gcc.dg/instrument-2.c
  0d49d6b891baf686b7989dc2f3e27fd4  gcc/testsuite/gcc.dg/instrument-3.c
! a481d0a49a4bf2aa98254e8df226bcd5  gcc/testsuite/gcc.dg/intermod-1.c
! 22557d653f291c76fc7092fa90747b0a  gcc/testsuite/gcc.dg/intmax_t-1.c
  623aed8859c8d8790d8542fcad873744  gcc/testsuite/gcc.dg/invalid-call-1.c
  dfbda23c0d941f8279a80a5be93dcf25  gcc/testsuite/gcc.dg/ipa/20040703-wpa.c
  ee8131c6a8c9753b56fee8c390b0317c  gcc/testsuite/gcc.dg/ipa/PR64550.c
*************** ecd8ef7af1e453fe86acc39a6f46ed5e  gcc/te
*** 35276,35281 ****
--- 37954,37960 ----
  c67f7d13d068efa64db24e8e8dc7a1f8  gcc/testsuite/gcc.dg/ipa/inlinehint-2.c
  986d05677bd9d6899662c3d7abcc4d90  gcc/testsuite/gcc.dg/ipa/inlinehint-3.c
  3fe0cc741bbd830988843edbaa8a886e  gcc/testsuite/gcc.dg/ipa/inlinehint-4.c
+ 037953f5f515da9d85b0c8966cc8f034  gcc/testsuite/gcc.dg/ipa/inlinehint-5.c
  72c8782c7fb325d74ad9370287eb440f  gcc/testsuite/gcc.dg/ipa/ipa-1.c
  459cdd64eb0d00fa2c0c66393f340c61  gcc/testsuite/gcc.dg/ipa/ipa-2.c
  6b1b99d9576860b04d3ff15be4c0aff2  gcc/testsuite/gcc.dg/ipa/ipa-3.c
*************** e6abb860376b654b78c23a68c2741729  gcc/te
*** 35288,35294 ****
  f3f65e1d3145f966098a6cfbc7bca62a  gcc/testsuite/gcc.dg/ipa/ipa-bit-cp-2.c
  1aef81e0ff3a8a77ea3fa23a05927c7d  gcc/testsuite/gcc.dg/ipa/ipa-bit-cp.c
  86a9990992fcc01dbfcaf9edc8f17ad6  gcc/testsuite/gcc.dg/ipa/ipa-clone-1.c
! 968bf3fb4b96ae7f99e4c01cac27104f  gcc/testsuite/gcc.dg/ipa/ipa-clone-2.c
  283ef27eb9ca69eb6559ad3a16f5a2a4  gcc/testsuite/gcc.dg/ipa/ipa-clone-3.c
  21dac75ea97a14ffe10d8b2ef5d8f98e  gcc/testsuite/gcc.dg/ipa/ipa-icf-1.c
  aad0970c041ba314191663390ed3c676  gcc/testsuite/gcc.dg/ipa/ipa-icf-10.c
--- 37967,37973 ----
  f3f65e1d3145f966098a6cfbc7bca62a  gcc/testsuite/gcc.dg/ipa/ipa-bit-cp-2.c
  1aef81e0ff3a8a77ea3fa23a05927c7d  gcc/testsuite/gcc.dg/ipa/ipa-bit-cp.c
  86a9990992fcc01dbfcaf9edc8f17ad6  gcc/testsuite/gcc.dg/ipa/ipa-clone-1.c
! 62bf4f8be35fb3861ecd4ec28a86fd95  gcc/testsuite/gcc.dg/ipa/ipa-clone-2.c
  283ef27eb9ca69eb6559ad3a16f5a2a4  gcc/testsuite/gcc.dg/ipa/ipa-clone-3.c
  21dac75ea97a14ffe10d8b2ef5d8f98e  gcc/testsuite/gcc.dg/ipa/ipa-icf-1.c
  aad0970c041ba314191663390ed3c676  gcc/testsuite/gcc.dg/ipa/ipa-icf-10.c
*************** a1f45503a5693ba924f940435c258afa  gcc/te
*** 35335,35341 ****
  4ee4c18cef88c83e34a84a098e18414d  gcc/testsuite/gcc.dg/ipa/ipa-pta-10.c
  58e165413e63d8a1df6270894ba59d49  gcc/testsuite/gcc.dg/ipa/ipa-pta-11.c
  4ab316e91c72ea26364748ae2277b0bb  gcc/testsuite/gcc.dg/ipa/ipa-pta-12.c
! fe21d68de70ad63fadc86e13e98b8b12  gcc/testsuite/gcc.dg/ipa/ipa-pta-13.c
  c6173ea10b589e0736f6a4e4b24aeae0  gcc/testsuite/gcc.dg/ipa/ipa-pta-14.c
  def7e11a18eea4df779bd2605c1a040e  gcc/testsuite/gcc.dg/ipa/ipa-pta-15.c
  5dd668648d66c29bd065eca897a0c024  gcc/testsuite/gcc.dg/ipa/ipa-pta-16.c
--- 38014,38020 ----
  4ee4c18cef88c83e34a84a098e18414d  gcc/testsuite/gcc.dg/ipa/ipa-pta-10.c
  58e165413e63d8a1df6270894ba59d49  gcc/testsuite/gcc.dg/ipa/ipa-pta-11.c
  4ab316e91c72ea26364748ae2277b0bb  gcc/testsuite/gcc.dg/ipa/ipa-pta-12.c
! 81975ae5e39e58b128b0ffa494b17cac  gcc/testsuite/gcc.dg/ipa/ipa-pta-13.c
  c6173ea10b589e0736f6a4e4b24aeae0  gcc/testsuite/gcc.dg/ipa/ipa-pta-14.c
  def7e11a18eea4df779bd2605c1a040e  gcc/testsuite/gcc.dg/ipa/ipa-pta-15.c
  5dd668648d66c29bd065eca897a0c024  gcc/testsuite/gcc.dg/ipa/ipa-pta-16.c
*************** f18e2b83422d97d0681e4e9f878b894f  gcc/te
*** 35350,35366 ****
  441ffb1f07bb7afe89ac90ca116d65fd  gcc/testsuite/gcc.dg/ipa/ipa-pta-7.c
  a174f70c19f257c6429f70c5c49a0481  gcc/testsuite/gcc.dg/ipa/ipa-pta-8.c
  62f8de7dbeb66432037449dc1714dace  gcc/testsuite/gcc.dg/ipa/ipa-pta-9.c
! c7d1bd33095eeb19344100843b166016  gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c
  3f2ea636db674fe969911731f3d03b4f  gcc/testsuite/gcc.dg/ipa/ipa-sra-10.c
  9408719454e13143f40c88f342a71f5b  gcc/testsuite/gcc.dg/ipa/ipa-sra-11.c
! 6f9db80cfb1a6a9e7cdecacae765456d  gcc/testsuite/gcc.dg/ipa/ipa-sra-12.c
! 39c3ac9cde234d53798bdc358b2ad938  gcc/testsuite/gcc.dg/ipa/ipa-sra-13.c
! 4f62a05588fde170d0350ff04f236b20  gcc/testsuite/gcc.dg/ipa/ipa-sra-14.c
! 75294741b6089b55ba6c5f72534cc2e8  gcc/testsuite/gcc.dg/ipa/ipa-sra-15.c
  c5de06a06285e5ac5e43a6c65ab4cbc2  gcc/testsuite/gcc.dg/ipa/ipa-sra-16.c
  753b42e64917c559e001079473a5e3da  gcc/testsuite/gcc.dg/ipa/ipa-sra-17.c
  5bfa52612aa66aa0815fb6d0e2c56f76  gcc/testsuite/gcc.dg/ipa/ipa-sra-18.c
! 0cca4729ddf3cef9a725aa2ec8e47d31  gcc/testsuite/gcc.dg/ipa/ipa-sra-19.c
  aecb4d443c0e36e7aeae05f1c05bb7e7  gcc/testsuite/gcc.dg/ipa/ipa-sra-20.c
  9d91845c13739c984e3a0bf0f033475e  gcc/testsuite/gcc.dg/ipa/ipa-sra-21.c
  c4dcb24e809d2cb67d92a9c144ae1d96  gcc/testsuite/gcc.dg/ipa/ipa-sra-22.c
--- 38029,38045 ----
  441ffb1f07bb7afe89ac90ca116d65fd  gcc/testsuite/gcc.dg/ipa/ipa-pta-7.c
  a174f70c19f257c6429f70c5c49a0481  gcc/testsuite/gcc.dg/ipa/ipa-pta-8.c
  62f8de7dbeb66432037449dc1714dace  gcc/testsuite/gcc.dg/ipa/ipa-pta-9.c
! 6f32cb258d9051003957aa96907dc1f0  gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c
  3f2ea636db674fe969911731f3d03b4f  gcc/testsuite/gcc.dg/ipa/ipa-sra-10.c
  9408719454e13143f40c88f342a71f5b  gcc/testsuite/gcc.dg/ipa/ipa-sra-11.c
! a890fd9a6913b8021b0045ab0551aa06  gcc/testsuite/gcc.dg/ipa/ipa-sra-12.c
! f2b1771d90ee671eb68279eeb82ded00  gcc/testsuite/gcc.dg/ipa/ipa-sra-13.c
! a22a9ea301ec4cf7cf708e809af372d2  gcc/testsuite/gcc.dg/ipa/ipa-sra-14.c
! 01ae59726601d410288443c584a90440  gcc/testsuite/gcc.dg/ipa/ipa-sra-15.c
  c5de06a06285e5ac5e43a6c65ab4cbc2  gcc/testsuite/gcc.dg/ipa/ipa-sra-16.c
  753b42e64917c559e001079473a5e3da  gcc/testsuite/gcc.dg/ipa/ipa-sra-17.c
  5bfa52612aa66aa0815fb6d0e2c56f76  gcc/testsuite/gcc.dg/ipa/ipa-sra-18.c
! edc48cb808c71524ba9130fa7b884036  gcc/testsuite/gcc.dg/ipa/ipa-sra-19.c
  aecb4d443c0e36e7aeae05f1c05bb7e7  gcc/testsuite/gcc.dg/ipa/ipa-sra-20.c
  9d91845c13739c984e3a0bf0f033475e  gcc/testsuite/gcc.dg/ipa/ipa-sra-21.c
  c4dcb24e809d2cb67d92a9c144ae1d96  gcc/testsuite/gcc.dg/ipa/ipa-sra-22.c
*************** dd4145a73e33eefafd461f1db2b72973  gcc/te
*** 35370,35376 ****
  f389ed7606a4bab674d66dc4dcbd5533  gcc/testsuite/gcc.dg/ipa/ipa-sra-7.c
  a150c8ee6054d4be6013ea5d81d3f7d8  gcc/testsuite/gcc.dg/ipa/ipa-sra-8.c
  bb00c0c2b31f210548ae62b1328be368  gcc/testsuite/gcc.dg/ipa/ipa-sra-9.c
! 78a45ad2eb3e898266803f670c4548ce  gcc/testsuite/gcc.dg/ipa/ipa.exp
  be5489532ad8117e567e1ea5c8ad4b6a  gcc/testsuite/gcc.dg/ipa/ipacost-1.c
  a1e98f91fdb742af3e542b201d095fcd  gcc/testsuite/gcc.dg/ipa/ipacost-2.c
  cec9083b7567e1f82d50440e7631e86f  gcc/testsuite/gcc.dg/ipa/ipcp-1.c
--- 38049,38055 ----
  f389ed7606a4bab674d66dc4dcbd5533  gcc/testsuite/gcc.dg/ipa/ipa-sra-7.c
  a150c8ee6054d4be6013ea5d81d3f7d8  gcc/testsuite/gcc.dg/ipa/ipa-sra-8.c
  bb00c0c2b31f210548ae62b1328be368  gcc/testsuite/gcc.dg/ipa/ipa-sra-9.c
! 559b374a5ec9e47efe037196a06fd246  gcc/testsuite/gcc.dg/ipa/ipa.exp
  be5489532ad8117e567e1ea5c8ad4b6a  gcc/testsuite/gcc.dg/ipa/ipacost-1.c
  a1e98f91fdb742af3e542b201d095fcd  gcc/testsuite/gcc.dg/ipa/ipacost-2.c
  cec9083b7567e1f82d50440e7631e86f  gcc/testsuite/gcc.dg/ipa/ipcp-1.c
*************** cec9083b7567e1f82d50440e7631e86f  gcc/te
*** 35382,35394 ****
  e43488a98150e7c008bf0103c8e4ce76  gcc/testsuite/gcc.dg/ipa/ipcp-agg-10.c
  d20bf3284a3d9c0d5d1c8fdb45a22923  gcc/testsuite/gcc.dg/ipa/ipcp-agg-11.c
  f130caee5e1d8d48e06a1ae3dd7dc477  gcc/testsuite/gcc.dg/ipa/ipcp-agg-12.c
  c71233f7e2ddb4a8889ca1fe57ea62cc  gcc/testsuite/gcc.dg/ipa/ipcp-agg-2.c
  b30637ee2dfddd2f33e1f6f41de2efa3  gcc/testsuite/gcc.dg/ipa/ipcp-agg-3.c
  4a75430bf24423bed7faf54d834e000d  gcc/testsuite/gcc.dg/ipa/ipcp-agg-4.c
  23c0de326784817a77ed7245787492c2  gcc/testsuite/gcc.dg/ipa/ipcp-agg-5.c
  30e84204197f772ab1add837d69909e2  gcc/testsuite/gcc.dg/ipa/ipcp-agg-6.c
  3cbca90b547c38415ee1ca57ae01192c  gcc/testsuite/gcc.dg/ipa/ipcp-agg-7.c
! f9f38eebb7f74ce6b59c6bc289bb45ef  gcc/testsuite/gcc.dg/ipa/ipcp-agg-8.c
  92494975f86350b030e5c00f76095aa8  gcc/testsuite/gcc.dg/ipa/ipcp-agg-9.c
  24a9ebe968c2d5aad84520657228eb49  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-1.c
  504899d6e8adecbea2a964feab263d64  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-2.c
--- 38061,38074 ----
  e43488a98150e7c008bf0103c8e4ce76  gcc/testsuite/gcc.dg/ipa/ipcp-agg-10.c
  d20bf3284a3d9c0d5d1c8fdb45a22923  gcc/testsuite/gcc.dg/ipa/ipcp-agg-11.c
  f130caee5e1d8d48e06a1ae3dd7dc477  gcc/testsuite/gcc.dg/ipa/ipcp-agg-12.c
+ 3082a67a035dc63460c6f4a03a24bd9c  gcc/testsuite/gcc.dg/ipa/ipcp-agg-13.c
  c71233f7e2ddb4a8889ca1fe57ea62cc  gcc/testsuite/gcc.dg/ipa/ipcp-agg-2.c
  b30637ee2dfddd2f33e1f6f41de2efa3  gcc/testsuite/gcc.dg/ipa/ipcp-agg-3.c
  4a75430bf24423bed7faf54d834e000d  gcc/testsuite/gcc.dg/ipa/ipcp-agg-4.c
  23c0de326784817a77ed7245787492c2  gcc/testsuite/gcc.dg/ipa/ipcp-agg-5.c
  30e84204197f772ab1add837d69909e2  gcc/testsuite/gcc.dg/ipa/ipcp-agg-6.c
  3cbca90b547c38415ee1ca57ae01192c  gcc/testsuite/gcc.dg/ipa/ipcp-agg-7.c
! 91320abdfc34905d8b7cfdc7ff425a61  gcc/testsuite/gcc.dg/ipa/ipcp-agg-8.c
  92494975f86350b030e5c00f76095aa8  gcc/testsuite/gcc.dg/ipa/ipcp-agg-9.c
  24a9ebe968c2d5aad84520657228eb49  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-1.c
  504899d6e8adecbea2a964feab263d64  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-2.c
*************** adfd4fd9a5f3bcdd08a76458f2286a64  gcc/te
*** 35398,35404 ****
--- 38078,38087 ----
  b0e6976d3728dfc604f80cfaf17a5150  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-6.c
  0cdbda40d5cdc9ac180ed340d948e96b  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-7.c
  bbdc28908094ef1ce181532afaf1b2dc  gcc/testsuite/gcc.dg/ipa/ipcp-ii-1.c
+ 7e51de4c9b7b88e115e6f81d3b98eab5  gcc/testsuite/gcc.dg/ipa/ipcp-loophint-1.c
  69364376b4034b0e22099f8f23273a79  gcc/testsuite/gcc.dg/ipa/ipcp-self-recursion-1.c
+ 08e3fcc3d014c7113388adead626f718  gcc/testsuite/gcc.dg/ipa/modref-1.c
+ d183c6f1cbbc46bd9c8e5df2bbcd8795  gcc/testsuite/gcc.dg/ipa/modref-2.c
  80f4453150e9ddcd8976703b7c6ee1f6  gcc/testsuite/gcc.dg/ipa/noclone-1.c
  40bd41302666d56c4edf7330db97920e  gcc/testsuite/gcc.dg/ipa/pr42706.c
  e4887053c792f4f78b03804c148839ce  gcc/testsuite/gcc.dg/ipa/pr45644.c
*************** bed2937b7a1c69360ef16c6961d2ccaa  gcc/te
*** 35459,35464 ****
--- 38142,38148 ----
  0c6f56fe557068a46a84936d90e19109  gcc/testsuite/gcc.dg/ipa/pr96040.c
  b86de70fa3d61ae7370e2d5b1d411d2a  gcc/testsuite/gcc.dg/ipa/pr96482-2.c
  c8075733e6c24014e11973f0f290316e  gcc/testsuite/gcc.dg/ipa/pr96482.c
+ bc385dc79b576cfbb45ee29a9cdd2375  gcc/testsuite/gcc.dg/ipa/pr98222.c
  8294157f7e95bf0310146944166a33f7  gcc/testsuite/gcc.dg/ipa/propalign-1.c
  60d5533330395d9f80d7f318856ba6ab  gcc/testsuite/gcc.dg/ipa/propalign-2.c
  b3c9ac7648ec0372964326c8ec24be99  gcc/testsuite/gcc.dg/ipa/propalign-3.c
*************** fe61754d682bd3ea724a03bb59912cfc  gcc/te
*** 35470,35484 ****
  9047226ecdecd4a9b269044c8c4cf98a  gcc/testsuite/gcc.dg/ipa/propmalloc-1.c
  dec7c68955ba2e2854d7a33876b14525  gcc/testsuite/gcc.dg/ipa/propmalloc-2.c
  dbc052e7584a5974d15a850108b7a2c2  gcc/testsuite/gcc.dg/ipa/propmalloc-3.c
! ca98497030280caafcfee2e0d4a457d5  gcc/testsuite/gcc.dg/ipa/propmalloc-4.c
  d10e652496964c9cb3578e0e41bed200  gcc/testsuite/gcc.dg/ipa/pure-const-1.c
  1f165e75d721f80ecb86c192d412d78a  gcc/testsuite/gcc.dg/ipa/pure-const-2.c
  41c75241d4863185e9a7feee9e7afed9  gcc/testsuite/gcc.dg/ipa/pure-const-3.c
  e402d8a4110cdc5175efd8b02599244a  gcc/testsuite/gcc.dg/ipa/remref-0.c
  841041369faeaf90c82c40eb786fd202  gcc/testsuite/gcc.dg/ipa/remref-1a.c
  df7efbca91e6daf7ca0015336c194c9e  gcc/testsuite/gcc.dg/ipa/remref-1b.c
! a505ff0fdbe6663457bf8c30997a7fb1  gcc/testsuite/gcc.dg/ipa/remref-2a.c
  fcc7dce8774036ba93e1fe9211b4421d  gcc/testsuite/gcc.dg/ipa/remref-2b.c
  dc629ef9342acd1db93ed124df2cb8ca  gcc/testsuite/gcc.dg/ipa/vrp1.c
  7528bdadffdc3cc715527935504b1e45  gcc/testsuite/gcc.dg/ipa/vrp2.c
  4b601248e5b7991bdcf988b06b4a5e1c  gcc/testsuite/gcc.dg/ipa/vrp3.c
--- 38154,38169 ----
  9047226ecdecd4a9b269044c8c4cf98a  gcc/testsuite/gcc.dg/ipa/propmalloc-1.c
  dec7c68955ba2e2854d7a33876b14525  gcc/testsuite/gcc.dg/ipa/propmalloc-2.c
  dbc052e7584a5974d15a850108b7a2c2  gcc/testsuite/gcc.dg/ipa/propmalloc-3.c
! 1a923aef9bd29d9ee0f38c1191572535  gcc/testsuite/gcc.dg/ipa/propmalloc-4.c
  d10e652496964c9cb3578e0e41bed200  gcc/testsuite/gcc.dg/ipa/pure-const-1.c
  1f165e75d721f80ecb86c192d412d78a  gcc/testsuite/gcc.dg/ipa/pure-const-2.c
  41c75241d4863185e9a7feee9e7afed9  gcc/testsuite/gcc.dg/ipa/pure-const-3.c
  e402d8a4110cdc5175efd8b02599244a  gcc/testsuite/gcc.dg/ipa/remref-0.c
  841041369faeaf90c82c40eb786fd202  gcc/testsuite/gcc.dg/ipa/remref-1a.c
  df7efbca91e6daf7ca0015336c194c9e  gcc/testsuite/gcc.dg/ipa/remref-1b.c
! 201a0180936bb9bd03922bc02d69174d  gcc/testsuite/gcc.dg/ipa/remref-2a.c
  fcc7dce8774036ba93e1fe9211b4421d  gcc/testsuite/gcc.dg/ipa/remref-2b.c
+ a3830a9933b209d3afe2e2abf3c4f86c  gcc/testsuite/gcc.dg/ipa/symver1.c
  dc629ef9342acd1db93ed124df2cb8ca  gcc/testsuite/gcc.dg/ipa/vrp1.c
  7528bdadffdc3cc715527935504b1e45  gcc/testsuite/gcc.dg/ipa/vrp2.c
  4b601248e5b7991bdcf988b06b4a5e1c  gcc/testsuite/gcc.dg/ipa/vrp3.c
*************** f2bdfc94f6f8c1dd5a85cf68be8cf616  gcc/te
*** 35492,35502 ****
  19123d30c3be274cc288b04d8c885b48  gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-2.c
  69b33deb6f06bb118a45d7839cc58fbd  gcc/testsuite/gcc.dg/ivdep.c
  8f5983946d28dca5853e89d0aa48b65d  gcc/testsuite/gcc.dg/kpice1.c
! 03e31b5d79582fd6bb46bd25b73405ab  gcc/testsuite/gcc.dg/label-compound-stmt-1.c
  81db0a2d9b61fa43c4d2f3499202cde2  gcc/testsuite/gcc.dg/label-decl-1.c
  71f64125807f2e31f69373e5a00b932f  gcc/testsuite/gcc.dg/label-decl-2.c
  9f42468ab0e00ed45dd47c7abe682195  gcc/testsuite/gcc.dg/label-decl-3.c
! c0fe1413425984add56a46f840b10f20  gcc/testsuite/gcc.dg/label-decl-4.c
  56e420e52ccd1e3a021dabcc09c5f22e  gcc/testsuite/gcc.dg/large-size-array-2.c
  ca3258d951d902a684b95b8e188acdd8  gcc/testsuite/gcc.dg/large-size-array-3.c
  27527b302622d9af41ff4827f8733a60  gcc/testsuite/gcc.dg/large-size-array-4.c
--- 38177,38187 ----
  19123d30c3be274cc288b04d8c885b48  gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-2.c
  69b33deb6f06bb118a45d7839cc58fbd  gcc/testsuite/gcc.dg/ivdep.c
  8f5983946d28dca5853e89d0aa48b65d  gcc/testsuite/gcc.dg/kpice1.c
! 5990816dae34ad9c53d1d550486c56ae  gcc/testsuite/gcc.dg/label-compound-stmt-1.c
  81db0a2d9b61fa43c4d2f3499202cde2  gcc/testsuite/gcc.dg/label-decl-1.c
  71f64125807f2e31f69373e5a00b932f  gcc/testsuite/gcc.dg/label-decl-2.c
  9f42468ab0e00ed45dd47c7abe682195  gcc/testsuite/gcc.dg/label-decl-3.c
! f01bcf013256fbe8552e9f9be79fc5ac  gcc/testsuite/gcc.dg/label-decl-4.c
  56e420e52ccd1e3a021dabcc09c5f22e  gcc/testsuite/gcc.dg/large-size-array-2.c
  ca3258d951d902a684b95b8e188acdd8  gcc/testsuite/gcc.dg/large-size-array-3.c
  27527b302622d9af41ff4827f8733a60  gcc/testsuite/gcc.dg/large-size-array-4.c
*************** bdd0de0807674c3312a2a9e4ff914e19  gcc/te
*** 35524,35531 ****
  a73ede53a12274bacc5436575ebb14b9  gcc/testsuite/gcc.dg/loop-5.c
  46248b6e3d3fc518ebd99c80a4e3053d  gcc/testsuite/gcc.dg/loop-6.c
  81181e904e3cc9185df8b97ccf49c4fe  gcc/testsuite/gcc.dg/loop-7.c
! e7b1fc712a9df56b68ad7360bf67c164  gcc/testsuite/gcc.dg/loop-8.c
! ad2fa27e155e0f90c26c4d258a7ab380  gcc/testsuite/gcc.dg/loop-9.c
  efe590d29d570b6d17bba7b2c21339db  gcc/testsuite/gcc.dg/loop-invariant.c
  77d01b87345e303fc40f590c4f7e7785  gcc/testsuite/gcc.dg/loop-split.c
  f0e629d24084335d828673588da8f712  gcc/testsuite/gcc.dg/loop-unswitch-1.c
--- 38209,38216 ----
  a73ede53a12274bacc5436575ebb14b9  gcc/testsuite/gcc.dg/loop-5.c
  46248b6e3d3fc518ebd99c80a4e3053d  gcc/testsuite/gcc.dg/loop-6.c
  81181e904e3cc9185df8b97ccf49c4fe  gcc/testsuite/gcc.dg/loop-7.c
! 54b70d4a1a7fe07a4e211289374ee108  gcc/testsuite/gcc.dg/loop-8.c
! b9d2d63f3863f74c5f1ce87d23debfe4  gcc/testsuite/gcc.dg/loop-9.c
  efe590d29d570b6d17bba7b2c21339db  gcc/testsuite/gcc.dg/loop-invariant.c
  77d01b87345e303fc40f590c4f7e7785  gcc/testsuite/gcc.dg/loop-split.c
  f0e629d24084335d828673588da8f712  gcc/testsuite/gcc.dg/loop-unswitch-1.c
*************** f0e629d24084335d828673588da8f712  gcc/te
*** 35533,35545 ****
  5611e658293cef38c2f36b45c0ca3c60  gcc/testsuite/gcc.dg/loop-unswitch-3.c
  d8214078fcdabfbd9a9a03bbb8d148b6  gcc/testsuite/gcc.dg/loop-unswitch-4.c
  2d39752c79b0c0ea7239fce439c7994a  gcc/testsuite/gcc.dg/loop-unswitch-5.c
! b71636602f93ce85ce9b6b01ca504b61  gcc/testsuite/gcc.dg/loop-versioning-1.c
  bd95b8dcfe2066017e9ab3bf65e6e8ab  gcc/testsuite/gcc.dg/loop-versioning-10.c
  698864ba149cf54cee29fc9f1a7b4a41  gcc/testsuite/gcc.dg/loop-versioning-11.c
  1257deacf83923b37acba7e4a8901831  gcc/testsuite/gcc.dg/loop-versioning-12.c
  bfc67e7535e86e06549402899e8ac93f  gcc/testsuite/gcc.dg/loop-versioning-13.c
  9c32704b232ab3c8787f607b0cc42c3d  gcc/testsuite/gcc.dg/loop-versioning-14.c
! 4891e5626d7f0b587a4150e8d78515f4  gcc/testsuite/gcc.dg/loop-versioning-2.c
  85c4ff94e81682a9e8d76bd9b0191d28  gcc/testsuite/gcc.dg/loop-versioning-3.c
  66d29c3b39f4e68e6266a0c6004334e6  gcc/testsuite/gcc.dg/loop-versioning-4.c
  e81d04faee8838d4f176f04b73de78ae  gcc/testsuite/gcc.dg/loop-versioning-5.c
--- 38218,38230 ----
  5611e658293cef38c2f36b45c0ca3c60  gcc/testsuite/gcc.dg/loop-unswitch-3.c
  d8214078fcdabfbd9a9a03bbb8d148b6  gcc/testsuite/gcc.dg/loop-unswitch-4.c
  2d39752c79b0c0ea7239fce439c7994a  gcc/testsuite/gcc.dg/loop-unswitch-5.c
! feb7653457a5455ad23c2e8cbfda5890  gcc/testsuite/gcc.dg/loop-versioning-1.c
  bd95b8dcfe2066017e9ab3bf65e6e8ab  gcc/testsuite/gcc.dg/loop-versioning-10.c
  698864ba149cf54cee29fc9f1a7b4a41  gcc/testsuite/gcc.dg/loop-versioning-11.c
  1257deacf83923b37acba7e4a8901831  gcc/testsuite/gcc.dg/loop-versioning-12.c
  bfc67e7535e86e06549402899e8ac93f  gcc/testsuite/gcc.dg/loop-versioning-13.c
  9c32704b232ab3c8787f607b0cc42c3d  gcc/testsuite/gcc.dg/loop-versioning-14.c
! 4454baafd2fef627abb5d4716c440431  gcc/testsuite/gcc.dg/loop-versioning-2.c
  85c4ff94e81682a9e8d76bd9b0191d28  gcc/testsuite/gcc.dg/loop-versioning-3.c
  66d29c3b39f4e68e6266a0c6004334e6  gcc/testsuite/gcc.dg/loop-versioning-4.c
  e81d04faee8838d4f176f04b73de78ae  gcc/testsuite/gcc.dg/loop-versioning-5.c
*************** a6d38702f1b4b6a4dfc3fc0251fc96b5  gcc/te
*** 35583,35589 ****
  8bd12f725b12849f17015be26ce113ae  gcc/testsuite/gcc.dg/lto/20081204-1_0.c
  e50e47906c1bd8ffda0eb174e5e3618f  gcc/testsuite/gcc.dg/lto/20081204-1_1.c
  c1d003ba15f104ca34ab08f9fe3f1035  gcc/testsuite/gcc.dg/lto/20081204-2_0.c
! 32fe7d3c8be4a8d6df2caece30b8ab01  gcc/testsuite/gcc.dg/lto/20081210-1_0.c
  b9ab795ec4762824f5c6ef2cf50c032c  gcc/testsuite/gcc.dg/lto/20081212-1_0.c
  d01e029546f9af5f82e234a6a64ef08a  gcc/testsuite/gcc.dg/lto/20081222_0.c
  0676ddd064d1201488002b1d2b4f7918  gcc/testsuite/gcc.dg/lto/20081222_0.h
--- 38268,38274 ----
  8bd12f725b12849f17015be26ce113ae  gcc/testsuite/gcc.dg/lto/20081204-1_0.c
  e50e47906c1bd8ffda0eb174e5e3618f  gcc/testsuite/gcc.dg/lto/20081204-1_1.c
  c1d003ba15f104ca34ab08f9fe3f1035  gcc/testsuite/gcc.dg/lto/20081204-2_0.c
! 9815e43fbe682cc9a41c49229f9759ab  gcc/testsuite/gcc.dg/lto/20081210-1_0.c
  b9ab795ec4762824f5c6ef2cf50c032c  gcc/testsuite/gcc.dg/lto/20081212-1_0.c
  d01e029546f9af5f82e234a6a64ef08a  gcc/testsuite/gcc.dg/lto/20081222_0.c
  0676ddd064d1201488002b1d2b4f7918  gcc/testsuite/gcc.dg/lto/20081222_0.h
*************** e22501e605edeaceeca043b437e49ba9  gcc/te
*** 35718,35726 ****
  5afe5712f0eec3e1317099cf354d0a38  gcc/testsuite/gcc.dg/lto/ipareference2_1.c
  744ef838cd191f7a2544697bf8f124dd  gcc/testsuite/gcc.dg/lto/ipareference_0.c
  798f96b8b3130da03f51bfae27df4189  gcc/testsuite/gcc.dg/lto/ipareference_1.c
! 52f64a51a3a7bc90356a72c197f82e06  gcc/testsuite/gcc.dg/lto/lto.exp
  b9cc7cb6d7d65f984ee0a8985b8e0e6e  gcc/testsuite/gcc.dg/lto/materialize-1_0.c
  4c9f4a6440d7bd9fa3f564ee6b91b50c  gcc/testsuite/gcc.dg/lto/materialize-1_1.c
  e1bd2be5006d2bb7a3b670af0868ffeb  gcc/testsuite/gcc.dg/lto/noreturn-1_0.c
  2472b5bc8466fe62188232d9fbcd9de6  gcc/testsuite/gcc.dg/lto/noreturn-1_1.c
  5192817b2492ca93ffadce3b4a5e4794  gcc/testsuite/gcc.dg/lto/pr27898_0.c
--- 38403,38418 ----
  5afe5712f0eec3e1317099cf354d0a38  gcc/testsuite/gcc.dg/lto/ipareference2_1.c
  744ef838cd191f7a2544697bf8f124dd  gcc/testsuite/gcc.dg/lto/ipareference_0.c
  798f96b8b3130da03f51bfae27df4189  gcc/testsuite/gcc.dg/lto/ipareference_1.c
! 9e284bd0509b1d06473326a217f20431  gcc/testsuite/gcc.dg/lto/lto.exp
  b9cc7cb6d7d65f984ee0a8985b8e0e6e  gcc/testsuite/gcc.dg/lto/materialize-1_0.c
  4c9f4a6440d7bd9fa3f564ee6b91b50c  gcc/testsuite/gcc.dg/lto/materialize-1_1.c
+ ae3d0968e71a8445a5ea662452d0f5ce  gcc/testsuite/gcc.dg/lto/modref-1_0.c
+ 99c5a2a8670ef4b0b82cb919884648f5  gcc/testsuite/gcc.dg/lto/modref-1_1.c
+ f98a566b3b2ff6733ed676024f2fb9f5  gcc/testsuite/gcc.dg/lto/modref-2_0.c
+ 145df956c13695b4a6660704689918a4  gcc/testsuite/gcc.dg/lto/modref-3_0.c
+ 1eb5a5a9618f46e44dc9d6ee2a4c8bc4  gcc/testsuite/gcc.dg/lto/modref-3_1.c
+ 60ed48f5681cb57ecd7f0534237beae1  gcc/testsuite/gcc.dg/lto/modref-4_0.c
+ 1eb5a5a9618f46e44dc9d6ee2a4c8bc4  gcc/testsuite/gcc.dg/lto/modref-4_1.c
  e1bd2be5006d2bb7a3b670af0868ffeb  gcc/testsuite/gcc.dg/lto/noreturn-1_0.c
  2472b5bc8466fe62188232d9fbcd9de6  gcc/testsuite/gcc.dg/lto/noreturn-1_1.c
  5192817b2492ca93ffadce3b4a5e4794  gcc/testsuite/gcc.dg/lto/pr27898_0.c
*************** f0cc31467a1c670b2da39f6277514bab  gcc/te
*** 35746,35752 ****
  2fa784dc45cba9ef34bcc21e141f0a25  gcc/testsuite/gcc.dg/lto/pr50199_0.c
  626442299a26bfdc323c3151d4aa1295  gcc/testsuite/gcc.dg/lto/pr51572-1_0.c
  17ec4e902d17c5db06dbf5148d4d79c3  gcc/testsuite/gcc.dg/lto/pr52097_0.c
! 2f20a2038afae2dcd4adc8afcdeb4ac9  gcc/testsuite/gcc.dg/lto/pr52634_0.c
  451433792d1515db3ac7fce3181f2c9c  gcc/testsuite/gcc.dg/lto/pr52634_1.c
  a64fcd8b9752e9274bf113e4f8c66522  gcc/testsuite/gcc.dg/lto/pr53214_0.c
  29ec2433c8fcc6971a9c77da7bcb77c5  gcc/testsuite/gcc.dg/lto/pr53470_0.c
--- 38438,38444 ----
  2fa784dc45cba9ef34bcc21e141f0a25  gcc/testsuite/gcc.dg/lto/pr50199_0.c
  626442299a26bfdc323c3151d4aa1295  gcc/testsuite/gcc.dg/lto/pr51572-1_0.c
  17ec4e902d17c5db06dbf5148d4d79c3  gcc/testsuite/gcc.dg/lto/pr52097_0.c
! 7bf469c678672ca134fdc1480e8c9979  gcc/testsuite/gcc.dg/lto/pr52634_0.c
  451433792d1515db3ac7fce3181f2c9c  gcc/testsuite/gcc.dg/lto/pr52634_1.c
  a64fcd8b9752e9274bf113e4f8c66522  gcc/testsuite/gcc.dg/lto/pr53214_0.c
  29ec2433c8fcc6971a9c77da7bcb77c5  gcc/testsuite/gcc.dg/lto/pr53470_0.c
*************** cadb853e8a229ea635708ea4fe3282d0  gcc/te
*** 35817,35824 ****
  ebb801f97326701c44c33bb719490703  gcc/testsuite/gcc.dg/lto/pr84212_1.c
  8162c65a97b9ede53ca0cc0684a3d0db  gcc/testsuite/gcc.dg/lto/pr85248_0.c
  f67a44e9e2f963084509149bec7655af  gcc/testsuite/gcc.dg/lto/pr85248_1.c
! 08bf120a6e68c8f6fce5e05793bbc9fa  gcc/testsuite/gcc.dg/lto/pr85870_0.c
! 5969b40c75df99060467e77f601a2d34  gcc/testsuite/gcc.dg/lto/pr85870_1.c
  39b1acb86d4ff0131276667f2bbd4586  gcc/testsuite/gcc.dg/lto/pr88077_0.c
  833668f47a5741405cf53fc58d31d1bc  gcc/testsuite/gcc.dg/lto/pr88077_1.c
  c51c424cae679b65a2dc52ea3ddc96d9  gcc/testsuite/gcc.dg/lto/pr88297_0.c
--- 38509,38516 ----
  ebb801f97326701c44c33bb719490703  gcc/testsuite/gcc.dg/lto/pr84212_1.c
  8162c65a97b9ede53ca0cc0684a3d0db  gcc/testsuite/gcc.dg/lto/pr85248_0.c
  f67a44e9e2f963084509149bec7655af  gcc/testsuite/gcc.dg/lto/pr85248_1.c
! 282f07e58b4588a8dc30a94934177fbd  gcc/testsuite/gcc.dg/lto/pr85870_0.c
! 0ad0dd21ac624ed6e82cfbb6d23cba67  gcc/testsuite/gcc.dg/lto/pr85870_1.c
  39b1acb86d4ff0131276667f2bbd4586  gcc/testsuite/gcc.dg/lto/pr88077_0.c
  833668f47a5741405cf53fc58d31d1bc  gcc/testsuite/gcc.dg/lto/pr88077_1.c
  c51c424cae679b65a2dc52ea3ddc96d9  gcc/testsuite/gcc.dg/lto/pr88297_0.c
*************** c309c8ae6654d9b080cc8e4c515fe8cd  gcc/te
*** 35837,35842 ****
--- 38529,38535 ----
  591d1ea1c066ef2f917ef419621926d5  gcc/testsuite/gcc.dg/lto/pr96291_0.c
  a03a5109c087726181cf7cc2241d1a9e  gcc/testsuite/gcc.dg/lto/pr96291_1.c
  2c4d5bcbee8d58ebb771293492990293  gcc/testsuite/gcc.dg/lto/pr96291_2.c
+ b993f9b2f252c1617164dd903ffe1c62  gcc/testsuite/gcc.dg/lto/pr99849_0.c
  260506c568e35bc49112021166edf8f2  gcc/testsuite/gcc.dg/lto/resolutions_0.c
  1084184a9b11a84eee39ef130211f70b  gcc/testsuite/gcc.dg/lto/save-temps_0.c
  46d188c0319bf02d664cc2c49c9df2ef  gcc/testsuite/gcc.dg/lto/simd-function_0.c
*************** a03a5109c087726181cf7cc2241d1a9e  gcc/te
*** 35847,35852 ****
--- 38540,38546 ----
  0e1956cbb4feeb82617d27801e1217f5  gcc/testsuite/gcc.dg/lto/trans-mem-3_1.c
  3f4f42d8a6ea686d4fc6a621928696a8  gcc/testsuite/gcc.dg/lto/trans-mem.h
  bb33ae9bc565e9343ec22c20a7d80673  gcc/testsuite/gcc.dg/lvalue-10.c
+ 45406e1128ab65439e139de6398ea17c  gcc/testsuite/gcc.dg/lvalue-11.c
  55e7ecc5e6daac4264360b5c2cfefd6a  gcc/testsuite/gcc.dg/lvalue-2.c
  3f986b8c468019f59a0dbac1cf1f5456  gcc/testsuite/gcc.dg/lvalue-3.c
  7e928709f9ac83687f00001e3069ab33  gcc/testsuite/gcc.dg/lvalue-4.c
*************** a9c2bd4786300d7cf805e7ef57335a2c  gcc/te
*** 35866,35872 ****
--- 38560,38574 ----
  5fffcdfefb3c530e1b472e8397d647cb  gcc/testsuite/gcc.dg/march.c
  797c5b8279b119e196b60ddd82ff6200  gcc/testsuite/gcc.dg/max-1.c
  1a4cdf01852ee814e663ce4a12f81332  gcc/testsuite/gcc.dg/max.c
+ 2eb99e685dc27ff7c74d04a147795043  gcc/testsuite/gcc.dg/memchr-2.c
+ 22d582a2726627f54daf4ef1cdde49e6  gcc/testsuite/gcc.dg/memchr-3.c
+ 50174301b6b17b4a9ea31e39ba46f71b  gcc/testsuite/gcc.dg/memchr.c
  a7970b17f2cd70d5522f097145c9da58  gcc/testsuite/gcc.dg/memcmp-1.c
+ d46511208ba88b755c518bb5aa8112c3  gcc/testsuite/gcc.dg/memcmp-2.c
+ ef60e5ad992554e817a42639054472bc  gcc/testsuite/gcc.dg/memcmp-3.c
+ 30c111f00536fce8bf5c9fddb92630a8  gcc/testsuite/gcc.dg/memcmp-4.c
+ 0f2861fb7f169ea38d93b906ca4c9be4  gcc/testsuite/gcc.dg/memcmp-5.c
+ 266bcafb43c75b9093bb22aaad2ac8d7  gcc/testsuite/gcc.dg/memcmp-6.c
  1aec67524677666247b9d665f7873461  gcc/testsuite/gcc.dg/memcmp-pr95189.c
  27c87483c7fcbea0947ee744dcfb316a  gcc/testsuite/gcc.dg/memcpy-1.c
  8e6769f9d74d9d0099ca1a2532fd72e8  gcc/testsuite/gcc.dg/memcpy-2.c
*************** f95475da948bd44dcc9bae1ad2414546  gcc/te
*** 35888,35901 ****
  6410d45d6ed38a3521f96d65e24a2af8  gcc/testsuite/gcc.dg/misaligned-expand-2.c
  923683a8c110499ae2eb20741b12c036  gcc/testsuite/gcc.dg/misaligned-expand-3.c
  57628fdb5f5ff0b073fc5593a705ec5d  gcc/testsuite/gcc.dg/misc-column.c
! 6e919fe3137d37dd15559904d67a97d2  gcc/testsuite/gcc.dg/mismatch-decl-1.c
  92c08397a16ba624a215e17607fb2894  gcc/testsuite/gcc.dg/missing-field-init-1.c
  1985016e3939b7a19fcb706dace00051  gcc/testsuite/gcc.dg/missing-field-init-2.c
  12013d66b5c707c34bc03444452cbb4f  gcc/testsuite/gcc.dg/missing-header-fixit-1.c
  7c63ea085d710c6e7ee71f21c9a986d2  gcc/testsuite/gcc.dg/missing-header-fixit-2.c
  2c267a2b2b580b8eccb468b5081a094b  gcc/testsuite/gcc.dg/missing-header-fixit-2.h
! efa67805f79b5a328c5b0c8697e1b262  gcc/testsuite/gcc.dg/missing-header-fixit-3.c
! 043bb8c295319d73b39b326252f5e840  gcc/testsuite/gcc.dg/missing-header-fixit-4.c
  330c9a6cac31c8da3e7d9b86dff18542  gcc/testsuite/gcc.dg/missing-symbol-2.c
  51c49aa571a9f83a1ef09aa2de4ed0ff  gcc/testsuite/gcc.dg/missing-symbol-3.c
  a9d25b005316d831dbd591be8a92f08e  gcc/testsuite/gcc.dg/mmix-1.c
--- 38590,38604 ----
  6410d45d6ed38a3521f96d65e24a2af8  gcc/testsuite/gcc.dg/misaligned-expand-2.c
  923683a8c110499ae2eb20741b12c036  gcc/testsuite/gcc.dg/misaligned-expand-3.c
  57628fdb5f5ff0b073fc5593a705ec5d  gcc/testsuite/gcc.dg/misc-column.c
! 86112c3416ca6ddc642a2921ee1be969  gcc/testsuite/gcc.dg/mismatch-decl-1.c
  92c08397a16ba624a215e17607fb2894  gcc/testsuite/gcc.dg/missing-field-init-1.c
  1985016e3939b7a19fcb706dace00051  gcc/testsuite/gcc.dg/missing-field-init-2.c
  12013d66b5c707c34bc03444452cbb4f  gcc/testsuite/gcc.dg/missing-header-fixit-1.c
  7c63ea085d710c6e7ee71f21c9a986d2  gcc/testsuite/gcc.dg/missing-header-fixit-2.c
  2c267a2b2b580b8eccb468b5081a094b  gcc/testsuite/gcc.dg/missing-header-fixit-2.h
! 65ee2fa6df47f63f7ce45b35524d91db  gcc/testsuite/gcc.dg/missing-header-fixit-3.c
! fd9a07883bf331e887ea8e84e77f18b0  gcc/testsuite/gcc.dg/missing-header-fixit-4.c
! 1359a99d082fddcfcc0811bf3c32500c  gcc/testsuite/gcc.dg/missing-header-fixit-5.c
  330c9a6cac31c8da3e7d9b86dff18542  gcc/testsuite/gcc.dg/missing-symbol-2.c
  51c49aa571a9f83a1ef09aa2de4ed0ff  gcc/testsuite/gcc.dg/missing-symbol-3.c
  a9d25b005316d831dbd591be8a92f08e  gcc/testsuite/gcc.dg/mmix-1.c
*************** c277f277d0df3dd537cf20409167e023  gcc/te
*** 35921,35928 ****
  9b2b87a837afbb3185b68584c224938c  gcc/testsuite/gcc.dg/nested-func-8.c
  a43584a2eaad726a7d3c7a5adf915002  gcc/testsuite/gcc.dg/nested-func-9.c
  a2066a54fee8d64eae2217ae9213f31d  gcc/testsuite/gcc.dg/nested-redef-1.c
! 3c81a033e732e84a3e88876d96ab1aaf  gcc/testsuite/gcc.dg/nextafter-1.c
! e5dd77e4a95f6b53d5c1d74ae5f07ba2  gcc/testsuite/gcc.dg/nextafter-2.c
  3ccb5f1eba3e08b1f570b976cd81bc4e  gcc/testsuite/gcc.dg/nextafter-3.c
  e1581391abb15b40bfbf5a9b7a595751  gcc/testsuite/gcc.dg/nextafter-4.c
  e8255bac3070048e52262e26f2c7ed89  gcc/testsuite/gcc.dg/no-asm-1.c
--- 38624,38631 ----
  9b2b87a837afbb3185b68584c224938c  gcc/testsuite/gcc.dg/nested-func-8.c
  a43584a2eaad726a7d3c7a5adf915002  gcc/testsuite/gcc.dg/nested-func-9.c
  a2066a54fee8d64eae2217ae9213f31d  gcc/testsuite/gcc.dg/nested-redef-1.c
! ab68fd8380d760fb702d59b8bfe85afe  gcc/testsuite/gcc.dg/nextafter-1.c
! e161d73e86fd34ba326047d5aa5bcd5a  gcc/testsuite/gcc.dg/nextafter-2.c
  3ccb5f1eba3e08b1f570b976cd81bc4e  gcc/testsuite/gcc.dg/nextafter-3.c
  e1581391abb15b40bfbf5a9b7a595751  gcc/testsuite/gcc.dg/nextafter-4.c
  e8255bac3070048e52262e26f2c7ed89  gcc/testsuite/gcc.dg/no-asm-1.c
*************** d47cf367b72e67703ed942516a4d7567  gcc/te
*** 35936,35947 ****
  ce4c34de4dfa5a13c4781f9411d56243  gcc/testsuite/gcc.dg/no-strict-overflow-1.c
  94daa25494d68754da018661791bec28  gcc/testsuite/gcc.dg/no-strict-overflow-2.c
  350f9cd3a4dfdb64fea6016fbf8ab901  gcc/testsuite/gcc.dg/no-strict-overflow-3.c
! 0ef58b0e4c547ce0c03474c6b295cf5d  gcc/testsuite/gcc.dg/no-strict-overflow-4.c
  a147f3e7709103de771c96fda2d5b9f5  gcc/testsuite/gcc.dg/no-strict-overflow-5.c
  f6f749bfbd33a9e9e95102c823d14bb8  gcc/testsuite/gcc.dg/no-strict-overflow-6.c
  38efcc6f4ba9295a5561e449519b5c21  gcc/testsuite/gcc.dg/no-strict-overflow-7.c
  5a420286281e2790c2a3c0f4f6987137  gcc/testsuite/gcc.dg/no-strict-overflow-8.c
! 6aa2bab2227fba96845ccecd6d5391ff  gcc/testsuite/gcc.dg/no_profile_instrument_function-attr-1.c
  4142b2322a75b23f47a3f63e7bf6f75f  gcc/testsuite/gcc.dg/nodfp-1.c
  7193a17ae405f52ff74ec32ff455a959  gcc/testsuite/gcc.dg/nofixed-point-1.c
  ec19a8b1730f75c32f41e4a1b24c99f8  gcc/testsuite/gcc.dg/nofixed-point-2.c
--- 38639,38650 ----
  ce4c34de4dfa5a13c4781f9411d56243  gcc/testsuite/gcc.dg/no-strict-overflow-1.c
  94daa25494d68754da018661791bec28  gcc/testsuite/gcc.dg/no-strict-overflow-2.c
  350f9cd3a4dfdb64fea6016fbf8ab901  gcc/testsuite/gcc.dg/no-strict-overflow-3.c
! 455894d9d53907643c7655aece59251c  gcc/testsuite/gcc.dg/no-strict-overflow-4.c
  a147f3e7709103de771c96fda2d5b9f5  gcc/testsuite/gcc.dg/no-strict-overflow-5.c
  f6f749bfbd33a9e9e95102c823d14bb8  gcc/testsuite/gcc.dg/no-strict-overflow-6.c
  38efcc6f4ba9295a5561e449519b5c21  gcc/testsuite/gcc.dg/no-strict-overflow-7.c
  5a420286281e2790c2a3c0f4f6987137  gcc/testsuite/gcc.dg/no-strict-overflow-8.c
! 3f209578f6c6e9b7f7b3d81ccb8df4a7  gcc/testsuite/gcc.dg/no_profile_instrument_function-attr-1.c
  4142b2322a75b23f47a3f63e7bf6f75f  gcc/testsuite/gcc.dg/nodfp-1.c
  7193a17ae405f52ff74ec32ff455a959  gcc/testsuite/gcc.dg/nofixed-point-1.c
  ec19a8b1730f75c32f41e4a1b24c99f8  gcc/testsuite/gcc.dg/nofixed-point-2.c
*************** b054d23fd7d868a509aeb363dc7e8ffc  gcc/te
*** 35996,36013 ****
  816b6759ae933f803099070549d0e06e  gcc/testsuite/gcc.dg/noncompile/invalid_asm.c
  67db74b19085ff950f0aaafaec250ef4  gcc/testsuite/gcc.dg/noncompile/label-1.c
  158d88cfb97dd38de0cb17ccc39f3d5e  gcc/testsuite/gcc.dg/noncompile/label-lineno-1.c
! bf0cbf532df76d6b0bf410af72572445  gcc/testsuite/gcc.dg/noncompile/noncompile.exp
  415c039abdab8437275df71102cc5113  gcc/testsuite/gcc.dg/noncompile/old-style-parm-1.c
  6ccdd7958d053743fbd68691650b1b61  gcc/testsuite/gcc.dg/noncompile/old-style-parm-2.c
  dc03b56a3d101a6001179c75ccbd6723  gcc/testsuite/gcc.dg/noncompile/old-style-parm-3.c
  1f73d14d777c3ea372a5513b43f3d381  gcc/testsuite/gcc.dg/noncompile/pr23576.c
  0e07b611152ff8a883725895e8652202  gcc/testsuite/gcc.dg/noncompile/pr30552-1.c
  55e6fa3ed3a4e7aa4637f5ba6390db3a  gcc/testsuite/gcc.dg/noncompile/pr30552-2.c
! 244dd2c103641051763a1900d5c6df96  gcc/testsuite/gcc.dg/noncompile/pr30552-3.c
  734a0772ca3d8eb2d2979628e29d6f8e  gcc/testsuite/gcc.dg/noncompile/pr30552-4.c
  5a2c3316d076f8d48f24609d416f7516  gcc/testsuite/gcc.dg/noncompile/pr35444-1.c
  f7b0583ef99de8104eb364054c2ab1ae  gcc/testsuite/gcc.dg/noncompile/pr35444-2.c
! 53642b43ce97a6d3b46ed9cde9d811ae  gcc/testsuite/gcc.dg/noncompile/pr35447-1.c
  eebc988665ccd52c01692b6d73fdf1a7  gcc/testsuite/gcc.dg/noncompile/pr40033-1.c
  de304718b009b210b30f573b7fc0491d  gcc/testsuite/gcc.dg/noncompile/pr44517.c
  0c6d70d2240eeb85a465c0d349792a78  gcc/testsuite/gcc.dg/noncompile/pr52290.c
--- 38699,38716 ----
  816b6759ae933f803099070549d0e06e  gcc/testsuite/gcc.dg/noncompile/invalid_asm.c
  67db74b19085ff950f0aaafaec250ef4  gcc/testsuite/gcc.dg/noncompile/label-1.c
  158d88cfb97dd38de0cb17ccc39f3d5e  gcc/testsuite/gcc.dg/noncompile/label-lineno-1.c
! 6c5909e27e6785c015eb6c3e68dde2c5  gcc/testsuite/gcc.dg/noncompile/noncompile.exp
  415c039abdab8437275df71102cc5113  gcc/testsuite/gcc.dg/noncompile/old-style-parm-1.c
  6ccdd7958d053743fbd68691650b1b61  gcc/testsuite/gcc.dg/noncompile/old-style-parm-2.c
  dc03b56a3d101a6001179c75ccbd6723  gcc/testsuite/gcc.dg/noncompile/old-style-parm-3.c
  1f73d14d777c3ea372a5513b43f3d381  gcc/testsuite/gcc.dg/noncompile/pr23576.c
  0e07b611152ff8a883725895e8652202  gcc/testsuite/gcc.dg/noncompile/pr30552-1.c
  55e6fa3ed3a4e7aa4637f5ba6390db3a  gcc/testsuite/gcc.dg/noncompile/pr30552-2.c
! 6caacb02271620a61da9c3adca21721a  gcc/testsuite/gcc.dg/noncompile/pr30552-3.c
  734a0772ca3d8eb2d2979628e29d6f8e  gcc/testsuite/gcc.dg/noncompile/pr30552-4.c
  5a2c3316d076f8d48f24609d416f7516  gcc/testsuite/gcc.dg/noncompile/pr35444-1.c
  f7b0583ef99de8104eb364054c2ab1ae  gcc/testsuite/gcc.dg/noncompile/pr35444-2.c
! 7739d5f83caa9ace25f4e6018f17c9ca  gcc/testsuite/gcc.dg/noncompile/pr35447-1.c
  eebc988665ccd52c01692b6d73fdf1a7  gcc/testsuite/gcc.dg/noncompile/pr40033-1.c
  de304718b009b210b30f573b7fc0491d  gcc/testsuite/gcc.dg/noncompile/pr44517.c
  0c6d70d2240eeb85a465c0d349792a78  gcc/testsuite/gcc.dg/noncompile/pr52290.c
*************** e9c4b9ac1764f109629be29afe89e235  gcc/te
*** 36019,36025 ****
  9d1dbbc7954243ba6f9b868a5f7cc3c6  gcc/testsuite/gcc.dg/noncompile/pr71573.c
  3154e833a0a327060d844cfeac7df988  gcc/testsuite/gcc.dg/noncompile/pr71583.c
  795fb0aea23fa4679ac66c15370f8f54  gcc/testsuite/gcc.dg/noncompile/pr71853.c
! e79b5406b668c3dd78ff842425edfbd9  gcc/testsuite/gcc.dg/noncompile/pr79758.c
  9dcbfb000a62c03db07cd7dfcc272eae  gcc/testsuite/gcc.dg/noncompile/pr81289.c
  7e17434473e72d99de0e53837884085d  gcc/testsuite/gcc.dg/noncompile/redecl-1.c
  efd9f24faf3a5e574722522b379e34c7  gcc/testsuite/gcc.dg/noncompile/scope.c
--- 38722,38728 ----
  9d1dbbc7954243ba6f9b868a5f7cc3c6  gcc/testsuite/gcc.dg/noncompile/pr71573.c
  3154e833a0a327060d844cfeac7df988  gcc/testsuite/gcc.dg/noncompile/pr71583.c
  795fb0aea23fa4679ac66c15370f8f54  gcc/testsuite/gcc.dg/noncompile/pr71853.c
! d6215827f1b3ddeacd3b48d1d8b16bd5  gcc/testsuite/gcc.dg/noncompile/pr79758.c
  9dcbfb000a62c03db07cd7dfcc272eae  gcc/testsuite/gcc.dg/noncompile/pr81289.c
  7e17434473e72d99de0e53837884085d  gcc/testsuite/gcc.dg/noncompile/redecl-1.c
  efd9f24faf3a5e574722522b379e34c7  gcc/testsuite/gcc.dg/noncompile/scope.c
*************** fb2a64e28af210271512e32c8451c2f2  gcc/te
*** 36056,36062 ****
  10be65139df5ded9ef15f510eb2931c3  gcc/testsuite/gcc.dg/old-style-prom-1.c
  9d188d619e18f73aeccc6718f2c7b5f0  gcc/testsuite/gcc.dg/old-style-prom-2.c
  a4430e8a6755e6674402bd05861a1795  gcc/testsuite/gcc.dg/old-style-prom-3.c
! 7253e0256fcfeb4190a77f791b0cef0c  gcc/testsuite/gcc.dg/old-style-then-proto-1.c
  9229783a7729cb3f6f4f0b077a88d856  gcc/testsuite/gcc.dg/optimize-bswapdi-1.c
  55af7e911ccccfb767841b02434c6aad  gcc/testsuite/gcc.dg/optimize-bswapdi-2.c
  2411cd50c6b3a2f2c92ef4ec97287013  gcc/testsuite/gcc.dg/optimize-bswapdi-3.c
--- 38759,38765 ----
  10be65139df5ded9ef15f510eb2931c3  gcc/testsuite/gcc.dg/old-style-prom-1.c
  9d188d619e18f73aeccc6718f2c7b5f0  gcc/testsuite/gcc.dg/old-style-prom-2.c
  a4430e8a6755e6674402bd05861a1795  gcc/testsuite/gcc.dg/old-style-prom-3.c
! a0182c7350fe1a90fff285e2b2b1c85b  gcc/testsuite/gcc.dg/old-style-then-proto-1.c
  9229783a7729cb3f6f4f0b077a88d856  gcc/testsuite/gcc.dg/optimize-bswapdi-1.c
  55af7e911ccccfb767841b02434c6aad  gcc/testsuite/gcc.dg/optimize-bswapdi-2.c
  2411cd50c6b3a2f2c92ef4ec97287013  gcc/testsuite/gcc.dg/optimize-bswapdi-3.c
*************** b817ca627688575b94c9dba877cb008f  gcc/te
*** 36102,36108 ****
  ddeb76cd34e791893c0f539fdab879bb  gcc/testsuite/gcc.dg/params/LICENSE
  dbe49534045bebcd393d3d0d5ccec28a  gcc/testsuite/gcc.dg/params/README
  86dede4ba9e425e8357eeabd89e5a7a9  gcc/testsuite/gcc.dg/params/blocksort-part.c
! 83678f5582c07e2bc1abd8b407baac82  gcc/testsuite/gcc.dg/params/params.exp
  2bfe07faa645e00622fecd5d6eb93e5d  gcc/testsuite/gcc.dg/parm-forwdecl-1.c
  64cab05bc7533e03a76ec901dec2853f  gcc/testsuite/gcc.dg/parm-forwdecl-2.c
  acdeeb693086bdb4ca6cdde57d9eb91d  gcc/testsuite/gcc.dg/parm-forwdecl-3.c
--- 38805,38811 ----
  ddeb76cd34e791893c0f539fdab879bb  gcc/testsuite/gcc.dg/params/LICENSE
  dbe49534045bebcd393d3d0d5ccec28a  gcc/testsuite/gcc.dg/params/README
  86dede4ba9e425e8357eeabd89e5a7a9  gcc/testsuite/gcc.dg/params/blocksort-part.c
! 5ab219074e38892ef3d64071bce6d29c  gcc/testsuite/gcc.dg/params/params.exp
  2bfe07faa645e00622fecd5d6eb93e5d  gcc/testsuite/gcc.dg/parm-forwdecl-1.c
  64cab05bc7533e03a76ec901dec2853f  gcc/testsuite/gcc.dg/parm-forwdecl-2.c
  acdeeb693086bdb4ca6cdde57d9eb91d  gcc/testsuite/gcc.dg/parm-forwdecl-3.c
*************** acdeeb693086bdb4ca6cdde57d9eb91d  gcc/te
*** 36111,36119 ****
  7e69b60a64c1d1dc0dae6a9c39bd12e9  gcc/testsuite/gcc.dg/parm-impl-decl-2.c
  15859198e4fe3d67c71e1ece95a10f7f  gcc/testsuite/gcc.dg/parm-impl-decl-3.c
  e13b33decc89989d8524adc6f37e6da0  gcc/testsuite/gcc.dg/parm-incomplete-1.c
! b3a17a1a759dc0417138eefd59b03fe6  gcc/testsuite/gcc.dg/parm-mismatch-1.c
  1ee87658e00ffbf9d7c7c348af6c7dba  gcc/testsuite/gcc.dg/parse-decl-after-if.c
! fa598623a13d041436d645d1ecc87ea1  gcc/testsuite/gcc.dg/parse-decl-after-label.c
  f72962480c7f89db1094a6e142c894f6  gcc/testsuite/gcc.dg/parse-else-error-2.c
  24fe050f598cf05f953294cfba501e86  gcc/testsuite/gcc.dg/parse-else-error-3.c
  6594a4e3ae8ecb9049eeba55c4c89cc7  gcc/testsuite/gcc.dg/parse-else-error-4.c
--- 38814,38822 ----
  7e69b60a64c1d1dc0dae6a9c39bd12e9  gcc/testsuite/gcc.dg/parm-impl-decl-2.c
  15859198e4fe3d67c71e1ece95a10f7f  gcc/testsuite/gcc.dg/parm-impl-decl-3.c
  e13b33decc89989d8524adc6f37e6da0  gcc/testsuite/gcc.dg/parm-incomplete-1.c
! 68d3a8213622f118a0bb3ac77563a113  gcc/testsuite/gcc.dg/parm-mismatch-1.c
  1ee87658e00ffbf9d7c7c348af6c7dba  gcc/testsuite/gcc.dg/parse-decl-after-if.c
! 3feeaf5cc937e21581fb0ece0a31ba9b  gcc/testsuite/gcc.dg/parse-decl-after-label.c
  f72962480c7f89db1094a6e142c894f6  gcc/testsuite/gcc.dg/parse-else-error-2.c
  24fe050f598cf05f953294cfba501e86  gcc/testsuite/gcc.dg/parse-else-error-3.c
  6594a4e3ae8ecb9049eeba55c4c89cc7  gcc/testsuite/gcc.dg/parse-else-error-4.c
*************** b19f78cc8cfdc1d6a96b2f1f9d2b1da6  gcc/te
*** 36182,36188 ****
  b01e42858e0423266a42ce48f5963765  gcc/testsuite/gcc.dg/pch/macro-3.hs
  98eb40fd35afc99b8d7a0d9037913d4a  gcc/testsuite/gcc.dg/pch/macro-4.c
  9dfd3f4bded8093e1bd9fe58412b43c6  gcc/testsuite/gcc.dg/pch/macro-4.hs
! 4b24d0a365f2225e98888f204f71be7f  gcc/testsuite/gcc.dg/pch/pch.exp
  d4141b7ac70c28b7c83f42cea80032d1  gcc/testsuite/gcc.dg/pch/pr66343-1.c
  fecd32092f1271edbd03eb98de866244  gcc/testsuite/gcc.dg/pch/pr66343-1.hs
  140e74992c61983f49deebe0a5a98c95  gcc/testsuite/gcc.dg/pch/pr66343-2.c
--- 38885,38891 ----
  b01e42858e0423266a42ce48f5963765  gcc/testsuite/gcc.dg/pch/macro-3.hs
  98eb40fd35afc99b8d7a0d9037913d4a  gcc/testsuite/gcc.dg/pch/macro-4.c
  9dfd3f4bded8093e1bd9fe58412b43c6  gcc/testsuite/gcc.dg/pch/macro-4.hs
! 5446b48fed5381780172440ed64c9b97  gcc/testsuite/gcc.dg/pch/pch.exp
  d4141b7ac70c28b7c83f42cea80032d1  gcc/testsuite/gcc.dg/pch/pr66343-1.c
  fecd32092f1271edbd03eb98de866244  gcc/testsuite/gcc.dg/pch/pr66343-1.hs
  140e74992c61983f49deebe0a5a98c95  gcc/testsuite/gcc.dg/pch/pr66343-2.c
*************** df1fb04645820cce9159c1b05e520fc7  gcc/te
*** 36235,36257 ****
  72712f41dcc921ba1827000fc0809a9c  gcc/testsuite/gcc.dg/pie-link.c
  000d3a6c8dca7e54f5be771190d10f29  gcc/testsuite/gcc.dg/pie-static-1.c
  be052bceddbf752586b645bc9e048e9c  gcc/testsuite/gcc.dg/pie-static-2.c
  146ffa25d8a6444346ca2a51bfa748ec  gcc/testsuite/gcc.dg/plugin/diagnostic-group-test-1.c
- c23e2686b2509ff012ea2936798bb3ea  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-default.c
  901114feb3fc4bc44a06034fc6abcbff  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-inline-events-1.c
  a0bce3f622c2549614e45f5a9afe9c88  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-inline-events-2.c
  c6385f9bdb9cd63403fd4c6deb2e57ba  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-inline-events-3.c
  ab9b438d79da41ae2faa25073b1f68ff  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-none.c
  703aa583a7e531e21f36720dc5060a1a  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-separate-events.c
! 2e6c78c0344d8f15b046807cbd1b855a  gcc/testsuite/gcc.dg/plugin/diagnostic-test-expressions-1.c
  909ef50476981adc6482e08a95f8f5dd  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-1.c
  49685be9087563d411cc61352a593d84  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-2.c
! 1b02670e3f0a484f676b65b1b782cc79  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-3.c
  c5d2a11e1172f48545387ed92bd56a11  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-4.c
  f73494e354387768373dca977a01f607  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata.c
  a6a63e4d673f32d534d3afc18a7f8218  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-1.c
! 5fe908b68af3c8a2334cd637380b7319  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.c
  38b2aa13fa65cc96be9b8cd14bde1ec1  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-3.c
  9c2ec1cc8d8b83dbb2bda70a9f54dcf4  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-4.c
  d97d9296064e2548698cc70191b940fe  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-bw-line-numbers-2.c
  e6d483f4d25a7c647c63671ff7dc5c50  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-bw-line-numbers.c
  a59c3c55e77b2ab336a32f5ffc9ed6ba  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-bw.c
--- 38938,38963 ----
  72712f41dcc921ba1827000fc0809a9c  gcc/testsuite/gcc.dg/pie-link.c
  000d3a6c8dca7e54f5be771190d10f29  gcc/testsuite/gcc.dg/pie-static-1.c
  be052bceddbf752586b645bc9e048e9c  gcc/testsuite/gcc.dg/pie-static-2.c
+ 0d3cedc0a9840b9bec90af447ef59289  gcc/testsuite/gcc.dg/plugin/analyzer_gil_plugin.c
  146ffa25d8a6444346ca2a51bfa748ec  gcc/testsuite/gcc.dg/plugin/diagnostic-group-test-1.c
  901114feb3fc4bc44a06034fc6abcbff  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-inline-events-1.c
  a0bce3f622c2549614e45f5a9afe9c88  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-inline-events-2.c
  c6385f9bdb9cd63403fd4c6deb2e57ba  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-inline-events-3.c
  ab9b438d79da41ae2faa25073b1f68ff  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-none.c
+ 2fe90d668bb3a5c6c5bf999732d4ba2f  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-plain.c
  703aa583a7e531e21f36720dc5060a1a  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-separate-events.c
! 82d440b1e4dce5930ce8d0eb753b41e8  gcc/testsuite/gcc.dg/plugin/diagnostic-test-expressions-1.c
  909ef50476981adc6482e08a95f8f5dd  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-1.c
  49685be9087563d411cc61352a593d84  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-2.c
! 48a41768247d6b150673cba3b15e815e  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-3.c
  c5d2a11e1172f48545387ed92bd56a11  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-4.c
  f73494e354387768373dca977a01f607  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata.c
  a6a63e4d673f32d534d3afc18a7f8218  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-1.c
! 2559315813eed7c53c721794d2abb2e6  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.c
  38b2aa13fa65cc96be9b8cd14bde1ec1  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-3.c
  9c2ec1cc8d8b83dbb2bda70a9f54dcf4  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-4.c
+ 7049acd785444dd8554dd09b160777de  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v1.c
+ d7b8d6a01abe683de027809614a2b63f  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v2.c
  d97d9296064e2548698cc70191b940fe  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-bw-line-numbers-2.c
  e6d483f4d25a7c647c63671ff7dc5c50  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-bw-line-numbers.c
  a59c3c55e77b2ab336a32f5ffc9ed6ba  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-bw.c
*************** a59c3c55e77b2ab336a32f5ffc9ed6ba  gcc/te
*** 36261,36267 ****
  c1874b847baa5d41d58aa2db643143da  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-no-labels.c
  2c7e32cd8f076c6b6406aef7209045e7  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-parseable-fixits.c
  39f1ab78432ac25892fad284e179d8ac  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-trees-1.c
! a7df6d500afff5e8d368fd49584d5879  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-1.c
  1a45355cf06403e775b5d7ab5b2a59f7  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-2.c
  9724706865aec183bf418db2220222c0  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-3.c
  9130ee71c624765ab112b75378ac96c0  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-4.c
--- 38967,38973 ----
  c1874b847baa5d41d58aa2db643143da  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-no-labels.c
  2c7e32cd8f076c6b6406aef7209045e7  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-parseable-fixits.c
  39f1ab78432ac25892fad284e179d8ac  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-trees-1.c
! 2dcacbd80a73417a42f8433a286f0163  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-1.c
  1a45355cf06403e775b5d7ab5b2a59f7  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-2.c
  9724706865aec183bf418db2220222c0  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-3.c
  9130ee71c624765ab112b75378ac96c0  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-4.c
*************** aa2f82fc240f63c964a92a84c25344cf  gcc/te
*** 36282,36288 ****
  1c6a9973a6ef6f459b0990d8f17fe192  gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c
  232d54c69029a45c46660ba009ebdf28  gcc/testsuite/gcc.dg/plugin/ggcplug-test-1.c
  946d91607bc14508e8394c33f82cd987  gcc/testsuite/gcc.dg/plugin/ggcplug.c
! c50bad4e1b684c379dc1f35b89ea422c  gcc/testsuite/gcc.dg/plugin/location-overflow-test-1.c
  b584a46252319e63ce8a18cd3d89f07c  gcc/testsuite/gcc.dg/plugin/location-overflow-test-2.c
  502e1f072faf23c44132129d5a080fdb  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr83173-1.h
  8bc743f30102ffbfb1bc6a409fc63a2e  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr83173-2.h
--- 38988,38996 ----
  1c6a9973a6ef6f459b0990d8f17fe192  gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c
  232d54c69029a45c46660ba009ebdf28  gcc/testsuite/gcc.dg/plugin/ggcplug-test-1.c
  946d91607bc14508e8394c33f82cd987  gcc/testsuite/gcc.dg/plugin/ggcplug.c
! 46e3f5104408630a7bd97560305fbb85  gcc/testsuite/gcc.dg/plugin/gil-1.c
! c1994b3e108cc9c7befbc1b7c93a70ff  gcc/testsuite/gcc.dg/plugin/gil.h
! d3e84ae842f69911a3ac0ceb96542627  gcc/testsuite/gcc.dg/plugin/location-overflow-test-1.c
  b584a46252319e63ce8a18cd3d89f07c  gcc/testsuite/gcc.dg/plugin/location-overflow-test-2.c
  502e1f072faf23c44132129d5a080fdb  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr83173-1.h
  8bc743f30102ffbfb1bc6a409fc63a2e  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr83173-2.h
*************** b1a9c2af16dec0d49e4f96f176a99493  gcc/te
*** 36294,36300 ****
  4f9162b0bea5be7a65cfd95710142650  gcc/testsuite/gcc.dg/plugin/must_tail_call_plugin.c
  adbc6d60d6e1474ca93af3b50208e741  gcc/testsuite/gcc.dg/plugin/one_time-test-1.c
  140175a2d33b8c31f25c3427b04baa1b  gcc/testsuite/gcc.dg/plugin/one_time_plugin.c
! ee7b2ce0bb58a5752195aa17d4186bcd  gcc/testsuite/gcc.dg/plugin/plugin.exp
  10b87cc378ff8b6e30ae77af8c669e4b  gcc/testsuite/gcc.dg/plugin/plugindir1.c
  770fbe5bf2a65884c6120dab4b13a1d4  gcc/testsuite/gcc.dg/plugin/plugindir2.c
  5be673fb13573d3689c3cc3dff9f5a2e  gcc/testsuite/gcc.dg/plugin/plugindir3.c
--- 39002,39008 ----
  4f9162b0bea5be7a65cfd95710142650  gcc/testsuite/gcc.dg/plugin/must_tail_call_plugin.c
  adbc6d60d6e1474ca93af3b50208e741  gcc/testsuite/gcc.dg/plugin/one_time-test-1.c
  140175a2d33b8c31f25c3427b04baa1b  gcc/testsuite/gcc.dg/plugin/one_time_plugin.c
! babc4e1805daa77b02eb7a31d8486291  gcc/testsuite/gcc.dg/plugin/plugin.exp
  10b87cc378ff8b6e30ae77af8c669e4b  gcc/testsuite/gcc.dg/plugin/plugindir1.c
  770fbe5bf2a65884c6120dab4b13a1d4  gcc/testsuite/gcc.dg/plugin/plugindir2.c
  5be673fb13573d3689c3cc3dff9f5a2e  gcc/testsuite/gcc.dg/plugin/plugindir3.c
*************** f5883b8a2323e7318237e3750e037d52  gcc/te
*** 36338,36343 ****
--- 39046,39052 ----
  fd3265437095da6aff9d665f55b837b2  gcc/testsuite/gcc.dg/pow-sqrt-3.c
  b9bdf8358b02d555adf76b44050cc156  gcc/testsuite/gcc.dg/pow-sqrt-synth-1.c
  e037582257371f62a3a039df4321225d  gcc/testsuite/gcc.dg/pow-sqrt.x
+ ecd4e45106744489e5a78254ca44d88a  gcc/testsuite/gcc.dg/pr100142.c
  8226e377d45ef0ffeb7badfb04740ab9  gcc/testsuite/gcc.dg/pr10392-1.c
  d8ac6e8cccf7bcb1070140ae44ef117a  gcc/testsuite/gcc.dg/pr10474.c
  860f163dcd0b252ea3f85323bc959a7d  gcc/testsuite/gcc.dg/pr11459-1.c
*************** fda269538ec6cb5fa7f058ae0ca2954d  gcc/te
*** 36433,36439 ****
  eaac03a990c4657b7e44f2f7a43e75ff  gcc/testsuite/gcc.dg/pr20126.c
  62757cb3c0e720fb1560a8224b08debd  gcc/testsuite/gcc.dg/pr20130-1.c
  2bca92aea2b5219d9409f9b42e816ce9  gcc/testsuite/gcc.dg/pr20216.c
! e4f235bc7fce90d315b3c59275619ff9  gcc/testsuite/gcc.dg/pr20245-1.c
  26e47b2fb70e7148fd1fc9e8d1689802  gcc/testsuite/gcc.dg/pr20368-1.c
  d6e25a17fad755f72c1380eff3753639  gcc/testsuite/gcc.dg/pr20368-2.c
  daf6aeee0d8079da4dc044ea393f3dec  gcc/testsuite/gcc.dg/pr20368-3.c
--- 39142,39148 ----
  eaac03a990c4657b7e44f2f7a43e75ff  gcc/testsuite/gcc.dg/pr20126.c
  62757cb3c0e720fb1560a8224b08debd  gcc/testsuite/gcc.dg/pr20130-1.c
  2bca92aea2b5219d9409f9b42e816ce9  gcc/testsuite/gcc.dg/pr20216.c
! 1283a0704dcc87875b6a0f69dfaf02dd  gcc/testsuite/gcc.dg/pr20245-1.c
  26e47b2fb70e7148fd1fc9e8d1689802  gcc/testsuite/gcc.dg/pr20368-1.c
  d6e25a17fad755f72c1380eff3753639  gcc/testsuite/gcc.dg/pr20368-2.c
  daf6aeee0d8079da4dc044ea393f3dec  gcc/testsuite/gcc.dg/pr20368-3.c
*************** e316cb920a9eeb2e96d6ff0071b4e1e9  gcc/te
*** 36447,36452 ****
--- 39156,39162 ----
  9695cc6a9e799e9e7d52afe1e843c73e  gcc/testsuite/gcc.dg/pr21032.c
  38b4c19356959c0903f790d063e1e6a6  gcc/testsuite/gcc.dg/pr21041.c
  7b876d09593734c8cf12eb56eee155e4  gcc/testsuite/gcc.dg/pr21085.c
+ 37d954c5426b91f7e6301d17caa6698a  gcc/testsuite/gcc.dg/pr21137.c
  f249c8e4714cd5737b79a74e42be5c46  gcc/testsuite/gcc.dg/pr21282.c
  3a005f57879f3d6575f529bdf1d45e71  gcc/testsuite/gcc.dg/pr21419.c
  8abe00dcabcdb999cf165c8503003d8c  gcc/testsuite/gcc.dg/pr21643.c
*************** d475727c04d7b0890bdc8df05799bebc  gcc/te
*** 36488,36494 ****
  614924255e68e9030cf7469ed578a15d  gcc/testsuite/gcc.dg/pr24683.c
  93d9e50c249a057642c823d88736c8d3  gcc/testsuite/gcc.dg/pr24820.c
  fec5da03a0c2deda5e2e23320eb104f9  gcc/testsuite/gcc.dg/pr25023.c
! ec588880d0ceeed8a75628b2db28350f  gcc/testsuite/gcc.dg/pr25376.c
  8ba65ccc2fce8c161f1b603190ebfe45  gcc/testsuite/gcc.dg/pr25529.c
  de415527b9fd0e4032c3eebf5c2a3bbd  gcc/testsuite/gcc.dg/pr25530.c
  0e19591f58f2ec1d28818d979a7176c5  gcc/testsuite/gcc.dg/pr25559.c
--- 39198,39204 ----
  614924255e68e9030cf7469ed578a15d  gcc/testsuite/gcc.dg/pr24683.c
  93d9e50c249a057642c823d88736c8d3  gcc/testsuite/gcc.dg/pr24820.c
  fec5da03a0c2deda5e2e23320eb104f9  gcc/testsuite/gcc.dg/pr25023.c
! 08cad12653e74b3a4fc2b4e71f0e8ae7  gcc/testsuite/gcc.dg/pr25376.c
  8ba65ccc2fce8c161f1b603190ebfe45  gcc/testsuite/gcc.dg/pr25529.c
  de415527b9fd0e4032c3eebf5c2a3bbd  gcc/testsuite/gcc.dg/pr25530.c
  0e19591f58f2ec1d28818d979a7176c5  gcc/testsuite/gcc.dg/pr25559.c
*************** da0cb96a0c3926625da711670cf3ef5e  gcc/te
*** 36499,36505 ****
  92f6033b3bd988e0f601edd77c2b1463  gcc/testsuite/gcc.dg/pr25805.c
  c0d1cc924a53b0a521bab093ec44326b  gcc/testsuite/gcc.dg/pr26004.c
  c5ce5fe41cd57ea875809b46fc5f851f  gcc/testsuite/gcc.dg/pr26427.c
! 818015b57cdc32247036296ebe665ea1  gcc/testsuite/gcc.dg/pr26570.c
  c34ca8b7706e35c4ae280fe610fab224  gcc/testsuite/gcc.dg/pr26632.c
  b7d2ff448b5eb827f486bdeda5184ff3  gcc/testsuite/gcc.dg/pr26717.c
  ced7aaee2ed382ba4e4be8a202b00641  gcc/testsuite/gcc.dg/pr26719.c
--- 39209,39215 ----
  92f6033b3bd988e0f601edd77c2b1463  gcc/testsuite/gcc.dg/pr25805.c
  c0d1cc924a53b0a521bab093ec44326b  gcc/testsuite/gcc.dg/pr26004.c
  c5ce5fe41cd57ea875809b46fc5f851f  gcc/testsuite/gcc.dg/pr26427.c
! 515fe305f5cb3ebcf63a9078e60d22e1  gcc/testsuite/gcc.dg/pr26570.c
  c34ca8b7706e35c4ae280fe610fab224  gcc/testsuite/gcc.dg/pr26632.c
  b7d2ff448b5eb827f486bdeda5184ff3  gcc/testsuite/gcc.dg/pr26717.c
  ced7aaee2ed382ba4e4be8a202b00641  gcc/testsuite/gcc.dg/pr26719.c
*************** d7f5dcf05d3f72107ccaabcdd6fe1996  gcc/te
*** 36537,36543 ****
  98c9c6960a5f032b48a5bdfec4958a77  gcc/testsuite/gcc.dg/pr28322-3.c
  79167cdbb3665d767c6639b45245b52b  gcc/testsuite/gcc.dg/pr28322.c
  555ccd3be6024dfa99443d9c51c30df6  gcc/testsuite/gcc.dg/pr28402.c
! 3c3671d1b22803c06807dcf6e0328ce5  gcc/testsuite/gcc.dg/pr28419.c
  2cc7fd50d664b38fbfc93f1b52c5fac2  gcc/testsuite/gcc.dg/pr28574.c
  eeb7402398e702c0c6d5fd5907235177  gcc/testsuite/gcc.dg/pr28685-1.c
  0f5d0ea66f65798abba5fa2cc198c910  gcc/testsuite/gcc.dg/pr28726.c
--- 39247,39253 ----
  98c9c6960a5f032b48a5bdfec4958a77  gcc/testsuite/gcc.dg/pr28322-3.c
  79167cdbb3665d767c6639b45245b52b  gcc/testsuite/gcc.dg/pr28322.c
  555ccd3be6024dfa99443d9c51c30df6  gcc/testsuite/gcc.dg/pr28402.c
! 380e1719642412e3e9f6530df32aa034  gcc/testsuite/gcc.dg/pr28419.c
  2cc7fd50d664b38fbfc93f1b52c5fac2  gcc/testsuite/gcc.dg/pr28574.c
  eeb7402398e702c0c6d5fd5907235177  gcc/testsuite/gcc.dg/pr28685-1.c
  0f5d0ea66f65798abba5fa2cc198c910  gcc/testsuite/gcc.dg/pr28726.c
*************** fc8929dd64bfcf841a08a6a32186eb30  gcc/te
*** 36584,36590 ****
  431cfa5908d3108c0cdbba874dbb3f2b  gcc/testsuite/gcc.dg/pr30904.c
  9b4801324b438007958aa1175641a7ed  gcc/testsuite/gcc.dg/pr30949.c
  a1f2b5e214ad8f9e511143518b49bc77  gcc/testsuite/gcc.dg/pr30951.c
! fe34345a1b9536c1b140f7bfd61d87bb  gcc/testsuite/gcc.dg/pr30957-1.c
  1396264299dd3bd2f3edf0d99b93e37f  gcc/testsuite/gcc.dg/pr31096-1.c
  ac0ebd6f2a612028194ca2e4c50a7e32  gcc/testsuite/gcc.dg/pr31096.c
  150f52c3c953c3adebca31102e0db1ff  gcc/testsuite/gcc.dg/pr31127.c
--- 39294,39300 ----
  431cfa5908d3108c0cdbba874dbb3f2b  gcc/testsuite/gcc.dg/pr30904.c
  9b4801324b438007958aa1175641a7ed  gcc/testsuite/gcc.dg/pr30949.c
  a1f2b5e214ad8f9e511143518b49bc77  gcc/testsuite/gcc.dg/pr30951.c
! 9aec541f35e8725373ba97b5491a3f78  gcc/testsuite/gcc.dg/pr30957-1.c
  1396264299dd3bd2f3edf0d99b93e37f  gcc/testsuite/gcc.dg/pr31096-1.c
  ac0ebd6f2a612028194ca2e4c50a7e32  gcc/testsuite/gcc.dg/pr31096.c
  150f52c3c953c3adebca31102e0db1ff  gcc/testsuite/gcc.dg/pr31127.c
*************** f45fda3539b94ddab03c6a8e3c0991f9  gcc/te
*** 36597,36607 ****
  328e32d38025219898d1fec72816d3f7  gcc/testsuite/gcc.dg/pr31529-1.c
  0de1b5f6db5f9ec14e6058344d8322e3  gcc/testsuite/gcc.dg/pr31529-2.c
  87d6e7942f1c733f26629352b54c510b  gcc/testsuite/gcc.dg/pr31847.c
! a29a24c1f50a3b069d643951fa60c05b  gcc/testsuite/gcc.dg/pr31866.c
  9f7a9975da8bfb2c9f1421e38e5428d8  gcc/testsuite/gcc.dg/pr31959.c
  d426df2de8e4ba3c7e102dfd67d72538  gcc/testsuite/gcc.dg/pr32041.c
  82609b27c95e8e7a8b3da703a29e5cb6  gcc/testsuite/gcc.dg/pr32061.c
! dd4ec8625a31f09b63b9af420e1c0ccc  gcc/testsuite/gcc.dg/pr32069.c
  25dc74f00cf88e0e19e9654fd36e6a0d  gcc/testsuite/gcc.dg/pr32135.c
  def801d6ee37a5483fd248a5a0420c68  gcc/testsuite/gcc.dg/pr32176.c
  19e5799a9c273d6b6710fedfc49c0ca0  gcc/testsuite/gcc.dg/pr32207.c
--- 39307,39317 ----
  328e32d38025219898d1fec72816d3f7  gcc/testsuite/gcc.dg/pr31529-1.c
  0de1b5f6db5f9ec14e6058344d8322e3  gcc/testsuite/gcc.dg/pr31529-2.c
  87d6e7942f1c733f26629352b54c510b  gcc/testsuite/gcc.dg/pr31847.c
! 4cc9b1c086a84d9e4acc6e5ddd997659  gcc/testsuite/gcc.dg/pr31866.c
  9f7a9975da8bfb2c9f1421e38e5428d8  gcc/testsuite/gcc.dg/pr31959.c
  d426df2de8e4ba3c7e102dfd67d72538  gcc/testsuite/gcc.dg/pr32041.c
  82609b27c95e8e7a8b3da703a29e5cb6  gcc/testsuite/gcc.dg/pr32061.c
! b321339c2da84cb47e0c9ed4666ef9a7  gcc/testsuite/gcc.dg/pr32069.c
  25dc74f00cf88e0e19e9654fd36e6a0d  gcc/testsuite/gcc.dg/pr32135.c
  def801d6ee37a5483fd248a5a0420c68  gcc/testsuite/gcc.dg/pr32176.c
  19e5799a9c273d6b6710fedfc49c0ca0  gcc/testsuite/gcc.dg/pr32207.c
*************** d14b67d1db0a48b2e613fbea5354ba82  gcc/te
*** 36687,36693 ****
  d29fecf82e059aa0d64f70de52b8e9fc  gcc/testsuite/gcc.dg/pr35441.c
  38e96d4867f11c0b46c53480c8b5b3b2  gcc/testsuite/gcc.dg/pr35442.c
  b54af1aa11b43acb774c5e2f4767d1e0  gcc/testsuite/gcc.dg/pr35443.c
! e927209a69ce8f1f28dd8c445f10d65e  gcc/testsuite/gcc.dg/pr35445.c
  b2fc3e6de02802d2f1bd47a32406afb0  gcc/testsuite/gcc.dg/pr35468.c
  b618f891f270bb653c8a5d840b5df77c  gcc/testsuite/gcc.dg/pr35616.c
  6da7287427ee484dc0f3fd2734b36d08  gcc/testsuite/gcc.dg/pr35635.c
--- 39397,39403 ----
  d29fecf82e059aa0d64f70de52b8e9fc  gcc/testsuite/gcc.dg/pr35441.c
  38e96d4867f11c0b46c53480c8b5b3b2  gcc/testsuite/gcc.dg/pr35442.c
  b54af1aa11b43acb774c5e2f4767d1e0  gcc/testsuite/gcc.dg/pr35443.c
! 2d10d74b6a22357c6049da8537ff2cb0  gcc/testsuite/gcc.dg/pr35445.c
  b2fc3e6de02802d2f1bd47a32406afb0  gcc/testsuite/gcc.dg/pr35468.c
  b618f891f270bb653c8a5d840b5df77c  gcc/testsuite/gcc.dg/pr35616.c
  6da7287427ee484dc0f3fd2734b36d08  gcc/testsuite/gcc.dg/pr35635.c
*************** e19df95f209b2da05645180e97cb9dcd  gcc/te
*** 36705,36714 ****
  5cf1f42c9e8d925771759237eaf58b21  gcc/testsuite/gcc.dg/pr35899.c
  97f34ebb78ee6abd37e13bcd1904a940  gcc/testsuite/gcc.dg/pr36015.c
  27b76ea1429e924faf831222b2aab4fc  gcc/testsuite/gcc.dg/pr36017.c
  ca041af75fe0f09cf1a4cb24575fa6b4  gcc/testsuite/gcc.dg/pr36111.c
  0dff0cba33bb03c59caaaac446899c65  gcc/testsuite/gcc.dg/pr36194.c
  a351c46ab7b7896d89c0aaf343781a79  gcc/testsuite/gcc.dg/pr36224.c
! 5f657623b8f0cb3539a1090d08571fc6  gcc/testsuite/gcc.dg/pr36227.c
  7e5f93038fc8dfcc3034a38162f1bcf0  gcc/testsuite/gcc.dg/pr36300-1.c
  7b00000b8f6d2694034e362af78bfa7d  gcc/testsuite/gcc.dg/pr36300-2.c
  6e918e959631706539f163db55bf114d  gcc/testsuite/gcc.dg/pr36489.c
--- 39415,39425 ----
  5cf1f42c9e8d925771759237eaf58b21  gcc/testsuite/gcc.dg/pr35899.c
  97f34ebb78ee6abd37e13bcd1904a940  gcc/testsuite/gcc.dg/pr36015.c
  27b76ea1429e924faf831222b2aab4fc  gcc/testsuite/gcc.dg/pr36017.c
+ 6f3d928551bbd184b7e32c31c261947a  gcc/testsuite/gcc.dg/pr36093.c
  ca041af75fe0f09cf1a4cb24575fa6b4  gcc/testsuite/gcc.dg/pr36111.c
  0dff0cba33bb03c59caaaac446899c65  gcc/testsuite/gcc.dg/pr36194.c
  a351c46ab7b7896d89c0aaf343781a79  gcc/testsuite/gcc.dg/pr36224.c
! 09d93dcc4bc3e8fbc848668c8b756077  gcc/testsuite/gcc.dg/pr36227.c
  7e5f93038fc8dfcc3034a38162f1bcf0  gcc/testsuite/gcc.dg/pr36300-1.c
  7b00000b8f6d2694034e362af78bfa7d  gcc/testsuite/gcc.dg/pr36300-2.c
  6e918e959631706539f163db55bf114d  gcc/testsuite/gcc.dg/pr36489.c
*************** bf0460f4944a44ec8a0385c139593c01  gcc/te
*** 36787,36793 ****
  401d0b2334d7648751c2b21460991c59  gcc/testsuite/gcc.dg/pr40031.c
  bf54b47020c229850882e82035530b8d  gcc/testsuite/gcc.dg/pr40172-1.c
  2bdc5ce60144eb515d37a43725e2eef1  gcc/testsuite/gcc.dg/pr40172-2.c
! 2b4273880db1d64030609ad6a84dec44  gcc/testsuite/gcc.dg/pr40172-3.c
  7d0662da3f9e3110be323dc7b6bb41f6  gcc/testsuite/gcc.dg/pr40209.c
  23a8192c617e8fc7f30b6647386221ec  gcc/testsuite/gcc.dg/pr40340-1.c
  2b012d99a3f88d31669db7f4160b55ad  gcc/testsuite/gcc.dg/pr40340-2.c
--- 39498,39504 ----
  401d0b2334d7648751c2b21460991c59  gcc/testsuite/gcc.dg/pr40031.c
  bf54b47020c229850882e82035530b8d  gcc/testsuite/gcc.dg/pr40172-1.c
  2bdc5ce60144eb515d37a43725e2eef1  gcc/testsuite/gcc.dg/pr40172-2.c
! fbd1e785fa7ecf21f1bfea78720ffef3  gcc/testsuite/gcc.dg/pr40172-3.c
  7d0662da3f9e3110be323dc7b6bb41f6  gcc/testsuite/gcc.dg/pr40209.c
  23a8192c617e8fc7f30b6647386221ec  gcc/testsuite/gcc.dg/pr40340-1.c
  2b012d99a3f88d31669db7f4160b55ad  gcc/testsuite/gcc.dg/pr40340-2.c
*************** d5916a371adc05155c5b831f0fadd245  gcc/te
*** 36840,36846 ****
  077da0fec90b5b7444cea096af3c6cbd  gcc/testsuite/gcc.dg/pr42427.c
  fd2561f8ffdbf2efd8c87f1fb8e53787  gcc/testsuite/gcc.dg/pr42461.c
  991dbffb574b25d1cc587f088dbc8e79  gcc/testsuite/gcc.dg/pr42475.c
! 68a3e9057ddad68cbc20e36f23f0d6d6  gcc/testsuite/gcc.dg/pr42611.c
  540d787e1a44177820fc22e6984812aa  gcc/testsuite/gcc.dg/pr42629.c
  4e4d20ea02ba091ffd62ff8dc333bc18  gcc/testsuite/gcc.dg/pr42630.c
  a972e0fddd8e97e85540ada26321bc3e  gcc/testsuite/gcc.dg/pr42631.c
--- 39551,39557 ----
  077da0fec90b5b7444cea096af3c6cbd  gcc/testsuite/gcc.dg/pr42427.c
  fd2561f8ffdbf2efd8c87f1fb8e53787  gcc/testsuite/gcc.dg/pr42461.c
  991dbffb574b25d1cc587f088dbc8e79  gcc/testsuite/gcc.dg/pr42475.c
! e55d645cf1882ab0b13b127c05a11de3  gcc/testsuite/gcc.dg/pr42611.c
  540d787e1a44177820fc22e6984812aa  gcc/testsuite/gcc.dg/pr42629.c
  4e4d20ea02ba091ffd62ff8dc333bc18  gcc/testsuite/gcc.dg/pr42630.c
  a972e0fddd8e97e85540ada26321bc3e  gcc/testsuite/gcc.dg/pr42631.c
*************** da3a11a81d6baa587f3928a163d7f343  gcc/te
*** 36877,36882 ****
--- 39588,39594 ----
  e415d69104a6c3a1501ac297eac4da71  gcc/testsuite/gcc.dg/pr43643.c
  124390b09843414aa638992f3a4705a2  gcc/testsuite/gcc.dg/pr43670.c
  c0057c21378b571cccb57351b9ef9acd  gcc/testsuite/gcc.dg/pr43730.c
+ e7531c0be062d752d1ed493e5d39c393  gcc/testsuite/gcc.dg/pr43783.c
  24513a60f9d4450589b46353e396e399  gcc/testsuite/gcc.dg/pr43864-2.c
  5fd7dfa795890eb46d57b824f015d779  gcc/testsuite/gcc.dg/pr43864-3.c
  468e68d9b40b5fe4d91d9b8933fef228  gcc/testsuite/gcc.dg/pr43864-4.c
*************** eca3d1dd5335a9db1ea0c2a98084a274  gcc/te
*** 36888,36894 ****
  deb7c49143ede12a1adf05beb298554b  gcc/testsuite/gcc.dg/pr44028.c
  27f690cc17b3e7bc399bda66468428b1  gcc/testsuite/gcc.dg/pr44061.c
  6bacf230d908085ef7d81f5ea944c3dc  gcc/testsuite/gcc.dg/pr44136.c
! 5edef3a14470d65534e70eff0939dfa3  gcc/testsuite/gcc.dg/pr44194-1.c
  24eb1d83ed5e3d2b23fffa32791a3b37  gcc/testsuite/gcc.dg/pr44194-2.c
  e40ffd248a42b62361a094f647b0e925  gcc/testsuite/gcc.dg/pr44214-1.c
  e9b2de145454672b086104e969ff36c5  gcc/testsuite/gcc.dg/pr44214-2.c
--- 39600,39606 ----
  deb7c49143ede12a1adf05beb298554b  gcc/testsuite/gcc.dg/pr44028.c
  27f690cc17b3e7bc399bda66468428b1  gcc/testsuite/gcc.dg/pr44061.c
  6bacf230d908085ef7d81f5ea944c3dc  gcc/testsuite/gcc.dg/pr44136.c
! b9d9b21530000ff0c04b816f7a165419  gcc/testsuite/gcc.dg/pr44194-1.c
  24eb1d83ed5e3d2b23fffa32791a3b37  gcc/testsuite/gcc.dg/pr44194-2.c
  e40ffd248a42b62361a094f647b0e925  gcc/testsuite/gcc.dg/pr44214-1.c
  e9b2de145454672b086104e969ff36c5  gcc/testsuite/gcc.dg/pr44214-2.c
*************** e4027da4dd29cf2deee0c56b7eb4187b  gcc/te
*** 36952,36958 ****
  bd2a9344f971f9fb29951b0169a27637  gcc/testsuite/gcc.dg/pr46255.c
  9deec327085e0021426559ae24f523a6  gcc/testsuite/gcc.dg/pr46288.c
  68021a4bf59a7075a9b1382b5cdd814e  gcc/testsuite/gcc.dg/pr46307.c
! b1a2742c2dc43d40b426d6289ef5070c  gcc/testsuite/gcc.dg/pr46309-2.c
  24e4e25b7f1eaa7748eb1ef3108fdb7b  gcc/testsuite/gcc.dg/pr46309.c
  d2f1443d164b1d691134da37b60f2cf1  gcc/testsuite/gcc.dg/pr46315.c
  9d26fa5e79e48bd2318afed2a713a45d  gcc/testsuite/gcc.dg/pr46355.c
--- 39664,39670 ----
  bd2a9344f971f9fb29951b0169a27637  gcc/testsuite/gcc.dg/pr46255.c
  9deec327085e0021426559ae24f523a6  gcc/testsuite/gcc.dg/pr46288.c
  68021a4bf59a7075a9b1382b5cdd814e  gcc/testsuite/gcc.dg/pr46307.c
! e0442b2dc36964ddc149b086279df95a  gcc/testsuite/gcc.dg/pr46309-2.c
  24e4e25b7f1eaa7748eb1ef3108fdb7b  gcc/testsuite/gcc.dg/pr46309.c
  d2f1443d164b1d691134da37b60f2cf1  gcc/testsuite/gcc.dg/pr46315.c
  9d26fa5e79e48bd2318afed2a713a45d  gcc/testsuite/gcc.dg/pr46355.c
*************** a5b131ce7b0ee006d66f2f1d89605944  gcc/te
*** 36968,36974 ****
  78056e976ecd239614632c4a7189bbc6  gcc/testsuite/gcc.dg/pr46585.c
  035b086fe2da3c833f5c2d21a6b75dda  gcc/testsuite/gcc.dg/pr46614.c
  8e0cbd622a0d0f0e00d409d7def41aa7  gcc/testsuite/gcc.dg/pr46620.c
! 83511c99c907984cdf75b9dc275c4720  gcc/testsuite/gcc.dg/pr46647.c
  b57afb306ccedb17511e56c52f04a6a9  gcc/testsuite/gcc.dg/pr46674.c
  fbce19089fab978e34fea848b036fbcc  gcc/testsuite/gcc.dg/pr46675.c
  59d00d3c7293322dc7c28de584ad6603  gcc/testsuite/gcc.dg/pr46685.c
--- 39680,39686 ----
  78056e976ecd239614632c4a7189bbc6  gcc/testsuite/gcc.dg/pr46585.c
  035b086fe2da3c833f5c2d21a6b75dda  gcc/testsuite/gcc.dg/pr46614.c
  8e0cbd622a0d0f0e00d409d7def41aa7  gcc/testsuite/gcc.dg/pr46620.c
! e2b77f46396eb8adba5d935eedd06818  gcc/testsuite/gcc.dg/pr46647.c
  b57afb306ccedb17511e56c52f04a6a9  gcc/testsuite/gcc.dg/pr46674.c
  fbce19089fab978e34fea848b036fbcc  gcc/testsuite/gcc.dg/pr46675.c
  59d00d3c7293322dc7c28de584ad6603  gcc/testsuite/gcc.dg/pr46685.c
*************** b53799f3ef1cc311084d427e66d2a57f  gcc/te
*** 37109,37126 ****
  fdc9d4f1e4d37519ce2b5fd60ad55bc7  gcc/testsuite/gcc.dg/pr51505.c
  1f9c34b91f8257e802d1edf90bbf6ca5  gcc/testsuite/gcc.dg/pr51519.c
  d1d1d8a1a7c1101a9df5901e911386c8  gcc/testsuite/gcc.dg/pr51557.c
! 22d19ed1116dc717623d35179e37f9a7  gcc/testsuite/gcc.dg/pr51628-17.c
  ae0a504832ab09f277444d4b87afdba0  gcc/testsuite/gcc.dg/pr51628-18.c
! 96acbc7bd1c165d3c30bf32eb121c2e5  gcc/testsuite/gcc.dg/pr51628-19.c
! e06c75ed5f32593bc415226d81dce185  gcc/testsuite/gcc.dg/pr51628-20.c
! 6a541a8804e328292d46d96a711a81e6  gcc/testsuite/gcc.dg/pr51628-21.c
! 1d90eb931d0652d6c0064885cd506195  gcc/testsuite/gcc.dg/pr51628-22.c
  27079d488d927fe72fc34f4c18a381b7  gcc/testsuite/gcc.dg/pr51628-23.c
! 0d5a00daf4b3f3545b13a361f46cc3bb  gcc/testsuite/gcc.dg/pr51628-24.c
! 2b312fe31cdb8ce1e34d47d852fb1650  gcc/testsuite/gcc.dg/pr51628-25.c
! 77ba4035c1cbc792cc2b541ffd2bab56  gcc/testsuite/gcc.dg/pr51628-34.c
  24d7d553df59ac2694dc3ca36e4da9aa  gcc/testsuite/gcc.dg/pr51644.c
! e0506d3276fc0988a5c731aa5876f189  gcc/testsuite/gcc.dg/pr51683.c
  66dc4b0632342d15685db39966e4861f  gcc/testsuite/gcc.dg/pr51695.c
  48343c4f02e4ad54e56af8a17de81723  gcc/testsuite/gcc.dg/pr51721.c
  780efd582c942ecc88a651557a4ba807  gcc/testsuite/gcc.dg/pr51762.c
--- 39821,39838 ----
  fdc9d4f1e4d37519ce2b5fd60ad55bc7  gcc/testsuite/gcc.dg/pr51505.c
  1f9c34b91f8257e802d1edf90bbf6ca5  gcc/testsuite/gcc.dg/pr51519.c
  d1d1d8a1a7c1101a9df5901e911386c8  gcc/testsuite/gcc.dg/pr51557.c
! 6184ae6992c6c3468bff0cfd9875aad9  gcc/testsuite/gcc.dg/pr51628-17.c
  ae0a504832ab09f277444d4b87afdba0  gcc/testsuite/gcc.dg/pr51628-18.c
! c3ae2bb4fdcdded82aec02af6430e555  gcc/testsuite/gcc.dg/pr51628-19.c
! d72966b98b121ba500d38b818a63a0fb  gcc/testsuite/gcc.dg/pr51628-20.c
! d5f4c93aab914c4d8a3557b65d88a826  gcc/testsuite/gcc.dg/pr51628-21.c
! f731a6b6955d526e68a973207429ffb1  gcc/testsuite/gcc.dg/pr51628-22.c
  27079d488d927fe72fc34f4c18a381b7  gcc/testsuite/gcc.dg/pr51628-23.c
! 8b75506ca391fbc0d724f8e3a900eda8  gcc/testsuite/gcc.dg/pr51628-24.c
! 000f653ca7aeac813c7884b2ccc6c1e3  gcc/testsuite/gcc.dg/pr51628-25.c
! 477326e7a093fbe58e1df83a33b692d2  gcc/testsuite/gcc.dg/pr51628-34.c
  24d7d553df59ac2694dc3ca36e4da9aa  gcc/testsuite/gcc.dg/pr51644.c
! 9c6f2d21efe57b13f2204f1dd4b21bff  gcc/testsuite/gcc.dg/pr51683.c
  66dc4b0632342d15685db39966e4861f  gcc/testsuite/gcc.dg/pr51695.c
  48343c4f02e4ad54e56af8a17de81723  gcc/testsuite/gcc.dg/pr51721.c
  780efd582c942ecc88a651557a4ba807  gcc/testsuite/gcc.dg/pr51762.c
*************** fd89861b9252a0fb20bd9228ee0e3ce8  gcc/te
*** 37168,37174 ****
  e2ec6d72bdfd63430ec334fa1b08a13a  gcc/testsuite/gcc.dg/pr52862.c
  972a77d78979d9949f2962ab47e1409b  gcc/testsuite/gcc.dg/pr52880.c
  257e77438ad3ee1c091c74ad4c8c91da  gcc/testsuite/gcc.dg/pr52904.c
! a0a4b62ce2e10990b415b57197e9239d  gcc/testsuite/gcc.dg/pr53037-1.c
  4aa7b4b0a5ca35106f4a0b6d3580c61d  gcc/testsuite/gcc.dg/pr53037-2.c
  24c4553a939b3bb86fc30396cc2ca4e4  gcc/testsuite/gcc.dg/pr53037-3.c
  f16f3d44fea276b207a89218aa511bc6  gcc/testsuite/gcc.dg/pr53037-4.c
--- 39880,39886 ----
  e2ec6d72bdfd63430ec334fa1b08a13a  gcc/testsuite/gcc.dg/pr52862.c
  972a77d78979d9949f2962ab47e1409b  gcc/testsuite/gcc.dg/pr52880.c
  257e77438ad3ee1c091c74ad4c8c91da  gcc/testsuite/gcc.dg/pr52904.c
! 2ef0147a6461ad47446f6cf74e6e5743  gcc/testsuite/gcc.dg/pr53037-1.c
  4aa7b4b0a5ca35106f4a0b6d3580c61d  gcc/testsuite/gcc.dg/pr53037-2.c
  24c4553a939b3bb86fc30396cc2ca4e4  gcc/testsuite/gcc.dg/pr53037-3.c
  f16f3d44fea276b207a89218aa511bc6  gcc/testsuite/gcc.dg/pr53037-4.c
*************** f9b0d770ac8efbe4cd1618bd4f5f02c7  gcc/te
*** 37225,37231 ****
  a7ae641ae915d4d17cbfa2c497af7191  gcc/testsuite/gcc.dg/pr55831.c
  9093b965e2d72b6ea9d041781ec3ac6e  gcc/testsuite/gcc.dg/pr55833.c
  738429a449f631e59942d4c4a1ea318f  gcc/testsuite/gcc.dg/pr55838.c
! 975fc9540fd8b78f89dd99e0e945d6b0  gcc/testsuite/gcc.dg/pr55940.c
  f589ec281e5626d77b47e0f12bf457c6  gcc/testsuite/gcc.dg/pr56023.c
  0fcfb919104f28d2093d6c78b1614e77  gcc/testsuite/gcc.dg/pr56035.c
  86c1bf5478aefe4c3ff08728c4e68621  gcc/testsuite/gcc.dg/pr56078.c
--- 39937,39943 ----
  a7ae641ae915d4d17cbfa2c497af7191  gcc/testsuite/gcc.dg/pr55831.c
  9093b965e2d72b6ea9d041781ec3ac6e  gcc/testsuite/gcc.dg/pr55833.c
  738429a449f631e59942d4c4a1ea318f  gcc/testsuite/gcc.dg/pr55838.c
! 9ea69eaec3491b55b2ddada779fa840c  gcc/testsuite/gcc.dg/pr55940.c
  f589ec281e5626d77b47e0f12bf457c6  gcc/testsuite/gcc.dg/pr56023.c
  0fcfb919104f28d2093d6c78b1614e77  gcc/testsuite/gcc.dg/pr56035.c
  86c1bf5478aefe4c3ff08728c4e68621  gcc/testsuite/gcc.dg/pr56078.c
*************** fa16630a245a9e1bc9f79b9724cd273f  gcc/te
*** 37325,37334 ****
  bf610e4473c928c63330b8dec4a9433d  gcc/testsuite/gcc.dg/pr59920-1.c
  d534c2ea4cd6d22b8ec1a2b03ebf3228  gcc/testsuite/gcc.dg/pr59920-2.c
  6be23609c24b410709e5b6964c73ac00  gcc/testsuite/gcc.dg/pr59920-3.c
! 5fe75bb714828f221ad28a68dff8e419  gcc/testsuite/gcc.dg/pr59924.c
  223cc6353d62fde1284ec3fbb89a1e72  gcc/testsuite/gcc.dg/pr59940.c
  d770167279ee045f4bd83004bf07ebeb  gcc/testsuite/gcc.dg/pr59963-1.c
! e715b43d0855805e9a261562cea7836a  gcc/testsuite/gcc.dg/pr59963-2.c
  ce5fef5a5dc2f244c856c04a7817abb5  gcc/testsuite/gcc.dg/pr59963-3.c
  ac64828e140001e10c478100f49e4711  gcc/testsuite/gcc.dg/pr59992.c
  a3cca18d9883f3d10562bb4d081da747  gcc/testsuite/gcc.dg/pr60013.c
--- 40037,40046 ----
  bf610e4473c928c63330b8dec4a9433d  gcc/testsuite/gcc.dg/pr59920-1.c
  d534c2ea4cd6d22b8ec1a2b03ebf3228  gcc/testsuite/gcc.dg/pr59920-2.c
  6be23609c24b410709e5b6964c73ac00  gcc/testsuite/gcc.dg/pr59920-3.c
! d36acdb994871e29acc0ad22f8fc84c6  gcc/testsuite/gcc.dg/pr59924.c
  223cc6353d62fde1284ec3fbb89a1e72  gcc/testsuite/gcc.dg/pr59940.c
  d770167279ee045f4bd83004bf07ebeb  gcc/testsuite/gcc.dg/pr59963-1.c
! 139c4b20d041f1fbd5a1dada5805cae0  gcc/testsuite/gcc.dg/pr59963-2.c
  ce5fef5a5dc2f244c856c04a7817abb5  gcc/testsuite/gcc.dg/pr59963-3.c
  ac64828e140001e10c478100f49e4711  gcc/testsuite/gcc.dg/pr59992.c
  a3cca18d9883f3d10562bb4d081da747  gcc/testsuite/gcc.dg/pr60013.c
*************** f0a98b415604b215afcf03b4adc83da1  gcc/te
*** 37485,37490 ****
--- 40197,40203 ----
  4087d8917bb8350d7c582ed9bab2c102  gcc/testsuite/gcc.dg/pr66299-2.c
  b823906d4327763b5932ba6d1b19cb10  gcc/testsuite/gcc.dg/pr66299-3.c
  e8ab6748304462c991d39c13563cbf48  gcc/testsuite/gcc.dg/pr66444.c
+ 731818e49e73dd8e721e68212c77ec0f  gcc/testsuite/gcc.dg/pr66552.c
  4906d5420c37dfed13a1fb3f26155472  gcc/testsuite/gcc.dg/pr66618-2.c
  9c66d2ecef938a15acd1290606ecddda  gcc/testsuite/gcc.dg/pr66618.c
  c9a82b59038b9527c9c9c41958f89b87  gcc/testsuite/gcc.dg/pr66688.c
*************** fe7ef582e37d9691649dc50a2e0357f2  gcc/te
*** 37538,37544 ****
  244993ecc8cf3673159d65b46a85e488  gcc/testsuite/gcc.dg/pr68306-2.c
  821e8f1eb04499179f7605c25960f8f3  gcc/testsuite/gcc.dg/pr68306-3.c
  55e36468fb3a1a867386a779d86b0d1e  gcc/testsuite/gcc.dg/pr68306.c
! 7728b630cf5e7fac2c62bc8f6b412915  gcc/testsuite/gcc.dg/pr68317.c
  a6babb5906e3c7d406659baa4eed07d9  gcc/testsuite/gcc.dg/pr68320.c
  612ebbeb3a70817569e18294f309b0a2  gcc/testsuite/gcc.dg/pr68327.c
  0da4236c106cfafd8cfab8e41f71b442  gcc/testsuite/gcc.dg/pr68375.c
--- 40251,40257 ----
  244993ecc8cf3673159d65b46a85e488  gcc/testsuite/gcc.dg/pr68306-2.c
  821e8f1eb04499179f7605c25960f8f3  gcc/testsuite/gcc.dg/pr68306-3.c
  55e36468fb3a1a867386a779d86b0d1e  gcc/testsuite/gcc.dg/pr68306.c
! 0016c177ad55c6a267f34f70eedb9861  gcc/testsuite/gcc.dg/pr68317.c
  a6babb5906e3c7d406659baa4eed07d9  gcc/testsuite/gcc.dg/pr68320.c
  612ebbeb3a70817569e18294f309b0a2  gcc/testsuite/gcc.dg/pr68327.c
  0da4236c106cfafd8cfab8e41f71b442  gcc/testsuite/gcc.dg/pr68375.c
*************** a6babb5906e3c7d406659baa4eed07d9  gcc/te
*** 37552,37558 ****
  bd42af7fb18f01a785450035db393bd0  gcc/testsuite/gcc.dg/pr68668.c
  ec6fafa240e762cbf9e1bfcbf4d8257d  gcc/testsuite/gcc.dg/pr68670-1.c
  64ab8d9be02e0f49ab68cb50079da2f9  gcc/testsuite/gcc.dg/pr68670-2.c
! ff59fb6a728feea7566b02225b12b435  gcc/testsuite/gcc.dg/pr68671.c
  062699e5abb7ea3f3d5cd589f43fdb35  gcc/testsuite/gcc.dg/pr68730.c
  cfe5b42c4e276306b511054dfd2cfd22  gcc/testsuite/gcc.dg/pr68766.c
  06dc900a4654768f44fbe4b05d429457  gcc/testsuite/gcc.dg/pr68785.c
--- 40265,40271 ----
  bd42af7fb18f01a785450035db393bd0  gcc/testsuite/gcc.dg/pr68668.c
  ec6fafa240e762cbf9e1bfcbf4d8257d  gcc/testsuite/gcc.dg/pr68670-1.c
  64ab8d9be02e0f49ab68cb50079da2f9  gcc/testsuite/gcc.dg/pr68670-2.c
! 32d929f9447cb68c2b41bc90a4f2cb67  gcc/testsuite/gcc.dg/pr68671.c
  062699e5abb7ea3f3d5cd589f43fdb35  gcc/testsuite/gcc.dg/pr68730.c
  cfe5b42c4e276306b511054dfd2cfd22  gcc/testsuite/gcc.dg/pr68766.c
  06dc900a4654768f44fbe4b05d429457  gcc/testsuite/gcc.dg/pr68785.c
*************** cfe5b42c4e276306b511054dfd2cfd22  gcc/te
*** 37562,37568 ****
  d58c184c8b2b35820d7ccbb71c51279f  gcc/testsuite/gcc.dg/pr68907.c
  31d8e02bf032671fe8b3a9f836fa61e3  gcc/testsuite/gcc.dg/pr69015.c
  510113a25701409d76b0c7fdf48ba97f  gcc/testsuite/gcc.dg/pr69032.c
! 9cc8790a811a76437d91584a85acfe0a  gcc/testsuite/gcc.dg/pr69047.c
  ea32f1c8046a96724b1e08bfc887f5e6  gcc/testsuite/gcc.dg/pr69070.c
  55bdde3017c469b5c2cc6de510d0701e  gcc/testsuite/gcc.dg/pr69071.c
  31b60f3303cfcbc3553f84ae11924b0d  gcc/testsuite/gcc.dg/pr69097-1.c
--- 40275,40281 ----
  d58c184c8b2b35820d7ccbb71c51279f  gcc/testsuite/gcc.dg/pr68907.c
  31d8e02bf032671fe8b3a9f836fa61e3  gcc/testsuite/gcc.dg/pr69015.c
  510113a25701409d76b0c7fdf48ba97f  gcc/testsuite/gcc.dg/pr69032.c
! b720fd23a87974d71024e54e9b471256  gcc/testsuite/gcc.dg/pr69047.c
  ea32f1c8046a96724b1e08bfc887f5e6  gcc/testsuite/gcc.dg/pr69070.c
  55bdde3017c469b5c2cc6de510d0701e  gcc/testsuite/gcc.dg/pr69071.c
  31b60f3303cfcbc3553f84ae11924b0d  gcc/testsuite/gcc.dg/pr69097-1.c
*************** d8fb37a88dd6af67ddf26141a988183a  gcc/te
*** 37662,37668 ****
  6cfa7bf3ef8f4dfa4f7342ec82b8ccd3  gcc/testsuite/gcc.dg/pr71514.c
  9e22a8b7163e8cdad2514a0bcaaf73e3  gcc/testsuite/gcc.dg/pr71518.c
  79f760cb1168bdcad7ceef62cd0034c3  gcc/testsuite/gcc.dg/pr71558.c
! 2d57cd18f3b5a4ce14ac9f867103994d  gcc/testsuite/gcc.dg/pr71581.c
  2b9e1e622ff06fbe4ca959c56e506b13  gcc/testsuite/gcc.dg/pr71585-2.c
  0c3ce53b3a0f1b6a03c8474ae7853df1  gcc/testsuite/gcc.dg/pr71585-3.c
  5dbb7426de0dfeef8f11864daddbf10e  gcc/testsuite/gcc.dg/pr71585.c
--- 40375,40381 ----
  6cfa7bf3ef8f4dfa4f7342ec82b8ccd3  gcc/testsuite/gcc.dg/pr71514.c
  9e22a8b7163e8cdad2514a0bcaaf73e3  gcc/testsuite/gcc.dg/pr71518.c
  79f760cb1168bdcad7ceef62cd0034c3  gcc/testsuite/gcc.dg/pr71558.c
! 739b4d94b40fa26582202d3125bc2a29  gcc/testsuite/gcc.dg/pr71581.c
  2b9e1e622ff06fbe4ca959c56e506b13  gcc/testsuite/gcc.dg/pr71585-2.c
  0c3ce53b3a0f1b6a03c8474ae7853df1  gcc/testsuite/gcc.dg/pr71585-3.c
  5dbb7426de0dfeef8f11864daddbf10e  gcc/testsuite/gcc.dg/pr71585.c
*************** b4a62cbbba0365642b3f9855baa89f4e  gcc/te
*** 37716,37728 ****
  5c098c8c60a3312c5cda64e55778f17a  gcc/testsuite/gcc.dg/pr78725.c
  c39c9c2cec1ded6fe71f7200c63c5bb9  gcc/testsuite/gcc.dg/pr78768.c
  fc3c051c8f6f62fff4e6ec32193c6410  gcc/testsuite/gcc.dg/pr78775.c
! cb2f3c149065b79c08574558f64b17ea  gcc/testsuite/gcc.dg/pr78902.c
  c45bdb26d88856006e8d87dbae3a8dc1  gcc/testsuite/gcc.dg/pr78957.c
  5d472619627fb0fe87a1ab11a2d43030  gcc/testsuite/gcc.dg/pr78965.c
  1e4ac73f62970b2d036dba88947ba85c  gcc/testsuite/gcc.dg/pr78973-2.c
! 068ff48df415303a93bf599c8f2a51da  gcc/testsuite/gcc.dg/pr78973.c
  3eb967f814b608670a2c9630d4d2a1e0  gcc/testsuite/gcc.dg/pr79080.c
! f86cdc7b802dfa57323b6e4f23c5c181  gcc/testsuite/gcc.dg/pr79214.c
  4d852cee874d982752a5141b529c6205  gcc/testsuite/gcc.dg/pr79214.h
  8607f4379de80cb787541b036e208610  gcc/testsuite/gcc.dg/pr79222.c
  6f2fc038047bf02fb18e391f4aa4f5c0  gcc/testsuite/gcc.dg/pr79223.c
--- 40429,40441 ----
  5c098c8c60a3312c5cda64e55778f17a  gcc/testsuite/gcc.dg/pr78725.c
  c39c9c2cec1ded6fe71f7200c63c5bb9  gcc/testsuite/gcc.dg/pr78768.c
  fc3c051c8f6f62fff4e6ec32193c6410  gcc/testsuite/gcc.dg/pr78775.c
! e7bb380d7beeeff7a5a58c2dd994fde9  gcc/testsuite/gcc.dg/pr78902.c
  c45bdb26d88856006e8d87dbae3a8dc1  gcc/testsuite/gcc.dg/pr78957.c
  5d472619627fb0fe87a1ab11a2d43030  gcc/testsuite/gcc.dg/pr78965.c
  1e4ac73f62970b2d036dba88947ba85c  gcc/testsuite/gcc.dg/pr78973-2.c
! 28a9726b32b8fa1c19bbcafa329a46eb  gcc/testsuite/gcc.dg/pr78973.c
  3eb967f814b608670a2c9630d4d2a1e0  gcc/testsuite/gcc.dg/pr79080.c
! a6178c12cd722231217defd0a55954f1  gcc/testsuite/gcc.dg/pr79214.c
  4d852cee874d982752a5141b529c6205  gcc/testsuite/gcc.dg/pr79214.h
  8607f4379de80cb787541b036e208610  gcc/testsuite/gcc.dg/pr79222.c
  6f2fc038047bf02fb18e391f4aa4f5c0  gcc/testsuite/gcc.dg/pr79223.c
*************** c5719c018c12b0a0dfafc5cce8663b35  gcc/te
*** 37769,37775 ****
  423e68203f69b77d89938e7e12632466  gcc/testsuite/gcc.dg/pr81020.c
  0e9fa6d863f3301949fcec2f6c5d73ec  gcc/testsuite/gcc.dg/pr81030.c
  66ddd134037471a6a0f9653a3d3cee47  gcc/testsuite/gcc.dg/pr81165.c
! a81e8e9023606e13ed169ebe1352d933  gcc/testsuite/gcc.dg/pr81192.c
  597afe973f83e86d9b7fde6d5683f0a2  gcc/testsuite/gcc.dg/pr81227.c
  f8b9e7e40bbdc976061399c74f48e7e0  gcc/testsuite/gcc.dg/pr81228.c
  db7151f89bb35a308fb76b916ed6af28  gcc/testsuite/gcc.dg/pr81281-1.c
--- 40482,40488 ----
  423e68203f69b77d89938e7e12632466  gcc/testsuite/gcc.dg/pr81020.c
  0e9fa6d863f3301949fcec2f6c5d73ec  gcc/testsuite/gcc.dg/pr81030.c
  66ddd134037471a6a0f9653a3d3cee47  gcc/testsuite/gcc.dg/pr81165.c
! 2de0224788ece38079c8970a0ba6621c  gcc/testsuite/gcc.dg/pr81192.c
  597afe973f83e86d9b7fde6d5683f0a2  gcc/testsuite/gcc.dg/pr81227.c
  f8b9e7e40bbdc976061399c74f48e7e0  gcc/testsuite/gcc.dg/pr81228.c
  db7151f89bb35a308fb76b916ed6af28  gcc/testsuite/gcc.dg/pr81281-1.c
*************** e60ee8beac136989d527e9559206833c  gcc/te
*** 37820,37825 ****
--- 40533,40539 ----
  c5d86e710565da10cc02dd413d24789e  gcc/testsuite/gcc.dg/pr83034.c
  fd3c9dad463ae33d02b4e94dbd632234  gcc/testsuite/gcc.dg/pr83044.c
  9afadc7286f5f425c917815b09088199  gcc/testsuite/gcc.dg/pr83047.c
+ 532ab37475e69baa2e1cfaaa30b1b9b3  gcc/testsuite/gcc.dg/pr83072.c
  f07888e58b74d33a6e69cb7e1bff68f5  gcc/testsuite/gcc.dg/pr83089.c
  f15d9e8b068a360ba0c22ea156c8aa69  gcc/testsuite/gcc.dg/pr83100-1.c
  ac3acd9e7ede2310f45dd30cb994a455  gcc/testsuite/gcc.dg/pr83100-2.c
*************** f18c98a6522174d4131ce51bb8396ca6  gcc/te
*** 37876,37882 ****
  aa5aeeb9303713d11e8680d92dbd0bb3  gcc/testsuite/gcc.dg/pr84068.c
  70e4b16ceedc356882716fae5db2910c  gcc/testsuite/gcc.dg/pr84095.c
  0712819fb01550d8a1b60a1d736b34a1  gcc/testsuite/gcc.dg/pr84100.c
! 6e27fdc817f4d8393028a6867d488f38  gcc/testsuite/gcc.dg/pr84131.c
  65735bb8299cddd5582a2ab1342eb625  gcc/testsuite/gcc.dg/pr84206.c
  a43593a06b13b6090fbe6e58dd959845  gcc/testsuite/gcc.dg/pr84225.c
  8569398860bc00c2e87732809c2b291c  gcc/testsuite/gcc.dg/pr84237.c
--- 40590,40596 ----
  aa5aeeb9303713d11e8680d92dbd0bb3  gcc/testsuite/gcc.dg/pr84068.c
  70e4b16ceedc356882716fae5db2910c  gcc/testsuite/gcc.dg/pr84095.c
  0712819fb01550d8a1b60a1d736b34a1  gcc/testsuite/gcc.dg/pr84100.c
! b2368c15a09646fb656b3178fb41f4da  gcc/testsuite/gcc.dg/pr84131.c
  65735bb8299cddd5582a2ab1342eb625  gcc/testsuite/gcc.dg/pr84206.c
  a43593a06b13b6090fbe6e58dd959845  gcc/testsuite/gcc.dg/pr84225.c
  8569398860bc00c2e87732809c2b291c  gcc/testsuite/gcc.dg/pr84237.c
*************** c63e7806c3d2d9248a99f9d2bbc5619b  gcc/te
*** 37906,37912 ****
  350ecde2080adce3b16ae868d60d4aa7  gcc/testsuite/gcc.dg/pr84841.c
  0b86071d460e95cfac961b6b9e5ddc6d  gcc/testsuite/gcc.dg/pr84853.c
  13a2c6ed4e8585ccd298c2bbe58a83f9  gcc/testsuite/gcc.dg/pr84875.c
! 073a086e4a20748b0bcdeb3c2a7021f6  gcc/testsuite/gcc.dg/pr84877.c
  4294a6745f3296677b46dd5bfd884901  gcc/testsuite/gcc.dg/pr84899.c
  dbf69b3874174be30af9ef57a4dddf35  gcc/testsuite/gcc.dg/pr84941.c
  10853acb471ecaea1557d0f0b8f741e4  gcc/testsuite/gcc.dg/pr84953.c
--- 40620,40626 ----
  350ecde2080adce3b16ae868d60d4aa7  gcc/testsuite/gcc.dg/pr84841.c
  0b86071d460e95cfac961b6b9e5ddc6d  gcc/testsuite/gcc.dg/pr84853.c
  13a2c6ed4e8585ccd298c2bbe58a83f9  gcc/testsuite/gcc.dg/pr84875.c
! 156b60629072526d3d0bf2457bd6ed5f  gcc/testsuite/gcc.dg/pr84877.c
  4294a6745f3296677b46dd5bfd884901  gcc/testsuite/gcc.dg/pr84899.c
  dbf69b3874174be30af9ef57a4dddf35  gcc/testsuite/gcc.dg/pr84941.c
  10853acb471ecaea1557d0f0b8f741e4  gcc/testsuite/gcc.dg/pr84953.c
*************** f73659a5796bc5f0f5722abc4a8a97de  gcc/te
*** 37936,37956 ****
  94404ad63f60731d03dc7d04243a8533  gcc/testsuite/gcc.dg/pr85529.c
  0be1cf660fddb2bae9f20427cc5417a0  gcc/testsuite/gcc.dg/pr85598.c
  cb695ce4fc7b5c82485f5253b71e1b94  gcc/testsuite/gcc.dg/pr85799.c
! 621dfe7a956dfdff4a116e46cc5d8720  gcc/testsuite/gcc.dg/pr85859.c
  d906368ab5f3481fc6dc6dc09f603cb0  gcc/testsuite/gcc.dg/pr85876.c
  601f5b2a64200d54ab02283def0d999d  gcc/testsuite/gcc.dg/pr85899.c
  1c2466ed3580140df949296a1b06cdb8  gcc/testsuite/gcc.dg/pr85955.c
  4fa81d8b8cee41548372697495c19c43  gcc/testsuite/gcc.dg/pr86038.c
  5b5b4719957d0eedc94603e6199e0bef  gcc/testsuite/gcc.dg/pr86046.c
  e503844b23d99490f4e4ca524c88adf5  gcc/testsuite/gcc.dg/pr86047.c
  dbbddf5823dbcbf2da02f69c174add7a  gcc/testsuite/gcc.dg/pr86064.c
  7a01da1f64d70f7d2af4f656b97d91a3  gcc/testsuite/gcc.dg/pr86076.c
  cb556d7ecc43fb557a2f4222a58494a6  gcc/testsuite/gcc.dg/pr86114.c
  e42f2bc808c85ce8a42393651a7526fc  gcc/testsuite/gcc.dg/pr86124.c
  a8359c428353397ec48b0315ab73faba  gcc/testsuite/gcc.dg/pr86134.c
! b86e122999608fed0abd4b192e7dd1e8  gcc/testsuite/gcc.dg/pr86179.c
  2ac00ac06cb6d4437ca066cf2a8673d1  gcc/testsuite/gcc.dg/pr86271.c
! 972652b27f9136f45590d2ba210b09e6  gcc/testsuite/gcc.dg/pr86314.c
  1bcd8d7cf72ba6538b92fc829708aa4d  gcc/testsuite/gcc.dg/pr86459.c
  8c8c33b6f45d3f9252fc8c51ddeb30b8  gcc/testsuite/gcc.dg/pr86489.c
  8c5160d7f06fff9c0e8b59f623f4d91c  gcc/testsuite/gcc.dg/pr86572.c
--- 40650,40672 ----
  94404ad63f60731d03dc7d04243a8533  gcc/testsuite/gcc.dg/pr85529.c
  0be1cf660fddb2bae9f20427cc5417a0  gcc/testsuite/gcc.dg/pr85598.c
  cb695ce4fc7b5c82485f5253b71e1b94  gcc/testsuite/gcc.dg/pr85799.c
! 22c773b476514de6260eba2eeb822b39  gcc/testsuite/gcc.dg/pr85811.c
! 455d96b214c03d6e9cf11a859c32e95f  gcc/testsuite/gcc.dg/pr85859.c
  d906368ab5f3481fc6dc6dc09f603cb0  gcc/testsuite/gcc.dg/pr85876.c
  601f5b2a64200d54ab02283def0d999d  gcc/testsuite/gcc.dg/pr85899.c
  1c2466ed3580140df949296a1b06cdb8  gcc/testsuite/gcc.dg/pr85955.c
  4fa81d8b8cee41548372697495c19c43  gcc/testsuite/gcc.dg/pr86038.c
  5b5b4719957d0eedc94603e6199e0bef  gcc/testsuite/gcc.dg/pr86046.c
  e503844b23d99490f4e4ca524c88adf5  gcc/testsuite/gcc.dg/pr86047.c
+ f98abf1027d4ad97dad0dff2de3386fc  gcc/testsuite/gcc.dg/pr86058.c
  dbbddf5823dbcbf2da02f69c174add7a  gcc/testsuite/gcc.dg/pr86064.c
  7a01da1f64d70f7d2af4f656b97d91a3  gcc/testsuite/gcc.dg/pr86076.c
  cb556d7ecc43fb557a2f4222a58494a6  gcc/testsuite/gcc.dg/pr86114.c
  e42f2bc808c85ce8a42393651a7526fc  gcc/testsuite/gcc.dg/pr86124.c
  a8359c428353397ec48b0315ab73faba  gcc/testsuite/gcc.dg/pr86134.c
! 1ad6ee86200302eb3843aafe30ff446a  gcc/testsuite/gcc.dg/pr86179.c
  2ac00ac06cb6d4437ca066cf2a8673d1  gcc/testsuite/gcc.dg/pr86271.c
! 5d811fedd1cc9c16668212aff6377a97  gcc/testsuite/gcc.dg/pr86314.c
  1bcd8d7cf72ba6538b92fc829708aa4d  gcc/testsuite/gcc.dg/pr86459.c
  8c8c33b6f45d3f9252fc8c51ddeb30b8  gcc/testsuite/gcc.dg/pr86489.c
  8c5160d7f06fff9c0e8b59f623f4d91c  gcc/testsuite/gcc.dg/pr86572.c
*************** fc39e8040aa9d9bd91f95b63bc50cf33  gcc/te
*** 37977,37988 ****
  24f5935b8fe458d6ce1abe2a74f9d885  gcc/testsuite/gcc.dg/pr87273.c
  337a0c71f5ab56c90bfd322257a744d1  gcc/testsuite/gcc.dg/pr87286.c
  1afd30125952d519c404e3a66f15d37a  gcc/testsuite/gcc.dg/pr87309.c
! d993f2176197a26063afa56f59a88e76  gcc/testsuite/gcc.dg/pr87314-1.c
  a8171870ab90ee72b6e10d1889f14627  gcc/testsuite/gcc.dg/pr87320.c
! d4b5fe7009fa58684e41e1e4cafd3bfe  gcc/testsuite/gcc.dg/pr87347.c
  b0750cc8ba04869cc1e70217f4eebdbc  gcc/testsuite/gcc.dg/pr87415.c
  51488233d2ef3dad91c1b1404439bff0  gcc/testsuite/gcc.dg/pr87483.c
! 110e9a8d813de3be011000ba45ae3bf7  gcc/testsuite/gcc.dg/pr87485.c
  a357c4dca7ce74a04dd61ff432ff8404  gcc/testsuite/gcc.dg/pr87490.c
  9f5835dddff06438d1493a4e9eb56c06  gcc/testsuite/gcc.dg/pr87600-1.c
  941bf2bb808441fd8f30ce9dc0733891  gcc/testsuite/gcc.dg/pr87600-2.c
--- 40693,40704 ----
  24f5935b8fe458d6ce1abe2a74f9d885  gcc/testsuite/gcc.dg/pr87273.c
  337a0c71f5ab56c90bfd322257a744d1  gcc/testsuite/gcc.dg/pr87286.c
  1afd30125952d519c404e3a66f15d37a  gcc/testsuite/gcc.dg/pr87309.c
! 004bfdca72fcdf0db7357d12dded3f59  gcc/testsuite/gcc.dg/pr87314-1.c
  a8171870ab90ee72b6e10d1889f14627  gcc/testsuite/gcc.dg/pr87320.c
! c1334ed9c6c68281799e5e493bcc387a  gcc/testsuite/gcc.dg/pr87347.c
  b0750cc8ba04869cc1e70217f4eebdbc  gcc/testsuite/gcc.dg/pr87415.c
  51488233d2ef3dad91c1b1404439bff0  gcc/testsuite/gcc.dg/pr87483.c
! b1250df26ff8ccc22fe46e310c4934e6  gcc/testsuite/gcc.dg/pr87485.c
  a357c4dca7ce74a04dd61ff432ff8404  gcc/testsuite/gcc.dg/pr87490.c
  9f5835dddff06438d1493a4e9eb56c06  gcc/testsuite/gcc.dg/pr87600-1.c
  941bf2bb808441fd8f30ce9dc0733891  gcc/testsuite/gcc.dg/pr87600-2.c
*************** bcac07b1acca5a8196371cf13c0b577a  gcc/te
*** 38021,38027 ****
  95b6cfbbafa78dde8688dd76cf3c8809  gcc/testsuite/gcc.dg/pr88598-3.c
  e7c47fd84acf8544d165e7ff92637bbb  gcc/testsuite/gcc.dg/pr88598-4.c
  92edb668000e47c83433d9098b447a7a  gcc/testsuite/gcc.dg/pr88598-5.c
! eb789e4c7d1aa8d211075610854d6ee1  gcc/testsuite/gcc.dg/pr88660.c
  f0e3c1be48167f73407ffc807959029d  gcc/testsuite/gcc.dg/pr88676.c
  3e464f8f7e2ae513ff8041784fc490fe  gcc/testsuite/gcc.dg/pr88701.c
  77d7b1aaa25c3013d1292da202fa2042  gcc/testsuite/gcc.dg/pr88784-1.c
--- 40737,40743 ----
  95b6cfbbafa78dde8688dd76cf3c8809  gcc/testsuite/gcc.dg/pr88598-3.c
  e7c47fd84acf8544d165e7ff92637bbb  gcc/testsuite/gcc.dg/pr88598-4.c
  92edb668000e47c83433d9098b447a7a  gcc/testsuite/gcc.dg/pr88598-5.c
! 3517cc845dc294c4857e011e382bbd2b  gcc/testsuite/gcc.dg/pr88660.c
  f0e3c1be48167f73407ffc807959029d  gcc/testsuite/gcc.dg/pr88676.c
  3e464f8f7e2ae513ff8041784fc490fe  gcc/testsuite/gcc.dg/pr88701.c
  77d7b1aaa25c3013d1292da202fa2042  gcc/testsuite/gcc.dg/pr88784-1.c
*************** fe4716424056f67142ad5f2b38759f16  gcc/te
*** 38039,38045 ****
  f9c1ef445b699a39ecd5de8bef2f58a1  gcc/testsuite/gcc.dg/pr88855.c
  53b8ee9b592cb03b7a7fd424ee91842b  gcc/testsuite/gcc.dg/pr88870.c
  6c16d1c0a7bddee382161ec4f69c7e3e  gcc/testsuite/gcc.dg/pr88905.c
! a7a1b72897da4ca59de95df6ba53619f  gcc/testsuite/gcc.dg/pr88928.c
  b6a6442523e13cc8d22cef6d9b29643f  gcc/testsuite/gcc.dg/pr89037.c
  5a1677356a851d40c0dcb114a77bf62a  gcc/testsuite/gcc.dg/pr89045.c
  5572f39e552c4af805d3f1f11f16d9e7  gcc/testsuite/gcc.dg/pr89061.c
--- 40755,40761 ----
  f9c1ef445b699a39ecd5de8bef2f58a1  gcc/testsuite/gcc.dg/pr88855.c
  53b8ee9b592cb03b7a7fd424ee91842b  gcc/testsuite/gcc.dg/pr88870.c
  6c16d1c0a7bddee382161ec4f69c7e3e  gcc/testsuite/gcc.dg/pr88905.c
! 4591787bed42e90bf0cd384f7948f822  gcc/testsuite/gcc.dg/pr88928.c
  b6a6442523e13cc8d22cef6d9b29643f  gcc/testsuite/gcc.dg/pr89037.c
  5a1677356a851d40c0dcb114a77bf62a  gcc/testsuite/gcc.dg/pr89045.c
  5572f39e552c4af805d3f1f11f16d9e7  gcc/testsuite/gcc.dg/pr89061.c
*************** f7950ed4d54333553c86f865d0081b4f  gcc/te
*** 38052,38059 ****
  e0bb97c06584dce3955740a9322025ef  gcc/testsuite/gcc.dg/pr89342.c
  c286f511fc34900076e76c6ff461cb07  gcc/testsuite/gcc.dg/pr89350.c
  db531a9355f9326f8fbafbee1a0c4e91  gcc/testsuite/gcc.dg/pr89354.c
! 6221838b8b11138e7af5cb053b6f7f42  gcc/testsuite/gcc.dg/pr89410-1.c
! 747802bbe9a526d7e191d9bd842c1d2e  gcc/testsuite/gcc.dg/pr89410-2.c
  6dcc3744581a361120681b2c30659453  gcc/testsuite/gcc.dg/pr89434.c
  55a03057d405000b76e3662d6aca0bd8  gcc/testsuite/gcc.dg/pr89435.c
  b24f1c825f27212c7ae452c5901c9e99  gcc/testsuite/gcc.dg/pr89438.c
--- 40768,40775 ----
  e0bb97c06584dce3955740a9322025ef  gcc/testsuite/gcc.dg/pr89342.c
  c286f511fc34900076e76c6ff461cb07  gcc/testsuite/gcc.dg/pr89350.c
  db531a9355f9326f8fbafbee1a0c4e91  gcc/testsuite/gcc.dg/pr89354.c
! d41b04f16072017f470a79dc6c966db2  gcc/testsuite/gcc.dg/pr89410-1.c
! 52b36a7c03ba5d39d216a20a1408b619  gcc/testsuite/gcc.dg/pr89410-2.c
  6dcc3744581a361120681b2c30659453  gcc/testsuite/gcc.dg/pr89434.c
  55a03057d405000b76e3662d6aca0bd8  gcc/testsuite/gcc.dg/pr89435.c
  b24f1c825f27212c7ae452c5901c9e99  gcc/testsuite/gcc.dg/pr89438.c
*************** ecd7d1b355518172cace6c6c1ee6299e  gcc/te
*** 38069,38075 ****
  37d9958e568bd455cf03bd403e5d9560  gcc/testsuite/gcc.dg/pr89590.c
  d59fd07bb22cd966a24bae661a158598  gcc/testsuite/gcc.dg/pr89594.c
  7e94f0d5a822303e0339481ee07ad796  gcc/testsuite/gcc.dg/pr89679.c
! 0f2799bd46b769b45e86fb46b7262ad9  gcc/testsuite/gcc.dg/pr89689.c
  e6faf0945d1f5f965c65759fe557a7d4  gcc/testsuite/gcc.dg/pr89734.c
  85a523bf44ade39913dc381d9bef54fe  gcc/testsuite/gcc.dg/pr89737.c
  6b4a47585c7d60c9cfe3d8323359f4e4  gcc/testsuite/gcc.dg/pr89795.c
--- 40785,40791 ----
  37d9958e568bd455cf03bd403e5d9560  gcc/testsuite/gcc.dg/pr89590.c
  d59fd07bb22cd966a24bae661a158598  gcc/testsuite/gcc.dg/pr89594.c
  7e94f0d5a822303e0339481ee07ad796  gcc/testsuite/gcc.dg/pr89679.c
! c94491c9101acbf5f3f978e24437879b  gcc/testsuite/gcc.dg/pr89689.c
  e6faf0945d1f5f965c65759fe557a7d4  gcc/testsuite/gcc.dg/pr89734.c
  85a523bf44ade39913dc381d9bef54fe  gcc/testsuite/gcc.dg/pr89737.c
  6b4a47585c7d60c9cfe3d8323359f4e4  gcc/testsuite/gcc.dg/pr89795.c
*************** e25de604fa47d4cbf21b04eb8d96eedc  gcc/te
*** 38091,38096 ****
--- 40807,40813 ----
  e2ae67eb39b2578af8765a01c6e6dd08  gcc/testsuite/gcc.dg/pr90892.c
  f05824bb6a8ee4df57182feba94d6224  gcc/testsuite/gcc.dg/pr90898.c
  29bddba09d773b04b2a3a7f640bd0ece  gcc/testsuite/gcc.dg/pr91014.c
+ 24c438728a57d7ea88d20d12f53f789e  gcc/testsuite/gcc.dg/pr91029.c
  da28f19c06ff7662e7a7546ec852e25c  gcc/testsuite/gcc.dg/pr91069.c
  0835b2ca75603c1c11ac781095ca851d  gcc/testsuite/gcc.dg/pr91172.c
  b3a812009694e752663ca04925320324  gcc/testsuite/gcc.dg/pr91181.c
*************** c4f72ee1103ecf59a0e370d5ea316570  gcc/te
*** 38120,38126 ****
  21313865973cc9f69ee51284243a9b1e  gcc/testsuite/gcc.dg/pr92860-2.c
  437834c1b71aaf7e3ba46cd5e9b7f2e3  gcc/testsuite/gcc.dg/pr92860.c
  c6b310d653d3a9d0ecd1fbd653315b60  gcc/testsuite/gcc.dg/pr93054.c
! 84a3ed780b5140f904a15179aba6d44b  gcc/testsuite/gcc.dg/pr93210.c
  aba6c090b84dec2b50ffaa3db65f2664  gcc/testsuite/gcc.dg/pr93231.c
  e09e9e36a7e79da810f6ebc143854133  gcc/testsuite/gcc.dg/pr93376.c
  38678157729cfc09b25253d5a32945a6  gcc/testsuite/gcc.dg/pr93399.c
--- 40837,40843 ----
  21313865973cc9f69ee51284243a9b1e  gcc/testsuite/gcc.dg/pr92860-2.c
  437834c1b71aaf7e3ba46cd5e9b7f2e3  gcc/testsuite/gcc.dg/pr92860.c
  c6b310d653d3a9d0ecd1fbd653315b60  gcc/testsuite/gcc.dg/pr93054.c
! c564806b303d6280cc0d231bd9bd54a5  gcc/testsuite/gcc.dg/pr93210.c
  aba6c090b84dec2b50ffaa3db65f2664  gcc/testsuite/gcc.dg/pr93231.c
  e09e9e36a7e79da810f6ebc143854133  gcc/testsuite/gcc.dg/pr93376.c
  38678157729cfc09b25253d5a32945a6  gcc/testsuite/gcc.dg/pr93399.c
*************** a381b8115d1a3059738b007b59ec85b1  gcc/te
*** 38145,38151 ****
  96f7c73b6cb0b7b5f65e07636845c78b  gcc/testsuite/gcc.dg/pr93820.c
  be052ff03204f5c4aab2ab7a358b6b27  gcc/testsuite/gcc.dg/pr93874.c
  87b5cdd84800016a77df3942458b9c21  gcc/testsuite/gcc.dg/pr93953.c
! fd3e909d69728e1a465bc6957c76d879  gcc/testsuite/gcc.dg/pr93986.c
  cfd561b135ceb50d230b596505e94c74  gcc/testsuite/gcc.dg/pr93995.c
  cab59fbf55d5a85f5adade2417f6f944  gcc/testsuite/gcc.dg/pr94001.c
  7188ff1454897a578bd9300a88e8188b  gcc/testsuite/gcc.dg/pr94002.c
--- 40862,40868 ----
  96f7c73b6cb0b7b5f65e07636845c78b  gcc/testsuite/gcc.dg/pr93820.c
  be052ff03204f5c4aab2ab7a358b6b27  gcc/testsuite/gcc.dg/pr93874.c
  87b5cdd84800016a77df3942458b9c21  gcc/testsuite/gcc.dg/pr93953.c
! 8bda02493a3432a443e4f3c222a0d773  gcc/testsuite/gcc.dg/pr93986.c
  cfd561b135ceb50d230b596505e94c74  gcc/testsuite/gcc.dg/pr93995.c
  cab59fbf55d5a85f5adade2417f6f944  gcc/testsuite/gcc.dg/pr94001.c
  7188ff1454897a578bd9300a88e8188b  gcc/testsuite/gcc.dg/pr94002.c
*************** e6e88382b0b17a4cb6785bb81a1d284d  gcc/te
*** 38159,38164 ****
--- 40876,40884 ----
  6c1514f39eb5b357c0046e6bfa0fed0d  gcc/testsuite/gcc.dg/pr94188.c
  2fd955a23ac8065ad038e14f075b2dcd  gcc/testsuite/gcc.dg/pr94189.c
  33ee3d7c4f5b858efa6ac81513b7d54b  gcc/testsuite/gcc.dg/pr94211.c
+ aca5699230463aa97bb187a957033ef4  gcc/testsuite/gcc.dg/pr94234-1.c
+ 6e0bdb9313d79fa323b20282aeaaf5aa  gcc/testsuite/gcc.dg/pr94234-2.c
+ f234f94f3aeabd2dbf3097ff1d28dc9f  gcc/testsuite/gcc.dg/pr94234-3.c
  dbee3538a18bef45f3a54729b574ae13  gcc/testsuite/gcc.dg/pr94269.c
  8752d4b61db563ffd1bc6f8c992edb09  gcc/testsuite/gcc.dg/pr94277.c
  2a5ea2d9089b86f01982fe32f61729a7  gcc/testsuite/gcc.dg/pr94283.c
*************** b973a838787d1cdd121e558494416509  gcc/te
*** 38170,38198 ****
  40138e8aeca128ff9734d1724ce60836  gcc/testsuite/gcc.dg/pr94436.c
  fd36e17ce5abb4e77212836c4aa61205  gcc/testsuite/gcc.dg/pr94526.c
  d2666025ae58c20e36d06243ec17b107  gcc/testsuite/gcc.dg/pr94574.c
! 42f4107edbbd34f9f5e97042cae71036  gcc/testsuite/gcc.dg/pr94600-1.c
  515ded7ae44445fdd45ad77c875a9139  gcc/testsuite/gcc.dg/pr94600-2.c
! dc387b5c7070c07e70064e2022d37433  gcc/testsuite/gcc.dg/pr94600-3.c
  35545b21a99f804ccec657da20231447  gcc/testsuite/gcc.dg/pr94600-4.c
! 5fdf97eb45e19c9f889b28dc5c69b6eb  gcc/testsuite/gcc.dg/pr94600-5.c
! eac5798b27dbf479e9774dd3ff8a8be9  gcc/testsuite/gcc.dg/pr94600-6.c
! c68ba5b1b529a21697713c3dffe4e940  gcc/testsuite/gcc.dg/pr94600-7.c
! 7db38bf750ef12abb5d4c981f3a0670d  gcc/testsuite/gcc.dg/pr94600-8.c
  c72df927b15d18de0d1c05eef46be3ba  gcc/testsuite/gcc.dg/pr94705.c
  3b3ec7fa99929281677300b4678c9928  gcc/testsuite/gcc.dg/pr94780.c
  2a8fd6be342ac636e177ee04b63e5a07  gcc/testsuite/gcc.dg/pr94784.c
  4a231f2fae7b7510cf7b3374a29735db  gcc/testsuite/gcc.dg/pr94842.c
  3d72c356497bfbeaacb889491ca6f756  gcc/testsuite/gcc.dg/pr94873.c
  903a1bb951735666f689961e0bf5ab2a  gcc/testsuite/gcc.dg/pr94968.c
  1feb85be5d60e05ef1bda1b1214cd644  gcc/testsuite/gcc.dg/pr95118.c
! 6b3d2610ef6b920618884db6c8135b74  gcc/testsuite/gcc.dg/pr95133.c
  130d9acc88fc75c668740cf769b79052  gcc/testsuite/gcc.dg/pr95141.c
  1875568db88d1845f820b932cbc3f859  gcc/testsuite/gcc.dg/pr95171.c
! d6b62b5a89d45f0f06171c8b01716c4e  gcc/testsuite/gcc.dg/pr95580.c
  aeb304797b8e2c6d1005832c4cef054a  gcc/testsuite/gcc.dg/pr95694.c
  563c3da44149a53b80a4845909b6be8a  gcc/testsuite/gcc.dg/pr95713.c
! 1baa42b74e7a27e173aa760865ce25dd  gcc/testsuite/gcc.dg/pr95857.c
  80ae6629e66d6fc96b4f8bee9d1fab64  gcc/testsuite/gcc.dg/pr96260.c
  8f40fe33f90f43ebf42e8cffda5509ad  gcc/testsuite/gcc.dg/pr96307.c
  0335046a3e339e020569e9abf2dfd119  gcc/testsuite/gcc.dg/pr96335.c
  b0c24e576cdfbf580f93fa792c734044  gcc/testsuite/gcc.dg/pr96370.c
--- 40890,40926 ----
  40138e8aeca128ff9734d1724ce60836  gcc/testsuite/gcc.dg/pr94436.c
  fd36e17ce5abb4e77212836c4aa61205  gcc/testsuite/gcc.dg/pr94526.c
  d2666025ae58c20e36d06243ec17b107  gcc/testsuite/gcc.dg/pr94574.c
! f244fa220718f337609f30faac73a8e4  gcc/testsuite/gcc.dg/pr94600-1.c
  515ded7ae44445fdd45ad77c875a9139  gcc/testsuite/gcc.dg/pr94600-2.c
! eaf63adfe02395ba887103318bf0daac  gcc/testsuite/gcc.dg/pr94600-3.c
  35545b21a99f804ccec657da20231447  gcc/testsuite/gcc.dg/pr94600-4.c
! 0eb5b871db47acd934bf9f47ecfa1e90  gcc/testsuite/gcc.dg/pr94600-5.c
! 026dc448d622cb6ef6398a8f09a7cba7  gcc/testsuite/gcc.dg/pr94600-6.c
! 6f29cad24532ba3f1e3e94e8c890e24a  gcc/testsuite/gcc.dg/pr94600-7.c
! 545a7b1899e6db6c3e77c28facf87dca  gcc/testsuite/gcc.dg/pr94600-8.c
  c72df927b15d18de0d1c05eef46be3ba  gcc/testsuite/gcc.dg/pr94705.c
  3b3ec7fa99929281677300b4678c9928  gcc/testsuite/gcc.dg/pr94780.c
  2a8fd6be342ac636e177ee04b63e5a07  gcc/testsuite/gcc.dg/pr94784.c
  4a231f2fae7b7510cf7b3374a29735db  gcc/testsuite/gcc.dg/pr94842.c
  3d72c356497bfbeaacb889491ca6f756  gcc/testsuite/gcc.dg/pr94873.c
+ c2fd25feddce893f7652a84fe5746fa4  gcc/testsuite/gcc.dg/pr94963.c
  903a1bb951735666f689961e0bf5ab2a  gcc/testsuite/gcc.dg/pr94968.c
+ e4dde89601272f1b99612f3aef7cb7e5  gcc/testsuite/gcc.dg/pr95052.c
  1feb85be5d60e05ef1bda1b1214cd644  gcc/testsuite/gcc.dg/pr95118.c
! 374fe6896d7f734385c9df06306a39f3  gcc/testsuite/gcc.dg/pr95133.c
  130d9acc88fc75c668740cf769b79052  gcc/testsuite/gcc.dg/pr95141.c
  1875568db88d1845f820b932cbc3f859  gcc/testsuite/gcc.dg/pr95171.c
! 79837f1ec92b7f5577d7a9f37e4bf533  gcc/testsuite/gcc.dg/pr95580.c
! 5f40dd6be0e7fc5458a04a5165d1690d  gcc/testsuite/gcc.dg/pr95582.c
  aeb304797b8e2c6d1005832c4cef054a  gcc/testsuite/gcc.dg/pr95694.c
  563c3da44149a53b80a4845909b6be8a  gcc/testsuite/gcc.dg/pr95713.c
! 2ca01f7360c22d4b40f1749a585d52a6  gcc/testsuite/gcc.dg/pr95770.c
! c22461eed6a27d8515ea9a6c4843f9d8  gcc/testsuite/gcc.dg/pr95853.c
! ca4e49a1cf17b159d9fb78f90317403f  gcc/testsuite/gcc.dg/pr95854.c
! 15fe6f110b98e652f1af3b94b132063a  gcc/testsuite/gcc.dg/pr95857.c
! af3ad20732337f1695c7cc2a26807ebb  gcc/testsuite/gcc.dg/pr96239.c
  80ae6629e66d6fc96b4f8bee9d1fab64  gcc/testsuite/gcc.dg/pr96260.c
+ 02fadbb0374dfcd02a07be839ec9bdb5  gcc/testsuite/gcc.dg/pr96298.c
  8f40fe33f90f43ebf42e8cffda5509ad  gcc/testsuite/gcc.dg/pr96307.c
  0335046a3e339e020569e9abf2dfd119  gcc/testsuite/gcc.dg/pr96335.c
  b0c24e576cdfbf580f93fa792c734044  gcc/testsuite/gcc.dg/pr96370.c
*************** c85ad54f7a32606675e871f53ed5eb60  gcc/te
*** 38202,38222 ****
--- 40930,41031 ----
  e81595a04ac86a2f9b83fb199a7245c9  gcc/testsuite/gcc.dg/pr96377-4.c
  20d13f1ecae35ce49fe1ec066b3e7d64  gcc/testsuite/gcc.dg/pr96377-5.c
  96133f3391c2edd8772f7e297726d80c  gcc/testsuite/gcc.dg/pr96377-6.c
+ 327090f1ff0488bf70d342d108613ef0  gcc/testsuite/gcc.dg/pr96453.c
+ 6f3a630e04585e6954c3af6c3da4cd68  gcc/testsuite/gcc.dg/pr96466.c
  f6dbe508409f3fdef69bb18356571537  gcc/testsuite/gcc.dg/pr96514.c
+ 12772272fb5504a0b84c4743fde95b04  gcc/testsuite/gcc.dg/pr96558.c
+ 3ee9fc3b7d139b2e57d06a5c240864a3  gcc/testsuite/gcc.dg/pr96573.c
  06ae27dde8da22331e1e8dcd059d4d03  gcc/testsuite/gcc.dg/pr96579.c
+ 1dd2da186c8f2d34b4589c79f6204749  gcc/testsuite/gcc.dg/pr96674.c
+ 2d09784e99aa11a2937586b5d4685a1f  gcc/testsuite/gcc.dg/pr96708-negative.c
+ 712f12b913297d5282df212af57c5475  gcc/testsuite/gcc.dg/pr96708-positive.c
+ dbc34bc46bbc999bcf2710255622383b  gcc/testsuite/gcc.dg/pr96818.c
+ 9bec2b8a25f8938fad5ab8edff428134  gcc/testsuite/gcc.dg/pr96931.c
+ e2fcbb1a028a1d70899c14aaedb82450  gcc/testsuite/gcc.dg/pr97078.c
+ 8547a0b7d698cdd8886f6f9de8cd32a5  gcc/testsuite/gcc.dg/pr97172-2.c
+ bae42579ca300d6f7e5fdf641f2ce9ed  gcc/testsuite/gcc.dg/pr97172.c
+ cadcdac808b965a7b33d87188deac421  gcc/testsuite/gcc.dg/pr97192.c
+ f54e2f3a93cb93910a45086bec0fe1cc  gcc/testsuite/gcc.dg/pr97238.c
+ f7aa1c2f4e37387cc8dcab91ba373ee5  gcc/testsuite/gcc.dg/pr97315-2.c
+ 4468f5cbee2c28317bf29cd7ff71d706  gcc/testsuite/gcc.dg/pr97317.c
+ f24d05a3d28035f5da6c7d16e133c906  gcc/testsuite/gcc.dg/pr97322.c
  8fa62770eef31189349eee6b772e8713  gcc/testsuite/gcc.dg/pr97357.c
+ 7bff46d927a6231f25705ba920aec9cc  gcc/testsuite/gcc.dg/pr97359.c
+ 775512ace87117ff427697fb95c7c1c3  gcc/testsuite/gcc.dg/pr97360-2.c
+ 738afc9afc77243f50900bb48cc32282  gcc/testsuite/gcc.dg/pr97371.c
+ ec7b2a6f20da4f623564af36f5331625  gcc/testsuite/gcc.dg/pr97378.c
+ af36f63bf5f8b0da9ea8dcf23d6e5bce  gcc/testsuite/gcc.dg/pr97381.c
+ b31b0ea66cba8ce6c0d95482af036a8e  gcc/testsuite/gcc.dg/pr97396.c
+ 327cfe0c6a90919b42e97a08139c9a16  gcc/testsuite/gcc.dg/pr97459-1.c
+ b74c97c2ae6a2199c3744ddc5bfe53a5  gcc/testsuite/gcc.dg/pr97459-2.c
+ db6e85a731f5749b1342e34fc1ea5efb  gcc/testsuite/gcc.dg/pr97459-3.c
+ 5778f459d76f052f01bbed3047fe2a97  gcc/testsuite/gcc.dg/pr97459-4.c
+ e5d16b9f9c532e67fc49dac83dae9dfc  gcc/testsuite/gcc.dg/pr97459-5.c
+ 68f4bf74f959145343b2be04cbb637e2  gcc/testsuite/gcc.dg/pr97459-6.c
+ 26f58239d948b33f8c00fe536f2e70c0  gcc/testsuite/gcc.dg/pr97462.c
+ 69dbe8fa74f80777740e4d8f14423008  gcc/testsuite/gcc.dg/pr97463.c
+ fe6de5b97b33c34bab11c87637080401  gcc/testsuite/gcc.dg/pr97467.c
  427918230a8f9d519334c7bbc79f902a  gcc/testsuite/gcc.dg/pr97487-1.c
  b5fa0cd5917ab8447128f90c9aa66d86  gcc/testsuite/gcc.dg/pr97487-2.c
+ 43e154ab75e9e066b1708f1fd540f01d  gcc/testsuite/gcc.dg/pr97488.c
+ 3d2c253c47554b8b55f48c640720322a  gcc/testsuite/gcc.dg/pr97501.c
+ 9f5e6762cd3624ef7e2e96b65acdd7b2  gcc/testsuite/gcc.dg/pr97502.c
+ 3f4897ff06cd40a52efdfd8cf5cfe20e  gcc/testsuite/gcc.dg/pr97505.c
+ 0372d3b6bca1fb5025a2ea1c6486107c  gcc/testsuite/gcc.dg/pr97515.c
+ 19208ac0378a79bcdb85c3c4ad464513  gcc/testsuite/gcc.dg/pr97520.c
  30f53d499facb7677def27401106f489  gcc/testsuite/gcc.dg/pr97534.c
  8de28fbb1fc8308939d75b5aa08ac83a  gcc/testsuite/gcc.dg/pr97539.c
+ 5d0af6aab5fe5b236b6b147eaae46687  gcc/testsuite/gcc.dg/pr97555.c
+ d475f5693217d1089a8f364e12186d86  gcc/testsuite/gcc.dg/pr97567-2.c
+ bb0f91c384e2b0c10f6a2b569f227ce2  gcc/testsuite/gcc.dg/pr97567.c
+ 9109b1f7500a802befa961d356457496  gcc/testsuite/gcc.dg/pr97579.c
+ 691c363da5b53e768141125051f86be1  gcc/testsuite/gcc.dg/pr97596.c
+ 5d99c96714043644e7ac316837a20fb4  gcc/testsuite/gcc.dg/pr97721.c
+ b31656f3d589501279f9b3957d76e7d8  gcc/testsuite/gcc.dg/pr97725.c
+ 2cafeb388acee553eacac0843032a2b5  gcc/testsuite/gcc.dg/pr97737.c
+ cdfeca036db478839d22133998667f05  gcc/testsuite/gcc.dg/pr97741.c
+ 7726d531aea4bd8eb9d35761d60c7527  gcc/testsuite/gcc.dg/pr97750.c
+ 32dbdf99e8be7a3cc9392721bd1d794d  gcc/testsuite/gcc.dg/pr97806.c
+ bb5958739b960c32b06e6d3daf4186ba  gcc/testsuite/gcc.dg/pr97830.c
+ ebd05406fb069fea2c49c527155a3864  gcc/testsuite/gcc.dg/pr97860.c
+ bfcdbe04e4db5115b18a5676acde0c97  gcc/testsuite/gcc.dg/pr97882.c
  7cc410466db1f834697611a61399f7ba  gcc/testsuite/gcc.dg/pr97897.c
+ c486b3b3763d822f61027894e246354b  gcc/testsuite/gcc.dg/pr97932.c
+ dd83a8b867ef8c886adacb097f55bc6b  gcc/testsuite/gcc.dg/pr97953.c
+ 7db64a5a0b5d2c480da44e8b2e7b4892  gcc/testsuite/gcc.dg/pr97954.c
+ 071d2ae1bd35b15c3f27a168b4050eb2  gcc/testsuite/gcc.dg/pr97955.c
+ 2fbd889735fcfc930838d4d0e5f735b3  gcc/testsuite/gcc.dg/pr97979.c
+ 25eabe894b19890870bd6364b863658a  gcc/testsuite/gcc.dg/pr97981.c
+ 3f8832bc33cb7145586e46cab40d393c  gcc/testsuite/gcc.dg/pr98029.c
+ 21a998d56f162b789d08957b34fcad4c  gcc/testsuite/gcc.dg/pr98099.c
  ec1830becced622760bda688ca2bb126  gcc/testsuite/gcc.dg/pr9814-1.c
+ 58a90f953d863b4da3602876f58c3dad  gcc/testsuite/gcc.dg/pr98147.c
+ ab67ce545d0c71a9f5f15c381f3e0c67  gcc/testsuite/gcc.dg/pr98190.c
+ 46ac3184f9690034210e99d5d2ca729e  gcc/testsuite/gcc.dg/pr98211.c
  0ffdbfe76fd130e510ec19ac27307b9d  gcc/testsuite/gcc.dg/pr98255.c
+ 885b5b8dbec3343d2d1f7815afe1fba4  gcc/testsuite/gcc.dg/pr98271.c
+ bab0f33f3dc1129eb8dcb00974efb2ba  gcc/testsuite/gcc.dg/pr98272.c
  358377419a8fc398557c8e69170ddbc9  gcc/testsuite/gcc.dg/pr98287.c
+ 7970814b2b083dc51dccbb47c9b622d3  gcc/testsuite/gcc.dg/pr98330.c
  2232cd10c89412a750db8fa0a772b747  gcc/testsuite/gcc.dg/pr98331.c
+ 4f0e63f00efd7d973808399703ca48a9  gcc/testsuite/gcc.dg/pr98721-1.c
+ b21ece181cd66a1e64aa9dde33e8d1d0  gcc/testsuite/gcc.dg/pr98721-2.c
  6f1182e067a6b12f97acf69996773c2e  gcc/testsuite/gcc.dg/pr98766.c
+ adabb0bef50f4d7481373e03730d7eca  gcc/testsuite/gcc.dg/pr98793.c
+ 740d7fb36e41a4cae562cdea26998ff2  gcc/testsuite/gcc.dg/pr98807.c
+ 310114e6ce04de1373727da3fff452a3  gcc/testsuite/gcc.dg/pr99104.c
+ c8ed2bc909c8f2213b8af5e0e34bb1fc  gcc/testsuite/gcc.dg/pr99122-1.c
+ d309a0c8c644885e7798b22c4789bc63  gcc/testsuite/gcc.dg/pr99122-2.c
+ 18aad8f5bd43bff2ff6c9709072d550c  gcc/testsuite/gcc.dg/pr99122-3.c
  2eea8fc255e64207bc4e80b2eb33a6f0  gcc/testsuite/gcc.dg/pr99136.c
  915d115cd30c8f24c98345c9a7a5593c  gcc/testsuite/gcc.dg/pr99224.c
+ 96da29b8d07f768f24eaeff4ea07b505  gcc/testsuite/gcc.dg/pr99230.c
+ 41121635897d600e326a315863592036  gcc/testsuite/gcc.dg/pr99296.c
+ 38a11f1689638e5cfd3cca06271ced62  gcc/testsuite/gcc.dg/pr99323-1.c
+ cf29b4ab0f03a85493ce03864c0d7d66  gcc/testsuite/gcc.dg/pr99323-2.c
+ 110164c4d9d3f245273a057dc1b1b2e8  gcc/testsuite/gcc.dg/pr99830.c
+ 3b590df752b036d072955c45dcde9fda  gcc/testsuite/gcc.dg/pr99882.c
+ bd1dd69944d498943ec98b799196b332  gcc/testsuite/gcc.dg/pr99990.c
  38d740dd13641c97d4f565dcd6338d23  gcc/testsuite/gcc.dg/pragma-align-2.c
  4c08191735eadb7c6ea607dfcc965cf5  gcc/testsuite/gcc.dg/pragma-align.c
  afcceb4d1454686aec15563b318f6f87  gcc/testsuite/gcc.dg/pragma-darwin-2.c
*************** cd69ccaaeda9135ad00087594e6184dc  gcc/te
*** 38226,38232 ****
  b0f8c4136fa3fadda0bb7286049aebb9  gcc/testsuite/gcc.dg/pragma-diag-3.c
  7b506a3b87be9653f7adc0616c85ddaf  gcc/testsuite/gcc.dg/pragma-diag-4.c
  d6168f0bfa501820da2947f6acdd96ef  gcc/testsuite/gcc.dg/pragma-diag-5.c
! 3d3a6fa2df6c9bdb97d61cb696849bc8  gcc/testsuite/gcc.dg/pragma-diag-6.c
  ff83f1142d27828d619d4abf6063f64d  gcc/testsuite/gcc.dg/pragma-diag-7.c
  d96f1f1b79bd3d34227f08f817f8c40a  gcc/testsuite/gcc.dg/pragma-diag-8.c
  24a9270f9a6635bb396c6d700a9d9d2c  gcc/testsuite/gcc.dg/pragma-init-fini-2.c
--- 41035,41041 ----
  b0f8c4136fa3fadda0bb7286049aebb9  gcc/testsuite/gcc.dg/pragma-diag-3.c
  7b506a3b87be9653f7adc0616c85ddaf  gcc/testsuite/gcc.dg/pragma-diag-4.c
  d6168f0bfa501820da2947f6acdd96ef  gcc/testsuite/gcc.dg/pragma-diag-5.c
! 723d12527ff2fe04be31723543977c45  gcc/testsuite/gcc.dg/pragma-diag-6.c
  ff83f1142d27828d619d4abf6063f64d  gcc/testsuite/gcc.dg/pragma-diag-7.c
  d96f1f1b79bd3d34227f08f817f8c40a  gcc/testsuite/gcc.dg/pragma-diag-8.c
  24a9270f9a6635bb396c6d700a9d9d2c  gcc/testsuite/gcc.dg/pragma-init-fini-2.c
*************** db02424a4c19e49ec9d7f6697aa99832  gcc/te
*** 38265,38271 ****
  18ff4271089e0d93667ccab1cfa2a459  gcc/testsuite/gcc.dg/predict-5.c
  171cce78a4228ac8b270027f6340a2ac  gcc/testsuite/gcc.dg/predict-6.c
  a47ead81e5beea1cb75f310d7e10c52d  gcc/testsuite/gcc.dg/predict-7.c
! 0aeb02f86ce5f139d072ef1c3322147e  gcc/testsuite/gcc.dg/predict-8.c
  cfce46e9bf0051dc331ec32dff6f49d6  gcc/testsuite/gcc.dg/predict-9.c
  2b2b0e85d6cc15db42ed6106a0ef0e93  gcc/testsuite/gcc.dg/prefetch-loop-arrays-1.c
  43a304205deaf4dc00d6bca3f9c85de7  gcc/testsuite/gcc.dg/profile-dir-1.c
--- 41074,41080 ----
  18ff4271089e0d93667ccab1cfa2a459  gcc/testsuite/gcc.dg/predict-5.c
  171cce78a4228ac8b270027f6340a2ac  gcc/testsuite/gcc.dg/predict-6.c
  a47ead81e5beea1cb75f310d7e10c52d  gcc/testsuite/gcc.dg/predict-7.c
! 2cadf3d000e2f3c9788bc10ee392612f  gcc/testsuite/gcc.dg/predict-8.c
  cfce46e9bf0051dc331ec32dff6f49d6  gcc/testsuite/gcc.dg/predict-9.c
  2b2b0e85d6cc15db42ed6106a0ef0e93  gcc/testsuite/gcc.dg/prefetch-loop-arrays-1.c
  43a304205deaf4dc00d6bca3f9c85de7  gcc/testsuite/gcc.dg/profile-dir-1.c
*************** bae376025f56a65c5687491587f56cf8  gcc/te
*** 38276,38293 ****
  43b5ea7eb4cde6fc54e5fd9f2fed463f  gcc/testsuite/gcc.dg/profile-generate-1.c
  dc974b5be096639b3d83b02ea81ef099  gcc/testsuite/gcc.dg/profile-generate-2.c
  a86caaa0b39c05b44476b1daa7029ee5  gcc/testsuite/gcc.dg/profile-generate-3.c
  03400698c3e371c93945ab78c118bc44  gcc/testsuite/gcc.dg/profile-update-warning.c
  731cbe31caa392f45d3a34efa13ec6fe  gcc/testsuite/gcc.dg/proto-1.c
! f4259274e626508e8351a9fdc0a89800  gcc/testsuite/gcc.dg/pthread-init-1.c
! e5a739c8627718a467c9f8b2d8469181  gcc/testsuite/gcc.dg/pthread-init-2.c
  1e43eff6196cdabcccbabb483e4e5469  gcc/testsuite/gcc.dg/pthread-init-common.h
  81c32e7aa8336105b10ad33457ae164f  gcc/testsuite/gcc.dg/pubtypes-1.c
! e09cd293ab0c13450aade5506c69308f  gcc/testsuite/gcc.dg/pubtypes-2.c
! 2490be79cc35ca05482d3a6f564df312  gcc/testsuite/gcc.dg/pubtypes-3.c
! 96d7a703c08008fb279cdad587cf8652  gcc/testsuite/gcc.dg/pubtypes-4.c
  e91f166b4de92c03f81d916150bf3333  gcc/testsuite/gcc.dg/pure-1.c
  7d38699cc36c0e41edf981a8e9f72075  gcc/testsuite/gcc.dg/pure-2.c
  1ba96c5459efa721e448123e79141819  gcc/testsuite/gcc.dg/pure-3.c
  131d7728e0baca355ff811d6c48cc2c2  gcc/testsuite/gcc.dg/qual-component-1.c
  f98b23a23376b07500bb22dc9c07a97b  gcc/testsuite/gcc.dg/qual-return-1.c
  a69c0ed8db7dad6898af9609fa119bf4  gcc/testsuite/gcc.dg/qual-return-2.c
--- 41085,41104 ----
  43b5ea7eb4cde6fc54e5fd9f2fed463f  gcc/testsuite/gcc.dg/profile-generate-1.c
  dc974b5be096639b3d83b02ea81ef099  gcc/testsuite/gcc.dg/profile-generate-2.c
  a86caaa0b39c05b44476b1daa7029ee5  gcc/testsuite/gcc.dg/profile-generate-3.c
+ fe0dfbb4e9a3744d6ae829de7b0e4b76  gcc/testsuite/gcc.dg/profile-info-section.c
  03400698c3e371c93945ab78c118bc44  gcc/testsuite/gcc.dg/profile-update-warning.c
  731cbe31caa392f45d3a34efa13ec6fe  gcc/testsuite/gcc.dg/proto-1.c
! 3f306803a83b1c0770c6a4928f2a5171  gcc/testsuite/gcc.dg/pthread-init-1.c
! 21e944271b22264b9a72d7efb2072acc  gcc/testsuite/gcc.dg/pthread-init-2.c
  1e43eff6196cdabcccbabb483e4e5469  gcc/testsuite/gcc.dg/pthread-init-common.h
  81c32e7aa8336105b10ad33457ae164f  gcc/testsuite/gcc.dg/pubtypes-1.c
! b86e198a5aac258c7d57d970aa82b11f  gcc/testsuite/gcc.dg/pubtypes-2.c
! 80bd21cc4e13f2e12df334af5c7fd0d6  gcc/testsuite/gcc.dg/pubtypes-3.c
! 787bc4a8508dc8b2170aa2aa036806d7  gcc/testsuite/gcc.dg/pubtypes-4.c
  e91f166b4de92c03f81d916150bf3333  gcc/testsuite/gcc.dg/pure-1.c
  7d38699cc36c0e41edf981a8e9f72075  gcc/testsuite/gcc.dg/pure-2.c
  1ba96c5459efa721e448123e79141819  gcc/testsuite/gcc.dg/pure-3.c
+ a7d0583b6c2ce6dcaa388b97217992a8  gcc/testsuite/gcc.dg/qual-assign-7.c
  131d7728e0baca355ff811d6c48cc2c2  gcc/testsuite/gcc.dg/qual-component-1.c
  f98b23a23376b07500bb22dc9c07a97b  gcc/testsuite/gcc.dg/qual-return-1.c
  a69c0ed8db7dad6898af9609fa119bf4  gcc/testsuite/gcc.dg/qual-return-2.c
*************** a69c0ed8db7dad6898af9609fa119bf4  gcc/te
*** 38295,38300 ****
--- 41106,41113 ----
  86201f12f9bbd928a88f23757f5aed08  gcc/testsuite/gcc.dg/qual-return-4.c
  3a803c3e32133d46405591f6da8f8d12  gcc/testsuite/gcc.dg/qual-return-5.c
  7a233a8a5eef90550bf415fb9b005997  gcc/testsuite/gcc.dg/qual-return-6.c
+ 2accc0fea5768fd7a58defd66f51e1c3  gcc/testsuite/gcc.dg/qual-return-7.c
+ 67523d7372b85342e04c7206c7e920d6  gcc/testsuite/gcc.dg/qual-return-8.c
  fa6e4618c862111306143bc22d6cb230  gcc/testsuite/gcc.dg/range-test-1.c
  b40a9d0cd8cc04909a88242a822ab148  gcc/testsuite/gcc.dg/range.h
  e4f44dea457e219eca0cd8bd565720f4  gcc/testsuite/gcc.dg/readonly-loc.c
*************** b2955f4c2477c488c30841a9272e52ed  gcc/te
*** 38306,38322 ****
  1c7f0ddcd855c23f1c0e454fb91e872c  gcc/testsuite/gcc.dg/recip_sqrt_mult_5.c
  c5e624b24e249b82a630c8f35e35a5f7  gcc/testsuite/gcc.dg/redecl-1.c
  ac1ad3812f33cd1c2cd61fcddfe2161c  gcc/testsuite/gcc.dg/redecl-10.c
! 940d9651d34c6327eb0b92ea05645d45  gcc/testsuite/gcc.dg/redecl-11.c
! 233789aef5e377c9828d8672e01d5019  gcc/testsuite/gcc.dg/redecl-12.c
! 1e362a1565206a294226e76f7bef331d  gcc/testsuite/gcc.dg/redecl-13.c
  30baf1b8438a16fd6bbf53feb871e167  gcc/testsuite/gcc.dg/redecl-14.c
! e1a8f0527fc64cafbf4a62458c8faf8b  gcc/testsuite/gcc.dg/redecl-15.c
  e9f6ab8177be009b10587da44d562a5a  gcc/testsuite/gcc.dg/redecl-16.c
  fccd1934a683d43aa6a7d546eee38065  gcc/testsuite/gcc.dg/redecl-17.c
  581f2d3b0f6519eb0fb0b166b220fdb6  gcc/testsuite/gcc.dg/redecl-18.c
  0c4274e004ec10f6f1cd982118716a43  gcc/testsuite/gcc.dg/redecl-2.c
  a894d26cb8bd0b9d9dc915eec4d06120  gcc/testsuite/gcc.dg/redecl-3.c
! 726bf160406013e368e345538072779a  gcc/testsuite/gcc.dg/redecl-4.c
  436332565897173cbaf3ea20d42805c4  gcc/testsuite/gcc.dg/redecl-5.c
  3e405f9b516f46c703ef34f23fab667b  gcc/testsuite/gcc.dg/redecl-6.c
  039fbd5060125d65e29619069c4f9c1d  gcc/testsuite/gcc.dg/redecl-7.c
--- 41119,41135 ----
  1c7f0ddcd855c23f1c0e454fb91e872c  gcc/testsuite/gcc.dg/recip_sqrt_mult_5.c
  c5e624b24e249b82a630c8f35e35a5f7  gcc/testsuite/gcc.dg/redecl-1.c
  ac1ad3812f33cd1c2cd61fcddfe2161c  gcc/testsuite/gcc.dg/redecl-10.c
! d0c8e4d6461d4f4c33d3ef57d28c2ca6  gcc/testsuite/gcc.dg/redecl-11.c
! 8409906d1724dd8971f48f44db30d575  gcc/testsuite/gcc.dg/redecl-12.c
! bbc5eb9ec870c7a8a2930d29040efe10  gcc/testsuite/gcc.dg/redecl-13.c
  30baf1b8438a16fd6bbf53feb871e167  gcc/testsuite/gcc.dg/redecl-14.c
! 8aa4e75dfb9ff5597168ea0440497112  gcc/testsuite/gcc.dg/redecl-15.c
  e9f6ab8177be009b10587da44d562a5a  gcc/testsuite/gcc.dg/redecl-16.c
  fccd1934a683d43aa6a7d546eee38065  gcc/testsuite/gcc.dg/redecl-17.c
  581f2d3b0f6519eb0fb0b166b220fdb6  gcc/testsuite/gcc.dg/redecl-18.c
  0c4274e004ec10f6f1cd982118716a43  gcc/testsuite/gcc.dg/redecl-2.c
  a894d26cb8bd0b9d9dc915eec4d06120  gcc/testsuite/gcc.dg/redecl-3.c
! 019f3b9fad0705bf1afbc6b03a6ecb78  gcc/testsuite/gcc.dg/redecl-4.c
  436332565897173cbaf3ea20d42805c4  gcc/testsuite/gcc.dg/redecl-5.c
  3e405f9b516f46c703ef34f23fab667b  gcc/testsuite/gcc.dg/redecl-6.c
  039fbd5060125d65e29619069c4f9c1d  gcc/testsuite/gcc.dg/redecl-7.c
*************** a4b7e92b399e9a3ccddd209524470054  gcc/te
*** 38331,38336 ****
--- 41144,41150 ----
  650297d80f8b5534796a1a513af1479b  gcc/testsuite/gcc.dg/return-type-3.c
  e7055b12b2da73125c471ef6e21aec3d  gcc/testsuite/gcc.dg/rtl/aarch64/asr_div1.c
  a1925ccc0f69537c243f239b703bd7e1  gcc/testsuite/gcc.dg/rtl/aarch64/missed-pass-error.c
+ c101dc190e024f7cd8e13d412510c399  gcc/testsuite/gcc.dg/rtl/aarch64/multi-subreg-1.c
  82921214d686f1804813b91947084109  gcc/testsuite/gcc.dg/rtl/aarch64/pr71779.c
  043d0b0c264990e6e6ac1f2827823f1b  gcc/testsuite/gcc.dg/rtl/aarch64/rtl-handle-column-numbers.c
  770cae6014d989d238db251906e1d55c  gcc/testsuite/gcc.dg/rtl/aarch64/subs_adds_sp.c
*************** a1925ccc0f69537c243f239b703bd7e1  gcc/te
*** 38338,38346 ****
  a107a9eae4cd59d68f55abfc11da7cec  gcc/testsuite/gcc.dg/rtl/aarch64/unspecified-pass-error.c
  a9069345cbc40d488766c1fbf34c5555  gcc/testsuite/gcc.dg/rtl/arm/ldrd-peepholes.c
  1a862d5804e1cd16507ae8049cf93f0d  gcc/testsuite/gcc.dg/rtl/arm/stl-cond.c
! c6a39ddd813b5d6be248e126420ff2c7  gcc/testsuite/gcc.dg/rtl/rtl.exp
  75dd0c3d9daa8abdd58a0d0eaf55bd9e  gcc/testsuite/gcc.dg/rtl/test.c
! 72262a3ad7dd60907c8d3ffad783ba9e  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
--- 41152,41160 ----
  a107a9eae4cd59d68f55abfc11da7cec  gcc/testsuite/gcc.dg/rtl/aarch64/unspecified-pass-error.c
  a9069345cbc40d488766c1fbf34c5555  gcc/testsuite/gcc.dg/rtl/arm/ldrd-peepholes.c
  1a862d5804e1cd16507ae8049cf93f0d  gcc/testsuite/gcc.dg/rtl/arm/stl-cond.c
! b437b49380edf6c179f173b6da58be53  gcc/testsuite/gcc.dg/rtl/rtl.exp
  75dd0c3d9daa8abdd58a0d0eaf55bd9e  gcc/testsuite/gcc.dg/rtl/test.c
! 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
*************** c684e5e80de28dda23b373f072372784  gcc/te
*** 38351,38357 ****
  8d2c37260ff6505748440e7880827a04  gcc/testsuite/gcc.dg/rtl/x86_64/pro_and_epilogue.c
  003cf66847d8ab8a150f0d223372137e  gcc/testsuite/gcc.dg/rtl/x86_64/test-multiple-fns.c
  306b8b4053354370386de5d5c3e8c637  gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.after-expand.c
! 4c7eac65a02b46180d9c303897d9292f  gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.before-fwprop.c
  4f7bb6eb542021a609b8bad7990911c5  gcc/testsuite/gcc.dg/rtl/x86_64/test-rtl.c
  56aff290e33e0c2f3604e4793cf78ec4  gcc/testsuite/gcc.dg/rtl/x86_64/test_1.h
  a8523ff559f8384cdfaa8131cafb2466  gcc/testsuite/gcc.dg/rtl/x86_64/times-two.c.after-expand.c
--- 41165,41171 ----
  8d2c37260ff6505748440e7880827a04  gcc/testsuite/gcc.dg/rtl/x86_64/pro_and_epilogue.c
  003cf66847d8ab8a150f0d223372137e  gcc/testsuite/gcc.dg/rtl/x86_64/test-multiple-fns.c
  306b8b4053354370386de5d5c3e8c637  gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.after-expand.c
! 566ebb0b44159f18d688e7f5a93b226c  gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.before-fwprop.c
  4f7bb6eb542021a609b8bad7990911c5  gcc/testsuite/gcc.dg/rtl/x86_64/test-rtl.c
  56aff290e33e0c2f3604e4793cf78ec4  gcc/testsuite/gcc.dg/rtl/x86_64/test_1.h
  a8523ff559f8384cdfaa8131cafb2466  gcc/testsuite/gcc.dg/rtl/x86_64/times-two.c.after-expand.c
*************** b1af2df249a0e6a4c994bd1ed21dca0d  gcc/te
*** 38364,38371 ****
  c3a18562322c5cc05e7fb2d95a929a8a  gcc/testsuite/gcc.dg/sancov/basic2.c
  6907e496a1c757bd5121a3d41c546181  gcc/testsuite/gcc.dg/sancov/cmp0.c
  10a9db85b046a8ccc1ebb5e953dedb6d  gcc/testsuite/gcc.dg/sancov/pr80444.c
! cda6fdb96feea51b8b82a77c6bfdf4e2  gcc/testsuite/gcc.dg/sancov/sancov.exp
  d5126a2bd42a9c1593aedafecf29da00  gcc/testsuite/gcc.dg/section1.c
  00d91fe4b16ca2aeae1cccad86d4c9f2  gcc/testsuite/gcc.dg/semicolon-fixits.c
  8895240435461e12ab8a00546c8b9309  gcc/testsuite/gcc.dg/sequence-pt-1.c
  51453c25b899451d48a5947b60d782cf  gcc/testsuite/gcc.dg/sequence-pt-2.c
--- 41178,41186 ----
  c3a18562322c5cc05e7fb2d95a929a8a  gcc/testsuite/gcc.dg/sancov/basic2.c
  6907e496a1c757bd5121a3d41c546181  gcc/testsuite/gcc.dg/sancov/cmp0.c
  10a9db85b046a8ccc1ebb5e953dedb6d  gcc/testsuite/gcc.dg/sancov/pr80444.c
! 2f869698f8a248430a1e9ecd3b3931b5  gcc/testsuite/gcc.dg/sancov/sancov.exp
  d5126a2bd42a9c1593aedafecf29da00  gcc/testsuite/gcc.dg/section1.c
+ 8ecbb4fd22f228acc936096f5fed21fb  gcc/testsuite/gcc.dg/self-right-shift.c
  00d91fe4b16ca2aeae1cccad86d4c9f2  gcc/testsuite/gcc.dg/semicolon-fixits.c
  8895240435461e12ab8a00546c8b9309  gcc/testsuite/gcc.dg/sequence-pt-1.c
  51453c25b899451d48a5947b60d782cf  gcc/testsuite/gcc.dg/sequence-pt-2.c
*************** fd3dd3581f56d0ad88bba67e6d0421cb  gcc/te
*** 38384,38398 ****
  2896386eccf07aa6a0a3b69790bcf72d  gcc/testsuite/gcc.dg/shrink-wrap-pretend.c
  e177bd4a7f3cb433b33b2c59e4e0af3d  gcc/testsuite/gcc.dg/shrink-wrap-sibcall.c
  109a5b109668bc6e64cf33dd9f157daa  gcc/testsuite/gcc.dg/sibcall-1.c
! ecd7f6a9a703eef3f503580861505279  gcc/testsuite/gcc.dg/sibcall-10.c
  56436caf606f4a70d8e0249cbe98b609  gcc/testsuite/gcc.dg/sibcall-11.c
  3c122db62b43b814023fad5c2a91cd3a  gcc/testsuite/gcc.dg/sibcall-2.c
! 8db134c81f1f3fb0cd424c92d41567fd  gcc/testsuite/gcc.dg/sibcall-3.c
! 2d40b3d78c4496dff12281ea03e15e17  gcc/testsuite/gcc.dg/sibcall-4.c
  a4a9d32810747a683dfd61a19a195556  gcc/testsuite/gcc.dg/sibcall-6.c
  62808c704ae0941d6882eb2639725b7e  gcc/testsuite/gcc.dg/sibcall-7.c
  ffee6308d78dda55af86280534155756  gcc/testsuite/gcc.dg/sibcall-8.c
! 28d6e2823924e66fa139b17f53d2dc1e  gcc/testsuite/gcc.dg/sibcall-9.c
  5b629cb801eca62320ea49a242d8d182  gcc/testsuite/gcc.dg/signbit-sa.c
  333e0feef5b858bcbce745edf0d287f9  gcc/testsuite/gcc.dg/simd-1.c
  ab02b1889f7a1a4dc5afd40bb4ecd23e  gcc/testsuite/gcc.dg/simd-1b.c
--- 41199,41213 ----
  2896386eccf07aa6a0a3b69790bcf72d  gcc/testsuite/gcc.dg/shrink-wrap-pretend.c
  e177bd4a7f3cb433b33b2c59e4e0af3d  gcc/testsuite/gcc.dg/shrink-wrap-sibcall.c
  109a5b109668bc6e64cf33dd9f157daa  gcc/testsuite/gcc.dg/sibcall-1.c
! 6de1b2d2d4115d205a3f0cae017e19be  gcc/testsuite/gcc.dg/sibcall-10.c
  56436caf606f4a70d8e0249cbe98b609  gcc/testsuite/gcc.dg/sibcall-11.c
  3c122db62b43b814023fad5c2a91cd3a  gcc/testsuite/gcc.dg/sibcall-2.c
! bc2cfb7088c7f2fe14a1064ffea97325  gcc/testsuite/gcc.dg/sibcall-3.c
! 177336c8844a1e1f0fdd37989ffa799f  gcc/testsuite/gcc.dg/sibcall-4.c
  a4a9d32810747a683dfd61a19a195556  gcc/testsuite/gcc.dg/sibcall-6.c
  62808c704ae0941d6882eb2639725b7e  gcc/testsuite/gcc.dg/sibcall-7.c
  ffee6308d78dda55af86280534155756  gcc/testsuite/gcc.dg/sibcall-8.c
! f1909c553c9bb410a04ebfa73fc4c2b2  gcc/testsuite/gcc.dg/sibcall-9.c
  5b629cb801eca62320ea49a242d8d182  gcc/testsuite/gcc.dg/signbit-sa.c
  333e0feef5b858bcbce745edf0d287f9  gcc/testsuite/gcc.dg/simd-1.c
  ab02b1889f7a1a4dc5afd40bb4ecd23e  gcc/testsuite/gcc.dg/simd-1b.c
*************** cdcbfe4963d2fb08c5ca3beee8988a3a  gcc/te
*** 38412,38418 ****
  2cef976581d9a7b739ab4028601cccef  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-int128.c
  dd9deecd35e329ea7c8b1a24c3721dfb  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-longlong.c
  bc0a90e6775aacab35294b814a4dc066  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-short.c
! d0fc799e84c98be2996e2c2615038baf  gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.exp
  a551d568c4b3e2e586a288740ed87bc7  gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.gdb
  e01edd8c252c9b0041b4625fb9403160  gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.h
  1206815dd7536f73ea767fa3901ecc15  gcc/testsuite/gcc.dg/simulate-thread/speculative-store-2.c
--- 41227,41233 ----
  2cef976581d9a7b739ab4028601cccef  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-int128.c
  dd9deecd35e329ea7c8b1a24c3721dfb  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-longlong.c
  bc0a90e6775aacab35294b814a4dc066  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-short.c
! 09fb93f95012eb00700fcf1d5f4e9548  gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.exp
  a551d568c4b3e2e586a288740ed87bc7  gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.gdb
  e01edd8c252c9b0041b4625fb9403160  gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.h
  1206815dd7536f73ea767fa3901ecc15  gcc/testsuite/gcc.dg/simulate-thread/speculative-store-2.c
*************** e01edd8c252c9b0041b4625fb9403160  gcc/te
*** 38421,38434 ****
  6ae36d8179a25095b984d95fa48c73b7  gcc/testsuite/gcc.dg/simulate-thread/speculative-store.c
  7563a191369114dd5dd470ffa51ceb58  gcc/testsuite/gcc.dg/simulate-thread/strict-align-global.c
  2c03b340be2c399dc5798afac851e113  gcc/testsuite/gcc.dg/simulate-thread/subfields.c
  05954303f90cc0a9f87895a37410a44e  gcc/testsuite/gcc.dg/sinatan-1.c
! 9aa56878ea1328ee980c0cf9f55ebb28  gcc/testsuite/gcc.dg/sinatan-2.c
  f0a1bd5cc270e13becf981eb233f7700  gcc/testsuite/gcc.dg/sinatan-3.c
  c2f10738d2847185fff9231ef3d7e7a9  gcc/testsuite/gcc.dg/single-precision-constant.c
! d87f41c7aec28133c728715171c3fc82  gcc/testsuite/gcc.dg/sinhatanh-1.c
  773e7831f773bced75045d1439f7a789  gcc/testsuite/gcc.dg/sinhatanh-2.c
  e4817f4cbbc234632617f0235660831b  gcc/testsuite/gcc.dg/sinhatanh-3.c
! 72a63c047d51fc0c0ebe73cc549114ad  gcc/testsuite/gcc.dg/sinhovercosh-1.c
  1d3e0706d79c3f973becdc3a20a01620  gcc/testsuite/gcc.dg/sizeof-1.c
  96e5162a82a8e47535c489ac7b4b566a  gcc/testsuite/gcc.dg/sizeof-2.c
  98bef8462d710b1653ee9032a8b1296d  gcc/testsuite/gcc.dg/slp-1.c
--- 41236,41250 ----
  6ae36d8179a25095b984d95fa48c73b7  gcc/testsuite/gcc.dg/simulate-thread/speculative-store.c
  7563a191369114dd5dd470ffa51ceb58  gcc/testsuite/gcc.dg/simulate-thread/strict-align-global.c
  2c03b340be2c399dc5798afac851e113  gcc/testsuite/gcc.dg/simulate-thread/subfields.c
+ ba6a8b614a2c61e3065d3caaf2122eee  gcc/testsuite/gcc.dg/sin_cos.c
  05954303f90cc0a9f87895a37410a44e  gcc/testsuite/gcc.dg/sinatan-1.c
! 9936c252436b967c4396afcff8d69dec  gcc/testsuite/gcc.dg/sinatan-2.c
  f0a1bd5cc270e13becf981eb233f7700  gcc/testsuite/gcc.dg/sinatan-3.c
  c2f10738d2847185fff9231ef3d7e7a9  gcc/testsuite/gcc.dg/single-precision-constant.c
! 6bb18e1a3b4b2d29b4411831abebcd72  gcc/testsuite/gcc.dg/sinhatanh-1.c
  773e7831f773bced75045d1439f7a789  gcc/testsuite/gcc.dg/sinhatanh-2.c
  e4817f4cbbc234632617f0235660831b  gcc/testsuite/gcc.dg/sinhatanh-3.c
! 46be905f621bb02c7f68a68091c40997  gcc/testsuite/gcc.dg/sinhovercosh-1.c
  1d3e0706d79c3f973becdc3a20a01620  gcc/testsuite/gcc.dg/sizeof-1.c
  96e5162a82a8e47535c489ac7b4b566a  gcc/testsuite/gcc.dg/sizeof-2.c
  98bef8462d710b1653ee9032a8b1296d  gcc/testsuite/gcc.dg/slp-1.c
*************** e4817f4cbbc234632617f0235660831b  gcc/te
*** 38436,38442 ****
  133be7169b3d88022c0e9a4113cdbcec  gcc/testsuite/gcc.dg/sms-1.c
  4c9e0584d09b608eb01778b029b31c2a  gcc/testsuite/gcc.dg/sms-10.c
  7c7d319d4a2c2aa5559843951e2836a0  gcc/testsuite/gcc.dg/sms-11.c
! 8be3f2c52b94d6678ef5efe4b5dd322f  gcc/testsuite/gcc.dg/sms-12.c
  e5fe4881e15933833fa8b2a30f5c864c  gcc/testsuite/gcc.dg/sms-13.c
  66eb885e7359bff1953d5beac52ebe6f  gcc/testsuite/gcc.dg/sms-2.c
  f1ffb523663573d847d76062267f31a7  gcc/testsuite/gcc.dg/sms-3.c
--- 41252,41258 ----
  133be7169b3d88022c0e9a4113cdbcec  gcc/testsuite/gcc.dg/sms-1.c
  4c9e0584d09b608eb01778b029b31c2a  gcc/testsuite/gcc.dg/sms-10.c
  7c7d319d4a2c2aa5559843951e2836a0  gcc/testsuite/gcc.dg/sms-11.c
! 817179c47465f7c6ddcbbcf7cbe8a80e  gcc/testsuite/gcc.dg/sms-12.c
  e5fe4881e15933833fa8b2a30f5c864c  gcc/testsuite/gcc.dg/sms-13.c
  66eb885e7359bff1953d5beac52ebe6f  gcc/testsuite/gcc.dg/sms-2.c
  f1ffb523663573d847d76062267f31a7  gcc/testsuite/gcc.dg/sms-3.c
*************** d699e78c8f0e5f106aca671faa82b0db  gcc/te
*** 38454,38462 ****
  58b6b7734c2d9522f6acba13d91a557a  gcc/testsuite/gcc.dg/special/alias-1.c
  4b29f93ef3bc27cb9d83fdbc6aaa5b4a  gcc/testsuite/gcc.dg/special/alias-2.c
  d7d4289254a30a2d7a36599f413b3f00  gcc/testsuite/gcc.dg/special/gcsec-1.c
! f52e20bd26cb0d0c883db7a82a5eecf8  gcc/testsuite/gcc.dg/special/mips-abi.exp
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gcc.dg/special/mips-abi.s
! 0432781c3db5162de50be1401fec6452  gcc/testsuite/gcc.dg/special/special.exp
  401a0d7d075a4091d05bc341cd97d3bf  gcc/testsuite/gcc.dg/special/weak-1.c
  f92cc2fa14e5fe946fde0490c2b6321b  gcc/testsuite/gcc.dg/special/weak-1a.c
  679f99ed535d87ef210f2c69a6777b7e  gcc/testsuite/gcc.dg/special/weak-2.c
--- 41270,41278 ----
  58b6b7734c2d9522f6acba13d91a557a  gcc/testsuite/gcc.dg/special/alias-1.c
  4b29f93ef3bc27cb9d83fdbc6aaa5b4a  gcc/testsuite/gcc.dg/special/alias-2.c
  d7d4289254a30a2d7a36599f413b3f00  gcc/testsuite/gcc.dg/special/gcsec-1.c
! 62d7166001e7f068286b89f2437a549a  gcc/testsuite/gcc.dg/special/mips-abi.exp
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gcc.dg/special/mips-abi.s
! af05f9c9309efd1178b3edc6aa38567b  gcc/testsuite/gcc.dg/special/special.exp
  401a0d7d075a4091d05bc341cd97d3bf  gcc/testsuite/gcc.dg/special/weak-1.c
  f92cc2fa14e5fe946fde0490c2b6321b  gcc/testsuite/gcc.dg/special/weak-1a.c
  679f99ed535d87ef210f2c69a6777b7e  gcc/testsuite/gcc.dg/special/weak-2.c
*************** d4fdbf76b8ce0a055e73d176eb3bd869  gcc/te
*** 38473,38478 ****
--- 41289,41295 ----
  abdb32685f22b8929cf8f9f168d29d28  gcc/testsuite/gcc.dg/spellcheck-identifiers-3.c
  abbf935c723608f478f96bb74ad0816f  gcc/testsuite/gcc.dg/spellcheck-identifiers-4.c
  4199bfa480931af1cf705e6ac8edbd20  gcc/testsuite/gcc.dg/spellcheck-identifiers.c
+ fe2951799b55173b7852d27be3c40b66  gcc/testsuite/gcc.dg/spellcheck-inttypes.c
  2f8375b9f5127dafd07a2ab53b3bd6d0  gcc/testsuite/gcc.dg/spellcheck-options-1.c
  0d2bf1adcd64da826bc3c3e7d0a3e5e5  gcc/testsuite/gcc.dg/spellcheck-options-10.c
  12d8777e4c8e0dafacc2353dcbfd3e32  gcc/testsuite/gcc.dg/spellcheck-options-11.c
*************** e03be8b5734d3729d60b0d2bd31f5e73  gcc/te
*** 38487,38492 ****
--- 41304,41310 ----
  8f5c9a20f5cae68c89b011cb871713e9  gcc/testsuite/gcc.dg/spellcheck-options-2.c
  ab1e709f047a05a46aff7f09f2d2450c  gcc/testsuite/gcc.dg/spellcheck-options-20.c
  613c97b6e08a7770bd27a435cc39fe53  gcc/testsuite/gcc.dg/spellcheck-options-21.c
+ 0e2025204dfb9256031077f17a797409  gcc/testsuite/gcc.dg/spellcheck-options-22.c
  49cd9bfd13b6c5defbc7b19ed2b015fb  gcc/testsuite/gcc.dg/spellcheck-options-3.c
  a8d5017ed9919e2f970cfbd34690cfd0  gcc/testsuite/gcc.dg/spellcheck-options-4.c
  2ca2abc2651f3437f77a4661b6e1fcef  gcc/testsuite/gcc.dg/spellcheck-options-5.c
*************** c280fdf8b30c02f59215201f8dacde94  gcc/te
*** 38497,38502 ****
--- 41315,41322 ----
  3dca88bd579ce41697169b0dde5f2138  gcc/testsuite/gcc.dg/spellcheck-params-2.c
  8d1f73ad5d3529aad78c303ef97bca51  gcc/testsuite/gcc.dg/spellcheck-params.c
  4b027606d627457f537d4da5f7fac762  gcc/testsuite/gcc.dg/spellcheck-pr83056.c
+ 8155283fb3fe8f13e7b742eca13c9bae  gcc/testsuite/gcc.dg/spellcheck-stdbool.c
+ 9a8c6f9098603f0acd1c42a10fec415b  gcc/testsuite/gcc.dg/spellcheck-stdint.c
  603ea7f8232f23feaf7ab73587b48f17  gcc/testsuite/gcc.dg/spellcheck-stdlib.c
  8246cd5a7d8a2e4d0ea11bf9def939cd  gcc/testsuite/gcc.dg/spellcheck-transposition.c
  e3188822fe2eb498f64ea0ad687f6232  gcc/testsuite/gcc.dg/spellcheck-typenames.c
*************** a22c0db258dd69508b2ceb6070cac172  gcc/te
*** 38511,38516 ****
--- 41331,41337 ----
  9c8f50b89f148a9e2b73e3fa23c04b60  gcc/testsuite/gcc.dg/split-8.c
  70c0f8d6fc8dfd96b3356185306477b4  gcc/testsuite/gcc.dg/sso-1.c
  9821ad4cb043e8bea1647783db517677  gcc/testsuite/gcc.dg/sso-10.c
+ 69fbd818614a3c1f7529e6e1957b7a16  gcc/testsuite/gcc.dg/sso-11.c
  1596e67c3fd5ccc4a9264cba4aa398c4  gcc/testsuite/gcc.dg/sso-2.c
  4a6f7bb1645423ba5d23a61f98233d1d  gcc/testsuite/gcc.dg/sso-3.c
  edaa32662275ea6100c4a0657754194a  gcc/testsuite/gcc.dg/sso-4.c
*************** c5722da05aa36d4bc2a009327e233223  gcc/te
*** 38531,38536 ****
--- 41352,41358 ----
  741cf882eb02cecd5b4ea044f98db3cb  gcc/testsuite/gcc.dg/sso/init8.h
  958023bce89bc77e3102b1d4c4c9e4b2  gcc/testsuite/gcc.dg/sso/init9.h
  d9dceef7cffb0b231dc9ff0a6a394bb7  gcc/testsuite/gcc.dg/sso/ipa-sra-1.c
+ 972c2e8785486a5090817467e0411556  gcc/testsuite/gcc.dg/sso/memcpy-1.c
  9fcf538967f335747a7d7d10e60c49d2  gcc/testsuite/gcc.dg/sso/p1.c
  ffe5dfce00c04690ddd831cac1cc5166  gcc/testsuite/gcc.dg/sso/p13.c
  3cd9339eed7d07cd80a26c10ba2bfa0f  gcc/testsuite/gcc.dg/sso/p2.c
*************** dfb751744ae63c43f989ee13f0e517d6  gcc/te
*** 38561,38567 ****
  5acf2012225c2563f5111699dc108d4e  gcc/testsuite/gcc.dg/sso/s6.c
  2881d668843202ec4c4e53caf7d29b7c  gcc/testsuite/gcc.dg/sso/s7.c
  dc1e222143fcffd35ee8b32c36dfe5e9  gcc/testsuite/gcc.dg/sso/s8.c
! 7f270eff94ae9577e228bd7aa33d6589  gcc/testsuite/gcc.dg/sso/sso.exp
  72a4bbb7159286bb235d6cc0329af835  gcc/testsuite/gcc.dg/sso/t1.c
  093ed74aa99ca9c9bc8760b6167c6c6f  gcc/testsuite/gcc.dg/sso/t13.c
  7b8e3ada92eb2f2a4e4aea8f81dd9b16  gcc/testsuite/gcc.dg/sso/t2.c
--- 41383,41389 ----
  5acf2012225c2563f5111699dc108d4e  gcc/testsuite/gcc.dg/sso/s6.c
  2881d668843202ec4c4e53caf7d29b7c  gcc/testsuite/gcc.dg/sso/s7.c
  dc1e222143fcffd35ee8b32c36dfe5e9  gcc/testsuite/gcc.dg/sso/s8.c
! 0fe0f7d1a669f7c878a1c7339aeb7284  gcc/testsuite/gcc.dg/sso/sso.exp
  72a4bbb7159286bb235d6cc0329af835  gcc/testsuite/gcc.dg/sso/t1.c
  093ed74aa99ca9c9bc8760b6167c6c6f  gcc/testsuite/gcc.dg/sso/t13.c
  7b8e3ada92eb2f2a4e4aea8f81dd9b16  gcc/testsuite/gcc.dg/sso/t2.c
*************** b626c83312eea994d97f8f460e6cc56e  gcc/te
*** 38592,38598 ****
  3eb20a070e129b9f71ad84ec481fe8df  gcc/testsuite/gcc.dg/stack-layout-1.c
  d5355400a72402c33417096b04dc2a5d  gcc/testsuite/gcc.dg/stack-layout-2.c
  07e6a63f5ceb593a5ec396e028fd341c  gcc/testsuite/gcc.dg/stack-layout-dynamic-1.c
! a37d33808469d9dcffec83667bff61b1  gcc/testsuite/gcc.dg/stack-usage-1.c
  198c846924d490e8eba17829d0caf626  gcc/testsuite/gcc.dg/stack-usage-2.c
  abeae7e4a2120581a50d5eb7cbe3929d  gcc/testsuite/gcc.dg/stackprotectexplicit1.c
  f4760013e77ec339cce4491012f46d96  gcc/testsuite/gcc.dg/stdint-width-1.c
--- 41414,41420 ----
  3eb20a070e129b9f71ad84ec481fe8df  gcc/testsuite/gcc.dg/stack-layout-1.c
  d5355400a72402c33417096b04dc2a5d  gcc/testsuite/gcc.dg/stack-layout-2.c
  07e6a63f5ceb593a5ec396e028fd341c  gcc/testsuite/gcc.dg/stack-layout-dynamic-1.c
! 87b5eb4f9298b1723128a8928584e213  gcc/testsuite/gcc.dg/stack-usage-1.c
  198c846924d490e8eba17829d0caf626  gcc/testsuite/gcc.dg/stack-usage-2.c
  abeae7e4a2120581a50d5eb7cbe3929d  gcc/testsuite/gcc.dg/stackprotectexplicit1.c
  f4760013e77ec339cce4491012f46d96  gcc/testsuite/gcc.dg/stdint-width-1.c
*************** eb758dcebb0bb362b30a465d9466f0b7  gcc/te
*** 38639,38645 ****
  db02e6f1e64dbc4b601778792b8681a1  gcc/testsuite/gcc.dg/store_merging_9.c
  9128d1ed469e0ac6af082ba93bf0e146  gcc/testsuite/gcc.dg/strcmp-1.c
  e14c1b011d487de14301ef04690181db  gcc/testsuite/gcc.dg/strcmpopt_1.c
! 369a9a680a95903ce44a464ea3602ce9  gcc/testsuite/gcc.dg/strcmpopt_10.c
  c84fe700fb9422e447e76090e2f3b24d  gcc/testsuite/gcc.dg/strcmpopt_11.c
  76ad7a0b3c684b9271b8396d088f1760  gcc/testsuite/gcc.dg/strcmpopt_12.c
  db06818741aeb33bcd33b0888babc0af  gcc/testsuite/gcc.dg/strcmpopt_2.c
--- 41461,41467 ----
  db02e6f1e64dbc4b601778792b8681a1  gcc/testsuite/gcc.dg/store_merging_9.c
  9128d1ed469e0ac6af082ba93bf0e146  gcc/testsuite/gcc.dg/strcmp-1.c
  e14c1b011d487de14301ef04690181db  gcc/testsuite/gcc.dg/strcmpopt_1.c
! 492d1af8f65aa1bcd2fa3b8698308079  gcc/testsuite/gcc.dg/strcmpopt_10.c
  c84fe700fb9422e447e76090e2f3b24d  gcc/testsuite/gcc.dg/strcmpopt_11.c
  76ad7a0b3c684b9271b8396d088f1760  gcc/testsuite/gcc.dg/strcmpopt_12.c
  db06818741aeb33bcd33b0888babc0af  gcc/testsuite/gcc.dg/strcmpopt_2.c
*************** bf96047b5d0b7ce793044793df3f5a1c  gcc/te
*** 38716,38724 ****
  25dfdd5ea276e59848b55693dddee725  gcc/testsuite/gcc.dg/strlenopt-52.c
  7688578e4b2b761dee00397bd4cca7a4  gcc/testsuite/gcc.dg/strlenopt-53.c
  2557b62447d4c2eafbe48285c8935b52  gcc/testsuite/gcc.dg/strlenopt-54.c
! 20bde5f5acd2bd525c4781998d15f9ac  gcc/testsuite/gcc.dg/strlenopt-55.c
  160668aaf2d2bd5de082db295986e38b  gcc/testsuite/gcc.dg/strlenopt-56.c
! c392973af7e037f8bea84ebae7641cb9  gcc/testsuite/gcc.dg/strlenopt-57.c
  59a9920816eddba0c3162318ae39cf50  gcc/testsuite/gcc.dg/strlenopt-58.c
  3542f96527a58d9a88aa931305187ec0  gcc/testsuite/gcc.dg/strlenopt-59.c
  655ded8dddb07edb7db74709fe99c668  gcc/testsuite/gcc.dg/strlenopt-6.c
--- 41538,41546 ----
  25dfdd5ea276e59848b55693dddee725  gcc/testsuite/gcc.dg/strlenopt-52.c
  7688578e4b2b761dee00397bd4cca7a4  gcc/testsuite/gcc.dg/strlenopt-53.c
  2557b62447d4c2eafbe48285c8935b52  gcc/testsuite/gcc.dg/strlenopt-54.c
! bb5f420fe7e1d0ce404ae1d4d7acf7bd  gcc/testsuite/gcc.dg/strlenopt-55.c
  160668aaf2d2bd5de082db295986e38b  gcc/testsuite/gcc.dg/strlenopt-56.c
! 937a74ada775e91aa4ea4d6ad9597b88  gcc/testsuite/gcc.dg/strlenopt-57.c
  59a9920816eddba0c3162318ae39cf50  gcc/testsuite/gcc.dg/strlenopt-58.c
  3542f96527a58d9a88aa931305187ec0  gcc/testsuite/gcc.dg/strlenopt-59.c
  655ded8dddb07edb7db74709fe99c668  gcc/testsuite/gcc.dg/strlenopt-6.c
*************** fb0fe2a37a887d660525ebc5050b378a  gcc/te
*** 38737,38743 ****
  4390481737985ad39389758e25141193  gcc/testsuite/gcc.dg/strlenopt-71.c
  f517625fb4dfc197b865ffbcbc1920d0  gcc/testsuite/gcc.dg/strlenopt-72.c
  0d0a852db24783320cbea5423a1255ab  gcc/testsuite/gcc.dg/strlenopt-73.c
! 0f240ee6230206951654acbf599e3c65  gcc/testsuite/gcc.dg/strlenopt-74.c
  ea069dd84c600a6fd0eeff7f077e15d3  gcc/testsuite/gcc.dg/strlenopt-75.c
  b6afda10a5c27a727b0d08f21d516d4e  gcc/testsuite/gcc.dg/strlenopt-76.c
  5ed6f4695c68cc86df9bd8bd91676653  gcc/testsuite/gcc.dg/strlenopt-77.c
--- 41559,41565 ----
  4390481737985ad39389758e25141193  gcc/testsuite/gcc.dg/strlenopt-71.c
  f517625fb4dfc197b865ffbcbc1920d0  gcc/testsuite/gcc.dg/strlenopt-72.c
  0d0a852db24783320cbea5423a1255ab  gcc/testsuite/gcc.dg/strlenopt-73.c
! f943d414ca77ac18161c54e8056e257b  gcc/testsuite/gcc.dg/strlenopt-74.c
  ea069dd84c600a6fd0eeff7f077e15d3  gcc/testsuite/gcc.dg/strlenopt-75.c
  b6afda10a5c27a727b0d08f21d516d4e  gcc/testsuite/gcc.dg/strlenopt-76.c
  5ed6f4695c68cc86df9bd8bd91676653  gcc/testsuite/gcc.dg/strlenopt-77.c
*************** b6afda10a5c27a727b0d08f21d516d4e  gcc/te
*** 38747,38754 ****
  320c6ce596178e65f15744cdcf5b7290  gcc/testsuite/gcc.dg/strlenopt-80.c
  8acdf4a4e0ea9ee3bbe36483c1d0dd90  gcc/testsuite/gcc.dg/strlenopt-81.c
  702c5265fb58aca854e1e7d0a5c48af0  gcc/testsuite/gcc.dg/strlenopt-82.c
! be5efcec32404d20397399ba100f8930  gcc/testsuite/gcc.dg/strlenopt-83.c
! e798c776168fd5b0941ce89cfc148e82  gcc/testsuite/gcc.dg/strlenopt-84.c
  0948a71458b0fb3214094a22bfdde7ad  gcc/testsuite/gcc.dg/strlenopt-85.c
  c08e64ecfe54fa64822bfeaeda6d1b03  gcc/testsuite/gcc.dg/strlenopt-86.c
  cd320e2676e84d929a39a375a452396b  gcc/testsuite/gcc.dg/strlenopt-87.c
--- 41569,41576 ----
  320c6ce596178e65f15744cdcf5b7290  gcc/testsuite/gcc.dg/strlenopt-80.c
  8acdf4a4e0ea9ee3bbe36483c1d0dd90  gcc/testsuite/gcc.dg/strlenopt-81.c
  702c5265fb58aca854e1e7d0a5c48af0  gcc/testsuite/gcc.dg/strlenopt-82.c
! ccdd91fe71fd1e140e311902b699e7f9  gcc/testsuite/gcc.dg/strlenopt-83.c
! 83447c2c15df74628ecc8934b1e0e03e  gcc/testsuite/gcc.dg/strlenopt-84.c
  0948a71458b0fb3214094a22bfdde7ad  gcc/testsuite/gcc.dg/strlenopt-85.c
  c08e64ecfe54fa64822bfeaeda6d1b03  gcc/testsuite/gcc.dg/strlenopt-86.c
  cd320e2676e84d929a39a375a452396b  gcc/testsuite/gcc.dg/strlenopt-87.c
*************** cd320e2676e84d929a39a375a452396b  gcc/te
*** 38756,38762 ****
  5c6f9907795922b3292aff7910acbf7e  gcc/testsuite/gcc.dg/strlenopt-89.c
  b36a66c501ef03ad7cedb1c40484affd  gcc/testsuite/gcc.dg/strlenopt-9.c
  3ac42e10b5a0c2fc2200c85cb9470548  gcc/testsuite/gcc.dg/strlenopt-90.c
! 2f3b29d7597d6713a742bd1712c2fda0  gcc/testsuite/gcc.dg/strlenopt-91.c
  7a9eb74d7cdfdbff4aaf7724a1c599f7  gcc/testsuite/gcc.dg/strlenopt-92.c
  359473db5cdd37f1bf6095e84675f821  gcc/testsuite/gcc.dg/strlenopt-93.c
  088575aea180cd1ef854fcc43bef2769  gcc/testsuite/gcc.dg/strlenopt-94.c
--- 41578,41584 ----
  5c6f9907795922b3292aff7910acbf7e  gcc/testsuite/gcc.dg/strlenopt-89.c
  b36a66c501ef03ad7cedb1c40484affd  gcc/testsuite/gcc.dg/strlenopt-9.c
  3ac42e10b5a0c2fc2200c85cb9470548  gcc/testsuite/gcc.dg/strlenopt-90.c
! 04d1c9bbf276912e933a419589de84c0  gcc/testsuite/gcc.dg/strlenopt-91.c
  7a9eb74d7cdfdbff4aaf7724a1c599f7  gcc/testsuite/gcc.dg/strlenopt-92.c
  359473db5cdd37f1bf6095e84675f821  gcc/testsuite/gcc.dg/strlenopt-93.c
  088575aea180cd1ef854fcc43bef2769  gcc/testsuite/gcc.dg/strlenopt-94.c
*************** ff05bfaf09ff28888e82d2b9fc85207b  gcc/te
*** 38803,38811 ****
  63c183838fe82cdc7372813b97203123  gcc/testsuite/gcc.dg/sync-3.c
  85e022f32fe6e5043e4e7ef1eac7a089  gcc/testsuite/gcc.dg/sync-fetch-bool.c
  9ee612d8f22fad1d020266761b85e3aa  gcc/testsuite/gcc.dg/sync-fetch.c
! 52b0d3be44f167108bb92fcdf5918096  gcc/testsuite/gcc.dg/system-binary-constants-1.c
  e365b74306fcc009f9864598bae7a166  gcc/testsuite/gcc.dg/system-binary-constants-1.h
  a55e4206e2dab0fdee9089430a7ce0ac  gcc/testsuite/gcc.dg/tail-merge-store.c
  7b4e445033eff6248e905aaeb2aea3ca  gcc/testsuite/gcc.dg/tg-tests.h
  84a918c67a151b12aef9998bc8dff1e1  gcc/testsuite/gcc.dg/titype-1.c
  9407bf5ea124fe12c7b85eb64edd26d4  gcc/testsuite/gcc.dg/tls/alias-1.c
--- 41625,41634 ----
  63c183838fe82cdc7372813b97203123  gcc/testsuite/gcc.dg/sync-3.c
  85e022f32fe6e5043e4e7ef1eac7a089  gcc/testsuite/gcc.dg/sync-fetch-bool.c
  9ee612d8f22fad1d020266761b85e3aa  gcc/testsuite/gcc.dg/sync-fetch.c
! 8eebc65fdc96b58289292950c92c2e41  gcc/testsuite/gcc.dg/system-binary-constants-1.c
  e365b74306fcc009f9864598bae7a166  gcc/testsuite/gcc.dg/system-binary-constants-1.h
  a55e4206e2dab0fdee9089430a7ce0ac  gcc/testsuite/gcc.dg/tail-merge-store.c
+ 6b4d32d7726a0d54806d2d9029c1eb62  gcc/testsuite/gcc.dg/tanhbysinh.c
  7b4e445033eff6248e905aaeb2aea3ca  gcc/testsuite/gcc.dg/tg-tests.h
  84a918c67a151b12aef9998bc8dff1e1  gcc/testsuite/gcc.dg/titype-1.c
  9407bf5ea124fe12c7b85eb64edd26d4  gcc/testsuite/gcc.dg/tls/alias-1.c
*************** f07471017f32149c304d566a85d86e7d  gcc/te
*** 38837,38843 ****
  6ec8334fc000aec1f93177065a8ed763  gcc/testsuite/gcc.dg/tls/opt-6.c
  c62ce4666c89af5c2e735101c5451778  gcc/testsuite/gcc.dg/tls/opt-7.c
  fb27194fd3ac60b8ffc4c3e9b9e6f59e  gcc/testsuite/gcc.dg/tls/opt-8.c
! 58fb8d61d31c049b4d52a963b0c56f94  gcc/testsuite/gcc.dg/tls/opt-9.c
  bec4c24be9c2e4923ce40f0483a99657  gcc/testsuite/gcc.dg/tls/pic-1.c
  f5323546700fd7cccd2d875b85bd5adf  gcc/testsuite/gcc.dg/tls/pie-1.c
  2ec939995e9e0e2d850b04e23a7f5ea0  gcc/testsuite/gcc.dg/tls/pr24428-2.c
--- 41660,41666 ----
  6ec8334fc000aec1f93177065a8ed763  gcc/testsuite/gcc.dg/tls/opt-6.c
  c62ce4666c89af5c2e735101c5451778  gcc/testsuite/gcc.dg/tls/opt-7.c
  fb27194fd3ac60b8ffc4c3e9b9e6f59e  gcc/testsuite/gcc.dg/tls/opt-8.c
! 1f3b77933576b21d4d124ea363848b08  gcc/testsuite/gcc.dg/tls/opt-9.c
  bec4c24be9c2e4923ce40f0483a99657  gcc/testsuite/gcc.dg/tls/pic-1.c
  f5323546700fd7cccd2d875b85bd5adf  gcc/testsuite/gcc.dg/tls/pie-1.c
  2ec939995e9e0e2d850b04e23a7f5ea0  gcc/testsuite/gcc.dg/tls/pr24428-2.c
*************** a25e6d22e39772bf36ad7e281b7e57e8  gcc/te
*** 38859,38868 ****
  796d5642fd9a5bf2871955a7f51a2b2c  gcc/testsuite/gcc.dg/tls/section-1.c
  b6230b3887f6b80a34081478f9506950  gcc/testsuite/gcc.dg/tls/section-2.c
  bd750cfcc2981be8695d1ba87cf4e02d  gcc/testsuite/gcc.dg/tls/struct-1.c
! 115939ec2022a4c63285eb912791111a  gcc/testsuite/gcc.dg/tls/thr-cse-1.c
! 6a83a2b086c4431c476fd09381897c50  gcc/testsuite/gcc.dg/tls/thr-init-1.c
  622c1bed70cf0fe0a74c0a5ed3602602  gcc/testsuite/gcc.dg/tls/thr-init-2.c
! 6d61ac22a0505b3f1df41f07de485e32  gcc/testsuite/gcc.dg/tls/tls.exp
  972a92c27c38895cc90d496745d8e669  gcc/testsuite/gcc.dg/tls/trivial.c
  25214598e340e56bf7487e493e42c739  gcc/testsuite/gcc.dg/tm/20091013.c
  f9f47372393116a3e58a8470e17cae92  gcc/testsuite/gcc.dg/tm/20091221.c
--- 41682,41691 ----
  796d5642fd9a5bf2871955a7f51a2b2c  gcc/testsuite/gcc.dg/tls/section-1.c
  b6230b3887f6b80a34081478f9506950  gcc/testsuite/gcc.dg/tls/section-2.c
  bd750cfcc2981be8695d1ba87cf4e02d  gcc/testsuite/gcc.dg/tls/struct-1.c
! 3ab1a16951cdbfaf172055375ee208b1  gcc/testsuite/gcc.dg/tls/thr-cse-1.c
! f9dca9ba3163a454b601045eb9567803  gcc/testsuite/gcc.dg/tls/thr-init-1.c
  622c1bed70cf0fe0a74c0a5ed3602602  gcc/testsuite/gcc.dg/tls/thr-init-2.c
! 83db2d419cd26d1c003d2759ceaaf3f3  gcc/testsuite/gcc.dg/tls/tls.exp
  972a92c27c38895cc90d496745d8e669  gcc/testsuite/gcc.dg/tls/trivial.c
  25214598e340e56bf7487e493e42c739  gcc/testsuite/gcc.dg/tm/20091013.c
  f9f47372393116a3e58a8470e17cae92  gcc/testsuite/gcc.dg/tm/20091221.c
*************** cb34f62872d3a64f1f3d3d7569c0271a  gcc/te
*** 38937,38942 ****
--- 41760,41766 ----
  1b559cec302309c622d1ed170c616805  gcc/testsuite/gcc.dg/tm/pr56108.c
  31335a1f09b5424c87b9724834005b12  gcc/testsuite/gcc.dg/tm/pr60908.c
  aa2d5afc08b76af9961fbd0075d3ce6c  gcc/testsuite/gcc.dg/tm/pr64391.c
+ a0271e6d21949acaf2d14fba31128215  gcc/testsuite/gcc.dg/tm/pr95569.c
  6495ef0c5a47515a1693885859d89353  gcc/testsuite/gcc.dg/tm/props-1.c
  0970623efbaecffc4f14468434a2c458  gcc/testsuite/gcc.dg/tm/props-2.c
  a6fc84c889a6b176224560fbff424e66  gcc/testsuite/gcc.dg/tm/props-3.c
*************** fe3f545b4342e4629b8e3f50ec72aa75  gcc/te
*** 38944,38950 ****
  69106475c2239e1185e01df0c747e5d0  gcc/testsuite/gcc.dg/tm/props-5.c
  c6a48dab441b531c2ea8105678947e48  gcc/testsuite/gcc.dg/tm/pub-safety-1.c
  04141c931c3cf5684e6da6b0f18cc32b  gcc/testsuite/gcc.dg/tm/reg-promotion.c
! 8b458b4935c66760beb52f550ea6f018  gcc/testsuite/gcc.dg/tm/tm.exp
  00343bf5eb219ac16f5bb8c4bd59994b  gcc/testsuite/gcc.dg/tm/unsafe.c
  c5937eee848b88c1df5be63f77274eb5  gcc/testsuite/gcc.dg/tm/unused.c
  73db2a051a0e581c5f21d54dac46af4f  gcc/testsuite/gcc.dg/tm/vector-1.c
--- 41768,41774 ----
  69106475c2239e1185e01df0c747e5d0  gcc/testsuite/gcc.dg/tm/props-5.c
  c6a48dab441b531c2ea8105678947e48  gcc/testsuite/gcc.dg/tm/pub-safety-1.c
  04141c931c3cf5684e6da6b0f18cc32b  gcc/testsuite/gcc.dg/tm/reg-promotion.c
! 8e308717ee283b509f7ae23781b7662f  gcc/testsuite/gcc.dg/tm/tm.exp
  00343bf5eb219ac16f5bb8c4bd59994b  gcc/testsuite/gcc.dg/tm/unsafe.c
  c5937eee848b88c1df5be63f77274eb5  gcc/testsuite/gcc.dg/tm/unused.c
  73db2a051a0e581c5f21d54dac46af4f  gcc/testsuite/gcc.dg/tm/vector-1.c
*************** cbb03afd91bfa22c62842c72551cf41d  gcc/te
*** 38963,38969 ****
  8b15816b02b101cc1e69882a95333c54  gcc/testsuite/gcc.dg/torture/20141202-1.c
  c715efce91706f19891d615f0fb331e6  gcc/testsuite/gcc.dg/torture/20160404-1.c
  4b05d3d6f42b8dcb259557b7fdf9e4ed  gcc/testsuite/gcc.dg/torture/20180712-1.c
! 955d3ecd9647c76358a94b583fded124  gcc/testsuite/gcc.dg/torture/20181024-1.c
  b151f401ebe15ffdbefdb4db4f4ccae9  gcc/testsuite/gcc.dg/torture/20181029-1.c
  946ed087d383d400f7c500563f2ea6d9  gcc/testsuite/gcc.dg/torture/20181029-2.c
  0a83143a813c38ed8b23559e47572cd9  gcc/testsuite/gcc.dg/torture/20190327-1.c
--- 41787,41793 ----
  8b15816b02b101cc1e69882a95333c54  gcc/testsuite/gcc.dg/torture/20141202-1.c
  c715efce91706f19891d615f0fb331e6  gcc/testsuite/gcc.dg/torture/20160404-1.c
  4b05d3d6f42b8dcb259557b7fdf9e4ed  gcc/testsuite/gcc.dg/torture/20180712-1.c
! dc7d8051ab5f0c1d66cb1eecc661e71a  gcc/testsuite/gcc.dg/torture/20181024-1.c
  b151f401ebe15ffdbefdb4db4f4ccae9  gcc/testsuite/gcc.dg/torture/20181029-1.c
  946ed087d383d400f7c500563f2ea6d9  gcc/testsuite/gcc.dg/torture/20181029-2.c
  0a83143a813c38ed8b23559e47572cd9  gcc/testsuite/gcc.dg/torture/20190327-1.c
*************** b151f401ebe15ffdbefdb4db4f4ccae9  gcc/te
*** 38971,38977 ****
  e5e7352de17daef20df813c70e9b7a10  gcc/testsuite/gcc.dg/torture/20190924-1.c
  c1a3ac64264ecff096abb31f7a1c60e1  gcc/testsuite/gcc.dg/torture/20191011-1.c
  a268f7e7fe5d358fe2f76cd8fc4ecac3  gcc/testsuite/gcc.dg/torture/20200311-1.c
! 18d092a49330e9a3da34c551be068cfa  gcc/testsuite/gcc.dg/torture/Wsizeof-pointer-memaccess1.c
  d23f5563695ea2b9898397f0244ca90d  gcc/testsuite/gcc.dg/torture/alias-1.c
  2063dc05a74374000dcf03fc407536e5  gcc/testsuite/gcc.dg/torture/alias-2.c
  623b6f1d93f75b391f9d1dc139c50697  gcc/testsuite/gcc.dg/torture/arm-fp16-compile-assign.c
--- 41795,41802 ----
  e5e7352de17daef20df813c70e9b7a10  gcc/testsuite/gcc.dg/torture/20190924-1.c
  c1a3ac64264ecff096abb31f7a1c60e1  gcc/testsuite/gcc.dg/torture/20191011-1.c
  a268f7e7fe5d358fe2f76cd8fc4ecac3  gcc/testsuite/gcc.dg/torture/20200311-1.c
! 682902102f565ed7c61ed171053e8f83  gcc/testsuite/gcc.dg/torture/20200727-0.c
! 6b765185ec201860e2594b08bb18461a  gcc/testsuite/gcc.dg/torture/Wsizeof-pointer-memaccess1.c
  d23f5563695ea2b9898397f0244ca90d  gcc/testsuite/gcc.dg/torture/alias-1.c
  2063dc05a74374000dcf03fc407536e5  gcc/testsuite/gcc.dg/torture/alias-2.c
  623b6f1d93f75b391f9d1dc139c50697  gcc/testsuite/gcc.dg/torture/arm-fp16-compile-assign.c
*************** fe01d458fb1e7b307aca4d27de62eff0  gcc/te
*** 39031,39041 ****
  23e1ea0bdd97005c1b4f8564d23f2b6a  gcc/testsuite/gcc.dg/torture/builtin-sqrt-cmp-1.c
  500d48d3b156ad2e1b9121d933504b79  gcc/testsuite/gcc.dg/torture/builtin-symmetric-1.c
  aa8cb0db7596e9b0e87edb8ba4d89392  gcc/testsuite/gcc.dg/torture/builtin-wctype-1.c
! 2ef216f216ec1eb9c83b2f7da4f70754  gcc/testsuite/gcc.dg/torture/builtins-1.c
  dca6b9a0b04be64d1fd91290469bb98b  gcc/testsuite/gcc.dg/torture/c99-contract-1.c
  d91f1642a3d3d72da6f61a576021d2ea  gcc/testsuite/gcc.dg/torture/calleesave-sse.c
! 1df711afa335d9c6b45ecf16769e37d0  gcc/testsuite/gcc.dg/torture/cris-asm-mof-1.c
! 4db0a33ee448d1a3cb855abe7fd5dd87  gcc/testsuite/gcc.dg/torture/cris-volatile-1.c
  ce4f8106ed96ef070bead8ca0df02eea  gcc/testsuite/gcc.dg/torture/darwin-cfstring-3.c
  537c85296c73ca5b8d5644f2db0f4333  gcc/testsuite/gcc.dg/torture/dg-torture.exp
  cd5f72d1a4b2a92dcf8434e80e2602fc  gcc/testsuite/gcc.dg/torture/float128-basic.c
--- 41856,41866 ----
  23e1ea0bdd97005c1b4f8564d23f2b6a  gcc/testsuite/gcc.dg/torture/builtin-sqrt-cmp-1.c
  500d48d3b156ad2e1b9121d933504b79  gcc/testsuite/gcc.dg/torture/builtin-symmetric-1.c
  aa8cb0db7596e9b0e87edb8ba4d89392  gcc/testsuite/gcc.dg/torture/builtin-wctype-1.c
! 48103f541453ef994906baa3e8cc9d99  gcc/testsuite/gcc.dg/torture/builtins-1.c
  dca6b9a0b04be64d1fd91290469bb98b  gcc/testsuite/gcc.dg/torture/c99-contract-1.c
  d91f1642a3d3d72da6f61a576021d2ea  gcc/testsuite/gcc.dg/torture/calleesave-sse.c
! 61fdb26117b326e597982d733555a398  gcc/testsuite/gcc.dg/torture/cris-asm-mof-1.c
! 82bfe80fc489a6c0a56a612f224158c1  gcc/testsuite/gcc.dg/torture/cris-volatile-1.c
  ce4f8106ed96ef070bead8ca0df02eea  gcc/testsuite/gcc.dg/torture/darwin-cfstring-3.c
  537c85296c73ca5b8d5644f2db0f4333  gcc/testsuite/gcc.dg/torture/dg-torture.exp
  cd5f72d1a4b2a92dcf8434e80e2602fc  gcc/testsuite/gcc.dg/torture/float128-basic.c
*************** f866a0ec75af63274fded6d6e704572a  gcc/te
*** 39050,39055 ****
--- 41875,41881 ----
  16e3add3ddbf39ea888b43c6589dd825  gcc/testsuite/gcc.dg/torture/float128-floath.c
  c35d3e6323ffb752dd3c9f891a3f6e50  gcc/testsuite/gcc.dg/torture/float128-ieee-nan.c
  1d581b89a6131cdc2bd3dc2b34fc7fa9  gcc/testsuite/gcc.dg/torture/float128-mul-underflow.c
+ c5d4b4a6b1f41f7b06ae617c02247ab7  gcc/testsuite/gcc.dg/torture/float128-nan-floath.c
  27c304116c294f65c11bea55d8534fbf  gcc/testsuite/gcc.dg/torture/float128-nan.c
  9e7fc55d35743bbfaf829c9543de9ac4  gcc/testsuite/gcc.dg/torture/float128-tg-2.c
  b28a81887fe424c5516f8c05bef87e24  gcc/testsuite/gcc.dg/torture/float128-tg-3.c
*************** a0352637f21fc07fa0443b4c4e043743  gcc/te
*** 39060,39065 ****
--- 41886,41892 ----
  e33e9866b71e5b2d80a7726f98b4f67a  gcc/testsuite/gcc.dg/torture/float128x-builtin.c
  e49fe7885268fff640a38e0a037329c4  gcc/testsuite/gcc.dg/torture/float128x-complex.c
  401684af3896cffb4704dc55d75742c0  gcc/testsuite/gcc.dg/torture/float128x-floath.c
+ 2315f81e52c5cfc21731357ab789e22b  gcc/testsuite/gcc.dg/torture/float128x-nan-floath.c
  faaae848adb2651e6d76b499120a3ad5  gcc/testsuite/gcc.dg/torture/float128x-nan.c
  c13372500282ebfd8b04577d9ddf5d17  gcc/testsuite/gcc.dg/torture/float128x-tg-2.c
  2d17bad2259db985234345b4f2259fe6  gcc/testsuite/gcc.dg/torture/float128x-tg-3.c
*************** c13372500282ebfd8b04577d9ddf5d17  gcc/te
*** 39068,39073 ****
--- 41895,41901 ----
  0b852fc3b1862a3ee4465e753b0e5269  gcc/testsuite/gcc.dg/torture/float16-builtin.c
  7e58cfd59df7aaacf5f6b4d8cf740b4e  gcc/testsuite/gcc.dg/torture/float16-complex.c
  810fc9eca4c8607405db7c71c2529179  gcc/testsuite/gcc.dg/torture/float16-floath.c
+ 3833ea15a71d37392754b1e38a57e46f  gcc/testsuite/gcc.dg/torture/float16-nan-floath.c
  e090fedeec308991a1c09abff9f6fe64  gcc/testsuite/gcc.dg/torture/float16-nan.c
  5634e3daf8b7419925b6959aa3ed1764  gcc/testsuite/gcc.dg/torture/float16-tg-2.c
  9777da1a4b23fac807d5ed96f0c68132  gcc/testsuite/gcc.dg/torture/float16-tg-3.c
*************** e090fedeec308991a1c09abff9f6fe64  gcc/te
*** 39076,39081 ****
--- 41904,41910 ----
  94b044327500f6d1582d37ae9ea7796c  gcc/testsuite/gcc.dg/torture/float32-builtin.c
  466fe4121149750edb2fec5ab3226c8a  gcc/testsuite/gcc.dg/torture/float32-complex.c
  479194fddf3b58b2a535336a2b171630  gcc/testsuite/gcc.dg/torture/float32-floath.c
+ a16ef20b21801ed8093d661dce12dff1  gcc/testsuite/gcc.dg/torture/float32-nan-floath.c
  01ee43ae824950a2c289789898233261  gcc/testsuite/gcc.dg/torture/float32-nan.c
  fa50dda441f5c8935cc3883b733d6f4f  gcc/testsuite/gcc.dg/torture/float32-tg-2.c
  484c0f7a0e1bacc0b657a1a64d94ee09  gcc/testsuite/gcc.dg/torture/float32-tg-3.c
*************** fa50dda441f5c8935cc3883b733d6f4f  gcc/te
*** 39084,39089 ****
--- 41913,41919 ----
  4a70ceb9cb585dd2e7b808836ba1a5c6  gcc/testsuite/gcc.dg/torture/float32x-builtin.c
  aef817e604f3b188289291b1907bfc65  gcc/testsuite/gcc.dg/torture/float32x-complex.c
  63ec3f7c1deb2f123396d523bf83ae3a  gcc/testsuite/gcc.dg/torture/float32x-floath.c
+ fef6a8044cbea59874cf2c927f52c99d  gcc/testsuite/gcc.dg/torture/float32x-nan-floath.c
  f65406ca6d0960fbb2fac0b1a622cc18  gcc/testsuite/gcc.dg/torture/float32x-nan.c
  dafff5133398fb327002b7b2ecfdc9f7  gcc/testsuite/gcc.dg/torture/float32x-tg-2.c
  7e0e3d85111a1d8396674ffd7902dcc4  gcc/testsuite/gcc.dg/torture/float32x-tg-3.c
*************** ec429bc681a2cdaaf93025b91a53b777  gcc/te
*** 39092,39097 ****
--- 41922,41928 ----
  cae353410ad77c26913e93de7759b965  gcc/testsuite/gcc.dg/torture/float64-builtin.c
  4796861bb6ca40790008edefd3e86b9f  gcc/testsuite/gcc.dg/torture/float64-complex.c
  465667475890a3f5b21d79ee1d6989f4  gcc/testsuite/gcc.dg/torture/float64-floath.c
+ 72bbec339963ee28542d3865baa63c6d  gcc/testsuite/gcc.dg/torture/float64-nan-floath.c
  109e5928c7c5f70e3d86ad8e0ca58808  gcc/testsuite/gcc.dg/torture/float64-nan.c
  d296cbbb51d32777492acb1f17aef0f2  gcc/testsuite/gcc.dg/torture/float64-tg-2.c
  a5c1a74d472cc90f018fe1671f7c9256  gcc/testsuite/gcc.dg/torture/float64-tg-3.c
*************** a5c1a74d472cc90f018fe1671f7c9256  gcc/te
*** 39100,39105 ****
--- 41931,41937 ----
  857b2170423eed94fc84970fa740a540  gcc/testsuite/gcc.dg/torture/float64x-builtin.c
  aa497c91f7fdcc573573ced57b4f09dc  gcc/testsuite/gcc.dg/torture/float64x-complex.c
  689e43c42e051608d1c6723fed792de2  gcc/testsuite/gcc.dg/torture/float64x-floath.c
+ 5c948f8c2a58c6187ddb1b55cc8238ab  gcc/testsuite/gcc.dg/torture/float64x-nan-floath.c
  44b291fdce21f604bd68c9aa9c80830e  gcc/testsuite/gcc.dg/torture/float64x-nan.c
  ce3cf05c8b3a13ab0ef86e5961e651ac  gcc/testsuite/gcc.dg/torture/float64x-tg-2.c
  575021dc90e288896a1760008ca30505  gcc/testsuite/gcc.dg/torture/float64x-tg-3.c
*************** b00364c9f7e9c896aebd8bddfe206369  gcc/te
*** 39109,39114 ****
--- 41941,41947 ----
  6ea3e0c782c3ad1d61be80a8f5ef6175  gcc/testsuite/gcc.dg/torture/floatn-complex.h
  a4fec089c1874d76f9c35d734c68421f  gcc/testsuite/gcc.dg/torture/floatn-convert.c
  ba1b7857598f404e8abee27ec3a2e27d  gcc/testsuite/gcc.dg/torture/floatn-floath.h
+ 23aaa27e5def656290cfd16e8e5cd732  gcc/testsuite/gcc.dg/torture/floatn-nan-floath.h
  2cc8a3c01f32ba7bbbfc1cbeff371ed4  gcc/testsuite/gcc.dg/torture/floatn-nan.h
  e09f593e2cab835f9fb2f42fef184aaf  gcc/testsuite/gcc.dg/torture/floatn-tg-2.h
  ee74520c41d30f86fc2e503c64a2c642  gcc/testsuite/gcc.dg/torture/floatn-tg-3.h
*************** fd8e4b5780f61cf3b05303134b29baff  gcc/te
*** 39145,39151 ****
  b433f576987f7d246553ea453e377ab9  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode.c
  ee42b6d1749f9706fac80052d9404d0a  gcc/testsuite/gcc.dg/torture/fp-int-convert.h
  ff646b4bbd5d24fb83db416b6482d625  gcc/testsuite/gcc.dg/torture/ftrapv-1.c
! 48d0b2808715ea3b797c473a38779fee  gcc/testsuite/gcc.dg/torture/ftrapv-2.c
  4d5a201d0e6acb5cc52023eed6db29dd  gcc/testsuite/gcc.dg/torture/inf-compare-1.c
  934da7297e9155e7e1e6ee12d50437f6  gcc/testsuite/gcc.dg/torture/inf-compare-2.c
  38206cc8639f2fe0e3eb0396d196a9e3  gcc/testsuite/gcc.dg/torture/inf-compare-3.c
--- 41978,41984 ----
  b433f576987f7d246553ea453e377ab9  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode.c
  ee42b6d1749f9706fac80052d9404d0a  gcc/testsuite/gcc.dg/torture/fp-int-convert.h
  ff646b4bbd5d24fb83db416b6482d625  gcc/testsuite/gcc.dg/torture/ftrapv-1.c
! 9479cb5c7a5a2913427912c1cb622377  gcc/testsuite/gcc.dg/torture/ftrapv-2.c
  4d5a201d0e6acb5cc52023eed6db29dd  gcc/testsuite/gcc.dg/torture/inf-compare-1.c
  934da7297e9155e7e1e6ee12d50437f6  gcc/testsuite/gcc.dg/torture/inf-compare-2.c
  38206cc8639f2fe0e3eb0396d196a9e3  gcc/testsuite/gcc.dg/torture/inf-compare-3.c
*************** d07ecd707fac97fa40042e04a59d4b1e  gcc/te
*** 39174,39179 ****
--- 42007,42013 ----
  f509ceab15e52f50f8b11d7cacc6447f  gcc/testsuite/gcc.dg/torture/neon-immediate-timode.c
  ba222bffc08c28a180298a0d4c6d6aea  gcc/testsuite/gcc.dg/torture/nested-fn-1.c
  4ac07881b7842f59c3aeffe74b35a881  gcc/testsuite/gcc.dg/torture/parm-coalesce.c
+ 9d76608a6d99fb21a235151928a24b22  gcc/testsuite/gcc.dg/torture/pr100053.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
*************** fe1661d7b8d16d061f6cc858a2e28779  gcc/te
*** 39280,39289 ****
  8404336ea1b6831dcfb72587f1a7621f  gcc/testsuite/gcc.dg/torture/pr38271.c
  8e52e2d532e19a78160642ca0ddb091b  gcc/testsuite/gcc.dg/torture/pr38405.c
  805f2f2486d22fcc3f9e2ec4e4ce9199  gcc/testsuite/gcc.dg/torture/pr38774.c
! c461a9474078bfcff5c2b8443a73b3e1  gcc/testsuite/gcc.dg/torture/pr38948.c
! 1b0e45a5113f3da5810453b56d32e1a4  gcc/testsuite/gcc.dg/torture/pr39074-2.c
  f5556fc19a016272c56be8148ef6baad  gcc/testsuite/gcc.dg/torture/pr39074-3.c
! e3ec9541d797ad303732c3e7fcdfc797  gcc/testsuite/gcc.dg/torture/pr39074.c
  3249cfc8d05d08d1d1266968480d80bd  gcc/testsuite/gcc.dg/torture/pr39132.c
  f8a61f251aa368a38715a6a8dae7d38d  gcc/testsuite/gcc.dg/torture/pr39204.c
  f44d4dc5e20ee22470ba77e35c7ef929  gcc/testsuite/gcc.dg/torture/pr39241.c
--- 42114,42123 ----
  8404336ea1b6831dcfb72587f1a7621f  gcc/testsuite/gcc.dg/torture/pr38271.c
  8e52e2d532e19a78160642ca0ddb091b  gcc/testsuite/gcc.dg/torture/pr38405.c
  805f2f2486d22fcc3f9e2ec4e4ce9199  gcc/testsuite/gcc.dg/torture/pr38774.c
! a899d6b91eee2d19732a6759e74d8824  gcc/testsuite/gcc.dg/torture/pr38948.c
! 2bc40ac7b8ad2ae9eb8268dd93786c11  gcc/testsuite/gcc.dg/torture/pr39074-2.c
  f5556fc19a016272c56be8148ef6baad  gcc/testsuite/gcc.dg/torture/pr39074-3.c
! 05c090287ef2a84766ad18a5c5c75bfd  gcc/testsuite/gcc.dg/torture/pr39074.c
  3249cfc8d05d08d1d1266968480d80bd  gcc/testsuite/gcc.dg/torture/pr39132.c
  f8a61f251aa368a38715a6a8dae7d38d  gcc/testsuite/gcc.dg/torture/pr39204.c
  f44d4dc5e20ee22470ba77e35c7ef929  gcc/testsuite/gcc.dg/torture/pr39241.c
*************** d5834679f39b7f300600a6d633cb5cbe  gcc/te
*** 39424,39431 ****
  dc79e1961cd3bbeb2887a73266e2cabb  gcc/testsuite/gcc.dg/torture/pr51070.c
  4681183e8807959ad821d80656de218a  gcc/testsuite/gcc.dg/torture/pr51071-2.c
  d7a68f667d4fbd92137506ad95fc6ebb  gcc/testsuite/gcc.dg/torture/pr51071.c
! db4a535073c85329d44155a0954dbe43  gcc/testsuite/gcc.dg/torture/pr51106-1.c
! 10213abb0145f76bd8e01a89dc654d5e  gcc/testsuite/gcc.dg/torture/pr51106-2.c
  b125cc4a3178e710af750ad3db92082b  gcc/testsuite/gcc.dg/torture/pr51238.c
  ecd4980708a515be7a74617dd3463cd9  gcc/testsuite/gcc.dg/torture/pr51244-21.c
  58324aacdc1ddf3bf3d5244f0727bf0b  gcc/testsuite/gcc.dg/torture/pr51245.c
--- 42258,42265 ----
  dc79e1961cd3bbeb2887a73266e2cabb  gcc/testsuite/gcc.dg/torture/pr51070.c
  4681183e8807959ad821d80656de218a  gcc/testsuite/gcc.dg/torture/pr51071-2.c
  d7a68f667d4fbd92137506ad95fc6ebb  gcc/testsuite/gcc.dg/torture/pr51071.c
! 9174a9849f035e9da00600c97bd7de71  gcc/testsuite/gcc.dg/torture/pr51106-1.c
! b55b561280ff1396a5dcc4909d225fa8  gcc/testsuite/gcc.dg/torture/pr51106-2.c
  b125cc4a3178e710af750ad3db92082b  gcc/testsuite/gcc.dg/torture/pr51238.c
  ecd4980708a515be7a74617dd3463cd9  gcc/testsuite/gcc.dg/torture/pr51244-21.c
  58324aacdc1ddf3bf3d5244f0727bf0b  gcc/testsuite/gcc.dg/torture/pr51245.c
*************** db2531cabf549bacbd10a5d8f0f5bd29  gcc/te
*** 39543,39557 ****
  3af4ea519f42355b1a2f69ff27c4f8e9  gcc/testsuite/gcc.dg/torture/pr57081.c
  b60f93b2d8cdc704e6aa2c778095348d  gcc/testsuite/gcc.dg/torture/pr57083.c
  746deffcadc23fb008a837ef894fb75e  gcc/testsuite/gcc.dg/torture/pr57122.c
! 946dc8e4ce8a5bf8311952295f3e3ad5  gcc/testsuite/gcc.dg/torture/pr57147-1.c
  20bb02ad9caa1bddb461ed87fb712836  gcc/testsuite/gcc.dg/torture/pr57147-2.c
! 16a0f124c50c8ec0420ed8ebb7248cfc  gcc/testsuite/gcc.dg/torture/pr57147-3.c
  2c294cc3635276068fdee76fd7b1eb82  gcc/testsuite/gcc.dg/torture/pr57214.c
  4901f0628848bf18a655fb924ce0edf6  gcc/testsuite/gcc.dg/torture/pr57251.c
  845769847030f070941db74e9782dce5  gcc/testsuite/gcc.dg/torture/pr57303.c
  c99cd8db49c08f93e69d5c56eb0556fa  gcc/testsuite/gcc.dg/torture/pr57330.c
  bf886fb9169b1bea9c33c365078fa538  gcc/testsuite/gcc.dg/torture/pr57341.c
  60a1c407cd875990011861fd700b448b  gcc/testsuite/gcc.dg/torture/pr57343.c
  69a811a55301952804831d2352da7869  gcc/testsuite/gcc.dg/torture/pr57381.c
  6dde7b265b8ea55083eb48ab23e645f3  gcc/testsuite/gcc.dg/torture/pr57393-1.c
  0a9a5cfb82cad9b2a4aefe0adaad865b  gcc/testsuite/gcc.dg/torture/pr57393-2.c
--- 42377,42393 ----
  3af4ea519f42355b1a2f69ff27c4f8e9  gcc/testsuite/gcc.dg/torture/pr57081.c
  b60f93b2d8cdc704e6aa2c778095348d  gcc/testsuite/gcc.dg/torture/pr57083.c
  746deffcadc23fb008a837ef894fb75e  gcc/testsuite/gcc.dg/torture/pr57122.c
! ae54d8f7f62dcd343a7673819f36d684  gcc/testsuite/gcc.dg/torture/pr57147-1.c
  20bb02ad9caa1bddb461ed87fb712836  gcc/testsuite/gcc.dg/torture/pr57147-2.c
! 62056e815ba97d36a82876f6c552d149  gcc/testsuite/gcc.dg/torture/pr57147-3.c
  2c294cc3635276068fdee76fd7b1eb82  gcc/testsuite/gcc.dg/torture/pr57214.c
  4901f0628848bf18a655fb924ce0edf6  gcc/testsuite/gcc.dg/torture/pr57251.c
  845769847030f070941db74e9782dce5  gcc/testsuite/gcc.dg/torture/pr57303.c
  c99cd8db49c08f93e69d5c56eb0556fa  gcc/testsuite/gcc.dg/torture/pr57330.c
  bf886fb9169b1bea9c33c365078fa538  gcc/testsuite/gcc.dg/torture/pr57341.c
  60a1c407cd875990011861fd700b448b  gcc/testsuite/gcc.dg/torture/pr57343.c
+ f7898a212530d347af112f146c06c7a9  gcc/testsuite/gcc.dg/torture/pr57359-1.c
+ b5680123787863b03ac7395121347dc2  gcc/testsuite/gcc.dg/torture/pr57359-2.c
  69a811a55301952804831d2352da7869  gcc/testsuite/gcc.dg/torture/pr57381.c
  6dde7b265b8ea55083eb48ab23e645f3  gcc/testsuite/gcc.dg/torture/pr57393-1.c
  0a9a5cfb82cad9b2a4aefe0adaad865b  gcc/testsuite/gcc.dg/torture/pr57393-2.c
*************** d93e7f40e0cf0b22feeeb8370fb5f90b  gcc/te
*** 39611,39617 ****
  45627e6c043f0c503ee131a97b006a57  gcc/testsuite/gcc.dg/torture/pr59216.c
  0480494a417d62df9eec20fa82ee4aab  gcc/testsuite/gcc.dg/torture/pr59245.c
  5aff5d636c8b18aba20ff56b7cd632da  gcc/testsuite/gcc.dg/torture/pr59288.c
! ac9ffdd6018cd2c07f686e78ec7737bf  gcc/testsuite/gcc.dg/torture/pr59330.c
  2d6a11a7b4915fd7eae7c7fd70e2b082  gcc/testsuite/gcc.dg/torture/pr59338.c
  24ae42fb3c7e574d9bbe7e0cd4218752  gcc/testsuite/gcc.dg/torture/pr59374-1.c
  3c315488dac1f5c334355f6da2c8b789  gcc/testsuite/gcc.dg/torture/pr59374-2.c
--- 42447,42453 ----
  45627e6c043f0c503ee131a97b006a57  gcc/testsuite/gcc.dg/torture/pr59216.c
  0480494a417d62df9eec20fa82ee4aab  gcc/testsuite/gcc.dg/torture/pr59245.c
  5aff5d636c8b18aba20ff56b7cd632da  gcc/testsuite/gcc.dg/torture/pr59288.c
! 69b19a3c8a0905a342259a047a782370  gcc/testsuite/gcc.dg/torture/pr59330.c
  2d6a11a7b4915fd7eae7c7fd70e2b082  gcc/testsuite/gcc.dg/torture/pr59338.c
  24ae42fb3c7e574d9bbe7e0cd4218752  gcc/testsuite/gcc.dg/torture/pr59374-1.c
  3c315488dac1f5c334355f6da2c8b789  gcc/testsuite/gcc.dg/torture/pr59374-2.c
*************** af2fe96a56e12f4d3da8c1e9da5687fe  gcc/te
*** 39845,39858 ****
  1afd8f92932d1a85ea923cb8e3517f4a  gcc/testsuite/gcc.dg/torture/pr71594.c
  72615f905ceef3fb1380beb468515b76  gcc/testsuite/gcc.dg/torture/pr71595.c
  0edd46c744e2708f4afe092192c1167b  gcc/testsuite/gcc.dg/torture/pr71598-1.c
! 2f934cad9cbf0540d50d1836e6223dd0  gcc/testsuite/gcc.dg/torture/pr71598-2.c
  cf0be6234564446bb6f51c165b1b774a  gcc/testsuite/gcc.dg/torture/pr71598-3.c
  b0020481b01ba2fea155b7e666817dc3  gcc/testsuite/gcc.dg/torture/pr71606.c
  e281b38a3466f38c9a2413771cb95374  gcc/testsuite/gcc.dg/torture/pr71762-1.c
  a106da354df87c5ff9562af3465dc6a2  gcc/testsuite/gcc.dg/torture/pr71762-2.c
  a311656e42125d7e8563fa88875fdafb  gcc/testsuite/gcc.dg/torture/pr71762-3.c
  73f845171cfb9898d60b5fae2de8b109  gcc/testsuite/gcc.dg/torture/pr71802.c
! d181e33aa155b8fc623ba4c65d98c7ef  gcc/testsuite/gcc.dg/torture/pr71816.c
  8e0a4d2ea34a41c4477fd75918a6d66c  gcc/testsuite/gcc.dg/torture/pr71866.c
  2efd169675d2de5378ad15e1d0e40378  gcc/testsuite/gcc.dg/torture/pr71881.c
  7b60e47b8cd1b1bbfe2752fad88fbe75  gcc/testsuite/gcc.dg/torture/pr71887.c
--- 42681,42694 ----
  1afd8f92932d1a85ea923cb8e3517f4a  gcc/testsuite/gcc.dg/torture/pr71594.c
  72615f905ceef3fb1380beb468515b76  gcc/testsuite/gcc.dg/torture/pr71595.c
  0edd46c744e2708f4afe092192c1167b  gcc/testsuite/gcc.dg/torture/pr71598-1.c
! 885bffa10a4531b3a24a13a751fd3ac5  gcc/testsuite/gcc.dg/torture/pr71598-2.c
  cf0be6234564446bb6f51c165b1b774a  gcc/testsuite/gcc.dg/torture/pr71598-3.c
  b0020481b01ba2fea155b7e666817dc3  gcc/testsuite/gcc.dg/torture/pr71606.c
  e281b38a3466f38c9a2413771cb95374  gcc/testsuite/gcc.dg/torture/pr71762-1.c
  a106da354df87c5ff9562af3465dc6a2  gcc/testsuite/gcc.dg/torture/pr71762-2.c
  a311656e42125d7e8563fa88875fdafb  gcc/testsuite/gcc.dg/torture/pr71762-3.c
  73f845171cfb9898d60b5fae2de8b109  gcc/testsuite/gcc.dg/torture/pr71802.c
! f055e2895a430a59d7c2bdd70f5c7f20  gcc/testsuite/gcc.dg/torture/pr71816.c
  8e0a4d2ea34a41c4477fd75918a6d66c  gcc/testsuite/gcc.dg/torture/pr71866.c
  2efd169675d2de5378ad15e1d0e40378  gcc/testsuite/gcc.dg/torture/pr71881.c
  7b60e47b8cd1b1bbfe2752fad88fbe75  gcc/testsuite/gcc.dg/torture/pr71887.c
*************** b6497d39a2f8affc6b22d2af1a3f5ff5  gcc/te
*** 39928,39934 ****
  836cdc8e8c71c2a740d491e170406a0c  gcc/testsuite/gcc.dg/torture/pr80122.c
  819f028916edb011463e0702393e5e94  gcc/testsuite/gcc.dg/torture/pr80163.c
  ed736f4d42d5b470961915a56ed1dc6c  gcc/testsuite/gcc.dg/torture/pr80181.c
! 935816549657d3ea72eef67ee99445dc  gcc/testsuite/gcc.dg/torture/pr80281.c
  4d6b74729925a5d31b130908d59c7661  gcc/testsuite/gcc.dg/torture/pr80304.c
  a4f6b08c1291381e88e61db06bdf372f  gcc/testsuite/gcc.dg/torture/pr80341.c
  7898e740ecd870f8c50c8afb79a4285f  gcc/testsuite/gcc.dg/torture/pr80359.c
--- 42764,42770 ----
  836cdc8e8c71c2a740d491e170406a0c  gcc/testsuite/gcc.dg/torture/pr80122.c
  819f028916edb011463e0702393e5e94  gcc/testsuite/gcc.dg/torture/pr80163.c
  ed736f4d42d5b470961915a56ed1dc6c  gcc/testsuite/gcc.dg/torture/pr80181.c
! f24246e271fff717bb5ba8d352044b96  gcc/testsuite/gcc.dg/torture/pr80281.c
  4d6b74729925a5d31b130908d59c7661  gcc/testsuite/gcc.dg/torture/pr80304.c
  a4f6b08c1291381e88e61db06bdf372f  gcc/testsuite/gcc.dg/torture/pr80341.c
  7898e740ecd870f8c50c8afb79a4285f  gcc/testsuite/gcc.dg/torture/pr80359.c
*************** fff303e88793dc27822a867c8150a7c6  gcc/te
*** 40015,40021 ****
  a84b6c59134ee4102ee04385d54f1251  gcc/testsuite/gcc.dg/torture/pr85814.c
  35679d69659e8ad09cb8dbb3cb80534c  gcc/testsuite/gcc.dg/torture/pr85852.c
  1e0ba2699357366f0ceecbf58d0a7841  gcc/testsuite/gcc.dg/torture/pr85989.c
! 2d3fc3405b2312bafbcf7e7e041f772e  gcc/testsuite/gcc.dg/torture/pr86034.c
  0045ad2aec5cfb041404f2893969e14f  gcc/testsuite/gcc.dg/torture/pr86066.c
  54dd6abbce14b98046ac6136b2477fdb  gcc/testsuite/gcc.dg/torture/pr86232.c
  336a55bf48ddc54b21f2c986c021410a  gcc/testsuite/gcc.dg/torture/pr86363.c
--- 42851,42857 ----
  a84b6c59134ee4102ee04385d54f1251  gcc/testsuite/gcc.dg/torture/pr85814.c
  35679d69659e8ad09cb8dbb3cb80534c  gcc/testsuite/gcc.dg/torture/pr85852.c
  1e0ba2699357366f0ceecbf58d0a7841  gcc/testsuite/gcc.dg/torture/pr85989.c
! 96e84f808759f785f63d34b4a5b36061  gcc/testsuite/gcc.dg/torture/pr86034.c
  0045ad2aec5cfb041404f2893969e14f  gcc/testsuite/gcc.dg/torture/pr86066.c
  54dd6abbce14b98046ac6136b2477fdb  gcc/testsuite/gcc.dg/torture/pr86232.c
  336a55bf48ddc54b21f2c986c021410a  gcc/testsuite/gcc.dg/torture/pr86363.c
*************** bf75ea078dfeee5f8a7bf24812d7b1d7  gcc/te
*** 40103,40117 ****
  e398c88cb4160ec78fc9362787569fe9  gcc/testsuite/gcc.dg/torture/pr91812.c
  237cf96145e3501f80b6658a6f2cc08c  gcc/testsuite/gcc.dg/torture/pr91896.c
  8c70a09256d11bcd327a937d92b8d3a7  gcc/testsuite/gcc.dg/torture/pr92069.c
! 7c5909748debb6284ca7b2d3b8d3afdd  gcc/testsuite/gcc.dg/torture/pr92088-1.c
! 95fdad3f26c2911207f830d0c8002a99  gcc/testsuite/gcc.dg/torture/pr92088-2.c
  68f01c75766e97dd8ebf42a0b878a16e  gcc/testsuite/gcc.dg/torture/pr92152.c
  8e99fdbf07ece69b4c03cc506dc0d28d  gcc/testsuite/gcc.dg/torture/pr92173.c
  6fd747b36cdf872e31a070be2b7c67f9  gcc/testsuite/gcc.dg/torture/pr92203.c
  3b43e9e3564d6c0917bee93f0519c90d  gcc/testsuite/gcc.dg/torture/pr92222.c
  5fe0569657ee4907c8420b5ee4c2727c  gcc/testsuite/gcc.dg/torture/pr92241-2.c
  ac5de2485dcaf9f676fd5c9a0096e839  gcc/testsuite/gcc.dg/torture/pr92241.c
! b78b6f8e75d09242977a6bb8dff18243  gcc/testsuite/gcc.dg/torture/pr92252.c
  1c6cee642aee71141f1aae896c00fd19  gcc/testsuite/gcc.dg/torture/pr92275.c
  e0a3096fcb6ab59b25ba1dc240ca1b64  gcc/testsuite/gcc.dg/torture/pr92328.c
  cbdeb4be8dd85cdebd226452ae87bc65  gcc/testsuite/gcc.dg/torture/pr92345.c
--- 42939,42953 ----
  e398c88cb4160ec78fc9362787569fe9  gcc/testsuite/gcc.dg/torture/pr91812.c
  237cf96145e3501f80b6658a6f2cc08c  gcc/testsuite/gcc.dg/torture/pr91896.c
  8c70a09256d11bcd327a937d92b8d3a7  gcc/testsuite/gcc.dg/torture/pr92069.c
! 41603d5a5e2fbbc06e1a4f28136e0c7a  gcc/testsuite/gcc.dg/torture/pr92088-1.c
! 094d401bc82bc987d3711fe317147bac  gcc/testsuite/gcc.dg/torture/pr92088-2.c
  68f01c75766e97dd8ebf42a0b878a16e  gcc/testsuite/gcc.dg/torture/pr92152.c
  8e99fdbf07ece69b4c03cc506dc0d28d  gcc/testsuite/gcc.dg/torture/pr92173.c
  6fd747b36cdf872e31a070be2b7c67f9  gcc/testsuite/gcc.dg/torture/pr92203.c
  3b43e9e3564d6c0917bee93f0519c90d  gcc/testsuite/gcc.dg/torture/pr92222.c
  5fe0569657ee4907c8420b5ee4c2727c  gcc/testsuite/gcc.dg/torture/pr92241-2.c
  ac5de2485dcaf9f676fd5c9a0096e839  gcc/testsuite/gcc.dg/torture/pr92241.c
! c46cc1861bc652c9b76eff4da38945d2  gcc/testsuite/gcc.dg/torture/pr92252.c
  1c6cee642aee71141f1aae896c00fd19  gcc/testsuite/gcc.dg/torture/pr92275.c
  e0a3096fcb6ab59b25ba1dc240ca1b64  gcc/testsuite/gcc.dg/torture/pr92328.c
  cbdeb4be8dd85cdebd226452ae87bc65  gcc/testsuite/gcc.dg/torture/pr92345.c
*************** d65beaaa59a8423683eeb4e6f96a6c90  gcc/te
*** 40126,40132 ****
  8d4781bb8f543dec7157ce7c138f00d3  gcc/testsuite/gcc.dg/torture/pr92715.c
  f4439b0764177ea3457ef0859273ac4c  gcc/testsuite/gcc.dg/torture/pr92742.c
  b98a32bd327b321545265ce7edc856b9  gcc/testsuite/gcc.dg/torture/pr93110.c
! a8854512b570e701c4e9ebe12eca5a8a  gcc/testsuite/gcc.dg/torture/pr93124.c
  a5418b3252d6a6b3f88633462571d8da  gcc/testsuite/gcc.dg/torture/pr93133.c
  5b19e208f860a4b3cfaf5781b8412264  gcc/testsuite/gcc.dg/torture/pr93170.c
  dd21c75d6eac9f019a72bb94132f182d  gcc/testsuite/gcc.dg/torture/pr93354.c
--- 42962,42968 ----
  8d4781bb8f543dec7157ce7c138f00d3  gcc/testsuite/gcc.dg/torture/pr92715.c
  f4439b0764177ea3457ef0859273ac4c  gcc/testsuite/gcc.dg/torture/pr92742.c
  b98a32bd327b321545265ce7edc856b9  gcc/testsuite/gcc.dg/torture/pr93110.c
! 5abf06588cb51b9daabe418f75462443  gcc/testsuite/gcc.dg/torture/pr93124.c
  a5418b3252d6a6b3f88633462571d8da  gcc/testsuite/gcc.dg/torture/pr93133.c
  5b19e208f860a4b3cfaf5781b8412264  gcc/testsuite/gcc.dg/torture/pr93170.c
  dd21c75d6eac9f019a72bb94132f182d  gcc/testsuite/gcc.dg/torture/pr93354.c
*************** bae425547d7c364d4781b56048755e11  gcc/te
*** 40140,40164 ****
  79912fc54487057b27f1a3b11f9f5414  gcc/testsuite/gcc.dg/torture/pr94206.c
  ce4383e1e83e1b0ab846107796c0f2b4  gcc/testsuite/gcc.dg/torture/pr94392.c
  d5053eab2105e6cdf547694ad59b90fa  gcc/testsuite/gcc.dg/torture/pr94439.c
! 841bd77b45052cf6402c6a959ffe7fa8  gcc/testsuite/gcc.dg/torture/pr94479.c
  79631314e3a293ef93ce4202a5146f06  gcc/testsuite/gcc.dg/torture/pr94482.c
  e0ac106a863f9ebde2e73b57ac977143  gcc/testsuite/gcc.dg/torture/pr94516.c
  c01fa386702975a48153d49c7102f94e  gcc/testsuite/gcc.dg/torture/pr94947-1.c
  ae0f145265dd4960c43e14aeb325fd0e  gcc/testsuite/gcc.dg/torture/pr94947-2.c
  a5d39ec2048b8f4f3145b829fa56bec1  gcc/testsuite/gcc.dg/torture/pr95049.c
  0b01dca702634f65529254117d74cdc9  gcc/testsuite/gcc.dg/torture/pr96130.c
  6904165f78a3e3bd6c3a2d614bbf3240  gcc/testsuite/gcc.dg/torture/pr96133.c
  a2224137d9db6e254b70f0985eaa812f  gcc/testsuite/gcc.dg/torture/pr96349.c
  b6ac3fe74c736f29c622c9f00307a596  gcc/testsuite/gcc.dg/torture/pr96522.c
  264df8564ef9bf89c28b5918f88bada3  gcc/testsuite/gcc.dg/torture/pr97812.c
  bea94dc5b4f440a3a09008e23a97d794  gcc/testsuite/gcc.dg/torture/pr98117.c
  199fada7702df9f4b8545d7dcb3c7cb7  gcc/testsuite/gcc.dg/torture/pr98640.c
  26d769ec578c3e810f69bed767d169de  gcc/testsuite/gcc.dg/torture/pr98758.c
  a54bab589a8d1756d3664fc38d64bf3b  gcc/testsuite/gcc.dg/torture/pr99694.c
  2712af19a1b0692a370799c3da75f379  gcc/testsuite/gcc.dg/torture/pr99824.c
! d086c3946230ba05df33a45be4862730  gcc/testsuite/gcc.dg/torture/pta-callused-1.c
  39620328710fd9ff170741766805e426  gcc/testsuite/gcc.dg/torture/pta-escape-1.c
! f50cbae53561b1267140f574974f7fc0  gcc/testsuite/gcc.dg/torture/pta-ptrarith-1.c
  3701f1550ba67d16d9397b038cac0c3f  gcc/testsuite/gcc.dg/torture/pta-ptrarith-2.c
  df396cd766224a9e7fffe709c652f429  gcc/testsuite/gcc.dg/torture/pta-ptrarith-3.c
  14eb5450bfac48ec521b879f890ef581  gcc/testsuite/gcc.dg/torture/pta-structcopy-1.c
--- 42976,43033 ----
  79912fc54487057b27f1a3b11f9f5414  gcc/testsuite/gcc.dg/torture/pr94206.c
  ce4383e1e83e1b0ab846107796c0f2b4  gcc/testsuite/gcc.dg/torture/pr94392.c
  d5053eab2105e6cdf547694ad59b90fa  gcc/testsuite/gcc.dg/torture/pr94439.c
! 71f844d3e7de4c89905c25aee1bf4a63  gcc/testsuite/gcc.dg/torture/pr94479.c
  79631314e3a293ef93ce4202a5146f06  gcc/testsuite/gcc.dg/torture/pr94482.c
  e0ac106a863f9ebde2e73b57ac977143  gcc/testsuite/gcc.dg/torture/pr94516.c
  c01fa386702975a48153d49c7102f94e  gcc/testsuite/gcc.dg/torture/pr94947-1.c
  ae0f145265dd4960c43e14aeb325fd0e  gcc/testsuite/gcc.dg/torture/pr94947-2.c
+ 109236a10e952dce1ab0ec0c59a45a28  gcc/testsuite/gcc.dg/torture/pr94949.c
+ e40acfa5897068d8cc14032225d0cfe7  gcc/testsuite/gcc.dg/torture/pr94988.c
+ 5a55c4f290b1f17012bc1a8eb471f1a9  gcc/testsuite/gcc.dg/torture/pr95025.c
+ 9bd090eb98b104e24e65c11efd4da0d5  gcc/testsuite/gcc.dg/torture/pr95045.c
  a5d39ec2048b8f4f3145b829fa56bec1  gcc/testsuite/gcc.dg/torture/pr95049.c
+ d3789a84a5e991a5b456463e7edb4334  gcc/testsuite/gcc.dg/torture/pr95172.c
+ 3d0a595848e08425b4ab281e4ae2112c  gcc/testsuite/gcc.dg/torture/pr95248.c
+ da4f541e6deb606f319b4d8c17fc2b0a  gcc/testsuite/gcc.dg/torture/pr95283.c
+ 766755af2c3473e3bcb3981740b87304  gcc/testsuite/gcc.dg/torture/pr95295-1.c
+ 563a33a52d739d9d5494207e066545e9  gcc/testsuite/gcc.dg/torture/pr95295-2.c
+ 7de93e9c6bd7c8b9b24e63ae9894661c  gcc/testsuite/gcc.dg/torture/pr95295-3.c
+ deb4c8bf26e85d757ac0f2555e19d607  gcc/testsuite/gcc.dg/torture/pr95761.c
  0b01dca702634f65529254117d74cdc9  gcc/testsuite/gcc.dg/torture/pr96130.c
  6904165f78a3e3bd6c3a2d614bbf3240  gcc/testsuite/gcc.dg/torture/pr96133.c
  a2224137d9db6e254b70f0985eaa812f  gcc/testsuite/gcc.dg/torture/pr96349.c
+ 5a12f6a1ad43ca6f4ef49dbe774a5524  gcc/testsuite/gcc.dg/torture/pr96491.c
  b6ac3fe74c736f29c622c9f00307a596  gcc/testsuite/gcc.dg/torture/pr96522.c
+ db95a774894a2e658b9d7535b83b9157  gcc/testsuite/gcc.dg/torture/pr96548.c
+ 6d27c87ddaab2ea17de5920376761c64  gcc/testsuite/gcc.dg/torture/pr96760.c
+ f925e890f2a6440c3e42a0699231edbb  gcc/testsuite/gcc.dg/torture/pr97135.c
+ d2b3ed9cd2310f8d29376d85f9e4e962  gcc/testsuite/gcc.dg/torture/pr97330-1.c
+ 5e742bb8197b752bd2e25db5b4111f63  gcc/testsuite/gcc.dg/torture/pr97330-2.c
+ b6f957c2a8ca9695ed6c652552b95fe8  gcc/testsuite/gcc.dg/torture/pr97559-1.c
+ d8e07ab519f29b4fd0a597fc97d9cbf2  gcc/testsuite/gcc.dg/torture/pr97559-2.c
  264df8564ef9bf89c28b5918f88bada3  gcc/testsuite/gcc.dg/torture/pr97812.c
+ fd0bb19eb0ef59034925fa41f20bd696  gcc/testsuite/gcc.dg/torture/pr97901.c
  bea94dc5b4f440a3a09008e23a97d794  gcc/testsuite/gcc.dg/torture/pr98117.c
+ 2f4e7889a53dccc1921224c302c4bafa  gcc/testsuite/gcc.dg/torture/pr98191.c
+ 254cfe38393350484b7a887688b8d605  gcc/testsuite/gcc.dg/torture/pr98219-1.c
+ a4585f3b2febaea9b377690eb6e27b00  gcc/testsuite/gcc.dg/torture/pr98219-2.c
+ 78bc3f365c6a04f7f922bbb07fb465ac  gcc/testsuite/gcc.dg/torture/pr98235.c
+ 464aa2044b2bacce5e44c3835cdeff74  gcc/testsuite/gcc.dg/torture/pr98289.c
+ e04ec27dc5469da4d5b29038bf9a9865  gcc/testsuite/gcc.dg/torture/pr98601.c
  199fada7702df9f4b8545d7dcb3c7cb7  gcc/testsuite/gcc.dg/torture/pr98640.c
  26d769ec578c3e810f69bed767d169de  gcc/testsuite/gcc.dg/torture/pr98758.c
+ 0c23d23b6342f50b1da53586ef32fdd6  gcc/testsuite/gcc.dg/torture/pr98773.c
+ 4d7897f67f77d46b2917c68e493089ba  gcc/testsuite/gcc.dg/torture/pr98786.c
+ bb157f4a51d2cdf6bf7f85020478cfab  gcc/testsuite/gcc.dg/torture/pr99652-1.c
+ 2fff8ca65194be4ac8378ccc98a0bf27  gcc/testsuite/gcc.dg/torture/pr99652-2.c
  a54bab589a8d1756d3664fc38d64bf3b  gcc/testsuite/gcc.dg/torture/pr99694.c
  2712af19a1b0692a370799c3da75f379  gcc/testsuite/gcc.dg/torture/pr99824.c
! 1e1d5d7c1a9f7fb97f53ed28cd4d5c93  gcc/testsuite/gcc.dg/torture/pr99880.c
! 34e5b5ddc6995292f18effac74e9fcce  gcc/testsuite/gcc.dg/torture/pr99947.c
! 42cad3ed6f197e1283a3767a1f0ae8d6  gcc/testsuite/gcc.dg/torture/pr99954.c
! 61b01a5945681ee4eaa80a546a0b2347  gcc/testsuite/gcc.dg/torture/pta-callused-1.c
  39620328710fd9ff170741766805e426  gcc/testsuite/gcc.dg/torture/pta-escape-1.c
! 658053fc9112f2a15eaa664b29ab348e  gcc/testsuite/gcc.dg/torture/pta-ptrarith-1.c
  3701f1550ba67d16d9397b038cac0c3f  gcc/testsuite/gcc.dg/torture/pta-ptrarith-2.c
  df396cd766224a9e7fffe709c652f429  gcc/testsuite/gcc.dg/torture/pta-ptrarith-3.c
  14eb5450bfac48ec521b879f890ef581  gcc/testsuite/gcc.dg/torture/pta-structcopy-1.c
*************** dc476fb6c6fcd7370e5d269c50d72e4f  gcc/te
*** 40186,40192 ****
  edd2b87cbd92db8aadd0dffe6eebb23d  gcc/testsuite/gcc.dg/torture/stackalign/alloca-5.c
  ac89150f1589849bc2c9db379c422d8a  gcc/testsuite/gcc.dg/torture/stackalign/alloca-6.c
  fef5a8d7a1f7cdc1db96edce26047f61  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-1.c
! f69800f2ec8c4988311b8660cfc3694f  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c
  4844379205910806b383dbde4bb6bb59  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-3.c
  4b4b59cd55751e5743bc4195c9571b78  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-4.c
  d902ae1540aab0be308e7ba8052278bf  gcc/testsuite/gcc.dg/torture/stackalign/builtin-return-1.c
--- 43055,43061 ----
  edd2b87cbd92db8aadd0dffe6eebb23d  gcc/testsuite/gcc.dg/torture/stackalign/alloca-5.c
  ac89150f1589849bc2c9db379c422d8a  gcc/testsuite/gcc.dg/torture/stackalign/alloca-6.c
  fef5a8d7a1f7cdc1db96edce26047f61  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-1.c
! 5fc7b3fa3e8d8077371ee130032a9b89  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c
  4844379205910806b383dbde4bb6bb59  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-3.c
  4b4b59cd55751e5743bc4195c9571b78  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-4.c
  d902ae1540aab0be308e7ba8052278bf  gcc/testsuite/gcc.dg/torture/stackalign/builtin-return-1.c
*************** eeb7cdfccbec69227ac2915527d61fa3  gcc/te
*** 40219,40225 ****
  0c1806b37db5e92a3ab1c3c51fb22d93  gcc/testsuite/gcc.dg/torture/stackalign/setjmp-3.c
  ffc8d6d378e80da23cc2300fd9f2d529  gcc/testsuite/gcc.dg/torture/stackalign/setjmp-4.c
  2a60ec21d6968b6101b16fa5b7c6ddb5  gcc/testsuite/gcc.dg/torture/stackalign/sibcall-1.c
! 1154cab6ae77655663948182aee5b5b0  gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp
  1adc6e1acc06069cf12168f39ef7f916  gcc/testsuite/gcc.dg/torture/stackalign/struct-1.c
  30d5a92d8a2ed3890586ed1c2d6602c9  gcc/testsuite/gcc.dg/torture/stackalign/thiscall-1.c
  d5967747961c3c0e43380a4aee91e5dd  gcc/testsuite/gcc.dg/torture/stackalign/vararg-1.c
--- 43088,43094 ----
  0c1806b37db5e92a3ab1c3c51fb22d93  gcc/testsuite/gcc.dg/torture/stackalign/setjmp-3.c
  ffc8d6d378e80da23cc2300fd9f2d529  gcc/testsuite/gcc.dg/torture/stackalign/setjmp-4.c
  2a60ec21d6968b6101b16fa5b7c6ddb5  gcc/testsuite/gcc.dg/torture/stackalign/sibcall-1.c
! d7e0ddd1f6e09838ee75c461b357993b  gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp
  1adc6e1acc06069cf12168f39ef7f916  gcc/testsuite/gcc.dg/torture/stackalign/struct-1.c
  30d5a92d8a2ed3890586ed1c2d6602c9  gcc/testsuite/gcc.dg/torture/stackalign/thiscall-1.c
  d5967747961c3c0e43380a4aee91e5dd  gcc/testsuite/gcc.dg/torture/stackalign/vararg-1.c
*************** a7dd8959cd95d178e51f986a468a0a72  gcc/te
*** 40233,40239 ****
  0cca0b22c665af78b56436b3e71b756f  gcc/testsuite/gcc.dg/torture/tls/thr-init-2.c
  32042e365dfe5925f2393ec1d5c692d1  gcc/testsuite/gcc.dg/torture/tls/tls-reload-1.c
  a759d083aeeb716f90190112ebdae9ca  gcc/testsuite/gcc.dg/torture/tls/tls-test.c
! 8989be204131b3b1ed8a47c4cf6971f5  gcc/testsuite/gcc.dg/torture/tls/tls.exp
  943be2937b2b327811185a47734cf258  gcc/testsuite/gcc.dg/torture/transpose-1.c
  1449d9d29dea8de5fba10079ff2581ac  gcc/testsuite/gcc.dg/torture/transpose-2.c
  5061844ac50db8a5cc4a6626c641b34c  gcc/testsuite/gcc.dg/torture/transpose-3.c
--- 43102,43108 ----
  0cca0b22c665af78b56436b3e71b756f  gcc/testsuite/gcc.dg/torture/tls/thr-init-2.c
  32042e365dfe5925f2393ec1d5c692d1  gcc/testsuite/gcc.dg/torture/tls/tls-reload-1.c
  a759d083aeeb716f90190112ebdae9ca  gcc/testsuite/gcc.dg/torture/tls/tls-test.c
! d5c52b9bb96b425017ed02551090763d  gcc/testsuite/gcc.dg/torture/tls/tls.exp
  943be2937b2b327811185a47734cf258  gcc/testsuite/gcc.dg/torture/transpose-1.c
  1449d9d29dea8de5fba10079ff2581ac  gcc/testsuite/gcc.dg/torture/transpose-2.c
  5061844ac50db8a5cc4a6626c641b34c  gcc/testsuite/gcc.dg/torture/transpose-3.c
*************** d85610312206caa729ac7ee485b19a6b  gcc/te
*** 40289,40305 ****
  3efe9018c42617fad26ca176fc3306fd  gcc/testsuite/gcc.dg/tree-prof/20050826-2.c
  7fea89044d1cae3c25a1775dd049cbe7  gcc/testsuite/gcc.dg/tree-prof/bb-reorg.c
  dc328569b49093621d4f5d4b641aceb0  gcc/testsuite/gcc.dg/tree-prof/cmpsf-1.c
! 7fdc7ac03fc6b76b9e3311a0c914ff0b  gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c
  9a43319c4f03c869fc3c7320fbc78bff  gcc/testsuite/gcc.dg/tree-prof/comp-goto-1.c
! 0f34f41be25c3ad099b5d4708addcba5  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c
  cf7f678829144365c7c6e3436f2fe6c9  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c
! 1823b8502bdb78cce73ce8d2a83e1420  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c
  2d9fca58be8b44c8cab8cd14edebfcd8  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1.c
  8a7ed79d9687fd79c9c1f831e7e7995b  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c
  26029d99148f25b6e5936d8536719f05  gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1.c
  af6029c2bad38cfb5326e5a120549d06  gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1a.c
  8315d75fc76e83f849bf54a0be9b8d41  gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-2.c
! 7655eb93f98b9fbb70a33e5764cbe967  gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-topn.c
  adcde91c9628e17b51f6dbaa657e6c01  gcc/testsuite/gcc.dg/tree-prof/indir-call-prof.c
  5db2d8c69929de2cc39824b4fc51389a  gcc/testsuite/gcc.dg/tree-prof/inliner-1.c
  65775a552552ee4184ac107034468f54  gcc/testsuite/gcc.dg/tree-prof/merge_block.c
--- 43158,43175 ----
  3efe9018c42617fad26ca176fc3306fd  gcc/testsuite/gcc.dg/tree-prof/20050826-2.c
  7fea89044d1cae3c25a1775dd049cbe7  gcc/testsuite/gcc.dg/tree-prof/bb-reorg.c
  dc328569b49093621d4f5d4b641aceb0  gcc/testsuite/gcc.dg/tree-prof/cmpsf-1.c
! 02c5329d22768b6b3b66d9487f6217f0  gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c
  9a43319c4f03c869fc3c7320fbc78bff  gcc/testsuite/gcc.dg/tree-prof/comp-goto-1.c
! b45a4f5b69be7e2454186267f7bdab9b  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c
  cf7f678829144365c7c6e3436f2fe6c9  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c
! 824dc338da472bd5c86792a2871d8b3d  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c
  2d9fca58be8b44c8cab8cd14edebfcd8  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1.c
  8a7ed79d9687fd79c9c1f831e7e7995b  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c
  26029d99148f25b6e5936d8536719f05  gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1.c
  af6029c2bad38cfb5326e5a120549d06  gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1a.c
  8315d75fc76e83f849bf54a0be9b8d41  gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-2.c
! 1a6a44bdec75a8550a766d6afea7e532  gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-malloc.c
! 85d5018bec782bddcb3e3782c0be5143  gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-topn.c
  adcde91c9628e17b51f6dbaa657e6c01  gcc/testsuite/gcc.dg/tree-prof/indir-call-prof.c
  5db2d8c69929de2cc39824b4fc51389a  gcc/testsuite/gcc.dg/tree-prof/inliner-1.c
  65775a552552ee4184ac107034468f54  gcc/testsuite/gcc.dg/tree-prof/merge_block.c
*************** fa7217b4e402db46b1d64ca38eb6f212  gcc/te
*** 40319,40338 ****
  73302853a530c030ecd1ff602214cd97  gcc/testsuite/gcc.dg/tree-prof/pr77698.c
  41f2b0f1caac2c21616dfe0830cd87fe  gcc/testsuite/gcc.dg/tree-prof/pr79587.c
  f0f34a48ac0b986d65958e798b48c8b5  gcc/testsuite/gcc.dg/tree-prof/pr96394.c
  6326a041bce19e077fb8352676c53447  gcc/testsuite/gcc.dg/tree-prof/prof-robust-1.c
! 8056fa4726dd65db048215ace1fd27cc  gcc/testsuite/gcc.dg/tree-prof/section-attr-1.c
! d131f5a0666172175c8cd5182614bc56  gcc/testsuite/gcc.dg/tree-prof/section-attr-2.c
! 5ec02661d1bb8ee5a24db441f176b81c  gcc/testsuite/gcc.dg/tree-prof/section-attr-3.c
  e0651baf3344a3a41f63b729be3166b4  gcc/testsuite/gcc.dg/tree-prof/split-1.c
  1b60ba56b22c321a64245cc8f3874332  gcc/testsuite/gcc.dg/tree-prof/stringop-1.c
! c3948406e43b3cc794419ab3a070840b  gcc/testsuite/gcc.dg/tree-prof/stringop-2.c
  1ad0b9bb9b1b8c06cc6b4cb52fbf9139  gcc/testsuite/gcc.dg/tree-prof/switch-case-1.c
  e7aeca94f621518a6e6709ceaeb4e162  gcc/testsuite/gcc.dg/tree-prof/switch-case-2.c
  d772d253a3efe703a6f81d851febfdcc  gcc/testsuite/gcc.dg/tree-prof/time-profiler-1.c
  a3bc2a0ab5b9121134c0c8183bdd363d  gcc/testsuite/gcc.dg/tree-prof/time-profiler-2.c
  d4bb2fbb3f0ff1c2682f30c9bd6f533d  gcc/testsuite/gcc.dg/tree-prof/time-profiler-3.c
  00abf1ef402b6663d2eca17cddf11f1b  gcc/testsuite/gcc.dg/tree-prof/tracer-1.c
! 5c850e48dce80d7afd2d473bf2454ede  gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp
  7475ec338be2dc0236a9208d95977141  gcc/testsuite/gcc.dg/tree-prof/unroll-1.c
  14a5277ebc22dc06798be4e7a79ee909  gcc/testsuite/gcc.dg/tree-prof/update-cunroll-2.c
  2c485d6763546bfa5c14ee8da0cfe215  gcc/testsuite/gcc.dg/tree-prof/update-loopch.c
--- 43189,43209 ----
  73302853a530c030ecd1ff602214cd97  gcc/testsuite/gcc.dg/tree-prof/pr77698.c
  41f2b0f1caac2c21616dfe0830cd87fe  gcc/testsuite/gcc.dg/tree-prof/pr79587.c
  f0f34a48ac0b986d65958e798b48c8b5  gcc/testsuite/gcc.dg/tree-prof/pr96394.c
+ 1249bef1cb51c0e803cbf6327242106d  gcc/testsuite/gcc.dg/tree-prof/pr97461.c
  6326a041bce19e077fb8352676c53447  gcc/testsuite/gcc.dg/tree-prof/prof-robust-1.c
! 96589ee0164379d36e7d3c49db984ac5  gcc/testsuite/gcc.dg/tree-prof/section-attr-1.c
! b72968fae2b61dcdac7ed3cbf3a8bcfe  gcc/testsuite/gcc.dg/tree-prof/section-attr-2.c
! e694203912312dcdd0acf040ebf8319e  gcc/testsuite/gcc.dg/tree-prof/section-attr-3.c
  e0651baf3344a3a41f63b729be3166b4  gcc/testsuite/gcc.dg/tree-prof/split-1.c
  1b60ba56b22c321a64245cc8f3874332  gcc/testsuite/gcc.dg/tree-prof/stringop-1.c
! 5dff0b8dd29e1343fce33f09353889c2  gcc/testsuite/gcc.dg/tree-prof/stringop-2.c
  1ad0b9bb9b1b8c06cc6b4cb52fbf9139  gcc/testsuite/gcc.dg/tree-prof/switch-case-1.c
  e7aeca94f621518a6e6709ceaeb4e162  gcc/testsuite/gcc.dg/tree-prof/switch-case-2.c
  d772d253a3efe703a6f81d851febfdcc  gcc/testsuite/gcc.dg/tree-prof/time-profiler-1.c
  a3bc2a0ab5b9121134c0c8183bdd363d  gcc/testsuite/gcc.dg/tree-prof/time-profiler-2.c
  d4bb2fbb3f0ff1c2682f30c9bd6f533d  gcc/testsuite/gcc.dg/tree-prof/time-profiler-3.c
  00abf1ef402b6663d2eca17cddf11f1b  gcc/testsuite/gcc.dg/tree-prof/tracer-1.c
! 49c568ed0530f5dfd906c2745e60fac9  gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp
  7475ec338be2dc0236a9208d95977141  gcc/testsuite/gcc.dg/tree-prof/unroll-1.c
  14a5277ebc22dc06798be4e7a79ee909  gcc/testsuite/gcc.dg/tree-prof/update-cunroll-2.c
  2c485d6763546bfa5c14ee8da0cfe215  gcc/testsuite/gcc.dg/tree-prof/update-loopch.c
*************** e21444099429cfeee5210a1a9fa1c16b  gcc/te
*** 40371,40377 ****
  f963121b6ef1ccc5fe3ccd6ea30c6908  gcc/testsuite/gcc.dg/tree-ssa/20030731-1.c
  cd158211c7eee61449b1fe2128ca5cd4  gcc/testsuite/gcc.dg/tree-ssa/20030731-2.c
  ee7103702edbd0376683881e72b191fb  gcc/testsuite/gcc.dg/tree-ssa/20030807-1.c
! d9c76ad53c3564d734781310ae78e560  gcc/testsuite/gcc.dg/tree-ssa/20030807-10.c
  e3cb52c10a36521239648f05590d9655  gcc/testsuite/gcc.dg/tree-ssa/20030807-11.c
  3860f3bca1198f879b5b12ca0a5db1d3  gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c
  6d035de373185efe7480d07b6da7eeaf  gcc/testsuite/gcc.dg/tree-ssa/20030807-3.c
--- 43242,43248 ----
  f963121b6ef1ccc5fe3ccd6ea30c6908  gcc/testsuite/gcc.dg/tree-ssa/20030731-1.c
  cd158211c7eee61449b1fe2128ca5cd4  gcc/testsuite/gcc.dg/tree-ssa/20030731-2.c
  ee7103702edbd0376683881e72b191fb  gcc/testsuite/gcc.dg/tree-ssa/20030807-1.c
! b1e0f211ea8f1d72ef1d69979bb20eac  gcc/testsuite/gcc.dg/tree-ssa/20030807-10.c
  e3cb52c10a36521239648f05590d9655  gcc/testsuite/gcc.dg/tree-ssa/20030807-11.c
  3860f3bca1198f879b5b12ca0a5db1d3  gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c
  6d035de373185efe7480d07b6da7eeaf  gcc/testsuite/gcc.dg/tree-ssa/20030807-3.c
*************** d64f06b6bc60f2a26df5a85f00b45925  gcc/te
*** 40416,40422 ****
  3d74f7a86f1ec677f56458b70548904e  gcc/testsuite/gcc.dg/tree-ssa/20031113-1.c
  ccbf57ac62324c514aa4cbd38bbd36a7  gcc/testsuite/gcc.dg/tree-ssa/20031216-1.c
  046d6c6897e5fb6982e21292a9f79c4a  gcc/testsuite/gcc.dg/tree-ssa/20040121-1.c
! e4f84eb8a7f51d7d4523d4f3b8753f14  gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c
  3d3da3e7e412ccd4ce57150272c67207  gcc/testsuite/gcc.dg/tree-ssa/20040209-1.c
  47b2d8fe599b0dcd6d60633059b77b46  gcc/testsuite/gcc.dg/tree-ssa/20040210-1.c
  80d7cab85f020a3b219eba8f19258895  gcc/testsuite/gcc.dg/tree-ssa/20040211-1.c
--- 43287,43293 ----
  3d74f7a86f1ec677f56458b70548904e  gcc/testsuite/gcc.dg/tree-ssa/20031113-1.c
  ccbf57ac62324c514aa4cbd38bbd36a7  gcc/testsuite/gcc.dg/tree-ssa/20031216-1.c
  046d6c6897e5fb6982e21292a9f79c4a  gcc/testsuite/gcc.dg/tree-ssa/20040121-1.c
! 9132c55266c118e2c7ed7bf3f83563ca  gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c
  3d3da3e7e412ccd4ce57150272c67207  gcc/testsuite/gcc.dg/tree-ssa/20040209-1.c
  47b2d8fe599b0dcd6d60633059b77b46  gcc/testsuite/gcc.dg/tree-ssa/20040210-1.c
  80d7cab85f020a3b219eba8f19258895  gcc/testsuite/gcc.dg/tree-ssa/20040211-1.c
*************** d7f5d8dac03d8f6fae78c4e03ccad69a  gcc/te
*** 40508,40521 ****
  05f03e56d0aa980b93ecd29184a0ce06  gcc/testsuite/gcc.dg/tree-ssa/alias_bug.c
  1c6abd3e143f916950c60b2a81dfabc6  gcc/testsuite/gcc.dg/tree-ssa/and-1.c
  05defa8900f91e914561900c8614c842  gcc/testsuite/gcc.dg/tree-ssa/andnot-1.c
  dfe706f0d26d930c6244daa570b86549  gcc/testsuite/gcc.dg/tree-ssa/andor-1.c
  4196b62b677513f35322cb7c41bf12ed  gcc/testsuite/gcc.dg/tree-ssa/andor-2.c
  554f992863d90976c55c4f9ec51aaa25  gcc/testsuite/gcc.dg/tree-ssa/andor-3.c
  edbbed45529994048c441088038a811d  gcc/testsuite/gcc.dg/tree-ssa/andor-4.c
  9367ad17d920349e30dcf31cb1a579e0  gcc/testsuite/gcc.dg/tree-ssa/andor-5.c
  ec60ff778b6ff7ae98ac570c5cf75752  gcc/testsuite/gcc.dg/tree-ssa/asm-1.c
! 82a23cfb33cc91ac838ef57acd52a9ee  gcc/testsuite/gcc.dg/tree-ssa/asm-2.c
! 60347924449184896970041dfcbfc0d2  gcc/testsuite/gcc.dg/tree-ssa/asm-3.c
  af9b5f0df22fc33bd75f8b69dd3d096a  gcc/testsuite/gcc.dg/tree-ssa/asmgoto-1.c
  5b4f928b7af7165de3bb8da27632ca5e  gcc/testsuite/gcc.dg/tree-ssa/assign-1.c
  15e6bbc5ae89e749a3bb2091872fe4f0  gcc/testsuite/gcc.dg/tree-ssa/assign-2.c
--- 43379,43393 ----
  05f03e56d0aa980b93ecd29184a0ce06  gcc/testsuite/gcc.dg/tree-ssa/alias_bug.c
  1c6abd3e143f916950c60b2a81dfabc6  gcc/testsuite/gcc.dg/tree-ssa/and-1.c
  05defa8900f91e914561900c8614c842  gcc/testsuite/gcc.dg/tree-ssa/andnot-1.c
+ a9c0c211afbb39b5f93bd46b490eb013  gcc/testsuite/gcc.dg/tree-ssa/andnot-2.c
  dfe706f0d26d930c6244daa570b86549  gcc/testsuite/gcc.dg/tree-ssa/andor-1.c
  4196b62b677513f35322cb7c41bf12ed  gcc/testsuite/gcc.dg/tree-ssa/andor-2.c
  554f992863d90976c55c4f9ec51aaa25  gcc/testsuite/gcc.dg/tree-ssa/andor-3.c
  edbbed45529994048c441088038a811d  gcc/testsuite/gcc.dg/tree-ssa/andor-4.c
  9367ad17d920349e30dcf31cb1a579e0  gcc/testsuite/gcc.dg/tree-ssa/andor-5.c
  ec60ff778b6ff7ae98ac570c5cf75752  gcc/testsuite/gcc.dg/tree-ssa/asm-1.c
! f592b1e7ee130b029a2f0e1ce211ee89  gcc/testsuite/gcc.dg/tree-ssa/asm-2.c
! 94b1ee5a4b36b1614fee3427a0fc3117  gcc/testsuite/gcc.dg/tree-ssa/asm-3.c
  af9b5f0df22fc33bd75f8b69dd3d096a  gcc/testsuite/gcc.dg/tree-ssa/asmgoto-1.c
  5b4f928b7af7165de3bb8da27632ca5e  gcc/testsuite/gcc.dg/tree-ssa/assign-1.c
  15e6bbc5ae89e749a3bb2091872fe4f0  gcc/testsuite/gcc.dg/tree-ssa/assign-2.c
*************** fc343ac4dddc2387803c4581508bd355  gcc/te
*** 40585,40608 ****
  25a22ef7e096aa5c4a5ec323a10eb1ee  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-7.c
  3f1747c36bfe6b3fd2235e695edcaa02  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-8.c
  1d89c967b03259c101cc6401b07d1648  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-9.c
! 191e73ddb350a8cdd2ddb1b58a5decd2  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-1.c
  d0e4c342e2ad48131871ec279be2f9c3  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-10.c
! 757dec219a493591de22ea5af80a23a2  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-11.c
  c7f97a6e2a77945ebe161e237b31e840  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-12.c
  69b4968b119665eae87dd9df63172bdf  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-13.c
  608826ad8d221f4cfda370543aa5db82  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-14.c
  ccc2197f9dd8a281205c120e262e567d  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-15.c
  dcbfb0ac8b9b251d20b7196b05527c1a  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-16.c
  6c42388eaa7f77966a40520aa80dc9cc  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-17.c
! 01b71a556a897e50410cf19a7d4d3a91  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-18.c
  4fa590c4c00bd46746427d26550420cd  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-19.c
  1d56c485be27dd70832489d589e9cb8f  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-2.c
! 49efa732188bceb3eecf362a42544056  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-20.c
  599e3a4a1f5a9b0f3fba72a0604d0f1e  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-21.c
! 8dd7e9208f11a5a5a000d7a4be9bfe3a  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-22.c
  b4d026b9f0280af8a50023b910b49215  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-23.c
  6109206cde3c1702a9d3f8da1898b8f2  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-24.c
! af9aecc5d2d14117f02a0fac4e53bac9  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-3.c
  b3be1085d438fe322d879ca9939a97cc  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-4.c
  1021b0c3252fc7ef97a7fe99cfcc5ac6  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-5.c
  c28ce339deffeb750f2c7f2cb8c8aa31  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-6.c
--- 43457,43481 ----
  25a22ef7e096aa5c4a5ec323a10eb1ee  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-7.c
  3f1747c36bfe6b3fd2235e695edcaa02  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-8.c
  1d89c967b03259c101cc6401b07d1648  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-9.c
! d2a6a7bf2644a7942988c7239b51410f  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-1.c
  d0e4c342e2ad48131871ec279be2f9c3  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-10.c
! 75bb54d18f7c1eeb0e52d94f6f0e0a2d  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-11.c
  c7f97a6e2a77945ebe161e237b31e840  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-12.c
  69b4968b119665eae87dd9df63172bdf  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-13.c
  608826ad8d221f4cfda370543aa5db82  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-14.c
  ccc2197f9dd8a281205c120e262e567d  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-15.c
  dcbfb0ac8b9b251d20b7196b05527c1a  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-16.c
  6c42388eaa7f77966a40520aa80dc9cc  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-17.c
! e19c538f8e7a0c10da0db728b9418c4a  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-18.c
  4fa590c4c00bd46746427d26550420cd  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-19.c
  1d56c485be27dd70832489d589e9cb8f  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-2.c
! d508ee9b0fcccb2985b9c7ecfbc9db19  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-20.c
  599e3a4a1f5a9b0f3fba72a0604d0f1e  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-21.c
! 85ea122fb18784ad8794e65ae4820651  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-22.c
  b4d026b9f0280af8a50023b910b49215  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-23.c
  6109206cde3c1702a9d3f8da1898b8f2  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-24.c
! 65778db8f5c18f0b852b70b4fe8c1da7  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-25.c
! 91d7952394a03943a4561d7881d03e2d  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-3.c
  b3be1085d438fe322d879ca9939a97cc  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-4.c
  1021b0c3252fc7ef97a7fe99cfcc5ac6  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-5.c
  c28ce339deffeb750f2c7f2cb8c8aa31  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-6.c
*************** bd0e09f37c905aa13bbb2d522a84d767  gcc/te
*** 40617,40623 ****
  aeea5f7137fe38c1de403df2897890fe  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-generic.c
  481ec0a559daa3d23650750794586529  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-gimple-2.c
  d60687d3346161f39aee81b214d1486d  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-gimple-3.c
! 78cfea6e237b0baf6f5251fe0557f941  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-gimple-ub.c
  7dee8398848f696ea4d8ac959ee7a60a  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-gimple.c
  e63ccfba7faa0464680f2aaeb88d32e9  gcc/testsuite/gcc.dg/tree-ssa/calloc-1.c
  60199bed80e510c230537c5f4d852a5b  gcc/testsuite/gcc.dg/tree-ssa/calloc-2.c
--- 43490,43496 ----
  aeea5f7137fe38c1de403df2897890fe  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-generic.c
  481ec0a559daa3d23650750794586529  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-gimple-2.c
  d60687d3346161f39aee81b214d1486d  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-gimple-3.c
! 7a2a2adf1c38a5df47743e636e0434d9  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-gimple-ub.c
  7dee8398848f696ea4d8ac959ee7a60a  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-gimple.c
  e63ccfba7faa0464680f2aaeb88d32e9  gcc/testsuite/gcc.dg/tree-ssa/calloc-1.c
  60199bed80e510c230537c5f4d852a5b  gcc/testsuite/gcc.dg/tree-ssa/calloc-2.c
*************** a0f533cf1734bcf6ffb5fc5a84378862  gcc/te
*** 40652,40657 ****
--- 43525,43531 ----
  0214eb3ac3488e88cb4deee3fc5dbb83  gcc/testsuite/gcc.dg/tree-ssa/copy-headers.c
  48504e3950251da5400c954fc79fbb47  gcc/testsuite/gcc.dg/tree-ssa/copy-sign-1.c
  72628eb5d911d52101f6a4a6daecdcbc  gcc/testsuite/gcc.dg/tree-ssa/copy-sign-2.c
+ ab9071615cb96e67306f62799834192d  gcc/testsuite/gcc.dg/tree-ssa/copy-sign-3.c
  3e33363df98971ca2810932b7646d933  gcc/testsuite/gcc.dg/tree-ssa/counts-1.c
  cb85a2159e6429ded025be9506d3d3ec  gcc/testsuite/gcc.dg/tree-ssa/cswtch-2.c
  eff8f806b1a91fc87bafb5aaff55fd32  gcc/testsuite/gcc.dg/tree-ssa/cswtch-3.c
*************** d832596804520e5ce86f97bd7120c822  gcc/te
*** 40677,40683 ****
  c153f32fa106a459a7fa71c9649155c3  gcc/testsuite/gcc.dg/tree-ssa/divide-3.c
  d9df64c73cfb44c982ea8777bc83598c  gcc/testsuite/gcc.dg/tree-ssa/divide-4.c
  a2e7a9267052ac4ae19d933a4fe39c12  gcc/testsuite/gcc.dg/tree-ssa/divide-5.c
! 1847dfdfccf26ff0bc2a0194b557f4c9  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
--- 43551,43557 ----
  c153f32fa106a459a7fa71c9649155c3  gcc/testsuite/gcc.dg/tree-ssa/divide-3.c
  d9df64c73cfb44c982ea8777bc83598c  gcc/testsuite/gcc.dg/tree-ssa/divide-4.c
  a2e7a9267052ac4ae19d933a4fe39c12  gcc/testsuite/gcc.dg/tree-ssa/divide-5.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
*************** f4597d2c70ad59ab81400cddd726d275  gcc/te
*** 40685,40694 ****
  3ff94f9450f7842e2e2ae65a53df11c8  gcc/testsuite/gcc.dg/tree-ssa/dump-5.c
  030086d78e9da1cbb6afe43e479c5299  gcc/testsuite/gcc.dg/tree-ssa/dump-6.c
  6d8e0fe5d4a6a949bac728d01d0cc15c  gcc/testsuite/gcc.dg/tree-ssa/evrp1.c
! b2e856dbb31d6a4209b2428692cee007  gcc/testsuite/gcc.dg/tree-ssa/evrp11.c
  3a97a9e35e227264546d100a03b93ca6  gcc/testsuite/gcc.dg/tree-ssa/evrp12.c
  7a804e5df582c42d9dc57ca0ad528f5a  gcc/testsuite/gcc.dg/tree-ssa/evrp13.c
  66fc8039877c2eaae747c7a2afd5b81a  gcc/testsuite/gcc.dg/tree-ssa/evrp2.c
  b6c28d0ad5cffe5c9999fda917bb1c14  gcc/testsuite/gcc.dg/tree-ssa/evrp3.c
  7e5008435f58736676123011023e2635  gcc/testsuite/gcc.dg/tree-ssa/evrp4.c
  096e47ae0108919a91376d881679eacf  gcc/testsuite/gcc.dg/tree-ssa/evrp6.c
--- 43559,43571 ----
  3ff94f9450f7842e2e2ae65a53df11c8  gcc/testsuite/gcc.dg/tree-ssa/dump-5.c
  030086d78e9da1cbb6afe43e479c5299  gcc/testsuite/gcc.dg/tree-ssa/dump-6.c
  6d8e0fe5d4a6a949bac728d01d0cc15c  gcc/testsuite/gcc.dg/tree-ssa/evrp1.c
! 27ac2ccca1316b69757f2c9d71f85f56  gcc/testsuite/gcc.dg/tree-ssa/evrp11.c
  3a97a9e35e227264546d100a03b93ca6  gcc/testsuite/gcc.dg/tree-ssa/evrp12.c
  7a804e5df582c42d9dc57ca0ad528f5a  gcc/testsuite/gcc.dg/tree-ssa/evrp13.c
  66fc8039877c2eaae747c7a2afd5b81a  gcc/testsuite/gcc.dg/tree-ssa/evrp2.c
+ bbbc05d95acb070f3fca4bd701091c08  gcc/testsuite/gcc.dg/tree-ssa/evrp20.c
+ defaf318e06f609663fceb3a057d74cb  gcc/testsuite/gcc.dg/tree-ssa/evrp21.c
+ 477348534a1016813cc59733f6348e95  gcc/testsuite/gcc.dg/tree-ssa/evrp22.c
  b6c28d0ad5cffe5c9999fda917bb1c14  gcc/testsuite/gcc.dg/tree-ssa/evrp3.c
  7e5008435f58736676123011023e2635  gcc/testsuite/gcc.dg/tree-ssa/evrp4.c
  096e47ae0108919a91376d881679eacf  gcc/testsuite/gcc.dg/tree-ssa/evrp6.c
*************** a2f3f36dd4a0c63859fad47e5d64e2f6  gcc/te
*** 40737,40748 ****
  68a1d254ba25c51f90a7c44414e50e41  gcc/testsuite/gcc.dg/tree-ssa/forwprop-33.c
  cde9d104bd184f9fe53748afa894a131  gcc/testsuite/gcc.dg/tree-ssa/forwprop-34.c
  0aebf34ab5715659a126caa5d6950411  gcc/testsuite/gcc.dg/tree-ssa/forwprop-35.c
! 2c13f8155d1641fb8b325f67a426b900  gcc/testsuite/gcc.dg/tree-ssa/forwprop-36.c
  c4d85f1a0ac2c091e026cf0d052e2f21  gcc/testsuite/gcc.dg/tree-ssa/forwprop-37.c
  fc8efeaf2ed7c9bba5d4f1717e7e356b  gcc/testsuite/gcc.dg/tree-ssa/forwprop-38.c
  cb909e7812f73f90414b63042c95d199  gcc/testsuite/gcc.dg/tree-ssa/forwprop-4.c
  d56422e63543fcf4bf4b78d825c534da  gcc/testsuite/gcc.dg/tree-ssa/forwprop-5.c
! 57a92753d467f54839b9072865198245  gcc/testsuite/gcc.dg/tree-ssa/forwprop-6.c
  a9096c4b5b756bdc9dcc196398730d73  gcc/testsuite/gcc.dg/tree-ssa/forwprop-7.c
  03b3892ce65f3264531de5b303cbe30e  gcc/testsuite/gcc.dg/tree-ssa/forwprop-8.c
  2f204af513925825367059c8c7904e98  gcc/testsuite/gcc.dg/tree-ssa/forwprop-9.c
--- 43614,43625 ----
  68a1d254ba25c51f90a7c44414e50e41  gcc/testsuite/gcc.dg/tree-ssa/forwprop-33.c
  cde9d104bd184f9fe53748afa894a131  gcc/testsuite/gcc.dg/tree-ssa/forwprop-34.c
  0aebf34ab5715659a126caa5d6950411  gcc/testsuite/gcc.dg/tree-ssa/forwprop-35.c
! db7fb90d90011b907bfb30cceb6f1c9e  gcc/testsuite/gcc.dg/tree-ssa/forwprop-36.c
  c4d85f1a0ac2c091e026cf0d052e2f21  gcc/testsuite/gcc.dg/tree-ssa/forwprop-37.c
  fc8efeaf2ed7c9bba5d4f1717e7e356b  gcc/testsuite/gcc.dg/tree-ssa/forwprop-38.c
  cb909e7812f73f90414b63042c95d199  gcc/testsuite/gcc.dg/tree-ssa/forwprop-4.c
  d56422e63543fcf4bf4b78d825c534da  gcc/testsuite/gcc.dg/tree-ssa/forwprop-5.c
! 0f6dc2b3b3469af9cd27d5b5cd97353c  gcc/testsuite/gcc.dg/tree-ssa/forwprop-6.c
  a9096c4b5b756bdc9dcc196398730d73  gcc/testsuite/gcc.dg/tree-ssa/forwprop-7.c
  03b3892ce65f3264531de5b303cbe30e  gcc/testsuite/gcc.dg/tree-ssa/forwprop-8.c
  2f204af513925825367059c8c7904e98  gcc/testsuite/gcc.dg/tree-ssa/forwprop-9.c
*************** cff764a2ebafb6289be05026a4fa3f95  gcc/te
*** 40757,40762 ****
--- 43634,43649 ----
  ae32469031917ca7f4815b7154b5bc06  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c
  7dedd5a47e1055812df9473fe2137316  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c
  c700544c3e68a401546cefbdad359728  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-33.c
+ 88394f5bf5b05af6dcff8c92c3277984  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-1.c
+ bbf280cd31c7741b8c59afad86a4b316  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-10.c
+ 55213dbff5b0135f3e9d2e4a1f57ef2f  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-2.c
+ fb06e94916e3e523571e23392c8fbce6  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-3.c
+ fbc46d731b28682d463972d7b59d20e7  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-4.c
+ d8d658fdb804ed772eb0c0f2751b5be6  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-5.c
+ 8a7ce6e7cef9b25005e2c6b8e1c3b8ff  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-6.c
+ 2c97bcb8b034b3b3666fa303045a35e1  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-7.c
+ 43711b33f763213e9c99555f055e2a90  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-8.c
+ 24b7b133d68a4c138aba1f6e105a1990  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-9.c
  b2e6051605666541fc80985492b002a4  gcc/testsuite/gcc.dg/tree-ssa/ifc-10.c
  45abed04f141d506c77bb20d255d1d0c  gcc/testsuite/gcc.dg/tree-ssa/ifc-11.c
  d44b6872baa4beaa748572b6e08714e4  gcc/testsuite/gcc.dg/tree-ssa/ifc-12.c
*************** f36615df20e02ab31418994441d3c87a  gcc/te
*** 40792,40798 ****
  e1aa4da1fccf6c1381e18889b6eb6b7b  gcc/testsuite/gcc.dg/tree-ssa/inline-9.c
  06bf1138daa5aebb13049172ebbe0ca8  gcc/testsuite/gcc.dg/tree-ssa/inline_asm-1.c
  5b23b073bf0eb14ec16d5475e0244d1f  gcc/testsuite/gcc.dg/tree-ssa/inline_asm-2.c
! 57e1ee757f109458b4014b2607286ece  gcc/testsuite/gcc.dg/tree-ssa/integer-addr.c
  c976bad1cd05db7c6e1a6af67ae0ad02  gcc/testsuite/gcc.dg/tree-ssa/interposition.c
  d595e9d579debb1bd97efd9247321ae6  gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c
  42336a79a969399469337dd359202bb9  gcc/testsuite/gcc.dg/tree-ssa/ipa-reference-1.c
--- 43679,43685 ----
  e1aa4da1fccf6c1381e18889b6eb6b7b  gcc/testsuite/gcc.dg/tree-ssa/inline-9.c
  06bf1138daa5aebb13049172ebbe0ca8  gcc/testsuite/gcc.dg/tree-ssa/inline_asm-1.c
  5b23b073bf0eb14ec16d5475e0244d1f  gcc/testsuite/gcc.dg/tree-ssa/inline_asm-2.c
! 9307968a8a5259ab05b85852a6be47e5  gcc/testsuite/gcc.dg/tree-ssa/integer-addr.c
  c976bad1cd05db7c6e1a6af67ae0ad02  gcc/testsuite/gcc.dg/tree-ssa/interposition.c
  d595e9d579debb1bd97efd9247321ae6  gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c
  42336a79a969399469337dd359202bb9  gcc/testsuite/gcc.dg/tree-ssa/ipa-reference-1.c
*************** b4c05791c74c42b31b12f3a7c8cdb936  gcc/te
*** 40895,40902 ****
  56caef9bb60fcfbb7ea4f1f13486b0f5  gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c
  229e6199de2a23fb4a62d8a43f6d9581  gcc/testsuite/gcc.dg/tree-ssa/loadpre7.c
  bfddd90a833039e0cdb4656f4c8f81a1  gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c
! becd89cfd56cc07c9c31fd8fe767e67e  gcc/testsuite/gcc.dg/tree-ssa/local-pure-const.c
! 18bbd41936b6a09216651a8027db8f4e  gcc/testsuite/gcc.dg/tree-ssa/loop-1.c
  d5c0a0cafa8f17e9848f07635e0627a4  gcc/testsuite/gcc.dg/tree-ssa/loop-10.c
  7b136dc13a3af93299281a6cc8908cb9  gcc/testsuite/gcc.dg/tree-ssa/loop-11.c
  14f9f2d5bc49080ad8ddf44cdfa1744b  gcc/testsuite/gcc.dg/tree-ssa/loop-14.c
--- 43782,43789 ----
  56caef9bb60fcfbb7ea4f1f13486b0f5  gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c
  229e6199de2a23fb4a62d8a43f6d9581  gcc/testsuite/gcc.dg/tree-ssa/loadpre7.c
  bfddd90a833039e0cdb4656f4c8f81a1  gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c
! e202cf21911171e72b195a3e8e0283ca  gcc/testsuite/gcc.dg/tree-ssa/local-pure-const.c
! eb13c50d7c15e2cd2a64f65ea36d1de0  gcc/testsuite/gcc.dg/tree-ssa/loop-1.c
  d5c0a0cafa8f17e9848f07635e0627a4  gcc/testsuite/gcc.dg/tree-ssa/loop-10.c
  7b136dc13a3af93299281a6cc8908cb9  gcc/testsuite/gcc.dg/tree-ssa/loop-11.c
  14f9f2d5bc49080ad8ddf44cdfa1744b  gcc/testsuite/gcc.dg/tree-ssa/loop-14.c
*************** d5c0a0cafa8f17e9848f07635e0627a4  gcc/te
*** 40904,40911 ****
  3250c3b50d6fea66e54c1de499097eca  gcc/testsuite/gcc.dg/tree-ssa/loop-16.c
  d561e3f8533493429429c1f643fd5abf  gcc/testsuite/gcc.dg/tree-ssa/loop-17.c
  002fb6027981898caaf402554d30e337  gcc/testsuite/gcc.dg/tree-ssa/loop-18.c
! fb12f8c2fc2f9ca9b3682daada1289c8  gcc/testsuite/gcc.dg/tree-ssa/loop-19.c
! 844f454d6c96f6eab546844ef7dfdd49  gcc/testsuite/gcc.dg/tree-ssa/loop-2.c
  e4f34450d5bb0946fb0fcc8bb11f9846  gcc/testsuite/gcc.dg/tree-ssa/loop-20.c
  cd8ab6ba77ad28986317c279250b0bce  gcc/testsuite/gcc.dg/tree-ssa/loop-21.c
  1f6ef18d44db2b97429ce62b431f1d59  gcc/testsuite/gcc.dg/tree-ssa/loop-22.c
--- 43791,43798 ----
  3250c3b50d6fea66e54c1de499097eca  gcc/testsuite/gcc.dg/tree-ssa/loop-16.c
  d561e3f8533493429429c1f643fd5abf  gcc/testsuite/gcc.dg/tree-ssa/loop-17.c
  002fb6027981898caaf402554d30e337  gcc/testsuite/gcc.dg/tree-ssa/loop-18.c
! 7566ed1a31059cf09fe67b48e65db4aa  gcc/testsuite/gcc.dg/tree-ssa/loop-19.c
! 107557cf8625db5e23b4419e321fc640  gcc/testsuite/gcc.dg/tree-ssa/loop-2.c
  e4f34450d5bb0946fb0fcc8bb11f9846  gcc/testsuite/gcc.dg/tree-ssa/loop-20.c
  cd8ab6ba77ad28986317c279250b0bce  gcc/testsuite/gcc.dg/tree-ssa/loop-21.c
  1f6ef18d44db2b97429ce62b431f1d59  gcc/testsuite/gcc.dg/tree-ssa/loop-22.c
*************** cd8ab6ba77ad28986317c279250b0bce  gcc/te
*** 40915,40921 ****
  e97c0bbfd5118aad5cb0208408f022e2  gcc/testsuite/gcc.dg/tree-ssa/loop-26.c
  d5ece4a88cdb032116f22a440568412a  gcc/testsuite/gcc.dg/tree-ssa/loop-28.c
  d72750e76b1b077b871db495a895d952  gcc/testsuite/gcc.dg/tree-ssa/loop-29.c
! e2ea87dd80c08c8f5a6e7192f55bf7b4  gcc/testsuite/gcc.dg/tree-ssa/loop-3.c
  bc09676a1682ef3f3a35b47133a41a5a  gcc/testsuite/gcc.dg/tree-ssa/loop-30.c
  83a7b118e55308cc3708c43be1d9d393  gcc/testsuite/gcc.dg/tree-ssa/loop-31.c
  23861c4217062b336ebdf3b4d6963592  gcc/testsuite/gcc.dg/tree-ssa/loop-32.c
--- 43802,43808 ----
  e97c0bbfd5118aad5cb0208408f022e2  gcc/testsuite/gcc.dg/tree-ssa/loop-26.c
  d5ece4a88cdb032116f22a440568412a  gcc/testsuite/gcc.dg/tree-ssa/loop-28.c
  d72750e76b1b077b871db495a895d952  gcc/testsuite/gcc.dg/tree-ssa/loop-29.c
! 2cf42c09e094ed2017af4aba5ba98be3  gcc/testsuite/gcc.dg/tree-ssa/loop-3.c
  bc09676a1682ef3f3a35b47133a41a5a  gcc/testsuite/gcc.dg/tree-ssa/loop-30.c
  83a7b118e55308cc3708c43be1d9d393  gcc/testsuite/gcc.dg/tree-ssa/loop-31.c
  23861c4217062b336ebdf3b4d6963592  gcc/testsuite/gcc.dg/tree-ssa/loop-32.c
*************** ea5f8b5ade3a674d82e4721a61ae4348  gcc/te
*** 40943,40949 ****
  60da9819e46ae737a79c3d2fa208f269  gcc/testsuite/gcc.dg/tree-ssa/loop-bound-6.c
  830db83fad8d4c8f17ce6c8a575ef8e7  gcc/testsuite/gcc.dg/tree-ssa/loop-cond-split-1.c
  0a18fa76c624c7aae2e2ac50d8b68517  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-1.c
! fac3ff2668c1502c220116a830a1394c  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-10.c
  a3070095b7db4fd6f5d39d243f2ea3d2  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-11.c
  b785e1a2b2d1f8899bb42aef2aebb7a8  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-12.c
  68ea1e33b73e2699fe3e0888ae6721b1  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-13.c
--- 43830,43836 ----
  60da9819e46ae737a79c3d2fa208f269  gcc/testsuite/gcc.dg/tree-ssa/loop-bound-6.c
  830db83fad8d4c8f17ce6c8a575ef8e7  gcc/testsuite/gcc.dg/tree-ssa/loop-cond-split-1.c
  0a18fa76c624c7aae2e2ac50d8b68517  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-1.c
! 1efb8637b51c1eb590eddbd9d05f2b31  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-10.c
  a3070095b7db4fd6f5d39d243f2ea3d2  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-11.c
  b785e1a2b2d1f8899bb42aef2aebb7a8  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-12.c
  68ea1e33b73e2699fe3e0888ae6721b1  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-13.c
*************** f2fb3151add498ea76d57eb5397270d9  gcc/te
*** 40960,40970 ****
--- 43847,43863 ----
  3b17eb93fceafc79398ec40382cc2fdb  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-9.c
  0b0f06ef0d088201a656eef58febfabf  gcc/testsuite/gcc.dg/tree-ssa/loop-niter-1.c
  3585c145cba008fa15dffe90270f4cc5  gcc/testsuite/gcc.dg/tree-ssa/loop-niter-2.c
+ 7e3f742153a1a615543970606e835c4b  gcc/testsuite/gcc.dg/tree-ssa/loopclosedphi.c
  03f2e136e4fd829b170e29613889a81e  gcc/testsuite/gcc.dg/tree-ssa/minmax-1.c
  21959e600b3e318fb6e964900d48abc5  gcc/testsuite/gcc.dg/tree-ssa/minmax-2.c
  fa665ccc5c37f6639ff420a922266cc1  gcc/testsuite/gcc.dg/tree-ssa/minmax-loopend-2.c
  eab9b8fbca526d3026277ce8a7c3179f  gcc/testsuite/gcc.dg/tree-ssa/minmax-loopend.c
  dd531f5928d5579a42c6d936314756c1  gcc/testsuite/gcc.dg/tree-ssa/minus-ovf.c
+ f4dea9fb4e5bd2155b8ba67624432e3e  gcc/testsuite/gcc.dg/tree-ssa/modref-1.c
+ dc87b329ac5e1041aec95aab3a72fe53  gcc/testsuite/gcc.dg/tree-ssa/modref-2.c
+ 334e0ec1f029b77bf1561db75278d646  gcc/testsuite/gcc.dg/tree-ssa/modref-3.c
+ f6de6823f77331b8ef4448fbe62f4f13  gcc/testsuite/gcc.dg/tree-ssa/modref-4.c
+ 13f9f17370779ebeb4bbacfaa9ca1f1c  gcc/testsuite/gcc.dg/tree-ssa/modref-5.c
  86b3b545b7d95e5a9edad0a6ab56705b  gcc/testsuite/gcc.dg/tree-ssa/mulcmp-1.c
  9d609bd79769ece6157bc34fbbb0371f  gcc/testsuite/gcc.dg/tree-ssa/muldiv-1.c
  9a861088652f3a7c7b3117c9a108131a  gcc/testsuite/gcc.dg/tree-ssa/muldiv-2.c
*************** c6bab30ae3a1787d5ea4950933c06c28  gcc/te
*** 40995,41000 ****
--- 43888,43895 ----
  99580bb5b01f5543864ee1f3d0930a74  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-19.c
  2643dcfeb724a0a257a2307aeecaa480  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-2.c
  527210fcbd1816aa28cc65d7c33068fa  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-20.c
+ b84a8bc940945b8cdca0c6ff5ccff1af  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-21.c
+ da93f33fbcf120eb1e7aa848bb5b3ed8  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-22.c
  9c5b91e9723f7d587ab6723f6d888f0c  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-3.c
  abf36d925f7053c105cfd3f71d64a6a7  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-4.c
  355dc8df4a0d47b33dae9c0577572ea2  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-5.c
*************** db4f86a4f8ff0fc9653954f4e21c1f3f  gcc/te
*** 41011,41017 ****
  39af726ca8012f85160b6180dd60017f  gcc/testsuite/gcc.dg/tree-ssa/popcount3.c
  2fb4e6c2bc49e5d7ef90a8c649a0e14d  gcc/testsuite/gcc.dg/tree-ssa/popcount4.c
  a894721a77fea7c94bacb921fa950e92  gcc/testsuite/gcc.dg/tree-ssa/popcount4l.c
! 5fa8fedb134926f9081dc10112a7acbb  gcc/testsuite/gcc.dg/tree-ssa/popcount4ll.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
--- 43906,43915 ----
  39af726ca8012f85160b6180dd60017f  gcc/testsuite/gcc.dg/tree-ssa/popcount3.c
  2fb4e6c2bc49e5d7ef90a8c649a0e14d  gcc/testsuite/gcc.dg/tree-ssa/popcount4.c
  a894721a77fea7c94bacb921fa950e92  gcc/testsuite/gcc.dg/tree-ssa/popcount4l.c
! 92913082e4a596891541f5a15c6b7870  gcc/testsuite/gcc.dg/tree-ssa/popcount4ll.c
! 4c5f6856cd0cacec06d4f42d7dc705a3  gcc/testsuite/gcc.dg/tree-ssa/popcount5.c
! 37c95d5ee8501532edd39636e62b1144  gcc/testsuite/gcc.dg/tree-ssa/popcount5l.c
! 5865561cafce8352e1b97ad299ec6398  gcc/testsuite/gcc.dg/tree-ssa/popcount5ll.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
*************** fb57a50de1386a7378d80550a783348b  gcc/te
*** 41052,41058 ****
  36099f397d1202fbac72f47de17570cd  gcc/testsuite/gcc.dg/tree-ssa/pr19590.c
  fa134b7b09128388df0cf5dfe1f05256  gcc/testsuite/gcc.dg/tree-ssa/pr19633.c
  47922da653618d93be8ccd37932a38a8  gcc/testsuite/gcc.dg/tree-ssa/pr19831-1.c
! 62dc10cb59175c82f51a8cbb67e35436  gcc/testsuite/gcc.dg/tree-ssa/pr19831-2.c
  52afbaa0d6e84205964b0d8f7478906f  gcc/testsuite/gcc.dg/tree-ssa/pr19831-3.c
  e427d4621de1c0729af8d55b9bb48500  gcc/testsuite/gcc.dg/tree-ssa/pr20139.c
  e8abc7d5f3d4fef21d06eec48f3389e8  gcc/testsuite/gcc.dg/tree-ssa/pr20318.c
--- 43950,43956 ----
  36099f397d1202fbac72f47de17570cd  gcc/testsuite/gcc.dg/tree-ssa/pr19590.c
  fa134b7b09128388df0cf5dfe1f05256  gcc/testsuite/gcc.dg/tree-ssa/pr19633.c
  47922da653618d93be8ccd37932a38a8  gcc/testsuite/gcc.dg/tree-ssa/pr19831-1.c
! 6d3975080aaa40f9154dbb5318bd33cc  gcc/testsuite/gcc.dg/tree-ssa/pr19831-2.c
  52afbaa0d6e84205964b0d8f7478906f  gcc/testsuite/gcc.dg/tree-ssa/pr19831-3.c
  e427d4621de1c0729af8d55b9bb48500  gcc/testsuite/gcc.dg/tree-ssa/pr20139.c
  e8abc7d5f3d4fef21d06eec48f3389e8  gcc/testsuite/gcc.dg/tree-ssa/pr20318.c
*************** ee201c36cb0ac45de5f89a38e7ffc5f0  gcc/te
*** 41104,41110 ****
  e3417501272a4cb85765f1121b62d8a2  gcc/testsuite/gcc.dg/tree-ssa/pr23294.c
  53e80f6e819356859c66e2548d7bd5cf  gcc/testsuite/gcc.dg/tree-ssa/pr23386.c
  2874b76c743a08977faa79fb2448e722  gcc/testsuite/gcc.dg/tree-ssa/pr23391.c
! b18ab440316b3b6765604f6672f40d8b  gcc/testsuite/gcc.dg/tree-ssa/pr23401.c
  871b28d56be6aa074bb5016467b3ad28  gcc/testsuite/gcc.dg/tree-ssa/pr23433.c
  0b915301cb092e08a955172bdfaee416  gcc/testsuite/gcc.dg/tree-ssa/pr23434.c
  3e0691ad05d535404af06ed20b38a6c9  gcc/testsuite/gcc.dg/tree-ssa/pr23455.c
--- 44002,44008 ----
  e3417501272a4cb85765f1121b62d8a2  gcc/testsuite/gcc.dg/tree-ssa/pr23294.c
  53e80f6e819356859c66e2548d7bd5cf  gcc/testsuite/gcc.dg/tree-ssa/pr23386.c
  2874b76c743a08977faa79fb2448e722  gcc/testsuite/gcc.dg/tree-ssa/pr23391.c
! 3ad155db785af9c11af5dfe3caf4300e  gcc/testsuite/gcc.dg/tree-ssa/pr23401.c
  871b28d56be6aa074bb5016467b3ad28  gcc/testsuite/gcc.dg/tree-ssa/pr23433.c
  0b915301cb092e08a955172bdfaee416  gcc/testsuite/gcc.dg/tree-ssa/pr23434.c
  3e0691ad05d535404af06ed20b38a6c9  gcc/testsuite/gcc.dg/tree-ssa/pr23455.c
*************** d6353f43264d0a25462d8b914d0546af  gcc/te
*** 41134,41140 ****
  de62083173c48c6a52f7f782a0061df5  gcc/testsuite/gcc.dg/tree-ssa/pr27498.c
  b306e7eebde7d3ea663a7ac1bbaf212e  gcc/testsuite/gcc.dg/tree-ssa/pr27781.c
  f8a2080b6f7b30a69659124c828d0224  gcc/testsuite/gcc.dg/tree-ssa/pr27799.c
! 053f9ae421bd2e47e3b49a0c802097b8  gcc/testsuite/gcc.dg/tree-ssa/pr27810.c
  fc05082a4654700efb64a6850ebe2949  gcc/testsuite/gcc.dg/tree-ssa/pr28410.c
  b30f3a905d9cb1c07a3b7b7325d275a2  gcc/testsuite/gcc.dg/tree-ssa/pr30375.c
  573cf597efe5e1b29a3d6c30a72feb89  gcc/testsuite/gcc.dg/tree-ssa/pr30978.c
--- 44032,44038 ----
  de62083173c48c6a52f7f782a0061df5  gcc/testsuite/gcc.dg/tree-ssa/pr27498.c
  b306e7eebde7d3ea663a7ac1bbaf212e  gcc/testsuite/gcc.dg/tree-ssa/pr27781.c
  f8a2080b6f7b30a69659124c828d0224  gcc/testsuite/gcc.dg/tree-ssa/pr27799.c
! 1678e2dfe8c03b2f65d5b5027563d1f0  gcc/testsuite/gcc.dg/tree-ssa/pr27810.c
  fc05082a4654700efb64a6850ebe2949  gcc/testsuite/gcc.dg/tree-ssa/pr28410.c
  b30f3a905d9cb1c07a3b7b7325d275a2  gcc/testsuite/gcc.dg/tree-ssa/pr30375.c
  573cf597efe5e1b29a3d6c30a72feb89  gcc/testsuite/gcc.dg/tree-ssa/pr30978.c
*************** e48f23a9961141e733efa0ee74dcb168  gcc/te
*** 41175,41180 ****
--- 44073,44079 ----
  1ca746e0d6f18f0d379f9977602e7b81  gcc/testsuite/gcc.dg/tree-ssa/pr38895.c
  c997d1737c7e7be01b3905b9e0066651  gcc/testsuite/gcc.dg/tree-ssa/pr38997.c
  2898429fa039eda8310b69091ba71f44  gcc/testsuite/gcc.dg/tree-ssa/pr39007.c
+ d3590bdbf2cd229cced9f91f309e648e  gcc/testsuite/gcc.dg/tree-ssa/pr39612.c
  3a8231a5d3a8e3c8935aac2fa22688f6  gcc/testsuite/gcc.dg/tree-ssa/pr40087.c
  36d0de46a82273e7066dac00a7523532  gcc/testsuite/gcc.dg/tree-ssa/pr40921.c
  95a44cf96d5d1ba07aba06d138866b38  gcc/testsuite/gcc.dg/tree-ssa/pr41469-1.c
*************** a2fced1270cbdc50e78585c0f2078558  gcc/te
*** 41195,41200 ****
--- 44094,44100 ----
  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
+ a3bbde34e3a7870215b1302d7a513d1a  gcc/testsuite/gcc.dg/tree-ssa/pr47059.c
  e79e571a7bf87c1c43e941c3999280f2  gcc/testsuite/gcc.dg/tree-ssa/pr47286.c
  97fe9c848e0059a42c793036887ac8ec  gcc/testsuite/gcc.dg/tree-ssa/pr47392.c
  651299c6ba5061b1a8252251903e3396  gcc/testsuite/gcc.dg/tree-ssa/pr47477.c
*************** eb3c860d5f9311432576d2c60ba8e833  gcc/te
*** 41211,41216 ****
--- 44111,44117 ----
  5cfe577df2571b1475d5db616c40bf37  gcc/testsuite/gcc.dg/tree-ssa/pr54915.c
  87ba347e6d0c933e0a6a8cdb3c2f1bac  gcc/testsuite/gcc.dg/tree-ssa/pr55008.c
  c7ad6f1bea15d0129d2d4114715d38ab  gcc/testsuite/gcc.dg/tree-ssa/pr55579.c
+ 337de2f03bc182ae1e01fb18807fa344  gcc/testsuite/gcc.dg/tree-ssa/pr56719.c
  db0896d26b0b514a5ee7c242f2caf3fb  gcc/testsuite/gcc.dg/tree-ssa/pr56727.c
  a1b69b395bc1073391af5c497fbcaa6f  gcc/testsuite/gcc.dg/tree-ssa/pr57361.c
  3add5403cc3aefec17c98fd16ca42721  gcc/testsuite/gcc.dg/tree-ssa/pr57385.c
*************** f7a3fabc9425270a4d8e40f8a991ca09  gcc/te
*** 41276,41282 ****
  6e6845a9fd535b1e4161176393d5993c  gcc/testsuite/gcc.dg/tree-ssa/pr70232.c
  f1ac7f1c1aea72571d0586fcaa61bef4  gcc/testsuite/gcc.dg/tree-ssa/pr70372.c
  273685df2d6b0f16d53f2bcaaf31baf9  gcc/testsuite/gcc.dg/tree-ssa/pr70919.c
! 49471b64bd55c00b1bb16c508b1cdc9d  gcc/testsuite/gcc.dg/tree-ssa/pr71077.c
  43216c532ced386aea3a7977da8a9686  gcc/testsuite/gcc.dg/tree-ssa/pr71078-1-double.c
  5a76c38b0ab47e17927d9be5eb29281e  gcc/testsuite/gcc.dg/tree-ssa/pr71078-1-long-double.c
  fcf33a139266cdb0c1b158bb45ebb339  gcc/testsuite/gcc.dg/tree-ssa/pr71078-1.c
--- 44177,44183 ----
  6e6845a9fd535b1e4161176393d5993c  gcc/testsuite/gcc.dg/tree-ssa/pr70232.c
  f1ac7f1c1aea72571d0586fcaa61bef4  gcc/testsuite/gcc.dg/tree-ssa/pr70372.c
  273685df2d6b0f16d53f2bcaaf31baf9  gcc/testsuite/gcc.dg/tree-ssa/pr70919.c
! b054aa571287b77ca429ba1ea5101d37  gcc/testsuite/gcc.dg/tree-ssa/pr71077.c
  43216c532ced386aea3a7977da8a9686  gcc/testsuite/gcc.dg/tree-ssa/pr71078-1-double.c
  5a76c38b0ab47e17927d9be5eb29281e  gcc/testsuite/gcc.dg/tree-ssa/pr71078-1-long-double.c
  fcf33a139266cdb0c1b158bb45ebb339  gcc/testsuite/gcc.dg/tree-ssa/pr71078-1.c
*************** f9172c76ed973a0ef6eaf1fd3bdcaeda  gcc/te
*** 41309,41315 ****
  2a17ba6c252a87cc5295627f73e0bc7b  gcc/testsuite/gcc.dg/tree-ssa/pr72835.c
  dbe783b1444b6fe0f6050f81fb8e9be7  gcc/testsuite/gcc.dg/tree-ssa/pr73450.c
  9c09016657342d175ed211778556533a  gcc/testsuite/gcc.dg/tree-ssa/pr73714.c
! 76e3f42c0338a1e33531ceb48a380b02  gcc/testsuite/gcc.dg/tree-ssa/pr77445-2.c
  d4c2ee6879df0cb21ab0c1cbf04ce6e8  gcc/testsuite/gcc.dg/tree-ssa/pr77445.c
  fe7d78a623debbe119b6b21716e26916  gcc/testsuite/gcc.dg/tree-ssa/pr77644.c
  bc785bd4625086bc4105460c4bac2646  gcc/testsuite/gcc.dg/tree-ssa/pr77664.c
--- 44210,44216 ----
  2a17ba6c252a87cc5295627f73e0bc7b  gcc/testsuite/gcc.dg/tree-ssa/pr72835.c
  dbe783b1444b6fe0f6050f81fb8e9be7  gcc/testsuite/gcc.dg/tree-ssa/pr73450.c
  9c09016657342d175ed211778556533a  gcc/testsuite/gcc.dg/tree-ssa/pr73714.c
! 99cdb3bd48299fd0dbfd59d2a34f3817  gcc/testsuite/gcc.dg/tree-ssa/pr77445-2.c
  d4c2ee6879df0cb21ab0c1cbf04ce6e8  gcc/testsuite/gcc.dg/tree-ssa/pr77445.c
  fe7d78a623debbe119b6b21716e26916  gcc/testsuite/gcc.dg/tree-ssa/pr77644.c
  bc785bd4625086bc4105460c4bac2646  gcc/testsuite/gcc.dg/tree-ssa/pr77664.c
*************** c87ef2993d90c5b6e5dca5262c0a7ff8  gcc/te
*** 41321,41326 ****
--- 44222,44228 ----
  b49229b7d1812e2e8d3d35d99035d6d4  gcc/testsuite/gcc.dg/tree-ssa/pr78428.c
  c14fec0c3521187747993d69e02aa5b5  gcc/testsuite/gcc.dg/tree-ssa/pr78605.c
  a9bbab0ab31459c437e6995c2b0b2d9b  gcc/testsuite/gcc.dg/tree-ssa/pr78622.c
+ 4243b02667ea36b1a06988e34b324696  gcc/testsuite/gcc.dg/tree-ssa/pr78655.c
  75a749edade7cb5984ade8da56775264  gcc/testsuite/gcc.dg/tree-ssa/pr78886.c
  f5d31222c8144a8d065867ff0693dbeb  gcc/testsuite/gcc.dg/tree-ssa/pr78910.c
  b4ed2887f835573a5c157f54975f46c3  gcc/testsuite/gcc.dg/tree-ssa/pr79095.c
*************** e3322e50615953ae04c47c17e04dadbb  gcc/te
*** 41331,41338 ****
  ff3e9d8662e05b8f3c81f35670655ad3  gcc/testsuite/gcc.dg/tree-ssa/pr79376.c
  98e5ef547b18d6db67d3c78579f5d85c  gcc/testsuite/gcc.dg/tree-ssa/pr79408-2.c
  47b41d52f868619ba15cafed8ebc7a8d  gcc/testsuite/gcc.dg/tree-ssa/pr79408.c
! 7e6a95917c405294859489d0eba88e46  gcc/testsuite/gcc.dg/tree-ssa/pr79448-2.c
! a45e23f4e880561d54a81a13b9b3eb19  gcc/testsuite/gcc.dg/tree-ssa/pr79448.c
  d4aa7c24d6416b188d1742fc7862c0d5  gcc/testsuite/gcc.dg/tree-ssa/pr79691.c
  2e59ff7af74f0aa2ffe66d00e6246b21  gcc/testsuite/gcc.dg/tree-ssa/pr79697.c
  63cdbac8b60e9574d8c08e0c48248fbc  gcc/testsuite/gcc.dg/tree-ssa/pr79800.c
--- 44233,44240 ----
  ff3e9d8662e05b8f3c81f35670655ad3  gcc/testsuite/gcc.dg/tree-ssa/pr79376.c
  98e5ef547b18d6db67d3c78579f5d85c  gcc/testsuite/gcc.dg/tree-ssa/pr79408-2.c
  47b41d52f868619ba15cafed8ebc7a8d  gcc/testsuite/gcc.dg/tree-ssa/pr79408.c
! 4250bf4e67db8a045092c6cc64afe76a  gcc/testsuite/gcc.dg/tree-ssa/pr79448-2.c
! 267ec15a1b0f6bdb0566f626d0600e04  gcc/testsuite/gcc.dg/tree-ssa/pr79448.c
  d4aa7c24d6416b188d1742fc7862c0d5  gcc/testsuite/gcc.dg/tree-ssa/pr79691.c
  2e59ff7af74f0aa2ffe66d00e6246b21  gcc/testsuite/gcc.dg/tree-ssa/pr79697.c
  63cdbac8b60e9574d8c08e0c48248fbc  gcc/testsuite/gcc.dg/tree-ssa/pr79800.c
*************** dbb3bd52ee698a572581470fc02636bb  gcc/te
*** 41375,41391 ****
  6b2bacdf2b2223684a18611dbdc1db7f  gcc/testsuite/gcc.dg/tree-ssa/pr83141.c
  54094f112bf7286fa8dbc811329e939e  gcc/testsuite/gcc.dg/tree-ssa/pr83198.c
  8477b237f09dca3e7328e74d93078e60  gcc/testsuite/gcc.dg/tree-ssa/pr83329.c
  47d8a98b2d47b4961be0d43f9a0310fb  gcc/testsuite/gcc.dg/tree-ssa/pr83501.c
  c95f9346fdf91a2af21b609136ce6e2b  gcc/testsuite/gcc.dg/tree-ssa/pr83648-2.c
  1c296504ab2e292b80b2f17f4a8bd1da  gcc/testsuite/gcc.dg/tree-ssa/pr83648.c
  893a1bc278c3ce3874bce3efe709bc89  gcc/testsuite/gcc.dg/tree-ssa/pr83695.c
  f313676a3bd1def3f52a4a2ad337e5b4  gcc/testsuite/gcc.dg/tree-ssa/pr84436-1.c
  1e29fdba8f6b0730e9cc3c90e2196fe1  gcc/testsuite/gcc.dg/tree-ssa/pr84436-2.c
! c5033a5999e53e48dbf9c74fa814248b  gcc/testsuite/gcc.dg/tree-ssa/pr84436-3.c
  2b0f4b6c355534d86ffd357aea56488f  gcc/testsuite/gcc.dg/tree-ssa/pr84436-4.c
  0b9d0214859d95d04c04fbe5573d638d  gcc/testsuite/gcc.dg/tree-ssa/pr84436-5.c
! 0b0116e0e628863f77fdd2852198f5d8  gcc/testsuite/gcc.dg/tree-ssa/pr84512.c
! bac451f136dbb78aea9579de58b4be24  gcc/testsuite/gcc.dg/tree-ssa/pr84648.c
  24386a9e6b2568bf430ce07d6550a3d3  gcc/testsuite/gcc.dg/tree-ssa/pr84859.c
  7b0e32d77316039c03b0187b750dcbd7  gcc/testsuite/gcc.dg/tree-ssa/pr84969.c
  47ad46caddbb0724510379886d3830aa  gcc/testsuite/gcc.dg/tree-ssa/pr85720.c
--- 44277,44296 ----
  6b2bacdf2b2223684a18611dbdc1db7f  gcc/testsuite/gcc.dg/tree-ssa/pr83141.c
  54094f112bf7286fa8dbc811329e939e  gcc/testsuite/gcc.dg/tree-ssa/pr83198.c
  8477b237f09dca3e7328e74d93078e60  gcc/testsuite/gcc.dg/tree-ssa/pr83329.c
+ e69de51dce3766c5fdf511b7cae45ae2  gcc/testsuite/gcc.dg/tree-ssa/pr83403-1.c
+ 7bb7b012bbeb661bdd3903ea9f5decc6  gcc/testsuite/gcc.dg/tree-ssa/pr83403-2.c
+ 5b03cd4f2ede1565fa5509924793e88f  gcc/testsuite/gcc.dg/tree-ssa/pr83403.h
  47d8a98b2d47b4961be0d43f9a0310fb  gcc/testsuite/gcc.dg/tree-ssa/pr83501.c
  c95f9346fdf91a2af21b609136ce6e2b  gcc/testsuite/gcc.dg/tree-ssa/pr83648-2.c
  1c296504ab2e292b80b2f17f4a8bd1da  gcc/testsuite/gcc.dg/tree-ssa/pr83648.c
  893a1bc278c3ce3874bce3efe709bc89  gcc/testsuite/gcc.dg/tree-ssa/pr83695.c
  f313676a3bd1def3f52a4a2ad337e5b4  gcc/testsuite/gcc.dg/tree-ssa/pr84436-1.c
  1e29fdba8f6b0730e9cc3c90e2196fe1  gcc/testsuite/gcc.dg/tree-ssa/pr84436-2.c
! fe56336568b1ca09af0087f9a7894117  gcc/testsuite/gcc.dg/tree-ssa/pr84436-3.c
  2b0f4b6c355534d86ffd357aea56488f  gcc/testsuite/gcc.dg/tree-ssa/pr84436-4.c
  0b9d0214859d95d04c04fbe5573d638d  gcc/testsuite/gcc.dg/tree-ssa/pr84436-5.c
! d95480a6123a76f477b5a49d525acdf1  gcc/testsuite/gcc.dg/tree-ssa/pr84512.c
! b412953eef23562657ccbb4e5b7c77ba  gcc/testsuite/gcc.dg/tree-ssa/pr84648.c
  24386a9e6b2568bf430ce07d6550a3d3  gcc/testsuite/gcc.dg/tree-ssa/pr84859.c
  7b0e32d77316039c03b0187b750dcbd7  gcc/testsuite/gcc.dg/tree-ssa/pr84969.c
  47ad46caddbb0724510379886d3830aa  gcc/testsuite/gcc.dg/tree-ssa/pr85720.c
*************** d70be7326192f6275dbf4aeaa98323e4  gcc/te
*** 41409,41427 ****
  25e65dc245562e744264782d86425910  gcc/testsuite/gcc.dg/tree-ssa/pr88087.c
  353295aa9c114bd9239631c19c6ee75e  gcc/testsuite/gcc.dg/tree-ssa/pr88367.c
  7572e4ef6d27c444552d702f2e890c76  gcc/testsuite/gcc.dg/tree-ssa/pr88444.c
! bdefd352a304b92e8aa4aae58ad27dd3  gcc/testsuite/gcc.dg/tree-ssa/pr88676-2.c
  8e7fa538ce08fd13a85a03ad6604b506  gcc/testsuite/gcc.dg/tree-ssa/pr88676.c
  b0f2c1e77fc0cf943a631ac09484533b  gcc/testsuite/gcc.dg/tree-ssa/pr88753.c
  803805b14d72e2d3f4ed782e074f7424  gcc/testsuite/gcc.dg/tree-ssa/pr88775-1.c
  19fbd9df2abfe718608c05a3b0894fea  gcc/testsuite/gcc.dg/tree-ssa/pr88775-2.c
  e89f8e784c43baa5c307166a1b734b4b  gcc/testsuite/gcc.dg/tree-ssa/pr89060.c
  024ba71c905d05d7a9881facfa2c7774  gcc/testsuite/gcc.dg/tree-ssa/pr89209.c
! 9e1e82f7c095eba5fac9c31089f04020  gcc/testsuite/gcc.dg/tree-ssa/pr89430-1.c
! 58317e60ca020843ac9f4b2866651439  gcc/testsuite/gcc.dg/tree-ssa/pr89430-2.c
  e14a7ab024285c629369879e885230f9  gcc/testsuite/gcc.dg/tree-ssa/pr89430-3.c
  856d06b8ec17411269229c41a17bb257  gcc/testsuite/gcc.dg/tree-ssa/pr89430-4.c
! 1f972c90d5c7b32ef5ffb0064dfbbb80  gcc/testsuite/gcc.dg/tree-ssa/pr89430-5.c
! 43df11bbad5608fd23377e7efd85a8eb  gcc/testsuite/gcc.dg/tree-ssa/pr89430-6.c
  473050d3b0a7febd40885ba41f36c10f  gcc/testsuite/gcc.dg/tree-ssa/pr89475.c
  df74a31199b32038f63b600b7a20a4f6  gcc/testsuite/gcc.dg/tree-ssa/pr89487.c
  a8e99357ccf139e15cb199f14791dd62  gcc/testsuite/gcc.dg/tree-ssa/pr89546.c
--- 44314,44334 ----
  25e65dc245562e744264782d86425910  gcc/testsuite/gcc.dg/tree-ssa/pr88087.c
  353295aa9c114bd9239631c19c6ee75e  gcc/testsuite/gcc.dg/tree-ssa/pr88367.c
  7572e4ef6d27c444552d702f2e890c76  gcc/testsuite/gcc.dg/tree-ssa/pr88444.c
! 76f4a6892f16b4d137e19af8c158cd30  gcc/testsuite/gcc.dg/tree-ssa/pr88676-2.c
  8e7fa538ce08fd13a85a03ad6604b506  gcc/testsuite/gcc.dg/tree-ssa/pr88676.c
  b0f2c1e77fc0cf943a631ac09484533b  gcc/testsuite/gcc.dg/tree-ssa/pr88753.c
  803805b14d72e2d3f4ed782e074f7424  gcc/testsuite/gcc.dg/tree-ssa/pr88775-1.c
  19fbd9df2abfe718608c05a3b0894fea  gcc/testsuite/gcc.dg/tree-ssa/pr88775-2.c
  e89f8e784c43baa5c307166a1b734b4b  gcc/testsuite/gcc.dg/tree-ssa/pr89060.c
  024ba71c905d05d7a9881facfa2c7774  gcc/testsuite/gcc.dg/tree-ssa/pr89209.c
! f3fbb68e9f7f5e47a74b1238fe1555c7  gcc/testsuite/gcc.dg/tree-ssa/pr89430-1.c
! cf8509d5da126ffa8d4cb163e7617f40  gcc/testsuite/gcc.dg/tree-ssa/pr89430-2.c
  e14a7ab024285c629369879e885230f9  gcc/testsuite/gcc.dg/tree-ssa/pr89430-3.c
  856d06b8ec17411269229c41a17bb257  gcc/testsuite/gcc.dg/tree-ssa/pr89430-4.c
! d954c63cb9ea858c2e1f2bb5ad528e08  gcc/testsuite/gcc.dg/tree-ssa/pr89430-5.c
! 2759fec45807bdc334dcde2efa18ab27  gcc/testsuite/gcc.dg/tree-ssa/pr89430-6.c
! 4d10636d771db994027e51bdf2519358  gcc/testsuite/gcc.dg/tree-ssa/pr89430-7-comp-ref.c
! d445061f436becb6c193f97393c05d91  gcc/testsuite/gcc.dg/tree-ssa/pr89430-8-mem-ref-size.c
  473050d3b0a7febd40885ba41f36c10f  gcc/testsuite/gcc.dg/tree-ssa/pr89475.c
  df74a31199b32038f63b600b7a20a4f6  gcc/testsuite/gcc.dg/tree-ssa/pr89487.c
  a8e99357ccf139e15cb199f14791dd62  gcc/testsuite/gcc.dg/tree-ssa/pr89546.c
*************** e9230122742d9f2e19bb99dcd54db233  gcc/te
*** 41434,41439 ****
--- 44341,44348 ----
  fb1e1d116f05653cf61eb1da1d7f7dbf  gcc/testsuite/gcc.dg/tree-ssa/pr90356-3.c
  03cad2b84c8094f2988f048c013e0bd7  gcc/testsuite/gcc.dg/tree-ssa/pr90356-4.c
  f1dcd7501f11cde86730fe9682f5800f  gcc/testsuite/gcc.dg/tree-ssa/pr90478.c
+ 30664d36dc1df130226d6a77cc9e4161  gcc/testsuite/gcc.dg/tree-ssa/pr91029-1.c
+ 3fb69a8e142b66d801784ef59cd6ac5a  gcc/testsuite/gcc.dg/tree-ssa/pr91029-2.c
  103840d2937e040bab69f9d58086e0b9  gcc/testsuite/gcc.dg/tree-ssa/pr91091-1.c
  97dbd55e973c0aeb3073bb7074ecbb87  gcc/testsuite/gcc.dg/tree-ssa/pr91091-2.c
  6801c464c2c92911919baf75e4fa1123  gcc/testsuite/gcc.dg/tree-ssa/pr91482.c
*************** c56985aba27fe45fdf438551dcc4ab69  gcc/te
*** 41444,41450 ****
  219fd68451d7c2ad2a2a33ec563c5415  gcc/testsuite/gcc.dg/tree-ssa/pr92056.c
  99686e486bebacc26b0e47dc8a99351a  gcc/testsuite/gcc.dg/tree-ssa/pr92085-1.c
  dfc83ff803f350d2dce34b00594788f0  gcc/testsuite/gcc.dg/tree-ssa/pr92085-2.c
! 86cb618e3a907093b2ab1739cf3d2c83  gcc/testsuite/gcc.dg/tree-ssa/pr92163.c
  cb1c522fc333e708aeae36385b2bcb23  gcc/testsuite/gcc.dg/tree-ssa/pr92706-1.c
  9d7b91661314d8dcebc96672f5a310d9  gcc/testsuite/gcc.dg/tree-ssa/pr92706-2.c
  e8a1f07950d514b5566afe2a4e2c4722  gcc/testsuite/gcc.dg/tree-ssa/pr92712-1.c
--- 44353,44359 ----
  219fd68451d7c2ad2a2a33ec563c5415  gcc/testsuite/gcc.dg/tree-ssa/pr92056.c
  99686e486bebacc26b0e47dc8a99351a  gcc/testsuite/gcc.dg/tree-ssa/pr92085-1.c
  dfc83ff803f350d2dce34b00594788f0  gcc/testsuite/gcc.dg/tree-ssa/pr92085-2.c
! 83c31db387f7c26758e02c771be7756d  gcc/testsuite/gcc.dg/tree-ssa/pr92163.c
  cb1c522fc333e708aeae36385b2bcb23  gcc/testsuite/gcc.dg/tree-ssa/pr92706-1.c
  9d7b91661314d8dcebc96672f5a310d9  gcc/testsuite/gcc.dg/tree-ssa/pr92706-2.c
  e8a1f07950d514b5566afe2a4e2c4722  gcc/testsuite/gcc.dg/tree-ssa/pr92712-1.c
*************** a11359c472cb26b9988e9e82b35093c5  gcc/te
*** 41455,41460 ****
--- 44364,44371 ----
  8edbd6e66e0161b4832f9cec2bcfec47  gcc/testsuite/gcc.dg/tree-ssa/pr92834.c
  7dfc09abf1b28ac3735cb4bd89a16ccd  gcc/testsuite/gcc.dg/tree-ssa/pr92930.c
  ca014276e5f9cd1e1500f2830781f240  gcc/testsuite/gcc.dg/tree-ssa/pr93118.c
+ 019fdc71b1f5726bb310324278d3460f  gcc/testsuite/gcc.dg/tree-ssa/pr93121-1.c
+ 9d9302ffa70de588552c3a3f7b1f1af0  gcc/testsuite/gcc.dg/tree-ssa/pr93121-2.c
  49ce3b8143e38f26a53b650ad7e55830  gcc/testsuite/gcc.dg/tree-ssa/pr93156.c
  9b7e7c0ab60634eababd236b65f5c04c  gcc/testsuite/gcc.dg/tree-ssa/pr93435.c
  a488a3513c6d93c3c473b1e5f764fa67  gcc/testsuite/gcc.dg/tree-ssa/pr93582-1.c
*************** c25bc66e518faa330ec0e19ebd46e5b9  gcc/te
*** 41469,41485 ****
--- 44380,44458 ----
  6346b3e6adf9192925c0f0ead513d239  gcc/testsuite/gcc.dg/tree-ssa/pr93582-8.c
  45bf953087ec1f900da8458b7d5a998d  gcc/testsuite/gcc.dg/tree-ssa/pr93582-9.c
  8aa62492210b4d7d0f838a9c9389e359  gcc/testsuite/gcc.dg/tree-ssa/pr93776.c
+ 1a405b78b602cc674ae92752feda1156  gcc/testsuite/gcc.dg/tree-ssa/pr93781-1.c
+ e27849e4f028f9f63442449af6738404  gcc/testsuite/gcc.dg/tree-ssa/pr93781-2.c
+ b422f5eb310c1b5a1626a8eabb17795e  gcc/testsuite/gcc.dg/tree-ssa/pr93781-3.c
  33ab3e37b42c43100380b00f9d1cb455  gcc/testsuite/gcc.dg/tree-ssa/pr94125.c
  bbbf863dee2a824829c30c4d90e56d15  gcc/testsuite/gcc.dg/tree-ssa/pr94482-2.c
  6759e8446575d37973251ebb39554ebf  gcc/testsuite/gcc.dg/tree-ssa/pr94598.c
+ 929805525efcbc94bb7e8e32ef629500  gcc/testsuite/gcc.dg/tree-ssa/pr94703.c
+ 7f05cf9d5762f54e0c1fe95789130e71  gcc/testsuite/gcc.dg/tree-ssa/pr94718-1.c
+ c8aff569177b13034ddce2648906ba7d  gcc/testsuite/gcc.dg/tree-ssa/pr94718-2.c
+ 1dc23213916ccb3731660d33fd3c9fb8  gcc/testsuite/gcc.dg/tree-ssa/pr94718-3.c
+ afb4a21ae5d8305dae166caf136c4891  gcc/testsuite/gcc.dg/tree-ssa/pr94718-4.c
+ d7b22cc9edb495fec42c4d36a75f225d  gcc/testsuite/gcc.dg/tree-ssa/pr94718-5.c
+ e5a51fd11926478c024793ad4c74b671  gcc/testsuite/gcc.dg/tree-ssa/pr94783.c
+ 4859b269f38032be316e2391742f9a84  gcc/testsuite/gcc.dg/tree-ssa/pr94785.c
+ 54e600079a1e647bb23c089a14f31773  gcc/testsuite/gcc.dg/tree-ssa/pr94786.c
+ 582164102abb60d593d163c28085e17c  gcc/testsuite/gcc.dg/tree-ssa/pr94800.c
+ 13fd0a66859b31290520fa5e279af558  gcc/testsuite/gcc.dg/tree-ssa/pr94801.c
+ 32cdcaafcfffa6482d5d6e43ef8e9410  gcc/testsuite/gcc.dg/tree-ssa/pr94802-1.c
+ 0c033964c244e5579ddb3076a2bc0793  gcc/testsuite/gcc.dg/tree-ssa/pr94880.c
+ 08e3b7909412286636ee366dfbf5fb52  gcc/testsuite/gcc.dg/tree-ssa/pr94882-1.c
+ 1a1b4d58f901501235dafa6214595e2b  gcc/testsuite/gcc.dg/tree-ssa/pr94882-2.c
+ 0b2c20e54ff787364ec55a02a68cd7eb  gcc/testsuite/gcc.dg/tree-ssa/pr94882-3.c
+ f9ceb9a625b63e81fc2331eb81c935f7  gcc/testsuite/gcc.dg/tree-ssa/pr94882.c
+ 64e8685fad4f5d1e103fae181b5b2720  gcc/testsuite/gcc.dg/tree-ssa/pr94913.c
+ 9cdb2198d4344b8eced04856f14b505e  gcc/testsuite/gcc.dg/tree-ssa/pr94921.c
  53e20037498a94809dbeff091a2e7fb5  gcc/testsuite/gcc.dg/tree-ssa/pr94969.c
+ e438df2d333e51a54de1eaf993fc89f3  gcc/testsuite/gcc.dg/tree-ssa/pr95433-2.c
+ 25a5625263cb550c4c6310e3e2d365ad  gcc/testsuite/gcc.dg/tree-ssa/pr95433.c
+ 2fa4eb757c6960b5f94dfd8098e99c90  gcc/testsuite/gcc.dg/tree-ssa/pr95527.c
+ 8e1587090a7715a9871b035c0d8441b8  gcc/testsuite/gcc.dg/tree-ssa/pr95649.c
+ c6af84a8aff126c3fa99b857da4a410d  gcc/testsuite/gcc.dg/tree-ssa/pr95699.c
+ 8e9c05f529c069211365519d5eeba631  gcc/testsuite/gcc.dg/tree-ssa/pr95731.c
  a43f5375ab3cccb18ca71f3f0527e303  gcc/testsuite/gcc.dg/tree-ssa/pr95804.c
+ ef25b14aec06c09126d8700e9e6c651e  gcc/testsuite/gcc.dg/tree-ssa/pr95867.c
+ 51d0beabe908b726fb4191bd39af0246  gcc/testsuite/gcc.dg/tree-ssa/pr95906.c
+ 968ccabd73ea2fb554fc4607b0d12540  gcc/testsuite/gcc.dg/tree-ssa/pr96094.c
+ f17fd671286e407b5fc734cde17bc88d  gcc/testsuite/gcc.dg/tree-ssa/pr96232-1.c
+ d97d04db64402cd822338856f145fec9  gcc/testsuite/gcc.dg/tree-ssa/pr96232-2.c
+ 38ac60f84ed0edca0dbb0080e7ee13e9  gcc/testsuite/gcc.dg/tree-ssa/pr96239.c
+ e5db63cfc4f87a52e39d66dfc65ad76e  gcc/testsuite/gcc.dg/tree-ssa/pr96272.c
+ 3e53dbc391e015ed761536c5337f2e07  gcc/testsuite/gcc.dg/tree-ssa/pr96480.c
+ 7a035f0210bb13d71130f271f2336289  gcc/testsuite/gcc.dg/tree-ssa/pr96669-1.c
+ e339d189cfb1261a988228a67f937c8e  gcc/testsuite/gcc.dg/tree-ssa/pr96669-2.c
+ 0f3e841b4765f7759492116c7993e093  gcc/testsuite/gcc.dg/tree-ssa/pr96671-1.c
+ 6d5da695c60ce83c1de92ac6937735b5  gcc/testsuite/gcc.dg/tree-ssa/pr96671-2.c
+ a69ef08a707c656293089717bb0b3f16  gcc/testsuite/gcc.dg/tree-ssa/pr96681.c
+ 90ffe5e5f74afaeab9a049917f52cf11  gcc/testsuite/gcc.dg/tree-ssa/pr96685-1.c
+ 4c30cd1c005434b6f699d9d1e078d3db  gcc/testsuite/gcc.dg/tree-ssa/pr96685-2.c
+ a0647084804b90be3e8bdad82c7777a9  gcc/testsuite/gcc.dg/tree-ssa/pr96685-3.c
+ a73a95372785101c5f4de5e36a62d6a1  gcc/testsuite/gcc.dg/tree-ssa/pr96688.c
+ 70188bafba9d185995a25fd8835ab428  gcc/testsuite/gcc.dg/tree-ssa/pr96691.c
  79c2af3b956e595ff8675e6c9039ee00  gcc/testsuite/gcc.dg/tree-ssa/pr96730.c
+ 83c579881e1867fc68ce84f7d2d6c782  gcc/testsuite/gcc.dg/tree-ssa/pr96782.c
+ 9f88bf70e6b3c0e0770b41f19e7e76ba  gcc/testsuite/gcc.dg/tree-ssa/pr96789.c
  7ce01d5539f42257afefbfc03dd79f4c  gcc/testsuite/gcc.dg/tree-ssa/pr96820.c
+ fad1ff9b6c8425319a4c295488a4b38a  gcc/testsuite/gcc.dg/tree-ssa/pr96928.c
+ cd30455cf81a7c851de09ae7ccd32f53  gcc/testsuite/gcc.dg/tree-ssa/pr96929.c
+ ec73e83690c5ccb0dd96a87783cd4764  gcc/testsuite/gcc.dg/tree-ssa/pr96967.c
  6b92322818b0a3b87de6cd676b752a9d  gcc/testsuite/gcc.dg/tree-ssa/pr97009.c
+ 34e25d50340e1a5b307b1877949636f9  gcc/testsuite/gcc.dg/tree-ssa/pr97260.c
  5186613269719acf7830ca244a7cf28a  gcc/testsuite/gcc.dg/tree-ssa/pr97456.c
+ 129bd4f1ec99c240a86595686b973a82  gcc/testsuite/gcc.dg/tree-ssa/pr97503.c
  f35f2a4bb9fe4af0dfb311e2c2122c2f  gcc/testsuite/gcc.dg/tree-ssa/pr97849.c
+ 097a548743a63ed1aed9fe370369329e  gcc/testsuite/gcc.dg/tree-ssa/pr97964.c
+ baea640f2f5ede46363c43f03abd38cb  gcc/testsuite/gcc.dg/tree-ssa/pr97997-1.c
+ 23ccdfff5ac7eb83a3c15085cede9885  gcc/testsuite/gcc.dg/tree-ssa/pr97997-2.c
+ 61ba91925741752dcebbd70a27ed5018  gcc/testsuite/gcc.dg/tree-ssa/pr98084.c
+ 4bb919a83ee1ee0e320bf059286a463c  gcc/testsuite/gcc.dg/tree-ssa/pr98094.c
+ 7110147a3d242779ed037a4107bc56a9  gcc/testsuite/gcc.dg/tree-ssa/pr98182.c
+ 4f67b77cce4d4a67193b302faa4ed10b  gcc/testsuite/gcc.dg/tree-ssa/pr98265.C
+ 2802e4a2ba6a403181f297d6a0a30fe5  gcc/testsuite/gcc.dg/tree-ssa/pr98455.c
  3725366f65490df73d15cafa94bca1d5  gcc/testsuite/gcc.dg/tree-ssa/pr98513.c
+ 566f2cf5c36f26ba96a5827e3ad9322f  gcc/testsuite/gcc.dg/tree-ssa/pr99142.c
  e6c9f2dd9d7405dee4bfd5d6d0fc455f  gcc/testsuite/gcc.dg/tree-ssa/pred-1.c
  90c3c1a872e4566cc043c50e818ef036  gcc/testsuite/gcc.dg/tree-ssa/predcom-1.c
  ec45787b9b781da6181e7960a8cb76f0  gcc/testsuite/gcc.dg/tree-ssa/predcom-2.c
*************** fdee0f8308b195108359f0cb2f64912c  gcc/te
*** 41527,41533 ****
  d8609a9707d7bbe9c3533ef9877c49cd  gcc/testsuite/gcc.dg/tree-ssa/reassoc-18.c
  e05c644464252e6362b1708a38739e41  gcc/testsuite/gcc.dg/tree-ssa/reassoc-19.c
  76df60f4a7a35c402ce1b754c4d8ee02  gcc/testsuite/gcc.dg/tree-ssa/reassoc-2.c
! 0638b60e716dc6fd7037f76b63883c25  gcc/testsuite/gcc.dg/tree-ssa/reassoc-20.c
  32b44bbdba5672497d6837cd3085944c  gcc/testsuite/gcc.dg/tree-ssa/reassoc-21.c
  fc0e281a23796262fa832ffe3ebc4d43  gcc/testsuite/gcc.dg/tree-ssa/reassoc-22.c
  f39e851c8ff7bbd176d52719bdf1f6a2  gcc/testsuite/gcc.dg/tree-ssa/reassoc-23.c
--- 44500,44506 ----
  d8609a9707d7bbe9c3533ef9877c49cd  gcc/testsuite/gcc.dg/tree-ssa/reassoc-18.c
  e05c644464252e6362b1708a38739e41  gcc/testsuite/gcc.dg/tree-ssa/reassoc-19.c
  76df60f4a7a35c402ce1b754c4d8ee02  gcc/testsuite/gcc.dg/tree-ssa/reassoc-2.c
! a84e848c4ac250e79fd2903708667376  gcc/testsuite/gcc.dg/tree-ssa/reassoc-20.c
  32b44bbdba5672497d6837cd3085944c  gcc/testsuite/gcc.dg/tree-ssa/reassoc-21.c
  fc0e281a23796262fa832ffe3ebc4d43  gcc/testsuite/gcc.dg/tree-ssa/reassoc-22.c
  f39e851c8ff7bbd176d52719bdf1f6a2  gcc/testsuite/gcc.dg/tree-ssa/reassoc-23.c
*************** f39e851c8ff7bbd176d52719bdf1f6a2  gcc/te
*** 41535,41551 ****
  7c1b384e62e625aa03a534f1db867839  gcc/testsuite/gcc.dg/tree-ssa/reassoc-25.c
  5c0e095306f15dfc3883e1e40a90be2d  gcc/testsuite/gcc.dg/tree-ssa/reassoc-26.c
  5f39498e2df670547f4d7eab95029db3  gcc/testsuite/gcc.dg/tree-ssa/reassoc-27.c
! efe4ddb755a726b0b3a5e3afde8d760a  gcc/testsuite/gcc.dg/tree-ssa/reassoc-28.c
  edcbca34043637027e3769b565e4b273  gcc/testsuite/gcc.dg/tree-ssa/reassoc-29.c
  3d64c91be1d73ae14952613f6b8d7e64  gcc/testsuite/gcc.dg/tree-ssa/reassoc-3.c
  09bf33e4e3bcec2a224d964018864ea1  gcc/testsuite/gcc.dg/tree-ssa/reassoc-30.c
  670f544146641dc1a6ba76a0e447d89f  gcc/testsuite/gcc.dg/tree-ssa/reassoc-31.c
! d0f2d03fcea7ec3b0810b8a56b6ec22f  gcc/testsuite/gcc.dg/tree-ssa/reassoc-32.c
  118abcfd66bece34516a3c4b2e33496c  gcc/testsuite/gcc.dg/tree-ssa/reassoc-33.c
  3624cf289b250c43c1644eca5d772cd8  gcc/testsuite/gcc.dg/tree-ssa/reassoc-34.c
  aea4f32c37b07ed1d0e8ae031cb6d05d  gcc/testsuite/gcc.dg/tree-ssa/reassoc-35.c
  81621526612f8a7a58e6bc7a66063d12  gcc/testsuite/gcc.dg/tree-ssa/reassoc-36.c
! 782c570dd8174c605a8829d4728d0fab  gcc/testsuite/gcc.dg/tree-ssa/reassoc-37.c
  cc771f2aca9e78e7185effebedfe5750  gcc/testsuite/gcc.dg/tree-ssa/reassoc-38.c
  ce8fe7e8b99167c711c6540beff0f27a  gcc/testsuite/gcc.dg/tree-ssa/reassoc-39.c
  ad0c910858cba8a5b3996305d7d5447d  gcc/testsuite/gcc.dg/tree-ssa/reassoc-4.c
--- 44508,44524 ----
  7c1b384e62e625aa03a534f1db867839  gcc/testsuite/gcc.dg/tree-ssa/reassoc-25.c
  5c0e095306f15dfc3883e1e40a90be2d  gcc/testsuite/gcc.dg/tree-ssa/reassoc-26.c
  5f39498e2df670547f4d7eab95029db3  gcc/testsuite/gcc.dg/tree-ssa/reassoc-27.c
! b552cf1a1bb6c0d40619ebe2ee4d06f2  gcc/testsuite/gcc.dg/tree-ssa/reassoc-28.c
  edcbca34043637027e3769b565e4b273  gcc/testsuite/gcc.dg/tree-ssa/reassoc-29.c
  3d64c91be1d73ae14952613f6b8d7e64  gcc/testsuite/gcc.dg/tree-ssa/reassoc-3.c
  09bf33e4e3bcec2a224d964018864ea1  gcc/testsuite/gcc.dg/tree-ssa/reassoc-30.c
  670f544146641dc1a6ba76a0e447d89f  gcc/testsuite/gcc.dg/tree-ssa/reassoc-31.c
! 45935b9d55e593f2166807bcff1d4987  gcc/testsuite/gcc.dg/tree-ssa/reassoc-32.c
  118abcfd66bece34516a3c4b2e33496c  gcc/testsuite/gcc.dg/tree-ssa/reassoc-33.c
  3624cf289b250c43c1644eca5d772cd8  gcc/testsuite/gcc.dg/tree-ssa/reassoc-34.c
  aea4f32c37b07ed1d0e8ae031cb6d05d  gcc/testsuite/gcc.dg/tree-ssa/reassoc-35.c
  81621526612f8a7a58e6bc7a66063d12  gcc/testsuite/gcc.dg/tree-ssa/reassoc-36.c
! c141c54d8d2945e58e9dc53047625f7c  gcc/testsuite/gcc.dg/tree-ssa/reassoc-37.c
  cc771f2aca9e78e7185effebedfe5750  gcc/testsuite/gcc.dg/tree-ssa/reassoc-38.c
  ce8fe7e8b99167c711c6540beff0f27a  gcc/testsuite/gcc.dg/tree-ssa/reassoc-39.c
  ad0c910858cba8a5b3996305d7d5447d  gcc/testsuite/gcc.dg/tree-ssa/reassoc-4.c
*************** d396c36b9f0d747b966a2da9958bc3ac  gcc/te
*** 41592,41598 ****
  dd68d04a67a361d839dfa171034bb8e7  gcc/testsuite/gcc.dg/tree-ssa/scev-5.c
  219839db1cd5ee662a1d6dfd20d04a13  gcc/testsuite/gcc.dg/tree-ssa/scev-6.c
  2a4d896a7956f73ba5c280f397c5d479  gcc/testsuite/gcc.dg/tree-ssa/scev-7.c
! 182d91e3277e4fc2c446d31ea73c2309  gcc/testsuite/gcc.dg/tree-ssa/scev-8.c
  72a4d2a9d127c483145c8c25b2a4b795  gcc/testsuite/gcc.dg/tree-ssa/scev-9.c
  5c43c327edae117a89ccf8d95e2fb91b  gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c
  20ce3bebeb7a8c4161d2085814041edc  gcc/testsuite/gcc.dg/tree-ssa/shorten-1.c
--- 44565,44571 ----
  dd68d04a67a361d839dfa171034bb8e7  gcc/testsuite/gcc.dg/tree-ssa/scev-5.c
  219839db1cd5ee662a1d6dfd20d04a13  gcc/testsuite/gcc.dg/tree-ssa/scev-6.c
  2a4d896a7956f73ba5c280f397c5d479  gcc/testsuite/gcc.dg/tree-ssa/scev-7.c
! 617f17f9d345921cc3d44ce933023f61  gcc/testsuite/gcc.dg/tree-ssa/scev-8.c
  72a4d2a9d127c483145c8c25b2a4b795  gcc/testsuite/gcc.dg/tree-ssa/scev-9.c
  5c43c327edae117a89ccf8d95e2fb91b  gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c
  20ce3bebeb7a8c4161d2085814041edc  gcc/testsuite/gcc.dg/tree-ssa/shorten-1.c
*************** d03cb3596196779855c74f48d36a97a2  gcc/te
*** 41636,41652 ****
  c9d54e802a416f03458eaee182da0547  gcc/testsuite/gcc.dg/tree-ssa/slsr-5.c
  6bab782ff13aa39d302f080d3c157946  gcc/testsuite/gcc.dg/tree-ssa/slsr-6.c
  47f4aa00fc6ef30ae0f1b03e5733a572  gcc/testsuite/gcc.dg/tree-ssa/slsr-7.c
! ff8b64539a68482befc61d69dc969c8a  gcc/testsuite/gcc.dg/tree-ssa/slsr-8.c
  a033da229d97e775dc989a1095ff34b8  gcc/testsuite/gcc.dg/tree-ssa/slsr-9.c
  4a59da192568eb854b220a6304bfea72  gcc/testsuite/gcc.dg/tree-ssa/split-path-1.c
  374f7d1e0bcd74c6255d65e104a73dbf  gcc/testsuite/gcc.dg/tree-ssa/split-path-10.c
  6f118f8784310e78f72417963dea9249  gcc/testsuite/gcc.dg/tree-ssa/split-path-11.c
  90e953eef4724c1c9123f8b3133d04ea  gcc/testsuite/gcc.dg/tree-ssa/split-path-2.c
  18bf42127373d760055aeed15ce02990  gcc/testsuite/gcc.dg/tree-ssa/split-path-3.c
  6604a0ee7102df60c56bdf9a5abb2a9d  gcc/testsuite/gcc.dg/tree-ssa/split-path-4.c
  82281eb4072e89865db7b58f503ee3d3  gcc/testsuite/gcc.dg/tree-ssa/split-path-5.c
  5a45c0480607e4a3dcb00e6e103b66bc  gcc/testsuite/gcc.dg/tree-ssa/split-path-6.c
! cb9f35ff75080b94e4fe0fca233a2a6b  gcc/testsuite/gcc.dg/tree-ssa/split-path-7.c
  cc58f2bbf63f20c83f4c8c0d2d1348d8  gcc/testsuite/gcc.dg/tree-ssa/split-path-8.c
  44357fdb9d6f097cddb4a49dbb427a27  gcc/testsuite/gcc.dg/tree-ssa/split-path-9.c
  5497d0691f379f1d688647db6c95cc34  gcc/testsuite/gcc.dg/tree-ssa/sra-1.c
--- 44609,44626 ----
  c9d54e802a416f03458eaee182da0547  gcc/testsuite/gcc.dg/tree-ssa/slsr-5.c
  6bab782ff13aa39d302f080d3c157946  gcc/testsuite/gcc.dg/tree-ssa/slsr-6.c
  47f4aa00fc6ef30ae0f1b03e5733a572  gcc/testsuite/gcc.dg/tree-ssa/slsr-7.c
! f5cbb278145ac126dcce52ba55a7e986  gcc/testsuite/gcc.dg/tree-ssa/slsr-8.c
  a033da229d97e775dc989a1095ff34b8  gcc/testsuite/gcc.dg/tree-ssa/slsr-9.c
  4a59da192568eb854b220a6304bfea72  gcc/testsuite/gcc.dg/tree-ssa/split-path-1.c
  374f7d1e0bcd74c6255d65e104a73dbf  gcc/testsuite/gcc.dg/tree-ssa/split-path-10.c
  6f118f8784310e78f72417963dea9249  gcc/testsuite/gcc.dg/tree-ssa/split-path-11.c
+ 7f70f1f8957026ce7c76f2d7f8173762  gcc/testsuite/gcc.dg/tree-ssa/split-path-12.c
  90e953eef4724c1c9123f8b3133d04ea  gcc/testsuite/gcc.dg/tree-ssa/split-path-2.c
  18bf42127373d760055aeed15ce02990  gcc/testsuite/gcc.dg/tree-ssa/split-path-3.c
  6604a0ee7102df60c56bdf9a5abb2a9d  gcc/testsuite/gcc.dg/tree-ssa/split-path-4.c
  82281eb4072e89865db7b58f503ee3d3  gcc/testsuite/gcc.dg/tree-ssa/split-path-5.c
  5a45c0480607e4a3dcb00e6e103b66bc  gcc/testsuite/gcc.dg/tree-ssa/split-path-6.c
! 5fbb9ae8c2667915da5de25c4368db74  gcc/testsuite/gcc.dg/tree-ssa/split-path-7.c
  cc58f2bbf63f20c83f4c8c0d2d1348d8  gcc/testsuite/gcc.dg/tree-ssa/split-path-8.c
  44357fdb9d6f097cddb4a49dbb427a27  gcc/testsuite/gcc.dg/tree-ssa/split-path-9.c
  5497d0691f379f1d688647db6c95cc34  gcc/testsuite/gcc.dg/tree-ssa/sra-1.c
*************** e92489c90dd47c31b76500ce339319b1  gcc/te
*** 41670,41676 ****
  7b3f5a61b9f4a3f5a778aab896139fe2  gcc/testsuite/gcc.dg/tree-ssa/sra-9.c
  b25208e2c31a217147d4f793dbfb7cb8  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-1.c
  6b25812d84cb808691e7459f2ec58990  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-10.c
! 05d8cd86b65f93ee07ae9455414b438f  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-11.c
  487e8ba99622856ccdbd48030a99e293  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-12.c
  377101857ba6c322f80507dfdbb9900c  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-13.c
  6ebc7dc990c5feff9013b18ad06c60d3  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-14.c
--- 44644,44650 ----
  7b3f5a61b9f4a3f5a778aab896139fe2  gcc/testsuite/gcc.dg/tree-ssa/sra-9.c
  b25208e2c31a217147d4f793dbfb7cb8  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-1.c
  6b25812d84cb808691e7459f2ec58990  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-10.c
! d024d06922004215bb3d85a5e207ece3  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-11.c
  487e8ba99622856ccdbd48030a99e293  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-12.c
  377101857ba6c322f80507dfdbb9900c  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-13.c
  6ebc7dc990c5feff9013b18ad06c60d3  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-14.c
*************** b7ccd5f262237601ddd937d39599c479  gcc/te
*** 41714,41720 ****
  234074b4256dac328cd0aa9b439a5d71  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-branch-1.c
  e666ad14b4ed9af521fe3321b676a452  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-ccp-1.c
  8a64614ddb6fafb7fd2cde19df7908b4  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c
! c947f7a7b2ab4b92803c522e1e0892ba  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c
  0b33d127d9be03423c182ddedafe0447  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-3.c
  0e4a93b4f8ef0ea9a03525280c2e9e66  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-4.c
  b8c4472d1c80ee7abb4e274e617c5565  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-5.c
--- 44688,44694 ----
  234074b4256dac328cd0aa9b439a5d71  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-branch-1.c
  e666ad14b4ed9af521fe3321b676a452  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-ccp-1.c
  8a64614ddb6fafb7fd2cde19df7908b4  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c
! 35fe651ba16877b7b82da8181a1b6e5d  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c
  0b33d127d9be03423c182ddedafe0447  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-3.c
  0e4a93b4f8ef0ea9a03525280c2e9e66  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-4.c
  b8c4472d1c80ee7abb4e274e617c5565  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-5.c
*************** bc1ab9f7c64963b902256b8a4333636f  gcc/te
*** 41743,41751 ****
  15738f38675ee569391bc24effefc64b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2h.c
  bf87381898a8e2c3a126acca621f2a14  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c
  881f6db6cb1a3e63bf8dd2e0f203cc95  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-5.c
! f6ccb52c3140d22f97ee018c8f29b47f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-6.c
! 796f48ef20ce46703e40fc2faf2496e5  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
! ee74b6d9b65dc8e458574378dd6ca9eb  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-8.c
  1e01eee87c695d67cde163a4530069b0  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-9.c
  9131f70d5244737552818651f478cdc5  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-1.c
  7960eee1bc3ae6b98fcb5222961a49de  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-10.c
--- 44717,44725 ----
  15738f38675ee569391bc24effefc64b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2h.c
  bf87381898a8e2c3a126acca621f2a14  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c
  881f6db6cb1a3e63bf8dd2e0f203cc95  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-5.c
! 8983e3c4324c05a0a818ad89ee5df8d7  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-6.c
! 03ade5b8a566520aedeb6d04284715ad  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
! de890ed0b8a4a8f0e19572bf759856a3  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-8.c
  1e01eee87c695d67cde163a4530069b0  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-9.c
  9131f70d5244737552818651f478cdc5  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-1.c
  7960eee1bc3ae6b98fcb5222961a49de  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-10.c
*************** f3c1018cd7257cd934c6df52bc0e7440  gcc/te
*** 41763,41773 ****
  33ae9727bb74ef8f4880c77b0c67c256  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-21.c
  f7e20155bdbd371f097bd98615d07829  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-24.c
  9b065a37e7fbc662c999af80c73b937c  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-25.c
! 415e557e605f1d28d91f79560d727929  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-26.c
! 3d9384e04e1e636012e6d93f15988a6f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-28.c
! 8d225e4da5a51564be3fe1606f99bb9f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-29.c
  58f01e588bb6eda6cadea1242d43f6a2  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-3.c
! c0ca0e94e1ce558f4728360450f8122b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-30.c
  31d04112caa131a268b2fb5cea16f72c  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-31.c
  5ff24723124a7b1e3895fa94d8a2eabd  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-32.c
  60df51a274a98611312a4be351b5bd78  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-33.c
--- 44737,44747 ----
  33ae9727bb74ef8f4880c77b0c67c256  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-21.c
  f7e20155bdbd371f097bd98615d07829  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-24.c
  9b065a37e7fbc662c999af80c73b937c  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-25.c
! 41d9ac50535b7c035060d72b54f1e8c9  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-26.c
! 86813d9ab3d939085f56baf655b5e6c2  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-28.c
! da20176e0015ee1cea4785b0f13e8bee  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-29.c
  58f01e588bb6eda6cadea1242d43f6a2  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-3.c
! 1e78e0c30fd41f2a1ccb36477cffc2b6  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-30.c
  31d04112caa131a268b2fb5cea16f72c  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-31.c
  5ff24723124a7b1e3895fa94d8a2eabd  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-32.c
  60df51a274a98611312a4be351b5bd78  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-33.c
*************** dc1490c537c537ae4d06cef5aa9114be  gcc/te
*** 41778,41783 ****
--- 44752,44758 ----
  e3865a2b416262373c06843a4d42f112  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-38.c
  853f7bd70d609cfc3f9157308dd0f334  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-39.c
  ec8e29fa1c7b5009e277591545096959  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-4.c
+ e1f6e529145ed0b2f0232c14f76bd2d4  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-40.c
  8464edd661b6724b6cc8a6c0591e9ada  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-5.c
  d67df09df0e5c754eb61edc5766cd64b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c
  e61169ee1fb9fc84f1d8b0d413a8a21b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-7.c
*************** d99e0642724c7259ed5e12bbd70cf3fc  gcc/te
*** 41829,41835 ****
  99f73056e2b0a66ecf780fcbb650b45d  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-50.c
  b1a33369c3e912c4411619ea3acffd32  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-52.c
  70131326a8c9676da6b1aa5ba490a489  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-53.c
! 0ab14b73ebeaacb1bfe044d4642a2fc7  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-54.c
  9afe92bbb793481d67a2eb885a1366eb  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-55.c
  33db6345b82f93d88614dbcc21533a26  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-56.c
  df1d005d9330af682db40869d740ce2b  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-58.c
--- 44804,44810 ----
  99f73056e2b0a66ecf780fcbb650b45d  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-50.c
  b1a33369c3e912c4411619ea3acffd32  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-52.c
  70131326a8c9676da6b1aa5ba490a489  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-53.c
! 6d087377611bea75d61edc51d08da88a  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-54.c
  9afe92bbb793481d67a2eb885a1366eb  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-55.c
  33db6345b82f93d88614dbcc21533a26  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-56.c
  df1d005d9330af682db40869d740ce2b  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-58.c
*************** c75fd65ee6a8f250fc885fc554c2b9d6  gcc/te
*** 41864,41870 ****
--- 44839,44847 ----
  37e380ef0e67f2b97a803ceccd845166  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-85.c
  8a83bffa449a2f7e2bc20676eccd36b5  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-86.c
  bab030e723ebb78dbecdf8eb91fd51f8  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-87.c
+ 3f720612f74a60fa98d1b5a82ed0ad5f  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-88.c
  6c8e375b119ce1b63e19eed89459c12f  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-9.c
+ 7d8325c97088076c87f983ac248e7700  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-93.c
  2957dc80c49929e08096f70c96f5df81  gcc/testsuite/gcc.dg/tree-ssa/ssa-hoist-1.c
  2d6dabe93b06b03f622762226dbb6c34  gcc/testsuite/gcc.dg/tree-ssa/ssa-hoist-2.c
  70be68799a646b8992aed1aafb5151ab  gcc/testsuite/gcc.dg/tree-ssa/ssa-hoist-3.c
*************** cb14d497286df49863c83afa886a3a92  gcc/te
*** 41895,41900 ****
--- 44872,44878 ----
  c456ebf49f3666d48ef00a6ef3c341c7  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-11.c
  9aae14b32a26cb59ea2b62b4c541abd6  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-12.c
  6e2983c6ef63d3ea5a3fe01596a9b0c0  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-13.c
+ 7d0707c4a3f43204bc5bb9f08a490d52  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-14.c
  e8ad1077cbbf867b677d6dbe00524406  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-2.c
  c0ab69fe1a4b916817bbafe5e5048c34  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-3.c
  d00d2a078458d4fc876af7d2a29c241a  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-5.c
*************** e97a86a4d183fb00bc6ace46b75a5e38  gcc/te
*** 41910,41916 ****
  f0ab808bc7ab00190cca716326795a29  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-14.c
  12f130a5e7c9cff2b7118be81650c378  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-15.c
  631621254fe71f5105a2e243570a8e2b  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-16.c
! 219dc9218cd3c24ef8fa746f746c33f0  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-17.c
  0565ba1ba619b5ac95527755d8f0be3b  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-18.c
  20ad0633b8315a9b7f9b23effa2923a0  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-19.c
  52a0d7217e700af17b3673ef6a1aac50  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-2.c
--- 44888,44894 ----
  f0ab808bc7ab00190cca716326795a29  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-14.c
  12f130a5e7c9cff2b7118be81650c378  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-15.c
  631621254fe71f5105a2e243570a8e2b  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-16.c
! b04092c4b2d39c984fa7aa82a6aad8de  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-17.c
  0565ba1ba619b5ac95527755d8f0be3b  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-18.c
  20ad0633b8315a9b7f9b23effa2923a0  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-19.c
  52a0d7217e700af17b3673ef6a1aac50  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-2.c
*************** c1c886b77a9aae16c0297c9b61312de4  gcc/te
*** 41942,41949 ****
--- 44920,44930 ----
  eb6720628ef9a3d0e465f645012cfb11  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-10.c
  b40ae88699747b0b89167ecdd1146400  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-11.c
  be3ea69b52e071fd375d56784f1b9d68  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-12.c
+ 039aea7d92e79e515a303dfcb36e3fd6  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-13.c
+ 1743d9521b951f28a189d06f423d82b8  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-14.c
  f237fb84d8c929de79482cd9290e2e8a  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-15.c
  9e4571c11c00c3659ac6fa7b355ad2a1  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-16.c
+ 3c6a12559e34ac818f0f924443d7e92d  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-17.c
  4bbb26d9f9200b0547c48796adb2e91a  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-2.c
  9e954e0c4211f2af3854b3c3f34d48df  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-3.c
  1b3e5b9953e3b8856581281f20abc008  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-4.c
*************** c75555c83abd66551e17d15c9b49868b  gcc/te
*** 41973,41987 ****
  6bd594a8881ebbdcc9a786df6e80785e  gcc/testsuite/gcc.dg/tree-ssa/strlen-2.c
  bb7e1bd5cca1d575ddd8aece7fd041b1  gcc/testsuite/gcc.dg/tree-ssa/strncat.c
  6e680f949c844191962eff6a4f8926c5  gcc/testsuite/gcc.dg/tree-ssa/strncpy-1.c
! 212b9ffca938737df7e139957b6e4a9a  gcc/testsuite/gcc.dg/tree-ssa/strncpy-2.c
  799c82e1222a4c62aa46ce9ac97eeb23  gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c
  02e3b4a393fb4abb6484e71bc0fc7b42  gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-2.c
  588550a4a7303afdd96f366703394208  gcc/testsuite/gcc.dg/tree-ssa/structopt-1.c
  0e618118033f9782ebbe8a23cb9eacf6  gcc/testsuite/gcc.dg/tree-ssa/structopt-2.c
  2e47a04050a1b7d68e0a8930548f34b7  gcc/testsuite/gcc.dg/tree-ssa/structopt-3.c
! 31b4dc87636832e3d3ece44886f56f3a  gcc/testsuite/gcc.dg/tree-ssa/switch-1.c
  1f2e76c6ce20ffbec6194286a7fc5a9e  gcc/testsuite/gcc.dg/tree-ssa/switch-2.c
  9acb472d8d05e4e907f8cc86d1fe9c17  gcc/testsuite/gcc.dg/tree-ssa/switch-3.c
  f473c024639a7ff168ec7c53dc1da31a  gcc/testsuite/gcc.dg/tree-ssa/tailcall-1.c
  167e398c4c929130a179ddf178b8e255  gcc/testsuite/gcc.dg/tree-ssa/tailcall-2.c
  f509f9b6a4b914aa615c3e434856ead1  gcc/testsuite/gcc.dg/tree-ssa/tailcall-3.c
--- 44954,44969 ----
  6bd594a8881ebbdcc9a786df6e80785e  gcc/testsuite/gcc.dg/tree-ssa/strlen-2.c
  bb7e1bd5cca1d575ddd8aece7fd041b1  gcc/testsuite/gcc.dg/tree-ssa/strncat.c
  6e680f949c844191962eff6a4f8926c5  gcc/testsuite/gcc.dg/tree-ssa/strncpy-1.c
! 28977580d0a6fcfdfaf1ae428d891fdf  gcc/testsuite/gcc.dg/tree-ssa/strncpy-2.c
  799c82e1222a4c62aa46ce9ac97eeb23  gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c
  02e3b4a393fb4abb6484e71bc0fc7b42  gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-2.c
  588550a4a7303afdd96f366703394208  gcc/testsuite/gcc.dg/tree-ssa/structopt-1.c
  0e618118033f9782ebbe8a23cb9eacf6  gcc/testsuite/gcc.dg/tree-ssa/structopt-2.c
  2e47a04050a1b7d68e0a8930548f34b7  gcc/testsuite/gcc.dg/tree-ssa/structopt-3.c
! 1eeca1f0f08e0e6dbf560f1f160a8a46  gcc/testsuite/gcc.dg/tree-ssa/switch-1.c
  1f2e76c6ce20ffbec6194286a7fc5a9e  gcc/testsuite/gcc.dg/tree-ssa/switch-2.c
  9acb472d8d05e4e907f8cc86d1fe9c17  gcc/testsuite/gcc.dg/tree-ssa/switch-3.c
+ 71a2830a8fb169fa4d1fb166da7cf5db  gcc/testsuite/gcc.dg/tree-ssa/switch-4.c
  f473c024639a7ff168ec7c53dc1da31a  gcc/testsuite/gcc.dg/tree-ssa/tailcall-1.c
  167e398c4c929130a179ddf178b8e255  gcc/testsuite/gcc.dg/tree-ssa/tailcall-2.c
  f509f9b6a4b914aa615c3e434856ead1  gcc/testsuite/gcc.dg/tree-ssa/tailcall-3.c
*************** ac68e635052c49f6b773cb66ed20a1e8  gcc/te
*** 42000,42009 ****
  58a143ccb257ae48a15b6d6f25b43ef8  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-5.c
  e84424985e065b3a1999b1ea596c8e5c  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-6.c
  6400d5651fcf9e68caeb41223c2fced7  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-7.c
! f89cb55fbea342d0312e08c59c589713  gcc/testsuite/gcc.dg/tree-ssa/tree-ssa.exp
  b529a183f5c763b842cd8fad5900b40f  gcc/testsuite/gcc.dg/tree-ssa/unord.c
  1c4bf657e9d9fe122d42a9f94704b7e2  gcc/testsuite/gcc.dg/tree-ssa/unreachable.c
! 8eba3ac4433d17a221a413cc0ee2c601  gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c
  53ce39a8ef75c800417b0d4f5497d5bd  gcc/testsuite/gcc.dg/tree-ssa/update-cunroll.c
  ba71974763cb74b80bc8550c30525e12  gcc/testsuite/gcc.dg/tree-ssa/update-threading.c
  6235b1f2d30d3e6bb100898f12a6126a  gcc/testsuite/gcc.dg/tree-ssa/update-unroll-1.c
--- 44982,44991 ----
  58a143ccb257ae48a15b6d6f25b43ef8  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-5.c
  e84424985e065b3a1999b1ea596c8e5c  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-6.c
  6400d5651fcf9e68caeb41223c2fced7  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-7.c
! f6c7193c0c79b2e9d8991b5a9c40803b  gcc/testsuite/gcc.dg/tree-ssa/tree-ssa.exp
  b529a183f5c763b842cd8fad5900b40f  gcc/testsuite/gcc.dg/tree-ssa/unord.c
  1c4bf657e9d9fe122d42a9f94704b7e2  gcc/testsuite/gcc.dg/tree-ssa/unreachable.c
! 1e3d2be7b65bc67d143ce4e436bfcdb1  gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c
  53ce39a8ef75c800417b0d4f5497d5bd  gcc/testsuite/gcc.dg/tree-ssa/update-cunroll.c
  ba71974763cb74b80bc8550c30525e12  gcc/testsuite/gcc.dg/tree-ssa/update-threading.c
  6235b1f2d30d3e6bb100898f12a6126a  gcc/testsuite/gcc.dg/tree-ssa/update-unroll-1.c
*************** a07b328f828c5a6dc6814d58e08a5752  gcc/te
*** 42014,42020 ****
  f85c8615f3ea51105c4b0deb990f425b  gcc/testsuite/gcc.dg/tree-ssa/vector-1.c
  2a5f9b88e20858cdca30caa31058acc9  gcc/testsuite/gcc.dg/tree-ssa/vector-2.c
  6ea6a701eaec7e89b5495272360e279d  gcc/testsuite/gcc.dg/tree-ssa/vector-3.c
! af8b3c9e1308f6a194e6c378fb73ac3f  gcc/testsuite/gcc.dg/tree-ssa/vector-4.c
  5075fecf046c0224239ec47fc9cdb321  gcc/testsuite/gcc.dg/tree-ssa/vector-5.c
  a12895e160ece0f553a23b23be8acc70  gcc/testsuite/gcc.dg/tree-ssa/vector-6.c
  ae4c45e8e11a3fe4fc4c58ed7fba53fa  gcc/testsuite/gcc.dg/tree-ssa/vector-7.c
--- 44996,45002 ----
  f85c8615f3ea51105c4b0deb990f425b  gcc/testsuite/gcc.dg/tree-ssa/vector-1.c
  2a5f9b88e20858cdca30caa31058acc9  gcc/testsuite/gcc.dg/tree-ssa/vector-2.c
  6ea6a701eaec7e89b5495272360e279d  gcc/testsuite/gcc.dg/tree-ssa/vector-3.c
! d2a0e5aa7e3c69668d759a4fc33f63ca  gcc/testsuite/gcc.dg/tree-ssa/vector-4.c
  5075fecf046c0224239ec47fc9cdb321  gcc/testsuite/gcc.dg/tree-ssa/vector-5.c
  a12895e160ece0f553a23b23be8acc70  gcc/testsuite/gcc.dg/tree-ssa/vector-6.c
  ae4c45e8e11a3fe4fc4c58ed7fba53fa  gcc/testsuite/gcc.dg/tree-ssa/vector-7.c
*************** e6b187d4532dbfaf8b06b188c9932919  gcc/te
*** 42147,42164 ****
  bb62f82a973334db1c0ebf75b17bcdf8  gcc/testsuite/gcc.dg/tree-ssa/writeonly-3.c
  016029e7b08dbc8fe1d266551df2fdd3  gcc/testsuite/gcc.dg/tree-ssa/writeonly.c
  22eb0b8eeae794a6956326b2c9383fb2  gcc/testsuite/gcc.dg/trunc-1.c
  66723ae098123069493e416708ef5146  gcc/testsuite/gcc.dg/tsan/pr88017.c
  dcc8ff133faffd3fe561dfe431569a07  gcc/testsuite/gcc.dg/tsan/pr88030.c
  de40a1e950c75128048b75517e728603  gcc/testsuite/gcc.dg/tsan/pr90208-1.c
  65ac9eca3bcd49137d096a4f2573e2e2  gcc/testsuite/gcc.dg/tsan/pr90208-2.c
! 4d9b42204d9b8897463c49064f6f8456  gcc/testsuite/gcc.dg/tsan/tsan.exp
  01ec42502b146041504a5ab811e7f3b1  gcc/testsuite/gcc.dg/two-types-1.c
  95ad9b7c791f67ee2f4be1bd942e6718  gcc/testsuite/gcc.dg/two-types-10.c
  ca1b8417ca9c37159dd4270d3263cc19  gcc/testsuite/gcc.dg/two-types-2.c
  27f0e209192769b321903ecb1b1b4f6d  gcc/testsuite/gcc.dg/two-types-3.c
  fd5b49f3fedd25ab27f15b7ded8d3673  gcc/testsuite/gcc.dg/two-types-4.c
  33c16da9f0513ac7cb2bfeba447b5dd4  gcc/testsuite/gcc.dg/two-types-5.c
! ee666c921ea28ec3cc93df70ecc3d508  gcc/testsuite/gcc.dg/two-types-6.c
  4efd24ff7eeea0ccd320377bb6c5dc21  gcc/testsuite/gcc.dg/two-types-7.c
  c3e1ec66a1ba63c23068279c0986a103  gcc/testsuite/gcc.dg/two-types-8.c
  6baa347d522e3cfda6d4ab4f35041b62  gcc/testsuite/gcc.dg/two-types-9.c
--- 45129,45147 ----
  bb62f82a973334db1c0ebf75b17bcdf8  gcc/testsuite/gcc.dg/tree-ssa/writeonly-3.c
  016029e7b08dbc8fe1d266551df2fdd3  gcc/testsuite/gcc.dg/tree-ssa/writeonly.c
  22eb0b8eeae794a6956326b2c9383fb2  gcc/testsuite/gcc.dg/trunc-1.c
+ 0986037c6e0724a89f8308100f3f920f  gcc/testsuite/gcc.dg/tsan/atomic-fence.c
  66723ae098123069493e416708ef5146  gcc/testsuite/gcc.dg/tsan/pr88017.c
  dcc8ff133faffd3fe561dfe431569a07  gcc/testsuite/gcc.dg/tsan/pr88030.c
  de40a1e950c75128048b75517e728603  gcc/testsuite/gcc.dg/tsan/pr90208-1.c
  65ac9eca3bcd49137d096a4f2573e2e2  gcc/testsuite/gcc.dg/tsan/pr90208-2.c
! f25f5ea1c635be16b29cc0a094237534  gcc/testsuite/gcc.dg/tsan/tsan.exp
  01ec42502b146041504a5ab811e7f3b1  gcc/testsuite/gcc.dg/two-types-1.c
  95ad9b7c791f67ee2f4be1bd942e6718  gcc/testsuite/gcc.dg/two-types-10.c
  ca1b8417ca9c37159dd4270d3263cc19  gcc/testsuite/gcc.dg/two-types-2.c
  27f0e209192769b321903ecb1b1b4f6d  gcc/testsuite/gcc.dg/two-types-3.c
  fd5b49f3fedd25ab27f15b7ded8d3673  gcc/testsuite/gcc.dg/two-types-4.c
  33c16da9f0513ac7cb2bfeba447b5dd4  gcc/testsuite/gcc.dg/two-types-5.c
! a05018bcbb7e5b788c426b3a9e2eb90d  gcc/testsuite/gcc.dg/two-types-6.c
  4efd24ff7eeea0ccd320377bb6c5dc21  gcc/testsuite/gcc.dg/two-types-7.c
  c3e1ec66a1ba63c23068279c0986a103  gcc/testsuite/gcc.dg/two-types-8.c
  6baa347d522e3cfda6d4ab4f35041b62  gcc/testsuite/gcc.dg/two-types-9.c
*************** c3e1ec66a1ba63c23068279c0986a103  gcc/te
*** 42171,42182 ****
  dc0315662dbe746214f4f1687a58f5e5  gcc/testsuite/gcc.dg/typedef-var-2.c
  44e859486a96c5bde24ac67ae73472fe  gcc/testsuite/gcc.dg/typename-vla-1.c
  0347a7dc32b8dfb279bdfe3b50e84008  gcc/testsuite/gcc.dg/typeof-1.c
! 1e31438a8ee40eacdd0e45a0a270d857  gcc/testsuite/gcc.dg/typeof-2.c
  38f4467be27d0432adea9abcaf9cc366  gcc/testsuite/gcc.dg/typespec-1.c
  b9d67dbc50419a82b76d70029936f329  gcc/testsuite/gcc.dg/ubsan/bounds-1.c
  8ef707e5f4c734c1b8be85269cd93d06  gcc/testsuite/gcc.dg/ubsan/bounds-2.c
  49c14bdc09fb274e14fd4f886b5e6fb9  gcc/testsuite/gcc.dg/ubsan/bounds-3.c
! 7740693c7bb19d8fc6ab727a6ffbb65c  gcc/testsuite/gcc.dg/ubsan/c-shift-1.c
  577cc36a854722ee2c73da1a6a6e2322  gcc/testsuite/gcc.dg/ubsan/c-shift-2.c
  2dbfddf9f012a91eb07b3c83841941a1  gcc/testsuite/gcc.dg/ubsan/c99-shift-1.c
  a8a75b36b3cbde1b2efc3f3da0ae398d  gcc/testsuite/gcc.dg/ubsan/c99-shift-2.c
--- 45154,45165 ----
  dc0315662dbe746214f4f1687a58f5e5  gcc/testsuite/gcc.dg/typedef-var-2.c
  44e859486a96c5bde24ac67ae73472fe  gcc/testsuite/gcc.dg/typename-vla-1.c
  0347a7dc32b8dfb279bdfe3b50e84008  gcc/testsuite/gcc.dg/typeof-1.c
! 2f68d2aabae53b45ecb33173c3613128  gcc/testsuite/gcc.dg/typeof-2.c
  38f4467be27d0432adea9abcaf9cc366  gcc/testsuite/gcc.dg/typespec-1.c
  b9d67dbc50419a82b76d70029936f329  gcc/testsuite/gcc.dg/ubsan/bounds-1.c
  8ef707e5f4c734c1b8be85269cd93d06  gcc/testsuite/gcc.dg/ubsan/bounds-2.c
  49c14bdc09fb274e14fd4f886b5e6fb9  gcc/testsuite/gcc.dg/ubsan/bounds-3.c
! ba6ee052ca72deddc1d08a3c06f509de  gcc/testsuite/gcc.dg/ubsan/c-shift-1.c
  577cc36a854722ee2c73da1a6a6e2322  gcc/testsuite/gcc.dg/ubsan/c-shift-2.c
  2dbfddf9f012a91eb07b3c83841941a1  gcc/testsuite/gcc.dg/ubsan/c99-shift-1.c
  a8a75b36b3cbde1b2efc3f3da0ae398d  gcc/testsuite/gcc.dg/ubsan/c99-shift-2.c
*************** bea7f326889c0a8fbd1c274d297acf07  gcc/te
*** 42206,42219 ****
  6dd5a7b8f1dd237a95a0f42766ee64d9  gcc/testsuite/gcc.dg/ubsan/pr81162.c
  2fb0588afada15c7de7ba10279ac119b  gcc/testsuite/gcc.dg/ubsan/pr81223.c
  bb206afd27601853bf04c68fdf6d7763  gcc/testsuite/gcc.dg/ubsan/pr81505.c
! a119e08711cd54225451b769856ab0f4  gcc/testsuite/gcc.dg/ubsan/pr81981.c
  a03c3f43eab7504cac64b70f59c4026c  gcc/testsuite/gcc.dg/ubsan/pr82498.c
  e95ed112f0ea45770ff240c4770cd2c7  gcc/testsuite/gcc.dg/ubsan/pr83014.c
  57be3b86af6986d32a0c953f61260905  gcc/testsuite/gcc.dg/ubsan/pr88234.c
! a5c9ec0d9db723760fffdcb855bb033b  gcc/testsuite/gcc.dg/ubsan/pr89284.c
  51557943b6a5571078dca811d526d7d8  gcc/testsuite/gcc.dg/ubsan/pr94423.c
  0f09425e087253b3e4d9360b845cfa01  gcc/testsuite/gcc.dg/ubsan/pr95810.c
! b06cb12a8a608ea1c7a805a7101b70dd  gcc/testsuite/gcc.dg/ubsan/ubsan.exp
  ff1993364d91d08b560ce3b84092e86d  gcc/testsuite/gcc.dg/ucnid-1-utf8.c
  b749062a1214fdf6ba947d30bdf90f30  gcc/testsuite/gcc.dg/ucnid-1.c
  d1ef7efe2db207bd7f1420dda8d447eb  gcc/testsuite/gcc.dg/ucnid-10-utf8.c
--- 45189,45202 ----
  6dd5a7b8f1dd237a95a0f42766ee64d9  gcc/testsuite/gcc.dg/ubsan/pr81162.c
  2fb0588afada15c7de7ba10279ac119b  gcc/testsuite/gcc.dg/ubsan/pr81223.c
  bb206afd27601853bf04c68fdf6d7763  gcc/testsuite/gcc.dg/ubsan/pr81505.c
! d51a95178377558ec5a8c1ee1a2d20bb  gcc/testsuite/gcc.dg/ubsan/pr81981.c
  a03c3f43eab7504cac64b70f59c4026c  gcc/testsuite/gcc.dg/ubsan/pr82498.c
  e95ed112f0ea45770ff240c4770cd2c7  gcc/testsuite/gcc.dg/ubsan/pr83014.c
  57be3b86af6986d32a0c953f61260905  gcc/testsuite/gcc.dg/ubsan/pr88234.c
! a6de1d906f46c35c2202d196fcbdba1a  gcc/testsuite/gcc.dg/ubsan/pr89284.c
  51557943b6a5571078dca811d526d7d8  gcc/testsuite/gcc.dg/ubsan/pr94423.c
  0f09425e087253b3e4d9360b845cfa01  gcc/testsuite/gcc.dg/ubsan/pr95810.c
! 375130149a7728807995800a209290a8  gcc/testsuite/gcc.dg/ubsan/ubsan.exp
  ff1993364d91d08b560ce3b84092e86d  gcc/testsuite/gcc.dg/ucnid-1-utf8.c
  b749062a1214fdf6ba947d30bdf90f30  gcc/testsuite/gcc.dg/ucnid-1.c
  d1ef7efe2db207bd7f1420dda8d447eb  gcc/testsuite/gcc.dg/ucnid-10-utf8.c
*************** bf3176e1016b72dff9f974a5eb66c4a5  gcc/te
*** 42245,42251 ****
  471658e44a68f2d8e4b42a6b0a63529e  gcc/testsuite/gcc.dg/ucnid-9-utf8.c
  84391393ab31662ed478f210dc36a12b  gcc/testsuite/gcc.dg/ucnid-9.c
  79a7a8c0948ae5bcfa1991de6867e0c1  gcc/testsuite/gcc.dg/unaligned-1.c
! 6e23ffe8c25da4741f010ee5751b90b6  gcc/testsuite/gcc.dg/unclosed-init.c
  7ae6ec0a00cfc8c6623bf6575c1ec67b  gcc/testsuite/gcc.dg/uninit-1-O0.c
  f0a8a0b26965879e40a88ebccf31030c  gcc/testsuite/gcc.dg/uninit-1.c
  d948217bdcbf04e6be3c8c997af053f7  gcc/testsuite/gcc.dg/uninit-10-O0.c
--- 45228,45234 ----
  471658e44a68f2d8e4b42a6b0a63529e  gcc/testsuite/gcc.dg/ucnid-9-utf8.c
  84391393ab31662ed478f210dc36a12b  gcc/testsuite/gcc.dg/ucnid-9.c
  79a7a8c0948ae5bcfa1991de6867e0c1  gcc/testsuite/gcc.dg/unaligned-1.c
! 29b54033d99c2ea24dcf332874505ef9  gcc/testsuite/gcc.dg/unclosed-init.c
  7ae6ec0a00cfc8c6623bf6575c1ec67b  gcc/testsuite/gcc.dg/uninit-1-O0.c
  f0a8a0b26965879e40a88ebccf31030c  gcc/testsuite/gcc.dg/uninit-1.c
  d948217bdcbf04e6be3c8c997af053f7  gcc/testsuite/gcc.dg/uninit-10-O0.c
*************** c611b4ad3ec4bad367027a6ab1ef6505  gcc/te
*** 42259,42265 ****
  0708d0de6c003704695f4b75ba9ffc23  gcc/testsuite/gcc.dg/uninit-14-O0.c
  7eea6f3931a5572af13879f31560102e  gcc/testsuite/gcc.dg/uninit-14.c
  96bb2f99c0c1970915dc5fe8b30157e8  gcc/testsuite/gcc.dg/uninit-15-O0.c
! bfe7e233aad44594cb4ba50195220b40  gcc/testsuite/gcc.dg/uninit-15.c
  92cf714efeaed3ffe0cd867508cfe505  gcc/testsuite/gcc.dg/uninit-16.c
  c47999a5663fbe110a3d4134c92050c2  gcc/testsuite/gcc.dg/uninit-17-O0.c
  728401b250e40769899aeaa5eb3c4f2e  gcc/testsuite/gcc.dg/uninit-17.c
--- 45242,45248 ----
  0708d0de6c003704695f4b75ba9ffc23  gcc/testsuite/gcc.dg/uninit-14-O0.c
  7eea6f3931a5572af13879f31560102e  gcc/testsuite/gcc.dg/uninit-14.c
  96bb2f99c0c1970915dc5fe8b30157e8  gcc/testsuite/gcc.dg/uninit-15-O0.c
! bf435dd28dce06b56fc5d3c469516013  gcc/testsuite/gcc.dg/uninit-15.c
  92cf714efeaed3ffe0cd867508cfe505  gcc/testsuite/gcc.dg/uninit-16.c
  c47999a5663fbe110a3d4134c92050c2  gcc/testsuite/gcc.dg/uninit-17-O0.c
  728401b250e40769899aeaa5eb3c4f2e  gcc/testsuite/gcc.dg/uninit-17.c
*************** c922876a41270e2b7d520afcadf98137  gcc/te
*** 42282,42289 ****
--- 45265,45280 ----
  9f0fb0245ee08bf0f10f3a180e2006cd  gcc/testsuite/gcc.dg/uninit-3.c
  f05bb477355a674749c39b98ee57189d  gcc/testsuite/gcc.dg/uninit-30-gimple.c
  bac9a2766c0ebbc5a567c84b402b7416  gcc/testsuite/gcc.dg/uninit-31-gimple.c
+ 37a02a92dfc7819552b85c44b4dd158c  gcc/testsuite/gcc.dg/uninit-32.c
+ d75b083976771cb9c38cd60cc5154ac9  gcc/testsuite/gcc.dg/uninit-33.c
+ fccc7811a06d6d5da7f7ed04f7c32a7a  gcc/testsuite/gcc.dg/uninit-34.c
+ 81559462e484e756d6f876ab8caa7c8c  gcc/testsuite/gcc.dg/uninit-36.c
+ 5113c8378ecdf90b9b572d1e46700af1  gcc/testsuite/gcc.dg/uninit-37.c
+ eace99174fd4ba1d51709b4a633a8f6c  gcc/testsuite/gcc.dg/uninit-38.c
+ df2b8c972e35e028a6dc7455d0470b93  gcc/testsuite/gcc.dg/uninit-39.c
  d402693501768659493eedf82719cfb1  gcc/testsuite/gcc.dg/uninit-4-O0.c
  e36b0a4b14063baf6381118a03371e4a  gcc/testsuite/gcc.dg/uninit-4.c
+ 74069c6468457eff8abecfa971b54de2  gcc/testsuite/gcc.dg/uninit-40.c
  d65c9c40149db2e0b97a0f8764da0100  gcc/testsuite/gcc.dg/uninit-5-O0.c
  22b2aa0a5ee17dd1d15ad96e2b2e69ff  gcc/testsuite/gcc.dg/uninit-5.c
  a3d5c35b0bb42b2acb6a9b728cd4de1a  gcc/testsuite/gcc.dg/uninit-6-O0.c
*************** fd99724547c38596c196ff0a3bb859a7  gcc/te
*** 42296,42326 ****
  16629fbf66db8d64116183c2cffefbb4  gcc/testsuite/gcc.dg/uninit-A.c
  163d793d1ac9395f05f7b2297a272248  gcc/testsuite/gcc.dg/uninit-B-2.c
  f7e5c194754cef44d76c931153b5e6ad  gcc/testsuite/gcc.dg/uninit-B-O0-2.c
! b9d6fd61c56ea96cb1f8c400dd4c7200  gcc/testsuite/gcc.dg/uninit-B-O0.c
  035c0b21f57a4acf41fee2153aa65fe7  gcc/testsuite/gcc.dg/uninit-B.c
  4f6181627176dd5729890b1bbcca6667  gcc/testsuite/gcc.dg/uninit-C-O0.c
  cb38da50a5c4228ccc9424c776452cb1  gcc/testsuite/gcc.dg/uninit-C.c
  c9e10adb185a3bbf40bb8e18c0127132  gcc/testsuite/gcc.dg/uninit-H-O0.c
  eb3da821b8325355aae91cb8e079d6a4  gcc/testsuite/gcc.dg/uninit-H.c
! 6520fa124ef7e7b6dca823a141ba62f7  gcc/testsuite/gcc.dg/uninit-I-O0.c
  988c2fc57e3d496a9d761ee0eb2841e4  gcc/testsuite/gcc.dg/uninit-I.c
  58c1fce493b489aff04e0b2f66635e90  gcc/testsuite/gcc.dg/uninit-pr19430-2.c
! ef1f77567b5ca1372f7ec0022ec54143  gcc/testsuite/gcc.dg/uninit-pr19430-O0.c
! 17d8b19d3021802ff49f4c8261932a80  gcc/testsuite/gcc.dg/uninit-pr19430.c
  c7de5c9f2e0182e483bc9b11fc2d1f3d  gcc/testsuite/gcc.dg/uninit-pr20644-O0.c
  bd8e8e7214f9f23684fcce6542ba21a2  gcc/testsuite/gcc.dg/uninit-pr20644.c
  fb7fb911814f67c58846323d51173f98  gcc/testsuite/gcc.dg/uninit-pr40943.c
  4eb2433be8945ebfe44eb7432a504a5d  gcc/testsuite/gcc.dg/uninit-pr50476.c
  1734c6a57c50120395340cb541c58c88  gcc/testsuite/gcc.dg/uninit-pr61409.c
  1c8d27f96b4cf1013a7cd0fae3e7368a  gcc/testsuite/gcc.dg/uninit-pr65686.c
  e821794f64a67239864ede698d50f620  gcc/testsuite/gcc.dg/uninit-pr78295.c
  e5914ec194abe834db8656483a92fcdc  gcc/testsuite/gcc.dg/uninit-pr78548.c
  e37d87bcbc2425be943ff59a8baa223d  gcc/testsuite/gcc.dg/uninit-pr81782.c
  277c9911e147065687afe2d561f10430  gcc/testsuite/gcc.dg/uninit-pr81897-2.c
  2cff9b0e356693e6320ee7ba4d4f02c2  gcc/testsuite/gcc.dg/uninit-pr81897.c
  bc12979aeecbec0cc9fe92fcb51c30b9  gcc/testsuite/gcc.dg/uninit-pr89296.c
  0e268375e3687661f7e4d83a6700861a  gcc/testsuite/gcc.dg/uninit-pr90394-1-gimple.c
  ec22e39e2b160e6444e03b5dcacc93f3  gcc/testsuite/gcc.dg/uninit-pr90394.c
  2e2b2ca64d1c3db87c75755a21b4bc06  gcc/testsuite/gcc.dg/uninit-pred-2_a.c
  7d67cd7432d67994c6642a61e0020d9e  gcc/testsuite/gcc.dg/uninit-pred-2_b.c
  dc20b95e0c82e7593d7e562b3b1e5aaf  gcc/testsuite/gcc.dg/uninit-pred-2_c.c
--- 45287,45328 ----
  16629fbf66db8d64116183c2cffefbb4  gcc/testsuite/gcc.dg/uninit-A.c
  163d793d1ac9395f05f7b2297a272248  gcc/testsuite/gcc.dg/uninit-B-2.c
  f7e5c194754cef44d76c931153b5e6ad  gcc/testsuite/gcc.dg/uninit-B-O0-2.c
! 58d607e3f3aa5149fbdcf0290d056ebc  gcc/testsuite/gcc.dg/uninit-B-O0.c
  035c0b21f57a4acf41fee2153aa65fe7  gcc/testsuite/gcc.dg/uninit-B.c
  4f6181627176dd5729890b1bbcca6667  gcc/testsuite/gcc.dg/uninit-C-O0.c
  cb38da50a5c4228ccc9424c776452cb1  gcc/testsuite/gcc.dg/uninit-C.c
  c9e10adb185a3bbf40bb8e18c0127132  gcc/testsuite/gcc.dg/uninit-H-O0.c
  eb3da821b8325355aae91cb8e079d6a4  gcc/testsuite/gcc.dg/uninit-H.c
! 9d1bceafd31eb10b545bfa6239206c15  gcc/testsuite/gcc.dg/uninit-I-O0.c
  988c2fc57e3d496a9d761ee0eb2841e4  gcc/testsuite/gcc.dg/uninit-I.c
  58c1fce493b489aff04e0b2f66635e90  gcc/testsuite/gcc.dg/uninit-pr19430-2.c
! 79f653fd913dfd35f07e5b3890168e74  gcc/testsuite/gcc.dg/uninit-pr19430-O0.c
! 0ba39e72d317abfcfd3703541b7f8a41  gcc/testsuite/gcc.dg/uninit-pr19430.c
  c7de5c9f2e0182e483bc9b11fc2d1f3d  gcc/testsuite/gcc.dg/uninit-pr20644-O0.c
  bd8e8e7214f9f23684fcce6542ba21a2  gcc/testsuite/gcc.dg/uninit-pr20644.c
  fb7fb911814f67c58846323d51173f98  gcc/testsuite/gcc.dg/uninit-pr40943.c
+ cc87ba9b6c639bd8ff150bf229696aaf  gcc/testsuite/gcc.dg/uninit-pr44547.c
  4eb2433be8945ebfe44eb7432a504a5d  gcc/testsuite/gcc.dg/uninit-pr50476.c
+ f3d0c9f5e1f93ea3a3c13cc79f4d5def  gcc/testsuite/gcc.dg/uninit-pr55060.c
+ 45d1b6aca484aefb1c4325023b2ecc5b  gcc/testsuite/gcc.dg/uninit-pr59970.c
+ 9f5dec745b54d5bbec8d0bb7bea4010d  gcc/testsuite/gcc.dg/uninit-pr61112.c
  1734c6a57c50120395340cb541c58c88  gcc/testsuite/gcc.dg/uninit-pr61409.c
+ 785af39d8c329bcc7df0ae094695f47b  gcc/testsuite/gcc.dg/uninit-pr61677.c
+ 1f4acfdc63b9f419aa5b8754b0a641e1  gcc/testsuite/gcc.dg/uninit-pr61869.c
+ 6ba1683e472556b17b3c225408b3fc21  gcc/testsuite/gcc.dg/uninit-pr65182.c
  1c8d27f96b4cf1013a7cd0fae3e7368a  gcc/testsuite/gcc.dg/uninit-pr65686.c
  e821794f64a67239864ede698d50f620  gcc/testsuite/gcc.dg/uninit-pr78295.c
  e5914ec194abe834db8656483a92fcdc  gcc/testsuite/gcc.dg/uninit-pr78548.c
  e37d87bcbc2425be943ff59a8baa223d  gcc/testsuite/gcc.dg/uninit-pr81782.c
  277c9911e147065687afe2d561f10430  gcc/testsuite/gcc.dg/uninit-pr81897-2.c
  2cff9b0e356693e6320ee7ba4d4f02c2  gcc/testsuite/gcc.dg/uninit-pr81897.c
+ 91f18e367a2661e91825b0437abc81c3  gcc/testsuite/gcc.dg/uninit-pr89230-1.c
+ 494ab47ab3b233786bbb3b4974773419  gcc/testsuite/gcc.dg/uninit-pr89230-2.c
  bc12979aeecbec0cc9fe92fcb51c30b9  gcc/testsuite/gcc.dg/uninit-pr89296.c
  0e268375e3687661f7e4d83a6700861a  gcc/testsuite/gcc.dg/uninit-pr90394-1-gimple.c
  ec22e39e2b160e6444e03b5dcacc93f3  gcc/testsuite/gcc.dg/uninit-pr90394.c
+ 2e37ae395e46a8e8e62921557b5db451  gcc/testsuite/gcc.dg/uninit-pr95136.c
+ a6f46cba23241901d7e809f123ba1374  gcc/testsuite/gcc.dg/uninit-pr98578.c
  2e2b2ca64d1c3db87c75755a21b4bc06  gcc/testsuite/gcc.dg/uninit-pred-2_a.c
  7d67cd7432d67994c6642a61e0020d9e  gcc/testsuite/gcc.dg/uninit-pred-2_b.c
  dc20b95e0c82e7593d7e562b3b1e5aaf  gcc/testsuite/gcc.dg/uninit-pred-2_c.c
*************** c6ae2df6a353c5ac288fcafb37edc450  gcc/te
*** 42371,42377 ****
  77dbefe7ee6b1de71f451796787f1532  gcc/testsuite/gcc.dg/unroll-6.c
  a034cbd359de956aef07a36500a255ea  gcc/testsuite/gcc.dg/unroll-7.c
  204b9be344d219dfaab5a48887ad9516  gcc/testsuite/gcc.dg/unroll-8.c
! d3807c9220842bec164874979c78e9a3  gcc/testsuite/gcc.dg/unroll-and-jam.c
  99b212e0df5c61c48b3f2593a23414cc  gcc/testsuite/gcc.dg/unsigned-long-compare.c
  aa7c265797a6b0a2b548e25a531baf92  gcc/testsuite/gcc.dg/unused-1.c
  8ba0a7c993176dd2077bdae924adddc8  gcc/testsuite/gcc.dg/unused-2.c
--- 45373,45379 ----
  77dbefe7ee6b1de71f451796787f1532  gcc/testsuite/gcc.dg/unroll-6.c
  a034cbd359de956aef07a36500a255ea  gcc/testsuite/gcc.dg/unroll-7.c
  204b9be344d219dfaab5a48887ad9516  gcc/testsuite/gcc.dg/unroll-8.c
! 47ae2c5d29560d4618b97c02b8cb064d  gcc/testsuite/gcc.dg/unroll-and-jam.c
  99b212e0df5c61c48b3f2593a23414cc  gcc/testsuite/gcc.dg/unsigned-long-compare.c
  aa7c265797a6b0a2b548e25a531baf92  gcc/testsuite/gcc.dg/unused-1.c
  8ba0a7c993176dd2077bdae924adddc8  gcc/testsuite/gcc.dg/unused-2.c
*************** e3db8ed02ca0ecad28455ac3f0b93696  gcc/te
*** 42384,42389 ****
--- 45386,45392 ----
  b9094e47fb1bcf5228d5a172f181d34c  gcc/testsuite/gcc.dg/unused-7.c
  a356a547d4f122d4cbb05a15d0ae98a9  gcc/testsuite/gcc.dg/unused-8a.c
  615e1e240a379f560bb499664764aa19  gcc/testsuite/gcc.dg/unused-8b.c
+ 9a3cc991317dbcc7a05600e051eee3a6  gcc/testsuite/gcc.dg/unused-9.c
  2d4474648183006b06c5f9854456f93f  gcc/testsuite/gcc.dg/unused-variable-1.c
  a2064d0ab63f355ec70a8ba78cc0aad3  gcc/testsuite/gcc.dg/unused-variable-2.c
  24b35e461fad54da15489dc416f4b3e6  gcc/testsuite/gcc.dg/unused-variable-3.c
*************** f011a571e18d4d7047742771716bed58  gcc/te
*** 42418,42424 ****
  f8641f484320b6413dce61ad27e48f86  gcc/testsuite/gcc.dg/va-arg-pack-len-2.c
  8aaa954be03aa7b92dd9ba48059b992e  gcc/testsuite/gcc.dg/var-expand1.c
  c89f320f0f14a7fa8638f6b38a20ed26  gcc/testsuite/gcc.dg/var-expand2.c
! 265fc2402798cfe18487e23bd3ec0465  gcc/testsuite/gcc.dg/var-expand3.c
  7f29aa4616378fb72f7fab614907128d  gcc/testsuite/gcc.dg/varpool-1.c
  d8ef65c736eef2f4a9994c6a87ebda95  gcc/testsuite/gcc.dg/vec-andxor1.c
  f15a087d2d1b7f1cc41a5b0473154ebc  gcc/testsuite/gcc.dg/vect/O-pr46167.c
--- 45421,45427 ----
  f8641f484320b6413dce61ad27e48f86  gcc/testsuite/gcc.dg/va-arg-pack-len-2.c
  8aaa954be03aa7b92dd9ba48059b992e  gcc/testsuite/gcc.dg/var-expand1.c
  c89f320f0f14a7fa8638f6b38a20ed26  gcc/testsuite/gcc.dg/var-expand2.c
! 97f4fb5030de62782435a2d1279c4e81  gcc/testsuite/gcc.dg/var-expand3.c
  7f29aa4616378fb72f7fab614907128d  gcc/testsuite/gcc.dg/varpool-1.c
  d8ef65c736eef2f4a9994c6a87ebda95  gcc/testsuite/gcc.dg/vec-andxor1.c
  f15a087d2d1b7f1cc41a5b0473154ebc  gcc/testsuite/gcc.dg/vect/O-pr46167.c
*************** f7665d7d0aa1b90766acc485626018a6  gcc/te
*** 42438,42524 ****
  3aceef80872b677e6b60251bfe10b13c  gcc/testsuite/gcc.dg/vect/O3-vect-pr34223.c
  013f85cb6d747ae2935ef1404e22d4d8  gcc/testsuite/gcc.dg/vect/O3-vect-pr61917.c
  b41c90298adcb4e30a8795376d8dc280  gcc/testsuite/gcc.dg/vect/Os-vect-95.c
! a941d1cc7e1bcc3522ff9cc071b3533b  gcc/testsuite/gcc.dg/vect/aligned-section-anchors-nest-1.c
  9f9afc3ac1c180057b7c583bd065c471  gcc/testsuite/gcc.dg/vect/aligned-section-anchors-vect-70.c
  6f596ecff4c2737731de5f27856f1a79  gcc/testsuite/gcc.dg/vect/aligned-section-anchors-vect-71.c
  fc3f9485da33ab149e612932c91c2cb1  gcc/testsuite/gcc.dg/vect/aligned-section-anchors-vect-72.c
! dc3c9dbb9a161c6b8d32669b6c953ed0  gcc/testsuite/gcc.dg/vect/bb-slp-1.c
! 98f5844d875e9c55cef0b0a3bd0ed9e7  gcc/testsuite/gcc.dg/vect/bb-slp-10.c
! 587ed5cf74dfd35ef871a089f6667cbb  gcc/testsuite/gcc.dg/vect/bb-slp-11.c
! 5902b803ce93629202846373e23a12cf  gcc/testsuite/gcc.dg/vect/bb-slp-13.c
! 70d29460d337b301f15bbecc8367cc6e  gcc/testsuite/gcc.dg/vect/bb-slp-14.c
! e0455554168cf3295ae26b5fb0fb7da7  gcc/testsuite/gcc.dg/vect/bb-slp-15.c
! 011b59badafc821e3a40ceb95009ac9b  gcc/testsuite/gcc.dg/vect/bb-slp-16.c
! 2389f51f0da3d6aff7f055941b3e4e2a  gcc/testsuite/gcc.dg/vect/bb-slp-17.c
! 69beba6b78f10d9ff038ef0495797b19  gcc/testsuite/gcc.dg/vect/bb-slp-18.c
! a8e945235fc39bd948bb92818a1f5a28  gcc/testsuite/gcc.dg/vect/bb-slp-19.c
! a099bfe58b0d62658078fc4fd7ffe4d2  gcc/testsuite/gcc.dg/vect/bb-slp-2.c
! df533136bf15423a719993ba26a20ddf  gcc/testsuite/gcc.dg/vect/bb-slp-20.c
! 81aa0811f1b77581a83e26acb6b55827  gcc/testsuite/gcc.dg/vect/bb-slp-21.c
! 43fdecc9af9bb78f894100d48368b99d  gcc/testsuite/gcc.dg/vect/bb-slp-22.c
! 5d3dbdc30150a9979ea8980d81fc76d8  gcc/testsuite/gcc.dg/vect/bb-slp-23.c
! 5a6b6adf746d252020280f90f9e3a884  gcc/testsuite/gcc.dg/vect/bb-slp-24.c
! 0ea667bb24b2353e5ffac10d5ba87fae  gcc/testsuite/gcc.dg/vect/bb-slp-25.c
! 59bac952b93b264fc36d60aa292c06ee  gcc/testsuite/gcc.dg/vect/bb-slp-26.c
! 1e79af8b70cf8b30ea1ef5a4c70a834d  gcc/testsuite/gcc.dg/vect/bb-slp-27.c
! 0f1167ea7ff9c16cdeff4ab0b5ac558f  gcc/testsuite/gcc.dg/vect/bb-slp-28.c
! 4c102576eee9009d5b4d26ec04f57cfb  gcc/testsuite/gcc.dg/vect/bb-slp-29.c
! 4c60ceb5dec3d62cbae8bcdc194335b4  gcc/testsuite/gcc.dg/vect/bb-slp-3.c
! af9e3f0acc455aed8b3ceaf148d506c1  gcc/testsuite/gcc.dg/vect/bb-slp-30.c
! 93302e4bbeedec8fee36029f192a8969  gcc/testsuite/gcc.dg/vect/bb-slp-31.c
! be11ea68954f042f06f9a019f19694b6  gcc/testsuite/gcc.dg/vect/bb-slp-32.c
  4693259f8c6e75589b77e35e3c005d09  gcc/testsuite/gcc.dg/vect/bb-slp-33.c
! 2bcd17d8cdba9dcd2f5b37d3d01032a2  gcc/testsuite/gcc.dg/vect/bb-slp-34.c
! cdad109b688ef214c4f2f4cbb4e066ad  gcc/testsuite/gcc.dg/vect/bb-slp-35.c
! 68307e788b20723cb3709eee6275a939  gcc/testsuite/gcc.dg/vect/bb-slp-36.c
  d9b82f24ec441bd4ed9946db9792733c  gcc/testsuite/gcc.dg/vect/bb-slp-37.c
! 3c5b907a265bf3b4da3c4d7682702358  gcc/testsuite/gcc.dg/vect/bb-slp-38.c
  190410e1fef8da664b76927524f2d9c4  gcc/testsuite/gcc.dg/vect/bb-slp-39.c
! 82653ace4c5d1a858bfa5e67e842b5e8  gcc/testsuite/gcc.dg/vect/bb-slp-4.c
  094d2618b84be18ada044275f13cbf29  gcc/testsuite/gcc.dg/vect/bb-slp-40.c
! 233409ff2ffaa4867bc9a13b789ae958  gcc/testsuite/gcc.dg/vect/bb-slp-41.c
  d94b6b6501276fc53adc9a3e81024111  gcc/testsuite/gcc.dg/vect/bb-slp-42.c
  918a1435861e771b3a59353884b4c985  gcc/testsuite/gcc.dg/vect/bb-slp-43.c
  c03e6ccbd759364f47f750471f0748c5  gcc/testsuite/gcc.dg/vect/bb-slp-49.c
! 95fc3032911e09be9655230d030d8bee  gcc/testsuite/gcc.dg/vect/bb-slp-5.c
! 4847eed7c122faa054777662fc7da99a  gcc/testsuite/gcc.dg/vect/bb-slp-6.c
! aaa5fdfb7b164a6d2d07a6f038e66367  gcc/testsuite/gcc.dg/vect/bb-slp-7.c
! 80547b11f89f0857c15843685be4912d  gcc/testsuite/gcc.dg/vect/bb-slp-8.c
! 00e37039e487d03eca3066aaf3c7d310  gcc/testsuite/gcc.dg/vect/bb-slp-8a.c
! 91f6ed747a887410b73726d9d5388276  gcc/testsuite/gcc.dg/vect/bb-slp-8b.c
! 16269b788194ef379d67570b095dc5f5  gcc/testsuite/gcc.dg/vect/bb-slp-9.c
  8809855af1ea14173db1668e1ebb3c33  gcc/testsuite/gcc.dg/vect/bb-slp-bool-1.c
  d50b6198d0ab7f141d0ca1fe2c25c55e  gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c
! b6de0903d02cd714b6dda4b1efb01d9f  gcc/testsuite/gcc.dg/vect/bb-slp-div-1.c
! a6b113f249ceff0090fad5cd61b2194a  gcc/testsuite/gcc.dg/vect/bb-slp-div-2.c
! 8a231ba22f54b743b4092eddfc183412  gcc/testsuite/gcc.dg/vect/bb-slp-over-widen-1.c
! d7c6a942030327a12a33a5bbecb57ed7  gcc/testsuite/gcc.dg/vect/bb-slp-over-widen-2.c
  c311453bfa9e07fb29dd6981eaaf350d  gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c
! f746ae3bf44586fbe281fa0651586662  gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c
! 1c108632fc2e34b4ce1a2d9b85dd5fb7  gcc/testsuite/gcc.dg/vect/bb-slp-pow-1.c
! 04292ad78b5641a8b52e2d45ff548335  gcc/testsuite/gcc.dg/vect/bb-slp-pr58135.c
! 563d60a4588109c2dc05dd6a574d13ca  gcc/testsuite/gcc.dg/vect/bb-slp-pr65935.c
! 7eef90ed52f18c595b9c3c85d806fe09  gcc/testsuite/gcc.dg/vect/bb-slp-pr68892.c
! ee79e5cf003f7b1870e45df72d46304b  gcc/testsuite/gcc.dg/vect/bb-slp-pr69907.c
! 4381bb16caa660fbf909762342d1ebaf  gcc/testsuite/gcc.dg/vect/bb-slp-pr78205.c
  7bde18f16db8ba76291d8ca502888f3e  gcc/testsuite/gcc.dg/vect/bb-slp-pr80705.c
! 3aa54f31d98f9737aacca24580beae90  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-1.c
! cc1dd9969065b3ef679c1331eea3b974  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-2.c
! ba61bac9283801e9b73dee15e5669f8a  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-3.c
! 0a3a3c00f359e5410f5697d124bdd5ca  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-4.c
! a689d9ca07b59620e68b3c142ebeb12e  gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c
  3ac66e7d12525b6746af51507c570d90  gcc/testsuite/gcc.dg/vect/bb-slp-pr92596.c
! 5428e4471ece92d28564b1d30192ed87  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-1.c
! 892d0604340291572dec6ee6deee1f79  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-2.c
! ac97f8715430e9981d35fdaf30359bcb  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c
  05fc220f1ddbdb4d47d859b5d07869e2  gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-fast-math-vect-pr29925.c
  de7dd1e584604b7bdea2dc13b43ddc14  gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-31.c
  f460536507001609ab3aa91df1c958aa  gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-33.c
  e8ac43ab8cf8cbf7bfd8167cf04e3b0e  gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-68.c
  460815bb26ae1f6c220e23de56a2d3fd  gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-reduc-1char.c
! 7ec2b24728f16089c4ac74c48f634db2  gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp
  a9cb28b1e884170acbaee9d79bf34ff8  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c
! 77e9d73da790b2dcc18bc0f22f07f555  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c
  d25dc6b156dd43d1cf5e1224a3abb151  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-fast-math-vect-pr29925.c
  bd8562e8bd66700ee1114f70cbcff47e  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-pr37194.c
  2926d53e5e3391b93ff4c3fdf9b102c4  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c
--- 45441,45628 ----
  3aceef80872b677e6b60251bfe10b13c  gcc/testsuite/gcc.dg/vect/O3-vect-pr34223.c
  013f85cb6d747ae2935ef1404e22d4d8  gcc/testsuite/gcc.dg/vect/O3-vect-pr61917.c
  b41c90298adcb4e30a8795376d8dc280  gcc/testsuite/gcc.dg/vect/Os-vect-95.c
! 466c6438cbf21bd48800a6bd2bce72af  gcc/testsuite/gcc.dg/vect/aligned-section-anchors-nest-1.c
  9f9afc3ac1c180057b7c583bd065c471  gcc/testsuite/gcc.dg/vect/aligned-section-anchors-vect-70.c
  6f596ecff4c2737731de5f27856f1a79  gcc/testsuite/gcc.dg/vect/aligned-section-anchors-vect-71.c
  fc3f9485da33ab149e612932c91c2cb1  gcc/testsuite/gcc.dg/vect/aligned-section-anchors-vect-72.c
! 277952ae0b5533ed98fe1d721f4b2a3b  gcc/testsuite/gcc.dg/vect/bb-slp-1.c
! 3aba66ae84b78b9d88c641884c46c32a  gcc/testsuite/gcc.dg/vect/bb-slp-10.c
! 758cea355af7aa7ee4207f36da0baa72  gcc/testsuite/gcc.dg/vect/bb-slp-11.c
! ce36b8e49455e65805b6c7b39eb20a08  gcc/testsuite/gcc.dg/vect/bb-slp-13.c
! 997e8e409fc9d65e61eedd915ed06a08  gcc/testsuite/gcc.dg/vect/bb-slp-14.c
! 22e04ce02d2e83a37186472a1dbb5fcb  gcc/testsuite/gcc.dg/vect/bb-slp-15.c
! 0bfa3ac09a6edbdd4c1fbdf1d9f04e47  gcc/testsuite/gcc.dg/vect/bb-slp-16.c
! 6e916a98c0344319fe84659eee14b3b2  gcc/testsuite/gcc.dg/vect/bb-slp-17.c
! f0567941b77c37b1f0e116a41dd7787c  gcc/testsuite/gcc.dg/vect/bb-slp-18.c
! e9f7d5047f2fefff8b3351ac80d10f30  gcc/testsuite/gcc.dg/vect/bb-slp-19.c
! 95a4e09df73280a5074daf44e1cddf5b  gcc/testsuite/gcc.dg/vect/bb-slp-2.c
! c9869ae8502198281d13e300922a2ec8  gcc/testsuite/gcc.dg/vect/bb-slp-20.c
! 76ae99db97373f8ece84e87eb9815583  gcc/testsuite/gcc.dg/vect/bb-slp-21.c
! 9dfbd1c08fa30afa6ecb976e971c31fd  gcc/testsuite/gcc.dg/vect/bb-slp-22.c
! 1c900840158a23b4e2368795f6ed410f  gcc/testsuite/gcc.dg/vect/bb-slp-23.c
! bc4febb7e3515dbe8ba908ece80c4a84  gcc/testsuite/gcc.dg/vect/bb-slp-24.c
! 381baf403a36c1e398dc6d170c9c0050  gcc/testsuite/gcc.dg/vect/bb-slp-25.c
! c39ee99f5554c9c5e5b8b654e4ef8bb5  gcc/testsuite/gcc.dg/vect/bb-slp-26.c
! 09459d75fbf6779593394686f160fc40  gcc/testsuite/gcc.dg/vect/bb-slp-27.c
! 4dc9b81d0d296fa97f7ed9e3e1adc30c  gcc/testsuite/gcc.dg/vect/bb-slp-28.c
! ff08b6f401ad25a842944e9e3e8384c1  gcc/testsuite/gcc.dg/vect/bb-slp-29.c
! ef73926f06ee885b1e602103a90f3aa5  gcc/testsuite/gcc.dg/vect/bb-slp-3.c
! f721b1c058f629b7e0d63be91a2b9a48  gcc/testsuite/gcc.dg/vect/bb-slp-30.c
! e227798a6ceabae26034233f900b8049  gcc/testsuite/gcc.dg/vect/bb-slp-31.c
! 4281c46ea627e815994656f5fc30e214  gcc/testsuite/gcc.dg/vect/bb-slp-32.c
  4693259f8c6e75589b77e35e3c005d09  gcc/testsuite/gcc.dg/vect/bb-slp-33.c
! 396aef8acf5cc6413bb922a950d3eda5  gcc/testsuite/gcc.dg/vect/bb-slp-34.c
! 9d3c4162fa90a93c0d7aa208388789b3  gcc/testsuite/gcc.dg/vect/bb-slp-35.c
! 167edde777120c9bbb2baa8d8b1962a6  gcc/testsuite/gcc.dg/vect/bb-slp-36.c
  d9b82f24ec441bd4ed9946db9792733c  gcc/testsuite/gcc.dg/vect/bb-slp-37.c
! 7bcff90b9863e84eae294cff0b865427  gcc/testsuite/gcc.dg/vect/bb-slp-38.c
  190410e1fef8da664b76927524f2d9c4  gcc/testsuite/gcc.dg/vect/bb-slp-39.c
! 2d3a915ced26b6be766341dc7de50ad8  gcc/testsuite/gcc.dg/vect/bb-slp-4.c
  094d2618b84be18ada044275f13cbf29  gcc/testsuite/gcc.dg/vect/bb-slp-40.c
! e32567a5dc4b945280cd4527bf1666a5  gcc/testsuite/gcc.dg/vect/bb-slp-41.c
  d94b6b6501276fc53adc9a3e81024111  gcc/testsuite/gcc.dg/vect/bb-slp-42.c
  918a1435861e771b3a59353884b4c985  gcc/testsuite/gcc.dg/vect/bb-slp-43.c
+ 81469097534af4831f53f485f558509a  gcc/testsuite/gcc.dg/vect/bb-slp-44.c
+ 7d00b7ceb27589ec58e1510082a67d6a  gcc/testsuite/gcc.dg/vect/bb-slp-45.c
+ 03cdd0d35a4f6af2267c8d347d74542a  gcc/testsuite/gcc.dg/vect/bb-slp-46.c
+ b25bae04c395a5c7d339456cd3566a64  gcc/testsuite/gcc.dg/vect/bb-slp-47.c
+ 630584f8240422cfa4661e71dc81f951  gcc/testsuite/gcc.dg/vect/bb-slp-48.c
  c03e6ccbd759364f47f750471f0748c5  gcc/testsuite/gcc.dg/vect/bb-slp-49.c
! d55cef8c0f365042f46b526db7b28a0f  gcc/testsuite/gcc.dg/vect/bb-slp-5.c
! 5e70d2850c3effa51658fd1c56eb4e50  gcc/testsuite/gcc.dg/vect/bb-slp-50.c
! 9919992bfa99d0619545cb8495968997  gcc/testsuite/gcc.dg/vect/bb-slp-51.c
! bc23526547bfbe3d5724aba7cd30e796  gcc/testsuite/gcc.dg/vect/bb-slp-52.c
! 5528b930270a09988c0f1f1aa331d9ba  gcc/testsuite/gcc.dg/vect/bb-slp-53.c
! 282e214d76f206f19be94906193df2d5  gcc/testsuite/gcc.dg/vect/bb-slp-54.c
! 26ea60176ceb55d6a9f68d55da12eead  gcc/testsuite/gcc.dg/vect/bb-slp-55.c
! f6f8e2090f5d8d3cd0224f32d3592771  gcc/testsuite/gcc.dg/vect/bb-slp-56.c
! a6375b757b6e1250b67fba30647311fa  gcc/testsuite/gcc.dg/vect/bb-slp-57.c
! 1e9c87c5632512dcac49bac1a9a3fb59  gcc/testsuite/gcc.dg/vect/bb-slp-58.c
! f98c36a85842c3528928d9455929dfcf  gcc/testsuite/gcc.dg/vect/bb-slp-59.c
! 70097c9bab004cdd540c4469854ec47f  gcc/testsuite/gcc.dg/vect/bb-slp-6.c
! cafdaa0e2e902a3f225c64f3c61bfda8  gcc/testsuite/gcc.dg/vect/bb-slp-60.c
! 48f4f957b79179acff20555d7921be73  gcc/testsuite/gcc.dg/vect/bb-slp-61.c
! e54485c5b242b675d756651d5126f5f3  gcc/testsuite/gcc.dg/vect/bb-slp-62.c
! b06bbb6143a3be2dc6987b5a4cda943c  gcc/testsuite/gcc.dg/vect/bb-slp-63.c
! 83ec683ab0a1f0ac9a4177d3abacf053  gcc/testsuite/gcc.dg/vect/bb-slp-64.c
! 63055f2f2246daecb801ed30dfa937b1  gcc/testsuite/gcc.dg/vect/bb-slp-65.c
! a69c2c27919262d61df10eca968ae56c  gcc/testsuite/gcc.dg/vect/bb-slp-66.c
! 57b252f3073ef6efcb04277b95ebb03d  gcc/testsuite/gcc.dg/vect/bb-slp-67.c
! 4daa025752ce1d42970810c3e737fa78  gcc/testsuite/gcc.dg/vect/bb-slp-68.c
! 15ebcb1640864f38fb35c69c5a64c16d  gcc/testsuite/gcc.dg/vect/bb-slp-69.c
! e07b4d2c5c7b96559385582969530695  gcc/testsuite/gcc.dg/vect/bb-slp-7.c
! 385cc9557f6c95e0dd210863bce477a0  gcc/testsuite/gcc.dg/vect/bb-slp-70.c
! e25a8f3320f641e5055cfc1e0a955c40  gcc/testsuite/gcc.dg/vect/bb-slp-8.c
! 9f7711e0c82ad69b17839e734862f539  gcc/testsuite/gcc.dg/vect/bb-slp-8a.c
! 74399495ff8f4034fefd09f665413168  gcc/testsuite/gcc.dg/vect/bb-slp-8b.c
! 19ee53d59cf6e245a1708525a8887b01  gcc/testsuite/gcc.dg/vect/bb-slp-9.c
  8809855af1ea14173db1668e1ebb3c33  gcc/testsuite/gcc.dg/vect/bb-slp-bool-1.c
  d50b6198d0ab7f141d0ca1fe2c25c55e  gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c
! 1b5ff799161e9971d6bd28bec8d16440  gcc/testsuite/gcc.dg/vect/bb-slp-div-1.c
! d840a44aa42e8dbf05f710b4031b11a1  gcc/testsuite/gcc.dg/vect/bb-slp-div-2.c
! 7c41afdc5735a359182f9e762fce7639  gcc/testsuite/gcc.dg/vect/bb-slp-over-widen-1.c
! da7b4fa15b104e471f4ae118b8378eb1  gcc/testsuite/gcc.dg/vect/bb-slp-over-widen-2.c
  c311453bfa9e07fb29dd6981eaaf350d  gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c
! 42a99fc92d1e774d5a0da4f7734b361a  gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c
! 5face17b7bca252af575af588f27be32  gcc/testsuite/gcc.dg/vect/bb-slp-phis-1.c
! f46db941b9a35f0bfa38b50d084a730c  gcc/testsuite/gcc.dg/vect/bb-slp-pow-1.c
! 5472e7bf338627077f4e6ce8cce9944e  gcc/testsuite/gcc.dg/vect/bb-slp-pr58135.c
! 36304c1d67fc912f27ddc07a124d90e1  gcc/testsuite/gcc.dg/vect/bb-slp-pr65935.c
! a3000cd864ecf8f7a3037fec3f0ac388  gcc/testsuite/gcc.dg/vect/bb-slp-pr69907.c
! 1d3aaf7003b6ad6834ed135c4c749cac  gcc/testsuite/gcc.dg/vect/bb-slp-pr78205.c
  7bde18f16db8ba76291d8ca502888f3e  gcc/testsuite/gcc.dg/vect/bb-slp-pr80705.c
! 9abc16eaff706d04389dd061cf9b1d1b  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-1.c
! c1bab5326da7d18b750a45bf3ffc6edc  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-2.c
! bb2e6913bb62e062ec8f4a7171326362  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-3.c
! 4263db4494be1cde99ddba5572d3113b  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-4.c
! 77b3fe616e2da5b96ef0a5422f10f67c  gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c
  3ac66e7d12525b6746af51507c570d90  gcc/testsuite/gcc.dg/vect/bb-slp-pr92596.c
! 6628429c4ae70acf5a0a3f8a70698be4  gcc/testsuite/gcc.dg/vect/bb-slp-pr95271.c
! 3f25c3533bbcf6591976383f55675529  gcc/testsuite/gcc.dg/vect/bb-slp-pr95335.c
! aa200d631e463383770f6f717838c251  gcc/testsuite/gcc.dg/vect/bb-slp-pr95839-2.c
! 3bd1b8a47182c99f35f68853319a3ea3  gcc/testsuite/gcc.dg/vect/bb-slp-pr95839.c
! eaa743aab9bdd479cfc9a5a33dfc917f  gcc/testsuite/gcc.dg/vect/bb-slp-pr95866.c
! d96c37dc33c7e1aca31487e5caf1fa33  gcc/testsuite/gcc.dg/vect/bb-slp-pr97486.c
! e7425206869b10684b25feb8565feaf5  gcc/testsuite/gcc.dg/vect/bb-slp-pr97496.c
! ab2962fd8f373b0a0c8d0860a206f028  gcc/testsuite/gcc.dg/vect/bb-slp-pr97615.c
! 9f704cd3dfe58064deca38030e69cddd  gcc/testsuite/gcc.dg/vect/bb-slp-pr97626.c
! b11be106da086e84c384da3d62609fc6  gcc/testsuite/gcc.dg/vect/bb-slp-pr97633.c
! b13772a83ca2a950ecc3e55db4aa95f8  gcc/testsuite/gcc.dg/vect/bb-slp-pr97650.c
! a390ab58e13441907492a6139c101ee1  gcc/testsuite/gcc.dg/vect/bb-slp-pr97706.c
! 2e6814a1dc772191ab299c06289af371  gcc/testsuite/gcc.dg/vect/bb-slp-pr97709.c
! 9257b26931e51ae5eba37c850fb84046  gcc/testsuite/gcc.dg/vect/bb-slp-pr97732.c
! 88064d22a3df086ef138637cd76b9322  gcc/testsuite/gcc.dg/vect/bb-slp-pr97746.c
! 0484d6c983b701e29c113b1019b353fc  gcc/testsuite/gcc.dg/vect/bb-slp-pr98137.c
! 8994da70145a38cadeb8d78da558971f  gcc/testsuite/gcc.dg/vect/bb-slp-pr98516-1.c
! 9a9f98c8e22a96e135220e14e9a5f3e8  gcc/testsuite/gcc.dg/vect/bb-slp-pr98516-2.c
! f458c4bd5bf3886b45d0ca62da2ba1ff  gcc/testsuite/gcc.dg/vect/bb-slp-pr98544.c
! 30c741c1a917278da82b36e7d0917343  gcc/testsuite/gcc.dg/vect/bb-slp-pr98685.c
! 61b5bdbfdffd17b15f9ffe274ebb887e  gcc/testsuite/gcc.dg/vect/bb-slp-pr98854.c
! 76ca89dbf04b0da54f93449816c40139  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-1.c
! 6f206346ceb24c5ac1795b0003f74f55  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-2.c
! f511c5e3bf05877e92e7c9fb18acc107  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c
! d89050f03b37a25cc5ba09396bd2e9b0  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-byte.c
! 15072285b9ae4c0a42ddd7ec021be36e  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c
! 61d637d0bc8b39ec5c2141f093ac2791  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c
! 34e6806d0671df556c04e6629cef9dee  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c
! c4f08815e53af41573a08e3ab4cea90e  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-byte.c
! 8957c11d8028ea037575b141f1fd3ee9  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c
! 8d6e3fd6e998b3ba6a236f5d60c5822a  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c
! 0c31eaa3219809dc8a434efa53433794  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c
! f9b2084ed78ee25e7ec32af8c7c4d708  gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c
! 58e79b51aa657aaa33b99bb42c8c75b0  gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c
! 53c115ab260300dfb7fb6a17a5b91fb9  gcc/testsuite/gcc.dg/vect/complex/complex-mla-template.c
! d296c18a5121519fc5fa6c393b6ca043  gcc/testsuite/gcc.dg/vect/complex/complex-mls-template.c
! 62214c964d5fe67dd941ceaf38c0af04  gcc/testsuite/gcc.dg/vect/complex/complex-mul-template.c
! 8381a4bbf36b8797cab21d29bd0dd897  gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c
! b663bc81b4270defc2534ee4b697c313  gcc/testsuite/gcc.dg/vect/complex/complex-operations.c
! 31ab565e3c215528fcb0fc22367f0712  gcc/testsuite/gcc.dg/vect/complex/complex.exp
! 8b9ea5935d1a8a6f7846cc52dbd786f6  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c
! 1fac2509d957a3c41cd42ea28e9730c7  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c
! a1fcb4930700fa8286713231be625354  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c
! d495d5a7b3b10a494186932c4e4180f9  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c
! 6464bde75f93aac89cf605bbc396e937  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c
! c261c8d33c9e338be29cae4b432a6fb6  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c
! 5401788b5d014c57c1952baef5d92bc9  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c
! 6d80c3d1548d7fe0f516d889267fcbe9  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c
! a38494d5b58c6da7e38cc186744164ca  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c
! 5401788b5d014c57c1952baef5d92bc9  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c
! 6d80c3d1548d7fe0f516d889267fcbe9  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c
! a38494d5b58c6da7e38cc186744164ca  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c
! 3cca44affa86810d7b68ad9afc728d65  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c
! e3a8c3e0c9606ec8f4d628df54c30df7  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c
! 931f516cf71a7e7dae9a997d97625db2  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c
! d985c8a413f60190db21e79a0bd74395  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c
! beff30a2bc1de7efb520d7cbaf055545  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c
! b8a63900c733a5c9f81ec346a671b3f5  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c
! a19b1a27dae2b980483e6e746b4f6e25  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c
! e67c6b8e929cc0a4e70e65d597e57ba8  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c
! 93c56fba7d83fb4bb565127cf24120a0  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c
! aac415c17d346bf3c8c6745ba20ed6b5  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c
! 58c57c4b0f48228dcb0031a1ceb86dc9  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c
! 72c98fee94184b5cd944cbd3279cc974  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c
! aac415c17d346bf3c8c6745ba20ed6b5  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c
! 58c57c4b0f48228dcb0031a1ceb86dc9  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c
! 72c98fee94184b5cd944cbd3279cc974  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c
! c21c2776fccd2ec08a30d92f87228760  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c
! f168d8295936fc6829b822f75e3a0f95  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c
! 6b9e40d2ab960567d68e283b0ff7631e  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c
! 78e81a6dd70287d480468db262815200  gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c
! 09cf8fa19e44b2a3ba46c26d2e17f475  gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-int.c
! e6cb5812d6e1de5ebc69c42714c47c3d  gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-long.c
! 23895de5ff8a5fb20050bfab14fe1273  gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-short.c
! 3d847c6ddd492af1c3d6d9edb01401ac  gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c
! 498cb9fbff0e69392c14f5703fc6bf41  gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c
! 201eca644a52da7da3247eecfe516c51  gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c
! 34bd5f5790ad8407d8cebce426efae4c  gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c
  05fc220f1ddbdb4d47d859b5d07869e2  gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-fast-math-vect-pr29925.c
  de7dd1e584604b7bdea2dc13b43ddc14  gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-31.c
  f460536507001609ab3aa91df1c958aa  gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-33.c
  e8ac43ab8cf8cbf7bfd8167cf04e3b0e  gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-68.c
  460815bb26ae1f6c220e23de56a2d3fd  gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-reduc-1char.c
! 7e3d1adc4368e66d61961b0c7499d5b3  gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp
  a9cb28b1e884170acbaee9d79bf34ff8  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c
! ffaf8702a4fc3b142c8b1a931c153dae  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c
  d25dc6b156dd43d1cf5e1224a3abb151  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-fast-math-vect-pr29925.c
  bd8562e8bd66700ee1114f70cbcff47e  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-pr37194.c
  2926d53e5e3391b93ff4c3fdf9b102c4  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c
*************** d7e4207d0458ef7d643b113a4d3b67be  gcc/te
*** 42536,42557 ****
  8f22ac8bc29002f40901ab1712356e3f  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-76c.c
  9ac66f90cde8ee4865e6773bc02157e1  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-outer-fir.c
  a0cfa86bcfadab7dd7bfdc45d44a30ee  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-reduc-1char.c
! ef60dd85dc66ab091bcdf617f2081bf1  gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp
  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
! a5291b9137052e38bce189e260b31ad4  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr30843.c
  ec5c6a4d5052e20e84aa5eb95742d36f  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr64909.c
! 0211c977ddd4f83f65ee1b2b0942b85c  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr69297.c
  95441d9036c7c6a8ec66097fa438a66b  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr83202.c
  48ec02ae594bd65df110f1d4ae1066f9  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr84986.c
  de7dd1e584604b7bdea2dc13b43ddc14  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-31.c
  afc5dba022f09221fdd72f43f975aa2c  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-33.c
  e8ac43ab8cf8cbf7bfd8167cf04e3b0e  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-68.c
  460815bb26ae1f6c220e23de56a2d3fd  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-reduc-1char.c
! 59205db3c659c989e83e01da1fce9db5  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp.c
! 9de6fd72fccc838fc3e6832cffb22522  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp
! 4b034817fdfb292a8f13d72e1b0a20eb  gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c
! 91643c58fd89919e90dde5e56252b147  gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-2.c
  dba914eb2c6896f87a7a3bb3e0c40c08  gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-3.c
  b5419cd17152b23060020cc6c0a8595b  gcc/testsuite/gcc.dg/vect/fast-math-ifcvt-1.c
  3503419d90afd0b4a83e8b5273f36f68  gcc/testsuite/gcc.dg/vect/fast-math-pr35982.c
--- 45640,45662 ----
  8f22ac8bc29002f40901ab1712356e3f  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-76c.c
  9ac66f90cde8ee4865e6773bc02157e1  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-outer-fir.c
  a0cfa86bcfadab7dd7bfdc45d44a30ee  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-reduc-1char.c
! d423408117e9f1b0db01a595c8a2bd78  gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp
  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
! adf307e0a12bcc8d31b97d83adb3e848  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr30843.c
  ec5c6a4d5052e20e84aa5eb95742d36f  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr64909.c
! e094ee1a12f158fa8be372b1974af637  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr69297.c
  95441d9036c7c6a8ec66097fa438a66b  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr83202.c
  48ec02ae594bd65df110f1d4ae1066f9  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr84986.c
  de7dd1e584604b7bdea2dc13b43ddc14  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-31.c
  afc5dba022f09221fdd72f43f975aa2c  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-33.c
  e8ac43ab8cf8cbf7bfd8167cf04e3b0e  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-68.c
  460815bb26ae1f6c220e23de56a2d3fd  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-reduc-1char.c
! f6fdadd0ea9395aed541bf9b57b73780  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp-2.c
! 8fa1df6d327c2eef9e16ea686cbebd42  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp.c
! 973ee18b0bee2440e33387ed01d346fc  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp
! 82db66d96715b83f7de0d05c532b64ac  gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c
! c7b2ca703aba051b9a31eb848cd6195e  gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-2.c
  dba914eb2c6896f87a7a3bb3e0c40c08  gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-3.c
  b5419cd17152b23060020cc6c0a8595b  gcc/testsuite/gcc.dg/vect/fast-math-ifcvt-1.c
  3503419d90afd0b4a83e8b5273f36f68  gcc/testsuite/gcc.dg/vect/fast-math-pr35982.c
*************** ba3ba1417b4b4d7190b32549c4cc480d  gcc/te
*** 42560,42566 ****
  a0e431405b4a231e57edf67833ff2b5e  gcc/testsuite/gcc.dg/vect/fast-math-pr55281.c
  300995981557dfd810e9f01204fd73df  gcc/testsuite/gcc.dg/vect/fast-math-slp-27.c
  5ffb7b2cd3742679d3e39ecab6fad8c8  gcc/testsuite/gcc.dg/vect/fast-math-slp-38.c
! ce6f3b6dd5d189a998d561a6d5104828  gcc/testsuite/gcc.dg/vect/fast-math-vect-call-1.c
  3b1dc406490dfb0ab6492889ec2f3465  gcc/testsuite/gcc.dg/vect/fast-math-vect-call-2.c
  6cc95709f1aa67e7830dce52461e8468  gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c
  d4813c7c6037ade43db3ca011cd64159  gcc/testsuite/gcc.dg/vect/fast-math-vect-outer-7.c
--- 45665,45671 ----
  a0e431405b4a231e57edf67833ff2b5e  gcc/testsuite/gcc.dg/vect/fast-math-pr55281.c
  300995981557dfd810e9f01204fd73df  gcc/testsuite/gcc.dg/vect/fast-math-slp-27.c
  5ffb7b2cd3742679d3e39ecab6fad8c8  gcc/testsuite/gcc.dg/vect/fast-math-slp-38.c
! bdeec0b7c7e4063a8cc7302b6fc5cf97  gcc/testsuite/gcc.dg/vect/fast-math-vect-call-1.c
  3b1dc406490dfb0ab6492889ec2f3465  gcc/testsuite/gcc.dg/vect/fast-math-vect-call-2.c
  6cc95709f1aa67e7830dce52461e8468  gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c
  d4813c7c6037ade43db3ca011cd64159  gcc/testsuite/gcc.dg/vect/fast-math-vect-outer-7.c
*************** aeccb6c4596e9dc997c595bdb09b1715  gcc/te
*** 42573,42578 ****
--- 45678,45685 ----
  7f0608980670dad162f7c6dc5445dee0  gcc/testsuite/gcc.dg/vect/fast-math-vect-reduc-8.c
  c96ad17d79b357aa3a1fafd4373fa123  gcc/testsuite/gcc.dg/vect/fast-math-vect-reduc-9.c
  468cb6f8da74e4fcecd69eee085d36b4  gcc/testsuite/gcc.dg/vect/ggc-pr37574.c
+ dc74a68d7d4f6ba1501c231d929ce6b4  gcc/testsuite/gcc.dg/vect/gimplefe-40.c
+ 91223cbc995b53e58dcd6701cda19613  gcc/testsuite/gcc.dg/vect/gimplefe-41.c
  0290c046682f1964e85751a23e4b4c75  gcc/testsuite/gcc.dg/vect/group-no-gaps-1.c
  3ba1ad7e9f05d87d9b64782325c73302  gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c
  bb23e40896d73c9770ba4c31753c6025  gcc/testsuite/gcc.dg/vect/no-fast-math-vect16.c
*************** bd375aac935bab28b8bb7f1b33d12836  gcc/te
*** 42644,42651 ****
  deb80b9e42227ef9cf3ab1d7f28f3f42  gcc/testsuite/gcc.dg/vect/no-tree-fre-pr50039.c
  9d154ff23b4a783dc0c623860ab1b50c  gcc/testsuite/gcc.dg/vect/no-tree-pre-pr45241.c
  1c63d8c2e71e99f2f4dae43c53bb6555  gcc/testsuite/gcc.dg/vect/no-tree-pre-slp-29.c
! 4fcf9883a2190807dd1a4a7e02496b0d  gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c
! 3c9f7599a0123f95aed5c83a943006a1  gcc/testsuite/gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c
  353ce72fd19727fe5790eb78afad584a  gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c
  109d46d999481abc6706a1e03a8cfd19  gcc/testsuite/gcc.dg/vect/no-vfa-vect-101.c
  2ca81df55a0a27062064e437c8be6c4f  gcc/testsuite/gcc.dg/vect/no-vfa-vect-102.c
--- 45751,45758 ----
  deb80b9e42227ef9cf3ab1d7f28f3f42  gcc/testsuite/gcc.dg/vect/no-tree-fre-pr50039.c
  9d154ff23b4a783dc0c623860ab1b50c  gcc/testsuite/gcc.dg/vect/no-tree-pre-pr45241.c
  1c63d8c2e71e99f2f4dae43c53bb6555  gcc/testsuite/gcc.dg/vect/no-tree-pre-slp-29.c
! 80e3432e13638dba27b02c0b1fe76fea  gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c
! 98363a4caed4fef8e2d82dc3b4776d97  gcc/testsuite/gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c
  353ce72fd19727fe5790eb78afad584a  gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c
  109d46d999481abc6706a1e03a8cfd19  gcc/testsuite/gcc.dg/vect/no-vfa-vect-101.c
  2ca81df55a0a27062064e437c8be6c4f  gcc/testsuite/gcc.dg/vect/no-vfa-vect-102.c
*************** cc946be513229c842b441477d742adec  gcc/te
*** 42662,42672 ****
  90ab4de708b524f7cbbdacf1cc401f14  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-1.c
  06e41db63dac66d2434a37e7152187df  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-2.c
  f098c26c1e0188d733a3992b19505255  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-3.c
! f77eeef377a78f626783db2e9301ac37  gcc/testsuite/gcc.dg/vect/no-vfa-vect-dv-2.c
  d122ac18b4a3ae4813e46562ff41d564  gcc/testsuite/gcc.dg/vect/nodump-forwprop-22.c
  ac90ad8f4383592387ff86cb8dbd78ce  gcc/testsuite/gcc.dg/vect/nodump-pr23073.c
! 4031bfbf5b1cf89807376fcb9a939316  gcc/testsuite/gcc.dg/vect/nodump-vect-opt-info-1.c
! 58db2fab9bc49d7c2cce579cfbde8d0d  gcc/testsuite/gcc.dg/vect/nodump-vect-opt-info-2.c
  42d48d2ecd5682545b12ac42f879a831  gcc/testsuite/gcc.dg/vect/pr16105.c
  231c99dba9475fe09525bbf6f4374124  gcc/testsuite/gcc.dg/vect/pr18308.c
  3aed50f38aa86c4915d6e4b3cef91287  gcc/testsuite/gcc.dg/vect/pr18400.c
--- 45769,45779 ----
  90ab4de708b524f7cbbdacf1cc401f14  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-1.c
  06e41db63dac66d2434a37e7152187df  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-2.c
  f098c26c1e0188d733a3992b19505255  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-3.c
! 91af3673bc1774acfcabeaa64650294f  gcc/testsuite/gcc.dg/vect/no-vfa-vect-dv-2.c
  d122ac18b4a3ae4813e46562ff41d564  gcc/testsuite/gcc.dg/vect/nodump-forwprop-22.c
  ac90ad8f4383592387ff86cb8dbd78ce  gcc/testsuite/gcc.dg/vect/nodump-pr23073.c
! 8bb8b8c5a5dd310d79c2ef7142ad2432  gcc/testsuite/gcc.dg/vect/nodump-vect-opt-info-1.c
! 4576ca6b9e8f8de6acab6df0d8dc72ea  gcc/testsuite/gcc.dg/vect/nodump-vect-opt-info-2.c
  42d48d2ecd5682545b12ac42f879a831  gcc/testsuite/gcc.dg/vect/pr16105.c
  231c99dba9475fe09525bbf6f4374124  gcc/testsuite/gcc.dg/vect/pr18308.c
  3aed50f38aa86c4915d6e4b3cef91287  gcc/testsuite/gcc.dg/vect/pr18400.c
*************** f2e384b79e71e99d03856813309aa20e  gcc/te
*** 42719,42725 ****
  076894cab1127f499c660888eba6f8d6  gcc/testsuite/gcc.dg/vect/pr36228.c
  ae97e84d313b97e32d4f5ae51b419f10  gcc/testsuite/gcc.dg/vect/pr36493.c
  0de39ab286dcf8379f2e871243d6cc34  gcc/testsuite/gcc.dg/vect/pr36630.c
! dfdec68a5beb7c081cefdfd5c3e5ddfc  gcc/testsuite/gcc.dg/vect/pr37027.c
  17c749c43cc818202fef9f0ff16a4d0c  gcc/testsuite/gcc.dg/vect/pr37385.c
  51202ee05bb59aaf801bf6253306ef4a  gcc/testsuite/gcc.dg/vect/pr37474.c
  0f4fd4952fbee1eaf1341cd8d538bf24  gcc/testsuite/gcc.dg/vect/pr37482.c
--- 45826,45832 ----
  076894cab1127f499c660888eba6f8d6  gcc/testsuite/gcc.dg/vect/pr36228.c
  ae97e84d313b97e32d4f5ae51b419f10  gcc/testsuite/gcc.dg/vect/pr36493.c
  0de39ab286dcf8379f2e871243d6cc34  gcc/testsuite/gcc.dg/vect/pr36630.c
! f3178dd8a97bbef1bb5480baf068a01b  gcc/testsuite/gcc.dg/vect/pr37027.c
  17c749c43cc818202fef9f0ff16a4d0c  gcc/testsuite/gcc.dg/vect/pr37385.c
  51202ee05bb59aaf801bf6253306ef4a  gcc/testsuite/gcc.dg/vect/pr37474.c
  0f4fd4952fbee1eaf1341cd8d538bf24  gcc/testsuite/gcc.dg/vect/pr37482.c
*************** bf27f5d9c8bd924bf85879ae5cf60cc7  gcc/te
*** 42858,42869 ****
  70ce5dd89f8693e7cb1d1a56fa800358  gcc/testsuite/gcc.dg/vect/pr65947-13.c
  0444ea4cd1d517faad3350085077f8ca  gcc/testsuite/gcc.dg/vect/pr65947-14.c
  d036d0bbc6468e18bdb62cb3b4289dc7  gcc/testsuite/gcc.dg/vect/pr65947-2.c
! 05f2ecb6982637e5850788ecf3c5343a  gcc/testsuite/gcc.dg/vect/pr65947-3.c
  a2b44b460b60928ab08cf781bca61362  gcc/testsuite/gcc.dg/vect/pr65947-4.c
  cbec58ef280004b3eff5801426a72e11  gcc/testsuite/gcc.dg/vect/pr65947-5.c
  49bc43ce848248bdd193c0cf0e414eb7  gcc/testsuite/gcc.dg/vect/pr65947-6.c
! a1ada889f59f3aac8d8f6639b833279a  gcc/testsuite/gcc.dg/vect/pr65947-7.c
! f2e1cd242f1d948a2a229a486886a5da  gcc/testsuite/gcc.dg/vect/pr65947-8.c
  9bb2f2b31235ad5f54dd6c6bfd87c2cf  gcc/testsuite/gcc.dg/vect/pr65947-9.c
  d1bb916522cf51af2ec6b26d7bfe3875  gcc/testsuite/gcc.dg/vect/pr65951.c
  c1a0987a004bbddb462c182b491c3887  gcc/testsuite/gcc.dg/vect/pr66142.c
--- 45965,45976 ----
  70ce5dd89f8693e7cb1d1a56fa800358  gcc/testsuite/gcc.dg/vect/pr65947-13.c
  0444ea4cd1d517faad3350085077f8ca  gcc/testsuite/gcc.dg/vect/pr65947-14.c
  d036d0bbc6468e18bdb62cb3b4289dc7  gcc/testsuite/gcc.dg/vect/pr65947-2.c
! 82379586f666c9edccfb38a83aa8bb11  gcc/testsuite/gcc.dg/vect/pr65947-3.c
  a2b44b460b60928ab08cf781bca61362  gcc/testsuite/gcc.dg/vect/pr65947-4.c
  cbec58ef280004b3eff5801426a72e11  gcc/testsuite/gcc.dg/vect/pr65947-5.c
  49bc43ce848248bdd193c0cf0e414eb7  gcc/testsuite/gcc.dg/vect/pr65947-6.c
! 35146bd594b75af193b3b385d118f76c  gcc/testsuite/gcc.dg/vect/pr65947-7.c
! df190bdc0cff4b2591d3fcba483faa21  gcc/testsuite/gcc.dg/vect/pr65947-8.c
  9bb2f2b31235ad5f54dd6c6bfd87c2cf  gcc/testsuite/gcc.dg/vect/pr65947-9.c
  d1bb916522cf51af2ec6b26d7bfe3875  gcc/testsuite/gcc.dg/vect/pr65951.c
  c1a0987a004bbddb462c182b491c3887  gcc/testsuite/gcc.dg/vect/pr66142.c
*************** ffb0c9d848fbf1c998daad920c587b69  gcc/te
*** 42874,42880 ****
  31de59c90b606bb80ee8c60486379cc0  gcc/testsuite/gcc.dg/vect/pr66636.c
  86169de4aac395fc7dd49fd713661f87  gcc/testsuite/gcc.dg/vect/pr66677.c
  f4505aa6c41d3aa5d36144edc00b927e  gcc/testsuite/gcc.dg/vect/pr66951.c
! b0c728b20c3631680ab365d1bc5a0fd8  gcc/testsuite/gcc.dg/vect/pr67790.c
  62a72b6ca1acac0241ad15032cf2b23f  gcc/testsuite/gcc.dg/vect/pr68305.c
  ac916e4c549ed47dc42ad0172c7b60b7  gcc/testsuite/gcc.dg/vect/pr68339.c
  75bd6448a642ced4b65eb52a07dfcb3e  gcc/testsuite/gcc.dg/vect/pr68417.c
--- 45981,45987 ----
  31de59c90b606bb80ee8c60486379cc0  gcc/testsuite/gcc.dg/vect/pr66636.c
  86169de4aac395fc7dd49fd713661f87  gcc/testsuite/gcc.dg/vect/pr66677.c
  f4505aa6c41d3aa5d36144edc00b927e  gcc/testsuite/gcc.dg/vect/pr66951.c
! 98088935f35ef569417f19c1c221426d  gcc/testsuite/gcc.dg/vect/pr67790.c
  62a72b6ca1acac0241ad15032cf2b23f  gcc/testsuite/gcc.dg/vect/pr68305.c
  ac916e4c549ed47dc42ad0172c7b60b7  gcc/testsuite/gcc.dg/vect/pr68339.c
  75bd6448a642ced4b65eb52a07dfcb3e  gcc/testsuite/gcc.dg/vect/pr68417.c
*************** c767283ec3596bb0dba0d999784e7fff  gcc/te
*** 42893,42899 ****
  7a332ec10658dfabe1c3011749239c5c  gcc/testsuite/gcc.dg/vect/pr70354-1.c
  6effacda352151dd8ad3c1f3ebedb311  gcc/testsuite/gcc.dg/vect/pr70354-2.c
  52afaa46e6365b9bca043823dd5c153c  gcc/testsuite/gcc.dg/vect/pr71259.c
! 4e59ccc6055a6f7f470f1b4ed321ad9c  gcc/testsuite/gcc.dg/vect/pr71264.c
  4d7bde9d01cc446108e79c91758c884d  gcc/testsuite/gcc.dg/vect/pr71407.c
  ccf58a30dd929d85895b8d85741a71ea  gcc/testsuite/gcc.dg/vect/pr71416-1.c
  cc35147435b2efa4e7d217223b42d740  gcc/testsuite/gcc.dg/vect/pr71416-2.c
--- 46000,46006 ----
  7a332ec10658dfabe1c3011749239c5c  gcc/testsuite/gcc.dg/vect/pr70354-1.c
  6effacda352151dd8ad3c1f3ebedb311  gcc/testsuite/gcc.dg/vect/pr70354-2.c
  52afaa46e6365b9bca043823dd5c153c  gcc/testsuite/gcc.dg/vect/pr71259.c
! 385f09f819cea008ca9ba276640666fa  gcc/testsuite/gcc.dg/vect/pr71264.c
  4d7bde9d01cc446108e79c91758c884d  gcc/testsuite/gcc.dg/vect/pr71407.c
  ccf58a30dd929d85895b8d85741a71ea  gcc/testsuite/gcc.dg/vect/pr71416-1.c
  cc35147435b2efa4e7d217223b42d740  gcc/testsuite/gcc.dg/vect/pr71416-2.c
*************** bfa0e486a504473f7f92839014e98a65  gcc/te
*** 42975,42993 ****
  32c3254950573198ca65ac3d419c5233  gcc/testsuite/gcc.dg/vect/pr91293-1.c
  8a5b9c6a36d246d002f3cf60916106b5  gcc/testsuite/gcc.dg/vect/pr91293-2.c
  31e5c0abc54a9d1f86cbfef42fb47d6e  gcc/testsuite/gcc.dg/vect/pr91293-3.c
  6ff42a5a4a3e60344beb4ee415f9fa95  gcc/testsuite/gcc.dg/vect/pr91665.c
! df768c919749717a884a017008dc635b  gcc/testsuite/gcc.dg/vect/pr91750.c
! 75cf7c6a762328d9230aa371758bcd7b  gcc/testsuite/gcc.dg/vect/pr92205.c
  a1c78d2103801b51ae10808ad3d27915  gcc/testsuite/gcc.dg/vect/pr92324-1.c
  fbe32cc2f1f0b303ae091e28add696ee  gcc/testsuite/gcc.dg/vect/pr92324-2.c
  98dd4dd5861001136f3d1f1581a11d1c  gcc/testsuite/gcc.dg/vect/pr92324-3.c
! 48ef05d94c14dfc39082ac0d410f7388  gcc/testsuite/gcc.dg/vect/pr92324-4.c
  1b261f0a325e5676396df1d40d807b37  gcc/testsuite/gcc.dg/vect/pr92347.c
  8592f5133853519281066e3cdcdc9082  gcc/testsuite/gcc.dg/vect/pr92420.c
  ba21c2d4c521bfd679e08620481a494d  gcc/testsuite/gcc.dg/vect/pr92429.c
  c54988c24251a71c06cd1302d2440982  gcc/testsuite/gcc.dg/vect/pr92554.c
  4866dc6d48f80ef181b9d9517d743c01  gcc/testsuite/gcc.dg/vect/pr92555.c
! 28c95ff5eb5bb2e2314289784ddfe5cf  gcc/testsuite/gcc.dg/vect/pr92558.c
  2c9429a9ada0a815b32a3ddbe262e5e3  gcc/testsuite/gcc.dg/vect/pr92677.c
  01906fed72c9f61c670e936527239bd8  gcc/testsuite/gcc.dg/vect/pr92710.c
  9314244e8dd2629fd52faec10e7e5f47  gcc/testsuite/gcc.dg/vect/pr92723.c
--- 46082,46101 ----
  32c3254950573198ca65ac3d419c5233  gcc/testsuite/gcc.dg/vect/pr91293-1.c
  8a5b9c6a36d246d002f3cf60916106b5  gcc/testsuite/gcc.dg/vect/pr91293-2.c
  31e5c0abc54a9d1f86cbfef42fb47d6e  gcc/testsuite/gcc.dg/vect/pr91293-3.c
+ b732f5248ca7fe3878af23019cc9abba  gcc/testsuite/gcc.dg/vect/pr91403.c
  6ff42a5a4a3e60344beb4ee415f9fa95  gcc/testsuite/gcc.dg/vect/pr91665.c
! 6e31d986caa01187906a720673273ebe  gcc/testsuite/gcc.dg/vect/pr91750.c
! 760aaef40b7e0bc554f58e8472240e5c  gcc/testsuite/gcc.dg/vect/pr92205.c
  a1c78d2103801b51ae10808ad3d27915  gcc/testsuite/gcc.dg/vect/pr92324-1.c
  fbe32cc2f1f0b303ae091e28add696ee  gcc/testsuite/gcc.dg/vect/pr92324-2.c
  98dd4dd5861001136f3d1f1581a11d1c  gcc/testsuite/gcc.dg/vect/pr92324-3.c
! 6444cd7e452df7d4468eca1876460b84  gcc/testsuite/gcc.dg/vect/pr92324-4.c
  1b261f0a325e5676396df1d40d807b37  gcc/testsuite/gcc.dg/vect/pr92347.c
  8592f5133853519281066e3cdcdc9082  gcc/testsuite/gcc.dg/vect/pr92420.c
  ba21c2d4c521bfd679e08620481a494d  gcc/testsuite/gcc.dg/vect/pr92429.c
  c54988c24251a71c06cd1302d2440982  gcc/testsuite/gcc.dg/vect/pr92554.c
  4866dc6d48f80ef181b9d9517d743c01  gcc/testsuite/gcc.dg/vect/pr92555.c
! 8435c74ed9da3126ad239d4b88047a43  gcc/testsuite/gcc.dg/vect/pr92558.c
  2c9429a9ada0a815b32a3ddbe262e5e3  gcc/testsuite/gcc.dg/vect/pr92677.c
  01906fed72c9f61c670e936527239bd8  gcc/testsuite/gcc.dg/vect/pr92710.c
  9314244e8dd2629fd52faec10e7e5f47  gcc/testsuite/gcc.dg/vect/pr92723.c
*************** cac1837db0f18d03c9d1b37ac3d31796  gcc/te
*** 43002,43017 ****
--- 46110,46156 ----
  0d318897a6d7512255fe0dac2261264c  gcc/testsuite/gcc.dg/vect/pr94606.c
  2b1272d98c0843cb34b0b6bca44e86ee  gcc/testsuite/gcc.dg/vect/pr94727.c
  8072f6d08a80fbd33b1be42ec47db64e  gcc/testsuite/gcc.dg/vect/pr94994.c
+ 4b69df6d5e35024255da4e4e966901bd  gcc/testsuite/gcc.dg/vect/pr95272.c
+ 69c694c08bc9a4d9994f78a8f8288607  gcc/testsuite/gcc.dg/vect/pr95495.c
+ c07ae476dce0a5d5f03034001a1f07a9  gcc/testsuite/gcc.dg/vect/pr95539.c
+ 75b18b6a950a7fa1a462ff70b651143d  gcc/testsuite/gcc.dg/vect/pr95570.c
+ 0ec2f9459992808c0162b555360820a6  gcc/testsuite/gcc.dg/vect/pr95856.c
+ 9580b042b08a37186ada7134d2de81c6  gcc/testsuite/gcc.dg/vect/pr95897.c
+ 13d91ca100fc03f2963725ce48e8004f  gcc/testsuite/gcc.dg/vect/pr95916.c
  99d29dd4c5f954590b3db9a8eb557c28  gcc/testsuite/gcc.dg/vect/pr96698.c
+ d17f29b3ff1f04a416ac6c66dee15f97  gcc/testsuite/gcc.dg/vect/pr96783-1.c
+ c80b0abaead3e4084ec80c819f38ef65  gcc/testsuite/gcc.dg/vect/pr96783-2.c
  7533577367bbacf23ddec310ebc2c7bb  gcc/testsuite/gcc.dg/vect/pr96854.c
  e1dafb84c7e06168210ff8f538447cbc  gcc/testsuite/gcc.dg/vect/pr96920.c
  b839d6fa7ffaab08413a204d84e114d4  gcc/testsuite/gcc.dg/vect/pr97081-2.c
  a406e555a8f5f93143c15c8b6b6b63f4  gcc/testsuite/gcc.dg/vect/pr97081.c
+ c85681f9b5d2f6a1d4b453846f37fcef  gcc/testsuite/gcc.dg/vect/pr97085.c
+ b551cf977314c7406b99b8d04c143b19  gcc/testsuite/gcc.dg/vect/pr97139.c
+ 6895e7a56bdc4993b94c03e6d5dc587d  gcc/testsuite/gcc.dg/vect/pr97173.c
  28db70b2a4bdf2faf03ba619381af631  gcc/testsuite/gcc.dg/vect/pr97236.c
+ 20e8d4d146127438ffe685c492c8ad86  gcc/testsuite/gcc.dg/vect/pr97241.c
+ ee5e6bcfcc4a28b128f0ae60e312ef1e  gcc/testsuite/gcc.dg/vect/pr97428.c
  8d732449a24564fd2cd4ff8dca6c2f37  gcc/testsuite/gcc.dg/vect/pr97457.c
+ 4e7901b46d8ff6dfbd12f354b54c6743  gcc/testsuite/gcc.dg/vect/pr97558-2.c
+ a0e548875f044f3b51270f1185a1fee3  gcc/testsuite/gcc.dg/vect/pr97558.c
+ 948ee123e7e0e4cd42d1affb82aa185b  gcc/testsuite/gcc.dg/vect/pr97678.c
+ 902c83243896096ca722f80843e37d20  gcc/testsuite/gcc.dg/vect/pr97693.c
  5547564420f3d37eea60b06c9de2674f  gcc/testsuite/gcc.dg/vect/pr97730.c
+ 80b007c45c37817c71dfe4f531486d33  gcc/testsuite/gcc.dg/vect/pr97753.c
  de446341563e3d64852efdd708c73af4  gcc/testsuite/gcc.dg/vect/pr97760.c
+ e1a8084f1252d460768629201b048a30  gcc/testsuite/gcc.dg/vect/pr97769.c
+ 9fe2fbd0b1b3ca85c2b7f3108913ca1f  gcc/testsuite/gcc.dg/vect/pr97835.c
+ 5b0928674dd82fb6b5b0394b33cbc1a1  gcc/testsuite/gcc.dg/vect/pr97838.c
+ ed8e1d716e602e779351272808949150  gcc/testsuite/gcc.dg/vect/pr97929.c
+ 030baeb142aa86ed13330f77e2bc3979  gcc/testsuite/gcc.dg/vect/pr98048.c
+ 8c4c12ffbafce0ee4bd214fab89cae4e  gcc/testsuite/gcc.dg/vect/pr98069.c
  a27483154b2f4bcb777eb2dbc73702b9  gcc/testsuite/gcc.dg/vect/pr98302.c
+ f63cffd299776f130bda5408dca137c2  gcc/testsuite/gcc.dg/vect/pr98308.c
+ dc519b432ee67d22f382f436de6b049d  gcc/testsuite/gcc.dg/vect/pr98560-1.c
+ 4afc8efba1f31b432e831f101ed6f173  gcc/testsuite/gcc.dg/vect/pr98560-2.c
+ c5cc63b339d4d79237ce6ae9795568aa  gcc/testsuite/gcc.dg/vect/pr98674.c
+ ecf30a3d5633aea4fdce036a11b8e64f  gcc/testsuite/gcc.dg/vect/pr98848.c
+ 6873a0794350ba72a70cd79260534937  gcc/testsuite/gcc.dg/vect/pr99102.c
  1906ecaca4ed41844bbfad6d9289b6e2  gcc/testsuite/gcc.dg/vect/pr99253.c
  24dbffd92c63e8683ef23b5143e0d607  gcc/testsuite/gcc.dg/vect/pr99540.c
  aefd4bda7e5d3e855da2011fb58b8c47  gcc/testsuite/gcc.dg/vect/pr99856.c
*************** d7c598d838a7c98392febc88239e2769  gcc/te
*** 43020,43026 ****
  cd2f0240aaa18dda8ac3a18459c93d29  gcc/testsuite/gcc.dg/vect/slp-1.c
  7f23b9b51779dc0a435fe7f7eb32b0e8  gcc/testsuite/gcc.dg/vect/slp-10.c
  731c52b0ee675b8bd3f075148fc17648  gcc/testsuite/gcc.dg/vect/slp-11a.c
! bc1caf90aded8da06f10166eaf5ae3c7  gcc/testsuite/gcc.dg/vect/slp-11b.c
  639970eabd19badb89a03efd21ba873c  gcc/testsuite/gcc.dg/vect/slp-11c.c
  ba897d8c2f0b0e987a99c1e033948730  gcc/testsuite/gcc.dg/vect/slp-12a.c
  aee19441d8ce48ddc2771a5390cca482  gcc/testsuite/gcc.dg/vect/slp-12b.c
--- 46159,46165 ----
  cd2f0240aaa18dda8ac3a18459c93d29  gcc/testsuite/gcc.dg/vect/slp-1.c
  7f23b9b51779dc0a435fe7f7eb32b0e8  gcc/testsuite/gcc.dg/vect/slp-10.c
  731c52b0ee675b8bd3f075148fc17648  gcc/testsuite/gcc.dg/vect/slp-11a.c
! cbaf41448f4bde0514a14267e3afb6bc  gcc/testsuite/gcc.dg/vect/slp-11b.c
  639970eabd19badb89a03efd21ba873c  gcc/testsuite/gcc.dg/vect/slp-11c.c
  ba897d8c2f0b0e987a99c1e033948730  gcc/testsuite/gcc.dg/vect/slp-12a.c
  aee19441d8ce48ddc2771a5390cca482  gcc/testsuite/gcc.dg/vect/slp-12b.c
*************** feeec17385c2095429ad132bd085a67b  gcc/te
*** 43037,43043 ****
  107b703b7e1442d67b0d3d6345c9655e  gcc/testsuite/gcc.dg/vect/slp-19c.c
  d7fccaa610ea11b1a5f271dc2f429653  gcc/testsuite/gcc.dg/vect/slp-2.c
  8ebb5ddb99a2da9a195e7369c7f9b513  gcc/testsuite/gcc.dg/vect/slp-20.c
! 79d35bc789cc55ce04ec9737c00a5143  gcc/testsuite/gcc.dg/vect/slp-21.c
  36a51711f52dc82c7546d284e2f6904a  gcc/testsuite/gcc.dg/vect/slp-22.c
  986d9befacef0ad372eba8123772baa8  gcc/testsuite/gcc.dg/vect/slp-23.c
  c9166044854a8e3d87de33160660cfbd  gcc/testsuite/gcc.dg/vect/slp-24-big-array.c
--- 46176,46182 ----
  107b703b7e1442d67b0d3d6345c9655e  gcc/testsuite/gcc.dg/vect/slp-19c.c
  d7fccaa610ea11b1a5f271dc2f429653  gcc/testsuite/gcc.dg/vect/slp-2.c
  8ebb5ddb99a2da9a195e7369c7f9b513  gcc/testsuite/gcc.dg/vect/slp-20.c
! bb554f4a3c5b2dc9bbd7fd8420fdbfd5  gcc/testsuite/gcc.dg/vect/slp-21.c
  36a51711f52dc82c7546d284e2f6904a  gcc/testsuite/gcc.dg/vect/slp-22.c
  986d9befacef0ad372eba8123772baa8  gcc/testsuite/gcc.dg/vect/slp-23.c
  c9166044854a8e3d87de33160660cfbd  gcc/testsuite/gcc.dg/vect/slp-24-big-array.c
*************** e5e1221b0f3db24e3f3bf9735cf578a4  gcc/te
*** 43046,43052 ****
  140aa4e68ff44957bad070a78e984763  gcc/testsuite/gcc.dg/vect/slp-26.c
  30f67a86cc78aee3647b6369c43623a2  gcc/testsuite/gcc.dg/vect/slp-28.c
  620f25efe383cf052fc165488dc172ac  gcc/testsuite/gcc.dg/vect/slp-3-big-array.c
! 7dc974b11adaed88b3b61acba3a1d296  gcc/testsuite/gcc.dg/vect/slp-3.c
  f1371cb78bd8406146bf5d3be6ca8a13  gcc/testsuite/gcc.dg/vect/slp-33.c
  a8ca70fc391abd3a49dd54f752958fa2  gcc/testsuite/gcc.dg/vect/slp-34-big-array.c
  a5429ab06c5986c2e0271c3a6f4c6cf0  gcc/testsuite/gcc.dg/vect/slp-34.c
--- 46185,46191 ----
  140aa4e68ff44957bad070a78e984763  gcc/testsuite/gcc.dg/vect/slp-26.c
  30f67a86cc78aee3647b6369c43623a2  gcc/testsuite/gcc.dg/vect/slp-28.c
  620f25efe383cf052fc165488dc172ac  gcc/testsuite/gcc.dg/vect/slp-3-big-array.c
! 9705de3407a6a4397a70e55197b417b3  gcc/testsuite/gcc.dg/vect/slp-3.c
  f1371cb78bd8406146bf5d3be6ca8a13  gcc/testsuite/gcc.dg/vect/slp-33.c
  a8ca70fc391abd3a49dd54f752958fa2  gcc/testsuite/gcc.dg/vect/slp-34-big-array.c
  a5429ab06c5986c2e0271c3a6f4c6cf0  gcc/testsuite/gcc.dg/vect/slp-34.c
*************** ede1734f85186c73229dd4786f51636c  gcc/te
*** 43059,43068 ****
  636f816ad3566bd94c00ce9f450da9e3  gcc/testsuite/gcc.dg/vect/slp-4.c
  5da40f81b7bf77865a2bd24b6770ff69  gcc/testsuite/gcc.dg/vect/slp-41.c
  03ddbd9e0aebee2332870297075726df  gcc/testsuite/gcc.dg/vect/slp-42.c
! 90356a03ecf699aa99d007b77b5e9097  gcc/testsuite/gcc.dg/vect/slp-43.c
  a397bfe9f818dafa44b2593952e5c479  gcc/testsuite/gcc.dg/vect/slp-44.c
! 792cbc44782df2a27127d2a3c92d5e25  gcc/testsuite/gcc.dg/vect/slp-45.c
! e6fe44ad33b9142d037f598ff7535789  gcc/testsuite/gcc.dg/vect/slp-46.c
  94cab958cbf9ae8fce13bdd8c3b74a6d  gcc/testsuite/gcc.dg/vect/slp-5.c
  af23113d71fb18e642c9a7a2b9f9c0fd  gcc/testsuite/gcc.dg/vect/slp-6.c
  b3d2fff99fdc9c33e68f2ba4a3b8955b  gcc/testsuite/gcc.dg/vect/slp-7.c
--- 46198,46210 ----
  636f816ad3566bd94c00ce9f450da9e3  gcc/testsuite/gcc.dg/vect/slp-4.c
  5da40f81b7bf77865a2bd24b6770ff69  gcc/testsuite/gcc.dg/vect/slp-41.c
  03ddbd9e0aebee2332870297075726df  gcc/testsuite/gcc.dg/vect/slp-42.c
! 822c04ff63bb1c82aafdcb8e8cc9a7a6  gcc/testsuite/gcc.dg/vect/slp-43.c
  a397bfe9f818dafa44b2593952e5c479  gcc/testsuite/gcc.dg/vect/slp-44.c
! 17e88098b60257dac75a6f022b16bd1e  gcc/testsuite/gcc.dg/vect/slp-45.c
! ca8d8277a6f49e408bef068a9c40deb4  gcc/testsuite/gcc.dg/vect/slp-46.c
! 4ee7f77e4da88fb9cc7fdfe1d22c1c2c  gcc/testsuite/gcc.dg/vect/slp-47.c
! a5b5fe21d953b3cf402506aa57c3d065  gcc/testsuite/gcc.dg/vect/slp-48.c
! d411c01b4877554576a690ad75642c9c  gcc/testsuite/gcc.dg/vect/slp-49.c
  94cab958cbf9ae8fce13bdd8c3b74a6d  gcc/testsuite/gcc.dg/vect/slp-5.c
  af23113d71fb18e642c9a7a2b9f9c0fd  gcc/testsuite/gcc.dg/vect/slp-6.c
  b3d2fff99fdc9c33e68f2ba4a3b8955b  gcc/testsuite/gcc.dg/vect/slp-7.c
*************** fae76ca272ca1d56a1750929315ad201  gcc/te
*** 43077,43083 ****
  128dd7ca21c17a4f31443f1f3ae6a233  gcc/testsuite/gcc.dg/vect/slp-multitypes-1.c
  378fd3c047a4e11988b5916b89079e54  gcc/testsuite/gcc.dg/vect/slp-multitypes-10.c
  36720b86229f187364440189c978bdb7  gcc/testsuite/gcc.dg/vect/slp-multitypes-11-big-array.c
! 8cd5189f13aaacbc34fe5293e0b7ac63  gcc/testsuite/gcc.dg/vect/slp-multitypes-11.c
  611fa558934babaeccf3ebcc805c085a  gcc/testsuite/gcc.dg/vect/slp-multitypes-12.c
  c3b3a41e54fbfae2cbdac1a7285c0ca4  gcc/testsuite/gcc.dg/vect/slp-multitypes-13.c
  409aa5591bdee4aacf2a5aa83d03e9f9  gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c
--- 46219,46225 ----
  128dd7ca21c17a4f31443f1f3ae6a233  gcc/testsuite/gcc.dg/vect/slp-multitypes-1.c
  378fd3c047a4e11988b5916b89079e54  gcc/testsuite/gcc.dg/vect/slp-multitypes-10.c
  36720b86229f187364440189c978bdb7  gcc/testsuite/gcc.dg/vect/slp-multitypes-11-big-array.c
! 80bbb2cd6658321995687dd919648137  gcc/testsuite/gcc.dg/vect/slp-multitypes-11.c
  611fa558934babaeccf3ebcc805c085a  gcc/testsuite/gcc.dg/vect/slp-multitypes-12.c
  c3b3a41e54fbfae2cbdac1a7285c0ca4  gcc/testsuite/gcc.dg/vect/slp-multitypes-13.c
  409aa5591bdee4aacf2a5aa83d03e9f9  gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c
*************** b0dbfa6cdc6dde5390e046d7232b175a  gcc/te
*** 43096,43117 ****
  24ca29b41e5261a4514fbabfda7b1a56  gcc/testsuite/gcc.dg/vect/slp-perm-3.c
  5b86ca4cac6d5223a0bec92eb10300b9  gcc/testsuite/gcc.dg/vect/slp-perm-4.c
  e9bb13be425e14161749170fa87ec0f6  gcc/testsuite/gcc.dg/vect/slp-perm-5.c
! 2cec0c5593b3beb09ba84ecd1ed6d847  gcc/testsuite/gcc.dg/vect/slp-perm-6.c
  46764cca553d4fe0718067fb18004da4  gcc/testsuite/gcc.dg/vect/slp-perm-7.c
! afeed7c5ae175b874fd06632b4c8af48  gcc/testsuite/gcc.dg/vect/slp-perm-8.c
! 1583b85c6b7816c855c5187ce4c70aa9  gcc/testsuite/gcc.dg/vect/slp-perm-9.c
! 9ed5dcab2bade0cd891d5a1e7ea1803e  gcc/testsuite/gcc.dg/vect/slp-reduc-1.c
  e33d9305ff87bf0b76410ea5729955bf  gcc/testsuite/gcc.dg/vect/slp-reduc-10a.c
  c4e2f923d33c5b7b33949455e9f92e65  gcc/testsuite/gcc.dg/vect/slp-reduc-10b.c
  5a50e4f3cc91f11db970ceee67a4e452  gcc/testsuite/gcc.dg/vect/slp-reduc-10c.c
  5fb72323180fdc61146cc89144a7d3f2  gcc/testsuite/gcc.dg/vect/slp-reduc-10d.c
  3f349243229dc47da1e7ca7f0be9ee64  gcc/testsuite/gcc.dg/vect/slp-reduc-10e.c
! c62a767b9e46966c3feff81edf812e6e  gcc/testsuite/gcc.dg/vect/slp-reduc-2.c
! c0258fb70f09ae7f636e2b71167aa06c  gcc/testsuite/gcc.dg/vect/slp-reduc-3.c
! 765ebdd6f96b4b08431e575959338177  gcc/testsuite/gcc.dg/vect/slp-reduc-4.c
! cdd9921a722582970d4bd25b3c917c73  gcc/testsuite/gcc.dg/vect/slp-reduc-5.c
  e0e83977857b0d99ff7820be33d715b3  gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
! 62e9316c7cbab5a448977f3e9bf89472  gcc/testsuite/gcc.dg/vect/slp-reduc-7.c
  030cb8061ca9614b756c8f4471116e37  gcc/testsuite/gcc.dg/vect/slp-reduc-8.c
  47a58a2432ef206c186d1cc0b3bd5bc0  gcc/testsuite/gcc.dg/vect/slp-reduc-9.c
  df438928392b81c11f2a1e3220ae04a3  gcc/testsuite/gcc.dg/vect/slp-reduc-sad-2.c
--- 46238,46260 ----
  24ca29b41e5261a4514fbabfda7b1a56  gcc/testsuite/gcc.dg/vect/slp-perm-3.c
  5b86ca4cac6d5223a0bec92eb10300b9  gcc/testsuite/gcc.dg/vect/slp-perm-4.c
  e9bb13be425e14161749170fa87ec0f6  gcc/testsuite/gcc.dg/vect/slp-perm-5.c
! ed9aee5045ea1db454e98a0a75bb0595  gcc/testsuite/gcc.dg/vect/slp-perm-6.c
  46764cca553d4fe0718067fb18004da4  gcc/testsuite/gcc.dg/vect/slp-perm-7.c
! 12acbe40978aea85a359e0398284e3c2  gcc/testsuite/gcc.dg/vect/slp-perm-8.c
! 2c06db9e17637e0960463ba616b91c6a  gcc/testsuite/gcc.dg/vect/slp-perm-9.c
! 15dec799e753a2ad77b96874b96dc1c8  gcc/testsuite/gcc.dg/vect/slp-reduc-1.c
  e33d9305ff87bf0b76410ea5729955bf  gcc/testsuite/gcc.dg/vect/slp-reduc-10a.c
  c4e2f923d33c5b7b33949455e9f92e65  gcc/testsuite/gcc.dg/vect/slp-reduc-10b.c
  5a50e4f3cc91f11db970ceee67a4e452  gcc/testsuite/gcc.dg/vect/slp-reduc-10c.c
  5fb72323180fdc61146cc89144a7d3f2  gcc/testsuite/gcc.dg/vect/slp-reduc-10d.c
  3f349243229dc47da1e7ca7f0be9ee64  gcc/testsuite/gcc.dg/vect/slp-reduc-10e.c
! 72470473142b614c9abbb4961ae363e0  gcc/testsuite/gcc.dg/vect/slp-reduc-11.c
! c2dfc1561d3c84ccf7888c7ec864dca3  gcc/testsuite/gcc.dg/vect/slp-reduc-2.c
! 75285f8513469a815d923eef56a5a8ac  gcc/testsuite/gcc.dg/vect/slp-reduc-3.c
! 59ddba033e6520d7023e0cc4cf50f919  gcc/testsuite/gcc.dg/vect/slp-reduc-4.c
! 1b5987e80f4b7de162d30d061e5a4354  gcc/testsuite/gcc.dg/vect/slp-reduc-5.c
  e0e83977857b0d99ff7820be33d715b3  gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
! 40e5371238678c762c14d45c232ab7d3  gcc/testsuite/gcc.dg/vect/slp-reduc-7.c
  030cb8061ca9614b756c8f4471116e37  gcc/testsuite/gcc.dg/vect/slp-reduc-8.c
  47a58a2432ef206c186d1cc0b3bd5bc0  gcc/testsuite/gcc.dg/vect/slp-reduc-9.c
  df438928392b81c11f2a1e3220ae04a3  gcc/testsuite/gcc.dg/vect/slp-reduc-sad-2.c
*************** e7af2caa929bde4629f98c1edd91b168  gcc/te
*** 43130,43143 ****
  a41c758a08dbbae4cdce175be25b9aa5  gcc/testsuite/gcc.dg/vect/vect-10-big-array.c
  d9d22ef4c80b68b2157aace863e5c8d9  gcc/testsuite/gcc.dg/vect/vect-10.c
  943f718db2328380721922c51e55afa7  gcc/testsuite/gcc.dg/vect/vect-100.c
! fd40fb0973974f640f3aee635455345d  gcc/testsuite/gcc.dg/vect/vect-103.c
  b3b389cba52a916cb099287ef0a98b13  gcc/testsuite/gcc.dg/vect/vect-104.c
  74fac254331754dcf4736b2e8ae2b563  gcc/testsuite/gcc.dg/vect/vect-105-big-array.c
  c10f06766fe6db4862006e60420eae40  gcc/testsuite/gcc.dg/vect/vect-105.c
  ae9489ec6ff59b5feb8a10fb4425ddd6  gcc/testsuite/gcc.dg/vect/vect-106.c
  8b9ebb1a81bc88f87a3cc9dbc46ad4c6  gcc/testsuite/gcc.dg/vect/vect-107.c
  34a4614643e01fba31b451da7cbf5baa  gcc/testsuite/gcc.dg/vect/vect-108.c
! 6652bb6665ae392185c7c99c8262e1bc  gcc/testsuite/gcc.dg/vect/vect-109.c
  34614ac36b22b0274f5fc104ab8669f8  gcc/testsuite/gcc.dg/vect/vect-11.c
  77d4ebd73bb6f6747b83b7344fcdcf15  gcc/testsuite/gcc.dg/vect/vect-110.c
  6e22fe753f1e436104d6365e212c5f16  gcc/testsuite/gcc.dg/vect/vect-112-big-array.c
--- 46273,46286 ----
  a41c758a08dbbae4cdce175be25b9aa5  gcc/testsuite/gcc.dg/vect/vect-10-big-array.c
  d9d22ef4c80b68b2157aace863e5c8d9  gcc/testsuite/gcc.dg/vect/vect-10.c
  943f718db2328380721922c51e55afa7  gcc/testsuite/gcc.dg/vect/vect-100.c
! ea3f47007476c0ffa56db011c3f499f7  gcc/testsuite/gcc.dg/vect/vect-103.c
  b3b389cba52a916cb099287ef0a98b13  gcc/testsuite/gcc.dg/vect/vect-104.c
  74fac254331754dcf4736b2e8ae2b563  gcc/testsuite/gcc.dg/vect/vect-105-big-array.c
  c10f06766fe6db4862006e60420eae40  gcc/testsuite/gcc.dg/vect/vect-105.c
  ae9489ec6ff59b5feb8a10fb4425ddd6  gcc/testsuite/gcc.dg/vect/vect-106.c
  8b9ebb1a81bc88f87a3cc9dbc46ad4c6  gcc/testsuite/gcc.dg/vect/vect-107.c
  34a4614643e01fba31b451da7cbf5baa  gcc/testsuite/gcc.dg/vect/vect-108.c
! 9ccee724f51eaf57a6458f4c7bfdfa4f  gcc/testsuite/gcc.dg/vect/vect-109.c
  34614ac36b22b0274f5fc104ab8669f8  gcc/testsuite/gcc.dg/vect/vect-11.c
  77d4ebd73bb6f6747b83b7344fcdcf15  gcc/testsuite/gcc.dg/vect/vect-110.c
  6e22fe753f1e436104d6365e212c5f16  gcc/testsuite/gcc.dg/vect/vect-112-big-array.c
*************** aa854d154802da25b63adab581d1fd59  gcc/te
*** 43188,43195 ****
  ebad80bf0a1a6818c90300b5f1292418  gcc/testsuite/gcc.dg/vect/vect-33.c
  47625e9675b3fa0e5b0690b38bb7726f  gcc/testsuite/gcc.dg/vect/vect-34-big-array.c
  f392d99bc7357a4d1265d46aace51636  gcc/testsuite/gcc.dg/vect/vect-34.c
! ffbbb822d8d5136adcb6d06bf0f20a31  gcc/testsuite/gcc.dg/vect/vect-35-big-array.c
! 6cc8a92f04b2912540f62f5dd7fd0081  gcc/testsuite/gcc.dg/vect/vect-35.c
  a287b48a98fe5cbaf4ac63080a6fa826  gcc/testsuite/gcc.dg/vect/vect-36-big-array.c
  d1bd152f7bb5c25d59cd6d46b0e236bf  gcc/testsuite/gcc.dg/vect/vect-36.c
  b94979e4bc03d519e5ae1e1aa5a5bc4e  gcc/testsuite/gcc.dg/vect/vect-38.c
--- 46331,46338 ----
  ebad80bf0a1a6818c90300b5f1292418  gcc/testsuite/gcc.dg/vect/vect-33.c
  47625e9675b3fa0e5b0690b38bb7726f  gcc/testsuite/gcc.dg/vect/vect-34-big-array.c
  f392d99bc7357a4d1265d46aace51636  gcc/testsuite/gcc.dg/vect/vect-34.c
! 23258496e0f95475d8420ffe38f9c8ac  gcc/testsuite/gcc.dg/vect/vect-35-big-array.c
! 0e97bb31fecb3c77298fd092a4ded6f5  gcc/testsuite/gcc.dg/vect/vect-35.c
  a287b48a98fe5cbaf4ac63080a6fa826  gcc/testsuite/gcc.dg/vect/vect-36-big-array.c
  d1bd152f7bb5c25d59cd6d46b0e236bf  gcc/testsuite/gcc.dg/vect/vect-36.c
  b94979e4bc03d519e5ae1e1aa5a5bc4e  gcc/testsuite/gcc.dg/vect/vect-38.c
*************** f52a639e72d8b3585d3fbf67ead95e6c  gcc/te
*** 43248,43254 ****
  3ffd13d3a8fcb05a4e3f6730e4be2053  gcc/testsuite/gcc.dg/vect/vect-89-big-array.c
  bbed9708803e06f1e29c75cbabe1a8f2  gcc/testsuite/gcc.dg/vect/vect-89.c
  84ff8a851f2889e15c8bc3141c319a34  gcc/testsuite/gcc.dg/vect/vect-9.c
! d0823fd69f25fee57a9b1d059d8ae569  gcc/testsuite/gcc.dg/vect/vect-91.c
  80da3797bd4f5b3eecfb5635a2a105cb  gcc/testsuite/gcc.dg/vect/vect-92.c
  47bd58197d325d0fb1dfc95fef1f5b8d  gcc/testsuite/gcc.dg/vect/vect-93.c
  b5beda8f210ec1cc64a12ed0b78ca087  gcc/testsuite/gcc.dg/vect/vect-95.c
--- 46391,46397 ----
  3ffd13d3a8fcb05a4e3f6730e4be2053  gcc/testsuite/gcc.dg/vect/vect-89-big-array.c
  bbed9708803e06f1e29c75cbabe1a8f2  gcc/testsuite/gcc.dg/vect/vect-89.c
  84ff8a851f2889e15c8bc3141c319a34  gcc/testsuite/gcc.dg/vect/vect-9.c
! e4d92e200d265bb61bacb0900bca5f8d  gcc/testsuite/gcc.dg/vect/vect-91.c
  80da3797bd4f5b3eecfb5635a2a105cb  gcc/testsuite/gcc.dg/vect/vect-92.c
  47bd58197d325d0fb1dfc95fef1f5b8d  gcc/testsuite/gcc.dg/vect/vect-93.c
  b5beda8f210ec1cc64a12ed0b78ca087  gcc/testsuite/gcc.dg/vect/vect-95.c
*************** b2d5fdfbc58c5118bd998f7c68a8c577  gcc/te
*** 43312,43322 ****
  3345e4d48d4dae1815be747d1f004f30  gcc/testsuite/gcc.dg/vect/vect-complex-1.c
  b81ef7010ac5d9d83cfe4611715502a2  gcc/testsuite/gcc.dg/vect/vect-complex-2.c
  e4e0ae2a20f798eba85140061b6a6ad7  gcc/testsuite/gcc.dg/vect/vect-complex-4.c
! 367d9d0d2e8e9c2d599c25af6d972cda  gcc/testsuite/gcc.dg/vect/vect-complex-5.c
  9c48c2e7ee6b6e1e9b1e2b7901602fbe  gcc/testsuite/gcc.dg/vect/vect-cond-1.c
  a99df602f63d4a5feb6218eea711914c  gcc/testsuite/gcc.dg/vect/vect-cond-10.c
  f8505a9522f91f3c6e75d412bfaf15c4  gcc/testsuite/gcc.dg/vect/vect-cond-11.c
  7c19802622ded8e0ba7ba5d19673294d  gcc/testsuite/gcc.dg/vect/vect-cond-12.c
  712c13b79dff5bb5217da812c8ede340  gcc/testsuite/gcc.dg/vect/vect-cond-2.c
  ff9fb5835d0218f0d8fc8d2eebee9cd1  gcc/testsuite/gcc.dg/vect/vect-cond-3.c
  cb3604d059d377d3776d6c2581c5c08b  gcc/testsuite/gcc.dg/vect/vect-cond-4.c
--- 46455,46466 ----
  3345e4d48d4dae1815be747d1f004f30  gcc/testsuite/gcc.dg/vect/vect-complex-1.c
  b81ef7010ac5d9d83cfe4611715502a2  gcc/testsuite/gcc.dg/vect/vect-complex-2.c
  e4e0ae2a20f798eba85140061b6a6ad7  gcc/testsuite/gcc.dg/vect/vect-complex-4.c
! eafef82eb0f50e37d2fec2ed962bb498  gcc/testsuite/gcc.dg/vect/vect-complex-5.c
  9c48c2e7ee6b6e1e9b1e2b7901602fbe  gcc/testsuite/gcc.dg/vect/vect-cond-1.c
  a99df602f63d4a5feb6218eea711914c  gcc/testsuite/gcc.dg/vect/vect-cond-10.c
  f8505a9522f91f3c6e75d412bfaf15c4  gcc/testsuite/gcc.dg/vect/vect-cond-11.c
  7c19802622ded8e0ba7ba5d19673294d  gcc/testsuite/gcc.dg/vect/vect-cond-12.c
+ 23f2c859446e7317c1f55b4532293e1f  gcc/testsuite/gcc.dg/vect/vect-cond-13.c
  712c13b79dff5bb5217da812c8ede340  gcc/testsuite/gcc.dg/vect/vect-cond-2.c
  ff9fb5835d0218f0d8fc8d2eebee9cd1  gcc/testsuite/gcc.dg/vect/vect-cond-3.c
  cb3604d059d377d3776d6c2581c5c08b  gcc/testsuite/gcc.dg/vect/vect-cond-4.c
*************** b4188256cd6221fb7da940f6df96e212  gcc/te
*** 43339,43344 ****
--- 46483,46494 ----
  536ace2e50ab35e8e72d705f7f83e894  gcc/testsuite/gcc.dg/vect/vect-cond-reduc-4.c
  354271b6665dd6a9f399e33f82de844b  gcc/testsuite/gcc.dg/vect/vect-cond-reduc-5.c
  32eea07216ed1bd222c4bbe9811ae8ea  gcc/testsuite/gcc.dg/vect/vect-cond-reduc-6.c
+ 027686170ba85c903a9f643110fb3e3c  gcc/testsuite/gcc.dg/vect/vect-cost-model-1.c
+ ef8210af227234a14b841ff219badabd  gcc/testsuite/gcc.dg/vect/vect-cost-model-2.c
+ 51ec3366cd8da68d9bea193898863ea9  gcc/testsuite/gcc.dg/vect/vect-cost-model-3.c
+ f144da89da4331752490c122d7327ead  gcc/testsuite/gcc.dg/vect/vect-cost-model-4.c
+ 3804fc704836b9c53f86b72eefdfe0c2  gcc/testsuite/gcc.dg/vect/vect-cost-model-5.c
+ 46d80b9e652277c492accd6a5c0fbc8e  gcc/testsuite/gcc.dg/vect/vect-cost-model-6.c
  c6eb69337f445f03241c930aa5ae855c  gcc/testsuite/gcc.dg/vect/vect-cselim-1.c
  da6c54a57c412277438b8a28fa335e40  gcc/testsuite/gcc.dg/vect/vect-cselim-2.c
  dce2415ccc21ee8df7ffd1b533a4cd37  gcc/testsuite/gcc.dg/vect/vect-ctor-1.c
*************** ecc6e535f52f16dbcde06462b089ec97  gcc/te
*** 43353,43359 ****
  325db9bd39399b062ac1e02d48e286f3  gcc/testsuite/gcc.dg/vect/vect-double-reduc-7.c
  5255db3025b7dc2620f6c83a2979c5ba  gcc/testsuite/gcc.dg/vect/vect-dv-1.c
  f19a7bd823d81009b19c7d93f5087b24  gcc/testsuite/gcc.dg/vect/vect-epilogues-2.c
! 35ab8fa1964610b5e3e5016aac3d32ad  gcc/testsuite/gcc.dg/vect/vect-epilogues.c
  5a96e68b10c3c631b0811cfad4eb5962  gcc/testsuite/gcc.dg/vect/vect-float-extend-1.c
  12d2eac03f0327fc0c443f9ee6e88e2b  gcc/testsuite/gcc.dg/vect/vect-float-truncate-1.c
  cf4a4d6e6cc4b23522c19982266ca248  gcc/testsuite/gcc.dg/vect/vect-floatint-conversion-1.c
--- 46503,46509 ----
  325db9bd39399b062ac1e02d48e286f3  gcc/testsuite/gcc.dg/vect/vect-double-reduc-7.c
  5255db3025b7dc2620f6c83a2979c5ba  gcc/testsuite/gcc.dg/vect/vect-dv-1.c
  f19a7bd823d81009b19c7d93f5087b24  gcc/testsuite/gcc.dg/vect/vect-epilogues-2.c
! b0b659d3d34d1c801baa65099651a01a  gcc/testsuite/gcc.dg/vect/vect-epilogues.c
  5a96e68b10c3c631b0811cfad4eb5962  gcc/testsuite/gcc.dg/vect/vect-float-extend-1.c
  12d2eac03f0327fc0c443f9ee6e88e2b  gcc/testsuite/gcc.dg/vect/vect-float-truncate-1.c
  cf4a4d6e6cc4b23522c19982266ca248  gcc/testsuite/gcc.dg/vect/vect-floatint-conversion-1.c
*************** d676f038674efad4914da01fc8379f28  gcc/te
*** 43399,43404 ****
--- 46549,46555 ----
  afa1a602036d14e70fa1b02ea20d919e  gcc/testsuite/gcc.dg/vect/vect-live-3.c
  a016634eea53109923bc8853517120f3  gcc/testsuite/gcc.dg/vect/vect-live-4.c
  ba11fdb8c1ad9eb5e1be0865d6fd4b98  gcc/testsuite/gcc.dg/vect/vect-live-5.c
+ c75c8a681d57daf063af3e8d9b0bf67b  gcc/testsuite/gcc.dg/vect/vect-live-6.c
  354e369f3e3fe9c8bc3d975c408dcac6  gcc/testsuite/gcc.dg/vect/vect-live-slp-1.c
  075ba531c30f4d82eaf6fa6b3eca8c1e  gcc/testsuite/gcc.dg/vect/vect-live-slp-2.c
  99a44482d23d626b05ab44c5e256afbf  gcc/testsuite/gcc.dg/vect/vect-live-slp-3.c
*************** ccf146e115b5e565086e582ba389575e  gcc/te
*** 43491,43496 ****
--- 46642,46650 ----
  e6330a4b2d9a87e898cdaadd8b254246  gcc/testsuite/gcc.dg/vect/vect-outer-simd-1.c
  988e5dbde608634bea71cb2fe3acb5a3  gcc/testsuite/gcc.dg/vect/vect-outer-simd-2.c
  ea891669f15d8e84d6fda8024dd5f815  gcc/testsuite/gcc.dg/vect/vect-outer-simd-3.c
+ 5666635e14070a657bf1e668d3ed2801  gcc/testsuite/gcc.dg/vect/vect-outer-slp-1.c
+ df36cb0c240831b9733207208bc578ed  gcc/testsuite/gcc.dg/vect/vect-outer-slp-2.c
+ 347db98e53368a88ad19a70adab83483  gcc/testsuite/gcc.dg/vect/vect-outer-slp-3.c
  aaa24fa9ac85318455e522bae93400b0  gcc/testsuite/gcc.dg/vect/vect-over-widen-1-big-array.c
  224b675bc9ce76f75269395b98e27739  gcc/testsuite/gcc.dg/vect/vect-over-widen-1.c
  7ef8875afbd4bb0c3a177da55ea4c13b  gcc/testsuite/gcc.dg/vect/vect-over-widen-10.c
*************** b8ee2e05bb744185d8fae3450ec0bf36  gcc/te
*** 43571,43577 ****
  e6d7cffdfe32895fb6cd02c38d3f7dfa  gcc/testsuite/gcc.dg/vect/vect-reduc-in-order-1.c
  b7b984e0456b49a107ab1fead4038420  gcc/testsuite/gcc.dg/vect/vect-reduc-in-order-2.c
  1eef69f3a699802657df0415b9475266  gcc/testsuite/gcc.dg/vect/vect-reduc-in-order-3.c
! 2b4febebbd436c1f0e567362cda19314  gcc/testsuite/gcc.dg/vect/vect-reduc-in-order-4.c
  a1590cdef29fb480824603e746a7ab80  gcc/testsuite/gcc.dg/vect/vect-reduc-mul_1.c
  327cfa6e82122e67b62c1edd8d146433  gcc/testsuite/gcc.dg/vect/vect-reduc-mul_2.c
  ab2e4fc58c88f361a248cf81039c8523  gcc/testsuite/gcc.dg/vect/vect-reduc-or_1.c
--- 46725,46731 ----
  e6d7cffdfe32895fb6cd02c38d3f7dfa  gcc/testsuite/gcc.dg/vect/vect-reduc-in-order-1.c
  b7b984e0456b49a107ab1fead4038420  gcc/testsuite/gcc.dg/vect/vect-reduc-in-order-2.c
  1eef69f3a699802657df0415b9475266  gcc/testsuite/gcc.dg/vect/vect-reduc-in-order-3.c
! 66e5f26b8cc2d76719332b01488beecd  gcc/testsuite/gcc.dg/vect/vect-reduc-in-order-4.c
  a1590cdef29fb480824603e746a7ab80  gcc/testsuite/gcc.dg/vect/vect-reduc-mul_1.c
  327cfa6e82122e67b62c1edd8d146433  gcc/testsuite/gcc.dg/vect/vect-reduc-mul_2.c
  ab2e4fc58c88f361a248cf81039c8523  gcc/testsuite/gcc.dg/vect/vect-reduc-or_1.c
*************** e09d0611313202af9ed401131b732f60  gcc/te
*** 43607,43613 ****
  5d24ff9975021460fe20c032e9e6f33a  gcc/testsuite/gcc.dg/vect/vect-rounding-nearbyintf.c
  0f9bae66d5cefd017d87eed08f3abe1b  gcc/testsuite/gcc.dg/vect/vect-rounding-round.c
  e2c1b1e126604d8abd27603de94e25b3  gcc/testsuite/gcc.dg/vect/vect-rounding-roundf.c
! 62cf0940d5c0797d27b51a34f1040cc3  gcc/testsuite/gcc.dg/vect/vect-sdiv-pow2-1.c
  f08b879256c2fc596e95558ea71b10dc  gcc/testsuite/gcc.dg/vect/vect-sdivmod-1.c
  9011832a762730fdc6c926b601790d67  gcc/testsuite/gcc.dg/vect/vect-shift-1.c
  82796b1dfa62eada3f1dc721021e93b1  gcc/testsuite/gcc.dg/vect/vect-shift-2-big-array.c
--- 46761,46767 ----
  5d24ff9975021460fe20c032e9e6f33a  gcc/testsuite/gcc.dg/vect/vect-rounding-nearbyintf.c
  0f9bae66d5cefd017d87eed08f3abe1b  gcc/testsuite/gcc.dg/vect/vect-rounding-round.c
  e2c1b1e126604d8abd27603de94e25b3  gcc/testsuite/gcc.dg/vect/vect-rounding-roundf.c
! 0d5ca77d0aff00d6dcf72c6b98e86519  gcc/testsuite/gcc.dg/vect/vect-sdiv-pow2-1.c
  f08b879256c2fc596e95558ea71b10dc  gcc/testsuite/gcc.dg/vect/vect-sdivmod-1.c
  9011832a762730fdc6c926b601790d67  gcc/testsuite/gcc.dg/vect/vect-shift-1.c
  82796b1dfa62eada3f1dc721021e93b1  gcc/testsuite/gcc.dg/vect/vect-shift-2-big-array.c
*************** be23045c05cc8bc221e254d4264d3330  gcc/te
*** 43623,43629 ****
--- 46777,46787 ----
  9e20fdc587b38d3a35e1e47a82cde0ad  gcc/testsuite/gcc.dg/vect/vect-simd-14.c
  d97bb14eaa463c7f3e2a94150ca6c42a  gcc/testsuite/gcc.dg/vect/vect-simd-15.c
  c2dd0980ae08fc1379d9d11238f808a7  gcc/testsuite/gcc.dg/vect/vect-simd-16.c
+ bad60085e2f9deac920b28ca450bd47c  gcc/testsuite/gcc.dg/vect/vect-simd-17.c
+ 74f49f5086c1dd1f5d5fdb21ef7f0600  gcc/testsuite/gcc.dg/vect/vect-simd-18.c
+ a648c2d5f07b51c11df163da0b0bd2d8  gcc/testsuite/gcc.dg/vect/vect-simd-19.c
  5cd096983154275509f757eca11421cc  gcc/testsuite/gcc.dg/vect/vect-simd-2.c
+ e20fa606277db4d6a83a0c85b306bcfa  gcc/testsuite/gcc.dg/vect/vect-simd-20.c
  038a733926c218424972ecbb363de886  gcc/testsuite/gcc.dg/vect/vect-simd-3.c
  3985e66f5c318e1f67337946ef35d269  gcc/testsuite/gcc.dg/vect/vect-simd-4.c
  b706dc8a8f0465d5f4517099eb8a07c4  gcc/testsuite/gcc.dg/vect/vect-simd-5.c
*************** a635c9f92719f684fc12bdcfa02f7ef5  gcc/te
*** 43688,43694 ****
  f7ec09efd18b80ae109a707068f6ee9b  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
  b26aec6173ce64399abc34d5b0842b42  gcc/testsuite/gcc.dg/vect/vect-tail-nomask-1.c
  77c1344d6e99c9bf6c4f1170c256d122  gcc/testsuite/gcc.dg/vect/vect-version-1.c
! d334aef13b1c1a272f69b98bf82c1102  gcc/testsuite/gcc.dg/vect/vect-version-2.c
  a7957f54ccc3f67952d53b86c4b0094d  gcc/testsuite/gcc.dg/vect/vect-vfa-01.c
  dc4a926156676105cfc990ccc75ee1c9  gcc/testsuite/gcc.dg/vect/vect-vfa-02.c
  b205a7b71517102e7b08e3e3a131aa45  gcc/testsuite/gcc.dg/vect/vect-vfa-03.c
--- 46846,46852 ----
  f7ec09efd18b80ae109a707068f6ee9b  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
  b26aec6173ce64399abc34d5b0842b42  gcc/testsuite/gcc.dg/vect/vect-tail-nomask-1.c
  77c1344d6e99c9bf6c4f1170c256d122  gcc/testsuite/gcc.dg/vect/vect-version-1.c
! b4f31e51d7444b0dbc43aff2dc3d5426  gcc/testsuite/gcc.dg/vect/vect-version-2.c
  a7957f54ccc3f67952d53b86c4b0094d  gcc/testsuite/gcc.dg/vect/vect-vfa-01.c
  dc4a926156676105cfc990ccc75ee1c9  gcc/testsuite/gcc.dg/vect/vect-vfa-02.c
  b205a7b71517102e7b08e3e3a131aa45  gcc/testsuite/gcc.dg/vect/vect-vfa-03.c
*************** ab5379404640e60b68283cea3a87ea22  gcc/te
*** 43714,43720 ****
  fbf164f2875819f557043a2d78017764  gcc/testsuite/gcc.dg/vect/vect-widen-shift-s8.c
  abe3c6bc74fd9730499cd8e54e143935  gcc/testsuite/gcc.dg/vect/vect-widen-shift-u16.c
  8146ba6466499582165bf09d96598f47  gcc/testsuite/gcc.dg/vect/vect-widen-shift-u8.c
! d17cc13d5ed021cf81122680cc0d3e18  gcc/testsuite/gcc.dg/vect/vect.exp
  9dfff9b6a28d5e65dca4073934514d5e  gcc/testsuite/gcc.dg/vect/wrapv-vect-7.c
  3613af6098a597772fd1b7e4dd37a0f3  gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2char.c
  431e29e277cc621ccb31b18bba96d195  gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2short.c
--- 46872,46878 ----
  fbf164f2875819f557043a2d78017764  gcc/testsuite/gcc.dg/vect/vect-widen-shift-s8.c
  abe3c6bc74fd9730499cd8e54e143935  gcc/testsuite/gcc.dg/vect/vect-widen-shift-u16.c
  8146ba6466499582165bf09d96598f47  gcc/testsuite/gcc.dg/vect/vect-widen-shift-u8.c
! 7d2c6eaf321cb302aa2a3c256dd11514  gcc/testsuite/gcc.dg/vect/vect.exp
  9dfff9b6a28d5e65dca4073934514d5e  gcc/testsuite/gcc.dg/vect/wrapv-vect-7.c
  3613af6098a597772fd1b7e4dd37a0f3  gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2char.c
  431e29e277cc621ccb31b18bba96d195  gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2short.c
*************** b74b4229263d70abbf112c2c622f29ba  gcc/te
*** 43912,43918 ****
  5cc01078c1f3f451644a44dfdc807444  gcc/testsuite/gcc.dg/vmx/varargs-6.c
  441584a435c20e33e9ba2840da79de7b  gcc/testsuite/gcc.dg/vmx/varargs-7.c
  88d7e6b1c915da50092f2f05e8403f00  gcc/testsuite/gcc.dg/vmx/vec-set.c
! 75864951a510ed33264e7acb64264a75  gcc/testsuite/gcc.dg/vmx/vmx.exp
  7b36f93de20205be4944182fe8222120  gcc/testsuite/gcc.dg/vmx/vsums.c
  0e39fb03e625fd0928ac3568284946cb  gcc/testsuite/gcc.dg/vmx/x-01.c
  780491d8a6964b34313eb871098c1ec6  gcc/testsuite/gcc.dg/vmx/x-02.c
--- 47070,47076 ----
  5cc01078c1f3f451644a44dfdc807444  gcc/testsuite/gcc.dg/vmx/varargs-6.c
  441584a435c20e33e9ba2840da79de7b  gcc/testsuite/gcc.dg/vmx/varargs-7.c
  88d7e6b1c915da50092f2f05e8403f00  gcc/testsuite/gcc.dg/vmx/vec-set.c
! d9094a103d6634453e2b4bbf5f82ff5d  gcc/testsuite/gcc.dg/vmx/vmx.exp
  7b36f93de20205be4944182fe8222120  gcc/testsuite/gcc.dg/vmx/vsums.c
  0e39fb03e625fd0928ac3568284946cb  gcc/testsuite/gcc.dg/vmx/x-01.c
  780491d8a6964b34313eb871098c1ec6  gcc/testsuite/gcc.dg/vmx/x-02.c
*************** d1bf1d3ce2ba861eed9a056b68c8a7b9  gcc/te
*** 43940,43948 ****
  c2a72555b847a160fe0e6ed226d4d97d  gcc/testsuite/gcc.dg/vshift-5.c
  667aa8ae0e01aeca6711adeb19a96dc7  gcc/testsuite/gcc.dg/vshift-6.c
  f5b5cb2b526a46cc84be22a60b28910d  gcc/testsuite/gcc.dg/vshift-7.c
! 9357989e44cd23b5fe7fef931df63976  gcc/testsuite/gcc.dg/vxworks/initpri1.c
! bfeaf9e0fd9a2f701c3352b80a357589  gcc/testsuite/gcc.dg/vxworks/initpri2.c
! eaf2b623c4c4e3ed764c45367e951e99  gcc/testsuite/gcc.dg/vxworks/vxworks.exp
  807831bd928d8bca1ad6f704a5f898aa  gcc/testsuite/gcc.dg/warn-1.c
  707e0da2129d4bb332c0bf10ea621989  gcc/testsuite/gcc.dg/warn-abs-1.c
  be8f7b50176d3cc112e9b45dfbff569c  gcc/testsuite/gcc.dg/warn-addr-cmp.c
--- 47098,47106 ----
  c2a72555b847a160fe0e6ed226d4d97d  gcc/testsuite/gcc.dg/vshift-5.c
  667aa8ae0e01aeca6711adeb19a96dc7  gcc/testsuite/gcc.dg/vshift-6.c
  f5b5cb2b526a46cc84be22a60b28910d  gcc/testsuite/gcc.dg/vshift-7.c
! e24f2248b6dfe2458324a1f859ecb3c3  gcc/testsuite/gcc.dg/vxworks/initpri1.c
! 082cdb5ff1a15b2384040533828cac32  gcc/testsuite/gcc.dg/vxworks/initpri2.c
! 3e991a757a106e4ccccab16ecca81e6b  gcc/testsuite/gcc.dg/vxworks/vxworks.exp
  807831bd928d8bca1ad6f704a5f898aa  gcc/testsuite/gcc.dg/warn-1.c
  707e0da2129d4bb332c0bf10ea621989  gcc/testsuite/gcc.dg/warn-abs-1.c
  be8f7b50176d3cc112e9b45dfbff569c  gcc/testsuite/gcc.dg/warn-addr-cmp.c
*************** c4c05e988d611839b778bc5b1e7f94a2  gcc/te
*** 43953,43964 ****
  2abd7451e5546bb5ed64c00e71af68a6  gcc/testsuite/gcc.dg/warn-stpcpy-no-nul.c
  b2257f5f913dd4b4b9eb7a2ea834a710  gcc/testsuite/gcc.dg/warn-strcpy-no-nul.c
  337cc4c80ee4dae26f1a907d04b933ea  gcc/testsuite/gcc.dg/warn-strlen-no-nul.c
! daef91bf2f52c7a8ba3d752355baa170  gcc/testsuite/gcc.dg/warn-strnlen-no-nul-2.c
! bd103f80f8e35b9bf524ed90ac9914e0  gcc/testsuite/gcc.dg/warn-strnlen-no-nul.c
  06467199d10c768530ff05eb6bc16fb8  gcc/testsuite/gcc.dg/wcaselabel-1.c
  8c4274546261eadb1410524bcdc26c4d  gcc/testsuite/gcc.dg/wchar_t-1.c
  f2cc2a4270e9964959b2a5f3df5cdaae  gcc/testsuite/gcc.dg/wchar_t-2.c
! d49d03cc863c171bad6b12a4833d8cfb  gcc/testsuite/gcc.dg/weak/typeof-2.c
  cd6fc4b503907cb791718355b2e8b13e  gcc/testsuite/gcc.dg/weak/weak-1.c
  5b030d8bcb22dedd984e8d8dae17cfb6  gcc/testsuite/gcc.dg/weak/weak-10.c
  121bd4b7463864effe08a934bc490b0d  gcc/testsuite/gcc.dg/weak/weak-11.c
--- 47111,47122 ----
  2abd7451e5546bb5ed64c00e71af68a6  gcc/testsuite/gcc.dg/warn-stpcpy-no-nul.c
  b2257f5f913dd4b4b9eb7a2ea834a710  gcc/testsuite/gcc.dg/warn-strcpy-no-nul.c
  337cc4c80ee4dae26f1a907d04b933ea  gcc/testsuite/gcc.dg/warn-strlen-no-nul.c
! 035c4f9516300f1af2c15ee669e80903  gcc/testsuite/gcc.dg/warn-strnlen-no-nul-2.c
! 20f4803557cd9bc4884aee485966175c  gcc/testsuite/gcc.dg/warn-strnlen-no-nul.c
  06467199d10c768530ff05eb6bc16fb8  gcc/testsuite/gcc.dg/wcaselabel-1.c
  8c4274546261eadb1410524bcdc26c4d  gcc/testsuite/gcc.dg/wchar_t-1.c
  f2cc2a4270e9964959b2a5f3df5cdaae  gcc/testsuite/gcc.dg/wchar_t-2.c
! 26cb00298290dae2d3e19fb9fa50fc15  gcc/testsuite/gcc.dg/weak/typeof-2.c
  cd6fc4b503907cb791718355b2e8b13e  gcc/testsuite/gcc.dg/weak/weak-1.c
  5b030d8bcb22dedd984e8d8dae17cfb6  gcc/testsuite/gcc.dg/weak/weak-10.c
  121bd4b7463864effe08a934bc490b0d  gcc/testsuite/gcc.dg/weak/weak-11.c
*************** b7dc9ca29b0c2fb0c11b45350fbe20ac  gcc/te
*** 43978,43984 ****
  bbde9e22b1b903e5ff4a277a65a1cb04  gcc/testsuite/gcc.dg/weak/weak-7.c
  ef4ea7d4216e9123244c1d14e75ca376  gcc/testsuite/gcc.dg/weak/weak-8.c
  df7f481c6f796831760bd5209df6243d  gcc/testsuite/gcc.dg/weak/weak-9.c
! 8f2fc5a88a64558f315e76433db16d40  gcc/testsuite/gcc.dg/weak/weak.exp
  4f8d055b663cb38e2bbb352f1cb7a53c  gcc/testsuite/gcc.dg/webizer.c
  b73fb0ba5d6e226781f1b052bc3742c5  gcc/testsuite/gcc.dg/wide-shift-128.c
  81a04bf47a86380caff11ddcb8294ecc  gcc/testsuite/gcc.dg/wide-shift-64.c
--- 47136,47142 ----
  bbde9e22b1b903e5ff4a277a65a1cb04  gcc/testsuite/gcc.dg/weak/weak-7.c
  ef4ea7d4216e9123244c1d14e75ca376  gcc/testsuite/gcc.dg/weak/weak-8.c
  df7f481c6f796831760bd5209df6243d  gcc/testsuite/gcc.dg/weak/weak-9.c
! 4cf41dd2065016fd884899baf74b4102  gcc/testsuite/gcc.dg/weak/weak.exp
  4f8d055b663cb38e2bbb352f1cb7a53c  gcc/testsuite/gcc.dg/webizer.c
  b73fb0ba5d6e226781f1b052bc3742c5  gcc/testsuite/gcc.dg/wide-shift-128.c
  81a04bf47a86380caff11ddcb8294ecc  gcc/testsuite/gcc.dg/wide-shift-64.c
*************** c34b827a7f28759ebf3d5ebc26e975b8  gcc/te
*** 44013,44027 ****
  ce7181a37e4abd0831a2d47b7a9a11f2  gcc/testsuite/gcc.dg/zero_bits_compound-2.c
  3818016c4a025396f38ca3c9bd0c1f47  gcc/testsuite/gcc.dg/zero_sign_ext_test.c
  4e040b1868690b5543136a52a2f030b3  gcc/testsuite/gcc.misc-tests/acker1.c
! 463b9c522fc88e32154f2060f1055a85  gcc/testsuite/gcc.misc-tests/acker1.exp
! 71d3ee0645552a8ac482152d2cf671b1  gcc/testsuite/gcc.misc-tests/arm-isr.c
! c11b02a9a39bb7462075df15388533bc  gcc/testsuite/gcc.misc-tests/arm-isr.exp
  69ee82e02b642cb6edfac2cec4b99756  gcc/testsuite/gcc.misc-tests/bprob-1.c
  769b91c7738037eb489394524ae54796  gcc/testsuite/gcc.misc-tests/bprob-2.c
! 667f4a3146556c0200aead5847b0ac8d  gcc/testsuite/gcc.misc-tests/bprob.exp
! 37489da2bf01b900a63d17c763369513  gcc/testsuite/gcc.misc-tests/dectest.exp
  a11bded9860644075434da1f07b7f1bf  gcc/testsuite/gcc.misc-tests/dhry.c
! a575c77b1d9f82007a4a6922727bf4f0  gcc/testsuite/gcc.misc-tests/dhry.exp
  850c45b3c3b492adf09b115c0d2d2286  gcc/testsuite/gcc.misc-tests/dhry.h
  02aa6ab9e158e9fa6e94768d75bd86cb  gcc/testsuite/gcc.misc-tests/gcov-1.c
  44d73a2d21081bbe1b4c64084331ec77  gcc/testsuite/gcc.misc-tests/gcov-10.c
--- 47171,47185 ----
  ce7181a37e4abd0831a2d47b7a9a11f2  gcc/testsuite/gcc.dg/zero_bits_compound-2.c
  3818016c4a025396f38ca3c9bd0c1f47  gcc/testsuite/gcc.dg/zero_sign_ext_test.c
  4e040b1868690b5543136a52a2f030b3  gcc/testsuite/gcc.misc-tests/acker1.c
! b7acbab2518d81723fc0c47d3fbcf290  gcc/testsuite/gcc.misc-tests/acker1.exp
! 77cec6e0fd95e9ae200e495071d1ae9a  gcc/testsuite/gcc.misc-tests/arm-isr.c
! 494b0660650dfd557229e7c3952b6680  gcc/testsuite/gcc.misc-tests/arm-isr.exp
  69ee82e02b642cb6edfac2cec4b99756  gcc/testsuite/gcc.misc-tests/bprob-1.c
  769b91c7738037eb489394524ae54796  gcc/testsuite/gcc.misc-tests/bprob-2.c
! 5e27f87401abb46c0505278321b9c21f  gcc/testsuite/gcc.misc-tests/bprob.exp
! fc0067522021665a9e9ec6ee0728a880  gcc/testsuite/gcc.misc-tests/dectest.exp
  a11bded9860644075434da1f07b7f1bf  gcc/testsuite/gcc.misc-tests/dhry.c
! 409942f84fcf373d28bba5bb13c04c36  gcc/testsuite/gcc.misc-tests/dhry.exp
  850c45b3c3b492adf09b115c0d2d2286  gcc/testsuite/gcc.misc-tests/dhry.h
  02aa6ab9e158e9fa6e94768d75bd86cb  gcc/testsuite/gcc.misc-tests/gcov-1.c
  44d73a2d21081bbe1b4c64084331ec77  gcc/testsuite/gcc.misc-tests/gcov-10.c
*************** c80d5a6473bfd6e4b6e87a183c6d05b5  gcc/te
*** 44054,44095 ****
  cd738df03ae207debc1ad168ab05d024  gcc/testsuite/gcc.misc-tests/gcov-pr86536.c
  ce15b46ef3abd924c340b60b46880630  gcc/testsuite/gcc.misc-tests/gcov-pr90574-1.c
  b4c981ce038b4aba05421ca069c8e20f  gcc/testsuite/gcc.misc-tests/gcov-pr90574-2.c
! a9b5b247c9afa5f3405401c1d53aa392  gcc/testsuite/gcc.misc-tests/gcov-pr94029.c
! 116ad9d64a165ebe7206a84968c24ff6  gcc/testsuite/gcc.misc-tests/gcov.exp
  d0c60992e0ef331502b84f8ee13cb818  gcc/testsuite/gcc.misc-tests/gcovpart-13b.c
! c025e19eef5de6d1113602a62a565bcb  gcc/testsuite/gcc.misc-tests/godump-1.c
! 00d0b8f5d5ebd5e16a8445e601423a71  gcc/testsuite/gcc.misc-tests/godump.exp
! ebd90981856c05c102862c713868edcf  gcc/testsuite/gcc.misc-tests/help.exp
  6d43a784cf19762437a5b9baec4d4095  gcc/testsuite/gcc.misc-tests/i386-pf-3dnow-1.c
  4a06f6c2d9b50ef414030d175fbe9d5c  gcc/testsuite/gcc.misc-tests/i386-pf-athlon-1.c
  bfd2eae1e2b6b0aa804a7e33580dc190  gcc/testsuite/gcc.misc-tests/i386-pf-none-1.c
  81ac61201db56efd77fdfd14cf2e4266  gcc/testsuite/gcc.misc-tests/i386-pf-sse-1.c
! 6ddaf95b415b75f703cf57e66a378bf3  gcc/testsuite/gcc.misc-tests/i386-prefetch.exp
  51bca646196e93b1c8a68319441e0595  gcc/testsuite/gcc.misc-tests/linkage-x.c
  4020995d3b08e117c48c529d5bc0b3ec  gcc/testsuite/gcc.misc-tests/linkage-y.c
! 4b46a08d3969176e1bbebd5a9b582f33  gcc/testsuite/gcc.misc-tests/linkage.exp
  1d8fa0a1210ed4c4bf0ff4dfa959f060  gcc/testsuite/gcc.misc-tests/matrix1.c
! 513a905022bbe0967c02e5cd68cb83fc  gcc/testsuite/gcc.misc-tests/matrix1.exp
  b45579fdac6008721502ddecb5df29d8  gcc/testsuite/gcc.misc-tests/mg-2.c
! 40af6c7d3836b8f78a83ab7e2c3c53e2  gcc/testsuite/gcc.misc-tests/mg-2.exp
  fb7a4e029ce05eea8ba0f03f9033caa2  gcc/testsuite/gcc.misc-tests/mg.c
! aa215e6c89c4fb9533c22163f9d73904  gcc/testsuite/gcc.misc-tests/mg.exp
! 8602e15da358128d46385319ad93309b  gcc/testsuite/gcc.misc-tests/options.exp
! 0a294a676ebf61ba540b830186ba3303  gcc/testsuite/gcc.misc-tests/output.exp
  37d75aade49dd3329803e520456ae8a6  gcc/testsuite/gcc.misc-tests/sieve.c
! 315dd0e6620174e642d57f519098a2e5  gcc/testsuite/gcc.misc-tests/sieve.exp
  f0e0d52dbb689249f8d057f00e4c65e9  gcc/testsuite/gcc.misc-tests/sort2.c
! d09ea361a09bb82c897a299b56474dd4  gcc/testsuite/gcc.misc-tests/sort2.exp
! 19a4cc24ad52c24f8f1be69b78320ca6  gcc/testsuite/gcc.src/maintainers.exp
  8031dd3c171877e36f7163b73fe68210  gcc/testsuite/gcc.target/aarch64/121127.c
  512f8592397ac26799ee85d9c29339ec  gcc/testsuite/gcc.target/aarch64/_Float16_1.c
  6bead3d18e15a037cfb743e33e7712a5  gcc/testsuite/gcc.target/aarch64/_Float16_2.c
  d365d8bf0f5478b04e6451262cf0b804  gcc/testsuite/gcc.target/aarch64/_Float16_3.c
! f48410c108eed6cf33283c09d6d671e6  gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp
! f05f22145b214a49c59e1ca8e560b549  gcc/testsuite/gcc.target/aarch64/aapcs64/abitest-2.h
  c708255687954aa3e3174b83b89e4e66  gcc/testsuite/gcc.target/aarch64/aapcs64/abitest-common.h
  ab893b67ef591ba6b84bda6885255075  gcc/testsuite/gcc.target/aarch64/aapcs64/abitest.S
! 06190910d907ca622932a5cda225eb48  gcc/testsuite/gcc.target/aarch64/aapcs64/abitest.h
  5c95bebd2e87b6e9a0e8b6c763fa8af9  gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-1.c
  a6c7d5ab48076a030ed52077beafbecf  gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-2.c
  1a111469a0b7ea77b4f8f2305b31a413  gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-3.c
--- 47212,47257 ----
  cd738df03ae207debc1ad168ab05d024  gcc/testsuite/gcc.misc-tests/gcov-pr86536.c
  ce15b46ef3abd924c340b60b46880630  gcc/testsuite/gcc.misc-tests/gcov-pr90574-1.c
  b4c981ce038b4aba05421ca069c8e20f  gcc/testsuite/gcc.misc-tests/gcov-pr90574-2.c
! 64595fd213798d37265f5eb087bb77f2  gcc/testsuite/gcc.misc-tests/gcov-pr94029.c
! bd9242e47c77c3e62554cc0d59a4d8c0  gcc/testsuite/gcc.misc-tests/gcov.exp
  d0c60992e0ef331502b84f8ee13cb818  gcc/testsuite/gcc.misc-tests/gcovpart-13b.c
! 2fe28a0fc0e2f5bf24c17847702d6d82  gcc/testsuite/gcc.misc-tests/godump-1.c
! b2f1808ef0f8aed27f29e43066dd73bf  gcc/testsuite/gcc.misc-tests/godump.exp
! cd834b8ffce6a0459f800bce2e2b3f70  gcc/testsuite/gcc.misc-tests/help.exp
  6d43a784cf19762437a5b9baec4d4095  gcc/testsuite/gcc.misc-tests/i386-pf-3dnow-1.c
  4a06f6c2d9b50ef414030d175fbe9d5c  gcc/testsuite/gcc.misc-tests/i386-pf-athlon-1.c
  bfd2eae1e2b6b0aa804a7e33580dc190  gcc/testsuite/gcc.misc-tests/i386-pf-none-1.c
  81ac61201db56efd77fdfd14cf2e4266  gcc/testsuite/gcc.misc-tests/i386-pf-sse-1.c
! 22892ab9896295ee169024cf9ca0627c  gcc/testsuite/gcc.misc-tests/i386-prefetch.exp
  51bca646196e93b1c8a68319441e0595  gcc/testsuite/gcc.misc-tests/linkage-x.c
  4020995d3b08e117c48c529d5bc0b3ec  gcc/testsuite/gcc.misc-tests/linkage-y.c
! 1d8f33042240b49d5fd66fb289dc1e87  gcc/testsuite/gcc.misc-tests/linkage.exp
  1d8fa0a1210ed4c4bf0ff4dfa959f060  gcc/testsuite/gcc.misc-tests/matrix1.c
! c18bf8f17d7c9789ff2e19fbd8fa69ae  gcc/testsuite/gcc.misc-tests/matrix1.exp
  b45579fdac6008721502ddecb5df29d8  gcc/testsuite/gcc.misc-tests/mg-2.c
! 210b5b46c77856ac24db57f4023e945b  gcc/testsuite/gcc.misc-tests/mg-2.exp
  fb7a4e029ce05eea8ba0f03f9033caa2  gcc/testsuite/gcc.misc-tests/mg.c
! c9146771ea9de17a6e68cc8b034b990d  gcc/testsuite/gcc.misc-tests/mg.exp
! 82343f4baa9a2a8198424647ed3dd3af  gcc/testsuite/gcc.misc-tests/options.exp
! 3236047a789308044d9661d6e7f0e9ea  gcc/testsuite/gcc.misc-tests/output.exp
! 69d9b561b303bd96e74ea417f73e1ac5  gcc/testsuite/gcc.misc-tests/outputs-0.c
! 773736389c2fb248099dd6dcee0ddb6b  gcc/testsuite/gcc.misc-tests/outputs-1.c
! 4bffb1320eb13262d3eb5336a6683a84  gcc/testsuite/gcc.misc-tests/outputs-2.c
! 6cde3536a289df6ff9cef5457fdcf0bd  gcc/testsuite/gcc.misc-tests/outputs.exp
  37d75aade49dd3329803e520456ae8a6  gcc/testsuite/gcc.misc-tests/sieve.c
! ffd09bab574e45f7bbf17151c17f851f  gcc/testsuite/gcc.misc-tests/sieve.exp
  f0e0d52dbb689249f8d057f00e4c65e9  gcc/testsuite/gcc.misc-tests/sort2.c
! 37cd76fb7d5dfd6e99aed21a31c13b58  gcc/testsuite/gcc.misc-tests/sort2.exp
! cc2ce2ed4623b870c4f443f9bdafaa1d  gcc/testsuite/gcc.src/maintainers.exp
  8031dd3c171877e36f7163b73fe68210  gcc/testsuite/gcc.target/aarch64/121127.c
  512f8592397ac26799ee85d9c29339ec  gcc/testsuite/gcc.target/aarch64/_Float16_1.c
  6bead3d18e15a037cfb743e33e7712a5  gcc/testsuite/gcc.target/aarch64/_Float16_2.c
  d365d8bf0f5478b04e6451262cf0b804  gcc/testsuite/gcc.target/aarch64/_Float16_3.c
! 5bf9524473f603459a89dbbad52c5f42  gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp
! fbb13bb7b4d389c258ef20d9aae07cf6  gcc/testsuite/gcc.target/aarch64/aapcs64/abitest-2.h
  c708255687954aa3e3174b83b89e4e66  gcc/testsuite/gcc.target/aarch64/aapcs64/abitest-common.h
  ab893b67ef591ba6b84bda6885255075  gcc/testsuite/gcc.target/aarch64/aapcs64/abitest.S
! 61be345a5679446528edab66406aba1e  gcc/testsuite/gcc.target/aarch64/aapcs64/abitest.h
  5c95bebd2e87b6e9a0e8b6c763fa8af9  gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-1.c
  a6c7d5ab48076a030ed52077beafbecf  gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-2.c
  1a111469a0b7ea77b4f8f2305b31a413  gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-3.c
*************** d63d966901b8e8b51837691645468a2c  gcc/te
*** 44169,44179 ****
  9ae942d81ddb29e68f70db9e55725a4b  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-8.c
  dd14302fbe1a7e8e74bc61b31eb30b59  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-9.c
  3f40e5d196a05153206e4941fc3b1d10  gcc/testsuite/gcc.target/aarch64/aapcs64/validate_memory.h
! ba61bac386ebf3e67d1f0b3c4fb25cd2  gcc/testsuite/gcc.target/aarch64/aarch64.exp
  5edfd2c8b369aabd5c367fb78ad782bd  gcc/testsuite/gcc.target/aarch64/abd_1.c
  ae513bfb2896c38de994944b104fb7c8  gcc/testsuite/gcc.target/aarch64/abs_1.c
  8a6aed21d2622bf72389f22f09d8bd4b  gcc/testsuite/gcc.target/aarch64/abs_2.c
! 3bdb7ec761017a1f4bf3dc0ce4c684ba  gcc/testsuite/gcc.target/aarch64/acle/acle.exp
  339f7215861041bbe928186d86e2c7b7  gcc/testsuite/gcc.target/aarch64/acle/crc32b.c
  b3b451a8f938e2c0a24c2751eab2c62d  gcc/testsuite/gcc.target/aarch64/acle/crc32cb.c
  ff79cdd1c6205d62ceab022024616fbc  gcc/testsuite/gcc.target/aarch64/acle/crc32cd.c
--- 47331,47342 ----
  9ae942d81ddb29e68f70db9e55725a4b  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-8.c
  dd14302fbe1a7e8e74bc61b31eb30b59  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-9.c
  3f40e5d196a05153206e4941fc3b1d10  gcc/testsuite/gcc.target/aarch64/aapcs64/validate_memory.h
! fb39c3b5d44ea5d29e9ec7a9597b523a  gcc/testsuite/gcc.target/aarch64/aarch64.exp
  5edfd2c8b369aabd5c367fb78ad782bd  gcc/testsuite/gcc.target/aarch64/abd_1.c
  ae513bfb2896c38de994944b104fb7c8  gcc/testsuite/gcc.target/aarch64/abs_1.c
  8a6aed21d2622bf72389f22f09d8bd4b  gcc/testsuite/gcc.target/aarch64/abs_2.c
! 5f82175ed939dca012b0982ed87e3fc0  gcc/testsuite/gcc.target/aarch64/acle/acle.exp
! a545b8f7fc60af12576f85397e1733cb  gcc/testsuite/gcc.target/aarch64/acle/armv8-r.c
  339f7215861041bbe928186d86e2c7b7  gcc/testsuite/gcc.target/aarch64/acle/crc32b.c
  b3b451a8f938e2c0a24c2751eab2c62d  gcc/testsuite/gcc.target/aarch64/acle/crc32cb.c
  ff79cdd1c6205d62ceab022024616fbc  gcc/testsuite/gcc.target/aarch64/acle/crc32cd.c
*************** d20a3c5925eb2e8c28249b5e4eb57a97  gcc/te
*** 44196,44206 ****
  e2b1388fba47b95c8b27a3e1a29953ff  gcc/testsuite/gcc.target/aarch64/adds.c
  976de79b2dc577315029cceb938ef26e  gcc/testsuite/gcc.target/aarch64/adds1.c
  caf80fb3defd2872fa7d7dc3fa721878  gcc/testsuite/gcc.target/aarch64/adds2.c
! d3b34ba619d3a13e0be732931b59d14b  gcc/testsuite/gcc.target/aarch64/adds3.c
  55ff9765cb94d7817c4c42421ab1deaa  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/README
! 3f3fdcbd8b9443422648a01dfb9173df  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp
! 5325482f977f5b2a36656581e25877ef  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
  012249ec105164442e4c8e2f09841d19  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_dup.c
  91e542409f80a82d911b9bf4df782435  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_get.c
  ebd46f74a2c7a6abc8e49dc80272e3d1  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_reinterpret.c
  d4ef0512d140a7e30154fc8ff31d8334  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_vect_copy_lane_1.c
--- 47359,47370 ----
  e2b1388fba47b95c8b27a3e1a29953ff  gcc/testsuite/gcc.target/aarch64/adds.c
  976de79b2dc577315029cceb938ef26e  gcc/testsuite/gcc.target/aarch64/adds1.c
  caf80fb3defd2872fa7d7dc3fa721878  gcc/testsuite/gcc.target/aarch64/adds2.c
! 480e16f2c7cfb659fed5b0f7a3c1547a  gcc/testsuite/gcc.target/aarch64/adds3.c
  55ff9765cb94d7817c4c42421ab1deaa  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/README
! 58ffcc255b38c9fcfe871433bfafbbea  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp
! 6be72d4411b42d96dbefbc2a2b05d2be  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
  012249ec105164442e4c8e2f09841d19  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_dup.c
+ 13fdac8c1ccc57731f09af48efde5d69  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_get-be.c
  91e542409f80a82d911b9bf4df782435  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_get.c
  ebd46f74a2c7a6abc8e49dc80272e3d1  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_reinterpret.c
  d4ef0512d140a7e30154fc8ff31d8334  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_vect_copy_lane_1.c
*************** ba9dc453d672df4e122665e17e9bc7b1  gcc/te
*** 44216,44240 ****
  00456ae78cc030ad000daa7715ad10f2  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bfcvtn-nobf16.c
  80679345b66fbddb5b356aab15ef408e  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bfcvtnq2-untied.c
  ca317e34913d0ac711b2329ebaffa59b  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bfdot-1.c
! bb3e64d968d837d1a3ada028621547d1  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bfdot-2.c
  f5f5a17e7a3a4bce3949b0324a7d0352  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bfdot-3.c
  e0dfea9be141b94827ea52d89e96a588  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bfmlalbt-compile.c
  1537ebb794f31e1304ddc29f0339c9e2  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bfmmla-compile.c
  1779e453b1e4e03ff4baf3556a6f44b7  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_op.inc
  ec22fbdd8271e68304a64fd92533fcc2  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_op_float.inc
  335a6b7d59778379ca4e65eb7b21f230  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_op_no64.inc
! f3efb1a2852b4425925161f683205416  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_sat_op.inc
  9319afb7dd551ec3d778b34d517c028b  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_scalar_op.inc
  2d6270ad676cb500aa09bb673e226e66  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/cmp_fp_op.inc
  2eb04076c167d9623ef4db08ba5b5eac  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/cmp_op.inc
  8b7fe5e3f608156c6dd8c2382aa48368  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/cmp_zero_op.inc
  e9dbf1dca3c765be5169575cd8169e1c  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/compute-ref-data.h
! 9c8ce1b92f1fd4b3ce4284b4e6284ef6  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/p64_p128.c
  9afa5895d2eaec5abc2b2a529150bc8a  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/ternary_scalar_op.inc
  b79029ba762b876694e98d70ae540bc1  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_op.inc
! 8c05ebf023d884ec03748dc9d2e2c2de  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_sat_op.inc
  7011b0feacbb99dbb8813084b7c26d5d  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_scalar_op.inc
  dfaf59535ecdd123a83a0cfc28580fd6  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vXXXhn.inc
  11f825c6a5f9d767bcc8168029d64da7  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vXXXl.inc
  449f7d376baa004272e9ac2040d38a11  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vXXXw.inc
  c512f875a6911aa667a98a7e20d826e4  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaba.c
--- 47380,47407 ----
  00456ae78cc030ad000daa7715ad10f2  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bfcvtn-nobf16.c
  80679345b66fbddb5b356aab15ef408e  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bfcvtnq2-untied.c
  ca317e34913d0ac711b2329ebaffa59b  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bfdot-1.c
! bf5b3f02ecfe1cfb73ee52c218b4ff11  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bfdot-2.c
  f5f5a17e7a3a4bce3949b0324a7d0352  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bfdot-3.c
  e0dfea9be141b94827ea52d89e96a588  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bfmlalbt-compile.c
  1537ebb794f31e1304ddc29f0339c9e2  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bfmmla-compile.c
  1779e453b1e4e03ff4baf3556a6f44b7  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_op.inc
  ec22fbdd8271e68304a64fd92533fcc2  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_op_float.inc
  335a6b7d59778379ca4e65eb7b21f230  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_op_no64.inc
! 17c3a6eed2984d4b69b72f756e92299c  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_sat_op.inc
  9319afb7dd551ec3d778b34d517c028b  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_scalar_op.inc
  2d6270ad676cb500aa09bb673e226e66  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/cmp_fp_op.inc
  2eb04076c167d9623ef4db08ba5b5eac  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/cmp_op.inc
  8b7fe5e3f608156c6dd8c2382aa48368  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/cmp_zero_op.inc
  e9dbf1dca3c765be5169575cd8169e1c  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/compute-ref-data.h
! 0244d27c155f8b9253241c5715fda41f  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/p64_p128.c
! dd4fa55b661e81d32222124388be6ee7  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/pr98852.c
! 4023d80c766d189e8bfe840c76d9c25c  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/smlal-smlsl-mull-optimized.c
  9afa5895d2eaec5abc2b2a529150bc8a  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/ternary_scalar_op.inc
  b79029ba762b876694e98d70ae540bc1  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_op.inc
! 6d34c6a1288d281e4d34fdbd6cd6be6b  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_sat_op.inc
  7011b0feacbb99dbb8813084b7c26d5d  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_scalar_op.inc
  dfaf59535ecdd123a83a0cfc28580fd6  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vXXXhn.inc
+ 22c360d425fab38003d36059ab3be510  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vXXXhn_high.inc
  11f825c6a5f9d767bcc8168029d64da7  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vXXXl.inc
  449f7d376baa004272e9ac2040d38a11  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vXXXw.inc
  c512f875a6911aa667a98a7e20d826e4  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaba.c
*************** a37daaa921cf938570f9de5c94ea66bb  gcc/te
*** 44247,44252 ****
--- 47414,47420 ----
  d0067cab29fcc180c3d02bb10cf4733a  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vadd.c
  1a4f2f2f76be3e75ef094080b4f8c615  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaddh_f16_1.c
  0501c4991830e3efed62aa0fc54e9fa3  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaddhn.c
+ d9c14c315c1ba492dadf4baa147f0e93  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaddhn_high.c
  a7b721717f965190c7742e75bba48068  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaddl.c
  c464a62df34160edde244079f55e286a  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaddw.c
  6619f1fa620b6cc386847e296ac2a660  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vand.c
*************** ee59f0928396a69f17c02f71411fb9fd  gcc/te
*** 44297,44302 ****
--- 47465,47471 ----
  02605c3ddba5557ff20275a979b9a402  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvt.c
  7239a07f803b77f6138600000612801b  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtX.inc
  cbd917762af02f2b3329cbc92c7b2e5c  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvt_f16.c
+ 1c198cdf08766643e0b6b0e9a81c5053  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvt_fXX_fXX.c
  470f18aa8a09bc28710aa68b7f35b8d9  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvt_high_1.c
  4440da24af2c33112d0656bcb336b065  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvta_1.c
  210ff9fc52037bd3cda5e72c809f679d  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtah_s16_f16_1.c
*************** efedd50642c6644cb6f531aba682095e  gcc/te
*** 44349,44358 ****
  40be7be7a1ec70672393aa201a57359e  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtph_u16_f16_1.c
  4f8957ccf50822838f4ae45abed922f3  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtph_u32_f16_1.c
  946d8b27f15e0958922744a3b08ecc22  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtph_u64_f16_1.c
  deb9860e1a64c53b3c341799f3fbe87d  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdiv_f16_1.c
  cc8862bbb06bf4f811fe1be4bca2eeb1  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdivh_f16_1.c
  c9273881e943aacaa6e13b8c5147e4aa  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-1.c
! 9bd36664270aaaead8137ad92289488c  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-2.c
  02fdf739d8e929deb204884dbd92339d  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-3.c
  daa618bd01b9b21999bfb0bf4c48cf21  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-4.c
  0642560d65fb69f44e04f928f89cf649  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-compile-2.c
--- 47518,47528 ----
  40be7be7a1ec70672393aa201a57359e  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtph_u16_f16_1.c
  4f8957ccf50822838f4ae45abed922f3  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtph_u32_f16_1.c
  946d8b27f15e0958922744a3b08ecc22  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtph_u64_f16_1.c
+ 8e5a12cc91e3d9700a3797351ad068df  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtx.c
  deb9860e1a64c53b3c341799f3fbe87d  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdiv_f16_1.c
  cc8862bbb06bf4f811fe1be4bca2eeb1  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdivh_f16_1.c
  c9273881e943aacaa6e13b8c5147e4aa  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-1.c
! 3cd256c9093abf1af1d6796fdd93f903  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-2.c
  02fdf739d8e929deb204884dbd92339d  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-3.c
  daa618bd01b9b21999bfb0bf4c48cf21  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-4.c
  0642560d65fb69f44e04f928f89cf649  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-compile-2.c
*************** d92367a7a41768ec5070a5f2755d6909  gcc/te
*** 44485,44506 ****
--- 47655,47689 ----
  dbac8d82bb916c624a31107065c776a3  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlX_lane.inc
  9fd9ff1c76af2f4360c1250587d5c53a  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlX_n.inc
  ab6844882ac39b95f129668e97054c97  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl.inc
+ 16129f171ed4e9ed79acabfb8dcfda8a  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high.inc
+ a4b26fe16af77e951b6926c472e2bf1e  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_lane.inc
+ 79f48c5aeb60b073293e9392cacce303  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_laneq.inc
+ 4183c35703800fa419f0609d7c2441f8  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_n.inc
  2397e63fdfaa77f324171b5a1d85ac58  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_lane.inc
  df3b1a9e15422a9a34b6051cc01f9016  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_n.inc
  2bc9a208fbe6ee9b42f28b1b62597b84  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmla.c
  2d38b6e83edc1c11ee6b633494717d4f  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmla_lane.c
  96185b13f3b28f7e8859198561fb130b  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmla_n.c
  fc8c4e485836f08b69e49a321add9309  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal.c
+ a5a343c91e4cec3969d5f0adf45acce5  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high.c
+ 84393872cd0548d8eec8121d94aabcae  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high_lane.c
+ 279bc6f714bfc8fa8cc0deecd45b87ca  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high_laneq.c
+ 0c9eda0e70b1be546ea53d6f90cb549d  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high_n.c
  2ed34a5a29e9841eba0d9f8b24adc3b8  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_lane.c
  671a0917fdb129328fcb24ef41e62067  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_n.c
  382fe4be206eda2ada7254e17ab813a8  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmls.c
  aa21c1305430685521be8df09f88e84e  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmls_lane.c
  4632ab8adb7934b5c15eddc49e459667  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmls_n.c
  b0f42fb7ce16b63bb85f5825918657d7  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl.c
+ 2056654de83e06add2ebcff2c57976ab  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high.c
+ 80feddf5e564688e21d941909102bdbd  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_lane.c
+ 77339ba3ca46d1978fa8e92b4c785d80  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_laneq.c
+ e89bb37a3eacab283af10894b5111db4  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_n.c
  46500d47a56c07965b7ee377a0701bac  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_lane.c
  7c46c2cc24f35e46f9b073b36adbd924  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_n.c
  36d38ef05b8d330c702f46675c4d6b47  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmovl.c
  33f6c34ae8f19d5bb7d30cc446dc8ad7  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmovn.c
+ e203b2a683edd535b691d4b3b6e2d2f7  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmovn_high.c
  5191f4c1c39317aae9c25c4feb4575e0  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmul.c
  25f81f9620d275aecae799cb0d825690  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmul_lane.c
  15ee25628d4c2aededd0e42cc9b930db  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmul_lane_f16_1.c
*************** b0f42fb7ce16b63bb85f5825918657d7  gcc/te
*** 44508,44513 ****
--- 47691,47700 ----
  5ebd9aa055464b1063e82d201d679389  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmulh_f16_1.c
  b533c133df2c1009af96fb01cf1d0945  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmulh_lane_f16_1.c
  afaf5813400c1a784f0feb21eaa23b52  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull.c
+ fc3928f86038a17f36d7a4175237ce63  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high.c
+ e0a9eb67acbdbd33e623044b17a683c6  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high_lane.c
+ c3811114ef9ef07f20333c28da0aa555  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high_laneq.c
+ 3873f6382e5c35174212f6828af8090f  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high_n.c
  cb0f0a48b4952764f4d5ab1a23e13bf0  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_lane.c
  949b40a5758302c2cfb15d173adb013f  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_n.c
  ff0a7c4ca3c8561b95d51b13e94306e8  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmulx_f16_1.c
*************** bacbb3239e70bda0d08458656c21aa7a  gcc/te
*** 44533,44584 ****
  f247996016f78ef411bfff6e925f13e7  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vorn.c
  cbf38d774bcb9d9a74f4724c766fad19  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vorr.c
  59d0d77a8dc0189bfa6520ff52b88e65  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpXXX.inc
  4d4fc99c2e7cc1fad48fe0f809a72a48  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpadal.c
  0972e27a64a82182db33316b5fe3f6e4  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpadd.c
  4b2bac29a2239dca59a604615efddfdd  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpaddl.c
  75a963c977579eb487f74ecff7efbcd4  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpmax.c
  57eaa2ac39a5491c7cfbbcee94891201  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpmin.c
  a5774c5559aec15fe16de7ce9b5e7924  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpminmaxnm_f16_1.c
! 0c0ba5082174948feef0de10ccf3d0c8  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqabs.c
! 3b03cc906b96705136c2f9a84b413bfd  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqadd.c
! 9516ef43167caaf2f066e6d5759e0e22  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl.inc
! 5a1a55bbd65dbdadc9c23b0c3ce1ee2f  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_lane.inc
! 5b2fcefc95b6b1d5631e616fd6a9ec9f  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_n.inc
! 303e54d827014b5ce8461ef9c65b3f82  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal.c
! 833e2310eba6c25b9d6a85a261e1d235  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_lane.c
! 74db00c211b2fd97421ac6a710d3f6a7  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_n.c
! 34f1f076bce7093d28ae0ebeeb191853  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl.c
! cb3574341a30934e4df92465e5e8847e  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_lane.c
! afa9eb5f8e3a04ac1f31533aa1a69e1b  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_n.c
! d9f7bc493f02e8268e52406209bd1334  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh.c
! 1afafd016362e9456d99b0a86c5c5d41  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_lane.c
! ba7d27fff68cd4247327cb249768f9b1  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_n.c
! ad79ef3f8f3ef087ad78c187a6cc0ba4  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull.c
! d88b5ca25f5e1572723a532b88ce3361  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_lane.c
! 76ed3c24de42ea35549fed5350d0c453  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_n.c
! e8f4fca7b569a8f0ea0270514de6a798  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovn.c
! e87f1570a06a10386c979fac9afc3183  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovun.c
! acc8d113a5c66d89165dd7c0fff188ef  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqneg.c
! a2fc9dabbe2d1ce4f9869be3a44437c8  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh.inc
! 4ad9e82baf60417eab781689eada446a  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh_lane.inc
! 8840850846171e5fabed9a7087be2c20  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlah.c
! faed29f1d2b927bd83dc145d030b510c  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlah_lane.c
! 0c48dc7f8d6ae01a20018dec17664281  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh.c
! 4a339f42a0aaf07dcc25d799cca2b2f0  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh_lane.c
! ca9a66b8c5677c98798e489cfa3e9bca  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh.c
! ff759adf01ef8783aad64fef1f1ee961  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_lane.c
! 5a1c0d4f2fc08612bf19badd1c445f77  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_n.c
! c707b961e3974339c28f2b784a297434  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshl.c
! 1223d52fc588baa5d71fd9e7877ae8b8  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrn_n.c
! 31d55a0446788e44b17bf0dceaf71a46  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrun_n.c
! 042045116bc95e47d0cad39781c65bfb  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshl.c
! c622d8a23fdeee656f6fde964281cc6f  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshl_n.c
! f471801c465e2717e09f6f947783d72a  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshlu_n.c
! 9413582131f67272831a2ce8ae8432fa  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrn_n.c
! cc26131417eaa600ba2e1cfe31319bd3  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrun_n.c
! 37f5d5bd3b67df1e51f820b6ee8d77a1  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqsub.c
  282b532091b159c08858147e7251535c  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqtbX.c
  cb87bbc4df80e1a26bd8a4367ceb0703  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vraddhn.c
  b04c90ae7366c6488e012aec56b6dd47  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrecpe.c
  110abb2fb52cda53d17ac7fcd3f96be9  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrecpeh_f16_1.c
  87bd99ccc0e2c01a3db1e8cd94e70a8d  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrecps.c
--- 47720,47780 ----
  f247996016f78ef411bfff6e925f13e7  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vorn.c
  cbf38d774bcb9d9a74f4724c766fad19  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vorr.c
  59d0d77a8dc0189bfa6520ff52b88e65  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpXXX.inc
+ 52b129ae80def13438a28bb060e8906a  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpXXXq.inc
  4d4fc99c2e7cc1fad48fe0f809a72a48  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpadal.c
  0972e27a64a82182db33316b5fe3f6e4  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpadd.c
  4b2bac29a2239dca59a604615efddfdd  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpaddl.c
+ 72e21f1501bfee555040fd6a52b4b541  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpaddq.c
  75a963c977579eb487f74ecff7efbcd4  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpmax.c
  57eaa2ac39a5491c7cfbbcee94891201  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpmin.c
  a5774c5559aec15fe16de7ce9b5e7924  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpminmaxnm_f16_1.c
! d0cd039fcf09a9ad00835f5231b841b8  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqabs.c
! c9be49db12b6b8139f014641fc694c24  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqadd.c
! 265c5babc6896b38b88a72bb8760fee5  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl.inc
! 06de028c3de31c4c0352c83aa9c1b4f1  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_lane.inc
! 5ccc88fbaba8a878e89072c691a70197  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_n.inc
! 9d4fc258786c67bb0a57c7328a683311  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal.c
! c2c8cc65690d5950e9e2b4f3b47de362  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_lane.c
! 4064bb27d59d378fdc8d93ab6657febb  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_n.c
! d7af446a46a76b1f89b1e8a7d5ae08e8  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl.c
! 1c21a2d7e82ffa676ff3af9d6a480695  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_lane.c
! ef2e4ac34696200c09529cf3eae78933  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_n.c
! 969f73e2a1a89bb01083b7199d11b081  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh.c
! 28ac981e74db578520fb6abe54095067  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_lane.c
! 0b208249deae3534f521e285b8127b62  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_n.c
! f3a494fad3a32419c779318d55325f30  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull.c
! 02c482cdc2a49fc757525d9d20cdd658  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_lane.c
! 8aaf5d085bb8ee4836719f6c47a75a30  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_n.c
! 53c621f3f2a4a1ceb27592f78edd8252  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovn.c
! 5184142cc836933bc38fdb7e54205048  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovn_high.c
! 372c4b5710f88386bd473a90947a5e78  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovun.c
! ab8cc875017db22b927a5942b77fb934  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovun_high.c
! 87bd4dd519ed33ee9adbb5930b70ab5b  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqneg.c
! 11fa3be65c75acacc5a2aabc1f9f2a3c  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh.inc
! bad030acac70d6dcf3c05ae5d4e06d3a  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh_lane.inc
! 6415f7d52fa9373821db1e5ef8f77d50  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlah.c
! 81179b42a9ac6f215ec07bb1063af244  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlah_lane.c
! f32f180d3121b2cc9accbb2d4724cf83  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh.c
! a24c9fc228eb0aa429e50707606bc7b4  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh_lane.c
! c7c095f1127744547febe374a76d7aa5  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh.c
! 8101a8ea7a21be924e03eb8f72c0efd3  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_lane.c
! cefd6244c7d18e3d74915b39b7a48b6c  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_n.c
! a8f35bfb0fed262df875b6991ffcc3a3  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshl.c
! 01e15eb764280dfc9678da0fd8311f97  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrn_high_n.c
! 43ebe81aa75592db46ab58a837fb9b09  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrn_n.c
! 1b9cedcfeec1c9f7e181883b090e0f6b  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrun_high_n.c
! e93772068f20cf620df62e2068e7b608  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrun_n.c
! 10778a1f9c8b71ae946c7f91b75375a9  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshl.c
! f951caabb9144508076d55126d6d999a  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshl_n.c
! 8ff511ae26c20e316f2925cc98c8af34  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshlu_n.c
! a79f258033bce89317591999cc80a3f5  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrn_high_n.c
! 87078acd7df838bf3ee6d628320004e3  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrn_n.c
! 9fd693801a075b1e3f8345a130f204c6  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrun_high_n.c
! 83c6412aad2c75c38117a86e87cee167  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrun_n.c
! 81e3bd9d1a63e80ecff5039041860669  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqsub.c
  282b532091b159c08858147e7251535c  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqtbX.c
  cb87bbc4df80e1a26bd8a4367ceb0703  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vraddhn.c
+ b3cab9a40219432b7f8e29600abdbfb5  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vraddhn_high.c
  b04c90ae7366c6488e012aec56b6dd47  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrecpe.c
  110abb2fb52cda53d17ac7fcd3f96be9  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrecpeh_f16_1.c
  87bd99ccc0e2c01a3db1e8cd94e70a8d  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrecps.c
*************** a6a9ebaea65506ec8920d956b85f99b0  gcc/te
*** 44606,44611 ****
--- 47802,47808 ----
  3a6e7c635ac8247fd2721c42297cf06f  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrndxh_f16_1.c
  3503e67fd005c831e91c33a19436ad29  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrshl.c
  5ea3e6b3a40f92f29866ffdaf32afd0d  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrshr_n.c
+ 7f4d8a696ff0db1250ea03cf03209e9e  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrshrn_high_n.c
  90a33d776fa57b541fef0c179ab17f43  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrshrn_n.c
  dd2c67739e606c794c244fbfde6b7fe3  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrsqrte.c
  27ea9d65a96deb5410d1d1e91728972f  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrsqrteh_f16_1.c
*************** dd2c67739e606c794c244fbfde6b7fe3  gcc/te
*** 44613,44624 ****
--- 47810,47823 ----
  6dc9d727c439d1aeffec136eecd33ca1  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrsqrtsh_f16_1.c
  f27991f5e8313bc7f0eb2a2b08c0aa57  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrsra_n.c
  cb86e8ee204d5b4ebe57f52a0952bb06  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrsubhn.c
+ 2c8d104723a60c270b5fd21bcd214108  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrsubhn_high.c
  1343bedec9ea6fb2b0ff73345e0ca329  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsXi_n.inc
  c4b8d2884f5c8a131e9042d674edd379  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vset_lane.c
  6a857b077efa8b7f609ef8921a2e8212  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshl.c
  208eb0616ca6262b996be2746859d1ea  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshl_n.c
  4a86ff5d1f8de86dab9961e7ffbc4bcc  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshll_n.c
  8205eda302404b759136ba486b4b2a4f  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshr_n.c
+ 7453bd1a1ff6442d6d3485dbb88eaa0a  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshrn_high_n.c
  f19db01ae4e0625807bef1124a8d7095  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshrn_n.c
  db8961a9c46c94c7576ecec7b15b3a4c  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshuffle.inc
  627ead30fef303e63a0a1d2f854efa86  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsli_n.c
*************** d7a1d322b26a460f3cc0ba9b27fbb2e4  gcc/te
*** 44708,44717 ****
  98bced556c0b5a1655b0d8830a0185d4  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u32_indices_1.c
  73af6ced832f61599f1f5db934b35387  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u64_indices_1.c
  c8c1e39e278f7a352bc90c5bd6ea61bb  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u8_indices_1.c
! 5d0cf0b2ffe918245ecc84abe980e83e  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vstX_lane.c
  4a8619aaceba9f3368cf3f710ca3c6fd  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsub.c
  3f1f408b328af554936218c3206a48dc  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubh_f16_1.c
  11289d1afd82c8dfd075936f9c142816  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubhn.c
  adfe2d6c4b5372b80d82b4621f516510  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubl.c
  c141836b8ce217f5058c9cd23f53dfd2  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubw.c
  48c7057d0252c164ddcbba7b3eeacf05  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vtbX.c
--- 47907,47917 ----
  98bced556c0b5a1655b0d8830a0185d4  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u32_indices_1.c
  73af6ced832f61599f1f5db934b35387  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u64_indices_1.c
  c8c1e39e278f7a352bc90c5bd6ea61bb  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u8_indices_1.c
! 41e5902f338cb01396655c04b1893a36  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vstX_lane.c
  4a8619aaceba9f3368cf3f710ca3c6fd  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsub.c
  3f1f408b328af554936218c3206a48dc  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubh_f16_1.c
  11289d1afd82c8dfd075936f9c142816  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubhn.c
+ 04805e6dce78c24f652486094b0aac32  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubhn_high.c
  adfe2d6c4b5372b80d82b4621f516510  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubl.c
  c141836b8ce217f5058c9cd23f53dfd2  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubw.c
  48c7057d0252c164ddcbba7b3eeacf05  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vtbX.c
*************** c1a78c795e464e555618f9dae7cddf94  gcc/te
*** 44722,44728 ****
  0b2548f22a35b3ec92a54ba0e041a914  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vuzp_half.c
  2765f7e1734188c461dff4680cc3ac28  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vzip.c
  2577b34228fa012b1608402ec8a858b7  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vzip_half.c
- a17ea9ce2beb838090e4262285dac1a9  gcc/testsuite/gcc.target/aarch64/advsimd_autovec_only_1.c
  49ed1c2d874af633b852639c9cdf1205  gcc/testsuite/gcc.target/aarch64/aes-fuse-1.c
  a1f177ffd0862f4b4d2cf8089b641e17  gcc/testsuite/gcc.target/aarch64/aes-fuse-2.c
  904fcc9a4fae07870b9cb9e077d40e2a  gcc/testsuite/gcc.target/aarch64/aes_1.c
--- 47922,47927 ----
*************** e4ce46d425f8ea0594bf48b8fec9250a  gcc/te
*** 44735,44744 ****
  33021be5e1a12a1a0cdf4f5560175a64  gcc/testsuite/gcc.target/aarch64/ands_3.c
  69c287f57b5cb72e48f872fd46676fe6  gcc/testsuite/gcc.target/aarch64/arch-diagnostics-1.c
  e9c25c1873b1c88e896cbfdc10e65bb2  gcc/testsuite/gcc.target/aarch64/arch-diagnostics-2.c
! d8b72b5db867378f7de9c71835585ede  gcc/testsuite/gcc.target/aarch64/arg-type-diagnostics-1.c
  32870aac07385ec32efd5ecbbb3d76d3  gcc/testsuite/gcc.target/aarch64/arm_align_max_pwr.c
  e79c5d685820bc76d9daf4e435221433  gcc/testsuite/gcc.target/aarch64/arm_align_max_stack_pwr.c
  26518a2b3146873d5a85678ac0ec9937  gcc/testsuite/gcc.target/aarch64/ashltidisi.c
  dcc9c2b184e5339c1d80d3a05b09ded3  gcc/testsuite/gcc.target/aarch64/asm-1.c
  df4261abff5d11ed565343cbcd36e8e6  gcc/testsuite/gcc.target/aarch64/asm-2.c
  1097a2bdcf64e47b5ae556a4b94d5043  gcc/testsuite/gcc.target/aarch64/asm-3.c
--- 47934,47945 ----
  33021be5e1a12a1a0cdf4f5560175a64  gcc/testsuite/gcc.target/aarch64/ands_3.c
  69c287f57b5cb72e48f872fd46676fe6  gcc/testsuite/gcc.target/aarch64/arch-diagnostics-1.c
  e9c25c1873b1c88e896cbfdc10e65bb2  gcc/testsuite/gcc.target/aarch64/arch-diagnostics-2.c
! b287abfa131d4fc02a9f9f035aa88fbd  gcc/testsuite/gcc.target/aarch64/arg-type-diagnostics-1.c
  32870aac07385ec32efd5ecbbb3d76d3  gcc/testsuite/gcc.target/aarch64/arm_align_max_pwr.c
  e79c5d685820bc76d9daf4e435221433  gcc/testsuite/gcc.target/aarch64/arm_align_max_stack_pwr.c
  26518a2b3146873d5a85678ac0ec9937  gcc/testsuite/gcc.target/aarch64/ashltidisi.c
+ e3529db67617a1338a1ecd734bcf1f16  gcc/testsuite/gcc.target/aarch64/asimd-mul-to-shl-sub.c
+ 5e4a5f52a0317bf1c356ac654c5509f0  gcc/testsuite/gcc.target/aarch64/asimd-mull-elem.c
  dcc9c2b184e5339c1d80d3a05b09ded3  gcc/testsuite/gcc.target/aarch64/asm-1.c
  df4261abff5d11ed565343cbcd36e8e6  gcc/testsuite/gcc.target/aarch64/asm-2.c
  1097a2bdcf64e47b5ae556a4b94d5043  gcc/testsuite/gcc.target/aarch64/asm-3.c
*************** cb2d59ab293179fb8d00b44de02f2556  gcc/te
*** 44810,44815 ****
--- 48011,48017 ----
  db5fd5b64a2eb4eb636d6dfdb413c130  gcc/testsuite/gcc.target/aarch64/bti-1.c
  1f3ef5067a390251f12ef6026d548694  gcc/testsuite/gcc.target/aarch64/bti-2.c
  b78c22df355563107f991e1e75999388  gcc/testsuite/gcc.target/aarch64/bti-3.c
+ ab6bc72e5251715038d4dfdf5a92be3c  gcc/testsuite/gcc.target/aarch64/bti-4.c
  82ebc34e179e256a16633eeed8f5931d  gcc/testsuite/gcc.target/aarch64/builtin-bswap-1.c
  33f370cd2a619d45e68ba5747504d94e  gcc/testsuite/gcc.target/aarch64/builtin-bswap-2.c
  6927a6e9009b152efa44797dcae0c93a  gcc/testsuite/gcc.target/aarch64/builtin_sadd_128.c
*************** dcbe68009cf519fec972930376254917  gcc/te
*** 44838,44844 ****
  0013b203d7b2fa644eafbb691861f93f  gcc/testsuite/gcc.target/aarch64/cmn.c
  38832e78052c9cd035696780b482c0eb  gcc/testsuite/gcc.target/aarch64/cmp-1.c
  9076c91dd96afebc8e0bbbc789c574fb  gcc/testsuite/gcc.target/aarch64/cmp-2.c
! 30f11d88013aed3451d807e4b5ca2590  gcc/testsuite/gcc.target/aarch64/cmp.c
  4ba06f31ec1c28eaeb88b7a0a8160041  gcc/testsuite/gcc.target/aarch64/cmp_shifted_reg_1.c
  ee389eae370cb027260e737bcb692a7d  gcc/testsuite/gcc.target/aarch64/cmpelim_mult_uses_1.c
  7b5054f497a38f6f6603006f2d632a05  gcc/testsuite/gcc.target/aarch64/cmpimm_branch_1.c
--- 48040,48046 ----
  0013b203d7b2fa644eafbb691861f93f  gcc/testsuite/gcc.target/aarch64/cmn.c
  38832e78052c9cd035696780b482c0eb  gcc/testsuite/gcc.target/aarch64/cmp-1.c
  9076c91dd96afebc8e0bbbc789c574fb  gcc/testsuite/gcc.target/aarch64/cmp-2.c
! 1a49adb9a8d6e9ec4b9691318b915da9  gcc/testsuite/gcc.target/aarch64/cmp.c
  4ba06f31ec1c28eaeb88b7a0a8160041  gcc/testsuite/gcc.target/aarch64/cmp_shifted_reg_1.c
  ee389eae370cb027260e737bcb692a7d  gcc/testsuite/gcc.target/aarch64/cmpelim_mult_uses_1.c
  7b5054f497a38f6f6603006f2d632a05  gcc/testsuite/gcc.target/aarch64/cmpimm_branch_1.c
*************** f0d278d66f3c6d099e299ada3c0f2f5a  gcc/te
*** 44856,44862 ****
  e8f539acbee96c6f26c7eb82b2275f73  gcc/testsuite/gcc.target/aarch64/cpu-diagnostics-2.c
  bacc2bf13ff0d50de57c856b6cfe89f2  gcc/testsuite/gcc.target/aarch64/cpu-diagnostics-3.c
  204fe994da11aab4c0f8f0a889d976ad  gcc/testsuite/gcc.target/aarch64/cpu-diagnostics-4.c
! 3bdb7ec761017a1f4bf3dc0ce4c684ba  gcc/testsuite/gcc.target/aarch64/cpunative/aarch64-cpunative.exp
  f88dcec7a52a0d115da213f16170f154  gcc/testsuite/gcc.target/aarch64/cpunative/info_0
  8d55917f3f8bda7a065c7a0f0fb75c4b  gcc/testsuite/gcc.target/aarch64/cpunative/info_1
  ee8eca9c8007ef2044353709e26a2510  gcc/testsuite/gcc.target/aarch64/cpunative/info_10
--- 48058,48064 ----
  e8f539acbee96c6f26c7eb82b2275f73  gcc/testsuite/gcc.target/aarch64/cpu-diagnostics-2.c
  bacc2bf13ff0d50de57c856b6cfe89f2  gcc/testsuite/gcc.target/aarch64/cpu-diagnostics-3.c
  204fe994da11aab4c0f8f0a889d976ad  gcc/testsuite/gcc.target/aarch64/cpu-diagnostics-4.c
! 5f82175ed939dca012b0982ed87e3fc0  gcc/testsuite/gcc.target/aarch64/cpunative/aarch64-cpunative.exp
  f88dcec7a52a0d115da213f16170f154  gcc/testsuite/gcc.target/aarch64/cpunative/info_0
  8d55917f3f8bda7a065c7a0f0fb75c4b  gcc/testsuite/gcc.target/aarch64/cpunative/info_1
  ee8eca9c8007ef2044353709e26a2510  gcc/testsuite/gcc.target/aarch64/cpunative/info_10
*************** c90274917a74a6e06b5774cd05a57c90  gcc/te
*** 44889,44899 ****
--- 48091,48103 ----
  8d0c9405c9362c5b0d9d432d05e1a3d0  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_7.c
  464a3107496c61df0ccb63ddc46e787f  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_8.c
  3a30be9f048052ce41672d65dd8f9fed  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_9.c
+ e7f2c8bc85b290199241316dcf513df5  gcc/testsuite/gcc.target/aarch64/cpymem-q-reg_1.c
  e127674777b8d02e7ad1d0d85afb8eda  gcc/testsuite/gcc.target/aarch64/csel_bfx_1.c
  0f38f1bf69aced631eb538fe6f944aad  gcc/testsuite/gcc.target/aarch64/csel_imms_inc_1.c
  84a090e1555a75d7d6e3d23e245a0d46  gcc/testsuite/gcc.target/aarch64/csinc-1.c
  af3d0bc9d40b3fb7c6426688a1d29602  gcc/testsuite/gcc.target/aarch64/csinc-2.c
  eebd6ca7c2a0fe9846bf88388a00d172  gcc/testsuite/gcc.target/aarch64/csinv-1.c
+ dee20761ab09d0689a56f667594a30a7  gcc/testsuite/gcc.target/aarch64/csinv-neg.c
  daa118ed7835c32ea71c32e65d22689f  gcc/testsuite/gcc.target/aarch64/csneg-1.c
  f15d1ff83066971ce9a42593ae9e147c  gcc/testsuite/gcc.target/aarch64/ctz.c
  66e80d99734f8cef1f2093c52336c4c2  gcc/testsuite/gcc.target/aarch64/cvtf_1.c
*************** aae1cd7b85cfa4ed915a5b8a0b263fda  gcc/te
*** 44902,44907 ****
--- 48106,48112 ----
  5a0fb82365f402f7b5e039bc723a3020  gcc/testsuite/gcc.target/aarch64/dwarf-cfa-reg.c
  337c39f85c95ad488bb585665bf18a76  gcc/testsuite/gcc.target/aarch64/eh_return.c
  0d0e2a489d3255344941fbdef5cd849a  gcc/testsuite/gcc.target/aarch64/eon_1.c
+ 8dac5a05d1eca8860b3df16bc7b03f2a  gcc/testsuite/gcc.target/aarch64/extend-syntax.c
  4703bff993ef8bad5cc876cd178c66da  gcc/testsuite/gcc.target/aarch64/extend.c
  0b2712c817ff082c0b56ddf2137cd33f  gcc/testsuite/gcc.target/aarch64/extr.c
  1713cbec599916e83b02ac76cec4249c  gcc/testsuite/gcc.target/aarch64/extract_zero_extend.c
*************** dc6c53dc636d53ca24327e1fba0d7afd  gcc/te
*** 44924,44929 ****
--- 48129,48135 ----
  d8490d90b76efc832c69a53db68fa258  gcc/testsuite/gcc.target/aarch64/fcvt_int_float_double2.c
  7209015f67294e4ae323bbd81c156e01  gcc/testsuite/gcc.target/aarch64/fcvt_int_float_double3.c
  16d2069b291c6c88c63a48a0e335d203  gcc/testsuite/gcc.target/aarch64/fcvt_int_float_double4.c
+ 9eeaa08c9f804ff9958c6844eba59b08  gcc/testsuite/gcc.target/aarch64/fcvt_nosimd.c
  1768e8b17de27394ef47fa363d1e36a1  gcc/testsuite/gcc.target/aarch64/fcvt_uint_float_double1.c
  5e4a9b3013e08da6731e41850ccd31d7  gcc/testsuite/gcc.target/aarch64/fcvt_uint_float_double2.c
  534298ae99af0bc40d5cb3c8e2b7dfc4  gcc/testsuite/gcc.target/aarch64/fcvt_uint_float_double3.c
*************** a1212235242dd12baac6ac6d3f0f04ad  gcc/te
*** 44957,44963 ****
  37fb660ad953888e296980c0d2b85a7c  gcc/testsuite/gcc.target/aarch64/fnmul-4.c
  a9470d48ec15369aea11218770e41e89  gcc/testsuite/gcc.target/aarch64/fp16/f16_convs_1.c
  1a65d9a8643a40367284cf31d1d3b963  gcc/testsuite/gcc.target/aarch64/fp16/f16_convs_2.c
! 32069225da0455bfc47fe39169061b54  gcc/testsuite/gcc.target/aarch64/fp16/fp16.exp
  c789e3d353f9e2287a4c9ef36dffcb2f  gcc/testsuite/gcc.target/aarch64/fp16/set_zero_1.c
  33e7feca82b3b0b54d58bbcd49d61f40  gcc/testsuite/gcc.target/aarch64/fp16_fmul_high.h
  7aa945158b0a4b5f86014c0b7d857a22  gcc/testsuite/gcc.target/aarch64/fp16_fmul_high_1.c
--- 48163,48169 ----
  37fb660ad953888e296980c0d2b85a7c  gcc/testsuite/gcc.target/aarch64/fnmul-4.c
  a9470d48ec15369aea11218770e41e89  gcc/testsuite/gcc.target/aarch64/fp16/f16_convs_1.c
  1a65d9a8643a40367284cf31d1d3b963  gcc/testsuite/gcc.target/aarch64/fp16/f16_convs_2.c
! 95796f3c983ea6e2e09db7213513e5ef  gcc/testsuite/gcc.target/aarch64/fp16/fp16.exp
  c789e3d353f9e2287a4c9ef36dffcb2f  gcc/testsuite/gcc.target/aarch64/fp16/set_zero_1.c
  33e7feca82b3b0b54d58bbcd49d61f40  gcc/testsuite/gcc.target/aarch64/fp16_fmul_high.h
  7aa945158b0a4b5f86014c0b7d857a22  gcc/testsuite/gcc.target/aarch64/fp16_fmul_high_1.c
*************** c4aa8a1f0ad2e74a9d73da81126c1f7e  gcc/te
*** 44983,44988 ****
--- 48189,48196 ----
  ed2b38705092e36a5984e33769be3d5a  gcc/testsuite/gcc.target/aarch64/frint_float.c
  7f8140bc0d65dde3896572f2fe084146  gcc/testsuite/gcc.target/aarch64/fuse-caller-save.c
  6ed33457f293332f03ce167c620b35b0  gcc/testsuite/gcc.target/aarch64/fuse_adrp_add_1.c
+ 814f2a8701d47a79b645e43e6fe31b57  gcc/testsuite/gcc.target/aarch64/get_fpcr64_1.c
+ dcfff550a1456524fd7870f0bec66e6f  gcc/testsuite/gcc.target/aarch64/get_fpsr64_1.c
  77410b35f9bf6bc7cf2a51fbc9461727  gcc/testsuite/gcc.target/aarch64/get_lane_f16_1.c
  9690d44b95593019a84cc46b5927a347  gcc/testsuite/gcc.target/aarch64/got_mem_hoist_1.c
  818995f657f497ee60b80e64df6087a6  gcc/testsuite/gcc.target/aarch64/gtu_to_ltu_cmp_1.c
*************** aefe1b3bc82bc3b13544821b70918a4f  gcc/te
*** 44994,45004 ****
  aa9097deb2901881188486bdf9eb3343  gcc/testsuite/gcc.target/aarch64/index.c
  2b13cf8445a95980ea035811da6abe95  gcc/testsuite/gcc.target/aarch64/inline-lrint_1.c
  caaafb769b844ad26e03a5f739c93732  gcc/testsuite/gcc.target/aarch64/inline-lrint_2.c
! d9b886efc5c9ee269ba2de62c28bd44b  gcc/testsuite/gcc.target/aarch64/insv_1.c
  a897ae01d807185bd4ca7f1587e181d9  gcc/testsuite/gcc.target/aarch64/insv_2.c
  18f0bd2efa738426efce6208b83e0cbd  gcc/testsuite/gcc.target/aarch64/int_mov_immediate_1.c
  81256a6fac965eea861536637ff35013  gcc/testsuite/gcc.target/aarch64/large_struct_copy.c
! b056394990731cd284dcb67c7cc2f7c2  gcc/testsuite/gcc.target/aarch64/large_struct_copy_2.c
  c4d33c58db6c2e77df14b83ac56be1ec  gcc/testsuite/gcc.target/aarch64/ldp_stp_1.c
  d60171b608bda1a5cf0258e031bb3520  gcc/testsuite/gcc.target/aarch64/ldp_stp_10.c
  1786c5d34b0f7cceace3327361040bde  gcc/testsuite/gcc.target/aarch64/ldp_stp_11.c
--- 48202,48212 ----
  aa9097deb2901881188486bdf9eb3343  gcc/testsuite/gcc.target/aarch64/index.c
  2b13cf8445a95980ea035811da6abe95  gcc/testsuite/gcc.target/aarch64/inline-lrint_1.c
  caaafb769b844ad26e03a5f739c93732  gcc/testsuite/gcc.target/aarch64/inline-lrint_2.c
! b37a5781e82510dfa7ecdf3ce4922a58  gcc/testsuite/gcc.target/aarch64/insv_1.c
  a897ae01d807185bd4ca7f1587e181d9  gcc/testsuite/gcc.target/aarch64/insv_2.c
  18f0bd2efa738426efce6208b83e0cbd  gcc/testsuite/gcc.target/aarch64/int_mov_immediate_1.c
  81256a6fac965eea861536637ff35013  gcc/testsuite/gcc.target/aarch64/large_struct_copy.c
! 508532c90ef5da7602402b5f0076c554  gcc/testsuite/gcc.target/aarch64/large_struct_copy_2.c
  c4d33c58db6c2e77df14b83ac56be1ec  gcc/testsuite/gcc.target/aarch64/ldp_stp_1.c
  d60171b608bda1a5cf0258e031bb3520  gcc/testsuite/gcc.target/aarch64/ldp_stp_10.c
  1786c5d34b0f7cceace3327361040bde  gcc/testsuite/gcc.target/aarch64/ldp_stp_11.c
*************** da228c5bd8eba6a5793d1df393f9c8d1  gcc/te
*** 45017,45022 ****
--- 48225,48232 ----
  2e89613bc3014a7c541e4842fef81025  gcc/testsuite/gcc.target/aarch64/ldp_stp_unaligned_1.c
  29215c380dc3c39d0bb516b829dd0503  gcc/testsuite/gcc.target/aarch64/ldp_stp_unaligned_2.c
  cc9a9ea2da09d4b15bb44f3466819c58  gcc/testsuite/gcc.target/aarch64/ldp_vec_64_1.c
+ d8fad0a193deddeb2e504f247f0e1721  gcc/testsuite/gcc.target/aarch64/ldp_vec_v2sf.c
+ 1457863fb2c6fad305de6653fab4b7ae  gcc/testsuite/gcc.target/aarch64/ldp_vec_v2si.c
  aacf72675fc499d7008f0afd92fba8a8  gcc/testsuite/gcc.target/aarch64/legitimize_stack_var_before_reload_1.c
  75b9e47e034140e3e91bf7ed48db1aad  gcc/testsuite/gcc.target/aarch64/load_v2vec_lanes_1.c
  16de8ed84724234cc0c899222f576867  gcc/testsuite/gcc.target/aarch64/long_branch_1.c
*************** a5cfe0849b43ef498cda6a872be26cb6  gcc/te
*** 45025,45034 ****
--- 48235,48250 ----
  9ca4f25b97ec89a6e60a1484f11dc946  gcc/testsuite/gcc.target/aarch64/lrint-matherr.h
  7339c0aa8e8c4ee7e29c285881181276  gcc/testsuite/gcc.target/aarch64/lsl_asr_sbfiz.c
  7693bd5e719d20476ed31986d797a71e  gcc/testsuite/gcc.target/aarch64/madd_after_asm_1.c
+ 33eab0e3b5245e5b101b281c59cd1cae  gcc/testsuite/gcc.target/aarch64/mem-shift-canonical.c
+ 374405f39b31b6bc7351dbd0fd02dfdb  gcc/testsuite/gcc.target/aarch64/memset-corner-cases.c
+ 870a86498f49d152dd144acaf79cf544  gcc/testsuite/gcc.target/aarch64/memset-q-reg.c
  4eed4dd5aa94cdbafdb452fb4f2fa939  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_1.c
  b89c285bf72a3b1d134d2ed30e7955a8  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_2.c
  1c6436442e97352feb4470e7662eb7ae  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_3.c
  c9a7887e4088a8e959845ccde4eb948a  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_4.c
+ fa90b8a378a809b67f8356f285f867cb  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_5.c
+ c70316e68cbf96797221358b1bdb80cc  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_6.c
+ ab6c97c8295b5f167eeeb0d2668a3bce  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_7.c
  abd9be6cb4337984cacf408e3646d219  gcc/testsuite/gcc.target/aarch64/mla_intrinsic_1.c
  db90f1e013762805f61adc51c244daab  gcc/testsuite/gcc.target/aarch64/mls_intrinsic_1.c
  8ae8760a71399434214ac816531278b6  gcc/testsuite/gcc.target/aarch64/mneg-1.c
*************** f6ab612d7f8f0a3e569b67ec3d18908f  gcc/te
*** 45045,45050 ****
--- 48261,48268 ----
  85fbc78b9315391c60d6d963528f56b8  gcc/testsuite/gcc.target/aarch64/movi_hf.c
  f3845a0299f51ecef1ccd2bcae060294  gcc/testsuite/gcc.target/aarch64/movk.c
  ae82e1a65f9bde05cbb20490441434f5  gcc/testsuite/gcc.target/aarch64/movk_2.c
+ 5260008b5bf426c473c9db5529ca9d42  gcc/testsuite/gcc.target/aarch64/movtf_1.c
+ 823357b095860206610462e9b4d49d8f  gcc/testsuite/gcc.target/aarch64/movti_1.c
  f8350260fcb74634d2769a0902d1bac1  gcc/testsuite/gcc.target/aarch64/mul_intrinsic_1.c
  b9c785119e80b786b5898ebaa7db0700  gcc/testsuite/gcc.target/aarch64/mult-synth_1.c
  5e37be111c4688833b9693bc6302f1ed  gcc/testsuite/gcc.target/aarch64/mult-synth_2.c
*************** b8aed2f1d41cb75f276523cd82c36bbb  gcc/te
*** 45052,45058 ****
  475e77af16debcf9fbdd8ee444d9a7a5  gcc/testsuite/gcc.target/aarch64/mult-synth_4.c
  75729350e479bd19e771b32da82d2301  gcc/testsuite/gcc.target/aarch64/mult-synth_5.c
  7109c6ca9fae844ddbfcec4c93ed1ba6  gcc/testsuite/gcc.target/aarch64/mult-synth_6.c
! 58a38f1e4cf9634f2b95a516914689b1  gcc/testsuite/gcc.target/aarch64/narrow_high-intrinsics.c
  939496f630a07f95a47a84cc4f5f7267  gcc/testsuite/gcc.target/aarch64/neg_1.c
  98aa8533c6a9248fe295572b2512fac7  gcc/testsuite/gcc.target/aarch64/neg_abs_1.c
  c8c679e672173f52fbc0d86757b5c05a  gcc/testsuite/gcc.target/aarch64/negs.c
--- 48270,48277 ----
  475e77af16debcf9fbdd8ee444d9a7a5  gcc/testsuite/gcc.target/aarch64/mult-synth_4.c
  75729350e479bd19e771b32da82d2301  gcc/testsuite/gcc.target/aarch64/mult-synth_5.c
  7109c6ca9fae844ddbfcec4c93ed1ba6  gcc/testsuite/gcc.target/aarch64/mult-synth_6.c
! 0da02c92f522f70dac5f559b786a6a5b  gcc/testsuite/gcc.target/aarch64/mvn_zero_ext.c
! 18b4be822d23c74967c07303bd28f766  gcc/testsuite/gcc.target/aarch64/narrow_high-intrinsics.c
  939496f630a07f95a47a84cc4f5f7267  gcc/testsuite/gcc.target/aarch64/neg_1.c
  98aa8533c6a9248fe295572b2512fac7  gcc/testsuite/gcc.target/aarch64/neg_abs_1.c
  c8c679e672173f52fbc0d86757b5c05a  gcc/testsuite/gcc.target/aarch64/negs.c
*************** fb19dd57034e67da13f2a5b22815fcc5  gcc/te
*** 45064,45069 ****
--- 48283,48289 ----
  31192c5ad4b7d30f5e3a3f25a5e74741  gcc/testsuite/gcc.target/aarch64/noplt_1.c
  390e3deb9378ba437cf8138949f7153b  gcc/testsuite/gcc.target/aarch64/noplt_2.c
  e1e28ce510ce90ec2cf4b8863b5abb4d  gcc/testsuite/gcc.target/aarch64/noplt_3.c
+ e061c7b1af333a61965c081818e07940  gcc/testsuite/gcc.target/aarch64/nospill.c
  5d43e2829488a18473d4b2ca37cdaf82  gcc/testsuite/gcc.target/aarch64/nosplit-di-const-volatile_1.c
  773bc5b0a8368679f7d4856edfb4d60f  gcc/testsuite/gcc.target/aarch64/options_set_1.c
  d6e1d0cb7cb44f50985db131c62ba20b  gcc/testsuite/gcc.target/aarch64/options_set_10.c
*************** c634a3e3729a1cf014159113aaaa5923  gcc/te
*** 45102,45107 ****
--- 48322,48330 ----
  629072fafe5767161ca1f67309a94cc5  gcc/testsuite/gcc.target/aarch64/popcnt.c
  1444bbe1566e1e44cb5d667947f37296  gcc/testsuite/gcc.target/aarch64/popcnt2.c
  86842168437685ec7a5c743fbea8576c  gcc/testsuite/gcc.target/aarch64/popcount4.c
+ 27e2c5c9a0bcdfebf2133e263738b146  gcc/testsuite/gcc.target/aarch64/pr100028.c
+ 1c78040ee8384426d5334c9b28ab2f6e  gcc/testsuite/gcc.target/aarch64/pr100056.c
+ c3d44b74cbd361a863813180478ad6c8  gcc/testsuite/gcc.target/aarch64/pr100075.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
*************** b28ad75ae030029f6a891f12b81c0ebf  gcc/te
*** 45134,45140 ****
  9357327a0e7073dde1ca415f103c86f2  gcc/testsuite/gcc.target/aarch64/pr70120-1.c
  6d806c50c21bbbe2e388dd9e1819fb28  gcc/testsuite/gcc.target/aarch64/pr70120-2.c
  61ea50a51a3ed94b38acd7cd026cd077  gcc/testsuite/gcc.target/aarch64/pr70120-3.c
! eb748e6de8945b3aa35ce6b22a073829  gcc/testsuite/gcc.target/aarch64/pr70398.c
  e7efe396ef16dbc7526785247ead6d84  gcc/testsuite/gcc.target/aarch64/pr70809_1.c
  1acf0bf1d4e41e413852c39aabdc7e52  gcc/testsuite/gcc.target/aarch64/pr71016.c
  4aa462ffa5914a7dd8ae0a2383731a49  gcc/testsuite/gcc.target/aarch64/pr71727-2.c
--- 48357,48363 ----
  9357327a0e7073dde1ca415f103c86f2  gcc/testsuite/gcc.target/aarch64/pr70120-1.c
  6d806c50c21bbbe2e388dd9e1819fb28  gcc/testsuite/gcc.target/aarch64/pr70120-2.c
  61ea50a51a3ed94b38acd7cd026cd077  gcc/testsuite/gcc.target/aarch64/pr70120-3.c
! a5a030e82205f8d9b2799618b27cc294  gcc/testsuite/gcc.target/aarch64/pr70398.c
  e7efe396ef16dbc7526785247ead6d84  gcc/testsuite/gcc.target/aarch64/pr70809_1.c
  1acf0bf1d4e41e413852c39aabdc7e52  gcc/testsuite/gcc.target/aarch64/pr71016.c
  4aa462ffa5914a7dd8ae0a2383731a49  gcc/testsuite/gcc.target/aarch64/pr71727-2.c
*************** d585c557cbd7f197bd243da31f038b9c  gcc/te
*** 45161,45166 ****
--- 48384,48390 ----
  f1bf7ff33493bb68ff78eb400f2af3a2  gcc/testsuite/gcc.target/aarch64/pr89093.c
  17eeb965a69e77c4e86c7a3c85742547  gcc/testsuite/gcc.target/aarch64/pr90838.c
  d43406280c991dedd7072642fee590a0  gcc/testsuite/gcc.target/aarch64/pr91102.c
+ cb9ff251051d24e9eaa0963c842a29d1  gcc/testsuite/gcc.target/aarch64/pr91710.c
  fc91452912566f4106b747b6e9c396e5  gcc/testsuite/gcc.target/aarch64/pr91927.c
  9562a96a900add1659850fcc3d3901cf  gcc/testsuite/gcc.target/aarch64/pr92424-1.c
  fa96ea78d21fc13d022162f4fb6d0e23  gcc/testsuite/gcc.target/aarch64/pr92424-2.c
*************** c62d6dacdfaa7c29b7d597102a1c90c7  gcc/te
*** 45180,45194 ****
  adbd85a2c55f47f70a05be84ab927f7a  gcc/testsuite/gcc.target/aarch64/pr94577.c
  1366814bb1b0d8bfd71ff640bd30b0df  gcc/testsuite/gcc.target/aarch64/pr94697.c
  c6eebf3e7952e61593d0c0e9db4a9363  gcc/testsuite/gcc.target/aarch64/pr94748.c
  7efc167a5df3c9133b9e99c18ee38f55  gcc/testsuite/gcc.target/aarch64/pr96313.c
  8ea6a3f06e2e1c60538a5b568bb73f04  gcc/testsuite/gcc.target/aarch64/pr96377-1.c
  69e5a8d7d8e14443011c1f69c91185a0  gcc/testsuite/gcc.target/aarch64/pr96402.c
  324c376896d6eaefbd8999f38e59c317  gcc/testsuite/gcc.target/aarch64/pr97150.c
  bf82071ea86307b407ab979b320a2a98  gcc/testsuite/gcc.target/aarch64/pr97535.c
  c5ac198fcc683ea88b36ff21fc73e2c5  gcc/testsuite/gcc.target/aarch64/pr97638.c
! 9de38bfb1ed2fd966b262da7bfb1767a  gcc/testsuite/gcc.target/aarch64/pr97701.c
  18603818c100529306da07a556c00769  gcc/testsuite/gcc.target/aarch64/pr99381.c
  49e4573c158d59f2a37800471ca3bc65  gcc/testsuite/gcc.target/aarch64/pr99808.c
  d3e6defa85b5cd4bb506306377e59a53  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1.c
  42c7828cb4d5253e1a3df46c971f945a  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
  1802b716a6dff570eaf8df2688efe1dd  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c
--- 48404,48427 ----
  adbd85a2c55f47f70a05be84ab927f7a  gcc/testsuite/gcc.target/aarch64/pr94577.c
  1366814bb1b0d8bfd71ff640bd30b0df  gcc/testsuite/gcc.target/aarch64/pr94697.c
  c6eebf3e7952e61593d0c0e9db4a9363  gcc/testsuite/gcc.target/aarch64/pr94748.c
+ 7f56460afccd09f9dac35acbb8186c34  gcc/testsuite/gcc.target/aarch64/pr95254.c
  7efc167a5df3c9133b9e99c18ee38f55  gcc/testsuite/gcc.target/aarch64/pr96313.c
  8ea6a3f06e2e1c60538a5b568bb73f04  gcc/testsuite/gcc.target/aarch64/pr96377-1.c
  69e5a8d7d8e14443011c1f69c91185a0  gcc/testsuite/gcc.target/aarch64/pr96402.c
+ c000a74456afb8c466b7135446f4d58c  gcc/testsuite/gcc.target/aarch64/pr96757.c
+ ba88fb91de44ac3dfbdb5d3f10f230a5  gcc/testsuite/gcc.target/aarch64/pr96968.c
  324c376896d6eaefbd8999f38e59c317  gcc/testsuite/gcc.target/aarch64/pr97150.c
  bf82071ea86307b407ab979b320a2a98  gcc/testsuite/gcc.target/aarch64/pr97535.c
  c5ac198fcc683ea88b36ff21fc73e2c5  gcc/testsuite/gcc.target/aarch64/pr97638.c
! fd312dc569ccf5ce510dd16b64f1203b  gcc/testsuite/gcc.target/aarch64/pr97701.c
! 98e2f872193b247fc94cc5d6f30aaddf  gcc/testsuite/gcc.target/aarch64/pr98603.c
! d36ed016a2b11c922ff41b3a63eb03d8  gcc/testsuite/gcc.target/aarch64/pr98772.c
  18603818c100529306da07a556c00769  gcc/testsuite/gcc.target/aarch64/pr99381.c
+ 1f2ce8a6e6be36322ada7a2a222926ac  gcc/testsuite/gcc.target/aarch64/pr99767.c
  49e4573c158d59f2a37800471ca3bc65  gcc/testsuite/gcc.target/aarch64/pr99808.c
+ c117eaeade3674a6a21013315de55b26  gcc/testsuite/gcc.target/aarch64/pr99873_1.c
+ c45bc47433163208f0aec414ada73705  gcc/testsuite/gcc.target/aarch64/pr99873_2.c
+ 18c52a2faa4e83538abeef107e3b4d8a  gcc/testsuite/gcc.target/aarch64/pr99873_3.c
  d3e6defa85b5cd4bb506306377e59a53  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1.c
  42c7828cb4d5253e1a3df46c971f945a  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
  1802b716a6dff570eaf8df2688efe1dd  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c
*************** b2b9b4bede373ccce7eb9870526caf86  gcc/te
*** 45216,45221 ****
--- 48449,48456 ----
  c0725600c63b6165198bcd4488142b24  gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c
  961d957558702f3a32901bf52b170534  gcc/testsuite/gcc.target/aarch64/scalar_shift_1.c
  b0af57cfaade3214be10647c1c8b885d  gcc/testsuite/gcc.target/aarch64/sdiv_costs_1.c
+ 3e8ce149782bdd987aa781b057d78ceb  gcc/testsuite/gcc.target/aarch64/set_fpcr64_1.c
+ a93f1f3ea917533aaecb0c213be0f4d9  gcc/testsuite/gcc.target/aarch64/set_fpsr64_1.c
  f62a4cd99af4f919eb92ce0f2ca54a9c  gcc/testsuite/gcc.target/aarch64/sha1_1.c
  4d32184bd371e3cea9bd7c063192da56  gcc/testsuite/gcc.target/aarch64/sha2.h
  fe26f8621abd85653f2c73821030ac0f  gcc/testsuite/gcc.target/aarch64/sha256_1.c
*************** b6aa615b85ae40b63a22dbc7071fd902  gcc/te
*** 45227,45232 ****
--- 48462,48468 ----
  b452d4c86751bd11bf03b8ca21d25bf4  gcc/testsuite/gcc.target/aarch64/sha3_2.c
  7bbc7a27b67681b713096a7ab9ed18a3  gcc/testsuite/gcc.target/aarch64/sha3_3.c
  8944288dbff8e1e27c9948e6640f93d5  gcc/testsuite/gcc.target/aarch64/shift_wide_invalid_1.c
+ 0d48e6d77924a54eb077969bf5f8aafb  gcc/testsuite/gcc.target/aarch64/shrink_wrap_1.c
  1581fca9833dd741d7b8f91b93455158  gcc/testsuite/gcc.target/aarch64/shrink_wrap_symbol_ref_1.c
  7378ad57a7e281bf3f87ce9a0d494e69  gcc/testsuite/gcc.target/aarch64/signbitv2sf.c
  d2757938fad3b14f583150a49e03367e  gcc/testsuite/gcc.target/aarch64/signbitv4sf.c
*************** fed45a34e01f1c902eebbb4525b2026f  gcc/te
*** 45279,45289 ****
  f1c9e2aa3c435c9efdc1ea83da4e1eeb  gcc/testsuite/gcc.target/aarch64/simd/int_comparisons_2.c
  f2791d55a2c9ed7182a54a406810cf47  gcc/testsuite/gcc.target/aarch64/simd/pr67896.c
  c4b08114012e09e0f47a84f5e5311441  gcc/testsuite/gcc.target/aarch64/simd/pr97349.c
! 5261330794b1977c184707d6bf638702  gcc/testsuite/gcc.target/aarch64/simd/simd.exp
  f3c991b46eba7858b8e495f9c61c82a7  gcc/testsuite/gcc.target/aarch64/simd/ssra.c
  6cc70e998362cc09840837fba67910d8  gcc/testsuite/gcc.target/aarch64/simd/trn_zip_p64_1.c
  1ca6803dbcd5c5a367a0f7a13137ab22  gcc/testsuite/gcc.target/aarch64/simd/usra.c
  433cb4ec4520c807f8d4a73e400502ae  gcc/testsuite/gcc.target/aarch64/simd/vadd_poly_1.c
  644c7b6ceda9f8b60fb839e127602e3c  gcc/testsuite/gcc.target/aarch64/simd/vbsl_f64_1.c
  e10e947e9f1b8d492f7629bc92f27019  gcc/testsuite/gcc.target/aarch64/simd/vcage_f64.c
  90da7e6d78027945448c660af03a4cb2  gcc/testsuite/gcc.target/aarch64/simd/vcagt_f64.c
--- 48515,48527 ----
  f1c9e2aa3c435c9efdc1ea83da4e1eeb  gcc/testsuite/gcc.target/aarch64/simd/int_comparisons_2.c
  f2791d55a2c9ed7182a54a406810cf47  gcc/testsuite/gcc.target/aarch64/simd/pr67896.c
  c4b08114012e09e0f47a84f5e5311441  gcc/testsuite/gcc.target/aarch64/simd/pr97349.c
! 98ad17eba6ed6a47a93dddc98dcba951  gcc/testsuite/gcc.target/aarch64/simd/pr99437.c
! d0305fc0cd334a9d12270e9a2433ad74  gcc/testsuite/gcc.target/aarch64/simd/simd.exp
  f3c991b46eba7858b8e495f9c61c82a7  gcc/testsuite/gcc.target/aarch64/simd/ssra.c
  6cc70e998362cc09840837fba67910d8  gcc/testsuite/gcc.target/aarch64/simd/trn_zip_p64_1.c
  1ca6803dbcd5c5a367a0f7a13137ab22  gcc/testsuite/gcc.target/aarch64/simd/usra.c
  433cb4ec4520c807f8d4a73e400502ae  gcc/testsuite/gcc.target/aarch64/simd/vadd_poly_1.c
+ 4e444ccd3e50f6329670ce1dbd3f466c  gcc/testsuite/gcc.target/aarch64/simd/vaddlv_1.c
  644c7b6ceda9f8b60fb839e127602e3c  gcc/testsuite/gcc.target/aarch64/simd/vbsl_f64_1.c
  e10e947e9f1b8d492f7629bc92f27019  gcc/testsuite/gcc.target/aarch64/simd/vcage_f64.c
  90da7e6d78027945448c660af03a4cb2  gcc/testsuite/gcc.target/aarch64/simd/vcagt_f64.c
*************** a652b7b70ee3d8d31de4c77fd8a4e1e8  gcc/te
*** 45308,45314 ****
  b85188df577a6b8c4ea30329b38769d8  gcc/testsuite/gcc.target/aarch64/simd/vcvtp_s64_f64_1.c
  deca043ed23c518b74a2792701289981  gcc/testsuite/gcc.target/aarch64/simd/vcvtp_u64_f64_1.c
  6dbd14fdcf24b2d17c35bdaf069688a6  gcc/testsuite/gcc.target/aarch64/simd/vect_str_zero.c
! b0cea8a79e77bdc4cd22886fca4ef726  gcc/testsuite/gcc.target/aarch64/simd/vect_su_add_sub.c
  1befb286b0644e39c9829338c6449b03  gcc/testsuite/gcc.target/aarch64/simd/vfma_f64.c
  f1a54c525a18abf029354ff2f70209d5  gcc/testsuite/gcc.target/aarch64/simd/vfms_f64.c
  53a5c0ff886cf0f1a64184445c0bdee0  gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f32_indices_1.c
--- 48546,48552 ----
  b85188df577a6b8c4ea30329b38769d8  gcc/testsuite/gcc.target/aarch64/simd/vcvtp_s64_f64_1.c
  deca043ed23c518b74a2792701289981  gcc/testsuite/gcc.target/aarch64/simd/vcvtp_u64_f64_1.c
  6dbd14fdcf24b2d17c35bdaf069688a6  gcc/testsuite/gcc.target/aarch64/simd/vect_str_zero.c
! 316465198cc13e56db13f95b521d5d2d  gcc/testsuite/gcc.target/aarch64/simd/vect_su_add_sub.c
  1befb286b0644e39c9829338c6449b03  gcc/testsuite/gcc.target/aarch64/simd/vfma_f64.c
  f1a54c525a18abf029354ff2f70209d5  gcc/testsuite/gcc.target/aarch64/simd/vfms_f64.c
  53a5c0ff886cf0f1a64184445c0bdee0  gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f32_indices_1.c
*************** e101fae335b7ee05e94f44945ad9e568  gcc/te
*** 45341,45346 ****
--- 48579,48585 ----
  d3471e819805085e851c6ef99b412fc9  gcc/testsuite/gcc.target/aarch64/simd/vmla_f64.c
  76bd294b136cfc9375488944eb7f3ba0  gcc/testsuite/gcc.target/aarch64/simd/vmls_f64.c
  7b488ba6c1f84e266799b037eedc797b  gcc/testsuite/gcc.target/aarch64/simd/vmmla.c
+ 94345e699abe993e3294cab2d9423634  gcc/testsuite/gcc.target/aarch64/simd/vmovl_high_1.c
  4390f49e359ac2d7ee2baec3f4b6967c  gcc/testsuite/gcc.target/aarch64/simd/vmul_elem_1.c
  f4f3b7ca3433b577e0c8b5a94bd6c11a  gcc/testsuite/gcc.target/aarch64/simd/vmul_f64_1.c
  7fd8f1130afba68a9c1f1cdf8b7c4c5d  gcc/testsuite/gcc.target/aarch64/simd/vmul_lane_const_lane_1.c
*************** e24e752cdfaae08d96c7ec56c0ef75fd  gcc/te
*** 45671,45677 ****
  ea10ab0509dcbe5d25695d4b7db37790  gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr.c
  411e73a8b509fa4da979e06198cebf3f  gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr-pacret.c
  191883f75825c4b0b253a140dcf374ff  gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr.c
! 8dd8f7f20bd88df84fdd9ca6e3ef6c38  gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-mitigation.exp
  95e880a9b2777120f2cedeadb9eff8ee  gcc/testsuite/gcc.target/aarch64/sm3_sm4.c
  027ea69913c2c5a06d8e58409b958082  gcc/testsuite/gcc.target/aarch64/spellcheck_1.c
  e95d67535eb0a800294c8b3a03995066  gcc/testsuite/gcc.target/aarch64/spellcheck_2.c
--- 48910,48916 ----
  ea10ab0509dcbe5d25695d4b7db37790  gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr.c
  411e73a8b509fa4da979e06198cebf3f  gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr-pacret.c
  191883f75825c4b0b253a140dcf374ff  gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr.c
! 38cb81e8c00a56926043f3148d016ff8  gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-mitigation.exp
  95e880a9b2777120f2cedeadb9eff8ee  gcc/testsuite/gcc.target/aarch64/sm3_sm4.c
  027ea69913c2c5a06d8e58409b958082  gcc/testsuite/gcc.target/aarch64/spellcheck_1.c
  e95d67535eb0a800294c8b3a03995066  gcc/testsuite/gcc.target/aarch64/spellcheck_2.c
*************** bf1b4163311ce1666bdf27103c7c7f54  gcc/te
*** 45724,45729 ****
--- 48963,48970 ----
  a45adf8dc3cf3437c984bded22857527  gcc/testsuite/gcc.target/aarch64/stack-checking.c
  15daf3ca2e93cf9884e5c8e104e8a765  gcc/testsuite/gcc.target/aarch64/stack-protector-1.c
  c2b556510a6d5c54101374760111a06e  gcc/testsuite/gcc.target/aarch64/stack-protector-2.c
+ d3f7c5d3a030409831119cf4b6c4e227  gcc/testsuite/gcc.target/aarch64/stack-protector-3.c
+ e13154393d19a49196906480b6d2d4bc  gcc/testsuite/gcc.target/aarch64/stack-protector-4.c
  3367dd14de391b1bd4bcf779e76b539d  gcc/testsuite/gcc.target/aarch64/stack-protector-5.c
  e01a1f1b04b18c2fe9d9ae7868f0e844  gcc/testsuite/gcc.target/aarch64/stack-protector-6.c
  a27709d027d6c6481721a51a678b65ed  gcc/testsuite/gcc.target/aarch64/stack-protector-7.c
*************** fa57c8801f6408a8a60441b14264d643  gcc/te
*** 45735,45754 ****
  62a302003cd980c5545eb86486204993  gcc/testsuite/gcc.target/aarch64/store_v2vec_lanes.c
  20a94ac6074e4b9fc9ae888885d787ca  gcc/testsuite/gcc.target/aarch64/stp_vec_128_1.c
  2b3b2d71a1eeaa42d801c6f3133c4919  gcc/testsuite/gcc.target/aarch64/stp_vec_64_1.c
! c43c2ead96b394127d8644ef3360a3dd  gcc/testsuite/gcc.target/aarch64/strcmpopt_6.c
  4852e4b5dd0648ee3fc8c4af6feb5483  gcc/testsuite/gcc.target/aarch64/struct_cpy.c
  adb1c4e7d709c64ebafff36700e610bf  gcc/testsuite/gcc.target/aarch64/struct_return.c
  49024de201ed5116d85217d7038dead6  gcc/testsuite/gcc.target/aarch64/subs.c
  834e46ea541b400f3d3b542aec361454  gcc/testsuite/gcc.target/aarch64/subs1.c
  16dce9591d585c221f8f8466df8e75ab  gcc/testsuite/gcc.target/aarch64/subs2.c
! 97a1f4ce89f62836b1d1758b1679bf32  gcc/testsuite/gcc.target/aarch64/subs3.c
  da0f05a59f07947e5516436d11add9e4  gcc/testsuite/gcc.target/aarch64/subs_compare_1.c
  244d438c9b47564a8579d9ea1b0639e2  gcc/testsuite/gcc.target/aarch64/subs_compare_2.c
! c4d994e8b0e6078cdff6213b73a694f8  gcc/testsuite/gcc.target/aarch64/subsp.c
! 8bdb58b2ef7fbead814bc8cb5a4f1026  gcc/testsuite/gcc.target/aarch64/sve/aarch64-sve.exp
  18ebbc8e9de1d2ee5d54133da671b995  gcc/testsuite/gcc.target/aarch64/sve/abs_1.c
! caa9000c71545a5bfbf3647d34fa89b3  gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
! 72b200b8e1afde64a7f3902804f6c958  gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle.exp
  7f5733dc43b70ddb95a2391ed989189b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/abd_f16.c
  50880d9abd4092a46bc1d7b23eb352a4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/abd_f32.c
  94959a93fdfe967c8d71932f6b318833  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/abd_f64.c
--- 48976,48999 ----
  62a302003cd980c5545eb86486204993  gcc/testsuite/gcc.target/aarch64/store_v2vec_lanes.c
  20a94ac6074e4b9fc9ae888885d787ca  gcc/testsuite/gcc.target/aarch64/stp_vec_128_1.c
  2b3b2d71a1eeaa42d801c6f3133c4919  gcc/testsuite/gcc.target/aarch64/stp_vec_64_1.c
! f19ede0e4b05ef8dfb622bbb931da820  gcc/testsuite/gcc.target/aarch64/stp_vec_v2df.c
! 8e4e6b5ef2b82c562beaa0575c3f3b41  gcc/testsuite/gcc.target/aarch64/stp_vec_v2di.c
! bc1fbefe895b54cedd688127c53b9660  gcc/testsuite/gcc.target/aarch64/stp_vec_v2sf.c
! 0bb513a34af5cbcda9a857f0fcba3f90  gcc/testsuite/gcc.target/aarch64/stp_vec_v2si.c
! 617526aa28f7016cf63f429b1fa2a701  gcc/testsuite/gcc.target/aarch64/strcmpopt_6.c
  4852e4b5dd0648ee3fc8c4af6feb5483  gcc/testsuite/gcc.target/aarch64/struct_cpy.c
  adb1c4e7d709c64ebafff36700e610bf  gcc/testsuite/gcc.target/aarch64/struct_return.c
  49024de201ed5116d85217d7038dead6  gcc/testsuite/gcc.target/aarch64/subs.c
  834e46ea541b400f3d3b542aec361454  gcc/testsuite/gcc.target/aarch64/subs1.c
  16dce9591d585c221f8f8466df8e75ab  gcc/testsuite/gcc.target/aarch64/subs2.c
! a4531a773ebb1ba221309f7860dbafa3  gcc/testsuite/gcc.target/aarch64/subs3.c
  da0f05a59f07947e5516436d11add9e4  gcc/testsuite/gcc.target/aarch64/subs_compare_1.c
  244d438c9b47564a8579d9ea1b0639e2  gcc/testsuite/gcc.target/aarch64/subs_compare_2.c
! b80ee08d736c3560f1d085793990beb9  gcc/testsuite/gcc.target/aarch64/subsp.c
! e2f0082700ce93b7daed920e521d8699  gcc/testsuite/gcc.target/aarch64/sve/aarch64-sve.exp
  18ebbc8e9de1d2ee5d54133da671b995  gcc/testsuite/gcc.target/aarch64/sve/abs_1.c
! 856c92b3ae8965bb459d9ac69b0bce59  gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
! cb41033217c8de4950e9c9e82db36d48  gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle.exp
  7f5733dc43b70ddb95a2391ed989189b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/abd_f16.c
  50880d9abd4092a46bc1d7b23eb352a4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/abd_f32.c
  94959a93fdfe967c8d71932f6b318833  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/abd_f64.c
*************** ae0176129a5913f76a91077988e45221  gcc/te
*** 46714,46726 ****
  867e3aae5132aa767098ab0265b45c16  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/pnext_b32.c
  1cfc1ba54c883f2d6bdeae0738656ea9  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/pnext_b64.c
  a2d899895a42b3de04cebd930dee7d0f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/pnext_b8.c
! 3167060345cd079617cf3a4a4e8a417d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfb.c
  fead0ab03b9454a660c6c085b26085e9  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfb_gather.c
! 8ab5aa5d491df93a166c40167c1ecede  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfd.c
  3d9b39a6545da45d04b6314acc6054df  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfd_gather.c
! 2e2f073b667402b20986754dfa4c76e6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfh.c
  20a25e0c8308556ffb60522519087b0c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfh_gather.c
! dbaa07689b6fc20d650446126c7b36a6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfw.c
  75c4726a8e23f81991bd9f536cf6ef7f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfw_gather.c
  e39dfcc81aee1e3dc7f7e3714bd7fd33  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ptest_any.c
  0acf46d836c699d5621e8f96a73d2141  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ptest_first.c
--- 49959,49971 ----
  867e3aae5132aa767098ab0265b45c16  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/pnext_b32.c
  1cfc1ba54c883f2d6bdeae0738656ea9  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/pnext_b64.c
  a2d899895a42b3de04cebd930dee7d0f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/pnext_b8.c
! 931eaeee330faa4ec3e32bcbc91c16bb  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfb.c
  fead0ab03b9454a660c6c085b26085e9  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfb_gather.c
! 600e946cb269155fb497d8aebe2466a3  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfd.c
  3d9b39a6545da45d04b6314acc6054df  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfd_gather.c
! 5f1c0e0eadc4935d7c44b1f68efa1b89  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfh.c
  20a25e0c8308556ffb60522519087b0c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfh_gather.c
! f72481ba1755a7934b8fb51f6290a014  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfw.c
  75c4726a8e23f81991bd9f536cf6ef7f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfw_gather.c
  e39dfcc81aee1e3dc7f7e3714bd7fd33  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ptest_any.c
  0acf46d836c699d5621e8f96a73d2141  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ptest_first.c
*************** ada4676e8f789a8a2b5af72d04ae5acc  gcc/te
*** 47053,47063 ****
  13a54b11e388421524314a95a99f8d8b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_s16.c
  ad32e3107ac44ea1efd0536c4df54ef6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_s32.c
  54e74bf80fe223e5eb25399e78d5833e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_s64.c
! dfa6a68575f49089e05215598d5ad085  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_s8.c
  1b186081ff4f761c6c291cf862c1c428  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_u16.c
  76ba5f33989932adf5fe8e96a9b13935  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_u32.c
  99bb80a960777bf73b850d2a9e1273c2  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_u64.c
! b3da8cc368125b8d78bbab16379956aa  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_u8.c
  ee7afa01d1915185fa6b01aeb1c29e3c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/stnt1_bf16.c
  f4ac80b57d2b4bc2319861dcff3ff1c6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/stnt1_f16.c
  86dabd6bc3ee1f360aa0750adefe785a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/stnt1_f32.c
--- 50298,50308 ----
  13a54b11e388421524314a95a99f8d8b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_s16.c
  ad32e3107ac44ea1efd0536c4df54ef6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_s32.c
  54e74bf80fe223e5eb25399e78d5833e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_s64.c
! 39079d8f79d8bb0fa5bb4d0d230ebe3c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_s8.c
  1b186081ff4f761c6c291cf862c1c428  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_u16.c
  76ba5f33989932adf5fe8e96a9b13935  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_u32.c
  99bb80a960777bf73b850d2a9e1273c2  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_u64.c
! f87b7af13eced21d49e6e0c1225dda7e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_u8.c
  ee7afa01d1915185fa6b01aeb1c29e3c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/stnt1_bf16.c
  f4ac80b57d2b4bc2319861dcff3ff1c6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/stnt1_f16.c
  86dabd6bc3ee1f360aa0750adefe785a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/stnt1_f32.c
*************** d5fcee13cd2358e769f93bfbe4b5256c  gcc/te
*** 47358,47369 ****
  eb453b437e35070d74c76756ef730f41  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/create_6.c
  249e8a678420c92db86a63096adaa40c  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ext_1.c
  e9c110fd430f139755b8ad5496e3227c  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/fold_left_1.c
! 0d24a1f7b14a42f382c962bae9292ce7  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/func_redef_1.c
! cf6c3f2e4a53665c5608f7285c10c9c4  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/func_redef_2.c
! 1b9805f3ef8023746a97724cdc63c2c4  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/func_redef_3.c
  a8f787fd1ec7ddbbee8caef7bc2191cc  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/func_redef_4.c
  a9dc745493fb77434b1319040dae5a31  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/func_redef_5.c
! 701b86d35e26e6d98d75cbabbd31ac4d  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/func_redef_6.c
  969ade7f25e3c9e771be9b1cdd12588a  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_1.c
  058af2267f666bcfc7762c1914bdb9b0  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_2.c
  ec11eff8f5009ed3e03c5cf524c5878a  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_3.c
--- 50603,50614 ----
  eb453b437e35070d74c76756ef730f41  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/create_6.c
  249e8a678420c92db86a63096adaa40c  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ext_1.c
  e9c110fd430f139755b8ad5496e3227c  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/fold_left_1.c
! a225ae423f67b692af207a8a83138a66  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/func_redef_1.c
! 799639f0fb6c82853d5a4f033f154e54  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/func_redef_2.c
! 853ceb5b5ba271b7edad614861749830  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/func_redef_3.c
  a8f787fd1ec7ddbbee8caef7bc2191cc  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/func_redef_4.c
  a9dc745493fb77434b1319040dae5a31  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/func_redef_5.c
! 9ae1b05dc8d8f928c81d748a26f2e8f2  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/func_redef_6.c
  969ade7f25e3c9e771be9b1cdd12588a  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_1.c
  058af2267f666bcfc7762c1914bdb9b0  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_2.c
  ec11eff8f5009ed3e03c5cf524c5878a  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_3.c
*************** c43f9361ffe3eef8e73a470c01abe765  gcc/te
*** 47473,47498 ****
  040db5b2cee39a07e6372dfab55dfb7e  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_uintq_intq_lane_1.c
  f53b1ab878f7b9108877de83395be5e1  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_uintq_intq_opt_n_1.c
  c51086686f2040d765e15cd6750b84de  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/tmad_1.c
! 2fca721a0fde843ee6ab52e2bb5f433b  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_1.c
! a9bcfb56f928176cbfa93a0b6078b14a  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_10.c
  7127861bc8a07c2c554fa0f635a5912d  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_11.c
  beebf44d29e74f5b7dedc863fde6d576  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_12.c
! d4b4954d5fbb6c87bf23706246e84e93  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_13.c
  1cb076c95910853d54acd138255b63ff  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_14.c
  360668f835177b3334b675ea85d370d6  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_15.c
  5da58e1dca888ece82b870dcf1093b40  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_16.c
  42b0417053ecd5d52e5b76a79d037389  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_17.c
  fd9ae01185347eb66c8ece3548e34a01  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_18.c
  d7bff57159747e66780f891e2a86edfa  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_19.c
! 7069aafc4b9cacedd9f5e862786899e9  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_2.c
  294b6459171464caceecd2a07884e012  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_20.c
! adb1a480aae68d234747f54c86e0d46e  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_3.c
! a3d6ca7f77a13f31926bb6a2b0fbafc7  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_4.c
! 212f9d1502546bd58363f912ea404c4e  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_5.c
! 8e93c1293ce14697e5e8cd842a88c89e  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_6.c
  941fbe47fb9f41337622c694d5ef6ffe  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_7.c
! 95247dc52bec77eb8b42e36fd69973c6  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_8.c
! 7c5bb2cdcb54afda18df3692c69502e3  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_9.c
  0889c288d8602f5cdf5b5effae8d44e9  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_1.c
  b4527d245e03173d2a8596456cf3bc7e  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_2.c
  996faa99460a4541c80773f8e90bcc8a  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_convert_1.c
--- 50718,50743 ----
  040db5b2cee39a07e6372dfab55dfb7e  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_uintq_intq_lane_1.c
  f53b1ab878f7b9108877de83395be5e1  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_uintq_intq_opt_n_1.c
  c51086686f2040d765e15cd6750b84de  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/tmad_1.c
! fe8b1fedb830960ed78b96fc34dbdc23  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_1.c
! f115482ad1b58022cec74e0221ca5738  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_10.c
  7127861bc8a07c2c554fa0f635a5912d  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_11.c
  beebf44d29e74f5b7dedc863fde6d576  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_12.c
! 7153ac80f1b47f49bc5d794126dcd24c  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_13.c
  1cb076c95910853d54acd138255b63ff  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_14.c
  360668f835177b3334b675ea85d370d6  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_15.c
  5da58e1dca888ece82b870dcf1093b40  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_16.c
  42b0417053ecd5d52e5b76a79d037389  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_17.c
  fd9ae01185347eb66c8ece3548e34a01  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_18.c
  d7bff57159747e66780f891e2a86edfa  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_19.c
! a957cc204b3db94316bfebb851bfd67e  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_2.c
  294b6459171464caceecd2a07884e012  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_20.c
! a119c3ae65a9b9ad57b809ffe312811f  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_3.c
! 269ded02438a67de203452e8e8bab0ee  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_4.c
! 40218e9f9c5459fa583e11a61f0813fb  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_5.c
! b82fa73576ee65cbf46fb469818b539b  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_6.c
  941fbe47fb9f41337622c694d5ef6ffe  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_7.c
! 21e968b6774b431d4114da11710a6e27  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_8.c
! 6503fe801701d996c25560850815526a  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/type_redef_9.c
  0889c288d8602f5cdf5b5effae8d44e9  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_1.c
  b4527d245e03173d2a8596456cf3bc7e  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_2.c
  996faa99460a4541c80773f8e90bcc8a  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_convert_1.c
*************** b36b54bea7bee04bed45d73a87ac0322  gcc/te
*** 47573,47578 ****
--- 50818,50824 ----
  69ae6ebc76730905395b0222e6fe1a42  gcc/testsuite/gcc.target/aarch64/sve/acle/general/ldff1_5.c
  8372262a31e1ff9516659085ed6ac939  gcc/testsuite/gcc.target/aarch64/sve/acle/general/ldff1_6.c
  365cde692b8b6b3232a3acd49bb26b37  gcc/testsuite/gcc.target/aarch64/sve/acle/general/ldff1_7.c
+ 651a5001fce99d1977aa053db7236b8b  gcc/testsuite/gcc.target/aarch64/sve/acle/general/ldff1_8.c
  2bc2fdb21b24e34ba5cde18950f81434  gcc/testsuite/gcc.target/aarch64/sve/acle/general/nand_1.c
  094f614291584810128539a1b6c0eaf4  gcc/testsuite/gcc.target/aarch64/sve/acle/general/nor_1.c
  4e6981396e2310e660aa21deea42b7ab  gcc/testsuite/gcc.target/aarch64/sve/acle/general/nosve_1.c
*************** bb3a7f2587d8584d185738649f93a6f6  gcc/te
*** 47590,47596 ****
--- 50836,50844 ----
  cd84e485b3fa7a0d50f2ee5113eca33d  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr94683.c
  111a35b5bdbe877086a99d29b13dc65b  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr94700.c
  dd9873ff910539b000561a51ccc3a52f  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr96146.c
+ da046fabc772d027dd4d185b27c37230  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr97546.c
  999779dd0082670db7ad0a68cd4d67d1  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr98037.c
+ a5788fbbeb941609b02d51151c326705  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr99246.c
  19a916b28d48b38d8ba875db787a737d  gcc/testsuite/gcc.target/aarch64/sve/acle/general/ptrue_pat_1.c
  1a580ad78bce51f73cdc63c6074d6cab  gcc/testsuite/gcc.target/aarch64/sve/acle/general/ptrue_pat_2.c
  1690c7f5c85696da3bc6813dfa8b539c  gcc/testsuite/gcc.target/aarch64/sve/acle/general/ptrue_pat_3.c
*************** ef386f442776c7325a9c4120d5f0f1cd  gcc/te
*** 47600,47605 ****
--- 50848,50854 ----
  b73d2b4b9aeaceb7898b89f8e147cc04  gcc/testsuite/gcc.target/aarch64/sve/acle/general/stack_vars_1.c
  a60971180940fb9126dc3f2440073c3a  gcc/testsuite/gcc.target/aarch64/sve/acle/general/struct_1.c
  9404c4e4b822b81b48891a1fe0625266  gcc/testsuite/gcc.target/aarch64/sve/acle/general/temporaries_1.c
+ 01c228bca66f0def69756fae10d3ddbf  gcc/testsuite/gcc.target/aarch64/sve/acle/general/undef_1.c
  de2f1d6ff8c05a5ea5ffb81b8ce61ce2  gcc/testsuite/gcc.target/aarch64/sve/acle/general/unoptimized_1.c
  129d25d3f8de8545837b08910c736d81  gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilele_1.c
  5dbffb9595fe745c3cdfebeeece83ee5  gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilele_10.c
*************** d7c66bb8a9596a5783933da6d7034eb1  gcc/te
*** 47626,47659 ****
  b77d57f6ab3a698dfef1798ec4ada94d  gcc/testsuite/gcc.target/aarch64/sve/adr_4_run.c
  60017b5f72b2047b2e24cd3daccccc1e  gcc/testsuite/gcc.target/aarch64/sve/adr_5.c
  08a30fcbd7cb13074d9f737a36ee873c  gcc/testsuite/gcc.target/aarch64/sve/adr_5_run.c
  62c2fdff5e2575e27bb0a1d20d21aa9e  gcc/testsuite/gcc.target/aarch64/sve/arith_1.c
  efb1c357526ad1218a7cda47ab799c9e  gcc/testsuite/gcc.target/aarch64/sve/asrdiv_1.c
  d21de60c71043234f5e72b2fc5db1cbd  gcc/testsuite/gcc.target/aarch64/sve/asrdiv_2.c
  ca05d4d119e7e722a18d2fcc13759d76  gcc/testsuite/gcc.target/aarch64/sve/asrdiv_3.c
  70e7059558ab8e85c7d78270d5a13da0  gcc/testsuite/gcc.target/aarch64/sve/bswap_1.c
  ed3e046c452a93cdb8ce4c5f9aaf1088  gcc/testsuite/gcc.target/aarch64/sve/bswap_2.c
  ed3635965a9c2d555c09947186243865  gcc/testsuite/gcc.target/aarch64/sve/bswap_3.c
! 12c5538b3d7732bb36068cd213be66d3  gcc/testsuite/gcc.target/aarch64/sve/clastb_1.c
  7e44cf07676c8141eba5bba9a6eeef11  gcc/testsuite/gcc.target/aarch64/sve/clastb_1_run.c
! e248ece53a9bf395f579fb00a6c18eff  gcc/testsuite/gcc.target/aarch64/sve/clastb_2.c
  8a0fc19c5772296d44131a604516c649  gcc/testsuite/gcc.target/aarch64/sve/clastb_2_run.c
! 7ae0368552257f52727fef0c108e07e9  gcc/testsuite/gcc.target/aarch64/sve/clastb_3.c
  d9c7ea7a56ecee738997c662deeaa438  gcc/testsuite/gcc.target/aarch64/sve/clastb_3_run.c
! 443b8dbaeeec7e3fd00a30b4ea3a2ad9  gcc/testsuite/gcc.target/aarch64/sve/clastb_4.c
  6100f2c7218984c6184bc7fdb259d677  gcc/testsuite/gcc.target/aarch64/sve/clastb_4_run.c
! f5c3e090b658d3622a699d5ddb18d054  gcc/testsuite/gcc.target/aarch64/sve/clastb_5.c
  459c9a65b9f22d651fe6ffe768ae3361  gcc/testsuite/gcc.target/aarch64/sve/clastb_5_run.c
! 77c6168b4ba51e3a3870af1cea13e423  gcc/testsuite/gcc.target/aarch64/sve/clastb_6.c
  7d76cf064bff32e11ae989e60bb305f3  gcc/testsuite/gcc.target/aarch64/sve/clastb_6_run.c
! 648e1fa86e4d5ce09db60f03c5d5082b  gcc/testsuite/gcc.target/aarch64/sve/clastb_7.c
  45ac333b77d1f1f50fa43b381ab19c5e  gcc/testsuite/gcc.target/aarch64/sve/clastb_7_run.c
! fc76039350cc3a3debedc995059b8f40  gcc/testsuite/gcc.target/aarch64/sve/clastb_8.c
  2bea569996c5e2bb8a4ce2dabac4dd08  gcc/testsuite/gcc.target/aarch64/sve/clastb_9.c
  be45d391b5dad6bfa889a516c4cad152  gcc/testsuite/gcc.target/aarch64/sve/clrsb_1.c
  5f611a4bcbdfb03b436040bc738dd38d  gcc/testsuite/gcc.target/aarch64/sve/clrsb_1_run.c
  8ff50a3ae4c0fc1f1c082174b7e6a473  gcc/testsuite/gcc.target/aarch64/sve/clz_1.c
  6d771fcb3157664f8c697b486f23160e  gcc/testsuite/gcc.target/aarch64/sve/clz_1_run.c
  ee3868d2e83312b60146a9ae902b7cc6  gcc/testsuite/gcc.target/aarch64/sve/cnot_1.c
  e34e1b9a30e1bf7be8e61dcf581ac027  gcc/testsuite/gcc.target/aarch64/sve/cond_abd_1.c
  3aabd6216d4bf01e1b009fe1dd930328  gcc/testsuite/gcc.target/aarch64/sve/cond_abd_1_run.c
  25466388135a3651ca5061f92e6604bb  gcc/testsuite/gcc.target/aarch64/sve/cond_abd_2.c
--- 50875,50913 ----
  b77d57f6ab3a698dfef1798ec4ada94d  gcc/testsuite/gcc.target/aarch64/sve/adr_4_run.c
  60017b5f72b2047b2e24cd3daccccc1e  gcc/testsuite/gcc.target/aarch64/sve/adr_5.c
  08a30fcbd7cb13074d9f737a36ee873c  gcc/testsuite/gcc.target/aarch64/sve/adr_5_run.c
+ bc43440ccc76848bad7aec9e25e7135c  gcc/testsuite/gcc.target/aarch64/sve/adr_6.c
  62c2fdff5e2575e27bb0a1d20d21aa9e  gcc/testsuite/gcc.target/aarch64/sve/arith_1.c
  efb1c357526ad1218a7cda47ab799c9e  gcc/testsuite/gcc.target/aarch64/sve/asrdiv_1.c
  d21de60c71043234f5e72b2fc5db1cbd  gcc/testsuite/gcc.target/aarch64/sve/asrdiv_2.c
  ca05d4d119e7e722a18d2fcc13759d76  gcc/testsuite/gcc.target/aarch64/sve/asrdiv_3.c
+ 3e22eff7fed7b557a208eb8dc1add64c  gcc/testsuite/gcc.target/aarch64/sve/asrdiv_4.c
  70e7059558ab8e85c7d78270d5a13da0  gcc/testsuite/gcc.target/aarch64/sve/bswap_1.c
  ed3e046c452a93cdb8ce4c5f9aaf1088  gcc/testsuite/gcc.target/aarch64/sve/bswap_2.c
  ed3635965a9c2d555c09947186243865  gcc/testsuite/gcc.target/aarch64/sve/bswap_3.c
! 083114316d428f0b2923f539f186655a  gcc/testsuite/gcc.target/aarch64/sve/clastb_1.c
  7e44cf07676c8141eba5bba9a6eeef11  gcc/testsuite/gcc.target/aarch64/sve/clastb_1_run.c
! 8650dfeb5bd9bc3ce172204942eb5e01  gcc/testsuite/gcc.target/aarch64/sve/clastb_2.c
  8a0fc19c5772296d44131a604516c649  gcc/testsuite/gcc.target/aarch64/sve/clastb_2_run.c
! 29447b9e3a1a1674df28aaa238eb3cef  gcc/testsuite/gcc.target/aarch64/sve/clastb_3.c
  d9c7ea7a56ecee738997c662deeaa438  gcc/testsuite/gcc.target/aarch64/sve/clastb_3_run.c
! a6fcc5a1236a7fe2ec380468261b6fbf  gcc/testsuite/gcc.target/aarch64/sve/clastb_4.c
  6100f2c7218984c6184bc7fdb259d677  gcc/testsuite/gcc.target/aarch64/sve/clastb_4_run.c
! 88c1dc2b49215315581a575913a95d1b  gcc/testsuite/gcc.target/aarch64/sve/clastb_5.c
  459c9a65b9f22d651fe6ffe768ae3361  gcc/testsuite/gcc.target/aarch64/sve/clastb_5_run.c
! 7ab0b5e0054f43caf0069ebbe95b7442  gcc/testsuite/gcc.target/aarch64/sve/clastb_6.c
  7d76cf064bff32e11ae989e60bb305f3  gcc/testsuite/gcc.target/aarch64/sve/clastb_6_run.c
! 168cb1a46634af89bfa5c2c0159c76e2  gcc/testsuite/gcc.target/aarch64/sve/clastb_7.c
  45ac333b77d1f1f50fa43b381ab19c5e  gcc/testsuite/gcc.target/aarch64/sve/clastb_7_run.c
! d475031f887daa1883695c172ad6a3c0  gcc/testsuite/gcc.target/aarch64/sve/clastb_8.c
  2bea569996c5e2bb8a4ce2dabac4dd08  gcc/testsuite/gcc.target/aarch64/sve/clastb_9.c
  be45d391b5dad6bfa889a516c4cad152  gcc/testsuite/gcc.target/aarch64/sve/clrsb_1.c
  5f611a4bcbdfb03b436040bc738dd38d  gcc/testsuite/gcc.target/aarch64/sve/clrsb_1_run.c
  8ff50a3ae4c0fc1f1c082174b7e6a473  gcc/testsuite/gcc.target/aarch64/sve/clz_1.c
  6d771fcb3157664f8c697b486f23160e  gcc/testsuite/gcc.target/aarch64/sve/clz_1_run.c
+ 4286a0ba7c5ad6ab74b251ea72f3828a  gcc/testsuite/gcc.target/aarch64/sve/cmp_1.c
+ 472e17e8421d808081d7c6b8421a6b42  gcc/testsuite/gcc.target/aarch64/sve/cmp_2.c
  ee3868d2e83312b60146a9ae902b7cc6  gcc/testsuite/gcc.target/aarch64/sve/cnot_1.c
+ 01898aea349e7e1f63361dacb4b0b0d5  gcc/testsuite/gcc.target/aarch64/sve/cnot_2.c
  e34e1b9a30e1bf7be8e61dcf581ac027  gcc/testsuite/gcc.target/aarch64/sve/cond_abd_1.c
  3aabd6216d4bf01e1b009fe1dd930328  gcc/testsuite/gcc.target/aarch64/sve/cond_abd_1_run.c
  25466388135a3651ca5061f92e6604bb  gcc/testsuite/gcc.target/aarch64/sve/cond_abd_2.c
*************** cb248f58483fd13d2e58eaaae9b31e9f  gcc/te
*** 47664,47685 ****
  c2f1605307c75d35717247d838dc6523  gcc/testsuite/gcc.target/aarch64/sve/cond_abd_4_run.c
  503d27a6592542e9965e8a233851095e  gcc/testsuite/gcc.target/aarch64/sve/cond_abd_5.c
  09186e3b784bbad13f0d1c81166fb33a  gcc/testsuite/gcc.target/aarch64/sve/cond_abd_5_run.c
! bc8a4d488ff059ee40cdc3687d541d14  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_1.c
! 11c83727af1241c3e6acae1e37cca88b  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_1_run.c
  ca2b7a595f56f0dd2985679783aae33f  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_2.c
  b23831f00f7f888aca5688e25eea799b  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_2_run.c
! 7da049b856b550bba5b72e733e61f6c7  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_3.c
! f06af72703d26fb8a21322fc45519058  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_3_run.c
  d4b0fcf49dbdac56043aee98347c8ccf  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_4.c
  ae054ca80eef5370f60b398f80ca624e  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_4_run.c
  de20c023bfdec615e3bef202481b8941  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_5.c
  f76243fd74d976c03e9e9c6e2d0e09af  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_5_run.c
! 28c4c809edf2fff8da3edf3349677096  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_1.c
  7eff7839584ee92106280e45522594d3  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_1_run.c
  eb7f72a0a8905e0f9d876a515cbc0468  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_2.c
  aba660a7ebde60eb7c63ad59a707f076  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_2_run.c
  442027510f6e107e768dbd2aad42fa72  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_3.c
  85048f66e07545d536f3ae18e4e4df87  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_3_run.c
  f6afb0f0ed8ad11d5fa81cc1c80c7dc7  gcc/testsuite/gcc.target/aarch64/sve/cond_convert_1.c
  7e75481a97c6bdc123111a4215aca802  gcc/testsuite/gcc.target/aarch64/sve/cond_convert_1_run.c
  7d8f1cb906179ac344d05e0989cbe0e5  gcc/testsuite/gcc.target/aarch64/sve/cond_convert_2.c
--- 50918,50951 ----
  c2f1605307c75d35717247d838dc6523  gcc/testsuite/gcc.target/aarch64/sve/cond_abd_4_run.c
  503d27a6592542e9965e8a233851095e  gcc/testsuite/gcc.target/aarch64/sve/cond_abd_5.c
  09186e3b784bbad13f0d1c81166fb33a  gcc/testsuite/gcc.target/aarch64/sve/cond_abd_5_run.c
! f424707b74b259bb744ddfd561e1abf3  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_1.c
! 2c20ae3d00ddc2a8381670b49b8efcaf  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_1_run.c
  ca2b7a595f56f0dd2985679783aae33f  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_2.c
  b23831f00f7f888aca5688e25eea799b  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_2_run.c
! 2a2845189d193a6059f9293d6a6b26dd  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_3.c
! 8e28318f90750ff59b6b73ea15c63119  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_3_run.c
  d4b0fcf49dbdac56043aee98347c8ccf  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_4.c
  ae054ca80eef5370f60b398f80ca624e  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_4_run.c
  de20c023bfdec615e3bef202481b8941  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_5.c
  f76243fd74d976c03e9e9c6e2d0e09af  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_5_run.c
! b4c45622c244462e8e96da2776491fe6  gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1.c
! 66f89090e06d8be84d0ece9730aee086  gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1_run.c
! e8b19672e185ac775fab17be20819eed  gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_2.c
! e9ed357e627af054ebae26f9f7b0ee32  gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_2_run.c
! cc10cb2821e1077805d4586048897941  gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_3.c
! 5b3ea5c387272fc42e43ed1c72a35678  gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_3_run.c
! 51eaad1b639ab6410919b26c0b249e66  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_1.c
  7eff7839584ee92106280e45522594d3  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_1_run.c
  eb7f72a0a8905e0f9d876a515cbc0468  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_2.c
  aba660a7ebde60eb7c63ad59a707f076  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_2_run.c
  442027510f6e107e768dbd2aad42fa72  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_3.c
  85048f66e07545d536f3ae18e4e4df87  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_3_run.c
+ 59eec511c9c251315afde458cc1604dd  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4.c
+ a14493d83d663147b4b88fd163bc2b72  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4_run.c
+ 5ce681225c3088de36e1d1a7654fd8b3  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_5.c
+ 13a3ee06b66c0c4211cb0cc7b785c475  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_5_run.c
+ 5a9c356f75f02e51fba3247a83a311e6  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_6.c
+ 2fc0c2415bf756641ef095c94659fad8  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_6_run.c
  f6afb0f0ed8ad11d5fa81cc1c80c7dc7  gcc/testsuite/gcc.target/aarch64/sve/cond_convert_1.c
  7e75481a97c6bdc123111a4215aca802  gcc/testsuite/gcc.target/aarch64/sve/cond_convert_1_run.c
  7d8f1cb906179ac344d05e0989cbe0e5  gcc/testsuite/gcc.target/aarch64/sve/cond_convert_2.c
*************** d7bc82d215f01e54e29184296b89aafa  gcc/te
*** 47787,47793 ****
  eacb4c77db65dd1e8d7de07baa0ddd95  gcc/testsuite/gcc.target/aarch64/sve/cond_shift_8_run.c
  119685ef4c70f1a872b04d423314c23a  gcc/testsuite/gcc.target/aarch64/sve/cond_shift_9.c
  c646dd2e0fac8da4972c667888c025dc  gcc/testsuite/gcc.target/aarch64/sve/cond_shift_9_run.c
! ac813aea0520372d263fa7b6d57302a3  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_1.c
  56d74ebd2f23485a19c4a1d89b0e795a  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_1_run.c
  3ec97f38563ab4f574fde5e922170ec4  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_2.c
  35ad16f08eb3dedd45580f0df9287658  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_2_run.c
--- 51053,51059 ----
  eacb4c77db65dd1e8d7de07baa0ddd95  gcc/testsuite/gcc.target/aarch64/sve/cond_shift_8_run.c
  119685ef4c70f1a872b04d423314c23a  gcc/testsuite/gcc.target/aarch64/sve/cond_shift_9.c
  c646dd2e0fac8da4972c667888c025dc  gcc/testsuite/gcc.target/aarch64/sve/cond_shift_9_run.c
! 4d158b3c15f5fb41fda0d1ab1315143a  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_1.c
  56d74ebd2f23485a19c4a1d89b0e795a  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_1_run.c
  3ec97f38563ab4f574fde5e922170ec4  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_2.c
  35ad16f08eb3dedd45580f0df9287658  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_2_run.c
*************** ac813aea0520372d263fa7b6d57302a3  gcc/te
*** 47795,47800 ****
--- 51061,51074 ----
  48c8b8da28cd7561f3eebc9897a10408  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_3_run.c
  190a9b71006008d76e5b589fb5ec43bf  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_4.c
  14deb8e873fa9fed70a00adc999bf312  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_4_run.c
+ bd1261d11edb1213d28b6113b1dc7c75  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5.c
+ 435ac44927974eb89426cad7e0d39cce  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5_run.c
+ fb24b56fb4c4a1f7922f2ac01cf2d48c  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_6.c
+ 91fa757262d5209751931a7e514e7e42  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_6_run.c
+ 21cdf9de5c49a0808c598704b79049c6  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_7.c
+ 678eb6b159a1b54b7a80cf499bdde4f9  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_7_run.c
+ 7bc8b4c99ebb3d89746b4bf253a9feaf  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_8.c
+ df6cde408c472dda22a187cd762e82b5  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_8_run.c
  bb15b0126d7f584f963014cc76355f09  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_1.c
  10c666c887785efedb2e83c1b596c4c8  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_1_run.c
  a8419890219c776edc0ed6dbae299529  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_2.c
*************** a8419890219c776edc0ed6dbae299529  gcc/te
*** 47803,47818 ****
  81c8713fc65aeeceea43e413e0853180  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_3_run.c
  552619d8323219cf84c033d1e66bb3be  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_4.c
  17f39d852a925eb171b031496e369494  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_4_run.c
  3f80e6ac7e9eb0358bfcba6677fdffad  gcc/testsuite/gcc.target/aarch64/sve/const_1.c
  a04b176d1f4debec96b6eb4ccec14017  gcc/testsuite/gcc.target/aarch64/sve/const_2.c
  748aa3fe4ea69df2485d8d4f5cea0000  gcc/testsuite/gcc.target/aarch64/sve/const_3.c
  118d7e991ceeb7d74a95f49ebb9363de  gcc/testsuite/gcc.target/aarch64/sve/copysign_1.c
  3b8d8c231844e2b260881fd40e9fb96b  gcc/testsuite/gcc.target/aarch64/sve/copysign_1_run.c
  0504506a6311cc93887e1a557a45e7f9  gcc/testsuite/gcc.target/aarch64/sve/cost_model_1.c
! 013ce5d8eddbe9b2a8d96796013edea4  gcc/testsuite/gcc.target/aarch64/sve/cost_model_2.c
  8814c7380f5de0a24225ed6e4ac88c89  gcc/testsuite/gcc.target/aarch64/sve/cost_model_3.c
  bd604bfadfafeee51abf031d456ada7f  gcc/testsuite/gcc.target/aarch64/sve/cost_model_4.c
! e3e6571f606df0ee213f571d6f4cf612  gcc/testsuite/gcc.target/aarch64/sve/cost_model_5.c
  cc0c9e0c6024d95df387c59dbbc3b810  gcc/testsuite/gcc.target/aarch64/sve/cost_model_6.c
  287d12acddbd300dbe42a10ea2ecfd6a  gcc/testsuite/gcc.target/aarch64/sve/cost_model_7.c
  9c0a5e176f4950c32fccce38a15933c4  gcc/testsuite/gcc.target/aarch64/sve/cost_model_8.c
--- 51077,51102 ----
  81c8713fc65aeeceea43e413e0853180  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_3_run.c
  552619d8323219cf84c033d1e66bb3be  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_4.c
  17f39d852a925eb171b031496e369494  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_4_run.c
+ 2a26f11dc31ece90edd0e28aee57e613  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5.c
+ 5669236b1b64f25a02492e26bff3fff9  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5_run.c
+ 8bbdef796cb9f7c3ed167406690c24c5  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_6.c
+ d8756a95c958d82cd6c5e7e4c6a9a6b0  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_6_run.c
+ 27c6a0610e4e27860821988343d449d5  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_7.c
+ 7f7d04c06d2f68f2c315d1d6caacb701  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_7_run.c
+ 360164890e0d8ef8fb7d8cc47959b759  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_8.c
+ 8b2488dcbf94dff35c79b3e2cdc76d4c  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_8_run.c
  3f80e6ac7e9eb0358bfcba6677fdffad  gcc/testsuite/gcc.target/aarch64/sve/const_1.c
  a04b176d1f4debec96b6eb4ccec14017  gcc/testsuite/gcc.target/aarch64/sve/const_2.c
  748aa3fe4ea69df2485d8d4f5cea0000  gcc/testsuite/gcc.target/aarch64/sve/const_3.c
  118d7e991ceeb7d74a95f49ebb9363de  gcc/testsuite/gcc.target/aarch64/sve/copysign_1.c
  3b8d8c231844e2b260881fd40e9fb96b  gcc/testsuite/gcc.target/aarch64/sve/copysign_1_run.c
  0504506a6311cc93887e1a557a45e7f9  gcc/testsuite/gcc.target/aarch64/sve/cost_model_1.c
! 2c9436684fcf7cf966351ac4e3e09eac  gcc/testsuite/gcc.target/aarch64/sve/cost_model_10.c
! 71c5caab96e622a30a87c1e7d8fe0048  gcc/testsuite/gcc.target/aarch64/sve/cost_model_11.c
! e918451f74d084e54a9a7ceb98f0bf8e  gcc/testsuite/gcc.target/aarch64/sve/cost_model_2.c
  8814c7380f5de0a24225ed6e4ac88c89  gcc/testsuite/gcc.target/aarch64/sve/cost_model_3.c
  bd604bfadfafeee51abf031d456ada7f  gcc/testsuite/gcc.target/aarch64/sve/cost_model_4.c
! 51a1e8a5cf0138fd5b2354face18a382  gcc/testsuite/gcc.target/aarch64/sve/cost_model_5.c
  cc0c9e0c6024d95df387c59dbbc3b810  gcc/testsuite/gcc.target/aarch64/sve/cost_model_6.c
  287d12acddbd300dbe42a10ea2ecfd6a  gcc/testsuite/gcc.target/aarch64/sve/cost_model_7.c
  9c0a5e176f4950c32fccce38a15933c4  gcc/testsuite/gcc.target/aarch64/sve/cost_model_8.c
*************** b756b55bf45e469c93050878d9bef905  gcc/te
*** 47828,47836 ****
--- 51112,51123 ----
  32a3d39a18b234ed117bf340ef8f99ae  gcc/testsuite/gcc.target/aarch64/sve/dup_imm_1.c
  657769d7a7292850421bf9c9f489ce6b  gcc/testsuite/gcc.target/aarch64/sve/dup_imm_1_run.c
  e93e255fa904758bbf3655fd0a263628  gcc/testsuite/gcc.target/aarch64/sve/dup_lane_1.c
+ 7b29bcc5f4568a218b087ab7a6207177  gcc/testsuite/gcc.target/aarch64/sve/dup_lane_2.c
+ f75cd152d1ea63349f09ef48040ff809  gcc/testsuite/gcc.target/aarch64/sve/dup_lane_3.c
  f8aebeb8f0a738c291cd7acbf0c1cd2e  gcc/testsuite/gcc.target/aarch64/sve/ext_1.c
  5a6168e8f8698cd82ef986d8c867fcc0  gcc/testsuite/gcc.target/aarch64/sve/ext_2.c
  d0e1d8fee3d430dd78f1f6b60a9c0f79  gcc/testsuite/gcc.target/aarch64/sve/ext_3.c
+ 8e07eb455b98a6d0a696b34959254794  gcc/testsuite/gcc.target/aarch64/sve/ext_4.c
  394fccede2e9845d6d3cf27cd4285601  gcc/testsuite/gcc.target/aarch64/sve/extend_1.c
  c586ed3d32d5df8a6105efcebd07dd98  gcc/testsuite/gcc.target/aarch64/sve/extend_2.c
  4063928cf46e04fc803834e77ff45a36  gcc/testsuite/gcc.target/aarch64/sve/extend_3.c
*************** aad68f8e924a8c091e990343009eb711  gcc/te
*** 47929,47935 ****
  cd8d136680cc29d796e42c8155af0c87  gcc/testsuite/gcc.target/aarch64/sve/live_1.c
  923bb31c870842be1bdc0760f07e09fa  gcc/testsuite/gcc.target/aarch64/sve/live_1_run.c
  39ed1486d973a97f97b58e0b6c511eab  gcc/testsuite/gcc.target/aarch64/sve/load_const_offset_1.c
! fbfea6cc9aefb78a0486218ddf804d6b  gcc/testsuite/gcc.target/aarch64/sve/load_const_offset_2.c
  f249878a64cd02127a61accf5ae9930e  gcc/testsuite/gcc.target/aarch64/sve/load_const_offset_3.c
  ec247792b095590d0d44d2d2e2c5bf41  gcc/testsuite/gcc.target/aarch64/sve/load_extend_1.c
  e2e25f31696f4fb451930808279103d4  gcc/testsuite/gcc.target/aarch64/sve/load_extend_10.c
--- 51216,51222 ----
  cd8d136680cc29d796e42c8155af0c87  gcc/testsuite/gcc.target/aarch64/sve/live_1.c
  923bb31c870842be1bdc0760f07e09fa  gcc/testsuite/gcc.target/aarch64/sve/live_1_run.c
  39ed1486d973a97f97b58e0b6c511eab  gcc/testsuite/gcc.target/aarch64/sve/load_const_offset_1.c
! b57cf1e950e677b2e53ac70e77c99d05  gcc/testsuite/gcc.target/aarch64/sve/load_const_offset_2.c
  f249878a64cd02127a61accf5ae9930e  gcc/testsuite/gcc.target/aarch64/sve/load_const_offset_3.c
  ec247792b095590d0d44d2d2e2c5bf41  gcc/testsuite/gcc.target/aarch64/sve/load_extend_1.c
  e2e25f31696f4fb451930808279103d4  gcc/testsuite/gcc.target/aarch64/sve/load_extend_10.c
*************** b201d6f9200ce2a45ee89e72a774d1d3  gcc/te
*** 47943,47948 ****
--- 51230,51263 ----
  e22444f26c2b1ba7461b38efa2a5e5de  gcc/testsuite/gcc.target/aarch64/sve/load_extend_9.c
  9840c833aac604741afb4d328cf04733  gcc/testsuite/gcc.target/aarch64/sve/load_scalar_offset_1.c
  1a8e35632d0239051c261823b239718a  gcc/testsuite/gcc.target/aarch64/sve/logical_1.c
+ 2e27c74ebbef71811a06bc0d203a45ba  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_abs.c
+ ddf8a628cff7228b393f3993668b9a0a  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_and_1.c
+ cd3021b639f8b21f6545353f5fd46794  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_and_2.c
+ e0c7d33a7b2ce1b6a50639ce194f5817  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_and_3.c
+ b302b157c6b669711b77b8ddcb9e75de  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_and_4.c
+ ddf8a628cff7228b393f3993668b9a0a  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_and_5.c
+ dcd0cc8f888c2b995f6696d30bfa8a5d  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_and_6.c
+ 6c28cf386b436927f1b2a7679c6386e0  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_and_7.c
+ 2ae660f2c98943ab494315e47701a74f  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_bic_1.c
+ 405f5369bb51f464d85d6742ca020ab2  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_bic_2.c
+ 495b140628785f11bd77fde1fc83decc  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_bic_3.c
+ b21a55b390b04ee1ad8c22e34aee78a9  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_bic_4.c
+ e5f5100c06b847cbdff95d152faa2108  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_eor_1.c
+ cbd6566ed80675528b42079adaa6158b  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_eor_2.c
+ 9e9015e345f0cf54026c177c5ba9923a  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_eor_3.c
+ 6d859b15414ec4ef83142accc7c306b7  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_eor_4.c
+ e5f5100c06b847cbdff95d152faa2108  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_eor_5.c
+ d869fa46335fe1f1277d8dc774e9a8ff  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_eor_6.c
+ cf6a2e7dabc9aa02c9dbaf2a972aed53  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_eor_7.c
+ 9b71d1249e024596b81aee2908ac01e0  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_neg.c
+ 19db489deda98c4cd7b868365d6359a4  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_not.c
+ db85e0e4ec369cc5ab12e1d5e5555459  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_orr_1.c
+ b8fd3eb78954345230a3c1114791c629  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_orr_2.c
+ 86fa35126d3685fc7fff0bcd0c11cb5a  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_orr_3.c
+ 0e71f157b9d5286e72f34e5e11048ab4  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_orr_4.c
+ db85e0e4ec369cc5ab12e1d5e5555459  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_orr_5.c
+ 19c6468fa387e27323edf575f8972d26  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_orr_6.c
+ 3a20bcbfcc6ce643ff6ad25563c6b526  gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_orr_7.c
  5b889e0b42c621d16b8b95b4b0419fd9  gcc/testsuite/gcc.target/aarch64/sve/loop_add_1.c
  98c8b2db756d72e10d401d537d30a630  gcc/testsuite/gcc.target/aarch64/sve/loop_add_1_run.c
  a7755b98be930532d1c450534277247d  gcc/testsuite/gcc.target/aarch64/sve/loop_add_2.c
*************** ab2c2f8b2b4f63ff5400dfcc4b0cff0a  gcc/te
*** 47959,47967 ****
  314d51574d6f9db0b883b4ca323b5708  gcc/testsuite/gcc.target/aarch64/sve/mask_gather_load_4.c
  b7284adec21d80573a852744d3773966  gcc/testsuite/gcc.target/aarch64/sve/mask_gather_load_5.c
  7e03eb9f8bca7ec64e92833f07e72bc1  gcc/testsuite/gcc.target/aarch64/sve/mask_gather_load_6.c
! 17d65ff02c6607e9179f520bcf3656bc  gcc/testsuite/gcc.target/aarch64/sve/mask_gather_load_7.c
  649716e3727c061dd3cee9567b1ab97b  gcc/testsuite/gcc.target/aarch64/sve/mask_load_1.c
! f50c8b53cda241a334417a2168a7b3f1  gcc/testsuite/gcc.target/aarch64/sve/mask_load_slp_1.c
  33047a915e1581d35186161bbca699ee  gcc/testsuite/gcc.target/aarch64/sve/mask_scatter_store_1.c
  606025785cdd6d1660f408e9fe34b4b3  gcc/testsuite/gcc.target/aarch64/sve/mask_scatter_store_2.c
  ca0adc6635e7a34553bba7a3f383074e  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_1.c
--- 51274,51282 ----
  314d51574d6f9db0b883b4ca323b5708  gcc/testsuite/gcc.target/aarch64/sve/mask_gather_load_4.c
  b7284adec21d80573a852744d3773966  gcc/testsuite/gcc.target/aarch64/sve/mask_gather_load_5.c
  7e03eb9f8bca7ec64e92833f07e72bc1  gcc/testsuite/gcc.target/aarch64/sve/mask_gather_load_6.c
! 180c63f647144505c4458c4fe8862b6b  gcc/testsuite/gcc.target/aarch64/sve/mask_gather_load_7.c
  649716e3727c061dd3cee9567b1ab97b  gcc/testsuite/gcc.target/aarch64/sve/mask_load_1.c
! a41a0265e55f04ac23145029381456f9  gcc/testsuite/gcc.target/aarch64/sve/mask_load_slp_1.c
  33047a915e1581d35186161bbca699ee  gcc/testsuite/gcc.target/aarch64/sve/mask_scatter_store_1.c
  606025785cdd6d1660f408e9fe34b4b3  gcc/testsuite/gcc.target/aarch64/sve/mask_scatter_store_2.c
  ca0adc6635e7a34553bba7a3f383074e  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_1.c
*************** d9a0da227f33c19f4ede7586e9cdd9f4  gcc/te
*** 47971,47977 ****
  21e88ca7d69806ad81f80d49d6271374  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_3.c
  c6f6e7729d8243981389542d9dbef36d  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_3_run.c
  adc5ee556dc908091d28d30dea0f778b  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_4.c
! e97553dd86062dd300154eb82f16995a  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_5.c
  ea65208928f7006e9d983e2f1a0057a7  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_6.c
  0864a3571828f18f06bf9eaa0f8b5cbf  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_7.c
  ca62bb1a126eebc742a65ed4551e251a  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_8.c
--- 51286,51292 ----
  21e88ca7d69806ad81f80d49d6271374  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_3.c
  c6f6e7729d8243981389542d9dbef36d  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_3_run.c
  adc5ee556dc908091d28d30dea0f778b  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_4.c
! 9335e4abb16b25f4ce05bbc02f9db82d  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_5.c
  ea65208928f7006e9d983e2f1a0057a7  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_6.c
  0864a3571828f18f06bf9eaa0f8b5cbf  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_7.c
  ca62bb1a126eebc742a65ed4551e251a  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_8.c
*************** ed8c00bb799512fa988960af6397117a  gcc/te
*** 48000,48013 ****
--- 51315,51332 ----
  6aea5bdfc452b758750b7b674e6562ae  gcc/testsuite/gcc.target/aarch64/sve/mixed_size_8.c
  3a2b3ac68ec5a5d4dbd3ece209e5d84c  gcc/testsuite/gcc.target/aarch64/sve/mixed_size_9.c
  dd11207791d13f084db138dc0f5db1d6  gcc/testsuite/gcc.target/aarch64/sve/mla_1.c
+ f225f93a4247d63d33445e7f1312fa59  gcc/testsuite/gcc.target/aarch64/sve/mla_2.c
  cafa023ecc4fc66a8c9a3bcda1baef83  gcc/testsuite/gcc.target/aarch64/sve/mls_1.c
+ 585d1ba667e1091cae32cede44f75eb1  gcc/testsuite/gcc.target/aarch64/sve/mls_2.c
  373914dd86484840207e0827a609555d  gcc/testsuite/gcc.target/aarch64/sve/mov_rr_1.c
  76b67822c25cb6679a7f5c4a8a4a2edb  gcc/testsuite/gcc.target/aarch64/sve/msb_1.c
  96deea5b8b745cdb119a0dd0647367a6  gcc/testsuite/gcc.target/aarch64/sve/mul_1.c
+ 443232c5fc6079ff9e86604d3835a202  gcc/testsuite/gcc.target/aarch64/sve/mul_2.c
  bdf8532c1097749621e020a1e5f9949a  gcc/testsuite/gcc.target/aarch64/sve/mul_highpart_1.c
  df9030c3eec5ddec3909228ae27739c8  gcc/testsuite/gcc.target/aarch64/sve/mul_highpart_1_run.c
  f3e186f9d8f069549ac98590b6ced555  gcc/testsuite/gcc.target/aarch64/sve/mul_highpart_2.c
  a9b508d7c966ec3fcd19cd8e6508d364  gcc/testsuite/gcc.target/aarch64/sve/mul_highpart_2_run.c
+ c1b4210e7c857e81f9f5dd17c8019137  gcc/testsuite/gcc.target/aarch64/sve/mul_highpart_3.c
  5c72c004716eb8bfa14105992e9351d1  gcc/testsuite/gcc.target/aarch64/sve/neg_1.c
  19192fb8ee188e2e0c251c4d7fec027b  gcc/testsuite/gcc.target/aarch64/sve/nlogical_1.c
  8544826a8b7a261158f7b83af125df56  gcc/testsuite/gcc.target/aarch64/sve/nlogical_1_run.c
*************** bd0ea7412913a5ce083ddea4613bd169  gcc/te
*** 48021,48027 ****
  38e3035a77b1dca0127d31c369ecc94a  gcc/testsuite/gcc.target/aarch64/sve/pack_fcvt_unsigned_1_run.c
  fa06e7238dbd52dd10fcbc8218d6f455  gcc/testsuite/gcc.target/aarch64/sve/pack_float_1.c
  f73856c9978f65aed41f7a5c062f010a  gcc/testsuite/gcc.target/aarch64/sve/pack_float_1_run.c
! 1f3c23b1b543cc2abb4bc572a85b3eb6  gcc/testsuite/gcc.target/aarch64/sve/pcs/aarch64-sve-pcs.exp
  32297ab4eebb8c660c35d34c167b3298  gcc/testsuite/gcc.target/aarch64/sve/pcs/annotate_1.c
  248fda9300aa4a9871796c24beae3e58  gcc/testsuite/gcc.target/aarch64/sve/pcs/annotate_2.c
  eb3818ec16fadffb1ecf19d7a7d01030  gcc/testsuite/gcc.target/aarch64/sve/pcs/annotate_3.c
--- 51340,51346 ----
  38e3035a77b1dca0127d31c369ecc94a  gcc/testsuite/gcc.target/aarch64/sve/pack_fcvt_unsigned_1_run.c
  fa06e7238dbd52dd10fcbc8218d6f455  gcc/testsuite/gcc.target/aarch64/sve/pack_float_1.c
  f73856c9978f65aed41f7a5c062f010a  gcc/testsuite/gcc.target/aarch64/sve/pack_float_1_run.c
! 96c0717997c8b8e97db358f952b4f39d  gcc/testsuite/gcc.target/aarch64/sve/pcs/aarch64-sve-pcs.exp
  32297ab4eebb8c660c35d34c167b3298  gcc/testsuite/gcc.target/aarch64/sve/pcs/annotate_1.c
  248fda9300aa4a9871796c24beae3e58  gcc/testsuite/gcc.target/aarch64/sve/pcs/annotate_2.c
  eb3818ec16fadffb1ecf19d7a7d01030  gcc/testsuite/gcc.target/aarch64/sve/pcs/annotate_3.c
*************** f247489d5a83c25a52bba3f69ccf6256  gcc/te
*** 48197,48220 ****
  9488251a23018049b302e2b299d999ba  gcc/testsuite/gcc.target/aarch64/sve/peel_ind_4_run.c
  58779ff2ec8df7f5f3f3b93f444f0617  gcc/testsuite/gcc.target/aarch64/sve/popcount_1.c
  43e7bc10a42a3debf5d1ccecc4464720  gcc/testsuite/gcc.target/aarch64/sve/popcount_1_run.c
  00b752a6e175de8b1a300df08f275461  gcc/testsuite/gcc.target/aarch64/sve/pr87563.c
  c56eeba71ad463673a1bdb30e7a94863  gcc/testsuite/gcc.target/aarch64/sve/pr87815.c
! 766aab18648676b9173822adb5606607  gcc/testsuite/gcc.target/aarch64/sve/pr88834.c
  f489c5abc2ffc3a8cc03ca0a831513a0  gcc/testsuite/gcc.target/aarch64/sve/pr88847.c
  cade04c34d59dcc18fe0606f0bd12dda  gcc/testsuite/gcc.target/aarch64/sve/pr89007-1.c
  58206037487584b9069bf315874db761  gcc/testsuite/gcc.target/aarch64/sve/pr89007-2.c
  524dba2cfc8aa02f6ecbcd599762ae62  gcc/testsuite/gcc.target/aarch64/sve/pr91166.c
  69268dbafdd67918766f6fc2d133be88  gcc/testsuite/gcc.target/aarch64/sve/pr94605.c
  7a04cbd4fe6d9ffe0c440e333719e020  gcc/testsuite/gcc.target/aarch64/sve/pr94668.c
  85d46e9e9a0f82017c6cbb33b97503b2  gcc/testsuite/gcc.target/aarch64/sve/pr95361.c
  e842145fd4cb8d836d070b28e9f9d4d4  gcc/testsuite/gcc.target/aarch64/sve/pr96357.c
  a21cb5077461cbf23ca054f7c89a9bd8  gcc/testsuite/gcc.target/aarch64/sve/pr97092.c
  551b93da908927fd5461395f52ee36cf  gcc/testsuite/gcc.target/aarch64/sve/pr97144.c
  3599b0dfd7d1d7cf9e0340e2de2f2c01  gcc/testsuite/gcc.target/aarch64/sve/pr98214.c
  1ddb81bdd4fdba57625a8877ce429277  gcc/testsuite/gcc.target/aarch64/sve/pr98535.c
  7f7269cfe880136a54291a5c33b07d00  gcc/testsuite/gcc.target/aarch64/sve/pr98791.c
  e9e92c2ec92da9f29261bd9d1a3cace4  gcc/testsuite/gcc.target/aarch64/sve/pred_elim_1.c
  bc00a0e0dea7500ecba0544bd58c0277  gcc/testsuite/gcc.target/aarch64/sve/pred_elim_2.c
  be3bc45b321c4b84deacc9d04819a288  gcc/testsuite/gcc.target/aarch64/sve/recip_1.c
  10036db7501b487e51b495a4a2d24cca  gcc/testsuite/gcc.target/aarch64/sve/recip_1_run.c
  3add3c4eeb186f7df0ea71734e4f8388  gcc/testsuite/gcc.target/aarch64/sve/recip_2.c
--- 51516,51561 ----
  9488251a23018049b302e2b299d999ba  gcc/testsuite/gcc.target/aarch64/sve/peel_ind_4_run.c
  58779ff2ec8df7f5f3f3b93f444f0617  gcc/testsuite/gcc.target/aarch64/sve/popcount_1.c
  43e7bc10a42a3debf5d1ccecc4464720  gcc/testsuite/gcc.target/aarch64/sve/popcount_1_run.c
+ 12ecad870dc3cdd512c314f6e0ba3c08  gcc/testsuite/gcc.target/aarch64/sve/pr100048.c
  00b752a6e175de8b1a300df08f275461  gcc/testsuite/gcc.target/aarch64/sve/pr87563.c
  c56eeba71ad463673a1bdb30e7a94863  gcc/testsuite/gcc.target/aarch64/sve/pr87815.c
! f0e2b5504e3b6dcd97ff8a6d8549d00e  gcc/testsuite/gcc.target/aarch64/sve/pr88834.c
! 6c57cf09cf91238f79720a6f44bc30e7  gcc/testsuite/gcc.target/aarch64/sve/pr88834_ld3.c
  f489c5abc2ffc3a8cc03ca0a831513a0  gcc/testsuite/gcc.target/aarch64/sve/pr88847.c
  cade04c34d59dcc18fe0606f0bd12dda  gcc/testsuite/gcc.target/aarch64/sve/pr89007-1.c
  58206037487584b9069bf315874db761  gcc/testsuite/gcc.target/aarch64/sve/pr89007-2.c
  524dba2cfc8aa02f6ecbcd599762ae62  gcc/testsuite/gcc.target/aarch64/sve/pr91166.c
  69268dbafdd67918766f6fc2d133be88  gcc/testsuite/gcc.target/aarch64/sve/pr94605.c
  7a04cbd4fe6d9ffe0c440e333719e020  gcc/testsuite/gcc.target/aarch64/sve/pr94668.c
+ 522561ce94b0c1609f8ab3c1d3d2db75  gcc/testsuite/gcc.target/aarch64/sve/pr95199.c
  85d46e9e9a0f82017c6cbb33b97503b2  gcc/testsuite/gcc.target/aarch64/sve/pr95361.c
+ e4716fbcf4507ded08c7ba19117342af  gcc/testsuite/gcc.target/aarch64/sve/pr95523.c
+ 73c22821e511dff2428a3cdf38594095  gcc/testsuite/gcc.target/aarch64/sve/pr95961.c
+ 2bc0ea26dbeeba1d473323fc407b8d0b  gcc/testsuite/gcc.target/aarch64/sve/pr96195.c
  e842145fd4cb8d836d070b28e9f9d4d4  gcc/testsuite/gcc.target/aarch64/sve/pr96357.c
+ 81df79ed0e2d1c5f6c67f08458be2c74  gcc/testsuite/gcc.target/aarch64/sve/pr96915.c
+ b1c8f3af47e9cea755b055cce544806c  gcc/testsuite/gcc.target/aarch64/sve/pr97079.c
  a21cb5077461cbf23ca054f7c89a9bd8  gcc/testsuite/gcc.target/aarch64/sve/pr97092.c
+ 0bd0c11c70979d74de80fd698161a3be  gcc/testsuite/gcc.target/aarch64/sve/pr97141.c
  551b93da908927fd5461395f52ee36cf  gcc/testsuite/gcc.target/aarch64/sve/pr97144.c
+ feaaf48c5bd3e12bf1024ebc5d6dfdfa  gcc/testsuite/gcc.target/aarch64/sve/pr98119.c
+ 6c0e94c363caf9e62df35ea98b4918ed  gcc/testsuite/gcc.target/aarch64/sve/pr98177-1.c
+ e64000c150bb204c31dca884ee33dd4f  gcc/testsuite/gcc.target/aarch64/sve/pr98177-2.c
  3599b0dfd7d1d7cf9e0340e2de2f2c01  gcc/testsuite/gcc.target/aarch64/sve/pr98214.c
+ ffe30c79c242fa62db3926fdd0bc8341  gcc/testsuite/gcc.target/aarch64/sve/pr98268-1.c
+ ff0ddeea0464fd011f5ecacb417afb1d  gcc/testsuite/gcc.target/aarch64/sve/pr98268-2.c
  1ddb81bdd4fdba57625a8877ce429277  gcc/testsuite/gcc.target/aarch64/sve/pr98535.c
+ 5599f48d75234b77373f5ed45eab0181  gcc/testsuite/gcc.target/aarch64/sve/pr98657.c
+ 3700e9317b864fda88d513b134b71a26  gcc/testsuite/gcc.target/aarch64/sve/pr98726.c
  7f7269cfe880136a54291a5c33b07d00  gcc/testsuite/gcc.target/aarch64/sve/pr98791.c
+ d1c128e3b98b85fbd2989c58c4ec796d  gcc/testsuite/gcc.target/aarch64/sve/pr99873_1.c
+ 02fcd40c8d8bbcba8d875abdc5f03c02  gcc/testsuite/gcc.target/aarch64/sve/pr99873_2.c
+ 2c1a652b1133f045edf5ad7b399104ea  gcc/testsuite/gcc.target/aarch64/sve/pr99873_3.c
+ a866cb5b08078d8fe7c2f8ead2f55150  gcc/testsuite/gcc.target/aarch64/sve/pr99929_1.c
+ 26d14a9990e480e5b2370a215688cb95  gcc/testsuite/gcc.target/aarch64/sve/pr99929_2.c
  e9e92c2ec92da9f29261bd9d1a3cace4  gcc/testsuite/gcc.target/aarch64/sve/pred_elim_1.c
  bc00a0e0dea7500ecba0544bd58c0277  gcc/testsuite/gcc.target/aarch64/sve/pred_elim_2.c
+ 5db11794c73b7fe99d963e6944cfc839  gcc/testsuite/gcc.target/aarch64/sve/ptest_1.c
  be3bc45b321c4b84deacc9d04819a288  gcc/testsuite/gcc.target/aarch64/sve/recip_1.c
  10036db7501b487e51b495a4a2d24cca  gcc/testsuite/gcc.target/aarch64/sve/recip_1_run.c
  3add3c4eeb186f7df0ea71734e4f8388  gcc/testsuite/gcc.target/aarch64/sve/recip_2.c
*************** c36eb4620defc79e01d08f32cf7c722c  gcc/te
*** 48242,48251 ****
--- 51583,51595 ----
  e6b5e4cbf26373edecff7db63551330e  gcc/testsuite/gcc.target/aarch64/sve/reduc_strict_8.c
  293bc0cf560603b8ed38c1d1699ffdbc  gcc/testsuite/gcc.target/aarch64/sve/reduc_strict_9.c
  1066b38f44cce4bdff5b7050146d95cf  gcc/testsuite/gcc.target/aarch64/sve/rev_1.c
+ 8c9842de622a0abe46cf79308556a680  gcc/testsuite/gcc.target/aarch64/sve/rev_2.c
  8ae5e29ddaa4386cd275be16ef7d0700  gcc/testsuite/gcc.target/aarch64/sve/revb_1.c
  0fcc253210795853c7e7d9e8643e558d  gcc/testsuite/gcc.target/aarch64/sve/revb_2.c
  6263c398475ac42c683b14673916681d  gcc/testsuite/gcc.target/aarch64/sve/revh_1.c
  1ba686a1e5e0f187d61f2d0204ae35de  gcc/testsuite/gcc.target/aarch64/sve/revh_2.c
+ cf8f15ed1eac9f24bf64b24515cb6bca  gcc/testsuite/gcc.target/aarch64/sve/revhw_1.c
+ a68180b3180a2850546f73a2fb143826  gcc/testsuite/gcc.target/aarch64/sve/revhw_2.c
  8980052fe62b0caeae5983046b058197  gcc/testsuite/gcc.target/aarch64/sve/revw_1.c
  ecc86ca70d9873931d62c47481e3089d  gcc/testsuite/gcc.target/aarch64/sve/revw_2.c
  82cc68a63e644509dc4ffa773504d753  gcc/testsuite/gcc.target/aarch64/sve/rsqrt_1.c
*************** afdb66d32645b4f02c5999f7bd471f22  gcc/te
*** 48256,48272 ****
  3c6af3bacb63f30f2b337b7281706995  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_3.c
  8c564e4bacae3a41e86eb8680a460972  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_4.c
  53e48e06b9829b1c2e6daf346f0312f8  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_5.c
! 5e307e50c079a32cc4df01a146c8692d  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_6.c
! a8b013c792f04326d84fbda77ee51a1a  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_7.c
  114dc1571da4e8f7606aba7263b3fee4  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_8.c
  78f4676039837518b1efba6bead04810  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_9.c
! e43559e2d1e3f4501969de6baac08396  gcc/testsuite/gcc.target/aarch64/sve/sel_1.c
! 06ca71f4ad9a00901e2748c697b17f26  gcc/testsuite/gcc.target/aarch64/sve/sel_2.c
! 7375d5fd6f7773bc8c50d8ad04c6744b  gcc/testsuite/gcc.target/aarch64/sve/sel_3.c
  c0086cbea7bf880d226cb176d078ccf1  gcc/testsuite/gcc.target/aarch64/sve/sel_4.c
  a8c77b95bd5326b0cdaee7971136285d  gcc/testsuite/gcc.target/aarch64/sve/sel_5.c
  c22e90c555fd4e08f770dd7e84a27798  gcc/testsuite/gcc.target/aarch64/sve/sel_6.c
  885d20c1dc9e5c219f360d9622a0ce60  gcc/testsuite/gcc.target/aarch64/sve/shift_1.c
  ea96e0c3148179cba37c3aa8410afe8f  gcc/testsuite/gcc.target/aarch64/sve/single_1.c
  aff4971b5f3193b9e2a927dfa176b6d6  gcc/testsuite/gcc.target/aarch64/sve/single_2.c
  dc2e19332dc2abe19e6f3ebbfdb15163  gcc/testsuite/gcc.target/aarch64/sve/single_3.c
--- 51600,51617 ----
  3c6af3bacb63f30f2b337b7281706995  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_3.c
  8c564e4bacae3a41e86eb8680a460972  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_4.c
  53e48e06b9829b1c2e6daf346f0312f8  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_5.c
! 5ce3c75f2076695fb803677f6e3c71f4  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_6.c
! db772f767d90c626c0481f6acff078f7  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_7.c
  114dc1571da4e8f7606aba7263b3fee4  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_8.c
  78f4676039837518b1efba6bead04810  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_9.c
! e2acf93d4531b090b1da29f88375ad49  gcc/testsuite/gcc.target/aarch64/sve/sel_1.c
! 4d318b7d7a8b21d647b726c526e75205  gcc/testsuite/gcc.target/aarch64/sve/sel_2.c
! a64a595af9c7795c4df589abab70dce0  gcc/testsuite/gcc.target/aarch64/sve/sel_3.c
  c0086cbea7bf880d226cb176d078ccf1  gcc/testsuite/gcc.target/aarch64/sve/sel_4.c
  a8c77b95bd5326b0cdaee7971136285d  gcc/testsuite/gcc.target/aarch64/sve/sel_5.c
  c22e90c555fd4e08f770dd7e84a27798  gcc/testsuite/gcc.target/aarch64/sve/sel_6.c
  885d20c1dc9e5c219f360d9622a0ce60  gcc/testsuite/gcc.target/aarch64/sve/shift_1.c
+ b55f97923c0c759dae9e5c7b37c79c79  gcc/testsuite/gcc.target/aarch64/sve/shift_2.c
  ea96e0c3148179cba37c3aa8410afe8f  gcc/testsuite/gcc.target/aarch64/sve/single_1.c
  aff4971b5f3193b9e2a927dfa176b6d6  gcc/testsuite/gcc.target/aarch64/sve/single_2.c
  dc2e19332dc2abe19e6f3ebbfdb15163  gcc/testsuite/gcc.target/aarch64/sve/single_3.c
*************** d20b7524d251213c0a38ee4072095889  gcc/te
*** 48309,48314 ****
--- 51654,51660 ----
  00e962f4f434f1a0a41c352a562a2082  gcc/testsuite/gcc.target/aarch64/sve/slp_perm_5.c
  9bf53b83760cd141e85e2a934b19dc0d  gcc/testsuite/gcc.target/aarch64/sve/slp_perm_6.c
  39c0d5374d885f50a66c0533b57a0335  gcc/testsuite/gcc.target/aarch64/sve/slp_perm_7.c
+ 27c757f5b705facca869d233012cbf1c  gcc/testsuite/gcc.target/aarch64/sve/slp_perm_8.c
  46fa805469d98c65f523c7951e4e1d78  gcc/testsuite/gcc.target/aarch64/sve/smax_1.c
  bcc54159505177890d20f04228b96fc3  gcc/testsuite/gcc.target/aarch64/sve/smin_1.c
  0645f95efcdf83d65444096218a05a17  gcc/testsuite/gcc.target/aarch64/sve/spill_1.c
*************** dc65fa58e389d25f2ce06865b4f3c78d  gcc/te
*** 48324,48330 ****
  fa54ccc091393b9b50bb9131362a3475  gcc/testsuite/gcc.target/aarch64/sve/store_scalar_offset_1.c
  181bfd966c00aa4ed6fa1aae34f53f52  gcc/testsuite/gcc.target/aarch64/sve/strided_load_1.c
  12f4989e398bbd604266bbe500309d29  gcc/testsuite/gcc.target/aarch64/sve/strided_load_2.c
! 3f9c830996125fa09ea543e9bce0d3ce  gcc/testsuite/gcc.target/aarch64/sve/strided_load_3.c
  4bb795bf92eab9e6860cec5ad334a41d  gcc/testsuite/gcc.target/aarch64/sve/strided_load_4.c
  d8059cb9117a068460bf24f5dba7d2f8  gcc/testsuite/gcc.target/aarch64/sve/strided_load_5.c
  6ed9e96864421958237522d59a802f8d  gcc/testsuite/gcc.target/aarch64/sve/strided_load_6.c
--- 51670,51676 ----
  fa54ccc091393b9b50bb9131362a3475  gcc/testsuite/gcc.target/aarch64/sve/store_scalar_offset_1.c
  181bfd966c00aa4ed6fa1aae34f53f52  gcc/testsuite/gcc.target/aarch64/sve/strided_load_1.c
  12f4989e398bbd604266bbe500309d29  gcc/testsuite/gcc.target/aarch64/sve/strided_load_2.c
! e1925135d38cedde6c98faa0d1341238  gcc/testsuite/gcc.target/aarch64/sve/strided_load_3.c
  4bb795bf92eab9e6860cec5ad334a41d  gcc/testsuite/gcc.target/aarch64/sve/strided_load_4.c
  d8059cb9117a068460bf24f5dba7d2f8  gcc/testsuite/gcc.target/aarch64/sve/strided_load_5.c
  6ed9e96864421958237522d59a802f8d  gcc/testsuite/gcc.target/aarch64/sve/strided_load_6.c
*************** acf037781a376e80d46dbdacfd1de583  gcc/te
*** 48332,48338 ****
  f3cb7598c2e0806a8c4a0ef095a88423  gcc/testsuite/gcc.target/aarch64/sve/strided_load_8.c
  ff8786ae6fde587cbd18b1512938785d  gcc/testsuite/gcc.target/aarch64/sve/strided_store_1.c
  175c042e0f9e9ff7613b2d4ec6b2512f  gcc/testsuite/gcc.target/aarch64/sve/strided_store_2.c
! 8725efaddbb128996268034e43b21749  gcc/testsuite/gcc.target/aarch64/sve/strided_store_3.c
  a421d5e1fc09e2a43ba0b51529d4676c  gcc/testsuite/gcc.target/aarch64/sve/strided_store_4.c
  6c4375f8f66f1784d2a589119a5261cc  gcc/testsuite/gcc.target/aarch64/sve/strided_store_5.c
  21ee3e0b3b3163909b128c7c23ecf3bc  gcc/testsuite/gcc.target/aarch64/sve/strided_store_6.c
--- 51678,51684 ----
  f3cb7598c2e0806a8c4a0ef095a88423  gcc/testsuite/gcc.target/aarch64/sve/strided_load_8.c
  ff8786ae6fde587cbd18b1512938785d  gcc/testsuite/gcc.target/aarch64/sve/strided_store_1.c
  175c042e0f9e9ff7613b2d4ec6b2512f  gcc/testsuite/gcc.target/aarch64/sve/strided_store_2.c
! da6262e2f652c055a06de68cab8265ca  gcc/testsuite/gcc.target/aarch64/sve/strided_store_3.c
  a421d5e1fc09e2a43ba0b51529d4676c  gcc/testsuite/gcc.target/aarch64/sve/strided_store_4.c
  6c4375f8f66f1784d2a589119a5261cc  gcc/testsuite/gcc.target/aarch64/sve/strided_store_5.c
  21ee3e0b3b3163909b128c7c23ecf3bc  gcc/testsuite/gcc.target/aarch64/sve/strided_store_6.c
*************** a9c969a56d96703e9c1652d8ad2eb379  gcc/te
*** 48352,48361 ****
  9d14041f491bd1baf65be1ad477b81b8  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_12_run.c
  cbfee82d6d47e9926048ac4875b1b20e  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_13.c
  7c29957daeacd902d366cd4d50f67b76  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_13_run.c
! c9a912333d65a76c4de8eb6eee55a0cc  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_14.c
! df39eb8b8a76c6329448aea4106556e1  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_15.c
! 60e5a40f9d8e66c6a755d3bb8a899cc6  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_16.c
! 18bd0202305383ca89ed50ffbc821ab5  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_17.c
  26b7981e552c159208e75b89902cb72f  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_18.c
  5f296fa031f029c381fdf10a120e65d4  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_18_run.c
  19bb48ab7d1df16282da39d0bd295d53  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_19.c
--- 51698,51707 ----
  9d14041f491bd1baf65be1ad477b81b8  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_12_run.c
  cbfee82d6d47e9926048ac4875b1b20e  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_13.c
  7c29957daeacd902d366cd4d50f67b76  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_13_run.c
! 14cace513ee557719aabefc37479fd9e  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_14.c
! 4d1c08f43a03cb36bbf0ae237b45a9c2  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_15.c
! ec96bf52f226e5b6c1de4bae78616f7c  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_16.c
! ce25a55e9260b86bab96525326046cdb  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_17.c
  26b7981e552c159208e75b89902cb72f  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_18.c
  5f296fa031f029c381fdf10a120e65d4  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_18_run.c
  19bb48ab7d1df16282da39d0bd295d53  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_19.c
*************** c0e9f1053cbcbdcf665c67fcfd249122  gcc/te
*** 48395,48401 ****
--- 51741,51749 ----
  875820b7ba4a1a3947713183ad6b0965  gcc/testsuite/gcc.target/aarch64/sve/tls_preserve_2.c
  569626a579663f47f1bd01ed6f4da657  gcc/testsuite/gcc.target/aarch64/sve/tls_preserve_3.c
  6c0180841c8eeb8d62062e04e4eebcac  gcc/testsuite/gcc.target/aarch64/sve/trn1_1.c
+ 0065028e96db5d4af477c9085407ee80  gcc/testsuite/gcc.target/aarch64/sve/trn1_2.c
  0112727c4d7e88cd6e98899949a7b071  gcc/testsuite/gcc.target/aarch64/sve/trn2_1.c
+ 8e435f223fed00bac551dbfaa186d46a  gcc/testsuite/gcc.target/aarch64/sve/trn2_2.c
  801b5710924f9c7a8d5f5892f5ef05dd  gcc/testsuite/gcc.target/aarch64/sve/truncate_1.c
  1f6a41fdf4d9fc29aaf82a61813ec5f8  gcc/testsuite/gcc.target/aarch64/sve/umax_1.c
  62d1ecc4a7e6a5ceb305c98a05813595  gcc/testsuite/gcc.target/aarch64/sve/umin_1.c
*************** d3805ccb98774fc60783e0d714834aa0  gcc/te
*** 48405,48419 ****
  32a0ff26410cd0894dafd6f7f0d291a2  gcc/testsuite/gcc.target/aarch64/sve/unpack_fcvt_unsigned_1_run.c
  b57de878cb338939c71466f3393bfaf2  gcc/testsuite/gcc.target/aarch64/sve/unpack_float_1.c
  e7a3b62d81ab7c0991182b370fdfe06f  gcc/testsuite/gcc.target/aarch64/sve/unpack_float_1_run.c
! 8da41c1e11f170573a2a9de44cb9e31f  gcc/testsuite/gcc.target/aarch64/sve/unpack_signed_1.c
  0dac8ce2706a1e811d4ef39d2e7c0c52  gcc/testsuite/gcc.target/aarch64/sve/unpack_signed_1_run.c
  36fd605fe5951150cd3be8a183550d0e  gcc/testsuite/gcc.target/aarch64/sve/unpack_unsigned_1.c
  7ec405f5254cd6ee7e9eaf07731797fe  gcc/testsuite/gcc.target/aarch64/sve/unpack_unsigned_1_run.c
  f202a910bae302c6c775c55d23a33bc1  gcc/testsuite/gcc.target/aarch64/sve/unroll-1.c
  5a1bd749bf4d60baf28be6e49b1b9d4b  gcc/testsuite/gcc.target/aarch64/sve/uzp1_1.c
  d876021ee15812d1dc53c0bd7c9fc144  gcc/testsuite/gcc.target/aarch64/sve/uzp1_1_run.c
  15d9645260cd96e817750eb383c36679  gcc/testsuite/gcc.target/aarch64/sve/uzp2_1.c
  66e61d21118cd1e4b400b1d34e9315d1  gcc/testsuite/gcc.target/aarch64/sve/uzp2_1_run.c
  2a54bf5c1976c784a0f37398d02e302d  gcc/testsuite/gcc.target/aarch64/sve/var_stride_1.c
  466c74772d9a5cdaad3b58756b6c64a1  gcc/testsuite/gcc.target/aarch64/sve/var_stride_1.h
  46b216be707bdeb5dbf14fba5f46d8c2  gcc/testsuite/gcc.target/aarch64/sve/var_stride_1_run.c
--- 51753,51769 ----
  32a0ff26410cd0894dafd6f7f0d291a2  gcc/testsuite/gcc.target/aarch64/sve/unpack_fcvt_unsigned_1_run.c
  b57de878cb338939c71466f3393bfaf2  gcc/testsuite/gcc.target/aarch64/sve/unpack_float_1.c
  e7a3b62d81ab7c0991182b370fdfe06f  gcc/testsuite/gcc.target/aarch64/sve/unpack_float_1_run.c
! 863dc1f022e5e722d294392df91690dd  gcc/testsuite/gcc.target/aarch64/sve/unpack_signed_1.c
  0dac8ce2706a1e811d4ef39d2e7c0c52  gcc/testsuite/gcc.target/aarch64/sve/unpack_signed_1_run.c
  36fd605fe5951150cd3be8a183550d0e  gcc/testsuite/gcc.target/aarch64/sve/unpack_unsigned_1.c
  7ec405f5254cd6ee7e9eaf07731797fe  gcc/testsuite/gcc.target/aarch64/sve/unpack_unsigned_1_run.c
  f202a910bae302c6c775c55d23a33bc1  gcc/testsuite/gcc.target/aarch64/sve/unroll-1.c
  5a1bd749bf4d60baf28be6e49b1b9d4b  gcc/testsuite/gcc.target/aarch64/sve/uzp1_1.c
  d876021ee15812d1dc53c0bd7c9fc144  gcc/testsuite/gcc.target/aarch64/sve/uzp1_1_run.c
+ 8ba1fc382a2b8650ed30c02eee9a7784  gcc/testsuite/gcc.target/aarch64/sve/uzp1_2.c
  15d9645260cd96e817750eb383c36679  gcc/testsuite/gcc.target/aarch64/sve/uzp2_1.c
  66e61d21118cd1e4b400b1d34e9315d1  gcc/testsuite/gcc.target/aarch64/sve/uzp2_1_run.c
+ 2d21cc9ed403bcbfc4ff06c504640862  gcc/testsuite/gcc.target/aarch64/sve/uzp2_2.c
  2a54bf5c1976c784a0f37398d02e302d  gcc/testsuite/gcc.target/aarch64/sve/var_stride_1.c
  466c74772d9a5cdaad3b58756b6c64a1  gcc/testsuite/gcc.target/aarch64/sve/var_stride_1.h
  46b216be707bdeb5dbf14fba5f46d8c2  gcc/testsuite/gcc.target/aarch64/sve/var_stride_1_run.c
*************** d5a8f553575071402cda9532934d1f73  gcc/te
*** 48433,48440 ****
  3d2fb4a232f381e21bad82eb408f70db  gcc/testsuite/gcc.target/aarch64/sve/var_stride_8_run.c
  a6a975a0f9a3d6c2461cd427c69e0a43  gcc/testsuite/gcc.target/aarch64/sve/vcond_10.c
  f58922b1f5d9d289c8df20273c0568d3  gcc/testsuite/gcc.target/aarch64/sve/vcond_10_run.c
! a5285d48332c24e4811b426a56b85db9  gcc/testsuite/gcc.target/aarch64/sve/vcond_11.c
! 856b45a3c5a666fc32289303bfb57617  gcc/testsuite/gcc.target/aarch64/sve/vcond_11_run.c
  e9f58ff7f49efc88f6e02a3abd7c57b3  gcc/testsuite/gcc.target/aarch64/sve/vcond_12.c
  a7baf4374a452d4c69aa5bd1a8828f47  gcc/testsuite/gcc.target/aarch64/sve/vcond_12_run.c
  e75b1a176eb77ade401935c1937d86aa  gcc/testsuite/gcc.target/aarch64/sve/vcond_13.c
--- 51783,51790 ----
  3d2fb4a232f381e21bad82eb408f70db  gcc/testsuite/gcc.target/aarch64/sve/var_stride_8_run.c
  a6a975a0f9a3d6c2461cd427c69e0a43  gcc/testsuite/gcc.target/aarch64/sve/vcond_10.c
  f58922b1f5d9d289c8df20273c0568d3  gcc/testsuite/gcc.target/aarch64/sve/vcond_10_run.c
! 330c5ff2794f793e876ec9588fd6d6d8  gcc/testsuite/gcc.target/aarch64/sve/vcond_11.c
! be81a4bf4b907d45c9e12dadc114a2b9  gcc/testsuite/gcc.target/aarch64/sve/vcond_11_run.c
  e9f58ff7f49efc88f6e02a3abd7c57b3  gcc/testsuite/gcc.target/aarch64/sve/vcond_12.c
  a7baf4374a452d4c69aa5bd1a8828f47  gcc/testsuite/gcc.target/aarch64/sve/vcond_12_run.c
  e75b1a176eb77ade401935c1937d86aa  gcc/testsuite/gcc.target/aarch64/sve/vcond_13.c
*************** e0827e71dc0b198a8866bfb6f12de9f0  gcc/te
*** 48500,48509 ****
  27d8ceeb490cb745489607f06b508b65  gcc/testsuite/gcc.target/aarch64/sve/xorsign_1.c
  f243fb7673b198d762744d4c5937bfb6  gcc/testsuite/gcc.target/aarch64/sve/xorsign_1_run.c
  e13b38f2990120fb563c7e3296667346  gcc/testsuite/gcc.target/aarch64/sve/zip1_1.c
  c5724f6767410c7983d266d6febb0f89  gcc/testsuite/gcc.target/aarch64/sve/zip2_1.c
! 23654602ee6b0ba771008c81e9f8ca92  gcc/testsuite/gcc.target/aarch64/sve2/aarch64-sve2.exp
! e9848902057d4e62daa3d8acb309ccec  gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp
! 2b1a0a07465c990824897660115b1a02  gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle.exp
  f70a8121d1df4875294cca368f9923a7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s16.c
  c218a2086e6a44bef255447d1da29b8b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s32.c
  e66b0c7936f0923b4b4c2d6f4e417206  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s64.c
--- 51850,51861 ----
  27d8ceeb490cb745489607f06b508b65  gcc/testsuite/gcc.target/aarch64/sve/xorsign_1.c
  f243fb7673b198d762744d4c5937bfb6  gcc/testsuite/gcc.target/aarch64/sve/xorsign_1_run.c
  e13b38f2990120fb563c7e3296667346  gcc/testsuite/gcc.target/aarch64/sve/zip1_1.c
+ 1a84a5937709246fd93ca5b48868e104  gcc/testsuite/gcc.target/aarch64/sve/zip1_2.c
  c5724f6767410c7983d266d6febb0f89  gcc/testsuite/gcc.target/aarch64/sve/zip2_1.c
! 2eed99c891a5aeae7979afd71257ceaa  gcc/testsuite/gcc.target/aarch64/sve/zip2_2.c
! 3087dda86a96ff0ff0c2aa33ece27389  gcc/testsuite/gcc.target/aarch64/sve2/aarch64-sve2.exp
! db83f089cac6dbcee3c62875a142c1b7  gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp
! b8800c3d8b857737398ddfa295617015  gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle.exp
  f70a8121d1df4875294cca368f9923a7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s16.c
  c218a2086e6a44bef255447d1da29b8b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s32.c
  e66b0c7936f0923b4b4c2d6f4e417206  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s64.c
*************** a2ccf9bfd1d0bb840b23c25e1bdec31c  gcc/te
*** 49445,49451 ****
  4d1251d696b9339c130cb783420a3ecc  gcc/testsuite/gcc.target/aarch64/tlsle32_1.c
  d7ac99c012df73ffbde36998316bf1ef  gcc/testsuite/gcc.target/aarch64/tlsle_sizeadj_small_1.c
  fc2eb8ac52faed5fba0a017b858d4ae4  gcc/testsuite/gcc.target/aarch64/tlsle_sizeadj_tiny_1.c
! d08b681ed71ad6122e415d5c0a797c39  gcc/testsuite/gcc.target/aarch64/torture/aarch64-torture.exp
  5266ac107a73e3ee1d1f44e1cda7d9f2  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-1.c
  9c3416db2fc04c3f91b03ecae15e943e  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-10.c
  df55bfe2c1ce46074b19b4566cedeef4  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-11.c
--- 52797,52803 ----
  4d1251d696b9339c130cb783420a3ecc  gcc/testsuite/gcc.target/aarch64/tlsle32_1.c
  d7ac99c012df73ffbde36998316bf1ef  gcc/testsuite/gcc.target/aarch64/tlsle_sizeadj_small_1.c
  fc2eb8ac52faed5fba0a017b858d4ae4  gcc/testsuite/gcc.target/aarch64/tlsle_sizeadj_tiny_1.c
! cb0bc42e0cec0ac886c33323d1a33381  gcc/testsuite/gcc.target/aarch64/torture/aarch64-torture.exp
  5266ac107a73e3ee1d1f44e1cda7d9f2  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-1.c
  9c3416db2fc04c3f91b03ecae15e943e  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-10.c
  df55bfe2c1ce46074b19b4566cedeef4  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-11.c
*************** a5b09578629531d465aefeed46ebae10  gcc/te
*** 49472,49477 ****
--- 52824,52830 ----
  36ad666b8760a3d2de950ba38d4a02c6  gcc/testsuite/gcc.target/aarch64/ubfx_lsr_1.c
  652ecb3b586494e30accfd65a8789592  gcc/testsuite/gcc.target/aarch64/umaddl_combine_1.c
  14511b62983ad9e3291b049908b6d8d8  gcc/testsuite/gcc.target/aarch64/unsigned-float.c
+ 5bf9b14f9edfcac479f50a8da124cb46  gcc/testsuite/gcc.target/aarch64/usaba_1.c
  906a218fd0162c7785f09ed6656bec74  gcc/testsuite/gcc.target/aarch64/usadv16qi-dotprod.c
  f3d243dcf39853698a3cfd781d75b3d2  gcc/testsuite/gcc.target/aarch64/usadv16qi.c
  326941b744fdecb3e3a6d66433d7d18e  gcc/testsuite/gcc.target/aarch64/ushr64_1.c
*************** a82a34a90c1885b8543809c27d268007  gcc/te
*** 49495,49503 ****
  df79bf891875d63c1d1cee6ea11010ff  gcc/testsuite/gcc.target/aarch64/vclz.c
  bf8d75c7373fd9960d5991b8c49f6925  gcc/testsuite/gcc.target/aarch64/vdiv_f.c
  bfe5a6a3a53aebcbe2f24517d1b04256  gcc/testsuite/gcc.target/aarch64/vdup_lane_1.c
! 3b8890af508e7f746f03d881adf6e2cf  gcc/testsuite/gcc.target/aarch64/vdup_lane_2.c
  9ac0a5a454f83f3513fc68f070422119  gcc/testsuite/gcc.target/aarch64/vdup_n_1.c
  1c93884e2e0d923d37c8896f3e314217  gcc/testsuite/gcc.target/aarch64/vdup_n_2.c
  b1c97e59631c205f913afab4e1ffde4a  gcc/testsuite/gcc.target/aarch64/vec_init_1.c
  96b0c4ebb4ed6713b9f9e7fbb787a46c  gcc/testsuite/gcc.target/aarch64/vec_zeroextend.c
  a8bd653ddae99985293ee04dc707de34  gcc/testsuite/gcc.target/aarch64/vect-abs-compile.c
--- 52848,52857 ----
  df79bf891875d63c1d1cee6ea11010ff  gcc/testsuite/gcc.target/aarch64/vclz.c
  bf8d75c7373fd9960d5991b8c49f6925  gcc/testsuite/gcc.target/aarch64/vdiv_f.c
  bfe5a6a3a53aebcbe2f24517d1b04256  gcc/testsuite/gcc.target/aarch64/vdup_lane_1.c
! f7f2344a72602b25102a0f740e8d9987  gcc/testsuite/gcc.target/aarch64/vdup_lane_2.c
  9ac0a5a454f83f3513fc68f070422119  gcc/testsuite/gcc.target/aarch64/vdup_n_1.c
  1c93884e2e0d923d37c8896f3e314217  gcc/testsuite/gcc.target/aarch64/vdup_n_2.c
+ a37827c58e9b235ef8fb68b9d0397a33  gcc/testsuite/gcc.target/aarch64/vdup_n_3.c
  b1c97e59631c205f913afab4e1ffde4a  gcc/testsuite/gcc.target/aarch64/vec_init_1.c
  96b0c4ebb4ed6713b9f9e7fbb787a46c  gcc/testsuite/gcc.target/aarch64/vec_zeroextend.c
  a8bd653ddae99985293ee04dc707de34  gcc/testsuite/gcc.target/aarch64/vect-abs-compile.c
*************** ab6883e822bb3f1fc8d811e7e3f12d7a  gcc/te
*** 49551,49556 ****
--- 52905,52913 ----
  f4f649fed2885c785319cab7327c85be  gcc/testsuite/gcc.target/aarch64/vect-vfmaxv.c
  a02875626b1b0f35faabdf9a94a81379  gcc/testsuite/gcc.target/aarch64/vect-vmaxv.c
  8e92dda024e7991c23b32a3f9256b71c  gcc/testsuite/gcc.target/aarch64/vect-vrnd.c
+ 6e2c7398c236cc99969146f2c4cfe20a  gcc/testsuite/gcc.target/aarch64/vect-widen-add.c
+ 97a0d1424e83df1c9f02fdc0ca3f2eaa  gcc/testsuite/gcc.target/aarch64/vect-widen-lshift.c
+ 876e0a511560986db3faa7260456eab5  gcc/testsuite/gcc.target/aarch64/vect-widen-sub.c
  9bd1da2ef5ca73f1ef05f54dedc76156  gcc/testsuite/gcc.target/aarch64/vect-xorsign_exec.c
  8dfcd2a2d7ceb7d5140289d41af9786b  gcc/testsuite/gcc.target/aarch64/vect.c
  b693ee9ea2fea604f11a6e4a32b9b085  gcc/testsuite/gcc.target/aarch64/vect.x
*************** d8b7bf172e8cfd96979b54e10c4e2570  gcc/te
*** 49586,49591 ****
--- 52943,52951 ----
  a7efe0794d7e3b0752ef79d9b193f732  gcc/testsuite/gcc.target/aarch64/vget_high_1.c
  ba86e661dd1013208b7601f68c9e82c6  gcc/testsuite/gcc.target/aarch64/vget_low_1.c
  4c0b1addb12780dd7cbb77fd15e991c1  gcc/testsuite/gcc.target/aarch64/vget_set_lane_1.c
+ cfcefa0eda1f9dc2b828001739a59b3c  gcc/testsuite/gcc.target/aarch64/vins-1.c
+ 866df8192450aa2e37378d37f700681c  gcc/testsuite/gcc.target/aarch64/vins-2.c
+ 3847649bd45af7444086415ae9a2f95c  gcc/testsuite/gcc.target/aarch64/vins-3.c
  db4bc54a5e1d217544b1f34004b2b698  gcc/testsuite/gcc.target/aarch64/vld1-vst1_1.c
  fee0e93ef0f9f011f34cd4553e9b4687  gcc/testsuite/gcc.target/aarch64/vld1_lane-o0.c
  868cc2ead39bb6a9cf3f94c412d7b992  gcc/testsuite/gcc.target/aarch64/vld1_lane.c
*************** fdf65cde1ab9b0d61f25e804e84db5ad  gcc/te
*** 49616,49621 ****
--- 52976,52985 ----
  b5ecf30fba93e99a54d4a7207e8b7e89  gcc/testsuite/gcc.target/aarch64/vstN_1.c
  bdc07c3b7e37cb1f5eca49bd24a3eebb  gcc/testsuite/gcc.target/aarch64/vstN_lane_1.c
  7a4d12517c5382175058d5696e5dd6dd  gcc/testsuite/gcc.target/aarch64/vsub_f64.c
+ 1bdd33d50b1c7924437425df4a5a57fa  gcc/testsuite/gcc.target/aarch64/vzip_1.c
+ 1ef0402656b46734e00d7687ac6cc01a  gcc/testsuite/gcc.target/aarch64/vzip_2.c
+ 4e42015e5b212d79928e26058b1ce6b5  gcc/testsuite/gcc.target/aarch64/vzip_3.c
+ 192bda73349636748ab7015216c8874c  gcc/testsuite/gcc.target/aarch64/vzip_4.c
  e916fcf0c3130fc5102d03f2d729ff64  gcc/testsuite/gcc.target/aarch64/with-tune-config.c
  4683d4cffa583230e66ffd80229a9ff7  gcc/testsuite/gcc.target/aarch64/with-tune-march.c
  244ffe859281a44df2fa3ac62341bd75  gcc/testsuite/gcc.target/aarch64/with-tune-mcpu.c
*************** e916fcf0c3130fc5102d03f2d729ff64  gcc/te
*** 49625,49631 ****
  17f6fb1c3dca9d7ede25b02cf419efc7  gcc/testsuite/gcc.target/alpha/20000715-1.c
  11ab80b2f79c054dcb32865854c6ea77  gcc/testsuite/gcc.target/alpha/20011018-1.c
  2d8c29ac23704a70a80831327c5e0754  gcc/testsuite/gcc.target/alpha/980217-1.c
! 6db91ecfb90f47071baf6ad4fa80a8ee  gcc/testsuite/gcc.target/alpha/alpha.exp
  a9f54382c872d8300abd0751aaf2baa7  gcc/testsuite/gcc.target/alpha/asm-1.c
  72088d2975371a0383b6fa19c63a6ee4  gcc/testsuite/gcc.target/alpha/base-1.c
  2cf5d8a00cade8200304281bbeb38cff  gcc/testsuite/gcc.target/alpha/base-2.c
--- 52989,52995 ----
  17f6fb1c3dca9d7ede25b02cf419efc7  gcc/testsuite/gcc.target/alpha/20000715-1.c
  11ab80b2f79c054dcb32865854c6ea77  gcc/testsuite/gcc.target/alpha/20011018-1.c
  2d8c29ac23704a70a80831327c5e0754  gcc/testsuite/gcc.target/alpha/980217-1.c
! 1ed1fc28999c21c7b11b3051559326de  gcc/testsuite/gcc.target/alpha/alpha.exp
  a9f54382c872d8300abd0751aaf2baa7  gcc/testsuite/gcc.target/alpha/asm-1.c
  72088d2975371a0383b6fa19c63a6ee4  gcc/testsuite/gcc.target/alpha/base-1.c
  2cf5d8a00cade8200304281bbeb38cff  gcc/testsuite/gcc.target/alpha/base-2.c
*************** a28c8b957006268fb63ac90eaea21d90  gcc/te
*** 49653,49659 ****
  a125f0012bfc0fdad155c9b9bcc0f009  gcc/testsuite/gcc.target/arc/abitest.h
  068ff4430e26afc40bca9d2a0942f6d6  gcc/testsuite/gcc.target/arc/add_n-combine.c
  e6be20952086b2b05a1879e41e70daac  gcc/testsuite/gcc.target/arc/and-cnst-size.c
! ebce7d2b109de5ea085834c577a963cd  gcc/testsuite/gcc.target/arc/arc.exp
  3e772a00d37dc9ac78faa763e2dd058d  gcc/testsuite/gcc.target/arc/arc700-stld-hazard.c
  d0cebb0a2330505d8dd990632e8fccbf  gcc/testsuite/gcc.target/arc/barrel-shifter-1.c
  b39c0e6513279f1844d9242a3025b258  gcc/testsuite/gcc.target/arc/barrel-shifter-2.c
--- 53017,53023 ----
  a125f0012bfc0fdad155c9b9bcc0f009  gcc/testsuite/gcc.target/arc/abitest.h
  068ff4430e26afc40bca9d2a0942f6d6  gcc/testsuite/gcc.target/arc/add_n-combine.c
  e6be20952086b2b05a1879e41e70daac  gcc/testsuite/gcc.target/arc/and-cnst-size.c
! 8615ad145c596adfc3c6ec4f43720302  gcc/testsuite/gcc.target/arc/arc.exp
  3e772a00d37dc9ac78faa763e2dd058d  gcc/testsuite/gcc.target/arc/arc700-stld-hazard.c
  d0cebb0a2330505d8dd990632e8fccbf  gcc/testsuite/gcc.target/arc/barrel-shifter-1.c
  b39c0e6513279f1844d9242a3025b258  gcc/testsuite/gcc.target/arc/barrel-shifter-2.c
*************** b1b1e7ab7fe3d3c645620b9ae615c9f0  gcc/te
*** 49713,49719 ****
  f07f53a4dfd154c4babdb0ead46ccc61  gcc/testsuite/gcc.target/arc/long-calls.c
  e6fd4471e35965064bec7e019a343785  gcc/testsuite/gcc.target/arc/loop-1.c
  a8139c5c60e1336d6ba8fd0f2cd5b87e  gcc/testsuite/gcc.target/arc/loop-2.cpp
! 1fad00abdca4d484b02390b9c329a802  gcc/testsuite/gcc.target/arc/loop-3.c
  8ea24c8a496a1109505e25a0a0ec5c7d  gcc/testsuite/gcc.target/arc/loop-4.c
  5ba1cd91c81e3462387184a5487a64d0  gcc/testsuite/gcc.target/arc/loop-5.cpp
  24bd83c9d7ba11e5c048452de26834c9  gcc/testsuite/gcc.target/arc/loop-hazard-1.c
--- 53077,53083 ----
  f07f53a4dfd154c4babdb0ead46ccc61  gcc/testsuite/gcc.target/arc/long-calls.c
  e6fd4471e35965064bec7e019a343785  gcc/testsuite/gcc.target/arc/loop-1.c
  a8139c5c60e1336d6ba8fd0f2cd5b87e  gcc/testsuite/gcc.target/arc/loop-2.cpp
! 40a81e278b84bc91cacb2c06e0d6fab4  gcc/testsuite/gcc.target/arc/loop-3.c
  8ea24c8a496a1109505e25a0a0ec5c7d  gcc/testsuite/gcc.target/arc/loop-4.c
  5ba1cd91c81e3462387184a5487a64d0  gcc/testsuite/gcc.target/arc/loop-5.cpp
  24bd83c9d7ba11e5c048452de26834c9  gcc/testsuite/gcc.target/arc/loop-hazard-1.c
*************** b7447dd455d522b01d8038bf537a3014  gcc/te
*** 49807,49812 ****
--- 53171,53177 ----
  4aa4bea5182116d7d0462ac78d6f669e  gcc/testsuite/gcc.target/arc/uncached-6.c
  332845dfd09bbcad8877874819a30ba1  gcc/testsuite/gcc.target/arc/uncached-7.c
  ee21dc84aff8637681c7dfef7d191199  gcc/testsuite/gcc.target/arc/uncached-8.c
+ 26955d5e0a1d1a3d8966390c4e5565f5  gcc/testsuite/gcc.target/arc/uncached-9.c
  721ddfeb1e6af8110e1f5975daed686d  gcc/testsuite/gcc.target/arc/uncached.c
  6e97aa13b3bef6e111a877f2a6d7a543  gcc/testsuite/gcc.target/arc/v-cache.c
  40998e8abe4feed63cf6f54437473598  gcc/testsuite/gcc.target/arc/va_args-1.c
*************** d059b2e33fe3944d4609bef74df38413  gcc/te
*** 49818,49824 ****
  678e95fcf9ea10b2ad5f97a249136cdb  gcc/testsuite/gcc.target/arm/20090811-1.c
  3246666ab1db4fd6160f12106dd2fea4  gcc/testsuite/gcc.target/arm/20131120.c
  99d362e2051f9f2bf0e7ff2ec49b0df7  gcc/testsuite/gcc.target/arm/README.advsimd-intrinsics
! 1caa7d331b95e1668447c1122e9fcc20  gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp
  dce658d805b258027bde980a1d76a50d  gcc/testsuite/gcc.target/arm/aapcs/abitest.h
  96bc5ca2eaed6da1d7e22b1c0e28317d  gcc/testsuite/gcc.target/arm/aapcs/align1.c
  1ad40fcc9ea2067b6fa8508030c2f1d4  gcc/testsuite/gcc.target/arm/aapcs/align2.c
--- 53183,53189 ----
  678e95fcf9ea10b2ad5f97a249136cdb  gcc/testsuite/gcc.target/arm/20090811-1.c
  3246666ab1db4fd6160f12106dd2fea4  gcc/testsuite/gcc.target/arm/20131120.c
  99d362e2051f9f2bf0e7ff2ec49b0df7  gcc/testsuite/gcc.target/arm/README.advsimd-intrinsics
! dac1a8cad6e64d6a32fcf67b18a2f27e  gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp
  dce658d805b258027bde980a1d76a50d  gcc/testsuite/gcc.target/arm/aapcs/abitest.h
  96bc5ca2eaed6da1d7e22b1c0e28317d  gcc/testsuite/gcc.target/arm/aapcs/align1.c
  1ad40fcc9ea2067b6fa8508030c2f1d4  gcc/testsuite/gcc.target/arm/aapcs/align2.c
*************** bebd258646fbbae9af3ee39443d6ba31  gcc/te
*** 49861,49870 ****
  00805ec9ab5739d0eb6e73370c1f65ec  gcc/testsuite/gcc.target/arm/aapcs/vfp2.c
  429151506717e9bb28236afa726d188c  gcc/testsuite/gcc.target/arm/aapcs/vfp20.c
  fa81da8eb4ae62c03ad2ea29180bbc73  gcc/testsuite/gcc.target/arm/aapcs/vfp21.c
! 3e21b221060c720c97e3a87089fdb4f2  gcc/testsuite/gcc.target/arm/aapcs/vfp22.c
! 5141d6b98662801c5211aeb408f892b6  gcc/testsuite/gcc.target/arm/aapcs/vfp23.c
! 55700071c1039c66ade1fca8c246e334  gcc/testsuite/gcc.target/arm/aapcs/vfp24.c
! ba960049e2b6bd2e4dc6709bc6d7b5c4  gcc/testsuite/gcc.target/arm/aapcs/vfp25.c
  b06309b72403cdd75a8f3ee6ffbef378  gcc/testsuite/gcc.target/arm/aapcs/vfp3.c
  7207730e232368477cb8dd66c2f22ba3  gcc/testsuite/gcc.target/arm/aapcs/vfp4.c
  57b8f8a0b230358caeba85b7f4689619  gcc/testsuite/gcc.target/arm/aapcs/vfp5.c
--- 53226,53235 ----
  00805ec9ab5739d0eb6e73370c1f65ec  gcc/testsuite/gcc.target/arm/aapcs/vfp2.c
  429151506717e9bb28236afa726d188c  gcc/testsuite/gcc.target/arm/aapcs/vfp20.c
  fa81da8eb4ae62c03ad2ea29180bbc73  gcc/testsuite/gcc.target/arm/aapcs/vfp21.c
! 61b399193af976c781ac1c2df83617eb  gcc/testsuite/gcc.target/arm/aapcs/vfp22.c
! ec0ca75c452020b501add9a6083fd0bb  gcc/testsuite/gcc.target/arm/aapcs/vfp23.c
! f8dce68ada9662fad2236e2d05c3c17d  gcc/testsuite/gcc.target/arm/aapcs/vfp24.c
! b00fb0e5516a8015b8058e991b52c3f7  gcc/testsuite/gcc.target/arm/aapcs/vfp25.c
  b06309b72403cdd75a8f3ee6ffbef378  gcc/testsuite/gcc.target/arm/aapcs/vfp3.c
  7207730e232368477cb8dd66c2f22ba3  gcc/testsuite/gcc.target/arm/aapcs/vfp4.c
  57b8f8a0b230358caeba85b7f4689619  gcc/testsuite/gcc.target/arm/aapcs/vfp5.c
*************** b03843d0bfb6128e2d6e634be21c3021  gcc/te
*** 49872,49878 ****
  e5b7374e291244b801b4c292504d3f80  gcc/testsuite/gcc.target/arm/aapcs/vfp7.c
  3aa1f9e592cb3a6a4181176724ae2fa8  gcc/testsuite/gcc.target/arm/aapcs/vfp8.c
  37ac30daf2fa61e7f2d97c17c39fddfe  gcc/testsuite/gcc.target/arm/aapcs/vfp9.c
! 2e5586c9bc1986c5ecd6c32173e3ac59  gcc/testsuite/gcc.target/arm/acle/acle.exp
  14b0c63ff2ea5258d212ec979aa36c8c  gcc/testsuite/gcc.target/arm/acle/cde-errors.c
  5ae0b75d3edc7d5441f595fec368443c  gcc/testsuite/gcc.target/arm/acle/cde-mve-error-1.c
  3ef89af25e41c2840ae4eb47d8fe80fe  gcc/testsuite/gcc.target/arm/acle/cde-mve-error-2.c
--- 53237,53243 ----
  e5b7374e291244b801b4c292504d3f80  gcc/testsuite/gcc.target/arm/aapcs/vfp7.c
  3aa1f9e592cb3a6a4181176724ae2fa8  gcc/testsuite/gcc.target/arm/aapcs/vfp8.c
  37ac30daf2fa61e7f2d97c17c39fddfe  gcc/testsuite/gcc.target/arm/aapcs/vfp9.c
! b7434dcb52535b58bb79a83c7a2a4113  gcc/testsuite/gcc.target/arm/acle/acle.exp
  14b0c63ff2ea5258d212ec979aa36c8c  gcc/testsuite/gcc.target/arm/acle/cde-errors.c
  5ae0b75d3edc7d5441f595fec368443c  gcc/testsuite/gcc.target/arm/acle/cde-mve-error-1.c
  3ef89af25e41c2840ae4eb47d8fe80fe  gcc/testsuite/gcc.target/arm/acle/cde-mve-error-2.c
*************** a7f2e5349eb3677d4e532197beb261b8  gcc/te
*** 49894,49900 ****
  21b20cecbc6689dc6367a96e210b956e  gcc/testsuite/gcc.target/arm/acle/crc32h.c
  2d7c8358817ecb57e689202c2e4f2dd6  gcc/testsuite/gcc.target/arm/acle/crc32w.c
  7625090916298326fe50051cd11dd95b  gcc/testsuite/gcc.target/arm/acle/crc_hf_1.c
! bfffbb1378fde3001b4d6451e62b2ed8  gcc/testsuite/gcc.target/arm/acle/dsp_arith.c
  15caa7f54c3a3e06d97de61aaaa7ca1c  gcc/testsuite/gcc.target/arm/acle/ldc.c
  343921f8186546d1f5253679431b890b  gcc/testsuite/gcc.target/arm/acle/ldc2.c
  deee7c31c5c250e8d2a4897962cdea6b  gcc/testsuite/gcc.target/arm/acle/ldc2l.c
--- 53259,53265 ----
  21b20cecbc6689dc6367a96e210b956e  gcc/testsuite/gcc.target/arm/acle/crc32h.c
  2d7c8358817ecb57e689202c2e4f2dd6  gcc/testsuite/gcc.target/arm/acle/crc32w.c
  7625090916298326fe50051cd11dd95b  gcc/testsuite/gcc.target/arm/acle/crc_hf_1.c
! 7009c6abfd18e2667a2c733ef4c48096  gcc/testsuite/gcc.target/arm/acle/dsp_arith.c
  15caa7f54c3a3e06d97de61aaaa7ca1c  gcc/testsuite/gcc.target/arm/acle/ldc.c
  343921f8186546d1f5253679431b890b  gcc/testsuite/gcc.target/arm/acle/ldc2.c
  deee7c31c5c250e8d2a4897962cdea6b  gcc/testsuite/gcc.target/arm/acle/ldc2l.c
*************** beeedfa6811e6847c3cf97dc8034edc6  gcc/te
*** 49925,49943 ****
  dfc4bf650d099d2aff3f9e5f3d4b62ac  gcc/testsuite/gcc.target/arm/anddi3-opt2.c
  8acda08d68bcc11cfdd01eb0a1ed850d  gcc/testsuite/gcc.target/arm/anddi_notdi-1.c
  2de4b776a367481e41c80f0bf35fc6e4  gcc/testsuite/gcc.target/arm/arm-soft-strd-even.c
! 34544cd60120f26cc44b043c5f4c3999  gcc/testsuite/gcc.target/arm/arm.exp
  5810c65774cd6173ff73a4ca6f3b0562  gcc/testsuite/gcc.target/arm/armv6-unaligned-load-ice.c
  e0b358414d3e86102d32b626de2fbc40  gcc/testsuite/gcc.target/arm/armv8-sync-comp-swap.c
  0434c51f353f1957fce79533a348ee29  gcc/testsuite/gcc.target/arm/armv8-sync-op-acquire.c
  70d2176f2f14d87a3e73331abb72a491  gcc/testsuite/gcc.target/arm/armv8-sync-op-full.c
  32fe7261a03a9e52888cbdcc42aea743  gcc/testsuite/gcc.target/arm/armv8-sync-op-release.c
! 877facf197e7ffd8e8c918051be0dc57  gcc/testsuite/gcc.target/arm/armv8_1m-fp16-move-1.c
! eaab3acc808399de4b98fd960fbd3ca5  gcc/testsuite/gcc.target/arm/armv8_1m-fp32-move-1.c
! 0f85f82e86b1ee83233bfc66cb58532c  gcc/testsuite/gcc.target/arm/armv8_1m-fp64-move-1.c
! 58009de6048805b94423984b3468c8aa  gcc/testsuite/gcc.target/arm/armv8_1m-shift-imm-1.c
! 987074484c5e30b61dd6f5911175981d  gcc/testsuite/gcc.target/arm/armv8_1m-shift-reg-1.c
  89f9f477194c40b77ee3c7bb74c37468  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-1.c
! eafc5597e26e8f96028920f121852220  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-2.c
  e760d8a00f0e4b4ceedce756dc61f6c1  gcc/testsuite/gcc.target/arm/armv8_2-fp16-conv-1.c
  5861a72a2b15085324305371dbea13fc  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c
  771620b8522f47f0902c876afa9eeb03  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c
--- 53290,53308 ----
  dfc4bf650d099d2aff3f9e5f3d4b62ac  gcc/testsuite/gcc.target/arm/anddi3-opt2.c
  8acda08d68bcc11cfdd01eb0a1ed850d  gcc/testsuite/gcc.target/arm/anddi_notdi-1.c
  2de4b776a367481e41c80f0bf35fc6e4  gcc/testsuite/gcc.target/arm/arm-soft-strd-even.c
! 36f6dac69e351d17bd2a86af520ec2c4  gcc/testsuite/gcc.target/arm/arm.exp
  5810c65774cd6173ff73a4ca6f3b0562  gcc/testsuite/gcc.target/arm/armv6-unaligned-load-ice.c
  e0b358414d3e86102d32b626de2fbc40  gcc/testsuite/gcc.target/arm/armv8-sync-comp-swap.c
  0434c51f353f1957fce79533a348ee29  gcc/testsuite/gcc.target/arm/armv8-sync-op-acquire.c
  70d2176f2f14d87a3e73331abb72a491  gcc/testsuite/gcc.target/arm/armv8-sync-op-full.c
  32fe7261a03a9e52888cbdcc42aea743  gcc/testsuite/gcc.target/arm/armv8-sync-op-release.c
! 60cd757a042c5055dd2c0913078a6e95  gcc/testsuite/gcc.target/arm/armv8_1m-fp16-move-1.c
! 2244351830cf5774e6f0144b32774c83  gcc/testsuite/gcc.target/arm/armv8_1m-fp32-move-1.c
! ae9c194b5b2bab609b607ca64a11d1c4  gcc/testsuite/gcc.target/arm/armv8_1m-fp64-move-1.c
! 6d693ceeceae55f1fff94a935992216e  gcc/testsuite/gcc.target/arm/armv8_1m-shift-imm-1.c
! c6c1c759a610556eca59987a77084f45  gcc/testsuite/gcc.target/arm/armv8_1m-shift-reg-1.c
  89f9f477194c40b77ee3c7bb74c37468  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-1.c
! 5790d3efd74c1ddf5aeb2e8743385c60  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-2.c
  e760d8a00f0e4b4ceedce756dc61f6c1  gcc/testsuite/gcc.target/arm/armv8_2-fp16-conv-1.c
  5861a72a2b15085324305371dbea13fc  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c
  771620b8522f47f0902c876afa9eeb03  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c
*************** e760d8a00f0e4b4ceedce756dc61f6c1  gcc/te
*** 49945,49951 ****
  c5f374e65349cde6053f285d90ab96c5  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c
  992185bff8a637178d6613bb76a8369c  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-3.c
  8f88cdcfdc86a7068680b15dfe795b54  gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-1.c
! 9aa63d4bf1d824cace921a6c5d1d2ab6  gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-2.c
  662f95b68b4da4be16c54b9f1ab1730c  gcc/testsuite/gcc.target/arm/asm-flag-1.c
  f3fa0198457b98710b26072dfa716655  gcc/testsuite/gcc.target/arm/asm-flag-3.c
  fc85f6b00063aadac4fe642aea1d37a0  gcc/testsuite/gcc.target/arm/asm-flag-4.c
--- 53310,53316 ----
  c5f374e65349cde6053f285d90ab96c5  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c
  992185bff8a637178d6613bb76a8369c  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-3.c
  8f88cdcfdc86a7068680b15dfe795b54  gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-1.c
! 4bad0a804fdff0fae8f92991ef639b11  gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-2.c
  662f95b68b4da4be16c54b9f1ab1730c  gcc/testsuite/gcc.target/arm/asm-flag-1.c
  f3fa0198457b98710b26072dfa716655  gcc/testsuite/gcc.target/arm/asm-flag-3.c
  fc85f6b00063aadac4fe642aea1d37a0  gcc/testsuite/gcc.target/arm/asm-flag-4.c
*************** ba6a1a17734115428b72a71a491695fb  gcc/te
*** 50013,50036 ****
  0f7cecf6939530d192dd4ccc7a6ce8ce  gcc/testsuite/gcc.target/arm/attr_thumb-static.c
  3c48820c733cf164b886b82341b6cf06  gcc/testsuite/gcc.target/arm/attr_thumb-static2.c
  b623510ec705d6b7193e2c0e2a0f5f94  gcc/testsuite/gcc.target/arm/attr_thumb.c
! ebedb6ac6941baedd3c160363d16ca30  gcc/testsuite/gcc.target/arm/bf16_dup.c
! 0a1413c0d13595e7030c61a4ae4d9454  gcc/testsuite/gcc.target/arm/bf16_reinterpret.c
! 71912f13c94a190df9d34104ee97057d  gcc/testsuite/gcc.target/arm/bfloat16_scalar_1_1.c
  03bcb9e9946562554a279d8593ff1440  gcc/testsuite/gcc.target/arm/bfloat16_scalar_1_2.c
  3a23a33f3b07abbabd7c1da736521c60  gcc/testsuite/gcc.target/arm/bfloat16_scalar_2_1.c
  7416b080d5cf8204583190b0750abcdf  gcc/testsuite/gcc.target/arm/bfloat16_scalar_2_2.c
  212bb298ddd1b8070ef221976c821d59  gcc/testsuite/gcc.target/arm/bfloat16_scalar_3_1.c
  533fcce74b96ed545cfaddb3fd6c0f50  gcc/testsuite/gcc.target/arm/bfloat16_scalar_3_2.c
  ebd9a7e3125d7b51692987388532dfb3  gcc/testsuite/gcc.target/arm/bfloat16_scalar_4.c
! 6f98f35526aefb1b9156ecad1254f396  gcc/testsuite/gcc.target/arm/bfloat16_scalar_typecheck.c
! d9033c250a6a100be292fc023ad67547  gcc/testsuite/gcc.target/arm/bfloat16_simd_1_1.c
! 83917771d06eaf39a6d3e5f35f021f79  gcc/testsuite/gcc.target/arm/bfloat16_simd_1_2.c
! 985f7b4cf99565e6f806b8b4a0ba8bf3  gcc/testsuite/gcc.target/arm/bfloat16_simd_2_1.c
! 0949a58d447996d0a84bbf843aba50e6  gcc/testsuite/gcc.target/arm/bfloat16_simd_2_2.c
! 7028bcee6878d0b8affe15ac355ac812  gcc/testsuite/gcc.target/arm/bfloat16_simd_3_1.c
! fc79065e2c64c9b8688ea4b05b95e37d  gcc/testsuite/gcc.target/arm/bfloat16_simd_3_2.c
! 26ad350072f49014ed3b15b96402d108  gcc/testsuite/gcc.target/arm/bfloat16_vector_typecheck_1.c
! 0eb291d362da451223b4de72931fcc54  gcc/testsuite/gcc.target/arm/bfloat16_vector_typecheck_2.c
  6fd7f87aeac118d347a74f2afe95ddc0  gcc/testsuite/gcc.target/arm/bics_1.c
  6f5448d43fe1db047a8d790ae666a6c8  gcc/testsuite/gcc.target/arm/bics_2.c
  737e99e41cecd5bc4c1c91c76e580e6b  gcc/testsuite/gcc.target/arm/bics_3.c
--- 53378,53401 ----
  0f7cecf6939530d192dd4ccc7a6ce8ce  gcc/testsuite/gcc.target/arm/attr_thumb-static.c
  3c48820c733cf164b886b82341b6cf06  gcc/testsuite/gcc.target/arm/attr_thumb-static2.c
  b623510ec705d6b7193e2c0e2a0f5f94  gcc/testsuite/gcc.target/arm/attr_thumb.c
! ddf5f8837478e164c620abb8c7ac47ca  gcc/testsuite/gcc.target/arm/bf16_dup.c
! 6e41b96954872461a57e818eb21c53b9  gcc/testsuite/gcc.target/arm/bf16_reinterpret.c
! 470031179d5bd9d9930fa2618a59a537  gcc/testsuite/gcc.target/arm/bfloat16_scalar_1_1.c
  03bcb9e9946562554a279d8593ff1440  gcc/testsuite/gcc.target/arm/bfloat16_scalar_1_2.c
  3a23a33f3b07abbabd7c1da736521c60  gcc/testsuite/gcc.target/arm/bfloat16_scalar_2_1.c
  7416b080d5cf8204583190b0750abcdf  gcc/testsuite/gcc.target/arm/bfloat16_scalar_2_2.c
  212bb298ddd1b8070ef221976c821d59  gcc/testsuite/gcc.target/arm/bfloat16_scalar_3_1.c
  533fcce74b96ed545cfaddb3fd6c0f50  gcc/testsuite/gcc.target/arm/bfloat16_scalar_3_2.c
  ebd9a7e3125d7b51692987388532dfb3  gcc/testsuite/gcc.target/arm/bfloat16_scalar_4.c
! e0066c1f5b260f83bb34906c9900f8bc  gcc/testsuite/gcc.target/arm/bfloat16_scalar_typecheck.c
! 9d566a8c25c9173357e8d1701a9c9181  gcc/testsuite/gcc.target/arm/bfloat16_simd_1_1.c
! e82342fa684459ff8667e9b61d0a7224  gcc/testsuite/gcc.target/arm/bfloat16_simd_1_2.c
! 3d1619ca156d9442f835868012752a98  gcc/testsuite/gcc.target/arm/bfloat16_simd_2_1.c
! 713be387902863185c43e0479009cf62  gcc/testsuite/gcc.target/arm/bfloat16_simd_2_2.c
! a30e0a4d7a48b01ccc07bd5be4a0d065  gcc/testsuite/gcc.target/arm/bfloat16_simd_3_1.c
! 9083033564e6fc8e449d986191be65da  gcc/testsuite/gcc.target/arm/bfloat16_simd_3_2.c
! f101ebe2e42b2c28eb921bcc60e875f6  gcc/testsuite/gcc.target/arm/bfloat16_vector_typecheck_1.c
! 18abf401a6ff676a0d67d9f1b08a74eb  gcc/testsuite/gcc.target/arm/bfloat16_vector_typecheck_2.c
  6fd7f87aeac118d347a74f2afe95ddc0  gcc/testsuite/gcc.target/arm/bics_1.c
  6f5448d43fe1db047a8d790ae666a6c8  gcc/testsuite/gcc.target/arm/bics_2.c
  737e99e41cecd5bc4c1c91c76e580e6b  gcc/testsuite/gcc.target/arm/bics_3.c
*************** ce1fe2059d8e263b0f3d889cb1392892  gcc/te
*** 50096,50102 ****
  679443fc734534194407169158890899  gcc/testsuite/gcc.target/arm/cmse/cmse-7.x
  a29c7dfe0255ba24ca52aa9293640971  gcc/testsuite/gcc.target/arm/cmse/cmse-8.x
  ce946170746cf737bca71ec699014fef  gcc/testsuite/gcc.target/arm/cmse/cmse-9.c
! 8fdc220a1b1a0618ddbb5329a08c62de  gcc/testsuite/gcc.target/arm/cmse/cmse.exp
  6e9c9a777c4a333e2bdba95bdaf23364  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/bitfield-4.c
  c540adef0c0a8fc3e8e03fee5f712683  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/bitfield-5.c
  727ae9b55594654191b60afa67ad5094  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/bitfield-6.c
--- 53461,53467 ----
  679443fc734534194407169158890899  gcc/testsuite/gcc.target/arm/cmse/cmse-7.x
  a29c7dfe0255ba24ca52aa9293640971  gcc/testsuite/gcc.target/arm/cmse/cmse-8.x
  ce946170746cf737bca71ec699014fef  gcc/testsuite/gcc.target/arm/cmse/cmse-9.c
! be8035e562d337b07c0ddf2c6f1723d6  gcc/testsuite/gcc.target/arm/cmse/cmse.exp
  6e9c9a777c4a333e2bdba95bdaf23364  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/bitfield-4.c
  c540adef0c0a8fc3e8e03fee5f712683  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/bitfield-5.c
  727ae9b55594654191b60afa67ad5094  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/bitfield-6.c
*************** bfdbc743afa8415599bab6c48cb26d64  gcc/te
*** 50164,50179 ****
  ea5c06143f89f8b3c26a3c80f255d03b  gcc/testsuite/gcc.target/arm/condarith_restrict_it.c
  702468e7cb2029f03eaac95e5eea0533  gcc/testsuite/gcc.target/arm/constant-pool.c
  d38897569ba0b5112694e6e1fe6662b5  gcc/testsuite/gcc.target/arm/copysign_softfloat_1.c
! 3276a566dd1857d0f2cd818f10d4ea20  gcc/testsuite/gcc.target/arm/cortex-m55-nodsp-flag-hard.c
! f70849821eab1c2219b01aa5abf68cce  gcc/testsuite/gcc.target/arm/cortex-m55-nodsp-flag-softfp.c
! 40da6d5a8299dff3dfc28e297fbe1812  gcc/testsuite/gcc.target/arm/cortex-m55-nodsp-nofp-flag-softfp.c
! 08065246845cd82e79e6fda8a936c484  gcc/testsuite/gcc.target/arm/cortex-m55-nofp-flag-hard.c
! 9876dc6b9dcf925936da3c491762ba44  gcc/testsuite/gcc.target/arm/cortex-m55-nofp-flag-softfp.c
! c0c9b87f67e7f3bc176d640e9c1b9109  gcc/testsuite/gcc.target/arm/cortex-m55-nofp-nomve-flag-softfp.c
! cc128f76dcfaa18bcc1a981b2d9c8606  gcc/testsuite/gcc.target/arm/cortex-m55-nomve-flag-hard.c
! 7a6177e56a148a08b79a830eeba6342d  gcc/testsuite/gcc.target/arm/cortex-m55-nomve-flag-softfp.c
! 50039fdbda129708bea94c686587fe2f  gcc/testsuite/gcc.target/arm/cortex-m55-nomve.fp-flag-hard.c
! f0f522383ff73639ce8461a0dd0be7b3  gcc/testsuite/gcc.target/arm/cortex-m55-nomve.fp-flag-softfp.c
  1c89ba825c88653c01849f8986e1542b  gcc/testsuite/gcc.target/arm/crypto-vaesdq_u8.c
  2ed72824fb0f88ddb43549410040a784  gcc/testsuite/gcc.target/arm/crypto-vaeseq_u8.c
  abba2731624485a0118e2059f5e1c67a  gcc/testsuite/gcc.target/arm/crypto-vaesimcq_u8.c
--- 53529,53544 ----
  ea5c06143f89f8b3c26a3c80f255d03b  gcc/testsuite/gcc.target/arm/condarith_restrict_it.c
  702468e7cb2029f03eaac95e5eea0533  gcc/testsuite/gcc.target/arm/constant-pool.c
  d38897569ba0b5112694e6e1fe6662b5  gcc/testsuite/gcc.target/arm/copysign_softfloat_1.c
! c46d86d65d2d64a7a88fc4a4918fd806  gcc/testsuite/gcc.target/arm/cortex-m55-nodsp-flag-hard.c
! d68dd2fc1fc4947df53d60137d04cc39  gcc/testsuite/gcc.target/arm/cortex-m55-nodsp-flag-softfp.c
! b3f3ff81dd0095a51c242338491d533e  gcc/testsuite/gcc.target/arm/cortex-m55-nodsp-nofp-flag-softfp.c
! 34f88119bcfb8ccfc660579d3195c87f  gcc/testsuite/gcc.target/arm/cortex-m55-nofp-flag-hard.c
! 23a2ab86497e85a50c28e18961170088  gcc/testsuite/gcc.target/arm/cortex-m55-nofp-flag-softfp.c
! 4d25dcfec59c90cbd5fe6f86420e46b8  gcc/testsuite/gcc.target/arm/cortex-m55-nofp-nomve-flag-softfp.c
! 93d5324ed0381b5d6667926bc2969a6b  gcc/testsuite/gcc.target/arm/cortex-m55-nomve-flag-hard.c
! 205627068c58abb8c13cdbfc0d7c9c01  gcc/testsuite/gcc.target/arm/cortex-m55-nomve-flag-softfp.c
! f6255ec99cf78afc00b3ce7f7e9a1c96  gcc/testsuite/gcc.target/arm/cortex-m55-nomve.fp-flag-hard.c
! 1483de9b7f52248fc9df51779ace9568  gcc/testsuite/gcc.target/arm/cortex-m55-nomve.fp-flag-softfp.c
  1c89ba825c88653c01849f8986e1542b  gcc/testsuite/gcc.target/arm/crypto-vaesdq_u8.c
  2ed72824fb0f88ddb43549410040a784  gcc/testsuite/gcc.target/arm/crypto-vaeseq_u8.c
  abba2731624485a0118e2059f5e1c67a  gcc/testsuite/gcc.target/arm/crypto-vaesimcq_u8.c
*************** e4e7e97477f4d414552607a539ce1961  gcc/te
*** 50192,50208 ****
  620f5be03e0affeed0799e274fb89826  gcc/testsuite/gcc.target/arm/crypto-vsha256su0q_u32.c
  4f6df16d297670bbea63e5d7a02e8888  gcc/testsuite/gcc.target/arm/crypto-vsha256su1q_u32.c
  ed2b50cc975209c386ac092f41e1de71  gcc/testsuite/gcc.target/arm/crypto-vstrq_p128.c
  04180c39197ac7213180f12bdd3f5a76  gcc/testsuite/gcc.target/arm/ctz.c
! f1742ac41a99b2f0943d7d6854b986cc  gcc/testsuite/gcc.target/arm/data-rel-1.c
! 70db373545e04ed49799e3841aa1ec70  gcc/testsuite/gcc.target/arm/data-rel-2.c
! 4939bda8249cec716dbb708bb583ff61  gcc/testsuite/gcc.target/arm/data-rel-3.c
  f7f17803a6b1738e8dc92505f13e319c  gcc/testsuite/gcc.target/arm/di-longlong64-sync-withhelpers.c
  015acf1d0f7ae430c72e3cafb43d433c  gcc/testsuite/gcc.target/arm/di-longlong64-sync-withldrexd.c
  2f22b048d621eda66f5a8e9f56c4d3d7  gcc/testsuite/gcc.target/arm/div64-unwinding.c
  246a53aa20898ebf4576de8d35694ec1  gcc/testsuite/gcc.target/arm/divzero.c
  3a4cc77eebab8f993d561b9747c869c2  gcc/testsuite/gcc.target/arm/eabi1.c
  5277f5d0686be572bc75b1442e1b662e  gcc/testsuite/gcc.target/arm/eliminate.c
! 35daa2bef7020b26f98b70184aa411d4  gcc/testsuite/gcc.target/arm/empty_fiq_handler.c
  78487646e9710e62b0d506909e9588a8  gcc/testsuite/gcc.target/arm/epilog-1.c
  98721ddb43f41d55892aac39cc051828  gcc/testsuite/gcc.target/arm/f16_f64_conv_no_dp.c
  af1ccf2d19987a11d4e08cd9cccf8a69  gcc/testsuite/gcc.target/arm/fixed-point-exec.c
--- 53557,53576 ----
  620f5be03e0affeed0799e274fb89826  gcc/testsuite/gcc.target/arm/crypto-vsha256su0q_u32.c
  4f6df16d297670bbea63e5d7a02e8888  gcc/testsuite/gcc.target/arm/crypto-vsha256su1q_u32.c
  ed2b50cc975209c386ac092f41e1de71  gcc/testsuite/gcc.target/arm/crypto-vstrq_p128.c
+ b9c14ca46b24367094afd644db9eaf9a  gcc/testsuite/gcc.target/arm/csinc-1.c
+ d76eded64cae6085a1584ebc332960fc  gcc/testsuite/gcc.target/arm/csinv-1.c
+ f260318b0e6b2694e5754bdaaf9bcdf2  gcc/testsuite/gcc.target/arm/csneg.c
  04180c39197ac7213180f12bdd3f5a76  gcc/testsuite/gcc.target/arm/ctz.c
! e74ff9f47d550052bb53055028bce7ad  gcc/testsuite/gcc.target/arm/data-rel-1.c
! 8761624a901e2a8e7d1b277c5e540b4c  gcc/testsuite/gcc.target/arm/data-rel-2.c
! 241602a0a3411bdae76bf3985b74a39f  gcc/testsuite/gcc.target/arm/data-rel-3.c
  f7f17803a6b1738e8dc92505f13e319c  gcc/testsuite/gcc.target/arm/di-longlong64-sync-withhelpers.c
  015acf1d0f7ae430c72e3cafb43d433c  gcc/testsuite/gcc.target/arm/di-longlong64-sync-withldrexd.c
  2f22b048d621eda66f5a8e9f56c4d3d7  gcc/testsuite/gcc.target/arm/div64-unwinding.c
  246a53aa20898ebf4576de8d35694ec1  gcc/testsuite/gcc.target/arm/divzero.c
  3a4cc77eebab8f993d561b9747c869c2  gcc/testsuite/gcc.target/arm/eabi1.c
  5277f5d0686be572bc75b1442e1b662e  gcc/testsuite/gcc.target/arm/eliminate.c
! 2de1699de29ac0977ea65d0792fbc1d4  gcc/testsuite/gcc.target/arm/empty_fiq_handler.c
  78487646e9710e62b0d506909e9588a8  gcc/testsuite/gcc.target/arm/epilog-1.c
  98721ddb43f41d55892aac39cc051828  gcc/testsuite/gcc.target/arm/f16_f64_conv_no_dp.c
  af1ccf2d19987a11d4e08cd9cccf8a69  gcc/testsuite/gcc.target/arm/fixed-point-exec.c
*************** e95ad2780e346935674e8e065a322d1d  gcc/te
*** 50214,50220 ****
  220c0d4f4cad22e6687747e0fe55f267  gcc/testsuite/gcc.target/arm/fmaxmin.c
  a1182e17a398d2114e6f9d6156618a24  gcc/testsuite/gcc.target/arm/fmaxmin.x
  2837a07778aef449950a3368be9791fe  gcc/testsuite/gcc.target/arm/fp16-aapcs-1.c
! 2d68aa8c43613cd899cc16df388c11e7  gcc/testsuite/gcc.target/arm/fp16-aapcs-2.c
  35553655c6f980a60e7c1f3cc0b41685  gcc/testsuite/gcc.target/arm/fp16-aapcs-3.c
  f8d5e67f17aad354a491cc8f84d1eb43  gcc/testsuite/gcc.target/arm/fp16-aapcs-4.c
  f7e509420aab463592a3e5d54b6c6b8c  gcc/testsuite/gcc.target/arm/fp16-builtins-1.c
--- 53582,53588 ----
  220c0d4f4cad22e6687747e0fe55f267  gcc/testsuite/gcc.target/arm/fmaxmin.c
  a1182e17a398d2114e6f9d6156618a24  gcc/testsuite/gcc.target/arm/fmaxmin.x
  2837a07778aef449950a3368be9791fe  gcc/testsuite/gcc.target/arm/fp16-aapcs-1.c
! 881ecf60a322e5ee074353b003f87c28  gcc/testsuite/gcc.target/arm/fp16-aapcs-2.c
  35553655c6f980a60e7c1f3cc0b41685  gcc/testsuite/gcc.target/arm/fp16-aapcs-3.c
  f8d5e67f17aad354a491cc8f84d1eb43  gcc/testsuite/gcc.target/arm/fp16-aapcs-4.c
  f7e509420aab463592a3e5d54b6c6b8c  gcc/testsuite/gcc.target/arm/fp16-builtins-1.c
*************** d4443bdada9e4e3255926d63fbf8a076  gcc/te
*** 50286,50298 ****
  771012b8908e8619d0619b8ab08c00bc  gcc/testsuite/gcc.target/arm/fuse-caller-save.c
  0b800f1c07afa3e06b56f8644fe52ba0  gcc/testsuite/gcc.target/arm/g2.c
  cb9e119b328b5c2a1e304f019876ecad  gcc/testsuite/gcc.target/arm/get_address_cost_aligned_max_offset.c
! 4498a9dbcc6a92e181fde32cbf511939  gcc/testsuite/gcc.target/arm/handler-align.c
! 7a9170beee6aed6d6c82cfce876aeeb7  gcc/testsuite/gcc.target/arm/headmerge-1.c
! 4b9f02224346043bca551bf81124f90b  gcc/testsuite/gcc.target/arm/headmerge-2.c
  b7fc1639bee153568add250d53ea751f  gcc/testsuite/gcc.target/arm/identical-invariants.c
  6b37d9e567d7851e4e037dc6ffb87d9c  gcc/testsuite/gcc.target/arm/ifcvt-size-check.c
! 8dfb5b36ef5ec04b27da2f242db0e6cb  gcc/testsuite/gcc.target/arm/interrupt-1.c
! 87845a61809465e1f104fefc1a54ad68  gcc/testsuite/gcc.target/arm/interrupt-2.c
  5fb126c6d9486e40aebcb4051dcefd2a  gcc/testsuite/gcc.target/arm/iordi3-opt.c
  942d9efedfb779e0de45df976f1585de  gcc/testsuite/gcc.target/arm/iordi_notdi-1.c
  550f206a7b7560c0e3c01b46d6d1d81f  gcc/testsuite/gcc.target/arm/its.c
--- 53654,53666 ----
  771012b8908e8619d0619b8ab08c00bc  gcc/testsuite/gcc.target/arm/fuse-caller-save.c
  0b800f1c07afa3e06b56f8644fe52ba0  gcc/testsuite/gcc.target/arm/g2.c
  cb9e119b328b5c2a1e304f019876ecad  gcc/testsuite/gcc.target/arm/get_address_cost_aligned_max_offset.c
! 12359868a59ebf7bf8463feb3bb796ef  gcc/testsuite/gcc.target/arm/handler-align.c
! ecf3e369bf7ea3b785fa7c81fca39ca9  gcc/testsuite/gcc.target/arm/headmerge-1.c
! 0e04489397aa1c1db41d2fe6d47ed574  gcc/testsuite/gcc.target/arm/headmerge-2.c
  b7fc1639bee153568add250d53ea751f  gcc/testsuite/gcc.target/arm/identical-invariants.c
  6b37d9e567d7851e4e037dc6ffb87d9c  gcc/testsuite/gcc.target/arm/ifcvt-size-check.c
! 8584a9f991443ef7f54d4d5430591db3  gcc/testsuite/gcc.target/arm/interrupt-1.c
! d22bd89adb71b05462d565b8be4d3b3c  gcc/testsuite/gcc.target/arm/interrupt-2.c
  5fb126c6d9486e40aebcb4051dcefd2a  gcc/testsuite/gcc.target/arm/iordi3-opt.c
  942d9efedfb779e0de45df976f1585de  gcc/testsuite/gcc.target/arm/iordi_notdi-1.c
  550f206a7b7560c0e3c01b46d6d1d81f  gcc/testsuite/gcc.target/arm/its.c
*************** ed8f53ad845cace075e82259961588c1  gcc/te
*** 50301,50311 ****
  64a2a899a5a2180399e5178ea86adc4e  gcc/testsuite/gcc.target/arm/ivopts-4.c
  07838a70a70c703269fa0783335a34b7  gcc/testsuite/gcc.target/arm/ivopts-5.c
  371c001d833d940cd40d8aa3fee9915d  gcc/testsuite/gcc.target/arm/ivopts-orig_biv-inc.c
! 9631134ccce0e6d05576ea7e0327f863  gcc/testsuite/gcc.target/arm/ivopts.c
  629878f590b6027b463fdc14a2b3bd9f  gcc/testsuite/gcc.target/arm/lceil-vcvt_1.c
  a38561d69fa262860777d4da466d538e  gcc/testsuite/gcc.target/arm/ldrd-strd-offset.c
  02b9352efc9d3dded38ac3a6281bcdd1  gcc/testsuite/gcc.target/arm/ldrd-strd-pair-1.c
  cd5d776718748bd9e5c15d1b763fac4a  gcc/testsuite/gcc.target/arm/lfloor-vcvt_1.c
  bf821309d2cd93b8c0d6b0704742bc45  gcc/testsuite/gcc.target/arm/long-calls-1.c
  42a78271420e5c48df61165376eb067e  gcc/testsuite/gcc.target/arm/long-calls-2.c
  045075d4c4f653f51cab15b6c12b3e09  gcc/testsuite/gcc.target/arm/long-calls-3.c
--- 53669,53686 ----
  64a2a899a5a2180399e5178ea86adc4e  gcc/testsuite/gcc.target/arm/ivopts-4.c
  07838a70a70c703269fa0783335a34b7  gcc/testsuite/gcc.target/arm/ivopts-5.c
  371c001d833d940cd40d8aa3fee9915d  gcc/testsuite/gcc.target/arm/ivopts-orig_biv-inc.c
! 47af80897bdc9b38e6b5972695e8bd5d  gcc/testsuite/gcc.target/arm/ivopts.c
  629878f590b6027b463fdc14a2b3bd9f  gcc/testsuite/gcc.target/arm/lceil-vcvt_1.c
  a38561d69fa262860777d4da466d538e  gcc/testsuite/gcc.target/arm/ldrd-strd-offset.c
  02b9352efc9d3dded38ac3a6281bcdd1  gcc/testsuite/gcc.target/arm/ldrd-strd-pair-1.c
  cd5d776718748bd9e5c15d1b763fac4a  gcc/testsuite/gcc.target/arm/lfloor-vcvt_1.c
+ 9601335a3815b007bac5d552972f1d2b  gcc/testsuite/gcc.target/arm/lob.h
+ b195fdde12f3a380cee5654476ebd557  gcc/testsuite/gcc.target/arm/lob1.c
+ 21a0d38f913fade2adb9df1b375a0b15  gcc/testsuite/gcc.target/arm/lob2.c
+ 0199e3b94d4196e8407d3a53055b4cd9  gcc/testsuite/gcc.target/arm/lob3.c
+ bfc9c68e78fd72e08127df9f2211f1b7  gcc/testsuite/gcc.target/arm/lob4.c
+ 13689282306d2e12a0fe9eb87e9ecae4  gcc/testsuite/gcc.target/arm/lob5.c
+ 4daa69f4edc4593e1a2c62a3ee7f44dc  gcc/testsuite/gcc.target/arm/lob6.c
  bf821309d2cd93b8c0d6b0704742bc45  gcc/testsuite/gcc.target/arm/long-calls-1.c
  42a78271420e5c48df61165376eb067e  gcc/testsuite/gcc.target/arm/long-calls-2.c
  045075d4c4f653f51cab15b6c12b3e09  gcc/testsuite/gcc.target/arm/long-calls-3.c
*************** bf821309d2cd93b8c0d6b0704742bc45  gcc/te
*** 50313,50323 ****
  bda0b982c40bee2fd28b1750fa6bc2bf  gcc/testsuite/gcc.target/arm/lp1189445.c
  c0ebea9052f8cd9253ee6ff358df5e52  gcc/testsuite/gcc.target/arm/lp1243022.c
  b4f8ad85c07f7be61a90747a85bd0be4  gcc/testsuite/gcc.target/arm/lround-vcvt_1.c
! 9fbb690800c87d28d230733cce61b83a  gcc/testsuite/gcc.target/arm/lto/lto.exp
  90bf73bda834641a0bea89584effe1a7  gcc/testsuite/gcc.target/arm/lto/pr61123-enum-size_0.c
  636cbd6b191957f3f94b3734e71688a5  gcc/testsuite/gcc.target/arm/lto/pr61123-enum-size_1.c
  0fe8e2ad477327f013e80d0961d711a8  gcc/testsuite/gcc.target/arm/lto/pr65837-attr_0.c
  9c1d0bd8b530eb85b5c816dc0a3e7423  gcc/testsuite/gcc.target/arm/lto/pr65837_0.c
  bbec60a3809be2a64fe690e41e9880fa  gcc/testsuite/gcc.target/arm/macro_defs0.c
  847b15c15d7e48b10ccc606bb2503847  gcc/testsuite/gcc.target/arm/macro_defs1.c
  124b8184e718e7e16799430a99e76983  gcc/testsuite/gcc.target/arm/macro_defs2.c
--- 53688,53700 ----
  bda0b982c40bee2fd28b1750fa6bc2bf  gcc/testsuite/gcc.target/arm/lp1189445.c
  c0ebea9052f8cd9253ee6ff358df5e52  gcc/testsuite/gcc.target/arm/lp1243022.c
  b4f8ad85c07f7be61a90747a85bd0be4  gcc/testsuite/gcc.target/arm/lround-vcvt_1.c
! 88ac1d859c35e2636b2b08619f2db732  gcc/testsuite/gcc.target/arm/lto/lto.exp
  90bf73bda834641a0bea89584effe1a7  gcc/testsuite/gcc.target/arm/lto/pr61123-enum-size_0.c
  636cbd6b191957f3f94b3734e71688a5  gcc/testsuite/gcc.target/arm/lto/pr61123-enum-size_1.c
  0fe8e2ad477327f013e80d0961d711a8  gcc/testsuite/gcc.target/arm/lto/pr65837-attr_0.c
  9c1d0bd8b530eb85b5c816dc0a3e7423  gcc/testsuite/gcc.target/arm/lto/pr65837_0.c
+ 5af2b12c815bb15417b5f4b3667368b3  gcc/testsuite/gcc.target/arm/lto/pr96939_0.c
+ 54703ebb10b5ea0e3b0410412157221f  gcc/testsuite/gcc.target/arm/lto/pr96939_1.c
  bbec60a3809be2a64fe690e41e9880fa  gcc/testsuite/gcc.target/arm/macro_defs0.c
  847b15c15d7e48b10ccc606bb2503847  gcc/testsuite/gcc.target/arm/macro_defs1.c
  124b8184e718e7e16799430a99e76983  gcc/testsuite/gcc.target/arm/macro_defs2.c
*************** bbec60a3809be2a64fe690e41e9880fa  gcc/te
*** 50326,50332 ****
  7588a0bf83f9bb0e0fbf403314a1ff95  gcc/testsuite/gcc.target/arm/memcpy-aligned-1.c
  18a42aeddd7c110c5ef42f3d0677e7db  gcc/testsuite/gcc.target/arm/memset-inline-1.c
  ba8ade52fcec08e9fc2a71480fa7129b  gcc/testsuite/gcc.target/arm/memset-inline-10.c
! 6a90901c84e668fca5e0ded6074bb855  gcc/testsuite/gcc.target/arm/memset-inline-2.c
  6f09b84ea67795ebbef89da0c415d6bb  gcc/testsuite/gcc.target/arm/memset-inline-3.c
  76518d1207324e80e76b069d5e002d11  gcc/testsuite/gcc.target/arm/memset-inline-4.c
  f93cc6f36b91e242be995367b8846db9  gcc/testsuite/gcc.target/arm/memset-inline-5.c
--- 53703,53709 ----
  7588a0bf83f9bb0e0fbf403314a1ff95  gcc/testsuite/gcc.target/arm/memcpy-aligned-1.c
  18a42aeddd7c110c5ef42f3d0677e7db  gcc/testsuite/gcc.target/arm/memset-inline-1.c
  ba8ade52fcec08e9fc2a71480fa7129b  gcc/testsuite/gcc.target/arm/memset-inline-10.c
! 420d3ab5e5580dbb7192787ab7a30f11  gcc/testsuite/gcc.target/arm/memset-inline-2.c
  6f09b84ea67795ebbef89da0c415d6bb  gcc/testsuite/gcc.target/arm/memset-inline-3.c
  76518d1207324e80e76b069d5e002d11  gcc/testsuite/gcc.target/arm/memset-inline-4.c
  f93cc6f36b91e242be995367b8846db9  gcc/testsuite/gcc.target/arm/memset-inline-5.c
*************** c6b1f31177a60b170040e0eddc1787ba  gcc/te
*** 50347,50353 ****
  7b0294d6197317c05cb3accfdbee95d9  gcc/testsuite/gcc.target/arm/movhi_movw.c
  484b6553c962caa2f0746fa65de739e8  gcc/testsuite/gcc.target/arm/movsi_movt.c
  190ffba53357096715f051384c38965b  gcc/testsuite/gcc.target/arm/movsi_movw.c
! e3fc299c79d31c0ede5f4138d3d3175f  gcc/testsuite/gcc.target/arm/multilib.exp
  0cb82b3c13272daae33b86a0b70c3ab4  gcc/testsuite/gcc.target/arm/mve/intrinsics/asrl.c
  f6c2f6c35390e01c453145baae48aa6b  gcc/testsuite/gcc.target/arm/mve/intrinsics/lsll.c
  8742cb74c36fe44acebeaf852842a44d  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve-vldstr16-no-writeback.c
--- 53724,53730 ----
  7b0294d6197317c05cb3accfdbee95d9  gcc/testsuite/gcc.target/arm/movhi_movw.c
  484b6553c962caa2f0746fa65de739e8  gcc/testsuite/gcc.target/arm/movsi_movt.c
  190ffba53357096715f051384c38965b  gcc/testsuite/gcc.target/arm/movsi_movw.c
! 5b75a6247d3f89f1c873f84982e0c47b  gcc/testsuite/gcc.target/arm/multilib.exp
  0cb82b3c13272daae33b86a0b70c3ab4  gcc/testsuite/gcc.target/arm/mve/intrinsics/asrl.c
  f6c2f6c35390e01c453145baae48aa6b  gcc/testsuite/gcc.target/arm/mve/intrinsics/lsll.c
  8742cb74c36fe44acebeaf852842a44d  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve-vldstr16-no-writeback.c
*************** a23662cdce162388aafacd6bd5ae8401  gcc/te
*** 50358,50365 ****
  caacbb41866e75cc6212745b2a92067c  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fpu2.c
  9b8afb9ef88ec69d20f93267dfc70f09  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fpu3.c
  9e92f2f97d3d1ab5f56f69c957ed79d2  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_immediates_1_n.c
! 55b31f7d9d7f52f3323b2f2f6e4d7a51  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_libcall1.c
! bbbd9db5da6bc910f8edb068a102d88d  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_libcall2.c
  a55cf229f5fac9dc5cf365b9fd80f3cf  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_load_from_array.c
  14c972daa06cbb9428714757f2db5d63  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_move_gpr_to_gpr.c
  eca0b9cdc77f8bcef8a2dc068fb71496  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts1.c
--- 53735,53742 ----
  caacbb41866e75cc6212745b2a92067c  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fpu2.c
  9b8afb9ef88ec69d20f93267dfc70f09  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fpu3.c
  9e92f2f97d3d1ab5f56f69c957ed79d2  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_immediates_1_n.c
! 5d5bd4c946d0704e8f9c836b2e2a0f59  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_libcall1.c
! 5c78178c71e076f2f1c218053a2f991b  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_libcall2.c
  a55cf229f5fac9dc5cf365b9fd80f3cf  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_load_from_array.c
  14c972daa06cbb9428714757f2db5d63  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_move_gpr_to_gpr.c
  eca0b9cdc77f8bcef8a2dc068fb71496  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts1.c
*************** db40c3bf601f9b12691129c0e8e70dae  gcc/te
*** 50384,50396 ****
  ed089be1753df1b68f1691f9880adaaf  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vec_extracts_from_memory.c
  6390245b323f08a5431e32f023949d47  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float.c
  87de72d7e7f6373ba495adffd6e48a13  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float1.c
! 3bb15d54fbb10d61e919f307ea21ff57  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float2.c
! a38c04c403ec70567fb7b7f75a2d8353  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int.c
  07d592a99289cdac9e39c6ddf828c69a  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int1.c
  6849878c965bf4138b728c97c5a56e38  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int2.c
! d4bed3d9ac7b79bf1ac3ac7e5277ff36  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint.c
! 63a665321b64ed4f3ada2052bf167d50  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint1.c
! e29161e0c61f6016a05c809de04b9244  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint2.c
  87775cfe2daefb41beab415692b24339  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u16.c
  2681dd7629582cca6315bf7f1ff28ba5  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u32.c
  8709512956f087c96d79a9f4e7bfddd2  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u8.c
--- 53761,53773 ----
  ed089be1753df1b68f1691f9880adaaf  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vec_extracts_from_memory.c
  6390245b323f08a5431e32f023949d47  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float.c
  87de72d7e7f6373ba495adffd6e48a13  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float1.c
! 3bd2c490e5ae5500ceb8a41854ca1229  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_float2.c
! 4113542aed46459ac7bf64e73af4186b  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int.c
  07d592a99289cdac9e39c6ddf828c69a  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int1.c
  6849878c965bf4138b728c97c5a56e38  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_int2.c
! 069c08fd0fcab509146f627d08e18c0a  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint.c
! 77d83324236c668a785ce5ede9121bf0  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint1.c
! 93021582c80b4770ce7f4bad688c5517  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vector_uint2.c
  87775cfe2daefb41beab415692b24339  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u16.c
  2681dd7629582cca6315bf7f1ff28ba5  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u32.c
  8709512956f087c96d79a9f4e7bfddd2  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vidupq_m_n_u8.c
*************** c879488b4e9c56c955efe3d925ec2ca5  gcc/te
*** 50453,50459 ****
  4b0efd440cdb0d7b7cd6b447ef77e2eb  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset_p.c
  08cf164f5014eeb82272fbef22e3878f  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vstr.c
  4211e73819bb661ddd18271cf8dab0e5  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vstr_p.c
! 98744602d4ec4fddefbd4834f40dddbf  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr97327.c
  32beda1d8b877842f131d22f6fedf40a  gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshr.c
  a4d907ca6afd778aa767f352e05785f5  gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshrl_sat48.c
  e49e7d0224d2de2b6eb25c3a244cd391  gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshrl_sat64.c
--- 53830,53836 ----
  4b0efd440cdb0d7b7cd6b447ef77e2eb  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset_p.c
  08cf164f5014eeb82272fbef22e3878f  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vstr.c
  4211e73819bb661ddd18271cf8dab0e5  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vstr_p.c
! a8d3fa3695fbd309660950fb5598ecaf  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr97327.c
  32beda1d8b877842f131d22f6fedf40a  gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshr.c
  a4d907ca6afd778aa767f352e05785f5  gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshrl_sat48.c
  e49e7d0224d2de2b6eb25c3a244cd391  gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshrl_sat64.c
*************** a3ea29dedcd39d4818bb10833b122c5f  gcc/te
*** 51234,51244 ****
  67c0f0f12ed1841d0535a02197d572ce  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c
  9471c13e90437ca90cf4f4f5bce88e51  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c
  d325656870753b35dec56b9f0cf7bda1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c
! 08a5f22dac6816a5f952dc0579dacc23  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c
  75eb3b284cddf86a4809bf27d3b57cba  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c
  3b5917f146f443b6f2837c1a338280e0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c
  4a21845f965b27642d683f02225dc9a3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c
! 323550a959dbfdb438a657f9a0d5a523  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c
  8c91d50c42f686ed094e5ea5f267bd22  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c
  d87efbead358ad1516f1f5c100835423  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c
  871c875f259858673bbbc355f3d35ba4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c
--- 54611,54621 ----
  67c0f0f12ed1841d0535a02197d572ce  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c
  9471c13e90437ca90cf4f4f5bce88e51  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c
  d325656870753b35dec56b9f0cf7bda1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c
! 118164a375f651a3817e6fa89c2b9482  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c
  75eb3b284cddf86a4809bf27d3b57cba  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c
  3b5917f146f443b6f2837c1a338280e0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c
  4a21845f965b27642d683f02225dc9a3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c
! a3b7d26a1d14371254a3c36462110c35  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c
  8c91d50c42f686ed094e5ea5f267bd22  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c
  d87efbead358ad1516f1f5c100835423  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c
  871c875f259858673bbbc355f3d35ba4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c
*************** ac9fd46cd935ff27e6ddeb6dd6e1eb72  gcc/te
*** 52340,52355 ****
  d69b18e61cbbcebdf7ffacdb71da0471  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u16.c
  c13632a571fe9b99220cb4398b494b45  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u32.c
  be95d2aeac3eed9ebf603c5b2e32bd80  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u8.c
! a572952e93ce57645648655116ad9cb8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_f16.c
! bcfa540c8d2e411a74041ac8bc0d77e8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_f32.c
! 1e89553b6e44b5c7a81fdffd6d0c4c85  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s16.c
! d6bdfcd912f2b739787f5b5523a740cf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s32.c
! 97eb3df83a178b84199c3355167295c4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s64.c
! af3bd1c5c075654f63f06d0b3c545d99  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s8.c
! 527ec5525c198adee7ce8831007dd158  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u16.c
! 8509b0eb0a87d3a5b695402895150c45  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u32.c
! 32daacd6e1e441e057813f959ad9d95c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u64.c
! 8db7611477d8445c012381917512d95c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u8.c
  bb3ff828cb16ce2ae8782c723af4a5a1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_m_s8.c
  9b0eb74fb11a89d604858ce07aba40c4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_m_u8.c
  c6f16ddd81e549697ae6c072b13a6b91  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_s8.c
--- 55717,55732 ----
  d69b18e61cbbcebdf7ffacdb71da0471  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u16.c
  c13632a571fe9b99220cb4398b494b45  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u32.c
  be95d2aeac3eed9ebf603c5b2e32bd80  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u8.c
! b4fcdf3cb05b2bff3bb9a856565b84cf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_f16.c
! 9ef945e29fc71ecd898a3aae88ba1da6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_f32.c
! 312fb2c034e3b25ce55448c9a1dc1a9d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s16.c
! 37cd639717302416cb16b97b7dad46fe  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s32.c
! bd6e3d6f060236240f596c3197e85897  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s64.c
! a18aae684b673c91fef0d12f972a0365  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s8.c
! c4c7d66036ac40ceb8fcc46da005c425  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u16.c
! e6d94886301be09386ca599d57548632  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u32.c
! 9dba395cdb1523cef0790f9058cccdcf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u64.c
! cfb22723ed9dab5245a9330a48ab41b5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u8.c
  bb3ff828cb16ce2ae8782c723af4a5a1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_m_s8.c
  9b0eb74fb11a89d604858ce07aba40c4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_m_u8.c
  c6f16ddd81e549697ae6c072b13a6b91  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev16q_s8.c
*************** ef8c61e0b01e798514442f95fdea7a49  gcc/te
*** 52565,52575 ****
  b10cfdb237776099c4180833e3c5ba65  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32.c
  619b5a8a36d7d063f7ce43cc2eff5560  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s16.c
  905227377ead65a55eed190a9d85e9a9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s32.c
! ef3a54fb164c2101079a2a0642e3ef68  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c
  659833bfb3162e1c1facc6b8a92b4f93  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s8.c
  8f7269908b469dfc3407b1a8d980f69b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u16.c
  dc5c97486293aabf2938431e5a6a104c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u32.c
! 9d11b86fe7f190f5c0ee2660c05c6540  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c
  236fbb4d62a1a18efa9ec3ac3d4a5791  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u8.c
  a21c5da0c94b3574447973ffbf4a95ea  gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s16.c
  7dfc4b4a31c672e09cfda5ef1cf3aa43  gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s32.c
--- 55942,55952 ----
  b10cfdb237776099c4180833e3c5ba65  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32.c
  619b5a8a36d7d063f7ce43cc2eff5560  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s16.c
  905227377ead65a55eed190a9d85e9a9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s32.c
! 453b61d72ac14797e09e2b64733bb3b5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c
  659833bfb3162e1c1facc6b8a92b4f93  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s8.c
  8f7269908b469dfc3407b1a8d980f69b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u16.c
  dc5c97486293aabf2938431e5a6a104c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u32.c
! 04feab40a05196b25738dd6dc329d4aa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c
  236fbb4d62a1a18efa9ec3ac3d4a5791  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u8.c
  a21c5da0c94b3574447973ffbf4a95ea  gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s16.c
  7dfc4b4a31c672e09cfda5ef1cf3aa43  gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s32.c
*************** bc23d7c97ce5cd4d925d2584ba26e8d9  gcc/te
*** 52902,52908 ****
  1b1caac6115bffedba10607ae46ecb1a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c
  64693abb5e7c68051ec591152e6e38bf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int.c
  378b54cba064e27254bece829f5bd660  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c
! 0936ad2e404c63790cbac6217ec1a656  gcc/testsuite/gcc.target/arm/mve/mve.exp
  a27c7480ff5cba860dda5da683bb3b87  gcc/testsuite/gcc.target/arm/naked-1.c
  292c423c2aa66b03398c922259527367  gcc/testsuite/gcc.target/arm/naked-2.c
  2d75e6bd9379b6e090e6104b97434376  gcc/testsuite/gcc.target/arm/negdi-1.c
--- 56279,56285 ----
  1b1caac6115bffedba10607ae46ecb1a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c
  64693abb5e7c68051ec591152e6e38bf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int.c
  378b54cba064e27254bece829f5bd660  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c
! df99f4f46d7a12c1234780d031e1a922  gcc/testsuite/gcc.target/arm/mve/mve.exp
  a27c7480ff5cba860dda5da683bb3b87  gcc/testsuite/gcc.target/arm/naked-1.c
  292c423c2aa66b03398c922259527367  gcc/testsuite/gcc.target/arm/naked-2.c
  2d75e6bd9379b6e090e6104b97434376  gcc/testsuite/gcc.target/arm/negdi-1.c
*************** a27c7480ff5cba860dda5da683bb3b87  gcc/te
*** 52910,52915 ****
--- 56287,56297 ----
  edb7dd474143a399acde02eebf5d6257  gcc/testsuite/gcc.target/arm/negdi-3.c
  a57834afa1e2484def0400d4cc47fb79  gcc/testsuite/gcc.target/arm/negscc_restrict_it.c
  c9c15765077132f5b79ac6af6064736b  gcc/testsuite/gcc.target/arm/neon-combine-sub-abs-into-vabd.c
+ 39a046017f9231f5f1fb71c7171f509c  gcc/testsuite/gcc.target/arm/neon-compare-1.c
+ 06ad35e1c24acefc60f56d71e6d713a8  gcc/testsuite/gcc.target/arm/neon-compare-2.c
+ a5fd6e925166a0a44c3d3583923b7163  gcc/testsuite/gcc.target/arm/neon-compare-3.c
+ 837c7f3f67ba8c6cb474a3f47af080cc  gcc/testsuite/gcc.target/arm/neon-compare-4.c
+ 6983f45566e2c58c0b13a2cd2a1287e9  gcc/testsuite/gcc.target/arm/neon-compare-5.c
  bce9be46a9e956c5fcc66bfb68691f0f  gcc/testsuite/gcc.target/arm/neon-cond-1.c
  3210e1e698eca7930146dc6d6f7b6d9b  gcc/testsuite/gcc.target/arm/neon-for-64bits-1.c
  4f152c0a8f816c0009a5341052e8b922  gcc/testsuite/gcc.target/arm/neon-modes-1.c
*************** f3d90210c9171b42cea09da2c2ca1d30  gcc/te
*** 52931,52939 ****
  02e98dbe521faabf23a3b3072baaae7a  gcc/testsuite/gcc.target/arm/neon-vbics64.c
  6e1d8d380a87bd3b71e1c141740c1446  gcc/testsuite/gcc.target/arm/neon-vbicu64.c
  613ab3a7ccf5da843276fb8a22a3ed8a  gcc/testsuite/gcc.target/arm/neon-vceq_p64.c
! bb1f3994e65e8c9079f6e6a93a919603  gcc/testsuite/gcc.target/arm/neon-vcond-gt.c
! cd25372330ec878392e21f1d102bad41  gcc/testsuite/gcc.target/arm/neon-vcond-ltgt.c
! 4a29456e6ac86ef1682305f6b4d9595b  gcc/testsuite/gcc.target/arm/neon-vcond-unordered.c
  376e0a72e1b6871936fd376185fe2b12  gcc/testsuite/gcc.target/arm/neon-vdup-1.c
  553d2792885b5ab23cd0f3bcb4bdbeff  gcc/testsuite/gcc.target/arm/neon-vdup-10.c
  6edf7dd40c57837940a4997996a15bdf  gcc/testsuite/gcc.target/arm/neon-vdup-11.c
--- 56313,56321 ----
  02e98dbe521faabf23a3b3072baaae7a  gcc/testsuite/gcc.target/arm/neon-vbics64.c
  6e1d8d380a87bd3b71e1c141740c1446  gcc/testsuite/gcc.target/arm/neon-vbicu64.c
  613ab3a7ccf5da843276fb8a22a3ed8a  gcc/testsuite/gcc.target/arm/neon-vceq_p64.c
! 6dfa8ed65d9289d4653bc11d8cf9abbb  gcc/testsuite/gcc.target/arm/neon-vcond-gt.c
! 0857fe00ab2408bac0e93f46045407b8  gcc/testsuite/gcc.target/arm/neon-vcond-ltgt.c
! d73331f9cdf2ab35d53b7f5cd0acb6ca  gcc/testsuite/gcc.target/arm/neon-vcond-unordered.c
  376e0a72e1b6871936fd376185fe2b12  gcc/testsuite/gcc.target/arm/neon-vdup-1.c
  553d2792885b5ab23cd0f3bcb4bdbeff  gcc/testsuite/gcc.target/arm/neon-vdup-10.c
  6edf7dd40c57837940a4997996a15bdf  gcc/testsuite/gcc.target/arm/neon-vdup-11.c
*************** d8b987b87850e95ff360d2e9cb8b68e7  gcc/te
*** 53037,53043 ****
  23fca63696cb34a1eff4c0826111a6c5  gcc/testsuite/gcc.target/arm/pr43698.c
  ecfd9e0633dd2f87b4224cd1d4ba57e7  gcc/testsuite/gcc.target/arm/pr43920-1.c
  37258379bff72bbbd801a71215ed8a2d  gcc/testsuite/gcc.target/arm/pr43920-2.c
! 2e80490f859c7c45c54e8df3febd1033  gcc/testsuite/gcc.target/arm/pr44788.c
  aeba150bfdf5a821a1b2043e1f4af966  gcc/testsuite/gcc.target/arm/pr44999.c
  a4c4698a5fe84412c8b996b75146c2b1  gcc/testsuite/gcc.target/arm/pr45094.c
  6bf421f50d2e131c53639d3bf5eae6ab  gcc/testsuite/gcc.target/arm/pr45447.c
--- 56419,56425 ----
  23fca63696cb34a1eff4c0826111a6c5  gcc/testsuite/gcc.target/arm/pr43698.c
  ecfd9e0633dd2f87b4224cd1d4ba57e7  gcc/testsuite/gcc.target/arm/pr43920-1.c
  37258379bff72bbbd801a71215ed8a2d  gcc/testsuite/gcc.target/arm/pr43920-2.c
! cef1284423aca787e49645e6afbe043b  gcc/testsuite/gcc.target/arm/pr44788.c
  aeba150bfdf5a821a1b2043e1f4af966  gcc/testsuite/gcc.target/arm/pr44999.c
  a4c4698a5fe84412c8b996b75146c2b1  gcc/testsuite/gcc.target/arm/pr45094.c
  6bf421f50d2e131c53639d3bf5eae6ab  gcc/testsuite/gcc.target/arm/pr45447.c
*************** ec5b96b8283a62c791f40ad2c7334d85  gcc/te
*** 53057,53067 ****
  1b0c11d109e5c1c7dd206ab3c72d6e20  gcc/testsuite/gcc.target/arm/pr50099.c
  d457a4577fb934ac2b4fc272aa7a0ab9  gcc/testsuite/gcc.target/arm/pr50305.c
  979c3871e985af269e6e0679b4805f64  gcc/testsuite/gcc.target/arm/pr50318-1.c
! 0d4abce24171a60973cf94cfc17e854a  gcc/testsuite/gcc.target/arm/pr51534.c
  e24904ecd70180168ee75db6eb7b3461  gcc/testsuite/gcc.target/arm/pr51835.c
  3f2081d2849855a22f0db1f6ba620f00  gcc/testsuite/gcc.target/arm/pr51915.c
! de4d6bf80895560fad6785bc146b6af8  gcc/testsuite/gcc.target/arm/pr51968.c
! 8cd5c912cdaf14dcbc5ba6508b78feef  gcc/testsuite/gcc.target/arm/pr52006.c
  522c729f0ead031dcc62b39370120c18  gcc/testsuite/gcc.target/arm/pr52375.c
  de6431d80bdeb202e278026554164376  gcc/testsuite/gcc.target/arm/pr52633.c
  47ff4634157d04ecbab7fc4bc688b62d  gcc/testsuite/gcc.target/arm/pr52686.c
--- 56439,56449 ----
  1b0c11d109e5c1c7dd206ab3c72d6e20  gcc/testsuite/gcc.target/arm/pr50099.c
  d457a4577fb934ac2b4fc272aa7a0ab9  gcc/testsuite/gcc.target/arm/pr50305.c
  979c3871e985af269e6e0679b4805f64  gcc/testsuite/gcc.target/arm/pr50318-1.c
! 1de4a5d312b8c0fe1e0a7be7d27d7296  gcc/testsuite/gcc.target/arm/pr51534.c
  e24904ecd70180168ee75db6eb7b3461  gcc/testsuite/gcc.target/arm/pr51835.c
  3f2081d2849855a22f0db1f6ba620f00  gcc/testsuite/gcc.target/arm/pr51915.c
! 8ea3e4ba594d4b6bdc19056d44672bca  gcc/testsuite/gcc.target/arm/pr51968.c
! 707efa80c07fd4b62e7dc6723cdbaf77  gcc/testsuite/gcc.target/arm/pr52006.c
  522c729f0ead031dcc62b39370120c18  gcc/testsuite/gcc.target/arm/pr52375.c
  de6431d80bdeb202e278026554164376  gcc/testsuite/gcc.target/arm/pr52633.c
  47ff4634157d04ecbab7fc4bc688b62d  gcc/testsuite/gcc.target/arm/pr52686.c
*************** f959f5c10e21a15d658780237062fe2c  gcc/te
*** 53082,53088 ****
  3549acaa8c64d511367164d1fce14e18  gcc/testsuite/gcc.target/arm/pr58578.c
  dc9b43e8f5f7f2502fa16b8711f16a88  gcc/testsuite/gcc.target/arm/pr58784.c
  d3cbb4759ca5dfc7c1f380d7a5b63458  gcc/testsuite/gcc.target/arm/pr59575.c
! 524c0b4ff93c05138ef45191dafc6a34  gcc/testsuite/gcc.target/arm/pr59858.c
  39260c40447562253e3ad118b62c162f  gcc/testsuite/gcc.target/arm/pr59896.c
  d02477312e978591c331d9c0ba4f9f70  gcc/testsuite/gcc.target/arm/pr59923.c
  a24a83b67035822b706f3721d2778fcd  gcc/testsuite/gcc.target/arm/pr60264.c
--- 56464,56470 ----
  3549acaa8c64d511367164d1fce14e18  gcc/testsuite/gcc.target/arm/pr58578.c
  dc9b43e8f5f7f2502fa16b8711f16a88  gcc/testsuite/gcc.target/arm/pr58784.c
  d3cbb4759ca5dfc7c1f380d7a5b63458  gcc/testsuite/gcc.target/arm/pr59575.c
! 0d695763a5ab39b1576c1db1efd0c2ec  gcc/testsuite/gcc.target/arm/pr59858.c
  39260c40447562253e3ad118b62c162f  gcc/testsuite/gcc.target/arm/pr59896.c
  d02477312e978591c331d9c0ba4f9f70  gcc/testsuite/gcc.target/arm/pr59923.c
  a24a83b67035822b706f3721d2778fcd  gcc/testsuite/gcc.target/arm/pr60264.c
*************** e5aafcaef63ec87ca861c2c3df04f753  gcc/te
*** 53127,53133 ****
  32fee62df6d98765a5508d0d96c9eb65  gcc/testsuite/gcc.target/arm/pr69904.c
  e63928ba458ed28f5f26f652175d8386  gcc/testsuite/gcc.target/arm/pr70278.c
  7b0dff48f8c89cbeb037deb0439e2888  gcc/testsuite/gcc.target/arm/pr70496.c
! ff6d3447dd953e83710e9fb6e38de667  gcc/testsuite/gcc.target/arm/pr70830.c
  dc5c76ff01c564582222b3a2ea1fc21c  gcc/testsuite/gcc.target/arm/pr71056.c
  f54ef63fcfe6438f5564d5ecc3ab119f  gcc/testsuite/gcc.target/arm/pr71778.c
  945975f95cabe460e370e69421e0d381  gcc/testsuite/gcc.target/arm/pr7676.c
--- 56509,56515 ----
  32fee62df6d98765a5508d0d96c9eb65  gcc/testsuite/gcc.target/arm/pr69904.c
  e63928ba458ed28f5f26f652175d8386  gcc/testsuite/gcc.target/arm/pr70278.c
  7b0dff48f8c89cbeb037deb0439e2888  gcc/testsuite/gcc.target/arm/pr70496.c
! 0b68ca4bfc428f042e286b8dd314ee42  gcc/testsuite/gcc.target/arm/pr70830.c
  dc5c76ff01c564582222b3a2ea1fc21c  gcc/testsuite/gcc.target/arm/pr71056.c
  f54ef63fcfe6438f5564d5ecc3ab119f  gcc/testsuite/gcc.target/arm/pr71778.c
  945975f95cabe460e370e69421e0d381  gcc/testsuite/gcc.target/arm/pr7676.c
*************** a87cd0f693aebc8497bfb2473f178e4c  gcc/te
*** 53138,53144 ****
  7cc16a1eff8b909a57b34f907cef172a  gcc/testsuite/gcc.target/arm/pr77933-2.c
  68c26348d2a6791f295710024aba5c21  gcc/testsuite/gcc.target/arm/pr78041.c
  7ff23bd8b3754acf52c8f22104b1f9b6  gcc/testsuite/gcc.target/arm/pr78255-1.c
! 4fffc267d9c8775478c72209db83f52e  gcc/testsuite/gcc.target/arm/pr78255-2.c
  042f604ace69e00ceb1db3ccd28a79e4  gcc/testsuite/gcc.target/arm/pr78353-1.c
  b79c2d18ae7e330b89264897e8430bf4  gcc/testsuite/gcc.target/arm/pr78353-2.c
  d818fe5994fb2978716480bd4e16254f  gcc/testsuite/gcc.target/arm/pr79058.c
--- 56520,56526 ----
  7cc16a1eff8b909a57b34f907cef172a  gcc/testsuite/gcc.target/arm/pr77933-2.c
  68c26348d2a6791f295710024aba5c21  gcc/testsuite/gcc.target/arm/pr78041.c
  7ff23bd8b3754acf52c8f22104b1f9b6  gcc/testsuite/gcc.target/arm/pr78255-1.c
! 45646c314a5e5bf7cade479b55622520  gcc/testsuite/gcc.target/arm/pr78255-2.c
  042f604ace69e00ceb1db3ccd28a79e4  gcc/testsuite/gcc.target/arm/pr78353-1.c
  b79c2d18ae7e330b89264897e8430bf4  gcc/testsuite/gcc.target/arm/pr78353-2.c
  d818fe5994fb2978716480bd4e16254f  gcc/testsuite/gcc.target/arm/pr79058.c
*************** eb13a55564e5e8fb2982994c3b17a08c  gcc/te
*** 53169,53175 ****
--- 56551,56572 ----
  a4dddc54737b0b03cf2909b16a50f905  gcc/testsuite/gcc.target/arm/pr91603.c
  b9de14b057556565fd0ad59ac1cd4e7e  gcc/testsuite/gcc.target/arm/pr91684.c
  e176eff84ec1966606dbac1ac50fc431  gcc/testsuite/gcc.target/arm/pr91816.c
+ 8f42da6fb2eed5d3d9283c89196a6d27  gcc/testsuite/gcc.target/arm/pr94743-1-hard.c
+ b70e117682ea2c3ea32336823df49031  gcc/testsuite/gcc.target/arm/pr94743-1-soft.c
+ 1e385031e64f7bfec46364042cf7182c  gcc/testsuite/gcc.target/arm/pr94743-1-softfp.c
+ 9501a79b467bf20c2c01185379068eb2  gcc/testsuite/gcc.target/arm/pr94743-2.c
+ 6bc22f78c4fe1fef4974e188e5ab6e35  gcc/testsuite/gcc.target/arm/pr94743-3.c
+ d82900f431e8901b0c85c6ec6602768b  gcc/testsuite/gcc.target/arm/pr95646.c
  fe5e1dadd9ea1e8cccb81773046e8da9  gcc/testsuite/gcc.target/arm/pr97528.c
+ 0acfbc30986a6ae2c5d696f4f52554ec  gcc/testsuite/gcc.target/arm/pr97872.c
+ 5a0206dfb3c3b92c728997ed8090982f  gcc/testsuite/gcc.target/arm/pr97969.c
+ b9fad821092cbb06ef1e52d199eee0ec  gcc/testsuite/gcc.target/arm/pr98636.c
+ 8e9eaa5b1ef39697d0a8c3be3ef47e30  gcc/testsuite/gcc.target/arm/pr98931.c
+ dfc2cd714cdc3607e121f73074613d5d  gcc/testsuite/gcc.target/arm/pr99592.c
+ ea503c77c48a0e40d96c6afcc7523f85  gcc/testsuite/gcc.target/arm/pr99596.c
+ 8791a633f5b84ed5331bf9cba1e68e6e  gcc/testsuite/gcc.target/arm/pr99724.c
+ 38e2ef1e7dbe41d15f1fe7459a11571d  gcc/testsuite/gcc.target/arm/pr99727.c
+ 0fbbfb8f043defb1e2b0991415909c85  gcc/testsuite/gcc.target/arm/pr99786.c
  a57b4669de94641d7fba5928bf1f8ca0  gcc/testsuite/gcc.target/arm/pragma_arch_attribute.c
  d1fa915a7ba92f09b7cb8676f62a0974  gcc/testsuite/gcc.target/arm/pragma_arch_attribute_2.c
  5184d53e7d6c028c1c22ef106f053ed7  gcc/testsuite/gcc.target/arm/pragma_arch_attribute_3.c
*************** c9e6771b67edbcdcd59fc69d96f76bd0  gcc/te
*** 53181,53193 ****
  3a06abeb34fdbba108fe536aeccde735  gcc/testsuite/gcc.target/arm/pragma_fpu_attribute_2.c
  5b1a9414b404b74eb5cf36760730cf83  gcc/testsuite/gcc.target/arm/pure-code/ffunction-sections.c
  77b405f3713bb420ee5af292f1a977dc  gcc/testsuite/gcc.target/arm/pure-code/no-casesi.c
  7b8330d6a4b33ec1ebe3d2b0ac6a7d6a  gcc/testsuite/gcc.target/arm/pure-code/no-literal-pool.c
  9ae88bbf3f56f1b4e53964c0b9d80766  gcc/testsuite/gcc.target/arm/pure-code/pr94538-1.c
  73846ca40ff67281debec0e317b1f8d5  gcc/testsuite/gcc.target/arm/pure-code/pr94538-2.c
! 2faac3a1ad56c02783e199199e5385ff  gcc/testsuite/gcc.target/arm/pure-code/pure-code.exp
  639f9aee9e13df807ade02e6ee96c2d3  gcc/testsuite/gcc.target/arm/reg_equal_test.c
  3143560976572191d8bba6ba78a45aa6  gcc/testsuite/gcc.target/arm/register-variables.c
! 85007024f78b1b20de81059c2ee5fe99  gcc/testsuite/gcc.target/arm/require-pic-register-loc.c
  7488cdc20f835bda2359993c0ec74d15  gcc/testsuite/gcc.target/arm/rev16.c
  f4b0167ffa11835780a49b6681dae08a  gcc/testsuite/gcc.target/arm/sat-1.c
  33bb623f1a1557b9fdd91f630e4b4bcd  gcc/testsuite/gcc.target/arm/scd42-1.c
--- 56578,56596 ----
  3a06abeb34fdbba108fe536aeccde735  gcc/testsuite/gcc.target/arm/pragma_fpu_attribute_2.c
  5b1a9414b404b74eb5cf36760730cf83  gcc/testsuite/gcc.target/arm/pure-code/ffunction-sections.c
  77b405f3713bb420ee5af292f1a977dc  gcc/testsuite/gcc.target/arm/pure-code/no-casesi.c
+ 9d45085f81b933f75aff02b4b174d596  gcc/testsuite/gcc.target/arm/pure-code/no-literal-pool-m0.c
+ be0f627c9760e72ac531303722e2aa4a  gcc/testsuite/gcc.target/arm/pure-code/no-literal-pool-m23.c
  7b8330d6a4b33ec1ebe3d2b0ac6a7d6a  gcc/testsuite/gcc.target/arm/pure-code/no-literal-pool.c
  9ae88bbf3f56f1b4e53964c0b9d80766  gcc/testsuite/gcc.target/arm/pure-code/pr94538-1.c
  73846ca40ff67281debec0e317b1f8d5  gcc/testsuite/gcc.target/arm/pure-code/pr94538-2.c
! 4f35b9cdbd7f36b52519b9a78b06c4d6  gcc/testsuite/gcc.target/arm/pure-code/pr96767.c
! fae12b2484aa501254f0f6f18c223eb7  gcc/testsuite/gcc.target/arm/pure-code/pr96769.c
! 97baedb199afd57478166d225f8cdc6d  gcc/testsuite/gcc.target/arm/pure-code/pr96770.c
! 23b438a7445931d6c586530cff90a5e9  gcc/testsuite/gcc.target/arm/pure-code/pr98998.c
! 404935d32825fc8ce74ea604acbaf904  gcc/testsuite/gcc.target/arm/pure-code/pure-code.exp
  639f9aee9e13df807ade02e6ee96c2d3  gcc/testsuite/gcc.target/arm/reg_equal_test.c
  3143560976572191d8bba6ba78a45aa6  gcc/testsuite/gcc.target/arm/register-variables.c
! 7e00efeaf92d1f9068732d041c1566d2  gcc/testsuite/gcc.target/arm/require-pic-register-loc.c
  7488cdc20f835bda2359993c0ec74d15  gcc/testsuite/gcc.target/arm/rev16.c
  f4b0167ffa11835780a49b6681dae08a  gcc/testsuite/gcc.target/arm/sat-1.c
  33bb623f1a1557b9fdd91f630e4b4bcd  gcc/testsuite/gcc.target/arm/scd42-1.c
*************** c0c41c8ff9d383030a9b3c16b9d1c1ed  gcc/te
*** 53204,53223 ****
  0709d1e106198a558154abf226df84cc  gcc/testsuite/gcc.target/arm/simd/bf16_dot_1.c
  c0276dcf821bbe75266889b9f52ea289  gcc/testsuite/gcc.target/arm/simd/bf16_dot_2.c
  fc93c89c1d65185b062231d910eb8012  gcc/testsuite/gcc.target/arm/simd/bf16_dot_3.c
! 1fd7330776be8f8abf289f61006c4865  gcc/testsuite/gcc.target/arm/simd/bf16_ma_1.c
  cffb59f8fe9ec70efaff181d133efaf9  gcc/testsuite/gcc.target/arm/simd/bf16_ma_2.c
! 57e32b67eaa8348a03e7261bbd4feaa0  gcc/testsuite/gcc.target/arm/simd/bf16_mmla_1.c
! 19c97f87a45024c7dd1261bb9a3c4cd6  gcc/testsuite/gcc.target/arm/simd/bf16_vldn_1.c
! 05c1c0689a268d335197dbe157ab538a  gcc/testsuite/gcc.target/arm/simd/bf16_vstn_1.c
  4cb183a1602cdf7e8df9808095457c17  gcc/testsuite/gcc.target/arm/simd/fp16fml_high.c
  86a910fbea8e786089563912a699727e  gcc/testsuite/gcc.target/arm/simd/fp16fml_lane_high.c
  ce6bfdecafebf5d96e30584ac5bde11f  gcc/testsuite/gcc.target/arm/simd/fp16fml_lane_low.c
  c7ef3b93e6ead3d17a958c3c299e8b73  gcc/testsuite/gcc.target/arm/simd/fp16fml_low.c
  68c87b57e05a6645373dc8d51e390d27  gcc/testsuite/gcc.target/arm/simd/neon-vrndx_f32_1.c
  20510447d248969276dc517dca7c29d2  gcc/testsuite/gcc.target/arm/simd/neon-vrndxq_f32_1.c
! 43f6ea5d31a9f9df4ca26a01807d7802  gcc/testsuite/gcc.target/arm/simd/simd.exp
! e3484b8f18b5f1bd011c29a0244ef844  gcc/testsuite/gcc.target/arm/simd/vdot-2-1.c
! 1eda2c22d4d8aa2b4da4d72848c0bf79  gcc/testsuite/gcc.target/arm/simd/vdot-2-2.c
  b853367ca5af1aa50b53590e84ac3b45  gcc/testsuite/gcc.target/arm/simd/vdot-2-3.c
  9a83069569a4f275e9097239583718cb  gcc/testsuite/gcc.target/arm/simd/vdot-2-4.c
  ab761a33d453fab454007482f8cfc2c1  gcc/testsuite/gcc.target/arm/simd/vdot-compile.c
--- 56607,56640 ----
  0709d1e106198a558154abf226df84cc  gcc/testsuite/gcc.target/arm/simd/bf16_dot_1.c
  c0276dcf821bbe75266889b9f52ea289  gcc/testsuite/gcc.target/arm/simd/bf16_dot_2.c
  fc93c89c1d65185b062231d910eb8012  gcc/testsuite/gcc.target/arm/simd/bf16_dot_3.c
! f2610d7575b26d3fa4727d383179637f  gcc/testsuite/gcc.target/arm/simd/bf16_ma_1.c
  cffb59f8fe9ec70efaff181d133efaf9  gcc/testsuite/gcc.target/arm/simd/bf16_ma_2.c
! fde2c43a7c47fe7ce9ddd5247cf0715e  gcc/testsuite/gcc.target/arm/simd/bf16_mmla_1.c
! f86742a960fc1c2bd4175fbdab1ce6af  gcc/testsuite/gcc.target/arm/simd/bf16_vldn_1.c
! c85c6e997259bc6ea785859ca3cd0503  gcc/testsuite/gcc.target/arm/simd/bf16_vstn_1.c
  4cb183a1602cdf7e8df9808095457c17  gcc/testsuite/gcc.target/arm/simd/fp16fml_high.c
  86a910fbea8e786089563912a699727e  gcc/testsuite/gcc.target/arm/simd/fp16fml_lane_high.c
  ce6bfdecafebf5d96e30584ac5bde11f  gcc/testsuite/gcc.target/arm/simd/fp16fml_lane_low.c
  c7ef3b93e6ead3d17a958c3c299e8b73  gcc/testsuite/gcc.target/arm/simd/fp16fml_low.c
+ 7370991ffab828bb67ea9207e79d17ed  gcc/testsuite/gcc.target/arm/simd/mve-vand.c
+ 57337e605c24d6ca7890908234fe55fd  gcc/testsuite/gcc.target/arm/simd/mve-vbic.c
+ ad91e84e4e236e53bf616bfe551f7eda  gcc/testsuite/gcc.target/arm/simd/mve-veor.c
+ 8eeb12838119b1d8b000f3722e1b16e7  gcc/testsuite/gcc.target/arm/simd/mve-vminmax_1.c
+ 36779691f42ae231092570148a42b261  gcc/testsuite/gcc.target/arm/simd/mve-vmul_1.c
+ 8a858f14e2f8788bc8e6d834c44cb944  gcc/testsuite/gcc.target/arm/simd/mve-vmvn.c
+ eec4a2942df9514516f09adb538ca6c1  gcc/testsuite/gcc.target/arm/simd/mve-vneg.c
+ 454ea9c4b205cc5970ef1f679c56ad7a  gcc/testsuite/gcc.target/arm/simd/mve-vorn.c
+ fcce8db5ec7e8bdb594b192422634626  gcc/testsuite/gcc.target/arm/simd/mve-vorr.c
+ 8c135e895bc223508b6735896b11e21f  gcc/testsuite/gcc.target/arm/simd/mve-vshl.c
+ 2769bd6300e3a229bb351b3eeca279be  gcc/testsuite/gcc.target/arm/simd/mve-vshr.c
+ c8deb0a803321b5792517c2ab68fbc77  gcc/testsuite/gcc.target/arm/simd/mve-vsub_1.c
  68c87b57e05a6645373dc8d51e390d27  gcc/testsuite/gcc.target/arm/simd/neon-vrndx_f32_1.c
  20510447d248969276dc517dca7c29d2  gcc/testsuite/gcc.target/arm/simd/neon-vrndxq_f32_1.c
! 9af7a7284428e6c37ed2db924763a994  gcc/testsuite/gcc.target/arm/simd/simd.exp
! be37d1c2f068a408d0dcf51da9bb2153  gcc/testsuite/gcc.target/arm/simd/vceqz_p64.c
! bfc8c84b4d25f4a7889d9453580915a0  gcc/testsuite/gcc.target/arm/simd/vceqzq_p64.c
! 670854419dae14ffab50446f28146414  gcc/testsuite/gcc.target/arm/simd/vdot-2-1.c
! 89549f5bddb70d175e9fdfda0028b717  gcc/testsuite/gcc.target/arm/simd/vdot-2-2.c
  b853367ca5af1aa50b53590e84ac3b45  gcc/testsuite/gcc.target/arm/simd/vdot-2-3.c
  9a83069569a4f275e9097239583718cb  gcc/testsuite/gcc.target/arm/simd/vdot-2-4.c
  ab761a33d453fab454007482f8cfc2c1  gcc/testsuite/gcc.target/arm/simd/vdot-compile.c
*************** e0f365607757a3b5ff67210d33210e44  gcc/te
*** 53258,53264 ****
  8c822be300fa91058277e10852236e36  gcc/testsuite/gcc.target/arm/simd/vmaxnmq_f32_1.c
  5eafa825272793ea7d99b8d5c78b65b7  gcc/testsuite/gcc.target/arm/simd/vminnm_f32_1.c
  7f70b8e11a7dba142b087c99af1f4f1a  gcc/testsuite/gcc.target/arm/simd/vminnmq_f32_1.c
! 06c60b1f5cddffa3c8c8c6b5b7585508  gcc/testsuite/gcc.target/arm/simd/vmmla_1.c
  bfeb772076e9864ee38c7903a6a90eb5  gcc/testsuite/gcc.target/arm/simd/vrev16p8_1.c
  ab9fc6d11c2f2ba77ed6f97ce324153e  gcc/testsuite/gcc.target/arm/simd/vrev16qp8_1.c
  e435d708b8b9a02780894c9338e288d2  gcc/testsuite/gcc.target/arm/simd/vrev16qs8_1.c
--- 56675,56681 ----
  8c822be300fa91058277e10852236e36  gcc/testsuite/gcc.target/arm/simd/vmaxnmq_f32_1.c
  5eafa825272793ea7d99b8d5c78b65b7  gcc/testsuite/gcc.target/arm/simd/vminnm_f32_1.c
  7f70b8e11a7dba142b087c99af1f4f1a  gcc/testsuite/gcc.target/arm/simd/vminnmq_f32_1.c
! ab5187744c0a27850fa6488a71e05a28  gcc/testsuite/gcc.target/arm/simd/vmmla_1.c
  bfeb772076e9864ee38c7903a6a90eb5  gcc/testsuite/gcc.target/arm/simd/vrev16p8_1.c
  ab9fc6d11c2f2ba77ed6f97ce324153e  gcc/testsuite/gcc.target/arm/simd/vrev16qp8_1.c
  e435d708b8b9a02780894c9338e288d2  gcc/testsuite/gcc.target/arm/simd/vrev16qs8_1.c
*************** ed39b4c31a81f4f17ea556e45805a496  gcc/te
*** 53378,53383 ****
--- 56795,56802 ----
  c2b556510a6d5c54101374760111a06e  gcc/testsuite/gcc.target/arm/stack-protector-2.c
  ba6c6b402205fa474f7093d07d3d3129  gcc/testsuite/gcc.target/arm/stack-protector-3.c
  e13154393d19a49196906480b6d2d4bc  gcc/testsuite/gcc.target/arm/stack-protector-4.c
+ 70342bcaa3f6107c83106c2d684152ed  gcc/testsuite/gcc.target/arm/stack-protector-5.c
+ fe2f9ebabcf72015dcbdb73c0c9e2338  gcc/testsuite/gcc.target/arm/stack-protector-6.c
  011b467632d678d04108bd1dc27d26b7  gcc/testsuite/gcc.target/arm/stack-red-zone.c
  152321b1bfa07e69c572a0ca8573c015  gcc/testsuite/gcc.target/arm/symbian1.c
  a2a9b9135252a63f30ae15393ececf8f  gcc/testsuite/gcc.target/arm/symbian2.c
*************** b4fab83bf7109a1294a6bd49a7d8724a  gcc/te
*** 53412,53421 ****
  4184013bc3e81a71b9c984214c2b05bb  gcc/testsuite/gcc.target/arm/thumb1-ual-1.c
  d28c50f238226623cf455200121f3794  gcc/testsuite/gcc.target/arm/thumb2-cmpneg2add-1.c
  f91077e8dbda998082dcdf52e9606e4e  gcc/testsuite/gcc.target/arm/thumb2-cmpneg2add-2.c
! 5b561681f538688324b898c9b33d54c6  gcc/testsuite/gcc.target/arm/thumb2-cond-cmp-1.c
! a13d01f1c7abeb7ce4bf462cdad38032  gcc/testsuite/gcc.target/arm/thumb2-cond-cmp-2.c
! 54e8ce3d55c17db759d7f733f44e6def  gcc/testsuite/gcc.target/arm/thumb2-cond-cmp-3.c
! bbeb5d787a1f59410ab40b6b383ec8f8  gcc/testsuite/gcc.target/arm/thumb2-cond-cmp-4.c
  2e33f4b8c57608af40343029785ffa88  gcc/testsuite/gcc.target/arm/thumb2-mul-space-2.c
  5ca094a129c97f18e18cd11e7a3b6842  gcc/testsuite/gcc.target/arm/thumb2-mul-space-3.c
  6eb8339fb942b3c36177ff6f4f126a6e  gcc/testsuite/gcc.target/arm/thumb2-mul-space.c
--- 56831,56840 ----
  4184013bc3e81a71b9c984214c2b05bb  gcc/testsuite/gcc.target/arm/thumb1-ual-1.c
  d28c50f238226623cf455200121f3794  gcc/testsuite/gcc.target/arm/thumb2-cmpneg2add-1.c
  f91077e8dbda998082dcdf52e9606e4e  gcc/testsuite/gcc.target/arm/thumb2-cmpneg2add-2.c
! c155e8b8e5453ce4e76a382150b4f748  gcc/testsuite/gcc.target/arm/thumb2-cond-cmp-1.c
! a437779b91f79339828db4b1f35dc134  gcc/testsuite/gcc.target/arm/thumb2-cond-cmp-2.c
! 4590d0b62ebcabb331be3fbb0d76c4b6  gcc/testsuite/gcc.target/arm/thumb2-cond-cmp-3.c
! 1f28f45dab4e467045d81d068ba26303  gcc/testsuite/gcc.target/arm/thumb2-cond-cmp-4.c
  2e33f4b8c57608af40343029785ffa88  gcc/testsuite/gcc.target/arm/thumb2-mul-space-2.c
  5ca094a129c97f18e18cd11e7a3b6842  gcc/testsuite/gcc.target/arm/thumb2-mul-space-3.c
  6eb8339fb942b3c36177ff6f4f126a6e  gcc/testsuite/gcc.target/arm/thumb2-mul-space.c
*************** e94286eccc733d11a63447fdd9bada99  gcc/te
*** 53430,53436 ****
  322a379899bf637c0e26cbe1eb644603  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-4.c
  009b12bcdd519023614e14a253a4c0a9  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-5.c
  661cd52deb4f860aae4c6c1b1e062e57  gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
! 8c4e1adcc09890f586a23b8ae5bcb775  gcc/testsuite/gcc.target/arm/tlscall.c
  bbfeab1d19ae8a86996efa5896bc515a  gcc/testsuite/gcc.target/arm/unaligned-argument-1.c
  07b58b9d3cae47b57b137b31a0ea472c  gcc/testsuite/gcc.target/arm/unaligned-argument-2.c
  fbe22b395d333c931f6971e0905a0c77  gcc/testsuite/gcc.target/arm/unaligned-argument-3.c
--- 56849,56855 ----
  322a379899bf637c0e26cbe1eb644603  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-4.c
  009b12bcdd519023614e14a253a4c0a9  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-5.c
  661cd52deb4f860aae4c6c1b1e062e57  gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
! b5cb0cc39d4570e0da1e85821a82e816  gcc/testsuite/gcc.target/arm/tlscall.c
  bbfeab1d19ae8a86996efa5896bc515a  gcc/testsuite/gcc.target/arm/unaligned-argument-1.c
  07b58b9d3cae47b57b137b31a0ea472c  gcc/testsuite/gcc.target/arm/unaligned-argument-2.c
  fbe22b395d333c931f6971e0905a0c77  gcc/testsuite/gcc.target/arm/unaligned-argument-3.c
*************** e14b9a30fa811436ecb6aa988c9a5305  gcc/te
*** 53439,53450 ****
  73e3760e48e9bc177a5f6e0dd330dd67  gcc/testsuite/gcc.target/arm/unaligned-memcpy-3.c
  792dc2802acd07e46a1a21cf396e6868  gcc/testsuite/gcc.target/arm/unaligned-memcpy-4.c
  d51794c8e800a1494a43aad0663fc8ec  gcc/testsuite/gcc.target/arm/unsigned-extend-1.c
! 46c7f501ed039d63fcee18f5ba757f0c  gcc/testsuite/gcc.target/arm/unsigned-extend-2.c
  b00b4662ffae7d58b94d4e89e964e8c3  gcc/testsuite/gcc.target/arm/unsigned-float.c
  dafe3f438a1a1630e53458e22dbec6bc  gcc/testsuite/gcc.target/arm/usadv16qi.c
  dd7bfde900d68546e1d3dd468f37370b  gcc/testsuite/gcc.target/arm/va_list.c
  cc0bc7a437b1048adcd2bbb500c8613f  gcc/testsuite/gcc.target/arm/vect-copysignf.c
  fc4b69778fc737ef010c991d12b1dc42  gcc/testsuite/gcc.target/arm/vect-fmaxmin.c
  295aeeb880398f05123f0a31c3d102e3  gcc/testsuite/gcc.target/arm/vect-lceilf_1.c
  3fc041dcd9c320085497b8cb5c2dd803  gcc/testsuite/gcc.target/arm/vect-lfloorf_1.c
  d42afc9ee75e4bfb8a0b629054d39d4e  gcc/testsuite/gcc.target/arm/vect-lroundf_1.c
--- 56858,56870 ----
  73e3760e48e9bc177a5f6e0dd330dd67  gcc/testsuite/gcc.target/arm/unaligned-memcpy-3.c
  792dc2802acd07e46a1a21cf396e6868  gcc/testsuite/gcc.target/arm/unaligned-memcpy-4.c
  d51794c8e800a1494a43aad0663fc8ec  gcc/testsuite/gcc.target/arm/unsigned-extend-1.c
! ead94d850a836710bef3cff899906668  gcc/testsuite/gcc.target/arm/unsigned-extend-2.c
  b00b4662ffae7d58b94d4e89e964e8c3  gcc/testsuite/gcc.target/arm/unsigned-float.c
  dafe3f438a1a1630e53458e22dbec6bc  gcc/testsuite/gcc.target/arm/usadv16qi.c
  dd7bfde900d68546e1d3dd468f37370b  gcc/testsuite/gcc.target/arm/va_list.c
  cc0bc7a437b1048adcd2bbb500c8613f  gcc/testsuite/gcc.target/arm/vect-copysignf.c
  fc4b69778fc737ef010c991d12b1dc42  gcc/testsuite/gcc.target/arm/vect-fmaxmin.c
+ b2a77cb9f8dcabbc91a1f9b3df63c325  gcc/testsuite/gcc.target/arm/vect-half-floats.c
  295aeeb880398f05123f0a31c3d102e3  gcc/testsuite/gcc.target/arm/vect-lceilf_1.c
  3fc041dcd9c320085497b8cb5c2dd803  gcc/testsuite/gcc.target/arm/vect-lfloorf_1.c
  d42afc9ee75e4bfb8a0b629054d39d4e  gcc/testsuite/gcc.target/arm/vect-lroundf_1.c
*************** c75ed40c88ef10849c23f953624d1ae2  gcc/te
*** 53525,53535 ****
  5c6680598a83083cd8ee0c39ad5821bf  gcc/testsuite/gcc.target/arm/wmul-bitfield-2.c
  a1131491d67160098e775860b91e3021  gcc/testsuite/gcc.target/arm/xor-and.c
  79a594a642e89de4c3a753867b50cf54  gcc/testsuite/gcc.target/arm/xordi3-opt.c
! 3ef5a326d3d15aeac57a1675746462b2  gcc/testsuite/gcc.target/avr/avr.exp
  a6701935d18c8ed062555c8a48454bc9  gcc/testsuite/gcc.target/avr/dev-specific-rmw.c
  2028ceccf9f97e5e84e9adf6beb7597e  gcc/testsuite/gcc.target/avr/exit-abort.h
  01c5f01bf5db7494c293de76bfa7ad3f  gcc/testsuite/gcc.target/avr/isr-test.h
! a83cc83bbd633b6ee5bf09b292dae2b6  gcc/testsuite/gcc.target/avr/mmcu/avr-mmcu.exp
  421d2b9b36fa2496dce05d129d2c352b  gcc/testsuite/gcc.target/avr/mmcu/pr58545.c
  8172209b564aa8049ce5758eac60cc46  gcc/testsuite/gcc.target/avr/mmcu/tiny-caller-save.c
  80cabd0a89ca2c48055ae61bc82b633e  gcc/testsuite/gcc.target/avr/mmcu/tiny-memx.c
--- 56945,56955 ----
  5c6680598a83083cd8ee0c39ad5821bf  gcc/testsuite/gcc.target/arm/wmul-bitfield-2.c
  a1131491d67160098e775860b91e3021  gcc/testsuite/gcc.target/arm/xor-and.c
  79a594a642e89de4c3a753867b50cf54  gcc/testsuite/gcc.target/arm/xordi3-opt.c
! aefcb2f0bce88f118b95d3286577fb8f  gcc/testsuite/gcc.target/avr/avr.exp
  a6701935d18c8ed062555c8a48454bc9  gcc/testsuite/gcc.target/avr/dev-specific-rmw.c
  2028ceccf9f97e5e84e9adf6beb7597e  gcc/testsuite/gcc.target/avr/exit-abort.h
  01c5f01bf5db7494c293de76bfa7ad3f  gcc/testsuite/gcc.target/avr/isr-test.h
! d2a9ff4a67b9cdc84b7715e61d38dea1  gcc/testsuite/gcc.target/avr/mmcu/avr-mmcu.exp
  421d2b9b36fa2496dce05d129d2c352b  gcc/testsuite/gcc.target/avr/mmcu/pr58545.c
  8172209b564aa8049ce5758eac60cc46  gcc/testsuite/gcc.target/avr/mmcu/tiny-caller-save.c
  80cabd0a89ca2c48055ae61bc82b633e  gcc/testsuite/gcc.target/avr/mmcu/tiny-memx.c
*************** e2ddf19981b44595d911d7d384c3824f  gcc/te
*** 53574,53580 ****
  53dfc94573110c2220b0a51c076fda55  gcc/testsuite/gcc.target/avr/torture/addr-space-2-g.c
  6fb32c1fcefb2d5260347dc067759686  gcc/testsuite/gcc.target/avr/torture/addr-space-2-x.c
  a0d24b6b729b3316832b85d84ee2f113  gcc/testsuite/gcc.target/avr/torture/addr-space-2.h
! 3fb68ef56e9bbc9004ef77f635a7e366  gcc/testsuite/gcc.target/avr/torture/avr-torture.exp
  8fb103e22590dcf8f557336ecf8d0b5d  gcc/testsuite/gcc.target/avr/torture/builtin_insert_bits-1.c
  43852eb8aa736eadca5b3c517bf0d743  gcc/testsuite/gcc.target/avr/torture/builtin_insert_bits-2.c
  6f7a316d69505eb726fcfadde1df3047  gcc/testsuite/gcc.target/avr/torture/builtins-1.c
--- 56994,57000 ----
  53dfc94573110c2220b0a51c076fda55  gcc/testsuite/gcc.target/avr/torture/addr-space-2-g.c
  6fb32c1fcefb2d5260347dc067759686  gcc/testsuite/gcc.target/avr/torture/addr-space-2-x.c
  a0d24b6b729b3316832b85d84ee2f113  gcc/testsuite/gcc.target/avr/torture/addr-space-2.h
! 6a809e3e0889b1cd5ae0451e91500f43  gcc/testsuite/gcc.target/avr/torture/avr-torture.exp
  8fb103e22590dcf8f557336ecf8d0b5d  gcc/testsuite/gcc.target/avr/torture/builtin_insert_bits-1.c
  43852eb8aa736eadca5b3c517bf0d743  gcc/testsuite/gcc.target/avr/torture/builtin_insert_bits-2.c
  6f7a316d69505eb726fcfadde1df3047  gcc/testsuite/gcc.target/avr/torture/builtins-1.c
*************** b132d1738c80be39010cd2b0314aba73  gcc/te
*** 53634,53640 ****
  e8596cb430561d81a166efee3830ab78  gcc/testsuite/gcc.target/bfin/20090914-2.c
  59131c95108c3e68948b937d2cbd9453  gcc/testsuite/gcc.target/bfin/20090914-3.c
  bf1c248fa1b1520ecdeed5e768375da7  gcc/testsuite/gcc.target/bfin/arith.c
! 3c3f38a3de22b4e97af0f3c0fe376062  gcc/testsuite/gcc.target/bfin/bfin.exp
  e666a8a0054e7cac9ce2a121c6d1ccbf  gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-1.c
  9b9ec1d751f1617d55d1098c8c77391b  gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-2.c
  6b81ebc6aa2acb74b2481ebe48c3dc2c  gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-1.c
--- 57054,57060 ----
  e8596cb430561d81a166efee3830ab78  gcc/testsuite/gcc.target/bfin/20090914-2.c
  59131c95108c3e68948b937d2cbd9453  gcc/testsuite/gcc.target/bfin/20090914-3.c
  bf1c248fa1b1520ecdeed5e768375da7  gcc/testsuite/gcc.target/bfin/arith.c
! 0df26c43ab47c24f92e9e531bef7f063  gcc/testsuite/gcc.target/bfin/bfin.exp
  e666a8a0054e7cac9ce2a121c6d1ccbf  gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-1.c
  9b9ec1d751f1617d55d1098c8c77391b  gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-2.c
  6b81ebc6aa2acb74b2481ebe48c3dc2c  gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-1.c
*************** fe4d87c005f4281c70950e298d2332d6  gcc/te
*** 53647,53653 ****
  68777a9f94150662d944e2fa189c4dd7  gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-2.c
  d0c87dc45464d8073220a36a5b5f9150  gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-1.c
  9d8cdd9e02d1a76707491953ffcab689  gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-2.c
! cbb62e107d850260c64de0b22d4c0c49  gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp
  f7e7cbc65ce8949842a0128a24bd2338  gcc/testsuite/gcc.target/bfin/builtins/circptr.c
  6c9969a981de179714ed81df51335aa9  gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-1.c
  136597c96eab5947bf5b9d9ac2e01f54  gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-2.c
--- 57067,57073 ----
  68777a9f94150662d944e2fa189c4dd7  gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-2.c
  d0c87dc45464d8073220a36a5b5f9150  gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-1.c
  9d8cdd9e02d1a76707491953ffcab689  gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-2.c
! 522719f2e51c4ef2ed8708623079dbb0  gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp
  f7e7cbc65ce8949842a0128a24bd2338  gcc/testsuite/gcc.target/bfin/builtins/circptr.c
  6c9969a981de179714ed81df51335aa9  gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-1.c
  136597c96eab5947bf5b9d9ac2e01f54  gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-2.c
*************** b7e44f629992ef6eb090866310307190  gcc/te
*** 53841,53847 ****
  998eede0c55f8146863da4eee6db210b  gcc/testsuite/gcc.target/bfin/workarounds-4.c
  998eede0c55f8146863da4eee6db210b  gcc/testsuite/gcc.target/bfin/workarounds-any.c
  b7e44f629992ef6eb090866310307190  gcc/testsuite/gcc.target/bfin/workarounds-none.c
! 4c275237428b27e1f59d682aa9e1e41b  gcc/testsuite/gcc.target/bpf/bpf.exp
  e18e9906424d8f6d6559626d05b228a1  gcc/testsuite/gcc.target/bpf/builtin-load.c
  de0225c20b6d4e27e5b67ccb3354f120  gcc/testsuite/gcc.target/bpf/constant-calls.c
  7c5767ad8853516ee52b4fccd6f2ad45  gcc/testsuite/gcc.target/bpf/diag-funargs-2.c
--- 57261,57267 ----
  998eede0c55f8146863da4eee6db210b  gcc/testsuite/gcc.target/bfin/workarounds-4.c
  998eede0c55f8146863da4eee6db210b  gcc/testsuite/gcc.target/bfin/workarounds-any.c
  b7e44f629992ef6eb090866310307190  gcc/testsuite/gcc.target/bfin/workarounds-none.c
! f5e9c26c53eff2ee852214a804688d42  gcc/testsuite/gcc.target/bpf/bpf.exp
  e18e9906424d8f6d6559626d05b228a1  gcc/testsuite/gcc.target/bpf/builtin-load.c
  de0225c20b6d4e27e5b67ccb3354f120  gcc/testsuite/gcc.target/bpf/constant-calls.c
  7c5767ad8853516ee52b4fccd6f2ad45  gcc/testsuite/gcc.target/bpf/diag-funargs-2.c
*************** cd41d37c2f24e4c5454955bd38989508  gcc/te
*** 53967,53993 ****
  a8db8f73e387b781a751c8af0afb48f3  gcc/testsuite/gcc.target/bpf/xbpf-smod-1.c
  3ae9e0cc2cd08e28ef54e8540c762679  gcc/testsuite/gcc.target/cris/20011127-1.c
  75d3e9019c866a8402bf7aa4c913ee2d  gcc/testsuite/gcc.target/cris/asm-b-1.c
! 5799ad416079f47833d46e47ca578b8c  gcc/testsuite/gcc.target/cris/asm-other.S
  1c5d493cdcf2c0e1c4019ed0187aaddc  gcc/testsuite/gcc.target/cris/asm-v10.S
  b1c00a7ddfee77205ad2ef00a4e0e094  gcc/testsuite/gcc.target/cris/asm-v8.S
! 52881ade201ae2f71b9943dcbc8d67ff  gcc/testsuite/gcc.target/cris/asmreg-1.c
! 7fdeeceb931c6cf59d297250d60943ee  gcc/testsuite/gcc.target/cris/biap.c
  bbad42cbab80fb82cf59f6dcbddd39f2  gcc/testsuite/gcc.target/cris/builtin_bswap_v3.c
  da811515083d9ddf056500903ebb758b  gcc/testsuite/gcc.target/cris/builtin_bswap_v8.c
  1755c10821fb12742b14cd18621aeb8c  gcc/testsuite/gcc.target/cris/builtin_clz_v0.c
  825d51bc2455ddb81464d0a078c11bda  gcc/testsuite/gcc.target/cris/builtin_clz_v3.c
  619e346f21294a1edba1fa0d4fb11951  gcc/testsuite/gcc.target/cris/builtin_ctz_v3.c
  37dd2f4312701e553c1c5e8a89d8fcdd  gcc/testsuite/gcc.target/cris/builtin_ctz_v8.c
! c49f946c5bf608d1b2b902816143ae30  gcc/testsuite/gcc.target/cris/cris.exp
  f267ed4a3d93f57ca2fd47fb88787845  gcc/testsuite/gcc.target/cris/dbr-1.c
! 2922a81b9fca0ef8a7b633ab34d7baff  gcc/testsuite/gcc.target/cris/inasm-other.c
  22e3cf12d66bc0fca53215d6e8dbe6ff  gcc/testsuite/gcc.target/cris/inasm-v10.c
  0a47d77414729eb63abf0c919507b06e  gcc/testsuite/gcc.target/cris/inasm-v8.c
  751812a15cc9e10b0d6ba8ebba967cb1  gcc/testsuite/gcc.target/cris/peep2-andu1.c
  27facbb3023392cd2969ad6febfccd01  gcc/testsuite/gcc.target/cris/peep2-andu2.c
  78ff0ef706b5793ecc014e54ba01c61b  gcc/testsuite/gcc.target/cris/peep2-xsrand.c
  8dca75dcf3a1144233e50bb58096542f  gcc/testsuite/gcc.target/cris/peep2-xsrand2.c
! 4729b41a6370e8077a92b97b70a3577d  gcc/testsuite/gcc.target/cris/pr93372-1.c
  127bb47e5d714aa68423d049579791e7  gcc/testsuite/gcc.target/cris/pr93372-10.c
  044349cf85ef581bccf4952e7d8b2c6d  gcc/testsuite/gcc.target/cris/pr93372-11.c
  e2a0d4bd0f3c04eb821ceb320ddba973  gcc/testsuite/gcc.target/cris/pr93372-12.c
--- 57387,57415 ----
  a8db8f73e387b781a751c8af0afb48f3  gcc/testsuite/gcc.target/bpf/xbpf-smod-1.c
  3ae9e0cc2cd08e28ef54e8540c762679  gcc/testsuite/gcc.target/cris/20011127-1.c
  75d3e9019c866a8402bf7aa4c913ee2d  gcc/testsuite/gcc.target/cris/asm-b-1.c
! a9d478d7af0e0b31660f3b7e507a6318  gcc/testsuite/gcc.target/cris/asm-other.S
  1c5d493cdcf2c0e1c4019ed0187aaddc  gcc/testsuite/gcc.target/cris/asm-v10.S
  b1c00a7ddfee77205ad2ef00a4e0e094  gcc/testsuite/gcc.target/cris/asm-v8.S
! 13bb951cd8fa603bfcd9410ef2934d90  gcc/testsuite/gcc.target/cris/asmreg-1.c
! cd4ab304971f895fd58f13ce450b0b01  gcc/testsuite/gcc.target/cris/biap-mul.c
! 270adaf74fa16397a807cb2c1d43b11c  gcc/testsuite/gcc.target/cris/biap.c
  bbad42cbab80fb82cf59f6dcbddd39f2  gcc/testsuite/gcc.target/cris/builtin_bswap_v3.c
  da811515083d9ddf056500903ebb758b  gcc/testsuite/gcc.target/cris/builtin_bswap_v8.c
  1755c10821fb12742b14cd18621aeb8c  gcc/testsuite/gcc.target/cris/builtin_clz_v0.c
  825d51bc2455ddb81464d0a078c11bda  gcc/testsuite/gcc.target/cris/builtin_clz_v3.c
  619e346f21294a1edba1fa0d4fb11951  gcc/testsuite/gcc.target/cris/builtin_ctz_v3.c
  37dd2f4312701e553c1c5e8a89d8fcdd  gcc/testsuite/gcc.target/cris/builtin_ctz_v8.c
! 963720e17a285c3a2046687c0fa6f91d  gcc/testsuite/gcc.target/cris/cris.exp
  f267ed4a3d93f57ca2fd47fb88787845  gcc/testsuite/gcc.target/cris/dbr-1.c
! 09fbcf24d1de7a8eae1a6d8d6243d8de  gcc/testsuite/gcc.target/cris/inasm-other.c
  22e3cf12d66bc0fca53215d6e8dbe6ff  gcc/testsuite/gcc.target/cris/inasm-v10.c
  0a47d77414729eb63abf0c919507b06e  gcc/testsuite/gcc.target/cris/inasm-v8.c
  751812a15cc9e10b0d6ba8ebba967cb1  gcc/testsuite/gcc.target/cris/peep2-andu1.c
  27facbb3023392cd2969ad6febfccd01  gcc/testsuite/gcc.target/cris/peep2-andu2.c
+ a888364968b3f214618b7437a8d2044c  gcc/testsuite/gcc.target/cris/peep2-movulsr.c
  78ff0ef706b5793ecc014e54ba01c61b  gcc/testsuite/gcc.target/cris/peep2-xsrand.c
  8dca75dcf3a1144233e50bb58096542f  gcc/testsuite/gcc.target/cris/peep2-xsrand2.c
! 3df6fb02a80881816df3a683b934876c  gcc/testsuite/gcc.target/cris/pr93372-1.c
  127bb47e5d714aa68423d049579791e7  gcc/testsuite/gcc.target/cris/pr93372-10.c
  044349cf85ef581bccf4952e7d8b2c6d  gcc/testsuite/gcc.target/cris/pr93372-11.c
  e2a0d4bd0f3c04eb821ceb320ddba973  gcc/testsuite/gcc.target/cris/pr93372-12.c
*************** facff4c18ece6f263d798bf44177081f  gcc/te
*** 54016,54022 ****
--- 57438,57452 ----
  cc3d0cf94bc04633ca9c566b2d83c3fe  gcc/testsuite/gcc.target/cris/pr93372-33.c
  91677d7b634220356afc79b2d0c33705  gcc/testsuite/gcc.target/cris/pr93372-34.c
  4e176ac0fcf314f1f7ea678b06653552  gcc/testsuite/gcc.target/cris/pr93372-35.c
+ 8f82eff87928e8f87c3e8e668a7418a5  gcc/testsuite/gcc.target/cris/pr93372-36.c
+ 4c2fd5d5ffabf6f2e6015cb2a06bc552  gcc/testsuite/gcc.target/cris/pr93372-37.c
+ 80d6ae9c2a5afffa7e012a427b47ded0  gcc/testsuite/gcc.target/cris/pr93372-38.c
+ 5bcec97148ccb12b505354518ccdd971  gcc/testsuite/gcc.target/cris/pr93372-39.c
  25f90683b39a961169eae09adf0870bc  gcc/testsuite/gcc.target/cris/pr93372-4.c
+ 0e15ea06822780cf7895de2164c87a85  gcc/testsuite/gcc.target/cris/pr93372-44.c
+ a7e45a6c2bb8e4b856af6944442bcfca  gcc/testsuite/gcc.target/cris/pr93372-45.c
+ c817d2f149f975c3e1ce3279298b0b70  gcc/testsuite/gcc.target/cris/pr93372-46.c
+ fd2bef5e035272fba604b6ba3c112496  gcc/testsuite/gcc.target/cris/pr93372-47.c
  1d202ff9a69ea3d699b2fad506bf3f18  gcc/testsuite/gcc.target/cris/pr93372-5.c
  27ab83660488bbc64d57ce79643fd6b2  gcc/testsuite/gcc.target/cris/pr93372-6.c
  ac94d44f6436117f85c7fee0f57bb69e  gcc/testsuite/gcc.target/cris/pr93372-7.c
*************** ac94d44f6436117f85c7fee0f57bb69e  gcc/te
*** 54024,54069 ****
  d8c8b1ce3a4b37769ed85ccc3f38d44f  gcc/testsuite/gcc.target/cris/pr93372-9.c
  3d314ecc18a99e2b5bb66241cb3576d7  gcc/testsuite/gcc.target/cris/rld-legit1.c
  167ddc115a9368874024099f6cd878fc  gcc/testsuite/gcc.target/cris/rld-legit2.c
! f3ad51748d4588b4b3ed7dac29cbed61  gcc/testsuite/gcc.target/cris/sync-1-v10.c
! ff8199ca229c64cf7158c1e0d322f607  gcc/testsuite/gcc.target/cris/sync-1-v32.c
  7f3590b686ff172af3adbabfd5a084e7  gcc/testsuite/gcc.target/cris/sync-1.c
  057ba719f6c0d85a71617471ca814e84  gcc/testsuite/gcc.target/cris/sync-2c.c
! 7bd764ddfee552325ef58dcf78b8c31a  gcc/testsuite/gcc.target/cris/sync-2i.c
! 4428128560f60c896ba2e682714c8ba1  gcc/testsuite/gcc.target/cris/sync-2s.c
! 2ed7098b3d83163fb3a6e484f7b83edd  gcc/testsuite/gcc.target/cris/sync-3i.c
! 742356098cbd9ae31b515ecc6f07be56  gcc/testsuite/gcc.target/cris/sync-3s.c
  b08e4db62a9fb0f97ea3211c38828a92  gcc/testsuite/gcc.target/cris/sync-4c.c
! 15c2184b2d93ca52db7d62e0d1643cc6  gcc/testsuite/gcc.target/cris/sync-4i.c
! 8aaa425093f42b751e4b39e8b0182a1a  gcc/testsuite/gcc.target/cris/sync-4s.c
  0b1b7109726eb4d3415da0cc65329694  gcc/testsuite/gcc.target/cris/sync-xchg-1.c
! 46a388844603565c93002dcf057ed2bc  gcc/testsuite/gcc.target/cris/torture/cris-torture.exp
  46bb07141c5993a8c5154d62b285f8c7  gcc/testsuite/gcc.target/cris/torture/no-pro-epi-1.c
  4181eccc65a7ef0c720e1f62eafc01fa  gcc/testsuite/gcc.target/cris/torture/pr24750-2.c
  3578773c3349eca3bbd054dfb8ebac62  gcc/testsuite/gcc.target/cris/torture/pr34773.c
! b2b958e292f0a1625fa8e3c235526b72  gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1.c
! 9a4888d0163cc43adb691680debca8f0  gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1a.c
! d7a06351e2bba265faba1e9f77b2a0d6  gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1ml.c
! abb5228e2d1cd42155c23f8102415561  gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2.c
! 270619f34eb7c97f25bd4c1afdec6c45  gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2a.c
! 85d30cc97ee90fb12a1f455c3b35a3e4  gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2ml.c
! 1afdc30713024cb74ab5daa6183ddfc4  gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3.c
! 7f35987a37793f3e2af88b918566c261  gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3a.c
! 8cbbe8dc33e5141bcf3a45be1f5077fc  gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3ml.c
! 32b6e39ad4207d92f090cb134db5a241  gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1.c
! c555a04ad70fc3735ae5a7a6caf0f26c  gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1a.c
! 3ba7e5dd14ffc52c642757e2d1d7e7a3  gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1ml.c
! b715176c6e975590a8c633c78e97e0fc  gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1.c
! c1d8bc931c53e32683f269edcbc5e2d0  gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1a.c
! 5a78e8d83c37c27cadb5501fd54825c5  gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1ml.c
! 85af0db905e609c0eecd193c3bbbb1c1  gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2.c
! a92d20d6e23d2ab5ae57d3d5195e48d5  gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2a.c
! f5bccbc9e8ea42abd917c224e100346a  gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2ml.c
! 8757d99f219ed555dee26174cf8aa10f  gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3.c
! 329f373b4a5856498b973e48e5b3b6d6  gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3a.c
! 36eca058d8d58e0e777cd56aa772f87d  gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3ml.c
! fa8665979cd883afee94031822879073  gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1.c
! f6d16e089ff9d5ef664414baef7405cf  gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1a.c
! 9f93b3fb1d1239f85f873e9a12633fd6  gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1ml.c
  5eb54fe8e779ecf341e692e07a50a97e  gcc/testsuite/gcc.target/cris/torture/trap-1.c
  9870786602697c281d03654d259486b7  gcc/testsuite/gcc.target/cris/torture/trap-2.c
  9d2d99cc52a3590cc4692389c7095740  gcc/testsuite/gcc.target/cris/torture/trap-3.c
--- 57454,57484 ----
  d8c8b1ce3a4b37769ed85ccc3f38d44f  gcc/testsuite/gcc.target/cris/pr93372-9.c
  3d314ecc18a99e2b5bb66241cb3576d7  gcc/testsuite/gcc.target/cris/rld-legit1.c
  167ddc115a9368874024099f6cd878fc  gcc/testsuite/gcc.target/cris/rld-legit2.c
! ea869a79da57cb841c5333cd120f0e6f  gcc/testsuite/gcc.target/cris/sync-1-v10.c
  7f3590b686ff172af3adbabfd5a084e7  gcc/testsuite/gcc.target/cris/sync-1.c
  057ba719f6c0d85a71617471ca814e84  gcc/testsuite/gcc.target/cris/sync-2c.c
! 5bf03eea7f348b8367dccc3d4f5c9b9a  gcc/testsuite/gcc.target/cris/sync-2i.c
! 88b4b6faceb24e3a9ea1cd988600c070  gcc/testsuite/gcc.target/cris/sync-2s.c
! c18d2f1b8ba6d9bf031ad6c126624521  gcc/testsuite/gcc.target/cris/sync-3i.c
! c25a7d0c59c794deb37f9ae82874cd87  gcc/testsuite/gcc.target/cris/sync-3s.c
  b08e4db62a9fb0f97ea3211c38828a92  gcc/testsuite/gcc.target/cris/sync-4c.c
! a8632f4c714d9a1bc78849b980440a8c  gcc/testsuite/gcc.target/cris/sync-4i.c
! 690e9023ecafeef7a7be46436ca9854c  gcc/testsuite/gcc.target/cris/sync-4s.c
  0b1b7109726eb4d3415da0cc65329694  gcc/testsuite/gcc.target/cris/sync-xchg-1.c
! 06af4bb51ad1244e0b8fa8ce6a8d73ba  gcc/testsuite/gcc.target/cris/torture/cris-torture.exp
  46bb07141c5993a8c5154d62b285f8c7  gcc/testsuite/gcc.target/cris/torture/no-pro-epi-1.c
  4181eccc65a7ef0c720e1f62eafc01fa  gcc/testsuite/gcc.target/cris/torture/pr24750-2.c
  3578773c3349eca3bbd054dfb8ebac62  gcc/testsuite/gcc.target/cris/torture/pr34773.c
! a930ed5c409eb4bb39f66c265be00830  gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-1a.c
! 7098a7baca6bb7d737d7ef8ceb029ad9  gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-2a.c
! 2a547f80df2e2e9475a71adfd0f559cb  gcc/testsuite/gcc.target/cris/torture/sync-mis-op-i-3a.c
! affc422aab8d443fe312efa7c4aaa462  gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1.c
! 43e91f19ff3270eb24f8712c2a7e0ed9  gcc/testsuite/gcc.target/cris/torture/sync-mis-op-s-1a.c
! 5797a08f5d879e2c5948c07d3db465ca  gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-1a.c
! e2f9b9ade50a5509676320869f4a305b  gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-2a.c
! f2b6b2c203c287eb95d5076aa56e59eb  gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-i-3a.c
! 7f2e640b57f0f11043abf3f4da5ce423  gcc/testsuite/gcc.target/cris/torture/sync-mis-xchg-s-1a.c
! 040f12ad9602a9e47584a8351891bb98  gcc/testsuite/gcc.target/cris/torture/sync-reload-mul-1.c
  5eb54fe8e779ecf341e692e07a50a97e  gcc/testsuite/gcc.target/cris/torture/trap-1.c
  9870786602697c281d03654d259486b7  gcc/testsuite/gcc.target/cris/torture/trap-2.c
  9d2d99cc52a3590cc4692389c7095740  gcc/testsuite/gcc.target/cris/torture/trap-3.c
*************** b7155a676b316d828ff12c2c503fd59c  gcc/te
*** 54078,54084 ****
  aaad88eae49192421bd38c2c837d5ffc  gcc/testsuite/gcc.target/csky/constpool-2.c
  7e4e72e722403eab3bdd2874c8512498  gcc/testsuite/gcc.target/csky/constpool-3.c
  c64550af69ac6a4dfb37edcc3e6de899  gcc/testsuite/gcc.target/csky/cse-cc.c
! 43b6dec2e627a4019d0d1be5a591b7cc  gcc/testsuite/gcc.target/csky/csky.exp
  0f17acdd834091c69016d7a2af242e1f  gcc/testsuite/gcc.target/csky/fnargs-1.c
  71a0a8fdef92000347984095b42f84f2  gcc/testsuite/gcc.target/csky/fnargs-2.c
  ac08a3c5539d8fe4b68818cce90d0271  gcc/testsuite/gcc.target/csky/fnargs-3.c
--- 57493,57499 ----
  aaad88eae49192421bd38c2c837d5ffc  gcc/testsuite/gcc.target/csky/constpool-2.c
  7e4e72e722403eab3bdd2874c8512498  gcc/testsuite/gcc.target/csky/constpool-3.c
  c64550af69ac6a4dfb37edcc3e6de899  gcc/testsuite/gcc.target/csky/cse-cc.c
! 7e823e97cfa3ad7a6dd1966c27123c56  gcc/testsuite/gcc.target/csky/csky.exp
  0f17acdd834091c69016d7a2af242e1f  gcc/testsuite/gcc.target/csky/fnargs-1.c
  71a0a8fdef92000347984095b42f84f2  gcc/testsuite/gcc.target/csky/fnargs-2.c
  ac08a3c5539d8fe4b68818cce90d0271  gcc/testsuite/gcc.target/csky/fnargs-3.c
*************** d314e10078acacca0634c35cf325bf1f  gcc/te
*** 54091,54097 ****
  f8325974b60d2e8397f34c8f0e8d8bbf  gcc/testsuite/gcc.target/csky/naked.c
  b7b0230f4b534b91ce701e0cfaf699fc  gcc/testsuite/gcc.target/csky/or1.c
  3396d7f14e4963592892b06ccec1dbed  gcc/testsuite/gcc.target/epiphany/btst-1.c
! 3a8da7adc082e5357bac4f39359ce85c  gcc/testsuite/gcc.target/epiphany/epiphany.exp
  f477a84910092e956697c8b091ff4aba  gcc/testsuite/gcc.target/epiphany/fcmp-1.c
  c8ff5d5cf55484cd9bab33958ca94c36  gcc/testsuite/gcc.target/epiphany/fmadd-1.c
  a2ce030a9439b19e934208c89cb93ba6  gcc/testsuite/gcc.target/epiphany/fmsub-1.c
--- 57506,57512 ----
  f8325974b60d2e8397f34c8f0e8d8bbf  gcc/testsuite/gcc.target/csky/naked.c
  b7b0230f4b534b91ce701e0cfaf699fc  gcc/testsuite/gcc.target/csky/or1.c
  3396d7f14e4963592892b06ccec1dbed  gcc/testsuite/gcc.target/epiphany/btst-1.c
! 631734b884b8874c99f683968b6ad97c  gcc/testsuite/gcc.target/epiphany/epiphany.exp
  f477a84910092e956697c8b091ff4aba  gcc/testsuite/gcc.target/epiphany/fcmp-1.c
  c8ff5d5cf55484cd9bab33958ca94c36  gcc/testsuite/gcc.target/epiphany/fmadd-1.c
  a2ce030a9439b19e934208c89cb93ba6  gcc/testsuite/gcc.target/epiphany/fmsub-1.c
*************** d7f2f60c2c464ec7133704d0b8deb86d  gcc/te
*** 54132,54149 ****
  0bbd4283a697514ba60e495e007fbbaa  gcc/testsuite/gcc.target/frv/fr550-builtins-3.c
  d8fff2cc6bc3321095b7345915e98ec1  gcc/testsuite/gcc.target/frv/fr550-builtins-4.c
  4f94aea2a37f6adad09abfdbb47bb87e  gcc/testsuite/gcc.target/frv/fr550-builtins-5.c
! aa3df950b377fb234b486475ab2bf41c  gcc/testsuite/gcc.target/frv/frv.exp
! 151a34dad67fd69a1450b985def55eef  gcc/testsuite/gcc.target/gcn/gcn.exp
  1e706003dee9df5d57006e904e26af25  gcc/testsuite/gcc.target/gcn/vcc-clobber.c
  6618feb3136b4db14cb25d0ac22056c4  gcc/testsuite/gcc.target/h8300/andsi3_ashift_n_lower.c
! 46fe1e4695a55c90d4b4fa9a52fc1de9  gcc/testsuite/gcc.target/h8300/h8300.exp
  945675e6af6576f674dcc30697a6f78b  gcc/testsuite/gcc.target/h8300/pr13721.c
  5788c901799e460b8e5c429a23b94ebe  gcc/testsuite/gcc.target/h8300/pr17306-1.c
  4a76a6a9bd3c90b87865db2ad9c10434  gcc/testsuite/gcc.target/h8300/pr17306-2.c
  c91efeb870ae7690b89a4b3ebff5d024  gcc/testsuite/gcc.target/h8300/pr58400.c
  344a21000f3cf05f2baaf02b2c346cd5  gcc/testsuite/gcc.target/h8300/pragma-isr.c
  aaaadf978237931983f712ab447eeff0  gcc/testsuite/gcc.target/h8300/pragma-isr2.c
! 2d59446112be72dbc4c284884b415376  gcc/testsuite/gcc.target/hppa/hppa.exp
  b3208ea4097d665215fd20e76146b954  gcc/testsuite/gcc.target/hppa/shadd-1.c
  58bd6a3fd73be5559699b62200334b42  gcc/testsuite/gcc.target/hppa/shadd-2.c
  bec45e424269c61868beb11e175edb5f  gcc/testsuite/gcc.target/hppa/shadd-3.c
--- 57547,57571 ----
  0bbd4283a697514ba60e495e007fbbaa  gcc/testsuite/gcc.target/frv/fr550-builtins-3.c
  d8fff2cc6bc3321095b7345915e98ec1  gcc/testsuite/gcc.target/frv/fr550-builtins-4.c
  4f94aea2a37f6adad09abfdbb47bb87e  gcc/testsuite/gcc.target/frv/fr550-builtins-5.c
! 1e3618428f44d2aab0bc8626f96aa2c5  gcc/testsuite/gcc.target/frv/frv.exp
! 7b7fc5fe9c67544f0b261293730d590b  gcc/testsuite/gcc.target/gcn/fpdiv.c
! 593ff8b862d5f30b2d336faadef6af8b  gcc/testsuite/gcc.target/gcn/gcn.exp
  1e706003dee9df5d57006e904e26af25  gcc/testsuite/gcc.target/gcn/vcc-clobber.c
+ 84f0af82a71d1e7354056e7e80e57cc6  gcc/testsuite/gcc.target/h8300/add-2.c
+ 216037d0da5ff83a3c5aee08d451cc6a  gcc/testsuite/gcc.target/h8300/add-3.c
+ 60aaa20daa95a2c6a46f951ed2210274  gcc/testsuite/gcc.target/h8300/add.c
  6618feb3136b4db14cb25d0ac22056c4  gcc/testsuite/gcc.target/h8300/andsi3_ashift_n_lower.c
! 47d80e6ae376a65a4f315f623467d345  gcc/testsuite/gcc.target/h8300/h8300.exp
  945675e6af6576f674dcc30697a6f78b  gcc/testsuite/gcc.target/h8300/pr13721.c
  5788c901799e460b8e5c429a23b94ebe  gcc/testsuite/gcc.target/h8300/pr17306-1.c
  4a76a6a9bd3c90b87865db2ad9c10434  gcc/testsuite/gcc.target/h8300/pr17306-2.c
  c91efeb870ae7690b89a4b3ebff5d024  gcc/testsuite/gcc.target/h8300/pr58400.c
  344a21000f3cf05f2baaf02b2c346cd5  gcc/testsuite/gcc.target/h8300/pragma-isr.c
  aaaadf978237931983f712ab447eeff0  gcc/testsuite/gcc.target/h8300/pragma-isr2.c
! 520d992d481a80dfc60ea32b9335b583  gcc/testsuite/gcc.target/h8300/sub-2.c
! 04357d0cac796ebc8355f137f2041585  gcc/testsuite/gcc.target/h8300/sub-3.c
! 4e0e54c95521e668ac88da0666ea4642  gcc/testsuite/gcc.target/h8300/sub.c
! ab471212df6b291132157fa18522f5eb  gcc/testsuite/gcc.target/hppa/hppa.exp
  b3208ea4097d665215fd20e76146b954  gcc/testsuite/gcc.target/hppa/shadd-1.c
  58bd6a3fd73be5559699b62200334b42  gcc/testsuite/gcc.target/hppa/shadd-2.c
  bec45e424269c61868beb11e175edb5f  gcc/testsuite/gcc.target/hppa/shadd-3.c
*************** a4841f1cdef224e6bab5e84cab7b5407  gcc/te
*** 54193,54201 ****
  ba2b0a148c01cb904bce54c8c192a35b  gcc/testsuite/gcc.target/i386/387-4.c
  7fae4e8187ed3debe5eb83a1fb4a6b14  gcc/testsuite/gcc.target/i386/387-5.c
  5156159bb0917a8c222142a2aa57bcc1  gcc/testsuite/gcc.target/i386/387-6.c
! 8ea9d12125244c8fc5b1718e62aacd02  gcc/testsuite/gcc.target/i386/387-7.c
  4cfd9d57073fabab485c53f1c2d00c25  gcc/testsuite/gcc.target/i386/387-8.c
! 4ea889aba65e39a9d67baaf922518b77  gcc/testsuite/gcc.target/i386/387-9.c
  91337204c2081a72c4c13ea2ec921608  gcc/testsuite/gcc.target/i386/387-builtin-fp-int-inexact.c
  5469c17dc7b0392f4f9625edef0e778f  gcc/testsuite/gcc.target/i386/387-ficom-1.c
  fd939ddc9201af6cf885837c3c2bd00b  gcc/testsuite/gcc.target/i386/387-ficom-2.c
--- 57615,57623 ----
  ba2b0a148c01cb904bce54c8c192a35b  gcc/testsuite/gcc.target/i386/387-4.c
  7fae4e8187ed3debe5eb83a1fb4a6b14  gcc/testsuite/gcc.target/i386/387-5.c
  5156159bb0917a8c222142a2aa57bcc1  gcc/testsuite/gcc.target/i386/387-6.c
! a01233cbef1090ea98812e3c5fa141ec  gcc/testsuite/gcc.target/i386/387-7.c
  4cfd9d57073fabab485c53f1c2d00c25  gcc/testsuite/gcc.target/i386/387-8.c
! 907edc8ec6c50049c9937c74d2f130bf  gcc/testsuite/gcc.target/i386/387-9.c
  91337204c2081a72c4c13ea2ec921608  gcc/testsuite/gcc.target/i386/387-builtin-fp-int-inexact.c
  5469c17dc7b0392f4f9625edef0e778f  gcc/testsuite/gcc.target/i386/387-ficom-1.c
  fd939ddc9201af6cf885837c3c2bd00b  gcc/testsuite/gcc.target/i386/387-ficom-2.c
*************** ae8b5a5d686fedd54544f4210ebf0d66  gcc/te
*** 54266,54271 ****
--- 57688,57706 ----
  d3f15f077bac4fdd98e262ff70319e29  gcc/testsuite/gcc.target/i386/amd64-abi-7.c
  41e281a8a41c48fe7dbd02b555d86032  gcc/testsuite/gcc.target/i386/amd64-abi-8.c
  29b2c8175a8aeb1de6d8e6148a11d79d  gcc/testsuite/gcc.target/i386/amd64-abi-9.c
+ a9708e6031cab77e167d74e76fec85a7  gcc/testsuite/gcc.target/i386/amx-check.h
+ 3e5ed8f51d1403b179db592f12cb019c  gcc/testsuite/gcc.target/i386/amxbf16-asmatt-1.c
+ 215b9569abd57352c2d13ba5129e07cd  gcc/testsuite/gcc.target/i386/amxbf16-asmintel-1.c
+ f9606b856df6ab061a41088814292c28  gcc/testsuite/gcc.target/i386/amxbf16-dpbf16ps-2.c
+ 9c0241aa040bd07b656b878c62a423b9  gcc/testsuite/gcc.target/i386/amxint8-asmatt-1.c
+ 2622cfbb5e38bb55e4751132b8d85ea3  gcc/testsuite/gcc.target/i386/amxint8-asmintel-1.c
+ c5330aafe258890f8c38cb1aab66e148  gcc/testsuite/gcc.target/i386/amxint8-dpbssd-2.c
+ d60dbd15c646ed84efd9129d21d39b6d  gcc/testsuite/gcc.target/i386/amxint8-dpbsud-2.c
+ 7afa2ba7a106ecf4dc01a7a82fee2f49  gcc/testsuite/gcc.target/i386/amxint8-dpbusd-2.c
+ 3eebd7a67adf970dc6eea82ff3eda30d  gcc/testsuite/gcc.target/i386/amxint8-dpbuud-2.c
+ 4e7e8638f4652613beb251daa4730463  gcc/testsuite/gcc.target/i386/amxtile-2.c
+ 8e7fab1b3f5c89155f09aabb59da8382  gcc/testsuite/gcc.target/i386/amxtile-asmatt-1.c
+ 2629a435840ab211444b4a2af4563d8d  gcc/testsuite/gcc.target/i386/amxtile-asmintel-1.c
  c5cfc6b01e748536e4ac5d65b3528952  gcc/testsuite/gcc.target/i386/andor-1.c
  c052d916aa90fa5343dac48ba370180f  gcc/testsuite/gcc.target/i386/andor-2.c
  2a0e75dae748effbe9abaa9db2d01436  gcc/testsuite/gcc.target/i386/asm-1.c
*************** c34fe5a5178e9716c0f68ffb47564686  gcc/te
*** 54292,54298 ****
  2632af969dd8680f097556a40ba2c147  gcc/testsuite/gcc.target/i386/attr-nocf-check-3a.c
  9702921db90d8706268aafc9574e606d  gcc/testsuite/gcc.target/i386/attr-returns_twice-1.c
  b417781449436dad69aae8b9300baa1a  gcc/testsuite/gcc.target/i386/attributes-error.c
! 2afb83678e11efa5c2884781e7fd0358  gcc/testsuite/gcc.target/i386/avx-1.c
  a78738f3c17b2bcf3bd51fb01d0eaeba  gcc/testsuite/gcc.target/i386/avx-2.c
  b8752c209e6f3770321077d53e28d157  gcc/testsuite/gcc.target/i386/avx-3.c
  604a63c576a08022e714a4940dc0e904  gcc/testsuite/gcc.target/i386/avx-additional-reg-names.c
--- 57727,57733 ----
  2632af969dd8680f097556a40ba2c147  gcc/testsuite/gcc.target/i386/attr-nocf-check-3a.c
  9702921db90d8706268aafc9574e606d  gcc/testsuite/gcc.target/i386/attr-returns_twice-1.c
  b417781449436dad69aae8b9300baa1a  gcc/testsuite/gcc.target/i386/attributes-error.c
! f0a8adac6709a3cdd1776b080b96b910  gcc/testsuite/gcc.target/i386/avx-1.c
  a78738f3c17b2bcf3bd51fb01d0eaeba  gcc/testsuite/gcc.target/i386/avx-2.c
  b8752c209e6f3770321077d53e28d157  gcc/testsuite/gcc.target/i386/avx-3.c
  604a63c576a08022e714a4940dc0e904  gcc/testsuite/gcc.target/i386/avx-additional-reg-names.c
*************** cc333821dac2582a7d7d827ae9a776af  gcc/te
*** 54606,54611 ****
--- 58041,58052 ----
  9bc67f11d8d99248703cd4bc09ea5cdd  gcc/testsuite/gcc.target/i386/avx-vmulps-256-1.c
  119d38e03c5c4fd0faca7bef47afdaa9  gcc/testsuite/gcc.target/i386/avx-vmulsd-1.c
  a22958a8e5863b4693875a80a54bc40e  gcc/testsuite/gcc.target/i386/avx-vmulss-1.c
+ 4e739c350838e938a31b6135b9c615bd  gcc/testsuite/gcc.target/i386/avx-vnni-1.c
+ 19386d732c5d7be3450f15f832a8c0c2  gcc/testsuite/gcc.target/i386/avx-vnni-2.c
+ b0bf037f9a50e088dd85932301d9fc07  gcc/testsuite/gcc.target/i386/avx-vnni-3.c
+ e3e488158dc13171754db36433a1a590  gcc/testsuite/gcc.target/i386/avx-vnni-4.c
+ cd5d0ede40eccb47dbc057c8736994b5  gcc/testsuite/gcc.target/i386/avx-vnni-5.c
+ abe581a7fbf14565efc609c352945b20  gcc/testsuite/gcc.target/i386/avx-vnni-6.c
  02e4fd8b61f9b1a841c0910bb5d4c6d5  gcc/testsuite/gcc.target/i386/avx-vorpd-1.c
  faf286e3db211f8fc63bc65a8cdc243a  gcc/testsuite/gcc.target/i386/avx-vorpd-256-1.c
  902407f15ae1f85ac0a29fc3414e468c  gcc/testsuite/gcc.target/i386/avx-vorps-1.c
*************** ba846683ad2a309cdffbf12872096e86  gcc/te
*** 54650,54655 ****
--- 58091,58100 ----
  52293b8a9ef70b71db4c90c1fd33d37a  gcc/testsuite/gcc.target/i386/avx-vpcmpistri-2.c
  c0de60145a0f756d3db27757bd748140  gcc/testsuite/gcc.target/i386/avx-vpcmpistrm-1.c
  8eb25262092b9e7eef99f85c6a109ec3  gcc/testsuite/gcc.target/i386/avx-vpcmpistrm-2.c
+ 6175b5aea2c14775264aab80fa34d961  gcc/testsuite/gcc.target/i386/avx-vpdpbusd-2.c
+ a5e0c5fa08f599c8c7079c752d33d459  gcc/testsuite/gcc.target/i386/avx-vpdpbusds-2.c
+ 43d1d45b7f43b4cb540434f83f915381  gcc/testsuite/gcc.target/i386/avx-vpdpwssd-2.c
+ 26307505786f9cea01c805297a686152  gcc/testsuite/gcc.target/i386/avx-vpdpwssds-2.c
  efe2eebad2cfcff73323974e9b4dcba4  gcc/testsuite/gcc.target/i386/avx-vperm2f128-256-1.c
  6046bba0d251a3ee7aab8a23a160518e  gcc/testsuite/gcc.target/i386/avx-vperm2f128-256-2.c
  641e00e7efae640284e3cd9e410cf21c  gcc/testsuite/gcc.target/i386/avx-vperm2f128-256-3.c
*************** e496930891266115a9ceee7c7de0cac4  gcc/te
*** 54851,54856 ****
--- 58296,58302 ----
  196aec2399172c70cc1b6322412ec45d  gcc/testsuite/gcc.target/i386/avx-vzeroupper-7.c
  2dd3d3b02f96ec89ffed6f185b8e940f  gcc/testsuite/gcc.target/i386/avx-vzeroupper-8.c
  280e2807a80caedf3c9b1fd25684032d  gcc/testsuite/gcc.target/i386/avx-vzeroupper-9.c
+ a5901d33285892facee8dbfe287ce0d1  gcc/testsuite/gcc.target/i386/avx2-broadcast-pr87767-1.c
  958690bb20e5ef6d9a38def7eb976f13  gcc/testsuite/gcc.target/i386/avx2-check.h
  7dc98d98981fa7b82c0ae95d09c8128c  gcc/testsuite/gcc.target/i386/avx2-cvt-1.c
  ea08c4d81609e53332974756983fe0c2  gcc/testsuite/gcc.target/i386/avx2-cvt-2.c
*************** b3b620b8dc044e4100a06e231a5708e2  gcc/te
*** 54949,54965 ****
  21a650649af5438b7cf42a16ca857a80  gcc/testsuite/gcc.target/i386/avx2-pr93430.c
  c688523ced8060176cab81eb131ee08e  gcc/testsuite/gcc.target/i386/avx2-pr93594.c
  fe1e9952f545a4585608336ac4da4efc  gcc/testsuite/gcc.target/i386/avx2-pr94460.c
  4796bd3878280cf20a2d843b24cb6576  gcc/testsuite/gcc.target/i386/avx2-pr99517-1.c
  eb660431400dfd8f30b0e0eac2d5c055  gcc/testsuite/gcc.target/i386/avx2-pr99517-2.c
  2b83554762241a146df7ccc1617e1bfa  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsd_pd-1.c
  193f0a7d029b84ce4e3b2e58eac8240a  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsd_pd-2.c
! 84a46e7f4338347591f1c8fe0aaceda5  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c
! 157ec407d672de60d293c20c68f2d5a9  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-2.c
  e1d1b9e055d09a1e78f8bfc020b865df  gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps-1.c
  1b29b481cb4054908fcf08ddd651fdd4  gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps-2.c
  681569efeb3abec2f94b0963a699de73  gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-1.c
  4de054259fe132f2282ead93ad09a5cd  gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-2.c
  70ea44bff5911320b0dbdcab7f556cdc  gcc/testsuite/gcc.target/i386/avx2-vec-mask-bit-not.c
  f5ff5b2d2c7f5ab0f0ed01ea89033342  gcc/testsuite/gcc.target/i386/avx2-vect-aggressive-1.c
  0bf4afaaaa8289dd88f23d84fd1850f4  gcc/testsuite/gcc.target/i386/avx2-vect-aggressive.c
  e54a28e4d5ee3112ed858f60d384c4d8  gcc/testsuite/gcc.target/i386/avx2-vect-mask-store-move1.c
--- 58395,58416 ----
  21a650649af5438b7cf42a16ca857a80  gcc/testsuite/gcc.target/i386/avx2-pr93430.c
  c688523ced8060176cab81eb131ee08e  gcc/testsuite/gcc.target/i386/avx2-pr93594.c
  fe1e9952f545a4585608336ac4da4efc  gcc/testsuite/gcc.target/i386/avx2-pr94460.c
+ e3a487b442acf86bbfc79eba4594f8bd  gcc/testsuite/gcc.target/i386/avx2-pr98461.c
  4796bd3878280cf20a2d843b24cb6576  gcc/testsuite/gcc.target/i386/avx2-pr99517-1.c
  eb660431400dfd8f30b0e0eac2d5c055  gcc/testsuite/gcc.target/i386/avx2-pr99517-2.c
+ 76659f18345789670cd4d9be1e6d885e  gcc/testsuite/gcc.target/i386/avx2-shiftqihi-constant-1.c
+ fedde1c2812219bd1650a5838e226124  gcc/testsuite/gcc.target/i386/avx2-shiftqihi-constant-2.c
  2b83554762241a146df7ccc1617e1bfa  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsd_pd-1.c
  193f0a7d029b84ce4e3b2e58eac8240a  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsd_pd-2.c
! c914fed76b70b1daf2ac4785dcc5ddd7  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c
! 2334bf8cdee7b4a9d5ee0ba235a96bcd  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-2.c
  e1d1b9e055d09a1e78f8bfc020b865df  gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps-1.c
  1b29b481cb4054908fcf08ddd651fdd4  gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps-2.c
  681569efeb3abec2f94b0963a699de73  gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-1.c
  4de054259fe132f2282ead93ad09a5cd  gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-2.c
  70ea44bff5911320b0dbdcab7f556cdc  gcc/testsuite/gcc.target/i386/avx2-vec-mask-bit-not.c
+ 990742bce89a71ddcd0d9565f96bfe57  gcc/testsuite/gcc.target/i386/avx2-vec-set-1.c
+ 4e5aa3a19d8c19848e116c07be676e2e  gcc/testsuite/gcc.target/i386/avx2-vec-set-2.c
  f5ff5b2d2c7f5ab0f0ed01ea89033342  gcc/testsuite/gcc.target/i386/avx2-vect-aggressive-1.c
  0bf4afaaaa8289dd88f23d84fd1850f4  gcc/testsuite/gcc.target/i386/avx2-vect-aggressive.c
  e54a28e4d5ee3112ed858f60d384c4d8  gcc/testsuite/gcc.target/i386/avx2-vect-mask-store-move1.c
*************** df6e4022dfad9e000020611638b05fdd  gcc/te
*** 55332,55337 ****
--- 58783,58789 ----
  f877c7aff68980a873311e9e3029ab4e  gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtne2ps2bf16-1.c
  334659570f347a4b03cf37336321aa2c  gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1.c
  4d0bcbe3e5ed908d180434ef26bd4a3a  gcc/testsuite/gcc.target/i386/avx512bf16vl-vdpbf16ps-1.c
+ 0a1f022cd3e406ca9b23018d3f8d6281  gcc/testsuite/gcc.target/i386/avx512bitalg-pr97770-1.c
  84a11e540e8533df61152a30c873a575  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb-1.c
  d728d0693656bb9b505f505356762d3c  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb.c
  7f84f82c7512e69110cd9ace71cf5f78  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntbvl.c
*************** f1f5b52db53aaf0ec3ec8e60f1e53099  gcc/te
*** 55381,55389 ****
  99126ae9927eb84833327f3053e40183  gcc/testsuite/gcc.target/i386/avx512bw-kunpckdq-1.c
  ac935498eaa8cf23ca4f823df6833cdf  gcc/testsuite/gcc.target/i386/avx512bw-kunpckdq-2.c
  df2296d2b5d579486ed87b137d771576  gcc/testsuite/gcc.target/i386/avx512bw-kunpckdq-3.c
! 88dd8e02fff189c873caf06112dd32d2  gcc/testsuite/gcc.target/i386/avx512bw-kunpckwd-1.c
  6e02a159bd149994a21ef25a9cb51821  gcc/testsuite/gcc.target/i386/avx512bw-kunpckwd-2.c
! 655466361086253708e0c3f9c637df83  gcc/testsuite/gcc.target/i386/avx512bw-kunpckwd-3.c
  7f8f82e7359886bd1afb055ee0cb28c9  gcc/testsuite/gcc.target/i386/avx512bw-kxnord-1.c
  c72add6d291b707951ee1d66088d7cc2  gcc/testsuite/gcc.target/i386/avx512bw-kxnorq-1.c
  de9ce5efe88acd77018d22a7dcdb9493  gcc/testsuite/gcc.target/i386/avx512bw-kxord-1.c
--- 58833,58841 ----
  99126ae9927eb84833327f3053e40183  gcc/testsuite/gcc.target/i386/avx512bw-kunpckdq-1.c
  ac935498eaa8cf23ca4f823df6833cdf  gcc/testsuite/gcc.target/i386/avx512bw-kunpckdq-2.c
  df2296d2b5d579486ed87b137d771576  gcc/testsuite/gcc.target/i386/avx512bw-kunpckdq-3.c
! 35788a82ca9ba2b8714974c0dfaea766  gcc/testsuite/gcc.target/i386/avx512bw-kunpckwd-1.c
  6e02a159bd149994a21ef25a9cb51821  gcc/testsuite/gcc.target/i386/avx512bw-kunpckwd-2.c
! 27f1ef876dc4e401fe0d84f6b8526ba3  gcc/testsuite/gcc.target/i386/avx512bw-kunpckwd-3.c
  7f8f82e7359886bd1afb055ee0cb28c9  gcc/testsuite/gcc.target/i386/avx512bw-kxnord-1.c
  c72add6d291b707951ee1d66088d7cc2  gcc/testsuite/gcc.target/i386/avx512bw-kxnorq-1.c
  de9ce5efe88acd77018d22a7dcdb9493  gcc/testsuite/gcc.target/i386/avx512bw-kxord-1.c
*************** e35d933dd19222a47493fe48e2676f39  gcc/te
*** 55402,55407 ****
--- 58854,58860 ----
  93482d0aa8a9c09d5db85dcae4d5be1f  gcc/testsuite/gcc.target/i386/avx512bw-pr85832.c
  c3390538a58df83dc92017cf0b4fd3fb  gcc/testsuite/gcc.target/i386/avx512bw-pr86036.c
  c3f19932e24d2aa723b1d3fc00ae4836  gcc/testsuite/gcc.target/i386/avx512bw-pr87138.c
+ 6829f5fa9c8a3314ca4ed15df7c41bd2  gcc/testsuite/gcc.target/i386/avx512bw-pr88465.c
  f43b98d89586a44186b9c785eedf7a28  gcc/testsuite/gcc.target/i386/avx512bw-pr91150.c
  6bad096ebe9551612b83b53e42b2abd8  gcc/testsuite/gcc.target/i386/avx512bw-pr91157.c
  16f2ecba7d8824b867046e20ec65abf9  gcc/testsuite/gcc.target/i386/avx512bw-pr91201.c
*************** e8db4d816e2c3378fdfdbb76bcefc8d4  gcc/te
*** 55416,55428 ****
  642ab891bbf1f6781764a556edec8bef  gcc/testsuite/gcc.target/i386/avx512bw-pr94500.c
  7dcfc58283132c11a804bcb3e75078b8  gcc/testsuite/gcc.target/i386/avx512bw-pr94509-1.c
  20801545b43ffc43b81f2821ece5ad3c  gcc/testsuite/gcc.target/i386/avx512bw-pr94509-2.c
  186b4d26f65c47b5b328795efe473c71  gcc/testsuite/gcc.target/i386/avx512bw-vdbpsadbw-1.c
  aa76e419ea439da7ae72280b04d232b8  gcc/testsuite/gcc.target/i386/avx512bw-vdbpsadbw-2.c
  16bb16a08e4faedb360f8c53d0f1b03f  gcc/testsuite/gcc.target/i386/avx512bw-vect-simd-11.c
  ddea7551446f3624078280bf402b1246  gcc/testsuite/gcc.target/i386/avx512bw-vect-simd-15.c
! c8ba4cce715fd7698d0bd8d7cc7eca78  gcc/testsuite/gcc.target/i386/avx512bw-vmovdqu16-1.c
  b36d91ed2b1544179ebaf8ce02e87137  gcc/testsuite/gcc.target/i386/avx512bw-vmovdqu16-2.c
! 19342831544f21d59d823c4bbc6a6323  gcc/testsuite/gcc.target/i386/avx512bw-vmovdqu8-1.c
  6604cbd1523e1681a152d42d3da723ff  gcc/testsuite/gcc.target/i386/avx512bw-vmovdqu8-2.c
  f2c09f0461fc411ac562588f78dbad13  gcc/testsuite/gcc.target/i386/avx512bw-vpabsb-1.c
  880140ded63d84cb98c028b6681de716  gcc/testsuite/gcc.target/i386/avx512bw-vpabsb-2.c
--- 58869,58889 ----
  642ab891bbf1f6781764a556edec8bef  gcc/testsuite/gcc.target/i386/avx512bw-pr94500.c
  7dcfc58283132c11a804bcb3e75078b8  gcc/testsuite/gcc.target/i386/avx512bw-pr94509-1.c
  20801545b43ffc43b81f2821ece5ad3c  gcc/testsuite/gcc.target/i386/avx512bw-pr94509-2.c
+ e4698cb8823977a5894910b921a979aa  gcc/testsuite/gcc.target/i386/avx512bw-pr95488-1.c
+ 2f578e3dd41abd30d73bf9e0b3b1e474  gcc/testsuite/gcc.target/i386/avx512bw-pr95488-2.c
+ 6e566b675df9dfd7f6f79b8615cc780b  gcc/testsuite/gcc.target/i386/avx512bw-pr96891-1.c
+ de70add72880f23cd146fbcc12d0c044  gcc/testsuite/gcc.target/i386/avx512bw-pr96906-1.c
+ 6511b98e20232b21f118998e100e6429  gcc/testsuite/gcc.target/i386/avx512bw-shiftqihi-constant-1.c
+ 86d1e2efcab8b345a067e94b7ba2d579  gcc/testsuite/gcc.target/i386/avx512bw-shiftqihi-constant-2.c
  186b4d26f65c47b5b328795efe473c71  gcc/testsuite/gcc.target/i386/avx512bw-vdbpsadbw-1.c
  aa76e419ea439da7ae72280b04d232b8  gcc/testsuite/gcc.target/i386/avx512bw-vdbpsadbw-2.c
+ 9cd9525f073ba6acdb51bc2685dce1d9  gcc/testsuite/gcc.target/i386/avx512bw-vec-set-1.c
+ 252195c21a085a32b6eabfa3110379dd  gcc/testsuite/gcc.target/i386/avx512bw-vec-set-2.c
  16bb16a08e4faedb360f8c53d0f1b03f  gcc/testsuite/gcc.target/i386/avx512bw-vect-simd-11.c
  ddea7551446f3624078280bf402b1246  gcc/testsuite/gcc.target/i386/avx512bw-vect-simd-15.c
! 1a10b49e0a47ebdf8748c52df3108c6b  gcc/testsuite/gcc.target/i386/avx512bw-vmovdqu16-1.c
  b36d91ed2b1544179ebaf8ce02e87137  gcc/testsuite/gcc.target/i386/avx512bw-vmovdqu16-2.c
! 8ae3d7310aa70ab51a46f71ecf59efc5  gcc/testsuite/gcc.target/i386/avx512bw-vmovdqu8-1.c
  6604cbd1523e1681a152d42d3da723ff  gcc/testsuite/gcc.target/i386/avx512bw-vmovdqu8-2.c
  f2c09f0461fc411ac562588f78dbad13  gcc/testsuite/gcc.target/i386/avx512bw-vpabsb-1.c
  880140ded63d84cb98c028b6681de716  gcc/testsuite/gcc.target/i386/avx512bw-vpabsb-2.c
*************** c190f488158c291a86b2bfcbefd72606  gcc/te
*** 55660,55666 ****
  76f0bbd07961f28e984be251a9d852a1  gcc/testsuite/gcc.target/i386/avx512dq-kmovb-2.c
  c98ae2e7da87e101f95371ada8ab2a88  gcc/testsuite/gcc.target/i386/avx512dq-kmovb-3.c
  7eb1815ff4d364dcc80a16c84dade28a  gcc/testsuite/gcc.target/i386/avx512dq-kmovb-4.c
! 5fc255ac8c901aab6627d022a6e54443  gcc/testsuite/gcc.target/i386/avx512dq-kmovb-5.c
  5de656deed1f4f612166c64eb07a235f  gcc/testsuite/gcc.target/i386/avx512dq-knotb-1.c
  e0a02dc34b025dd00a9dca8569bb9627  gcc/testsuite/gcc.target/i386/avx512dq-korb-1.c
  7b558c353c8534a7a1824d5452d1d3e0  gcc/testsuite/gcc.target/i386/avx512dq-kortestb-1.c
--- 59121,59127 ----
  76f0bbd07961f28e984be251a9d852a1  gcc/testsuite/gcc.target/i386/avx512dq-kmovb-2.c
  c98ae2e7da87e101f95371ada8ab2a88  gcc/testsuite/gcc.target/i386/avx512dq-kmovb-3.c
  7eb1815ff4d364dcc80a16c84dade28a  gcc/testsuite/gcc.target/i386/avx512dq-kmovb-4.c
! 5a235967dbf4cd96b9f176ddbc5d419e  gcc/testsuite/gcc.target/i386/avx512dq-kmovb-5.c
  5de656deed1f4f612166c64eb07a235f  gcc/testsuite/gcc.target/i386/avx512dq-knotb-1.c
  e0a02dc34b025dd00a9dca8569bb9627  gcc/testsuite/gcc.target/i386/avx512dq-korb-1.c
  7b558c353c8534a7a1824d5452d1d3e0  gcc/testsuite/gcc.target/i386/avx512dq-kortestb-1.c
*************** a55883cf9460124ef35490ac617f199c  gcc/te
*** 55689,55701 ****
  a861d7cbf6609ade6f9d77f005fdd389  gcc/testsuite/gcc.target/i386/avx512dq-pr90991-2.c
  5b7eeade63f43c643092ab9e82d0bc38  gcc/testsuite/gcc.target/i386/avx512dq-pr93673.c
  802a65b817227165abdd16614cc84b66  gcc/testsuite/gcc.target/i386/avx512dq-vandnpd-1.c
! 16658064864d12d7e0b7ea05daac767c  gcc/testsuite/gcc.target/i386/avx512dq-vandnpd-2.c
  f106641a7d12e3bd58bae9ca7a4d556b  gcc/testsuite/gcc.target/i386/avx512dq-vandnps-1.c
! 65a4e980b6bc8f300459671700b57e62  gcc/testsuite/gcc.target/i386/avx512dq-vandnps-2.c
  98b49eb58caed0943a7789a478629053  gcc/testsuite/gcc.target/i386/avx512dq-vandpd-1.c
! e27468910014e32b98da4b5eb52ba371  gcc/testsuite/gcc.target/i386/avx512dq-vandpd-2.c
  0d3bdd4b4095762746b14662731ead37  gcc/testsuite/gcc.target/i386/avx512dq-vandps-1.c
! d31620d9ea0a7ddc087e9f966c70fce6  gcc/testsuite/gcc.target/i386/avx512dq-vandps-2.c
  1a90bed5c77dcb90096076e598f96ab6  gcc/testsuite/gcc.target/i386/avx512dq-vbroadcast-2.c
  3df0ed7eb74ba284a808d0c5d1bcde58  gcc/testsuite/gcc.target/i386/avx512dq-vbroadcastf32x2-1.c
  2976c17f1976ba8f67a8a58300c5a53c  gcc/testsuite/gcc.target/i386/avx512dq-vbroadcastf32x2-2.c
--- 59150,59162 ----
  a861d7cbf6609ade6f9d77f005fdd389  gcc/testsuite/gcc.target/i386/avx512dq-pr90991-2.c
  5b7eeade63f43c643092ab9e82d0bc38  gcc/testsuite/gcc.target/i386/avx512dq-pr93673.c
  802a65b817227165abdd16614cc84b66  gcc/testsuite/gcc.target/i386/avx512dq-vandnpd-1.c
! 662686f5a6135b453e71e9349d333155  gcc/testsuite/gcc.target/i386/avx512dq-vandnpd-2.c
  f106641a7d12e3bd58bae9ca7a4d556b  gcc/testsuite/gcc.target/i386/avx512dq-vandnps-1.c
! 81429d872670de2d6d9288531315e44d  gcc/testsuite/gcc.target/i386/avx512dq-vandnps-2.c
  98b49eb58caed0943a7789a478629053  gcc/testsuite/gcc.target/i386/avx512dq-vandpd-1.c
! 43743954ada2e239e173b497e2f184ef  gcc/testsuite/gcc.target/i386/avx512dq-vandpd-2.c
  0d3bdd4b4095762746b14662731ead37  gcc/testsuite/gcc.target/i386/avx512dq-vandps-1.c
! c3e3004409d608a7988fc991d14eea8f  gcc/testsuite/gcc.target/i386/avx512dq-vandps-2.c
  1a90bed5c77dcb90096076e598f96ab6  gcc/testsuite/gcc.target/i386/avx512dq-vbroadcast-2.c
  3df0ed7eb74ba284a808d0c5d1bcde58  gcc/testsuite/gcc.target/i386/avx512dq-vbroadcastf32x2-1.c
  2976c17f1976ba8f67a8a58300c5a53c  gcc/testsuite/gcc.target/i386/avx512dq-vbroadcastf32x2-2.c
*************** ce0e116462de6d515e859bf25115f15c  gcc/te
*** 55755,55763 ****
  260a7cb015ddd01417c9c860002859ab  gcc/testsuite/gcc.target/i386/avx512dq-vinserti64x2-1.c
  e5ef48ba577dc0d50956be2f12d50662  gcc/testsuite/gcc.target/i386/avx512dq-vinserti64x2-2.c
  4e1fa856bafa26b75babe7ade0d36a27  gcc/testsuite/gcc.target/i386/avx512dq-vorpd-1.c
! b6ccb6d0bbdd441561df115040e3f196  gcc/testsuite/gcc.target/i386/avx512dq-vorpd-2.c
  9da8f342018014aafd6f2a74dfb6077d  gcc/testsuite/gcc.target/i386/avx512dq-vorps-1.c
! 2fa509635d50cc986c438f77f35882b3  gcc/testsuite/gcc.target/i386/avx512dq-vorps-2.c
  494ebb8264d0fe3e87fd45cdbf3b1489  gcc/testsuite/gcc.target/i386/avx512dq-vpextr-1.c
  d67f88a2ccfe0eec7d161a2913d9037c  gcc/testsuite/gcc.target/i386/avx512dq-vpinsr-1.c
  134968805451b93f9290ad8428f936a3  gcc/testsuite/gcc.target/i386/avx512dq-vpmovd2m-1.c
--- 59216,59224 ----
  260a7cb015ddd01417c9c860002859ab  gcc/testsuite/gcc.target/i386/avx512dq-vinserti64x2-1.c
  e5ef48ba577dc0d50956be2f12d50662  gcc/testsuite/gcc.target/i386/avx512dq-vinserti64x2-2.c
  4e1fa856bafa26b75babe7ade0d36a27  gcc/testsuite/gcc.target/i386/avx512dq-vorpd-1.c
! ccbfe69195e27f84e8bcdde24413106d  gcc/testsuite/gcc.target/i386/avx512dq-vorpd-2.c
  9da8f342018014aafd6f2a74dfb6077d  gcc/testsuite/gcc.target/i386/avx512dq-vorps-1.c
! b416c81d6399cf59ef9df9e967d3ea4b  gcc/testsuite/gcc.target/i386/avx512dq-vorps-2.c
  494ebb8264d0fe3e87fd45cdbf3b1489  gcc/testsuite/gcc.target/i386/avx512dq-vpextr-1.c
  d67f88a2ccfe0eec7d161a2913d9037c  gcc/testsuite/gcc.target/i386/avx512dq-vpinsr-1.c
  134968805451b93f9290ad8428f936a3  gcc/testsuite/gcc.target/i386/avx512dq-vpmovd2m-1.c
*************** af54efee3b10c7d5232b6fef2eb570db  gcc/te
*** 55780,55795 ****
  5500a687d6e152b13d015cdfdb170306  gcc/testsuite/gcc.target/i386/avx512dq-vrangess-1.c
  33011593c2ae67cfc3248db4adf190fb  gcc/testsuite/gcc.target/i386/avx512dq-vreducepd-1.c
  1f6bac81f625ba4449e8f138026057ee  gcc/testsuite/gcc.target/i386/avx512dq-vreducepd-2.c
  9ab5d8f3813d055ee379bcf3b8c34484  gcc/testsuite/gcc.target/i386/avx512dq-vreduceps-1.c
  f3ad87ac05bd79c4aae795b5c86f4c3c  gcc/testsuite/gcc.target/i386/avx512dq-vreduceps-2.c
! 64ab7c9e9be10a5159d1f35f42b28d93  gcc/testsuite/gcc.target/i386/avx512dq-vreducesd-1.c
! 1867e3fd135af9d7159eedcfb2c0993a  gcc/testsuite/gcc.target/i386/avx512dq-vreducesd-2.c
! c2680c8cf06e91d3e17ca17ef6ae17a6  gcc/testsuite/gcc.target/i386/avx512dq-vreducess-1.c
! 2d3dcf40b16c9a345131a4c49c1dac7e  gcc/testsuite/gcc.target/i386/avx512dq-vreducess-2.c
  1b13c5919cffe7b16ec23ae099c1a222  gcc/testsuite/gcc.target/i386/avx512dq-vxorpd-1.c
! 3fb6dffcc32d68ffaa90066d950b552f  gcc/testsuite/gcc.target/i386/avx512dq-vxorpd-2.c
  b91dc4453f3b5b5e4ea6147d114bb759  gcc/testsuite/gcc.target/i386/avx512dq-vxorps-1.c
! a873c2378e6ff9f4c5ef7ff0578b6e8b  gcc/testsuite/gcc.target/i386/avx512dq-vxorps-2.c
  c405e2766f008522fd2c57413f19b993  gcc/testsuite/gcc.target/i386/avx512er-check.h
  b0e1db6611b800faabd5d2b58087c958  gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-1.c
  45a80e5bfb75a7687ce40c8252c02bb1  gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-2.c
--- 59241,59260 ----
  5500a687d6e152b13d015cdfdb170306  gcc/testsuite/gcc.target/i386/avx512dq-vrangess-1.c
  33011593c2ae67cfc3248db4adf190fb  gcc/testsuite/gcc.target/i386/avx512dq-vreducepd-1.c
  1f6bac81f625ba4449e8f138026057ee  gcc/testsuite/gcc.target/i386/avx512dq-vreducepd-2.c
+ 07029adc8941242fe844b4199eaccb25  gcc/testsuite/gcc.target/i386/avx512dq-vreducepd-3.c
+ a81c400bb2109bfa65926729bd28ce74  gcc/testsuite/gcc.target/i386/avx512dq-vreducepd-4.c
  9ab5d8f3813d055ee379bcf3b8c34484  gcc/testsuite/gcc.target/i386/avx512dq-vreduceps-1.c
  f3ad87ac05bd79c4aae795b5c86f4c3c  gcc/testsuite/gcc.target/i386/avx512dq-vreduceps-2.c
! 256d6929daa33a4c5bcb3aaaf1eb5260  gcc/testsuite/gcc.target/i386/avx512dq-vreduceps-3.c
! 05e2e691a54d1d7d679200c87b52f5d9  gcc/testsuite/gcc.target/i386/avx512dq-vreduceps-4.c
! eb1182b1bc9929fffea30e9274753e93  gcc/testsuite/gcc.target/i386/avx512dq-vreducesd-1.c
! f93a614a15d204e65833d00faeae06bd  gcc/testsuite/gcc.target/i386/avx512dq-vreducesd-2.c
! 20aed644a835776e37e1d5aba4103fa4  gcc/testsuite/gcc.target/i386/avx512dq-vreducess-1.c
! 73efe722ab3e8d69d28347b8d8df38ae  gcc/testsuite/gcc.target/i386/avx512dq-vreducess-2.c
  1b13c5919cffe7b16ec23ae099c1a222  gcc/testsuite/gcc.target/i386/avx512dq-vxorpd-1.c
! d2485d57c89b4736d55cf3ad043515d3  gcc/testsuite/gcc.target/i386/avx512dq-vxorpd-2.c
  b91dc4453f3b5b5e4ea6147d114bb759  gcc/testsuite/gcc.target/i386/avx512dq-vxorps-1.c
! bbfd1d8973f4b73e98d2b686f541bb50  gcc/testsuite/gcc.target/i386/avx512dq-vxorps-2.c
  c405e2766f008522fd2c57413f19b993  gcc/testsuite/gcc.target/i386/avx512er-check.h
  b0e1db6611b800faabd5d2b58087c958  gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-1.c
  45a80e5bfb75a7687ce40c8252c02bb1  gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-2.c
*************** a6e3ca12766024983c4bd07942dcea94  gcc/te
*** 55801,55810 ****
  d332ff80ee4b7ab0f986c01830b71f56  gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-2.c
  d419db76587d703249bdaf744fa26837  gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-3.c
  1eff4e31b1112a6e42565a793938d5d3  gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-4.c
! a20415eec60212079fbe145900adf9d3  gcc/testsuite/gcc.target/i386/avx512er-vrcp28sd-1.c
! f98288ad3064fe697b5ee59165912a1e  gcc/testsuite/gcc.target/i386/avx512er-vrcp28sd-2.c
! 94068c91d9acfe6084df8ff991174597  gcc/testsuite/gcc.target/i386/avx512er-vrcp28ss-1.c
! 2c909cf6887866192c32d78cfc22e1de  gcc/testsuite/gcc.target/i386/avx512er-vrcp28ss-2.c
  f5ad8999490aefec59caba35c52c8ca8  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-1.c
  576f3eb877125320c138b2fa28755f75  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-2.c
  abb56706ab0726d30e28300ef79aa60d  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-1.c
--- 59266,59275 ----
  d332ff80ee4b7ab0f986c01830b71f56  gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-2.c
  d419db76587d703249bdaf744fa26837  gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-3.c
  1eff4e31b1112a6e42565a793938d5d3  gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-4.c
! 7700040f89509d28de49473df688ca2c  gcc/testsuite/gcc.target/i386/avx512er-vrcp28sd-1.c
! de275ba6032bbf340939a8a3a7f5e8b5  gcc/testsuite/gcc.target/i386/avx512er-vrcp28sd-2.c
! f45ea3a6978b162ada8564733369a181  gcc/testsuite/gcc.target/i386/avx512er-vrcp28ss-1.c
! d9760fd4d56d78fb74c11f868961d5b7  gcc/testsuite/gcc.target/i386/avx512er-vrcp28ss-2.c
  f5ad8999490aefec59caba35c52c8ca8  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-1.c
  576f3eb877125320c138b2fa28755f75  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-2.c
  abb56706ab0726d30e28300ef79aa60d  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-1.c
*************** ed3d90dbe58b8809b57c676f74ba1f79  gcc/te
*** 55813,55822 ****
  159cfafc29392f77a8739fe68a0b09ab  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-4.c
  4f3f83e497985e70c2773d86ad15f940  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-5.c
  4e3e9759fa00ea5280852a728e03dfbe  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-6.c
! 249320f69410b66836909ed7861e837a  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28sd-1.c
! 089ab042671ce8bbdf2286fd0da5d1a0  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28sd-2.c
! ded4731821711b0feaeb0843f87bcafb  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ss-1.c
! 1b64a797542074126432cd4c0eeb4940  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ss-2.c
  293c0a0037da464f897d16eb6f1159b5  gcc/testsuite/gcc.target/i386/avx512f-abspd-1.c
  848eeff915167de4b7db43649930109b  gcc/testsuite/gcc.target/i386/avx512f-absps-1.c
  8799a68f026a746fb50083af4ae4154a  gcc/testsuite/gcc.target/i386/avx512f-add-df-zmm-1.c
--- 59278,59287 ----
  159cfafc29392f77a8739fe68a0b09ab  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-4.c
  4f3f83e497985e70c2773d86ad15f940  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-5.c
  4e3e9759fa00ea5280852a728e03dfbe  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-6.c
! d75a6f1ef70ad3aacf0b532d1fa862fc  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28sd-1.c
! 9770ef153809418a1c49ecf0b82ecd58  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28sd-2.c
! ccd1795a774a499a45b67596fdc9f917  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ss-1.c
! b96cf98b97eadf8cbe37fad5be0196f1  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ss-2.c
  293c0a0037da464f897d16eb6f1159b5  gcc/testsuite/gcc.target/i386/avx512f-abspd-1.c
  848eeff915167de4b7db43649930109b  gcc/testsuite/gcc.target/i386/avx512f-absps-1.c
  8799a68f026a746fb50083af4ae4154a  gcc/testsuite/gcc.target/i386/avx512f-add-df-zmm-1.c
*************** e6a2d08517354a6475d26db37dba85e2  gcc/te
*** 55853,55858 ****
--- 59318,59330 ----
  d63ad896d9c758712bf90d6dc9341750  gcc/testsuite/gcc.target/i386/avx512f-andn-si-zmm-5.c
  ac444822bf41eda8ff9b0517ed627613  gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-1.c
  c88d598d6edb7c0c743c1dc16a2cc16d  gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-2.c
+ 23be9e8133860048ade159bc933237fa  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-1.c
+ 08373bd09639bc64a0bddd2ddc47768f  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-2.c
+ 420e8ef015f38e0bec7301c54807220e  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-3.c
+ a9d7eae800fa77dbac9b5164b17093c5  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-4.c
+ 030724c6b5e0989fd535694537b3a82b  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-5.c
+ 0e1564775717bbc2a1b1b34d11aa25e2  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-6.c
+ eccc7d9eecbe7f20dcc6e4a7e5c5c15a  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-7.c
  d6d82e1f94a08c07c77189274e3051de  gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-1.c
  043ca358343e3cd8084b52ddd77fc44b  gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-2.c
  46819e77f7b43bb780dd8a446e563d7d  gcc/testsuite/gcc.target/i386/avx512f-ceil-vec-1.c
*************** caf59c34bcef3c9355010b53cf30b68a  gcc/te
*** 55968,55974 ****
  e693bf3a12491a06e7752d43daff3ee0  gcc/testsuite/gcc.target/i386/avx512f-kmovw-2.c
  525321ef80dad1e512b7de9d98c35742  gcc/testsuite/gcc.target/i386/avx512f-kmovw-3.c
  46ddbc9bf1beb409f4717c24f82dcf35  gcc/testsuite/gcc.target/i386/avx512f-kmovw-4.c
! fe43dea81a0f29addc1fc92ffaedf63c  gcc/testsuite/gcc.target/i386/avx512f-kmovw-5.c
  d4958402daa47c002062e6170f5c2646  gcc/testsuite/gcc.target/i386/avx512f-knotw-1.c
  74f46da587e64560dcece471d664ff0c  gcc/testsuite/gcc.target/i386/avx512f-kortestw-1.c
  89b7f91bc683194e657834d83db006d5  gcc/testsuite/gcc.target/i386/avx512f-kortestw-2.c
--- 59440,59446 ----
  e693bf3a12491a06e7752d43daff3ee0  gcc/testsuite/gcc.target/i386/avx512f-kmovw-2.c
  525321ef80dad1e512b7de9d98c35742  gcc/testsuite/gcc.target/i386/avx512f-kmovw-3.c
  46ddbc9bf1beb409f4717c24f82dcf35  gcc/testsuite/gcc.target/i386/avx512f-kmovw-4.c
! 443755be3a6caa505721d210082a8113  gcc/testsuite/gcc.target/i386/avx512f-kmovw-5.c
  d4958402daa47c002062e6170f5c2646  gcc/testsuite/gcc.target/i386/avx512f-knotw-1.c
  74f46da587e64560dcece471d664ff0c  gcc/testsuite/gcc.target/i386/avx512f-kortestw-1.c
  89b7f91bc683194e657834d83db006d5  gcc/testsuite/gcc.target/i386/avx512f-kortestw-2.c
*************** cf8d8483e8f8c207b3c3ece46a4e37a0  gcc/te
*** 56036,56050 ****
  d02e54fef14f48afcc720ef0004da5fa  gcc/testsuite/gcc.target/i386/avx512f-pr93673.c
  f5e4ec9ac91161d240ce6224588d20f2  gcc/testsuite/gcc.target/i386/avx512f-pr94300.c
  0ec29bad25960f18650afa1c9967c8eb  gcc/testsuite/gcc.target/i386/avx512f-pr94343.c
  c64f8e63f9233fd8382fefc82e756df8  gcc/testsuite/gcc.target/i386/avx512f-pr96551-1.c
  16bf42a7e25dd411c2d2ddf3f97a9355  gcc/testsuite/gcc.target/i386/avx512f-pr96551-2.c
  23ad5d665df88571c33627be5c844324  gcc/testsuite/gcc.target/i386/avx512f-pr97028.c
  c03d8cf4fa3fd17be806ad4e6adc4bca  gcc/testsuite/gcc.target/i386/avx512f-prefer.c
  fa779c05cab9a2378601e3ad5ae642ef  gcc/testsuite/gcc.target/i386/avx512f-reduce-op-1.c
  26df6259bb9333b0893acf32bbb4ba18  gcc/testsuite/gcc.target/i386/avx512f-rint-sfix-vec-1.c
! cf72f487882aa5cbbf2a730ccced5372  gcc/testsuite/gcc.target/i386/avx512f-rint-sfix-vec-2.c
  5584cde495e1a705458595dc71c5574b  gcc/testsuite/gcc.target/i386/avx512f-rintf-sfix-vec-1.c
! 3e831baba699ee173a9b5a01e94803d7  gcc/testsuite/gcc.target/i386/avx512f-rintf-sfix-vec-2.c
  8575b02bce7152cd093d4ffdf448b103  gcc/testsuite/gcc.target/i386/avx512f-round-sfix-vec-1.c
  8ec0c6ee2d9b777f1da5706d825590f4  gcc/testsuite/gcc.target/i386/avx512f-round-sfix-vec-2.c
  9bc466341f1264fa95a235e1e65f81a5  gcc/testsuite/gcc.target/i386/avx512f-roundf-sfix-vec-1.c
--- 59508,59526 ----
  d02e54fef14f48afcc720ef0004da5fa  gcc/testsuite/gcc.target/i386/avx512f-pr93673.c
  f5e4ec9ac91161d240ce6224588d20f2  gcc/testsuite/gcc.target/i386/avx512f-pr94300.c
  0ec29bad25960f18650afa1c9967c8eb  gcc/testsuite/gcc.target/i386/avx512f-pr94343.c
+ e8f35ad1e1d70a5ae1b7c2ef55189246  gcc/testsuite/gcc.target/i386/avx512f-pr95060.c
  c64f8e63f9233fd8382fefc82e756df8  gcc/testsuite/gcc.target/i386/avx512f-pr96551-1.c
  16bf42a7e25dd411c2d2ddf3f97a9355  gcc/testsuite/gcc.target/i386/avx512f-pr96551-2.c
+ 101567d8311eb033b484672276e3605e  gcc/testsuite/gcc.target/i386/avx512f-pr96891-1.c
+ 04ed0383683cf0e2698125d407090ab7  gcc/testsuite/gcc.target/i386/avx512f-pr96891-2.c
+ f279a380570a112a4e4bbf112ae48747  gcc/testsuite/gcc.target/i386/avx512f-pr96891-3.c
  23ad5d665df88571c33627be5c844324  gcc/testsuite/gcc.target/i386/avx512f-pr97028.c
  c03d8cf4fa3fd17be806ad4e6adc4bca  gcc/testsuite/gcc.target/i386/avx512f-prefer.c
  fa779c05cab9a2378601e3ad5ae642ef  gcc/testsuite/gcc.target/i386/avx512f-reduce-op-1.c
  26df6259bb9333b0893acf32bbb4ba18  gcc/testsuite/gcc.target/i386/avx512f-rint-sfix-vec-1.c
! baa174f3b95df710a30b886b8722cf67  gcc/testsuite/gcc.target/i386/avx512f-rint-sfix-vec-2.c
  5584cde495e1a705458595dc71c5574b  gcc/testsuite/gcc.target/i386/avx512f-rintf-sfix-vec-1.c
! b52dd7286b029673cd399b0a07bf733a  gcc/testsuite/gcc.target/i386/avx512f-rintf-sfix-vec-2.c
  8575b02bce7152cd093d4ffdf448b103  gcc/testsuite/gcc.target/i386/avx512f-round-sfix-vec-1.c
  8ec0c6ee2d9b777f1da5706d825590f4  gcc/testsuite/gcc.target/i386/avx512f-round-sfix-vec-2.c
  9bc466341f1264fa95a235e1e65f81a5  gcc/testsuite/gcc.target/i386/avx512f-roundf-sfix-vec-1.c
*************** f5522e3e73f476001fbe3a8f66cc6384  gcc/te
*** 56173,56193 ****
  c58d5e0518f9a55f9357771ec2f9b77a  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-2.c
  3c686cf13670ff01f2452dffabbe0339  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-1.c
  bb93618c24644f5f810bc9f925e52ac6  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-2.c
  c85c4875b511f42975a9021c9b8a893a  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-1.c
  0401f46259a989a5d63841ab8f7d40c0  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-2.c
! 56e5c811ab280aff6d2f6f54ef09ac3a  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si-1.c
! 53db3d7a41ce7e0381e294116de8325f  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si64-1.c
! efd2a997c635470d76067b9284217e74  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2ss-1.c
  2b64a629599e855806321961f461bf15  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-1.c
  e1612ae877e65f79e5e0a14da93e04b4  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-2.c
  94671f9c6b480b93fa995af6f7b4436d  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-1.c
  0de9d4841f86111871bac66bd04cdda5  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-2.c
! 38f6080a6001d485e671fc49305670e4  gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2sd64-1.c
! db7835e99dbecce25accdd36940e63cb  gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c
! 2d620f0ffffd987a3ec1356f94849c28  gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss64-1.c
! 13b393825932ad2818d88c5295bc71a6  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2sd-1.c
! 9bd05c77fbb6f8f7feece9fd0f26c9de  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si-1.c
! 85941bcda79d197d6ab63c93aac27060  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si64-1.c
  5be229a9240abfa4a205058b98ed1e94  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-1.c
  461898db0c8b804b70a27de9bee12a50  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-2.c
  03119af99acaaee04f31e7835a3d2033  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-1.c
--- 59649,59671 ----
  c58d5e0518f9a55f9357771ec2f9b77a  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-2.c
  3c686cf13670ff01f2452dffabbe0339  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-1.c
  bb93618c24644f5f810bc9f925e52ac6  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-2.c
+ 3a76240db4ea5fdc0dae9b071c3729df  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-pr95254.c
  c85c4875b511f42975a9021c9b8a893a  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-1.c
  0401f46259a989a5d63841ab8f7d40c0  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-2.c
! 5471924da73ff85fc9b17915453eaa53  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si-1.c
! 61bf0307c819e1a758af99678f370912  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si64-1.c
! fa5045d7a2853246cd65ac66bbc1c25e  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2ss-1.c
  2b64a629599e855806321961f461bf15  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-1.c
  e1612ae877e65f79e5e0a14da93e04b4  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-2.c
  94671f9c6b480b93fa995af6f7b4436d  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-1.c
  0de9d4841f86111871bac66bd04cdda5  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-2.c
! 802ca463aff6cf1f35ba352a0abbb8e1  gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2sd-1.c
! d67300af7605421bbfc0e49e08cc8186  gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2sd64-1.c
! 723bd2b12ae682c2d019ccf3dacebee8  gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c
! 51ecce6659f2c5abd9188b36ac2510f7  gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss64-1.c
! 857482b2cffdb8d8256c05e32d493b12  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2sd-1.c
! c6c7a503ecd10c2d06f6cf9a8fccd53a  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si-1.c
! b6f2ce5a9582289409b475f0ac818d2b  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si64-1.c
  5be229a9240abfa4a205058b98ed1e94  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-1.c
  461898db0c8b804b70a27de9bee12a50  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-2.c
  03119af99acaaee04f31e7835a3d2033  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-1.c
*************** b5e4cd18a2247fe8c73f3ec6f8f9beb7  gcc/te
*** 56239,56244 ****
--- 59717,59723 ----
  37bc1f025f764010883a7d33e587a6a9  gcc/testsuite/gcc.target/i386/avx512f-vdivss-2.c
  3d1a356d368a114ff4f4f5ce2918a939  gcc/testsuite/gcc.target/i386/avx512f-vdivss-3.c
  708c12de1370a83a2980fb98a399a5d1  gcc/testsuite/gcc.target/i386/avx512f-vec-init.c
+ 53ee450644f8170f381cf40eb5ef85fe  gcc/testsuite/gcc.target/i386/avx512f-vec-set-2.c
  0cac8e1e01a7b0e7c1e81c1fa3676acb  gcc/testsuite/gcc.target/i386/avx512f-vec-unpack.c
  aad59cde1da67f91dcaf200225242b6a  gcc/testsuite/gcc.target/i386/avx512f-vect-perm-1.c
  b69783ae8c604afd50edd08d70d106e0  gcc/testsuite/gcc.target/i386/avx512f-vect-perm-2.c
*************** af99ba3a610e85e7b7b347203b8fe4da  gcc/te
*** 56756,56765 ****
  dea6448dc8dc45bf7a13d2f78a95b4b4  gcc/testsuite/gcc.target/i386/avx512f-vscalefpd-2.c
  abd1dd9be9933bff2ebb6a99e89adbb3  gcc/testsuite/gcc.target/i386/avx512f-vscalefps-1.c
  0061204649aac1746fc67c1c0cbb8535  gcc/testsuite/gcc.target/i386/avx512f-vscalefps-2.c
! 22b0e36d0c1fdc26c0e7c574c320beb2  gcc/testsuite/gcc.target/i386/avx512f-vscalefsd-1.c
! d828af1a215e5122a0778639111441b6  gcc/testsuite/gcc.target/i386/avx512f-vscalefsd-2.c
! 60dee7660478e89739b648e5b27fb6d0  gcc/testsuite/gcc.target/i386/avx512f-vscalefss-1.c
! c716dca579ad463b85b047fdb838eaed  gcc/testsuite/gcc.target/i386/avx512f-vscalefss-2.c
  e69fd8a857aa88aae6eb67b874be41ae  gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-1.c
  931e1b9752816582ab40145f3e839890  gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c
  86288f07c08573f56f5fef05fd7e17a4  gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-1.c
--- 60235,60244 ----
  dea6448dc8dc45bf7a13d2f78a95b4b4  gcc/testsuite/gcc.target/i386/avx512f-vscalefpd-2.c
  abd1dd9be9933bff2ebb6a99e89adbb3  gcc/testsuite/gcc.target/i386/avx512f-vscalefps-1.c
  0061204649aac1746fc67c1c0cbb8535  gcc/testsuite/gcc.target/i386/avx512f-vscalefps-2.c
! 71d68674636155cc9c537aa2a825e38b  gcc/testsuite/gcc.target/i386/avx512f-vscalefsd-1.c
! 412147f98057660f3734de045d80d5a0  gcc/testsuite/gcc.target/i386/avx512f-vscalefsd-2.c
! 60cf13c1715c24e0d4164748b2fc758c  gcc/testsuite/gcc.target/i386/avx512f-vscalefss-1.c
! d9a3b37fce66dc0b08743c22580788ae  gcc/testsuite/gcc.target/i386/avx512f-vscalefss-2.c
  e69fd8a857aa88aae6eb67b874be41ae  gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-1.c
  931e1b9752816582ab40145f3e839890  gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c
  86288f07c08573f56f5fef05fd7e17a4  gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-1.c
*************** efcdf057857efc07df3410f94af10a1b  gcc/te
*** 56776,56785 ****
  a30a6389dea3f18bf4b9db15afb47dbf  gcc/testsuite/gcc.target/i386/avx512f-vsqrtpd-2.c
  b03ff1b030d60119abadebb62121a41a  gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-1.c
  72269f1c5c3573077261e09026f8fcfe  gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-2.c
! d61282d9d6622dd85843ab34886dd396  gcc/testsuite/gcc.target/i386/avx512f-vsqrtsd-1.c
! d8dc69c35b120f087a95bcdeae536311  gcc/testsuite/gcc.target/i386/avx512f-vsqrtsd-2.c
! 090ca06ebf65cf28b6045dcc692c19e2  gcc/testsuite/gcc.target/i386/avx512f-vsqrtss-1.c
! b344462aa27713764f5f2ea3d4f162c2  gcc/testsuite/gcc.target/i386/avx512f-vsqrtss-2.c
  627fcf4a4762757a261934006b8a83f1  gcc/testsuite/gcc.target/i386/avx512f-vsubpd-1.c
  c50c674bfb9e7cdfff6854ce237fc430  gcc/testsuite/gcc.target/i386/avx512f-vsubpd-2.c
  9f9861cbb4daa512494d6e45ca782c42  gcc/testsuite/gcc.target/i386/avx512f-vsubps-1.c
--- 60255,60264 ----
  a30a6389dea3f18bf4b9db15afb47dbf  gcc/testsuite/gcc.target/i386/avx512f-vsqrtpd-2.c
  b03ff1b030d60119abadebb62121a41a  gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-1.c
  72269f1c5c3573077261e09026f8fcfe  gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-2.c
! bd4b92db76de04db44a3b86bbb9d2311  gcc/testsuite/gcc.target/i386/avx512f-vsqrtsd-1.c
! e1056c684ef2b315f28a6c273e6a1992  gcc/testsuite/gcc.target/i386/avx512f-vsqrtsd-2.c
! 5b810cac2355dc5ff96940eb3eb29d72  gcc/testsuite/gcc.target/i386/avx512f-vsqrtss-1.c
! a64f3a6172932b37462d23e3e6295903  gcc/testsuite/gcc.target/i386/avx512f-vsqrtss-2.c
  627fcf4a4762757a261934006b8a83f1  gcc/testsuite/gcc.target/i386/avx512f-vsubpd-1.c
  c50c674bfb9e7cdfff6854ce237fc430  gcc/testsuite/gcc.target/i386/avx512f-vsubpd-2.c
  9f9861cbb4daa512494d6e45ca782c42  gcc/testsuite/gcc.target/i386/avx512f-vsubps-1.c
*************** c4bc57ffbca84a4901db479da843cf3c  gcc/te
*** 56855,56860 ****
--- 60334,60345 ----
  537bb550e9d66a02efe2296573212931  gcc/testsuite/gcc.target/i386/avx512vl-and-si-ymm-1.c
  d1bdd43046d2a862a62096e884f2a148  gcc/testsuite/gcc.target/i386/avx512vl-andn-si-xmm-1.c
  c6cc01bcba78b07acbc0c97f8ecffc30  gcc/testsuite/gcc.target/i386/avx512vl-andn-si-ymm-1.c
+ 6e465965d4cb114a1be7fe51e2465dea  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-1.c
+ bcc0041bf4882e8ffc439974df32bf6a  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-2.c
+ 0d8bc260ab66b4b4d146eb76e3d04402  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-3.c
+ 7ca815481d1a25c18f3e474b0ace8bca  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-4.c
+ 5dabb6b1ac4a8e36bb6b4dc0ab7fdb4b  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-5.c
+ 205513778704d9cadedab6e62b5b5621  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-6.c
  99ab8f6b1890ccfcd14f1ea1cc6ca1c8  gcc/testsuite/gcc.target/i386/avx512vl-check.h
  0617dd4b8fef3764392d3723a75e2c8b  gcc/testsuite/gcc.target/i386/avx512vl-concatv2di-1.c
  aa1c65ae5d415bc961f9a1df5e0e7664  gcc/testsuite/gcc.target/i386/avx512vl-concatv2si-1.c
*************** a211ab10a3faac2cd055fdacc95d4e1d  gcc/te
*** 56928,56945 ****
  21be763876a4662bb30fadcdefe0d271  gcc/testsuite/gcc.target/i386/avx512vl-pr88514-1.c
  b6461a6adcacf1878ea8a38e64cabb40  gcc/testsuite/gcc.target/i386/avx512vl-pr88514-2.c
  324fc5a9db4c61bc6c756df01086f810  gcc/testsuite/gcc.target/i386/avx512vl-pr88514-3.c
! 5566d27fba8d45f2cfdca269457a203d  gcc/testsuite/gcc.target/i386/avx512vl-pr88547-1.c
  a8a6480fddb95d8b69219774c45cee01  gcc/testsuite/gcc.target/i386/avx512vl-pr88547-2.c
  af0b2c0a30255ddd7ee911a782d4d90d  gcc/testsuite/gcc.target/i386/avx512vl-pr88547-3.c
! 86ae0d1e7f9fc2485324ebb3b9bf977c  gcc/testsuite/gcc.target/i386/avx512vl-pr92686-movcc-1.c
  41a9dcc6cc7576c49d6d8936aec6fbb6  gcc/testsuite/gcc.target/i386/avx512vl-pr92686-movcc-2.c
- 115078009e95c8a7bb15e124c79fcf23  gcc/testsuite/gcc.target/i386/avx512vl-pr92686-vpcmp-1.c
- 98bb0fb4454395e20a1086a5b8ca088e  gcc/testsuite/gcc.target/i386/avx512vl-pr92686-vpcmp-2.c
- 708c28a8724e33ea7de218c0801fa7ec  gcc/testsuite/gcc.target/i386/avx512vl-pr92686-vpcmp-intelasm-1.c
  4d69d6f7bd71b5e9293c77c434bf19d7  gcc/testsuite/gcc.target/i386/avx512vl-pr93009.c
  3bcc57ce6b7cadc47f5679998fca6db9  gcc/testsuite/gcc.target/i386/avx512vl-pr93069.c
  e83e4ca7bfde31c45ab7a663d2cbb1ee  gcc/testsuite/gcc.target/i386/avx512vl-pr93670.c
  a1130e7f1125407b6b6d30d7c4b95365  gcc/testsuite/gcc.target/i386/avx512vl-pr94343.c
  224ac9323dda6256b6cecaa257324229  gcc/testsuite/gcc.target/i386/avx512vl-sub-sf-xmm-1.c
  8f9702be88cd81a245f378c6c354fb8c  gcc/testsuite/gcc.target/i386/avx512vl-sub-sf-ymm-1.c
  eb60351b2f49a1b13a1a93145f192ab8  gcc/testsuite/gcc.target/i386/avx512vl-sub-si-xmm-1.c
--- 60413,60431 ----
  21be763876a4662bb30fadcdefe0d271  gcc/testsuite/gcc.target/i386/avx512vl-pr88514-1.c
  b6461a6adcacf1878ea8a38e64cabb40  gcc/testsuite/gcc.target/i386/avx512vl-pr88514-2.c
  324fc5a9db4c61bc6c756df01086f810  gcc/testsuite/gcc.target/i386/avx512vl-pr88514-3.c
! 3592865beb2725c8b96f5b8bcb236a9b  gcc/testsuite/gcc.target/i386/avx512vl-pr88547-1.c
  a8a6480fddb95d8b69219774c45cee01  gcc/testsuite/gcc.target/i386/avx512vl-pr88547-2.c
  af0b2c0a30255ddd7ee911a782d4d90d  gcc/testsuite/gcc.target/i386/avx512vl-pr88547-3.c
! c995442b79a88d7bd02b85882baf395d  gcc/testsuite/gcc.target/i386/avx512vl-pr92686-movcc-1.c
  41a9dcc6cc7576c49d6d8936aec6fbb6  gcc/testsuite/gcc.target/i386/avx512vl-pr92686-movcc-2.c
  4d69d6f7bd71b5e9293c77c434bf19d7  gcc/testsuite/gcc.target/i386/avx512vl-pr93009.c
  3bcc57ce6b7cadc47f5679998fca6db9  gcc/testsuite/gcc.target/i386/avx512vl-pr93069.c
  e83e4ca7bfde31c45ab7a663d2cbb1ee  gcc/testsuite/gcc.target/i386/avx512vl-pr93670.c
  a1130e7f1125407b6b6d30d7c4b95365  gcc/testsuite/gcc.target/i386/avx512vl-pr94343.c
+ 03c8034dbaf2500e6d8d1fe941905849  gcc/testsuite/gcc.target/i386/avx512vl-pr95488-1.c
+ 653440f772c0c591ba73e65901da0239  gcc/testsuite/gcc.target/i386/avx512vl-pr95488-2.c
+ 616f945fddaa33d994cc18fe1ba4a02d  gcc/testsuite/gcc.target/i386/avx512vl-pr99321-1.c
+ 740d195d90879ded887268e753fa3b62  gcc/testsuite/gcc.target/i386/avx512vl-pr99321-2.c
  224ac9323dda6256b6cecaa257324229  gcc/testsuite/gcc.target/i386/avx512vl-sub-sf-xmm-1.c
  8f9702be88cd81a245f378c6c354fb8c  gcc/testsuite/gcc.target/i386/avx512vl-sub-sf-ymm-1.c
  eb60351b2f49a1b13a1a93145f192ab8  gcc/testsuite/gcc.target/i386/avx512vl-sub-si-xmm-1.c
*************** da11b0d42e23b2622862452c2a26d547  gcc/te
*** 57004,57009 ****
--- 60490,60496 ----
  b2f19b919c93df831f1327d379b311e6  gcc/testsuite/gcc.target/i386/avx512vl-vcvtps2ph-1.c
  134b9de87a2e44926f9c282bce5b5bbc  gcc/testsuite/gcc.target/i386/avx512vl-vcvtps2ph-2.c
  dd9c13c179182c5ff5ea0277b4415a08  gcc/testsuite/gcc.target/i386/avx512vl-vcvtps2ph-3.c
+ 543254c669f9f1618a2440ecd8d737d6  gcc/testsuite/gcc.target/i386/avx512vl-vcvtps2ph-pr95254.c
  187d4a5bc7529e0b5a57d7cb7cb81fdd  gcc/testsuite/gcc.target/i386/avx512vl-vcvtps2qq-2.c
  a24dc949dd067a99860f82f8c5388ccd  gcc/testsuite/gcc.target/i386/avx512vl-vcvtps2udq-1.c
  1c348b26e1e06dc4660be8f323e34545  gcc/testsuite/gcc.target/i386/avx512vl-vcvtps2udq-2.c
*************** aed1045d16c86ce0b4e1da1bc1e87e18  gcc/te
*** 57033,57038 ****
--- 60520,60526 ----
  bc593febb93d58f8369137d8eddc8d88  gcc/testsuite/gcc.target/i386/avx512vl-vdivpd-2.c
  458ee7b8be3780de32fdea4f4f5927a5  gcc/testsuite/gcc.target/i386/avx512vl-vdivps-1.c
  471fb76576cbdcb93c00ddcb28712274  gcc/testsuite/gcc.target/i386/avx512vl-vdivps-2.c
+ 487bb9f0ebd8a5c145e5cbc234e42946  gcc/testsuite/gcc.target/i386/avx512vl-vec-set-2.c
  7651b7da06ace42baaa86bfc7113b27d  gcc/testsuite/gcc.target/i386/avx512vl-vexpandpd-1.c
  8caa2c813166460feffee1f4e9897cdd  gcc/testsuite/gcc.target/i386/avx512vl-vexpandpd-2.c
  f7bcfedeb21945e06c855231aa062858  gcc/testsuite/gcc.target/i386/avx512vl-vexpandps-1.c
*************** b592affd9524490683f039e2abeddc73  gcc/te
*** 57106,57114 ****
  90794c8663f5935d70ead7256db55f40  gcc/testsuite/gcc.target/i386/avx512vl-vmovaps-2.c
  88d84a2674ad919f33a60e692d969db8  gcc/testsuite/gcc.target/i386/avx512vl-vmovddup-1.c
  b7a7eb992180804faecbf94a91fbbdf0  gcc/testsuite/gcc.target/i386/avx512vl-vmovddup-2.c
! 4fb441756285f43b1221027899f7fc42  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa32-1.c
  056deee40089caf20195f78d8cf9b26b  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa32-2.c
! 00890679e8fe92817e675f161762d6e6  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa64-1.c
  559a8fb17d2c67c0dbc28efc30d1f36e  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa64-2.c
  be52bf7ed3992b7c5bd6ff1d5f444dd6  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqu16-2.c
  45b8b31faa417a25330dd6ae632d5fdd  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqu32-1.c
--- 60594,60602 ----
  90794c8663f5935d70ead7256db55f40  gcc/testsuite/gcc.target/i386/avx512vl-vmovaps-2.c
  88d84a2674ad919f33a60e692d969db8  gcc/testsuite/gcc.target/i386/avx512vl-vmovddup-1.c
  b7a7eb992180804faecbf94a91fbbdf0  gcc/testsuite/gcc.target/i386/avx512vl-vmovddup-2.c
! dd6ca08f30e6fe74cfa6b6391d255ff7  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa32-1.c
  056deee40089caf20195f78d8cf9b26b  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa32-2.c
! 91516f1c7934dd1608e8876c1aa72f60  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa64-1.c
  559a8fb17d2c67c0dbc28efc30d1f36e  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa64-2.c
  be52bf7ed3992b7c5bd6ff1d5f444dd6  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqu16-2.c
  45b8b31faa417a25330dd6ae632d5fdd  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqu32-1.c
*************** c5f94f0615d332bb3fe7b5fc5fb4100c  gcc/te
*** 57130,57136 ****
  1a4569cb850e32770b5b09da0417def5  gcc/testsuite/gcc.target/i386/avx512vl-vmulpd-2.c
  be58b3f2ec2718d989375032ffedad2c  gcc/testsuite/gcc.target/i386/avx512vl-vmulps-1.c
  595e9592cd7cff288df4a59b12e31ac9  gcc/testsuite/gcc.target/i386/avx512vl-vmulps-2.c
! f3ec96212c1b982051c7dbc4b035bac6  gcc/testsuite/gcc.target/i386/avx512vl-vnni-1.c
  e3b1db56db997c4386d4d3340096cadb  gcc/testsuite/gcc.target/i386/avx512vl-vorpd-2.c
  89160e36f2b3e90c8cfc5090ac86b4a9  gcc/testsuite/gcc.target/i386/avx512vl-vorps-2.c
  860df7d9320350c7eae8e7551b13dc1b  gcc/testsuite/gcc.target/i386/avx512vl-vpabsb-2.c
--- 60618,60627 ----
  1a4569cb850e32770b5b09da0417def5  gcc/testsuite/gcc.target/i386/avx512vl-vmulpd-2.c
  be58b3f2ec2718d989375032ffedad2c  gcc/testsuite/gcc.target/i386/avx512vl-vmulps-1.c
  595e9592cd7cff288df4a59b12e31ac9  gcc/testsuite/gcc.target/i386/avx512vl-vmulps-2.c
! f3ec96212c1b982051c7dbc4b035bac6  gcc/testsuite/gcc.target/i386/avx512vl-vnni-1a.c
! 44ceb2a4247cef0c434096b3a0286b09  gcc/testsuite/gcc.target/i386/avx512vl-vnni-1b.c
! 8bbf82be4fac6703fec2c5c92b20fad1  gcc/testsuite/gcc.target/i386/avx512vl-vnni-2.c
! 14b1487b0afcc343af20676c272d729f  gcc/testsuite/gcc.target/i386/avx512vl-vnni-3.c
  e3b1db56db997c4386d4d3340096cadb  gcc/testsuite/gcc.target/i386/avx512vl-vorpd-2.c
  89160e36f2b3e90c8cfc5090ac86b4a9  gcc/testsuite/gcc.target/i386/avx512vl-vorps-2.c
  860df7d9320350c7eae8e7551b13dc1b  gcc/testsuite/gcc.target/i386/avx512vl-vpabsb-2.c
*************** c292ba048c97e84fe04aa26984af35f1  gcc/te
*** 57626,57647 ****
--- 61117,61146 ----
  e8b40df1b29caa7e7a5ad3533f175e18  gcc/testsuite/gcc.target/i386/avx512vlbw-pr82370.c
  3b56096e93a13615a8ca272bc3ed8e6c  gcc/testsuite/gcc.target/i386/avx512vlbw-pr85832.c
  b67b9c14f28f9a4e5c234829ea1ba329  gcc/testsuite/gcc.target/i386/avx512vlbw-pr94438.c
+ d54fd157e5b9989a9c4a4011c92a6b85  gcc/testsuite/gcc.target/i386/avx512vnnivl-builtin.c
  3884f1876df0401f793a60b000e61533  gcc/testsuite/gcc.target/i386/avx512vp2intersect-2intersect-1a.c
  878146e3f3cbf3dfbffab0099a8ffcc8  gcc/testsuite/gcc.target/i386/avx512vp2intersect-2intersect-1b.c
  40c7b12c580899a9de2b14cc26dde852  gcc/testsuite/gcc.target/i386/avx512vp2intersect-2intersectvl-1a.c
  3b6707ddd210e2563e90997be09f362a  gcc/testsuite/gcc.target/i386/avx512vp2intersect-2intersectvl-1b.c
+ 056609189c1c7f7f6e5abd483efe80db  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-pr97770-1.c
+ 21e576e3034e9bebfd0582a15acd4af4  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-pr97770-2.c
  4ee014789b932f3aea1da6e759de7e75  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd-1.c
  848d7f2507183d53d35a08030c471c3e  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd.c
  d8084141e791dfdf62ee3dc66173d458  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq-1.c
  776a22660c657e8df374084201fce5f6  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq.c
+ 625af58a48cf30c77cdd2892f64c3d9c  gcc/testsuite/gcc.target/i386/avx512vpopcntdqvl-pr97770-1.c
  fa2414b7f0b02ba46bfc1187b11b0120  gcc/testsuite/gcc.target/i386/avx512vpopcntdqvl-vpopcntd-1.c
  17d28bf7cef176269dc5873687b13c9f  gcc/testsuite/gcc.target/i386/avx512vpopcntdqvl-vpopcntq-1.c
  5da8354c1b0f081b6c64be550d4b604e  gcc/testsuite/gcc.target/i386/avxfp-1.c
  96da42bfb9b55e417c89693514ae20a6  gcc/testsuite/gcc.target/i386/avxfp-2.c
+ 51a2ee7ea5f4c0b592af239653345942  gcc/testsuite/gcc.target/i386/avxvnni-builtin.c
  6f9ec5819fa880d6a423fcc3fa67af2f  gcc/testsuite/gcc.target/i386/bitfield1.c
  674019fac54e0c27947386666000a1c8  gcc/testsuite/gcc.target/i386/bitfield2.c
  f453ea0129a9fcdd06a9ec24524c1cb9  gcc/testsuite/gcc.target/i386/bitfield3.c
  9a4090444bb3ef253261728d33aa87e3  gcc/testsuite/gcc.target/i386/bittest.c
+ 4f7d5fddd899019b4d0c71e34f5ca3bc  gcc/testsuite/gcc.target/i386/bitwise_mask_op-1.c
+ 58b78987a53662bcaab407aa0a7cf69a  gcc/testsuite/gcc.target/i386/bitwise_mask_op-2.c
+ a578e3944b18fe4b25e22a5569d22209  gcc/testsuite/gcc.target/i386/bitwise_mask_op-3.c
  ea47ac6447cb9ac4b28b5aaad9274158  gcc/testsuite/gcc.target/i386/bmi-1.c
  26c6bd935da0376256720f101f3a197c  gcc/testsuite/gcc.target/i386/bmi-2.c
  fc48ef0f1e33b7021253ebb6122ab809  gcc/testsuite/gcc.target/i386/bmi-3.c
*************** a9b1dee6ec200856939709d32118cf4d  gcc/te
*** 57734,57744 ****
  49bdb0439cf3bb3730983b6ac9d7b4ff  gcc/testsuite/gcc.target/i386/builtin-bswap-2.c
  98071546dc47914bb36a912c7912aca2  gcc/testsuite/gcc.target/i386/builtin-bswap-3.c
  3605b461ca62ccb4a3f70ccc13695ed5  gcc/testsuite/gcc.target/i386/builtin-bswap-4.c
  04d6147486a507d49f5d165aac499b5d  gcc/testsuite/gcc.target/i386/builtin-copysign.c
  83540904d3592a74a85860a8850ad325  gcc/testsuite/gcc.target/i386/builtin-has-attribute.c
  07c7b1b786ccb4b67484b353aa40d9c7  gcc/testsuite/gcc.target/i386/builtin-ucmp.c
  c8f91a97e3f4734a3595572bab26a3e7  gcc/testsuite/gcc.target/i386/builtin-unreachable.c
! 646923039998d12d3a88522bedb52446  gcc/testsuite/gcc.target/i386/builtin_target.c
  4278b9cf349a82b327a03ec6fb2f2b43  gcc/testsuite/gcc.target/i386/cadd.c
  bcb496f917fb6dad4ebb0207c1334471  gcc/testsuite/gcc.target/i386/call-1.c
  03f91a577d4f6be3e4731c0a4c63e51e  gcc/testsuite/gcc.target/i386/call-2.c
--- 61233,61245 ----
  49bdb0439cf3bb3730983b6ac9d7b4ff  gcc/testsuite/gcc.target/i386/builtin-bswap-2.c
  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
  04d6147486a507d49f5d165aac499b5d  gcc/testsuite/gcc.target/i386/builtin-copysign.c
  83540904d3592a74a85860a8850ad325  gcc/testsuite/gcc.target/i386/builtin-has-attribute.c
  07c7b1b786ccb4b67484b353aa40d9c7  gcc/testsuite/gcc.target/i386/builtin-ucmp.c
  c8f91a97e3f4734a3595572bab26a3e7  gcc/testsuite/gcc.target/i386/builtin-unreachable.c
! 49a06f8112b363fe26551f10adb98278  gcc/testsuite/gcc.target/i386/builtin_target.c
! 5502489cd371c4d2b333eee65153eec7  gcc/testsuite/gcc.target/i386/builtin_thread_pointer.c
  4278b9cf349a82b327a03ec6fb2f2b43  gcc/testsuite/gcc.target/i386/cadd.c
  bcb496f917fb6dad4ebb0207c1334471  gcc/testsuite/gcc.target/i386/call-1.c
  03f91a577d4f6be3e4731c0a4c63e51e  gcc/testsuite/gcc.target/i386/call-2.c
*************** b70c3474dab5c950386d01ff0714762f  gcc/te
*** 57839,57844 ****
--- 61340,61346 ----
  3b3bc498b746dac2582ffb6c471e536a  gcc/testsuite/gcc.target/i386/divmod-7.c
  c17dcb330b42bada168342242008b99c  gcc/testsuite/gcc.target/i386/divmod-8.c
  47d2b4328c009460a9b77a0a273daff7  gcc/testsuite/gcc.target/i386/double_mask_reg-1.c
+ e0d22ed73421320d7f3bb70305094f77  gcc/testsuite/gcc.target/i386/endbr_immediate.c
  5d5c47e004c3ebf97d2da3489e7c9992  gcc/testsuite/gcc.target/i386/enqcmd.c
  f71b6a7495b0645d1ecb8db1b2f1958b  gcc/testsuite/gcc.target/i386/enqcmds.c
  83f426635f973eba278a3083233c3cab  gcc/testsuite/gcc.target/i386/excess-precision-1.c
*************** c8661d46af4e71184c4904ae6ab3be9b  gcc/te
*** 57867,57875 ****
  dbf3cc9b53b5e2d78a16330cbb9137e5  gcc/testsuite/gcc.target/i386/fastcall-sseregparm.c
  5c7c43fd3c76623b3c3861b7f826b843  gcc/testsuite/gcc.target/i386/fentry-override.c
  5046881025e2cf5dcd3027d9718a2633  gcc/testsuite/gcc.target/i386/fentry.c
! b2b849bd952a43b9a5ce24a2c6ab3a4a  gcc/testsuite/gcc.target/i386/fentryname1.c
! 80156d88eb6412d3f115d20fb52fd9a0  gcc/testsuite/gcc.target/i386/fentryname2.c
! d3db3976df9642f91c19e5ac0609ca74  gcc/testsuite/gcc.target/i386/fentryname3.c
  bd55fbb60894cd429f7fc93df2f43fee  gcc/testsuite/gcc.target/i386/float128-1.c
  706567a3c78ce7fec9f91ce88f6100bd  gcc/testsuite/gcc.target/i386/float128-2.c
  02d798a42a24e851bb36577bb0e02d26  gcc/testsuite/gcc.target/i386/float128-3.c
--- 61369,61377 ----
  dbf3cc9b53b5e2d78a16330cbb9137e5  gcc/testsuite/gcc.target/i386/fastcall-sseregparm.c
  5c7c43fd3c76623b3c3861b7f826b843  gcc/testsuite/gcc.target/i386/fentry-override.c
  5046881025e2cf5dcd3027d9718a2633  gcc/testsuite/gcc.target/i386/fentry.c
! 48b7c3a611d7e2361c0d7fe315d26972  gcc/testsuite/gcc.target/i386/fentryname1.c
! 25e6a100b24cebd0390edc44a4b95b46  gcc/testsuite/gcc.target/i386/fentryname2.c
! 014bcb000b2ea0dabf25ce8cd2990afe  gcc/testsuite/gcc.target/i386/fentryname3.c
  bd55fbb60894cd429f7fc93df2f43fee  gcc/testsuite/gcc.target/i386/float128-1.c
  706567a3c78ce7fec9f91ce88f6100bd  gcc/testsuite/gcc.target/i386/float128-2.c
  02d798a42a24e851bb36577bb0e02d26  gcc/testsuite/gcc.target/i386/float128-3.c
*************** d5e894871a62ba7fdc4844f40477340b  gcc/te
*** 57912,57929 ****
  4b8ee99439b69d35494f586c08a8b898  gcc/testsuite/gcc.target/i386/fma_4.h
  ce1e3485c17e6b1fcce41ee6bde62960  gcc/testsuite/gcc.target/i386/fma_5.h
  9d7d0f0314e2e2259e471706a0bd8594  gcc/testsuite/gcc.target/i386/fma_6.h
! 9dbd0fd7da3a4208077feb72fe76306e  gcc/testsuite/gcc.target/i386/fma_double_1.c
! b931e5735dbb252b8a307c85f0755b44  gcc/testsuite/gcc.target/i386/fma_double_2.c
! d9aded2d5158a53bc65472a6fda41043  gcc/testsuite/gcc.target/i386/fma_double_3.c
! 05dc84cbfbc0324e0435adc69b75bb7b  gcc/testsuite/gcc.target/i386/fma_double_4.c
! 1e4881dda2fc93d62fe492b503bad300  gcc/testsuite/gcc.target/i386/fma_double_5.c
! 816e8983ae65bb58a4603a003b7249c4  gcc/testsuite/gcc.target/i386/fma_double_6.c
! 53602abc50cc1df48d0c9f69535aaac3  gcc/testsuite/gcc.target/i386/fma_float_1.c
! 85c50aee08ad07118f13840ed2ceaeb6  gcc/testsuite/gcc.target/i386/fma_float_2.c
! d0c1d0253fe270d63fcf0ecaff149609  gcc/testsuite/gcc.target/i386/fma_float_3.c
! fb155e4950e14129ad6dbc17e8a87158  gcc/testsuite/gcc.target/i386/fma_float_4.c
! ab4d6d391345d002f99245d330c15c42  gcc/testsuite/gcc.target/i386/fma_float_5.c
! 19d0e8bbef5002e0eda624dd079a0410  gcc/testsuite/gcc.target/i386/fma_float_6.c
  0da3d77ad2b2cbd9ba29d301e9b24699  gcc/testsuite/gcc.target/i386/fma_main.h
  acf708df7050c3f26512a4e03cf8d6aa  gcc/testsuite/gcc.target/i386/fma_run_double_1.c
  9fd084daea23f138ddda4e7f160d566a  gcc/testsuite/gcc.target/i386/fma_run_double_2.c
--- 61414,61431 ----
  4b8ee99439b69d35494f586c08a8b898  gcc/testsuite/gcc.target/i386/fma_4.h
  ce1e3485c17e6b1fcce41ee6bde62960  gcc/testsuite/gcc.target/i386/fma_5.h
  9d7d0f0314e2e2259e471706a0bd8594  gcc/testsuite/gcc.target/i386/fma_6.h
! 4ea4367cc13f3b6593f4ec95fd51193c  gcc/testsuite/gcc.target/i386/fma_double_1.c
! f9d895958985d1c3745965757c801b5d  gcc/testsuite/gcc.target/i386/fma_double_2.c
! b12987b3a2b6a4da2837291d3a103132  gcc/testsuite/gcc.target/i386/fma_double_3.c
! 157d093eba81650267249bc3ff791ce4  gcc/testsuite/gcc.target/i386/fma_double_4.c
! db28ed4b04d6e0c43531bf91c4383468  gcc/testsuite/gcc.target/i386/fma_double_5.c
! 7d3ee08d93f0a4fa9fe0982241316210  gcc/testsuite/gcc.target/i386/fma_double_6.c
! a8047c835283f1a49f82d4a3053201c2  gcc/testsuite/gcc.target/i386/fma_float_1.c
! 8966ab5ea5e4fb455edb4093d7e56c8d  gcc/testsuite/gcc.target/i386/fma_float_2.c
! df950e0de17f52ac970eebb87b8e7315  gcc/testsuite/gcc.target/i386/fma_float_3.c
! 75c0813fbe8b3f1a1d5c8a1fd56d953e  gcc/testsuite/gcc.target/i386/fma_float_4.c
! efbf195e1c908a42a8033869f5e8ae3a  gcc/testsuite/gcc.target/i386/fma_float_5.c
! 9f3a2297e67c9f25480576e4d3fc3357  gcc/testsuite/gcc.target/i386/fma_float_6.c
  0da3d77ad2b2cbd9ba29d301e9b24699  gcc/testsuite/gcc.target/i386/fma_main.h
  acf708df7050c3f26512a4e03cf8d6aa  gcc/testsuite/gcc.target/i386/fma_run_double_1.c
  9fd084daea23f138ddda4e7f160d566a  gcc/testsuite/gcc.target/i386/fma_run_double_2.c
*************** f4728a5ddd8f5b7d2932dd853b2fc88f  gcc/te
*** 57961,57971 ****
  c7969e1cd5d8b5cc915431d457857508  gcc/testsuite/gcc.target/i386/funcspec-1.c
  6806422c170b295fd8ff09ca22b12150  gcc/testsuite/gcc.target/i386/funcspec-10.c
  c1320fd604803bc04257c984f1e3ba77  gcc/testsuite/gcc.target/i386/funcspec-11.c
! f2d2b9715eb7e6c1ec1310003a7a8d58  gcc/testsuite/gcc.target/i386/funcspec-2.c
! 08313964c91346f27c34e3c71ff43389  gcc/testsuite/gcc.target/i386/funcspec-3.c
  5af0527c599bf95f77628d48b1beb0ec  gcc/testsuite/gcc.target/i386/funcspec-4.c
  7568c1249431aafb7f8e2610a1e4a35e  gcc/testsuite/gcc.target/i386/funcspec-5.c
! 1618fa831214c166c733a07094941313  gcc/testsuite/gcc.target/i386/funcspec-56.inc
  6886186deb869f2b04be36492c05b8aa  gcc/testsuite/gcc.target/i386/funcspec-6.c
  35655de5c9348f2a36254312a8d17908  gcc/testsuite/gcc.target/i386/funcspec-7.c
  c5cbddeb1b01f35a7fa7f281fb2acdb4  gcc/testsuite/gcc.target/i386/funcspec-8.c
--- 61463,61473 ----
  c7969e1cd5d8b5cc915431d457857508  gcc/testsuite/gcc.target/i386/funcspec-1.c
  6806422c170b295fd8ff09ca22b12150  gcc/testsuite/gcc.target/i386/funcspec-10.c
  c1320fd604803bc04257c984f1e3ba77  gcc/testsuite/gcc.target/i386/funcspec-11.c
! 1daf24d6f230797298402aa36d822051  gcc/testsuite/gcc.target/i386/funcspec-2.c
! 3dd864a351a6115db6a5b2ea1ee16ece  gcc/testsuite/gcc.target/i386/funcspec-3.c
  5af0527c599bf95f77628d48b1beb0ec  gcc/testsuite/gcc.target/i386/funcspec-4.c
  7568c1249431aafb7f8e2610a1e4a35e  gcc/testsuite/gcc.target/i386/funcspec-5.c
! 664d8097f586c76b0f4c2f3767aa85dd  gcc/testsuite/gcc.target/i386/funcspec-56.inc
  6886186deb869f2b04be36492c05b8aa  gcc/testsuite/gcc.target/i386/funcspec-6.c
  35655de5c9348f2a36254312a8d17908  gcc/testsuite/gcc.target/i386/funcspec-7.c
  c5cbddeb1b01f35a7fa7f281fb2acdb4  gcc/testsuite/gcc.target/i386/funcspec-8.c
*************** ebc315087303e52034dda4e281f500fd  gcc/te
*** 58008,58015 ****
  d95f56a3f95ba78c3fdb5f418f8d953a  gcc/testsuite/gcc.target/i386/hle-xchg-rel-1.c
  c937938a0a49e70d699ee5ef70d33cb0  gcc/testsuite/gcc.target/i386/hle-xor-acq-1.c
  7aef940035776cbf7ecabc540f63e33e  gcc/testsuite/gcc.target/i386/hle-xor-rel-1.c
! 28780d113a36ada27244d9b405f661f1  gcc/testsuite/gcc.target/i386/i386.exp
! 8652af34b6e3f7739051d89e7f1043e0  gcc/testsuite/gcc.target/i386/iamcu/abi-iamcu.exp
  824179ec90e1e4fdb872aed133f8d523  gcc/testsuite/gcc.target/i386/iamcu/args.h
  75e691882a781a986cbf2b848eacc017  gcc/testsuite/gcc.target/i386/iamcu/asm-support.S
  a77c8e89ec538edb98eb4ac96da0db61  gcc/testsuite/gcc.target/i386/iamcu/defines.h
--- 61510,61518 ----
  d95f56a3f95ba78c3fdb5f418f8d953a  gcc/testsuite/gcc.target/i386/hle-xchg-rel-1.c
  c937938a0a49e70d699ee5ef70d33cb0  gcc/testsuite/gcc.target/i386/hle-xor-acq-1.c
  7aef940035776cbf7ecabc540f63e33e  gcc/testsuite/gcc.target/i386/hle-xor-rel-1.c
! 6bb730f0122ef83efe1593372db950e5  gcc/testsuite/gcc.target/i386/hreset-1.c
! a6020162b1207dec1f78ff7901093fbd  gcc/testsuite/gcc.target/i386/i386.exp
! 2d69eb6ddebbb701ee0dbfa08d2eb6b8  gcc/testsuite/gcc.target/i386/iamcu/abi-iamcu.exp
  824179ec90e1e4fdb872aed133f8d523  gcc/testsuite/gcc.target/i386/iamcu/args.h
  75e691882a781a986cbf2b848eacc017  gcc/testsuite/gcc.target/i386/iamcu/asm-support.S
  a77c8e89ec538edb98eb4ac96da0db61  gcc/testsuite/gcc.target/i386/iamcu/defines.h
*************** c48c02707eed4c21b1fea0eb0be3e02a  gcc/te
*** 58032,58038 ****
  b9fe9d47303c04eb3addd78ed747270a  gcc/testsuite/gcc.target/i386/iamcu/test_passing_unions.c
  f508e2c1d144c2c5c11dc60aaf9d08cc  gcc/testsuite/gcc.target/i386/iamcu/test_struct_returning.c
  b6c1af324fa0e840c1c6dc306c27271e  gcc/testsuite/gcc.target/i386/iamcu/test_varargs.c
! cccf9545f7496c9f75cdbea22e78652f  gcc/testsuite/gcc.target/i386/ifcvt-onecmpl-abs-1.c
  af0e32f53ec629289269248abb106c2e  gcc/testsuite/gcc.target/i386/iinline-attr-2.c
  05bb360a025eed6dd019b28ad5032c23  gcc/testsuite/gcc.target/i386/incoming-1.c
  4770d945ceafa0ce8aaebccfb7094734  gcc/testsuite/gcc.target/i386/incoming-10.c
--- 61535,61541 ----
  b9fe9d47303c04eb3addd78ed747270a  gcc/testsuite/gcc.target/i386/iamcu/test_passing_unions.c
  f508e2c1d144c2c5c11dc60aaf9d08cc  gcc/testsuite/gcc.target/i386/iamcu/test_struct_returning.c
  b6c1af324fa0e840c1c6dc306c27271e  gcc/testsuite/gcc.target/i386/iamcu/test_varargs.c
! ca32887018712b14ffe3bead48a9d143  gcc/testsuite/gcc.target/i386/ifcvt-onecmpl-abs-1.c
  af0e32f53ec629289269248abb106c2e  gcc/testsuite/gcc.target/i386/iinline-attr-2.c
  05bb360a025eed6dd019b28ad5032c23  gcc/testsuite/gcc.target/i386/incoming-1.c
  4770d945ceafa0ce8aaebccfb7094734  gcc/testsuite/gcc.target/i386/incoming-10.c
*************** d8f5233e50dda438e50d5284e6d51493  gcc/te
*** 58166,58189 ****
  aba6d2eff079b06e7cd71c9e907153e1  gcc/testsuite/gcc.target/i386/isa-8.c
  4f5df60f63e0d796793892096ab64858  gcc/testsuite/gcc.target/i386/isa-9.c
  e1e7267fec37636815e8272359b19e18  gcc/testsuite/gcc.target/i386/isa-check.h
  6a61f297f5746de86187140f048ab655  gcc/testsuite/gcc.target/i386/l_fma_1.h
  c598c1d2a127be1189b3dfe020919429  gcc/testsuite/gcc.target/i386/l_fma_2.h
  8aa60b44b83369f838965e6e8e99c4e7  gcc/testsuite/gcc.target/i386/l_fma_3.h
  35441e347bb826ad23a3351b9d27ab6e  gcc/testsuite/gcc.target/i386/l_fma_4.h
  a110be6b21b77f1aa00503c23330c0b7  gcc/testsuite/gcc.target/i386/l_fma_5.h
  eac1520d63168ec113d984cb604b8417  gcc/testsuite/gcc.target/i386/l_fma_6.h
! 7c4c2b7807ac639f99f95d4f331b6f52  gcc/testsuite/gcc.target/i386/l_fma_double_1.c
! fc3d323e6cb043547544c6c54532b2ac  gcc/testsuite/gcc.target/i386/l_fma_double_2.c
! 21abf65496929de8e694d6d89d371b5c  gcc/testsuite/gcc.target/i386/l_fma_double_3.c
! ea0fc2678b54e2d9bdd1a592d650d2b7  gcc/testsuite/gcc.target/i386/l_fma_double_4.c
! e60ab50fe9363a3681f760929a4d581e  gcc/testsuite/gcc.target/i386/l_fma_double_5.c
! 6ba0ba36fd6d591717ab761ede9ecc30  gcc/testsuite/gcc.target/i386/l_fma_double_6.c
! 604afa026116d58bdca07eae82a90515  gcc/testsuite/gcc.target/i386/l_fma_float_1.c
! c1fe35e400b4fdc5ebdc0ce5cfa494c6  gcc/testsuite/gcc.target/i386/l_fma_float_2.c
! b572d5af2f8823519508ee7e8e3f697a  gcc/testsuite/gcc.target/i386/l_fma_float_3.c
! ecdf0f9c3bcf4973584d4383c8aa0efb  gcc/testsuite/gcc.target/i386/l_fma_float_4.c
! 68fa5a48222d05a35e09be32de7695fc  gcc/testsuite/gcc.target/i386/l_fma_float_5.c
! e6fafe40c467d23612698719b24591d5  gcc/testsuite/gcc.target/i386/l_fma_float_6.c
  2ba947ad943c8a25bd6804f8b7dbd4ea  gcc/testsuite/gcc.target/i386/l_fma_main.h
  bc3bafc23926bd98c116f5db64518ac5  gcc/testsuite/gcc.target/i386/l_fma_run_double_1.c
  0aa07ff1659ac84aa05c4ae647131787  gcc/testsuite/gcc.target/i386/l_fma_run_double_2.c
--- 61669,61703 ----
  aba6d2eff079b06e7cd71c9e907153e1  gcc/testsuite/gcc.target/i386/isa-8.c
  4f5df60f63e0d796793892096ab64858  gcc/testsuite/gcc.target/i386/isa-9.c
  e1e7267fec37636815e8272359b19e18  gcc/testsuite/gcc.target/i386/isa-check.h
+ e664643895393c6a8529d34ccab59937  gcc/testsuite/gcc.target/i386/keylocker-aesdec128kl.c
+ 9beb199a2e38b400b4452951b9257de0  gcc/testsuite/gcc.target/i386/keylocker-aesdec256kl.c
+ 744fbff1452e35f3cd8f6e4742957f88  gcc/testsuite/gcc.target/i386/keylocker-aesdecwide128kl.c
+ edae4790e572f5f384f3fd53bc16f930  gcc/testsuite/gcc.target/i386/keylocker-aesdecwide256kl.c
+ c89ecd0f9931568f536dc071eea76350  gcc/testsuite/gcc.target/i386/keylocker-aesenc128kl.c
+ 380986fccfc94de2053cb58bda652e65  gcc/testsuite/gcc.target/i386/keylocker-aesenc256kl.c
+ 82f0c1688e98d57bb5b380c9b834d5f5  gcc/testsuite/gcc.target/i386/keylocker-aesencwide128kl.c
+ bce5027ed86913143560e79cc6a745fe  gcc/testsuite/gcc.target/i386/keylocker-aesencwide256kl.c
+ 4c4a88b13cbf3c58c70ad98c32a8879d  gcc/testsuite/gcc.target/i386/keylocker-encodekey128.c
+ 5d4d1e811f69626e9becd2b2c2a1c6d6  gcc/testsuite/gcc.target/i386/keylocker-encodekey256.c
+ 78393ec91600382e98db57e560deaea9  gcc/testsuite/gcc.target/i386/keylocker-loadiwkey.c
  6a61f297f5746de86187140f048ab655  gcc/testsuite/gcc.target/i386/l_fma_1.h
  c598c1d2a127be1189b3dfe020919429  gcc/testsuite/gcc.target/i386/l_fma_2.h
  8aa60b44b83369f838965e6e8e99c4e7  gcc/testsuite/gcc.target/i386/l_fma_3.h
  35441e347bb826ad23a3351b9d27ab6e  gcc/testsuite/gcc.target/i386/l_fma_4.h
  a110be6b21b77f1aa00503c23330c0b7  gcc/testsuite/gcc.target/i386/l_fma_5.h
  eac1520d63168ec113d984cb604b8417  gcc/testsuite/gcc.target/i386/l_fma_6.h
! 19f14cf1b4367edd41aa3da4ad700530  gcc/testsuite/gcc.target/i386/l_fma_double_1.c
! 609a55093987c4a7532173b1a847eef3  gcc/testsuite/gcc.target/i386/l_fma_double_2.c
! d6b8d2a994385b6742c9607eacbf091f  gcc/testsuite/gcc.target/i386/l_fma_double_3.c
! d6a46de62635d44de3c7df0319bb6fff  gcc/testsuite/gcc.target/i386/l_fma_double_4.c
! 81bbe4f979a7f8d50ee5f1c7620815d6  gcc/testsuite/gcc.target/i386/l_fma_double_5.c
! 6a3159ba67b0d2b301a588fece45810e  gcc/testsuite/gcc.target/i386/l_fma_double_6.c
! d9cdd9a3cb9a0594f7ede3a13def3850  gcc/testsuite/gcc.target/i386/l_fma_float_1.c
! 6641ded75dddb7427f2c5da1394c0866  gcc/testsuite/gcc.target/i386/l_fma_float_2.c
! 75e87c826188167f89bfec4f2fedc9e3  gcc/testsuite/gcc.target/i386/l_fma_float_3.c
! 7e9c1b68ee26781757f5c8ba54babd16  gcc/testsuite/gcc.target/i386/l_fma_float_4.c
! 340df2ac38e43a85699d4f16e72d676c  gcc/testsuite/gcc.target/i386/l_fma_float_5.c
! 9b0fb02d8d2b0b1229176b4adedd76cf  gcc/testsuite/gcc.target/i386/l_fma_float_6.c
  2ba947ad943c8a25bd6804f8b7dbd4ea  gcc/testsuite/gcc.target/i386/l_fma_main.h
  bc3bafc23926bd98c116f5db64518ac5  gcc/testsuite/gcc.target/i386/l_fma_run_double_1.c
  0aa07ff1659ac84aa05c4ae647131787  gcc/testsuite/gcc.target/i386/l_fma_run_double_2.c
*************** e5ecd53e0c76cc760ad01be1a9813369  gcc/te
*** 58242,58252 ****
  0278e689423a85f079aa4efe29d3f7df  gcc/testsuite/gcc.target/i386/lzcnt-6.c
  274f13534767ce3526a2ede5545e1f4e  gcc/testsuite/gcc.target/i386/lzcnt-6a.c
  8f3404abf42d3a0727735c75aab263db  gcc/testsuite/gcc.target/i386/lzcnt-check.h
! 46a7a8bd79c4091b3efa21b5496cb127  gcc/testsuite/gcc.target/i386/m128-check.h
  4bf99318eb20a83c624941a47bfe86ad  gcc/testsuite/gcc.target/i386/m256-1.c
  e259d35e40662e2b47b740df3c6dba01  gcc/testsuite/gcc.target/i386/m256-2.c
! 60ce1087996a496abe236b15f8752159  gcc/testsuite/gcc.target/i386/m256-check.h
! 10899c0994276f068f304098b9a5216f  gcc/testsuite/gcc.target/i386/m512-check.h
  05d056ee8da06b7cd789ad1baf16efb0  gcc/testsuite/gcc.target/i386/mask-pack.c
  51e6a5e239bab889631495c5d9329866  gcc/testsuite/gcc.target/i386/mask-unpack.c
  b16e49c611dcfbad5115fdfc182bbab9  gcc/testsuite/gcc.target/i386/math-torture/ceil.c
--- 61756,61766 ----
  0278e689423a85f079aa4efe29d3f7df  gcc/testsuite/gcc.target/i386/lzcnt-6.c
  274f13534767ce3526a2ede5545e1f4e  gcc/testsuite/gcc.target/i386/lzcnt-6a.c
  8f3404abf42d3a0727735c75aab263db  gcc/testsuite/gcc.target/i386/lzcnt-check.h
! a86d743787dffa40bb906efb191264a2  gcc/testsuite/gcc.target/i386/m128-check.h
  4bf99318eb20a83c624941a47bfe86ad  gcc/testsuite/gcc.target/i386/m256-1.c
  e259d35e40662e2b47b740df3c6dba01  gcc/testsuite/gcc.target/i386/m256-2.c
! 591de584cad41e9b66a3be285edd0937  gcc/testsuite/gcc.target/i386/m256-check.h
! 03b6da5da7ef82a20d86792f00e25003  gcc/testsuite/gcc.target/i386/m512-check.h
  05d056ee8da06b7cd789ad1baf16efb0  gcc/testsuite/gcc.target/i386/mask-pack.c
  51e6a5e239bab889631495c5d9329866  gcc/testsuite/gcc.target/i386/mask-unpack.c
  b16e49c611dcfbad5115fdfc182bbab9  gcc/testsuite/gcc.target/i386/math-torture/ceil.c
*************** a697ff9e2f8fc0bffc90007a1118893e  gcc/te
*** 58255,58261 ****
  2b719a429ba467512cb34ad73352ab1f  gcc/testsuite/gcc.target/i386/math-torture/lfloor.c
  90c0fcbde458b9688e1e20332b2f1308  gcc/testsuite/gcc.target/i386/math-torture/lrint.c
  75c95d53b12109ed3e501ca632f0035d  gcc/testsuite/gcc.target/i386/math-torture/lround.c
! a6b47b9058d94486dc2a38b18f78a62f  gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp
  b8987de7098b84e004093b3d86b59425  gcc/testsuite/gcc.target/i386/math-torture/nearbyint.c
  9b512770257f2687cde1774f56f4d64d  gcc/testsuite/gcc.target/i386/math-torture/rint.c
  29b89b8d60fbc8ee9eb2fb986ae17c23  gcc/testsuite/gcc.target/i386/math-torture/round.c
--- 61769,61775 ----
  2b719a429ba467512cb34ad73352ab1f  gcc/testsuite/gcc.target/i386/math-torture/lfloor.c
  90c0fcbde458b9688e1e20332b2f1308  gcc/testsuite/gcc.target/i386/math-torture/lrint.c
  75c95d53b12109ed3e501ca632f0035d  gcc/testsuite/gcc.target/i386/math-torture/lround.c
! b1b791f838aad5a5a033e47c8330d958  gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp
  b8987de7098b84e004093b3d86b59425  gcc/testsuite/gcc.target/i386/math-torture/nearbyint.c
  9b512770257f2687cde1774f56f4d64d  gcc/testsuite/gcc.target/i386/math-torture/rint.c
  29b89b8d60fbc8ee9eb2fb986ae17c23  gcc/testsuite/gcc.target/i386/math-torture/round.c
*************** cda0d89452347311cc45a79be2d8f0fc  gcc/te
*** 58268,58291 ****
--- 61782,61824 ----
  536862ceddae932e3d7da830f0866d31  gcc/testsuite/gcc.target/i386/memcpy-3.c
  27b4fc4c0b0ecbd4614a4e9af86a6a18  gcc/testsuite/gcc.target/i386/memcpy-pr95886.c
  b5176a7f12717b0fd4c9162a139871e9  gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c
+ 003de97b3734d5ede529657973ce1244  gcc/testsuite/gcc.target/i386/memcpy-strategy-10.c
+ 619cbc26dc85de4ded3f5a985d0a23a2  gcc/testsuite/gcc.target/i386/memcpy-strategy-11.c
  b001554c0c381f992911b1e7a465a6b8  gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c
  18088286a0546a409434dcbafef0a896  gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c
  6e857b4eb94b8707c380e73efcbc5a51  gcc/testsuite/gcc.target/i386/memcpy-strategy-4.c
+ 43417cd5f782058c791740ffeb9e17bf  gcc/testsuite/gcc.target/i386/memcpy-strategy-5.c
+ 06d71d8673062b30f1a1db1bdfb0f639  gcc/testsuite/gcc.target/i386/memcpy-strategy-6.c
+ ee6163f62ab711d692467ababe19d6e8  gcc/testsuite/gcc.target/i386/memcpy-strategy-7.c
+ 340d39f8d8ef39d53004ab646169990b  gcc/testsuite/gcc.target/i386/memcpy-strategy-8.c
+ 2dd9e14dd90d6b63ab5fb4222847a72d  gcc/testsuite/gcc.target/i386/memcpy-strategy-9.c
  5a0fd04cbd019d9f36835345ab0db6ad  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c
  c84ec8a2cd4608e33d447c561108ce97  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c
  40cce91585f47cde61390171cd489668  gcc/testsuite/gcc.target/i386/memset-1.c
  5d42d8053ea9c0f90ccef1a5662638be  gcc/testsuite/gcc.target/i386/memset-strategy-1.c
  e34fc4954adf255e63dd959604f68e95  gcc/testsuite/gcc.target/i386/memset-strategy-2.c
+ ab2b88f0bcce4626b92af0e20a2b1f62  gcc/testsuite/gcc.target/i386/memset-strategy-3.c
+ 20e5e2cabbded0b26bce978e68dfb2f0  gcc/testsuite/gcc.target/i386/memset-strategy-4.c
+ 208260a991f7d1fc158f74981156e4ae  gcc/testsuite/gcc.target/i386/memset-strategy-5.c
+ 260e12efd7f892d89efa62914317673f  gcc/testsuite/gcc.target/i386/memset-strategy-6.c
+ 71b4b158f262383324df8c888d6c9e70  gcc/testsuite/gcc.target/i386/memset-strategy-7.c
+ 1af29c0ee5e0fa8803b6dd0354a23dee  gcc/testsuite/gcc.target/i386/memset-strategy-8.c
+ ff0a702aa0efe0f21e105da81c274eb6  gcc/testsuite/gcc.target/i386/memset-strategy-9.c
  abacd2e1491b7c40915d4be18c0229b4  gcc/testsuite/gcc.target/i386/memset-vector_loop-1.c
  87dbca58e427b20c0f83b7a2aefbd38a  gcc/testsuite/gcc.target/i386/memset-vector_loop-2.c
  820bfa5c15a64564c66a03aa917aeae1  gcc/testsuite/gcc.target/i386/merge-1.c
  c4570886a9f211d78bbdd2e42072c902  gcc/testsuite/gcc.target/i386/minmax-1.c
+ 0ff9b1c7cefc9d6f11d41b132dc6cca7  gcc/testsuite/gcc.target/i386/minmax-10.c
+ 7836f1f75af426e0f8157eab2934b89e  gcc/testsuite/gcc.target/i386/minmax-11.c
+ f7f9110f5b59055509f009beaf6c9be3  gcc/testsuite/gcc.target/i386/minmax-12.c
  d342ed599b70d74fac5ae924c1a4a586  gcc/testsuite/gcc.target/i386/minmax-2.c
  fe06960188ec5cc97489b2af74d70a7c  gcc/testsuite/gcc.target/i386/minmax-3.c
  5760adec235bd90e28e149784a2dd119  gcc/testsuite/gcc.target/i386/minmax-4.c
  d4c118eef6b8875d77744f1ffe44777e  gcc/testsuite/gcc.target/i386/minmax-5.c
  036d7236e17ac64b72e0827de729208e  gcc/testsuite/gcc.target/i386/minmax-6.c
  07ceb25b9f45c41125f7a2b2889a6e5c  gcc/testsuite/gcc.target/i386/minmax-7.c
+ 72997bf36a09ab6e36d6be7b9917f67c  gcc/testsuite/gcc.target/i386/minmax-8.c
+ 594b46b8314909192567bd4a3b7a2b54  gcc/testsuite/gcc.target/i386/minmax-9.c
  be79d4764ced90c9229ac843869cdc05  gcc/testsuite/gcc.target/i386/mmx-1.c
  de3950b0d3ffe8898e7b6973a7658470  gcc/testsuite/gcc.target/i386/mmx-2.c
  4055fe9aaa6fd07185517c33ca6dbd5b  gcc/testsuite/gcc.target/i386/mmx-3.c
*************** bceaa637e42b8eb896354cce94fad473  gcc/te
*** 58308,58323 ****
  e6c317c577cc6f419edc024b353613cf  gcc/testsuite/gcc.target/i386/movbe-5.c
  0d20bce1f8d326eae5b8360ae189013a  gcc/testsuite/gcc.target/i386/movdi-rex64.c
  24bf04c3867c573d0d2e26cdd8e9fca3  gcc/testsuite/gcc.target/i386/movdir-1.c
! 220fd05ac4bf3942980044733740647e  gcc/testsuite/gcc.target/i386/movdir64b.c
! 58cffc7c9e9e82575f8d75592c0a006b  gcc/testsuite/gcc.target/i386/movdiri32.c
! bacea7aea9a00d63b7334d17aada2970  gcc/testsuite/gcc.target/i386/movdiri64.c
  d4c716e20ab6e64d6bb29cc63dd65677  gcc/testsuite/gcc.target/i386/movq-2.c
  d7e128da4dee8caf6cd8d400af12d230  gcc/testsuite/gcc.target/i386/movq.c
  347dca8d249a46ac2f5892d9ffdc0337  gcc/testsuite/gcc.target/i386/movsd.c
  bb0703a0cfe126aeba12e7589d46db56  gcc/testsuite/gcc.target/i386/movsi-sm-1.c
  c6304e928bcf1393de99639a142057ad  gcc/testsuite/gcc.target/i386/movti.c
  2376b08fdef000cf037280264f5437fb  gcc/testsuite/gcc.target/i386/mpx.c
! 8eb0888c65213c6a136f005c9b089501  gcc/testsuite/gcc.target/i386/ms_hook_prologue.c
  0e6e9e397831921b702df0167f01b9d2  gcc/testsuite/gcc.target/i386/mul.c
  6214909c5cebe3099403b30910bbf1f6  gcc/testsuite/gcc.target/i386/mvc1.c
  98fd97ce23f7773af3c39c137882bd08  gcc/testsuite/gcc.target/i386/mvc10.c
--- 61841,61856 ----
  e6c317c577cc6f419edc024b353613cf  gcc/testsuite/gcc.target/i386/movbe-5.c
  0d20bce1f8d326eae5b8360ae189013a  gcc/testsuite/gcc.target/i386/movdi-rex64.c
  24bf04c3867c573d0d2e26cdd8e9fca3  gcc/testsuite/gcc.target/i386/movdir-1.c
! ceabed34440a4d5e7379a87fe03c334e  gcc/testsuite/gcc.target/i386/movdir64b.c
! 09b5a659a259da6d7c01a141d5bd2523  gcc/testsuite/gcc.target/i386/movdiri32.c
! 97aab83a1a1878b06468a84c5d42ea6f  gcc/testsuite/gcc.target/i386/movdiri64.c
  d4c716e20ab6e64d6bb29cc63dd65677  gcc/testsuite/gcc.target/i386/movq-2.c
  d7e128da4dee8caf6cd8d400af12d230  gcc/testsuite/gcc.target/i386/movq.c
  347dca8d249a46ac2f5892d9ffdc0337  gcc/testsuite/gcc.target/i386/movsd.c
  bb0703a0cfe126aeba12e7589d46db56  gcc/testsuite/gcc.target/i386/movsi-sm-1.c
  c6304e928bcf1393de99639a142057ad  gcc/testsuite/gcc.target/i386/movti.c
  2376b08fdef000cf037280264f5437fb  gcc/testsuite/gcc.target/i386/mpx.c
! 05b06b2c30d6910a0afec51d588f2c21  gcc/testsuite/gcc.target/i386/ms_hook_prologue.c
  0e6e9e397831921b702df0167f01b9d2  gcc/testsuite/gcc.target/i386/mul.c
  6214909c5cebe3099403b30910bbf1f6  gcc/testsuite/gcc.target/i386/mvc1.c
  98fd97ce23f7773af3c39c137882bd08  gcc/testsuite/gcc.target/i386/mvc10.c
*************** dc10c73f7dc0232744baa8a2d6539cb9  gcc/te
*** 58368,58373 ****
--- 61901,61913 ----
  4465a1941d15581e591f761ac125a090  gcc/testsuite/gcc.target/i386/pad-9.c
  c3c9a0ed6ec90244da369421d6a9e1b6  gcc/testsuite/gcc.target/i386/parity-1.c
  c05a7c5c0900e1a07b169f7b0baa6463  gcc/testsuite/gcc.target/i386/parity-2.c
+ beebce66bc5878160a4cc16e2278455a  gcc/testsuite/gcc.target/i386/parity-3.c
+ d9352f29a0bcb697710e4b146df912da  gcc/testsuite/gcc.target/i386/parity-4.c
+ a2da30b33f626c449124b741d63ff50f  gcc/testsuite/gcc.target/i386/parity-5.c
+ 835463afc31b12e9dfa14055d61d716a  gcc/testsuite/gcc.target/i386/parity-6.c
+ 1dfea81292e4d43d2d7fc2bfd3430eda  gcc/testsuite/gcc.target/i386/parity-7.c
+ 03b41b2f42cb61cb71b23f1af7f0135e  gcc/testsuite/gcc.target/i386/parity-8.c
+ 8d756665b79bf6bd7920f21a780f11dc  gcc/testsuite/gcc.target/i386/parity-9.c
  f354844939fdb7c6c229607f1ff57287  gcc/testsuite/gcc.target/i386/pause-1.c
  bccc40fa95a11c992c5319581f1c269f  gcc/testsuite/gcc.target/i386/pause-2.c
  b6587e8091b873e052b86981b4c6dd26  gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
*************** f91cf99532e69c383485f6be3f62eb99  gcc/te
*** 58391,58396 ****
--- 61931,61937 ----
  b1d366c21cfdcfacf9854ed6cbfd7bc3  gcc/testsuite/gcc.target/i386/pieces-strcpy-1.c
  52e52549556117888f85f13d26ced39b  gcc/testsuite/gcc.target/i386/pieces-strcpy-2.c
  13d06bee88f2ccd2a16effe0c243e61e  gcc/testsuite/gcc.target/i386/pow-1.c
+ 08e64611506eb827fa5c5f614b29322b  gcc/testsuite/gcc.target/i386/pr100066.c
  304b7d185da41754f69656f5bfa7d508  gcc/testsuite/gcc.target/i386/pr11001-memcpy-1.c
  7dbe55f1460795545dd744807466a430  gcc/testsuite/gcc.target/i386/pr11001-memcpy-2.c
  cbe58ae1efc3b97c1019a430e1fedfcb  gcc/testsuite/gcc.target/i386/pr11001-memcpy-3.c
*************** dcfc47d5c6f74562228eb399293c4bc5  gcc/te
*** 58468,58473 ****
--- 62009,62015 ----
  333bc515b4dad2a9e91fbbdd6342f2b0  gcc/testsuite/gcc.target/i386/pr31167.c
  6b372be26ff91d2b7b242c1a551bccc6  gcc/testsuite/gcc.target/i386/pr31486.c
  86281a53df1b24c8068e4bf1b184d74b  gcc/testsuite/gcc.target/i386/pr31628.c
+ 5ce3efb86f23dc0eae07a9a326f046aa  gcc/testsuite/gcc.target/i386/pr31799.c
  9131ed1be82a4a4fecdc9d0aa2021134  gcc/testsuite/gcc.target/i386/pr31854.c
  dfd05b1f491f52c6fed332039ead357a  gcc/testsuite/gcc.target/i386/pr32000-1.c
  a07b3ac10c2e8d8960d5f94aacc75325  gcc/testsuite/gcc.target/i386/pr32000-2.c
*************** fe6fafefcdfda54adbb7614ed5ecb610  gcc/te
*** 58644,58650 ****
  488a259dd7c08bf48b916db90053c476  gcc/testsuite/gcc.target/i386/pr45336-2.c
  9aa59e107e69de82e3ae3c3ff949c5f7  gcc/testsuite/gcc.target/i386/pr45336-3.c
  e57701ecebce5a2e4a20fbe8f1eb4aba  gcc/testsuite/gcc.target/i386/pr45336-4.c
! bb0f83cc4d709e5ec4e73bffe99f090c  gcc/testsuite/gcc.target/i386/pr45352-1.c
  d0b7fcf64dcc7eeb7b55de961f082c51  gcc/testsuite/gcc.target/i386/pr45352-2.c
  7e685981c070f045a9b6c68aa67ca9ed  gcc/testsuite/gcc.target/i386/pr45352.c
  80146b2e69256d2c47bb4044363cdca8  gcc/testsuite/gcc.target/i386/pr45500.c
--- 62186,62192 ----
  488a259dd7c08bf48b916db90053c476  gcc/testsuite/gcc.target/i386/pr45336-2.c
  9aa59e107e69de82e3ae3c3ff949c5f7  gcc/testsuite/gcc.target/i386/pr45336-3.c
  e57701ecebce5a2e4a20fbe8f1eb4aba  gcc/testsuite/gcc.target/i386/pr45336-4.c
! cf32f9865011d599283c27b78d80f5c4  gcc/testsuite/gcc.target/i386/pr45352-1.c
  d0b7fcf64dcc7eeb7b55de961f082c51  gcc/testsuite/gcc.target/i386/pr45352-2.c
  7e685981c070f045a9b6c68aa67ca9ed  gcc/testsuite/gcc.target/i386/pr45352.c
  80146b2e69256d2c47bb4044363cdca8  gcc/testsuite/gcc.target/i386/pr45500.c
*************** ea3e702eaf77589c13619e1ed640518a  gcc/te
*** 58696,58702 ****
  b76e15da1f89511fc7b4b5efe8dbf865  gcc/testsuite/gcc.target/i386/pr47502-2.c
  ecd75b336f18480b299f2797c4d3909f  gcc/testsuite/gcc.target/i386/pr47564.c
  6f9533ed102f2551df7c101e76acea64  gcc/testsuite/gcc.target/i386/pr47581.c
! 91b6fefc691545995868281211538900  gcc/testsuite/gcc.target/i386/pr47602.c
  f9d970a48c4311b69ea7b5bb0d50ea87  gcc/testsuite/gcc.target/i386/pr47665.c
  893804774a550a4a7db90c5e24d2c6e0  gcc/testsuite/gcc.target/i386/pr47735.c
  3b16c13dcc55d512b3df8c314112d62c  gcc/testsuite/gcc.target/i386/pr47780.c
--- 62238,62244 ----
  b76e15da1f89511fc7b4b5efe8dbf865  gcc/testsuite/gcc.target/i386/pr47502-2.c
  ecd75b336f18480b299f2797c4d3909f  gcc/testsuite/gcc.target/i386/pr47564.c
  6f9533ed102f2551df7c101e76acea64  gcc/testsuite/gcc.target/i386/pr47581.c
! f55cea6a45823f19ef28ba3701912660  gcc/testsuite/gcc.target/i386/pr47602.c
  f9d970a48c4311b69ea7b5bb0d50ea87  gcc/testsuite/gcc.target/i386/pr47665.c
  893804774a550a4a7db90c5e24d2c6e0  gcc/testsuite/gcc.target/i386/pr47735.c
  3b16c13dcc55d512b3df8c314112d62c  gcc/testsuite/gcc.target/i386/pr47780.c
*************** daa42859823476fca1b35a79f1daabe0  gcc/te
*** 58804,58819 ****
  f87cf0427662776b6b805de195141d67  gcc/testsuite/gcc.target/i386/pr55142-1.c
  089b1cbb106519bbc62af7ad18aa69d6  gcc/testsuite/gcc.target/i386/pr55142-2.c
  bd55c20b20831d014542140f89eb62e7  gcc/testsuite/gcc.target/i386/pr55147.c
! b6ac81ab6d089d99c5a94aaf53b0ff8e  gcc/testsuite/gcc.target/i386/pr55151.c
  853f4cdc34932484543e6919afd12139  gcc/testsuite/gcc.target/i386/pr55154.c
  0e541d9cb1f058a12b8c85467f9a3155  gcc/testsuite/gcc.target/i386/pr55247-2.c
  4f070878226597c8437de45725036fd1  gcc/testsuite/gcc.target/i386/pr55247.c
  1d172a9f268e6e4d4e55c3aa199545ff  gcc/testsuite/gcc.target/i386/pr55277.c
! 13b079ca3838e1a1a6115c19f13def26  gcc/testsuite/gcc.target/i386/pr55342.c
  f6af6daa4fc7a7dcfa5316bde91215ee  gcc/testsuite/gcc.target/i386/pr55359.c
  eb594eead359af59ccf1611376ca0e06  gcc/testsuite/gcc.target/i386/pr55433.c
  29d660c0483f37e381e3799b6d990ea0  gcc/testsuite/gcc.target/i386/pr55448.c
! 1cc64d8c98d576810a0c8484752d6cd7  gcc/testsuite/gcc.target/i386/pr55458.c
  0882086bd00b2a2553a4109cb96b2e38  gcc/testsuite/gcc.target/i386/pr55512-1.c
  3e411acf0cb67b1e2dfd7386904224ad  gcc/testsuite/gcc.target/i386/pr55512-2.c
  b4fb0c886229835ec55bd681f831812b  gcc/testsuite/gcc.target/i386/pr55512-3.c
--- 62346,62361 ----
  f87cf0427662776b6b805de195141d67  gcc/testsuite/gcc.target/i386/pr55142-1.c
  089b1cbb106519bbc62af7ad18aa69d6  gcc/testsuite/gcc.target/i386/pr55142-2.c
  bd55c20b20831d014542140f89eb62e7  gcc/testsuite/gcc.target/i386/pr55147.c
! a31e1863c46b91f41816d26d1c369809  gcc/testsuite/gcc.target/i386/pr55151.c
  853f4cdc34932484543e6919afd12139  gcc/testsuite/gcc.target/i386/pr55154.c
  0e541d9cb1f058a12b8c85467f9a3155  gcc/testsuite/gcc.target/i386/pr55247-2.c
  4f070878226597c8437de45725036fd1  gcc/testsuite/gcc.target/i386/pr55247.c
  1d172a9f268e6e4d4e55c3aa199545ff  gcc/testsuite/gcc.target/i386/pr55277.c
! b2033b748f2c59f5bd4fb4c6174dd8ae  gcc/testsuite/gcc.target/i386/pr55342.c
  f6af6daa4fc7a7dcfa5316bde91215ee  gcc/testsuite/gcc.target/i386/pr55359.c
  eb594eead359af59ccf1611376ca0e06  gcc/testsuite/gcc.target/i386/pr55433.c
  29d660c0483f37e381e3799b6d990ea0  gcc/testsuite/gcc.target/i386/pr55448.c
! 22f76b50f3e1e617e2c35aad152d7770  gcc/testsuite/gcc.target/i386/pr55458.c
  0882086bd00b2a2553a4109cb96b2e38  gcc/testsuite/gcc.target/i386/pr55512-1.c
  3e411acf0cb67b1e2dfd7386904224ad  gcc/testsuite/gcc.target/i386/pr55512-2.c
  b4fb0c886229835ec55bd681f831812b  gcc/testsuite/gcc.target/i386/pr55512-3.c
*************** c7ecab2470e3efb65fefc784b5de8005  gcc/te
*** 58836,58842 ****
  bedc2906b19d90b34bbca83245d800ea  gcc/testsuite/gcc.target/i386/pr56151.c
  6880cac56232237ea6e3b016c449160a  gcc/testsuite/gcc.target/i386/pr56225.c
  4014a1169eec1b75b0aeb525eb9db9e0  gcc/testsuite/gcc.target/i386/pr56246.c
! 62ab9eff28dad58197fb00670ac04bfd  gcc/testsuite/gcc.target/i386/pr56348.c
  d28a6bc38cb291c4396ebd4cdd3b4dfc  gcc/testsuite/gcc.target/i386/pr56564-1.c
  f55ccc54c1440799ba6f4728b46291af  gcc/testsuite/gcc.target/i386/pr56564-2.c
  bd5d70e77eaa7b8fcf5779691873d469  gcc/testsuite/gcc.target/i386/pr56564-3.c
--- 62378,62384 ----
  bedc2906b19d90b34bbca83245d800ea  gcc/testsuite/gcc.target/i386/pr56151.c
  6880cac56232237ea6e3b016c449160a  gcc/testsuite/gcc.target/i386/pr56225.c
  4014a1169eec1b75b0aeb525eb9db9e0  gcc/testsuite/gcc.target/i386/pr56246.c
! 46e7cfe3f12d2ab3bb0f342d049f1277  gcc/testsuite/gcc.target/i386/pr56348.c
  d28a6bc38cb291c4396ebd4cdd3b4dfc  gcc/testsuite/gcc.target/i386/pr56564-1.c
  f55ccc54c1440799ba6f4728b46291af  gcc/testsuite/gcc.target/i386/pr56564-2.c
  bd5d70e77eaa7b8fcf5779691873d469  gcc/testsuite/gcc.target/i386/pr56564-3.c
*************** bd02b8a0614713f55733fac63a3e9c06  gcc/te
*** 58849,58855 ****
  8f35b23c364eec98865f376fc604a54d  gcc/testsuite/gcc.target/i386/pr57018.c
  0037b23bb497c1ed7bbde7fb0c6fac31  gcc/testsuite/gcc.target/i386/pr57046.c
  ef9a7877efcb30c3b8c4c86cd2d9192e  gcc/testsuite/gcc.target/i386/pr57091.c
! c7f426034d9df3b9350c1df80138c8dc  gcc/testsuite/gcc.target/i386/pr57097.c
  4be3438b496af45547bcaa622d04847f  gcc/testsuite/gcc.target/i386/pr57098.c
  a995edc07e467f878e75e842897b1cfd  gcc/testsuite/gcc.target/i386/pr57106.c
  24a8a0f263659238a672eac710e62c30  gcc/testsuite/gcc.target/i386/pr57189.c
--- 62391,62397 ----
  8f35b23c364eec98865f376fc604a54d  gcc/testsuite/gcc.target/i386/pr57018.c
  0037b23bb497c1ed7bbde7fb0c6fac31  gcc/testsuite/gcc.target/i386/pr57046.c
  ef9a7877efcb30c3b8c4c86cd2d9192e  gcc/testsuite/gcc.target/i386/pr57091.c
! 18d717fd848376a959049c0cfde1218e  gcc/testsuite/gcc.target/i386/pr57097.c
  4be3438b496af45547bcaa622d04847f  gcc/testsuite/gcc.target/i386/pr57098.c
  a995edc07e467f878e75e842897b1cfd  gcc/testsuite/gcc.target/i386/pr57106.c
  24a8a0f263659238a672eac710e62c30  gcc/testsuite/gcc.target/i386/pr57189.c
*************** bb5074395957224a22a9703b2d5a55a9  gcc/te
*** 58860,58866 ****
  cfeee968728c21c9dbbc604bc0341271  gcc/testsuite/gcc.target/i386/pr57293.c
  e7fa1acfad0b8a48a5001c624a4c21f1  gcc/testsuite/gcc.target/i386/pr57410.c
  7e388cbf0472c0b7b43d3d478bbe0e43  gcc/testsuite/gcc.target/i386/pr57459.c
! b5deee88eb6f0e5c5411652bd3034316  gcc/testsuite/gcc.target/i386/pr57655.c
  681638da206cb4838378ec263136509c  gcc/testsuite/gcc.target/i386/pr57736.c
  50495d07db3be5365859d80958345d8c  gcc/testsuite/gcc.target/i386/pr57756.c
  fed6054160e51c026ff44ce33b57790d  gcc/testsuite/gcc.target/i386/pr57756_2.c
--- 62402,62408 ----
  cfeee968728c21c9dbbc604bc0341271  gcc/testsuite/gcc.target/i386/pr57293.c
  e7fa1acfad0b8a48a5001c624a4c21f1  gcc/testsuite/gcc.target/i386/pr57410.c
  7e388cbf0472c0b7b43d3d478bbe0e43  gcc/testsuite/gcc.target/i386/pr57459.c
! ed21b97e74c1c0af2c933d1bcddf89f5  gcc/testsuite/gcc.target/i386/pr57655.c
  681638da206cb4838378ec263136509c  gcc/testsuite/gcc.target/i386/pr57736.c
  50495d07db3be5365859d80958345d8c  gcc/testsuite/gcc.target/i386/pr57756.c
  fed6054160e51c026ff44ce33b57790d  gcc/testsuite/gcc.target/i386/pr57756_2.c
*************** b7977d50dcb2822812e5811c18ce55a6  gcc/te
*** 58917,58923 ****
  2c7b4e86bf0d5cf0ddad42149136707f  gcc/testsuite/gcc.target/i386/pr59794-3.c
  190296eefbbfbf21f030513541d747ec  gcc/testsuite/gcc.target/i386/pr59794-4.c
  73357f4bd86aa45172fe42d6f9f2a72a  gcc/testsuite/gcc.target/i386/pr59794-5.c
! 697084b75df10cfa059a6c91d39111fd  gcc/testsuite/gcc.target/i386/pr59794-6.c
  af5df137e86c7cfd11e8d68f07c8d25c  gcc/testsuite/gcc.target/i386/pr59794-7.c
  0c2d582f00adc7472660160cba8ba19b  gcc/testsuite/gcc.target/i386/pr59839.c
  d1a0e61387e72001b140b22cec7d1a93  gcc/testsuite/gcc.target/i386/pr59874-1.c
--- 62459,62465 ----
  2c7b4e86bf0d5cf0ddad42149136707f  gcc/testsuite/gcc.target/i386/pr59794-3.c
  190296eefbbfbf21f030513541d747ec  gcc/testsuite/gcc.target/i386/pr59794-4.c
  73357f4bd86aa45172fe42d6f9f2a72a  gcc/testsuite/gcc.target/i386/pr59794-5.c
! e9427c3261ece216d75e9e85aac1ab44  gcc/testsuite/gcc.target/i386/pr59794-6.c
  af5df137e86c7cfd11e8d68f07c8d25c  gcc/testsuite/gcc.target/i386/pr59794-7.c
  0c2d582f00adc7472660160cba8ba19b  gcc/testsuite/gcc.target/i386/pr59839.c
  d1a0e61387e72001b140b22cec7d1a93  gcc/testsuite/gcc.target/i386/pr59874-1.c
*************** fb96b888f73b2dddf89b41b3dbc9da0e  gcc/te
*** 58931,58939 ****
  ca6424ec4af0910766ce85dcf738c0c9  gcc/testsuite/gcc.target/i386/pr60205-1.c
  cde6e72928d33211431d90e611362a64  gcc/testsuite/gcc.target/i386/pr60205-2.c
  3a5b472f7c0f2eaaa7fad56029dc3a7d  gcc/testsuite/gcc.target/i386/pr60451.c
  ef6b97efa08c7174694a3f12619b3adc  gcc/testsuite/gcc.target/i386/pr60508.c
  7cc5dc66387e141a9e8b75a8549d61db  gcc/testsuite/gcc.target/i386/pr60516.c
! 3c94cee0c51e457793c9d3861c12d06d  gcc/testsuite/gcc.target/i386/pr60693.c
  aa9afa3fae8ccdc655d286ee8211123a  gcc/testsuite/gcc.target/i386/pr60700.c
  94f97b9ba7792a470646abc124975070  gcc/testsuite/gcc.target/i386/pr60851.c
  8166dccdf85e516834c35488dbde09e2  gcc/testsuite/gcc.target/i386/pr60868.c
--- 62473,62482 ----
  ca6424ec4af0910766ce85dcf738c0c9  gcc/testsuite/gcc.target/i386/pr60205-1.c
  cde6e72928d33211431d90e611362a64  gcc/testsuite/gcc.target/i386/pr60205-2.c
  3a5b472f7c0f2eaaa7fad56029dc3a7d  gcc/testsuite/gcc.target/i386/pr60451.c
+ a412c22e6dc739181ecbad8f32b59d5d  gcc/testsuite/gcc.target/i386/pr60473.c
  ef6b97efa08c7174694a3f12619b3adc  gcc/testsuite/gcc.target/i386/pr60508.c
  7cc5dc66387e141a9e8b75a8549d61db  gcc/testsuite/gcc.target/i386/pr60516.c
! 38c3c08e61da8e4450db335e65856a74  gcc/testsuite/gcc.target/i386/pr60693.c
  aa9afa3fae8ccdc655d286ee8211123a  gcc/testsuite/gcc.target/i386/pr60700.c
  94f97b9ba7792a470646abc124975070  gcc/testsuite/gcc.target/i386/pr60851.c
  8166dccdf85e516834c35488dbde09e2  gcc/testsuite/gcc.target/i386/pr60868.c
*************** b61debdb92ace49afb06ba6614674f37  gcc/te
*** 58950,58956 ****
  8f431d9d3d205c9baea14eeb71358ba6  gcc/testsuite/gcc.target/i386/pr61296-6.c
  4b895b510814e9f7f748596eaf4a37da  gcc/testsuite/gcc.target/i386/pr61296-7.c
  5f56fb114713d58ad2f426074967c029  gcc/testsuite/gcc.target/i386/pr61360.c
! a2283164e9ac8a9ecb6ab0a475ca6ce4  gcc/testsuite/gcc.target/i386/pr61403.c
  c2ad80ced67848aa724c64790fae16e7  gcc/testsuite/gcc.target/i386/pr61423.c
  c862a3c17ff7c49e42a7fd543dbaf3ab  gcc/testsuite/gcc.target/i386/pr61446.c
  41c81c5a9c11d9139ad858d341f4ab52  gcc/testsuite/gcc.target/i386/pr61572.c
--- 62493,62499 ----
  8f431d9d3d205c9baea14eeb71358ba6  gcc/testsuite/gcc.target/i386/pr61296-6.c
  4b895b510814e9f7f748596eaf4a37da  gcc/testsuite/gcc.target/i386/pr61296-7.c
  5f56fb114713d58ad2f426074967c029  gcc/testsuite/gcc.target/i386/pr61360.c
! 4ec0bc7477059293f0c3b2e479a7d2d4  gcc/testsuite/gcc.target/i386/pr61403.c
  c2ad80ced67848aa724c64790fae16e7  gcc/testsuite/gcc.target/i386/pr61423.c
  c862a3c17ff7c49e42a7fd543dbaf3ab  gcc/testsuite/gcc.target/i386/pr61446.c
  41c81c5a9c11d9139ad858d341f4ab52  gcc/testsuite/gcc.target/i386/pr61572.c
*************** b7a433ff57a88adc047af2a4e1d0ccc3  gcc/te
*** 59011,59016 ****
--- 62554,62560 ----
  d0bcd3b015db31f54e123c610daf98d5  gcc/testsuite/gcc.target/i386/pr65105-2.c
  47f564855bb935c11601d8bbc677b17e  gcc/testsuite/gcc.target/i386/pr65105-3.c
  6565bece0ed59791362a9cb0b5ea7e98  gcc/testsuite/gcc.target/i386/pr65105-5.c
+ 6a1591cecc107103d424770a88bf2bae  gcc/testsuite/gcc.target/i386/pr65146.c
  c408d46c72ebb51b0a57ffe0f3de6177  gcc/testsuite/gcc.target/i386/pr65161.c
  33d5a0c424f7bfd8e53f617d460ec9cc  gcc/testsuite/gcc.target/i386/pr65217.c
  9cba83cd429a5aae52ffdd991c88bb7f  gcc/testsuite/gcc.target/i386/pr65248-1.c
*************** c408d46c72ebb51b0a57ffe0f3de6177  gcc/te
*** 59021,59032 ****
  150af88d334306ecb200e9f1f26b5bda  gcc/testsuite/gcc.target/i386/pr65588.c
  bac2b79055e3298741ce9969d7ee6b11  gcc/testsuite/gcc.target/i386/pr65671.c
  c4ad4fe09848c714ef20bd7b3bec80c3  gcc/testsuite/gcc.target/i386/pr65693.c
! 2ea7c4202a1e5497cafa1c5ff17ba1ae  gcc/testsuite/gcc.target/i386/pr65753.c
  78cbe4007cdbf9c2e9d9906666e65340  gcc/testsuite/gcc.target/i386/pr65782.c
  6f6047a71bbe57979dd5ffb6dbc92efa  gcc/testsuite/gcc.target/i386/pr65871-1.c
  4e9323ac4312d95a31dedce674927010  gcc/testsuite/gcc.target/i386/pr65871-2.c
  5775c5a6318f1243ca0d6b370dfa80a8  gcc/testsuite/gcc.target/i386/pr65871-3.c
! 2da6aebd812f43358fb14f1fb89a78c6  gcc/testsuite/gcc.target/i386/pr65915.c
  a7ad07047179fc7397ec423c4544ebe0  gcc/testsuite/gcc.target/i386/pr65990.c
  ec26b55377f002fb16800e03e7af917a  gcc/testsuite/gcc.target/i386/pr66047.c
  5804f7de5b4a38ca52d8d7c85ad3c378  gcc/testsuite/gcc.target/i386/pr66112-1.c
--- 62565,62576 ----
  150af88d334306ecb200e9f1f26b5bda  gcc/testsuite/gcc.target/i386/pr65588.c
  bac2b79055e3298741ce9969d7ee6b11  gcc/testsuite/gcc.target/i386/pr65671.c
  c4ad4fe09848c714ef20bd7b3bec80c3  gcc/testsuite/gcc.target/i386/pr65693.c
! d72c64d7d84381119b8b1d28ff66e05d  gcc/testsuite/gcc.target/i386/pr65753.c
  78cbe4007cdbf9c2e9d9906666e65340  gcc/testsuite/gcc.target/i386/pr65782.c
  6f6047a71bbe57979dd5ffb6dbc92efa  gcc/testsuite/gcc.target/i386/pr65871-1.c
  4e9323ac4312d95a31dedce674927010  gcc/testsuite/gcc.target/i386/pr65871-2.c
  5775c5a6318f1243ca0d6b370dfa80a8  gcc/testsuite/gcc.target/i386/pr65871-3.c
! 41015ce82fcd3c85081d4985a99e6240  gcc/testsuite/gcc.target/i386/pr65915.c
  a7ad07047179fc7397ec423c4544ebe0  gcc/testsuite/gcc.target/i386/pr65990.c
  ec26b55377f002fb16800e03e7af917a  gcc/testsuite/gcc.target/i386/pr66047.c
  5804f7de5b4a38ca52d8d7c85ad3c378  gcc/testsuite/gcc.target/i386/pr66112-1.c
*************** aec54bf271bf828f9f2067550deba17d  gcc/te
*** 59046,59059 ****
  1c2da3d339b00cad960a87bc5272f1b9  gcc/testsuite/gcc.target/i386/pr66232-2.c
  279d9db69a06b89013e5288fd90c2e79  gcc/testsuite/gcc.target/i386/pr66232-3.c
  832868d2e865281c18eaa05c083ba1ba  gcc/testsuite/gcc.target/i386/pr66232-4.c
! 04e01bd8c0a687bd91f46e81ed27167b  gcc/testsuite/gcc.target/i386/pr66232-5.c
  2e58fa602721b7ed0b2833051e07b1c9  gcc/testsuite/gcc.target/i386/pr66232-6.c
  ccdbdd63889c29a356fc609030db106c  gcc/testsuite/gcc.target/i386/pr66232-7.c
  2d01c5258765a82fa6de7e5662795179  gcc/testsuite/gcc.target/i386/pr66232-8.c
  d140dd01638bd24cc3b995bd76f3d825  gcc/testsuite/gcc.target/i386/pr66232-9.c
  0faab83f5c42b044a34dfa87c146af62  gcc/testsuite/gcc.target/i386/pr66274.c
  d77f5c5aaeda2ba3b6d6e23d3ff452ed  gcc/testsuite/gcc.target/i386/pr66275.c
! 9691b9fb2206de681ed083de689c89c7  gcc/testsuite/gcc.target/i386/pr66334.c
  7e1d59ce8293eee1a626a8693fdb6e4f  gcc/testsuite/gcc.target/i386/pr66412.c
  bbcc4bad6e85470b150a7b32458d3e35  gcc/testsuite/gcc.target/i386/pr66424.c
  19bb97a482a9e3d01f67c4fe65bfdb96  gcc/testsuite/gcc.target/i386/pr66470.c
--- 62590,62603 ----
  1c2da3d339b00cad960a87bc5272f1b9  gcc/testsuite/gcc.target/i386/pr66232-2.c
  279d9db69a06b89013e5288fd90c2e79  gcc/testsuite/gcc.target/i386/pr66232-3.c
  832868d2e865281c18eaa05c083ba1ba  gcc/testsuite/gcc.target/i386/pr66232-4.c
! 58146622c4dbc33955f5b38e1809c174  gcc/testsuite/gcc.target/i386/pr66232-5.c
  2e58fa602721b7ed0b2833051e07b1c9  gcc/testsuite/gcc.target/i386/pr66232-6.c
  ccdbdd63889c29a356fc609030db106c  gcc/testsuite/gcc.target/i386/pr66232-7.c
  2d01c5258765a82fa6de7e5662795179  gcc/testsuite/gcc.target/i386/pr66232-8.c
  d140dd01638bd24cc3b995bd76f3d825  gcc/testsuite/gcc.target/i386/pr66232-9.c
  0faab83f5c42b044a34dfa87c146af62  gcc/testsuite/gcc.target/i386/pr66274.c
  d77f5c5aaeda2ba3b6d6e23d3ff452ed  gcc/testsuite/gcc.target/i386/pr66275.c
! 357fef0f042d538ee766f10a91f4881b  gcc/testsuite/gcc.target/i386/pr66334.c
  7e1d59ce8293eee1a626a8693fdb6e4f  gcc/testsuite/gcc.target/i386/pr66412.c
  bbcc4bad6e85470b150a7b32458d3e35  gcc/testsuite/gcc.target/i386/pr66424.c
  19bb97a482a9e3d01f67c4fe65bfdb96  gcc/testsuite/gcc.target/i386/pr66470.c
*************** eeeafd2ca1f37484a866655d708c15c5  gcc/te
*** 59077,59087 ****
  ab260630154714d6a92fa264356ec077  gcc/testsuite/gcc.target/i386/pr66817.c
  2736f559d9ed3001d877f7450d819853  gcc/testsuite/gcc.target/i386/pr66818.c
  3a8525427a2c06a8b1267e82570c0b32  gcc/testsuite/gcc.target/i386/pr66819-1.c
! 706dbaecc1d6996b81f72c1443d9709e  gcc/testsuite/gcc.target/i386/pr66819-2.c
  84d18626653364c4aeae9aa54f1304e1  gcc/testsuite/gcc.target/i386/pr66819-3.c
  6f5c7f70b4c803c33e6e9c040c4e1d69  gcc/testsuite/gcc.target/i386/pr66819-4.c
  a085a03f3e2cb2efe81768c469c38448  gcc/testsuite/gcc.target/i386/pr66819-5.c
! 977ca8ebf3373ba11feedebeb69aea2c  gcc/testsuite/gcc.target/i386/pr66821.c
  32a7bc9b1156780a17e61321fa5d0b20  gcc/testsuite/gcc.target/i386/pr66824.c
  56552385dad0bf5bb041b52b7c8af4f5  gcc/testsuite/gcc.target/i386/pr66838.c
  dfbea4e98f52c35cbd0139ab2672c229  gcc/testsuite/gcc.target/i386/pr66891.c
--- 62621,62631 ----
  ab260630154714d6a92fa264356ec077  gcc/testsuite/gcc.target/i386/pr66817.c
  2736f559d9ed3001d877f7450d819853  gcc/testsuite/gcc.target/i386/pr66818.c
  3a8525427a2c06a8b1267e82570c0b32  gcc/testsuite/gcc.target/i386/pr66819-1.c
! 05f603378051623dc983f8f47a201829  gcc/testsuite/gcc.target/i386/pr66819-2.c
  84d18626653364c4aeae9aa54f1304e1  gcc/testsuite/gcc.target/i386/pr66819-3.c
  6f5c7f70b4c803c33e6e9c040c4e1d69  gcc/testsuite/gcc.target/i386/pr66819-4.c
  a085a03f3e2cb2efe81768c469c38448  gcc/testsuite/gcc.target/i386/pr66819-5.c
! 8b742d2465b2b0ca437850eeca0a1a81  gcc/testsuite/gcc.target/i386/pr66821.c
  32a7bc9b1156780a17e61321fa5d0b20  gcc/testsuite/gcc.target/i386/pr66824.c
  56552385dad0bf5bb041b52b7c8af4f5  gcc/testsuite/gcc.target/i386/pr66838.c
  dfbea4e98f52c35cbd0139ab2672c229  gcc/testsuite/gcc.target/i386/pr66891.c
*************** a0d4958712bff25bad27b504a88b752f  gcc/te
*** 59092,59098 ****
  b4766f0b858f4dde0f670dc50c412c1d  gcc/testsuite/gcc.target/i386/pr67215-2.c
  0da023f37721b9dbbfb817f702d30974  gcc/testsuite/gcc.target/i386/pr67215-3.c
  97d32c1dd1346e4a5f5aa5d2c454c95a  gcc/testsuite/gcc.target/i386/pr67265-2.c
! 9c144c5db9e771e79915ba21818659a7  gcc/testsuite/gcc.target/i386/pr67265.c
  286f1564ba26b37099d71ea844066099  gcc/testsuite/gcc.target/i386/pr67317-1.c
  84f1505e3c4090e696b46a15909123c9  gcc/testsuite/gcc.target/i386/pr67317-2.c
  c190bd6d04c9ea14dad4262a84a5e75d  gcc/testsuite/gcc.target/i386/pr67317-3.c
--- 62636,62642 ----
  b4766f0b858f4dde0f670dc50c412c1d  gcc/testsuite/gcc.target/i386/pr67215-2.c
  0da023f37721b9dbbfb817f702d30974  gcc/testsuite/gcc.target/i386/pr67215-3.c
  97d32c1dd1346e4a5f5aa5d2c454c95a  gcc/testsuite/gcc.target/i386/pr67265-2.c
! 3939badabd9b176c3a6eef57eb08110a  gcc/testsuite/gcc.target/i386/pr67265.c
  286f1564ba26b37099d71ea844066099  gcc/testsuite/gcc.target/i386/pr67317-1.c
  84f1505e3c4090e696b46a15909123c9  gcc/testsuite/gcc.target/i386/pr67317-2.c
  c190bd6d04c9ea14dad4262a84a5e75d  gcc/testsuite/gcc.target/i386/pr67317-3.c
*************** c3b077ecd7c86d02b425005a9cb043c1  gcc/te
*** 59108,59114 ****
  60848ddc7662f0dfc7296664321ad48d  gcc/testsuite/gcc.target/i386/pr67447.c
  4f17775f2edfb01fd1945a1bc06f2bfd  gcc/testsuite/gcc.target/i386/pr67480.c
  2443b3353cb87fc442a064e33c9e6ad1  gcc/testsuite/gcc.target/i386/pr67609-2.c
! 8c9b60d13c9ecfa83e3d5797b231f2ad  gcc/testsuite/gcc.target/i386/pr67609.c
  4e41161e98bd41c2d6acd0841fd515a1  gcc/testsuite/gcc.target/i386/pr67761.c
  0a1aee9b6e0857dd837a2af59f638d4b  gcc/testsuite/gcc.target/i386/pr67770.c
  40660f6a71410e0419a42f67ccffb5a3  gcc/testsuite/gcc.target/i386/pr67963-1.c
--- 62652,62658 ----
  60848ddc7662f0dfc7296664321ad48d  gcc/testsuite/gcc.target/i386/pr67447.c
  4f17775f2edfb01fd1945a1bc06f2bfd  gcc/testsuite/gcc.target/i386/pr67480.c
  2443b3353cb87fc442a064e33c9e6ad1  gcc/testsuite/gcc.target/i386/pr67609-2.c
! 96a5cd3e5ff303fd23238a9db08f946c  gcc/testsuite/gcc.target/i386/pr67609.c
  4e41161e98bd41c2d6acd0841fd515a1  gcc/testsuite/gcc.target/i386/pr67761.c
  0a1aee9b6e0857dd837a2af59f638d4b  gcc/testsuite/gcc.target/i386/pr67770.c
  40660f6a71410e0419a42f67ccffb5a3  gcc/testsuite/gcc.target/i386/pr67963-1.c
*************** ed977b2e07a2b51f6a0171f6ad454c88  gcc/te
*** 59147,59153 ****
  bbe33a083be93de566eabd4bd85abe60  gcc/testsuite/gcc.target/i386/pr68937-5.c
  6b3294bc9bc9f9a7d98b52b54b7f6a32  gcc/testsuite/gcc.target/i386/pr68937-6.c
  3bbd03473a753eda7e76facc85a52836  gcc/testsuite/gcc.target/i386/pr68956.c
! 7656f483dd5c86423cbfd451f33300b2  gcc/testsuite/gcc.target/i386/pr68961.c
  f6aed10f35c73b007f503bc7420b6c99  gcc/testsuite/gcc.target/i386/pr68986-1.c
  004b317767b82ac7adabd7ae3b0719eb  gcc/testsuite/gcc.target/i386/pr68986-2.c
  784297f01051407ff4186b76f39fbc67  gcc/testsuite/gcc.target/i386/pr68986-3.c
--- 62691,62697 ----
  bbe33a083be93de566eabd4bd85abe60  gcc/testsuite/gcc.target/i386/pr68937-5.c
  6b3294bc9bc9f9a7d98b52b54b7f6a32  gcc/testsuite/gcc.target/i386/pr68937-6.c
  3bbd03473a753eda7e76facc85a52836  gcc/testsuite/gcc.target/i386/pr68956.c
! 0d273d43823738d8ead60e4a78fc6d20  gcc/testsuite/gcc.target/i386/pr68961.c
  f6aed10f35c73b007f503bc7420b6c99  gcc/testsuite/gcc.target/i386/pr68986-1.c
  004b317767b82ac7adabd7ae3b0719eb  gcc/testsuite/gcc.target/i386/pr68986-2.c
  784297f01051407ff4186b76f39fbc67  gcc/testsuite/gcc.target/i386/pr68986-3.c
*************** fcef3df8c640dba4fe0c80bb38c4f34a  gcc/te
*** 59226,59231 ****
--- 62770,62776 ----
  9dc4644acf439047622a4c11be362103  gcc/testsuite/gcc.target/i386/pr70293.c
  77a10eac7238aed7e2e4bc7e46fdbf09  gcc/testsuite/gcc.target/i386/pr70300.c
  857f3aaeea9ed51acaa70ac8080e3855  gcc/testsuite/gcc.target/i386/pr70302.c
+ 6192086ea1bd3f4ca3024f18ae02c92b  gcc/testsuite/gcc.target/i386/pr70314.c
  8eb635052e7af90b767d742c35d98c12  gcc/testsuite/gcc.target/i386/pr70322-1.c
  614a4d96f766f9b0c9a16b2c6430a0c4  gcc/testsuite/gcc.target/i386/pr70322-2.c
  000306df7153399c97be28712e1e4637  gcc/testsuite/gcc.target/i386/pr70322-3.c
*************** d30fb05bd79f101c6bd53c37a89521cf  gcc/te
*** 59251,59257 ****
  18fd16e0176d3982cb0de00173db61f3  gcc/testsuite/gcc.target/i386/pr70703.c
  ee4d21c179f70daddef4c7dfe1e1af37  gcc/testsuite/gcc.target/i386/pr70708.c
  b98041baad19fb37bd266fc10bd5bc38  gcc/testsuite/gcc.target/i386/pr70728.c
! 30d3d080924a81fd75b3429fc6404b7a  gcc/testsuite/gcc.target/i386/pr70738-1.c
  fb74d73535ae13841ad274eed8746e1d  gcc/testsuite/gcc.target/i386/pr70738-2.c
  62b40d388752410d70587bdea276841f  gcc/testsuite/gcc.target/i386/pr70738-3.c
  1b44db35f8df9b2763028de6125de9e3  gcc/testsuite/gcc.target/i386/pr70738-4.c
--- 62796,62802 ----
  18fd16e0176d3982cb0de00173db61f3  gcc/testsuite/gcc.target/i386/pr70703.c
  ee4d21c179f70daddef4c7dfe1e1af37  gcc/testsuite/gcc.target/i386/pr70708.c
  b98041baad19fb37bd266fc10bd5bc38  gcc/testsuite/gcc.target/i386/pr70728.c
! ba9f70183a79e24b3e312229ab487b2a  gcc/testsuite/gcc.target/i386/pr70738-1.c
  fb74d73535ae13841ad274eed8746e1d  gcc/testsuite/gcc.target/i386/pr70738-2.c
  62b40d388752410d70587bdea276841f  gcc/testsuite/gcc.target/i386/pr70738-3.c
  1b44db35f8df9b2763028de6125de9e3  gcc/testsuite/gcc.target/i386/pr70738-4.c
*************** b041f793f29c8dbb81f30cc6cff59540  gcc/te
*** 59272,59278 ****
  cdf785a2bc0d7b4e9128691fc978d25e  gcc/testsuite/gcc.target/i386/pr71077.c
  7a68252b43e0d3aaf4a0c5f83c62bca0  gcc/testsuite/gcc.target/i386/pr71245-1.c
  6ede6398cab29de5fda736a8c809afd7  gcc/testsuite/gcc.target/i386/pr71245-2.c
! 2fb9329d1a1eba91cf629cd69a0a2945  gcc/testsuite/gcc.target/i386/pr71321.c
  d0bd03c535d9acf1fa5c53d9fab89cef  gcc/testsuite/gcc.target/i386/pr71346.c
  1c394993c347ba5c842359a75dc15aa5  gcc/testsuite/gcc.target/i386/pr71374.c
  7786a10672726c2ed77f67e580e70a6e  gcc/testsuite/gcc.target/i386/pr71549.c
--- 62817,62823 ----
  cdf785a2bc0d7b4e9128691fc978d25e  gcc/testsuite/gcc.target/i386/pr71077.c
  7a68252b43e0d3aaf4a0c5f83c62bca0  gcc/testsuite/gcc.target/i386/pr71245-1.c
  6ede6398cab29de5fda736a8c809afd7  gcc/testsuite/gcc.target/i386/pr71245-2.c
! 4686813e5aef13aac985ec9ba2058c27  gcc/testsuite/gcc.target/i386/pr71321.c
  d0bd03c535d9acf1fa5c53d9fab89cef  gcc/testsuite/gcc.target/i386/pr71346.c
  1c394993c347ba5c842359a75dc15aa5  gcc/testsuite/gcc.target/i386/pr71374.c
  7786a10672726c2ed77f67e580e70a6e  gcc/testsuite/gcc.target/i386/pr71549.c
*************** ebdf78610e5253029e5305e68875b6c9  gcc/te
*** 59307,59313 ****
  e92468cd3d6db284b41cbd24c3b82524  gcc/testsuite/gcc.target/i386/pr78035.c
  a0f1a716d3aa44f2dbe260d265da5118  gcc/testsuite/gcc.target/i386/pr78037.c
  01e4a31e89c869cea640914ee549516e  gcc/testsuite/gcc.target/i386/pr78057.c
! 34730221d569837c97b9e03d878eb682  gcc/testsuite/gcc.target/i386/pr78102.c
  3414b03e159800ce2cea7361afdc1832  gcc/testsuite/gcc.target/i386/pr78120.c
  57fc37420cc22c6af539706f8bd31ff9  gcc/testsuite/gcc.target/i386/pr78132.c
  49ae150fd045d15f422427bbe3805a0d  gcc/testsuite/gcc.target/i386/pr78227-1.c
--- 62852,62858 ----
  e92468cd3d6db284b41cbd24c3b82524  gcc/testsuite/gcc.target/i386/pr78035.c
  a0f1a716d3aa44f2dbe260d265da5118  gcc/testsuite/gcc.target/i386/pr78037.c
  01e4a31e89c869cea640914ee549516e  gcc/testsuite/gcc.target/i386/pr78057.c
! cb796275f121f6fc5bb34a1f5ecd6404  gcc/testsuite/gcc.target/i386/pr78102.c
  3414b03e159800ce2cea7361afdc1832  gcc/testsuite/gcc.target/i386/pr78120.c
  57fc37420cc22c6af539706f8bd31ff9  gcc/testsuite/gcc.target/i386/pr78132.c
  49ae150fd045d15f422427bbe3805a0d  gcc/testsuite/gcc.target/i386/pr78227-1.c
*************** eeb101032ca1ec313a250b41e73a0923  gcc/te
*** 59329,59345 ****
--- 62874,62906 ----
  179510b05909a0d18190ef1e493d2f7d  gcc/testsuite/gcc.target/i386/pr78794.c
  8bb0a80b75fee7b1b9635d370229df0a  gcc/testsuite/gcc.target/i386/pr78899.c
  34fbf36ae1414b01bc5a9dc0ebb3c8e2  gcc/testsuite/gcc.target/i386/pr78904-1.c
+ 277de54e2a1675b60497b17747bbe2e0  gcc/testsuite/gcc.target/i386/pr78904-1a.c
+ 6266343a3e642ee8ae580b29db7e0498  gcc/testsuite/gcc.target/i386/pr78904-1b.c
  431ee362bd90ea68300d55f026847649  gcc/testsuite/gcc.target/i386/pr78904-2.c
+ 2f562e0d11829cb6a36c493e9facf280  gcc/testsuite/gcc.target/i386/pr78904-2a.c
+ 712871a48a305cee5d01588401905f17  gcc/testsuite/gcc.target/i386/pr78904-2b.c
  1afddfb891bc89f8889bd3969ca52488  gcc/testsuite/gcc.target/i386/pr78904-3.c
+ 1afddfb891bc89f8889bd3969ca52488  gcc/testsuite/gcc.target/i386/pr78904-3a.c
+ 471d1a52fd871f114161d4ed695fa762  gcc/testsuite/gcc.target/i386/pr78904-3b.c
  17fa907e8d3fb69da6e778149d72abea  gcc/testsuite/gcc.target/i386/pr78904-4.c
+ 2cc228dc3eac06a7d3e7f46f435bd4be  gcc/testsuite/gcc.target/i386/pr78904-4a.c
+ 286bc0d5026a5c1658272749c30b6cc8  gcc/testsuite/gcc.target/i386/pr78904-4b.c
  4f1ea6d19aa0f9b222d7bc47584a5a90  gcc/testsuite/gcc.target/i386/pr78904-5.c
+ 9b78c86512d63beb7b9fdbf6b114add2  gcc/testsuite/gcc.target/i386/pr78904-5a.c
+ ae0a051037800db981d2001886a1012d  gcc/testsuite/gcc.target/i386/pr78904-5b.c
  abda6bd7a71392efe02a028d9353051b  gcc/testsuite/gcc.target/i386/pr78904-6.c
+ 036c3a5d203e899a58e78db13ca602b2  gcc/testsuite/gcc.target/i386/pr78904-6a.c
+ 346edf1d01f9cd8440bdd34f2077b782  gcc/testsuite/gcc.target/i386/pr78904-6b.c
  ca042b3c4305f4f55aa06471b59ff5d4  gcc/testsuite/gcc.target/i386/pr78911-1.c
  d65aaa9022ffcb2d0576786f3af860ab  gcc/testsuite/gcc.target/i386/pr78911-2.c
  b738138063f176e961fde8e943e8de61  gcc/testsuite/gcc.target/i386/pr78952-1.c
  7776f23de5d0006aba640cdca032403a  gcc/testsuite/gcc.target/i386/pr78952-2.c
  517093c2b414f120bba32bf8d566196c  gcc/testsuite/gcc.target/i386/pr78967-1.c
+ b5a1195fb0000fa62d98484dc9e5e87b  gcc/testsuite/gcc.target/i386/pr78967-1a.c
+ 3faf4a91ec874eacedf3e8c2d0173971  gcc/testsuite/gcc.target/i386/pr78967-1b.c
  9b6b884f147fcd50820657717ec69694  gcc/testsuite/gcc.target/i386/pr78967-2.c
+ 7f21028fb6a23b07d60def66ad0aa430  gcc/testsuite/gcc.target/i386/pr78967-2a.c
+ 1bc40bd568d118d0618417c29a2b5cf5  gcc/testsuite/gcc.target/i386/pr78967-2b.c
  7a92b022c349ad0fc9deebe2be4405bc  gcc/testsuite/gcc.target/i386/pr78967-3.c
  34f00940b8e59e2ea4e70930a99d085c  gcc/testsuite/gcc.target/i386/pr79390.c
  ca3856428f6efee273c964dd181478b9  gcc/testsuite/gcc.target/i386/pr79495.c
*************** c4cb305cf2f30dad2b94791d7bb26ef4  gcc/te
*** 59360,59366 ****
  b3b6f5c8ba17ba3296bdffadca2efac2  gcc/testsuite/gcc.target/i386/pr79733.c
  8c0bf4e4cdbbf182daf5193ce4e2e52f  gcc/testsuite/gcc.target/i386/pr79793-1.c
  1b3ba63668a454c57cb9841c509f0b88  gcc/testsuite/gcc.target/i386/pr79793-2.c
! 7fb045ea5911bb898fc015d20461c2c4  gcc/testsuite/gcc.target/i386/pr79804.c
  d6a597f0fbd3fbabaff69609d7a1c3b9  gcc/testsuite/gcc.target/i386/pr79807.c
  79f33466eabfc2e257a8fa0ed96c57ab  gcc/testsuite/gcc.target/i386/pr79901.c
  d8519fa7ee590fbd3c0a85e2b8653841  gcc/testsuite/gcc.target/i386/pr79932-1.c
--- 62921,62927 ----
  b3b6f5c8ba17ba3296bdffadca2efac2  gcc/testsuite/gcc.target/i386/pr79733.c
  8c0bf4e4cdbbf182daf5193ce4e2e52f  gcc/testsuite/gcc.target/i386/pr79793-1.c
  1b3ba63668a454c57cb9841c509f0b88  gcc/testsuite/gcc.target/i386/pr79793-2.c
! 49dfbd2a1cbed764e73c7612cb73e841  gcc/testsuite/gcc.target/i386/pr79804.c
  d6a597f0fbd3fbabaff69609d7a1c3b9  gcc/testsuite/gcc.target/i386/pr79807.c
  79f33466eabfc2e257a8fa0ed96c57ab  gcc/testsuite/gcc.target/i386/pr79901.c
  d8519fa7ee590fbd3c0a85e2b8653841  gcc/testsuite/gcc.target/i386/pr79932-1.c
*************** e87a1036e3d593a87a4a827a14cc72fd  gcc/te
*** 59413,59419 ****
  6fffcbc914d39ebf2870c9eea4cf6d11  gcc/testsuite/gcc.target/i386/pr81313-5.c
  affabb2536eb040c140a3110204ca3b0  gcc/testsuite/gcc.target/i386/pr81375.c
  4a3389f7f2146d2198f9c46d5209ba9f  gcc/testsuite/gcc.target/i386/pr81471.c
! b9816b57d822b91888e41f297b660efe  gcc/testsuite/gcc.target/i386/pr81481.c
  98d0e76fde3f746743a32d52d393ac1e  gcc/testsuite/gcc.target/i386/pr81502.c
  e3b82b712ca5673f25540fd5d22fb04c  gcc/testsuite/gcc.target/i386/pr81563.c
  487cad21d9bb2d8bb734efc861a4e1ca  gcc/testsuite/gcc.target/i386/pr81639.c
--- 62974,62980 ----
  6fffcbc914d39ebf2870c9eea4cf6d11  gcc/testsuite/gcc.target/i386/pr81313-5.c
  affabb2536eb040c140a3110204ca3b0  gcc/testsuite/gcc.target/i386/pr81375.c
  4a3389f7f2146d2198f9c46d5209ba9f  gcc/testsuite/gcc.target/i386/pr81471.c
! a85ee44d1991b911c0a14a0e8939bb37  gcc/testsuite/gcc.target/i386/pr81481.c
  98d0e76fde3f746743a32d52d393ac1e  gcc/testsuite/gcc.target/i386/pr81502.c
  e3b82b712ca5673f25540fd5d22fb04c  gcc/testsuite/gcc.target/i386/pr81563.c
  487cad21d9bb2d8bb734efc861a4e1ca  gcc/testsuite/gcc.target/i386/pr81639.c
*************** be4886fc2cd0dbd18a9cbd38f8d6690d  gcc/te
*** 59509,59517 ****
  3592e3b6e0dee866a764af464d0ee7af  gcc/testsuite/gcc.target/i386/pr83620.c
  1cbb11f638276c7d3789f6d1a6aee18f  gcc/testsuite/gcc.target/i386/pr83682.c
  038b9c92a928a2196a93e23a317b09ba  gcc/testsuite/gcc.target/i386/pr83735.c
! aa9de40f87e1067b65e91f1ff3060c0c  gcc/testsuite/gcc.target/i386/pr83994.c
  898a487bfe8ece1ba9283d78e23c3064  gcc/testsuite/gcc.target/i386/pr84064.c
! 0364922098b927f9cd8dab00c241baf9  gcc/testsuite/gcc.target/i386/pr84101.c
  3fdc33c4435f1417dc7afcbcb3181466  gcc/testsuite/gcc.target/i386/pr84128.c
  87f029e1cd2ac55ab752af611c64ccda  gcc/testsuite/gcc.target/i386/pr84146.c
  58f60dba0169ddbf0a54b9452ef3fd1f  gcc/testsuite/gcc.target/i386/pr84278.c
--- 63070,63078 ----
  3592e3b6e0dee866a764af464d0ee7af  gcc/testsuite/gcc.target/i386/pr83620.c
  1cbb11f638276c7d3789f6d1a6aee18f  gcc/testsuite/gcc.target/i386/pr83682.c
  038b9c92a928a2196a93e23a317b09ba  gcc/testsuite/gcc.target/i386/pr83735.c
! c78c9ff18e67e4fc991f85ce7a1d2f1a  gcc/testsuite/gcc.target/i386/pr83994.c
  898a487bfe8ece1ba9283d78e23c3064  gcc/testsuite/gcc.target/i386/pr84064.c
! f4ffa2661226f5140dfbcd2df15ef606  gcc/testsuite/gcc.target/i386/pr84101.c
  3fdc33c4435f1417dc7afcbcb3181466  gcc/testsuite/gcc.target/i386/pr84128.c
  87f029e1cd2ac55ab752af611c64ccda  gcc/testsuite/gcc.target/i386/pr84146.c
  58f60dba0169ddbf0a54b9452ef3fd1f  gcc/testsuite/gcc.target/i386/pr84278.c
*************** cd325df07a34c25d7fa808319419b8c1  gcc/te
*** 59610,59617 ****
  713c32cd165cd428c96f881442855928  gcc/testsuite/gcc.target/i386/pr87007-1.c
  e500c9305de0564e4618ad5878201a8c  gcc/testsuite/gcc.target/i386/pr87007-2.c
  b29279fea41f09c3d829643c01710547  gcc/testsuite/gcc.target/i386/pr87007-3.c
! 3c51a92f86d87e64167d756b38777f31  gcc/testsuite/gcc.target/i386/pr87007-4.c
! 705853765437dc1ce73b961aeed8fb39  gcc/testsuite/gcc.target/i386/pr87007-5.c
  646c4c149f87e924fd338e46a8d900f1  gcc/testsuite/gcc.target/i386/pr87065.c
  c2ca631fa7bb41bff427b4c2a6a6aaa1  gcc/testsuite/gcc.target/i386/pr87198.c
  2dc347f1c11144765ea46729857f25f9  gcc/testsuite/gcc.target/i386/pr87246.c
--- 63171,63178 ----
  713c32cd165cd428c96f881442855928  gcc/testsuite/gcc.target/i386/pr87007-1.c
  e500c9305de0564e4618ad5878201a8c  gcc/testsuite/gcc.target/i386/pr87007-2.c
  b29279fea41f09c3d829643c01710547  gcc/testsuite/gcc.target/i386/pr87007-3.c
! d5d0aeca0a6ee6cc0281e006cec2ec38  gcc/testsuite/gcc.target/i386/pr87007-4.c
! c2f36621a048ba4abdb10fa5c8b284c9  gcc/testsuite/gcc.target/i386/pr87007-5.c
  646c4c149f87e924fd338e46a8d900f1  gcc/testsuite/gcc.target/i386/pr87065.c
  c2ca631fa7bb41bff427b4c2a6a6aaa1  gcc/testsuite/gcc.target/i386/pr87198.c
  2dc347f1c11144765ea46729857f25f9  gcc/testsuite/gcc.target/i386/pr87246.c
*************** c7fbb8c42391916088505cea2847ff00  gcc/te
*** 59650,59656 ****
  4fc2942c48d13b19282e746bb6deb0f5  gcc/testsuite/gcc.target/i386/pr87955.c
  ec61cb2764cd0d05b8fd416bac2b290b  gcc/testsuite/gcc.target/i386/pr88033.c
  a720bfe0104feb1cfa40b8ab91dc5f05  gcc/testsuite/gcc.target/i386/pr88070.c
! ff308205b0eaf987308c28fb936dbb1f  gcc/testsuite/gcc.target/i386/pr88178.c
  014704589a34c96de8b39971853cff79  gcc/testsuite/gcc.target/i386/pr88195.c
  f25bcc4bed5d0d95251b485d5a39506b  gcc/testsuite/gcc.target/i386/pr88240.c
  9a7163535cd9dd187c7dfeb7fc7ce059  gcc/testsuite/gcc.target/i386/pr88278.c
--- 63211,63217 ----
  4fc2942c48d13b19282e746bb6deb0f5  gcc/testsuite/gcc.target/i386/pr87955.c
  ec61cb2764cd0d05b8fd416bac2b290b  gcc/testsuite/gcc.target/i386/pr88033.c
  a720bfe0104feb1cfa40b8ab91dc5f05  gcc/testsuite/gcc.target/i386/pr88070.c
! b14b816d91744aa96c9da5bad9de427b  gcc/testsuite/gcc.target/i386/pr88178.c
  014704589a34c96de8b39971853cff79  gcc/testsuite/gcc.target/i386/pr88195.c
  f25bcc4bed5d0d95251b485d5a39506b  gcc/testsuite/gcc.target/i386/pr88240.c
  9a7163535cd9dd187c7dfeb7fc7ce059  gcc/testsuite/gcc.target/i386/pr88278.c
*************** e3721c52844753536ca549f71e61f954  gcc/te
*** 59664,59669 ****
--- 63225,63233 ----
  40a7ef6fb3bcabb2e6a14793769e9983  gcc/testsuite/gcc.target/i386/pr88470.c
  d09b03236b7aad3cf25c32ccea767d74  gcc/testsuite/gcc.target/i386/pr88521.c
  d759143ff7be3c83a7d63b6b1da335f4  gcc/testsuite/gcc.target/i386/pr88547-1.c
+ bce12f30738edf2774ad07623978e78c  gcc/testsuite/gcc.target/i386/pr88713-1.c
+ 11cd1934753fe7004db294de3fb77a13  gcc/testsuite/gcc.target/i386/pr88713-2.c
+ 84b781bd0c4761d869c164e750d66c8f  gcc/testsuite/gcc.target/i386/pr88713-3.c
  5f3212c6668588f297c52b9a790ce2d5  gcc/testsuite/gcc.target/i386/pr88717.c
  96469657c46a5db9e093206d585159bb  gcc/testsuite/gcc.target/i386/pr88796.c
  7af4459509529efc78f8cbe44f73cabd  gcc/testsuite/gcc.target/i386/pr88809-2.c
*************** acc82a5b459bf1433e5f0d6d4849c00a  gcc/te
*** 59791,59811 ****
  687f863eea94486d55855598514b0fe5  gcc/testsuite/gcc.target/i386/pr91931.c
  6215e5c1c60551469fcc11ffa5c90472  gcc/testsuite/gcc.target/i386/pr91994.c
  d5de5038fabac265e5095e101b5eaba4  gcc/testsuite/gcc.target/i386/pr92140.c
  cb7d2b73c1aa814d4874833bf6d514f4  gcc/testsuite/gcc.target/i386/pr92190.c
  0ff9c02d0f94bbfa2f618e6f4c81567e  gcc/testsuite/gcc.target/i386/pr92225.c
  159856ecb266a4ca3c86858ee4a55628  gcc/testsuite/gcc.target/i386/pr92258.c
  99d08a33800b6009815cebe2a99f1fc4  gcc/testsuite/gcc.target/i386/pr92295.c
  81e392b4a25b32acb751ef18742582be  gcc/testsuite/gcc.target/i386/pr92549.c
  b7cac4959f15ba45f067fec51fddab75  gcc/testsuite/gcc.target/i386/pr92615.c
  b897f2cc3ef2de83f71baf076fcd704a  gcc/testsuite/gcc.target/i386/pr92645-2.c
  025eb8c4e8756613532224704ea780d4  gcc/testsuite/gcc.target/i386/pr92645-3.c
! 1575a144e53960aec03d8222a601013a  gcc/testsuite/gcc.target/i386/pr92645-4.c
  fd5403ac26bbe83c4c9a50fff34fd61f  gcc/testsuite/gcc.target/i386/pr92645-5.c
  3982c7bc8cfe7849b34d333c7e3b2b20  gcc/testsuite/gcc.target/i386/pr92645.c
  6c6abd7fc9af36fe781df4cf2ef54a16  gcc/testsuite/gcc.target/i386/pr92651.c
  3f30af17306d3c4ccb2eda2412f652a6  gcc/testsuite/gcc.target/i386/pr92686.inc
  925625e5b22e0fe4e1688a9751714623  gcc/testsuite/gcc.target/i386/pr92803.c
! 64e0aa1eab8546086a7cf564e4cfc408  gcc/testsuite/gcc.target/i386/pr92807-1.c
  2de3cfd8b2cdc59bc90e48c0345c3dc4  gcc/testsuite/gcc.target/i386/pr92818.c
  f452eb29da541a59bfaaaac52be5e4ce  gcc/testsuite/gcc.target/i386/pr92819-1.c
  e66a8b09a8c5e18ceafa4d48c0b02d38  gcc/testsuite/gcc.target/i386/pr92819.c
--- 63355,63388 ----
  687f863eea94486d55855598514b0fe5  gcc/testsuite/gcc.target/i386/pr91931.c
  6215e5c1c60551469fcc11ffa5c90472  gcc/testsuite/gcc.target/i386/pr91994.c
  d5de5038fabac265e5095e101b5eaba4  gcc/testsuite/gcc.target/i386/pr92140.c
+ 65ef4f6834292cf57241c2aac98ba28b  gcc/testsuite/gcc.target/i386/pr92180.c
  cb7d2b73c1aa814d4874833bf6d514f4  gcc/testsuite/gcc.target/i386/pr92190.c
  0ff9c02d0f94bbfa2f618e6f4c81567e  gcc/testsuite/gcc.target/i386/pr92225.c
  159856ecb266a4ca3c86858ee4a55628  gcc/testsuite/gcc.target/i386/pr92258.c
  99d08a33800b6009815cebe2a99f1fc4  gcc/testsuite/gcc.target/i386/pr92295.c
+ 30405eb53e18194ed85aeeff6c440038  gcc/testsuite/gcc.target/i386/pr92469.c
  81e392b4a25b32acb751ef18742582be  gcc/testsuite/gcc.target/i386/pr92549.c
  b7cac4959f15ba45f067fec51fddab75  gcc/testsuite/gcc.target/i386/pr92615.c
  b897f2cc3ef2de83f71baf076fcd704a  gcc/testsuite/gcc.target/i386/pr92645-2.c
  025eb8c4e8756613532224704ea780d4  gcc/testsuite/gcc.target/i386/pr92645-3.c
! 4ea16423fe41fd23fc418cad85272177  gcc/testsuite/gcc.target/i386/pr92645-4.c
  fd5403ac26bbe83c4c9a50fff34fd61f  gcc/testsuite/gcc.target/i386/pr92645-5.c
+ 5f53809106eb4f515eef2f02170d4add  gcc/testsuite/gcc.target/i386/pr92645-6.c
+ c689d7bd208a6bbb908ec089abdd00ef  gcc/testsuite/gcc.target/i386/pr92645-7.c
  3982c7bc8cfe7849b34d333c7e3b2b20  gcc/testsuite/gcc.target/i386/pr92645.c
  6c6abd7fc9af36fe781df4cf2ef54a16  gcc/testsuite/gcc.target/i386/pr92651.c
+ 2f5e3b259859baf81b976e49856244f7  gcc/testsuite/gcc.target/i386/pr92658-avx2-2.c
+ 4856eea9785553729327cf18e683e5f8  gcc/testsuite/gcc.target/i386/pr92658-avx2.c
+ 180c3a69a2562ff8bf0fe46cc6da2fde  gcc/testsuite/gcc.target/i386/pr92658-avx512bw-2.c
+ 94113005ca6b84a1864ea7b57deb4609  gcc/testsuite/gcc.target/i386/pr92658-avx512bw-trunc.c
+ 51599d0f567f1121d4f98c5828e35d5d  gcc/testsuite/gcc.target/i386/pr92658-avx512bw.c
+ ace1d0be4f0264e55b3e5b9eba7f22af  gcc/testsuite/gcc.target/i386/pr92658-avx512f.c
+ a888b133b231d423e952de240af952d9  gcc/testsuite/gcc.target/i386/pr92658-avx512vl.c
+ 0f1eb877f971e245dd0012fa9ccef4b4  gcc/testsuite/gcc.target/i386/pr92658-sse4-2.c
+ 1dea179b82db3ab7a4eb640a688316f2  gcc/testsuite/gcc.target/i386/pr92658-sse4.c
  3f30af17306d3c4ccb2eda2412f652a6  gcc/testsuite/gcc.target/i386/pr92686.inc
  925625e5b22e0fe4e1688a9751714623  gcc/testsuite/gcc.target/i386/pr92803.c
! 0025ad5a1bc08d8189cedc91bd2d9b19  gcc/testsuite/gcc.target/i386/pr92807-1.c
  2de3cfd8b2cdc59bc90e48c0345c3dc4  gcc/testsuite/gcc.target/i386/pr92818.c
  f452eb29da541a59bfaaaac52be5e4ce  gcc/testsuite/gcc.target/i386/pr92819-1.c
  e66a8b09a8c5e18ceafa4d48c0b02d38  gcc/testsuite/gcc.target/i386/pr92819.c
*************** a66e070d185cf46ff3cee5cc2a247e9c  gcc/te
*** 59828,59833 ****
--- 63405,63415 ----
  1c68cd9b2184590b1e4af692d597adea  gcc/testsuite/gcc.target/i386/pr93319-1d.c
  ed9ca6b6e7a5f74d080f80bb7fb9c2e9  gcc/testsuite/gcc.target/i386/pr93346.c
  00cf6279198438d4bb24c7415d6332cd  gcc/testsuite/gcc.target/i386/pr93395.c
+ 8afa6fc9b9a61e004c0c1d39a49db1b1  gcc/testsuite/gcc.target/i386/pr93492-1.c
+ 8319a563b8ef39a86dd4fd99721436a5  gcc/testsuite/gcc.target/i386/pr93492-2.c
+ 57aeeee30b09d9d30932eb126155dc34  gcc/testsuite/gcc.target/i386/pr93492-3.c
+ a8de425afd94edfbb817e5d56cabad40  gcc/testsuite/gcc.target/i386/pr93492-4.c
+ 155b269ca172eee4be557d6df3f11605  gcc/testsuite/gcc.target/i386/pr93492-5.c
  16c32cf33e45444168010f2d660b185b  gcc/testsuite/gcc.target/i386/pr93611.c
  9387bfde104289ddf53adc9ae95c43ef  gcc/testsuite/gcc.target/i386/pr93654.c
  0cbbfb6a80b114bf60fcfd0fce913fdb  gcc/testsuite/gcc.target/i386/pr93656.c
*************** b2cbf35d26b6c14bf91ddc351c1728b9  gcc/te
*** 59847,59878 ****
  074c5f0cf39b4cef7af07d0401b45e6b  gcc/testsuite/gcc.target/i386/pr94461.c
  5b93e43cf898e2a0946029eec889d14b  gcc/testsuite/gcc.target/i386/pr94467-1.c
  0c008328566429591af81428a5eda8b1  gcc/testsuite/gcc.target/i386/pr94467-2.c
  2c68755a191496cfb5c6b92316444329  gcc/testsuite/gcc.target/i386/pr94494.c
  975929fc9881516edb25370a2a0a5a8c  gcc/testsuite/gcc.target/i386/pr94561.c
  c93af1b8273ac94a94f8677f1b5cd79e  gcc/testsuite/gcc.target/i386/pr94603.c
  cf63209a9dbfa282faf0cb366089599d  gcc/testsuite/gcc.target/i386/pr94942.c
  4e8c40af3d22047b7829ab8236d292f8  gcc/testsuite/gcc.target/i386/pr95169.c
  f6d659102349b35ce8612a7d4c1e273e  gcc/testsuite/gcc.target/i386/pr95255.c
  e269bc4546a8f7005a446e4f30a8786d  gcc/testsuite/gcc.target/i386/pr95355.c
  0748a249e20b96f9e7a21d325a0a8a7d  gcc/testsuite/gcc.target/i386/pr95464.c
  0f08f4158f0fe83adf032f6d1757bc57  gcc/testsuite/gcc.target/i386/pr96203-1.c
  fd3ae4c11b9e966cb3569321e98abb26  gcc/testsuite/gcc.target/i386/pr96203-2.c
  7452cc0f5db1672bf14a67b2874c0d0e  gcc/testsuite/gcc.target/i386/pr96562-1.c
  fcabbe293e9b3b53378adda17de53829  gcc/testsuite/gcc.target/i386/pr96793-1.c
  67cd319d1033c63c6acabca474abb52d  gcc/testsuite/gcc.target/i386/pr96793-2.c
  b012c5e40f464aedc769992b40121c05  gcc/testsuite/gcc.target/i386/pr96793.c
  bf3566c70c070effe60ebd9a2013f019  gcc/testsuite/gcc.target/i386/pr96827.c
  e860da5c4163b56a77c4cb6a6238f5ea  gcc/testsuite/gcc.target/i386/pr97032.c
! 9ecc5c18e8ce140186a3af4cf2f2f23b  gcc/testsuite/gcc.target/i386/pr97313.c
  d1bbffbd6f7347b6b51d890b46131e04  gcc/testsuite/gcc.target/i386/pr97506.c
  849234c7a569c1e86023244bc5561263  gcc/testsuite/gcc.target/i386/pr9771-1.c
  d50d43b015ccca4bdcef40a3a09478ce  gcc/testsuite/gcc.target/i386/pr97887.c
  f8ecf4adafb31200f6cb5f02f878203e  gcc/testsuite/gcc.target/i386/pr97971.c
  6afe67531438d8115c46cbbd340d8f73  gcc/testsuite/gcc.target/i386/pr98063.c
  3e550210eceaa9555180fcdc5434cf50  gcc/testsuite/gcc.target/i386/pr98086.c
  f05a11a90b720489273566f54bf45421  gcc/testsuite/gcc.target/i386/pr98100.c
  598c4bf58ece3ffbf0f20347f12676e0  gcc/testsuite/gcc.target/i386/pr98522.c
  006bf45011c8adaaea151e1e9bd71662  gcc/testsuite/gcc.target/i386/pr99753.c
  24ceb6d5f3f5cde4b9d852839bdb98ae  gcc/testsuite/gcc.target/i386/prefetchw-1.c
  f11f4731c396f099373c033ab016a64f  gcc/testsuite/gcc.target/i386/prefetchwt1-1.c
  4561455bd0f6ca8ce0b0f477f2897ee2  gcc/testsuite/gcc.target/i386/ptwrite1.c
--- 63429,63619 ----
  074c5f0cf39b4cef7af07d0401b45e6b  gcc/testsuite/gcc.target/i386/pr94461.c
  5b93e43cf898e2a0946029eec889d14b  gcc/testsuite/gcc.target/i386/pr94467-1.c
  0c008328566429591af81428a5eda8b1  gcc/testsuite/gcc.target/i386/pr94467-2.c
+ 1824d4880bae6569c17f23ff1765d6e5  gcc/testsuite/gcc.target/i386/pr94467-3.c
  2c68755a191496cfb5c6b92316444329  gcc/testsuite/gcc.target/i386/pr94494.c
  975929fc9881516edb25370a2a0a5a8c  gcc/testsuite/gcc.target/i386/pr94561.c
  c93af1b8273ac94a94f8677f1b5cd79e  gcc/testsuite/gcc.target/i386/pr94603.c
+ 2a4ee61ffc4ff89b03d5b4db97003ff9  gcc/testsuite/gcc.target/i386/pr94650.c
+ 0659b57eaeed9babf597320b99d31792  gcc/testsuite/gcc.target/i386/pr94795-1.c
+ 50f032a8bd40c7787a10cb203b657362  gcc/testsuite/gcc.target/i386/pr94795-2.c
+ 74bc9b105e1d3b09ffb1089b0029ed6c  gcc/testsuite/gcc.target/i386/pr94802.c
+ 6066623ac8fb7000178efdaffd58159d  gcc/testsuite/gcc.target/i386/pr94857.c
+ 86bbb5b72491974076a858614f1c432f  gcc/testsuite/gcc.target/i386/pr94913-1.c
+ 68a7ea4848e4a26b10e3364cd50c526b  gcc/testsuite/gcc.target/i386/pr94913-2.c
+ 4e4197632993a51b7c388446fa78e6ba  gcc/testsuite/gcc.target/i386/pr94914.c
  cf63209a9dbfa282faf0cb366089599d  gcc/testsuite/gcc.target/i386/pr94942.c
+ 506ce2484df66cf92c6784e4877b16ea  gcc/testsuite/gcc.target/i386/pr94956.c
+ 6c4fd12d85fb7d8355eb81c928b5e567  gcc/testsuite/gcc.target/i386/pr94980.c
+ a102f5a44fa2640b68a658aa74c6a704  gcc/testsuite/gcc.target/i386/pr95021-1.c
+ d4ef4f6b47a4fdedb7ba07f47e0eb158  gcc/testsuite/gcc.target/i386/pr95021-2.c
+ 6707378f8e71d1047cbc2cd8253f6994  gcc/testsuite/gcc.target/i386/pr95021-3.c
+ ce30a5c6fd58a883a91e9aa716541205  gcc/testsuite/gcc.target/i386/pr95021-4.c
+ c581a2fc7d7556f11fa93c550095796b  gcc/testsuite/gcc.target/i386/pr95021-5.c
+ e34960fb1a973a8c00d27fe9fec3dbdc  gcc/testsuite/gcc.target/i386/pr95046-1.c
+ 599b2f9bb05c4a6eb6702ee079047ceb  gcc/testsuite/gcc.target/i386/pr95046-2.c
+ 44e6fd66f57ba38d015c6227fb682018  gcc/testsuite/gcc.target/i386/pr95046-3.c
+ fca88bfebb6c3b1722edbd60d86f5102  gcc/testsuite/gcc.target/i386/pr95046-4.c
+ 4d62f81e351d1c8494aef16609bd5145  gcc/testsuite/gcc.target/i386/pr95046-5.c
+ f99565eff4cffffe4c1e7040edfe3baa  gcc/testsuite/gcc.target/i386/pr95046-6.c
+ 3bf56966fbf957c62ab3f04fcea6feb9  gcc/testsuite/gcc.target/i386/pr95046-7.c
+ e3c8ba81048775e01a220f4434f6f73b  gcc/testsuite/gcc.target/i386/pr95046-8.c
+ 775e022412b9eb8788a2f89e73af6377  gcc/testsuite/gcc.target/i386/pr95052.c
+ 119d16d55811f9aa62a3d51063b0d9a7  gcc/testsuite/gcc.target/i386/pr95125-avx.c
+ dee92b3246f112fd920d87f83464ad78  gcc/testsuite/gcc.target/i386/pr95125-avx512f.c
+ 98ae5caacce28eb9e052121818b4c3c8  gcc/testsuite/gcc.target/i386/pr95151-1.c
+ 14c560f6a0e6f54bf0f908098fc7bb00  gcc/testsuite/gcc.target/i386/pr95151-2.c
+ d65fda9cac3aa8e3b3d5a10ecba348b2  gcc/testsuite/gcc.target/i386/pr95151-3.c
+ caf1c36bde2f9fa90b5245f0c608798e  gcc/testsuite/gcc.target/i386/pr95151-4.c
  4e8c40af3d22047b7829ab8236d292f8  gcc/testsuite/gcc.target/i386/pr95169.c
+ 4932a29dcd9a91b7b695fab5b2cfe90f  gcc/testsuite/gcc.target/i386/pr95211.c
  f6d659102349b35ce8612a7d4c1e273e  gcc/testsuite/gcc.target/i386/pr95255.c
  e269bc4546a8f7005a446e4f30a8786d  gcc/testsuite/gcc.target/i386/pr95355.c
+ 07a9c71886cea8406cc6e1e20b3dda3f  gcc/testsuite/gcc.target/i386/pr95356.c
+ ca4627a395e3df1e7e554ee5bb6aa898  gcc/testsuite/gcc.target/i386/pr95443-1.c
+ d9aae8289f586cb0642d8c4a75e854bb  gcc/testsuite/gcc.target/i386/pr95443-2.c
+ a0a717bd3162b524beb938288c0edac9  gcc/testsuite/gcc.target/i386/pr95458-1.c
+ feab5f45e1e18afc892095125a4b26a2  gcc/testsuite/gcc.target/i386/pr95458-2.c
  0748a249e20b96f9e7a21d325a0a8a7d  gcc/testsuite/gcc.target/i386/pr95464.c
+ a6e1252ba4cc495075736af5f2eefc5f  gcc/testsuite/gcc.target/i386/pr95483-1.c
+ 0f2eaf1c814cc6f796229e239db8cf94  gcc/testsuite/gcc.target/i386/pr95483-2.c
+ 732ce5897b50a7bdc89573fcd64bfaf7  gcc/testsuite/gcc.target/i386/pr95483-3.c
+ 2ae2f5ad6b7aab32a5b5c61ea3ba9083  gcc/testsuite/gcc.target/i386/pr95483-4.c
+ d2ae5fbb5b95a1788b56e6179a62c6bd  gcc/testsuite/gcc.target/i386/pr95483-5.c
+ ba3da982ef27c8bafb0f0fcdf517161f  gcc/testsuite/gcc.target/i386/pr95483-6.c
+ f072219a90178a8fc4afbacca65f147c  gcc/testsuite/gcc.target/i386/pr95483-7.c
+ 932a73ed81bfc47dbffb9c18480f2f1e  gcc/testsuite/gcc.target/i386/pr95535-1.c
+ 72c79186961f94732883bd658e38ad62  gcc/testsuite/gcc.target/i386/pr95535-2.c
+ 20068d0d93e713ef0051850c981b52e7  gcc/testsuite/gcc.target/i386/pr95750.c
+ 25fe85ddb7ee9cab612ea5eda9d44dbe  gcc/testsuite/gcc.target/i386/pr95771.c
+ 13443f75df7d8401a4fd2112e7864e2e  gcc/testsuite/gcc.target/i386/pr95778-1.c
+ 2e6e4fd245045c839161184b36fa037d  gcc/testsuite/gcc.target/i386/pr95778-2.c
+ e8bf37fd9069fb47dd6ee3999065d19f  gcc/testsuite/gcc.target/i386/pr95791.c
+ 4c1603ed1fb70b2991fadfc20dcb8b93  gcc/testsuite/gcc.target/i386/pr95798-1.c
+ e835a3c0a53acb50000505332389571a  gcc/testsuite/gcc.target/i386/pr95798-2.c
+ 79acb80e6322af9fc4ebc6e7e63ab3e8  gcc/testsuite/gcc.target/i386/pr95852-1.c
+ ae270707b27ab3cfb4847c3ff6fcd7b5  gcc/testsuite/gcc.target/i386/pr95852-2.c
+ cb144ecc27b4a46d3bb712e33de3bfc3  gcc/testsuite/gcc.target/i386/pr95852-3.c
+ 80825b8a7e1f2c87cca515a336b68340  gcc/testsuite/gcc.target/i386/pr95852-4.c
+ e42f9251f6e18226c383e50c9cc1bab5  gcc/testsuite/gcc.target/i386/pr95863-1.c
+ ff2df4dd7233fd6900291363010f96de  gcc/testsuite/gcc.target/i386/pr95863-2.c
+ 4c4483f507ec52bffb257bc82dc47328  gcc/testsuite/gcc.target/i386/pr95866-1.c
+ bc6e07d857997a244fb5666a34ad24e7  gcc/testsuite/gcc.target/i386/pr95905-1.c
+ d0caa8d94ab3782c87d6be4389d4abd9  gcc/testsuite/gcc.target/i386/pr95905-2.c
+ 2a6fd68e7278c9a912d7796bac3e1b90  gcc/testsuite/gcc.target/i386/pr95905-3.c
+ 3f6c4caba10736545bc4af8266a112ad  gcc/testsuite/gcc.target/i386/pr95905-4.c
+ 42b02ad9a9821be3969b7eba2e68095a  gcc/testsuite/gcc.target/i386/pr95973.c
+ 329e80f8fb6c3a9bea9c9dd725460d70  gcc/testsuite/gcc.target/i386/pr96166.c
+ 2fb111b565e032bf3ce7d075df2e2b1e  gcc/testsuite/gcc.target/i386/pr96176.c
+ c0a319047fe7f5fd3475614607f69c7b  gcc/testsuite/gcc.target/i386/pr96189-1.c
+ 67fa8b79e10a6e6505269d62ec74ca58  gcc/testsuite/gcc.target/i386/pr96189.c
  0f08f4158f0fe83adf032f6d1757bc57  gcc/testsuite/gcc.target/i386/pr96203-1.c
  fd3ae4c11b9e966cb3569321e98abb26  gcc/testsuite/gcc.target/i386/pr96203-2.c
+ 6b56bed12406ac5b9603034dd169b160  gcc/testsuite/gcc.target/i386/pr96226.c
+ d1a0d25008e21716be4b9e1ce0338b49  gcc/testsuite/gcc.target/i386/pr96262-1.c
+ a58801ab95d6c36f56d320212bc09df3  gcc/testsuite/gcc.target/i386/pr96271.c
+ 45643988cf15c9ae848c59ace0b86744  gcc/testsuite/gcc.target/i386/pr96298.c
+ 307deb6b4038e80b218bab133b0e0e60  gcc/testsuite/gcc.target/i386/pr96539.c
  7452cc0f5db1672bf14a67b2874c0d0e  gcc/testsuite/gcc.target/i386/pr96562-1.c
+ f48be0c67737fdfd86cf3b33ed03b238  gcc/testsuite/gcc.target/i386/pr96744-1.c
+ dd7f4a2c5c803e97fee5047ba7436ad6  gcc/testsuite/gcc.target/i386/pr96744-2.c
+ bc419f44c00e9b54d4549483dce53d7a  gcc/testsuite/gcc.target/i386/pr96744-3a.c
+ 2c4daa5c463dabd8a840916b1364fc18  gcc/testsuite/gcc.target/i386/pr96744-3b.c
+ 4588f8d30c49b09c58855eed159ff718  gcc/testsuite/gcc.target/i386/pr96744-4.c
+ 8b9fbadde0be883e593eeae3ad67fa49  gcc/testsuite/gcc.target/i386/pr96744-5.c
+ 9217af4062e9e6d7f275b7c64ed45dd7  gcc/testsuite/gcc.target/i386/pr96744-6.c
+ 531680f31a9647777e8b9d3833cd43e4  gcc/testsuite/gcc.target/i386/pr96744-7.c
+ a9ddba8cd662830d5d02c99bd6a2eeb3  gcc/testsuite/gcc.target/i386/pr96744-8a.c
+ 9935ef63b33165d89cc8e49851ce67bc  gcc/testsuite/gcc.target/i386/pr96744-8b.c
+ b3cf4225b8eccdcff946770b18d4cac7  gcc/testsuite/gcc.target/i386/pr96744-9.c
+ cc1605bc96c64421b4394da0cbe73b7a  gcc/testsuite/gcc.target/i386/pr96755.c
  fcabbe293e9b3b53378adda17de53829  gcc/testsuite/gcc.target/i386/pr96793-1.c
  67cd319d1033c63c6acabca474abb52d  gcc/testsuite/gcc.target/i386/pr96793-2.c
  b012c5e40f464aedc769992b40121c05  gcc/testsuite/gcc.target/i386/pr96793.c
+ 9df91ce584757dbb49dcffbb7014cd94  gcc/testsuite/gcc.target/i386/pr96802-1.c
+ 0c66a33d38dacb9d457af4c9c7e29cb4  gcc/testsuite/gcc.target/i386/pr96802-2.c
+ 76ab2545b77829e7bccf0555ac99de6d  gcc/testsuite/gcc.target/i386/pr96814.c
  bf3566c70c070effe60ebd9a2013f019  gcc/testsuite/gcc.target/i386/pr96827.c
+ 72c5cd860946ac4993bf4fbd1de0b1ca  gcc/testsuite/gcc.target/i386/pr96861.c
+ f302932ae1e573ae584a1035ec149c69  gcc/testsuite/gcc.target/i386/pr96906-1.c
+ ec709b6f5fc1a240f7309e7b5ccf2af2  gcc/testsuite/gcc.target/i386/pr96938.c
  e860da5c4163b56a77c4cb6a6238f5ea  gcc/testsuite/gcc.target/i386/pr97032.c
! 54796d80a148a93895941284c072af19  gcc/testsuite/gcc.target/i386/pr97140.c
! 0e11331ddd16f80766688a4e8388652e  gcc/testsuite/gcc.target/i386/pr97249-1.c
! 74aff39747c5e4248dbc36eceea5ace6  gcc/testsuite/gcc.target/i386/pr97282.c
! 5e1f5e8518b908dda4d66e083ec90ed3  gcc/testsuite/gcc.target/i386/pr97313.c
! 14c9de1158d2b6c5aa725f4ce14715d6  gcc/testsuite/gcc.target/i386/pr97387-1.c
! d8be69267a82470717a5b153648b522f  gcc/testsuite/gcc.target/i386/pr97387-2.c
  d1bbffbd6f7347b6b51d890b46131e04  gcc/testsuite/gcc.target/i386/pr97506.c
+ a6f6652b9018de3bb9e4cc843f0166a1  gcc/testsuite/gcc.target/i386/pr97510.c
+ 1cf9dffceeb14c05341053b6fc14bb7a  gcc/testsuite/gcc.target/i386/pr97521.c
+ 852e9c3686a4f639e7a7b478e70760ee  gcc/testsuite/gcc.target/i386/pr97540.c
+ c0a367db40ed035125a08383892eefc3  gcc/testsuite/gcc.target/i386/pr97642-1.c
+ 7a57c062ea1e3fbcc3c093fcf6e4b984  gcc/testsuite/gcc.target/i386/pr97642-2.c
+ 747671bc745c332aae6c57d3a1dd2be1  gcc/testsuite/gcc.target/i386/pr97684.c
  849234c7a569c1e86023244bc5561263  gcc/testsuite/gcc.target/i386/pr9771-1.c
+ 0deb591e5aaf51462b55cef4c4723543  gcc/testsuite/gcc.target/i386/pr97777.c
+ a7db8c9822999d692f23c795d06aa6b5  gcc/testsuite/gcc.target/i386/pr97873-1.c
+ a78551d1c651f72de249ac89d40a6bb4  gcc/testsuite/gcc.target/i386/pr97873-2.c
+ c3a73fa75e58f547374ee4cb24ac482d  gcc/testsuite/gcc.target/i386/pr97873-3.c
+ 40bb69c69b8b4e18f072695ea5cee94b  gcc/testsuite/gcc.target/i386/pr97873.c
  d50d43b015ccca4bdcef40a3a09478ce  gcc/testsuite/gcc.target/i386/pr97887.c
+ 62c847e07f5efdfb652b5e431cca508e  gcc/testsuite/gcc.target/i386/pr97950.c
  f8ecf4adafb31200f6cb5f02f878203e  gcc/testsuite/gcc.target/i386/pr97971.c
+ e3d35c4b9c35829e096fbb3d11b860df  gcc/testsuite/gcc.target/i386/pr97978.c
  6afe67531438d8115c46cbbd340d8f73  gcc/testsuite/gcc.target/i386/pr98063.c
+ b7ddfcf2edaca40780663862d490b44f  gcc/testsuite/gcc.target/i386/pr98079.c
  3e550210eceaa9555180fcdc5434cf50  gcc/testsuite/gcc.target/i386/pr98086.c
  f05a11a90b720489273566f54bf45421  gcc/testsuite/gcc.target/i386/pr98100.c
+ 70971c1416774bc2945ea932f03a5c73  gcc/testsuite/gcc.target/i386/pr98161.c
+ 91547df733560031fecb190e05b697bb  gcc/testsuite/gcc.target/i386/pr98169.c
+ 489d73ba45e60b5e7c2ae506c5f44042  gcc/testsuite/gcc.target/i386/pr98212.c
+ af4ae6a242ab3c94b8f1dda3b1653748  gcc/testsuite/gcc.target/i386/pr98264.c
+ 87d9893bdab3e25d3f7a51079c532904  gcc/testsuite/gcc.target/i386/pr98274.c
+ e8e9a07a00044157056897157e421357  gcc/testsuite/gcc.target/i386/pr98289.c
+ 33aa45999f74141793d01c1f82a7613a  gcc/testsuite/gcc.target/i386/pr98334.c
+ 88f43a2d69db7f2777c6c19a5b6f2594  gcc/testsuite/gcc.target/i386/pr98439.c
+ 9b88de17937851cbfbce595d92cc2020  gcc/testsuite/gcc.target/i386/pr98482-1.c
+ 2430d914288f17ecc7fd2bc12b5de212  gcc/testsuite/gcc.target/i386/pr98482-2.c
+ 5b69e4f37f3a4dc1c806fab46f753f91  gcc/testsuite/gcc.target/i386/pr98495-1.c
+ f4b5bffd2c9013553fd76ef2b67b4932  gcc/testsuite/gcc.target/i386/pr98495-2.c
+ 7b1b093656393a4e97a829b87690f24d  gcc/testsuite/gcc.target/i386/pr98495-3.c
+ d3acb3af76786d6350cc429cd5ba787f  gcc/testsuite/gcc.target/i386/pr98495-4.c
+ edd6ef606c405650026c1d3b48cc5208  gcc/testsuite/gcc.target/i386/pr98495-5.c
  598c4bf58ece3ffbf0f20347f12676e0  gcc/testsuite/gcc.target/i386/pr98522.c
+ c0aa662a7f9ca27acd7694316500e142  gcc/testsuite/gcc.target/i386/pr98567-1.c
+ fa74707db3d1027c5ca1a19466be02aa  gcc/testsuite/gcc.target/i386/pr98567-2.c
+ df52d31e0bf5d254db22dec07043e8f2  gcc/testsuite/gcc.target/i386/pr98585.c
+ cc1d786b412d3df8fff02a5493fcae96  gcc/testsuite/gcc.target/i386/pr98603.c
+ ba7cf159b88e6243ee6624ea21a98826  gcc/testsuite/gcc.target/i386/pr98667-1.c
+ bfd05178bd335d42c157b9999dd6bf94  gcc/testsuite/gcc.target/i386/pr98667-2.c
+ a3df42ac3d3783eb4c34bdcc03aff861  gcc/testsuite/gcc.target/i386/pr98667-3.c
+ ac0f6bf2b6bb33371b49c11840423d57  gcc/testsuite/gcc.target/i386/pr98670.c
+ 83f00d9b70c99bee3a1b1df878dac4cd  gcc/testsuite/gcc.target/i386/pr98694.c
+ e674bc0a3568e20f2cff8d319251d559  gcc/testsuite/gcc.target/i386/pr98833.c
+ a2799012296658b7581bee7cb15827db  gcc/testsuite/gcc.target/i386/pr98928.c
+ 3b707ff0fa9510c15e327859af5c46b6  gcc/testsuite/gcc.target/i386/pr99025.c
+ 5f587a7e1e74db15e6a2b6cd2f76b455  gcc/testsuite/gcc.target/i386/pr99100.c
+ 729db151a4384cf4e127b5d9a69da057  gcc/testsuite/gcc.target/i386/pr99123-2.c
+ 49a5c59adcc80f5baad6214266e1e0eb  gcc/testsuite/gcc.target/i386/pr99123.c
+ 0b19a340038d11d42d65c8bb289ec153  gcc/testsuite/gcc.target/i386/pr99321.c
+ c58d1c95f1a45ece2f51ade32dc55823  gcc/testsuite/gcc.target/i386/pr99454.c
+ f961c1d8f947043bf2b762f5fc35531a  gcc/testsuite/gcc.target/i386/pr99463-2.c
+ 0d4aa0e3c5217bd61c80adc456e50b25  gcc/testsuite/gcc.target/i386/pr99463.c
+ 812ceb61fd7dac741ab0d4054cf661f7  gcc/testsuite/gcc.target/i386/pr99464.c
+ e76bf7b176ec89f531f1b0d2fe971f14  gcc/testsuite/gcc.target/i386/pr99530-1.c
+ efcc3b0030ffe11cce61a7538a9b2ccc  gcc/testsuite/gcc.target/i386/pr99530-2.c
+ e819fc760d8e721b1c4caa3edc9e7e49  gcc/testsuite/gcc.target/i386/pr99530-3.c
+ ac8b252af4fba05cccbbb422257f61d5  gcc/testsuite/gcc.target/i386/pr99530-4.c
+ 86388f8d6ad435e00cc67e6f48c81d78  gcc/testsuite/gcc.target/i386/pr99530-5.c
+ 9f5d7919054aa393f75903c1f4cb342a  gcc/testsuite/gcc.target/i386/pr99530-6.c
+ 50d8d196bff1de9d48e4220d453251f2  gcc/testsuite/gcc.target/i386/pr99600.c
+ 5c90090d1d1e1b7415543965fbde2289  gcc/testsuite/gcc.target/i386/pr99726.c
+ 5e4366668d71168c760c357dda3525bb  gcc/testsuite/gcc.target/i386/pr99744-1.c
+ f08d11401823ad2121b53968898078a8  gcc/testsuite/gcc.target/i386/pr99744-2.c
  006bf45011c8adaaea151e1e9bd71662  gcc/testsuite/gcc.target/i386/pr99753.c
+ 5f031f82b484c0f439288d4926362365  gcc/testsuite/gcc.target/i386/pr99863.c
+ 939447bef72a36fa24dc61bac7010b1b  gcc/testsuite/gcc.target/i386/pr99905.c
+ bb74fe2f09b19928e6c4047fee136b0b  gcc/testsuite/gcc.target/i386/prefer-vector-width-attr.c
  24ceb6d5f3f5cde4b9d852839bdb98ae  gcc/testsuite/gcc.target/i386/prefetchw-1.c
  f11f4731c396f099373c033ab016a64f  gcc/testsuite/gcc.target/i386/prefetchwt1-1.c
  4561455bd0f6ca8ce0b0f477f2897ee2  gcc/testsuite/gcc.target/i386/ptwrite1.c
*************** f65c92042f645a4147cc6f4fcc1d717a  gcc/te
*** 59885,59893 ****
  6280f08eb922621ae2454284e1dc37d6  gcc/testsuite/gcc.target/i386/rdgsbase-2.c
  6a710ac92db5287db43572974002059b  gcc/testsuite/gcc.target/i386/rdpid.c
  cb538410d2dabb5b487b1683d8a090a1  gcc/testsuite/gcc.target/i386/rdpku-1.c
! 4a22231454febae70d813e5fff186fd5  gcc/testsuite/gcc.target/i386/rdrand-1.c
! 03887bc8687527798fd14ec8b561e3ad  gcc/testsuite/gcc.target/i386/rdrand-2.c
! ab46708313a522129df80e4ce902afc4  gcc/testsuite/gcc.target/i386/rdrand-3.c
  12405bc30059cdd65821f77c13917288  gcc/testsuite/gcc.target/i386/rdseed16-1.c
  a3227491a22e8bd3428c5f35d9e9b625  gcc/testsuite/gcc.target/i386/rdseed32-1.c
  f1d942e689de2f23040c5e669c9dcb1b  gcc/testsuite/gcc.target/i386/rdseed64-1.c
--- 63626,63634 ----
  6280f08eb922621ae2454284e1dc37d6  gcc/testsuite/gcc.target/i386/rdgsbase-2.c
  6a710ac92db5287db43572974002059b  gcc/testsuite/gcc.target/i386/rdpid.c
  cb538410d2dabb5b487b1683d8a090a1  gcc/testsuite/gcc.target/i386/rdpku-1.c
! cecba7a153a4f229c50a990feb03d1c4  gcc/testsuite/gcc.target/i386/rdrand-1.c
! 664e1139c68a8028bb56121ac6b070ed  gcc/testsuite/gcc.target/i386/rdrand-2.c
! 9795a6f96f3a29df2ccb62888b68fadd  gcc/testsuite/gcc.target/i386/rdrand-3.c
  12405bc30059cdd65821f77c13917288  gcc/testsuite/gcc.target/i386/rdseed16-1.c
  a3227491a22e8bd3428c5f35d9e9b625  gcc/testsuite/gcc.target/i386/rdseed32-1.c
  f1d942e689de2f23040c5e669c9dcb1b  gcc/testsuite/gcc.target/i386/rdseed64-1.c
*************** d51fd9f2d7e7069d77886270f69d0f12  gcc/te
*** 59928,59936 ****
  6f9c6a5223282b22bc65105d4a0e7e53  gcc/testsuite/gcc.target/i386/ret-thunk-8.c
  7a7a1d5a4517a13ebf3484508670a5bf  gcc/testsuite/gcc.target/i386/ret-thunk-9.c
  fe7ee8a9110596ef272c4f9b6ad8adad  gcc/testsuite/gcc.target/i386/retarg.c
! a97704f8e32c5e8bde0ca64585f19254  gcc/testsuite/gcc.target/i386/returninst1.c
! b6489853439ca195ae81c5bc30919887  gcc/testsuite/gcc.target/i386/returninst2.c
! 639ade6069bf2e7113b122e157e2e15c  gcc/testsuite/gcc.target/i386/returninst3.c
  63bd489c03ce382cdba38349c30041ad  gcc/testsuite/gcc.target/i386/rotate-1.c
  92191117b3eaed784b93caca04681834  gcc/testsuite/gcc.target/i386/rotate-2.c
  7b171f958f4d58c28be1d86746ae7551  gcc/testsuite/gcc.target/i386/rotate-3.c
--- 63669,63677 ----
  6f9c6a5223282b22bc65105d4a0e7e53  gcc/testsuite/gcc.target/i386/ret-thunk-8.c
  7a7a1d5a4517a13ebf3484508670a5bf  gcc/testsuite/gcc.target/i386/ret-thunk-9.c
  fe7ee8a9110596ef272c4f9b6ad8adad  gcc/testsuite/gcc.target/i386/retarg.c
! cb124d5c93c2e76f3801c19b1b4fbccb  gcc/testsuite/gcc.target/i386/returninst1.c
! df84b27dca8b92b01be8aba496b2b00b  gcc/testsuite/gcc.target/i386/returninst2.c
! a9852fce4779d3f3ac93cc2781a554c8  gcc/testsuite/gcc.target/i386/returninst3.c
  63bd489c03ce382cdba38349c30041ad  gcc/testsuite/gcc.target/i386/rotate-1.c
  92191117b3eaed784b93caca04681834  gcc/testsuite/gcc.target/i386/rotate-2.c
  7b171f958f4d58c28be1d86746ae7551  gcc/testsuite/gcc.target/i386/rotate-3.c
*************** e0e82a96b9fe76815f9250103b103e7b  gcc/te
*** 59944,59949 ****
--- 63685,63691 ----
  7fd857319bdcc9049991294652943c98  gcc/testsuite/gcc.target/i386/rtm-xbegin-1.c
  9e2fab54032ef9d21789f19e68471555  gcc/testsuite/gcc.target/i386/rtm-xend-1.c
  d972e8dd48d19a6440cd7b63d7254c83  gcc/testsuite/gcc.target/i386/rtm-xtest-1.c
+ a18a448e8758231b30c9b1d3f052f01c  gcc/testsuite/gcc.target/i386/serialize-1.c
  8fe36ae5ff2b4bac66cad558d27e43e8  gcc/testsuite/gcc.target/i386/set-v16qi-1.h
  6915570db34df8b6c58fb59297c73851  gcc/testsuite/gcc.target/i386/set-v16qi-2.h
  cf00a8a2d0f04ca8796391128435b5c5  gcc/testsuite/gcc.target/i386/set-v16qi-3.h
*************** b5540c2e6c4aa6f5730ae17876c12e1f  gcc/te
*** 59984,59995 ****
  76fe9bc79bc28950109f6611fb70870f  gcc/testsuite/gcc.target/i386/spellcheck-options-3.c
  7bee17ed5d5f2906f658fcceaed200dd  gcc/testsuite/gcc.target/i386/spellcheck-options-4.c
  88e1317c51ed7bb5ed3c1716fc086edb  gcc/testsuite/gcc.target/i386/spellcheck-options-5.c
  cc8a162617784a2e883a5e726d28ebde  gcc/testsuite/gcc.target/i386/sse-1.c
  31f7ce4356be3b5523e49df7d4ad0951  gcc/testsuite/gcc.target/i386/sse-10.c
  49bde97b271274cb2bc26697ce2b19be  gcc/testsuite/gcc.target/i386/sse-11.c
! 154fbd4d9cee28f2e7565edb0affd499  gcc/testsuite/gcc.target/i386/sse-12.c
! 46bc5f9e965ec80faac9437cc4522843  gcc/testsuite/gcc.target/i386/sse-13.c
! f286433f29b51c00fb5909bf8ffe5460  gcc/testsuite/gcc.target/i386/sse-14.c
  92ad37b5ad7426d489b1b6f1ba0f41ea  gcc/testsuite/gcc.target/i386/sse-15.c
  2e7b115c4bd7984925f1a8d17a5faf67  gcc/testsuite/gcc.target/i386/sse-16.c
  f660e67b22cb44e6a6b38a247b1d78c3  gcc/testsuite/gcc.target/i386/sse-17.c
--- 63726,63741 ----
  76fe9bc79bc28950109f6611fb70870f  gcc/testsuite/gcc.target/i386/spellcheck-options-3.c
  7bee17ed5d5f2906f658fcceaed200dd  gcc/testsuite/gcc.target/i386/spellcheck-options-4.c
  88e1317c51ed7bb5ed3c1716fc086edb  gcc/testsuite/gcc.target/i386/spellcheck-options-5.c
+ aa1c8ec36be620dcc531700b71a19dc9  gcc/testsuite/gcc.target/i386/spill_to_mask-1.c
+ 51a2af8d8d55568da9d437137110dc50  gcc/testsuite/gcc.target/i386/spill_to_mask-2.c
+ 7eee6067fd49ce62bb06b61039bb041e  gcc/testsuite/gcc.target/i386/spill_to_mask-3.c
+ f4ffbd44d97f4dbf91c46c720158b410  gcc/testsuite/gcc.target/i386/spill_to_mask-4.c
  cc8a162617784a2e883a5e726d28ebde  gcc/testsuite/gcc.target/i386/sse-1.c
  31f7ce4356be3b5523e49df7d4ad0951  gcc/testsuite/gcc.target/i386/sse-10.c
  49bde97b271274cb2bc26697ce2b19be  gcc/testsuite/gcc.target/i386/sse-11.c
! 1bb2f373c5a5eb9db6b65e377d0dac63  gcc/testsuite/gcc.target/i386/sse-12.c
! 5cb56c1bb70d3d793b9deec82cee096a  gcc/testsuite/gcc.target/i386/sse-13.c
! ffb6ed9866dd66aafe68051249fa57a5  gcc/testsuite/gcc.target/i386/sse-14.c
  92ad37b5ad7426d489b1b6f1ba0f41ea  gcc/testsuite/gcc.target/i386/sse-15.c
  2e7b115c4bd7984925f1a8d17a5faf67  gcc/testsuite/gcc.target/i386/sse-16.c
  f660e67b22cb44e6a6b38a247b1d78c3  gcc/testsuite/gcc.target/i386/sse-17.c
*************** f660e67b22cb44e6a6b38a247b1d78c3  gcc/te
*** 59998,60006 ****
  bb148b6e9dd40de90aed723794e38216  gcc/testsuite/gcc.target/i386/sse-2.c
  c23a0ea446a060d55e49e48429513f7d  gcc/testsuite/gcc.target/i386/sse-20.c
  d5e7e4c7d488a953399d853e48aa484e  gcc/testsuite/gcc.target/i386/sse-21.c
! 75e647a2ddad2c05f2239f894809eb71  gcc/testsuite/gcc.target/i386/sse-22.c
  1c2df57cb3d7d6a3daf4084135ba9b1b  gcc/testsuite/gcc.target/i386/sse-22a.c
! f3f93f7241d3ec086fffee31056594e2  gcc/testsuite/gcc.target/i386/sse-23.c
  3fe1d48ff9d52631da56f04cc922a9cb  gcc/testsuite/gcc.target/i386/sse-24.c
  f839ec28fa786a06dabe541954c1b1ae  gcc/testsuite/gcc.target/i386/sse-25.c
  74d7245c448c34b5d69a304bcd162956  gcc/testsuite/gcc.target/i386/sse-26.c
--- 63744,63752 ----
  bb148b6e9dd40de90aed723794e38216  gcc/testsuite/gcc.target/i386/sse-2.c
  c23a0ea446a060d55e49e48429513f7d  gcc/testsuite/gcc.target/i386/sse-20.c
  d5e7e4c7d488a953399d853e48aa484e  gcc/testsuite/gcc.target/i386/sse-21.c
! ff7a722e7d2524d4fe9c93a01bc083a1  gcc/testsuite/gcc.target/i386/sse-22.c
  1c2df57cb3d7d6a3daf4084135ba9b1b  gcc/testsuite/gcc.target/i386/sse-22a.c
! 1316ad2ddc46302e67d5aa50468fcd07  gcc/testsuite/gcc.target/i386/sse-23.c
  3fe1d48ff9d52631da56f04cc922a9cb  gcc/testsuite/gcc.target/i386/sse-24.c
  f839ec28fa786a06dabe541954c1b1ae  gcc/testsuite/gcc.target/i386/sse-25.c
  74d7245c448c34b5d69a304bcd162956  gcc/testsuite/gcc.target/i386/sse-26.c
*************** b3b5bc8c0bda286d794a088170067893  gcc/te
*** 60013,60020 ****
  ee6ef4bf4e0a816c3454e31d36ab8bb6  gcc/testsuite/gcc.target/i386/sse-9.c
  025afa1343cbfdf508febcd60f6d2c38  gcc/testsuite/gcc.target/i386/sse-addps-1.c
  5287b15b19f501b91637e70c8c60fd2e  gcc/testsuite/gcc.target/i386/sse-addss-1.c
! 773a061ce226bca557f4dfeab77ec707  gcc/testsuite/gcc.target/i386/sse-andnps-1.c
! 44bb7370d2d1d647eb070b8da049a1ee  gcc/testsuite/gcc.target/i386/sse-andps-1.c
  18656895c0dbed11382106b4ccab4cee  gcc/testsuite/gcc.target/i386/sse-check.h
  ea4cb390b58bd1ad716363ddda8c8670  gcc/testsuite/gcc.target/i386/sse-cmpss-1.c
  ccc6c580801ffadf17dc954344e73b23  gcc/testsuite/gcc.target/i386/sse-comiss-1.c
--- 63759,63766 ----
  ee6ef4bf4e0a816c3454e31d36ab8bb6  gcc/testsuite/gcc.target/i386/sse-9.c
  025afa1343cbfdf508febcd60f6d2c38  gcc/testsuite/gcc.target/i386/sse-addps-1.c
  5287b15b19f501b91637e70c8c60fd2e  gcc/testsuite/gcc.target/i386/sse-addss-1.c
! 0a7b192cdd8a6d97ea4d570bdacbb640  gcc/testsuite/gcc.target/i386/sse-andnps-1.c
! cf73c01fb3fd687953b40ce65a9076da  gcc/testsuite/gcc.target/i386/sse-andps-1.c
  18656895c0dbed11382106b4ccab4cee  gcc/testsuite/gcc.target/i386/sse-check.h
  ea4cb390b58bd1ad716363ddda8c8670  gcc/testsuite/gcc.target/i386/sse-cmpss-1.c
  ccc6c580801ffadf17dc954344e73b23  gcc/testsuite/gcc.target/i386/sse-comiss-1.c
*************** e80e025b5521ce049d975cd0376dd73f  gcc/te
*** 60076,60083 ****
  a41fe7dc0e539ceefca894e1f80e769e  gcc/testsuite/gcc.target/i386/sse-xorps-1.c
  d577617bdd4e8a2de2ec9b6e4bde1eb4  gcc/testsuite/gcc.target/i386/sse2-addpd-1.c
  45d458b0f755e9542ac936ae4fc8eb16  gcc/testsuite/gcc.target/i386/sse2-addsd-1.c
! 5b64c8e79e14ff09355a5e5875fb1376  gcc/testsuite/gcc.target/i386/sse2-andnpd-1.c
! abded689dfc189d904257a4341611ab4  gcc/testsuite/gcc.target/i386/sse2-andpd-1.c
  5c043f9abbc3ad9ae973384fd30850c0  gcc/testsuite/gcc.target/i386/sse2-builtin-fp-int-inexact.c
  6658245d9cdd7b084f9f2fa2dcc881f2  gcc/testsuite/gcc.target/i386/sse2-check.h
  12ed5dd15b94275feb351ef37ce96d3d  gcc/testsuite/gcc.target/i386/sse2-cmpsd-1.c
--- 63822,63829 ----
  a41fe7dc0e539ceefca894e1f80e769e  gcc/testsuite/gcc.target/i386/sse-xorps-1.c
  d577617bdd4e8a2de2ec9b6e4bde1eb4  gcc/testsuite/gcc.target/i386/sse2-addpd-1.c
  45d458b0f755e9542ac936ae4fc8eb16  gcc/testsuite/gcc.target/i386/sse2-addsd-1.c
! f31713939bdc5209351df9a08b597557  gcc/testsuite/gcc.target/i386/sse2-andnpd-1.c
! ad1dd097598261bb606526980c62c78e  gcc/testsuite/gcc.target/i386/sse2-andpd-1.c
  5c043f9abbc3ad9ae973384fd30850c0  gcc/testsuite/gcc.target/i386/sse2-builtin-fp-int-inexact.c
  6658245d9cdd7b084f9f2fa2dcc881f2  gcc/testsuite/gcc.target/i386/sse2-check.h
  12ed5dd15b94275feb351ef37ce96d3d  gcc/testsuite/gcc.target/i386/sse2-cmpsd-1.c
*************** d191a3c09499a880bb288c0995e46647  gcc/te
*** 60132,60145 ****
  a9a02c2ca6672aaaa1de07e021c32701  gcc/testsuite/gcc.target/i386/sse2-mmx-15.c
  a8f1701db23e2d9c338b73798609d3d9  gcc/testsuite/gcc.target/i386/sse2-mmx-16.c
  21a70d8a9291bb5ab2cdd0df57930c6f  gcc/testsuite/gcc.target/i386/sse2-mmx-17.c
! 730502279c0811c58fbdda9841d572c0  gcc/testsuite/gcc.target/i386/sse2-mmx-18a.c
! 00bc023e3484302de9c51b923c2090df  gcc/testsuite/gcc.target/i386/sse2-mmx-18b.c
! 993de715b0cb8fb62f209bd164124354  gcc/testsuite/gcc.target/i386/sse2-mmx-18c.c
! 89b1b4825b1cdeb9c53a138463318024  gcc/testsuite/gcc.target/i386/sse2-mmx-19a.c
! 057b2f18b61d3b5fc692984dffc4644a  gcc/testsuite/gcc.target/i386/sse2-mmx-19b.c
! a214a020609a001c2b412adbd22397c7  gcc/testsuite/gcc.target/i386/sse2-mmx-19c.c
! a4f8b0cdf2c29235c9db8a814b8d9985  gcc/testsuite/gcc.target/i386/sse2-mmx-19d.c
! 70c2b32b220ff716558b8454b350c15c  gcc/testsuite/gcc.target/i386/sse2-mmx-19e.c
  0823a669795e08180288fa4960c50170  gcc/testsuite/gcc.target/i386/sse2-mmx-2.c
  385e60dfc67ea7785f17a6360ea5fd55  gcc/testsuite/gcc.target/i386/sse2-mmx-20.c
  841920639bc5a23b1d1a900055238f58  gcc/testsuite/gcc.target/i386/sse2-mmx-21.c
--- 63878,63885 ----
  a9a02c2ca6672aaaa1de07e021c32701  gcc/testsuite/gcc.target/i386/sse2-mmx-15.c
  a8f1701db23e2d9c338b73798609d3d9  gcc/testsuite/gcc.target/i386/sse2-mmx-16.c
  21a70d8a9291bb5ab2cdd0df57930c6f  gcc/testsuite/gcc.target/i386/sse2-mmx-17.c
! 7a80b96c1593596db6cd69c6c0edeb14  gcc/testsuite/gcc.target/i386/sse2-mmx-18a.c
! 268792e901957ee3d55d6c9ed109960e  gcc/testsuite/gcc.target/i386/sse2-mmx-19a.c
  0823a669795e08180288fa4960c50170  gcc/testsuite/gcc.target/i386/sse2-mmx-2.c
  385e60dfc67ea7785f17a6360ea5fd55  gcc/testsuite/gcc.target/i386/sse2-mmx-20.c
  841920639bc5a23b1d1a900055238f58  gcc/testsuite/gcc.target/i386/sse2-mmx-21.c
*************** df07554dcb7cb2f474fb8cb88dce4c3e  gcc/te
*** 60154,60160 ****
  980b5052475526bed1b99d96afa4d3b1  gcc/testsuite/gcc.target/i386/sse2-mmx-cvtpi2ps.c
  a9f2b3f67cc7cb3fb9c0619f634d95c3  gcc/testsuite/gcc.target/i386/sse2-mmx-cvtps2pi.c
  246aec5060d9e32ebd3fdcc6119f9387  gcc/testsuite/gcc.target/i386/sse2-mmx-cvttps2pi.c
! 648b5c118ea71e3d83e2bf8ae69440f2  gcc/testsuite/gcc.target/i386/sse2-mmx-maskmovq.c
  aeedf1243eb2ac92a988260ff4f330e2  gcc/testsuite/gcc.target/i386/sse2-mmx-packssdw.c
  ebb38c7ab7edcfdb1a20ad6d30e500be  gcc/testsuite/gcc.target/i386/sse2-mmx-packsswb.c
  b9e6b582fd5bc8c137d2bb46eae6f3bb  gcc/testsuite/gcc.target/i386/sse2-mmx-packuswb.c
--- 63894,63900 ----
  980b5052475526bed1b99d96afa4d3b1  gcc/testsuite/gcc.target/i386/sse2-mmx-cvtpi2ps.c
  a9f2b3f67cc7cb3fb9c0619f634d95c3  gcc/testsuite/gcc.target/i386/sse2-mmx-cvtps2pi.c
  246aec5060d9e32ebd3fdcc6119f9387  gcc/testsuite/gcc.target/i386/sse2-mmx-cvttps2pi.c
! dcc8ed3eee64487dcb2955693af5ca25  gcc/testsuite/gcc.target/i386/sse2-mmx-maskmovq.c
  aeedf1243eb2ac92a988260ff4f330e2  gcc/testsuite/gcc.target/i386/sse2-mmx-packssdw.c
  ebb38c7ab7edcfdb1a20ad6d30e500be  gcc/testsuite/gcc.target/i386/sse2-mmx-packsswb.c
  b9e6b582fd5bc8c137d2bb46eae6f3bb  gcc/testsuite/gcc.target/i386/sse2-mmx-packuswb.c
*************** e19c8d299fc340847b6777b1e5132b54  gcc/te
*** 60176,60183 ****
  a669ce8394079c9def6a8a044dd00419  gcc/testsuite/gcc.target/i386/sse2-mmx-pcmpgtb.c
  5e22eab62388f124c47529342f7e9bb9  gcc/testsuite/gcc.target/i386/sse2-mmx-pcmpgtd.c
  2e36b75d623126fdffc6150367cc44f2  gcc/testsuite/gcc.target/i386/sse2-mmx-pcmpgtw.c
! 44e6a74c4b6632a321067fc2fdfa31b7  gcc/testsuite/gcc.target/i386/sse2-mmx-pextrw.c
! 65107f1ee2211cdbdf79444f17eadb33  gcc/testsuite/gcc.target/i386/sse2-mmx-pinsrw.c
  7cb45836f8bc5bf2bd686943ad207468  gcc/testsuite/gcc.target/i386/sse2-mmx-pmaddwd.c
  34bb8c91c1c7d402396e13eeb6b8a8d2  gcc/testsuite/gcc.target/i386/sse2-mmx-pmaxsw.c
  583fee4a15647fda9c93aca572c20da3  gcc/testsuite/gcc.target/i386/sse2-mmx-pmaxub.c
--- 63916,63923 ----
  a669ce8394079c9def6a8a044dd00419  gcc/testsuite/gcc.target/i386/sse2-mmx-pcmpgtb.c
  5e22eab62388f124c47529342f7e9bb9  gcc/testsuite/gcc.target/i386/sse2-mmx-pcmpgtd.c
  2e36b75d623126fdffc6150367cc44f2  gcc/testsuite/gcc.target/i386/sse2-mmx-pcmpgtw.c
! 715467f5e89c856f3906d9963cb1cdfc  gcc/testsuite/gcc.target/i386/sse2-mmx-pextrw.c
! 5f1e6dc276b92604c89c57a29697563d  gcc/testsuite/gcc.target/i386/sse2-mmx-pinsrw.c
  7cb45836f8bc5bf2bd686943ad207468  gcc/testsuite/gcc.target/i386/sse2-mmx-pmaddwd.c
  34bb8c91c1c7d402396e13eeb6b8a8d2  gcc/testsuite/gcc.target/i386/sse2-mmx-pmaxsw.c
  583fee4a15647fda9c93aca572c20da3  gcc/testsuite/gcc.target/i386/sse2-mmx-pmaxub.c
*************** f6722ff543fe2d22c61bee55cae7b3b0  gcc/te
*** 60293,60298 ****
--- 64033,64040 ----
  40328c91b45d36f00842ea53383bdf39  gcc/testsuite/gcc.target/i386/sse2-pr91201-5.c
  50d756e8bb57ee5fcdcd4f2d78676a29  gcc/testsuite/gcc.target/i386/sse2-pr91201-6.c
  f4257a5e208e16a0a30cb7b050fdce96  gcc/testsuite/gcc.target/i386/sse2-pr91201.c
+ a61c548dc02cbe1848cd1f3c304b2310  gcc/testsuite/gcc.target/i386/sse2-pr98461-2.c
+ 1837447d436a786a3fc885a11bc08718  gcc/testsuite/gcc.target/i386/sse2-pr98461.c
  306e316bf36fd1022168fa5560198f41  gcc/testsuite/gcc.target/i386/sse2-psadbw-1.c
  31949c673c69db630bfaf04449d2677f  gcc/testsuite/gcc.target/i386/sse2-pshufd-1.c
  2890c692e114956ac819984c965d389e  gcc/testsuite/gcc.target/i386/sse2-pshufhw-1.c
*************** cf5ce63ad160152c8cf0c9c3d01c5b79  gcc/te
*** 60341,60346 ****
--- 64083,64090 ----
  d83d0f8b342ff8ef187b5267acdf1b9a  gcc/testsuite/gcc.target/i386/sse2-set-v8hi-1a.c
  001bec980378e25765c927def02c9eae  gcc/testsuite/gcc.target/i386/sse2-set-v8hi-2.c
  c86c2814d0ff9e3e7807177c93e54cdf  gcc/testsuite/gcc.target/i386/sse2-set-v8hi-2a.c
+ c74df210cb00a44183f0550ec46473b6  gcc/testsuite/gcc.target/i386/sse2-shiftqihi-constant-1.c
+ 1de74963e620964fc49c729ef9de0a73  gcc/testsuite/gcc.target/i386/sse2-shiftqihi-constant-2.c
  747d389fb10946466ce7106bf9861c05  gcc/testsuite/gcc.target/i386/sse2-shufpd-1.c
  229da27deb07940e47896f28568a9ad6  gcc/testsuite/gcc.target/i386/sse2-shufps-1.c
  e3c923013c80e125486648e3307d19ca  gcc/testsuite/gcc.target/i386/sse2-sqrtpd-1.c
*************** e0246b5d22c9c146ad2d9426ae92228a  gcc/te
*** 60389,60397 ****
  c8f77182ca7b638d5f7f35990da2e267  gcc/testsuite/gcc.target/i386/sse4_1-blendvpd.c
  fe57d22375ffb7148d4dc74eb9c59bb2  gcc/testsuite/gcc.target/i386/sse4_1-blendvps.c
  713bc87666161d0117835b0277afbb34  gcc/testsuite/gcc.target/i386/sse4_1-builtin-fp-int-inexact.c
! a742893fa4219fc786e5e93cc13f6dcb  gcc/testsuite/gcc.target/i386/sse4_1-ceil-sfix-vec.c
  f4c387e1aa11d4b0c9f8fbe48a894d6e  gcc/testsuite/gcc.target/i386/sse4_1-ceil-vec.c
! 2f9943fa0c3ca3514451ac56955b2e45  gcc/testsuite/gcc.target/i386/sse4_1-ceilf-sfix-vec.c
  bb5b589d410f6f0506a3518bacc349ee  gcc/testsuite/gcc.target/i386/sse4_1-ceilf-vec.c
  f03f1c5c800ade5a67c6bc62e11af9f1  gcc/testsuite/gcc.target/i386/sse4_1-check.h
  c02a941c79edb39084bbaf9f960bac57  gcc/testsuite/gcc.target/i386/sse4_1-cond-1.c
--- 64133,64141 ----
  c8f77182ca7b638d5f7f35990da2e267  gcc/testsuite/gcc.target/i386/sse4_1-blendvpd.c
  fe57d22375ffb7148d4dc74eb9c59bb2  gcc/testsuite/gcc.target/i386/sse4_1-blendvps.c
  713bc87666161d0117835b0277afbb34  gcc/testsuite/gcc.target/i386/sse4_1-builtin-fp-int-inexact.c
! ef401d5663dc7f049d2739e56ad555b8  gcc/testsuite/gcc.target/i386/sse4_1-ceil-sfix-vec.c
  f4c387e1aa11d4b0c9f8fbe48a894d6e  gcc/testsuite/gcc.target/i386/sse4_1-ceil-vec.c
! 965a229f1bb57fefcc2a9c30eadccf7b  gcc/testsuite/gcc.target/i386/sse4_1-ceilf-sfix-vec.c
  bb5b589d410f6f0506a3518bacc349ee  gcc/testsuite/gcc.target/i386/sse4_1-ceilf-vec.c
  f03f1c5c800ade5a67c6bc62e11af9f1  gcc/testsuite/gcc.target/i386/sse4_1-check.h
  c02a941c79edb39084bbaf9f960bac57  gcc/testsuite/gcc.target/i386/sse4_1-cond-1.c
*************** c02a941c79edb39084bbaf9f960bac57  gcc/te
*** 60400,60408 ****
  85fe7d813bb2272acff7d0b46e242100  gcc/testsuite/gcc.target/i386/sse4_1-dpps-1.c
  66b6c730b921ea3995168077066c87e3  gcc/testsuite/gcc.target/i386/sse4_1-dpps-2.c
  35ce467d38798f3c28597c26ccb59b4d  gcc/testsuite/gcc.target/i386/sse4_1-extractps.c
! e50f71e1c33a8add2dbb9af08cc5bcc1  gcc/testsuite/gcc.target/i386/sse4_1-floor-sfix-vec.c
  d404976f59c4de6496aa6683c99c74b2  gcc/testsuite/gcc.target/i386/sse4_1-floor-vec.c
! aec3aa7c06c4235afffac2453989c31a  gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c
  bdae5ff1d18a830901bb43d664174dd6  gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c
  3f14907ce2fa5cc9febdb63b89492f7d  gcc/testsuite/gcc.target/i386/sse4_1-init-v16qi-1.c
  5900f29c5ea41c98405b4f812fb3d908  gcc/testsuite/gcc.target/i386/sse4_1-init-v2di-1.c
--- 64144,64152 ----
  85fe7d813bb2272acff7d0b46e242100  gcc/testsuite/gcc.target/i386/sse4_1-dpps-1.c
  66b6c730b921ea3995168077066c87e3  gcc/testsuite/gcc.target/i386/sse4_1-dpps-2.c
  35ce467d38798f3c28597c26ccb59b4d  gcc/testsuite/gcc.target/i386/sse4_1-extractps.c
! 01b350d84c74c819f5f60c242ab0d22e  gcc/testsuite/gcc.target/i386/sse4_1-floor-sfix-vec.c
  d404976f59c4de6496aa6683c99c74b2  gcc/testsuite/gcc.target/i386/sse4_1-floor-vec.c
! e9f20122ecb5bb01fe925c11939c0daa  gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c
  bdae5ff1d18a830901bb43d664174dd6  gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c
  3f14907ce2fa5cc9febdb63b89492f7d  gcc/testsuite/gcc.target/i386/sse4_1-init-v16qi-1.c
  5900f29c5ea41c98405b4f812fb3d908  gcc/testsuite/gcc.target/i386/sse4_1-init-v2di-1.c
*************** bb5484db46d5db1bc08e3be71a124faf  gcc/te
*** 60465,60480 ****
  caaaf541c6f7eb87214c11b5dc2b35f0  gcc/testsuite/gcc.target/i386/sse4_1-ptest-2.c
  839d2ec94fbd1d01290fff5be102952c  gcc/testsuite/gcc.target/i386/sse4_1-ptest-3.c
  6408e72a864871562196b6c57a9cad38  gcc/testsuite/gcc.target/i386/sse4_1-rint-inline.c
! a22873b7f77cc710982dc4786dbc166b  gcc/testsuite/gcc.target/i386/sse4_1-rint-sfix-vec.c
  d43f57b93ce30d26aca624ea0e35e1ed  gcc/testsuite/gcc.target/i386/sse4_1-rint-vec.c
! 2ef8b68e16d4d395dc65614fec133c0a  gcc/testsuite/gcc.target/i386/sse4_1-rintf-sfix-vec.c
  17add71bcbc9decc8b2e9be39e2a0360  gcc/testsuite/gcc.target/i386/sse4_1-rintf-vec.c
  e0f960460e529ef952b05ebb55d458e4  gcc/testsuite/gcc.target/i386/sse4_1-round-roundeven-1.c
  1c8d6900c468bf1f753a3d3f72b9c242  gcc/testsuite/gcc.target/i386/sse4_1-round-roundeven-2.c
! 3a2b36e8a96e414f75ad27f13722d598  gcc/testsuite/gcc.target/i386/sse4_1-round-sfix-vec.c
  d7d336332563c034a90b8a60d8fe5379  gcc/testsuite/gcc.target/i386/sse4_1-round-vec.c
  08ed19dcc9673b5d328bbee157df11ba  gcc/testsuite/gcc.target/i386/sse4_1-round.h
! 96571436fc8c7b9a7f85bd0ad5506772  gcc/testsuite/gcc.target/i386/sse4_1-roundf-sfix-vec.c
  3f487f917dd440c199852d47237d6990  gcc/testsuite/gcc.target/i386/sse4_1-roundf-vec.c
  bc2fd815831698f5079990d6ec76461b  gcc/testsuite/gcc.target/i386/sse4_1-roundpd-1.c
  143dba6220d58f609d418f5931a697cf  gcc/testsuite/gcc.target/i386/sse4_1-roundpd-2.c
--- 64209,64224 ----
  caaaf541c6f7eb87214c11b5dc2b35f0  gcc/testsuite/gcc.target/i386/sse4_1-ptest-2.c
  839d2ec94fbd1d01290fff5be102952c  gcc/testsuite/gcc.target/i386/sse4_1-ptest-3.c
  6408e72a864871562196b6c57a9cad38  gcc/testsuite/gcc.target/i386/sse4_1-rint-inline.c
! 75e4f72172a62d7cb9bc07f245c0c740  gcc/testsuite/gcc.target/i386/sse4_1-rint-sfix-vec.c
  d43f57b93ce30d26aca624ea0e35e1ed  gcc/testsuite/gcc.target/i386/sse4_1-rint-vec.c
! 9fbf789cd91add6ae19e8818885f7c6d  gcc/testsuite/gcc.target/i386/sse4_1-rintf-sfix-vec.c
  17add71bcbc9decc8b2e9be39e2a0360  gcc/testsuite/gcc.target/i386/sse4_1-rintf-vec.c
  e0f960460e529ef952b05ebb55d458e4  gcc/testsuite/gcc.target/i386/sse4_1-round-roundeven-1.c
  1c8d6900c468bf1f753a3d3f72b9c242  gcc/testsuite/gcc.target/i386/sse4_1-round-roundeven-2.c
! 9f9fefc9d75dc17aa08a8d3b9bddb5f1  gcc/testsuite/gcc.target/i386/sse4_1-round-sfix-vec.c
  d7d336332563c034a90b8a60d8fe5379  gcc/testsuite/gcc.target/i386/sse4_1-round-vec.c
  08ed19dcc9673b5d328bbee157df11ba  gcc/testsuite/gcc.target/i386/sse4_1-round.h
! 4dc69d8475f3e382da16a8562f957f1b  gcc/testsuite/gcc.target/i386/sse4_1-roundf-sfix-vec.c
  3f487f917dd440c199852d47237d6990  gcc/testsuite/gcc.target/i386/sse4_1-roundf-vec.c
  bc2fd815831698f5079990d6ec76461b  gcc/testsuite/gcc.target/i386/sse4_1-roundpd-1.c
  143dba6220d58f609d418f5931a697cf  gcc/testsuite/gcc.target/i386/sse4_1-roundpd-2.c
*************** e797e3acc17ea660fd93c0911e210be1  gcc/te
*** 60587,60595 ****
  22fcf3b6f05e35417473446a6401735c  gcc/testsuite/gcc.target/i386/stackalign/return-4.c
  8276f2c9f0467299ccc2c3bc989ca9cb  gcc/testsuite/gcc.target/i386/stackalign/return-5.c
  67a3c24d3712370ddefd38dcbb853a48  gcc/testsuite/gcc.target/i386/stackalign/return-6.c
! 6b195e7badd959fb5352f4975f486f41  gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp
! c43c2ead96b394127d8644ef3360a3dd  gcc/testsuite/gcc.target/i386/strcmpopt_6.c
  caa0a36ffb354dbc6cd84a8137f4aef9  gcc/testsuite/gcc.target/i386/strinline.c
  fc3a18821c52e48c29f54252053988ba  gcc/testsuite/gcc.target/i386/struct-size.c
  a1fb21b895e9d76b3434490c178977d2  gcc/testsuite/gcc.target/i386/sw-1.c
  48aa8d8f4c116ed47aba3b4b60fae8f3  gcc/testsuite/gcc.target/i386/tailcall-1.c
--- 64331,64340 ----
  22fcf3b6f05e35417473446a6401735c  gcc/testsuite/gcc.target/i386/stackalign/return-4.c
  8276f2c9f0467299ccc2c3bc989ca9cb  gcc/testsuite/gcc.target/i386/stackalign/return-5.c
  67a3c24d3712370ddefd38dcbb853a48  gcc/testsuite/gcc.target/i386/stackalign/return-6.c
! 1f052b2265fe1b807a650086f2e1a9f4  gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp
! 2778b9ab1729f5a65d10668b47f03340  gcc/testsuite/gcc.target/i386/strcmpopt_6.c
  caa0a36ffb354dbc6cd84a8137f4aef9  gcc/testsuite/gcc.target/i386/strinline.c
+ aa69c6504471efa5d76824859d0bc6cb  gcc/testsuite/gcc.target/i386/strncmp-1.c
  fc3a18821c52e48c29f54252053988ba  gcc/testsuite/gcc.target/i386/struct-size.c
  a1fb21b895e9d76b3434490c178977d2  gcc/testsuite/gcc.target/i386/sw-1.c
  48aa8d8f4c116ed47aba3b4b60fae8f3  gcc/testsuite/gcc.target/i386/tailcall-1.c
*************** dc3c4ac8cdb7401733c5fb1675741879  gcc/te
*** 60609,60614 ****
--- 64354,64360 ----
  d44614fd5596d1f2a2a55c835ee50727  gcc/testsuite/gcc.target/i386/testround-1.c
  b20b310f3636a1d1d5c3491de30c7a3b  gcc/testsuite/gcc.target/i386/testround-2.c
  832965b06213f2066439fd1482fcb8a7  gcc/testsuite/gcc.target/i386/tpause-1.c
+ ed802e5785edad05c6b1796ffc7404fb  gcc/testsuite/gcc.target/i386/tsxldtrk-1.c
  93d9979dbb1eca4f0954ae4f9ab2dd58  gcc/testsuite/gcc.target/i386/udivmod-1.c
  8950d7bf5681f03b1ac271428565f90d  gcc/testsuite/gcc.target/i386/udivmod-2.c
  bb5b98d9f514eb87414a13a71b7ef65a  gcc/testsuite/gcc.target/i386/udivmod-3.c
*************** cd1514bc672897ccd336522e7e4b9c75  gcc/te
*** 60618,60623 ****
--- 64364,64374 ----
  81ddb632fb38aeca1743e7f489feb55d  gcc/testsuite/gcc.target/i386/udivmod-6.c
  9d334c93c0ea26df7f9434fcb5a047b4  gcc/testsuite/gcc.target/i386/udivmod-7.c
  be3365966668001dda567754312a4f5e  gcc/testsuite/gcc.target/i386/udivmod-8.c
+ 0109d1a4e225b3755673fbaf77ba3cec  gcc/testsuite/gcc.target/i386/uintr-1.c
+ 350a9926055dac3bb8d57db4885aff10  gcc/testsuite/gcc.target/i386/uintr-2.c
+ 208db11f3088f797e0d34eef91005d8f  gcc/testsuite/gcc.target/i386/uintr-3.c
+ aa8882f65b02471cd35761336907d3b6  gcc/testsuite/gcc.target/i386/uintr-4.c
+ 38b0d60b7eb7ac9ac0c4402d1b2575f0  gcc/testsuite/gcc.target/i386/uintr-5.c
  3df1f9aef42723bbbd0f795be1e64913  gcc/testsuite/gcc.target/i386/umod-1.c
  80c6ab83e85c9918b290e01c4d8514c5  gcc/testsuite/gcc.target/i386/umod-2.c
  bc81fc7aec323184dc275b97962476e5  gcc/testsuite/gcc.target/i386/umod-3.c
*************** f2246fb526840289cc94bd7e8b0c994a  gcc/te
*** 60665,60671 ****
  20a0928d3e53e6a1f55cc1cdd9b7dd3e  gcc/testsuite/gcc.target/i386/vect-pack-trunc-2.c
  3ae8894d32adfa76a3d2a79477527531  gcc/testsuite/gcc.target/i386/vect-perm-even-1.c
  01c1d7e7805e8138e514493ab9238621  gcc/testsuite/gcc.target/i386/vect-perm-odd-1.c
! 128a12571a3ce56ae0f7f1734c7cb4e3  gcc/testsuite/gcc.target/i386/vect-pr67800.c
  1194b8571ffb184ffacd80e2515ce001  gcc/testsuite/gcc.target/i386/vect-rebuild.c
  de36035a6b74d9e9cabfaa8cfb15f288  gcc/testsuite/gcc.target/i386/vect-signbitf.c
  7f2bb0dd2fdc6e3a083e43645ee26275  gcc/testsuite/gcc.target/i386/vect-sizes-1.c
--- 64416,64422 ----
  20a0928d3e53e6a1f55cc1cdd9b7dd3e  gcc/testsuite/gcc.target/i386/vect-pack-trunc-2.c
  3ae8894d32adfa76a3d2a79477527531  gcc/testsuite/gcc.target/i386/vect-perm-even-1.c
  01c1d7e7805e8138e514493ab9238621  gcc/testsuite/gcc.target/i386/vect-perm-odd-1.c
! 515f451843087285cae4273f2866f93b  gcc/testsuite/gcc.target/i386/vect-pr67800.c
  1194b8571ffb184ffacd80e2515ce001  gcc/testsuite/gcc.target/i386/vect-rebuild.c
  de36035a6b74d9e9cabfaa8cfb15f288  gcc/testsuite/gcc.target/i386/vect-signbitf.c
  7f2bb0dd2fdc6e3a083e43645ee26275  gcc/testsuite/gcc.target/i386/vect-sizes-1.c
*************** f5394c038a3031cca8da6381b321aedb  gcc/te
*** 60684,60689 ****
--- 64435,64441 ----
  146491bc3c3d5fec1957a2ca55dbd0d5  gcc/testsuite/gcc.target/i386/vectorize7.c
  cf807a1a0c9ea4bc99f4a22859d9b829  gcc/testsuite/gcc.target/i386/vectorize8.c
  51bb807723c574207213354a4efa70d9  gcc/testsuite/gcc.target/i386/vectorize9.c
+ 6517a2c66873ffa0e86469852e46a556  gcc/testsuite/gcc.target/i386/vnni_inline_error.c
  784c987777c87b20adb70aefdd43c1ea  gcc/testsuite/gcc.target/i386/volatile-1.c
  df392be222a4275b2813dd6198b59951  gcc/testsuite/gcc.target/i386/volatile-2.c
  a1724ce16bcf831fa3fa93e00649d504  gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c
*************** ba2b1e708b3eafbf4da944250a3d4f95  gcc/te
*** 60694,60699 ****
--- 64446,64454 ----
  a29164d700162446291a30e80f9fdf44  gcc/testsuite/gcc.target/i386/vperm-4-2.inc
  a781860aa4299cab238021b0c815d826  gcc/testsuite/gcc.target/i386/vperm-v2df.c
  090d01116cec60d72a1446f0ebc9f9ef  gcc/testsuite/gcc.target/i386/vperm-v2di.c
+ 5a9d2ca061420b0975c2316c43570737  gcc/testsuite/gcc.target/i386/vperm-v2sf.c
+ cbcb3a51114df75d5fc346195be3bd8b  gcc/testsuite/gcc.target/i386/vperm-v2si.c
+ f0d5e9353fe4d75539c109b81f53b70f  gcc/testsuite/gcc.target/i386/vperm-v4hi.c
  82ed376ff5668a0e249e3bd95aa55829  gcc/testsuite/gcc.target/i386/vperm-v4sf-1.c
  76b76c363a368ed345acc428fa7cd7ff  gcc/testsuite/gcc.target/i386/vperm-v4sf-2.c
  57d05bf2e7a02a243498dbeed968f0ff  gcc/testsuite/gcc.target/i386/vperm-v4si-1.c
*************** daffc3afd6be114661cde40a175059e8  gcc/te
*** 60717,60722 ****
--- 64472,64500 ----
  d58eb898aedc8c5886435ac33cca3a59  gcc/testsuite/gcc.target/i386/wrgsbase-2.c
  7f3bbce1bf03227b597c69acdd7ffd4d  gcc/testsuite/gcc.target/i386/writeeflags-1.c
  cbb5b90c73478aeca5c2a0542f0be2af  gcc/testsuite/gcc.target/i386/wrpku-1.c
+ 34ad5f77b44548399cce1e9609cec263  gcc/testsuite/gcc.target/i386/x86-64-v2-msabi.c
+ 13acc8ea17c92e8731e0d9d2d33eceea  gcc/testsuite/gcc.target/i386/x86-64-v2-other.c
+ b679282ab9dfe75cf42e11b37eb3e7d4  gcc/testsuite/gcc.target/i386/x86-64-v2.c
+ 21c15d27c801076d399832d96d1d06ec  gcc/testsuite/gcc.target/i386/x86-64-v3-haswell.c
+ f622be11d85f5b7705830e433f5e6aac  gcc/testsuite/gcc.target/i386/x86-64-v3-msabi.c
+ 8cd01f7d19b8a7dee4fc9174ccc2c063  gcc/testsuite/gcc.target/i386/x86-64-v3-other.c
+ 6aaac1de3e506e751f8beddeea58f456  gcc/testsuite/gcc.target/i386/x86-64-v3-skylake.c
+ 13d9ee9733818ff32fc6d82c69c1ced9  gcc/testsuite/gcc.target/i386/x86-64-v3.c
+ 7dfa926ab44bd6c1abee2c300351dc4d  gcc/testsuite/gcc.target/i386/x86-64-v4-msabi.c
+ 1a5e6a69168136dcdb1a4e6e1495ccac  gcc/testsuite/gcc.target/i386/x86-64-v4-other.c
+ c3b4c8bfdfdc7315973c64221ff65caf  gcc/testsuite/gcc.target/i386/x86-64-v4.c
+ 745fd40cb30f0b4a91e9bf21f348141d  gcc/testsuite/gcc.target/i386/x86-needed-1.c
+ 96b734de6eb2ea47555de580d9a37d21  gcc/testsuite/gcc.target/i386/x86-needed-2.c
+ 35735ea8c699397471a586d8d1adc3a1  gcc/testsuite/gcc.target/i386/x86-needed-3.c
+ 6460da38724b82cd5dce2376a5d471f6  gcc/testsuite/gcc.target/i386/x86gprintrin-1.c
+ 3ab7657accb84412e825209041081ff9  gcc/testsuite/gcc.target/i386/x86gprintrin-2.c
+ d9e1e2f002caa3340d4eb24a99830c34  gcc/testsuite/gcc.target/i386/x86gprintrin-3.c
+ 452335c544db8d7f430d13772aa5a4fb  gcc/testsuite/gcc.target/i386/x86gprintrin-4.c
+ 9400b7c473e2b608a3bcc607d5bdfb8e  gcc/testsuite/gcc.target/i386/x86gprintrin-4a.c
+ 102f6ba05a35ed9f47c443efea22c1f3  gcc/testsuite/gcc.target/i386/x86gprintrin-5.c
+ 928b2ab134391048e3dc1272d26b7f0a  gcc/testsuite/gcc.target/i386/x86gprintrin-5a.c
+ e620cb612e6e5e7d4d2148b916d23273  gcc/testsuite/gcc.target/i386/x86gprintrin-5b.c
+ cd5f15dc6f4513c2f0c6b7723c73a3cc  gcc/testsuite/gcc.target/i386/x86gprintrin-6.c
  e45be5b5dd5f8be0a75495bb33be0404  gcc/testsuite/gcc.target/i386/xchg-1.c
  b6d6abcfbd5245e5750e48d0e9518639  gcc/testsuite/gcc.target/i386/xchg-2.c
  bb9856cef755854e2f3eebc7fffd6629  gcc/testsuite/gcc.target/i386/xgetsetbv.c
*************** f9b1cdb0433ef7064bd1c61cb70fbb98  gcc/te
*** 60761,60766 ****
--- 64539,64576 ----
  7526bd093b536c4b62a2a718b487c3e3  gcc/testsuite/gcc.target/i386/xsaves-1.c
  d29a546e91cb2c29d0c4181a1d0bf029  gcc/testsuite/gcc.target/i386/xsaves64-1.c
  2b33ab73b2913b0e2f41e8e40b35c582  gcc/testsuite/gcc.target/i386/zee.c
+ ccd89cdfd8574cb92a2380ea8610e36d  gcc/testsuite/gcc.target/i386/zero-scratch-regs-1.c
+ 9bc3af9ce20206c7d70ba2b92e9a38d5  gcc/testsuite/gcc.target/i386/zero-scratch-regs-10.c
+ f6edf832011ee2bcc9cb8599745631a2  gcc/testsuite/gcc.target/i386/zero-scratch-regs-11.c
+ 377aef2617b3e54b81a10664c1a4f011  gcc/testsuite/gcc.target/i386/zero-scratch-regs-12.c
+ e360a1594269460443979aab1086c546  gcc/testsuite/gcc.target/i386/zero-scratch-regs-13.c
+ 0d43081f3a2c19e4acda8fb37b28b74a  gcc/testsuite/gcc.target/i386/zero-scratch-regs-14.c
+ 11d29f16f6f1cf20ab22f237f9ef5054  gcc/testsuite/gcc.target/i386/zero-scratch-regs-15.c
+ 86e2d7c8f1fdc9ece0dcc18057e734c8  gcc/testsuite/gcc.target/i386/zero-scratch-regs-16.c
+ 8b0e760acf235bfcf91f1a6c508c54df  gcc/testsuite/gcc.target/i386/zero-scratch-regs-17.c
+ 70644638653618b2cf37d7e270df7cc9  gcc/testsuite/gcc.target/i386/zero-scratch-regs-18.c
+ 634bc9f8790c34b13a94555596d63793  gcc/testsuite/gcc.target/i386/zero-scratch-regs-19.c
+ 3e24ced421af0e7083b0ba2ba1126cbb  gcc/testsuite/gcc.target/i386/zero-scratch-regs-2.c
+ 60cc9f696188a2cb9662989a963abb3a  gcc/testsuite/gcc.target/i386/zero-scratch-regs-20.c
+ ae2465acaa67981b1f9db664ba66b215  gcc/testsuite/gcc.target/i386/zero-scratch-regs-21.c
+ ec58478e3410c2cfdf4caf20cd193e45  gcc/testsuite/gcc.target/i386/zero-scratch-regs-22.c
+ bb8f994780f5208149eaaaf321159b73  gcc/testsuite/gcc.target/i386/zero-scratch-regs-23.c
+ edede09b1afb458f310c448a3a2ffa14  gcc/testsuite/gcc.target/i386/zero-scratch-regs-24.c
+ a7c92b064cd3dfa35552d030d9c88443  gcc/testsuite/gcc.target/i386/zero-scratch-regs-25.c
+ 8b3188eddf0c6025da16c21d609fe504  gcc/testsuite/gcc.target/i386/zero-scratch-regs-26.c
+ bb99510058d3acea81186ab9ff44c967  gcc/testsuite/gcc.target/i386/zero-scratch-regs-27.c
+ 2c914180b27b9d39191b19ad4912efe7  gcc/testsuite/gcc.target/i386/zero-scratch-regs-28.c
+ a0db901c2d58c6ec7373c71e5e9f5f96  gcc/testsuite/gcc.target/i386/zero-scratch-regs-29.c
+ ab5126d4988a6006a3080fe606738e8d  gcc/testsuite/gcc.target/i386/zero-scratch-regs-3.c
+ bc37db967928436168b8c1061133369a  gcc/testsuite/gcc.target/i386/zero-scratch-regs-30.c
+ e7d7d3c51cfe8dc0a336491296c53036  gcc/testsuite/gcc.target/i386/zero-scratch-regs-31.c
+ 66378b9cfd36021151804e3b9acaa10c  gcc/testsuite/gcc.target/i386/zero-scratch-regs-32.c
+ 50fd322246b281489b8fa52d8f5f61f4  gcc/testsuite/gcc.target/i386/zero-scratch-regs-4.c
+ 679061d42db8d05f6910156661c88636  gcc/testsuite/gcc.target/i386/zero-scratch-regs-5.c
+ 1c3ace2c0c644df8fd0480bf9027c1ea  gcc/testsuite/gcc.target/i386/zero-scratch-regs-6.c
+ 0322291ed263d0bcbf4365c9f2923225  gcc/testsuite/gcc.target/i386/zero-scratch-regs-7.c
+ c8cfd937be632996a527ce2873df1368  gcc/testsuite/gcc.target/i386/zero-scratch-regs-8.c
+ 7eb891e2209cd79e3b41fc54d2fea2c4  gcc/testsuite/gcc.target/i386/zero-scratch-regs-9.c
  09fb6852403bb7a0b9b3339c49e09efb  gcc/testsuite/gcc.target/ia64/20010423-1.c
  d42256aef37a73ae61dad2030303738b  gcc/testsuite/gcc.target/ia64/20020313-1.c
  80710ab442f553a1629beb106d8276a3  gcc/testsuite/gcc.target/ia64/20020326-1.c
*************** e50239a34975c5fbc852ce8f339c44ea  gcc/te
*** 60787,60793 ****
  de4e305b115a22fef774b1524552bf20  gcc/testsuite/gcc.target/ia64/fpreg-2.c
  25922243d19af1f913e65dbd4e5ffb31  gcc/testsuite/gcc.target/ia64/fptr-1.c
  08fa38ef5026e6de3937383461ad92f2  gcc/testsuite/gcc.target/ia64/got-1.c
! dc66a6bb0e46af576ad91e3ba7525eb9  gcc/testsuite/gcc.target/ia64/ia64.exp
  37ef53f75bdf314832e2e6e7f81c6c93  gcc/testsuite/gcc.target/ia64/mfused-madd-vect.c
  e8a414d98f9dcd1d545f9c542dda6671  gcc/testsuite/gcc.target/ia64/mfused-madd.c
  282dda375f4c7025c7ff2dee87894838  gcc/testsuite/gcc.target/ia64/mno-fused-madd-vect.c
--- 64597,64603 ----
  de4e305b115a22fef774b1524552bf20  gcc/testsuite/gcc.target/ia64/fpreg-2.c
  25922243d19af1f913e65dbd4e5ffb31  gcc/testsuite/gcc.target/ia64/fptr-1.c
  08fa38ef5026e6de3937383461ad92f2  gcc/testsuite/gcc.target/ia64/got-1.c
! 2cef6fd7390472473b0ddc38677cfa6e  gcc/testsuite/gcc.target/ia64/ia64.exp
  37ef53f75bdf314832e2e6e7f81c6c93  gcc/testsuite/gcc.target/ia64/mfused-madd-vect.c
  e8a414d98f9dcd1d545f9c542dda6671  gcc/testsuite/gcc.target/ia64/mfused-madd.c
  282dda375f4c7025c7ff2dee87894838  gcc/testsuite/gcc.target/ia64/mno-fused-madd-vect.c
*************** aa59fb938dc80d0bfebfc946cdbfbabf  gcc/te
*** 60826,60832 ****
  363ff108550fa02c923cccb0da681ab5  gcc/testsuite/gcc.target/m68k/interrupt_thread-1.c
  3c540acf2434a3c410d35013267ca79a  gcc/testsuite/gcc.target/m68k/interrupt_thread-2.c
  4183579970ae4f3d5815533efb1b3269  gcc/testsuite/gcc.target/m68k/interrupt_thread-3.c
! 2e189d16ed22345ababde1b4c6dc1de3  gcc/testsuite/gcc.target/m68k/m68k.exp
  22fc64de9c71e0dd6fc2ede8b6a4b336  gcc/testsuite/gcc.target/m68k/mulsi_highpart.c
  024e8f5fdf9b8d6bb2395e4e383e4712  gcc/testsuite/gcc.target/m68k/pic-1.c
  16f39f8e31f0f10521879907e696470d  gcc/testsuite/gcc.target/m68k/pr19201.c
--- 64636,64642 ----
  363ff108550fa02c923cccb0da681ab5  gcc/testsuite/gcc.target/m68k/interrupt_thread-1.c
  3c540acf2434a3c410d35013267ca79a  gcc/testsuite/gcc.target/m68k/interrupt_thread-2.c
  4183579970ae4f3d5815533efb1b3269  gcc/testsuite/gcc.target/m68k/interrupt_thread-3.c
! a73201309150303ab0e90c2f13bb4386  gcc/testsuite/gcc.target/m68k/m68k.exp
  22fc64de9c71e0dd6fc2ede8b6a4b336  gcc/testsuite/gcc.target/m68k/mulsi_highpart.c
  024e8f5fdf9b8d6bb2395e4e383e4712  gcc/testsuite/gcc.target/m68k/pic-1.c
  16f39f8e31f0f10521879907e696470d  gcc/testsuite/gcc.target/m68k/pr19201.c
*************** e143618b2c8e9f74a89e408849d5ea9e  gcc/te
*** 60883,60889 ****
  2086e2e1ebf0b6ad99cc2808f906bdaf  gcc/testsuite/gcc.target/microblaze/isa/nofloat.c
  7d11470d188b8ddbdb82b31ba91f41ff  gcc/testsuite/gcc.target/microblaze/isa/pcmp.c
  950feeef0cf00d66d2c89478821978e0  gcc/testsuite/gcc.target/microblaze/isa/vanilla.c
! 2f8b854d5b2573a946bfa12b990d915c  gcc/testsuite/gcc.target/microblaze/microblaze.exp
  9a329728496d062effbbdf4b7bde3f00  gcc/testsuite/gcc.target/microblaze/others/break_handler.c
  a498a396b1e4969560394c7d56f05fa5  gcc/testsuite/gcc.target/microblaze/others/builtin-trap.c
  821cbcd6a2563ff2997adb005fdd91af  gcc/testsuite/gcc.target/microblaze/others/data_var1.c
--- 64693,64699 ----
  2086e2e1ebf0b6ad99cc2808f906bdaf  gcc/testsuite/gcc.target/microblaze/isa/nofloat.c
  7d11470d188b8ddbdb82b31ba91f41ff  gcc/testsuite/gcc.target/microblaze/isa/pcmp.c
  950feeef0cf00d66d2c89478821978e0  gcc/testsuite/gcc.target/microblaze/isa/vanilla.c
! bc2e729e8001ce3b57f5ac7ee14415be  gcc/testsuite/gcc.target/microblaze/microblaze.exp
  9a329728496d062effbbdf4b7bde3f00  gcc/testsuite/gcc.target/microblaze/others/break_handler.c
  a498a396b1e4969560394c7d56f05fa5  gcc/testsuite/gcc.target/microblaze/others/builtin-trap.c
  821cbcd6a2563ff2997adb005fdd91af  gcc/testsuite/gcc.target/microblaze/others/data_var1.c
*************** adbd6732312a50af124b3abf5eb29b91  gcc/te
*** 60902,60908 ****
  f01f9d123d0e1faa0c9937cbd6958919  gcc/testsuite/gcc.target/microblaze/others/string_cst1_gpopt.c
  a6c6ca00cd5eb956442b04eaa868916b  gcc/testsuite/gcc.target/microblaze/others/string_cst2.c
  08bf3f03e178601cb585b0f7e3aee06d  gcc/testsuite/gcc.target/microblaze/others/string_cst2_gpopt.c
! 5c0e77ecb2c31ce41179eb4817c776b1  gcc/testsuite/gcc.target/microblaze/others/strings1.c
  4f19c63a96d7d49be59cbe0a11bcea78  gcc/testsuite/gcc.target/mips/20020620-1.c
  b7fbb0192241015ae978368c1da3760c  gcc/testsuite/gcc.target/mips/20140928.c
  211152e90846b5986fed0e30a16034ee  gcc/testsuite/gcc.target/mips/abi-eabi32-long32.c
--- 64712,64718 ----
  f01f9d123d0e1faa0c9937cbd6958919  gcc/testsuite/gcc.target/microblaze/others/string_cst1_gpopt.c
  a6c6ca00cd5eb956442b04eaa868916b  gcc/testsuite/gcc.target/microblaze/others/string_cst2.c
  08bf3f03e178601cb585b0f7e3aee06d  gcc/testsuite/gcc.target/microblaze/others/string_cst2_gpopt.c
! c78b56605672abd64b731edf9a9a67d9  gcc/testsuite/gcc.target/microblaze/others/strings1.c
  4f19c63a96d7d49be59cbe0a11bcea78  gcc/testsuite/gcc.target/mips/20020620-1.c
  b7fbb0192241015ae978368c1da3760c  gcc/testsuite/gcc.target/mips/20140928.c
  211152e90846b5986fed0e30a16034ee  gcc/testsuite/gcc.target/mips/abi-eabi32-long32.c
*************** cc9f6556f139a09d0fde4192c4bd5898  gcc/te
*** 60992,60999 ****
  b6598997f99e11ea5cde760f16bc51b8  gcc/testsuite/gcc.target/mips/call-saved-8.c
  5ef31c16124e446128af2ccfc80a1ceb  gcc/testsuite/gcc.target/mips/call-saved-9.c
  251d8644980f5886f8aeb79798fe635a  gcc/testsuite/gcc.target/mips/cfgcleanup-jalr1.c
! 848a10454fcc4968030b6fee3060abfe  gcc/testsuite/gcc.target/mips/cfgcleanup-jalr2.c
! ae780e823d07817d6b6704ba974cdd01  gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c
  0e811556243ef05a090351b71010af15  gcc/testsuite/gcc.target/mips/clear-cache-1.c
  10c7701a3904364c72d3dc09d3612abd  gcc/testsuite/gcc.target/mips/clear-cache-2.c
  44d569798a91e2c06f1ea5e924b754dc  gcc/testsuite/gcc.target/mips/code-readable-1.c
--- 64802,64809 ----
  b6598997f99e11ea5cde760f16bc51b8  gcc/testsuite/gcc.target/mips/call-saved-8.c
  5ef31c16124e446128af2ccfc80a1ceb  gcc/testsuite/gcc.target/mips/call-saved-9.c
  251d8644980f5886f8aeb79798fe635a  gcc/testsuite/gcc.target/mips/cfgcleanup-jalr1.c
! 36fa48d478ea5b5df27bfa51749b03bc  gcc/testsuite/gcc.target/mips/cfgcleanup-jalr2.c
! ddd414d2cdff7059cb5e0c601ad632cc  gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c
  0e811556243ef05a090351b71010af15  gcc/testsuite/gcc.target/mips/clear-cache-1.c
  10c7701a3904364c72d3dc09d3612abd  gcc/testsuite/gcc.target/mips/clear-cache-2.c
  44d569798a91e2c06f1ea5e924b754dc  gcc/testsuite/gcc.target/mips/code-readable-1.c
*************** ae780e823d07817d6b6704ba974cdd01  gcc/te
*** 61004,61011 ****
  d91cd5fe96893db5204874d9dfddfb40  gcc/testsuite/gcc.target/mips/compact-branches-2.c
  553c2949d5952ba5b080f920812388e3  gcc/testsuite/gcc.target/mips/compact-branches-3.c
  da097cd3c80cf4fbd482b2f848b60bba  gcc/testsuite/gcc.target/mips/compact-branches-4.c
! ca130ef6721d7c22e10768eac7701dd1  gcc/testsuite/gcc.target/mips/compact-branches-5.c
! 4efe984bffc66a526e4457492eda5212  gcc/testsuite/gcc.target/mips/compact-branches-6.c
  49dd404799cdc2b1a924fc6163a1b359  gcc/testsuite/gcc.target/mips/compact-branches-7.c
  ca56634a2eac89dd69e61b0be079e31d  gcc/testsuite/gcc.target/mips/const-anchor-1.c
  d70897fb103953773b6a45dd5328c664  gcc/testsuite/gcc.target/mips/const-anchor-2.c
--- 64814,64821 ----
  d91cd5fe96893db5204874d9dfddfb40  gcc/testsuite/gcc.target/mips/compact-branches-2.c
  553c2949d5952ba5b080f920812388e3  gcc/testsuite/gcc.target/mips/compact-branches-3.c
  da097cd3c80cf4fbd482b2f848b60bba  gcc/testsuite/gcc.target/mips/compact-branches-4.c
! a87d05b60c37cfe8fabcb9ab19481f58  gcc/testsuite/gcc.target/mips/compact-branches-5.c
! b02808348a9a00d345beb525938d52c3  gcc/testsuite/gcc.target/mips/compact-branches-6.c
  49dd404799cdc2b1a924fc6163a1b359  gcc/testsuite/gcc.target/mips/compact-branches-7.c
  ca56634a2eac89dd69e61b0be079e31d  gcc/testsuite/gcc.target/mips/const-anchor-1.c
  d70897fb103953773b6a45dd5328c664  gcc/testsuite/gcc.target/mips/const-anchor-2.c
*************** e7490a676f50b43dff9fbe84ff3bd95e  gcc/te
*** 61133,61139 ****
  c81aee9c49e6f97c3c8859ac412e9a1a  gcc/testsuite/gcc.target/mips/insn-tablejump.c
  89a4ef1858913bac4051ca04ba4ebdea  gcc/testsuite/gcc.target/mips/int-moves-1.c
  1c97317ecf082e15cdf77755e9fcebbb  gcc/testsuite/gcc.target/mips/int-moves-2.c
! 9d8539bb952d74b5c3fa507cef4878e8  gcc/testsuite/gcc.target/mips/inter/mips16-inter.exp
  41a97b2d305c2755e145a924168d4527  gcc/testsuite/gcc.target/mips/inter/mips16_stubs_1_main.c
  d231e6bcd981687f765ebf5b64bfe33d  gcc/testsuite/gcc.target/mips/inter/mips16_stubs_1_x.c
  1b5e8db99dca8d400407b92203490cd8  gcc/testsuite/gcc.target/mips/inter/mips16_stubs_1_y.c
--- 64943,64949 ----
  c81aee9c49e6f97c3c8859ac412e9a1a  gcc/testsuite/gcc.target/mips/insn-tablejump.c
  89a4ef1858913bac4051ca04ba4ebdea  gcc/testsuite/gcc.target/mips/int-moves-1.c
  1c97317ecf082e15cdf77755e9fcebbb  gcc/testsuite/gcc.target/mips/int-moves-2.c
! 91ccfe7e4b7d9e51426ff478f87b5709  gcc/testsuite/gcc.target/mips/inter/mips16-inter.exp
  41a97b2d305c2755e145a924168d4527  gcc/testsuite/gcc.target/mips/inter/mips16_stubs_1_main.c
  d231e6bcd981687f765ebf5b64bfe33d  gcc/testsuite/gcc.target/mips/inter/mips16_stubs_1_x.c
  1b5e8db99dca8d400407b92203490cd8  gcc/testsuite/gcc.target/mips/inter/mips16_stubs_1_y.c
*************** e29cf040ff47381ec220169736b7446a  gcc/te
*** 61182,61188 ****
  0c68f22b9635571f990298a5dd303133  gcc/testsuite/gcc.target/mips/mips-3d-8.c
  3f1d2771ce47e4d32f5b8afd4beb82d3  gcc/testsuite/gcc.target/mips/mips-3d-9.c
  375a28f0b3d06b2fad9a483c26ea4000  gcc/testsuite/gcc.target/mips/mips-builtins-pure.c
! baf11ee2ea9300e9c85aa923064e0b58  gcc/testsuite/gcc.target/mips/mips-nonpic/README
  0e86fc6b72b862d940296b6decd5d983  gcc/testsuite/gcc.target/mips/mips-nonpic/main-1.c
  84eb9316a2c541350e627b08dd891336  gcc/testsuite/gcc.target/mips/mips-nonpic/main-10.c
  b1a835baf5477fd4c7927dfd57b3c53b  gcc/testsuite/gcc.target/mips/mips-nonpic/main-11.c
--- 64992,64998 ----
  0c68f22b9635571f990298a5dd303133  gcc/testsuite/gcc.target/mips/mips-3d-8.c
  3f1d2771ce47e4d32f5b8afd4beb82d3  gcc/testsuite/gcc.target/mips/mips-3d-9.c
  375a28f0b3d06b2fad9a483c26ea4000  gcc/testsuite/gcc.target/mips/mips-builtins-pure.c
! 07e8de6514775dec6e2257c7ea0d5d4f  gcc/testsuite/gcc.target/mips/mips-nonpic/README
  0e86fc6b72b862d940296b6decd5d983  gcc/testsuite/gcc.target/mips/mips-nonpic/main-1.c
  84eb9316a2c541350e627b08dd891336  gcc/testsuite/gcc.target/mips/mips-nonpic/main-10.c
  b1a835baf5477fd4c7927dfd57b3c53b  gcc/testsuite/gcc.target/mips/mips-nonpic/main-11.c
*************** f7db832be6c1f33d30392dc4571ec31a  gcc/te
*** 61199,61205 ****
  f3d83fe630c8754c36f040556d8ac908  gcc/testsuite/gcc.target/mips/mips-nonpic/main-7.c
  6df45c093b1debb44ab59e19680afe1a  gcc/testsuite/gcc.target/mips/mips-nonpic/main-8.c
  1c8aaab2d02d475708358405e698cef3  gcc/testsuite/gcc.target/mips/mips-nonpic/main-9.c
! e2d79024bd002135e3e4c2def202fb28  gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.exp
  019e2bb848027bcd4216983c967f3950  gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.h
  1e01424d10b7a1e8927d5a1f53724f45  gcc/testsuite/gcc.target/mips/mips-nonpic/nonpic-addr-call.c
  8dd8657a8c441d55f4fa03d7b3eb5ea8  gcc/testsuite/gcc.target/mips/mips-nonpic/nonpic-addr.c
--- 65009,65015 ----
  f3d83fe630c8754c36f040556d8ac908  gcc/testsuite/gcc.target/mips/mips-nonpic/main-7.c
  6df45c093b1debb44ab59e19680afe1a  gcc/testsuite/gcc.target/mips/mips-nonpic/main-8.c
  1c8aaab2d02d475708358405e698cef3  gcc/testsuite/gcc.target/mips/mips-nonpic/main-9.c
! 7be76ffa5458cf895e945ee32bc006f4  gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.exp
  019e2bb848027bcd4216983c967f3950  gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.h
  1e01424d10b7a1e8927d5a1f53724f45  gcc/testsuite/gcc.target/mips/mips-nonpic/nonpic-addr-call.c
  8dd8657a8c441d55f4fa03d7b3eb5ea8  gcc/testsuite/gcc.target/mips/mips-nonpic/nonpic-addr.c
*************** a85a02c19fa964f6a465de8a4f8929ee  gcc/te
*** 61222,61228 ****
  9a29c67ce03ecfddfabb4df18f2ea5d0  gcc/testsuite/gcc.target/mips/mips-ps-type-2.c
  e166ce4f43ccc2c62b14cf1987cc44c9  gcc/testsuite/gcc.target/mips/mips-ps-type.c
  1da4a0d69d85dcc79c371471a1e1519e  gcc/testsuite/gcc.target/mips/mips-sched-madd.c
! 5fbf115adc0f017ed1f30ee3adfce977  gcc/testsuite/gcc.target/mips/mips.exp
  b48e1f7713d9377ade65ca3353e3aadd  gcc/testsuite/gcc.target/mips/mips16-attributes-2.c
  ec0fc4cda7ea3307bf321757f0f6ab8b  gcc/testsuite/gcc.target/mips/mips16-attributes-3.c
  6de1fc03c068d128a6bcc28a79510784  gcc/testsuite/gcc.target/mips/mips16-attributes-4.c
--- 65032,65038 ----
  9a29c67ce03ecfddfabb4df18f2ea5d0  gcc/testsuite/gcc.target/mips/mips-ps-type-2.c
  e166ce4f43ccc2c62b14cf1987cc44c9  gcc/testsuite/gcc.target/mips/mips-ps-type.c
  1da4a0d69d85dcc79c371471a1e1519e  gcc/testsuite/gcc.target/mips/mips-sched-madd.c
! 98f6a9b62063d9604e894efe3f35a646  gcc/testsuite/gcc.target/mips/mips.exp
  b48e1f7713d9377ade65ca3353e3aadd  gcc/testsuite/gcc.target/mips/mips16-attributes-2.c
  ec0fc4cda7ea3307bf321757f0f6ab8b  gcc/testsuite/gcc.target/mips/mips16-attributes-3.c
  6de1fc03c068d128a6bcc28a79510784  gcc/testsuite/gcc.target/mips/mips16-attributes-4.c
*************** dad4d404aea0c78820d07b70cdb4a798  gcc/te
*** 61485,61495 ****
  48f200c43fab7d67a5ee8d4fd8af91a5  gcc/testsuite/gcc.target/mips/vr-mult-1.c
  bdbe1b2e833e8da48eee27859726180e  gcc/testsuite/gcc.target/mips/vr-mult-2.c
  3ec2a63f9573f652ac209afae65a0770  gcc/testsuite/gcc.target/mips/wrap-delay.c
  fa5c22f6671af3e43fcfec3ce3d4585a  gcc/testsuite/gcc.target/msp430/430x-insns.c
  43aa1a66b3a1c3d3fcd2c539b6b799e4  gcc/testsuite/gcc.target/msp430/asm-register-names-lower-case.c
  2625dcd06dc4a71e7a5d16c33b443a42  gcc/testsuite/gcc.target/msp430/asm-register-names-upper-case.c
  9384388175ea783fa378127792ce4126  gcc/testsuite/gcc.target/msp430/critical-interrupt.c
! 350170592ffd7e9ff4793caccd69b4f2  gcc/testsuite/gcc.target/msp430/data-attributes-2.c
  03cb35d1e8733ad8b9d559261f0bed4b  gcc/testsuite/gcc.target/msp430/data-attributes.c
  b5acccce3b7b3d6a8976dc7e5284c1b4  gcc/testsuite/gcc.target/msp430/devices-main.c
  5f9088c8c44ebf0e04514ff88c12c69e  gcc/testsuite/gcc.target/msp430/devices/README
--- 65295,65306 ----
  48f200c43fab7d67a5ee8d4fd8af91a5  gcc/testsuite/gcc.target/mips/vr-mult-1.c
  bdbe1b2e833e8da48eee27859726180e  gcc/testsuite/gcc.target/mips/vr-mult-2.c
  3ec2a63f9573f652ac209afae65a0770  gcc/testsuite/gcc.target/mips/wrap-delay.c
+ 235b3b0b968ad1c186db280d0ec67188  gcc/testsuite/gcc.target/msp430/430x-default-isa.c
  fa5c22f6671af3e43fcfec3ce3d4585a  gcc/testsuite/gcc.target/msp430/430x-insns.c
  43aa1a66b3a1c3d3fcd2c539b6b799e4  gcc/testsuite/gcc.target/msp430/asm-register-names-lower-case.c
  2625dcd06dc4a71e7a5d16c33b443a42  gcc/testsuite/gcc.target/msp430/asm-register-names-upper-case.c
  9384388175ea783fa378127792ce4126  gcc/testsuite/gcc.target/msp430/critical-interrupt.c
! 8d9c47b917b30a2a3da0cea24f15a591  gcc/testsuite/gcc.target/msp430/data-attributes-2.c
  03cb35d1e8733ad8b9d559261f0bed4b  gcc/testsuite/gcc.target/msp430/data-attributes.c
  b5acccce3b7b3d6a8976dc7e5284c1b4  gcc/testsuite/gcc.target/msp430/devices-main.c
  5f9088c8c44ebf0e04514ff88c12c69e  gcc/testsuite/gcc.target/msp430/devices/README
*************** f6acca24805da76e2db6fd2d743f5a29  gcc/te
*** 61536,61542 ****
  b892942ca981c20510176fadf5f7ac9c  gcc/testsuite/gcc.target/msp430/devices/msp430-devices.h
  12338d336c3a38f3ca22b3b59471d887  gcc/testsuite/gcc.target/msp430/emulate-slli.c
  92c8f926f19296062f0486e64a0a7ab2  gcc/testsuite/gcc.target/msp430/emulate-srai.c
! cb5956c7946b1eb22c9c9ff40fa6aac2  gcc/testsuite/gcc.target/msp430/emulate-srli.c
  66f943bd7175798afaf0074969086758  gcc/testsuite/gcc.target/msp430/function-attributes-1.c
  ce1ce04665fe9006445fc744101735c0  gcc/testsuite/gcc.target/msp430/function-attributes-2.c
  39abb860c2edb7183378fe98cf264482  gcc/testsuite/gcc.target/msp430/function-attributes-3.c
--- 65347,65353 ----
  b892942ca981c20510176fadf5f7ac9c  gcc/testsuite/gcc.target/msp430/devices/msp430-devices.h
  12338d336c3a38f3ca22b3b59471d887  gcc/testsuite/gcc.target/msp430/emulate-slli.c
  92c8f926f19296062f0486e64a0a7ab2  gcc/testsuite/gcc.target/msp430/emulate-srai.c
! 06b74bb0afe9d680ebfe38d345ea5f5b  gcc/testsuite/gcc.target/msp430/emulate-srli.c
  66f943bd7175798afaf0074969086758  gcc/testsuite/gcc.target/msp430/function-attributes-1.c
  ce1ce04665fe9006445fc744101735c0  gcc/testsuite/gcc.target/msp430/function-attributes-2.c
  39abb860c2edb7183378fe98cf264482  gcc/testsuite/gcc.target/msp430/function-attributes-3.c
*************** e424269a90525b10278186745c09db29  gcc/te
*** 61547,61555 ****
  fa7759f163c556f70c09880d8866f0f2  gcc/testsuite/gcc.target/msp430/isr-push-pop-leaf-isr-430.c
  1a37d504c2891ab939147814a2d287c4  gcc/testsuite/gcc.target/msp430/isr-push-pop-leaf-isr-430x.c
  bcd5b94c1a73ebb97ad799a463abe74b  gcc/testsuite/gcc.target/msp430/isr-push-pop-main.c
  e7e107ec835c73626fadb6558d4cd699  gcc/testsuite/gcc.target/msp430/mlarge-pedwarns.c
  68a7d21ba011cdccee863c1757c35ab8  gcc/testsuite/gcc.target/msp430/mlarge-use-430-insn.c
! 107e3efd3b87593c604cc7bc4d847cc2  gcc/testsuite/gcc.target/msp430/msp430.exp
  9a9833f7a9115cf97f061eb7c068bbb7  gcc/testsuite/gcc.target/msp430/msp430.h
  e96192907f9fd6f32abdb4b2f8c43e7a  gcc/testsuite/gcc.target/msp430/msp430f-device-symbol.c
  4ff245af8aceb3c9dc91c199e31b7af0  gcc/testsuite/gcc.target/msp430/msp430i-device-symbol.c
--- 65358,65372 ----
  fa7759f163c556f70c09880d8866f0f2  gcc/testsuite/gcc.target/msp430/isr-push-pop-leaf-isr-430.c
  1a37d504c2891ab939147814a2d287c4  gcc/testsuite/gcc.target/msp430/isr-push-pop-leaf-isr-430x.c
  bcd5b94c1a73ebb97ad799a463abe74b  gcc/testsuite/gcc.target/msp430/isr-push-pop-main.c
+ b4b2e2bc0ce5f1cd6436da8c3f334e80  gcc/testsuite/gcc.target/msp430/max-inline-shift-430-no-opt.c
+ fc93fe215ef1e1029c46ebdac247ef3d  gcc/testsuite/gcc.target/msp430/max-inline-shift-430.c
+ e8ccb7e6be9b4a5a6ee6f2e94fc961da  gcc/testsuite/gcc.target/msp430/max-inline-shift-430x.c
+ 018cdd2b783f23a2c3a6dd65086aca1b  gcc/testsuite/gcc.target/msp430/mcpu-is-430.c
+ 1ae03e8cc2f32ba28b6ecaaaa1b71f92  gcc/testsuite/gcc.target/msp430/mcpu-is-430x.c
+ 27128b7463fae2c76e78b92abb781315  gcc/testsuite/gcc.target/msp430/mcpu-is-430xv2.c
  e7e107ec835c73626fadb6558d4cd699  gcc/testsuite/gcc.target/msp430/mlarge-pedwarns.c
  68a7d21ba011cdccee863c1757c35ab8  gcc/testsuite/gcc.target/msp430/mlarge-use-430-insn.c
! 72d3500e39500329f9bdc9cea24a6ca2  gcc/testsuite/gcc.target/msp430/msp430.exp
  9a9833f7a9115cf97f061eb7c068bbb7  gcc/testsuite/gcc.target/msp430/msp430.h
  e96192907f9fd6f32abdb4b2f8c43e7a  gcc/testsuite/gcc.target/msp430/msp430f-device-symbol.c
  4ff245af8aceb3c9dc91c199e31b7af0  gcc/testsuite/gcc.target/msp430/msp430i-device-symbol.c
*************** e300d7767bb8aa772f10450a6743918d  gcc/te
*** 61567,61574 ****
  d712d34b026abcfc365a5b6338476dd9  gcc/testsuite/gcc.target/msp430/object-attributes-default.c
  171c1a677bd1290ccc3288f4664d3e66  gcc/testsuite/gcc.target/msp430/object-attributes-mlarge-any-region.c
  109ae4a55e5dfab66d8476ba095ad004  gcc/testsuite/gcc.target/msp430/object-attributes-mlarge.c
! f33b9258b0c5c09e70c8d30ee1577b6e  gcc/testsuite/gcc.target/msp430/operand-modifiers.c
! 3b828d8e553a6ef9d9b3e0a0f21e17e0  gcc/testsuite/gcc.target/msp430/pr78818-auto-warn.c
  d1fa64363b98d0dfc99c64fd81ba4fc3  gcc/testsuite/gcc.target/msp430/pr78818-auto.c
  784d92d564f0bee117e17ba2a57bb1cd  gcc/testsuite/gcc.target/msp430/pr78818-data-region.c
  47bfdff17f0571d8dd44d7038380aed5  gcc/testsuite/gcc.target/msp430/pr78818-data-sec.c
--- 65384,65392 ----
  d712d34b026abcfc365a5b6338476dd9  gcc/testsuite/gcc.target/msp430/object-attributes-default.c
  171c1a677bd1290ccc3288f4664d3e66  gcc/testsuite/gcc.target/msp430/object-attributes-mlarge-any-region.c
  109ae4a55e5dfab66d8476ba095ad004  gcc/testsuite/gcc.target/msp430/object-attributes-mlarge.c
! 8d919bcaad39d82b6a23b9f4daf56fd8  gcc/testsuite/gcc.target/msp430/operand-modifiers-bad.c
! 48d1d1ea800d83cf73bf9dbc85a6256a  gcc/testsuite/gcc.target/msp430/operand-modifiers.c
! f9107692d2eecff159bcb8db7fcd710e  gcc/testsuite/gcc.target/msp430/pr78818-auto-warn.c
  d1fa64363b98d0dfc99c64fd81ba4fc3  gcc/testsuite/gcc.target/msp430/pr78818-auto.c
  784d92d564f0bee117e17ba2a57bb1cd  gcc/testsuite/gcc.target/msp430/pr78818-data-region.c
  47bfdff17f0571d8dd44d7038380aed5  gcc/testsuite/gcc.target/msp430/pr78818-data-sec.c
*************** d1fa64363b98d0dfc99c64fd81ba4fc3  gcc/te
*** 61578,61587 ****
  39a1ebb6f966a3b25fba9725fb2b40b3  gcc/testsuite/gcc.target/msp430/pr80993.c
  69500889eed192041fd9a134ef51dcc8  gcc/testsuite/gcc.target/msp430/pr86662.c
  793308c05b3cd41087c641de34946830  gcc/testsuite/gcc.target/msp430/pr87691.c
! d1c34b11338a3c32fa83a80fb3677666  gcc/testsuite/gcc.target/msp430/region-attribute-misuse.c
  67d5fefdb7b360f62350515543133c7c  gcc/testsuite/gcc.target/msp430/region-misuse-code-data.c
  c3e40a9f60eb8aa4b86d4cf27a15b785  gcc/testsuite/gcc.target/msp430/region-misuse-code.c
  45da37a1ac7f06accf473114d736dc42  gcc/testsuite/gcc.target/msp430/region-misuse-data.c
  cf9bc0db560facab526cdb652e694b19  gcc/testsuite/gcc.target/msp430/size-optimized-shifts.c
  6847d9a3332222d5dd957c83ca9b03b5  gcc/testsuite/gcc.target/msp430/special-regs.c
  32c73d6519d6f2b461d7261a3c2055f5  gcc/testsuite/gcc.target/msp430/static-interrupts.c
--- 65396,65409 ----
  39a1ebb6f966a3b25fba9725fb2b40b3  gcc/testsuite/gcc.target/msp430/pr80993.c
  69500889eed192041fd9a134ef51dcc8  gcc/testsuite/gcc.target/msp430/pr86662.c
  793308c05b3cd41087c641de34946830  gcc/testsuite/gcc.target/msp430/pr87691.c
! f07eb78f12fc7d18beb8af8dcc60638f  gcc/testsuite/gcc.target/msp430/region-attribute-misuse.c
  67d5fefdb7b360f62350515543133c7c  gcc/testsuite/gcc.target/msp430/region-misuse-code-data.c
  c3e40a9f60eb8aa4b86d4cf27a15b785  gcc/testsuite/gcc.target/msp430/region-misuse-code.c
  45da37a1ac7f06accf473114d736dc42  gcc/testsuite/gcc.target/msp430/region-misuse-data.c
+ 3d3ac7e3a273b73bdd4a80d049003539  gcc/testsuite/gcc.target/msp430/rtx-cost-O3-default.c
+ a38e754b9c971ac57877efa11943f98c  gcc/testsuite/gcc.target/msp430/rtx-cost-O3-f5series.c
+ b0be20f98de56014c8c76afb5136d82b  gcc/testsuite/gcc.target/msp430/rtx-cost-Os-default.c
+ 7a4d950681e3b84e7fed075d26a207fd  gcc/testsuite/gcc.target/msp430/rtx-cost-Os-f5series.c
  cf9bc0db560facab526cdb652e694b19  gcc/testsuite/gcc.target/msp430/size-optimized-shifts.c
  6847d9a3332222d5dd957c83ca9b03b5  gcc/testsuite/gcc.target/msp430/special-regs.c
  32c73d6519d6f2b461d7261a3c2055f5  gcc/testsuite/gcc.target/msp430/static-interrupts.c
*************** a76e9bdd8dd768b474700a1307ac151c  gcc/te
*** 61593,61599 ****
  15f6a34c31bfccfa2f37f50fbedaa686  gcc/testsuite/gcc.target/nds32/builtin-mfusr-mtusr.c
  2a347ba3731aa3fa17024e865968c3b8  gcc/testsuite/gcc.target/nds32/builtin-setgie-dis.c
  ddaca84e0c321fa88f3cedb3bac1bae5  gcc/testsuite/gcc.target/nds32/builtin-setgie-en.c
! d2fb4f02eb12d7e7752916ec9935322a  gcc/testsuite/gcc.target/nds32/nds32.exp
  267d1f508341cb93b318d1a249e34c19  gcc/testsuite/gcc.target/nios2/andci.c
  b6812a3a7ba3a86a41e0fdc982390c97  gcc/testsuite/gcc.target/nios2/biggot-1.c
  cdbcb03e5a340d5566b6e43e17797f5e  gcc/testsuite/gcc.target/nios2/biggot-2.c
--- 65415,65421 ----
  15f6a34c31bfccfa2f37f50fbedaa686  gcc/testsuite/gcc.target/nds32/builtin-mfusr-mtusr.c
  2a347ba3731aa3fa17024e865968c3b8  gcc/testsuite/gcc.target/nds32/builtin-setgie-dis.c
  ddaca84e0c321fa88f3cedb3bac1bae5  gcc/testsuite/gcc.target/nds32/builtin-setgie-en.c
! 8b054e998618281575d86d9a66f4ff3c  gcc/testsuite/gcc.target/nds32/nds32.exp
  267d1f508341cb93b318d1a249e34c19  gcc/testsuite/gcc.target/nios2/andci.c
  b6812a3a7ba3a86a41e0fdc982390c97  gcc/testsuite/gcc.target/nios2/biggot-1.c
  cdbcb03e5a340d5566b6e43e17797f5e  gcc/testsuite/gcc.target/nios2/biggot-2.c
*************** a87061df79ea1df98b37173a67798115  gcc/te
*** 61667,61673 ****
  6dbe531363c65af94c9d1cf19e943696  gcc/testsuite/gcc.target/nios2/nios2-wrctl-not-zero.c
  758d14c9a54781c627955ab573f81558  gcc/testsuite/gcc.target/nios2/nios2-wrctl-zero.c
  84c9378417e6cb2069a618430a13661c  gcc/testsuite/gcc.target/nios2/nios2-wrctl.c
! c67465952f318f28956d8f6c2d12b8c6  gcc/testsuite/gcc.target/nios2/nios2.exp
  5738a626d052d93dbea37d4d0144d7b8  gcc/testsuite/gcc.target/nios2/pr87079-1.c
  efa2a47188c46b5407f22a2a066118c8  gcc/testsuite/gcc.target/nios2/pr87079-2.c
  b267f28fe7ecd61569a0c578100b7bea  gcc/testsuite/gcc.target/nios2/pr92499-1.c
--- 65489,65495 ----
  6dbe531363c65af94c9d1cf19e943696  gcc/testsuite/gcc.target/nios2/nios2-wrctl-not-zero.c
  758d14c9a54781c627955ab573f81558  gcc/testsuite/gcc.target/nios2/nios2-wrctl-zero.c
  84c9378417e6cb2069a618430a13661c  gcc/testsuite/gcc.target/nios2/nios2-wrctl.c
! f22ee9e7bfcfb0b28b402a17874abcc0  gcc/testsuite/gcc.target/nios2/nios2.exp
  5738a626d052d93dbea37d4d0144d7b8  gcc/testsuite/gcc.target/nios2/pr87079-1.c
  efa2a47188c46b5407f22a2a066118c8  gcc/testsuite/gcc.target/nios2/pr87079-2.c
  b267f28fe7ecd61569a0c578100b7bea  gcc/testsuite/gcc.target/nios2/pr92499-1.c
*************** da5463224c767fe4525ff97ea55cf59b  gcc/te
*** 61698,61715 ****
  9a34d9a28d10c98b31d63c9cf7a875c9  gcc/testsuite/gcc.target/nvptx/ary-init.c
  0b642c5c4d6e3d304e2646774c484f47  gcc/testsuite/gcc.target/nvptx/atomic_fetch-1.c
  18315b3555b3e28a1fd97f4d21e6c15d  gcc/testsuite/gcc.target/nvptx/atomic_fetch-2.c
! e1bbdf4a4c1dc22990e7d58f638624f9  gcc/testsuite/gcc.target/nvptx/atomic_fetch-3.c
  cf91ca14cafbda331f4d85cb59c361c2  gcc/testsuite/gcc.target/nvptx/decl-init.c
  ce8d3cdf413d2ecd740f727aa605f41d  gcc/testsuite/gcc.target/nvptx/decl-shared-init.c
  ee7a219079a9befc9911075c0ddf6ec4  gcc/testsuite/gcc.target/nvptx/decl-shared.c
  b5bc7203f9caebe44d835739cd6150f6  gcc/testsuite/gcc.target/nvptx/decl.c
  dd4edeaa5bae2549fa0790bb949f2a76  gcc/testsuite/gcc.target/nvptx/indirect_call.c
  11c15ebae0aa72ac866acc469a870111  gcc/testsuite/gcc.target/nvptx/label-values.c
! a2b57c4821ce1be8e96881556e912723  gcc/testsuite/gcc.target/nvptx/nvptx.exp
  97135e11860bc0316757d03f9f9eab37  gcc/testsuite/gcc.target/nvptx/patchable_function_entry-default.c
  ee10a595a6c816802a83d13637d1f4ce  gcc/testsuite/gcc.target/nvptx/pr85056.c
  85d991e87550d6e0750de2b4f0ef4e8d  gcc/testsuite/gcc.target/nvptx/pr85056a.c
  0851aa76429cdec3f332dcfc7d32f6f4  gcc/testsuite/gcc.target/nvptx/proto-1.c
  b6dd5ea026f06ffb6e299fe2a4b5b9a0  gcc/testsuite/gcc.target/nvptx/sincos.c
  a8dae85200a181f350c733049b638786  gcc/testsuite/gcc.target/nvptx/slp-2-run.c
  6c880ba8892ad33b326cb50bbafd9956  gcc/testsuite/gcc.target/nvptx/slp-2.c
--- 65520,65550 ----
  9a34d9a28d10c98b31d63c9cf7a875c9  gcc/testsuite/gcc.target/nvptx/ary-init.c
  0b642c5c4d6e3d304e2646774c484f47  gcc/testsuite/gcc.target/nvptx/atomic_fetch-1.c
  18315b3555b3e28a1fd97f4d21e6c15d  gcc/testsuite/gcc.target/nvptx/atomic_fetch-2.c
! 246cf8f97d24ca211fbf44806e414291  gcc/testsuite/gcc.target/nvptx/cvt.c
  cf91ca14cafbda331f4d85cb59c361c2  gcc/testsuite/gcc.target/nvptx/decl-init.c
  ce8d3cdf413d2ecd740f727aa605f41d  gcc/testsuite/gcc.target/nvptx/decl-shared-init.c
  ee7a219079a9befc9911075c0ddf6ec4  gcc/testsuite/gcc.target/nvptx/decl-shared.c
  b5bc7203f9caebe44d835739cd6150f6  gcc/testsuite/gcc.target/nvptx/decl.c
+ 0da16581eda6b5b973a42a8e4f0906da  gcc/testsuite/gcc.target/nvptx/ia64-sync-1.c
+ 0913e46988488b317c1fbe1c2e8c388e  gcc/testsuite/gcc.target/nvptx/ia64-sync-2.c
+ 4081396374a4cc18e8e00fecf4129b00  gcc/testsuite/gcc.target/nvptx/ia64-sync-3.c
+ d02501ebe3bca7d0c11fa4d5d253ee7f  gcc/testsuite/gcc.target/nvptx/ia64-sync-4.c
+ 2603f535e125be3ab18c3e06e7969e0b  gcc/testsuite/gcc.target/nvptx/ia64-sync-5.c
  dd4edeaa5bae2549fa0790bb949f2a76  gcc/testsuite/gcc.target/nvptx/indirect_call.c
+ 3d0ce3ed482e5d4711c9c7d3499efa2a  gcc/testsuite/gcc.target/nvptx/int128.c
  11c15ebae0aa72ac866acc469a870111  gcc/testsuite/gcc.target/nvptx/label-values.c
! 35a1b298a71dc900deb20b7aee0269e8  gcc/testsuite/gcc.target/nvptx/mul-hi.c
! 46842942450b2228182a8a02cdfd0bad  gcc/testsuite/gcc.target/nvptx/mul-wide.c
! f3708e6dc9d403322f68a780306b6112  gcc/testsuite/gcc.target/nvptx/nvptx.exp
  97135e11860bc0316757d03f9f9eab37  gcc/testsuite/gcc.target/nvptx/patchable_function_entry-default.c
+ a935421e20c83d40eb47ae736d5b5859  gcc/testsuite/gcc.target/nvptx/popc-1.c
+ c8bd1e5a7d975c41c97fb76577695e6e  gcc/testsuite/gcc.target/nvptx/popc-2.c
+ f00794180613c46aff512b5d000d751e  gcc/testsuite/gcc.target/nvptx/popc-3.c
  ee10a595a6c816802a83d13637d1f4ce  gcc/testsuite/gcc.target/nvptx/pr85056.c
  85d991e87550d6e0750de2b4f0ef4e8d  gcc/testsuite/gcc.target/nvptx/pr85056a.c
  0851aa76429cdec3f332dcfc7d32f6f4  gcc/testsuite/gcc.target/nvptx/proto-1.c
+ 825b4ce2e5e98545b5117326450c5661  gcc/testsuite/gcc.target/nvptx/recip-1.c
+ 540b209721087ca62d31666d0977f821  gcc/testsuite/gcc.target/nvptx/shift16.c
  b6dd5ea026f06ffb6e299fe2a4b5b9a0  gcc/testsuite/gcc.target/nvptx/sincos.c
  a8dae85200a181f350c733049b638786  gcc/testsuite/gcc.target/nvptx/slp-2-run.c
  6c880ba8892ad33b326cb50bbafd9956  gcc/testsuite/gcc.target/nvptx/slp-2.c
*************** a8dae85200a181f350c733049b638786  gcc/te
*** 61717,61729 ****
  44ad908a69e43269647b72a114715eda  gcc/testsuite/gcc.target/nvptx/slp.c
  741e8b3981b97dba04d2d0ab288e2aca  gcc/testsuite/gcc.target/nvptx/softstack.c
  b229365c916139aa5854fd2d40028c0a  gcc/testsuite/gcc.target/nvptx/trailing-init.c
  c65e9b178b981b800a00ac82aa9741cf  gcc/testsuite/gcc.target/nvptx/uninit-decl.c
  0c3dd4b3664aa3f42dca7bc49ab4dc53  gcc/testsuite/gcc.target/nvptx/unsigned-cmp.c
  b7ab80fc6f20db555ea318163f54bb1c  gcc/testsuite/gcc.target/nvptx/v2di.c
! 89695cac6e702fc77f1fa316c5b4f6e0  gcc/testsuite/gcc.target/nvptx/v2si-cvt.c
  0c4a4bc6ef9c71916872f453d51c62af  gcc/testsuite/gcc.target/nvptx/v2si-run.c
  1d2fc2d3442fe9ae6206e3c12fc9f466  gcc/testsuite/gcc.target/nvptx/v2si.c
  34535704dd43f77717636b4495978894  gcc/testsuite/gcc.target/nvptx/vec.inc
  ba248cc080b98b0f2298851bf5ff50ee  gcc/testsuite/gcc.target/nvptx/weak.c
  cee646afb17baca3bd611110a0d24362  gcc/testsuite/gcc.target/or1k/args-1.c
  d59f1ded63c010f7c70d8914ff035369  gcc/testsuite/gcc.target/or1k/args-2.c
--- 65552,65569 ----
  44ad908a69e43269647b72a114715eda  gcc/testsuite/gcc.target/nvptx/slp.c
  741e8b3981b97dba04d2d0ab288e2aca  gcc/testsuite/gcc.target/nvptx/softstack.c
  b229365c916139aa5854fd2d40028c0a  gcc/testsuite/gcc.target/nvptx/trailing-init.c
+ 4eabd19b0b24f9cd0fd1e9c5a17f78db  gcc/testsuite/gcc.target/nvptx/umul-hi.c
+ 9fc92de803cb585cf0c64307747e0620  gcc/testsuite/gcc.target/nvptx/umul-wide.c
  c65e9b178b981b800a00ac82aa9741cf  gcc/testsuite/gcc.target/nvptx/uninit-decl.c
  0c3dd4b3664aa3f42dca7bc49ab4dc53  gcc/testsuite/gcc.target/nvptx/unsigned-cmp.c
  b7ab80fc6f20db555ea318163f54bb1c  gcc/testsuite/gcc.target/nvptx/v2di.c
! bc3ff6c96f47556e90735072f0482f8e  gcc/testsuite/gcc.target/nvptx/v2si-cvt.c
  0c4a4bc6ef9c71916872f453d51c62af  gcc/testsuite/gcc.target/nvptx/v2si-run.c
+ 042588a1e383682a2797ce8183b8ddb5  gcc/testsuite/gcc.target/nvptx/v2si-vec-set-extract.c
  1d2fc2d3442fe9ae6206e3c12fc9f466  gcc/testsuite/gcc.target/nvptx/v2si.c
+ e156b7f2465ef5bce0e77775f26b334f  gcc/testsuite/gcc.target/nvptx/vadd_add.c
  34535704dd43f77717636b4495978894  gcc/testsuite/gcc.target/nvptx/vec.inc
+ 256f5601c0b3f8a7f54764c61ad5055a  gcc/testsuite/gcc.target/nvptx/vsub_add.c
  ba248cc080b98b0f2298851bf5ff50ee  gcc/testsuite/gcc.target/nvptx/weak.c
  cee646afb17baca3bd611110a0d24362  gcc/testsuite/gcc.target/or1k/args-1.c
  d59f1ded63c010f7c70d8914ff035369  gcc/testsuite/gcc.target/or1k/args-2.c
*************** d59f1ded63c010f7c70d8914ff035369  gcc/te
*** 61731,61737 ****
  9e49229cfb3a4570a9259ea659772866  gcc/testsuite/gcc.target/or1k/cmov-2.c
  6bd14b0136c11119eb7b862a377f7a1d  gcc/testsuite/gcc.target/or1k/div-mul-1.c
  7fd1bcd610e82d1586aecf6b07e5cabb  gcc/testsuite/gcc.target/or1k/div-mul-2.c
! cd2c839a50b775a4bc7279a2bc61998f  gcc/testsuite/gcc.target/or1k/or1k.exp
  26536fcae441d001c2a53c21abf56757  gcc/testsuite/gcc.target/or1k/return-1.c
  cbc20b748446a09b12e149a14d1dc326  gcc/testsuite/gcc.target/or1k/return-2.c
  30571d600ad8e2c620b4c88dd60b22ab  gcc/testsuite/gcc.target/or1k/return-3.c
--- 65571,65577 ----
  9e49229cfb3a4570a9259ea659772866  gcc/testsuite/gcc.target/or1k/cmov-2.c
  6bd14b0136c11119eb7b862a377f7a1d  gcc/testsuite/gcc.target/or1k/div-mul-1.c
  7fd1bcd610e82d1586aecf6b07e5cabb  gcc/testsuite/gcc.target/or1k/div-mul-2.c
! 2a1f55913e086ff2696ca56afe918fa9  gcc/testsuite/gcc.target/or1k/or1k.exp
  26536fcae441d001c2a53c21abf56757  gcc/testsuite/gcc.target/or1k/return-1.c
  cbc20b748446a09b12e149a14d1dc326  gcc/testsuite/gcc.target/or1k/return-2.c
  30571d600ad8e2c620b4c88dd60b22ab  gcc/testsuite/gcc.target/or1k/return-3.c
*************** ea95f7612f0049e3a94038c123a0e60d  gcc/te
*** 61743,61757 ****
  4ee88d86fdfbf4d4ea1743897d934830  gcc/testsuite/gcc.target/or1k/shftimm-2.c
  e4f9cf3a5432c52f9f1d2ce9020312c4  gcc/testsuite/gcc.target/or1k/sibcall-1.c
  a03b92350a69b724ce16f3b7aa1803d7  gcc/testsuite/gcc.target/powerpc/20020118-1.c
- 99c47c186398b78039b56031b1ee20e1  gcc/testsuite/gcc.target/powerpc/20030218-1.c
- 50c3ef605587e85ed50a0149f2481fc2  gcc/testsuite/gcc.target/powerpc/20030505.c
  bb3374c69dde2e7b04fca300c9416620  gcc/testsuite/gcc.target/powerpc/20040121-1.c
  af361d9cce9906e7956ed7632c663422  gcc/testsuite/gcc.target/powerpc/20040622-1.c
  6255b4c693da499be985b6e9dc83c802  gcc/testsuite/gcc.target/powerpc/20041111-1.c
  09142540eea70df1224760101211366e  gcc/testsuite/gcc.target/powerpc/20050603-1.c
  9abe3de5b09268d62289d406cd6ff4a5  gcc/testsuite/gcc.target/powerpc/20050603-3.c
  bc3af82991adbd156bce9e6aa788b9b7  gcc/testsuite/gcc.target/powerpc/20050830-1.c
- 795922a961666ffadbc122338736a121  gcc/testsuite/gcc.target/powerpc/20081204-1.c
  cd0f96d09613572877fd9b0a5b9fd2eb  gcc/testsuite/gcc.target/powerpc/405-dlmzb-strlen-1.c
  7391c538e01297ede1d1448753a490a1  gcc/testsuite/gcc.target/powerpc/405-macchw-1.c
  bb9cf56403aca9e83abbe5310195fb6c  gcc/testsuite/gcc.target/powerpc/405-macchw-2.c
--- 65583,65594 ----
*************** cc9ef742610f22a59244e4dadcfabb8e  gcc/te
*** 61863,61869 ****
  162aa77956c5a49ab6ce65c401815208  gcc/testsuite/gcc.target/powerpc/altivec-cell-6.c
  d949d65d8231a5496c3c05d5f03fa82c  gcc/testsuite/gcc.target/powerpc/altivec-cell-7.c
  a6d2617bc03a85ed4eb3d388e512d000  gcc/testsuite/gcc.target/powerpc/altivec-cell-8.c
! c5a51d31607ee024e35af726ed421db1  gcc/testsuite/gcc.target/powerpc/altivec-consts.c
  be6b363c91d027b02dedb5ba100c02f8  gcc/testsuite/gcc.target/powerpc/altivec-ld-1.c
  2a932408f123eade24387b931860ef9f  gcc/testsuite/gcc.target/powerpc/altivec-macros.c
  6644929740c819648f0e7c5223035282  gcc/testsuite/gcc.target/powerpc/altivec-perm-1.c
--- 65700,65706 ----
  162aa77956c5a49ab6ce65c401815208  gcc/testsuite/gcc.target/powerpc/altivec-cell-6.c
  d949d65d8231a5496c3c05d5f03fa82c  gcc/testsuite/gcc.target/powerpc/altivec-cell-7.c
  a6d2617bc03a85ed4eb3d388e512d000  gcc/testsuite/gcc.target/powerpc/altivec-cell-8.c
! 6150cee0c289102bed3a8903245be7b8  gcc/testsuite/gcc.target/powerpc/altivec-consts.c
  be6b363c91d027b02dedb5ba100c02f8  gcc/testsuite/gcc.target/powerpc/altivec-ld-1.c
  2a932408f123eade24387b931860ef9f  gcc/testsuite/gcc.target/powerpc/altivec-macros.c
  6644929740c819648f0e7c5223035282  gcc/testsuite/gcc.target/powerpc/altivec-perm-1.c
*************** cac82e7d1ff3a6b35a8c31f5b2d34992  gcc/te
*** 61891,61900 ****
  11d186ceefd0bd75eb916fe3dd86fd24  gcc/testsuite/gcc.target/powerpc/atomic_load_store-p8.c
  07065d69128eacb3acf282a9773e8740  gcc/testsuite/gcc.target/powerpc/attr-aligned.c
  f7e7c3525d555350473e6eaeb20a763c  gcc/testsuite/gcc.target/powerpc/avoid-indexed-addresses.c
! 693abfe9d1425102c45411d7a43c9225  gcc/testsuite/gcc.target/powerpc/bcd-1.c
! 2940fbb557ceeac404832129251cb807  gcc/testsuite/gcc.target/powerpc/bcd-2.c
! 687f10c52944c4a1d0a31971e03dab11  gcc/testsuite/gcc.target/powerpc/bcd-3.c
! dd56eadc1cb5667610cb93869cf092bc  gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp
  a9acf66df4a99620b48a370fbf90f1e9  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-0.c
  6b805ac8ccc140528c05fe8211e24791  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-1.c
  9edcc760a84627d628e437142f98fe00  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c
--- 65728,65738 ----
  11d186ceefd0bd75eb916fe3dd86fd24  gcc/testsuite/gcc.target/powerpc/atomic_load_store-p8.c
  07065d69128eacb3acf282a9773e8740  gcc/testsuite/gcc.target/powerpc/attr-aligned.c
  f7e7c3525d555350473e6eaeb20a763c  gcc/testsuite/gcc.target/powerpc/avoid-indexed-addresses.c
! d5a3520388a5d684298f2ecede66ab11  gcc/testsuite/gcc.target/powerpc/bcd-1.c
! 3a64fbfa795ceb21229f28888aa88ca4  gcc/testsuite/gcc.target/powerpc/bcd-2.c
! 17645a2fd8d5ba2d2bc6c718c249ccf2  gcc/testsuite/gcc.target/powerpc/bcd-3.c
! fc549969b0a6cd788bf8da347fdb8b8a  gcc/testsuite/gcc.target/powerpc/bcd-4.c
! 248bd5d438a930c88b2f62e084d9f41e  gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp
  a9acf66df4a99620b48a370fbf90f1e9  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-0.c
  6b805ac8ccc140528c05fe8211e24791  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-1.c
  9edcc760a84627d628e437142f98fe00  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c
*************** c9f98da2825e699344ef8948cd8d19fa  gcc/te
*** 62046,62096 ****
  08a9ed953f979a242c144dc324a10243  gcc/testsuite/gcc.target/powerpc/bool3-p7.c
  d98190bc7003de5846e7f794a9f2b8ab  gcc/testsuite/gcc.target/powerpc/bool3-p8.c
  438f4e658462567e81a685ced3c5a415  gcc/testsuite/gcc.target/powerpc/bool3.h
  5f5298f748bcfaf7c81d750d7b190615  gcc/testsuite/gcc.target/powerpc/bswap-run.c
  8c821490f5d0cf5f71e7cdc07e3c700f  gcc/testsuite/gcc.target/powerpc/bswap16.c
  3fcf5bd2b192fb87864426edc98d3d3c  gcc/testsuite/gcc.target/powerpc/bswap32.c
  c5b0f341a380052e089b6ab1ff9d3dd6  gcc/testsuite/gcc.target/powerpc/bswap64-1.c
  28a093e56a3b3b438802b7510941c3d7  gcc/testsuite/gcc.target/powerpc/bswap64-2.c
  c5679080166f48cc9f2b7e07db1146c3  gcc/testsuite/gcc.target/powerpc/bswap64-3.c
! ee04d0a416bda5cc5ebbd0def15d5994  gcc/testsuite/gcc.target/powerpc/bswap64-4.c
  660ec5b28bd11c4d01e9d4d45e4670fa  gcc/testsuite/gcc.target/powerpc/builtin-vec-sums-be-int.c
  2185aeb234f1817a5540c86fb962da8a  gcc/testsuite/gcc.target/powerpc/builtins-1-be-folded.c
  01e2e658b164ab1133e268dea77a673b  gcc/testsuite/gcc.target/powerpc/builtins-1-le-folded.c
! 81c600d5735b14bfbe34e3395f54c063  gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c
! 81c2ce2759cd15dac2dd704613f98c24  gcc/testsuite/gcc.target/powerpc/builtins-1.c
! 77f4cc7ca27ab5f1eaac6d0ad22a87aa  gcc/testsuite/gcc.target/powerpc/builtins-1.fold.h
! 2a10ec821e82695013c36a701e935514  gcc/testsuite/gcc.target/powerpc/builtins-2-p9-runnable.c
! 6d6e11fb84b3f0cf71a7212cc24951fa  gcc/testsuite/gcc.target/powerpc/builtins-2.c
  dc2d3d2859a886302c3ee70084f25059  gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c
! 85c75f6fadc20cf3c683edd587e1150d  gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c
! c1b65f18b346486d0879933566a32a3d  gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c
! eed4b79a62c4549e266b51ec084c8241  gcc/testsuite/gcc.target/powerpc/builtins-3-runnable-p8.c
  231b1a0d50ab0005d6a65185953e6dfd  gcc/testsuite/gcc.target/powerpc/builtins-3-runnable.c
  1ec414bf03c468f718d4248fa34a641b  gcc/testsuite/gcc.target/powerpc/builtins-3-vec_reve-runnable.c
! e5cee617d943c16e8a7c1dc8f62f47d9  gcc/testsuite/gcc.target/powerpc/builtins-3.c
  8a1bb8ec52829a6ea7f9ee07a431c165  gcc/testsuite/gcc.target/powerpc/builtins-4-int128-runnable.c
! 4c91ddc5c49975f8ae0e8f6745cefcac  gcc/testsuite/gcc.target/powerpc/builtins-4-p9-runnable.c
  229b92af5d708ec95906efd39c078624  gcc/testsuite/gcc.target/powerpc/builtins-4-runnable.c
! 210fbe934a6d7165ce568c2cbe1b2670  gcc/testsuite/gcc.target/powerpc/builtins-4.c
! 1d076bb1b154f1805d700023a6ef86d7  gcc/testsuite/gcc.target/powerpc/builtins-5-p9-runnable.c
! 2826b5bdb7b1c94a26298df96c6fc0f6  gcc/testsuite/gcc.target/powerpc/builtins-5.c
! d6ffd41e00133e3a241db3f0adc7fa05  gcc/testsuite/gcc.target/powerpc/builtins-6-p9-runnable.c
! c5cc2a2e96aaa6c686cc9bc065259132  gcc/testsuite/gcc.target/powerpc/builtins-6-runnable.c
! 25c104e70372c4061b9bae85d8c93df2  gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c
! 7f5a7b0e3efb9323941c86496fdb6833  gcc/testsuite/gcc.target/powerpc/builtins-7-runnable.c
! f50c15901a48e4cbd709055aff82c94c  gcc/testsuite/gcc.target/powerpc/builtins-8-p9-runnable.c
! 4c80e6ed7313a74771b414c92fbdcd7c  gcc/testsuite/gcc.target/powerpc/builtins-8-runnable.c
  2add1ae4a68a813b6bf3da8f6d2c12b4  gcc/testsuite/gcc.target/powerpc/builtins-9.c
  6a0869294a2f975212e388f211524c2a  gcc/testsuite/gcc.target/powerpc/builtins-mergew-mergow.c
! 06e97ccf418072b1b2f90904e84d19c8  gcc/testsuite/gcc.target/powerpc/builtins-msum-runnable.c
! d249ac3ce4acf90083a999240ebe84ff  gcc/testsuite/gcc.target/powerpc/builtins-revb-runnable.c
! 1548ac0ac81513395f471bec3629c51c  gcc/testsuite/gcc.target/powerpc/byte-in-either-range-0.c
! 9c3c641fd8ab53aef392e688ba975ff5  gcc/testsuite/gcc.target/powerpc/byte-in-either-range-1.c
! 70c328241f501f9550d2fa272e32adbe  gcc/testsuite/gcc.target/powerpc/byte-in-range-0.c
! bfb713ccef1a14f59401c833d8b7f230  gcc/testsuite/gcc.target/powerpc/byte-in-range-1.c
! 873bae71539a810d420bc7a0562f643b  gcc/testsuite/gcc.target/powerpc/byte-in-set-0.c
! 0bc24ed48f1f5b64b37c892e9debcb0a  gcc/testsuite/gcc.target/powerpc/byte-in-set-1.c
! e038c58f8743b6d2eeaded162896bf01  gcc/testsuite/gcc.target/powerpc/byte-in-set-2.c
  2967ae37e85e61aa7e2d5198922374ad  gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c
  222e0812e626f0e1abf688d71c5afc58  gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c
  e25f2a228d796f1db494d4bd8e5d34f5  gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c
--- 65884,65938 ----
  08a9ed953f979a242c144dc324a10243  gcc/testsuite/gcc.target/powerpc/bool3-p7.c
  d98190bc7003de5846e7f794a9f2b8ab  gcc/testsuite/gcc.target/powerpc/bool3-p8.c
  438f4e658462567e81a685ced3c5a415  gcc/testsuite/gcc.target/powerpc/bool3.h
+ 3493bdc771b9bce44627e8e680b7ec82  gcc/testsuite/gcc.target/powerpc/bswap-brd.c
+ 13eb8866848667a4deb9edc6aa321b7a  gcc/testsuite/gcc.target/powerpc/bswap-brh.c
+ 5699e52d1e8829cb7c7861195d1cc017  gcc/testsuite/gcc.target/powerpc/bswap-brw.c
  5f5298f748bcfaf7c81d750d7b190615  gcc/testsuite/gcc.target/powerpc/bswap-run.c
  8c821490f5d0cf5f71e7cdc07e3c700f  gcc/testsuite/gcc.target/powerpc/bswap16.c
  3fcf5bd2b192fb87864426edc98d3d3c  gcc/testsuite/gcc.target/powerpc/bswap32.c
  c5b0f341a380052e089b6ab1ff9d3dd6  gcc/testsuite/gcc.target/powerpc/bswap64-1.c
  28a093e56a3b3b438802b7510941c3d7  gcc/testsuite/gcc.target/powerpc/bswap64-2.c
  c5679080166f48cc9f2b7e07db1146c3  gcc/testsuite/gcc.target/powerpc/bswap64-3.c
! c2bf41ae8ff38b2785378ecfa7daa3fd  gcc/testsuite/gcc.target/powerpc/bswap64-4.c
  660ec5b28bd11c4d01e9d4d45e4670fa  gcc/testsuite/gcc.target/powerpc/builtin-vec-sums-be-int.c
  2185aeb234f1817a5540c86fb962da8a  gcc/testsuite/gcc.target/powerpc/builtins-1-be-folded.c
  01e2e658b164ab1133e268dea77a673b  gcc/testsuite/gcc.target/powerpc/builtins-1-le-folded.c
! 3630b13056a134afac9072861304e1b7  gcc/testsuite/gcc.target/powerpc/builtins-1-p10-runnable.c
! f2df3bae9f5a0120e073ffd853edc95d  gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c
! 868393d0380f405efd529f1e2fe367c3  gcc/testsuite/gcc.target/powerpc/builtins-1.c
! ec989a2f75efdf3d6a18fdd8ae6ce35b  gcc/testsuite/gcc.target/powerpc/builtins-1.fold.h
! 8e9c179d065241f1abc6396d9fe644c2  gcc/testsuite/gcc.target/powerpc/builtins-2-p9-runnable.c
! bf30b9cab89c9a31f84d84c53b7aa123  gcc/testsuite/gcc.target/powerpc/builtins-2.c
  dc2d3d2859a886302c3ee70084f25059  gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c
! 581afa4a87a76c03caa4cc92c55a9420  gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c
! 204a856da08501aa36827805addf36ca  gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c
! 927bf2bb212f0a33b741d6509c20af1d  gcc/testsuite/gcc.target/powerpc/builtins-3-runnable-p8.c
  231b1a0d50ab0005d6a65185953e6dfd  gcc/testsuite/gcc.target/powerpc/builtins-3-runnable.c
  1ec414bf03c468f718d4248fa34a641b  gcc/testsuite/gcc.target/powerpc/builtins-3-vec_reve-runnable.c
! 55acc231850fbe80b15baa3b9e4205d1  gcc/testsuite/gcc.target/powerpc/builtins-3.c
  8a1bb8ec52829a6ea7f9ee07a431c165  gcc/testsuite/gcc.target/powerpc/builtins-4-int128-runnable.c
! 50bb9ae2f77e2ee92fa420b15a5d1d93  gcc/testsuite/gcc.target/powerpc/builtins-4-p9-runnable.c
  229b92af5d708ec95906efd39c078624  gcc/testsuite/gcc.target/powerpc/builtins-4-runnable.c
! fab34e8e6c94c195aa4fec4b849c85e8  gcc/testsuite/gcc.target/powerpc/builtins-4.c
! 13e0b4808cc07b46cac8e9d91447da3c  gcc/testsuite/gcc.target/powerpc/builtins-5-p9-runnable.c
! 80cfec7becc0c5c95f7b0cab5583061e  gcc/testsuite/gcc.target/powerpc/builtins-5.c
! d6c50bef137b8bc795dc8da8475e7d72  gcc/testsuite/gcc.target/powerpc/builtins-6-p9-runnable.c
! 54e75f8afa24099030187760b9579828  gcc/testsuite/gcc.target/powerpc/builtins-6-runnable.c
! ad36609570d36fac7a261cbe1422b2b9  gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c
! 5021f1b431e5d7e29a6077f0c5f07696  gcc/testsuite/gcc.target/powerpc/builtins-7-runnable.c
! ee1c5ac94e903887037c05d6567c3761  gcc/testsuite/gcc.target/powerpc/builtins-8-p9-runnable.c
! 558e4a865d747855d622b4c1a83f0141  gcc/testsuite/gcc.target/powerpc/builtins-8-runnable.c
  2add1ae4a68a813b6bf3da8f6d2c12b4  gcc/testsuite/gcc.target/powerpc/builtins-9.c
  6a0869294a2f975212e388f211524c2a  gcc/testsuite/gcc.target/powerpc/builtins-mergew-mergow.c
! 8511dc5404e834d17307b5bf949c9856  gcc/testsuite/gcc.target/powerpc/builtins-msum-runnable.c
! 09b5267e3ea7f6dcce98a91fe0dc43eb  gcc/testsuite/gcc.target/powerpc/builtins-revb-runnable.c
! 0d677809adae77450d80e5fbb9654ba9  gcc/testsuite/gcc.target/powerpc/byte-in-either-range-0.c
! c557254ecf58aa4d6f3d4bdb298275db  gcc/testsuite/gcc.target/powerpc/byte-in-either-range-1.c
! 3b946853253b1119012209568dcb1505  gcc/testsuite/gcc.target/powerpc/byte-in-range-0.c
! 7ac736aea6ce95600f3a9f361777f41f  gcc/testsuite/gcc.target/powerpc/byte-in-range-1.c
! 58649744a331577784ece84c2d89a6b3  gcc/testsuite/gcc.target/powerpc/byte-in-set-0.c
! 595315abe517e7640f312c098a95a84e  gcc/testsuite/gcc.target/powerpc/byte-in-set-1.c
! 60240c50adc5848544c17a344962374e  gcc/testsuite/gcc.target/powerpc/byte-in-set-2.c
  2967ae37e85e61aa7e2d5198922374ad  gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c
  222e0812e626f0e1abf688d71c5afc58  gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c
  e25f2a228d796f1db494d4bd8e5d34f5  gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c
*************** ee2588ba44261404b1747c9ac2ab9547  gcc/te
*** 62099,62124 ****
  74c6453e2a6b49aaded3771497afe5af  gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c
  3840b09894fe291f03dbf52cf8285b77  gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c
  bceca9004faa6729357ac4757f81b563  gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c
  88a65f2c70356d30873b9e3fbf14bd02  gcc/testsuite/gcc.target/powerpc/clone1.c
  b8e6c9f8968f2606ab8c45e4bae3d807  gcc/testsuite/gcc.target/powerpc/clone2.c
! ff122eab001c6dc6685fe797943fdd89  gcc/testsuite/gcc.target/powerpc/clone3.c
  df3bb7789b2e14f68bc9eb0b7af53cea  gcc/testsuite/gcc.target/powerpc/cmpb-1.c
  ba0b1956af1db794975f1aee3d6e6273  gcc/testsuite/gcc.target/powerpc/cmpb-2.c
  82227502f9d3718b87af61166d6cbcd4  gcc/testsuite/gcc.target/powerpc/cmpb-3.c
  096405fe72bd70e54254ba59396a8793  gcc/testsuite/gcc.target/powerpc/cmpb32-1.c
  9b3076c3c75dcc8d936512c558e7349f  gcc/testsuite/gcc.target/powerpc/cmpb32-2.c
  f2eb2bc74f81b523e009fd067f9f627d  gcc/testsuite/gcc.target/powerpc/combine-2-2.c
! 28b66afdaf9e9482d12751d78ab3c209  gcc/testsuite/gcc.target/powerpc/compress-float-ppc-pic.c
  27dc5d563118e818ee9c359c5906e1c4  gcc/testsuite/gcc.target/powerpc/compress-float-ppc.c
  416032da5b592cc90008b1b2f2bbc3c7  gcc/testsuite/gcc.target/powerpc/conditional-return.c
  6419d1aaea22c0476688f484ac4f0f43  gcc/testsuite/gcc.target/powerpc/const-compare.c
! ba13e0a74c91626a1bfabe74ff385f18  gcc/testsuite/gcc.target/powerpc/conv-vectorize-1.c
! ba087d46247a19179361ce60b48592d1  gcc/testsuite/gcc.target/powerpc/conv-vectorize-2.c
! 7879effff48d340748c6a9f3a449c2ce  gcc/testsuite/gcc.target/powerpc/convert-fp-128.c
  8bdf61637d7206a86bdd53011a38df98  gcc/testsuite/gcc.target/powerpc/convert-fp-64.c
  1f7277471f008809ee3572d95097e11a  gcc/testsuite/gcc.target/powerpc/copysign128-1.c
! 4b60a8662648a73cedee85dd08e278eb  gcc/testsuite/gcc.target/powerpc/cprophard.c
! a326093b5bd617a734ae3eb9b9d90deb  gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c
  1f6e5c800809283a311bbea2c2e28f46  gcc/testsuite/gcc.target/powerpc/cpu-future.c
  81b6f286dd2f5fda45d87e46682a7d3a  gcc/testsuite/gcc.target/powerpc/cr_shrink-wrap.c
  9ec5a71503700f842b2d68337529fc06  gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c
--- 65941,65972 ----
  74c6453e2a6b49aaded3771497afe5af  gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c
  3840b09894fe291f03dbf52cf8285b77  gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c
  bceca9004faa6729357ac4757f81b563  gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c
+ 2b0169ca798a1ab2ef548ccc6466fa75  gcc/testsuite/gcc.target/powerpc/cfuged-0.c
+ 3f04d51f3229d580c7e3475221fac283  gcc/testsuite/gcc.target/powerpc/cfuged-1.c
  88a65f2c70356d30873b9e3fbf14bd02  gcc/testsuite/gcc.target/powerpc/clone1.c
  b8e6c9f8968f2606ab8c45e4bae3d807  gcc/testsuite/gcc.target/powerpc/clone2.c
! 3f03cede40acb0331345348ac7486253  gcc/testsuite/gcc.target/powerpc/clone3.c
  df3bb7789b2e14f68bc9eb0b7af53cea  gcc/testsuite/gcc.target/powerpc/cmpb-1.c
  ba0b1956af1db794975f1aee3d6e6273  gcc/testsuite/gcc.target/powerpc/cmpb-2.c
  82227502f9d3718b87af61166d6cbcd4  gcc/testsuite/gcc.target/powerpc/cmpb-3.c
  096405fe72bd70e54254ba59396a8793  gcc/testsuite/gcc.target/powerpc/cmpb32-1.c
  9b3076c3c75dcc8d936512c558e7349f  gcc/testsuite/gcc.target/powerpc/cmpb32-2.c
+ 547670942735b7730f2499d29a2c415b  gcc/testsuite/gcc.target/powerpc/cntlzdm-0.c
+ 01720385b4f7f4200060bf1dcaa69c89  gcc/testsuite/gcc.target/powerpc/cntlzdm-1.c
+ 189b7cbf2d81a9c115f3c258072b8606  gcc/testsuite/gcc.target/powerpc/cnttzdm-0.c
+ 0ec242bccc6c8a73f17f72bc7f191407  gcc/testsuite/gcc.target/powerpc/cnttzdm-1.c
  f2eb2bc74f81b523e009fd067f9f627d  gcc/testsuite/gcc.target/powerpc/combine-2-2.c
! cc20d8ebb0dff3b95b56685f2cf4ba50  gcc/testsuite/gcc.target/powerpc/compress-float-ppc-pic.c
  27dc5d563118e818ee9c359c5906e1c4  gcc/testsuite/gcc.target/powerpc/compress-float-ppc.c
  416032da5b592cc90008b1b2f2bbc3c7  gcc/testsuite/gcc.target/powerpc/conditional-return.c
  6419d1aaea22c0476688f484ac4f0f43  gcc/testsuite/gcc.target/powerpc/const-compare.c
! ea2791615781e50d93e59e8389958d7d  gcc/testsuite/gcc.target/powerpc/conv-vectorize-1.c
! d6eb67727149d6d42efabf2f7d82dfd1  gcc/testsuite/gcc.target/powerpc/conv-vectorize-2.c
! 4860519afa74c9127755e2a68b2ed7e8  gcc/testsuite/gcc.target/powerpc/convert-fp-128.c
  8bdf61637d7206a86bdd53011a38df98  gcc/testsuite/gcc.target/powerpc/convert-fp-64.c
  1f7277471f008809ee3572d95097e11a  gcc/testsuite/gcc.target/powerpc/copysign128-1.c
! 174f03afd85dbb1fb2b818ae9dc7fb8f  gcc/testsuite/gcc.target/powerpc/cprophard.c
! 9c8ad70539244dbdecc43664cc03e7d5  gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c
  1f6e5c800809283a311bbea2c2e28f46  gcc/testsuite/gcc.target/powerpc/cpu-future.c
  81b6f286dd2f5fda45d87e46682a7d3a  gcc/testsuite/gcc.target/powerpc/cr_shrink-wrap.c
  9ec5a71503700f842b2d68337529fc06  gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c
*************** ce1f3ad7eb43ff7d5709418e9886c843  gcc/te
*** 62163,62169 ****
  70d51abf2988870d80cb9cc5e753c87b  gcc/testsuite/gcc.target/powerpc/dfp-td-2.c
  28bb384f8efa10801efa64c838eab4e2  gcc/testsuite/gcc.target/powerpc/dfp-td-3.c
  20555599c7a199625c2d8d95f50de5e9  gcc/testsuite/gcc.target/powerpc/dfp-td.c
! be16fb19c5832845b5cbd367822f24f8  gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp
  87e54b934c02cfbc3b6fb142c76e4e04  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-0.c
  eeaa0257c75044dd988a2b10bddeea7c  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-1.c
  cf4bee8bc84345204e6621398ea24cc3  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-10.c
--- 66011,66017 ----
  70d51abf2988870d80cb9cc5e753c87b  gcc/testsuite/gcc.target/powerpc/dfp-td-2.c
  28bb384f8efa10801efa64c838eab4e2  gcc/testsuite/gcc.target/powerpc/dfp-td-3.c
  20555599c7a199625c2d8d95f50de5e9  gcc/testsuite/gcc.target/powerpc/dfp-td.c
! 1ea35f6833596b600198c7e74eca2baa  gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp
  87e54b934c02cfbc3b6fb142c76e4e04  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-0.c
  eeaa0257c75044dd988a2b10bddeea7c  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-1.c
  cf4bee8bc84345204e6621398ea24cc3  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-10.c
*************** eb7be457c6183733c031f3aeff01290a  gcc/te
*** 62244,62273 ****
  a69f285b2d84bac4624c6a3d8d5af256  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-79.c
  6102e2b4214f7870a0abc64f0d119806  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-8.c
  742beafe6fc1c64ddcdb91fe1a79e235  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-9.c
! f22fe692cf9961a195c50bc33bebf610  gcc/testsuite/gcc.target/powerpc/dimode_off.c
! e46e1cc960d441f0a61fec08ddadbb4e  gcc/testsuite/gcc.target/powerpc/direct-move-double1.c
! 0bab80324ca29e0ea5182c317f91fa7b  gcc/testsuite/gcc.target/powerpc/direct-move-double2.c
! 850cee39152e21c31a0e8cf7258a5c90  gcc/testsuite/gcc.target/powerpc/direct-move-float1.c
! 43abeb8d763eb3cfc8f78f04e43d197e  gcc/testsuite/gcc.target/powerpc/direct-move-float2.c
! 8649a10a58164e3d79d59dcf76fc70e5  gcc/testsuite/gcc.target/powerpc/direct-move-float3.c
! aeaa76a7b454854bf9911ac2b247a51a  gcc/testsuite/gcc.target/powerpc/direct-move-long1.c
! b14c778519f518f0871be1c6efc606a7  gcc/testsuite/gcc.target/powerpc/direct-move-long2.c
  40e1e41bbc185ffb6251f42a1e1ecbd6  gcc/testsuite/gcc.target/powerpc/direct-move-vector.c
! 8f98b74247e438dfdcedbe6542a3d636  gcc/testsuite/gcc.target/powerpc/direct-move-vint1.c
! a19803c4882da32dcace8191eefa0403  gcc/testsuite/gcc.target/powerpc/direct-move-vint2.c
  3bb9355169d26ef4a2e610a4cc121c5b  gcc/testsuite/gcc.target/powerpc/direct-move.h
  437116f4ece2fc838159319958a00e92  gcc/testsuite/gcc.target/powerpc/divkc3-1.c
  499cd7621c221e968d7b038cf3e898d9  gcc/testsuite/gcc.target/powerpc/divkc3-2.c
  acd01b4a84dada449fb4247ebc8529e0  gcc/testsuite/gcc.target/powerpc/divkc3-3.c
  8f2229fba1c4dc16358c52a26e62a35e  gcc/testsuite/gcc.target/powerpc/doloop-1.c
  1e28ad29e43de3bf402fb713b7540c32  gcc/testsuite/gcc.target/powerpc/e500-1.c
  6b480fbd59c1e52ed8af5509486a3432  gcc/testsuite/gcc.target/powerpc/e500-ord-1.c
  62820786e811568bf9c0487b4ef6761b  gcc/testsuite/gcc.target/powerpc/e500-ord-2.c
  6ea92a9945a83333f8d1ba665d65f560  gcc/testsuite/gcc.target/powerpc/e500-unord-1.c
  83d3ef0422135a547b552e5700f1e4a6  gcc/testsuite/gcc.target/powerpc/e500-unord-2.c
  01907d008b05c94700170b948c96b56e  gcc/testsuite/gcc.target/powerpc/ehreturn.c
! 08bc618b441fc7f1a275a54589ca183c  gcc/testsuite/gcc.target/powerpc/extend-divide-1.c
! b0135de5f7731e8f09200d5193664105  gcc/testsuite/gcc.target/powerpc/extend-divide-2.c
  f92fd7820b0c5610b80d80849330a5b5  gcc/testsuite/gcc.target/powerpc/extswsli-1.c
  1d57297e130da0cb80ebe94942aca74b  gcc/testsuite/gcc.target/powerpc/extswsli-2.c
  5a16bc7fd7db200400166ef125c8256d  gcc/testsuite/gcc.target/powerpc/extswsli-3.c
--- 66092,66124 ----
  a69f285b2d84bac4624c6a3d8d5af256  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-79.c
  6102e2b4214f7870a0abc64f0d119806  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-8.c
  742beafe6fc1c64ddcdb91fe1a79e235  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-9.c
! 15797f7c1b9cc9547384233a7abdd49f  gcc/testsuite/gcc.target/powerpc/dg-future-0.c
! c4c7537d0bdc6e02c64ae690f9feac1f  gcc/testsuite/gcc.target/powerpc/dg-future-1.c
! 0f4816e68e75ee735727c70ca742fb95  gcc/testsuite/gcc.target/powerpc/dimode_off.c
! 069cf050a2c2f7c0b1d9bcc3de283d88  gcc/testsuite/gcc.target/powerpc/direct-move-double1.c
! 4d54fa94954d5ff791c5151280363a89  gcc/testsuite/gcc.target/powerpc/direct-move-double2.c
! 827a7cfcf1c4c964c4be214658070c7b  gcc/testsuite/gcc.target/powerpc/direct-move-float1.c
! f4d7704dfb409d1d00851ce115bbb180  gcc/testsuite/gcc.target/powerpc/direct-move-float2.c
! 433f74a1fbcd6efd94f9b4a6e2f20efb  gcc/testsuite/gcc.target/powerpc/direct-move-float3.c
! 1f62754034d3b8bb62c8a1c6d209a355  gcc/testsuite/gcc.target/powerpc/direct-move-long1.c
! d4ce6459348a97119b44b465bb11034f  gcc/testsuite/gcc.target/powerpc/direct-move-long2.c
  40e1e41bbc185ffb6251f42a1e1ecbd6  gcc/testsuite/gcc.target/powerpc/direct-move-vector.c
! 818a2d9329056fb35fbe2858ed53b4e3  gcc/testsuite/gcc.target/powerpc/direct-move-vint1.c
! 500da673182d1ca48d430f3e8f4e6736  gcc/testsuite/gcc.target/powerpc/direct-move-vint2.c
  3bb9355169d26ef4a2e610a4cc121c5b  gcc/testsuite/gcc.target/powerpc/direct-move.h
  437116f4ece2fc838159319958a00e92  gcc/testsuite/gcc.target/powerpc/divkc3-1.c
  499cd7621c221e968d7b038cf3e898d9  gcc/testsuite/gcc.target/powerpc/divkc3-2.c
  acd01b4a84dada449fb4247ebc8529e0  gcc/testsuite/gcc.target/powerpc/divkc3-3.c
  8f2229fba1c4dc16358c52a26e62a35e  gcc/testsuite/gcc.target/powerpc/doloop-1.c
+ 1795ee28ccf0c1777cfcd23010593966  gcc/testsuite/gcc.target/powerpc/doloop-2.c
  1e28ad29e43de3bf402fb713b7540c32  gcc/testsuite/gcc.target/powerpc/e500-1.c
  6b480fbd59c1e52ed8af5509486a3432  gcc/testsuite/gcc.target/powerpc/e500-ord-1.c
  62820786e811568bf9c0487b4ef6761b  gcc/testsuite/gcc.target/powerpc/e500-ord-2.c
  6ea92a9945a83333f8d1ba665d65f560  gcc/testsuite/gcc.target/powerpc/e500-unord-1.c
  83d3ef0422135a547b552e5700f1e4a6  gcc/testsuite/gcc.target/powerpc/e500-unord-2.c
  01907d008b05c94700170b948c96b56e  gcc/testsuite/gcc.target/powerpc/ehreturn.c
! 95e858be0914c6e79bbeb1b71724455f  gcc/testsuite/gcc.target/powerpc/extend-divide-1.c
! 14ca74f227a530896913ee956a768538  gcc/testsuite/gcc.target/powerpc/extend-divide-2.c
  f92fd7820b0c5610b80d80849330a5b5  gcc/testsuite/gcc.target/powerpc/extswsli-1.c
  1d57297e130da0cb80ebe94942aca74b  gcc/testsuite/gcc.target/powerpc/extswsli-2.c
  5a16bc7fd7db200400166ef125c8256d  gcc/testsuite/gcc.target/powerpc/extswsli-3.c
*************** f92fd7820b0c5610b80d80849330a5b5  gcc/te
*** 62278,62305 ****
  6768d5d711515ed5b6da41a056b388ab  gcc/testsuite/gcc.target/powerpc/float128-5.c
  d7cdcfd586315d965f78adeae2689b77  gcc/testsuite/gcc.target/powerpc/float128-call.c
  d2e66a0adae820881b99ec45ffe24c78  gcc/testsuite/gcc.target/powerpc/float128-cmp.c
! c86714b3db5c5b21e5a32b90f2b2b004  gcc/testsuite/gcc.target/powerpc/float128-cmp2-runnable.c
  c30565a907667e990dd7f92247003742  gcc/testsuite/gcc.target/powerpc/float128-complex-1.c
  eb3c3874b4477c7a84697fb0ec856be8  gcc/testsuite/gcc.target/powerpc/float128-complex-2.c
! 43a46b14bfac4670a9c9060541e63585  gcc/testsuite/gcc.target/powerpc/float128-fma1.c
! bc147e90bbbfc916998340ae741969da  gcc/testsuite/gcc.target/powerpc/float128-hw.c
! 2843c5d0714b24148273bad7c4c61963  gcc/testsuite/gcc.target/powerpc/float128-hw10.c
! 5524b59ba8f2d3f2e5b0b2375f28697a  gcc/testsuite/gcc.target/powerpc/float128-hw11.c
! cda93228f00724caae51671e77f5201c  gcc/testsuite/gcc.target/powerpc/float128-hw2.c
! b6621fc633904880b4dafb2c2afeaf57  gcc/testsuite/gcc.target/powerpc/float128-hw3.c
! 2f981fa402b677b6ee43371c124f6a1f  gcc/testsuite/gcc.target/powerpc/float128-hw4.c
! 47c74dd3433e68e57c065adb16e50696  gcc/testsuite/gcc.target/powerpc/float128-hw5.c
! 827a7d2edfb10ce18a6a049611fb3f09  gcc/testsuite/gcc.target/powerpc/float128-hw6.c
! 1d3ca037ad3ac991522b2a93f32a3770  gcc/testsuite/gcc.target/powerpc/float128-hw7.c
! 4a17bf48fddf988244b637f2508c5b04  gcc/testsuite/gcc.target/powerpc/float128-hw8.c
! 5b0929251749d158f24715b510cf54c9  gcc/testsuite/gcc.target/powerpc/float128-hw9.c
! e0cd76b0f03b312142f393f163ad47ed  gcc/testsuite/gcc.target/powerpc/float128-math.c
! 370d2966a721c7761ea64772f17edaaa  gcc/testsuite/gcc.target/powerpc/float128-minmax.c
! e98dafbcab3d6ec8e7456f0ae5337b4f  gcc/testsuite/gcc.target/powerpc/float128-mix.c
! 8907893bc184510294410424a1d53cc1  gcc/testsuite/gcc.target/powerpc/float128-odd.c
! da635f831ebbba4611b7685951aa0948  gcc/testsuite/gcc.target/powerpc/float128-sqrt1.c
! d300f85d0d5079470be6c8bced262aa2  gcc/testsuite/gcc.target/powerpc/float128-type-1.c
! adb194da2ebb0b047ba0c424863817b8  gcc/testsuite/gcc.target/powerpc/float128-type-2.c
  e0ad25ce9491285ff2b02b92e79f6591  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-char-fwrapv.c
  bc538b78d826c6d929d4d4cc8a050ca6  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-char.c
  fc9f8abb6fc339215e8874dc977f42a9  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-floatdouble.c
--- 66129,66160 ----
  6768d5d711515ed5b6da41a056b388ab  gcc/testsuite/gcc.target/powerpc/float128-5.c
  d7cdcfd586315d965f78adeae2689b77  gcc/testsuite/gcc.target/powerpc/float128-call.c
  d2e66a0adae820881b99ec45ffe24c78  gcc/testsuite/gcc.target/powerpc/float128-cmp.c
! 5a85c91ce9fcc3b73b638295db4d02b2  gcc/testsuite/gcc.target/powerpc/float128-cmp2-runnable.c
  c30565a907667e990dd7f92247003742  gcc/testsuite/gcc.target/powerpc/float128-complex-1.c
  eb3c3874b4477c7a84697fb0ec856be8  gcc/testsuite/gcc.target/powerpc/float128-complex-2.c
! 947cc2d0979c0deb0e29543fd5844482  gcc/testsuite/gcc.target/powerpc/float128-fma1.c
! f160590fc0253f43510e8bb41d6c5b4d  gcc/testsuite/gcc.target/powerpc/float128-hw.c
! 1290d54b6f45970d0eb251c8fcdeb870  gcc/testsuite/gcc.target/powerpc/float128-hw10.c
! 8cfda8709bba213497265f10f4445f9d  gcc/testsuite/gcc.target/powerpc/float128-hw11.c
! c5f778615c24c40e2b1360df121979cc  gcc/testsuite/gcc.target/powerpc/float128-hw2.c
! a5281a5add4f57bd9f20e5929923f1ea  gcc/testsuite/gcc.target/powerpc/float128-hw3.c
! fa85518761e05ea1b7911472fe973343  gcc/testsuite/gcc.target/powerpc/float128-hw4.c
! 5d4f9abc4e5250c43cf9eaa8404ed6da  gcc/testsuite/gcc.target/powerpc/float128-hw5.c
! 9c9de5bbd726458baf3797289d69d1b9  gcc/testsuite/gcc.target/powerpc/float128-hw6.c
! e389bb5a0e38ec6cbc075059b8ca5097  gcc/testsuite/gcc.target/powerpc/float128-hw7.c
! 3c4ecbb2bc43adefffd8717adc1ac5b3  gcc/testsuite/gcc.target/powerpc/float128-hw8.c
! f5694c7e9c5b3bff03f9ed4ed0f44287  gcc/testsuite/gcc.target/powerpc/float128-hw9.c
! 1bfe07e7e08f200440538b1544af3c81  gcc/testsuite/gcc.target/powerpc/float128-longdouble-math.c
! ecb6702ec576754aa1c226cb34fba2a9  gcc/testsuite/gcc.target/powerpc/float128-longdouble-stdio.c
! e8d96efd9bb48348b9c55c740d924256  gcc/testsuite/gcc.target/powerpc/float128-math.c
! 051cef85df6cf490c318ed539515b8e6  gcc/testsuite/gcc.target/powerpc/float128-minmax.c
! a4ce181d9028c3331d12902e18b6c8cb  gcc/testsuite/gcc.target/powerpc/float128-mix-2.c
! 7e61fd8543295554419a5912d79afeb9  gcc/testsuite/gcc.target/powerpc/float128-mix-3.c
! d8a8e21eb6eebbb81346e00d9e4a210f  gcc/testsuite/gcc.target/powerpc/float128-mix.c
! 3a7af09fa8357a8c80ed50a3cad62c20  gcc/testsuite/gcc.target/powerpc/float128-odd.c
! 5e9ae7e3a7494688d889769d4532efae  gcc/testsuite/gcc.target/powerpc/float128-sqrt1.c
! 5768c9640bb50ab91e62ecf03e9527df  gcc/testsuite/gcc.target/powerpc/float128-type-1.c
! 1db5d06a7ec691586dade4a5d0d9d46d  gcc/testsuite/gcc.target/powerpc/float128-type-2.c
  e0ad25ce9491285ff2b02b92e79f6591  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-char-fwrapv.c
  bc538b78d826c6d929d4d4cc8a050ca6  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-char.c
  fc9f8abb6fc339215e8874dc977f42a9  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-floatdouble.c
*************** a74141cbbf5be937c226ffee13bee031  gcc/te
*** 62346,62379 ****
  34c909a89e104fa83e45b28020ea4537  gcc/testsuite/gcc.target/powerpc/fold-vec-div-float.c
  bc4ffe5b102cbda3b8132211813a5f60  gcc/testsuite/gcc.target/powerpc/fold-vec-div-floatdouble.c
  b23087b3776828b011e37164ee251121  gcc/testsuite/gcc.target/powerpc/fold-vec-div-longlong.c
! 4a741d84807f2b5f77fd5c99da834bc2  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-char.p7.c
! 2909d8d4e73bdca75dcda34fe791b3c0  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-char.p8.c
! 6d31b5d6869c608fdfcfcaaa1e3f10f0  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-char.p9.c
! c756100114d02491c7e96a49ec8e9b6b  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p7.c
! 6097b3cb3002fe73574924b12a220323  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p8.c
! cffa317f9c6ce57400d67820410f5e65  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p9.c
! 3e3417ed095727e3c7f1f52c7194f26a  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p7.c
! b4614877aa76e30258eae07d6653944b  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p8.c
! 05e50fe7343c128f374f5b0bb934de9c  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p9.c
! d8797cd884ad9c03962b8b0e145a570e  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-int.p7.c
! 1c91b4c5504abeacd4c4598208568031  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-int.p8.c
! b0f667e720a5f555f1c1a5e1e63b0f97  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-int.p9.c
! 2c6a4a1e7b792cbbb9ee4d82cae64eae  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-longlong.p7.c
! 7de6f786c622a45d84b4a506f01fa7d9  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-longlong.p8.c
! e4e61c6b0c94824e3b305107c5bef73e  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-longlong.p9.c
! 7b2c2d5667f4ee69f766c5c3b61551a3  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-short.p7.c
! 8b5f3e4f9adfc165d7388a5c953ff4b8  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-short.p8.c
! 9e3659e26493a303be89fe0e7194dcc1  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-short.p9.c
! 6212e559838fa9468c68f0bf8ba4073d  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-char-p8.c
! 30eefea3a4634a972e8bbce4fa31feaf  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-char-p9.c
! d580b699a0834cb1a4dc2f562ca77071  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-double.c
! b233cfeb6cb05cd1dcae2ceda13c071d  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-float-p8.c
! c17fdc68887316eab6b0ee4da8961b8c  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-float-p9.c
! 98d5dba112f5cb59e3706f7fa892a0cf  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-int-p8.c
! 566d76af427638d4f39480c75f44a2b7  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-int-p9.c
! e8692a60f09bd9f45df03a12af3aadad  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-longlong.c
! 93442e9374601ba9fec4e942f8562612  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-short-p8.c
! 453289cf8adf0e6d05c0b90772790bf1  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-short-p9.c
  f83dd36ea74330541196905107594a4b  gcc/testsuite/gcc.target/powerpc/fold-vec-ld-char.c
  789754980b9d6f48bf02b8d3e87b72ed  gcc/testsuite/gcc.target/powerpc/fold-vec-ld-double.c
  857fe53226a86ade248b779d3f5a20d6  gcc/testsuite/gcc.target/powerpc/fold-vec-ld-float.c
--- 66201,66234 ----
  34c909a89e104fa83e45b28020ea4537  gcc/testsuite/gcc.target/powerpc/fold-vec-div-float.c
  bc4ffe5b102cbda3b8132211813a5f60  gcc/testsuite/gcc.target/powerpc/fold-vec-div-floatdouble.c
  b23087b3776828b011e37164ee251121  gcc/testsuite/gcc.target/powerpc/fold-vec-div-longlong.c
! 281b80b6f83e9dd0d46cb2a376157b20  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-char.p7.c
! c0d91fe2e7dbdb7d7aedb914d67fcedb  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-char.p8.c
! e878b1f5b97280c654030ad18132a088  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-char.p9.c
! 06662a48faa71b240b5e9d3c1e1ba5af  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p7.c
! fa27145dde6c108df6e976bb402b111c  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p8.c
! 535358f98c3b8827140dd2a785bc95d3  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p9.c
! 89f40be7947fda24987e25856b7b165e  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p7.c
! fc258cfb8dc3c7bd06ab308198b80404  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p8.c
! 7a0759e27979c5806319cd64c6401208  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p9.c
! ba44c22af8fc41d6af9d5e804762b5d3  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-int.p7.c
! 07dc14621a6458c0bd6bf7abab469a91  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-int.p8.c
! 15f587810c3d44d43d07acdf08ed8172  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-int.p9.c
! 34229cd255d399db41aeaa2e3d6a7d4b  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-longlong.p7.c
! e74ad96144d5acea58122904f48c65f8  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-longlong.p8.c
! 1f22d28d38cd21aeccbd1200e083292c  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-longlong.p9.c
! a5325c8cc86dc478739621b3d95026f9  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-short.p7.c
! cb3bd583a4d262fb790046331d439005  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-short.p8.c
! 6994c144ac60ae33eec89d3cc3c5a5d3  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-short.p9.c
! ece82d4c2ddf426273ca99cdb03376b3  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-char-p8.c
! 341788b17eb18d27671f590a7e0c375a  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-char-p9.c
! d03c7fdf183782e0dca3f4ddf4cfc464  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-double.c
! 58774bd87f327119c53fd6ab1d6eb511  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-float-p8.c
! 4e6ef1fd54b154244a3634123d4dce3f  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-float-p9.c
! 5e6552158b74ab765143f60ef099aabb  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-int-p8.c
! 189950203483766908f3e93840583ccf  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-int-p9.c
! 358a1b5347d6ed7c0c086f1a45e89f6f  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-longlong.c
! 152fdf8c5bbcc4e786dafecc0c341284  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-short-p8.c
! 81db8105bbcf392a81df370f6532454c  gcc/testsuite/gcc.target/powerpc/fold-vec-insert-short-p9.c
  f83dd36ea74330541196905107594a4b  gcc/testsuite/gcc.target/powerpc/fold-vec-ld-char.c
  789754980b9d6f48bf02b8d3e87b72ed  gcc/testsuite/gcc.target/powerpc/fold-vec-ld-double.c
  857fe53226a86ade248b779d3f5a20d6  gcc/testsuite/gcc.target/powerpc/fold-vec-ld-float.c
*************** a6bf49f1508c4751594982b3ba9c1402  gcc/te
*** 62409,62422 ****
  0180cb57809678d426e0d00f6096dc95  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-eqv-int.c
  8cb96605893eab102110a3d357c0cf9c  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-eqv-longlong.c
  b33048beec786386cef47b9a43d3e4bc  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-eqv-short.c
! 443ce99f821a9feb00a98e2a591f4c29  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-char.c
! 185d0e9ecf31b83eefc4f2db4c41aecc  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-int.c
! 1ec5e1c92db7fd07efbd25a1edcd6bb3  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-longlong.c
! 4837c956f9c14a1f2b93ce2662208ae6  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-short.c
! 14496c66f68e70e4d54c6224b99a6e68  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-char.c
! 0fecdd9b6837283d8fa44375b8657abe  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-int.c
! 1c58bddd0cdb6952ec646377281cdd4e  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-longlong.c
! cd991630470a6090f4911b25a5e6100a  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-short.c
  51130abd0d75c8b7084cf4776be63043  gcc/testsuite/gcc.target/powerpc/fold-vec-madd-double.c
  c5a2e0e18b989631ff4f1c9e4b0f5ee2  gcc/testsuite/gcc.target/powerpc/fold-vec-madd-float.c
  b2740aca0f3481b5d711325fed94bf4b  gcc/testsuite/gcc.target/powerpc/fold-vec-madd-short.c
--- 66264,66277 ----
  0180cb57809678d426e0d00f6096dc95  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-eqv-int.c
  8cb96605893eab102110a3d357c0cf9c  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-eqv-longlong.c
  b33048beec786386cef47b9a43d3e4bc  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-eqv-short.c
! 223caa64a4f9aab3244298aa1cf8454c  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-char.c
! b5fc9639023acca2b844e31157e91dba  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-int.c
! f2652e32a478d15311828858b63abe0b  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-longlong.c
! d053c4bbb332ec3a6e4e9aae2f9c3a7e  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-short.c
! e7a4e76d4e305a6363e59b00fa6e8139  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-char.c
! d361bcf905ef1ae2cbeca6f79ba344a4  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-int.c
! 0d0bda4531ebb9575036a51d41a7ac24  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-longlong.c
! d77734b38749e7669471f97a5a641c1c  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-short.c
  51130abd0d75c8b7084cf4776be63043  gcc/testsuite/gcc.target/powerpc/fold-vec-madd-double.c
  c5a2e0e18b989631ff4f1c9e4b0f5ee2  gcc/testsuite/gcc.target/powerpc/fold-vec-madd-float.c
  b2740aca0f3481b5d711325fed94bf4b  gcc/testsuite/gcc.target/powerpc/fold-vec-madd-short.c
*************** e44b137e0ce85e7e42d8c53162f08089  gcc/te
*** 62462,62477 ****
  9dc9af4f6434ea16e511ecf0c0ed2a3c  gcc/testsuite/gcc.target/powerpc/fold-vec-pack-int.c
  e10f21270c1b37353711b71077d3364a  gcc/testsuite/gcc.target/powerpc/fold-vec-pack-longlong.c
  95ee03eb866a6ce8e68fe4231fc04a00  gcc/testsuite/gcc.target/powerpc/fold-vec-pack-short.c
! 1dd4b09002ccf2ca5bbd1518929b8316  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-char.c
! 19d44bd62e72e0205c40e26b2b4df68d  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-double.c
! 1fb2206eaccfda22d994d9d6de6c6cc7  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-float.c
! 4baebb85bbe024167cc6185fb21b77ed  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-int.c
! 8692c1502be902bd1350304de037dbf1  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-longlong.c
! 649a105c39f5109a8adc866ec53b11ac  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-pixel.c
! 6036a10c55cf6b4de5fc6e75956ff8c7  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-short.c
  5b0744b0b5565e3157eefb0eeb12d8e3  gcc/testsuite/gcc.target/powerpc/fold-vec-select-char.c
! 79f70f59a9007b4749de50d31c66e850  gcc/testsuite/gcc.target/powerpc/fold-vec-select-double.c
! d1a2f8e6e8606638aed0c0c0342d8cfc  gcc/testsuite/gcc.target/powerpc/fold-vec-select-float.c
  528671ac5fa40094ad0850b0a6f57b34  gcc/testsuite/gcc.target/powerpc/fold-vec-select-int.c
  15ce020fe88301e74e0dada945d3665b  gcc/testsuite/gcc.target/powerpc/fold-vec-select-longlong.c
  4c313a7047c9bf216849b1332e6c736c  gcc/testsuite/gcc.target/powerpc/fold-vec-select-short.c
--- 66317,66332 ----
  9dc9af4f6434ea16e511ecf0c0ed2a3c  gcc/testsuite/gcc.target/powerpc/fold-vec-pack-int.c
  e10f21270c1b37353711b71077d3364a  gcc/testsuite/gcc.target/powerpc/fold-vec-pack-longlong.c
  95ee03eb866a6ce8e68fe4231fc04a00  gcc/testsuite/gcc.target/powerpc/fold-vec-pack-short.c
! 199a4c2e03db86236fcdf85bef7f3f4e  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-char.c
! 4e69b825017e023761b8caac4483112e  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-double.c
! 600615fc6204dffba26ad3c6529017c2  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-float.c
! 4590d971f518051e598fc8753c12e122  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-int.c
! c7345d3a8b7347730058cb8cc10de9dd  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-longlong.c
! 9ae68d31e49898985c619a910ca7aa07  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-pixel.c
! f0aa86bc355cbd349d4d86ad17d5d7af  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-short.c
  5b0744b0b5565e3157eefb0eeb12d8e3  gcc/testsuite/gcc.target/powerpc/fold-vec-select-char.c
! 53672f78ec893c4b59e6e57e8c86263e  gcc/testsuite/gcc.target/powerpc/fold-vec-select-double.c
! d1807d527b384d685f9a957299d36672  gcc/testsuite/gcc.target/powerpc/fold-vec-select-float.c
  528671ac5fa40094ad0850b0a6f57b34  gcc/testsuite/gcc.target/powerpc/fold-vec-select-int.c
  15ce020fe88301e74e0dada945d3665b  gcc/testsuite/gcc.target/powerpc/fold-vec-select-longlong.c
  4c313a7047c9bf216849b1332e6c736c  gcc/testsuite/gcc.target/powerpc/fold-vec-select-short.c
*************** c30d8748ce25dc33d712b08fb07301c2  gcc/te
*** 62495,62502 ****
  0bd12473bbe86815229a5660d3d7ce3c  gcc/testsuite/gcc.target/powerpc/fold-vec-splat-short.c
  7e72d88480949b66c5c1e5b2c18e5d77  gcc/testsuite/gcc.target/powerpc/fold-vec-splats-char.c
  d4351a17ccf4738cb5ab89b0044bae85  gcc/testsuite/gcc.target/powerpc/fold-vec-splats-floatdouble.c
! 231c569ad333c507233f20889d924e94  gcc/testsuite/gcc.target/powerpc/fold-vec-splats-int.c
! 85c72f2c8e81ba5339120cd870008431  gcc/testsuite/gcc.target/powerpc/fold-vec-splats-longlong.c
  307b24eba5ae45bbe82f970992e84526  gcc/testsuite/gcc.target/powerpc/fold-vec-splats-short.c
  e4fbe5d0e5c9d22841c6836a3291bd79  gcc/testsuite/gcc.target/powerpc/fold-vec-st-char.c
  c884f4242bd424ff4337f85e2a9563f6  gcc/testsuite/gcc.target/powerpc/fold-vec-st-double.c
--- 66350,66357 ----
  0bd12473bbe86815229a5660d3d7ce3c  gcc/testsuite/gcc.target/powerpc/fold-vec-splat-short.c
  7e72d88480949b66c5c1e5b2c18e5d77  gcc/testsuite/gcc.target/powerpc/fold-vec-splats-char.c
  d4351a17ccf4738cb5ab89b0044bae85  gcc/testsuite/gcc.target/powerpc/fold-vec-splats-floatdouble.c
! 317cfaac7b35d9fc0833c3d983441065  gcc/testsuite/gcc.target/powerpc/fold-vec-splats-int.c
! f194a71a4d66505f05a1c02b855784c6  gcc/testsuite/gcc.target/powerpc/fold-vec-splats-longlong.c
  307b24eba5ae45bbe82f970992e84526  gcc/testsuite/gcc.target/powerpc/fold-vec-splats-short.c
  e4fbe5d0e5c9d22841c6836a3291bd79  gcc/testsuite/gcc.target/powerpc/fold-vec-st-char.c
  c884f4242bd424ff4337f85e2a9563f6  gcc/testsuite/gcc.target/powerpc/fold-vec-st-double.c
*************** d4c680a0477ecbe2fd90e52278838082  gcc/te
*** 62549,62566 ****
  b777ef2a10f6f5ff643ab886bf487233  gcc/testsuite/gcc.target/powerpc/htm-xl-intrin-1.c
  8d634b2a7d443f1e5b4b69716e57ac00  gcc/testsuite/gcc.target/powerpc/indexed-addr.c
  1cc843325d44861ca12b01f8232baced  gcc/testsuite/gcc.target/powerpc/inf128-1.c
! ffc6830a7ab780cfd15ff8582d96a3f7  gcc/testsuite/gcc.target/powerpc/le-altivec-consts.c
  7893fdf7b4681a84cb4d049bea9ffc10  gcc/testsuite/gcc.target/powerpc/leaf.c
  9d79c9715a5734121e7d5c8fa078a7df  gcc/testsuite/gcc.target/powerpc/lhs-1.c
  b72cb485bdc6a86fc8bed93d719c35f4  gcc/testsuite/gcc.target/powerpc/lhs-2.c
  b2412be69d79cb1133b1ed3356a36fb3  gcc/testsuite/gcc.target/powerpc/lhs-3.c
! dbbaed61ec168f90bf1e947a8fa6c878  gcc/testsuite/gcc.target/powerpc/localentry-1.c
  56e1036ccf522d7df193857b864926f7  gcc/testsuite/gcc.target/powerpc/localentry-detect-1.c
  edd0512cd703018bda99c607e742ce2c  gcc/testsuite/gcc.target/powerpc/longcall-1.c
  094f3e09aed127827288e30d1b8d8303  gcc/testsuite/gcc.target/powerpc/longcall-2.c
  be1c76ec79fb3c50cde115977877bc10  gcc/testsuite/gcc.target/powerpc/loop_align.c
! e3e42cd5092a59ffd4a63afcc6c1efe5  gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
! c97fc8a68062ce7030d1c0bffaf20318  gcc/testsuite/gcc.target/powerpc/m128-check.h
  95f0a3ed470b480e62e5510f13cd33b8  gcc/testsuite/gcc.target/powerpc/macho-lo-sum.c
  baa1c96a04108c49c5c268ec5064328b  gcc/testsuite/gcc.target/powerpc/maddld-1.c
  e0e14ff5cc47e2735efaf83f4740e789  gcc/testsuite/gcc.target/powerpc/maddld.c
--- 66404,66423 ----
  b777ef2a10f6f5ff643ab886bf487233  gcc/testsuite/gcc.target/powerpc/htm-xl-intrin-1.c
  8d634b2a7d443f1e5b4b69716e57ac00  gcc/testsuite/gcc.target/powerpc/indexed-addr.c
  1cc843325d44861ca12b01f8232baced  gcc/testsuite/gcc.target/powerpc/inf128-1.c
! 2cfd2ecd43230367d6d063b77664e314  gcc/testsuite/gcc.target/powerpc/le-altivec-consts.c
  7893fdf7b4681a84cb4d049bea9ffc10  gcc/testsuite/gcc.target/powerpc/leaf.c
  9d79c9715a5734121e7d5c8fa078a7df  gcc/testsuite/gcc.target/powerpc/lhs-1.c
  b72cb485bdc6a86fc8bed93d719c35f4  gcc/testsuite/gcc.target/powerpc/lhs-2.c
  b2412be69d79cb1133b1ed3356a36fb3  gcc/testsuite/gcc.target/powerpc/lhs-3.c
! f8f126149a6da294781e9649ee3b2d6e  gcc/testsuite/gcc.target/powerpc/localentry-1.c
  56e1036ccf522d7df193857b864926f7  gcc/testsuite/gcc.target/powerpc/localentry-detect-1.c
  edd0512cd703018bda99c607e742ce2c  gcc/testsuite/gcc.target/powerpc/longcall-1.c
  094f3e09aed127827288e30d1b8d8303  gcc/testsuite/gcc.target/powerpc/longcall-2.c
  be1c76ec79fb3c50cde115977877bc10  gcc/testsuite/gcc.target/powerpc/loop_align.c
! 997888f97d97b2d6b3f8334578cdef8e  gcc/testsuite/gcc.target/powerpc/lsbb-runnable.c
! 5f4e4a164e3c5d09cd44b230ee696aec  gcc/testsuite/gcc.target/powerpc/lsbb.c
! c69349fd2d4121ceb9ea7f49ba88582a  gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
! 6d76189401236bc0e8bdfcc728160312  gcc/testsuite/gcc.target/powerpc/m128-check.h
  95f0a3ed470b480e62e5510f13cd33b8  gcc/testsuite/gcc.target/powerpc/macho-lo-sum.c
  baa1c96a04108c49c5c268ec5064328b  gcc/testsuite/gcc.target/powerpc/maddld-1.c
  e0e14ff5cc47e2735efaf83f4740e789  gcc/testsuite/gcc.target/powerpc/maddld.c
*************** c54f25d14eb461caec02d191c2115a57  gcc/te
*** 62572,62579 ****
  1a289e9c372877c9be4845ad8afab3b0  gcc/testsuite/gcc.target/powerpc/mma-builtin-4.c
  a030b6c42d5b1e2f2855367dee56b37f  gcc/testsuite/gcc.target/powerpc/mma-builtin-5.c
  ab2a7ea5ea50966110883706974152ea  gcc/testsuite/gcc.target/powerpc/mma-builtin-6.c
! b77c15b5953e3377992dcb71f5ad1d7d  gcc/testsuite/gcc.target/powerpc/mma-double-test.c
! d7d0c674b26c29d4774fd79ed2a0e09c  gcc/testsuite/gcc.target/powerpc/mma-single-test.c
  a271f35c38761fdbb749bf1bec83cfe4  gcc/testsuite/gcc.target/powerpc/mma-supported.c
  fd90b8f8f736e4de9d0ea4c6ce93cf36  gcc/testsuite/gcc.target/powerpc/mmx-check.h
  8ea98bf9f7849c85085a75d0cc2e56f3  gcc/testsuite/gcc.target/powerpc/mmx-packs.c
--- 66429,66436 ----
  1a289e9c372877c9be4845ad8afab3b0  gcc/testsuite/gcc.target/powerpc/mma-builtin-4.c
  a030b6c42d5b1e2f2855367dee56b37f  gcc/testsuite/gcc.target/powerpc/mma-builtin-5.c
  ab2a7ea5ea50966110883706974152ea  gcc/testsuite/gcc.target/powerpc/mma-builtin-6.c
! 88617795d710b40cc25cbabe90e45e4e  gcc/testsuite/gcc.target/powerpc/mma-double-test.c
! 57fc310b69598562cbec3535f97fd354  gcc/testsuite/gcc.target/powerpc/mma-single-test.c
  a271f35c38761fdbb749bf1bec83cfe4  gcc/testsuite/gcc.target/powerpc/mma-supported.c
  fd90b8f8f736e4de9d0ea4c6ce93cf36  gcc/testsuite/gcc.target/powerpc/mmx-check.h
  8ea98bf9f7849c85085a75d0cc2e56f3  gcc/testsuite/gcc.target/powerpc/mmx-packs.c
*************** f86f87dd7c82f05785a8e530a4718235  gcc/te
*** 62625,62637 ****
  0831e4d64f9c944a22351c0a3a55d827  gcc/testsuite/gcc.target/powerpc/no-r11-2.c
  dd4f340682017146e72e169792e742bb  gcc/testsuite/gcc.target/powerpc/no-r11-3.c
  a3a18f288ff9a907cedfa89231e2d3e8  gcc/testsuite/gcc.target/powerpc/non-lazy-ptr-test.c
! 24cc145b81503e457200f10394c14cc5  gcc/testsuite/gcc.target/powerpc/notoc-direct-1.c
  b6f46bd0cf50a9df15d1cf7768e8087f  gcc/testsuite/gcc.target/powerpc/optimize-bswapdi-2.c
  b96c1a1a69bfb6f4e16a5153a31d50f7  gcc/testsuite/gcc.target/powerpc/optimize-bswapdi-3.c
  292aefe9bc5de9087844ad9ea6142eba  gcc/testsuite/gcc.target/powerpc/optimize-bswapsi-2.c
  582d7bb7e4106b5cb9134d552025a68e  gcc/testsuite/gcc.target/powerpc/outofline_rnreg.c
! d412a6e566d0085778a45407aed601be  gcc/testsuite/gcc.target/powerpc/p10-arch31.c
! 42d354a1a8188370b1b0f83ab21223ef  gcc/testsuite/gcc.target/powerpc/p10-identify.c
  6b3fcb3de6af2c0b3ca86ded91487247  gcc/testsuite/gcc.target/powerpc/p8-vec-xl-xst-v2.c
  b75815fd7a895d145154b5cf0c68e549  gcc/testsuite/gcc.target/powerpc/p8-vec-xl-xst.c
  8bea7369d1f259b76c9b70c7f551336b  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-1.c
--- 66482,66494 ----
  0831e4d64f9c944a22351c0a3a55d827  gcc/testsuite/gcc.target/powerpc/no-r11-2.c
  dd4f340682017146e72e169792e742bb  gcc/testsuite/gcc.target/powerpc/no-r11-3.c
  a3a18f288ff9a907cedfa89231e2d3e8  gcc/testsuite/gcc.target/powerpc/non-lazy-ptr-test.c
! f035830751745ff83c9c724164e9584f  gcc/testsuite/gcc.target/powerpc/notoc-direct-1.c
  b6f46bd0cf50a9df15d1cf7768e8087f  gcc/testsuite/gcc.target/powerpc/optimize-bswapdi-2.c
  b96c1a1a69bfb6f4e16a5153a31d50f7  gcc/testsuite/gcc.target/powerpc/optimize-bswapdi-3.c
  292aefe9bc5de9087844ad9ea6142eba  gcc/testsuite/gcc.target/powerpc/optimize-bswapsi-2.c
  582d7bb7e4106b5cb9134d552025a68e  gcc/testsuite/gcc.target/powerpc/outofline_rnreg.c
! 6a702c02bd87ec8a44c18c117a4a5a09  gcc/testsuite/gcc.target/powerpc/p10-arch31.c
! 9c56caddea7ae0680f831cbc5cf18478  gcc/testsuite/gcc.target/powerpc/p10-identify.c
  6b3fcb3de6af2c0b3ca86ded91487247  gcc/testsuite/gcc.target/powerpc/p8-vec-xl-xst-v2.c
  b75815fd7a895d145154b5cf0c68e549  gcc/testsuite/gcc.target/powerpc/p8-vec-xl-xst.c
  8bea7369d1f259b76c9b70c7f551336b  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-1.c
*************** dcf34acbf49340855b62e41838a7e645  gcc/te
*** 62643,62650 ****
  0fe547fc9f8742fdc4fd68e408fb6d1c  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-7.c
  3bf91ab0b62b47cdbeca264b9c3fbdf5  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-8.c
  7d895bd944a22999c51a99abad7237b0  gcc/testsuite/gcc.target/powerpc/p8vector-fp.c
! 5d84ff6e1bd894367be84e701af5937c  gcc/testsuite/gcc.target/powerpc/p8vector-int128-1.c
! 9d9524b54a91c38e3a38c67ad55a8bdb  gcc/testsuite/gcc.target/powerpc/p8vector-int128-2.c
  90e3e245eb4330a85e01d9d724e310df  gcc/testsuite/gcc.target/powerpc/p8vector-ldst.c
  dd2f431b724618c3322686b2732a44b1  gcc/testsuite/gcc.target/powerpc/p8vector-vbpermq.c
  e5741a8821fcabf823c731561f6fe007  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-1.c
--- 66500,66507 ----
  0fe547fc9f8742fdc4fd68e408fb6d1c  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-7.c
  3bf91ab0b62b47cdbeca264b9c3fbdf5  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-8.c
  7d895bd944a22999c51a99abad7237b0  gcc/testsuite/gcc.target/powerpc/p8vector-fp.c
! aeb37b52015afabe5b71ae61de11439a  gcc/testsuite/gcc.target/powerpc/p8vector-int128-1.c
! 03e5ad9b0268bf7e8d1cec36bef9bb85  gcc/testsuite/gcc.target/powerpc/p8vector-int128-2.c
  90e3e245eb4330a85e01d9d724e310df  gcc/testsuite/gcc.target/powerpc/p8vector-ldst.c
  dd2f431b724618c3322686b2732a44b1  gcc/testsuite/gcc.target/powerpc/p8vector-vbpermq.c
  e5741a8821fcabf823c731561f6fe007  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-1.c
*************** e5741a8821fcabf823c731561f6fe007  gcc/te
*** 62652,62689 ****
  5f1771310a05c32418316fd39ce1735c  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-3.c
  f894721021799aabe3eadaa2daf74231  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-4.c
  060af2b0be9baf28c65dd6a2c3c8a530  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-5.c
! 23f3f124a161c7987860ae811275669a  gcc/testsuite/gcc.target/powerpc/p9-dimode1.c
! ac2f0a6bc803fbaf6509240ea3d2acc3  gcc/testsuite/gcc.target/powerpc/p9-dimode2.c
! a455b54a8f13f5965638aa92530ba06f  gcc/testsuite/gcc.target/powerpc/p9-extract-1.c
! 6c3cb212e1a0cba16ab6ad772def40d5  gcc/testsuite/gcc.target/powerpc/p9-extract-2.c
! 8185e4779443b78db18620e5af1327d4  gcc/testsuite/gcc.target/powerpc/p9-extract-3.c
  cf1b99547521c33d8d864faace781136  gcc/testsuite/gcc.target/powerpc/p9-extract-4.c
! ba3feba26e529ce9069c048e54e60269  gcc/testsuite/gcc.target/powerpc/p9-fpcvt-1.c
! 3af29f5fda656f5cbda7ccb32c26555a  gcc/testsuite/gcc.target/powerpc/p9-fpcvt-2.c
! 7eb0fdf23c6c03b1b2377bba56bc8f0b  gcc/testsuite/gcc.target/powerpc/p9-lxvx-stxvx-1.c
! 97984e2a5c8bf9273fae2ca62c26a5d1  gcc/testsuite/gcc.target/powerpc/p9-lxvx-stxvx-2.c
! eaa0b30cb5a3e1c1169ccc06608090a5  gcc/testsuite/gcc.target/powerpc/p9-lxvx-stxvx-3.c
! 6c68377049b46f54b1697254880ad7d6  gcc/testsuite/gcc.target/powerpc/p9-minmax-1.c
! 2404aa3401b8013a4c89717b7f194886  gcc/testsuite/gcc.target/powerpc/p9-minmax-2.c
! dcc22069f0a6b69328b7f8f16feacfe6  gcc/testsuite/gcc.target/powerpc/p9-minmax-3.c
  a6211dec098d657a18749d7ffe72b371  gcc/testsuite/gcc.target/powerpc/p9-novsx.c
  f1c22b7125d1d3b2d4a8cb3878d6a313  gcc/testsuite/gcc.target/powerpc/p9-options-1.c
! 6cd521474593f6c7ac255ba3186607cb  gcc/testsuite/gcc.target/powerpc/p9-permute.c
! f04e0bb773fc966c2e98cb0a8ace7e51  gcc/testsuite/gcc.target/powerpc/p9-splat-1.c
! 2706049449f9ec1a2784fb228f71f8be  gcc/testsuite/gcc.target/powerpc/p9-splat-2.c
! 9037934ff7da94121f31eb6b8ae8659d  gcc/testsuite/gcc.target/powerpc/p9-splat-3.c
! e2e15e908351c26b4d33e3999348ff7c  gcc/testsuite/gcc.target/powerpc/p9-splat-4.c
  a3bc962cdf97f11842afa5f6bc2c6f87  gcc/testsuite/gcc.target/powerpc/p9-splat-5.c
! 6fe95409f0bc99933bc334a5e64a72f1  gcc/testsuite/gcc.target/powerpc/p9-vbpermd.c
! d29c4e53ac8e3c7f57f7b87eb5a985b7  gcc/testsuite/gcc.target/powerpc/p9-vneg.c
! 1a65f8d803e3ce8de1fa990485fcf89d  gcc/testsuite/gcc.target/powerpc/p9-vparity.c
! 5f48c99fd54a8939ef5f74a0d5326dc9  gcc/testsuite/gcc.target/powerpc/p9-vpermr.c
! a997d132b77f2e29f13d81e4357ebc1a  gcc/testsuite/gcc.target/powerpc/p9-xxbr-1.c
! 176d54b045b5bd5a943bc2331805ec99  gcc/testsuite/gcc.target/powerpc/p9-xxbr-2.c
! 377ee3d5295c5a6f84022ece7d4be993  gcc/testsuite/gcc.target/powerpc/p9-xxbr-3.c
! 6df295f00c6fe0afd335676632178fb9  gcc/testsuite/gcc.target/powerpc/pack01.c
! 265927dd0522bdf388e1e09fabd690a4  gcc/testsuite/gcc.target/powerpc/pack02.c
! 1f160a2dd7d4aca4c5e59f63cbdf9950  gcc/testsuite/gcc.target/powerpc/pack03.c
  d0bd3df7fee3d73a0acc876ce20691e2  gcc/testsuite/gcc.target/powerpc/paired-1.c
  0d7e5847184bc01c42a40dda9b07bda3  gcc/testsuite/gcc.target/powerpc/paired-10.c
  2bdeefd1d55b55e6e9b8ace714c9b100  gcc/testsuite/gcc.target/powerpc/paired-2.c
--- 66509,66595 ----
  5f1771310a05c32418316fd39ce1735c  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-3.c
  f894721021799aabe3eadaa2daf74231  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-4.c
  060af2b0be9baf28c65dd6a2c3c8a530  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-5.c
! 5fad8b402567215ed28ca6fdf43f0183  gcc/testsuite/gcc.target/powerpc/p9-dimode1.c
! a7f58c62ee3a7a8f1162eb70b615945a  gcc/testsuite/gcc.target/powerpc/p9-dimode2.c
! 5ebf6c3bb7886caeb7c355ef715c9e51  gcc/testsuite/gcc.target/powerpc/p9-extract-1.c
! 23e74d860629275756e652adec96ff26  gcc/testsuite/gcc.target/powerpc/p9-extract-2.c
! b98e9e294f5e7e979ffc1acb72861484  gcc/testsuite/gcc.target/powerpc/p9-extract-3.c
  cf1b99547521c33d8d864faace781136  gcc/testsuite/gcc.target/powerpc/p9-extract-4.c
! 6678d47ce9b81883fb0b45e6c5d6c333  gcc/testsuite/gcc.target/powerpc/p9-fpcvt-1.c
! 18cbd19f91352b7a14be01bcbd86d924  gcc/testsuite/gcc.target/powerpc/p9-fpcvt-2.c
! 4d8c4ecfe3669d8687af38cc0c4f3a7a  gcc/testsuite/gcc.target/powerpc/p9-lxvx-stxvx-1.c
! 3fb5bcfc98e67635f5ecdd53a0fc1a4d  gcc/testsuite/gcc.target/powerpc/p9-lxvx-stxvx-2.c
! 414edff1c1c6bb5fdc10af42b236acf0  gcc/testsuite/gcc.target/powerpc/p9-lxvx-stxvx-3.c
! 6a715cb43f89f921d9406b1b8a042a4e  gcc/testsuite/gcc.target/powerpc/p9-minmax-1.c
! e0ee656d5391035c8bb87de938172a70  gcc/testsuite/gcc.target/powerpc/p9-minmax-2.c
! c28edf1d4900581a18cfe9388ed98dd7  gcc/testsuite/gcc.target/powerpc/p9-minmax-3.c
  a6211dec098d657a18749d7ffe72b371  gcc/testsuite/gcc.target/powerpc/p9-novsx.c
  f1c22b7125d1d3b2d4a8cb3878d6a313  gcc/testsuite/gcc.target/powerpc/p9-options-1.c
! 9d87be0758175c69faf593117726c44c  gcc/testsuite/gcc.target/powerpc/p9-permute.c
! 19208a1ca04ecbd61dd2fc9f62b0bb17  gcc/testsuite/gcc.target/powerpc/p9-splat-1.c
! b3bd137ac2457919c51b1e0885a28cf9  gcc/testsuite/gcc.target/powerpc/p9-splat-2.c
! cdd965ef19d5f08902aa357d47055aab  gcc/testsuite/gcc.target/powerpc/p9-splat-3.c
! 9c522a85551b5bbc5d0b4c2f9a20f284  gcc/testsuite/gcc.target/powerpc/p9-splat-4.c
  a3bc962cdf97f11842afa5f6bc2c6f87  gcc/testsuite/gcc.target/powerpc/p9-splat-5.c
! 17596740248ab276808abe9c4da7815f  gcc/testsuite/gcc.target/powerpc/p9-vbpermd.c
! 696e4b1b607f9c82564bfc887f22bd00  gcc/testsuite/gcc.target/powerpc/p9-vec-length-1.h
! 5e9e7fcaee357c16920957129d3b8cef  gcc/testsuite/gcc.target/powerpc/p9-vec-length-2.h
! 4a0f1a087435b46bd7c5bad51f004a73  gcc/testsuite/gcc.target/powerpc/p9-vec-length-3.h
! e1b8cd08f8318d0a6b2e5b855075001d  gcc/testsuite/gcc.target/powerpc/p9-vec-length-4.h
! 0cf9ae56a4416b42c3267d64688c74b4  gcc/testsuite/gcc.target/powerpc/p9-vec-length-5.h
! 5d9fad6eebd37291c65898f8fbfd8aa4  gcc/testsuite/gcc.target/powerpc/p9-vec-length-6.h
! 4b4d6e3387e320581f6e26cd33efa8c4  gcc/testsuite/gcc.target/powerpc/p9-vec-length-7.h
! 542bcc43fcc4ae002c6071e4fb82f606  gcc/testsuite/gcc.target/powerpc/p9-vec-length-8.h
! 6f1960cdffbaef21e4593eccd38e7929  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-1.c
! f671afd110d5f782e9d20ab4ebc4d4be  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-2.c
! eba9fb2ef8829b4f12eb280c7bdf546b  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-3.c
! 61e552d417782e245d4e82c437d23974  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-4.c
! 3fa98625eb1aca5e5de550a027af26ab  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-5.c
! e3d0df1fe70a1a16f61af01a0541b590  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-6.c
! 2ed902e6a35be029c1294e839ad3a0f6  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-7.c
! 140e9ccca6e080ac87e45aa4eca7f44f  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-8.c
! 661823bc37a352c7a0284caefaf94ad3  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-1.c
! c93356c7aed0735689569396e6f3134e  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-2.c
! 9855b5087d8f6fff301d3c34593e4278  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-3.c
! 20a921820c1b8fd0817201a97b934f25  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-4.c
! 54d2fc7218c1bbcbe69e86ee0465fff5  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-5.c
! befd102cc556de49c551f984f7607ff5  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-6.c
! 6ab4acea9bc066025498eb5a8caa7ce8  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-7.c
! d9bf88eb680a6b1eb840090871e1de9d  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-8.c
! 3fb71c141b802aa4981bc89dd61a0241  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-1.c
! 998f7612089f7ca7151c60d297457a09  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-2.c
! b2622014ac647ae93ca6a19d4a0f6e63  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-3.c
! e3a4c5a3f53fd1f78bbff95301a9a0f3  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-4.c
! a619bdf3d50595136050c6201d6a33d5  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-5.c
! dd4a9f2f07298325bccd0457959de0aa  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-6.c
! e91a9930ace643bb1e055207643380c2  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-7.c
! 3ddfe6216b76faa377fb67e65f91b4dd  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-8.c
! 347f7ced5af84328cec5b76767c2dfd0  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-1.c
! 6011bbefd012a5722b03bf23fc01c8b7  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-2.c
! fa24c780840f4b77dd9ff11801a2aa9a  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-3.c
! 9d773ce9977c70a974bbe326e0de73e0  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-4.c
! 314492316c577b2f6456bff8a6cd3fc1  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-5.c
! ee8c0fe3fe328a4102e36f1a91ad6105  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-6.c
! 8ca03f8a0c659a56151a97f943da50a6  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-7.c
! 5589e88925a32c62e55841f14bf05ffb  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-8.c
! 942cd323752023f463209b0e08637fa7  gcc/testsuite/gcc.target/powerpc/p9-vec-length-run-1.h
! 04a50a51b12149b246a7f9bdfb5b49c5  gcc/testsuite/gcc.target/powerpc/p9-vec-length-run-2.h
! 0c85b9a857c49d8c5a3483bfee3bab0f  gcc/testsuite/gcc.target/powerpc/p9-vec-length-run-3.h
! 0219fb126bc34cb85df5257057e21476  gcc/testsuite/gcc.target/powerpc/p9-vec-length-run-4.h
! 54d6b43ec0a327fd86fc174b77196299  gcc/testsuite/gcc.target/powerpc/p9-vec-length-run-5.h
! 180ef017550d138f44dbf45a947589bd  gcc/testsuite/gcc.target/powerpc/p9-vec-length-run-6.h
! 5fef58d2720ce28dbd5bb63b0b62093a  gcc/testsuite/gcc.target/powerpc/p9-vec-length-run-7.h
! 71775cec123fe96ec58d805a44df5147  gcc/testsuite/gcc.target/powerpc/p9-vec-length-run-8.h
! ca2326bfc2b9007e3b63b0bea8890a00  gcc/testsuite/gcc.target/powerpc/p9-vec-length.h
! 384af3a86160f8a14629fb05f541acd4  gcc/testsuite/gcc.target/powerpc/p9-vneg.c
! 1927d37785de58e49934412776e54594  gcc/testsuite/gcc.target/powerpc/p9-vparity.c
! b26961d59fb61a1d972f9bce8166abcf  gcc/testsuite/gcc.target/powerpc/p9-vpermr.c
! effdc6f6f7d2783f62ecfc6b15424d8e  gcc/testsuite/gcc.target/powerpc/p9-xxbr-1.c
! f5ff4265dd8eef473babbbc9f92afdc2  gcc/testsuite/gcc.target/powerpc/p9-xxbr-2.c
! a2e51f3b0b91bf8206250c1ee0df078c  gcc/testsuite/gcc.target/powerpc/p9-xxbr-3.c
! b396e8c2ddafdac99a9e2e3405b62059  gcc/testsuite/gcc.target/powerpc/pack01.c
! e6411f2bd538317acd5d904235c162ea  gcc/testsuite/gcc.target/powerpc/pack02.c
! ef937a62c12c8f2079f32ebb9fe33257  gcc/testsuite/gcc.target/powerpc/pack03.c
  d0bd3df7fee3d73a0acc876ce20691e2  gcc/testsuite/gcc.target/powerpc/paired-1.c
  0d7e5847184bc01c42a40dda9b07bda3  gcc/testsuite/gcc.target/powerpc/paired-10.c
  2bdeefd1d55b55e6e9b8ace714c9b100  gcc/testsuite/gcc.target/powerpc/paired-2.c
*************** a49cebe820198e98df6e4c433d7270fd  gcc/te
*** 62695,62709 ****
  eb724f0712c2e09bd99aa65ce0b1419c  gcc/testsuite/gcc.target/powerpc/paired-8.c
  b1d50d914f0b51e97312384685214bc6  gcc/testsuite/gcc.target/powerpc/paired-9.c
  86c888f921328d6e3f8fa16fa17951f3  gcc/testsuite/gcc.target/powerpc/parity-1.c
! 91c4049fffa4c4700bb5dd186ced8eb3  gcc/testsuite/gcc.target/powerpc/pcrel-sibcall-1.c
  b818a05f9892ef086f53347beb95c5ab  gcc/testsuite/gcc.target/powerpc/popcount-1.c
  a1ca0398bda92fa2d58fffbdae74b412  gcc/testsuite/gcc.target/powerpc/popcount-2.c
  765612a7627c33c6b923cafa4b6f8492  gcc/testsuite/gcc.target/powerpc/popcount-3.c
! b080abf67b9e20eee7b6f8483fd80e1b  gcc/testsuite/gcc.target/powerpc/powerpc.exp
  7b955220897e3c489f9cc6a3dfbb95eb  gcc/testsuite/gcc.target/powerpc/ppc-and-1.c
  d6e0d31ab4778feea50f0fdf0f3bcd89  gcc/testsuite/gcc.target/powerpc/ppc-bitfield1.c
  1ea7507881ba72f6b3c6548f30014d46  gcc/testsuite/gcc.target/powerpc/ppc-compare-1.c
! 23301205b7d115cda31a5cdf4db0de11  gcc/testsuite/gcc.target/powerpc/ppc-eabi.c
  0701f9c78ba972a8b3eafece3a3366ae  gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
  174619a54d2d2cad26b5d4344c198caf  gcc/testsuite/gcc.target/powerpc/ppc-fma-1.c
  161ddb30bd440e60cf51f1a8898084be  gcc/testsuite/gcc.target/powerpc/ppc-fma-2.c
--- 66601,66634 ----
  eb724f0712c2e09bd99aa65ce0b1419c  gcc/testsuite/gcc.target/powerpc/paired-8.c
  b1d50d914f0b51e97312384685214bc6  gcc/testsuite/gcc.target/powerpc/paired-9.c
  86c888f921328d6e3f8fa16fa17951f3  gcc/testsuite/gcc.target/powerpc/parity-1.c
! fe184fd91ac97508d2006920b271ee12  gcc/testsuite/gcc.target/powerpc/pcrel-opt-inc-di.c
! 94dadd958822125746e98619d3f527c0  gcc/testsuite/gcc.target/powerpc/pcrel-opt-ld-df.c
! 62654a86e5c004ec190e9d10245e3588  gcc/testsuite/gcc.target/powerpc/pcrel-opt-ld-di.c
! f89fa3041761997d6e69ac72670b79e3  gcc/testsuite/gcc.target/powerpc/pcrel-opt-ld-hi.c
! aac3456f264b78b178a690d313b170d1  gcc/testsuite/gcc.target/powerpc/pcrel-opt-ld-qi.c
! 2ffbe4bdbdda128b64a1703488e09b9e  gcc/testsuite/gcc.target/powerpc/pcrel-opt-ld-sf.c
! fb9e41ba09709fcf845c02109e2c4371  gcc/testsuite/gcc.target/powerpc/pcrel-opt-ld-si.c
! cf24a387bedbe2627812358cc48ee295  gcc/testsuite/gcc.target/powerpc/pcrel-opt-ld-vector.c
! 5e875dfc8808072f5b05aedea58a4143  gcc/testsuite/gcc.target/powerpc/pcrel-opt-st-df.c
! e15f0c305599e0262ccab8962cd9d44b  gcc/testsuite/gcc.target/powerpc/pcrel-opt-st-di.c
! 91da07c3ec138987922764c621c385c6  gcc/testsuite/gcc.target/powerpc/pcrel-opt-st-hi.c
! 43a72300eebf7462ac89936c8f79bb6c  gcc/testsuite/gcc.target/powerpc/pcrel-opt-st-qi.c
! 0b18949bb793f268d45dc32c0adf633a  gcc/testsuite/gcc.target/powerpc/pcrel-opt-st-sf.c
! 6c66ebf4bc3acfeb860a033f13006305  gcc/testsuite/gcc.target/powerpc/pcrel-opt-st-si.c
! 208afe69b79f36a5388e20a2be13b8c9  gcc/testsuite/gcc.target/powerpc/pcrel-opt-st-vector.c
! f3bcfcd71339225d3b3fc35393553b55  gcc/testsuite/gcc.target/powerpc/pcrel-sibcall-1.c
! 463f06956e65859a0ffae0be953f89e2  gcc/testsuite/gcc.target/powerpc/pdep-0.c
! 7b38d1effbbe804bcb84bd922a858891  gcc/testsuite/gcc.target/powerpc/pdep-1.c
! 203ef0c0c9ee3953a67395f05dd9e0fb  gcc/testsuite/gcc.target/powerpc/pextd-0.c
! 0bd05410e906e30e21b0d96d1dae667c  gcc/testsuite/gcc.target/powerpc/pextd-1.c
  b818a05f9892ef086f53347beb95c5ab  gcc/testsuite/gcc.target/powerpc/popcount-1.c
  a1ca0398bda92fa2d58fffbdae74b412  gcc/testsuite/gcc.target/powerpc/popcount-2.c
  765612a7627c33c6b923cafa4b6f8492  gcc/testsuite/gcc.target/powerpc/popcount-3.c
! 4cd22361ae086706493b2b15c0f30535  gcc/testsuite/gcc.target/powerpc/powerpc.exp
  7b955220897e3c489f9cc6a3dfbb95eb  gcc/testsuite/gcc.target/powerpc/ppc-and-1.c
  d6e0d31ab4778feea50f0fdf0f3bcd89  gcc/testsuite/gcc.target/powerpc/ppc-bitfield1.c
  1ea7507881ba72f6b3c6548f30014d46  gcc/testsuite/gcc.target/powerpc/ppc-compare-1.c
! eb292fb2a4549af4ab49b7d224995874  gcc/testsuite/gcc.target/powerpc/ppc-eabi.c
  0701f9c78ba972a8b3eafece3a3366ae  gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
  174619a54d2d2cad26b5d4344c198caf  gcc/testsuite/gcc.target/powerpc/ppc-fma-1.c
  161ddb30bd440e60cf51f1a8898084be  gcc/testsuite/gcc.target/powerpc/ppc-fma-2.c
*************** dbe8b7a61a7368d65f67bfc4131425cf  gcc/te
*** 62715,62722 ****
  384725f498b861af6f8bed0530eeac73  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-1.c
  b49bfc8892e32ccd4715b924f41106d6  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-2.c
  90d042fffee10d77e01ab7cf9fcbb7c1  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-3.c
! 09e53b7a9cab9fc06bb92ba83c355d47  gcc/testsuite/gcc.target/powerpc/ppc-fortran/ieee128-math.f90
! e793245d314e02b247c324aa98af2ced  gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp
  d8dee8628be2277beaeffe1850a700cd  gcc/testsuite/gcc.target/powerpc/ppc-fortran/pr80108-1.f90
  164d50a721edad82a9cd9f4b63b1b8f9  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-1.c
  98f6990b548a4e10341ee0039997e942  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-10.c
--- 66640,66647 ----
  384725f498b861af6f8bed0530eeac73  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-1.c
  b49bfc8892e32ccd4715b924f41106d6  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-2.c
  90d042fffee10d77e01ab7cf9fcbb7c1  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-3.c
! 546f8b1533e6aef90ce72768fe282cb0  gcc/testsuite/gcc.target/powerpc/ppc-fortran/ieee128-math.f90
! 8a82f6ad39191bff0cbbf0171bdf7062  gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp
  d8dee8628be2277beaeffe1850a700cd  gcc/testsuite/gcc.target/powerpc/ppc-fortran/pr80108-1.f90
  164d50a721edad82a9cd9f4b63b1b8f9  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-1.c
  98f6990b548a4e10341ee0039997e942  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-10.c
*************** f2d3a6dbe5a7a5022c1f48fdd8952252  gcc/te
*** 62745,62752 ****
  dc85587b8ee1e7549684620b9583a8cf  gcc/testsuite/gcc.target/powerpc/ppc-round3.c
  01aaaef3cb8cee0f105c2e9489dc423d  gcc/testsuite/gcc.target/powerpc/ppc-sdata-1.c
  9dc1fa13d3f31bcd3a134627edb4458a  gcc/testsuite/gcc.target/powerpc/ppc-sdata-2.c
- dfe40f37e21dfeb8ec4678c9e51e0bb0  gcc/testsuite/gcc.target/powerpc/ppc-spe.c
- 87e474f57be9adad2f6d0a89328b39c3  gcc/testsuite/gcc.target/powerpc/ppc-spe64-1.c
  031e121f3288d78b35a626363fbb6306  gcc/testsuite/gcc.target/powerpc/ppc-stackalign-1.c
  347db92de42c68a0e17367b289aaa20b  gcc/testsuite/gcc.target/powerpc/ppc-stfiwx.c
  174cc8f1f01dfb1fd40568892781bc3d  gcc/testsuite/gcc.target/powerpc/ppc-switch-1.c
--- 66670,66675 ----
*************** d95ae0dca4407b271cab7b08a65cdd0d  gcc/te
*** 62777,62783 ****
  c79d8c338657eeb7d28fba8be724005d  gcc/testsuite/gcc.target/powerpc/pr17381.c
  93cd4ac4729555011c7a428533f1db83  gcc/testsuite/gcc.target/powerpc/pr18096-1.c
  ab27caeed3a927279188546795ad1803  gcc/testsuite/gcc.target/powerpc/pr25960.c
! 03f10f9b95fec07f481d7d42c3a8792a  gcc/testsuite/gcc.target/powerpc/pr26350.c
  e568badc378a1ea556b482bc42fe4220  gcc/testsuite/gcc.target/powerpc/pr27158.c
  e7cb34a71318969a14e6e5913d6c9d82  gcc/testsuite/gcc.target/powerpc/pr35907.c
  e183225a8b1a53401796864308b33359  gcc/testsuite/gcc.target/powerpc/pr37168.c
--- 66700,66706 ----
  c79d8c338657eeb7d28fba8be724005d  gcc/testsuite/gcc.target/powerpc/pr17381.c
  93cd4ac4729555011c7a428533f1db83  gcc/testsuite/gcc.target/powerpc/pr18096-1.c
  ab27caeed3a927279188546795ad1803  gcc/testsuite/gcc.target/powerpc/pr25960.c
! dd769e19e79e3e81d587561be1c4c5a7  gcc/testsuite/gcc.target/powerpc/pr26350.c
  e568badc378a1ea556b482bc42fe4220  gcc/testsuite/gcc.target/powerpc/pr27158.c
  e7cb34a71318969a14e6e5913d6c9d82  gcc/testsuite/gcc.target/powerpc/pr35907.c
  e183225a8b1a53401796864308b33359  gcc/testsuite/gcc.target/powerpc/pr37168.c
*************** fe0ac584cf475bdf88cf0c5379e02068  gcc/te
*** 62817,62823 ****
  c638e8830a3520905caf5144fa3bfd4e  gcc/testsuite/gcc.target/powerpc/pr51513.c
  2079afb39b02aee453b1737c8beaa071  gcc/testsuite/gcc.target/powerpc/pr51623.c
  7aecb0577eaa590e0c2b80f613225874  gcc/testsuite/gcc.target/powerpc/pr52199.c
! 80167dd4cf9b44a7ecd35beea11909bd  gcc/testsuite/gcc.target/powerpc/pr52457.c
  9c67f69383e271bfec6724ea8745e97b  gcc/testsuite/gcc.target/powerpc/pr52775.c
  a35d6874425760fd111ce6a9162043c1  gcc/testsuite/gcc.target/powerpc/pr53199.c
  de09210d456b5ec489b5febb07484cd5  gcc/testsuite/gcc.target/powerpc/pr53487.c
--- 66740,66746 ----
  c638e8830a3520905caf5144fa3bfd4e  gcc/testsuite/gcc.target/powerpc/pr51513.c
  2079afb39b02aee453b1737c8beaa071  gcc/testsuite/gcc.target/powerpc/pr51623.c
  7aecb0577eaa590e0c2b80f613225874  gcc/testsuite/gcc.target/powerpc/pr52199.c
! e3a64d163454e60156a731e48749fa21  gcc/testsuite/gcc.target/powerpc/pr52457.c
  9c67f69383e271bfec6724ea8745e97b  gcc/testsuite/gcc.target/powerpc/pr52775.c
  a35d6874425760fd111ce6a9162043c1  gcc/testsuite/gcc.target/powerpc/pr53199.c
  de09210d456b5ec489b5febb07484cd5  gcc/testsuite/gcc.target/powerpc/pr53487.c
*************** ea28759e6ccde5366d95808602337571  gcc/te
*** 62836,62851 ****
  5cf8dfe29bd7b71e42862452895adcb9  gcc/testsuite/gcc.target/powerpc/pr58673-2.c
  71efa814e2df5fb65075309616e87141  gcc/testsuite/gcc.target/powerpc/pr59054.c
  e2be005a17035d4d4c6269830259fd72  gcc/testsuite/gcc.target/powerpc/pr60032.c
- bdc93b77be1a8420539da2990319769c  gcc/testsuite/gcc.target/powerpc/pr60102.c
  f7e744d22854f13c66364fe3a722086f  gcc/testsuite/gcc.target/powerpc/pr60137.c
- 12074d3ad89194a4a27ad421ea2a8856  gcc/testsuite/gcc.target/powerpc/pr60158.c
  31056464243f248a7ecb83a996982e9e  gcc/testsuite/gcc.target/powerpc/pr60203.c
  5364c7cd89460e7ab273bea540e3a8ac  gcc/testsuite/gcc.target/powerpc/pr60676.c
- e5fedd87d9d84c4f0df6bdac6300b5f4  gcc/testsuite/gcc.target/powerpc/pr60735.c
  20ff46b0608216382ea6e9abd325e184  gcc/testsuite/gcc.target/powerpc/pr61977-1.c
  a8716538a35e149e6421a6a569b0d882  gcc/testsuite/gcc.target/powerpc/pr61977-2.c
  ec239ff2532cd3a33358fe0d15483672  gcc/testsuite/gcc.target/powerpc/pr62147.c
! b5f67a5154b009c6dec03e4ced76145b  gcc/testsuite/gcc.target/powerpc/pr63335.c
  90631e1f2929b792894198b96774c9fc  gcc/testsuite/gcc.target/powerpc/pr63354.c
  46f4342a0fb34a0068bd9a1bc0fb9644  gcc/testsuite/gcc.target/powerpc/pr63491.c
  a3fecc86b4f3176d71745478e4b20b0b  gcc/testsuite/gcc.target/powerpc/pr64019.c
--- 66759,66771 ----
  5cf8dfe29bd7b71e42862452895adcb9  gcc/testsuite/gcc.target/powerpc/pr58673-2.c
  71efa814e2df5fb65075309616e87141  gcc/testsuite/gcc.target/powerpc/pr59054.c
  e2be005a17035d4d4c6269830259fd72  gcc/testsuite/gcc.target/powerpc/pr60032.c
  f7e744d22854f13c66364fe3a722086f  gcc/testsuite/gcc.target/powerpc/pr60137.c
  31056464243f248a7ecb83a996982e9e  gcc/testsuite/gcc.target/powerpc/pr60203.c
  5364c7cd89460e7ab273bea540e3a8ac  gcc/testsuite/gcc.target/powerpc/pr60676.c
  20ff46b0608216382ea6e9abd325e184  gcc/testsuite/gcc.target/powerpc/pr61977-1.c
  a8716538a35e149e6421a6a569b0d882  gcc/testsuite/gcc.target/powerpc/pr61977-2.c
  ec239ff2532cd3a33358fe0d15483672  gcc/testsuite/gcc.target/powerpc/pr62147.c
! 6a8782e0ec292e03f4e2c80e84259d97  gcc/testsuite/gcc.target/powerpc/pr63335.c
  90631e1f2929b792894198b96774c9fc  gcc/testsuite/gcc.target/powerpc/pr63354.c
  46f4342a0fb34a0068bd9a1bc0fb9644  gcc/testsuite/gcc.target/powerpc/pr63491.c
  a3fecc86b4f3176d71745478e4b20b0b  gcc/testsuite/gcc.target/powerpc/pr64019.c
*************** f2e778a950bcbb9554eea5aed23fbbaf  gcc/te
*** 62860,62866 ****
  a7b8f91239a6849190c33d6dc7fca2f1  gcc/testsuite/gcc.target/powerpc/pr67071-1.c
  e038631511e1b99595d6a8397a4ef5e9  gcc/testsuite/gcc.target/powerpc/pr67071-2.c
  5c67dc7bd814ce966307b3d146df01a3  gcc/testsuite/gcc.target/powerpc/pr67071-3.c
! 7609b29cc525d34b4ba732f1f0e4a209  gcc/testsuite/gcc.target/powerpc/pr67789.c
  ae3029e81960085577585e91a8b8aa94  gcc/testsuite/gcc.target/powerpc/pr67808.c
  1b8d2d7106382393e997e79f710724e4  gcc/testsuite/gcc.target/powerpc/pr68163.c
  68a605fe9f861af7c52bc6cb9f79c12d  gcc/testsuite/gcc.target/powerpc/pr68805.c
--- 66780,66786 ----
  a7b8f91239a6849190c33d6dc7fca2f1  gcc/testsuite/gcc.target/powerpc/pr67071-1.c
  e038631511e1b99595d6a8397a4ef5e9  gcc/testsuite/gcc.target/powerpc/pr67071-2.c
  5c67dc7bd814ce966307b3d146df01a3  gcc/testsuite/gcc.target/powerpc/pr67071-3.c
! c738b7e719c6088a5ef4aca1a80910de  gcc/testsuite/gcc.target/powerpc/pr67789.c
  ae3029e81960085577585e91a8b8aa94  gcc/testsuite/gcc.target/powerpc/pr67808.c
  1b8d2d7106382393e997e79f710724e4  gcc/testsuite/gcc.target/powerpc/pr68163.c
  68a605fe9f861af7c52bc6cb9f79c12d  gcc/testsuite/gcc.target/powerpc/pr68805.c
*************** bb6ec828efc211131c5a036203ac7c94  gcc/te
*** 62882,62887 ****
--- 66802,66808 ----
  80e7937b9b3e36188653d2cd8217ff77  gcc/testsuite/gcc.target/powerpc/pr70963.c
  50b4ac7ce9c6314c3869b381a1b747f9  gcc/testsuite/gcc.target/powerpc/pr71186.c
  ab54a4817911d7d3bbe757072d7001e4  gcc/testsuite/gcc.target/powerpc/pr71297.c
+ d5f7ec75b912df0bc5809db72469c811  gcc/testsuite/gcc.target/powerpc/pr71309.c
  f417c588db95ee3f7fbced361af8dbfa  gcc/testsuite/gcc.target/powerpc/pr71310.c
  18f516c22671e1293affe8823881c35c  gcc/testsuite/gcc.target/powerpc/pr71493-1.c
  7d83053012a7579379ae3f803b73b2ec  gcc/testsuite/gcc.target/powerpc/pr71493-2.c
*************** a12535071d8f2b5ef1cd956e93153047  gcc/te
*** 62910,62916 ****
  6c92ebd0815729233bf7f336cbc77669  gcc/testsuite/gcc.target/powerpc/pr78056-5.c
  c8e4d5ccb2226fba0ad28aadabb79509  gcc/testsuite/gcc.target/powerpc/pr78056-6.c
  7269e93e0c9a9d55e127430a45880a33  gcc/testsuite/gcc.target/powerpc/pr78056-7.c
- 48bff2da189625fb832dd4d29b1da446  gcc/testsuite/gcc.target/powerpc/pr78458.c
  19e74ae8a63b24ab76c67fac9391c56f  gcc/testsuite/gcc.target/powerpc/pr78543.c
  0de8a5a6a228e4e540faf3f17739b976  gcc/testsuite/gcc.target/powerpc/pr78604.c
  1234f158984bdca5449a39cefc26a2dd  gcc/testsuite/gcc.target/powerpc/pr78658.c
--- 66831,66836 ----
*************** e77f24f1b3f26aacf550086da8e1c63b  gcc/te
*** 62921,62931 ****
  fb131f3896466dcc86b6cb615cf76c79  gcc/testsuite/gcc.target/powerpc/pr79066.c
  8da230c320f15c500acdd92bbf79cd69  gcc/testsuite/gcc.target/powerpc/pr79179.c
  fb524be9fd12ca8094bde96a06f3bdd5  gcc/testsuite/gcc.target/powerpc/pr79197.c
  13b9dd20539375055df7846adb6bdc98  gcc/testsuite/gcc.target/powerpc/pr79268.c
  cad693783acb9426bf8dcf12e2bd1813  gcc/testsuite/gcc.target/powerpc/pr79354.c
! 1d1ce8d2797d9a389d853baec7aa1d28  gcc/testsuite/gcc.target/powerpc/pr79439-1.c
! 1df15c1f8d0ba70bb676a5f87a035494  gcc/testsuite/gcc.target/powerpc/pr79439-2.c
! 3f6f1808be041f8f52badef7796aa576  gcc/testsuite/gcc.target/powerpc/pr79439-3.c
  5829d0a7a68783c89ec71703d975fd2e  gcc/testsuite/gcc.target/powerpc/pr79544.c
  11c4a5fd3c1ec7e01cc6d0285a790223  gcc/testsuite/gcc.target/powerpc/pr79799-1.c
  65e4e6c064ed5137777f863fd27f1421  gcc/testsuite/gcc.target/powerpc/pr79799-2.c
--- 66841,66858 ----
  fb131f3896466dcc86b6cb615cf76c79  gcc/testsuite/gcc.target/powerpc/pr79066.c
  8da230c320f15c500acdd92bbf79cd69  gcc/testsuite/gcc.target/powerpc/pr79179.c
  fb524be9fd12ca8094bde96a06f3bdd5  gcc/testsuite/gcc.target/powerpc/pr79197.c
+ 06614db7b0eda23af016ac8f01f92586  gcc/testsuite/gcc.target/powerpc/pr79251-run.p7.c
+ d196e5fb12502e953299ec47df85f91b  gcc/testsuite/gcc.target/powerpc/pr79251-run.p8.c
+ 739792749365d658ad924456e1bfe4da  gcc/testsuite/gcc.target/powerpc/pr79251-run.p9.c
+ 334bc6971aae3f5b06b6d18554b8a198  gcc/testsuite/gcc.target/powerpc/pr79251.h
+ 53523b8f6029f1e731e5096f1c07e251  gcc/testsuite/gcc.target/powerpc/pr79251.p7.c
+ 44ed924650e7d66ba24dbc124d4cf2c9  gcc/testsuite/gcc.target/powerpc/pr79251.p8.c
+ 9434bdc580a62e4893b53e1e86e40fef  gcc/testsuite/gcc.target/powerpc/pr79251.p9.c
  13b9dd20539375055df7846adb6bdc98  gcc/testsuite/gcc.target/powerpc/pr79268.c
  cad693783acb9426bf8dcf12e2bd1813  gcc/testsuite/gcc.target/powerpc/pr79354.c
! 488484e8a985fe9f1c5c93cbe3cccb03  gcc/testsuite/gcc.target/powerpc/pr79439-1.c
! e630f5d0f9e7ee9aedda99101ae4de1b  gcc/testsuite/gcc.target/powerpc/pr79439-2.c
! e91006f9d28ed78f637d335550563fe0  gcc/testsuite/gcc.target/powerpc/pr79439-3.c
  5829d0a7a68783c89ec71703d975fd2e  gcc/testsuite/gcc.target/powerpc/pr79544.c
  11c4a5fd3c1ec7e01cc6d0285a790223  gcc/testsuite/gcc.target/powerpc/pr79799-1.c
  65e4e6c064ed5137777f863fd27f1421  gcc/testsuite/gcc.target/powerpc/pr79799-2.c
*************** bf252b3f3ac1c5e65c691cdf4966081f  gcc/te
*** 62949,62955 ****
  543f42cc5f33cb0db0ee5350dadbfac0  gcc/testsuite/gcc.target/powerpc/pr80315-2.c
  183a3f95b41ff9517a574f5232f2ccc9  gcc/testsuite/gcc.target/powerpc/pr80315-3.c
  9021b53332884d46bc7a45f2732c9cfd  gcc/testsuite/gcc.target/powerpc/pr80315-4.c
- 735f25ac91d08f3de3f9e159e3752531  gcc/testsuite/gcc.target/powerpc/pr80343.c
  8af068f1ab09bfab1dc3d577a5323267  gcc/testsuite/gcc.target/powerpc/pr80510-1.c
  baa21bdea8db67ccd8932516a045495a  gcc/testsuite/gcc.target/powerpc/pr80510-2.c
  40f60f56a44835bd8e62164e2ee5bae4  gcc/testsuite/gcc.target/powerpc/pr80695-p8.c
--- 66876,66881 ----
*************** ea50ad0d71f532e863446139cc360b18  gcc/te
*** 62968,62981 ****
  d00f702a3eabc4c4562d778ce7c43884  gcc/testsuite/gcc.target/powerpc/pr82748-2.c
  94063e07a1d46fd61e894aa64b40ebaf  gcc/testsuite/gcc.target/powerpc/pr82848.c
  ea551d3ae1683b94dcf15935e3841a31  gcc/testsuite/gcc.target/powerpc/pr83399.c
! 076647b4ff3d50e411b44dda52f8f1c9  gcc/testsuite/gcc.target/powerpc/pr83629.c
  454b0f87867ea7aa84d83652eeff7620  gcc/testsuite/gcc.target/powerpc/pr83660.C
  0e10d8c65b18afcf4138404e469c5288  gcc/testsuite/gcc.target/powerpc/pr83677.c
  649c25d197e82583d1f58ca7dc0e0b9b  gcc/testsuite/gcc.target/powerpc/pr83862.c
  9ba71e6e5860c1d11c429ed5fc3374d3  gcc/testsuite/gcc.target/powerpc/pr83926.c
  88f706eef23e0ac23ef58bea3e3cf28a  gcc/testsuite/gcc.target/powerpc/pr83969.c
  864d120dc10ef939e30dca2faf8c357f  gcc/testsuite/gcc.target/powerpc/pr84014.c
! 0de3d984322ce77c3c0824b6c09dc361  gcc/testsuite/gcc.target/powerpc/pr84112.c
  f933cd0da11eebb48da12afacd0c1f1b  gcc/testsuite/gcc.target/powerpc/pr84154-1.c
  e4452d4000566fd56f010809beb8f4ee  gcc/testsuite/gcc.target/powerpc/pr84154-2.c
  63657f662b0fb35a7fbf970b1c35f0e5  gcc/testsuite/gcc.target/powerpc/pr84154-3.c
--- 66894,66907 ----
  d00f702a3eabc4c4562d778ce7c43884  gcc/testsuite/gcc.target/powerpc/pr82748-2.c
  94063e07a1d46fd61e894aa64b40ebaf  gcc/testsuite/gcc.target/powerpc/pr82848.c
  ea551d3ae1683b94dcf15935e3841a31  gcc/testsuite/gcc.target/powerpc/pr83399.c
! 15f19b48d6d84c3685af80447edafc48  gcc/testsuite/gcc.target/powerpc/pr83629.c
  454b0f87867ea7aa84d83652eeff7620  gcc/testsuite/gcc.target/powerpc/pr83660.C
  0e10d8c65b18afcf4138404e469c5288  gcc/testsuite/gcc.target/powerpc/pr83677.c
  649c25d197e82583d1f58ca7dc0e0b9b  gcc/testsuite/gcc.target/powerpc/pr83862.c
  9ba71e6e5860c1d11c429ed5fc3374d3  gcc/testsuite/gcc.target/powerpc/pr83926.c
  88f706eef23e0ac23ef58bea3e3cf28a  gcc/testsuite/gcc.target/powerpc/pr83969.c
  864d120dc10ef939e30dca2faf8c357f  gcc/testsuite/gcc.target/powerpc/pr84014.c
! 30a1a896107d295e2f08283d07a0ede8  gcc/testsuite/gcc.target/powerpc/pr84112.c
  f933cd0da11eebb48da12afacd0c1f1b  gcc/testsuite/gcc.target/powerpc/pr84154-1.c
  e4452d4000566fd56f010809beb8f4ee  gcc/testsuite/gcc.target/powerpc/pr84154-2.c
  63657f662b0fb35a7fbf970b1c35f0e5  gcc/testsuite/gcc.target/powerpc/pr84154-3.c
*************** d86d5375cd27e7c265ce5093d761b62e  gcc/te
*** 63007,63028 ****
  ac8ec30b46cfe96eba5cd34342878789  gcc/testsuite/gcc.target/powerpc/pr87496-1.c
  0a96769b5e11c63c292685789497867e  gcc/testsuite/gcc.target/powerpc/pr87496-2.c
  cf1e47fa56707db6216ed5de8f6df09f  gcc/testsuite/gcc.target/powerpc/pr87496-3.c
! 9737131ba70397a6e02d4dc540927ba9  gcc/testsuite/gcc.target/powerpc/pr87507.c
  a3fcebbcc49f4e8e80184966262e4f7c  gcc/testsuite/gcc.target/powerpc/pr87532-mc.c
  5fd4bcc0443a583aade647593b461bf0  gcc/testsuite/gcc.target/powerpc/pr87532.c
  53d85850aa1d585cffdde9ca76f1c992  gcc/testsuite/gcc.target/powerpc/pr87870.c
  cb0a8c588bb900030e2258e13d748a25  gcc/testsuite/gcc.target/powerpc/pr88100.c
  96eb5b3fd3f2812a018f01fd63b67f9b  gcc/testsuite/gcc.target/powerpc/pr88188-2.c
  9489612e4380ce85494a409bef20f69a  gcc/testsuite/gcc.target/powerpc/pr88188.c
! 486031fc4ba2460561f386a9d6eecc73  gcc/testsuite/gcc.target/powerpc/pr88233.c
  21d3c2767889f61719f3852cb79cdc5a  gcc/testsuite/gcc.target/powerpc/pr88457.c
! 34ba7f3bdc47c4ff8678244f7f449a80  gcc/testsuite/gcc.target/powerpc/pr88845.c
  dd95a2250e2db6dba5532882d6c626fd  gcc/testsuite/gcc.target/powerpc/pr88965.c
  185daccfe9cd0171b973121afbc70613  gcc/testsuite/gcc.target/powerpc/pr89225.c
  c37f43ea14b9c2771195287a84b61d7f  gcc/testsuite/gcc.target/powerpc/pr89424-0.c
  641d52f8caa1635a7b47a9370f9b19ed  gcc/testsuite/gcc.target/powerpc/pr89765-mc.c
! f18354e542a5b235f751e63b47400372  gcc/testsuite/gcc.target/powerpc/pr90763.c
! 6e6e83091f7af98c7e33078fcb5f09bd  gcc/testsuite/gcc.target/powerpc/pr91275.c
  146b79d794c5eb5a94bc0cd961b416b6  gcc/testsuite/gcc.target/powerpc/pr92090-2.c
  b3e3f8dd7576caaad7cff1f382fd583d  gcc/testsuite/gcc.target/powerpc/pr92090.c
  abf60b23a4b3272b1199e405e7527ff8  gcc/testsuite/gcc.target/powerpc/pr92132-fp-1.c
--- 66933,66956 ----
  ac8ec30b46cfe96eba5cd34342878789  gcc/testsuite/gcc.target/powerpc/pr87496-1.c
  0a96769b5e11c63c292685789497867e  gcc/testsuite/gcc.target/powerpc/pr87496-2.c
  cf1e47fa56707db6216ed5de8f6df09f  gcc/testsuite/gcc.target/powerpc/pr87496-3.c
! 85b904b99f65bd3883a1e1ea591387d3  gcc/testsuite/gcc.target/powerpc/pr87507.c
  a3fcebbcc49f4e8e80184966262e4f7c  gcc/testsuite/gcc.target/powerpc/pr87532-mc.c
  5fd4bcc0443a583aade647593b461bf0  gcc/testsuite/gcc.target/powerpc/pr87532.c
  53d85850aa1d585cffdde9ca76f1c992  gcc/testsuite/gcc.target/powerpc/pr87870.c
  cb0a8c588bb900030e2258e13d748a25  gcc/testsuite/gcc.target/powerpc/pr88100.c
  96eb5b3fd3f2812a018f01fd63b67f9b  gcc/testsuite/gcc.target/powerpc/pr88188-2.c
  9489612e4380ce85494a409bef20f69a  gcc/testsuite/gcc.target/powerpc/pr88188.c
! c75be0752698828e9a2843ce4464f296  gcc/testsuite/gcc.target/powerpc/pr88233.c
  21d3c2767889f61719f3852cb79cdc5a  gcc/testsuite/gcc.target/powerpc/pr88457.c
! edfc72e0b8e112e31e108fe03527f11f  gcc/testsuite/gcc.target/powerpc/pr88845.c
  dd95a2250e2db6dba5532882d6c626fd  gcc/testsuite/gcc.target/powerpc/pr88965.c
  185daccfe9cd0171b973121afbc70613  gcc/testsuite/gcc.target/powerpc/pr89225.c
+ 75c813324a3a167a863f7ea21db6b4b8  gcc/testsuite/gcc.target/powerpc/pr89310.c
  c37f43ea14b9c2771195287a84b61d7f  gcc/testsuite/gcc.target/powerpc/pr89424-0.c
  641d52f8caa1635a7b47a9370f9b19ed  gcc/testsuite/gcc.target/powerpc/pr89765-mc.c
! 039b3daec7a36e9b0099349f1b5d95a6  gcc/testsuite/gcc.target/powerpc/pr90763.c
! 1b66fd7b65ff295e707f90152d028d43  gcc/testsuite/gcc.target/powerpc/pr91275.c
! 2072d52286c6da2f18f4aee8fba55945  gcc/testsuite/gcc.target/powerpc/pr91903.c
  146b79d794c5eb5a94bc0cd961b416b6  gcc/testsuite/gcc.target/powerpc/pr92090-2.c
  b3e3f8dd7576caaad7cff1f382fd583d  gcc/testsuite/gcc.target/powerpc/pr92090.c
  abf60b23a4b3272b1199e405e7527ff8  gcc/testsuite/gcc.target/powerpc/pr92132-fp-1.c
*************** abf60b23a4b3272b1199e405e7527ff8  gcc/te
*** 63030,63060 ****
  c64c2073c71f6b39c57f2594bc701ec1  gcc/testsuite/gcc.target/powerpc/pr92132-int-1.c
  66f228a7206c26f044b983ccc48010c5  gcc/testsuite/gcc.target/powerpc/pr92132-int-2.c
  5ca836935ff861e5d765b50e1f687a46  gcc/testsuite/gcc.target/powerpc/pr92398.h
! d9fba0ca0fbffbec7b81998c68e37046  gcc/testsuite/gcc.target/powerpc/pr92398.p9+.c
! 5d5ca04b37310f5920f3cc8069f68a5a  gcc/testsuite/gcc.target/powerpc/pr92398.p9-.c
  010f88c66c9d3d8386cb62035157e272  gcc/testsuite/gcc.target/powerpc/pr92449-1.c
  378b75a654f2598d9c8ac7ee303abaca  gcc/testsuite/gcc.target/powerpc/pr92661.c
! a5fc88bf90afa7f901f574fd583163bf  gcc/testsuite/gcc.target/powerpc/pr92796.c
  aa28fe223a505772938b9d731a62130c  gcc/testsuite/gcc.target/powerpc/pr92923-1.c
  c187e0f1af6407257235b1bb9a2fb7ac  gcc/testsuite/gcc.target/powerpc/pr92923-2.c
  bf5eef64bd13d358ccd4ecc20fc71dea  gcc/testsuite/gcc.target/powerpc/pr93012.c
  6ed2bd11c87cb97b53a02a6da437dd68  gcc/testsuite/gcc.target/powerpc/pr93073.c
! 9a20865f980a7dab9057252484c9acee  gcc/testsuite/gcc.target/powerpc/pr93122.c
! 28bb6aa7286428bb15ccd941640b2015  gcc/testsuite/gcc.target/powerpc/pr93658.c
! d26617f5612756af307063fa03737a38  gcc/testsuite/gcc.target/powerpc/pr93800.c
  baf149d64053b2f0f606c42999ad64b8  gcc/testsuite/gcc.target/powerpc/pr95450.c
  c3fdf2edbc3880b6e23670387a188c81  gcc/testsuite/gcc.target/powerpc/pr96125.c
! fc375fa4611e61db9f6772989772cd97  gcc/testsuite/gcc.target/powerpc/pr96139-a.c
! 43db365adaa18cc0b1e481b8ad040696  gcc/testsuite/gcc.target/powerpc/pr96139-b.c
  077f66488295d290f80d30233e453520  gcc/testsuite/gcc.target/powerpc/pr96139-c.c
  260b4195fb458fd7f0ec3afc524236ff  gcc/testsuite/gcc.target/powerpc/pr96264.c
  4041fca09c3daed5a381d4dc45e9a366  gcc/testsuite/gcc.target/powerpc/pr96446.c
  06df07809324154deb45d934dbebf494  gcc/testsuite/gcc.target/powerpc/pr96493.c
! acacca4b5662f17d21391b583487172e  gcc/testsuite/gcc.target/powerpc/pr96506.c
  713c433c1e5c80361a865ab817cd27b1  gcc/testsuite/gcc.target/powerpc/pr96530.c
  54d85fa08f775bccdcae07e834cb4364  gcc/testsuite/gcc.target/powerpc/pr96808.c
  213beaa984952c5e9c8741ff42bef29f  gcc/testsuite/gcc.target/powerpc/pr97360.c
  f900d3f1e79811e92ae2e91267891d4a  gcc/testsuite/gcc.target/powerpc/pr98959.c
  64482d2c5f46fd2fe948c15ae7162cfd  gcc/testsuite/gcc.target/powerpc/pragma_misc9.c
  98c02b2c2946f882d2b5e41da4b7d78b  gcc/testsuite/gcc.target/powerpc/pragma_power6.c
  9fc46dc795793c68c68bcda62ba3bb06  gcc/testsuite/gcc.target/powerpc/pragma_power7.c
--- 66958,67008 ----
  c64c2073c71f6b39c57f2594bc701ec1  gcc/testsuite/gcc.target/powerpc/pr92132-int-1.c
  66f228a7206c26f044b983ccc48010c5  gcc/testsuite/gcc.target/powerpc/pr92132-int-2.c
  5ca836935ff861e5d765b50e1f687a46  gcc/testsuite/gcc.target/powerpc/pr92398.h
! 82db580c14907566cae987dd6f0df194  gcc/testsuite/gcc.target/powerpc/pr92398.p9+.c
! eed934473df14ab6fb58cc207749e704  gcc/testsuite/gcc.target/powerpc/pr92398.p9-.c
  010f88c66c9d3d8386cb62035157e272  gcc/testsuite/gcc.target/powerpc/pr92449-1.c
+ d7084bb2ee01735299dddbb33cae2878  gcc/testsuite/gcc.target/powerpc/pr92488.c
  378b75a654f2598d9c8ac7ee303abaca  gcc/testsuite/gcc.target/powerpc/pr92661.c
! 4003334bbe44d29365a1b5cc86183279  gcc/testsuite/gcc.target/powerpc/pr92796.c
  aa28fe223a505772938b9d731a62130c  gcc/testsuite/gcc.target/powerpc/pr92923-1.c
  c187e0f1af6407257235b1bb9a2fb7ac  gcc/testsuite/gcc.target/powerpc/pr92923-2.c
  bf5eef64bd13d358ccd4ecc20fc71dea  gcc/testsuite/gcc.target/powerpc/pr93012.c
  6ed2bd11c87cb97b53a02a6da437dd68  gcc/testsuite/gcc.target/powerpc/pr93073.c
! ffc3e49b879237e4c50decbfa7827c62  gcc/testsuite/gcc.target/powerpc/pr93122.c
! 5ef6b537342dd5bc130ca42c035010f7  gcc/testsuite/gcc.target/powerpc/pr93658.c
! 7ec2211c1708cebde5e1bb5e3087dd76  gcc/testsuite/gcc.target/powerpc/pr93800.c
! ca39e661d5c8829e74d8a523cedd9a16  gcc/testsuite/gcc.target/powerpc/pr94740.c
  baf149d64053b2f0f606c42999ad64b8  gcc/testsuite/gcc.target/powerpc/pr95450.c
+ e7cf1c47ea2ac68fa8b2f1bc1dc06872  gcc/testsuite/gcc.target/powerpc/pr95907.c
  c3fdf2edbc3880b6e23670387a188c81  gcc/testsuite/gcc.target/powerpc/pr96125.c
! c41dc78db559b0a60ade2f03b039206d  gcc/testsuite/gcc.target/powerpc/pr96139-a.c
! a07b15408dfcb7108da14ce215101920  gcc/testsuite/gcc.target/powerpc/pr96139-b.c
  077f66488295d290f80d30233e453520  gcc/testsuite/gcc.target/powerpc/pr96139-c.c
  260b4195fb458fd7f0ec3afc524236ff  gcc/testsuite/gcc.target/powerpc/pr96264.c
  4041fca09c3daed5a381d4dc45e9a366  gcc/testsuite/gcc.target/powerpc/pr96446.c
  06df07809324154deb45d934dbebf494  gcc/testsuite/gcc.target/powerpc/pr96493.c
! f296eca9a733cf4bb4e198a3539e8cec  gcc/testsuite/gcc.target/powerpc/pr96506-1.c
! 4057c480103b8c0cc29c131c3ab7cc50  gcc/testsuite/gcc.target/powerpc/pr96506-2.c
  713c433c1e5c80361a865ab817cd27b1  gcc/testsuite/gcc.target/powerpc/pr96530.c
+ 7586cf00c4e30dcc232464c012e42760  gcc/testsuite/gcc.target/powerpc/pr96787-1.c
+ 6ea7fa7b0623f6ebd9652c5acea96884  gcc/testsuite/gcc.target/powerpc/pr96787-2.c
  54d85fa08f775bccdcae07e834cb4364  gcc/testsuite/gcc.target/powerpc/pr96808.c
+ 53b5f3e1f11a40262b1977c28a603b1c  gcc/testsuite/gcc.target/powerpc/pr96933-1.c
+ a585de66ac1500bfd616065fa8b38782  gcc/testsuite/gcc.target/powerpc/pr96933-2.c
+ 0f16cd30e6ae3becaf7d8afe013843b7  gcc/testsuite/gcc.target/powerpc/pr96933-3.c
+ 32b43ec9035357886fe24d84ea5a564e  gcc/testsuite/gcc.target/powerpc/pr96933-4.c
+ a4b65c03b235e179c2c54ae705ca1314  gcc/testsuite/gcc.target/powerpc/pr96933-run.h
+ 3e3d83500b4f3407ec706aed288837c0  gcc/testsuite/gcc.target/powerpc/pr96933.h
+ c8159472599bdbc1920f30b21821761f  gcc/testsuite/gcc.target/powerpc/pr97019.c
+ 18aa6c13663fc57c77c9258b01d06c8b  gcc/testsuite/gcc.target/powerpc/pr97267.c
  213beaa984952c5e9c8741ff42bef29f  gcc/testsuite/gcc.target/powerpc/pr97360.c
+ be1d7456a640bf70727b92bfa00019b7  gcc/testsuite/gcc.target/powerpc/pr98092.c
+ adff3606ba35a019752b04f06365d9ae  gcc/testsuite/gcc.target/powerpc/pr98872.c
+ 16ccc7fd43a210703f804ed86b1bbe88  gcc/testsuite/gcc.target/powerpc/pr98914.c
  f900d3f1e79811e92ae2e91267891d4a  gcc/testsuite/gcc.target/powerpc/pr98959.c
+ 4fdfbed97b91165f1a9bb87f1e8aa815  gcc/testsuite/gcc.target/powerpc/pr99492.c
+ cbb1371df0e1adf74c71a77d5895b17c  gcc/testsuite/gcc.target/powerpc/pr99557.c
+ de511ffaecad04c9cbb12cacdec00373  gcc/testsuite/gcc.target/powerpc/pr99581.c
  64482d2c5f46fd2fe948c15ae7162cfd  gcc/testsuite/gcc.target/powerpc/pragma_misc9.c
  98c02b2c2946f882d2b5e41da4b7d78b  gcc/testsuite/gcc.target/powerpc/pragma_power6.c
  9fc46dc795793c68c68bcda62ba3bb06  gcc/testsuite/gcc.target/powerpc/pragma_power7.c
*************** e42858e0ca12343d94310c2d672a4f17  gcc/te
*** 63097,63111 ****
  ce3c6e6db2777b22224f4a6b36d6bed6  gcc/testsuite/gcc.target/powerpc/prefix-si-constant.c
  38228cc40bbf172ba48212f7f8aa445a  gcc/testsuite/gcc.target/powerpc/prefix-stack-protect.c
  3ba8ef2a92d4982a4dc0e12f6d60290b  gcc/testsuite/gcc.target/powerpc/pure-builtin-redundant-load.c
! f2d0629b5eb04308346c90a52b0dfad9  gcc/testsuite/gcc.target/powerpc/quad-atomic.c
! 4c4c29d599264356e1c6bc46cac8a876  gcc/testsuite/gcc.target/powerpc/r2_shrink-wrap.c
  7659e2d7158a0cc47cd2b58dced8dd34  gcc/testsuite/gcc.target/powerpc/recip-1.c
  ff4948d55a3c22843e0039ae88817b53  gcc/testsuite/gcc.target/powerpc/recip-2.c
  aa90445b0bb4af39ba842a95d0dd6e64  gcc/testsuite/gcc.target/powerpc/recip-3.c
  9a3d10cef41c45bd5ddffc43e3e88ffe  gcc/testsuite/gcc.target/powerpc/recip-4.c
  875718b7e98c7c692901be4b98767a63  gcc/testsuite/gcc.target/powerpc/recip-5.c
! 188bc263d21f4405d67a97b73df5f405  gcc/testsuite/gcc.target/powerpc/recip-6.c
! 58a0e8bd8883e5974c0d9f70d96ce644  gcc/testsuite/gcc.target/powerpc/recip-7.c
  87baba7a742fa16204c5123333ebc11e  gcc/testsuite/gcc.target/powerpc/recip-sqrtf.c
  fe9225d1abdaae2f673f090f614da1a6  gcc/testsuite/gcc.target/powerpc/recip-test.h
  9675d8b7d035b4752fb02e00ceb957d4  gcc/testsuite/gcc.target/powerpc/recip-test2.h
--- 67045,67059 ----
  ce3c6e6db2777b22224f4a6b36d6bed6  gcc/testsuite/gcc.target/powerpc/prefix-si-constant.c
  38228cc40bbf172ba48212f7f8aa445a  gcc/testsuite/gcc.target/powerpc/prefix-stack-protect.c
  3ba8ef2a92d4982a4dc0e12f6d60290b  gcc/testsuite/gcc.target/powerpc/pure-builtin-redundant-load.c
! cdd99d5c0b1f66b6631cc7e72a70c10e  gcc/testsuite/gcc.target/powerpc/quad-atomic.c
! ca60c829e47ba4c42c6f23dc2cc300bd  gcc/testsuite/gcc.target/powerpc/r2_shrink-wrap.c
  7659e2d7158a0cc47cd2b58dced8dd34  gcc/testsuite/gcc.target/powerpc/recip-1.c
  ff4948d55a3c22843e0039ae88817b53  gcc/testsuite/gcc.target/powerpc/recip-2.c
  aa90445b0bb4af39ba842a95d0dd6e64  gcc/testsuite/gcc.target/powerpc/recip-3.c
  9a3d10cef41c45bd5ddffc43e3e88ffe  gcc/testsuite/gcc.target/powerpc/recip-4.c
  875718b7e98c7c692901be4b98767a63  gcc/testsuite/gcc.target/powerpc/recip-5.c
! 46f3a0f3832148dbdf3ee40d99c12f1b  gcc/testsuite/gcc.target/powerpc/recip-6.c
! c50888abb2a5f5dbf35de2c272671dea  gcc/testsuite/gcc.target/powerpc/recip-7.c
  87baba7a742fa16204c5123333ebc11e  gcc/testsuite/gcc.target/powerpc/recip-sqrtf.c
  fe9225d1abdaae2f673f090f614da1a6  gcc/testsuite/gcc.target/powerpc/recip-test.h
  9675d8b7d035b4752fb02e00ceb957d4  gcc/testsuite/gcc.target/powerpc/recip-test2.h
*************** bbd1992756a4c4fe9d76f64a98906a99  gcc/te
*** 63126,63132 ****
  1a34cb04196163f6d0a2e3709cc44498  gcc/testsuite/gcc.target/powerpc/rldimi.h
  0b98b15bfe27a9531df238b5d463e141  gcc/testsuite/gcc.target/powerpc/rlwimi-0.c
  2e2e5c64753a3b7795f80767d6dcafa7  gcc/testsuite/gcc.target/powerpc/rlwimi-1.c
! 821a9e715592f9b9ebee88d91afd9ae6  gcc/testsuite/gcc.target/powerpc/rlwimi-2.c
  070c5b1cc8767dba79b14177a49b6c62  gcc/testsuite/gcc.target/powerpc/rlwimi.h
  f8cb0891b50b222ce78c7e8466568d64  gcc/testsuite/gcc.target/powerpc/rlwinm-0.c
  bbfaa45598e85e85311c592cd3685c70  gcc/testsuite/gcc.target/powerpc/rlwinm-1.c
--- 67074,67080 ----
  1a34cb04196163f6d0a2e3709cc44498  gcc/testsuite/gcc.target/powerpc/rldimi.h
  0b98b15bfe27a9531df238b5d463e141  gcc/testsuite/gcc.target/powerpc/rlwimi-0.c
  2e2e5c64753a3b7795f80767d6dcafa7  gcc/testsuite/gcc.target/powerpc/rlwimi-1.c
! 0c3e4164fb0b167d67ef2c5b562a311e  gcc/testsuite/gcc.target/powerpc/rlwimi-2.c
  070c5b1cc8767dba79b14177a49b6c62  gcc/testsuite/gcc.target/powerpc/rlwimi.h
  f8cb0891b50b222ce78c7e8466568d64  gcc/testsuite/gcc.target/powerpc/rlwinm-0.c
  bbfaa45598e85e85311c592cd3685c70  gcc/testsuite/gcc.target/powerpc/rlwinm-1.c
*************** bf385d7310a8dab90ee44f86832aa03b  gcc/te
*** 63139,63148 ****
  afd35ba530c1198a75e9e1a79650add6  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-1.c
  7aacc521251d44cf2fa3a75a564c4270  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-2.c
  b21c33d525f0c97602d4a2348994de36  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c
! c67cecac8e254d2d82a5f9b8d2a936b5  gcc/testsuite/gcc.target/powerpc/sad-vectorize-1.c
! 2f1d19a91831a03d6c0e986028e80090  gcc/testsuite/gcc.target/powerpc/sad-vectorize-2.c
! 7417eb0c64dc198bfcd9b04ccec38444  gcc/testsuite/gcc.target/powerpc/sad-vectorize-3.c
! 04d30e0c285b7d715c72df06decd0d9a  gcc/testsuite/gcc.target/powerpc/sad-vectorize-4.c
  117d3bda48a47bac18d3fc69aafa9bc5  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c
  b267561f99ac721f454b2af55e346864  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-2.c
  eec65639c2807a07f0c7f7d10211bf4b  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c
--- 67087,67096 ----
  afd35ba530c1198a75e9e1a79650add6  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-1.c
  7aacc521251d44cf2fa3a75a564c4270  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-2.c
  b21c33d525f0c97602d4a2348994de36  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c
! e31cb95afebe5e70f99ed992e5b367f4  gcc/testsuite/gcc.target/powerpc/sad-vectorize-1.c
! 122a3065b082a033baf2ecbb9e4cbc23  gcc/testsuite/gcc.target/powerpc/sad-vectorize-2.c
! a16dee197d86c4a28cb384257269819b  gcc/testsuite/gcc.target/powerpc/sad-vectorize-3.c
! a51b0a09d3bfe8d718a78021e4bbeecf  gcc/testsuite/gcc.target/powerpc/sad-vectorize-4.c
  117d3bda48a47bac18d3fc69aafa9bc5  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c
  b267561f99ac721f454b2af55e346864  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-2.c
  eec65639c2807a07f0c7f7d10211bf4b  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c
*************** ef8eb7cbf624be95837254f86c894d5b  gcc/te
*** 63153,63179 ****
  f66a7c7a9b7cdd49a6b9860dbb16d90a  gcc/testsuite/gcc.target/powerpc/savres.c
  4d279143b2088deebcb4790c43797a2a  gcc/testsuite/gcc.target/powerpc/sd-pwr6.c
  428bf8d4e0a547547d127c62dd9af650  gcc/testsuite/gcc.target/powerpc/sd-vsx.c
  7f79e51f48a45300891b035ea6938b2f  gcc/testsuite/gcc.target/powerpc/shift-dot.c
  416332739a98fa1f2023fe8c217782e4  gcc/testsuite/gcc.target/powerpc/shift-int.c
  862ac833b3d2f974e0f5cecc6abee95b  gcc/testsuite/gcc.target/powerpc/shrink-wrap-separate-0.c
  63c119f5703b1b66e32b794c15f04320  gcc/testsuite/gcc.target/powerpc/shrink-wrap-separate-1.c
  3bcc1a1cf615d22cd19fd8328f1017c8  gcc/testsuite/gcc.target/powerpc/shrink-wrap-separate-2.c
! 74d3b62981543a77723720d1f077e77c  gcc/testsuite/gcc.target/powerpc/signbit-1.c
! a068af0a33b10dbaa6f1d3c2f37d3dcf  gcc/testsuite/gcc.target/powerpc/signbit-2.c
! 520aac29ae7b83af2543a01641b430bd  gcc/testsuite/gcc.target/powerpc/signbit-3.c
  b53c831b7a989947bc45e26ce4a15c9b  gcc/testsuite/gcc.target/powerpc/small-loop-unroll.c
- b3e9870bc5d831fd67c299ee87dfb2f7  gcc/testsuite/gcc.target/powerpc/spe-evmerge.c
- 89537cc7476c27c7c10b811da61def34  gcc/testsuite/gcc.target/powerpc/spe-small-data-1.c
- 9d04892083c467f0ebf1fc75e043d6d8  gcc/testsuite/gcc.target/powerpc/spe-small-data-2.c
- 5621f40c865fca710b0c765df76942f6  gcc/testsuite/gcc.target/powerpc/spe-unwind-1.c
- 4c18585227dc36fd38dd1cf47b84f45e  gcc/testsuite/gcc.target/powerpc/spe-vector-memcpy.c
- aefbc9c117b311a9394883e9c890efb9  gcc/testsuite/gcc.target/powerpc/spe-vector-memset.c
- 915776bd2ecc8e2fbea2bb1921f6b3b6  gcc/testsuite/gcc.target/powerpc/spe1.c
  c0e75f8fc195cc2cbbf74bc89b5ca78f  gcc/testsuite/gcc.target/powerpc/spec-barr-1.c
  3ba3683c2c50a036a86876ffe40938d1  gcc/testsuite/gcc.target/powerpc/sse-addps-1.c
  0cf91665719ed287f338142e01af3b8d  gcc/testsuite/gcc.target/powerpc/sse-addss-1.c
! 32c26535a97743450f05055f9840cdab  gcc/testsuite/gcc.target/powerpc/sse-andnps-1.c
! 42be9517b9839cb66c0921a58c071451  gcc/testsuite/gcc.target/powerpc/sse-andps-1.c
  3c1ba9088f509857b60a39f4faa46bfd  gcc/testsuite/gcc.target/powerpc/sse-check.h
  1c29bfafd11ccab48bfcc5f2ee3c0424  gcc/testsuite/gcc.target/powerpc/sse-cmpss-1.c
  f45513bf33788c54e467b7a0cfdc0b33  gcc/testsuite/gcc.target/powerpc/sse-cvtpi16ps-1.c
--- 67101,67134 ----
  f66a7c7a9b7cdd49a6b9860dbb16d90a  gcc/testsuite/gcc.target/powerpc/savres.c
  4d279143b2088deebcb4790c43797a2a  gcc/testsuite/gcc.target/powerpc/sd-pwr6.c
  428bf8d4e0a547547d127c62dd9af650  gcc/testsuite/gcc.target/powerpc/sd-vsx.c
+ b9bc7a8f73a8f48bd224327d16ecdef9  gcc/testsuite/gcc.target/powerpc/setbc.h
+ f2299a0b062f6e9335b5bf9c5fd99600  gcc/testsuite/gcc.target/powerpc/setbceq.c
+ 275cdd14ac33706d21492b08be6441f6  gcc/testsuite/gcc.target/powerpc/setbcge.c
+ b058478203db21a3e18cbc9f5f851d7b  gcc/testsuite/gcc.target/powerpc/setbcgt.c
+ eff0035b6770841169b2aa74dbe82988  gcc/testsuite/gcc.target/powerpc/setbcle.c
+ b01cb18339f901d097e17db83b2dde6c  gcc/testsuite/gcc.target/powerpc/setbclt.c
+ 27c8f720b99784965cb71724353addd8  gcc/testsuite/gcc.target/powerpc/setbcne.c
+ c742917812fbfbc904c5958044e88ac1  gcc/testsuite/gcc.target/powerpc/setnbc.h
+ 5ae387a02df5bedffe61976cdb3e9135  gcc/testsuite/gcc.target/powerpc/setnbceq.c
+ 1690a7770431c2ea3254b6b376563fd1  gcc/testsuite/gcc.target/powerpc/setnbcge.c
+ 34de0f89ea26f7f9b06cd4bdd6040071  gcc/testsuite/gcc.target/powerpc/setnbcgt.c
+ 81d12db8531d5c4c34dfc2a7049c9afb  gcc/testsuite/gcc.target/powerpc/setnbcle.c
+ 66226fedc93eb969adce65e6769a837a  gcc/testsuite/gcc.target/powerpc/setnbclt.c
+ 8e1551da864962efc7e0170d4004d60c  gcc/testsuite/gcc.target/powerpc/setnbcne.c
  7f79e51f48a45300891b035ea6938b2f  gcc/testsuite/gcc.target/powerpc/shift-dot.c
  416332739a98fa1f2023fe8c217782e4  gcc/testsuite/gcc.target/powerpc/shift-int.c
  862ac833b3d2f974e0f5cecc6abee95b  gcc/testsuite/gcc.target/powerpc/shrink-wrap-separate-0.c
  63c119f5703b1b66e32b794c15f04320  gcc/testsuite/gcc.target/powerpc/shrink-wrap-separate-1.c
  3bcc1a1cf615d22cd19fd8328f1017c8  gcc/testsuite/gcc.target/powerpc/shrink-wrap-separate-2.c
! 64a3284223a7202270812d08acee7054  gcc/testsuite/gcc.target/powerpc/signbit-1.c
! f00bcdb3de69aeb5753c3b28732dfcd8  gcc/testsuite/gcc.target/powerpc/signbit-2.c
! 78b111d5c85fb4c63a40bf4f61fd37ee  gcc/testsuite/gcc.target/powerpc/signbit-3.c
  b53c831b7a989947bc45e26ce4a15c9b  gcc/testsuite/gcc.target/powerpc/small-loop-unroll.c
  c0e75f8fc195cc2cbbf74bc89b5ca78f  gcc/testsuite/gcc.target/powerpc/spec-barr-1.c
  3ba3683c2c50a036a86876ffe40938d1  gcc/testsuite/gcc.target/powerpc/sse-addps-1.c
  0cf91665719ed287f338142e01af3b8d  gcc/testsuite/gcc.target/powerpc/sse-addss-1.c
! 22e395766ad6742abcfda94bc73cbb8b  gcc/testsuite/gcc.target/powerpc/sse-andnps-1.c
! 40c4c2fe3235641489cd8a783756beff  gcc/testsuite/gcc.target/powerpc/sse-andps-1.c
  3c1ba9088f509857b60a39f4faa46bfd  gcc/testsuite/gcc.target/powerpc/sse-check.h
  1c29bfafd11ccab48bfcc5f2ee3c0424  gcc/testsuite/gcc.target/powerpc/sse-cmpss-1.c
  f45513bf33788c54e467b7a0cfdc0b33  gcc/testsuite/gcc.target/powerpc/sse-cvtpi16ps-1.c
*************** dfe0984ebba53f7ce80a6717e5a38a2e  gcc/te
*** 63201,63210 ****
  b603b86253a36b22728aca6ec7d9956e  gcc/testsuite/gcc.target/powerpc/sse-movaps-1.c
  6f4ba0fb994461a9b0ad86a48fec6457  gcc/testsuite/gcc.target/powerpc/sse-movaps-2.c
  00e97c06bf3f48bd3ec804d7fd3c11d7  gcc/testsuite/gcc.target/powerpc/sse-movhlps-1.c
! 608b6300b2d35a03fa0cc37242e672d9  gcc/testsuite/gcc.target/powerpc/sse-movhps-1.c
  bd12598f1322ccfde4e449ead26d9663  gcc/testsuite/gcc.target/powerpc/sse-movhps-2.c
  1b5f94bed3a61854a5a0734be97db81a  gcc/testsuite/gcc.target/powerpc/sse-movlhps-1.c
! 8a5c44f5d03f5af9d12065c78a60218a  gcc/testsuite/gcc.target/powerpc/sse-movlps-1.c
  2dff57cdc7d6a80ec8f0fcca0a52c9f9  gcc/testsuite/gcc.target/powerpc/sse-movlps-2.c
  929a5abc13b9a3fb72f7b7ce54604208  gcc/testsuite/gcc.target/powerpc/sse-movmskb-1.c
  0bb4c4d78e7f046897aad8b89bbb0fd4  gcc/testsuite/gcc.target/powerpc/sse-movmskps-1.c
--- 67156,67165 ----
  b603b86253a36b22728aca6ec7d9956e  gcc/testsuite/gcc.target/powerpc/sse-movaps-1.c
  6f4ba0fb994461a9b0ad86a48fec6457  gcc/testsuite/gcc.target/powerpc/sse-movaps-2.c
  00e97c06bf3f48bd3ec804d7fd3c11d7  gcc/testsuite/gcc.target/powerpc/sse-movhlps-1.c
! 7d43b221713bf9833d0ea095499ca710  gcc/testsuite/gcc.target/powerpc/sse-movhps-1.c
  bd12598f1322ccfde4e449ead26d9663  gcc/testsuite/gcc.target/powerpc/sse-movhps-2.c
  1b5f94bed3a61854a5a0734be97db81a  gcc/testsuite/gcc.target/powerpc/sse-movlhps-1.c
! f642bb84c34931e1a8a3495b31373868  gcc/testsuite/gcc.target/powerpc/sse-movlps-1.c
  2dff57cdc7d6a80ec8f0fcca0a52c9f9  gcc/testsuite/gcc.target/powerpc/sse-movlps-2.c
  929a5abc13b9a3fb72f7b7ce54604208  gcc/testsuite/gcc.target/powerpc/sse-movmskb-1.c
  0bb4c4d78e7f046897aad8b89bbb0fd4  gcc/testsuite/gcc.target/powerpc/sse-movmskps-1.c
*************** eed8bb48c4f8e1ff9caebf70da3cd82f  gcc/te
*** 63238,63245 ****
  1fec1904e849adfa43d8111329f7fbcd  gcc/testsuite/gcc.target/powerpc/sse-xorps-1.c
  059c6b5d6eb62a16e96b7d4e58e97ccf  gcc/testsuite/gcc.target/powerpc/sse2-addpd-1.c
  f0e4f5ce98a66e614190ef5a4a9b66d2  gcc/testsuite/gcc.target/powerpc/sse2-addsd-1.c
! 55c9b610a84b4f0cf65afc90e27ec364  gcc/testsuite/gcc.target/powerpc/sse2-andnpd-1.c
! 78b899d4236381acb9f976e52cfb3b67  gcc/testsuite/gcc.target/powerpc/sse2-andpd-1.c
  cbf8a9023b4d10c3f91a64f01773a6c0  gcc/testsuite/gcc.target/powerpc/sse2-check.h
  f332f8a6a6601c0270acaa6a33426940  gcc/testsuite/gcc.target/powerpc/sse2-cmppd-1.c
  f1638e2298dba1fa58c80cc56b4f91a8  gcc/testsuite/gcc.target/powerpc/sse2-cmpsd-1.c
--- 67193,67200 ----
  1fec1904e849adfa43d8111329f7fbcd  gcc/testsuite/gcc.target/powerpc/sse-xorps-1.c
  059c6b5d6eb62a16e96b7d4e58e97ccf  gcc/testsuite/gcc.target/powerpc/sse2-addpd-1.c
  f0e4f5ce98a66e614190ef5a4a9b66d2  gcc/testsuite/gcc.target/powerpc/sse2-addsd-1.c
! c79ddf4a274707cf724f6f651f9c0832  gcc/testsuite/gcc.target/powerpc/sse2-andnpd-1.c
! e4859fb240d1c27e95089c8897c3795f  gcc/testsuite/gcc.target/powerpc/sse2-andpd-1.c
  cbf8a9023b4d10c3f91a64f01773a6c0  gcc/testsuite/gcc.target/powerpc/sse2-check.h
  f332f8a6a6601c0270acaa6a33426940  gcc/testsuite/gcc.target/powerpc/sse2-cmppd-1.c
  f1638e2298dba1fa58c80cc56b4f91a8  gcc/testsuite/gcc.target/powerpc/sse2-cmpsd-1.c
*************** f35dc4317411be0a425d926d2e6b2ee2  gcc/te
*** 63387,63392 ****
--- 67342,67350 ----
  60866f75a3d5489501b63ea643fe17f7  gcc/testsuite/gcc.target/powerpc/sse4_1-pblendvb.c
  631da19ee34cd145c0c24ad6bead9d9f  gcc/testsuite/gcc.target/powerpc/sse4_1-pblendw-2.c
  a8878b7112ae27592ce52739d0a0c122  gcc/testsuite/gcc.target/powerpc/sse4_1-pblendw.c
+ 996f5a62ba850e3561ab1ed3524584c1  gcc/testsuite/gcc.target/powerpc/sse4_1-pinsrb.c
+ d7b463494c064b5a6aec28aff08d842c  gcc/testsuite/gcc.target/powerpc/sse4_1-pinsrd.c
+ 99f9b3599d8588d4e26725d9ff28c823  gcc/testsuite/gcc.target/powerpc/sse4_1-pinsrq.c
  c4da621e2f792bd21112c40ff73a206d  gcc/testsuite/gcc.target/powerpc/ssp-1.c
  28df2b90767c1ab9ffd06127b47b30f9  gcc/testsuite/gcc.target/powerpc/ssp-2.c
  16888841126e94e3ccf56cbb553f5490  gcc/testsuite/gcc.target/powerpc/ssse3-check.h
*************** b95952c2cb2c3da6f2ec763d074b958d  gcc/te
*** 63409,63460 ****
  f3459c279e70e34d7f608b7b9cd9fe46  gcc/testsuite/gcc.target/powerpc/ssse3-vals.h
  13c6ee4934b094179a2336371362f10d  gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c
  ab241355ba77c8e163b05eb81f33d1c5  gcc/testsuite/gcc.target/powerpc/stack-limit.c
! 031f74e1971af44ac9cd3491387d9c74  gcc/testsuite/gcc.target/powerpc/swaps-p8-1.c
! 3fd7a06aad5ee00e5cf5ec0b123dc72d  gcc/testsuite/gcc.target/powerpc/swaps-p8-10.c
! 001996c39ae0c6c08abd43fc9834cc45  gcc/testsuite/gcc.target/powerpc/swaps-p8-11.c
! d3d868358a2759ad9c8fe39b16568e72  gcc/testsuite/gcc.target/powerpc/swaps-p8-12.c
! 7033545e5976bd08e0b6f6f7621cc1de  gcc/testsuite/gcc.target/powerpc/swaps-p8-13.c
! bc5ff937ba86fcecd5a958fa082f0f25  gcc/testsuite/gcc.target/powerpc/swaps-p8-14.c
! 251ff4366281b00e327e062f28bdb709  gcc/testsuite/gcc.target/powerpc/swaps-p8-15.c
! c552bc8a0974ce2df00426d80307e89c  gcc/testsuite/gcc.target/powerpc/swaps-p8-16.c
! 9dbd0d0202d20bad08891b14a4f1fb1e  gcc/testsuite/gcc.target/powerpc/swaps-p8-17.c
! 39f53020df417eeeb025b4d08a47a2e7  gcc/testsuite/gcc.target/powerpc/swaps-p8-18.c
! 81552e20df6f2b7c2710a188380adda4  gcc/testsuite/gcc.target/powerpc/swaps-p8-19.c
! 0c9836d1ec7f6b7efc903dd0fa9b672e  gcc/testsuite/gcc.target/powerpc/swaps-p8-2.c
! 6830a8fe17d46b2fbd556410ff849ccc  gcc/testsuite/gcc.target/powerpc/swaps-p8-20.c
! 89e80c5072c9a7fd886f5110e719154a  gcc/testsuite/gcc.target/powerpc/swaps-p8-21.c
! 9a0341f64cd8bbc9b55dd009a5e8fd51  gcc/testsuite/gcc.target/powerpc/swaps-p8-22.c
! ff61c7e6150e17a500fadb8e9b678c86  gcc/testsuite/gcc.target/powerpc/swaps-p8-23.c
! f301f9a4374c3449c61820cd3d777824  gcc/testsuite/gcc.target/powerpc/swaps-p8-24.c
! 14aab096034a732e457d5e60549ca51b  gcc/testsuite/gcc.target/powerpc/swaps-p8-25.c
! d52f66e783eb2b647a91813dea55aa3e  gcc/testsuite/gcc.target/powerpc/swaps-p8-26.c
! adb90c0fb7bdaa51811ca05a829d1d41  gcc/testsuite/gcc.target/powerpc/swaps-p8-27.c
! 934d45741a730d91eec6b09e8cf844e4  gcc/testsuite/gcc.target/powerpc/swaps-p8-28.c
! a140a0a4b55966e6fbac74f23c17c161  gcc/testsuite/gcc.target/powerpc/swaps-p8-29.c
! dac25b136aa961769306e531868929ec  gcc/testsuite/gcc.target/powerpc/swaps-p8-3.c
! 1d7f851d9a1c7d32ee00877fb02e6bc1  gcc/testsuite/gcc.target/powerpc/swaps-p8-30.c
! fa86639687bd29eec4687eb94621aea4  gcc/testsuite/gcc.target/powerpc/swaps-p8-31.c
! dd438dc6ded535f744988d0449035d26  gcc/testsuite/gcc.target/powerpc/swaps-p8-32.c
! 7f2d0de4108bb2caf3d7b6c614a38771  gcc/testsuite/gcc.target/powerpc/swaps-p8-33.c
! 58bb9b9ca0ab2118743ce309a39d4985  gcc/testsuite/gcc.target/powerpc/swaps-p8-34.c
! 2abf34804cdd068c7f5251d73c175c64  gcc/testsuite/gcc.target/powerpc/swaps-p8-35.c
! 7f8f82f6a837460b2202a1c6308c8050  gcc/testsuite/gcc.target/powerpc/swaps-p8-36.c
! eda6cb5611234845016e2da6d2f60e96  gcc/testsuite/gcc.target/powerpc/swaps-p8-37.c
! 47f393b3aff5c51aba48bd8418773b17  gcc/testsuite/gcc.target/powerpc/swaps-p8-38.c
! 8927f3c366e9cbf14b2cabbb28ec3d28  gcc/testsuite/gcc.target/powerpc/swaps-p8-39.c
! 49947e5bc9a284d5619c9e581e9293bd  gcc/testsuite/gcc.target/powerpc/swaps-p8-4.c
! ecdc4d6935e914799c1aa28a53f80a1b  gcc/testsuite/gcc.target/powerpc/swaps-p8-40.c
! ca0ab4e0be228eb012f8de7982a360ad  gcc/testsuite/gcc.target/powerpc/swaps-p8-41.c
! 1d5eb3bf716a9050cd5408d333a02ae4  gcc/testsuite/gcc.target/powerpc/swaps-p8-42.c
! 43a5796305334bbca660f973cacdf20c  gcc/testsuite/gcc.target/powerpc/swaps-p8-43.c
! 01cd3b4cba49ad5eacdd2c1ef9351e05  gcc/testsuite/gcc.target/powerpc/swaps-p8-44.c
! a948dc9391880df95929056c8a4bf57e  gcc/testsuite/gcc.target/powerpc/swaps-p8-45.c
! d77659af8ad25968f4aac3e39c5e95fd  gcc/testsuite/gcc.target/powerpc/swaps-p8-46.c
! e2db58335a14c84b0b4d14890c87a758  gcc/testsuite/gcc.target/powerpc/swaps-p8-5.c
! ae229ab981665203047759fb39f6aed4  gcc/testsuite/gcc.target/powerpc/swaps-p8-6.c
! 87d1020f9fa8cdd60eae00a0631a24cf  gcc/testsuite/gcc.target/powerpc/swaps-p8-7.c
! 3f855206b67e8cfe62d7d170b134401a  gcc/testsuite/gcc.target/powerpc/swaps-p8-8.c
! 3cc6e1b856e0e46ee0c2eef1b37d9127  gcc/testsuite/gcc.target/powerpc/swaps-p8-9.c
  f138cfa6e387e1bc85747da2fc38e305  gcc/testsuite/gcc.target/powerpc/swaps-stack-protector.c
  2a52ad9e020f4876e1759e2137dd146c  gcc/testsuite/gcc.target/powerpc/test_fpscr_drn_builtin.c
  1e5fee04b7943239f19f0ce10776f9d1  gcc/testsuite/gcc.target/powerpc/test_fpscr_drn_builtin_error.c
--- 67367,67418 ----
  f3459c279e70e34d7f608b7b9cd9fe46  gcc/testsuite/gcc.target/powerpc/ssse3-vals.h
  13c6ee4934b094179a2336371362f10d  gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c
  ab241355ba77c8e163b05eb81f33d1c5  gcc/testsuite/gcc.target/powerpc/stack-limit.c
! ba8561d330e1ff11cde165a34f6b95e9  gcc/testsuite/gcc.target/powerpc/swaps-p8-1.c
! 1251a69a170efd2dccca47828de63a2a  gcc/testsuite/gcc.target/powerpc/swaps-p8-10.c
! 2fe56a13672fc03a89c00df88dae3169  gcc/testsuite/gcc.target/powerpc/swaps-p8-11.c
! 5a5d9488d06466037a2db91b9d58ebbf  gcc/testsuite/gcc.target/powerpc/swaps-p8-12.c
! 19921ba7b5912092455d2557f2076a71  gcc/testsuite/gcc.target/powerpc/swaps-p8-13.c
! 2c34c6cf4b62c47a455f584cbb842f7d  gcc/testsuite/gcc.target/powerpc/swaps-p8-14.c
! d06946b35c28e81c1e5de341efa2152c  gcc/testsuite/gcc.target/powerpc/swaps-p8-15.c
! 9026eaa348023976fa25f8ea5f1f71a5  gcc/testsuite/gcc.target/powerpc/swaps-p8-16.c
! 08a4a34f869f46ff60173a413ce544d8  gcc/testsuite/gcc.target/powerpc/swaps-p8-17.c
! be804356a86d670131ac56a46ce91868  gcc/testsuite/gcc.target/powerpc/swaps-p8-18.c
! e87ef9c03a6e7f41774565bd37308592  gcc/testsuite/gcc.target/powerpc/swaps-p8-19.c
! 6ffe617fbfc820fbd2ebe1edb2400c85  gcc/testsuite/gcc.target/powerpc/swaps-p8-2.c
! 28ddcc589e6736bb17af233241f835d1  gcc/testsuite/gcc.target/powerpc/swaps-p8-20.c
! c110a35fda6b3a0063778a5792970e84  gcc/testsuite/gcc.target/powerpc/swaps-p8-21.c
! 29350968be6bbf446062e444bef3c182  gcc/testsuite/gcc.target/powerpc/swaps-p8-22.c
! a5032fb1fa221d5d137ebdb706a62a99  gcc/testsuite/gcc.target/powerpc/swaps-p8-23.c
! 82f0759c9343b9d8a3e78d5031ab88f5  gcc/testsuite/gcc.target/powerpc/swaps-p8-24.c
! e95bf3e54b8ee34e2f57355000c6fde2  gcc/testsuite/gcc.target/powerpc/swaps-p8-25.c
! 3f9a0605d0c0d7ea0d14f938ad537d0d  gcc/testsuite/gcc.target/powerpc/swaps-p8-26.c
! 9c5175d18a76fdb0f9767707798c872a  gcc/testsuite/gcc.target/powerpc/swaps-p8-27.c
! 99533025bbda92f8c5624aa0a977f0cf  gcc/testsuite/gcc.target/powerpc/swaps-p8-28.c
! 365ab3147ef37189d8c8b56d21dfa9ca  gcc/testsuite/gcc.target/powerpc/swaps-p8-29.c
! eecdbf6b0b6e5b4c390de892fb9413a0  gcc/testsuite/gcc.target/powerpc/swaps-p8-3.c
! 830a72c599380d1462d75f62a9381b34  gcc/testsuite/gcc.target/powerpc/swaps-p8-30.c
! 54a51960cc691ea90b07070de9d9402f  gcc/testsuite/gcc.target/powerpc/swaps-p8-31.c
! 98854fa6c9b039e76e789a6afba83490  gcc/testsuite/gcc.target/powerpc/swaps-p8-32.c
! fd68a2dadfb6c21bb6df941ed4187fc3  gcc/testsuite/gcc.target/powerpc/swaps-p8-33.c
! f1c3ccafa9311c56c8816bf66a6a49d6  gcc/testsuite/gcc.target/powerpc/swaps-p8-34.c
! 63178d18a0ea7b28ec993b3a6eec620b  gcc/testsuite/gcc.target/powerpc/swaps-p8-35.c
! d97246cde32621df5623dd1401141cfa  gcc/testsuite/gcc.target/powerpc/swaps-p8-36.c
! 4fcbf88b2876a4d0bb0828524a2a0111  gcc/testsuite/gcc.target/powerpc/swaps-p8-37.c
! d01a25b2916153a8a4d5d5a6cad4c91f  gcc/testsuite/gcc.target/powerpc/swaps-p8-38.c
! d542684b121329015e4b3b6c07b57e43  gcc/testsuite/gcc.target/powerpc/swaps-p8-39.c
! 9972776f3676ebc2bc9c13b5f2e244c0  gcc/testsuite/gcc.target/powerpc/swaps-p8-4.c
! f2c22550c93f1f7a07b911e96a15b4df  gcc/testsuite/gcc.target/powerpc/swaps-p8-40.c
! 560760aaafa6d3554175bdb61f2d211e  gcc/testsuite/gcc.target/powerpc/swaps-p8-41.c
! 0b89eb97687fef36bff2976190723ee2  gcc/testsuite/gcc.target/powerpc/swaps-p8-42.c
! c9e443ddbdf5ba28ff765c6410ce7ca1  gcc/testsuite/gcc.target/powerpc/swaps-p8-43.c
! cf71f7501170f714928ab237adfa9d1d  gcc/testsuite/gcc.target/powerpc/swaps-p8-44.c
! 19f28f4fea300ff443f3d7c5c1010397  gcc/testsuite/gcc.target/powerpc/swaps-p8-45.c
! 09461d0d193ca6981f0ae26e2fe314ff  gcc/testsuite/gcc.target/powerpc/swaps-p8-46.c
! d6244d32b4c5065f3874fa38517d64be  gcc/testsuite/gcc.target/powerpc/swaps-p8-5.c
! 0f5c5efa2e329bc2060265058a2ff722  gcc/testsuite/gcc.target/powerpc/swaps-p8-6.c
! b3ee99ff13dd64c0a7e4d3727bd516f8  gcc/testsuite/gcc.target/powerpc/swaps-p8-7.c
! 6d778b9a74a6c63385c58c1fbd60137f  gcc/testsuite/gcc.target/powerpc/swaps-p8-8.c
! 09302ecea2b2338f19aafefdbf164614  gcc/testsuite/gcc.target/powerpc/swaps-p8-9.c
  f138cfa6e387e1bc85747da2fc38e305  gcc/testsuite/gcc.target/powerpc/swaps-stack-protector.c
  2a52ad9e020f4876e1759e2137dd146c  gcc/testsuite/gcc.target/powerpc/test_fpscr_drn_builtin.c
  1e5fee04b7943239f19f0ce10776f9d1  gcc/testsuite/gcc.target/powerpc/test_fpscr_drn_builtin_error.c
*************** e28cc14ddafc82b0f212f1b4ebbcf50a  gcc/te
*** 63465,63494 ****
  c2edbb1afba546ea3ac8a5efcaca9c38  gcc/testsuite/gcc.target/powerpc/ti_math1.c
  c3d0d51284479d220a6166a0f362536c  gcc/testsuite/gcc.target/powerpc/ti_math2.c
  b66bd2797d99df9316755addd3664809  gcc/testsuite/gcc.target/powerpc/timode_off.c
! 72e688fec7792e3cde9bc2648fefb945  gcc/testsuite/gcc.target/powerpc/undef-bool-2.c
  f7b335e2ebdedcf6b3ad355f4564a8db  gcc/testsuite/gcc.target/powerpc/upper-regs-df.c
  7c0fa4851021413c8d75f57a04adabe1  gcc/testsuite/gcc.target/powerpc/upper-regs-sf.c
! 00cee68621df4daf9de1e6211c7c2e4d  gcc/testsuite/gcc.target/powerpc/vadsdu-0.c
! 32b6c752cec118c3df26170831ffaae2  gcc/testsuite/gcc.target/powerpc/vadsdu-1.c
! 27fb0c23ba5f5ecc89e79ee38096751f  gcc/testsuite/gcc.target/powerpc/vadsdu-2.c
! 9898f52eb8878c92a608ee32ff87aa7c  gcc/testsuite/gcc.target/powerpc/vadsdu-3.c
! 65bd1112804251349ee3a3020db94129  gcc/testsuite/gcc.target/powerpc/vadsdu-4.c
! afcb05f555160790e7200dfe0bb3e554  gcc/testsuite/gcc.target/powerpc/vadsdu-5.c
! dee8106a06f7660fb9ebb67e986d4d69  gcc/testsuite/gcc.target/powerpc/vadsdub-1.c
! 46ccba0ae7425f39869f3e737d8a2d9a  gcc/testsuite/gcc.target/powerpc/vadsdub-2.c
! 853bd98082508ddb93273c37149b0cbe  gcc/testsuite/gcc.target/powerpc/vadsduh-1.c
! c7961ab10ffca00251de03bdb334798f  gcc/testsuite/gcc.target/powerpc/vadsduh-2.c
! c0258fad3dfc5e26cd3b2900d47ee3c9  gcc/testsuite/gcc.target/powerpc/vadsduw-1.c
! aff03f409b9b366916d7f35bf4744984  gcc/testsuite/gcc.target/powerpc/vadsduw-2.c
  2969bf0540680b6822487ad8c77db63b  gcc/testsuite/gcc.target/powerpc/vec-adde-int128.c
  5e08e5eb8b4158f2e3eb44cec7f5fce8  gcc/testsuite/gcc.target/powerpc/vec-adde.c
  8edcbb6b83c68636e07236ae38275785  gcc/testsuite/gcc.target/powerpc/vec-addec-int128.c
  9c23b583409f565a5061a8ae0647ddf6  gcc/testsuite/gcc.target/powerpc/vec-addec.c
  6359ddccab89d64974aacae92509fc9e  gcc/testsuite/gcc.target/powerpc/vec-cg.c
  adcc53f70ca7a7b520048b1d3d9ac8d7  gcc/testsuite/gcc.target/powerpc/vec-cmp-sel.c
! cd5cd60898a624c681a02e23c4ecce8c  gcc/testsuite/gcc.target/powerpc/vec-cmp.c
  73dc938d4281285e048c364198f723d6  gcc/testsuite/gcc.target/powerpc/vec-cmpne-long.c
! 1c31aae0733209346937e6b2d6369020  gcc/testsuite/gcc.target/powerpc/vec-cmpne.c
  f60cfb65abc87ba5727c12a22c87de01  gcc/testsuite/gcc.target/powerpc/vec-constvolatile.c
  6e20fe0f6c74ba93cc184258ec122e34  gcc/testsuite/gcc.target/powerpc/vec-extract-1.c
  3ba5a8b2f265a56bfead096ead537f00  gcc/testsuite/gcc.target/powerpc/vec-extract-2.c
--- 67423,67467 ----
  c2edbb1afba546ea3ac8a5efcaca9c38  gcc/testsuite/gcc.target/powerpc/ti_math1.c
  c3d0d51284479d220a6166a0f362536c  gcc/testsuite/gcc.target/powerpc/ti_math2.c
  b66bd2797d99df9316755addd3664809  gcc/testsuite/gcc.target/powerpc/timode_off.c
! 242e558eb05c36c662d06489c5746038  gcc/testsuite/gcc.target/powerpc/undef-bool-2.c
  f7b335e2ebdedcf6b3ad355f4564a8db  gcc/testsuite/gcc.target/powerpc/upper-regs-df.c
  7c0fa4851021413c8d75f57a04adabe1  gcc/testsuite/gcc.target/powerpc/upper-regs-sf.c
! 7fcc63e7c64945b04fc127d640b7b1a2  gcc/testsuite/gcc.target/powerpc/vadsdu-0.c
! 24691da27a181bc4c4bcca42bc7df1a5  gcc/testsuite/gcc.target/powerpc/vadsdu-1.c
! 0c2d917c7a72b2d6f756867be5ca7e35  gcc/testsuite/gcc.target/powerpc/vadsdu-2.c
! 2b942527e2255c9b687659ebccdd5e67  gcc/testsuite/gcc.target/powerpc/vadsdu-3.c
! 33dd04686b7a6076332b264197f0888c  gcc/testsuite/gcc.target/powerpc/vadsdu-4.c
! d6aa948f69afd3f90781356ef35ebd49  gcc/testsuite/gcc.target/powerpc/vadsdu-5.c
! 0bd4cba3d6e235b03189e89c3ef576a6  gcc/testsuite/gcc.target/powerpc/vadsdub-1.c
! 5b5eeec17cf4cfa073d668089ab0ea24  gcc/testsuite/gcc.target/powerpc/vadsdub-2.c
! 0e2e896bdb06e6206c619ae9e514c9c4  gcc/testsuite/gcc.target/powerpc/vadsduh-1.c
! e730b5f685b68ea8e7c8c11595187596  gcc/testsuite/gcc.target/powerpc/vadsduh-2.c
! c8df9b420107b3f94c54330fc8e6fe42  gcc/testsuite/gcc.target/powerpc/vadsduw-1.c
! 2f14e4bacf90ea7c4f313336504370aa  gcc/testsuite/gcc.target/powerpc/vadsduw-2.c
  2969bf0540680b6822487ad8c77db63b  gcc/testsuite/gcc.target/powerpc/vec-adde-int128.c
  5e08e5eb8b4158f2e3eb44cec7f5fce8  gcc/testsuite/gcc.target/powerpc/vec-adde.c
  8edcbb6b83c68636e07236ae38275785  gcc/testsuite/gcc.target/powerpc/vec-addec-int128.c
  9c23b583409f565a5061a8ae0647ddf6  gcc/testsuite/gcc.target/powerpc/vec-addec.c
+ 4ee643a0dacf8c9159ac42f03ed94ebb  gcc/testsuite/gcc.target/powerpc/vec-blend-runnable.c
+ 13b2e0fc2eec6d0a97554dbe826f930e  gcc/testsuite/gcc.target/powerpc/vec-cfuged-0.c
+ 9660789589de2dd0fc063dd5356407de  gcc/testsuite/gcc.target/powerpc/vec-cfuged-1.c
  6359ddccab89d64974aacae92509fc9e  gcc/testsuite/gcc.target/powerpc/vec-cg.c
+ f14431d38600cca25dc63c7536ee018e  gcc/testsuite/gcc.target/powerpc/vec-clrl-0.c
+ 11bd15d1b4f83cb448a80b9f2ff16690  gcc/testsuite/gcc.target/powerpc/vec-clrl-1.c
+ e8124c8804176fafe418e16282789f0d  gcc/testsuite/gcc.target/powerpc/vec-clrl-2.c
+ 8244bf4e8a27cad0cd7b34d410b97a6a  gcc/testsuite/gcc.target/powerpc/vec-clrl-3.c
+ 1f9744adc7c99953854e9a25883cd002  gcc/testsuite/gcc.target/powerpc/vec-clrr-0.c
+ 4c7ea20237ce5f1df2fe578ba474a976  gcc/testsuite/gcc.target/powerpc/vec-clrr-1.c
+ 73c7e7113c20bb5c81cc0ed309a96a3c  gcc/testsuite/gcc.target/powerpc/vec-clrr-2.c
+ 3c4fb592a3f2fad538441aae547c776e  gcc/testsuite/gcc.target/powerpc/vec-clrr-3.c
  adcc53f70ca7a7b520048b1d3d9ac8d7  gcc/testsuite/gcc.target/powerpc/vec-cmp-sel.c
! 7363586e0c8d520e106bdadc51dffbde  gcc/testsuite/gcc.target/powerpc/vec-cmp.c
  73dc938d4281285e048c364198f723d6  gcc/testsuite/gcc.target/powerpc/vec-cmpne-long.c
! 5f73024bbfd5baeab66122ec43f7bdd1  gcc/testsuite/gcc.target/powerpc/vec-cmpne.c
! 1c372d09f791df242c811475d366dcc3  gcc/testsuite/gcc.target/powerpc/vec-cntlzm-0.c
! fca8a6f77d207e7f7f219ea93f288693  gcc/testsuite/gcc.target/powerpc/vec-cntlzm-1.c
! ff9cd4dae68216fd4b9b370b76a709e4  gcc/testsuite/gcc.target/powerpc/vec-cnttzm-0.c
! 08abc984011e8c1da755e7e2c0b91c96  gcc/testsuite/gcc.target/powerpc/vec-cnttzm-1.c
  f60cfb65abc87ba5727c12a22c87de01  gcc/testsuite/gcc.target/powerpc/vec-constvolatile.c
  6e20fe0f6c74ba93cc184258ec122e34  gcc/testsuite/gcc.target/powerpc/vec-extract-1.c
  3ba5a8b2f265a56bfead096ead537f00  gcc/testsuite/gcc.target/powerpc/vec-extract-2.c
*************** d82a2cb05b26d753c5de9df01870bd44  gcc/te
*** 63509,63569 ****
  277b4c8049ca7aa40748ee446e3f1880  gcc/testsuite/gcc.target/powerpc/vec-extract-uint128-1.c
  c24c630336ed5f8e466769a2e2cc4cc6  gcc/testsuite/gcc.target/powerpc/vec-extract-ulong-1.c
  157cfeb065bc02ede39d2c3109d2add4  gcc/testsuite/gcc.target/powerpc/vec-extract-ushort-1.c
! 54b4e79e3e68990bbb35785a9baebefe  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qi-df.c
! 17dc541115d43f98928aa98aec2e8966  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qi.c
! fa4d484cedb3e830a8c4ed23fcac60f1  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-df.c
  715dd2ff2b925703cee51c3591a11a39  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h
  1642c9c56d8fc26c4a00e52271e9aa62  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2a.c
  fa2b56f4604687d4c40b1dc0dcaf0a93  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2b.c
! 0cf0efad9beb904fc660081db1e08b5b  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu.c
! 3e12eaa72b1a5951659db6fa313cc678  gcc/testsuite/gcc.target/powerpc/vec-extract-v2df.c
! ed5d771bd86a170ce802a098b04be68b  gcc/testsuite/gcc.target/powerpc/vec-extract-v2di.c
! a08f443cca1eb6dd051d8c62deae853e  gcc/testsuite/gcc.target/powerpc/vec-extract-v4sf.c
! 0ada28524d22c8ea1d150882f27369a1  gcc/testsuite/gcc.target/powerpc/vec-extract-v4si-df.c
! fc2b9cdc88d30ada91ca4d02da9b05e2  gcc/testsuite/gcc.target/powerpc/vec-extract-v4si.c
! 789af302aacab7986ad192b5506f7a82  gcc/testsuite/gcc.target/powerpc/vec-extract-v4siu-df.c
! 420fa642f6b36479bc8fd80cd6c0160d  gcc/testsuite/gcc.target/powerpc/vec-extract-v4siu.c
! 7b1ebb66b5b1c584895e55bc041ba1fb  gcc/testsuite/gcc.target/powerpc/vec-extract-v8hi-df.c
! 1fef8023247958b1dd9de46ccb5d480d  gcc/testsuite/gcc.target/powerpc/vec-extract-v8hi.c
! d3619153f5a9f9fda69607541f40a702  gcc/testsuite/gcc.target/powerpc/vec-extract-v8hiu-df.c
! 27837e1335850385f8d12cfae9f52823  gcc/testsuite/gcc.target/powerpc/vec-extract-v8hiu.c
  a1d3f701c2464b01166a4e89754de1bb  gcc/testsuite/gcc.target/powerpc/vec-extract.h
! 70e478e88e6cd64d5051fc9c33052849  gcc/testsuite/gcc.target/powerpc/vec-init-1.c
! 5b5983b88d6e8ce870ee923e4c1a8e0e  gcc/testsuite/gcc.target/powerpc/vec-init-2.c
! 157e47d2e74da5ed8f7ed3814b4046c9  gcc/testsuite/gcc.target/powerpc/vec-init-3.c
! 59820c385775b42530b45effe6f4cd95  gcc/testsuite/gcc.target/powerpc/vec-init-4.c
! d640c7442203d3640c0c3b90c7249e29  gcc/testsuite/gcc.target/powerpc/vec-init-5.c
! b4638205b1aa96a3017615ffb5b50248  gcc/testsuite/gcc.target/powerpc/vec-init-6.c
! 2e59be488511947a7c8089c44db19b0b  gcc/testsuite/gcc.target/powerpc/vec-init-7.c
! 7c6efaef9bc25c6c8e3ed16c192a20e7  gcc/testsuite/gcc.target/powerpc/vec-init-8.c
! a628c45aa79269366e26081d563ef685  gcc/testsuite/gcc.target/powerpc/vec-init-9.c
  e95008bad5edfab2ab0eb99d3fba6505  gcc/testsuite/gcc.target/powerpc/vec-ldl-1.c
! 360c8747370c9864a9f63909109c4c36  gcc/testsuite/gcc.target/powerpc/vec-mul.c
  8a3d5e23a1722a45edbaa43f5b3a54b5  gcc/testsuite/gcc.target/powerpc/vec-mult-char-1.c
! fa102cb45e48c286b356759209443dea  gcc/testsuite/gcc.target/powerpc/vec-mult-char-2.c
! 9ae08ee08db748d05cf877be919e1516  gcc/testsuite/gcc.target/powerpc/vec-rlmi-rlnm.c
  f9f609a740dac9270f63ed47cf131e3e  gcc/testsuite/gcc.target/powerpc/vec-rotate-1.c
  137d89e04c5e0edc9f6d5402c1414d37  gcc/testsuite/gcc.target/powerpc/vec-rotate-2.c
  96441926bf999692270027b1092cac57  gcc/testsuite/gcc.target/powerpc/vec-rotate-3.c
  0368d3c407ffd6a05b2ea100ff07f88c  gcc/testsuite/gcc.target/powerpc/vec-rotate-4.c
! b97d4eca9e1a05376462ba3da6411917  gcc/testsuite/gcc.target/powerpc/vec-set-char.c
! fbb71537cb953039a7d37270cc23ff17  gcc/testsuite/gcc.target/powerpc/vec-set-int.c
! 1ebc41a09f3562fb590ec404956bf79e  gcc/testsuite/gcc.target/powerpc/vec-set-short.c
! 0f558496ddbe67d86ad3a904b74a9976  gcc/testsuite/gcc.target/powerpc/vec-setup-double.c
! 4033d9346e564b4afb0c33b67995a199  gcc/testsuite/gcc.target/powerpc/vec-setup-long.c
  30f50ac003dbd1454426619dc4d0b988  gcc/testsuite/gcc.target/powerpc/vec-setup.h
  b558fe15786948ecde81acc46fdba7e6  gcc/testsuite/gcc.target/powerpc/vec-shift.c
  8ee50015e788404267646adf1ac95972  gcc/testsuite/gcc.target/powerpc/vec-shr.c
  127d2d7f255399904a77777bca197fec  gcc/testsuite/gcc.target/powerpc/vec-sld-modulo.c
  6dac3c4c0900e12a20b36757d815f46d  gcc/testsuite/gcc.target/powerpc/vec-srad-modulo.c
  2a0707e5093ef9facb6ce5e359ee4720  gcc/testsuite/gcc.target/powerpc/vec-srd-modulo.c
! 2f7d0faae17249a4c0239bf8d90e399a  gcc/testsuite/gcc.target/powerpc/vec-xxpermdi.c
  cfe95399d48da5db32fbce7f0c697a3c  gcc/testsuite/gcc.target/powerpc/versioned-copy-loop.c
  d0f4244d0c95771117041974544ba517  gcc/testsuite/gcc.target/powerpc/volatile-mem.c
! 2e72ad3474d6a4ce3323b30dd52b9cb0  gcc/testsuite/gcc.target/powerpc/vslv-0.c
! c31743fdb907dd3467a0e93eb99cc5a8  gcc/testsuite/gcc.target/powerpc/vslv-1.c
! 5e24c38ed1c26a75bdbf200e3b06da41  gcc/testsuite/gcc.target/powerpc/vsrv-0.c
! 01241e973416fd9e51a6f5d986531a65  gcc/testsuite/gcc.target/powerpc/vsrv-1.c
  e4e3fc4ecdb73e4c04d99e6785009a5e  gcc/testsuite/gcc.target/powerpc/vsu/vec-all-ne-0.c
  f2d01578c267545b26e43e182413ef9f  gcc/testsuite/gcc.target/powerpc/vsu/vec-all-ne-1.c
  9e05a1d6aac5ca0149f3937c4c276520  gcc/testsuite/gcc.target/powerpc/vsu/vec-all-ne-10.c
--- 67482,67663 ----
  277b4c8049ca7aa40748ee446e3f1880  gcc/testsuite/gcc.target/powerpc/vec-extract-uint128-1.c
  c24c630336ed5f8e466769a2e2cc4cc6  gcc/testsuite/gcc.target/powerpc/vec-extract-ulong-1.c
  157cfeb065bc02ede39d2c3109d2add4  gcc/testsuite/gcc.target/powerpc/vec-extract-ushort-1.c
! bd578a22effead7bbe42a5fe0f7511f6  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qi-df.c
! 276cbb2267ede5eb9c97f180d704c675  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qi.c
! 36ecf08156c2420bc8a52d6e58397319  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-df.c
  715dd2ff2b925703cee51c3591a11a39  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h
  1642c9c56d8fc26c4a00e52271e9aa62  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2a.c
  fa2b56f4604687d4c40b1dc0dcaf0a93  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2b.c
! 95b842d944cce54dae8efa76898d4a7a  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu.c
! 2111a477b82906d102716c22f9f9a250  gcc/testsuite/gcc.target/powerpc/vec-extract-v2df.c
! 1ff60c280cffea26a381266db18ddca0  gcc/testsuite/gcc.target/powerpc/vec-extract-v2di.c
! 191ee3c3423640db08d0477bf2ffb69d  gcc/testsuite/gcc.target/powerpc/vec-extract-v4sf.c
! c0c826e9f704c390d4fdccddaa5eee25  gcc/testsuite/gcc.target/powerpc/vec-extract-v4si-df.c
! f72cbd6658078d62e3b688f8e8a39fc0  gcc/testsuite/gcc.target/powerpc/vec-extract-v4si.c
! 8187fd73e7e37cbe708e8a3020cc71e7  gcc/testsuite/gcc.target/powerpc/vec-extract-v4siu-df.c
! 2edfe7dc2399f2c2f15c5cd5c653b0e9  gcc/testsuite/gcc.target/powerpc/vec-extract-v4siu.c
! 3b104eec3f69572fba25369c90642848  gcc/testsuite/gcc.target/powerpc/vec-extract-v8hi-df.c
! db8a48090716009cc429153e3aad7ec6  gcc/testsuite/gcc.target/powerpc/vec-extract-v8hi.c
! f79c3184d7647e663fba096b2c3bba15  gcc/testsuite/gcc.target/powerpc/vec-extract-v8hiu-df.c
! 22b26626d47047dee9b4aeb0c60f5ee5  gcc/testsuite/gcc.target/powerpc/vec-extract-v8hiu.c
  a1d3f701c2464b01166a4e89754de1bb  gcc/testsuite/gcc.target/powerpc/vec-extract.h
! 455e976a884e969f79586822ae32de7e  gcc/testsuite/gcc.target/powerpc/vec-extracth-0.c
! c13d01aea34be4ea309a0a198644583e  gcc/testsuite/gcc.target/powerpc/vec-extracth-1.c
! 539aa236af8cfa45990313376900f311  gcc/testsuite/gcc.target/powerpc/vec-extracth-2.c
! 825a60840f7c12bcfc422446a169444e  gcc/testsuite/gcc.target/powerpc/vec-extracth-3.c
! 4833680f4a33500dc6b31077c55d59da  gcc/testsuite/gcc.target/powerpc/vec-extracth-4.c
! d76d776f872ea5b3aec8659a62299f92  gcc/testsuite/gcc.target/powerpc/vec-extracth-5.c
! 77524e2e06dc5b6b680ca0999ff74abc  gcc/testsuite/gcc.target/powerpc/vec-extracth-6.c
! 12ebf1a491293f393ebc42e41221370d  gcc/testsuite/gcc.target/powerpc/vec-extracth-7.c
! 391e313b687d5621c08c4dd176149055  gcc/testsuite/gcc.target/powerpc/vec-extracth-be-0.c
! a7be57713cd4532071a3b67830013953  gcc/testsuite/gcc.target/powerpc/vec-extracth-be-1.c
! 667761fc3f157243f6f6993fbddbfad7  gcc/testsuite/gcc.target/powerpc/vec-extracth-be-2.c
! e8c9242a910295ec07b1bdaa377977bd  gcc/testsuite/gcc.target/powerpc/vec-extracth-be-3.c
! e3c4365fc3e0b7c3f753e64894eee1b1  gcc/testsuite/gcc.target/powerpc/vec-extractl-0.c
! ea623d0c16efecf2f754838770a1327b  gcc/testsuite/gcc.target/powerpc/vec-extractl-1.c
! 45e00067ed8d39868d3887d258f72e71  gcc/testsuite/gcc.target/powerpc/vec-extractl-2.c
! c27cf04daf5ca577f3dd382c8df0e591  gcc/testsuite/gcc.target/powerpc/vec-extractl-3.c
! 11057a3a0fc47eb886a388b3fb882d5b  gcc/testsuite/gcc.target/powerpc/vec-extractl-4.c
! 53a2a9b4822da662b97dd87c6b9c2016  gcc/testsuite/gcc.target/powerpc/vec-extractl-5.c
! 227da850e308bd950c947707e19bf67e  gcc/testsuite/gcc.target/powerpc/vec-extractl-6.c
! 21dba664d03a51f1bedb5acc895e08e3  gcc/testsuite/gcc.target/powerpc/vec-extractl-7.c
! 4dfef5a9f5397f92bc595ae94786b512  gcc/testsuite/gcc.target/powerpc/vec-extractl-be-0.c
! cf6daa0d113189191cc577954428500d  gcc/testsuite/gcc.target/powerpc/vec-extractl-be-1.c
! 027e31159bc6ecc38113958db8b2b70d  gcc/testsuite/gcc.target/powerpc/vec-extractl-be-2.c
! 2c0f51cc74abbcbede27efacd2b64559  gcc/testsuite/gcc.target/powerpc/vec-extractl-be-3.c
! 433f93fe198906c758011a9716d3fdc0  gcc/testsuite/gcc.target/powerpc/vec-gnb-0.c
! 019b2f91f62e2141785040a81fc8f7b6  gcc/testsuite/gcc.target/powerpc/vec-gnb-1.c
! ec35cff4bb22cf664043483b8c0b3879  gcc/testsuite/gcc.target/powerpc/vec-gnb-2.c
! 1c064f63a5e242fb0e35f918fa7a9385  gcc/testsuite/gcc.target/powerpc/vec-init-1.c
! 8865f952c76be05490cdb5a3dff0a4d1  gcc/testsuite/gcc.target/powerpc/vec-init-10.c
! 726fca01c06667a59e517b04466b670f  gcc/testsuite/gcc.target/powerpc/vec-init-2.c
! 448d3f1cd6f0d523abde8a79d5add1ea  gcc/testsuite/gcc.target/powerpc/vec-init-3.c
! 5069ccdccd854292f597665630051276  gcc/testsuite/gcc.target/powerpc/vec-init-4.c
! ed3032821da8f22487ae8925af91831d  gcc/testsuite/gcc.target/powerpc/vec-init-5.c
! 094d58b2f742261e0c4277857c1300cc  gcc/testsuite/gcc.target/powerpc/vec-init-6.c
! bbbdccba096f666b19ffccd518339311  gcc/testsuite/gcc.target/powerpc/vec-init-7.c
! 4b6bfddfce3c4b5408eb80a45dd2849e  gcc/testsuite/gcc.target/powerpc/vec-init-8.c
! 1c25ca7359ac947620882234381d0e4f  gcc/testsuite/gcc.target/powerpc/vec-init-9.c
! bb9f6d3ab6165cbd94638731b6fc4d79  gcc/testsuite/gcc.target/powerpc/vec-insert-word-runnable.c
  e95008bad5edfab2ab0eb99d3fba6505  gcc/testsuite/gcc.target/powerpc/vec-ldl-1.c
! d23be9cbb5a316007e6c09a2cb15f73f  gcc/testsuite/gcc.target/powerpc/vec-mul.c
  8a3d5e23a1722a45edbaa43f5b3a54b5  gcc/testsuite/gcc.target/powerpc/vec-mult-char-1.c
! 7554510a59ccac21c14591cee248180e  gcc/testsuite/gcc.target/powerpc/vec-mult-char-2.c
! 0b768a446e72f0d8107335b1b8529fa0  gcc/testsuite/gcc.target/powerpc/vec-pdep-0.c
! db83e62dff46acd786fd214ba328a149  gcc/testsuite/gcc.target/powerpc/vec-pdep-1.c
! 098e99c9220bf1bbda47aa99d3ec7356  gcc/testsuite/gcc.target/powerpc/vec-permute-ext-runnable.c
! b5892a28bbaf2d60143417a2daef76de  gcc/testsuite/gcc.target/powerpc/vec-pext-0.c
! d24a8e6f3ef84d24e9f70f0c4936462d  gcc/testsuite/gcc.target/powerpc/vec-pext-1.c
! 4627f548f81e13bf647e594cb1a8e22d  gcc/testsuite/gcc.target/powerpc/vec-replace-word-runnable.c
! 13362e713be61fa7479f58fc6fec4fcf  gcc/testsuite/gcc.target/powerpc/vec-rlmi-rlnm.c
  f9f609a740dac9270f63ed47cf131e3e  gcc/testsuite/gcc.target/powerpc/vec-rotate-1.c
  137d89e04c5e0edc9f6d5402c1414d37  gcc/testsuite/gcc.target/powerpc/vec-rotate-2.c
  96441926bf999692270027b1092cac57  gcc/testsuite/gcc.target/powerpc/vec-rotate-3.c
  0368d3c407ffd6a05b2ea100ff07f88c  gcc/testsuite/gcc.target/powerpc/vec-rotate-4.c
! b8868b9729698b7996b4d9124535989c  gcc/testsuite/gcc.target/powerpc/vec-set-char.c
! 67f6a5a1483de031a4f37ae393461950  gcc/testsuite/gcc.target/powerpc/vec-set-int.c
! bc4bf9cced071d4b0138eb94da9accee  gcc/testsuite/gcc.target/powerpc/vec-set-short.c
! a187918b30c9c8030bc9bbaf9599bb34  gcc/testsuite/gcc.target/powerpc/vec-setup-double.c
! 096cb7255750f7796c5f3ef33baf3cf7  gcc/testsuite/gcc.target/powerpc/vec-setup-long.c
  30f50ac003dbd1454426619dc4d0b988  gcc/testsuite/gcc.target/powerpc/vec-setup.h
+ 691a3be6e68281ca694f9a68b84bc0ed  gcc/testsuite/gcc.target/powerpc/vec-shift-double-runnable.c
  b558fe15786948ecde81acc46fdba7e6  gcc/testsuite/gcc.target/powerpc/vec-shift.c
  8ee50015e788404267646adf1ac95972  gcc/testsuite/gcc.target/powerpc/vec-shr.c
  127d2d7f255399904a77777bca197fec  gcc/testsuite/gcc.target/powerpc/vec-sld-modulo.c
+ ea06c6c33dc2b32c19fca150e42f09b8  gcc/testsuite/gcc.target/powerpc/vec-splati-runnable.c
  6dac3c4c0900e12a20b36757d815f46d  gcc/testsuite/gcc.target/powerpc/vec-srad-modulo.c
  2a0707e5093ef9facb6ce5e359ee4720  gcc/testsuite/gcc.target/powerpc/vec-srd-modulo.c
! fc49ae9181fd7d2ce969687524825c19  gcc/testsuite/gcc.target/powerpc/vec-stril-0.c
! d9583a8abd7559334a0da9843efe8feb  gcc/testsuite/gcc.target/powerpc/vec-stril-1.c
! 486975a1a504b07dd3417e17cabfa0ff  gcc/testsuite/gcc.target/powerpc/vec-stril-10.c
! 5fc793e382b85ddfcdc7f6933c499d89  gcc/testsuite/gcc.target/powerpc/vec-stril-11.c
! 52811b3e05c70c49ed1ea06667814c20  gcc/testsuite/gcc.target/powerpc/vec-stril-12.c
! 404d8215dbd94284d70fd1334473e115  gcc/testsuite/gcc.target/powerpc/vec-stril-13.c
! d945a125ac6272665f2ab6dbadcb0ef4  gcc/testsuite/gcc.target/powerpc/vec-stril-14.c
! d77bc77aa9e0ab89be9b5420954982dd  gcc/testsuite/gcc.target/powerpc/vec-stril-15.c
! f2e7cf66efbe361484dbc87f8d180ce4  gcc/testsuite/gcc.target/powerpc/vec-stril-16.c
! 1eac8dd36d2f6251518a695d32ee6ea9  gcc/testsuite/gcc.target/powerpc/vec-stril-17.c
! 322de7b8d24bd434d20e94e1a4e5adf8  gcc/testsuite/gcc.target/powerpc/vec-stril-18.c
! 4dd59091483cc48d1708705cd7eca4b9  gcc/testsuite/gcc.target/powerpc/vec-stril-19.c
! c30c9be68ea7799617632509014bf343  gcc/testsuite/gcc.target/powerpc/vec-stril-2.c
! 7a83c0cf37d171b8ebd208a25554f550  gcc/testsuite/gcc.target/powerpc/vec-stril-20.c
! 8b3f9f43a64effc72872f792aa77106a  gcc/testsuite/gcc.target/powerpc/vec-stril-21.c
! 7aaddc271d70dc2b2e244ee379f9265c  gcc/testsuite/gcc.target/powerpc/vec-stril-22.c
! 64ad9df090341826073e1856bc35e36b  gcc/testsuite/gcc.target/powerpc/vec-stril-23.c
! 9eeb4ae73e01fd8ae37a48960b284a54  gcc/testsuite/gcc.target/powerpc/vec-stril-3.c
! c1bd0c319815779b881122f2fa5560b1  gcc/testsuite/gcc.target/powerpc/vec-stril-4.c
! bd5d2941ac4198b51b95821064ee09ec  gcc/testsuite/gcc.target/powerpc/vec-stril-5.c
! 28a34332d6a00cba8b46253f12444f8c  gcc/testsuite/gcc.target/powerpc/vec-stril-6.c
! 296cb1794648fc24e8611e030adf78a8  gcc/testsuite/gcc.target/powerpc/vec-stril-7.c
! c6ea23618a9f91293289a1e7789cbc8e  gcc/testsuite/gcc.target/powerpc/vec-stril-8.c
! 40628ff33f20f2b5fa7c80533bb012f5  gcc/testsuite/gcc.target/powerpc/vec-stril-9.c
! 2023f658e3c8072f2a69bdc4a4acec65  gcc/testsuite/gcc.target/powerpc/vec-stril_p-0.c
! 533e53a997260486cacd534738ba26f6  gcc/testsuite/gcc.target/powerpc/vec-stril_p-1.c
! 29846973673dd7eaa8202bdce628f21c  gcc/testsuite/gcc.target/powerpc/vec-stril_p-10.c
! 18274ca6b558cbe796541b95538cfda1  gcc/testsuite/gcc.target/powerpc/vec-stril_p-11.c
! 3b2db49c322c5c94e20cd09f105dc629  gcc/testsuite/gcc.target/powerpc/vec-stril_p-2.c
! df7e8835f7bbd4d8751e8ed4ec2b967f  gcc/testsuite/gcc.target/powerpc/vec-stril_p-3.c
! 8651982ea540143c77f7d9fd261e76b2  gcc/testsuite/gcc.target/powerpc/vec-stril_p-4.c
! caa59cb34fb2489454fe6ed92518d669  gcc/testsuite/gcc.target/powerpc/vec-stril_p-5.c
! 12e83d034633da2324fe792fe2c41a72  gcc/testsuite/gcc.target/powerpc/vec-stril_p-6.c
! 1a74f1e5b651a59a31441d87d9e4966f  gcc/testsuite/gcc.target/powerpc/vec-stril_p-7.c
! 57b284e3f8197ca750b962089963eece  gcc/testsuite/gcc.target/powerpc/vec-stril_p-8.c
! af2dc4edf3a000580d56fe9ee5d45ade  gcc/testsuite/gcc.target/powerpc/vec-stril_p-9.c
! 464efa99ad337a64f5a9011c2a3009bf  gcc/testsuite/gcc.target/powerpc/vec-strir-0.c
! 755fb5b6f51a8c4021efad8d5ecf2789  gcc/testsuite/gcc.target/powerpc/vec-strir-1.c
! bb7ca31b7de89b8d371c0808a38ebbae  gcc/testsuite/gcc.target/powerpc/vec-strir-10.c
! 8596083d985b0451a6a1c29e760d8605  gcc/testsuite/gcc.target/powerpc/vec-strir-11.c
! 2ee8c4a1f24e0fa2ea45b59fa823be85  gcc/testsuite/gcc.target/powerpc/vec-strir-12.c
! 38d60f464284566e1a6e178a0ab2592e  gcc/testsuite/gcc.target/powerpc/vec-strir-13.c
! 68052fa164b8dfba618ec7f915d2ba8f  gcc/testsuite/gcc.target/powerpc/vec-strir-14.c
! d093b9c827e5f012c9ec3794f7ed8dc5  gcc/testsuite/gcc.target/powerpc/vec-strir-15.c
! 801d38906a4e1b6b9cfbf041af36735c  gcc/testsuite/gcc.target/powerpc/vec-strir-16.c
! fdc01523afede8394b1f59f981ea7e1e  gcc/testsuite/gcc.target/powerpc/vec-strir-17.c
! 866708173a5dba00a8e0e6598b5f52d8  gcc/testsuite/gcc.target/powerpc/vec-strir-18.c
! 4b493092dbdac90518bc95cb6a9c840a  gcc/testsuite/gcc.target/powerpc/vec-strir-19.c
! 0954d91e11cc7fc5bca6a22599e79f94  gcc/testsuite/gcc.target/powerpc/vec-strir-2.c
! c9440cc8b052199a6d01f7597e930379  gcc/testsuite/gcc.target/powerpc/vec-strir-20.c
! da12c2961e81e4413595e29c6e90f149  gcc/testsuite/gcc.target/powerpc/vec-strir-21.c
! 28837e41295f08c84206a6d1d65af67b  gcc/testsuite/gcc.target/powerpc/vec-strir-22.c
! 27c63e6495ac2ed95eadeb777820bd5f  gcc/testsuite/gcc.target/powerpc/vec-strir-23.c
! 27d0434b02a3ec8968a2998550f9aba0  gcc/testsuite/gcc.target/powerpc/vec-strir-3.c
! 3e6651e692f7333d504d3f70dceeccfd  gcc/testsuite/gcc.target/powerpc/vec-strir-4.c
! dfd3bfdb123d190e9b29c9b55aadc7aa  gcc/testsuite/gcc.target/powerpc/vec-strir-5.c
! 8b6d9d2840703d43ac51a0704d49c9bb  gcc/testsuite/gcc.target/powerpc/vec-strir-6.c
! d72481884eb17dd4f09fbfc8e3766347  gcc/testsuite/gcc.target/powerpc/vec-strir-7.c
! 5bdb41e45be5987b79db41a42159ad42  gcc/testsuite/gcc.target/powerpc/vec-strir-8.c
! a7b7225abff466fc380d439e5db80cae  gcc/testsuite/gcc.target/powerpc/vec-strir-9.c
! 0ab304bdb2d3307abc9a1d1262fa395a  gcc/testsuite/gcc.target/powerpc/vec-strir_p-0.c
! d0103496cdff897e1945877bbcc05258  gcc/testsuite/gcc.target/powerpc/vec-strir_p-1.c
! c7864f6070649fcd47654dff872a1652  gcc/testsuite/gcc.target/powerpc/vec-strir_p-10.c
! 47a8a7f400c48671573290c8f5e75db5  gcc/testsuite/gcc.target/powerpc/vec-strir_p-11.c
! 3570f8770eb101c490272d75559eaa56  gcc/testsuite/gcc.target/powerpc/vec-strir_p-2.c
! bce2e295674dedc60f6bc2b7a05474a3  gcc/testsuite/gcc.target/powerpc/vec-strir_p-3.c
! 0293ae30e34c0fa3f1e20708d4174d82  gcc/testsuite/gcc.target/powerpc/vec-strir_p-4.c
! 093f11f933b82861372123d453e83186  gcc/testsuite/gcc.target/powerpc/vec-strir_p-5.c
! fb115830b0c3154f601d7acda75e8f58  gcc/testsuite/gcc.target/powerpc/vec-strir_p-6.c
! e3c43b6691eae1790d76349576b17f25  gcc/testsuite/gcc.target/powerpc/vec-strir_p-7.c
! 149e14f0256b7dd028f66e410e34e6de  gcc/testsuite/gcc.target/powerpc/vec-strir_p-8.c
! 6cc64fba06f521de4b9f68cf2168c822  gcc/testsuite/gcc.target/powerpc/vec-strir_p-9.c
! b3ae45bb815549b9cb0788402d76d01d  gcc/testsuite/gcc.target/powerpc/vec-ternarylogic-0.c
! 0d5bb52c857a696a6b953cf486e49a99  gcc/testsuite/gcc.target/powerpc/vec-ternarylogic-1.c
! 8758339d8a62eacf1ecba60b5d5f8c16  gcc/testsuite/gcc.target/powerpc/vec-ternarylogic-10.c
! ff220ad11326bc4e4ddc8b5115e9b04f  gcc/testsuite/gcc.target/powerpc/vec-ternarylogic-2.c
! 626d93b3738ca84a5224023392a51123  gcc/testsuite/gcc.target/powerpc/vec-ternarylogic-3.c
! ea57c6cb3b3a40e54841a77cfe7d28c4  gcc/testsuite/gcc.target/powerpc/vec-ternarylogic-4.c
! 3e6aab7da384b42bfdb48e45ba7eff75  gcc/testsuite/gcc.target/powerpc/vec-ternarylogic-5.c
! 5b36c03318a988d2a7de6f258ec2248c  gcc/testsuite/gcc.target/powerpc/vec-ternarylogic-6.c
! 61b7063daea7b64f543b5ee6991e1642  gcc/testsuite/gcc.target/powerpc/vec-ternarylogic-7.c
! 0b71e37ab264f807faebdf4dc7dadbec  gcc/testsuite/gcc.target/powerpc/vec-ternarylogic-8.c
! 545806e3e432c4a4932c83192c3050a6  gcc/testsuite/gcc.target/powerpc/vec-ternarylogic-9.c
! ad5fc586c0421d4792f2c22570c2eb18  gcc/testsuite/gcc.target/powerpc/vec-xxpermdi.c
! a459e155035fcdf829cd3a8c89cd9b77  gcc/testsuite/gcc.target/powerpc/vector_float.c
  cfe95399d48da5db32fbce7f0c697a3c  gcc/testsuite/gcc.target/powerpc/versioned-copy-loop.c
  d0f4244d0c95771117041974544ba517  gcc/testsuite/gcc.target/powerpc/volatile-mem.c
! af195737a9564a5ee831769e506082de  gcc/testsuite/gcc.target/powerpc/vslv-0.c
! d66cc31f6c69cfa141b35074e6ec706b  gcc/testsuite/gcc.target/powerpc/vslv-1.c
! 74bfd9ce1c69c20b5cc77e8bcd1c38a1  gcc/testsuite/gcc.target/powerpc/vsrv-0.c
! 57be6de542f9b108fe0546fc031b4731  gcc/testsuite/gcc.target/powerpc/vsrv-1.c
  e4e3fc4ecdb73e4c04d99e6785009a5e  gcc/testsuite/gcc.target/powerpc/vsu/vec-all-ne-0.c
  f2d01578c267545b26e43e182413ef9f  gcc/testsuite/gcc.target/powerpc/vsu/vec-all-ne-1.c
  9e05a1d6aac5ca0149f3937c4c276520  gcc/testsuite/gcc.target/powerpc/vsu/vec-all-ne-10.c
*************** b17fd98b31ca58c51530fbafbe560707  gcc/te
*** 63635,63641 ****
  1138a8ec54eee8975e2026cde9a19c04  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-10.c
  109ed573811b4dca4241e3a7f1d7c406  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-11.c
  5eaebdc70cac2cd4c4e824994a76c04b  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-12.c
! 74d54280a467e3b4840f5709d46f88c5  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-13.c
  ac275faec7356fae47e3466a4d5b2b6e  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-2.c
  8cae182ce068933d26bb0c484991c528  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-3.c
  c41e3f281b6a46d1a15541031617c550  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-4.c
--- 67729,67735 ----
  1138a8ec54eee8975e2026cde9a19c04  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-10.c
  109ed573811b4dca4241e3a7f1d7c406  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-11.c
  5eaebdc70cac2cd4c4e824994a76c04b  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-12.c
! c4e3d3936d19f9dc3f3710f26c1ad64c  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-13.c
  ac275faec7356fae47e3466a4d5b2b6e  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-2.c
  8cae182ce068933d26bb0c484991c528  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-3.c
  c41e3f281b6a46d1a15541031617c550  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-4.c
*************** b88613b767bb0807b1762e8eb526a343  gcc/te
*** 63674,63680 ****
  47a01322cf4b1487712207de43d7799d  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-7.c
  b0a697b054abbb240f1d84da6b8b6e3d  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-8.c
  4c31abd6b29ad29d6e3781f73129efd7  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-9.c
! 6a06f0233ae98212fe538e2d8dfa1a8c  gcc/testsuite/gcc.target/powerpc/vsu/vsu.exp
  aaeb960a2e271bc474363e9917aecb51  gcc/testsuite/gcc.target/powerpc/vsx-13.c
  2d2324d8274dfc9b008525e52c7c7bd6  gcc/testsuite/gcc.target/powerpc/vsx-7.c
  52f42f9be22f511e882b624f99d63a7d  gcc/testsuite/gcc.target/powerpc/vsx-builtin-1.c
--- 67768,67774 ----
  47a01322cf4b1487712207de43d7799d  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-7.c
  b0a697b054abbb240f1d84da6b8b6e3d  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-8.c
  4c31abd6b29ad29d6e3781f73129efd7  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-9.c
! c32bbd9a8f3aa69bc0f2c8caf9c251e0  gcc/testsuite/gcc.target/powerpc/vsu/vsu.exp
  aaeb960a2e271bc474363e9917aecb51  gcc/testsuite/gcc.target/powerpc/vsx-13.c
  2d2324d8274dfc9b008525e52c7c7bd6  gcc/testsuite/gcc.target/powerpc/vsx-7.c
  52f42f9be22f511e882b624f99d63a7d  gcc/testsuite/gcc.target/powerpc/vsx-builtin-1.c
*************** d128b18a20f2a55978e519508f48f1ae  gcc/te
*** 63727,63733 ****
  cdde8569ebb2ca104f942dd183c12fa2  gcc/testsuite/gcc.target/powerpc/vsx-builtin-4.c
  9bacca313420b00c643d89ba549c4c57  gcc/testsuite/gcc.target/powerpc/vsx-builtin-5.c
  34d5d7bd0a57589cc1249d19cac92fbf  gcc/testsuite/gcc.target/powerpc/vsx-builtin-6.c
! 1a9411538e94b9426abed50d641e0410  gcc/testsuite/gcc.target/powerpc/vsx-builtin-7.c
  6c165a9a07d4fa8f16289c23ae6a58fd  gcc/testsuite/gcc.target/powerpc/vsx-builtin-8.c
  33633751eb0bfabbb2951a0070770508  gcc/testsuite/gcc.target/powerpc/vsx-builtin-9a.c
  2e9c4b2355be46611bfe42e4a9f8d1f3  gcc/testsuite/gcc.target/powerpc/vsx-builtin-9b.c
--- 67821,67827 ----
  cdde8569ebb2ca104f942dd183c12fa2  gcc/testsuite/gcc.target/powerpc/vsx-builtin-4.c
  9bacca313420b00c643d89ba549c4c57  gcc/testsuite/gcc.target/powerpc/vsx-builtin-5.c
  34d5d7bd0a57589cc1249d19cac92fbf  gcc/testsuite/gcc.target/powerpc/vsx-builtin-6.c
! b85a4370874d0558ca845f7c6e5f0a6d  gcc/testsuite/gcc.target/powerpc/vsx-builtin-7.c
  6c165a9a07d4fa8f16289c23ae6a58fd  gcc/testsuite/gcc.target/powerpc/vsx-builtin-8.c
  33633751eb0bfabbb2951a0070770508  gcc/testsuite/gcc.target/powerpc/vsx-builtin-9a.c
  2e9c4b2355be46611bfe42e4a9f8d1f3  gcc/testsuite/gcc.target/powerpc/vsx-builtin-9b.c
*************** b540a9d400f1cfa3079702b726dafdd4  gcc/te
*** 63745,63750 ****
--- 67839,67848 ----
  74877cc935345acfd4090545a5799ecc  gcc/testsuite/gcc.target/powerpc/vsx-himode.c
  a0f1e084731b560ca0571b11d1e6dadb  gcc/testsuite/gcc.target/powerpc/vsx-himode2.c
  1096193abe573da23217852fb04f04d8  gcc/testsuite/gcc.target/powerpc/vsx-himode3.c
+ 13fa16e1cab2f774aa32ca198815a51d  gcc/testsuite/gcc.target/powerpc/vsx-load-element-extend-char.c
+ 2d0f31a1f78ac44542808e61ff9538b5  gcc/testsuite/gcc.target/powerpc/vsx-load-element-extend-int.c
+ 69a42ea4d784cbbc9f09885bbe23ecbb  gcc/testsuite/gcc.target/powerpc/vsx-load-element-extend-longlong.c
+ 2433fb788bd5615867192fdd254f8b82  gcc/testsuite/gcc.target/powerpc/vsx-load-element-extend-short.c
  b1687eae08b09f4e44f0141b3d00f838  gcc/testsuite/gcc.target/powerpc/vsx-mass-1.c
  e105a32e783f347017935f1aced67f43  gcc/testsuite/gcc.target/powerpc/vsx-qimode.c
  963bd306546f09e9aaede8b986bf0198  gcc/testsuite/gcc.target/powerpc/vsx-qimode2.c
*************** e105a32e783f347017935f1aced67f43  gcc/te
*** 63753,63786 ****
  29940786f43c36f40d10f95dbd60b747  gcc/testsuite/gcc.target/powerpc/vsx-simode.c
  b00b00f526c9d44c75f1dbfe2e9eb30e  gcc/testsuite/gcc.target/powerpc/vsx-simode2.c
  e889263e2ee39a10680e0a6dc47a0f28  gcc/testsuite/gcc.target/powerpc/vsx-simode3.c
! 91691a7910c8873dbdd1d1285f09bada  gcc/testsuite/gcc.target/powerpc/vsx-vector-1.c
! 26a0b20875e8b46bcf37d109a8e07eb4  gcc/testsuite/gcc.target/powerpc/vsx-vector-2.c
! 33b2139cf62f85deed8fc3e4ac0dbec9  gcc/testsuite/gcc.target/powerpc/vsx-vector-3.c
! 09aa38c0d53a41e956a603510bdf2a2e  gcc/testsuite/gcc.target/powerpc/vsx-vector-4.c
! 30ef977c179e1c53c610b692aa438cc9  gcc/testsuite/gcc.target/powerpc/vsx-vector-5.c
  dfecd833b7f3665c63e2853fcc3b0201  gcc/testsuite/gcc.target/powerpc/vsx-vector-6.h
  fed52b2cbe7b6b8a10eccd3219ad9598  gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p7.c
! 399680eb27e734047381424a82ce99a5  gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p8.c
! ac0bb3f259aab7234d0e081ff7d7abca  gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p9.c
  a47d2b2aa16e29fea0595606b20b538e  gcc/testsuite/gcc.target/powerpc/vsx-vector-7.c
! 96252b60cba46193459905f81675a86c  gcc/testsuite/gcc.target/powerpc/vsx-vector-abss.c
! efad5c089babf5cbd31b90a9f1054778  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c
! 2642429d27fd14440a8bf2d39c6e0d68  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c
! b3f40c36f867d9e774cdb4beb1b2b1ea  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-3.c
! fb25ac71881f0e0217c275eb64eb07a1  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c
! 3a0d3b6f22f221bf48f6210c49ab9833  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-5.c
! f74b4a3181655bb1739910e01c4c7c20  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c
! dd94ee0718cb8a5fe52d2fe329c966b2  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c
! c7ca2ee789783d9e61ff84fb0468ded2  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c
! 4c3eb1e50370d0549d9119858d74ac36  gcc/testsuite/gcc.target/powerpc/vsxcopy.c
  a41824c2d631022112abc4b748d87126  gcc/testsuite/gcc.target/powerpc/warn-1.c
  d2a696110957009abb60358c583ae15b  gcc/testsuite/gcc.target/powerpc/warn-2.c
  f221be3b8f1eae9fc5bf2ead3376ca38  gcc/testsuite/gcc.target/powerpc/warn-lvsl-lvsr.c
  4085caae38d94c3ee9344e9611ff744a  gcc/testsuite/gcc.target/pru/abi-arg-struct.c
  6656ae83d6a1aa9ba23e7ddd98bd7663  gcc/testsuite/gcc.target/pru/ashiftrt.c
  eb37da7b7a1c2dd2f37facf076700919  gcc/testsuite/gcc.target/pru/builtins-1.c
  f68fafa197d4e3c5306c9e60f6a73cbf  gcc/testsuite/gcc.target/pru/builtins-error.c
  b1971e5cba3a4b0c2b8ab488ddebf145  gcc/testsuite/gcc.target/pru/clearbit.c
  4075b8039f1970fec14ed80c59f32df6  gcc/testsuite/gcc.target/pru/loop-asm.c
  7a3704d0e643537a3629b3252e74d88a  gcc/testsuite/gcc.target/pru/loop-dowhile.c
  76a4f5af1a8ce7f43c41141f93f02f49  gcc/testsuite/gcc.target/pru/loop-hi-1.c
--- 67851,67896 ----
  29940786f43c36f40d10f95dbd60b747  gcc/testsuite/gcc.target/powerpc/vsx-simode.c
  b00b00f526c9d44c75f1dbfe2e9eb30e  gcc/testsuite/gcc.target/powerpc/vsx-simode2.c
  e889263e2ee39a10680e0a6dc47a0f28  gcc/testsuite/gcc.target/powerpc/vsx-simode3.c
! c75487042d6fbca84e1dba3b5e8f92d0  gcc/testsuite/gcc.target/powerpc/vsx-store-element-truncate-char.c
! 0e29ef45d3fe2b25f87c199b6cae9aea  gcc/testsuite/gcc.target/powerpc/vsx-store-element-truncate-int.c
! f9d9f0d7d97798cc627e28956304605e  gcc/testsuite/gcc.target/powerpc/vsx-store-element-truncate-longlong.c
! d621f7ff07170c2eaeac5f10543455f6  gcc/testsuite/gcc.target/powerpc/vsx-store-element-truncate-short.c
! 557f5ca692b399b3af7633e6cb4ea6bb  gcc/testsuite/gcc.target/powerpc/vsx-vector-1.c
! 103a5ce66937ef51aafdab20399edfa5  gcc/testsuite/gcc.target/powerpc/vsx-vector-2.c
! 6d2ba2b96d639efe3d39ed37123938f9  gcc/testsuite/gcc.target/powerpc/vsx-vector-3.c
! 1344016e05ee9e70c20e55610ab6587f  gcc/testsuite/gcc.target/powerpc/vsx-vector-4.c
! 3e82ab5431559b909d22a22327671450  gcc/testsuite/gcc.target/powerpc/vsx-vector-5.c
  dfecd833b7f3665c63e2853fcc3b0201  gcc/testsuite/gcc.target/powerpc/vsx-vector-6.h
  fed52b2cbe7b6b8a10eccd3219ad9598  gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p7.c
! d8cb2c01011fd067b893a6a06b16aa6e  gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p8.c
! 43056c312ed673fb7ffa6728311a212d  gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p9.c
  a47d2b2aa16e29fea0595606b20b538e  gcc/testsuite/gcc.target/powerpc/vsx-vector-7.c
! ebd3e2644f3e43135e2172b26fafd1bf  gcc/testsuite/gcc.target/powerpc/vsx-vector-abss.c
! 35d7bcc6cf69574c463501a1e76e510d  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c
! 84cfc07d80810cb3573b9b1f672ac915  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c
! f594dbaf22d3e98eb44318a87d87b445  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-3.c
! dfed3e0b27e36cef4c1b5ca379a587cd  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c
! 90b06f6dd3084d0a0463758c56860af8  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-5.c
! 66401779cf7819a1c89fe27214fee960  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c
! 83dfe066840d622625d47fb5a0b0a7e6  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c
! 909fbf2c73af98a99b3970443e100b03  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c
! c64a5cc2ce1d0b7ac9d881b4585a9313  gcc/testsuite/gcc.target/powerpc/vsx_mask-count-runnable.c
! 37a4787409404cc5944ae67ed64e5513  gcc/testsuite/gcc.target/powerpc/vsx_mask-expand-runnable.c
! 829a2621c1495feaccfe06f5b735d1db  gcc/testsuite/gcc.target/powerpc/vsx_mask-extract-runnable.c
! dcf5d72ed56025e6bfc826f9a41f27c1  gcc/testsuite/gcc.target/powerpc/vsx_mask-move-runnable.c
! 4f867b076b9d9f0fcb7b0a6262d5be8b  gcc/testsuite/gcc.target/powerpc/vsxcopy.c
  a41824c2d631022112abc4b748d87126  gcc/testsuite/gcc.target/powerpc/warn-1.c
  d2a696110957009abb60358c583ae15b  gcc/testsuite/gcc.target/powerpc/warn-2.c
  f221be3b8f1eae9fc5bf2ead3376ca38  gcc/testsuite/gcc.target/powerpc/warn-lvsl-lvsr.c
+ a2ac91e17cb9dea1db858f7f03eecc07  gcc/testsuite/gcc.target/powerpc/xxgenpc-runnable.c
  4085caae38d94c3ee9344e9611ff744a  gcc/testsuite/gcc.target/pru/abi-arg-struct.c
  6656ae83d6a1aa9ba23e7ddd98bd7663  gcc/testsuite/gcc.target/pru/ashiftrt.c
  eb37da7b7a1c2dd2f37facf076700919  gcc/testsuite/gcc.target/pru/builtins-1.c
  f68fafa197d4e3c5306c9e60f6a73cbf  gcc/testsuite/gcc.target/pru/builtins-error.c
  b1971e5cba3a4b0c2b8ab488ddebf145  gcc/testsuite/gcc.target/pru/clearbit.c
+ 148e56e25c8663966fdd06ef357ee484  gcc/testsuite/gcc.target/pru/clobber-sp.c
+ 68ffe5637b2fd7262c58183a6492376f  gcc/testsuite/gcc.target/pru/halt.c
+ f219104eff0da94d15f6e5b08772e732  gcc/testsuite/gcc.target/pru/lmbd.c
  4075b8039f1970fec14ed80c59f32df6  gcc/testsuite/gcc.target/pru/loop-asm.c
  7a3704d0e643537a3629b3252e74d88a  gcc/testsuite/gcc.target/pru/loop-dowhile.c
  76a4f5af1a8ce7f43c41141f93f02f49  gcc/testsuite/gcc.target/pru/loop-hi-1.c
*************** e723b7a7f530e73ad253bc9dd197f22c  gcc/te
*** 63794,63801 ****
  4fc3f5357c538eb9df2ba0844776a57f  gcc/testsuite/gcc.target/pru/loop-u8_pcrel_overflow.c
  1711cb1af8e7913ebf3b34324e5f07db  gcc/testsuite/gcc.target/pru/loop-ubyte-1.c
  a71f924d37c55643c417681737768eee  gcc/testsuite/gcc.target/pru/loop-ubyte-2.c
! 3ae90cc5cbf4248c91af89d9a502ce1f  gcc/testsuite/gcc.target/pru/lra-framepointer-fragmentation-1.c
! aa9df8a6a1f03193eaf8e0c918312684  gcc/testsuite/gcc.target/pru/lra-framepointer-fragmentation-2.c
  3ef624a9acc199b79a2e7fdb3d02524e  gcc/testsuite/gcc.target/pru/mabi-ti-1.c
  139ed36d4d0fc027ab815f8bbfd4ab0f  gcc/testsuite/gcc.target/pru/mabi-ti-2.c
  19eab9f9f5dfcf20929abd7149593d5d  gcc/testsuite/gcc.target/pru/mabi-ti-3.c
--- 67904,67911 ----
  4fc3f5357c538eb9df2ba0844776a57f  gcc/testsuite/gcc.target/pru/loop-u8_pcrel_overflow.c
  1711cb1af8e7913ebf3b34324e5f07db  gcc/testsuite/gcc.target/pru/loop-ubyte-1.c
  a71f924d37c55643c417681737768eee  gcc/testsuite/gcc.target/pru/loop-ubyte-2.c
! 6b66e7c3542bcb548f7be2dc15327a78  gcc/testsuite/gcc.target/pru/lra-framepointer-fragmentation-1.c
! 8c19dc6643f242dac0f633e28aed3859  gcc/testsuite/gcc.target/pru/lra-framepointer-fragmentation-2.c
  3ef624a9acc199b79a2e7fdb3d02524e  gcc/testsuite/gcc.target/pru/mabi-ti-1.c
  139ed36d4d0fc027ab815f8bbfd4ab0f  gcc/testsuite/gcc.target/pru/mabi-ti-2.c
  19eab9f9f5dfcf20929abd7149593d5d  gcc/testsuite/gcc.target/pru/mabi-ti-3.c
*************** aa9df8a6a1f03193eaf8e0c918312684  gcc/te
*** 63805,63811 ****
  a5d8400fbc1e042d4b59d52b3b6e800b  gcc/testsuite/gcc.target/pru/mabi-ti-7.c
  d754f6db5a9f4cb648931c1a300fe5e6  gcc/testsuite/gcc.target/pru/pr64366.c
  aa63cbae8ab220e484f3dfce0053edb2  gcc/testsuite/gcc.target/pru/pragma-ctable_entry.c
! be9c8fc9df2504fa53b40ec98fd38841  gcc/testsuite/gcc.target/pru/pru.exp
  7b1dfd818b26fc3abda3150a2a5dccb4  gcc/testsuite/gcc.target/pru/qbbc-1.c
  d022a63c4f1bad92f86058d5cc8188d1  gcc/testsuite/gcc.target/pru/qbbc-2.c
  fdb4e33b3d3de2cac49ab1b15be0e268  gcc/testsuite/gcc.target/pru/qbbc-3.c
--- 67915,67921 ----
  a5d8400fbc1e042d4b59d52b3b6e800b  gcc/testsuite/gcc.target/pru/mabi-ti-7.c
  d754f6db5a9f4cb648931c1a300fe5e6  gcc/testsuite/gcc.target/pru/pr64366.c
  aa63cbae8ab220e484f3dfce0053edb2  gcc/testsuite/gcc.target/pru/pragma-ctable_entry.c
! 9fa7771be32ec40e9d5c93e8de0a25c5  gcc/testsuite/gcc.target/pru/pru.exp
  7b1dfd818b26fc3abda3150a2a5dccb4  gcc/testsuite/gcc.target/pru/qbbc-1.c
  d022a63c4f1bad92f86058d5cc8188d1  gcc/testsuite/gcc.target/pru/qbbc-2.c
  fdb4e33b3d3de2cac49ab1b15be0e268  gcc/testsuite/gcc.target/pru/qbbc-3.c
*************** fdb4e33b3d3de2cac49ab1b15be0e268  gcc/te
*** 63819,63837 ****
  57debb1068324d1b650c42700abacf74  gcc/testsuite/gcc.target/pru/zero_extend-qihi.c
  09a429ba90db19830e7f9b51abc8f22f  gcc/testsuite/gcc.target/pru/zero_extend-qisi.c
  3af307e98b4d19cff95200a9122cceec  gcc/testsuite/gcc.target/riscv/arch-1.c
  537cb7309d9505cf81f2ecf98518d08d  gcc/testsuite/gcc.target/riscv/arch-2.c
! f0ee7a0b5875a2e9781d8d55b09da61c  gcc/testsuite/gcc.target/riscv/arch-3.c
  3c838cd0cfbd0418af6a53c5670f3331  gcc/testsuite/gcc.target/riscv/arch-4.c
  d73866915b1256dfde3248e9c0f07999  gcc/testsuite/gcc.target/riscv/attribute-1.c
! 8f10af96b14b1487fd77c7329c453c68  gcc/testsuite/gcc.target/riscv/attribute-10.c
  8b1c29f8e14afdb92a7c1bfb359664dc  gcc/testsuite/gcc.target/riscv/attribute-2.c
  2d64bd54d43c95d99bb2c4cc3b341f5f  gcc/testsuite/gcc.target/riscv/attribute-3.c
  c6eb2a8166cec5d0ea9a5c6255c07257  gcc/testsuite/gcc.target/riscv/attribute-4.c
  46bce839aefd04dcab306deddfeacae4  gcc/testsuite/gcc.target/riscv/attribute-5.c
- b79d8a974a27ac595558bec1d7d87b54  gcc/testsuite/gcc.target/riscv/attribute-6.c
  a98475419210c55a2bc7bb8b4aced65a  gcc/testsuite/gcc.target/riscv/attribute-7.c
! 0998cad9cf2c995da2fdc3d49a146c90  gcc/testsuite/gcc.target/riscv/attribute-8.c
! c3eac5c461276f21c0ac35feecd81237  gcc/testsuite/gcc.target/riscv/attribute-9.c
  ac22a668a6627141957bbd3d791e4b02  gcc/testsuite/gcc.target/riscv/flattened-struct-abi-1.c
  62823213389acb5bfc34bf2e10ae7aa7  gcc/testsuite/gcc.target/riscv/flattened-struct-abi-2.c
  4b9c52bac0e4420fe66fd5ccc343689b  gcc/testsuite/gcc.target/riscv/interrupt-1.c
--- 67929,67961 ----
  57debb1068324d1b650c42700abacf74  gcc/testsuite/gcc.target/pru/zero_extend-qihi.c
  09a429ba90db19830e7f9b51abc8f22f  gcc/testsuite/gcc.target/pru/zero_extend-qisi.c
  3af307e98b4d19cff95200a9122cceec  gcc/testsuite/gcc.target/riscv/arch-1.c
+ a3f8756871697a9f730c8333769b058e  gcc/testsuite/gcc.target/riscv/arch-10.c
+ 7022cae4afe89d3aa07e219e7be7c906  gcc/testsuite/gcc.target/riscv/arch-11.c
  537cb7309d9505cf81f2ecf98518d08d  gcc/testsuite/gcc.target/riscv/arch-2.c
! 6ec433a4f2d7a8f155669be8aa26a27c  gcc/testsuite/gcc.target/riscv/arch-3.c
  3c838cd0cfbd0418af6a53c5670f3331  gcc/testsuite/gcc.target/riscv/arch-4.c
+ 392fca1ed0afb922f4fd91fcba9b333a  gcc/testsuite/gcc.target/riscv/arch-5.c
+ 62c9695aa7838cf0b7341e2614062d69  gcc/testsuite/gcc.target/riscv/arch-6.c
+ cf984397790566b55ef2dc82606fb385  gcc/testsuite/gcc.target/riscv/arch-7.c
+ 47a10e4054f5420cfb5fd5fcd0a88eaf  gcc/testsuite/gcc.target/riscv/arch-8.c
+ 610c8fea204038e15e9089d87b9b809c  gcc/testsuite/gcc.target/riscv/arch-9.c
  d73866915b1256dfde3248e9c0f07999  gcc/testsuite/gcc.target/riscv/attribute-1.c
! 642de0ea1380b117540b654779a18307  gcc/testsuite/gcc.target/riscv/attribute-10.c
! 449f1e9c90e27b80dc847305f221f64c  gcc/testsuite/gcc.target/riscv/attribute-11.c
! e77b06c0e97f7248ecd0dd110e74cdd5  gcc/testsuite/gcc.target/riscv/attribute-12.c
! e64a015db5f1c3784863193b26ecf66f  gcc/testsuite/gcc.target/riscv/attribute-13.c
! e43e1e2d278d2bdeac88581f6c6fbd04  gcc/testsuite/gcc.target/riscv/attribute-14.c
! 5556b38a6ce551cef74a3396ff23cda4  gcc/testsuite/gcc.target/riscv/attribute-15.c
! 80d10b55b112de681b7911dce37aa8ba  gcc/testsuite/gcc.target/riscv/attribute-16.c
! 20275d76e432203f5affe2f1ebfd9c5f  gcc/testsuite/gcc.target/riscv/attribute-17.c
! 6d8ec8aa684c81e0984dcf68696e7f9c  gcc/testsuite/gcc.target/riscv/attribute-18.c
  8b1c29f8e14afdb92a7c1bfb359664dc  gcc/testsuite/gcc.target/riscv/attribute-2.c
  2d64bd54d43c95d99bb2c4cc3b341f5f  gcc/testsuite/gcc.target/riscv/attribute-3.c
  c6eb2a8166cec5d0ea9a5c6255c07257  gcc/testsuite/gcc.target/riscv/attribute-4.c
  46bce839aefd04dcab306deddfeacae4  gcc/testsuite/gcc.target/riscv/attribute-5.c
  a98475419210c55a2bc7bb8b4aced65a  gcc/testsuite/gcc.target/riscv/attribute-7.c
! bbffc9daa7dc8e82cb2b671568b84141  gcc/testsuite/gcc.target/riscv/attribute-8.c
! 77731aa4f0bfb04d536ca1c298aff49d  gcc/testsuite/gcc.target/riscv/attribute-9.c
  ac22a668a6627141957bbd3d791e4b02  gcc/testsuite/gcc.target/riscv/flattened-struct-abi-1.c
  62823213389acb5bfc34bf2e10ae7aa7  gcc/testsuite/gcc.target/riscv/flattened-struct-abi-2.c
  4b9c52bac0e4420fe66fd5ccc343689b  gcc/testsuite/gcc.target/riscv/interrupt-1.c
*************** f69ed9814aa0739480a17cf1070d4373  gcc/te
*** 63847,63870 ****
  05f31801bad335b2de518bea4230b946  gcc/testsuite/gcc.target/riscv/li.c
  92b992d04fde94aee5b251f2605fb03b  gcc/testsuite/gcc.target/riscv/load-immediate.c
  4aef0f89ffb494d0a744e3b040b6c9c7  gcc/testsuite/gcc.target/riscv/losum-overflow.c
  14c90f84d8058b60faff46b00c097a9c  gcc/testsuite/gcc.target/riscv/pr84660.c
  1a434ff3440a676fb4f4c586bf3152e5  gcc/testsuite/gcc.target/riscv/pr93202.c
  6a4efdae4822baf9f3df7454d4e40a5b  gcc/testsuite/gcc.target/riscv/pr93304.c
  b5552dc4ebe2e10cb2cd9798ba0a1ef5  gcc/testsuite/gcc.target/riscv/pr95252.c
  d554990de6257eaed21c873a91b78998  gcc/testsuite/gcc.target/riscv/pr95683.c
  4a09604ef4cdb81da6aaf6179b4347d1  gcc/testsuite/gcc.target/riscv/pr96759.c
  f14c5181c4869646f5e8c36361c92f46  gcc/testsuite/gcc.target/riscv/pr99702.c
  f0f91a28596e2dcf0af2dee634ce81cd  gcc/testsuite/gcc.target/riscv/predef-1.c
  a800b0b2c0a7c1b33ad7379a050995d6  gcc/testsuite/gcc.target/riscv/predef-2.c
! 7536e7cf6900e49fcec2f3cf4afd1775  gcc/testsuite/gcc.target/riscv/predef-3.c
  eda1d9bd1ce79d8ed80f502e428d2855  gcc/testsuite/gcc.target/riscv/predef-4.c
  d12111264ce68b92da7294ffed1c4dcc  gcc/testsuite/gcc.target/riscv/predef-5.c
! 5dda09ba4671676f4b7db79a32479ccf  gcc/testsuite/gcc.target/riscv/predef-6.c
  6fcfed4dbaf9d6628a54e12a265b94fc  gcc/testsuite/gcc.target/riscv/predef-7.c
  5100854f35b1aa15ea4604d6a5d4478e  gcc/testsuite/gcc.target/riscv/predef-8.c
  b78c980bec602c6a91ac1bc85320f39f  gcc/testsuite/gcc.target/riscv/promote-type-for-libcall.c
! 3be3d6a0d5439e546ea8ebc6724e4723  gcc/testsuite/gcc.target/riscv/read-thread-pointer.c
! c0bf8becac0e2c1c23fb260d06c8f80d  gcc/testsuite/gcc.target/riscv/riscv.exp
  6bd569a0881471228538a06acf78338a  gcc/testsuite/gcc.target/riscv/save-restore-1.c
  77bed88da7126dd689a1ab20a2139f05  gcc/testsuite/gcc.target/riscv/save-restore-2.c
  c8b1672dbe936755570d9695ec9f371f  gcc/testsuite/gcc.target/riscv/save-restore-3.c
--- 67971,68006 ----
  05f31801bad335b2de518bea4230b946  gcc/testsuite/gcc.target/riscv/li.c
  92b992d04fde94aee5b251f2605fb03b  gcc/testsuite/gcc.target/riscv/load-immediate.c
  4aef0f89ffb494d0a744e3b040b6c9c7  gcc/testsuite/gcc.target/riscv/losum-overflow.c
+ 921c846f9d343bd139a635f83e6db437  gcc/testsuite/gcc.target/riscv/mcpu-1.c
+ 84a4693e36dd49686414997cb37fc127  gcc/testsuite/gcc.target/riscv/mcpu-2.c
+ 269992894322ca9fb2bc9217752bd689  gcc/testsuite/gcc.target/riscv/mcpu-3.c
+ 297b97dda64e94096f17b8881a96ba7c  gcc/testsuite/gcc.target/riscv/mcpu-4.c
+ efcb2d5344bde460bcbee76b9e33c09d  gcc/testsuite/gcc.target/riscv/mcpu-5.c
+ f10dd9a709d22cee958fd785672d36fe  gcc/testsuite/gcc.target/riscv/mcpu-6.c
+ 5dd548bcc6e4a75ff60a9063af21468e  gcc/testsuite/gcc.target/riscv/mcpu-7.c
  14c90f84d8058b60faff46b00c097a9c  gcc/testsuite/gcc.target/riscv/pr84660.c
  1a434ff3440a676fb4f4c586bf3152e5  gcc/testsuite/gcc.target/riscv/pr93202.c
  6a4efdae4822baf9f3df7454d4e40a5b  gcc/testsuite/gcc.target/riscv/pr93304.c
  b5552dc4ebe2e10cb2cd9798ba0a1ef5  gcc/testsuite/gcc.target/riscv/pr95252.c
  d554990de6257eaed21c873a91b78998  gcc/testsuite/gcc.target/riscv/pr95683.c
  4a09604ef4cdb81da6aaf6179b4347d1  gcc/testsuite/gcc.target/riscv/pr96759.c
+ 6f8b3515450502b2f9fe3e7f7f9a02a2  gcc/testsuite/gcc.target/riscv/pr98777.c
  f14c5181c4869646f5e8c36361c92f46  gcc/testsuite/gcc.target/riscv/pr99702.c
  f0f91a28596e2dcf0af2dee634ce81cd  gcc/testsuite/gcc.target/riscv/predef-1.c
+ 59a9f0893abd5996f21d36f0058cfe24  gcc/testsuite/gcc.target/riscv/predef-10.c
+ 096149631537bdf4dd88e802b462a530  gcc/testsuite/gcc.target/riscv/predef-11.c
+ f46ee91bdd6764124754e30c5a7ebaae  gcc/testsuite/gcc.target/riscv/predef-12.c
+ e47448da6c2d8048a0a92395071dcdb3  gcc/testsuite/gcc.target/riscv/predef-13.c
  a800b0b2c0a7c1b33ad7379a050995d6  gcc/testsuite/gcc.target/riscv/predef-2.c
! 5c8502ab810707cc250bad5ead954f4d  gcc/testsuite/gcc.target/riscv/predef-3.c
  eda1d9bd1ce79d8ed80f502e428d2855  gcc/testsuite/gcc.target/riscv/predef-4.c
  d12111264ce68b92da7294ffed1c4dcc  gcc/testsuite/gcc.target/riscv/predef-5.c
! 746c7a1465e1195eff43aa4dc0c5f55b  gcc/testsuite/gcc.target/riscv/predef-6.c
  6fcfed4dbaf9d6628a54e12a265b94fc  gcc/testsuite/gcc.target/riscv/predef-7.c
  5100854f35b1aa15ea4604d6a5d4478e  gcc/testsuite/gcc.target/riscv/predef-8.c
  b78c980bec602c6a91ac1bc85320f39f  gcc/testsuite/gcc.target/riscv/promote-type-for-libcall.c
! 65ce2c3872664bd9ee6b621cf3ea090d  gcc/testsuite/gcc.target/riscv/read-thread-pointer.c
! 35ed43aa2745975daa3bed2dbfbcf2f1  gcc/testsuite/gcc.target/riscv/riscv.exp
  6bd569a0881471228538a06acf78338a  gcc/testsuite/gcc.target/riscv/save-restore-1.c
  77bed88da7126dd689a1ab20a2139f05  gcc/testsuite/gcc.target/riscv/save-restore-2.c
  c8b1672dbe936755570d9695ec9f371f  gcc/testsuite/gcc.target/riscv/save-restore-3.c
*************** eb3e02261ae46eb9518822032d7fe89d  gcc/te
*** 63880,63886 ****
  04f78f5b27020ebb5749248ba9ac40f0  gcc/testsuite/gcc.target/riscv/shift-shift-2.c
  1dfed59e9e4db3db2d143a2eba583e14  gcc/testsuite/gcc.target/riscv/shift-shift-3.c
  abf54bfa9c926f5b5adf9ebd76030325  gcc/testsuite/gcc.target/riscv/shift-shift-4.c
! d76e761b074fb04aa46d4be42c99a83f  gcc/testsuite/gcc.target/riscv/shift-shift-5.c
  6dfb9790e241f950ea2aa3291b159220  gcc/testsuite/gcc.target/riscv/switch-qi.c
  8fb57c19db131e7052dd356fcaf31c36  gcc/testsuite/gcc.target/riscv/switch-si.c
  49941bd45fc4de8389bf599961feafd6  gcc/testsuite/gcc.target/riscv/weak-1.c
--- 68016,68030 ----
  04f78f5b27020ebb5749248ba9ac40f0  gcc/testsuite/gcc.target/riscv/shift-shift-2.c
  1dfed59e9e4db3db2d143a2eba583e14  gcc/testsuite/gcc.target/riscv/shift-shift-3.c
  abf54bfa9c926f5b5adf9ebd76030325  gcc/testsuite/gcc.target/riscv/shift-shift-4.c
! b32392b4018e3f861a366d7eb51bd3fa  gcc/testsuite/gcc.target/riscv/shift-shift-5.c
! 62eec78b40a444b14c9753b06f65a2d8  gcc/testsuite/gcc.target/riscv/shorten-memrefs-1.c
! 77b0ca02677452944d897c6f1f064bc4  gcc/testsuite/gcc.target/riscv/shorten-memrefs-2.c
! 77039217c6c166b118ffe78f398fa588  gcc/testsuite/gcc.target/riscv/shorten-memrefs-3.c
! 226db015baafbc4b55a9c57b043faa1b  gcc/testsuite/gcc.target/riscv/shorten-memrefs-4.c
! 43f91c2ab9c1460cb9f1c0d80de3c4e9  gcc/testsuite/gcc.target/riscv/shorten-memrefs-5.c
! 9fe7532544f05136d055974fea8ffb79  gcc/testsuite/gcc.target/riscv/shorten-memrefs-6.c
! 56e5df5c0ca48528c8070336e03273ff  gcc/testsuite/gcc.target/riscv/shorten-memrefs-7.c
! 1916a9b7496aeb9122302a0fe725728d  gcc/testsuite/gcc.target/riscv/shorten-memrefs-8.c
  6dfb9790e241f950ea2aa3291b159220  gcc/testsuite/gcc.target/riscv/switch-qi.c
  8fb57c19db131e7052dd356fcaf31c36  gcc/testsuite/gcc.target/riscv/switch-si.c
  49941bd45fc4de8389bf599961feafd6  gcc/testsuite/gcc.target/riscv/weak-1.c
*************** c8d42675ec79f56ceeed3c3797669b7c  gcc/te
*** 63888,63894 ****
  c3ce6b52f1909da2cedd31c51bf02d6f  gcc/testsuite/gcc.target/riscv/zero-extend-2.c
  c3eed8a5cded8ce0f4df5f4136bc5a2e  gcc/testsuite/gcc.target/riscv/zero-extend-3.c
  a3b8d54effeae9107d81958755eb9ef6  gcc/testsuite/gcc.target/riscv/zero-extend-4.c
! be74ff4ba6b9d0ae8608a312e866d466  gcc/testsuite/gcc.target/rl78/rl78.exp
  08a6a665d3a592b70dd51e3b59945801  gcc/testsuite/gcc.target/rl78/test_addm3.c
  f0737b5115c4a94dc1b2f670de5d83a4  gcc/testsuite/gcc.target/rl78/test_addsi3_internal.c
  77b20d827a48683a5d34b36224891ead  gcc/testsuite/gcc.target/rl78/test_auto_vector.c
--- 68032,68039 ----
  c3ce6b52f1909da2cedd31c51bf02d6f  gcc/testsuite/gcc.target/riscv/zero-extend-2.c
  c3eed8a5cded8ce0f4df5f4136bc5a2e  gcc/testsuite/gcc.target/riscv/zero-extend-3.c
  a3b8d54effeae9107d81958755eb9ef6  gcc/testsuite/gcc.target/riscv/zero-extend-4.c
! 35bd80733e17ab657a6acfd9c805d1dc  gcc/testsuite/gcc.target/riscv/zero-extend-5.c
! 8d9db29987ee35b244956389812bb6d7  gcc/testsuite/gcc.target/rl78/rl78.exp
  08a6a665d3a592b70dd51e3b59945801  gcc/testsuite/gcc.target/rl78/test_addm3.c
  f0737b5115c4a94dc1b2f670de5d83a4  gcc/testsuite/gcc.target/rl78/test_addsi3_internal.c
  77b20d827a48683a5d34b36224891ead  gcc/testsuite/gcc.target/rl78/test_auto_vector.c
*************** f0737b5115c4a94dc1b2f670de5d83a4  gcc/te
*** 63901,63907 ****
  1854cae6bc69cd8d1d547a850a4e43f0  gcc/testsuite/gcc.target/rx/packed-struct.c
  c141239c428d6f6e368356cbbd1dcdb7  gcc/testsuite/gcc.target/rx/pr83831.c
  853c27a897cefbe98ebdbb934bbedef0  gcc/testsuite/gcc.target/rx/rx-abi-function-tests.c
! 01f3f0099664c3c9f16ffa4253906839  gcc/testsuite/gcc.target/rx/rx.exp
  e718c4f5bac79651adb4d0396b231953  gcc/testsuite/gcc.target/rx/zero-width-bitfield.c
  2326486bbdc13fa6e49aadd508a1be61  gcc/testsuite/gcc.target/s390/20020926-1.c
  5f66a42e5c40df26aab6aad04c3794e3  gcc/testsuite/gcc.target/s390/20030123-1.c
--- 68046,68052 ----
  1854cae6bc69cd8d1d547a850a4e43f0  gcc/testsuite/gcc.target/rx/packed-struct.c
  c141239c428d6f6e368356cbbd1dcdb7  gcc/testsuite/gcc.target/rx/pr83831.c
  853c27a897cefbe98ebdbb934bbedef0  gcc/testsuite/gcc.target/rx/rx-abi-function-tests.c
! b1c68a4772404746fbe7b3929743db0c  gcc/testsuite/gcc.target/rx/rx.exp
  e718c4f5bac79651adb4d0396b231953  gcc/testsuite/gcc.target/rx/zero-width-bitfield.c
  2326486bbdc13fa6e49aadd508a1be61  gcc/testsuite/gcc.target/s390/20020926-1.c
  5f66a42e5c40df26aab6aad04c3794e3  gcc/testsuite/gcc.target/s390/20030123-1.c
*************** f657a587777cadd240d90267c42183a8  gcc/te
*** 63917,63922 ****
--- 68062,68068 ----
  b496b43e01188107d0277ab22fe7faa6  gcc/testsuite/gcc.target/s390/20140327-1.c
  f9efcac72c7632def29469b0cbef14cb  gcc/testsuite/gcc.target/s390/20150826-1.c
  4a96580e145f1c61cef78ba991ab4066  gcc/testsuite/gcc.target/s390/20181024-1.c
+ f27f299747d9862a0ca9a3ab3770f1c4  gcc/testsuite/gcc.target/s390/20200617.c
  2a2e7cf581c0ea913bb0cd940e096c96  gcc/testsuite/gcc.target/s390/TI-constants-lra.c
  79300a376a7a8fbc10ec913d6f99a928  gcc/testsuite/gcc.target/s390/TI-constants-nolra.c
  d69a98eeb9d370fcef146a6f7778c59d  gcc/testsuite/gcc.target/s390/addr-constraints-1.c
*************** bf08d8ae3952e5a9f6d75de6c60a3a5f  gcc/te
*** 63937,63942 ****
--- 68083,68089 ----
  4ac155357942947a9caec612263831f1  gcc/testsuite/gcc.target/s390/asm-machine-4.c
  381808a4590567090c1e800f04ae55f5  gcc/testsuite/gcc.target/s390/bswap-1.c
  2750052bc05f059828b76c05a2a7da2e  gcc/testsuite/gcc.target/s390/bswaphi-1.c
+ 6837d1a6d1d448c21031e10330351313  gcc/testsuite/gcc.target/s390/builtin-constant-p-threading.c
  34714a3aeb17aaa92176e5d909a9927a  gcc/testsuite/gcc.target/s390/combine-rotate-modulo.c
  bd36d7368fda184d34631ae156b531dc  gcc/testsuite/gcc.target/s390/combine-shift-rotate-add-mod.c
  c5136e0bb58277988b6c8fb48db7921f  gcc/testsuite/gcc.target/s390/dfp-1.c
*************** c5136e0bb58277988b6c8fb48db7921f  gcc/te
*** 63945,63950 ****
--- 68092,68099 ----
  1d597c2c76602bea7e4683b7c43d63ab  gcc/testsuite/gcc.target/s390/dwarfregtable-1.c
  3df32b127f6505d5afe3b8ea351491f1  gcc/testsuite/gcc.target/s390/dwarfregtable-2.c
  e4935aebfbac92efa594724b44e77822  gcc/testsuite/gcc.target/s390/dwarfregtable-3.c
+ b76aabe27bc8e57b089f23dadbb05795  gcc/testsuite/gcc.target/s390/float_t-1.c
+ 893bc834068fdeaf65a05649de7ee1a1  gcc/testsuite/gcc.target/s390/float_t-2.c
  9d34a3245581ff3208ddbda615ef6617  gcc/testsuite/gcc.target/s390/flogr-1.c
  2f2404c29092408bd406cc2e185ee7d4  gcc/testsuite/gcc.target/s390/fp2int1.c
  9b770970bea6710409e92c9a84d3a5d3  gcc/testsuite/gcc.target/s390/frame-addr1.c
*************** baa6d1c3d77baf7c1324df7bb6f4f40c  gcc/te
*** 64022,64029 ****
  f13fa958f52666320ebd966fc9530e05  gcc/testsuite/gcc.target/s390/litpool-int.c
  25399ee14c48d99597fc401591d68286  gcc/testsuite/gcc.target/s390/litpool-r3-1.c
  2b7175e138a756516a334fd03dd56b25  gcc/testsuite/gcc.target/s390/litpool-str-1.c
! 8455b58f4be0a26191cad17db20efdf4  gcc/testsuite/gcc.target/s390/load-and-test-fp-1.c
! f8576620d82647bd873233f1e02f59ab  gcc/testsuite/gcc.target/s390/load-and-test-fp-2.c
  39a3f1ac65f6b0dc5d9fe19ba5ed5f96  gcc/testsuite/gcc.target/s390/load-relative-check.c
  19669d4c8129516729256af32eaf6e79  gcc/testsuite/gcc.target/s390/load-thread-pointer-once-2.c
  b8618898336397f0399d4c97701db7b8  gcc/testsuite/gcc.target/s390/load-thread-pointer-once.c
--- 68171,68181 ----
  f13fa958f52666320ebd966fc9530e05  gcc/testsuite/gcc.target/s390/litpool-int.c
  25399ee14c48d99597fc401591d68286  gcc/testsuite/gcc.target/s390/litpool-r3-1.c
  2b7175e138a756516a334fd03dd56b25  gcc/testsuite/gcc.target/s390/litpool-str-1.c
! a588f46b95abbab88ae5d34ca6ecdd74  gcc/testsuite/gcc.target/s390/load-and-test-fp-1.c
! 29bb396d81160d4cfff6eea515a4540d  gcc/testsuite/gcc.target/s390/load-and-test-fp-2.c
! d473dda0acb68834c59c17300e9ce72a  gcc/testsuite/gcc.target/s390/load-and-test-fp.h
! 152456ddcd3af7995b7d613bdbcd10f5  gcc/testsuite/gcc.target/s390/load-imm64-1.c
! 4c57c6524dd8e7200aaa50124a0b1865  gcc/testsuite/gcc.target/s390/load-imm64-2.c
  39a3f1ac65f6b0dc5d9fe19ba5ed5f96  gcc/testsuite/gcc.target/s390/load-relative-check.c
  19669d4c8129516729256af32eaf6e79  gcc/testsuite/gcc.target/s390/load-thread-pointer-once-2.c
  b8618898336397f0399d4c97701db7b8  gcc/testsuite/gcc.target/s390/load-thread-pointer-once.c
*************** b8618898336397f0399d4c97701db7b8  gcc/te
*** 64032,64038 ****
  ebd38103c33d9be1fe39714752582711  gcc/testsuite/gcc.target/s390/md/andc-splitter-2.c
  9cf080f05a65a6c75f29f573c2a8c74a  gcc/testsuite/gcc.target/s390/md/atomic_compare_exchange-1.c
  10c6b7fde71de9dd63f0385af3e8bf9a  gcc/testsuite/gcc.target/s390/md/atomic_compare_exchange-1.inc
! 71ee8da4ad5577cfa5fa7195be252a1e  gcc/testsuite/gcc.target/s390/md/atomic_exchange-1.c
  80c910b12aea74c278268b0c8ba833a4  gcc/testsuite/gcc.target/s390/md/movstr-1.c
  2b57502a789ea6edc3939a3de7e4c926  gcc/testsuite/gcc.target/s390/md/rXsbg_mode_sXl.c
  6e95296e3366c3932f1913e37dcc3607  gcc/testsuite/gcc.target/s390/md/setmem_long-1.c
--- 68184,68190 ----
  ebd38103c33d9be1fe39714752582711  gcc/testsuite/gcc.target/s390/md/andc-splitter-2.c
  9cf080f05a65a6c75f29f573c2a8c74a  gcc/testsuite/gcc.target/s390/md/atomic_compare_exchange-1.c
  10c6b7fde71de9dd63f0385af3e8bf9a  gcc/testsuite/gcc.target/s390/md/atomic_compare_exchange-1.inc
! 48899608a96c6cef698fb830e8be0679  gcc/testsuite/gcc.target/s390/md/atomic_exchange-1.c
  80c910b12aea74c278268b0c8ba833a4  gcc/testsuite/gcc.target/s390/md/movstr-1.c
  2b57502a789ea6edc3939a3de7e4c926  gcc/testsuite/gcc.target/s390/md/rXsbg_mode_sXl.c
  6e95296e3366c3932f1913e37dcc3607  gcc/testsuite/gcc.target/s390/md/setmem_long-1.c
*************** c754a4515598fececb1e5306e99940eb  gcc/te
*** 64046,64053 ****
  01df0ea783460f442ebbcb2a05cbca45  gcc/testsuite/gcc.target/s390/mnop-mcount-m64.c
  436250948f985648a9f34494e8165c41  gcc/testsuite/gcc.target/s390/morestack.c
  e487655bbd959e42358a2a891b8712b8  gcc/testsuite/gcc.target/s390/mrecord-mcount.c
! 453d58790dea7eb8b0994e3ed17daaa1  gcc/testsuite/gcc.target/s390/mul-signed-overflow-1.c
! b24661a44c4894def3c23b4d5537f482  gcc/testsuite/gcc.target/s390/mul-signed-overflow-2.c
  ee3f00537b1c391d545c37c6ea4a145c  gcc/testsuite/gcc.target/s390/nearestint-1.c
  062259b85f76e8eaa4f342bcb50de319  gcc/testsuite/gcc.target/s390/nobp-function-pointer-attr.c
  fea682ccb6ddf5d48ba2e5b9a2ef8ae6  gcc/testsuite/gcc.target/s390/nobp-function-pointer-nothunk.c
--- 68198,68205 ----
  01df0ea783460f442ebbcb2a05cbca45  gcc/testsuite/gcc.target/s390/mnop-mcount-m64.c
  436250948f985648a9f34494e8165c41  gcc/testsuite/gcc.target/s390/morestack.c
  e487655bbd959e42358a2a891b8712b8  gcc/testsuite/gcc.target/s390/mrecord-mcount.c
! 89187d4ded3bce370dc2fc5e2b6166b6  gcc/testsuite/gcc.target/s390/mul-signed-overflow-1.c
! 7848d2e49973e98fd02e545a79bb6b05  gcc/testsuite/gcc.target/s390/mul-signed-overflow-2.c
  ee3f00537b1c391d545c37c6ea4a145c  gcc/testsuite/gcc.target/s390/nearestint-1.c
  062259b85f76e8eaa4f342bcb50de319  gcc/testsuite/gcc.target/s390/nobp-function-pointer-attr.c
  fea682ccb6ddf5d48ba2e5b9a2ef8ae6  gcc/testsuite/gcc.target/s390/nobp-function-pointer-nothunk.c
*************** b379cd03e188ebd20fb6bfd9e811a8f6  gcc/te
*** 64118,64137 ****
  a03e4e232422d0ea849b2eedc43f53bf  gcc/testsuite/gcc.target/s390/pr92176.c
  237f9f610e9777421f3c0dff930eec8b  gcc/testsuite/gcc.target/s390/pr93533.c
  f4792ece0a0aff8add8968cae67374ad  gcc/testsuite/gcc.target/s390/pr93908.c
  f1116dd01874e965a113345275e6310a  gcc/testsuite/gcc.target/s390/pr96456.c
  f9de3c4e9d9e8c3a707e1f51e48901b6  gcc/testsuite/gcc.target/s390/return-addr1.c
  5368e8759352b798ae1db6bc79919aa2  gcc/testsuite/gcc.target/s390/return-addr2.c
  c638a86bd5bf24acab1490492cbfb557  gcc/testsuite/gcc.target/s390/risbg-ll-1.c
  532ff931ad8bf62f60b08b1f9261827a  gcc/testsuite/gcc.target/s390/risbg-ll-2.c
  5b27542f6b0ae5c496ab1d16ec947c86  gcc/testsuite/gcc.target/s390/risbg-ll-3.c
  6c330cfc80a0f60d042947448413d011  gcc/testsuite/gcc.target/s390/rotate-truncation-mask.c
! 0f2f94809b722fa4c81fabbe6810dfc7  gcc/testsuite/gcc.target/s390/s390.exp
  970ac972bfd816dae5f8b5705abd8ab6  gcc/testsuite/gcc.target/s390/section-anchors.c
  2e57c7c23cac49a65eb61077317a2f1b  gcc/testsuite/gcc.target/s390/section-anchors2.c
  78c4d933475e58d55d22ab5b46b27884  gcc/testsuite/gcc.target/s390/section-anchors3.c
  cf53aab8a3ab2532dd55b65c25e2cda5  gcc/testsuite/gcc.target/s390/sigfpe-eh.c
  3a9ba61f8844739d1b5989c7c7e2b6c1  gcc/testsuite/gcc.target/s390/stackcheck1.c
  6194a2f1ab73b5d2d770793e72434897  gcc/testsuite/gcc.target/s390/target-attribute/pr82012.c
  4a0a569cb86f0820127939aa90fb2469  gcc/testsuite/gcc.target/s390/target-attribute/tattr-1.c
  3eadbba9f114de154af023b82b998dba  gcc/testsuite/gcc.target/s390/target-attribute/tattr-10.c
  df32ee2c85133188b09e051e4034671f  gcc/testsuite/gcc.target/s390/target-attribute/tattr-11.c
--- 68270,68298 ----
  a03e4e232422d0ea849b2eedc43f53bf  gcc/testsuite/gcc.target/s390/pr92176.c
  237f9f610e9777421f3c0dff930eec8b  gcc/testsuite/gcc.target/s390/pr93533.c
  f4792ece0a0aff8add8968cae67374ad  gcc/testsuite/gcc.target/s390/pr93908.c
+ 53835a03139e2bcd11999485760c0936  gcc/testsuite/gcc.target/s390/pr96127.c
  f1116dd01874e965a113345275e6310a  gcc/testsuite/gcc.target/s390/pr96456.c
+ 26a9015200103b2f0617d5672b91a902  gcc/testsuite/gcc.target/s390/pr97497.c
+ 45d0019f5b3d0e18a69edbc1595f0798  gcc/testsuite/gcc.target/s390/pr99663.c
  f9de3c4e9d9e8c3a707e1f51e48901b6  gcc/testsuite/gcc.target/s390/return-addr1.c
  5368e8759352b798ae1db6bc79919aa2  gcc/testsuite/gcc.target/s390/return-addr2.c
  c638a86bd5bf24acab1490492cbfb557  gcc/testsuite/gcc.target/s390/risbg-ll-1.c
  532ff931ad8bf62f60b08b1f9261827a  gcc/testsuite/gcc.target/s390/risbg-ll-2.c
  5b27542f6b0ae5c496ab1d16ec947c86  gcc/testsuite/gcc.target/s390/risbg-ll-3.c
  6c330cfc80a0f60d042947448413d011  gcc/testsuite/gcc.target/s390/rotate-truncation-mask.c
! b54de45289464bdfb05ccc24f76d8156  gcc/testsuite/gcc.target/s390/s390.exp
  970ac972bfd816dae5f8b5705abd8ab6  gcc/testsuite/gcc.target/s390/section-anchors.c
  2e57c7c23cac49a65eb61077317a2f1b  gcc/testsuite/gcc.target/s390/section-anchors2.c
  78c4d933475e58d55d22ab5b46b27884  gcc/testsuite/gcc.target/s390/section-anchors3.c
  cf53aab8a3ab2532dd55b65c25e2cda5  gcc/testsuite/gcc.target/s390/sigfpe-eh.c
+ f7b099f000b8bc666ec6322dfb1ecd5f  gcc/testsuite/gcc.target/s390/stack-clash-1.c
+ bc3d746388a64b8efc8d54c61733e6ad  gcc/testsuite/gcc.target/s390/stack-clash-2.c
+ 2fa5c1396a5010a1cc712e1a8a2aa834  gcc/testsuite/gcc.target/s390/stack-clash-3.c
+ 9aaf7372b57bb00dcc00776ce67cbfff  gcc/testsuite/gcc.target/s390/stack-clash-4.c
+ 416604f1f6966a9841843e4274cc86c1  gcc/testsuite/gcc.target/s390/stack-clash-5.c
  3a9ba61f8844739d1b5989c7c7e2b6c1  gcc/testsuite/gcc.target/s390/stackcheck1.c
  6194a2f1ab73b5d2d770793e72434897  gcc/testsuite/gcc.target/s390/target-attribute/pr82012.c
+ a7f1a331d327049c14923db6d8cbc90e  gcc/testsuite/gcc.target/s390/target-attribute/pr99313.c
  4a0a569cb86f0820127939aa90fb2469  gcc/testsuite/gcc.target/s390/target-attribute/tattr-1.c
  3eadbba9f114de154af023b82b998dba  gcc/testsuite/gcc.target/s390/target-attribute/tattr-10.c
  df32ee2c85133188b09e051e4034671f  gcc/testsuite/gcc.target/s390/target-attribute/tattr-11.c
*************** daf32d359b4f5080aef58859b29870b9  gcc/te
*** 64225,64231 ****
--- 68386,68465 ----
  cd87621c97dea4b44990c53afb0e84f0  gcc/testsuite/gcc.target/s390/vector/fp-signedint-convert-1.c
  7555086a7e981f40ab0a053876683cc4  gcc/testsuite/gcc.target/s390/vector/fp-unsignedint-convert-1.c
  8a6c46e492362a7ae789676034c82a23  gcc/testsuite/gcc.target/s390/vector/int128-1.c
+ cfd1d2dc2bb2e6e67cead63e9e5b6e04  gcc/testsuite/gcc.target/s390/vector/long-double-asm-abi.c
+ 7b57f62cb279490843705e46351b77dd  gcc/testsuite/gcc.target/s390/vector/long-double-asm-commutative.c
+ d9717b93ea1bc6140ba0284c50adb76b  gcc/testsuite/gcc.target/s390/vector/long-double-asm-earlyclobber.c
+ e3dbf48af3006ce478179091e800da73  gcc/testsuite/gcc.target/s390/vector/long-double-asm-fprvrmem.c
+ 5fe6c8414b0d419f8a7429ef081f5595  gcc/testsuite/gcc.target/s390/vector/long-double-asm-in-out.c
+ 451e24d186ef7f61a93d4f8e358b11e7  gcc/testsuite/gcc.target/s390/vector/long-double-asm-inout.c
+ 70548c28559bcf04b665c30fb5c4076a  gcc/testsuite/gcc.target/s390/vector/long-double-asm-matching.c
+ 6c88eb31cb87ced4d8dd76567e195b37  gcc/testsuite/gcc.target/s390/vector/long-double-asm-regmem.c
+ 18d6622b60453157c50ba6f377123586  gcc/testsuite/gcc.target/s390/vector/long-double-callee-abi-scan.c
+ 68e18ba0e2cb7c32bc1ddcbc5d6ed280  gcc/testsuite/gcc.target/s390/vector/long-double-caller-abi-run.c
+ e37be41b4abd0bdc8d76f78600ee4fd3  gcc/testsuite/gcc.target/s390/vector/long-double-caller-abi-scan.c
+ d65011b08f023ada3d94b150522342b3  gcc/testsuite/gcc.target/s390/vector/long-double-copysign.c
+ 07b55503925e8ef660e38aecf0642af2  gcc/testsuite/gcc.target/s390/vector/long-double-fprx2-constant.c
+ 576eec25aafb401c852f2b0a2246627d  gcc/testsuite/gcc.target/s390/vector/long-double-from-decimal128.c
+ 8c149d57464cf0b80dbca005b386f5e7  gcc/testsuite/gcc.target/s390/vector/long-double-from-decimal32.c
+ 8589734812b829190c88a5dbfa50168e  gcc/testsuite/gcc.target/s390/vector/long-double-from-decimal64.c
+ 28117e29e75d26fa8139d1845b97e95e  gcc/testsuite/gcc.target/s390/vector/long-double-from-double.c
+ 98c89a2ebc49a91a69b59bdae89f2846  gcc/testsuite/gcc.target/s390/vector/long-double-from-float.c
+ 8399671c2e1ab9f9e10cfada9c241aea  gcc/testsuite/gcc.target/s390/vector/long-double-from-i16.c
+ e60d3496692ec0aa4be273084c156d3c  gcc/testsuite/gcc.target/s390/vector/long-double-from-i32.c
+ a29c682a1007ee62b8e78a89178b337e  gcc/testsuite/gcc.target/s390/vector/long-double-from-i64.c
+ 1093b1cb67ae31111ca3bf270be909a9  gcc/testsuite/gcc.target/s390/vector/long-double-from-i8.c
+ 6d92d8bc3b193f6cbdb7b80528b4bd1b  gcc/testsuite/gcc.target/s390/vector/long-double-from-u16.c
+ 27b7379769c5eb79ef19f3a3cc747d2c  gcc/testsuite/gcc.target/s390/vector/long-double-from-u32.c
+ 6784a12eff4c88feabeb48dd3685adb0  gcc/testsuite/gcc.target/s390/vector/long-double-from-u64.c
+ 81d863c397dfd4659f7cf95ad8662446  gcc/testsuite/gcc.target/s390/vector/long-double-from-u8.c
+ 7b3fd725d01c00abdcd4c8011e4a17d3  gcc/testsuite/gcc.target/s390/vector/long-double-to-decimal128.c
+ 9968d0fa167e7f75ddd3246324d2e375  gcc/testsuite/gcc.target/s390/vector/long-double-to-decimal32.c
+ b733266bc762e12e772007b6f0e551a7  gcc/testsuite/gcc.target/s390/vector/long-double-to-decimal64.c
+ a3bf933038b58e4d541e60748b47629b  gcc/testsuite/gcc.target/s390/vector/long-double-to-double.c
+ b1f6b9b6a5afaf7103d770ae87762260  gcc/testsuite/gcc.target/s390/vector/long-double-to-float.c
+ 7894fd15c9ad66ed3bb637ac9fb4499d  gcc/testsuite/gcc.target/s390/vector/long-double-to-i16.c
+ 125443693bd86803a7d78e258a91f334  gcc/testsuite/gcc.target/s390/vector/long-double-to-i32.c
+ e21d178b02e384164a81caf3ffee7b0b  gcc/testsuite/gcc.target/s390/vector/long-double-to-i64.c
+ 693a76edc110ca1f6149d64c15447588  gcc/testsuite/gcc.target/s390/vector/long-double-to-i8.c
+ 83521187ebf9ff9a612ae879e97d69c9  gcc/testsuite/gcc.target/s390/vector/long-double-to-u16.c
+ c2be2c1316a4a96cdd7687813bff0db1  gcc/testsuite/gcc.target/s390/vector/long-double-to-u32.c
+ 0755f80b8ecf6e52fea4cf09d305f51a  gcc/testsuite/gcc.target/s390/vector/long-double-to-u64.c
+ 80f66a1b67c5efefaf91eef9e4cbbb0c  gcc/testsuite/gcc.target/s390/vector/long-double-to-u8.c
+ dfd72cc556aed036482efce1a2810dd1  gcc/testsuite/gcc.target/s390/vector/long-double-vec-duplicate.c
+ 4299fe2584cb6341af1aaed87017028f  gcc/testsuite/gcc.target/s390/vector/long-double-volatile-from-i64.c
+ 76a8aef08aec1f7ccbaed24acdf801e6  gcc/testsuite/gcc.target/s390/vector/long-double-vx-macro-off-on.c
+ 5e80286b464eabff0ae18a94cff23014  gcc/testsuite/gcc.target/s390/vector/long-double-vx-macro-on-off.c
+ 1994fe4f2db11646ac083da1f43f3408  gcc/testsuite/gcc.target/s390/vector/long-double-wf.h
+ 968f375a214ad65978920aed4fa79ef0  gcc/testsuite/gcc.target/s390/vector/long-double-wfaxb.c
+ 0d5d550de520df91685b6f37ad8335a7  gcc/testsuite/gcc.target/s390/vector/long-double-wfcxb-0001.c
+ 4a2476a09140dd11dc63f18ac986f8b5  gcc/testsuite/gcc.target/s390/vector/long-double-wfcxb-0111.c
+ 0ab911e38660fa92ff74f6f8dfb5dd9f  gcc/testsuite/gcc.target/s390/vector/long-double-wfcxb-1011.c
+ 66e07e31e6104e03f34e782db08c42e9  gcc/testsuite/gcc.target/s390/vector/long-double-wfcxb-1101.c
+ 7cadf08ced9fcb2e8c9d582713f37be6  gcc/testsuite/gcc.target/s390/vector/long-double-wfdxb.c
+ 77b8df4f0dbeef38445814fea2aa48e2  gcc/testsuite/gcc.target/s390/vector/long-double-wfixb.c
+ 66a896e7b247087b79482018a6f5b327  gcc/testsuite/gcc.target/s390/vector/long-double-wfkxb-0111.c
+ 2fb9a0d6aa000aa82b174801a7933f7d  gcc/testsuite/gcc.target/s390/vector/long-double-wfkxb-1011.c
+ f810f03c44b27c7693aa851851c6d222  gcc/testsuite/gcc.target/s390/vector/long-double-wfkxb-1101.c
+ b0f27265917800d4f9af1dc3c2e6a616  gcc/testsuite/gcc.target/s390/vector/long-double-wflcxb.c
+ 8e872f7089811e0277d49581501cf69d  gcc/testsuite/gcc.target/s390/vector/long-double-wflpxb.c
+ a7d51365d9941edd1628d75531e03d68  gcc/testsuite/gcc.target/s390/vector/long-double-wfmaxb-2.c
+ 2d741b1a1889a54d22984611e651a0f3  gcc/testsuite/gcc.target/s390/vector/long-double-wfmaxb-3.c
+ b64f10070cec53562608ce4752af3006  gcc/testsuite/gcc.target/s390/vector/long-double-wfmaxb-disabled.c
+ 9d583311952d3bae242e14deb9a93c28  gcc/testsuite/gcc.target/s390/vector/long-double-wfmaxb.c
+ 36729f84dd716c3371e03da210cbab06  gcc/testsuite/gcc.target/s390/vector/long-double-wfmsxb-disabled.c
+ ec2f30a03c15e83cfdbf8daec2ffbabe  gcc/testsuite/gcc.target/s390/vector/long-double-wfmsxb.c
+ 7e029cc104d1aee6c5d227508e1639cc  gcc/testsuite/gcc.target/s390/vector/long-double-wfmxb.c
+ 8d206734435c43130f4f4fa9899571d3  gcc/testsuite/gcc.target/s390/vector/long-double-wfnmaxb-disabled.c
+ 4b2a1dbf093361115300c6a71a7d975e  gcc/testsuite/gcc.target/s390/vector/long-double-wfnmaxb.c
+ d2fd14017e00d1f811d5387a32f38a98  gcc/testsuite/gcc.target/s390/vector/long-double-wfnmsxb-disabled.c
+ 565087bdec065d89eb490166d8abe124  gcc/testsuite/gcc.target/s390/vector/long-double-wfnmsxb.c
+ 383516360d57d42838f696c918421c26  gcc/testsuite/gcc.target/s390/vector/long-double-wfsqxb.c
+ 033cd60cfcc57876d9fce9aeaddc7bd9  gcc/testsuite/gcc.target/s390/vector/long-double-wfsxb-1.c
+ 4d61dcf9d7172719d7f77c7dc59e50ce  gcc/testsuite/gcc.target/s390/vector/long-double-wfsxb.c
+ 3ccf7ba1964b2bb29e8b687b6b638ceb  gcc/testsuite/gcc.target/s390/vector/long-double-wftcixb-1.c
+ 87e5127945063988138f68369e07418f  gcc/testsuite/gcc.target/s390/vector/long-double-wftcixb.c
  c9919c66d15a72dcfc7be8b1d30e4de1  gcc/testsuite/gcc.target/s390/vector/pr92950.c
+ f37bb3697d3b5ebfcad463b8e97a87bb  gcc/testsuite/gcc.target/s390/vector/pr96128.c
  f8ddf98d23fed8fdb81fc0b6b8a34fa4  gcc/testsuite/gcc.target/s390/vector/stpcpy-1.c
  c6799efe253acc955e2b9dcf44075d99  gcc/testsuite/gcc.target/s390/vector/vcond-shift.c
  8fa9b68cf0196b4198ce00a304191744  gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c
*************** db4e2b1f6b0441e2f2f64b6e141245cd  gcc/te
*** 64270,64286 ****
  d9c7cdb9278996c3e1dfb12b0fea17bd  gcc/testsuite/gcc.target/s390/vxe/popcount-1.c
  9fac5c4be550f2336dbb8ee22a9db221  gcc/testsuite/gcc.target/s390/vxe/vllezlf-1.c
  dc95f2902df894907c8cd4f00960f509  gcc/testsuite/gcc.target/s390/warn-dynamicstack-1.c
  7c087406872c6516a684c368993dcfea  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-eq.c
  8b4739c7e6faa30a8e2da3644af7e13a  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-ge.c
  dcc5ed5b3edf72f429ca266357c415da  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-gt.c
  02d986ab48994194ddc04258f4564aec  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-le.c
  cff015e0826212242aca87d52202da4b  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-lt.c
  23de00604ff742b6dc36beb2ae1e17de  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-ordered.c
! b29f4b13050c407111cab4f2806727cc  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-uneq.c
  bf463ecf5d2c2f224b5d2b86f9a93497  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-unordered.c
  b8420772bf28568b3da111bdba2a4f48  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-eq-z13-finite.c
  5bbb01fa22ec78e47839a2ad680a77f7  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-eq-z13.c
! 3e1b173b49f2e358e7d9f8424eedc911  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-eq.c
  7fc4f6a1e3be890cf53a0b021c848228  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-ge-z13-finite.c
  42cf60f684f6ea0a28f435b783b0aba8  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-ge-z13.c
  e92f463f13af77ed117cce7d01e42120  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-ge.c
--- 68504,68521 ----
  d9c7cdb9278996c3e1dfb12b0fea17bd  gcc/testsuite/gcc.target/s390/vxe/popcount-1.c
  9fac5c4be550f2336dbb8ee22a9db221  gcc/testsuite/gcc.target/s390/vxe/vllezlf-1.c
  dc95f2902df894907c8cd4f00960f509  gcc/testsuite/gcc.target/s390/warn-dynamicstack-1.c
+ 2bdca9d8b8f8e9f0aa4cc4029ce548d1  gcc/testsuite/gcc.target/s390/zero-scratch-regs-1.c
  7c087406872c6516a684c368993dcfea  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-eq.c
  8b4739c7e6faa30a8e2da3644af7e13a  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-ge.c
  dcc5ed5b3edf72f429ca266357c415da  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-gt.c
  02d986ab48994194ddc04258f4564aec  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-le.c
  cff015e0826212242aca87d52202da4b  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-lt.c
  23de00604ff742b6dc36beb2ae1e17de  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-ordered.c
! a5213d6f9cfffef96e73a61bf46a6a42  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-uneq.c
  bf463ecf5d2c2f224b5d2b86f9a93497  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-unordered.c
  b8420772bf28568b3da111bdba2a4f48  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-eq-z13-finite.c
  5bbb01fa22ec78e47839a2ad680a77f7  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-eq-z13.c
! c0c46d14226c058b888766e3cd3ff439  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-eq.c
  7fc4f6a1e3be890cf53a0b021c848228  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-ge-z13-finite.c
  42cf60f684f6ea0a28f435b783b0aba8  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-ge-z13.c
  e92f463f13af77ed117cce7d01e42120  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-ge.c
*************** dfdee22bbb3d3831391e4ca7b47d8e38  gcc/te
*** 64306,64314 ****
  889237fd9392e06b63cfd4e707eb69f6  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-le.c
  28ea97c82fd03e3474129f6b86a83832  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-lt.c
  f902cd7f9c25180b19317cc4af17108d  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-ordered.c
! 14f940663a0179c18c34399aa0bad9cd  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-uneq.c
  31fec9af8c96f88d045d2b2a32617a08  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-unordered.c
! 0edbc35e8a1aa13cebadb4aa2730a586  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-eq.c
  69b3c3664eb5ceccdfb73e846e55eb99  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-ge.c
  92a75f2ec1fa3a4cdee2c400db21e2f1  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-gt.c
  b7d0c4fabbe822201ba834f5ab319e26  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-le.c
--- 68541,68549 ----
  889237fd9392e06b63cfd4e707eb69f6  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-le.c
  28ea97c82fd03e3474129f6b86a83832  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-lt.c
  f902cd7f9c25180b19317cc4af17108d  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-ordered.c
! 7af5706ff57eb5579f79d27ad98fcb6e  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-uneq.c
  31fec9af8c96f88d045d2b2a32617a08  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-unordered.c
! 63f178895412f3d494e5444d38221203  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-eq.c
  69b3c3664eb5ceccdfb73e846e55eb99  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-ge.c
  92a75f2ec1fa3a4cdee2c400db21e2f1  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-gt.c
  b7d0c4fabbe822201ba834f5ab319e26  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-le.c
*************** c388e8e709c00e2cb14b83a7bcb1db96  gcc/te
*** 64325,64330 ****
--- 68560,68566 ----
  9dbb4e07981789355739a715866136b9  gcc/testsuite/gcc.target/s390/zvector/get-element-bswap-2.c
  35e87e60957f9b00691107426abfa992  gcc/testsuite/gcc.target/s390/zvector/get-element-bswap-3.c
  4abdf0afcb959d37baa8b81d5308c265  gcc/testsuite/gcc.target/s390/zvector/get-element-bswap-4.c
+ 01d0b0ef1ade6729132baca751870f00  gcc/testsuite/gcc.target/s390/zvector/imm-range-error-1.c
  7d0eb00954092ab19d710323c872dd2a  gcc/testsuite/gcc.target/s390/zvector/pr79893.c
  8bc7e55288af53eddbd5437d08f5f9a1  gcc/testsuite/gcc.target/s390/zvector/pr82317.c
  c5f2f4df3f7c11977663ad182d69c2a7  gcc/testsuite/gcc.target/s390/zvector/pr82322.c
*************** a7f2bd9fee8c03add8265ce21e47cb8f  gcc/te
*** 64349,64354 ****
--- 68585,68592 ----
  f0adb63cec7e7cc8928e697e9eb9fc6c  gcc/testsuite/gcc.target/s390/zvector/vec-genmask-1.c
  9623479451ea4dfc950b385aedacab2e  gcc/testsuite/gcc.target/s390/zvector/vec-lcbb-1.c
  f4cb204998e87c077c80c605602192e6  gcc/testsuite/gcc.target/s390/zvector/vec-load_bndry-1.c
+ a750da63777ec07e0c7f4757360530e7  gcc/testsuite/gcc.target/s390/zvector/vec-nnpa-fp16-convert.c
+ 70d4f044574c07888ead605011290e1c  gcc/testsuite/gcc.target/s390/zvector/vec-nnpa-fp32-convert-1.c
  e2f2ea830e74b4c8c94ca5bab8f72248  gcc/testsuite/gcc.target/s390/zvector/vec-overloading-1.c
  cf17f23d62e2e5c79ef622e98e08a8f2  gcc/testsuite/gcc.target/s390/zvector/vec-overloading-2.c
  3301b86cb9834aa02c533b9ea8925330  gcc/testsuite/gcc.target/s390/zvector/vec-overloading-3.c
*************** bf9a16bf1a11dc3b1eaf16828c088c55  gcc/te
*** 64375,64381 ****
--- 68613,68625 ----
  fca18383b3db4c77fba6885b30964e40  gcc/testsuite/gcc.target/s390/zvector/vec-splat-2.c
  f9fc274321010fadf7fa7d7821f483f8  gcc/testsuite/gcc.target/s390/zvector/vec-test-mask-1.c
  25a6c634a4630ac00c6db571f0175483  gcc/testsuite/gcc.target/s390/zvector/vec-unsigned-compile.c
+ b9c6bcee82fb4ed0a2118354fedcd0c6  gcc/testsuite/gcc.target/s390/zvector/vec_convert_from_fp16.c
+ ebd35d756a4e23707b277693c56c4a19  gcc/testsuite/gcc.target/s390/zvector/vec_convert_to_fp16.c
+ 2d31aa34eca68bbda85823c8736053af  gcc/testsuite/gcc.target/s390/zvector/vec_extend_to_fp32_hi.c
+ f1c2e8dded3f10ca36b5f0c5430e9653  gcc/testsuite/gcc.target/s390/zvector/vec_extend_to_fp32_lo.c
  2d9e9f903e81aed0180760d894c8745d  gcc/testsuite/gcc.target/s390/zvector/vec_load_len_r.c
+ 69eb84e54221a1d1fc9845617f6a3dec  gcc/testsuite/gcc.target/s390/zvector/vec_msum_u128-1.c
+ 389b010c6f698ce8502e96a6651816cd  gcc/testsuite/gcc.target/s390/zvector/vec_round_from_fp32.c
  102cee60e67c5b5fab8868fd4d4ac10e  gcc/testsuite/gcc.target/s390/zvector/vec_sel-1.c
  01f95199a25e26b73f9c541731732079  gcc/testsuite/gcc.target/s390/zvector/vec_store_len_r.c
  c9c377c12e8e370ccdc50badddb742a9  gcc/testsuite/gcc.target/s390/zvector/xl-xst-align-1.c
*************** db7a02bef0ea1d74a99297c9ee53c525  gcc/te
*** 64556,64562 ****
  b5f624677b85b090003118209ef93244  gcc/testsuite/gcc.target/sh/rte-delay-slot.c
  dadf2783f39a6e7573222cafcc2dee03  gcc/testsuite/gcc.target/sh/sh-relax-vxworks.c
  e21f6ad0f71c5acbd58d0b5dc9016512  gcc/testsuite/gcc.target/sh/sh-relax.c
! 52920602d101e157bb33db1538a5e3b1  gcc/testsuite/gcc.target/sh/sh.exp
  76c4b37de6ed467c955dc2c4e605bd74  gcc/testsuite/gcc.target/sh/sh2a-band.c
  6ca867fd045b678140e16f1d2034e672  gcc/testsuite/gcc.target/sh/sh2a-bclr.c
  65b6c86dd5734b5e9047d04326b96065  gcc/testsuite/gcc.target/sh/sh2a-bclrmem.c
--- 68800,68806 ----
  b5f624677b85b090003118209ef93244  gcc/testsuite/gcc.target/sh/rte-delay-slot.c
  dadf2783f39a6e7573222cafcc2dee03  gcc/testsuite/gcc.target/sh/sh-relax-vxworks.c
  e21f6ad0f71c5acbd58d0b5dc9016512  gcc/testsuite/gcc.target/sh/sh-relax.c
! b68f12f4853f779174ee478411742aea  gcc/testsuite/gcc.target/sh/sh.exp
  76c4b37de6ed467c955dc2c4e605bd74  gcc/testsuite/gcc.target/sh/sh2a-band.c
  6ca867fd045b678140e16f1d2034e672  gcc/testsuite/gcc.target/sh/sh2a-bclr.c
  65b6c86dd5734b5e9047d04326b96065  gcc/testsuite/gcc.target/sh/sh2a-bclrmem.c
*************** a2644837d5da1aa36c1bcfeab14bd34b  gcc/te
*** 64595,64601 ****
  b238f0c893c816effc7e00714687e793  gcc/testsuite/gcc.target/sh/torture/pr70416.c
  f2da248599c9251df57c4afab66c5b3d  gcc/testsuite/gcc.target/sh/torture/pragma-isr.c
  e59de62c79e4620b848baee27d159b9c  gcc/testsuite/gcc.target/sh/torture/pragma-isr2.c
! e3361da48912235b9a38bb4d4595b3b9  gcc/testsuite/gcc.target/sh/torture/sh-torture.exp
  7fafc38036a01faa4f72f34d7eaaad89  gcc/testsuite/gcc.target/sh/torture/strncmp.c
  d8726234ff72b0fa25ab40cc3fe6d24b  gcc/testsuite/gcc.target/sparc/20001013-1.c
  d0d646cfe216eb6e3c43fb56cb548ea0  gcc/testsuite/gcc.target/sparc/20001101-1.c
--- 68839,68845 ----
  b238f0c893c816effc7e00714687e793  gcc/testsuite/gcc.target/sh/torture/pr70416.c
  f2da248599c9251df57c4afab66c5b3d  gcc/testsuite/gcc.target/sh/torture/pragma-isr.c
  e59de62c79e4620b848baee27d159b9c  gcc/testsuite/gcc.target/sh/torture/pragma-isr2.c
! 7f4f72db21b5ea151133ea8a0f0dde8c  gcc/testsuite/gcc.target/sh/torture/sh-torture.exp
  7fafc38036a01faa4f72f34d7eaaad89  gcc/testsuite/gcc.target/sh/torture/strncmp.c
  d8726234ff72b0fa25ab40cc3fe6d24b  gcc/testsuite/gcc.target/sparc/20001013-1.c
  d0d646cfe216eb6e3c43fb56cb548ea0  gcc/testsuite/gcc.target/sparc/20001101-1.c
*************** eb9fea9eb3ccdd5fb4d85ac011c10dc5  gcc/te
*** 64717,64723 ****
  111c6ff31ffc23f4b402354941b88338  gcc/testsuite/gcc.target/sparc/sparc-ret-2.c
  eab3dd9c7afd97e9615ef7573877aeeb  gcc/testsuite/gcc.target/sparc/sparc-ret-3.c
  1943f3e1f1253e644f6fe445637c2dec  gcc/testsuite/gcc.target/sparc/sparc-trap-1.c
! b076f6ffd4517cbb618f017b4bd133a3  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
  29c9104d23f7983b691da600e79c9cf0  gcc/testsuite/gcc.target/sparc/tls-ld-int16.c
--- 68961,68967 ----
  111c6ff31ffc23f4b402354941b88338  gcc/testsuite/gcc.target/sparc/sparc-ret-2.c
  eab3dd9c7afd97e9615ef7573877aeeb  gcc/testsuite/gcc.target/sparc/sparc-ret-3.c
  1943f3e1f1253e644f6fe445637c2dec  gcc/testsuite/gcc.target/sparc/sparc-trap-1.c
! f2785a361dfbcef8987753e934c998fa  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
  29c9104d23f7983b691da600e79c9cf0  gcc/testsuite/gcc.target/sparc/tls-ld-int16.c
*************** c6e8cea536062af6f23168b438e096e3  gcc/te
*** 64763,64769 ****
  cb59fa93f6ec7ffdc7c45b9ffe016270  gcc/testsuite/gcc.target/tic6x/bswapl.c
  880ba4c7bbafa50a3cc6634a50dc02b5  gcc/testsuite/gcc.target/tic6x/builtin-math-7.c
  6189f555f502d05c8cf8f4c22546bdee  gcc/testsuite/gcc.target/tic6x/builtins/arith24.c
! 66b2d64dd280508720e66354988bd649  gcc/testsuite/gcc.target/tic6x/builtins/c6x-builtins.exp
  d44d40be94d3b2c409ccde008c52fd47  gcc/testsuite/gcc.target/tic6x/builtins/extclr.c
  199fddda4489c9408a194900b3af00cc  gcc/testsuite/gcc.target/tic6x/builtins/sarith1.c
  2a93c542861f1f7e0f2350f76094d837  gcc/testsuite/gcc.target/tic6x/builtins/smpy.c
--- 69007,69013 ----
  cb59fa93f6ec7ffdc7c45b9ffe016270  gcc/testsuite/gcc.target/tic6x/bswapl.c
  880ba4c7bbafa50a3cc6634a50dc02b5  gcc/testsuite/gcc.target/tic6x/builtin-math-7.c
  6189f555f502d05c8cf8f4c22546bdee  gcc/testsuite/gcc.target/tic6x/builtins/arith24.c
! f913d948c44f678774ad2200763b3e4e  gcc/testsuite/gcc.target/tic6x/builtins/c6x-builtins.exp
  d44d40be94d3b2c409ccde008c52fd47  gcc/testsuite/gcc.target/tic6x/builtins/extclr.c
  199fddda4489c9408a194900b3af00cc  gcc/testsuite/gcc.target/tic6x/builtins/sarith1.c
  2a93c542861f1f7e0f2350f76094d837  gcc/testsuite/gcc.target/tic6x/builtins/smpy.c
*************** f914e8e604fad0a96e99fb396ea883ad  gcc/te
*** 64779,64789 ****
  baa04394e3ff6b7cba6819b89fb4e822  gcc/testsuite/gcc.target/tic6x/longcalls.c
  f84309613c0a7282e626909d82e4ad41  gcc/testsuite/gcc.target/tic6x/rotdi16-scan.c
  9373dfa296a424e3396f81925fbd59bc  gcc/testsuite/gcc.target/tic6x/rotdi16.c
! 2d0c13412acfaab93cac19b9d66a1851  gcc/testsuite/gcc.target/tic6x/tic6x.exp
  670857f86bef69c76dcf7d725b01b954  gcc/testsuite/gcc.target/tic6x/weak-call.c
! bce543225b38f67d8c3d77856df8c002  gcc/testsuite/gcc.target/vax/bswapdi-1.c
! 303827dc5d4539997ff7a236a7a3f1bf  gcc/testsuite/gcc.target/vax/pr56875.c
! f643060cc54562eaaf2cc2c37ad41814  gcc/testsuite/gcc.target/vax/vax.exp
  80427f37ed9a9b5949e9525f9049ac5d  gcc/testsuite/gcc.target/visium/bit_shift.c
  8b6e9241f591f13a4ae6f06419b206b4  gcc/testsuite/gcc.target/visium/bit_test.c
  38dfc40b21838f07e0e01202beadfa5c  gcc/testsuite/gcc.target/visium/block_move.c
--- 69023,69249 ----
  baa04394e3ff6b7cba6819b89fb4e822  gcc/testsuite/gcc.target/tic6x/longcalls.c
  f84309613c0a7282e626909d82e4ad41  gcc/testsuite/gcc.target/tic6x/rotdi16-scan.c
  9373dfa296a424e3396f81925fbd59bc  gcc/testsuite/gcc.target/tic6x/rotdi16.c
! 375e9872a8a2035f5e20af30fae29e51  gcc/testsuite/gcc.target/tic6x/tic6x.exp
  670857f86bef69c76dcf7d725b01b954  gcc/testsuite/gcc.target/tic6x/weak-call.c
! f266f148c43d4b9593895e66efc3fa97  gcc/testsuite/gcc.target/vax/bbcci.c
! c64b50c02089a9c71ddbf71d118c42b8  gcc/testsuite/gcc.target/vax/bbssi.c
! 44ba73b98dea9a0454806dbe98941328  gcc/testsuite/gcc.target/vax/bswapdi-1.c
! 374c4d0123634899c90b006a84e217e2  gcc/testsuite/gcc.target/vax/cmpelim-eq-adddf.c
! 621047e6aff797d71349a51219a7064d  gcc/testsuite/gcc.target/vax/cmpelim-eq-addhi.c
! b84db84da0b3fa715440ade616b2ea1c  gcc/testsuite/gcc.target/vax/cmpelim-eq-addqi.c
! 24a91ff806fdda1bc998154fe6e6662e  gcc/testsuite/gcc.target/vax/cmpelim-eq-addsf.c
! 86a044fdd05fd45c12e6471614a279f2  gcc/testsuite/gcc.target/vax/cmpelim-eq-addsi.c
! fe13965d4a853fe9243abcdb178dec3d  gcc/testsuite/gcc.target/vax/cmpelim-eq-andhi.c
! e2254931bb45b6a78b50425b1ed65c4f  gcc/testsuite/gcc.target/vax/cmpelim-eq-andqi.c
! a779cf15bdbf22900456d78b3ce55ffc  gcc/testsuite/gcc.target/vax/cmpelim-eq-andsi.c
! bab24bf939a97bf0ca10e83743ce3500  gcc/testsuite/gcc.target/vax/cmpelim-eq-ashlsi.c
! b22941163fdaec65e8125867d1b2eea2  gcc/testsuite/gcc.target/vax/cmpelim-eq-ashrsi.c
! b055d49bd9f3adfde8b8c201db59000f  gcc/testsuite/gcc.target/vax/cmpelim-eq-divdf.c
! 5769bd3a822ad9e02f9f00a094e3373b  gcc/testsuite/gcc.target/vax/cmpelim-eq-divhi.c
! 818cfbfb161d6ef26ae96589fa4c298b  gcc/testsuite/gcc.target/vax/cmpelim-eq-divqi.c
! ab9724b02aa52f0b7fc3f6e74950a67d  gcc/testsuite/gcc.target/vax/cmpelim-eq-divsf.c
! e14d4c9f5ca5628c3057967498c6401c  gcc/testsuite/gcc.target/vax/cmpelim-eq-divsi.c
! ad8d3b2b760c89834c5f4b9d9571b392  gcc/testsuite/gcc.target/vax/cmpelim-eq-extendhisi.c
! 5eaca1bde035fecd038106afae542497  gcc/testsuite/gcc.target/vax/cmpelim-eq-extendqisi.c
! 62053083b280eaafd0b85c086cd0f0b3  gcc/testsuite/gcc.target/vax/cmpelim-eq-extvsi.c
! 04dedcba8a7dbae5f904421a48b669a9  gcc/testsuite/gcc.target/vax/cmpelim-eq-extzvsi.c
! 2e2c8ae17b2af3bc748d009fad1bdbe1  gcc/testsuite/gcc.target/vax/cmpelim-eq-fixdfhi.c
! 067abbf88eabbab368092e62ab9a22d9  gcc/testsuite/gcc.target/vax/cmpelim-eq-fixdfqi.c
! 80a41ca197b70c42f8eb339a7eeac884  gcc/testsuite/gcc.target/vax/cmpelim-eq-fixdfsi.c
! a9ca3bc0eb7d666f77d839b5d3da62ac  gcc/testsuite/gcc.target/vax/cmpelim-eq-fixsfhi.c
! 76315e0aae567af500a38fe34cf37bda  gcc/testsuite/gcc.target/vax/cmpelim-eq-fixsfqi.c
! 5728a33220b47925fda3df3677cef56d  gcc/testsuite/gcc.target/vax/cmpelim-eq-fixsfsi.c
! e1de5b11d052969a8e57d52f15d133c7  gcc/testsuite/gcc.target/vax/cmpelim-eq-floatsisf.c
! f203d6567599784d31ac13eda3217910  gcc/testsuite/gcc.target/vax/cmpelim-eq-insvsi.c
! 9c82377d20b759ce3b2c35df8ea048e0  gcc/testsuite/gcc.target/vax/cmpelim-eq-iorhi.c
! a2f6c2340bdf7ebac0bf514279890462  gcc/testsuite/gcc.target/vax/cmpelim-eq-iorqi.c
! 0cbb64c5fe3e540dfade9fdb0c8b7c73  gcc/testsuite/gcc.target/vax/cmpelim-eq-iorsi.c
! be2167c28d9cfbd46b3f5b5743fc0a81  gcc/testsuite/gcc.target/vax/cmpelim-eq-mova.c
! 428b47ea9be249f3f2a1e8f10343c204  gcc/testsuite/gcc.target/vax/cmpelim-eq-movdf.c
! 547685970d45e914b50e008af1a6ef01  gcc/testsuite/gcc.target/vax/cmpelim-eq-movhi.c
! f7f0f79cedd59d33169f35d6f41c3565  gcc/testsuite/gcc.target/vax/cmpelim-eq-movqi.c
! 583dbee75bef1165cf0970eef930335b  gcc/testsuite/gcc.target/vax/cmpelim-eq-movsf.c
! 706b57c699a18108dc17ec64745ab3c3  gcc/testsuite/gcc.target/vax/cmpelim-eq-movsi.c
! 9228990099674b5f3276fc6d45c43d89  gcc/testsuite/gcc.target/vax/cmpelim-eq-muldf.c
! a8cd82d9bd303ed5486a7ab8a2b4b103  gcc/testsuite/gcc.target/vax/cmpelim-eq-mulhi.c
! ffbfcc4eed4430e868dd002fe5709a2e  gcc/testsuite/gcc.target/vax/cmpelim-eq-mulqi.c
! 4d890a3f27c32ed91eec871049698b86  gcc/testsuite/gcc.target/vax/cmpelim-eq-mulsf.c
! 850ddc0a419d36a8eddf7298b083fc4f  gcc/testsuite/gcc.target/vax/cmpelim-eq-mulsi.c
! 61aee4ac10ad2fcd9545556f2c5beb47  gcc/testsuite/gcc.target/vax/cmpelim-eq-nothi.c
! 810564bd0de680a43558c86444a4b45e  gcc/testsuite/gcc.target/vax/cmpelim-eq-notqi.c
! 7424b9c859c3cd6770a85e5f542e6b5c  gcc/testsuite/gcc.target/vax/cmpelim-eq-notsi.c
! 0a6e6a57d542ab96926dd2f9886e943d  gcc/testsuite/gcc.target/vax/cmpelim-eq-rotlsi.c
! f0e6eb2c39f108e626b85d4adb36b884  gcc/testsuite/gcc.target/vax/cmpelim-eq-rotrsi.c
! 256b0211bec1a2130db4fdc8644bc796  gcc/testsuite/gcc.target/vax/cmpelim-eq-subdf.c
! a5b663c14fe64622f28388d8ff1b66d8  gcc/testsuite/gcc.target/vax/cmpelim-eq-subhi.c
! 772ad664339b883912947724b071979c  gcc/testsuite/gcc.target/vax/cmpelim-eq-subqi.c
! d30344a259961a8b66072cc72b2f8203  gcc/testsuite/gcc.target/vax/cmpelim-eq-subsf.c
! e0755576264fe74fd8e2e3b0be6dc6fd  gcc/testsuite/gcc.target/vax/cmpelim-eq-subsi.c
! f9ae4bb94a6cfdf97f387916813f5e00  gcc/testsuite/gcc.target/vax/cmpelim-eq-truncdfsf.c
! 8d1c2e2553e0d048a40ddb244f10cf4f  gcc/testsuite/gcc.target/vax/cmpelim-eq-trunchiqi.c
! 7105941d42d7e4939c63ad122af110d5  gcc/testsuite/gcc.target/vax/cmpelim-eq-truncsihi.c
! a6074b5b8ff4ba8e515787adbd15049c  gcc/testsuite/gcc.target/vax/cmpelim-eq-truncsiqi.c
! be702d3152dae21da7c3c14a09a1a8d5  gcc/testsuite/gcc.target/vax/cmpelim-eq-zextendhisi.c
! bb6fe0c4c9bcaddcdb17a761c20a1c7c  gcc/testsuite/gcc.target/vax/cmpelim-eq-zextendqihi.c
! 8c3c538bf44883a289134108afaf8934  gcc/testsuite/gcc.target/vax/cmpelim-eq-zextendqisi.c
! 031a10820193388bb260e6def3bd697c  gcc/testsuite/gcc.target/vax/cmpelim-le-adddf.c
! a79cab65927e029dce222cf552c329fa  gcc/testsuite/gcc.target/vax/cmpelim-le-addhi.c
! cd5fe98089559c47f6085bbdb26d889c  gcc/testsuite/gcc.target/vax/cmpelim-le-addqi.c
! 58076409e2802a6f714c5cfd76dba30a  gcc/testsuite/gcc.target/vax/cmpelim-le-addsf.c
! 3f4bab630dad8c33083fe72d3a6e2890  gcc/testsuite/gcc.target/vax/cmpelim-le-addsi.c
! 4630ac72665600227ebc294a6871b131  gcc/testsuite/gcc.target/vax/cmpelim-le-andhi.c
! 5ce503b9b279d7c474a32f8351cba68b  gcc/testsuite/gcc.target/vax/cmpelim-le-andqi.c
! 77237a7fd74ebcfd8c170020765ee57d  gcc/testsuite/gcc.target/vax/cmpelim-le-andsi.c
! a08beaa4c3061f1b5c184e62dee8529b  gcc/testsuite/gcc.target/vax/cmpelim-le-ashlsi.c
! a89556733b90bde734b08f9ae2be85d5  gcc/testsuite/gcc.target/vax/cmpelim-le-ashrsi.c
! 1c9217f9b4c0e913a61a0e71bce90de0  gcc/testsuite/gcc.target/vax/cmpelim-le-divdf.c
! 99966174522a1ec038078d38b626116e  gcc/testsuite/gcc.target/vax/cmpelim-le-divhi.c
! f5e98c378066230d8c0a116cf1a16e20  gcc/testsuite/gcc.target/vax/cmpelim-le-divqi.c
! 573d605b6c610cc88f59aafccfe9e40c  gcc/testsuite/gcc.target/vax/cmpelim-le-divsf.c
! e450f334d68f62295efdbc9987e70477  gcc/testsuite/gcc.target/vax/cmpelim-le-divsi.c
! 0140c9344c8deb40146d33c102355431  gcc/testsuite/gcc.target/vax/cmpelim-le-extendhisi.c
! 1b5dc2168dfcad8a51dadb6eeb472af0  gcc/testsuite/gcc.target/vax/cmpelim-le-extendqisi.c
! 36655d57dd74fc49ebc752f598de67be  gcc/testsuite/gcc.target/vax/cmpelim-le-extvsi.c
! 0b74ac2589fff61e0457d543a2fd1312  gcc/testsuite/gcc.target/vax/cmpelim-le-extzvsi.c
! 07a020c727ab18b33ae4c33f5e3eb1f1  gcc/testsuite/gcc.target/vax/cmpelim-le-fixdfhi.c
! ed35790437afc78704895b15c08c69b6  gcc/testsuite/gcc.target/vax/cmpelim-le-fixdfqi.c
! 2432ac677c90729f43c0f072e5e67338  gcc/testsuite/gcc.target/vax/cmpelim-le-fixdfsi.c
! b25c2ee1606989513a9bb04fc7850e76  gcc/testsuite/gcc.target/vax/cmpelim-le-fixsfhi.c
! 5210e391c13202069e41278b723a8dba  gcc/testsuite/gcc.target/vax/cmpelim-le-fixsfqi.c
! 156bbded9e9d8a38ebf0f56662570867  gcc/testsuite/gcc.target/vax/cmpelim-le-fixsfsi.c
! 80b8ae2e2276e19f42b318164a05ef1d  gcc/testsuite/gcc.target/vax/cmpelim-le-floatsisf.c
! 79aec87a17e8211f6a9aa24d727ce5d8  gcc/testsuite/gcc.target/vax/cmpelim-le-insvsi.c
! e41b99b435aaa94b48bd2be9c7b46a66  gcc/testsuite/gcc.target/vax/cmpelim-le-iorhi.c
! b937882f8b1b88a14bc1f99629ea7e83  gcc/testsuite/gcc.target/vax/cmpelim-le-iorqi.c
! 5ed992ff4dfb406f700266a95fe60b3d  gcc/testsuite/gcc.target/vax/cmpelim-le-iorsi.c
! b24890084b12f54f51974c98229630c2  gcc/testsuite/gcc.target/vax/cmpelim-le-movdf.c
! 720515936eb829d9024b3f5186a9766e  gcc/testsuite/gcc.target/vax/cmpelim-le-movhi.c
! 59b28c5f679937243524548cd760ccde  gcc/testsuite/gcc.target/vax/cmpelim-le-movqi.c
! 0f53a291eed12724a1901894231e363d  gcc/testsuite/gcc.target/vax/cmpelim-le-movsf.c
! 3c03c04ae2fb251f7c797013d06e4482  gcc/testsuite/gcc.target/vax/cmpelim-le-movsi.c
! cc2a905deaef44faa5bda6c1eae3790e  gcc/testsuite/gcc.target/vax/cmpelim-le-muldf.c
! 0331aeccbada7de8dcce31482bc3c59b  gcc/testsuite/gcc.target/vax/cmpelim-le-mulhi.c
! 06d788b34ebc7f3183141805646dd59f  gcc/testsuite/gcc.target/vax/cmpelim-le-mulqi.c
! 59a0cfdd4045c258e4b87b1ed47c47cc  gcc/testsuite/gcc.target/vax/cmpelim-le-mulsf.c
! cb844afb01e7e4e5027be5376a2afd8c  gcc/testsuite/gcc.target/vax/cmpelim-le-mulsi.c
! bdcb2b08d013b731f64625894063a843  gcc/testsuite/gcc.target/vax/cmpelim-le-nothi.c
! 96dc27d14a4cd1c449e93e8c0d4a991f  gcc/testsuite/gcc.target/vax/cmpelim-le-notqi.c
! aa4357c234fb9f5b7373ffdf14acb36c  gcc/testsuite/gcc.target/vax/cmpelim-le-notsi.c
! 8663ccff4880d42148704f85d4ddfb9d  gcc/testsuite/gcc.target/vax/cmpelim-le-rotlsi.c
! ef90a2c4b1a6ed9cf4e3b241ce8b6e12  gcc/testsuite/gcc.target/vax/cmpelim-le-rotrsi.c
! 3671dcb8ba95eeef72cb513ecd5bfaf3  gcc/testsuite/gcc.target/vax/cmpelim-le-subdf.c
! 5cd894799e6daed8878a2593f9a94856  gcc/testsuite/gcc.target/vax/cmpelim-le-subhi.c
! 583067f6998ea057e6d5f0361485482c  gcc/testsuite/gcc.target/vax/cmpelim-le-subqi.c
! 2cd72e3afa36e681fdc80cde342ad730  gcc/testsuite/gcc.target/vax/cmpelim-le-subsf.c
! 7a9c4528e1043e98c1f52f688ca1a0ef  gcc/testsuite/gcc.target/vax/cmpelim-le-subsi.c
! fce5d6f2a1167ed1cd1e0f0eddfc7617  gcc/testsuite/gcc.target/vax/cmpelim-le-truncdfsf.c
! 266ba0aa1145c42324108716550cb833  gcc/testsuite/gcc.target/vax/cmpelim-le-xorhi.c
! 28137b1bb55f0d9d0eb307623a33fb0e  gcc/testsuite/gcc.target/vax/cmpelim-le-xorqi.c
! 68aa2650eca3f7edd11a75e4b74ccb64  gcc/testsuite/gcc.target/vax/cmpelim-le-xorsi.c
! 0c6babaca1e3b84f85177eb37ee10d9c  gcc/testsuite/gcc.target/vax/cmpelim-leu-subhi.c
! d450960ea54f3df6e90f4b562ea76283  gcc/testsuite/gcc.target/vax/cmpelim-leu-subqi.c
! a542a422299e1bc3ebf0590422f6b0a9  gcc/testsuite/gcc.target/vax/cmpelim-leu-subsi.c
! 19ba620a65213c533316d48162982301  gcc/testsuite/gcc.target/vax/cmpelim-lt-adddf.c
! 14d8911ddc61388b966a8900b76c8cc6  gcc/testsuite/gcc.target/vax/cmpelim-lt-addhi.c
! a6298673999e1d38a3a3cbdf8299e13c  gcc/testsuite/gcc.target/vax/cmpelim-lt-addqi.c
! 2614adfe25aaf804f3be9553202464b3  gcc/testsuite/gcc.target/vax/cmpelim-lt-addsf.c
! a4ea7094fa6949ba09772ddb1739b70d  gcc/testsuite/gcc.target/vax/cmpelim-lt-addsi.c
! 14b901383f43761929efdc9ef081418b  gcc/testsuite/gcc.target/vax/cmpelim-lt-andhi.c
! 53e5f0472332a41960a20d82e6c59549  gcc/testsuite/gcc.target/vax/cmpelim-lt-andqi.c
! 8f47b991b1d7e9790531627e8b796629  gcc/testsuite/gcc.target/vax/cmpelim-lt-andsi.c
! 80571546639a534f41519cd5b9d2256b  gcc/testsuite/gcc.target/vax/cmpelim-lt-ashlsi.c
! e8c22081231a7e457e5afd0b366a7296  gcc/testsuite/gcc.target/vax/cmpelim-lt-ashrsi.c
! eee5bb8feec3a90d59549e37117177a8  gcc/testsuite/gcc.target/vax/cmpelim-lt-divdf.c
! b04602c655918fa5455d61b15b455d0d  gcc/testsuite/gcc.target/vax/cmpelim-lt-divhi.c
! 7c9d9d0c4bb83af27a38ba9b686e8b51  gcc/testsuite/gcc.target/vax/cmpelim-lt-divqi.c
! 2773ae772ca9ecb755e406f856815664  gcc/testsuite/gcc.target/vax/cmpelim-lt-divsf.c
! 9d44199a698308484cd79ab764f3db46  gcc/testsuite/gcc.target/vax/cmpelim-lt-divsi.c
! 084297ec1b7626a201c93994d3a79b12  gcc/testsuite/gcc.target/vax/cmpelim-lt-extendhisi.c
! 31074587eeb4f9e310371490e9210b01  gcc/testsuite/gcc.target/vax/cmpelim-lt-extendqisi.c
! 32c9be5f377b366248bb601b197855a3  gcc/testsuite/gcc.target/vax/cmpelim-lt-extvsi.c
! 0b10f4a45c2ff0db10676d4dce00858c  gcc/testsuite/gcc.target/vax/cmpelim-lt-extzvsi.c
! dfa35572dc43447148f0211dffcbbabe  gcc/testsuite/gcc.target/vax/cmpelim-lt-fixdfhi.c
! 1c40c3b68f296b6dc416f7ad2ed5dd2a  gcc/testsuite/gcc.target/vax/cmpelim-lt-fixdfqi.c
! 9f526734edb343aa04ef4423abe937b8  gcc/testsuite/gcc.target/vax/cmpelim-lt-fixdfsi.c
! fddfeac4d52b9f04e98e5dbfc66434d7  gcc/testsuite/gcc.target/vax/cmpelim-lt-fixsfhi.c
! f5a9fdb4250c75ebf3cc506d01363d71  gcc/testsuite/gcc.target/vax/cmpelim-lt-fixsfqi.c
! e20c19af80d100583c8bfc83f77b63a7  gcc/testsuite/gcc.target/vax/cmpelim-lt-fixsfsi.c
! 25ee2b00bf3d8a7387710d86bbe391ff  gcc/testsuite/gcc.target/vax/cmpelim-lt-floatsisf.c
! 9c9921e0b9cf0253ccee141cd4145b5b  gcc/testsuite/gcc.target/vax/cmpelim-lt-insvsi.c
! 3f4aafc4e9b15a93269574d62d881bae  gcc/testsuite/gcc.target/vax/cmpelim-lt-iorhi.c
! 626c6a44f77a2bda2ff235eff523ebc4  gcc/testsuite/gcc.target/vax/cmpelim-lt-iorqi.c
! f82ac2f2a3ec3c04f92126a39cc321c0  gcc/testsuite/gcc.target/vax/cmpelim-lt-iorsi.c
! 946aa5cd8f79f834a0bf930db2038dbf  gcc/testsuite/gcc.target/vax/cmpelim-lt-movdf.c
! 167c778b3b52c7001836782acd95bcfd  gcc/testsuite/gcc.target/vax/cmpelim-lt-movhi.c
! c5924875e839ff190b07a03a904b3db5  gcc/testsuite/gcc.target/vax/cmpelim-lt-movqi.c
! 25ae75a1b35b284029adf2d202a724b5  gcc/testsuite/gcc.target/vax/cmpelim-lt-movsf.c
! 38fead8345221b6ed07076da2cd02a22  gcc/testsuite/gcc.target/vax/cmpelim-lt-movsi.c
! 37ac3ba4e530aa0863c12a0acb77616d  gcc/testsuite/gcc.target/vax/cmpelim-lt-muldf.c
! b3e0f3913130357132f443cabfcb1f26  gcc/testsuite/gcc.target/vax/cmpelim-lt-mulhi.c
! e12856c09528be9e0c7e253b4301cc9f  gcc/testsuite/gcc.target/vax/cmpelim-lt-mulqi.c
! d85afb7abdcc6fff9c30a8b04df15b31  gcc/testsuite/gcc.target/vax/cmpelim-lt-mulsf.c
! 4a93f22093a34ff704c9ce375a6368d0  gcc/testsuite/gcc.target/vax/cmpelim-lt-mulsi.c
! d6c5192634fc70707d5f4f403a96e3df  gcc/testsuite/gcc.target/vax/cmpelim-lt-nothi.c
! 27d3665bf77bb3c689f6f59ed8fc9c21  gcc/testsuite/gcc.target/vax/cmpelim-lt-notqi.c
! 6a219a7eb5537d33ba6cb44dc44a8924  gcc/testsuite/gcc.target/vax/cmpelim-lt-notsi.c
! bd7574f4af00fac6c805062245429600  gcc/testsuite/gcc.target/vax/cmpelim-lt-rotlsi.c
! 7aed4c8e39513cee242a9cc8c41753d4  gcc/testsuite/gcc.target/vax/cmpelim-lt-rotrsi.c
! 8e1ac3043fef4ec66fd613ca80e6679c  gcc/testsuite/gcc.target/vax/cmpelim-lt-subdf.c
! 7c3d9f55a8df75087afffcceb0c0707f  gcc/testsuite/gcc.target/vax/cmpelim-lt-subhi.c
! 450a809a74f4229b81717330c14178a9  gcc/testsuite/gcc.target/vax/cmpelim-lt-subqi.c
! 1dd3dbe082e50330d8d4439e4ae34c04  gcc/testsuite/gcc.target/vax/cmpelim-lt-subsf.c
! 67f8b6e327cec959b546eee2ad8fad65  gcc/testsuite/gcc.target/vax/cmpelim-lt-subsi.c
! 33f87c718f3fd8a6f54e54a2a552b8b8  gcc/testsuite/gcc.target/vax/cmpelim-lt-truncdfsf.c
! efbd45031a022dd4761ce7e9123d67af  gcc/testsuite/gcc.target/vax/cmpelim-lt-xorhi.c
! c7f5ea44eebe96f75d55442765de8dae  gcc/testsuite/gcc.target/vax/cmpelim-lt-xorqi.c
! 9beacb459bee57de434f17b279fbb38f  gcc/testsuite/gcc.target/vax/cmpelim-lt-xorsi.c
! f9f0822d45f5a2e3f0225900e9bf58b7  gcc/testsuite/gcc.target/vax/cmpelim-ltu-subhi.c
! 6e5a0817a03f8be999e5c34748abc341  gcc/testsuite/gcc.target/vax/cmpelim-ltu-subqi.c
! 684c6456e55cc5eb90a91b8ef0f92aef  gcc/testsuite/gcc.target/vax/cmpelim-ltu-subsi.c
! 497d29babcbf545eff61c99a8adc0ec1  gcc/testsuite/gcc.target/vax/cmpelim-xx-addsi.c
! b476181df1f0e4af0f2f64fe09f96c8d  gcc/testsuite/gcc.target/vax/cmpelim-xx-insvsi.c
! 012a97af6fb7897755bc8dad0c3f52dc  gcc/testsuite/gcc.target/vax/cmpelim-xxu-subsi.c
! 3ba5285f68b6fb005bae73d65929c9a5  gcc/testsuite/gcc.target/vax/compare-add-zero.c
! 4c80b36ec09a65af88d6f9508f021e9b  gcc/testsuite/gcc.target/vax/compare-mov-zero.c
! baa6aca7243ec8ec0e01ffd3ec0c35ca  gcc/testsuite/gcc.target/vax/cpymem.c
! a6344c9ab16049a886336412dc6c1f8d  gcc/testsuite/gcc.target/vax/ctzhi.c
! b5a3f8255b042ae94f81e0a19bbef5b2  gcc/testsuite/gcc.target/vax/ctzqi.c
! 9723273c364d95b63459b98061988bb8  gcc/testsuite/gcc.target/vax/ctzsi.c
! e41e944e9a83b36ce59765671dcb312c  gcc/testsuite/gcc.target/vax/ffshi.c
! 7456e24c3cd9ff62e1c471dfb41e4195  gcc/testsuite/gcc.target/vax/ffsqi.c
! 2d11c39bf2ec5f52e4367afbae805d3b  gcc/testsuite/gcc.target/vax/ffssi.c
! c4f10496bd44b42d77d34393a7ebfd8b  gcc/testsuite/gcc.target/vax/movmem.c
! 20b5d938ff1f88fde26c80e97f486d15  gcc/testsuite/gcc.target/vax/peephole2-eq-andhi.c
! 4d972151cb575eacf37bdb4448948fb4  gcc/testsuite/gcc.target/vax/peephole2-eq-andqi.c
! e5c403768cc33db241ccf7683a407d4c  gcc/testsuite/gcc.target/vax/peephole2-eq-andsi.c
! 3b67d4c582e450e269df75a1d6e58fb5  gcc/testsuite/gcc.target/vax/peephole2-eq-cmpvsi.c
! 2dcbcff38a3740190d99e40a0d78c3e9  gcc/testsuite/gcc.target/vax/peephole2-eq-cmpzvsi.c
! 3961e7b4e911abd0b9a3dd398d84ee99  gcc/testsuite/gcc.target/vax/peephole2-eq-ctzhi-0.c
! e675c0cc06d501a4324fb5fc5fa2de39  gcc/testsuite/gcc.target/vax/peephole2-eq-ctzhi-1.c
! ed49c93f3802ffc26fe69a821d27c0b8  gcc/testsuite/gcc.target/vax/peephole2-eq-ctzqi-0.c
! 943ae98513afb71f70ab6aac7e794a8c  gcc/testsuite/gcc.target/vax/peephole2-eq-ctzqi-1.c
! 44e9c46675e846f57876a866ea16c134  gcc/testsuite/gcc.target/vax/peephole2-eq-ctzsi-0.c
! 0b11c8e194defbed56004dfbab9b9f0e  gcc/testsuite/gcc.target/vax/peephole2-eq-ctzsi-1.c
! cdcc763f0bb0eb853988a18ea67c6d6a  gcc/testsuite/gcc.target/vax/peephole2-eq-ffshi.c
! 89ad57efd164ad6cfd35c41b8e1c1a77  gcc/testsuite/gcc.target/vax/peephole2-eq-ffsqi.c
! c2c1b1ea2ed344473639b175284e242e  gcc/testsuite/gcc.target/vax/peephole2-eq-ffssi.c
! a692e2ee084a1b277a3cbee75d9940fd  gcc/testsuite/gcc.target/vax/peephole2-le-andhi.c
! 185b122844a77b14611fb5f8be098bee  gcc/testsuite/gcc.target/vax/peephole2-le-andqi.c
! 40fef505770b04dc24edacb436c94710  gcc/testsuite/gcc.target/vax/peephole2-le-andsi.c
! 5b0ec5bf61479a94490200f9373b6dba  gcc/testsuite/gcc.target/vax/peephole2-le-cmpvsi.c
! ffc8399783005ab6cf923f45a8fb37eb  gcc/testsuite/gcc.target/vax/peephole2-le-cmpzvsi.c
! 655fe7a25cf2cd031785fcb938d592d3  gcc/testsuite/gcc.target/vax/peephole2-leu-cmpvsi.c
! fd8771451b9fb2b717bdafb5291d4ff9  gcc/testsuite/gcc.target/vax/peephole2-leu-cmpzvsi.c
! a692e2ee084a1b277a3cbee75d9940fd  gcc/testsuite/gcc.target/vax/peephole2-lt-andhi.c
! 4b6cc3c398d59e6cd2a2fc14ad842e0a  gcc/testsuite/gcc.target/vax/peephole2-lt-andqi.c
! 8620cfe12ed57638df21f3b19227c881  gcc/testsuite/gcc.target/vax/peephole2-lt-andsi.c
! 668d07257e2cd17728acce304ed46fc4  gcc/testsuite/gcc.target/vax/peephole2-lt-cmpvsi.c
! 49e31fae13fc61a5af29d3f980d296f8  gcc/testsuite/gcc.target/vax/peephole2-lt-cmpzvsi.c
! 81a4434cdd5a8933adba51f5f2f83638  gcc/testsuite/gcc.target/vax/peephole2-ltu-cmpvsi.c
! ce472e70039700885bcf173911ef24dc  gcc/testsuite/gcc.target/vax/peephole2-ltu-cmpzvsi.c
! 86b2c92ff217edc7b11b2d6f5cba77c6  gcc/testsuite/gcc.target/vax/pr56875.c
! 22629a1b386f420f06d6c23ff8e35b7f  gcc/testsuite/gcc.target/vax/push.c
! b0741fd1ebd58e68761c8a17540531d6  gcc/testsuite/gcc.target/vax/vax.exp
  80427f37ed9a9b5949e9525f9049ac5d  gcc/testsuite/gcc.target/visium/bit_shift.c
  8b6e9241f591f13a4ae6f06419b206b4  gcc/testsuite/gcc.target/visium/bit_test.c
  38dfc40b21838f07e0e01202beadfa5c  gcc/testsuite/gcc.target/visium/block_move.c
*************** da335bd5b7d24260be92152ec43c9c69  gcc/te
*** 64795,64807 ****
  22e4f821af1c93516061d0c9e939e1d1  gcc/testsuite/gcc.target/visium/overflow16.c
  ed48eae7631e0c3fec552abc3abf6370  gcc/testsuite/gcc.target/visium/overflow32.c
  9038dededd39b0c0f41798e290669394  gcc/testsuite/gcc.target/visium/overflow8.c
! 41f71d55f66ee7027f610918e5c4f355  gcc/testsuite/gcc.target/visium/visium.exp
! 40d05e893cf3428b9cbcfe131d148352  gcc/testsuite/gcc.target/x86_64/abi/README.gcc
! 307eb3b18c279a9bdaa5cc0cfe600fc4  gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp
  4599244d74ba4aabbd69240d86d2fe79  gcc/testsuite/gcc.target/x86_64/abi/args.h
  2a169afd0fa371ba877780d1e8074c08  gcc/testsuite/gcc.target/x86_64/abi/asm-support-darwin.s
  892eb2ee284fd96557fd507fa0642156  gcc/testsuite/gcc.target/x86_64/abi/asm-support.S
! 344e9a6f25a282dfdf24a7f81ec0c97c  gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp
  f559d61e72669fec3c7c3bb1345a001f  gcc/testsuite/gcc.target/x86_64/abi/avx/args.h
  6e43bc6b3d6feb70612d399a677d1c7d  gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support-darwin.s
  0df09e54902b0a238caad6de9dc92c5d  gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support.S
--- 69255,69267 ----
  22e4f821af1c93516061d0c9e939e1d1  gcc/testsuite/gcc.target/visium/overflow16.c
  ed48eae7631e0c3fec552abc3abf6370  gcc/testsuite/gcc.target/visium/overflow32.c
  9038dededd39b0c0f41798e290669394  gcc/testsuite/gcc.target/visium/overflow8.c
! d5b39965a2815d8cdcaf9e4867510a0c  gcc/testsuite/gcc.target/visium/visium.exp
! 01bb48a85849d2cb0f0e2170f3bb7220  gcc/testsuite/gcc.target/x86_64/abi/README.gcc
! 6f2569a915010fe1765ab3c82b2d6910  gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp
  4599244d74ba4aabbd69240d86d2fe79  gcc/testsuite/gcc.target/x86_64/abi/args.h
  2a169afd0fa371ba877780d1e8074c08  gcc/testsuite/gcc.target/x86_64/abi/asm-support-darwin.s
  892eb2ee284fd96557fd507fa0642156  gcc/testsuite/gcc.target/x86_64/abi/asm-support.S
! d9a3cf5cce632b5561f35999a595447f  gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp
  f559d61e72669fec3c7c3bb1345a001f  gcc/testsuite/gcc.target/x86_64/abi/avx/args.h
  6e43bc6b3d6feb70612d399a677d1c7d  gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support-darwin.s
  0df09e54902b0a238caad6de9dc92c5d  gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support.S
*************** b43e5e8d171dcdbec5cac42b0b9a298c  gcc/te
*** 64811,64817 ****
  ff732b27c9bb0c5b99ccccb31d12d3ea  gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_structs.c
  d02989c16f0d1cd0951fe435483c550e  gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_unions.c
  2712f2843274c5262e020aca5e18fc41  gcc/testsuite/gcc.target/x86_64/abi/avx/test_varargs-m256.c
! 3b12071cd6ef87fbca74eafe1f8d69ee  gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp
  2cf03d73572ce81dab43dcceeeacf5c4  gcc/testsuite/gcc.target/x86_64/abi/avx512f/args.h
  c79ac297933c3dae25e3f797420d1814  gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support-darwin.s
  018d5507f0c4c2e50d7895e924a53c1b  gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support.S
--- 69271,69277 ----
  ff732b27c9bb0c5b99ccccb31d12d3ea  gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_structs.c
  d02989c16f0d1cd0951fe435483c550e  gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_unions.c
  2712f2843274c5262e020aca5e18fc41  gcc/testsuite/gcc.target/x86_64/abi/avx/test_varargs-m256.c
! 9e27e7507adfbc177435248fa82da5ef  gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp
  2cf03d73572ce81dab43dcceeeacf5c4  gcc/testsuite/gcc.target/x86_64/abi/avx512f/args.h
  c79ac297933c3dae25e3f797420d1814  gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support-darwin.s
  018d5507f0c4c2e50d7895e924a53c1b  gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support.S
*************** c79ac297933c3dae25e3f797420d1814  gcc/te
*** 64821,64827 ****
  24464384d6d7542bbd2ae638f390e7a6  gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_structs.c
  fe0e9b140dbc68ca140fc7100c1ade24  gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_unions.c
  ea57c03627834ae6586c0f2b69bf32bc  gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_varargs-m512.c
! 76c4cad4f0ba493e5123ca8ffe12256f  gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp
  b52212e25b4fe43a1bda56b50d2cc914  gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.h
  bd08629b87a61bb1d8bfca958f60b18f  gcc/testsuite/gcc.target/x86_64/abi/callabi/func-1.c
  17951c08530e05273568b3b636fb8a4e  gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c
--- 69281,69287 ----
  24464384d6d7542bbd2ae638f390e7a6  gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_structs.c
  fe0e9b140dbc68ca140fc7100c1ade24  gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_unions.c
  ea57c03627834ae6586c0f2b69bf32bc  gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_varargs-m512.c
! 4343daef1e3bbdc379e5445b5cdc23fe  gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp
  b52212e25b4fe43a1bda56b50d2cc914  gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.h
  bd08629b87a61bb1d8bfca958f60b18f  gcc/testsuite/gcc.target/x86_64/abi/callabi/func-1.c
  17951c08530e05273568b3b636fb8a4e  gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c
*************** d02a2912e872fd8b7b39b69b74482091  gcc/te
*** 64842,64851 ****
  dfc167e3c82be6261ef045c50a409cf9  gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-6.c
  002286d968abb2e5012ebb83dd44784d  gcc/testsuite/gcc.target/x86_64/abi/defines.h
  ced3e7fc25757fe027f4eacc904e6881  gcc/testsuite/gcc.target/x86_64/abi/macros.h
! f17ac696f8f58a276faba89720233dea  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S
  cf207cd32f48bf81f1c2ea9397f53856  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/gen.cc
  b14bf90b9e86d7c81b95cad9c4d55dae  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c
! c10f46752d37f1ee37d4961caf6dbd60  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp
  df350cc8fc42fcbfb44edc088765d60a  gcc/testsuite/gcc.target/x86_64/abi/test_3_element_struct_and_unions.c
  54a02258e782aaa35101b4f6cddbe300  gcc/testsuite/gcc.target/x86_64/abi/test_basic_alignment.c
  21f9b335d755c74bdef8998aeac98585  gcc/testsuite/gcc.target/x86_64/abi/test_basic_array_size_and_align.c
--- 69302,69311 ----
  dfc167e3c82be6261ef045c50a409cf9  gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-6.c
  002286d968abb2e5012ebb83dd44784d  gcc/testsuite/gcc.target/x86_64/abi/defines.h
  ced3e7fc25757fe027f4eacc904e6881  gcc/testsuite/gcc.target/x86_64/abi/macros.h
! d162a29793ce69ce8e4f6ebb6f65cbe3  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S
  cf207cd32f48bf81f1c2ea9397f53856  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/gen.cc
  b14bf90b9e86d7c81b95cad9c4d55dae  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c
! 4745141569ff606b1093ca95943384f4  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp
  df350cc8fc42fcbfb44edc088765d60a  gcc/testsuite/gcc.target/x86_64/abi/test_3_element_struct_and_unions.c
  54a02258e782aaa35101b4f6cddbe300  gcc/testsuite/gcc.target/x86_64/abi/test_basic_alignment.c
  21f9b335d755c74bdef8998aeac98585  gcc/testsuite/gcc.target/x86_64/abi/test_basic_array_size_and_align.c
*************** de974d8f497b1ad76694e8f9333fcd26  gcc/te
*** 65071,65081 ****
  92244b620516764d25382b815309419b  gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_8.c
  292d09294f8beccfa611eb5d5ace3e5d  gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_b.c
  399545481a5e90f464e00d2cdb3b624f  gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_f.c
! aa90d60dade8551187e25e7375328f67  gcc/testsuite/gcc.target/xstormy16/xstormy16.exp
  fc75a0f9bf2050602dba2ff080a220b4  gcc/testsuite/gcc.target/xtensa/pr91880.c
  acfb44b971ca766549ce4e3d2974f084  gcc/testsuite/gcc.target/xtensa/pr94584.c
! 5140da03411196ebe57546d6a316aac3  gcc/testsuite/gcc.target/xtensa/xtensa.exp
! 843838fc35cb88bd164d239b2591a8b9  gcc/testsuite/gcc.test-framework/README
  096a37c4b1e488bdb060872ca7b99862  gcc/testsuite/gcc.test-framework/dg-bogus-exp-P.c
  9f91f73374d446d6b0085730a8104942  gcc/testsuite/gcc.test-framework/dg-bogus-exp-XF.c
  570821aa898995690ac6f67de0840c1a  gcc/testsuite/gcc.test-framework/dg-do-assemble-exp-P.c
--- 69531,69546 ----
  92244b620516764d25382b815309419b  gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_8.c
  292d09294f8beccfa611eb5d5ace3e5d  gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_b.c
  399545481a5e90f464e00d2cdb3b624f  gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_f.c
! cc1265cfe6b2c679157812a921b4f8a2  gcc/testsuite/gcc.target/xstormy16/xstormy16.exp
! 160617ce3e92166c524b3c1d584958a1  gcc/testsuite/gcc.target/xtensa/bswap.c
! 5dd88a67050813a2722e394515530667  gcc/testsuite/gcc.target/xtensa/mabi-call0.c
! 55cb36db164b6243fa3041628937695c  gcc/testsuite/gcc.target/xtensa/mabi-windowed.c
  fc75a0f9bf2050602dba2ff080a220b4  gcc/testsuite/gcc.target/xtensa/pr91880.c
  acfb44b971ca766549ce4e3d2974f084  gcc/testsuite/gcc.target/xtensa/pr94584.c
! ef29d88bcc9a62033efa0a6e41a3e7d8  gcc/testsuite/gcc.target/xtensa/pr98285.c
! a948656f4ea504ef065dc8d743d6ae01  gcc/testsuite/gcc.target/xtensa/shifts.c
! c77a9cfd9ed4d4fdbf6839e60aad5681  gcc/testsuite/gcc.target/xtensa/xtensa.exp
! c8ed0aea7df0f1e298e55203ac332fb5  gcc/testsuite/gcc.test-framework/README
  096a37c4b1e488bdb060872ca7b99862  gcc/testsuite/gcc.test-framework/dg-bogus-exp-P.c
  9f91f73374d446d6b0085730a8104942  gcc/testsuite/gcc.test-framework/dg-bogus-exp-XF.c
  570821aa898995690ac6f67de0840c1a  gcc/testsuite/gcc.test-framework/dg-do-assemble-exp-P.c
*************** f062cb0a2876f333f28f92446947c4ba  gcc/te
*** 65124,65209 ****
  9f7638bd3b9150864943a8f25c1163cf  gcc/testsuite/gcc.test-framework/dg-outexistsnot-exp-XF.c
  2902dae468de0112a11f157477ff0e0e  gcc/testsuite/gcc.test-framework/dg-output-exp-P.c
  34394118c6187de3c53a1131ca37c8c5  gcc/testsuite/gcc.test-framework/dg-output-exp-XF.c
  7741b86259484f4bb14a28d48d2a3723  gcc/testsuite/gcc.test-framework/dg-warning-exp-F.c
  a5fed7916fa20d3c35ba9b6ca7d18593  gcc/testsuite/gcc.test-framework/dg-warning-exp-P.c
  b09307dc50aad69d9ba101705dce41f4  gcc/testsuite/gcc.test-framework/dg-warning-nocache-exp-P.c
! 9e33eed8bd902cba3d43028b9b091217  gcc/testsuite/gcc.test-framework/gen_directive_tests
! 8183603295edc4ab5594a8f1eefe2674  gcc/testsuite/gcc.test-framework/test-framework.awk
! c135142265609c4e1d09920a8656889b  gcc/testsuite/gcc.test-framework/test-framework.exp
! fdb23cd57d2863bab04b6b83f3a39268  gcc/testsuite/gdc.dg/asan/asan.exp
  10180752a9d53fac31ca576e678cdd06  gcc/testsuite/gdc.dg/asan/gdc272.d
! 2f281da37d8cea486197a86b1f276c02  gcc/testsuite/gdc.dg/asm1.d
  98772cac30ec108e3034308434d03d25  gcc/testsuite/gdc.dg/asm2.d
  bc8a77c59a0cb7aa3d9a59ea65a92a40  gcc/testsuite/gdc.dg/asm3.d
  744340225f4ee9da7bfe66ad4a54b2c8  gcc/testsuite/gdc.dg/asm4.d
  81924dd147fbe2024048ac4b5b397435  gcc/testsuite/gdc.dg/asm5.d
! 4e0e4ed210bdeb05ef54b817cabc6d56  gcc/testsuite/gdc.dg/compilable.d
! e73938c515e646687a0e21217dd7834d  gcc/testsuite/gdc.dg/dg.exp
  a1a48cc59d8f09de15d5d5519e240770  gcc/testsuite/gdc.dg/fileimports/pr93038.txt
  5caece0c7b60952a41c18554dd8306a1  gcc/testsuite/gdc.dg/gdc254.d
  0223a72a8f1ba2ff989f4671131c6e0a  gcc/testsuite/gdc.dg/gdc260.d
! 64ae039f66e96b81e32a6f2117b78039  gcc/testsuite/gdc.dg/gdc270a.d
! 815e69bedfec542a6b7c641979ec6045  gcc/testsuite/gdc.dg/gdc270b.d
  593f75fcca3418f51fcc2f3835173079  gcc/testsuite/gdc.dg/gdc282.d
! 1b9a1f2a71076c1b3e37303c82c8619e  gcc/testsuite/gdc.dg/gdc283.d
  c68b116c16fdbf7519775c457db49b19  gcc/testsuite/gdc.dg/imports/gdc170.d
  b7311c0dccb9d8f3e521531c1175245c  gcc/testsuite/gdc.dg/imports/gdc231.d
! f1c1e41a7765c42f9a3d3c662333cba0  gcc/testsuite/gdc.dg/imports/gdc239.d
! d2160d2270042a56cf4369ae91279a5c  gcc/testsuite/gdc.dg/imports/gdc241a.d
! 9c23e280c80cd2a2817588f279376aad  gcc/testsuite/gdc.dg/imports/gdc241b.d
! 119e1f590e6644ca53dcc6ed044c140a  gcc/testsuite/gdc.dg/imports/gdc251a.d
  d733feb68f910c0d62c7cb454b6accf1  gcc/testsuite/gdc.dg/imports/gdc251b.d
! 02db4caeb610930047b727c6b72c39a8  gcc/testsuite/gdc.dg/imports/gdc253.d
  6ca7ee79c5c61f07babf9bc401181bd2  gcc/testsuite/gdc.dg/imports/gdc254a.d
  4a1c45c1482afaf7fe165064453176a8  gcc/testsuite/gdc.dg/imports/gdc256.d
  22f231195c5f7726c704d3f9d99b0d85  gcc/testsuite/gdc.dg/imports/gdc27.d
  aeec8ff75316a52def72f86d4bc1708c  gcc/testsuite/gdc.dg/imports/gdcpkg256/package.d
  7ae8eee97923fab094ae5ca5a1eca902  gcc/testsuite/gdc.dg/imports/pr92216.d
! 796ad2b48562e457fdce3ffca9353f84  gcc/testsuite/gdc.dg/imports/runnable.d
! 16d15455223a5a9f99da9e1f4b2e2911  gcc/testsuite/gdc.dg/link.d
! d1f5edea46d990e37e829d944fdc2167  gcc/testsuite/gdc.dg/lto/lto.exp
! 5697b1648a6eb2b43bdfc4a745518da0  gcc/testsuite/gdc.dg/lto/ltotests_0.d
  bcf14abbb66e47644086ee0018354420  gcc/testsuite/gdc.dg/lto/ltotests_1.d
  d32aa8ed5ea10931be4ddb5bb9e863d8  gcc/testsuite/gdc.dg/pr89017.d
  53fa8db94d4ca3fc9ba83769733dc0e7  gcc/testsuite/gdc.dg/pr89041.d
  6c316b13f71ea31fcada56b58a41ebd1  gcc/testsuite/gdc.dg/pr89042a.d
  1942df28f225c80a99718571e8605aa1  gcc/testsuite/gdc.dg/pr89042b.d
! 138056ff1efe8191d860acda3b089762  gcc/testsuite/gdc.dg/pr90136a.d
! e1c9b2eeb4c3dbcfadbdd4b94e7c8e7a  gcc/testsuite/gdc.dg/pr90136b.d
! eb5218d2c4982b8c56afcfa0135bab7e  gcc/testsuite/gdc.dg/pr90136c.d
  8a30d0c28f872107d7f7e74674a11567  gcc/testsuite/gdc.dg/pr90601.d
  309a004f4b83db629f4f6193ba0808eb  gcc/testsuite/gdc.dg/pr90650a.d
  435dae630589579d72f4713b7535ee3e  gcc/testsuite/gdc.dg/pr90650b.d
  1b70c40a24017e49d5474d3553acac65  gcc/testsuite/gdc.dg/pr91238.d
! 4c4ecaeec6091d08db758016ee1c77c5  gcc/testsuite/gdc.dg/pr92216.d
! fac3a067e271e3410de0c2aea7330fcf  gcc/testsuite/gdc.dg/pr92309.d
  3cbba828af95fce42d44bc061af274b8  gcc/testsuite/gdc.dg/pr93038.d
  ff84d707937682f90e05f089db0bd9e8  gcc/testsuite/gdc.dg/pr93038b.d
- 8041bf274da5c69bddc40cf797d487d8  gcc/testsuite/gdc.dg/pr94424.d
  48d876a6686fa02cab422bfc721bf94f  gcc/testsuite/gdc.dg/pr94777a.d
- 84b5cd2c97627459dab31bcacb02e615  gcc/testsuite/gdc.dg/pr94777b.d
  cf624d769a9b5200926d4c132fe75e3c  gcc/testsuite/gdc.dg/pr94970.d
! fa256bce282d1c30c6edf903ca1c1b3c  gcc/testsuite/gdc.dg/pr95173.d
  be038d26745b623aa5734e73550773e6  gcc/testsuite/gdc.dg/pr95250.d
  53343eb0d4463417361dc00a68627e98  gcc/testsuite/gdc.dg/pr96140.d
! e1a2722cd8235fdc6d08cb679a3d7a28  gcc/testsuite/gdc.dg/pr96157a.d
  f8904c371a1f3062fde571c25b998c54  gcc/testsuite/gdc.dg/pr96157b.d
  f23ace9a6ba289791306e13d8fd5ce0f  gcc/testsuite/gdc.dg/pr96254a.d
  b62ff9f99e07b6dbb56f221a56f0b7ab  gcc/testsuite/gdc.dg/pr96254b.d
  eb911ca49c3c33021dd97064b0459923  gcc/testsuite/gdc.dg/pr96301a.d
  6f5ae39580efa1de2679c8912e82e1b8  gcc/testsuite/gdc.dg/pr96301b.d
  7880bdba7c166bb0d5af9d5a4530b438  gcc/testsuite/gdc.dg/pr96301c.d
  dc97b4112b134cae3d15aab92424d97a  gcc/testsuite/gdc.dg/pr96924.d
! b663ef6196ae4bb84069ca545fdffaa5  gcc/testsuite/gdc.dg/pr97843.d
! 69b6b7adcb2ad72055a4fca88afe3f41  gcc/testsuite/gdc.dg/pr97889.d
  474f1f2b9c5476fcfd2ee0ed2db833f0  gcc/testsuite/gdc.dg/pr98277.d
! 9119d0ec3d943f148ead051e9149fcd0  gcc/testsuite/gdc.dg/runnable.d
! 7039ea5d3f34502d4ad2ebf20bbd078e  gcc/testsuite/gdc.dg/runnable2.d
! f8ff25c8358ba138bb7e92bed57a1406  gcc/testsuite/gdc.dg/simd.d
  967f582cf2771c2254957b0968fef157  gcc/testsuite/gdc.dg/ubsan/pr88957.d
! 2ef48174b8928dfec29a059c556b9d56  gcc/testsuite/gdc.dg/ubsan/ubsan.exp
  310f79be9999b0b9e22f7cfbfe79f71d  gcc/testsuite/gdc.test/README.gcc
! ab3d1adc569f350b1ab3f64a690fa774  gcc/testsuite/gdc.test/compilable/99bottles.d
  7e650360bd1bc425bba2aa151bb9ee13  gcc/testsuite/gdc.test/compilable/a3682.d
  9f72a4c176620fb987736b4a6c390f2e  gcc/testsuite/gdc.test/compilable/aggr_alignment.d
  beddbf81ccc1e52ee7fa201b22781d91  gcc/testsuite/gdc.test/compilable/aliasdecl.d
--- 69589,69836 ----
  9f7638bd3b9150864943a8f25c1163cf  gcc/testsuite/gcc.test-framework/dg-outexistsnot-exp-XF.c
  2902dae468de0112a11f157477ff0e0e  gcc/testsuite/gcc.test-framework/dg-output-exp-P.c
  34394118c6187de3c53a1131ca37c8c5  gcc/testsuite/gcc.test-framework/dg-output-exp-XF.c
+ d76821513655f47d266e00386180369f  gcc/testsuite/gcc.test-framework/dg-scan-symbol-section-1-exp-F.S
+ 7b085279a00ec47d33b6e8590d61fd9a  gcc/testsuite/gcc.test-framework/dg-scan-symbol-section-2-exp-F.S
+ 8bd1696cae24e6b012f87d6a47bbdcbc  gcc/testsuite/gcc.test-framework/dg-scan-symbol-section-3-exp-F.S
+ 9ddc4845da1e0ab917ceae0fe0d7711e  gcc/testsuite/gcc.test-framework/dg-scan-symbol-section-exp-P.S
  7741b86259484f4bb14a28d48d2a3723  gcc/testsuite/gcc.test-framework/dg-warning-exp-F.c
  a5fed7916fa20d3c35ba9b6ca7d18593  gcc/testsuite/gcc.test-framework/dg-warning-exp-P.c
  b09307dc50aad69d9ba101705dce41f4  gcc/testsuite/gcc.test-framework/dg-warning-nocache-exp-P.c
! 2ad445001bbc1827c43ae8f4831f0796  gcc/testsuite/gcc.test-framework/gen_directive_tests
! f2f8f7b176a8096b7448247592723377  gcc/testsuite/gcc.test-framework/test-framework.awk
! b2f1a9a045a9e57b6091049452751096  gcc/testsuite/gcc.test-framework/test-framework.exp
! 502192866584cff5028f4aa00858d119  gcc/testsuite/gdc.dg/Waddress.d
! 94208575e1a523900cf5bbbacff458ff  gcc/testsuite/gdc.dg/Wcastresult1.d
! 48a00a7acec933f1e03b4d13199e7e63  gcc/testsuite/gdc.dg/Wcastresult2.d
! 684da8abc6d44a02e6b361d163e350c1  gcc/testsuite/gdc.dg/array1.d
! 06295fc1f9b1f0161cf0de7d4310451e  gcc/testsuite/gdc.dg/asan/asan.exp
  10180752a9d53fac31ca576e678cdd06  gcc/testsuite/gdc.dg/asan/gdc272.d
! b4e45cde8944eb65be733fa1817fd03c  gcc/testsuite/gdc.dg/asm1.d
  98772cac30ec108e3034308434d03d25  gcc/testsuite/gdc.dg/asm2.d
  bc8a77c59a0cb7aa3d9a59ea65a92a40  gcc/testsuite/gdc.dg/asm3.d
  744340225f4ee9da7bfe66ad4a54b2c8  gcc/testsuite/gdc.dg/asm4.d
  81924dd147fbe2024048ac4b5b397435  gcc/testsuite/gdc.dg/asm5.d
! 31a8b77972532af3d4c1e4b565ffd968  gcc/testsuite/gdc.dg/attr_allocsize1.d
! f270d380aa68ee40ee568c5490d0f454  gcc/testsuite/gdc.dg/attr_allocsize2.d
! 0e6f8fa8bca677dfe2539d1eb9471abc  gcc/testsuite/gdc.dg/attr_alwaysinline1.d
! 51ed8d064d7232ea9ff63dda6d66dbd5  gcc/testsuite/gdc.dg/attr_cold1.d
! 7d7835c3a6124efd56825d81f8cf1b98  gcc/testsuite/gdc.dg/attr_exclusions1.d
! 5aadd05334dd3bcbd6d1ecf04ebb243d  gcc/testsuite/gdc.dg/attr_exclusions2.d
! 5f49845b5fe778c43e9dcaa88e4c416d  gcc/testsuite/gdc.dg/attr_flatten1.d
! 68b05459d20c0226090a3e38852d2a9b  gcc/testsuite/gdc.dg/attr_module.d
! 2c20bba384ddb9d4109200b5c5907057  gcc/testsuite/gdc.dg/attr_noclone1.d
! 4531c8abdd2325c664ae527ddc223c42  gcc/testsuite/gdc.dg/attr_noicf1.d
! 5d5f56373cf77cbdaea3672f40a3de75  gcc/testsuite/gdc.dg/attr_noinline1.d
! d51a3a35240e519748ee35f301fc3bc9  gcc/testsuite/gdc.dg/attr_noipa1.d
! be44f393409c50d8949f150eec7cddbf  gcc/testsuite/gdc.dg/attr_noplt1.d
! 2fdd0e2a8d70abbe8265b4c663bcb2f3  gcc/testsuite/gdc.dg/attr_optimize1.d
! a65496ad0ebda41bcdf68425b9a9f72d  gcc/testsuite/gdc.dg/attr_optimize2.d
! efa62e7f66285132689e5617fbc58246  gcc/testsuite/gdc.dg/attr_optimize3.d
! 266c55f25df87c316673bbb58d9e0447  gcc/testsuite/gdc.dg/attr_optimize4.d
! 14fa3594bd8bc49bc227959dab848846  gcc/testsuite/gdc.dg/attr_restrict1.d
! 3224bcf6fda67cf18671a91ef42189f3  gcc/testsuite/gdc.dg/attr_section1.d
! 3797a343519b62c2741944820cb78acc  gcc/testsuite/gdc.dg/attr_symver1.d
! 6be6e0c3646dcb685d92c584754e4595  gcc/testsuite/gdc.dg/attr_target1.d
! a7aa471b806a0dc9aa5c6bb1b37b42ad  gcc/testsuite/gdc.dg/attr_targetclones1.d
! 61945d5076ad9702338fa473f898a394  gcc/testsuite/gdc.dg/attr_used1.d
! 84521024efb763093c6953cf9c5af938  gcc/testsuite/gdc.dg/attr_used2.d
! 9572ed86d7a73e283f1add9802b99b1a  gcc/testsuite/gdc.dg/attr_weak1.d
! 0aaff757c8c0406ea7a86643ad642fb3  gcc/testsuite/gdc.dg/cast1.d
! e44d06ba1fa35fa83216b86e44b316fc  gcc/testsuite/gdc.dg/debug/debug.exp
! 4801d3c3cd0447454214b735d1b0f302  gcc/testsuite/gdc.dg/debug/dwarf2/dwarf2.exp
! f57bfa4edc494fecd4284a542f695d0f  gcc/testsuite/gdc.dg/debug/dwarf2/imports/pr98067.d
! 37e2ca0f4e06cb14e92a710579518a60  gcc/testsuite/gdc.dg/debug/dwarf2/langdw2.d
! db93819c7b52f4f6ea4f42fed3e0a48a  gcc/testsuite/gdc.dg/debug/dwarf2/langdw3.d
! 8527933fbf2d9fb7c82fd63435063168  gcc/testsuite/gdc.dg/debug/dwarf2/pr98067.d
! 0121ae6408f107a6bf6f915c24102bd3  gcc/testsuite/gdc.dg/debug/trivial.d
! 056a77865fa4a8c3178b44ed6a0b1dc7  gcc/testsuite/gdc.dg/dg.exp
  a1a48cc59d8f09de15d5d5519e240770  gcc/testsuite/gdc.dg/fileimports/pr93038.txt
+ 0da416e7dcac2139d3182637a81efbfe  gcc/testsuite/gdc.dg/gdc108.d
+ 5761ceeebbd93d112778a153a688475a  gcc/testsuite/gdc.dg/gdc121.d
+ 9d0b9084661f19d1dc4522e26fa4c876  gcc/testsuite/gdc.dg/gdc122.d
+ e5087e5e6cce16ee880f01eab0f5eeb1  gcc/testsuite/gdc.dg/gdc127.d
+ 8822a67ce56060b65a1232f13d07e0d9  gcc/testsuite/gdc.dg/gdc133.d
+ 32fdd1fddca8c341447b74a10f2b2792  gcc/testsuite/gdc.dg/gdc142.d
+ 6e6734b6181d148940b390f096688eae  gcc/testsuite/gdc.dg/gdc15.d
+ e2d5bdf7fa746875b7ab43601b6eabed  gcc/testsuite/gdc.dg/gdc170.d
+ 8ac8ec7152bc462f03c45e2691d6d15a  gcc/testsuite/gdc.dg/gdc183.d
+ 534339adc6ad310a107c826137c4e0be  gcc/testsuite/gdc.dg/gdc19.d
+ 131e3238a47cc5f7f19b67ce957f0bcc  gcc/testsuite/gdc.dg/gdc194.d
+ 3d1b723a91da7d14467837a309d2ae3d  gcc/testsuite/gdc.dg/gdc196.d
+ b432fa42a638cdd3a3ee7ea318e15fae  gcc/testsuite/gdc.dg/gdc204.d
+ f716b9eb284bc6d4ae9b87444be05f9b  gcc/testsuite/gdc.dg/gdc212.d
+ 052e6f13c0cd63d6328d138d71f59e47  gcc/testsuite/gdc.dg/gdc213.d
+ ba395691819832fe284da371fb70c556  gcc/testsuite/gdc.dg/gdc218.d
+ a4899872eb6e5b3e7fdb00778dcc5d7d  gcc/testsuite/gdc.dg/gdc223.d
+ 1c7a91d1a4e51a88f70e9f4f53a4b5bb  gcc/testsuite/gdc.dg/gdc231.d
+ 59fec7c5628b33ff1e9f5c335dbbd082  gcc/testsuite/gdc.dg/gdc239.d
+ 976cd3b953e291d6a13cb5f85635d729  gcc/testsuite/gdc.dg/gdc24.d
+ 838a578aec1e263f31f08eb44b8a9835  gcc/testsuite/gdc.dg/gdc241.d
+ 6851a224d556820f0048f9ced6d15c36  gcc/testsuite/gdc.dg/gdc242a.d
+ f284a352e711fc4f5e7b0ec50689850f  gcc/testsuite/gdc.dg/gdc251.d
+ 113499c7f704bf4534c1fa4579c39c45  gcc/testsuite/gdc.dg/gdc253a.d
+ d025e99b15f9ebff5596d14efc5a32b5  gcc/testsuite/gdc.dg/gdc253b.d
  5caece0c7b60952a41c18554dd8306a1  gcc/testsuite/gdc.dg/gdc254.d
+ bd9cda582a383e02474fc3702c94985e  gcc/testsuite/gdc.dg/gdc255.d
+ 9c59574f803b33a0e806c4dccdca059e  gcc/testsuite/gdc.dg/gdc256.d
  0223a72a8f1ba2ff989f4671131c6e0a  gcc/testsuite/gdc.dg/gdc260.d
! 5308266c1954385c73cdd863443ccec6  gcc/testsuite/gdc.dg/gdc261.d
! 1a449b6581b6852ea8de6bd1fc7fe690  gcc/testsuite/gdc.dg/gdc27.d
! 92fb33b5a707cefb4b1290e8bcda64b7  gcc/testsuite/gdc.dg/gdc280.d
  593f75fcca3418f51fcc2f3835173079  gcc/testsuite/gdc.dg/gdc282.d
! c39a96a9b2911da3d3f2a129a0239901  gcc/testsuite/gdc.dg/gdc284.d
! a8b9718e9319b63f7beb92ac4b2b0818  gcc/testsuite/gdc.dg/gdc300.d
! 83ab9f02227b50d98466272ffe6f14fe  gcc/testsuite/gdc.dg/gdc31.d
! ce488b572d1d92166a582275fd69e9b8  gcc/testsuite/gdc.dg/gdc37.d
! 3a8e94263ba86649c3de786a999bed58  gcc/testsuite/gdc.dg/gdc4.d
! bd9bf93de2cd3be03b2f48ec7a107774  gcc/testsuite/gdc.dg/gdc43.d
! 0a203f8da91e8bc41f506d9c35bb669e  gcc/testsuite/gdc.dg/gdc47.d
! eb8f845d76d9f6d311238210d295fa21  gcc/testsuite/gdc.dg/gdc67.d
! 4944b9a0b1f22fb68fabb167f1506524  gcc/testsuite/gdc.dg/gdc71.d
! 4ea93bb5e289cd13e04ae74dc11fcf09  gcc/testsuite/gdc.dg/gdc77.d
! 67104d4c9e5da1f77ef3a93189f99e15  gcc/testsuite/gdc.dg/imports/attributes.d
  c68b116c16fdbf7519775c457db49b19  gcc/testsuite/gdc.dg/imports/gdc170.d
  b7311c0dccb9d8f3e521531c1175245c  gcc/testsuite/gdc.dg/imports/gdc231.d
! 86c404264c2609e8e1db21b5d1829974  gcc/testsuite/gdc.dg/imports/gdc239.d
! 3d89bde921251b85d0e9ea0a24d3bb05  gcc/testsuite/gdc.dg/imports/gdc241a.d
! 77018b90443a1381f30f79b9d3c0c7a0  gcc/testsuite/gdc.dg/imports/gdc241b.d
! 17185954b9bc5ba5ecac39e324fb8d61  gcc/testsuite/gdc.dg/imports/gdc251a.d
  d733feb68f910c0d62c7cb454b6accf1  gcc/testsuite/gdc.dg/imports/gdc251b.d
! b60175beb28e5f269667d25260e08c71  gcc/testsuite/gdc.dg/imports/gdc253a.d
! 83462c6e440a0cd7142df82bd8ea5eb4  gcc/testsuite/gdc.dg/imports/gdc253b.d
  6ca7ee79c5c61f07babf9bc401181bd2  gcc/testsuite/gdc.dg/imports/gdc254a.d
  4a1c45c1482afaf7fe165064453176a8  gcc/testsuite/gdc.dg/imports/gdc256.d
  22f231195c5f7726c704d3f9d99b0d85  gcc/testsuite/gdc.dg/imports/gdc27.d
  aeec8ff75316a52def72f86d4bc1708c  gcc/testsuite/gdc.dg/imports/gdcpkg256/package.d
  7ae8eee97923fab094ae5ca5a1eca902  gcc/testsuite/gdc.dg/imports/pr92216.d
! b9989889ba43c533b1edad45c8a4bca1  gcc/testsuite/gdc.dg/intrinsics.d
! 2049e750a9b0b91100888e640127b311  gcc/testsuite/gdc.dg/lto/lto.exp
! 73f4e0e4c2d7cacc12e6ae72ff1a988e  gcc/testsuite/gdc.dg/lto/ltotests_0.d
  bcf14abbb66e47644086ee0018354420  gcc/testsuite/gdc.dg/lto/ltotests_1.d
  d32aa8ed5ea10931be4ddb5bb9e863d8  gcc/testsuite/gdc.dg/pr89017.d
  53fa8db94d4ca3fc9ba83769733dc0e7  gcc/testsuite/gdc.dg/pr89041.d
  6c316b13f71ea31fcada56b58a41ebd1  gcc/testsuite/gdc.dg/pr89042a.d
  1942df28f225c80a99718571e8605aa1  gcc/testsuite/gdc.dg/pr89042b.d
! aa2d8c1877494580482a3ecd53273c14  gcc/testsuite/gdc.dg/pr90136a.d
! 8da24faca8bd7e53b1b35f77886e3c00  gcc/testsuite/gdc.dg/pr90136b.d
! 2268967ca63a17d4ce6711255dbfe36e  gcc/testsuite/gdc.dg/pr90136c.d
  8a30d0c28f872107d7f7e74674a11567  gcc/testsuite/gdc.dg/pr90601.d
  309a004f4b83db629f4f6193ba0808eb  gcc/testsuite/gdc.dg/pr90650a.d
  435dae630589579d72f4713b7535ee3e  gcc/testsuite/gdc.dg/pr90650b.d
  1b70c40a24017e49d5474d3553acac65  gcc/testsuite/gdc.dg/pr91238.d
! 1d653292b5f0c3b4d17c902e4bbba9dd  gcc/testsuite/gdc.dg/pr92216.d
  3cbba828af95fce42d44bc061af274b8  gcc/testsuite/gdc.dg/pr93038.d
  ff84d707937682f90e05f089db0bd9e8  gcc/testsuite/gdc.dg/pr93038b.d
  48d876a6686fa02cab422bfc721bf94f  gcc/testsuite/gdc.dg/pr94777a.d
  cf624d769a9b5200926d4c132fe75e3c  gcc/testsuite/gdc.dg/pr94970.d
! f547248028dde32c303a59ddcb1e9cc2  gcc/testsuite/gdc.dg/pr95173.d
  be038d26745b623aa5734e73550773e6  gcc/testsuite/gdc.dg/pr95250.d
  53343eb0d4463417361dc00a68627e98  gcc/testsuite/gdc.dg/pr96140.d
! 2287e5948ce2959839e3f9456d8c2adb  gcc/testsuite/gdc.dg/pr96154a.d
! e3400c6549561561e3b061d72a4045ce  gcc/testsuite/gdc.dg/pr96154b.d
  f8904c371a1f3062fde571c25b998c54  gcc/testsuite/gdc.dg/pr96157b.d
  f23ace9a6ba289791306e13d8fd5ce0f  gcc/testsuite/gdc.dg/pr96254a.d
  b62ff9f99e07b6dbb56f221a56f0b7ab  gcc/testsuite/gdc.dg/pr96254b.d
  eb911ca49c3c33021dd97064b0459923  gcc/testsuite/gdc.dg/pr96301a.d
  6f5ae39580efa1de2679c8912e82e1b8  gcc/testsuite/gdc.dg/pr96301b.d
  7880bdba7c166bb0d5af9d5a4530b438  gcc/testsuite/gdc.dg/pr96301c.d
+ 2b7312af18c3e9ddb225bf58756862b7  gcc/testsuite/gdc.dg/pr96429.d
+ c5a77c2a508b4b45e9a6b936d77d9f80  gcc/testsuite/gdc.dg/pr96869.d
  dc97b4112b134cae3d15aab92424d97a  gcc/testsuite/gdc.dg/pr96924.d
! 9c4c7df565451e246ae0d226391657f5  gcc/testsuite/gdc.dg/pr97002.d
  474f1f2b9c5476fcfd2ee0ed2db833f0  gcc/testsuite/gdc.dg/pr98277.d
! a55903f9c72658c02ea18841f80bff0c  gcc/testsuite/gdc.dg/pr98427.d
! cbe01bd2f79e7ab3310ed946deebeec0  gcc/testsuite/gdc.dg/pr98457.d
! 3b746393a80b865ba51671750bc32bb9  gcc/testsuite/gdc.dg/pr99914.d
! f1adbeffab0551ea1626f3d9c0025d35  gcc/testsuite/gdc.dg/simd1.d
! a182c1f547b3b5d1ac97048fc88292b8  gcc/testsuite/gdc.dg/simd10447.d
! 391b914cb5a7ad86f4f5b923fd3ef898  gcc/testsuite/gdc.dg/simd12776.d
! 6d2b8ba219afe65762f6bd47e5b87a90  gcc/testsuite/gdc.dg/simd13841.d
! e73e2a0ac81ba426c44d67dc2d67c339  gcc/testsuite/gdc.dg/simd13927.d
! 2dc2a58bbd202821dbd5472e1dc006e9  gcc/testsuite/gdc.dg/simd15123.d
! a831afe80fa6d59508c0dad221dab60e  gcc/testsuite/gdc.dg/simd15144.d
! 04f40af8d6e9b749dc79786ceeabcc00  gcc/testsuite/gdc.dg/simd16087.d
! 14f254b2a14c3e0e17ae94bfa7c3707c  gcc/testsuite/gdc.dg/simd16697.d
! c315ba401242513acfc2cdc70141e5c7  gcc/testsuite/gdc.dg/simd17237.d
! 003666fb9a56ec290f290af7c24d8913  gcc/testsuite/gdc.dg/simd17695.d
! 513fcf8d3ca12f72fdece27dd6670d31  gcc/testsuite/gdc.dg/simd17720a.d
! cc88f045df5f6f78caef226ba1080c83  gcc/testsuite/gdc.dg/simd17720b.d
! 38c22d06146ca22bb0e7de6ff9d7d8d8  gcc/testsuite/gdc.dg/simd19224.d
! 32eefa3de18cb277221ac224e95c2c9b  gcc/testsuite/gdc.dg/simd19627.d
! 9785aaf465e6302e316fdc58f453d5b2  gcc/testsuite/gdc.dg/simd19628.d
! a404b46e0cb800e49ef56609790c6bae  gcc/testsuite/gdc.dg/simd19629.d
! 79e921aaf034c657a1cba5c0e0f99503  gcc/testsuite/gdc.dg/simd19630.d
! 24d62a0a1e71936215d5f25c8531cb04  gcc/testsuite/gdc.dg/simd2a.d
! b7410a0a56a1d1c99c521fed514c7025  gcc/testsuite/gdc.dg/simd2b.d
! bc85cf2157ce920635253cb7660d3614  gcc/testsuite/gdc.dg/simd2c.d
! d4517ca66a2709db71d0be50cce9fe58  gcc/testsuite/gdc.dg/simd2d.d
! 3336852acca6768ae9df434cfc6ee687  gcc/testsuite/gdc.dg/simd2e.d
! 89a71c3ecb2b51b1afcb49957ac75dcb  gcc/testsuite/gdc.dg/simd2f.d
! 559825e677020389a77d7b6dc2ef941c  gcc/testsuite/gdc.dg/simd2g.d
! 7c3bccc7adce30add7dd6be2cd3ead28  gcc/testsuite/gdc.dg/simd2h.d
! f11463b4471489492db19b43c02ddf40  gcc/testsuite/gdc.dg/simd2i.d
! 4a207898846ed85d94c944c039679a94  gcc/testsuite/gdc.dg/simd2j.d
! ebf10f947788d525f0f46b76f8e11271  gcc/testsuite/gdc.dg/simd7951.d
! a7c34dd8ee918654448f7d7b879eb96f  gcc/testsuite/gdc.dg/torture/array2.d
! 38be24cf4164de4216f6f5628482be07  gcc/testsuite/gdc.dg/torture/array3.d
! f7b8cedb229b6216459b475252b2ad1e  gcc/testsuite/gdc.dg/torture/gdc115.d
! c8707295375d5c36e03125d6f68b43cd  gcc/testsuite/gdc.dg/torture/gdc131.d
! fd488a22abc2d7822b102ec51cb08707  gcc/testsuite/gdc.dg/torture/gdc141.d
! 0aafaa523c71027451502884009c0a6d  gcc/testsuite/gdc.dg/torture/gdc17.d
! 1c1c7f3a54af66f6288daa8484fafb3d  gcc/testsuite/gdc.dg/torture/gdc171.d
! d51c09b15833e67d499dac50ca8a5347  gcc/testsuite/gdc.dg/torture/gdc179.d
! 9a6060b2a219b3cf0c97a108830ae0f3  gcc/testsuite/gdc.dg/torture/gdc186.d
! 89227d31d6f23e9f7c12370021c4df9d  gcc/testsuite/gdc.dg/torture/gdc187.d
! 653c2204a1770e96f92a5ade5b9bca21  gcc/testsuite/gdc.dg/torture/gdc191.d
! edd5ca3b929982edddbf96281691e17c  gcc/testsuite/gdc.dg/torture/gdc198.d
! 0c62e8467dd713901ed29ad3968cf30c  gcc/testsuite/gdc.dg/torture/gdc200.d
! 190d6aa300d923eea608055daa211a8b  gcc/testsuite/gdc.dg/torture/gdc210.d
! f5ca9894f115685d791f20b11c24f4df  gcc/testsuite/gdc.dg/torture/gdc240.d
! 01d34ed09c5b980c6ec871f6d38ef2fc  gcc/testsuite/gdc.dg/torture/gdc242b.d
! 6f7cd59c90db7c2be2ca3404e83b2e06  gcc/testsuite/gdc.dg/torture/gdc248.d
! f07d3b4140a9cab39f749d746925ebd3  gcc/testsuite/gdc.dg/torture/gdc250.d
! d2482934bc7c18e65266a5fd7e510b61  gcc/testsuite/gdc.dg/torture/gdc273.d
! a2be848a00bb76684ea59452f9869144  gcc/testsuite/gdc.dg/torture/gdc283.d
! 77c9cdd5c466c7942d3553c9b2208aa2  gcc/testsuite/gdc.dg/torture/gdc285.d
! 731f201c9dbd8222ec3c199c501ae005  gcc/testsuite/gdc.dg/torture/gdc286.d
! 9c34cba66d97233815d9dd292d390872  gcc/testsuite/gdc.dg/torture/gdc309.d
! 44c43257fe015450ebd838d1099f7163  gcc/testsuite/gdc.dg/torture/gdc35.d
! fda0cf305776db386c768d3546d5e0b9  gcc/testsuite/gdc.dg/torture/gdc36.d
! 98cb77415ed1ae4bb8041c46a3ddfe77  gcc/testsuite/gdc.dg/torture/gdc51.d
! b0b5c68386e1c5992cb977b215d56e58  gcc/testsuite/gdc.dg/torture/gdc57.d
! d3cb0d42e94f3b4127de8609610ded70  gcc/testsuite/gdc.dg/torture/gdc66.d
! 663b84ca45dda4d3daa1e65189c181b8  gcc/testsuite/gdc.dg/torture/imports/gdc36.d
! 646170aa418a99d37c59a7bb02130400  gcc/testsuite/gdc.dg/torture/init1.d
! 580aadb24b666799e25f1f02ef3b7bbb  gcc/testsuite/gdc.dg/torture/pr92309.d
! 1b111ae77202133585fd76e6867c2615  gcc/testsuite/gdc.dg/torture/pr94424.d
! 658ecf9f1faf93eb8bdf8896b94d1b62  gcc/testsuite/gdc.dg/torture/pr94777b.d
! 7a8bc04b14715c7ab9945a69447ed050  gcc/testsuite/gdc.dg/torture/pr96152.d
! 4bb3a08c1392ffe1ab686818ad5ec86c  gcc/testsuite/gdc.dg/torture/pr96153.d
! bb606d2e0103a4417ebc0bbc3d8cfd49  gcc/testsuite/gdc.dg/torture/pr96156.d
! 4133528b9c8c3396b240273ea9ecf550  gcc/testsuite/gdc.dg/torture/pr96157a.d
! cc28afe3396e956160b04c6ab8871499  gcc/testsuite/gdc.dg/torture/pr97843.d
! 69b6b7adcb2ad72055a4fca88afe3f41  gcc/testsuite/gdc.dg/torture/pr97889.d
! b82b2d96f26d876bca525fdf413dab79  gcc/testsuite/gdc.dg/torture/simd16488a.d
! 50a9ddea05e690a12d8ee20b15d2e8f0  gcc/testsuite/gdc.dg/torture/simd16488b.d
! 6f3e818cf845c58c59b1d51c2d61553a  gcc/testsuite/gdc.dg/torture/simd16703.d
! 7f1ca4d8fd576ca1b1e6b65fa3493fdc  gcc/testsuite/gdc.dg/torture/simd19223.d
! 422cd16a34555382631f0db8b649ea53  gcc/testsuite/gdc.dg/torture/simd19607.d
! b927eb63d97cd85ed9a074da8ccff420  gcc/testsuite/gdc.dg/torture/simd3.d
! 4988c4cb18b3c8c4ddca61b36792d24e  gcc/testsuite/gdc.dg/torture/simd4.d
! c8fea1c3e1d9839dc5db775a30ef5b81  gcc/testsuite/gdc.dg/torture/simd7411.d
! f686e7f9bd51b6a4664cf108ab3db20b  gcc/testsuite/gdc.dg/torture/simd7413a.d
! 550f3d6bc1c80bf8083e9594f6d0a23f  gcc/testsuite/gdc.dg/torture/simd7413b.d
! be211d00217b412a281626e091521ca8  gcc/testsuite/gdc.dg/torture/simd7414.d
! 7bf8e380f88dbe38fd93751e7ff880f9  gcc/testsuite/gdc.dg/torture/simd9200.d
! db32bdd5bf5efb008a8d0769d3d86934  gcc/testsuite/gdc.dg/torture/simd9304.d
! c8641c4ecb508bce56fb288cf0e0f8e3  gcc/testsuite/gdc.dg/torture/simd9449.d
! f74a24d5b20a5e26cd6f9d895a213ec6  gcc/testsuite/gdc.dg/torture/simd9910.d
! 4a51e6554d37213263e08170594ef9d0  gcc/testsuite/gdc.dg/torture/torture.exp
  967f582cf2771c2254957b0968fef157  gcc/testsuite/gdc.dg/ubsan/pr88957.d
! 23e164f0b6f05198e3bc517f109acb2e  gcc/testsuite/gdc.dg/ubsan/ubsan.exp
  310f79be9999b0b9e22f7cfbfe79f71d  gcc/testsuite/gdc.test/README.gcc
! 8c07514651f5c119efe0d73a5be7eac6  gcc/testsuite/gdc.test/compilable/99bottles.d
! 8723ae9962864a6f3d51a5aafb1d23cd  gcc/testsuite/gdc.test/compilable/Test16206.d
  7e650360bd1bc425bba2aa151bb9ee13  gcc/testsuite/gdc.test/compilable/a3682.d
  9f72a4c176620fb987736b4a6c390f2e  gcc/testsuite/gdc.test/compilable/aggr_alignment.d
  beddbf81ccc1e52ee7fa201b22781d91  gcc/testsuite/gdc.test/compilable/aliasdecl.d
*************** c6f64fcc66716ad719d6a22796d0fbec  gcc/te
*** 65216,65228 ****
  506432c79f059a09154bcc8193d57812  gcc/testsuite/gdc.test/compilable/b16244.d
  167ffcae45e7ea8e9abfd504753d7c72  gcc/testsuite/gdc.test/compilable/b16346.d
  c5c7e97bc1737359df54f060aaec7469  gcc/testsuite/gdc.test/compilable/b16355.d
! 73e7aa80566d2c9e93fd96074f766105  gcc/testsuite/gdc.test/compilable/b16382.d
  37abce4177ae3408ada0f4f86ea35a7b  gcc/testsuite/gdc.test/compilable/b16483.d
  503fa1bd80a250813e17e46cda25c2fa  gcc/testsuite/gdc.test/compilable/b16598.d
  ef649aba680526d48bc3e69760b621f2  gcc/testsuite/gdc.test/compilable/b16697.d
  1a88a6c51e44c3714508bdee2b346151  gcc/testsuite/gdc.test/compilable/b16967.d
  8982f69fd14c58a5dba7832efe5675f8  gcc/testsuite/gdc.test/compilable/b16976.d
! 57d4e74913d1d58f85619152627c9d6d  gcc/testsuite/gdc.test/compilable/b17111.d
  1def44638ab23277ee8a3cbef121f28b  gcc/testsuite/gdc.test/compilable/b33.d
  286e654567f89de0a3605032db35f623  gcc/testsuite/gdc.test/compilable/b6227.d
  6a76da8b7b49ec37b8f02315a9b5bdd9  gcc/testsuite/gdc.test/compilable/b6395.d
--- 69843,69855 ----
  506432c79f059a09154bcc8193d57812  gcc/testsuite/gdc.test/compilable/b16244.d
  167ffcae45e7ea8e9abfd504753d7c72  gcc/testsuite/gdc.test/compilable/b16346.d
  c5c7e97bc1737359df54f060aaec7469  gcc/testsuite/gdc.test/compilable/b16355.d
! 020127a91629a559be2c4425c776ffb5  gcc/testsuite/gdc.test/compilable/b16382.d
  37abce4177ae3408ada0f4f86ea35a7b  gcc/testsuite/gdc.test/compilable/b16483.d
  503fa1bd80a250813e17e46cda25c2fa  gcc/testsuite/gdc.test/compilable/b16598.d
  ef649aba680526d48bc3e69760b621f2  gcc/testsuite/gdc.test/compilable/b16697.d
  1a88a6c51e44c3714508bdee2b346151  gcc/testsuite/gdc.test/compilable/b16967.d
  8982f69fd14c58a5dba7832efe5675f8  gcc/testsuite/gdc.test/compilable/b16976.d
! 7fd8995951aacc68c9ef6500f3bb1b17  gcc/testsuite/gdc.test/compilable/b17111.d
  1def44638ab23277ee8a3cbef121f28b  gcc/testsuite/gdc.test/compilable/b33.d
  286e654567f89de0a3605032db35f623  gcc/testsuite/gdc.test/compilable/b6227.d
  6a76da8b7b49ec37b8f02315a9b5bdd9  gcc/testsuite/gdc.test/compilable/b6395.d
*************** ef649aba680526d48bc3e69760b621f2  gcc/te
*** 65231,65242 ****
  dee0f822a13e4056b5394870a7c74761  gcc/testsuite/gdc.test/compilable/betterCarray.d
  7021d1651fabe6e446f09a6e5c53962f  gcc/testsuite/gdc.test/compilable/betterCswitch.d
  0aa7e577ae4c165086acff2ed3c6759e  gcc/testsuite/gdc.test/compilable/bug11735.d
  fbecccee350c9b5a8815a306c8c7a540  gcc/testsuite/gdc.test/compilable/bug6963.d
! c8b0efcb74d95de62d99b51208acdcf9  gcc/testsuite/gdc.test/compilable/callconv.d
! fa36b2a3fd41cc9863ccd171edfd2973  gcc/testsuite/gdc.test/compilable/compilable.exp
! 1ecc67e00f41e0b49bd81488ae5f5c58  gcc/testsuite/gdc.test/compilable/compile1.d
  813d2d5a881b444cee90d1463d11f554  gcc/testsuite/gdc.test/compilable/const.d
! 5f09c14d8ecebb2cb1dec4ceb3ae9015  gcc/testsuite/gdc.test/compilable/cppmangle.d
  b4fb7056eae9b23a25601088340fd2bd  gcc/testsuite/gdc.test/compilable/cppmangle3.d
  59da721200ffd17dacb51282c83bd23e  gcc/testsuite/gdc.test/compilable/ctfe_math.d
  53015988ae5d173decdfd3292b66ade4  gcc/testsuite/gdc.test/compilable/ddoc1.d
--- 69858,69871 ----
  dee0f822a13e4056b5394870a7c74761  gcc/testsuite/gdc.test/compilable/betterCarray.d
  7021d1651fabe6e446f09a6e5c53962f  gcc/testsuite/gdc.test/compilable/betterCswitch.d
  0aa7e577ae4c165086acff2ed3c6759e  gcc/testsuite/gdc.test/compilable/bug11735.d
+ aa026edeb0f2cbe8ba150f88aafdb855  gcc/testsuite/gdc.test/compilable/bug20796.d
  fbecccee350c9b5a8815a306c8c7a540  gcc/testsuite/gdc.test/compilable/bug6963.d
! ae9f44e54c2ec8d1f511343f28d52647  gcc/testsuite/gdc.test/compilable/callconv.d
! 2195ce4127b8a9f492fa85a2796e69c1  gcc/testsuite/gdc.test/compilable/checkimports3.d
! 8cf14ce2b496d3188a711dcc53a12450  gcc/testsuite/gdc.test/compilable/compilable.exp
! 4fb3cc7a0f5fce0e8d63c50b07f9178d  gcc/testsuite/gdc.test/compilable/compile1.d
  813d2d5a881b444cee90d1463d11f554  gcc/testsuite/gdc.test/compilable/const.d
! fdbc2afab5ee336e9d31b33a0f4e3608  gcc/testsuite/gdc.test/compilable/cppmangle.d
  b4fb7056eae9b23a25601088340fd2bd  gcc/testsuite/gdc.test/compilable/cppmangle3.d
  59da721200ffd17dacb51282c83bd23e  gcc/testsuite/gdc.test/compilable/ctfe_math.d
  53015988ae5d173decdfd3292b66ade4  gcc/testsuite/gdc.test/compilable/ddoc1.d
*************** ac4a15bd8e36da946f5f28762c5683b2  gcc/te
*** 65263,65276 ****
  0ae82fb5c54f54c8c929ab03004c2d87  gcc/testsuite/gdc.test/compilable/ddoc14.d
  f673b2ed92770c7955e3a69e0403e64d  gcc/testsuite/gdc.test/compilable/ddoc14383.d
  83637dc275cb6d8e99c6b679774175e8  gcc/testsuite/gdc.test/compilable/ddoc14413.d
! 06b65cc8833963b62df5198b5285625c  gcc/testsuite/gdc.test/compilable/ddoc14633.d
  a1e78487df9856b603e9e1e681c10c14  gcc/testsuite/gdc.test/compilable/ddoc14778.d
  16ac8b0d9cf4df797c614cb8bbcf0a5f  gcc/testsuite/gdc.test/compilable/ddoc15475.d
  f66e05a54edd41e9fefdc37306958153  gcc/testsuite/gdc.test/compilable/ddoc17697.d
  f3f48f05a46b507bc082e5a4fe60dc90  gcc/testsuite/gdc.test/compilable/ddoc198.d
  59a8fd1326a8f5d9bd4127e44656b19e  gcc/testsuite/gdc.test/compilable/ddoc2.d
  aae6ca78e938169cec2fee92c08ae3ef  gcc/testsuite/gdc.test/compilable/ddoc2273.d
! c49a5a207a3480e4a2215337fdeb1a64  gcc/testsuite/gdc.test/compilable/ddoc3.d
  8bd804a208c7b528dfe762092682e7d9  gcc/testsuite/gdc.test/compilable/ddoc4.d
  ddf7e3311a514195e0386016b7bf4d65  gcc/testsuite/gdc.test/compilable/ddoc4162.d
  d74ed8ce2acdd0978f0bf5c924d667f9  gcc/testsuite/gdc.test/compilable/ddoc4899.d
--- 69892,69905 ----
  0ae82fb5c54f54c8c929ab03004c2d87  gcc/testsuite/gdc.test/compilable/ddoc14.d
  f673b2ed92770c7955e3a69e0403e64d  gcc/testsuite/gdc.test/compilable/ddoc14383.d
  83637dc275cb6d8e99c6b679774175e8  gcc/testsuite/gdc.test/compilable/ddoc14413.d
! e88aa75d851c720fec73c7ea7065b8a0  gcc/testsuite/gdc.test/compilable/ddoc14633.d
  a1e78487df9856b603e9e1e681c10c14  gcc/testsuite/gdc.test/compilable/ddoc14778.d
  16ac8b0d9cf4df797c614cb8bbcf0a5f  gcc/testsuite/gdc.test/compilable/ddoc15475.d
  f66e05a54edd41e9fefdc37306958153  gcc/testsuite/gdc.test/compilable/ddoc17697.d
  f3f48f05a46b507bc082e5a4fe60dc90  gcc/testsuite/gdc.test/compilable/ddoc198.d
  59a8fd1326a8f5d9bd4127e44656b19e  gcc/testsuite/gdc.test/compilable/ddoc2.d
  aae6ca78e938169cec2fee92c08ae3ef  gcc/testsuite/gdc.test/compilable/ddoc2273.d
! b4a15ebf3277872309966dddbf8e72ce  gcc/testsuite/gdc.test/compilable/ddoc3.d
  8bd804a208c7b528dfe762092682e7d9  gcc/testsuite/gdc.test/compilable/ddoc4.d
  ddf7e3311a514195e0386016b7bf4d65  gcc/testsuite/gdc.test/compilable/ddoc4162.d
  d74ed8ce2acdd0978f0bf5c924d667f9  gcc/testsuite/gdc.test/compilable/ddoc4899.d
*************** ff8b72c8d32ff11a411560e45a94cab9  gcc/te
*** 65306,65321 ****
  8e423b32665ea4c4ee7b0dfff595c8e9  gcc/testsuite/gdc.test/compilable/ddoc9903.d
  7e94f06d537f408b81e58b54144950de  gcc/testsuite/gdc.test/compilable/ddocYear.d
  c5e52e4977be612aaa8c4900bb96cf73  gcc/testsuite/gdc.test/compilable/ddocbackticks.d
! 50f2ff7c659f5fd95ef88b33c5371a38  gcc/testsuite/gdc.test/compilable/ddocunittest.d
  5fb42fddd5e4bf43c346eb684e1ddbb2  gcc/testsuite/gdc.test/compilable/debuginfo.d
  053c9f478e1b796f12437eebeb76cb91  gcc/testsuite/gdc.test/compilable/defa.d
  7beb4327856215274c9be527ad4b3e2a  gcc/testsuite/gdc.test/compilable/depmsg.d
! 9577b16fbc3b698ebd46171fdd281a8c  gcc/testsuite/gdc.test/compilable/deprecate14283.d
  b491d6ab8f8a3813bd93fed6f411a9cd  gcc/testsuite/gdc.test/compilable/depsOutput9948.d
  0ba83ee3d8f2bf7360485b7ca6d1aa12  gcc/testsuite/gdc.test/compilable/derivedarray.d
! 4e05f017e351b18236e5a68c33816bef  gcc/testsuite/gdc.test/compilable/diag11066.d
! a0fe85345c5fd2c0cbf12c72a11e0e60  gcc/testsuite/gdc.test/compilable/diag3243.d
  70d03ceec7b16f53c1a91d0e914b8b56  gcc/testsuite/gdc.test/compilable/dip22.d
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gdc.test/compilable/empty_file.d
  7f97d3263822f7811155ec0ef0ba7d2b  gcc/testsuite/gdc.test/compilable/exception.d
  7d8a38351d77894e87920968353b0859  gcc/testsuite/gdc.test/compilable/extra-files/c6395.d
--- 69935,69952 ----
  8e423b32665ea4c4ee7b0dfff595c8e9  gcc/testsuite/gdc.test/compilable/ddoc9903.d
  7e94f06d537f408b81e58b54144950de  gcc/testsuite/gdc.test/compilable/ddocYear.d
  c5e52e4977be612aaa8c4900bb96cf73  gcc/testsuite/gdc.test/compilable/ddocbackticks.d
! efc629d0220fa17ff84b93e7f7ce4a04  gcc/testsuite/gdc.test/compilable/ddocunittest.d
  5fb42fddd5e4bf43c346eb684e1ddbb2  gcc/testsuite/gdc.test/compilable/debuginfo.d
  053c9f478e1b796f12437eebeb76cb91  gcc/testsuite/gdc.test/compilable/defa.d
  7beb4327856215274c9be527ad4b3e2a  gcc/testsuite/gdc.test/compilable/depmsg.d
! 91d811dc652f420e22d87ecf1e4d5b9c  gcc/testsuite/gdc.test/compilable/deprecate14283.d
  b491d6ab8f8a3813bd93fed6f411a9cd  gcc/testsuite/gdc.test/compilable/depsOutput9948.d
  0ba83ee3d8f2bf7360485b7ca6d1aa12  gcc/testsuite/gdc.test/compilable/derivedarray.d
! ece3fcebff1c5a8167a5e21587d73d44  gcc/testsuite/gdc.test/compilable/diag11066.d
! 4824c4195a3262539f96a518fba8461b  gcc/testsuite/gdc.test/compilable/diag12598.d
! 3d6162e3c3db730ccaa118a759d35fa7  gcc/testsuite/gdc.test/compilable/diag3243.d
  70d03ceec7b16f53c1a91d0e914b8b56  gcc/testsuite/gdc.test/compilable/dip22.d
+ 474e3ffb24e0f5f7fd61155a113a710f  gcc/testsuite/gdc.test/compilable/dip22d.d
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gdc.test/compilable/empty_file.d
  7f97d3263822f7811155ec0ef0ba7d2b  gcc/testsuite/gdc.test/compilable/exception.d
  7d8a38351d77894e87920968353b0859  gcc/testsuite/gdc.test/compilable/extra-files/c6395.d
*************** c4a067a73e971ee045278cd5df42a619  gcc/te
*** 65332,65338 ****
  39f6e328e37e7981f8597bdae714c428  gcc/testsuite/gdc.test/compilable/extra-files/e6815.d
  30cc1bf240439d09b47fb6549193de3d  gcc/testsuite/gdc.test/compilable/extra-files/example7190/controllers/HomeController.d
  cf2cb48cde6a5cacaab45cf9daa47dd1  gcc/testsuite/gdc.test/compilable/extra-files/example7190/models/HomeModel.d
! 7ffe39f68f476116097bb4dd95081297  gcc/testsuite/gdc.test/compilable/extra-files/header1.d
  d87e2fb93ac59886a657e88db5750510  gcc/testsuite/gdc.test/compilable/extra-files/header2.d
  afe402733aa720a2cd8e8cc8e693949d  gcc/testsuite/gdc.test/compilable/extra-files/header3.d
  96b3d751c92c490a3213da0030540e86  gcc/testsuite/gdc.test/compilable/extra-files/imp12624.d
--- 69963,69969 ----
  39f6e328e37e7981f8597bdae714c428  gcc/testsuite/gdc.test/compilable/extra-files/e6815.d
  30cc1bf240439d09b47fb6549193de3d  gcc/testsuite/gdc.test/compilable/extra-files/example7190/controllers/HomeController.d
  cf2cb48cde6a5cacaab45cf9daa47dd1  gcc/testsuite/gdc.test/compilable/extra-files/example7190/models/HomeModel.d
! a5dbffbaabb2414858f3ed4c93f9c3ed  gcc/testsuite/gdc.test/compilable/extra-files/header1.d
  d87e2fb93ac59886a657e88db5750510  gcc/testsuite/gdc.test/compilable/extra-files/header2.d
  afe402733aa720a2cd8e8cc8e693949d  gcc/testsuite/gdc.test/compilable/extra-files/header3.d
  96b3d751c92c490a3213da0030540e86  gcc/testsuite/gdc.test/compilable/extra-files/imp12624.d
*************** df6aa930ff39678be6c4754871971f9d  gcc/te
*** 65351,65364 ****
  cb6818365b29b41ad47f5424c409e99c  gcc/testsuite/gdc.test/compilable/extra-files/pkgDIP37_10421/algo/mod.d
  4cf088b51c17b15849ca6176e9c2d9fd  gcc/testsuite/gdc.test/compilable/extra-files/pkgDIP37_10421/algo/package.d
  6dc1173c8fa751075b89767510130a0e  gcc/testsuite/gdc.test/compilable/extra-files/pkgDIP37_10421/except.d
! 0fc124048fc925dbcf37bed1dca0b3fb  gcc/testsuite/gdc.test/compilable/extra-files/serenity7190/core/Controller.d
  ef173d2cdbc0bc5a02f0c5d0cbd51949  gcc/testsuite/gdc.test/compilable/extra-files/serenity7190/core/Model.d
  9f668d225fea83eafca80d0c1f8e96b8  gcc/testsuite/gdc.test/compilable/extra-files/test16080b.d
  513a2b1874c3c5a798b1586ac310cc31  gcc/testsuite/gdc.test/compilable/fail260.d
  804340d8435da218a93bac2004552499  gcc/testsuite/gdc.test/compilable/fix17123.d
  9d9fc7d796673c0a6b49fed0e130e37d  gcc/testsuite/gdc.test/compilable/fix17335.d
  2dc23ca3779c369ecd10f2049bc329d6  gcc/testsuite/gdc.test/compilable/fix17349.d
  26b3530ba3b84ea431156543296fac22  gcc/testsuite/gdc.test/compilable/fix17686.d
  9cbcecdeaffeb76673809746c693035d  gcc/testsuite/gdc.test/compilable/forward1.d
  5a1b205da1e7b2ca9f6c777a2855e6d1  gcc/testsuite/gdc.test/compilable/future.d
  f78fb025ecbedeb5e52e32027efb13ea  gcc/testsuite/gdc.test/compilable/futurexf.d
--- 69982,69998 ----
  cb6818365b29b41ad47f5424c409e99c  gcc/testsuite/gdc.test/compilable/extra-files/pkgDIP37_10421/algo/mod.d
  4cf088b51c17b15849ca6176e9c2d9fd  gcc/testsuite/gdc.test/compilable/extra-files/pkgDIP37_10421/algo/package.d
  6dc1173c8fa751075b89767510130a0e  gcc/testsuite/gdc.test/compilable/extra-files/pkgDIP37_10421/except.d
! 5a650d9367c98c35146f969c3ee473c9  gcc/testsuite/gdc.test/compilable/extra-files/serenity7190/core/Controller.d
  ef173d2cdbc0bc5a02f0c5d0cbd51949  gcc/testsuite/gdc.test/compilable/extra-files/serenity7190/core/Model.d
  9f668d225fea83eafca80d0c1f8e96b8  gcc/testsuite/gdc.test/compilable/extra-files/test16080b.d
+ 1eb726ec1e3b3c09d563bfeba4931136  gcc/testsuite/gdc.test/compilable/extra-files/test20280a.d
  513a2b1874c3c5a798b1586ac310cc31  gcc/testsuite/gdc.test/compilable/fail260.d
  804340d8435da218a93bac2004552499  gcc/testsuite/gdc.test/compilable/fix17123.d
  9d9fc7d796673c0a6b49fed0e130e37d  gcc/testsuite/gdc.test/compilable/fix17335.d
  2dc23ca3779c369ecd10f2049bc329d6  gcc/testsuite/gdc.test/compilable/fix17349.d
  26b3530ba3b84ea431156543296fac22  gcc/testsuite/gdc.test/compilable/fix17686.d
+ 1646038aa524792b66b4e87f78390e1e  gcc/testsuite/gdc.test/compilable/fix21585.d
+ b30f061b03fb7cc59c0ba6a0ca6525ec  gcc/testsuite/gdc.test/compilable/fix21647.d
  9cbcecdeaffeb76673809746c693035d  gcc/testsuite/gdc.test/compilable/forward1.d
  5a1b205da1e7b2ca9f6c777a2855e6d1  gcc/testsuite/gdc.test/compilable/future.d
  f78fb025ecbedeb5e52e32027efb13ea  gcc/testsuite/gdc.test/compilable/futurexf.d
*************** f78fb025ecbedeb5e52e32027efb13ea  gcc/te
*** 65366,65372 ****
  2c33f842121803c40cf0bac71fba2c47  gcc/testsuite/gdc.test/compilable/ice10431a.d
  aa3f4a30c984c68273088f85dc1e5f09  gcc/testsuite/gdc.test/compilable/ice10431b.d
  8dc88fb8c5ea3970a37f9d71f06e23b7  gcc/testsuite/gdc.test/compilable/ice10486.d
! 241eb80dadcfa3d8b8b8b49b6e9d368c  gcc/testsuite/gdc.test/compilable/ice10598.d
  7866960023755e96979fe3131c0998e6  gcc/testsuite/gdc.test/compilable/ice11054.d
  fb82f64210588227ae57c214b1070d1a  gcc/testsuite/gdc.test/compilable/ice11300.d
  3e702de5a2a2d564b877152a06ee6879  gcc/testsuite/gdc.test/compilable/ice11596.d
--- 70000,70006 ----
  2c33f842121803c40cf0bac71fba2c47  gcc/testsuite/gdc.test/compilable/ice10431a.d
  aa3f4a30c984c68273088f85dc1e5f09  gcc/testsuite/gdc.test/compilable/ice10431b.d
  8dc88fb8c5ea3970a37f9d71f06e23b7  gcc/testsuite/gdc.test/compilable/ice10486.d
! cc1530cf99cecb23aa98bc035a1ba59c  gcc/testsuite/gdc.test/compilable/ice10770.d
  7866960023755e96979fe3131c0998e6  gcc/testsuite/gdc.test/compilable/ice11054.d
  fb82f64210588227ae57c214b1070d1a  gcc/testsuite/gdc.test/compilable/ice11300.d
  3e702de5a2a2d564b877152a06ee6879  gcc/testsuite/gdc.test/compilable/ice11596.d
*************** a7f81d85616a4a6e4fcc8a203217e8f1  gcc/te
*** 65418,65428 ****
--- 70052,70068 ----
  5cac2efdb862136268b7b07d8cab0657  gcc/testsuite/gdc.test/compilable/imports/b3682.d
  fb74ec9731e081481c9cb9f98f6dcdc8  gcc/testsuite/gdc.test/compilable/imports/bug8922.d
  9948a034269cc602a8027767cdfd2ad7  gcc/testsuite/gdc.test/compilable/imports/c314.d
+ e549fb3fb27aef58c9fb0e637020f69b  gcc/testsuite/gdc.test/compilable/imports/checkimports3a.d
+ f6dc0b6e038af5071ee1975e134b72f2  gcc/testsuite/gdc.test/compilable/imports/checkimports3b.d
+ f42b040cc735f147de9e381788dcc63b  gcc/testsuite/gdc.test/compilable/imports/checkimports3c.d
  2283cb4b63477f95d505c9606ea8fa74  gcc/testsuite/gdc.test/compilable/imports/defaa.d
  a5b82ffa05ad0e90edc2b22c6054fbbb  gcc/testsuite/gdc.test/compilable/imports/defab.d
  51c4cc09ad07993ac2f4044028515968  gcc/testsuite/gdc.test/compilable/imports/defac.d
  57669e79302b6a7341ca254736da39ed  gcc/testsuite/gdc.test/compilable/imports/defad.d
+ ad665c5d6e56c4f3b4f2ebee84c46319  gcc/testsuite/gdc.test/compilable/imports/diag12598a.d
  abe63f7624cf794cd7b3698661f93ee6  gcc/testsuite/gdc.test/compilable/imports/dip22.d
+ 8b2f94f2c9591cd94d8c008b51ef253e  gcc/testsuite/gdc.test/compilable/imports/dip22d.d
+ 892b0476d152077e445bae0cb08d1712  gcc/testsuite/gdc.test/compilable/imports/dip22e.d
  7a8bfeae02d83ffdff9a24a22e038ae6  gcc/testsuite/gdc.test/compilable/imports/f313.d
  257c7bfcfd7f8aa0d73ba9e683464feb  gcc/testsuite/gdc.test/compilable/imports/fwdref12201a.d
  eae7f13df60ea789889474fd66b8825e  gcc/testsuite/gdc.test/compilable/imports/fwdref2_test17548.d
*************** a3ec949c029ba8d789fb2062d3d42b03  gcc/te
*** 65432,65439 ****
  9168068939f17dfd1fe8311083b1b8ae  gcc/testsuite/gdc.test/compilable/imports/g313staticif.d
  9168068939f17dfd1fe8311083b1b8ae  gcc/testsuite/gdc.test/compilable/imports/g313stringmixin.d
  9168068939f17dfd1fe8311083b1b8ae  gcc/testsuite/gdc.test/compilable/imports/g313templatemixin.d
- 5791316416122dff3127bc6d42a56837  gcc/testsuite/gdc.test/compilable/imports/ice10598a.d
- 373a817601afc9fc8c384d315851ad57  gcc/testsuite/gdc.test/compilable/imports/ice10598b.d
  1d15877df5e20c5ffc6c757bf0dcf02b  gcc/testsuite/gdc.test/compilable/imports/ice11054a.d
  c1ca533d08e73bc66136050ee7b7c9e8  gcc/testsuite/gdc.test/compilable/imports/ice11300a.d
  2056faa392dbead9570c704db50b8806  gcc/testsuite/gdc.test/compilable/imports/ice13403a.d
--- 70072,70077 ----
*************** caa252586dc80ca4f5a5ccbb569aac85  gcc/te
*** 65446,65464 ****
  e16ec4b37f7eb15357e42f205086eae3  gcc/testsuite/gdc.test/compilable/imports/imp15490a.d
  cd260b8c97e2437f6252ca629613ee62  gcc/testsuite/gdc.test/compilable/imports/imp15490b.d
  a255d24242e60200571b19f159dbbed4  gcc/testsuite/gdc.test/compilable/imports/imp15907.d
- d0e4233fc485fb20385bfdc07f1ec961  gcc/testsuite/gdc.test/compilable/imports/imp15925.d
  a0b3b3afbbd6542de8cda155760e1c6b  gcc/testsuite/gdc.test/compilable/imports/imp16080.d
  c2a53211d7370f7da0d508d30c736f20  gcc/testsuite/gdc.test/compilable/imports/imp16085.d
  94ecdbf1d0d5a50a7116613e191df2d8  gcc/testsuite/gdc.test/compilable/imports/imp16085b.d
  981c62d2d09ebb0c99e8df108cdd13a4  gcc/testsuite/gdc.test/compilable/imports/imp16460.d
  d827eb3984b4481ec333627e31ee09fa  gcc/testsuite/gdc.test/compilable/imports/imp16798.d
  80335f846a510030cde94b5996d091ba  gcc/testsuite/gdc.test/compilable/imports/jsonimport1.d
  51b97508db426b4d26e878c441fa32e5  gcc/testsuite/gdc.test/compilable/imports/jsonimport2.d
  7eaf88579e1e5647bd4359a7cd817d97  gcc/testsuite/gdc.test/compilable/imports/jsonimport3.d
  f3a1a3ccef2dfb9805ab0a3f9233b0a1  gcc/testsuite/gdc.test/compilable/imports/jsonimport4.d
  cf35fae634540a741b269f55e769278f  gcc/testsuite/gdc.test/compilable/imports/pkg313/c313.d
  0ccc66c7c2824f105b12e29d04161898  gcc/testsuite/gdc.test/compilable/imports/pkgmod313/mod.d
  e5b55ced4559d6a06ce7db266e5c9631  gcc/testsuite/gdc.test/compilable/imports/pkgmod313/package.d
  787125c1c7e63f391055064fff3c1f7e  gcc/testsuite/gdc.test/compilable/imports/pr9471a.d
  aaaeba07a11a8a333a5453d1af0cec09  gcc/testsuite/gdc.test/compilable/imports/pr9471b.d
  09c9dd188b3260a902d3ad448f346528  gcc/testsuite/gdc.test/compilable/imports/pr9471c.d
--- 70084,70108 ----
  e16ec4b37f7eb15357e42f205086eae3  gcc/testsuite/gdc.test/compilable/imports/imp15490a.d
  cd260b8c97e2437f6252ca629613ee62  gcc/testsuite/gdc.test/compilable/imports/imp15490b.d
  a255d24242e60200571b19f159dbbed4  gcc/testsuite/gdc.test/compilable/imports/imp15907.d
  a0b3b3afbbd6542de8cda155760e1c6b  gcc/testsuite/gdc.test/compilable/imports/imp16080.d
  c2a53211d7370f7da0d508d30c736f20  gcc/testsuite/gdc.test/compilable/imports/imp16085.d
  94ecdbf1d0d5a50a7116613e191df2d8  gcc/testsuite/gdc.test/compilable/imports/imp16085b.d
  981c62d2d09ebb0c99e8df108cdd13a4  gcc/testsuite/gdc.test/compilable/imports/imp16460.d
  d827eb3984b4481ec333627e31ee09fa  gcc/testsuite/gdc.test/compilable/imports/imp16798.d
+ 3d9aac3b6cd1bdc497ccaa9fbed2a264  gcc/testsuite/gdc.test/compilable/imports/issue21614a.d
  80335f846a510030cde94b5996d091ba  gcc/testsuite/gdc.test/compilable/imports/jsonimport1.d
  51b97508db426b4d26e878c441fa32e5  gcc/testsuite/gdc.test/compilable/imports/jsonimport2.d
  7eaf88579e1e5647bd4359a7cd817d97  gcc/testsuite/gdc.test/compilable/imports/jsonimport3.d
  f3a1a3ccef2dfb9805ab0a3f9233b0a1  gcc/testsuite/gdc.test/compilable/imports/jsonimport4.d
+ b56c3e652d5f4ccf730dd3dd9bc3afa8  gcc/testsuite/gdc.test/compilable/imports/pkg16044/package.d
+ a6bf37840e2367e81572f030740a8b42  gcc/testsuite/gdc.test/compilable/imports/pkg16044/sub/package.d
+ d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gdc.test/compilable/imports/pkg20537/package.d
  cf35fae634540a741b269f55e769278f  gcc/testsuite/gdc.test/compilable/imports/pkg313/c313.d
  0ccc66c7c2824f105b12e29d04161898  gcc/testsuite/gdc.test/compilable/imports/pkgmod313/mod.d
  e5b55ced4559d6a06ce7db266e5c9631  gcc/testsuite/gdc.test/compilable/imports/pkgmod313/package.d
+ a2a19c9a5687cb82b8c92b6c813b992f  gcc/testsuite/gdc.test/compilable/imports/pkgmodule/package.d
+ dcb71c2de63f3106f8685448e678bd28  gcc/testsuite/gdc.test/compilable/imports/pkgmodule/plainmodule.d
+ e25da44e5f50ef100b2c819cbd67c815  gcc/testsuite/gdc.test/compilable/imports/plainpackage/plainmodule.d
  787125c1c7e63f391055064fff3c1f7e  gcc/testsuite/gdc.test/compilable/imports/pr9471a.d
  aaaeba07a11a8a333a5453d1af0cec09  gcc/testsuite/gdc.test/compilable/imports/pr9471b.d
  09c9dd188b3260a902d3ad448f346528  gcc/testsuite/gdc.test/compilable/imports/pr9471c.d
*************** ccf9d9e561b4a66bec346fec85b166cc  gcc/te
*** 65479,65487 ****
  17c5090aece0b18024d0b24371840387  gcc/testsuite/gdc.test/compilable/imports/test13242b.d
  6b62b094c18f435420c1cb0fe407dcf1  gcc/testsuite/gdc.test/compilable/imports/test14666a.d
  57315e4584c5b1ab0e0a4292b8fa967d  gcc/testsuite/gdc.test/compilable/imports/test14666b.d
- 2495a7ec11f5a9676dc5f43d8be5b556  gcc/testsuite/gdc.test/compilable/imports/test15117a.d
  f7eb4505340130cdb2527ff9989b20f3  gcc/testsuite/gdc.test/compilable/imports/test15150a.d
  7ff2919788d7a4c3ae477c4d940e5953  gcc/testsuite/gdc.test/compilable/imports/test15150b.d
  22cff19740b80ea79ed5c13783e3943d  gcc/testsuite/gdc.test/compilable/imports/test15785.d
  55cdad3714247c68bfe160df6e00cf24  gcc/testsuite/gdc.test/compilable/imports/test15857a.d
  446fe52c4cfd1cfd81b476abeded604c  gcc/testsuite/gdc.test/compilable/imports/test15857b.d
--- 70123,70131 ----
  17c5090aece0b18024d0b24371840387  gcc/testsuite/gdc.test/compilable/imports/test13242b.d
  6b62b094c18f435420c1cb0fe407dcf1  gcc/testsuite/gdc.test/compilable/imports/test14666a.d
  57315e4584c5b1ab0e0a4292b8fa967d  gcc/testsuite/gdc.test/compilable/imports/test14666b.d
  f7eb4505340130cdb2527ff9989b20f3  gcc/testsuite/gdc.test/compilable/imports/test15150a.d
  7ff2919788d7a4c3ae477c4d940e5953  gcc/testsuite/gdc.test/compilable/imports/test15150b.d
+ edec2233b23c66fc49dd5079f1fd48f8  gcc/testsuite/gdc.test/compilable/imports/test15371.d
  22cff19740b80ea79ed5c13783e3943d  gcc/testsuite/gdc.test/compilable/imports/test15785.d
  55cdad3714247c68bfe160df6e00cf24  gcc/testsuite/gdc.test/compilable/imports/test15857a.d
  446fe52c4cfd1cfd81b476abeded604c  gcc/testsuite/gdc.test/compilable/imports/test15857b.d
*************** f7eb4505340130cdb2527ff9989b20f3  gcc/te
*** 65490,65502 ****
--- 70134,70152 ----
  2367f4c6a52dde8157f11f2d069d1de7  gcc/testsuite/gdc.test/compilable/imports/test16348.d
  2559669a912b485e962b9a7de425cffc  gcc/testsuite/gdc.test/compilable/imports/test1754a.d
  f1cd8fee062b759eb381ad6f0be9fd69  gcc/testsuite/gdc.test/compilable/imports/test1754b.d
+ d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gdc.test/compilable/imports/test17991a/a.d
+ d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gdc.test/compilable/imports/test17991a/package.d
  eea69b24dab5f6a3a3bc66e1783a9bdd  gcc/testsuite/gdc.test/compilable/imports/test19609a.d
  3aae6246838f53dede9a22c3cf97baac  gcc/testsuite/gdc.test/compilable/imports/test19609b.d
  4ba163636180cbb37f67c5128cd77536  gcc/testsuite/gdc.test/compilable/imports/test19609c.d
  4af26579445d4f23b4ad000fa00a7fc4  gcc/testsuite/gdc.test/compilable/imports/test1imp.d
+ d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gdc.test/compilable/imports/test20151a/b/c/c.d
+ d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gdc.test/compilable/imports/test20530a.d
  754f26c40ff56dabdfc6b66af299bb99  gcc/testsuite/gdc.test/compilable/imports/test21299/func.d
  49c149a624a15b7c88491e52fb5e72ad  gcc/testsuite/gdc.test/compilable/imports/test21299/mtype.d
  ed6b446a1bba02028807741f49a0b12c  gcc/testsuite/gdc.test/compilable/imports/test21299/rootstringtable.d
+ e00a356527fd9de68672afcd288ed7d8  gcc/testsuite/gdc.test/compilable/imports/test21501b.d
+ 1bab730cb011f8e9b10ea5b2125d66b5  gcc/testsuite/gdc.test/compilable/imports/test21501c.d
  e6b06846e47d7e657b4b6da3e34a6954  gcc/testsuite/gdc.test/compilable/imports/test25a.d
  dcecd311a16774881975a1c3b62d5e02  gcc/testsuite/gdc.test/compilable/imports/test25b.d
  dd423bc6d69cba269b09946e729dbf08  gcc/testsuite/gdc.test/compilable/imports/test2991.d
*************** e1b2201bb7bef13edd5b1dd62a016069  gcc/te
*** 65543,65553 ****
  1d8fc89265fe679561568985cc3facff  gcc/testsuite/gdc.test/compilable/imports/udamodule2.d
  2f1dca8de92811ccae257ea9c1e85b24  gcc/testsuite/gdc.test/compilable/imports/udamodule2a.d
  d9ebf67fd237bed148f1afc04cc9917e  gcc/testsuite/gdc.test/compilable/imports/wax16798.d
! 3bac518e67dacd4d7b58e38a1d2f91d4  gcc/testsuite/gdc.test/compilable/interpret3.d
  c6aab91c4e15d19895112c1cb7a06bdf  gcc/testsuite/gdc.test/compilable/json.d
! 7407813737455f3fdad5c5a54a3a726d  gcc/testsuite/gdc.test/compilable/line.d
  a3c24afe0733ea3b2f5afb6b064e3a71  gcc/testsuite/gdc.test/compilable/noderef.d
  7ed5841c3784701ea3f0a4934090ba05  gcc/testsuite/gdc.test/compilable/nogc.d
  c87c15c1a87df8b9292800c22fb9d727  gcc/testsuite/gdc.test/compilable/pr9471.d
  4748d13783a7ef11c04ffef94e96bd31  gcc/testsuite/gdc.test/compilable/protattr.d
  7c8b39e0a49ee794e97dc3002d04cc7f  gcc/testsuite/gdc.test/compilable/protection.d
--- 70193,70215 ----
  1d8fc89265fe679561568985cc3facff  gcc/testsuite/gdc.test/compilable/imports/udamodule2.d
  2f1dca8de92811ccae257ea9c1e85b24  gcc/testsuite/gdc.test/compilable/imports/udamodule2a.d
  d9ebf67fd237bed148f1afc04cc9917e  gcc/testsuite/gdc.test/compilable/imports/wax16798.d
! a78a216eb2cdbd38395c7016969b121a  gcc/testsuite/gdc.test/compilable/interpret3.d
! 6e068695167c49b9b52e90713727a4b2  gcc/testsuite/gdc.test/compilable/isZeroInit.d
! e49c5f270dc2dffc4d87884435af12a8  gcc/testsuite/gdc.test/compilable/isreturnonstack.d
! bd06f86cfa7b2ed9fb29a58c57efdcfc  gcc/testsuite/gdc.test/compilable/issue16020.d
! c0f06c2e74f038183aab3cc3cf221b3e  gcc/testsuite/gdc.test/compilable/issue16044.d
! 04daeea9c5ccfa61f11dd3e1dbb1285a  gcc/testsuite/gdc.test/compilable/issue20915.d
! 824521433520512f9e1e945e072c8fa7  gcc/testsuite/gdc.test/compilable/issue21614.d
! 2b921474dbafdc4c189e8fa7d19a3c8f  gcc/testsuite/gdc.test/compilable/issue21726.d
! d44936b3c2d3be5638fdb042d88ff414  gcc/testsuite/gdc.test/compilable/issue21813a.d
! 7de586b40f181e8f04752192dc7ecd63  gcc/testsuite/gdc.test/compilable/issue21813b.d
  c6aab91c4e15d19895112c1cb7a06bdf  gcc/testsuite/gdc.test/compilable/json.d
! 94339cd8edf453f83498c971fb3e35f1  gcc/testsuite/gdc.test/compilable/line.d
! fd6c0ea82f862c2addd56e1a1ce05c4c  gcc/testsuite/gdc.test/compilable/mixintype.d
! f17f2e0a4d197f3794245015f6465b40  gcc/testsuite/gdc.test/compilable/mixintype2.d
  a3c24afe0733ea3b2f5afb6b064e3a71  gcc/testsuite/gdc.test/compilable/noderef.d
  7ed5841c3784701ea3f0a4934090ba05  gcc/testsuite/gdc.test/compilable/nogc.d
+ a7df306b420c138f94dd4eec2d2be022  gcc/testsuite/gdc.test/compilable/noreturn1.d
  c87c15c1a87df8b9292800c22fb9d727  gcc/testsuite/gdc.test/compilable/pr9471.d
  4748d13783a7ef11c04ffef94e96bd31  gcc/testsuite/gdc.test/compilable/protattr.d
  7c8b39e0a49ee794e97dc3002d04cc7f  gcc/testsuite/gdc.test/compilable/protection.d
*************** cb143d7698f10438d8c8cf1f61f40f48  gcc/te
*** 65555,65560 ****
--- 70217,70226 ----
  1e4827e4157819eca3d347654343a8cc  gcc/testsuite/gdc.test/compilable/protection/basic/mod1.d
  b2e98384f6bdc34ec35b5054523496a6  gcc/testsuite/gdc.test/compilable/protection/basic/tests.d
  5da1fd32dbd633a7a2cc608917b96088  gcc/testsuite/gdc.test/compilable/protection/bug/bug14275.d
+ 718cb3191a7d91bd408367ffb7200225  gcc/testsuite/gdc.test/compilable/protection/issue20796/package.d
+ e290e91d2ecd75d4576a5d55b81f25bf  gcc/testsuite/gdc.test/compilable/protection/issue21726/format/package.d
+ cf43393ac0a7e9c3bbbd8319d3b8d4e8  gcc/testsuite/gdc.test/compilable/protection/issue21726/package.d
+ 318b4f8c0db3a06aeaf02fa66d73c4ea  gcc/testsuite/gdc.test/compilable/protection/issue21726/typecons.d
  f543bf93bdfe13ab40e844d0a15e8c59  gcc/testsuite/gdc.test/compilable/protection/subpkg/explicit.d
  90b1f63820ca5118356cb851be4f040e  gcc/testsuite/gdc.test/compilable/protection/subpkg/tests.d
  bb9e006cebe601f91fae1b967d929f57  gcc/testsuite/gdc.test/compilable/protection/subpkg2/tests.d
*************** c7ca07977380bd3d0f9eed74e3db5bf0  gcc/te
*** 65586,65592 ****
  2ae48a1d24987402171d21f8e5e5da75  gcc/testsuite/gdc.test/compilable/test11237.d
  36b27b0115ddbd3e18e1eb70533f220e  gcc/testsuite/gdc.test/compilable/test11371.d
  4b0f923b35d971aaf4e5b9c473d83492  gcc/testsuite/gdc.test/compilable/test11559upgradeoptlink.d
! fc5ae64b6aa6f4afa062749325e9c249  gcc/testsuite/gdc.test/compilable/test11563.d
  ee3a3fd1ee1c8595b4ce6f1619c421ec  gcc/testsuite/gdc.test/compilable/test11656.d
  6f29e1c2c94e9aa39045848ad7a4e0bf  gcc/testsuite/gdc.test/compilable/test11824.d
  8bf0ff47ef3b2433a9fa48e24c536bc7  gcc/testsuite/gdc.test/compilable/test11914.d
--- 70252,70258 ----
  2ae48a1d24987402171d21f8e5e5da75  gcc/testsuite/gdc.test/compilable/test11237.d
  36b27b0115ddbd3e18e1eb70533f220e  gcc/testsuite/gdc.test/compilable/test11371.d
  4b0f923b35d971aaf4e5b9c473d83492  gcc/testsuite/gdc.test/compilable/test11559upgradeoptlink.d
! b86bba367b9b2eb3904aa6fe9e43d560  gcc/testsuite/gdc.test/compilable/test11563.d
  ee3a3fd1ee1c8595b4ce6f1619c421ec  gcc/testsuite/gdc.test/compilable/test11656.d
  6f29e1c2c94e9aa39045848ad7a4e0bf  gcc/testsuite/gdc.test/compilable/test11824.d
  8bf0ff47ef3b2433a9fa48e24c536bc7  gcc/testsuite/gdc.test/compilable/test11914.d
*************** ee3a3fd1ee1c8595b4ce6f1619c421ec  gcc/te
*** 65594,65611 ****
  aa89b8203af70d96610b1ce5edf18959  gcc/testsuite/gdc.test/compilable/test12009.d
  2263840551514df4600103bdd00bceb6  gcc/testsuite/gdc.test/compilable/test1238.d
  d3b477ff39dc5987d927a70762107cc0  gcc/testsuite/gdc.test/compilable/test12523.d
! 520f4e652157e2fa90f67dc2552f4971  gcc/testsuite/gdc.test/compilable/test12527.d
  e067a0ebb6b4f96385af7fbe579abb10  gcc/testsuite/gdc.test/compilable/test12558.d
! 956744cfbcd9b4a119546bb9bfaa6ac0  gcc/testsuite/gdc.test/compilable/test12567a.d
! ce84876a4a65a65dad202fef1902a177  gcc/testsuite/gdc.test/compilable/test12567b.d
  ae162b35772a38fd66ccd19b1740216d  gcc/testsuite/gdc.test/compilable/test12567c.d
! 9007eedcd270c14ba1db878984df1579  gcc/testsuite/gdc.test/compilable/test12567d.d
! bd0e4715340e4e14f620824429638c56  gcc/testsuite/gdc.test/compilable/test12567e.d
  5e9c46706cb87ea4f43c2004d6edc97e  gcc/testsuite/gdc.test/compilable/test12593.d
  d8c4af0849e8c816c0d29a332900db29  gcc/testsuite/gdc.test/compilable/test12624.d
  f77e1a7bbd7be92c09cd140d5df25033  gcc/testsuite/gdc.test/compilable/test12967.d
  e44f27d1d95c5d1478777b04a067a78a  gcc/testsuite/gdc.test/compilable/test13008.d
! ab19c03fe76effa14d92434dc8843fc6  gcc/testsuite/gdc.test/compilable/test13053.d
  a8da728233622f4542eebe10ee1a205b  gcc/testsuite/gdc.test/compilable/test13193.d
  4cef32cd92e1c911f17e136d7d1d24c6  gcc/testsuite/gdc.test/compilable/test13194.d
  5b6ed7ef20dab898b53e5fd4c21cc572  gcc/testsuite/gdc.test/compilable/test13226.d
--- 70260,70277 ----
  aa89b8203af70d96610b1ce5edf18959  gcc/testsuite/gdc.test/compilable/test12009.d
  2263840551514df4600103bdd00bceb6  gcc/testsuite/gdc.test/compilable/test1238.d
  d3b477ff39dc5987d927a70762107cc0  gcc/testsuite/gdc.test/compilable/test12523.d
! db1e313c00a3b1e5993e14854ad3e54b  gcc/testsuite/gdc.test/compilable/test12527.d
  e067a0ebb6b4f96385af7fbe579abb10  gcc/testsuite/gdc.test/compilable/test12558.d
! fe8050ee6ba1d00b1162bdbe9a91a793  gcc/testsuite/gdc.test/compilable/test12567a.d
! 7ee0b8197bef137c3c9c71bee19b4dd8  gcc/testsuite/gdc.test/compilable/test12567b.d
  ae162b35772a38fd66ccd19b1740216d  gcc/testsuite/gdc.test/compilable/test12567c.d
! acc76500ba6cdb4b4a43d134c4ba9368  gcc/testsuite/gdc.test/compilable/test12567d.d
! ce76c760f83b35d99d7529bd025649c5  gcc/testsuite/gdc.test/compilable/test12567e.d
  5e9c46706cb87ea4f43c2004d6edc97e  gcc/testsuite/gdc.test/compilable/test12593.d
  d8c4af0849e8c816c0d29a332900db29  gcc/testsuite/gdc.test/compilable/test12624.d
  f77e1a7bbd7be92c09cd140d5df25033  gcc/testsuite/gdc.test/compilable/test12967.d
  e44f27d1d95c5d1478777b04a067a78a  gcc/testsuite/gdc.test/compilable/test13008.d
! d8a24ba15faf351dc5548d5c73aa838f  gcc/testsuite/gdc.test/compilable/test13053.d
  a8da728233622f4542eebe10ee1a205b  gcc/testsuite/gdc.test/compilable/test13193.d
  4cef32cd92e1c911f17e136d7d1d24c6  gcc/testsuite/gdc.test/compilable/test13194.d
  5b6ed7ef20dab898b53e5fd4c21cc572  gcc/testsuite/gdc.test/compilable/test13226.d
*************** f2017b8b0562f2c175e960e0aef79108  gcc/te
*** 65619,65625 ****
  1be21fd49f3ca4b5339bb36a5ac8ad36  gcc/testsuite/gdc.test/compilable/test13902.d
  cc3e0ffea35045c1ac47ca938e2bc10a  gcc/testsuite/gdc.test/compilable/test14275.d
  7939b994deccb3a91fcf0075636da4d7  gcc/testsuite/gdc.test/compilable/test14317.d
! 03588ea84f324040a7007de9cc14adb1  gcc/testsuite/gdc.test/compilable/test14375.d
  b085aa7f3a662c58fc0f17a0d42225e4  gcc/testsuite/gdc.test/compilable/test14528.d
  76058ac25d88f09249c821aebd764cd2  gcc/testsuite/gdc.test/compilable/test14666.d
  d08eb915c0915356c5a6a6cfb65fc12c  gcc/testsuite/gdc.test/compilable/test14747.d
--- 70285,70291 ----
  1be21fd49f3ca4b5339bb36a5ac8ad36  gcc/testsuite/gdc.test/compilable/test13902.d
  cc3e0ffea35045c1ac47ca938e2bc10a  gcc/testsuite/gdc.test/compilable/test14275.d
  7939b994deccb3a91fcf0075636da4d7  gcc/testsuite/gdc.test/compilable/test14317.d
! 32d2057282c7b25c5d89cd7d3a63e87f  gcc/testsuite/gdc.test/compilable/test14375.d
  b085aa7f3a662c58fc0f17a0d42225e4  gcc/testsuite/gdc.test/compilable/test14528.d
  76058ac25d88f09249c821aebd764cd2  gcc/testsuite/gdc.test/compilable/test14666.d
  d08eb915c0915356c5a6a6cfb65fc12c  gcc/testsuite/gdc.test/compilable/test14747.d
*************** d08eb915c0915356c5a6a6cfb65fc12c  gcc/te
*** 65627,65638 ****
  ce3583d666a02f9aeb875d1e3214809a  gcc/testsuite/gdc.test/compilable/test14838.d
  fd79d2256c9f3b641f6858510f031dec  gcc/testsuite/gdc.test/compilable/test14962.d
  1413a891a6e34f5017ae82469f21b4d5  gcc/testsuite/gdc.test/compilable/test14973.d
! de2e9f3c7fb886a07c501882d8e6d67c  gcc/testsuite/gdc.test/compilable/test15019.d
  5dca66e0d47bbc28c2c8f9f77fb0facd  gcc/testsuite/gdc.test/compilable/test15056.d
  eab40ae950bf17c4552cebb7803a815a  gcc/testsuite/gdc.test/compilable/test15150.d
! 81f9b151f6aeae8bff13aaeac6ff71d1  gcc/testsuite/gdc.test/compilable/test15177.d
! b3e8face950efc4ac772a9d032610838  gcc/testsuite/gdc.test/compilable/test15326.d
  097e328e3672bc765b560bf503e4469a  gcc/testsuite/gdc.test/compilable/test1537.d
  858fa3bf805f382b33daa95ed35cb945  gcc/testsuite/gdc.test/compilable/test15389_x.d
  4a115c1a2460c7f635d2c47571f9d91d  gcc/testsuite/gdc.test/compilable/test15389_y.d
  4dc72f84f8d23f54ba99ff64df68e011  gcc/testsuite/gdc.test/compilable/test15402.d
--- 70293,70304 ----
  ce3583d666a02f9aeb875d1e3214809a  gcc/testsuite/gdc.test/compilable/test14838.d
  fd79d2256c9f3b641f6858510f031dec  gcc/testsuite/gdc.test/compilable/test14962.d
  1413a891a6e34f5017ae82469f21b4d5  gcc/testsuite/gdc.test/compilable/test14973.d
! c50d386fcda82ef5845c0707d83ec2b4  gcc/testsuite/gdc.test/compilable/test15019.d
  5dca66e0d47bbc28c2c8f9f77fb0facd  gcc/testsuite/gdc.test/compilable/test15056.d
  eab40ae950bf17c4552cebb7803a815a  gcc/testsuite/gdc.test/compilable/test15150.d
! d787dea08d42bcb0bf75bdf7f07b8678  gcc/testsuite/gdc.test/compilable/test15326.d
  097e328e3672bc765b560bf503e4469a  gcc/testsuite/gdc.test/compilable/test1537.d
+ 77cb2da5ba8893d94564c72f5ea0746b  gcc/testsuite/gdc.test/compilable/test15371.d
  858fa3bf805f382b33daa95ed35cb945  gcc/testsuite/gdc.test/compilable/test15389_x.d
  4a115c1a2460c7f635d2c47571f9d91d  gcc/testsuite/gdc.test/compilable/test15389_y.d
  4dc72f84f8d23f54ba99ff64df68e011  gcc/testsuite/gdc.test/compilable/test15402.d
*************** b2450b3d68fb07bbb35fed7e9a7d4049  gcc/te
*** 65648,65659 ****
  9c2d89471d66a86597229b8cd11f7adc  gcc/testsuite/gdc.test/compilable/test15762.d
  e5debefd5153459f5c83f1766a1dd786  gcc/testsuite/gdc.test/compilable/test15780.d
  f53698308a86147743b2f30c9ed83654  gcc/testsuite/gdc.test/compilable/test15784.d
! 6e093979639221b13037ec6f29154584  gcc/testsuite/gdc.test/compilable/test15785.d
  8c1e0b03168047bcefc3c5d3fc226cc2  gcc/testsuite/gdc.test/compilable/test15802.d
! 8bf79352b28da48d5c7b7767530e9dab  gcc/testsuite/gdc.test/compilable/test15856.d
  048ffd1aa4f48b114ef74fb21468114c  gcc/testsuite/gdc.test/compilable/test15898.d
  02c1a0f9016db23dd530e09cb42e25d6  gcc/testsuite/gdc.test/compilable/test15907.d
! dbd48d65765c5c821257097785717478  gcc/testsuite/gdc.test/compilable/test15925.d
  a73af7de316f24698871d03a878726ab  gcc/testsuite/gdc.test/compilable/test16031.d
  f5715ae1f1a591f0b8ca66abc7759df8  gcc/testsuite/gdc.test/compilable/test16080.d
  c66d78d3bf4e71c925116093469fe79d  gcc/testsuite/gdc.test/compilable/test16083.d
--- 70314,70325 ----
  9c2d89471d66a86597229b8cd11f7adc  gcc/testsuite/gdc.test/compilable/test15762.d
  e5debefd5153459f5c83f1766a1dd786  gcc/testsuite/gdc.test/compilable/test15780.d
  f53698308a86147743b2f30c9ed83654  gcc/testsuite/gdc.test/compilable/test15784.d
! 0c129b718ba136b2dcf9c0c1afde9909  gcc/testsuite/gdc.test/compilable/test15785.d
  8c1e0b03168047bcefc3c5d3fc226cc2  gcc/testsuite/gdc.test/compilable/test15802.d
! 184590519d9f3a140cfcb9c4171e0c37  gcc/testsuite/gdc.test/compilable/test15856.d
  048ffd1aa4f48b114ef74fb21468114c  gcc/testsuite/gdc.test/compilable/test15898.d
  02c1a0f9016db23dd530e09cb42e25d6  gcc/testsuite/gdc.test/compilable/test15907.d
! 1749dade162de62938f9212495a69a6e  gcc/testsuite/gdc.test/compilable/test16002.d
  a73af7de316f24698871d03a878726ab  gcc/testsuite/gdc.test/compilable/test16031.d
  f5715ae1f1a591f0b8ca66abc7759df8  gcc/testsuite/gdc.test/compilable/test16080.d
  c66d78d3bf4e71c925116093469fe79d  gcc/testsuite/gdc.test/compilable/test16083.d
*************** dbb21fcb4c8117b8e86e342839b6ea86  gcc/te
*** 65665,65671 ****
  4141477ca72a5096c3206adef57a58ea  gcc/testsuite/gdc.test/compilable/test16340.d
  7cdc1bdcfc88b0bff153fa73281ccc37  gcc/testsuite/gdc.test/compilable/test16348.d
  cfe3d2caeea5168de9cdeefcc9b037d7  gcc/testsuite/gdc.test/compilable/test16460.d
! a209384623def89c6f0cf632c218848c  gcc/testsuite/gdc.test/compilable/test16525.d
  e014faa15d07ab8af6f94fadcc30894c  gcc/testsuite/gdc.test/compilable/test16540.d
  a4f9e5e07caf5b52d346ebffe86d8357  gcc/testsuite/gdc.test/compilable/test16563.d
  69cf269206c6452ea5094330e2a04c25  gcc/testsuite/gdc.test/compilable/test16570.d
--- 70331,70337 ----
  4141477ca72a5096c3206adef57a58ea  gcc/testsuite/gdc.test/compilable/test16340.d
  7cdc1bdcfc88b0bff153fa73281ccc37  gcc/testsuite/gdc.test/compilable/test16348.d
  cfe3d2caeea5168de9cdeefcc9b037d7  gcc/testsuite/gdc.test/compilable/test16460.d
! 043a88f40b9c47c01f0a06d0baca0491  gcc/testsuite/gdc.test/compilable/test16525.d
  e014faa15d07ab8af6f94fadcc30894c  gcc/testsuite/gdc.test/compilable/test16540.d
  a4f9e5e07caf5b52d346ebffe86d8357  gcc/testsuite/gdc.test/compilable/test16563.d
  69cf269206c6452ea5094330e2a04c25  gcc/testsuite/gdc.test/compilable/test16570.d
*************** cfa6c5a55671befb5292bf5b134401f3  gcc/te
*** 65679,65710 ****
  76a8c2ff809f67add7c78a04a0f62acb  gcc/testsuite/gdc.test/compilable/test17057.d
  b7bee84af0ad6009095814d5a080d445  gcc/testsuite/gdc.test/compilable/test17059.d
  e87f48da66ddb31559c11628da10640e  gcc/testsuite/gdc.test/compilable/test17130.d
! 113d68397291a4dd655592add54d575f  gcc/testsuite/gdc.test/compilable/test17143.d
  603435cff972cf545cbfd4cbaf7675c6  gcc/testsuite/gdc.test/compilable/test17168.d
  9f322d85f59db5aacfceee570828f699  gcc/testsuite/gdc.test/compilable/test17215.d
  34a4f761ce44732e8d98f2154d655148  gcc/testsuite/gdc.test/compilable/test17339.d
  21c9a8cfce4024f66cda8de89ebf5fcf  gcc/testsuite/gdc.test/compilable/test17349.d
  68e1dbe483cf3a2ae1a41c5106689102  gcc/testsuite/gdc.test/compilable/test17352.d
  2c4fd5be03468f47c86571d4effcafb0  gcc/testsuite/gdc.test/compilable/test17399.d
! 02aeae0012cbf2e8046194a6b37e6e8a  gcc/testsuite/gdc.test/compilable/test17419.d
  16510946709a4629fee80180edb72d19  gcc/testsuite/gdc.test/compilable/test17421.d
  0b1f78a2d59d7b5e477c643a79e82bb0  gcc/testsuite/gdc.test/compilable/test17468.d
  db825134716aeb13919d0b436e6742eb  gcc/testsuite/gdc.test/compilable/test1754.d
  82f3a0c34cec550e628b5b506e885d83  gcc/testsuite/gdc.test/compilable/test17545.d
  e5eeea561efd582d3bac3624383bcdc8  gcc/testsuite/gdc.test/compilable/test17548.d
  8ae0157007a2b73f8e3724118fcdff99  gcc/testsuite/gdc.test/compilable/test17590.d
  f9645959365eb348f2c096cd81f2e5d5  gcc/testsuite/gdc.test/compilable/test17819.d
  cf778b67822c952f319386105c4a8e93  gcc/testsuite/gdc.test/compilable/test1878a.d
  bb6d980d18f268c4653a4b3f6ef90dc0  gcc/testsuite/gdc.test/compilable/test18871.d
  09d8521f98b3e68044c9a3bb9b194ba2  gcc/testsuite/gdc.test/compilable/test19574.d
  65cd18feb048be6925b156e0fb84c586  gcc/testsuite/gdc.test/compilable/test19609.d
  6fbdb3bc8df45dce6f1cca2e1c65403f  gcc/testsuite/gdc.test/compilable/test19778.d
  6959520dbe36e098ae727a4a9cdfdfe3  gcc/testsuite/gdc.test/compilable/test19912.d
  bd3b792f2e9fae4293f32a0195335936  gcc/testsuite/gdc.test/compilable/test19941.d
  04232045b228e791a39bfb15136a8ba9  gcc/testsuite/gdc.test/compilable/test21299a.d
  486de3c5e0f7578f63bb5307aa28bab2  gcc/testsuite/gdc.test/compilable/test21299b.d
  f7ebbab88f0a4f86e71b06e130f593ee  gcc/testsuite/gdc.test/compilable/test21299c.d
  effd503ab143f07a377f69a6abd2e2ab  gcc/testsuite/gdc.test/compilable/test21299d.d
  8bbe6fdb201585c810b1ed76e34ddba3  gcc/testsuite/gdc.test/compilable/test25.d
  089e65013864f2a6266955ee32c413a9  gcc/testsuite/gdc.test/compilable/test2991.d
  e1042e9f6638c3d67840ae4db9908d15  gcc/testsuite/gdc.test/compilable/test313a.d
--- 70345,70389 ----
  76a8c2ff809f67add7c78a04a0f62acb  gcc/testsuite/gdc.test/compilable/test17057.d
  b7bee84af0ad6009095814d5a080d445  gcc/testsuite/gdc.test/compilable/test17059.d
  e87f48da66ddb31559c11628da10640e  gcc/testsuite/gdc.test/compilable/test17130.d
! 99bc9dc60e006b1ed64fc02b6caa801d  gcc/testsuite/gdc.test/compilable/test17143.d
  603435cff972cf545cbfd4cbaf7675c6  gcc/testsuite/gdc.test/compilable/test17168.d
  9f322d85f59db5aacfceee570828f699  gcc/testsuite/gdc.test/compilable/test17215.d
  34a4f761ce44732e8d98f2154d655148  gcc/testsuite/gdc.test/compilable/test17339.d
  21c9a8cfce4024f66cda8de89ebf5fcf  gcc/testsuite/gdc.test/compilable/test17349.d
  68e1dbe483cf3a2ae1a41c5106689102  gcc/testsuite/gdc.test/compilable/test17352.d
  2c4fd5be03468f47c86571d4effcafb0  gcc/testsuite/gdc.test/compilable/test17399.d
! 3ec49b05c05f638b43f2e2ca476dff49  gcc/testsuite/gdc.test/compilable/test17419.d
  16510946709a4629fee80180edb72d19  gcc/testsuite/gdc.test/compilable/test17421.d
  0b1f78a2d59d7b5e477c643a79e82bb0  gcc/testsuite/gdc.test/compilable/test17468.d
  db825134716aeb13919d0b436e6742eb  gcc/testsuite/gdc.test/compilable/test1754.d
  82f3a0c34cec550e628b5b506e885d83  gcc/testsuite/gdc.test/compilable/test17545.d
  e5eeea561efd582d3bac3624383bcdc8  gcc/testsuite/gdc.test/compilable/test17548.d
  8ae0157007a2b73f8e3724118fcdff99  gcc/testsuite/gdc.test/compilable/test17590.d
+ 7de2b38dc4a5590a892e1780e09185d5  gcc/testsuite/gdc.test/compilable/test17791.d
  f9645959365eb348f2c096cd81f2e5d5  gcc/testsuite/gdc.test/compilable/test17819.d
+ 8f88e1e045f2404c92df36f8f97af09d  gcc/testsuite/gdc.test/compilable/test17908.d
+ e2fe66eab97a7b69aa09a30ec570ce09  gcc/testsuite/gdc.test/compilable/test17991.d
  cf778b67822c952f319386105c4a8e93  gcc/testsuite/gdc.test/compilable/test1878a.d
  bb6d980d18f268c4653a4b3f6ef90dc0  gcc/testsuite/gdc.test/compilable/test18871.d
+ f1fb0fc76744ec9a244711207ad19617  gcc/testsuite/gdc.test/compilable/test19145.d
+ fc41777a1b9816ebf55ae1456219acef  gcc/testsuite/gdc.test/compilable/test19292.d
  09d8521f98b3e68044c9a3bb9b194ba2  gcc/testsuite/gdc.test/compilable/test19574.d
  65cd18feb048be6925b156e0fb84c586  gcc/testsuite/gdc.test/compilable/test19609.d
  6fbdb3bc8df45dce6f1cca2e1c65403f  gcc/testsuite/gdc.test/compilable/test19778.d
  6959520dbe36e098ae727a4a9cdfdfe3  gcc/testsuite/gdc.test/compilable/test19912.d
  bd3b792f2e9fae4293f32a0195335936  gcc/testsuite/gdc.test/compilable/test19941.d
+ acf65fea78fda931df435e170b4ff10e  gcc/testsuite/gdc.test/compilable/test20151a.d
+ 9c9235445cfb7a0250eb9c627c45a97d  gcc/testsuite/gdc.test/compilable/test20280.d
+ 5d7a8d265f4f29667ecde34793879f65  gcc/testsuite/gdc.test/compilable/test20530.d
+ 06b732fa6a39c017318cbc16939f52fa  gcc/testsuite/gdc.test/compilable/test20537.d
+ d319ff042032f8a9da6b7cb00b09b7cb  gcc/testsuite/gdc.test/compilable/test20692.d
+ 14169fbc0bdff72551f90f07070fb611  gcc/testsuite/gdc.test/compilable/test20894.d
  04232045b228e791a39bfb15136a8ba9  gcc/testsuite/gdc.test/compilable/test21299a.d
  486de3c5e0f7578f63bb5307aa28bab2  gcc/testsuite/gdc.test/compilable/test21299b.d
  f7ebbab88f0a4f86e71b06e130f593ee  gcc/testsuite/gdc.test/compilable/test21299c.d
  effd503ab143f07a377f69a6abd2e2ab  gcc/testsuite/gdc.test/compilable/test21299d.d
+ 6aae9ab24e30cc1449c46abe03e9439e  gcc/testsuite/gdc.test/compilable/test21501a.d
+ e5b88d27b36ae497e0682fa1afcc06be  gcc/testsuite/gdc.test/compilable/test21812.d
  8bbe6fdb201585c810b1ed76e34ddba3  gcc/testsuite/gdc.test/compilable/test25.d
  089e65013864f2a6266955ee32c413a9  gcc/testsuite/gdc.test/compilable/test2991.d
  e1042e9f6638c3d67840ae4db9908d15  gcc/testsuite/gdc.test/compilable/test313a.d
*************** d4b999b0fd4324b835cb486894bd78cb  gcc/te
*** 65755,65761 ****
  ca4ce2d0b5528a4c55763a50fbd9a7f4  gcc/testsuite/gdc.test/compilable/test7524.d
  7e58e715e6c8944700015dd56c2deb1e  gcc/testsuite/gdc.test/compilable/test7569.d
  33daf6783d4ac244f6ddea135ab6b8e0  gcc/testsuite/gdc.test/compilable/test7754.d
! 5ec057633fb961a0c677b0e90c93b939  gcc/testsuite/gdc.test/compilable/test7815.d
  96010ac8f5d0782cfcfabcebef14b0e5  gcc/testsuite/gdc.test/compilable/test7886.d
  a8435199449791320394887b9c443137  gcc/testsuite/gdc.test/compilable/test8038.d
  cee9201c7a4bd69b19f522144045058c  gcc/testsuite/gdc.test/compilable/test8041.d
--- 70434,70440 ----
  ca4ce2d0b5528a4c55763a50fbd9a7f4  gcc/testsuite/gdc.test/compilable/test7524.d
  7e58e715e6c8944700015dd56c2deb1e  gcc/testsuite/gdc.test/compilable/test7569.d
  33daf6783d4ac244f6ddea135ab6b8e0  gcc/testsuite/gdc.test/compilable/test7754.d
! c0cf3b5f60f2de636e3867e3f0a694e2  gcc/testsuite/gdc.test/compilable/test7815.d
  96010ac8f5d0782cfcfabcebef14b0e5  gcc/testsuite/gdc.test/compilable/test7886.d
  a8435199449791320394887b9c443137  gcc/testsuite/gdc.test/compilable/test8038.d
  cee9201c7a4bd69b19f522144045058c  gcc/testsuite/gdc.test/compilable/test8041.d
*************** a597ba18736e2d8277647febde053c99  gcc/te
*** 65777,65782 ****
--- 70456,70462 ----
  2aef5cc8d7f40103c3125d438bf7950c  gcc/testsuite/gdc.test/compilable/test8922f.d
  93d6229b1e59d52a5fc3cdf7e80a5277  gcc/testsuite/gdc.test/compilable/test8937.d
  0627b61f8b84ef5c510ab2706dc90afc  gcc/testsuite/gdc.test/compilable/test8959.d
+ 64de522104a033c6c0f428550b71f1e3  gcc/testsuite/gdc.test/compilable/test9029.d
  71b4e4a5b87ea97025e3cb3fb9935ba6  gcc/testsuite/gdc.test/compilable/test9057.d
  fce3c05e52ba370bb71301f701455a3e  gcc/testsuite/gdc.test/compilable/test9209.d
  853735f8f0165f4efc9f2d4c482a496d  gcc/testsuite/gdc.test/compilable/test9276.d
*************** ef6c76bd84f8e2989edef580992909dc  gcc/te
*** 65795,65837 ****
  514daa8f1e789fd699950ff774394fad  gcc/testsuite/gdc.test/compilable/test9672.d
  6d9250e1027b43b62079b6fe6ffabbba  gcc/testsuite/gdc.test/compilable/test9692.d
  4e8c514f4c47e8cc668194d301fadc34  gcc/testsuite/gdc.test/compilable/test9692a.d
  7cb4176d59e5ac4d838f86e21113ca02  gcc/testsuite/gdc.test/compilable/test9766.d
  3fbf8788ccc5004755c02600d5cfe84d  gcc/testsuite/gdc.test/compilable/test9818.d
  2bca302b34bae8ac0eb7ebc7c8ffa443  gcc/testsuite/gdc.test/compilable/test9919.d
! 5f9c25359a3529567ff0071ce99134b5  gcc/testsuite/gdc.test/compilable/testDIP37.d
  b5045ee9241fe56808a442eda502f850  gcc/testsuite/gdc.test/compilable/testDIP37_10302.d
  cd9664381d4f2ad5fbc9a66fe9181ece  gcc/testsuite/gdc.test/compilable/testDIP37_10354.d
  e420705f48ae28346e1d049a442dc609  gcc/testsuite/gdc.test/compilable/testDIP37_10421.d
  480977e14b349d66a15b5dd3df48a007  gcc/testsuite/gdc.test/compilable/testDIP37a.d
  0ad27aebcba2369d32c2ab7918cf7ee0  gcc/testsuite/gdc.test/compilable/testDIP42.d
! f28508f8ece94d9a350b8482128c2a53  gcc/testsuite/gdc.test/compilable/testInference.d
  0a45f87b5748895168a16265ae526c06  gcc/testsuite/gdc.test/compilable/testVRP.d
! 65c3ff947a7c08081fd17d530cbda5cf  gcc/testsuite/gdc.test/compilable/testcheckimports.d
  884fae2d3a2e79db6286f95ee76e24a1  gcc/testsuite/gdc.test/compilable/testcontracts.d
  90ae881afba9b91b8b4855da3ef811d4  gcc/testsuite/gdc.test/compilable/testexpression.d
  165adaaca3d4cb680db8e8f7bef830af  gcc/testsuite/gdc.test/compilable/testfptr.d
  b1f00986c318bad4926fd341d2cddeaf  gcc/testsuite/gdc.test/compilable/testfwdref.d
! eeed38d4eeeafddbd79ed700b24d20b5  gcc/testsuite/gdc.test/compilable/testheader1.d
  c02ffc0ac9a2929e687a5fa20f6baf7b  gcc/testsuite/gdc.test/compilable/testheader12567a.d
  39dce732f6bc37776f5b165a305546b3  gcc/testsuite/gdc.test/compilable/testheader12567b.d
! f3204ab54ee7d64c6cef00e4625bb7d8  gcc/testsuite/gdc.test/compilable/testheader1i.d
  eaea9e80d91cc01ef5a2c338e225ff2b  gcc/testsuite/gdc.test/compilable/testheader2.d
  f85296b1f140375c5d3355992943aea6  gcc/testsuite/gdc.test/compilable/testheader2i.d
  69ab374cfa1f79747c6989ce7595abb9  gcc/testsuite/gdc.test/compilable/testheader3.d
! bf292a13096a9dc3802720e2cf2f9903  gcc/testsuite/gdc.test/compilable/testheaderudamodule.d
  4b16b0ed610cddaa5b3401be80c1ff09  gcc/testsuite/gdc.test/compilable/testimport12242.d
! 0ce69b7c715fee0998a0b5d62f45d57b  gcc/testsuite/gdc.test/compilable/testparse.d
  46ad3f53efb478e3376d36fff355d92a  gcc/testsuite/gdc.test/compilable/testpostblit.d
  592a4f2a9e7be0ac1471129c052102f0  gcc/testsuite/gdc.test/compilable/testprofile.d
! 409a0034375ee2c0e44a3348fc71b70c  gcc/testsuite/gdc.test/compilable/traits.d
  bd29edbff2b2d0dcd61f096594c27945  gcc/testsuite/gdc.test/compilable/uda.d
  7b0e202f2e54c802141cc3314ac85995  gcc/testsuite/gdc.test/compilable/udamodule1.d
  556081df6d43b7b6d9d8c44cb3eaf053  gcc/testsuite/gdc.test/compilable/udamodule2.d
  e39d851e2d6df0fb0a228237d9973bdc  gcc/testsuite/gdc.test/compilable/verrors_spec.d
  8501fa186f37976f8888700c3d696473  gcc/testsuite/gdc.test/compilable/vgc1.d
  542cbbb9d759e67dee5c8f6c8a54264f  gcc/testsuite/gdc.test/compilable/vgc2.d
  85fb914b754fd85993fe5ce8255c6ba3  gcc/testsuite/gdc.test/compilable/vgc3.d
! dfe768f4e63e4d90a410307584a8c1f1  gcc/testsuite/gdc.test/compilable/warn3882.d
  165b5fdab9bfa182ce553a03584f5525  gcc/testsuite/gdc.test/fail_compilation/aacmp10381.d
  cadd7253a279f5f74bd2c2088d510cde  gcc/testsuite/gdc.test/fail_compilation/b15875.d
  7ea1134efd7ddebf95db3eff5f8333d7  gcc/testsuite/gdc.test/fail_compilation/b17285.d
--- 70475,70519 ----
  514daa8f1e789fd699950ff774394fad  gcc/testsuite/gdc.test/compilable/test9672.d
  6d9250e1027b43b62079b6fe6ffabbba  gcc/testsuite/gdc.test/compilable/test9692.d
  4e8c514f4c47e8cc668194d301fadc34  gcc/testsuite/gdc.test/compilable/test9692a.d
+ 1cd312217e19fd4607b8b9bcd3638aef  gcc/testsuite/gdc.test/compilable/test9701.d
  7cb4176d59e5ac4d838f86e21113ca02  gcc/testsuite/gdc.test/compilable/test9766.d
  3fbf8788ccc5004755c02600d5cfe84d  gcc/testsuite/gdc.test/compilable/test9818.d
  2bca302b34bae8ac0eb7ebc7c8ffa443  gcc/testsuite/gdc.test/compilable/test9919.d
! 1d7f3d565a0c12a7ff5e38e9de9d6e9b  gcc/testsuite/gdc.test/compilable/testDIP37.d
  b5045ee9241fe56808a442eda502f850  gcc/testsuite/gdc.test/compilable/testDIP37_10302.d
  cd9664381d4f2ad5fbc9a66fe9181ece  gcc/testsuite/gdc.test/compilable/testDIP37_10354.d
  e420705f48ae28346e1d049a442dc609  gcc/testsuite/gdc.test/compilable/testDIP37_10421.d
  480977e14b349d66a15b5dd3df48a007  gcc/testsuite/gdc.test/compilable/testDIP37a.d
  0ad27aebcba2369d32c2ab7918cf7ee0  gcc/testsuite/gdc.test/compilable/testDIP42.d
! b039ed34d78c76577d4ea989edeb72e0  gcc/testsuite/gdc.test/compilable/testInference.d
  0a45f87b5748895168a16265ae526c06  gcc/testsuite/gdc.test/compilable/testVRP.d
! 4f38613138feda91b158dbc10e9dcaf8  gcc/testsuite/gdc.test/compilable/testcheckimports.d
  884fae2d3a2e79db6286f95ee76e24a1  gcc/testsuite/gdc.test/compilable/testcontracts.d
  90ae881afba9b91b8b4855da3ef811d4  gcc/testsuite/gdc.test/compilable/testexpression.d
  165adaaca3d4cb680db8e8f7bef830af  gcc/testsuite/gdc.test/compilable/testfptr.d
  b1f00986c318bad4926fd341d2cddeaf  gcc/testsuite/gdc.test/compilable/testfwdref.d
! be4b0575ef72178d5220ca3ab9c10fd1  gcc/testsuite/gdc.test/compilable/testheader1.d
  c02ffc0ac9a2929e687a5fa20f6baf7b  gcc/testsuite/gdc.test/compilable/testheader12567a.d
  39dce732f6bc37776f5b165a305546b3  gcc/testsuite/gdc.test/compilable/testheader12567b.d
! 5bb26e9177be0f9d361403d11f62dcc8  gcc/testsuite/gdc.test/compilable/testheader1i.d
  eaea9e80d91cc01ef5a2c338e225ff2b  gcc/testsuite/gdc.test/compilable/testheader2.d
  f85296b1f140375c5d3355992943aea6  gcc/testsuite/gdc.test/compilable/testheader2i.d
  69ab374cfa1f79747c6989ce7595abb9  gcc/testsuite/gdc.test/compilable/testheader3.d
! 00df08f9c653e9173d6f89d015ec3de9  gcc/testsuite/gdc.test/compilable/testheaderudamodule.d
  4b16b0ed610cddaa5b3401be80c1ff09  gcc/testsuite/gdc.test/compilable/testimport12242.d
! 9043c333eeb6c581f7a20b1d3f1ec095  gcc/testsuite/gdc.test/compilable/testparse.d
  46ad3f53efb478e3376d36fff355d92a  gcc/testsuite/gdc.test/compilable/testpostblit.d
  592a4f2a9e7be0ac1471129c052102f0  gcc/testsuite/gdc.test/compilable/testprofile.d
! cd43d03de3e15e318db4c71d6e402784  gcc/testsuite/gdc.test/compilable/traits.d
  bd29edbff2b2d0dcd61f096594c27945  gcc/testsuite/gdc.test/compilable/uda.d
  7b0e202f2e54c802141cc3314ac85995  gcc/testsuite/gdc.test/compilable/udamodule1.d
  556081df6d43b7b6d9d8c44cb3eaf053  gcc/testsuite/gdc.test/compilable/udamodule2.d
+ ac993c7821afdba5c3660dcade468b06  gcc/testsuite/gdc.test/compilable/vcg-ast.d
  e39d851e2d6df0fb0a228237d9973bdc  gcc/testsuite/gdc.test/compilable/verrors_spec.d
  8501fa186f37976f8888700c3d696473  gcc/testsuite/gdc.test/compilable/vgc1.d
  542cbbb9d759e67dee5c8f6c8a54264f  gcc/testsuite/gdc.test/compilable/vgc2.d
  85fb914b754fd85993fe5ce8255c6ba3  gcc/testsuite/gdc.test/compilable/vgc3.d
! 864e8c030bf971afa8a907d9e654b7ed  gcc/testsuite/gdc.test/compilable/warn3882.d
  165b5fdab9bfa182ce553a03584f5525  gcc/testsuite/gdc.test/fail_compilation/aacmp10381.d
  cadd7253a279f5f74bd2c2088d510cde  gcc/testsuite/gdc.test/fail_compilation/b15875.d
  7ea1134efd7ddebf95db3eff5f8333d7  gcc/testsuite/gdc.test/fail_compilation/b17285.d
*************** cadd7253a279f5f74bd2c2088d510cde  gcc/te
*** 65840,65866 ****
  b53cb85b8cc301a3c81e4d559b329709  gcc/testsuite/gdc.test/fail_compilation/b19717.d
  7054708c6f3abd7556490910fdefb8dd  gcc/testsuite/gdc.test/fail_compilation/b19717a.d
  7364127e88c423b986480406feabefb1  gcc/testsuite/gdc.test/fail_compilation/b3841.d
  39ffa560217f81dec6d2733547b17845  gcc/testsuite/gdc.test/fail_compilation/bug4283.d
! ac5afdc9d57ca9a6c58f8d20f72f5210  gcc/testsuite/gdc.test/fail_compilation/bug5.d
! 8787bb76ca306404e1aa89cad9481081  gcc/testsuite/gdc.test/fail_compilation/bug5b.d
! def90823c2e3775b985c0d58d6f7329a  gcc/testsuite/gdc.test/fail_compilation/bug8150a.d
! 51c682c4c51392420c099853725f97b8  gcc/testsuite/gdc.test/fail_compilation/bug8150b.d
  a01edcbcb98605c3a277d6b0878877c6  gcc/testsuite/gdc.test/fail_compilation/bug8891.d
  1942044f0f053eea8fc8572c50ee4fe1  gcc/testsuite/gdc.test/fail_compilation/cerrors.d
! 5a48eb4c5b12b5a0feb3caa9532737e1  gcc/testsuite/gdc.test/fail_compilation/checkimports1a.d
! 3611ce93255c894c6f4a9dd7cf1ed19b  gcc/testsuite/gdc.test/fail_compilation/checkimports1b.d
! 7e8d671e7d78b2d81f031d368eaec516  gcc/testsuite/gdc.test/fail_compilation/checkimports1c.d
! 0ee6df3ff66fc5148b4ab7c8b8a7137f  gcc/testsuite/gdc.test/fail_compilation/checkimports2a.d
! 32cd5809ed9e4f4b2d7ea510fc6454b1  gcc/testsuite/gdc.test/fail_compilation/checkimports2b.d
! 6e2860c0809560b3cc78322ed9ad4c72  gcc/testsuite/gdc.test/fail_compilation/checkimports2c.d
! 147f0cca9ac86eae24993aa8377ab0d9  gcc/testsuite/gdc.test/fail_compilation/checkimports3.d
  751f2fba95db8acf8ccd0b4c8111d7d4  gcc/testsuite/gdc.test/fail_compilation/circ10280.d
  783eaa9058efd0648a15fb96912011f2  gcc/testsuite/gdc.test/fail_compilation/class1.d
  a05cfe065e90eab65304e944c301021e  gcc/testsuite/gdc.test/fail_compilation/class2.d
  32aac86bd8c4d94a295343aa30605f39  gcc/testsuite/gdc.test/fail_compilation/commaexp.d
  114172cc5992eea9dd53e01013f8efe0  gcc/testsuite/gdc.test/fail_compilation/cppeh1.d
  928d45bd54111a5e63e6cbd42dc55481  gcc/testsuite/gdc.test/fail_compilation/cppeh2.d
! 697d85652b9ee8c50a5e3ccb9f9f3256  gcc/testsuite/gdc.test/fail_compilation/cppmangle.d
  09fafa0fc724c1d36a8985045b670632  gcc/testsuite/gdc.test/fail_compilation/ctfe10989.d
  c6d86b9bae7d2bff366217de79367270  gcc/testsuite/gdc.test/fail_compilation/ctfe10995.d
  357f62f9cbecbe56f3283e9667af2311  gcc/testsuite/gdc.test/fail_compilation/ctfe11467.d
--- 70522,70548 ----
  b53cb85b8cc301a3c81e4d559b329709  gcc/testsuite/gdc.test/fail_compilation/b19717.d
  7054708c6f3abd7556490910fdefb8dd  gcc/testsuite/gdc.test/fail_compilation/b19717a.d
  7364127e88c423b986480406feabefb1  gcc/testsuite/gdc.test/fail_compilation/b3841.d
+ d1db25cf163ece2931f42ad49d0f807d  gcc/testsuite/gdc.test/fail_compilation/bug15613.d
+ 181ad5754284edd966371d536b78a9d3  gcc/testsuite/gdc.test/fail_compilation/bug16165.d
  39ffa560217f81dec6d2733547b17845  gcc/testsuite/gdc.test/fail_compilation/bug4283.d
! d4325d85a0c155bd17755c5f500c4f3f  gcc/testsuite/gdc.test/fail_compilation/bug5.d
! b2649fdb47e46ab936f48bc5e4c40ebf  gcc/testsuite/gdc.test/fail_compilation/bug5b.d
! 7c8f70d1c1a7f21bc86a696e3baa5fbb  gcc/testsuite/gdc.test/fail_compilation/bug8150a.d
! ba5d1dc33a86fad78224b10af10e8845  gcc/testsuite/gdc.test/fail_compilation/bug8150b.d
  a01edcbcb98605c3a277d6b0878877c6  gcc/testsuite/gdc.test/fail_compilation/bug8891.d
+ 637f674b209b15267168f701b31413ff  gcc/testsuite/gdc.test/fail_compilation/bug9631.d
  1942044f0f053eea8fc8572c50ee4fe1  gcc/testsuite/gdc.test/fail_compilation/cerrors.d
! 3929976df9435672ca8cad46466d7cb6  gcc/testsuite/gdc.test/fail_compilation/checkimports2a.d
! 523e257c894dc949d7620a563551b9a2  gcc/testsuite/gdc.test/fail_compilation/checkimports2b.d
! 623eb3428893616ed5edb78badd0a103  gcc/testsuite/gdc.test/fail_compilation/checkimports2c.d
! 251a02d3dfb01ccd8bb885928ff25722  gcc/testsuite/gdc.test/fail_compilation/chkformat.d
  751f2fba95db8acf8ccd0b4c8111d7d4  gcc/testsuite/gdc.test/fail_compilation/circ10280.d
  783eaa9058efd0648a15fb96912011f2  gcc/testsuite/gdc.test/fail_compilation/class1.d
  a05cfe065e90eab65304e944c301021e  gcc/testsuite/gdc.test/fail_compilation/class2.d
  32aac86bd8c4d94a295343aa30605f39  gcc/testsuite/gdc.test/fail_compilation/commaexp.d
  114172cc5992eea9dd53e01013f8efe0  gcc/testsuite/gdc.test/fail_compilation/cppeh1.d
  928d45bd54111a5e63e6cbd42dc55481  gcc/testsuite/gdc.test/fail_compilation/cppeh2.d
! 778f3466ba1a524e911c1f3c0df5cd7e  gcc/testsuite/gdc.test/fail_compilation/cppmangle.d
  09fafa0fc724c1d36a8985045b670632  gcc/testsuite/gdc.test/fail_compilation/ctfe10989.d
  c6d86b9bae7d2bff366217de79367270  gcc/testsuite/gdc.test/fail_compilation/ctfe10995.d
  357f62f9cbecbe56f3283e9667af2311  gcc/testsuite/gdc.test/fail_compilation/ctfe11467.d
*************** ac6c56f06af1d3e5d294f6ccb9fdce3a  gcc/te
*** 65878,65888 ****
  f0a124358880c8247491b591c08b7151  gcc/testsuite/gdc.test/fail_compilation/diag10089.d
  3fcd1e3331ac05c834f6cd8f191a668c  gcc/testsuite/gdc.test/fail_compilation/diag10099.d
  be8886bb9b20d8ff1c03f99ab846cf8c  gcc/testsuite/gdc.test/fail_compilation/diag10141.d
! b230a20961e343ddc3591d60866b4203  gcc/testsuite/gdc.test/fail_compilation/diag10169.d
  c8b81e8d799716ffe482b951a7a5784c  gcc/testsuite/gdc.test/fail_compilation/diag10221.d
  95a3eab7c2b730bb39cc59728912d49b  gcc/testsuite/gdc.test/fail_compilation/diag10221a.d
  6c58693349876052c7c23d66b24c8366  gcc/testsuite/gdc.test/fail_compilation/diag10319.d
! 1d2a046aec82474035a8326bd46a93f0  gcc/testsuite/gdc.test/fail_compilation/diag10327.d
  8c5aee5c8821623c5fa500cc7b794ab5  gcc/testsuite/gdc.test/fail_compilation/diag10359.d
  7126236324d78eaaae0b3addc201bd48  gcc/testsuite/gdc.test/fail_compilation/diag10405.d
  e9c199ee3e86b7d4bfcafef42365c085  gcc/testsuite/gdc.test/fail_compilation/diag10415.d
--- 70560,70570 ----
  f0a124358880c8247491b591c08b7151  gcc/testsuite/gdc.test/fail_compilation/diag10089.d
  3fcd1e3331ac05c834f6cd8f191a668c  gcc/testsuite/gdc.test/fail_compilation/diag10099.d
  be8886bb9b20d8ff1c03f99ab846cf8c  gcc/testsuite/gdc.test/fail_compilation/diag10141.d
! 5e256dc04a7a87e77f9021d17d447b3e  gcc/testsuite/gdc.test/fail_compilation/diag10169.d
  c8b81e8d799716ffe482b951a7a5784c  gcc/testsuite/gdc.test/fail_compilation/diag10221.d
  95a3eab7c2b730bb39cc59728912d49b  gcc/testsuite/gdc.test/fail_compilation/diag10221a.d
  6c58693349876052c7c23d66b24c8366  gcc/testsuite/gdc.test/fail_compilation/diag10319.d
! 96b973d666f57e35a415efff263ac306  gcc/testsuite/gdc.test/fail_compilation/diag10327.d
  8c5aee5c8821623c5fa500cc7b794ab5  gcc/testsuite/gdc.test/fail_compilation/diag10359.d
  7126236324d78eaaae0b3addc201bd48  gcc/testsuite/gdc.test/fail_compilation/diag10405.d
  e9c199ee3e86b7d4bfcafef42365c085  gcc/testsuite/gdc.test/fail_compilation/diag10415.d
*************** c104a94bcb7e8272e34f738041148a9a  gcc/te
*** 65904,65910 ****
  9b296e312459378057729151fc0b586b  gcc/testsuite/gdc.test/fail_compilation/diag11759.d
  2ea870d94a06a87180eac8b88dfbe91f  gcc/testsuite/gdc.test/fail_compilation/diag11769.d
  cd21f58b757a4597aecb16109e045703  gcc/testsuite/gdc.test/fail_compilation/diag11819a.d
! 1e2babea77a7af9546780985871f0656  gcc/testsuite/gdc.test/fail_compilation/diag11819b.d
  252b37d75156f0fead6921ecc03b669c  gcc/testsuite/gdc.test/fail_compilation/diag11840.d
  3f37b6ce41405fc8cb25ee21e577a97c  gcc/testsuite/gdc.test/fail_compilation/diag12063.d
  065eb8f96938f2cac2e967f3a58205f5  gcc/testsuite/gdc.test/fail_compilation/diag12124.d
--- 70586,70592 ----
  9b296e312459378057729151fc0b586b  gcc/testsuite/gdc.test/fail_compilation/diag11759.d
  2ea870d94a06a87180eac8b88dfbe91f  gcc/testsuite/gdc.test/fail_compilation/diag11769.d
  cd21f58b757a4597aecb16109e045703  gcc/testsuite/gdc.test/fail_compilation/diag11819a.d
! 9445d74f8c370d3f7115d161973356cb  gcc/testsuite/gdc.test/fail_compilation/diag11819b.d
  252b37d75156f0fead6921ecc03b669c  gcc/testsuite/gdc.test/fail_compilation/diag11840.d
  3f37b6ce41405fc8cb25ee21e577a97c  gcc/testsuite/gdc.test/fail_compilation/diag12063.d
  065eb8f96938f2cac2e967f3a58205f5  gcc/testsuite/gdc.test/fail_compilation/diag12124.d
*************** e9c5b8599f55e5cea4ba4ada24203979  gcc/te
*** 65914,65926 ****
  5f628747633cc61c61aae674fa0ce146  gcc/testsuite/gdc.test/fail_compilation/diag12432.d
  e8d57014f756c27074e1ebe8cbb265aa  gcc/testsuite/gdc.test/fail_compilation/diag12480.d
  a4de2bf9af47ed4d7fdd266203bfbafa  gcc/testsuite/gdc.test/fail_compilation/diag12487.d
- 17ad8f05d1a995e457722cb0acb95998  gcc/testsuite/gdc.test/fail_compilation/diag12598.d
  989a4d6cd67c1647fc801a51498c6c6a  gcc/testsuite/gdc.test/fail_compilation/diag12640.d
  398adf76598b87a8d92e6201cf6cd859  gcc/testsuite/gdc.test/fail_compilation/diag12678.d
  66ca0a71d1aad362cd2a53e3041a9489  gcc/testsuite/gdc.test/fail_compilation/diag12777.d
  376c3dfccc9be2bd2ed8ca8ea488b5d1  gcc/testsuite/gdc.test/fail_compilation/diag12829.d
  1b9ea132d4807524a36e22ef5960d47b  gcc/testsuite/gdc.test/fail_compilation/diag13028.d
! ca196ff76281a5c431943fa475cb5508  gcc/testsuite/gdc.test/fail_compilation/diag13082.d
  d4bdce5da010bdb608d7a34a8a7f5740  gcc/testsuite/gdc.test/fail_compilation/diag13142.d
  01b5b2f4a8433c18833918645a2454f2  gcc/testsuite/gdc.test/fail_compilation/diag13281.d
  9e06a2aa3eade1a21a1d4580863c048e  gcc/testsuite/gdc.test/fail_compilation/diag13320.d
--- 70596,70607 ----
  5f628747633cc61c61aae674fa0ce146  gcc/testsuite/gdc.test/fail_compilation/diag12432.d
  e8d57014f756c27074e1ebe8cbb265aa  gcc/testsuite/gdc.test/fail_compilation/diag12480.d
  a4de2bf9af47ed4d7fdd266203bfbafa  gcc/testsuite/gdc.test/fail_compilation/diag12487.d
  989a4d6cd67c1647fc801a51498c6c6a  gcc/testsuite/gdc.test/fail_compilation/diag12640.d
  398adf76598b87a8d92e6201cf6cd859  gcc/testsuite/gdc.test/fail_compilation/diag12678.d
  66ca0a71d1aad362cd2a53e3041a9489  gcc/testsuite/gdc.test/fail_compilation/diag12777.d
  376c3dfccc9be2bd2ed8ca8ea488b5d1  gcc/testsuite/gdc.test/fail_compilation/diag12829.d
  1b9ea132d4807524a36e22ef5960d47b  gcc/testsuite/gdc.test/fail_compilation/diag13028.d
! 26a273e7e974918905dcd941ce0a6b28  gcc/testsuite/gdc.test/fail_compilation/diag13082.d
  d4bdce5da010bdb608d7a34a8a7f5740  gcc/testsuite/gdc.test/fail_compilation/diag13142.d
  01b5b2f4a8433c18833918645a2454f2  gcc/testsuite/gdc.test/fail_compilation/diag13281.d
  9e06a2aa3eade1a21a1d4580863c048e  gcc/testsuite/gdc.test/fail_compilation/diag13320.d
*************** a3e3360f0799e7d0aac67e26d025341d  gcc/te
*** 65944,65955 ****
  7f1c0016962fbb95926be79a32b5c1e6  gcc/testsuite/gdc.test/fail_compilation/diag15411.d
  f28f753c50d24ae45fd4aacf60d88ef4  gcc/testsuite/gdc.test/fail_compilation/diag1566.d
  9443f7c9e81e70ca924642c2c1f64bfa  gcc/testsuite/gdc.test/fail_compilation/diag15669.d
! a9ca2790f3f9f89b6618bc2ea3564149  gcc/testsuite/gdc.test/fail_compilation/diag15713.d
  6da4348cf0dd0ce7e748c85e7d714a33  gcc/testsuite/gdc.test/fail_compilation/diag15974.d
  ea865e595b6b6b9bc2d5067d26b4e2df  gcc/testsuite/gdc.test/fail_compilation/diag16499.d
  f8270d7b49838f6b4687f100d4e69d1f  gcc/testsuite/gdc.test/fail_compilation/diag16976.d
  ae8ac2276991a9f8bb3af183489e1e1d  gcc/testsuite/gdc.test/fail_compilation/diag16977.d
  0a1c82490406def349d39c7ddbe4d795  gcc/testsuite/gdc.test/fail_compilation/diag1730.d
  32e09f9ae076959b7f2b34cd846b0c73  gcc/testsuite/gdc.test/fail_compilation/diag2452.d
  517d1e9e0940f602f5a563824fbc27f6  gcc/testsuite/gdc.test/fail_compilation/diag3013.d
  9778aca4760877ea518792dd4c93967f  gcc/testsuite/gdc.test/fail_compilation/diag3438.d
--- 70625,70638 ----
  7f1c0016962fbb95926be79a32b5c1e6  gcc/testsuite/gdc.test/fail_compilation/diag15411.d
  f28f753c50d24ae45fd4aacf60d88ef4  gcc/testsuite/gdc.test/fail_compilation/diag1566.d
  9443f7c9e81e70ca924642c2c1f64bfa  gcc/testsuite/gdc.test/fail_compilation/diag15669.d
! dc9e1a69be21c572b3468fb4fc2ae52e  gcc/testsuite/gdc.test/fail_compilation/diag15713.d
  6da4348cf0dd0ce7e748c85e7d714a33  gcc/testsuite/gdc.test/fail_compilation/diag15974.d
+ 5a15dca4b0f5081d8793d0fd654d5f74  gcc/testsuite/gdc.test/fail_compilation/diag16271.d
  ea865e595b6b6b9bc2d5067d26b4e2df  gcc/testsuite/gdc.test/fail_compilation/diag16499.d
  f8270d7b49838f6b4687f100d4e69d1f  gcc/testsuite/gdc.test/fail_compilation/diag16976.d
  ae8ac2276991a9f8bb3af183489e1e1d  gcc/testsuite/gdc.test/fail_compilation/diag16977.d
  0a1c82490406def349d39c7ddbe4d795  gcc/testsuite/gdc.test/fail_compilation/diag1730.d
+ ef13cff5613132d38394dfcda321198a  gcc/testsuite/gdc.test/fail_compilation/diag19196.d
  32e09f9ae076959b7f2b34cd846b0c73  gcc/testsuite/gdc.test/fail_compilation/diag2452.d
  517d1e9e0940f602f5a563824fbc27f6  gcc/testsuite/gdc.test/fail_compilation/diag3013.d
  9778aca4760877ea518792dd4c93967f  gcc/testsuite/gdc.test/fail_compilation/diag3438.d
*************** c6f88ac2b17f350c6afa8058079e1732  gcc/te
*** 65963,65969 ****
  56c5ab76e14a09147a3314264f71b565  gcc/testsuite/gdc.test/fail_compilation/diag4528.d
  8f15df10bf4dd96d8df274ea196b7a8d  gcc/testsuite/gdc.test/fail_compilation/diag4540.d
  c20e04446c34936beb2b3294bc31d86a  gcc/testsuite/gdc.test/fail_compilation/diag4596.d
! b7007913042545ca089e243bf3801996  gcc/testsuite/gdc.test/fail_compilation/diag5385.d
  b70ea9f35f18eadac688ba3849b96cf9  gcc/testsuite/gdc.test/fail_compilation/diag5450.d
  58cf1fc39fb3294959bd75353ae3b1f5  gcc/testsuite/gdc.test/fail_compilation/diag6373.d
  42440cf2be72343be2c600be4a709c4d  gcc/testsuite/gdc.test/fail_compilation/diag6539.d
--- 70646,70652 ----
  56c5ab76e14a09147a3314264f71b565  gcc/testsuite/gdc.test/fail_compilation/diag4528.d
  8f15df10bf4dd96d8df274ea196b7a8d  gcc/testsuite/gdc.test/fail_compilation/diag4540.d
  c20e04446c34936beb2b3294bc31d86a  gcc/testsuite/gdc.test/fail_compilation/diag4596.d
! c9675022498b5df08879273d86225f5c  gcc/testsuite/gdc.test/fail_compilation/diag5385.d
  b70ea9f35f18eadac688ba3849b96cf9  gcc/testsuite/gdc.test/fail_compilation/diag5450.d
  58cf1fc39fb3294959bd75353ae3b1f5  gcc/testsuite/gdc.test/fail_compilation/diag6373.d
  42440cf2be72343be2c600be4a709c4d  gcc/testsuite/gdc.test/fail_compilation/diag6539.d
*************** c086ea45405b6603b13eeca9af2d1140  gcc/te
*** 65978,65985 ****
  a7881c3dce5c714d52388f5d23b185b3  gcc/testsuite/gdc.test/fail_compilation/diag7477.d
  54d178f044ad4843c820ed845d2f71a2  gcc/testsuite/gdc.test/fail_compilation/diag7747.d
  5a5e46c889479c50135300d3dd98b59a  gcc/testsuite/gdc.test/fail_compilation/diag7998.d
! ee6ab8d24c5698634290847b94f3d272  gcc/testsuite/gdc.test/fail_compilation/diag8101.d
! 869a108e255936ac5c8a1ecd8317adc8  gcc/testsuite/gdc.test/fail_compilation/diag8101b.d
  78c2f3b43e50bbb906e6a1aa08cf6d1b  gcc/testsuite/gdc.test/fail_compilation/diag8178.d
  e2135e452d09f1a92e479f9486ce30f2  gcc/testsuite/gdc.test/fail_compilation/diag8318.d
  16a5614c9da2d0995552e19114ed9074  gcc/testsuite/gdc.test/fail_compilation/diag8425.d
--- 70661,70668 ----
  a7881c3dce5c714d52388f5d23b185b3  gcc/testsuite/gdc.test/fail_compilation/diag7477.d
  54d178f044ad4843c820ed845d2f71a2  gcc/testsuite/gdc.test/fail_compilation/diag7747.d
  5a5e46c889479c50135300d3dd98b59a  gcc/testsuite/gdc.test/fail_compilation/diag7998.d
! c7fcd05d2804c1dfa75c728d286c080e  gcc/testsuite/gdc.test/fail_compilation/diag8101.d
! b92258e3db380750a6bb932e580983e4  gcc/testsuite/gdc.test/fail_compilation/diag8101b.d
  78c2f3b43e50bbb906e6a1aa08cf6d1b  gcc/testsuite/gdc.test/fail_compilation/diag8178.d
  e2135e452d09f1a92e479f9486ce30f2  gcc/testsuite/gdc.test/fail_compilation/diag8318.d
  16a5614c9da2d0995552e19114ed9074  gcc/testsuite/gdc.test/fail_compilation/diag8425.d
*************** e6bb7b4da5af34a01115f02c4e928a7a  gcc/te
*** 66004,66010 ****
  a785981afc0b85ecd283c035a3a44e33  gcc/testsuite/gdc.test/fail_compilation/diag9357.d
  5105a5f713f245b89d70bb3933f2d66c  gcc/testsuite/gdc.test/fail_compilation/diag9358.d
  c6efdcf837dab4d22f642d63f0f5bebf  gcc/testsuite/gdc.test/fail_compilation/diag9398.d
! 64192bf8a1183b3c539f0d10cc050d32  gcc/testsuite/gdc.test/fail_compilation/diag9420.d
  942b6b76690d73fd8af0fc6859bdce23  gcc/testsuite/gdc.test/fail_compilation/diag9451.d
  c71eae763fc17f4bb9c9edc5c73097ab  gcc/testsuite/gdc.test/fail_compilation/diag9479.d
  54b1b2af358aa461b393edfb0bf136e8  gcc/testsuite/gdc.test/fail_compilation/diag9574.d
--- 70687,70693 ----
  a785981afc0b85ecd283c035a3a44e33  gcc/testsuite/gdc.test/fail_compilation/diag9357.d
  5105a5f713f245b89d70bb3933f2d66c  gcc/testsuite/gdc.test/fail_compilation/diag9358.d
  c6efdcf837dab4d22f642d63f0f5bebf  gcc/testsuite/gdc.test/fail_compilation/diag9398.d
! 0ac969e3b77dbf8b6f875ea4359af503  gcc/testsuite/gdc.test/fail_compilation/diag9420.d
  942b6b76690d73fd8af0fc6859bdce23  gcc/testsuite/gdc.test/fail_compilation/diag9451.d
  c71eae763fc17f4bb9c9edc5c73097ab  gcc/testsuite/gdc.test/fail_compilation/diag9479.d
  54b1b2af358aa461b393edfb0bf136e8  gcc/testsuite/gdc.test/fail_compilation/diag9574.d
*************** e6846c6e7f24e0dbf859ddb4ee3797da  gcc/te
*** 66018,66031 ****
  bff2e05f6ce70f412b4cdd42560d1f9e  gcc/testsuite/gdc.test/fail_compilation/diag9961.d
  55444ed54e836a61a5af4cad4480f81e  gcc/testsuite/gdc.test/fail_compilation/diag_cstyle.d
  27cc458e4846804778d0bef21a8dd644  gcc/testsuite/gdc.test/fail_compilation/diag_err1.d
! 66dafe45827fe26c0a44d33f242435c9  gcc/testsuite/gdc.test/fail_compilation/dip22a.d
! b53083b81c040d267cf05d5d77d94888  gcc/testsuite/gdc.test/fail_compilation/dip22b.d
! 66d2d404c067355069f44581c4cefc39  gcc/testsuite/gdc.test/fail_compilation/dip22d.d
! b7dbfd6d15f187408184a0c00ecd96b1  gcc/testsuite/gdc.test/fail_compilation/dip22e.d
! 2c473740567397362c7e13ae0bbd4f2e  gcc/testsuite/gdc.test/fail_compilation/disable.d
  103c14cc4470816407d25ef479870c5f  gcc/testsuite/gdc.test/fail_compilation/e7804_1.d
  ebd624415ce51467f6282d2f66d82e6b  gcc/testsuite/gdc.test/fail_compilation/e7804_2.d
  b9a2e48a61e57647b438f17a3416d327  gcc/testsuite/gdc.test/fail_compilation/enum9921.d
  91827475c22bb655e1204f7d9f6ec260  gcc/testsuite/gdc.test/fail_compilation/extra-files/a14446.d
  f76cf9db0833afa5687645d4c74a9897  gcc/testsuite/gdc.test/fail_compilation/extra-files/bar11453.d
  99acc5a7305edac00837d2641c2f1bb9  gcc/testsuite/gdc.test/fail_compilation/extra-files/foo11453.d
--- 70701,70714 ----
  bff2e05f6ce70f412b4cdd42560d1f9e  gcc/testsuite/gdc.test/fail_compilation/diag9961.d
  55444ed54e836a61a5af4cad4480f81e  gcc/testsuite/gdc.test/fail_compilation/diag_cstyle.d
  27cc458e4846804778d0bef21a8dd644  gcc/testsuite/gdc.test/fail_compilation/diag_err1.d
! 25f57272e57e42e305a94887bb213791  gcc/testsuite/gdc.test/fail_compilation/dip22a.d
! 8e453290c538ca206e6e30cbe2ce44b3  gcc/testsuite/gdc.test/fail_compilation/dip22b.d
! d51b723eb670fcb04908fda81144e76e  gcc/testsuite/gdc.test/fail_compilation/dip22e.d
! 342f6526dab7f6966b6f04965f84d2cc  gcc/testsuite/gdc.test/fail_compilation/disable.d
  103c14cc4470816407d25ef479870c5f  gcc/testsuite/gdc.test/fail_compilation/e7804_1.d
  ebd624415ce51467f6282d2f66d82e6b  gcc/testsuite/gdc.test/fail_compilation/e7804_2.d
  b9a2e48a61e57647b438f17a3416d327  gcc/testsuite/gdc.test/fail_compilation/enum9921.d
+ 1aa4aa08b66f74d0f0cdb5f71878c2f3  gcc/testsuite/gdc.test/fail_compilation/enum_init.d
  91827475c22bb655e1204f7d9f6ec260  gcc/testsuite/gdc.test/fail_compilation/extra-files/a14446.d
  f76cf9db0833afa5687645d4c74a9897  gcc/testsuite/gdc.test/fail_compilation/extra-files/bar11453.d
  99acc5a7305edac00837d2641c2f1bb9  gcc/testsuite/gdc.test/fail_compilation/extra-files/foo11453.d
*************** aed89b6b064d4ac8872e40f1af311262  gcc/te
*** 66036,66081 ****
  fe93b47af0556f19430462ae5d9a09da  gcc/testsuite/gdc.test/fail_compilation/fail101.d
  9b01f9a9519e51677acb44e140ec1f2f  gcc/testsuite/gdc.test/fail_compilation/fail10102.d
  bf35ef2030fdaa20c7a1bcaafb5f990c  gcc/testsuite/gdc.test/fail_compilation/fail10115.d
! bb2591f2f86657242be15eb39d3a6c89  gcc/testsuite/gdc.test/fail_compilation/fail10207.d
  f884ac59e56bad19a0b84c678f702a4b  gcc/testsuite/gdc.test/fail_compilation/fail10254.d
  61844dda8a581fb611a94dd8fdc3e1ce  gcc/testsuite/gdc.test/fail_compilation/fail10277.d
  479830a391e47ca5d5fde21edae925e0  gcc/testsuite/gdc.test/fail_compilation/fail10285.d
  bdbb70051eb75a7dadb7dddec6b7d105  gcc/testsuite/gdc.test/fail_compilation/fail10299.d
  dd17a2837ac6f2f2d6b2c8561c63a3b6  gcc/testsuite/gdc.test/fail_compilation/fail10346.d
! a3353fe7327f155fc9e3e3c84ce2d696  gcc/testsuite/gdc.test/fail_compilation/fail104.d
  e2fb76b7a5c3cc0a69d227c7265a746b  gcc/testsuite/gdc.test/fail_compilation/fail10481.d
  907bda1bcbe9ef7a5b11900116f46e8f  gcc/testsuite/gdc.test/fail_compilation/fail105.d
! 958abac98e288973b793403a1f759bb5  gcc/testsuite/gdc.test/fail_compilation/fail10528.d
  0287c63489050a2ce38f73178cd5cd5e  gcc/testsuite/gdc.test/fail_compilation/fail10534.d
  3b9d07e512937acc4080d26f1d381d0e  gcc/testsuite/gdc.test/fail_compilation/fail106.d
  dbd4c4590b873ceea8eda4beb8150fac  gcc/testsuite/gdc.test/fail_compilation/fail10630.d
  b7e129895d0278c247ddbe13fc833544  gcc/testsuite/gdc.test/fail_compilation/fail10666.d
! 0bb59ff4b9d4f400e4d297c9fe5daf65  gcc/testsuite/gdc.test/fail_compilation/fail109.d
! 7c890f755dbf40a6887add42cbb9364c  gcc/testsuite/gdc.test/fail_compilation/fail10905.d
  26dbb859f5696cf64eafd32add573569  gcc/testsuite/gdc.test/fail_compilation/fail10947.d
  a9f4e9edc20a9b4101ecb7b6089adda2  gcc/testsuite/gdc.test/fail_compilation/fail10964.d
! d99cd79a8b0b94bf1b5fbbc71672ef0e  gcc/testsuite/gdc.test/fail_compilation/fail10968.d
  9bf02ffb4644e509d508825a2f1b6825  gcc/testsuite/gdc.test/fail_compilation/fail10980.d
  3b16ab5be8f8e75539f518a7a11a9ba9  gcc/testsuite/gdc.test/fail_compilation/fail11.d
  2550286b54138049d3fcc57a03723ab2  gcc/testsuite/gdc.test/fail_compilation/fail110.d
  10f619ddec93bf8424836e0ce9b45879  gcc/testsuite/gdc.test/fail_compilation/fail11042.d
  faad6778b0c07ebf55e8f6f9ac7f5ebf  gcc/testsuite/gdc.test/fail_compilation/fail111.d
  84b3e54ce1cb4631b86336fab1a69229  gcc/testsuite/gdc.test/fail_compilation/fail11125.d
  9b903a746fc73eff4bafecb9748148fb  gcc/testsuite/gdc.test/fail_compilation/fail11151.d
  68e580caef482eaeea4685a01b4712f7  gcc/testsuite/gdc.test/fail_compilation/fail11163.d
  f27702c0e4315598dcb6acff054cd743  gcc/testsuite/gdc.test/fail_compilation/fail113.d
! 7a18a4e0664dca12e75954d6b791608b  gcc/testsuite/gdc.test/fail_compilation/fail11355.d
  0b86d5ed89a819877881ba8e4a7479be  gcc/testsuite/gdc.test/fail_compilation/fail11375.d
  d12e14c5df604e4f99f936af7b1163d3  gcc/testsuite/gdc.test/fail_compilation/fail114.d
  9e4a2ee34878d003dc19b1519c00de09  gcc/testsuite/gdc.test/fail_compilation/fail11426.d
! bbc7fb352a52c37a59e011eeb885d9f4  gcc/testsuite/gdc.test/fail_compilation/fail11445.d
  50a8707489dc6115c13045edfc4c8a75  gcc/testsuite/gdc.test/fail_compilation/fail11453a.d
  f1f3661f08a410ac2a369feb71652610  gcc/testsuite/gdc.test/fail_compilation/fail11453b.d
! cb1dff7db07b89867e90aa7860701b4f  gcc/testsuite/gdc.test/fail_compilation/fail115.d
! b5d4515c1a3c551cd46b1e75eddcbace  gcc/testsuite/gdc.test/fail_compilation/fail11503a.d
! dc21edff2c24b5d88a0a6fb7ee1be9c3  gcc/testsuite/gdc.test/fail_compilation/fail11503b.d
! 9717200d9e7159f87a8dc51bf7b127ce  gcc/testsuite/gdc.test/fail_compilation/fail11503c.d
! 359b5cac306e181854aebceb1450e98a  gcc/testsuite/gdc.test/fail_compilation/fail11503d.d
  dac047c356ccd0e4e90de163db7738f9  gcc/testsuite/gdc.test/fail_compilation/fail11510.d
  9717e3421b2fe1c6de3b04f978f0eeee  gcc/testsuite/gdc.test/fail_compilation/fail11532.d
  3ba958c340acb67a20e3fdb20c032da7  gcc/testsuite/gdc.test/fail_compilation/fail11542.d
--- 70719,70765 ----
  fe93b47af0556f19430462ae5d9a09da  gcc/testsuite/gdc.test/fail_compilation/fail101.d
  9b01f9a9519e51677acb44e140ec1f2f  gcc/testsuite/gdc.test/fail_compilation/fail10102.d
  bf35ef2030fdaa20c7a1bcaafb5f990c  gcc/testsuite/gdc.test/fail_compilation/fail10115.d
! a883dee9cdfef4dfaf5f5fb50b0e3916  gcc/testsuite/gdc.test/fail_compilation/fail10207.d
  f884ac59e56bad19a0b84c678f702a4b  gcc/testsuite/gdc.test/fail_compilation/fail10254.d
  61844dda8a581fb611a94dd8fdc3e1ce  gcc/testsuite/gdc.test/fail_compilation/fail10277.d
  479830a391e47ca5d5fde21edae925e0  gcc/testsuite/gdc.test/fail_compilation/fail10285.d
  bdbb70051eb75a7dadb7dddec6b7d105  gcc/testsuite/gdc.test/fail_compilation/fail10299.d
  dd17a2837ac6f2f2d6b2c8561c63a3b6  gcc/testsuite/gdc.test/fail_compilation/fail10346.d
! 2d690cd24a1d4b001b51f7c95d4890c6  gcc/testsuite/gdc.test/fail_compilation/fail104.d
  e2fb76b7a5c3cc0a69d227c7265a746b  gcc/testsuite/gdc.test/fail_compilation/fail10481.d
  907bda1bcbe9ef7a5b11900116f46e8f  gcc/testsuite/gdc.test/fail_compilation/fail105.d
! 83012aeed647d07800ec3d4a5d7217bf  gcc/testsuite/gdc.test/fail_compilation/fail10528.d
  0287c63489050a2ce38f73178cd5cd5e  gcc/testsuite/gdc.test/fail_compilation/fail10534.d
  3b9d07e512937acc4080d26f1d381d0e  gcc/testsuite/gdc.test/fail_compilation/fail106.d
  dbd4c4590b873ceea8eda4beb8150fac  gcc/testsuite/gdc.test/fail_compilation/fail10630.d
  b7e129895d0278c247ddbe13fc833544  gcc/testsuite/gdc.test/fail_compilation/fail10666.d
! af0f9a52ce56142f277d0a5702b8b807  gcc/testsuite/gdc.test/fail_compilation/fail109.d
! 23dc02abd6588e6f374160b7137a2800  gcc/testsuite/gdc.test/fail_compilation/fail10905.d
  26dbb859f5696cf64eafd32add573569  gcc/testsuite/gdc.test/fail_compilation/fail10947.d
  a9f4e9edc20a9b4101ecb7b6089adda2  gcc/testsuite/gdc.test/fail_compilation/fail10964.d
! d3fa759c656ec8e814fb262a36250543  gcc/testsuite/gdc.test/fail_compilation/fail10968.d
  9bf02ffb4644e509d508825a2f1b6825  gcc/testsuite/gdc.test/fail_compilation/fail10980.d
  3b16ab5be8f8e75539f518a7a11a9ba9  gcc/testsuite/gdc.test/fail_compilation/fail11.d
  2550286b54138049d3fcc57a03723ab2  gcc/testsuite/gdc.test/fail_compilation/fail110.d
+ d057ea2c224ad28d9e386ad710506194  gcc/testsuite/gdc.test/fail_compilation/fail11038.d
  10f619ddec93bf8424836e0ce9b45879  gcc/testsuite/gdc.test/fail_compilation/fail11042.d
  faad6778b0c07ebf55e8f6f9ac7f5ebf  gcc/testsuite/gdc.test/fail_compilation/fail111.d
  84b3e54ce1cb4631b86336fab1a69229  gcc/testsuite/gdc.test/fail_compilation/fail11125.d
  9b903a746fc73eff4bafecb9748148fb  gcc/testsuite/gdc.test/fail_compilation/fail11151.d
  68e580caef482eaeea4685a01b4712f7  gcc/testsuite/gdc.test/fail_compilation/fail11163.d
  f27702c0e4315598dcb6acff054cd743  gcc/testsuite/gdc.test/fail_compilation/fail113.d
! 360c722d2f09842c3cd312be5347d409  gcc/testsuite/gdc.test/fail_compilation/fail11355.d
  0b86d5ed89a819877881ba8e4a7479be  gcc/testsuite/gdc.test/fail_compilation/fail11375.d
  d12e14c5df604e4f99f936af7b1163d3  gcc/testsuite/gdc.test/fail_compilation/fail114.d
  9e4a2ee34878d003dc19b1519c00de09  gcc/testsuite/gdc.test/fail_compilation/fail11426.d
! d2ab2338c87f132cca095b0e72b61e61  gcc/testsuite/gdc.test/fail_compilation/fail11445.d
  50a8707489dc6115c13045edfc4c8a75  gcc/testsuite/gdc.test/fail_compilation/fail11453a.d
  f1f3661f08a410ac2a369feb71652610  gcc/testsuite/gdc.test/fail_compilation/fail11453b.d
! 7d13b7056acf7ed36a57d82f32b30f31  gcc/testsuite/gdc.test/fail_compilation/fail115.d
! d6a0583cdebb2f5274a34d9f68574519  gcc/testsuite/gdc.test/fail_compilation/fail11503a.d
! 03dcaff82193c60ec8aa4fbb68cd344b  gcc/testsuite/gdc.test/fail_compilation/fail11503b.d
! a76de98193667dd400f93e1ac81ee18c  gcc/testsuite/gdc.test/fail_compilation/fail11503c.d
! 7131a8d869852a64abcf46dd328cef32  gcc/testsuite/gdc.test/fail_compilation/fail11503d.d
  dac047c356ccd0e4e90de163db7738f9  gcc/testsuite/gdc.test/fail_compilation/fail11510.d
  9717e3421b2fe1c6de3b04f978f0eeee  gcc/testsuite/gdc.test/fail_compilation/fail11532.d
  3ba958c340acb67a20e3fdb20c032da7  gcc/testsuite/gdc.test/fail_compilation/fail11542.d
*************** a691b7855ffa66fe0d4d016977d36507  gcc/te
*** 66092,66101 ****
  92ecc334e4dcce81fa7eae90f799f4d9  gcc/testsuite/gdc.test/fail_compilation/fail11748.d
  c0c579cb086b8a2a634c0ab754c26a07  gcc/testsuite/gdc.test/fail_compilation/fail11751.d
  ac4d4b481c0ad8f2ec6dfc78c91ea777  gcc/testsuite/gdc.test/fail_compilation/fail118.d
! 863d90ef139f573ba6603b43224a091d  gcc/testsuite/gdc.test/fail_compilation/fail12.d
  3362cbf846ed59a299a4c6e4c7618d0b  gcc/testsuite/gdc.test/fail_compilation/fail120.d
  7bf72c637818e7f1de6be900e0fe70e8  gcc/testsuite/gdc.test/fail_compilation/fail12047.d
! 04156601c330beb43f54c8b1aadcf872  gcc/testsuite/gdc.test/fail_compilation/fail121.d
  83f0cd36f27a826b18ae6d4c70705ee9  gcc/testsuite/gdc.test/fail_compilation/fail122.d
  5fb3a80358750cb6a9d61ac85a105f41  gcc/testsuite/gdc.test/fail_compilation/fail12236.d
  53b7493bdd8ec81ad481850fa972df22  gcc/testsuite/gdc.test/fail_compilation/fail12255.d
--- 70776,70785 ----
  92ecc334e4dcce81fa7eae90f799f4d9  gcc/testsuite/gdc.test/fail_compilation/fail11748.d
  c0c579cb086b8a2a634c0ab754c26a07  gcc/testsuite/gdc.test/fail_compilation/fail11751.d
  ac4d4b481c0ad8f2ec6dfc78c91ea777  gcc/testsuite/gdc.test/fail_compilation/fail118.d
! 5c42637b6e8b82263644c773f60c313d  gcc/testsuite/gdc.test/fail_compilation/fail12.d
  3362cbf846ed59a299a4c6e4c7618d0b  gcc/testsuite/gdc.test/fail_compilation/fail120.d
  7bf72c637818e7f1de6be900e0fe70e8  gcc/testsuite/gdc.test/fail_compilation/fail12047.d
! bc29d8052e02438aec3b5f987d52ec37  gcc/testsuite/gdc.test/fail_compilation/fail121.d
  83f0cd36f27a826b18ae6d4c70705ee9  gcc/testsuite/gdc.test/fail_compilation/fail122.d
  5fb3a80358750cb6a9d61ac85a105f41  gcc/testsuite/gdc.test/fail_compilation/fail12236.d
  53b7493bdd8ec81ad481850fa972df22  gcc/testsuite/gdc.test/fail_compilation/fail12255.d
*************** cfa144d2148ba55b706d99f97b241b88  gcc/te
*** 66104,66110 ****
  9f3f3691096e6057c1846d928d0f7a5f  gcc/testsuite/gdc.test/fail_compilation/fail12390.d
  f18935b65bcc965bb77c5bb1f25dbade  gcc/testsuite/gdc.test/fail_compilation/fail124.d
  e4069e739af605d447565e9f685e5c77  gcc/testsuite/gdc.test/fail_compilation/fail12436.d
- 8f0522774d04327d6b733edb823e97ee  gcc/testsuite/gdc.test/fail_compilation/fail12485.d
  582173286a9114e5e32728cc3100aee0  gcc/testsuite/gdc.test/fail_compilation/fail125.d
  5e798f418fba7c3cf4522b6764d2a5c7  gcc/testsuite/gdc.test/fail_compilation/fail126.d
  cdb3801b748621f73c5035160988a49f  gcc/testsuite/gdc.test/fail_compilation/fail12604.d
--- 70788,70793 ----
*************** d2bc4231f94c8fe8a5bbd778adc3ff1a  gcc/te
*** 66136,66148 ****
  8fa4b55d9451d0c0a3cc43f4e66c8282  gcc/testsuite/gdc.test/fail_compilation/fail13574.d
  72714bbd1e73b949322aa5a6df469418  gcc/testsuite/gdc.test/fail_compilation/fail136.d
  eff70ae01aac046420e807cda59970e9  gcc/testsuite/gdc.test/fail_compilation/fail13601.d
- 3ed133d626aa9d6cfbf25f515e11dd33  gcc/testsuite/gdc.test/fail_compilation/fail137.d
  12fdccc58d72285c8bbbde4110d0d331  gcc/testsuite/gdc.test/fail_compilation/fail13701.d
  dcc7cbf7a62aac156eb3a48ff03aa44e  gcc/testsuite/gdc.test/fail_compilation/fail13756.d
  7f637277f7409ea6e5315946be618ca9  gcc/testsuite/gdc.test/fail_compilation/fail13775.d
  ab41a67c547ee8795f5b9b0427ba73b4  gcc/testsuite/gdc.test/fail_compilation/fail139.d
  914eb89db748f6ecc90cb9d21cbb052b  gcc/testsuite/gdc.test/fail_compilation/fail13902.d
! 5f2abc52b7794ef33493e0eb62c64cdd  gcc/testsuite/gdc.test/fail_compilation/fail14.d
  a832256c997e67cbe8d45f5bf24cf183  gcc/testsuite/gdc.test/fail_compilation/fail14089.d
  1a009b231bf1f8f9b0ad7f25beb97cde  gcc/testsuite/gdc.test/fail_compilation/fail142.d
  35d601003a228d3f331f8020100d9efa  gcc/testsuite/gdc.test/fail_compilation/fail14249.d
--- 70819,70830 ----
  8fa4b55d9451d0c0a3cc43f4e66c8282  gcc/testsuite/gdc.test/fail_compilation/fail13574.d
  72714bbd1e73b949322aa5a6df469418  gcc/testsuite/gdc.test/fail_compilation/fail136.d
  eff70ae01aac046420e807cda59970e9  gcc/testsuite/gdc.test/fail_compilation/fail13601.d
  12fdccc58d72285c8bbbde4110d0d331  gcc/testsuite/gdc.test/fail_compilation/fail13701.d
  dcc7cbf7a62aac156eb3a48ff03aa44e  gcc/testsuite/gdc.test/fail_compilation/fail13756.d
  7f637277f7409ea6e5315946be618ca9  gcc/testsuite/gdc.test/fail_compilation/fail13775.d
  ab41a67c547ee8795f5b9b0427ba73b4  gcc/testsuite/gdc.test/fail_compilation/fail139.d
  914eb89db748f6ecc90cb9d21cbb052b  gcc/testsuite/gdc.test/fail_compilation/fail13902.d
! 10554ee69c68fa02536edb00437cd248  gcc/testsuite/gdc.test/fail_compilation/fail14.d
  a832256c997e67cbe8d45f5bf24cf183  gcc/testsuite/gdc.test/fail_compilation/fail14089.d
  1a009b231bf1f8f9b0ad7f25beb97cde  gcc/testsuite/gdc.test/fail_compilation/fail142.d
  35d601003a228d3f331f8020100d9efa  gcc/testsuite/gdc.test/fail_compilation/fail14249.d
*************** dec84ef379f80e8c27390f196330c2f4  gcc/te
*** 66152,66187 ****
  f97194d85d3d2809e6facc401c4a2440  gcc/testsuite/gdc.test/fail_compilation/fail14406.d
  debeaff0989635140919e8c44d128176  gcc/testsuite/gdc.test/fail_compilation/fail14407.d
  3edbd1fcd9eb3cf3102720930f94a60b  gcc/testsuite/gdc.test/fail_compilation/fail14416.d
! a44498cf0298c972eb4c1c8a99cba3cf  gcc/testsuite/gdc.test/fail_compilation/fail14486.d
  09ebbf8c81859727c4e0a7e5157c0fd7  gcc/testsuite/gdc.test/fail_compilation/fail145.d
  108ceeb926cf64971423895c0111ffeb  gcc/testsuite/gdc.test/fail_compilation/fail14554.d
  37db39e3b52da5ed4f54b380b65f8855  gcc/testsuite/gdc.test/fail_compilation/fail14669.d
  04e3bf315c63eadd6558c09830b3fb55  gcc/testsuite/gdc.test/fail_compilation/fail14965.d
! 4d21f8c0e50f3cd213b7b1d3b9e94d90  gcc/testsuite/gdc.test/fail_compilation/fail15.d
  9501a26a2b18e8c31b773e2c9ae4c3d3  gcc/testsuite/gdc.test/fail_compilation/fail150.d
! eb2d057d5f8a08600b61c8547ce9e8fa  gcc/testsuite/gdc.test/fail_compilation/fail15044.d
  e43fd15a1b559862ef0d489787f9252a  gcc/testsuite/gdc.test/fail_compilation/fail15089.d
  a4a67af09d85dfe9fc7f596b269e796a  gcc/testsuite/gdc.test/fail_compilation/fail15292.d
  ee555d183bee60d1164dc2bf7bdab95a  gcc/testsuite/gdc.test/fail_compilation/fail153.d
  b258f9a172f45991a836debcb211a6fc  gcc/testsuite/gdc.test/fail_compilation/fail154.d
  92f1b2c170c4a6eb8614f570469b8d16  gcc/testsuite/gdc.test/fail_compilation/fail155.d
  b728f68cf59cb16478f76c8a24dec4f6  gcc/testsuite/gdc.test/fail_compilation/fail15535.d
  42d649e99af9eb92977738b7d545fef8  gcc/testsuite/gdc.test/fail_compilation/fail15550.d
  9e0a27136266b7b6bfe7ad99051ab0cf  gcc/testsuite/gdc.test/fail_compilation/fail156.d
  351207afff6e4c511ff66681b91661cf  gcc/testsuite/gdc.test/fail_compilation/fail15616a.d
! e9a7c1a1d09350c23156c45a0b5ac794  gcc/testsuite/gdc.test/fail_compilation/fail15616b.d
  b524201b8dc7b669f8fd808b1cbcb042  gcc/testsuite/gdc.test/fail_compilation/fail15626.d
  869e666e1587f690b4c3d5acc48713b5  gcc/testsuite/gdc.test/fail_compilation/fail15667.d
  16da30dd060606154f259767b6132314  gcc/testsuite/gdc.test/fail_compilation/fail158.d
  ff522db8e3f7290807f99cbbff6d33aa  gcc/testsuite/gdc.test/fail_compilation/fail159.d
! ceb5e58dc3d621e3997a9d30d900a6fb  gcc/testsuite/gdc.test/fail_compilation/fail16.d
  074058daa32933a815e0a06141671545  gcc/testsuite/gdc.test/fail_compilation/fail160.d
  9c304462328270fc11076c9c29252b8d  gcc/testsuite/gdc.test/fail_compilation/fail161.d
  59eb5de49c64581f01c71b8004fa22b3  gcc/testsuite/gdc.test/fail_compilation/fail162.d
  b2a7fff9646a3d999af5916b3f12f5c9  gcc/testsuite/gdc.test/fail_compilation/fail163.d
  e5c4db922c80c6cd4ee60bd1b574a66a  gcc/testsuite/gdc.test/fail_compilation/fail16600.d
  209af003830061eeaa9164e5eac9b4f8  gcc/testsuite/gdc.test/fail_compilation/fail169.d
! 0ff2e3d3594aa22b6d427869ca0722d1  gcc/testsuite/gdc.test/fail_compilation/fail17.d
  68e522a24e39b37182b863a5b02e6d55  gcc/testsuite/gdc.test/fail_compilation/fail170.d
  81f572c07c90f385c2fb8adf74d0861a  gcc/testsuite/gdc.test/fail_compilation/fail172.d
  778cefb6b11b1f74046e18febbdb782b  gcc/testsuite/gdc.test/fail_compilation/fail17275.d
--- 70834,70873 ----
  f97194d85d3d2809e6facc401c4a2440  gcc/testsuite/gdc.test/fail_compilation/fail14406.d
  debeaff0989635140919e8c44d128176  gcc/testsuite/gdc.test/fail_compilation/fail14407.d
  3edbd1fcd9eb3cf3102720930f94a60b  gcc/testsuite/gdc.test/fail_compilation/fail14416.d
! 10c0a0eef40a058082323dbcb3bcd131  gcc/testsuite/gdc.test/fail_compilation/fail14486.d
  09ebbf8c81859727c4e0a7e5157c0fd7  gcc/testsuite/gdc.test/fail_compilation/fail145.d
  108ceeb926cf64971423895c0111ffeb  gcc/testsuite/gdc.test/fail_compilation/fail14554.d
  37db39e3b52da5ed4f54b380b65f8855  gcc/testsuite/gdc.test/fail_compilation/fail14669.d
  04e3bf315c63eadd6558c09830b3fb55  gcc/testsuite/gdc.test/fail_compilation/fail14965.d
! 6137d3caec53491d9b6e6339f866e97c  gcc/testsuite/gdc.test/fail_compilation/fail15.d
  9501a26a2b18e8c31b773e2c9ae4c3d3  gcc/testsuite/gdc.test/fail_compilation/fail150.d
! 1a2053870f325ede91510f97b2f7c640  gcc/testsuite/gdc.test/fail_compilation/fail15044.d
  e43fd15a1b559862ef0d489787f9252a  gcc/testsuite/gdc.test/fail_compilation/fail15089.d
  a4a67af09d85dfe9fc7f596b269e796a  gcc/testsuite/gdc.test/fail_compilation/fail15292.d
  ee555d183bee60d1164dc2bf7bdab95a  gcc/testsuite/gdc.test/fail_compilation/fail153.d
+ 8ffd2e63fb125b33d3573d667ed80e1f  gcc/testsuite/gdc.test/fail_compilation/fail15361.d
  b258f9a172f45991a836debcb211a6fc  gcc/testsuite/gdc.test/fail_compilation/fail154.d
  92f1b2c170c4a6eb8614f570469b8d16  gcc/testsuite/gdc.test/fail_compilation/fail155.d
  b728f68cf59cb16478f76c8a24dec4f6  gcc/testsuite/gdc.test/fail_compilation/fail15535.d
  42d649e99af9eb92977738b7d545fef8  gcc/testsuite/gdc.test/fail_compilation/fail15550.d
  9e0a27136266b7b6bfe7ad99051ab0cf  gcc/testsuite/gdc.test/fail_compilation/fail156.d
  351207afff6e4c511ff66681b91661cf  gcc/testsuite/gdc.test/fail_compilation/fail15616a.d
! 3bc41aa884c1c517a0678d26c71f832d  gcc/testsuite/gdc.test/fail_compilation/fail15616b.d
  b524201b8dc7b669f8fd808b1cbcb042  gcc/testsuite/gdc.test/fail_compilation/fail15626.d
  869e666e1587f690b4c3d5acc48713b5  gcc/testsuite/gdc.test/fail_compilation/fail15667.d
  16da30dd060606154f259767b6132314  gcc/testsuite/gdc.test/fail_compilation/fail158.d
+ 7dffcb12548594529e08c394a72f593e  gcc/testsuite/gdc.test/fail_compilation/fail15896.d
  ff522db8e3f7290807f99cbbff6d33aa  gcc/testsuite/gdc.test/fail_compilation/fail159.d
! c54825a9b1a9e678dfd4222e51254a65  gcc/testsuite/gdc.test/fail_compilation/fail16.d
  074058daa32933a815e0a06141671545  gcc/testsuite/gdc.test/fail_compilation/fail160.d
  9c304462328270fc11076c9c29252b8d  gcc/testsuite/gdc.test/fail_compilation/fail161.d
  59eb5de49c64581f01c71b8004fa22b3  gcc/testsuite/gdc.test/fail_compilation/fail162.d
+ 17eb2abab8ecd0c39b44bfbc69f1c845  gcc/testsuite/gdc.test/fail_compilation/fail16206a.d
+ 002a14c899744cebda88b7635af38913  gcc/testsuite/gdc.test/fail_compilation/fail16206b.d
  b2a7fff9646a3d999af5916b3f12f5c9  gcc/testsuite/gdc.test/fail_compilation/fail163.d
  e5c4db922c80c6cd4ee60bd1b574a66a  gcc/testsuite/gdc.test/fail_compilation/fail16600.d
  209af003830061eeaa9164e5eac9b4f8  gcc/testsuite/gdc.test/fail_compilation/fail169.d
! b7c2be3a05dea04eaf3363a2bb3ef505  gcc/testsuite/gdc.test/fail_compilation/fail17.d
  68e522a24e39b37182b863a5b02e6d55  gcc/testsuite/gdc.test/fail_compilation/fail170.d
  81f572c07c90f385c2fb8adf74d0861a  gcc/testsuite/gdc.test/fail_compilation/fail172.d
  778cefb6b11b1f74046e18febbdb782b  gcc/testsuite/gdc.test/fail_compilation/fail17275.d
*************** ec49ddad4c2d427e7fc82a61312b1a4a  gcc/te
*** 66190,66198 ****
  0a22d2204c7837efddcda3d6919a42d5  gcc/testsuite/gdc.test/fail_compilation/fail17421.d
  ab5f4dbae40b00e019c3eb7247e7a565  gcc/testsuite/gdc.test/fail_compilation/fail17491.d
  94c0cc143d055c0e1c6c34c9ed64df24  gcc/testsuite/gdc.test/fail_compilation/fail17492.d
! 387173afc11a18e5b4ff9e149e068f1a  gcc/testsuite/gdc.test/fail_compilation/fail17502.d
  f063c3fe726aead146d8bc5f11317caa  gcc/testsuite/gdc.test/fail_compilation/fail176.d
  a9e9375c639f1bceb5a2c82ed2d814d2  gcc/testsuite/gdc.test/fail_compilation/fail17612.d
  d9b57492a55df581bc7cb9cafb51823e  gcc/testsuite/gdc.test/fail_compilation/fail17646.d
  ab8c22cf2be47d14e82979e49ec3083e  gcc/testsuite/gdc.test/fail_compilation/fail17689.d
  cc0d534470513bf33065f906f685c282  gcc/testsuite/gdc.test/fail_compilation/fail177.d
--- 70876,70885 ----
  0a22d2204c7837efddcda3d6919a42d5  gcc/testsuite/gdc.test/fail_compilation/fail17421.d
  ab5f4dbae40b00e019c3eb7247e7a565  gcc/testsuite/gdc.test/fail_compilation/fail17491.d
  94c0cc143d055c0e1c6c34c9ed64df24  gcc/testsuite/gdc.test/fail_compilation/fail17492.d
! 5ce6c1fa1a596779f604774bc6462caf  gcc/testsuite/gdc.test/fail_compilation/fail17502.d
  f063c3fe726aead146d8bc5f11317caa  gcc/testsuite/gdc.test/fail_compilation/fail176.d
  a9e9375c639f1bceb5a2c82ed2d814d2  gcc/testsuite/gdc.test/fail_compilation/fail17612.d
+ 2cabd5f43fb4c3f7eb2da73fc4b1164d  gcc/testsuite/gdc.test/fail_compilation/fail17630.d
  d9b57492a55df581bc7cb9cafb51823e  gcc/testsuite/gdc.test/fail_compilation/fail17646.d
  ab8c22cf2be47d14e82979e49ec3083e  gcc/testsuite/gdc.test/fail_compilation/fail17689.d
  cc0d534470513bf33065f906f685c282  gcc/testsuite/gdc.test/fail_compilation/fail177.d
*************** cd85edffa509e845e1c2fc1f2387e34e  gcc/te
*** 66203,66217 ****
  ea3555623f7a0f76ea024bdeafec92fe  gcc/testsuite/gdc.test/fail_compilation/fail180.d
  ee0bf9fd315e7acd7b8d88d3f0eedbc7  gcc/testsuite/gdc.test/fail_compilation/fail18057.d
  e3408518b8b4c811d02328352ef87de6  gcc/testsuite/gdc.test/fail_compilation/fail18057b.d
  01272bb2cd242423fbfefbb141aeafff  gcc/testsuite/gdc.test/fail_compilation/fail183.d
  27112a91b6ec55109a11888ca317d7ae  gcc/testsuite/gdc.test/fail_compilation/fail184.d
  15708ee65310d0e005531c2a4d3ea648  gcc/testsuite/gdc.test/fail_compilation/fail185.d
  981e45bf2f24b479f4edb4dd0c3251f0  gcc/testsuite/gdc.test/fail_compilation/fail187.d
  30517ca54fcaeb3dab234b5da5d696ef  gcc/testsuite/gdc.test/fail_compilation/fail188.d
  39344b97e72e7a51418d2304bfe71bac  gcc/testsuite/gdc.test/fail_compilation/fail189.d
! 5a7924606f6eb049358a7fe7ca09347b  gcc/testsuite/gdc.test/fail_compilation/fail18970.d
  1483b01b6caa6a61211fbbb7ca91bb0e  gcc/testsuite/gdc.test/fail_compilation/fail190.d
  ff0f76cd1d9f8e05b74ab205e6a227c9  gcc/testsuite/gdc.test/fail_compilation/fail1900.d
  2658559b7e065a4d9a88423a76b0a1f8  gcc/testsuite/gdc.test/fail_compilation/fail19182.d
  1503cabe22e011f8539d7c16e3b90e67  gcc/testsuite/gdc.test/fail_compilation/fail192.d
  53e1a4422f496ec7495e50d0a2839f5b  gcc/testsuite/gdc.test/fail_compilation/fail193.d
--- 70890,70908 ----
  ea3555623f7a0f76ea024bdeafec92fe  gcc/testsuite/gdc.test/fail_compilation/fail180.d
  ee0bf9fd315e7acd7b8d88d3f0eedbc7  gcc/testsuite/gdc.test/fail_compilation/fail18057.d
  e3408518b8b4c811d02328352ef87de6  gcc/testsuite/gdc.test/fail_compilation/fail18057b.d
+ f29a2cafb832f5d530d6602319bfce06  gcc/testsuite/gdc.test/fail_compilation/fail18143.d
+ 0c902b93c7433a24ef0a1f1b2c046c5c  gcc/testsuite/gdc.test/fail_compilation/fail18219.d
  01272bb2cd242423fbfefbb141aeafff  gcc/testsuite/gdc.test/fail_compilation/fail183.d
  27112a91b6ec55109a11888ca317d7ae  gcc/testsuite/gdc.test/fail_compilation/fail184.d
  15708ee65310d0e005531c2a4d3ea648  gcc/testsuite/gdc.test/fail_compilation/fail185.d
  981e45bf2f24b479f4edb4dd0c3251f0  gcc/testsuite/gdc.test/fail_compilation/fail187.d
+ 32a06b34daa30ac6173501851c0b80ab  gcc/testsuite/gdc.test/fail_compilation/fail18719.d
  30517ca54fcaeb3dab234b5da5d696ef  gcc/testsuite/gdc.test/fail_compilation/fail188.d
  39344b97e72e7a51418d2304bfe71bac  gcc/testsuite/gdc.test/fail_compilation/fail189.d
! ae70e36b4bddfcc69dba494ed2b907ef  gcc/testsuite/gdc.test/fail_compilation/fail18970.d
  1483b01b6caa6a61211fbbb7ca91bb0e  gcc/testsuite/gdc.test/fail_compilation/fail190.d
  ff0f76cd1d9f8e05b74ab205e6a227c9  gcc/testsuite/gdc.test/fail_compilation/fail1900.d
+ 431177676ed4eb28a3aefabcf183445a  gcc/testsuite/gdc.test/fail_compilation/fail19107.d
  2658559b7e065a4d9a88423a76b0a1f8  gcc/testsuite/gdc.test/fail_compilation/fail19182.d
  1503cabe22e011f8539d7c16e3b90e67  gcc/testsuite/gdc.test/fail_compilation/fail192.d
  53e1a4422f496ec7495e50d0a2839f5b  gcc/testsuite/gdc.test/fail_compilation/fail193.d
*************** ff0f76cd1d9f8e05b74ab205e6a227c9  gcc/te
*** 66219,66233 ****
  3a87e73c857b83aafd1846af5a1f59eb  gcc/testsuite/gdc.test/fail_compilation/fail194.d
  6d48813e52b586b298d9be7f4a37d603  gcc/testsuite/gdc.test/fail_compilation/fail195.d
  676dfacf37090247608e1eabe58d4327  gcc/testsuite/gdc.test/fail_compilation/fail19520.d
! ac4b371d96f5ba3e37dfd65011f1b81a  gcc/testsuite/gdc.test/fail_compilation/fail196.d
  3ad99c4ff25fed0b9151dea855acebba  gcc/testsuite/gdc.test/fail_compilation/fail19609.d
  0ef63361f290a9b73dc28f4feebb03d8  gcc/testsuite/gdc.test/fail_compilation/fail198.d
! 18020ab16caa8b42e7e8fcb58c96716a  gcc/testsuite/gdc.test/fail_compilation/fail19890a.d
! 17fd12ab98240cbcc4b043f8656a46f0  gcc/testsuite/gdc.test/fail_compilation/fail19890b.d
  1b3c90cb1eac7cc77c0d288171529f2a  gcc/testsuite/gdc.test/fail_compilation/fail19897.d
  7e3c85acd06c5b1a46bd4c550108ea93  gcc/testsuite/gdc.test/fail_compilation/fail19898a.d
  b222568e3989a82aea4c7ccf7ff42f95  gcc/testsuite/gdc.test/fail_compilation/fail19898b.d
! f01d30c0a49b46065de39a95f911fd41  gcc/testsuite/gdc.test/fail_compilation/fail199.d
  20732ebad089aa6fc8fd4b82c40d461a  gcc/testsuite/gdc.test/fail_compilation/fail19911a.d
  7235fcff769c5fc74a7df55b3ee9a0ef  gcc/testsuite/gdc.test/fail_compilation/fail19911b.d
  4a9f549603e62a9f74791f0e261c8603  gcc/testsuite/gdc.test/fail_compilation/fail19911c.d
--- 70910,70924 ----
  3a87e73c857b83aafd1846af5a1f59eb  gcc/testsuite/gdc.test/fail_compilation/fail194.d
  6d48813e52b586b298d9be7f4a37d603  gcc/testsuite/gdc.test/fail_compilation/fail195.d
  676dfacf37090247608e1eabe58d4327  gcc/testsuite/gdc.test/fail_compilation/fail19520.d
! 32bde00c421079505118183cc93e5b14  gcc/testsuite/gdc.test/fail_compilation/fail196.d
  3ad99c4ff25fed0b9151dea855acebba  gcc/testsuite/gdc.test/fail_compilation/fail19609.d
  0ef63361f290a9b73dc28f4feebb03d8  gcc/testsuite/gdc.test/fail_compilation/fail198.d
! 35e51c28817d6cc130c92af17f7d8216  gcc/testsuite/gdc.test/fail_compilation/fail19890a.d
! 69ac2e76fb412b5c819c37214a796b25  gcc/testsuite/gdc.test/fail_compilation/fail19890b.d
  1b3c90cb1eac7cc77c0d288171529f2a  gcc/testsuite/gdc.test/fail_compilation/fail19897.d
  7e3c85acd06c5b1a46bd4c550108ea93  gcc/testsuite/gdc.test/fail_compilation/fail19898a.d
  b222568e3989a82aea4c7ccf7ff42f95  gcc/testsuite/gdc.test/fail_compilation/fail19898b.d
! 6dd5bad406278481b7d4badda46d5b83  gcc/testsuite/gdc.test/fail_compilation/fail199.d
  20732ebad089aa6fc8fd4b82c40d461a  gcc/testsuite/gdc.test/fail_compilation/fail19911a.d
  7235fcff769c5fc74a7df55b3ee9a0ef  gcc/testsuite/gdc.test/fail_compilation/fail19911b.d
  4a9f549603e62a9f74791f0e261c8603  gcc/testsuite/gdc.test/fail_compilation/fail19911c.d
*************** bcc364c7146bd5c9cab057ce77ed7026  gcc/te
*** 66244,66256 ****
  3efe7c451c4866665928b1d60a91285d  gcc/testsuite/gdc.test/fail_compilation/fail19941.d
  18196dfdc67580f0c39dff25d3ad5111  gcc/testsuite/gdc.test/fail_compilation/fail19955.d
  eae23c0332e3168bbb03940c3f6c7dd7  gcc/testsuite/gdc.test/fail_compilation/fail20.d
! f69d72e7a0d4cb79a9c52eb77fd58b63  gcc/testsuite/gdc.test/fail_compilation/fail200.d
! e4df3abafbf56629fa7853c4bc1fc0ff  gcc/testsuite/gdc.test/fail_compilation/fail201.d
! 8e757aa68b23f242f09223830a9ab62c  gcc/testsuite/gdc.test/fail_compilation/fail202.d
! b2324fb836dfdde73af12bfc21f06ab7  gcc/testsuite/gdc.test/fail_compilation/fail203.d
! acb958d3216144ab5b637bc0a8fe0ab7  gcc/testsuite/gdc.test/fail_compilation/fail204.d
! f7f570eb0515fd4c916d898baa0cf919  gcc/testsuite/gdc.test/fail_compilation/fail205.d
! 0cc1e9904cbfa6d37e4ee6dd11a3c14c  gcc/testsuite/gdc.test/fail_compilation/fail206.d
  188539d90bcecc89bfb075c266e44662  gcc/testsuite/gdc.test/fail_compilation/fail207.d
  8be923779af49504b57c7ed97bb83d55  gcc/testsuite/gdc.test/fail_compilation/fail208.d
  692da97aacb73f0e5dd83773df388ad3  gcc/testsuite/gdc.test/fail_compilation/fail209.d
--- 70935,70947 ----
  3efe7c451c4866665928b1d60a91285d  gcc/testsuite/gdc.test/fail_compilation/fail19941.d
  18196dfdc67580f0c39dff25d3ad5111  gcc/testsuite/gdc.test/fail_compilation/fail19955.d
  eae23c0332e3168bbb03940c3f6c7dd7  gcc/testsuite/gdc.test/fail_compilation/fail20.d
! 05592f24921890426a604ce836f029b0  gcc/testsuite/gdc.test/fail_compilation/fail200.d
! f8af45985d6836fffb915692fd3388bb  gcc/testsuite/gdc.test/fail_compilation/fail201.d
! e2097d18625a5db42f538c6dfd5cf90f  gcc/testsuite/gdc.test/fail_compilation/fail202.d
! 0d5f5f914a3c5c2a74b8470759892f7f  gcc/testsuite/gdc.test/fail_compilation/fail203.d
! acfe12e017962a94d59a0e78e454d32c  gcc/testsuite/gdc.test/fail_compilation/fail204.d
! 08695b79696718f8dbce59db9beaeb0f  gcc/testsuite/gdc.test/fail_compilation/fail205.d
! e0f322ca97414c864fe9663e12c2ac20  gcc/testsuite/gdc.test/fail_compilation/fail206.d
  188539d90bcecc89bfb075c266e44662  gcc/testsuite/gdc.test/fail_compilation/fail207.d
  8be923779af49504b57c7ed97bb83d55  gcc/testsuite/gdc.test/fail_compilation/fail208.d
  692da97aacb73f0e5dd83773df388ad3  gcc/testsuite/gdc.test/fail_compilation/fail209.d
*************** fb44509087d96cafd81f6b3914fa210d  gcc/te
*** 66259,66279 ****
  51f7cc2b0cccf9aaa02064bf4b71122b  gcc/testsuite/gdc.test/fail_compilation/fail213.d
  210123bd50e440d7a005818b767f6554  gcc/testsuite/gdc.test/fail_compilation/fail215.d
  883136a1706c8871fa28d0215beacc4c  gcc/testsuite/gdc.test/fail_compilation/fail216.d
! 4434e18323c359d00df5d9dfd384e2e1  gcc/testsuite/gdc.test/fail_compilation/fail217.d
  9a8a6351acc528a188a180d80c1ef504  gcc/testsuite/gdc.test/fail_compilation/fail218.d
  1c2214d02026045648eb72626934c793  gcc/testsuite/gdc.test/fail_compilation/fail2195.d
  25aa1006320654cdd4ef271b53a76a69  gcc/testsuite/gdc.test/fail_compilation/fail22.d
! 4fb4e3729bce12b1c71a831a963af935  gcc/testsuite/gdc.test/fail_compilation/fail220.d
  cbf4cc7e1f96260b11e9acc29bd9dc12  gcc/testsuite/gdc.test/fail_compilation/fail221.d
  7f7a0dac0afcfc920bdff662146ff101  gcc/testsuite/gdc.test/fail_compilation/fail222.d
  0b9ee853ad7e4570d30a13257081f9bd  gcc/testsuite/gdc.test/fail_compilation/fail223.d
  2dc7de709a4a362b91e462b2499243bc  gcc/testsuite/gdc.test/fail_compilation/fail224.d
! e6ec0bfe0ef965d695db867cec64a71d  gcc/testsuite/gdc.test/fail_compilation/fail225.d
  c24efc95b4a07d93082131c006e2dd80  gcc/testsuite/gdc.test/fail_compilation/fail228.d
  9d018b2073e3b8113a51dd16bb805f1d  gcc/testsuite/gdc.test/fail_compilation/fail229.d
  58670280bc537df17b2c832c8d1f34ff  gcc/testsuite/gdc.test/fail_compilation/fail23.d
  ce4157a4d917264bab5e68a08d5e37a4  gcc/testsuite/gdc.test/fail_compilation/fail231.d
! 8fb0b64791879a43be213e2d83aa062d  gcc/testsuite/gdc.test/fail_compilation/fail232.d
  9896216c11fd8cc75cf4d8668e08ab78  gcc/testsuite/gdc.test/fail_compilation/fail233.d
  ca8c7594c80997a194fd7b1c7a8f83e4  gcc/testsuite/gdc.test/fail_compilation/fail235.d
  be2aed2168f2bd58171a55c63547ad22  gcc/testsuite/gdc.test/fail_compilation/fail236.d
--- 70950,70970 ----
  51f7cc2b0cccf9aaa02064bf4b71122b  gcc/testsuite/gdc.test/fail_compilation/fail213.d
  210123bd50e440d7a005818b767f6554  gcc/testsuite/gdc.test/fail_compilation/fail215.d
  883136a1706c8871fa28d0215beacc4c  gcc/testsuite/gdc.test/fail_compilation/fail216.d
! af487ca57216bc854bc01579a8105785  gcc/testsuite/gdc.test/fail_compilation/fail217.d
  9a8a6351acc528a188a180d80c1ef504  gcc/testsuite/gdc.test/fail_compilation/fail218.d
  1c2214d02026045648eb72626934c793  gcc/testsuite/gdc.test/fail_compilation/fail2195.d
  25aa1006320654cdd4ef271b53a76a69  gcc/testsuite/gdc.test/fail_compilation/fail22.d
! ad4fca3b9dbdc7fd24b158a3d3af5ed9  gcc/testsuite/gdc.test/fail_compilation/fail220.d
  cbf4cc7e1f96260b11e9acc29bd9dc12  gcc/testsuite/gdc.test/fail_compilation/fail221.d
  7f7a0dac0afcfc920bdff662146ff101  gcc/testsuite/gdc.test/fail_compilation/fail222.d
  0b9ee853ad7e4570d30a13257081f9bd  gcc/testsuite/gdc.test/fail_compilation/fail223.d
  2dc7de709a4a362b91e462b2499243bc  gcc/testsuite/gdc.test/fail_compilation/fail224.d
! 77b7ffd5f4d0c1fadc5c93b13bd2b63d  gcc/testsuite/gdc.test/fail_compilation/fail225.d
  c24efc95b4a07d93082131c006e2dd80  gcc/testsuite/gdc.test/fail_compilation/fail228.d
  9d018b2073e3b8113a51dd16bb805f1d  gcc/testsuite/gdc.test/fail_compilation/fail229.d
  58670280bc537df17b2c832c8d1f34ff  gcc/testsuite/gdc.test/fail_compilation/fail23.d
  ce4157a4d917264bab5e68a08d5e37a4  gcc/testsuite/gdc.test/fail_compilation/fail231.d
! 2549171f6c1309bbbd88a2c8d62fdd92  gcc/testsuite/gdc.test/fail_compilation/fail232.d
  9896216c11fd8cc75cf4d8668e08ab78  gcc/testsuite/gdc.test/fail_compilation/fail233.d
  ca8c7594c80997a194fd7b1c7a8f83e4  gcc/testsuite/gdc.test/fail_compilation/fail235.d
  be2aed2168f2bd58171a55c63547ad22  gcc/testsuite/gdc.test/fail_compilation/fail236.d
*************** d08fd87f7e32a14ee102500b0f9531f1  gcc/te
*** 66281,66287 ****
  70717553d9d07c6f6efed75e909e1cbc  gcc/testsuite/gdc.test/fail_compilation/fail237.d
  2f16b13f19f5a497b3cf934f4d948953  gcc/testsuite/gdc.test/fail_compilation/fail238_m32.d
  3eb2233732c97c5f7707bd311998a60f  gcc/testsuite/gdc.test/fail_compilation/fail238_m64.d
! b4be4d504144b3b9cd23d8658101dfef  gcc/testsuite/gdc.test/fail_compilation/fail239.d
  26d78e146ee928dc36095d4a447ba1e5  gcc/testsuite/gdc.test/fail_compilation/fail24.d
  16ec290aa427898668de3f21de843191  gcc/testsuite/gdc.test/fail_compilation/fail240.d
  0963ae4ece6c15a256bff495e0b6faf7  gcc/testsuite/gdc.test/fail_compilation/fail241.d
--- 70972,70978 ----
  70717553d9d07c6f6efed75e909e1cbc  gcc/testsuite/gdc.test/fail_compilation/fail237.d
  2f16b13f19f5a497b3cf934f4d948953  gcc/testsuite/gdc.test/fail_compilation/fail238_m32.d
  3eb2233732c97c5f7707bd311998a60f  gcc/testsuite/gdc.test/fail_compilation/fail238_m64.d
! 115789041b2ab94dc286976883caa1a5  gcc/testsuite/gdc.test/fail_compilation/fail239.d
  26d78e146ee928dc36095d4a447ba1e5  gcc/testsuite/gdc.test/fail_compilation/fail24.d
  16ec290aa427898668de3f21de843191  gcc/testsuite/gdc.test/fail_compilation/fail240.d
  0963ae4ece6c15a256bff495e0b6faf7  gcc/testsuite/gdc.test/fail_compilation/fail241.d
*************** c6cbb48c59736a68a3c7d4b98a910b59  gcc/te
*** 66296,66311 ****
  590ef2aa24b219cdecc025fbe83fba7d  gcc/testsuite/gdc.test/fail_compilation/fail25.d
  e158cccafae00fb3f49f4cf2c78a9320  gcc/testsuite/gdc.test/fail_compilation/fail250.d
  e320d0e34feeb6dd7ce433a9a66d9815  gcc/testsuite/gdc.test/fail_compilation/fail251.d
! 382004a0aabfb82f9827bc25e7ead59f  gcc/testsuite/gdc.test/fail_compilation/fail252.d
  f6ccf14b5c7d80eb12d16e44cfc779d3  gcc/testsuite/gdc.test/fail_compilation/fail253.d
  5e6643c0dc6c2c1022307cf9f3f46d39  gcc/testsuite/gdc.test/fail_compilation/fail254.d
  114dff0c18f386fe65aac70b5c4a4c92  gcc/testsuite/gdc.test/fail_compilation/fail256.d
! a0d3c36c1d24483105800cd777794797  gcc/testsuite/gdc.test/fail_compilation/fail257.d
! ded3a80b81dcf7a9a380082d43534e50  gcc/testsuite/gdc.test/fail_compilation/fail258.d
  b90f91cf996fced87d717be0e174afde  gcc/testsuite/gdc.test/fail_compilation/fail259.d
  f9629ce6d4a7fc45133336a930fb7a5c  gcc/testsuite/gdc.test/fail_compilation/fail261.d
! 7b813202f549db9894ab82bc682b37eb  gcc/testsuite/gdc.test/fail_compilation/fail262.d
! 2acfa457267d4d586d9a19356cd8a69a  gcc/testsuite/gdc.test/fail_compilation/fail263.d
  e3aaf70f1ee3ab9d4bdf647065681c97  gcc/testsuite/gdc.test/fail_compilation/fail264.d
  bcfa122f23523fa04605980ad8c03d05  gcc/testsuite/gdc.test/fail_compilation/fail265.d
  9420b8235ce6d6680a20b5c7b70be414  gcc/testsuite/gdc.test/fail_compilation/fail2656.d
--- 70987,71002 ----
  590ef2aa24b219cdecc025fbe83fba7d  gcc/testsuite/gdc.test/fail_compilation/fail25.d
  e158cccafae00fb3f49f4cf2c78a9320  gcc/testsuite/gdc.test/fail_compilation/fail250.d
  e320d0e34feeb6dd7ce433a9a66d9815  gcc/testsuite/gdc.test/fail_compilation/fail251.d
! c908fc323909d68ae82ac5769ced2b4e  gcc/testsuite/gdc.test/fail_compilation/fail252.d
  f6ccf14b5c7d80eb12d16e44cfc779d3  gcc/testsuite/gdc.test/fail_compilation/fail253.d
  5e6643c0dc6c2c1022307cf9f3f46d39  gcc/testsuite/gdc.test/fail_compilation/fail254.d
  114dff0c18f386fe65aac70b5c4a4c92  gcc/testsuite/gdc.test/fail_compilation/fail256.d
! f1243a2544274acdb7b8aa344b404728  gcc/testsuite/gdc.test/fail_compilation/fail257.d
! 0d383bd3dcb545929e59299272bd9a27  gcc/testsuite/gdc.test/fail_compilation/fail258.d
  b90f91cf996fced87d717be0e174afde  gcc/testsuite/gdc.test/fail_compilation/fail259.d
  f9629ce6d4a7fc45133336a930fb7a5c  gcc/testsuite/gdc.test/fail_compilation/fail261.d
! 1082c4045553b3c8fd036c2daff5c29e  gcc/testsuite/gdc.test/fail_compilation/fail262.d
! 0cf1dc1fe227736eec59eeed2a4cf2da  gcc/testsuite/gdc.test/fail_compilation/fail263.d
  e3aaf70f1ee3ab9d4bdf647065681c97  gcc/testsuite/gdc.test/fail_compilation/fail264.d
  bcfa122f23523fa04605980ad8c03d05  gcc/testsuite/gdc.test/fail_compilation/fail265.d
  9420b8235ce6d6680a20b5c7b70be414  gcc/testsuite/gdc.test/fail_compilation/fail2656.d
*************** b4f9f353ed280cf239cfd6c89845489d  gcc/te
*** 66314,66326 ****
  b5965be5dc9cd6528e23650b8734948f  gcc/testsuite/gdc.test/fail_compilation/fail270.d
  3930072491a7aaa7a54e2a6e6a90aadf  gcc/testsuite/gdc.test/fail_compilation/fail272.d
  b444b634e88723d6ef7105409fd28107  gcc/testsuite/gdc.test/fail_compilation/fail273.d
! 966491a982dab0f7e8a872648dd3444c  gcc/testsuite/gdc.test/fail_compilation/fail2740.d
  d61abc48c429eeb5c07704509e7c3743  gcc/testsuite/gdc.test/fail_compilation/fail275.d
! d89cfa27b63fdf04bb555aab198c3e36  gcc/testsuite/gdc.test/fail_compilation/fail276.d
  09dab98666ce2b82ba7be75d8f43dce5  gcc/testsuite/gdc.test/fail_compilation/fail278.d
! 9b9a515e79e5b1b6426fc98fd0c95e4e  gcc/testsuite/gdc.test/fail_compilation/fail279.d
! 4d143f893c98bd8a46d010110eb41ec2  gcc/testsuite/gdc.test/fail_compilation/fail280.d
! 6256bd0e126c8efebf882e7293e91cf6  gcc/testsuite/gdc.test/fail_compilation/fail281.d
  90f43eaf959be7758bd43eafa35e02f4  gcc/testsuite/gdc.test/fail_compilation/fail282.d
  4f1b0faf61014e1c3069c9d49de21a2d  gcc/testsuite/gdc.test/fail_compilation/fail284.d
  c2e57c588dd2d4a893b419ec6ed8be4c  gcc/testsuite/gdc.test/fail_compilation/fail285.d
--- 71005,71017 ----
  b5965be5dc9cd6528e23650b8734948f  gcc/testsuite/gdc.test/fail_compilation/fail270.d
  3930072491a7aaa7a54e2a6e6a90aadf  gcc/testsuite/gdc.test/fail_compilation/fail272.d
  b444b634e88723d6ef7105409fd28107  gcc/testsuite/gdc.test/fail_compilation/fail273.d
! 3a2bbcb89612d6ed5bfec9c436607c4e  gcc/testsuite/gdc.test/fail_compilation/fail2740.d
  d61abc48c429eeb5c07704509e7c3743  gcc/testsuite/gdc.test/fail_compilation/fail275.d
! 140e432c0a2d4497942fb37e83ff0acf  gcc/testsuite/gdc.test/fail_compilation/fail276.d
  09dab98666ce2b82ba7be75d8f43dce5  gcc/testsuite/gdc.test/fail_compilation/fail278.d
! 9a2085e9967a0198be547e1bf8a861c9  gcc/testsuite/gdc.test/fail_compilation/fail279.d
! 8c71905ddb013310c3f99f67c1516e49  gcc/testsuite/gdc.test/fail_compilation/fail280.d
! 05c686b7d945e42c55c0f68020beafbc  gcc/testsuite/gdc.test/fail_compilation/fail281.d
  90f43eaf959be7758bd43eafa35e02f4  gcc/testsuite/gdc.test/fail_compilation/fail282.d
  4f1b0faf61014e1c3069c9d49de21a2d  gcc/testsuite/gdc.test/fail_compilation/fail284.d
  c2e57c588dd2d4a893b419ec6ed8be4c  gcc/testsuite/gdc.test/fail_compilation/fail285.d
*************** b52ccadb1329f046aef5d7cfcec124bb  gcc/te
*** 66334,66340 ****
  4433957e8897884efd1dbf7464f5255a  gcc/testsuite/gdc.test/fail_compilation/fail297.d
  39598ace8538fb86a4a31cd07f3b73e6  gcc/testsuite/gdc.test/fail_compilation/fail298.d
  162473f65485f4213b205fa845021168  gcc/testsuite/gdc.test/fail_compilation/fail299.d
! f4edf04a7157927e39050ca2e19cfa84  gcc/testsuite/gdc.test/fail_compilation/fail3.d
  ca96cc22c1aa1fd5e02efdf1183c9dbf  gcc/testsuite/gdc.test/fail_compilation/fail301.d
  0c236ba6298b3fe9e57446095cd29a54  gcc/testsuite/gdc.test/fail_compilation/fail302.d
  d6f214995056ddacf9936b15e3ffdfd4  gcc/testsuite/gdc.test/fail_compilation/fail303.d
--- 71025,71031 ----
  4433957e8897884efd1dbf7464f5255a  gcc/testsuite/gdc.test/fail_compilation/fail297.d
  39598ace8538fb86a4a31cd07f3b73e6  gcc/testsuite/gdc.test/fail_compilation/fail298.d
  162473f65485f4213b205fa845021168  gcc/testsuite/gdc.test/fail_compilation/fail299.d
! f9d8bea764a5ad3ff63d43abd7ba2a8a  gcc/testsuite/gdc.test/fail_compilation/fail3.d
  ca96cc22c1aa1fd5e02efdf1183c9dbf  gcc/testsuite/gdc.test/fail_compilation/fail301.d
  0c236ba6298b3fe9e57446095cd29a54  gcc/testsuite/gdc.test/fail_compilation/fail302.d
  d6f214995056ddacf9936b15e3ffdfd4  gcc/testsuite/gdc.test/fail_compilation/fail303.d
*************** d6f214995056ddacf9936b15e3ffdfd4  gcc/te
*** 66342,66371 ****
  b63d38efc3e4a705832be5786a1c90a3  gcc/testsuite/gdc.test/fail_compilation/fail305.d
  ef026933cf422af0367257bfe21bd10a  gcc/testsuite/gdc.test/fail_compilation/fail306.d
  c6bb6e98c1536367c7fff657247aeddc  gcc/testsuite/gdc.test/fail_compilation/fail307.d
! 0a9a3181671e8dcb3d7cb20fb64f8c78  gcc/testsuite/gdc.test/fail_compilation/fail308.d
  4488f52e7f617871d86fc433e01729cb  gcc/testsuite/gdc.test/fail_compilation/fail309.d
  c27c16a4111f9da6c1d5504f2749718a  gcc/testsuite/gdc.test/fail_compilation/fail310.d
  76d6ac6c63251fee24d0fc294e14b0f4  gcc/testsuite/gdc.test/fail_compilation/fail311.d
  2b0571bb656dc3d2e6d762162fd98dba  gcc/testsuite/gdc.test/fail_compilation/fail312.d
! 7d280d917b01687bbdefced6c25f9297  gcc/testsuite/gdc.test/fail_compilation/fail313.d
  73cc04fad90cc7c8b32ac8005e24cfbc  gcc/testsuite/gdc.test/fail_compilation/fail314.d
  c77f5eba6a8f8b88e49475523664beb9  gcc/testsuite/gdc.test/fail_compilation/fail3144.d
  068f28b84affcc81bda963d182605391  gcc/testsuite/gdc.test/fail_compilation/fail315.d
! 98b94596a6f25de1fbfae2aac3e7fde9  gcc/testsuite/gdc.test/fail_compilation/fail3150.d
! a11a97ae031c1adc3b92e70b25def725  gcc/testsuite/gdc.test/fail_compilation/fail316.d
  f97a15be650b193f5550164ea2bb3a38  gcc/testsuite/gdc.test/fail_compilation/fail317.d
  4860b263c537097a32295e7964be5bb1  gcc/testsuite/gdc.test/fail_compilation/fail318.d
  3513928936d38f73a09df0e7ee38e58a  gcc/testsuite/gdc.test/fail_compilation/fail319.d
  81c2ead5c2f6d10937076f3dcba49e09  gcc/testsuite/gdc.test/fail_compilation/fail320.d
! 9d755e4600c10ad7a16e65bb3aea2b34  gcc/testsuite/gdc.test/fail_compilation/fail322.d
! 29d77014d91dd176166f029ffdc6d8e5  gcc/testsuite/gdc.test/fail_compilation/fail324.d
  b229fba989233af66a9e54e5daa85ecb  gcc/testsuite/gdc.test/fail_compilation/fail325.d
  1e163ea95395d92e222b459e8546217e  gcc/testsuite/gdc.test/fail_compilation/fail328.d
  57f04636090d33b61c25d253a794eca3  gcc/testsuite/gdc.test/fail_compilation/fail329.d
! 4d31e7e7ad3801e305cf90bbb15a0107  gcc/testsuite/gdc.test/fail_compilation/fail3290.d
  98e6890fb470f7a6823d1df377aa71ab  gcc/testsuite/gdc.test/fail_compilation/fail330.d
  3bbd63f014e3031c2fd9acc3469bb9e0  gcc/testsuite/gdc.test/fail_compilation/fail331.d
! 523621f39d4866f8bcf10b1d6bc27d6d  gcc/testsuite/gdc.test/fail_compilation/fail332.d
  204209620d69f584e8175ce151459722  gcc/testsuite/gdc.test/fail_compilation/fail333.d
  4404e9f66c6ddceb6eebdb6fedd1978a  gcc/testsuite/gdc.test/fail_compilation/fail334.d
  efff0f2ea1051cc3f03bca692e4cdd58  gcc/testsuite/gdc.test/fail_compilation/fail335.d
--- 71033,71062 ----
  b63d38efc3e4a705832be5786a1c90a3  gcc/testsuite/gdc.test/fail_compilation/fail305.d
  ef026933cf422af0367257bfe21bd10a  gcc/testsuite/gdc.test/fail_compilation/fail306.d
  c6bb6e98c1536367c7fff657247aeddc  gcc/testsuite/gdc.test/fail_compilation/fail307.d
! 39a9872d09a199054f81fd82b83909be  gcc/testsuite/gdc.test/fail_compilation/fail308.d
  4488f52e7f617871d86fc433e01729cb  gcc/testsuite/gdc.test/fail_compilation/fail309.d
  c27c16a4111f9da6c1d5504f2749718a  gcc/testsuite/gdc.test/fail_compilation/fail310.d
  76d6ac6c63251fee24d0fc294e14b0f4  gcc/testsuite/gdc.test/fail_compilation/fail311.d
  2b0571bb656dc3d2e6d762162fd98dba  gcc/testsuite/gdc.test/fail_compilation/fail312.d
! c42c7f56e72e1e5682c6effaf77ac723  gcc/testsuite/gdc.test/fail_compilation/fail313.d
  73cc04fad90cc7c8b32ac8005e24cfbc  gcc/testsuite/gdc.test/fail_compilation/fail314.d
  c77f5eba6a8f8b88e49475523664beb9  gcc/testsuite/gdc.test/fail_compilation/fail3144.d
  068f28b84affcc81bda963d182605391  gcc/testsuite/gdc.test/fail_compilation/fail315.d
! 717b50b0fa7011cc5fcc517fd321a8db  gcc/testsuite/gdc.test/fail_compilation/fail3150.d
! c15e5757d1100c2530af5033ae938db6  gcc/testsuite/gdc.test/fail_compilation/fail316.d
  f97a15be650b193f5550164ea2bb3a38  gcc/testsuite/gdc.test/fail_compilation/fail317.d
  4860b263c537097a32295e7964be5bb1  gcc/testsuite/gdc.test/fail_compilation/fail318.d
  3513928936d38f73a09df0e7ee38e58a  gcc/testsuite/gdc.test/fail_compilation/fail319.d
  81c2ead5c2f6d10937076f3dcba49e09  gcc/testsuite/gdc.test/fail_compilation/fail320.d
! 268122abaab8e4180bc6e53ec75faf41  gcc/testsuite/gdc.test/fail_compilation/fail322.d
! 4ac129ec71b45319155ad95f8a8d5c8c  gcc/testsuite/gdc.test/fail_compilation/fail324.d
  b229fba989233af66a9e54e5daa85ecb  gcc/testsuite/gdc.test/fail_compilation/fail325.d
  1e163ea95395d92e222b459e8546217e  gcc/testsuite/gdc.test/fail_compilation/fail328.d
  57f04636090d33b61c25d253a794eca3  gcc/testsuite/gdc.test/fail_compilation/fail329.d
! c3ff91e9e22d93e3f725978a285cf148  gcc/testsuite/gdc.test/fail_compilation/fail3290.d
  98e6890fb470f7a6823d1df377aa71ab  gcc/testsuite/gdc.test/fail_compilation/fail330.d
  3bbd63f014e3031c2fd9acc3469bb9e0  gcc/testsuite/gdc.test/fail_compilation/fail331.d
! 55a884c2cb0d85e25dfac7b325378fd8  gcc/testsuite/gdc.test/fail_compilation/fail332.d
  204209620d69f584e8175ce151459722  gcc/testsuite/gdc.test/fail_compilation/fail333.d
  4404e9f66c6ddceb6eebdb6fedd1978a  gcc/testsuite/gdc.test/fail_compilation/fail334.d
  efff0f2ea1051cc3f03bca692e4cdd58  gcc/testsuite/gdc.test/fail_compilation/fail335.d
*************** b3eb2c0c0467df5cca0b7b17db3c9887  gcc/te
*** 66373,66540 ****
  af52f8f98151dc380b2916a779a1469e  gcc/testsuite/gdc.test/fail_compilation/fail337.d
  9dab134035f73395f9667b3a9de04e29  gcc/testsuite/gdc.test/fail_compilation/fail34.d
  e475d3d4aae26195f09e289364dc3527  gcc/testsuite/gdc.test/fail_compilation/fail340.d
! ca2161f78b8febeb3b915588de9650da  gcc/testsuite/gdc.test/fail_compilation/fail341.d
  97e55f71e525cecd6f403633a9fbe152  gcc/testsuite/gdc.test/fail_compilation/fail343.d
! 228af10b9047043480535a41ec351545  gcc/testsuite/gdc.test/fail_compilation/fail344.d
! 9f4967fc75ba2f1089bc30dea876a389  gcc/testsuite/gdc.test/fail_compilation/fail346.d
! 84c73136e27673efb63ab7a944e9d576  gcc/testsuite/gdc.test/fail_compilation/fail347.d
  c01ec12b88b5f03a5f5307240f13200c  gcc/testsuite/gdc.test/fail_compilation/fail349.d
  97203d16ca486b5808af902fbc251591  gcc/testsuite/gdc.test/fail_compilation/fail35.d
  25522bf7b54e57b5e118978cc67beae1  gcc/testsuite/gdc.test/fail_compilation/fail351.d
  fd946b4fc9ac05e46c66850cb7ff4e37  gcc/testsuite/gdc.test/fail_compilation/fail352.d
  be63f96cbb150e0c0180257ec52bb5db  gcc/testsuite/gdc.test/fail_compilation/fail354.d
  cd75751efb770936e03544d26fa2b06c  gcc/testsuite/gdc.test/fail_compilation/fail355.d
! b00ca6eb0ac0f087ca5863f43fdc0958  gcc/testsuite/gdc.test/fail_compilation/fail356a.d
! 23e4c793c914f74a09a71c80be97dce3  gcc/testsuite/gdc.test/fail_compilation/fail356b.d
! 85eff2f4c426302344071a4311cc4e9e  gcc/testsuite/gdc.test/fail_compilation/fail356c.d
! 2135fab34ad378f302b1d8048c8a494d  gcc/testsuite/gdc.test/fail_compilation/fail3581a.d
! 9170ca9c0577617f4c3b5a954ffa5243  gcc/testsuite/gdc.test/fail_compilation/fail3581b.d
! 2ffe4c8d07d27ced9de5286538c556c3  gcc/testsuite/gdc.test/fail_compilation/fail359.d
  fc4c24c56590c9039821709405f82948  gcc/testsuite/gdc.test/fail_compilation/fail36.d
  893d01b4f895cd9fb806b68bc07922bf  gcc/testsuite/gdc.test/fail_compilation/fail3672.d
! 0defdc776eb9696f67c5685ddbec422c  gcc/testsuite/gdc.test/fail_compilation/fail3673a.d
! ac7e314ae70ce6aaa3db98506d1716d8  gcc/testsuite/gdc.test/fail_compilation/fail3673b.d
  b91f7d24571ac848e63283fd3fe3135b  gcc/testsuite/gdc.test/fail_compilation/fail3703.d
! b78e09b74876e59e94f8cf94981c5c32  gcc/testsuite/gdc.test/fail_compilation/fail3731.d
! 3f63653e0d92102622d367a0ec9fb76c  gcc/testsuite/gdc.test/fail_compilation/fail3753.d
  47267158c16951a1e472c52d56f7df72  gcc/testsuite/gdc.test/fail_compilation/fail37_m32.d
  fc12c619f8eecf9adc23fcb0ac79d743  gcc/testsuite/gdc.test/fail_compilation/fail37_m64.d
  46524b414cac1aef8ed066ec861888a3  gcc/testsuite/gdc.test/fail_compilation/fail38.d
  18b48e8ba7ab5f4a489ec8cd5606f300  gcc/testsuite/gdc.test/fail_compilation/fail3882.d
! 2676afcc6d4911134bbb564ae5f6502a  gcc/testsuite/gdc.test/fail_compilation/fail3895.d
  385f637402117427e70546eee8514a66  gcc/testsuite/gdc.test/fail_compilation/fail39.d
  004cddb06ba8bd0acbc599e25e0a692a  gcc/testsuite/gdc.test/fail_compilation/fail3990.d
  b08bd0cee75ec54f953959b1d982b23e  gcc/testsuite/gdc.test/fail_compilation/fail40.d
  d2b1be8a040e5590c052554cc7e36c7f  gcc/testsuite/gdc.test/fail_compilation/fail4082.d
  99b2641a9e4d2377c554452d592fecaa  gcc/testsuite/gdc.test/fail_compilation/fail41.d
  ef7dedcc08bbe8b6346a557a366884f0  gcc/testsuite/gdc.test/fail_compilation/fail42.d
! ceb881dfecf17f5cac613c726aad1291  gcc/testsuite/gdc.test/fail_compilation/fail4206.d
! 1f5c5d5e0ec4170c7918e79341656d06  gcc/testsuite/gdc.test/fail_compilation/fail4269a.d
! 9957c9223631b6a055ca8f6cbd8d2885  gcc/testsuite/gdc.test/fail_compilation/fail4269b.d
! e9275abd7472f7db68488795efd4476f  gcc/testsuite/gdc.test/fail_compilation/fail4269c.d
! 6cb5f23ce405e3467856fe7947def630  gcc/testsuite/gdc.test/fail_compilation/fail4269d.d
! b2a9457df74c28e84e81d06a9fd82d0c  gcc/testsuite/gdc.test/fail_compilation/fail4269e.d
! ed69511624b7dd346f963a0b8e26dea0  gcc/testsuite/gdc.test/fail_compilation/fail4269f.d
! 9d59c8236fe57a8636ffdd1289d696bf  gcc/testsuite/gdc.test/fail_compilation/fail4269g.d
  b36f34211c127f9d14b0221649b8a60c  gcc/testsuite/gdc.test/fail_compilation/fail4374.d
! 3ab6aee52164d5cf066b073de29bf53e  gcc/testsuite/gdc.test/fail_compilation/fail4375a.d
! f5caa5adb006c829819fa99f96d48c0c  gcc/testsuite/gdc.test/fail_compilation/fail4375b.d
! b5121d94ddb7af33d2a88e637bacce6b  gcc/testsuite/gdc.test/fail_compilation/fail4375c.d
! c0a3cb11123eca1a4326eaf7b4cbc291  gcc/testsuite/gdc.test/fail_compilation/fail4375d.d
! 0df789c97bcb12fabb6d9be781192218  gcc/testsuite/gdc.test/fail_compilation/fail4375e.d
! 4a92678ca9e79b7d0472df6f5ae37138  gcc/testsuite/gdc.test/fail_compilation/fail4375f.d
! 958b2b7e9d99c579d18694a6b53b5bf8  gcc/testsuite/gdc.test/fail_compilation/fail4375g.d
! 4820e5b5d168df7e6b0788713a8a1afd  gcc/testsuite/gdc.test/fail_compilation/fail4375h.d
! 357943a1f630684299a464947b034207  gcc/testsuite/gdc.test/fail_compilation/fail4375i.d
! 2958acdc2b69ced969502e1d2cf3db08  gcc/testsuite/gdc.test/fail_compilation/fail4375j.d
! 302b2f398d068623bfe6a44a7e492a1e  gcc/testsuite/gdc.test/fail_compilation/fail4375k.d
! 74925cb842e2840771248455d81d684f  gcc/testsuite/gdc.test/fail_compilation/fail4375l.d
! 2cd827b880fd40e35df8fa9027a723e4  gcc/testsuite/gdc.test/fail_compilation/fail4375m.d
! 6fa334094576ed180e4d7cb36896de81  gcc/testsuite/gdc.test/fail_compilation/fail4375o.d
! 23d056dacc8b9cdddcf3e3dc73dcccb6  gcc/testsuite/gdc.test/fail_compilation/fail4375p.d
! e6e819fea3c5f218da327aada5901e4e  gcc/testsuite/gdc.test/fail_compilation/fail4375q.d
! 40c97633e8a472fb48351dd49ab833fd  gcc/testsuite/gdc.test/fail_compilation/fail4375r.d
! d13561530b3aa180b268f3433a132bdb  gcc/testsuite/gdc.test/fail_compilation/fail4375s.d
! ab7c89d2e81cae7402d8826e91bc42f9  gcc/testsuite/gdc.test/fail_compilation/fail4375t.d
! 7a7a3746cc6c0d3af7df96f7ed8cd5ab  gcc/testsuite/gdc.test/fail_compilation/fail4375u.d
! f29546095811fac81ab6b668eeae9417  gcc/testsuite/gdc.test/fail_compilation/fail4375v.d
! a638428dc10b754ea6d7a8ce4b49ea49  gcc/testsuite/gdc.test/fail_compilation/fail4375w.d
! e9aedea6fdb282d7d58a9c2ba0f8215b  gcc/testsuite/gdc.test/fail_compilation/fail4375x.d
! e220b181f687b117cb95329894580156  gcc/testsuite/gdc.test/fail_compilation/fail4375y.d
  92f644ce2a122a7800e1f3d80ff9ec22  gcc/testsuite/gdc.test/fail_compilation/fail44.d
  85974437da906688a5c60724b7f1300f  gcc/testsuite/gdc.test/fail_compilation/fail4421.d
  f8c5e02f14c1a0fb9541c25514c927b4  gcc/testsuite/gdc.test/fail_compilation/fail4448.d
  9487dba3b2347281b7dcbb1128058ecb  gcc/testsuite/gdc.test/fail_compilation/fail45.d
! e11ff5818de709f7b5624e7554e52ff3  gcc/testsuite/gdc.test/fail_compilation/fail4510.d
! eb88b7e8c09895b1111431010bdcf631  gcc/testsuite/gdc.test/fail_compilation/fail4511.d
! d5d48472c0bff48658573b066c3c368d  gcc/testsuite/gdc.test/fail_compilation/fail4517.d
  77aeaa5915f3b3f7e866d92b911046f2  gcc/testsuite/gdc.test/fail_compilation/fail4559.d
  7dc6297222339ca1660fb063bc7e1839  gcc/testsuite/gdc.test/fail_compilation/fail46.d
! 51abcea6f3a1db8710b51baa67b686ac  gcc/testsuite/gdc.test/fail_compilation/fail4611.d
! f8618244e6092178ebe473f37786039a  gcc/testsuite/gdc.test/fail_compilation/fail47.d
! c19c32c396e204f68267269db9574a9a  gcc/testsuite/gdc.test/fail_compilation/fail4958.d
  2347fafbed30c54a57d5db6691cc11b4  gcc/testsuite/gdc.test/fail_compilation/fail50.d
  622dc7ed1884906e8019739fa0301173  gcc/testsuite/gdc.test/fail_compilation/fail51.d
  8d25f7f491987760fd26da9f500e3054  gcc/testsuite/gdc.test/fail_compilation/fail52.d
! d0eb0373636db24d31ffec6d10f19098  gcc/testsuite/gdc.test/fail_compilation/fail53.d
  90f4454981b76302da9f5b91db7ff7f9  gcc/testsuite/gdc.test/fail_compilation/fail54.d
! 2a821fa11b999bb231ee181fa3089d76  gcc/testsuite/gdc.test/fail_compilation/fail5435.d
! 11d3631b7cad8033977d6e4a6c08a0ee  gcc/testsuite/gdc.test/fail_compilation/fail55.d
! 4b3432076ff8ed70b4cfc3667fb1bf09  gcc/testsuite/gdc.test/fail_compilation/fail56.d
! 1aea71e16cc3a3373e740f7d74be3ac3  gcc/testsuite/gdc.test/fail_compilation/fail5634.d
! b9d05322aa1a519ff9f971e05df68f97  gcc/testsuite/gdc.test/fail_compilation/fail57.d
! 8a34e5df142adacf3d28cf148b4b82aa  gcc/testsuite/gdc.test/fail_compilation/fail5733.d
! 2e9d7a5774899fa13f209af0471c1792  gcc/testsuite/gdc.test/fail_compilation/fail58.d
! 2ac1da6cd86d330da9f2a97f98ac5813  gcc/testsuite/gdc.test/fail_compilation/fail5851.d
  7c8a19c914d81360adccccd49119af56  gcc/testsuite/gdc.test/fail_compilation/fail59.d
! 7507d4b8a0ac7aec92b13015459857b3  gcc/testsuite/gdc.test/fail_compilation/fail5953a1.d
! 7992a15e39ae17443252a4ded13a0ca6  gcc/testsuite/gdc.test/fail_compilation/fail5953a2.d
! 9d83bd6ad3717c71dc004b87c44b5e90  gcc/testsuite/gdc.test/fail_compilation/fail5953s1.d
! b46018aa0ea649aae072d911d78ef8e5  gcc/testsuite/gdc.test/fail_compilation/fail5953s2.d
! 8469974b284297e26fd1486e7ba50623  gcc/testsuite/gdc.test/fail_compilation/fail60.d
! ae3cf5486ade62b9374050ea17da9427  gcc/testsuite/gdc.test/fail_compilation/fail6029.d
  95ef1cdc65149baf41b2a7d02c30cc49  gcc/testsuite/gdc.test/fail_compilation/fail61.d
  8f6999211cd4a06fbf0f909423b8407a  gcc/testsuite/gdc.test/fail_compilation/fail6107.d
  83ec1189a51a4717d36f79f7c5b50ad6  gcc/testsuite/gdc.test/fail_compilation/fail62.d
! 5c048609a97474d3877ea862606b345b  gcc/testsuite/gdc.test/fail_compilation/fail6242.d
  9a2ec2f77d71e22b8aeef39fd5892fd9  gcc/testsuite/gdc.test/fail_compilation/fail63.d
  8230d8255b56cbf30019bf6566785900  gcc/testsuite/gdc.test/fail_compilation/fail6334.d
  dd1afb63a95e4a4bf7c836b700aac6dd  gcc/testsuite/gdc.test/fail_compilation/fail6453.d
! 9b80f82c2fad9bb3c4c6f14cdd623c1b  gcc/testsuite/gdc.test/fail_compilation/fail6458.d
! 3df8bb5f05fd105a2f96bf7ae0e0bac7  gcc/testsuite/gdc.test/fail_compilation/fail6497.d
! a1646de469228bf2708574084dcb4e05  gcc/testsuite/gdc.test/fail_compilation/fail6561.d
  5321a4dc4260fa5cad9eecce638317cb  gcc/testsuite/gdc.test/fail_compilation/fail66.d
! 5823fd5ebe17154a5ff2a03d8a111599  gcc/testsuite/gdc.test/fail_compilation/fail6611.d
  aed4699504ea7827196b7c8949d4ba91  gcc/testsuite/gdc.test/fail_compilation/fail6652.d
! 74a9cb58c8938f16056e2b2df0925984  gcc/testsuite/gdc.test/fail_compilation/fail6781.d
  b9dee4f496e9389688bb558ac4d09448  gcc/testsuite/gdc.test/fail_compilation/fail6795.d
  63c5b0dc35857a583053fb5b8b7f6c4a  gcc/testsuite/gdc.test/fail_compilation/fail6889.d
! a4bbb5324f1b4bd7a4da16fedddd3216  gcc/testsuite/gdc.test/fail_compilation/fail6968.d
  4f5e9643c98ab73f981a090b5ede3c6b  gcc/testsuite/gdc.test/fail_compilation/fail7077.d
! cffce24c02803efae2a3ccc969cdf4f6  gcc/testsuite/gdc.test/fail_compilation/fail7173.d
! 32f93f1900d5480954a72558f8628734  gcc/testsuite/gdc.test/fail_compilation/fail7178.d
  59739a667600e72da33ad99594d09fc6  gcc/testsuite/gdc.test/fail_compilation/fail72.d
! 11abe77006a0f57b1466f0348418e841  gcc/testsuite/gdc.test/fail_compilation/fail7234.d
  b76922cd751e594db4984440f5dcd684  gcc/testsuite/gdc.test/fail_compilation/fail73.d
! 88297bf224555eeda1d0d609d978745a  gcc/testsuite/gdc.test/fail_compilation/fail7369.d
  501f2b3778ebd6b2e5493a0fa9a7f20d  gcc/testsuite/gdc.test/fail_compilation/fail74.d
! e41961644f77f8b6b5da460375f2e3ab  gcc/testsuite/gdc.test/fail_compilation/fail7424b.d
! dc87bb47fc7b9be70985ec0fc4bb5001  gcc/testsuite/gdc.test/fail_compilation/fail7424c.d
! b6da219487637e0f61769c66bb263db4  gcc/testsuite/gdc.test/fail_compilation/fail7424d.d
! 4b42ea0a33c04943948693bd9b294ffb  gcc/testsuite/gdc.test/fail_compilation/fail7424e.d
! 169850ebe4ccb089c2523db1917fffb6  gcc/testsuite/gdc.test/fail_compilation/fail7424f.d
! 0b28b626fc104ca09a5cc945ee5e5bca  gcc/testsuite/gdc.test/fail_compilation/fail7424g.d
! d8684d4c60fc979c27046f9fa8be49b0  gcc/testsuite/gdc.test/fail_compilation/fail7424h.d
! b19dbcc0a7a5aa58c3bfd9fb731cd6b0  gcc/testsuite/gdc.test/fail_compilation/fail7424i.d
  9bcf0d7f8dc25ee08d2b358feeecce5b  gcc/testsuite/gdc.test/fail_compilation/fail75.d
! 265ef58ed84e295d081e5a9e9456e987  gcc/testsuite/gdc.test/fail_compilation/fail7524a.d
! 22fbb28a456a178eb7ffcf04c4d25ded  gcc/testsuite/gdc.test/fail_compilation/fail7524b.d
  c66877e43f14604e03d886630f87827e  gcc/testsuite/gdc.test/fail_compilation/fail76.d
! 3d5ef85ca1598dca5133bfc32cebd182  gcc/testsuite/gdc.test/fail_compilation/fail7603a.d
! 5078a795c532ce889494c70401a97cd0  gcc/testsuite/gdc.test/fail_compilation/fail7603b.d
! 8d8de1ac1a1124b53c50bf594c8f06bf  gcc/testsuite/gdc.test/fail_compilation/fail7603c.d
! 3c2ce92359ced31f246faac46f9f239b  gcc/testsuite/gdc.test/fail_compilation/fail77.d
! 7508fbbed6ab1effc33d8fadba657a8d  gcc/testsuite/gdc.test/fail_compilation/fail7702.d
! 1ca11b64af14842ca7281c012610c273  gcc/testsuite/gdc.test/fail_compilation/fail7751.d
  ef4d9a40e447e8e44aa3cf6219e708af  gcc/testsuite/gdc.test/fail_compilation/fail78.d
  a0b51dea5b29ec1ba188d673be8dc6f2  gcc/testsuite/gdc.test/fail_compilation/fail7848.d
! 5351180bcc4a364721eaf678bb5279ab  gcc/testsuite/gdc.test/fail_compilation/fail7851.d
! 876cf971a13de37830e368e0618cebc4  gcc/testsuite/gdc.test/fail_compilation/fail7859.d
! dcd6bdf72599d999bf97a1f96dd45f85  gcc/testsuite/gdc.test/fail_compilation/fail7861.d
  e17d91e03fd1129800f5ad6668fc255d  gcc/testsuite/gdc.test/fail_compilation/fail7862.d
! b3b76f524028f63c0efc8bc45faf2082  gcc/testsuite/gdc.test/fail_compilation/fail79.d
  a0a827ac3a6216db01074409f04facc1  gcc/testsuite/gdc.test/fail_compilation/fail7903.d
! 455249bd1170fe02fea5723a0e0c5904  gcc/testsuite/gdc.test/fail_compilation/fail8009.d
! c222b252dff6cf6c0bb39e3d162bae54  gcc/testsuite/gdc.test/fail_compilation/fail8032.d
  32e498c347ba242707b9d8161b4453be  gcc/testsuite/gdc.test/fail_compilation/fail80_m32.d
  40c308f403f490c6ed78c97e659c1a74  gcc/testsuite/gdc.test/fail_compilation/fail80_m64.d
  a0fd0181461725c24920aba037162fcf  gcc/testsuite/gdc.test/fail_compilation/fail8179b.d
  00494b365b95ccb93500cfcc6ebaaa99  gcc/testsuite/gdc.test/fail_compilation/fail8217.d
! 9c25b9068ae6f4bc49747a493c36a60b  gcc/testsuite/gdc.test/fail_compilation/fail8313.d
  ea6e5ebd5d5bf362be413be7448fde8c  gcc/testsuite/gdc.test/fail_compilation/fail8373.d
  73d40d3fee1d618e8980a4e860f22cd2  gcc/testsuite/gdc.test/fail_compilation/fail86.d
  cffd439d0a05081a17862f94a3576f36  gcc/testsuite/gdc.test/fail_compilation/fail8631.d
! fe455be4c18278308ade19231fe0bc51  gcc/testsuite/gdc.test/fail_compilation/fail8691.d
  bab594490adeca400049585626aaccab  gcc/testsuite/gdc.test/fail_compilation/fail8724.d
  1ac2d85770f61331561122c81ef4bf8b  gcc/testsuite/gdc.test/fail_compilation/fail9.d
  23b35bda012b649a7723a38bbb52c805  gcc/testsuite/gdc.test/fail_compilation/fail9063.d
--- 71064,71231 ----
  af52f8f98151dc380b2916a779a1469e  gcc/testsuite/gdc.test/fail_compilation/fail337.d
  9dab134035f73395f9667b3a9de04e29  gcc/testsuite/gdc.test/fail_compilation/fail34.d
  e475d3d4aae26195f09e289364dc3527  gcc/testsuite/gdc.test/fail_compilation/fail340.d
! a3a08c83d666abdf7b8fb001a75ca1c3  gcc/testsuite/gdc.test/fail_compilation/fail341.d
  97e55f71e525cecd6f403633a9fbe152  gcc/testsuite/gdc.test/fail_compilation/fail343.d
! f332a94ead175c47a5de77a06e6410b4  gcc/testsuite/gdc.test/fail_compilation/fail344.d
! 019aa56664e551e889a6c10b923e78be  gcc/testsuite/gdc.test/fail_compilation/fail346.d
! a6510293798d1a01cb1d8dc91e04706c  gcc/testsuite/gdc.test/fail_compilation/fail347.d
  c01ec12b88b5f03a5f5307240f13200c  gcc/testsuite/gdc.test/fail_compilation/fail349.d
  97203d16ca486b5808af902fbc251591  gcc/testsuite/gdc.test/fail_compilation/fail35.d
  25522bf7b54e57b5e118978cc67beae1  gcc/testsuite/gdc.test/fail_compilation/fail351.d
  fd946b4fc9ac05e46c66850cb7ff4e37  gcc/testsuite/gdc.test/fail_compilation/fail352.d
  be63f96cbb150e0c0180257ec52bb5db  gcc/testsuite/gdc.test/fail_compilation/fail354.d
  cd75751efb770936e03544d26fa2b06c  gcc/testsuite/gdc.test/fail_compilation/fail355.d
! 74f680f546f739dc29795ea5e8b13c39  gcc/testsuite/gdc.test/fail_compilation/fail356a.d
! 5a66ecde16238bcf9cf7dc5f63013203  gcc/testsuite/gdc.test/fail_compilation/fail356b.d
! 6b1b322bfc0f2cf4a699ef8b03e35af3  gcc/testsuite/gdc.test/fail_compilation/fail356c.d
! 315e8ea8d2a4134e7e31c481a7002be9  gcc/testsuite/gdc.test/fail_compilation/fail3581a.d
! 06b4f133b88fa879e44e455dfa384c83  gcc/testsuite/gdc.test/fail_compilation/fail3581b.d
! 21a12756e0c23cb8422db5246346afbf  gcc/testsuite/gdc.test/fail_compilation/fail359.d
  fc4c24c56590c9039821709405f82948  gcc/testsuite/gdc.test/fail_compilation/fail36.d
  893d01b4f895cd9fb806b68bc07922bf  gcc/testsuite/gdc.test/fail_compilation/fail3672.d
! 7247a47f45f036756a7c0b54274e273c  gcc/testsuite/gdc.test/fail_compilation/fail3673a.d
! 1d2567efb51ee9926e9ffd28b507ca90  gcc/testsuite/gdc.test/fail_compilation/fail3673b.d
  b91f7d24571ac848e63283fd3fe3135b  gcc/testsuite/gdc.test/fail_compilation/fail3703.d
! 11af7cdbfdfe0e1a51be20f239eee6e3  gcc/testsuite/gdc.test/fail_compilation/fail3731.d
! 55436e910668f7f4e60bdb9597c32d9e  gcc/testsuite/gdc.test/fail_compilation/fail3753.d
  47267158c16951a1e472c52d56f7df72  gcc/testsuite/gdc.test/fail_compilation/fail37_m32.d
  fc12c619f8eecf9adc23fcb0ac79d743  gcc/testsuite/gdc.test/fail_compilation/fail37_m64.d
  46524b414cac1aef8ed066ec861888a3  gcc/testsuite/gdc.test/fail_compilation/fail38.d
  18b48e8ba7ab5f4a489ec8cd5606f300  gcc/testsuite/gdc.test/fail_compilation/fail3882.d
! fb2565d650672ded0c5a2efd0b6e2c4a  gcc/testsuite/gdc.test/fail_compilation/fail3895.d
  385f637402117427e70546eee8514a66  gcc/testsuite/gdc.test/fail_compilation/fail39.d
  004cddb06ba8bd0acbc599e25e0a692a  gcc/testsuite/gdc.test/fail_compilation/fail3990.d
  b08bd0cee75ec54f953959b1d982b23e  gcc/testsuite/gdc.test/fail_compilation/fail40.d
  d2b1be8a040e5590c052554cc7e36c7f  gcc/testsuite/gdc.test/fail_compilation/fail4082.d
  99b2641a9e4d2377c554452d592fecaa  gcc/testsuite/gdc.test/fail_compilation/fail41.d
  ef7dedcc08bbe8b6346a557a366884f0  gcc/testsuite/gdc.test/fail_compilation/fail42.d
! 6df76bbb49a6a24e29515a2adaf498cd  gcc/testsuite/gdc.test/fail_compilation/fail4206.d
! c8e37171fec753f276c1683ac925cbc0  gcc/testsuite/gdc.test/fail_compilation/fail4269a.d
! 610c5122507f862fea75255cd94c3f22  gcc/testsuite/gdc.test/fail_compilation/fail4269b.d
! da1dd80361f587563d8e21dbda2b9dc7  gcc/testsuite/gdc.test/fail_compilation/fail4269c.d
! 562a7b498cea26253db494302d3e7be7  gcc/testsuite/gdc.test/fail_compilation/fail4269d.d
! 1ca0dc33849aaa013b7ce5b78f1f1b16  gcc/testsuite/gdc.test/fail_compilation/fail4269e.d
! 7e320cba69b1ca1fa0179755e3337cbc  gcc/testsuite/gdc.test/fail_compilation/fail4269f.d
! e2a4b369785e7e5d117aa961f21d213a  gcc/testsuite/gdc.test/fail_compilation/fail4269g.d
  b36f34211c127f9d14b0221649b8a60c  gcc/testsuite/gdc.test/fail_compilation/fail4374.d
! 1bafba2286a44468d381d7ad808cd5ec  gcc/testsuite/gdc.test/fail_compilation/fail4375a.d
! 71c86f71dee0deb4795d667c1f5f14bd  gcc/testsuite/gdc.test/fail_compilation/fail4375b.d
! e965549d285fbc48a3242dbda08f345a  gcc/testsuite/gdc.test/fail_compilation/fail4375c.d
! 8a5cf9cd4540e253f8a82e8f28d5cb97  gcc/testsuite/gdc.test/fail_compilation/fail4375d.d
! e93114b9e9745eb4bbbc2bba58da9ef2  gcc/testsuite/gdc.test/fail_compilation/fail4375e.d
! 52c1e56e3ba120a7babf4fc8e6bfcf25  gcc/testsuite/gdc.test/fail_compilation/fail4375f.d
! 26416752473cb185111c056ae21afe2b  gcc/testsuite/gdc.test/fail_compilation/fail4375g.d
! 399a37b73bcb34147dc887161a6b1d30  gcc/testsuite/gdc.test/fail_compilation/fail4375h.d
! ebc7f0c82ace7d1382a667993be1b1aa  gcc/testsuite/gdc.test/fail_compilation/fail4375i.d
! 99d335b5736595e28067b2acd205089b  gcc/testsuite/gdc.test/fail_compilation/fail4375j.d
! 21a90bfc9827e979644770240b4bc0d7  gcc/testsuite/gdc.test/fail_compilation/fail4375k.d
! 5bfa8851536f824c96da6020b447b05d  gcc/testsuite/gdc.test/fail_compilation/fail4375l.d
! bd91b9681230cf058138f6f0c017e81f  gcc/testsuite/gdc.test/fail_compilation/fail4375m.d
! 07aca826ebfa47bf9a4d31a373273330  gcc/testsuite/gdc.test/fail_compilation/fail4375o.d
! de58a99349e0c27f7d2058583e37f749  gcc/testsuite/gdc.test/fail_compilation/fail4375p.d
! 01e82462812fcc7987f9258991778fee  gcc/testsuite/gdc.test/fail_compilation/fail4375q.d
! e36dd6d8f70ba04eebe7f600962fcbb9  gcc/testsuite/gdc.test/fail_compilation/fail4375r.d
! 9d23803d8ac32249756a2f4a6c5eeae7  gcc/testsuite/gdc.test/fail_compilation/fail4375s.d
! fadcfa5de84b11e1db153d75ef7f5cb1  gcc/testsuite/gdc.test/fail_compilation/fail4375t.d
! 828f24c1ea67535b6165c22f7adfb907  gcc/testsuite/gdc.test/fail_compilation/fail4375u.d
! 6c5af033d5ee34e2b0b67c78b82331e3  gcc/testsuite/gdc.test/fail_compilation/fail4375v.d
! 4394974b7c7147a3e468dbe6c94e281a  gcc/testsuite/gdc.test/fail_compilation/fail4375w.d
! 544c73628975630bce45702524c1654c  gcc/testsuite/gdc.test/fail_compilation/fail4375x.d
! 502b281f80f904f9f828246e61f6fe3e  gcc/testsuite/gdc.test/fail_compilation/fail4375y.d
  92f644ce2a122a7800e1f3d80ff9ec22  gcc/testsuite/gdc.test/fail_compilation/fail44.d
  85974437da906688a5c60724b7f1300f  gcc/testsuite/gdc.test/fail_compilation/fail4421.d
  f8c5e02f14c1a0fb9541c25514c927b4  gcc/testsuite/gdc.test/fail_compilation/fail4448.d
  9487dba3b2347281b7dcbb1128058ecb  gcc/testsuite/gdc.test/fail_compilation/fail45.d
! 372cc7df83288c26deec10920b7ff241  gcc/testsuite/gdc.test/fail_compilation/fail4510.d
! a1c72712e50cfccb9828a18700353ddb  gcc/testsuite/gdc.test/fail_compilation/fail4511.d
! 260f876bbb3c9d96a4f3fc33e62b131f  gcc/testsuite/gdc.test/fail_compilation/fail4517.d
  77aeaa5915f3b3f7e866d92b911046f2  gcc/testsuite/gdc.test/fail_compilation/fail4559.d
  7dc6297222339ca1660fb063bc7e1839  gcc/testsuite/gdc.test/fail_compilation/fail46.d
! 62e1d98def06f38c091fed323056e4fa  gcc/testsuite/gdc.test/fail_compilation/fail4611.d
! 6892651029dab21677859d79b8bf8088  gcc/testsuite/gdc.test/fail_compilation/fail47.d
! 56535cbb92d2cfd2a7cefcad0cb06450  gcc/testsuite/gdc.test/fail_compilation/fail4958.d
  2347fafbed30c54a57d5db6691cc11b4  gcc/testsuite/gdc.test/fail_compilation/fail50.d
  622dc7ed1884906e8019739fa0301173  gcc/testsuite/gdc.test/fail_compilation/fail51.d
  8d25f7f491987760fd26da9f500e3054  gcc/testsuite/gdc.test/fail_compilation/fail52.d
! 22e1ce68370a8ebbe3b4a289e2e902a0  gcc/testsuite/gdc.test/fail_compilation/fail53.d
  90f4454981b76302da9f5b91db7ff7f9  gcc/testsuite/gdc.test/fail_compilation/fail54.d
! 726fee55e204e2ae6f7096c796b293d4  gcc/testsuite/gdc.test/fail_compilation/fail5435.d
! ce0de773e6a50fd2386921c98d18d030  gcc/testsuite/gdc.test/fail_compilation/fail55.d
! 6e81ace5c4651e1424f030312d47cffc  gcc/testsuite/gdc.test/fail_compilation/fail56.d
! cd3307a3394091a0065c50345d1d27c8  gcc/testsuite/gdc.test/fail_compilation/fail5634.d
! 12f19bd2092f28fd800b72dfcccc6cd1  gcc/testsuite/gdc.test/fail_compilation/fail57.d
! 240a3c909830bbc7f5edbb0a6ccb216c  gcc/testsuite/gdc.test/fail_compilation/fail5733.d
! d988349a4cf02d1f3522afb9c68eb148  gcc/testsuite/gdc.test/fail_compilation/fail58.d
! f93769c76850f0b989d3a439f9819ef8  gcc/testsuite/gdc.test/fail_compilation/fail5851.d
  7c8a19c914d81360adccccd49119af56  gcc/testsuite/gdc.test/fail_compilation/fail59.d
! 0fa8371b53286c121ee2f9322b175961  gcc/testsuite/gdc.test/fail_compilation/fail5953a1.d
! 496d05e780a77d4ce554c8f3df532f36  gcc/testsuite/gdc.test/fail_compilation/fail5953a2.d
! f3669e435f1e14c84bb61ff5c428cb46  gcc/testsuite/gdc.test/fail_compilation/fail5953s1.d
! dc1ca007f2c683eced50df7662e43e67  gcc/testsuite/gdc.test/fail_compilation/fail5953s2.d
! ac5e82650cb9be01fd0c472a0f46ded2  gcc/testsuite/gdc.test/fail_compilation/fail60.d
! 42a1255944d9bddb16e627a61865d1bc  gcc/testsuite/gdc.test/fail_compilation/fail6029.d
  95ef1cdc65149baf41b2a7d02c30cc49  gcc/testsuite/gdc.test/fail_compilation/fail61.d
  8f6999211cd4a06fbf0f909423b8407a  gcc/testsuite/gdc.test/fail_compilation/fail6107.d
  83ec1189a51a4717d36f79f7c5b50ad6  gcc/testsuite/gdc.test/fail_compilation/fail62.d
! 6629308a328dba0f022ef7de019f4910  gcc/testsuite/gdc.test/fail_compilation/fail6242.d
  9a2ec2f77d71e22b8aeef39fd5892fd9  gcc/testsuite/gdc.test/fail_compilation/fail63.d
  8230d8255b56cbf30019bf6566785900  gcc/testsuite/gdc.test/fail_compilation/fail6334.d
  dd1afb63a95e4a4bf7c836b700aac6dd  gcc/testsuite/gdc.test/fail_compilation/fail6453.d
! f6ad81f6c854268ec6aa1653a1d0a713  gcc/testsuite/gdc.test/fail_compilation/fail6458.d
! 939f57e656ee0ebf701e70ea08291c32  gcc/testsuite/gdc.test/fail_compilation/fail6497.d
! 611d6b962d4185ffdab95c02bc8df4e4  gcc/testsuite/gdc.test/fail_compilation/fail6561.d
  5321a4dc4260fa5cad9eecce638317cb  gcc/testsuite/gdc.test/fail_compilation/fail66.d
! 9e7996a6ce93324b738d224ae2c4c197  gcc/testsuite/gdc.test/fail_compilation/fail6611.d
  aed4699504ea7827196b7c8949d4ba91  gcc/testsuite/gdc.test/fail_compilation/fail6652.d
! ccfea15dc14dfc824be1ec62b8a31852  gcc/testsuite/gdc.test/fail_compilation/fail6781.d
  b9dee4f496e9389688bb558ac4d09448  gcc/testsuite/gdc.test/fail_compilation/fail6795.d
  63c5b0dc35857a583053fb5b8b7f6c4a  gcc/testsuite/gdc.test/fail_compilation/fail6889.d
! 3e6746e12b4931c67f7a244a47cdd0b7  gcc/testsuite/gdc.test/fail_compilation/fail6968.d
  4f5e9643c98ab73f981a090b5ede3c6b  gcc/testsuite/gdc.test/fail_compilation/fail7077.d
! 96a6d4f7e3e63503f33c54577cfaeb50  gcc/testsuite/gdc.test/fail_compilation/fail7173.d
! 7a84bec5a00c640ac78e85396f3d0831  gcc/testsuite/gdc.test/fail_compilation/fail7178.d
  59739a667600e72da33ad99594d09fc6  gcc/testsuite/gdc.test/fail_compilation/fail72.d
! e9340c11857fcf5fcbe8105ec1b0421f  gcc/testsuite/gdc.test/fail_compilation/fail7234.d
  b76922cd751e594db4984440f5dcd684  gcc/testsuite/gdc.test/fail_compilation/fail73.d
! 0b8eff5722d223dcb1959fd12c1ea791  gcc/testsuite/gdc.test/fail_compilation/fail7369.d
  501f2b3778ebd6b2e5493a0fa9a7f20d  gcc/testsuite/gdc.test/fail_compilation/fail74.d
! 56f3a086faa7df85505ad962f559985b  gcc/testsuite/gdc.test/fail_compilation/fail7424b.d
! 6f55ce9071e91901b5bf62433cc6f584  gcc/testsuite/gdc.test/fail_compilation/fail7424c.d
! 5f527aaf947ae6b3d05b0c50c5e09146  gcc/testsuite/gdc.test/fail_compilation/fail7424d.d
! 605c1a0482ba977c80f623e384a713f2  gcc/testsuite/gdc.test/fail_compilation/fail7424e.d
! 433e50b9cd8423afa12e6783944b83bd  gcc/testsuite/gdc.test/fail_compilation/fail7424f.d
! ed4e6abce7aea94ced5e1ee58a8b6cfd  gcc/testsuite/gdc.test/fail_compilation/fail7424g.d
! 009b3e097a0282def59715e16bfaea28  gcc/testsuite/gdc.test/fail_compilation/fail7424h.d
! 57d071e7008d375212d64b5480468400  gcc/testsuite/gdc.test/fail_compilation/fail7424i.d
  9bcf0d7f8dc25ee08d2b358feeecce5b  gcc/testsuite/gdc.test/fail_compilation/fail75.d
! ba8e80c17e23cb72c72082a27e1547c3  gcc/testsuite/gdc.test/fail_compilation/fail7524a.d
! c50f2cfb4d249da817ef0df6dae2f3ce  gcc/testsuite/gdc.test/fail_compilation/fail7524b.d
  c66877e43f14604e03d886630f87827e  gcc/testsuite/gdc.test/fail_compilation/fail76.d
! 055cb020f686d2fa14c6db48814df79b  gcc/testsuite/gdc.test/fail_compilation/fail7603a.d
! a23fcafa535557168685c997e19265cf  gcc/testsuite/gdc.test/fail_compilation/fail7603b.d
! 7426ea1df42c77958814d7f2d917edb5  gcc/testsuite/gdc.test/fail_compilation/fail7603c.d
! e3dddfe392bb9887fbcaa896fe3b83fb  gcc/testsuite/gdc.test/fail_compilation/fail77.d
! 92aa8a8003bb898a5b6414473a0b488d  gcc/testsuite/gdc.test/fail_compilation/fail7702.d
! 1ab023e309a57b9924db04ee18437f87  gcc/testsuite/gdc.test/fail_compilation/fail7751.d
  ef4d9a40e447e8e44aa3cf6219e708af  gcc/testsuite/gdc.test/fail_compilation/fail78.d
  a0b51dea5b29ec1ba188d673be8dc6f2  gcc/testsuite/gdc.test/fail_compilation/fail7848.d
! 8bd3b90ceed238130df042c9e45a4138  gcc/testsuite/gdc.test/fail_compilation/fail7851.d
! dc209e8e0bbf01c7f40e8868b1bc7d65  gcc/testsuite/gdc.test/fail_compilation/fail7859.d
! 4cab301b23014981a0ac753564ca0f6e  gcc/testsuite/gdc.test/fail_compilation/fail7861.d
  e17d91e03fd1129800f5ad6668fc255d  gcc/testsuite/gdc.test/fail_compilation/fail7862.d
! ceb7384052efb1a9c8cae393c7372340  gcc/testsuite/gdc.test/fail_compilation/fail79.d
  a0a827ac3a6216db01074409f04facc1  gcc/testsuite/gdc.test/fail_compilation/fail7903.d
! e79349a2b32f8b79557020a081fdb00e  gcc/testsuite/gdc.test/fail_compilation/fail8009.d
! fa695cea8079d9e1b1814862fc6d3bf5  gcc/testsuite/gdc.test/fail_compilation/fail8032.d
  32e498c347ba242707b9d8161b4453be  gcc/testsuite/gdc.test/fail_compilation/fail80_m32.d
  40c308f403f490c6ed78c97e659c1a74  gcc/testsuite/gdc.test/fail_compilation/fail80_m64.d
  a0fd0181461725c24920aba037162fcf  gcc/testsuite/gdc.test/fail_compilation/fail8179b.d
  00494b365b95ccb93500cfcc6ebaaa99  gcc/testsuite/gdc.test/fail_compilation/fail8217.d
! fa8cbb814bdd1ecb615be4298b99baac  gcc/testsuite/gdc.test/fail_compilation/fail8313.d
  ea6e5ebd5d5bf362be413be7448fde8c  gcc/testsuite/gdc.test/fail_compilation/fail8373.d
  73d40d3fee1d618e8980a4e860f22cd2  gcc/testsuite/gdc.test/fail_compilation/fail86.d
  cffd439d0a05081a17862f94a3576f36  gcc/testsuite/gdc.test/fail_compilation/fail8631.d
! 45ecc1b0f407c1be0cd016bb6d98e64c  gcc/testsuite/gdc.test/fail_compilation/fail8691.d
  bab594490adeca400049585626aaccab  gcc/testsuite/gdc.test/fail_compilation/fail8724.d
  1ac2d85770f61331561122c81ef4bf8b  gcc/testsuite/gdc.test/fail_compilation/fail9.d
  23b35bda012b649a7723a38bbb52c805  gcc/testsuite/gdc.test/fail_compilation/fail9063.d
*************** bab594490adeca400049585626aaccab  gcc/te
*** 66544,66553 ****
  8118df5a5b3e520da0b6f0b1d12e3f66  gcc/testsuite/gdc.test/fail_compilation/fail92.d
  464df40ce91526b0d13136269cd06d56  gcc/testsuite/gdc.test/fail_compilation/fail9279.d
  be4679dbd8fe74faaf26804231b06205  gcc/testsuite/gdc.test/fail_compilation/fail93.d
! a0d8f42011f4aedabbba0856fdd82b86  gcc/testsuite/gdc.test/fail_compilation/fail9301.d
! b3942914b74bd704f691368bd69fe04e  gcc/testsuite/gdc.test/fail_compilation/fail9346.d
  0d8b95ea35896a3321b7803ee20504f8  gcc/testsuite/gdc.test/fail_compilation/fail9368.d
! 1227c0fb998285b89ef8ba19d9c94390  gcc/testsuite/gdc.test/fail_compilation/fail94.d
  d716cf55441f89a7751ebf4c10b24978  gcc/testsuite/gdc.test/fail_compilation/fail9413.d
  48f4029390238146e47743004ade13f3  gcc/testsuite/gdc.test/fail_compilation/fail9414a.d
  e68f08b234c23a721b30182ef978b89a  gcc/testsuite/gdc.test/fail_compilation/fail9414b.d
--- 71235,71244 ----
  8118df5a5b3e520da0b6f0b1d12e3f66  gcc/testsuite/gdc.test/fail_compilation/fail92.d
  464df40ce91526b0d13136269cd06d56  gcc/testsuite/gdc.test/fail_compilation/fail9279.d
  be4679dbd8fe74faaf26804231b06205  gcc/testsuite/gdc.test/fail_compilation/fail93.d
! 86e6c37236e5281ae6e85b20c93617ec  gcc/testsuite/gdc.test/fail_compilation/fail9301.d
! 4d688386b610dbfe6b55ada0e5abd83c  gcc/testsuite/gdc.test/fail_compilation/fail9346.d
  0d8b95ea35896a3321b7803ee20504f8  gcc/testsuite/gdc.test/fail_compilation/fail9368.d
! 76f44d833438e607e811e4467e96db3a  gcc/testsuite/gdc.test/fail_compilation/fail94.d
  d716cf55441f89a7751ebf4c10b24978  gcc/testsuite/gdc.test/fail_compilation/fail9413.d
  48f4029390238146e47743004ade13f3  gcc/testsuite/gdc.test/fail_compilation/fail9414a.d
  e68f08b234c23a721b30182ef978b89a  gcc/testsuite/gdc.test/fail_compilation/fail9414b.d
*************** e60fc009c6fa0e6353822f7650fc524e  gcc/te
*** 66558,66564 ****
  82de58faa8d7e6f3c6916d98f669c3cc  gcc/testsuite/gdc.test/fail_compilation/fail9562.d
  9c2c95527f1091d7b4fb961d8dc5b771  gcc/testsuite/gdc.test/fail_compilation/fail9572.d
  8da3435155956a5e407118bcb92ab30c  gcc/testsuite/gdc.test/fail_compilation/fail96.d
! 93a611f980b54a9b8b8fbd6fd2438aee  gcc/testsuite/gdc.test/fail_compilation/fail9613.d
  2ab9444b03fc1256fa47253b954bc9d3  gcc/testsuite/gdc.test/fail_compilation/fail9665a.d
  3a70588989e45113c9106f242a202597  gcc/testsuite/gdc.test/fail_compilation/fail9665b.d
  54db7d18f58aba432d47f6a801da2392  gcc/testsuite/gdc.test/fail_compilation/fail97.d
--- 71249,71255 ----
  82de58faa8d7e6f3c6916d98f669c3cc  gcc/testsuite/gdc.test/fail_compilation/fail9562.d
  9c2c95527f1091d7b4fb961d8dc5b771  gcc/testsuite/gdc.test/fail_compilation/fail9572.d
  8da3435155956a5e407118bcb92ab30c  gcc/testsuite/gdc.test/fail_compilation/fail96.d
! b7ac24805f42a0d95c22ed419f2448eb  gcc/testsuite/gdc.test/fail_compilation/fail9613.d
  2ab9444b03fc1256fa47253b954bc9d3  gcc/testsuite/gdc.test/fail_compilation/fail9665a.d
  3a70588989e45113c9106f242a202597  gcc/testsuite/gdc.test/fail_compilation/fail9665b.d
  54db7d18f58aba432d47f6a801da2392  gcc/testsuite/gdc.test/fail_compilation/fail97.d
*************** abc82347eaa25458a588e16c9a1500af  gcc/te
*** 66570,66576 ****
  ba9fce21801162f260b3ae82c57b2b2d  gcc/testsuite/gdc.test/fail_compilation/fail98.d
  9cdb720f343793cb1b54fa713a64969c  gcc/testsuite/gdc.test/fail_compilation/fail9891.d
  542c2a5aaf59034cb5ceffeab9a4b15b  gcc/testsuite/gdc.test/fail_compilation/fail9892.d
! e72bdbf3b3b8b1c0f2d35966de7e62de  gcc/testsuite/gdc.test/fail_compilation/fail99.d
  0771a38962d028547a2211b3cdd0a9e0  gcc/testsuite/gdc.test/fail_compilation/fail9936.d
  327bf6863a3a75032f29b32e35231ee7  gcc/testsuite/gdc.test/fail_compilation/fail_arrayop1.d
  f429d916c06376226de3104e01932afe  gcc/testsuite/gdc.test/fail_compilation/fail_arrayop2.d
--- 71261,71267 ----
  ba9fce21801162f260b3ae82c57b2b2d  gcc/testsuite/gdc.test/fail_compilation/fail98.d
  9cdb720f343793cb1b54fa713a64969c  gcc/testsuite/gdc.test/fail_compilation/fail9891.d
  542c2a5aaf59034cb5ceffeab9a4b15b  gcc/testsuite/gdc.test/fail_compilation/fail9892.d
! ae3b5b70a90dc65576f44e632f3c65fe  gcc/testsuite/gdc.test/fail_compilation/fail99.d
  0771a38962d028547a2211b3cdd0a9e0  gcc/testsuite/gdc.test/fail_compilation/fail9936.d
  327bf6863a3a75032f29b32e35231ee7  gcc/testsuite/gdc.test/fail_compilation/fail_arrayop1.d
  f429d916c06376226de3104e01932afe  gcc/testsuite/gdc.test/fail_compilation/fail_arrayop2.d
*************** d1920a0ad9ef7df56e67e67aed392ab6  gcc/te
*** 66579,66585 ****
  2f2bd0c53ac2187eef854880438dcfc2  gcc/testsuite/gdc.test/fail_compilation/fail_casting2.d
  eb77825149c2bf10dbb360ce6e6afa3a  gcc/testsuite/gdc.test/fail_compilation/fail_circular.d
  cb5953eb620de79b54d1ca3fc4d57465  gcc/testsuite/gdc.test/fail_compilation/fail_circular2.d
! 272752be9d9e7ca2e2ab83203e0de64d  gcc/testsuite/gdc.test/fail_compilation/fail_compilation.exp
  8b038d81173c5d73d41f288d1c14cc5c  gcc/testsuite/gdc.test/fail_compilation/fail_opover.d
  96423017003b5cafff9ecdd32ddfff36  gcc/testsuite/gdc.test/fail_compilation/fail_scope.d
  271a08f1d7512276c99e008046f8605f  gcc/testsuite/gdc.test/fail_compilation/failattr.d
--- 71270,71281 ----
  2f2bd0c53ac2187eef854880438dcfc2  gcc/testsuite/gdc.test/fail_compilation/fail_casting2.d
  eb77825149c2bf10dbb360ce6e6afa3a  gcc/testsuite/gdc.test/fail_compilation/fail_circular.d
  cb5953eb620de79b54d1ca3fc4d57465  gcc/testsuite/gdc.test/fail_compilation/fail_circular2.d
! ef8b0c36b9bbfa6c8f8b47cf11d1470c  gcc/testsuite/gdc.test/fail_compilation/fail_compilation.exp
! 39d9ce96eb95361623099463c49b4659  gcc/testsuite/gdc.test/fail_compilation/fail_contracts1.d
! f0f98a24874397d29f4f6e59def95d45  gcc/testsuite/gdc.test/fail_compilation/fail_contracts2.d
! ad91c6f3a03ac48199c480a9a24698cf  gcc/testsuite/gdc.test/fail_compilation/fail_contracts3.d
! 2ba3f1515a3ee5a14f9c4466fc8caef3  gcc/testsuite/gdc.test/fail_compilation/fail_contracts4.d
! 695faa3012289c1132b755b3a4e17c6b  gcc/testsuite/gdc.test/fail_compilation/fail_isZeroInit.d
  8b038d81173c5d73d41f288d1c14cc5c  gcc/testsuite/gdc.test/fail_compilation/fail_opover.d
  96423017003b5cafff9ecdd32ddfff36  gcc/testsuite/gdc.test/fail_compilation/fail_scope.d
  271a08f1d7512276c99e008046f8605f  gcc/testsuite/gdc.test/fail_compilation/failattr.d
*************** ebd64d6983f8bc83ea32bd3853a25e2e  gcc/te
*** 66587,66603 ****
  478ceccefbaf071e2bf9b9a38e473994  gcc/testsuite/gdc.test/fail_compilation/faildeleteaa.d
  cbefa89c496e61397c9145d05e4c70b4  gcc/testsuite/gdc.test/fail_compilation/faildottypeinfo.d
  acd4dc01e2f625f440ffb85c36b0bdd8  gcc/testsuite/gdc.test/fail_compilation/failescape.d
! 0b7752db92d68c99018a8a6e96eefe5c  gcc/testsuite/gdc.test/fail_compilation/failinout1.d
! b4171c380089b0a393d8c17a261cbee2  gcc/testsuite/gdc.test/fail_compilation/failinout2.d
! cda7f5cd5a9f80af2ec152dc8b309c59  gcc/testsuite/gdc.test/fail_compilation/failinout3748a.d
! 1419d3c0904937c8fc95cf1fa9b46aad  gcc/testsuite/gdc.test/fail_compilation/failinout3748b.d
  d8f5ba73e3a4f9d0530c7647bea1cbcc  gcc/testsuite/gdc.test/fail_compilation/failmemalloc.d
  37fdb0a7e173e876d99753fa5315d9c7  gcc/testsuite/gdc.test/fail_compilation/failoffset.d
! 56edfb8f4bd5a9dbb055c99e37eb055f  gcc/testsuite/gdc.test/fail_compilation/failsafea.d
! 5044060a84300f6c8be6b9d04d6bfdaf  gcc/testsuite/gdc.test/fail_compilation/failsafeb.d
! 19185ab0c6226076689efc0cc941c1a6  gcc/testsuite/gdc.test/fail_compilation/failsafec.d
! 1e45ca79a3b5e999a39616e4de556f15  gcc/testsuite/gdc.test/fail_compilation/fix350a.d
! 787aa8ba1f7a88d32a91717d05b9d4b4  gcc/testsuite/gdc.test/fail_compilation/fix350b.d
  3f0593f45a26cf2f750af2587d67a6ba  gcc/testsuite/gdc.test/fail_compilation/gag4269a.d
  f56ebc2eca71902974fca5bb8a136c4e  gcc/testsuite/gdc.test/fail_compilation/gag4269b.d
  f68d4c65c480dd21796992cb08232816  gcc/testsuite/gdc.test/fail_compilation/gag4269c.d
--- 71283,71301 ----
  478ceccefbaf071e2bf9b9a38e473994  gcc/testsuite/gdc.test/fail_compilation/faildeleteaa.d
  cbefa89c496e61397c9145d05e4c70b4  gcc/testsuite/gdc.test/fail_compilation/faildottypeinfo.d
  acd4dc01e2f625f440ffb85c36b0bdd8  gcc/testsuite/gdc.test/fail_compilation/failescape.d
! 572be48d5a0a5235990cd885758cfa21  gcc/testsuite/gdc.test/fail_compilation/failinout1.d
! c7f4961ddbeca8a36494b25667221785  gcc/testsuite/gdc.test/fail_compilation/failinout2.d
! 2ee5553bf2ef7df7520e5f560f81713a  gcc/testsuite/gdc.test/fail_compilation/failinout3748a.d
! 5bd66c2d163a5f011e1164fee8159067  gcc/testsuite/gdc.test/fail_compilation/failinout3748b.d
  d8f5ba73e3a4f9d0530c7647bea1cbcc  gcc/testsuite/gdc.test/fail_compilation/failmemalloc.d
  37fdb0a7e173e876d99753fa5315d9c7  gcc/testsuite/gdc.test/fail_compilation/failoffset.d
! d5f5f9e3ec363ba8c6f1846ec95974e1  gcc/testsuite/gdc.test/fail_compilation/failsafea.d
! b103e7dea688095eeac13c4d83e09207  gcc/testsuite/gdc.test/fail_compilation/failsafeb.d
! 84fd81471c85436d19426405d0cfbda5  gcc/testsuite/gdc.test/fail_compilation/failsafec.d
! 0e9c903f2172a6205ba26b40c6d4df8b  gcc/testsuite/gdc.test/fail_compilation/fix21585.d
! 93690a25ed6e19eb304f316a96d26179  gcc/testsuite/gdc.test/fail_compilation/fix350a.d
! d70aafa6b9062aa0a03de1dadb2afa0e  gcc/testsuite/gdc.test/fail_compilation/fix350b.d
! 63f06803b592e4668ad6ea92ab122db2  gcc/testsuite/gdc.test/fail_compilation/format.d
  3f0593f45a26cf2f750af2587d67a6ba  gcc/testsuite/gdc.test/fail_compilation/gag4269a.d
  f56ebc2eca71902974fca5bb8a136c4e  gcc/testsuite/gdc.test/fail_compilation/gag4269b.d
  f68d4c65c480dd21796992cb08232816  gcc/testsuite/gdc.test/fail_compilation/gag4269c.d
*************** f68d4c65c480dd21796992cb08232816  gcc/te
*** 66609,66620 ****
  4321e56879e6d7a0189fc39fc2f74bc0  gcc/testsuite/gdc.test/fail_compilation/ice10076.d
  8a4fd2be24286f2e96c8130b9ec5c516  gcc/testsuite/gdc.test/fail_compilation/ice10212.d
  414bebf4380a93ab67ce4c1dde82b606  gcc/testsuite/gdc.test/fail_compilation/ice10259.d
! 018122239b4748df07423088ed03f305  gcc/testsuite/gdc.test/fail_compilation/ice10273.d
! 124293d79d3463cbc22681f7a81cf79f  gcc/testsuite/gdc.test/fail_compilation/ice10283.d
  36282dca66cc13627d09ba69bcaf8abd  gcc/testsuite/gdc.test/fail_compilation/ice10341.d
  70bc10d3ccd01357e26413166df5bcc5  gcc/testsuite/gdc.test/fail_compilation/ice10382.d
  840602a70340560c4228cad8b02029d9  gcc/testsuite/gdc.test/fail_compilation/ice10419.d
! 19b793db9968505b6eae850ded069ceb  gcc/testsuite/gdc.test/fail_compilation/ice10599.d
  331c411319a4683601e4e1216997ec8c  gcc/testsuite/gdc.test/fail_compilation/ice10600.d
  2b77b91ba63d47724117017f9b718746  gcc/testsuite/gdc.test/fail_compilation/ice10616.d
  7c853f1c4d87728b2829b19242e6b4dc  gcc/testsuite/gdc.test/fail_compilation/ice10624.d
--- 71307,71319 ----
  4321e56879e6d7a0189fc39fc2f74bc0  gcc/testsuite/gdc.test/fail_compilation/ice10076.d
  8a4fd2be24286f2e96c8130b9ec5c516  gcc/testsuite/gdc.test/fail_compilation/ice10212.d
  414bebf4380a93ab67ce4c1dde82b606  gcc/testsuite/gdc.test/fail_compilation/ice10259.d
! d5388b9b8af91183c0f15639c00276ad  gcc/testsuite/gdc.test/fail_compilation/ice10273.d
! 9a1aecc53ad76d6ee7d29dbe1b140fb3  gcc/testsuite/gdc.test/fail_compilation/ice10283.d
  36282dca66cc13627d09ba69bcaf8abd  gcc/testsuite/gdc.test/fail_compilation/ice10341.d
  70bc10d3ccd01357e26413166df5bcc5  gcc/testsuite/gdc.test/fail_compilation/ice10382.d
  840602a70340560c4228cad8b02029d9  gcc/testsuite/gdc.test/fail_compilation/ice10419.d
! c56acd6f4c74ed39f0536444293d098c  gcc/testsuite/gdc.test/fail_compilation/ice10598.d
! 53e85d82f583a68093ca5af572f9c19c  gcc/testsuite/gdc.test/fail_compilation/ice10599.d
  331c411319a4683601e4e1216997ec8c  gcc/testsuite/gdc.test/fail_compilation/ice10600.d
  2b77b91ba63d47724117017f9b718746  gcc/testsuite/gdc.test/fail_compilation/ice10616.d
  7c853f1c4d87728b2829b19242e6b4dc  gcc/testsuite/gdc.test/fail_compilation/ice10624.d
*************** f68d4c65c480dd21796992cb08232816  gcc/te
*** 66622,66629 ****
  b6e298113f4032e1ecf845018509e3c9  gcc/testsuite/gdc.test/fail_compilation/ice10713.d
  d867e8f4cc6a3593665658a95d016379  gcc/testsuite/gdc.test/fail_compilation/ice10727a.d
  9d704f2756c3f1b5d4e929ea90a56498  gcc/testsuite/gdc.test/fail_compilation/ice10727b.d
! e030da2b5cb2ad7d90de804493aa6282  gcc/testsuite/gdc.test/fail_compilation/ice10770.d
! 9f4c4e6cc5d6ee219532d2a210804a73  gcc/testsuite/gdc.test/fail_compilation/ice10922.d
  2ad61f82f5ad71827a4b49fb2def2ed8  gcc/testsuite/gdc.test/fail_compilation/ice10938.d
  4e29caf33d9e409af7f2dfbd103eb81b  gcc/testsuite/gdc.test/fail_compilation/ice10949.d
  045f4189c353660ed515d34129690c75  gcc/testsuite/gdc.test/fail_compilation/ice11086.d
--- 71321,71327 ----
  b6e298113f4032e1ecf845018509e3c9  gcc/testsuite/gdc.test/fail_compilation/ice10713.d
  d867e8f4cc6a3593665658a95d016379  gcc/testsuite/gdc.test/fail_compilation/ice10727a.d
  9d704f2756c3f1b5d4e929ea90a56498  gcc/testsuite/gdc.test/fail_compilation/ice10727b.d
! 9725875f45dbc09551e82485b6cc816f  gcc/testsuite/gdc.test/fail_compilation/ice10922.d
  2ad61f82f5ad71827a4b49fb2def2ed8  gcc/testsuite/gdc.test/fail_compilation/ice10938.d
  4e29caf33d9e409af7f2dfbd103eb81b  gcc/testsuite/gdc.test/fail_compilation/ice10949.d
  045f4189c353660ed515d34129690c75  gcc/testsuite/gdc.test/fail_compilation/ice11086.d
*************** a52923b9a3fbaa838dbd0f4e75fe7458  gcc/te
*** 66649,66661 ****
  b8dfe32a09c1097265ff2ff7a62a55ae  gcc/testsuite/gdc.test/fail_compilation/ice11922.d
  b770417113d0cfab995e016c1a96463c  gcc/testsuite/gdc.test/fail_compilation/ice11926.d
  f32e370d4183505c261557d5a65c3cc9  gcc/testsuite/gdc.test/fail_compilation/ice11944.d
! 7bb2bf8fab35ae31fa7f7d87f6b1d068  gcc/testsuite/gdc.test/fail_compilation/ice11963.d
! c85f617ef9e6a4bfee8fe31e05720475  gcc/testsuite/gdc.test/fail_compilation/ice11965.d
! 84bdb74a01a31fdab203f6daad21b142  gcc/testsuite/gdc.test/fail_compilation/ice11967.d
! 459c5987c76fd7bc9601bfd4b6e6542b  gcc/testsuite/gdc.test/fail_compilation/ice11968.d
  62edb8803f123fb16f5e40f647c48a0d  gcc/testsuite/gdc.test/fail_compilation/ice11969.d
! d213c8e4282448a7c1a525fd45c96da8  gcc/testsuite/gdc.test/fail_compilation/ice11974.d
! afc023a50b9ae74d7913a70a7eab6131  gcc/testsuite/gdc.test/fail_compilation/ice11982.d
  a6636c8a4c71a265e6d21f202a76539f  gcc/testsuite/gdc.test/fail_compilation/ice12040.d
  aedf56d57f73319b449dc3bb7dfadfe4  gcc/testsuite/gdc.test/fail_compilation/ice12158.d
  dc526d72050e5ed483c62a6f1a07a9f2  gcc/testsuite/gdc.test/fail_compilation/ice12174.d
--- 71347,71359 ----
  b8dfe32a09c1097265ff2ff7a62a55ae  gcc/testsuite/gdc.test/fail_compilation/ice11922.d
  b770417113d0cfab995e016c1a96463c  gcc/testsuite/gdc.test/fail_compilation/ice11926.d
  f32e370d4183505c261557d5a65c3cc9  gcc/testsuite/gdc.test/fail_compilation/ice11944.d
! 3581ee928172d5e956124a025111f8e2  gcc/testsuite/gdc.test/fail_compilation/ice11963.d
! 34eeab6b424aabc0833e5a87447b6f8e  gcc/testsuite/gdc.test/fail_compilation/ice11965.d
! 7a3bc872fc720b7fe6b26109acfc6ba1  gcc/testsuite/gdc.test/fail_compilation/ice11967.d
! 5199864720454257fd2c61b37ec7594b  gcc/testsuite/gdc.test/fail_compilation/ice11968.d
  62edb8803f123fb16f5e40f647c48a0d  gcc/testsuite/gdc.test/fail_compilation/ice11969.d
! 5c4e51a872cc510224e82db0a4d3bef5  gcc/testsuite/gdc.test/fail_compilation/ice11974.d
! 52a2c69cb2543e948028d7a380bb12b3  gcc/testsuite/gdc.test/fail_compilation/ice11982.d
  a6636c8a4c71a265e6d21f202a76539f  gcc/testsuite/gdc.test/fail_compilation/ice12040.d
  aedf56d57f73319b449dc3bb7dfadfe4  gcc/testsuite/gdc.test/fail_compilation/ice12158.d
  dc526d72050e5ed483c62a6f1a07a9f2  gcc/testsuite/gdc.test/fail_compilation/ice12174.d
*************** c70e41227a0cd12ef0e63c0bca881481  gcc/te
*** 66663,66675 ****
  eb6d04101c276736d1461310f459d1f9  gcc/testsuite/gdc.test/fail_compilation/ice12350.d
  25764de52499e98ecc0f2e30b58a1731  gcc/testsuite/gdc.test/fail_compilation/ice12362.d
  3bc21becfe6e22cc50bb89839b877fc6  gcc/testsuite/gdc.test/fail_compilation/ice12397.d
! 4eefa9039570e58366cce9438000553b  gcc/testsuite/gdc.test/fail_compilation/ice12497.d
! b3bcd86d0ab48e6facb327cf70cd7671  gcc/testsuite/gdc.test/fail_compilation/ice12501.d
  d4071766f38dabbb766714fe5f35e873  gcc/testsuite/gdc.test/fail_compilation/ice12534.d
  3d23a3c027534d2055b1abd61f4f714f  gcc/testsuite/gdc.test/fail_compilation/ice12539.d
  5ae1f1c6562e8fef4324c953c05abf95  gcc/testsuite/gdc.test/fail_compilation/ice12574.d
  c5d83c46b1283b0dd2faab15724477e0  gcc/testsuite/gdc.test/fail_compilation/ice12581.d
! 90d958a3079f8af150abdad4fb97d558  gcc/testsuite/gdc.test/fail_compilation/ice12673.d
  92f231ae4077e2e6dbb079f4cea388a9  gcc/testsuite/gdc.test/fail_compilation/ice12727.d
  b21ba1d5cf4bd9eabd54e3db330f115d  gcc/testsuite/gdc.test/fail_compilation/ice12827.d
  a7ad99af969fb1ecb4ad94aca9468df7  gcc/testsuite/gdc.test/fail_compilation/ice12836.d
--- 71361,71372 ----
  eb6d04101c276736d1461310f459d1f9  gcc/testsuite/gdc.test/fail_compilation/ice12350.d
  25764de52499e98ecc0f2e30b58a1731  gcc/testsuite/gdc.test/fail_compilation/ice12362.d
  3bc21becfe6e22cc50bb89839b877fc6  gcc/testsuite/gdc.test/fail_compilation/ice12397.d
! 7cb92086b9ee1495589129f725e2a3c1  gcc/testsuite/gdc.test/fail_compilation/ice12501.d
  d4071766f38dabbb766714fe5f35e873  gcc/testsuite/gdc.test/fail_compilation/ice12534.d
  3d23a3c027534d2055b1abd61f4f714f  gcc/testsuite/gdc.test/fail_compilation/ice12539.d
  5ae1f1c6562e8fef4324c953c05abf95  gcc/testsuite/gdc.test/fail_compilation/ice12574.d
  c5d83c46b1283b0dd2faab15724477e0  gcc/testsuite/gdc.test/fail_compilation/ice12581.d
! 94cfd39ff841db3c06aa46f974ec9920  gcc/testsuite/gdc.test/fail_compilation/ice12673.d
  92f231ae4077e2e6dbb079f4cea388a9  gcc/testsuite/gdc.test/fail_compilation/ice12727.d
  b21ba1d5cf4bd9eabd54e3db330f115d  gcc/testsuite/gdc.test/fail_compilation/ice12827.d
  a7ad99af969fb1ecb4ad94aca9468df7  gcc/testsuite/gdc.test/fail_compilation/ice12836.d
*************** cf1b4549211d533c81af246706257e10  gcc/te
*** 66694,66700 ****
  4f97e8b752b4a58e76266f13102c1506  gcc/testsuite/gdc.test/fail_compilation/ice13465b.d
  2758dd2a496a5538d3b0f220c968d7c2  gcc/testsuite/gdc.test/fail_compilation/ice13563.d
  55e9ba24e8d3ac650a5cd5315aca8237  gcc/testsuite/gdc.test/fail_compilation/ice1358.d
! b208ada7b8f3fb7cc772cb8bc15c40e9  gcc/testsuite/gdc.test/fail_compilation/ice13644.d
  e7d2caa9dcca79e159dc9048b43dc8f1  gcc/testsuite/gdc.test/fail_compilation/ice13788.d
  8ab1e0c8db7fcaaa6b3394df01a74ec3  gcc/testsuite/gdc.test/fail_compilation/ice13816.d
  89ad1232a73715f41c304ddd15cfe446  gcc/testsuite/gdc.test/fail_compilation/ice13835.d
--- 71391,71397 ----
  4f97e8b752b4a58e76266f13102c1506  gcc/testsuite/gdc.test/fail_compilation/ice13465b.d
  2758dd2a496a5538d3b0f220c968d7c2  gcc/testsuite/gdc.test/fail_compilation/ice13563.d
  55e9ba24e8d3ac650a5cd5315aca8237  gcc/testsuite/gdc.test/fail_compilation/ice1358.d
! a2859dc4361a77e0eb5ace8ca45bc965  gcc/testsuite/gdc.test/fail_compilation/ice13644.d
  e7d2caa9dcca79e159dc9048b43dc8f1  gcc/testsuite/gdc.test/fail_compilation/ice13788.d
  8ab1e0c8db7fcaaa6b3394df01a74ec3  gcc/testsuite/gdc.test/fail_compilation/ice13816.d
  89ad1232a73715f41c304ddd15cfe446  gcc/testsuite/gdc.test/fail_compilation/ice13835.d
*************** bcb70200c1b898896326f1d823f032cc  gcc/te
*** 66713,66719 ****
  57bcd63f9dc7e2123e642a529933677b  gcc/testsuite/gdc.test/fail_compilation/ice14621.d
  f20926a6545eb7d7391528ed4c3f0831  gcc/testsuite/gdc.test/fail_compilation/ice14642.d
  8ba2107bcc1119ab2a868c0ca081a039  gcc/testsuite/gdc.test/fail_compilation/ice14844.d
! b03a142d8edbdd0930c2a2e175a20166  gcc/testsuite/gdc.test/fail_compilation/ice14923.d
  e00ad9c276609d40b5d49d459788072c  gcc/testsuite/gdc.test/fail_compilation/ice14929.d
  0144be1b1ccbd02aa3727042eb326ea2  gcc/testsuite/gdc.test/fail_compilation/ice15002.d
  53f784e3dcd299d223cbaca6fbe301b8  gcc/testsuite/gdc.test/fail_compilation/ice15092.d
--- 71410,71417 ----
  57bcd63f9dc7e2123e642a529933677b  gcc/testsuite/gdc.test/fail_compilation/ice14621.d
  f20926a6545eb7d7391528ed4c3f0831  gcc/testsuite/gdc.test/fail_compilation/ice14642.d
  8ba2107bcc1119ab2a868c0ca081a039  gcc/testsuite/gdc.test/fail_compilation/ice14844.d
! 6d61a08385e753286f5b5e6d12f853b8  gcc/testsuite/gdc.test/fail_compilation/ice14907.d
! 61206c0be6afd5ad30b658069fbd81b2  gcc/testsuite/gdc.test/fail_compilation/ice14923.d
  e00ad9c276609d40b5d49d459788072c  gcc/testsuite/gdc.test/fail_compilation/ice14929.d
  0144be1b1ccbd02aa3727042eb326ea2  gcc/testsuite/gdc.test/fail_compilation/ice15002.d
  53f784e3dcd299d223cbaca6fbe301b8  gcc/testsuite/gdc.test/fail_compilation/ice15092.d
*************** fb5eb542b7d929a51f5e0073a793c92f  gcc/te
*** 66725,66731 ****
  5786c26970a164449ce5bbc314336c35  gcc/testsuite/gdc.test/fail_compilation/ice15688.d
  7bd44765fb09c754b5b61e1e23a34b16  gcc/testsuite/gdc.test/fail_compilation/ice15788.d
  9bfd0b003bfc3575c4203457a88721bc  gcc/testsuite/gdc.test/fail_compilation/ice15816.d
! 6dd8981c0f022c0aae948298ed097b08  gcc/testsuite/gdc.test/fail_compilation/ice15855.d
  e31c57d6974d04e2c34bbe41ae8c9706  gcc/testsuite/gdc.test/fail_compilation/ice15922.d
  2b00d279cc0ceeab6c0cabebc9ce12da  gcc/testsuite/gdc.test/fail_compilation/ice16035.d
  02081a92305510de44e261c5fa5e3c34  gcc/testsuite/gdc.test/fail_compilation/ice17074.d
--- 71423,71429 ----
  5786c26970a164449ce5bbc314336c35  gcc/testsuite/gdc.test/fail_compilation/ice15688.d
  7bd44765fb09c754b5b61e1e23a34b16  gcc/testsuite/gdc.test/fail_compilation/ice15788.d
  9bfd0b003bfc3575c4203457a88721bc  gcc/testsuite/gdc.test/fail_compilation/ice15816.d
! 2c7865066426a00dd6119765793c2286  gcc/testsuite/gdc.test/fail_compilation/ice15855.d
  e31c57d6974d04e2c34bbe41ae8c9706  gcc/testsuite/gdc.test/fail_compilation/ice15922.d
  2b00d279cc0ceeab6c0cabebc9ce12da  gcc/testsuite/gdc.test/fail_compilation/ice16035.d
  02081a92305510de44e261c5fa5e3c34  gcc/testsuite/gdc.test/fail_compilation/ice17074.d
*************** c73e0422319d9ada15828705fb8abcaa  gcc/te
*** 66738,66759 ****
  ebfa02fece677d43edcbb1d96bb283d6  gcc/testsuite/gdc.test/fail_compilation/ice5996.d
  4b1a5de56000851625283a114ef9c40a  gcc/testsuite/gdc.test/fail_compilation/ice6538.d
  5e560d45b028909572a105941c9639e6  gcc/testsuite/gdc.test/fail_compilation/ice7645.d
! 11022ef0744c9f98d60bc96f4ef3f093  gcc/testsuite/gdc.test/fail_compilation/ice7782.d
  d1a8fea11a89ce47cbd94d3d039b28d3  gcc/testsuite/gdc.test/fail_compilation/ice8100.d
! 0cf7238167b4ec27c95b90bd39bba7d7  gcc/testsuite/gdc.test/fail_compilation/ice8255.d
  52ed5e262a6320b9e5ecebbbb86f6c39  gcc/testsuite/gdc.test/fail_compilation/ice8309.d
  f1d18a3fe42974d8d7e5230df6193002  gcc/testsuite/gdc.test/fail_compilation/ice8499.d
! 37600cf217c74501a4a97a2be20c4566  gcc/testsuite/gdc.test/fail_compilation/ice8511.d
! c10ef3233bb79bd987ab6a885a95ae01  gcc/testsuite/gdc.test/fail_compilation/ice8604.d
! 5045b1c07b8909c8291c7b270d3ec750  gcc/testsuite/gdc.test/fail_compilation/ice8630.d
  bce0f1298101161f7ff088a214017cce  gcc/testsuite/gdc.test/fail_compilation/ice8711.d
! 35dd7698603a34ebf27a85dd51de19a3  gcc/testsuite/gdc.test/fail_compilation/ice8742.d
  f119c88e140897cd546fcc38df982e3d  gcc/testsuite/gdc.test/fail_compilation/ice8795.d
  8f5543f8be1f11d20a7f6886ffbfbf3e  gcc/testsuite/gdc.test/fail_compilation/ice8795b.d
! b014229ddc22cce329f6be105761c47e  gcc/testsuite/gdc.test/fail_compilation/ice9013.d
! 2f4082e79b1ddfab8d1bc0cdecc1f717  gcc/testsuite/gdc.test/fail_compilation/ice9254a.d
! 1d0e6e4b7393f84acd654d778cd2b3b8  gcc/testsuite/gdc.test/fail_compilation/ice9254b.d
! 8f7c02c11850bfd6b939febaa1719b8d  gcc/testsuite/gdc.test/fail_compilation/ice9254c.d
  932bfc137cfce4ce4e105947e776e5df  gcc/testsuite/gdc.test/fail_compilation/ice9273a.d
  fe4c1de33e271d84bfbb7ed29d95614c  gcc/testsuite/gdc.test/fail_compilation/ice9273b.d
  5a251eea5223535f2e71d45dc066aaa9  gcc/testsuite/gdc.test/fail_compilation/ice9284.d
--- 71436,71456 ----
  ebfa02fece677d43edcbb1d96bb283d6  gcc/testsuite/gdc.test/fail_compilation/ice5996.d
  4b1a5de56000851625283a114ef9c40a  gcc/testsuite/gdc.test/fail_compilation/ice6538.d
  5e560d45b028909572a105941c9639e6  gcc/testsuite/gdc.test/fail_compilation/ice7645.d
! 8c0cfe6b615f7333cedbddab51724f08  gcc/testsuite/gdc.test/fail_compilation/ice7782.d
  d1a8fea11a89ce47cbd94d3d039b28d3  gcc/testsuite/gdc.test/fail_compilation/ice8100.d
! 2fffc2ba024805fba469ca5cb7ccb295  gcc/testsuite/gdc.test/fail_compilation/ice8255.d
  52ed5e262a6320b9e5ecebbbb86f6c39  gcc/testsuite/gdc.test/fail_compilation/ice8309.d
  f1d18a3fe42974d8d7e5230df6193002  gcc/testsuite/gdc.test/fail_compilation/ice8499.d
! 853540ed15c640e1f07a123857bdd5e3  gcc/testsuite/gdc.test/fail_compilation/ice8604.d
! a72d7818b33e56375506b6e64ac406c5  gcc/testsuite/gdc.test/fail_compilation/ice8630.d
  bce0f1298101161f7ff088a214017cce  gcc/testsuite/gdc.test/fail_compilation/ice8711.d
! f5ec039f130aa503ee1ebd140f2ceb58  gcc/testsuite/gdc.test/fail_compilation/ice8742.d
  f119c88e140897cd546fcc38df982e3d  gcc/testsuite/gdc.test/fail_compilation/ice8795.d
  8f5543f8be1f11d20a7f6886ffbfbf3e  gcc/testsuite/gdc.test/fail_compilation/ice8795b.d
! d4e8397015cc5d6f1e004c0dbd64cd2a  gcc/testsuite/gdc.test/fail_compilation/ice9013.d
! 50cf1880cea60685fd7e7f2066c7d107  gcc/testsuite/gdc.test/fail_compilation/ice9254a.d
! fa2b0afe1688358c9a4d1a6ca60deeb8  gcc/testsuite/gdc.test/fail_compilation/ice9254b.d
! 33c95e2fda7a909c7f840eeda66dd124  gcc/testsuite/gdc.test/fail_compilation/ice9254c.d
  932bfc137cfce4ce4e105947e776e5df  gcc/testsuite/gdc.test/fail_compilation/ice9273a.d
  fe4c1de33e271d84bfbb7ed29d95614c  gcc/testsuite/gdc.test/fail_compilation/ice9273b.d
  5a251eea5223535f2e71d45dc066aaa9  gcc/testsuite/gdc.test/fail_compilation/ice9284.d
*************** eb958bf96f73f43ebebbbf3f30975aec  gcc/te
*** 66762,66773 ****
  9c0a38e2d1493c4f72323692132e898c  gcc/testsuite/gdc.test/fail_compilation/ice9406.d
  dc5e90f888b5c961fe7d07cc48e93ef4  gcc/testsuite/gdc.test/fail_compilation/ice9439.d
  fc0358454e35b0c03980ee42d4b5615c  gcc/testsuite/gdc.test/fail_compilation/ice9494.d
! c79b288c25f545c0f3164fb2786f3a64  gcc/testsuite/gdc.test/fail_compilation/ice9540.d
  fdbcc50b96ac4c860e75ea30a75da423  gcc/testsuite/gdc.test/fail_compilation/ice9545.d
  599ee2b16ceae532e7ec151072dbccc1  gcc/testsuite/gdc.test/fail_compilation/ice9759.d
  bee3c7f185f2aa7fa40b7d63e908cb1c  gcc/testsuite/gdc.test/fail_compilation/ice9806.d
  a3ffece02193437fe5bbd9775d21d910  gcc/testsuite/gdc.test/fail_compilation/ice9865.d
! 1c667c5d9c8e04c7dcaf4eeb35d0c784  gcc/testsuite/gdc.test/fail_compilation/imphint.d
  e7ee3e2640892a91d6abcd48d4ca140c  gcc/testsuite/gdc.test/fail_compilation/imports/a10169.d
  b2182bea2cc23610badf93fbf15ac3b8  gcc/testsuite/gdc.test/fail_compilation/imports/a10528.d
  4f894dcc4473c62d5179f7e7d7a17bab  gcc/testsuite/gdc.test/fail_compilation/imports/a11850.d
--- 71459,71470 ----
  9c0a38e2d1493c4f72323692132e898c  gcc/testsuite/gdc.test/fail_compilation/ice9406.d
  dc5e90f888b5c961fe7d07cc48e93ef4  gcc/testsuite/gdc.test/fail_compilation/ice9439.d
  fc0358454e35b0c03980ee42d4b5615c  gcc/testsuite/gdc.test/fail_compilation/ice9494.d
! d6a5fbe36fe67b24606b6ba1902c8246  gcc/testsuite/gdc.test/fail_compilation/ice9540.d
  fdbcc50b96ac4c860e75ea30a75da423  gcc/testsuite/gdc.test/fail_compilation/ice9545.d
  599ee2b16ceae532e7ec151072dbccc1  gcc/testsuite/gdc.test/fail_compilation/ice9759.d
  bee3c7f185f2aa7fa40b7d63e908cb1c  gcc/testsuite/gdc.test/fail_compilation/ice9806.d
  a3ffece02193437fe5bbd9775d21d910  gcc/testsuite/gdc.test/fail_compilation/ice9865.d
! db1e3a9f3fbcb357f39b30c959f9d85e  gcc/testsuite/gdc.test/fail_compilation/imphint.d
  e7ee3e2640892a91d6abcd48d4ca140c  gcc/testsuite/gdc.test/fail_compilation/imports/a10169.d
  b2182bea2cc23610badf93fbf15ac3b8  gcc/testsuite/gdc.test/fail_compilation/imports/a10528.d
  4f894dcc4473c62d5179f7e7d7a17bab  gcc/testsuite/gdc.test/fail_compilation/imports/a11850.d
*************** a343b360cb76c69d2d9dee39b48e16cd  gcc/te
*** 66783,66803 ****
  80b4cb87fe477edd1131172d1ed1f65c  gcc/testsuite/gdc.test/fail_compilation/imports/a14424.d
  18a9da16f26c6ac143dd690f3161940d  gcc/testsuite/gdc.test/fail_compilation/imports/a15667.d
  6de5c6a3efa11be90b8f14e1560f8e21  gcc/testsuite/gdc.test/fail_compilation/imports/a15816.d
  8a0978890d46c1b648d7393ba41085c7  gcc/testsuite/gdc.test/fail_compilation/imports/a313.d
  3f619613651ef4aacb1cdbeab1e76c72  gcc/testsuite/gdc.test/fail_compilation/imports/a314.d
  8993c410fd288f8d93b237c8c9dd0de5  gcc/testsuite/gdc.test/fail_compilation/imports/b13465.d
  98bd5409b958fb5f3045875600c9dd05  gcc/testsuite/gdc.test/fail_compilation/imports/b313.d
  47be20d7683e2989b9f383cc0acf5dd7  gcc/testsuite/gdc.test/fail_compilation/imports/b314.d
  6c22a3b6151618b3c6ebf744e1ea10bb  gcc/testsuite/gdc.test/fail_compilation/imports/bar11136.d
  9948a034269cc602a8027767cdfd2ad7  gcc/testsuite/gdc.test/fail_compilation/imports/c314.d
- e549fb3fb27aef58c9fb0e637020f69b  gcc/testsuite/gdc.test/fail_compilation/imports/checkimports3a.d
- f6dc0b6e038af5071ee1975e134b72f2  gcc/testsuite/gdc.test/fail_compilation/imports/checkimports3b.d
- f42b040cc735f147de9e381788dcc63b  gcc/testsuite/gdc.test/fail_compilation/imports/checkimports3c.d
  10489bfd2a41b2782729c602d9440361  gcc/testsuite/gdc.test/fail_compilation/imports/diag10089a.d
  64565529139263f476cf4e8222439f86  gcc/testsuite/gdc.test/fail_compilation/imports/diag10089b.d
  6e471f0a9309d2f38f05f1958207fd0c  gcc/testsuite/gdc.test/fail_compilation/imports/diag10141a.d
  d0a0515b0c18fad085f5c88f61408a31  gcc/testsuite/gdc.test/fail_compilation/imports/diag10141b.d
- ad665c5d6e56c4f3b4f2ebee84c46319  gcc/testsuite/gdc.test/fail_compilation/imports/diag12598a.d
  5de8e96f60092e541c11e06991fb2b2d  gcc/testsuite/gdc.test/fail_compilation/imports/diag9210b.d
  283d6ea31faa6dfbc32f2f945637b212  gcc/testsuite/gdc.test/fail_compilation/imports/diag9210c.d
  bae2aeef80179f36ad348543c7d967c2  gcc/testsuite/gdc.test/fail_compilation/imports/diag9210stdcomplex.d
--- 71480,71500 ----
  80b4cb87fe477edd1131172d1ed1f65c  gcc/testsuite/gdc.test/fail_compilation/imports/a14424.d
  18a9da16f26c6ac143dd690f3161940d  gcc/testsuite/gdc.test/fail_compilation/imports/a15667.d
  6de5c6a3efa11be90b8f14e1560f8e21  gcc/testsuite/gdc.test/fail_compilation/imports/a15816.d
+ 9471ab739aac743e2e2c8682caacfd9e  gcc/testsuite/gdc.test/fail_compilation/imports/a17630.d
+ 11ee73c0f72cbdda8b00101f8a07e256  gcc/testsuite/gdc.test/fail_compilation/imports/a18219.d
  8a0978890d46c1b648d7393ba41085c7  gcc/testsuite/gdc.test/fail_compilation/imports/a313.d
  3f619613651ef4aacb1cdbeab1e76c72  gcc/testsuite/gdc.test/fail_compilation/imports/a314.d
  8993c410fd288f8d93b237c8c9dd0de5  gcc/testsuite/gdc.test/fail_compilation/imports/b13465.d
+ ddf0438cbac445061f8c61dde628a8aa  gcc/testsuite/gdc.test/fail_compilation/imports/b17630.d
+ 1772d9a41a5f34b75ff31f227d09f7a1  gcc/testsuite/gdc.test/fail_compilation/imports/b18219.d
  98bd5409b958fb5f3045875600c9dd05  gcc/testsuite/gdc.test/fail_compilation/imports/b313.d
  47be20d7683e2989b9f383cc0acf5dd7  gcc/testsuite/gdc.test/fail_compilation/imports/b314.d
  6c22a3b6151618b3c6ebf744e1ea10bb  gcc/testsuite/gdc.test/fail_compilation/imports/bar11136.d
  9948a034269cc602a8027767cdfd2ad7  gcc/testsuite/gdc.test/fail_compilation/imports/c314.d
  10489bfd2a41b2782729c602d9440361  gcc/testsuite/gdc.test/fail_compilation/imports/diag10089a.d
  64565529139263f476cf4e8222439f86  gcc/testsuite/gdc.test/fail_compilation/imports/diag10089b.d
  6e471f0a9309d2f38f05f1958207fd0c  gcc/testsuite/gdc.test/fail_compilation/imports/diag10141a.d
  d0a0515b0c18fad085f5c88f61408a31  gcc/testsuite/gdc.test/fail_compilation/imports/diag10141b.d
  5de8e96f60092e541c11e06991fb2b2d  gcc/testsuite/gdc.test/fail_compilation/imports/diag9210b.d
  283d6ea31faa6dfbc32f2f945637b212  gcc/testsuite/gdc.test/fail_compilation/imports/diag9210c.d
  bae2aeef80179f36ad348543c7d967c2  gcc/testsuite/gdc.test/fail_compilation/imports/diag9210stdcomplex.d
*************** a5496d52f55546980cc281b7ea638859  gcc/te
*** 66826,66831 ****
--- 71523,71530 ----
  2b5b48518b494849e46abbdb4943f387  gcc/testsuite/gdc.test/fail_compilation/imports/fail5385.d
  32705ded4b1d98cefe1d05ba75ded723  gcc/testsuite/gdc.test/fail_compilation/imports/foo10727a.d
  a39b86e5f0b2e3c3a700dd9583af8dea  gcc/testsuite/gdc.test/fail_compilation/imports/foo10727b.d
+ 5791316416122dff3127bc6d42a56837  gcc/testsuite/gdc.test/fail_compilation/imports/ice10598a.d
+ 373a817601afc9fc8c384d315851ad57  gcc/testsuite/gdc.test/fail_compilation/imports/ice10598b.d
  fb906c020ae3ec225daeaa722c82d807  gcc/testsuite/gdc.test/fail_compilation/imports/ice10600a.d
  7635185df79fd94ee990d2c6fb0857d1  gcc/testsuite/gdc.test/fail_compilation/imports/ice10600b.d
  0eb63d20359d999ed831ac6f56a4a530  gcc/testsuite/gdc.test/fail_compilation/imports/ice11513x.d
*************** c655742868f7c302fb02d9f969f29129  gcc/te
*** 66838,66844 ****
--- 71537,71546 ----
  0ccfe241098b935bcdd083a0d7a9a9e8  gcc/testsuite/gdc.test/fail_compilation/imports/ice7782range.d
  6f3f72c7467886124f876be13668eb4d  gcc/testsuite/gdc.test/fail_compilation/imports/ice9865b.d
  26ed85484fc1c3d3f8e1328d9698f365  gcc/testsuite/gdc.test/fail_compilation/imports/imp1.d
+ 2a466412f1524eb0743d62122e94a64e  gcc/testsuite/gdc.test/fail_compilation/imports/imp15896.d
+ d0e4233fc485fb20385bfdc07f1ec961  gcc/testsuite/gdc.test/fail_compilation/imports/imp15925.d
  bcb928821f462337afe2f7bcc3727525  gcc/testsuite/gdc.test/fail_compilation/imports/imp2.d
+ 4759daa02b793f751ab2133709ce40bc  gcc/testsuite/gdc.test/fail_compilation/imports/imp21353.d
  6f7cfcaba1d8e75474105c4a6e6ef15f  gcc/testsuite/gdc.test/fail_compilation/imports/issue21295ast_node.d
  6c539ca4211f778c4ce881979c32423e  gcc/testsuite/gdc.test/fail_compilation/imports/issue21295astcodegen.d
  a8f0eca5771864b89f31585409956b5a  gcc/testsuite/gdc.test/fail_compilation/imports/issue21295dtemplate.d
*************** d92cbd0e2ba655eba6bd723bdc42176e  gcc/te
*** 66876,66899 ****
  61e84a1cc7f123599e7a849f5ddb7cf3  gcc/testsuite/gdc.test/fail_compilation/imports/test13152y.d
  61e84a1cc7f123599e7a849f5ddb7cf3  gcc/testsuite/gdc.test/fail_compilation/imports/test13152z.d
  d1bf2852abe982e73b38530127e81352  gcc/testsuite/gdc.test/fail_compilation/imports/test143.d
  3cbd76eb5690663ef2b8bd33894716fe  gcc/testsuite/gdc.test/fail_compilation/imports/test15785.d
  96d5b988300a2abf193f374615cbc419  gcc/testsuite/gdc.test/fail_compilation/imports/test15897.d
  4d0bb7cfd689419a9bf50b4918b40a66  gcc/testsuite/gdc.test/fail_compilation/imports/test21164a.d
  bfa7fe932ed054b951c06fb50cf40453  gcc/testsuite/gdc.test/fail_compilation/imports/test21164b.d
  53b49e7ff7a1e5543791b5e36e02c7bf  gcc/testsuite/gdc.test/fail_compilation/imports/test21164c.d
  80768945ceec466a39fe783102919c1c  gcc/testsuite/gdc.test/fail_compilation/imports/test21164d.d
  f23cb0fd3d8eec3ebf2e0c1922bc5dca  gcc/testsuite/gdc.test/fail_compilation/imports/test5412a.d
  e204ad88ee968daaed8e8d39426a553d  gcc/testsuite/gdc.test/fail_compilation/imports/test5412b.d
  7f9aae340a31e290af56f5a479ab4e02  gcc/testsuite/gdc.test/fail_compilation/imports/test64a.d
  f5d633922de64e7bec5caf92a57c0fae  gcc/testsuite/gdc.test/fail_compilation/issue21295.d
  edf62c7ba775c588a6e4d3da98d85327  gcc/testsuite/gdc.test/fail_compilation/issue3827.d
  5deb7a7bd7c588630607ba076086ed0e  gcc/testsuite/gdc.test/fail_compilation/lexer1.d
  d3338d0c1072a719a8e9a4fc7487fde3  gcc/testsuite/gdc.test/fail_compilation/lexer2.d
  1a92faf17ae313397284eaffa37e732c  gcc/testsuite/gdc.test/fail_compilation/lexer3.d
  70b4ee6f3cc8fd139720eb52c486c793  gcc/testsuite/gdc.test/fail_compilation/lexer4.d
! 95a645e75cabb22833932dc236008873  gcc/testsuite/gdc.test/fail_compilation/lookup.d
  fa4bd5dfadd5df34f8e846285f1906f9  gcc/testsuite/gdc.test/fail_compilation/mangle1.d
  a9d59527dab1377274e2f6d594cd5a19  gcc/testsuite/gdc.test/fail_compilation/mangle2.d
  fe4d6368a23906f4ace80748ad73d9aa  gcc/testsuite/gdc.test/fail_compilation/moduleundefuda.d
  de21ddc704291e3d63102a9829aa2285  gcc/testsuite/gdc.test/fail_compilation/nogc1.d
  381a6f934aa84eb491e09daf2df21a89  gcc/testsuite/gdc.test/fail_compilation/nogc2.d
--- 71578,71606 ----
  61e84a1cc7f123599e7a849f5ddb7cf3  gcc/testsuite/gdc.test/fail_compilation/imports/test13152y.d
  61e84a1cc7f123599e7a849f5ddb7cf3  gcc/testsuite/gdc.test/fail_compilation/imports/test13152z.d
  d1bf2852abe982e73b38530127e81352  gcc/testsuite/gdc.test/fail_compilation/imports/test143.d
+ 2495a7ec11f5a9676dc5f43d8be5b556  gcc/testsuite/gdc.test/fail_compilation/imports/test15117a.d
  3cbd76eb5690663ef2b8bd33894716fe  gcc/testsuite/gdc.test/fail_compilation/imports/test15785.d
  96d5b988300a2abf193f374615cbc419  gcc/testsuite/gdc.test/fail_compilation/imports/test15897.d
  4d0bb7cfd689419a9bf50b4918b40a66  gcc/testsuite/gdc.test/fail_compilation/imports/test21164a.d
  bfa7fe932ed054b951c06fb50cf40453  gcc/testsuite/gdc.test/fail_compilation/imports/test21164b.d
  53b49e7ff7a1e5543791b5e36e02c7bf  gcc/testsuite/gdc.test/fail_compilation/imports/test21164c.d
  80768945ceec466a39fe783102919c1c  gcc/testsuite/gdc.test/fail_compilation/imports/test21164d.d
+ 00ea49154799c340063fb6c244a3f6b4  gcc/testsuite/gdc.test/fail_compilation/imports/test21651b.d
  f23cb0fd3d8eec3ebf2e0c1922bc5dca  gcc/testsuite/gdc.test/fail_compilation/imports/test5412a.d
  e204ad88ee968daaed8e8d39426a553d  gcc/testsuite/gdc.test/fail_compilation/imports/test5412b.d
  7f9aae340a31e290af56f5a479ab4e02  gcc/testsuite/gdc.test/fail_compilation/imports/test64a.d
+ 6fa3d032ace51698c299d55e536e12df  gcc/testsuite/gdc.test/fail_compilation/isreturnonstack.d
+ 45280fe05b89003c24c2e4f21c6a83f7  gcc/testsuite/gdc.test/fail_compilation/issue16020.d
  f5d633922de64e7bec5caf92a57c0fae  gcc/testsuite/gdc.test/fail_compilation/issue21295.d
  edf62c7ba775c588a6e4d3da98d85327  gcc/testsuite/gdc.test/fail_compilation/issue3827.d
  5deb7a7bd7c588630607ba076086ed0e  gcc/testsuite/gdc.test/fail_compilation/lexer1.d
  d3338d0c1072a719a8e9a4fc7487fde3  gcc/testsuite/gdc.test/fail_compilation/lexer2.d
  1a92faf17ae313397284eaffa37e732c  gcc/testsuite/gdc.test/fail_compilation/lexer3.d
  70b4ee6f3cc8fd139720eb52c486c793  gcc/testsuite/gdc.test/fail_compilation/lexer4.d
! 2cf5314ff8b2feca448c4f84a9eb21ed  gcc/testsuite/gdc.test/fail_compilation/lookup.d
  fa4bd5dfadd5df34f8e846285f1906f9  gcc/testsuite/gdc.test/fail_compilation/mangle1.d
  a9d59527dab1377274e2f6d594cd5a19  gcc/testsuite/gdc.test/fail_compilation/mangle2.d
+ 9a9e855b3c4e43d0edad873da941ffd5  gcc/testsuite/gdc.test/fail_compilation/mixintype2.d
  fe4d6368a23906f4ace80748ad73d9aa  gcc/testsuite/gdc.test/fail_compilation/moduleundefuda.d
  de21ddc704291e3d63102a9829aa2285  gcc/testsuite/gdc.test/fail_compilation/nogc1.d
  381a6f934aa84eb491e09daf2df21a89  gcc/testsuite/gdc.test/fail_compilation/nogc2.d
*************** aac183450c9c9d721b58877055faeff1  gcc/te
*** 66925,66938 ****
  cad914261e51ab9d6660d8125f688407  gcc/testsuite/gdc.test/fail_compilation/retscope2.d
  1c1df240526cbb052daf8f76ba31a55d  gcc/testsuite/gdc.test/fail_compilation/skip.d
  c88d54176ad058fb20ed4d515b542af5  gcc/testsuite/gdc.test/fail_compilation/spell9644.d
! ee53be1c1b62bd1214b310b978732fa1  gcc/testsuite/gdc.test/fail_compilation/staticarrayoverflow.d
  1fcc8aaa8f4d74a4f1abe57e47cfd353  gcc/testsuite/gdc.test/fail_compilation/staticforeach1.d
  69da8fec6e17cf06c0720278a97abb96  gcc/testsuite/gdc.test/fail_compilation/staticforeach2.d
  bb6598a0d52b49923b14222dee510692  gcc/testsuite/gdc.test/fail_compilation/staticforeach3.d
  485f4bb356842e694e7ad2e7e77d452d  gcc/testsuite/gdc.test/fail_compilation/switches.d
! 95b3644556b48a25f3366d82b0e3b349  gcc/testsuite/gdc.test/fail_compilation/test1.d
  80fba42f4e0a27cc8ac5f1a7b3773f09  gcc/testsuite/gdc.test/fail_compilation/test11047.d
! 34ea4e67526f2f0f0496f480ed59571d  gcc/testsuite/gdc.test/fail_compilation/test11176.d
  51118abe845ab8f61660aeae6369524d  gcc/testsuite/gdc.test/fail_compilation/test12822.d
  c83408c9a110a1431ad463a3242eb0d5  gcc/testsuite/gdc.test/fail_compilation/test13152.d
  418449eff45afb5c14a3bea658ed3520  gcc/testsuite/gdc.test/fail_compilation/test13536.d
--- 71632,71645 ----
  cad914261e51ab9d6660d8125f688407  gcc/testsuite/gdc.test/fail_compilation/retscope2.d
  1c1df240526cbb052daf8f76ba31a55d  gcc/testsuite/gdc.test/fail_compilation/skip.d
  c88d54176ad058fb20ed4d515b542af5  gcc/testsuite/gdc.test/fail_compilation/spell9644.d
! c2ec88bc3a6caabd86a6136d3c0fcc04  gcc/testsuite/gdc.test/fail_compilation/staticarrayoverflow.d
  1fcc8aaa8f4d74a4f1abe57e47cfd353  gcc/testsuite/gdc.test/fail_compilation/staticforeach1.d
  69da8fec6e17cf06c0720278a97abb96  gcc/testsuite/gdc.test/fail_compilation/staticforeach2.d
  bb6598a0d52b49923b14222dee510692  gcc/testsuite/gdc.test/fail_compilation/staticforeach3.d
  485f4bb356842e694e7ad2e7e77d452d  gcc/testsuite/gdc.test/fail_compilation/switches.d
! 82097814cc50105a55a7ef8ecc8b9a03  gcc/testsuite/gdc.test/fail_compilation/test1.d
  80fba42f4e0a27cc8ac5f1a7b3773f09  gcc/testsuite/gdc.test/fail_compilation/test11047.d
! f47eae3a33f2476b57fb4417b495c91b  gcc/testsuite/gdc.test/fail_compilation/test11176.d
  51118abe845ab8f61660aeae6369524d  gcc/testsuite/gdc.test/fail_compilation/test12822.d
  c83408c9a110a1431ad463a3242eb0d5  gcc/testsuite/gdc.test/fail_compilation/test13152.d
  418449eff45afb5c14a3bea658ed3520  gcc/testsuite/gdc.test/fail_compilation/test13536.d
*************** c83408c9a110a1431ad463a3242eb0d5  gcc/te
*** 66940,67001 ****
  edd3be9a50cba03d40ee6c3f290cd796  gcc/testsuite/gdc.test/fail_compilation/test13786.d
  5b43181f9e7954ae6dbd5f4204cab35c  gcc/testsuite/gdc.test/fail_compilation/test13867.d
  eae9659dbef67cc130d7967cb02a0f99  gcc/testsuite/gdc.test/fail_compilation/test14238.d
! c36434e0b554d086b5ce131f87645fef  gcc/testsuite/gdc.test/fail_compilation/test143.d
  8147af0b95603b27dd40e50c99ea3176  gcc/testsuite/gdc.test/fail_compilation/test14496.d
  edb0fcbaff1144d8a8c2a8129d3acedb  gcc/testsuite/gdc.test/fail_compilation/test14538.d
  fa500404a52abde4e94b24412d14b14f  gcc/testsuite/gdc.test/fail_compilation/test15191.d
  3e20a6e92877a0447b91def11656a634  gcc/testsuite/gdc.test/fail_compilation/test15306.d
! 2255845422fafb3cd1798650fb2e339d  gcc/testsuite/gdc.test/fail_compilation/test15399.d
  b297b2fd80da161409b483a0b04e986a  gcc/testsuite/gdc.test/fail_compilation/test15544.d
  072bd1aee2ff47ce8a4a1b4cdeada96e  gcc/testsuite/gdc.test/fail_compilation/test15672.d
  f2585071cb3ac901f2a93e39c8837415  gcc/testsuite/gdc.test/fail_compilation/test15703.d
  fe65c3da98d1de7f0cf0f36d03118ee3  gcc/testsuite/gdc.test/fail_compilation/test15704.d
! aa9d3dfa3ae4594ae8872154d7ef14fc  gcc/testsuite/gdc.test/fail_compilation/test15785.d
! c6a20e8b329b64edd7c189836daab673  gcc/testsuite/gdc.test/fail_compilation/test15785b.d
! 6cb5667b737e6b8be646a7d2626b7011  gcc/testsuite/gdc.test/fail_compilation/test15897.d
  9c598ebbd0a97d7f14e7614f5a263dd3  gcc/testsuite/gdc.test/fail_compilation/test15989.d
  c78f97e55ff573d0611f54b4597a33c8  gcc/testsuite/gdc.test/fail_compilation/test16095.d
  565d491026d0ec70f76bc2591121752b  gcc/testsuite/gdc.test/fail_compilation/test16116.d
! 879771fbe41de8947c8d74786c4dd687  gcc/testsuite/gdc.test/fail_compilation/test16188.d
  a5f1a7b08026edaba53cf01160cae151  gcc/testsuite/gdc.test/fail_compilation/test16193.d
  197802ad3ed68d01b6762af55cb9bdd0  gcc/testsuite/gdc.test/fail_compilation/test16195.d
! 1d178afee6956e7ef1a72d8d3640c68d  gcc/testsuite/gdc.test/fail_compilation/test16228.d
  187fb8c20327d6df2a9ca712fdf02619  gcc/testsuite/gdc.test/fail_compilation/test16365.d
  fa92589f371209970b5e1cd19981a8e5  gcc/testsuite/gdc.test/fail_compilation/test16381.d
  fba84fa4be8dd254f0cacc08aa5999f3  gcc/testsuite/gdc.test/fail_compilation/test16523.d
  b04d3086bfc8fd3a8aa2af8f6ba255b5  gcc/testsuite/gdc.test/fail_compilation/test16589.d
  fa5c084003ef4264fe2dcee3b1d31d9b  gcc/testsuite/gdc.test/fail_compilation/test17307.d
  3b214d273aa841f50cc8a1e86597be18  gcc/testsuite/gdc.test/fail_compilation/test17380.d
  acb6680b2a94bc2215e473ce3156efd2  gcc/testsuite/gdc.test/fail_compilation/test17422.d
  10bf1a2720198f8a690fa4c52f95dc64  gcc/testsuite/gdc.test/fail_compilation/test17425.d
  6b077e169d42228c2760bfca8d586d48  gcc/testsuite/gdc.test/fail_compilation/test17450.d
  44bec9d5fdedac7d11747b1cd3d119e1  gcc/testsuite/gdc.test/fail_compilation/test17451.d
  a7a660644aa3a898b18641bb0128e405  gcc/testsuite/gdc.test/fail_compilation/test18312.d
  67abd3b15509154f2ad168138e069892  gcc/testsuite/gdc.test/fail_compilation/test19608.d
  a2dfda31aa6bb8862b349db8dd7c06f0  gcc/testsuite/gdc.test/fail_compilation/test21164.d
! 0cedb3e9f07ed5c04f144df0907f77a2  gcc/testsuite/gdc.test/fail_compilation/test314.d
  465b130426028cac7c9bb32cf2f4fdee  gcc/testsuite/gdc.test/fail_compilation/test4682.d
  5e3c07e144e8f8d3dc6a9bd044054a82  gcc/testsuite/gdc.test/fail_compilation/test4682a.d
  63f2b3461d09f82332a5cb2e30917f65  gcc/testsuite/gdc.test/fail_compilation/test4838.d
! 8a8f370359bce766cd9d259b9c0b3120  gcc/testsuite/gdc.test/fail_compilation/test5412a.d
! 2f1933565fc3728b5848c41affb54b19  gcc/testsuite/gdc.test/fail_compilation/test5412b.d
! 35baf234c30aa9abc91849a221745b94  gcc/testsuite/gdc.test/fail_compilation/test5412c.d
  fb9ae4384bc2107903cd2a2654f90763  gcc/testsuite/gdc.test/fail_compilation/test64.d
  41061beff9b304e814bb0fc6540a8cf3  gcc/testsuite/gdc.test/fail_compilation/test6883.d
! 618e1ddbe6399339d8227a2ec4ae163f  gcc/testsuite/gdc.test/fail_compilation/test8509.d
  41d2f3d125c3a98b2eb293dda27712e4  gcc/testsuite/gdc.test/fail_compilation/test8556.d
! fa72182f632df601904aa45d8333b37c  gcc/testsuite/gdc.test/fail_compilation/test8751.d
  64b7c36a77588495efb98abd3ff18309  gcc/testsuite/gdc.test/fail_compilation/test9150.d
  26410607b22952aadbad4189433cd7ec  gcc/testsuite/gdc.test/fail_compilation/test9176.d
  f79b6d410e2678b3fd39b826e3d92208  gcc/testsuite/gdc.test/fail_compilation/testCols.d
  28931a9744bb5688f5af5b9e65abd0c4  gcc/testsuite/gdc.test/fail_compilation/testInference.d
  e8414d320eb495cd2c6d89c72db35445  gcc/testsuite/gdc.test/fail_compilation/testpull1810.d
  eb741612728d2cbfb86e3a57b73f09b5  gcc/testsuite/gdc.test/fail_compilation/testscopestatic.d
  4bc4006892d5f8f77213130f3a99de63  gcc/testsuite/gdc.test/fail_compilation/traits_alone.d
  cc29f88b0b166edc828a3329d424bda3  gcc/testsuite/gdc.test/fail_compilation/typeerrors.d
  e9b76ed9d6ac70bc2a0374b247c4d24b  gcc/testsuite/gdc.test/fail_compilation/verrors0.d
  0f994645f171fee35d3e36e19e9214b2  gcc/testsuite/gdc.test/fail_compilation/verrors5.d
! ab8bcdd4398caf02791b6a8a5c0a92f7  gcc/testsuite/gdc.test/fail_compilation/warn12809.d
  e083d7d0a7066ca6838c793a6d9e7728  gcc/testsuite/gdc.test/fail_compilation/warn13679.d
  e389a36f61b61b068d8383956fcae978  gcc/testsuite/gdc.test/fail_compilation/warn7444.d
  ba48bb410e12885cc62cfe4376b90e24  gcc/testsuite/gdc.test/fail_compilation/widechars.d
--- 71647,71724 ----
  edd3be9a50cba03d40ee6c3f290cd796  gcc/testsuite/gdc.test/fail_compilation/test13786.d
  5b43181f9e7954ae6dbd5f4204cab35c  gcc/testsuite/gdc.test/fail_compilation/test13867.d
  eae9659dbef67cc130d7967cb02a0f99  gcc/testsuite/gdc.test/fail_compilation/test14238.d
! 277fff1c27308d4df74c65c51129a141  gcc/testsuite/gdc.test/fail_compilation/test143.d
  8147af0b95603b27dd40e50c99ea3176  gcc/testsuite/gdc.test/fail_compilation/test14496.d
  edb0fcbaff1144d8a8c2a8129d3acedb  gcc/testsuite/gdc.test/fail_compilation/test14538.d
+ 6390685d0efdb802a5a03c5cafae13f3  gcc/testsuite/gdc.test/fail_compilation/test15117.d
  fa500404a52abde4e94b24412d14b14f  gcc/testsuite/gdc.test/fail_compilation/test15191.d
  3e20a6e92877a0447b91def11656a634  gcc/testsuite/gdc.test/fail_compilation/test15306.d
! 1c74e5c62ad67d281fc3ea7f3e33ec02  gcc/testsuite/gdc.test/fail_compilation/test15399.d
  b297b2fd80da161409b483a0b04e986a  gcc/testsuite/gdc.test/fail_compilation/test15544.d
  072bd1aee2ff47ce8a4a1b4cdeada96e  gcc/testsuite/gdc.test/fail_compilation/test15672.d
  f2585071cb3ac901f2a93e39c8837415  gcc/testsuite/gdc.test/fail_compilation/test15703.d
  fe65c3da98d1de7f0cf0f36d03118ee3  gcc/testsuite/gdc.test/fail_compilation/test15704.d
! e96e31833233681174522719083f225f  gcc/testsuite/gdc.test/fail_compilation/test15785.d
! 27e679be97c82c1add469728e30b5c62  gcc/testsuite/gdc.test/fail_compilation/test15785b.d
! c55090b22f08e93fc893feebe954f1e1  gcc/testsuite/gdc.test/fail_compilation/test15897.d
! 3728aceda46f7f32d4f0fed6d5e506d1  gcc/testsuite/gdc.test/fail_compilation/test15925.d
  9c598ebbd0a97d7f14e7614f5a263dd3  gcc/testsuite/gdc.test/fail_compilation/test15989.d
  c78f97e55ff573d0611f54b4597a33c8  gcc/testsuite/gdc.test/fail_compilation/test16095.d
  565d491026d0ec70f76bc2591121752b  gcc/testsuite/gdc.test/fail_compilation/test16116.d
! 30c840845a5e49810b36925ead2d1a5e  gcc/testsuite/gdc.test/fail_compilation/test16188.d
  a5f1a7b08026edaba53cf01160cae151  gcc/testsuite/gdc.test/fail_compilation/test16193.d
  197802ad3ed68d01b6762af55cb9bdd0  gcc/testsuite/gdc.test/fail_compilation/test16195.d
! 0adcabc3b60bf6a97183052c7c05f209  gcc/testsuite/gdc.test/fail_compilation/test16228.d
  187fb8c20327d6df2a9ca712fdf02619  gcc/testsuite/gdc.test/fail_compilation/test16365.d
  fa92589f371209970b5e1cd19981a8e5  gcc/testsuite/gdc.test/fail_compilation/test16381.d
  fba84fa4be8dd254f0cacc08aa5999f3  gcc/testsuite/gdc.test/fail_compilation/test16523.d
  b04d3086bfc8fd3a8aa2af8f6ba255b5  gcc/testsuite/gdc.test/fail_compilation/test16589.d
+ 8a1e1c8ebc97ba6532defbe55f9c4728  gcc/testsuite/gdc.test/fail_compilation/test17096.d
  fa5c084003ef4264fe2dcee3b1d31d9b  gcc/testsuite/gdc.test/fail_compilation/test17307.d
  3b214d273aa841f50cc8a1e86597be18  gcc/testsuite/gdc.test/fail_compilation/test17380.d
  acb6680b2a94bc2215e473ce3156efd2  gcc/testsuite/gdc.test/fail_compilation/test17422.d
  10bf1a2720198f8a690fa4c52f95dc64  gcc/testsuite/gdc.test/fail_compilation/test17425.d
  6b077e169d42228c2760bfca8d586d48  gcc/testsuite/gdc.test/fail_compilation/test17450.d
  44bec9d5fdedac7d11747b1cd3d119e1  gcc/testsuite/gdc.test/fail_compilation/test17451.d
+ 47fc9c265bc4fd596a224fb51e63e09c  gcc/testsuite/gdc.test/fail_compilation/test17908a.d
+ f79ff08f6a4f8c6756261d3e8abd2c0b  gcc/testsuite/gdc.test/fail_compilation/test17908b.d
  a7a660644aa3a898b18641bb0128e405  gcc/testsuite/gdc.test/fail_compilation/test18312.d
  67abd3b15509154f2ad168138e069892  gcc/testsuite/gdc.test/fail_compilation/test19608.d
+ b63d81d149ced101cc0047fccfbfbff2  gcc/testsuite/gdc.test/fail_compilation/test20919.d
  a2dfda31aa6bb8862b349db8dd7c06f0  gcc/testsuite/gdc.test/fail_compilation/test21164.d
! 6dd671859ff08d6c5ae03d7466d149ee  gcc/testsuite/gdc.test/fail_compilation/test21353.d
! 71e1aa25aaa777c4eef2e9d4c47f72c0  gcc/testsuite/gdc.test/fail_compilation/test21651.d
! c7379540d384d1b0a88e793609c2ec5f  gcc/testsuite/gdc.test/fail_compilation/test314.d
  465b130426028cac7c9bb32cf2f4fdee  gcc/testsuite/gdc.test/fail_compilation/test4682.d
  5e3c07e144e8f8d3dc6a9bd044054a82  gcc/testsuite/gdc.test/fail_compilation/test4682a.d
  63f2b3461d09f82332a5cb2e30917f65  gcc/testsuite/gdc.test/fail_compilation/test4838.d
! 68a376176c9ed6a78fe7a713342fe1be  gcc/testsuite/gdc.test/fail_compilation/test5412a.d
! e9808af6da103a5976d3382176178373  gcc/testsuite/gdc.test/fail_compilation/test5412b.d
! d2b87ee44dddab23a1c9886c5841ae8c  gcc/testsuite/gdc.test/fail_compilation/test5412c.d
! 59e02e76cb49a9c1b9e122d71718c235  gcc/testsuite/gdc.test/fail_compilation/test5412c2.di
  fb9ae4384bc2107903cd2a2654f90763  gcc/testsuite/gdc.test/fail_compilation/test64.d
  41061beff9b304e814bb0fc6540a8cf3  gcc/testsuite/gdc.test/fail_compilation/test6883.d
! e5c1326640ea3425f6b79d83f241800c  gcc/testsuite/gdc.test/fail_compilation/test8509.d
  41d2f3d125c3a98b2eb293dda27712e4  gcc/testsuite/gdc.test/fail_compilation/test8556.d
! ec4dab98798d55fe2c57ec7dd6dca969  gcc/testsuite/gdc.test/fail_compilation/test8751.d
  64b7c36a77588495efb98abd3ff18309  gcc/testsuite/gdc.test/fail_compilation/test9150.d
  26410607b22952aadbad4189433cd7ec  gcc/testsuite/gdc.test/fail_compilation/test9176.d
+ 3e82cd1f5934af7ffd5f01dbd216d4d9  gcc/testsuite/gdc.test/fail_compilation/test9701.d
+ 2d23ef629ce1976bf0fded17556c8aa5  gcc/testsuite/gdc.test/fail_compilation/test9701b.d
  f79b6d410e2678b3fd39b826e3d92208  gcc/testsuite/gdc.test/fail_compilation/testCols.d
  28931a9744bb5688f5af5b9e65abd0c4  gcc/testsuite/gdc.test/fail_compilation/testInference.d
  e8414d320eb495cd2c6d89c72db35445  gcc/testsuite/gdc.test/fail_compilation/testpull1810.d
  eb741612728d2cbfb86e3a57b73f09b5  gcc/testsuite/gdc.test/fail_compilation/testscopestatic.d
+ 0d80721741c60f909fe7b950a09d518c  gcc/testsuite/gdc.test/fail_compilation/trait_loc_err.d
+ 3cd67c281e7569394eb1c1c3ebd7f1f9  gcc/testsuite/gdc.test/fail_compilation/trait_loc_ov_err.d
+ c1eb2ef6bee5a0c020b7182071aca9f2  gcc/testsuite/gdc.test/fail_compilation/traits.d
  4bc4006892d5f8f77213130f3a99de63  gcc/testsuite/gdc.test/fail_compilation/traits_alone.d
+ 700ab19295edd0428550fd3166fa73eb  gcc/testsuite/gdc.test/fail_compilation/traits_child.d
  cc29f88b0b166edc828a3329d424bda3  gcc/testsuite/gdc.test/fail_compilation/typeerrors.d
+ ec15e095250e64dfc7cf74020eebd50c  gcc/testsuite/gdc.test/fail_compilation/udaparams.d
  e9b76ed9d6ac70bc2a0374b247c4d24b  gcc/testsuite/gdc.test/fail_compilation/verrors0.d
  0f994645f171fee35d3e36e19e9214b2  gcc/testsuite/gdc.test/fail_compilation/verrors5.d
! 4147f35421f7022e4026a1c4d110ecba  gcc/testsuite/gdc.test/fail_compilation/warn12809.d
  e083d7d0a7066ca6838c793a6d9e7728  gcc/testsuite/gdc.test/fail_compilation/warn13679.d
  e389a36f61b61b068d8383956fcae978  gcc/testsuite/gdc.test/fail_compilation/warn7444.d
  ba48bb410e12885cc62cfe4376b90e24  gcc/testsuite/gdc.test/fail_compilation/widechars.d
*************** ba48bb410e12885cc62cfe4376b90e24  gcc/te
*** 67005,67011 ****
  c94753459d78c7629a37ddb7b9e7659e  gcc/testsuite/gdc.test/runnable/a18.d
  728cef3c0774566effde4b4a45414d3c  gcc/testsuite/gdc.test/runnable/a19.d
  b250d089750392582527849c3add89ca  gcc/testsuite/gdc.test/runnable/a21.d
! 1498f6e34a26889c1bd7c2c20c1e5d9d  gcc/testsuite/gdc.test/runnable/aliasthis.d
  3dc061aea78005c462247d997510875c  gcc/testsuite/gdc.test/runnable/arrayop.d
  dd125279c7b575bfb3880d7030cee35c  gcc/testsuite/gdc.test/runnable/auto1.d
  65c4da6831a7756860e462a8e30bc23e  gcc/testsuite/gdc.test/runnable/b16278.d
--- 71728,71734 ----
  c94753459d78c7629a37ddb7b9e7659e  gcc/testsuite/gdc.test/runnable/a18.d
  728cef3c0774566effde4b4a45414d3c  gcc/testsuite/gdc.test/runnable/a19.d
  b250d089750392582527849c3add89ca  gcc/testsuite/gdc.test/runnable/a21.d
! a31d70df66c03461973f9ca8ace32c31  gcc/testsuite/gdc.test/runnable/aliasthis.d
  3dc061aea78005c462247d997510875c  gcc/testsuite/gdc.test/runnable/arrayop.d
  dd125279c7b575bfb3880d7030cee35c  gcc/testsuite/gdc.test/runnable/auto1.d
  65c4da6831a7756860e462a8e30bc23e  gcc/testsuite/gdc.test/runnable/b16278.d
*************** af2f95c5ef65b51539eef86ea15fa531  gcc/te
*** 67026,67036 ****
  af85e848ea130104ea5f4cb32d15d20c  gcc/testsuite/gdc.test/runnable/circular.d
  3685129d0a895a1072addc7f7d9d175b  gcc/testsuite/gdc.test/runnable/closure.d
  cadad7e54f827a88d0e880b8479ee2ca  gcc/testsuite/gdc.test/runnable/complex.d
! 039419318e3aff125730b0c926d61bfa  gcc/testsuite/gdc.test/runnable/constfold.d
! d77f33fd26743890ee1c93b3a70e64af  gcc/testsuite/gdc.test/runnable/ctorpowtests.d
! d4756e7b13f890dbb6b72e3a38a51097  gcc/testsuite/gdc.test/runnable/declaration.d
  fc82bacc0b2cb69adf96668e624b66d6  gcc/testsuite/gdc.test/runnable/delegate.d
- a916dc46125ed01b449ab2b1ed3a5d5f  gcc/testsuite/gdc.test/runnable/dhry.d
  e16a173b033d44ac86490e5b91a9a2be  gcc/testsuite/gdc.test/runnable/e7804.d
  a13e36c647ba0bdefcee550b8b20b770  gcc/testsuite/gdc.test/runnable/eh.d
  5722a1733c880e8a632c938c12f40b9f  gcc/testsuite/gdc.test/runnable/eh2.d
--- 71749,71758 ----
  af85e848ea130104ea5f4cb32d15d20c  gcc/testsuite/gdc.test/runnable/circular.d
  3685129d0a895a1072addc7f7d9d175b  gcc/testsuite/gdc.test/runnable/closure.d
  cadad7e54f827a88d0e880b8479ee2ca  gcc/testsuite/gdc.test/runnable/complex.d
! b736533d783395a6f3e13cc668776e1b  gcc/testsuite/gdc.test/runnable/constfold.d
! f1780e3058b0449a828103764e732508  gcc/testsuite/gdc.test/runnable/ctorpowtests.d
! 029fb80a305a2903fba7a7802dbe58fe  gcc/testsuite/gdc.test/runnable/declaration.d
  fc82bacc0b2cb69adf96668e624b66d6  gcc/testsuite/gdc.test/runnable/delegate.d
  e16a173b033d44ac86490e5b91a9a2be  gcc/testsuite/gdc.test/runnable/e7804.d
  a13e36c647ba0bdefcee550b8b20b770  gcc/testsuite/gdc.test/runnable/eh.d
  5722a1733c880e8a632c938c12f40b9f  gcc/testsuite/gdc.test/runnable/eh2.d
*************** d1a345bbcd6c3027691c0839be38cd1c  gcc/te
*** 67050,67059 ****
  c2b283d1e3e31cd510962c7938b6772e  gcc/testsuite/gdc.test/runnable/foreach2.d
  ffdf26707f658563246f6f2eb55a1ed9  gcc/testsuite/gdc.test/runnable/foreach3.d
  54958f02697b235757871bf55160f48a  gcc/testsuite/gdc.test/runnable/foreach4.d
! f05c195ef95d90eefce821474cf9d90b  gcc/testsuite/gdc.test/runnable/foreach5.d
! 5eba3216edb07b609a8aca62c4fb5cc6  gcc/testsuite/gdc.test/runnable/funclit.d
  3ff1a9215f43376d58880f55d86aeff9  gcc/testsuite/gdc.test/runnable/functype.d
! e86de5a186ee8563b1ec535f549005bd  gcc/testsuite/gdc.test/runnable/future.d
  208419c3692ceb14bc534c2fca760959  gcc/testsuite/gdc.test/runnable/hello.d
  d84c027aa1650b72c56b62617867526a  gcc/testsuite/gdc.test/runnable/helloUTF8.d
  92368d5b6d3c89f59b0e43d8dd40c626  gcc/testsuite/gdc.test/runnable/ice10086a.d
--- 71772,71781 ----
  c2b283d1e3e31cd510962c7938b6772e  gcc/testsuite/gdc.test/runnable/foreach2.d
  ffdf26707f658563246f6f2eb55a1ed9  gcc/testsuite/gdc.test/runnable/foreach3.d
  54958f02697b235757871bf55160f48a  gcc/testsuite/gdc.test/runnable/foreach4.d
! 528464bc795d4b8cf2acc32bc7522e52  gcc/testsuite/gdc.test/runnable/foreach5.d
! 73d2e5cc0d43ca7077b4ba5d658e93de  gcc/testsuite/gdc.test/runnable/funclit.d
  3ff1a9215f43376d58880f55d86aeff9  gcc/testsuite/gdc.test/runnable/functype.d
! 976a8be8b48b1d50d5b38d829a14e5c5  gcc/testsuite/gdc.test/runnable/future.d
  208419c3692ceb14bc534c2fca760959  gcc/testsuite/gdc.test/runnable/hello.d
  d84c027aa1650b72c56b62617867526a  gcc/testsuite/gdc.test/runnable/helloUTF8.d
  92368d5b6d3c89f59b0e43d8dd40c626  gcc/testsuite/gdc.test/runnable/ice10086a.d
*************** cc2ea3b155d5eb748182dedb676f4609  gcc/te
*** 67128,67134 ****
  9212d4a148b1edaed90009f6eaeab1a5  gcc/testsuite/gdc.test/runnable/imports/link14588a.d
  f4c488a9d6e85b1e7e178bebfaeeb2b8  gcc/testsuite/gdc.test/runnable/imports/link14814a.d
  e0410a36758fc91016312754970eae01  gcc/testsuite/gdc.test/runnable/imports/link15194b.d
! e349b9e460a01e3eed6ecf757600b827  gcc/testsuite/gdc.test/runnable/imports/link15194std.d
  5bbdc5c9fef5f6f4bed316def19d65da  gcc/testsuite/gdc.test/runnable/imports/link2500a.d
  f94e55d34f600c8a37702f03224065e2  gcc/testsuite/gdc.test/runnable/imports/link2500b.d
  29c06f2a2dbf54e3229ec7a04af26d09  gcc/testsuite/gdc.test/runnable/imports/link2644a.d
--- 71850,71856 ----
  9212d4a148b1edaed90009f6eaeab1a5  gcc/testsuite/gdc.test/runnable/imports/link14588a.d
  f4c488a9d6e85b1e7e178bebfaeeb2b8  gcc/testsuite/gdc.test/runnable/imports/link14814a.d
  e0410a36758fc91016312754970eae01  gcc/testsuite/gdc.test/runnable/imports/link15194b.d
! 66f77d123b13ed1db62d83a5880f6ce4  gcc/testsuite/gdc.test/runnable/imports/link15194std.d
  5bbdc5c9fef5f6f4bed316def19d65da  gcc/testsuite/gdc.test/runnable/imports/link2500a.d
  f94e55d34f600c8a37702f03224065e2  gcc/testsuite/gdc.test/runnable/imports/link2500b.d
  29c06f2a2dbf54e3229ec7a04af26d09  gcc/testsuite/gdc.test/runnable/imports/link2644a.d
*************** d84a257c80c475fcc45467e5e08b86d2  gcc/te
*** 67182,67187 ****
--- 71904,71910 ----
  076bc4058af8260454ea7f02075d7d10  gcc/testsuite/gdc.test/runnable/imports/test14901b.d
  b7f68b4c61d33b5c5d3cbdbf1c383d1f  gcc/testsuite/gdc.test/runnable/imports/test14901c.d
  dbeebef5b688e48a4d93de2bac55cb36  gcc/testsuite/gdc.test/runnable/imports/test14901d.d
+ cb29f0c65040e0b005ddff6f5e73f135  gcc/testsuite/gdc.test/runnable/imports/test18322import.d
  38a5c5a8961efeb002ed2bd91995c376  gcc/testsuite/gdc.test/runnable/imports/test21a.d
  586de6d2bde9ed603ef8d19f35438e4c  gcc/testsuite/gdc.test/runnable/imports/test24a.d
  a26de45a8e0548d9fafee9b263135bf3  gcc/testsuite/gdc.test/runnable/imports/test24b.d
*************** bd34ddb120f91984f33353b23f726d88  gcc/te
*** 67213,67218 ****
--- 71936,71942 ----
  811673192b36404d79d2482e73a8c55e  gcc/testsuite/gdc.test/runnable/imports/test8997a.d
  dd08e2b659e358af596b660615512b14  gcc/testsuite/gdc.test/runnable/imports/test9271a.d
  98147d4c61fc6d5a0d245bca3f63c146  gcc/testsuite/gdc.test/runnable/imports/testkwd_file.d
+ 94b8568f2076787bc0af8d830c0b8410  gcc/testsuite/gdc.test/runnable/imports/testmangle.d
  0f5e933be7ea67c562affaaa4f87664b  gcc/testsuite/gdc.test/runnable/imports/testminitAA.d
  b3e37cdc05a46ce22dd8f9b2cee8dc82  gcc/testsuite/gdc.test/runnable/imports/testminitBB.d
  ef5abef9e8e1f1cbe559761b2e65adef  gcc/testsuite/gdc.test/runnable/imports/testmod1a.d
*************** f7d709d852581fa8afa0dd0d20f5b2a3  gcc/te
*** 67232,67245 ****
  ca24fa67843e9b5f04f6e36b4156cd09  gcc/testsuite/gdc.test/runnable/interface1.d
  a6d97260056023925c365ca946785f56  gcc/testsuite/gdc.test/runnable/interface2.d
  2407b9b13a96d9a0d1a0ca6c9907aa53  gcc/testsuite/gdc.test/runnable/interface3.d
! 3b109bd27d40e73d8f6f7b6c9e6c823e  gcc/testsuite/gdc.test/runnable/interpret.d
  44d581e4ea1149f2833ca1c0e41af744  gcc/testsuite/gdc.test/runnable/interpret2.d
  ab921221e5ac9c8ade727a921a5c03b9  gcc/testsuite/gdc.test/runnable/issue8671.d
! dae61d44f57b31f459a7cdbb276fa058  gcc/testsuite/gdc.test/runnable/lazy.d
  39e7e24e679fa283298fb63c41528a27  gcc/testsuite/gdc.test/runnable/ldc_github_1677.d
  f0b8845ea92059153ccc8580ce0ebaa6  gcc/testsuite/gdc.test/runnable/lexer.d
  256dcf104e7fc7dcd3ae1f3f5ec34eaa  gcc/testsuite/gdc.test/runnable/link10425.d
! 477244e9826799a3a19eed1ed810418e  gcc/testsuite/gdc.test/runnable/link10920.d
  26e709a1ae498695213bf407bcd72468  gcc/testsuite/gdc.test/runnable/link11069a.d
  f41e87e784eed3bee2f8a0f1ebc5d937  gcc/testsuite/gdc.test/runnable/link11069b.d
  258c8de9c1dd9e6519ec5187a6271c23  gcc/testsuite/gdc.test/runnable/link11127.d
--- 71956,71969 ----
  ca24fa67843e9b5f04f6e36b4156cd09  gcc/testsuite/gdc.test/runnable/interface1.d
  a6d97260056023925c365ca946785f56  gcc/testsuite/gdc.test/runnable/interface2.d
  2407b9b13a96d9a0d1a0ca6c9907aa53  gcc/testsuite/gdc.test/runnable/interface3.d
! 8072456884604f160945b0484fa1d219  gcc/testsuite/gdc.test/runnable/interpret.d
  44d581e4ea1149f2833ca1c0e41af744  gcc/testsuite/gdc.test/runnable/interpret2.d
  ab921221e5ac9c8ade727a921a5c03b9  gcc/testsuite/gdc.test/runnable/issue8671.d
! cc962d1a406717106bcac2215837a0a7  gcc/testsuite/gdc.test/runnable/lazy.d
  39e7e24e679fa283298fb63c41528a27  gcc/testsuite/gdc.test/runnable/ldc_github_1677.d
  f0b8845ea92059153ccc8580ce0ebaa6  gcc/testsuite/gdc.test/runnable/lexer.d
  256dcf104e7fc7dcd3ae1f3f5ec34eaa  gcc/testsuite/gdc.test/runnable/link10425.d
! 6f384d861e8f7b136caa11a726124bb8  gcc/testsuite/gdc.test/runnable/link10920.d
  26e709a1ae498695213bf407bcd72468  gcc/testsuite/gdc.test/runnable/link11069a.d
  f41e87e784eed3bee2f8a0f1ebc5d937  gcc/testsuite/gdc.test/runnable/link11069b.d
  258c8de9c1dd9e6519ec5187a6271c23  gcc/testsuite/gdc.test/runnable/link11127.d
*************** b5bd4ad0a072414af091c3d46ad893bf  gcc/te
*** 67262,67272 ****
  ac71d770f566f776338e85e9130ca5b8  gcc/testsuite/gdc.test/runnable/link14814.d
  febb38f88915dcad32b96c748ca372d5  gcc/testsuite/gdc.test/runnable/link14992.d
  19786a7d601ee619f7cad8129ba2ead3  gcc/testsuite/gdc.test/runnable/link15017.d
! 8941686eb690529e741580a0ab4f45db  gcc/testsuite/gdc.test/runnable/link15021.d
  c1ccbb77e86bce621b967e7caacfe287  gcc/testsuite/gdc.test/runnable/link15149.d
  3debfb842852beb2042204839cf34b6d  gcc/testsuite/gdc.test/runnable/link2500.d
  337a4a44ed2a8e23873930099d24e3f4  gcc/testsuite/gdc.test/runnable/link2644.d
! ca6c088887519e3342b5e252eced1973  gcc/testsuite/gdc.test/runnable/link6574.d
  97d22e9edada311538bc1dbb0d577d88  gcc/testsuite/gdc.test/runnable/link7745.d
  470b1566da61f13c8e4ab9f269f97d7e  gcc/testsuite/gdc.test/runnable/link7966.d
  05cc741dc6110c98a1b53b90bce3d3a0  gcc/testsuite/gdc.test/runnable/link8023.d
--- 71986,71996 ----
  ac71d770f566f776338e85e9130ca5b8  gcc/testsuite/gdc.test/runnable/link14814.d
  febb38f88915dcad32b96c748ca372d5  gcc/testsuite/gdc.test/runnable/link14992.d
  19786a7d601ee619f7cad8129ba2ead3  gcc/testsuite/gdc.test/runnable/link15017.d
! 8a0529dcc27e277c63f3cc54efb7ba1f  gcc/testsuite/gdc.test/runnable/link15021.d
  c1ccbb77e86bce621b967e7caacfe287  gcc/testsuite/gdc.test/runnable/link15149.d
  3debfb842852beb2042204839cf34b6d  gcc/testsuite/gdc.test/runnable/link2500.d
  337a4a44ed2a8e23873930099d24e3f4  gcc/testsuite/gdc.test/runnable/link2644.d
! 141455fef78d305fe3e3820d692f4d34  gcc/testsuite/gdc.test/runnable/link6574.d
  97d22e9edada311538bc1dbb0d577d88  gcc/testsuite/gdc.test/runnable/link7745.d
  470b1566da61f13c8e4ab9f269f97d7e  gcc/testsuite/gdc.test/runnable/link7966.d
  05cc741dc6110c98a1b53b90bce3d3a0  gcc/testsuite/gdc.test/runnable/link8023.d
*************** ca7670be76017ad4ec8d59f894f62a6e  gcc/te
*** 67276,67291 ****
  5d210999b2a210be30c38cef8d00ce62  gcc/testsuite/gdc.test/runnable/loopunroll.d
  cadfe620c0b1c30a83813e79959c6c48  gcc/testsuite/gdc.test/runnable/m1.d
  59cec3b67f84c8a8d21171f11b662bcc  gcc/testsuite/gdc.test/runnable/manboy.d
! faf6669be18e7f1ce7ed6a63b0acd76e  gcc/testsuite/gdc.test/runnable/mangle.d
  481f0519a109d00282aff011127ab089  gcc/testsuite/gdc.test/runnable/mars1.d
  a4bee21a020ea290806504d1b77743ea  gcc/testsuite/gdc.test/runnable/mixin1.d
! ded76eb1dad4c5dfbc4e9a6ed6ade6a4  gcc/testsuite/gdc.test/runnable/mixin2.d
  909a47df894aefd20f77dfd8a9004146  gcc/testsuite/gdc.test/runnable/mod1.d
  9b6637d64297931c356c7ab5b838b715  gcc/testsuite/gdc.test/runnable/nan.d
! 90559448dc2c67303f0b3407ccb9f6a9  gcc/testsuite/gdc.test/runnable/nested.d
  5f00a78fc594e96db08f0d82410bb208  gcc/testsuite/gdc.test/runnable/newdel.d
  5cf0177db7cfdbec580294a2afdc7db3  gcc/testsuite/gdc.test/runnable/nogc.d
! 5c273124540708ec2918182327a0485f  gcc/testsuite/gdc.test/runnable/nulltype.d
  f2b9fc39212d0c8d7f948e7eefac7c42  gcc/testsuite/gdc.test/runnable/opdisp.d
  b1e4162b30476fb6c7fa9b493eff1dd2  gcc/testsuite/gdc.test/runnable/opover.d
  0173e551bf3502f8d1054597ad244c50  gcc/testsuite/gdc.test/runnable/opover2.d
--- 72000,72016 ----
  5d210999b2a210be30c38cef8d00ce62  gcc/testsuite/gdc.test/runnable/loopunroll.d
  cadfe620c0b1c30a83813e79959c6c48  gcc/testsuite/gdc.test/runnable/m1.d
  59cec3b67f84c8a8d21171f11b662bcc  gcc/testsuite/gdc.test/runnable/manboy.d
! 36c1189db2f94b41100cb212a6e176f6  gcc/testsuite/gdc.test/runnable/mangle.d
  481f0519a109d00282aff011127ab089  gcc/testsuite/gdc.test/runnable/mars1.d
  a4bee21a020ea290806504d1b77743ea  gcc/testsuite/gdc.test/runnable/mixin1.d
! 9f3fce3f251075eed9ef3e7f272fefd2  gcc/testsuite/gdc.test/runnable/mixin2.d
  909a47df894aefd20f77dfd8a9004146  gcc/testsuite/gdc.test/runnable/mod1.d
  9b6637d64297931c356c7ab5b838b715  gcc/testsuite/gdc.test/runnable/nan.d
! d47b03df5d8080d7a16ee508627212ff  gcc/testsuite/gdc.test/runnable/nested.d
  5f00a78fc594e96db08f0d82410bb208  gcc/testsuite/gdc.test/runnable/newdel.d
  5cf0177db7cfdbec580294a2afdc7db3  gcc/testsuite/gdc.test/runnable/nogc.d
! e5afe569d31b9236df764ffbfd07d638  gcc/testsuite/gdc.test/runnable/noreturn1.d
! 0016f1e4e03d4375e62b6adfb2ddac72  gcc/testsuite/gdc.test/runnable/nulltype.d
  f2b9fc39212d0c8d7f948e7eefac7c42  gcc/testsuite/gdc.test/runnable/opdisp.d
  b1e4162b30476fb6c7fa9b493eff1dd2  gcc/testsuite/gdc.test/runnable/opover.d
  0173e551bf3502f8d1054597ad244c50  gcc/testsuite/gdc.test/runnable/opover2.d
*************** ce0513a8a733c1c29954074996a074f3  gcc/te
*** 67295,67317 ****
  671e921d7ba20a1141f56c07be62b586  gcc/testsuite/gdc.test/runnable/polysemous.d
  bab36bd9cac1cbb99b6818cfe099b72a  gcc/testsuite/gdc.test/runnable/printargs.d
  2856f3883c343acb005f170b83f3edd7  gcc/testsuite/gdc.test/runnable/property.d
! e1bce52e4e48ce1fa0e4740e0ac3a53f  gcc/testsuite/gdc.test/runnable/property2.d
! a127ac15119e72bbca65734687d71bde  gcc/testsuite/gdc.test/runnable/runnable.exp
  7e9747abdc0360b94770471057a83ddb  gcc/testsuite/gdc.test/runnable/s2ir.d
  4e67668c8a7ee44b41da71d8a6e695b4  gcc/testsuite/gdc.test/runnable/sctor.d
! 62201f3ffbcfe8776877ca2670147878  gcc/testsuite/gdc.test/runnable/sdtor.d
  171900d6ce544bb242e22a8416e306ad  gcc/testsuite/gdc.test/runnable/staticforeach.d
  799a79924a4d25ed330a10b03d20ecf7  gcc/testsuite/gdc.test/runnable/statictor.d
! 3c2b7a88e3d5f1ee35a46b76f2849b49  gcc/testsuite/gdc.test/runnable/stress.d
! d593d54ce99cde1080e6fad87e26f602  gcc/testsuite/gdc.test/runnable/structlit.d
  2e28c5702fbc42f4f1cefe429897a555  gcc/testsuite/gdc.test/runnable/template1.d
  8adf483aec3b24a9dd83558d8b9bdafb  gcc/testsuite/gdc.test/runnable/template13478.d
  e198ed86ba26a47d91d4b5e4db3e55fb  gcc/testsuite/gdc.test/runnable/template2.d
  ae3219fb0e59a1a22a8d0754b3b578f9  gcc/testsuite/gdc.test/runnable/template2962.d
! 5499926d56a003c16b0f8973b17ff6d4  gcc/testsuite/gdc.test/runnable/template3.d
! 89aeed5ac94ea37ca4988b348d4f1418  gcc/testsuite/gdc.test/runnable/template4.d
! 025aeb98a1c60f2f97609740c36f62ed  gcc/testsuite/gdc.test/runnable/template8.d
! 73a789f211156c28d6e4776659f56317  gcc/testsuite/gdc.test/runnable/template9.d
  fba2538fa071a27eea05ac9cf3eeed88  gcc/testsuite/gdc.test/runnable/test10.d
  18be53836687e198aef907b6191adf6f  gcc/testsuite/gdc.test/runnable/test10378.d
  9ddeb42d07cb78ac4998b33945ce20cd  gcc/testsuite/gdc.test/runnable/test10441.d
--- 72020,72042 ----
  671e921d7ba20a1141f56c07be62b586  gcc/testsuite/gdc.test/runnable/polysemous.d
  bab36bd9cac1cbb99b6818cfe099b72a  gcc/testsuite/gdc.test/runnable/printargs.d
  2856f3883c343acb005f170b83f3edd7  gcc/testsuite/gdc.test/runnable/property.d
! 60c51d38e2d8ce15dc64dc91f05fd4b5  gcc/testsuite/gdc.test/runnable/property2.d
! 471bfd5da95d444a3c176965850e5ece  gcc/testsuite/gdc.test/runnable/runnable.exp
  7e9747abdc0360b94770471057a83ddb  gcc/testsuite/gdc.test/runnable/s2ir.d
  4e67668c8a7ee44b41da71d8a6e695b4  gcc/testsuite/gdc.test/runnable/sctor.d
! ab63ce79d07ef7f9970f059d416ae159  gcc/testsuite/gdc.test/runnable/sdtor.d
  171900d6ce544bb242e22a8416e306ad  gcc/testsuite/gdc.test/runnable/staticforeach.d
  799a79924a4d25ed330a10b03d20ecf7  gcc/testsuite/gdc.test/runnable/statictor.d
! 3ca45b8a013175b6b95a530d5a6984bc  gcc/testsuite/gdc.test/runnable/stress.d
! 33f57d7831e017701defb0f48597960d  gcc/testsuite/gdc.test/runnable/structlit.d
  2e28c5702fbc42f4f1cefe429897a555  gcc/testsuite/gdc.test/runnable/template1.d
  8adf483aec3b24a9dd83558d8b9bdafb  gcc/testsuite/gdc.test/runnable/template13478.d
  e198ed86ba26a47d91d4b5e4db3e55fb  gcc/testsuite/gdc.test/runnable/template2.d
  ae3219fb0e59a1a22a8d0754b3b578f9  gcc/testsuite/gdc.test/runnable/template2962.d
! 281244ea9f67146dc16caf6a24dd1e9e  gcc/testsuite/gdc.test/runnable/template3.d
! a6e52bdeb556a215dde911e834ffeab4  gcc/testsuite/gdc.test/runnable/template4.d
! a2b15bcca5ded36d826ccac559bfe9fc  gcc/testsuite/gdc.test/runnable/template8.d
! 6f1b30bdaa1acf2b1410df7980f9e04d  gcc/testsuite/gdc.test/runnable/template9.d
  fba2538fa071a27eea05ac9cf3eeed88  gcc/testsuite/gdc.test/runnable/test10.d
  18be53836687e198aef907b6191adf6f  gcc/testsuite/gdc.test/runnable/test10378.d
  9ddeb42d07cb78ac4998b33945ce20cd  gcc/testsuite/gdc.test/runnable/test10441.d
*************** d6bfcb0ab1afec471863af71a1556923  gcc/te
*** 67337,67343 ****
  662e37a7827d780ab5057f40ca0483bb  gcc/testsuite/gdc.test/runnable/test14874.d
  e65d3ce0470fe2725797f6e3ab60a438  gcc/testsuite/gdc.test/runnable/test14901.d
  5d698de30965398370cd581d6c718e53  gcc/testsuite/gdc.test/runnable/test14903.d
! 9bbca47c2a6b9fc40b6ccf00d93b1709  gcc/testsuite/gdc.test/runnable/test15.d
  d16be4e16f5272e31eab0b5e36b992eb  gcc/testsuite/gdc.test/runnable/test15079.d
  bfd8e27d98f571b2264d7f7760bbd5c7  gcc/testsuite/gdc.test/runnable/test15913.d
  f66ffcddad16ea2ae49fd701993a5eaa  gcc/testsuite/gdc.test/runnable/test16.d
--- 72062,72068 ----
  662e37a7827d780ab5057f40ca0483bb  gcc/testsuite/gdc.test/runnable/test14874.d
  e65d3ce0470fe2725797f6e3ab60a438  gcc/testsuite/gdc.test/runnable/test14901.d
  5d698de30965398370cd581d6c718e53  gcc/testsuite/gdc.test/runnable/test14903.d
! 9e0bf69bf70725ddbeca3cc7d56a81ab  gcc/testsuite/gdc.test/runnable/test15.d
  d16be4e16f5272e31eab0b5e36b992eb  gcc/testsuite/gdc.test/runnable/test15079.d
  bfd8e27d98f571b2264d7f7760bbd5c7  gcc/testsuite/gdc.test/runnable/test15913.d
  f66ffcddad16ea2ae49fd701993a5eaa  gcc/testsuite/gdc.test/runnable/test16.d
*************** ddf97970f8dabddfe160a6638562ba7f  gcc/te
*** 67348,67361 ****
  0b605dd07027cfa846950ae5d4e17ba7  gcc/testsuite/gdc.test/runnable/test17072.d
  a8689a639669b0a19dad584fd5012058  gcc/testsuite/gdc.test/runnable/test17073.d
  30a4641c6555f000b75095ef91657500  gcc/testsuite/gdc.test/runnable/test17338.d
  f377c873bd54a475fac4f2df6234cf6f  gcc/testsuite/gdc.test/runnable/test17684.d
  da58a5c59d1bc68f36ecc7c97ccd905f  gcc/testsuite/gdc.test/runnable/test17899.d
  5e47f3e221410affc20e1b2cd28ae38d  gcc/testsuite/gdc.test/runnable/test19.d
  d370be7de707dfc75ca94c0574846735  gcc/testsuite/gdc.test/runnable/test19734.d
  2264a5862d45130f6cee309962f24427  gcc/testsuite/gdc.test/runnable/test19735.d
  f8eede5fbb2d68bfe59040289271da5b  gcc/testsuite/gdc.test/runnable/test20.d
  47393c3b98be41daf4144638bb83bf80  gcc/testsuite/gdc.test/runnable/test21.d
! b5c26fe728c22552fbe66ae7a1fe1cb0  gcc/testsuite/gdc.test/runnable/test22.d
  21786b4f90d081f679309d9f14fc649f  gcc/testsuite/gdc.test/runnable/test23.d
  fb4c3557e32a82809885e494b7b6a5db  gcc/testsuite/gdc.test/runnable/test24.d
  ccf03e68c851def34e3c94f39d78620a  gcc/testsuite/gdc.test/runnable/test27.d
--- 72073,72089 ----
  0b605dd07027cfa846950ae5d4e17ba7  gcc/testsuite/gdc.test/runnable/test17072.d
  a8689a639669b0a19dad584fd5012058  gcc/testsuite/gdc.test/runnable/test17073.d
  30a4641c6555f000b75095ef91657500  gcc/testsuite/gdc.test/runnable/test17338.d
+ afca543a5806d8a15207ef6bd9a97d4b  gcc/testsuite/gdc.test/runnable/test17373.d
  f377c873bd54a475fac4f2df6234cf6f  gcc/testsuite/gdc.test/runnable/test17684.d
+ 0e6077e1a2a30938d0b500ff8cc5b36b  gcc/testsuite/gdc.test/runnable/test17878.d
  da58a5c59d1bc68f36ecc7c97ccd905f  gcc/testsuite/gdc.test/runnable/test17899.d
+ 647c2508055709a027b3ba6c4c31e2c3  gcc/testsuite/gdc.test/runnable/test18322.d
  5e47f3e221410affc20e1b2cd28ae38d  gcc/testsuite/gdc.test/runnable/test19.d
  d370be7de707dfc75ca94c0574846735  gcc/testsuite/gdc.test/runnable/test19734.d
  2264a5862d45130f6cee309962f24427  gcc/testsuite/gdc.test/runnable/test19735.d
  f8eede5fbb2d68bfe59040289271da5b  gcc/testsuite/gdc.test/runnable/test20.d
  47393c3b98be41daf4144638bb83bf80  gcc/testsuite/gdc.test/runnable/test21.d
! b216b8a139668e31ea727a6a009335e8  gcc/testsuite/gdc.test/runnable/test22.d
  21786b4f90d081f679309d9f14fc649f  gcc/testsuite/gdc.test/runnable/test23.d
  fb4c3557e32a82809885e494b7b6a5db  gcc/testsuite/gdc.test/runnable/test24.d
  ccf03e68c851def34e3c94f39d78620a  gcc/testsuite/gdc.test/runnable/test27.d
*************** a5e27485559aaaae7f3fc86ed457c8b0  gcc/te
*** 67365,67371 ****
  da30eb4de9648e3ad27e26679881aab7  gcc/testsuite/gdc.test/runnable/test30.d
  adbc9c8312e16e537aed8ead66d7e3fa  gcc/testsuite/gdc.test/runnable/test31.d
  c2153050f23f741f14244830b6b4a402  gcc/testsuite/gdc.test/runnable/test32.d
! 899a900a704c2b327b4f0922a65ecbad  gcc/testsuite/gdc.test/runnable/test34.d
  605ede293d1872fdce76bbbc49650f22  gcc/testsuite/gdc.test/runnable/test3449.d
  9868a3b8b5e7dc292d9768d23e34de0f  gcc/testsuite/gdc.test/runnable/test3574a.d
  32c0c6c14d3ba20f51489b1b48008997  gcc/testsuite/gdc.test/runnable/test3574b.d
--- 72093,72099 ----
  da30eb4de9648e3ad27e26679881aab7  gcc/testsuite/gdc.test/runnable/test30.d
  adbc9c8312e16e537aed8ead66d7e3fa  gcc/testsuite/gdc.test/runnable/test31.d
  c2153050f23f741f14244830b6b4a402  gcc/testsuite/gdc.test/runnable/test32.d
! 907f2450656025992b6999e9692b8545  gcc/testsuite/gdc.test/runnable/test34.d
  605ede293d1872fdce76bbbc49650f22  gcc/testsuite/gdc.test/runnable/test3449.d
  9868a3b8b5e7dc292d9768d23e34de0f  gcc/testsuite/gdc.test/runnable/test3574a.d
  32c0c6c14d3ba20f51489b1b48008997  gcc/testsuite/gdc.test/runnable/test3574b.d
*************** c2153050f23f741f14244830b6b4a402  gcc/te
*** 67373,67382 ****
  e95e612fe543a6db7cc080a7df82f226  gcc/testsuite/gdc.test/runnable/test3574d.d
  3d3011ad8e623fa60ee3d479be380b80  gcc/testsuite/gdc.test/runnable/test37.d
  47c751276f72d4459c7015b8bf167086  gcc/testsuite/gdc.test/runnable/test38.d
! 63a2c7ea40dbdbf7fd9568cbfb3b0a51  gcc/testsuite/gdc.test/runnable/test4.d
  9b4c422f1c0a22c7567e1b58a44a7737  gcc/testsuite/gdc.test/runnable/test40.d
  cc56c3003e76162f2f92ee2b4bdf1500  gcc/testsuite/gdc.test/runnable/test41.d
! f568e95d0e6fc2de2db7eda3922fb8ff  gcc/testsuite/gdc.test/runnable/test42.d
  a8c277c83d726a2ffcda1046e08a6aa0  gcc/testsuite/gdc.test/runnable/test42a.d
  884fc1fa85dc5727b996296d9e51ae85  gcc/testsuite/gdc.test/runnable/test435.d
  ae2da3539fea5a69c0c55eeb273a3d26  gcc/testsuite/gdc.test/runnable/test45.d
--- 72101,72110 ----
  e95e612fe543a6db7cc080a7df82f226  gcc/testsuite/gdc.test/runnable/test3574d.d
  3d3011ad8e623fa60ee3d479be380b80  gcc/testsuite/gdc.test/runnable/test37.d
  47c751276f72d4459c7015b8bf167086  gcc/testsuite/gdc.test/runnable/test38.d
! 6205184665b181012b78d497be4e6330  gcc/testsuite/gdc.test/runnable/test4.d
  9b4c422f1c0a22c7567e1b58a44a7737  gcc/testsuite/gdc.test/runnable/test40.d
  cc56c3003e76162f2f92ee2b4bdf1500  gcc/testsuite/gdc.test/runnable/test41.d
! 22cac9cef35f10aaeba7795681d11213  gcc/testsuite/gdc.test/runnable/test42.d
  a8c277c83d726a2ffcda1046e08a6aa0  gcc/testsuite/gdc.test/runnable/test42a.d
  884fc1fa85dc5727b996296d9e51ae85  gcc/testsuite/gdc.test/runnable/test435.d
  ae2da3539fea5a69c0c55eeb273a3d26  gcc/testsuite/gdc.test/runnable/test45.d
*************** ec399524116d3fca795f8ef4dfb67f8e  gcc/te
*** 67401,67407 ****
  3158ce3db0d67c0b94f8024d259ce775  gcc/testsuite/gdc.test/runnable/test7603.d
  1eabae1cd558093128de20e6d675d96d  gcc/testsuite/gdc.test/runnable/test7618.d
  19668332363e00dc94066f3f500a4c1b  gcc/testsuite/gdc.test/runnable/test7932.d
! 0e2022ee941445a9e221d00b7407c823  gcc/testsuite/gdc.test/runnable/test8.d
  15901f42e795f075bc95b5748ecce8c3  gcc/testsuite/gdc.test/runnable/test8182.d
  7084ca60f65820716f6a5b36e3155839  gcc/testsuite/gdc.test/runnable/test8544.d
  e6610f573d73232d050bb6527b47eefd  gcc/testsuite/gdc.test/runnable/test8997.d
--- 72129,72135 ----
  3158ce3db0d67c0b94f8024d259ce775  gcc/testsuite/gdc.test/runnable/test7603.d
  1eabae1cd558093128de20e6d675d96d  gcc/testsuite/gdc.test/runnable/test7618.d
  19668332363e00dc94066f3f500a4c1b  gcc/testsuite/gdc.test/runnable/test7932.d
! 026eb64999a53a4180cb213b12b374bd  gcc/testsuite/gdc.test/runnable/test8.d
  15901f42e795f075bc95b5748ecce8c3  gcc/testsuite/gdc.test/runnable/test8182.d
  7084ca60f65820716f6a5b36e3155839  gcc/testsuite/gdc.test/runnable/test8544.d
  e6610f573d73232d050bb6527b47eefd  gcc/testsuite/gdc.test/runnable/test8997.d
*************** e6610f573d73232d050bb6527b47eefd  gcc/te
*** 67409,67433 ****
  443940c6cfa3a407225f7d631221cb91  gcc/testsuite/gdc.test/runnable/test9271.d
  398b50a1301f92dbbb124e011dc2789d  gcc/testsuite/gdc.test/runnable/test9309.d
  674931feb85a5058c77ebd03534ce049  gcc/testsuite/gdc.test/runnable/test9495.d
! 9a3a9ba7e1e8f749366db92ded0f5b66  gcc/testsuite/gdc.test/runnable/testaa.d
! 60d5c26db9f5995bdd1562777c3b6d5c  gcc/testsuite/gdc.test/runnable/testaa2.d
  38c8c88bd455658bc2939f2c8cbba0a7  gcc/testsuite/gdc.test/runnable/testaa3.d
  7ea0bc3c07cb1faf1e3b62f0e18ffd6c  gcc/testsuite/gdc.test/runnable/testabi.d
  7996d12186b16ddf02b75ff718bb462a  gcc/testsuite/gdc.test/runnable/testappend.d
  593c4835fca6f30ee392848f80f27fec  gcc/testsuite/gdc.test/runnable/testarray.d
! 76829f4d76636edb4418b6d3ea34e9ac  gcc/testsuite/gdc.test/runnable/testassign.d
  75aaa1bb7f1c32a30961e18f1ceb9359  gcc/testsuite/gdc.test/runnable/testbitarray.d
  18bb077ef77dc09ce3fcb140e9de1816  gcc/testsuite/gdc.test/runnable/testbounds.d
  29912bc8a59c79356e5423ea4b009c91  gcc/testsuite/gdc.test/runnable/testbounds_off.d
  b5d03efe728963696491f3c036bc8f5c  gcc/testsuite/gdc.test/runnable/testbounds_on.d
  153e4b8060c39ce7eb597b5c864d071e  gcc/testsuite/gdc.test/runnable/testbounds_safeonly.d
  1f17b365aad964db23a1d4d797833a52  gcc/testsuite/gdc.test/runnable/testclass.d
! ebcda04b1259389e04bf4f7e73a96f41  gcc/testsuite/gdc.test/runnable/testconst.d
  ca19a464a9598a2c7376e8812c2a1115  gcc/testsuite/gdc.test/runnable/testconstsection.d
! 2caa89ffc3090c9a68c13f086ed6914d  gcc/testsuite/gdc.test/runnable/testcontracts.d
! 000964746e30c88a1b550e6e242775ff  gcc/testsuite/gdc.test/runnable/testdstress.d
  10e68521e586d03743e162098111ac18  gcc/testsuite/gdc.test/runnable/testdt.d
! d9bca4c532a5b2973276c59d35d1febe  gcc/testsuite/gdc.test/runnable/testenum.d
  260ccfc5cb927e5915c4365d02765f16  gcc/testsuite/gdc.test/runnable/testfile.d
  21f18c3ee7a40a400743674057d6325d  gcc/testsuite/gdc.test/runnable/testformat.d
  b5a9b2d53608fccf09125d51361a842e  gcc/testsuite/gdc.test/runnable/testgc2.d
--- 72137,72161 ----
  443940c6cfa3a407225f7d631221cb91  gcc/testsuite/gdc.test/runnable/test9271.d
  398b50a1301f92dbbb124e011dc2789d  gcc/testsuite/gdc.test/runnable/test9309.d
  674931feb85a5058c77ebd03534ce049  gcc/testsuite/gdc.test/runnable/test9495.d
! 4ca124597f934655581695c05a503951  gcc/testsuite/gdc.test/runnable/testaa.d
! 1ba2f8af2e6517adab325b41efc52af7  gcc/testsuite/gdc.test/runnable/testaa2.d
  38c8c88bd455658bc2939f2c8cbba0a7  gcc/testsuite/gdc.test/runnable/testaa3.d
  7ea0bc3c07cb1faf1e3b62f0e18ffd6c  gcc/testsuite/gdc.test/runnable/testabi.d
  7996d12186b16ddf02b75ff718bb462a  gcc/testsuite/gdc.test/runnable/testappend.d
  593c4835fca6f30ee392848f80f27fec  gcc/testsuite/gdc.test/runnable/testarray.d
! bb3a05958a8af35c4689c5277356a0e8  gcc/testsuite/gdc.test/runnable/testassign.d
  75aaa1bb7f1c32a30961e18f1ceb9359  gcc/testsuite/gdc.test/runnable/testbitarray.d
  18bb077ef77dc09ce3fcb140e9de1816  gcc/testsuite/gdc.test/runnable/testbounds.d
  29912bc8a59c79356e5423ea4b009c91  gcc/testsuite/gdc.test/runnable/testbounds_off.d
  b5d03efe728963696491f3c036bc8f5c  gcc/testsuite/gdc.test/runnable/testbounds_on.d
  153e4b8060c39ce7eb597b5c864d071e  gcc/testsuite/gdc.test/runnable/testbounds_safeonly.d
  1f17b365aad964db23a1d4d797833a52  gcc/testsuite/gdc.test/runnable/testclass.d
! 3347ac261f95d02d621c0f4f4611f3f9  gcc/testsuite/gdc.test/runnable/testconst.d
  ca19a464a9598a2c7376e8812c2a1115  gcc/testsuite/gdc.test/runnable/testconstsection.d
! 68720e363ef43615ca9b21a249bfe80a  gcc/testsuite/gdc.test/runnable/testcontracts.d
! 448901a918d5f5a519f956ca2962d17a  gcc/testsuite/gdc.test/runnable/testdstress.d
  10e68521e586d03743e162098111ac18  gcc/testsuite/gdc.test/runnable/testdt.d
! e04e226c2e3f81435290d84ee36c85ad  gcc/testsuite/gdc.test/runnable/testenum.d
  260ccfc5cb927e5915c4365d02765f16  gcc/testsuite/gdc.test/runnable/testfile.d
  21f18c3ee7a40a400743674057d6325d  gcc/testsuite/gdc.test/runnable/testformat.d
  b5a9b2d53608fccf09125d51361a842e  gcc/testsuite/gdc.test/runnable/testgc2.d
*************** b5a9b2d53608fccf09125d51361a842e  gcc/te
*** 67440,67453 ****
  55ef3f43bd9c6be831aa216561aa5aaf  gcc/testsuite/gdc.test/runnable/testmmfile.d
  27a2e400067dcd91084e6d96abb8b03b  gcc/testsuite/gdc.test/runnable/testmod1.d
  d425a096fc356a8ea601a5efb3c1dd7a  gcc/testsuite/gdc.test/runnable/testmod2.d
! 82dfc32efb24f4b2d703cb9a31eb6426  gcc/testsuite/gdc.test/runnable/testmodule.d
  7d6242316689bdb36d668fb622e0048f  gcc/testsuite/gdc.test/runnable/testpic.d
  a92fb2b0fbd5c997a6e182a3a3747b83  gcc/testsuite/gdc.test/runnable/testptrref.d
  835b2175eeffd9f30694ad1a3e71a184  gcc/testsuite/gdc.test/runnable/testreturn.d
! b44f5020a1f3bb7564665fa090f717fb  gcc/testsuite/gdc.test/runnable/testrightthis.d
  32a4b1a92e664e7ec3cad19489ca5a32  gcc/testsuite/gdc.test/runnable/testsafe.d
  16cbfc971d8060b078b8def8357a7fb4  gcc/testsuite/gdc.test/runnable/testscope.d
! ce52ed01352a23247bc88970c945c661  gcc/testsuite/gdc.test/runnable/testscope2.d
  663dc874c75562cdbe74b591845d65b5  gcc/testsuite/gdc.test/runnable/testsignals.d
  ed95368c07a340bb9357ed8a3a00f35b  gcc/testsuite/gdc.test/runnable/testsocket.d
  6a2a8106f1936048be5e6c79642d5f67  gcc/testsuite/gdc.test/runnable/teststdio.d
--- 72168,72181 ----
  55ef3f43bd9c6be831aa216561aa5aaf  gcc/testsuite/gdc.test/runnable/testmmfile.d
  27a2e400067dcd91084e6d96abb8b03b  gcc/testsuite/gdc.test/runnable/testmod1.d
  d425a096fc356a8ea601a5efb3c1dd7a  gcc/testsuite/gdc.test/runnable/testmod2.d
! 9bd4c3eb4e419acdb7db441b62880c4f  gcc/testsuite/gdc.test/runnable/testmodule.d
  7d6242316689bdb36d668fb622e0048f  gcc/testsuite/gdc.test/runnable/testpic.d
  a92fb2b0fbd5c997a6e182a3a3747b83  gcc/testsuite/gdc.test/runnable/testptrref.d
  835b2175eeffd9f30694ad1a3e71a184  gcc/testsuite/gdc.test/runnable/testreturn.d
! 3362945cc9450289f62c452795b2f661  gcc/testsuite/gdc.test/runnable/testrightthis.d
  32a4b1a92e664e7ec3cad19489ca5a32  gcc/testsuite/gdc.test/runnable/testsafe.d
  16cbfc971d8060b078b8def8357a7fb4  gcc/testsuite/gdc.test/runnable/testscope.d
! f918bef987bc48b4d629c4e7ae51ecf2  gcc/testsuite/gdc.test/runnable/testscope2.d
  663dc874c75562cdbe74b591845d65b5  gcc/testsuite/gdc.test/runnable/testsignals.d
  ed95368c07a340bb9357ed8a3a00f35b  gcc/testsuite/gdc.test/runnable/testsocket.d
  6a2a8106f1936048be5e6c79642d5f67  gcc/testsuite/gdc.test/runnable/teststdio.d
*************** b875a8aed712329c1a097c7f73985f24  gcc/te
*** 67458,67468 ****
  421ddca899cb4e423532976bd0a645f3  gcc/testsuite/gdc.test/runnable/testv.d
  361940a33980bcfbc52099d52dd9c5bc  gcc/testsuite/gdc.test/runnable/tls.d
  112398416931dcd001e5ebb100696e2d  gcc/testsuite/gdc.test/runnable/tls_dup.d
! d497e977054008ab001c6e5c66991fba  gcc/testsuite/gdc.test/runnable/traits.d
  b2c3ced1057b5c1d49ddbadd430eedd1  gcc/testsuite/gdc.test/runnable/traits_getPointerBitmap.d
  8c9615a32a6010587f639d0afde64225  gcc/testsuite/gdc.test/runnable/traits_getUnitTests.d
  91642219e5787400e311db2dee1e8591  gcc/testsuite/gdc.test/runnable/traits_getVirtualIndex.d
! 36645ef1d536dce8cf3b6557e35e9cc5  gcc/testsuite/gdc.test/runnable/uda.d
  5c0377ce1401378b63ce67b9d8db3f53  gcc/testsuite/gdc.test/runnable/ufcs.d
  705db7e1ab1bc7de754ccf62d891ffc2  gcc/testsuite/gdc.test/runnable/uniformctor.d
  ab0cb34de8668cbab78e2dc9a0f9f807  gcc/testsuite/gdc.test/runnable/variadic.d
--- 72186,72197 ----
  421ddca899cb4e423532976bd0a645f3  gcc/testsuite/gdc.test/runnable/testv.d
  361940a33980bcfbc52099d52dd9c5bc  gcc/testsuite/gdc.test/runnable/tls.d
  112398416931dcd001e5ebb100696e2d  gcc/testsuite/gdc.test/runnable/tls_dup.d
! a83bf90c0fdf11c556b2b6665ecfb39f  gcc/testsuite/gdc.test/runnable/traits.d
! 022e20dfd1d1abf39d0863e06f9ad1ea  gcc/testsuite/gdc.test/runnable/traits_child.d
  b2c3ced1057b5c1d49ddbadd430eedd1  gcc/testsuite/gdc.test/runnable/traits_getPointerBitmap.d
  8c9615a32a6010587f639d0afde64225  gcc/testsuite/gdc.test/runnable/traits_getUnitTests.d
  91642219e5787400e311db2dee1e8591  gcc/testsuite/gdc.test/runnable/traits_getVirtualIndex.d
! 72548e266b76c4ac126b986d2ac30667  gcc/testsuite/gdc.test/runnable/uda.d
  5c0377ce1401378b63ce67b9d8db3f53  gcc/testsuite/gdc.test/runnable/ufcs.d
  705db7e1ab1bc7de754ccf62d891ffc2  gcc/testsuite/gdc.test/runnable/uniformctor.d
  ab0cb34de8668cbab78e2dc9a0f9f807  gcc/testsuite/gdc.test/runnable/variadic.d
*************** df0e1426154e0fd1c302bc6bbbcffa85  gcc/te
*** 67473,67492 ****
  4d06d3860e7413e844746844806a9595  gcc/testsuite/gdc.test/runnable/wc3.d
  0afce9c29832c0937446cff6156dc5c4  gcc/testsuite/gdc.test/runnable/xdtor.d
  00851da922236ba66e2c36d0d080c323  gcc/testsuite/gdc.test/runnable/xpostblit.d
! a367f701f7152f636a30dd9eeecd7d54  gcc/testsuite/gdc.test/runnable/xtest46.d
  53985fccf4fd255293fd98422de6e98f  gcc/testsuite/gdc.test/runnable/xtest55.d
  4e7f0de22b7ea65edfc19886e0194745  gcc/testsuite/gdc.test/runnable/xtestenum.d
  862550e1270f64e59387c6dca4c76318  gcc/testsuite/gdc.test/runnable_cxx/cabi1.d
  e6a93e4494b117795c1d32b54fa9f003  gcc/testsuite/gdc.test/runnable_cxx/cpp_abi_tests.d
! 532f3612b919f4cc36d6e8e463267be1  gcc/testsuite/gdc.test/runnable_cxx/cppa.d
  1d10e85bd9e0ab0980b59ad7e307cb10  gcc/testsuite/gdc.test/runnable_cxx/externmangle.d
  927b031b2335c6fcdfa3988969a4e8c2  gcc/testsuite/gdc.test/runnable_cxx/externmangle2.d
  697a2233921e087bcba999ac6e3de112  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cabi2.cpp
  60960f74d8a7558c6ffebf02313fa926  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cpp_abi_tests.cpp
! ff469626c32c6ea83eda3220c6a80f89  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cppb.cpp
  445bb573a9000f649111882b913e3bc9  gcc/testsuite/gdc.test/runnable_cxx/extra-files/externmangle.cpp
  2fc8bcf6bde9d9e7c0d26ec53c4b5a61  gcc/testsuite/gdc.test/runnable_cxx/extra-files/externmangle2.cpp
! 3f17a3bdcf8ece60d2dc4ce70e70e08a  gcc/testsuite/gdc.test/runnable_cxx/runnable_cxx.exp
  38343e39577a1d093c40818070ea1d7b  gcc/testsuite/gfortran.dg/20181025-1.f
  ce04570deb62ab215ae3e3f210fa3e05  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_1.c
  3eb61cc5bcca57c89d27b886454f741f  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_1.f90
--- 72202,72223 ----
  4d06d3860e7413e844746844806a9595  gcc/testsuite/gdc.test/runnable/wc3.d
  0afce9c29832c0937446cff6156dc5c4  gcc/testsuite/gdc.test/runnable/xdtor.d
  00851da922236ba66e2c36d0d080c323  gcc/testsuite/gdc.test/runnable/xpostblit.d
! bb7ebabe31ecf7cdae76597f1b0adf05  gcc/testsuite/gdc.test/runnable/xtest46.d
  53985fccf4fd255293fd98422de6e98f  gcc/testsuite/gdc.test/runnable/xtest55.d
  4e7f0de22b7ea65edfc19886e0194745  gcc/testsuite/gdc.test/runnable/xtestenum.d
  862550e1270f64e59387c6dca4c76318  gcc/testsuite/gdc.test/runnable_cxx/cabi1.d
  e6a93e4494b117795c1d32b54fa9f003  gcc/testsuite/gdc.test/runnable_cxx/cpp_abi_tests.d
! 92445b8b8847e5fc46bd6c9a7a692bd5  gcc/testsuite/gdc.test/runnable_cxx/cppa.d
  1d10e85bd9e0ab0980b59ad7e307cb10  gcc/testsuite/gdc.test/runnable_cxx/externmangle.d
  927b031b2335c6fcdfa3988969a4e8c2  gcc/testsuite/gdc.test/runnable_cxx/externmangle2.d
  697a2233921e087bcba999ac6e3de112  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cabi2.cpp
  60960f74d8a7558c6ffebf02313fa926  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cpp_abi_tests.cpp
! 578b4694391b3ef92c71aeb0b1bd408d  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cppb.cpp
  445bb573a9000f649111882b913e3bc9  gcc/testsuite/gdc.test/runnable_cxx/extra-files/externmangle.cpp
  2fc8bcf6bde9d9e7c0d26ec53c4b5a61  gcc/testsuite/gdc.test/runnable_cxx/extra-files/externmangle2.cpp
! b04f9df90fb9265a5b4d5973eacc1cc0  gcc/testsuite/gdc.test/runnable_cxx/extra-files/test21515.cpp
! 160d06764658258a0fae162185403db2  gcc/testsuite/gdc.test/runnable_cxx/runnable_cxx.exp
! 58f374f3a0ef4c1971c5bf8c17a27975  gcc/testsuite/gdc.test/runnable_cxx/test21515.d
  38343e39577a1d093c40818070ea1d7b  gcc/testsuite/gfortran.dg/20181025-1.f
  ce04570deb62ab215ae3e3f210fa3e05  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_1.c
  3eb61cc5bcca57c89d27b886454f741f  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_1.f90
*************** cf420b74ecc135162d79eb2624af1a45  gcc/te
*** 67505,67510 ****
--- 72236,72243 ----
  deb2afc397aadbc83f8819a89dcb0863  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_16.f90
  6e7b19b5700d90f1ea9027eee720ded2  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_17.c
  60f4ff8debe9d3b98e4aa29b0961a7ae  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_17.f90
+ 0d03318b621c75ba1106f4dfebea8c85  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_18.c
+ 7269f20d2d641bd0cfcb965e0c3f58c7  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_18.f90
  9d0f92e87fb4f26f9b6c6ba44603d69c  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_3.c
  2b8b1f675c75cbcedd7b9e79adfde6f8  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_3.f90
  26bb37cdd8c407bb13011329ec3723aa  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_4.f90
*************** d2f401f9391bf1d2889872bbdc34f16b  gcc/te
*** 67518,67523 ****
--- 72251,72258 ----
  f1950e4b4b23dc2b32ca290715b1dd9c  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_8.f90
  ad366711f9b7f7d71373eab3da4b4e4b  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_9.c
  131a58eb857fe3f727bc57d2b9f21e8f  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_9.f90
+ b57006fa0a1329365a93526a47af1b48  gcc/testsuite/gfortran.dg/PR100094.f90
+ e4d3c523324e00f5ab10bffefb1a7961  gcc/testsuite/gfortran.dg/PR10018.f90
  36cd9c1e3875c80db22097b9c2ad49b3  gcc/testsuite/gfortran.dg/PR19754_1.f90
  e8f29c2ce9f345e588516849caa9db8f  gcc/testsuite/gfortran.dg/PR19754_2.f90
  7ea18cc404b53eee2348e3e57683bb56  gcc/testsuite/gfortran.dg/PR19872.f
*************** e610c44a50486d89cefb12161b0f892e  gcc/te
*** 67525,67531 ****
--- 72260,72276 ----
  329e9e80c60ab998e37a9ac1bd8c51d6  gcc/testsuite/gfortran.dg/PR37039.f90
  e81a681901aa58d870e549b414327a20  gcc/testsuite/gfortran.dg/PR40660.f90
  264e3819dac395c8ef1f19270db55463  gcc/testsuite/gfortran.dg/PR49268.f90
+ c85675a1a0e2101ed951b0621bb65472  gcc/testsuite/gfortran.dg/PR85868A.f90
+ 1cacea4b6e8bea7931986f5d190b981e  gcc/testsuite/gfortran.dg/PR85868B.f90
  583d04568695255545c22fd212ce5940  gcc/testsuite/gfortran.dg/PR90350.f90
+ c0a1896429d4819837949d22da25a4df  gcc/testsuite/gfortran.dg/PR94022.f90
+ fab825f85909c977ccf4fcc7fc918286  gcc/testsuite/gfortran.dg/PR94110.f90
+ 305e1d1e4f61ec5310b18e7e89ab0af0  gcc/testsuite/gfortran.dg/PR95214.f90
+ 2e5825199102c5678c8a2e1cc1c02e86  gcc/testsuite/gfortran.dg/PR95331.f90
+ 7ec1da83d87aa9fa91259dd1e81a2f62  gcc/testsuite/gfortran.dg/PR95352.f90
+ 5baea4ab2155c58a8a6a14a1e12b5490  gcc/testsuite/gfortran.dg/PR96726.f90
+ ba6e5dffd35527455a5a3238d70c5a58  gcc/testsuite/gfortran.dg/PR96727.f90
+ de10d9e933be4e163b6ce3fcdc2428d1  gcc/testsuite/gfortran.dg/PR96728.f90
  5dc95d72848e7d5b3c56ed9e2b800fb3  gcc/testsuite/gfortran.dg/Wall.f90
  d4b81cf21855418328fc275b64177b54  gcc/testsuite/gfortran.dg/Wno-all.f90
  bccffb200355c36e33c86388445db26a  gcc/testsuite/gfortran.dg/abort_shouldfail.f90
*************** a2dc91e5ef7c3260f3dc266b3b789b07  gcc/te
*** 67638,67647 ****
  fbf6eb41453bed2d7b01d6d3ecd3b075  gcc/testsuite/gfortran.dg/alloc_comp_misc_1.f90
  5cd9e1ec9b054f33f1c534522273276d  gcc/testsuite/gfortran.dg/alloc_comp_optional_1.f90
  7e9332be20adf5e7f109dd5d06ab8a5d  gcc/testsuite/gfortran.dg/alloc_comp_result_1.f90
! 3c9aee015dd5628d69558a2af0f2e6b5  gcc/testsuite/gfortran.dg/alloc_comp_result_2.f90
  39525fca12dae051a4414dad3ab2cb02  gcc/testsuite/gfortran.dg/alloc_comp_scalar_1.f90
  243cbfa77a9448c9019b236137e7803d  gcc/testsuite/gfortran.dg/alloc_comp_std.f90
  909cf7d56a64fc559ec64c2bb71d1197  gcc/testsuite/gfortran.dg/alloc_comp_transformational_1.f90
  c59ad781dee7ec8e48a5f7ca04827100  gcc/testsuite/gfortran.dg/allocatable_dummy_1.f90
  56cdd5c6ada96e8035ed20712fda44d5  gcc/testsuite/gfortran.dg/allocatable_dummy_2.f90
  b44c3949481c974b2c6896675c16886c  gcc/testsuite/gfortran.dg/allocatable_dummy_3.f90
--- 72383,72394 ----
  fbf6eb41453bed2d7b01d6d3ecd3b075  gcc/testsuite/gfortran.dg/alloc_comp_misc_1.f90
  5cd9e1ec9b054f33f1c534522273276d  gcc/testsuite/gfortran.dg/alloc_comp_optional_1.f90
  7e9332be20adf5e7f109dd5d06ab8a5d  gcc/testsuite/gfortran.dg/alloc_comp_result_1.f90
! 6795a1ffbede89d070105f8aed7cec27  gcc/testsuite/gfortran.dg/alloc_comp_result_2.f90
! 14af65204fa74000aa470a4336dd5385  gcc/testsuite/gfortran.dg/alloc_comp_result_3.f90
  39525fca12dae051a4414dad3ab2cb02  gcc/testsuite/gfortran.dg/alloc_comp_scalar_1.f90
  243cbfa77a9448c9019b236137e7803d  gcc/testsuite/gfortran.dg/alloc_comp_std.f90
  909cf7d56a64fc559ec64c2bb71d1197  gcc/testsuite/gfortran.dg/alloc_comp_transformational_1.f90
+ 6ad12324ccb5fbf1f5f93c86d22f4ca4  gcc/testsuite/gfortran.dg/alloc_deferred_comp_1.f90
  c59ad781dee7ec8e48a5f7ca04827100  gcc/testsuite/gfortran.dg/allocatable_dummy_1.f90
  56cdd5c6ada96e8035ed20712fda44d5  gcc/testsuite/gfortran.dg/allocatable_dummy_2.f90
  b44c3949481c974b2c6896675c16886c  gcc/testsuite/gfortran.dg/allocatable_dummy_3.f90
*************** eae1c01e9cd07e06f5b2053c9c8e8d0c  gcc/te
*** 67769,67775 ****
  407349fe5dc0dd80df43de2e773a4cab  gcc/testsuite/gfortran.dg/ambiguous_reference_2.f90
  4a2d243fa69596ed5111843ecb20b347  gcc/testsuite/gfortran.dg/ambiguous_specific_1.f90
  44a13c6b4d7ef49b6173c7e5be97aeba  gcc/testsuite/gfortran.dg/ambiguous_specific_2.f90
! 4e594beef91e9cb908638c871fcb25b5  gcc/testsuite/gfortran.dg/analyzer/analyzer.exp
  2f368a8d04f58e4d6d300980282f68ea  gcc/testsuite/gfortran.dg/analyzer/deferred_character_25.f90
  d73a0bb9f41cc644e39e6ef9cb47095f  gcc/testsuite/gfortran.dg/analyzer/malloc-example.f90
  456395eb94ed204b99bab7e77b4c01de  gcc/testsuite/gfortran.dg/analyzer/malloc.f90
--- 72516,72522 ----
  407349fe5dc0dd80df43de2e773a4cab  gcc/testsuite/gfortran.dg/ambiguous_reference_2.f90
  4a2d243fa69596ed5111843ecb20b347  gcc/testsuite/gfortran.dg/ambiguous_specific_1.f90
  44a13c6b4d7ef49b6173c7e5be97aeba  gcc/testsuite/gfortran.dg/ambiguous_specific_2.f90
! dd0d1280f410c993f603545303048cc5  gcc/testsuite/gfortran.dg/analyzer/analyzer.exp
  2f368a8d04f58e4d6d300980282f68ea  gcc/testsuite/gfortran.dg/analyzer/deferred_character_25.f90
  d73a0bb9f41cc644e39e6ef9cb47095f  gcc/testsuite/gfortran.dg/analyzer/malloc-example.f90
  456395eb94ed204b99bab7e77b4c01de  gcc/testsuite/gfortran.dg/analyzer/malloc.f90
*************** b8f1e8c33e7b4915b87284464dc23538  gcc/te
*** 67778,67783 ****
--- 72525,72532 ----
  e1cea00268c9eb57abc50ee584fd93aa  gcc/testsuite/gfortran.dg/analyzer/pr93777.f90
  74f8211dfa60c0f529f18fc738d94b0a  gcc/testsuite/gfortran.dg/analyzer/pr93778.f90
  c6556ebb6443566c88e0551ae2f19d60  gcc/testsuite/gfortran.dg/analyzer/pr93993.f90
+ 6569bd8079beec5c6b5b0f599d0af012  gcc/testsuite/gfortran.dg/analyzer/pr96949.f90
+ 8d18d3057bd90f3e9cfe3aa756ff3228  gcc/testsuite/gfortran.dg/analyzer/pr97668.f
  b9a4dd9ce1dc5ec1be98f33811c4eba8  gcc/testsuite/gfortran.dg/and_or_xor.f90
  fb1c5569f69a4b48d53284a6e6fe1b9e  gcc/testsuite/gfortran.dg/anint_1.f90
  f19486a23086c5de84ef69f54a0e6794  gcc/testsuite/gfortran.dg/any_all_1.f90
*************** ca5ed9b7a4b086d732df1a505d87813b  gcc/te
*** 67951,67956 ****
--- 72700,72707 ----
  d6fad859ae9f254219fe0b62c52472a0  gcc/testsuite/gfortran.dg/arrayio_9.f90
  a7a4d71734bf9559e09017fe4616e065  gcc/testsuite/gfortran.dg/arrayio_derived_1.f90
  2b2c726e08ba1c26507c7392e63e1029  gcc/testsuite/gfortran.dg/arrayio_derived_2.f90
+ 91f37bbac26f82273837e648e97f8b98  gcc/testsuite/gfortran.dg/asan/asan.exp
+ 66de6cb3bf07d14487491fac7d1ee72f  gcc/testsuite/gfortran.dg/asan/pointer_assign_16.f90
  28bbca8fc062ad301c676d4eb94d000d  gcc/testsuite/gfortran.dg/assign-debug.f90
  7ad5faf60f3a1cebebfbb2c9e52516d7  gcc/testsuite/gfortran.dg/assign.f90
  4fd44d78ecb3264e1dd3d6bbb0ca8ea6  gcc/testsuite/gfortran.dg/assign_1.f90
*************** f501ad9fe36a5716a92695db1f43f9de  gcc/te
*** 67968,67974 ****
  a6350cd42adc8349005fb5f48146a864  gcc/testsuite/gfortran.dg/assignment_1.f90
  3228ea30d2b48ca5c4aff6e33085dc11  gcc/testsuite/gfortran.dg/assignment_2.f90
  44cf157d4e973a542bce54f60c00fe3a  gcc/testsuite/gfortran.dg/assignment_3.f90
! 240ff5e184e81d41dcfb72c096e33e61  gcc/testsuite/gfortran.dg/assignment_4.f90
  73705f344d4c0a150014edc622ca6d2d  gcc/testsuite/gfortran.dg/associate_1.f03
  75afdf677e5a36ffd8e2c2879e337776  gcc/testsuite/gfortran.dg/associate_10.f90
  e2ac51297e6e988475ff8448d1ef067d  gcc/testsuite/gfortran.dg/associate_11.f90
--- 72719,72725 ----
  a6350cd42adc8349005fb5f48146a864  gcc/testsuite/gfortran.dg/assignment_1.f90
  3228ea30d2b48ca5c4aff6e33085dc11  gcc/testsuite/gfortran.dg/assignment_2.f90
  44cf157d4e973a542bce54f60c00fe3a  gcc/testsuite/gfortran.dg/assignment_3.f90
! a8acf962c4fbb89ac0da8e9cc62a24e7  gcc/testsuite/gfortran.dg/assignment_4.f90
  73705f344d4c0a150014edc622ca6d2d  gcc/testsuite/gfortran.dg/associate_1.f03
  75afdf677e5a36ffd8e2c2879e337776  gcc/testsuite/gfortran.dg/associate_10.f90
  e2ac51297e6e988475ff8448d1ef067d  gcc/testsuite/gfortran.dg/associate_11.f90
*************** c73b6100086b4db74c5f70aa2b7a9af6  gcc/te
*** 68017,68022 ****
--- 72768,72777 ----
  72c822258582360198ac915c9b7de7d6  gcc/testsuite/gfortran.dg/associate_51.f90
  9227f9deb3946ff1f97accf4b6250ac7  gcc/testsuite/gfortran.dg/associate_52.f90
  c00a8dd4766b03f7af8034f983b17dae  gcc/testsuite/gfortran.dg/associate_53.f90
+ 13a1be9babd60d4e08197194fd394d19  gcc/testsuite/gfortran.dg/associate_54.f90
+ a33adc54f6651cbed7e49f420e779c05  gcc/testsuite/gfortran.dg/associate_55.f90
+ e266ed6fc3d13470e97d022451deea4e  gcc/testsuite/gfortran.dg/associate_56.f90
+ 0dd4c19a8ee9b0815baed4922597d206  gcc/testsuite/gfortran.dg/associate_57.f90
  fe80c25bfc4d1e630472420bac3dc836  gcc/testsuite/gfortran.dg/associate_6.f03
  ac2154aefe0a4ce981b3fa252235e2dd  gcc/testsuite/gfortran.dg/associate_7.f03
  3c2206420bb8717914aa447789b5f079  gcc/testsuite/gfortran.dg/associate_8.f03
*************** ed08ee0bcaabca9d5a128ae929308739  gcc/te
*** 68035,68040 ****
--- 72790,72796 ----
  408f82dd557d8d77f4652347ea5412e4  gcc/testsuite/gfortran.dg/associated_target_4.f90
  c8dcd0248b062389c3ebfd88d9473a64  gcc/testsuite/gfortran.dg/associated_target_5.f03
  f7cfdbf4de38d945e0085b02ebb99e8d  gcc/testsuite/gfortran.dg/associated_target_6.f03
+ 3cceb452e20c2755392cd5294bebb9d0  gcc/testsuite/gfortran.dg/associated_target_7.f90
  6376d7ef6f137372a501dd7c8547864d  gcc/testsuite/gfortran.dg/associative_1.f90
  04280cc7719e51d18a6ad4510745c528  gcc/testsuite/gfortran.dg/assumed_charlen_arg_1.f90
  e41613f37c052bf20cb9d34a7bb40da1  gcc/testsuite/gfortran.dg/assumed_charlen_arg_2.f90
*************** b8fe1ebae4d8f1c57690af8092459210  gcc/te
*** 68069,68074 ****
--- 72825,72831 ----
  d6f30c8e29ab67ebb49be7bca4d7e8bf  gcc/testsuite/gfortran.dg/assumed_rank_1_c.c
  7619e0aa4aa95c5a3a1e9a940ad9e9b5  gcc/testsuite/gfortran.dg/assumed_rank_2.f90
  fa32a7cf9d91de999be17d014f99e39e  gcc/testsuite/gfortran.dg/assumed_rank_20.f90
+ eae0182bf770a9c3238d3946a16c07b1  gcc/testsuite/gfortran.dg/assumed_rank_21.f90
  9478ccb330ec844df5877a48096c9976  gcc/testsuite/gfortran.dg/assumed_rank_3.f90
  a97591ca0f7ec68f4a27f9437d09cb92  gcc/testsuite/gfortran.dg/assumed_rank_4.f90
  d3b33ae7c97fb128d15b3a49e16aa06e  gcc/testsuite/gfortran.dg/assumed_rank_5.f90
*************** ee834071fbdbf11553b04e2dab5a50e0  gcc/te
*** 68108,68113 ****
--- 72865,72871 ----
  362c8595542a020eb586d0aefb29793e  gcc/testsuite/gfortran.dg/asynchronous_5.f03
  c45eedde0562a60cdbc393433096fcce  gcc/testsuite/gfortran.dg/atan2_1.f90
  fa450718dba3ab168e51f1ea0a7395d9  gcc/testsuite/gfortran.dg/atan2_2.f90
+ f53fcb34021fd16cec1ec5c62b1b1078  gcc/testsuite/gfortran.dg/attr_deprecated.f90
  1de887a6713de99b4d24dece9810994f  gcc/testsuite/gfortran.dg/auto_array_1.f90
  5728d828f281df7854b3c34318983790  gcc/testsuite/gfortran.dg/auto_char_dummy_array_1.f90
  8ade04864380b4070b95d7f88364789e  gcc/testsuite/gfortran.dg/auto_char_dummy_array_2.f90
*************** aa59a3baf7de5feb8be06ee05faaa11a  gcc/te
*** 68506,68511 ****
--- 73264,73270 ----
  10969643d8dd76f6ab66a3a0f7f3ad9c  gcc/testsuite/gfortran.dg/c_sizeof_5.f90
  674fcb118703afdce719a2584839b8ed  gcc/testsuite/gfortran.dg/c_sizeof_6.f90
  ae61c2dcc3bff5189d5648a6564b3745  gcc/testsuite/gfortran.dg/change_symbol_attributes_1.f90
+ e06e0a6e29196dab57327c42744340f7  gcc/testsuite/gfortran.dg/char4-subscript.f90
  9f1fda5b71467c689905000a78f63255  gcc/testsuite/gfortran.dg/char4_iunit_1.f03
  9f49208809309c20d0e319c95a978a21  gcc/testsuite/gfortran.dg/char4_iunit_2.f03
  70afd65d545cb796f1318f2fd9ad20a0  gcc/testsuite/gfortran.dg/char_allocation_1.f90
*************** b83b7e261a9a0e3827f879ddb426c6e0  gcc/te
*** 68632,68637 ****
--- 73391,73397 ----
  6789f241b90393509e933466d0ce37dd  gcc/testsuite/gfortran.dg/charlen_17.f90
  26128bb808634bb38e1ff5896d22922a  gcc/testsuite/gfortran.dg/charlen_18.f90
  edd7153d14cf45e9e7f8eefeebb2fd1e  gcc/testsuite/gfortran.dg/check_bits_1.f90
+ f3e206f29ff215308e9a52e0149775d5  gcc/testsuite/gfortran.dg/check_bits_2.f90
  8611f395b5429bd54cab0aef125f4641  gcc/testsuite/gfortran.dg/chkbits.f90
  77e2ad72a4abbea742260307f4624bbf  gcc/testsuite/gfortran.dg/chmod_1.f90
  02dc07586e9f642b39a4739a224cdfac  gcc/testsuite/gfortran.dg/chmod_2.f90
*************** b7e881e628c247d750478033fea18cb3  gcc/te
*** 68788,68802 ****
  363a8e7237fe405caaa21bb126f5a3a6  gcc/testsuite/gfortran.dg/class_to_type_4.f90
  b51c285d2aa337ba9d51a48947b0788a  gcc/testsuite/gfortran.dg/cmplx_intrinsic_1.f90
  05232ac9689380c9c4954d057d56c002  gcc/testsuite/gfortran.dg/co_reduce_1.f90
! aedf93982d6c056c9d1650f5e7e4d506  gcc/testsuite/gfortran.dg/coarray/alloc_comp_1.f90
  939e6c8975a11f2e646a768bac9293f9  gcc/testsuite/gfortran.dg/coarray/alloc_comp_2.f90
  72674e7da2e86dedff70420da3d45132  gcc/testsuite/gfortran.dg/coarray/alloc_comp_3.f90
  734994954589fd9c52a0f9f5e65df97a  gcc/testsuite/gfortran.dg/coarray/alloc_comp_4.f90
  5b5ec82dd29e86e4e8c1ffdcc8f1fff4  gcc/testsuite/gfortran.dg/coarray/alloc_comp_5.f90
  0383efb987613ad7ba5897bf853a7c3d  gcc/testsuite/gfortran.dg/coarray/allocate_errgmsg.f90
  21f18575fa619cf0b7fba877cb8db97f  gcc/testsuite/gfortran.dg/coarray/atomic_1.f90
  0268d93e6cda40e43a982efb5b3db96a  gcc/testsuite/gfortran.dg/coarray/atomic_2.f90
! 7f900738d8b946bec6d184b805ad53c6  gcc/testsuite/gfortran.dg/coarray/caf.exp
  a8535ad2a515ec0df0ef730df6f14831  gcc/testsuite/gfortran.dg/coarray/codimension.f90
  5458460c74c7764eb6fc6ca41f3520cb  gcc/testsuite/gfortran.dg/coarray/codimension_2.f90
  9604ece34279ee35811c44344503ca51  gcc/testsuite/gfortran.dg/coarray/codimension_2a.f90
--- 73548,73564 ----
  363a8e7237fe405caaa21bb126f5a3a6  gcc/testsuite/gfortran.dg/class_to_type_4.f90
  b51c285d2aa337ba9d51a48947b0788a  gcc/testsuite/gfortran.dg/cmplx_intrinsic_1.f90
  05232ac9689380c9c4954d057d56c002  gcc/testsuite/gfortran.dg/co_reduce_1.f90
! ceda0022b0324d13515320cbc5635d79  gcc/testsuite/gfortran.dg/coarray/alloc_comp_1.f90
  939e6c8975a11f2e646a768bac9293f9  gcc/testsuite/gfortran.dg/coarray/alloc_comp_2.f90
  72674e7da2e86dedff70420da3d45132  gcc/testsuite/gfortran.dg/coarray/alloc_comp_3.f90
  734994954589fd9c52a0f9f5e65df97a  gcc/testsuite/gfortran.dg/coarray/alloc_comp_4.f90
  5b5ec82dd29e86e4e8c1ffdcc8f1fff4  gcc/testsuite/gfortran.dg/coarray/alloc_comp_5.f90
  0383efb987613ad7ba5897bf853a7c3d  gcc/testsuite/gfortran.dg/coarray/allocate_errgmsg.f90
+ 51ba06c48080eb24ae44aa2f80ce06e7  gcc/testsuite/gfortran.dg/coarray/array_temporary-1.f90
+ 360f9437516a1e9e5cdfcc0773038d80  gcc/testsuite/gfortran.dg/coarray/array_temporary.f90
  21f18575fa619cf0b7fba877cb8db97f  gcc/testsuite/gfortran.dg/coarray/atomic_1.f90
  0268d93e6cda40e43a982efb5b3db96a  gcc/testsuite/gfortran.dg/coarray/atomic_2.f90
! bf91e5385d99bcbe720366bbe10e1e04  gcc/testsuite/gfortran.dg/coarray/caf.exp
  a8535ad2a515ec0df0ef730df6f14831  gcc/testsuite/gfortran.dg/coarray/codimension.f90
  5458460c74c7764eb6fc6ca41f3520cb  gcc/testsuite/gfortran.dg/coarray/codimension_2.f90
  9604ece34279ee35811c44344503ca51  gcc/testsuite/gfortran.dg/coarray/codimension_2a.f90
*************** f4aec2f0ed199113d979b69a74d8afa5  gcc/te
*** 68810,68815 ****
--- 73572,73578 ----
  6254722cb2fb8666108848130a4de4ef  gcc/testsuite/gfortran.dg/coarray/cosubscript_1.f90
  bc2e49396148d7be346be065b8879d1b  gcc/testsuite/gfortran.dg/coarray/data_1.f90
  c1d0b436da831f1ba2bf97a1a37b6eea  gcc/testsuite/gfortran.dg/coarray/dummy_1.f90
+ a63070b05e27b7e6fd60da3efbd0dcad  gcc/testsuite/gfortran.dg/coarray/dummy_2.f90
  f90f6361d794d8b822e8dbb0cce15e43  gcc/testsuite/gfortran.dg/coarray/event_1.f90
  5c76c994fc104238808f24409769c109  gcc/testsuite/gfortran.dg/coarray/event_2.f90
  adfbd63a82cb07a5f08fcfc37965d57e  gcc/testsuite/gfortran.dg/coarray/event_3.f08
*************** f53ac06d9bda6a69841a8fb389e20622  gcc/te
*** 68833,68838 ****
--- 73596,73602 ----
  9087fbbcf8b9fa18cd40d37049454317  gcc/testsuite/gfortran.dg/coarray/poly_run_1.f90
  33490e10cc884f2605a30c4142056c08  gcc/testsuite/gfortran.dg/coarray/poly_run_2.f90
  4a38a76fec0e874592a1f9fb9f16c668  gcc/testsuite/gfortran.dg/coarray/poly_run_3.f90
+ 908a6caa4e0b07e2cb6a80b7284553a9  gcc/testsuite/gfortran.dg/coarray/pr93671.f90
  b324389289606e577a87ba1c672a3812  gcc/testsuite/gfortran.dg/coarray/ptr_comp_1.f08
  7f10b2e799cec0c22aaebfa60b26756a  gcc/testsuite/gfortran.dg/coarray/ptr_comp_2.f08
  febcb2298d9879a0df44772e249cb87a  gcc/testsuite/gfortran.dg/coarray/ptr_comp_3.f08
*************** febcb2298d9879a0df44772e249cb87a  gcc/te
*** 68841,68847 ****
  6ff0066981556cd34c2887256d16c8ac  gcc/testsuite/gfortran.dg/coarray/scalar_alloc_1.f90
  228af371eab204116a57e2cef13ec783  gcc/testsuite/gfortran.dg/coarray/scalar_alloc_2.f90
  082fb3d24d8ca582dc6866adc5d40bad  gcc/testsuite/gfortran.dg/coarray/send_array.f90
! 68ade3bf8b261511d0f8228d5fc7103b  gcc/testsuite/gfortran.dg/coarray/send_char_array_1.f90
  284655b85e1918e14f547da9c373682d  gcc/testsuite/gfortran.dg/coarray/sendget_array.f90
  3e02c7e9c64dcef76ab4fc3f8db928c1  gcc/testsuite/gfortran.dg/coarray/stopped_images_1.f08
  ab6cc384c283380a5b6bdf00c3fbeb30  gcc/testsuite/gfortran.dg/coarray/stopped_images_2.f08
--- 73605,73611 ----
  6ff0066981556cd34c2887256d16c8ac  gcc/testsuite/gfortran.dg/coarray/scalar_alloc_1.f90
  228af371eab204116a57e2cef13ec783  gcc/testsuite/gfortran.dg/coarray/scalar_alloc_2.f90
  082fb3d24d8ca582dc6866adc5d40bad  gcc/testsuite/gfortran.dg/coarray/send_array.f90
! 99ddc7b9588128ed013161356003cd60  gcc/testsuite/gfortran.dg/coarray/send_char_array_1.f90
  284655b85e1918e14f547da9c373682d  gcc/testsuite/gfortran.dg/coarray/sendget_array.f90
  3e02c7e9c64dcef76ab4fc3f8db928c1  gcc/testsuite/gfortran.dg/coarray/stopped_images_1.f08
  ab6cc384c283380a5b6bdf00c3fbeb30  gcc/testsuite/gfortran.dg/coarray/stopped_images_2.f08
*************** b67430669a5503a2b6f70e534e303644  gcc/te
*** 68894,68899 ****
--- 73658,73664 ----
  ae84ff8684b83df37cd04c93355bb779  gcc/testsuite/gfortran.dg/coarray_45.f90
  bdfb211ff859c6346ab45b3805256ba0  gcc/testsuite/gfortran.dg/coarray_46.f90
  0196f422e481e5ac5cb151f859805e29  gcc/testsuite/gfortran.dg/coarray_47.f90
+ 71dbc67a835765d79b82368a016a86e2  gcc/testsuite/gfortran.dg/coarray_48.f90
  ef172e1d19584d7e55648b555dbf8fa3  gcc/testsuite/gfortran.dg/coarray_5.f90
  337935b709715398df39ee0eeaaec67b  gcc/testsuite/gfortran.dg/coarray_6.f90
  8c9859e53f0764f4cc3872bb5b76dd41  gcc/testsuite/gfortran.dg/coarray_7.f90
*************** e7f7c38c4530db86c8bf560b1800b017  gcc/te
*** 68949,68962 ****
  9548b18ea57c3895468bd270375183d8  gcc/testsuite/gfortran.dg/coarray_dependency_1.f90
  ae24a8ba632b111617b5af3d9ec9ed23  gcc/testsuite/gfortran.dg/coarray_event_1.f08
  fbd2090d586a51d16a8ccd3d6c9359e6  gcc/testsuite/gfortran.dg/coarray_event_2.f08
! a863774927689ef296949ebaa242ffb2  gcc/testsuite/gfortran.dg/coarray_fail_st.f90
  3ba815ec354d8e22623cd34e97c404af  gcc/testsuite/gfortran.dg/coarray_failed_images_1.f08
  e4976ca0446d73c3929df8b036747a1b  gcc/testsuite/gfortran.dg/coarray_image_status_1.f08
  cfe684f5b35d41e24c9205e3f305bb02  gcc/testsuite/gfortran.dg/coarray_lib_alloc_1.f90
  9127925813480208932fb9d8668ceff0  gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f90
  67bd05aeb98a1f66f977d0e67035deac  gcc/testsuite/gfortran.dg/coarray_lib_alloc_3.f90
  9d2ebabfe53c940bfc0e9073601f9de7  gcc/testsuite/gfortran.dg/coarray_lib_alloc_4.f90
! 7bdeb986417ab0e14a49d81381d7df7d  gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90
  fb3fff2823ee279a3e0c3a44eb7956ab  gcc/testsuite/gfortran.dg/coarray_lib_move_alloc_1.f90
  b2e83f0dafb1ceb02152eeb61a07f460  gcc/testsuite/gfortran.dg/coarray_lib_realloc_1.f90
  86e1c68d070859c3fb832b2183d75771  gcc/testsuite/gfortran.dg/coarray_lib_this_image_1.f90
--- 73714,73727 ----
  9548b18ea57c3895468bd270375183d8  gcc/testsuite/gfortran.dg/coarray_dependency_1.f90
  ae24a8ba632b111617b5af3d9ec9ed23  gcc/testsuite/gfortran.dg/coarray_event_1.f08
  fbd2090d586a51d16a8ccd3d6c9359e6  gcc/testsuite/gfortran.dg/coarray_event_2.f08
! 516575307d456c25221fb1fd0f0a826c  gcc/testsuite/gfortran.dg/coarray_fail_st.f90
  3ba815ec354d8e22623cd34e97c404af  gcc/testsuite/gfortran.dg/coarray_failed_images_1.f08
  e4976ca0446d73c3929df8b036747a1b  gcc/testsuite/gfortran.dg/coarray_image_status_1.f08
  cfe684f5b35d41e24c9205e3f305bb02  gcc/testsuite/gfortran.dg/coarray_lib_alloc_1.f90
  9127925813480208932fb9d8668ceff0  gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f90
  67bd05aeb98a1f66f977d0e67035deac  gcc/testsuite/gfortran.dg/coarray_lib_alloc_3.f90
  9d2ebabfe53c940bfc0e9073601f9de7  gcc/testsuite/gfortran.dg/coarray_lib_alloc_4.f90
! ddbca428ed4f8523ff51bbcdb8373207  gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90
  fb3fff2823ee279a3e0c3a44eb7956ab  gcc/testsuite/gfortran.dg/coarray_lib_move_alloc_1.f90
  b2e83f0dafb1ceb02152eeb61a07f460  gcc/testsuite/gfortran.dg/coarray_lib_realloc_1.f90
  86e1c68d070859c3fb832b2183d75771  gcc/testsuite/gfortran.dg/coarray_lib_this_image_1.f90
*************** b3bd24f0c174a1694bc02107df47994b  gcc/te
*** 69076,69087 ****
  9b58c072c6e2ec7e5710c4d2b243f04a  gcc/testsuite/gfortran.dg/contains_empty_2.f03
  15d395123762efd5ca05e607a91f1572  gcc/testsuite/gfortran.dg/contiguous_1.f90
  d679116c9da43355228e413e4d728bf6  gcc/testsuite/gfortran.dg/contiguous_10.f90
  9975df3f787a3eaea63dd5664ff235eb  gcc/testsuite/gfortran.dg/contiguous_2.f90
  a59d0430a52a3cf47c280856725dee23  gcc/testsuite/gfortran.dg/contiguous_3.f90
! 511402f303c99c71e02a4a74c823b0a7  gcc/testsuite/gfortran.dg/contiguous_4.f90
  55d6dfee9ae827da90cab84000238f36  gcc/testsuite/gfortran.dg/contiguous_5.f90
  c023e0a33575555c4fdeb791d5d41ad0  gcc/testsuite/gfortran.dg/contiguous_6.f90
! 060baed478814cbe8a9de96bfbe1956b  gcc/testsuite/gfortran.dg/contiguous_7.f90
  4cd87b8689ee11a9007d11e4fb0c2d5a  gcc/testsuite/gfortran.dg/contiguous_8.f90
  551198d8f0cf40031f2e4c834007cc43  gcc/testsuite/gfortran.dg/contiguous_9.f90
  28877a027862f64189ecda1cf9485fec  gcc/testsuite/gfortran.dg/continuation_1.f90
--- 73841,73853 ----
  9b58c072c6e2ec7e5710c4d2b243f04a  gcc/testsuite/gfortran.dg/contains_empty_2.f03
  15d395123762efd5ca05e607a91f1572  gcc/testsuite/gfortran.dg/contiguous_1.f90
  d679116c9da43355228e413e4d728bf6  gcc/testsuite/gfortran.dg/contiguous_10.f90
+ cb50185eaf87f5357dad5873642eec33  gcc/testsuite/gfortran.dg/contiguous_11.f90
  9975df3f787a3eaea63dd5664ff235eb  gcc/testsuite/gfortran.dg/contiguous_2.f90
  a59d0430a52a3cf47c280856725dee23  gcc/testsuite/gfortran.dg/contiguous_3.f90
! b81d56e35fe81ed4c9f6f67cca8a0ab2  gcc/testsuite/gfortran.dg/contiguous_4.f90
  55d6dfee9ae827da90cab84000238f36  gcc/testsuite/gfortran.dg/contiguous_5.f90
  c023e0a33575555c4fdeb791d5d41ad0  gcc/testsuite/gfortran.dg/contiguous_6.f90
! 21862ff5ae803ae28b462d0432d98da6  gcc/testsuite/gfortran.dg/contiguous_7.f90
  4cd87b8689ee11a9007d11e4fb0c2d5a  gcc/testsuite/gfortran.dg/contiguous_8.f90
  551198d8f0cf40031f2e4c834007cc43  gcc/testsuite/gfortran.dg/contiguous_9.f90
  28877a027862f64189ecda1cf9485fec  gcc/testsuite/gfortran.dg/continuation_1.f90
*************** adf3e611b5d9dd41324a93faee4fe2c9  gcc/te
*** 69174,69180 ****
  88c4e7deca20be3e33e616092b99e017  gcc/testsuite/gfortran.dg/deallocate_error_4.f90
  70bd882ce015f7f82966397339ec0d16  gcc/testsuite/gfortran.dg/deallocate_stat.f90
  b2d4c30c54f17f05d0e6d3ae921a7be8  gcc/testsuite/gfortran.dg/deallocate_stat_2.f90
! 54cc411d16f991c5c229cb8c4b0c54d6  gcc/testsuite/gfortran.dg/debug/debug.exp
  c8fe955f02d446b949b45194c7d29caf  gcc/testsuite/gfortran.dg/debug/pr35154-dwarf2.f
  b39fe2f506d09f10d8bf08a208eeb72f  gcc/testsuite/gfortran.dg/debug/pr35154-stabs.f
  9afde2cd5a8b47b5c4a2b2438fcd4de6  gcc/testsuite/gfortran.dg/debug/pr37738.f
--- 73940,73946 ----
  88c4e7deca20be3e33e616092b99e017  gcc/testsuite/gfortran.dg/deallocate_error_4.f90
  70bd882ce015f7f82966397339ec0d16  gcc/testsuite/gfortran.dg/deallocate_stat.f90
  b2d4c30c54f17f05d0e6d3ae921a7be8  gcc/testsuite/gfortran.dg/deallocate_stat_2.f90
! 8b5d2aa2d0dfcb02422f151529bcbfcd  gcc/testsuite/gfortran.dg/debug/debug.exp
  c8fe955f02d446b949b45194c7d29caf  gcc/testsuite/gfortran.dg/debug/pr35154-dwarf2.f
  b39fe2f506d09f10d8bf08a208eeb72f  gcc/testsuite/gfortran.dg/debug/pr35154-stabs.f
  9afde2cd5a8b47b5c4a2b2438fcd4de6  gcc/testsuite/gfortran.dg/debug/pr37738.f
*************** ea87431a0369f9e7268297efe801335a  gcc/te
*** 69244,69250 ****
  762985a925b90674163cd0316a6f3ff0  gcc/testsuite/gfortran.dg/dec_logical_xor_1.f90
  519c3622603d8bdfcdd819606ab71a39  gcc/testsuite/gfortran.dg/dec_logical_xor_2.f90
  7634f260da3c6ee6123a7feaf3e1ab68  gcc/testsuite/gfortran.dg/dec_logical_xor_3.f03
! 0d591679a4cd368c4c33ea31bc0b89ff  gcc/testsuite/gfortran.dg/dec_math.f90
  11fbf6587979490cca68492521824101  gcc/testsuite/gfortran.dg/dec_math_2.f90
  f007474e5e62779dd82a956460020608  gcc/testsuite/gfortran.dg/dec_math_3.f90
  89e13391077c863487552207c651a1aa  gcc/testsuite/gfortran.dg/dec_math_4.f90
--- 74010,74016 ----
  762985a925b90674163cd0316a6f3ff0  gcc/testsuite/gfortran.dg/dec_logical_xor_1.f90
  519c3622603d8bdfcdd819606ab71a39  gcc/testsuite/gfortran.dg/dec_logical_xor_2.f90
  7634f260da3c6ee6123a7feaf3e1ab68  gcc/testsuite/gfortran.dg/dec_logical_xor_3.f03
! b9f5c4479004d5779cf508b8e9ab6bd5  gcc/testsuite/gfortran.dg/dec_math.f90
  11fbf6587979490cca68492521824101  gcc/testsuite/gfortran.dg/dec_math_2.f90
  f007474e5e62779dd82a956460020608  gcc/testsuite/gfortran.dg/dec_math_3.f90
  89e13391077c863487552207c651a1aa  gcc/testsuite/gfortran.dg/dec_math_4.f90
*************** cdeb437bbe1cc227d30775be50d5a68c  gcc/te
*** 69271,69277 ****
  b0da24f3dc3073fdd36d0b56cf3fbd82  gcc/testsuite/gfortran.dg/dec_structure_20.f90
  127ad22c853284a0a1f838db50b2c3f9  gcc/testsuite/gfortran.dg/dec_structure_21.f90
  1efbd8c40c0b0a5237143bc618c059b8  gcc/testsuite/gfortran.dg/dec_structure_22.f90
! e2a1e1b15aac566b0fdce1a94c97eea0  gcc/testsuite/gfortran.dg/dec_structure_23.f90
  1dc6439fb831090e769262e99dd4f234  gcc/testsuite/gfortran.dg/dec_structure_24.f90
  4ead4339110a1e4a56d06642f3ce5172  gcc/testsuite/gfortran.dg/dec_structure_25.f90
  382e4b6c953bd602ac6645ca77bda356  gcc/testsuite/gfortran.dg/dec_structure_26.f90
--- 74037,74043 ----
  b0da24f3dc3073fdd36d0b56cf3fbd82  gcc/testsuite/gfortran.dg/dec_structure_20.f90
  127ad22c853284a0a1f838db50b2c3f9  gcc/testsuite/gfortran.dg/dec_structure_21.f90
  1efbd8c40c0b0a5237143bc618c059b8  gcc/testsuite/gfortran.dg/dec_structure_22.f90
! dd71d9f69fbefbbfbc0b01b62047ebe9  gcc/testsuite/gfortran.dg/dec_structure_23.f90
  1dc6439fb831090e769262e99dd4f234  gcc/testsuite/gfortran.dg/dec_structure_24.f90
  4ead4339110a1e4a56d06642f3ce5172  gcc/testsuite/gfortran.dg/dec_structure_25.f90
  382e4b6c953bd602ac6645ca77bda356  gcc/testsuite/gfortran.dg/dec_structure_26.f90
*************** f405c538ee221b34e2094a843f78c12a  gcc/te
*** 69341,69346 ****
--- 74107,74113 ----
  5f82ae5d302549ef737253722a910e61  gcc/testsuite/gfortran.dg/deferred_character_33.f90
  c8ca7a67e0b9c502e7883c6187a3b1f3  gcc/testsuite/gfortran.dg/deferred_character_33a.f90
  78fa09124fe9b69cd259177c36a08282  gcc/testsuite/gfortran.dg/deferred_character_34.f90
+ 90f06c61f4e28e5c0cd42eea0caba538  gcc/testsuite/gfortran.dg/deferred_character_35.f90
  f69f56fb4872918c466c7554afc79da9  gcc/testsuite/gfortran.dg/deferred_character_36.f90
  5eede6c791f6d272034f9b84850ac6af  gcc/testsuite/gfortran.dg/deferred_character_4.f90
  981b809300de368e8fac65be4b40099c  gcc/testsuite/gfortran.dg/deferred_character_5.f90
*************** cf5153f1f09bb80f5a964ce90c83a5dc  gcc/te
*** 69488,69497 ****
  b522fadd1464db48d2fe8165d2a66e70  gcc/testsuite/gfortran.dg/derived_sub.f90
  652fa12d630d17b29894c33b10c6b1b8  gcc/testsuite/gfortran.dg/dev_null.F90
  94ce3208dac145ea14fc3f821f662788  gcc/testsuite/gfortran.dg/dfloat_1.f90
! e793245d314e02b247c324aa98af2ced  gcc/testsuite/gfortran.dg/dg.exp
! b37733a37c238b038fca214449c39269  gcc/testsuite/gfortran.dg/diagnostic-format-json-1.F90
! 6b590019a6addcda267dc635aefdd5c7  gcc/testsuite/gfortran.dg/diagnostic-format-json-2.F90
! fbbc1af3fb65a0078e4446a714e24273  gcc/testsuite/gfortran.dg/diagnostic-format-json-3.F90
  cf9206e8c02e17079f63e1e6860bdb3b  gcc/testsuite/gfortran.dg/dim_range_1.f90
  9233bdc80c05466b893a5980013b72e8  gcc/testsuite/gfortran.dg/dim_sum_1.f90
  a0eae83f56a58410e0887f2da41f7c3b  gcc/testsuite/gfortran.dg/dim_sum_2.f90
--- 74255,74264 ----
  b522fadd1464db48d2fe8165d2a66e70  gcc/testsuite/gfortran.dg/derived_sub.f90
  652fa12d630d17b29894c33b10c6b1b8  gcc/testsuite/gfortran.dg/dev_null.F90
  94ce3208dac145ea14fc3f821f662788  gcc/testsuite/gfortran.dg/dfloat_1.f90
! 8a82f6ad39191bff0cbbf0171bdf7062  gcc/testsuite/gfortran.dg/dg.exp
! 1880f21af54ba556d37c80bd079cbf78  gcc/testsuite/gfortran.dg/diagnostic-format-json-1.F90
! d234290d0714d33c2c804b2dedce8156  gcc/testsuite/gfortran.dg/diagnostic-format-json-2.F90
! 8d041242bc43092eb3c910cf679d1921  gcc/testsuite/gfortran.dg/diagnostic-format-json-3.F90
  cf9206e8c02e17079f63e1e6860bdb3b  gcc/testsuite/gfortran.dg/dim_range_1.f90
  9233bdc80c05466b893a5980013b72e8  gcc/testsuite/gfortran.dg/dim_sum_1.f90
  a0eae83f56a58410e0887f2da41f7c3b  gcc/testsuite/gfortran.dg/dim_sum_2.f90
*************** cdbdebe9161bcc4a79df17d5f5732b28  gcc/te
*** 69522,69530 ****
  96e2135b923f812fcee419619693640d  gcc/testsuite/gfortran.dg/do_check_10.f90
  c321dd94759ede7664827657793cf07e  gcc/testsuite/gfortran.dg/do_check_11.f90
  2eb7ae71fe0e15822f2c551473a52a7c  gcc/testsuite/gfortran.dg/do_check_12.f90
  18a2fbef89d7cf46f122e07d5fbef517  gcc/testsuite/gfortran.dg/do_check_2.f90
  fdb990ec0ab32e124633d2dae596183b  gcc/testsuite/gfortran.dg/do_check_3.f90
! ffb5a682b1c8bb98feb925db34c42db2  gcc/testsuite/gfortran.dg/do_check_4.f90
  616992b74a87a78033c22f13469877ec  gcc/testsuite/gfortran.dg/do_check_5.f90
  0eb348bc31a469f15e27653ab0b61502  gcc/testsuite/gfortran.dg/do_check_6.f90
  bd4bc520857f0ac91a2842fc99e9f070  gcc/testsuite/gfortran.dg/do_check_7.f90
--- 74289,74302 ----
  96e2135b923f812fcee419619693640d  gcc/testsuite/gfortran.dg/do_check_10.f90
  c321dd94759ede7664827657793cf07e  gcc/testsuite/gfortran.dg/do_check_11.f90
  2eb7ae71fe0e15822f2c551473a52a7c  gcc/testsuite/gfortran.dg/do_check_12.f90
+ ac9a36195c0d6f0b9d9d73ec3d2d92af  gcc/testsuite/gfortran.dg/do_check_13.f90
+ 4b8458f1579722dafa51131b585ee333  gcc/testsuite/gfortran.dg/do_check_14.f90
+ 09fefa827f24e9354c2dd98289d16edc  gcc/testsuite/gfortran.dg/do_check_15.f90
+ 2093dcb437d711ea5082c8c916ce111a  gcc/testsuite/gfortran.dg/do_check_16.f90
+ 51f8e89de7b6288127162649a2373c31  gcc/testsuite/gfortran.dg/do_check_17.f90
  18a2fbef89d7cf46f122e07d5fbef517  gcc/testsuite/gfortran.dg/do_check_2.f90
  fdb990ec0ab32e124633d2dae596183b  gcc/testsuite/gfortran.dg/do_check_3.f90
! 60b42a940b5b42709d0639f8dbb5d358  gcc/testsuite/gfortran.dg/do_check_4.f90
  616992b74a87a78033c22f13469877ec  gcc/testsuite/gfortran.dg/do_check_5.f90
  0eb348bc31a469f15e27653ab0b61502  gcc/testsuite/gfortran.dg/do_check_6.f90
  bd4bc520857f0ac91a2842fc99e9f070  gcc/testsuite/gfortran.dg/do_check_7.f90
*************** a7c723754d10ef5541785fffb91b0578  gcc/te
*** 69549,69554 ****
--- 74321,74327 ----
  23e59fcc0f241300d3822da5f55f6ab5  gcc/testsuite/gfortran.dg/dollar_edit_descriptor_1.f
  eeb8d6e07dce7e2db9e441c445bdd3ac  gcc/testsuite/gfortran.dg/dollar_edit_descriptor_2.f
  e26c1f7f5f5bf58bc20b92b7f15df396  gcc/testsuite/gfortran.dg/dollar_edit_descriptor_3.f
+ 80e2a872632036dbc651e762eae31aaf  gcc/testsuite/gfortran.dg/dollar_edit_descriptor_4.f
  05870f48404bf1cf7ee24b20b89766c9  gcc/testsuite/gfortran.dg/dollar_sym_1.f90
  bee33f45b2081d3f23f2f3b508893078  gcc/testsuite/gfortran.dg/dollar_sym_2.f90
  29c20967118eb556752a80b78d61daa9  gcc/testsuite/gfortran.dg/dollar_sym_3.f
*************** f10c4681bf625e46adae521a3de13a48  gcc/te
*** 69590,69595 ****
--- 74363,74369 ----
  c9bae3926493665cd6a3a6bca4b52e53  gcc/testsuite/gfortran.dg/dtio_33.f90
  5f453b52ee72bd864f1fc70730289b71  gcc/testsuite/gfortran.dg/dtio_34.f90
  4080cbf2e2a79a93e3f83762be75e254  gcc/testsuite/gfortran.dg/dtio_35.f90
+ a63c4c25b48888dec1fdd5c3312fe243  gcc/testsuite/gfortran.dg/dtio_36.f90
  98feff72bfe6f9469278b8b049519af2  gcc/testsuite/gfortran.dg/dtio_4.f90
  5c6704b3b1b7266ea126e709df28bebe  gcc/testsuite/gfortran.dg/dtio_6.f90
  416c852bc110486241a963ccac6a32e0  gcc/testsuite/gfortran.dg/dtio_7.f90
*************** de9046bae40371d3c2b9998f45d5bb3d  gcc/te
*** 69637,69642 ****
--- 74411,74417 ----
  b9659895d4a6323adbf764de6fd7a0aa  gcc/testsuite/gfortran.dg/elemental_args_check_5.f90
  945bb7a0d110a838c661559b0a1b10a4  gcc/testsuite/gfortran.dg/elemental_args_check_6.f90
  b7077bdd651a28345dfba505e670814d  gcc/testsuite/gfortran.dg/elemental_args_check_7.f90
+ a7fb8d784509eea49525155429e0e419  gcc/testsuite/gfortran.dg/elemental_assignment_1.f90
  7a31c26108321afbdb6ada13fa49f4a7  gcc/testsuite/gfortran.dg/elemental_bind_c.f90
  88cce3195111731e0bf8d8931bbb2d51  gcc/testsuite/gfortran.dg/elemental_by_value_1.f90
  c8e3da1f40192d7cdd52bdc76494e242  gcc/testsuite/gfortran.dg/elemental_dependency_1.f90
*************** da4a7c798f0408437da738727e347788  gcc/te
*** 69649,69654 ****
--- 74424,74430 ----
  2d23e66cae12f606c517f27ced38c44c  gcc/testsuite/gfortran.dg/elemental_function_2.f90
  af300e66cd2debe8da426f435e478ede  gcc/testsuite/gfortran.dg/elemental_function_3.f90
  65a443bacf190674f49529d758625e54  gcc/testsuite/gfortran.dg/elemental_function_4.f90
+ d5a800e56880e12efa6f176c1bdaab6c  gcc/testsuite/gfortran.dg/elemental_function_5.f90
  e228c219820da6c0d4d312bd5bd2165a  gcc/testsuite/gfortran.dg/elemental_initializer_1.f90
  bb58a11f51652cefd566851a1485c6f0  gcc/testsuite/gfortran.dg/elemental_intrinsic_1.f03
  4c1ec6aea32b30a4a1edeb92c4abb5d3  gcc/testsuite/gfortran.dg/elemental_non_intrinsic_dummy_1.f90
*************** fa9157510afc1b63296c677f231f9dbe  gcc/te
*** 69657,69663 ****
  dbf9d97edfea0a9adbf9d609aa223675  gcc/testsuite/gfortran.dg/elemental_optional_args_3.f90
  726c22d1b4536296164f9f9d7a1b1074  gcc/testsuite/gfortran.dg/elemental_optional_args_4.f90
  78c94bf645ddf38530d8d6506f1bef98  gcc/testsuite/gfortran.dg/elemental_optional_args_5.f03
! f05a634766967d1e7d4ffb729200b5f8  gcc/testsuite/gfortran.dg/elemental_optional_args_6.f90
  c2032e256cba834bb98ed078d4f35a6e  gcc/testsuite/gfortran.dg/elemental_optional_args_7.f90
  0152497e60abd10da3f36bf800ddb07d  gcc/testsuite/gfortran.dg/elemental_pointer_1.f90
  abaadf21748f33f90675ab8a752db0c2  gcc/testsuite/gfortran.dg/elemental_result_1.f90
--- 74433,74439 ----
  dbf9d97edfea0a9adbf9d609aa223675  gcc/testsuite/gfortran.dg/elemental_optional_args_3.f90
  726c22d1b4536296164f9f9d7a1b1074  gcc/testsuite/gfortran.dg/elemental_optional_args_4.f90
  78c94bf645ddf38530d8d6506f1bef98  gcc/testsuite/gfortran.dg/elemental_optional_args_5.f03
! 756cd895bba7c84d6292ee0aa2faa087  gcc/testsuite/gfortran.dg/elemental_optional_args_6.f90
  c2032e256cba834bb98ed078d4f35a6e  gcc/testsuite/gfortran.dg/elemental_optional_args_7.f90
  0152497e60abd10da3f36bf800ddb07d  gcc/testsuite/gfortran.dg/elemental_pointer_1.f90
  abaadf21748f33f90675ab8a752db0c2  gcc/testsuite/gfortran.dg/elemental_result_1.f90
*************** debb6284910bc9893ee8d64655d67794  gcc/te
*** 69776,69788 ****
  7068ea1b9ef6f4e1c0602de0112c99c8  gcc/testsuite/gfortran.dg/equiv_substr.f90
  1a93c19b7b17152e8d50abaa1075e512  gcc/testsuite/gfortran.dg/erf.f90
  eb8b6bf7208f1b2c958420a7c10478b2  gcc/testsuite/gfortran.dg/erf_2.F90
! fa71558f075bd958c16fae7c40e111a5  gcc/testsuite/gfortran.dg/erf_3.F90
  4896a13f6fa4af7bce5540bb1d7edf28  gcc/testsuite/gfortran.dg/erfc_scaled_1.f90
  6ff6465694368d012e66b39c130fe7ae  gcc/testsuite/gfortran.dg/erfc_scaled_2.f90
  1602fcf07de342d8b9d0889ca1190b7a  gcc/testsuite/gfortran.dg/errnocheck_1.f90
  aaddd233c21720244832702f0c8b31f3  gcc/testsuite/gfortran.dg/error_format.f90
  6bce3657f433adba97093270535b79c2  gcc/testsuite/gfortran.dg/error_format_2.f90
! d864312e5cda1b97a368075d7390a7ac  gcc/testsuite/gfortran.dg/error_recovery_1.f90
  40311a010c9456142b92523ccecedfa1  gcc/testsuite/gfortran.dg/error_recovery_2.f90
  652764a9d9c1d3d89855a32a2885f17c  gcc/testsuite/gfortran.dg/error_recovery_3.f90
  fcded1a161a5e4e72160c1c3335ef6eb  gcc/testsuite/gfortran.dg/error_recovery_4.f90
--- 74552,74564 ----
  7068ea1b9ef6f4e1c0602de0112c99c8  gcc/testsuite/gfortran.dg/equiv_substr.f90
  1a93c19b7b17152e8d50abaa1075e512  gcc/testsuite/gfortran.dg/erf.f90
  eb8b6bf7208f1b2c958420a7c10478b2  gcc/testsuite/gfortran.dg/erf_2.F90
! a8fc794bdc228830fdce4b036804b410  gcc/testsuite/gfortran.dg/erf_3.F90
  4896a13f6fa4af7bce5540bb1d7edf28  gcc/testsuite/gfortran.dg/erfc_scaled_1.f90
  6ff6465694368d012e66b39c130fe7ae  gcc/testsuite/gfortran.dg/erfc_scaled_2.f90
  1602fcf07de342d8b9d0889ca1190b7a  gcc/testsuite/gfortran.dg/errnocheck_1.f90
  aaddd233c21720244832702f0c8b31f3  gcc/testsuite/gfortran.dg/error_format.f90
  6bce3657f433adba97093270535b79c2  gcc/testsuite/gfortran.dg/error_format_2.f90
! 1f9245b3e5149308ecd96af8d480a5d4  gcc/testsuite/gfortran.dg/error_recovery_1.f90
  40311a010c9456142b92523ccecedfa1  gcc/testsuite/gfortran.dg/error_recovery_2.f90
  652764a9d9c1d3d89855a32a2885f17c  gcc/testsuite/gfortran.dg/error_recovery_3.f90
  fcded1a161a5e4e72160c1c3335ef6eb  gcc/testsuite/gfortran.dg/error_recovery_4.f90
*************** f87880c019d70b5c8e9649c7f81decb8  gcc/te
*** 70146,70152 ****
  5b8e4d3e937b6a6803378fc996daa1cc  gcc/testsuite/gfortran.dg/g77/980729-0.f
  2101f50ac159df80eeb505634cd4a578  gcc/testsuite/gfortran.dg/g77/981117-1.f
  6aa55ceeb1750d7c19158792b5f97400  gcc/testsuite/gfortran.dg/g77/990115-1.f
! a157397b4c7b369c19ff675a8bfefc25  gcc/testsuite/gfortran.dg/g77/README
  4593fcff4c64feb2721eea31b88dfb95  gcc/testsuite/gfortran.dg/g77/alpha1.f
  76c5961f1cec6e4fad257f4d1f1fdf35  gcc/testsuite/gfortran.dg/g77/cabs.f
  bf9ae0c15a3a684d969e22501f10d69c  gcc/testsuite/gfortran.dg/g77/check0.f
--- 74922,74928 ----
  5b8e4d3e937b6a6803378fc996daa1cc  gcc/testsuite/gfortran.dg/g77/980729-0.f
  2101f50ac159df80eeb505634cd4a578  gcc/testsuite/gfortran.dg/g77/981117-1.f
  6aa55ceeb1750d7c19158792b5f97400  gcc/testsuite/gfortran.dg/g77/990115-1.f
! 22784a881f439eca29530755c5254997  gcc/testsuite/gfortran.dg/g77/README
  4593fcff4c64feb2721eea31b88dfb95  gcc/testsuite/gfortran.dg/g77/alpha1.f
  76c5961f1cec6e4fad257f4d1f1fdf35  gcc/testsuite/gfortran.dg/g77/cabs.f
  bf9ae0c15a3a684d969e22501f10d69c  gcc/testsuite/gfortran.dg/g77/check0.f
*************** b49db20880b8ab9cfe53b41838e49798  gcc/te
*** 70251,70260 ****
--- 75027,75046 ----
  1169edfc20f0d3b84a259d551b6e1746  gcc/testsuite/gfortran.dg/global_vars_f90_init_driver.c
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gfortran.dg/gnu_logical_1.F
  a1927f72df8d7dff60593a75c817fd91  gcc/testsuite/gfortran.dg/gnu_logical_2.f90
+ 4c0ed83ff3a76cf4f276cba63199bc79  gcc/testsuite/gfortran.dg/goacc-gomp/atomic.f90
+ cdbe16382c20ff02d5be2370ef235ffd  gcc/testsuite/gfortran.dg/goacc-gomp/fixed-1.f
+ 1a47a5d775b89e7ea35bb88b047004a6  gcc/testsuite/gfortran.dg/goacc-gomp/free-1.f90
+ 77b7a1c7e52cacd955900f76517c1166  gcc/testsuite/gfortran.dg/goacc-gomp/goacc-gomp.exp
  623dd259c1089424ad39ce48ecf7872f  gcc/testsuite/gfortran.dg/goacc/acc_on_device-1.f95
  1bb13022cfc4df10f7b288df9b2ceaa7  gcc/testsuite/gfortran.dg/goacc/acc_on_device-2-off.f95
  a2598ab12e851a8e120b6b107500d27b  gcc/testsuite/gfortran.dg/goacc/acc_on_device-2.f95
  6efd4df3178f228cb542d2003c66b882  gcc/testsuite/gfortran.dg/goacc/array-reduction.f90
+ c79027aaf399742636ffa3440fff08d8  gcc/testsuite/gfortran.dg/goacc/array-with-dt-1.f90
+ f25bbf3fd235481f511c69a3adbd7bbd  gcc/testsuite/gfortran.dg/goacc/array-with-dt-2.f90
+ 1a7e14d903155ce712667ff6ee2c16d2  gcc/testsuite/gfortran.dg/goacc/array-with-dt-3.f90
+ 9bc6229906478ab32a5c84e21569e80e  gcc/testsuite/gfortran.dg/goacc/array-with-dt-4.f90
+ e3e8718edc126df116f88405fc72f56d  gcc/testsuite/gfortran.dg/goacc/array-with-dt-5.f90
+ 3674d1489d77dfe034364bd07a8c7db0  gcc/testsuite/gfortran.dg/goacc/array-with-dt-6.f90
  c92cb05a4e19077108b80407be41b8f4  gcc/testsuite/gfortran.dg/goacc/assumed.f95
  f2e50e587c880dd5ab441246f8c42038  gcc/testsuite/gfortran.dg/goacc/asyncwait-1.f95
  8a63d2db2c462621293e094632680b17  gcc/testsuite/gfortran.dg/goacc/asyncwait-2.f95
*************** f04fe9e035242f264ba1bc7e66f7268c  gcc/te
*** 70262,70267 ****
--- 75048,75055 ----
  df94a75f4459698a7eb7a7a16b0f9fdd  gcc/testsuite/gfortran.dg/goacc/asyncwait-4.f95
  fe2df2ce6e9b837974ec76c54da56c62  gcc/testsuite/gfortran.dg/goacc/asyncwait-5.f
  0ff714bbb2fcd709c6b1bd4d6a4dad15  gcc/testsuite/gfortran.dg/goacc/atomic-1.f90
+ 73ace9355b48232c91ed5b3bc0d60050  gcc/testsuite/gfortran.dg/goacc/atomic.f90
+ 0d74fb37c6e6d6468fefa7ac1dacbb6e  gcc/testsuite/gfortran.dg/goacc/attach-descriptor.f90
  b5ce38fdd599e1809965f838521def2e  gcc/testsuite/gfortran.dg/goacc/branch.f95
  109a3ecc87b1bc758772cc9eeee4d842  gcc/testsuite/gfortran.dg/goacc/cache-1.f95
  0770d02d65abc7014c30751880ebe628  gcc/testsuite/gfortran.dg/goacc/cache-2.f95
*************** edae9111fe15e3f1b8c0607efbf0974a  gcc/te
*** 70295,70318 ****
  9ddcab0bb86a09c3ba91367ebb63902c  gcc/testsuite/gfortran.dg/goacc/default-4.f
  4c9397b6b905d9a862759562ff42d768  gcc/testsuite/gfortran.dg/goacc/default-5.f
  7a1a98a21be337079ded815d6a575f0d  gcc/testsuite/gfortran.dg/goacc/default_none.f95
  21e29a1992eb35c8b03952845936125a  gcc/testsuite/gfortran.dg/goacc/derived-types-2.f90
  c36dcd790a85c0e24d8ce6b806d09109  gcc/testsuite/gfortran.dg/goacc/derived-types-3.f90
  88646cb96ab13da1ad7ed62a79c20a32  gcc/testsuite/gfortran.dg/goacc/derived-types.f90
  1c8b2de53f8aaf0bf183889584624b23  gcc/testsuite/gfortran.dg/goacc/enter-exit-data.f95
! 69aadd40a283e3cdb94e2a1c6ab8bd5e  gcc/testsuite/gfortran.dg/goacc/finalize-1.f
  5df16712bea807f97abc1370c1e9959a  gcc/testsuite/gfortran.dg/goacc/firstprivate-1.f95
  80979b6cc7e2aaefc5c01c5a5ec35f63  gcc/testsuite/gfortran.dg/goacc/fixed-1.f
  a2e2e82a9ba48ccb237461a95e525152  gcc/testsuite/gfortran.dg/goacc/fixed-2.f
  d4c2919d4f88b391fb32fcbe225f7214  gcc/testsuite/gfortran.dg/goacc/fixed-3.f
  d6fc5ccccdf283b89871056a603002b0  gcc/testsuite/gfortran.dg/goacc/fixed-4.f
  f47f079a6e8bea88ed65bfb0d0cdaa69  gcc/testsuite/gfortran.dg/goacc/gang-static.f95
! 5dfcd939c9d9b3b8218f449b7cc9cf62  gcc/testsuite/gfortran.dg/goacc/goacc.exp
  d9cdf06c1635189bfa8299ce80e5f917  gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95
  d86c0c74ab936aa9908fe7969e7bc213  gcc/testsuite/gfortran.dg/goacc/if.f95
  601f00049a64dd37cde339f2f1f04f67  gcc/testsuite/gfortran.dg/goacc/kernels-alias-2.f95
  d5dc508fa5f0c7f41320b204b50e6bc2  gcc/testsuite/gfortran.dg/goacc/kernels-alias-3.f95
  32c29c5c89fa00146b3a2febdd2b0b26  gcc/testsuite/gfortran.dg/goacc/kernels-alias-4.f95
  8cd8dec04b1d03d31cfd54e3b68060d5  gcc/testsuite/gfortran.dg/goacc/kernels-alias.f95
  ed5910eefc8b90775d00506871c62da0  gcc/testsuite/gfortran.dg/goacc/kernels-loop-2.f95
  c738d7665d4b818459d58edaec7add90  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-2.f95
  03f40c0830316f28f502d3870e120ba7  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f95
--- 75083,75114 ----
  9ddcab0bb86a09c3ba91367ebb63902c  gcc/testsuite/gfortran.dg/goacc/default-4.f
  4c9397b6b905d9a862759562ff42d768  gcc/testsuite/gfortran.dg/goacc/default-5.f
  7a1a98a21be337079ded815d6a575f0d  gcc/testsuite/gfortran.dg/goacc/default_none.f95
+ 78aa3d748f431b1feb7d0453ca50e827  gcc/testsuite/gfortran.dg/goacc/derived-chartypes-1.f90
+ 7246f560fb5fd31ed6f38210b6b2de88  gcc/testsuite/gfortran.dg/goacc/derived-chartypes-2.f90
+ 1e1d9fd47f26e6946028bde27e2b189a  gcc/testsuite/gfortran.dg/goacc/derived-chartypes-3.f90
+ 52323cce88fa9ed14b7e4b78c3e7afa3  gcc/testsuite/gfortran.dg/goacc/derived-chartypes-4.f90
+ 26758de4dda1efa9e571727ecb02a1f6  gcc/testsuite/gfortran.dg/goacc/derived-classtypes-1.f95
  21e29a1992eb35c8b03952845936125a  gcc/testsuite/gfortran.dg/goacc/derived-types-2.f90
  c36dcd790a85c0e24d8ce6b806d09109  gcc/testsuite/gfortran.dg/goacc/derived-types-3.f90
  88646cb96ab13da1ad7ed62a79c20a32  gcc/testsuite/gfortran.dg/goacc/derived-types.f90
  1c8b2de53f8aaf0bf183889584624b23  gcc/testsuite/gfortran.dg/goacc/enter-exit-data.f95
! 63120e17d3f52a9462e48c7affdb4e8a  gcc/testsuite/gfortran.dg/goacc/finalize-1.f
  5df16712bea807f97abc1370c1e9959a  gcc/testsuite/gfortran.dg/goacc/firstprivate-1.f95
  80979b6cc7e2aaefc5c01c5a5ec35f63  gcc/testsuite/gfortran.dg/goacc/fixed-1.f
  a2e2e82a9ba48ccb237461a95e525152  gcc/testsuite/gfortran.dg/goacc/fixed-2.f
  d4c2919d4f88b391fb32fcbe225f7214  gcc/testsuite/gfortran.dg/goacc/fixed-3.f
  d6fc5ccccdf283b89871056a603002b0  gcc/testsuite/gfortran.dg/goacc/fixed-4.f
+ 848866b7618965ec43d4d0116c95112e  gcc/testsuite/gfortran.dg/goacc/fixed-5.f
  f47f079a6e8bea88ed65bfb0d0cdaa69  gcc/testsuite/gfortran.dg/goacc/gang-static.f95
! c357e60238ae192b8fd2df66dfd47a1a  gcc/testsuite/gfortran.dg/goacc/goacc.exp
  d9cdf06c1635189bfa8299ce80e5f917  gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95
  d86c0c74ab936aa9908fe7969e7bc213  gcc/testsuite/gfortran.dg/goacc/if.f95
  601f00049a64dd37cde339f2f1f04f67  gcc/testsuite/gfortran.dg/goacc/kernels-alias-2.f95
  d5dc508fa5f0c7f41320b204b50e6bc2  gcc/testsuite/gfortran.dg/goacc/kernels-alias-3.f95
  32c29c5c89fa00146b3a2febdd2b0b26  gcc/testsuite/gfortran.dg/goacc/kernels-alias-4.f95
  8cd8dec04b1d03d31cfd54e3b68060d5  gcc/testsuite/gfortran.dg/goacc/kernels-alias.f95
+ 5e0abca54c56f0c52862c963a272d3a5  gcc/testsuite/gfortran.dg/goacc/kernels-decompose-1.f95
+ 6a4f83f5cc90513b6d63a5ea1715e489  gcc/testsuite/gfortran.dg/goacc/kernels-decompose-2.f95
  ed5910eefc8b90775d00506871c62da0  gcc/testsuite/gfortran.dg/goacc/kernels-loop-2.f95
  c738d7665d4b818459d58edaec7add90  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-2.f95
  03f40c0830316f28f502d3870e120ba7  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f95
*************** b6b177ba5911d45f74f61515ed3f5040  gcc/te
*** 70324,70330 ****
  e623fc0a74695e7ea61e47184cda0228  gcc/testsuite/gfortran.dg/goacc/kernels-loop.f95
  12fccbb98b6c2bfc3ac90b38fc6e14af  gcc/testsuite/gfortran.dg/goacc/kernels-loops-adjacent.f95
  19189ade05048abb4a25acd5d6b0ee85  gcc/testsuite/gfortran.dg/goacc/kernels-parallel-loop-data-enter-exit.f95
! e691d0bed5965ac9912f0e3cf297d9b8  gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95
  377578f4d9c4ca1cc67ca167393fbec3  gcc/testsuite/gfortran.dg/goacc/list.f95
  e107d4e382d98141b6dc6d451603f328  gcc/testsuite/gfortran.dg/goacc/literal.f95
  0a42f8c0072173fe974f96ab06f83512  gcc/testsuite/gfortran.dg/goacc/loop-1-2.f95
--- 75120,75126 ----
  e623fc0a74695e7ea61e47184cda0228  gcc/testsuite/gfortran.dg/goacc/kernels-loop.f95
  12fccbb98b6c2bfc3ac90b38fc6e14af  gcc/testsuite/gfortran.dg/goacc/kernels-loops-adjacent.f95
  19189ade05048abb4a25acd5d6b0ee85  gcc/testsuite/gfortran.dg/goacc/kernels-parallel-loop-data-enter-exit.f95
! 127e1511a9ae50ccf17deba3c26fa354  gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95
  377578f4d9c4ca1cc67ca167393fbec3  gcc/testsuite/gfortran.dg/goacc/list.f95
  e107d4e382d98141b6dc6d451603f328  gcc/testsuite/gfortran.dg/goacc/literal.f95
  0a42f8c0072173fe974f96ab06f83512  gcc/testsuite/gfortran.dg/goacc/loop-1-2.f95
*************** ebb37a59df6758bcf82ca94b60619a35  gcc/te
*** 70342,70348 ****
  bd5d0215a2a83dbd4aca37cf558a1b08  gcc/testsuite/gfortran.dg/goacc/loop-7.f95
  8acc04efc98db4b4029c51746d1568e7  gcc/testsuite/gfortran.dg/goacc/loop-tree-1.f90
  4f92207bd61b03b464844ae3360e7402  gcc/testsuite/gfortran.dg/goacc/mapping-tests-1.f90
! 10bd13df2513da40d5153eb388325930  gcc/testsuite/gfortran.dg/goacc/mapping-tests-2.f90
  31c169bb215da8c1f55f816504cbdfdd  gcc/testsuite/gfortran.dg/goacc/mapping-tests-3.f90
  c2fe35b0f03d0c0f369bb6ffb9c04af4  gcc/testsuite/gfortran.dg/goacc/mapping-tests-4.f90
  6eef4f6a2c2a9cdd3e84855e5d4e4331  gcc/testsuite/gfortran.dg/goacc/modules.f95
--- 75138,75144 ----
  bd5d0215a2a83dbd4aca37cf558a1b08  gcc/testsuite/gfortran.dg/goacc/loop-7.f95
  8acc04efc98db4b4029c51746d1568e7  gcc/testsuite/gfortran.dg/goacc/loop-tree-1.f90
  4f92207bd61b03b464844ae3360e7402  gcc/testsuite/gfortran.dg/goacc/mapping-tests-1.f90
! adfee0afb71772a6b0adbdf123e106fd  gcc/testsuite/gfortran.dg/goacc/mapping-tests-2.f90
  31c169bb215da8c1f55f816504cbdfdd  gcc/testsuite/gfortran.dg/goacc/mapping-tests-3.f90
  c2fe35b0f03d0c0f369bb6ffb9c04af4  gcc/testsuite/gfortran.dg/goacc/mapping-tests-4.f90
  6eef4f6a2c2a9cdd3e84855e5d4e4331  gcc/testsuite/gfortran.dg/goacc/modules.f95
*************** a63629c8c309d4d181aa7e4d163f30c1  gcc/te
*** 70393,70403 ****
--- 75189,75201 ----
  24873e7e4fa106bd0e00268afabcef24  gcc/testsuite/gfortran.dg/goacc/private-predetermined-kernels-1.f95
  ec077ad6bdea7dd131d1d252e41327ce  gcc/testsuite/gfortran.dg/goacc/private-predetermined-parallel-1.f95
  d1424a6aff56f84b8594efe4797586c7  gcc/testsuite/gfortran.dg/goacc/private-predetermined-routine-1.f95
+ a768662b89b03d92eaafd1b4dbeb5c1c  gcc/testsuite/gfortran.dg/goacc/pure-elemental-procedures-2.f90
  62b5f5b00b9662a8b75727b0922b367d  gcc/testsuite/gfortran.dg/goacc/pure-elemental-procedures.f95
  9b703807d8c979fc38c25732d2b58ed7  gcc/testsuite/gfortran.dg/goacc/reduction-2.f95
  d3ab76f25073383b9b4da99d0ae1d5da  gcc/testsuite/gfortran.dg/goacc/reduction-3.f95
  cb1043758b27579bfc73998c460f4449  gcc/testsuite/gfortran.dg/goacc/reduction-promotions.f90
  46fd853a6275991852de09ff935972f6  gcc/testsuite/gfortran.dg/goacc/reduction.f95
+ df208766c4856bbc03206680d88a78f7  gcc/testsuite/gfortran.dg/goacc/ref_inquiry.f90
  98a9635d961b647b2f7ee8a0788d11b0  gcc/testsuite/gfortran.dg/goacc/routine-1.f90
  02135bc0b797b99a2d2126798e1e461b  gcc/testsuite/gfortran.dg/goacc/routine-2.f90
  626c79e2d08f68f4ec1db30fd124ebd1  gcc/testsuite/gfortran.dg/goacc/routine-3.f90
*************** f3f9a704a0a1a37891dcfb6e69c1df34  gcc/te
*** 70417,70442 ****
  ec44b9b0a39ac8255bb3015ffa1a0a70  gcc/testsuite/gfortran.dg/goacc/routine-multiple-directives-1.f90
  bf3565fc39b51d4eba189e3f3e4061ea  gcc/testsuite/gfortran.dg/goacc/routine-multiple-directives-2.f90
  2d941c126fb24bca06e3184011650a7a  gcc/testsuite/gfortran.dg/goacc/routine-multiple-lop-clauses-1.f90
! b1c4bb573e81ab633ef763b4cf17f540  gcc/testsuite/gfortran.dg/goacc/sentinel-free-form.f95
  49f1ae5c72a4a5a35c9fdb8f76588e28  gcc/testsuite/gfortran.dg/goacc/several-directives.f95
  19825bcf5e489ee836a9cf5eacf89321  gcc/testsuite/gfortran.dg/goacc/sie.f95
  5b41c13433f57952ca1aeb6e3fb87366  gcc/testsuite/gfortran.dg/goacc/strided-alloc-ptr.f90
  fc701ce0d0e66a16528808980da87172  gcc/testsuite/gfortran.dg/goacc/subarrays.f95
  bf5941547570c89e5553dc31c4ccebbf  gcc/testsuite/gfortran.dg/goacc/tile-1.f90
  9271d76d87f6fa51aadceb07265aa68a  gcc/testsuite/gfortran.dg/goacc/tile-2.f90
  197f020ff080f3f98f3bfe0bf2a11e09  gcc/testsuite/gfortran.dg/goacc/tile-3.f90
  b81b5f4ac39ebfc6de7e0cff8e11e6e7  gcc/testsuite/gfortran.dg/goacc/tile-4.f90
  19ae649d727cd1230ec6e28183ffa84d  gcc/testsuite/gfortran.dg/goacc/tile-lowering.f95
  2fcae0aca98e7612762a0d64de5d1b4d  gcc/testsuite/gfortran.dg/goacc/uninit-copy-clause.f95
! 8cc93f2def35232588cd1ddad4a3d8d3  gcc/testsuite/gfortran.dg/goacc/uninit-dim-clause.f95
! dd2a54a711f3f1fc2d508534164228f9  gcc/testsuite/gfortran.dg/goacc/uninit-firstprivate-clause.f95
! 602bf490ed457bd125825c97354123d3  gcc/testsuite/gfortran.dg/goacc/uninit-if-clause.f95
! 641a662dc120c49d5293b1d1a5e0873f  gcc/testsuite/gfortran.dg/goacc/uninit-use-device-clause.f95
  e5de83f3c72df9c91e2516026a10fd5c  gcc/testsuite/gfortran.dg/goacc/update-if_present-1.f90
  a7b5ad1ca2e567fcb659aed37de115db  gcc/testsuite/gfortran.dg/goacc/update-if_present-2.f90
  5c6b557fbcefd15ad6ec6ef08ade9d19  gcc/testsuite/gfortran.dg/goacc/update.f95
  e9972505e1a87fdeda00b94d99cf711b  gcc/testsuite/gfortran.dg/goacc/vector_length.f90
  ca7b1430257c87857673c1facde6a8d8  gcc/testsuite/gfortran.dg/goacc/wait.f90
  fe34d9d42d37b9776459e695b904bc39  gcc/testsuite/gfortran.dg/gomp/affinity-1.f90
  5633756a662441452bd869456e985808  gcc/testsuite/gfortran.dg/gomp/allocatable_components_1.f90
  a2a78b9dfd24cc5b801a51ebf7713787  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.1.1.f90
--- 75215,75243 ----
  ec44b9b0a39ac8255bb3015ffa1a0a70  gcc/testsuite/gfortran.dg/goacc/routine-multiple-directives-1.f90
  bf3565fc39b51d4eba189e3f3e4061ea  gcc/testsuite/gfortran.dg/goacc/routine-multiple-directives-2.f90
  2d941c126fb24bca06e3184011650a7a  gcc/testsuite/gfortran.dg/goacc/routine-multiple-lop-clauses-1.f90
! e3a293acbc8474a1b6769ba9ca054121  gcc/testsuite/gfortran.dg/goacc/sentinel-free-form.f95
  49f1ae5c72a4a5a35c9fdb8f76588e28  gcc/testsuite/gfortran.dg/goacc/several-directives.f95
  19825bcf5e489ee836a9cf5eacf89321  gcc/testsuite/gfortran.dg/goacc/sie.f95
+ 60e37464235d4f49f4d84dda14b31375  gcc/testsuite/gfortran.dg/goacc/specification-part.f90
  5b41c13433f57952ca1aeb6e3fb87366  gcc/testsuite/gfortran.dg/goacc/strided-alloc-ptr.f90
  fc701ce0d0e66a16528808980da87172  gcc/testsuite/gfortran.dg/goacc/subarrays.f95
+ 33a1108ecb05541a6236e91b7aa9b04f  gcc/testsuite/gfortran.dg/goacc/substring.f90
  bf5941547570c89e5553dc31c4ccebbf  gcc/testsuite/gfortran.dg/goacc/tile-1.f90
  9271d76d87f6fa51aadceb07265aa68a  gcc/testsuite/gfortran.dg/goacc/tile-2.f90
  197f020ff080f3f98f3bfe0bf2a11e09  gcc/testsuite/gfortran.dg/goacc/tile-3.f90
  b81b5f4ac39ebfc6de7e0cff8e11e6e7  gcc/testsuite/gfortran.dg/goacc/tile-4.f90
  19ae649d727cd1230ec6e28183ffa84d  gcc/testsuite/gfortran.dg/goacc/tile-lowering.f95
  2fcae0aca98e7612762a0d64de5d1b4d  gcc/testsuite/gfortran.dg/goacc/uninit-copy-clause.f95
! 9b3bca99ea8a6c6445008f925b6cad2c  gcc/testsuite/gfortran.dg/goacc/uninit-dim-clause.f95
! 64054f67ffff42b4fac330d738c6cc22  gcc/testsuite/gfortran.dg/goacc/uninit-firstprivate-clause.f95
! 62d1dbc920c03d91da337a13532cac48  gcc/testsuite/gfortran.dg/goacc/uninit-if-clause.f95
! 720e8ae3729943a78fd9e4bd1897aa92  gcc/testsuite/gfortran.dg/goacc/uninit-use-device-clause.f95
  e5de83f3c72df9c91e2516026a10fd5c  gcc/testsuite/gfortran.dg/goacc/update-if_present-1.f90
  a7b5ad1ca2e567fcb659aed37de115db  gcc/testsuite/gfortran.dg/goacc/update-if_present-2.f90
  5c6b557fbcefd15ad6ec6ef08ade9d19  gcc/testsuite/gfortran.dg/goacc/update.f95
  e9972505e1a87fdeda00b94d99cf711b  gcc/testsuite/gfortran.dg/goacc/vector_length.f90
  ca7b1430257c87857673c1facde6a8d8  gcc/testsuite/gfortran.dg/goacc/wait.f90
+ e8a02da7f34b2a2a9f386eefa3b51bb0  gcc/testsuite/gfortran.dg/goacc/warn_truncated.f90
  fe34d9d42d37b9776459e695b904bc39  gcc/testsuite/gfortran.dg/gomp/affinity-1.f90
  5633756a662441452bd869456e985808  gcc/testsuite/gfortran.dg/gomp/allocatable_components_1.f90
  a2a78b9dfd24cc5b801a51ebf7713787  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.1.1.f90
*************** c0627a80d39d5dc33d5191270789a95b  gcc/te
*** 70464,70470 ****
  e892480f878db9fb2d75388365b0d38f  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.23.3.f90
  8c9fe83571afc9c5215a588cf630be06  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.23.4.f90
  4a00bd38a551e52f3dc463664dc5c758  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.23.5.f90
! 5940a7ab6e923d166e0cefe1ed148942  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.24.1.f90
  8967546182bcd121c3f99d78d5cc53b3  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.25.1.f90
  9118d63cdf8bff7d2771f4a40bb703ff  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.26.2.f90
  2aa2d73f7d03a61e25d221d421eaf81d  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.27.1.f90
--- 75265,75271 ----
  e892480f878db9fb2d75388365b0d38f  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.23.3.f90
  8c9fe83571afc9c5215a588cf630be06  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.23.4.f90
  4a00bd38a551e52f3dc463664dc5c758  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.23.5.f90
! 88c4dbfc73f1e0fd3e06a02bc82d24b0  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.24.1.f90
  8967546182bcd121c3f99d78d5cc53b3  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.25.1.f90
  9118d63cdf8bff7d2771f4a40bb703ff  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.26.2.f90
  2aa2d73f7d03a61e25d221d421eaf81d  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.27.1.f90
*************** e2405fcffa82b9acf1b1076f87c4061a  gcc/te
*** 70494,70504 ****
  990da4894eee5b8e82d214eabde8634d  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.8.1.f90
  fc76de5411a6ea3d2ef0e979cd24294f  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.9.1.f90
  552f0c0302bb6592f6a2fb291b4586a6  gcc/testsuite/gfortran.dg/gomp/associate1.f90
  bab96c8ce5beeb0e7d9e4dae2fd0ea5f  gcc/testsuite/gfortran.dg/gomp/block-1.f90
! c8bcf6337f95b605de3d54a7f8e5ab84  gcc/testsuite/gfortran.dg/gomp/collapse1.f90
  5889f294d23bf018b629ca16a28a09c2  gcc/testsuite/gfortran.dg/gomp/crayptr1.f90
  4009d52a55ca8f5b28f926033fbbbabe  gcc/testsuite/gfortran.dg/gomp/crayptr2.f90
! 2cf9d85cd13917a968c4480125a70d0e  gcc/testsuite/gfortran.dg/gomp/crayptr3.f90
  1c6644a88dc4bee98beb52bb4342fee9  gcc/testsuite/gfortran.dg/gomp/crayptr4.f90
  4a434ccf995f8c325ad483ae77b66d9f  gcc/testsuite/gfortran.dg/gomp/crayptr5.f90
  78f7d11dfff352871aaafacb9e8f55fd  gcc/testsuite/gfortran.dg/gomp/declare-simd-1.f90
--- 75295,75311 ----
  990da4894eee5b8e82d214eabde8634d  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.8.1.f90
  fc76de5411a6ea3d2ef0e979cd24294f  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.9.1.f90
  552f0c0302bb6592f6a2fb291b4586a6  gcc/testsuite/gfortran.dg/gomp/associate1.f90
+ 1ee7be8269e3dcd8346d718addc606c0  gcc/testsuite/gfortran.dg/gomp/atomic-2.f90
+ 182854045b382f7f1ffdae0d99b513f3  gcc/testsuite/gfortran.dg/gomp/atomic.f90
  bab96c8ce5beeb0e7d9e4dae2fd0ea5f  gcc/testsuite/gfortran.dg/gomp/block-1.f90
! acb12c798525045485e167ffc4dabf8c  gcc/testsuite/gfortran.dg/gomp/cancel-2.f90
! c2875e99b414fbced20c5c41d21b04c4  gcc/testsuite/gfortran.dg/gomp/cancel-3.f90
! afcba399af3e0f296b4e3c48a77f2569  gcc/testsuite/gfortran.dg/gomp/collapse1.f90
! 0d28facbb96730c300fadf428745b605  gcc/testsuite/gfortran.dg/gomp/collapse2.f90
! 36990c2a4b5e499e3cd93ef78508f038  gcc/testsuite/gfortran.dg/gomp/combined-if.f90
  5889f294d23bf018b629ca16a28a09c2  gcc/testsuite/gfortran.dg/gomp/crayptr1.f90
  4009d52a55ca8f5b28f926033fbbbabe  gcc/testsuite/gfortran.dg/gomp/crayptr2.f90
! fa862d5202e8a9940ce10e5de251b964  gcc/testsuite/gfortran.dg/gomp/crayptr3.f90
  1c6644a88dc4bee98beb52bb4342fee9  gcc/testsuite/gfortran.dg/gomp/crayptr4.f90
  4a434ccf995f8c325ad483ae77b66d9f  gcc/testsuite/gfortran.dg/gomp/crayptr5.f90
  78f7d11dfff352871aaafacb9e8f55fd  gcc/testsuite/gfortran.dg/gomp/declare-simd-1.f90
*************** c8bcf6337f95b605de3d54a7f8e5ab84  gcc/te
*** 70506,70525 ****
  ea4104a68bdd94cb4c7afb9454a3e105  gcc/testsuite/gfortran.dg/gomp/declare-simd-coarray-lib.f90
  3efc7a1651bd3761d7b6f4bbc264313a  gcc/testsuite/gfortran.dg/gomp/declare-target-1.f90
  212cd883d44a65487259e920b7082564  gcc/testsuite/gfortran.dg/gomp/declare-target-2.f90
  fa41d6dd0ec4bc45beb3cbce04bf821d  gcc/testsuite/gfortran.dg/gomp/depend-1.f90
  9757fd1aff0e97e5388764ec44be73fd  gcc/testsuite/gfortran.dg/gomp/do-1.f90
  a467591fa5a7397d62aff928d63eb0ad  gcc/testsuite/gfortran.dg/gomp/fixed-1.f
  14ab6dfa2149c533128a3f201531e525  gcc/testsuite/gfortran.dg/gomp/free-1.f90
  b7bb651884d39c2e5dce7d57d46f40a5  gcc/testsuite/gfortran.dg/gomp/free-2.f90
! 4f5aa3256669bd60605b93974dea646c  gcc/testsuite/gfortran.dg/gomp/gomp.exp
! 8e4a5865bff79f8a7b38bfa39af6d395  gcc/testsuite/gfortran.dg/gomp/gridify-1.f90
  336652c36c7d7ce2f34ced505acc64c9  gcc/testsuite/gfortran.dg/gomp/include_1.f
  1fe1ad5080374d9a506a842e10eb64cf  gcc/testsuite/gfortran.dg/gomp/include_1.inc
  c9c12b39090e7fc13f17ab5f3914978a  gcc/testsuite/gfortran.dg/gomp/include_2.f90
  c6b23e36c3423a3454fb19b0ec6f0e01  gcc/testsuite/gfortran.dg/gomp/intentin1.f90
  a0ddccf5319d7e26e8fdaf2827f3ea94  gcc/testsuite/gfortran.dg/gomp/is_device_ptr-1.f90
  fcfec1b14709740892410ae1c647ba42  gcc/testsuite/gfortran.dg/gomp/linear-1.f90
! be152538cccb659bb8dac0eda81355e5  gcc/testsuite/gfortran.dg/gomp/map-1.f90
  52223211c34f4dbace5e033f8243ae1f  gcc/testsuite/gfortran.dg/gomp/omp_atomic1.f90
  0e5454ac80bc199d6cf3e96e9750c33f  gcc/testsuite/gfortran.dg/gomp/omp_atomic2.f90
  5d43e477ab60e438b8824d612b24022d  gcc/testsuite/gfortran.dg/gomp/omp_clauses1.f90
--- 75313,75348 ----
  ea4104a68bdd94cb4c7afb9454a3e105  gcc/testsuite/gfortran.dg/gomp/declare-simd-coarray-lib.f90
  3efc7a1651bd3761d7b6f4bbc264313a  gcc/testsuite/gfortran.dg/gomp/declare-target-1.f90
  212cd883d44a65487259e920b7082564  gcc/testsuite/gfortran.dg/gomp/declare-target-2.f90
+ f2ade342ab737629096e1f8a8a9e6de0  gcc/testsuite/gfortran.dg/gomp/declare-target-4.f90
+ cd36c1dc647fda3c47998959ae255f2e  gcc/testsuite/gfortran.dg/gomp/declare-target-5.f90
  fa41d6dd0ec4bc45beb3cbce04bf821d  gcc/testsuite/gfortran.dg/gomp/depend-1.f90
  9757fd1aff0e97e5388764ec44be73fd  gcc/testsuite/gfortran.dg/gomp/do-1.f90
  a467591fa5a7397d62aff928d63eb0ad  gcc/testsuite/gfortran.dg/gomp/fixed-1.f
+ 8badbaa44c917a572bb465d31c983492  gcc/testsuite/gfortran.dg/gomp/flush-1.f90
+ eda31dab4c7069ae04265defaed94163  gcc/testsuite/gfortran.dg/gomp/flush-2.f90
  14ab6dfa2149c533128a3f201531e525  gcc/testsuite/gfortran.dg/gomp/free-1.f90
  b7bb651884d39c2e5dce7d57d46f40a5  gcc/testsuite/gfortran.dg/gomp/free-2.f90
! a0ea298c26d8866db9dfd3726180a6ee  gcc/testsuite/gfortran.dg/gomp/gomp.exp
! c81f6e5f96d44ff4d4332116923c4ba7  gcc/testsuite/gfortran.dg/gomp/if-1.f90
  336652c36c7d7ce2f34ced505acc64c9  gcc/testsuite/gfortran.dg/gomp/include_1.f
  1fe1ad5080374d9a506a842e10eb64cf  gcc/testsuite/gfortran.dg/gomp/include_1.inc
  c9c12b39090e7fc13f17ab5f3914978a  gcc/testsuite/gfortran.dg/gomp/include_2.f90
  c6b23e36c3423a3454fb19b0ec6f0e01  gcc/testsuite/gfortran.dg/gomp/intentin1.f90
  a0ddccf5319d7e26e8fdaf2827f3ea94  gcc/testsuite/gfortran.dg/gomp/is_device_ptr-1.f90
+ e6d7aaeafebe3f95771812903728dd74  gcc/testsuite/gfortran.dg/gomp/is_device_ptr-2.f90
+ 4dd4181b247ac3f79a6523a11f774cdc  gcc/testsuite/gfortran.dg/gomp/lastprivate-conditional-1.f90
+ af04268cd1ba9085e47cbae173428261  gcc/testsuite/gfortran.dg/gomp/lastprivate-conditional-2.f90
+ 8da702190ab885b30f172e950f2352c7  gcc/testsuite/gfortran.dg/gomp/lastprivate-conditional-3.f90
+ 18ac4502ea33e5ec7eb9987e4f08464a  gcc/testsuite/gfortran.dg/gomp/lastprivate-conditional-4.f90
+ 0324d1aeff2c9703006e512f071b9b0f  gcc/testsuite/gfortran.dg/gomp/lastprivate-conditional-5.f90
  fcfec1b14709740892410ae1c647ba42  gcc/testsuite/gfortran.dg/gomp/linear-1.f90
! dec560a080ae2757b0acb2325c3aafab  gcc/testsuite/gfortran.dg/gomp/map-1.f90
! 43569bbc57024a10628df3c4be381f2a  gcc/testsuite/gfortran.dg/gomp/map-2.f90
! 29092a38e0577978a062abd1c4a720f1  gcc/testsuite/gfortran.dg/gomp/map-3.f90
! cd9740173b89307e8f51dcf62b1f0874  gcc/testsuite/gfortran.dg/gomp/map-4.f90
! dbafc5b94ae395cda5657628bc263b17  gcc/testsuite/gfortran.dg/gomp/map-alloc-comp-1.f90
! 5eb69ee32fb2e3a0ddb2b6d84e0e175c  gcc/testsuite/gfortran.dg/gomp/nontemporal-1.f90
! 50c115c8124a5d89918f3466d7eab60a  gcc/testsuite/gfortran.dg/gomp/nontemporal-2.f90
  52223211c34f4dbace5e033f8243ae1f  gcc/testsuite/gfortran.dg/gomp/omp_atomic1.f90
  0e5454ac80bc199d6cf3e96e9750c33f  gcc/testsuite/gfortran.dg/gomp/omp_atomic2.f90
  5d43e477ab60e438b8824d612b24022d  gcc/testsuite/gfortran.dg/gomp/omp_clauses1.f90
*************** bdca03c79b16b5f9c19e5c92941f5888  gcc/te
*** 70533,70545 ****
  31f5c4996a25be6d38e18faf28b150b4  gcc/testsuite/gfortran.dg/gomp/openmp-simd-1.f90
  2b03c97061d19eddde270a6c9dd3fc38  gcc/testsuite/gfortran.dg/gomp/openmp-simd-2.f90
  7b53af38ad214d98f0d0550bbb80b654  gcc/testsuite/gfortran.dg/gomp/openmp-simd-3.f90
  962b3bb368923a3267954c83793c7d97  gcc/testsuite/gfortran.dg/gomp/openmp-simd-5.f90
  ab6d18741860d8f9094676890b96e068  gcc/testsuite/gfortran.dg/gomp/order-1.f90
  618c952f5bbb7326c70d6e7a786f679d  gcc/testsuite/gfortran.dg/gomp/order-2.f90
  9a6817790a272cd8153d4303d324c00f  gcc/testsuite/gfortran.dg/gomp/pr26224.f
  d2c74a71f2bea0005d853821e6f0142c  gcc/testsuite/gfortran.dg/gomp/pr27573.f90
  a65c4577a606ba1bdab50e690b269b04  gcc/testsuite/gfortran.dg/gomp/pr29759.f90
! 96aac15cd0c5790b6d10294214a19b57  gcc/testsuite/gfortran.dg/gomp/pr33439.f90
  ce35ea8246ca3dd16818723487f871ac  gcc/testsuite/gfortran.dg/gomp/pr35786-1.f90
  06e390fdef05c3cc54928d4ec7b845c3  gcc/testsuite/gfortran.dg/gomp/pr35786-2.f90
  05278dabff92af27970e0fa0e1acc146  gcc/testsuite/gfortran.dg/gomp/pr36726.f90
--- 75356,75372 ----
  31f5c4996a25be6d38e18faf28b150b4  gcc/testsuite/gfortran.dg/gomp/openmp-simd-1.f90
  2b03c97061d19eddde270a6c9dd3fc38  gcc/testsuite/gfortran.dg/gomp/openmp-simd-2.f90
  7b53af38ad214d98f0d0550bbb80b654  gcc/testsuite/gfortran.dg/gomp/openmp-simd-3.f90
+ f31e4c0a0f2527644c90e9922c5c677c  gcc/testsuite/gfortran.dg/gomp/openmp-simd-4.f90
  962b3bb368923a3267954c83793c7d97  gcc/testsuite/gfortran.dg/gomp/openmp-simd-5.f90
+ c544621ba338c5f26ee393de2a252966  gcc/testsuite/gfortran.dg/gomp/openmp-simd-6.f90
  ab6d18741860d8f9094676890b96e068  gcc/testsuite/gfortran.dg/gomp/order-1.f90
  618c952f5bbb7326c70d6e7a786f679d  gcc/testsuite/gfortran.dg/gomp/order-2.f90
+ f5feeab5c486d27ccc1c9005dc112eff  gcc/testsuite/gfortran.dg/gomp/order-3.f90
+ f8e40f23828c760759b3893792acb659  gcc/testsuite/gfortran.dg/gomp/order-4.f90
  9a6817790a272cd8153d4303d324c00f  gcc/testsuite/gfortran.dg/gomp/pr26224.f
  d2c74a71f2bea0005d853821e6f0142c  gcc/testsuite/gfortran.dg/gomp/pr27573.f90
  a65c4577a606ba1bdab50e690b269b04  gcc/testsuite/gfortran.dg/gomp/pr29759.f90
! 4b3bf27c2e1dbddc0b83e461e5354bfc  gcc/testsuite/gfortran.dg/gomp/pr33439.f90
  ce35ea8246ca3dd16818723487f871ac  gcc/testsuite/gfortran.dg/gomp/pr35786-1.f90
  06e390fdef05c3cc54928d4ec7b845c3  gcc/testsuite/gfortran.dg/gomp/pr35786-2.f90
  05278dabff92af27970e0fa0e1acc146  gcc/testsuite/gfortran.dg/gomp/pr36726.f90
*************** f3677d31dd1f67614d77de630d5f14c3  gcc/te
*** 70551,70561 ****
  64ec23cbb777b2296f56ac2b3b8024fa  gcc/testsuite/gfortran.dg/gomp/pr43337.f90
  6b8306504e428441fa3316027925f53c  gcc/testsuite/gfortran.dg/gomp/pr43711.f90
  1d6f79f130df09d550010b1d0daa490c  gcc/testsuite/gfortran.dg/gomp/pr43836.f90
! 18cb2e40f057db9be998be3e1e5a966a  gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90
  d3025370cce4b18eae6eccec4241d4b4  gcc/testsuite/gfortran.dg/gomp/pr44036-2.f90
  98fd69112eb3d61013fdd4bcee9ab120  gcc/testsuite/gfortran.dg/gomp/pr44036-3.f90
! 44c8c3f1fa1d9acd7338b76017c8687a  gcc/testsuite/gfortran.dg/gomp/pr44085.f90
! 7a1922782a65ee7906e0ed6b04059fa5  gcc/testsuite/gfortran.dg/gomp/pr44536.f90
  598aecb4d4ea6b8ab6a2058c41b2aee7  gcc/testsuite/gfortran.dg/gomp/pr44847.f90
  abbd279cc7e81d89b58dd804d829ed65  gcc/testsuite/gfortran.dg/gomp/pr45172.f90
  0784fa1cf4bc9ef82345c80d2f32b6f0  gcc/testsuite/gfortran.dg/gomp/pr45595.f90
--- 75378,75388 ----
  64ec23cbb777b2296f56ac2b3b8024fa  gcc/testsuite/gfortran.dg/gomp/pr43337.f90
  6b8306504e428441fa3316027925f53c  gcc/testsuite/gfortran.dg/gomp/pr43711.f90
  1d6f79f130df09d550010b1d0daa490c  gcc/testsuite/gfortran.dg/gomp/pr43836.f90
! da3301e1ddc8f1b69648ee217a656d63  gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90
  d3025370cce4b18eae6eccec4241d4b4  gcc/testsuite/gfortran.dg/gomp/pr44036-2.f90
  98fd69112eb3d61013fdd4bcee9ab120  gcc/testsuite/gfortran.dg/gomp/pr44036-3.f90
! 83a8b3eb806ac1e73c8197ec0ab6324a  gcc/testsuite/gfortran.dg/gomp/pr44085.f90
! 7ff5ab666996c493bc3f4fc99345f140  gcc/testsuite/gfortran.dg/gomp/pr44536.f90
  598aecb4d4ea6b8ab6a2058c41b2aee7  gcc/testsuite/gfortran.dg/gomp/pr44847.f90
  abbd279cc7e81d89b58dd804d829ed65  gcc/testsuite/gfortran.dg/gomp/pr45172.f90
  0784fa1cf4bc9ef82345c80d2f32b6f0  gcc/testsuite/gfortran.dg/gomp/pr45595.f90
*************** bcd9a8c5acf05494271659304f0f0a60  gcc/te
*** 70574,70579 ****
--- 75401,75407 ----
  4d1fe0041df2d61703598d08f40abe2b  gcc/testsuite/gfortran.dg/gomp/pr59488-2.f90
  624512980f4f3b39deb857cfdd5fdeba  gcc/testsuite/gfortran.dg/gomp/pr62131.f90
  5d7b04ab3b84314d89ea68a7f054ea17  gcc/testsuite/gfortran.dg/gomp/pr66633.f90
+ 566b1c39d1e1600ac5ad06b60b6b2cec  gcc/testsuite/gfortran.dg/gomp/pr67500.f90
  008d934abb38a4acedd9f90092aa4b6d  gcc/testsuite/gfortran.dg/gomp/pr69128.f90
  5a8d2190eb640c3738f51f5cbe21a0b5  gcc/testsuite/gfortran.dg/gomp/pr69183.f90
  e5c6bab2e9d07fd851718caf7177fb4f  gcc/testsuite/gfortran.dg/gomp/pr69281.f90
*************** e5f0ff2c94fb41e447563955917d04b7  gcc/te
*** 70599,70606 ****
  7031f0539504d7051ea534bfda971893  gcc/testsuite/gfortran.dg/gomp/pr78299.f90
  c77cea4fe3e6db60cec6014217b3e898  gcc/testsuite/gfortran.dg/gomp/pr78866-1.f90
  7be086a304cd4d607913bd32ad2448ca  gcc/testsuite/gfortran.dg/gomp/pr78866-2.f90
! ec5b3d0de1e2d3fcfcc87c76543e9db1  gcc/testsuite/gfortran.dg/gomp/pr79154-1.f90
! eaa9f5415777a4aa8e9cb87901c13910  gcc/testsuite/gfortran.dg/gomp/pr79154-2.f90
  9b10d6e97e6ec036398bc75fe623a968  gcc/testsuite/gfortran.dg/gomp/pr80918.f90
  f5bcea31678114301e0da9c5d60bb564  gcc/testsuite/gfortran.dg/gomp/pr81887.f90
  92640e276a3deabcb0817b450e3c007f  gcc/testsuite/gfortran.dg/gomp/pr82568.f90
--- 75427,75435 ----
  7031f0539504d7051ea534bfda971893  gcc/testsuite/gfortran.dg/gomp/pr78299.f90
  c77cea4fe3e6db60cec6014217b3e898  gcc/testsuite/gfortran.dg/gomp/pr78866-1.f90
  7be086a304cd4d607913bd32ad2448ca  gcc/testsuite/gfortran.dg/gomp/pr78866-2.f90
! 70e129178ee7ba2c60822305774c66d7  gcc/testsuite/gfortran.dg/gomp/pr79154-1.f90
! 2caffe73180ead2c80b3f612aec525e4  gcc/testsuite/gfortran.dg/gomp/pr79154-2.f90
! e8dbf438b205977a06ec1f2c40727df0  gcc/testsuite/gfortran.dg/gomp/pr79154-simd.f90
  9b10d6e97e6ec036398bc75fe623a968  gcc/testsuite/gfortran.dg/gomp/pr80918.f90
  f5bcea31678114301e0da9c5d60bb564  gcc/testsuite/gfortran.dg/gomp/pr81887.f90
  92640e276a3deabcb0817b450e3c007f  gcc/testsuite/gfortran.dg/gomp/pr82568.f90
*************** c2c9b1a1db79eedb25331d3565231b66  gcc/te
*** 70617,70641 ****
  6399dd6d481972c65426ae5a0fe674a2  gcc/testsuite/gfortran.dg/gomp/pr89651.f90
  1365d33484c21cf6b603f60889b019a4  gcc/testsuite/gfortran.dg/gomp/pr92977.f90
  6db6e7072dccd0be789b6dc9bd2a586c  gcc/testsuite/gfortran.dg/gomp/pr93555.f90
! dd3733fb2f9ce1c3658eebdc7cc337d2  gcc/testsuite/gfortran.dg/gomp/pr94672.f90
  b4be3f9de7631846875a711ae9b67293  gcc/testsuite/gfortran.dg/gomp/proc_ptr_1.f90
  87885556568e657ef4c936c53e1c7305  gcc/testsuite/gfortran.dg/gomp/proc_ptr_2.f90
  59e444df8ec8f5ea9859b5aef4d75865  gcc/testsuite/gfortran.dg/gomp/reduction1.f90
  02484261b0434dbaf2709c34db58cd4d  gcc/testsuite/gfortran.dg/gomp/reduction2.f90
  a2addf1a691db784ba87841fe1cf8f23  gcc/testsuite/gfortran.dg/gomp/reduction3.f90
  96b7be608b1727fa1e3fc8a9c0185d70  gcc/testsuite/gfortran.dg/gomp/schedule-1.f90
  c525cee40cfdc1d7f1dda5cf299fdde9  gcc/testsuite/gfortran.dg/gomp/schedule-modifiers-1.f90
! 8ad2e6ddba3c3e3e8fd13e26a2cb7c46  gcc/testsuite/gfortran.dg/gomp/schedule-modifiers-2.f90
! 9f419935560eeba38800fbec9faa6990  gcc/testsuite/gfortran.dg/gomp/sharing-1.f90
! bb19e54aafc9016401c4797e4cb0d75d  gcc/testsuite/gfortran.dg/gomp/sharing-2.f90
! 31d6e090f7c514b28f2656086d853df7  gcc/testsuite/gfortran.dg/gomp/sharing-3.f90
  b3d1280c39c6cae9dddab498b1e1eeb4  gcc/testsuite/gfortran.dg/gomp/sharing-4.f90
  1270cfd451f11e2ba8a4b451bb9b51e3  gcc/testsuite/gfortran.dg/gomp/target-exit-data.f90
  3c3ee23796192e475b1597bfe4ae9d72  gcc/testsuite/gfortran.dg/gomp/target-parallel1.f90
  919bd1d4b3eea35828ead5f8cf204a98  gcc/testsuite/gfortran.dg/gomp/target1.f90
  b75e4a6eaec211becf176c75768a3f3d  gcc/testsuite/gfortran.dg/gomp/target2.f90
  4a93baff2b168f10d86571d18de637ba  gcc/testsuite/gfortran.dg/gomp/target3.f90
  93bf9ebfcd92172a6fc8ffa353dc697b  gcc/testsuite/gfortran.dg/gomp/teams1.f90
  86f899863718848e682593290355e6c1  gcc/testsuite/gfortran.dg/gomp/udr1.f90
  2aa1076458fe27767e8682a018266e21  gcc/testsuite/gfortran.dg/gomp/udr2.f90
  6ddb9641f92715d3a3298771fab84b43  gcc/testsuite/gfortran.dg/gomp/udr3.f90
--- 75446,75496 ----
  6399dd6d481972c65426ae5a0fe674a2  gcc/testsuite/gfortran.dg/gomp/pr89651.f90
  1365d33484c21cf6b603f60889b019a4  gcc/testsuite/gfortran.dg/gomp/pr92977.f90
  6db6e7072dccd0be789b6dc9bd2a586c  gcc/testsuite/gfortran.dg/gomp/pr93555.f90
! a921eeb5697bd066712d41d66d374930  gcc/testsuite/gfortran.dg/gomp/pr94672.f90
! 8a04653b9aa2543e13a3136934e00444  gcc/testsuite/gfortran.dg/gomp/pr95869.f90
! 499f4d9c60bbb1a2be81d1888def444c  gcc/testsuite/gfortran.dg/gomp/pr99226.f90
  b4be3f9de7631846875a711ae9b67293  gcc/testsuite/gfortran.dg/gomp/proc_ptr_1.f90
  87885556568e657ef4c936c53e1c7305  gcc/testsuite/gfortran.dg/gomp/proc_ptr_2.f90
  59e444df8ec8f5ea9859b5aef4d75865  gcc/testsuite/gfortran.dg/gomp/reduction1.f90
  02484261b0434dbaf2709c34db58cd4d  gcc/testsuite/gfortran.dg/gomp/reduction2.f90
  a2addf1a691db784ba87841fe1cf8f23  gcc/testsuite/gfortran.dg/gomp/reduction3.f90
+ 0dc08096fa00c01ab86b84dcce6c0585  gcc/testsuite/gfortran.dg/gomp/reduction4.f90
+ 2c3f503f95bb1fcdc0cd2a3752da57c1  gcc/testsuite/gfortran.dg/gomp/reduction5.f90
+ 8f041e818ba5c0f262e7497ab62c4291  gcc/testsuite/gfortran.dg/gomp/reduction6.f90
+ a7c90ad83020843f82e711a146185152  gcc/testsuite/gfortran.dg/gomp/reduction7.f90
+ 7fe01ba3e1a1dd148d342a8c66455920  gcc/testsuite/gfortran.dg/gomp/ref_inquiry.f90
+ 274262a532e8508d248c02dc12d359bc  gcc/testsuite/gfortran.dg/gomp/requires-1.f90
+ 140462f2e11c8432e775eb6957a8e7bb  gcc/testsuite/gfortran.dg/gomp/requires-2.f90
+ c91352c09b91870936925c3ece3a6771  gcc/testsuite/gfortran.dg/gomp/requires-3.f90
+ 42164d7a349583bbb618e2fc6d8461ce  gcc/testsuite/gfortran.dg/gomp/requires-4.f90
+ 63a2fe63c34ac01ee2bad940a096ad3d  gcc/testsuite/gfortran.dg/gomp/requires-5.f90
+ 46f083bb08dfc0edfbdb3af4353d7197  gcc/testsuite/gfortran.dg/gomp/requires-6.f90
+ d47fb4d0166842f717efe23cd8e6548c  gcc/testsuite/gfortran.dg/gomp/requires-7.f90
+ 61987974a114a3410bd25e44ac39a4eb  gcc/testsuite/gfortran.dg/gomp/requires-8.f90
+ db8328a4f748cc704f20335b7343890b  gcc/testsuite/gfortran.dg/gomp/requires-9.f90
+ cab1d23bb8be96f5ee1f6a158200ac4d  gcc/testsuite/gfortran.dg/gomp/scan-1.f90
+ e69757621834c84c21fc0470637b86af  gcc/testsuite/gfortran.dg/gomp/scan-2.f90
+ d32b934bf6eb3a58ce0d40315170c604  gcc/testsuite/gfortran.dg/gomp/scan-3.f90
+ 2a477c93efd3a986af025bedc0ec0fee  gcc/testsuite/gfortran.dg/gomp/scan-4.f90
+ a90d9abb0f4695d7261126d6be937377  gcc/testsuite/gfortran.dg/gomp/scan-5.f90
+ 35326d68b85545facab66432fae3e042  gcc/testsuite/gfortran.dg/gomp/scan-6.f90
+ d56094ad174ac9dd36a007adf8c4fb31  gcc/testsuite/gfortran.dg/gomp/scan-7.f90
  96b7be608b1727fa1e3fc8a9c0185d70  gcc/testsuite/gfortran.dg/gomp/schedule-1.f90
  c525cee40cfdc1d7f1dda5cf299fdde9  gcc/testsuite/gfortran.dg/gomp/schedule-modifiers-1.f90
! 97aefac9d65dc006ea6d5ce5ea111492  gcc/testsuite/gfortran.dg/gomp/schedule-modifiers-2.f90
! 79dfa2e9e4441b4f7baa74120274ac19  gcc/testsuite/gfortran.dg/gomp/sharing-1.f90
! 9dd19a9e9dfc0e4a98f98e8a7fc69049  gcc/testsuite/gfortran.dg/gomp/sharing-2.f90
! 61ab8721e9576883e27967dd80ebb199  gcc/testsuite/gfortran.dg/gomp/sharing-3.f90
  b3d1280c39c6cae9dddab498b1e1eeb4  gcc/testsuite/gfortran.dg/gomp/sharing-4.f90
+ 8f8ce7f2adace9bd429d0fc54c872b4b  gcc/testsuite/gfortran.dg/gomp/substring.f90
  1270cfd451f11e2ba8a4b451bb9b51e3  gcc/testsuite/gfortran.dg/gomp/target-exit-data.f90
  3c3ee23796192e475b1597bfe4ae9d72  gcc/testsuite/gfortran.dg/gomp/target-parallel1.f90
  919bd1d4b3eea35828ead5f8cf204a98  gcc/testsuite/gfortran.dg/gomp/target1.f90
  b75e4a6eaec211becf176c75768a3f3d  gcc/testsuite/gfortran.dg/gomp/target2.f90
  4a93baff2b168f10d86571d18de637ba  gcc/testsuite/gfortran.dg/gomp/target3.f90
+ b9b3b8b47b0772d7b7de04323ef150eb  gcc/testsuite/gfortran.dg/gomp/task-detach-1.f90
  93bf9ebfcd92172a6fc8ffa353dc697b  gcc/testsuite/gfortran.dg/gomp/teams1.f90
+ ece14642b39d950304d0510a2090d613  gcc/testsuite/gfortran.dg/gomp/threadprivate-1.f90
  86f899863718848e682593290355e6c1  gcc/testsuite/gfortran.dg/gomp/udr1.f90
  2aa1076458fe27767e8682a018266e21  gcc/testsuite/gfortran.dg/gomp/udr2.f90
  6ddb9641f92715d3a3298771fab84b43  gcc/testsuite/gfortran.dg/gomp/udr3.f90
*************** b75e4a6eaec211becf176c75768a3f3d  gcc/te
*** 70644,70651 ****
--- 75499,75565 ----
  4be69272338362c6a969ab47082c5fcc  gcc/testsuite/gfortran.dg/gomp/udr6.f90
  186f9bb4f37e50c00e5be84dc3319bb0  gcc/testsuite/gfortran.dg/gomp/udr7.f90
  20bfe17efe2daa15a962d3237694089d  gcc/testsuite/gfortran.dg/gomp/udr8.f90
+ 191b4f3758e937a3380be8e7173714d3  gcc/testsuite/gfortran.dg/gomp/use_device_ptr-1.f90
  443b8f44ee67bd099885898c659e395f  gcc/testsuite/gfortran.dg/gomp/warn_truncated.f
  b3430eeb122295940c5fb0b7ba4438a3  gcc/testsuite/gfortran.dg/gomp/warn_truncated.f90
+ 9c337aedd0ef3d96ead8e1c87c575692  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-1.f90
+ c24680477e7620be28299503f743cb5c  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-10.f90
+ a7dc5652d322ae354c4a44022b199f82  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-11.f90
+ 5c12a050c42d1e537532f3e464efc3bb  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-12.f90
+ 070b9f897d0217b6716f4c5a9f6d8266  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-13.f90
+ 633ffae84bf4c20a7ee2095d5039db64  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-14.f90
+ 0bcd73fc9630294b962ad11b85318432  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-15.f90
+ 1d0bc0b40c4a2fcf7ad8663a713d0a46  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-16.f90
+ 279b4260f22e86aa760838f9274b6094  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-17.f90
+ e1330acb5a38777b6c023b5f48c02630  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-18.f90
+ df128fe566a19150f756b0415d7ffe40  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-19.f90
+ b7960b392ebe093057b2bbeddd100881  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-2.f90
+ a587ff768b6f1afc1f470e1a00c0c187  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-20.f90
+ c4a3d5df5351fd15b415d1b4b069ad0b  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-21.f90
+ 39fbcd5a61c3016565c7fefbbfd6c557  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-22.f90
+ dfd092cca631435b2ef752ce1d8904ae  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-23.f90
+ dd8c1307bb69b101c948f427141b3340  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-24.f90
+ 6ce99e2f6fb93d664b793630626734e6  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-25.f90
+ 5bc2a199faed2eabc2e9c9c2f720bb2f  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-26.f90
+ 592e0d878eb5ed0f9afe0a9dc9b60230  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-27.f90
+ 20cbc07f4609692d2701edb88588f92b  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-28.f90
+ b3de056f8c51bc82d4dc16bf5c37efc9  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-29.f90
+ 20cbc07f4609692d2701edb88588f92b  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-3.f90
+ 90488dc7c46e01e56c6908ee3dcec5fa  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-30.f90
+ f17b9c9e82043112cf645c3c1a854c5d  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-31.f90
+ 53467a3c33544896350fe85da67559bf  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-32.f90
+ b213406d06640a0d3387c5db47dd6922  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-33.f90
+ db978d1521d51e5934994e59b9a77381  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-34.f90
+ f85c31f280a9493f4be7c53c53d4f972  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-35.f90
+ 743c8a894a01e730f1ec0ae35b6e34f0  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-36.f90
+ 7bdd35602c59f68f75fdb0888680ceea  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-37.f90
+ aaecd4b8093e59c0cacbae7d03842258  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-38.f90
+ bf2647f86a581e977c3adfa282c3f32c  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-39.f90
+ d7a19eb1aaca1259b6dd97a9a38d59aa  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-4.f90
+ 69a2b7ecfade91c12bc7e7ffc42fac61  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-40.f90
+ a6ebc751fa3bc44d1d9699c9ea8c70e1  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-41.f90
+ 6ddb3da4cac6dbff8848369741e04754  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-42.f90
+ f9662eb621fcb17f72bd5ec84821640b  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-43.f90
+ e03bf2a149bd76db8233774674456bc3  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-44.f90
+ 2fe4771f16e604ac1e3a928b3b8ac7a0  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-45.f90
+ de543fa6d129eaa1e28a69715c3333ca  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-46.f90
+ d6a1e0ad025480e29c0303505d88b047  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-47.f90
+ 47a683da700654fb2a5e87ae50e6b18f  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-48.f90
+ 6ace31906cb010bf99e309fa9f96d684  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-49.f90
+ 4b69371a0225e42dc8dc22ad79974559  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-5.f90
+ 0d3e310b826ccc7b19b62218149c472b  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-50.f90
+ f2587050f986e340a57d1dff27f19650  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-51.f90
+ 691f6ca9c2e2576d299447ffcbc1b4b2  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-52.f90
+ fe0a3478e4428c993a82f7b6e0a66c7b  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-53.f90
+ e5a965c0d4fde40f267b99ad13512653  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-54.f90
+ bab0bace2772a0e3433627668852a5c2  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-55.f90
+ fb627f186c63129ab959ab9b1fd3d46c  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-56.f90
+ 26f92a3276f3a5c5b7329197037922bc  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-57.f90
+ 99cae2704f821f984f06c5a51e636448  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-58.f90
+ 4fe9b6c63d41bbfdcd688517fbcb9a45  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-6.f90
+ 3b44c5b537ef809faf8036a38c923073  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-7.f90
+ f5b9adb72b23db9e9be45e89cefe8af0  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-8.f90
+ 7f8e1eae311305e3a0f03da25f070c35  gcc/testsuite/gfortran.dg/gomp/workshare-reduction-9.f90
  41759f5578782a6f4ae3601bff797650  gcc/testsuite/gfortran.dg/gomp/workshare1.f90
  e9dd9cdecfd6e8d5c1161ad9f708f9c9  gcc/testsuite/gfortran.dg/gomp/workshare2.f90
  ee975088783cbb32ae11692ecfe38fc0  gcc/testsuite/gfortran.dg/gomp/workshare3.f90
*************** b668767cebd1d81ba2d2ca1138456cbe  gcc/te
*** 70663,70669 ****
  7f6a0bf732d7a49a9bd1a4598c67549a  gcc/testsuite/gfortran.dg/graphite/block-2.f
  b432d9423fac5506e5220aa6b34be410  gcc/testsuite/gfortran.dg/graphite/block-3.f90
  466df24c793ce10011458d00ea210bc9  gcc/testsuite/gfortran.dg/graphite/block-4.f90
! 21bf698b705c627c47fd9ecba831de0c  gcc/testsuite/gfortran.dg/graphite/graphite.exp
  178815ec0b286d5b50214ae046b407fe  gcc/testsuite/gfortran.dg/graphite/id-1.f90
  df4c5d17c4fe35475b6ddff605a83c8f  gcc/testsuite/gfortran.dg/graphite/id-10.f90
  6fd035afd995bfd09cebafa89bb45211  gcc/testsuite/gfortran.dg/graphite/id-11.f
--- 75577,75583 ----
  7f6a0bf732d7a49a9bd1a4598c67549a  gcc/testsuite/gfortran.dg/graphite/block-2.f
  b432d9423fac5506e5220aa6b34be410  gcc/testsuite/gfortran.dg/graphite/block-3.f90
  466df24c793ce10011458d00ea210bc9  gcc/testsuite/gfortran.dg/graphite/block-4.f90
! 1612cd6f4b106721c6073eafbc6e7f45  gcc/testsuite/gfortran.dg/graphite/graphite.exp
  178815ec0b286d5b50214ae046b407fe  gcc/testsuite/gfortran.dg/graphite/id-1.f90
  df4c5d17c4fe35475b6ddff605a83c8f  gcc/testsuite/gfortran.dg/graphite/id-10.f90
  6fd035afd995bfd09cebafa89bb45211  gcc/testsuite/gfortran.dg/graphite/id-11.f
*************** daa1172ed1d5a6072057b20aaca3b1ec  gcc/te
*** 70765,70771 ****
  c6ccb0077483440bf572afc0c07cf295  gcc/testsuite/gfortran.dg/graphite/vect-pr40979.f90
  7f4798472e54ab24309f0edab16c91d1  gcc/testsuite/gfortran.dg/graphite/vect-pr94043.f90
  f9932e22f4bc6baa989154035dbac7c1  gcc/testsuite/gfortran.dg/guality/arg1.f90
! 2f0ace5fbd29c7448cb42dfa5744b571  gcc/testsuite/gfortran.dg/guality/guality.exp
  9e2790792b04c03a1a0860c862a27b4b  gcc/testsuite/gfortran.dg/guality/pr41558.f90
  26d42c53448fb26d2b66a4b1d93693d3  gcc/testsuite/gfortran.dg/hollerith.f90
  855af7807ad9d75aef7ff85c2859a0c2  gcc/testsuite/gfortran.dg/hollerith2.f90
--- 75679,75685 ----
  c6ccb0077483440bf572afc0c07cf295  gcc/testsuite/gfortran.dg/graphite/vect-pr40979.f90
  7f4798472e54ab24309f0edab16c91d1  gcc/testsuite/gfortran.dg/graphite/vect-pr94043.f90
  f9932e22f4bc6baa989154035dbac7c1  gcc/testsuite/gfortran.dg/guality/arg1.f90
! ffb510b687f0ea0845b8ed3e93ad308d  gcc/testsuite/gfortran.dg/guality/guality.exp
  9e2790792b04c03a1a0860c862a27b4b  gcc/testsuite/gfortran.dg/guality/pr41558.f90
  26d42c53448fb26d2b66a4b1d93693d3  gcc/testsuite/gfortran.dg/hollerith.f90
  855af7807ad9d75aef7ff85c2859a0c2  gcc/testsuite/gfortran.dg/hollerith2.f90
*************** cc7201a9525a4793e8bf391d30c3653d  gcc/te
*** 70816,70822 ****
  8201f75f0deee5480134fc16f1113f0c  gcc/testsuite/gfortran.dg/ichar_2.f90
  b614ce421f97fb4ab6fa10f1f1c47ab0  gcc/testsuite/gfortran.dg/ichar_3.f90
  5b6adfdb788db3a061d01bdf727a5a52  gcc/testsuite/gfortran.dg/ieee/dec_math_1.f90
! ec73f206170988d827217632d8b1b5f9  gcc/testsuite/gfortran.dg/ieee/ieee.exp
  0099e59ef340f8e2088656dfac86c17f  gcc/testsuite/gfortran.dg/ieee/ieee_1.F90
  8573026694e7ac222b3bab9e44094b39  gcc/testsuite/gfortran.dg/ieee/ieee_10.f90
  6183b8dca51e7054ad280235aaba2999  gcc/testsuite/gfortran.dg/ieee/ieee_11.F90
--- 75730,75736 ----
  8201f75f0deee5480134fc16f1113f0c  gcc/testsuite/gfortran.dg/ichar_2.f90
  b614ce421f97fb4ab6fa10f1f1c47ab0  gcc/testsuite/gfortran.dg/ichar_3.f90
  5b6adfdb788db3a061d01bdf727a5a52  gcc/testsuite/gfortran.dg/ieee/dec_math_1.f90
! 5390ada3e867a0ffc8d16ceeacbfd2c8  gcc/testsuite/gfortran.dg/ieee/ieee.exp
  0099e59ef340f8e2088656dfac86c17f  gcc/testsuite/gfortran.dg/ieee/ieee_1.F90
  8573026694e7ac222b3bab9e44094b39  gcc/testsuite/gfortran.dg/ieee/ieee_10.f90
  6183b8dca51e7054ad280235aaba2999  gcc/testsuite/gfortran.dg/ieee/ieee_11.F90
*************** ec73f206170988d827217632d8b1b5f9  gcc/te
*** 70825,70833 ****
  b15c44040c4efe2f8b119bb3df34f610  gcc/testsuite/gfortran.dg/ieee/ieee_3.f90
  b3ce722b19dcbcf704ca27cdf726ac0f  gcc/testsuite/gfortran.dg/ieee/ieee_4.f90
  d7dcbbbf51853a9d7416a34ec7d5e19b  gcc/testsuite/gfortran.dg/ieee/ieee_5.f90
! 11feba5e976c6c537840363f5f59f09d  gcc/testsuite/gfortran.dg/ieee/ieee_6.f90
  936dd9c26cd1c2d9a4711fd40b1f3d8c  gcc/testsuite/gfortran.dg/ieee/ieee_7.f90
! 2795b0ff6a69fe3ff99c3aa33f49b27d  gcc/testsuite/gfortran.dg/ieee/ieee_8.f90
  cb641ee4161b1d608af0011a8dacd2de  gcc/testsuite/gfortran.dg/ieee/ieee_9.f90
  3edf3db930f2307fe20f5876079afacb  gcc/testsuite/gfortran.dg/ieee/intrinsics_1.f90
  838403b2438b8f997d80b7cef8537bf0  gcc/testsuite/gfortran.dg/ieee/intrinsics_2.F90
--- 75739,75747 ----
  b15c44040c4efe2f8b119bb3df34f610  gcc/testsuite/gfortran.dg/ieee/ieee_3.f90
  b3ce722b19dcbcf704ca27cdf726ac0f  gcc/testsuite/gfortran.dg/ieee/ieee_4.f90
  d7dcbbbf51853a9d7416a34ec7d5e19b  gcc/testsuite/gfortran.dg/ieee/ieee_5.f90
! 5cd431dfd0e283ccbf63950445cb9c10  gcc/testsuite/gfortran.dg/ieee/ieee_6.f90
  936dd9c26cd1c2d9a4711fd40b1f3d8c  gcc/testsuite/gfortran.dg/ieee/ieee_7.f90
! c0300fa958c7a5a9d045a2bc5b399370  gcc/testsuite/gfortran.dg/ieee/ieee_8.f90
  cb641ee4161b1d608af0011a8dacd2de  gcc/testsuite/gfortran.dg/ieee/ieee_9.f90
  3edf3db930f2307fe20f5876079afacb  gcc/testsuite/gfortran.dg/ieee/intrinsics_1.f90
  838403b2438b8f997d80b7cef8537bf0  gcc/testsuite/gfortran.dg/ieee/intrinsics_2.F90
*************** d42a867b95fcf217643195b33ef27cbf  gcc/te
*** 70870,70875 ****
--- 75784,75790 ----
  b75cb93f87f099ad715aceb9cb7b1bf2  gcc/testsuite/gfortran.dg/implicit_pure_5.f90
  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
  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
*************** e5a418513e079e50ea576e021cf5ad8e  gcc/te
*** 70993,70999 ****
  ffdb4ca68f61f3bd618415335c9c7c21  gcc/testsuite/gfortran.dg/inline_matmul_3.f90
  f95e5fd479c839cfa9cb3ac127ee7584  gcc/testsuite/gfortran.dg/inline_matmul_4.f90
  6cb787ca0dac6ea814c8af4ac7cb8022  gcc/testsuite/gfortran.dg/inline_matmul_5.f90
! 615d63002fbbdecf7e2e14a7ed34b7e2  gcc/testsuite/gfortran.dg/inline_matmul_6.f90
  29a68efddc17a581a9b4e8354fca51b8  gcc/testsuite/gfortran.dg/inline_matmul_7.f90
  451ec0712f3e904483e24d5f999f3572  gcc/testsuite/gfortran.dg/inline_matmul_8.f90
  de25568cf3b7775dc7e7664201aa99c9  gcc/testsuite/gfortran.dg/inline_matmul_9.f90
--- 75908,75914 ----
  ffdb4ca68f61f3bd618415335c9c7c21  gcc/testsuite/gfortran.dg/inline_matmul_3.f90
  f95e5fd479c839cfa9cb3ac127ee7584  gcc/testsuite/gfortran.dg/inline_matmul_4.f90
  6cb787ca0dac6ea814c8af4ac7cb8022  gcc/testsuite/gfortran.dg/inline_matmul_5.f90
! c541d9ad3ee361b6f72d453e411f8256  gcc/testsuite/gfortran.dg/inline_matmul_6.f90
  29a68efddc17a581a9b4e8354fca51b8  gcc/testsuite/gfortran.dg/inline_matmul_7.f90
  451ec0712f3e904483e24d5f999f3572  gcc/testsuite/gfortran.dg/inline_matmul_8.f90
  de25568cf3b7775dc7e7664201aa99c9  gcc/testsuite/gfortran.dg/inline_matmul_9.f90
*************** ae1ac6fa9b32ceaa5c06695b6d03672f  gcc/te
*** 71107,71112 ****
--- 76022,76029 ----
  2fbd77d82929b20a60b8841ee4cad933  gcc/testsuite/gfortran.dg/interface_44.f90
  a09f8edd0f71c7e1df8b1268e1f3611c  gcc/testsuite/gfortran.dg/interface_45.f90
  262d181ac8937fba0c5b14dbc801ec86  gcc/testsuite/gfortran.dg/interface_46.f90
+ f33dc60c1fb7c60416c98e3b6fca20cc  gcc/testsuite/gfortran.dg/interface_47.f90
+ 3ca0d3f0897e634f2024ea5ac5a38f18  gcc/testsuite/gfortran.dg/interface_48.f90
  a954172d62f645dc77c1c91e1be92316  gcc/testsuite/gfortran.dg/interface_5.f90
  a63ff5460cdc25350f43a09d899581db  gcc/testsuite/gfortran.dg/interface_6.f90
  b4d472d28fc0ac004218dc87eb241306  gcc/testsuite/gfortran.dg/interface_7.f90
*************** bb1e6a032a10a9e1ff7d9a5d79c13aa6  gcc/te
*** 71123,71128 ****
--- 76040,76046 ----
  82ab75dd24ad68ccda82fa0944a3a7e3  gcc/testsuite/gfortran.dg/interface_assignment_4.f90
  8cd72f01b62a0fd0fb9a9a71f37ebfba  gcc/testsuite/gfortran.dg/interface_assignment_5.f90
  7dde05ec9b0ec81bc84b8410a2052454  gcc/testsuite/gfortran.dg/interface_assignment_6.f90
+ 601b7f0c453e2157b6b3dfdc1f75d66b  gcc/testsuite/gfortran.dg/interface_assignment_7.f90
  25ebea5c5adf2e49a40b9502c29592d6  gcc/testsuite/gfortran.dg/interface_derived_type_1.f90
  a08d9bbd98c5af88aaa1623767543abb  gcc/testsuite/gfortran.dg/interface_operator_1.f90
  2a631c7e95f8fa6bcf4c05a5bbb5c8af  gcc/testsuite/gfortran.dg/interface_operator_2.f90
*************** bb1617d8ae6e0d580747f7d615fded96  gcc/te
*** 71273,71278 ****
--- 76191,76197 ----
  1ab416b16eeeaf5612e3c0656b73c4d5  gcc/testsuite/gfortran.dg/iostat_3.f90
  04a2d725b724b6a943b8e587f2d0d579  gcc/testsuite/gfortran.dg/iostat_4.f90
  ae3f6e29ad3108163b5c5c6a5f70ef7c  gcc/testsuite/gfortran.dg/ipcp-array-1.f90
+ 741a6cb683b51a7e531dcb1816ed25ec  gcc/testsuite/gfortran.dg/ipcp-array-2.f90
  65578194d2c2e1ef90aec0d448b2955a  gcc/testsuite/gfortran.dg/is_contiguous_1.f90
  ce08d00725a7d8d4e9547e8bf55eaa4b  gcc/testsuite/gfortran.dg/is_contiguous_2.f90
  b6282b55783f0b1b931571f793113587  gcc/testsuite/gfortran.dg/is_contiguous_3.f90
*************** e5dfa7c2f8ba90de7a4892a9bc45ed42  gcc/te
*** 71301,71306 ****
--- 76220,76227 ----
  0c937dd1e8fa965a27f36d585f135251  gcc/testsuite/gfortran.dg/iso_c_binding_rename_2.f03
  67e1b276903384d7446a43925fe3647b  gcc/testsuite/gfortran.dg/iso_c_binding_rename_2_driver.c
  2b43cc5962b2c3f3545ac6cc53f78e0d  gcc/testsuite/gfortran.dg/iso_c_binding_rename_3.f90
+ b389f1a32e81ff22d612b413b7fdb3ad  gcc/testsuite/gfortran.dg/iso_fortran_binding_uint8_array.f90
+ ceb9e1245ddd8717f45bfbd859025ae1  gcc/testsuite/gfortran.dg/iso_fortran_binding_uint8_array_driver.c
  84a50740ea41615ea1822c929d822f56  gcc/testsuite/gfortran.dg/iso_fortran_env_1.f90
  97f70359a4ebf271cf65c225b7542c8a  gcc/testsuite/gfortran.dg/iso_fortran_env_2.f90
  dcf43aa63a8733ded28e4e330d5c91a5  gcc/testsuite/gfortran.dg/iso_fortran_env_3.f90
*************** cc537c18cadc7f751e2b61f5197b80e7  gcc/te
*** 71385,71390 ****
--- 76306,76312 ----
  bceaa8a4fe443dfa65fe359c0d6dc0fe  gcc/testsuite/gfortran.dg/longline.f
  0af1b4d38764adaf6e9835a621ee8cc6  gcc/testsuite/gfortran.dg/longnames.f90
  6c3c532ad4024941faec1e9a3d703f48  gcc/testsuite/gfortran.dg/loop_interchange_1.f90
+ eddf2c0ffcc85c9aa70fb04bb2c9b0b0  gcc/testsuite/gfortran.dg/loop_interchange_2.f
  0406d8eec02d91092a870ce81bd8e4ee  gcc/testsuite/gfortran.dg/loop_versioning_1.f90
  10fc21d05bc71153018118e4e954cb42  gcc/testsuite/gfortran.dg/loop_versioning_10.f90
  e4827fff03e69bbec6a1d4505779f0cd  gcc/testsuite/gfortran.dg/loop_versioning_2.f90
*************** eee4e4b1f7234702e72fe778c0d2621b  gcc/te
*** 71424,71430 ****
  ed6e00c5dc57055959583aa16ab493b8  gcc/testsuite/gfortran.dg/lto/bind_c-5_1.c
  ccbe22a34dbac49b2d95cd730bb61d7e  gcc/testsuite/gfortran.dg/lto/bind_c-6_0.f90
  6d93908070e9d39392e45f8f55d2d583  gcc/testsuite/gfortran.dg/lto/bind_c-6_1.c
! aa5e4c149e08e71f2288bfe1a263a2b8  gcc/testsuite/gfortran.dg/lto/lto.exp
  2e2f1d0362a3798b5cc0cdb704ae7876  gcc/testsuite/gfortran.dg/lto/pr40724_0.f
  b924c46f8e9c528e66113310bd822e92  gcc/testsuite/gfortran.dg/lto/pr40724_1.f
  b310c10bba59712483944d83a656d6cb  gcc/testsuite/gfortran.dg/lto/pr40725_0.f03
--- 76346,76352 ----
  ed6e00c5dc57055959583aa16ab493b8  gcc/testsuite/gfortran.dg/lto/bind_c-5_1.c
  ccbe22a34dbac49b2d95cd730bb61d7e  gcc/testsuite/gfortran.dg/lto/bind_c-6_0.f90
  6d93908070e9d39392e45f8f55d2d583  gcc/testsuite/gfortran.dg/lto/bind_c-6_1.c
! 7628e39678d48fb8a003f27a6a2b7b4a  gcc/testsuite/gfortran.dg/lto/lto.exp
  2e2f1d0362a3798b5cc0cdb704ae7876  gcc/testsuite/gfortran.dg/lto/pr40724_0.f
  b924c46f8e9c528e66113310bd822e92  gcc/testsuite/gfortran.dg/lto/pr40724_1.f
  b310c10bba59712483944d83a656d6cb  gcc/testsuite/gfortran.dg/lto/pr40725_0.f03
*************** a69f0ecf96267c62f30fff01a3b40750  gcc/te
*** 71540,71545 ****
--- 76462,76468 ----
  ffb27b4234a1d98bbd398da249a290e4  gcc/testsuite/gfortran.dg/min_expr.f90
  143aa543e8d65be64d945e78ac62f5e3  gcc/testsuite/gfortran.dg/min_max_conformance.f90
  653e6e7bc45c6a565bcba36f3c235791  gcc/testsuite/gfortran.dg/min_max_conformance_2.f90
+ 9959bc7676d953bd22bd6e66918bec5d  gcc/testsuite/gfortran.dg/min_max_kind.f90
  e88201894b7f8f5345f56f48a5f3651b  gcc/testsuite/gfortran.dg/min_max_optional_1.f90
  b145a156c563a26a90340bfbdab30850  gcc/testsuite/gfortran.dg/min_max_optional_5.f90
  924aa508438783803f6c148f75a50ae1  gcc/testsuite/gfortran.dg/min_max_type.f90
*************** ba58c467fd61638cacc24c25881386b3  gcc/te
*** 71555,71560 ****
--- 76478,76484 ----
  99064efee7a7b2f5a38d1550a8df6085  gcc/testsuite/gfortran.dg/minlocval_4.f90
  eb886d9cef53ce001fb32c92d24edd1f  gcc/testsuite/gfortran.dg/minmax_char_1.f90
  9dd707bee77dfefd21e2f1b0cfae766b  gcc/testsuite/gfortran.dg/minmax_char_2.f90
+ 3f5eff03b2b1af147680563434badc32  gcc/testsuite/gfortran.dg/minmax_char_3.f90
  a8f95eeacd2f66c9e352837a43087369  gcc/testsuite/gfortran.dg/minmax_integer.f90
  397ae6b13abbe18399ca347232107ec7  gcc/testsuite/gfortran.dg/minmaxloc_1.f90
  891aaec3c50013512c01d4e4ed2c01e5  gcc/testsuite/gfortran.dg/minmaxloc_10.f90
*************** dc51be0dd4adb5f65c5a6c3ffad81c8f  gcc/te
*** 71623,71628 ****
--- 76547,76554 ----
  49beb6d05bcf0381e08675884e9499cd  gcc/testsuite/gfortran.dg/module_procedure_2.f90
  c89df1509f43f7048f6def6149786d7c  gcc/testsuite/gfortran.dg/module_procedure_3.f90
  ff8b158eb93372306f0cc191c424b989  gcc/testsuite/gfortran.dg/module_procedure_4.f90
+ c02f6094791b4ed75e6a6726d6c9ae3b  gcc/testsuite/gfortran.dg/module_procedure_5.f90
+ 46b1c7952e9612af8b7313861029f846  gcc/testsuite/gfortran.dg/module_procedure_6.f90
  800437d2b52021485c33cad30f74b0ed  gcc/testsuite/gfortran.dg/module_procedure_double_colon_1.f90
  70e09e7551a5a711743bb28c24171db1  gcc/testsuite/gfortran.dg/module_procedure_double_colon_2.f90
  137d9dce5f451f1b13b66c9e9a9ad24c  gcc/testsuite/gfortran.dg/module_procedure_double_colon_3.f90
*************** ea3c8aeb506b4c30f03aaff80bc6ee7a  gcc/te
*** 71698,71704 ****
  513af3a227e4096c3cc84aa6d904c99a  gcc/testsuite/gfortran.dg/namelist_37.f90
  23a7eba590f0e92297cfe998826840ea  gcc/testsuite/gfortran.dg/namelist_38.f90
  692c5f326734d09e4cc39080826d1bf5  gcc/testsuite/gfortran.dg/namelist_39.f90
! 3edd2195cb059b134e2507cf9d3a1fd5  gcc/testsuite/gfortran.dg/namelist_4.f90
  2cda9deb8eef0ce04452629ebaab569e  gcc/testsuite/gfortran.dg/namelist_40.f90
  991c2beb9a4db0c3b864d7500049c6ea  gcc/testsuite/gfortran.dg/namelist_41.f90
  24af4bdf7b20059ba30b90301a3984f7  gcc/testsuite/gfortran.dg/namelist_42.f90
--- 76624,76630 ----
  513af3a227e4096c3cc84aa6d904c99a  gcc/testsuite/gfortran.dg/namelist_37.f90
  23a7eba590f0e92297cfe998826840ea  gcc/testsuite/gfortran.dg/namelist_38.f90
  692c5f326734d09e4cc39080826d1bf5  gcc/testsuite/gfortran.dg/namelist_39.f90
! cf65f0ee124f55cc70d09e61931263f9  gcc/testsuite/gfortran.dg/namelist_4.f90
  2cda9deb8eef0ce04452629ebaab569e  gcc/testsuite/gfortran.dg/namelist_40.f90
  991c2beb9a4db0c3b864d7500049c6ea  gcc/testsuite/gfortran.dg/namelist_41.f90
  24af4bdf7b20059ba30b90301a3984f7  gcc/testsuite/gfortran.dg/namelist_42.f90
*************** c61ed5cd4078f56dac02eb35cd94fbbc  gcc/te
*** 71758,71763 ****
--- 76684,76691 ----
  ef829c1a33829b47520efa96e8980360  gcc/testsuite/gfortran.dg/namelist_94.f90
  f6900646010877f1bf8da73bad033bbb  gcc/testsuite/gfortran.dg/namelist_95.f90
  b28986ef259fe186d84c0622f1c5f76b  gcc/testsuite/gfortran.dg/namelist_96.f90
+ 19c3d1357394b2399e1ff5d6f9694a51  gcc/testsuite/gfortran.dg/namelist_97.f90
+ a2df4ca61a2b12380764cd69635191f0  gcc/testsuite/gfortran.dg/namelist_98.f90
  843ad75abd3258ea2565083edf16cbc3  gcc/testsuite/gfortran.dg/namelist_args.f90
  b8f12d194aa9b2cfb5214297f897456c  gcc/testsuite/gfortran.dg/namelist_assumed_char.f90
  73de646ecd69b0bf965fecc1ccd64052  gcc/testsuite/gfortran.dg/namelist_blockdata.f
*************** d46e6ca33ad0c6569ce38b09a28782f5  gcc/te
*** 71938,71943 ****
--- 76866,76872 ----
  302ab3504a83b13e3ec7d1096f84ae36  gcc/testsuite/gfortran.dg/parameter_array_ref_2.f90
  23dcadce604501908a5e668b385325f3  gcc/testsuite/gfortran.dg/parameter_array_section_1.f90
  d190e02a8ae85f12d6539440b8df8892  gcc/testsuite/gfortran.dg/parameter_array_section_2.f90
+ 0cbe7ac4ea5db14062703e660fb047d8  gcc/testsuite/gfortran.dg/parameter_data.f90
  20f5555ad18fb82bbee124f3cd547f33  gcc/testsuite/gfortran.dg/parameter_save.f90
  2ab5a027814557bead333edd0da891a1  gcc/testsuite/gfortran.dg/parameter_unused.f90
  510e6ab845e1decc438e4fb90ee836d5  gcc/testsuite/gfortran.dg/parens_1.f90
*************** be693b3847d0256fa77c5e6d96396c97  gcc/te
*** 71975,71986 ****
  d17e376a8cc641dbedaeffcce81d5297  gcc/testsuite/gfortran.dg/pdt_23.f03
  74618f98f612c4722b0e366283ec8ca8  gcc/testsuite/gfortran.dg/pdt_24.f03
  7c4f6f585a57e25f1c6f31ac89e87d40  gcc/testsuite/gfortran.dg/pdt_25.f03
! d3869facbd48cd5e82791bacd1d3302e  gcc/testsuite/gfortran.dg/pdt_26.f03
  f67cfd0ae4d38f1ca5dc8d7f6e954087  gcc/testsuite/gfortran.dg/pdt_27.f03
  7efa911fe665f45456e6943844302ac0  gcc/testsuite/gfortran.dg/pdt_28.f03
  68b10a194ff6797eee8ecb042129b08f  gcc/testsuite/gfortran.dg/pdt_29.f03
  467e7b0f7ffea3a05b9ac591c2ac05ee  gcc/testsuite/gfortran.dg/pdt_3.f03
  1f42496cb72089bef450a6df6a13c299  gcc/testsuite/gfortran.dg/pdt_30.f90
  17fa57111f7b9c176c9f9fdf95c974cf  gcc/testsuite/gfortran.dg/pdt_4.f03
  65d2ad728417ad3174fc1ce2b51a458d  gcc/testsuite/gfortran.dg/pdt_6.f03
  d2c9dae0c6e2385c5712aba8e12a70ba  gcc/testsuite/gfortran.dg/pdt_7.f03
--- 76904,76916 ----
  d17e376a8cc641dbedaeffcce81d5297  gcc/testsuite/gfortran.dg/pdt_23.f03
  74618f98f612c4722b0e366283ec8ca8  gcc/testsuite/gfortran.dg/pdt_24.f03
  7c4f6f585a57e25f1c6f31ac89e87d40  gcc/testsuite/gfortran.dg/pdt_25.f03
! 7182317a2e9d6c03d247c9fb2b50ab74  gcc/testsuite/gfortran.dg/pdt_26.f03
  f67cfd0ae4d38f1ca5dc8d7f6e954087  gcc/testsuite/gfortran.dg/pdt_27.f03
  7efa911fe665f45456e6943844302ac0  gcc/testsuite/gfortran.dg/pdt_28.f03
  68b10a194ff6797eee8ecb042129b08f  gcc/testsuite/gfortran.dg/pdt_29.f03
  467e7b0f7ffea3a05b9ac591c2ac05ee  gcc/testsuite/gfortran.dg/pdt_3.f03
  1f42496cb72089bef450a6df6a13c299  gcc/testsuite/gfortran.dg/pdt_30.f90
+ d586eb557b29a67b9fa981d71d443c8b  gcc/testsuite/gfortran.dg/pdt_31.f03
  17fa57111f7b9c176c9f9fdf95c974cf  gcc/testsuite/gfortran.dg/pdt_4.f03
  65d2ad728417ad3174fc1ce2b51a458d  gcc/testsuite/gfortran.dg/pdt_6.f03
  d2c9dae0c6e2385c5712aba8e12a70ba  gcc/testsuite/gfortran.dg/pdt_7.f03
*************** b825380a4b4b28ec13e27baf423c281f  gcc/te
*** 72229,72234 ****
--- 77159,77166 ----
  3699b0bce4de04a62b5fbcbe73602273  gcc/testsuite/gfortran.dg/pr44735.f90
  b3f13781d906da7a75a40903d63cc1dc  gcc/testsuite/gfortran.dg/pr44882.f90
  9017d8bc0bf36400cadfb36c726cf4f6  gcc/testsuite/gfortran.dg/pr45308.f03
+ 6d647d902e1b0bc28e20c91f39b58279  gcc/testsuite/gfortran.dg/pr45337_1.f90
+ e1e4017b4260a7a1e2add92520ae8d16  gcc/testsuite/gfortran.dg/pr45337_2.f90
  7985b288d5df4b01f30e4783da0f94c0  gcc/testsuite/gfortran.dg/pr45578.f90
  1bd40bda5ad7a3c63474de6b5e34acb4  gcc/testsuite/gfortran.dg/pr45636.f90
  0d4b2c0d29c28b1cd20728559b6a8885  gcc/testsuite/gfortran.dg/pr46190.f90
*************** f3e2e80b3229e8fec07b3263f3453fed  gcc/te
*** 72255,72260 ****
--- 77187,77193 ----
  c990799f48f87a3c6fc164699d2b1c87  gcc/testsuite/gfortran.dg/pr48636-2.f90
  5d28e84349b850c270a16ecd86cc82b2  gcc/testsuite/gfortran.dg/pr48636.f90
  4762590cbaf90296cf135774873215b8  gcc/testsuite/gfortran.dg/pr48757.f
+ ea911c8827cc267711ebc2bc888f011a  gcc/testsuite/gfortran.dg/pr48958.f90
  66ff77107a65ebff7c75bfae7e38e6f6  gcc/testsuite/gfortran.dg/pr49103.f90
  5ad239ce189c063ac8a5f73f48d37684  gcc/testsuite/gfortran.dg/pr49179.f90
  73bdfac4d8e167437515c960a865a9d5  gcc/testsuite/gfortran.dg/pr49308.f90
*************** cc1f32e49ccc36b48a493abb17c42e3a  gcc/te
*** 72280,72285 ****
--- 77213,77219 ----
  9b6c4fc5f0fd6602f5c340829a594cde  gcc/testsuite/gfortran.dg/pr52701.f90
  06c6d9ce5be8e2db5ad7c0ed6d662d81  gcc/testsuite/gfortran.dg/pr52835.f90
  64628ff1500cad617b98f760c944cfcb  gcc/testsuite/gfortran.dg/pr53217.f90
+ 7e0c066a4db021d7b9644d3c4c484441  gcc/testsuite/gfortran.dg/pr53298.f90
  5c39c53d556b3246eead8e21315b7220  gcc/testsuite/gfortran.dg/pr53787.f90
  c8646ca00d10d23022de604a2af8bdf2  gcc/testsuite/gfortran.dg/pr54131.f
  523d7fa9f2338ac58bdf30c676b56938  gcc/testsuite/gfortran.dg/pr54889.f90
*************** d598feb4dba76cbaf492a9ee6686e19a  gcc/te
*** 72330,72335 ****
--- 77264,77270 ----
  2ab32374fe63527656c5652f6804cd06  gcc/testsuite/gfortran.dg/pr63331.f90
  1984d41530f1be811fd36bc981abb1b0  gcc/testsuite/gfortran.dg/pr63514.f90
  603263e08fedbbf88311bc089fe3cc34  gcc/testsuite/gfortran.dg/pr63778.f
+ 2900cd515e8ec5d87cdc865515cfa1ef  gcc/testsuite/gfortran.dg/pr63797.f90
  397b25a42e5d0cf5eca320bdb2909d9c  gcc/testsuite/gfortran.dg/pr63821.f90
  c35d65ea2827d93eaf5b83cc8d96a6f0  gcc/testsuite/gfortran.dg/pr63883.f90
  961f5b3f9101d60209ddc2ff945ac6e6  gcc/testsuite/gfortran.dg/pr64107.f90
*************** fec24ab230452c9c77d3c525bcc23d80  gcc/te
*** 72351,72357 ****
  3264680b057eb38e5a28517d3e49cfac  gcc/testsuite/gfortran.dg/pr66311.f90
  47db6e1bf5af94654f13e645fa846fb1  gcc/testsuite/gfortran.dg/pr66465.f90
  edbd7c48e790b853659ae6687570ec57  gcc/testsuite/gfortran.dg/pr66545_1.f90
! 74f23d2dd345ea2804a91ad76531c953  gcc/testsuite/gfortran.dg/pr66545_2.f90
  cfa8c58e4ebe92d53be4cb3789eeca7c  gcc/testsuite/gfortran.dg/pr66575.f90
  4d4279e091bcead528cc290986c56906  gcc/testsuite/gfortran.dg/pr66725.f90
  ea349b1624eaa3ae8c50ede5626af62b  gcc/testsuite/gfortran.dg/pr66864.f90
--- 77286,77292 ----
  3264680b057eb38e5a28517d3e49cfac  gcc/testsuite/gfortran.dg/pr66311.f90
  47db6e1bf5af94654f13e645fa846fb1  gcc/testsuite/gfortran.dg/pr66465.f90
  edbd7c48e790b853659ae6687570ec57  gcc/testsuite/gfortran.dg/pr66545_1.f90
! f98424e7addfe0a6885f0157a0b70fae  gcc/testsuite/gfortran.dg/pr66545_2.f90
  cfa8c58e4ebe92d53be4cb3789eeca7c  gcc/testsuite/gfortran.dg/pr66575.f90
  4d4279e091bcead528cc290986c56906  gcc/testsuite/gfortran.dg/pr66725.f90
  ea349b1624eaa3ae8c50ede5626af62b  gcc/testsuite/gfortran.dg/pr66864.f90
*************** eea87284cbfbd1719101caddb4ac38a8  gcc/te
*** 72397,72403 ****
  29d463c1b891a0e571c084975617921c  gcc/testsuite/gfortran.dg/pr68544.f90
  139863847705c940567609315eea8334  gcc/testsuite/gfortran.dg/pr68566.f90
  31ac2e9d47442e542327ca97ee352b0a  gcc/testsuite/gfortran.dg/pr68592.f
! 073f594f4ecd427a8718c4569b9ff787  gcc/testsuite/gfortran.dg/pr68627.f
  55c75f66cc73c9bf311237125996574c  gcc/testsuite/gfortran.dg/pr68817.f90
  08ac83e05f38ebf756a253414d9f87b0  gcc/testsuite/gfortran.dg/pr68864.f90
  b9749045f7e8d01ce770bef143077398  gcc/testsuite/gfortran.dg/pr69055.f90
--- 77332,77338 ----
  29d463c1b891a0e571c084975617921c  gcc/testsuite/gfortran.dg/pr68544.f90
  139863847705c940567609315eea8334  gcc/testsuite/gfortran.dg/pr68566.f90
  31ac2e9d47442e542327ca97ee352b0a  gcc/testsuite/gfortran.dg/pr68592.f
! c5d793757b573a30603c532f9c0e3cf1  gcc/testsuite/gfortran.dg/pr68627.f
  55c75f66cc73c9bf311237125996574c  gcc/testsuite/gfortran.dg/pr68817.f90
  08ac83e05f38ebf756a253414d9f87b0  gcc/testsuite/gfortran.dg/pr68864.f90
  b9749045f7e8d01ce770bef143077398  gcc/testsuite/gfortran.dg/pr69055.f90
*************** ad1c20f5706de185c8d1a0e845e5710d  gcc/te
*** 72420,72425 ****
--- 77355,77361 ----
  c718be52c08cbfe5941dc1bb7a50bcb5  gcc/testsuite/gfortran.dg/pr69987.f90
  e3df725d919fbea72dd53c26d3c3fc1b  gcc/testsuite/gfortran.dg/pr70006.f90
  7f656e5a6d13d6ab788f5c3e8fb90572  gcc/testsuite/gfortran.dg/pr70040.f90
+ 1e506f514edb56a9ce1cdd4ec26fb77e  gcc/testsuite/gfortran.dg/pr70070.f90
  9e9bc408643c6665aef0267621e54b9e  gcc/testsuite/gfortran.dg/pr70330.f90
  aa6073708fcde459f6b44a5e294fd6b0  gcc/testsuite/gfortran.dg/pr70409.f90
  2761c4711c65ea8a97d2345710e8bf1e  gcc/testsuite/gfortran.dg/pr70673.f90
*************** d2372677bf556aa9a20df9262af12663  gcc/te
*** 72669,72674 ****
--- 77605,77611 ----
  006a7b298fa54253f86a0ff8cead4333  gcc/testsuite/gfortran.dg/pr91785.f90
  c0a58fa1c0102acb57f7d00d203b5e5a  gcc/testsuite/gfortran.dg/pr91801.f90
  a50919bcdb1d810ce2f68bd6b22ee53b  gcc/testsuite/gfortran.dg/pr91802.f90
+ 46e4d8c152ad48f52b4de65d2ca0fe72  gcc/testsuite/gfortran.dg/pr91862.f90
  3f85d9e4e647aefd279442e5e5868317  gcc/testsuite/gfortran.dg/pr91864.f90
  1bc4d5f0bfdc6bccd2ba1c6fefb4abbc  gcc/testsuite/gfortran.dg/pr91913.f90
  01ee8e553f7a64b04b3a06e2716e084d  gcc/testsuite/gfortran.dg/pr91942.f90
*************** d422d9251e2f720fa41ed649ec3ed4e4  gcc/te
*** 72706,72711 ****
--- 77643,77649 ----
  ad5d9eaa5f8d1c73673f959f766e825d  gcc/testsuite/gfortran.dg/pr93497.f90
  321e671c6e1acf78d716c2076bdf3a00  gcc/testsuite/gfortran.dg/pr93498_1.f90
  fde8604ea120a8ce9b073bf211cdf432  gcc/testsuite/gfortran.dg/pr93498_2.f90
+ 21b8ac4794fea5aabe6be080143c94c1  gcc/testsuite/gfortran.dg/pr93499.f90
  044a867e31d2488aef215034fa209478  gcc/testsuite/gfortran.dg/pr93580.f90
  68f7d2abe5ed9475d5e9114a25471a50  gcc/testsuite/gfortran.dg/pr93600_1.f90
  543493ac9c37f3e29f7d727af1ecad82  gcc/testsuite/gfortran.dg/pr93600_2.f90
*************** b0f8acfae3746c459e5af7bcca222814  gcc/te
*** 72728,72734 ****
--- 77666,77676 ----
  f17ab40b1ca95ac01da77049baa72103  gcc/testsuite/gfortran.dg/pr94329.f90
  b9faba8aac0e0dd38443caeb527db93d  gcc/testsuite/gfortran.dg/pr94397.F90
  16d161f7900dd36eabcbaea6cd9c1b6e  gcc/testsuite/gfortran.dg/pr94708.f90
+ b3aa92652c768e489db71c4bdec58492  gcc/testsuite/gfortran.dg/pr95053.f
+ 4643a453de4a8df5432d833cf8bfa122  gcc/testsuite/gfortran.dg/pr95053_2.f90
+ 9a887ac1c462736f729ec4ec967c8be2  gcc/testsuite/gfortran.dg/pr95053_3.f90
  a6b1d851f4c5b6cfffa8f56c8f9cd150  gcc/testsuite/gfortran.dg/pr95088.f90
+ 4d706dda2f553109876e49a390c1b156  gcc/testsuite/gfortran.dg/pr95089.f90
  81355955ad98611710451ef6e76d9dbe  gcc/testsuite/gfortran.dg/pr95090.f90
  10a1157f7a9fa8f2042a563c98a25914  gcc/testsuite/gfortran.dg/pr95091.f90
  7d3e3457f90590b31740ffdd3a4866a3  gcc/testsuite/gfortran.dg/pr95104.f90
*************** a6b1d851f4c5b6cfffa8f56c8f9cd150  gcc/te
*** 72737,72753 ****
  b9d5894d240b89777d50d53e0cd60929  gcc/testsuite/gfortran.dg/pr95373_1.f90
  f55274affe4c9ad9830b5b95890a0e58  gcc/testsuite/gfortran.dg/pr95373_2.f90
  27db2763cd4b76a729c1caca77615d2b  gcc/testsuite/gfortran.dg/pr95398.f90
  bf06d26cfd17de7f7a1ca3d27181a469  gcc/testsuite/gfortran.dg/pr95500.f90
  957c4b1c6c2a82ac61e92b1200c1f5cc  gcc/testsuite/gfortran.dg/pr95503.f90
  5231d7be8a143a19ea814874ba722093  gcc/testsuite/gfortran.dg/pr95544.f90
  4d7840381b8acfddf9d6d981be248de8  gcc/testsuite/gfortran.dg/pr95585.f90
  378769172a1f4a490bd397114840810b  gcc/testsuite/gfortran.dg/pr95587.f90
  a5c2f3cef142134791933a56c788c163  gcc/testsuite/gfortran.dg/pr95611.f90
  dc8a8dbb9f37b4dd7105669e065e2aeb  gcc/testsuite/gfortran.dg/pr95612.f90
  a5234963084d71f3cbff36fdddbc2a39  gcc/testsuite/gfortran.dg/pr95687.f90
  0b6e1357ba61754bfa53b9ec715e9aa3  gcc/testsuite/gfortran.dg/pr95688.f90
  83b0c584414e4a319a76de802810da35  gcc/testsuite/gfortran.dg/pr95689.f90
! befa70efee1a50434d1f2eef63dcd2be  gcc/testsuite/gfortran.dg/pr95690.f90
  9e1f84d8082ed7be8e9a14e8ff4713bb  gcc/testsuite/gfortran.dg/pr95707.f90
  7dc7dd72d896c5e7c5e3df3a92c93424  gcc/testsuite/gfortran.dg/pr95708.f90
  17933bb3f99b8b553eb0e7141b2dcdb7  gcc/testsuite/gfortran.dg/pr95709.f90
--- 77679,77703 ----
  b9d5894d240b89777d50d53e0cd60929  gcc/testsuite/gfortran.dg/pr95373_1.f90
  f55274affe4c9ad9830b5b95890a0e58  gcc/testsuite/gfortran.dg/pr95373_2.f90
  27db2763cd4b76a729c1caca77615d2b  gcc/testsuite/gfortran.dg/pr95398.f90
+ 258eb533f98697cad8eebc8294e95ee4  gcc/testsuite/gfortran.dg/pr95446.f90
  bf06d26cfd17de7f7a1ca3d27181a469  gcc/testsuite/gfortran.dg/pr95500.f90
  957c4b1c6c2a82ac61e92b1200c1f5cc  gcc/testsuite/gfortran.dg/pr95503.f90
  5231d7be8a143a19ea814874ba722093  gcc/testsuite/gfortran.dg/pr95544.f90
+ 42b37edbbc665179c35ef2c650460dfc  gcc/testsuite/gfortran.dg/pr95584.f90
  4d7840381b8acfddf9d6d981be248de8  gcc/testsuite/gfortran.dg/pr95585.f90
+ cbd7de19bc090fa68a98c9116bddd818  gcc/testsuite/gfortran.dg/pr95586_1.f90
+ 89737d82cfc9e0c9c6221a52beae2405  gcc/testsuite/gfortran.dg/pr95586_2.f90
  378769172a1f4a490bd397114840810b  gcc/testsuite/gfortran.dg/pr95587.f90
  a5c2f3cef142134791933a56c788c163  gcc/testsuite/gfortran.dg/pr95611.f90
  dc8a8dbb9f37b4dd7105669e065e2aeb  gcc/testsuite/gfortran.dg/pr95612.f90
+ c6bed95f7f5351427cec17e55b1c9d6b  gcc/testsuite/gfortran.dg/pr95614_1.f90
+ 6e05aaecf14c57032a625883a94ac1ab  gcc/testsuite/gfortran.dg/pr95614_2.f90
+ f8cd3a1512c58ae5037e5d3d726bfdef  gcc/testsuite/gfortran.dg/pr95614_3.f90
+ 78470b74058530e913079e71c1142783  gcc/testsuite/gfortran.dg/pr95614_4.f90
  a5234963084d71f3cbff36fdddbc2a39  gcc/testsuite/gfortran.dg/pr95687.f90
  0b6e1357ba61754bfa53b9ec715e9aa3  gcc/testsuite/gfortran.dg/pr95688.f90
  83b0c584414e4a319a76de802810da35  gcc/testsuite/gfortran.dg/pr95689.f90
! 4289e7443265ad9859588be917cf602f  gcc/testsuite/gfortran.dg/pr95690.f90
  9e1f84d8082ed7be8e9a14e8ff4713bb  gcc/testsuite/gfortran.dg/pr95707.f90
  7dc7dd72d896c5e7c5e3df3a92c93424  gcc/testsuite/gfortran.dg/pr95708.f90
  17933bb3f99b8b553eb0e7141b2dcdb7  gcc/testsuite/gfortran.dg/pr95709.f90
*************** de07c4c374bce1b1d56411fc426874db  gcc/te
*** 72765,72783 ****
--- 77715,77767 ----
  a14ff0a951de87e6e87ae4eba23ae32e  gcc/testsuite/gfortran.dg/pr95978.f90
  d21234ae551d720040933254256c6861  gcc/testsuite/gfortran.dg/pr95980.f90
  ac524c67dbf5c0b6588328a02f46a124  gcc/testsuite/gfortran.dg/pr95980_2.f90
+ 18491a80af7ea815a2d1049a91942f07  gcc/testsuite/gfortran.dg/pr95981.f90
+ 4cd7e1edd1f016be3c9016b1817d703e  gcc/testsuite/gfortran.dg/pr96038.f90
+ e6acc3eb976952fc47981d6ab4ed7205  gcc/testsuite/gfortran.dg/pr96085.f90
  45d800261f64da91bf2398a00691d7c4  gcc/testsuite/gfortran.dg/pr96086.f90
+ 07cb4ed26cdce5312951d4e23c0ede15  gcc/testsuite/gfortran.dg/pr96099_1.f90
+ 6ed2b45ec17b4aeb641142e2799cfd89  gcc/testsuite/gfortran.dg/pr96099_2.f90
+ 43b9b0a65aabf3911bc6a2d49e46f640  gcc/testsuite/gfortran.dg/pr96102.f90
  62ba5dd0303d84c214429cc5293a10ed  gcc/testsuite/gfortran.dg/pr96312.f90
  7607f1a87517f55c7ef37367d96d802e  gcc/testsuite/gfortran.dg/pr96319.f90
  095dc309204d3d18d412fa126cbd561f  gcc/testsuite/gfortran.dg/pr96325.f90
+ 2b437bc37acea90dc3acda804ecc8af2  gcc/testsuite/gfortran.dg/pr96436_1.f90
+ 2524ffbe2910a6b3473a3c31d7998a36  gcc/testsuite/gfortran.dg/pr96436_10.f90
+ d5903f6b335e4ec014953d7d04a5333d  gcc/testsuite/gfortran.dg/pr96436_2.f90
+ dde1a77e8079263845b0f3cd32842e75  gcc/testsuite/gfortran.dg/pr96436_3.f90
+ 02a8a94ac1a66a3c9a1b93f9c6b284c3  gcc/testsuite/gfortran.dg/pr96436_4.f90
+ 5a404e04f183d1606f19184be398549b  gcc/testsuite/gfortran.dg/pr96436_5.f90
+ bb672f4853167965dbd2fb64d85d3a06  gcc/testsuite/gfortran.dg/pr96436_6.f90
+ aee380fea7e3e2a16dae6bf8d81c92f5  gcc/testsuite/gfortran.dg/pr96436_7.f90
+ 1cb7ddf98a011abb0604916e9800bcd8  gcc/testsuite/gfortran.dg/pr96436_8.f90
+ 99fdd5ccc3fdcab5bddde35aff692ccb  gcc/testsuite/gfortran.dg/pr96436_9.f90
  798f21a71e68a6aa67d9f50ef3f33865  gcc/testsuite/gfortran.dg/pr96486.f90
+ 8756ff45dbdf3f5fe25a965a3ca5d662  gcc/testsuite/gfortran.dg/pr96613.f90
+ d7a218228a728f2f7635fe2201124368  gcc/testsuite/gfortran.dg/pr96711.f90
+ a94ae73a3b6b9628990c54fb08f2950c  gcc/testsuite/gfortran.dg/pr96737.f90
  74a709306836d044b8cd43d035aecdf2  gcc/testsuite/gfortran.dg/pr96859.f90
+ 76f063a5164cc2eff42c50fc9b9989a1  gcc/testsuite/gfortran.dg/pr97036.f90
+ 70cac68f93e5398eb60f3aa67f709e6a  gcc/testsuite/gfortran.dg/pr97095.f
  f219dfba008fc41e9e809107b3498d57  gcc/testsuite/gfortran.dg/pr97272.f90
+ ab042e08fc9ce8ff8f4b87f1cbc12f17  gcc/testsuite/gfortran.dg/pr97500.f90
+ 7b39f97fdf8b99dc0fbe51cf97f48d7b  gcc/testsuite/gfortran.dg/pr97505.f90
+ 7734e6ba54d1565b9eb45fcfa258d1c0  gcc/testsuite/gfortran.dg/pr97673.f90
  64eab9fbabf78a6279318703c2ac81a6  gcc/testsuite/gfortran.dg/pr97768_1.f90
  e9131ae038c1f4f18b0f72da1bf1423e  gcc/testsuite/gfortran.dg/pr97768_2.f90
+ a78afb0368bddc411548d63311098918  gcc/testsuite/gfortran.dg/pr98016.f90
  0103f634279cccfe329c626d7b20e2fa  gcc/testsuite/gfortran.dg/pr98017.f90
+ 30379f7e459be0df7dde3d8fe2ad8502  gcc/testsuite/gfortran.dg/pr98284.f90
+ 661afc7f73f5e470bae7d7efa0a06cbd  gcc/testsuite/gfortran.dg/pr98661.f90
+ 6f14584e7c3845718818a0eab4f992ff  gcc/testsuite/gfortran.dg/pr98974.F90
  ab9d92c634833928d03c56d815ba4f69  gcc/testsuite/gfortran.dg/pr99060.f90
+ c4cc8ded91592083a4019a67d9837e2c  gcc/testsuite/gfortran.dg/pr99112.f90
  2b316ebb5f0c34f4b1c5764c77c3e824  gcc/testsuite/gfortran.dg/pr99204.f90
  c6196744dcddad274ab914969ad9e6d3  gcc/testsuite/gfortran.dg/pr99545.f90
+ d2a694e27e64b57361e7aee533fcd3c3  gcc/testsuite/gfortran.dg/pr99602.f90
+ 59098d6503b66d802b3c688383398c89  gcc/testsuite/gfortran.dg/pr99602a.f90
+ c87315db9f86724d3e3b8f6f8a3e6e52  gcc/testsuite/gfortran.dg/pr99602b.f90
+ 0ee53271eb866a0185bed444745e15c1  gcc/testsuite/gfortran.dg/pr99602c.f90
+ 0ee53271eb866a0185bed444745e15c1  gcc/testsuite/gfortran.dg/pr99602d.f90
  891574fabddfbfea0c1fe4cf0cd69927  gcc/testsuite/gfortran.dg/predcom-1.f
  76cb03b4659cc6b4cd2f072860817262  gcc/testsuite/gfortran.dg/predcom-2.f
  d667c79ea0bad11d2e191cce083c4c1a  gcc/testsuite/gfortran.dg/predict-1.f90
*************** a50ed014f3fd628f8e8e8e09f44f8c0f  gcc/te
*** 72886,72891 ****
--- 77870,77876 ----
  10c589d311b0a73db8c553ec42336631  gcc/testsuite/gfortran.dg/proc_ptr_5.f90
  43ca301c170d61a34b8db85b8fcd1d84  gcc/testsuite/gfortran.dg/proc_ptr_50.f90
  2bdbfb5616cc946bcc711233f9deb135  gcc/testsuite/gfortran.dg/proc_ptr_51.f90
+ a2ab49b1f709afa3cf1c9284d4576fa9  gcc/testsuite/gfortran.dg/proc_ptr_52.f90
  aa07bccd48fbde93e47db111bac1ce8c  gcc/testsuite/gfortran.dg/proc_ptr_6.f90
  3648c097522ae5858550c7d7776afd28  gcc/testsuite/gfortran.dg/proc_ptr_7.c
  fe310c69dfb181cb04f271dad6a3f1d5  gcc/testsuite/gfortran.dg/proc_ptr_7.f90
*************** c273afb240dd8ee8117b49f657c81476  gcc/te
*** 72965,72971 ****
  56206d45c5f13e14b3a1fb529ebdfba0  gcc/testsuite/gfortran.dg/product_init_expr.f03
  8cfd22f83c53cada6279a70564dbbee0  gcc/testsuite/gfortran.dg/product_sum_bounds_1.f90
  1df3bb37479b20de5e1cd736cdffade5  gcc/testsuite/gfortran.dg/prof/dynamic_dispatch_6.f03
! 3593ab3f1ceba2d6844603d119e3dafd  gcc/testsuite/gfortran.dg/prof/prof.exp
  ddf26540873573967a534a14385f92dd  gcc/testsuite/gfortran.dg/program_name_1.f90
  451cb2bde6f52f6e44db85652688fbea  gcc/testsuite/gfortran.dg/promotion.f90
  08bbf4464a0ed5e6cd9955f827a92afa  gcc/testsuite/gfortran.dg/promotion_2.f90
--- 77950,77956 ----
  56206d45c5f13e14b3a1fb529ebdfba0  gcc/testsuite/gfortran.dg/product_init_expr.f03
  8cfd22f83c53cada6279a70564dbbee0  gcc/testsuite/gfortran.dg/product_sum_bounds_1.f90
  1df3bb37479b20de5e1cd736cdffade5  gcc/testsuite/gfortran.dg/prof/dynamic_dispatch_6.f03
! ef6aa54b8cb153774b81ac7f5ea03c10  gcc/testsuite/gfortran.dg/prof/prof.exp
  ddf26540873573967a534a14385f92dd  gcc/testsuite/gfortran.dg/program_name_1.f90
  451cb2bde6f52f6e44db85652688fbea  gcc/testsuite/gfortran.dg/promotion.f90
  08bbf4464a0ed5e6cd9955f827a92afa  gcc/testsuite/gfortran.dg/promotion_2.f90
*************** ddf6a96210acd9846d96c96f4d91e038  gcc/te
*** 72982,72991 ****
  73ab7ba9b0a193e7d3835ba4228e5045  gcc/testsuite/gfortran.dg/protected_9.f90
  9bd44f03cb1f3b37599ac931fdefe6cc  gcc/testsuite/gfortran.dg/ptr-func-1.f90
  b6c22a1a69dfaeda3ed576a61060580d  gcc/testsuite/gfortran.dg/ptr-func-2.f90
  c3fb068a6513a1b586c18e7f98aee0e3  gcc/testsuite/gfortran.dg/ptr_func_assign_1.f08
  1e99e686da2b4f91da550dc5cbd8e4b4  gcc/testsuite/gfortran.dg/ptr_func_assign_2.f08
  deda23d08864e8fd5de581142c84d0c3  gcc/testsuite/gfortran.dg/ptr_func_assign_3.f08
! 389e953b7230302dc01a242926959fa7  gcc/testsuite/gfortran.dg/ptr_func_assign_4.f08
  8610f62acf79505ce9c955532780ae20  gcc/testsuite/gfortran.dg/ptr_func_assign_5.f08
  1bdd54ec3c3cda30429d4442e8a439e5  gcc/testsuite/gfortran.dg/public_private_module.f90
  f8e80e36d7b5c3c5e55ab57d88d798e6  gcc/testsuite/gfortran.dg/public_private_module_10.f90
--- 77967,77977 ----
  73ab7ba9b0a193e7d3835ba4228e5045  gcc/testsuite/gfortran.dg/protected_9.f90
  9bd44f03cb1f3b37599ac931fdefe6cc  gcc/testsuite/gfortran.dg/ptr-func-1.f90
  b6c22a1a69dfaeda3ed576a61060580d  gcc/testsuite/gfortran.dg/ptr-func-2.f90
+ 2878e4bfa1dc2e80db541a4a8304daaf  gcc/testsuite/gfortran.dg/ptr-func-3.f90
  c3fb068a6513a1b586c18e7f98aee0e3  gcc/testsuite/gfortran.dg/ptr_func_assign_1.f08
  1e99e686da2b4f91da550dc5cbd8e4b4  gcc/testsuite/gfortran.dg/ptr_func_assign_2.f08
  deda23d08864e8fd5de581142c84d0c3  gcc/testsuite/gfortran.dg/ptr_func_assign_3.f08
! f19a3e696f77f97e6aa2d83addab4ac4  gcc/testsuite/gfortran.dg/ptr_func_assign_4.f08
  8610f62acf79505ce9c955532780ae20  gcc/testsuite/gfortran.dg/ptr_func_assign_5.f08
  1bdd54ec3c3cda30429d4442e8a439e5  gcc/testsuite/gfortran.dg/public_private_module.f90
  f8e80e36d7b5c3c5e55ab57d88d798e6  gcc/testsuite/gfortran.dg/public_private_module_10.f90
*************** d6c073fe2ac354fc6c2bfe9f8eb2dd4f  gcc/te
*** 73026,73031 ****
--- 78012,78018 ----
  bbc457f79ecb3ee6bdaf1d09fb1347a5  gcc/testsuite/gfortran.dg/random_seed_1.f90
  ace255953fd7471cd3423ebaca9146d4  gcc/testsuite/gfortran.dg/random_seed_2.f90
  cab6cd156d51aaf529ae97e7ec3c39e9  gcc/testsuite/gfortran.dg/random_seed_3.f90
+ fc1ab23e05b9caf661fd9c26cac0277a  gcc/testsuite/gfortran.dg/random_seed_4.f90
  b03cb437c3ed5f6eb016768e491f5ceb  gcc/testsuite/gfortran.dg/rank_1.f90
  0d215cb4a86a28d05ad4e7e8e9beb5bd  gcc/testsuite/gfortran.dg/rank_2.f90
  6384753e9dda7ac542181f79fa8f2d20  gcc/testsuite/gfortran.dg/rank_3.f90
*************** b55b29248fe669c0de9a0a1e0f71dea0  gcc/te
*** 73069,73074 ****
--- 78056,78076 ----
  bdca0b807a5951306c8f20e3d3df1914  gcc/testsuite/gfortran.dg/read_x_eor.f90
  1b60be6299810378b88c2a370caaa752  gcc/testsuite/gfortran.dg/read_x_past.f
  671ac47678505ff69a3ca453e48c9ff0  gcc/testsuite/gfortran.dg/readwrite_unf_direct_eor_1.f90
+ c31138dfa1fbe0f346bd69db7652e3dc  gcc/testsuite/gfortran.dg/real4-10-real8-10.f90
+ 8559023ff1dd1aae96bdd8a6c9638f61  gcc/testsuite/gfortran.dg/real4-10-real8-16.f90
+ 9792cfe8ec39e51991763d27b621b4a3  gcc/testsuite/gfortran.dg/real4-10-real8-4.f90
+ 743d6ded34208ddb6fe1c06efc558ef5  gcc/testsuite/gfortran.dg/real4-10.f90
+ a6e71859be52a7e296b57b55f29a87c3  gcc/testsuite/gfortran.dg/real4-16-real8-10.f90
+ 4a5cccd032c67fae27c3892c0fb5ec60  gcc/testsuite/gfortran.dg/real4-16-real8-16.f90
+ 787ea1105b92d450425bd03b3cffc069  gcc/testsuite/gfortran.dg/real4-16-real8-4.f90
+ 7c39ec33a0b949bf0314d1275f6be225  gcc/testsuite/gfortran.dg/real4-16.f90
+ 322196090feac370fa0113ee899b7e7a  gcc/testsuite/gfortran.dg/real4-8-real8-10.f90
+ ecba52fb7a6beb429e9c6e7b69a976c3  gcc/testsuite/gfortran.dg/real4-8-real8-16.f90
+ 91a7b9a9af23c62f4ddad75e1ed72e68  gcc/testsuite/gfortran.dg/real4-8-real8-4.f90
+ 8f4df3ea06df9673ec1b6c4e8759fece  gcc/testsuite/gfortran.dg/real4-8.f90
+ 932f8f3297749249e424d7a481342975  gcc/testsuite/gfortran.dg/real8-10.f90
+ ddd402ce1068274a6b44a31a1e993660  gcc/testsuite/gfortran.dg/real8-16.f90
+ 956cefc4f801efaa694be9cad75ea8b8  gcc/testsuite/gfortran.dg/real8-4.f90
  35bebc978ac572310c7f145764f70e7b  gcc/testsuite/gfortran.dg/real_compare_1.f90
  02c23070bb4c6c04205728f47c038fc8  gcc/testsuite/gfortran.dg/real_const_1.f
  10fd764faeaec6000b1a390ab78a3e2b  gcc/testsuite/gfortran.dg/real_const_2.f90
*************** d3828a0469af571ee4a9715d5b69ba18  gcc/te
*** 73171,73176 ****
--- 78173,78179 ----
  2872b99cf6c4e5736159d59646eacf73  gcc/testsuite/gfortran.dg/reshape_5.f90
  7f3d8930925f93d0224885fccf19768f  gcc/testsuite/gfortran.dg/reshape_6.f90
  fa9603988fa43c3b4979b2745c515cd4  gcc/testsuite/gfortran.dg/reshape_7.f90
+ 3221ae5d20e5dd3ab4a963d81218121e  gcc/testsuite/gfortran.dg/reshape_8.f90
  c7b463bfe5fc5984c177ad3ceb638178  gcc/testsuite/gfortran.dg/reshape_empty_1.f03
  a427cc5a5e1ff29f34ae42c060001529  gcc/testsuite/gfortran.dg/reshape_order_1.f90
  76cb0afc35b5327c7c7e5d8ddad735c6  gcc/testsuite/gfortran.dg/reshape_order_2.f90
*************** afbbe7a3662a692cb231ca26135afc31  gcc/te
*** 73185,73190 ****
--- 78188,78194 ----
  b60cb27a87581046d44ce97bb381b07e  gcc/testsuite/gfortran.dg/reshape_zerosize_1.f90
  fc86ba2e4ab1d9fa02cd4b46197f62b8  gcc/testsuite/gfortran.dg/reshape_zerosize_2.f90
  e1605517999212e457fdfb0dd09cd81f  gcc/testsuite/gfortran.dg/reshape_zerosize_3.f90
+ 8fbd4a4c1ec9e5df869b6b91a4c78c06  gcc/testsuite/gfortran.dg/reshape_zerosize_4.f90
  f39d7669eca2c6b465340ae2f336d83f  gcc/testsuite/gfortran.dg/restricted_expression_1.f90
  ee4f324a68696b1259fc4e0034a3f686  gcc/testsuite/gfortran.dg/restricted_expression_2.f90
  ecf3cbf334096b6668127b767e5755b6  gcc/testsuite/gfortran.dg/restricted_expression_3.f90
*************** b7f0fac05667f630e8f9b90aebe1fea4  gcc/te
*** 73248,73253 ****
--- 78252,78258 ----
  b7f688acbe6b27032e2d16f367317b58  gcc/testsuite/gfortran.dg/select_rank_2.f90
  de48eaee117c9656a2db00a7ffbe9cb9  gcc/testsuite/gfortran.dg/select_rank_3.f90
  0eea4aff70c2008ccc3720a5ea3d8ef8  gcc/testsuite/gfortran.dg/select_rank_4.f90
+ 47b685d5206776c0ac8e9595eecd3af1  gcc/testsuite/gfortran.dg/select_rank_5.f90
  e91693e025c4186322babf06bd1ed7d5  gcc/testsuite/gfortran.dg/select_type_1.f03
  cfc1f17ea1421c22ece9a1d3936945cc  gcc/testsuite/gfortran.dg/select_type_10.f03
  e7fc4e45d93d73096eb5455e0afc91c2  gcc/testsuite/gfortran.dg/select_type_11.f03
*************** cd8c016f6ead596119f334940e6d58e4  gcc/te
*** 73293,73298 ****
--- 78298,78304 ----
  fd6ab0a5e316e2999bc498f35a3c0877  gcc/testsuite/gfortran.dg/select_type_48.f90
  4030940822c0b2a93cef17754637d715  gcc/testsuite/gfortran.dg/select_type_49.f90
  652809f8153234254b8b67a7efca979e  gcc/testsuite/gfortran.dg/select_type_5.f03
+ c49dfaa1a2a6089d06b0254006e229bf  gcc/testsuite/gfortran.dg/select_type_50.f90
  d4874fed6108821dfa28ab998af7855a  gcc/testsuite/gfortran.dg/select_type_6.f03
  3acc63d3709ace8561c2455ee8125fbc  gcc/testsuite/gfortran.dg/select_type_7.f03
  701c50cf2ae8ae92625bdf57c4ff5f6f  gcc/testsuite/gfortran.dg/select_type_8.f03
*************** c6f31959a6f27a049ee01954f0a811f0  gcc/te
*** 73310,73316 ****
  768c7a5a7ac507eb3c4fef8d48f0a08b  gcc/testsuite/gfortran.dg/semicolon_free.f90
  c137ead9ed9a3cbd4ca5f75d50965b1c  gcc/testsuite/gfortran.dg/semicolon_free_2.f90
  e5ae2b5b89173ed8361161ef10e352e2  gcc/testsuite/gfortran.dg/sequence_types_1.f90
! cd908f2e51ce36e1d1deeca7c6ee72f6  gcc/testsuite/gfortran.dg/set_vm_limit.c
  8c21b488e7773e67f9472b6a064868b9  gcc/testsuite/gfortran.dg/shape_1.f90
  83165f49617d33a60724f58032240b93  gcc/testsuite/gfortran.dg/shape_2.f90
  3c6dfb31a52f344f631d36f369e069bf  gcc/testsuite/gfortran.dg/shape_3.f90
--- 78316,78322 ----
  768c7a5a7ac507eb3c4fef8d48f0a08b  gcc/testsuite/gfortran.dg/semicolon_free.f90
  c137ead9ed9a3cbd4ca5f75d50965b1c  gcc/testsuite/gfortran.dg/semicolon_free_2.f90
  e5ae2b5b89173ed8361161ef10e352e2  gcc/testsuite/gfortran.dg/sequence_types_1.f90
! df7acd1342733a419754eb5cbcbc9a3f  gcc/testsuite/gfortran.dg/set_vm_limit.c
  8c21b488e7773e67f9472b6a064868b9  gcc/testsuite/gfortran.dg/shape_1.f90
  83165f49617d33a60724f58032240b93  gcc/testsuite/gfortran.dg/shape_2.f90
  3c6dfb31a52f344f631d36f369e069bf  gcc/testsuite/gfortran.dg/shape_3.f90
*************** caa7da29771aad612f545bdeb544b4c9  gcc/te
*** 73468,73473 ****
--- 78474,78480 ----
  5cdebe330092a8119284be48c532d8d9  gcc/testsuite/gfortran.dg/structure_constructor_14.f90
  a8c69bca898ff29ba3a6ae2924078fa7  gcc/testsuite/gfortran.dg/structure_constructor_15.f90
  25b14e6e8851bd84a6960c3b9ce1be37  gcc/testsuite/gfortran.dg/structure_constructor_16.f90
+ 3dbdb30cf91d1bfe2aefcf7e2101376b  gcc/testsuite/gfortran.dg/structure_constructor_17.f90
  34b1847b506e1397548db8e0aa2a5dee  gcc/testsuite/gfortran.dg/structure_constructor_2.f03
  b4cea5ac2c6cc89ab88ca3d7673f1483  gcc/testsuite/gfortran.dg/structure_constructor_3.f03
  cf05250e492fd4f294f0298ffb5c8bdb  gcc/testsuite/gfortran.dg/structure_constructor_4.f03
*************** b48b0b0bccb7566825a45154da80da66  gcc/te
*** 73517,73522 ****
--- 78524,78530 ----
  83b134baa29f5debbbf70eaa30934d43  gcc/testsuite/gfortran.dg/subref_array_pointer_4.f90
  7fc0a7591f51fb7799e1c7218a08b473  gcc/testsuite/gfortran.dg/subroutine_as_type.f90
  71dffcb6221f7e2e83d5145dc8cb6398  gcc/testsuite/gfortran.dg/substr_1.f90
+ b1e9e988b182ce4ee733b3faaad8454b  gcc/testsuite/gfortran.dg/substr_10.f90
  26d39d8e4442b239b8381f23828d8c08  gcc/testsuite/gfortran.dg/substr_2.f
  dccf53db514265c48f2c92d1e6aa8319  gcc/testsuite/gfortran.dg/substr_3.f
  6d054e85164109252d8cb0e433ff57ad  gcc/testsuite/gfortran.dg/substr_4.f
*************** dccf53db514265c48f2c92d1e6aa8319  gcc/te
*** 73524,73529 ****
--- 78532,78538 ----
  6fc9f98159d986738e731d5b07a7109b  gcc/testsuite/gfortran.dg/substr_6.f90
  5aacec7f3b63a41c71f1f83e8d5bcdb0  gcc/testsuite/gfortran.dg/substr_7.f90
  3149d14be2bfd57fd4b2dbd5c1c8ebaa  gcc/testsuite/gfortran.dg/substr_8.f90
+ e3400ad1b7ab61f1cdd7fd15102819e1  gcc/testsuite/gfortran.dg/substr_9.f90
  acc5d5ef0b41f88cee2142a7f82c4fe1  gcc/testsuite/gfortran.dg/substr_alloc_string_comp_1.f90
  d70c4e1e8f42a46a15e94a00e17aa3c6  gcc/testsuite/gfortran.dg/substr_simplify.f90
  a925dc24dc88f988a2c3d72d6db706b6  gcc/testsuite/gfortran.dg/substring_equivalence.f90
*************** c5c095a1207e8ebb9df3221cce7dd889  gcc/te
*** 73793,73799 ****
  7e7a7ae9debf426cb9a72de5784be0f1  gcc/testsuite/gfortran.dg/unlimited_polymorphic_29.f90
  9416e6463a32e0db92b1430a5ece704c  gcc/testsuite/gfortran.dg/unlimited_polymorphic_3.f03
  260aa02b581b990fd7887506c5bb6013  gcc/testsuite/gfortran.dg/unlimited_polymorphic_30.f03
! f7fdb7045e386353df96d89a123001ce  gcc/testsuite/gfortran.dg/unlimited_polymorphic_31.f03
  b6a9d39af548692185921a711ee7653a  gcc/testsuite/gfortran.dg/unlimited_polymorphic_32.f03
  27f9d22da25fab9449a6d82ad7501184  gcc/testsuite/gfortran.dg/unlimited_polymorphic_4.f03
  f272bdc78ed6796b164ff55bff0c5aae  gcc/testsuite/gfortran.dg/unlimited_polymorphic_5.f90
--- 78802,78808 ----
  7e7a7ae9debf426cb9a72de5784be0f1  gcc/testsuite/gfortran.dg/unlimited_polymorphic_29.f90
  9416e6463a32e0db92b1430a5ece704c  gcc/testsuite/gfortran.dg/unlimited_polymorphic_3.f03
  260aa02b581b990fd7887506c5bb6013  gcc/testsuite/gfortran.dg/unlimited_polymorphic_30.f03
! 2ea3bb8b224120f1160eb2534f30fadc  gcc/testsuite/gfortran.dg/unlimited_polymorphic_31.f03
  b6a9d39af548692185921a711ee7653a  gcc/testsuite/gfortran.dg/unlimited_polymorphic_32.f03
  27f9d22da25fab9449a6d82ad7501184  gcc/testsuite/gfortran.dg/unlimited_polymorphic_4.f03
  f272bdc78ed6796b164ff55bff0c5aae  gcc/testsuite/gfortran.dg/unlimited_polymorphic_5.f90
*************** a5bacc6abd14312805d91c2c53d4d15e  gcc/te
*** 73817,73823 ****
  71259a734476392fd9bd4328063ab4bd  gcc/testsuite/gfortran.dg/use_12.f90
  4fea03e3aefdee14f32f96947e3173a6  gcc/testsuite/gfortran.dg/use_13.f90
  02d37ad899915ac342daefcded6da39a  gcc/testsuite/gfortran.dg/use_14.f90
! e6162ed32133772ed718025467840a2b  gcc/testsuite/gfortran.dg/use_15.f90
  d62d0339c456b157f5fc35d29c279441  gcc/testsuite/gfortran.dg/use_16.f90
  54a1d7edd2a86a5b4b136fecf18e7a52  gcc/testsuite/gfortran.dg/use_17.f90
  2391055bfcc19504801cb22811f2801c  gcc/testsuite/gfortran.dg/use_18.f90
--- 78826,78832 ----
  71259a734476392fd9bd4328063ab4bd  gcc/testsuite/gfortran.dg/use_12.f90
  4fea03e3aefdee14f32f96947e3173a6  gcc/testsuite/gfortran.dg/use_13.f90
  02d37ad899915ac342daefcded6da39a  gcc/testsuite/gfortran.dg/use_14.f90
! 9c111bcdb9a629e3e74f86b4c0eb24df  gcc/testsuite/gfortran.dg/use_15.f90
  d62d0339c456b157f5fc35d29c279441  gcc/testsuite/gfortran.dg/use_16.f90
  54a1d7edd2a86a5b4b136fecf18e7a52  gcc/testsuite/gfortran.dg/use_17.f90
  2391055bfcc19504801cb22811f2801c  gcc/testsuite/gfortran.dg/use_18.f90
*************** e0681ebf1cc0d7c0c6333d4894f4bb3d  gcc/te
*** 73921,73926 ****
--- 78930,78937 ----
  726b4cde834cb3dc1ab0ada4c8388762  gcc/testsuite/gfortran.dg/value_tests_f03.f90
  17cda9ae919cf95b0f148e50a888a6fb  gcc/testsuite/gfortran.dg/variable_parameter.f90
  6955f4b4c2942cbbeef05b640bfbe5fe  gcc/testsuite/gfortran.dg/vax_structure_1.f90
+ a4a40dfa54475d3aef79ace11bd49427  gcc/testsuite/gfortran.dg/vect/O3-bb-slp-1.f
+ 5a91d82e185e92f0f07255424bfe1445  gcc/testsuite/gfortran.dg/vect/O3-bb-slp-2.f
  2275410732e79dcfc00faf303cb53d17  gcc/testsuite/gfortran.dg/vect/O3-pr36119.f90
  1454ba871ddfcd5aa0d4ee0bb7396904  gcc/testsuite/gfortran.dg/vect/O3-pr39595.f
  711b74ce954f9e1413a8488fd57dc7c0  gcc/testsuite/gfortran.dg/vect/O3-pr49957.f
*************** a2d04ed105569f8d74d2d9e79dff01be  gcc/te
*** 73955,73961 ****
  63413dbca67ac6969910f878f258af40  gcc/testsuite/gfortran.dg/vect/pr52580.f
  2a9c0c068208d3e070d9de9ee9c7f322  gcc/testsuite/gfortran.dg/vect/pr60510.f
  0bc81b88699fb163be2b934a787aab50  gcc/testsuite/gfortran.dg/vect/pr61171.f
! 6f2ea640c75070bee29b6c46e6ab584b  gcc/testsuite/gfortran.dg/vect/pr62283-2.f
  193bdf53d1fc554853e00fcc30d9841c  gcc/testsuite/gfortran.dg/vect/pr62283.f
  e3ed6ec2719e9380031e3e22af66563e  gcc/testsuite/gfortran.dg/vect/pr69466.f90
  e908da4224e8c1e801b93e3fde2381b1  gcc/testsuite/gfortran.dg/vect/pr69882.f90
--- 78966,78972 ----
  63413dbca67ac6969910f878f258af40  gcc/testsuite/gfortran.dg/vect/pr52580.f
  2a9c0c068208d3e070d9de9ee9c7f322  gcc/testsuite/gfortran.dg/vect/pr60510.f
  0bc81b88699fb163be2b934a787aab50  gcc/testsuite/gfortran.dg/vect/pr61171.f
! f5cef46789d501f4e899fb0e273be1c5  gcc/testsuite/gfortran.dg/vect/pr62283-2.f
  193bdf53d1fc554853e00fcc30d9841c  gcc/testsuite/gfortran.dg/vect/pr62283.f
  e3ed6ec2719e9380031e3e22af66563e  gcc/testsuite/gfortran.dg/vect/pr69466.f90
  e908da4224e8c1e801b93e3fde2381b1  gcc/testsuite/gfortran.dg/vect/pr69882.f90
*************** abf68e470c0aa7bc77cac4f589082522  gcc/te
*** 73970,73990 ****
  34153245fea2ed8b978b0ee75953c440  gcc/testsuite/gfortran.dg/vect/pr89535.f90
  dc982a49827f5055ffa6a7d91963e2ed  gcc/testsuite/gfortran.dg/vect/pr90681.f
  30bb06d3ec7b6bbd2829fe43a222c391  gcc/testsuite/gfortran.dg/vect/pr90913.f90
  27c1f08a8fbc15e2c64f90e0761a9b7f  gcc/testsuite/gfortran.dg/vect/pr96920.f90
  0e65ff4a3d90f2b73a5088d94b53586a  gcc/testsuite/gfortran.dg/vect/vect-1.f90
  e968451822432df6fb4987063a84f380  gcc/testsuite/gfortran.dg/vect/vect-2.f90
  efd1f1f270b2c6b9006463ae5b59cdde  gcc/testsuite/gfortran.dg/vect/vect-3.f90
! 3e2c0f6adb16e4dc0d11dcec010edb9c  gcc/testsuite/gfortran.dg/vect/vect-4.f90
  77e860291c0cd09650e64c6e95dbd7c9  gcc/testsuite/gfortran.dg/vect/vect-5.f90
  85e276d35cb7a8b2c21db0e98b73186b  gcc/testsuite/gfortran.dg/vect/vect-6.f
  c92f16f306f4e92e783e01428ccd23b3  gcc/testsuite/gfortran.dg/vect/vect-7.f90
  46b49fba2ec5f26969cddc20dc871cb3  gcc/testsuite/gfortran.dg/vect/vect-8-epilogue.F90
! d6a91e2139fac9bad85b26b0f170e576  gcc/testsuite/gfortran.dg/vect/vect-8.f90
  9e3ba50dd73757cc5b6e9d6265e4ff1a  gcc/testsuite/gfortran.dg/vect/vect-9.f90
  3a21d8125c0cd02a232eac625ca5cbf0  gcc/testsuite/gfortran.dg/vect/vect-alias-check-1.F90
  943be5f26b034cab4a8d80ed72f35e29  gcc/testsuite/gfortran.dg/vect/vect-do-concurrent-1.f90
  51d61a0ffbe2e176d92badb55eaf6889  gcc/testsuite/gfortran.dg/vect/vect-gems.f90
! 1fcf839c98c674da87d6a8c6e7a05d14  gcc/testsuite/gfortran.dg/vect/vect.exp
  5020f9773f3c21b86ac1fe3e513943a0  gcc/testsuite/gfortran.dg/vector_subscript_1.f90
  0833fb55cdacc085a113140aa1d94458  gcc/testsuite/gfortran.dg/vector_subscript_2.f90
  08ce83b9015973faf30ecdfdba12cbd9  gcc/testsuite/gfortran.dg/vector_subscript_3.f90
--- 78981,79009 ----
  34153245fea2ed8b978b0ee75953c440  gcc/testsuite/gfortran.dg/vect/pr89535.f90
  dc982a49827f5055ffa6a7d91963e2ed  gcc/testsuite/gfortran.dg/vect/pr90681.f
  30bb06d3ec7b6bbd2829fe43a222c391  gcc/testsuite/gfortran.dg/vect/pr90913.f90
+ 9b89faef0780576e75749da9e8cca8c1  gcc/testsuite/gfortran.dg/vect/pr95403.f
  27c1f08a8fbc15e2c64f90e0761a9b7f  gcc/testsuite/gfortran.dg/vect/pr96920.f90
+ d708f7d3b29227b5778b290053f0f4f4  gcc/testsuite/gfortran.dg/vect/pr97761.f90
+ 377d9b61dd661969492b076138fcf6ba  gcc/testsuite/gfortran.dg/vect/pr99656.f90
+ 95b9b5bd3377844278f5e6e92c8d6d16  gcc/testsuite/gfortran.dg/vect/pr99721.f90
+ 40292475ba534c526200febe0a45bd28  gcc/testsuite/gfortran.dg/vect/pr99746.f90
+ 7a235fd99dbc4b3b2760cce7c0ac8e52  gcc/testsuite/gfortran.dg/vect/pr99807.f90
+ f69087e660df29be9a73753898194e74  gcc/testsuite/gfortran.dg/vect/pr99825.f90
+ 4a6f490f0bcea47d701c2b0f92873dc3  gcc/testsuite/gfortran.dg/vect/pr99924.f90
  0e65ff4a3d90f2b73a5088d94b53586a  gcc/testsuite/gfortran.dg/vect/vect-1.f90
  e968451822432df6fb4987063a84f380  gcc/testsuite/gfortran.dg/vect/vect-2.f90
  efd1f1f270b2c6b9006463ae5b59cdde  gcc/testsuite/gfortran.dg/vect/vect-3.f90
! f352be717d51cf3ddda8f5bdc93437f4  gcc/testsuite/gfortran.dg/vect/vect-4.f90
  77e860291c0cd09650e64c6e95dbd7c9  gcc/testsuite/gfortran.dg/vect/vect-5.f90
  85e276d35cb7a8b2c21db0e98b73186b  gcc/testsuite/gfortran.dg/vect/vect-6.f
  c92f16f306f4e92e783e01428ccd23b3  gcc/testsuite/gfortran.dg/vect/vect-7.f90
  46b49fba2ec5f26969cddc20dc871cb3  gcc/testsuite/gfortran.dg/vect/vect-8-epilogue.F90
! a4ef9741110cdce67ca1112b05a446ed  gcc/testsuite/gfortran.dg/vect/vect-8.f90
  9e3ba50dd73757cc5b6e9d6265e4ff1a  gcc/testsuite/gfortran.dg/vect/vect-9.f90
  3a21d8125c0cd02a232eac625ca5cbf0  gcc/testsuite/gfortran.dg/vect/vect-alias-check-1.F90
  943be5f26b034cab4a8d80ed72f35e29  gcc/testsuite/gfortran.dg/vect/vect-do-concurrent-1.f90
  51d61a0ffbe2e176d92badb55eaf6889  gcc/testsuite/gfortran.dg/vect/vect-gems.f90
! 4cb85d0a02206d170562a53b7f853e0e  gcc/testsuite/gfortran.dg/vect/vect.exp
  5020f9773f3c21b86ac1fe3e513943a0  gcc/testsuite/gfortran.dg/vector_subscript_1.f90
  0833fb55cdacc085a113140aa1d94458  gcc/testsuite/gfortran.dg/vector_subscript_2.f90
  08ce83b9015973faf30ecdfdba12cbd9  gcc/testsuite/gfortran.dg/vector_subscript_3.f90
*************** b60b1e83048adf872f1f5827680dc3ed  gcc/te
*** 74175,74181 ****
  82775aea043bb1c46d8cb089803279f4  gcc/testsuite/gfortran.fortran-torture/compile/ambig.f90
  1c29630fad991e385f1ac4b63afd3e59  gcc/testsuite/gfortran.fortran-torture/compile/arrayio.f90
  bb59bc612e4ff3905614ceeae7d89150  gcc/testsuite/gfortran.fortran-torture/compile/bergervoet2.f90
! bf45fbbdeb43509e26dc8a4605abaae1  gcc/testsuite/gfortran.fortran-torture/compile/compile.exp
  fc5b8a207174c37582b953f18f8271a5  gcc/testsuite/gfortran.fortran-torture/compile/complex_1.f90
  d34063f5c0cc449ee1e78199c2bc37d9  gcc/testsuite/gfortran.fortran-torture/compile/contained_1.f90
  beef214f45f74ba36c7a5a4a3952c926  gcc/testsuite/gfortran.fortran-torture/compile/contained_2.f90
--- 79194,79200 ----
  82775aea043bb1c46d8cb089803279f4  gcc/testsuite/gfortran.fortran-torture/compile/ambig.f90
  1c29630fad991e385f1ac4b63afd3e59  gcc/testsuite/gfortran.fortran-torture/compile/arrayio.f90
  bb59bc612e4ff3905614ceeae7d89150  gcc/testsuite/gfortran.fortran-torture/compile/bergervoet2.f90
! b8c1a4a55f2ce36cda453c54cf2bf437  gcc/testsuite/gfortran.fortran-torture/compile/compile.exp
  fc5b8a207174c37582b953f18f8271a5  gcc/testsuite/gfortran.fortran-torture/compile/complex_1.f90
  d34063f5c0cc449ee1e78199c2bc37d9  gcc/testsuite/gfortran.fortran-torture/compile/contained_1.f90
  beef214f45f74ba36c7a5a4a3952c926  gcc/testsuite/gfortran.fortran-torture/compile/contained_2.f90
*************** b34b25b967cd77639e123317e2df451f  gcc/te
*** 74323,74329 ****
  746215f07864dfaf08683e1db2ac8960  gcc/testsuite/gfortran.fortran-torture/execute/equiv_4.f90
  39b975ad31741b72a1b9d129fa059ceb  gcc/testsuite/gfortran.fortran-torture/execute/equiv_5.f
  4cbdd3408a64145bd29410441a85f54c  gcc/testsuite/gfortran.fortran-torture/execute/equiv_init_1.f90
! 0fef5a65e5556c3e2470c831a9aaaf84  gcc/testsuite/gfortran.fortran-torture/execute/execute.exp
  afd19f923c3c5e466e7fe619afc1d851  gcc/testsuite/gfortran.fortran-torture/execute/f2_edit_1.f90
  f144f87ad152dd4ece29d0f8c7a9ca87  gcc/testsuite/gfortran.fortran-torture/execute/forall.f90
  b48fbbc2cab88879e5ac6c732a077df4  gcc/testsuite/gfortran.fortran-torture/execute/forall_1.f90
--- 79342,79348 ----
  746215f07864dfaf08683e1db2ac8960  gcc/testsuite/gfortran.fortran-torture/execute/equiv_4.f90
  39b975ad31741b72a1b9d129fa059ceb  gcc/testsuite/gfortran.fortran-torture/execute/equiv_5.f
  4cbdd3408a64145bd29410441a85f54c  gcc/testsuite/gfortran.fortran-torture/execute/equiv_init_1.f90
! 835b6e80584bd6f63206b512ef74d2b9  gcc/testsuite/gfortran.fortran-torture/execute/execute.exp
  afd19f923c3c5e466e7fe619afc1d851  gcc/testsuite/gfortran.fortran-torture/execute/f2_edit_1.f90
  f144f87ad152dd4ece29d0f8c7a9ca87  gcc/testsuite/gfortran.fortran-torture/execute/forall.f90
  b48fbbc2cab88879e5ac6c732a077df4  gcc/testsuite/gfortran.fortran-torture/execute/forall_1.f90
*************** d233a79e52e83a661c83db520be5206a  gcc/te
*** 74533,74538 ****
--- 79552,79558 ----
  573e0aa9f5968dfcd455303e78b25690  gcc/testsuite/gnat.dg/addr13.adb
  17abc70bea104a9136ca97fbbecd59e1  gcc/testsuite/gnat.dg/addr13.ads
  afc2d0740417b768e50304dd00736f2d  gcc/testsuite/gnat.dg/addr14.adb
+ c0e2a6f6efd6cb849766f7f23c8c4ede  gcc/testsuite/gnat.dg/addr15.adb
  366da53c725e1844de730a8a405744a1  gcc/testsuite/gnat.dg/addr16.adb
  fa30999f07321d64be8f7a7adbc01309  gcc/testsuite/gnat.dg/addr16_pkg.ads
  f0a1bdb8415a236b8bd801950f678f6e  gcc/testsuite/gnat.dg/addr2.adb
*************** f8344b081e967989f14352059795ecbd  gcc/te
*** 74595,74601 ****
--- 79615,79624 ----
  fe38ea50ed77b6e055f6ecabf97a5885  gcc/testsuite/gnat.dg/aggr26.adb
  1914703363c1120af4f64b039b3abcf6  gcc/testsuite/gnat.dg/aggr27.adb
  36665770e94aca5744c8ae4e47608bb7  gcc/testsuite/gnat.dg/aggr28.adb
+ 417149a605af3637b290ec16184346a2  gcc/testsuite/gnat.dg/aggr29.adb
  674ef7d1ee7e35c007365502de84ded5  gcc/testsuite/gnat.dg/aggr3.adb
+ 26bbb4b239255e447bbe6c32ccb6f5f3  gcc/testsuite/gnat.dg/aggr30.adb
+ 3c5d0783cbdc3181db59d9f27a9e1a2d  gcc/testsuite/gnat.dg/aggr30.ads
  35168b6dce753ec723ff0dcf21d977d0  gcc/testsuite/gnat.dg/aggr4.adb
  a12ec40d7ebc1ab08b05b0d1f6a57bc4  gcc/testsuite/gnat.dg/aggr7.adb
  39fba9f7f4870b15e9c37bcf9a358858  gcc/testsuite/gnat.dg/aggr8.adb
*************** af95daf4c42c1fd400248f7258d15d28  gcc/te
*** 74702,74708 ****
--- 79725,79736 ----
  8e2365a6073ec2ebc4a54f892613f61e  gcc/testsuite/gnat.dg/array38.adb
  f97cb7387fa876d6e3c6dd45ea0304c6  gcc/testsuite/gnat.dg/array38_pkg.adb
  14c84147f4712ef6b6c74ef76227eac6  gcc/testsuite/gnat.dg/array38_pkg.ads
+ ec73dca3cd6dbdbbb1a5ca144dd08e15  gcc/testsuite/gnat.dg/array39.adb
+ e110eae53d3035f169e4bbd1eed40420  gcc/testsuite/gnat.dg/array39_pkg.adb
+ 487d689ae4ef12f1804ce77bdd50ba9b  gcc/testsuite/gnat.dg/array39_pkg.ads
  b1368ee1737ab5c2b00482e137e1a378  gcc/testsuite/gnat.dg/array4.adb
+ ddc701fbb7f57d0a25d28560146d5ed9  gcc/testsuite/gnat.dg/array40.adb
+ ff8d86344e3cf4b355165a6b1650c479  gcc/testsuite/gnat.dg/array40_pkg.ads
  3d29182d58b83e2662df3d9534b80184  gcc/testsuite/gnat.dg/array5.adb
  a9a0725729c4b56fd51ac830fd3cdc3a  gcc/testsuite/gnat.dg/array6.adb
  c428e267874da1cd58bd5e0392d75d62  gcc/testsuite/gnat.dg/array7.adb
*************** d3c3ea85a2d542a334f54886bc6d0e68  gcc/te
*** 74711,74716 ****
--- 79739,79746 ----
  9e79ec4077e627de01176e9d19ff0054  gcc/testsuite/gnat.dg/array9.adb
  4e4a2cd2383fcedd1f7f9e094a9733f7  gcc/testsuite/gnat.dg/array_bounds_test.adb
  7d28bdf32624ddc6639c523e6b6ecf60  gcc/testsuite/gnat.dg/array_bounds_test2.adb
+ fbf2baeefb07efc06ee77c746e19b7f4  gcc/testsuite/gnat.dg/asan1.adb
+ a7f8d001aae87201749d21ce47619ea7  gcc/testsuite/gnat.dg/asan1_pkg.ads
  8948877471c68fe86ccf6282900b9af2  gcc/testsuite/gnat.dg/aspect1.adb
  4a70c931234068ef2afba5910fcc720e  gcc/testsuite/gnat.dg/aspect1_horizontal.adb
  a67f0655a8efc79fa7a524f4cd2bbd9c  gcc/testsuite/gnat.dg/aspect1_horizontal.ads
*************** a67f0655a8efc79fa7a524f4cd2bbd9c  gcc/te
*** 74718,74724 ****
  809272c3bc190f2245ba67854be227a3  gcc/testsuite/gnat.dg/aspect2.adb
  9ce7cb5154d6d19771f2f6e3f7c50445  gcc/testsuite/gnat.dg/aspect2.ads
  52657f6a50de3dd615f1839a7c6e5b3d  gcc/testsuite/gnat.dg/assert.ads
! 80ad90db652eb7009d6b74cdc65a3059  gcc/testsuite/gnat.dg/assert1.adb
  ba831c8e8dc16c9353beffc0629d43c8  gcc/testsuite/gnat.dg/assert2.adb
  b25df54e6ff4f499b4cb2a211e4dc1b9  gcc/testsuite/gnat.dg/assert2.ads
  901c2a4e56bc44727c7fcbe432f29783  gcc/testsuite/gnat.dg/assertion_policy1.adb
--- 79748,79754 ----
  809272c3bc190f2245ba67854be227a3  gcc/testsuite/gnat.dg/aspect2.adb
  9ce7cb5154d6d19771f2f6e3f7c50445  gcc/testsuite/gnat.dg/aspect2.ads
  52657f6a50de3dd615f1839a7c6e5b3d  gcc/testsuite/gnat.dg/assert.ads
! 1ea6fda5871054a824ca1544e7a47985  gcc/testsuite/gnat.dg/assert1.adb
  ba831c8e8dc16c9353beffc0629d43c8  gcc/testsuite/gnat.dg/assert2.adb
  b25df54e6ff4f499b4cb2a211e4dc1b9  gcc/testsuite/gnat.dg/assert2.ads
  901c2a4e56bc44727c7fcbe432f29783  gcc/testsuite/gnat.dg/assertion_policy1.adb
*************** e98528b30f94b17e98951c75ff2f6251  gcc/te
*** 74843,74848 ****
--- 79873,79879 ----
  9cbc290471e06abc05e336b232bde375  gcc/testsuite/gnat.dg/concat2.adb
  9df4e7b1e0bfcf70197b5eaf8a258a05  gcc/testsuite/gnat.dg/concat2.ads
  1f47fb3cb04a282d85c8cf1f4841db1b  gcc/testsuite/gnat.dg/concat3.adb
+ 39dd8eee371b4cc2282e363f171ded9b  gcc/testsuite/gnat.dg/concat4.adb
  3e7f9a04f4a3706e783661ca30556322  gcc/testsuite/gnat.dg/concat_length.adb
  1e8fc5e809cc52079a69599d76a132e4  gcc/testsuite/gnat.dg/cond_expr1.adb
  6bf0919f37bc57eb62cf0adbb6d3aed5  gcc/testsuite/gnat.dg/cond_expr2.adb
*************** bdbed4522cd1ea6afd66ca02217b3bc8  gcc/te
*** 74899,74905 ****
  f5445d4481e7be7a6aa89b05d4ba765e  gcc/testsuite/gnat.dg/debug13.adb
  bb7c02e58e40d63edfc3b849db48ec73  gcc/testsuite/gnat.dg/debug13.ads
  1732a264df55c5557e5416ff3d8ddb5b  gcc/testsuite/gnat.dg/debug14.adb
! 7fc18df892e4b5567410a2ea772773bd  gcc/testsuite/gnat.dg/debug15.adb
  8c481e5a0e1ba1c11baee252a8f52edc  gcc/testsuite/gnat.dg/debug2.adb
  d5b17f0a1969c63659288225fe45fac0  gcc/testsuite/gnat.dg/debug2.ads
  fdb068baf7b1989ef7f7e9285dfd7ad6  gcc/testsuite/gnat.dg/debug2_pkg.ads
--- 79930,79936 ----
  f5445d4481e7be7a6aa89b05d4ba765e  gcc/testsuite/gnat.dg/debug13.adb
  bb7c02e58e40d63edfc3b849db48ec73  gcc/testsuite/gnat.dg/debug13.ads
  1732a264df55c5557e5416ff3d8ddb5b  gcc/testsuite/gnat.dg/debug14.adb
! e1ca248827437f98f76bd1ce1db43628  gcc/testsuite/gnat.dg/debug16.adb
  8c481e5a0e1ba1c11baee252a8f52edc  gcc/testsuite/gnat.dg/debug2.adb
  d5b17f0a1969c63659288225fe45fac0  gcc/testsuite/gnat.dg/debug2.ads
  fdb068baf7b1989ef7f7e9285dfd7ad6  gcc/testsuite/gnat.dg/debug2_pkg.ads
*************** dc7b3ebaa7caa13b60d6eb8a552ad48d  gcc/te
*** 74952,74958 ****
  85b3a46622ba8d5651550a9dda49adf3  gcc/testsuite/gnat.dg/derived_type6.ads
  f5b545465e83981c80e3d7c01214b904  gcc/testsuite/gnat.dg/dflt_init_cond.adb
  2fbb62544d92c6af0d0b351a83112cd0  gcc/testsuite/gnat.dg/dflt_init_cond_pkg.ads
! e73ee155657b37d21020188b6985499b  gcc/testsuite/gnat.dg/dg.exp
  ca2670a9b24cc9d0cf8852e656a65373  gcc/testsuite/gnat.dg/dimensions.adb
  f28a5b105f7585427df0167f61bf7240  gcc/testsuite/gnat.dg/dimensions.ads
  40bad3acc354f2f19a9bb73c10fd1db8  gcc/testsuite/gnat.dg/dimensions2.adb
--- 79983,79989 ----
  85b3a46622ba8d5651550a9dda49adf3  gcc/testsuite/gnat.dg/derived_type6.ads
  f5b545465e83981c80e3d7c01214b904  gcc/testsuite/gnat.dg/dflt_init_cond.adb
  2fbb62544d92c6af0d0b351a83112cd0  gcc/testsuite/gnat.dg/dflt_init_cond_pkg.ads
! e6edab46f21ddc83ce061780c642290b  gcc/testsuite/gnat.dg/dg.exp
  ca2670a9b24cc9d0cf8852e656a65373  gcc/testsuite/gnat.dg/dimensions.adb
  f28a5b105f7585427df0167f61bf7240  gcc/testsuite/gnat.dg/dimensions.ads
  40bad3acc354f2f19a9bb73c10fd1db8  gcc/testsuite/gnat.dg/dimensions2.adb
*************** cef4cbf18f95208dd8c0b2e5062761c5  gcc/te
*** 75230,75236 ****
  d0689d7d2df99b8a9bdfa7461addbca6  gcc/testsuite/gnat.dg/g_tables.adb
  42a1a84a561d8513a3ddb03c1873df86  gcc/testsuite/gnat.dg/g_tables.ads
  e0d843a3b7f190ee400816b919cc276e  gcc/testsuite/gnat.dg/gcov/check.adb
! cfaebd828189d4a4b6c40a939a58007e  gcc/testsuite/gnat.dg/gcov/gcov.exp
  98054bebce7ebc5df6d4a6a4178bf29c  gcc/testsuite/gnat.dg/gen_disp.adb
  8ce8ee3ebe319b0b6252b4307844d6c5  gcc/testsuite/gnat.dg/gen_disp.ads
  914ecd342404a7e78b567e0eeef3fbc8  gcc/testsuite/gnat.dg/gen_formal_pkg.adb
--- 80261,80267 ----
  d0689d7d2df99b8a9bdfa7461addbca6  gcc/testsuite/gnat.dg/g_tables.adb
  42a1a84a561d8513a3ddb03c1873df86  gcc/testsuite/gnat.dg/g_tables.ads
  e0d843a3b7f190ee400816b919cc276e  gcc/testsuite/gnat.dg/gcov/check.adb
! 8698c162af607b5e54c7625bd73cf985  gcc/testsuite/gnat.dg/gcov/gcov.exp
  98054bebce7ebc5df6d4a6a4178bf29c  gcc/testsuite/gnat.dg/gen_disp.adb
  8ce8ee3ebe319b0b6252b4307844d6c5  gcc/testsuite/gnat.dg/gen_disp.ads
  914ecd342404a7e78b567e0eeef3fbc8  gcc/testsuite/gnat.dg/gen_formal_pkg.adb
*************** df3810c329cf6c4fc775f811f650fd05  gcc/te
*** 75461,75467 ****
  5ec9e3b42ec828a5e961141a9c15abc6  gcc/testsuite/gnat.dg/interface4.adb
  4ea810b2bf5451e32fde620271a2c14d  gcc/testsuite/gnat.dg/interface5.adb
  6810418a130517a92522712d8319f630  gcc/testsuite/gnat.dg/interface5.ads
! aa7596f687d88e3723604d82a2449e52  gcc/testsuite/gnat.dg/interface6.adb
  31a396f675ff4c4fb76302b8e4e03a54  gcc/testsuite/gnat.dg/interface7.adb
  4e92b9a71457afe531307cc507c20728  gcc/testsuite/gnat.dg/interface8.adb
  a692548bb83dd8b8ec88d5f8ad231979  gcc/testsuite/gnat.dg/interface8.ads
--- 80492,80498 ----
  5ec9e3b42ec828a5e961141a9c15abc6  gcc/testsuite/gnat.dg/interface4.adb
  4ea810b2bf5451e32fde620271a2c14d  gcc/testsuite/gnat.dg/interface5.adb
  6810418a130517a92522712d8319f630  gcc/testsuite/gnat.dg/interface5.ads
! e421277f70696ac9f8b16bae43acacd6  gcc/testsuite/gnat.dg/interface6.adb
  31a396f675ff4c4fb76302b8e4e03a54  gcc/testsuite/gnat.dg/interface7.adb
  4e92b9a71457afe531307cc507c20728  gcc/testsuite/gnat.dg/interface8.adb
  a692548bb83dd8b8ec88d5f8ad231979  gcc/testsuite/gnat.dg/interface8.ads
*************** a63e39620b381f6ea7fc83386a5e8315  gcc/te
*** 75496,75502 ****
  e7ab63f9e341747341cd59cc455e9eb8  gcc/testsuite/gnat.dg/layered_instance.adb
  a2248cfaf3771f39e6d45b1afb9da177  gcc/testsuite/gnat.dg/lhs_view_convert.adb
  d0632446daff57b57587f3e36521dfb4  gcc/testsuite/gnat.dg/limited1.adb
! 751fad56ff7cde374f8da9da6e7ff66b  gcc/testsuite/gnat.dg/limited1_inner.adb
  f1c011294fd68bbdeb38f2751e521f01  gcc/testsuite/gnat.dg/limited1_inner.ads
  73f28c9a5c1287722cf5cccf8da54fa1  gcc/testsuite/gnat.dg/limited1_outer.adb
  c21d3201ad30618a95fd30e1fa0ea1af  gcc/testsuite/gnat.dg/limited1_outer.ads
--- 80527,80533 ----
  e7ab63f9e341747341cd59cc455e9eb8  gcc/testsuite/gnat.dg/layered_instance.adb
  a2248cfaf3771f39e6d45b1afb9da177  gcc/testsuite/gnat.dg/lhs_view_convert.adb
  d0632446daff57b57587f3e36521dfb4  gcc/testsuite/gnat.dg/limited1.adb
! fa94dfad15e263435fe5b6ba5cb95c45  gcc/testsuite/gnat.dg/limited1_inner.adb
  f1c011294fd68bbdeb38f2751e521f01  gcc/testsuite/gnat.dg/limited1_inner.ads
  73f28c9a5c1287722cf5cccf8da54fa1  gcc/testsuite/gnat.dg/limited1_outer.adb
  c21d3201ad30618a95fd30e1fa0ea1af  gcc/testsuite/gnat.dg/limited1_outer.ads
*************** b2c6a8547ac3efa831979b4975ef33b1  gcc/te
*** 75692,75698 ****
  ec5174f5eb7e22af9fa23d73ad0075f9  gcc/testsuite/gnat.dg/modular4_pkg.ads
  27f795fb00b6536decf032a3dcd43d9c  gcc/testsuite/gnat.dg/modular5.adb
  61a04711fa680f727ee8c57bfca88845  gcc/testsuite/gnat.dg/modular6.adb
! 15cb37b89822d85d7a7e476fd0d05e55  gcc/testsuite/gnat.dg/multfixed.adb
  0319138ba4f12bf9f077c79cd927482b  gcc/testsuite/gnat.dg/mutable1.adb
  8c947c1ef6ea09019579e5b04702d6b1  gcc/testsuite/gnat.dg/my_env_versioned_value_set_g.ads
  9415013a8f3e34d127ab642035fa8305  gcc/testsuite/gnat.dg/named_test.adb
--- 80723,80729 ----
  ec5174f5eb7e22af9fa23d73ad0075f9  gcc/testsuite/gnat.dg/modular4_pkg.ads
  27f795fb00b6536decf032a3dcd43d9c  gcc/testsuite/gnat.dg/modular5.adb
  61a04711fa680f727ee8c57bfca88845  gcc/testsuite/gnat.dg/modular6.adb
! 868ea3b8b303eab7987eaace19fb12de  gcc/testsuite/gnat.dg/multfixed.adb
  0319138ba4f12bf9f077c79cd927482b  gcc/testsuite/gnat.dg/mutable1.adb
  8c947c1ef6ea09019579e5b04702d6b1  gcc/testsuite/gnat.dg/my_env_versioned_value_set_g.ads
  9415013a8f3e34d127ab642035fa8305  gcc/testsuite/gnat.dg/named_test.adb
*************** f5670924cbe38dea2978fb9627ca0163  gcc/te
*** 75735,75741 ****
  fe3289c7493b99d78ab8ea45e1f6b8f9  gcc/testsuite/gnat.dg/noreturn5.adb
  5ac9ac562fddac1d8385d31dd03fee42  gcc/testsuite/gnat.dg/noreturn5.ads
  d812f5af7231c1621f94947c52dbe4f9  gcc/testsuite/gnat.dg/normalize_pathname.adb
! 4bc2c394a21020e8c9725519ba294558  gcc/testsuite/gnat.dg/not_null.adb
  210a12989054c999f3b84ea7db7a0319  gcc/testsuite/gnat.dg/notnot.adb
  fd6b6434bf4bb75351ff151928d73c02  gcc/testsuite/gnat.dg/null_check.adb
  27a91517900479e55d7649f35f1a28fc  gcc/testsuite/gnat.dg/null_pointer_deref1.adb
--- 80766,80772 ----
  fe3289c7493b99d78ab8ea45e1f6b8f9  gcc/testsuite/gnat.dg/noreturn5.adb
  5ac9ac562fddac1d8385d31dd03fee42  gcc/testsuite/gnat.dg/noreturn5.ads
  d812f5af7231c1621f94947c52dbe4f9  gcc/testsuite/gnat.dg/normalize_pathname.adb
! 654c051c931d5c8265d3bae9d7fa982e  gcc/testsuite/gnat.dg/not_null.adb
  210a12989054c999f3b84ea7db7a0319  gcc/testsuite/gnat.dg/notnot.adb
  fd6b6434bf4bb75351ff151928d73c02  gcc/testsuite/gnat.dg/null_check.adb
  27a91517900479e55d7649f35f1a28fc  gcc/testsuite/gnat.dg/null_pointer_deref1.adb
*************** dc3fcd8303025f22a76f999c81489c5e  gcc/te
*** 75760,75771 ****
  25c78da41d8fbd316e3a1f8e9603539a  gcc/testsuite/gnat.dg/oconst5.adb
  e2f2776f93dfc0c08efd2cba869292d8  gcc/testsuite/gnat.dg/oconst5.ads
  be5803453205216364ce8b4a9f0356a8  gcc/testsuite/gnat.dg/old_errors.ads
- 0e501ba35e3baf307ce7eae3948b9e7e  gcc/testsuite/gnat.dg/openacc1.adb
  02b04a1bcbc91f013644c665394a541a  gcc/testsuite/gnat.dg/opt1.adb
  c36f023977042ca971d3f58ec44a533a  gcc/testsuite/gnat.dg/opt1.ads
  f9299b514c5c25293c940907f5a4059d  gcc/testsuite/gnat.dg/opt10.adb
  5d50fb38b1ab84c39760906cb103c522  gcc/testsuite/gnat.dg/opt10_pkg.ads
! 557362e77434b7b8d9d6fff08cb69a39  gcc/testsuite/gnat.dg/opt11.adb
  53160585b3a5d820b653e1e0d5f14c75  gcc/testsuite/gnat.dg/opt11.ads
  0ecfecb7cdec59e764b4d1588e562ce3  gcc/testsuite/gnat.dg/opt12.adb
  72c3b17bb6f9660ef255a74a583de996  gcc/testsuite/gnat.dg/opt12_pkg.adb
--- 80791,80801 ----
  25c78da41d8fbd316e3a1f8e9603539a  gcc/testsuite/gnat.dg/oconst5.adb
  e2f2776f93dfc0c08efd2cba869292d8  gcc/testsuite/gnat.dg/oconst5.ads
  be5803453205216364ce8b4a9f0356a8  gcc/testsuite/gnat.dg/old_errors.ads
  02b04a1bcbc91f013644c665394a541a  gcc/testsuite/gnat.dg/opt1.adb
  c36f023977042ca971d3f58ec44a533a  gcc/testsuite/gnat.dg/opt1.ads
  f9299b514c5c25293c940907f5a4059d  gcc/testsuite/gnat.dg/opt10.adb
  5d50fb38b1ab84c39760906cb103c522  gcc/testsuite/gnat.dg/opt10_pkg.ads
! 603264d4afdd2fd2174ea9c4cf4653ed  gcc/testsuite/gnat.dg/opt11.adb
  53160585b3a5d820b653e1e0d5f14c75  gcc/testsuite/gnat.dg/opt11.ads
  0ecfecb7cdec59e764b4d1588e562ce3  gcc/testsuite/gnat.dg/opt12.adb
  72c3b17bb6f9660ef255a74a583de996  gcc/testsuite/gnat.dg/opt12_pkg.adb
*************** b7ca4abc01a37a16fef857ccd27a5270  gcc/te
*** 75830,75836 ****
  cd1cd547ffd6a15fd43fea30ececc910  gcc/testsuite/gnat.dg/opt38.adb
  c7cef5a4232a339afa288abd7cb369dc  gcc/testsuite/gnat.dg/opt38_pkg.adb
  ba03504b0b64d5f70065d0214412516e  gcc/testsuite/gnat.dg/opt38_pkg.ads
! 0b7c57138d911bc58eab93243b8e4628  gcc/testsuite/gnat.dg/opt39.adb
  65e20f998d483941d92a34b07b482d10  gcc/testsuite/gnat.dg/opt3_pkg.ads
  e98c04ac385dbd0581c1f5fa108caf6b  gcc/testsuite/gnat.dg/opt4.adb
  b01ea6b67501d6d62a0d6e7adb46db12  gcc/testsuite/gnat.dg/opt40.adb
--- 80860,80866 ----
  cd1cd547ffd6a15fd43fea30ececc910  gcc/testsuite/gnat.dg/opt38.adb
  c7cef5a4232a339afa288abd7cb369dc  gcc/testsuite/gnat.dg/opt38_pkg.adb
  ba03504b0b64d5f70065d0214412516e  gcc/testsuite/gnat.dg/opt38_pkg.ads
! b68f7c21a43857201360263c12f05b62  gcc/testsuite/gnat.dg/opt39.adb
  65e20f998d483941d92a34b07b482d10  gcc/testsuite/gnat.dg/opt3_pkg.ads
  e98c04ac385dbd0581c1f5fa108caf6b  gcc/testsuite/gnat.dg/opt4.adb
  b01ea6b67501d6d62a0d6e7adb46db12  gcc/testsuite/gnat.dg/opt40.adb
*************** fe74354507a5e664cd6533def9371a61  gcc/te
*** 75929,75941 ****
--- 80959,80994 ----
  9201017bb386f368c8eb5837a204d5af  gcc/testsuite/gnat.dg/opt81.ads
  3536f6770e938163b6233918a10fc8d9  gcc/testsuite/gnat.dg/opt82.adb
  ae0ee987514ba63388710e2ab6a91249  gcc/testsuite/gnat.dg/opt82_pkg.ads
+ e86b82bd08fa73aa8d24004682ec809c  gcc/testsuite/gnat.dg/opt83.adb
+ 875222e3483835d1f0fb0bfd484ec591  gcc/testsuite/gnat.dg/opt84.adb
+ 963e76d0ccc2bdc35f9fa0db3af4eae7  gcc/testsuite/gnat.dg/opt85.adb
+ 667fdabf93122d284dde470136fe1107  gcc/testsuite/gnat.dg/opt85.ads
+ 8b64c4332556fa1d7cb19496adb918ad  gcc/testsuite/gnat.dg/opt86_pkg.ads
+ 6a7dea88ffb2ed5eeaa80853adafa529  gcc/testsuite/gnat.dg/opt86a.adb
+ 4bbf5c61f61df016e2374b25bc0d3506  gcc/testsuite/gnat.dg/opt86b.adb
+ 514f3dfc223350571323148f7bf29bec  gcc/testsuite/gnat.dg/opt86c.adb
+ 1d201c5783c616086494803c51718f8d  gcc/testsuite/gnat.dg/opt87.adb
+ a0fac56d98360b71de6a1db30d0a699a  gcc/testsuite/gnat.dg/opt87_pkg.adb
+ 59662a9f8296b184e5eb3c94b4af7fb5  gcc/testsuite/gnat.dg/opt87_pkg.ads
+ b94f5555054d151f1f033dc012fad535  gcc/testsuite/gnat.dg/opt88.adb
  5c9ac8fc2380ea95d9431427ae62875f  gcc/testsuite/gnat.dg/opt89.adb
  08a96545787824356817a3169afee7d9  gcc/testsuite/gnat.dg/opt8_pkg.ads
  ba51f2b4ff3e6536d2d6f2acd9443799  gcc/testsuite/gnat.dg/opt9.adb
+ 67b997543142f5d6147188466f51afd8  gcc/testsuite/gnat.dg/opt90a.adb
+ 1b136a95215f963e63eb79887d5a5059  gcc/testsuite/gnat.dg/opt90a_pkg.ads
+ 11883348caf73e2c80967a6c293437ad  gcc/testsuite/gnat.dg/opt90b.adb
+ dddcfcd68fff686fca0cfb86f5bd79f9  gcc/testsuite/gnat.dg/opt90b_pkg.ads
+ 317a827a721d0bd5a27b2331bed77d0a  gcc/testsuite/gnat.dg/opt90c.adb
+ aead6f11bd0735701d4fcc4a61149bd5  gcc/testsuite/gnat.dg/opt90c_pkg.ads
+ c36d801da52f8df05aca12e93d865bd6  gcc/testsuite/gnat.dg/opt90d.adb
+ 313dd0c86e01e16e361f94460b182d24  gcc/testsuite/gnat.dg/opt90d_pkg.ads
+ d5305b90a6e1f29f91fe289b54e12121  gcc/testsuite/gnat.dg/opt90e.adb
+ 627dc0fcb3035b06378404a1c35685a4  gcc/testsuite/gnat.dg/opt90e_pkg.ads
  e2ce9edab47e6f8e17958fffd5af3935  gcc/testsuite/gnat.dg/opt91.adb
  be0183a31250d1a9cd930fe7ea1857b6  gcc/testsuite/gnat.dg/opt91.ads
  2772233d10666bc3de7ad2c90d19b518  gcc/testsuite/gnat.dg/opt91_pkg.adb
  e610e24aa950be5f6c35dbb10447cb02  gcc/testsuite/gnat.dg/opt91_pkg.ads
+ 55332ccdfe2a512b2d23726156ad7fa9  gcc/testsuite/gnat.dg/opt92.adb
  feb376d91f5514b647b1ad61b025d828  gcc/testsuite/gnat.dg/opt9_pkg.ads
  0a9bf4dbd445ef99721501592f66cea2  gcc/testsuite/gnat.dg/others1.adb
  9f62042ad37161c5182cb92d70d0b24d  gcc/testsuite/gnat.dg/out_param.adb
*************** a4f83930fb87bd91e5bb42db50c8d318  gcc/te
*** 76095,76101 ****
  c0f68295e348ad36a641d8edeff2cfc6  gcc/testsuite/gnat.dg/prot9_pkg1.ads
  4cd15245a3399652865b3c6a9daf87ad  gcc/testsuite/gnat.dg/prot9_pkg2.ads
  8b9d81034e4a3268cbc4aae764775fd9  gcc/testsuite/gnat.dg/prot_def.adb
! 006231aea775ec72d89b16ccf48f7cd5  gcc/testsuite/gnat.dg/protected_func.adb
  f010d95f371dbccc1be8c51d48eb4db5  gcc/testsuite/gnat.dg/protected_func.ads
  ce1ec39ed99de56ced45d8b9f86bc85a  gcc/testsuite/gnat.dg/protected_null.adb
  e6da11fd6483154a13820d7470de4efb  gcc/testsuite/gnat.dg/protected_self_ref1.adb
--- 81148,81154 ----
  c0f68295e348ad36a641d8edeff2cfc6  gcc/testsuite/gnat.dg/prot9_pkg1.ads
  4cd15245a3399652865b3c6a9daf87ad  gcc/testsuite/gnat.dg/prot9_pkg2.ads
  8b9d81034e4a3268cbc4aae764775fd9  gcc/testsuite/gnat.dg/prot_def.adb
! ca3a0803b3696ed0b41f6d8cbb5b962b  gcc/testsuite/gnat.dg/protected_func.adb
  f010d95f371dbccc1be8c51d48eb4db5  gcc/testsuite/gnat.dg/protected_func.ads
  ce1ec39ed99de56ced45d8b9f86bc85a  gcc/testsuite/gnat.dg/protected_null.adb
  e6da11fd6483154a13820d7470de4efb  gcc/testsuite/gnat.dg/protected_self_ref1.adb
*************** e51121d34de5e0d22067137864528c8a  gcc/te
*** 76144,76149 ****
--- 81197,81204 ----
  9f1706cae9fa586117f384a49828327e  gcc/testsuite/gnat.dg/renaming13.adb
  19cb3bfe2b9e07f9eae8661672601e6e  gcc/testsuite/gnat.dg/renaming14.adb
  72d48cda9550a7251bbd90fa56eff48e  gcc/testsuite/gnat.dg/renaming15.adb
+ b08ade850be1a0a80325c1a93e9c9043  gcc/testsuite/gnat.dg/renaming16.adb
+ 0278c64b189f758651064d6a8aeac4db  gcc/testsuite/gnat.dg/renaming16_pkg.ads
  3afb13f37cfc3455f0f0be64d053892f  gcc/testsuite/gnat.dg/renaming2.adb
  1a954da0b1e7e11673319b058eb82146  gcc/testsuite/gnat.dg/renaming3.adb
  9c415422ce59266c9af89e8d3fd1df74  gcc/testsuite/gnat.dg/renaming4.ads
*************** fa5a9d20428f7e69fd9afabb504a1fc9  gcc/te
*** 76172,76178 ****
  f4cb36696f5188439daf41f2a4cc086f  gcc/testsuite/gnat.dg/rep_clause6.adb
  b3eb6bd3129013554203f86996b79200  gcc/testsuite/gnat.dg/rep_clause6.ads
  3909b926d5e373abc8a1124ba29d8525  gcc/testsuite/gnat.dg/rep_clause7.adb
! a1d5b95b127b6b4ef1a68b0f156471c0  gcc/testsuite/gnat.dg/rep_clause8.adb
  6dc9c9b4ac11be5034b4789e83939ddb  gcc/testsuite/gnat.dg/rep_clause9.adb
  09242df2e3a405bf99465bb2edbbad2a  gcc/testsuite/gnat.dg/requeue1.adb
  77a2deb117bbc1c83d9ac56811a530d4  gcc/testsuite/gnat.dg/return1.adb
--- 81227,81233 ----
  f4cb36696f5188439daf41f2a4cc086f  gcc/testsuite/gnat.dg/rep_clause6.adb
  b3eb6bd3129013554203f86996b79200  gcc/testsuite/gnat.dg/rep_clause6.ads
  3909b926d5e373abc8a1124ba29d8525  gcc/testsuite/gnat.dg/rep_clause7.adb
! cfdb41b11ca7ca16e98d066480d48a96  gcc/testsuite/gnat.dg/rep_clause8.adb
  6dc9c9b4ac11be5034b4789e83939ddb  gcc/testsuite/gnat.dg/rep_clause9.adb
  09242df2e3a405bf99465bb2edbbad2a  gcc/testsuite/gnat.dg/requeue1.adb
  77a2deb117bbc1c83d9ac56811a530d4  gcc/testsuite/gnat.dg/return1.adb
*************** f00eab7afc57f66659bba49ca66507fc  gcc/te
*** 76204,76211 ****
  7524bfd6d1bb231661891ecbbe387abd  gcc/testsuite/gnat.dg/sets1.adb
  092dd86aeeb0b9fb8c0e85a23a64a5d3  gcc/testsuite/gnat.dg/shift1.adb
  f436e9958bc39e5210d7c4f0686fcc84  gcc/testsuite/gnat.dg/show_deques_priority.adb
  a9fa51c016ec2f28dd1ba172222535d8  gcc/testsuite/gnat.dg/size_attribute.adb
! 5cbf89ca5320ad90ac2f76b658b3aa02  gcc/testsuite/gnat.dg/size_clause1.adb
  9a2b784b89d064e84e5e7e706547f446  gcc/testsuite/gnat.dg/sizetype1.adb
  a1af1dd50d771c8d4d73a0c335bbc063  gcc/testsuite/gnat.dg/sizetype2.adb
  25e39e892c3b89098a15b2a974bfb833  gcc/testsuite/gnat.dg/sizetype3.adb
--- 81259,81268 ----
  7524bfd6d1bb231661891ecbbe387abd  gcc/testsuite/gnat.dg/sets1.adb
  092dd86aeeb0b9fb8c0e85a23a64a5d3  gcc/testsuite/gnat.dg/shift1.adb
  f436e9958bc39e5210d7c4f0686fcc84  gcc/testsuite/gnat.dg/show_deques_priority.adb
+ 5aedc0737da2c4b3c0b71c05e61d1ae4  gcc/testsuite/gnat.dg/sin_cos.adb
+ 2a8c679c8bc430cbeb10f30a4c8277a1  gcc/testsuite/gnat.dg/sin_cos.ads
  a9fa51c016ec2f28dd1ba172222535d8  gcc/testsuite/gnat.dg/size_attribute.adb
! 0139e1bc7ddda729d749d148ff43ba7b  gcc/testsuite/gnat.dg/size_clause1.adb
  9a2b784b89d064e84e5e7e706547f446  gcc/testsuite/gnat.dg/sizetype1.adb
  a1af1dd50d771c8d4d73a0c335bbc063  gcc/testsuite/gnat.dg/sizetype2.adb
  25e39e892c3b89098a15b2a974bfb833  gcc/testsuite/gnat.dg/sizetype3.adb
*************** bbb4e7088abfdf62de2491eecfa9a2c1  gcc/te
*** 76392,76398 ****
  83f6ed8426bf3c235d3e76e033539037  gcc/testsuite/gnat.dg/specs/rep_clause2.ads
  749d5204adcafb2956aa2c33bea820ed  gcc/testsuite/gnat.dg/specs/rep_clause3.ads
  e32dc441832adaf830b5b184ad13fff8  gcc/testsuite/gnat.dg/specs/rep_clause4.ads
! f2f235ec59d0416f38a8ed361dc787a8  gcc/testsuite/gnat.dg/specs/rep_clause5.ads
  09274bf887f46901119ba11c092c2374  gcc/testsuite/gnat.dg/specs/restricted_pkg.ads
  c5aaf1c5c584144ac3187967c0d6f312  gcc/testsuite/gnat.dg/specs/root-level_1-level_2.ads
  4f21436ec3dcd1e71dfb407b2130517b  gcc/testsuite/gnat.dg/specs/root-level_1.ads
--- 81449,81455 ----
  83f6ed8426bf3c235d3e76e033539037  gcc/testsuite/gnat.dg/specs/rep_clause2.ads
  749d5204adcafb2956aa2c33bea820ed  gcc/testsuite/gnat.dg/specs/rep_clause3.ads
  e32dc441832adaf830b5b184ad13fff8  gcc/testsuite/gnat.dg/specs/rep_clause4.ads
! 82271e056d6073d19546579afd13c070  gcc/testsuite/gnat.dg/specs/rep_clause5.ads
  09274bf887f46901119ba11c092c2374  gcc/testsuite/gnat.dg/specs/restricted_pkg.ads
  c5aaf1c5c584144ac3187967c0d6f312  gcc/testsuite/gnat.dg/specs/root-level_1-level_2.ads
  4f21436ec3dcd1e71dfb407b2130517b  gcc/testsuite/gnat.dg/specs/root-level_1.ads
*************** dd11fa8c12b9ae6c22d0229f9abfe2d2  gcc/te
*** 76410,76416 ****
  03db4e24fa57d6ec6411373454c770fe  gcc/testsuite/gnat.dg/specs/size_clause4.ads
  4af0c027bf11e98fb8317a33690de3b7  gcc/testsuite/gnat.dg/specs/size_clause5.ads
  f381006ab319a77a628dc42fb91642d1  gcc/testsuite/gnat.dg/specs/small_alignment.ads
! 375b700eebff468c82a62b4a9abf0fda  gcc/testsuite/gnat.dg/specs/specs.exp
  10d9cb2f95c3b869e5b5ba8979e4226d  gcc/testsuite/gnat.dg/specs/sso1.ads
  ee68f5075e2ac910d2768455326b877d  gcc/testsuite/gnat.dg/specs/sso2.ads
  a7458b24c06bfe4873fec60e537ee095  gcc/testsuite/gnat.dg/specs/static_initializer.ads
--- 81467,81473 ----
  03db4e24fa57d6ec6411373454c770fe  gcc/testsuite/gnat.dg/specs/size_clause4.ads
  4af0c027bf11e98fb8317a33690de3b7  gcc/testsuite/gnat.dg/specs/size_clause5.ads
  f381006ab319a77a628dc42fb91642d1  gcc/testsuite/gnat.dg/specs/small_alignment.ads
! e9b1ac82f49d1451be266b3c11e03667  gcc/testsuite/gnat.dg/specs/specs.exp
  10d9cb2f95c3b869e5b5ba8979e4226d  gcc/testsuite/gnat.dg/specs/sso1.ads
  ee68f5075e2ac910d2768455326b877d  gcc/testsuite/gnat.dg/specs/sso2.ads
  a7458b24c06bfe4873fec60e537ee095  gcc/testsuite/gnat.dg/specs/static_initializer.ads
*************** ee874e3a5ed130d124c36bc00620ecf7  gcc/te
*** 76505,76511 ****
  f98695363c137c382d6de62ada73bc3c  gcc/testsuite/gnat.dg/sso/s6.adb
  932dcf06c9a657de839f1236ad1ce3a7  gcc/testsuite/gnat.dg/sso/s7.adb
  f876cc05ea75ed91c3f5cfb97ed0a9ae  gcc/testsuite/gnat.dg/sso/s8.adb
! 4c0e36ef678458cc4e2dd7235e5404d4  gcc/testsuite/gnat.dg/sso/sso.exp
  4b8f6f3bf1259d1c79c730c0c243f725  gcc/testsuite/gnat.dg/sso/t1.adb
  d4a304e697934a32984599c6d5941f55  gcc/testsuite/gnat.dg/sso/t10.adb
  3cab6b52089b5bd99bb853fbdab1352c  gcc/testsuite/gnat.dg/sso/t11.adb
--- 81562,81568 ----
  f98695363c137c382d6de62ada73bc3c  gcc/testsuite/gnat.dg/sso/s6.adb
  932dcf06c9a657de839f1236ad1ce3a7  gcc/testsuite/gnat.dg/sso/s7.adb
  f876cc05ea75ed91c3f5cfb97ed0a9ae  gcc/testsuite/gnat.dg/sso/s8.adb
! 06261d7d2f92cb94a751e0f9bdbb18d0  gcc/testsuite/gnat.dg/sso/sso.exp
  4b8f6f3bf1259d1c79c730c0c243f725  gcc/testsuite/gnat.dg/sso/t1.adb
  d4a304e697934a32984599c6d5941f55  gcc/testsuite/gnat.dg/sso/t10.adb
  3cab6b52089b5bd99bb853fbdab1352c  gcc/testsuite/gnat.dg/sso/t11.adb
*************** f5e02a34b4286874bd728685770f9dfc  gcc/te
*** 76691,76696 ****
--- 81748,81757 ----
  78da6c56fea67c92e358fe90e50bce06  gcc/testsuite/gnat.dg/thin_pointer2.adb
  7dd91b63000a8f6c6b656a7924a78f66  gcc/testsuite/gnat.dg/thin_pointer2_pkg.adb
  fac6bd7a00c7e2373fadf62e98942410  gcc/testsuite/gnat.dg/thin_pointer2_pkg.ads
+ 5f367ef1cd0138637d8ab5dd45abd605  gcc/testsuite/gnat.dg/thunk1.adb
+ 4c162d091a70ebe96a07a68fa4a88f42  gcc/testsuite/gnat.dg/thunk1_pkg1.ads
+ 7e830f39e282c0d4d6ecc1943f9d706f  gcc/testsuite/gnat.dg/thunk1_pkg2.adb
+ 8a6a505c6c28c9ae2e1dacf80b07f7ed  gcc/testsuite/gnat.dg/thunk1_pkg2.ads
  ea6e0de1b8d10b15ebc0a2409cafa861  gcc/testsuite/gnat.dg/thunk2.adb
  f0e830d22f4dc690339cfb5a8b11b41a  gcc/testsuite/gnat.dg/thunk2.ads
  fd580dc53652edf9c956d3387e0ad55e  gcc/testsuite/gnat.dg/thunk2_pkg.ads
*************** a16408deff983193400446f0843b5c6a  gcc/te
*** 76847,76855 ****
  9b811e69fc565327c36bb582bce7226e  gcc/testsuite/gnat.dg/warn10.adb
  aac18a98145d0eb18cc893fbd8e0fa55  gcc/testsuite/gnat.dg/warn10.ads
  93332b5d9cbfd73edbdd13d517ff7bb2  gcc/testsuite/gnat.dg/warn10_pkg.ads
! 98c4c3d69758f446e3a1b150b7ae739b  gcc/testsuite/gnat.dg/warn11.adb
  d951bd0b2a29136b2300bbd76a480159  gcc/testsuite/gnat.dg/warn13.adb
! 7cc03240455bd1b5850381718887b803  gcc/testsuite/gnat.dg/warn14.adb
  422f33a6dee5bedda3fe108f91f9a7f2  gcc/testsuite/gnat.dg/warn15-core-main.adb
  18231600b16d036fdb32ea1957b04ad6  gcc/testsuite/gnat.dg/warn15-core.ads
  9d2a2f970b420d67107ebdb09559a181  gcc/testsuite/gnat.dg/warn15-interfaces.ads
--- 81908,81916 ----
  9b811e69fc565327c36bb582bce7226e  gcc/testsuite/gnat.dg/warn10.adb
  aac18a98145d0eb18cc893fbd8e0fa55  gcc/testsuite/gnat.dg/warn10.ads
  93332b5d9cbfd73edbdd13d517ff7bb2  gcc/testsuite/gnat.dg/warn10_pkg.ads
! ce7aa87cc913547244bf893c1b553d27  gcc/testsuite/gnat.dg/warn11.adb
  d951bd0b2a29136b2300bbd76a480159  gcc/testsuite/gnat.dg/warn13.adb
! e6bc3c6e5595abb6ba0aef04ab49b0f0  gcc/testsuite/gnat.dg/warn14.adb
  422f33a6dee5bedda3fe108f91f9a7f2  gcc/testsuite/gnat.dg/warn15-core-main.adb
  18231600b16d036fdb32ea1957b04ad6  gcc/testsuite/gnat.dg/warn15-core.ads
  9d2a2f970b420d67107ebdb09559a181  gcc/testsuite/gnat.dg/warn15-interfaces.ads
*************** dd1a1376bad078a4b0eda0ead4a2ea6a  gcc/te
*** 76899,76908 ****
  77aaeb8d16afbdd42fa33c22011ad66f  gcc/testsuite/gnat.dg/wide_pi.adb
  067dba883e26668ff9d0a937d7332052  gcc/testsuite/gnat.dg/wide_test.adb
  2eaf83730e5346f6d0d38fb74416b41b  gcc/testsuite/gnat.dg/wide_wide_value1.adb
! 4dac9a2a74955dc7e3f652b808896bb1  gcc/testsuite/go.dg/arrayclear.go
  ac8af654d131c62dc2127d399247a353  gcc/testsuite/go.dg/cmpstring.go
  47e6563411ed24d0afefc1878c094034  gcc/testsuite/go.dg/concatstring.go
! ca0e148d66d5b18c2a87772ad406401a  gcc/testsuite/go.dg/dg.exp
  df3ff5f9e0759960e0959e71a0d0583f  gcc/testsuite/go.dg/err-1.go
  ec0e3914d3f5df5bec3a4fd8dcf1c0af  gcc/testsuite/go.dg/goto-1.go
  f0f18b0d11f15d53150f63d507b4fe27  gcc/testsuite/go.dg/mapclear.go
--- 81960,81969 ----
  77aaeb8d16afbdd42fa33c22011ad66f  gcc/testsuite/gnat.dg/wide_pi.adb
  067dba883e26668ff9d0a937d7332052  gcc/testsuite/gnat.dg/wide_test.adb
  2eaf83730e5346f6d0d38fb74416b41b  gcc/testsuite/gnat.dg/wide_wide_value1.adb
! 00f78e8b316dd9541a723b06890c4406  gcc/testsuite/go.dg/arrayclear.go
  ac8af654d131c62dc2127d399247a353  gcc/testsuite/go.dg/cmpstring.go
  47e6563411ed24d0afefc1878c094034  gcc/testsuite/go.dg/concatstring.go
! 5843196c5dc998eec63587aa3e1cc7e7  gcc/testsuite/go.dg/dg.exp
  df3ff5f9e0759960e0959e71a0d0583f  gcc/testsuite/go.dg/err-1.go
  ec0e3914d3f5df5bec3a4fd8dcf1c0af  gcc/testsuite/go.dg/goto-1.go
  f0f18b0d11f15d53150f63d507b4fe27  gcc/testsuite/go.dg/mapclear.go
*************** a06ac97125a90b106e6e0dfd7a0cd8cb  gcc/te
*** 76913,76919 ****
  17039a57c84f9e6feac3ac4966736a0a  gcc/testsuite/go.go-torture/execute/chan-1.go
  94342e6c8cd3f59c55238778fb232b4a  gcc/testsuite/go.go-torture/execute/const-1.go
  dac6eeae922725468eebc84b9a7d4875  gcc/testsuite/go.go-torture/execute/const-2.go
! aed0d7564bbd1820e7d8d8b37c483aca  gcc/testsuite/go.go-torture/execute/execute.exp
  4a320c5186c74f3c69e7f51ba7a7ab90  gcc/testsuite/go.go-torture/execute/expr-1.go
  1a159bafbc3293455e900de2c4243d3c  gcc/testsuite/go.go-torture/execute/for-1.go
  c7464eac2b485f2580aee2f19f76477f  gcc/testsuite/go.go-torture/execute/for-2.go
--- 81974,81980 ----
  17039a57c84f9e6feac3ac4966736a0a  gcc/testsuite/go.go-torture/execute/chan-1.go
  94342e6c8cd3f59c55238778fb232b4a  gcc/testsuite/go.go-torture/execute/const-1.go
  dac6eeae922725468eebc84b9a7d4875  gcc/testsuite/go.go-torture/execute/const-2.go
! d4bed9176331209088128c09acbf8514  gcc/testsuite/go.go-torture/execute/execute.exp
  4a320c5186c74f3c69e7f51ba7a7ab90  gcc/testsuite/go.go-torture/execute/expr-1.go
  1a159bafbc3293455e900de2c4243d3c  gcc/testsuite/go.go-torture/execute/for-1.go
  c7464eac2b485f2580aee2f19f76477f  gcc/testsuite/go.go-torture/execute/for-2.go
*************** f37d4791cfa22e9a20848922ea5de498  gcc/te
*** 76941,77098 ****
  b760f8c4f0593565426879b84ab6787b  gcc/testsuite/go.go-torture/execute/var-1.go
  55c3fdb5eab9130c79b8548c994aa8d9  gcc/testsuite/go.go-torture/execute/var-2.go
  ac0017eb534302ec5987291f615d13ca  gcc/testsuite/go.go-torture/execute/var-3.go
! 08628effbcbc91ae7a109bffe22472bb  gcc/testsuite/go.test/go-test.exp
  88c59e0bc9f2a79ed3a3e8f1409ed1d8  gcc/testsuite/go.test/test/235.go
  1a94dd86d2262280f883261800a13104  gcc/testsuite/go.test/test/64bit.go
  43e15a8d565d16ab908b7cf6db8e0bf9  gcc/testsuite/go.test/test/README.gcc
! 6e5009f7b50fce4ecadf649427d176c5  gcc/testsuite/go.test/test/alias.go
! b803e8c3156826bc166b7fd7773fd4bc  gcc/testsuite/go.test/test/alias1.go
! 9f964b49e54265776fb806e93e82b2ec  gcc/testsuite/go.test/test/append.go
  f8b4ed75f69b68af67cf54d1f5cc37c9  gcc/testsuite/go.test/test/args.go
! 9ba49a1a2fd07c67cb5992ecd38b9efa  gcc/testsuite/go.test/test/assign.go
  ba50ec3a9583b00f4fff8e1f07624f67  gcc/testsuite/go.test/test/assign1.go
! 622dde960aaf993e39a3529b38ebb937  gcc/testsuite/go.test/test/bench/garbage/Makefile
! 211cf4ada100ec0482cf92f801f3839f  gcc/testsuite/go.test/test/bench/garbage/parser.go
  00e7c427e1f2bb9b1419093f850ef12b  gcc/testsuite/go.test/test/bench/garbage/peano.go
! a999194720839601bfa5b53c27494925  gcc/testsuite/go.test/test/bench/garbage/stats.go
! c6f2d330894e167e6bf2707618f9f827  gcc/testsuite/go.test/test/bench/garbage/tree.go
! cfdf3413a4efe4dc6c8075336156b163  gcc/testsuite/go.test/test/bench/garbage/tree2.go
! 509569ed0145b555211fd0af1f26ae3d  gcc/testsuite/go.test/test/bench/go1/binarytree_test.go
! 8ced0712780ccb2573dece42dd76efca  gcc/testsuite/go.test/test/bench/go1/fannkuch_test.go
! 77e9cdc223fe65cae7aa6d1ca3c64e84  gcc/testsuite/go.test/test/bench/go1/fasta_test.go
  2a245bf224d7a7e8f320dc987a6173c5  gcc/testsuite/go.test/test/bench/go1/fmt_test.go
! 1f4a1139c4851a9c759e2b182af55af7  gcc/testsuite/go.test/test/bench/go1/gob_test.go
! 47a5f9086ba1c33b4f67ae067d7daa9b  gcc/testsuite/go.test/test/bench/go1/gzip_test.go
! 5298e39e9a824efa874b9637c98d3730  gcc/testsuite/go.test/test/bench/go1/http_test.go
! cdc1ac5f7594a9d7b76c60307a3c14b5  gcc/testsuite/go.test/test/bench/go1/json_test.go
! 1caae5ce9ef9933ab06596cf2f42a1fb  gcc/testsuite/go.test/test/bench/go1/jsondata_test.go
! 39cdd0524812f3741bfc6b2c9bf09cbf  gcc/testsuite/go.test/test/bench/go1/mandel_test.go
  4969c161872a6b2c286b705067e8abc7  gcc/testsuite/go.test/test/bench/go1/parser_test.go
! c9495a13a72e434a4b266d16bf90856d  gcc/testsuite/go.test/test/bench/go1/parserdata_test.go
  08b84eef2b45800cc9b6fd241655e00d  gcc/testsuite/go.test/test/bench/go1/regexp_test.go
! c8daa78ac4808563e55894eef785323a  gcc/testsuite/go.test/test/bench/go1/revcomp_test.go
! 31e7f02a46506f4f1fdde734b976dd7d  gcc/testsuite/go.test/test/bench/go1/template_test.go
  9faba02ced73bc653bb57a70b720b267  gcc/testsuite/go.test/test/bench/go1/time_test.go
- 30629b208da95dc3812319cef77f71ea  gcc/testsuite/go.test/test/bench/shootout/binary-tree-freelist.go
- d9e50c6ba8adb6b7d3374b480eded02a  gcc/testsuite/go.test/test/bench/shootout/binary-tree-freelist.txt
- 8e2b0c4b4cc9849a913cd5c79fcad54b  gcc/testsuite/go.test/test/bench/shootout/binary-tree.c
- a18b38be197e1dd497d88268c83a95a7  gcc/testsuite/go.test/test/bench/shootout/binary-tree.go
- d9e50c6ba8adb6b7d3374b480eded02a  gcc/testsuite/go.test/test/bench/shootout/binary-tree.txt
- 26f1efcedff5956236d11870670b4491  gcc/testsuite/go.test/test/bench/shootout/chameneosredux.c
- 1b358888015c3e15e35496bd470fcf03  gcc/testsuite/go.test/test/bench/shootout/chameneosredux.go
- c19b41a5b63fe21b73115ea03455dc56  gcc/testsuite/go.test/test/bench/shootout/chameneosredux.txt
- 56671b150a6928f2a9a621ac541c05de  gcc/testsuite/go.test/test/bench/shootout/fannkuch-parallel.go
- cc88aa8dbe0d52c5346709e73efa1065  gcc/testsuite/go.test/test/bench/shootout/fannkuch-parallel.txt
- b6ac7970684fd0eacd2ec2cc026b566f  gcc/testsuite/go.test/test/bench/shootout/fannkuch.c
- 7177477ac5679183751d34aa5153e3cf  gcc/testsuite/go.test/test/bench/shootout/fannkuch.go
- cc88aa8dbe0d52c5346709e73efa1065  gcc/testsuite/go.test/test/bench/shootout/fannkuch.txt
- 60cbd78a7793bcc8032ef153b4a37b56  gcc/testsuite/go.test/test/bench/shootout/fasta-1000.out
- 178688c00e586e9c281b8d69e285edab  gcc/testsuite/go.test/test/bench/shootout/fasta.c
- 421cbbd58040f88d12fb515f786b2bfb  gcc/testsuite/go.test/test/bench/shootout/fasta.go
- 60cbd78a7793bcc8032ef153b4a37b56  gcc/testsuite/go.test/test/bench/shootout/fasta.txt
- aa4e00ff831c1019577cfdebbfe83ff3  gcc/testsuite/go.test/test/bench/shootout/k-nucleotide-parallel.go
- c897b0c513a8ea8c44da7088e00556cf  gcc/testsuite/go.test/test/bench/shootout/k-nucleotide-parallel.txt
- cb9a44539af4cc96ff5c21a3e36b8795  gcc/testsuite/go.test/test/bench/shootout/k-nucleotide.c
- e9c69f36c099fa7ddc31aeebe57fcdbf  gcc/testsuite/go.test/test/bench/shootout/k-nucleotide.go
- c897b0c513a8ea8c44da7088e00556cf  gcc/testsuite/go.test/test/bench/shootout/k-nucleotide.txt
- f6c3fddbbb0fd4965115c2b948589b95  gcc/testsuite/go.test/test/bench/shootout/mandelbrot.c
- 11fc14edc181abb662cfb98c0eba6358  gcc/testsuite/go.test/test/bench/shootout/mandelbrot.go
- cc65e64bd553ed18896de1dfe7fae3e5  gcc/testsuite/go.test/test/bench/shootout/mandelbrot.txt
- 5aebf34bf634a5dd5749f0aa9718666c  gcc/testsuite/go.test/test/bench/shootout/meteor-contest.c
- 2be3d4162dfe7320cebd722a388fce46  gcc/testsuite/go.test/test/bench/shootout/meteor-contest.go
- 9a65bb4b0a735ace1eaa4f2628f01026  gcc/testsuite/go.test/test/bench/shootout/meteor-contest.txt
- c7da54d35e9da247b986327b3574ad93  gcc/testsuite/go.test/test/bench/shootout/nbody.c
- 9190432b47913e19d1e684eaea806837  gcc/testsuite/go.test/test/bench/shootout/nbody.go
- 5b8f3d2f968e5487d8995b5c4e516beb  gcc/testsuite/go.test/test/bench/shootout/nbody.txt
- f3b61a56dea8f5b0e3e16d48d3e48711  gcc/testsuite/go.test/test/bench/shootout/pidigits.c
- 23ed78a7ef0c6bba79fded4dcac332b1  gcc/testsuite/go.test/test/bench/shootout/pidigits.go
- 31f390a72f368a02be24ac455eea986f  gcc/testsuite/go.test/test/bench/shootout/pidigits.txt
- 87f8cbad75e1096b6a26d9d2415f7c72  gcc/testsuite/go.test/test/bench/shootout/regex-dna-parallel.go
- e253beaab027a8bab46c255ea1ea1da4  gcc/testsuite/go.test/test/bench/shootout/regex-dna-parallel.txt
- 79647ab9102d2be2ff52f767f77b87f2  gcc/testsuite/go.test/test/bench/shootout/regex-dna.c
- a1994a2c19cf6ff16826237ce69a29a8  gcc/testsuite/go.test/test/bench/shootout/regex-dna.go
- e253beaab027a8bab46c255ea1ea1da4  gcc/testsuite/go.test/test/bench/shootout/regex-dna.txt
- d53b05e0eb1b81a0df78661045006645  gcc/testsuite/go.test/test/bench/shootout/reverse-complement.c
- 2ad75ec408a364f762c22a4a4a79a3a2  gcc/testsuite/go.test/test/bench/shootout/reverse-complement.go
- c071aa7e007a9770b2fb4304f55a17e5  gcc/testsuite/go.test/test/bench/shootout/reverse-complement.txt
- 68a2b26be699a448e185d25b4fef9d3d  gcc/testsuite/go.test/test/bench/shootout/spectral-norm-parallel.go
- 31d840d81e227e0f1c217e3c84e2f46b  gcc/testsuite/go.test/test/bench/shootout/spectral-norm.c
- 5176807e01f83863089fda5e9d5d4ac7  gcc/testsuite/go.test/test/bench/shootout/spectral-norm.go
- 3d2677ae881291536f936e750859ea53  gcc/testsuite/go.test/test/bench/shootout/spectral-norm.txt
- 25698e5bd30fbef5b4f77ff8cdcaf105  gcc/testsuite/go.test/test/bench/shootout/threadring.c
- 29a89e00c708566c6fe9968cbeac9481  gcc/testsuite/go.test/test/bench/shootout/threadring.go
- 973a0eb3eb8c9e853c7109f891fd85a5  gcc/testsuite/go.test/test/bench/shootout/threadring.txt
- 928c67c738167b4c8144bd20f4303c34  gcc/testsuite/go.test/test/bench/shootout/timing.log
- ba8bf958a69f15ed36024a617e9512c1  gcc/testsuite/go.test/test/bench/shootout/timing.sh
  64f8ef93034f6b0fa38abc48f8f73d22  gcc/testsuite/go.test/test/bigalg.go
  60cd522b0a7ea1b0d51d39f195e91407  gcc/testsuite/go.test/test/bigmap.go
  3cb3de169aa0294740a3fa81aa1b82c2  gcc/testsuite/go.test/test/blank.go
! beddbcd5465a4ba9c7a7f3e189b84c9a  gcc/testsuite/go.test/test/blank1.go
  217a4af57a6135fdce2cb65b05e3941c  gcc/testsuite/go.test/test/bom.go
! 780f00d71a9a91039ddabad120fd6019  gcc/testsuite/go.test/test/bombad.go
! e89f9a18f7f675de17d988a199dc108e  gcc/testsuite/go.test/test/bounds.go
! 15623c4b5c566098221c31e15076cb01  gcc/testsuite/go.test/test/bugs/bug395.go
! 73cac2bf488c135ddf62adfa18c25513  gcc/testsuite/go.test/test/bugs/placeholder
! 636a677e2ebeee6d3995114813fdffff  gcc/testsuite/go.test/test/chan/doubleselect.go
! bab4f3456bc8b92f460d02623d1fc97b  gcc/testsuite/go.test/test/chan/fifo.go
  b6b2e69d0eb85634fc8aa09ea35aea8e  gcc/testsuite/go.test/test/chan/goroutines.go
  488793ab3a2084362f008a9f323192a2  gcc/testsuite/go.test/test/chan/nonblock.go
! 3d884b4182cd7650171db6021255b016  gcc/testsuite/go.test/test/chan/perm.go
! 5001bea0147778663c729acba13ce644  gcc/testsuite/go.test/test/chan/powser1.go
! 49735186a5225b934895ad25477f538a  gcc/testsuite/go.test/test/chan/powser2.go
  2d6885f5a450e57d45dbf509b8d005e7  gcc/testsuite/go.test/test/chan/select.go
! f1b5375f95163bb0ecf4b924526fb9f8  gcc/testsuite/go.test/test/chan/select2.go
! 2fe70e2945569341728f70d1ecd02a00  gcc/testsuite/go.test/test/chan/select3.go
  fbb8e3c10cc4646741a702741dd9ee95  gcc/testsuite/go.test/test/chan/select4.go
! 2cc05456338a1f9d3419dc44ee392829  gcc/testsuite/go.test/test/chan/select5.go
! 7cbe7696206f60764773ec8dfb670391  gcc/testsuite/go.test/test/chan/select6.go
! eeebdfa48c33318a8ecea5d1c718546a  gcc/testsuite/go.test/test/chan/select7.go
! dda936183259226acd3a5eb6fcf375b6  gcc/testsuite/go.test/test/chan/sendstmt.go
  dd9d35506ee5382de15b5bf1d287df03  gcc/testsuite/go.test/test/chan/sieve1.go
  7b5702e6f0846b2f0bba7e3380efbba5  gcc/testsuite/go.test/test/chan/sieve2.go
  5abf58f5f748062ddff0832f649454f2  gcc/testsuite/go.test/test/chan/zerosize.go
! f9a530f32eef88ceb0d2bfd8b53f1dee  gcc/testsuite/go.test/test/chancap.go
  ebede1dde125fb792b570ee2f3777182  gcc/testsuite/go.test/test/char_lit.go
  830ad1fce07319fec4df9759a3212147  gcc/testsuite/go.test/test/char_lit1.go
  16defa182fa3f4515216f17c42ab54c5  gcc/testsuite/go.test/test/closedchan.go
  b0ec60571155ec6830f1b6f0b05de373  gcc/testsuite/go.test/test/closure.go
! 2c6d88282773c5e2d2da9507aa12415e  gcc/testsuite/go.test/test/cmp.go
! 8ea1ee4f064caa46e49b7ea9ec2ab39b  gcc/testsuite/go.test/test/cmp6.go
! f087ec87013b882496955a4ff23fb0c9  gcc/testsuite/go.test/test/cmplx.go
! e7a384f3f3918624d02d57124fcb50ac  gcc/testsuite/go.test/test/cmplxdivide.c
! 9f3967a83b810a5880f166f6ad11f079  gcc/testsuite/go.test/test/cmplxdivide.go
! bbd82d1d51c1c442099a4a6c26ecf07e  gcc/testsuite/go.test/test/cmplxdivide1.go
  c3a8a55223d25968f22d528cf75e95fe  gcc/testsuite/go.test/test/complit.go
! 8cfbff756fa794d222833d9881732942  gcc/testsuite/go.test/test/complit1.go
! 6c39f9ce5e7a806d39087b77c43a3223  gcc/testsuite/go.test/test/compos.go
! 9ded7c8945419ab0d00ce9104ab1ced0  gcc/testsuite/go.test/test/const.go
! f341a4b18711e83008527e8a9268637f  gcc/testsuite/go.test/test/const1.go
  472f7fac30a9eb747e8e6f130e5af849  gcc/testsuite/go.test/test/const2.go
  c0a7715400d2d6ef771f51f76b103efa  gcc/testsuite/go.test/test/const3.go
! 2a174eb65b8d6b8d783b4d6879d2c629  gcc/testsuite/go.test/test/const4.go
! 72f52a9da4cac185adc7230996080725  gcc/testsuite/go.test/test/const5.go
! c725f39e25ba7dba1c17e84cbef1c6a4  gcc/testsuite/go.test/test/const6.go
  d32cf9690b635dafcc34a517f3db7891  gcc/testsuite/go.test/test/convT2X.go
  051f338c64bd9089313f0bb424227c5c  gcc/testsuite/go.test/test/convert.go
! d8d154c5299e59a8a765020ea9f7ee2c  gcc/testsuite/go.test/test/convert1.go
  db516f64034a05169ee8e879eadf58d3  gcc/testsuite/go.test/test/convert3.go
! 96c679b79589338c0fe960ea7623dd61  gcc/testsuite/go.test/test/convlit.go
  5cdede09b72d692731054c77da252b4c  gcc/testsuite/go.test/test/convlit1.go
  f1a707ef65cc6f03c199d8f88cde4503  gcc/testsuite/go.test/test/copy.go
  321fe4120bff4d1acd2bc4250b945e2f  gcc/testsuite/go.test/test/crlf.go
! 3a46e0eaf1f086879a575864cd2f213d  gcc/testsuite/go.test/test/ddd.go
! 26df33b0cdfbacf312dca5509f6b1706  gcc/testsuite/go.test/test/ddd1.go
! ab4085666c1c9cef0ad0f543a1bd3125  gcc/testsuite/go.test/test/ddd2.dir/ddd2.go
! 7895dc7e0e978f12a8970bf163e6ee3f  gcc/testsuite/go.test/test/ddd2.dir/ddd3.go
! 1f445793e6f76baf5b96b5f23f93b34e  gcc/testsuite/go.test/test/ddd2.go
  872c038a93b695f96c3b22d1bd5fd9c2  gcc/testsuite/go.test/test/decl.go
  397f0659292475a3df6fa13dc2b6e511  gcc/testsuite/go.test/test/declbad.go
  c35d92dcf49bd7f17a8ccc7d07a40c94  gcc/testsuite/go.test/test/defer.go
  93016be3226b27a5f189a4ffae303a3c  gcc/testsuite/go.test/test/deferfin.go
! 9b951abe85db5b8e39e4e153b22e7632  gcc/testsuite/go.test/test/deferprint.go
  05ae7bd93b79593f1ad436dd1b3f1d4c  gcc/testsuite/go.test/test/deferprint.out
! d70a00ce0593a75f29806b553dd7999b  gcc/testsuite/go.test/test/divide.go
! f679cc4e1ec9e03e184b444daeb69b1c  gcc/testsuite/go.test/test/divmod.go
  274c25deb1a8460e644ed47fa25a59ed  gcc/testsuite/go.test/test/dwarf/dwarf.dir/main.go
  079f6c823a3517a2c1b574a6966daafe  gcc/testsuite/go.test/test/dwarf/dwarf.dir/z1.go
  4d84087e89df41c7c18583c94353eca4  gcc/testsuite/go.test/test/dwarf/dwarf.dir/z10.go
--- 82002,82112 ----
  b760f8c4f0593565426879b84ab6787b  gcc/testsuite/go.go-torture/execute/var-1.go
  55c3fdb5eab9130c79b8548c994aa8d9  gcc/testsuite/go.go-torture/execute/var-2.go
  ac0017eb534302ec5987291f615d13ca  gcc/testsuite/go.go-torture/execute/var-3.go
! b38dc095b27a780b6a20dabe3e445800  gcc/testsuite/go.test/go-test.exp
  88c59e0bc9f2a79ed3a3e8f1409ed1d8  gcc/testsuite/go.test/test/235.go
  1a94dd86d2262280f883261800a13104  gcc/testsuite/go.test/test/64bit.go
  43e15a8d565d16ab908b7cf6db8e0bf9  gcc/testsuite/go.test/test/README.gcc
! f459f562994c522c0939a98ca2d988c9  gcc/testsuite/go.test/test/alias.go
! 36503120c613a3ae8d79f9a4f7cc8ed1  gcc/testsuite/go.test/test/alias1.go
! 0173918d74614ae157951b1e965ac758  gcc/testsuite/go.test/test/alias2.go
! d067c3dacae12f01789bc70bdbeb2523  gcc/testsuite/go.test/test/alias3.dir/a.go
! a0b68c7236f741a905e906009fdffbaa  gcc/testsuite/go.test/test/alias3.dir/b.go
! 38aa7a926f3f92c061899b9b73374e14  gcc/testsuite/go.test/test/alias3.dir/c.go
! 0566f78ae61117afc7ac4078306974bc  gcc/testsuite/go.test/test/alias3.go
! 9b987dfceff9267577b8554a14c3213e  gcc/testsuite/go.test/test/append.go
  f8b4ed75f69b68af67cf54d1f5cc37c9  gcc/testsuite/go.test/test/args.go
! 43d496faa6a4b1213a1c1fe8ee28ac09  gcc/testsuite/go.test/test/assign.go
  ba50ec3a9583b00f4fff8e1f07624f67  gcc/testsuite/go.test/test/assign1.go
! dcb9aa5b41f226caf372c8523ebac8e4  gcc/testsuite/go.test/test/bench/garbage/Makefile
! e9582cb9e36a21f49906512c8f7f6239  gcc/testsuite/go.test/test/bench/garbage/parser.go
  00e7c427e1f2bb9b1419093f850ef12b  gcc/testsuite/go.test/test/bench/garbage/peano.go
! 7a7601a61e3df6177f1a9030e5ee7799  gcc/testsuite/go.test/test/bench/garbage/stats.go
! 116afb5df95cf5090236adef4b26645a  gcc/testsuite/go.test/test/bench/garbage/tree.go
! 3914c763ea240054c1236518c9baeee2  gcc/testsuite/go.test/test/bench/garbage/tree2.go
! b4191a265a4afda016a56d3cb694d517  gcc/testsuite/go.test/test/bench/go1/binarytree_test.go
! 5651f3392b25e13a5fb5eb952cb023ed  gcc/testsuite/go.test/test/bench/go1/fannkuch_test.go
! 9cff5818a8b2b608897ada38127f5d4a  gcc/testsuite/go.test/test/bench/go1/fasta_test.go
  2a245bf224d7a7e8f320dc987a6173c5  gcc/testsuite/go.test/test/bench/go1/fmt_test.go
! 7376824e6f507dd2eb487f8ca173ff0d  gcc/testsuite/go.test/test/bench/go1/gob_test.go
! 33225449860a6745a88a7a380facc124  gcc/testsuite/go.test/test/bench/go1/gzip_test.go
! 9028445f5fab249d1731fdb703f77683  gcc/testsuite/go.test/test/bench/go1/http_test.go
! c5360d976ac8ef1606673a41141f7e39  gcc/testsuite/go.test/test/bench/go1/json_test.go
! 2348b67c32fed2879fd61cf8ed2710e1  gcc/testsuite/go.test/test/bench/go1/jsondata_test.go
! 8f977f86dccf10b8ee75bdb66ca8bdf6  gcc/testsuite/go.test/test/bench/go1/mandel_test.go
  4969c161872a6b2c286b705067e8abc7  gcc/testsuite/go.test/test/bench/go1/parser_test.go
! 79ed3b135bfcf790601e9578e0471975  gcc/testsuite/go.test/test/bench/go1/parserdata_test.go
  08b84eef2b45800cc9b6fd241655e00d  gcc/testsuite/go.test/test/bench/go1/regexp_test.go
! 1a97dada3cd64c728694ec5d019cbcf9  gcc/testsuite/go.test/test/bench/go1/revcomp_test.go
! 211748317f97d1098bf5e2e4667747d1  gcc/testsuite/go.test/test/bench/go1/template_test.go
  9faba02ced73bc653bb57a70b720b267  gcc/testsuite/go.test/test/bench/go1/time_test.go
  64f8ef93034f6b0fa38abc48f8f73d22  gcc/testsuite/go.test/test/bigalg.go
  60cd522b0a7ea1b0d51d39f195e91407  gcc/testsuite/go.test/test/bigmap.go
  3cb3de169aa0294740a3fa81aa1b82c2  gcc/testsuite/go.test/test/blank.go
! 3cce40401638c1b9aac6bc7b85cb0dca  gcc/testsuite/go.test/test/blank1.go
  217a4af57a6135fdce2cb65b05e3941c  gcc/testsuite/go.test/test/bom.go
! f52195c27ff3941075afdc905d584817  gcc/testsuite/go.test/test/bombad.go
! fc45261db92bad0828788e4a68160ab4  gcc/testsuite/go.test/test/bounds.go
! 63a3054e0b5e33e306173ca421397381  gcc/testsuite/go.test/test/chan/doubleselect.go
! 2ed710d30856182d89924c979616c828  gcc/testsuite/go.test/test/chan/fifo.go
  b6b2e69d0eb85634fc8aa09ea35aea8e  gcc/testsuite/go.test/test/chan/goroutines.go
  488793ab3a2084362f008a9f323192a2  gcc/testsuite/go.test/test/chan/nonblock.go
! 0ea354aa1f1fe30db361d2eb2afe631e  gcc/testsuite/go.test/test/chan/perm.go
! 5a1f39a9d96fdc205f16110517ae6720  gcc/testsuite/go.test/test/chan/powser1.go
! 5d9cfbb6d13d9ccfa411131137525dd1  gcc/testsuite/go.test/test/chan/powser2.go
  2d6885f5a450e57d45dbf509b8d005e7  gcc/testsuite/go.test/test/chan/select.go
! ac17a6d39f65d2b746e33f46e011cea4  gcc/testsuite/go.test/test/chan/select2.go
! 39e6473bd351e7f32a6e458e24d88002  gcc/testsuite/go.test/test/chan/select3.go
  fbb8e3c10cc4646741a702741dd9ee95  gcc/testsuite/go.test/test/chan/select4.go
! c5282cc87fd8052a990eaf197391a143  gcc/testsuite/go.test/test/chan/select5.go
! 817ed6616118b0124282b3aa3aee4f9b  gcc/testsuite/go.test/test/chan/select6.go
! f9f3e6fc401bb53fc1c762948c14885e  gcc/testsuite/go.test/test/chan/select7.go
! e6210009f7fbd34b860e8ddc51054603  gcc/testsuite/go.test/test/chan/select8.go
! 90701841da5bc6861ae291354345e314  gcc/testsuite/go.test/test/chan/sendstmt.go
  dd9d35506ee5382de15b5bf1d287df03  gcc/testsuite/go.test/test/chan/sieve1.go
  7b5702e6f0846b2f0bba7e3380efbba5  gcc/testsuite/go.test/test/chan/sieve2.go
  5abf58f5f748062ddff0832f649454f2  gcc/testsuite/go.test/test/chan/zerosize.go
! 073bafa2850ef720a48e86b1eaefccb9  gcc/testsuite/go.test/test/chancap.go
  ebede1dde125fb792b570ee2f3777182  gcc/testsuite/go.test/test/char_lit.go
  830ad1fce07319fec4df9759a3212147  gcc/testsuite/go.test/test/char_lit1.go
  16defa182fa3f4515216f17c42ab54c5  gcc/testsuite/go.test/test/closedchan.go
  b0ec60571155ec6830f1b6f0b05de373  gcc/testsuite/go.test/test/closure.go
! 4eedfa36a2e547cfcbb80d2cae30ff4c  gcc/testsuite/go.test/test/cmp.go
! ac7a481be3d3ac51ab0cb47eb5e4911e  gcc/testsuite/go.test/test/cmp6.go
! aa57efd2c6e0a29ad723f12251d57bee  gcc/testsuite/go.test/test/cmplx.go
! 45bf655b7c361906cc4e2e1b384f490b  gcc/testsuite/go.test/test/cmplxdivide.c
! cd535cf2ed126d081c43064ce23a31ba  gcc/testsuite/go.test/test/cmplxdivide.go
! 0cdb41b82f9348ecf53518f5e5c6abbe  gcc/testsuite/go.test/test/cmplxdivide1.go
  c3a8a55223d25968f22d528cf75e95fe  gcc/testsuite/go.test/test/complit.go
! 42b62f64fafc2522d8d44c0d939828eb  gcc/testsuite/go.test/test/complit1.go
! d50628a4e02bb420a82e707f9f19222f  gcc/testsuite/go.test/test/compos.go
! 401c0a8053430018c38855a614803b40  gcc/testsuite/go.test/test/const.go
! 20095a30a2e8ccb082845b78a6473d3c  gcc/testsuite/go.test/test/const1.go
  472f7fac30a9eb747e8e6f130e5af849  gcc/testsuite/go.test/test/const2.go
  c0a7715400d2d6ef771f51f76b103efa  gcc/testsuite/go.test/test/const3.go
! b5d1495ca734349057712bddc22f3066  gcc/testsuite/go.test/test/const4.go
! 9224cbd262136eeeef726fba41341903  gcc/testsuite/go.test/test/const5.go
! 3c19cb2b32f3621f99b4316ec66e1161  gcc/testsuite/go.test/test/const6.go
  d32cf9690b635dafcc34a517f3db7891  gcc/testsuite/go.test/test/convT2X.go
  051f338c64bd9089313f0bb424227c5c  gcc/testsuite/go.test/test/convert.go
! f423f2749a564379c6da9a2798ccf19f  gcc/testsuite/go.test/test/convert1.go
  db516f64034a05169ee8e879eadf58d3  gcc/testsuite/go.test/test/convert3.go
! 5a38a961db40296248b35c9bd501de1c  gcc/testsuite/go.test/test/convlit.go
  5cdede09b72d692731054c77da252b4c  gcc/testsuite/go.test/test/convlit1.go
  f1a707ef65cc6f03c199d8f88cde4503  gcc/testsuite/go.test/test/copy.go
  321fe4120bff4d1acd2bc4250b945e2f  gcc/testsuite/go.test/test/crlf.go
! ec02408dc00b6b06644ee6d35d03c3a5  gcc/testsuite/go.test/test/ddd.go
! 3ba95b4d89758310024c527cf50e52fe  gcc/testsuite/go.test/test/ddd1.go
! 05da62dd1e2bd2c089309b71c63ee74b  gcc/testsuite/go.test/test/ddd2.dir/ddd2.go
! 2db891a57f93ac1090dc27dda4ab0b77  gcc/testsuite/go.test/test/ddd2.dir/ddd3.go
! 05d122e4b91059c0d520f2dd92b96617  gcc/testsuite/go.test/test/ddd2.go
  872c038a93b695f96c3b22d1bd5fd9c2  gcc/testsuite/go.test/test/decl.go
  397f0659292475a3df6fa13dc2b6e511  gcc/testsuite/go.test/test/declbad.go
  c35d92dcf49bd7f17a8ccc7d07a40c94  gcc/testsuite/go.test/test/defer.go
  93016be3226b27a5f189a4ffae303a3c  gcc/testsuite/go.test/test/deferfin.go
! d527980b3967f43721f3a2dda771ead3  gcc/testsuite/go.test/test/deferprint.go
  05ae7bd93b79593f1ad436dd1b3f1d4c  gcc/testsuite/go.test/test/deferprint.out
! 34952f835a9313cbc3acea0bc17d52cb  gcc/testsuite/go.test/test/divide.go
! 70e2fee732474e84e9281b713f68f5ba  gcc/testsuite/go.test/test/divmod.go
  274c25deb1a8460e644ed47fa25a59ed  gcc/testsuite/go.test/test/dwarf/dwarf.dir/main.go
  079f6c823a3517a2c1b574a6966daafe  gcc/testsuite/go.test/test/dwarf/dwarf.dir/z1.go
  4d84087e89df41c7c18583c94353eca4  gcc/testsuite/go.test/test/dwarf/dwarf.dir/z10.go
*************** d6abc35350e7399c17ecc9f3f82df590  gcc/te
*** 77118,77131 ****
  a575699763a65c28e1d56ee59f293cc1  gcc/testsuite/go.test/test/dwarf/linedirectives.go
  53a5994ed4082e289a98126daa6cece7  gcc/testsuite/go.test/test/empty.go
  3a0490cb9bc87c8e2bba2a4990139818  gcc/testsuite/go.test/test/env.go
! 20f58a895e78786d6eaa7bad93ec939c  gcc/testsuite/go.test/test/eof.go
! aacebfcd13c57959786d1bc9c0b3179f  gcc/testsuite/go.test/test/eof1.go
! 274a27e2804b323ca4c06dccb853bfb1  gcc/testsuite/go.test/test/errchk
  3a938ce3ea3a3a576ac92902c6a4b862  gcc/testsuite/go.test/test/escape.go
! 657bee79433b2561d8c47f72711a46e8  gcc/testsuite/go.test/test/escape2.go
! 93a56bfaa17e4c04396308bcfb706a08  gcc/testsuite/go.test/test/escape3.go
! bd6f09c39bc0cd55457d053896119f45  gcc/testsuite/go.test/test/escape4.go
! 31f9a7a41b81218eded42fe82f6fe718  gcc/testsuite/go.test/test/escape5.go
  7652bde0207d988d07d71a7604d54a7d  gcc/testsuite/go.test/test/fixedbugs/bug000.go
  a7ef1b5b4ae63933f8561e8c1dea488c  gcc/testsuite/go.test/test/fixedbugs/bug002.go
  828a2991ea8822f591db2f7eeedaa372  gcc/testsuite/go.test/test/fixedbugs/bug003.go
--- 82132,82144 ----
  a575699763a65c28e1d56ee59f293cc1  gcc/testsuite/go.test/test/dwarf/linedirectives.go
  53a5994ed4082e289a98126daa6cece7  gcc/testsuite/go.test/test/empty.go
  3a0490cb9bc87c8e2bba2a4990139818  gcc/testsuite/go.test/test/env.go
! 446b98bce23e39232e9076bfb8c0d4be  gcc/testsuite/go.test/test/eof.go
! 54ff2e5833fc933535284339a2c83c24  gcc/testsuite/go.test/test/eof1.go
  3a938ce3ea3a3a576ac92902c6a4b862  gcc/testsuite/go.test/test/escape.go
! 5328f0c2849c40ef04ec67d5b49b88ed  gcc/testsuite/go.test/test/escape2.go
! 4ddee29b60fce4b77f70b3edd41a103e  gcc/testsuite/go.test/test/escape3.go
! 1f59272710f2c314f9f96371736c56c9  gcc/testsuite/go.test/test/escape4.go
! 7ad02e0294e5f8fa0d33a2a97c2b1fd1  gcc/testsuite/go.test/test/escape5.go
  7652bde0207d988d07d71a7604d54a7d  gcc/testsuite/go.test/test/fixedbugs/bug000.go
  a7ef1b5b4ae63933f8561e8c1dea488c  gcc/testsuite/go.test/test/fixedbugs/bug002.go
  828a2991ea8822f591db2f7eeedaa372  gcc/testsuite/go.test/test/fixedbugs/bug003.go
*************** ea81b4c04f5e39c825c6e068ae7ff9ca  gcc/te
*** 77194,77208 ****
  1055acbac4461941f5dd2c22880a28c1  gcc/testsuite/go.test/test/fixedbugs/bug080.go
  bc6cee5f6488fd6c41a2846b6804d22a  gcc/testsuite/go.test/test/fixedbugs/bug081.go
  376d46eb5955fc85900236583fa7e26b  gcc/testsuite/go.test/test/fixedbugs/bug082.go
! dec49e75b2ceb9311df439ebb4804316  gcc/testsuite/go.test/test/fixedbugs/bug083.dir/bug0.go
! 0ff3ffa8b53f878432746dd7f99604c4  gcc/testsuite/go.test/test/fixedbugs/bug083.dir/bug1.go
  36c1d4e3a29608038a51ed6195ebca79  gcc/testsuite/go.test/test/fixedbugs/bug083.go
  eecf0c4fe5675a2853653c5d7284edd3  gcc/testsuite/go.test/test/fixedbugs/bug084.go
  3e439ce34cbe4a55fbeab27599deb294  gcc/testsuite/go.test/test/fixedbugs/bug085.go
  ea74d75261cb8943fab1fd46b8fd3df3  gcc/testsuite/go.test/test/fixedbugs/bug086.go
  5b69cdd1833fb3eadc5492f7ff6d8827  gcc/testsuite/go.test/test/fixedbugs/bug087.go
! 79684f66ca16fe863072e7d4978a5dfc  gcc/testsuite/go.test/test/fixedbugs/bug088.dir/bug0.go
! 307976a0359c49b4d41adf4e20e13139  gcc/testsuite/go.test/test/fixedbugs/bug088.dir/bug1.go
  884c662c56311de8680d42cc58c88ec3  gcc/testsuite/go.test/test/fixedbugs/bug088.go
  cb7c51b8b01995168c22c278f8b44426  gcc/testsuite/go.test/test/fixedbugs/bug089.go
  8df0f0ed5a3ba8f9af0d04b95dbdfc34  gcc/testsuite/go.test/test/fixedbugs/bug090.go
--- 82207,82221 ----
  1055acbac4461941f5dd2c22880a28c1  gcc/testsuite/go.test/test/fixedbugs/bug080.go
  bc6cee5f6488fd6c41a2846b6804d22a  gcc/testsuite/go.test/test/fixedbugs/bug081.go
  376d46eb5955fc85900236583fa7e26b  gcc/testsuite/go.test/test/fixedbugs/bug082.go
! a5e14d3acba62258edc5fe02fce28965  gcc/testsuite/go.test/test/fixedbugs/bug083.dir/bug0.go
! d282ca6eecb1ddc2cbc610526ac9a83b  gcc/testsuite/go.test/test/fixedbugs/bug083.dir/bug1.go
  36c1d4e3a29608038a51ed6195ebca79  gcc/testsuite/go.test/test/fixedbugs/bug083.go
  eecf0c4fe5675a2853653c5d7284edd3  gcc/testsuite/go.test/test/fixedbugs/bug084.go
  3e439ce34cbe4a55fbeab27599deb294  gcc/testsuite/go.test/test/fixedbugs/bug085.go
  ea74d75261cb8943fab1fd46b8fd3df3  gcc/testsuite/go.test/test/fixedbugs/bug086.go
  5b69cdd1833fb3eadc5492f7ff6d8827  gcc/testsuite/go.test/test/fixedbugs/bug087.go
! 0d8604058d2f265fbfdfb62d5f04e260  gcc/testsuite/go.test/test/fixedbugs/bug088.dir/bug0.go
! 595de50cc28f1f6bcef8c1aa9f853938  gcc/testsuite/go.test/test/fixedbugs/bug088.dir/bug1.go
  884c662c56311de8680d42cc58c88ec3  gcc/testsuite/go.test/test/fixedbugs/bug088.go
  cb7c51b8b01995168c22c278f8b44426  gcc/testsuite/go.test/test/fixedbugs/bug089.go
  8df0f0ed5a3ba8f9af0d04b95dbdfc34  gcc/testsuite/go.test/test/fixedbugs/bug090.go
*************** db2b0a83d2a09ef63f46c8e1c5cefd78  gcc/te
*** 77218,77228 ****
  1c20fd019a5ae5162f21c3b8fae08227  gcc/testsuite/go.test/test/fixedbugs/bug102.go
  d273a3be9a21f642a7347ebf87ef9251  gcc/testsuite/go.test/test/fixedbugs/bug103.go
  af2e407e7300ce54d8b146f38c2ceed7  gcc/testsuite/go.test/test/fixedbugs/bug104.go
! ea9d2ce5c7e299e6ed170b9fd9a93111  gcc/testsuite/go.test/test/fixedbugs/bug106.dir/bug0.go
! 320f3120c4f3eddd4ca60b25656e76b8  gcc/testsuite/go.test/test/fixedbugs/bug106.dir/bug1.go
  884c662c56311de8680d42cc58c88ec3  gcc/testsuite/go.test/test/fixedbugs/bug106.go
  0d7e15559399d7ba723f40f4a0d33e24  gcc/testsuite/go.test/test/fixedbugs/bug107.go
! 3f0a821665a507461033db49e2d018e0  gcc/testsuite/go.test/test/fixedbugs/bug108.go
  7d7fb423ee13461b326b75c1e7546e0f  gcc/testsuite/go.test/test/fixedbugs/bug109.go
  9ace3b6817d5e8a07476650cb9ef3183  gcc/testsuite/go.test/test/fixedbugs/bug110.go
  e707676739a4a26c68a06e53a6bea6e1  gcc/testsuite/go.test/test/fixedbugs/bug111.go
--- 82231,82241 ----
  1c20fd019a5ae5162f21c3b8fae08227  gcc/testsuite/go.test/test/fixedbugs/bug102.go
  d273a3be9a21f642a7347ebf87ef9251  gcc/testsuite/go.test/test/fixedbugs/bug103.go
  af2e407e7300ce54d8b146f38c2ceed7  gcc/testsuite/go.test/test/fixedbugs/bug104.go
! 44c7b6bea8834b182030362cac4c5b07  gcc/testsuite/go.test/test/fixedbugs/bug106.dir/bug0.go
! b5d6763ce5bcdde2d11e78492f4bf8f9  gcc/testsuite/go.test/test/fixedbugs/bug106.dir/bug1.go
  884c662c56311de8680d42cc58c88ec3  gcc/testsuite/go.test/test/fixedbugs/bug106.go
  0d7e15559399d7ba723f40f4a0d33e24  gcc/testsuite/go.test/test/fixedbugs/bug107.go
! c77ebadac9d5084b717298b3be622068  gcc/testsuite/go.test/test/fixedbugs/bug108.go
  7d7fb423ee13461b326b75c1e7546e0f  gcc/testsuite/go.test/test/fixedbugs/bug109.go
  9ace3b6817d5e8a07476650cb9ef3183  gcc/testsuite/go.test/test/fixedbugs/bug110.go
  e707676739a4a26c68a06e53a6bea6e1  gcc/testsuite/go.test/test/fixedbugs/bug111.go
*************** e0eab933ae7f0244ea56cca4e4778409  gcc/te
*** 77235,77241 ****
  5c88ba284bd642fe4d187f8808ad4bda  gcc/testsuite/go.test/test/fixedbugs/bug118.go
  418c30536a339058e55069aa29c98a78  gcc/testsuite/go.test/test/fixedbugs/bug119.go
  239bc7b7603b77ab1686803c97b96b14  gcc/testsuite/go.test/test/fixedbugs/bug120.go
! 5c38b7c2817a84beaaede063f8927a30  gcc/testsuite/go.test/test/fixedbugs/bug121.go
  69b2054ddd8cf76c8bca093e900c4037  gcc/testsuite/go.test/test/fixedbugs/bug122.go
  b5aeaeb61e95f26339ea112d1f6d943f  gcc/testsuite/go.test/test/fixedbugs/bug123.go
  3b16c2192546b7cae4937c28ef12bdc9  gcc/testsuite/go.test/test/fixedbugs/bug126.go
--- 82248,82254 ----
  5c88ba284bd642fe4d187f8808ad4bda  gcc/testsuite/go.test/test/fixedbugs/bug118.go
  418c30536a339058e55069aa29c98a78  gcc/testsuite/go.test/test/fixedbugs/bug119.go
  239bc7b7603b77ab1686803c97b96b14  gcc/testsuite/go.test/test/fixedbugs/bug120.go
! c0e89b00974c5c3bdda0b985ee0ee24f  gcc/testsuite/go.test/test/fixedbugs/bug121.go
  69b2054ddd8cf76c8bca093e900c4037  gcc/testsuite/go.test/test/fixedbugs/bug122.go
  b5aeaeb61e95f26339ea112d1f6d943f  gcc/testsuite/go.test/test/fixedbugs/bug123.go
  3b16c2192546b7cae4937c28ef12bdc9  gcc/testsuite/go.test/test/fixedbugs/bug126.go
*************** c52ed4ec7b9f9a085cb83a1d304c5393  gcc/te
*** 77245,77254 ****
  712c38c6dec8065d117b01f39247cbd6  gcc/testsuite/go.test/test/fixedbugs/bug130.go
  7f53de6df31582f502a526adb39b4496  gcc/testsuite/go.test/test/fixedbugs/bug131.go
  f9e9254c3cc9453e0dd1a029e21be782  gcc/testsuite/go.test/test/fixedbugs/bug132.go
! 01cfeaabf33d66e2da0520c8625624e8  gcc/testsuite/go.test/test/fixedbugs/bug133.dir/bug0.go
! 76113524105a3867372072d83ca24f65  gcc/testsuite/go.test/test/fixedbugs/bug133.dir/bug1.go
! e00447d3ad3ddd77aa90b1f6309a3f92  gcc/testsuite/go.test/test/fixedbugs/bug133.dir/bug2.go
  36c1d4e3a29608038a51ed6195ebca79  gcc/testsuite/go.test/test/fixedbugs/bug133.go
  f96d619a565635d345d0393258df79c8  gcc/testsuite/go.test/test/fixedbugs/bug135.go
  fbe32d4aca7b420e425554b822c9e754  gcc/testsuite/go.test/test/fixedbugs/bug136.go
  cb6208436395783500e353597311b1c9  gcc/testsuite/go.test/test/fixedbugs/bug137.go
--- 82258,82268 ----
  712c38c6dec8065d117b01f39247cbd6  gcc/testsuite/go.test/test/fixedbugs/bug130.go
  7f53de6df31582f502a526adb39b4496  gcc/testsuite/go.test/test/fixedbugs/bug131.go
  f9e9254c3cc9453e0dd1a029e21be782  gcc/testsuite/go.test/test/fixedbugs/bug132.go
! 861d72591e543c0d2c71fdbb787c4aa2  gcc/testsuite/go.test/test/fixedbugs/bug133.dir/bug0.go
! 161fca1b0c1a59525aa7a003abaa477d  gcc/testsuite/go.test/test/fixedbugs/bug133.dir/bug1.go
! 134e9699a5f59dc7dbf687ed7a2e5413  gcc/testsuite/go.test/test/fixedbugs/bug133.dir/bug2.go
  36c1d4e3a29608038a51ed6195ebca79  gcc/testsuite/go.test/test/fixedbugs/bug133.go
+ 6d45e10538a7ab0fa32cd2d5bf7bed45  gcc/testsuite/go.test/test/fixedbugs/bug13343.go
  f96d619a565635d345d0393258df79c8  gcc/testsuite/go.test/test/fixedbugs/bug135.go
  fbe32d4aca7b420e425554b822c9e754  gcc/testsuite/go.test/test/fixedbugs/bug136.go
  cb6208436395783500e353597311b1c9  gcc/testsuite/go.test/test/fixedbugs/bug137.go
*************** d23980ae0782c8c8b95a650ef0d3b2a7  gcc/te
*** 77265,77271 ****
  41a89deb34ec50adc799320b507a6bd6  gcc/testsuite/go.test/test/fixedbugs/bug149.go
  5dfe85cf3f3811b282a50d62132cdfe5  gcc/testsuite/go.test/test/fixedbugs/bug150.go
  260c1d3928b639cbf1f293c3b88b0429  gcc/testsuite/go.test/test/fixedbugs/bug151.go
! cd8a0e9f9fdbc35f01ceb8d154c1895c  gcc/testsuite/go.test/test/fixedbugs/bug1515.go
  b4b314ea972d16e156b6f8788b2763df  gcc/testsuite/go.test/test/fixedbugs/bug152.go
  adc3e7c563295e2f574a9a85637697f0  gcc/testsuite/go.test/test/fixedbugs/bug154.go
  9ca5b5040b7adfb92e86b32f3e080560  gcc/testsuite/go.test/test/fixedbugs/bug155.go
--- 82279,82285 ----
  41a89deb34ec50adc799320b507a6bd6  gcc/testsuite/go.test/test/fixedbugs/bug149.go
  5dfe85cf3f3811b282a50d62132cdfe5  gcc/testsuite/go.test/test/fixedbugs/bug150.go
  260c1d3928b639cbf1f293c3b88b0429  gcc/testsuite/go.test/test/fixedbugs/bug151.go
! 82082514134d854a31a6a343c2634edb  gcc/testsuite/go.test/test/fixedbugs/bug1515.go
  b4b314ea972d16e156b6f8788b2763df  gcc/testsuite/go.test/test/fixedbugs/bug152.go
  adc3e7c563295e2f574a9a85637697f0  gcc/testsuite/go.test/test/fixedbugs/bug154.go
  9ca5b5040b7adfb92e86b32f3e080560  gcc/testsuite/go.test/test/fixedbugs/bug155.go
*************** adc3e7c563295e2f574a9a85637697f0  gcc/te
*** 77273,77280 ****
  96fd4b53a187d4c6722126cb3374d02c  gcc/testsuite/go.test/test/fixedbugs/bug157.go
  17403da1c9f6d1a254d95e77dadd8a5c  gcc/testsuite/go.test/test/fixedbugs/bug158.go
  ac0491c79c0d6774adb41a1d6f017c7d  gcc/testsuite/go.test/test/fixedbugs/bug159.go
! b85d88d098880de81776da7e577fdf73  gcc/testsuite/go.test/test/fixedbugs/bug160.dir/x.go
! 716a7a57e29da163006261ff324c1869  gcc/testsuite/go.test/test/fixedbugs/bug160.dir/y.go
  a7c28c271f01c1a975606bfa32ac1663  gcc/testsuite/go.test/test/fixedbugs/bug160.go
  c5097ab28ae04b4796430ad9eb156cea  gcc/testsuite/go.test/test/fixedbugs/bug161.go
  4a183e2152efb265736181f2aa518976  gcc/testsuite/go.test/test/fixedbugs/bug163.go
--- 82287,82294 ----
  96fd4b53a187d4c6722126cb3374d02c  gcc/testsuite/go.test/test/fixedbugs/bug157.go
  17403da1c9f6d1a254d95e77dadd8a5c  gcc/testsuite/go.test/test/fixedbugs/bug158.go
  ac0491c79c0d6774adb41a1d6f017c7d  gcc/testsuite/go.test/test/fixedbugs/bug159.go
! 2004fca680869e7911b7baa58f6e76ad  gcc/testsuite/go.test/test/fixedbugs/bug160.dir/x.go
! 4232cdaa454f15b80214b87bc473d465  gcc/testsuite/go.test/test/fixedbugs/bug160.dir/y.go
  a7c28c271f01c1a975606bfa32ac1663  gcc/testsuite/go.test/test/fixedbugs/bug160.go
  c5097ab28ae04b4796430ad9eb156cea  gcc/testsuite/go.test/test/fixedbugs/bug161.go
  4a183e2152efb265736181f2aa518976  gcc/testsuite/go.test/test/fixedbugs/bug163.go
*************** f1f721abd6f292605b1c617d3fdfb6ad  gcc/te
*** 77282,77295 ****
  e1d206c34f1fcb8d241f564d3e69c0ae  gcc/testsuite/go.test/test/fixedbugs/bug165.go
  d858d6d990facd254378cd8a9ae8bb77  gcc/testsuite/go.test/test/fixedbugs/bug167.go
  66175db138e6b79f2169f77434de8f18  gcc/testsuite/go.test/test/fixedbugs/bug168.go
! f396801967263a26010bc4f7a22856dc  gcc/testsuite/go.test/test/fixedbugs/bug169.go
  ea7b6653f2519288f1b5cd7fba3e74f0  gcc/testsuite/go.test/test/fixedbugs/bug170.go
  68744bb21e84b551aa125eb6398b914e  gcc/testsuite/go.test/test/fixedbugs/bug171.go
  9ee73ce6258ffbdd6d9ea3ddc41dcaaa  gcc/testsuite/go.test/test/fixedbugs/bug172.go
! bd97c2d59dfc810374e3d6afae847f8c  gcc/testsuite/go.test/test/fixedbugs/bug173.go
  2ca198c37fd4d635a35f33263d2f4ebc  gcc/testsuite/go.test/test/fixedbugs/bug174.go
  125f28290236118cffdd3d7e888d380d  gcc/testsuite/go.test/test/fixedbugs/bug175.go
! d8305079892a295371d07f91536154d3  gcc/testsuite/go.test/test/fixedbugs/bug176.go
  689ddfe02f5e54b3861903f79f19c77d  gcc/testsuite/go.test/test/fixedbugs/bug177.go
  fca50be39b3cf72653e7ff93e44b241e  gcc/testsuite/go.test/test/fixedbugs/bug178.go
  e6d7a8ffdf7fae738ad134574a0802e6  gcc/testsuite/go.test/test/fixedbugs/bug179.go
--- 82296,82309 ----
  e1d206c34f1fcb8d241f564d3e69c0ae  gcc/testsuite/go.test/test/fixedbugs/bug165.go
  d858d6d990facd254378cd8a9ae8bb77  gcc/testsuite/go.test/test/fixedbugs/bug167.go
  66175db138e6b79f2169f77434de8f18  gcc/testsuite/go.test/test/fixedbugs/bug168.go
! b2efbce8911287af54ec0a6f22d652c7  gcc/testsuite/go.test/test/fixedbugs/bug169.go
  ea7b6653f2519288f1b5cd7fba3e74f0  gcc/testsuite/go.test/test/fixedbugs/bug170.go
  68744bb21e84b551aa125eb6398b914e  gcc/testsuite/go.test/test/fixedbugs/bug171.go
  9ee73ce6258ffbdd6d9ea3ddc41dcaaa  gcc/testsuite/go.test/test/fixedbugs/bug172.go
! 384c2ffa627b4076cb8b8a87b4cf82a5  gcc/testsuite/go.test/test/fixedbugs/bug173.go
  2ca198c37fd4d635a35f33263d2f4ebc  gcc/testsuite/go.test/test/fixedbugs/bug174.go
  125f28290236118cffdd3d7e888d380d  gcc/testsuite/go.test/test/fixedbugs/bug175.go
! 8de8843a92ccc712fb9d0803b9ee15d3  gcc/testsuite/go.test/test/fixedbugs/bug176.go
  689ddfe02f5e54b3861903f79f19c77d  gcc/testsuite/go.test/test/fixedbugs/bug177.go
  fca50be39b3cf72653e7ff93e44b241e  gcc/testsuite/go.test/test/fixedbugs/bug178.go
  e6d7a8ffdf7fae738ad134574a0802e6  gcc/testsuite/go.test/test/fixedbugs/bug179.go
*************** eeced96c676031c08ee81ace6b762273  gcc/te
*** 77311,77317 ****
  ea54ef4e3210eeb9efc2fce2e0e0aa5f  gcc/testsuite/go.test/test/fixedbugs/bug192.go
  3d816d7fa9b50c8c0fc07ffb5790557e  gcc/testsuite/go.test/test/fixedbugs/bug193.go
  c160a7877e4372a34dfa5c7803dbe474  gcc/testsuite/go.test/test/fixedbugs/bug194.go
! 82e1f3f1d0937b546baa928ee258408a  gcc/testsuite/go.test/test/fixedbugs/bug195.go
  5ddfa033eba9aa7ff96ae49f28a152d4  gcc/testsuite/go.test/test/fixedbugs/bug196.go
  f5f0d82e28e69052378fa7369aeb0f00  gcc/testsuite/go.test/test/fixedbugs/bug197.go
  0fe362aa718b6b74abc632ad9a4492c1  gcc/testsuite/go.test/test/fixedbugs/bug198.go
--- 82325,82332 ----
  ea54ef4e3210eeb9efc2fce2e0e0aa5f  gcc/testsuite/go.test/test/fixedbugs/bug192.go
  3d816d7fa9b50c8c0fc07ffb5790557e  gcc/testsuite/go.test/test/fixedbugs/bug193.go
  c160a7877e4372a34dfa5c7803dbe474  gcc/testsuite/go.test/test/fixedbugs/bug194.go
! 20fffb23c0914a06fbb2b1d7ac1bd4db  gcc/testsuite/go.test/test/fixedbugs/bug19403.go
! 97c40472035574837b2526b8f81ede5c  gcc/testsuite/go.test/test/fixedbugs/bug195.go
  5ddfa033eba9aa7ff96ae49f28a152d4  gcc/testsuite/go.test/test/fixedbugs/bug196.go
  f5f0d82e28e69052378fa7369aeb0f00  gcc/testsuite/go.test/test/fixedbugs/bug197.go
  0fe362aa718b6b74abc632ad9a4492c1  gcc/testsuite/go.test/test/fixedbugs/bug198.go
*************** f5f0d82e28e69052378fa7369aeb0f00  gcc/te
*** 77319,77572 ****
  de3fd8059b9295c3a90c01d2972ce537  gcc/testsuite/go.test/test/fixedbugs/bug200.go
  cda63c60241c3c312f60e56738ff54a1  gcc/testsuite/go.test/test/fixedbugs/bug201.go
  d25ec82c3652a91c199754800bc9dd61  gcc/testsuite/go.test/test/fixedbugs/bug202.go
! b7b6ae1d237407ae7a18d37c4965e116  gcc/testsuite/go.test/test/fixedbugs/bug203.go
  1395b42d53c81106aa46b02499dbc7ed  gcc/testsuite/go.test/test/fixedbugs/bug204.go
  21c11d6bfcf3dcc45fd61c71a1f06c6d  gcc/testsuite/go.test/test/fixedbugs/bug205.go
! 07e508531b284e9760510209a6f83166  gcc/testsuite/go.test/test/fixedbugs/bug206.go
  c4da2b805df8425bccc182ad4db8422a  gcc/testsuite/go.test/test/fixedbugs/bug206.out
  9a5cd1da216abadfb63521b5a12588ac  gcc/testsuite/go.test/test/fixedbugs/bug207.go
  8567aa5929b22f7d16b40ef7f3ce82d7  gcc/testsuite/go.test/test/fixedbugs/bug208.go
  39d3ff373fcf49ab5c0550bbcc3a9faf  gcc/testsuite/go.test/test/fixedbugs/bug209.go
  4b4d1fff45a653b52739eda91f60cd87  gcc/testsuite/go.test/test/fixedbugs/bug212.go
  ea18c4fbc121934a10b0ded788af79a7  gcc/testsuite/go.test/test/fixedbugs/bug213.go
! e6786b30298f2dcd6b5166c1927d98e8  gcc/testsuite/go.test/test/fixedbugs/bug214.go
! bee21c18fce2b14904e13ab3fa3ea18f  gcc/testsuite/go.test/test/fixedbugs/bug215.go
! da419e3e4279dcdd283e1e0c8fc9c1fc  gcc/testsuite/go.test/test/fixedbugs/bug216.go
! 0a0ebb8a531d0e879e442f62cbc7c45b  gcc/testsuite/go.test/test/fixedbugs/bug217.go
! d8bcf293c2a12698bd99bb0aefa3d4a8  gcc/testsuite/go.test/test/fixedbugs/bug218.go
  3830336bf1c4e5a0ffe7532709ddc2e0  gcc/testsuite/go.test/test/fixedbugs/bug219.go
! 66e164ceda1ce6a88609d3a67505c62e  gcc/testsuite/go.test/test/fixedbugs/bug221.go
  2fc62da80b9cb1a7ab428be21a2c196f  gcc/testsuite/go.test/test/fixedbugs/bug222.dir/chanbug.go
  18c4a659cfdf6a144c4686225a4a2a3b  gcc/testsuite/go.test/test/fixedbugs/bug222.dir/chanbug2.go
  884c662c56311de8680d42cc58c88ec3  gcc/testsuite/go.test/test/fixedbugs/bug222.go
  e1c9716ff0ae483677ac128b9be5697a  gcc/testsuite/go.test/test/fixedbugs/bug223.go
  89392d0274e807e5b32d00f73837c7fc  gcc/testsuite/go.test/test/fixedbugs/bug224.go
  8b06a47d2b2cd54c7dc9546774d434c8  gcc/testsuite/go.test/test/fixedbugs/bug225.go
! 0508b31f67356cb252c6369cd60ec1f0  gcc/testsuite/go.test/test/fixedbugs/bug227.go
! 7c4c971a1f30808e8b64ce2cdd60f42d  gcc/testsuite/go.test/test/fixedbugs/bug228.go
! 55c9b24ba90a00bb02279da9238e7599  gcc/testsuite/go.test/test/fixedbugs/bug229.go
! 026c30f78e0137d4eac72044d1b7d2a6  gcc/testsuite/go.test/test/fixedbugs/bug230.go
! a7e648a76c01e4c8b1e3431d58f07b1e  gcc/testsuite/go.test/test/fixedbugs/bug231.go
! ee859c4400b208ab1564eaa14bc2b1ba  gcc/testsuite/go.test/test/fixedbugs/bug232.go
! 6158772daecc166428d2c850377ef662  gcc/testsuite/go.test/test/fixedbugs/bug233.go
! 48ed328da550954871fac135579dcd61  gcc/testsuite/go.test/test/fixedbugs/bug234.go
! 6c5d69f2a5c82d74d96a6253326e0a4d  gcc/testsuite/go.test/test/fixedbugs/bug235.go
! eb012d0a68e9ee5e66d645efdd1b3079  gcc/testsuite/go.test/test/fixedbugs/bug236.go
! e8296b5677be56d1a6be60d0d0e443b6  gcc/testsuite/go.test/test/fixedbugs/bug237.go
  dbdc3b38085005fb7710f0e552aa195e  gcc/testsuite/go.test/test/fixedbugs/bug238.go
  2c156674d171dac35e8be82009e36bdd  gcc/testsuite/go.test/test/fixedbugs/bug239.go
  8c84c6a6be4f8c05ecb5ab7b1a230a89  gcc/testsuite/go.test/test/fixedbugs/bug240.go
  317e1f12ed804ffbad2841e18d9cc150  gcc/testsuite/go.test/test/fixedbugs/bug241.go
  95ff6be87db3156becd945631975f933  gcc/testsuite/go.test/test/fixedbugs/bug242.go
! 9558fa6aa55ad1aee066cac0b16b4966  gcc/testsuite/go.test/test/fixedbugs/bug243.go
  53fb4232a8eb76c0bb81eed4eedc8f13  gcc/testsuite/go.test/test/fixedbugs/bug244.go
! 146c0d95a4f7a8e5cd5429b3bf147947  gcc/testsuite/go.test/test/fixedbugs/bug245.go
  8397db3ef6fc6c6eaffb38e3e08db04a  gcc/testsuite/go.test/test/fixedbugs/bug246.go
! 4101596f246076a55ca9d216960c594f  gcc/testsuite/go.test/test/fixedbugs/bug247.go
  23882dae512815b43109c945fdf494d1  gcc/testsuite/go.test/test/fixedbugs/bug248.dir/bug0.go
! 23882dae512815b43109c945fdf494d1  gcc/testsuite/go.test/test/fixedbugs/bug248.dir/bug1.go
! 045dd413d59a7d3da6028eee46929d3b  gcc/testsuite/go.test/test/fixedbugs/bug248.dir/bug2.go
! 3e42d67e1a64f15b321e47f86f99b43c  gcc/testsuite/go.test/test/fixedbugs/bug248.dir/bug3.go
! 24ea914887e8b7331460573cb11a7a02  gcc/testsuite/go.test/test/fixedbugs/bug248.go
! 51438f240e2e959d2f4142d27f200d22  gcc/testsuite/go.test/test/fixedbugs/bug249.go
! cf0cb979ae680d10143d383766420916  gcc/testsuite/go.test/test/fixedbugs/bug250.go
! f4c00d27cc03aea06877978f3d0b3055  gcc/testsuite/go.test/test/fixedbugs/bug251.go
! 11b78fd727cfc775e2fca2e13f515688  gcc/testsuite/go.test/test/fixedbugs/bug252.go
! 9a7bf40265cb802229831cc8c877d979  gcc/testsuite/go.test/test/fixedbugs/bug253.go
! 0d404cd6036cef79b1954a1ed71bc981  gcc/testsuite/go.test/test/fixedbugs/bug254.go
! a0a93eb43893618cc7122cb67ee3d9e1  gcc/testsuite/go.test/test/fixedbugs/bug255.go
! 01247c5b4a87eafeb8ea523a9963a546  gcc/testsuite/go.test/test/fixedbugs/bug256.go
! 4cb15bb9b34438dd41142c86444117ef  gcc/testsuite/go.test/test/fixedbugs/bug257.go
! 7aaa8279e7d814ed167cd60da688854e  gcc/testsuite/go.test/test/fixedbugs/bug258.go
! 207a6c87cb898a30cb4d8595f3e52264  gcc/testsuite/go.test/test/fixedbugs/bug259.go
  d227355fee3eba14f9c166099cb94478  gcc/testsuite/go.test/test/fixedbugs/bug260.go
! 932d0e35e84ee88359801ec7b861fc4d  gcc/testsuite/go.test/test/fixedbugs/bug261.go
  b422a608b6acadd727362389d616742e  gcc/testsuite/go.test/test/fixedbugs/bug262.go
  58a93199bebe9096460bd58c31c910fb  gcc/testsuite/go.test/test/fixedbugs/bug263.go
! 36765cf0f3486b3b0513d0ced4481c9c  gcc/testsuite/go.test/test/fixedbugs/bug264.go
! 858f8529482176abb4516cf5b58dea4f  gcc/testsuite/go.test/test/fixedbugs/bug265.go
! ecaaa0ea2a8c222e3aa2ea0fd79873ec  gcc/testsuite/go.test/test/fixedbugs/bug266.go
  eb75062d9d1af2015bd5f411a366d90c  gcc/testsuite/go.test/test/fixedbugs/bug267.go
! 4f7fce135333047054a36b2f7cd5d94d  gcc/testsuite/go.test/test/fixedbugs/bug269.go
! d8b06593fa294ebe96699b9d2fc2f341  gcc/testsuite/go.test/test/fixedbugs/bug271.go
! e64341475b049a5a242aa3d79213e97f  gcc/testsuite/go.test/test/fixedbugs/bug272.go
! c8deea94b0800fb622692abd4e5ee9c8  gcc/testsuite/go.test/test/fixedbugs/bug273.go
! 45df6bf13258b3e84e01ae4a5e5635cd  gcc/testsuite/go.test/test/fixedbugs/bug274.go
! 9c95cd4331e0d89ae56c8a70f8f74e9e  gcc/testsuite/go.test/test/fixedbugs/bug275.go
  c7f98dd3eb33fe5e0d92d5e8ba0b0b98  gcc/testsuite/go.test/test/fixedbugs/bug276.go
  a2b8ce070edb4615e81d4203477c48fb  gcc/testsuite/go.test/test/fixedbugs/bug277.go
! c577e005b2b7f25f38a773524c7f5d18  gcc/testsuite/go.test/test/fixedbugs/bug278.go
! 5a0ef75768626ba9ed0a7f257e9fe08d  gcc/testsuite/go.test/test/fixedbugs/bug279.go
! dd2342e5ac74b1de4743b846f4e8b658  gcc/testsuite/go.test/test/fixedbugs/bug280.go
! 88ab932df99a8b8cdceda6bcf036ad03  gcc/testsuite/go.test/test/fixedbugs/bug281.go
! d42c6bd92e7949fe973881c4b3a56885  gcc/testsuite/go.test/test/fixedbugs/bug282.dir/p1.go
! 49e1700b4c1a526414960eb05b20680a  gcc/testsuite/go.test/test/fixedbugs/bug282.dir/p2.go
  884c662c56311de8680d42cc58c88ec3  gcc/testsuite/go.test/test/fixedbugs/bug282.go
! 178db1d55ea0c22db2b4c9623b6fa6ed  gcc/testsuite/go.test/test/fixedbugs/bug283.go
  7eebe8598e46f4bc0a5f9b03b5cda385  gcc/testsuite/go.test/test/fixedbugs/bug284.go
! 60441564ac6b4283e73d2229c26f192a  gcc/testsuite/go.test/test/fixedbugs/bug285.go
! 45e4a18758f85733ac9a1f3d71878e08  gcc/testsuite/go.test/test/fixedbugs/bug286.go
! 4b5b9d51c246aa6f744e67ce0f5e9653  gcc/testsuite/go.test/test/fixedbugs/bug287.go
! f77e1f9c8431cf218bf4f1debc4d9637  gcc/testsuite/go.test/test/fixedbugs/bug288.go
! b229459f9e53cdc531ac9b1c2b3d07ce  gcc/testsuite/go.test/test/fixedbugs/bug289.go
! 59c660db246df423b979cf5711a94201  gcc/testsuite/go.test/test/fixedbugs/bug290.go
! 46243af6c1ee6c03721fd1e16f47e772  gcc/testsuite/go.test/test/fixedbugs/bug291.go
! 9a3455c62726dd577bb61c0e340f2542  gcc/testsuite/go.test/test/fixedbugs/bug292.go
! 4e8f42c9030fa9257a7609504d9ff660  gcc/testsuite/go.test/test/fixedbugs/bug293.go
! 9be318454411a0b75088a133f2347c8e  gcc/testsuite/go.test/test/fixedbugs/bug294.go
! b053d8b0df0718385583bff923912161  gcc/testsuite/go.test/test/fixedbugs/bug295.go
! d550e689268d23027ecdca25420f79a5  gcc/testsuite/go.test/test/fixedbugs/bug296.go
! d46423b63a138c8b32cf944a2ed78e24  gcc/testsuite/go.test/test/fixedbugs/bug297.go
! 04afe32f9b9bd030e2215f699b78e8e6  gcc/testsuite/go.test/test/fixedbugs/bug298.go
! ab9464eab5f0436d866025b96e268f68  gcc/testsuite/go.test/test/fixedbugs/bug299.go
! 07a711c1c45535d271a69030f62921cc  gcc/testsuite/go.test/test/fixedbugs/bug300.go
! 24cb702a8b718cd4657f21b3f0dd7083  gcc/testsuite/go.test/test/fixedbugs/bug301.go
! f981c7013c37d6121502021f588679c2  gcc/testsuite/go.test/test/fixedbugs/bug302.dir/main.go
! 596eb4ea317f16ecf35b24b9fe89d34f  gcc/testsuite/go.test/test/fixedbugs/bug302.dir/p.go
! d678ecca6d803aac8fa1d9dfd181eb7b  gcc/testsuite/go.test/test/fixedbugs/bug302.go
! a7355ada70f75c05e778b323875d025c  gcc/testsuite/go.test/test/fixedbugs/bug303.go
! bc586ca218d76ead68791f8cdce6538b  gcc/testsuite/go.test/test/fixedbugs/bug304.go
! 9b57cc4c3bb3ab48c4ef6cbb812ce6f5  gcc/testsuite/go.test/test/fixedbugs/bug305.go
! acf04b3c826839a12452df3068cd97c2  gcc/testsuite/go.test/test/fixedbugs/bug306.dir/p1.go
! 49e1700b4c1a526414960eb05b20680a  gcc/testsuite/go.test/test/fixedbugs/bug306.dir/p2.go
  61c8437e6ddc16362116cf3cb994a86d  gcc/testsuite/go.test/test/fixedbugs/bug306.go
  f09010c20264f7160bb949d94b0a26a1  gcc/testsuite/go.test/test/fixedbugs/bug307.go
! f0f54d224900b733a3ace78f11224516  gcc/testsuite/go.test/test/fixedbugs/bug308.go
! 18c74a16f21386479f64b68ec02f2dd9  gcc/testsuite/go.test/test/fixedbugs/bug309.go
! 4d386aa3244cebc2a1f6395fe2c78998  gcc/testsuite/go.test/test/fixedbugs/bug311.go
! 3a2e31fca6a059f591e9b984b133c725  gcc/testsuite/go.test/test/fixedbugs/bug312.go
! 9fd8bcd90f86651c2818ba240f09d1ab  gcc/testsuite/go.test/test/fixedbugs/bug313.dir/a.go
! 091c28219eb42fe3898b169a6f9826ba  gcc/testsuite/go.test/test/fixedbugs/bug313.dir/b.go
! c9cc57abc4815623fa3c2356ba4e8f82  gcc/testsuite/go.test/test/fixedbugs/bug313.go
  a6b54145e6854443f94ea003bc73ae10  gcc/testsuite/go.test/test/fixedbugs/bug314.go
  4f2532374a5dcad2c33f697bbad3d11a  gcc/testsuite/go.test/test/fixedbugs/bug315.go
  c459f840a1490ae336386902d3c3d47b  gcc/testsuite/go.test/test/fixedbugs/bug316.go
! 4c0e80e6652da19c5c52bc94b78d5699  gcc/testsuite/go.test/test/fixedbugs/bug317.go
  1efbffacea91df04e1f4d85a2622b13a  gcc/testsuite/go.test/test/fixedbugs/bug318.go
! e1f91cb7bb53e1a34a1edb1fbfcc22e0  gcc/testsuite/go.test/test/fixedbugs/bug319.go
! 088a23ef7c9ee559629f83fde0eb3445  gcc/testsuite/go.test/test/fixedbugs/bug320.go
! b8bed0e153af22acd260f037494fc45c  gcc/testsuite/go.test/test/fixedbugs/bug321.go
  a083d234fefb01f4935f4eda6987fe15  gcc/testsuite/go.test/test/fixedbugs/bug322.dir/lib.go
  72fffc0f881c4a6382d58760719af78f  gcc/testsuite/go.test/test/fixedbugs/bug322.dir/main.go
  e07a48714e6e13791f72ffcc562478cd  gcc/testsuite/go.test/test/fixedbugs/bug322.go
! b4c4c39a34f065242a62e8d4e4e122f4  gcc/testsuite/go.test/test/fixedbugs/bug323.go
  f5c90e37313d1f2e5df959f6f083614b  gcc/testsuite/go.test/test/fixedbugs/bug324.dir/p.go
  2314291c8f0aa3a514402f381b871375  gcc/testsuite/go.test/test/fixedbugs/bug324.dir/prog.go
  ad167b91e69a278bdd2822470e5f55fa  gcc/testsuite/go.test/test/fixedbugs/bug324.go
! 192ab831afd2847d7c6ed3783617c9d3  gcc/testsuite/go.test/test/fixedbugs/bug325.go
! 60d26afbc8debfc7532221f4f7795420  gcc/testsuite/go.test/test/fixedbugs/bug326.go
! b1baee855ef0c66f6408dabc3daee4d6  gcc/testsuite/go.test/test/fixedbugs/bug327.go
! 2fe4da6cc969971c45a9661e7528c6d4  gcc/testsuite/go.test/test/fixedbugs/bug328.go
  2c1e50a164e562cd9737b1c81ebf3148  gcc/testsuite/go.test/test/fixedbugs/bug328.out
! da3264ca081ba889d6a3b4b824e7ecdd  gcc/testsuite/go.test/test/fixedbugs/bug329.go
! d12a76e2950d3fc8129acf641e218b19  gcc/testsuite/go.test/test/fixedbugs/bug330.go
! f41d5c56c6dafc9a91027d9678d00414  gcc/testsuite/go.test/test/fixedbugs/bug331.go
! 32cdf92d993f80f646d9ea93276887da  gcc/testsuite/go.test/test/fixedbugs/bug332.go
! 965c8744a5b8874773f90314b5f69a00  gcc/testsuite/go.test/test/fixedbugs/bug333.go
! 25e60eb879bc6d6016190e9d6e7a5586  gcc/testsuite/go.test/test/fixedbugs/bug334.go
! 89b26ba7bcace7ab1c9dd668b7d4880e  gcc/testsuite/go.test/test/fixedbugs/bug335.dir/a.go
! bea8856934af6c0bbeede6e3ee88d605  gcc/testsuite/go.test/test/fixedbugs/bug335.dir/b.go
! 1a13da479ed2ef054840255745c9b88a  gcc/testsuite/go.test/test/fixedbugs/bug335.go
! 51968d634ae82db2b6c0aa3a9b9964ad  gcc/testsuite/go.test/test/fixedbugs/bug336.go
! 6c185496079f891f8f20ed06cbfc078c  gcc/testsuite/go.test/test/fixedbugs/bug337.go
! ed3a5323aaa4492078b93e7c2059d958  gcc/testsuite/go.test/test/fixedbugs/bug338.go
! 13db0110ddbd33ebbe7794f7287d1813  gcc/testsuite/go.test/test/fixedbugs/bug339.go
! 288f8c8dc54fb5ea518048a1cac66904  gcc/testsuite/go.test/test/fixedbugs/bug340.go
! 473cef622d19a3354912748eb6083e34  gcc/testsuite/go.test/test/fixedbugs/bug341.go
! 250c4fe0a941619f1be3cbd3bde79b43  gcc/testsuite/go.test/test/fixedbugs/bug342.go
! 0632a727f865d107083a37f5a1a996fc  gcc/testsuite/go.test/test/fixedbugs/bug343.go
! e163035f0e73e440232c3d9e4e3529ef  gcc/testsuite/go.test/test/fixedbugs/bug344.go
! 64e3c8ea153bf2ea02b7a9193716b59c  gcc/testsuite/go.test/test/fixedbugs/bug345.dir/io.go
! b7f85a834cd2c8e997cb2e935f9b4ff2  gcc/testsuite/go.test/test/fixedbugs/bug345.dir/main.go
! df2d1cd61eea41a4bfb34c1e4aa61f49  gcc/testsuite/go.test/test/fixedbugs/bug345.go
! ca405a3dcbc1348f0b5a18986a84d737  gcc/testsuite/go.test/test/fixedbugs/bug346.go
! 586d9fca2ef20f9f4bb8f3370a9fbed5  gcc/testsuite/go.test/test/fixedbugs/bug347.go
! 847a01554fb70904e845a1985911123c  gcc/testsuite/go.test/test/fixedbugs/bug348.go
! 437f2746264025941a0b85412badd827  gcc/testsuite/go.test/test/fixedbugs/bug349.go
! 3b73edaf6ec54d7eb0c0cb4dfd98c7bf  gcc/testsuite/go.test/test/fixedbugs/bug350.go
! 483a38f0d785f75dcf6a94d425fef13f  gcc/testsuite/go.test/test/fixedbugs/bug351.go
! d78c7e244c6be7a392c1b94e615733b9  gcc/testsuite/go.test/test/fixedbugs/bug352.go
! e8a2e38840b5ea9786b030fc9e035594  gcc/testsuite/go.test/test/fixedbugs/bug353.go
! 28dee72da1d00da6f2b538db761d25e9  gcc/testsuite/go.test/test/fixedbugs/bug354.go
! f175b24c909b75080908e97c646a006f  gcc/testsuite/go.test/test/fixedbugs/bug355.go
! acf606c0a884650e6b6a62441a829809  gcc/testsuite/go.test/test/fixedbugs/bug356.go
! 9ad9be404bdcc3c107b245a2864020dd  gcc/testsuite/go.test/test/fixedbugs/bug357.go
! 46d692ed994838a9084192d57686ae03  gcc/testsuite/go.test/test/fixedbugs/bug358.go
! c9be804f45229be0569a4a3339528473  gcc/testsuite/go.test/test/fixedbugs/bug361.go
! 56c90b9f77a301105bc01b18fbbece06  gcc/testsuite/go.test/test/fixedbugs/bug362.go
! 3497ae120b3ec5f8d1c8f0f868c8ef93  gcc/testsuite/go.test/test/fixedbugs/bug363.go
  8303bb8f557b048386019b565bd17dca  gcc/testsuite/go.test/test/fixedbugs/bug364.go
! d5b4f9e469928b0be7b1a18258403456  gcc/testsuite/go.test/test/fixedbugs/bug365.go
! 91e44bab580bb557bd4f29ba074ab85a  gcc/testsuite/go.test/test/fixedbugs/bug366.go
  a7cb3bae40054f0bdff89ad3a696a3ab  gcc/testsuite/go.test/test/fixedbugs/bug367.dir/p.go
  5d555338db03589387a014bf5e72d821  gcc/testsuite/go.test/test/fixedbugs/bug367.dir/prog.go
  346748077516ca61edb7e1d3671f7fd1  gcc/testsuite/go.test/test/fixedbugs/bug367.go
! 0024d9bc11a20c8323fe8ba446bbd91c  gcc/testsuite/go.test/test/fixedbugs/bug368.go
! d0ab4df631f41563550a40bbced17b52  gcc/testsuite/go.test/test/fixedbugs/bug369.dir/pkg.go
! fb76c23c807302dce31a43f78eb73384  gcc/testsuite/go.test/test/fixedbugs/bug369.go
! 39e7481468d7aa2fa230f1c1b9238468  gcc/testsuite/go.test/test/fixedbugs/bug370.go
! ac7010a7bd9fac10b561a153c3d75575  gcc/testsuite/go.test/test/fixedbugs/bug371.go
! d9850bf14dbc42431376554507ca5eea  gcc/testsuite/go.test/test/fixedbugs/bug372.go
! 4779f1fd04482e63ab79833d5864c5eb  gcc/testsuite/go.test/test/fixedbugs/bug373.go
! 914d3558de83db9e1ed565d3bba817b1  gcc/testsuite/go.test/test/fixedbugs/bug374.go
! 08b0608ca83998396965d1e022e3b33f  gcc/testsuite/go.test/test/fixedbugs/bug375.go
! 8184aa557d1c6ef222024e3924f034af  gcc/testsuite/go.test/test/fixedbugs/bug376.go
  782faca381ecd9afcd0798f9b9a72149  gcc/testsuite/go.test/test/fixedbugs/bug377.dir/one.go
  64fd00a1c786dee6c3d0b54341b13fac  gcc/testsuite/go.test/test/fixedbugs/bug377.dir/two.go
  dfb850a9810e16d056509e8e8e9c63f9  gcc/testsuite/go.test/test/fixedbugs/bug377.go
! f74a71d4d23d55c6db7a67231afe103a  gcc/testsuite/go.test/test/fixedbugs/bug378.go
! 64a78b90f80a8902019c17d54e1be77c  gcc/testsuite/go.test/test/fixedbugs/bug379.go
! e546fd876d15c216053a0e3320e57dc9  gcc/testsuite/go.test/test/fixedbugs/bug380.go
! 811841a9bb9084c997d0490e84a61029  gcc/testsuite/go.test/test/fixedbugs/bug381.go
! b4d9cb7cee2a3412e99ee1dd9f266708  gcc/testsuite/go.test/test/fixedbugs/bug382.dir/pkg.go
  fc2f24175a4cfa9d9eee1f8d4e18bfed  gcc/testsuite/go.test/test/fixedbugs/bug382.dir/prog.go
  8a285ae889a9c80caa763e33b30dd362  gcc/testsuite/go.test/test/fixedbugs/bug382.go
! a4989ee56c0e1a4e851628e471c6f812  gcc/testsuite/go.test/test/fixedbugs/bug383.go
! de0c091e36575b3f41c72901345853fc  gcc/testsuite/go.test/test/fixedbugs/bug384.go
! 56bdd1bd07538601d48055dfb6284c1d  gcc/testsuite/go.test/test/fixedbugs/bug385_32.go
! d3791896b0f65ae9ea9cafd1548c350f  gcc/testsuite/go.test/test/fixedbugs/bug385_64.go
! d8f3a37af0ebc59ecb23813365439e6d  gcc/testsuite/go.test/test/fixedbugs/bug386.go
! b5f3154fd9db24839e5000e5ddcd11df  gcc/testsuite/go.test/test/fixedbugs/bug387.go
! 25dce515038a05e1ebfda937a7b4a827  gcc/testsuite/go.test/test/fixedbugs/bug388.go
! 4dc29605c142734f8c07f61b2782cc2f  gcc/testsuite/go.test/test/fixedbugs/bug389.go
  61a7e54ecb2d0b795c455d4e60350295  gcc/testsuite/go.test/test/fixedbugs/bug390.go
! 44e5910d860b1b72ca42fd911af7139c  gcc/testsuite/go.test/test/fixedbugs/bug391.go
! 92ac8051150bab955a5cce59884462a5  gcc/testsuite/go.test/test/fixedbugs/bug392.dir/one.go
! 375d83c8d8310eb2dd683386010b6aae  gcc/testsuite/go.test/test/fixedbugs/bug392.dir/pkg2.go
! 15fbbcca945adc8729a3e8db60390cf5  gcc/testsuite/go.test/test/fixedbugs/bug392.dir/pkg3.go
  646b095520d80ac1fc6fa29a5b99e936  gcc/testsuite/go.test/test/fixedbugs/bug392.go
! 57211a27cbf851174ffcab74a8f52950  gcc/testsuite/go.test/test/fixedbugs/bug393.go
! c0441c0a88d8d88be5eb7a73c45a8160  gcc/testsuite/go.test/test/fixedbugs/bug394.go
! 6e070c374ce5a0f1f38604cf27396f4a  gcc/testsuite/go.test/test/fixedbugs/bug396.dir/one.go
! 5b3d8ce2880fa9b62fc9d86b5a0b6cc2  gcc/testsuite/go.test/test/fixedbugs/bug396.dir/two.go
  646b095520d80ac1fc6fa29a5b99e936  gcc/testsuite/go.test/test/fixedbugs/bug396.go
! d1d5bfe32b7bf81aefc1cb7c123e56e1  gcc/testsuite/go.test/test/fixedbugs/bug397.go
! 614c1451269767ad3da17f84c1a46dd7  gcc/testsuite/go.test/test/fixedbugs/bug398.go
! bc2b5c4b2e20751a9dfb0805e2a386c3  gcc/testsuite/go.test/test/fixedbugs/bug399.go
! c6c83893623b69d10bb461780b720dc6  gcc/testsuite/go.test/test/fixedbugs/bug401.go
! 1c4b7db3e61057a1886fe71ae12a4729  gcc/testsuite/go.test/test/fixedbugs/bug402.go
! e86c140be3d411f78946c1d4910c559b  gcc/testsuite/go.test/test/fixedbugs/bug403.go
! a191140ea1b40fc06a9a895c62353d41  gcc/testsuite/go.test/test/fixedbugs/bug404.dir/one.go
! 36e74108293d119fec49302c28e91748  gcc/testsuite/go.test/test/fixedbugs/bug404.dir/two.go
  218ffecfac9923fe67e8220706fbbb7b  gcc/testsuite/go.test/test/fixedbugs/bug404.go
  7e9f8a7f6bf8b6100d050923f976ac58  gcc/testsuite/go.test/test/fixedbugs/bug405.go
! c69c7035a2e9563abe848d22ed12b705  gcc/testsuite/go.test/test/fixedbugs/bug406.go
! 88ab3c59adaa5402fcfd00fe39cfd741  gcc/testsuite/go.test/test/fixedbugs/bug407.dir/one.go
! bcda4b850a5c39c69d1759f32d4cec95  gcc/testsuite/go.test/test/fixedbugs/bug407.dir/two.go
  646b095520d80ac1fc6fa29a5b99e936  gcc/testsuite/go.test/test/fixedbugs/bug407.go
! db53af9b24817672917a3acefbdae2e3  gcc/testsuite/go.test/test/fixedbugs/bug409.go
  b2da4073238f992900af7d530a049044  gcc/testsuite/go.test/test/fixedbugs/bug409.out
! 33476b4a926fd252b27886588fe9af3d  gcc/testsuite/go.test/test/fixedbugs/bug410.go
! b3b9ea9f96eb142647f6a6cb403d2fb1  gcc/testsuite/go.test/test/fixedbugs/bug411.go
! 3b34fe1749ee33749c57943a72d57f99  gcc/testsuite/go.test/test/fixedbugs/bug412.go
! 0cc1d4050c8bcd14de8561803daabe36  gcc/testsuite/go.test/test/fixedbugs/bug413.go
! 37042dfd56e1b094af096c1acea2679e  gcc/testsuite/go.test/test/fixedbugs/bug414.dir/p1.go
! 9c919baea5763f11763dd41249fadc14  gcc/testsuite/go.test/test/fixedbugs/bug414.dir/prog.go
! b443436c1116c5a9b1bc2cca63ee2a59  gcc/testsuite/go.test/test/fixedbugs/bug414.go
! b04b5b11cc671b0193f995fc47b6033b  gcc/testsuite/go.test/test/fixedbugs/bug415.dir/p.go
! 487d4776af482bc6a4f17464fdcab6b2  gcc/testsuite/go.test/test/fixedbugs/bug415.dir/prog.go
! f2bc3387826b74f065d0bbac3fefa745  gcc/testsuite/go.test/test/fixedbugs/bug415.go
! f58b117a24b1dac565674affd77644c4  gcc/testsuite/go.test/test/fixedbugs/bug416.go
  b2a388e3cc9a972cebce2a53612e8ba5  gcc/testsuite/go.test/test/fixedbugs/bug417.go
  f38362909f0503818aa1a68aed7e295c  gcc/testsuite/go.test/test/fixedbugs/bug418.go
  8f69b018e1508d3a37e3b0c9cdcf1acf  gcc/testsuite/go.test/test/fixedbugs/bug419.go
--- 82334,82588 ----
  de3fd8059b9295c3a90c01d2972ce537  gcc/testsuite/go.test/test/fixedbugs/bug200.go
  cda63c60241c3c312f60e56738ff54a1  gcc/testsuite/go.test/test/fixedbugs/bug201.go
  d25ec82c3652a91c199754800bc9dd61  gcc/testsuite/go.test/test/fixedbugs/bug202.go
! 00fc74141976bf1e9c633e0f3655e907  gcc/testsuite/go.test/test/fixedbugs/bug203.go
  1395b42d53c81106aa46b02499dbc7ed  gcc/testsuite/go.test/test/fixedbugs/bug204.go
  21c11d6bfcf3dcc45fd61c71a1f06c6d  gcc/testsuite/go.test/test/fixedbugs/bug205.go
! b31a2930f728bace6811c630894373df  gcc/testsuite/go.test/test/fixedbugs/bug206.go
  c4da2b805df8425bccc182ad4db8422a  gcc/testsuite/go.test/test/fixedbugs/bug206.out
  9a5cd1da216abadfb63521b5a12588ac  gcc/testsuite/go.test/test/fixedbugs/bug207.go
  8567aa5929b22f7d16b40ef7f3ce82d7  gcc/testsuite/go.test/test/fixedbugs/bug208.go
  39d3ff373fcf49ab5c0550bbcc3a9faf  gcc/testsuite/go.test/test/fixedbugs/bug209.go
  4b4d1fff45a653b52739eda91f60cd87  gcc/testsuite/go.test/test/fixedbugs/bug212.go
  ea18c4fbc121934a10b0ded788af79a7  gcc/testsuite/go.test/test/fixedbugs/bug213.go
! 81c35cefb84e4feac8e401f977d4ba05  gcc/testsuite/go.test/test/fixedbugs/bug214.go
! 2804952f976329fd991ba5c218f8606f  gcc/testsuite/go.test/test/fixedbugs/bug215.go
! 4ade83fc7a56fd31b18aa8abcca75a65  gcc/testsuite/go.test/test/fixedbugs/bug216.go
! 5f685d33abaddad5330a7e6dc4b08507  gcc/testsuite/go.test/test/fixedbugs/bug217.go
! ac327da99a8df2a5457cfef6e96a3793  gcc/testsuite/go.test/test/fixedbugs/bug218.go
  3830336bf1c4e5a0ffe7532709ddc2e0  gcc/testsuite/go.test/test/fixedbugs/bug219.go
! 24d594da13083e41656cfbda944bfc55  gcc/testsuite/go.test/test/fixedbugs/bug221.go
  2fc62da80b9cb1a7ab428be21a2c196f  gcc/testsuite/go.test/test/fixedbugs/bug222.dir/chanbug.go
  18c4a659cfdf6a144c4686225a4a2a3b  gcc/testsuite/go.test/test/fixedbugs/bug222.dir/chanbug2.go
  884c662c56311de8680d42cc58c88ec3  gcc/testsuite/go.test/test/fixedbugs/bug222.go
  e1c9716ff0ae483677ac128b9be5697a  gcc/testsuite/go.test/test/fixedbugs/bug223.go
  89392d0274e807e5b32d00f73837c7fc  gcc/testsuite/go.test/test/fixedbugs/bug224.go
  8b06a47d2b2cd54c7dc9546774d434c8  gcc/testsuite/go.test/test/fixedbugs/bug225.go
! 2ef44e3401ee849e56f64ccebdc0b15f  gcc/testsuite/go.test/test/fixedbugs/bug227.go
! 19f6532aae806d3b612f32575537be07  gcc/testsuite/go.test/test/fixedbugs/bug228.go
! 2a4690f831f24f77ff5d5de5e30c7d2d  gcc/testsuite/go.test/test/fixedbugs/bug229.go
! a9e4385bd9ea7113add482adea369896  gcc/testsuite/go.test/test/fixedbugs/bug230.go
! e04843393be1180b601d6adf47e98bbc  gcc/testsuite/go.test/test/fixedbugs/bug231.go
! 0372acdaf5f32229466f39284ac03360  gcc/testsuite/go.test/test/fixedbugs/bug232.go
! 3584eed068746c443726610f2abe9a66  gcc/testsuite/go.test/test/fixedbugs/bug233.go
! 89eaa45e913e46e8f0e446e84e0a19dd  gcc/testsuite/go.test/test/fixedbugs/bug234.go
! 1ee23776d847cdcc0295db9c4ed8fbaf  gcc/testsuite/go.test/test/fixedbugs/bug235.go
! 6abc3af76cbd5d1f3831901472f112da  gcc/testsuite/go.test/test/fixedbugs/bug236.go
! b37ccf1113857cff3778cea8577a86fc  gcc/testsuite/go.test/test/fixedbugs/bug237.go
  dbdc3b38085005fb7710f0e552aa195e  gcc/testsuite/go.test/test/fixedbugs/bug238.go
  2c156674d171dac35e8be82009e36bdd  gcc/testsuite/go.test/test/fixedbugs/bug239.go
  8c84c6a6be4f8c05ecb5ab7b1a230a89  gcc/testsuite/go.test/test/fixedbugs/bug240.go
  317e1f12ed804ffbad2841e18d9cc150  gcc/testsuite/go.test/test/fixedbugs/bug241.go
  95ff6be87db3156becd945631975f933  gcc/testsuite/go.test/test/fixedbugs/bug242.go
! f3cbd847bbd26ff76fedaad30b0d4928  gcc/testsuite/go.test/test/fixedbugs/bug243.go
  53fb4232a8eb76c0bb81eed4eedc8f13  gcc/testsuite/go.test/test/fixedbugs/bug244.go
! fb8560c4fb7072ef059d13dc5575339c  gcc/testsuite/go.test/test/fixedbugs/bug245.go
  8397db3ef6fc6c6eaffb38e3e08db04a  gcc/testsuite/go.test/test/fixedbugs/bug246.go
! 74bf91bbff0923928f9cee6df0c9e476  gcc/testsuite/go.test/test/fixedbugs/bug247.go
  23882dae512815b43109c945fdf494d1  gcc/testsuite/go.test/test/fixedbugs/bug248.dir/bug0.go
! d56d5c77dd85625efe65137b4f698904  gcc/testsuite/go.test/test/fixedbugs/bug248.dir/bug1.go
! 55cb7e95124812008055f6b1dcc1e92c  gcc/testsuite/go.test/test/fixedbugs/bug248.dir/bug2.go
! 045dd413d59a7d3da6028eee46929d3b  gcc/testsuite/go.test/test/fixedbugs/bug248.dir/bug3.go
! 99d1eacbae455e2b05de4cd73607b656  gcc/testsuite/go.test/test/fixedbugs/bug248.go
! ab31e6b0c759c703396d9d80141ea0e0  gcc/testsuite/go.test/test/fixedbugs/bug249.go
! d841b0d5f44dff1ad86ece61b4b6d387  gcc/testsuite/go.test/test/fixedbugs/bug250.go
! ba15f5a460497cb701dcb991221cba0b  gcc/testsuite/go.test/test/fixedbugs/bug251.go
! 9e010d93bcbdca87dc23feaa616f0632  gcc/testsuite/go.test/test/fixedbugs/bug252.go
! 72a0cdf0cf1d42ac87d605ec01570651  gcc/testsuite/go.test/test/fixedbugs/bug253.go
! e781b766aba6847f65b62da22b1fd285  gcc/testsuite/go.test/test/fixedbugs/bug254.go
! 885a7d46a747ac6b0584735b82800409  gcc/testsuite/go.test/test/fixedbugs/bug255.go
! 9d2866947b2138c6779e3c35fb17be32  gcc/testsuite/go.test/test/fixedbugs/bug256.go
! 0a3f9df3c8b85f789c88a96af2ab8682  gcc/testsuite/go.test/test/fixedbugs/bug257.go
! efddade1f5f8948c10128b8d4f305a72  gcc/testsuite/go.test/test/fixedbugs/bug258.go
! 4d689c1b03a43cc89ba7b9644983d3f7  gcc/testsuite/go.test/test/fixedbugs/bug259.go
  d227355fee3eba14f9c166099cb94478  gcc/testsuite/go.test/test/fixedbugs/bug260.go
! 1b96743db68d242b1aceaca7b7e614cd  gcc/testsuite/go.test/test/fixedbugs/bug261.go
  b422a608b6acadd727362389d616742e  gcc/testsuite/go.test/test/fixedbugs/bug262.go
  58a93199bebe9096460bd58c31c910fb  gcc/testsuite/go.test/test/fixedbugs/bug263.go
! e10dffc76856bcf523d651ed45e96059  gcc/testsuite/go.test/test/fixedbugs/bug264.go
! bb5eb6e75d56bef7483fb2c83d2e0ae3  gcc/testsuite/go.test/test/fixedbugs/bug265.go
! 9b9c72f46b3a45bcdc38472b171debd3  gcc/testsuite/go.test/test/fixedbugs/bug266.go
  eb75062d9d1af2015bd5f411a366d90c  gcc/testsuite/go.test/test/fixedbugs/bug267.go
! 8b6388d36378782511a52dda2cbcda23  gcc/testsuite/go.test/test/fixedbugs/bug269.go
! 3e894e4da08381303103a14d26a02b7b  gcc/testsuite/go.test/test/fixedbugs/bug271.go
! 70ce6f88b84a9df1abc1e39c4ff9b086  gcc/testsuite/go.test/test/fixedbugs/bug272.go
! 06110bd31b22cb12702802d56c998148  gcc/testsuite/go.test/test/fixedbugs/bug273.go
! ecfe2d4a4793df33cb87617a4f9af844  gcc/testsuite/go.test/test/fixedbugs/bug274.go
! e45c85a3ca0d2eab406a0b0daa9b0b3a  gcc/testsuite/go.test/test/fixedbugs/bug275.go
  c7f98dd3eb33fe5e0d92d5e8ba0b0b98  gcc/testsuite/go.test/test/fixedbugs/bug276.go
  a2b8ce070edb4615e81d4203477c48fb  gcc/testsuite/go.test/test/fixedbugs/bug277.go
! 6da827b7491284eac2f3b66cbf85180c  gcc/testsuite/go.test/test/fixedbugs/bug278.go
! 2b00613615ee21bf1d97223796c7d9a7  gcc/testsuite/go.test/test/fixedbugs/bug279.go
! b84434b1d694eab2ac46cedc722f0bfb  gcc/testsuite/go.test/test/fixedbugs/bug280.go
! ae4305de1ac915d02d6e0eb72fd77066  gcc/testsuite/go.test/test/fixedbugs/bug281.go
! 79d7043e5ecae87105b90be4972b5aae  gcc/testsuite/go.test/test/fixedbugs/bug282.dir/p1.go
! 6ec47e4d7f2f71912b2be70c112b26c8  gcc/testsuite/go.test/test/fixedbugs/bug282.dir/p2.go
  884c662c56311de8680d42cc58c88ec3  gcc/testsuite/go.test/test/fixedbugs/bug282.go
! 0f44b6fd5804d3214a1218d55b39fca3  gcc/testsuite/go.test/test/fixedbugs/bug283.go
  7eebe8598e46f4bc0a5f9b03b5cda385  gcc/testsuite/go.test/test/fixedbugs/bug284.go
! 116a9dc70bc3fabe7a2853a29c61e968  gcc/testsuite/go.test/test/fixedbugs/bug285.go
! ded8e9c5a764f8e234c3d166afde511b  gcc/testsuite/go.test/test/fixedbugs/bug286.go
! 8f99c13024b8f4f1a10f263225565d85  gcc/testsuite/go.test/test/fixedbugs/bug287.go
! 2749dc121f5067fbf99b167e4756e77e  gcc/testsuite/go.test/test/fixedbugs/bug288.go
! 48d3cebc43e05ad226b999b44a104dd3  gcc/testsuite/go.test/test/fixedbugs/bug289.go
! b4a3d132a4a3485691a40393ca9eb8e7  gcc/testsuite/go.test/test/fixedbugs/bug290.go
! 7ed8af49c9cc7b5fe0fce95228a9eaa2  gcc/testsuite/go.test/test/fixedbugs/bug291.go
! ac4952cb48a50190f816a280714678f2  gcc/testsuite/go.test/test/fixedbugs/bug292.go
! 0a74f5f172048064861a09134649ac96  gcc/testsuite/go.test/test/fixedbugs/bug293.go
! 27b06f5e362c047c95580d1ba8749c89  gcc/testsuite/go.test/test/fixedbugs/bug294.go
! cfd04bea3d0897ffbb7849d6ee3c7d2d  gcc/testsuite/go.test/test/fixedbugs/bug295.go
! f88cec4e7b2ffb458dcf5260bc43e6d6  gcc/testsuite/go.test/test/fixedbugs/bug296.go
! d7d68952dbd8960fa1a1c5462c175bb5  gcc/testsuite/go.test/test/fixedbugs/bug297.go
! 0211b455e13ea24bd13ffa8ded23ad47  gcc/testsuite/go.test/test/fixedbugs/bug298.go
! c9d6181cbaba49caaab9654c6a52146c  gcc/testsuite/go.test/test/fixedbugs/bug299.go
! fee99c27fc20419fe96cc3a61ba03b33  gcc/testsuite/go.test/test/fixedbugs/bug300.go
! df31100c8c14f2add0c8e485f5a69f09  gcc/testsuite/go.test/test/fixedbugs/bug301.go
! 08710cfa10067872002f2f6d98262b14  gcc/testsuite/go.test/test/fixedbugs/bug302.dir/main.go
! c6b4b82aa1a190f9f911a1c893d8058f  gcc/testsuite/go.test/test/fixedbugs/bug302.dir/p.go
! cc93149221a14e1ec817d973b1f16151  gcc/testsuite/go.test/test/fixedbugs/bug302.go
! dfc8df5f3e73487b5158b8923de4e5e8  gcc/testsuite/go.test/test/fixedbugs/bug303.go
! 87fa30d26ef781acd62589c60df7df31  gcc/testsuite/go.test/test/fixedbugs/bug304.go
! 2ed8e6fcd4b757bd242e26d11f30da35  gcc/testsuite/go.test/test/fixedbugs/bug305.go
! cbcb7a7e724ebd1674c866429adb3caa  gcc/testsuite/go.test/test/fixedbugs/bug306.dir/p1.go
! 6ec47e4d7f2f71912b2be70c112b26c8  gcc/testsuite/go.test/test/fixedbugs/bug306.dir/p2.go
  61c8437e6ddc16362116cf3cb994a86d  gcc/testsuite/go.test/test/fixedbugs/bug306.go
  f09010c20264f7160bb949d94b0a26a1  gcc/testsuite/go.test/test/fixedbugs/bug307.go
! f2ca1a2ea485a8187fa72f82b3f357b2  gcc/testsuite/go.test/test/fixedbugs/bug308.go
! 99db310a3e59aeb9a0ced9003be2ab60  gcc/testsuite/go.test/test/fixedbugs/bug309.go
! 061c90702a6a96457a39c670bf9e2364  gcc/testsuite/go.test/test/fixedbugs/bug311.go
! ad88ad1cf455fb2b5c41aa8f1b8073a2  gcc/testsuite/go.test/test/fixedbugs/bug312.go
! 30fdd58dbb396a8a2ddfe98a982a3a53  gcc/testsuite/go.test/test/fixedbugs/bug313.dir/a.go
! 11fc093080e7b03dd06fa1bbf90445d4  gcc/testsuite/go.test/test/fixedbugs/bug313.dir/b.go
! 47f35ad1ffffe839447c0df172999ef2  gcc/testsuite/go.test/test/fixedbugs/bug313.go
  a6b54145e6854443f94ea003bc73ae10  gcc/testsuite/go.test/test/fixedbugs/bug314.go
  4f2532374a5dcad2c33f697bbad3d11a  gcc/testsuite/go.test/test/fixedbugs/bug315.go
  c459f840a1490ae336386902d3c3d47b  gcc/testsuite/go.test/test/fixedbugs/bug316.go
! c5fe1ec2013bb7c0e14d2b31f5545fc2  gcc/testsuite/go.test/test/fixedbugs/bug317.go
  1efbffacea91df04e1f4d85a2622b13a  gcc/testsuite/go.test/test/fixedbugs/bug318.go
! e286b21f36283dd55bed73d08764f5ea  gcc/testsuite/go.test/test/fixedbugs/bug319.go
! f88e49d5dd83b97f9f028ffd0ad87983  gcc/testsuite/go.test/test/fixedbugs/bug320.go
! 11d74bc4a769076fb33c4140aaa9fcf5  gcc/testsuite/go.test/test/fixedbugs/bug321.go
  a083d234fefb01f4935f4eda6987fe15  gcc/testsuite/go.test/test/fixedbugs/bug322.dir/lib.go
  72fffc0f881c4a6382d58760719af78f  gcc/testsuite/go.test/test/fixedbugs/bug322.dir/main.go
  e07a48714e6e13791f72ffcc562478cd  gcc/testsuite/go.test/test/fixedbugs/bug322.go
! f2a37894cd955c57c99d50cbd1bd2d56  gcc/testsuite/go.test/test/fixedbugs/bug323.go
  f5c90e37313d1f2e5df959f6f083614b  gcc/testsuite/go.test/test/fixedbugs/bug324.dir/p.go
  2314291c8f0aa3a514402f381b871375  gcc/testsuite/go.test/test/fixedbugs/bug324.dir/prog.go
  ad167b91e69a278bdd2822470e5f55fa  gcc/testsuite/go.test/test/fixedbugs/bug324.go
! 8747225ee941c1e002299cbeb96ccf08  gcc/testsuite/go.test/test/fixedbugs/bug325.go
! 855ec2d5d2365f8e5db51a8c5a588e4c  gcc/testsuite/go.test/test/fixedbugs/bug326.go
! 74b54ccef0189b0e9c7997caa0ba2424  gcc/testsuite/go.test/test/fixedbugs/bug327.go
! cdbf18c1f7bd50806796c6f2bf831ae8  gcc/testsuite/go.test/test/fixedbugs/bug328.go
  2c1e50a164e562cd9737b1c81ebf3148  gcc/testsuite/go.test/test/fixedbugs/bug328.out
! 09179a31ecd5b4a3b5fbcbcf5b4ec55e  gcc/testsuite/go.test/test/fixedbugs/bug329.go
! 41b63110966b0b7be4a0ab61a3e524bb  gcc/testsuite/go.test/test/fixedbugs/bug330.go
! 31b27f1467fb8f12f937dab1fcaa4163  gcc/testsuite/go.test/test/fixedbugs/bug331.go
! f32495da02705bf4475c60fa5cb9788b  gcc/testsuite/go.test/test/fixedbugs/bug332.go
! ce28aa43867d443c3b52090019e3f0b7  gcc/testsuite/go.test/test/fixedbugs/bug333.go
! 62be92dca8a06cd6f21bf6614c9394dd  gcc/testsuite/go.test/test/fixedbugs/bug334.go
! 7b716985a3d6245a9c301c7e0c0bc27a  gcc/testsuite/go.test/test/fixedbugs/bug335.dir/a.go
! 1ac0fafc2e0c6f285654ea5eea479a68  gcc/testsuite/go.test/test/fixedbugs/bug335.dir/b.go
! e5c5442cb9e6d43fc4f3b14546f9726d  gcc/testsuite/go.test/test/fixedbugs/bug335.go
! 8d68e9414c9af97a9210f011922c020b  gcc/testsuite/go.test/test/fixedbugs/bug336.go
! 9a571a32db9d53cd258ec09cf2b5d1e3  gcc/testsuite/go.test/test/fixedbugs/bug337.go
! 9d9ab1bdf4a7c70544ee5d88de0e0f88  gcc/testsuite/go.test/test/fixedbugs/bug338.go
! fb410b60ec56d497a25c5232009fd41b  gcc/testsuite/go.test/test/fixedbugs/bug339.go
! f4efc48ea4dff95fb0e34b945ab626d8  gcc/testsuite/go.test/test/fixedbugs/bug340.go
! da010f468b3c41c62c94d5afe3a73d85  gcc/testsuite/go.test/test/fixedbugs/bug341.go
! 6ebe57632fdf371c98d496e07f434104  gcc/testsuite/go.test/test/fixedbugs/bug342.go
! 1b1affe6962409f11115b8a5196f1d03  gcc/testsuite/go.test/test/fixedbugs/bug343.go
! 8b281a2a4bc03687e71714fe4ae2a7fa  gcc/testsuite/go.test/test/fixedbugs/bug344.go
! e235ff1ef4bca8a73b5ac7a0a0bb4a77  gcc/testsuite/go.test/test/fixedbugs/bug345.dir/io.go
! ebf44fa68672c6fa1527c8fe1ae08e79  gcc/testsuite/go.test/test/fixedbugs/bug345.dir/main.go
! 4e3c5b46834fe4aef65dba2d9f305f9d  gcc/testsuite/go.test/test/fixedbugs/bug345.go
! 4effda78fe1f5b0bf2cd5a6dc0c3ee93  gcc/testsuite/go.test/test/fixedbugs/bug346.go
! 88fc9406cba494ed34c52f582f0ec2a8  gcc/testsuite/go.test/test/fixedbugs/bug347.go
! 1009fe07fd0c3a60eab62be24f57b5c5  gcc/testsuite/go.test/test/fixedbugs/bug348.go
! 8df3e76891220f6706ffdfbddf0f615f  gcc/testsuite/go.test/test/fixedbugs/bug349.go
! d61313cb1ed4b54e967c358724c8eb22  gcc/testsuite/go.test/test/fixedbugs/bug350.go
! f4b8a6d2010b2853b84fee808bff462f  gcc/testsuite/go.test/test/fixedbugs/bug351.go
! 1caf5ec46b4b71a4f3d4a6296bb47194  gcc/testsuite/go.test/test/fixedbugs/bug352.go
! 0b0db0364a0996a868953bdbb09d437c  gcc/testsuite/go.test/test/fixedbugs/bug353.go
! 33e54f670bcc776413d41f4147ce8321  gcc/testsuite/go.test/test/fixedbugs/bug354.go
! 359cb14d9f0606834f3f3907994e6caf  gcc/testsuite/go.test/test/fixedbugs/bug355.go
! 55afd8933769d61afa7df2e017bd6511  gcc/testsuite/go.test/test/fixedbugs/bug356.go
! c4c52579f6c8c9b50e4a2e916aa95828  gcc/testsuite/go.test/test/fixedbugs/bug357.go
! b976f88514daff23d7354afb83ac4352  gcc/testsuite/go.test/test/fixedbugs/bug358.go
! 16ea5bbc68c49b9d6e65193318d12a70  gcc/testsuite/go.test/test/fixedbugs/bug361.go
! 85b45629f22f1fd80818b0e70c907be2  gcc/testsuite/go.test/test/fixedbugs/bug362.go
! fddb7a124fa3b04bfded642aa5fccf9c  gcc/testsuite/go.test/test/fixedbugs/bug363.go
  8303bb8f557b048386019b565bd17dca  gcc/testsuite/go.test/test/fixedbugs/bug364.go
! f606c6dae3bb79ca7fc08c16d4175038  gcc/testsuite/go.test/test/fixedbugs/bug365.go
! bc4bde8c3f522fc29fea652d16977e70  gcc/testsuite/go.test/test/fixedbugs/bug366.go
  a7cb3bae40054f0bdff89ad3a696a3ab  gcc/testsuite/go.test/test/fixedbugs/bug367.dir/p.go
  5d555338db03589387a014bf5e72d821  gcc/testsuite/go.test/test/fixedbugs/bug367.dir/prog.go
  346748077516ca61edb7e1d3671f7fd1  gcc/testsuite/go.test/test/fixedbugs/bug367.go
! bb2139abbbb0f1cea8262def6a58c08d  gcc/testsuite/go.test/test/fixedbugs/bug368.go
! 56f14efee9a93535c25dad175e0eb9d6  gcc/testsuite/go.test/test/fixedbugs/bug369.dir/main.go
! b2e3bae53da4c929e8b67d1e9a4aa134  gcc/testsuite/go.test/test/fixedbugs/bug369.dir/pkg.go
! 17acaf32f0a5959b91dd484236e75362  gcc/testsuite/go.test/test/fixedbugs/bug369.go
! 57769a3bac20fa810085819612f7cea2  gcc/testsuite/go.test/test/fixedbugs/bug370.go
! f2d21f4ee676bd27e7b1e9a30ac28eed  gcc/testsuite/go.test/test/fixedbugs/bug371.go
! 3f86f37414cb3680619d391a966261ce  gcc/testsuite/go.test/test/fixedbugs/bug372.go
! 0bf61e59f102204be4198ccf1e2ce0d0  gcc/testsuite/go.test/test/fixedbugs/bug373.go
! 4b9f18466fa100daf3d446329277ae54  gcc/testsuite/go.test/test/fixedbugs/bug374.go
! 6d420f157ccee7e4b82b3e6260353cb7  gcc/testsuite/go.test/test/fixedbugs/bug375.go
! f9d221a78994b579f8c2528948357859  gcc/testsuite/go.test/test/fixedbugs/bug376.go
  782faca381ecd9afcd0798f9b9a72149  gcc/testsuite/go.test/test/fixedbugs/bug377.dir/one.go
  64fd00a1c786dee6c3d0b54341b13fac  gcc/testsuite/go.test/test/fixedbugs/bug377.dir/two.go
  dfb850a9810e16d056509e8e8e9c63f9  gcc/testsuite/go.test/test/fixedbugs/bug377.go
! 20b25a1ef2b28d28a83dc696c9250f9d  gcc/testsuite/go.test/test/fixedbugs/bug378.go
! 21ded7ac59b53193edf29f6124176602  gcc/testsuite/go.test/test/fixedbugs/bug379.go
! 610f6d05efc2f62e210c7a034231cb8a  gcc/testsuite/go.test/test/fixedbugs/bug380.go
! f4ee9f8ff1517700c29699bd9224faea  gcc/testsuite/go.test/test/fixedbugs/bug381.go
! a26f3c41ab5f11e6962e5e5fc67e49ab  gcc/testsuite/go.test/test/fixedbugs/bug382.dir/pkg.go
  fc2f24175a4cfa9d9eee1f8d4e18bfed  gcc/testsuite/go.test/test/fixedbugs/bug382.dir/prog.go
  8a285ae889a9c80caa763e33b30dd362  gcc/testsuite/go.test/test/fixedbugs/bug382.go
! 02415d000b0410f04051ca8c9eb36e0b  gcc/testsuite/go.test/test/fixedbugs/bug383.go
! ce109371d8223bfcd5733150d5ee6eb1  gcc/testsuite/go.test/test/fixedbugs/bug384.go
! 5e68f9c4ee41f3b98a7361ae92ac85b3  gcc/testsuite/go.test/test/fixedbugs/bug385_32.go
! e61860dfa670a92e0f7e9a4602067d42  gcc/testsuite/go.test/test/fixedbugs/bug385_64.go
! 335e5038a4b0749ca6d4e5d71dd80025  gcc/testsuite/go.test/test/fixedbugs/bug386.go
! 0c1e3e0cc9776ceafa2f7e9b0b659e45  gcc/testsuite/go.test/test/fixedbugs/bug387.go
! 0572d9d500b09349173a0e35f71c5570  gcc/testsuite/go.test/test/fixedbugs/bug388.go
! fc8d6b2f062de25ae7435e317046288f  gcc/testsuite/go.test/test/fixedbugs/bug389.go
  61a7e54ecb2d0b795c455d4e60350295  gcc/testsuite/go.test/test/fixedbugs/bug390.go
! c6f7c8e1c303c78f8bbadfbfe9eccef2  gcc/testsuite/go.test/test/fixedbugs/bug391.go
! 74522b13be6327687bddc0a557bca961  gcc/testsuite/go.test/test/fixedbugs/bug392.dir/one.go
! b3ed3db988c51965f12991f19319188d  gcc/testsuite/go.test/test/fixedbugs/bug392.dir/pkg2.go
! a949d37f811cdf6f90b506b2d33a79e8  gcc/testsuite/go.test/test/fixedbugs/bug392.dir/pkg3.go
  646b095520d80ac1fc6fa29a5b99e936  gcc/testsuite/go.test/test/fixedbugs/bug392.go
! b7d88ef0fb3494eaf5a4aafd494ddd13  gcc/testsuite/go.test/test/fixedbugs/bug393.go
! 3923def0b9997ec6d5bc2c66fe52f801  gcc/testsuite/go.test/test/fixedbugs/bug394.go
! a582a46a91edf2e182b43fe7e8811881  gcc/testsuite/go.test/test/fixedbugs/bug396.dir/one.go
! f436ffdad67dc1c788e76a19b105648b  gcc/testsuite/go.test/test/fixedbugs/bug396.dir/two.go
  646b095520d80ac1fc6fa29a5b99e936  gcc/testsuite/go.test/test/fixedbugs/bug396.go
! f388c2b528ed99cedceb82f60cb5f744  gcc/testsuite/go.test/test/fixedbugs/bug397.go
! 1effe79e34e11203ee19f9e8f3a3498f  gcc/testsuite/go.test/test/fixedbugs/bug398.go
! bc58d0f5d28a10f049abf4e298702be2  gcc/testsuite/go.test/test/fixedbugs/bug399.go
! ab2327532d18e77702945e6be9570899  gcc/testsuite/go.test/test/fixedbugs/bug401.go
! e59173a6e68479576c758e2c8c05d2d5  gcc/testsuite/go.test/test/fixedbugs/bug402.go
! 18cf195b3582230b99d16aa228236ab6  gcc/testsuite/go.test/test/fixedbugs/bug403.go
! 96457adcdfc52d48681e29d8d2ac8309  gcc/testsuite/go.test/test/fixedbugs/bug404.dir/one.go
! 4b5f9e5a7301c18ee451d901f4d1b0e9  gcc/testsuite/go.test/test/fixedbugs/bug404.dir/two.go
  218ffecfac9923fe67e8220706fbbb7b  gcc/testsuite/go.test/test/fixedbugs/bug404.go
  7e9f8a7f6bf8b6100d050923f976ac58  gcc/testsuite/go.test/test/fixedbugs/bug405.go
! 4de7eb4e89e5e4da744624cdf899b132  gcc/testsuite/go.test/test/fixedbugs/bug406.go
! dcf4a6c4021041ad9b2dd58aaf833fb6  gcc/testsuite/go.test/test/fixedbugs/bug407.dir/one.go
! 628f7c0f4b03c2c9405ac2bd9a701fe9  gcc/testsuite/go.test/test/fixedbugs/bug407.dir/two.go
  646b095520d80ac1fc6fa29a5b99e936  gcc/testsuite/go.test/test/fixedbugs/bug407.go
! 852e13bbb84ee476499ee43883a8da3d  gcc/testsuite/go.test/test/fixedbugs/bug409.go
  b2da4073238f992900af7d530a049044  gcc/testsuite/go.test/test/fixedbugs/bug409.out
! 444c509b2cb9fd68aabf8687ce145464  gcc/testsuite/go.test/test/fixedbugs/bug410.go
! 78b9087ce290048af6903b5b6c6984e0  gcc/testsuite/go.test/test/fixedbugs/bug411.go
! e67d3c96084653adfe04786ba4e02711  gcc/testsuite/go.test/test/fixedbugs/bug412.go
! f7870a97899a9f003e847f8e029b66fe  gcc/testsuite/go.test/test/fixedbugs/bug413.go
! 14c6efbf14533dab736ca4f6c7dc0342  gcc/testsuite/go.test/test/fixedbugs/bug414.dir/p1.go
! 589c52b3804cc2f9376f6de331cd2d9a  gcc/testsuite/go.test/test/fixedbugs/bug414.dir/prog.go
! c8ae1aace3fbfb5dc0e1eff461a88038  gcc/testsuite/go.test/test/fixedbugs/bug414.go
! c3e0839676e26c3d892667adeb38e487  gcc/testsuite/go.test/test/fixedbugs/bug415.dir/p.go
! eb970c7fc445271264cdea9638a06681  gcc/testsuite/go.test/test/fixedbugs/bug415.dir/prog.go
! 219544eefc06f2162acb4c04e77e1d2f  gcc/testsuite/go.test/test/fixedbugs/bug415.go
! 2e74e1f53cf95d115f07cb4d89729024  gcc/testsuite/go.test/test/fixedbugs/bug416.go
  b2a388e3cc9a972cebce2a53612e8ba5  gcc/testsuite/go.test/test/fixedbugs/bug417.go
  f38362909f0503818aa1a68aed7e295c  gcc/testsuite/go.test/test/fixedbugs/bug418.go
  8f69b018e1508d3a37e3b0c9cdcf1acf  gcc/testsuite/go.test/test/fixedbugs/bug419.go
*************** c1eb218a81725357e020dce3900ae221  gcc/te
*** 77574,77759 ****
  0b92d5d24a50224e0286a3fa0f9d6574  gcc/testsuite/go.test/test/fixedbugs/bug421.go
  d715983aab90013e72a536062ee40134  gcc/testsuite/go.test/test/fixedbugs/bug422.go
  75491abf642e575f5cd40c0b19c6485f  gcc/testsuite/go.test/test/fixedbugs/bug423.go
! f130c779157a910452ab6be488cbc5e2  gcc/testsuite/go.test/test/fixedbugs/bug424.dir/lib.go
! ce41e0e3bcaafe2ac6cbe87ea24c6990  gcc/testsuite/go.test/test/fixedbugs/bug424.dir/main.go
! a2f0994a087d4a123b1c4fb22ee21adb  gcc/testsuite/go.test/test/fixedbugs/bug424.go
! da3f124e7540e512097b700efca3d777  gcc/testsuite/go.test/test/fixedbugs/bug425.go
  bfe060ae1ceb819a4ffa429e4b7142e5  gcc/testsuite/go.test/test/fixedbugs/bug426.go
! fd1a9c968c477cb1844de277a8f82157  gcc/testsuite/go.test/test/fixedbugs/bug427.go
! 2401d9b3927c51579bfa1f1a325bb85a  gcc/testsuite/go.test/test/fixedbugs/bug428.go
! a7dc11f93dbd15a3d30b2fa77d0079aa  gcc/testsuite/go.test/test/fixedbugs/bug429.go
  a097690cf296a62b9db8ac2bcc9e3191  gcc/testsuite/go.test/test/fixedbugs/bug430.go
  f03e240f32ac4bab2c0a4bb5bf0d12f6  gcc/testsuite/go.test/test/fixedbugs/bug431.go
  1ba4f33deed7d4343f9ed9a7f1086f6f  gcc/testsuite/go.test/test/fixedbugs/bug432.go
  7c54d39b2c3ca104477ba51b036bddfb  gcc/testsuite/go.test/test/fixedbugs/bug433.go
  931759ae7a2ff590943e31bc01a9b7c5  gcc/testsuite/go.test/test/fixedbugs/bug434.go
! 890a9e7766f642aeef4c36245f791ffc  gcc/testsuite/go.test/test/fixedbugs/bug435.go
  dcd6d5dce049b94076c193d619ecacfe  gcc/testsuite/go.test/test/fixedbugs/bug436.go
! 7d1478b9a009cba24c1946158135002b  gcc/testsuite/go.test/test/fixedbugs/bug437.dir/one.go
! e1fbcdc181bc2d5f4997aabc39b89707  gcc/testsuite/go.test/test/fixedbugs/bug437.dir/two.go
! 08f6a9074b37ccc7839ee25a0fe3a363  gcc/testsuite/go.test/test/fixedbugs/bug437.dir/x.go
! 2da36114464dcfa9c66f7434d0ce7831  gcc/testsuite/go.test/test/fixedbugs/bug437.go
  e767adc0fb2958789c477b4a71f9dd79  gcc/testsuite/go.test/test/fixedbugs/bug438.go
  4ad74b14f6a04dfb7dd488d10fa6d9c3  gcc/testsuite/go.test/test/fixedbugs/bug439.go
  1cab13d2942601f67da1fba3cc1973a2  gcc/testsuite/go.test/test/fixedbugs/bug440_32.go
  2b49790ac7c97c7b111dfcf00db7f258  gcc/testsuite/go.test/test/fixedbugs/bug440_64.go
! 8c955e9a71960757fd28d65bcdf2bd5b  gcc/testsuite/go.test/test/fixedbugs/bug441.go
! a445f02ec49c2144f710d7f0a252aaf9  gcc/testsuite/go.test/test/fixedbugs/bug442.go
! 07703267e0ffa98c9e42dbdc30759e78  gcc/testsuite/go.test/test/fixedbugs/bug443.go
! 13afb46e96693c817e2041c3e6b9933d  gcc/testsuite/go.test/test/fixedbugs/bug444.go
! 4710ec2975ba04c96d23cbeabc50b50a  gcc/testsuite/go.test/test/fixedbugs/bug445.go
  a2d659aedc4f8da669db2b11668025e3  gcc/testsuite/go.test/test/fixedbugs/bug446.go
! 6a310df4343c8ccae81429242934dfce  gcc/testsuite/go.test/test/fixedbugs/bug447.go
! 609419df64bcd21019fe89e8493dc528  gcc/testsuite/go.test/test/fixedbugs/bug448.dir/pkg1.go
! 8997e3bfb9a7593358f1d2cfaeb9dd61  gcc/testsuite/go.test/test/fixedbugs/bug448.dir/pkg2.go
! 19a66eade3b7db1fc2cd6b4ebc330923  gcc/testsuite/go.test/test/fixedbugs/bug448.go
  4029466981893777af017acf3d5104c5  gcc/testsuite/go.test/test/fixedbugs/bug449.go
! 9c2fed13ffbebbfd6c7f4a111ecd9454  gcc/testsuite/go.test/test/fixedbugs/bug450.go
  e527029714252d842c5a6c288b3318f9  gcc/testsuite/go.test/test/fixedbugs/bug451.go
! 89f73d9c663f8506d2fdf250b31810d9  gcc/testsuite/go.test/test/fixedbugs/bug452.go
! d15ef2923d9c82f1308dd971aaaa0dae  gcc/testsuite/go.test/test/fixedbugs/bug453.go
! fb3a7725f3823daedf776ebdca17ffe7  gcc/testsuite/go.test/test/fixedbugs/bug454.go
! e18e3e6357dddff0f6d648303fe993d6  gcc/testsuite/go.test/test/fixedbugs/bug455.go
! 1f7abb8bcddfdca2c06e1eeca4fc2451  gcc/testsuite/go.test/test/fixedbugs/bug456.go
! c35e6f573e2aa504b51f7cbb5d398241  gcc/testsuite/go.test/test/fixedbugs/bug457.go
! c51d6f420557a0eb65d587ddd7ed079a  gcc/testsuite/go.test/test/fixedbugs/bug458.go
! 7e552935e1e9df4da9520b8679f8f822  gcc/testsuite/go.test/test/fixedbugs/bug459.go
! b1141a4c95d31c5af3724d52e25d7a6a  gcc/testsuite/go.test/test/fixedbugs/bug460.dir/a.go
! eac96bb947e0e636c2c97a815455005c  gcc/testsuite/go.test/test/fixedbugs/bug460.dir/b.go
! bd7fa8351d9989e186ad8f7cbae206b5  gcc/testsuite/go.test/test/fixedbugs/bug460.go
! 7a628f67382f71da7e2a15f60d92a6a1  gcc/testsuite/go.test/test/fixedbugs/bug461.go
! c70b1b27e0de2986ed83034b41d2138e  gcc/testsuite/go.test/test/fixedbugs/bug462.go
! 4018d45a648deb679edf5f4094403f9f  gcc/testsuite/go.test/test/fixedbugs/bug463.go
! 8561031c9b75821a0244675c73139361  gcc/testsuite/go.test/test/fixedbugs/bug464.go
! c74567f8a69b943238fd5325f2225c4c  gcc/testsuite/go.test/test/fixedbugs/bug465.dir/a.go
! 5c1ffe874f4479c35a8ca6a189658842  gcc/testsuite/go.test/test/fixedbugs/bug465.dir/b.go
! 4520e43805b30c72c6fcd3523a9013c9  gcc/testsuite/go.test/test/fixedbugs/bug465.go
! 5c1bc461dbe63e1eafa7c6196cc63961  gcc/testsuite/go.test/test/fixedbugs/bug466.dir/a.go
! 3ebe6202e469ed25814b2b93288c7b67  gcc/testsuite/go.test/test/fixedbugs/bug466.dir/b.go
! ee81a27e7661321a125f26ebb4ed0679  gcc/testsuite/go.test/test/fixedbugs/bug466.go
  710f1f1ba96c747370ced592352e055e  gcc/testsuite/go.test/test/fixedbugs/bug467.dir/p1.go
  76d9fc05a37af0996c9b94b2f5487b0c  gcc/testsuite/go.test/test/fixedbugs/bug467.dir/p2.go
  55a5a35f9dcfc2729cea820abb5e874e  gcc/testsuite/go.test/test/fixedbugs/bug467.dir/p3.go
! 8212493e2165a5e814d9cf477a147313  gcc/testsuite/go.test/test/fixedbugs/bug467.go
! 857cceeba96b19afdad43c32c742ca58  gcc/testsuite/go.test/test/fixedbugs/bug468.dir/p1.go
! 5adff40208c7cf84d68995a406379e0c  gcc/testsuite/go.test/test/fixedbugs/bug468.dir/p2.go
! 7c421ee182cba0120400166b784973b8  gcc/testsuite/go.test/test/fixedbugs/bug468.go
! a5ae505c41f29f1c7cda779aedd3c7b9  gcc/testsuite/go.test/test/fixedbugs/bug470.go
! a9cfb3cb816832ad63657960817a3636  gcc/testsuite/go.test/test/fixedbugs/bug471.go
! cceafd00c7f60a9cdad84f10cb8ff8a0  gcc/testsuite/go.test/test/fixedbugs/bug472.dir/p1.go
! 0ee2f7d27db141d5d86785e0dbf7f33c  gcc/testsuite/go.test/test/fixedbugs/bug472.dir/p2.go
! 63981b346998d0a7068b02e8c530ded5  gcc/testsuite/go.test/test/fixedbugs/bug472.dir/z.go
! 6daefe01e6d5b3c928e975de36c3880c  gcc/testsuite/go.test/test/fixedbugs/bug472.go
! 8cf6c30ab61cb1ada24f331da64543df  gcc/testsuite/go.test/test/fixedbugs/bug473.go
! c2fa735a525a0827571167b5d48b38d0  gcc/testsuite/go.test/test/fixedbugs/bug474.go
! 2bdeac31a056bf07b9daa9ea9573d930  gcc/testsuite/go.test/test/fixedbugs/bug475.go
! 740861030aac587292c8fda65b6c5c10  gcc/testsuite/go.test/test/fixedbugs/bug476.go
! ab1db27804a0d106aa2e28baf33334cc  gcc/testsuite/go.test/test/fixedbugs/bug477.go
! 690ad64c905dcd0695d1dfc3360a9350  gcc/testsuite/go.test/test/fixedbugs/bug478.dir/a.go
! d7cb515d9b5522da856a6cfdda9ce8e3  gcc/testsuite/go.test/test/fixedbugs/bug478.dir/b.go
! e4a8e91c7a8b06f08414dcea05891c73  gcc/testsuite/go.test/test/fixedbugs/bug478.go
! 55bc247b2bb684952d36e7b4eda49967  gcc/testsuite/go.test/test/fixedbugs/bug479.dir/a.go
! 077a379bca7e2474e396b5a4fe97d529  gcc/testsuite/go.test/test/fixedbugs/bug479.dir/b.go
! 14cd867510e86885614a8f5cbe382af3  gcc/testsuite/go.test/test/fixedbugs/bug479.go
! 870c8db6c8e803c43f781cea8c91f860  gcc/testsuite/go.test/test/fixedbugs/bug480.dir/a.go
! e3246dec5531cde94c80dff52a6bf682  gcc/testsuite/go.test/test/fixedbugs/bug480.dir/b.go
! 65abe87dc6485e0b6bfe30acf945c0c7  gcc/testsuite/go.test/test/fixedbugs/bug480.go
! a577f30588fb54cbc838d5be8b0cbdba  gcc/testsuite/go.test/test/fixedbugs/bug481.go
! fa5c844f193f55a16994628cb54b0dbb  gcc/testsuite/go.test/test/fixedbugs/bug482.go
! d7e97c02da3582d0b589619056a999fa  gcc/testsuite/go.test/test/fixedbugs/issue2615.go
! c70bc326797d64ff72d1f65c580e7558  gcc/testsuite/go.test/test/fixedbugs/issue3552.dir/one.go
! cce9b595bb424a6b6ca602e6ba7a41db  gcc/testsuite/go.test/test/fixedbugs/issue3552.dir/two.go
  9611bcb1b4a7e21ada226c054bd5de39  gcc/testsuite/go.test/test/fixedbugs/issue3552.go
! 7a9748e1df4aafb2b894a856fba914c7  gcc/testsuite/go.test/test/fixedbugs/issue3705.go
! 8b54b9e6987226ce519b2d7dc912b47a  gcc/testsuite/go.test/test/fixedbugs/issue3783.go
! b6ea03c9affde48d338d7326a8df2f95  gcc/testsuite/go.test/test/fixedbugs/issue3924.go
! a2fee8c2c12291d3740008390bd0907e  gcc/testsuite/go.test/test/fixedbugs/issue3925.go
  725129abc0a4dde1e81f2f4f08e64f6e  gcc/testsuite/go.test/test/fixedbugs/issue4066.go
! f002a55104064771753b528974c8394a  gcc/testsuite/go.test/test/fixedbugs/issue4085a.go
! 964d3424dffd2a91f5fe153f39e6497f  gcc/testsuite/go.test/test/fixedbugs/issue4085b.go
! edbd5b50c846940ea0f4de1e9e693e53  gcc/testsuite/go.test/test/fixedbugs/issue4097.go
! 3d1ddae481ea6ebd1428f13ff9c0c35a  gcc/testsuite/go.test/test/fixedbugs/issue4099.go
! b78f71e74f77811e6652524879f638a0  gcc/testsuite/go.test/test/fixedbugs/issue4162.go
! ccdae3c41098e0a30b148b48b184dc98  gcc/testsuite/go.test/test/fixedbugs/issue4167.go
! b86ed5c997b0cda74a978e96009a9971  gcc/testsuite/go.test/test/fixedbugs/issue4232.go
! be02745b50c6510daa8afedd46842e61  gcc/testsuite/go.test/test/fixedbugs/issue4251.go
! 2f10fdb000635e5ba5b13f6d5ee37684  gcc/testsuite/go.test/test/fixedbugs/issue4252.dir/a.go
! fb1f9d7170be33ef81315a99a282ab93  gcc/testsuite/go.test/test/fixedbugs/issue4252.dir/main.go
! c71c149b94551bedc1ef738368456f0b  gcc/testsuite/go.test/test/fixedbugs/issue4252.go
  b35041ec85302e9c31e1c734d29af5e3  gcc/testsuite/go.test/test/fixedbugs/issue4264.go
! dff550548b4ef5b5cecd2b615f2f3c28  gcc/testsuite/go.test/test/fixedbugs/issue4283.go
! 728dd2d3a6e3d0f5df171e158843b3be  gcc/testsuite/go.test/test/fixedbugs/issue4313.go
! 58f3b9b84fb234e2565ba14ee5161d07  gcc/testsuite/go.test/test/fixedbugs/issue4316.go
! ea5da73fe2376f68cc460103ccfa213e  gcc/testsuite/go.test/test/fixedbugs/issue4323.go
  d20691a348ae783cc3524094317d95da  gcc/testsuite/go.test/test/fixedbugs/issue4326.dir/p1.go
  1e1a1f60cb3c8969242b8e1a227aa5d6  gcc/testsuite/go.test/test/fixedbugs/issue4326.dir/p2.go
  d2cf0a2e327e8f5956b56e662891dfcc  gcc/testsuite/go.test/test/fixedbugs/issue4326.dir/q1.go
  d4112cbacedfd2f38451d0822557d138  gcc/testsuite/go.test/test/fixedbugs/issue4326.dir/q2.go
  f3cca6da4356142dbd78b655cb6748c4  gcc/testsuite/go.test/test/fixedbugs/issue4326.dir/z.go
! 06bcdd37b2622882fbf833c891cb5896  gcc/testsuite/go.test/test/fixedbugs/issue4326.go
! ee5c48c31facf7f2fa52dea71b4a30a6  gcc/testsuite/go.test/test/fixedbugs/issue4348.go
! 73d44504fa85384e0ea861ab1952c418  gcc/testsuite/go.test/test/fixedbugs/issue4353.go
! 8e89ef6c8b0d4a5cd429e7fdb30b7563  gcc/testsuite/go.test/test/fixedbugs/issue4359.go
! 9f7b051ce9acf7e6d0f5457592a890b0  gcc/testsuite/go.test/test/fixedbugs/issue4370.dir/p1.go
! 50091130f932d0bd12429e6da38202e6  gcc/testsuite/go.test/test/fixedbugs/issue4370.dir/p2.go
! 6e66121a05ee72a1f3640971dc5e8148  gcc/testsuite/go.test/test/fixedbugs/issue4370.dir/p3.go
! 3422b2eff20500e6b1a3837981791caa  gcc/testsuite/go.test/test/fixedbugs/issue4370.go
! 4d50e95fc5b27eba5afc73373ae08b42  gcc/testsuite/go.test/test/fixedbugs/issue4396a.go
! e5138aa514f906c20ec0a32e52060696  gcc/testsuite/go.test/test/fixedbugs/issue4396b.go
! 297bbbcca7339bc905a4164ac608dd7d  gcc/testsuite/go.test/test/fixedbugs/issue4399.go
! 5b6a6bcf16fc83f381b26ac95da00bf9  gcc/testsuite/go.test/test/fixedbugs/issue4405.go
! bb5d0cee5f28e0a8f3d5c3ed24205f8f  gcc/testsuite/go.test/test/fixedbugs/issue4429.go
! cf18676f03721a7e43cd4d5113492ef1  gcc/testsuite/go.test/test/fixedbugs/issue4448.go
! 465c13e1e50367e5270d684636eefa6f  gcc/testsuite/go.test/test/fixedbugs/issue4452.go
! a16ebccaa6a0fc045f5f72c690e2274f  gcc/testsuite/go.test/test/fixedbugs/issue4458.go
! 7e4bf7ad410409e6225362d500977ae4  gcc/testsuite/go.test/test/fixedbugs/issue4463.go
! f1ae978d4e742f520d2fbb42249c62c4  gcc/testsuite/go.test/test/fixedbugs/issue4468.go
! e3eddd55accd7546b57d881eac140ff2  gcc/testsuite/go.test/test/fixedbugs/issue4470.go
! 15eeabe7b229d646334c7dfe726e9037  gcc/testsuite/go.test/test/fixedbugs/issue4495.go
  4771375066b4a9d5037f21c920b07f27  gcc/testsuite/go.test/test/fixedbugs/issue4510.dir/f1.go
  9210913d11c1772ec56034b4541645ee  gcc/testsuite/go.test/test/fixedbugs/issue4510.dir/f2.go
  7e9e10e429ad5b513ce9828bb1edef39  gcc/testsuite/go.test/test/fixedbugs/issue4510.go
! f5e4a579a023880b9b95b750a423d588  gcc/testsuite/go.test/test/fixedbugs/issue4517a.go
! fc7484978416d18cc6712914c4bde219  gcc/testsuite/go.test/test/fixedbugs/issue4517b.go
! 2375a5a527bfcc7ab8506e6c6ed981d8  gcc/testsuite/go.test/test/fixedbugs/issue4517c.go
! 174f64eb3ed81283a25ce29f02d89081  gcc/testsuite/go.test/test/fixedbugs/issue4517d.go
! 97c4583937230145f9661c72927d69b1  gcc/testsuite/go.test/test/fixedbugs/issue4518.go
! bbdc2107066b1c22d78b0478ab33c992  gcc/testsuite/go.test/test/fixedbugs/issue4529.go
! 8664ed91fb07eee40ff403b7f30e6200  gcc/testsuite/go.test/test/fixedbugs/issue4545.go
! d45818a6154ab1e1fe3d6d735882db31  gcc/testsuite/go.test/test/fixedbugs/issue4562.go
! be464f60b444376df4a144b927d2d376  gcc/testsuite/go.test/test/fixedbugs/issue4585.go
! 28f72ca0116eb2fcb0686cbaf5ce45b7  gcc/testsuite/go.test/test/fixedbugs/issue4590.dir/pkg1.go
! 5f373738bb10dfc0effd719e3d462e77  gcc/testsuite/go.test/test/fixedbugs/issue4590.dir/pkg2.go
! 8797404f1fe5d445b941e093fef07668  gcc/testsuite/go.test/test/fixedbugs/issue4590.dir/prog.go
  d7342458e14fed304bcf771d24307210  gcc/testsuite/go.test/test/fixedbugs/issue4590.go
  23ea4ed9f7cd20aa8d706062ebffa829  gcc/testsuite/go.test/test/fixedbugs/issue4610.go
! 0a80fc986ead1c50b3d5a60201050152  gcc/testsuite/go.test/test/fixedbugs/issue4614.go
! 6f66636d4a3b83df0c585601a73e6f52  gcc/testsuite/go.test/test/fixedbugs/issue4618.go
! b0e5d4f79609d7273607acde3619fd17  gcc/testsuite/go.test/test/fixedbugs/issue4620.go
! 19c91780f5d6eaf3529d261985691528  gcc/testsuite/go.test/test/fixedbugs/issue4654.go
! e5a05194752ced84d7617b64183cea4c  gcc/testsuite/go.test/test/fixedbugs/issue4663.go
! c4b4fc5b03b27ce7c197badfa3ec1b45  gcc/testsuite/go.test/test/fixedbugs/issue4667.go
! 3826b790df403982e00d8fc2d9715e3a  gcc/testsuite/go.test/test/fixedbugs/issue4734.go
! 752490f657d180c82e3642399c957f53  gcc/testsuite/go.test/test/fixedbugs/issue4748.go
! 2fc1c2af27355a3e21d47abfdcf5c1db  gcc/testsuite/go.test/test/fixedbugs/issue4752.go
! b94a01801eaa816f40b5624970ea2137  gcc/testsuite/go.test/test/fixedbugs/issue4776.go
! 24645f20e1229ebc24efdc3e3c65d316  gcc/testsuite/go.test/test/fixedbugs/issue4785.go
  c876116f9cd315ae8979856bd0d9a378  gcc/testsuite/go.test/test/fixedbugs/issue4813.go
  6fa56864432ab53d573561e0e6deeb14  gcc/testsuite/go.test/test/fixedbugs/issue4847.go
  8ab760f1fba941f998565fdc8ded577e  gcc/testsuite/go.test/test/fixedbugs/issue4879.dir/a.go
  9a1f006e4ed22ce726242afee922f512  gcc/testsuite/go.test/test/fixedbugs/issue4879.dir/b.go
  e70dd01eb5a68864933a47da669ca4b7  gcc/testsuite/go.test/test/fixedbugs/issue4879.go
! 3eebb10ddc53954d8bde5b13b6e3a0b4  gcc/testsuite/go.test/test/fixedbugs/issue4909a.go
  5c716f0da05807304038e733b4d61fe6  gcc/testsuite/go.test/test/fixedbugs/issue4909b.go
  81ee664524279b3050a8bc39a84a56c8  gcc/testsuite/go.test/test/fixedbugs/issue4932.dir/foo.go
  a4f59f673c130a3fd4657d0827985a64  gcc/testsuite/go.test/test/fixedbugs/issue4932.dir/state.go
  83c8911fcc8579758270fc3d3f69a7e8  gcc/testsuite/go.test/test/fixedbugs/issue4932.dir/state2.go
  e8d166a01ce8943f0d29f2a3783bfa97  gcc/testsuite/go.test/test/fixedbugs/issue4932.go
! a54d1843fcc0f43007c35336506cec62  gcc/testsuite/go.test/test/fixedbugs/issue4964.dir/a.go
  94fe48bbcbcf8221a9a9f3df16ff92c9  gcc/testsuite/go.test/test/fixedbugs/issue4964.dir/b.go
  c067aafb2a653f18ae997cadd0768200  gcc/testsuite/go.test/test/fixedbugs/issue4964.go
! a444fb9566f759ad339d06d764724441  gcc/testsuite/go.test/test/fixedbugs/issue5002.go
! 92a2f78779384449e9db412fe965a9dd  gcc/testsuite/go.test/test/fixedbugs/issue5056.go
  0e9ce31859706eb8fac06ce4f8564e76  gcc/testsuite/go.test/test/fixedbugs/issue5089.go
  60403dc5f2e124ee1e2c266ef0b6f99b  gcc/testsuite/go.test/test/fixedbugs/issue5105.dir/a.go
  07cbbcb0ee407ac78daa1e0946f833a0  gcc/testsuite/go.test/test/fixedbugs/issue5105.dir/b.go
--- 82590,83519 ----
  0b92d5d24a50224e0286a3fa0f9d6574  gcc/testsuite/go.test/test/fixedbugs/bug421.go
  d715983aab90013e72a536062ee40134  gcc/testsuite/go.test/test/fixedbugs/bug422.go
  75491abf642e575f5cd40c0b19c6485f  gcc/testsuite/go.test/test/fixedbugs/bug423.go
! ddb0e07141ea8413e6802826511e1391  gcc/testsuite/go.test/test/fixedbugs/bug424.dir/lib.go
! 49e188ea30f3d6318a65f50781a87da6  gcc/testsuite/go.test/test/fixedbugs/bug424.dir/main.go
! 35c3c614abe4217ba20ead30d3e16183  gcc/testsuite/go.test/test/fixedbugs/bug424.go
! 406d5d36b594d4ce661e03b999b77569  gcc/testsuite/go.test/test/fixedbugs/bug425.go
  bfe060ae1ceb819a4ffa429e4b7142e5  gcc/testsuite/go.test/test/fixedbugs/bug426.go
! e59edb97fb3e0e55bce5b034d77d4e8e  gcc/testsuite/go.test/test/fixedbugs/bug427.go
! 50fbf77a24a6c4d47890077e0faedf3c  gcc/testsuite/go.test/test/fixedbugs/bug428.go
! a7ff1921c536e6db07603fc9abd3a175  gcc/testsuite/go.test/test/fixedbugs/bug429.go
  a097690cf296a62b9db8ac2bcc9e3191  gcc/testsuite/go.test/test/fixedbugs/bug430.go
  f03e240f32ac4bab2c0a4bb5bf0d12f6  gcc/testsuite/go.test/test/fixedbugs/bug431.go
  1ba4f33deed7d4343f9ed9a7f1086f6f  gcc/testsuite/go.test/test/fixedbugs/bug432.go
  7c54d39b2c3ca104477ba51b036bddfb  gcc/testsuite/go.test/test/fixedbugs/bug433.go
  931759ae7a2ff590943e31bc01a9b7c5  gcc/testsuite/go.test/test/fixedbugs/bug434.go
! 3ba28fdbbf75e4129714846bd97eba48  gcc/testsuite/go.test/test/fixedbugs/bug435.go
  dcd6d5dce049b94076c193d619ecacfe  gcc/testsuite/go.test/test/fixedbugs/bug436.go
! 3a8fb00f4641017b78a424da3ecf0ede  gcc/testsuite/go.test/test/fixedbugs/bug437.dir/one.go
! 43bac0d91c1219a0aab4ade8645ae22a  gcc/testsuite/go.test/test/fixedbugs/bug437.dir/two.go
! d1b81aeeac674a2ca962634b33d9bcc2  gcc/testsuite/go.test/test/fixedbugs/bug437.dir/x.go
! bbd2dd8f05337574965c3196a4d23b85  gcc/testsuite/go.test/test/fixedbugs/bug437.go
  e767adc0fb2958789c477b4a71f9dd79  gcc/testsuite/go.test/test/fixedbugs/bug438.go
  4ad74b14f6a04dfb7dd488d10fa6d9c3  gcc/testsuite/go.test/test/fixedbugs/bug439.go
  1cab13d2942601f67da1fba3cc1973a2  gcc/testsuite/go.test/test/fixedbugs/bug440_32.go
  2b49790ac7c97c7b111dfcf00db7f258  gcc/testsuite/go.test/test/fixedbugs/bug440_64.go
! 3b5afb65d564efd1f8ef448ed35c29f0  gcc/testsuite/go.test/test/fixedbugs/bug441.go
! 21ab5556126c0c51afa8e80e4656ba43  gcc/testsuite/go.test/test/fixedbugs/bug442.go
! 9cfbc7fc2c3fef79eb0370558517518c  gcc/testsuite/go.test/test/fixedbugs/bug443.go
! 1d5a3a7f9101bcbc99ae5f543b526996  gcc/testsuite/go.test/test/fixedbugs/bug444.go
! 50d8f9618a81b01e0e09d7ea0654f51f  gcc/testsuite/go.test/test/fixedbugs/bug445.go
  a2d659aedc4f8da669db2b11668025e3  gcc/testsuite/go.test/test/fixedbugs/bug446.go
! bba8ad0e600fcbfe55d470477441e13a  gcc/testsuite/go.test/test/fixedbugs/bug447.go
! ccb6103c743394a40b2437a482ce7088  gcc/testsuite/go.test/test/fixedbugs/bug448.dir/pkg1.go
! d9182907054ac1a90d2a4eb865c253f1  gcc/testsuite/go.test/test/fixedbugs/bug448.dir/pkg2.go
! 218ffecfac9923fe67e8220706fbbb7b  gcc/testsuite/go.test/test/fixedbugs/bug448.go
  4029466981893777af017acf3d5104c5  gcc/testsuite/go.test/test/fixedbugs/bug449.go
! c51f77f49487e1f6ff891372913ca7ab  gcc/testsuite/go.test/test/fixedbugs/bug450.go
  e527029714252d842c5a6c288b3318f9  gcc/testsuite/go.test/test/fixedbugs/bug451.go
! 765a8d31eaf4afb3f94e212a63299b60  gcc/testsuite/go.test/test/fixedbugs/bug452.go
! b05eb0a390b2d374cca4dffc85a75393  gcc/testsuite/go.test/test/fixedbugs/bug453.go
! d07c4a472c75dc189665d6f980570b3e  gcc/testsuite/go.test/test/fixedbugs/bug454.go
! 2913cdb33d2d8aa90405153128420f6f  gcc/testsuite/go.test/test/fixedbugs/bug455.go
! 6271b5fd44138b21563f5f0fca3b2b4d  gcc/testsuite/go.test/test/fixedbugs/bug456.go
! d142b3ecf8b431ae2c23ca162a8bbae9  gcc/testsuite/go.test/test/fixedbugs/bug457.go
! 52224d4261e2b9c0055d270c022e32f4  gcc/testsuite/go.test/test/fixedbugs/bug458.go
! 338e852ff964316dd3d69c3aa5f2e046  gcc/testsuite/go.test/test/fixedbugs/bug459.go
! 52452c225448eab2ef9dbd4ed6f58cc5  gcc/testsuite/go.test/test/fixedbugs/bug460.dir/a.go
! 7f1752a9c678eb4a46c375f39ce90e7f  gcc/testsuite/go.test/test/fixedbugs/bug460.dir/b.go
! 2ead7a4b669ba1e50658c6766ac4e2b5  gcc/testsuite/go.test/test/fixedbugs/bug460.go
! b3405e86ad9b87fced5a2ac1afa5a02a  gcc/testsuite/go.test/test/fixedbugs/bug461.go
! 6b96995d688601df6cffdd237e98b036  gcc/testsuite/go.test/test/fixedbugs/bug462.go
! 26d2374af7224e215da369dbef4c23a6  gcc/testsuite/go.test/test/fixedbugs/bug463.go
! 77c0b59303251ea7ad8ede50a3950750  gcc/testsuite/go.test/test/fixedbugs/bug464.go
! 68e5d93b9ffb958bb6ca32232f8d28ad  gcc/testsuite/go.test/test/fixedbugs/bug465.dir/a.go
! 1745dbc1ca03e59c8141975fd9b16bbf  gcc/testsuite/go.test/test/fixedbugs/bug465.dir/b.go
! 71470c4b0864a0361677f960abd14386  gcc/testsuite/go.test/test/fixedbugs/bug465.go
! c133a92e562de1d76f2de4e85b598d71  gcc/testsuite/go.test/test/fixedbugs/bug466.dir/a.go
! a00e7fef8151f9558e2865a8366b75e5  gcc/testsuite/go.test/test/fixedbugs/bug466.dir/b.go
! de7acb54d564aaf1c9786372e377bab9  gcc/testsuite/go.test/test/fixedbugs/bug466.go
  710f1f1ba96c747370ced592352e055e  gcc/testsuite/go.test/test/fixedbugs/bug467.dir/p1.go
  76d9fc05a37af0996c9b94b2f5487b0c  gcc/testsuite/go.test/test/fixedbugs/bug467.dir/p2.go
  55a5a35f9dcfc2729cea820abb5e874e  gcc/testsuite/go.test/test/fixedbugs/bug467.dir/p3.go
! e4732b2794e9c6da5e2fae4445e2428b  gcc/testsuite/go.test/test/fixedbugs/bug467.go
! a856f1d428091c50d978cc66954115ee  gcc/testsuite/go.test/test/fixedbugs/bug468.dir/p1.go
! de88f9f975134e17333103c579ec7e56  gcc/testsuite/go.test/test/fixedbugs/bug468.dir/p2.go
! 2ab14ef9829485b1475e51b7ceb8534e  gcc/testsuite/go.test/test/fixedbugs/bug468.go
! 5148f2441264677506b962a239ddc51b  gcc/testsuite/go.test/test/fixedbugs/bug470.go
! 9c7d62f525cf33335a365ce69bbe9f5a  gcc/testsuite/go.test/test/fixedbugs/bug471.go
! 35fc35ecb28d4da11b92063e0609087c  gcc/testsuite/go.test/test/fixedbugs/bug472.dir/p1.go
! 06b3794ce7f129d66da815b37f6bd614  gcc/testsuite/go.test/test/fixedbugs/bug472.dir/p2.go
! 451f232ab88ab2d65a3b654909ba8423  gcc/testsuite/go.test/test/fixedbugs/bug472.dir/z.go
! cd2ec33312b881a7dc2e8a762874c7dd  gcc/testsuite/go.test/test/fixedbugs/bug472.go
! 5b3569123ffb947ecdb909d1fb6b3564  gcc/testsuite/go.test/test/fixedbugs/bug473.go
! 98c5766d3488ca9dcc6c090d2919050a  gcc/testsuite/go.test/test/fixedbugs/bug474.go
! 7cb01bccfe6d3ba45e9fa642958d607b  gcc/testsuite/go.test/test/fixedbugs/bug475.go
! 6f64b7885ed2f92212ca6574f0ac86c9  gcc/testsuite/go.test/test/fixedbugs/bug476.go
! b7be029b39de456559309475fbfd1d15  gcc/testsuite/go.test/test/fixedbugs/bug477.go
! b3ad32dbe6308e8fd994cf2303ddc818  gcc/testsuite/go.test/test/fixedbugs/bug478.dir/a.go
! 37c0dafb1033854096d6457bc62ae288  gcc/testsuite/go.test/test/fixedbugs/bug478.dir/b.go
! 3b15e3df91b2d613299c6d0adb0aac78  gcc/testsuite/go.test/test/fixedbugs/bug478.go
! 5106fb1f236235dde5be6132f1603975  gcc/testsuite/go.test/test/fixedbugs/bug479.dir/a.go
! 98ee4851d6cecb148f65390c32c3a056  gcc/testsuite/go.test/test/fixedbugs/bug479.dir/b.go
! f52b18d9f54a7e6190febf2ffdc885b9  gcc/testsuite/go.test/test/fixedbugs/bug479.go
! 926b3af657524c2e45e800bb8b298a65  gcc/testsuite/go.test/test/fixedbugs/bug480.dir/a.go
! e741f576309a2eb25e492dec4ad6e05d  gcc/testsuite/go.test/test/fixedbugs/bug480.dir/b.go
! b0ae5c93d1c265b5dbdbadfa67caae37  gcc/testsuite/go.test/test/fixedbugs/bug480.go
! a6450aa568263c7b385b05aa5207a7a7  gcc/testsuite/go.test/test/fixedbugs/bug481.go
! 9ed0bb8fe154ba483d83e7452a781c7f  gcc/testsuite/go.test/test/fixedbugs/bug482.go
! 323c5f4d57621a78b6e4afc863368ddb  gcc/testsuite/go.test/test/fixedbugs/bug483.go
! 5ee3bacdeb1a14de6f98016705a79982  gcc/testsuite/go.test/test/fixedbugs/bug484.go
! 9822e44a44bd7416079c9cfc5e211519  gcc/testsuite/go.test/test/fixedbugs/bug485.go
! e9683f8087235a51787239f0a511ee6e  gcc/testsuite/go.test/test/fixedbugs/bug486.go
! 0360a3ccdf97d113173d57599d4df2cd  gcc/testsuite/go.test/test/fixedbugs/bug487.go
! b03d0f6f4319171b5e0efb72348ba4cf  gcc/testsuite/go.test/test/fixedbugs/bug488.dir/a.go
! 38a85658ec37a2f2a6032c57265f472f  gcc/testsuite/go.test/test/fixedbugs/bug488.dir/b.go
! 853654f11e8e4dbe228a24fa8ffc5556  gcc/testsuite/go.test/test/fixedbugs/bug488.go
! f68338e3b19b77d7a92dbde63c8093dd  gcc/testsuite/go.test/test/fixedbugs/bug489.go
! 3b91a9a7dae709c974c6c440d5a4d2f8  gcc/testsuite/go.test/test/fixedbugs/bug490.go
! b0ddbdbc3515570a19a211254b4bc9f7  gcc/testsuite/go.test/test/fixedbugs/bug491.go
! 7282a8173305dd8e9f68666165df38ad  gcc/testsuite/go.test/test/fixedbugs/bug492.dir/a.go
! 22ec61fcf9fe59575699b1bfc98da07c  gcc/testsuite/go.test/test/fixedbugs/bug492.dir/b.go
! 5730c72de05134d701733f43b8c7af77  gcc/testsuite/go.test/test/fixedbugs/bug492.go
! 735d303e06a1e72f78c0baa681f0fea1  gcc/testsuite/go.test/test/fixedbugs/bug493.go
! d7bd069e75fbdcdfd27e3ee921f78fab  gcc/testsuite/go.test/test/fixedbugs/bug494.go
! d91cf521fe1184c1d87ecf0d11d17785  gcc/testsuite/go.test/test/fixedbugs/bug495.go
! 43b88789a04a9bd2c92b2f06c0880bb9  gcc/testsuite/go.test/test/fixedbugs/bug496.go
! c757a13e077ebc03939472bb0ce4931c  gcc/testsuite/go.test/test/fixedbugs/bug497.go
! afa1bcf9f303dad834299ab12cf2176e  gcc/testsuite/go.test/test/fixedbugs/bug498.go
! 44d2a68ee38eb4632962cf851f27b395  gcc/testsuite/go.test/test/fixedbugs/bug499.go
! 86be24487a2188b4f8a644d7bb1b583c  gcc/testsuite/go.test/test/fixedbugs/bug500.go
! 12e467ca55e9ab19c86f5ef078e6c829  gcc/testsuite/go.test/test/fixedbugs/bug501.go
! 25890cc45b8ceac860c0923f951824ea  gcc/testsuite/go.test/test/fixedbugs/bug502.go
! 374d36c74a46257a05595fdf041fcfca  gcc/testsuite/go.test/test/fixedbugs/bug503.go
! cd37e6af1098f8fbb0df5cdb5058b56b  gcc/testsuite/go.test/test/fixedbugs/bug504.dir/a.go
! b4a7a1b502aa513daa4f9b79deb9414c  gcc/testsuite/go.test/test/fixedbugs/bug504.dir/b.go
! 6dcd08ebf685e0d497c8b792c27dfa32  gcc/testsuite/go.test/test/fixedbugs/bug504.dir/c.go
! f72740cce3047edbf280af688ceab1f7  gcc/testsuite/go.test/test/fixedbugs/bug504.dir/main.go
! 8cde7fffbeeedcd35ca5c7ab7827a0a9  gcc/testsuite/go.test/test/fixedbugs/bug504.go
! 00d1c939e239260130cb156f5e6d3ec5  gcc/testsuite/go.test/test/fixedbugs/bug505.go
! 29f33a2d9e21d2ef973d860d41577bc6  gcc/testsuite/go.test/test/fixedbugs/bug506.dir/a.go
! 559fb3d9e3a50e978abe1e11439a01a1  gcc/testsuite/go.test/test/fixedbugs/bug506.dir/main.go
! 16f36dc2d7018d639f65432aa63b630a  gcc/testsuite/go.test/test/fixedbugs/bug506.go
! f47b7005d387825f066d06e7cf60e99c  gcc/testsuite/go.test/test/fixedbugs/bug507.dir/a.go
! e81f76cd80a7ed0e99ab2cfa1cc95c1d  gcc/testsuite/go.test/test/fixedbugs/bug507.dir/b.go
! 700e79cd9d8983bf00d097cb996f4111  gcc/testsuite/go.test/test/fixedbugs/bug507.dir/c.go
! e9d773ce9f205b57de27f7101d0accec  gcc/testsuite/go.test/test/fixedbugs/bug507.go
! 9eea96362737c21247523e67e402db3e  gcc/testsuite/go.test/test/fixedbugs/bug508.go
! 4ac0c243823b9ac04b819d6d864cbe60  gcc/testsuite/go.test/test/fixedbugs/bug509.go
! 4ae2c9f754cf59de1516c11f9a843db0  gcc/testsuite/go.test/test/fixedbugs/bug510.dir/a.go
! 7833b586862300625d0b872b7bee814f  gcc/testsuite/go.test/test/fixedbugs/bug510.dir/b.go
! c2a9c91fc0e426c99716be65b0dc49a8  gcc/testsuite/go.test/test/fixedbugs/bug510.go
! cb5555285bc77c65a34225174d9d70d8  gcc/testsuite/go.test/test/fixedbugs/gcc61204.go
! 6c9bf89f35dea65f9b0dfe4c35ca10ee  gcc/testsuite/go.test/test/fixedbugs/gcc61244.go
! a2eb4e00c223a6cb4ed757162d1345fa  gcc/testsuite/go.test/test/fixedbugs/gcc61246.go
! 84ad969296463a840b7da09cd4cc23a6  gcc/testsuite/go.test/test/fixedbugs/gcc61248.go
! b6745394fb769b2b1011e2e7056a0cbf  gcc/testsuite/go.test/test/fixedbugs/gcc61253.go
! 717a4e0ea50e4df935ef4b402e10ea44  gcc/testsuite/go.test/test/fixedbugs/gcc61254.go
! e9b6b369a6935386e10ed016c3bb0dd6  gcc/testsuite/go.test/test/fixedbugs/gcc61255.go
! 91a8bcc9f247a5e712066e134ace4e12  gcc/testsuite/go.test/test/fixedbugs/gcc61258.go
! 548c43756ab2a702ba516de5b0bbbc7a  gcc/testsuite/go.test/test/fixedbugs/gcc61264.go
! 32c5bcad543954be63e015e7617bcbe8  gcc/testsuite/go.test/test/fixedbugs/gcc61265.go
! 4781a2f1178604773580367eb92d0311  gcc/testsuite/go.test/test/fixedbugs/gcc61273.go
! d19a018b059386ed156b910a1190a100  gcc/testsuite/go.test/test/fixedbugs/gcc65755.go
! c6724fe783d65860b2764fb8690f8f09  gcc/testsuite/go.test/test/fixedbugs/gcc67968.dir/a.go
! 698d56cd40f30fb8f9618d8aa1641178  gcc/testsuite/go.test/test/fixedbugs/gcc67968.dir/b.go
! c88ed2be968ec1c2ddd39d8a294aa520  gcc/testsuite/go.test/test/fixedbugs/gcc67968.go
! 16815fa94cfc3bcebb44269bdc4648d5  gcc/testsuite/go.test/test/fixedbugs/gcc78763.go
! b05a9639d7eddb0a233655874d4cfa88  gcc/testsuite/go.test/test/fixedbugs/gcc80226.go
! 186e036d10bf15f491982ff25cbe1343  gcc/testsuite/go.test/test/fixedbugs/gcc89321.go
! d372ef086f2c6e8e6bc1a4d09982c9a2  gcc/testsuite/go.test/test/fixedbugs/issue10047.go
! 44958db8612e92a968c9269eb138a669  gcc/testsuite/go.test/test/fixedbugs/issue10066.dir/a.go
! b40ce6e7be89df2519e92a5a51ae62dc  gcc/testsuite/go.test/test/fixedbugs/issue10066.dir/b.go
! 9dff784aad175966aa5753e10dc1969b  gcc/testsuite/go.test/test/fixedbugs/issue10066.go
! cfe5d7b2fc628853df5455902466fc91  gcc/testsuite/go.test/test/fixedbugs/issue10135.go
! cdc691e40d2c0cbd5ce696698433f273  gcc/testsuite/go.test/test/fixedbugs/issue10219.dir/a.go
! 8f52b8fa7ef05545ac4044bf1780c461  gcc/testsuite/go.test/test/fixedbugs/issue10219.dir/b.go
! 5d883e56d8b62cc70969974b37792301  gcc/testsuite/go.test/test/fixedbugs/issue10219.dir/c.go
! 06d49a77171f76d16d950b79990bf707  gcc/testsuite/go.test/test/fixedbugs/issue10219.go
! 80534e88a35aff8013c770a9a5242d7a  gcc/testsuite/go.test/test/fixedbugs/issue10253.go
! bf08928f4a5ca629e3426f7b597e4c9c  gcc/testsuite/go.test/test/fixedbugs/issue10284.go
! df0f8819bb586af872145f99944dd29e  gcc/testsuite/go.test/test/fixedbugs/issue10320.go
! bc08329bc3acced769c47dec84d6a479  gcc/testsuite/go.test/test/fixedbugs/issue10332.go
! 77c425e431c8c50c24c92a307678ead6  gcc/testsuite/go.test/test/fixedbugs/issue10353.go
! bcfda648e772c0cfbaf98e70b46a8a47  gcc/testsuite/go.test/test/fixedbugs/issue10407.go
! faa60be749c83dacd9413ac4454153c5  gcc/testsuite/go.test/test/fixedbugs/issue10441.go
! ec209f2a7326cc512773176eee9a5a22  gcc/testsuite/go.test/test/fixedbugs/issue10486.go
! 4f1132ea86fb1593bee1bc13fcaa4a97  gcc/testsuite/go.test/test/fixedbugs/issue10607.go
! 96cfb6e503d97fc96c8eaad4353100dc  gcc/testsuite/go.test/test/fixedbugs/issue10607a.go
! 8f5340f91c53dd35d9b9155cf0cf42dc  gcc/testsuite/go.test/test/fixedbugs/issue10654.go
! c7fc90705ec51a162a0ff289ab4f2f62  gcc/testsuite/go.test/test/fixedbugs/issue10700.dir/other.go
! a0b1e4046a4adfb9e311bb0693f10ed0  gcc/testsuite/go.test/test/fixedbugs/issue10700.dir/test.go
! 67a84c55785705b008215b6c127699d3  gcc/testsuite/go.test/test/fixedbugs/issue10700.go
! 6191008fb02574c0bbb551946dccd2a2  gcc/testsuite/go.test/test/fixedbugs/issue10925.go
! 564a768cb176766bac933b56e284e2c7  gcc/testsuite/go.test/test/fixedbugs/issue10958.go
! 192526fdb10750537ddb4a1e13d7cf58  gcc/testsuite/go.test/test/fixedbugs/issue10975.go
! 58e01e94e2dec23e1eed3767fc503c02  gcc/testsuite/go.test/test/fixedbugs/issue10977.go
! 12db51175250ec865b82d836eee57844  gcc/testsuite/go.test/test/fixedbugs/issue11053.dir/p.go
! ccef33b9781df0506a4240d43fa5b513  gcc/testsuite/go.test/test/fixedbugs/issue11053.dir/p_test.go
! 9afd0b7efc3599176e7a23930b8c2a40  gcc/testsuite/go.test/test/fixedbugs/issue11053.go
! df5f48de2a2f6003c8b5b837db2a5a94  gcc/testsuite/go.test/test/fixedbugs/issue11053.out
! abfb48923e6be8713601b397d47ae532  gcc/testsuite/go.test/test/fixedbugs/issue11256.go
! 0890834516bca1956a97a97d729f0def  gcc/testsuite/go.test/test/fixedbugs/issue11286.go
! a5ca81d51b93ff6b372cf29d640b4726  gcc/testsuite/go.test/test/fixedbugs/issue11326b.go
! dfdcd7da2a03bd76aa10f53e0aba33be  gcc/testsuite/go.test/test/fixedbugs/issue11354.go
! 2a801329dbe75e210267ec66875ebcb1  gcc/testsuite/go.test/test/fixedbugs/issue11359.go
! 9e9fbf51af881537eaf2058c1a7f6f77  gcc/testsuite/go.test/test/fixedbugs/issue11361.go
! b4373db86ffce7794bf134078849013b  gcc/testsuite/go.test/test/fixedbugs/issue11362.go
! 434b098bc16581400ba5a607343ad56e  gcc/testsuite/go.test/test/fixedbugs/issue11369.go
! d96ad74d16f27dbed53ccc2357168abe  gcc/testsuite/go.test/test/fixedbugs/issue11370.go
! e78fdca89eae227bae224c07dcc0003b  gcc/testsuite/go.test/test/fixedbugs/issue11371.go
! 5cb241aff4c20b84635c92de72e44882  gcc/testsuite/go.test/test/fixedbugs/issue11590.go
! fd49f30d7373d23b4287fed289320b8f  gcc/testsuite/go.test/test/fixedbugs/issue11610.go
! 273755fd15f0c4e9bd94506d83035264  gcc/testsuite/go.test/test/fixedbugs/issue11614.go
! 6fca38fce2e40914777ae050228e9ff5  gcc/testsuite/go.test/test/fixedbugs/issue11674.go
! 58320a9a6a5d77b2f53978ef5e85e90c  gcc/testsuite/go.test/test/fixedbugs/issue11699.go
! 2769d5ab11e9c942729f4710521b3af1  gcc/testsuite/go.test/test/fixedbugs/issue11750.go
! e8b50c67b15e6bd3b52a5a05e31c28f7  gcc/testsuite/go.test/test/fixedbugs/issue11771.go
! ec38917b9e5355ce4692e491abdb8abc  gcc/testsuite/go.test/test/fixedbugs/issue11790.go
! 8c5bde86b43e6718ad2abfef1c2e3a1f  gcc/testsuite/go.test/test/fixedbugs/issue11945.go
! f90f19210310dff4c7cba1752279d884  gcc/testsuite/go.test/test/fixedbugs/issue11987.go
! a0a88c660a46753bc8890970c2648807  gcc/testsuite/go.test/test/fixedbugs/issue12006.go
! 9da9728a81f4e579d59b7bbeb7c74259  gcc/testsuite/go.test/test/fixedbugs/issue12108.go
! 1afbcce606098262706d33b792cdc84d  gcc/testsuite/go.test/test/fixedbugs/issue12133.go
! 5c8033741afd8c3c0b82c81e6151574c  gcc/testsuite/go.test/test/fixedbugs/issue12226.go
! 06e224176e3c2b4fb8113f6514c60baa  gcc/testsuite/go.test/test/fixedbugs/issue12347.go
! 8de9ceed04cccb2fee600fd6366f79f3  gcc/testsuite/go.test/test/fixedbugs/issue12411.go
! 54387a182b8ed7b0f2dee36eefe56f5b  gcc/testsuite/go.test/test/fixedbugs/issue12413.go
! 5530ff3339b710d402fb6632458919e2  gcc/testsuite/go.test/test/fixedbugs/issue12536.go
! 251f454b2a3a327b8dfa3cf8a305f4b4  gcc/testsuite/go.test/test/fixedbugs/issue12577.go
! dbce22b2b1d69dab752f202f3646e538  gcc/testsuite/go.test/test/fixedbugs/issue12588.go
! 4cbef529fc7ab078b29629274e7e4f26  gcc/testsuite/go.test/test/fixedbugs/issue12621.go
! a15bc16a8ba6cb5539da6b7add122f06  gcc/testsuite/go.test/test/fixedbugs/issue12677.dir/p.go
! c95250fa85dae8dcea0ae56c8a7ba819  gcc/testsuite/go.test/test/fixedbugs/issue12677.dir/q.go
! 52cb88cb346be2b80a517b66eaa000da  gcc/testsuite/go.test/test/fixedbugs/issue12677.go
! b1870e865411ab188654770912715b44  gcc/testsuite/go.test/test/fixedbugs/issue12686.go
! 66c0c2804c590b57721150101796bf3a  gcc/testsuite/go.test/test/fixedbugs/issue1304.go
! b6b2a77f9829ae6a80edd78018d591b4  gcc/testsuite/go.test/test/fixedbugs/issue13160.go
! 504a389fafc3ffc7c158a531ba92440b  gcc/testsuite/go.test/test/fixedbugs/issue13162.go
! 65c7f75c13ee967f807fcbce8e255ca2  gcc/testsuite/go.test/test/fixedbugs/issue13169.go
! 06b03344e14b965e4987543a4cca83d3  gcc/testsuite/go.test/test/fixedbugs/issue13171.go
! 93ef18560e44e5fcfb49f435a6098b40  gcc/testsuite/go.test/test/fixedbugs/issue13248.go
! 9fb889e9c782ed1e5f933c378aa37f11  gcc/testsuite/go.test/test/fixedbugs/issue13261.go
! 04259a29865ffb3389a4a57cf856cc84  gcc/testsuite/go.test/test/fixedbugs/issue13262.go
! 2bdc7b1ddcec2c0c26682344d479fb6b  gcc/testsuite/go.test/test/fixedbugs/issue13263.go
! e77172d3705c526377e3c00e7bbe977f  gcc/testsuite/go.test/test/fixedbugs/issue13266.go
! 73a4f51ceb74da9d1633911ab78310c8  gcc/testsuite/go.test/test/fixedbugs/issue13268.go
! 3ea83772df5d812ce7fb2ef29be70de3  gcc/testsuite/go.test/test/fixedbugs/issue13274.go
! e9246b73b0521cd41cb7f4f88c3dfc58  gcc/testsuite/go.test/test/fixedbugs/issue13337.go
! 653570ce156dc7b68b1494707f595658  gcc/testsuite/go.test/test/fixedbugs/issue13365.go
! bd92286fea6a160c84f4b4c96b6f1ed8  gcc/testsuite/go.test/test/fixedbugs/issue13415.go
! 4293e72ddb981253ee7b9e78b8d70982  gcc/testsuite/go.test/test/fixedbugs/issue13471.go
! 1242c9233c3884bb8d0904e91afdb2de  gcc/testsuite/go.test/test/fixedbugs/issue13480.go
! 2c75cc6fe0dbc4483f5d0d3a048c2640  gcc/testsuite/go.test/test/fixedbugs/issue13485.go
! 5e206bacd302ba203b3f8a10ba38dda1  gcc/testsuite/go.test/test/fixedbugs/issue13539.go
! 3e743a4c834988ba56b33cf72004d40c  gcc/testsuite/go.test/test/fixedbugs/issue13684.go
! d429dcf4e1aa339b110f34f4d12674b4  gcc/testsuite/go.test/test/fixedbugs/issue13777.dir/burnin.go
! dc2977edf7091489c31f157894e1aac7  gcc/testsuite/go.test/test/fixedbugs/issue13777.dir/main.go
! c1a85ce5ef0f0c3bd49f79485299ccac  gcc/testsuite/go.test/test/fixedbugs/issue13777.go
! 46ab298c89fd35aba7479b6509c31909  gcc/testsuite/go.test/test/fixedbugs/issue13799.go
! ca52a212df33497b3f1bfeb6f06e830a  gcc/testsuite/go.test/test/fixedbugs/issue13821.go
! 2655ea7f3dc71f5c91796fea4492f013  gcc/testsuite/go.test/test/fixedbugs/issue13821b.go
! ee569c3667bb44cd7026ef880ceb16ec  gcc/testsuite/go.test/test/fixedbugs/issue14006.go
! 81ca24b47a09d9fbdfe8b446cf965050  gcc/testsuite/go.test/test/fixedbugs/issue14010.go
! 99befc0787ced33e4e7b7e5d9e16823a  gcc/testsuite/go.test/test/fixedbugs/issue14136.go
! a6d6c4d252961fd461739a8aad048c1d  gcc/testsuite/go.test/test/fixedbugs/issue14164.dir/a.go
! 3f45d88040f6dc45856e2a9961916a51  gcc/testsuite/go.test/test/fixedbugs/issue14164.dir/main.go
! a4cf6565d7effa10e7e36dd2c4538a78  gcc/testsuite/go.test/test/fixedbugs/issue14164.go
! 0efec73cb1a36b8cffb2b147f7fd457c  gcc/testsuite/go.test/test/fixedbugs/issue14331.dir/a.go
! e71ed5d2172870024318e7d3127fae02  gcc/testsuite/go.test/test/fixedbugs/issue14331.dir/b.go
! ec8ceebb103f93828380889db9b09e25  gcc/testsuite/go.test/test/fixedbugs/issue14331.go
! 590305497da10d7e24194bccd34d6605  gcc/testsuite/go.test/test/fixedbugs/issue14405.go
! 201a0b3dbee0b1bb835650427a2e0595  gcc/testsuite/go.test/test/fixedbugs/issue14520.go
! 3780124a497097b7d30aa047e479a793  gcc/testsuite/go.test/test/fixedbugs/issue14540.go
! 708b178bddfa20dfa59aa466d94306cc  gcc/testsuite/go.test/test/fixedbugs/issue14553.go
! fbdb02182a9f5dc75eb2229488bf25b8  gcc/testsuite/go.test/test/fixedbugs/issue14591.go
! 370aa8ff328f834c7ee7c61ae661aef7  gcc/testsuite/go.test/test/fixedbugs/issue14636.go
! 41022b5ed2e7d5a48c0b949fefe2506a  gcc/testsuite/go.test/test/fixedbugs/issue14646.go
! bc9cd9837f84db3e6e2345fcf99ed1b0  gcc/testsuite/go.test/test/fixedbugs/issue14651.go
! 520b6cdec7b16ff7eb6a57a65a6102cc  gcc/testsuite/go.test/test/fixedbugs/issue14652.go
! 52a2c6c26496a3e0987b4fcbe57cb9de  gcc/testsuite/go.test/test/fixedbugs/issue14725.go
! 61be9b0bb76ddfc999d55d0e27d77e99  gcc/testsuite/go.test/test/fixedbugs/issue14729.go
! dc621f8f3777c4267bdb09f565877a26  gcc/testsuite/go.test/test/fixedbugs/issue14988.go
! 18ebf1ec256aae508c7d9a3e5f7638a3  gcc/testsuite/go.test/test/fixedbugs/issue15002.go
! 8e0b865ba5049df93284417268948d24  gcc/testsuite/go.test/test/fixedbugs/issue15013.go
! b6bb9ee1a9df7be94b5101ba9186211d  gcc/testsuite/go.test/test/fixedbugs/issue15039.go
! 81afa8cbf2b91950051bb97690182409  gcc/testsuite/go.test/test/fixedbugs/issue15042.go
! 4443cd947f54712b29a369a94fc9c6fe  gcc/testsuite/go.test/test/fixedbugs/issue15071.dir/exp.go
! 98313981cbab0654b77bbc01b0431547  gcc/testsuite/go.test/test/fixedbugs/issue15071.dir/main.go
! e6c3b20f5ea4b807599b7c9a0669315b  gcc/testsuite/go.test/test/fixedbugs/issue15071.go
! 6cedfeb906e50f87b48a435bd5bb30de  gcc/testsuite/go.test/test/fixedbugs/issue15084.go
! 031cd5b3c6d79943393e601bfa1cffc8  gcc/testsuite/go.test/test/fixedbugs/issue15141.go
! 8db5fb0dfc248f9c60fd72b768bf93e2  gcc/testsuite/go.test/test/fixedbugs/issue15175.go
! acc61dba4ebfe8c99298a939bd1ff35a  gcc/testsuite/go.test/test/fixedbugs/issue15252.go
! 488d1155387b8747e0ac56fbe9c215b6  gcc/testsuite/go.test/test/fixedbugs/issue15277.go
! 3c817d603e26bb9394299f36b9754e40  gcc/testsuite/go.test/test/fixedbugs/issue15303.go
! c136cb5fad28f6b8b6bbe1a181c371d6  gcc/testsuite/go.test/test/fixedbugs/issue15329.go
! d2029c621dea9accc118446e0fc11c13  gcc/testsuite/go.test/test/fixedbugs/issue15439.go
! 00cfd4d09e4cd79a15f0f1f5dbf1db32  gcc/testsuite/go.test/test/fixedbugs/issue15470.dir/a.go
! 8eac9fa176ddd7ee71d6cd20182def60  gcc/testsuite/go.test/test/fixedbugs/issue15470.dir/b.go
! 09f978e9026b5c7becdb99ce9553bb98  gcc/testsuite/go.test/test/fixedbugs/issue15470.go
! 8d8ecdb06673565f32d1cbeb0229fff1  gcc/testsuite/go.test/test/fixedbugs/issue15514.dir/a.go
! c27d8cda451e7b658d2b597e673d3785  gcc/testsuite/go.test/test/fixedbugs/issue15514.dir/b.go
! 254d0699601224f54f96e52af293cd94  gcc/testsuite/go.test/test/fixedbugs/issue15514.dir/c.go
! 7a90d9d28d2db9a3a1fc10a8a621ccbd  gcc/testsuite/go.test/test/fixedbugs/issue15514.go
! 54425b9e92af4cd3fb3bb70a2018e140  gcc/testsuite/go.test/test/fixedbugs/issue15528.go
! d7313816b52095ba21db8d91766dc66d  gcc/testsuite/go.test/test/fixedbugs/issue15548.dir/a.go
! 6bb76903c806ae513630622ee037795c  gcc/testsuite/go.test/test/fixedbugs/issue15548.dir/b.go
! ec93f9b58177d79f3c65f4636b5313b8  gcc/testsuite/go.test/test/fixedbugs/issue15548.dir/c.go
! 2b0498b50e3611b60e9b063c45cde721  gcc/testsuite/go.test/test/fixedbugs/issue15548.go
! 6b6942a00180a10a4178121fe93819ea  gcc/testsuite/go.test/test/fixedbugs/issue15550.go
! 13d112753189951e4eb38136dcfbe7ce  gcc/testsuite/go.test/test/fixedbugs/issue15572.dir/a.go
! 6618ea8b4ecf42bc62d1d19b32fb925f  gcc/testsuite/go.test/test/fixedbugs/issue15572.dir/b.go
! 23245bba50bdc04d757a743c3e86742f  gcc/testsuite/go.test/test/fixedbugs/issue15572.go
! 85dc715a28ed39177cd3245d0d5c0657  gcc/testsuite/go.test/test/fixedbugs/issue15585.go
! 43de26d87e1c7474ef5746b685669af9  gcc/testsuite/go.test/test/fixedbugs/issue15602.go
! 4bb72a18c2bab81d73817a7ffeb3d1d4  gcc/testsuite/go.test/test/fixedbugs/issue15604.go
! 9944052dcd995b65d8027468c89929b5  gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call.go
! e99a4896b65197f102ce35ae7dcc94d6  gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call_386.s
! 103bacdf3bcc9f4b85f7510cef0ec8e0  gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call_amd64.s
! 50d77eabc41d3a1654fa5e4680001ff9  gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call_decl.go
! 5498626f5e193923fdc7d35f258db74d  gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/main.go
! ab5cf4a1257292bd536c52e715a865b6  gcc/testsuite/go.test/test/fixedbugs/issue15646.dir/a.go
! 914c66231978ba0c66ebfe827a01f5de  gcc/testsuite/go.test/test/fixedbugs/issue15646.dir/b.go
! 0a1d4ee745ed0fe890643fd18d5d42e6  gcc/testsuite/go.test/test/fixedbugs/issue15646.go
! 2375b19d5513b183a5db91963d645f98  gcc/testsuite/go.test/test/fixedbugs/issue15722.go
! 29fa520e4ee4096a77706018aa3d36d1  gcc/testsuite/go.test/test/fixedbugs/issue15733.go
! 24cce64d5f2485d803bdfc15b6749de9  gcc/testsuite/go.test/test/fixedbugs/issue15838.dir/a.go
! 492d3eaaf9b14c2ae2400fc010a062db  gcc/testsuite/go.test/test/fixedbugs/issue15838.dir/b.go
! b983188bab44d3904648d0cc390bf079  gcc/testsuite/go.test/test/fixedbugs/issue15838.go
! 0c6c6fabfbdb65fa2b8c19c5e89c48f3  gcc/testsuite/go.test/test/fixedbugs/issue15895.go
! c00ffd916a5a1b69f8cb8c3747a266cc  gcc/testsuite/go.test/test/fixedbugs/issue15898.go
! c4b9ce443b65b7f659c1eedcb3631d8f  gcc/testsuite/go.test/test/fixedbugs/issue15902.go
! 6ad3d4561ae9785149c765b39b026726  gcc/testsuite/go.test/test/fixedbugs/issue15920.dir/a.go
! a5cf9274b1298fcf5e33e7c3c8664db4  gcc/testsuite/go.test/test/fixedbugs/issue15920.dir/b.go
! 2b0498b50e3611b60e9b063c45cde721  gcc/testsuite/go.test/test/fixedbugs/issue15920.go
! 08c90726d38087aec780ed2e6d467117  gcc/testsuite/go.test/test/fixedbugs/issue15926.go
! a9d9e32a3279739a70985ae7d32325e4  gcc/testsuite/go.test/test/fixedbugs/issue15961.go
! 542d20f18224770d1e0fd60eb4dbb605  gcc/testsuite/go.test/test/fixedbugs/issue15988.go
! d742d2be878ea25e082080c4cb8edb0b  gcc/testsuite/go.test/test/fixedbugs/issue15992.go
! 2a2716dde7ec35df655a687c0ca84c50  gcc/testsuite/go.test/test/fixedbugs/issue15992.out
! 36222fc22a63bd64f8c81f5244995a95  gcc/testsuite/go.test/test/fixedbugs/issue16016.go
! 7848ebaf280b12f8f1b8cac27b6c6ffc  gcc/testsuite/go.test/test/fixedbugs/issue16037_run.go
! cebb9ff26dee90969b76b8ee16390a2f  gcc/testsuite/go.test/test/fixedbugs/issue16095.go
! 2f811a9291bd4c2334098c0686daa1c4  gcc/testsuite/go.test/test/fixedbugs/issue16130.go
! 32a6c00c247343f6fe2a003336358051  gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/a1.go
! 32a6c00c247343f6fe2a003336358051  gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/a2.go
! bbc1ea236555fd554c21acdc1c769ff0  gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/b.go
! 298b8d0391dbf7420e8355e18b8c0643  gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/c.go
! da7ec4691d3013babaf73edfdb997817  gcc/testsuite/go.test/test/fixedbugs/issue16193.go
! 73e045799f7e2350937cd93f0864ff61  gcc/testsuite/go.test/test/fixedbugs/issue16249.go
! 3b9605c83ea3be720129c5200616a2fe  gcc/testsuite/go.test/test/fixedbugs/issue16306.go
! 5d8d7eb49f4a4d5f4e02cc230ad8cf53  gcc/testsuite/go.test/test/fixedbugs/issue16317.dir/a.go
! 9177d0323d82f5f342371a7f1d83295f  gcc/testsuite/go.test/test/fixedbugs/issue16317.dir/b.go
! 95bb47fee8e4d6ff3272478400847b7d  gcc/testsuite/go.test/test/fixedbugs/issue16317.go
! 0a55989d8c598c7bec9a93b8f1c54999  gcc/testsuite/go.test/test/fixedbugs/issue16331.go
! 3fd00825f023b71c50eab62c31f0335f  gcc/testsuite/go.test/test/fixedbugs/issue16369.go
! 64f0c7a64763052c74f0c8dc26f61c58  gcc/testsuite/go.test/test/fixedbugs/issue16428.go
! 6a9b600594663373c3b7dea5c2179cbf  gcc/testsuite/go.test/test/fixedbugs/issue16439.go
! 59e3aeab8baf4cc9ef0e8ec086a6f54c  gcc/testsuite/go.test/test/fixedbugs/issue16515.go
! 69889b6a96854a1739c20cbe23daeb9e  gcc/testsuite/go.test/test/fixedbugs/issue16616.dir/a.go
! 2736ba8da2e70f2d8320345801cb9189  gcc/testsuite/go.test/test/fixedbugs/issue16616.dir/b.go
! efaea620dd58b4fd27e68c241126da98  gcc/testsuite/go.test/test/fixedbugs/issue16616.dir/issue16616.go
! dbf483ebd321f47cfbc8acc91860085f  gcc/testsuite/go.test/test/fixedbugs/issue16616.go
! b0154934b11efd5913f34a572ce383ef  gcc/testsuite/go.test/test/fixedbugs/issue16733.go
! 51e65ba89f68f0895799ae6b1218844b  gcc/testsuite/go.test/test/fixedbugs/issue16741.go
! 39aab709d321c17bbcdada904f8ae134  gcc/testsuite/go.test/test/fixedbugs/issue16760.go
! fa0452394a6bbddd3cb3fc42fafec980  gcc/testsuite/go.test/test/fixedbugs/issue16804.go
! 64229a14011ce7cee8733834f52e90db  gcc/testsuite/go.test/test/fixedbugs/issue16948.go
! 110fa93b1f7af09115c136951c81b055  gcc/testsuite/go.test/test/fixedbugs/issue16949.go
! 43561dce4bea32ce6c7f9ae9407f2ac9  gcc/testsuite/go.test/test/fixedbugs/issue16985.go
! 6bcf42cc246fa30812ce0eb68f75acf7  gcc/testsuite/go.test/test/fixedbugs/issue17005.go
! 599ab492fea82ed5e4caef3c49b88fb7  gcc/testsuite/go.test/test/fixedbugs/issue17111.go
! 4179327b2b32a72f0d67b3a45342daa7  gcc/testsuite/go.test/test/fixedbugs/issue17194.go
! 89d523d96d90ea3daaef9064b6601c73  gcc/testsuite/go.test/test/fixedbugs/issue17270.go
! b27864867ae741a53cd9f4d189b812cf  gcc/testsuite/go.test/test/fixedbugs/issue17328.go
! aa682e9e12fde192445193a5563b908e  gcc/testsuite/go.test/test/fixedbugs/issue17381.go
! 67f75a71e4e706af34428fdd2b28745c  gcc/testsuite/go.test/test/fixedbugs/issue17551.go
! 14b5d9fdc2e324d6a964ffd9f008259d  gcc/testsuite/go.test/test/fixedbugs/issue17588.go
! fad1db350ba1c9dbaec782baeb9989a9  gcc/testsuite/go.test/test/fixedbugs/issue17596.go
! 9112549394654270f721d30bea2e1222  gcc/testsuite/go.test/test/fixedbugs/issue17631.go
! 69a671c8d7b12fa9b4299a89ac2fdb26  gcc/testsuite/go.test/test/fixedbugs/issue17640.go
! 5d7279ad88cf1891bc235681b5259783  gcc/testsuite/go.test/test/fixedbugs/issue17645.go
! cddf6284ba778be49164bcf48551ce12  gcc/testsuite/go.test/test/fixedbugs/issue17710.go
! 80c4592278211ae092653e45bc1d34d0  gcc/testsuite/go.test/test/fixedbugs/issue17752.go
! 409d22d78675f4826428f5c8b8b749de  gcc/testsuite/go.test/test/fixedbugs/issue17758.go
! 138b5c9c62a44f802c9c790c0a7e2b7a  gcc/testsuite/go.test/test/fixedbugs/issue17918.go
! addc38afff36becd4c972a62aac03e5a  gcc/testsuite/go.test/test/fixedbugs/issue18089.go
! f4a803173aaece8a49146bbb23ef4bff  gcc/testsuite/go.test/test/fixedbugs/issue18092.go
! 5481fc99bfc056fda19ae747aa4d7f1c  gcc/testsuite/go.test/test/fixedbugs/issue18231.go
! bd1b3e9311b63a8dce7653f1d51a25ff  gcc/testsuite/go.test/test/fixedbugs/issue18393.go
! e5a7a04bb22a1c348a719aa01a6f9ecf  gcc/testsuite/go.test/test/fixedbugs/issue18410.go
! 1de9c609abb14f88ef24f7ed59a29e77  gcc/testsuite/go.test/test/fixedbugs/issue18419.dir/other.go
! bf67f57ac43c9ea1b579d1c9125cab45  gcc/testsuite/go.test/test/fixedbugs/issue18419.dir/test.go
! 67a84c55785705b008215b6c127699d3  gcc/testsuite/go.test/test/fixedbugs/issue18419.go
! a4f45738357d508f4d3edadce0e612c3  gcc/testsuite/go.test/test/fixedbugs/issue18595.go
! 6f11d544e22e88e19a54f4f5f1d43dc6  gcc/testsuite/go.test/test/fixedbugs/issue18636.go
! b07065adf2ca1b64a62536e30e54ee48  gcc/testsuite/go.test/test/fixedbugs/issue18640.go
! 49b564f5c5b32c5ffd517cb97dfba6f7  gcc/testsuite/go.test/test/fixedbugs/issue18655.go
! 0d02cbcfd536486e40832d8586c1a95c  gcc/testsuite/go.test/test/fixedbugs/issue18661.go
! 44a0dc7bcfec6e17040493544b516d03  gcc/testsuite/go.test/test/fixedbugs/issue18725.go
! ce776e533b196bb0ac28699cf81d085d  gcc/testsuite/go.test/test/fixedbugs/issue18808.go
! a095baa23a3a9de2d836c247c931a169  gcc/testsuite/go.test/test/fixedbugs/issue18906.go
! 8f0c38aa11e16bb253a0c06f80ad9314  gcc/testsuite/go.test/test/fixedbugs/issue18915.go
! e420896f11f5d923f2788ea6ca203e02  gcc/testsuite/go.test/test/fixedbugs/issue18994.go
! 9de7f088f286ec97a4eec8ac403f3586  gcc/testsuite/go.test/test/fixedbugs/issue19012.go
! a9480419408042d52fc0aac539707014  gcc/testsuite/go.test/test/fixedbugs/issue19028.dir/a.go
! 27a2611d172d124a1177ea16677d2038  gcc/testsuite/go.test/test/fixedbugs/issue19028.dir/main.go
! 628ef8f3a4869d7f20ff6aca8a0dfa1c  gcc/testsuite/go.test/test/fixedbugs/issue19028.go
! 32ab75c8f4e285cc75a70193481ff4dd  gcc/testsuite/go.test/test/fixedbugs/issue19040.go
! 8180be6bcd1f5f50de4e734213ce3e15  gcc/testsuite/go.test/test/fixedbugs/issue19056.go
! 79b920ae1a0942e65b3cb7848e3a57cd  gcc/testsuite/go.test/test/fixedbugs/issue19078.go
! edb54079a22f03a2f4759cc9dd877a28  gcc/testsuite/go.test/test/fixedbugs/issue19084.go
! 5faadad826bd62971a8ac8fcba52a9f3  gcc/testsuite/go.test/test/fixedbugs/issue19113.go
! d1dbf59be76e4aa1c6d650a57d21cc1b  gcc/testsuite/go.test/test/fixedbugs/issue19137.go
! 038ac83ad78e0a033abac2c372057d18  gcc/testsuite/go.test/test/fixedbugs/issue19182.go
! 3e912775090a927b9cd02f67ac885ac2  gcc/testsuite/go.test/test/fixedbugs/issue19201.go
! 2dbcbd69129eee6521495dec77758f42  gcc/testsuite/go.test/test/fixedbugs/issue19217.go
! c5ea90e0870fb104b7c91cbf325c9102  gcc/testsuite/go.test/test/fixedbugs/issue19275.go
! 8fa857f5920c0cd0344a1e96b6101c50  gcc/testsuite/go.test/test/fixedbugs/issue19323.go
! 354cb0e2dcb16f76829e27d6a5c8fe27  gcc/testsuite/go.test/test/fixedbugs/issue19359.go
! b9bbc8cd6a9debf01b8c953e65096231  gcc/testsuite/go.test/test/fixedbugs/issue19482.go
! 4a4203e0ba9ac64f1189260073d08761  gcc/testsuite/go.test/test/fixedbugs/issue19507.dir/div_arm.s
! d252f0cdb798baf6d60d6c2a0cb291c7  gcc/testsuite/go.test/test/fixedbugs/issue19507.dir/main.go
! 259cb2b3333875448e4b32a33394b910  gcc/testsuite/go.test/test/fixedbugs/issue19507.go
! 267c73170bc578f4b4fcf2acfd3f5d44  gcc/testsuite/go.test/test/fixedbugs/issue19515.go
! 5ec43b33a038bc855139995e78d40e70  gcc/testsuite/go.test/test/fixedbugs/issue19548.dir/a.go
! e22b3d99eced02987c96786270b74fc8  gcc/testsuite/go.test/test/fixedbugs/issue19548.dir/b.go
! 8c41c46bb3fbecf6d3be5dd4113b3abe  gcc/testsuite/go.test/test/fixedbugs/issue19548.go
! 8d983ce27b8b8fca7f5dce0a4c85d1b2  gcc/testsuite/go.test/test/fixedbugs/issue19555.go
! 736c3951a257b3cd5a33989e43a8331f  gcc/testsuite/go.test/test/fixedbugs/issue19632.go
! 9254af36fc86d068fa372145e72780d7  gcc/testsuite/go.test/test/fixedbugs/issue19658.go
! c3fdbde1012476297c3569a74c724a17  gcc/testsuite/go.test/test/fixedbugs/issue19667.go
! 901fcd711d01df2d118e3f4ebbf4c4b9  gcc/testsuite/go.test/test/fixedbugs/issue19671.go
! d1bcb54b935ff091c292d83045077dd3  gcc/testsuite/go.test/test/fixedbugs/issue19678.go
! c44b99b4cf43a8f939e5abdb21e80f02  gcc/testsuite/go.test/test/fixedbugs/issue19679.go
! 8a51d5c424078e0089bc50125d44fc38  gcc/testsuite/go.test/test/fixedbugs/issue19696.go
! 0cdcefb0395535902d6ca681b4536d7c  gcc/testsuite/go.test/test/fixedbugs/issue19699b.go
! 9796d8b8cd5a0ca0f10f8d4b301e6d06  gcc/testsuite/go.test/test/fixedbugs/issue19705.go
! 5aa24fb21f834d9311d8b26f2d57b31a  gcc/testsuite/go.test/test/fixedbugs/issue19710.go
! 69f5ccd86127a320aa6d6bdaa442cbf5  gcc/testsuite/go.test/test/fixedbugs/issue19743.go
! 540f8ac2110fc27dfb58f93545de2032  gcc/testsuite/go.test/test/fixedbugs/issue19764.dir/a.go
! 9386d4456fbd19b821324b69bef8428c  gcc/testsuite/go.test/test/fixedbugs/issue19764.dir/b.go
! f961260501a8ed50974b060d357b9f14  gcc/testsuite/go.test/test/fixedbugs/issue19764.go
! f2fc06fd98db414e84feff0d135a4233  gcc/testsuite/go.test/test/fixedbugs/issue19783.go
! 1ce72686e2c5b45c1262a4de504483fe  gcc/testsuite/go.test/test/fixedbugs/issue19799.go
! bf26406202c076844910d4c506054b31  gcc/testsuite/go.test/test/fixedbugs/issue19880.go
! 91d1f5fbd006a922432c992d303d2dca  gcc/testsuite/go.test/test/fixedbugs/issue19911.go
! abaa2ccec0b33e9db2d1c04bbf09d63f  gcc/testsuite/go.test/test/fixedbugs/issue19977.go
! 79f47ec432c3125393207fb811709beb  gcc/testsuite/go.test/test/fixedbugs/issue20029.go
! bde77df74a10f4dcf0599c7b5a42892b  gcc/testsuite/go.test/test/fixedbugs/issue20097.go
! aabd40a47916a678e17f7844f2e0acc2  gcc/testsuite/go.test/test/fixedbugs/issue20145.go
! 4b404c51835b4f248ddb6a093f77565c  gcc/testsuite/go.test/test/fixedbugs/issue20185.go
! 4068b521e6615e6098ee2c46cf7a1948  gcc/testsuite/go.test/test/fixedbugs/issue20227.go
! ec936d22bc1463e1346b2d94ecd8eff5  gcc/testsuite/go.test/test/fixedbugs/issue20333.go
! 8d5541bdd0ea53542292e09f395ca623  gcc/testsuite/go.test/test/fixedbugs/issue20335.go
! b7c3e98373c4872327bd5521358a193c  gcc/testsuite/go.test/test/fixedbugs/issue20415.go
! 73d1076464ce83586440589c568fc1ae  gcc/testsuite/go.test/test/fixedbugs/issue20529.go
! 7cb4ea7b20d9d1c8700f1dd34bf60db2  gcc/testsuite/go.test/test/fixedbugs/issue20530.go
! 399420bdb1e943789413c38b972e75f7  gcc/testsuite/go.test/test/fixedbugs/issue20602.go
! 5f72df6b0a6fcb1d863253cf6a5f3869  gcc/testsuite/go.test/test/fixedbugs/issue20682.dir/p.go
! 7742d582184e96b0e1a9cfff02866299  gcc/testsuite/go.test/test/fixedbugs/issue20682.dir/q.go
! 65a5388914f5de670140e71147832ed6  gcc/testsuite/go.test/test/fixedbugs/issue20682.dir/r.go
! f58dc3524fef1c088e7c368923910b98  gcc/testsuite/go.test/test/fixedbugs/issue20682.go
! 679466a7624fb398a27fbecc80ee6484  gcc/testsuite/go.test/test/fixedbugs/issue20739.go
! bcc0466e72dca8ced6984dff7db0c408  gcc/testsuite/go.test/test/fixedbugs/issue20749.go
! f37380d629936e005d13b585be4841d5  gcc/testsuite/go.test/test/fixedbugs/issue20780.go
! 98676836ec7c076a1b1d23f58bb4e79d  gcc/testsuite/go.test/test/fixedbugs/issue20811.go
! 1e77bb36464b776a80453d015e768d95  gcc/testsuite/go.test/test/fixedbugs/issue20812.go
! 61e16543d01618fab253ae6ed0d90544  gcc/testsuite/go.test/test/fixedbugs/issue20813.go
! f30ba36e628c363047f7e88a834506ac  gcc/testsuite/go.test/test/fixedbugs/issue20923.go
! d964d6ae0e24079ea61dd50a63b82bf8  gcc/testsuite/go.test/test/fixedbugs/issue21048.go
! 4222eb226ed3e6e025786a994cb3cbef  gcc/testsuite/go.test/test/fixedbugs/issue21120.dir/a.go
! 7a4640bf2577081378f26d1e433f8e95  gcc/testsuite/go.test/test/fixedbugs/issue21120.dir/b.go
! 7ae973e325d9d2d5540ce2590849a537  gcc/testsuite/go.test/test/fixedbugs/issue21120.dir/main.go
! e47e6f003e979770f35af94feb652b57  gcc/testsuite/go.test/test/fixedbugs/issue21120.go
! 9503fa06bc923f3d15c4487f15da2917  gcc/testsuite/go.test/test/fixedbugs/issue21221.go
! 0167392a80fe376b3d242c20fd130e90  gcc/testsuite/go.test/test/fixedbugs/issue21253.go
! 9d245fd3341aeb429a506bf5a7a23c42  gcc/testsuite/go.test/test/fixedbugs/issue21256.go
! bc37cfad075f331038c2870755ea768e  gcc/testsuite/go.test/test/fixedbugs/issue21273.go
! b2b55d2ef184774a8dbc098c7d6df68c  gcc/testsuite/go.test/test/fixedbugs/issue21317.go
! df76889fda31919b2df2a56b17296842  gcc/testsuite/go.test/test/fixedbugs/issue21576.go
! bb6112561603738d8d1801755592b5b6  gcc/testsuite/go.test/test/fixedbugs/issue21655.go
! f62cb7baef80f7a9a9f47901e33803be  gcc/testsuite/go.test/test/fixedbugs/issue21770.go
! fa90745cc9cb7b06403db6e9b133dd47  gcc/testsuite/go.test/test/fixedbugs/issue21808.go
! 00d4e667d45af821d9e73bb1cb86ec40  gcc/testsuite/go.test/test/fixedbugs/issue21808.out
! 4c7d78eec4270562c794a7ad5c6b4cbc  gcc/testsuite/go.test/test/fixedbugs/issue21879.go
! 9e322eda2b3cef00713b5c485683c7bc  gcc/testsuite/go.test/test/fixedbugs/issue21879.out
! 09c065b7f0942698aa41fc84cd8af3f3  gcc/testsuite/go.test/test/fixedbugs/issue21882.go
! 4e27b914454c684dfd959abfea4fea62  gcc/testsuite/go.test/test/fixedbugs/issue21887.go
! a08e2c2329822cfbeba5d58dc7d17445  gcc/testsuite/go.test/test/fixedbugs/issue21887.out
! 64711a042bb370ad637cc5cb2eb9e53b  gcc/testsuite/go.test/test/fixedbugs/issue21963.go
! 6d4b568b42c0c07693e9f3e7f4c849ad  gcc/testsuite/go.test/test/fixedbugs/issue21979.go
! fa0020978db4bdd8e52e7e6206cae9b7  gcc/testsuite/go.test/test/fixedbugs/issue21988.go
! dc705a17bc0b1f340ad46e46ac3af03c  gcc/testsuite/go.test/test/fixedbugs/issue22063.go
! 1ffa5857ab995e59d5bd711555cdf302  gcc/testsuite/go.test/test/fixedbugs/issue22076.go
! bac5ccc86a7149c52425a50ea9ed3bc6  gcc/testsuite/go.test/test/fixedbugs/issue22083.go
! 20c3e53f8cbc2b89feb2783ef2d7b196  gcc/testsuite/go.test/test/fixedbugs/issue22198.go
! c19f7b7b0d2e60f1336d9fe53d070dd5  gcc/testsuite/go.test/test/fixedbugs/issue22200.go
! f5e1457132f61aa4526a20ac64596e39  gcc/testsuite/go.test/test/fixedbugs/issue22200b.go
! ba4f37ce893ee3cd132eee175ee5b5dc  gcc/testsuite/go.test/test/fixedbugs/issue22305.go
! 5401f9c07b39f7eb78aeae11d5d22727  gcc/testsuite/go.test/test/fixedbugs/issue22326.go
! 9231b1f562bdb5c488e9cfe28f81fa8c  gcc/testsuite/go.test/test/fixedbugs/issue22326.out
! ab776894b8d92036bbcf97f5e0a433dc  gcc/testsuite/go.test/test/fixedbugs/issue22327.go
! b6f828db8bc258f993753a3d5eef1a36  gcc/testsuite/go.test/test/fixedbugs/issue22429.go
! d1bd98e19d85f8fe91739e3deb1b8ac7  gcc/testsuite/go.test/test/fixedbugs/issue22458.go
! 60524b4d982780b9204343dea06a88b5  gcc/testsuite/go.test/test/fixedbugs/issue22605.go
! a2eb34bf7f8bd0f97cc822ce9e4dd454  gcc/testsuite/go.test/test/fixedbugs/issue22660.go
! 253f380036707c3e51fd7754601762ed  gcc/testsuite/go.test/test/fixedbugs/issue22683.go
! 74d9a83219cabaab06a69fd318873f33  gcc/testsuite/go.test/test/fixedbugs/issue22683.out
! 24eb4aa53748cabb8b9cc687f283d01e  gcc/testsuite/go.test/test/fixedbugs/issue22781.go
! c97aa93408a3795059ce70d51df5492f  gcc/testsuite/go.test/test/fixedbugs/issue22794.go
! e325cc392e639cd884f50df36d5946b4  gcc/testsuite/go.test/test/fixedbugs/issue22822.go
! ecc0a047199ede30c2530d8b75880b1e  gcc/testsuite/go.test/test/fixedbugs/issue22881.go
! 3ca7372940c6045ae5448f1cbf996e71  gcc/testsuite/go.test/test/fixedbugs/issue22904.go
! 2dacf1ae78065b78d26ed9bb722dbc74  gcc/testsuite/go.test/test/fixedbugs/issue22921.go
! 7a492e92312bf147f67455bda5d44056  gcc/testsuite/go.test/test/fixedbugs/issue22941.dir/a.go
! 04533ecacf88a80810e6bea50539405e  gcc/testsuite/go.test/test/fixedbugs/issue22941.dir/b.go
! e132e83fa5ef9d82cd6772641211cb17  gcc/testsuite/go.test/test/fixedbugs/issue22941.dir/main.go
! 0566f78ae61117afc7ac4078306974bc  gcc/testsuite/go.test/test/fixedbugs/issue22941.go
! d0546deb53d2d98ffcc8318151106aa3  gcc/testsuite/go.test/test/fixedbugs/issue22962.dir/a.go
! 542a4e737ee82d6a6cf04b39228516c2  gcc/testsuite/go.test/test/fixedbugs/issue22962.dir/b.go
! f58dc3524fef1c088e7c368923910b98  gcc/testsuite/go.test/test/fixedbugs/issue22962.go
! d67d829aeed35da7d73ee1ae19455bb3  gcc/testsuite/go.test/test/fixedbugs/issue23093.go
! 5181eafeff6e2a5dfbfcd79f3402ea2a  gcc/testsuite/go.test/test/fixedbugs/issue23116.go
! f18e8287747140374feb295ac9da5874  gcc/testsuite/go.test/test/fixedbugs/issue23179.dir/a.go
! 7d908056b723460891f1a7edca2c6be9  gcc/testsuite/go.test/test/fixedbugs/issue23179.dir/b.go
! f58dc3524fef1c088e7c368923910b98  gcc/testsuite/go.test/test/fixedbugs/issue23179.go
! 2966a487d62e0fd197f80ffdb5885f45  gcc/testsuite/go.test/test/fixedbugs/issue23188.go
! f0a9fda454add51ec145a5a72725e039  gcc/testsuite/go.test/test/fixedbugs/issue23298.go
! b70c5417283a89f277f2229d2cea318b  gcc/testsuite/go.test/test/fixedbugs/issue23305.go
! a7b5027d1cf4c8df1c5372ddb2a4ee0f  gcc/testsuite/go.test/test/fixedbugs/issue23311.dir/main.go
! d1e8ca134d7af84b725dab791221e3ab  gcc/testsuite/go.test/test/fixedbugs/issue23311.go
! d445a14bbe82996f2c9d145a54776fa1  gcc/testsuite/go.test/test/fixedbugs/issue23414.go
! 8c1a0db7184dd62aed91c243fec11c2f  gcc/testsuite/go.test/test/fixedbugs/issue23489.go
! f978d269d0d7f8b5494083068fb6b8a2  gcc/testsuite/go.test/test/fixedbugs/issue23504.go
! 63ad1bd19dc1a1cdb9f560c31ee330f2  gcc/testsuite/go.test/test/fixedbugs/issue23521.go
! c1369807adbeba1c4e358ee25c2aca47  gcc/testsuite/go.test/test/fixedbugs/issue23522.go
! cd1d5d62d4156120bb5e7a92905ed85a  gcc/testsuite/go.test/test/fixedbugs/issue23545.go
! c1a0594bb8d457912fd24a7e58fc5293  gcc/testsuite/go.test/test/fixedbugs/issue23546.go
! b4b3dd889d2258b30116d08946402410  gcc/testsuite/go.test/test/fixedbugs/issue23586.go
! 4af5085e7f73a968f077d5ab5bc6d8a2  gcc/testsuite/go.test/test/fixedbugs/issue23719.go
! f3918208f527c6ee2cbd378732c20adc  gcc/testsuite/go.test/test/fixedbugs/issue23732.go
! 0a5cef7a222e9769adba589fd847634c  gcc/testsuite/go.test/test/fixedbugs/issue23734.go
! 367bac6a2cfee4fecf62821b536d5b4a  gcc/testsuite/go.test/test/fixedbugs/issue23780.go
! 1937c98602560a4dd591f9206b4a6d9f  gcc/testsuite/go.test/test/fixedbugs/issue23781.go
! 3a6bad63ba98607e3f48e0952e0fb361  gcc/testsuite/go.test/test/fixedbugs/issue23812.go
! d904c878fbc064c34fca24593e915133  gcc/testsuite/go.test/test/fixedbugs/issue23823.go
! 6cb47ea91c4f693321d6efa5f2ff293f  gcc/testsuite/go.test/test/fixedbugs/issue23912.go
! eb35da03203aa4eb0c53c4482450a0c7  gcc/testsuite/go.test/test/fixedbugs/issue24120.go
! e79b87d9c774241e1e71b2a5022d9f90  gcc/testsuite/go.test/test/fixedbugs/issue24173.go
! 2f874a9f0cbcb76812e7083e5fb512e1  gcc/testsuite/go.test/test/fixedbugs/issue24187.go
! 4134b78652fc6b49c1ec1ace65b5bc85  gcc/testsuite/go.test/test/fixedbugs/issue24419.go
! 80070f908036e67d4007e8a9ca339f1d  gcc/testsuite/go.test/test/fixedbugs/issue24449.go
! efcaa9abdf38ee21a3a871e71ce396b3  gcc/testsuite/go.test/test/fixedbugs/issue24470.go
! 7c6348c598a004e1e9df9659045fd75a  gcc/testsuite/go.test/test/fixedbugs/issue24488.go
! a6dea36f2f64559b9088c4fac3224456  gcc/testsuite/go.test/test/fixedbugs/issue24503.go
! 2aac5e978943e458fe748b55ddfbc6f5  gcc/testsuite/go.test/test/fixedbugs/issue24547.go
! 41f7452322af6da8ff674dad8612d101  gcc/testsuite/go.test/test/fixedbugs/issue24760.go
! 56e5f3bc0f82938d134724b530bc3859  gcc/testsuite/go.test/test/fixedbugs/issue24763.go
! 8c9c543d17816afd2e4c7f884d3f98c9  gcc/testsuite/go.test/test/fixedbugs/issue24799.go
! 13213225f01a4fe03772ae608ec60e79  gcc/testsuite/go.test/test/fixedbugs/issue24801.dir/a.go
! 7b26691b21b7bc45b0fdba0b153e04a0  gcc/testsuite/go.test/test/fixedbugs/issue24801.dir/main.go
! c4b56594df422a1576d30c0e7b334d31  gcc/testsuite/go.test/test/fixedbugs/issue24801.go
! 4784526df14d36482d9809a9ca3d0c25  gcc/testsuite/go.test/test/fixedbugs/issue24817.go
! 95605856912306f04a3f03af3b3008a7  gcc/testsuite/go.test/test/fixedbugs/issue24937.go
! c1f5c329a386eba2b359039a87042bf4  gcc/testsuite/go.test/test/fixedbugs/issue24939.go
! 64d2ccf83836c894612f9acb47363586  gcc/testsuite/go.test/test/fixedbugs/issue25006.go
! 63b6754f948fdfcf4e2e0a3c0ca482a9  gcc/testsuite/go.test/test/fixedbugs/issue25101.go
! 5b32d56e090f0761ec65874a3e830823  gcc/testsuite/go.test/test/fixedbugs/issue25322.go
! 52595c1fee543ea0d9e47613bf911a7c  gcc/testsuite/go.test/test/fixedbugs/issue25322.out
! 7abf058c400c4f24f409ea290f3685f8  gcc/testsuite/go.test/test/fixedbugs/issue25507.go
! a947ddb76b535a96a9158d96835a520a  gcc/testsuite/go.test/test/fixedbugs/issue25516.go
! 30bcbdb34fbb57c4bb473ade59632ff2  gcc/testsuite/go.test/test/fixedbugs/issue25727.go
! 7d68f6eab86673f4a0d195a8e0f89212  gcc/testsuite/go.test/test/fixedbugs/issue25741.go
! 07eab325f025aa26f446f4b3b30f9ae5  gcc/testsuite/go.test/test/fixedbugs/issue25776.go
! 27ee38cc9c057289cc46bf9b1319cbf8  gcc/testsuite/go.test/test/fixedbugs/issue25897a.go
! e3a546a5a13860505ba1361842e49a95  gcc/testsuite/go.test/test/fixedbugs/issue25897b.go
! 861d357b854b3b284fa6b093a85ac3c5  gcc/testsuite/go.test/test/fixedbugs/issue25958.go
! d8718194d10cae2e0f6f239bccacf358  gcc/testsuite/go.test/test/fixedbugs/issue25984.dir/p.go
! 025049b52a80c38c4ac5afaf16d01c1a  gcc/testsuite/go.test/test/fixedbugs/issue25984.dir/q.go
! d1e8ca134d7af84b725dab791221e3ab  gcc/testsuite/go.test/test/fixedbugs/issue25984.go
! 10c58ae3a3192014468377746a7321c3  gcc/testsuite/go.test/test/fixedbugs/issue26024.go
! 1889b9eb1481b479145c77fb1acc51b3  gcc/testsuite/go.test/test/fixedbugs/issue26043.go
! 8842ee4fe0a3e114453a87cf4484c8f9  gcc/testsuite/go.test/test/fixedbugs/issue26097.go
! 58365bacc6e48c964b537ff912d1e219  gcc/testsuite/go.test/test/fixedbugs/issue26105.go
! cc3bad5d653f26f1e7cb359ec9841cd8  gcc/testsuite/go.test/test/fixedbugs/issue26116.go
! 201a51fa394cc1cd56ca3b2e4fcf0705  gcc/testsuite/go.test/test/fixedbugs/issue26120.go
! 480e2382fd30c7128ff7a80d6fa6f816  gcc/testsuite/go.test/test/fixedbugs/issue2615.go
! 3371360a79aaa91380804e3922408966  gcc/testsuite/go.test/test/fixedbugs/issue26153.go
! 2c42393a8e8bd6d0c5fb558aaf7c13b9  gcc/testsuite/go.test/test/fixedbugs/issue26248.go
! b2fff8c354649728831c84c0e0db8e14  gcc/testsuite/go.test/test/fixedbugs/issue26335.go
! 2cdde1c9b1db938c8a44b001687a2983  gcc/testsuite/go.test/test/fixedbugs/issue26340.go
! c794350481c57eba2a067f83f4e2d999  gcc/testsuite/go.test/test/fixedbugs/issue26341.dir/a.go
! 51986ca2c8f7b69275dd86ff80d283d5  gcc/testsuite/go.test/test/fixedbugs/issue26341.dir/b.go
! d1e8ca134d7af84b725dab791221e3ab  gcc/testsuite/go.test/test/fixedbugs/issue26341.go
! 90a10b1b0392c2ac41ca068faf37ffe1  gcc/testsuite/go.test/test/fixedbugs/issue26407.go
! b03b2230aacd3105035f955bfc9f7661  gcc/testsuite/go.test/test/fixedbugs/issue26411.go
! 5b38c3a5eb784c7ef580b893c4e6f68f  gcc/testsuite/go.test/test/fixedbugs/issue26416.go
! a18d6f00a1f23d4e19e0f44008219709  gcc/testsuite/go.test/test/fixedbugs/issue26438.go
! 0ee093d19a370d6f52ebcc7b64473997  gcc/testsuite/go.test/test/fixedbugs/issue26495.go
! ca7c6fe813bd233f0d146091852b0d60  gcc/testsuite/go.test/test/fixedbugs/issue26616.go
! 1afe27080187aa33622210e65aa1f687  gcc/testsuite/go.test/test/fixedbugs/issue26855.go
! fbb5820282ae3f8b2bf159dc5764bc5d  gcc/testsuite/go.test/test/fixedbugs/issue27143.go
! 114e58b90132767b69069b445188c11b  gcc/testsuite/go.test/test/fixedbugs/issue27232.go
! 76c06c94784a083610a928ae58f3a80e  gcc/testsuite/go.test/test/fixedbugs/issue27267.go
! 1b7300eac3975dbeb3e77a79c37f1fb7  gcc/testsuite/go.test/test/fixedbugs/issue27278.go
! 79857c2f43a921a565c54e3f8d6ab3af  gcc/testsuite/go.test/test/fixedbugs/issue27289.go
! 31b2ed9792a0edb25bb8920e04566c0c  gcc/testsuite/go.test/test/fixedbugs/issue27356.go
! ccca8559b824128b5868e39154b77a55  gcc/testsuite/go.test/test/fixedbugs/issue27695.go
! aced62d2bf49205b65d7d6d110365d2f  gcc/testsuite/go.test/test/fixedbugs/issue27695b.go
! 2f9ef99c29e5b7b0cac50ad044eab939  gcc/testsuite/go.test/test/fixedbugs/issue27695c.go
! a3b839ac4c4854efe9ff603c02a72f89  gcc/testsuite/go.test/test/fixedbugs/issue27718.go
! d819c6d8e530b093b184a70ea1f5830c  gcc/testsuite/go.test/test/fixedbugs/issue27829.go
! 025630cfcf4cc020a86e04827eeefb78  gcc/testsuite/go.test/test/fixedbugs/issue27836.dir/Äfoo.go
! 1d6202b7968819b5a4e8ba2c52bffc65  gcc/testsuite/go.test/test/fixedbugs/issue27836.dir/Ämain.go
! d1e8ca134d7af84b725dab791221e3ab  gcc/testsuite/go.test/test/fixedbugs/issue27836.go
! ff7aadaf81b036c2f7c1f83c43f25790  gcc/testsuite/go.test/test/fixedbugs/issue27938.go
! a13227d12abe8dee23e407cb8da00f7a  gcc/testsuite/go.test/test/fixedbugs/issue27961.go
! 660a6994843e05e43374491e31744208  gcc/testsuite/go.test/test/fixedbugs/issue28055.go
! 113c8bc0a928029f41f14a83ddb2cced  gcc/testsuite/go.test/test/fixedbugs/issue28058.go
! efac7899d4286e0bbc4bbda7083cfc90  gcc/testsuite/go.test/test/fixedbugs/issue28078.go
! f1caabee172a85ee34cf076f12456efd  gcc/testsuite/go.test/test/fixedbugs/issue28079a.go
! e13403b85e708249f156417809f7dd0f  gcc/testsuite/go.test/test/fixedbugs/issue28079b.go
! 8ac2611af55ddb0c1b9e9236e0730107  gcc/testsuite/go.test/test/fixedbugs/issue28079c.go
! 4be551dd245ec75ad86368962ce3ec69  gcc/testsuite/go.test/test/fixedbugs/issue28268.go
! b76dde935eef5b1f839b9b017fdf81e4  gcc/testsuite/go.test/test/fixedbugs/issue28390.go
! 7960258d045d28ee3f74c6054d27df50  gcc/testsuite/go.test/test/fixedbugs/issue28390.out
! 92ddfc59f46742d52a161c884a758450  gcc/testsuite/go.test/test/fixedbugs/issue28430.go
! f3fad618aafe05a363ecd37c356e577c  gcc/testsuite/go.test/test/fixedbugs/issue28445.go
! 3542ec0119cb58ea16ba570da4216a8e  gcc/testsuite/go.test/test/fixedbugs/issue28450.go
! 84f905469a310b5f59f4acfb5b7f4a5e  gcc/testsuite/go.test/test/fixedbugs/issue28601.go
! a698aad212e88f04b3851bdda4e853fa  gcc/testsuite/go.test/test/fixedbugs/issue28616.go
! d9802e2cee153521b99cf0709d9e3705  gcc/testsuite/go.test/test/fixedbugs/issue28688.go
! ccc1282ace5a6f5e26c5fd4fd3380e6c  gcc/testsuite/go.test/test/fixedbugs/issue28797.go
! a55706e08bccb3617e492ed78c8958de  gcc/testsuite/go.test/test/fixedbugs/issue29013a.go
! f9cae8a3ed19a509a4f0d911e5eeb09b  gcc/testsuite/go.test/test/fixedbugs/issue29013b.go
! 62884e83d2745476dfb8119dae7296a3  gcc/testsuite/go.test/test/fixedbugs/issue29190.go
! 33e37efa60628772362967575eb24ac2  gcc/testsuite/go.test/test/fixedbugs/issue29215.go
! 56bbff9a6d296ff45698640873bf2ada  gcc/testsuite/go.test/test/fixedbugs/issue29218.go
! 5bbc458ddb6f2b7897d61e0f6ee2bfe7  gcc/testsuite/go.test/test/fixedbugs/issue29220.go
! 061d420e533dd7a17715fcd6bd7e4910  gcc/testsuite/go.test/test/fixedbugs/issue29264.go
! 6bd98508dfb15da29d0ec01cf0da5d08  gcc/testsuite/go.test/test/fixedbugs/issue29304.go
! bd21a8089017481e2c1c4808132e34e4  gcc/testsuite/go.test/test/fixedbugs/issue29312.go
! a6818f3c86703366c3f43687e47d3578  gcc/testsuite/go.test/test/fixedbugs/issue29329.go
! 44d834392983e1f8ead969ef07b8150b  gcc/testsuite/go.test/test/fixedbugs/issue29350.go
! 9dd1df1454b80aa461f729727208eaf7  gcc/testsuite/go.test/test/fixedbugs/issue29362.go
! 6cea4f3c23092c0a03e0271c722238f5  gcc/testsuite/go.test/test/fixedbugs/issue29362b.go
! afc0319c8a46eb34a6e1541b562d6d17  gcc/testsuite/go.test/test/fixedbugs/issue29389.go
! 0d4719f65daac482b62ed9515fa3daf9  gcc/testsuite/go.test/test/fixedbugs/issue29402.go
! 5b9acdc26e9a669615de0e561ca700ce  gcc/testsuite/go.test/test/fixedbugs/issue29562.go
! fd6db0e3e141934b9d4bf891110e136c  gcc/testsuite/go.test/test/fixedbugs/issue29610.dir/a.go
! 213583f956008d5846bd13b6d494b2f9  gcc/testsuite/go.test/test/fixedbugs/issue29610.dir/b.go
! cf2980ef77f3cdd8b0f1953ada51a668  gcc/testsuite/go.test/test/fixedbugs/issue29610.dir/main.go
! 69a27309af8bf3cbd6ab14d9aca22103  gcc/testsuite/go.test/test/fixedbugs/issue29610.go
! 8da90ba8d0df707922cdfd40e2b9da54  gcc/testsuite/go.test/test/fixedbugs/issue29735.go
! ddba982d0932828ba1073689bacad2a7  gcc/testsuite/go.test/test/fixedbugs/issue29855.go
! 5a87a9ade09fd8c50e640f322cb97bbd  gcc/testsuite/go.test/test/fixedbugs/issue29870.go
! a713c9e62b5d4bc59ddc64925293eea3  gcc/testsuite/go.test/test/fixedbugs/issue29870b.go
! 18b48bd3a358afa2a0b324ec9485c8d7  gcc/testsuite/go.test/test/fixedbugs/issue29943.go
! ffc161f3807dc5451e36b74b682a87c4  gcc/testsuite/go.test/test/fixedbugs/issue30041.go
! b739c78243631b88723b963e8973c87e  gcc/testsuite/go.test/test/fixedbugs/issue30061.go
! c5a66203a692ab544b8792c613ea858a  gcc/testsuite/go.test/test/fixedbugs/issue30085.go
! 1725761e65b7042b2797b0947393d992  gcc/testsuite/go.test/test/fixedbugs/issue30087.go
! b15e43819649c98abe842cf360e9131b  gcc/testsuite/go.test/test/fixedbugs/issue30116.go
! 6879b2acb596fd876be03348720fc491  gcc/testsuite/go.test/test/fixedbugs/issue30116.out
! 9e57dd96ac04290c985411e06329e016  gcc/testsuite/go.test/test/fixedbugs/issue30116u.go
! d188830f88d9817ddb7369bdc0fe0739  gcc/testsuite/go.test/test/fixedbugs/issue30116u.out
! 3d3ab87eac7e0a37494b1e753a727962  gcc/testsuite/go.test/test/fixedbugs/issue30243.go
! 0098d66967bccad28e2073f12a1d148a  gcc/testsuite/go.test/test/fixedbugs/issue30430.go
! 6472a08eddbf88c72af09fc2560dccd6  gcc/testsuite/go.test/test/fixedbugs/issue30476.go
! 9beacc5fee63d334a1b60f713affa7ab  gcc/testsuite/go.test/test/fixedbugs/issue30566a.go
! c42485a49366029bdcaeef2790d2f3bd  gcc/testsuite/go.test/test/fixedbugs/issue30566b.go
! b3862dd83c6de03315531c4799141792  gcc/testsuite/go.test/test/fixedbugs/issue30606.go
! 0b0e4173a881cb69c06512f022d72a53  gcc/testsuite/go.test/test/fixedbugs/issue30606b.go
! d2aa93a971db0d9c94c887551e8c0ba2  gcc/testsuite/go.test/test/fixedbugs/issue30659.dir/a.go
! 4944800653855921905c7d328c33ab70  gcc/testsuite/go.test/test/fixedbugs/issue30659.dir/b.go
! 2324462860cce8376c188e09aee20ab9  gcc/testsuite/go.test/test/fixedbugs/issue30659.go
! 414f10076f23f85ac80f83efbe6fd266  gcc/testsuite/go.test/test/fixedbugs/issue30679.go
! 61d7f305735f83dd36bc441dfa5deb9f  gcc/testsuite/go.test/test/fixedbugs/issue30709.go
! ae8667b28c8c6eee48d6ec6ebcc2563a  gcc/testsuite/go.test/test/fixedbugs/issue30709.out
! 9741711dad9cfd6796b6d18beb315c9c  gcc/testsuite/go.test/test/fixedbugs/issue30862.dir/a.go
! 5d002b6e621b74d579bf02e64dedd516  gcc/testsuite/go.test/test/fixedbugs/issue30862.dir/b.go
! 365a157c06ebce301fd93e0d6823dd0c  gcc/testsuite/go.test/test/fixedbugs/issue30862.dir/main.go
! 0e9f557bc21edcf6626713e6f03151c4  gcc/testsuite/go.test/test/fixedbugs/issue30862.go
! f86c86868c98aa935a48b4355896a93b  gcc/testsuite/go.test/test/fixedbugs/issue30898.go
! d3624a4cff90e38e852e9fddba556a36  gcc/testsuite/go.test/test/fixedbugs/issue30907.dir/a.go
! ff5f5087d953b8de6de59ab15a988933  gcc/testsuite/go.test/test/fixedbugs/issue30907.dir/b.go
! 2324462860cce8376c188e09aee20ab9  gcc/testsuite/go.test/test/fixedbugs/issue30907.go
! d2b13665276e08b41c0407369b7d7833  gcc/testsuite/go.test/test/fixedbugs/issue30956.go
! 1bed1ec7791dcb08ce80f2ce28cdb401  gcc/testsuite/go.test/test/fixedbugs/issue30956.out
! cb681ac69b07ecb3da6bee8b5c9b4541  gcc/testsuite/go.test/test/fixedbugs/issue30977.go
! af337927f658ff2eb85603c9a73ace4c  gcc/testsuite/go.test/test/fixedbugs/issue31010.go
! 8ad61149db50b562ef14863bf68e0001  gcc/testsuite/go.test/test/fixedbugs/issue31060.go
! 3a73115f43c9cf96f83098ee4b497e21  gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/a.go
! 66665254c22d48f83fbb9cb1f7386628  gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/b.go
! 1bd0b8ba97397bcd1ede56752020998c  gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/c.go
! ad31f4d37ef222b5baf3d8c234cb28da  gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/main.go
! 2324462860cce8376c188e09aee20ab9  gcc/testsuite/go.test/test/fixedbugs/issue31252.go
! 0513694bf5f07cdfdaaa1b7177b57e31  gcc/testsuite/go.test/test/fixedbugs/issue31412a.go
! 382624a1e157063c7966a52398144315  gcc/testsuite/go.test/test/fixedbugs/issue31412b.go
! f4bca3da1f826a55809453f651f0a05a  gcc/testsuite/go.test/test/fixedbugs/issue31419.go
! 5839c57bde2953109d512d16cd398ac4  gcc/testsuite/go.test/test/fixedbugs/issue31573.go
! 7921141d82f7e2964d8e1c224d7e1007  gcc/testsuite/go.test/test/fixedbugs/issue31637.dir/a.go
! bd3330a3fb5a295001d829b29c28d8c1  gcc/testsuite/go.test/test/fixedbugs/issue31637.dir/b.go
! b943ad499ebb20fb8673d47cc528feaa  gcc/testsuite/go.test/test/fixedbugs/issue31637.go
! 70ece97ec9a17d836759d70d9701eff2  gcc/testsuite/go.test/test/fixedbugs/issue31777.go
! 645f0d8b52c32c98cadd87341dac9ee1  gcc/testsuite/go.test/test/fixedbugs/issue31782.go
! 50a2fabfdd276f573ff97ace8b11c5f4  gcc/testsuite/go.test/test/fixedbugs/issue31782.out
! 58346457906ab0528a4de6e10f883931  gcc/testsuite/go.test/test/fixedbugs/issue31987.go
! 6a88ab06fad882b37eda950229b9c1f3  gcc/testsuite/go.test/test/fixedbugs/issue32175.go
! 50a2fabfdd276f573ff97ace8b11c5f4  gcc/testsuite/go.test/test/fixedbugs/issue32175.out
! 0c1474539675f1c64bd3c11410bd5e2d  gcc/testsuite/go.test/test/fixedbugs/issue32288.go
! 51463ecd6066aee7fd409ef74206c7ae  gcc/testsuite/go.test/test/fixedbugs/issue32347.go
! ee04d643fd7eb713a7672b206c62c1cf  gcc/testsuite/go.test/test/fixedbugs/issue32454.go
! 14850ab1bf18289217459701b2f9e74e  gcc/testsuite/go.test/test/fixedbugs/issue32560.go
! 33484bbd5d9bf55ff9a425d6f2621da2  gcc/testsuite/go.test/test/fixedbugs/issue32595.dir/a.go
! 48a3b05a09e66072bb819269662ab1f0  gcc/testsuite/go.test/test/fixedbugs/issue32595.dir/b.go
! ce7e4a9c54e443341c533db82494745c  gcc/testsuite/go.test/test/fixedbugs/issue32595.dir/main.go
! e6c3b20f5ea4b807599b7c9a0669315b  gcc/testsuite/go.test/test/fixedbugs/issue32595.go
! a1bba35a66acac8628c736065fe572da  gcc/testsuite/go.test/test/fixedbugs/issue32680.go
! ecbeb2524482f089f0ec84986c92f59b  gcc/testsuite/go.test/test/fixedbugs/issue32680.out
! 661a92699e1fd0ab11daca1dfbad55a2  gcc/testsuite/go.test/test/fixedbugs/issue32680b.go
! 34bc5f425dc40bb68eba16bc0fc27020  gcc/testsuite/go.test/test/fixedbugs/issue32723.go
! 6cc0070e53aa902cea978e2777ed0a90  gcc/testsuite/go.test/test/fixedbugs/issue32778.dir/a.go
! 6997203ce6715d180c2251fab57b0e33  gcc/testsuite/go.test/test/fixedbugs/issue32778.dir/b.go
! 0451412d5679e7cc70ab3110eef73cc8  gcc/testsuite/go.test/test/fixedbugs/issue32778.go
! 0b32206b3e1d3a75fb15f96d7c60396e  gcc/testsuite/go.test/test/fixedbugs/issue32901.dir/a.go
! 7372631041f08dbd68bb08700759dff7  gcc/testsuite/go.test/test/fixedbugs/issue32901.dir/b.go
! 923cb77d420933ee724891832ea49c0e  gcc/testsuite/go.test/test/fixedbugs/issue32901.dir/c.go
! fc0116a6975dbf1358753d3afd12965e  gcc/testsuite/go.test/test/fixedbugs/issue32901.dir/main.go
! 2e67a490e01f7a8c328c1013a564c1a6  gcc/testsuite/go.test/test/fixedbugs/issue32901.go
! b012dba2571939aacac201525ffe9f21  gcc/testsuite/go.test/test/fixedbugs/issue32922.dir/a.go
! 3ef4c6b331be1131f1162adb56dac7af  gcc/testsuite/go.test/test/fixedbugs/issue32922.dir/b.go
! f444cdf8f181867f4ae1419592ca5263  gcc/testsuite/go.test/test/fixedbugs/issue32922.go
! bcb06f94790175c2f64c7c8f432a3548  gcc/testsuite/go.test/test/fixedbugs/issue32959.go
! b607de358a7aae6f638dc2bac6d5c1cf  gcc/testsuite/go.test/test/fixedbugs/issue33013.dir/a.go
! 6fd28e373aa5fe352ceb6dcd607d86a4  gcc/testsuite/go.test/test/fixedbugs/issue33013.dir/b.go
! d8fe20561d368f5e4e75190e1d5a193c  gcc/testsuite/go.test/test/fixedbugs/issue33013.dir/c.go
! 808af7072e18d60af54e12299074c7f5  gcc/testsuite/go.test/test/fixedbugs/issue33013.dir/d.go
! e7a6bc3f78fb2cf1cfd08b30057ceea4  gcc/testsuite/go.test/test/fixedbugs/issue33013.go
! 027c9bd0da532ac75e6bcc214c71eaab  gcc/testsuite/go.test/test/fixedbugs/issue33020.dir/a.go
! 4f1d3f9d6ee4e8d0506fb5737ae714f3  gcc/testsuite/go.test/test/fixedbugs/issue33020.dir/b.go
! 581c1b18e4e59b39a99f90c0f7e6bb79  gcc/testsuite/go.test/test/fixedbugs/issue33020.go
! 478c2702ab433a5b60f8f99ae1fb3a83  gcc/testsuite/go.test/test/fixedbugs/issue33020a.dir/a.go
! 7a52a082ca30d57a017bd1e1864bf4d5  gcc/testsuite/go.test/test/fixedbugs/issue33020a.dir/b.go
! a7d7c8b7baeb95443f387096696cdfef  gcc/testsuite/go.test/test/fixedbugs/issue33020a.go
! ad55e2d0971a659306dc1b496e31c92e  gcc/testsuite/go.test/test/fixedbugs/issue33062.go
! d4806514e6c620ed589c94b28da57247  gcc/testsuite/go.test/test/fixedbugs/issue33158.dir/a.go
! b119ee4d6422f0c3ce8e377475d1a100  gcc/testsuite/go.test/test/fixedbugs/issue33158.dir/b.go
! bf95390d23c3285766e632ffb68f821a  gcc/testsuite/go.test/test/fixedbugs/issue33158.go
! 257f0859738749bf5443fcf73137489b  gcc/testsuite/go.test/test/fixedbugs/issue33219.dir/a.go
! 0e832af758f153bc83f3c4b6af0f1eae  gcc/testsuite/go.test/test/fixedbugs/issue33219.dir/b.go
! 82732601adcce873e42339512a235282  gcc/testsuite/go.test/test/fixedbugs/issue33219.dir/c.go
! 62a791c9c696f39800c582d9bc409c7b  gcc/testsuite/go.test/test/fixedbugs/issue33219.go
! 81d24bd1038885d56d502ecea66fe6ba  gcc/testsuite/go.test/test/fixedbugs/issue33275.go
! ca01ecf8b45b35a431f0daa56802e2f5  gcc/testsuite/go.test/test/fixedbugs/issue33275_run.go
! f8880e65d2a5180c5708d26014c02f16  gcc/testsuite/go.test/test/fixedbugs/issue33308.go
! ddfe917d53ff13fae67d3cbc2c6a3c88  gcc/testsuite/go.test/test/fixedbugs/issue33355.go
! 5d3d31c4b7311139d7bf5ef5d73763b1  gcc/testsuite/go.test/test/fixedbugs/issue33386.go
! d3ba3c5a9930f01173a07859ebb865c2  gcc/testsuite/go.test/test/fixedbugs/issue33438.go
! f3e8326e78187ae2493b500d37f14b68  gcc/testsuite/go.test/test/fixedbugs/issue33460.go
! 3718b77aefa05ce3242c49c0b4c7e9ad  gcc/testsuite/go.test/test/fixedbugs/issue33555.go
! a22089ffe522a895314b6fe816b7a930  gcc/testsuite/go.test/test/fixedbugs/issue33724.go
! 651ffd4c2653ce497bf3139f6d5478e1  gcc/testsuite/go.test/test/fixedbugs/issue33739.dir/a.go
! aa1ff219c558a931419c5aa51a592552  gcc/testsuite/go.test/test/fixedbugs/issue33739.dir/b.go
! cb6ba6d476f383755951d1f8f75b0c52  gcc/testsuite/go.test/test/fixedbugs/issue33739.go
! 1c2eff6432cd24804b09f77b496a1e32  gcc/testsuite/go.test/test/fixedbugs/issue33866.dir/a.go
! d7153ceb527efa46a64ca088dc1177bb  gcc/testsuite/go.test/test/fixedbugs/issue33866.dir/b.go
! 787a67ca436ee66bc2c0120960d296cf  gcc/testsuite/go.test/test/fixedbugs/issue33866.go
! 408e5535704816f42b0a93206743a118  gcc/testsuite/go.test/test/fixedbugs/issue33903.go
! 5464a44f957678e091f8617fd46d59b6  gcc/testsuite/go.test/test/fixedbugs/issue34123.go
! a8b46466683d7e6cb9c5f11044de2dc3  gcc/testsuite/go.test/test/fixedbugs/issue34395.go
! a3239d8830ee80705d15f2f30c906449  gcc/testsuite/go.test/test/fixedbugs/issue34503.dir/a.go
! 9e9fd9ac4335cbb92bc8715a43a45d8d  gcc/testsuite/go.test/test/fixedbugs/issue34503.dir/b.go
! fcedf9d53808e898f98ae3a89c997d0f  gcc/testsuite/go.test/test/fixedbugs/issue34503.go
! a18770b91e9124c99d6da690ed1ab39f  gcc/testsuite/go.test/test/fixedbugs/issue34520.go
! 2e9ef42e91017d529e91e8017cf93677  gcc/testsuite/go.test/test/fixedbugs/issue34577.dir/a.go
! 0225d26a13bccb0c953f03413d21de09  gcc/testsuite/go.test/test/fixedbugs/issue34577.dir/b.go
! 1c5b159177c9b61748630793804a1de3  gcc/testsuite/go.test/test/fixedbugs/issue34577.go
! 51c195c07b89dd6db961673a18f0458e  gcc/testsuite/go.test/test/fixedbugs/issue34968.go
! 56e89c727b804ee925b85620ad144a03  gcc/testsuite/go.test/test/fixedbugs/issue35027.go
! 88e98263fccfbc62d5c185d1f89b4a01  gcc/testsuite/go.test/test/fixedbugs/issue35073.go
! 994ef977ccb174fe7bf7905e70d55525  gcc/testsuite/go.test/test/fixedbugs/issue35157.go
! 89321edb5b9525c190da50edc3b48c8d  gcc/testsuite/go.test/test/fixedbugs/issue35291.go
! 8e11349d24e2c506acc26ad3ba5da1b2  gcc/testsuite/go.test/test/fixedbugs/issue3552.dir/one.go
! 5226c3e4651ee2d978d57f5eb56f0633  gcc/testsuite/go.test/test/fixedbugs/issue3552.dir/two.go
  9611bcb1b4a7e21ada226c054bd5de39  gcc/testsuite/go.test/test/fixedbugs/issue3552.go
! 4c53ace187dc75fcf0a5939578105147  gcc/testsuite/go.test/test/fixedbugs/issue35576.go
! f0def7acc93eef28e2719dc8664d848f  gcc/testsuite/go.test/test/fixedbugs/issue35576.out
! f72dc511532fa78eef741d9cdc813d7e  gcc/testsuite/go.test/test/fixedbugs/issue35586.dir/a.go
! 482bc3e342b6e4c54115e7270dbdc0a7  gcc/testsuite/go.test/test/fixedbugs/issue35586.dir/b.go
! fe306e42b4b8f6ebde24a8c22bc5c3f0  gcc/testsuite/go.test/test/fixedbugs/issue35586.go
! 9ee86a628e09a5e1617491a47cfb2e12  gcc/testsuite/go.test/test/fixedbugs/issue35652.go
! 37ddcf2747bc23e44d9f699921abae77  gcc/testsuite/go.test/test/fixedbugs/issue35739.dir/a.go
! 1dc638adaa1ce88ac94d0fb68740b8d6  gcc/testsuite/go.test/test/fixedbugs/issue35739.dir/b.go
! c3a2577cb22ab39e67ee66b167432654  gcc/testsuite/go.test/test/fixedbugs/issue35739.go
! 05936036dc8ef9c80366b078821c5ca9  gcc/testsuite/go.test/test/fixedbugs/issue36085.dir/a.go
! 952a4e4234ae59e9be72c8e92fe360ad  gcc/testsuite/go.test/test/fixedbugs/issue36085.dir/b.go
! cc2611dbb63bc1bdc2e3a8c12714cc19  gcc/testsuite/go.test/test/fixedbugs/issue36085.go
! c9934b480c17a33ddc62a0c25954cd9d  gcc/testsuite/go.test/test/fixedbugs/issue36259.go
! 3daf94f0394b9da69aa1a5e631b9bca1  gcc/testsuite/go.test/test/fixedbugs/issue36437.go
! 7641207634c321e250e6abade803a2de  gcc/testsuite/go.test/test/fixedbugs/issue36516.go
! d6feeef6a663b13dce9f40c96ac258e0  gcc/testsuite/go.test/test/fixedbugs/issue36705.go
! c133db73563dbc7c810b2f71c7ce8154  gcc/testsuite/go.test/test/fixedbugs/issue3705.go
! 52e38af76daffe4cb5ac6ff2ee1d09c3  gcc/testsuite/go.test/test/fixedbugs/issue37246.go
! 9604f89a811c14cababe543f7739b6ed  gcc/testsuite/go.test/test/fixedbugs/issue37716.go
! c0c16569a117e49f42eab06b2190f2d2  gcc/testsuite/go.test/test/fixedbugs/issue37753.go
! 1ee83d041d3fef2bf29646222a8f31a9  gcc/testsuite/go.test/test/fixedbugs/issue3783.go
! 4658ba9aced0f274b7a6fb72fcc953e7  gcc/testsuite/go.test/test/fixedbugs/issue37975.go
! 0f316cf8daeeac827b114b6601df37aa  gcc/testsuite/go.test/test/fixedbugs/issue38093.go
! f290ec96365119191aa11d854f080d4c  gcc/testsuite/go.test/test/fixedbugs/issue38117.go
! d0b3e7ce2de413ccfea0976881e524af  gcc/testsuite/go.test/test/fixedbugs/issue38125.go
! 52f8f19a805fe367d972ef72d9cf3337  gcc/testsuite/go.test/test/fixedbugs/issue38356.go
! 97c234590d2aa90365e11235253a418b  gcc/testsuite/go.test/test/fixedbugs/issue38359.go
! 09e5c5f8d5ec4ab1a68052cb896bb916  gcc/testsuite/go.test/test/fixedbugs/issue38690.go
! 5fc4b3733439f9f177443789c9da3268  gcc/testsuite/go.test/test/fixedbugs/issue38745.go
! 99a44c63e08ebec91d22dba41f79978e  gcc/testsuite/go.test/test/fixedbugs/issue38746.go
! 3590669460e102db01494e8dce1b29dc  gcc/testsuite/go.test/test/fixedbugs/issue38905.go
! a2c23d485cb041b5c30f54f013608355  gcc/testsuite/go.test/test/fixedbugs/issue38916.go
! d02c6138eab6fcf5cad9f1753888c95f  gcc/testsuite/go.test/test/fixedbugs/issue3925.go
! 2fdc0ac17f66f12db22a1d40619cfd51  gcc/testsuite/go.test/test/fixedbugs/issue39292.go
! 10b5b4bfaadd9af1c961f478c2ee8a2f  gcc/testsuite/go.test/test/fixedbugs/issue39459.go
! f9e9e6b69b1d3de864c0676e87ef07e4  gcc/testsuite/go.test/test/fixedbugs/issue39505.go
! 1c6beb044b7fff387b6db645c7ab10f3  gcc/testsuite/go.test/test/fixedbugs/issue39505b.go
! 62d2066f7024353774a490898c8749ea  gcc/testsuite/go.test/test/fixedbugs/issue39541.go
! 9ab725287e82c55650189174f555eb93  gcc/testsuite/go.test/test/fixedbugs/issue39651.go
! 4b32b96acdc299fe5b07af59eeb7d932  gcc/testsuite/go.test/test/fixedbugs/issue40152.go
! 1a01670622ec78d4ef144c1d0012054c  gcc/testsuite/go.test/test/fixedbugs/issue40252.dir/a.go
! ac59669ca3903bff3b1abf8c05a43ee1  gcc/testsuite/go.test/test/fixedbugs/issue40252.dir/main.go
! b4fd135c5c6b223422df7a2d8cb8f123  gcc/testsuite/go.test/test/fixedbugs/issue40252.go
! 012232faf2f221df49b4708707cf7f32  gcc/testsuite/go.test/test/fixedbugs/issue40367.go
! 79dc96cacfada12db585ed3ecb1ba075  gcc/testsuite/go.test/test/fixedbugs/issue40629.go
  725129abc0a4dde1e81f2f4f08e64f6e  gcc/testsuite/go.test/test/fixedbugs/issue4066.go
! faf2394e4f2ec3275955eba85784dab3  gcc/testsuite/go.test/test/fixedbugs/issue40746.go
! 93523097d3b9758a58bbb49f88e1f464  gcc/testsuite/go.test/test/fixedbugs/issue4085a.go
! 001c87cb4bb24b139a96db3ae231df3d  gcc/testsuite/go.test/test/fixedbugs/issue4085b.go
! 7c6b63c36bc49e30f18dcdbded981e58  gcc/testsuite/go.test/test/fixedbugs/issue40917.go
! 6952c43f7d0e5d72852aa79ef71b9367  gcc/testsuite/go.test/test/fixedbugs/issue40954.go
! 319449dc6a0a65c8e3c88dd385f610d5  gcc/testsuite/go.test/test/fixedbugs/issue4097.go
! 5fbddb5d3d447f4d5324f73b13e3b86e  gcc/testsuite/go.test/test/fixedbugs/issue4099.go
! 0379e876fababbfe57ceef25055f7839  gcc/testsuite/go.test/test/fixedbugs/issue41247.go
! b16408cd787300f4bc84bcb0a32d0fef  gcc/testsuite/go.test/test/fixedbugs/issue41440.go
! 714d93252e8afff0b9ef94925a9ed3de  gcc/testsuite/go.test/test/fixedbugs/issue41500.go
! 6d5626e245fa97413c19048ac91fdf46  gcc/testsuite/go.test/test/fixedbugs/issue41575.go
! 6b59d77952beba79c7be619a6c4c5f39  gcc/testsuite/go.test/test/fixedbugs/issue4162.go
! 91f6da3124afe3bd1edfe862b19d7b71  gcc/testsuite/go.test/test/fixedbugs/issue4167.go
! c52c7c1627cec352ac0a5382cce75baa  gcc/testsuite/go.test/test/fixedbugs/issue41680.go
! 0258d7a7e9dd71ad15bc63e819787698  gcc/testsuite/go.test/test/fixedbugs/issue41736.go
! ec52ed578a2b84585b678c3d51f30452  gcc/testsuite/go.test/test/fixedbugs/issue41780.go
! 05585fd34e621c141c897abaa1df6ce7  gcc/testsuite/go.test/test/fixedbugs/issue41872.go
! 26d69468e9e2f94a7964d321fc901bef  gcc/testsuite/go.test/test/fixedbugs/issue42032.go
! 7e4eecc3e3cf7cda6e66ad87de8685d5  gcc/testsuite/go.test/test/fixedbugs/issue42058a.go
! 73c32e51c58733fe25fbb5d47ea7f0f9  gcc/testsuite/go.test/test/fixedbugs/issue42058b.go
! d93523e68a8b1f75ee978636f7aa7cff  gcc/testsuite/go.test/test/fixedbugs/issue42075.go
! ef8ffeb71b753b70cffc153b949b69ab  gcc/testsuite/go.test/test/fixedbugs/issue42076.go
! 1504afa42ffbeb035694e041d1dac2d0  gcc/testsuite/go.test/test/fixedbugs/issue4215.go
! 4dc934654ca31afea6c602584293916c  gcc/testsuite/go.test/test/fixedbugs/issue4232.go
! db3ab93eb8788687c5effbf20408da1f  gcc/testsuite/go.test/test/fixedbugs/issue4251.go
! 6d2eddfbfa37bfe25f32795adcb8a188  gcc/testsuite/go.test/test/fixedbugs/issue4252.dir/a.go
! 43f25a5b12c3eb91bedc3d846f98c9d0  gcc/testsuite/go.test/test/fixedbugs/issue4252.dir/main.go
! 0da6fae96ca0dd0569bb7f38a80f2ca6  gcc/testsuite/go.test/test/fixedbugs/issue4252.go
! 8aaec6029b97146e06033c098d5e1c15  gcc/testsuite/go.test/test/fixedbugs/issue42568.go
! 802b8aab5451264b56145da37afa2329  gcc/testsuite/go.test/test/fixedbugs/issue42587.go
  b35041ec85302e9c31e1c734d29af5e3  gcc/testsuite/go.test/test/fixedbugs/issue4264.go
! 97061a8be8002c19758f3fd3317c8b9c  gcc/testsuite/go.test/test/fixedbugs/issue42703.go
! 68808c458add60c950d269f277a0c5e4  gcc/testsuite/go.test/test/fixedbugs/issue42727.go
! 17b573c6fac981a28d93d84d9b6e918a  gcc/testsuite/go.test/test/fixedbugs/issue42784.go
! 86ef853a0243784e205d0ddd47efbf5e  gcc/testsuite/go.test/test/fixedbugs/issue42790.go
! e57809464e0698b8d08f4944536c8dad  gcc/testsuite/go.test/test/fixedbugs/issue4283.go
! ac5f3b67d3b8798936c511143e57f125  gcc/testsuite/go.test/test/fixedbugs/issue42876.go
! 4c49bee2e4d32fb6f177e74c4e4980fd  gcc/testsuite/go.test/test/fixedbugs/issue43099.go
! 3f500a12c1c35ad47f77e7c82f0f2e9d  gcc/testsuite/go.test/test/fixedbugs/issue43111.go
! b31684f4ed7b3bd40f2c4b54b7bd1955  gcc/testsuite/go.test/test/fixedbugs/issue43112.go
! ceb760b2c697437d593a7af199c869f2  gcc/testsuite/go.test/test/fixedbugs/issue4313.go
! 3e75aa593a984c570c0eede368793741  gcc/testsuite/go.test/test/fixedbugs/issue4316.go
! 7b54e6a825e4ba44af98754622496a1c  gcc/testsuite/go.test/test/fixedbugs/issue4323.go
  d20691a348ae783cc3524094317d95da  gcc/testsuite/go.test/test/fixedbugs/issue4326.dir/p1.go
  1e1a1f60cb3c8969242b8e1a227aa5d6  gcc/testsuite/go.test/test/fixedbugs/issue4326.dir/p2.go
  d2cf0a2e327e8f5956b56e662891dfcc  gcc/testsuite/go.test/test/fixedbugs/issue4326.dir/q1.go
  d4112cbacedfd2f38451d0822557d138  gcc/testsuite/go.test/test/fixedbugs/issue4326.dir/q2.go
  f3cca6da4356142dbd78b655cb6748c4  gcc/testsuite/go.test/test/fixedbugs/issue4326.dir/z.go
! 8dc60c440854b43b8344e6fb4f713a48  gcc/testsuite/go.test/test/fixedbugs/issue4326.go
! 4d28552d3145a8852c63496bcd45a57d  gcc/testsuite/go.test/test/fixedbugs/issue4348.go
! fa57db311f71eb288499f517e0288362  gcc/testsuite/go.test/test/fixedbugs/issue4353.go
! 0e83804eac822aee128f94441e75ede5  gcc/testsuite/go.test/test/fixedbugs/issue4359.go
! 8f2df5ebb88868a7ef223485f5a94f34  gcc/testsuite/go.test/test/fixedbugs/issue4365.go
! 89987795499b36171e3d5a9e9cd6f985  gcc/testsuite/go.test/test/fixedbugs/issue4370.dir/p1.go
! 98cc8159bd4ad265d38ba56f5a191601  gcc/testsuite/go.test/test/fixedbugs/issue4370.dir/p2.go
! f00a634992bb5ac7f2fb6335ccc526e7  gcc/testsuite/go.test/test/fixedbugs/issue4370.dir/p3.go
! 41c98e2d92fb09d358977404a0f6e749  gcc/testsuite/go.test/test/fixedbugs/issue4370.go
! 431d02c5bb986dc22d016ad7a4710530  gcc/testsuite/go.test/test/fixedbugs/issue4396a.go
! 6b9f0bd0926740ca7975667b6657ba6d  gcc/testsuite/go.test/test/fixedbugs/issue4396b.go
! 58fb372bd178f886867a03fa3c2e7197  gcc/testsuite/go.test/test/fixedbugs/issue4399.go
! a08dc70ddd6d7356dbc876f1bb692827  gcc/testsuite/go.test/test/fixedbugs/issue4405.go
! 077726061f8d2eb7b99f74ca09e151e2  gcc/testsuite/go.test/test/fixedbugs/issue4429.go
! 5dbc2fc7ed74c0548dc025f0f934daaf  gcc/testsuite/go.test/test/fixedbugs/issue4448.go
! 7efda91a45a93d8f45642bd6a6fd4990  gcc/testsuite/go.test/test/fixedbugs/issue4452.go
! 202b2ba583682e3dfd6ceb3fd1d424d1  gcc/testsuite/go.test/test/fixedbugs/issue4458.go
! 5c38f24784eafb9777af3f37b0b1869e  gcc/testsuite/go.test/test/fixedbugs/issue4463.go
! a6acae77ef48152ee3e4baadb04a3af8  gcc/testsuite/go.test/test/fixedbugs/issue4468.go
! 9b1bf054e84ce0760bef255b3e0c3062  gcc/testsuite/go.test/test/fixedbugs/issue4470.go
! c9baae3915cd5d21ebffd6349f403295  gcc/testsuite/go.test/test/fixedbugs/issue4495.go
  4771375066b4a9d5037f21c920b07f27  gcc/testsuite/go.test/test/fixedbugs/issue4510.dir/f1.go
  9210913d11c1772ec56034b4541645ee  gcc/testsuite/go.test/test/fixedbugs/issue4510.dir/f2.go
  7e9e10e429ad5b513ce9828bb1edef39  gcc/testsuite/go.test/test/fixedbugs/issue4510.go
! a6225a8288815ddd6b6756c96beb23ab  gcc/testsuite/go.test/test/fixedbugs/issue4517a.go
! 63b8d02c42f1421c73603f10f203034d  gcc/testsuite/go.test/test/fixedbugs/issue4517b.go
! 0aef4fb0c723032c804677cc3a9a3f37  gcc/testsuite/go.test/test/fixedbugs/issue4517c.go
! daa7bf6629855f968c7d4959500c2b92  gcc/testsuite/go.test/test/fixedbugs/issue4517d.go
! 4b94dde785e2af6e9ad5189078b3cc93  gcc/testsuite/go.test/test/fixedbugs/issue4518.go
! c3773ac2a3ba5208f4ff0f57c813c4c1  gcc/testsuite/go.test/test/fixedbugs/issue4529.go
! 10fc85e96b37a2c6936cc1ed1856cb99  gcc/testsuite/go.test/test/fixedbugs/issue4545.go
! e9908949c7e9a883a1c6bda0641bf444  gcc/testsuite/go.test/test/fixedbugs/issue4562.go
! 7aadb2bfa1a0227c577d7edf3e1df963  gcc/testsuite/go.test/test/fixedbugs/issue4585.go
! be4f317001acecfba2f662cb45954280  gcc/testsuite/go.test/test/fixedbugs/issue4590.dir/pkg1.go
! 48756da03483e0fa8364da7d60945855  gcc/testsuite/go.test/test/fixedbugs/issue4590.dir/pkg2.go
! 64beef1acd0d1fb0f936f275a23216bd  gcc/testsuite/go.test/test/fixedbugs/issue4590.dir/prog.go
  d7342458e14fed304bcf771d24307210  gcc/testsuite/go.test/test/fixedbugs/issue4590.go
  23ea4ed9f7cd20aa8d706062ebffa829  gcc/testsuite/go.test/test/fixedbugs/issue4610.go
! fde662cda7fcbc0529b8198eef4cbd1f  gcc/testsuite/go.test/test/fixedbugs/issue4614.go
! bf0583b50c3f9d6f1c2cf605c5e6bed8  gcc/testsuite/go.test/test/fixedbugs/issue4618.go
! 6664fa0ce6aba232983e250276b7a0fd  gcc/testsuite/go.test/test/fixedbugs/issue4620.go
! 138030fda87ddf1966d2285c0b9f12ba  gcc/testsuite/go.test/test/fixedbugs/issue4654.go
! ab89a99885e92d474b2f83ee036eb52c  gcc/testsuite/go.test/test/fixedbugs/issue4663.go
! 0b472cbe0dd4e3b72f2ff916acbd2980  gcc/testsuite/go.test/test/fixedbugs/issue4667.go
! 0ac70db712f36f3bf687ad037ef627c2  gcc/testsuite/go.test/test/fixedbugs/issue4734.go
! c7f50dc356fbe6b142d986f39d2005e7  gcc/testsuite/go.test/test/fixedbugs/issue4748.go
! d79a8946b45b1670e23d22bfbd950550  gcc/testsuite/go.test/test/fixedbugs/issue4752.go
! 48870a7492ea9864ac58d81c8c7ff4ec  gcc/testsuite/go.test/test/fixedbugs/issue4776.go
! a6007c8e3df5dc1851cf6061646e7e7d  gcc/testsuite/go.test/test/fixedbugs/issue4785.go
  c876116f9cd315ae8979856bd0d9a378  gcc/testsuite/go.test/test/fixedbugs/issue4813.go
  6fa56864432ab53d573561e0e6deeb14  gcc/testsuite/go.test/test/fixedbugs/issue4847.go
  8ab760f1fba941f998565fdc8ded577e  gcc/testsuite/go.test/test/fixedbugs/issue4879.dir/a.go
  9a1f006e4ed22ce726242afee922f512  gcc/testsuite/go.test/test/fixedbugs/issue4879.dir/b.go
  e70dd01eb5a68864933a47da669ca4b7  gcc/testsuite/go.test/test/fixedbugs/issue4879.go
! 6b001674bb16aeb67aff462506ca1633  gcc/testsuite/go.test/test/fixedbugs/issue4909a.go
  5c716f0da05807304038e733b4d61fe6  gcc/testsuite/go.test/test/fixedbugs/issue4909b.go
  81ee664524279b3050a8bc39a84a56c8  gcc/testsuite/go.test/test/fixedbugs/issue4932.dir/foo.go
  a4f59f673c130a3fd4657d0827985a64  gcc/testsuite/go.test/test/fixedbugs/issue4932.dir/state.go
  83c8911fcc8579758270fc3d3f69a7e8  gcc/testsuite/go.test/test/fixedbugs/issue4932.dir/state2.go
  e8d166a01ce8943f0d29f2a3783bfa97  gcc/testsuite/go.test/test/fixedbugs/issue4932.go
! d5d2e8712cf99a1d6d254a58ba49e249  gcc/testsuite/go.test/test/fixedbugs/issue4964.dir/a.go
  94fe48bbcbcf8221a9a9f3df16ff92c9  gcc/testsuite/go.test/test/fixedbugs/issue4964.dir/b.go
  c067aafb2a653f18ae997cadd0768200  gcc/testsuite/go.test/test/fixedbugs/issue4964.go
! ddee1c357a62926614d9ee419bd636a8  gcc/testsuite/go.test/test/fixedbugs/issue5002.go
! 3289c0814f3ad2fa0834a177c6a3dfd1  gcc/testsuite/go.test/test/fixedbugs/issue5056.go
  0e9ce31859706eb8fac06ce4f8564e76  gcc/testsuite/go.test/test/fixedbugs/issue5089.go
  60403dc5f2e124ee1e2c266ef0b6f99b  gcc/testsuite/go.test/test/fixedbugs/issue5105.dir/a.go
  07cbbcb0ee407ac78daa1e0946f833a0  gcc/testsuite/go.test/test/fixedbugs/issue5105.dir/b.go
*************** a7abff1e549cc9238a748cb35e68f0d1  gcc/te
*** 77762,77769 ****
  be13d8b48d305df12fcc28402ab3ac37  gcc/testsuite/go.test/test/fixedbugs/issue5125.dir/main.go
  b78ab8b09711f84c13a52ad1451790b1  gcc/testsuite/go.test/test/fixedbugs/issue5125.go
  3915b73248bd557961776143ff5751d4  gcc/testsuite/go.test/test/fixedbugs/issue5162.go
! f3628720a5b90be6cf2587ad6e359a02  gcc/testsuite/go.test/test/fixedbugs/issue5172.go
! 609c0e7683d040c5831ebefc109f8801  gcc/testsuite/go.test/test/fixedbugs/issue5231.go
  adfefbd41334ab1242978407ee28d43c  gcc/testsuite/go.test/test/fixedbugs/issue5244.go
  4037608c9e5909b693a4bda8df84d665  gcc/testsuite/go.test/test/fixedbugs/issue5259.dir/bug.go
  40840f298c7d1a07b4a21fe434853cfb  gcc/testsuite/go.test/test/fixedbugs/issue5259.dir/main.go
--- 83522,83529 ----
  be13d8b48d305df12fcc28402ab3ac37  gcc/testsuite/go.test/test/fixedbugs/issue5125.dir/main.go
  b78ab8b09711f84c13a52ad1451790b1  gcc/testsuite/go.test/test/fixedbugs/issue5125.go
  3915b73248bd557961776143ff5751d4  gcc/testsuite/go.test/test/fixedbugs/issue5162.go
! 9e367813444714537c478d9ff3bf61b5  gcc/testsuite/go.test/test/fixedbugs/issue5172.go
! f6aa4f029cd06ab863c5e747bfa1a527  gcc/testsuite/go.test/test/fixedbugs/issue5231.go
  adfefbd41334ab1242978407ee28d43c  gcc/testsuite/go.test/test/fixedbugs/issue5244.go
  4037608c9e5909b693a4bda8df84d665  gcc/testsuite/go.test/test/fixedbugs/issue5259.dir/bug.go
  40840f298c7d1a07b4a21fe434853cfb  gcc/testsuite/go.test/test/fixedbugs/issue5259.dir/main.go
*************** d7184e5bb03d0644f55a7aa3fd08439c  gcc/te
*** 77774,77802 ****
  d0ca8958b6374b47c26ed5e0aabbd7b4  gcc/testsuite/go.test/test/fixedbugs/issue5291.dir/pkg1.go
  66483e99d31cdf22a36bac095b0c6901  gcc/testsuite/go.test/test/fixedbugs/issue5291.dir/prog.go
  1eba168e6ccafd54a05115d7cc9daf50  gcc/testsuite/go.test/test/fixedbugs/issue5291.go
! 3262ee969c4af3dadb48e6ff4e7a1b8c  gcc/testsuite/go.test/test/fixedbugs/issue5358.go
  9b00b25df03c518e5cff2b4f0073432f  gcc/testsuite/go.test/test/fixedbugs/issue5470.dir/a.go
  527df4b4d863e1dfbb91f4f6be85c985  gcc/testsuite/go.test/test/fixedbugs/issue5470.dir/b.go
  fc5c9abe0354fd5a0682739cd71e1667  gcc/testsuite/go.test/test/fixedbugs/issue5470.go
  1fafcf0a18cccca1d5499e2a2a29bcc9  gcc/testsuite/go.test/test/fixedbugs/issue5493.go
  ca7c80dfcf7332961b4817042f89fe84  gcc/testsuite/go.test/test/fixedbugs/issue5515.go
! beff4e05117cb75a9c3613df7a38c70a  gcc/testsuite/go.test/test/fixedbugs/issue5581.go
  9894fe09b349f03c809427cd42d26981  gcc/testsuite/go.test/test/fixedbugs/issue5607.go
  b0535bdb5dca3f19a46ecdbd0787352e  gcc/testsuite/go.test/test/fixedbugs/issue5609.go
  7d8dd755be004c5b6365df6db3ceb441  gcc/testsuite/go.test/test/fixedbugs/issue5614.dir/rethinkgo.go
  3394391811c8e1ad345d5d10ab7e853d  gcc/testsuite/go.test/test/fixedbugs/issue5614.dir/x.go
  4507b777f68e6c38f5c776cb0ffccaa8  gcc/testsuite/go.test/test/fixedbugs/issue5614.dir/y.go
  a2db02b167397e118bc2caba8e297fcc  gcc/testsuite/go.test/test/fixedbugs/issue5614.go
! ecbacf10bba30612474ad0e0d60fe270  gcc/testsuite/go.test/test/fixedbugs/issue5698.go
! 5e9483f02e4e763500ee867a7642e183  gcc/testsuite/go.test/test/fixedbugs/issue5704.go
  8f55b649233fa5b85d43d8ba1461125b  gcc/testsuite/go.test/test/fixedbugs/issue5753.go
  6cadaecec6bf3b20a92f68c929435ff5  gcc/testsuite/go.test/test/fixedbugs/issue5755.dir/a.go
  0e45e3233142b19ca2a6514f9cd6e260  gcc/testsuite/go.test/test/fixedbugs/issue5755.dir/main.go
  cf9aae2cf99d0068009c6c81d75ede28  gcc/testsuite/go.test/test/fixedbugs/issue5755.go
! f722ae95e232fef573fada7391ffb59b  gcc/testsuite/go.test/test/fixedbugs/issue5809.go
! 3536699df8bfb6f546824002e442029a  gcc/testsuite/go.test/test/fixedbugs/issue5820.go
! 8bc502372331c41841275b8108a6643b  gcc/testsuite/go.test/test/fixedbugs/issue5841.go
! 3be4d6303dbfca88d1e38ebba7634fbd  gcc/testsuite/go.test/test/fixedbugs/issue5856.go
  2bc60e096c980efedb843685e43c61e0  gcc/testsuite/go.test/test/fixedbugs/issue5910.dir/a.go
  93806db8db98be1a08c308b0f02c6148  gcc/testsuite/go.test/test/fixedbugs/issue5910.dir/main.go
  fc3bad49ba9ecb23c0c32d483ed1c520  gcc/testsuite/go.test/test/fixedbugs/issue5910.go
--- 83534,83564 ----
  d0ca8958b6374b47c26ed5e0aabbd7b4  gcc/testsuite/go.test/test/fixedbugs/issue5291.dir/pkg1.go
  66483e99d31cdf22a36bac095b0c6901  gcc/testsuite/go.test/test/fixedbugs/issue5291.dir/prog.go
  1eba168e6ccafd54a05115d7cc9daf50  gcc/testsuite/go.test/test/fixedbugs/issue5291.go
! 45b25ee62aeedd12ccec1e2eaf744c5a  gcc/testsuite/go.test/test/fixedbugs/issue5358.go
! 7f461ab93cb42ea8743ba1c922b0217f  gcc/testsuite/go.test/test/fixedbugs/issue5373.go
  9b00b25df03c518e5cff2b4f0073432f  gcc/testsuite/go.test/test/fixedbugs/issue5470.dir/a.go
  527df4b4d863e1dfbb91f4f6be85c985  gcc/testsuite/go.test/test/fixedbugs/issue5470.dir/b.go
  fc5c9abe0354fd5a0682739cd71e1667  gcc/testsuite/go.test/test/fixedbugs/issue5470.go
  1fafcf0a18cccca1d5499e2a2a29bcc9  gcc/testsuite/go.test/test/fixedbugs/issue5493.go
  ca7c80dfcf7332961b4817042f89fe84  gcc/testsuite/go.test/test/fixedbugs/issue5515.go
! 0c637c9eec60e9dded81b38f29b35c56  gcc/testsuite/go.test/test/fixedbugs/issue5581.go
  9894fe09b349f03c809427cd42d26981  gcc/testsuite/go.test/test/fixedbugs/issue5607.go
  b0535bdb5dca3f19a46ecdbd0787352e  gcc/testsuite/go.test/test/fixedbugs/issue5609.go
  7d8dd755be004c5b6365df6db3ceb441  gcc/testsuite/go.test/test/fixedbugs/issue5614.dir/rethinkgo.go
  3394391811c8e1ad345d5d10ab7e853d  gcc/testsuite/go.test/test/fixedbugs/issue5614.dir/x.go
  4507b777f68e6c38f5c776cb0ffccaa8  gcc/testsuite/go.test/test/fixedbugs/issue5614.dir/y.go
  a2db02b167397e118bc2caba8e297fcc  gcc/testsuite/go.test/test/fixedbugs/issue5614.go
! b2ec6d7d22f915e5e934ab8aebe806dd  gcc/testsuite/go.test/test/fixedbugs/issue5698.go
! a4cd4b7e81457b47b248abf84b395912  gcc/testsuite/go.test/test/fixedbugs/issue5704.go
  8f55b649233fa5b85d43d8ba1461125b  gcc/testsuite/go.test/test/fixedbugs/issue5753.go
  6cadaecec6bf3b20a92f68c929435ff5  gcc/testsuite/go.test/test/fixedbugs/issue5755.dir/a.go
  0e45e3233142b19ca2a6514f9cd6e260  gcc/testsuite/go.test/test/fixedbugs/issue5755.dir/main.go
  cf9aae2cf99d0068009c6c81d75ede28  gcc/testsuite/go.test/test/fixedbugs/issue5755.go
! bc69bbbd0b20b8cc8beebf81913f9ea8  gcc/testsuite/go.test/test/fixedbugs/issue5793.go
! 056db40d6422c17f576cf4362abded99  gcc/testsuite/go.test/test/fixedbugs/issue5809.go
! 984b0593755a29cb2aadd0440ffbc25f  gcc/testsuite/go.test/test/fixedbugs/issue5820.go
! 3ffa1ee8da3c1f87d9569e81b4118d64  gcc/testsuite/go.test/test/fixedbugs/issue5841.go
! e61d421baba4c6128f9f5280442128b8  gcc/testsuite/go.test/test/fixedbugs/issue5856.go
  2bc60e096c980efedb843685e43c61e0  gcc/testsuite/go.test/test/fixedbugs/issue5910.dir/a.go
  93806db8db98be1a08c308b0f02c6148  gcc/testsuite/go.test/test/fixedbugs/issue5910.dir/main.go
  fc3bad49ba9ecb23c0c32d483ed1c520  gcc/testsuite/go.test/test/fixedbugs/issue5910.go
*************** c1265697f366622351d38bb9c0b563c8  gcc/te
*** 77804,77829 ****
  4dd6c3ddaad639b248015a7629a8714a  gcc/testsuite/go.test/test/fixedbugs/issue5957.dir/b.go
  b5570040d7cfa4316c32203e17fa52d4  gcc/testsuite/go.test/test/fixedbugs/issue5957.dir/c.go
  061504f5d68236e0b81988c20c3d6ded  gcc/testsuite/go.test/test/fixedbugs/issue5957.go
! 323310ecdf4590e6eb8c3edd6ad674ec  gcc/testsuite/go.test/test/fixedbugs/issue5963.go
! 4e600c34fbff70743444f6280f8c7a5d  gcc/testsuite/go.test/test/fixedbugs/issue6004.go
! adb6620f3f25e61700062b5f23a5f176  gcc/testsuite/go.test/test/fixedbugs/issue6036.go
! 03e4a503604601482dcc65648ea8a2a3  gcc/testsuite/go.test/test/fixedbugs/issue6055.go
! faa5bb1a8f96eb2dfa5a0e0e21387d9b  gcc/testsuite/go.test/test/fixedbugs/issue6131.go
! face9f7393a09d89816c1a5c7ff2857b  gcc/testsuite/go.test/test/fixedbugs/issue6140.go
! 8a3040c676f936a703d3c7bd632009d3  gcc/testsuite/go.test/test/fixedbugs/issue6247.go
! 1f049e9b3ca86bb478c2d1f78fc009c6  gcc/testsuite/go.test/test/fixedbugs/issue6269.go
! a67b108b8b869dec7f9c0e20659603bf  gcc/testsuite/go.test/test/fixedbugs/issue6298.go
  0a6b2a8ff20afdd49125f201bf7294a3  gcc/testsuite/go.test/test/fixedbugs/issue6399.go
! ab2e159341936df6b3305920f36552be  gcc/testsuite/go.test/test/fixedbugs/issue6513.dir/a.go
! 704c93ec9efe6961d0831f9c62577506  gcc/testsuite/go.test/test/fixedbugs/issue6513.dir/b.go
! beb67fa2bc0bc31b89c6b477eab69e55  gcc/testsuite/go.test/test/fixedbugs/issue6513.dir/main.go
  15eafc6a3657197647bd0422216acedf  gcc/testsuite/go.test/test/fixedbugs/issue6513.go
  0187d8d39d908ca0c51daeb11aed5d24  gcc/testsuite/go.test/test/fixedbugs/issue6789.dir/a.go
  c00cbfb9e59b36a35a459903c2ecc3d7  gcc/testsuite/go.test/test/fixedbugs/issue6789.dir/b.go
  123a0138fdc28ab8b8d7957bf16aa79b  gcc/testsuite/go.test/test/fixedbugs/issue6789.go
! cec9cd398fdc99ebf8d2587a3b573ff2  gcc/testsuite/go.test/test/fixedbugs/issue6899.go
  337f8d039f2c5f828a99d695e2833f7b  gcc/testsuite/go.test/test/fixedbugs/issue6899.out
! f5aa56704a35de2f254d24bb4d56d233  gcc/testsuite/go.test/test/fixedbugs/issue887.go
  f5fded7281762a9fe179bce9a9f77056  gcc/testsuite/go.test/test/float_lit.go
  0963a2b3b2cf3c7b9e7abf209c4f4bae  gcc/testsuite/go.test/test/floatcmp.go
  ce054d38b44abb8fc91ca7438c1db2b6  gcc/testsuite/go.test/test/for.go
--- 83566,83740 ----
  4dd6c3ddaad639b248015a7629a8714a  gcc/testsuite/go.test/test/fixedbugs/issue5957.dir/b.go
  b5570040d7cfa4316c32203e17fa52d4  gcc/testsuite/go.test/test/fixedbugs/issue5957.dir/c.go
  061504f5d68236e0b81988c20c3d6ded  gcc/testsuite/go.test/test/fixedbugs/issue5957.go
! 4d8b73ba4d2ec4b0d8f099d1921d5d0a  gcc/testsuite/go.test/test/fixedbugs/issue5963.go
! 44a4129d2f2846ec9a72e9dadb096890  gcc/testsuite/go.test/test/fixedbugs/issue6004.go
! 9fe1a99ccf87ac6e3c5d02a01844231f  gcc/testsuite/go.test/test/fixedbugs/issue6036.go
! c749a63e0dc10162062bd9e62f3ac3dd  gcc/testsuite/go.test/test/fixedbugs/issue6055.go
! 40e88eab25d9d44c77bd86e5ae9ed75a  gcc/testsuite/go.test/test/fixedbugs/issue6131.go
! da9dcdf37ce78a6dbe3a54d3bbc84e8c  gcc/testsuite/go.test/test/fixedbugs/issue6140.go
! 224414b2e7b85394d9ab46cd3c9ca450  gcc/testsuite/go.test/test/fixedbugs/issue6247.go
! be40d493a32f80b7fd35b517069b509d  gcc/testsuite/go.test/test/fixedbugs/issue6269.go
! 8ae01817b8915748b698a590f8ff3dc8  gcc/testsuite/go.test/test/fixedbugs/issue6295.dir/p0.go
! b15254ee8cfb2a502c33cb7dee1d25ea  gcc/testsuite/go.test/test/fixedbugs/issue6295.dir/p1.go
! 7056e8a9d796ae95670d2884720016c9  gcc/testsuite/go.test/test/fixedbugs/issue6295.dir/p2.go
! 7e5c5dc80c850b4783f02f24b1b56305  gcc/testsuite/go.test/test/fixedbugs/issue6295.go
! e41adbf1359ecee93372c98e4935caa5  gcc/testsuite/go.test/test/fixedbugs/issue6298.go
  0a6b2a8ff20afdd49125f201bf7294a3  gcc/testsuite/go.test/test/fixedbugs/issue6399.go
! 64d760b3a13fc38ba9aad8bc63888154  gcc/testsuite/go.test/test/fixedbugs/issue6402.go
! ce6a4975a6690ace6b0499297ae6f131  gcc/testsuite/go.test/test/fixedbugs/issue6403.go
! dd05125881861377bb71ca7dc3cee30d  gcc/testsuite/go.test/test/fixedbugs/issue6406.go
! a98adde94e5882b692e35fbdbf10d587  gcc/testsuite/go.test/test/fixedbugs/issue6513.dir/a.go
! 188c5b7d71b53aba827f1377992cf3ce  gcc/testsuite/go.test/test/fixedbugs/issue6513.dir/b.go
! 99c331280f052a4a6e38c0120ef24c52  gcc/testsuite/go.test/test/fixedbugs/issue6513.dir/main.go
  15eafc6a3657197647bd0422216acedf  gcc/testsuite/go.test/test/fixedbugs/issue6513.go
+ 541235d465c33b3cbdff856a1346dfaf  gcc/testsuite/go.test/test/fixedbugs/issue6703a.go
+ 9c0c5974103fd54e04d5fbc844e1c0f8  gcc/testsuite/go.test/test/fixedbugs/issue6703b.go
+ 5155df4d1b854c6fa52586f8b08da51c  gcc/testsuite/go.test/test/fixedbugs/issue6703c.go
+ 09391c0ec84a652756c778fef844b172  gcc/testsuite/go.test/test/fixedbugs/issue6703d.go
+ b32411946860b516769530a4a88ba54f  gcc/testsuite/go.test/test/fixedbugs/issue6703e.go
+ fda4f5861a58fb56a36a2ccca05bd6ed  gcc/testsuite/go.test/test/fixedbugs/issue6703f.go
+ 981c02727b7453832f8fd45a4b049dd2  gcc/testsuite/go.test/test/fixedbugs/issue6703g.go
+ c88625667b5809616c72ee63f03c7ed2  gcc/testsuite/go.test/test/fixedbugs/issue6703h.go
+ 7f588a346445218e695f5ba7d9166c5c  gcc/testsuite/go.test/test/fixedbugs/issue6703i.go
+ ae73fcadc5cb012095544989372af42f  gcc/testsuite/go.test/test/fixedbugs/issue6703j.go
+ 017f4c862aa29fcfb7a6959ef6d958bb  gcc/testsuite/go.test/test/fixedbugs/issue6703k.go
+ 2a3d5ae76091fd7b15174f7d151af3cd  gcc/testsuite/go.test/test/fixedbugs/issue6703l.go
+ aa94fd55e8ff752e60ed216a5e341d63  gcc/testsuite/go.test/test/fixedbugs/issue6703m.go
+ dd4cfe2797a085b2467be5a8b7ec5494  gcc/testsuite/go.test/test/fixedbugs/issue6703n.go
+ 8a9768b008b4d8e1c26fac116fdccd6f  gcc/testsuite/go.test/test/fixedbugs/issue6703o.go
+ 9ef3a63309e83e8b501631d994565ed7  gcc/testsuite/go.test/test/fixedbugs/issue6703p.go
+ 378107fdcb9c28822aa8b7c4b6f772bc  gcc/testsuite/go.test/test/fixedbugs/issue6703q.go
+ 228ce1914351089f2b91f653cb09eb7e  gcc/testsuite/go.test/test/fixedbugs/issue6703r.go
+ d8d072dc9b545c0f977aa7c29f32ca32  gcc/testsuite/go.test/test/fixedbugs/issue6703s.go
+ 47a2fbd7039b7983c84354fabf26f3c6  gcc/testsuite/go.test/test/fixedbugs/issue6703t.go
+ b9da4d025e446be5dfa8bb81ee09fd74  gcc/testsuite/go.test/test/fixedbugs/issue6703u.go
+ b61be8c08660826196b5700307a1a1c4  gcc/testsuite/go.test/test/fixedbugs/issue6703v.go
+ b84eddbc8e846ad7c4105363cbd4058b  gcc/testsuite/go.test/test/fixedbugs/issue6703w.go
+ 3f6d30eb3767cfea081cbbe061dd3d82  gcc/testsuite/go.test/test/fixedbugs/issue6703x.go
+ 675cab9ec4b88198ba1afc18f1e98029  gcc/testsuite/go.test/test/fixedbugs/issue6703y.go
+ c8745d2a9595fe6324b8fa70b4235e22  gcc/testsuite/go.test/test/fixedbugs/issue6703z.go
+ e1a6ed95b94315f97dcf3422c790748a  gcc/testsuite/go.test/test/fixedbugs/issue6772.go
  0187d8d39d908ca0c51daeb11aed5d24  gcc/testsuite/go.test/test/fixedbugs/issue6789.dir/a.go
  c00cbfb9e59b36a35a459903c2ecc3d7  gcc/testsuite/go.test/test/fixedbugs/issue6789.dir/b.go
  123a0138fdc28ab8b8d7957bf16aa79b  gcc/testsuite/go.test/test/fixedbugs/issue6789.go
! 96966af8bb4753dd20247695c17872da  gcc/testsuite/go.test/test/fixedbugs/issue6847.go
! 2ac36765ef9b522325746b645aa764f5  gcc/testsuite/go.test/test/fixedbugs/issue6866.go
! a0131ba43be65a7f27a4c07fb2297141  gcc/testsuite/go.test/test/fixedbugs/issue6889.go
! b046d352d60c4cfd94f3f1ca07cb0967  gcc/testsuite/go.test/test/fixedbugs/issue6899.go
  337f8d039f2c5f828a99d695e2833f7b  gcc/testsuite/go.test/test/fixedbugs/issue6899.out
! a28fbd46cf51957494b099a7d9a0dd76  gcc/testsuite/go.test/test/fixedbugs/issue6902.go
! 13b34f8ea0c5314893509d2612d728de  gcc/testsuite/go.test/test/fixedbugs/issue6964.go
! 05c981fd0a1aa34d29dc27fa294000c2  gcc/testsuite/go.test/test/fixedbugs/issue6977.go
! a89e17d16d9a0129a8f5125408731a40  gcc/testsuite/go.test/test/fixedbugs/issue7023.dir/a.go
! 6148e7ce708064f50ce826b319a13bbb  gcc/testsuite/go.test/test/fixedbugs/issue7023.dir/b.go
! 246ecb862bda6132584a3a8bc0ad7833  gcc/testsuite/go.test/test/fixedbugs/issue7023.go
! fde59f7b09d05c1b2983a94584663293  gcc/testsuite/go.test/test/fixedbugs/issue7044.go
! 6328a87b0d0d9a3ba2f38b0bd887ccb4  gcc/testsuite/go.test/test/fixedbugs/issue7050.go
! 9a9f072de94c97d158b59f8495470685  gcc/testsuite/go.test/test/fixedbugs/issue7083.go
! 00d7d9e5e4b0fc7aeb401f2494ec5e8f  gcc/testsuite/go.test/test/fixedbugs/issue7129.go
! edc8bf329da692b430f90b093fd28a02  gcc/testsuite/go.test/test/fixedbugs/issue7150.go
! 613c20ac94fce502de4b4bba233f36e8  gcc/testsuite/go.test/test/fixedbugs/issue7153.go
! 02f953cb580cfb6123f5ee34e30b96f0  gcc/testsuite/go.test/test/fixedbugs/issue7223.go
! bf1c5e0534dd25b04b3a42613362384d  gcc/testsuite/go.test/test/fixedbugs/issue7272.go
! 56e9f399a572fb4d3e252e8445338e60  gcc/testsuite/go.test/test/fixedbugs/issue7310.go
! 0de37a138770e556bcfc5acda33ca190  gcc/testsuite/go.test/test/fixedbugs/issue7316.go
! c9795837e6a2bcc5b291058a94259dbc  gcc/testsuite/go.test/test/fixedbugs/issue7346.go
! 0c681fe6c30d64410a7cf38a372c35d2  gcc/testsuite/go.test/test/fixedbugs/issue7366.go
! 91cc4a4a11bdbb3849da00c440cb0c7c  gcc/testsuite/go.test/test/fixedbugs/issue7405.go
! 9c239f998e2c74d9733e12101a636580  gcc/testsuite/go.test/test/fixedbugs/issue7419.go
! 6bc94c824d5dec5e2d3b745d94cce795  gcc/testsuite/go.test/test/fixedbugs/issue7538a.go
! 08699d0b16911ef65415b51f93b7b33d  gcc/testsuite/go.test/test/fixedbugs/issue7538b.go
! b2299ca470b07ab4aa5199c20a09bf8a  gcc/testsuite/go.test/test/fixedbugs/issue7547.go
! 64d6d82b6bf3ed793465d8208514e1b3  gcc/testsuite/go.test/test/fixedbugs/issue7550.go
! b53fd57d7c09f8a972abec13a68bd1e3  gcc/testsuite/go.test/test/fixedbugs/issue7590.go
! e53f5104833aa05a41740e54b3039822  gcc/testsuite/go.test/test/fixedbugs/issue7648.dir/a.go
! 4510abb1cca7686bc750f6afc7225f22  gcc/testsuite/go.test/test/fixedbugs/issue7648.dir/b.go
! 1fa765106e26f715476c470aa6e6db6d  gcc/testsuite/go.test/test/fixedbugs/issue7648.go
! 3193e7496e391caadf1c7eafcd9efd64  gcc/testsuite/go.test/test/fixedbugs/issue7740.go
! 1df097e16000ac9d07ab6896e49df0e9  gcc/testsuite/go.test/test/fixedbugs/issue7742.go
! 98155bdcc8bb6c9ef2c3850228da38f7  gcc/testsuite/go.test/test/fixedbugs/issue7746.go
! f778837c753b3077945c32b759d1da78  gcc/testsuite/go.test/test/fixedbugs/issue7760.go
! 081e444ee865ca3892e1b15c56972a28  gcc/testsuite/go.test/test/fixedbugs/issue7794.go
! 3f62ce2196e5c5d426ed5b7d91500910  gcc/testsuite/go.test/test/fixedbugs/issue7863.go
! 408ff552a93c76062a11080b56a4c1fc  gcc/testsuite/go.test/test/fixedbugs/issue7867.go
! 8f38263ea87770afb4c389423dd15325  gcc/testsuite/go.test/test/fixedbugs/issue7884.go
! 86877fe9e5b9e5eda6ad9bfa826c4b0e  gcc/testsuite/go.test/test/fixedbugs/issue7921.go
! ea6c25ff04e23324a5ccaaa99c6a28ad  gcc/testsuite/go.test/test/fixedbugs/issue7944.go
! 11645dc8b9c9065047124540a6cbce16  gcc/testsuite/go.test/test/fixedbugs/issue7995.go
! d1c5d9ee9faf7f0eb798c9dc88398ab7  gcc/testsuite/go.test/test/fixedbugs/issue7995b.dir/x1.go
! d581667b17b2edf30585d85bdd9fa72b  gcc/testsuite/go.test/test/fixedbugs/issue7995b.dir/x2.go
! fe9925db90f29c84ab2972dab0c301cf  gcc/testsuite/go.test/test/fixedbugs/issue7995b.go
! 3a2958130a3a28dd8512bdbd34b0feaf  gcc/testsuite/go.test/test/fixedbugs/issue7996.go
! b962799701c3d2bc3398c718cac89600  gcc/testsuite/go.test/test/fixedbugs/issue7997.go
! 64d1d08d0be6d82bbc32dcaa459ac907  gcc/testsuite/go.test/test/fixedbugs/issue7998.go
! fe20d513666b39e371ad609f3146f687  gcc/testsuite/go.test/test/fixedbugs/issue8004.go
! 6fccea7b35b297b6b1e53b6ba46eb824  gcc/testsuite/go.test/test/fixedbugs/issue8011.go
! 465dd94a5b94d4295fd1f459e39a49b5  gcc/testsuite/go.test/test/fixedbugs/issue8017.go
! 943e9c731cf7d71ac48cd4c85e328e12  gcc/testsuite/go.test/test/fixedbugs/issue8028.go
! 251a86fab3284277fa65d414e8db5f14  gcc/testsuite/go.test/test/fixedbugs/issue8036.go
! c8078f87d143a415bb6a610efe4b6045  gcc/testsuite/go.test/test/fixedbugs/issue8039.go
! f3a3587b0174de6813e413354239e2fd  gcc/testsuite/go.test/test/fixedbugs/issue8042.go
! 89afe49f3669f292be351c5d38136b15  gcc/testsuite/go.test/test/fixedbugs/issue8047.go
! faaa495d671aa9e95a5fa9c00ea00561  gcc/testsuite/go.test/test/fixedbugs/issue8047b.go
! 5c48fcd5c46ff3bd8ae96d41bd8e0763  gcc/testsuite/go.test/test/fixedbugs/issue8048.go
! 3faa7a3e5797b9f0adeefa46b6cbd9f1  gcc/testsuite/go.test/test/fixedbugs/issue8060.dir/a.go
! 919400713e074847f94e42d5def3948b  gcc/testsuite/go.test/test/fixedbugs/issue8060.dir/b.go
! f92cb73746a3f1fb093c374688ab6aad  gcc/testsuite/go.test/test/fixedbugs/issue8060.go
! 867451fe1e8155783a39e00dc95d7495  gcc/testsuite/go.test/test/fixedbugs/issue8073.go
! 29f1d567003d58fa8db8a3f20c36277f  gcc/testsuite/go.test/test/fixedbugs/issue8074.go
! 8fa9e5f6654dbd394e6d086791365e8c  gcc/testsuite/go.test/test/fixedbugs/issue8076.go
! 202bf643046ae287956d50df8da6142b  gcc/testsuite/go.test/test/fixedbugs/issue8079.go
! 4072125ce6082f0796d0f9fa83e9a5f7  gcc/testsuite/go.test/test/fixedbugs/issue8132.go
! c07fd2a20e602142f7abd9c5aaba6b87  gcc/testsuite/go.test/test/fixedbugs/issue8139.go
! a23f9795a8961052a327a5866cda2705  gcc/testsuite/go.test/test/fixedbugs/issue8154.go
! 73f24a3a62e08f17ed8a03beccad0b81  gcc/testsuite/go.test/test/fixedbugs/issue8155.go
! aaafd0c85d86ba8de580182d9a583945  gcc/testsuite/go.test/test/fixedbugs/issue8158.go
! 80b7e1ff6673d3cff7c7c656bdf5fac0  gcc/testsuite/go.test/test/fixedbugs/issue8183.go
! 58c9ae06786d660a41d8fdbf3499ef22  gcc/testsuite/go.test/test/fixedbugs/issue8280.dir/a.go
! 7e32bf304b1e0a8d8196791bfb6736c5  gcc/testsuite/go.test/test/fixedbugs/issue8280.dir/b.go
! 1d7fb75e35376e9b92a585a644f420b7  gcc/testsuite/go.test/test/fixedbugs/issue8280.go
! 1cb0bf154cd531c11136e1467553dce8  gcc/testsuite/go.test/test/fixedbugs/issue8311.go
! c892c34e0be6db91af6c29b301d057c8  gcc/testsuite/go.test/test/fixedbugs/issue8325.go
! bac6fdb86f663ea790d076e93175bf27  gcc/testsuite/go.test/test/fixedbugs/issue8336.go
! e9d66e24e19c34bf2df60e93ad4bf104  gcc/testsuite/go.test/test/fixedbugs/issue8347.go
! 292e0dd994f47470694e295e5706c90a  gcc/testsuite/go.test/test/fixedbugs/issue8385.go
! a964c9416a6e60cf40c4f2a038d49f68  gcc/testsuite/go.test/test/fixedbugs/issue8438.go
! 52e0c1b18195fb4f46810203e03cd041  gcc/testsuite/go.test/test/fixedbugs/issue8440.go
! 115fb6c495d16be7a86d06223fc23f1e  gcc/testsuite/go.test/test/fixedbugs/issue8475.go
! 0f34be6c8d1bf6f723c15f24c7fa2589  gcc/testsuite/go.test/test/fixedbugs/issue8501.go
! 6ab43975b66b04c1f5b28aa100104c75  gcc/testsuite/go.test/test/fixedbugs/issue8613.go
! 782bd12487df58e1ce3bc964c947b7f7  gcc/testsuite/go.test/test/fixedbugs/issue8620.go
! 91ed83dda468d23331fb62812309a9f9  gcc/testsuite/go.test/test/fixedbugs/issue8745.go
! 3006f3511375aba0e4bf89737812088f  gcc/testsuite/go.test/test/fixedbugs/issue8761.go
! 97a1a88a9771577240921205efcca312  gcc/testsuite/go.test/test/fixedbugs/issue8836.go
! 91f6b04ad42fece177176eb496db5a6d  gcc/testsuite/go.test/test/fixedbugs/issue887.go
! 821c8eeff692ce5636858654f912be48  gcc/testsuite/go.test/test/fixedbugs/issue8947.go
! 3a65751393818eaed7b5ed12187b5f90  gcc/testsuite/go.test/test/fixedbugs/issue8961.go
! 7de238ece6b56d0dec2d187b82dff87b  gcc/testsuite/go.test/test/fixedbugs/issue9006.go
! 9b292e4942d77274ef8bea2544d63f71  gcc/testsuite/go.test/test/fixedbugs/issue9017.go
! 9956d2e09718b97e1bfddc3ed1c765fc  gcc/testsuite/go.test/test/fixedbugs/issue9036.go
! b8209362cb0fa92cb7538bb07747db3e  gcc/testsuite/go.test/test/fixedbugs/issue9076.go
! 5fc51241fcf02c8dd70a87544882655a  gcc/testsuite/go.test/test/fixedbugs/issue9083.go
! bf4fde67e8ee2a4e3cf874b934e97a7e  gcc/testsuite/go.test/test/fixedbugs/issue9110.go
! a30c8a0feb22cc004c3749f25b61be41  gcc/testsuite/go.test/test/fixedbugs/issue9321.go
! 0ac5470eba0253dba448318c1dbe151b  gcc/testsuite/go.test/test/fixedbugs/issue9355.dir/a.go
! 8a95a82910ce5aad6e9b6b6377511c23  gcc/testsuite/go.test/test/fixedbugs/issue9355.go
! c4a6b749f041a4dd47fcbc8ecb5e431e  gcc/testsuite/go.test/test/fixedbugs/issue9370.go
! 229eeeb4e08c0b36127185afc23e003c  gcc/testsuite/go.test/test/fixedbugs/issue9432.go
! 44341b1fb374b297f1c0e908d7f3cf50  gcc/testsuite/go.test/test/fixedbugs/issue9521.go
! d7b74d89f73d624fe717f39507281ee5  gcc/testsuite/go.test/test/fixedbugs/issue9537.dir/a.go
! 4c8fee5858ad869a83bd72c7c24d52b3  gcc/testsuite/go.test/test/fixedbugs/issue9537.dir/b.go
! 644d74ec3407fefacb4e5804d2ff2978  gcc/testsuite/go.test/test/fixedbugs/issue9537.go
! 3eda7855f63c2b8f54cfe33a3f0f5a6a  gcc/testsuite/go.test/test/fixedbugs/issue9604.go
! 1388ef56c1c663c93c8a670b55cc21a9  gcc/testsuite/go.test/test/fixedbugs/issue9604b.go
! 1513aeb2e990b6ec5ea557d156383f52  gcc/testsuite/go.test/test/fixedbugs/issue9608.dir/issue9608.go
! b7ffd58d67e4b5acb92eed180faa9e5d  gcc/testsuite/go.test/test/fixedbugs/issue9608.go
! e9e3bd3af80550fce9169d9c39f61636  gcc/testsuite/go.test/test/fixedbugs/issue9634.go
! f82371c6d5508484f82fd3f4b55e85a4  gcc/testsuite/go.test/test/fixedbugs/issue9691.go
! 62fa28b8808e8cdd2178570069d6be53  gcc/testsuite/go.test/test/fixedbugs/issue9731.go
! aebeb01348c6c462292dfffaa760216d  gcc/testsuite/go.test/test/fixedbugs/issue9738.go
! bf5655467522e9ef8275a014a7fc6e3d  gcc/testsuite/go.test/test/fixedbugs/issue9862.go
! 3ce4cc778f74964042b0b1fc410b553a  gcc/testsuite/go.test/test/fixedbugs/issue9862_run.go
  f5fded7281762a9fe179bce9a9f77056  gcc/testsuite/go.test/test/float_lit.go
  0963a2b3b2cf3c7b9e7abf209c4f4bae  gcc/testsuite/go.test/test/floatcmp.go
  ce054d38b44abb8fc91ca7438c1db2b6  gcc/testsuite/go.test/test/for.go
*************** ce054d38b44abb8fc91ca7438c1db2b6  gcc/te
*** 77833,77873 ****
  5210b9984bdf7f0e4b3505409a41cee6  gcc/testsuite/go.test/test/func3.go
  fee4d3cd083b192a3a1f73eaa03ee59b  gcc/testsuite/go.test/test/func4.go
  13ae3512155ac42a4b45671a70cbfa76  gcc/testsuite/go.test/test/func5.go
! 9400335a81f23cd822795fb4d6d7eca2  gcc/testsuite/go.test/test/func6.go
! a86ebe970dcc3af67bfc470a361cda49  gcc/testsuite/go.test/test/func7.go
! d4a90fd44b36f20228de786233b55750  gcc/testsuite/go.test/test/func8.go
! 841fe1fd1b4356cd21b0b26ba9699946  gcc/testsuite/go.test/test/funcdup.go
! 1358e492b9d067269e75b9fd8e1d5798  gcc/testsuite/go.test/test/funcdup2.go
  063e3600b3b7334bf3ac8681a86306fb  gcc/testsuite/go.test/test/gc.go
  7e5d8474d1c679d2a567f2942103fcb0  gcc/testsuite/go.test/test/gc1.go
! c2f420aa4dd5095eea8d2aa37dd84c2d  gcc/testsuite/go.test/test/gc2.go
! 26ea7209b478295ec614fb54d5b35c40  gcc/testsuite/go.test/test/golden.out
! b2fa728fdfd8d31a5624ffd5a02981ba  gcc/testsuite/go.test/test/goprint.go
  6b19b92468df811ab3687688051d5757  gcc/testsuite/go.test/test/goprint.out
! f22be08c7ce5c1f4160b463208d46a15  gcc/testsuite/go.test/test/goto.go
! 8d0a2e01b5ed590f68b3e42cc1c875d0  gcc/testsuite/go.test/test/helloworld.go
  22c3683b094136c3398391ae71b20f04  gcc/testsuite/go.test/test/helloworld.out
  e848c30f96da168b5738fbfe47e521df  gcc/testsuite/go.test/test/if.go
  0d0632fa89aebf37241e244d2684496c  gcc/testsuite/go.test/test/import.go
  f4ddb56e3700111eb173d155e710482d  gcc/testsuite/go.test/test/import1.go
! 63efda1e4d3755ee5b75f47a275a15b2  gcc/testsuite/go.test/test/import2.dir/import2.go
! f76c4b47402f470a3e2dba7337153f5a  gcc/testsuite/go.test/test/import2.dir/import3.go
! d8c6c76c8e19e00d99b71a6399b4f6bd  gcc/testsuite/go.test/test/import2.go
  b9da7d3b603665a8c5e2ea4447e5da9c  gcc/testsuite/go.test/test/import4.dir/empty.go
  a7a309ab8ff89c57f1c730d642afb4ce  gcc/testsuite/go.test/test/import4.dir/import4.go
  e8bace213c0748fd1732304154f40504  gcc/testsuite/go.test/test/import4.go
! 5cc6baa342cdbb98ee30898cacacfee4  gcc/testsuite/go.test/test/import5.go
! 6d50c45c53d6bb15d0e56338a539f20f  gcc/testsuite/go.test/test/index.go
! 30f41a172050ccdc556f661663035b01  gcc/testsuite/go.test/test/index0.go
! 130d6d6d1a46a5758bdbc894af2ee9ab  gcc/testsuite/go.test/test/index1.go
! 17a4314dbb4017ffb8c625f57c5445c9  gcc/testsuite/go.test/test/index2.go
  249b408d6e37033d3f15e25ecd4c4154  gcc/testsuite/go.test/test/indirect.go
  80ff56a432a81cf9274dde518dcbfd14  gcc/testsuite/go.test/test/indirect1.go
! d7050aba5fc21b4aae8000d9c4633456  gcc/testsuite/go.test/test/init.go
! 4cd48ba2d2df0f3d991ec414de435012  gcc/testsuite/go.test/test/init1.go
  22e76e323a2c5843ae38d197506d6e02  gcc/testsuite/go.test/test/initcomma.go
  1b217603e7d19fe7317e1f13ec5db6c9  gcc/testsuite/go.test/test/initialize.go
! e43a9dd4b34142d4729910dd1e75451e  gcc/testsuite/go.test/test/initializerr.go
  54e78336c3cc2c4de641daa5b71c73ae  gcc/testsuite/go.test/test/int_lit.go
  bfc33e85b5e84fef3a93c2299e6fdb5a  gcc/testsuite/go.test/test/intcvt.go
  21067ec9d81a55d8bc3c04996c767628  gcc/testsuite/go.test/test/interface/bigdata.go
--- 83744,83783 ----
  5210b9984bdf7f0e4b3505409a41cee6  gcc/testsuite/go.test/test/func3.go
  fee4d3cd083b192a3a1f73eaa03ee59b  gcc/testsuite/go.test/test/func4.go
  13ae3512155ac42a4b45671a70cbfa76  gcc/testsuite/go.test/test/func5.go
! 8a502f234b9e14ac35bee528eadc161d  gcc/testsuite/go.test/test/func6.go
! 6c0a20cb5931b87ea997a15aaa63b3e1  gcc/testsuite/go.test/test/func7.go
! 68bceae936e53b416848ead8cd548f7f  gcc/testsuite/go.test/test/func8.go
! 48af2eff58b297af529febfe5cbf5e7e  gcc/testsuite/go.test/test/funcdup.go
! 2239592ab3dee4afb7d4fa64a269c27b  gcc/testsuite/go.test/test/funcdup2.go
  063e3600b3b7334bf3ac8681a86306fb  gcc/testsuite/go.test/test/gc.go
  7e5d8474d1c679d2a567f2942103fcb0  gcc/testsuite/go.test/test/gc1.go
! 678c9508ab131fe96da9ddc500d26c8a  gcc/testsuite/go.test/test/gc2.go
! 4548bf0886dfc68a7e4ddafa1993dac0  gcc/testsuite/go.test/test/goprint.go
  6b19b92468df811ab3687688051d5757  gcc/testsuite/go.test/test/goprint.out
! 6ea9d04a01359ee898e0b91f3c830b19  gcc/testsuite/go.test/test/goto.go
! 44f0dbb9b119cce5695393a6b42a58cb  gcc/testsuite/go.test/test/helloworld.go
  22c3683b094136c3398391ae71b20f04  gcc/testsuite/go.test/test/helloworld.out
  e848c30f96da168b5738fbfe47e521df  gcc/testsuite/go.test/test/if.go
  0d0632fa89aebf37241e244d2684496c  gcc/testsuite/go.test/test/import.go
  f4ddb56e3700111eb173d155e710482d  gcc/testsuite/go.test/test/import1.go
! 88045184f0462a92908d0ec390438c1c  gcc/testsuite/go.test/test/import2.dir/import2.go
! 8acb675be559d23ca3023a3046a14e31  gcc/testsuite/go.test/test/import2.dir/import3.go
! 9ac659e11d43099538d0605821a84859  gcc/testsuite/go.test/test/import2.go
  b9da7d3b603665a8c5e2ea4447e5da9c  gcc/testsuite/go.test/test/import4.dir/empty.go
  a7a309ab8ff89c57f1c730d642afb4ce  gcc/testsuite/go.test/test/import4.dir/import4.go
  e8bace213c0748fd1732304154f40504  gcc/testsuite/go.test/test/import4.go
! 126e0150a63b16a6f6f81c64be59d22a  gcc/testsuite/go.test/test/import5.go
! a2d5f1a663b6b6615844a27db60751b7  gcc/testsuite/go.test/test/index.go
! 84ff19f533a2f51952c11382646acc90  gcc/testsuite/go.test/test/index0.go
! a02779db73f817c0f725233b3920163a  gcc/testsuite/go.test/test/index1.go
! 257d0bb8855d433968b5e1920ce0ab6a  gcc/testsuite/go.test/test/index2.go
  249b408d6e37033d3f15e25ecd4c4154  gcc/testsuite/go.test/test/indirect.go
  80ff56a432a81cf9274dde518dcbfd14  gcc/testsuite/go.test/test/indirect1.go
! edd53461f4722460b2d1bb9b3e1b4d15  gcc/testsuite/go.test/test/init.go
! d2a23a6b822ee0f18934f37b4635c0e7  gcc/testsuite/go.test/test/init1.go
  22e76e323a2c5843ae38d197506d6e02  gcc/testsuite/go.test/test/initcomma.go
  1b217603e7d19fe7317e1f13ec5db6c9  gcc/testsuite/go.test/test/initialize.go
! 8c3797305f8612bf90f6f94fd55592ab  gcc/testsuite/go.test/test/initializerr.go
  54e78336c3cc2c4de641daa5b71c73ae  gcc/testsuite/go.test/test/int_lit.go
  bfc33e85b5e84fef3a93c2299e6fdb5a  gcc/testsuite/go.test/test/intcvt.go
  21067ec9d81a55d8bc3c04996c767628  gcc/testsuite/go.test/test/interface/bigdata.go
*************** fa956f5c9a19662a499aefd12e2b5626  gcc/te
*** 77878,77888 ****
  d630196ff735678df85a8ec758c7cb2d  gcc/testsuite/go.test/test/interface/embed1.dir/embed0.go
  e0ea4eece72cf1a838e9ce990c59d3c9  gcc/testsuite/go.test/test/interface/embed1.dir/embed1.go
  d69fbc04e671cba4112070bb7ec1b09c  gcc/testsuite/go.test/test/interface/embed1.go
! f2dc6253c4a536dcec4f9eb6d962895c  gcc/testsuite/go.test/test/interface/embed2.go
! e40ec12c6c4e48cadbc5db8aba894406  gcc/testsuite/go.test/test/interface/explicit.go
  7fe43b38f685d077c2a85b528b9065e6  gcc/testsuite/go.test/test/interface/fail.go
  75020a306c50d068146cfc997cda6461  gcc/testsuite/go.test/test/interface/fake.go
! 8545eb5bf7712f588c98fbf46f57b4f9  gcc/testsuite/go.test/test/interface/noeq.go
  934813fba2e1ef80f65823394fd71494  gcc/testsuite/go.test/test/interface/pointer.go
  3a910a682314e9d794450d93c2bc8ecb  gcc/testsuite/go.test/test/interface/private.dir/private1.go
  832379a8cce0ec9f0adb73f1b9a48224  gcc/testsuite/go.test/test/interface/private.dir/prog.go
--- 83788,83798 ----
  d630196ff735678df85a8ec758c7cb2d  gcc/testsuite/go.test/test/interface/embed1.dir/embed0.go
  e0ea4eece72cf1a838e9ce990c59d3c9  gcc/testsuite/go.test/test/interface/embed1.dir/embed1.go
  d69fbc04e671cba4112070bb7ec1b09c  gcc/testsuite/go.test/test/interface/embed1.go
! 4039ea84b5880b8da8e4f7582198b7d0  gcc/testsuite/go.test/test/interface/embed2.go
! 04d5ba04b3246f0e7dce69370c41da12  gcc/testsuite/go.test/test/interface/explicit.go
  7fe43b38f685d077c2a85b528b9065e6  gcc/testsuite/go.test/test/interface/fail.go
  75020a306c50d068146cfc997cda6461  gcc/testsuite/go.test/test/interface/fake.go
! fb08a66661e6f41d237c90c174392a81  gcc/testsuite/go.test/test/interface/noeq.go
  934813fba2e1ef80f65823394fd71494  gcc/testsuite/go.test/test/interface/pointer.go
  3a910a682314e9d794450d93c2bc8ecb  gcc/testsuite/go.test/test/interface/private.dir/private1.go
  832379a8cce0ec9f0adb73f1b9a48224  gcc/testsuite/go.test/test/interface/private.dir/prog.go
*************** e40ec12c6c4e48cadbc5db8aba894406  gcc/te
*** 77890,77898 ****
  151f9af3aba86cefcf4db6c6de29d672  gcc/testsuite/go.test/test/interface/receiver.go
  8b546b8db986b0cc119363edac341cf7  gcc/testsuite/go.test/test/interface/receiver1.go
  1fc402d9fe73a1c821cfcb6c10543cfc  gcc/testsuite/go.test/test/interface/recursive.go
! 53bc6723ebdfdbabeef92bf1cb7c4324  gcc/testsuite/go.test/test/interface/recursive1.dir/recursive1.go
! 90c6cd4147b270967639739ffe0c66ad  gcc/testsuite/go.test/test/interface/recursive1.dir/recursive2.go
! 885be3ced088bde0d04b63de124cc428  gcc/testsuite/go.test/test/interface/recursive1.go
  94ac4b862ada0a6bf8ba89734a420fb7  gcc/testsuite/go.test/test/interface/returntype.go
  99bca04a315737599d3e6633badb3a39  gcc/testsuite/go.test/test/interface/struct.go
  b0a9b0d535c2311345f9984068e4be4b  gcc/testsuite/go.test/test/iota.go
--- 83800,83808 ----
  151f9af3aba86cefcf4db6c6de29d672  gcc/testsuite/go.test/test/interface/receiver.go
  8b546b8db986b0cc119363edac341cf7  gcc/testsuite/go.test/test/interface/receiver1.go
  1fc402d9fe73a1c821cfcb6c10543cfc  gcc/testsuite/go.test/test/interface/recursive.go
! f392cd89d09cf6f730d874a1f4b90223  gcc/testsuite/go.test/test/interface/recursive1.dir/recursive1.go
! bfc4400bd5cb1a5bd4ab25d3d81f321e  gcc/testsuite/go.test/test/interface/recursive1.dir/recursive2.go
! 78f9711d2b0cb5f6b82594d530ee5334  gcc/testsuite/go.test/test/interface/recursive1.go
  94ac4b862ada0a6bf8ba89734a420fb7  gcc/testsuite/go.test/test/interface/returntype.go
  99bca04a315737599d3e6633badb3a39  gcc/testsuite/go.test/test/interface/struct.go
  b0a9b0d535c2311345f9984068e4be4b  gcc/testsuite/go.test/test/iota.go
*************** e2a9ac4d2383282ab38405b9467b3846  gcc/te
*** 77901,77907 ****
  d4115d2c17062263900e735281fde824  gcc/testsuite/go.test/test/ken/chan1.go
  d68ac463d5bb2a71ff1d45445e049ff1  gcc/testsuite/go.test/test/ken/complit.go
  2206032f62487690b8cbbf1994eb09a0  gcc/testsuite/go.test/test/ken/convert.go
! eee0500411262afc1964a24ef8d47175  gcc/testsuite/go.test/test/ken/cplx0.go
  3200425ab0d6e2682fb73b8978639744  gcc/testsuite/go.test/test/ken/cplx0.out
  88947e864f9f692a67f2e91cf95fba64  gcc/testsuite/go.test/test/ken/cplx1.go
  706af96ca7a3e7467d40ffc59f581e60  gcc/testsuite/go.test/test/ken/cplx2.go
--- 83811,83817 ----
  d4115d2c17062263900e735281fde824  gcc/testsuite/go.test/test/ken/chan1.go
  d68ac463d5bb2a71ff1d45445e049ff1  gcc/testsuite/go.test/test/ken/complit.go
  2206032f62487690b8cbbf1994eb09a0  gcc/testsuite/go.test/test/ken/convert.go
! 59137f812b5e65433271418795be4781  gcc/testsuite/go.test/test/ken/cplx0.go
  3200425ab0d6e2682fb73b8978639744  gcc/testsuite/go.test/test/ken/cplx0.out
  88947e864f9f692a67f2e91cf95fba64  gcc/testsuite/go.test/test/ken/cplx1.go
  706af96ca7a3e7467d40ffc59f581e60  gcc/testsuite/go.test/test/ken/cplx2.go
*************** eee0500411262afc1964a24ef8d47175  gcc/te
*** 77910,77916 ****
  f6d37dfa5a4ccd71f15dc4e4d8da3de2  gcc/testsuite/go.test/test/ken/cplx5.go
  26165985317fcdde8aa5d5a8eb92a8f0  gcc/testsuite/go.test/test/ken/divconst.go
  871ade944ba44060ddac6f69e79fcf09  gcc/testsuite/go.test/test/ken/divmod.go
! 595e229eb78fc44e6216c3bb9b9c46ea  gcc/testsuite/go.test/test/ken/embed.go
  20423d39b28d740d419ac1363b087ed0  gcc/testsuite/go.test/test/ken/for.go
  8e00e571c0e018cbcce928f4fb58a816  gcc/testsuite/go.test/test/ken/interbasic.go
  c81557af1fb912b4f50f794284714d4f  gcc/testsuite/go.test/test/ken/interfun.go
--- 83820,83826 ----
  f6d37dfa5a4ccd71f15dc4e4d8da3de2  gcc/testsuite/go.test/test/ken/cplx5.go
  26165985317fcdde8aa5d5a8eb92a8f0  gcc/testsuite/go.test/test/ken/divconst.go
  871ade944ba44060ddac6f69e79fcf09  gcc/testsuite/go.test/test/ken/divmod.go
! 30fc00d556a9d2227b2ba098a39f3e7a  gcc/testsuite/go.test/test/ken/embed.go
  20423d39b28d740d419ac1363b087ed0  gcc/testsuite/go.test/test/ken/for.go
  8e00e571c0e018cbcce928f4fb58a816  gcc/testsuite/go.test/test/ken/interbasic.go
  c81557af1fb912b4f50f794284714d4f  gcc/testsuite/go.test/test/ken/interfun.go
*************** c81557af1fb912b4f50f794284714d4f  gcc/te
*** 77918,77924 ****
  7dc5085fee785ca459198b9ceae8bac4  gcc/testsuite/go.test/test/ken/label.go
  42a3f21d41e20d186e04562298ee76bc  gcc/testsuite/go.test/test/ken/litfun.go
  b6054bbc4612a13c03f6a1869dc5feb3  gcc/testsuite/go.test/test/ken/mfunc.go
! d8321378f6c368f629b5f2cf5d673da5  gcc/testsuite/go.test/test/ken/modconst.go
  a1a8177c2dceb7db259dce68d7f44e68  gcc/testsuite/go.test/test/ken/ptrfun.go
  425619fc053ea76a20b583ab1368482d  gcc/testsuite/go.test/test/ken/ptrvar.go
  1be72a4b951077d8bf5726cec175a253  gcc/testsuite/go.test/test/ken/range.go
--- 83828,83834 ----
  7dc5085fee785ca459198b9ceae8bac4  gcc/testsuite/go.test/test/ken/label.go
  42a3f21d41e20d186e04562298ee76bc  gcc/testsuite/go.test/test/ken/litfun.go
  b6054bbc4612a13c03f6a1869dc5feb3  gcc/testsuite/go.test/test/ken/mfunc.go
! 340e047bced737175b3714f4587193fb  gcc/testsuite/go.test/test/ken/modconst.go
  a1a8177c2dceb7db259dce68d7f44e68  gcc/testsuite/go.test/test/ken/ptrfun.go
  425619fc053ea76a20b583ab1368482d  gcc/testsuite/go.test/test/ken/ptrvar.go
  1be72a4b951077d8bf5726cec175a253  gcc/testsuite/go.test/test/ken/range.go
*************** b84fa71a020cfce9e86347f219454c91  gcc/te
*** 77935,78052 ****
  b65f63cb0a99ec63d30272f7603acf01  gcc/testsuite/go.test/test/ken/simpvar.go
  f9baaba7cf889cd1b3b6c57b9070609f  gcc/testsuite/go.test/test/ken/slicearray.go
  baed56c99624c65e4b2b450bdb87087e  gcc/testsuite/go.test/test/ken/sliceslice.go
! ad10877c8cb91064f7f7a089f20c0f50  gcc/testsuite/go.test/test/ken/string.go
  fbacafb7a6720979903448bca5e6d93d  gcc/testsuite/go.test/test/ken/string.out
  7b32d9b3e30bb5ada8d70e02043069a6  gcc/testsuite/go.test/test/ken/strvar.go
! 726f87aca979e72d072e19a8e52cb511  gcc/testsuite/go.test/test/label.go
! 792d66621dd4e1c40bf1f58dcc468cc2  gcc/testsuite/go.test/test/label1.go
! 5abbacef2ad3636c4b215b2bcda0e102  gcc/testsuite/go.test/test/linkx.go
  4c1f4863b9de99533df31bbc3cfcad28  gcc/testsuite/go.test/test/literal.go
  99cbce854f403d9635c3712d8d2a9a57  gcc/testsuite/go.test/test/mallocfin.go
! f232e05d0a0ab65d59b72d0bf74167fc  gcc/testsuite/go.test/test/map.go
! ad8c7eaa1699f39abf71ec23233ca9cc  gcc/testsuite/go.test/test/map1.go
! 9c426883b4f524c9ea47c8e77ff14de3  gcc/testsuite/go.test/test/mapnan.go
  820f9c3f59a2ee3c1b51c86a17ea21cb  gcc/testsuite/go.test/test/method.go
! 0ace4134371f791df395a51819d5ca4e  gcc/testsuite/go.test/test/method1.go
! b4b386270ea016f59404130d7382dbd7  gcc/testsuite/go.test/test/method2.go
  b181a0a791d44a4b96981cbaab5e2f68  gcc/testsuite/go.test/test/method3.go
  a00c436a36e42645769a943587603865  gcc/testsuite/go.test/test/method4.dir/method4a.go
! 64e9da41cf2a33113828c7a8ee8b7c9d  gcc/testsuite/go.test/test/method4.dir/prog.go
  b97f136750ed678984dabba439c81987  gcc/testsuite/go.test/test/method4.go
! f8ecf653b11c48ac65c7fa7cbd00f796  gcc/testsuite/go.test/test/method5.go
! 153d24141e62f199cf21598f52af0c3c  gcc/testsuite/go.test/test/named.go
! b1da4903f706ba19e2aab9e74a6a0c21  gcc/testsuite/go.test/test/named1.go
  20dc881b3c938b7511ea8283e9eb83a5  gcc/testsuite/go.test/test/nil.go
! d90666c0e0f581a1aea0611f2f204531  gcc/testsuite/go.test/test/nilcheck.go
! f5556811b8c7c12a0f93e580fc8521eb  gcc/testsuite/go.test/test/nilptr.go
! 015ceb223a1b6442896c57bb618cf831  gcc/testsuite/go.test/test/nilptr2.go
! bcfa50212839f76d2d714859ac8f48a7  gcc/testsuite/go.test/test/nilptr3.go
! b4002818a89621b3edb6bb7de377739c  gcc/testsuite/go.test/test/nul1.go
  4afef3c9e22d727d933756f5f8e8ab85  gcc/testsuite/go.test/test/parentype.go
! a23179e6d5fb80bf187b95889311493e  gcc/testsuite/go.test/test/peano.go
! 007ce4344c6c810717fc71028bba4f91  gcc/testsuite/go.test/test/printbig.go
  bee3dec4120fa190245e7c1a5ee99225  gcc/testsuite/go.test/test/printbig.out
! 9ec25afc194f25a9516f254af2bf49f2  gcc/testsuite/go.test/test/range.go
! 2231e8a34fda8996a4a57529445cab0a  gcc/testsuite/go.test/test/recover.go
! 47460e933f5cca48e34f2e32f11dbd7a  gcc/testsuite/go.test/test/recover1.go
! 3d56e374d8093a13d6fc6b0708659bc2  gcc/testsuite/go.test/test/recover2.go
! 97fc83b2dbb7d34c1665ee4819864bf8  gcc/testsuite/go.test/test/recover3.go
! 5e732812cfbfece813fb23472f4447e3  gcc/testsuite/go.test/test/rename.go
! f77a3b0d66e686d17bbdd705ca3ac867  gcc/testsuite/go.test/test/rename1.go
! e605973804aed6361cdb95b13243f278  gcc/testsuite/go.test/test/reorder.go
! b88d18a8a53510df6ea818fcd364a4df  gcc/testsuite/go.test/test/reorder2.go
! 4f8ef83c428671847e7d8625587acbac  gcc/testsuite/go.test/test/return.go
! 777ba74ba67ba71c17726a2ec5379257  gcc/testsuite/go.test/test/rotate.go
! 6b6ac1ee64a4d96c717933b29e5bc7df  gcc/testsuite/go.test/test/rotate0.go
! 91575c34424018d5313a2a3713a36352  gcc/testsuite/go.test/test/rotate1.go
! 7f2bed0290de3b36d3d61e96ef9dbbf4  gcc/testsuite/go.test/test/rotate2.go
! 90036b2955e06466206bd10a14d1250d  gcc/testsuite/go.test/test/rotate3.go
! 2a202335daeb69f88f102ff6c0a23b28  gcc/testsuite/go.test/test/run
! bce5999d1bbc5c1c70c86eda1163e2db  gcc/testsuite/go.test/test/run.go
! f35a7d21fe1566cdf641a0787323d2da  gcc/testsuite/go.test/test/rune.go
! 1b7d96604e4fd113ae9fd5b49681ee16  gcc/testsuite/go.test/test/runtime.go
! 33c41d9d64dbfd9ef9ef59bfd004022a  gcc/testsuite/go.test/test/safe/main.go
! 96a8d03a63caacca08b0c21d8b74043d  gcc/testsuite/go.test/test/safe/nousesafe.go
! 654467ddeb26d10c3cffa5707ac4b405  gcc/testsuite/go.test/test/safe/pkg.go
! 4853e7a6f3fbda607b1c69d6d10e323c  gcc/testsuite/go.test/test/safe/usesafe.go
! a4ba95d3a1c9e4009ef83349b0a13ce3  gcc/testsuite/go.test/test/shift1.go
! 329b3e094658d419956bd57131932673  gcc/testsuite/go.test/test/shift2.go
  98eaa818a13192aad65a388f0fafa7ad  gcc/testsuite/go.test/test/sieve.go
! fd9abefba1c6cfcc3824bbebc31820ca  gcc/testsuite/go.test/test/sigchld.go
  b18ee66b072d3ab1e29e06d842909b21  gcc/testsuite/go.test/test/sigchld.out
  d235036e1f0b17e05560c35858511621  gcc/testsuite/go.test/test/simassign.go
! 258c0849b0f59565301ead52e63c67a7  gcc/testsuite/go.test/test/sinit.go
! 7e6551aee8fb95dd0ad9cb9b21463251  gcc/testsuite/go.test/test/sizeof.go
  1a0ee7a0e5ecdeadc721266c8bdd72d7  gcc/testsuite/go.test/test/slice3.go
! 68c7257988cba93035ae65d79cfe5940  gcc/testsuite/go.test/test/slice3err.go
  4f4a375df736485666c299baed6d06ca  gcc/testsuite/go.test/test/solitaire.go
  7cfeb1954cdc6e89e7d49d9508f972e3  gcc/testsuite/go.test/test/stack.go
! 8d4f6ff5827d04a01db4caf55867adda  gcc/testsuite/go.test/test/stress/maps.go
! 487b5fc7f41b0092013b09d33d366786  gcc/testsuite/go.test/test/stress/parsego.go
! 9b4d247999de55907fcb6ca4409995ff  gcc/testsuite/go.test/test/stress/runstress.go
  6214ab25a56b464bcb69b8aa31a33737  gcc/testsuite/go.test/test/string_lit.go
  2799dcd172921529fcec32d3617acfd9  gcc/testsuite/go.test/test/stringrange.go
! 0c43baed380e25705264e5e1e3312ca7  gcc/testsuite/go.test/test/struct0.go
  d342f8a1c58921fefc8d2167d701f07b  gcc/testsuite/go.test/test/switch.go
  9169a6577ead027af6f2bac21d2051e7  gcc/testsuite/go.test/test/switch3.go
  b395d23d4e177e9d389bf340d4db4a1f  gcc/testsuite/go.test/test/switch4.go
! e4799376657037670b3c87b3eefd2eec  gcc/testsuite/go.test/test/syntax/chan.go
! 6c01d50ec4b93bf3767f92dcbd9d351f  gcc/testsuite/go.test/test/syntax/chan1.go
! 52c92cb0922b610b912915a3dc9fbd25  gcc/testsuite/go.test/test/syntax/composite.go
! 58e8a9bf2ca77e51e370d2f8e51d0f13  gcc/testsuite/go.test/test/syntax/else.go
! 21b010e88cae9501176b261a04ce17d3  gcc/testsuite/go.test/test/syntax/forvar.go
! f0ad32f6fbc860ccaf07012fd9f9e480  gcc/testsuite/go.test/test/syntax/if.go
! a0fa8bc1264a67ed47614e44193d6c43  gcc/testsuite/go.test/test/syntax/import.go
! d32227e9ac8575b59f1a4fe39beff405  gcc/testsuite/go.test/test/syntax/interface.go
! 69b9993ad15cd97cfdd4ed0943bd06b2  gcc/testsuite/go.test/test/syntax/semi1.go
! 1bfcd4c8eaebfa70fbf6d511c87d59cd  gcc/testsuite/go.test/test/syntax/semi2.go
! 565193936a712377673f1728f4c72763  gcc/testsuite/go.test/test/syntax/semi3.go
! 4e708b66bbad100d6c9d4bb85243c479  gcc/testsuite/go.test/test/syntax/semi4.go
! c117f5e09abf8473d02a9640d9ad4cd0  gcc/testsuite/go.test/test/syntax/semi5.go
! be11b9149f1fba80e0c7d0984055ca3e  gcc/testsuite/go.test/test/syntax/semi6.go
! 02962fabdb22c45e2b47cf5b12e001e5  gcc/testsuite/go.test/test/syntax/semi7.go
! d8cf7ae85c8b1dfeb0ca0c66efede62f  gcc/testsuite/go.test/test/syntax/topexpr.go
! 37e032b8d11b53266e08499f932da26c  gcc/testsuite/go.test/test/syntax/typesw.go
! 2d9925fcfba932ef2c8c0f8bff8731a7  gcc/testsuite/go.test/test/syntax/vareq.go
! f3f0d69b4b8709cf311fcc856c80fdca  gcc/testsuite/go.test/test/syntax/vareq1.go
! e8b0a13b27b89312eaf5f83cc1ee9d65  gcc/testsuite/go.test/test/testlib
! e770fd937ae0f42986d8da9c68e42dfa  gcc/testsuite/go.test/test/torture.go
  71c16d3fa2e9e69a709669bdb93ad227  gcc/testsuite/go.test/test/turing.go
! 89ad4a397a0699bef7707caebdc8335b  gcc/testsuite/go.test/test/typecheck.go
  f43b8325708cfed7d6902a10eed25011  gcc/testsuite/go.test/test/typeswitch.go
  a6328cc1d38a0d000f73c5403c5adc45  gcc/testsuite/go.test/test/typeswitch1.go
! cd644384eebc8c1b05a70f19e4fc8854  gcc/testsuite/go.test/test/typeswitch2.go
! 0f905107de2a542048e54531840ebc11  gcc/testsuite/go.test/test/typeswitch3.go
! 171e840c24c9cbf7a8f7d2f2bee378a9  gcc/testsuite/go.test/test/undef.go
  2a8c4033327e84694018b3e767bce13b  gcc/testsuite/go.test/test/utf.go
! 12c130dc1acf2f81aa1688b7a7154b76  gcc/testsuite/go.test/test/varerr.go
  50c0f03762d429c13fd0302c79d90157  gcc/testsuite/go.test/test/varinit.go
! 7f822ef283b31994d8382c63460fb884  gcc/testsuite/go.test/test/zerodivide.go
  340e08c9aef97a2da8f4cd4568d52675  gcc/testsuite/jit.dg/add-driver-options-testlib.c
! b3ab3a899b3ad1ec73742b583dd102d4  gcc/testsuite/jit.dg/all-non-failing-tests.h
  7bc42e89ae77872c8fc581b4babf1832  gcc/testsuite/jit.dg/create-code-for-hello-world-executable.h
  e2d6abe9d39ef55e33a36bbe4db25586  gcc/testsuite/jit.dg/harness.h
! 691449df6000cdc0c7191af654885edc  gcc/testsuite/jit.dg/jit.exp
  3fd6900c9d1d0edd53191542d96ffcec  gcc/testsuite/jit.dg/test-accessing-bitfield.c
  790dcf4e4a5c3dce84639ef815265f21  gcc/testsuite/jit.dg/test-accessing-struct.c
  60caef14bfb482627a962469a4524fce  gcc/testsuite/jit.dg/test-accessing-union.c
--- 83845,83954 ----
  b65f63cb0a99ec63d30272f7603acf01  gcc/testsuite/go.test/test/ken/simpvar.go
  f9baaba7cf889cd1b3b6c57b9070609f  gcc/testsuite/go.test/test/ken/slicearray.go
  baed56c99624c65e4b2b450bdb87087e  gcc/testsuite/go.test/test/ken/sliceslice.go
! fea339cb62ebb4f018da162afdaf4c85  gcc/testsuite/go.test/test/ken/string.go
  fbacafb7a6720979903448bca5e6d93d  gcc/testsuite/go.test/test/ken/string.out
  7b32d9b3e30bb5ada8d70e02043069a6  gcc/testsuite/go.test/test/ken/strvar.go
! c718f48920f723a7a7245232af607d14  gcc/testsuite/go.test/test/label.go
! 5850522cdf9a7d7037f4da87e0b74ddb  gcc/testsuite/go.test/test/label1.go
! 0458122745336fe280773f25c99e3e52  gcc/testsuite/go.test/test/linkx.go
  4c1f4863b9de99533df31bbc3cfcad28  gcc/testsuite/go.test/test/literal.go
  99cbce854f403d9635c3712d8d2a9a57  gcc/testsuite/go.test/test/mallocfin.go
! 62d38940715acd82d56be8ea3dc81256  gcc/testsuite/go.test/test/map.go
! e5030bacd3b3d62a6d2e4d09c16814dd  gcc/testsuite/go.test/test/map1.go
  820f9c3f59a2ee3c1b51c86a17ea21cb  gcc/testsuite/go.test/test/method.go
! cf276cd1984c7917d53fc13f9f189d8e  gcc/testsuite/go.test/test/method1.go
! d02ea3c76b7d108b8c810857999750a7  gcc/testsuite/go.test/test/method2.go
  b181a0a791d44a4b96981cbaab5e2f68  gcc/testsuite/go.test/test/method3.go
  a00c436a36e42645769a943587603865  gcc/testsuite/go.test/test/method4.dir/method4a.go
! 69b5dd365bd6c29da2b7f878be8dd9d0  gcc/testsuite/go.test/test/method4.dir/prog.go
  b97f136750ed678984dabba439c81987  gcc/testsuite/go.test/test/method4.go
! a174da4f0df85a21f41760f31b34ede5  gcc/testsuite/go.test/test/method5.go
! 8390ca54a77eb6d15b98a5197a5d4838  gcc/testsuite/go.test/test/named.go
! 4c44c8a98af6cd4f3ded631c4c4d5427  gcc/testsuite/go.test/test/named1.go
  20dc881b3c938b7511ea8283e9eb83a5  gcc/testsuite/go.test/test/nil.go
! 28ecf1fb13e7a4c8a81f1329c4f429c2  gcc/testsuite/go.test/test/nilcheck.go
! c93dd03f66ec81a431e9eacdb4ce8b03  gcc/testsuite/go.test/test/nilptr.go
! ad24f9a06d330bdb9c9a8749ca9bd386  gcc/testsuite/go.test/test/nilptr2.go
! 0f408898fef9a1151254db9324a2c834  gcc/testsuite/go.test/test/nilptr3.go
! 4a1f57edcbd0214657f92dcd6938e3a4  gcc/testsuite/go.test/test/nul1.go
  4afef3c9e22d727d933756f5f8e8ab85  gcc/testsuite/go.test/test/parentype.go
! 1087dbb958079c56dee3a0b062d5cab1  gcc/testsuite/go.test/test/peano.go
! 703e051cf537745b4da986ba3d9cc10b  gcc/testsuite/go.test/test/printbig.go
  bee3dec4120fa190245e7c1a5ee99225  gcc/testsuite/go.test/test/printbig.out
! d0360e6e47d58b6110c14dd43b7ae6fd  gcc/testsuite/go.test/test/range.go
! 86f0909e310725352676b1511d5e2f5f  gcc/testsuite/go.test/test/recover.go
! 593bf14c6193ee0d4eb4462a8403abfc  gcc/testsuite/go.test/test/recover1.go
! f0fbed2d7b1fdc778fad2db33542a989  gcc/testsuite/go.test/test/recover2.go
! 186fe5d57ee101746f06713f4020400b  gcc/testsuite/go.test/test/recover3.go
! fc6b29f611c79a184117eff60a86a898  gcc/testsuite/go.test/test/rename.go
! adf87c5f463a6128627e5113a8e42f96  gcc/testsuite/go.test/test/rename1.go
! 3a0c0a1e2b4eff2161423ad891a9a677  gcc/testsuite/go.test/test/reorder.go
! 4d80cf108e74aa2f69d5a603225b2595  gcc/testsuite/go.test/test/reorder2.go
! f22bccc97e0fd66a531acfadae620231  gcc/testsuite/go.test/test/return.go
! 99eb32f4ad77c10d2708bf5f633a0c73  gcc/testsuite/go.test/test/rotate.go
! d0572df0884d569d16a9a1bb312ec813  gcc/testsuite/go.test/test/rotate0.go
! 1e15e3d48142e637ca9eec904216d40c  gcc/testsuite/go.test/test/rotate1.go
! 6402698080e43f4f65c19bd01e3638dd  gcc/testsuite/go.test/test/rotate2.go
! e9621771b537972fad0b0a0d13f44c9d  gcc/testsuite/go.test/test/rotate3.go
! 4e4c6cb8b33ed4fde2fb60571a33ec6e  gcc/testsuite/go.test/test/run.go
! 2d243d6e593e2639b04cf7102d2aa9b0  gcc/testsuite/go.test/test/rune.go
! 3fe523a753566634b33fb4dcfa534729  gcc/testsuite/go.test/test/runtime.go
! 36bde6b9c09006eab71daff9cc03c4aa  gcc/testsuite/go.test/test/shift1.go
! 65a60f54e1d2b1292efbc1eb89b87992  gcc/testsuite/go.test/test/shift2.go
  98eaa818a13192aad65a388f0fafa7ad  gcc/testsuite/go.test/test/sieve.go
! cd30080cb01620bb08bf27f6695eec60  gcc/testsuite/go.test/test/sigchld.go
  b18ee66b072d3ab1e29e06d842909b21  gcc/testsuite/go.test/test/sigchld.out
  d235036e1f0b17e05560c35858511621  gcc/testsuite/go.test/test/simassign.go
! 29b84c7cbe32f28e0ca14749862fb8a3  gcc/testsuite/go.test/test/sinit.go
! 995843cfa708893aaa20cc2a69e68178  gcc/testsuite/go.test/test/sizeof.go
  1a0ee7a0e5ecdeadc721266c8bdd72d7  gcc/testsuite/go.test/test/slice3.go
! cd805dacf1215620a7ba6d4d338a9db0  gcc/testsuite/go.test/test/slice3err.go
  4f4a375df736485666c299baed6d06ca  gcc/testsuite/go.test/test/solitaire.go
  7cfeb1954cdc6e89e7d49d9508f972e3  gcc/testsuite/go.test/test/stack.go
! c44518b54b7d0aac92c539c0a05ba5b2  gcc/testsuite/go.test/test/stress/maps.go
! f8dcaaa78ac16f7d70a605b38b4f32c2  gcc/testsuite/go.test/test/stress/parsego.go
! 105a9e40e7d954b781fa5e3ef9b4955f  gcc/testsuite/go.test/test/stress/runstress.go
  6214ab25a56b464bcb69b8aa31a33737  gcc/testsuite/go.test/test/string_lit.go
  2799dcd172921529fcec32d3617acfd9  gcc/testsuite/go.test/test/stringrange.go
! 23ea4140d197d18b8851db781f7e8b1e  gcc/testsuite/go.test/test/struct0.go
  d342f8a1c58921fefc8d2167d701f07b  gcc/testsuite/go.test/test/switch.go
  9169a6577ead027af6f2bac21d2051e7  gcc/testsuite/go.test/test/switch3.go
  b395d23d4e177e9d389bf340d4db4a1f  gcc/testsuite/go.test/test/switch4.go
! 5fc7b2d713fc0c727a2110c45cc0491e  gcc/testsuite/go.test/test/syntax/chan.go
! 6488cb2287aa132ba782eede6668f9be  gcc/testsuite/go.test/test/syntax/chan1.go
! 50b62e582bc6eba5547a874edf46831f  gcc/testsuite/go.test/test/syntax/composite.go
! 123d04c75fcc43cf5fee00e054439b3d  gcc/testsuite/go.test/test/syntax/else.go
! d89577aefa74aa82c12e1bf27f464ebb  gcc/testsuite/go.test/test/syntax/if.go
! f157ae84e3ff9e18cda824aeee914f1e  gcc/testsuite/go.test/test/syntax/import.go
! 3fe6a0d3b889a0465b79ee29d58548b4  gcc/testsuite/go.test/test/syntax/interface.go
! 4c43e608f4c7c75f4b52d7a8044d82a5  gcc/testsuite/go.test/test/syntax/semi1.go
! 6c1781b04f378b014b39cf1463776b7e  gcc/testsuite/go.test/test/syntax/semi2.go
! f2f7d71fad33edd7ac96078937c02ac6  gcc/testsuite/go.test/test/syntax/semi3.go
! 6c8e9aa6fcc00a26583328d5c5f54914  gcc/testsuite/go.test/test/syntax/semi4.go
! 395ee065c3d397bb93235d0ecb4a4752  gcc/testsuite/go.test/test/syntax/semi5.go
! b594503e6db6745e8d6dfbbf4fe575cb  gcc/testsuite/go.test/test/syntax/semi6.go
! 7ff5e74ba356ca53c37207bda6f96004  gcc/testsuite/go.test/test/syntax/semi7.go
! 0f943444b11736f72b0bbad1db690948  gcc/testsuite/go.test/test/syntax/topexpr.go
! 9fb89899cb3c27b78b3c04f025382f89  gcc/testsuite/go.test/test/syntax/typesw.go
! 9445ac9a9e53f0428b0448bc7aeb1001  gcc/testsuite/go.test/test/syntax/vareq.go
! cb871f8cd279afc3bd59569747828ad9  gcc/testsuite/go.test/test/syntax/vareq1.go
! 64bbfdf24458372aeb33d83a7121718a  gcc/testsuite/go.test/test/torture.go
  71c16d3fa2e9e69a709669bdb93ad227  gcc/testsuite/go.test/test/turing.go
! d6332c98979137d699bd1f5dedb8333b  gcc/testsuite/go.test/test/typecheck.go
  f43b8325708cfed7d6902a10eed25011  gcc/testsuite/go.test/test/typeswitch.go
  a6328cc1d38a0d000f73c5403c5adc45  gcc/testsuite/go.test/test/typeswitch1.go
! d35e0d8b54812907317bd04cd459c908  gcc/testsuite/go.test/test/typeswitch2.go
! 6c0bf7e89e38087813cca4161e12ef64  gcc/testsuite/go.test/test/typeswitch3.go
! 2fb51af8028d860968dfd801190625d9  gcc/testsuite/go.test/test/undef.go
  2a8c4033327e84694018b3e767bce13b  gcc/testsuite/go.test/test/utf.go
! d19a0449bac1fb497429a88904f3d658  gcc/testsuite/go.test/test/varerr.go
  50c0f03762d429c13fd0302c79d90157  gcc/testsuite/go.test/test/varinit.go
! 6447a99ae1e2eec266af1ceab6a7343c  gcc/testsuite/go.test/test/zerodivide.go
  340e08c9aef97a2da8f4cd4568d52675  gcc/testsuite/jit.dg/add-driver-options-testlib.c
! b1a05f9296dbfd219ceb90d0a48a5dce  gcc/testsuite/jit.dg/all-non-failing-tests.h
  7bc42e89ae77872c8fc581b4babf1832  gcc/testsuite/jit.dg/create-code-for-hello-world-executable.h
  e2d6abe9d39ef55e33a36bbe4db25586  gcc/testsuite/jit.dg/harness.h
! cfb37e56a6c5b7a631225384b481958a  gcc/testsuite/jit.dg/jit.exp
  3fd6900c9d1d0edd53191542d96ffcec  gcc/testsuite/jit.dg/test-accessing-bitfield.c
  790dcf4e4a5c3dce84639ef815265f21  gcc/testsuite/jit.dg/test-accessing-struct.c
  60caef14bfb482627a962469a4524fce  gcc/testsuite/jit.dg/test-accessing-union.c
*************** c96b8b75ba517dc647306c0f299c9b2d  gcc/te
*** 78056,78063 ****
--- 83958,83969 ----
  c9f821ccc1905c2cf6da3b515300cc71  gcc/testsuite/jit.dg/test-arith-overflow.c
  978312b6ef29d047612e4077b2776108  gcc/testsuite/jit.dg/test-array-as-pointer.c
  b6b657ddbcecefb50b21259cc5711010  gcc/testsuite/jit.dg/test-arrays.c
+ c9658d25caa117c1ff2c25b1a05536be  gcc/testsuite/jit.dg/test-asm.c
+ 07550ec237cc85ed15f3f525772b33c5  gcc/testsuite/jit.dg/test-asm.cc
  cc1b167a1d5eaf426dbf6721a80c93e7  gcc/testsuite/jit.dg/test-autovectorize.c
  3f5b0ae02ffd9c801777cd40eeb400a9  gcc/testsuite/jit.dg/test-benchmark.c
+ 425e82d760b4b92b760e58daad16a725  gcc/testsuite/jit.dg/test-builtin-memcpy.c
+ 8431129c23f5d17704db309e4c13bc1a  gcc/testsuite/jit.dg/test-builtin-unreachable.c
  af0a18ef8912906bb36ca88219c06667  gcc/testsuite/jit.dg/test-calling-external-function.c
  fcf20b943f3e9affe23adec9277064a7  gcc/testsuite/jit.dg/test-calling-function-ptr.c
  dc3f5924516f317d0e822022186a89d9  gcc/testsuite/jit.dg/test-combination.c
*************** dc3f5924516f317d0e822022186a89d9  gcc/te
*** 78067,78073 ****
  f34e7ef4d055ab7b719406f4af743422  gcc/testsuite/jit.dg/test-compile-to-object.c
  6c38f147d96d254624feb8015fdc5ef0  gcc/testsuite/jit.dg/test-compound-assignment.c
  da2633ae9e3039a064e79583ac2ed729  gcc/testsuite/jit.dg/test-constants.c
! 6469007356c8f7deed7c3d753210f2e0  gcc/testsuite/jit.dg/test-debug-strings.c
  20dd26ba5e2717d52d4e1067972e1d67  gcc/testsuite/jit.dg/test-dot-product.c
  ee645b37b25f2a3eddfb21e8be20336d  gcc/testsuite/jit.dg/test-empty.c
  7e92c7a2ed10887fff56fcf4d7ef3c64  gcc/testsuite/jit.dg/test-error-adding-to-terminated-block.c
--- 83973,83979 ----
  f34e7ef4d055ab7b719406f4af743422  gcc/testsuite/jit.dg/test-compile-to-object.c
  6c38f147d96d254624feb8015fdc5ef0  gcc/testsuite/jit.dg/test-compound-assignment.c
  da2633ae9e3039a064e79583ac2ed729  gcc/testsuite/jit.dg/test-constants.c
! fcf1117c170a5452646f6599908d4d34  gcc/testsuite/jit.dg/test-debug-strings.c
  20dd26ba5e2717d52d4e1067972e1d67  gcc/testsuite/jit.dg/test-dot-product.c
  ee645b37b25f2a3eddfb21e8be20336d  gcc/testsuite/jit.dg/test-empty.c
  7e92c7a2ed10887fff56fcf4d7ef3c64  gcc/testsuite/jit.dg/test-error-adding-to-terminated-block.c
*************** bcd00aa9e006316640c3bf84704c9810  gcc/te
*** 78089,78094 ****
--- 83995,84001 ----
  bb89285767406b5a1889295ccd7f67a3  gcc/testsuite/jit.dg/test-error-gcc_jit_block_end_with_switch-NULL-case.c
  d55f20c5f3cf00102cbec281658ff7bf  gcc/testsuite/jit.dg/test-error-gcc_jit_block_end_with_switch-mismatching-case-type.c
  8a3fd1a833ab3379685a11bf3edf5271  gcc/testsuite/jit.dg/test-error-gcc_jit_block_end_with_switch-overlapping-ranges.c
+ b78ab9eddce8b3f4f6628d28219e67d3  gcc/testsuite/jit.dg/test-error-gcc_jit_context_get_builtin_function-unimplemented-type.c
  edcaa86bbc44b476ee7c7f8b934111f2  gcc/testsuite/jit.dg/test-error-gcc_jit_context_get_builtin_function-unknown-builtin.c
  d29912fbe3c0519fdee10d23c2325140  gcc/testsuite/jit.dg/test-error-gcc_jit_context_new_binary_op-bad-res-type.c
  e590eb8a3469317d14eb18ec3abee431  gcc/testsuite/jit.dg/test-error-gcc_jit_context_new_bitfield-invalid-type.c
*************** c698e1c602213fa103f64d4a140c4a77  gcc/te
*** 78098,78105 ****
--- 84005,84014 ----
  3e1a7c74341993d455e36ff9afc47553  gcc/testsuite/jit.dg/test-error-gcc_jit_context_new_case-reversed-endpoints.c
  f8bb5af950b7c54e2fd290676f3dde14  gcc/testsuite/jit.dg/test-error-gcc_jit_context_new_field-opaque-struct.c
  e88137b2df20b756b4e8463fb16f4656  gcc/testsuite/jit.dg/test-error-gcc_jit_context_new_global-opaque-struct.c
+ bba3560c677bceac70f0ceeefd1bed54  gcc/testsuite/jit.dg/test-error-gcc_jit_context_new_global-void-type.c
  6815c1754abfd399b6df85adb71e64e9  gcc/testsuite/jit.dg/test-error-gcc_jit_context_new_unary_op-bad-res-type.c
  d28c4367b0aa5a5959dad3db792843f0  gcc/testsuite/jit.dg/test-error-gcc_jit_function_new_local-opaque-struct.c
+ 01e60810839d7c4d1be8e6ee60a4cdaa  gcc/testsuite/jit.dg/test-error-gcc_jit_function_new_local-void-type.c
  81d3409d1435b2934993c61a099173db  gcc/testsuite/jit.dg/test-error-gcc_jit_lvalue_access_field-wrong-struct.c
  3450958b8a46d63dea5498bac39aa508  gcc/testsuite/jit.dg/test-error-gcc_jit_lvalue_get_address-bitfield.c
  cf9089e548a3c7655fcf44ba01855156  gcc/testsuite/jit.dg/test-error-gcc_jit_rvalue_access_field-wrong-struct.c
*************** f8978b292e5e62e13f742d863657bb61  gcc/te
*** 78138,78144 ****
  b02011c7edbcfca8dfb3bd46815567fc  gcc/testsuite/jit.dg/test-factorial.c
  85f93e3dc56132711ed472999eddea1f  gcc/testsuite/jit.dg/test-fibonacci.c
  841c0fb8feb5dd18970c448dc2ccd811  gcc/testsuite/jit.dg/test-functions.c
! 361a6cd2bdbc5e54103e111c1ef4b2cd  gcc/testsuite/jit.dg/test-fuzzer.c
  84606b0daf7effa1be60975ee90658d3  gcc/testsuite/jit.dg/test-hello-world.c
  282cb9f2d6f6d4287ac88a6e77bd3aa9  gcc/testsuite/jit.dg/test-linked-list.c
  98ebb9b31736f32dab268c122c5d8d2d  gcc/testsuite/jit.dg/test-long-names.c
--- 84047,84054 ----
  b02011c7edbcfca8dfb3bd46815567fc  gcc/testsuite/jit.dg/test-factorial.c
  85f93e3dc56132711ed472999eddea1f  gcc/testsuite/jit.dg/test-fibonacci.c
  841c0fb8feb5dd18970c448dc2ccd811  gcc/testsuite/jit.dg/test-functions.c
! 85ea1059a175be15ef082e7a3d72fae3  gcc/testsuite/jit.dg/test-fuzzer.c
! 1da38d55df3045d75370957a17d7cbc1  gcc/testsuite/jit.dg/test-global-set-initializer.c
  84606b0daf7effa1be60975ee90658d3  gcc/testsuite/jit.dg/test-hello-world.c
  282cb9f2d6f6d4287ac88a6e77bd3aa9  gcc/testsuite/jit.dg/test-linked-list.c
  98ebb9b31736f32dab268c122c5d8d2d  gcc/testsuite/jit.dg/test-long-names.c
*************** e476b3e50d2451ccb2e83dcb94690dc6  gcc/te
*** 78148,78153 ****
--- 84058,84065 ----
  3dd91ef7035565601d335ad5b9e073e4  gcc/testsuite/jit.dg/test-operator-overloading.cc
  f23c8426b4779d93458122aa6f97231a  gcc/testsuite/jit.dg/test-pr66700-observing-write-through-ptr.c
  1e13f203827617338962b7f4bc0aef4d  gcc/testsuite/jit.dg/test-pr66779.c
+ e1de260f2ea5cb4cf607c76292f03edc  gcc/testsuite/jit.dg/test-pr95306-builtin-types.c
+ 5e9c628acee5585d824337166636c7bb  gcc/testsuite/jit.dg/test-pr95314-rvalue-reuse.c
  1f18cb1e4926db574b25c58a26e71a53  gcc/testsuite/jit.dg/test-quadratic.c
  ce096ee573017f44e9c3cd0933f0d297  gcc/testsuite/jit.dg/test-quadratic.cc
  df424c268791473ace062ef873c388e2  gcc/testsuite/jit.dg/test-reading-struct.c
*************** ce76c5d2dda1a33aeced6c87054d0b41  gcc/te
*** 78157,78162 ****
--- 84069,84075 ----
  bca3f58a8fb9ee1db76c5883c6d533f3  gcc/testsuite/jit.dg/test-switch.c
  060e97573747dc7dec3a27373a6f93aa  gcc/testsuite/jit.dg/test-switch.cc
  1dbd5675d95a6e7aa3ff419392d6dedd  gcc/testsuite/jit.dg/test-threads.c
+ af7112223f23a060486e371aaa393e98  gcc/testsuite/jit.dg/test-trap.c
  62cfd298f75d5b02e37418640347757d  gcc/testsuite/jit.dg/test-types.c
  e309c53b14c724939a1564046c6a5df2  gcc/testsuite/jit.dg/test-using-global.c
  87b9d64f8250158521cb3cae842ff2cb  gcc/testsuite/jit.dg/test-validly-unreachable-block.c
*************** fc650de429b1e302c5befad897716c07  gcc/te
*** 78165,78287 ****
  5542ebc8aa1b198ad40aeeee64259afb  gcc/testsuite/jit.dg/test-version.c
  96ac85af1dde837e4f4e2444d083cf22  gcc/testsuite/jit.dg/test-volatile.c
  6477c66fcebff4d502d26e2d247251ce  gcc/testsuite/jit.dg/verify-dynamic-library.c
! 1aeefec5e96c04e460d953a796cc0044  gcc/testsuite/lib/asan-dg.exp
! deda3a853143737b3c1f8d839c475756  gcc/testsuite/lib/atomic-dg.exp
! 7d82579bf0cb863692058f0152d89bc9  gcc/testsuite/lib/brig-dg.exp
! 573dbf63439cea9ff64551d146a02f32  gcc/testsuite/lib/brig.exp
! b801ebda07fd4f83b86418570864d9ae  gcc/testsuite/lib/c-compat.exp
! fd161a366dacb3c3d2814c5ec5fa0529  gcc/testsuite/lib/c-torture.exp
! 16cd0171b48da92b845ab0b5dbe040b5  gcc/testsuite/lib/clearcap.exp
! d02bef0d5f47128de6581847c5344783  gcc/testsuite/lib/compat.exp
! a6eb367e74b6b8a2e8885876960c3919  gcc/testsuite/lib/copy-file.exp
! 0e49bc71788af21a4bc4ae24a3d95c35  gcc/testsuite/lib/dejapatches.exp
! 2d846cfa16957df03ea0899663ba018c  gcc/testsuite/lib/dg-pch.exp
! d6318a36cc97de9859e62857a3b4542e  gcc/testsuite/lib/file-format.exp
! 07ad3dc868b83184251a3fbf0af4b46b  gcc/testsuite/lib/fortran-modules.exp
! 4988802758d9eedd0e3aceed8a2f3b09  gcc/testsuite/lib/fortran-torture.exp
! a93e87185894e1dac7e0d6eb3b6a82d2  gcc/testsuite/lib/g++-dg.exp
! b461431e9b7f6f0cf968de1173a79e35  gcc/testsuite/lib/g++.exp
! c9f1179456d5315fb5621e80f92a4b78  gcc/testsuite/lib/gcc-defs.exp
! a6f012ceb44b5e918f066dccbfe4872a  gcc/testsuite/lib/gcc-dg.exp
! efbcfa4d28f7e53efa7ab58e2c7e1e44  gcc/testsuite/lib/gcc-gdb-test.exp
! d3407b902d0f7b4b9cd90850a7d0b466  gcc/testsuite/lib/gcc-simulate-thread.exp
! 3c2c787fcc8ef5c7700261d7e7b54a7f  gcc/testsuite/lib/gcc.exp
! 674a35e6b0b36228df222d72193bdd05  gcc/testsuite/lib/gcov.exp
! e897eac8f31accc11d53cfae3ae16b0e  gcc/testsuite/lib/gdc-dg.exp
! fa73f9421dbf106f035cc3015f117c05  gcc/testsuite/lib/gdc-utils.exp
! ab23eaa0145abe5e1e3f8db59e1c30f8  gcc/testsuite/lib/gdc.exp
! 1e3b8e945da5c9712a08b670026f2b05  gcc/testsuite/lib/gfortran-dg.exp
! 9f46408d4a5bf5a40fc562067fd252aa  gcc/testsuite/lib/gfortran.exp
! 88d55b88ba6d3d50d983ad21b01abbd4  gcc/testsuite/lib/gnat-dg.exp
! 2f6869a5a2c9d408835dd857c13ad0b7  gcc/testsuite/lib/gnat.exp
! fa0e9c87b4bb5cbbec31c013f106c05b  gcc/testsuite/lib/go-dg.exp
! 24fc5b65239aa599bcd8a360fa686372  gcc/testsuite/lib/go-torture.exp
! 9fb73c74927f136ca96a1650a0afcbee  gcc/testsuite/lib/go.exp
! 181c1deb48766e14cacedce4f54cb10c  gcc/testsuite/lib/lto.exp
! f684b812f5a56badb83daebd4c6b8eb9  gcc/testsuite/lib/mike-g++.exp
! f096fbc7a08f3654b6bfcddaa25889b1  gcc/testsuite/lib/mike-gcc.exp
! 12c4ef671535e7ec4ef84793ca5dbfda  gcc/testsuite/lib/multiline.exp
! c0e9657eb3ff782857d6219786093432  gcc/testsuite/lib/obj-c++-dg.exp
! 1566a8e594fbb3815947d33edce1fd63  gcc/testsuite/lib/obj-c++.exp
! af4d6049c526358b0bced72089af7076  gcc/testsuite/lib/objc-dg.exp
! 806d28b6041ba871e6d4fc726700722c  gcc/testsuite/lib/objc-torture.exp
! 5e09041ce7c4d5b2b52ba5c2287bd0ca  gcc/testsuite/lib/objc.exp
! 798104da27cee008686141a98b520f8b  gcc/testsuite/lib/options.exp
! 9440d87b50965ff5486b551ef11a634a  gcc/testsuite/lib/plugin-support.exp
! cd778530c8ca650e7a6e2de7066010bd  gcc/testsuite/lib/profopt.exp
! e7cfbfe7b4c97294430e789d215cd022  gcc/testsuite/lib/prune.exp
! 2ad9a8996d5e8fa158376c2f08e51439  gcc/testsuite/lib/scanasm.exp
! b0a4036b6c7e5c72770103d9d03169c5  gcc/testsuite/lib/scandump.exp
! 96a8959535595b881ea8a82d0869c90b  gcc/testsuite/lib/scanipa.exp
! a8809419eb55d449249784b4d9b971e2  gcc/testsuite/lib/scanlang.exp
! 3d095238d75b0a143c1ed59dc832f084  gcc/testsuite/lib/scanltranstree.exp
! 10d73a83fbd19c3d74d77ac38bcb7578  gcc/testsuite/lib/scanoffloadrtl.exp
! 67cda6aa9e18eede3a911a54dde7647c  gcc/testsuite/lib/scanoffloadtree.exp
! d632d5568c00760aea7b18467091554c  gcc/testsuite/lib/scanrtl.exp
! 30bb639c80611d9ab5b763b954641ec7  gcc/testsuite/lib/scantree.exp
! de7c3a30aab1a4360904bd68322b8c39  gcc/testsuite/lib/scanwpaipa.exp
! 84d4d1fa2ac6a05232c49ad827939a46  gcc/testsuite/lib/target-libpath.exp
! ca50260c50a30bdb6f74ff883e63b78b  gcc/testsuite/lib/target-supports-dg.exp
! 124ad6f4dac4b3043ea139e99ffc3936  gcc/testsuite/lib/target-supports.exp
! 201116acbb88a91edc571f6c7b961f79  gcc/testsuite/lib/target-utils.exp
! 2dcea44ea4fe54415e381cfa752f4c4d  gcc/testsuite/lib/timeout-dg.exp
! d4e470f82175a3f3c70c1de64a1e104d  gcc/testsuite/lib/timeout.exp
! 75cb36b753873bad71151d08d84b445d  gcc/testsuite/lib/torture-options.exp
! c9ca7dd7a9c4d2cb891f6273ff70002a  gcc/testsuite/lib/tsan-dg.exp
! a96085f28c6202614a7acbe056c3fcda  gcc/testsuite/lib/ubsan-dg.exp
! da64020c38eb18a3bb6d6a0eb5d26da2  gcc/testsuite/lib/wrapper.exp
  83447103f758c2c8ec2044c84069e212  gcc/testsuite/obj-c++.dg/SEL-typedef.mm
  55160ccf08a9b1444b32deb900dac569  gcc/testsuite/obj-c++.dg/Wimplicit-fallthrough-1.mm
  84caaa988ddff2a3ef9a3c9c9bfe6fbf  gcc/testsuite/obj-c++.dg/at-class-1.mm
! 801e2138da098d1d33481961bdff311c  gcc/testsuite/obj-c++.dg/attributes/attributes.exp
  3ae67bbd6c30272de285ecf52bbe29c4  gcc/testsuite/obj-c++.dg/attributes/categ-attribute-1.mm
  bb7c92f88fdb2a6c371fe4b187f0cebd  gcc/testsuite/obj-c++.dg/attributes/categ-attribute-2.mm
! 20e89698b24eeafa990cb80d6777719f  gcc/testsuite/obj-c++.dg/attributes/class-attribute-1.mm
! eecb44076ad1f8ae113324377bba723d  gcc/testsuite/obj-c++.dg/attributes/class-attribute-2.mm
! d09eceeffd2880e9075ea50edcb8aa6d  gcc/testsuite/obj-c++.dg/attributes/class-attribute-3.mm
  4030a32519e33d672a532942ab7bca14  gcc/testsuite/obj-c++.dg/attributes/invalid-attribute-1.mm
  65e5fefaacab095415b0e049ace9e98f  gcc/testsuite/obj-c++.dg/attributes/method-attribute-1.mm
  e7f36ede3524b56b226f26f29dca005b  gcc/testsuite/obj-c++.dg/attributes/method-attribute-2.mm
  4bd35ba4e25297ef11a14dab4bd20f6e  gcc/testsuite/obj-c++.dg/attributes/method-attribute-3.mm
! 413f0677c7773f9443b3ffe5dc2377bd  gcc/testsuite/obj-c++.dg/attributes/method-deprecated-1.mm
! ed4f095ec72e955a58e8397c08c4a51f  gcc/testsuite/obj-c++.dg/attributes/method-deprecated-2.mm
! c2c022dabd733433ea1729bbe111b000  gcc/testsuite/obj-c++.dg/attributes/method-deprecated-3.mm
! ce827282e1b27990521447218ee397aa  gcc/testsuite/obj-c++.dg/attributes/method-format-1.mm
! ff1023d4df54c90a580b43dbe1815667  gcc/testsuite/obj-c++.dg/attributes/method-nonnull-1.mm
! 19e51000a67bd1017ffc369702226cce  gcc/testsuite/obj-c++.dg/attributes/method-noreturn-1.mm
! f94a6583f2964d5221d1a2b5a4ff2ce8  gcc/testsuite/obj-c++.dg/attributes/method-sentinel-1.mm
! 682998c01ca200520e38b3f4bf5288ea  gcc/testsuite/obj-c++.dg/attributes/parameter-attribute-1.mm
! eef3367de17d6174c9ab76bfd39f3cd7  gcc/testsuite/obj-c++.dg/attributes/parameter-attribute-2.mm
! 17fcc1d1acf1192faf301fd799d15d0b  gcc/testsuite/obj-c++.dg/attributes/proto-attribute-1.mm
  8133c571422046c63b8878a396693e07  gcc/testsuite/obj-c++.dg/attributes/proto-attribute-2.mm
! 46c0bdef69ed6e7711b5e47d64a577d0  gcc/testsuite/obj-c++.dg/attributes/proto-attribute-3.mm
! 1ac215109d0583b42f0dbc93fabff4f4  gcc/testsuite/obj-c++.dg/attributes/proto-attribute-4.mm
! ecc894e836dbc3bef578f67919f5455a  gcc/testsuite/obj-c++.dg/attributes/unused-parameter-1.mm
  68bcba6df58945a6a350cb84c428c23e  gcc/testsuite/obj-c++.dg/bad-forward-decl.mm
! 11f5d0b194fe59806fef2650cc53b3e9  gcc/testsuite/obj-c++.dg/bad-receiver-type.mm
  7de56313f5a271649dd6fb775354dce8  gcc/testsuite/obj-c++.dg/basic.mm
  e33ba6b3efe6a2b93315b7aadc0de99f  gcc/testsuite/obj-c++.dg/bitfield-1.mm
  6e457b5b15d0d7c7d8d56e298302d945  gcc/testsuite/obj-c++.dg/bitfield-2.mm
! 65eb816e2a117c6a91f4e21c67c3d3ce  gcc/testsuite/obj-c++.dg/bitfield-3.mm
  05fa3322109bc30efaf8f6f527875507  gcc/testsuite/obj-c++.dg/bitfield-4.mm
! 559811f2ad6c1eb3e081da1fce4f9fe1  gcc/testsuite/obj-c++.dg/bitfield-5.mm
! d4bd3446d638246d3ff8c9a942389090  gcc/testsuite/obj-c++.dg/class-extension-1.mm
! 307b13378572a31adb9ae2ae97c104b6  gcc/testsuite/obj-c++.dg/class-extension-2.mm
! 959a8bf5ce99cb1c213b1f6d5f460925  gcc/testsuite/obj-c++.dg/class-extension-3.mm
! afe4f2845aa2fd2f2fd13504cb3b9c88  gcc/testsuite/obj-c++.dg/class-extension-4.mm
! cb1800b1558e82907bdd84811bcbfe34  gcc/testsuite/obj-c++.dg/class-protocol-1.mm
! a5daa4cd352a54ca8dddf5d18efb629b  gcc/testsuite/obj-c++.dg/comp-types-1.mm
! 1a571d256b68d1e25bcfea44eca5a489  gcc/testsuite/obj-c++.dg/comp-types-10.mm
  35118720b3d51cd980c0e3993fd8426e  gcc/testsuite/obj-c++.dg/comp-types-11.mm
  5d18bb90f0db812ad81a4298d8ef5f2f  gcc/testsuite/obj-c++.dg/comp-types-12.mm
  344369cce3954847df9ffa5ca88d1112  gcc/testsuite/obj-c++.dg/comp-types-13.mm
! eadf0278caf93cd03f14c44e63ca99ab  gcc/testsuite/obj-c++.dg/comp-types-2.mm
! 5c0756aaa37860c8ae5359b42b237f32  gcc/testsuite/obj-c++.dg/comp-types-3.mm
  e6c2549d74aa54ce001fb39b8bd77572  gcc/testsuite/obj-c++.dg/comp-types-4.mm
! f2fc36166a21e21a4a4bc94e5da78028  gcc/testsuite/obj-c++.dg/comp-types-5.mm
! 894aeb71c71db100059dd6acfd69f3cc  gcc/testsuite/obj-c++.dg/comp-types-6.mm
! ac0b35dcfcf72480c040349b2b8a874b  gcc/testsuite/obj-c++.dg/comp-types-7.mm
! 93a9e944505470365fc5fd7f4696bb30  gcc/testsuite/obj-c++.dg/comp-types-8.mm
  35ac1f0068533d0098d25eae3c59d4b4  gcc/testsuite/obj-c++.dg/comp-types-9.mm
  f6a135d669303e10360f4a9e17664aa7  gcc/testsuite/obj-c++.dg/cxx-class-1.mm
  7a5a474af4c3ae26683ee29295314d7b  gcc/testsuite/obj-c++.dg/cxx-ivars-1.mm
--- 84078,84205 ----
  5542ebc8aa1b198ad40aeeee64259afb  gcc/testsuite/jit.dg/test-version.c
  96ac85af1dde837e4f4e2444d083cf22  gcc/testsuite/jit.dg/test-volatile.c
  6477c66fcebff4d502d26e2d247251ce  gcc/testsuite/jit.dg/verify-dynamic-library.c
! cc999fc27872b581322563f70f42788f  gcc/testsuite/lib/asan-dg.exp
! 483d65b2fafe6f111f4efccfff01eddd  gcc/testsuite/lib/atomic-dg.exp
! 23f70cb48e57944a6d19e48539f62725  gcc/testsuite/lib/brig-dg.exp
! 940997b6e696d711dbf04ef0fbac07f5  gcc/testsuite/lib/brig.exp
! abdd673cc5da0c8214c734eb6ad9302f  gcc/testsuite/lib/c-compat.exp
! 147337a8e37cd07d5908f9517ceacd0c  gcc/testsuite/lib/c-torture.exp
! e18895c28270bcec3817a7bbeb3fdbf6  gcc/testsuite/lib/clearcap.exp
! 0d09631dc85902bbc64e7d4189092aea  gcc/testsuite/lib/compat.exp
! cf4a44031f74dab102437a174e225c3d  gcc/testsuite/lib/copy-file.exp
! 3304b1c74485a899a7eb59c81e0bab45  gcc/testsuite/lib/dejapatches.exp
! 1c2b16d971751bf29e39f386e5974f54  gcc/testsuite/lib/dg-pch.exp
! 4627cb8ddaa02232d4164b55bd13f62f  gcc/testsuite/lib/file-format.exp
! 2a64a21deb050948a88c246de33c0021  gcc/testsuite/lib/fortran-modules.exp
! 6fb22541f6658769416c6353f89113ed  gcc/testsuite/lib/fortran-torture.exp
! b849fdeeb8ec7cee782e2cd57ca685e0  gcc/testsuite/lib/g++-dg.exp
! 10a3c89e5f3965627e1805ade8679843  gcc/testsuite/lib/g++.exp
! 7aca6382ec2d451baf6bf4c67f6966f6  gcc/testsuite/lib/gcc-defs.exp
! 8b7f96485bb0e97962f1c78a08e01439  gcc/testsuite/lib/gcc-dg.exp
! 85196ac94ccd30343d2dcc8348f7d280  gcc/testsuite/lib/gcc-gdb-test.exp
! ae8112dd120018b90a6296084b87b69d  gcc/testsuite/lib/gcc-simulate-thread.exp
! 078a96701616eaf66381892b77a1413a  gcc/testsuite/lib/gcc.exp
! db2fb5558675e4e70d13a4b6edc246df  gcc/testsuite/lib/gcov.exp
! 53ec81cadc538545c9894be44cf0dc94  gcc/testsuite/lib/gdc-dg.exp
! a80823c1dc8bd167a332d44b23b47cb1  gcc/testsuite/lib/gdc-utils.exp
! 25e7742a9cc8a98d24b9a0bfd33c9654  gcc/testsuite/lib/gdc.exp
! 2dc3988fc2cc879c5b3cc8e7f51bdba5  gcc/testsuite/lib/gfortran-dg.exp
! 3398ed25a59faf94e3424c0141cf0088  gcc/testsuite/lib/gfortran.exp
! a5bcad3066c462ec416589c17cfaa3fe  gcc/testsuite/lib/gnat-dg.exp
! 170f4397310393ffcf32098613e76519  gcc/testsuite/lib/gnat.exp
! d56265e2a1a748cf215dbdfa2b2045c0  gcc/testsuite/lib/go-dg.exp
! 59c449d9856c1d9abb57c3c96fccf9eb  gcc/testsuite/lib/go-torture.exp
! 4b1e185024a94be744054157b9fa0d8e  gcc/testsuite/lib/go.exp
! d2c996c0f1e4f52698d0d195e6ac13b8  gcc/testsuite/lib/hwasan-dg.exp
! 642d0328ce602fa6ea3a213535de4da0  gcc/testsuite/lib/lto.exp
! 68f849efff01c1f0a1b6f6a334fd4cea  gcc/testsuite/lib/mike-g++.exp
! f4e309b118df6bc1f55a0b5ed4e7807d  gcc/testsuite/lib/mike-gcc.exp
! dfa03e4b5bdd1b947f7c23113f25ef34  gcc/testsuite/lib/multiline.exp
! 4ec25704b1ae42aa7da653cca66159df  gcc/testsuite/lib/obj-c++-dg.exp
! 6753fc1fd1013b0fd2781cb9bd198c77  gcc/testsuite/lib/obj-c++.exp
! 4aee1266d1408aa049a055d7bafb63d8  gcc/testsuite/lib/objc-dg.exp
! 54d731506c3dc7e2798644b773b64fed  gcc/testsuite/lib/objc-torture.exp
! 973c68427d189bf6bf20d69dfab94037  gcc/testsuite/lib/objc.exp
! cc525046146fcc22f0ed46eaef6d6c8b  gcc/testsuite/lib/options.exp
! 4356077d58e9164b4a0f859041ea57c9  gcc/testsuite/lib/plugin-support.exp
! d21b42e68cda8f47745d2babefc2107a  gcc/testsuite/lib/profopt.exp
! 3bf5d4eb2d9617844cabefebef3d2218  gcc/testsuite/lib/prune.exp
! 9b94dfbb5d5e167bb2e2390303de9665  gcc/testsuite/lib/scanasm.exp
! 77b098872b985d9089c10ba029c2355b  gcc/testsuite/lib/scandump.exp
! 608b5374b252be291023c223f9a33dc9  gcc/testsuite/lib/scanipa.exp
! a7260a8e693d78f83289dd2b98a495df  gcc/testsuite/lib/scanlang.exp
! a669eb0cf2144e6e71fcd4acf47fbc44  gcc/testsuite/lib/scanltranstree.exp
! 0d8587eb4126263ae340f9b4cc807c16  gcc/testsuite/lib/scanoffload.exp
! 841bb489c3bb049feab4bc28522ccfdd  gcc/testsuite/lib/scanoffloadrtl.exp
! 75ed16bdc2bb9e31f0356a2f6214f542  gcc/testsuite/lib/scanoffloadtree.exp
! bf57f760d7e706b8742823fbb639ae4c  gcc/testsuite/lib/scanrtl.exp
! 4ea97fbdb505ffbf385fcd2759f80b87  gcc/testsuite/lib/scantree.exp
! ee11afd0bed136fe5f9f4b0b9347fbc1  gcc/testsuite/lib/scanwpaipa.exp
! e85eac7191a9c0639c23f2d8cb32aa3d  gcc/testsuite/lib/target-libpath.exp
! 29911997572e845d73d87588342bbc60  gcc/testsuite/lib/target-supports-dg.exp
! 14c49d67501b98f3a61a27b676059e61  gcc/testsuite/lib/target-supports.exp
! 3726aa6af2e0ec126a1f3165db93c458  gcc/testsuite/lib/target-utils.exp
! 7f2401885e3237bcc8a97ce8be301082  gcc/testsuite/lib/timeout-dg.exp
! 3159102522e362ff5b08ae959de2db09  gcc/testsuite/lib/timeout.exp
! f53d67b1187e2040417964e16e5485c6  gcc/testsuite/lib/torture-options.exp
! f90d899e0ba451a267601efe3d338638  gcc/testsuite/lib/tsan-dg.exp
! 7d5f022d7e12b855906049f8ce23899e  gcc/testsuite/lib/ubsan-dg.exp
! 7d97a343afed41369bc367dfcaee6b2e  gcc/testsuite/lib/wrapper.exp
  83447103f758c2c8ec2044c84069e212  gcc/testsuite/obj-c++.dg/SEL-typedef.mm
  55160ccf08a9b1444b32deb900dac569  gcc/testsuite/obj-c++.dg/Wimplicit-fallthrough-1.mm
  84caaa988ddff2a3ef9a3c9c9bfe6fbf  gcc/testsuite/obj-c++.dg/at-class-1.mm
! 8d817e8679a440e09ee5f0099d5228fa  gcc/testsuite/obj-c++.dg/attributes/attributes.exp
  3ae67bbd6c30272de285ecf52bbe29c4  gcc/testsuite/obj-c++.dg/attributes/categ-attribute-1.mm
  bb7c92f88fdb2a6c371fe4b187f0cebd  gcc/testsuite/obj-c++.dg/attributes/categ-attribute-2.mm
! ca1ca55dc3bc194afaeccb9c90623e9e  gcc/testsuite/obj-c++.dg/attributes/class-attribute-1.mm
! 81206bc5bcf28f0d47ae8cd32d7a5f80  gcc/testsuite/obj-c++.dg/attributes/class-attribute-2.mm
! 65c107295231fe8642fb22bfa93702dc  gcc/testsuite/obj-c++.dg/attributes/class-attribute-3.mm
  4030a32519e33d672a532942ab7bca14  gcc/testsuite/obj-c++.dg/attributes/invalid-attribute-1.mm
  65e5fefaacab095415b0e049ace9e98f  gcc/testsuite/obj-c++.dg/attributes/method-attribute-1.mm
  e7f36ede3524b56b226f26f29dca005b  gcc/testsuite/obj-c++.dg/attributes/method-attribute-2.mm
  4bd35ba4e25297ef11a14dab4bd20f6e  gcc/testsuite/obj-c++.dg/attributes/method-attribute-3.mm
! 424b89cd98f516e4bdcc63f9edec07fd  gcc/testsuite/obj-c++.dg/attributes/method-deprecated-1.mm
! 9cededa924415e70b4b6cda07609d811  gcc/testsuite/obj-c++.dg/attributes/method-deprecated-2.mm
! 81789aab87141b59f094180e5761899f  gcc/testsuite/obj-c++.dg/attributes/method-deprecated-3.mm
! 731931f9d1c0b4283b9ac894b73ef26f  gcc/testsuite/obj-c++.dg/attributes/method-format-1.mm
! d195b2aa0a847fabfad8da048b4364c2  gcc/testsuite/obj-c++.dg/attributes/method-nonnull-1.mm
! 54c2f3900493c7db843ca3de8bbe726c  gcc/testsuite/obj-c++.dg/attributes/method-noreturn-1.mm
! 9c977bad43e25e2f540ae39513012189  gcc/testsuite/obj-c++.dg/attributes/method-sentinel-1.mm
! 8182207247f88c396a0b19377866b6cf  gcc/testsuite/obj-c++.dg/attributes/nsobject-01.mm
! 75f5c9b4943c39adeed5ad55524d0ec6  gcc/testsuite/obj-c++.dg/attributes/nullability-00.mm
! 42ca169991e605598f22ca7a7714f5b7  gcc/testsuite/obj-c++.dg/attributes/parameter-attribute-1.mm
! 73f32c8ff0a73a9fe6f7d464646a0c6c  gcc/testsuite/obj-c++.dg/attributes/parameter-attribute-2.mm
! 6aa847feb521308f30729d3bed4c28fe  gcc/testsuite/obj-c++.dg/attributes/proto-attribute-1.mm
  8133c571422046c63b8878a396693e07  gcc/testsuite/obj-c++.dg/attributes/proto-attribute-2.mm
! ecdfdec314dd36d3781e89f7fdb7b6fa  gcc/testsuite/obj-c++.dg/attributes/proto-attribute-3.mm
! 8096d8635b18ce32c223dadd8fb5a053  gcc/testsuite/obj-c++.dg/attributes/proto-attribute-4.mm
! a231b3127c3f9f5e943131676f28b910  gcc/testsuite/obj-c++.dg/attributes/root-class-01.mm
! 13ddbcf90cd317a0f3ce2a6c5f8462cf  gcc/testsuite/obj-c++.dg/attributes/unused-parameter-1.mm
  68bcba6df58945a6a350cb84c428c23e  gcc/testsuite/obj-c++.dg/bad-forward-decl.mm
! 2d28bd9d16631cfc088313188b45594d  gcc/testsuite/obj-c++.dg/bad-receiver-type.mm
  7de56313f5a271649dd6fb775354dce8  gcc/testsuite/obj-c++.dg/basic.mm
  e33ba6b3efe6a2b93315b7aadc0de99f  gcc/testsuite/obj-c++.dg/bitfield-1.mm
  6e457b5b15d0d7c7d8d56e298302d945  gcc/testsuite/obj-c++.dg/bitfield-2.mm
! 93ed486c6960be9ad8dd6690d450a82d  gcc/testsuite/obj-c++.dg/bitfield-3.mm
  05fa3322109bc30efaf8f6f527875507  gcc/testsuite/obj-c++.dg/bitfield-4.mm
! 909b6bfcff712d45fcb6feb8764fad3f  gcc/testsuite/obj-c++.dg/bitfield-5.mm
! 48be5ea92fda03121214a354ea07ba71  gcc/testsuite/obj-c++.dg/class-extension-1.mm
! 5444dea6680f4bb47ba93f32453405eb  gcc/testsuite/obj-c++.dg/class-extension-2.mm
! f7b935e180443720d117790f830f5382  gcc/testsuite/obj-c++.dg/class-extension-3.mm
! 5e992721266823a9047653f8c878a7f7  gcc/testsuite/obj-c++.dg/class-extension-4.mm
! 26ce1fb3e6ded76a90b32eb6b362327a  gcc/testsuite/obj-c++.dg/class-protocol-1.mm
! b3c089aaadc5d236570b1bd10bdfd897  gcc/testsuite/obj-c++.dg/comp-types-1.mm
! 7d908b90466ff413369ec81e7949de98  gcc/testsuite/obj-c++.dg/comp-types-10.mm
  35118720b3d51cd980c0e3993fd8426e  gcc/testsuite/obj-c++.dg/comp-types-11.mm
  5d18bb90f0db812ad81a4298d8ef5f2f  gcc/testsuite/obj-c++.dg/comp-types-12.mm
  344369cce3954847df9ffa5ca88d1112  gcc/testsuite/obj-c++.dg/comp-types-13.mm
! ce8b72020aa690604f2db28004d2077e  gcc/testsuite/obj-c++.dg/comp-types-2.mm
! de6475033a0cb77ef217770f84b63e67  gcc/testsuite/obj-c++.dg/comp-types-3.mm
  e6c2549d74aa54ce001fb39b8bd77572  gcc/testsuite/obj-c++.dg/comp-types-4.mm
! a5a19934fc7c58ec8c046fe943bcc7b2  gcc/testsuite/obj-c++.dg/comp-types-5.mm
! 95a445d517342c6413510ac0e93e742d  gcc/testsuite/obj-c++.dg/comp-types-6.mm
! 525b9079091173336ddc54316ea64025  gcc/testsuite/obj-c++.dg/comp-types-7.mm
! 7895b0e954c7662af4e04354204c45be  gcc/testsuite/obj-c++.dg/comp-types-8.mm
  35ac1f0068533d0098d25eae3c59d4b4  gcc/testsuite/obj-c++.dg/comp-types-9.mm
  f6a135d669303e10360f4a9e17664aa7  gcc/testsuite/obj-c++.dg/cxx-class-1.mm
  7a5a474af4c3ae26683ee29295314d7b  gcc/testsuite/obj-c++.dg/cxx-ivars-1.mm
*************** f6a135d669303e10360f4a9e17664aa7  gcc/te
*** 78291,78304 ****
  74ea4974ad0f897a229d4bd99f47da95  gcc/testsuite/obj-c++.dg/cxx-scope-2.mm
  4d63d224c8c642188a58882a0609e394  gcc/testsuite/obj-c++.dg/defs.mm
  e40d4b7e1e14ee92eea55e290a15be06  gcc/testsuite/obj-c++.dg/demangle-1.mm
! a8b37269f50a182ecbfdb84e3054c9df  gcc/testsuite/obj-c++.dg/demangle-2.mm
! c3631f0b5e6d552bec75c75cf5cbe0dd  gcc/testsuite/obj-c++.dg/demangle-3.mm
! a11ab2f2e92d38ec637d8d586d49792e  gcc/testsuite/obj-c++.dg/dg.exp
! 4491984172a7df82c5cf29ec107cd3d4  gcc/testsuite/obj-c++.dg/duplicate-class-1.mm
  74965fa22cbb6849912eabcb1f43b6e8  gcc/testsuite/obj-c++.dg/dwarf-2.mm
  ff09985655f304be699aaf3b8ac7d0c6  gcc/testsuite/obj-c++.dg/empty-private-1.mm
! ae6cf165075aa5d7db18a98e7893869a  gcc/testsuite/obj-c++.dg/encode-1-next.mm
! 340171255cd130d10be8abd7b0b319e0  gcc/testsuite/obj-c++.dg/encode-1.mm
  7d7e6fc99c392bf563fae8bf357cc835  gcc/testsuite/obj-c++.dg/encode-10.mm
  4067b5ccc3ec6ec182e59982034a88a4  gcc/testsuite/obj-c++.dg/encode-2.mm
  c4e0785b4aee1c468f74005c33931f44  gcc/testsuite/obj-c++.dg/encode-3.mm
--- 84209,84222 ----
  74ea4974ad0f897a229d4bd99f47da95  gcc/testsuite/obj-c++.dg/cxx-scope-2.mm
  4d63d224c8c642188a58882a0609e394  gcc/testsuite/obj-c++.dg/defs.mm
  e40d4b7e1e14ee92eea55e290a15be06  gcc/testsuite/obj-c++.dg/demangle-1.mm
! 2b7cf81f9fd7c2f9558b6570f0835806  gcc/testsuite/obj-c++.dg/demangle-2.mm
! 1894a992a842473ea3446c689c55dd1d  gcc/testsuite/obj-c++.dg/demangle-3.mm
! 8b4cea160f3370193817025f4ab0c20e  gcc/testsuite/obj-c++.dg/dg.exp
! df8e1651432977636bf9ca64823f6609  gcc/testsuite/obj-c++.dg/duplicate-class-1.mm
  74965fa22cbb6849912eabcb1f43b6e8  gcc/testsuite/obj-c++.dg/dwarf-2.mm
  ff09985655f304be699aaf3b8ac7d0c6  gcc/testsuite/obj-c++.dg/empty-private-1.mm
! 64ae66c53d490094dd3c153f9c4a9c75  gcc/testsuite/obj-c++.dg/encode-1-next.mm
! 575f87323105c855ece3eec6c673cfb0  gcc/testsuite/obj-c++.dg/encode-1.mm
  7d7e6fc99c392bf563fae8bf357cc835  gcc/testsuite/obj-c++.dg/encode-10.mm
  4067b5ccc3ec6ec182e59982034a88a4  gcc/testsuite/obj-c++.dg/encode-2.mm
  c4e0785b4aee1c468f74005c33931f44  gcc/testsuite/obj-c++.dg/encode-3.mm
*************** e8f3db69a8847b70c8bc969edd78dbb2  gcc/te
*** 78309,78352 ****
  7a1184e853bc44d526f960ab5978e148  gcc/testsuite/obj-c++.dg/encode-8.mm
  e01e96d007a042cff730ba43b17850f5  gcc/testsuite/obj-c++.dg/encode-9.mm
  e5b9f9a44ce01382be2feb246ccb5ad4  gcc/testsuite/obj-c++.dg/enhanced-proto-1.mm
! 378058844933d08bf1ab24d8978e4248  gcc/testsuite/obj-c++.dg/enhanced-proto-2.mm
  3f2a93d293bef7fad64048537a3de594  gcc/testsuite/obj-c++.dg/except-1.mm
! 873359db94a30e2e7b83394a75ec386f  gcc/testsuite/obj-c++.dg/exceptions-1.mm
  75c69779710528ad6eb5c5a4e15d704d  gcc/testsuite/obj-c++.dg/exceptions-2.mm
! 1c16cf1e6362532d736c5445027d29fe  gcc/testsuite/obj-c++.dg/exceptions-3.mm
! 7e6141dd382d9ed74971a03c7bdafc07  gcc/testsuite/obj-c++.dg/exceptions-4.mm
! 735c9edd4e6564928ce5e012b6e798ae  gcc/testsuite/obj-c++.dg/exceptions-5.mm
  1b780eb4d9705d8bb7f2c05f76733e8e  gcc/testsuite/obj-c++.dg/exceptions-6.mm
  a6aad066984a23da19fb3353abeb2c33  gcc/testsuite/obj-c++.dg/exceptions-7.mm
! f4087f18e0094d7a210e142256c41875  gcc/testsuite/obj-c++.dg/extern-c-1.mm
  e7fb320f22d720d1153b22a297d68332  gcc/testsuite/obj-c++.dg/extra-semi.mm
  786449757ab14b7d986e3de7206f63e1  gcc/testsuite/obj-c++.dg/fix-and-continue-2.mm
  05f0a6fee2cbb6ccf6ef810ac30dc16c  gcc/testsuite/obj-c++.dg/fobjc-exceptions-1.mm
  8510ca985bbfc3e0f568c864befdca23  gcc/testsuite/obj-c++.dg/fobjc-exceptions-2.mm
  e8affe34d309c5c4b9875f4964f32791  gcc/testsuite/obj-c++.dg/fobjc-exceptions-3.mm
! c933197e638db636698c9e6bd22bfaeb  gcc/testsuite/obj-c++.dg/fobjc-std-1.mm
  c691df5456d253fa27d1d04f4f568827  gcc/testsuite/obj-c++.dg/fsf-nsstring-format-1.mm
  a333adf32bc5f8f653cefef562f5ce65  gcc/testsuite/obj-c++.dg/fsf-package-0.m
! 6acf30d1985d6c7c5a7e2a8558bf3dd9  gcc/testsuite/obj-c++.dg/gnu-api-2-class-meta.mm
! 8e0d5214322bbd4bb43b843c348dd075  gcc/testsuite/obj-c++.dg/gnu-api-2-class.mm
! d17a736222e245bfc6ed9bb3710fa5a8  gcc/testsuite/obj-c++.dg/gnu-api-2-ivar.mm
! 4841964b64bc480d2267801bb4e72db5  gcc/testsuite/obj-c++.dg/gnu-api-2-method.mm
! 1355cef61e897c7d6f3463a1ef498cfb  gcc/testsuite/obj-c++.dg/gnu-api-2-objc.mm
! 0ee2a9862e8556c1378471bc14d12cf6  gcc/testsuite/obj-c++.dg/gnu-api-2-objc_msg_lookup.mm
! aef1b4ab2dd7332b8c01955a9d62d9ee  gcc/testsuite/obj-c++.dg/gnu-api-2-object.mm
! 34c19e86d6b6092aa5be90d9bd8cd112  gcc/testsuite/obj-c++.dg/gnu-api-2-property.mm
! b93884370065d3c94f7fc005e43f7756  gcc/testsuite/obj-c++.dg/gnu-api-2-protocol.mm
! 9c0913ade93b1a7455517c6f1aa08cdd  gcc/testsuite/obj-c++.dg/gnu-api-2-resolve-method.mm
! 0e2fbd215c0112537280557362b606df  gcc/testsuite/obj-c++.dg/gnu-api-2-sel.mm
  75cc55de841b4de6d06a46e13f5f7bfe  gcc/testsuite/obj-c++.dg/gnu-runtime-1.mm
  003f433c2c1cd9b8db81e61ca94d311b  gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm
  000a9198807c2e4ce1ba284e1a6e79ed  gcc/testsuite/obj-c++.dg/gnu-runtime-3.mm
! a19c2dad4a197a57d5e1bd9cd0135705  gcc/testsuite/obj-c++.dg/invalid-method-2.mm
  9c81b01209a656cc36ac861574867c96  gcc/testsuite/obj-c++.dg/invalid-type-1.mm
  9aa795d86a9b5053208440819dc1082c  gcc/testsuite/obj-c++.dg/isa-field-1.mm
! de4ec57b2d55fc5567fd5f9b20445ea0  gcc/testsuite/obj-c++.dg/ivar-invalid-type-1.mm
  e9e1c689bbfe17a7c0ca833caf159485  gcc/testsuite/obj-c++.dg/ivar-list-semi.mm
! 866b783936346966eabc68e8d5f4e78f  gcc/testsuite/obj-c++.dg/ivar-problem-1.mm
  58c0aa2349a4dc4c294203c084e34002  gcc/testsuite/obj-c++.dg/keywords-1.mm
  8178266d25f297eafe4c48b583a26fad  gcc/testsuite/obj-c++.dg/keywords-2.mm
  3e423144cf41116b23d661e887ed0b18  gcc/testsuite/obj-c++.dg/lambda-0.mm
--- 84227,84270 ----
  7a1184e853bc44d526f960ab5978e148  gcc/testsuite/obj-c++.dg/encode-8.mm
  e01e96d007a042cff730ba43b17850f5  gcc/testsuite/obj-c++.dg/encode-9.mm
  e5b9f9a44ce01382be2feb246ccb5ad4  gcc/testsuite/obj-c++.dg/enhanced-proto-1.mm
! 407cf4a13a526188246e3f874ce7ac48  gcc/testsuite/obj-c++.dg/enhanced-proto-2.mm
  3f2a93d293bef7fad64048537a3de594  gcc/testsuite/obj-c++.dg/except-1.mm
! 9b7dbb53a1521f0dba0bac968d2366a4  gcc/testsuite/obj-c++.dg/exceptions-1.mm
  75c69779710528ad6eb5c5a4e15d704d  gcc/testsuite/obj-c++.dg/exceptions-2.mm
! 61ad959bfd2af3a7229fd3007bbbad4d  gcc/testsuite/obj-c++.dg/exceptions-3.mm
! 29974ab84afb1070ecafab3397b6737f  gcc/testsuite/obj-c++.dg/exceptions-4.mm
! e823b71ffc5adeccdc463015d5d92bcf  gcc/testsuite/obj-c++.dg/exceptions-5.mm
  1b780eb4d9705d8bb7f2c05f76733e8e  gcc/testsuite/obj-c++.dg/exceptions-6.mm
  a6aad066984a23da19fb3353abeb2c33  gcc/testsuite/obj-c++.dg/exceptions-7.mm
! 4badf47503df73cc6045dcf63685bcfc  gcc/testsuite/obj-c++.dg/extern-c-1.mm
  e7fb320f22d720d1153b22a297d68332  gcc/testsuite/obj-c++.dg/extra-semi.mm
  786449757ab14b7d986e3de7206f63e1  gcc/testsuite/obj-c++.dg/fix-and-continue-2.mm
  05f0a6fee2cbb6ccf6ef810ac30dc16c  gcc/testsuite/obj-c++.dg/fobjc-exceptions-1.mm
  8510ca985bbfc3e0f568c864befdca23  gcc/testsuite/obj-c++.dg/fobjc-exceptions-2.mm
  e8affe34d309c5c4b9875f4964f32791  gcc/testsuite/obj-c++.dg/fobjc-exceptions-3.mm
! 1bd078773cbef24bd881753cb113a272  gcc/testsuite/obj-c++.dg/fobjc-std-1.mm
  c691df5456d253fa27d1d04f4f568827  gcc/testsuite/obj-c++.dg/fsf-nsstring-format-1.mm
  a333adf32bc5f8f653cefef562f5ce65  gcc/testsuite/obj-c++.dg/fsf-package-0.m
! e5ca80914bd701f8c4f658c195c44516  gcc/testsuite/obj-c++.dg/gnu-api-2-class-meta.mm
! 859048d5774b8899367e422403d1f2b7  gcc/testsuite/obj-c++.dg/gnu-api-2-class.mm
! ee08f73b64b83c17c2573933b0b289fa  gcc/testsuite/obj-c++.dg/gnu-api-2-ivar.mm
! 310c13b203478ecf0e5686e71fde533a  gcc/testsuite/obj-c++.dg/gnu-api-2-method.mm
! 1822f3a3476654dca2c65563a1921d86  gcc/testsuite/obj-c++.dg/gnu-api-2-objc.mm
! 88e529632860242e1b2e52d294d85d4a  gcc/testsuite/obj-c++.dg/gnu-api-2-objc_msg_lookup.mm
! 6f89b9184ad8b8ebd40b3cec1cd25b8f  gcc/testsuite/obj-c++.dg/gnu-api-2-object.mm
! 800fbfb4fe77cd8f0da28231811e4983  gcc/testsuite/obj-c++.dg/gnu-api-2-property.mm
! b5c3b6367242ce972470ce6e54ebe597  gcc/testsuite/obj-c++.dg/gnu-api-2-protocol.mm
! c72616c735c024b428a9d4ab6deba831  gcc/testsuite/obj-c++.dg/gnu-api-2-resolve-method.mm
! d63212a2005a351146de7c5fea07a9f5  gcc/testsuite/obj-c++.dg/gnu-api-2-sel.mm
  75cc55de841b4de6d06a46e13f5f7bfe  gcc/testsuite/obj-c++.dg/gnu-runtime-1.mm
  003f433c2c1cd9b8db81e61ca94d311b  gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm
  000a9198807c2e4ce1ba284e1a6e79ed  gcc/testsuite/obj-c++.dg/gnu-runtime-3.mm
! 7c48c7f2a3dad4cf8c991c6d780ecc5d  gcc/testsuite/obj-c++.dg/invalid-method-2.mm
  9c81b01209a656cc36ac861574867c96  gcc/testsuite/obj-c++.dg/invalid-type-1.mm
  9aa795d86a9b5053208440819dc1082c  gcc/testsuite/obj-c++.dg/isa-field-1.mm
! c20dca6efec23000aff825455842f977  gcc/testsuite/obj-c++.dg/ivar-invalid-type-1.mm
  e9e1c689bbfe17a7c0ca833caf159485  gcc/testsuite/obj-c++.dg/ivar-list-semi.mm
! 5252de57143e545d1eedb7bd0c12d35e  gcc/testsuite/obj-c++.dg/ivar-problem-1.mm
  58c0aa2349a4dc4c294203c084e34002  gcc/testsuite/obj-c++.dg/keywords-1.mm
  8178266d25f297eafe4c48b583a26fad  gcc/testsuite/obj-c++.dg/keywords-2.mm
  3e423144cf41116b23d661e887ed0b18  gcc/testsuite/obj-c++.dg/lambda-0.mm
*************** e2f09d3bd8c76cb2cc3877eabe1635a2  gcc/te
*** 78355,78391 ****
  e0ee2e0ef377f377a4b6c0f76eb28be4  gcc/testsuite/obj-c++.dg/local-decl-1.mm
  237edc221dc0cb73012b6f771c679099  gcc/testsuite/obj-c++.dg/lookup-1.mm
  a18e5d5b1c772fda466670d9a820b3af  gcc/testsuite/obj-c++.dg/lookup-2.mm
! e9b9696a2d6213eb2746c16fdb1522c8  gcc/testsuite/obj-c++.dg/lto/lto.exp
! a4fafaaca8b4ffbde57040a179508896  gcc/testsuite/obj-c++.dg/lto/trivial-1_0.mm
! 4d5d8b6477be6dbfb8f04b2e9bb4e034  gcc/testsuite/obj-c++.dg/method-1.mm
  19f8317903ba8bee4bf9fa945f98478d  gcc/testsuite/obj-c++.dg/method-10.mm
  6eecfde212363a6364af0934a93626ab  gcc/testsuite/obj-c++.dg/method-11.mm
! 8e8dd1bfb71f726c9156ba544a6ad6f0  gcc/testsuite/obj-c++.dg/method-12.mm
  f8aeea9653ae2c13b8486bea666a5e71  gcc/testsuite/obj-c++.dg/method-13.mm
  172164daa5b2292983d23e0e5d5a94eb  gcc/testsuite/obj-c++.dg/method-14.mm
  ce4b0bdda2827c892e1c96c7b66d459e  gcc/testsuite/obj-c++.dg/method-15.mm
  d5144d082c3ad26c3de112edcb4faed9  gcc/testsuite/obj-c++.dg/method-16.mm
  c6a3118297883f488d8e82989fa454c4  gcc/testsuite/obj-c++.dg/method-17.mm
! 956a4f445f1949a644580e9b460afe4b  gcc/testsuite/obj-c++.dg/method-18.mm
! 85e2e9dbc23dfbfec1bfec3d3030c7f8  gcc/testsuite/obj-c++.dg/method-19.mm
  3331576d5d71df2f93f2e9488af42735  gcc/testsuite/obj-c++.dg/method-2.mm
! c0e3440d87797991072d80bcf576ef1f  gcc/testsuite/obj-c++.dg/method-20.mm
  c577433e0260412f1210a5583359902c  gcc/testsuite/obj-c++.dg/method-21.mm
  b48f5ebd0681213adfef4deb609792df  gcc/testsuite/obj-c++.dg/method-22.mm
  9e6adbb2b0984ed3f038d67d74ecb186  gcc/testsuite/obj-c++.dg/method-23.mm
! 281137caa8036d7e4160c7b9c449b6e4  gcc/testsuite/obj-c++.dg/method-3.mm
! cfb7a57c53dd613e42b0fc2772573482  gcc/testsuite/obj-c++.dg/method-4.mm
! 8dca1a88a72c3e78b91a92f1aee5db48  gcc/testsuite/obj-c++.dg/method-5.mm
  0cdf0cad4eb17969d55338761eb11a5f  gcc/testsuite/obj-c++.dg/method-6.mm
  9162250b63976fb7a2647d3a69313bc6  gcc/testsuite/obj-c++.dg/method-7.mm
! 319d833f12b68a76c5e73bac4a9c1f6c  gcc/testsuite/obj-c++.dg/method-8.mm
! 1e675cad09cc9762c98b9799ce5f28e7  gcc/testsuite/obj-c++.dg/method-9.mm
  2a7616b9c1cd0cadb5e83a9bfa917a8e  gcc/testsuite/obj-c++.dg/method-conflict-1.mm
  a14143ecfb8bf86238a675e92e7ad689  gcc/testsuite/obj-c++.dg/method-conflict-2.mm
  319baa411c3dcbe2024607771bf19da2  gcc/testsuite/obj-c++.dg/method-conflict-3.mm
  be1b2bdd5e5de6dbbff2108c424ce790  gcc/testsuite/obj-c++.dg/method-conflict-4.mm
  73bd7d1b1242eab391041c7bce7f8854  gcc/testsuite/obj-c++.dg/method-lookup-1.mm
! e2f9836245435bf336d8d22b6b8853af  gcc/testsuite/obj-c++.dg/method-namespace-1.mm
  b097f7221586f272ce5ed900f142c070  gcc/testsuite/obj-c++.dg/method-namespace-2.mm
  b6a4bff612a08ec461838ac1b3bd23f1  gcc/testsuite/obj-c++.dg/msg-in-protocol.mm
  3c8440534013c6995bc91253f462fa43  gcc/testsuite/obj-c++.dg/naming-1.mm
--- 84273,84309 ----
  e0ee2e0ef377f377a4b6c0f76eb28be4  gcc/testsuite/obj-c++.dg/local-decl-1.mm
  237edc221dc0cb73012b6f771c679099  gcc/testsuite/obj-c++.dg/lookup-1.mm
  a18e5d5b1c772fda466670d9a820b3af  gcc/testsuite/obj-c++.dg/lookup-2.mm
! 84b66e2af158bee069baf6fce3936cb2  gcc/testsuite/obj-c++.dg/lto/lto.exp
! ed2d21312e666f3bbed404bcac3dc94a  gcc/testsuite/obj-c++.dg/lto/trivial-1_0.mm
! 50dff087071e306c9a5b45faaf24d2e9  gcc/testsuite/obj-c++.dg/method-1.mm
  19f8317903ba8bee4bf9fa945f98478d  gcc/testsuite/obj-c++.dg/method-10.mm
  6eecfde212363a6364af0934a93626ab  gcc/testsuite/obj-c++.dg/method-11.mm
! 2d302d6c3847f277044ca45c96d8bc85  gcc/testsuite/obj-c++.dg/method-12.mm
  f8aeea9653ae2c13b8486bea666a5e71  gcc/testsuite/obj-c++.dg/method-13.mm
  172164daa5b2292983d23e0e5d5a94eb  gcc/testsuite/obj-c++.dg/method-14.mm
  ce4b0bdda2827c892e1c96c7b66d459e  gcc/testsuite/obj-c++.dg/method-15.mm
  d5144d082c3ad26c3de112edcb4faed9  gcc/testsuite/obj-c++.dg/method-16.mm
  c6a3118297883f488d8e82989fa454c4  gcc/testsuite/obj-c++.dg/method-17.mm
! 5dbdb186beb1464184b0e2f61da29d7c  gcc/testsuite/obj-c++.dg/method-18.mm
! d30fe11d240797f40d72bc7aa548583b  gcc/testsuite/obj-c++.dg/method-19.mm
  3331576d5d71df2f93f2e9488af42735  gcc/testsuite/obj-c++.dg/method-2.mm
! 80bec573d054ff8dcfa46b674493954b  gcc/testsuite/obj-c++.dg/method-20.mm
  c577433e0260412f1210a5583359902c  gcc/testsuite/obj-c++.dg/method-21.mm
  b48f5ebd0681213adfef4deb609792df  gcc/testsuite/obj-c++.dg/method-22.mm
  9e6adbb2b0984ed3f038d67d74ecb186  gcc/testsuite/obj-c++.dg/method-23.mm
! 31032cde627821f43e702120711be6dd  gcc/testsuite/obj-c++.dg/method-3.mm
! 37533ec918b55c90dc06126dfbe189b3  gcc/testsuite/obj-c++.dg/method-4.mm
! c35a069ee7caf398e5e0cb4a14f4e5b1  gcc/testsuite/obj-c++.dg/method-5.mm
  0cdf0cad4eb17969d55338761eb11a5f  gcc/testsuite/obj-c++.dg/method-6.mm
  9162250b63976fb7a2647d3a69313bc6  gcc/testsuite/obj-c++.dg/method-7.mm
! 7f3ced173cdff34370bc766733347320  gcc/testsuite/obj-c++.dg/method-8.mm
! 8b5d0f1598528bfc3e7eaa0dbe70c157  gcc/testsuite/obj-c++.dg/method-9.mm
  2a7616b9c1cd0cadb5e83a9bfa917a8e  gcc/testsuite/obj-c++.dg/method-conflict-1.mm
  a14143ecfb8bf86238a675e92e7ad689  gcc/testsuite/obj-c++.dg/method-conflict-2.mm
  319baa411c3dcbe2024607771bf19da2  gcc/testsuite/obj-c++.dg/method-conflict-3.mm
  be1b2bdd5e5de6dbbff2108c424ce790  gcc/testsuite/obj-c++.dg/method-conflict-4.mm
  73bd7d1b1242eab391041c7bce7f8854  gcc/testsuite/obj-c++.dg/method-lookup-1.mm
! 6a3c66044ca4bcca36e26bed1000320f  gcc/testsuite/obj-c++.dg/method-namespace-1.mm
  b097f7221586f272ce5ed900f142c070  gcc/testsuite/obj-c++.dg/method-namespace-2.mm
  b6a4bff612a08ec461838ac1b3bd23f1  gcc/testsuite/obj-c++.dg/msg-in-protocol.mm
  3c8440534013c6995bc91253f462fa43  gcc/testsuite/obj-c++.dg/naming-1.mm
*************** dcb5ecceff49837d638a19ab2eabd0ad  gcc/te
*** 78395,78412 ****
  bb8ccf448c201adbf05356ac551899fb  gcc/testsuite/obj-c++.dg/no-extra-load.mm
  e5781d45f8249482300a6cabf2eefd87  gcc/testsuite/obj-c++.dg/objc-gc-3.mm
  bd3b42583db47ebcc7fac037f85f00ed  gcc/testsuite/obj-c++.dg/overload-1.mm
! 7193fa5bf4ead3ac26381fbfdb815f0d  gcc/testsuite/obj-c++.dg/plugin/diagnostic-test-expressions-1.mm
! 988af69f25b97f3db48a0c0233e531d7  gcc/testsuite/obj-c++.dg/plugin/plugin.exp
! 8aa79ecb56c90fe51464150a135fe71f  gcc/testsuite/obj-c++.dg/pr23709.mm
  8480d22a4388c485c49d1c703c34f7f7  gcc/testsuite/obj-c++.dg/pr24393.mm
  2e9567e68880e80a9fa203bba6e86d7f  gcc/testsuite/obj-c++.dg/pr28049.mm
  501a08776d7e5d9d5ab50b8cc394144d  gcc/testsuite/obj-c++.dg/pr45735.mm
  9092ab472c37bc7499376730f631427a  gcc/testsuite/obj-c++.dg/pr48187.mm
! 4bce8e6cc867b6d6e02ed90511e951bf  gcc/testsuite/obj-c++.dg/pr49070.mm
  c1d24514e97259a51ce837ee3271bc0b  gcc/testsuite/obj-c++.dg/pragma-1.mm
! 05fd50ce3311545c4dfe190b89320967  gcc/testsuite/obj-c++.dg/pragma-2.mm
! 405eabc39e96165095c8f1cb77dd47d4  gcc/testsuite/obj-c++.dg/private-1.mm
! 971a7207caabc621fb734fc97253f8ed  gcc/testsuite/obj-c++.dg/private-2.mm
  a0f8afecccea8ae9b614304f1199e546  gcc/testsuite/obj-c++.dg/property/at-property-1.mm
  414377e9fbcdf671ace82325af2d3085  gcc/testsuite/obj-c++.dg/property/at-property-10.mm
  656774a47162a749310be417eb5b0cfb  gcc/testsuite/obj-c++.dg/property/at-property-11.mm
--- 84313,84330 ----
  bb8ccf448c201adbf05356ac551899fb  gcc/testsuite/obj-c++.dg/no-extra-load.mm
  e5781d45f8249482300a6cabf2eefd87  gcc/testsuite/obj-c++.dg/objc-gc-3.mm
  bd3b42583db47ebcc7fac037f85f00ed  gcc/testsuite/obj-c++.dg/overload-1.mm
! e84cd2640f9e4f66e445c60cecc3bfd2  gcc/testsuite/obj-c++.dg/plugin/diagnostic-test-expressions-1.mm
! 5b12ec15a14b9b9f9987ee302a9137e0  gcc/testsuite/obj-c++.dg/plugin/plugin.exp
! 83cce29e08aac8f1aa68b46e52208639  gcc/testsuite/obj-c++.dg/pr23709.mm
  8480d22a4388c485c49d1c703c34f7f7  gcc/testsuite/obj-c++.dg/pr24393.mm
  2e9567e68880e80a9fa203bba6e86d7f  gcc/testsuite/obj-c++.dg/pr28049.mm
  501a08776d7e5d9d5ab50b8cc394144d  gcc/testsuite/obj-c++.dg/pr45735.mm
  9092ab472c37bc7499376730f631427a  gcc/testsuite/obj-c++.dg/pr48187.mm
! 6fb8848bc8b79b964697389bde149261  gcc/testsuite/obj-c++.dg/pr49070.mm
  c1d24514e97259a51ce837ee3271bc0b  gcc/testsuite/obj-c++.dg/pragma-1.mm
! 14a5ab0180c7d767408ed366105eb508  gcc/testsuite/obj-c++.dg/pragma-2.mm
! 5be98c7f10815a552bc126b66314b8e1  gcc/testsuite/obj-c++.dg/private-1.mm
! 0046354bf3743274f4dabebc8d714765  gcc/testsuite/obj-c++.dg/private-2.mm
  a0f8afecccea8ae9b614304f1199e546  gcc/testsuite/obj-c++.dg/property/at-property-1.mm
  414377e9fbcdf671ace82325af2d3085  gcc/testsuite/obj-c++.dg/property/at-property-10.mm
  656774a47162a749310be417eb5b0cfb  gcc/testsuite/obj-c++.dg/property/at-property-11.mm
*************** f9e1d849f4fc728633fda1eeec779521  gcc/te
*** 78430,78436 ****
  961c05748c8a277af44692e8c308b59e  gcc/testsuite/obj-c++.dg/property/at-property-28.mm
  340a6d2140e9d8af488b65bf1cea2d6f  gcc/testsuite/obj-c++.dg/property/at-property-29.mm
  065b66d1324a373459e1ee6098eb02e3  gcc/testsuite/obj-c++.dg/property/at-property-3.mm
! 02b868473a4aa109e32971abd5e849bb  gcc/testsuite/obj-c++.dg/property/at-property-4.mm
  3a4be2c34a7d7f90c7bb490085bd07fd  gcc/testsuite/obj-c++.dg/property/at-property-5.mm
  28f341c0311a3d54b55dc3b447465eca  gcc/testsuite/obj-c++.dg/property/at-property-6.mm
  93ce746f95da16b7220fe9dcf51da961  gcc/testsuite/obj-c++.dg/property/at-property-7.mm
--- 84348,84354 ----
  961c05748c8a277af44692e8c308b59e  gcc/testsuite/obj-c++.dg/property/at-property-28.mm
  340a6d2140e9d8af488b65bf1cea2d6f  gcc/testsuite/obj-c++.dg/property/at-property-29.mm
  065b66d1324a373459e1ee6098eb02e3  gcc/testsuite/obj-c++.dg/property/at-property-3.mm
! af51399ba36e7667f00f0b0addf875a4  gcc/testsuite/obj-c++.dg/property/at-property-4.mm
  3a4be2c34a7d7f90c7bb490085bd07fd  gcc/testsuite/obj-c++.dg/property/at-property-5.mm
  28f341c0311a3d54b55dc3b447465eca  gcc/testsuite/obj-c++.dg/property/at-property-6.mm
  93ce746f95da16b7220fe9dcf51da961  gcc/testsuite/obj-c++.dg/property/at-property-7.mm
*************** ed3272651231fd9961500a4a972e7445  gcc/te
*** 78472,78477 ****
--- 84390,84396 ----
  d79b9fc7b15b3c5cae843b71e254a6c5  gcc/testsuite/obj-c++.dg/property/fsf-property-basic.mm
  e71788bca762a50d918cd770e46376a0  gcc/testsuite/obj-c++.dg/property/fsf-property-method-access.mm
  ace736cd9b88d92508e7dc206c83a89f  gcc/testsuite/obj-c++.dg/property/fsf-property-named-ivar.mm
+ 888015375ca5b082646e3413f8fd5e54  gcc/testsuite/obj-c++.dg/property/nullability-00.mm
  3a0b152e1f99f0f581b04649efadd6f5  gcc/testsuite/obj-c++.dg/property/property-1.mm
  a9ed81f0b2b7a198a2c165663a00789d  gcc/testsuite/obj-c++.dg/property/property-encoding-1.mm
  5b85d5006f591e2a04cd983b74c614c4  gcc/testsuite/obj-c++.dg/property/property-neg-1.mm
*************** a8c4b8171533defe44e443926dc705ce  gcc/te
*** 78481,78487 ****
  46896a53d202d39ebcdefc0f78554362  gcc/testsuite/obj-c++.dg/property/property-neg-5.mm
  2aabf1a0c895ae7fab2963b19790d1d1  gcc/testsuite/obj-c++.dg/property/property-neg-6.mm
  b30232e7701d5769f0f353657f947392  gcc/testsuite/obj-c++.dg/property/property-neg-7.mm
! 851646208c24646e27ebc8b181094b0e  gcc/testsuite/obj-c++.dg/property/property.exp
  810709bcc80423d41b2bda976147cc80  gcc/testsuite/obj-c++.dg/property/synthesize-1.mm
  aecddf447ec5f56ba7c209cb10a65ad6  gcc/testsuite/obj-c++.dg/property/synthesize-10.mm
  6603b6e3c23698004b66a8469e6c3ff6  gcc/testsuite/obj-c++.dg/property/synthesize-11.mm
--- 84400,84406 ----
  46896a53d202d39ebcdefc0f78554362  gcc/testsuite/obj-c++.dg/property/property-neg-5.mm
  2aabf1a0c895ae7fab2963b19790d1d1  gcc/testsuite/obj-c++.dg/property/property-neg-6.mm
  b30232e7701d5769f0f353657f947392  gcc/testsuite/obj-c++.dg/property/property-neg-7.mm
! c2d81e929ce8fee5bf2353db539b714c  gcc/testsuite/obj-c++.dg/property/property.exp
  810709bcc80423d41b2bda976147cc80  gcc/testsuite/obj-c++.dg/property/synthesize-1.mm
  aecddf447ec5f56ba7c209cb10a65ad6  gcc/testsuite/obj-c++.dg/property/synthesize-10.mm
  6603b6e3c23698004b66a8469e6c3ff6  gcc/testsuite/obj-c++.dg/property/synthesize-11.mm
*************** c473a27f24590a31729409fbbe468a24  gcc/te
*** 78495,78520 ****
  63b97d880267a113412eb59c5be9b596  gcc/testsuite/obj-c++.dg/property/synthesize-9.mm
  e8a068864ac7f03dfb33a44172491f6f  gcc/testsuite/obj-c++.dg/proto-error-1.mm
  cf6bf1a9bb03b4708b9ee74ec1da6dce  gcc/testsuite/obj-c++.dg/proto-init-mimatch-1.mm
! 4d4bd4a6e94f7ca1dcbd85c5c66e8f14  gcc/testsuite/obj-c++.dg/proto-lossage-1.mm
  d165610dbbfad82f6af91eab9b66d300  gcc/testsuite/obj-c++.dg/proto-lossage-2.mm
  e9acacfeddf9f5b3fcc7bd49ae2063e8  gcc/testsuite/obj-c++.dg/proto-lossage-3.mm
  17d3166fd7cd81bb8f84245efb05861a  gcc/testsuite/obj-c++.dg/proto-lossage-4.mm
! 40b981421154ac96e17299bce5569949  gcc/testsuite/obj-c++.dg/proto-lossage-5.mm
  fd29bc4e26ebfbde2219d16bcd57ff44  gcc/testsuite/obj-c++.dg/proto-lossage-6.mm
  eae4cc9bd17a2b79453bdeeec666557b  gcc/testsuite/obj-c++.dg/proto-lossage-7.mm
! 4cd57b67eb48bda4d17d7be6cbbf3651  gcc/testsuite/obj-c++.dg/proto-qual-1.mm
  cf4aa34add213bab910de4918a4bb01d  gcc/testsuite/obj-c++.dg/protocol-forward-1.mm
  30d24d440a6063d356f6a53af5141ba5  gcc/testsuite/obj-c++.dg/protocol-forward-2.mm
! caaf3448e346d63b2c9d138c397e34ea  gcc/testsuite/obj-c++.dg/protocol-inheritance-1.mm
! 66598bd0d8651533ded6434b3ab3ad9c  gcc/testsuite/obj-c++.dg/protocol-inheritance-2.mm
! 5e94c540e8c80f67f410219fbbb8290c  gcc/testsuite/obj-c++.dg/protocol-optional-1.mm
  92402d5d0ed140a870d7d3438040c1fa  gcc/testsuite/obj-c++.dg/protocol-qualifier-1.mm
  4f2d108c340f0b7c6c0cf3e5a783070e  gcc/testsuite/obj-c++.dg/protocol-qualifier-2.mm
  6e84ef17eb796596422af8c47eab548d  gcc/testsuite/obj-c++.dg/qual-types-1.mm
! 1a1c40979049410f20a8586a0ba7d7bd  gcc/testsuite/obj-c++.dg/selector-1.mm
! 9279cef4a3631f9e5ab0c052ea83de89  gcc/testsuite/obj-c++.dg/selector-2.mm
! daf831313c6bd7f1fd5054f723b79a65  gcc/testsuite/obj-c++.dg/selector-3.mm
! 72d7d0cb14cd29f3a8a1147573720da3  gcc/testsuite/obj-c++.dg/selector-4.mm
  c3d27561beaec0f4d2e8556f146bde71  gcc/testsuite/obj-c++.dg/selector-5.mm
  c7256230d1e3f8e9c93d3614935b69bc  gcc/testsuite/obj-c++.dg/selector-6.mm
  9359d93417f401fddd8bdbb1bd3bae20  gcc/testsuite/obj-c++.dg/selector-warn-1.mm
--- 84414,84440 ----
  63b97d880267a113412eb59c5be9b596  gcc/testsuite/obj-c++.dg/property/synthesize-9.mm
  e8a068864ac7f03dfb33a44172491f6f  gcc/testsuite/obj-c++.dg/proto-error-1.mm
  cf6bf1a9bb03b4708b9ee74ec1da6dce  gcc/testsuite/obj-c++.dg/proto-init-mimatch-1.mm
! da310ab9c53fd3ea3c3475ec00f0c573  gcc/testsuite/obj-c++.dg/proto-lossage-1.mm
  d165610dbbfad82f6af91eab9b66d300  gcc/testsuite/obj-c++.dg/proto-lossage-2.mm
  e9acacfeddf9f5b3fcc7bd49ae2063e8  gcc/testsuite/obj-c++.dg/proto-lossage-3.mm
  17d3166fd7cd81bb8f84245efb05861a  gcc/testsuite/obj-c++.dg/proto-lossage-4.mm
! 8dad0377c3588f9c61fede50a9d3e88b  gcc/testsuite/obj-c++.dg/proto-lossage-5.mm
  fd29bc4e26ebfbde2219d16bcd57ff44  gcc/testsuite/obj-c++.dg/proto-lossage-6.mm
  eae4cc9bd17a2b79453bdeeec666557b  gcc/testsuite/obj-c++.dg/proto-lossage-7.mm
! 6d7f48b5805f6519fba9ba6dbe162d5d  gcc/testsuite/obj-c++.dg/proto-qual-1.mm
  cf4aa34add213bab910de4918a4bb01d  gcc/testsuite/obj-c++.dg/protocol-forward-1.mm
  30d24d440a6063d356f6a53af5141ba5  gcc/testsuite/obj-c++.dg/protocol-forward-2.mm
! 8f58907fef3e7554fcc550011aafc317  gcc/testsuite/obj-c++.dg/protocol-inheritance-1.mm
! 61898e01f72c6ee2c9611f4558d2edc5  gcc/testsuite/obj-c++.dg/protocol-inheritance-2.mm
! effbdbc125804273e0f4bc04658befe1  gcc/testsuite/obj-c++.dg/protocol-optional-1.mm
  92402d5d0ed140a870d7d3438040c1fa  gcc/testsuite/obj-c++.dg/protocol-qualifier-1.mm
  4f2d108c340f0b7c6c0cf3e5a783070e  gcc/testsuite/obj-c++.dg/protocol-qualifier-2.mm
  6e84ef17eb796596422af8c47eab548d  gcc/testsuite/obj-c++.dg/qual-types-1.mm
! b56cc152baed237369276188799e2af5  gcc/testsuite/obj-c++.dg/root-class-00.mm
! 9cddbe8b600ac387c20fd70baf25d783  gcc/testsuite/obj-c++.dg/selector-1.mm
! ba9d92adfd7208bd418d0f72a9b09244  gcc/testsuite/obj-c++.dg/selector-2.mm
! 904a8612a144a7e8da6135f392a62335  gcc/testsuite/obj-c++.dg/selector-3.mm
! 220ca3956bcd39f703a47484437f5138  gcc/testsuite/obj-c++.dg/selector-4.mm
  c3d27561beaec0f4d2e8556f146bde71  gcc/testsuite/obj-c++.dg/selector-5.mm
  c7256230d1e3f8e9c93d3614935b69bc  gcc/testsuite/obj-c++.dg/selector-6.mm
  9359d93417f401fddd8bdbb1bd3bae20  gcc/testsuite/obj-c++.dg/selector-warn-1.mm
*************** c2f326ebd57afc69cfee9d8f6b441323  gcc/te
*** 78529,78562 ****
  a9aabe53382bdf1de0612f8bcf7ef0eb  gcc/testsuite/obj-c++.dg/strings/const-str-6.mm
  4a89061dc402adc311f94d3659a6eaa2  gcc/testsuite/obj-c++.dg/strings/strings-1.mm
  acda44b06216ac119f6bf3a2e4b8cb98  gcc/testsuite/obj-c++.dg/strings/strings-2.mm
! 151b12802015d573106c4739e1b7093e  gcc/testsuite/obj-c++.dg/strings/strings.exp
! a3865963b786aea8962be491b6c51744  gcc/testsuite/obj-c++.dg/stubify-1.mm
! 9ee0b34288270b2e09477dc8eaa7812b  gcc/testsuite/obj-c++.dg/stubify-2.mm
  0827dd859e38ad893f65d76bf7a5b5e1  gcc/testsuite/obj-c++.dg/super-class-1.mm
  348dead166b98af1745eea549652a4e0  gcc/testsuite/obj-c++.dg/super-class-2.mm
! 5f7cf7eb1290cd0ac7cc810aca461fcb  gcc/testsuite/obj-c++.dg/super-dealloc-1.mm
! 43c780cbecdb5565a2bda8b0795d5cf8  gcc/testsuite/obj-c++.dg/super-dealloc-2.mm
  6d77d7810e6a1711e9c3e10911fdf7f5  gcc/testsuite/obj-c++.dg/sync-2.mm
! c1db611d2e6bb0f9226c7b773e41bec6  gcc/testsuite/obj-c++.dg/sync-3.mm
  ba3476a2e316e27a60e763e08de4047c  gcc/testsuite/obj-c++.dg/syntax-error-1.mm
! 76c552ffde73821d35ce37029bf52fb7  gcc/testsuite/obj-c++.dg/syntax-error-10.mm
! fcc3247af976d648bb2eb1348d0828a8  gcc/testsuite/obj-c++.dg/syntax-error-2.mm
  6090398b844ba0e695f8af2946ade6c8  gcc/testsuite/obj-c++.dg/syntax-error-3.mm
! 3d222c67f1c2630bd689b821793d58af  gcc/testsuite/obj-c++.dg/syntax-error-4.mm
  079a70d3a6d1d4ca09dc3cc5d65650f5  gcc/testsuite/obj-c++.dg/syntax-error-5.mm
  6877f06c5bf4af2deff7937b5287a692  gcc/testsuite/obj-c++.dg/syntax-error-6.mm
! 439ad27b053a2161a428c98be5ed4fe9  gcc/testsuite/obj-c++.dg/syntax-error-7.mm
! d344f006f755c62ebb1df7d107cc066c  gcc/testsuite/obj-c++.dg/syntax-error-8.mm
! 26ccfe6f39aaf6a550f4acc19b9af967  gcc/testsuite/obj-c++.dg/syntax-error-9.mm
  b787529291a4e9eec5627b62a9e5373e  gcc/testsuite/obj-c++.dg/template-1.mm
  3a6ca2f8e7c1bd1db697e25fcd733e81  gcc/testsuite/obj-c++.dg/template-2.mm
  ba7c2acf544748f429491d9f65dab56e  gcc/testsuite/obj-c++.dg/template-3.mm
! eaf2199f10b0ae7596eb7f0ac39442c0  gcc/testsuite/obj-c++.dg/template-4.mm
  16c84b8dac3e603d47b441ebc558a515  gcc/testsuite/obj-c++.dg/template-5.mm
  0bdbca560ce8a34081b447e4651b483d  gcc/testsuite/obj-c++.dg/template-6.mm
! a3156c7f9d307f2bbab3f7d926b378ed  gcc/testsuite/obj-c++.dg/template-7.mm
! b43f60b4a0b28e7b0c53e52a6227d547  gcc/testsuite/obj-c++.dg/template-8.mm
! ba7ee0d33e95d4b72f77ace2b06cb755  gcc/testsuite/obj-c++.dg/threedotthree-abi-1.mm
  6f6356dbcb53d22602416e8919a2b428  gcc/testsuite/obj-c++.dg/tls/diag-1.mm
  33a08b0a73623639e0d19b553bfa0c54  gcc/testsuite/obj-c++.dg/tls/diag-2.mm
  d778dd9dccd75f9ef8f93e35202dcdf3  gcc/testsuite/obj-c++.dg/tls/diag-3.mm
--- 84449,84482 ----
  a9aabe53382bdf1de0612f8bcf7ef0eb  gcc/testsuite/obj-c++.dg/strings/const-str-6.mm
  4a89061dc402adc311f94d3659a6eaa2  gcc/testsuite/obj-c++.dg/strings/strings-1.mm
  acda44b06216ac119f6bf3a2e4b8cb98  gcc/testsuite/obj-c++.dg/strings/strings-2.mm
! 6e5133e14dd23f665b53a6761725f116  gcc/testsuite/obj-c++.dg/strings/strings.exp
! bb80c284ddffba9dd33509364a06732a  gcc/testsuite/obj-c++.dg/stubify-1.mm
! 76876177abcae99b177994a5bd643e22  gcc/testsuite/obj-c++.dg/stubify-2.mm
  0827dd859e38ad893f65d76bf7a5b5e1  gcc/testsuite/obj-c++.dg/super-class-1.mm
  348dead166b98af1745eea549652a4e0  gcc/testsuite/obj-c++.dg/super-class-2.mm
! f4873245bbdbaef14270ff3d2f6d6493  gcc/testsuite/obj-c++.dg/super-dealloc-1.mm
! b67d01872e385a5c7bdd31fad9c377d2  gcc/testsuite/obj-c++.dg/super-dealloc-2.mm
  6d77d7810e6a1711e9c3e10911fdf7f5  gcc/testsuite/obj-c++.dg/sync-2.mm
! c49c40c524ff845450e4b92f18b9fe58  gcc/testsuite/obj-c++.dg/sync-3.mm
  ba3476a2e316e27a60e763e08de4047c  gcc/testsuite/obj-c++.dg/syntax-error-1.mm
! 872af971f9cc03c86a8f8598937c9765  gcc/testsuite/obj-c++.dg/syntax-error-10.mm
! 2770dabd7fa7fff666677edf154c156b  gcc/testsuite/obj-c++.dg/syntax-error-2.mm
  6090398b844ba0e695f8af2946ade6c8  gcc/testsuite/obj-c++.dg/syntax-error-3.mm
! 63c3125bda6880e3980afc25c438365e  gcc/testsuite/obj-c++.dg/syntax-error-4.mm
  079a70d3a6d1d4ca09dc3cc5d65650f5  gcc/testsuite/obj-c++.dg/syntax-error-5.mm
  6877f06c5bf4af2deff7937b5287a692  gcc/testsuite/obj-c++.dg/syntax-error-6.mm
! 0a3d6ac4d60dada8a0c1f3d2622d38fe  gcc/testsuite/obj-c++.dg/syntax-error-7.mm
! 23cb80cc4c1e55a24295ad7fa98a1e43  gcc/testsuite/obj-c++.dg/syntax-error-8.mm
! 0fe5e2cb9e3d5af0e377d32c430cd2cb  gcc/testsuite/obj-c++.dg/syntax-error-9.mm
  b787529291a4e9eec5627b62a9e5373e  gcc/testsuite/obj-c++.dg/template-1.mm
  3a6ca2f8e7c1bd1db697e25fcd733e81  gcc/testsuite/obj-c++.dg/template-2.mm
  ba7c2acf544748f429491d9f65dab56e  gcc/testsuite/obj-c++.dg/template-3.mm
! 9d31c35a7f75fe21a8ae81a66db73d5d  gcc/testsuite/obj-c++.dg/template-4.mm
  16c84b8dac3e603d47b441ebc558a515  gcc/testsuite/obj-c++.dg/template-5.mm
  0bdbca560ce8a34081b447e4651b483d  gcc/testsuite/obj-c++.dg/template-6.mm
! 7f125d0137efaf4c013ae995d1daef56  gcc/testsuite/obj-c++.dg/template-7.mm
! 8c6b3223820a2f57d9cbc837a3790cd6  gcc/testsuite/obj-c++.dg/template-8.mm
! c32e97059cd68710e91f7efb09144018  gcc/testsuite/obj-c++.dg/threedotthree-abi-1.mm
  6f6356dbcb53d22602416e8919a2b428  gcc/testsuite/obj-c++.dg/tls/diag-1.mm
  33a08b0a73623639e0d19b553bfa0c54  gcc/testsuite/obj-c++.dg/tls/diag-2.mm
  d778dd9dccd75f9ef8f93e35202dcdf3  gcc/testsuite/obj-c++.dg/tls/diag-3.mm
*************** ec6c7e65d57e2a70cb1a6852131a0f16  gcc/te
*** 78569,78575 ****
  d951d115e8add5e2e78e8e2e56aebc7f  gcc/testsuite/obj-c++.dg/tls/tls.exp
  7212556766805451a098e554a8ab648e  gcc/testsuite/obj-c++.dg/tls/trivial.m
  1131c9137e46b5311c2d803288f2e4d0  gcc/testsuite/obj-c++.dg/too-many-args.mm
! f597ed597da282f891b8ffceb585991a  gcc/testsuite/obj-c++.dg/torture/dg-torture.exp
  18512c71e6c59489aec1ea811d7b29ca  gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm
  e42495f1f3ad6ec8f920137751c3f8f7  gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-3.mm
  d2c0463e1e05d168d9d004c74cec0610  gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-4.mm
--- 84489,84495 ----
  d951d115e8add5e2e78e8e2e56aebc7f  gcc/testsuite/obj-c++.dg/tls/tls.exp
  7212556766805451a098e554a8ab648e  gcc/testsuite/obj-c++.dg/tls/trivial.m
  1131c9137e46b5311c2d803288f2e4d0  gcc/testsuite/obj-c++.dg/too-many-args.mm
! 2726896c9e1d70c3929ec5b1ac4407c9  gcc/testsuite/obj-c++.dg/torture/dg-torture.exp
  18512c71e6c59489aec1ea811d7b29ca  gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm
  e42495f1f3ad6ec8f920137751c3f8f7  gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-3.mm
  d2c0463e1e05d168d9d004c74cec0610  gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-4.mm
*************** d2c0463e1e05d168d9d004c74cec0610  gcc/te
*** 78581,78587 ****
  69c47926ef31db0bb79c5cd3cea4fa0b  gcc/testsuite/obj-c++.dg/torture/strings/const-str-8.mm
  a826eb6d88698556688b1008a86574a6  gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm
  38bba22e495d1876db60c1ae29146fbe  gcc/testsuite/obj-c++.dg/torture/strings/string1.mm
! db4bb915dcac48e1093e6acc4a001f62  gcc/testsuite/obj-c++.dg/torture/strings/strings.exp
  6f6356dbcb53d22602416e8919a2b428  gcc/testsuite/obj-c++.dg/torture/tls/diag-1.mm
  f1f7032c657f1d2102a3760375786139  gcc/testsuite/obj-c++.dg/torture/tls/thr-init-1.mm
  913caebef1028795e3b0bac01c9a87c0  gcc/testsuite/obj-c++.dg/torture/tls/thr-init-2.mm
--- 84501,84507 ----
  69c47926ef31db0bb79c5cd3cea4fa0b  gcc/testsuite/obj-c++.dg/torture/strings/const-str-8.mm
  a826eb6d88698556688b1008a86574a6  gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm
  38bba22e495d1876db60c1ae29146fbe  gcc/testsuite/obj-c++.dg/torture/strings/string1.mm
! fd571e6ae690ce2b378b953dbfbfc632  gcc/testsuite/obj-c++.dg/torture/strings/strings.exp
  6f6356dbcb53d22602416e8919a2b428  gcc/testsuite/obj-c++.dg/torture/tls/diag-1.mm
  f1f7032c657f1d2102a3760375786139  gcc/testsuite/obj-c++.dg/torture/tls/thr-init-1.mm
  913caebef1028795e3b0bac01c9a87c0  gcc/testsuite/obj-c++.dg/torture/tls/thr-init-2.mm
*************** f1f7032c657f1d2102a3760375786139  gcc/te
*** 78592,78599 ****
  d12d35759dcf7e68cf1f2f74be5f250e  gcc/testsuite/obj-c++.dg/try-catch-1.mm
  49889360a17310a94a0d85c87ca03271  gcc/testsuite/obj-c++.dg/try-catch-10.mm
  65b30ce3fa7e707247f859f7235dcc28  gcc/testsuite/obj-c++.dg/try-catch-11.mm
! 0547cf34f9cf4f3a578623b4ceb22a99  gcc/testsuite/obj-c++.dg/try-catch-12.mm
! c4a6f12cba3fe479319845130b67dda9  gcc/testsuite/obj-c++.dg/try-catch-13.mm
  6903c5d6d4064f5feedc5c257e151f84  gcc/testsuite/obj-c++.dg/try-catch-14.mm
  849d39ba112d67a138c180c56c5b988a  gcc/testsuite/obj-c++.dg/try-catch-15.mm
  749123fd933ccbf7d2de0ef981fa5ab2  gcc/testsuite/obj-c++.dg/try-catch-16.mm
--- 84512,84519 ----
  d12d35759dcf7e68cf1f2f74be5f250e  gcc/testsuite/obj-c++.dg/try-catch-1.mm
  49889360a17310a94a0d85c87ca03271  gcc/testsuite/obj-c++.dg/try-catch-10.mm
  65b30ce3fa7e707247f859f7235dcc28  gcc/testsuite/obj-c++.dg/try-catch-11.mm
! 8fd2ee7e820ad17d4856bc5c3d6e2ab5  gcc/testsuite/obj-c++.dg/try-catch-12.mm
! 35a854b531c3add12bcb74dc262c8dfc  gcc/testsuite/obj-c++.dg/try-catch-13.mm
  6903c5d6d4064f5feedc5c257e151f84  gcc/testsuite/obj-c++.dg/try-catch-14.mm
  849d39ba112d67a138c180c56c5b988a  gcc/testsuite/obj-c++.dg/try-catch-15.mm
  749123fd933ccbf7d2de0ef981fa5ab2  gcc/testsuite/obj-c++.dg/try-catch-16.mm
*************** f80dc47b629cb94d0cd311a6a7f315f1  gcc/te
*** 78605,78611 ****
  f4f1fe6c960ffa81d0cccc1460f1b58a  gcc/testsuite/obj-c++.dg/try-catch-6.mm
  2ffb80aeeed4ed7f946e2f87cff0de6a  gcc/testsuite/obj-c++.dg/try-catch-7.mm
  cbd8c5394b3188c8a0b698fffb29e761  gcc/testsuite/obj-c++.dg/try-catch-8.mm
! 17279744bde3aeb1b4a350bca2f8ceae  gcc/testsuite/obj-c++.dg/try-catch-9.mm
  61737af4ba8fc8bb031e54299f5b54d5  gcc/testsuite/obj-c++.dg/typedef-alias-1.mm
  8ba02c312095da77e61bad415cd178c9  gcc/testsuite/obj-c++.dg/va-meth-1.mm
  5748db698f0b8ee6bafe285e6df3dc32  gcc/testsuite/obj-c++.dg/warn5.mm
--- 84525,84531 ----
  f4f1fe6c960ffa81d0cccc1460f1b58a  gcc/testsuite/obj-c++.dg/try-catch-6.mm
  2ffb80aeeed4ed7f946e2f87cff0de6a  gcc/testsuite/obj-c++.dg/try-catch-7.mm
  cbd8c5394b3188c8a0b698fffb29e761  gcc/testsuite/obj-c++.dg/try-catch-8.mm
! 1b120a2b02079f0053f2bf395378901f  gcc/testsuite/obj-c++.dg/try-catch-9.mm
  61737af4ba8fc8bb031e54299f5b54d5  gcc/testsuite/obj-c++.dg/typedef-alias-1.mm
  8ba02c312095da77e61bad415cd178c9  gcc/testsuite/obj-c++.dg/va-meth-1.mm
  5748db698f0b8ee6bafe285e6df3dc32  gcc/testsuite/obj-c++.dg/warn5.mm
*************** dc8c5ec7b9abe64c54eabc2d60a81066  gcc/te
*** 78647,78653 ****
  a08e081524ab6799e394768da76968d3  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h
  ce8c053d2554352e55b35ae330cd5126  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h
  79f58fc20c1f2dfd98bc097643134fed  gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.h
! 101f36d98fe3aa6f5baede225fa3a0e6  gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.m
  ac76ddcf9ed6ab3c92c31559244da096  gcc/testsuite/objc-obj-c++-shared/next-abi.h
  f3501304cb4e501ca831a9c4069efbe3  gcc/testsuite/objc-obj-c++-shared/nsconstantstring-class-impl.h
  885a572c6cebc62b2c85d81b1dfdb205  gcc/testsuite/objc-obj-c++-shared/nsconstantstring-class-impl.m
--- 84567,84573 ----
  a08e081524ab6799e394768da76968d3  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h
  ce8c053d2554352e55b35ae330cd5126  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h
  79f58fc20c1f2dfd98bc097643134fed  gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.h
! e48052bf658bc6d71f10a28898734733  gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.m
  ac76ddcf9ed6ab3c92c31559244da096  gcc/testsuite/objc-obj-c++-shared/next-abi.h
  f3501304cb4e501ca831a9c4069efbe3  gcc/testsuite/objc-obj-c++-shared/nsconstantstring-class-impl.h
  885a572c6cebc62b2c85d81b1dfdb205  gcc/testsuite/objc-obj-c++-shared/nsconstantstring-class-impl.m
*************** cb269bc755b2a67364f3313e8faf3f29  gcc/te
*** 78660,78711 ****
  83447103f758c2c8ec2044c84069e212  gcc/testsuite/objc.dg/SEL-typedef.m
  55160ccf08a9b1444b32deb900dac569  gcc/testsuite/objc.dg/Wimplicit-fallthrough-1.m
  3b8fd8c2ee22e0099d80e4fa89e2befc  gcc/testsuite/objc.dg/alias.m
! a1be9e5501b4997f5240469850890333  gcc/testsuite/objc.dg/anon-1.m
  84caaa988ddff2a3ef9a3c9c9bfe6fbf  gcc/testsuite/objc.dg/at-class-1.m
! b70f40a9e572f06f9172fd155bb192a2  gcc/testsuite/objc.dg/attributes/attributes.exp
  fd95a72920339d2253044c54f9ac9ea5  gcc/testsuite/objc.dg/attributes/categ-attribute-1.m
  56f3aac5dbec91275669f63a33cfbf9b  gcc/testsuite/objc.dg/attributes/categ-attribute-2.m
! e1730ed4ad91eefb842782a31a9e8c61  gcc/testsuite/objc.dg/attributes/class-attribute-1.m
! ec3e605020e98fc32329d07d9d85b7f5  gcc/testsuite/objc.dg/attributes/class-attribute-2.m
! 696dadebea285deab87dd73de1129aa3  gcc/testsuite/objc.dg/attributes/class-attribute-3.m
  fa8cba7f3fa3d157eaf75ed584efc714  gcc/testsuite/objc.dg/attributes/gnu2x-attr-syntax-1.m
  e8b64cc682d08a7772cf42b9896e04dc  gcc/testsuite/objc.dg/attributes/invalid-attribute-1.m
  41977a70fb1d19b1d31adef5b4f246c8  gcc/testsuite/objc.dg/attributes/method-attribute-1.m
  e7f36ede3524b56b226f26f29dca005b  gcc/testsuite/objc.dg/attributes/method-attribute-2.m
  4bd35ba4e25297ef11a14dab4bd20f6e  gcc/testsuite/objc.dg/attributes/method-attribute-3.m
! 413f0677c7773f9443b3ffe5dc2377bd  gcc/testsuite/objc.dg/attributes/method-deprecated-1.m
! ed4f095ec72e955a58e8397c08c4a51f  gcc/testsuite/objc.dg/attributes/method-deprecated-2.m
! c2c022dabd733433ea1729bbe111b000  gcc/testsuite/objc.dg/attributes/method-deprecated-3.m
! ce827282e1b27990521447218ee397aa  gcc/testsuite/objc.dg/attributes/method-format-1.m
! c59fffa4a5c3fbc65c2342480d7cbc98  gcc/testsuite/objc.dg/attributes/method-nonnull-1.m
! 19e51000a67bd1017ffc369702226cce  gcc/testsuite/objc.dg/attributes/method-noreturn-1.m
! 6f59eb6a1868bb50ec2a75c806ccec9c  gcc/testsuite/objc.dg/attributes/method-sentinel-1.m
! 51ae769ec4446e4480dda31f091320bb  gcc/testsuite/objc.dg/attributes/objc-exception-1.m
! 93a0b1b54740ce8d7a39612e145a9e43  gcc/testsuite/objc.dg/attributes/parameter-attribute-1.m
! cdba7b00dd635d65e6a982f281cef3d6  gcc/testsuite/objc.dg/attributes/parameter-attribute-2.m
! 17fcc1d1acf1192faf301fd799d15d0b  gcc/testsuite/objc.dg/attributes/proto-attribute-1.m
! c31ae4e1f5f4ee72f47014803dfffb21  gcc/testsuite/objc.dg/attributes/proto-attribute-2.m
! 1f58bb05d6066e0573cd93bd45d46479  gcc/testsuite/objc.dg/attributes/proto-attribute-3.m
! 7d955732f6448d32184ccb7b85230a2c  gcc/testsuite/objc.dg/attributes/proto-attribute-4.m
  c3b487baf81469d39b39dc728c80aaf4  gcc/testsuite/objc.dg/bad-receiver-type-2.m
  f778be5aaf35346b17dc27a24d7ed563  gcc/testsuite/objc.dg/bad-receiver-type.m
  4f6182faf640ce5814af65c644a4c950  gcc/testsuite/objc.dg/bitfield-1.m
! 6f2a2a20a94ae93a8fa18e08774e1a79  gcc/testsuite/objc.dg/bitfield-2.m
  dcedbf84975c836b8e3f62c8e74f2cfc  gcc/testsuite/objc.dg/bitfield-3.m
  8d7e675801f4f7d558e935a2888cf3ed  gcc/testsuite/objc.dg/bitfield-4.m
  2db004c178fd7c1d4adb28427369f772  gcc/testsuite/objc.dg/bitfield-5.m
! 6d7dd7461922f5f0f277c2ac8f9c63dd  gcc/testsuite/objc.dg/break-in-ifstmt.m
  a3a9688e7af865bc24450fcfecb1d3b7  gcc/testsuite/objc.dg/call-super-1.m
  b8edbb84ba3b81683cd0bad9937452d9  gcc/testsuite/objc.dg/call-super-2.m
  e912bbb4b576b8aba80ff033b0f7cc3b  gcc/testsuite/objc.dg/call-super-3.m
  0632e7aa9c84e23212520846e144f459  gcc/testsuite/objc.dg/category-1.m
! 052e038811bc7c123d18f6b343b9558f  gcc/testsuite/objc.dg/class-1.m
  68d6b6f6dc97d7d21ab3b14f7fd55e08  gcc/testsuite/objc.dg/class-2.m
! d4bd3446d638246d3ff8c9a942389090  gcc/testsuite/objc.dg/class-extension-1.m
! 307b13378572a31adb9ae2ae97c104b6  gcc/testsuite/objc.dg/class-extension-2.m
! 959a8bf5ce99cb1c213b1f6d5f460925  gcc/testsuite/objc.dg/class-extension-3.m
! 35e9789439805ea6be87ab1d359a2bcc  gcc/testsuite/objc.dg/class-extension-4.m
! d809d1169adf762962aaaa55e874759d  gcc/testsuite/objc.dg/class-protocol-1.m
  e56b01a01c0b2a840b4c7861c095d3ca  gcc/testsuite/objc.dg/comp-types-1.m
  35118720b3d51cd980c0e3993fd8426e  gcc/testsuite/objc.dg/comp-types-10.m
  4a97915d5fdbf1a427d5e5e384890924  gcc/testsuite/objc.dg/comp-types-11.m
--- 84580,84634 ----
  83447103f758c2c8ec2044c84069e212  gcc/testsuite/objc.dg/SEL-typedef.m
  55160ccf08a9b1444b32deb900dac569  gcc/testsuite/objc.dg/Wimplicit-fallthrough-1.m
  3b8fd8c2ee22e0099d80e4fa89e2befc  gcc/testsuite/objc.dg/alias.m
! d1b6c3f1ea4ae2a41059c91bb5a2b852  gcc/testsuite/objc.dg/anon-1.m
  84caaa988ddff2a3ef9a3c9c9bfe6fbf  gcc/testsuite/objc.dg/at-class-1.m
! dfa3ba1964fc0f51d850ae3383002cf3  gcc/testsuite/objc.dg/attributes/attributes.exp
  fd95a72920339d2253044c54f9ac9ea5  gcc/testsuite/objc.dg/attributes/categ-attribute-1.m
  56f3aac5dbec91275669f63a33cfbf9b  gcc/testsuite/objc.dg/attributes/categ-attribute-2.m
! aec01e9422e920606a28dcc46f3f42c4  gcc/testsuite/objc.dg/attributes/class-attribute-1.m
! 7249ff36231a7f031267291c8fe23c6c  gcc/testsuite/objc.dg/attributes/class-attribute-2.m
! 4aa7093ca98a1e5b12087c90f89d52eb  gcc/testsuite/objc.dg/attributes/class-attribute-3.m
  fa8cba7f3fa3d157eaf75ed584efc714  gcc/testsuite/objc.dg/attributes/gnu2x-attr-syntax-1.m
  e8b64cc682d08a7772cf42b9896e04dc  gcc/testsuite/objc.dg/attributes/invalid-attribute-1.m
  41977a70fb1d19b1d31adef5b4f246c8  gcc/testsuite/objc.dg/attributes/method-attribute-1.m
  e7f36ede3524b56b226f26f29dca005b  gcc/testsuite/objc.dg/attributes/method-attribute-2.m
  4bd35ba4e25297ef11a14dab4bd20f6e  gcc/testsuite/objc.dg/attributes/method-attribute-3.m
! 424b89cd98f516e4bdcc63f9edec07fd  gcc/testsuite/objc.dg/attributes/method-deprecated-1.m
! 9cededa924415e70b4b6cda07609d811  gcc/testsuite/objc.dg/attributes/method-deprecated-2.m
! 81789aab87141b59f094180e5761899f  gcc/testsuite/objc.dg/attributes/method-deprecated-3.m
! 731931f9d1c0b4283b9ac894b73ef26f  gcc/testsuite/objc.dg/attributes/method-format-1.m
! 36540d6cd79d305f7755b80b2af5b104  gcc/testsuite/objc.dg/attributes/method-nonnull-1.m
! 54c2f3900493c7db843ca3de8bbe726c  gcc/testsuite/objc.dg/attributes/method-noreturn-1.m
! 53593a9d79d5001e15cf26d6ee71b6e8  gcc/testsuite/objc.dg/attributes/method-sentinel-1.m
! 8a7dbe08151062f5fb8bed41638cfc48  gcc/testsuite/objc.dg/attributes/nsobject-01.m
! e270c7301b6089db4faf82ffa2312cd1  gcc/testsuite/objc.dg/attributes/nullability-00.m
! fb00192fab0f98f0fa41c0e37926c2d7  gcc/testsuite/objc.dg/attributes/objc-exception-1.m
! e211266f939a9ca391cf0df14a0a8a60  gcc/testsuite/objc.dg/attributes/parameter-attribute-1.m
! e6effd36a44836119bd34a000174f95b  gcc/testsuite/objc.dg/attributes/parameter-attribute-2.m
! 6aa847feb521308f30729d3bed4c28fe  gcc/testsuite/objc.dg/attributes/proto-attribute-1.m
! 7cb5adbf7ea9f48b39281d3b62972992  gcc/testsuite/objc.dg/attributes/proto-attribute-2.m
! 2f6d21b66e9c46744f4c21271f92bf71  gcc/testsuite/objc.dg/attributes/proto-attribute-3.m
! 44556de1bfbaa67d4dc79bd26950a125  gcc/testsuite/objc.dg/attributes/proto-attribute-4.m
! a231b3127c3f9f5e943131676f28b910  gcc/testsuite/objc.dg/attributes/root-class-01.m
  c3b487baf81469d39b39dc728c80aaf4  gcc/testsuite/objc.dg/bad-receiver-type-2.m
  f778be5aaf35346b17dc27a24d7ed563  gcc/testsuite/objc.dg/bad-receiver-type.m
  4f6182faf640ce5814af65c644a4c950  gcc/testsuite/objc.dg/bitfield-1.m
! b9e56fc2ebcde127be545d88db8c7ba6  gcc/testsuite/objc.dg/bitfield-2.m
  dcedbf84975c836b8e3f62c8e74f2cfc  gcc/testsuite/objc.dg/bitfield-3.m
  8d7e675801f4f7d558e935a2888cf3ed  gcc/testsuite/objc.dg/bitfield-4.m
  2db004c178fd7c1d4adb28427369f772  gcc/testsuite/objc.dg/bitfield-5.m
! 8206f549d4c6050d2af4ffe58728c7e2  gcc/testsuite/objc.dg/break-in-ifstmt.m
  a3a9688e7af865bc24450fcfecb1d3b7  gcc/testsuite/objc.dg/call-super-1.m
  b8edbb84ba3b81683cd0bad9937452d9  gcc/testsuite/objc.dg/call-super-2.m
  e912bbb4b576b8aba80ff033b0f7cc3b  gcc/testsuite/objc.dg/call-super-3.m
  0632e7aa9c84e23212520846e144f459  gcc/testsuite/objc.dg/category-1.m
! aca6d7dd77544f04acd97188c4ed2467  gcc/testsuite/objc.dg/class-1.m
  68d6b6f6dc97d7d21ab3b14f7fd55e08  gcc/testsuite/objc.dg/class-2.m
! 0e5b084e72099bc48b899ec3b87c3603  gcc/testsuite/objc.dg/class-extension-1.m
! c43bce058487ec0a694dd11b0b6901c0  gcc/testsuite/objc.dg/class-extension-2.m
! 159bc719186f77e02135c257e7a306a9  gcc/testsuite/objc.dg/class-extension-3.m
! 618d13ebb73f0a28df90f3b8421745a0  gcc/testsuite/objc.dg/class-extension-4.m
! 7534e160939a3a1de6044b39c92f2772  gcc/testsuite/objc.dg/class-protocol-1.m
  e56b01a01c0b2a840b4c7861c095d3ca  gcc/testsuite/objc.dg/comp-types-1.m
  35118720b3d51cd980c0e3993fd8426e  gcc/testsuite/objc.dg/comp-types-10.m
  4a97915d5fdbf1a427d5e5e384890924  gcc/testsuite/objc.dg/comp-types-11.m
*************** c8326ae2bb2884e806cd4cc176d05d43  gcc/te
*** 78715,78730 ****
  199316103e184c26eb6c15eedc25d23d  gcc/testsuite/objc.dg/comp-types-4.m
  8e113dd70a1da280170f54eda8c858d1  gcc/testsuite/objc.dg/comp-types-5.m
  ac0b35dcfcf72480c040349b2b8a874b  gcc/testsuite/objc.dg/comp-types-6.m
! ff192eb53975468b7f7bfd43698d8b9e  gcc/testsuite/objc.dg/comp-types-7.m
  fe247b39c88bd32bd4afc7ef88dc1a51  gcc/testsuite/objc.dg/comp-types-8.m
  fcbd6d34fab967afc68044cbc6bebd90  gcc/testsuite/objc.dg/comp-types-9.m
  07adde78c76317f383222a3b1cb5b4bc  gcc/testsuite/objc.dg/conditional-1.m
  7a12918cedc5921ac8d2d95f9b874cd8  gcc/testsuite/objc.dg/defs.m
! 3653e7170b213177620560b1489ee3c4  gcc/testsuite/objc.dg/demangle-1.m
  c0ab0e620febd282b5e9d035d15b3f89  gcc/testsuite/objc.dg/desig-init-1.m
  35496e95171f548a40cf930fea45d49f  gcc/testsuite/objc.dg/desig-init-2.m
! b4a3afdce24ba20e2a9425aead6b11fc  gcc/testsuite/objc.dg/dg.exp
! d3de59bd591c81e839bddbd2e1ef363e  gcc/testsuite/objc.dg/duplicate-class-1.m
  e93baeeda9bc4b65e5eea748a076d816  gcc/testsuite/objc.dg/dwarf-1.m
  0a836d2fda427c66107feaabe420bcf3  gcc/testsuite/objc.dg/dwarf-2.m
  53443690ca665ae75ecc6ea991307bfc  gcc/testsuite/objc.dg/encode-1.m
--- 84638,84653 ----
  199316103e184c26eb6c15eedc25d23d  gcc/testsuite/objc.dg/comp-types-4.m
  8e113dd70a1da280170f54eda8c858d1  gcc/testsuite/objc.dg/comp-types-5.m
  ac0b35dcfcf72480c040349b2b8a874b  gcc/testsuite/objc.dg/comp-types-6.m
! 3788f5bdd60fedfaf9ae4b34f57a6597  gcc/testsuite/objc.dg/comp-types-7.m
  fe247b39c88bd32bd4afc7ef88dc1a51  gcc/testsuite/objc.dg/comp-types-8.m
  fcbd6d34fab967afc68044cbc6bebd90  gcc/testsuite/objc.dg/comp-types-9.m
  07adde78c76317f383222a3b1cb5b4bc  gcc/testsuite/objc.dg/conditional-1.m
  7a12918cedc5921ac8d2d95f9b874cd8  gcc/testsuite/objc.dg/defs.m
! 38a179920a287512b87250b596d328be  gcc/testsuite/objc.dg/demangle-1.m
  c0ab0e620febd282b5e9d035d15b3f89  gcc/testsuite/objc.dg/desig-init-1.m
  35496e95171f548a40cf930fea45d49f  gcc/testsuite/objc.dg/desig-init-2.m
! 1abcd037f8e40a055bb5440eb1262eed  gcc/testsuite/objc.dg/dg.exp
! 142353bbb63675a2f47a3552a35e052f  gcc/testsuite/objc.dg/duplicate-class-1.m
  e93baeeda9bc4b65e5eea748a076d816  gcc/testsuite/objc.dg/dwarf-1.m
  0a836d2fda427c66107feaabe420bcf3  gcc/testsuite/objc.dg/dwarf-2.m
  53443690ca665ae75ecc6ea991307bfc  gcc/testsuite/objc.dg/encode-1.m
*************** f43f0899e9d32c5c144882659699542c  gcc/te
*** 78734,78754 ****
  421a0e85cd003b4758c841f69ed150be  gcc/testsuite/objc.dg/encode-3.m
  9786985b6d5812d1e731ec11f8b36708  gcc/testsuite/objc.dg/encode-4.m
  e8f3db69a8847b70c8bc969edd78dbb2  gcc/testsuite/objc.dg/encode-5.m
! 1296445554abff012ff56b38392805d1  gcc/testsuite/objc.dg/encode-6-next.m
! e53ead1c08985bdb0849e450194e9b99  gcc/testsuite/objc.dg/encode-6.m
  ef255acbd6a15fb634d112de0566ec86  gcc/testsuite/objc.dg/encode-7-next-64bit.m
  ec0c203eb500e86f1c38d60a10728024  gcc/testsuite/objc.dg/encode-7-next.m
  9ab782c949f890c6873d2669830a2e31  gcc/testsuite/objc.dg/encode-7.m
  429d40f99aa6566cade774190e6fc983  gcc/testsuite/objc.dg/encode-8.m
  2c051e823b774db20ca18d3ccd8013f3  gcc/testsuite/objc.dg/encode-9.m
  4a9dc07da94d5a3ed53bd4678f6badb9  gcc/testsuite/objc.dg/enhanced-proto-1.m
! ec13da627de5c7e1d6ffe3b185210717  gcc/testsuite/objc.dg/enhanced-proto-2.m
  edbfca17600aa79dc7ea8e7975c68e88  gcc/testsuite/objc.dg/error-1.m
! 873359db94a30e2e7b83394a75ec386f  gcc/testsuite/objc.dg/exceptions-1.m
  7ff2c21ce93e12bfe6ccee71ca05d457  gcc/testsuite/objc.dg/exceptions-2.m
! 48aab7a90479d44e094f1f7d6cfeec43  gcc/testsuite/objc.dg/exceptions-3.m
! 6d212dc5c626ff2f6dd3bc6600bec913  gcc/testsuite/objc.dg/exceptions-4.m
! f59a1204bceb2598bbd908ca446323c6  gcc/testsuite/objc.dg/exceptions-5.m
  c16130be56a34f67373783aafabf4826  gcc/testsuite/objc.dg/exceptions-6.m
  a6aad066984a23da19fb3353abeb2c33  gcc/testsuite/objc.dg/exceptions-7.m
  e7fb320f22d720d1153b22a297d68332  gcc/testsuite/objc.dg/extra-semi.m
--- 84657,84677 ----
  421a0e85cd003b4758c841f69ed150be  gcc/testsuite/objc.dg/encode-3.m
  9786985b6d5812d1e731ec11f8b36708  gcc/testsuite/objc.dg/encode-4.m
  e8f3db69a8847b70c8bc969edd78dbb2  gcc/testsuite/objc.dg/encode-5.m
! a6bb3d1c8af49ab745830dafb6bcca4a  gcc/testsuite/objc.dg/encode-6-next.m
! 4e05f5091c214ec18b0d4e294f5e8556  gcc/testsuite/objc.dg/encode-6.m
  ef255acbd6a15fb634d112de0566ec86  gcc/testsuite/objc.dg/encode-7-next-64bit.m
  ec0c203eb500e86f1c38d60a10728024  gcc/testsuite/objc.dg/encode-7-next.m
  9ab782c949f890c6873d2669830a2e31  gcc/testsuite/objc.dg/encode-7.m
  429d40f99aa6566cade774190e6fc983  gcc/testsuite/objc.dg/encode-8.m
  2c051e823b774db20ca18d3ccd8013f3  gcc/testsuite/objc.dg/encode-9.m
  4a9dc07da94d5a3ed53bd4678f6badb9  gcc/testsuite/objc.dg/enhanced-proto-1.m
! b90626ee2a8a47362656131126be59b4  gcc/testsuite/objc.dg/enhanced-proto-2.m
  edbfca17600aa79dc7ea8e7975c68e88  gcc/testsuite/objc.dg/error-1.m
! df72f290b8b026a2756a43aef804b391  gcc/testsuite/objc.dg/exceptions-1.m
  7ff2c21ce93e12bfe6ccee71ca05d457  gcc/testsuite/objc.dg/exceptions-2.m
! bdc0a09dd921164603433bca949e2b60  gcc/testsuite/objc.dg/exceptions-3.m
! 8d0d68acb0f46fca9b609725efea2c7c  gcc/testsuite/objc.dg/exceptions-4.m
! 7980fe5982435f792115ad2a1869c70b  gcc/testsuite/objc.dg/exceptions-5.m
  c16130be56a34f67373783aafabf4826  gcc/testsuite/objc.dg/exceptions-6.m
  a6aad066984a23da19fb3353abeb2c33  gcc/testsuite/objc.dg/exceptions-7.m
  e7fb320f22d720d1153b22a297d68332  gcc/testsuite/objc.dg/extra-semi.m
*************** e7fb320f22d720d1153b22a297d68332  gcc/te
*** 78757,78838 ****
  05f0a6fee2cbb6ccf6ef810ac30dc16c  gcc/testsuite/objc.dg/fobjc-exceptions-1.m
  8510ca985bbfc3e0f568c864befdca23  gcc/testsuite/objc.dg/fobjc-exceptions-2.m
  e8affe34d309c5c4b9875f4964f32791  gcc/testsuite/objc.dg/fobjc-exceptions-3.m
! a9d6f859f448d86fc9acc1ad1c4ded71  gcc/testsuite/objc.dg/fobjc-std-1.m
  3e545ecd3524d9eac30ac1c7abd9d690  gcc/testsuite/objc.dg/foreach-1.m
! 68bcadfbc6daa10cdc63a59e70b8c49e  gcc/testsuite/objc.dg/foreach-2.m
  d6ceb9e5422933a42952e7471490a22c  gcc/testsuite/objc.dg/foreach-3.m
! 706ae24519fda3bc36e7e978db27ed5b  gcc/testsuite/objc.dg/foreach-4.m
! 8249a02c1910cf53819d5dfd66ce217f  gcc/testsuite/objc.dg/foreach-5.m
  a885c8f555978e66b05e62d804b549cb  gcc/testsuite/objc.dg/foreach-6.m
  1e3c46a7a9f039bc923261d246524616  gcc/testsuite/objc.dg/foreach-7.m
  b781603660372c9e686220c53409388d  gcc/testsuite/objc.dg/foreach-8.m
  397060022f9bf1c888022042ebe7a91c  gcc/testsuite/objc.dg/fsf-nsstring-format-1.m
  8aba13bcd9b3a4acf07da9c8c47cfb4a  gcc/testsuite/objc.dg/fsf-package-0.m
! d87ff51e256fd6af045acce1094cbbfa  gcc/testsuite/objc.dg/fsyntax-only.m
  bda2f9a0a102ec85a313722d378cdf48  gcc/testsuite/objc.dg/func-ptr-1.m
  f7586152aa73b27aaab97ea19aafbfde  gcc/testsuite/objc.dg/func-ptr-2.m
  d77ab725798547aaec5fe03dfdd02495  gcc/testsuite/objc.dg/fwd-proto-1.m
! f9a79b2beede60ee4b7361b3b7571aae  gcc/testsuite/objc.dg/gnu-api-2-class-meta.m
! 839a75aa721de696e3da7d940437c386  gcc/testsuite/objc.dg/gnu-api-2-class.m
! ce9ba9f3905644cb6c38b3de614710e3  gcc/testsuite/objc.dg/gnu-api-2-ivar.m
! a253e38875bfdb13fd36a19e5f71a790  gcc/testsuite/objc.dg/gnu-api-2-method.m
! 748fc56f762387afd1e815c8cc5ff099  gcc/testsuite/objc.dg/gnu-api-2-objc.m
! 7d7f825e923e9555f7a6939f89861146  gcc/testsuite/objc.dg/gnu-api-2-objc_msg_lookup.m
! 34bc9884d5ea838f1d38609ff6fea7a4  gcc/testsuite/objc.dg/gnu-api-2-object.m
! 15f0d13a15c120bd12716ee7e9b1110b  gcc/testsuite/objc.dg/gnu-api-2-property.m
! 2010a658412aadb6cbb2c7c8bfb03234  gcc/testsuite/objc.dg/gnu-api-2-protocol.m
! 2051403ec1d3dffab05ee7fe807d4720  gcc/testsuite/objc.dg/gnu-api-2-resolve-method.m
! 21ce16f174c934fb963a560e3e5b6913  gcc/testsuite/objc.dg/gnu-api-2-sel.m
  2953f7137cafc5117041c87f712943eb  gcc/testsuite/objc.dg/gnu-encoding/compat-common.h
  db6ac9c4cab360de1e62ae24781a65aa  gcc/testsuite/objc.dg/gnu-encoding/generate-random.c
  a3ac98dcec269f59ea0f7ebc9b8c3297  gcc/testsuite/objc.dg/gnu-encoding/generate-random.h
  73fd2a43073b565b250e87dcce3fb9b1  gcc/testsuite/objc.dg/gnu-encoding/generate-random_r.c
! fd2f831ad9ed44bd582e1fec23ecaaeb  gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp
  c41a6661b12b159d108661dd40bac309  gcc/testsuite/objc.dg/gnu-encoding/struct-layout-1.h
  b602f2a3cc56cd39c738d2241938856f  gcc/testsuite/objc.dg/gnu-encoding/struct-layout-1_test.h
! 550e608729695dd01ea09faf26f72fd5  gcc/testsuite/objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c
  fa1ab496151791f4ef05043e7c0b673c  gcc/testsuite/objc.dg/gnu-encoding/vector-defs.h
  75cc55de841b4de6d06a46e13f5f7bfe  gcc/testsuite/objc.dg/gnu-runtime-1.m
  a10c57561f5023d1bc5813fb62b15e8f  gcc/testsuite/objc.dg/gnu-runtime-2.m
  cf495a272fe911f953544354d7af49e2  gcc/testsuite/objc.dg/gnu-runtime-3.m
  6610c198e68db214bca9de5a0f6cfdec  gcc/testsuite/objc.dg/headers.m
! f1920dcb3d447ac1425163a2d1e6c0d2  gcc/testsuite/objc.dg/id-1.m
  697c9889104dbd42200e3eaeb739692d  gcc/testsuite/objc.dg/image-info.m
! f642d96cba4255caca5622eae71014c4  gcc/testsuite/objc.dg/incomplete-type-1.m
! aa8ef11d7fa1e8fe899b665ebe7a4f23  gcc/testsuite/objc.dg/instancetype-0.m
  7965f2dab76d401f8398a30bcae85653  gcc/testsuite/objc.dg/invalid-method-1.m
! 172bebf6092a27228381556a110f96cb  gcc/testsuite/objc.dg/invalid-method-2.m
  cfd869df9840f625e801db2e67f1e182  gcc/testsuite/objc.dg/invalid-type-1.m
  9ad91bf3e53fa36e2556a5ddd4eb378e  gcc/testsuite/objc.dg/isa-field-1.m
  55075563ae55f61bfee5e587702549a9  gcc/testsuite/objc.dg/ivar-extra-semicolon.m
! 27b57b11e7787adb45c687e6d7a063bc  gcc/testsuite/objc.dg/ivar-invalid-type-1.m
! 642cb67d94deb494988c902d20ef41d6  gcc/testsuite/objc.dg/ivar-problem-1.m
! a901aa206dbe8d8893ab83b493c0291e  gcc/testsuite/objc.dg/ivar-scope-1.m
! aa0a1654a5e5aa91bd8d276fd6ca5509  gcc/testsuite/objc.dg/ivar-scope-2.m
  c68ac899861ad49318b833be3b9aa870  gcc/testsuite/objc.dg/ivar-scope-3.m
! 2f16a748fa1d80d06ba272ffee86dc90  gcc/testsuite/objc.dg/ivar-scope-4.m
! 3270f9ab6b602d9908280afcd214c6de  gcc/testsuite/objc.dg/ivar-visibility-1.m
! d7c65da4b821d0c67c871365f9f4588a  gcc/testsuite/objc.dg/ivar-visibility-2.m
! b5b45c9e15432e7b4a63c8345b4c307d  gcc/testsuite/objc.dg/ivar-visibility-3.m
! ccead5bb87b8ef6d3d50a588951203f3  gcc/testsuite/objc.dg/ivar-visibility-4.m
  58c0aa2349a4dc4c294203c084e34002  gcc/testsuite/objc.dg/keywords-1.m
  8178266d25f297eafe4c48b583a26fad  gcc/testsuite/objc.dg/keywords-2.m
  6193dabfea4090674344b6ef44161e92  gcc/testsuite/objc.dg/keywords-3.m
  690b083c4b537f6abade506e22b8582f  gcc/testsuite/objc.dg/layout-1.m
  6b80a2f059142e2e25842f39caa9e0c9  gcc/testsuite/objc.dg/layout-2.m
  f95bd6372c4bf77d12d57a628fc5bb39  gcc/testsuite/objc.dg/libobjc-selector-1.m
! ef027ba6682833a14c376b2fcb64444e  gcc/testsuite/objc.dg/local-decl-1.m
  1d93e9b716a93515c5ab71dc3394158e  gcc/testsuite/objc.dg/local-decl-2.m
  5f8d8d488322be4a5c33e704a91212ff  gcc/testsuite/objc.dg/lookup-1.m
! 561ab48d80362d8c3f7bd4d8df15f55a  gcc/testsuite/objc.dg/lto/lto.exp
! 6dcc154e9bcfbcb29a13b08669614f81  gcc/testsuite/objc.dg/lto/trivial-1_0.m
  b1a80cc8c0c5d5294699c5aeb20817a4  gcc/testsuite/objc.dg/member-1.m
! 654818ea7c74a49a5e08ba69f43984f7  gcc/testsuite/objc.dg/method-1.m
  3e263f2f9ed001e19a2a726838ec4a3e  gcc/testsuite/objc.dg/method-10.m
  c0d034a8cd6ecd57c2549adf5fdcd989  gcc/testsuite/objc.dg/method-11.m
! 956a4f445f1949a644580e9b460afe4b  gcc/testsuite/objc.dg/method-12.m
! 410946e2a013b1d1c2773ad2139341bd  gcc/testsuite/objc.dg/method-13.m
! c0e3440d87797991072d80bcf576ef1f  gcc/testsuite/objc.dg/method-14.m
  108cd61894af7c903c208335990e8af2  gcc/testsuite/objc.dg/method-15.m
  273f998d8039a4cd6a7d4287efa0dbf9  gcc/testsuite/objc.dg/method-16.m
  b34e1563f87bb84e4f043e9a7b2a980b  gcc/testsuite/objc.dg/method-17.m
--- 84680,84761 ----
  05f0a6fee2cbb6ccf6ef810ac30dc16c  gcc/testsuite/objc.dg/fobjc-exceptions-1.m
  8510ca985bbfc3e0f568c864befdca23  gcc/testsuite/objc.dg/fobjc-exceptions-2.m
  e8affe34d309c5c4b9875f4964f32791  gcc/testsuite/objc.dg/fobjc-exceptions-3.m
! a6a0e5729817c3ef870aa3c377d6ec1f  gcc/testsuite/objc.dg/fobjc-std-1.m
  3e545ecd3524d9eac30ac1c7abd9d690  gcc/testsuite/objc.dg/foreach-1.m
! 2ba677ce469292ba4b951da4475fc943  gcc/testsuite/objc.dg/foreach-2.m
  d6ceb9e5422933a42952e7471490a22c  gcc/testsuite/objc.dg/foreach-3.m
! 7c045f543d3f86cd755c2403ac2b857b  gcc/testsuite/objc.dg/foreach-4.m
! 7375677eeb7d2e390c8255ea9c8d3872  gcc/testsuite/objc.dg/foreach-5.m
  a885c8f555978e66b05e62d804b549cb  gcc/testsuite/objc.dg/foreach-6.m
  1e3c46a7a9f039bc923261d246524616  gcc/testsuite/objc.dg/foreach-7.m
  b781603660372c9e686220c53409388d  gcc/testsuite/objc.dg/foreach-8.m
  397060022f9bf1c888022042ebe7a91c  gcc/testsuite/objc.dg/fsf-nsstring-format-1.m
  8aba13bcd9b3a4acf07da9c8c47cfb4a  gcc/testsuite/objc.dg/fsf-package-0.m
! 11afb11e94bbdc4503d3a65198a5055e  gcc/testsuite/objc.dg/fsyntax-only.m
  bda2f9a0a102ec85a313722d378cdf48  gcc/testsuite/objc.dg/func-ptr-1.m
  f7586152aa73b27aaab97ea19aafbfde  gcc/testsuite/objc.dg/func-ptr-2.m
  d77ab725798547aaec5fe03dfdd02495  gcc/testsuite/objc.dg/fwd-proto-1.m
! ef18b88fcbe819211e77471c629abee5  gcc/testsuite/objc.dg/gnu-api-2-class-meta.m
! a8b71e7a744890fb1bbb72febf389f4c  gcc/testsuite/objc.dg/gnu-api-2-class.m
! bf27207ee99322dcb5ceac3305193e9c  gcc/testsuite/objc.dg/gnu-api-2-ivar.m
! e0df72adf85cb27406f87e83d80e818f  gcc/testsuite/objc.dg/gnu-api-2-method.m
! 8437e6136e603bc80d9df076a3781b76  gcc/testsuite/objc.dg/gnu-api-2-objc.m
! d65387d48a03ea3ff88babae19bc6354  gcc/testsuite/objc.dg/gnu-api-2-objc_msg_lookup.m
! 4a478e22ee064abce3030325deed488f  gcc/testsuite/objc.dg/gnu-api-2-object.m
! 79364cb09380dbde3c65af132c7ca51e  gcc/testsuite/objc.dg/gnu-api-2-property.m
! 5ae16e266596151d8b7445ca3d9f9214  gcc/testsuite/objc.dg/gnu-api-2-protocol.m
! af1f88eec3b11606777ae67c0f56c07b  gcc/testsuite/objc.dg/gnu-api-2-resolve-method.m
! 2d437ed5c3b25318bd1ce268cd2cdce6  gcc/testsuite/objc.dg/gnu-api-2-sel.m
  2953f7137cafc5117041c87f712943eb  gcc/testsuite/objc.dg/gnu-encoding/compat-common.h
  db6ac9c4cab360de1e62ae24781a65aa  gcc/testsuite/objc.dg/gnu-encoding/generate-random.c
  a3ac98dcec269f59ea0f7ebc9b8c3297  gcc/testsuite/objc.dg/gnu-encoding/generate-random.h
  73fd2a43073b565b250e87dcce3fb9b1  gcc/testsuite/objc.dg/gnu-encoding/generate-random_r.c
! d35ee917ade3d23d7182f6b86c4c9740  gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp
  c41a6661b12b159d108661dd40bac309  gcc/testsuite/objc.dg/gnu-encoding/struct-layout-1.h
  b602f2a3cc56cd39c738d2241938856f  gcc/testsuite/objc.dg/gnu-encoding/struct-layout-1_test.h
! a66ec90d801aba24f196746609a41d7c  gcc/testsuite/objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c
  fa1ab496151791f4ef05043e7c0b673c  gcc/testsuite/objc.dg/gnu-encoding/vector-defs.h
  75cc55de841b4de6d06a46e13f5f7bfe  gcc/testsuite/objc.dg/gnu-runtime-1.m
  a10c57561f5023d1bc5813fb62b15e8f  gcc/testsuite/objc.dg/gnu-runtime-2.m
  cf495a272fe911f953544354d7af49e2  gcc/testsuite/objc.dg/gnu-runtime-3.m
  6610c198e68db214bca9de5a0f6cfdec  gcc/testsuite/objc.dg/headers.m
! ee5085162cebc7a8efb9f3fb24b90cb1  gcc/testsuite/objc.dg/id-1.m
  697c9889104dbd42200e3eaeb739692d  gcc/testsuite/objc.dg/image-info.m
! 99315e3705c0a7956113586fc894eb1f  gcc/testsuite/objc.dg/incomplete-type-1.m
! 8d395da4c7f0e34e6d1b71409c8d6329  gcc/testsuite/objc.dg/instancetype-0.m
  7965f2dab76d401f8398a30bcae85653  gcc/testsuite/objc.dg/invalid-method-1.m
! f97aa32896367b35a98a89c55ea97583  gcc/testsuite/objc.dg/invalid-method-2.m
  cfd869df9840f625e801db2e67f1e182  gcc/testsuite/objc.dg/invalid-type-1.m
  9ad91bf3e53fa36e2556a5ddd4eb378e  gcc/testsuite/objc.dg/isa-field-1.m
  55075563ae55f61bfee5e587702549a9  gcc/testsuite/objc.dg/ivar-extra-semicolon.m
! f7933ca035c16f9f1f1212b162e6aed6  gcc/testsuite/objc.dg/ivar-invalid-type-1.m
! 7bd73c4554726095bd97ab237469a79f  gcc/testsuite/objc.dg/ivar-problem-1.m
! 0dda082229940d47614c396b3625c5ca  gcc/testsuite/objc.dg/ivar-scope-1.m
! 2f323d3c536f9e6658adc641874d6006  gcc/testsuite/objc.dg/ivar-scope-2.m
  c68ac899861ad49318b833be3b9aa870  gcc/testsuite/objc.dg/ivar-scope-3.m
! 8030aaf330f1a42d990ac9e1434ca111  gcc/testsuite/objc.dg/ivar-scope-4.m
! 3983017465aefacb2f33869ee1cc32c0  gcc/testsuite/objc.dg/ivar-visibility-1.m
! dff328039d0a556c61927b1506f9cd82  gcc/testsuite/objc.dg/ivar-visibility-2.m
! d4c5baebe96a2fa4a952ea82080eddf1  gcc/testsuite/objc.dg/ivar-visibility-3.m
! fa95601bfab580c0ce0114fd1d33362b  gcc/testsuite/objc.dg/ivar-visibility-4.m
  58c0aa2349a4dc4c294203c084e34002  gcc/testsuite/objc.dg/keywords-1.m
  8178266d25f297eafe4c48b583a26fad  gcc/testsuite/objc.dg/keywords-2.m
  6193dabfea4090674344b6ef44161e92  gcc/testsuite/objc.dg/keywords-3.m
  690b083c4b537f6abade506e22b8582f  gcc/testsuite/objc.dg/layout-1.m
  6b80a2f059142e2e25842f39caa9e0c9  gcc/testsuite/objc.dg/layout-2.m
  f95bd6372c4bf77d12d57a628fc5bb39  gcc/testsuite/objc.dg/libobjc-selector-1.m
! d770885e56a7430b48fc3465970fbda1  gcc/testsuite/objc.dg/local-decl-1.m
  1d93e9b716a93515c5ab71dc3394158e  gcc/testsuite/objc.dg/local-decl-2.m
  5f8d8d488322be4a5c33e704a91212ff  gcc/testsuite/objc.dg/lookup-1.m
! 73dc21a6330de9858043aa03892b80a0  gcc/testsuite/objc.dg/lto/lto.exp
! a18c6d04d0759ee5d6c7e2b9e7fbe288  gcc/testsuite/objc.dg/lto/trivial-1_0.m
  b1a80cc8c0c5d5294699c5aeb20817a4  gcc/testsuite/objc.dg/member-1.m
! c1908e6ec96975ce2e11da3796fb69d6  gcc/testsuite/objc.dg/method-1.m
  3e263f2f9ed001e19a2a726838ec4a3e  gcc/testsuite/objc.dg/method-10.m
  c0d034a8cd6ecd57c2549adf5fdcd989  gcc/testsuite/objc.dg/method-11.m
! 68ec95d6036d3873f9a3a8c432aa9a33  gcc/testsuite/objc.dg/method-12.m
! 3189c122af67e00e7018c5f14ec2f70a  gcc/testsuite/objc.dg/method-13.m
! 207ed30790b2eca15ae4f15ac67e6f65  gcc/testsuite/objc.dg/method-14.m
  108cd61894af7c903c208335990e8af2  gcc/testsuite/objc.dg/method-15.m
  273f998d8039a4cd6a7d4287efa0dbf9  gcc/testsuite/objc.dg/method-16.m
  b34e1563f87bb84e4f043e9a7b2a980b  gcc/testsuite/objc.dg/method-17.m
*************** a14143ecfb8bf86238a675e92e7ad689  gcc/te
*** 78855,78861 ****
  73bd7d1b1242eab391041c7bce7f8854  gcc/testsuite/objc.dg/method-lookup-1.m
  69bacf80761635c545d87c91cc287531  gcc/testsuite/objc.dg/missing-proto-1.m
  56651a021e1eb7eb1a267d430fca0f45  gcc/testsuite/objc.dg/missing-proto-2.m
! 8c8f4be40ef527420131ee0bfad12e64  gcc/testsuite/objc.dg/missing-proto-3.m
  b6a4bff612a08ec461838ac1b3bd23f1  gcc/testsuite/objc.dg/msg-in-protocol.m
  fcd05c4c0185fc0b317bc6ea1cbc3895  gcc/testsuite/objc.dg/naming-1.m
  99a266629e7ff08c3c048e7d076b7d72  gcc/testsuite/objc.dg/naming-2.m
--- 84778,84784 ----
  73bd7d1b1242eab391041c7bce7f8854  gcc/testsuite/objc.dg/method-lookup-1.m
  69bacf80761635c545d87c91cc287531  gcc/testsuite/objc.dg/missing-proto-1.m
  56651a021e1eb7eb1a267d430fca0f45  gcc/testsuite/objc.dg/missing-proto-2.m
! 99f32e89b5ff570d8db58662101a7b5d  gcc/testsuite/objc.dg/missing-proto-3.m
  b6a4bff612a08ec461838ac1b3bd23f1  gcc/testsuite/objc.dg/msg-in-protocol.m
  fcd05c4c0185fc0b317bc6ea1cbc3895  gcc/testsuite/objc.dg/naming-1.m
  99a266629e7ff08c3c048e7d076b7d72  gcc/testsuite/objc.dg/naming-2.m
*************** ba9c85f123a269332f97289544f0c272  gcc/te
*** 78864,78888 ****
  5fdb8f7d4099246a47b9b2adc8f98807  gcc/testsuite/objc.dg/naming-5.m
  1e68654789c238dc1eaf9e923fe49822  gcc/testsuite/objc.dg/naming-6.m
  ab539e16480243bccd13cb0ab5c05a26  gcc/testsuite/objc.dg/naming-7.m
! dab2c64c5d57ebdc0ca4b496b1db48a2  gcc/testsuite/objc.dg/next-runtime-1.m
  46857bb9920377daaab90747aabd7ff3  gcc/testsuite/objc.dg/no-extra-load.m
  5aa0d8665f3838cd2d663fc71be4933d  gcc/testsuite/objc.dg/objc-fast-4.m
! 6e3afeaf5baf2e68de83a0896e550b27  gcc/testsuite/objc.dg/objc-foreach-1.m
! d7940785b72ab02856b58bf8b4c3d710  gcc/testsuite/objc.dg/objc-foreach-2.m
! b0a4bc88be3fcbba334ad86617c9724e  gcc/testsuite/objc.dg/objc-foreach-3.m
  d6bb76e151385d5dcc0bccac5e79fa6e  gcc/testsuite/objc.dg/objc-foreach-4.m
  7aa5deeefbee0740247f45a83aea37f4  gcc/testsuite/objc.dg/objc-foreach-5.m
  cb9b5197bed9aef6cef86220a5ab2fd9  gcc/testsuite/objc.dg/objc-gc-4.m
! e2b871afc37f1772b337d989244b97c6  gcc/testsuite/objc.dg/objc-nofilename-1.m
! e813e9eab1b738541a5a77be6a3e194f  gcc/testsuite/objc.dg/param-1.m
  8c15bc469e56fdb17a7b24540bf21491  gcc/testsuite/objc.dg/pch/interface-1.hs
  71da4e106e38b3671b4f4ae8a237e55f  gcc/testsuite/objc.dg/pch/interface-1.m
! f00a11eb512313ae0ba7accf6031ce44  gcc/testsuite/objc.dg/pch/pch.exp
! 04ad83a2a7e1ee78beadf39e6a17a42e  gcc/testsuite/objc.dg/plugin/diagnostic-test-expressions-1.m
! 2418c529051ba9468f5ba0fd3db5df0c  gcc/testsuite/objc.dg/plugin/plugin.exp
  4bde0ee2020d54cbaccb19eddeb1ff93  gcc/testsuite/objc.dg/pr18255.m
  31c55f97ea5b980eec7b074cf9577cb9  gcc/testsuite/objc.dg/pr23214.m
! e220e57343bac32bbc315171b87b1bba  gcc/testsuite/objc.dg/pr23709.m
  8480d22a4388c485c49d1c703c34f7f7  gcc/testsuite/objc.dg/pr24393.m
  2e9567e68880e80a9fa203bba6e86d7f  gcc/testsuite/objc.dg/pr28049.m
  87f420348d60432ad67f49edc0432eb4  gcc/testsuite/objc.dg/pr28050.m
--- 84787,84811 ----
  5fdb8f7d4099246a47b9b2adc8f98807  gcc/testsuite/objc.dg/naming-5.m
  1e68654789c238dc1eaf9e923fe49822  gcc/testsuite/objc.dg/naming-6.m
  ab539e16480243bccd13cb0ab5c05a26  gcc/testsuite/objc.dg/naming-7.m
! 0dce408352da9ca41f34b6693fcaa87b  gcc/testsuite/objc.dg/next-runtime-1.m
  46857bb9920377daaab90747aabd7ff3  gcc/testsuite/objc.dg/no-extra-load.m
  5aa0d8665f3838cd2d663fc71be4933d  gcc/testsuite/objc.dg/objc-fast-4.m
! 807ab074596cd2557c256d36272e4355  gcc/testsuite/objc.dg/objc-foreach-1.m
! 602bf96c75e589ac308f09ae87a9afb1  gcc/testsuite/objc.dg/objc-foreach-2.m
! 81b21eb69c89e40578d3c8712e5193e2  gcc/testsuite/objc.dg/objc-foreach-3.m
  d6bb76e151385d5dcc0bccac5e79fa6e  gcc/testsuite/objc.dg/objc-foreach-4.m
  7aa5deeefbee0740247f45a83aea37f4  gcc/testsuite/objc.dg/objc-foreach-5.m
  cb9b5197bed9aef6cef86220a5ab2fd9  gcc/testsuite/objc.dg/objc-gc-4.m
! 19ed68d9eed2befbaefc5dc8b866d0cf  gcc/testsuite/objc.dg/objc-nofilename-1.m
! 35fb6a51ab2ee402a296c57fae46dd84  gcc/testsuite/objc.dg/param-1.m
  8c15bc469e56fdb17a7b24540bf21491  gcc/testsuite/objc.dg/pch/interface-1.hs
  71da4e106e38b3671b4f4ae8a237e55f  gcc/testsuite/objc.dg/pch/interface-1.m
! d2e3b487cfa9171717c408c78a4a11db  gcc/testsuite/objc.dg/pch/pch.exp
! 9d6541dc0a9955231b38937f98c5b78a  gcc/testsuite/objc.dg/plugin/diagnostic-test-expressions-1.m
! 54d1c4ee2cf77bc8025bcea1b8d2942a  gcc/testsuite/objc.dg/plugin/plugin.exp
  4bde0ee2020d54cbaccb19eddeb1ff93  gcc/testsuite/objc.dg/pr18255.m
  31c55f97ea5b980eec7b074cf9577cb9  gcc/testsuite/objc.dg/pr23214.m
! 82b921bbaad1e6e4748d3c8e088b24e6  gcc/testsuite/objc.dg/pr23709.m
  8480d22a4388c485c49d1c703c34f7f7  gcc/testsuite/objc.dg/pr24393.m
  2e9567e68880e80a9fa203bba6e86d7f  gcc/testsuite/objc.dg/pr28049.m
  87f420348d60432ad67f49edc0432eb4  gcc/testsuite/objc.dg/pr28050.m
*************** f70cc9f14e52a011b880ee463b06a327  gcc/te
*** 78894,78901 ****
  1670c1fe0db7ee6f6e39e442f289f23e  gcc/testsuite/objc.dg/pr69844.m
  13f3af0a59ffae0f60ff7974ef915e72  gcc/testsuite/objc.dg/pr94637.m
  6db163abbefa59b20a6488cd9827e981  gcc/testsuite/objc.dg/pragma-1.m
! 17b6e80a4c8cb3c7396bbb2a807e54e4  gcc/testsuite/objc.dg/private-1.m
! fe3ca05ce80d57fadc06b2f9fe6b480c  gcc/testsuite/objc.dg/private-2.m
  c3679dbe95ef13b63be74e3effa3a7fc  gcc/testsuite/objc.dg/property/at-property-1.m
  d447564a14c98686522e0cfc3b8cbbf7  gcc/testsuite/objc.dg/property/at-property-10.m
  1fee5ee3392d953f1ed9771848bd68fa  gcc/testsuite/objc.dg/property/at-property-11.m
--- 84817,84824 ----
  1670c1fe0db7ee6f6e39e442f289f23e  gcc/testsuite/objc.dg/pr69844.m
  13f3af0a59ffae0f60ff7974ef915e72  gcc/testsuite/objc.dg/pr94637.m
  6db163abbefa59b20a6488cd9827e981  gcc/testsuite/objc.dg/pragma-1.m
! 03d5670eafd99b7162a1f1e17d98a575  gcc/testsuite/objc.dg/private-1.m
! 708fba7e0ba8ef247b593c260a1fe8d8  gcc/testsuite/objc.dg/private-2.m
  c3679dbe95ef13b63be74e3effa3a7fc  gcc/testsuite/objc.dg/property/at-property-1.m
  d447564a14c98686522e0cfc3b8cbbf7  gcc/testsuite/objc.dg/property/at-property-10.m
  1fee5ee3392d953f1ed9771848bd68fa  gcc/testsuite/objc.dg/property/at-property-11.m
*************** f9e1d849f4fc728633fda1eeec779521  gcc/te
*** 78919,78925 ****
  961c05748c8a277af44692e8c308b59e  gcc/testsuite/objc.dg/property/at-property-28.m
  8d2a9175b0f2d26ead6a6f68cbcc7664  gcc/testsuite/objc.dg/property/at-property-29.m
  d3b40e4f3c66992ae3b8efe17e6ab426  gcc/testsuite/objc.dg/property/at-property-3.m
! 02b868473a4aa109e32971abd5e849bb  gcc/testsuite/objc.dg/property/at-property-4.m
  3a830e7d5f6afadf6cdb87db8982182b  gcc/testsuite/objc.dg/property/at-property-5.m
  5f3c35f44b41c062d9b52673fcce9fd1  gcc/testsuite/objc.dg/property/at-property-6.m
  24be423b07143ba53a7dfdccedc9c3ee  gcc/testsuite/objc.dg/property/at-property-7.m
--- 84842,84848 ----
  961c05748c8a277af44692e8c308b59e  gcc/testsuite/objc.dg/property/at-property-28.m
  8d2a9175b0f2d26ead6a6f68cbcc7664  gcc/testsuite/objc.dg/property/at-property-29.m
  d3b40e4f3c66992ae3b8efe17e6ab426  gcc/testsuite/objc.dg/property/at-property-3.m
! 9255581d10829d53a30fce093f01479b  gcc/testsuite/objc.dg/property/at-property-4.m
  3a830e7d5f6afadf6cdb87db8982182b  gcc/testsuite/objc.dg/property/at-property-5.m
  5f3c35f44b41c062d9b52673fcce9fd1  gcc/testsuite/objc.dg/property/at-property-6.m
  24be423b07143ba53a7dfdccedc9c3ee  gcc/testsuite/objc.dg/property/at-property-7.m
*************** ed3272651231fd9961500a4a972e7445  gcc/te
*** 78959,78964 ****
--- 84882,84888 ----
  4b3405605d69334647663d38a07a5b35  gcc/testsuite/objc.dg/property/fsf-property-basic.m
  32c0b90f1afab50eebc59d865b4c4218  gcc/testsuite/objc.dg/property/fsf-property-method-access.m
  3be452f1b2f878ac6a7113ae0c4429ba  gcc/testsuite/objc.dg/property/fsf-property-named-ivar.m
+ 888015375ca5b082646e3413f8fd5e54  gcc/testsuite/objc.dg/property/nullability-00.m
  4ecd96f4ba52daabed872d6b8764b6fc  gcc/testsuite/objc.dg/property/property-1.m
  a9ed81f0b2b7a198a2c165663a00789d  gcc/testsuite/objc.dg/property/property-encoding-1.m
  5b85d5006f591e2a04cd983b74c614c4  gcc/testsuite/objc.dg/property/property-neg-1.m
*************** baf9036868eba04aebdd06e708a665ec  gcc/te
*** 78968,78974 ****
  46896a53d202d39ebcdefc0f78554362  gcc/testsuite/objc.dg/property/property-neg-5.m
  ea4fb9865bd07122883de2bcf725a13f  gcc/testsuite/objc.dg/property/property-neg-6.m
  b30232e7701d5769f0f353657f947392  gcc/testsuite/objc.dg/property/property-neg-7.m
! 2ee9b6817f46d82a68e8947d0180f3fa  gcc/testsuite/objc.dg/property/property.exp
  366ec4311c5e9d93dcfbbd560da544a7  gcc/testsuite/objc.dg/property/synthesize-1.m
  aecddf447ec5f56ba7c209cb10a65ad6  gcc/testsuite/objc.dg/property/synthesize-10.m
  23e9117b246f1a4889c17099f6ccf5bf  gcc/testsuite/objc.dg/property/synthesize-11.m
--- 84892,84898 ----
  46896a53d202d39ebcdefc0f78554362  gcc/testsuite/objc.dg/property/property-neg-5.m
  ea4fb9865bd07122883de2bcf725a13f  gcc/testsuite/objc.dg/property/property-neg-6.m
  b30232e7701d5769f0f353657f947392  gcc/testsuite/objc.dg/property/property-neg-7.m
! c7751503f41f7889504df53f86df56a4  gcc/testsuite/objc.dg/property/property.exp
  366ec4311c5e9d93dcfbbd560da544a7  gcc/testsuite/objc.dg/property/synthesize-1.m
  aecddf447ec5f56ba7c209cb10a65ad6  gcc/testsuite/objc.dg/property/synthesize-10.m
  23e9117b246f1a4889c17099f6ccf5bf  gcc/testsuite/objc.dg/property/synthesize-11.m
*************** adb1cea31483d6cb5fbcada4a76e0da4  gcc/te
*** 78980,79026 ****
  4f3eeaf37c954e5518b294f41379ebd7  gcc/testsuite/objc.dg/property/synthesize-7.m
  9ba2b66f63ce98cbb427462ea2bd3467  gcc/testsuite/objc.dg/property/synthesize-8.m
  63b97d880267a113412eb59c5be9b596  gcc/testsuite/objc.dg/property/synthesize-9.m
! 0a347709aca0aac3665a252651b4b3b9  gcc/testsuite/objc.dg/proto-hier-1.m
! f6d6b7454f0d00e836de017738aaf087  gcc/testsuite/objc.dg/proto-hier-2.m
  cf6bf1a9bb03b4708b9ee74ec1da6dce  gcc/testsuite/objc.dg/proto-init-mimatch-1.m
! 4d4bd4a6e94f7ca1dcbd85c5c66e8f14  gcc/testsuite/objc.dg/proto-lossage-1.m
  d165610dbbfad82f6af91eab9b66d300  gcc/testsuite/objc.dg/proto-lossage-2.m
  7816032946ba6eac43f0d60480655dc6  gcc/testsuite/objc.dg/proto-lossage-3.m
  d323135be6f4b0bce1d76b585d1be3be  gcc/testsuite/objc.dg/proto-lossage-4.m
! 40b981421154ac96e17299bce5569949  gcc/testsuite/objc.dg/proto-lossage-5.m
  d26b84bd4fece35e5ae1ec9a7c6d4f15  gcc/testsuite/objc.dg/proto-lossage-6.m
  43743498fb7683ea796ffd482ace42c9  gcc/testsuite/objc.dg/proto-lossage-7.m
! 604faba6fd06b505d44d4837836124fa  gcc/testsuite/objc.dg/proto-qual-1.m
  4afd2785a0050e517e5c3818d2d5ea46  gcc/testsuite/objc.dg/protocol-forward-1.m
  30d24d440a6063d356f6a53af5141ba5  gcc/testsuite/objc.dg/protocol-forward-2.m
! caaf3448e346d63b2c9d138c397e34ea  gcc/testsuite/objc.dg/protocol-inheritance-1.m
! 66598bd0d8651533ded6434b3ab3ad9c  gcc/testsuite/objc.dg/protocol-inheritance-2.m
! 5e94c540e8c80f67f410219fbbb8290c  gcc/testsuite/objc.dg/protocol-optional-1.m
  92402d5d0ed140a870d7d3438040c1fa  gcc/testsuite/objc.dg/protocol-qualifier-1.m
  9014fe911e1e3a77b254b43f8a5f640e  gcc/testsuite/objc.dg/protocol-qualifier-2.m
! f6deacf4efe20f4172bc33cf8dcdd81c  gcc/testsuite/objc.dg/selector-1.m
! 1c5d1bf12677e29e9f2497fa11fdee29  gcc/testsuite/objc.dg/selector-2.m
! 690b1ebfc16dd00a0a7b4692f46f6bee  gcc/testsuite/objc.dg/selector-3.m
! 1a1c40979049410f20a8586a0ba7d7bd  gcc/testsuite/objc.dg/selector-4.m
  9359d93417f401fddd8bdbb1bd3bae20  gcc/testsuite/objc.dg/selector-warn-1.m
  d2caa0c9e2ed2954ba9e33d87f726293  gcc/testsuite/objc.dg/set-not-used-1.m
! 6fdcf87c88a7beafb0c70e7c08d2cc13  gcc/testsuite/objc.dg/shadow-1.m
! 8e990246b6c6fb63245e0a1610b5e614  gcc/testsuite/objc.dg/shadow-2.m
  00a9d1763a3673adacb1898e1c61ef7f  gcc/testsuite/objc.dg/sizeof-1.m
  563627927440cc105f37f27a8d91f249  gcc/testsuite/objc.dg/special/load-category-1.h
! b92d431b7b9b04bbc81de46309ec5bc7  gcc/testsuite/objc.dg/special/load-category-1.m
  c64683a48c4b54f91b2855f105ac3015  gcc/testsuite/objc.dg/special/load-category-1a.m
  a49252a001b806cbd83791f46c29c19c  gcc/testsuite/objc.dg/special/load-category-2.h
! 5f6ef276645b822fe75f15d6a77e4dee  gcc/testsuite/objc.dg/special/load-category-2.m
  c531fbd47d6cd6f34fd4a1161fe41d36  gcc/testsuite/objc.dg/special/load-category-2a.m
  b5566392b676a4381c9fba425af46d22  gcc/testsuite/objc.dg/special/load-category-3.h
! f2dc49ff1ffe202416387a2b188d21fa  gcc/testsuite/objc.dg/special/load-category-3.m
  84e0d0ac9e785e6c7a2c3961f9fef351  gcc/testsuite/objc.dg/special/load-category-3a.m
! 113a26a4b3b6058c8af48b033629f8d1  gcc/testsuite/objc.dg/special/special.exp
! 8f22f33dddabee33212506ee7b2ef346  gcc/testsuite/objc.dg/special/unclaimed-category-1.h
! 2e84c4ad1f0b28dba08fbd95a108dc46  gcc/testsuite/objc.dg/special/unclaimed-category-1.m
  fd73b19f16303df474ad98a05e01cd6a  gcc/testsuite/objc.dg/special/unclaimed-category-1a.m
! e435b5f971ceb7adfd4ad4a826e98257  gcc/testsuite/objc.dg/stabs-1.m
  44c850eb724ab694c1eea579910821bd  gcc/testsuite/objc.dg/static-1.m
  911d824641cc5460f0bb8428edcd155b  gcc/testsuite/objc.dg/stret-1.m
  581f8e860f7f1e705a6b0235823fa173  gcc/testsuite/objc.dg/stret-2.m
--- 84904,84951 ----
  4f3eeaf37c954e5518b294f41379ebd7  gcc/testsuite/objc.dg/property/synthesize-7.m
  9ba2b66f63ce98cbb427462ea2bd3467  gcc/testsuite/objc.dg/property/synthesize-8.m
  63b97d880267a113412eb59c5be9b596  gcc/testsuite/objc.dg/property/synthesize-9.m
! fd429264560c4ba05e2ec0a524c20eca  gcc/testsuite/objc.dg/proto-hier-1.m
! 5be0026a0fe336f2d75937b5a792cf16  gcc/testsuite/objc.dg/proto-hier-2.m
  cf6bf1a9bb03b4708b9ee74ec1da6dce  gcc/testsuite/objc.dg/proto-init-mimatch-1.m
! 4bf24db3955ce289fd5a62e5d7262340  gcc/testsuite/objc.dg/proto-lossage-1.m
  d165610dbbfad82f6af91eab9b66d300  gcc/testsuite/objc.dg/proto-lossage-2.m
  7816032946ba6eac43f0d60480655dc6  gcc/testsuite/objc.dg/proto-lossage-3.m
  d323135be6f4b0bce1d76b585d1be3be  gcc/testsuite/objc.dg/proto-lossage-4.m
! f4e77b70bfe7025381ee1438e69c5b18  gcc/testsuite/objc.dg/proto-lossage-5.m
  d26b84bd4fece35e5ae1ec9a7c6d4f15  gcc/testsuite/objc.dg/proto-lossage-6.m
  43743498fb7683ea796ffd482ace42c9  gcc/testsuite/objc.dg/proto-lossage-7.m
! 55af54b4f1cde02ca1e52a84f88cd88c  gcc/testsuite/objc.dg/proto-qual-1.m
  4afd2785a0050e517e5c3818d2d5ea46  gcc/testsuite/objc.dg/protocol-forward-1.m
  30d24d440a6063d356f6a53af5141ba5  gcc/testsuite/objc.dg/protocol-forward-2.m
! 5e5904b0d11ace5f380addbf5174908d  gcc/testsuite/objc.dg/protocol-inheritance-1.m
! 62a2773afbd1b924c7117b5d697f0039  gcc/testsuite/objc.dg/protocol-inheritance-2.m
! 3eac055f2a70715d9686815e7f27ac54  gcc/testsuite/objc.dg/protocol-optional-1.m
  92402d5d0ed140a870d7d3438040c1fa  gcc/testsuite/objc.dg/protocol-qualifier-1.m
  9014fe911e1e3a77b254b43f8a5f640e  gcc/testsuite/objc.dg/protocol-qualifier-2.m
! e05c964fd4bbc9ce7bfdbc6d477eda10  gcc/testsuite/objc.dg/root-class-00.m
! 0e58330fa9a7ce2841d3da9aaacabd51  gcc/testsuite/objc.dg/selector-1.m
! 189df153b6e580ca66a8a5a8e769b776  gcc/testsuite/objc.dg/selector-2.m
! a24c768299a9f33a4cdf33e6acf5ed8f  gcc/testsuite/objc.dg/selector-3.m
! 5b0bf18af3790cf5fc4677f4419baa61  gcc/testsuite/objc.dg/selector-4.m
  9359d93417f401fddd8bdbb1bd3bae20  gcc/testsuite/objc.dg/selector-warn-1.m
  d2caa0c9e2ed2954ba9e33d87f726293  gcc/testsuite/objc.dg/set-not-used-1.m
! c68f58f9b78cac0eac5ea8f58620014d  gcc/testsuite/objc.dg/shadow-1.m
! 727fbdef0d5c1f394af9e449351158cc  gcc/testsuite/objc.dg/shadow-2.m
  00a9d1763a3673adacb1898e1c61ef7f  gcc/testsuite/objc.dg/sizeof-1.m
  563627927440cc105f37f27a8d91f249  gcc/testsuite/objc.dg/special/load-category-1.h
! a3938d257215e3c079e79ea03a2043d9  gcc/testsuite/objc.dg/special/load-category-1.m
  c64683a48c4b54f91b2855f105ac3015  gcc/testsuite/objc.dg/special/load-category-1a.m
  a49252a001b806cbd83791f46c29c19c  gcc/testsuite/objc.dg/special/load-category-2.h
! ab13bce13fdb5a3de66f0f350804fc0d  gcc/testsuite/objc.dg/special/load-category-2.m
  c531fbd47d6cd6f34fd4a1161fe41d36  gcc/testsuite/objc.dg/special/load-category-2a.m
  b5566392b676a4381c9fba425af46d22  gcc/testsuite/objc.dg/special/load-category-3.h
! 531fa8066e9e519b7cc77fe0e99f2692  gcc/testsuite/objc.dg/special/load-category-3.m
  84e0d0ac9e785e6c7a2c3961f9fef351  gcc/testsuite/objc.dg/special/load-category-3a.m
! d39d0a7d7b27731ffb45748363f4b319  gcc/testsuite/objc.dg/special/special.exp
! a771ad2e4109d3b6d673ea6ae3dfaa4f  gcc/testsuite/objc.dg/special/unclaimed-category-1.h
! a3f5ac774c5045ab1807af23f8bafeb5  gcc/testsuite/objc.dg/special/unclaimed-category-1.m
  fd73b19f16303df474ad98a05e01cd6a  gcc/testsuite/objc.dg/special/unclaimed-category-1a.m
! 61b6d331a882a68f813cae949de043c9  gcc/testsuite/objc.dg/stabs-1.m
  44c850eb724ab694c1eea579910821bd  gcc/testsuite/objc.dg/static-1.m
  911d824641cc5460f0bb8428edcd155b  gcc/testsuite/objc.dg/stret-1.m
  581f8e860f7f1e705a6b0235823fa173  gcc/testsuite/objc.dg/stret-2.m
*************** d14e2bc0e149efd8ad9b13c9f1e48081  gcc/te
*** 79034,79062 ****
  1b52a4aa3cd0d5062e03b48964ddcb0b  gcc/testsuite/objc.dg/strings/const-str-6.m
  4a89061dc402adc311f94d3659a6eaa2  gcc/testsuite/objc.dg/strings/strings-1.m
  5406714e0710bd54d86b2186d1cb98fa  gcc/testsuite/objc.dg/strings/strings-2.m
! 3a2a2de42ff189bb357531444ec005c8  gcc/testsuite/objc.dg/strings/strings.exp
! 1028fef4f6067cf3ed3015cb12843bec  gcc/testsuite/objc.dg/stubify-1.m
! e5c3a9745782947ff92168301c2b303a  gcc/testsuite/objc.dg/stubify-2.m
  7e68d7fe39ddc6065769f26089764fd6  gcc/testsuite/objc.dg/super-class-1.m
! ba3105737585d465268d9bf41481fa06  gcc/testsuite/objc.dg/super-class-2.m
  a1b0dd9c9fb200a066255256ef572225  gcc/testsuite/objc.dg/super-class-3.m
  c71fc5d6430c26f90154d279a0e4420e  gcc/testsuite/objc.dg/super-class-4.m
! 5f7cf7eb1290cd0ac7cc810aca461fcb  gcc/testsuite/objc.dg/super-dealloc-1.m
! 43c780cbecdb5565a2bda8b0795d5cf8  gcc/testsuite/objc.dg/super-dealloc-2.m
  0005d93b4fc8f12225545818fc4dfcec  gcc/testsuite/objc.dg/symtab-1.m
  2a986a873850ef622badcc1eb9048d4a  gcc/testsuite/objc.dg/sync-1.m
  6d77d7810e6a1711e9c3e10911fdf7f5  gcc/testsuite/objc.dg/sync-2.m
! a7c71308c349df3308ea10cfd5c4cfc2  gcc/testsuite/objc.dg/sync-3.m
! 24e303f1a5b07823239aacc5a4d10534  gcc/testsuite/objc.dg/threedotthree-abi-1.m
  96a33f2c1c3ab3db917823503b7e1dcc  gcc/testsuite/objc.dg/tls/diag-2.m
! 0e93a0728326d7e61017ec27ba9d6df7  gcc/testsuite/objc.dg/tls/diag-3.m
  e5b687b2e6c0680da7ad0bd44f97ad83  gcc/testsuite/objc.dg/tls/diag-4.m
  a23e685830713b09d43fa65b1bd2e3e8  gcc/testsuite/objc.dg/tls/diag-5.m
  f60857e024a3e6b1efbc3d8c46505370  gcc/testsuite/objc.dg/tls/init-1.m
  d91e4283788de5085566af47d25f5008  gcc/testsuite/objc.dg/tls/init-2.m
  4d0259674ab3d81711d9cecd1ea9dd41  gcc/testsuite/objc.dg/tls/tls.exp
  1131c9137e46b5311c2d803288f2e4d0  gcc/testsuite/objc.dg/too-many-args.m
! 83b83c80f3982d5e93c47bed6dd2a88a  gcc/testsuite/objc.dg/torture/dg-torture.exp
  ad1ff7bd44c6f2446f6bc6006d9e5a42  gcc/testsuite/objc.dg/torture/forward-1.m
  4f20d39a7f1dfacf39a8a1b732ad2c1c  gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m
  e42495f1f3ad6ec8f920137751c3f8f7  gcc/testsuite/objc.dg/torture/strings/const-cfstring-3.m
--- 84959,84987 ----
  1b52a4aa3cd0d5062e03b48964ddcb0b  gcc/testsuite/objc.dg/strings/const-str-6.m
  4a89061dc402adc311f94d3659a6eaa2  gcc/testsuite/objc.dg/strings/strings-1.m
  5406714e0710bd54d86b2186d1cb98fa  gcc/testsuite/objc.dg/strings/strings-2.m
! d3bf54dfaa39f5a0633aabf536e0e688  gcc/testsuite/objc.dg/strings/strings.exp
! 08a5ae539a0108908d97abd54da7b150  gcc/testsuite/objc.dg/stubify-1.m
! e62d1c240e660f200afe1c83315d23c2  gcc/testsuite/objc.dg/stubify-2.m
  7e68d7fe39ddc6065769f26089764fd6  gcc/testsuite/objc.dg/super-class-1.m
! bd185c7ce188947d3aa82d805ec43350  gcc/testsuite/objc.dg/super-class-2.m
  a1b0dd9c9fb200a066255256ef572225  gcc/testsuite/objc.dg/super-class-3.m
  c71fc5d6430c26f90154d279a0e4420e  gcc/testsuite/objc.dg/super-class-4.m
! a3cc02db3de61cd091cdf26230857eaf  gcc/testsuite/objc.dg/super-dealloc-1.m
! 9a4635ecd1355380a173750fbfc4d4b6  gcc/testsuite/objc.dg/super-dealloc-2.m
  0005d93b4fc8f12225545818fc4dfcec  gcc/testsuite/objc.dg/symtab-1.m
  2a986a873850ef622badcc1eb9048d4a  gcc/testsuite/objc.dg/sync-1.m
  6d77d7810e6a1711e9c3e10911fdf7f5  gcc/testsuite/objc.dg/sync-2.m
! 97956a5f3e3419a4add934631460874d  gcc/testsuite/objc.dg/sync-3.m
! f219c86584f88befe7a5f0c6d77f9e8a  gcc/testsuite/objc.dg/threedotthree-abi-1.m
  96a33f2c1c3ab3db917823503b7e1dcc  gcc/testsuite/objc.dg/tls/diag-2.m
! b3c71b4e843cdf64375cb0555553b26f  gcc/testsuite/objc.dg/tls/diag-3.m
  e5b687b2e6c0680da7ad0bd44f97ad83  gcc/testsuite/objc.dg/tls/diag-4.m
  a23e685830713b09d43fa65b1bd2e3e8  gcc/testsuite/objc.dg/tls/diag-5.m
  f60857e024a3e6b1efbc3d8c46505370  gcc/testsuite/objc.dg/tls/init-1.m
  d91e4283788de5085566af47d25f5008  gcc/testsuite/objc.dg/tls/init-2.m
  4d0259674ab3d81711d9cecd1ea9dd41  gcc/testsuite/objc.dg/tls/tls.exp
  1131c9137e46b5311c2d803288f2e4d0  gcc/testsuite/objc.dg/too-many-args.m
! bdcc3e1361f571a988f7f6e2226dd789  gcc/testsuite/objc.dg/torture/dg-torture.exp
  ad1ff7bd44c6f2446f6bc6006d9e5a42  gcc/testsuite/objc.dg/torture/forward-1.m
  4f20d39a7f1dfacf39a8a1b732ad2c1c  gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m
  e42495f1f3ad6ec8f920137751c3f8f7  gcc/testsuite/objc.dg/torture/strings/const-cfstring-3.m
*************** a8a9f4264b042cb130bb43f35157c620  gcc/te
*** 79072,79078 ****
  f559fec747b34a07335a33efaef1d635  gcc/testsuite/objc.dg/torture/strings/string2.m
  8d3378c509e4ec126b88298049f5b787  gcc/testsuite/objc.dg/torture/strings/string3.m
  5b27fadf5e692e2a9972369e31bf0ba1  gcc/testsuite/objc.dg/torture/strings/string4.m
! 0fd3ee2bbf6b81a8a3d296d6b44222f6  gcc/testsuite/objc.dg/torture/strings/strings.exp
  6f6356dbcb53d22602416e8919a2b428  gcc/testsuite/objc.dg/torture/tls/diag-1.m
  372cfaf699d0b2f15663aaae9b213546  gcc/testsuite/objc.dg/torture/tls/thr-init-2.m
  8affcfa2f40a88a07d936c0472352a61  gcc/testsuite/objc.dg/torture/tls/thr-init-3.m
--- 84997,85003 ----
  f559fec747b34a07335a33efaef1d635  gcc/testsuite/objc.dg/torture/strings/string2.m
  8d3378c509e4ec126b88298049f5b787  gcc/testsuite/objc.dg/torture/strings/string3.m
  5b27fadf5e692e2a9972369e31bf0ba1  gcc/testsuite/objc.dg/torture/strings/string4.m
! fb8407c7342ee35e1774fc940eecb5a8  gcc/testsuite/objc.dg/torture/strings/strings.exp
  6f6356dbcb53d22602416e8919a2b428  gcc/testsuite/objc.dg/torture/tls/diag-1.m
  372cfaf699d0b2f15663aaae9b213546  gcc/testsuite/objc.dg/torture/tls/thr-init-2.m
  8affcfa2f40a88a07d936c0472352a61  gcc/testsuite/objc.dg/torture/tls/thr-init-3.m
*************** f559fec747b34a07335a33efaef1d635  gcc/te
*** 79082,79089 ****
  8f20dd8df9688f75884d148fe7f1a6ff  gcc/testsuite/objc.dg/torture/trivial.m
  8b7ac12bdba32ccf16e2bbe416ae4a2a  gcc/testsuite/objc.dg/try-catch-1.m
  65b30ce3fa7e707247f859f7235dcc28  gcc/testsuite/objc.dg/try-catch-10.m
! 0547cf34f9cf4f3a578623b4ceb22a99  gcc/testsuite/objc.dg/try-catch-11.m
! 676b9fa9f36baef074324581de2eb899  gcc/testsuite/objc.dg/try-catch-12.m
  e3f9c3908c841723be9991ee57398c20  gcc/testsuite/objc.dg/try-catch-3.m
  51214bb792c2a1e650ea6fb65e91228a  gcc/testsuite/objc.dg/try-catch-4.m
  c9db324887da3ead3dcfa5f4a10d2053  gcc/testsuite/objc.dg/try-catch-5.m
--- 85007,85014 ----
  8f20dd8df9688f75884d148fe7f1a6ff  gcc/testsuite/objc.dg/torture/trivial.m
  8b7ac12bdba32ccf16e2bbe416ae4a2a  gcc/testsuite/objc.dg/try-catch-1.m
  65b30ce3fa7e707247f859f7235dcc28  gcc/testsuite/objc.dg/try-catch-10.m
! 89c3737d100bdae4acbdf66be036b215  gcc/testsuite/objc.dg/try-catch-11.m
! 1f2553b7c75322d60610f2cb643a68cc  gcc/testsuite/objc.dg/try-catch-12.m
  e3f9c3908c841723be9991ee57398c20  gcc/testsuite/objc.dg/try-catch-3.m
  51214bb792c2a1e650ea6fb65e91228a  gcc/testsuite/objc.dg/try-catch-4.m
  c9db324887da3ead3dcfa5f4a10d2053  gcc/testsuite/objc.dg/try-catch-5.m
*************** cbd8c5394b3188c8a0b698fffb29e761  gcc/te
*** 79092,79113 ****
  b1f8112005c5b7ced748bb83e7d79af2  gcc/testsuite/objc.dg/try-catch-9.m
  9b538baec17d908e3e8aa869aed0e47b  gcc/testsuite/objc.dg/two-types-1.m
  cee5b403be8cfe2d27154cd31820e280  gcc/testsuite/objc.dg/type-size-1.m
! b903a9692408e7207f2a32edeab43ab5  gcc/testsuite/objc.dg/type-size-2.m
! 5ab344f63b686f2b67cbca8c31a23ec6  gcc/testsuite/objc.dg/type-size-3.m
! b9b2baa8fa2cb50be125372d8712295d  gcc/testsuite/objc.dg/type-size-4.m
! 9e0181366508758dde33800996071514  gcc/testsuite/objc.dg/type-size-5.m
  61737af4ba8fc8bb031e54299f5b54d5  gcc/testsuite/objc.dg/typedef-alias-1.m
! d2d07c2ebcb90350a34d2a0a2a215530  gcc/testsuite/objc.dg/undeclared-selector.m
! b65cbb3412707fe52ac8fb9e3c61300a  gcc/testsuite/objc.dg/unnamed-parms.m
  8c73a8da87197ef7c9627087e4a0abdc  gcc/testsuite/objc.dg/va-meth-1.m
! ad588be086756c7bce570ed5a28030b0  gcc/testsuite/objc.dg/volatile-1.m
  5b030d8bcb22dedd984e8d8dae17cfb6  gcc/testsuite/objc.dg/weak-1.m
  f0a85fb06bc40a59b3b67e37b68bf8a9  gcc/testsuite/objc.dg/zero-link-1.m
  19e680c142e29f8a7a584e91ac7b7056  gcc/testsuite/objc.dg/zero-link-2.m
  af0fd8f33da4a0b997aa6096000deff3  gcc/testsuite/objc.dg/zero-link-3.m
  0d71c48c831bf5882b80c4cd6ca9d9d8  gcc/testsuite/objc/compile/20011211-1.m
  9b70591be7f91f15d0a53c89bdc94bf4  gcc/testsuite/objc/compile/20060406-1.m
! d532b1cc0ecda3aa2d902f5608254174  gcc/testsuite/objc/compile/compile.exp
  2144ecc4331915c2481c0a1f5701d0e2  gcc/testsuite/objc/compile/method-1.m
  41f9da1aa9876935f010f6e2b17679e6  gcc/testsuite/objc/compile/pr18406.m
  e206c4c7af6f1b10d643ca659d7ce5fb  gcc/testsuite/objc/compile/pr64668.m
--- 85017,85038 ----
  b1f8112005c5b7ced748bb83e7d79af2  gcc/testsuite/objc.dg/try-catch-9.m
  9b538baec17d908e3e8aa869aed0e47b  gcc/testsuite/objc.dg/two-types-1.m
  cee5b403be8cfe2d27154cd31820e280  gcc/testsuite/objc.dg/type-size-1.m
! 9ab80414c74cb3793d2628d40be6fac2  gcc/testsuite/objc.dg/type-size-2.m
! 16a92c0ed166664c263975455cf4cb52  gcc/testsuite/objc.dg/type-size-3.m
! da1f44d80f96d4d1d3275a6f1df53a76  gcc/testsuite/objc.dg/type-size-4.m
! abaa1a2c2a3c4c1e7fdbf40cd98b766d  gcc/testsuite/objc.dg/type-size-5.m
  61737af4ba8fc8bb031e54299f5b54d5  gcc/testsuite/objc.dg/typedef-alias-1.m
! 10ff5a9c45fbf95f2cfdf7c776e35adf  gcc/testsuite/objc.dg/undeclared-selector.m
! fb29e75e274b728476953f1aaa70bb69  gcc/testsuite/objc.dg/unnamed-parms.m
  8c73a8da87197ef7c9627087e4a0abdc  gcc/testsuite/objc.dg/va-meth-1.m
! 959b5b7b008e26378beca3e92340b89f  gcc/testsuite/objc.dg/volatile-1.m
  5b030d8bcb22dedd984e8d8dae17cfb6  gcc/testsuite/objc.dg/weak-1.m
  f0a85fb06bc40a59b3b67e37b68bf8a9  gcc/testsuite/objc.dg/zero-link-1.m
  19e680c142e29f8a7a584e91ac7b7056  gcc/testsuite/objc.dg/zero-link-2.m
  af0fd8f33da4a0b997aa6096000deff3  gcc/testsuite/objc.dg/zero-link-3.m
  0d71c48c831bf5882b80c4cd6ca9d9d8  gcc/testsuite/objc/compile/20011211-1.m
  9b70591be7f91f15d0a53c89bdc94bf4  gcc/testsuite/objc/compile/20060406-1.m
! 2f3b08effc2955959a3a61132997039b  gcc/testsuite/objc/compile/compile.exp
  2144ecc4331915c2481c0a1f5701d0e2  gcc/testsuite/objc/compile/method-1.m
  41f9da1aa9876935f010f6e2b17679e6  gcc/testsuite/objc/compile/pr18406.m
  e206c4c7af6f1b10d643ca659d7ce5fb  gcc/testsuite/objc/compile/pr64668.m
*************** bee60356c32af863f8417a00f203538f  gcc/te
*** 79165,79181 ****
  0dfc21e690c7625bdcd6ecd58b521009  gcc/testsuite/objc/execute/enumeration-1.m
  906ad68029b532a36a68c47b781f6f77  gcc/testsuite/objc/execute/enumeration-2.m
  0add90ae8cf075ffca747fd33e604e11  gcc/testsuite/objc/execute/exceptions/catchall-1.m
! 40e9e57b6c11f653e11a8a77ede4c328  gcc/testsuite/objc/execute/exceptions/exceptions.exp
  9cd4ece00a81d13b805c9ad514ef2cf8  gcc/testsuite/objc/execute/exceptions/finally-1.m
  0f41feff3df5bd47c204ee5d8044ea2a  gcc/testsuite/objc/execute/exceptions/foward-1.m
  e9b8822effadb281ff59150cc70ef17f  gcc/testsuite/objc/execute/exceptions/foward-1.x
  9da89462437fc55a6d8b880d27a547f9  gcc/testsuite/objc/execute/exceptions/handler-1.m
  28dd8df1db37c98f5c39258e4f223f9c  gcc/testsuite/objc/execute/exceptions/local-variables-1.m
! 00237f9b183d07193f56fc1d6ffe319a  gcc/testsuite/objc/execute/exceptions/matcher-1.m
  a70e5bfb678efb233f3a7e3aedf20e95  gcc/testsuite/objc/execute/exceptions/pr31281.m
  dfa856dff7b9f08e7146dc28cfca396d  gcc/testsuite/objc/execute/exceptions/throw-nil.m
  e2d7fb111f167f00bc00103220075df5  gcc/testsuite/objc/execute/exceptions/trivial.m
! c97513f134f59829e9ead64f68ab9dbc  gcc/testsuite/objc/execute/execute.exp
  cad3b31ba4ec282f94aee3275ac9323e  gcc/testsuite/objc/execute/fdecl.m
  1a92e165604e454883c8a1a3e560c7a2  gcc/testsuite/objc/execute/formal_protocol-1.m
  fae68af182768d87f73efa38e36d5ba3  gcc/testsuite/objc/execute/formal_protocol-2.m
--- 85090,85106 ----
  0dfc21e690c7625bdcd6ecd58b521009  gcc/testsuite/objc/execute/enumeration-1.m
  906ad68029b532a36a68c47b781f6f77  gcc/testsuite/objc/execute/enumeration-2.m
  0add90ae8cf075ffca747fd33e604e11  gcc/testsuite/objc/execute/exceptions/catchall-1.m
! 93be1f64c7de8374467a1e291a299a1d  gcc/testsuite/objc/execute/exceptions/exceptions.exp
  9cd4ece00a81d13b805c9ad514ef2cf8  gcc/testsuite/objc/execute/exceptions/finally-1.m
  0f41feff3df5bd47c204ee5d8044ea2a  gcc/testsuite/objc/execute/exceptions/foward-1.m
  e9b8822effadb281ff59150cc70ef17f  gcc/testsuite/objc/execute/exceptions/foward-1.x
  9da89462437fc55a6d8b880d27a547f9  gcc/testsuite/objc/execute/exceptions/handler-1.m
  28dd8df1db37c98f5c39258e4f223f9c  gcc/testsuite/objc/execute/exceptions/local-variables-1.m
! bece99d6de6f0bd4152de59cd8f1d13c  gcc/testsuite/objc/execute/exceptions/matcher-1.m
  a70e5bfb678efb233f3a7e3aedf20e95  gcc/testsuite/objc/execute/exceptions/pr31281.m
  dfa856dff7b9f08e7146dc28cfca396d  gcc/testsuite/objc/execute/exceptions/throw-nil.m
  e2d7fb111f167f00bc00103220075df5  gcc/testsuite/objc/execute/exceptions/trivial.m
! cfe8a1c479a0bf844e58189c4e34fa4d  gcc/testsuite/objc/execute/execute.exp
  cad3b31ba4ec282f94aee3275ac9323e  gcc/testsuite/objc/execute/fdecl.m
  1a92e165604e454883c8a1a3e560c7a2  gcc/testsuite/objc/execute/formal_protocol-1.m
  fae68af182768d87f73efa38e36d5ba3  gcc/testsuite/objc/execute/formal_protocol-2.m
*************** c0b991692c06f34bf7f8673802e7b155  gcc/te
*** 79237,79447 ****
  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
! b1e9e988b182ce4ee733b3faaad8454b  gcc/testsuite/substr_10.f90
! e3400ad1b7ab61f1cdd7fd15102819e1  gcc/testsuite/substr_9.f90
! 4378026e42d5d5e9561eda512bf835f7  gcc/timevar.c
! df7c34deb78d0772578542e63ff481c0  gcc/timevar.def
! 4950bf62dcb35f1bdfa61b68a66ab09f  gcc/timevar.h
! bfa112bdfa93dfb517f29871810d9b38  gcc/toplev.c
! ab7ef188a1f8bb5ae52330292de9eddd  gcc/toplev.h
! cb93d16284083d3b9b3c4e20168620d6  gcc/tracer.c
! 4a9a6b6950d1e4e70873268e85630fee  gcc/tracer.h
! 0af7d4555a3ae304e17a2a9ded46a541  gcc/trans-mem.c
! 69f0c748dca11a39a80a3ea404919388  gcc/trans-mem.h
! 152e8165771ecddccc9d44e20851353b  gcc/tree-affine.c
! 0b109601bb4905e4f569439451ec6fa1  gcc/tree-affine.h
! 6bb5dae4af5b869cdbd66834af378767  gcc/tree-call-cdce.c
! b4478bc3fe24048b44ebe5b7f6f78918  gcc/tree-cfg.c
! 8827d749b1f112912acd36b5fa86719f  gcc/tree-cfg.h
! 69569b7be3c796a277a2083e8d5ee2c5  gcc/tree-cfgcleanup.c
! f441bd0bb33f69c0d7f1c0057582e027  gcc/tree-cfgcleanup.h
! 4bbd4c02f0f3f6ef8d62c2f057cd8e52  gcc/tree-chrec.c
! 4e1efeebec075dc15c3b4e348b263b64  gcc/tree-chrec.h
! 80b8c4f7bfab38ae3b39c1b179720cbb  gcc/tree-complex.c
! e66a96b97f79de39ed0463c8d517c16c  gcc/tree-core.h
! 6fc66c25f971d9f112b8748abaa67b4f  gcc/tree-data-ref.c
! b733765819e76ff58bd73dca82313318  gcc/tree-data-ref.h
! 6f07214ef7e8f0ee9c189cb8dd89af6f  gcc/tree-dfa.c
! 7f0ef8abf89f1173c38018b0b12d6a14  gcc/tree-dfa.h
! b3a47266673acdaab7eafbfeca6a74f4  gcc/tree-diagnostic-path.cc
! d459e657ac4e11e8e50ab8429f4b15fb  gcc/tree-diagnostic.c
! 608263f6448ac00b6771eb4fe778e47a  gcc/tree-diagnostic.h
! c64b90c644a821261a72935b93ba3540  gcc/tree-dump.c
! 77f5351a825fd3910011228b4d5d213a  gcc/tree-dump.h
! a5953bc67f96a8cd9d2e169848a29db0  gcc/tree-eh.c
! b4be426da366ec553dae1b61ab01654e  gcc/tree-eh.h
! 9b29c3eefd85c741f33e67a0425c00fe  gcc/tree-emutls.c
! 208a079bcf4a4809f93e36a3d682fa1e  gcc/tree-hash-traits.h
! 225440007d2169d1603a2d188e9adb72  gcc/tree-hasher.h
! fc64052660585b3d6d27ef83d34ddf40  gcc/tree-if-conv.c
! 0fe86b2b9a95865dd2aea247222d4dcf  gcc/tree-if-conv.h
! e03cee77c9e625d214a84bc2b4196ae0  gcc/tree-inline.c
! 8454acd4d01cb3582c705e88d74d3283  gcc/tree-inline.h
! b78983a1e11b29b129e9c3085568c653  gcc/tree-into-ssa.c
! 6f7f61edb92c610f51c0a4c63816d0c9  gcc/tree-into-ssa.h
! 128a1bf3cc21b0667fce6afbc582ece4  gcc/tree-iterator.c
! 0c10dc55c53a2f9a6148855ba4710b52  gcc/tree-iterator.h
! dc9521501236daa47963d7ac49d3fbfb  gcc/tree-loop-distribution.c
! c634a4489f77563ee19d23f1f195e5ee  gcc/tree-nested.c
! 97f5a7e0334053228b88087b732f6a67  gcc/tree-nested.h
! 436506b70e017c3ee190301caaacd625  gcc/tree-nrv.c
! 0334a4500c28bc021f639d715636c4dc  gcc/tree-object-size.c
! 25b3b5a3be46daaf04c91a84c305b6ea  gcc/tree-object-size.h
! 4fcff3dca0736d092d6bfd5f6a327d26  gcc/tree-outof-ssa.c
! b7424dd035be92255e7eb0bdd64347b9  gcc/tree-outof-ssa.h
! 376255f3e34738e44fd41a8dfd3d170f  gcc/tree-parloops.c
! 46bfa19e762a367bc14048bc2ac38e60  gcc/tree-parloops.h
! a4723858b16bec650ed43e6d94d254b7  gcc/tree-pass.h
! 8bf04fc2b4fa5e0828ee5be7f0f6a03a  gcc/tree-phinodes.c
! b4e0a37f771fc4a76ce646464d82d9f5  gcc/tree-phinodes.h
! 409164e334f7ca8d194340919650dc86  gcc/tree-predcom.c
! 430e0d29b7b4e61a154cdb16fa939194  gcc/tree-pretty-print.c
! 32e70ee5db96badf930dada0dbbf484d  gcc/tree-pretty-print.h
! 30e1ca6d5662e9320f1c3aa8bd91cfcb  gcc/tree-profile.c
! c1752b439ea86c5f62b8119caa1c6afc  gcc/tree-scalar-evolution.c
! 017de0578fb1371eef8cf4955b47471f  gcc/tree-scalar-evolution.h
! 5e5a335be1dfe77a6a139043d2faf459  gcc/tree-sra.c
! 71cc20d4743a15fefb27446e7653e2d1  gcc/tree-sra.h
! 87d8129acd88720031e13284b94d5bd1  gcc/tree-ssa-address.c
! fbc43c20731949aace70a7fd40e3686a  gcc/tree-ssa-address.h
! b557b57367a5e37be104196948525f3a  gcc/tree-ssa-alias.c
! 48a56f2cb3132e7430e35159af1e1e6b  gcc/tree-ssa-alias.h
! ad882168a9a92ac846c717e3535d5329  gcc/tree-ssa-ccp.c
! e2bf1c52b8c66cfb9bf468c7c60b243f  gcc/tree-ssa-ccp.h
! e245cf4b2d0a0ab436575b5267da6b9e  gcc/tree-ssa-coalesce.c
! fb5fb25c0bf84f4deb3f9b217455a9bb  gcc/tree-ssa-coalesce.h
! ac0b1053dfb49bc5b0a1730094fc3ea9  gcc/tree-ssa-copy.c
! e98fdeb69a40f7971fecbcf25d91b5e2  gcc/tree-ssa-dce.c
! 4d3bb522f662c24caa6940d29527d3bf  gcc/tree-ssa-dce.h
! 956bfaf1dc4e00e49e50d6a5496a4ef0  gcc/tree-ssa-dom.c
! 3fd94e5b2a00ff49e08ceed53182ee38  gcc/tree-ssa-dom.h
! 6e11b9149ccd3f77438a55a188da14f4  gcc/tree-ssa-dse.c
! 1e30750dd1407ad9992723b0e011b9b0  gcc/tree-ssa-dse.h
! 41377f291aa47751027acae528875a66  gcc/tree-ssa-forwprop.c
! 3974f63e7f9ff4d11ef8b4bea9759beb  gcc/tree-ssa-ifcombine.c
! 81b92a9373657b4df491c12fafccd4ad  gcc/tree-ssa-live.c
! 7444b51f18ddb0cd9e03cd1826756441  gcc/tree-ssa-live.h
! 73da603af35d7ef37b8496ebd7dca5eb  gcc/tree-ssa-loop-ch.c
! da87e3c26bb0fec6b86912924d506725  gcc/tree-ssa-loop-im.c
! 9b06e443cde46a1c6558df7f4abda805  gcc/tree-ssa-loop-ivcanon.c
! 8287b51164ff1e134de843a506bb7dae  gcc/tree-ssa-loop-ivopts.c
! 0caccb8fc15f362630bb5378f818e683  gcc/tree-ssa-loop-ivopts.h
! 23d79623554b440d4fb72e92305ea751  gcc/tree-ssa-loop-manip.c
! ec91776160764a815f2b46c7d27a1056  gcc/tree-ssa-loop-manip.h
! 1d5811941872f0a17f106f1dc625e2e8  gcc/tree-ssa-loop-niter.c
! 3020d6b50214d886a64dc364aa2fcc03  gcc/tree-ssa-loop-niter.h
! cd38f978aedcb9ac42299f3e94a4fe1c  gcc/tree-ssa-loop-prefetch.c
! c536c9cfad3a0d377acc31ae84295eaf  gcc/tree-ssa-loop-split.c
! 8d51e8c65b9d2e2082d77563f6f9117c  gcc/tree-ssa-loop-unswitch.c
! 5fb07d7f3d6daae2c7d4dde424ce1bf5  gcc/tree-ssa-loop.c
! 6d02c14ee9afd91ea8461989c7199824  gcc/tree-ssa-loop.h
! 3060fe19b8ceb594edf70ad246e8872c  gcc/tree-ssa-math-opts.c
! 28bd07bfafe14bfd4c7d52df1a34fba3  gcc/tree-ssa-operands.c
! a9125a7ed5ffe04afa03c4e509e26e87  gcc/tree-ssa-operands.h
! 2faddc7dd3926e8cf469abf6deec0c7b  gcc/tree-ssa-phiopt.c
! ed91c7af1f1877eee14288a9011c4604  gcc/tree-ssa-phiprop.c
! 0261bf5dc083192f2cb6c12acfcf84e5  gcc/tree-ssa-pre.c
! 0137091ad8dab1655b8d85e0f46cbbf7  gcc/tree-ssa-propagate.c
! 341640b7dbbc9edd8f8c8d9c2eb4e75a  gcc/tree-ssa-propagate.h
! 4ba766197a426ea799af584cabe67832  gcc/tree-ssa-reassoc.c
! 80a3b9f704ca43e5cf74c2aa6df40d4c  gcc/tree-ssa-sccvn.c
! 258ee06a3998b92f8c532aee82ba18e2  gcc/tree-ssa-sccvn.h
! feb7190fa935b6d25c621f31953a2228  gcc/tree-ssa-scopedtables.c
! 47b598298fa61c494505b9f430f243cf  gcc/tree-ssa-scopedtables.h
! 893c3a2e43ffc65fb738bec71a93469d  gcc/tree-ssa-sink.c
! c1e102a81f239575fbf259d47eb5e7c0  gcc/tree-ssa-strlen.c
! 8f45fcfe9c63e9106a68a75a236ac03a  gcc/tree-ssa-strlen.h
! 4a8069ef479b5d61bbe2f64e6f68c75e  gcc/tree-ssa-structalias.c
! 3dcabc4321b031865db6d427ec0f2c5d  gcc/tree-ssa-tail-merge.c
! f685f69789eecc07be8cc42011b1ed06  gcc/tree-ssa-ter.c
! 50b5c86a5520c43bd146748db9735042  gcc/tree-ssa-ter.h
! 17164a5f50588cebd002e72ad20e5eeb  gcc/tree-ssa-threadbackward.c
! 51c36df7979ca184b4f52f4c1c1647f2  gcc/tree-ssa-threadedge.c
! 33842d5551237652ff7cfbd3bbe744db  gcc/tree-ssa-threadedge.h
! 88f3b78f5aec4c2ce0f124eb3abecf73  gcc/tree-ssa-threadupdate.c
! 7354dd478f9a6ffa467cab278853af66  gcc/tree-ssa-threadupdate.h
! bcb2b85822e2d63ea496c5071cd122f0  gcc/tree-ssa-uncprop.c
! 5071977461adfcabfa681f4e20d3b425  gcc/tree-ssa-uninit.c
! 9f3301d9a9fd774380dea7a74d3ecfee  gcc/tree-ssa.c
! 574fe94352e0baddac8dca5a49f2b392  gcc/tree-ssa.h
! a10f26dfece937b8d3cd6995295e45ea  gcc/tree-ssanames.c
! 3d5a97e5cb9701cc3c4f41f8e091dbd5  gcc/tree-ssanames.h
! 9a672572827c8c897ca72c42c6fd8154  gcc/tree-stdarg.c
! 8970266c54b3fcae72860de32d91ff6f  gcc/tree-stdarg.h
! fb773867654f4facf8ba8f98ea0ed1ec  gcc/tree-streamer-in.c
! f48b945e98da024aa93e2fa29643349a  gcc/tree-streamer-out.c
! 71c508b114cbb1dc7f87a5a74986446f  gcc/tree-streamer.c
! c8ba0af2809bd844311a92b58441929d  gcc/tree-streamer.h
! eabe35289d23fec09215131864bd847e  gcc/tree-switch-conversion.c
! bc72952b759993367be463e8d044707e  gcc/tree-switch-conversion.h
! cc86acc5bbeaf6edcac80f0418ee00d9  gcc/tree-tailcall.c
! ae02f44bb7e76401230ad10b357c9931  gcc/tree-vect-data-refs.c
! 4067795b0cc6562813aa9328f7a7f673  gcc/tree-vect-generic.c
! 2c09403b2a3f91e0b047cac2a81e6882  gcc/tree-vect-loop-manip.c
! b15eef53ef007019b0a7565f1318003c  gcc/tree-vect-loop.c
! 5678e693f30e0209186170f8b86f6a34  gcc/tree-vect-patterns.c
! 72ab6fd3883c6c0e2da79bd7a2974977  gcc/tree-vect-slp.c
! 40cfa06c4ed5cbbb60cb5d50b29e5709  gcc/tree-vect-stmts.c
! 8e180bd98a1775eb97d5fc158f723534  gcc/tree-vector-builder.c
! d59856be0034d20fa3db4273fc8fa4bc  gcc/tree-vector-builder.h
! 5846dba86cea5ebd56a930641129abc5  gcc/tree-vectorizer.c
! 10751a79fe750495853f00e04157d3bf  gcc/tree-vectorizer.h
! c9783129905aec6436d087c4687eb51c  gcc/tree-vrp.c
! c8c0df1c1023f580bc46385a5b4c1398  gcc/tree-vrp.h
! cc952414baf3072562053d9ada1db93e  gcc/tree.c
! feec14642f58666703a84493d633bf44  gcc/tree.def
! 523319a1a4fbb5060cc6eee6a533ac05  gcc/tree.h
! 1b65ea609f67932622f25f55787ab458  gcc/treestruct.def
! 13f52514cd082aaef51e5bf641c95001  gcc/tristate.cc
! f65513b8bb1e01109b10dae081b65514  gcc/tristate.h
! 32e2d4be499c52b50a59e0609fa61aaf  gcc/tsan.c
! d921215311113c088937334a5d79f91b  gcc/tsan.h
! 4792920b4efc06e670844c084b90537c  gcc/tsystem.h
! 1bbc90c1a741857b5f75c2b60bb924e3  gcc/typeclass.h
! 99185f183dff800aaa8b73b97c8f2b8f  gcc/typed-splay-tree.c
! 618469e5e2de941ab376ccfbd38369fd  gcc/typed-splay-tree.h
! 2b599499676d17ef91aabe6e8fd526bd  gcc/ubsan.c
! 4ff057d55e17c93d675efbf67e4af3de  gcc/ubsan.h
! a274bda31817b40877c1293fe8cec7dc  gcc/unique-ptr-tests.cc
! 0f8674601233352c4c3298ee244dfb17  gcc/valtrack.c
! e21a74085dfaef8cdf97cab939645275  gcc/valtrack.h
! 23be5b0de251667efed8aa7b7b27651b  gcc/value-prof.c
! a5a484b45e88c90e993b634185342d71  gcc/value-prof.h
! 339e0a29b5b2f84efc17bf9c6062f7fe  gcc/value-range.cc
! b0d9e19182f317114b4ace7dd825aae4  gcc/value-range.h
! 6c94b16215c5d4ef79ed0cb652d44037  gcc/var-tracking.c
! a08cbe33e6c0f3834805def5ea928c64  gcc/varasm.c
! 653be5477fff14f116c6c0d91ccb8ed8  gcc/varasm.h
! c240a2fff05699dd50965775a1df8244  gcc/varpool.c
! 8f1a5181ac5eb5727cfdfb414fc2a534  gcc/vec-perm-indices.c
! d631d3ea4811357a66fa09e08ac8a7eb  gcc/vec-perm-indices.h
! dad3b64b401c8aa8013d2c3b724ebfd1  gcc/vec.c
! 3019fcd425cca0adaed9567141d81a99  gcc/vec.h
! 756792447e0b488a37f7af917b734993  gcc/vector-builder.h
! b1009fec9446ce7c6f1fcd4a227fbf25  gcc/version.c
  206ce76c6ce744048f99fdcc938dc713  gcc/version.h
! 5aae01d68d9814dcf0bbc922193ac3c3  gcc/vmsdbg.h
! e1ca39d04126d0d558624244711c7888  gcc/vmsdbgout.c
! 78fbbe4c6834d8b5be92d161f3c8bfa8  gcc/vr-values.c
! 2a97acf99424266cd70ef89ce24f2741  gcc/vr-values.h
! ef8b78b9f3039e5e4c1bf673bd3569a4  gcc/vtable-verify.c
! 9ceb1ed94a01373bab3991f2ab70f4fd  gcc/vtable-verify.h
! f5e07b81988ba373c2641b7058b4ff7b  gcc/web.c
! dd2af862c855085ed651c383b7cc8889  gcc/wide-int-bitmask.h
! 94ed324b2eb7f32f3a6d55f5d619799b  gcc/wide-int-print.cc
! 83aae7736a83f425b3f7e52943ab2b1e  gcc/wide-int-print.h
! 64c3b3451842814c9d19c6d6f60d3ada  gcc/wide-int.cc
! 1ca675d08390ec2de1b90ebbba867352  gcc/wide-int.h
! 66087ece808189c4792bf7458f8b892e  gcc/xcoff.h
! c1a1f47efd530769576572f8d67855e6  gcc/xcoffout.c
! 93de1ac25e02a930c0ccdc015fe3e4ff  gcc/xcoffout.h
! d5a5880bdcb40c20f2926fa51aec48b1  gnattools/ChangeLog
  aaa671ca98fa9f94bfedd0ab395c5505  gnattools/Makefile.in
  8385a4d775aa1b9949c1f88488491c86  gnattools/configure
  1e063bb0b806e41cc0ed23d1b7047746  gnattools/configure.ac
! 63e874dc5f75183593cdbf5c9120da4d  gotools/ChangeLog
! 303548024e6fc434838f0f42f2e9439e  gotools/Makefile.am
! 2c91078d2a6aa9838e182a651608c4d0  gotools/Makefile.in
  7e23031e2e274aaa07b61c1e8f18dc99  gotools/README
  bd839a9d17f6121cfd663f099d0bf44d  gotools/aclocal.m4
  6f26693afa3dd1a6616f8bddb895d528  gotools/configure
--- 85162,85378 ----
  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
! cdebbc5212b58a0091c623930ca65668  gcc/timevar.c
! df20573e1c5ec77d3f66aa753a4a51b5  gcc/timevar.def
! d915bd32dca8233941ae50d85de69640  gcc/timevar.h
! 7ac315690f96be347fd9551830cdd614  gcc/toplev.c
! 08af385f2696c18abef9f3da39909547  gcc/toplev.h
! 24686f2ef8e47f51b54cbcd33699416f  gcc/tracer.c
! e1f610b9b14118b85ced503f2fa89eaf  gcc/tracer.h
! 9e736aaee63c72c54e823699180b6591  gcc/trans-mem.c
! aeff588ac829c30eae0d104543b440d3  gcc/trans-mem.h
! c32a7cd954e38c94fedb8a3ecc0dc53c  gcc/tree-affine.c
! 65985517c61ffc8bade76e7be469b25e  gcc/tree-affine.h
! 417f97627fff84a7a8d8884f3ed8b127  gcc/tree-call-cdce.c
! 0c815b61dfb9dc6b78d461d1de3f3fd6  gcc/tree-cfg.c
! 2943d99f84c3b4dd2870fa30543f96fa  gcc/tree-cfg.h
! c9c18a9cff4201a5c9bcb4827c4fb349  gcc/tree-cfgcleanup.c
! 30ea9c09db55c61adb489625c35cb15e  gcc/tree-cfgcleanup.h
! c02b2a89fa8369ab143d4f11a460651b  gcc/tree-chrec.c
! 31e492711713c34c1104d3e984030331  gcc/tree-chrec.h
! b6e4eee90dd87599d8af1bd8d4c4c972  gcc/tree-complex.c
! ccec9bf50f055c8670a0738d5e7bbeab  gcc/tree-core.h
! b0a571963750a1737d73e942994db357  gcc/tree-data-ref.c
! 6e607c65ec3c8790d5f6ec9878353f95  gcc/tree-data-ref.h
! 5ea9dc582b1d846f2c523de1059f14cb  gcc/tree-dfa.c
! 4711e398b753a63c9dfe58dd5c599663  gcc/tree-dfa.h
! 61cab07dbd907458fe0b084f9de3d326  gcc/tree-diagnostic-path.cc
! 57444e6cdf9ce36313eaaea8746d94ed  gcc/tree-diagnostic.c
! c1f2ff0df4d922bc92a7a89dd111e444  gcc/tree-diagnostic.h
! f75e637e91dac91b91c777479ef081fb  gcc/tree-dump.c
! 8c75ec9047fb090f17138d28aeb55e49  gcc/tree-dump.h
! 12b77e4a63ab883cd85d90bf3314a2e9  gcc/tree-eh.c
! 62326f7c91c8078cdc3c8f095034cd1d  gcc/tree-eh.h
! 5b3d82167a78e6c870c4b85721b98f7d  gcc/tree-emutls.c
! df51783bb1013af8d36a6926324b9944  gcc/tree-hash-traits.h
! 4e0ed6ef3bdd74441de24187193d838f  gcc/tree-hasher.h
! 511676ae9943534d43b199dfae5d4478  gcc/tree-if-conv.c
! a3ff52ffa889157518435812a966fe3d  gcc/tree-if-conv.h
! 48a8dcf0eef43adf8332ed28b0ec2dc3  gcc/tree-inline.c
! b0a166f5b8df4431a3a01703e73ca5e0  gcc/tree-inline.h
! 7bbed0b509eec2f9ac682b47cd5237c2  gcc/tree-into-ssa.c
! 84e9d715b2250b3a6d8f326c5b90c1a8  gcc/tree-into-ssa.h
! 362bdb78a0bdfa101b91dba0c927dc5f  gcc/tree-iterator.c
! 36ab5451f3575ada26fffe25b559d254  gcc/tree-iterator.h
! a29a58e5e561195b5177e484a94a7600  gcc/tree-loop-distribution.c
! a312d451a579d16f5e2d10b716fa20a0  gcc/tree-nested.c
! 9b519af6b08c9d2fbe9dad37203b5196  gcc/tree-nested.h
! d8b72ecd778146ead6f3236e4a49ebef  gcc/tree-nrv.c
! 31323bc7fd67cf0285f538efc0a1ee45  gcc/tree-object-size.c
! 596d1b50badf0031eb091dd74e897ca5  gcc/tree-object-size.h
! cd0c0940dec08aeb3f89264baea4d7d7  gcc/tree-outof-ssa.c
! 16013cc6623ff7124fe9f1e05b401c85  gcc/tree-outof-ssa.h
! d8cc388e9c4f91e647d44d3a487416d8  gcc/tree-parloops.c
! d3b084ad7aba2560ef42b2f258f952f6  gcc/tree-parloops.h
! a51487616194a8071dfe4b9c3bd11c1d  gcc/tree-pass.h
! 5699380a625e6242da8eea993e58e918  gcc/tree-phinodes.c
! 853eb3b96a580d586e049ff23c1f1ca9  gcc/tree-phinodes.h
! 4893728126175734498eacb8b353fd19  gcc/tree-predcom.c
! 0e721a7ed54aae97900bc285a55f9060  gcc/tree-pretty-print.c
! a47959dbcad350d44f1fb6b79a580f48  gcc/tree-pretty-print.h
! 6e0dc1ffdcd6528a72da60eb226c8ec5  gcc/tree-profile.c
! 4d7fa46a3c3b714a513a8cc862595763  gcc/tree-scalar-evolution.c
! 3119791bf78200bcb022199390392521  gcc/tree-scalar-evolution.h
! ec2beea63d6a6fe640d774e81558b978  gcc/tree-sra.c
! 1ae9bb0b98165f1efe0c7c7a11bab6cc  gcc/tree-sra.h
! ee9c205c9ab2fa90fe88b3ae0c79920e  gcc/tree-ssa-address.c
! c54597ef98c1ca43588073766641d8d8  gcc/tree-ssa-address.h
! 1dc8bd000811175c3b54ac3d7057a41c  gcc/tree-ssa-alias-compare.h
! 6dba83e5c8af52221732383ab1737b09  gcc/tree-ssa-alias.c
! c9427a5d21dd629e85e87b47aeb4fe74  gcc/tree-ssa-alias.h
! fe696eccab3a60d2d63d89566d41185b  gcc/tree-ssa-ccp.c
! c3a38b89c2fc91798eb9bcec7d1a921b  gcc/tree-ssa-ccp.h
! 14f20b171e9eeef632fb82641a87fd7d  gcc/tree-ssa-coalesce.c
! dbf97ae62841bae185383de08c1010af  gcc/tree-ssa-coalesce.h
! 7cda46f9d86f92ef2a6a9b13d9ea5458  gcc/tree-ssa-copy.c
! 39536afea748946ba21d641b3172b8eb  gcc/tree-ssa-dce.c
! f89d08a599ef7443309a0083d3eed3b5  gcc/tree-ssa-dce.h
! cff59b4688dbe3604b4b84f6d79e057b  gcc/tree-ssa-dom.c
! 5d4ec6bd4c2537b8b3b9934eeb5ac5bd  gcc/tree-ssa-dom.h
! f6652144ac978d598d3321e0122ae96b  gcc/tree-ssa-dse.c
! b0a51b2bfb537b29341db8e5e9d06c49  gcc/tree-ssa-dse.h
! ff374103bb1e6500bd2906523df20424  gcc/tree-ssa-forwprop.c
! f87b8cba0a5eaf206c581f51abff7795  gcc/tree-ssa-ifcombine.c
! 5e21627768f782974d385f0b8591b7c3  gcc/tree-ssa-live.c
! 92bca15e046dc5f13eb16bedaf5bdf70  gcc/tree-ssa-live.h
! 98d45850103ddab74c7b6b7446089026  gcc/tree-ssa-loop-ch.c
! a2da7018f64cb0b50f823502c4004a21  gcc/tree-ssa-loop-im.c
! 15f1defc34f3db829c93c302e1b7fd48  gcc/tree-ssa-loop-ivcanon.c
! 120e8a77d75728ac826cd04b9e0addf5  gcc/tree-ssa-loop-ivopts.c
! cc3adcca25191b12b03af31ce868f9f5  gcc/tree-ssa-loop-ivopts.h
! ac370f5c6ed5c448ce93e995b5b90a23  gcc/tree-ssa-loop-manip.c
! 9101108741728365b900cefedbca0f1a  gcc/tree-ssa-loop-manip.h
! 7cb6e74fa4d4dade053f9fe6a2306265  gcc/tree-ssa-loop-niter.c
! 17b1022d28a19652c83fa6cb85066528  gcc/tree-ssa-loop-niter.h
! 6324ee4ae64ffdb68be445d3f141e1ec  gcc/tree-ssa-loop-prefetch.c
! 3734808fbeec8aefdcee447131e872d5  gcc/tree-ssa-loop-split.c
! 80c9261b9586acb7b3f4dd8057e45a00  gcc/tree-ssa-loop-unswitch.c
! 7c5fb48d5c26a7cc6cc1328519686513  gcc/tree-ssa-loop.c
! e7b45902d3db8fd8ee5db0a06d9ebd6a  gcc/tree-ssa-loop.h
! 51427d6a3688854bad066dcb4793e082  gcc/tree-ssa-math-opts.c
! 21767eb2af5cf900357d0cdff9563462  gcc/tree-ssa-math-opts.h
! c4f4a7c3982de8a83d63700eeab025e2  gcc/tree-ssa-operands.c
! 89fb9150ca77cb47d3eb6e508c47a938  gcc/tree-ssa-operands.h
! f3fe45672c278ec00456a52375d8074b  gcc/tree-ssa-phiopt.c
! aca824b1c600ea02a32079f9880c7dea  gcc/tree-ssa-phiprop.c
! 05a1860551c8f396f5c6bbe71042e2b1  gcc/tree-ssa-pre.c
! 04f876340a96e18935f72815b6a29b88  gcc/tree-ssa-propagate.c
! 07e59fd4e9ac826434fa8f829a73c744  gcc/tree-ssa-propagate.h
! 59faa8c95f77da0555a53bdac1c4a5d2  gcc/tree-ssa-reassoc.c
! 4f7d545bd96bf81d7343beee53323b74  gcc/tree-ssa-reassoc.h
! 02a190ff043ec1d1ee7d005c5051a241  gcc/tree-ssa-sccvn.c
! cbdcf02ee4848c736cf8a9fee3c78084  gcc/tree-ssa-sccvn.h
! 654628a1f0f77b863091072217fd81f1  gcc/tree-ssa-scopedtables.c
! 89f4a37820db62debf8e9c7547c734db  gcc/tree-ssa-scopedtables.h
! b57aa1ae4c4ebdd9d5b46c4f18b15cbf  gcc/tree-ssa-sink.c
! dd6a2364f5f12e2e98ceb10340828c81  gcc/tree-ssa-strlen.c
! 07cd4ed8db0b69a9df3f67a6c078ee8d  gcc/tree-ssa-strlen.h
! e37f247907253fa236d651600e4c6e6d  gcc/tree-ssa-structalias.c
! 226048531a518fe848311ca013413b8d  gcc/tree-ssa-tail-merge.c
! bf108348124c2aac7c7af2dc30f64e06  gcc/tree-ssa-ter.c
! 3e90b0aab68f7d9ed5168674fd049e33  gcc/tree-ssa-ter.h
! 57f1c3e27b8887ac9fe030f1ae787a07  gcc/tree-ssa-threadbackward.c
! e84abc753936f66f2922f2fef9169ec2  gcc/tree-ssa-threadedge.c
! b252a171d500e0cab975d3ee869ac82d  gcc/tree-ssa-threadedge.h
! 289dbd01379dbac2fb32244c0816b67a  gcc/tree-ssa-threadupdate.c
! 7bc29409f7411f4024d12d0d0ac494ad  gcc/tree-ssa-threadupdate.h
! f8386c0188448d8e4805f34fc0e485b3  gcc/tree-ssa-uncprop.c
! 2656369fda9e05ceeeed5c8e63bd994a  gcc/tree-ssa-uninit.c
! 2ceed2501a970a43eecefa4e401075b7  gcc/tree-ssa.c
! b1739bf5d288192714af8e0c8b1c1e7d  gcc/tree-ssa.h
! e61b4c021883038ea2d1201943d95548  gcc/tree-ssanames.c
! 5f0d001d3a6ba13a46a13e9ddf70fd64  gcc/tree-ssanames.h
! 6b89d4f071cbcee468bb484d1d4fe8ac  gcc/tree-stdarg.c
! 61a689559ae01932bcf93a8d8a034772  gcc/tree-stdarg.h
! 395d076604144e22887bf06b1dc8c38f  gcc/tree-streamer-in.c
! 954a7fd2068acdcda6621cd8004fa7e2  gcc/tree-streamer-out.c
! 6df984e471ab742ef3369ec4dffb3492  gcc/tree-streamer.c
! 679b5e41ad5113e15652a39245e6ceb3  gcc/tree-streamer.h
! 428e1393db94bc3958397008a8e0c5e1  gcc/tree-switch-conversion.c
! 07ed53f04ac330417d211f27d5796a35  gcc/tree-switch-conversion.h
! 749044dc570d709e923db8e1de207a10  gcc/tree-tailcall.c
! f5527b36fb4e5f3ab29c5468f1a3ef84  gcc/tree-vect-data-refs.c
! 6a61c7d057809ad69acd5afa4f67e91b  gcc/tree-vect-generic.c
! dbdbae9b398a7e5dd71a8009845b190e  gcc/tree-vect-loop-manip.c
! e104b4e033dd1cbd6d279723c7b2b821  gcc/tree-vect-loop.c
! 9e035634c11fb6d4a9948fae9c3303fb  gcc/tree-vect-patterns.c
! 6bf58aeedde8ee3f430cebe4a95b1af6  gcc/tree-vect-slp-patterns.c
! bd42c54ebd1c738ac6d7bd333a7b4afb  gcc/tree-vect-slp.c
! d441cca1deb6dd29fe8ef6d73b80f950  gcc/tree-vect-stmts.c
! f6bd437c971fbfa030e5a50db314eb6d  gcc/tree-vector-builder.c
! ab254195b6cc59013f830527799845a1  gcc/tree-vector-builder.h
! a81602a0b8310bde0b9239772d873f96  gcc/tree-vectorizer.c
! 20f8d72d5098cab78386d5027e619573  gcc/tree-vectorizer.h
! b54ce4bde08399c6f5c90b9f9a513261  gcc/tree-vrp.c
! 8b2b735df1dd01f7b24caa58f59891c7  gcc/tree-vrp.h
! cd56bacaedd82976a6ad6347d519d10e  gcc/tree.c
! 54bdda1062541e94a710f93dc39c2732  gcc/tree.def
! 9804eeaa01ea646ef943be3c6282dab6  gcc/tree.h
! f5d9f8fed65a9d8d94c3bc3a54d17175  gcc/treestruct.def
! 29d87aedf6eb8f5f9b858b6ce49f18ba  gcc/tristate.cc
! 0462624e1a963d1b936e36b375115848  gcc/tristate.h
! 1fde85c0d9774255237e001636efb6c8  gcc/tsan.c
! f3391bab0a8e76804139f10f89a6d8cf  gcc/tsan.h
! 9cb449181fe6b6cec0f12c65964eed4a  gcc/tsystem.h
! e955740dbe777821f2cccc2f1ffe5c2f  gcc/typeclass.h
! 56044162f187e7865585c71c3fa369e8  gcc/typed-splay-tree.c
! 9db154ca9a8f61137a5d8cde9f565ba0  gcc/typed-splay-tree.h
! 675129fca3dbc0ed46dbd95c7511ba9a  gcc/ubsan.c
! c71a123f0c3811bd59554fb1ad3c863e  gcc/ubsan.h
! 20c6e75500616d21c9936946caddc196  gcc/unique-ptr-tests.cc
! 61db04b0d68ccf9e7c1f240c2ab64672  gcc/valtrack.c
! e9a5a2bcf328bb2c2dbec4ecfd97885e  gcc/valtrack.h
! 0195b138ae357db0146d1d1c4542e946  gcc/value-prof.c
! 70a81436a47247d33da6b1e9538938e3  gcc/value-prof.h
! caeec7cd819a00f5cf83cd1c83a1913b  gcc/value-query.cc
! edd2102162203ffa195120a8bbef433c  gcc/value-query.h
! c90e2e4149ffd9b0966fa09a2bffc523  gcc/value-range-equiv.cc
! b570e943102175a39a612c7e13a38a2a  gcc/value-range-equiv.h
! e4d9d9cdb525e7d4d2d226084ad63a4a  gcc/value-range.cc
! 7eb790da49702e486aaf0ee4596d259a  gcc/value-range.h
! 502ae3476543727b93da6dcf88a75a3c  gcc/var-tracking.c
! 91f9c0a61c99f1aae54084b8cbcaa13c  gcc/varasm.c
! b8d6bbc9c059388ffa49a3df1eeeb2aa  gcc/varasm.h
! 454e8d39b138d6457d65bb6ea63fc17c  gcc/varpool.c
! 55d5e60e44e9f699246223cdcfc9fd2c  gcc/vec-perm-indices.c
! 6353984e1ca13286eff3cf43e8d520ff  gcc/vec-perm-indices.h
! 4ecc71e38c46b8c91027a7a44f9d75d5  gcc/vec.c
! 36ae8a4edda8f57e338bf870c4db7ccd  gcc/vec.h
! 0f9cdb6c305c797c9c55f99c56df71f9  gcc/vector-builder.h
! 9ca53b68e03ebab990265fe20e74cc5a  gcc/version.c
  206ce76c6ce744048f99fdcc938dc713  gcc/version.h
! ec78e1611275c757f68d44bea88bc05d  gcc/vmsdbg.h
! 90a28bba6ee3fa798b0606eb522fd07e  gcc/vmsdbgout.c
! feb0f1090809a5824496be897d6524d2  gcc/vr-values.c
! 7313d73268b5a12a68f71d0b8448d789  gcc/vr-values.h
! a5ff571a86711f1889f6148b6f0a1a72  gcc/vtable-verify.c
! 96cbb704279567d3b85cd2fc89354218  gcc/vtable-verify.h
! 17a1eec99348d78186ba5c6f9b35bebb  gcc/web.c
! b35c7bd9acfca64983cd187331ce7fc6  gcc/wide-int-bitmask.h
! 8d3319eefa4768131dfef66304346db8  gcc/wide-int-print.cc
! 010cd322521c1ee0542f4081fab7aaf6  gcc/wide-int-print.h
! b7defe2c7e4731284f747aa156bda45a  gcc/wide-int.cc
! fe759b1aa00610d99f1520cfe196ce92  gcc/wide-int.h
! 3fbc3ce873dd1439e18734542a1cd26e  gcc/xcoff.h
! 5a99ef1e1f569bf6e04aebf72d4afad4  gcc/xcoffout.c
! b683ffab756b05a88907135f72dec974  gcc/xcoffout.h
! cf4c982b52cbb02e339d73793f5b366a  gnattools/ChangeLog
  aaa671ca98fa9f94bfedd0ab395c5505  gnattools/Makefile.in
  8385a4d775aa1b9949c1f88488491c86  gnattools/configure
  1e063bb0b806e41cc0ed23d1b7047746  gnattools/configure.ac
! f664a039c5c23d9dedb16260e730077d  gotools/ChangeLog
! 6f7b730e8dfbdff92349c010bb18cf00  gotools/Makefile.am
! 040d059ae30c619fdd918cd30bfbfae4  gotools/Makefile.in
  7e23031e2e274aaa07b61c1e8f18dc99  gotools/README
  bd839a9d17f6121cfd663f099d0bf44d  gotools/aclocal.m4
  6f26693afa3dd1a6616f8bddb895d528  gotools/configure
*************** c4e8176c1964a5ebe0a55900f2141299  gotool
*** 79450,79510 ****
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 7ab244eacc6261eef9491745c90d9053  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
! ca76b64dc47d03c76721ca95e36c7e3a  include/ansidecl.h
! ca32a1a1a7a3c145b39a44f35b6b103f  include/demangle.h
! 4edf065770486b1b7a5d19a727fb9483  include/dwarf2.def
! 9e9fe8dc312e840ae1232bf65fa74cc4  include/dwarf2.h
! a0fa47aae1246a5d7ab2cafc88f9d340  include/dyn-string.h
! 8bf0148b90b091965cbd688ad09e8aad  include/environ.h
! 82cfbbadc522422bbfcb9c659e421923  include/fibheap.h
! ea11197afc87cf9d943c66b6d0535bc0  include/filenames.h
! f9bd08392518fc4e8d93fd974851b09a  include/floatformat.h
! b3cac4eeb6f7177f068a362c1990bd50  include/fnmatch.h
! 5f684cbf6121bb7384d73cb62690fb7d  include/gcc-c-fe.def
! 70198c8f275dad5b18863af1974bd9a5  include/gcc-c-interface.h
! 9aa4def1ea25e62d34df53c35c0a7326  include/gcc-cp-fe.def
! b564b95cf65bbe0873727f68ef98ead1  include/gcc-cp-interface.h
! 59a832d2da896043248a5291867a5b9f  include/gcc-interface.h
! 6158da9e1dd5368d307a558d6f7e65ed  include/gdb/gdb-index.h
! 90ff919637002f8360dd6cb04113bd8d  include/getopt.h
! 596738cdfcbb4c1c353c2655d4bdf365  include/gomp-constants.h
! 8b8ec029bf92ec21185437b91b921d67  include/hashtab.h
! f751fcd40726cb1e8fd3f06e6c690a77  include/hsa.h
! 62073819d982d28def6d77eaf8875e99  include/leb128.h
! 690c2b3e76beb930cea20bff2c495039  include/libiberty.h
! 8ff14a314a731e90bd030dcdf47034be  include/longlong.h
! b30c7cc31890b990fc1316cd1afab307  include/lto-symtab.h
! a385bd5684091653efb6fa41a69cbcc6  include/md5.h
! 911c408325ac421cb11cfac2e3e07624  include/objalloc.h
! 6bb3255e68feca49751660a5f62421ff  include/obstack.h
! f06a99379b9e86fa3e274c29e8b08ef6  include/partition.h
! 81418d6f3620ca052d80e8b80ba761ca  include/plugin-api.h
! 310ea0fd94a113f27f18f0586426fd3b  include/safe-ctype.h
! 50e100c98a7470f850101e4e6430496b  include/sha1.h
! f292f6fc3de5ac0fa419c3c53bcf9ddc  include/simple-object.h
! 699b51d3c09b67570bfb5a76665dc536  include/sort.h
! d98d97ca92d6e9c1105c49ec6f0caffd  include/splay-tree.h
! 34e75c87c240012fdefbef7e8ce87647  include/symcat.h
! dcb1773a033208d8841e7aeb934766f1  include/timeval-utils.h
! b07687cc9e0f873ac2e25628c5e7912a  include/unique-ptr.h
! 05818513238b7ce854a37f55b18cfb3d  include/vtv-change-permission.h
  53bdfdb5cd3c0c7831611602041cda52  include/xregex.h
! 13e0194dd62a3563ba7c42d3db663f36  include/xregex2.h
! 6c83d27bff34846af1fad683ef5a77e3  include/xtensa-config.h
  361482dd6b5b5eb7090fff3986fba68a  install-sh
! 66012fc63bb7f5617b9bf5410b353cf2  intl/ChangeLog
! 6c0af929faaeffc788c3216c1a4fb769  intl/Makefile.in
  6ec998bb4716c744bf8185e607f69301  intl/README
  76ca170a525d5b84d90f0478fe788931  intl/VERSION
  03740a87284033311c5cb780e5c23315  intl/aclocal.m4
  d4abe82ea322701d2385778a2fcd0804  intl/bindtextdom.c
  f9a9ff3ee0a9b0465351b384e430bec5  intl/config.h.in
  8a751062d7db9b6e8163667e5626fcb5  intl/config.intl.in
! 27f396279c6c384f9336d9b442551ac8  intl/configure
! 1bf1c719db33902595cc1f1ad301445e  intl/configure.ac
  ff5c358b1507e45a2106b23b7e6c70a3  intl/dcgettext.c
  81b58accbd88cd8159471d322723c42d  intl/dcigettext.c
  0cfc94e602bc20d958f014c77ebf357c  intl/dcngettext.c
--- 85381,85443 ----
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! cd8c5c1edd9157895fa60d1b0151424c  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
! 550446a6d9ed6d7ecce30d964b346154  include/ansidecl.h
! b9f2abdb484349c4674123c7937348fb  include/demangle.h
! 36f9e6d0629d5abb921fe12d1ebd322c  include/dwarf2.def
! 84da15b7173bb85a0c5be931dbeb86ac  include/dwarf2.h
! cf63094bf22d9945789fb5eb99e16204  include/dyn-string.h
! 0208ddd695d30d8a519e9ac558ef5246  include/environ.h
! 3c830221d2fb463489389738f4021831  include/fibheap.h
! 3e84df8867070decab68eea63baf91cb  include/filenames.h
! 32a3d8341842d6c3cf879ed7578ac3aa  include/floatformat.h
! 7299e7b04ae3dd7ecb2357ce812baf2a  include/fnmatch.h
! bce12aa2a51b4162cd398a8c80d77c37  include/gcc-c-fe.def
! 748edd6c360ae3ab2aab761325a68ee0  include/gcc-c-interface.h
! aa72131014cb42cf9f06cd0622518db1  include/gcc-cp-fe.def
! b01d8568e468e579200cddb30a97684c  include/gcc-cp-interface.h
! 0b58a20ef4011a4ff58b6fddffe34223  include/gcc-interface.h
! 76f12a415e388a53a4f895188e8b67ea  include/gdb/gdb-index.h
! 673b00ab02254434eb28f32a15e70804  include/getopt.h
! dc0f6894d9dc96cb763d0121873c131e  include/gomp-constants.h
! 4b71989ca2016baaaf164cb1b9c33963  include/hashtab.h
! 18d01da8845d11d2091cf3787c4ad79e  include/hsa.h
! f9fafee2474590659930fb2d0db7be2e  include/hsa_ext_amd.h
! 9df4701c7f8f25d502bdadccbc97581c  include/hsa_ext_image.h
! 8ae8428dba08592e4b719f15fffff419  include/leb128.h
! 8837022eb1ac008f1a0b030a2b1635b7  include/libiberty.h
! 56e5abb81ce54ebe81061bc8b3fba7ab  include/longlong.h
! 6039e970a7b769f662d1dce0c63cc9f3  include/lto-symtab.h
! 29d5e8f081b181a467ebc37a1b63c762  include/md5.h
! 1351e66680f0928aaa3a118205ee615d  include/objalloc.h
! f6123ff1a70c222e453bb58cd3dbae1a  include/obstack.h
! f3685cdab53fd84f5b57474df3827884  include/partition.h
! b377ba16f7c57a8aec6edaae0ced0649  include/plugin-api.h
! c99cf30bc3e8c92049b2460719059e79  include/safe-ctype.h
! c47ae7aad04ce95b918313be400ccc98  include/sha1.h
! 86a5c2e89e33eeae4aa9353da892e2df  include/simple-object.h
! fa5cfe4ddef53228a8dd91a9a020c2a8  include/sort.h
! 4d91d2d5df45664e971b892a2d9cfcfd  include/splay-tree.h
! 2ea663683f7b0e823eea7eb22e5067bb  include/symcat.h
! f1ca1f76f904a2e350d2370001e07a67  include/timeval-utils.h
! e58c74ae29d8b45747b53a32b29ba5af  include/unique-ptr.h
! 9e5dc14fb3b04ccfe8861042d7b1a6f2  include/vtv-change-permission.h
  53bdfdb5cd3c0c7831611602041cda52  include/xregex.h
! a19eadb3ab028fbbb684ab26b212fe84  include/xregex2.h
! 05cc8ec924c7145a48d1d059c0b58df2  include/xtensa-config.h
  361482dd6b5b5eb7090fff3986fba68a  install-sh
! a3fa8f395c6b9105e2d23d7af143fcf0  intl/ChangeLog
! ad7ef2b19b44e4d5518287805d6ded02  intl/Makefile.in
  6ec998bb4716c744bf8185e607f69301  intl/README
  76ca170a525d5b84d90f0478fe788931  intl/VERSION
  03740a87284033311c5cb780e5c23315  intl/aclocal.m4
  d4abe82ea322701d2385778a2fcd0804  intl/bindtextdom.c
  f9a9ff3ee0a9b0465351b384e430bec5  intl/config.h.in
  8a751062d7db9b6e8163667e5626fcb5  intl/config.intl.in
! 4a98ca39ab304dee43eb01d10fd44b20  intl/configure
! 706cb9e3fe029c5e68f5744619801b92  intl/configure.ac
  ff5c358b1507e45a2106b23b7e6c70a3  intl/dcgettext.c
  81b58accbd88cd8159471d322723c42d  intl/dcigettext.c
  0cfc94e602bc20d958f014c77ebf357c  intl/dcngettext.c
*************** ec38b8a64a735196854a8f7d76b79a78  intl/p
*** 79538,79604 ****
  b4758a0194e3e41362b939911472ce62  intl/relocatable.c
  bedade7bcfc3bc5eb09a2c6844f637f3  intl/relocatable.h
  43f287d082528203fc85c1d2d81bf30d  intl/textdomain.c
! 4ef29422a48c5c740322f9fecac09623  libada/ChangeLog
! 4147e5cbf56998a5d7cf62fdba854112  libada/Makefile.in
  c851e0f50ad5e334f1cdf3b8c0bae3e2  libada/configure
! 45fd7edb8aa72c41d45412e88010a79c  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! f68762ac1d9d48bfdaae66c6b999783c  libatomic/ChangeLog
! d42e0b7d4357d88dd10273050673a93a  libatomic/Makefile.am
! 7386f3baeb9aa80af4a01a49d38f0c10  libatomic/Makefile.in
  879263fa8d462b018b9a483d6ac68e45  libatomic/acinclude.m4
  d93a7644df6ecd2eda448dcb5b1baeb3  libatomic/aclocal.m4
  b741b38c451feebdcd9aedce6e37b702  libatomic/auto-config.h.in
! ce2cf1f891412058740b2114ceee6ad5  libatomic/cas_n.c
! 827576f71a0db048553fd2dda51c437c  libatomic/config/arm/arm-config.h
! a13526b39b83dd609754e2740232525f  libatomic/config/arm/exch_n.c
  6b272347b6495b829ff036ddf4d65e93  libatomic/config/arm/host-config.h
  db43cf5a187a91251ef3198570679f95  libatomic/config/ia64/host-config.h
! 9278d8e22e87c726af63d5a29978f603  libatomic/config/linux/aarch64/host-config.h
! e00b0a9feca366401a8587f1fc041a46  libatomic/config/linux/arm/host-config.h
! f8a20d8b01db7dd616014bbaee8ad0a7  libatomic/config/linux/arm/init.c
! 8a6719ecf8113d5510e07399cdb95a25  libatomic/config/linux/arm/load_n.c
! 37c774ea2206fc594b6c223f0ec8abad  libatomic/config/linux/arm/store_n.c
! ab0d1ee01ecc3942215b128926b8e17d  libatomic/config/mingw/host-config.h
! e40ffd415624dadaa852688c304b3ff4  libatomic/config/mingw/lock.c
! 62454f6d9122051f8d0ddce5ca358136  libatomic/config/posix/host-config.h
! 6cf3dda596ce567fa1154b09f534df06  libatomic/config/posix/lock.c
  d04f86e742ddfedb71fb4a3d0ceede39  libatomic/config/powerpc/host-config.h
! 123597bc839cd5b14a4a4cb054c8376a  libatomic/config/rtems/host-config.h
! caa43be2ca8f1b926dd9c2c007e7b28d  libatomic/config/rtems/lock.c
! 971b5d8de77320963c1ba75ce62b82c9  libatomic/config/s390/exch_n.c
! d7c65698a2e7c7b08858f2afe9fc7b59  libatomic/config/x86/fenv.c
! 01cd847a8452ddeb89bd168abe8883c2  libatomic/config/x86/host-config.h
! f5ac0ec0371759c918422be1fa07158e  libatomic/config/x86/init.c
! 98ff888753ed554f687546febe35629a  libatomic/configure
! ea46a4ab8fd5701b489fba2c3d85e0d2  libatomic/configure.ac
! ef9d299ede61b6bef6eda39b98603d8a  libatomic/configure.tgt
! 71b0b296fae85d097876367201694667  libatomic/exch_n.c
! 99a6a7d0a50a360e80765d2776999812  libatomic/fadd_n.c
  ee6f02fad9bd551a906477f16740578f  libatomic/fand_n.c
! b850076f304b7d3d59da61ebfbaa88b1  libatomic/fence.c
! 24917ca01518ad5f7683f0e095447eef  libatomic/fenv.c
  2939db87e049993b583497188f079e6d  libatomic/fior_n.c
! cece8bc5869427811a8a6a60787691ad  libatomic/flag.c
  b3ccae58518e27bb730ed84c99a2eb0c  libatomic/fnand_n.c
! 50fcbd29eb1ef19e5dbe978b1309222e  libatomic/fop_n.c
  834a4e99e9b5231aaa54e4802aecb241  libatomic/fsub_n.c
  fb7579412eac2bf65459985ea4c7f320  libatomic/fxor_n.c
! ed903bde4bdf044eb06af5ae32e32161  libatomic/gcas.c
! ad3bdcd81cb259b4073ecd101f79133d  libatomic/gexch.c
! 4b1eff274758431fab71cf1cf06f5774  libatomic/glfree.c
! e28074acd8b370ddbc8ce59db4b41fca  libatomic/gload.c
! 90e5174e18876d420bb65d66d1b604b1  libatomic/gstore.c
! 77e8457537b92fc8db347027224f7e0a  libatomic/host-config.h
  0e7ef9ed2b60ec1c9afc38701d815f6c  libatomic/init.c
  2fe463a1aa0855eab0961f927f300752  libatomic/libatomic.map
! 6d80b51462d8a834a094a42a2aac2977  libatomic/libatomic_i.h
! 72d3a8d13dcbdce509e20e82719168dd  libatomic/load_n.c
! 6420dc8a5a35e5f34d02bce5819186cf  libatomic/store_n.c
! 6204c49728d6f8d78c53df5c4ff30891  libatomic/tas_n.c
  8772872393a7b4f226a2ff99cd0767b9  libatomic/testsuite/Makefile.am
  cf82f0c401eb889e2309404fa133f087  libatomic/testsuite/Makefile.in
! a9cb05f5a6766b7308f774d673ffcdf0  libatomic/testsuite/config/default.exp
  3e77a79fd1e00a1f4e5fbf507474e1e5  libatomic/testsuite/lib/libatomic-dg.exp
  930ac630fd95841528d4df333d275f9a  libatomic/testsuite/lib/libatomic.exp
  97fdc33cc25788d4b9dc1db6aefed760  libatomic/testsuite/libatomic-site-extra.exp.in
--- 85471,85540 ----
  b4758a0194e3e41362b939911472ce62  intl/relocatable.c
  bedade7bcfc3bc5eb09a2c6844f637f3  intl/relocatable.h
  43f287d082528203fc85c1d2d81bf30d  intl/textdomain.c
! ade96f5b53eef5e9e90df3aebc19afdd  libada/ChangeLog
! 84bf37346561835ab6fb79f3753dbf61  libada/Makefile.in
  c851e0f50ad5e334f1cdf3b8c0bae3e2  libada/configure
! ad0c7ec998fb800e00bc645459274350  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! 87d25f8cefe2e7aeefb1f51ab2badfd1  libatomic/ChangeLog
! 922dae05f77c88f663c9b7da78bd3893  libatomic/Makefile.am
! f4aba227936166f80f843dbd2127d574  libatomic/Makefile.in
  879263fa8d462b018b9a483d6ac68e45  libatomic/acinclude.m4
  d93a7644df6ecd2eda448dcb5b1baeb3  libatomic/aclocal.m4
  b741b38c451feebdcd9aedce6e37b702  libatomic/auto-config.h.in
! 0dfac83b06767f0706940fee0a1e29e5  libatomic/cas_n.c
! 9b15bf6c20b3a01290d8f5964cac5041  libatomic/config/arm/arm-config.h
! 920f6c9a9b64978191712667491d2e19  libatomic/config/arm/exch_n.c
  6b272347b6495b829ff036ddf4d65e93  libatomic/config/arm/host-config.h
  db43cf5a187a91251ef3198570679f95  libatomic/config/ia64/host-config.h
! cbf45d9ef0beca8189dca5a0677f51c8  libatomic/config/linux/aarch64/host-config.h
! 514bea4f5dfb07992e062389ac581bbe  libatomic/config/linux/arm/host-config.h
! 45f052212c23517fe09e2ab6025627f4  libatomic/config/linux/arm/init.c
! 98d162de0711194d4ffaafb4470d6e80  libatomic/config/linux/arm/load_n.c
! b2243dc22cf112c0b236469f403c0342  libatomic/config/linux/arm/store_n.c
! e2be60cf185c2bc86a3fb6efecd31da5  libatomic/config/mingw/host-config.h
! 686904df2ca95b9bbdba6673545f1ea8  libatomic/config/mingw/lock.c
! c37d3f91de16c482e100722f10f74959  libatomic/config/nvptx/host-config.h
! 2a25936bdb78024c2cb6d33895b1af6e  libatomic/config/nvptx/lock.c
! e5afe77110b6d4c991ded92ab19ff55f  libatomic/config/posix/host-config.h
! 09129bb16d2f1235b2b717839d7acfb3  libatomic/config/posix/lock.c
  d04f86e742ddfedb71fb4a3d0ceede39  libatomic/config/powerpc/host-config.h
! ff19d9adec40aace68f117295ca8e962  libatomic/config/rtems/host-config.h
! d162950eb155d3f7b71fa7fd06738e07  libatomic/config/rtems/lock.c
! dde9dd7b7e923b04f6925736c96905aa  libatomic/config/s390/exch_n.c
! ed3d69739cb2f35407547229f0393f92  libatomic/config/t-aix
! ad77cb9ee31bb899efbe3bbf69552fd8  libatomic/config/x86/fenv.c
! 924b44ec023f86a0e8f5f15ed76918cb  libatomic/config/x86/host-config.h
! 795644fd52328104fd3069e7190db57b  libatomic/config/x86/init.c
! 1a3caf1a22e09fc89766313026e541e3  libatomic/configure
! 009993f4c4928e75d0ab6d3d73aab846  libatomic/configure.ac
! 87f2fe7e2bce59d09f679252f292d515  libatomic/configure.tgt
! db08dc16881fd6daa9ecf00a7c8295c6  libatomic/exch_n.c
! dd13a88b58fa0a020ba4360094fcb212  libatomic/fadd_n.c
  ee6f02fad9bd551a906477f16740578f  libatomic/fand_n.c
! 7b08a6e5f10aa5b235b042c333f150de  libatomic/fence.c
! 1a75b5940816c57b7c8f0edd86bde997  libatomic/fenv.c
  2939db87e049993b583497188f079e6d  libatomic/fior_n.c
! ae331390ab86125f1bc84bd9cf4a04f4  libatomic/flag.c
  b3ccae58518e27bb730ed84c99a2eb0c  libatomic/fnand_n.c
! a850a59372bbfe9fa394182b171f163c  libatomic/fop_n.c
  834a4e99e9b5231aaa54e4802aecb241  libatomic/fsub_n.c
  fb7579412eac2bf65459985ea4c7f320  libatomic/fxor_n.c
! 6f489ba5a865dec6646d91579b6029bc  libatomic/gcas.c
! 48116181d56d07d23893259d7f73fd8f  libatomic/gexch.c
! 878b8d1f170069c64294cf9a0b164af6  libatomic/glfree.c
! 691ded02e29433a55ad8f4a626f02505  libatomic/gload.c
! 6de800d761c081449ad4bd5c3596a727  libatomic/gstore.c
! 39014a8e7c17aac084e0dfc93f451a18  libatomic/host-config.h
  0e7ef9ed2b60ec1c9afc38701d815f6c  libatomic/init.c
  2fe463a1aa0855eab0961f927f300752  libatomic/libatomic.map
! 359aa84b5950b08632d9ce2e383b1aff  libatomic/libatomic_i.h
! 1d1b8d6de63d483c6a4ec28ee0c8f4bd  libatomic/load_n.c
! c4956ceab834f8f4a07f1a8b92cd97dd  libatomic/store_n.c
! a2695fe2e0d0eda34a4263ec79c6413c  libatomic/tas_n.c
  8772872393a7b4f226a2ff99cd0767b9  libatomic/testsuite/Makefile.am
  cf82f0c401eb889e2309404fa133f087  libatomic/testsuite/Makefile.in
! c09f570c398098186715184415926c1f  libatomic/testsuite/config/default.exp
  3e77a79fd1e00a1f4e5fbf507474e1e5  libatomic/testsuite/lib/libatomic-dg.exp
  930ac630fd95841528d4df333d275f9a  libatomic/testsuite/lib/libatomic.exp
  97fdc33cc25788d4b9dc1db6aefed760  libatomic/testsuite/libatomic-site-extra.exp.in
*************** b9a9c594c7178ec288a4de786dc43b9d  libato
*** 79612,79618 ****
  9df7aa49b0d5a0cfa94501d4294f9dbf  libatomic/testsuite/libatomic.c/atomic-exchange-3.c
  56cb727df204e2feb7b3e6e2bcad7c76  libatomic/testsuite/libatomic.c/atomic-exchange-4.c
  509bcb20000e829e3c5c8e2be8aa7dfe  libatomic/testsuite/libatomic.c/atomic-exchange-5.c
! 465aa6f421e31cf3843865f7ee80a8ce  libatomic/testsuite/libatomic.c/atomic-generic.c
  b975ec43850e76ca7b2250b591b225ec  libatomic/testsuite/libatomic.c/atomic-load-1.c
  715c0d37c5da280cce60baef8c076f7b  libatomic/testsuite/libatomic.c/atomic-load-2.c
  1e7c0c1bd858f97f053174731099c1a6  libatomic/testsuite/libatomic.c/atomic-load-3.c
--- 85548,85554 ----
  9df7aa49b0d5a0cfa94501d4294f9dbf  libatomic/testsuite/libatomic.c/atomic-exchange-3.c
  56cb727df204e2feb7b3e6e2bcad7c76  libatomic/testsuite/libatomic.c/atomic-exchange-4.c
  509bcb20000e829e3c5c8e2be8aa7dfe  libatomic/testsuite/libatomic.c/atomic-exchange-5.c
! 508f0873b4296d6e5b0db0d4bdaa8a29  libatomic/testsuite/libatomic.c/atomic-generic.c
  b975ec43850e76ca7b2250b591b225ec  libatomic/testsuite/libatomic.c/atomic-load-1.c
  715c0d37c5da280cce60baef8c076f7b  libatomic/testsuite/libatomic.c/atomic-load-2.c
  1e7c0c1bd858f97f053174731099c1a6  libatomic/testsuite/libatomic.c/atomic-load-3.c
*************** c03a072efac9b30f8f8429ac52fd246b  libato
*** 79630,79851 ****
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! a09fb2ab04a434eb784922822b365be8  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
! 0dee96cf83de0ad4944443622f9379c8  libbacktrace/Makefile.am
! cbc7c8020c0f8dcfa2d2a373f6da7e8b  libbacktrace/Makefile.in
  1987c0495aeee1bc47709f399772173b  libbacktrace/README
  9535fdd392305d7ecfe0d5a189cbd85b  libbacktrace/aclocal.m4
! 4e42c41d46612729c402381232ac3e1b  libbacktrace/alloc.c
! c48ce2a018f8a41f3f3b77fdc718ccfc  libbacktrace/allocfail.c
! afaf16105b87be5eb985e7c3f575218e  libbacktrace/allocfail.sh
! f175b907ae683da8043e40adf072fef2  libbacktrace/atomic.c
! 5d9ac8e9bcd87bca74d1ae9c6eb1f110  libbacktrace/backtrace-supported.h.in
! 14d88791dd7464a19fa444d80a1adee8  libbacktrace/backtrace.c
! 5f6ab8e5876d84354552c20ab79abb16  libbacktrace/backtrace.h
! aa64fd5ca71dc833efcd4dd0249cdf92  libbacktrace/btest.c
! 3de9406c3fff6b4b0d3a6a36297b4e6c  libbacktrace/config.h.in
! 38b6f167aaa18dbe049fa19dc7eac0a6  libbacktrace/configure
! 1a4e22efbcabfbaa5a4b31fa6181d4cb  libbacktrace/configure.ac
! c3a7e2da5f1eba46cd03c67f85c5b44e  libbacktrace/dwarf.c
! 5e511438b60662ff0c12487860eef93f  libbacktrace/edtest.c
! 0b133c8ee05a51e2b5b9c8965c8969d5  libbacktrace/edtest2.c
! ce4306cf017a7335bbffba1f8a794dde  libbacktrace/elf.c
! a54eae6a2e93e2e27959a06fd8dc964f  libbacktrace/fileline.c
! babe8fbbbaf421cfc76aee1d7ceb5f6c  libbacktrace/filetype.awk
! f2a12b5c50534ed3557c93fa989e9df3  libbacktrace/install-debuginfo-for-buildid.sh.in
! 329faee3dd0ad79225ed8862577a7289  libbacktrace/instrumented_alloc.c
! 6a84fb2a411fb9b64eccc809042e1dd7  libbacktrace/internal.h
! adfebc3158857c1122cb8a593924a95f  libbacktrace/mmap.c
! e113a7e795999028748f4a240fcde32e  libbacktrace/mmapio.c
! af7947a33fd7c4c164725f5b2dd6a5be  libbacktrace/nounwind.c
! caf01dc48e141d05c2d6162fe055d602  libbacktrace/pecoff.c
! 05ac51f55126ff0c0139dbb65a5860f7  libbacktrace/posix.c
! 48719eb435d58acea87068d174f065ff  libbacktrace/print.c
! 5974f34b006c9b7b1720a5281b1aa8dc  libbacktrace/read.c
! e23ad7e5d22bdcdc835f0955a6d732ac  libbacktrace/simple.c
! 464c283b4d8bf1bd2375232dc04f7356  libbacktrace/sort.c
! 0d157c93682ffbb17143de1d1e4f51d8  libbacktrace/state.c
! c30fb6721affdd9097024f46763f4445  libbacktrace/stest.c
! b8aa9b634f14f9080520db512024f824  libbacktrace/test_format.c
! ba8bd5970e9c76383500e5a7d0a90c9b  libbacktrace/testlib.c
! 3f3659d7f91a7515d1e3af3a4e4feff0  libbacktrace/testlib.h
! ff2c36bc7f1183e6f4ec9aff03c769ff  libbacktrace/ttest.c
! c3e362d9085bb7d5ac4b6cc0d299e9b3  libbacktrace/unittest.c
! 230c6487aa41dcf6385603f0eba3f318  libbacktrace/unknown.c
! 38f8a61f09ebf0daecf10ca78c228587  libbacktrace/xcoff.c
! 2573cfcfdf54eb3b48c559e89d4b8e0b  libbacktrace/ztest.c
! e4ad7b8af8f669f9e7ff0b1135aedd81  libcc1/ChangeLog
! baab0b5d60cfec15cbbbc77c284278bf  libcc1/Makefile.am
! 8a80975533399433776d66d49b69a73e  libcc1/Makefile.in
! 951b88f5687afa4f7735d87a83007fc0  libcc1/aclocal.m4
! f0df7070bae3a278b57061df18deac43  libcc1/callbacks.cc
! 848895a5263c502c808ebf9f7b277797  libcc1/callbacks.hh
  9d81ce1461f24e4af7c8639d94f06789  libcc1/cc1plugin-config.h.in
! e5c428702a8fc836fc2c8dd44cabb5db  libcc1/compiler-name.hh
! f1d6941763e86a10c71374d58ded2a6e  libcc1/configure
! f8b1361b2c14b495346b5fb9c99d67a3  libcc1/configure.ac
! af24644f853ed985c4a0d622aa0213e0  libcc1/connection.cc
! f2748b19b9e44371bdc10aa513b220e3  libcc1/connection.hh
! 1743202f16c5f5562a5927277f51c0c4  libcc1/findcomp.cc
! 909a53c6ba142999dd02c4c53ae763a7  libcc1/findcomp.hh
! 3bf0a138c2299a0661b30ededb0d2d33  libcc1/libcc1.cc
  99b3a25ce17ed584d9f0aa42b4713938  libcc1/libcc1.sym
! 0b1e6b6d4f529fbca7cbcd5a1f0b68a3  libcc1/libcc1plugin.cc
  75503db6a0981a95d9c29d9607b29380  libcc1/libcc1plugin.sym
! d9d3b11e592cc7ff142790df04655741  libcc1/libcp1.cc
! d78966f9d80742b3393355b44e98c8fb  libcc1/libcp1plugin.cc
  75503db6a0981a95d9c29d9607b29380  libcc1/libcp1plugin.sym
! b3af03e33f43aa92c6fd8d2022beb493  libcc1/marshall-c.hh
! 9d342eca5148c1b29ee69c3b2b41c6dd  libcc1/marshall-cp.hh
! 29e5cf7716149390a60e8c936acbeb9b  libcc1/marshall.cc
! 0bc5bc12b40d8be4cd5cef13bc90e66b  libcc1/marshall.hh
! 0c52860e454cb9e8f20b6d6d204d7f20  libcc1/names.cc
! 95b7cbcd3c24af802f4a02f68e2e3304  libcc1/names.hh
! 755ea5d706408ca766c27354ac24d0d2  libcc1/rpc.hh
! 577d73d4b34d5f45d090858af7a98d82  libcc1/status.hh
! e21102128d8e5a4a94094c6dc6e18fd2  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
! 83cc3f43bcfa51a6019c4dbff5d9e6e6  libcpp/Makefile.in
! 5f73e265652f92a8ad72a80124ac7061  libcpp/aclocal.m4
! a11c54df92a2483fa9c0fadc7a4f8081  libcpp/charset.c
  a82e3eb1d8561484e9ba80fe49aaa3d2  libcpp/config.in
! 4cfab6637ea3472b21f31ea4e3bb53a8  libcpp/configure
! db98df9b3eb19f4fe581a917e87c5a57  libcpp/configure.ac
! 5450be14c9a74629a46f3fa6a948d86e  libcpp/directives-only.c
! 099026926c7b1f456f702fff004c284e  libcpp/directives.c
! 3eb366a5c93bc8bd46ecd4ce655e4241  libcpp/errors.c
! d6706f28e9bf14766614dbc96ee268cc  libcpp/expr.c
! d6df522c695dd05a286e3148c12c34a9  libcpp/files.c
! caace99b7a2c4dc8f56bc1d8e7c79366  libcpp/generated_cpp_wcwidth.h
! 559d2467c9b9963ae437b4384c135f4b  libcpp/identifiers.c
! e16f6fa002f6cb922a4949b0e7ffa288  libcpp/include/cpplib.h
! 35bd100d00db99ff830de34cc19f183a  libcpp/include/line-map.h
! 3598f02c845c49c4b5e117e8ce2cd8aa  libcpp/include/mkdeps.h
! fef5fc761de09b42a55bc9da0bbe337d  libcpp/include/symtab.h
! fcfb9c48269d85d0092955620c55d418  libcpp/init.c
! 846dc67c378d3d3ed8bd076c28d72a88  libcpp/internal.h
! ededadf8b39a4b8c87ecc933525e7132  libcpp/lex.c
! ec2b89a46d9013e7072891a16423d484  libcpp/line-map.c
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
! 12ea5b1840b7e37f2e14cc541fa1e2b5  libcpp/macro.c
! 9bffef71f0dc7c27e6e9670482b78334  libcpp/makeucnid.c
! 6489fc7f57fdb7d583e7147ff0522602  libcpp/mkdeps.c
! 495ec808fc38a61b2088dbfaabe9c5cd  libcpp/pch.c
! 6b210e3043be7cc7249538fdab041a72  libcpp/po/ChangeLog
  236a7764238de3aa208e3a857c56f478  libcpp/po/be.gmo
! e3ee1b4c54df1144bdb2156cd4af4f8e  libcpp/po/be.po
  a64f63d1193f804860308855177c5f6a  libcpp/po/ca.gmo
! f318a77dc858ea56af3cc4be5d200700  libcpp/po/ca.po
! 1eb50437b0a6ea254c6aaa3657c4ac1c  libcpp/po/cpplib.pot
! 1688d7c1ac42993ec98431a491fdb56d  libcpp/po/da.gmo
! 0b40dd541cd6e61f6f0569e05b7f7bbc  libcpp/po/da.po
! 3e763615050115f46ca37ed998ef4dc6  libcpp/po/de.gmo
! 7cb5cff02a6c4e84a5d7d61fa3dca35c  libcpp/po/de.po
  e0c8ada187620b9ddd9901f9f12e343a  libcpp/po/el.gmo
! 4478824ef6f6ae15a96a28995054494d  libcpp/po/el.po
! b8451c6d54b48ad2c2ca9e4126ad5142  libcpp/po/eo.gmo
! c542bc43a3df3b4a8da0cb56a8052d43  libcpp/po/eo.po
! 79c42a854a1314c2120910a7b9a96137  libcpp/po/es.gmo
! c93c467bfb125d876b827f82bf3293ae  libcpp/po/es.po
! cf6bed79cbb17af4679be6129c51ee2b  libcpp/po/fi.gmo
! a2f3652d46ba136a8d6cb595e3aabfea  libcpp/po/fi.po
! 2ab41dc58fea35b5f84964286cc3fd17  libcpp/po/fr.gmo
! 0fb42e73be3794edc5c35bc254de0c69  libcpp/po/fr.po
! 74c1eb8c5483dd6b9bc74b6202b0b320  libcpp/po/id.gmo
! a774f1fe2ff82386c7a55108b02c52de  libcpp/po/id.po
  7e86ebfd3138f73b03c11d5bd04b68fe  libcpp/po/ja.gmo
! a54d912510224458a4665c22a09b7c57  libcpp/po/ja.po
! 265a80eece245859660bea6e2a0dcf3a  libcpp/po/nl.gmo
! 8bec08929b180d2d58e41c27fae9bd0b  libcpp/po/nl.po
! 16990e3aabaf32478eb6deddfe4684f6  libcpp/po/pt_BR.gmo
! 71b80a55791e64f15e5343cbd2afc2e5  libcpp/po/pt_BR.po
! 0bc48aab5ef2e08542530f3526bd2832  libcpp/po/ru.gmo
! c83e70791d9ffd70ea2899b2d6cfa98d  libcpp/po/ru.po
! b0a15ebcbfbeb62c62de656757ffb4ef  libcpp/po/sr.gmo
! 92a36446c44aa79efc16e97e311d078c  libcpp/po/sr.po
! a5104e9e79c0d8a8a0132496775c6e91  libcpp/po/sv.gmo
! 76ebbc81fcae560a58c02e0c7352f887  libcpp/po/sv.po
! c0743635b039c05e512fe59174e5803b  libcpp/po/tr.gmo
! d2a87338797f0fdeb802c924da7bb50a  libcpp/po/tr.po
! c9661a5ebcf4e46969df466554364b57  libcpp/po/uk.gmo
! cafa4ad9cda4fd0a0e81bfdac6ea3582  libcpp/po/uk.po
! 0b49d23e6164ca39210ccd3a2d301048  libcpp/po/vi.gmo
! cb331b4ad749261f7c1436e9d62e7174  libcpp/po/vi.po
! 9880036885ce3f5adb8c6de16cfa6019  libcpp/po/zh_CN.gmo
! f2a0f3e6943c36330b4b1af7de49c921  libcpp/po/zh_CN.po
! 69ea4caa8525ab1ca47612f557931a40  libcpp/po/zh_TW.gmo
! 0b834e55a20e5bd5644c1b43c6d37a09  libcpp/po/zh_TW.po
! 6f58b9bfd705894bc916fc9961e77007  libcpp/symtab.c
! f15afc03bd997db77424a8404de0ba1e  libcpp/system.h
! 340b819561d5abce05000dcea91ec2f9  libcpp/traditional.c
! b9ceddedbc75716da73d649fb6c90584  libcpp/ucnid.h
! 3dd5221704b1febaea71e979ee418d16  libcpp/ucnid.tab
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! 782b8b1e8c97f1f85b1a1a22769a5aec  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
! d692c4e4e0b6dff10132a781dc3115ec  libdecnumber/Makefile.in
! 5f9283b55276ee7e43f1b2d807e0d85f  libdecnumber/aclocal.m4
! c03c1c6a3dd3c572f9678597e0ef56f5  libdecnumber/bid/bid-dpd.h
! b10ae547e70b52648f61a551955c77e5  libdecnumber/bid/bid2dpd_dpd2bid.c
! 28a6bc4b32ee9bbfcf711ee1c49479f1  libdecnumber/bid/bid2dpd_dpd2bid.h
! 7a3352ca99d0b68c42bd98433fc210c3  libdecnumber/bid/decimal128.c
  47afd72790bc284aceb5a23597cc6146  libdecnumber/bid/decimal128.h
  f8df5b96d86c867ad233c6f0d3e2541f  libdecnumber/bid/decimal128Local.h
  eab7eeba10520ab4a805774d42b8f9dd  libdecnumber/bid/decimal128Symbols.h
! 4e7fc4331131013cfb2bfffbdb0b291d  libdecnumber/bid/decimal32.c
  43b6b2bd872ad984104804b1b20fb10c  libdecnumber/bid/decimal32.h
  c5864ab84549ca0f34188ce5b057bbee  libdecnumber/bid/decimal32Symbols.h
! 535119d6e70b5db42e5f91db6923b54f  libdecnumber/bid/decimal64.c
  8c612aadae9886f1a72212f93d8651c0  libdecnumber/bid/decimal64.h
  9f903ba71afb574bfa3a0f3cd2f9fbc7  libdecnumber/bid/decimal64Symbols.h
! 84d7744910113740f8c56faec3190cf2  libdecnumber/bid/host-ieee128.c
! 779d44cb273fe8cfcd394055f97ca7ea  libdecnumber/bid/host-ieee32.c
! 88d03994d935f66499a6038f74081007  libdecnumber/bid/host-ieee64.c
  76d4afd0dd1c0f5e776cbc40cf2e91b3  libdecnumber/config.in
! 5ee9e401f58463e94d9f872584bad1f0  libdecnumber/configure
! 7901a2ad87d15d077e5fd8fc4e06f74e  libdecnumber/configure.ac
! f4b5f0619a403f22a20b5435db3d4f9e  libdecnumber/dconfig.h
! 6c569a459a12f90bee3cfe4d0c369af6  libdecnumber/decBasic.c
! 781c5235a199ca27653ad01870ed6948  libdecnumber/decCommon.c
  2f89d012c7a8a2912e7dce02bd4a08dc  libdecnumber/decCommonSymbols.h
! 252c950bf4da4bb2cbe8571276da0b24  libdecnumber/decContext.c
! 51bdf79e24f6883f0b2fc7ffd8832c88  libdecnumber/decContext.h
  53b67627dab6d36fba960317d84c1487  libdecnumber/decContextSymbols.h
! ef7c262a15e5a40a8169b7d7e0a80831  libdecnumber/decDPD.h
  8f3ac08d4cc421cc89035e90c890bb09  libdecnumber/decDPDSymbols.h
! dd46815fb4cf4ed75cec40a6679c1b42  libdecnumber/decDouble.c
! b5c7a9db494c1cfbecf84ac0cd340676  libdecnumber/decDouble.h
  22e16083bf3d0b76c4736f7f6382cfb6  libdecnumber/decDoubleSymbols.h
! e4325dc8efd0adae095cf325d1d42311  libdecnumber/decExcept.c
! b0c2578551b1f1f8890aeead9ebeedc6  libdecnumber/decExcept.h
! 93f0a84c85a794b30c9cba341e0155c7  libdecnumber/decLibrary.c
! 42899f4912bf9a8b3245c1247d59dea3  libdecnumber/decNumber.c
! dd363a81d0f8abee740529e798485ae7  libdecnumber/decNumber.h
! ed986a19e0588d5e86d1f96a2676477e  libdecnumber/decNumberLocal.h
  dd46d36cafe0d7dcb669ad059fbed9b6  libdecnumber/decNumberSymbols.h
! c0a8a9faf3e2416f3263439538cb2613  libdecnumber/decPacked.c
! 841542c440f3264910670553b0f23a94  libdecnumber/decPacked.h
  287ad6ebf8b8179aa843368e9600a3fb  libdecnumber/decPackedSymbols.h
! f982108a16caee9a9180d0b2c2e57e31  libdecnumber/decQuad.c
! d9380472aa82149058bf756b39e1ec4d  libdecnumber/decQuad.h
  3851bae03416db42a85be1c5610f438b  libdecnumber/decQuadSymbols.h
! 9571e9bb1d0206c8a9d264c3a7d9f688  libdecnumber/decRound.c
! ad0df00998abfe1081bb9d9a1188fd7f  libdecnumber/decRound.h
! b90a801240860eb9bc86bd44c6099b97  libdecnumber/decSingle.c
! b3c091d6b33629130c623a10186a79cf  libdecnumber/decSingle.h
  8998c4f3e69ea3d218b574a2defb9a98  libdecnumber/decSingleSymbols.h
! 454be0f735b90e6dc01638d256569d02  libdecnumber/dpd/decimal128.c
! c5865c6111b558eb544bcfaf971d4ff6  libdecnumber/dpd/decimal128.h
! 2191405b58825313793c63fe889f7840  libdecnumber/dpd/decimal128Local.h
  2f6da07ba897ca626a4f6d283feeef93  libdecnumber/dpd/decimal128Symbols.h
! 0c4516a5856c60d9a92739a6fe7b62e4  libdecnumber/dpd/decimal32.c
! 25ddb261af85c0076d565ddea35ea537  libdecnumber/dpd/decimal32.h
  a97c47969dfc92a7666dfe3c2e1e1448  libdecnumber/dpd/decimal32Symbols.h
! 91741095dde1e8d43321a7d2c8af9ef0  libdecnumber/dpd/decimal64.c
! db0cc15dc64e7d60a762ebe3bb6a6921  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
! 3212594b762d66b37368e293efd04cea  libffi/ChangeLog
  ba66fc19311348d373ec271be939a659  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
--- 85566,85811 ----
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! 7837849647348ad5c2ebd6653079dc59  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
! e2733ae499e3face714f963e5163ef66  libbacktrace/Makefile.am
! f5ab4b9f2111a21142693282701ca531  libbacktrace/Makefile.in
  1987c0495aeee1bc47709f399772173b  libbacktrace/README
  9535fdd392305d7ecfe0d5a189cbd85b  libbacktrace/aclocal.m4
! 56c517f9531243411b8204694d2cdb93  libbacktrace/alloc.c
! cec2a0742e0d0695ab075e3ce56c6033  libbacktrace/allocfail.c
! 9668d8b48e9a11bf52afc5c0ff036490  libbacktrace/allocfail.sh
! b2284fe811383cab42583ff1ed4d5f3c  libbacktrace/atomic.c
! a281c599f8943bea46ec54c1ac4f5b0d  libbacktrace/backtrace-supported.h.in
! f0cc46ae18f6da534e37ee98f28e087a  libbacktrace/backtrace.c
! 1b62940ba9568c49550af0f86854ae1e  libbacktrace/backtrace.h
! 835a434f8fcb1a60ddb9eebcd68408e3  libbacktrace/btest.c
! d80381bdd74336b121a4f087efc21dbb  libbacktrace/config.h.in
! d1418b611141fa519422bf7c3b23bd4f  libbacktrace/configure
! 2006d2c63ba78e88d0197518e9f1da39  libbacktrace/configure.ac
! 23e38004a377b1c44be693ecc4df9eab  libbacktrace/dwarf.c
! 76c5e0d3a0d54dcbcb68302b66436bd3  libbacktrace/edtest.c
! 95a5d42360102b1b5c0929af9f25b1c3  libbacktrace/edtest2.c
! aa01992f9b2d8f4b4de2d4d9a292de79  libbacktrace/elf.c
! 49a265e368aee7757657b72d6489a1a4  libbacktrace/fileline.c
! 4fefdf2c043fdefb2736e03efee4b2c3  libbacktrace/filetype.awk
! bdfe9d52f159503041f09dbd8f9abc63  libbacktrace/install-debuginfo-for-buildid.sh.in
! 1012416ae0a0300da967a330487fa352  libbacktrace/instrumented_alloc.c
! 3eb7f72d336c2f54c770eca0fb1bd572  libbacktrace/internal.h
! 746411f9fc283ffcfe26ec9c90bbb5de  libbacktrace/macho.c
! 6931de79a2062859253c2736fb416d98  libbacktrace/mmap.c
! 305a4af3007aac6ce2d73ff628878557  libbacktrace/mmapio.c
! 0bd2093fa50bb79c51575c9f64c7c738  libbacktrace/mtest.c
! c3813d2480fe62a7927b5e5c9f69df0e  libbacktrace/nounwind.c
! 8c83b8bb433653b5dcb6997bf891fa80  libbacktrace/pecoff.c
! 77350140806506cb9d153a4e8ee2fc41  libbacktrace/posix.c
! f2ca14c6e8987e23e11d1635977b01d6  libbacktrace/print.c
! 753a78be14d2826ff76815808190f8dd  libbacktrace/read.c
! 0009b5571bfe02444c9b93c7b16ddeca  libbacktrace/simple.c
! dc819c0d255a1c979d7525947c5345bd  libbacktrace/sort.c
! 9aa300402550fda996eff1835bb924f9  libbacktrace/state.c
! 7d77a598133806ca3761aa7aadd104e7  libbacktrace/stest.c
! 56fa2775c3d1b5c26d8d1f95b41107e1  libbacktrace/test_format.c
! 23ac421e3a3e85ccb4f98d66d25ee8a4  libbacktrace/testlib.c
! 8d7509d08e22d36ae147545e1fb63f03  libbacktrace/testlib.h
! e1c655e8134d12f3dbd29ce427d37cea  libbacktrace/ttest.c
! a1a0a081f4a744549061bcb3714c3dad  libbacktrace/unittest.c
! 6fe372ba8f3db2f75f9a67efd6d5a0f6  libbacktrace/unknown.c
! 45e5c08b384a557511236842576c4857  libbacktrace/xcoff.c
! 16559a9b859947ea3f119724e6184a22  libbacktrace/xztest.c
! b4592ed6fe2affe39672dd913198f71a  libbacktrace/ztest.c
! ccba986a633363b825ff3911c8cc12b4  libcc1/ChangeLog
! 36dccf888ad4d720aad953f9d1fdf727  libcc1/Makefile.am
! 54fcba752e9163855202b48e7c2629f6  libcc1/Makefile.in
! b39668f1b706dbfe7203b3cfa277b792  libcc1/aclocal.m4
! 172f476a3d4be4642f41572fcd6af466  libcc1/callbacks.cc
! dacbc72f845a0578ce36bfcb8cddb3ba  libcc1/callbacks.hh
  9d81ce1461f24e4af7c8639d94f06789  libcc1/cc1plugin-config.h.in
! 6ac121324d6bdb3b24f32498fb21206a  libcc1/compiler-name.hh
! 60c7d2db4e016df447e3b392da88eae6  libcc1/configure
! c3e858a4dfbf81a4b0dd9dd7319ec6b3  libcc1/configure.ac
! 14befdb07be57673efb6ecf1ae4e6d2c  libcc1/connection.cc
! 29823d322ca618896b7fe540ff3bd581  libcc1/connection.hh
! f72f20a90bbc3ff8d1128ff4d5858f29  libcc1/findcomp.cc
! 24b42286d357a040ee0f3f5c70a56510  libcc1/findcomp.hh
! 733552376e05d220031ad362a595f923  libcc1/libcc1.cc
  99b3a25ce17ed584d9f0aa42b4713938  libcc1/libcc1.sym
! 7f630591971dc62afbf40d26ddd77f43  libcc1/libcc1plugin.cc
  75503db6a0981a95d9c29d9607b29380  libcc1/libcc1plugin.sym
! af2fd951b0ff389a2208f571ff1fd18f  libcc1/libcp1.cc
! eb1415b58ee61832c9463ccb94f9516b  libcc1/libcp1plugin.cc
  75503db6a0981a95d9c29d9607b29380  libcc1/libcp1plugin.sym
! 08c5e104e357fd1be6a89f338ed23f19  libcc1/marshall-c.hh
! 47e2a7ce854718fa1727ef8f89ef6ad8  libcc1/marshall-cp.hh
! fb51c9a4140e34bd9dbace50be601932  libcc1/marshall.cc
! 583268beb191dea4c99d16ae67e1c006  libcc1/marshall.hh
! f90d0afb8181476bb21f4e8aa46c74dd  libcc1/names.cc
! 53a1b4709c3e05eedb8415fd12a89bc6  libcc1/names.hh
! f5e2a580518faca998674de55158241d  libcc1/rpc.hh
! d7011f3caeeeb336058853a2a6ae7759  libcc1/status.hh
! 8e32b4f309146e8842db7a077d77be28  libcody/CMakeLists.txt
! c96a56ec7f0400e30e99a9aa445e0425  libcody/CODING.md
! b5243c8c76fc965a409394a30679e613  libcody/CONTRIB.md
! 4125a64aa1afbf653e9725c6194db5c2  libcody/ChangeLog
! 86d3f3a95c324c9479bd8986968f4327  libcody/LICENSE
! 3d4a4494284f7f6d717caade46832e87  libcody/Makefile.in
! ca1c6fe3df5427016005ce753c73d454  libcody/README.md
! 99ad81d536fef63b80b7f776f0dec53c  libcody/buffer.cc
! 69dd1db758b0ea369d20d7331d889ef5  libcody/client.cc
! 40072537e3589ff033129e9d5aa10660  libcody/cmake/libcody-config-ix.cmake
! 521e6cc4ebd40d0fbc4ad2fbd8c8063b  libcody/cody.hh
! b7630b2f7e3997152972e0d3f86af193  libcody/config.h.in
! a003d1057213ab79099f7bdbea631d9e  libcody/config.m4
! 5ab03eb54e266c8023cdff6b6e06eabf  libcody/configure
! a893e51c81e1227e5b61ea6118c64f66  libcody/configure.ac
! e34ecf203bf98854eaf6c3239f1f4bb6  libcody/fatal.cc
! da08ac0363d79421e125106469933625  libcody/internal.hh
! 5c2a957237b057cd59861013391e1ae1  libcody/netclient.cc
! a1b928d660ba86d7133b5ee270e45bcc  libcody/netserver.cc
! 6419dfc879387358e95288142e569914  libcody/packet.cc
! 688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
! b1f3850fc5ac62999d1e124aa6f76531  libcody/server.cc
! 632d34d2062099aa8212405fbca58de2  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
! 93f0c1663de0a7f51de84bcf52cf415a  libcpp/Makefile.in
! 9d15bb14e9ac1a74366e673ea260722e  libcpp/aclocal.m4
! aa753fa10493688739205dff0d332e7b  libcpp/charset.c
  a82e3eb1d8561484e9ba80fe49aaa3d2  libcpp/config.in
! d8b25b32c46363f3c8d928ff9659642f  libcpp/configure
! ba01f7813ce714bfa7427ced165ee873  libcpp/configure.ac
! f3213c784f6cd9d3af84dcb5b50b6d84  libcpp/directives.c
! a66a22409e4a783d7044f888621c8bc2  libcpp/errors.c
! 663c725deffa3329ae6a2554c1e7e64f  libcpp/expr.c
! 317ee9a4d4fd5e7d914307f5ba7151ff  libcpp/files.c
! d5218c1d5fc8cde726dc168fafef10a7  libcpp/generated_cpp_wcwidth.h
! 0b7cb9146c5ba48f860378f633064ffc  libcpp/identifiers.c
! 8c5e45738179c971cfcff84b10b932f9  libcpp/include/cpplib.h
! 7f7df25c19a9fe3179b73a064ed5a6d4  libcpp/include/line-map.h
! bb66fcb7788c801156bffbd2e7ef157b  libcpp/include/mkdeps.h
! 3be98d97c10d140ead8129799fb0204f  libcpp/include/symtab.h
! 7cc3b270970c81684bb50c91310d8b34  libcpp/init.c
! 6502fcc1e9f6fc8357698e9717588e3c  libcpp/internal.h
! a7e0933c911a8c664d51c3f93b3957b2  libcpp/lex.c
! c22e0eefacf30614fabdcfb10d690e94  libcpp/line-map.c
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
! 31e06a0bbad7ce329924f69a4efd70fa  libcpp/macro.c
! a8704715c342e0c595438ec99b83299f  libcpp/makeucnid.c
! 016253cecf75a29fd5f5075b866cca1f  libcpp/mkdeps.c
! 944a753ccf1b023047aaed1f1f362bec  libcpp/pch.c
! 529b5e2a2b852f5dff7f274d0110a296  libcpp/po/ChangeLog
  236a7764238de3aa208e3a857c56f478  libcpp/po/be.gmo
! ede9d45d28b1c1cb82c92ff039a45d66  libcpp/po/be.po
  a64f63d1193f804860308855177c5f6a  libcpp/po/ca.gmo
! 661a2a866dc56c1a894788537435bea8  libcpp/po/ca.po
! f1dc3523755bc6f47ddfacab38441b1f  libcpp/po/cpplib.pot
! b162dd5957ef5d738de514a988a189d0  libcpp/po/da.gmo
! 1f79bdfe73ba821e9ac64b2aca257020  libcpp/po/da.po
! 3e652206c5c08b0d63bc03ea2d3e4bfc  libcpp/po/de.gmo
! 7cb981d53aa2333c9cfa0f05c9d2c9fd  libcpp/po/de.po
  e0c8ada187620b9ddd9901f9f12e343a  libcpp/po/el.gmo
! b4048e7f9401f622802f1cd0a0657d9f  libcpp/po/el.po
! 170885e2a5084d5d82e7f9cf125c64a1  libcpp/po/eo.gmo
! 02dccd0724f0195daab312995aaf96ae  libcpp/po/eo.po
! 25944d964757994620d5b8a021409d8c  libcpp/po/es.gmo
! 839f6cc188167e783eab06b1e310b50d  libcpp/po/es.po
! ef28d2d4022e01cb4c1c5db2c8bae98a  libcpp/po/fi.gmo
! a5e44962ffb640b55034fe54829cdd8b  libcpp/po/fi.po
! e978fc62eb49da7c4f54e95053c5168d  libcpp/po/fr.gmo
! b44b871232c05c547327e53625de659a  libcpp/po/fr.po
! 18bde1296a2ffa06989d7ea9d457cef8  libcpp/po/id.gmo
! 919be9b9be39b7fbbf52ac8e6f29e6a1  libcpp/po/id.po
  7e86ebfd3138f73b03c11d5bd04b68fe  libcpp/po/ja.gmo
! f3c777c011af107528f4daf1d7370c90  libcpp/po/ja.po
! 7bee17aaf9ab003fd6c7bd8fc0cd9c46  libcpp/po/nl.gmo
! 83afe1f8f6162787398f4e9271be2b42  libcpp/po/nl.po
! b729260d109a70c4f5676a8ed1cd2f59  libcpp/po/pt_BR.gmo
! 7ac02fef46b12510f573a74afe9eff76  libcpp/po/pt_BR.po
! 9cbb5c69b9fad6b5a320eb4dd4e3654d  libcpp/po/ru.gmo
! a31e839860fab8f15054654bcc770330  libcpp/po/ru.po
! fa34f36a073e93adc873bb2cbb60793f  libcpp/po/sr.gmo
! e761139b516ef84d00aadc7648ae9385  libcpp/po/sr.po
! 2e8eff0c59867cae6215bb17aac9750f  libcpp/po/sv.gmo
! e330b65b8b8cc5503c10139a1e08288f  libcpp/po/sv.po
! 8cc505f4d4fbb25c03ae9fb39e617758  libcpp/po/tr.gmo
! 8e45120e673c487fe4ddeed781fe466a  libcpp/po/tr.po
! 0b79d054c55d8f6e1e01a49fa70c55e9  libcpp/po/uk.gmo
! b29d43815c4cd5e5f0b65347b10f2fd1  libcpp/po/uk.po
! 9c3dd6e01885621f132865f13af30518  libcpp/po/vi.gmo
! a399f0d8175c303ca191f225769c29d5  libcpp/po/vi.po
! 234f1b6d2ea5dc76144681f6fb33f98e  libcpp/po/zh_CN.gmo
! db8c7804a98ddb36d93416c2e7dbae28  libcpp/po/zh_CN.po
! 7caadacace180fe8dd77ee4933d095e1  libcpp/po/zh_TW.gmo
! b1d35920357f66d419921af6733f1958  libcpp/po/zh_TW.po
! bcbe0b107dacf31d1cf1ca1261d43f1b  libcpp/symtab.c
! 2de988f98c545db28acb758ca1a62489  libcpp/system.h
! 8d19e14186220b9cbb2f720d799b669e  libcpp/traditional.c
! 56610cf3fd7d260581ebd54124f17a78  libcpp/ucnid.h
! 89258efea2d9a909c625ed72b6acbd8c  libcpp/ucnid.tab
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! 480b31551e405e5d095c329cd90e4a86  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
! 1eef4e8e73dcf150b06bd03f9621374a  libdecnumber/Makefile.in
! 2a70099a79e40a57a666d5430a5e2529  libdecnumber/aclocal.m4
! 4db5627beddd7b7ec053a009b3c7d845  libdecnumber/bid/bid-dpd.h
! f4a2e99079120fa533611f5ba18c8536  libdecnumber/bid/bid2dpd_dpd2bid.c
! d6e172f53b2df3c630c919afa0ed689b  libdecnumber/bid/bid2dpd_dpd2bid.h
! db45c82bedee14f044ee23e03ca95dbb  libdecnumber/bid/decimal128.c
  47afd72790bc284aceb5a23597cc6146  libdecnumber/bid/decimal128.h
  f8df5b96d86c867ad233c6f0d3e2541f  libdecnumber/bid/decimal128Local.h
  eab7eeba10520ab4a805774d42b8f9dd  libdecnumber/bid/decimal128Symbols.h
! 2d9565332c9af014f014df9ee7248ce5  libdecnumber/bid/decimal32.c
  43b6b2bd872ad984104804b1b20fb10c  libdecnumber/bid/decimal32.h
  c5864ab84549ca0f34188ce5b057bbee  libdecnumber/bid/decimal32Symbols.h
! 721b890785e9423e3e1ab1a472f42aef  libdecnumber/bid/decimal64.c
  8c612aadae9886f1a72212f93d8651c0  libdecnumber/bid/decimal64.h
  9f903ba71afb574bfa3a0f3cd2f9fbc7  libdecnumber/bid/decimal64Symbols.h
! 2a770ed9ef2af6d2013d06093741b85f  libdecnumber/bid/host-ieee128.c
! d5b569f9be191d6d7cd00ffb694b0455  libdecnumber/bid/host-ieee32.c
! 38e8b3f82bae8c32135882e95d230304  libdecnumber/bid/host-ieee64.c
  76d4afd0dd1c0f5e776cbc40cf2e91b3  libdecnumber/config.in
! d796b3b0e43d0c4e7c5a37ea5e17ee5f  libdecnumber/configure
! bf6ad00b3fb01b6294b62624db26c1be  libdecnumber/configure.ac
! 01269a1c02bac3c8aeec719daf8a3ef2  libdecnumber/dconfig.h
! 8ee3373ceaf5ddb735e5e5a91582a71d  libdecnumber/decBasic.c
! ee58e03fd8c9d0d9b4b56397dfd9566d  libdecnumber/decCommon.c
  2f89d012c7a8a2912e7dce02bd4a08dc  libdecnumber/decCommonSymbols.h
! 0209477e40315931615fb8a3d562f513  libdecnumber/decContext.c
! 160d2455cdead7733d815eddb09a2c21  libdecnumber/decContext.h
  53b67627dab6d36fba960317d84c1487  libdecnumber/decContextSymbols.h
! dcebdce7c180a004e8e448357c841747  libdecnumber/decDPD.h
  8f3ac08d4cc421cc89035e90c890bb09  libdecnumber/decDPDSymbols.h
! 008b779c021dc0721913c9ede0279eba  libdecnumber/decDouble.c
! 3f002d7ca7f61698a21ca6a5b747f6a4  libdecnumber/decDouble.h
  22e16083bf3d0b76c4736f7f6382cfb6  libdecnumber/decDoubleSymbols.h
! f02b82b64d41c3a8f5dd609910bbd03f  libdecnumber/decExcept.c
! 1dadda031ce8b453eabc434380d0fd35  libdecnumber/decExcept.h
! 6490e50a7e32db3e276c0f4364e2056e  libdecnumber/decLibrary.c
! 0603096d96f24c1929c2c88f2f62d5db  libdecnumber/decNumber.c
! c410f115e706adcfbf406a8c18e74787  libdecnumber/decNumber.h
! a29081531ad5b7e301a3832c475c9d92  libdecnumber/decNumberLocal.h
  dd46d36cafe0d7dcb669ad059fbed9b6  libdecnumber/decNumberSymbols.h
! 9cae4885ec0e84cb6e789b2298763fa1  libdecnumber/decPacked.c
! d323f1e1a65ceb356b4bcdfca259e2cf  libdecnumber/decPacked.h
  287ad6ebf8b8179aa843368e9600a3fb  libdecnumber/decPackedSymbols.h
! 5558d5b73a1942b33e73b2f05cdd7920  libdecnumber/decQuad.c
! c8c9ab264ca340e6ee610220d3f8432b  libdecnumber/decQuad.h
  3851bae03416db42a85be1c5610f438b  libdecnumber/decQuadSymbols.h
! 6d7ff0f24861d9a543b36f6954a7f883  libdecnumber/decRound.c
! b4786ac0bd5fe784be755c7f73db3482  libdecnumber/decRound.h
! e6f5a6187e1869fa60427ce2c7a23e3d  libdecnumber/decSingle.c
! d3bb17d5cb80b1e097a3bf244b5f5edd  libdecnumber/decSingle.h
  8998c4f3e69ea3d218b574a2defb9a98  libdecnumber/decSingleSymbols.h
! 3418f9a3fce33a34ce71477de013e132  libdecnumber/dpd/decimal128.c
! 23a836002d280a705e5eb78fc0f11f59  libdecnumber/dpd/decimal128.h
! f8c8016eecc0b714da5930a18e42d496  libdecnumber/dpd/decimal128Local.h
  2f6da07ba897ca626a4f6d283feeef93  libdecnumber/dpd/decimal128Symbols.h
! 636a456bfdbd8aed66e7a9fb360abc6f  libdecnumber/dpd/decimal32.c
! b4c901c3fd1bc52995b89b69d2f8c33d  libdecnumber/dpd/decimal32.h
  a97c47969dfc92a7666dfe3c2e1e1448  libdecnumber/dpd/decimal32Symbols.h
! 7557e8f40c659cd1bb5f753e31c6a143  libdecnumber/dpd/decimal64.c
! 8bd3494633aae56ffed31440b3d78709  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
! b82392712169c45195118c1a8f618b51  libffi/ChangeLog
  ba66fc19311348d373ec271be939a659  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
*************** d946d2b97454ad50a1dbfbf48923c5be  libffi
*** 79855,79861 ****
  f0aff67c9a90cc128022ee5b0055b968  libffi/README
  44b194a3359cf72192429e14ad99d8b2  libffi/acinclude.m4
  da6dae963cec36378657966c42474f1d  libffi/aclocal.m4
! 1eea74209a48e3ba4ee0176123ddd0a2  libffi/configure
  adc753787c2f8c050ca7da9f24a823ec  libffi/configure.ac
  3ad352dfae56d1ff666fda70a2cd2b3b  libffi/configure.host
  cfec4a5a1bb5d36550e15ac051c14148  libffi/doc/libffi.texi
--- 85815,85821 ----
  f0aff67c9a90cc128022ee5b0055b968  libffi/README
  44b194a3359cf72192429e14ad99d8b2  libffi/acinclude.m4
  da6dae963cec36378657966c42474f1d  libffi/aclocal.m4
! 4b15315d366d6d03f4a26cc4c48b0029  libffi/configure
  adc753787c2f8c050ca7da9f24a823ec  libffi/configure.ac
  3ad352dfae56d1ff666fda70a2cd2b3b  libffi/configure.host
  cfec4a5a1bb5d36550e15ac051c14148  libffi/doc/libffi.texi
*************** d47c79b281339983862a8e52d8c73f0f  libffi
*** 80205,80315 ****
  291be426192f460f6a07dfe1c96ab094  libffi/testsuite/libffi.special/special.exp
  93fc3ea311b79f64004992807ce75d1e  libffi/testsuite/libffi.special/unwindtest.cc
  185d0795017fbbe253a13db8e34085f9  libffi/testsuite/libffi.special/unwindtest_ffi_call.cc
! 2de2e6216f1b73676a2e859a8c20c49e  libgcc/ChangeLog
! 8a89bfe8c8707589b9b1470ad60f27c1  libgcc/Makefile.in
! 710d6e0485cb71ad9d08226ece5c1b03  libgcc/config.host
! 083f194c4f87d0510383fd4156d3aaef  libgcc/config.in
! 9858db9b07dcce5cb230400b57775ac2  libgcc/config/aarch64/aarch64-unwind.h
! cb6bf25f692fb35cb8c66a813be70503  libgcc/config/aarch64/crtfastmath.c
! e86b2b14c591de0c1e48ca69a70a3985  libgcc/config/aarch64/crti.S
! bc8091ea114367b3b741725a189d2c2a  libgcc/config/aarch64/crtn.S
! bfb92cd2cc568e51bd58e7cf47d50161  libgcc/config/aarch64/freebsd-unwind.h
! 8e2f2ebc742ebe6b5e5fade35c522e94  libgcc/config/aarch64/linux-unwind.h
! 29aea81db92e457ee9e2c580be585925  libgcc/config/aarch64/lse-init.c
! 03845c88023d63fe76c6d4006dc45e92  libgcc/config/aarch64/lse.S
! 9d3aad39b3858cbc22208edfefffecef  libgcc/config/aarch64/sfp-exceptions.c
! f08acb83a481296c295a09342a50697f  libgcc/config/aarch64/sfp-machine.h
! ca2e22cb19d821fce69a3fa9a07d0f48  libgcc/config/aarch64/sync-cache.c
! 8e3ffd846c30c7c5c52f1438e8e49870  libgcc/config/aarch64/t-aarch64
! 2e0f8602dbb52e6701b49a2018e68912  libgcc/config/aarch64/t-lse
! 3a7564780070d43ba461bc58622771af  libgcc/config/aarch64/t-softfp
! 7acbb3d5c82c4a756e6f9dbabf8f0810  libgcc/config/aarch64/value-unwind.h
! 37bc7fa21ade68283425e38844942575  libgcc/config/alpha/crtfastmath.c
! d2c1b178d86c753c11652a19b6a4f2e7  libgcc/config/alpha/libgcc-alpha-ldbl.ver
! e2cf127354a821a074c82c79b5d96e4c  libgcc/config/alpha/linux-unwind.h
! a06c18ea7e1f9ad76421984ef873b5ed  libgcc/config/alpha/qrnnd.S
  e06033e6f9902c9e703e237d511df6c4  libgcc/config/alpha/t-alpha
  95db551210150c5b18529c72cfdaeabf  libgcc/config/alpha/t-ieee
  0ae5eceefb3934014e67594e67f44a5c  libgcc/config/alpha/t-linux
  600b5cfe4987de3985ad1ff7316166cc  libgcc/config/alpha/t-vms
! 0a53542de6b6ac2082cc284375b078c2  libgcc/config/alpha/vms-dwarf2.S
! 7ad1579584b8cb75b2ff088040901c77  libgcc/config/alpha/vms-dwarf2eh.S
! c02829a46b05a5255386bb16aad7ad8f  libgcc/config/alpha/vms-gcc_shell_handler.c
! 24851fe2c4b0cd76ee30add5cc0216c6  libgcc/config/alpha/vms-unwind.h
! bf08c6f04768e1930904da4d214320cd  libgcc/config/arc/asm.h
! d79bccb764cd82f48456d941a9c87379  libgcc/config/arc/crti.S
! ab32c74d1f004ed1510ce8657d063ab7  libgcc/config/arc/crtn.S
! e0805d5051732576407b92dabde4d094  libgcc/config/arc/crttls.S
! b69084daa396076534fd460f1eb78852  libgcc/config/arc/divtab-arc700.c
! 0d72fc83484a315d628bb36596cd142f  libgcc/config/arc/dp-hack.h
! aae966ffdf0a414b002d620fd64186bb  libgcc/config/arc/fp-hack.h
! 2deafcf9151a4b2ae232a3d90f64bfbb  libgcc/config/arc/ieee-754/adddf3.S
! 248b19e8bd905c011fb15cb22b1f4f76  libgcc/config/arc/ieee-754/addsf3.S
! b6f855515b237a1e1b6b50d6767d333f  libgcc/config/arc/ieee-754/arc-ieee-754.h
! aa5d1f1fa961920f8b4cbd62d49b0121  libgcc/config/arc/ieee-754/arc600-dsp/divdf3.S
! 45761e5385a92884f77175a79f2c3c4d  libgcc/config/arc/ieee-754/arc600-dsp/divsf3.S
! 38f494adb9a197b6a07f22a9185849a8  libgcc/config/arc/ieee-754/arc600-dsp/muldf3.S
! 17459587e4b3e1ff0aba4c09e1f38afe  libgcc/config/arc/ieee-754/arc600-dsp/mulsf3.S
! 7e32efda0356a4f8c8985945d0211a6c  libgcc/config/arc/ieee-754/arc600-mul64/divdf3.S
! 8b733a5c5e96c82e2d0d2ee8cd71d54f  libgcc/config/arc/ieee-754/arc600-mul64/divsf3.S
! a0fd2ca844a07175abbc82b36a50bfdc  libgcc/config/arc/ieee-754/arc600-mul64/muldf3.S
! 1fd9e54b757c0803bb0b039818bdfc81  libgcc/config/arc/ieee-754/arc600-mul64/mulsf3.S
! 6e0d75b04dc06842bc260aca9f233d69  libgcc/config/arc/ieee-754/arc600/divsf3.S
! 0ad92039662699c10913ffe2be8af7da  libgcc/config/arc/ieee-754/arc600/mulsf3.S
! 4062e7de945df7d589ca13b3534c0014  libgcc/config/arc/ieee-754/divdf3.S
! 751732c88a4ecfd0cab8149e91510620  libgcc/config/arc/ieee-754/divsf3-stdmul.S
! b27c1e2fc1a431f1529c5f443b5fcd6e  libgcc/config/arc/ieee-754/divsf3.S
! d1b65a56bd4efc3f4bc3b90569543f7c  libgcc/config/arc/ieee-754/divtab-arc-df.c
! 7b28fec1a6d77c430fd3b6cdb370db36  libgcc/config/arc/ieee-754/divtab-arc-sf.c
! 53e26f3a94eaa2b8c65140bbed069a25  libgcc/config/arc/ieee-754/eqdf2.S
! 0dfe1a944ee0b936f4a938a1cb0bfbe3  libgcc/config/arc/ieee-754/eqsf2.S
! b2f77625649fd11924106013ed21cf1c  libgcc/config/arc/ieee-754/extendsfdf2.S
! ba77d9e15e2dc6ed96618f9496c48d7a  libgcc/config/arc/ieee-754/fixdfsi.S
! 27c7339936ef746c0e2a74010f204424  libgcc/config/arc/ieee-754/fixsfsi.S
! 4384356f2e425c043d288d000c4f3a31  libgcc/config/arc/ieee-754/fixunsdfsi.S
! fd859c490435a6e7f0b0964fe002ce26  libgcc/config/arc/ieee-754/floatsidf.S
! 0eff2a134276331d5a535626b8006954  libgcc/config/arc/ieee-754/floatsisf.S
! 6f9ba6da817e6abe591d0b9f79284712  libgcc/config/arc/ieee-754/floatunsidf.S
! 57c039bab40f4e5bb5a39a94758ae4a5  libgcc/config/arc/ieee-754/gedf2.S
! 7cc58d8b67f49252c99b49d0d78a2578  libgcc/config/arc/ieee-754/gesf2.S
! bfe0b36a0ea90b3ae7b4afe008a864d6  libgcc/config/arc/ieee-754/gtdf2.S
! 677b01d883d1f1c1fd1172e083d2ccb6  libgcc/config/arc/ieee-754/gtsf2.S
! 75ff35eeccb9876973fe16bffb2ab979  libgcc/config/arc/ieee-754/muldf3.S
! 017b9892e0950a579c2464be96382c55  libgcc/config/arc/ieee-754/mulsf3.S
! ef380ba50722b1cb8284e246563520f3  libgcc/config/arc/ieee-754/orddf2.S
! ef50bdcbe732c79f0d7daf33fbd27070  libgcc/config/arc/ieee-754/ordsf2.S
! a6be51aad5347d34c0d0619a2001194f  libgcc/config/arc/ieee-754/truncdfsf2.S
! 5d8becfe1048d2b1ab3f8a10b66e05e0  libgcc/config/arc/ieee-754/uneqdf2.S
! 4e339e8ee4f3b48433b026da9d70d386  libgcc/config/arc/ieee-754/uneqsf2.S
! 968074885b51211e5e810451be78c633  libgcc/config/arc/initfini.c
! 1f77f8113f95ffc4902da5bfc3683016  libgcc/config/arc/lib1funcs.S
! 01c1ca102190db0db60450e94e3d1ef3  libgcc/config/arc/lib2funcs.c
! da672d6f725f6ad9464cfcad4009c0c9  libgcc/config/arc/libgcc-excl.ver
! 0990c552aedcc7c093f3a158ea4b30ca  libgcc/config/arc/linux-unwind-reg.def
! db72a9daf37ce1ee5aa36de750e1e77f  libgcc/config/arc/linux-unwind.h
! 35572a7e9a03e8ba4732e5e7228d808a  libgcc/config/arc/t-arc
! c0a22d702feda74d722e0a9aea7d1b6f  libgcc/config/arc/t-arc-uClibc
! d1b259a7ebb554c2b7f55d42fc857a61  libgcc/config/arm/bpabi-lib.h
! 0f9235f74cb7be0ef5ff76483649db8d  libgcc/config/arm/bpabi-v6m.S
! 9e7601333c2da970cb0acf8a8aebdf36  libgcc/config/arm/bpabi.S
! 01c3f42719678bb53df22aa8a6755da0  libgcc/config/arm/bpabi.c
! d7b6fac9733372b0eca682895b864582  libgcc/config/arm/cmse.c
! c6791de829344c77478c2efb9f8f6f7d  libgcc/config/arm/cmse_nonsecure_call.S
! e3cbcd54610b02ba48f6181f90f663d6  libgcc/config/arm/crtfastmath.c
! bc382a3836c17cb050d0d366f844b567  libgcc/config/arm/crti.S
! b11e4ecae5cdc0667f25ed2c756f765f  libgcc/config/arm/crtn.S
! 40847b10832e83cef224f7ca0c73b493  libgcc/config/arm/fp16.c
! f22a8e0744318c07ba8859fe74d4b9f1  libgcc/config/arm/freebsd-atomic.c
! 6180cbe35b3f2182dbde4a1153f3f511  libgcc/config/arm/ieee754-df.S
! a28eb5f988754a4f9c5e0c5a04e1b43d  libgcc/config/arm/ieee754-sf.S
! bdaf4dfb7efdd3d65baa4e46d2d93947  libgcc/config/arm/lib1funcs.S
! ccd52da7198c401963600fc61ed97c09  libgcc/config/arm/libgcc-bpabi.ver
! 2bc137f8712bc0f964a014fff6c21d84  libgcc/config/arm/libunwind.S
! f251a89bb0980b9dfc533705a5e96fe6  libgcc/config/arm/linux-atomic-64bit.c
! 68aa267bfa153b2a81e389c0bfc06227  libgcc/config/arm/linux-atomic.c
! 31a7e761159af464c55ba59256be3073  libgcc/config/arm/pr-support.c
  131990bf9b0a8ab71c7abf0c49d4fbfa  libgcc/config/arm/sfp-machine.h
! 075490dd9ed3194c5a512074317092ff  libgcc/config/arm/symbian-lib.h
  158e1345eb77c49632bdea4b66ed330f  libgcc/config/arm/t-arm
  95ccb8d9807e7229274f546d4664a038  libgcc/config/arm/t-bpabi
  be2d9c3da6e3f9aa4be1b2856a70de22  libgcc/config/arm/t-elf
--- 86165,86276 ----
  291be426192f460f6a07dfe1c96ab094  libffi/testsuite/libffi.special/special.exp
  93fc3ea311b79f64004992807ce75d1e  libffi/testsuite/libffi.special/unwindtest.cc
  185d0795017fbbe253a13db8e34085f9  libffi/testsuite/libffi.special/unwindtest_ffi_call.cc
! 35c45297b53fb5b1a57d4f92c842c3de  libgcc/ChangeLog
! 90ca8ec10aa72a56ea751ad2cb5c131a  libgcc/Makefile.in
! b5cdefa4dead82a1547f85f62d4e4943  libgcc/config.host
! 312fccd8251056a36e26bad71f9cfaa2  libgcc/config.in
! 5d16c02b68779d0e7fb45016d4ecb4ac  libgcc/config/aarch64/aarch64-unwind.h
! 646d68758bd6b30ca567cbceb14dfb6a  libgcc/config/aarch64/crtfastmath.c
! 2f14f27fe2e1ef947649181113437918  libgcc/config/aarch64/crti.S
! d6fe116472715bfb31867df3f8ab6a17  libgcc/config/aarch64/crtn.S
! cfe47d82e0550bbf47dc813dc9bbe0e0  libgcc/config/aarch64/freebsd-unwind.h
! d8a39f13120bd3c04e6a660de012539c  libgcc/config/aarch64/libgcc-softfp.ver
! 988f848a48f8b5e837cc00431d88c52f  libgcc/config/aarch64/linux-unwind.h
! 40132133c0c5920f1fbe0e2f68fe1a20  libgcc/config/aarch64/lse-init.c
! 3dbd9bbf24aab9a0ce5e58a017487e43  libgcc/config/aarch64/lse.S
! b4ebe34df7eb6f156fa0092446240683  libgcc/config/aarch64/sfp-exceptions.c
! 5686e75a58d21cab99056d441253793a  libgcc/config/aarch64/sfp-machine.h
! 0fed261daa40e6ac5e19e0418624df97  libgcc/config/aarch64/sync-cache.c
! 46ad32ea4432c33cc66b5c506f256f85  libgcc/config/aarch64/t-aarch64
! a21eb9a6807f6899bae0eba1b99913d8  libgcc/config/aarch64/t-lse
! 2df62f8f58c3b33868deef587589dd2d  libgcc/config/aarch64/t-softfp
! 5a3ab97b50f64a56321f41184d63c204  libgcc/config/aarch64/value-unwind.h
! 4298c844b474b4c6e1fd422499d78722  libgcc/config/alpha/crtfastmath.c
! b2a3a03f45b17b1a8b0ce1925942d5e3  libgcc/config/alpha/libgcc-alpha-ldbl.ver
! 06ec6f348d05ea7a0cf23072a710b067  libgcc/config/alpha/linux-unwind.h
! 1fd4fb65e3c1341d59df4a32aaafb98e  libgcc/config/alpha/qrnnd.S
  e06033e6f9902c9e703e237d511df6c4  libgcc/config/alpha/t-alpha
  95db551210150c5b18529c72cfdaeabf  libgcc/config/alpha/t-ieee
  0ae5eceefb3934014e67594e67f44a5c  libgcc/config/alpha/t-linux
  600b5cfe4987de3985ad1ff7316166cc  libgcc/config/alpha/t-vms
! 6bd64aab4ed066c217db4c4cb97df7d5  libgcc/config/alpha/vms-dwarf2.S
! 056b46860118a1bf8ce3ea0c702b8074  libgcc/config/alpha/vms-dwarf2eh.S
! 34f86482d6dd70017b3c3ea4dd8740e9  libgcc/config/alpha/vms-gcc_shell_handler.c
! e7726c55a5b56558d2ecda28c4e0084c  libgcc/config/alpha/vms-unwind.h
! 186ad5ff3156176d6dc570a69219ca18  libgcc/config/arc/asm.h
! 11fe6a73a30a1178081463ae7c6239cc  libgcc/config/arc/crti.S
! bd1610d8031616e536314f1afa0ac723  libgcc/config/arc/crtn.S
! dfe2f1f4c1783e32b453a5ca5542fef4  libgcc/config/arc/crttls.S
! e893f6b27d326b25b0842596cec2e032  libgcc/config/arc/divtab-arc700.c
! a8aeb4a8002417314833673ff9964191  libgcc/config/arc/dp-hack.h
! b44735c856fbe48d06aa11a5556590e7  libgcc/config/arc/fp-hack.h
! a7a24a436880a4479eca9496e201559c  libgcc/config/arc/ieee-754/adddf3.S
! 67151c7d0c1089d230b7e287d9deb7ba  libgcc/config/arc/ieee-754/addsf3.S
! b12e264ead5d4cd968b8a5008c2fe88e  libgcc/config/arc/ieee-754/arc-ieee-754.h
! b3d696704a0276649c7d18a3c7b5f848  libgcc/config/arc/ieee-754/arc600-dsp/divdf3.S
! 65a59a5a718c74fcad080719ba259215  libgcc/config/arc/ieee-754/arc600-dsp/divsf3.S
! 30b2a50b7fa87c13065a8e37cddd659e  libgcc/config/arc/ieee-754/arc600-dsp/muldf3.S
! 4dd55374b2d08125897d71514d8fac68  libgcc/config/arc/ieee-754/arc600-dsp/mulsf3.S
! b1f6b122bfc3fb996273d99fbbb5d84f  libgcc/config/arc/ieee-754/arc600-mul64/divdf3.S
! 33360c76be2eff94b7be6e51cfcf3307  libgcc/config/arc/ieee-754/arc600-mul64/divsf3.S
! ee7b540033b7f6f5e817029779d407b5  libgcc/config/arc/ieee-754/arc600-mul64/muldf3.S
! f297010bd4e5b5452cb6f19e91876443  libgcc/config/arc/ieee-754/arc600-mul64/mulsf3.S
! e83a433c347ab5bf5edacb1990eb26d1  libgcc/config/arc/ieee-754/arc600/divsf3.S
! 3b5c237a1e60f59d952948f94e6934c4  libgcc/config/arc/ieee-754/arc600/mulsf3.S
! 75fc68cd150a17a5e6387817d55ba625  libgcc/config/arc/ieee-754/divdf3.S
! 7d8a70c25a504270e6837edee980a561  libgcc/config/arc/ieee-754/divsf3-stdmul.S
! ceffcb868ff33301014290ddaa6a5418  libgcc/config/arc/ieee-754/divsf3.S
! 6d9279ad377c12044bf3c4690844568b  libgcc/config/arc/ieee-754/divtab-arc-df.c
! 13d2d7537d5bf0549edfe25812ae6d93  libgcc/config/arc/ieee-754/divtab-arc-sf.c
! 426c5f43d6378bb91c608d93c85f3560  libgcc/config/arc/ieee-754/eqdf2.S
! ed60e331c9a3d52bf183db94bb860eb0  libgcc/config/arc/ieee-754/eqsf2.S
! 4a4caca9a60d54c540865514da084ab5  libgcc/config/arc/ieee-754/extendsfdf2.S
! 1dc3c2a52d0b40fcf978ebf4ec99717f  libgcc/config/arc/ieee-754/fixdfsi.S
! aebf50984da07afa7a83d2442bafc38d  libgcc/config/arc/ieee-754/fixsfsi.S
! 41bedd4c1c2148f29a074c4c8f836b09  libgcc/config/arc/ieee-754/fixunsdfsi.S
! b1b1aeeed5a6e9d8ffb6c3f1299d0ad9  libgcc/config/arc/ieee-754/floatsidf.S
! 2a6468eeb0ba65b75f41ca5aab03fb12  libgcc/config/arc/ieee-754/floatsisf.S
! f10c51708fe3eda931f5265e91623dee  libgcc/config/arc/ieee-754/floatunsidf.S
! 970b53303d9e4c0369db7dc0b0b14f90  libgcc/config/arc/ieee-754/gedf2.S
! 2a31c769e832a7a9fc9de4cc1969ca62  libgcc/config/arc/ieee-754/gesf2.S
! e3d3c29b7eae3620207533b647b53b57  libgcc/config/arc/ieee-754/gtdf2.S
! a7ff8597853599a431d5150e30c9dd1c  libgcc/config/arc/ieee-754/gtsf2.S
! 15a5c5fe991f1c0eff976aba8aab02c6  libgcc/config/arc/ieee-754/muldf3.S
! eee859f5069a9d4655b9b18b59699edc  libgcc/config/arc/ieee-754/mulsf3.S
! b99c77702b2d82059a83cb684f6fbc7e  libgcc/config/arc/ieee-754/orddf2.S
! b5a16521630029351ab0c983d83eff2a  libgcc/config/arc/ieee-754/ordsf2.S
! f692cc03032b23204c0bd06aed3e1844  libgcc/config/arc/ieee-754/truncdfsf2.S
! d07a3c7670539d3f1e4795d51c66a9f5  libgcc/config/arc/ieee-754/uneqdf2.S
! 552d58bbcbd036d7742b0bd7d73e8400  libgcc/config/arc/ieee-754/uneqsf2.S
! 643a868e7ce818ea3b3e33d4db39cf6c  libgcc/config/arc/initfini.c
! 2eb3081a1665e01a2201682aeec426ae  libgcc/config/arc/lib1funcs.S
! fa3baf3941c17c8a426526dfa66b46b3  libgcc/config/arc/lib2funcs.c
! 0380cb6a8b1d458e5985d22b7dc5a4e5  libgcc/config/arc/libgcc-excl.ver
! d96e1dec75c44f4929c35b117823f8f1  libgcc/config/arc/linux-unwind-reg.def
! af04682aec71b972a250792207ece68b  libgcc/config/arc/linux-unwind.h
! 1b4f6fd5da8f8a72baa7f3629ac2314f  libgcc/config/arc/t-arc
! 45d37ea77271a574b5d617976cfb474c  libgcc/config/arc/t-arc-uClibc
! 05e99695d5c08ccc12142c450fbf04a6  libgcc/config/arm/bpabi-lib.h
! 948da53bf729f7f02ca639467301613f  libgcc/config/arm/bpabi-v6m.S
! d9bcbec2d14baa5135f2a36aef6016bd  libgcc/config/arm/bpabi.S
! 3620d984b369db7d3f3875a80e3b366e  libgcc/config/arm/bpabi.c
! 74837f3eb9bfe8eb95f850587ee60f1c  libgcc/config/arm/cmse.c
! 6a76fc17e01dbaf03ec31191655d0c99  libgcc/config/arm/cmse_nonsecure_call.S
! f1301f028bc00b88c6525f9b250f22a1  libgcc/config/arm/crtfastmath.c
! 675c3bba5726e1249196dd110a9aa88c  libgcc/config/arm/crti.S
! 3c823dbff1b7f9aecbe3c7d2cbe147db  libgcc/config/arm/crtn.S
! 7a7b87e8afd92b2bacec49e41885fa3b  libgcc/config/arm/fp16.c
! 6aba6ad69832aa8a336244bec1928420  libgcc/config/arm/freebsd-atomic.c
! 88ddd1a2a6eb927f4e712e35854cd847  libgcc/config/arm/ieee754-df.S
! f5fc1898884c017b694f9f4bee5d8dd9  libgcc/config/arm/ieee754-sf.S
! 3928494ab3242378a451a24b482b2b56  libgcc/config/arm/lib1funcs.S
! 28912b08446402aa23eca489137b187e  libgcc/config/arm/libgcc-bpabi.ver
! 042f02484b2a67e32c811686719152f7  libgcc/config/arm/libunwind.S
! 4bf6aa80e6ee424d70bcbf1c2725f820  libgcc/config/arm/linux-atomic-64bit.c
! 60f88662b14b3cd9f4f38ba97a5cb97f  libgcc/config/arm/linux-atomic.c
! e6a4e996bea7da22db4220c01f1bf373  libgcc/config/arm/pr-support.c
  131990bf9b0a8ab71c7abf0c49d4fbfa  libgcc/config/arm/sfp-machine.h
! 1ecd2f9492d815763268cc9fa7796502  libgcc/config/arm/symbian-lib.h
  158e1345eb77c49632bdea4b66ed330f  libgcc/config/arm/t-arm
  95ccb8d9807e7229274f546d4664a038  libgcc/config/arm/t-bpabi
  be2d9c3da6e3f9aa4be1b2856a70de22  libgcc/config/arm/t-elf
*************** dd1ccf1641e646fd2c36d154c45a78f3  libgcc
*** 80323,80364 ****
  fc87e45e073829d21e9427a38f435e3b  libgcc/config/arm/t-symbian
  49da02954caef0527c55b87af2bd1c4b  libgcc/config/arm/t-vxworks7
  0b61332cccc4af9b144b6db99e213dcb  libgcc/config/arm/t-wince-pe
! c458f84da8d0c1603ecabeb7854316c8  libgcc/config/arm/unaligned-funcs.c
! 54be133a25139b7b6f284733b8aec642  libgcc/config/arm/unwind-arm-vxworks.c
! 27bb447ec2b628619f38ab1c016eefac  libgcc/config/arm/unwind-arm.c
! c1e58be3866781275fd2f9af580d28d5  libgcc/config/arm/unwind-arm.h
! edd359796dafc4dc78c672bcdfe885fa  libgcc/config/avr/avr-lib.h
! 678dd0f55d04bb1ad41cffb3166eaef6  libgcc/config/avr/lib1funcs-fixed.S
! 39e55a737e39fc207b8597387f60c342  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
! a1bb21bac26f7d1cb33aadeb1a2cb04d  libgcc/config/avr/lib2funcs.c
! 89ddd12567157122ca2227168c899d2c  libgcc/config/avr/libf7/ChangeLog
! 7c3f1609651224f834cf0c69375d2f58  libgcc/config/avr/libf7/asm-defs.h
  0b54a2cbfebb93a4e1bddfa3600d6f0b  libgcc/config/avr/libf7/f7-renames.h
! 75a098c00650382be6b1f9157fb4af2d  libgcc/config/avr/libf7/f7-wraps.h
  c0d4a5a9b2844505ec941ff60cae008f  libgcc/config/avr/libf7/f7renames.sh
! 91d3a1369031c918d258ea2ad023c550  libgcc/config/avr/libf7/f7wraps.sh
! 7834033aa655a14c2fc0bdcd19c657de  libgcc/config/avr/libf7/libf7-array.def
  5d9def53110ec07e8f29e66d593d758f  libgcc/config/avr/libf7/libf7-asm-object.mk
! 5dcd162c23879c96da95bb1d840b26f2  libgcc/config/avr/libf7/libf7-asm.sx
  6b4886ae302fca1fa733831066c5c830  libgcc/config/avr/libf7/libf7-c-object.mk
  9e2660f882f79c124c85b8732a55464e  libgcc/config/avr/libf7/libf7-common.mk
! 29b64ef2144e5a87760f4f4c72e5475b  libgcc/config/avr/libf7/libf7-const.def
! d785336d6763ee249312ade6bbe513cc  libgcc/config/avr/libf7/libf7-constdef.h
! fe19ad596cb94aa137521ef16592d8e8  libgcc/config/avr/libf7/libf7.c
! b086fa2987cdd260cee41e6b5113e015  libgcc/config/avr/libf7/libf7.h
! 279048cd3d8e94d76d81b0cc9e00649d  libgcc/config/avr/libf7/t-libf7
  bf9360cfc14e0b0129af5560893f374e  libgcc/config/avr/libf7/t-libf7-math
  761826027ebb1cfbb089d23904494606  libgcc/config/avr/libf7/t-libf7-math-symbols
! dc72f3bc9b0bf29001f32a7604969807  libgcc/config/avr/t-avr
  42e21fd8b00be58d09a62b8654a8ba20  libgcc/config/avr/t-avrlibc
  77d29be9a46b600293b32c93c09dacbf  libgcc/config/avr/t-copy-libgcc
! 7547dc82c9c7200e1bf89ed8d89f61ee  libgcc/config/bfin/crti.S
! 85c9cb3b9e026de0692b994c18ef02bc  libgcc/config/bfin/crtlibid.S
! fdc131cef60ea1d2e5d2a72b23e9a0d1  libgcc/config/bfin/crtn.S
! 9cf36aaa2cdd57e87e58e8a43b5b25ed  libgcc/config/bfin/lib1funcs.S
! 0f67c25eabed562cab0e6018307a3cf9  libgcc/config/bfin/libgcc-glibc.ver
! 7ff1f489d86ac8222023fa3b3a3f42d5  libgcc/config/bfin/linux-unwind.h
  4e54ca63fc628fdd56df2687a2bf457e  libgcc/config/bfin/t-bfin
  a5e909e203a6fbf202b2eaad6bff3601  libgcc/config/bfin/t-crtlibid
  17298642a82c8a2809260d1eb08f7e4e  libgcc/config/bfin/t-crtstuff
--- 86284,86325 ----
  fc87e45e073829d21e9427a38f435e3b  libgcc/config/arm/t-symbian
  49da02954caef0527c55b87af2bd1c4b  libgcc/config/arm/t-vxworks7
  0b61332cccc4af9b144b6db99e213dcb  libgcc/config/arm/t-wince-pe
! 1a378d5ba01aeceffdded3be5133f5fb  libgcc/config/arm/unaligned-funcs.c
! a4bad850b9e314f7f2b04161f2ca8365  libgcc/config/arm/unwind-arm-vxworks.c
! f86b268e128ae9507dd4c4ab33f481bd  libgcc/config/arm/unwind-arm.c
! 9c46de1505146bfa8b1ab5d44ffe3da5  libgcc/config/arm/unwind-arm.h
! 5c81c0e9c7191984f9dfcd0ef5148e22  libgcc/config/avr/avr-lib.h
! 083d6e7deb9351da4bbd0d0de7b0763a  libgcc/config/avr/lib1funcs-fixed.S
! 528c00778fc721cd65682dee59c24986  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
! 8694b2f379782b84ed6357615cf633d2  libgcc/config/avr/lib2funcs.c
! d9fffb34b017ac319d293a0b6d490eb8  libgcc/config/avr/libf7/ChangeLog
! 01d9cd125602bd97e7101818005c93ea  libgcc/config/avr/libf7/asm-defs.h
  0b54a2cbfebb93a4e1bddfa3600d6f0b  libgcc/config/avr/libf7/f7-renames.h
! d2e81096820c9d7276656d444c139c73  libgcc/config/avr/libf7/f7-wraps.h
  c0d4a5a9b2844505ec941ff60cae008f  libgcc/config/avr/libf7/f7renames.sh
! bd55d461babc1d292e882d26b3147797  libgcc/config/avr/libf7/f7wraps.sh
! e967bbaef515b9bde9023a1a7a336849  libgcc/config/avr/libf7/libf7-array.def
  5d9def53110ec07e8f29e66d593d758f  libgcc/config/avr/libf7/libf7-asm-object.mk
! 987f580afc3d26e1d2f693c55f7d1572  libgcc/config/avr/libf7/libf7-asm.sx
  6b4886ae302fca1fa733831066c5c830  libgcc/config/avr/libf7/libf7-c-object.mk
  9e2660f882f79c124c85b8732a55464e  libgcc/config/avr/libf7/libf7-common.mk
! d911b844dc79ba84d1e0184f8f67ed31  libgcc/config/avr/libf7/libf7-const.def
! 1aa4dcdb50060d232a2e2f4cfbc19295  libgcc/config/avr/libf7/libf7-constdef.h
! 7eb032fd129b9b9a08fbb1699da64bbe  libgcc/config/avr/libf7/libf7.c
! 1b8ba89151b7e918367fe48afa44b3d1  libgcc/config/avr/libf7/libf7.h
! d8d51231243f1139dbb6a828e2340c67  libgcc/config/avr/libf7/t-libf7
  bf9360cfc14e0b0129af5560893f374e  libgcc/config/avr/libf7/t-libf7-math
  761826027ebb1cfbb089d23904494606  libgcc/config/avr/libf7/t-libf7-math-symbols
! 70e4f62a264a98b6818c49fed71fa5bb  libgcc/config/avr/t-avr
  42e21fd8b00be58d09a62b8654a8ba20  libgcc/config/avr/t-avrlibc
  77d29be9a46b600293b32c93c09dacbf  libgcc/config/avr/t-copy-libgcc
! 61ac899ad7681867a1ec009fd72b8bf7  libgcc/config/bfin/crti.S
! ee3cbdc35ee9f6b61c72a4668cbb286d  libgcc/config/bfin/crtlibid.S
! dbaecc503985ac5ab62434bab7e9e329  libgcc/config/bfin/crtn.S
! 9ca51387333595191e417345df7901c4  libgcc/config/bfin/lib1funcs.S
! a7c7df56b554f34f30b8f29b903f0417  libgcc/config/bfin/libgcc-glibc.ver
! 86ee164dd9b7f4bc10f531087cf29852  libgcc/config/bfin/linux-unwind.h
  4e54ca63fc628fdd56df2687a2bf457e  libgcc/config/bfin/t-bfin
  a5e909e203a6fbf202b2eaad6bff3601  libgcc/config/bfin/t-crtlibid
  17298642a82c8a2809260d1eb08f7e4e  libgcc/config/bfin/t-crtstuff
*************** a5e909e203a6fbf202b2eaad6bff3601  libgcc
*** 80366,80462 ****
  d41d8cd98f00b204e9800998ecf8427e  libgcc/config/bpf/crti.S
  d41d8cd98f00b204e9800998ecf8427e  libgcc/config/bpf/crtn.S
  8d4717fef859f166f4ef387b932a72f1  libgcc/config/bpf/t-bpf
! 3017c1fec7531dab0524b65c42af51b2  libgcc/config/c6x/c6x-abi.h
! c8ae1d40ed0e11b60c3e54104dbd56b3  libgcc/config/c6x/crti.S
! 8ebddbd86ed4790b7af2211cfbc5ede7  libgcc/config/c6x/crtn.S
! e2dbd0ffd11b971d16eaf3b5d19b368d  libgcc/config/c6x/eqd.c
! 905ed72a6e7d33ca8053417afdecb51d  libgcc/config/c6x/eqf.c
! da9eedf086631bef7885d1102ed0d3a4  libgcc/config/c6x/ged.c
! 92509553e5314514a82096f54bd2397f  libgcc/config/c6x/gef.c
! 0442710696c7d6ba9888472dc3b83c5d  libgcc/config/c6x/gtd.c
! 2689ba7d77a8983668946e79e828abb1  libgcc/config/c6x/gtf.c
! 2e4689c12e3b97df3143ccc9b0b8ec47  libgcc/config/c6x/led.c
! 4b7e1bea74d7480ffce3c4578888680e  libgcc/config/c6x/lef.c
! d667e663f8a57df0d9d3fb902f769b88  libgcc/config/c6x/lib1funcs.S
! 22eadcaf2ecbb274e6775d6f619c0c97  libgcc/config/c6x/libgcc-eabi.ver
  9068a836854af657b1b590da0c0659f1  libgcc/config/c6x/libunwind.S
! 5c2ca4877ea59f0ede2b5d146025b0c1  libgcc/config/c6x/ltd.c
! c784009aefbda530d6fe1fe1b4c4e16e  libgcc/config/c6x/ltf.c
! 5f4dd750b165d69b62f162a89897594a  libgcc/config/c6x/pr-support.c
! dda8a02860413ffcc868e7230b5af020  libgcc/config/c6x/sfp-machine.h
  e001c742f33c68e3a33a709c345e0c3f  libgcc/config/c6x/t-elf
  7be94443a1640eded81b166ae8fe575f  libgcc/config/c6x/t-uclinux
! 36c56014afe0c4d5e7a3f382471fac58  libgcc/config/c6x/unwind-c6x.c
! af40dc943cada2b7c22e9f5eb7fd61e5  libgcc/config/c6x/unwind-c6x.h
! 5efd1eed425ae66acdab3c688271890b  libgcc/config/cr16/crti.S
! 875df0a40d0297778fae0b6f05262091  libgcc/config/cr16/crtlibid.S
! 1c037639dce17d69618a92defab9243c  libgcc/config/cr16/crtn.S
! 85842505ea2ff9c522585fcecced9de9  libgcc/config/cr16/divmodhi3.c
! 030b1750f91cf425f09805d4fb693b90  libgcc/config/cr16/lib1funcs.S
! 1ecd855c538ddd9ca46ded64b2f44006  libgcc/config/cr16/t-cr16
! 8532ce1616e8bbc071b1e47294112cc6  libgcc/config/cr16/t-crtlibid
! 4a7f7641d37806d498a7ae913aef56df  libgcc/config/cr16/unwind-cr16.c
! 0525727976694f4fb0933263d1e594f0  libgcc/config/cr16/unwind-dw2.h
! 96916323ec8d40fdcd26532a3a709b6e  libgcc/config/cris/arit.c
! b297586b3a27e883f4a2a383318fa952  libgcc/config/cris/libgcc-glibc.ver
! 1c9e258f0d6846c81379f72a3a81b3d2  libgcc/config/cris/mulsi3.S
! 386b0af33fbac3879fd302bf2f17fe2c  libgcc/config/cris/sfp-machine.h
  9a0bcef0779a9665ae5b963049e27ac8  libgcc/config/cris/t-cris
  b9dc89a49f32db0757703a40d18557af  libgcc/config/cris/t-elfmulti
! f838221a8c8d146ecd073adbd477c282  libgcc/config/cris/t-linux
! d285e4957eb48dd9ce45b6751bd2351b  libgcc/config/cris/umulsidi3.S
! e49ea177a0e99d55c1b9ba12e4372a60  libgcc/config/csky/crti.S
! 112e3581e9ee1f0513dd8ede1256ebe9  libgcc/config/csky/crtn.S
! facc03b8cadbc52e368597241e465bc2  libgcc/config/csky/lib1funcs.S
! 7ebc5d774649f50d20beca40a16598e1  libgcc/config/csky/linux-atomic.c
! c3149d20295e86678c09d1749f4f0e9a  libgcc/config/csky/linux-unwind.h
! 2d40eb2dcd7b440af8f2ac608fa1af50  libgcc/config/csky/t-csky
! be0a987973699f81d3104929e09fbbc0  libgcc/config/csky/t-linux-csky
! 3d4b43989f4f53630fdf07564fec01c2  libgcc/config/darwin-64.c
! 0e4427ab50980a171acbc638f4a4846f  libgcc/config/darwin-crt-tm.c
! a2ad7b17a6729bcf3885db737af1f9cd  libgcc/config/darwin-crt3.c
  9e9354d2ce2c41094a62d88a3c777c4b  libgcc/config/darwin10-unwind-find-enc-func.c
! da40956ae6b1ff7b16b27fe76c2213f5  libgcc/config/epiphany/crti.S
! 47a376f6f4c7229da1a008ae88b1481f  libgcc/config/epiphany/crtint.S
! 5f979adbf276429d7e385bcc19b9a4cf  libgcc/config/epiphany/crtm1reg-r43.S
! a833276cb7400c7b2f81c001e6300588  libgcc/config/epiphany/crtm1reg-r63.S
! 99b55d85cadf2ed2d343a58f094efa4f  libgcc/config/epiphany/crtn.S
! 8182ee14d27906afff4497306bd3280d  libgcc/config/epiphany/crtrunc.S
! 3397c999349359d2b5ff3ab2db1266ba  libgcc/config/epiphany/divsi3-float.S
! 8e5365c96e3b54bfe20a6e5a82f8fc7b  libgcc/config/epiphany/divsi3.S
! 67f4b898157966fc2a6141e2af83437f  libgcc/config/epiphany/divsi3.c
! 194f442a8986457ede3b288f2dbe8cad  libgcc/config/epiphany/epiphany-asm.h
! 44e8864d47d60d708948ff13c9c307d9  libgcc/config/epiphany/ieee-754/eqsf2.S
! e4e425a571f244b73f6cb5729a84d216  libgcc/config/epiphany/ieee-754/fast_div.S
! c7844cda08e1e5b1596fda7295bb33c5  libgcc/config/epiphany/ieee-754/gtesf2.S
! 5adebebdd5fe70f4a66d5ca95fbddfbd  libgcc/config/epiphany/ieee-754/ordsf2.S
! 40fcd00fe565f13e42da57471d346806  libgcc/config/epiphany/ieee-754/uneqsf2.S
! 9d9a137e9ba4f88fbb99ef195a084a43  libgcc/config/epiphany/modsi3-float.S
! cf379c66848330357a8613433323377e  libgcc/config/epiphany/modsi3.S
! c470a27bd9eb58cb2a4254280ce77621  libgcc/config/epiphany/modsi3.c
! dd1265b6efadb04eb803f92535a2bae1  libgcc/config/epiphany/mulsi3.c
  d76fc3e367e9f20ca1d6e4b8ef979bd9  libgcc/config/epiphany/t-custom-eqsf
! 26201e65140dd40bd72f18c4c22cb28b  libgcc/config/epiphany/t-epiphany
! 9f434b97c4dc08fcfbb95519a2281b65  libgcc/config/epiphany/udivsi3-float.S
! cc6ab58dd47f52d044a6d7b1ad8e01f7  libgcc/config/epiphany/udivsi3-float.c
! c487511a8815a55dbfbb6e9381144fc5  libgcc/config/epiphany/udivsi3.S
! 19c645426d5c981472072c5fc41bd6bd  libgcc/config/epiphany/udivsi3.c
! 1e2f8196beaa617645ac83e20d431842  libgcc/config/epiphany/umodsi3-float.S
! a9bc520db20e2d92ea71facdfb7ce8de  libgcc/config/epiphany/umodsi3.S
! 8e6645491fced42fd2984cbc13238753  libgcc/config/epiphany/umodsi3.c
! 182f013363ff1493d65cc28a04b02def  libgcc/config/fr30/crti.S
! 31849d3f95ddd75f1f9290eb4e659742  libgcc/config/fr30/crtn.S
! dcb34594030aa374a34f149cd3689bc4  libgcc/config/fr30/lib1funcs.S
  ee1781f6076fe4696c4710d29bcaa9f2  libgcc/config/fr30/t-fr30
! f635a94a325fa062d82f89a3ed825c76  libgcc/config/frv/cmovd.c
! 19ad00e225d8c7304467018c7af2959c  libgcc/config/frv/cmovh.c
! 6852fe6bdae955208e747e7347456ff8  libgcc/config/frv/cmovw.c
! c65680100edb85d9f3a4de5cf0265171  libgcc/config/frv/elf-lib.h
! 1f58f74a129be78d23bbd6e04a254a29  libgcc/config/frv/frv-abi.h
! 867e78c995c16b06bfa35187a40ccd17  libgcc/config/frv/frvbegin.c
! 33d97a538026ced889eff265c1ddc7c7  libgcc/config/frv/frvend.c
! 37039f6a001bb2d464cba17df5c91808  libgcc/config/frv/lib1funcs.S
! 12ad1df0f4d00fd368ff0610121bc2f8  libgcc/config/frv/libgcc-glibc.ver
  519042a46e82243706e07f0df8d12e35  libgcc/config/frv/modi.c
  f7d4923f0512faafd07369fa6bccd718  libgcc/config/frv/t-frv
  edf3d4afc7174e81e4b47c0bb0de7522  libgcc/config/frv/t-linux
--- 86327,86421 ----
  d41d8cd98f00b204e9800998ecf8427e  libgcc/config/bpf/crti.S
  d41d8cd98f00b204e9800998ecf8427e  libgcc/config/bpf/crtn.S
  8d4717fef859f166f4ef387b932a72f1  libgcc/config/bpf/t-bpf
! e8a3ce579771e8912982c4a097c2888e  libgcc/config/c6x/c6x-abi.h
! 1119da0ffa35ea79dfabd402a562014c  libgcc/config/c6x/crti.S
! 312330d6a0049c11f9af5d4e43592cbb  libgcc/config/c6x/crtn.S
! 8c54636f3f9f01bb117db6dd22759c27  libgcc/config/c6x/eqd.c
! 16d79382da493889ef048b1401a9b696  libgcc/config/c6x/eqf.c
! 0d5fff4658b07cd270bcce5d5767637f  libgcc/config/c6x/ged.c
! 5cc5fab25fb3e7451e27100066ee6ebc  libgcc/config/c6x/gef.c
! 70f1b0f1c584ec8b0a21ddbf0c587650  libgcc/config/c6x/gtd.c
! 2c55f4ffd5464dad7268bcd9c2bf12bd  libgcc/config/c6x/gtf.c
! 74ea4a09c086f575021f960b0265ad41  libgcc/config/c6x/led.c
! d89a1050eb99ec66732791ab745a5836  libgcc/config/c6x/lef.c
! 937a8be2b0279c604b9ced77616121da  libgcc/config/c6x/lib1funcs.S
! c4ebab75071f2bc126c3da62f0fc973f  libgcc/config/c6x/libgcc-eabi.ver
  9068a836854af657b1b590da0c0659f1  libgcc/config/c6x/libunwind.S
! d513ffacd8181e0d536548184353c5ee  libgcc/config/c6x/ltd.c
! 9f3c9c19b946a82020c346a39a98d6de  libgcc/config/c6x/ltf.c
! 898f1d45883159634fa3fd2902e324be  libgcc/config/c6x/pr-support.c
! f03c75536fbabb401f45a12d09aeb49d  libgcc/config/c6x/sfp-machine.h
  e001c742f33c68e3a33a709c345e0c3f  libgcc/config/c6x/t-elf
  7be94443a1640eded81b166ae8fe575f  libgcc/config/c6x/t-uclinux
! 99c5e899f7ac097c5d3a1c08625cd670  libgcc/config/c6x/unwind-c6x.c
! 1ec3a5348aebe5c3ece93e9c19cc3c34  libgcc/config/c6x/unwind-c6x.h
! 8de9a9a253c186a8b37e502b9fd8c113  libgcc/config/cr16/crti.S
! 7b7eb56702499c99bc5de18cb0a7eb8a  libgcc/config/cr16/crtlibid.S
! 12259164434839c8ca81ee2949559765  libgcc/config/cr16/crtn.S
! 470fd3a52cffc4982969c621aa7faaab  libgcc/config/cr16/divmodhi3.c
! a38faff676bca843497da64d3f48e958  libgcc/config/cr16/lib1funcs.S
! 8feeda5a3181e0819e9aad36c008b82e  libgcc/config/cr16/t-cr16
! 4172bb9ceed7a7a89cc501841f0eca5b  libgcc/config/cr16/t-crtlibid
! 4b504401f91015a295bf95ac3a01247e  libgcc/config/cr16/unwind-cr16.c
! 4802552aedbf235ab0d2b86554c8ddf7  libgcc/config/cr16/unwind-dw2.h
! e3f11b13f984ce10b2c7f9db95902ad7  libgcc/config/cris/arit.c
! d258ac6085e158c039efe30360941fdb  libgcc/config/cris/mulsi3.S
! 5b7757e6f73065a9ecb3f440befab1b0  libgcc/config/cris/sfp-machine.h
  9a0bcef0779a9665ae5b963049e27ac8  libgcc/config/cris/t-cris
  b9dc89a49f32db0757703a40d18557af  libgcc/config/cris/t-elfmulti
! 1b2ff9eafa68f554c975c3e7f81d4fcd  libgcc/config/cris/umulsidi3.S
! 3fd988175de09dc11c6641b13417bba0  libgcc/config/csky/crti.S
! 02d7f149b37e9fc714df53d5b047db80  libgcc/config/csky/crtn.S
! c44ec2d162e9b011b2cb833fbdce7145  libgcc/config/csky/lib1funcs.S
! 615409820a29fd1bec2e7c2674d0751c  libgcc/config/csky/linux-atomic.c
! 5f71f829b726f7ff169266850e4523ed  libgcc/config/csky/linux-unwind.h
! 048ac86dbf9780b52e93ef9e02beb24e  libgcc/config/csky/t-csky
! 997dc49ec383f8f8b2ac362e0a9cddf0  libgcc/config/csky/t-linux-csky
! df9f2dd192dc7f0c2fa7379e97d7dd56  libgcc/config/darwin-64.c
! 6869661ee0baed578d47394ab32af913  libgcc/config/darwin-crt-tm.c
! 03e941235ffae6f01e89a827a6ce2281  libgcc/config/darwin-crt3.c
  9e9354d2ce2c41094a62d88a3c777c4b  libgcc/config/darwin10-unwind-find-enc-func.c
! c71a778a00e36dfcea7f846c3f944d73  libgcc/config/epiphany/crti.S
! 81ae5aa8ec7128f805369eae26a9ca51  libgcc/config/epiphany/crtint.S
! 66f1c169dbd8ad3adee5b4141420edf6  libgcc/config/epiphany/crtm1reg-r43.S
! 5928c83b81920094a27a94f567ed643b  libgcc/config/epiphany/crtm1reg-r63.S
! 4113477f29170d2a2f6f942d2ee04bfa  libgcc/config/epiphany/crtn.S
! 10e5fdb0f3b5c1c5fa87fa85261b1a21  libgcc/config/epiphany/crtrunc.S
! 6b0b52dbd1bc485b7dbb6979d6463178  libgcc/config/epiphany/divsi3-float.S
! 62d314258e775f66f400bf025cdd8456  libgcc/config/epiphany/divsi3.S
! 2762af30d8c7ea99af2ca44b7b3ce851  libgcc/config/epiphany/divsi3.c
! a6a8c952b4f40db59351e7ac64e5e96e  libgcc/config/epiphany/epiphany-asm.h
! 7c1a39214137edb5e06ea46852f686bf  libgcc/config/epiphany/ieee-754/eqsf2.S
! fd8e5fc7d5e32849e63f8a15aad83eaa  libgcc/config/epiphany/ieee-754/fast_div.S
! fffad1e6992ffcd93396c5394cf307fb  libgcc/config/epiphany/ieee-754/gtesf2.S
! b6b09e231375b8eca3aea889f9bb14c3  libgcc/config/epiphany/ieee-754/ordsf2.S
! 58114c90350312177a9ebdf50fb7fa2e  libgcc/config/epiphany/ieee-754/uneqsf2.S
! 0feca185c84d5d55538761fa70fb34b1  libgcc/config/epiphany/modsi3-float.S
! a36ee69f0607ada205d4f048c53b915c  libgcc/config/epiphany/modsi3.S
! 045560464d5a9e1e52e49ee46ab2046e  libgcc/config/epiphany/modsi3.c
! 3fc6e0cde5e875e62a7413f65eb60d0f  libgcc/config/epiphany/mulsi3.c
  d76fc3e367e9f20ca1d6e4b8ef979bd9  libgcc/config/epiphany/t-custom-eqsf
! 6b36e9bdfb471ca6ca75a6cfac504301  libgcc/config/epiphany/t-epiphany
! d37f851a8fd8fbe26da8316fb650a830  libgcc/config/epiphany/udivsi3-float.S
! ec3a90a1d33072f467a09e36fe98b72c  libgcc/config/epiphany/udivsi3-float.c
! ccdf8f8d49d3bd656c7b318982e759b3  libgcc/config/epiphany/udivsi3.S
! afa5eee1a87577b3d2de8acf8c732ab3  libgcc/config/epiphany/udivsi3.c
! 6654d37a01eee4fbf3581bdc13eaacf8  libgcc/config/epiphany/umodsi3-float.S
! 691ed1701e30774994edad7ce0058921  libgcc/config/epiphany/umodsi3.S
! 5243704dffd312d4c6a1806135115ba8  libgcc/config/epiphany/umodsi3.c
! a754b5d8c754202abba159920b40d80d  libgcc/config/fr30/crti.S
! 7d280025982df330f6eec2a4cde2a926  libgcc/config/fr30/crtn.S
! 17f578172b79abead988b327388a664b  libgcc/config/fr30/lib1funcs.S
  ee1781f6076fe4696c4710d29bcaa9f2  libgcc/config/fr30/t-fr30
! 40618b808a79facd9cad84ee7e6ab79c  libgcc/config/frv/cmovd.c
! ef5e3171dd2d470a516d164d207d92ff  libgcc/config/frv/cmovh.c
! 03cc197c444f0f8870572a0117eef530  libgcc/config/frv/cmovw.c
! ab664bf9a5708e72515970ff0965b3b8  libgcc/config/frv/elf-lib.h
! b8297212b833f4776a7641280acc660f  libgcc/config/frv/frv-abi.h
! f872e5e19a81a0b6e46f857edad025c7  libgcc/config/frv/frvbegin.c
! 746ecf1f426a2c553d3844d25b655bc1  libgcc/config/frv/frvend.c
! 6625f9b264471fc539d5f944cfa57762  libgcc/config/frv/lib1funcs.S
! d736ee76b43acc286e97eed3a03b7737  libgcc/config/frv/libgcc-glibc.ver
  519042a46e82243706e07f0df8d12e35  libgcc/config/frv/modi.c
  f7d4923f0512faafd07369fa6bccd718  libgcc/config/frv/t-frv
  edf3d4afc7174e81e4b47c0bb0de7522  libgcc/config/frv/t-linux
*************** c363a68408b30fe1ae97782cfb8a4ac1  libgcc
*** 80466,80511 ****
  8655cce7a18893493cc17391c6ce08d5  libgcc/config/frv/ulltof.c
  756aa4a0c6f33a0203e0ea6594c19e38  libgcc/config/frv/umodi.c
  63a86c0eba76d6ea5b13351162b69e89  libgcc/config/ft32/crti-hw.S
! 5039fdcf44e6428e04e84bb10d913030  libgcc/config/ft32/crti.S
! e3e14a5125365ed97a320b4f3efc3543  libgcc/config/ft32/crtn.S
  4d440904c0919d8bade72af495ee932b  libgcc/config/ft32/epilog.S
! f10459e5653651a14de55afe0cc74d5b  libgcc/config/ft32/lib1funcs.S
  fd43d6ac7bf2546f0be1ff27b92cf494  libgcc/config/ft32/prolog.S
  7651ba55a7767a127d4d8d9e1798196d  libgcc/config/ft32/sfp-machine.h
  de53de7ae179ee6c1472a52a63fffec9  libgcc/config/ft32/t-ft32
! d7613a3bc3769b645af3417efc8c889e  libgcc/config/gcn/atomic.c
! e46e20104978c8dfcf66beecfbfa7b90  libgcc/config/gcn/crt0.c
! 28304a48a4c0a920dbe8c11acca4e5bb  libgcc/config/gcn/gthr-gcn.h
! 6a3e807047e008c231eb4a803ee2fd4d  libgcc/config/gcn/lib2-divmod-hi.c
! 2bd7e45718aee7e0b15ae2b927d5f841  libgcc/config/gcn/lib2-divmod.c
! 3a74be811ea59f8fe5c872bcb2d8624c  libgcc/config/gcn/lib2-gcn.h
  c9b91505a24abd3bc6b11e0f094edee0  libgcc/config/gcn/sfp-machine.h
  fc7cd634d54aa911e0f67cfba0b76154  libgcc/config/gcn/t-amdgcn
! c38daa292e266d856e46bb59519d161d  libgcc/config/gcn/unwind-gcn.c
! c604f98e6ab549ac5c3e52930162f0b7  libgcc/config/gthr-lynx.h
! a988c66e0c357632ea193cd631395b44  libgcc/config/gthr-rtems.h
! ffe69c556a9c86ba2a1f3388ffde9b23  libgcc/config/gthr-vxworks-cond.c
! fd7c1e009480e117b600af604fd894c1  libgcc/config/gthr-vxworks-thread.c
! 1615f2898974469dbd712253afea0471  libgcc/config/gthr-vxworks-tls.c
! 433ad3be0f84383e5cbf19e9d204d3cc  libgcc/config/gthr-vxworks.c
! d0568931fcdea80279b34f3d05ba21ce  libgcc/config/gthr-vxworks.h
! 368f21b571cf7d8476ad6f5da18edae8  libgcc/config/h8300/clzhi2.c
! 0d96c4a851b4d47587b77ec1ad27df87  libgcc/config/h8300/crti.S
! 7fdf0e9d4cd9b5fe67dc4a95e4f2ba2a  libgcc/config/h8300/crtn.S
! 16dd3252ffebab1993872847ac58a52c  libgcc/config/h8300/ctzhi2.c
! 5d5b3146ea8f6919fc5485c1f57ebf94  libgcc/config/h8300/fixunssfsi.c
  378e602ed89f497e602776d99b46d7ad  libgcc/config/h8300/h8300-lib.h
! da39e33a8143221106a0bf3179f27447  libgcc/config/h8300/lib1funcs.S
! 3a45bac0ad6db154dfb93c6e268f19ce  libgcc/config/h8300/parityhi2.c
! 955d93f2a9fcefa8e65e65e59f1d0ec4  libgcc/config/h8300/popcounthi2.c
! 55b7982f9c3e510abd0f24031a51a095  libgcc/config/h8300/sfp-machine.h
  e002eff640bc32723d0216927bc99406  libgcc/config/h8300/t-h8300
  5e306047059c21ece876039122734094  libgcc/config/h8300/t-linux
! 1042755747ec30d2db16424fac18c15d  libgcc/config/hardfp.c
  a8754cebd217459a0e9d14503d180eab  libgcc/config/i386/32/sfp-machine.h
  33fdee54eed1c202a39234d129f2a7ae  libgcc/config/i386/32/t-iamcu
  8271562f1de2b3fa5b976454b83bfdc0  libgcc/config/i386/32/t-softfp
! 50b2187ac17afc4225471c52513de0ad  libgcc/config/i386/32/tf-signs.c
  c823b0cff478388588a9aabedaa93068  libgcc/config/i386/64/_divtc3.c
  8f7ff4449be9588e09da2929b14b1647  libgcc/config/i386/64/_multc3.c
  6268512927fae19eb0e34459520beb28  libgcc/config/i386/64/_powitf2.c
--- 86425,86470 ----
  8655cce7a18893493cc17391c6ce08d5  libgcc/config/frv/ulltof.c
  756aa4a0c6f33a0203e0ea6594c19e38  libgcc/config/frv/umodi.c
  63a86c0eba76d6ea5b13351162b69e89  libgcc/config/ft32/crti-hw.S
! e670f5e2d9e31b46dfcb32536e9b2db1  libgcc/config/ft32/crti.S
! 0fd1b02d746b5de82fd8047dbb33443b  libgcc/config/ft32/crtn.S
  4d440904c0919d8bade72af495ee932b  libgcc/config/ft32/epilog.S
! 0b91a7695482c035e76ecca9a508c3a1  libgcc/config/ft32/lib1funcs.S
  fd43d6ac7bf2546f0be1ff27b92cf494  libgcc/config/ft32/prolog.S
  7651ba55a7767a127d4d8d9e1798196d  libgcc/config/ft32/sfp-machine.h
  de53de7ae179ee6c1472a52a63fffec9  libgcc/config/ft32/t-ft32
! c0ece4fa7e9e13a07a7e5271cbbd0f60  libgcc/config/gcn/atomic.c
! f1f07ea84f5c542de7488766a0717a1d  libgcc/config/gcn/crt0.c
! 103f5b82bbbb3509652e57e8cbf488b3  libgcc/config/gcn/gthr-gcn.h
! d525b23c7e45e184421320851ccc55ea  libgcc/config/gcn/lib2-divmod-hi.c
! 2663155f0bf266598f8eea5722b116ca  libgcc/config/gcn/lib2-divmod.c
! a62324bf6652a792256777871ab9e6ee  libgcc/config/gcn/lib2-gcn.h
  c9b91505a24abd3bc6b11e0f094edee0  libgcc/config/gcn/sfp-machine.h
  fc7cd634d54aa911e0f67cfba0b76154  libgcc/config/gcn/t-amdgcn
! 405b10f9db604f8ed890fe9e1da030ec  libgcc/config/gcn/unwind-gcn.c
! e4419c210a942f32d263426030219d70  libgcc/config/gthr-lynx.h
! 5c2e6036dd1c421c065d7b2d9ed34b88  libgcc/config/gthr-rtems.h
! 676dcf9e1f60714eb6ec737b9429be82  libgcc/config/gthr-vxworks-cond.c
! 5b12d4691946176542e4fb0b7ef10028  libgcc/config/gthr-vxworks-thread.c
! 8ebde2144757a6bd2d2c16a4ea0a0ac7  libgcc/config/gthr-vxworks-tls.c
! 4ea93d105d642fe6c1018ae7697c7579  libgcc/config/gthr-vxworks.c
! e7e8a1ce910c903b11f1b03a3d75236b  libgcc/config/gthr-vxworks.h
! 312298360556fae02b0d4338191b6a52  libgcc/config/h8300/clzhi2.c
! c152d86ecfec2d2f69457d091a7a6293  libgcc/config/h8300/crti.S
! 401c98e870bd1b3f4d013d72072b0023  libgcc/config/h8300/crtn.S
! 4478fb8e58baaea31c49d68854396164  libgcc/config/h8300/ctzhi2.c
! a0e8b88172af7a66602c30230217a0bc  libgcc/config/h8300/fixunssfsi.c
  378e602ed89f497e602776d99b46d7ad  libgcc/config/h8300/h8300-lib.h
! 06516d83c0efa352e8906d50921dceea  libgcc/config/h8300/lib1funcs.S
! cf4492ea0439a8c14a8f356a97753ee3  libgcc/config/h8300/parityhi2.c
! b186e2162a290c9f0c67669c44f2a303  libgcc/config/h8300/popcounthi2.c
! ee801dcd3742b8390ad3fa923e6ece38  libgcc/config/h8300/sfp-machine.h
  e002eff640bc32723d0216927bc99406  libgcc/config/h8300/t-h8300
  5e306047059c21ece876039122734094  libgcc/config/h8300/t-linux
! ff4f63dfedc92499a8a6dc103a58458e  libgcc/config/hardfp.c
  a8754cebd217459a0e9d14503d180eab  libgcc/config/i386/32/sfp-machine.h
  33fdee54eed1c202a39234d129f2a7ae  libgcc/config/i386/32/t-iamcu
  8271562f1de2b3fa5b976454b83bfdc0  libgcc/config/i386/32/t-softfp
! 5191cd539445f6b36145b0ce61725e22  libgcc/config/i386/32/tf-signs.c
  c823b0cff478388588a9aabedaa93068  libgcc/config/i386/64/_divtc3.c
  8f7ff4449be9588e09da2929b14b1647  libgcc/config/i386/64/_multc3.c
  6268512927fae19eb0e34459520beb28  libgcc/config/i386/64/_powitf2.c
*************** d4cd30e890b5d772946c79359704fc0b  libgcc
*** 80520,80562 ****
  0987e17186e8a33dbf7c39d7934d4861  libgcc/config/i386/avx_resms64x.S
  ef88ad808d3f1101d7e96fae5706660f  libgcc/config/i386/avx_savms64.S
  12b992c114b195cf886a7a218b0d1e54  libgcc/config/i386/avx_savms64f.S
! 0b50691d7ab6f115485d528357f38443  libgcc/config/i386/cpuinfo.c
! 93e410f7c7a43b9f6ce33b5bd096c05e  libgcc/config/i386/cpuinfo.h
! 0c87fa7e96794502d777bafe1dc1e3f2  libgcc/config/i386/crtfastmath.c
! 21c3fa1ea956ac3832e62d8fc364d235  libgcc/config/i386/crti.S
! ede82965b6cedb502d5870be4b2f67d9  libgcc/config/i386/crtn.S
! c2af6ac233b241e8db0c62d85e2d91b5  libgcc/config/i386/crtprec.c
! 13e7cf1a83e45c2ca50e986127ae50de  libgcc/config/i386/cygming-crtbegin.c
! 5b80ffdfb3f3683c17ea577dabd7d4ca  libgcc/config/i386/cygming-crtend.c
! a018d6f4231e7b2380403999dcc402d9  libgcc/config/i386/cygwin.S
! d251d0089e79b4bcbfc28a89612b8b05  libgcc/config/i386/darwin-lib.h
! 79c500acc6af1c9967260271f4a9eb98  libgcc/config/i386/dragonfly-unwind.h
! 9d2ab15be43c39996a9619571ae964b2  libgcc/config/i386/elf-lib.h
! 19eb4e48ccd25fa960068c2b418fa8e7  libgcc/config/i386/enable-execute-stack-mingw32.c
! 674963031901785223097c4905b5b070  libgcc/config/i386/freebsd-unwind.h
! 3d7be5b5213ae7d1154084849823ab88  libgcc/config/i386/gnu-unwind.h
! b770de7172bef0602781f07ad25c08cc  libgcc/config/i386/gthr-win32.c
! 00815d5c3f68597a73a7dd304abea71b  libgcc/config/i386/gthr-win32.h
! efba01dc186d85cce4dc435aad7b2021  libgcc/config/i386/i386-asm.h
! f37bb0a6917353616c4026fac958f6bc  libgcc/config/i386/libgcc-bsd.ver
! 559b3227d15bf87b0f7d657183363d9f  libgcc/config/i386/libgcc-cygming.ver
! d5104ec201dc5ef00ee080b61d18f234  libgcc/config/i386/libgcc-darwin.10.4.ver
! 4bddb4d887eaf22b41482540454bf31b  libgcc/config/i386/libgcc-darwin.10.5.ver
! e0f54924bc5afc559b4b7b1830760a03  libgcc/config/i386/libgcc-glibc.ver
! 232a64815a78cdb2c8d6e69651814692  libgcc/config/i386/libgcc-sol2.ver
! 9852cf14f3a0d1238ee085b42ba0cc16  libgcc/config/i386/linux-unwind.h
! 3ec286b26e1896e4e77386488c6410e7  libgcc/config/i386/morestack.S
! 350b06ddcfbb61064f4a6f068f8194d5  libgcc/config/i386/resms64.h
! 40b9bed72a318b7a62d96c702505267b  libgcc/config/i386/resms64f.h
! d684203c76b04b1466da72662e53a8d4  libgcc/config/i386/resms64fx.h
! 53c32d50bddb19f47f64e60ac34f8f95  libgcc/config/i386/resms64x.h
! 1938d40b5b741deb9dd142e53239a002  libgcc/config/i386/savms64.h
! bbd2f9d2ec1600880a885e2a65d5b3e7  libgcc/config/i386/savms64f.h
! 979564935ef756385c88aa3cb17e50fd  libgcc/config/i386/sfp-exceptions.c
  d34238cdb06dae0b56a3a517467683d3  libgcc/config/i386/sfp-machine.h
! 71fd7298815f4fae996ddfa230466d8e  libgcc/config/i386/shadow-stack-unwind.h
! 771cb31d669914336b26a0ffdb908e65  libgcc/config/i386/sol2-c1.S
! da55f99247af0463ee67892b04c89753  libgcc/config/i386/sol2-unwind.h
  597d8ce804b1c2e917fdb1870e7ea0ac  libgcc/config/i386/sse_resms64.S
  bedbda9d38d546838a72b745204a631f  libgcc/config/i386/sse_resms64f.S
  34b800926e66c174903d05295a562acd  libgcc/config/i386/sse_resms64fx.S
--- 86479,86520 ----
  0987e17186e8a33dbf7c39d7934d4861  libgcc/config/i386/avx_resms64x.S
  ef88ad808d3f1101d7e96fae5706660f  libgcc/config/i386/avx_savms64.S
  12b992c114b195cf886a7a218b0d1e54  libgcc/config/i386/avx_savms64f.S
! 54dfd7541ad6b170544ce36e3b747391  libgcc/config/i386/cpuinfo.c
! 5988cbb8691fed1301b143dfece20344  libgcc/config/i386/crtfastmath.c
! 1963588824c73316782329999acd8f7d  libgcc/config/i386/crti.S
! d94060d50637bba068dccebb10ebd276  libgcc/config/i386/crtn.S
! 2d66658066d0c902c6a3a20ff862dd67  libgcc/config/i386/crtprec.c
! 52507966e79820fcaf9d1d53882c0b0a  libgcc/config/i386/cygming-crtbegin.c
! 95f5fe9a887e60b538f2820903427936  libgcc/config/i386/cygming-crtend.c
! 03b40e9f17bfd6c1c355707b0cc58422  libgcc/config/i386/cygwin.S
! 8e32679f838576e2e29205d7703f12ec  libgcc/config/i386/darwin-lib.h
! c0d64826a289e53ebecbb0cb6c3016b8  libgcc/config/i386/dragonfly-unwind.h
! 013c38c70c479fff2350a5d3e33f2921  libgcc/config/i386/elf-lib.h
! 704091e0d895ea6fd720a5692cb233f4  libgcc/config/i386/enable-execute-stack-mingw32.c
! fd927f085df11ab034a7498835c23dd1  libgcc/config/i386/freebsd-unwind.h
! 2f707aa968cd68f60abbc372e05c6769  libgcc/config/i386/gnu-unwind.h
! 87dfce9affedeedbdee3594d4fa65ff2  libgcc/config/i386/gthr-win32.c
! c4fdf821208a66a41499c5c24c90937a  libgcc/config/i386/gthr-win32.h
! a6eb2958cdf081f46703f5d8ec4d2094  libgcc/config/i386/i386-asm.h
! a037bdc5fa419df930a70d43dc039b79  libgcc/config/i386/libgcc-bsd.ver
! 012a445dcbda6978db6335d4e9065689  libgcc/config/i386/libgcc-cygming.ver
! de85512c62993ed6f5116cdecdc4779c  libgcc/config/i386/libgcc-darwin.10.4.ver
! 1e807c3227e9733d1ac1d771b0a15b29  libgcc/config/i386/libgcc-darwin.10.5.ver
! c72b4b801cd63e8e3782ea78ad82877a  libgcc/config/i386/libgcc-glibc.ver
! 2facc8938aca02b18bc1ac4ccc7559bf  libgcc/config/i386/libgcc-sol2.ver
! b8bba8192afb556529f1a6b084c4b95d  libgcc/config/i386/linux-unwind.h
! 3cfdf3fc659f68e9a565a26ae29e9e8e  libgcc/config/i386/morestack.S
! eb3437d6c4399724a15b2867f9fd63be  libgcc/config/i386/resms64.h
! e8fda78f9f1bac1c6147220a29fd51b4  libgcc/config/i386/resms64f.h
! cd8acee123720992b630b53d0e9dd613  libgcc/config/i386/resms64fx.h
! b889d0e6611c04010f9991a8c9e83f52  libgcc/config/i386/resms64x.h
! c6a59a6ff3b7a8f522f74f5bcfb3e841  libgcc/config/i386/savms64.h
! 6706a482a32249251b09e6de18763a94  libgcc/config/i386/savms64f.h
! 6636b868b3515dbc4430cd5a3ce9db68  libgcc/config/i386/sfp-exceptions.c
  d34238cdb06dae0b56a3a517467683d3  libgcc/config/i386/sfp-machine.h
! 0dde3148a4fb2bbe1a9da9ed2e65b7f6  libgcc/config/i386/shadow-stack-unwind.h
! 02f5e541017d5aa96608b28dd6704669  libgcc/config/i386/sol2-c1.S
! dee80682121e4932e4bee4f75eac13b0  libgcc/config/i386/sol2-unwind.h
  597d8ce804b1c2e917fdb1870e7ea0ac  libgcc/config/i386/sse_resms64.S
  bedbda9d38d546838a72b745204a631f  libgcc/config/i386/sse_resms64f.S
  34b800926e66c174903d05295a562acd  libgcc/config/i386/sse_resms64fx.S
*************** e5387e909a3b29458cfdda0150e1f8f6  libgcc
*** 80588,80612 ****
  7f83cb5269303d6f2bc8693886cfecc2  libgcc/config/i386/t-softfp
  e3f37cf5fbd829324e763c71726907a2  libgcc/config/i386/t-sol2
  89444a8a78bd3aa7426e9525cdd7ce25  libgcc/config/i386/t-stack-i386
! 60f587911a876e53883d600d885a989d  libgcc/config/i386/value-unwind.h
! 358e8b3f86ea01e6b65f8eb10375014b  libgcc/config/i386/w32-unwind.h
  ffc8a68dc02aca1cf8703f6ff29109d3  libgcc/config/ia64/__divxf3.S
  c3b9941b44cdc74dfc42996f7d2d765b  libgcc/config/ia64/_fixtfdi.S
  e5d2feda0a6505570c0a64e52fcae703  libgcc/config/ia64/_fixunstfdi.S
  4a628b33bbcfbe6ace2c47d3e486ec14  libgcc/config/ia64/_floatditf.S
! 16f75021ec69c4024eee687df433f069  libgcc/config/ia64/crtbegin.S
! c7f968c4976e4db83886770c31f95be5  libgcc/config/ia64/crtend.S
! d1b9aa165bc5fed9a91549a0d29cb94a  libgcc/config/ia64/crtfastmath.c
! bfc636c77fd5b76d06345331a1eab7b1  libgcc/config/ia64/crti.S
! 6085c7b483fffed945bd1cd7e0247bc7  libgcc/config/ia64/crtn.S
! 5ea0597e78251461e81c93a82b89fa79  libgcc/config/ia64/fde-glibc.c
! 20676372758de593343582d201c0ca5a  libgcc/config/ia64/fde-vms.c
! 0d24c0f79d1e1d7b8de9a6d0ccdbc29a  libgcc/config/ia64/lib1funcs.S
! d094a1d737ebb081718d77877c63bf0d  libgcc/config/ia64/libgcc-glibc.ver
! 1e10a5c5139c3a966464f0201ef94a14  libgcc/config/ia64/libgcc-ia64.ver
! dcfb8eca39229141faeeb575033decab  libgcc/config/ia64/linux-unwind.h
! 5467fb01aa5fe4c2c2e3290228ff79f1  libgcc/config/ia64/quadlib.c
! 833610532cdfed37abae63afb2021ba2  libgcc/config/ia64/sfp-exceptions.c
  96123e16288e91bc9fcaeb243516c740  libgcc/config/ia64/sfp-machine.h
  0bb88f6d16035394a23c622ba320a824  libgcc/config/ia64/t-eh-ia64
  33399ed8e4f636769acf666b91d227c6  libgcc/config/ia64/t-hpux
--- 86546,86571 ----
  7f83cb5269303d6f2bc8693886cfecc2  libgcc/config/i386/t-softfp
  e3f37cf5fbd829324e763c71726907a2  libgcc/config/i386/t-sol2
  89444a8a78bd3aa7426e9525cdd7ce25  libgcc/config/i386/t-stack-i386
! 901b0d4b16a1d751a06ab132d73a8e18  libgcc/config/i386/value-unwind.h
! fd6ba0c47fa4da68fe8431f945ad2189  libgcc/config/i386/w32-unwind.h
  ffc8a68dc02aca1cf8703f6ff29109d3  libgcc/config/ia64/__divxf3.S
  c3b9941b44cdc74dfc42996f7d2d765b  libgcc/config/ia64/_fixtfdi.S
  e5d2feda0a6505570c0a64e52fcae703  libgcc/config/ia64/_fixunstfdi.S
  4a628b33bbcfbe6ace2c47d3e486ec14  libgcc/config/ia64/_floatditf.S
! 0a8afbf9e82bf19d19761467af269d78  libgcc/config/ia64/crtbegin.S
! df4f485b5a199b0cee1a104ec0c5aa4c  libgcc/config/ia64/crtend.S
! 146c0d64718477ceb5970dabda568964  libgcc/config/ia64/crtfastmath.c
! 0a521777b6e1bce1bac6de9c214f7e0c  libgcc/config/ia64/crti.S
! d8e7ed2feee78203c2a50230c6b3f1a5  libgcc/config/ia64/crtn.S
! 09ae9898a8a15266c60b15a27f0b1ba4  libgcc/config/ia64/divtf3.c
! ae70dc80b284528c855e4df5d905e429  libgcc/config/ia64/fde-glibc.c
! a718c2a3de4ca2f3a58d4eeb874fb9f2  libgcc/config/ia64/fde-vms.c
! 722d38319f9bc75b956e67283accb618  libgcc/config/ia64/lib1funcs.S
! 6c98b50359afcab8ee396151b7518a5b  libgcc/config/ia64/libgcc-glibc.ver
! 337da55239e931e7c0b3e13eeb4c7f86  libgcc/config/ia64/libgcc-ia64.ver
! 774ec67fdaec811de84651ff49e71e15  libgcc/config/ia64/linux-unwind.h
! a0bec9d0e34f0677701580e7a7c60963  libgcc/config/ia64/quadlib.c
! 761c1e8dc86c810b5deb66bf65d1b7ad  libgcc/config/ia64/sfp-exceptions.c
  96123e16288e91bc9fcaeb243516c740  libgcc/config/ia64/sfp-machine.h
  0bb88f6d16035394a23c622ba320a824  libgcc/config/ia64/t-eh-ia64
  33399ed8e4f636769acf666b91d227c6  libgcc/config/ia64/t-hpux
*************** a687e8161232885646a8f72e1bb638c6  libgcc
*** 80616,81179 ****
  7765091a208742b8a4a258223f1d7c22  libgcc/config/ia64/t-linux-libunwind
  bbd02bc575b39b813abb3651cde980d7  libgcc/config/ia64/t-slibgcc-hpux
  3cc3f3d4611f64c4d5fc225a72d8ccc4  libgcc/config/ia64/t-softfp
! 3586c7fe82ea27e7999b410f999857ec  libgcc/config/ia64/t-softfp-compat
  552ede49162d3a4fb9e1e113de11e8b5  libgcc/config/ia64/t-vms
! 3d0edeb7b11c5abcb0ae0cdb1beca972  libgcc/config/ia64/tf-signs.c
! ba74753d03a1e7e14bebbd271caa8456  libgcc/config/ia64/unwind-ia64.c
! 23d95ea041cf36b08477e1d5e91ca419  libgcc/config/ia64/unwind-ia64.h
! c24f5e234b0091e469960bc984cb63ac  libgcc/config/ia64/vms-crtinit.S
! 3de7511560ec0cd082bc9f166d77732e  libgcc/config/ia64/vms-unwind.h
! 739fa1e99eaa1be947f9160810ba8342  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! 1c6c92f99371a327fa6282a9924cc80e  libgcc/config/libbid/ChangeLog
! d686dd88df06e999b778807d77f67f20  libgcc/config/libbid/_addsub_dd.c
! 39440f40364aec5c858424ea091e6fb0  libgcc/config/libbid/_addsub_sd.c
! a2a461592be070f0e4bcf72559dc9e11  libgcc/config/libbid/_addsub_td.c
! b9f82448b8d4aa373943a5997b381746  libgcc/config/libbid/_dd_to_df.c
! 278292571ca085e26dd65de7fe9bc1c6  libgcc/config/libbid/_dd_to_di.c
! 25ab1f8cce741922c19f435e998b9c37  libgcc/config/libbid/_dd_to_sd.c
! b4c24d7103790b7040ad0ee1e7c1dc18  libgcc/config/libbid/_dd_to_sf.c
! f6b9544d6715b594bce3b66c87ce10ee  libgcc/config/libbid/_dd_to_si.c
! 5677d9272bb5975d1e923c9850243452  libgcc/config/libbid/_dd_to_td.c
! 00fa4c00ff63b8ce84a48431f09b4840  libgcc/config/libbid/_dd_to_tf.c
! 910a1af278aa91801a56ac15fb755b28  libgcc/config/libbid/_dd_to_udi.c
! c7cc603d183d6a1126649d07034b6b30  libgcc/config/libbid/_dd_to_usi.c
! efc199dd42776342c8e31040dbb01c77  libgcc/config/libbid/_dd_to_xf.c
! 399150fefdd18d53218c49f1d971b1e6  libgcc/config/libbid/_df_to_dd.c
! 48a7ca50b79deb0bd548683e5c6dd584  libgcc/config/libbid/_df_to_sd.c
! 372fac94247c3bd262b7ec99ed6cb9f6  libgcc/config/libbid/_df_to_td.c
! 140ace352ae9243b1b4e02b7628fb8d9  libgcc/config/libbid/_di_to_dd.c
! 0d1e100299cbbc102f8fa00ac0c87b52  libgcc/config/libbid/_di_to_sd.c
! e3d301bcba8665f814a4a7de5c2443c0  libgcc/config/libbid/_di_to_td.c
! e39e26c0381100f3edb5db9d524d2441  libgcc/config/libbid/_div_dd.c
! e8cadb1ce15ac01ff8e2aae094ea5c9a  libgcc/config/libbid/_div_sd.c
! 2eafd2acb936b24996f3ffa60833feca  libgcc/config/libbid/_div_td.c
! 1551929d1366b56acf87c7f4fa0243da  libgcc/config/libbid/_eq_dd.c
! fdad3843cafb49baade6c5f3c63c086c  libgcc/config/libbid/_eq_sd.c
! e43acee422babcb178397e24d7394cb5  libgcc/config/libbid/_eq_td.c
! ac7699a6a1f6e5b13dc9a4d1ac5e501e  libgcc/config/libbid/_ge_dd.c
! a26759db6431be110a93c87e847dafcd  libgcc/config/libbid/_ge_sd.c
! d1e04ecbc7415c97629f27fbc170dcf0  libgcc/config/libbid/_ge_td.c
! 01ee54f819157d693b27fd658c920c49  libgcc/config/libbid/_gt_dd.c
! 0e0128c07f2ab34384d919034aad010d  libgcc/config/libbid/_gt_sd.c
! 8b6c66f4afd8ea917e376b057e486825  libgcc/config/libbid/_gt_td.c
! 2ceb20d9691ed624259ed0f6faf1dfb7  libgcc/config/libbid/_isinfd128.c
! b247e0d086466a67610814e15c30d453  libgcc/config/libbid/_isinfd32.c
! b4d1d41b4d57d13e44b5e26b3bc79a0a  libgcc/config/libbid/_isinfd64.c
! 8158448125b9ce419e092ed3cd63f628  libgcc/config/libbid/_le_dd.c
! f17c95dba622ed3adc2abcc0773a4a3f  libgcc/config/libbid/_le_sd.c
! 46f8c89ccc1425b755b32f54ffc99c42  libgcc/config/libbid/_le_td.c
! 0253c633bc5af412ab6851ffabe92890  libgcc/config/libbid/_lt_dd.c
! 103453ddd708a7c77339ce140b0225cd  libgcc/config/libbid/_lt_sd.c
! dea7b8eae7f3ff72bd11e60ff6cd417a  libgcc/config/libbid/_lt_td.c
! e227ae4c69fe643335cbb055233c9f03  libgcc/config/libbid/_mul_dd.c
! 5cc6589352b984d54e60d52a33dee5a2  libgcc/config/libbid/_mul_sd.c
! 3858a0829f7a5d84ea158d8915dcc9b9  libgcc/config/libbid/_mul_td.c
! cf9ae4c8130e6fcfa8efe9d7631ab45e  libgcc/config/libbid/_ne_dd.c
! 63e69a6734ec867758c14194d7600ea2  libgcc/config/libbid/_ne_sd.c
! b4ceb5e527e0b6efc5b54f4853a08553  libgcc/config/libbid/_ne_td.c
! 4e169f8531d499aba8bed9115c832a9d  libgcc/config/libbid/_sd_to_dd.c
! e37e06c34c9ddf2c305406e09d6e9d9d  libgcc/config/libbid/_sd_to_df.c
! 75c70daffb387cabf9aa46ed1e2cecfa  libgcc/config/libbid/_sd_to_di.c
! 8e156e9a87e048e4212c9efed2951a09  libgcc/config/libbid/_sd_to_sf.c
! 4e20fadbb65ca208852f80ec5610b2c9  libgcc/config/libbid/_sd_to_si.c
! 235baebfbd227b196f05679f0d5f2876  libgcc/config/libbid/_sd_to_td.c
! bbe4a7ee4e3547af9d22d855fe23d54f  libgcc/config/libbid/_sd_to_tf.c
! 43d173d69ac9e05ee763f6ba1a5d581b  libgcc/config/libbid/_sd_to_udi.c
! 7319e90d52ec7b352715c50925ae5453  libgcc/config/libbid/_sd_to_usi.c
! c8c5bde567193c1494e549f5988d7941  libgcc/config/libbid/_sd_to_xf.c
! 5b0d7b7694ccea9bb6e2d16f4720bbc1  libgcc/config/libbid/_sf_to_dd.c
! c689b7d6bfbe5789b0338ad898249564  libgcc/config/libbid/_sf_to_sd.c
! 17fd6e655210dff82ad71cab70caa853  libgcc/config/libbid/_sf_to_td.c
! 8ec2a9c0f274dc36f5495252310ceaf5  libgcc/config/libbid/_si_to_dd.c
! 26ddad3bf8cfb6b0410606a02d7b05fd  libgcc/config/libbid/_si_to_sd.c
! 7c401e0121760f238e9cee0da9b203cf  libgcc/config/libbid/_si_to_td.c
! 50634deba3859c597da527c9b809f386  libgcc/config/libbid/_td_to_dd.c
! 67c0cc60898de8e9b85b4a566324d986  libgcc/config/libbid/_td_to_df.c
! 4d046c502ed9f03e3b1783124ca0da48  libgcc/config/libbid/_td_to_di.c
! 902000390147216dd6d7e1cba392fffd  libgcc/config/libbid/_td_to_sd.c
! 6c541a2978e9c904c0b060c66389a1bf  libgcc/config/libbid/_td_to_sf.c
! 6f31e61f0b70e0100d7db7206e0f04aa  libgcc/config/libbid/_td_to_si.c
! a8e2ce9a7d29496183b21dea648f79c2  libgcc/config/libbid/_td_to_tf.c
! 1065733bcf1f8a24ab5907ddbd149444  libgcc/config/libbid/_td_to_udi.c
! e2d55e763afd15edc47716d49d9aab64  libgcc/config/libbid/_td_to_usi.c
! 942278f3d7dcc505b286c7808aea7ef2  libgcc/config/libbid/_td_to_xf.c
! 9ec559cf0a079db9558f86d74f5591a8  libgcc/config/libbid/_tf_to_dd.c
! 777e411476e95c01c47830c375c96a61  libgcc/config/libbid/_tf_to_sd.c
! 6fdd1941dbe5a48f41ec7d3bc3012124  libgcc/config/libbid/_tf_to_td.c
! a192fc08b26dd071ef6a9cc8e5d73ccb  libgcc/config/libbid/_udi_to_dd.c
! 111fc10d85488a8b52fae9686e740b83  libgcc/config/libbid/_udi_to_sd.c
! 488c226218fe37a8db933627d393fd6a  libgcc/config/libbid/_udi_to_td.c
! f0a671116bbf02640eab48f6cac9e235  libgcc/config/libbid/_unord_dd.c
! dc8f6f8047219711db94d9b460c8f467  libgcc/config/libbid/_unord_sd.c
! 2faa9c5351ffc6a8edc70edb811e964d  libgcc/config/libbid/_unord_td.c
! 88c5ac742d810dfd1088a24d85b8ca14  libgcc/config/libbid/_usi_to_dd.c
! e55c62cb34863c3b34b7865440cace4f  libgcc/config/libbid/_usi_to_sd.c
! 49ef2cfc65f840f5f1b79acb89ffe52c  libgcc/config/libbid/_usi_to_td.c
! 0aa2527cc0af0f11515b060ebbdabedc  libgcc/config/libbid/_xf_to_dd.c
! 6078e6a3d59c3c629facbae679056b7e  libgcc/config/libbid/_xf_to_sd.c
! 3c0ae631f082c999738efd713effdb50  libgcc/config/libbid/_xf_to_td.c
! e78c7002c7866a795912fecfc54c0d82  libgcc/config/libbid/bid128.c
! 827cd9d9c48a702f4da49a575b9b5d42  libgcc/config/libbid/bid128_2_str.h
! 52ea2ecc45276eb02a85a912da931f3e  libgcc/config/libbid/bid128_2_str_macros.h
! ef0ba619075d54e2329f087ec9afdb37  libgcc/config/libbid/bid128_2_str_tables.c
! 538a8747a7769e688a4d29c9675c9a4f  libgcc/config/libbid/bid128_add.c
! 6981f75acf818a8f028514f33b43f6c6  libgcc/config/libbid/bid128_compare.c
! d61a03d09a65dc91ceab782a379faf8b  libgcc/config/libbid/bid128_div.c
! c902d2f2026c4bd9b7725ad4493c8115  libgcc/config/libbid/bid128_fma.c
! ed63b1cda9bbe905fa5331dd10dd1242  libgcc/config/libbid/bid128_logb.c
! f5410959e49a48c5a73f5444bb3018f0  libgcc/config/libbid/bid128_minmax.c
! f033b5b2e429d3da64c8ed73dc8e3dc7  libgcc/config/libbid/bid128_mul.c
! cfe2b76e27d0e611f4a52ad2df754a69  libgcc/config/libbid/bid128_next.c
! d9a7db6881425cb0ae8f5bf14fafc4e0  libgcc/config/libbid/bid128_noncomp.c
! bf6704ed5685fa0783db7b52a918fa52  libgcc/config/libbid/bid128_quantize.c
! e54251ebe85f133a43757f99505589f2  libgcc/config/libbid/bid128_rem.c
! 024332d61651613eb00eb19bcc855fa3  libgcc/config/libbid/bid128_round_integral.c
! 9acaf8c7e0e2c54146d64b42849edc91  libgcc/config/libbid/bid128_scalb.c
! 1424cec797e981521d5219cca450e53e  libgcc/config/libbid/bid128_sqrt.c
! 19002a7cc952a0a2465db3155433e670  libgcc/config/libbid/bid128_string.c
! 9f212a72a5c46f32fbb37351956eb7b0  libgcc/config/libbid/bid128_to_int16.c
! ad406696c25e0af0b9f9ac94703223b2  libgcc/config/libbid/bid128_to_int32.c
! 7a01fd416bc555c4355b4b9e91ca4933  libgcc/config/libbid/bid128_to_int64.c
! 11debaf68afd5f1728d48fb40f94c554  libgcc/config/libbid/bid128_to_int8.c
! 81c3c71b8db87a599b1e3363610d7707  libgcc/config/libbid/bid128_to_uint16.c
! 44f71bdd5c4aa65e225a588c39562140  libgcc/config/libbid/bid128_to_uint32.c
! 8303c8f949de187078eb4cb5e2c7a470  libgcc/config/libbid/bid128_to_uint64.c
! 1461119efecda13c8f7770af0d9435a8  libgcc/config/libbid/bid128_to_uint8.c
! 9a05b507e94f45acc97afe53c0984c81  libgcc/config/libbid/bid32_to_bid128.c
! 18ea1f88cce02149cf5f99c3e48c071e  libgcc/config/libbid/bid32_to_bid64.c
! 527edd6cbac140053e30fda94a6c2579  libgcc/config/libbid/bid64_add.c
! 54d066142616119f0b4862902cf892a7  libgcc/config/libbid/bid64_compare.c
! cc480de87e42db2a2f84e5ff84281c91  libgcc/config/libbid/bid64_div.c
! 386b04675aeac7c1cc2277f82d8028da  libgcc/config/libbid/bid64_fma.c
! ae5b8f2381f833c8af215cfc66a8d3e4  libgcc/config/libbid/bid64_logb.c
! 5362db4d0d375758d84a97aec04c04cb  libgcc/config/libbid/bid64_minmax.c
! 05dc99f20dcc71dcf1272024959c2236  libgcc/config/libbid/bid64_mul.c
! 263de94e2c36dfb2365cf711ca61e4ee  libgcc/config/libbid/bid64_next.c
! f909208ae0dd593a5d4f1be38618ec56  libgcc/config/libbid/bid64_noncomp.c
! 8f03fa33362e2e22c92f25ec080dabd0  libgcc/config/libbid/bid64_quantize.c
! 16d078034d8c90ec3c8a7e4da198a7ec  libgcc/config/libbid/bid64_rem.c
! f80c36cbf74c05d67907e9f0bf0cad01  libgcc/config/libbid/bid64_round_integral.c
! 33710d2dc35418507ef42ff6fdd307fb  libgcc/config/libbid/bid64_scalb.c
! 0dd1feafba1738543053488571f5f510  libgcc/config/libbid/bid64_sqrt.c
! 1b63c9814f3c5c5cbd3311bd690ba717  libgcc/config/libbid/bid64_string.c
! 19d3ff2cd30dc2c9c36c15829ded9ac0  libgcc/config/libbid/bid64_to_bid128.c
! 3c2cfdae392a968632a1b22760b5eb54  libgcc/config/libbid/bid64_to_int16.c
! a2bd13fe45e621f3ad77c9625cc17443  libgcc/config/libbid/bid64_to_int32.c
! 56b33639841a45bce2e62d287f7ff274  libgcc/config/libbid/bid64_to_int64.c
! f25f610020bba98c68f5a1bfae95a132  libgcc/config/libbid/bid64_to_int8.c
! 2197c596951730804bb7f4ad5d1dee7e  libgcc/config/libbid/bid64_to_uint16.c
! cc4da13424440528804038e552b5e5c8  libgcc/config/libbid/bid64_to_uint32.c
! c8d9d4ac700c9a7674faf45485d26d67  libgcc/config/libbid/bid64_to_uint64.c
! 0e61df6a38ff18f1a846312ef86705e3  libgcc/config/libbid/bid64_to_uint8.c
! e745397757aad07fd6a2f8eec36db359  libgcc/config/libbid/bid_b2d.h
! ed1f2e843d426431ac408b1ca4663d00  libgcc/config/libbid/bid_binarydecimal.c
! a7e5ea1ef33a5649d7d587e0da993e5d  libgcc/config/libbid/bid_conf.h
! eff13b541eff0f6ff69e88ef8f41b4ea  libgcc/config/libbid/bid_convert_data.c
! 001b27ce90f20f3b2f0fc220b640521a  libgcc/config/libbid/bid_decimal_data.c
! f606938803dfeb8c1476d46b4c3c7d85  libgcc/config/libbid/bid_decimal_globals.c
! d8226a7bec04d1744153f60507dbabfb  libgcc/config/libbid/bid_div_macros.h
! 7ffcbe00c27dc263bbc1db2b858a2fa2  libgcc/config/libbid/bid_dpd.c
! 13cbda64dd2a592a166d05c1be4334d7  libgcc/config/libbid/bid_flag_operations.c
! 37b113a1ea81f3ee8ea41c583d8b9bbd  libgcc/config/libbid/bid_from_int.c
! 9aff705033ebbbda25dd2dabc66d1983  libgcc/config/libbid/bid_functions.h
! a952865169345cf31a5b60491d6262d1  libgcc/config/libbid/bid_gcc_intrinsics.h
! 8a79aee2e34217c43edb687d4a8fe389  libgcc/config/libbid/bid_inline_add.h
! dfcd1285e8e3c0995540d17b99d0af50  libgcc/config/libbid/bid_internal.h
! a72972475ced31ac9f03f6f485e82753  libgcc/config/libbid/bid_round.c
! 36d3272aa8b3f911e8bb7c40f65253ff  libgcc/config/libbid/bid_sqrt_macros.h
! 771691dea4962cd9e547d6f10beb9643  libgcc/config/libgcc-glibc.ver
  5e552844975595b21cbaabb9a26fd91e  libgcc/config/libgcc-libsystem.ver
! 29264a23a84d57604b825bd840c53359  libgcc/config/lm32/_ashlsi3.S
! 1475d52aa5300ccf1f56a62e9fd6b2b3  libgcc/config/lm32/_ashrsi3.S
! 6dc0945f21c02f1684fd827f0e671724  libgcc/config/lm32/_divsi3.c
! e7c60329dfe37f607c87366d525a5419  libgcc/config/lm32/_lshrsi3.S
! 6112ace5b49b919cf6ba78afcce55ee1  libgcc/config/lm32/_modsi3.c
! aa8ea3c63bfbe2e3e807476095fd83fc  libgcc/config/lm32/_mulsi3.c
! 71c60c190e4109c373ab84e75cb97dea  libgcc/config/lm32/_udivmodsi4.c
! 8d05ce0538cd2705e43f1333fae404a0  libgcc/config/lm32/_udivsi3.c
! 0c5ea1905d66a06ff52b173ec95857d1  libgcc/config/lm32/_umodsi3.c
! 9ef650d57f096f84c91e2111364e5f8d  libgcc/config/lm32/crti.S
! cf6643bbccdf845253e0ef63c15c3ed7  libgcc/config/lm32/crtn.S
! 297554a5422771a59672ed6ff20e4c60  libgcc/config/lm32/libgcc_lm32.h
  813910d184e034c80a518f2ba3c4e1a5  libgcc/config/lm32/sfp-machine.h
  331dd855f33aa7a09d25fc757cedf2cf  libgcc/config/lm32/t-elf
  d6d4b530a7539331e6e553f26928de4e  libgcc/config/lm32/t-lm32
  df59d7c87fc0d2f761461ac4ba7ec440  libgcc/config/lm32/t-uclinux
! 3fbc85ec151017611c839f74dfebfda8  libgcc/config/m32c/lib1funcs.S
! 541162e2fe85d28b3dc39bb4ae29f5fd  libgcc/config/m32c/lib2funcs.c
  9f1fc3a0f039273ded002a6713908bd3  libgcc/config/m32c/t-m32c
! 08442a5d70a264e058290392686a2ac1  libgcc/config/m32c/trapv.c
! dae6de4b398c628a4ed0653c7a13d690  libgcc/config/m32r/initfini.c
! 94bda4e8f005f04fc9e640a3d7b8dc97  libgcc/config/m32r/libgcc-glibc.ver
  a5b8b5a1404938f1f4b598db7eb1669e  libgcc/config/m32r/t-linux
  e252c161ec4eb09d3b5a62d902b3d00f  libgcc/config/m32r/t-m32r
! 6d1488e04e27fbebe6a3957412718878  libgcc/config/m68k/crti.S
! 424c843374f4643d0ea4a0e795ad5037  libgcc/config/m68k/crtn.S
  c88d87907a20077db176016165428d4b  libgcc/config/m68k/fpgnulib.c
! 04b8e2d3594c4edb88274bf5136c8fab  libgcc/config/m68k/lb1sf68.S
! 55ed5d24f602c6009b32f3143e5bae58  libgcc/config/m68k/linux-atomic.c
! c36194b19bfcf1c6877c56aebf4d9a03  libgcc/config/m68k/linux-unwind.h
  2e4fd3e401c9159da9f32d5965b5afa1  libgcc/config/m68k/t-floatlib
  de217c41c217f4341d6d546afa9a79f2  libgcc/config/m68k/t-linux
  4e281c631e54b8912258f84196fec9e6  libgcc/config/m68k/t-slibgcc-elf-ver
! f3bc6aa644749a27830fd4801ebef07b  libgcc/config/mcore/crti.S
! 65ed2d40d33e841ef62f1280b93dd571  libgcc/config/mcore/crtn.S
! c60a664c2bf1ec5739121c08b78055b4  libgcc/config/mcore/lib1funcs.S
  ef74fd63202d842bfe7120864186128c  libgcc/config/mcore/t-mcore
! 543043f77836e2f0f09817584cfc9394  libgcc/config/microblaze/crti.S
! c0afa42251dd8421e55150af0797a093  libgcc/config/microblaze/crtn.S
! 233888239276feb7f021a3373e52da8f  libgcc/config/microblaze/divsi3.S
! 897de55a9278c942156cbb247d22f7ad  libgcc/config/microblaze/divsi3_table.c
! 3492f6b51f82c7570732a239d867fd2c  libgcc/config/microblaze/moddi3.S
! 19c4cf74fbd22bf6a9fb5a4d5970ff76  libgcc/config/microblaze/modsi3.S
! ab74d31ec8e851728dcb57ce6d43002c  libgcc/config/microblaze/muldi3_hard.S
! 11eebde6cb942ad2cc9c793fa872a7e2  libgcc/config/microblaze/mulsi3.S
! 48b0540ff398ba98ea1d5c520b90d527  libgcc/config/microblaze/stack_overflow_exit.S
  702cd2045c2c31581ecd56232d96d5f5  libgcc/config/microblaze/t-microblaze
! 21cb3c4c678e3fe250eaba64721295e9  libgcc/config/microblaze/udivsi3.S
! b81c13cfa23c0527e70dd8c882b8fa98  libgcc/config/microblaze/umodsi3.S
! 222c711f2289e17acd39640949a0171a  libgcc/config/mips/crtfastmath.c
! e8bf0293ccc6ae3da98e3219eae094ad  libgcc/config/mips/crti.S
! b167928f8ec7990c4206e6f06f78139d  libgcc/config/mips/crtn.S
  f69b446f168701e4fad37a3fa7bf7a2a  libgcc/config/mips/gnustack.h
! bd93e5be1c410f44a111c9a8c159d77b  libgcc/config/mips/gthr-mipssde.h
! cee873101495da31cd54b0ef44fc2e38  libgcc/config/mips/lib2funcs.c
! a7159b5794fdaee2f7941c0a827484a3  libgcc/config/mips/libgcc-mips16.ver
! 64234b228c88f3c4f3a59f0b481dbf70  libgcc/config/mips/linux-unwind.h
! 55dacb674ee9593f9eec2863e112e147  libgcc/config/mips/mips16.S
! 8ba73aa70b716e4a8c1482fa06532eda  libgcc/config/mips/sfp-machine.h
  5b43c15f4e003338742d215bcfdf5029  libgcc/config/mips/t-crtstuff
  33f2c96b7ccbbb062839ec1e7329e6bb  libgcc/config/mips/t-elf
  501be8fccb18eca4dbd8b404d7b4c9fa  libgcc/config/mips/t-mips
! 6234ca2bd8fe6638a137ce8ee494bfbd  libgcc/config/mips/t-mips16
  5e2260f13769a960c8e1f24b0c9847e4  libgcc/config/mips/t-mips64
  6403b3d85f0ed6751174f1088d074f62  libgcc/config/mips/t-sdemtk
  011afb1a0cc0aae0a4c465e6aefcafda  libgcc/config/mips/t-softfp-tf
  532a76f856d3755b780a19a91bdd1654  libgcc/config/mips/t-vr
! f0b5831bf4505fc6008bb4a4446ea25d  libgcc/config/mips/vr4120-div.S
! b1ca8d78c814d4ba2ab0994c92d68df1  libgcc/config/mmix/crti.S
! 6c1e16638a448164ef5415930e38dc4c  libgcc/config/mmix/crtn.S
  41478efd1b19b3c7c9426d8e843f3b39  libgcc/config/mmix/t-mmix
! d5a1b634921e39ce36e8e5f30242afc8  libgcc/config/moxie/crti.S
! 086e5230a3e63b10d51e0c5f70f5fb6f  libgcc/config/moxie/crtn.S
  5d570ff5cd40fc6fba8876bdebd59a6b  libgcc/config/moxie/sfp-machine.h
  9b7000ea173c226d39e6a6dc116fdaf1  libgcc/config/msp430/cmpd.c
! eb9b27e0acaf23076fdf6b698c2513c0  libgcc/config/msp430/cmpsi2.S
! 9657ea300355ac294238ad046a2cf3e1  libgcc/config/msp430/epilogue.S
  072a56de362c5e857510ca8401f30aa8  libgcc/config/msp430/floathidf.c
  07461b1abb61437fbc73d74801f6300b  libgcc/config/msp430/floathisf.c
  88792e557553f37a296bd8127a0dfc88  libgcc/config/msp430/floatunhidf.c
  754bbc793bc0e81b0a2168df9f47e1f3  libgcc/config/msp430/floatunhisf.c
! 85a6c217b78792680a69046dd51139c2  libgcc/config/msp430/lib2bitcountHI.c
! 8bd9be16e706ec35f1ab2d4cb4749217  libgcc/config/msp430/lib2divHI.c
! 26c0d8db7003b3c5762e6fe9ca515d50  libgcc/config/msp430/lib2divQI.c
! e57e76956e4974ffe84e219d28dba827  libgcc/config/msp430/lib2divSI.c
! ff888e9aad8ea215e9bc03ca4827fe70  libgcc/config/msp430/lib2hw_mul.S
! 4300438d0551e0d9afbcc186db3a2b7b  libgcc/config/msp430/lib2mul.c
! bfdeb918780111e018aa84113b109c06  libgcc/config/msp430/lib2shift.c
  585dda5cb05623da62e4f4aad3bdbbb6  libgcc/config/msp430/mpy.c
! 3cb8243ad27b439766a9cd986940ccd3  libgcc/config/msp430/msp430-divmod.h
! 2cbdfb272d8e99d3829eeb00b84c7331  libgcc/config/msp430/msp430-mul.h
! fea6cfdfaecf5c7d2156320559ebe486  libgcc/config/msp430/slli.S
! 7dfed9c7ce86cc7737d8fcc20e9b33b4  libgcc/config/msp430/srai.S
! 7ff80a07ad17ba049701851cd8b38083  libgcc/config/msp430/srli.S
! 8f37d0cb42acd464080851f199349bda  libgcc/config/msp430/t-msp430
! e6d03674ae017e405d12c5664932cb64  libgcc/config/nds32/crtzero.S
! f1de333ebdb302cdeb6528a4d4c8853c  libgcc/config/nds32/initfini.c
! 9519eac92765b1ae51122634f7ef86e8  libgcc/config/nds32/isr-library/adj_intr_lvl.inc
! b1c5ec8a1a5b8f3f45381a40fa0ea96d  libgcc/config/nds32/isr-library/excp_isr.S
! c492923db396cc3b56081f2d5b46810f  libgcc/config/nds32/isr-library/excp_isr_4b.S
! ee32f5ce9b43014b99cc338bad353f76  libgcc/config/nds32/isr-library/intr_isr.S
! 331386ffb4f45b858828bf8c7acd7d74  libgcc/config/nds32/isr-library/intr_isr_4b.S
! a0dc557463aae2e04f61eaa873eeabfc  libgcc/config/nds32/isr-library/jmptbl_vid00.S
! 1cf7dab9f60e11138465cab0a3a3e061  libgcc/config/nds32/isr-library/jmptbl_vid01.S
! 929373b78f3416a001bb1b8bc31fc1aa  libgcc/config/nds32/isr-library/jmptbl_vid02.S
! bc14a415249a32e11a25c9f9dfb912df  libgcc/config/nds32/isr-library/jmptbl_vid03.S
! 2845e1c83d971afda35578b8671201e5  libgcc/config/nds32/isr-library/jmptbl_vid04.S
! 635b8372b3edfa6964d35232d742610f  libgcc/config/nds32/isr-library/jmptbl_vid05.S
! 8f204a11dcc60c693876f4709f67cbe1  libgcc/config/nds32/isr-library/jmptbl_vid06.S
! 191cb1fe1d0180b53cd6cdd509e665ca  libgcc/config/nds32/isr-library/jmptbl_vid07.S
! 7bdf929cc32a551885240b72de68346e  libgcc/config/nds32/isr-library/jmptbl_vid08.S
! eea0648c5824cd3a03b47d74e96c7515  libgcc/config/nds32/isr-library/jmptbl_vid09.S
! 833599ea163b34e89097547e536b6898  libgcc/config/nds32/isr-library/jmptbl_vid10.S
! 44f8b6ceb6b44be878d1ade856d11f16  libgcc/config/nds32/isr-library/jmptbl_vid11.S
! 35cee62738874f9938b8d6b63a4397ee  libgcc/config/nds32/isr-library/jmptbl_vid12.S
! 555c0275d46f69fbefe2ffbe8cb961d7  libgcc/config/nds32/isr-library/jmptbl_vid13.S
! 27e2d6c867a56fb1f210f3152061c38c  libgcc/config/nds32/isr-library/jmptbl_vid14.S
! fcc28753a2c7355150bb51d448aa26b9  libgcc/config/nds32/isr-library/jmptbl_vid15.S
! fb922b3e00b88feb6257b4ce9ffa27cf  libgcc/config/nds32/isr-library/jmptbl_vid16.S
! 944391a0a60d6a00c42dd4d293b0fb2e  libgcc/config/nds32/isr-library/jmptbl_vid17.S
! c41eba78ee2b353fcd0bba0f7b35ddf8  libgcc/config/nds32/isr-library/jmptbl_vid18.S
! 921d9a8e4905a89830e5571f0359ce5d  libgcc/config/nds32/isr-library/jmptbl_vid19.S
! f280d631469bc50098c6aeda36b1119d  libgcc/config/nds32/isr-library/jmptbl_vid20.S
! 51b11df62d19eb9940081c5c9303219a  libgcc/config/nds32/isr-library/jmptbl_vid21.S
! 36b4e4144c3bcca4230607e814b5c131  libgcc/config/nds32/isr-library/jmptbl_vid22.S
! a64f1a82c179d0a6c5bbe8bae9e3569e  libgcc/config/nds32/isr-library/jmptbl_vid23.S
! f46207625ea557434d964a3ec7ec0d7f  libgcc/config/nds32/isr-library/jmptbl_vid24.S
! c21cbf66013b37a41f1a81caf0c03c53  libgcc/config/nds32/isr-library/jmptbl_vid25.S
! 9393ecc401c6833c00c362cc5e36dc81  libgcc/config/nds32/isr-library/jmptbl_vid26.S
! f7decc559135a02d030f9f38b5cb25a1  libgcc/config/nds32/isr-library/jmptbl_vid27.S
! f9d8515c9e083c7d29c32cee2f413084  libgcc/config/nds32/isr-library/jmptbl_vid28.S
! 20059f1d54383cf5eec1662b28c9d1af  libgcc/config/nds32/isr-library/jmptbl_vid29.S
! 93dc2faae244edc273ffdb528a437c5c  libgcc/config/nds32/isr-library/jmptbl_vid30.S
! 7a02bffecee8598efbb24e89eff45b4b  libgcc/config/nds32/isr-library/jmptbl_vid31.S
! d4a9f199e2dbdfdc247c3ad31ed03307  libgcc/config/nds32/isr-library/jmptbl_vid32.S
! 7233ac6efdb8e9e5040c3437943e0cf0  libgcc/config/nds32/isr-library/jmptbl_vid33.S
! 8de2aab2285240522370063f266b5d4b  libgcc/config/nds32/isr-library/jmptbl_vid34.S
! 407e1e45f2b17a4214b1a099eede4c91  libgcc/config/nds32/isr-library/jmptbl_vid35.S
! 9abaa008c2768ee519a57fab45a87ef2  libgcc/config/nds32/isr-library/jmptbl_vid36.S
! 6d53729cd3117f6394b13aeaef555a97  libgcc/config/nds32/isr-library/jmptbl_vid37.S
! 7ad13080eac14d32b8d7e69c1f12210a  libgcc/config/nds32/isr-library/jmptbl_vid38.S
! 9e50eb0fd01ae821126397dba87159eb  libgcc/config/nds32/isr-library/jmptbl_vid39.S
! dc9435b737c178eceaf83ace060a492f  libgcc/config/nds32/isr-library/jmptbl_vid40.S
! 64d51783a73d6b19d26b612ea25f9d3d  libgcc/config/nds32/isr-library/jmptbl_vid41.S
! b96c391bec4d6b9a4fa5ab2675efe394  libgcc/config/nds32/isr-library/jmptbl_vid42.S
! ca887d557beabc39eafae285c96b4238  libgcc/config/nds32/isr-library/jmptbl_vid43.S
! 50d539b7195b45b726d23d48c15e0df3  libgcc/config/nds32/isr-library/jmptbl_vid44.S
! 1ae37de6413cbbd5bd7c65b1f01b6d01  libgcc/config/nds32/isr-library/jmptbl_vid45.S
! edaee737afa1f29cea99d3c1cd6df960  libgcc/config/nds32/isr-library/jmptbl_vid46.S
! 15a99b9c030055ccf7dce2ef77572780  libgcc/config/nds32/isr-library/jmptbl_vid47.S
! ea74bb30f6ce9dd092242cb294494a36  libgcc/config/nds32/isr-library/jmptbl_vid48.S
! 50605b284fbc7a4d2d0dbee3695bf73b  libgcc/config/nds32/isr-library/jmptbl_vid49.S
! 46e993ae32e3659315d2b8d81af76203  libgcc/config/nds32/isr-library/jmptbl_vid50.S
! 1595cc3ed91fb1d16f88c86fe635b276  libgcc/config/nds32/isr-library/jmptbl_vid51.S
! 02925f5a3d1f82b4109b13b03798dc29  libgcc/config/nds32/isr-library/jmptbl_vid52.S
! cc461aaa9196c1fdd1f3fec333856f94  libgcc/config/nds32/isr-library/jmptbl_vid53.S
! c8fcce28b2042f59000d234eb22acc50  libgcc/config/nds32/isr-library/jmptbl_vid54.S
! c2a666802c6eba6e2da8d869cf87386e  libgcc/config/nds32/isr-library/jmptbl_vid55.S
! fe253a3f82e3ddc981a9695349e92d1a  libgcc/config/nds32/isr-library/jmptbl_vid56.S
! ecaec403cbdcb840ba0dce4222f294ba  libgcc/config/nds32/isr-library/jmptbl_vid57.S
! ef81c4364dcb01184b8b4cf3ab1a4d95  libgcc/config/nds32/isr-library/jmptbl_vid58.S
! f910e5661a46a2a1570cf69df5cad6ba  libgcc/config/nds32/isr-library/jmptbl_vid59.S
! fe0b2840dde7d46f734d3aef99040e6b  libgcc/config/nds32/isr-library/jmptbl_vid60.S
! ee16a6b601e5201bf69c1a687314b598  libgcc/config/nds32/isr-library/jmptbl_vid61.S
! 110f3cdbf02f329917dad7402c4a3098  libgcc/config/nds32/isr-library/jmptbl_vid62.S
! 8b2be8edd27993250c294535904f0208  libgcc/config/nds32/isr-library/jmptbl_vid63.S
! 4248e03193a67289c2a4a5d7135f9cb9  libgcc/config/nds32/isr-library/jmptbl_vid64.S
! bce0b92edff86c0a8d8b43f6657c613e  libgcc/config/nds32/isr-library/jmptbl_vid65.S
! eddf3df33c7a7d28680009317f47874f  libgcc/config/nds32/isr-library/jmptbl_vid66.S
! 43ee9aa48ce6d607a774e75479b16c82  libgcc/config/nds32/isr-library/jmptbl_vid67.S
! e4c3e3e3da859a77f387e800cdbda838  libgcc/config/nds32/isr-library/jmptbl_vid68.S
! 908b9e5a19757dee8934513f84333c1b  libgcc/config/nds32/isr-library/jmptbl_vid69.S
! 370465b7d6f9c9eb2333e72809db1ad5  libgcc/config/nds32/isr-library/jmptbl_vid70.S
! 0b77408bd0ace277aec0f5cc89db22db  libgcc/config/nds32/isr-library/jmptbl_vid71.S
! 03079295165f4656afe316f010d8a3eb  libgcc/config/nds32/isr-library/jmptbl_vid72.S
! 06ada2bf99ae60ea1db376fbd616ec2e  libgcc/config/nds32/isr-library/nmih.S
! be30d2c7d1bdb6767e522e6f359f9b69  libgcc/config/nds32/isr-library/reset.S
! 2e9cdb80a1d7ca1f18d6c2d2e1bab870  libgcc/config/nds32/isr-library/reset_4b.S
! 47a440ff57117929afc15e56e5131276  libgcc/config/nds32/isr-library/restore_all.inc
! f423937f9ae89fd36323f85729739add  libgcc/config/nds32/isr-library/restore_fpu_regs.inc
! 5fe5e4a783c2f91182a69611185b9cc6  libgcc/config/nds32/isr-library/restore_fpu_regs_00.inc
! a71ad1632a4ca60046e9a604eb3b198f  libgcc/config/nds32/isr-library/restore_fpu_regs_01.inc
! 43da64ec299fb5190d5d63ab3899c32e  libgcc/config/nds32/isr-library/restore_fpu_regs_02.inc
! fd293558ac1ac06a473e4df7556dfcac  libgcc/config/nds32/isr-library/restore_fpu_regs_03.inc
! 5c547e8a364a02321d750020e1735e60  libgcc/config/nds32/isr-library/restore_mac_regs.inc
! d78e254d93b3d5c6a61b8cc6eff6d2b2  libgcc/config/nds32/isr-library/restore_partial.inc
! 01c842f747623d31407c144ee0de8976  libgcc/config/nds32/isr-library/restore_usr_regs.inc
! 927bcc4e0210261cdd28fc7be5e5d866  libgcc/config/nds32/isr-library/save_all.inc
! f3e5a6b4f6b2a521028e2ca3b7af8934  libgcc/config/nds32/isr-library/save_fpu_regs.inc
! f150db56b35a929d57a409f1ab43a905  libgcc/config/nds32/isr-library/save_fpu_regs_00.inc
! a2fd372a9db0ad8f420f5af6bfa67e41  libgcc/config/nds32/isr-library/save_fpu_regs_01.inc
! 777958af93a984765850e906ea796ebc  libgcc/config/nds32/isr-library/save_fpu_regs_02.inc
! 9eef8acb85719334baa06ea29279adc5  libgcc/config/nds32/isr-library/save_fpu_regs_03.inc
! e79c96aa092bd8c14a8e9ef0fb95a7af  libgcc/config/nds32/isr-library/save_mac_regs.inc
! c213562670cdfe4f4479be42207d0219  libgcc/config/nds32/isr-library/save_partial.inc
! 6020cbd82e0bd6dc69c1dad78f9a610d  libgcc/config/nds32/isr-library/save_usr_regs.inc
! f79378feaf809ed1118842d91a63ee37  libgcc/config/nds32/isr-library/vec_vid00.S
! d7dcdb12f758022acccb1e7b14fd2e54  libgcc/config/nds32/isr-library/vec_vid00_4b.S
! ece94c34a67414723c15e991b9fe475b  libgcc/config/nds32/isr-library/vec_vid01.S
! d3796d1e661153bf1a22dbf601769d98  libgcc/config/nds32/isr-library/vec_vid01_4b.S
! e146451bc96d0e8d79fcefb3f8e6597f  libgcc/config/nds32/isr-library/vec_vid02.S
! 91c845af058dac72243cadef224e8cbe  libgcc/config/nds32/isr-library/vec_vid02_4b.S
! e9e8ad9971172e5039a00bee8ede1840  libgcc/config/nds32/isr-library/vec_vid03.S
! 2d4404d53c758207443ea7c0b39ea532  libgcc/config/nds32/isr-library/vec_vid03_4b.S
! 7934ae6390c5ef1a1efaf714adfc7269  libgcc/config/nds32/isr-library/vec_vid04.S
! e5d392beeb5fbedf423fa0cfe0c79da3  libgcc/config/nds32/isr-library/vec_vid04_4b.S
! 17566d1da6c319a756c69b4ec17c62a0  libgcc/config/nds32/isr-library/vec_vid05.S
! 13e01157fd9d27fd28c50e212d5249c2  libgcc/config/nds32/isr-library/vec_vid05_4b.S
! da7ae39d4e880296bf16fa3add6884bd  libgcc/config/nds32/isr-library/vec_vid06.S
! 5c133132d329566b74f9c1ffe45a0012  libgcc/config/nds32/isr-library/vec_vid06_4b.S
! ee7d2e4545437e0beea10c29545843d7  libgcc/config/nds32/isr-library/vec_vid07.S
! 3a3af19fa3de39755d4b74d98bf7cdc0  libgcc/config/nds32/isr-library/vec_vid07_4b.S
! c153ed5b7630bf2187f84b1b624d61a4  libgcc/config/nds32/isr-library/vec_vid08.S
! 524ce9413f53faf13e97afadc4421c99  libgcc/config/nds32/isr-library/vec_vid08_4b.S
! 55675ba78469914134a7f1c111199dbe  libgcc/config/nds32/isr-library/vec_vid09.S
! 5167bf712295e6b17532c8b8f53f3f0b  libgcc/config/nds32/isr-library/vec_vid09_4b.S
! ecedfc4a343aee1d1df58e1be03730bf  libgcc/config/nds32/isr-library/vec_vid10.S
! 71b03d1977b4ea201709ae3ed69ef4b7  libgcc/config/nds32/isr-library/vec_vid10_4b.S
! a7859ffbe30caaf019c5b1f827289711  libgcc/config/nds32/isr-library/vec_vid11.S
! 71a741b57b58e47c0bd9a7b02c0fbadf  libgcc/config/nds32/isr-library/vec_vid11_4b.S
! 545cb7d521dd3d3b02ec4083ae33dc7b  libgcc/config/nds32/isr-library/vec_vid12.S
! f61461d249b56d92477554f1dc7e702f  libgcc/config/nds32/isr-library/vec_vid12_4b.S
! 8ddac8f0a9df6ef2a4e9958315db8422  libgcc/config/nds32/isr-library/vec_vid13.S
! 8c3872ffd2d65ee2d6f1d03c75e121b4  libgcc/config/nds32/isr-library/vec_vid13_4b.S
! 740624fccc0e732067d7d6247433e9b8  libgcc/config/nds32/isr-library/vec_vid14.S
! 3a541625f3b4d220f7e5ad0356988fae  libgcc/config/nds32/isr-library/vec_vid14_4b.S
! 9fac9a1d30925f5e25ddd8ec15b69f8e  libgcc/config/nds32/isr-library/vec_vid15.S
! d63ee419c6ed52ea7407765d799c14fe  libgcc/config/nds32/isr-library/vec_vid15_4b.S
! 5cc0e892eee89dbfac8439309a33d298  libgcc/config/nds32/isr-library/vec_vid16.S
! 7c10165bd92be16249542e2c2142b458  libgcc/config/nds32/isr-library/vec_vid16_4b.S
! 8534f58a305d83a6183df09e5f84472d  libgcc/config/nds32/isr-library/vec_vid17.S
! a7220f0d32bf6490ece34cefa1038a2f  libgcc/config/nds32/isr-library/vec_vid17_4b.S
! 647bd4aabef23ba2b24de62984bba855  libgcc/config/nds32/isr-library/vec_vid18.S
! 99012f112e38cb27a044efc3dcfa173e  libgcc/config/nds32/isr-library/vec_vid18_4b.S
! 098996887e7746cbfd681c6af5c37b33  libgcc/config/nds32/isr-library/vec_vid19.S
! 051d71c1ef8004e884c914901a733400  libgcc/config/nds32/isr-library/vec_vid19_4b.S
! 8e7cce0536aac26193491582f0ff137e  libgcc/config/nds32/isr-library/vec_vid20.S
! 0e88fb25e1a0291c2493582cecf89c06  libgcc/config/nds32/isr-library/vec_vid20_4b.S
! c87184826bc8b2e227c6e4082bde50aa  libgcc/config/nds32/isr-library/vec_vid21.S
! 4d04c2bf46b39879466bb87348fd14df  libgcc/config/nds32/isr-library/vec_vid21_4b.S
! d63e759b6bb04d2b8c25981db6e8ae08  libgcc/config/nds32/isr-library/vec_vid22.S
! 210e3c4e3453e2d48a63b6b88bce8843  libgcc/config/nds32/isr-library/vec_vid22_4b.S
! cb2c9d3b3dc023b7bf8ff3c73da01a2e  libgcc/config/nds32/isr-library/vec_vid23.S
! b5468ccbae3e92c70a854efd8a16efd1  libgcc/config/nds32/isr-library/vec_vid23_4b.S
! b21f45606956d61542b357ebc0212d0c  libgcc/config/nds32/isr-library/vec_vid24.S
! d4cec7032fb6d4fc5b3381ff1f8f9a16  libgcc/config/nds32/isr-library/vec_vid24_4b.S
! 722d3943a33ff6bacbc9a91b5d9665f3  libgcc/config/nds32/isr-library/vec_vid25.S
! 9cef1339a9a38ea01e06bd7e44331422  libgcc/config/nds32/isr-library/vec_vid25_4b.S
! 620158e088cba3b71472acb0ce9ae2e8  libgcc/config/nds32/isr-library/vec_vid26.S
! 4d794b8eb51f10d77774837966afd486  libgcc/config/nds32/isr-library/vec_vid26_4b.S
! 71defc243b6d8254aa67ec233ef1f6ef  libgcc/config/nds32/isr-library/vec_vid27.S
! 009ab2543938818c08b9cc53a76de73d  libgcc/config/nds32/isr-library/vec_vid27_4b.S
! aa11d29005fcfe3bd4703d2d28b0e88c  libgcc/config/nds32/isr-library/vec_vid28.S
! c79deffc4698bd3fe1f4e08092520dc0  libgcc/config/nds32/isr-library/vec_vid28_4b.S
! 331222ba45bea0d4ef80dbcdf88997ff  libgcc/config/nds32/isr-library/vec_vid29.S
! 0aef315c3fff247f45220b9d0d1b8054  libgcc/config/nds32/isr-library/vec_vid29_4b.S
! 0f22c21d80963952011ba11a876b406d  libgcc/config/nds32/isr-library/vec_vid30.S
! 16cd189f4b8e78ded433aef43ba77e2e  libgcc/config/nds32/isr-library/vec_vid30_4b.S
! 36d0a1bb60d1b6ac51d49f568c8c9dfc  libgcc/config/nds32/isr-library/vec_vid31.S
! 654436ebf591c2e446acbfe9b65709a4  libgcc/config/nds32/isr-library/vec_vid31_4b.S
! b38d944ce326fb0c8650d91151ee3f69  libgcc/config/nds32/isr-library/vec_vid32.S
! b308c9269a406c2b778c3c8b7f8daa0f  libgcc/config/nds32/isr-library/vec_vid32_4b.S
! b7a67b9dca0bab8bb6f8b4166632661d  libgcc/config/nds32/isr-library/vec_vid33.S
! 7628d4ead5d392a6c4a0352f59c2b8de  libgcc/config/nds32/isr-library/vec_vid33_4b.S
! fea09141b4c2c914b2aaf75f6f3df619  libgcc/config/nds32/isr-library/vec_vid34.S
! 5ce12b1cfa4c680e508d0797f8717b7a  libgcc/config/nds32/isr-library/vec_vid34_4b.S
! b2b7bac0aa8329514dde5b50d8856975  libgcc/config/nds32/isr-library/vec_vid35.S
! c43cce47682fed833ea21bfc7d3c535e  libgcc/config/nds32/isr-library/vec_vid35_4b.S
! 5894c00d824e5b83f39650c2fbb93fe5  libgcc/config/nds32/isr-library/vec_vid36.S
! e2350248d286a0ec2bcc9ed7923d8bb3  libgcc/config/nds32/isr-library/vec_vid36_4b.S
! 861aee55fc2e0b2633cfd8a98fa66924  libgcc/config/nds32/isr-library/vec_vid37.S
! da208ac3299f19979d27bd954ff228dd  libgcc/config/nds32/isr-library/vec_vid37_4b.S
! 5caa52e7f76965dcddc33beadca75490  libgcc/config/nds32/isr-library/vec_vid38.S
! 60e9b4b9aa2bd2330327f359471a1dab  libgcc/config/nds32/isr-library/vec_vid38_4b.S
! 04ca897e08745fb26cc7d42f059f3766  libgcc/config/nds32/isr-library/vec_vid39.S
! c304f3aeee9b90f093a81533d32ec765  libgcc/config/nds32/isr-library/vec_vid39_4b.S
! 4f20c408dca665426831a0c17f35e15d  libgcc/config/nds32/isr-library/vec_vid40.S
! f1275e065131f4eb6ac8d0205eb68585  libgcc/config/nds32/isr-library/vec_vid40_4b.S
! c061dc4a56549e6b42887deec2175f35  libgcc/config/nds32/isr-library/vec_vid41.S
! e687b88aed8322b6bdbfc18c66d86b81  libgcc/config/nds32/isr-library/vec_vid41_4b.S
! 45654fb2384f5e6413e7bf54018cbee4  libgcc/config/nds32/isr-library/vec_vid42.S
! cb556fe7401f7420eb77349e054b9326  libgcc/config/nds32/isr-library/vec_vid42_4b.S
! 4a27acfe198d5e9fa01b164ae125accc  libgcc/config/nds32/isr-library/vec_vid43.S
! 581f1999fe768c48bae5e62b976ac1e4  libgcc/config/nds32/isr-library/vec_vid43_4b.S
! eaf0c7ec3c3cc33f540e04b024279341  libgcc/config/nds32/isr-library/vec_vid44.S
! a04f51b89b9d95f8503c77ed559d3919  libgcc/config/nds32/isr-library/vec_vid44_4b.S
! 99197691d9952d0b5e543d69410a0d0f  libgcc/config/nds32/isr-library/vec_vid45.S
! 6d75c9b842d3016b43ea401e5a217710  libgcc/config/nds32/isr-library/vec_vid45_4b.S
! 83d05479173b04329b778cc06c6b361a  libgcc/config/nds32/isr-library/vec_vid46.S
! e43d2fb2718be4a915f223363e5274ab  libgcc/config/nds32/isr-library/vec_vid46_4b.S
! 1c64d5d0eefb0028be6e341d227ebbf2  libgcc/config/nds32/isr-library/vec_vid47.S
! 74787f2dad77af972756e6ea9e06bb93  libgcc/config/nds32/isr-library/vec_vid47_4b.S
! 57ef306ab3b511d9b25c310955c520f4  libgcc/config/nds32/isr-library/vec_vid48.S
! 91ea5a4cf5c60b9636ca1db2881cb93f  libgcc/config/nds32/isr-library/vec_vid48_4b.S
! 39b2595ba6f31ebe9a96cdf49c586ed1  libgcc/config/nds32/isr-library/vec_vid49.S
! 1604f51a7e1def85a95c1874b068169b  libgcc/config/nds32/isr-library/vec_vid49_4b.S
! 65b78283654f6c6c487bb439ecb4a82e  libgcc/config/nds32/isr-library/vec_vid50.S
! 17b72c0fa17812965222236b4c89bf16  libgcc/config/nds32/isr-library/vec_vid50_4b.S
! 3fbbb0dd9a64fb1e56a36f4c8601d1e5  libgcc/config/nds32/isr-library/vec_vid51.S
! c3247936c53568175fd752320c3e08c6  libgcc/config/nds32/isr-library/vec_vid51_4b.S
! 40fb0250bff87cdd4cfabe9bb84b4145  libgcc/config/nds32/isr-library/vec_vid52.S
! 03d08bd0d1c924b05a67fcf58d19f561  libgcc/config/nds32/isr-library/vec_vid52_4b.S
! 662e0b85e9aa67a3381752ac8f0db3ff  libgcc/config/nds32/isr-library/vec_vid53.S
! 06467ef7e2652f9a64489a0416cd0ac3  libgcc/config/nds32/isr-library/vec_vid53_4b.S
! 9aed6c1c82d4bcd21e3810606b035550  libgcc/config/nds32/isr-library/vec_vid54.S
! 3b7f357891028a0ac8d4ef403e1ffcaf  libgcc/config/nds32/isr-library/vec_vid54_4b.S
! 735e92db3e6917d9fc258c8efdaba9db  libgcc/config/nds32/isr-library/vec_vid55.S
! 4588077dfc5b51489afe2c497121fe51  libgcc/config/nds32/isr-library/vec_vid55_4b.S
! 9ced8e920e8053c7e2b20a0b4afefdab  libgcc/config/nds32/isr-library/vec_vid56.S
! e532e84f9f173f42b1a73380ad19e80f  libgcc/config/nds32/isr-library/vec_vid56_4b.S
! 5c56c08ecbe5ea82c5630ea7f5433fc0  libgcc/config/nds32/isr-library/vec_vid57.S
! 3aa4f8d30cc4a6f49395972e3c085464  libgcc/config/nds32/isr-library/vec_vid57_4b.S
! 3dd5803c4dc5addee78b0466864db393  libgcc/config/nds32/isr-library/vec_vid58.S
! caef28294bda37c020dcf5e26c1d826f  libgcc/config/nds32/isr-library/vec_vid58_4b.S
! d29816a4e0b55170524545c47f32eb2e  libgcc/config/nds32/isr-library/vec_vid59.S
! c983b2916178ec6964b31172791a7b50  libgcc/config/nds32/isr-library/vec_vid59_4b.S
! 7e21d10a034f59ae2c2d160d5d73040f  libgcc/config/nds32/isr-library/vec_vid60.S
! a15e52ffbd6b086af95fdb5993213024  libgcc/config/nds32/isr-library/vec_vid60_4b.S
! 7e554d4f375d2c0ab81b1fcda87e241f  libgcc/config/nds32/isr-library/vec_vid61.S
! de89992acca90445160c3bfaa84864b3  libgcc/config/nds32/isr-library/vec_vid61_4b.S
! f458a3d774437f09276e50125a9e3022  libgcc/config/nds32/isr-library/vec_vid62.S
! 60912c19c95820d837340925d3e91525  libgcc/config/nds32/isr-library/vec_vid62_4b.S
! 934ed96e6e33801ed868330e63caff4b  libgcc/config/nds32/isr-library/vec_vid63.S
! 2a9a68680e5f8bed310df8caa843eb9d  libgcc/config/nds32/isr-library/vec_vid63_4b.S
! be1e48eef8b843e7f27db955eba45109  libgcc/config/nds32/isr-library/vec_vid64.S
! a9d2557bdb8881758296e70eada5e06e  libgcc/config/nds32/isr-library/vec_vid64_4b.S
! d1b906b0e97b310385795d42451eeec5  libgcc/config/nds32/isr-library/vec_vid65.S
! 180fee8e47317c918cbb88f8115a274d  libgcc/config/nds32/isr-library/vec_vid65_4b.S
! cc10bb94d390c3402ff5deebd4ed3223  libgcc/config/nds32/isr-library/vec_vid66.S
! a9212ca924983bb814be793ab5954842  libgcc/config/nds32/isr-library/vec_vid66_4b.S
! 44b654fcd900c8b8de9e973894ac1447  libgcc/config/nds32/isr-library/vec_vid67.S
! a6f665262cd83247c182431174d006df  libgcc/config/nds32/isr-library/vec_vid67_4b.S
! 6081788f2f43c20c5c48a974dd444dda  libgcc/config/nds32/isr-library/vec_vid68.S
! b77d198c19ec1bdfb5e17086acafe342  libgcc/config/nds32/isr-library/vec_vid68_4b.S
! 80a95700c786fe884a7befa09f5bbe94  libgcc/config/nds32/isr-library/vec_vid69.S
! 11871646e0cabccf1097883e3c9b91cc  libgcc/config/nds32/isr-library/vec_vid69_4b.S
! c40aff6466e234ef69b8414b7914a0e3  libgcc/config/nds32/isr-library/vec_vid70.S
! fa5f9a33a97f97f7f0461c6d78dbfafa  libgcc/config/nds32/isr-library/vec_vid70_4b.S
! 86ed78297758d8ac9433e5f3814e81e1  libgcc/config/nds32/isr-library/vec_vid71.S
! d9e4e8ebfd1157a221572856e92f1519  libgcc/config/nds32/isr-library/vec_vid71_4b.S
! 1f80b4050f70f4d0f454c1eab2b76d54  libgcc/config/nds32/isr-library/vec_vid72.S
! 6f577f8f646e6084c44d5723063c39e7  libgcc/config/nds32/isr-library/vec_vid72_4b.S
! 7483e6b06bfa83fd12526a081b95105c  libgcc/config/nds32/isr-library/wrh.S
! 64a83ac1fb8c01c64033602b872d14d4  libgcc/config/nds32/lib1asmsrc-mculib.S
! 3c623bc5069ae13206a5a2418a3d6396  libgcc/config/nds32/lib1asmsrc-newlib.S
! 77ca0935661c11a2f6c13fc28cb43943  libgcc/config/nds32/lib2csrc-mculib/_clzdi2.c
! df1aee803a65e6014c0f5b3a407b8aa3  libgcc/config/nds32/lib2csrc-mculib/_clzsi2.c
! e17be157376e196bd122b6715db7692f  libgcc/config/nds32/linux-atomic.c
! 671640256d7dca86823c34588ee0b315  libgcc/config/nds32/linux-unwind.h
! 11cc930b111311ec3603d577be97fcb1  libgcc/config/nds32/sfp-machine.h
! 13acaea2a56b4e81d7674de885eca906  libgcc/config/nds32/t-nds32
! 0746baebe3927a2c425a9006f2c38007  libgcc/config/nds32/t-nds32-glibc
! 1fab0d270cec8172848b4c272a1121c3  libgcc/config/nds32/t-nds32-isr
! 3e673012d5b120e2ade6c492e2f54de5  libgcc/config/nds32/t-nds32-mculib
! 15de0cd39b9bafdd69a331b25145177b  libgcc/config/nds32/t-nds32-newlib
! be52625e95fed96d60a50c1aeff0f3f7  libgcc/config/nios2/crti.S
! c0994c76389abba999dca0a185cb8612  libgcc/config/nios2/crtn.S
! 5da9e8cf2d9c534320a25221f9fbf1ba  libgcc/config/nios2/elf-lib.h
! 427cd4358170118479115011f5e4a6fd  libgcc/config/nios2/lib2-divmod-hi.c
! 037e491dbb0dae233047bc10c10c15d5  libgcc/config/nios2/lib2-divmod.c
! 9a6d8edd6a76e97a104b2a6e7c3bb3a5  libgcc/config/nios2/lib2-divtable.c
! 3360cc9a6503b2751f7432c0c5e40191  libgcc/config/nios2/lib2-mul.c
! 5851a4a9370237dffc66c35a2695dd73  libgcc/config/nios2/lib2-nios2.h
! 0cbe55cc7c9703eb63ac1d9f20e6c6c4  libgcc/config/nios2/linux-atomic.c
! aedc38efd27276110f3c835a5152b2e9  libgcc/config/nios2/linux-unwind.h
! e5e7f1d85a08b92b4e22babf00553bd5  libgcc/config/nios2/sfp-machine.h
  598bde069aeebadde9b08f8703ab2c77  libgcc/config/nios2/t-linux
  058cf7bee1e8fb40a62590a2558c7f76  libgcc/config/nios2/t-nios2
! dfa428325c390b539e9bd3fbec427404  libgcc/config/nios2/tramp.c
  d554f3fc7ee3cecc697c448b8c5f61bb  libgcc/config/no-sfp-machine.h
  b70010a8e3a6734ae04ba484992563c5  libgcc/config/no-unwind.h
! 389f2600e317a37411f70802fb3a1b88  libgcc/config/nvptx/crt0.c
! 2c297d77591ba2b186e005595207f661  libgcc/config/nvptx/mgomp.c
! 56a58e034c9e743b84446415ef740f4a  libgcc/config/nvptx/nvptx-malloc.h
! 755dbdc9565fa2ad8fcc6055c73063d5  libgcc/config/nvptx/reduction.c
! dffcd9969bf41775f6581a1dd31f351f  libgcc/config/nvptx/t-nvptx
! 7e4b8fe1219a45803baa30d39814932b  libgcc/config/or1k/lib1funcs.S
! 43ded79401775bad0a84e7f46f34eb58  libgcc/config/or1k/linux-unwind.h
! bae0e3b81bed9e3ea4b31a52d222e907  libgcc/config/or1k/sfp-machine.h
! 396d9e129fb9d4923234287e22a17700  libgcc/config/or1k/t-or1k
! 47477cef5852ca6e2be35853f88cddf2  libgcc/config/pa/fptr.c
! 4e40855b502b8de52bf9926fd288a5cd  libgcc/config/pa/gthr-dce.h
! 9f2f9b8eed5bf08bc41bb432f57302cc  libgcc/config/pa/hpux-unwind.h
! 127de4650e51cbea337ea5619d8b1c4e  libgcc/config/pa/lib2funcs.S
! 76c779e67758829df87e66c89e6dd15f  libgcc/config/pa/linux-atomic.c
! 7957df77a936b69a54cfa6af5a903473  libgcc/config/pa/linux-unwind.h
! e76e2ff7a903fa19d67a6470547b6a1b  libgcc/config/pa/milli64.S
! ba2d1fc872ec574bfc11d92050a5aef7  libgcc/config/pa/pa64-hpux-lib.h
! adb4bca1632150243adcb2cd9a1812bf  libgcc/config/pa/quadlib.c
! afb534bb9a7b7bbdb6af10009af385eb  libgcc/config/pa/stublib.c
  8a3964d4f1eddb14d9260a0a72a23493  libgcc/config/pa/t-hpux
  73420715a92f162a61d33bbfbe7c4dee  libgcc/config/pa/t-hpux10
  3e293a3e5a4bcd16fb9846c60502af9b  libgcc/config/pa/t-linux
--- 86575,87139 ----
  7765091a208742b8a4a258223f1d7c22  libgcc/config/ia64/t-linux-libunwind
  bbd02bc575b39b813abb3651cde980d7  libgcc/config/ia64/t-slibgcc-hpux
  3cc3f3d4611f64c4d5fc225a72d8ccc4  libgcc/config/ia64/t-softfp
! 7508d41329db54ddeccc7e86a6cafae5  libgcc/config/ia64/t-softfp-compat
  552ede49162d3a4fb9e1e113de11e8b5  libgcc/config/ia64/t-vms
! 6ff2b346f1e1eae0b560b55b54311b7d  libgcc/config/ia64/tf-signs.c
! 11bcb0d6ca51cad3bb0d3c1feb1f135f  libgcc/config/ia64/unwind-ia64.c
! a5336bdb818cef70b030985f1ecd71d2  libgcc/config/ia64/unwind-ia64.h
! 65ff942ef70afc61f48e02a6e4a21f24  libgcc/config/ia64/vms-crtinit.S
! 106eb3ec1043b9c1da426cc9d86d298d  libgcc/config/ia64/vms-unwind.h
! 3111db86980b8c9207be8642a36d5dd2  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! c76113e726c31eb4c59061d8bc7356ae  libgcc/config/libbid/ChangeLog
! 877df4b05d912fc2033823fa0eece3af  libgcc/config/libbid/_addsub_dd.c
! a3d813dc882ec4c07e412c32c9b380e1  libgcc/config/libbid/_addsub_sd.c
! 3cd22bfaff5638bc2cb990fbc4e906cd  libgcc/config/libbid/_addsub_td.c
! 976af532157fe08e5aecbf0df140695c  libgcc/config/libbid/_dd_to_df.c
! 4626e213d64df470b187c94004ba1f32  libgcc/config/libbid/_dd_to_di.c
! e6cfcbee400ebcf733d5a8e277610c4d  libgcc/config/libbid/_dd_to_sd.c
! ded818019d74cc19e86c2b5fefb170c9  libgcc/config/libbid/_dd_to_sf.c
! 8d5d1a71bd35a3f59dfa0679981967b2  libgcc/config/libbid/_dd_to_si.c
! f2792fe22f49f5bb9879b40ce89666d4  libgcc/config/libbid/_dd_to_td.c
! 5372dc835d83ed65e21a2d2416862002  libgcc/config/libbid/_dd_to_tf.c
! 4ac6366be8d4b360dd6946d7dc50d0dd  libgcc/config/libbid/_dd_to_udi.c
! d2dbe21f07beebb80af450eaeb9fe72f  libgcc/config/libbid/_dd_to_usi.c
! e07981cfb401b6166669ab88cba1854d  libgcc/config/libbid/_dd_to_xf.c
! a04bc596ee80aca864fa5c5fbb310b86  libgcc/config/libbid/_df_to_dd.c
! 2eef5c20da1c383da340906bf79975d9  libgcc/config/libbid/_df_to_sd.c
! 487667a0e1b5800229a4daba59e8f50f  libgcc/config/libbid/_df_to_td.c
! bc36f0a6249bf1bb0ba3e4790af5e0e7  libgcc/config/libbid/_di_to_dd.c
! 55aa9c1c8f36e21a493d86edc8885b12  libgcc/config/libbid/_di_to_sd.c
! 02714799e13dbd9bd768403f3d192a94  libgcc/config/libbid/_di_to_td.c
! 7cdebbf806e5f1431972d85c74f95ace  libgcc/config/libbid/_div_dd.c
! 40b6405fa19c41c9038d04a5d3dba998  libgcc/config/libbid/_div_sd.c
! 16ba10e612c6dfc445e83d94659f1d57  libgcc/config/libbid/_div_td.c
! 2ce2e45baacbfe7b7bc2be2afcf7132f  libgcc/config/libbid/_eq_dd.c
! 133f1d01c2d49fc0f4b8416bc6470c35  libgcc/config/libbid/_eq_sd.c
! 84a5c25d773d9ca18bb3f98d0aa139bd  libgcc/config/libbid/_eq_td.c
! bf85ecce2ec83e61d02837e96a1603ca  libgcc/config/libbid/_ge_dd.c
! 29781fb8e9603b33fc71ab3ef6b7c858  libgcc/config/libbid/_ge_sd.c
! 4bcf47057b427bbf0804be2824409d6a  libgcc/config/libbid/_ge_td.c
! 1683f4347b43b6155f5bd0c62597c8ca  libgcc/config/libbid/_gt_dd.c
! d0dee70c8f461ac05a5b57fd3e874d3b  libgcc/config/libbid/_gt_sd.c
! 864a696a950797c82600036153b00476  libgcc/config/libbid/_gt_td.c
! 253e1826fa693894b3c24536c6853c4b  libgcc/config/libbid/_isinfd128.c
! 1335bd415ea22c181672ce897f2f4fee  libgcc/config/libbid/_isinfd32.c
! 99938a346d3cd801877a07d6634315a8  libgcc/config/libbid/_isinfd64.c
! 25f46f9030311614e06de2d7f32b5e6d  libgcc/config/libbid/_le_dd.c
! 55252c2b7359ede3fa5c08499dbfe81f  libgcc/config/libbid/_le_sd.c
! 84ea1de332123a1931887e6270c1ff3d  libgcc/config/libbid/_le_td.c
! ee76a10addafd6283d34a74009cfe5c0  libgcc/config/libbid/_lt_dd.c
! 327d2672780812edc983d152acc7533c  libgcc/config/libbid/_lt_sd.c
! af476ca3108bb4d29b2781df6fde795b  libgcc/config/libbid/_lt_td.c
! d69a24fb40ef38622d8835fdb33b55f5  libgcc/config/libbid/_mul_dd.c
! 6e9ab809f8a94f909fa5ee5eb4113f18  libgcc/config/libbid/_mul_sd.c
! f1f936703a68daac5c69a661e525229a  libgcc/config/libbid/_mul_td.c
! eb17c505f52135db27c7164c2cc4669c  libgcc/config/libbid/_ne_dd.c
! f261c766e8e96c41c34957e8fccd9574  libgcc/config/libbid/_ne_sd.c
! ce40bda8d94bdb191564db9b62010ee7  libgcc/config/libbid/_ne_td.c
! 02dbc6c29a2fc4e9cbf27c0f2b64b046  libgcc/config/libbid/_sd_to_dd.c
! 6aa2317067e9aab75e7aafca1a75ef1f  libgcc/config/libbid/_sd_to_df.c
! 19cf8a77950c8bb625c95681a7897747  libgcc/config/libbid/_sd_to_di.c
! 199d2de551e946784c581ada83782402  libgcc/config/libbid/_sd_to_sf.c
! daf80d55d03aa109f3505203d071be5b  libgcc/config/libbid/_sd_to_si.c
! ef7a43ece449c01fe2f52262d18cdb49  libgcc/config/libbid/_sd_to_td.c
! aec03235144a7883b2449adf2f396415  libgcc/config/libbid/_sd_to_tf.c
! b95ce5f21bab1594a873d6157090483b  libgcc/config/libbid/_sd_to_udi.c
! 606dfb06289e1d8f37471eaf19157763  libgcc/config/libbid/_sd_to_usi.c
! 9407f9cb79d9bfb71abba1225e2fc7bc  libgcc/config/libbid/_sd_to_xf.c
! f89c6e76b747156a7a99d16ade6c614b  libgcc/config/libbid/_sf_to_dd.c
! c85926b1a479b1b01508c9584d3cec91  libgcc/config/libbid/_sf_to_sd.c
! e8e690af39cc692b19d179bf3d0cf544  libgcc/config/libbid/_sf_to_td.c
! aa6daad0a883cde8d9d6bbfdd3361774  libgcc/config/libbid/_si_to_dd.c
! ab27d16d9ede1ebdbed8fcf4022f95d7  libgcc/config/libbid/_si_to_sd.c
! 4e71730b284856083727851c7d9cf7b4  libgcc/config/libbid/_si_to_td.c
! 7f12e38c375e52783873a8adaf18b6a0  libgcc/config/libbid/_td_to_dd.c
! 30ac8d5bd9923bc0411f440d13d298a2  libgcc/config/libbid/_td_to_df.c
! 81fa8169c0cfa978802c3823d102cffa  libgcc/config/libbid/_td_to_di.c
! d791febefc480375aff6648aba9f3bef  libgcc/config/libbid/_td_to_sd.c
! 04e926893f46f56d90314e85581cc7d0  libgcc/config/libbid/_td_to_sf.c
! 55efd7e97b9e5cafe1395bf11e1234ee  libgcc/config/libbid/_td_to_si.c
! 54c3e9c24de83590efe8977fe2c0f635  libgcc/config/libbid/_td_to_tf.c
! b6c4bcf3e8b45b9413f705d6631354f0  libgcc/config/libbid/_td_to_udi.c
! b658a72730015674e0b0651b2c0f611a  libgcc/config/libbid/_td_to_usi.c
! 082a53bda4da339e0e12cb271f8edd19  libgcc/config/libbid/_td_to_xf.c
! 22336b5963e3e8d35f840a185360e49b  libgcc/config/libbid/_tf_to_dd.c
! 71f821629559b4471e9353b71d91d588  libgcc/config/libbid/_tf_to_sd.c
! e2e1e64177283ca09ce1542343e5a12b  libgcc/config/libbid/_tf_to_td.c
! 5f42254cc98ef07373d18f72a03fe96e  libgcc/config/libbid/_udi_to_dd.c
! 7f77b1f0b024667623347bbb06491534  libgcc/config/libbid/_udi_to_sd.c
! 86fa881686e3fef88b1b24f4a783d54b  libgcc/config/libbid/_udi_to_td.c
! 901b7d2402f781a4b0cef5c52c3dd108  libgcc/config/libbid/_unord_dd.c
! 5b99df6b8e312272fedf338f9d485a78  libgcc/config/libbid/_unord_sd.c
! 3d98fdd2156c061b90ed267ee21172d3  libgcc/config/libbid/_unord_td.c
! da12718af9de2a5a65aada568f64eb9e  libgcc/config/libbid/_usi_to_dd.c
! b87f2e910fd28f0eb69c94434269665c  libgcc/config/libbid/_usi_to_sd.c
! 6965114fe71422c0a8cba362a596a6f1  libgcc/config/libbid/_usi_to_td.c
! 92f20499687c2751219c4b0f741d9934  libgcc/config/libbid/_xf_to_dd.c
! 5fba1ade0821f7dcd0e8d28ad25f0bd5  libgcc/config/libbid/_xf_to_sd.c
! 72fe2d12de741202c53c8db7cd1826be  libgcc/config/libbid/_xf_to_td.c
! 4f4015c9d8854f9ca788b473cc64f252  libgcc/config/libbid/bid128.c
! ac87911d461426b7e169ee1f83724049  libgcc/config/libbid/bid128_2_str.h
! 8f7aa69fecf7f1884431a7ee332dcf24  libgcc/config/libbid/bid128_2_str_macros.h
! 18eac7dd6c1fb9afdabb4d82d1621bf2  libgcc/config/libbid/bid128_2_str_tables.c
! d661063cd395b839b2ebeeaba1961eed  libgcc/config/libbid/bid128_add.c
! e9f40c1b9764f2d136deab408bf16f46  libgcc/config/libbid/bid128_compare.c
! dac7fcaa715cf480b9d709d55c996a1c  libgcc/config/libbid/bid128_div.c
! 62f3939e5ca8144edf4670f7c7653f31  libgcc/config/libbid/bid128_fma.c
! 027812d0c4d748bff5e64e050c7265bd  libgcc/config/libbid/bid128_logb.c
! 3659fdb718bcd78f04723bead4c48d8e  libgcc/config/libbid/bid128_minmax.c
! cd81ce5e6254684b7650e73fc570a11c  libgcc/config/libbid/bid128_mul.c
! e8285e8f144d786867d92e7f4628349c  libgcc/config/libbid/bid128_next.c
! d5b2f8ea8c2995b579fdc59e7a410038  libgcc/config/libbid/bid128_noncomp.c
! 907a7035ef17655b27866589d7b98fd8  libgcc/config/libbid/bid128_quantize.c
! 353852333448d0f8c47264e952162a76  libgcc/config/libbid/bid128_rem.c
! 6041e204a3038825c016f21d279feefa  libgcc/config/libbid/bid128_round_integral.c
! b7637d9da15c6398f28eb95e8c9264fa  libgcc/config/libbid/bid128_scalb.c
! cfeb4b1ce79eb55f8c2d6ccc84fffd8e  libgcc/config/libbid/bid128_sqrt.c
! 8e000b75833761ad5751036e14265849  libgcc/config/libbid/bid128_string.c
! bbc1ae624d3eb959e8373354a314827f  libgcc/config/libbid/bid128_to_int16.c
! 3cb8fb90bda427b02ebeaf5240d1456c  libgcc/config/libbid/bid128_to_int32.c
! 8aa3b293703aa1343a62006b8ac60894  libgcc/config/libbid/bid128_to_int64.c
! 50ce9e4d9698aed7dc1150cfc70331c1  libgcc/config/libbid/bid128_to_int8.c
! f4d0969f1e991697e5bcbf04826dcfd3  libgcc/config/libbid/bid128_to_uint16.c
! 69ad9b4ee13cb05e7944262852622730  libgcc/config/libbid/bid128_to_uint32.c
! 283fc83b99c1151d4e071ab81fb1914c  libgcc/config/libbid/bid128_to_uint64.c
! 1edf310adc10a71af1a292c498d3eac2  libgcc/config/libbid/bid128_to_uint8.c
! 3d9cd670e09c3276b8866d1101514377  libgcc/config/libbid/bid32_to_bid128.c
! b6a31bc92993051ff019e8ef75c99d26  libgcc/config/libbid/bid32_to_bid64.c
! ba622836cd5171debcd125dbb35eb35c  libgcc/config/libbid/bid64_add.c
! 0c28837b38245c156ea3962231f925f7  libgcc/config/libbid/bid64_compare.c
! 5dcd95cf34990ca64f1e1c7542749738  libgcc/config/libbid/bid64_div.c
! 848514d8b68a4d3c7e5110b8a482e44c  libgcc/config/libbid/bid64_fma.c
! d2153e1dea480a6d33a50ac500e76235  libgcc/config/libbid/bid64_logb.c
! f3f89891dc1309062165186b1433cce6  libgcc/config/libbid/bid64_minmax.c
! 3317d5cdfaa5268c494a64cc68cd8a27  libgcc/config/libbid/bid64_mul.c
! 40ae22d781d63373fdf1309c6c99f6f7  libgcc/config/libbid/bid64_next.c
! 0d3656b17f3f3ebaf681053cd0959876  libgcc/config/libbid/bid64_noncomp.c
! 0ef0b0874484bf4f0832df08b6eca67a  libgcc/config/libbid/bid64_quantize.c
! 05cc7824eda13ab3466a4b0d38d7c6af  libgcc/config/libbid/bid64_rem.c
! 7651ef19d7ad418010b135eea81c510e  libgcc/config/libbid/bid64_round_integral.c
! 42bdb5aa9684aeac29d57e89aa63facb  libgcc/config/libbid/bid64_scalb.c
! f34e4712ddceeb39f8d00a5e68d78436  libgcc/config/libbid/bid64_sqrt.c
! 9ad8a953c5be04ecfeac4437dc07de85  libgcc/config/libbid/bid64_string.c
! 19d75cd365b40b289de3175898e03126  libgcc/config/libbid/bid64_to_bid128.c
! cf83b93a55d7be7300ec6ea52039dff4  libgcc/config/libbid/bid64_to_int16.c
! f74c55c8951035f1e5375d26897f916d  libgcc/config/libbid/bid64_to_int32.c
! 1f1ef9a55e3b33b803c76f4d3d5f6d75  libgcc/config/libbid/bid64_to_int64.c
! dd932e5ca204daa2f880ccf3e8550f04  libgcc/config/libbid/bid64_to_int8.c
! ca4be95609ceb6cb8b23e98cd8c55b01  libgcc/config/libbid/bid64_to_uint16.c
! c5de013cdef6b46391017e58f409a2f3  libgcc/config/libbid/bid64_to_uint32.c
! c38c20fb019d98ca5671d23e3ee9e2a1  libgcc/config/libbid/bid64_to_uint64.c
! 2ee5f1427b8de5cab8010d0f6f3baa5b  libgcc/config/libbid/bid64_to_uint8.c
! 10159cd06aca1dbfe84635e88a1fc0e4  libgcc/config/libbid/bid_b2d.h
! 084c29947e020efb1bc4756d9ca3d14f  libgcc/config/libbid/bid_binarydecimal.c
! 9bc19a3bc22c926e27cf0646fff10e69  libgcc/config/libbid/bid_conf.h
! 5d37acfc96af2930757af801a17c5df6  libgcc/config/libbid/bid_convert_data.c
! eb4098998d072b48930abfbf701df775  libgcc/config/libbid/bid_decimal_data.c
! e6ea60b6d50624f3358b8ebfb94eae4d  libgcc/config/libbid/bid_decimal_globals.c
! 82ea31376c6c89d17741297282bbe366  libgcc/config/libbid/bid_div_macros.h
! 83cdb699d4a4d930803d2bb6297dfa3c  libgcc/config/libbid/bid_dpd.c
! 81f7829794d000488cc46038682a3243  libgcc/config/libbid/bid_flag_operations.c
! 86e0be29d24a079316021d64e78b37a5  libgcc/config/libbid/bid_from_int.c
! b35b511f7343d9cdcf5d4a444c99b67d  libgcc/config/libbid/bid_functions.h
! b4742ad4fc3dac5008c9aaaeba747325  libgcc/config/libbid/bid_gcc_intrinsics.h
! 8acafcf5089bfaf753626a2b1508ce06  libgcc/config/libbid/bid_inline_add.h
! a321cafc57c9cadd53c9dfd802e8df86  libgcc/config/libbid/bid_internal.h
! bfb1b8d16adfa283f1f4cf15779599f4  libgcc/config/libbid/bid_round.c
! b416128a306bd065bd7c98f4ba77dea7  libgcc/config/libbid/bid_sqrt_macros.h
! 7e8cc23cc881607a78a248e3d9cb0d8b  libgcc/config/libgcc-glibc.ver
  5e552844975595b21cbaabb9a26fd91e  libgcc/config/libgcc-libsystem.ver
! dec7941c6b768594f9c6f7b5576c13bb  libgcc/config/lm32/_ashlsi3.S
! cbfdf4811475d0ce11aee7c97c934146  libgcc/config/lm32/_ashrsi3.S
! 1439b71efdb14c985a01b4de4f3c5073  libgcc/config/lm32/_divsi3.c
! 07d9980d3e30c112e1bf434e9ff8adb7  libgcc/config/lm32/_lshrsi3.S
! 8ed2a5f44d179c5b9b37fbc8332446fe  libgcc/config/lm32/_modsi3.c
! 38df3fd3f43f40c4097ad7586b046e2c  libgcc/config/lm32/_mulsi3.c
! 23a88bbaa7b8485f783cd765881185e6  libgcc/config/lm32/_udivmodsi4.c
! 87268a67ff42bbffff7897c6df0807fc  libgcc/config/lm32/_udivsi3.c
! f4bff22fd2ee4e970e52ba5c03b1404d  libgcc/config/lm32/_umodsi3.c
! f46980ecd0eb65d144905952dc9a2595  libgcc/config/lm32/crti.S
! 8e057969b0a4ed7b4d9523439eb4b72c  libgcc/config/lm32/crtn.S
! 74cd86249781016a488ed224f19f23b1  libgcc/config/lm32/libgcc_lm32.h
  813910d184e034c80a518f2ba3c4e1a5  libgcc/config/lm32/sfp-machine.h
  331dd855f33aa7a09d25fc757cedf2cf  libgcc/config/lm32/t-elf
  d6d4b530a7539331e6e553f26928de4e  libgcc/config/lm32/t-lm32
  df59d7c87fc0d2f761461ac4ba7ec440  libgcc/config/lm32/t-uclinux
! fba6cfcf3161a950dc8ae42a420c0da8  libgcc/config/m32c/lib1funcs.S
! 48cfeeff50a21ad693d8c64acd047cb6  libgcc/config/m32c/lib2funcs.c
  9f1fc3a0f039273ded002a6713908bd3  libgcc/config/m32c/t-m32c
! 9fee2557a5bdcc1c8b15aa9dd1c0e7e4  libgcc/config/m32c/trapv.c
! 0d2426e32146016afd31a776c5847fc3  libgcc/config/m32r/initfini.c
! 73450e7a6527df1afd33ef65b2a85287  libgcc/config/m32r/libgcc-glibc.ver
  a5b8b5a1404938f1f4b598db7eb1669e  libgcc/config/m32r/t-linux
  e252c161ec4eb09d3b5a62d902b3d00f  libgcc/config/m32r/t-m32r
! fed9e46b1d8f2c839b369dcccd0aeb6a  libgcc/config/m68k/crti.S
! 61406ccf2ba125746c2ed3969584ac91  libgcc/config/m68k/crtn.S
  c88d87907a20077db176016165428d4b  libgcc/config/m68k/fpgnulib.c
! c134c890c5f8c773c9986d833df37f89  libgcc/config/m68k/lb1sf68.S
! e321275fcc95e7f7774fbdfb7d3b9091  libgcc/config/m68k/linux-atomic.c
! ac5879cde201741f89007c6882276656  libgcc/config/m68k/linux-unwind.h
  2e4fd3e401c9159da9f32d5965b5afa1  libgcc/config/m68k/t-floatlib
  de217c41c217f4341d6d546afa9a79f2  libgcc/config/m68k/t-linux
  4e281c631e54b8912258f84196fec9e6  libgcc/config/m68k/t-slibgcc-elf-ver
! 7ae43ee41cc1f31bf23dea23697bac26  libgcc/config/mcore/crti.S
! 9265bfc247f7e3edfb912b713ce4100c  libgcc/config/mcore/crtn.S
! c44b7beab1d1e88edf920b3bed4ada63  libgcc/config/mcore/lib1funcs.S
  ef74fd63202d842bfe7120864186128c  libgcc/config/mcore/t-mcore
! 73915f9c53d8719920f92ba9f9cdfe1f  libgcc/config/microblaze/crti.S
! 200d4381200d414eb2e379c693a2f193  libgcc/config/microblaze/crtn.S
! c01539e6eb183eb788e29005bc961eb0  libgcc/config/microblaze/divsi3.S
! b66431db64b71b0ad9519b69a20f931c  libgcc/config/microblaze/divsi3_table.c
! b5be76d1e3aa5f6471a60278c9288d20  libgcc/config/microblaze/moddi3.S
! e911ac07e5a1d1f8c311ef2f5d5b2985  libgcc/config/microblaze/modsi3.S
! 566ec43d9449f7e89e4f333f767878fc  libgcc/config/microblaze/muldi3_hard.S
! 0c1e90375c3fa734d7c4d287c9c01ac6  libgcc/config/microblaze/mulsi3.S
! 0fa443df088c031b25b3f838f5e07de8  libgcc/config/microblaze/stack_overflow_exit.S
  702cd2045c2c31581ecd56232d96d5f5  libgcc/config/microblaze/t-microblaze
! 8789623658840010b63e4964fa76b9f1  libgcc/config/microblaze/udivsi3.S
! 4784e0bcdf31f4af1817becd1086fc4c  libgcc/config/microblaze/umodsi3.S
! 37453f5656511a8cdf4a66fa5f311c1f  libgcc/config/mips/crtfastmath.c
! 872fe057feac6bfad81116712cb7df17  libgcc/config/mips/crti.S
! c6a2353c00d43d63a1dee7134a222427  libgcc/config/mips/crtn.S
  f69b446f168701e4fad37a3fa7bf7a2a  libgcc/config/mips/gnustack.h
! ff476dc3a59c86b8a0fda7d99fae7837  libgcc/config/mips/gthr-mipssde.h
! 0aa482189714978221fa38ea69e544ce  libgcc/config/mips/lib2funcs.c
! 12165369362b8a3f6932f4becba6448f  libgcc/config/mips/libgcc-mips16.ver
! 407b889d8b8ecebf95f17abbed9de905  libgcc/config/mips/linux-unwind.h
! 4cc1a574059da9a1fddec0715666c471  libgcc/config/mips/mips16.S
! e5dad88375e70aa17a3c48b0294b6ce7  libgcc/config/mips/sfp-machine.h
  5b43c15f4e003338742d215bcfdf5029  libgcc/config/mips/t-crtstuff
  33f2c96b7ccbbb062839ec1e7329e6bb  libgcc/config/mips/t-elf
  501be8fccb18eca4dbd8b404d7b4c9fa  libgcc/config/mips/t-mips
! 48b418400b98e82ce22b338150d2a06f  libgcc/config/mips/t-mips16
  5e2260f13769a960c8e1f24b0c9847e4  libgcc/config/mips/t-mips64
  6403b3d85f0ed6751174f1088d074f62  libgcc/config/mips/t-sdemtk
  011afb1a0cc0aae0a4c465e6aefcafda  libgcc/config/mips/t-softfp-tf
  532a76f856d3755b780a19a91bdd1654  libgcc/config/mips/t-vr
! 902cbba87143ecf708264acf4d45993a  libgcc/config/mips/vr4120-div.S
! 3d6533dd2fb4767e268e71f3ca991f9f  libgcc/config/mmix/crti.S
! 7096ad0e75a242c14a4b70d020f2c8bc  libgcc/config/mmix/crtn.S
  41478efd1b19b3c7c9426d8e843f3b39  libgcc/config/mmix/t-mmix
! c8bf7ac971244c87f88de56e8453c475  libgcc/config/moxie/crti.S
! 77102a735c2de3cde69b9979167a4202  libgcc/config/moxie/crtn.S
  5d570ff5cd40fc6fba8876bdebd59a6b  libgcc/config/moxie/sfp-machine.h
  9b7000ea173c226d39e6a6dc116fdaf1  libgcc/config/msp430/cmpd.c
! 98946f470f0ebcab0bf9006f388f308a  libgcc/config/msp430/cmpsi2.S
! 449a53c3452fb851477f99c956e7b183  libgcc/config/msp430/epilogue.S
  072a56de362c5e857510ca8401f30aa8  libgcc/config/msp430/floathidf.c
  07461b1abb61437fbc73d74801f6300b  libgcc/config/msp430/floathisf.c
  88792e557553f37a296bd8127a0dfc88  libgcc/config/msp430/floatunhidf.c
  754bbc793bc0e81b0a2168df9f47e1f3  libgcc/config/msp430/floatunhisf.c
! ec217b96fa68ff1c03f6ea4b08c664e8  libgcc/config/msp430/lib2bitcountHI.c
! 42f69743697e96e870fa6e5ef791123a  libgcc/config/msp430/lib2divHI.c
! 37e9c23b65aa30096411aec64309eff9  libgcc/config/msp430/lib2divQI.c
! f32a9c2c01e37308ac0c2c23426b567a  libgcc/config/msp430/lib2divSI.c
! bb8816541221de2fea00ccbc9359a50b  libgcc/config/msp430/lib2hw_mul.S
! 9684cccb84ca9163426823f755a11605  libgcc/config/msp430/lib2mul.c
! 02e6dda2ec825c2b73d02d8b167baa13  libgcc/config/msp430/lib2shift.c
  585dda5cb05623da62e4f4aad3bdbbb6  libgcc/config/msp430/mpy.c
! 533351f32a7d77c7a1b574e1bb53be60  libgcc/config/msp430/msp430-divmod.h
! 0c6aad26da1bbc2e81aa3a90af67b440  libgcc/config/msp430/msp430-mul.h
! 43660cd57a30b05651d3b22b2a1614e5  libgcc/config/msp430/slli.S
! 7ae1f2e3a5ed42b0914412a0fb1232b1  libgcc/config/msp430/srai.S
! e090aff07df0ddba181663212994accc  libgcc/config/msp430/srli.S
! ac67477cd383e044b7d7b2e535605cd0  libgcc/config/msp430/t-msp430
! 2a67cae5c595d84ea4bfb744c27a9526  libgcc/config/nds32/crtzero.S
! fbcb85e184a8e123f7d0a7384b09114d  libgcc/config/nds32/initfini.c
! b37515212c12b97fd93bbdb4891bd689  libgcc/config/nds32/isr-library/adj_intr_lvl.inc
! ce87f2695d1790dce32f1bd9923235d4  libgcc/config/nds32/isr-library/excp_isr.S
! dad0061ab41f09604c83637896efabd8  libgcc/config/nds32/isr-library/excp_isr_4b.S
! d749ab6f85867f07cd8586b0c5260a72  libgcc/config/nds32/isr-library/intr_isr.S
! e859dc0e4baf65f1e46571636f66cbfa  libgcc/config/nds32/isr-library/intr_isr_4b.S
! e7dedc8dee56854f1f623df4553deed3  libgcc/config/nds32/isr-library/jmptbl_vid00.S
! 686f252564206953be755fb92e924547  libgcc/config/nds32/isr-library/jmptbl_vid01.S
! f9dc23f515d9882b10999c375f45b6f4  libgcc/config/nds32/isr-library/jmptbl_vid02.S
! a743e54f76d1fce376a2575ddc79285c  libgcc/config/nds32/isr-library/jmptbl_vid03.S
! 7b62b27135b4f7af18bfb57866fb92f5  libgcc/config/nds32/isr-library/jmptbl_vid04.S
! 5df7bf6cb1c6e86b420fb745dc5e5160  libgcc/config/nds32/isr-library/jmptbl_vid05.S
! b202e6e62b659100b93ffb8950838031  libgcc/config/nds32/isr-library/jmptbl_vid06.S
! a425ebcd94af7f9906818d8e9d9b17eb  libgcc/config/nds32/isr-library/jmptbl_vid07.S
! 1f14cdc4b35eb7907994ffe452bb6830  libgcc/config/nds32/isr-library/jmptbl_vid08.S
! 8167d4f651248a259c6136a65f43f45e  libgcc/config/nds32/isr-library/jmptbl_vid09.S
! ae773ba9bea427fe08b2cdcc1a4e06b2  libgcc/config/nds32/isr-library/jmptbl_vid10.S
! 3d12a14c695738fed1166ea4309186e5  libgcc/config/nds32/isr-library/jmptbl_vid11.S
! e64b37ca25bafcc3c7dbc8a2fb41c5fa  libgcc/config/nds32/isr-library/jmptbl_vid12.S
! bd56a48188f62e8c00a9dcc6dcd4ea6d  libgcc/config/nds32/isr-library/jmptbl_vid13.S
! 14d75203de1053b2f45e820cff328ef3  libgcc/config/nds32/isr-library/jmptbl_vid14.S
! f827fcdcf5c0dda3e28fae1234066d3f  libgcc/config/nds32/isr-library/jmptbl_vid15.S
! 86248637c479b3312c2e9ab02b7194e6  libgcc/config/nds32/isr-library/jmptbl_vid16.S
! bc5b4ed1ce9cb39e2d64d8ac0b43b5a6  libgcc/config/nds32/isr-library/jmptbl_vid17.S
! b5bc84f1883cc55e2946ab378670e5b6  libgcc/config/nds32/isr-library/jmptbl_vid18.S
! 41928ea7e589130ac7ecd000a018fe31  libgcc/config/nds32/isr-library/jmptbl_vid19.S
! 3d72ea4d7466b5120b68b2f716e8cc0b  libgcc/config/nds32/isr-library/jmptbl_vid20.S
! afe4cad20df13a9d5ed074c869727389  libgcc/config/nds32/isr-library/jmptbl_vid21.S
! 3dac7543d4dae0513097a89b2b7ec7fc  libgcc/config/nds32/isr-library/jmptbl_vid22.S
! 9e3a6fba0a6c3fa8971087ae38715366  libgcc/config/nds32/isr-library/jmptbl_vid23.S
! 6edb8aa8b7ceb7b92980c557992c63cb  libgcc/config/nds32/isr-library/jmptbl_vid24.S
! 458361c082eab1477b764ebfd948ba7f  libgcc/config/nds32/isr-library/jmptbl_vid25.S
! d30893509eb3a7a9b674c4b8a23348c0  libgcc/config/nds32/isr-library/jmptbl_vid26.S
! 8eaa200fc701e64475ec0c0e65625427  libgcc/config/nds32/isr-library/jmptbl_vid27.S
! f5ac567d098060bba8b6bb958ca29c14  libgcc/config/nds32/isr-library/jmptbl_vid28.S
! b5dbedb30c4149593d1785c1ba2867d5  libgcc/config/nds32/isr-library/jmptbl_vid29.S
! c5083f6a9a46e34e1eef82f3f6b9d54c  libgcc/config/nds32/isr-library/jmptbl_vid30.S
! 51baabb67e8d4eafab363c421ba36586  libgcc/config/nds32/isr-library/jmptbl_vid31.S
! 4a7d47aebd93c3c921463eed9866be44  libgcc/config/nds32/isr-library/jmptbl_vid32.S
! 709791ab3e67b04d68eb241c0eda5f9f  libgcc/config/nds32/isr-library/jmptbl_vid33.S
! 86c200c3cfca813995749baadf0408ec  libgcc/config/nds32/isr-library/jmptbl_vid34.S
! cfd08d51f16f2bfa299e0a53d69dd639  libgcc/config/nds32/isr-library/jmptbl_vid35.S
! 12c53d7deddfe109fd1bd772e2446910  libgcc/config/nds32/isr-library/jmptbl_vid36.S
! d938fc0a7b2e8c0e3b1177d0ec7afff9  libgcc/config/nds32/isr-library/jmptbl_vid37.S
! 58e2d12263931194d1cddef869bb7ecc  libgcc/config/nds32/isr-library/jmptbl_vid38.S
! caa2d7bc98f068a263a7da6fa32e7cfa  libgcc/config/nds32/isr-library/jmptbl_vid39.S
! 7383a72ffba4e7f4d7f572b2ba3ca518  libgcc/config/nds32/isr-library/jmptbl_vid40.S
! 7f5fe5995a43cd3602eea9fa4af164bc  libgcc/config/nds32/isr-library/jmptbl_vid41.S
! 301dd89dd54760e87088f235713a1e26  libgcc/config/nds32/isr-library/jmptbl_vid42.S
! 3259524428c37b4831677d9741db61ee  libgcc/config/nds32/isr-library/jmptbl_vid43.S
! 646cc4c61d2e10a78ea4bdcccf6eee75  libgcc/config/nds32/isr-library/jmptbl_vid44.S
! 950ffabcbec8e26184ec995e08f9c6e0  libgcc/config/nds32/isr-library/jmptbl_vid45.S
! 1e3bb99bc3cf0907e542a87ff2a9ef4c  libgcc/config/nds32/isr-library/jmptbl_vid46.S
! c06bd2324c73910ef0371fba0ad391ca  libgcc/config/nds32/isr-library/jmptbl_vid47.S
! d3b9cfd8cd8e39036726f92b0d3c2328  libgcc/config/nds32/isr-library/jmptbl_vid48.S
! 4ccbab095d9904ef188cd6e366ea627c  libgcc/config/nds32/isr-library/jmptbl_vid49.S
! 074c57bba48a634a9a5ff9000537596b  libgcc/config/nds32/isr-library/jmptbl_vid50.S
! 537db370d36c995b71abc9de98931e1f  libgcc/config/nds32/isr-library/jmptbl_vid51.S
! 4fbb16219bc7cc30ff462284fb5d309c  libgcc/config/nds32/isr-library/jmptbl_vid52.S
! 1c2350105f563c340460cb895ab8fcbb  libgcc/config/nds32/isr-library/jmptbl_vid53.S
! 6a0f370c9869c4dd7bfced1228701a27  libgcc/config/nds32/isr-library/jmptbl_vid54.S
! 4e1f6de668c8ab4baf00107c75fb6c9a  libgcc/config/nds32/isr-library/jmptbl_vid55.S
! 9b06b41720c952193c21aa0f8c411a74  libgcc/config/nds32/isr-library/jmptbl_vid56.S
! 7a8b7cff7c7f2e1dc0a57fa61a88f9f6  libgcc/config/nds32/isr-library/jmptbl_vid57.S
! 6d3e28be182f9d2984d40016bec3b6f5  libgcc/config/nds32/isr-library/jmptbl_vid58.S
! 00a692f93635b860ab351d55835c280e  libgcc/config/nds32/isr-library/jmptbl_vid59.S
! 60c9a7bc439f30f34cd018ced9a5e3cb  libgcc/config/nds32/isr-library/jmptbl_vid60.S
! 6c497a8558ec8139bacb10b8284222f0  libgcc/config/nds32/isr-library/jmptbl_vid61.S
! 860e319170c2d81740f81767af2dd58c  libgcc/config/nds32/isr-library/jmptbl_vid62.S
! b1d391e600f1cfe7a54d47897ee06d00  libgcc/config/nds32/isr-library/jmptbl_vid63.S
! ceb72c5ac1d9956e156ad9cd31427adf  libgcc/config/nds32/isr-library/jmptbl_vid64.S
! 5ba35c6621fd19ddfe7ba3a959a34047  libgcc/config/nds32/isr-library/jmptbl_vid65.S
! 412276743c11b29db8e2bc06d6b4ddb7  libgcc/config/nds32/isr-library/jmptbl_vid66.S
! c239bf4e9f4dc363dbb2440ec9759e4d  libgcc/config/nds32/isr-library/jmptbl_vid67.S
! a4bae2a9266b612965c3c58d2dfca066  libgcc/config/nds32/isr-library/jmptbl_vid68.S
! 3b13b38097e43d10a7c4719ebc98f9e1  libgcc/config/nds32/isr-library/jmptbl_vid69.S
! 076c1bc78eb6001742598a12de286e07  libgcc/config/nds32/isr-library/jmptbl_vid70.S
! 05fd12105a9c5edc3762500dff314804  libgcc/config/nds32/isr-library/jmptbl_vid71.S
! 7c7a4eb9afe6a73d9733b3454a133431  libgcc/config/nds32/isr-library/jmptbl_vid72.S
! a4f3147aa41b0a3a6d237444b92c13e6  libgcc/config/nds32/isr-library/nmih.S
! 34d571653c11200617f25f4fb2d3e312  libgcc/config/nds32/isr-library/reset.S
! b5a8cbc35ffdff177eae8a3fb4a26113  libgcc/config/nds32/isr-library/reset_4b.S
! 6f98286f98e6226e1321243e0a7bbd48  libgcc/config/nds32/isr-library/restore_all.inc
! d42fca0091dbc6f034ea2090e910df30  libgcc/config/nds32/isr-library/restore_fpu_regs.inc
! 54fa2e35ac7a0353fea745682d06d672  libgcc/config/nds32/isr-library/restore_fpu_regs_00.inc
! 82814ed759336b9ab8aa806b3b4663f3  libgcc/config/nds32/isr-library/restore_fpu_regs_01.inc
! 53bb54f1b1ccc9b5ddda2779949539a6  libgcc/config/nds32/isr-library/restore_fpu_regs_02.inc
! 8f383b11b870a3c98cc51a45bd7f6ace  libgcc/config/nds32/isr-library/restore_fpu_regs_03.inc
! fe965ecfde1612df5f7c87eb7a11219d  libgcc/config/nds32/isr-library/restore_mac_regs.inc
! d13b8043ede66c268e8f3c0511087e63  libgcc/config/nds32/isr-library/restore_partial.inc
! 5e58b8edb1d146faef622a8bebde3558  libgcc/config/nds32/isr-library/restore_usr_regs.inc
! e12e2a3f5bd10a2971b2fa62444cbc62  libgcc/config/nds32/isr-library/save_all.inc
! 8f7ecf5de7aa048be026dc5e26b541b1  libgcc/config/nds32/isr-library/save_fpu_regs.inc
! f776311acef75f7f7736bc72447457f8  libgcc/config/nds32/isr-library/save_fpu_regs_00.inc
! 03bc5c5bccd82a600147b2da5af4f45a  libgcc/config/nds32/isr-library/save_fpu_regs_01.inc
! 6b09ab4ff5504c0441479f17d5b9494e  libgcc/config/nds32/isr-library/save_fpu_regs_02.inc
! a350b12d9558f5c5fd0aeaa34a2ddfda  libgcc/config/nds32/isr-library/save_fpu_regs_03.inc
! 99f1665da472ae1381b40ab135663b31  libgcc/config/nds32/isr-library/save_mac_regs.inc
! c4d584dd107c565a226990c6f77f4943  libgcc/config/nds32/isr-library/save_partial.inc
! cf37e219f5434f071d8c1781ff010034  libgcc/config/nds32/isr-library/save_usr_regs.inc
! 8675063c0b8bd5abbad583a485d80ca5  libgcc/config/nds32/isr-library/vec_vid00.S
! 01ea3fb6cc58706d60ec4dd5ff6a1ddf  libgcc/config/nds32/isr-library/vec_vid00_4b.S
! eba4d9d5b2ccae89f5348cbf7b81263e  libgcc/config/nds32/isr-library/vec_vid01.S
! 04140748f0f7742e9e87cc05f473ffc6  libgcc/config/nds32/isr-library/vec_vid01_4b.S
! 16584891144efd94da8726ca165868b8  libgcc/config/nds32/isr-library/vec_vid02.S
! c8763d0c4e2d7f7ee65badc506639445  libgcc/config/nds32/isr-library/vec_vid02_4b.S
! 4a404b9ebee872902e95126f42261a87  libgcc/config/nds32/isr-library/vec_vid03.S
! 306ca7d45a76251819b64efbce2b82de  libgcc/config/nds32/isr-library/vec_vid03_4b.S
! ab802e22cb254f0c2fe1f5470228ee97  libgcc/config/nds32/isr-library/vec_vid04.S
! 970e55cd77d159043fe3bf9df671c5e5  libgcc/config/nds32/isr-library/vec_vid04_4b.S
! 4101207bfe3762d402da951a9ada493c  libgcc/config/nds32/isr-library/vec_vid05.S
! 438643164e676aaabbf8120153dae5d8  libgcc/config/nds32/isr-library/vec_vid05_4b.S
! 28682e900fe70e6a0b65a5c9bff4a904  libgcc/config/nds32/isr-library/vec_vid06.S
! 27ae62aaad6be33cd550b1f7678ca23e  libgcc/config/nds32/isr-library/vec_vid06_4b.S
! bfd7aa612fbf809b77b39b417fee5635  libgcc/config/nds32/isr-library/vec_vid07.S
! b59a48302a45f05196e080ac8ce8e9c7  libgcc/config/nds32/isr-library/vec_vid07_4b.S
! 204975acb2938db25b6c235da75a1c86  libgcc/config/nds32/isr-library/vec_vid08.S
! 2daa7ead1616741144ae824c7ee5d9e7  libgcc/config/nds32/isr-library/vec_vid08_4b.S
! 4258659da1014176038517e9599eb1ba  libgcc/config/nds32/isr-library/vec_vid09.S
! 44afb9a1e839c43d3c654829cf335f26  libgcc/config/nds32/isr-library/vec_vid09_4b.S
! e918a60f17b655a51560d708c320fb09  libgcc/config/nds32/isr-library/vec_vid10.S
! d5bb040141055cf5a7bb835f6d535b9c  libgcc/config/nds32/isr-library/vec_vid10_4b.S
! 38a41f161a64708ecd8c402eb9e79604  libgcc/config/nds32/isr-library/vec_vid11.S
! 5ea120294dad97fe1e77543eb4f46ed3  libgcc/config/nds32/isr-library/vec_vid11_4b.S
! 261df57d4938e238c53b5c6ba2251764  libgcc/config/nds32/isr-library/vec_vid12.S
! 4e63c449e26d71fe158179b96dbc4d5f  libgcc/config/nds32/isr-library/vec_vid12_4b.S
! 029e75bf992401b45f6b1ed81a883f4c  libgcc/config/nds32/isr-library/vec_vid13.S
! 77f3636f27ce6db2e49825dade0f6bd2  libgcc/config/nds32/isr-library/vec_vid13_4b.S
! c90072fa9070592e7189250f839d0c45  libgcc/config/nds32/isr-library/vec_vid14.S
! e2f061ea27abb3d5453b13f746bcbe5b  libgcc/config/nds32/isr-library/vec_vid14_4b.S
! 7f59a5bcb3f9ec00eac36429780c8295  libgcc/config/nds32/isr-library/vec_vid15.S
! bc8eea8344324eb9ace7ac269cd4ec62  libgcc/config/nds32/isr-library/vec_vid15_4b.S
! 1cd0203b91f7c1521c4bb1677ff44860  libgcc/config/nds32/isr-library/vec_vid16.S
! 6ad59738534d4f0c9f257bc53cf4dd10  libgcc/config/nds32/isr-library/vec_vid16_4b.S
! 5568cbab77227f380b322286f6b91baa  libgcc/config/nds32/isr-library/vec_vid17.S
! 907701875a7c53e7a4226ef69cf30874  libgcc/config/nds32/isr-library/vec_vid17_4b.S
! 41f8215321d374264699bf98d5cb4502  libgcc/config/nds32/isr-library/vec_vid18.S
! ff0220745f7d2e9f0416c789103828c0  libgcc/config/nds32/isr-library/vec_vid18_4b.S
! b1370ff9602dd2a65cdebffde8cd11dd  libgcc/config/nds32/isr-library/vec_vid19.S
! 37f550f7a9e24a1478648402deb835a8  libgcc/config/nds32/isr-library/vec_vid19_4b.S
! fdc6a2665eb897bf0ee3123a616c2439  libgcc/config/nds32/isr-library/vec_vid20.S
! 1f9f923c0c6da07d9a3db751d15d24b3  libgcc/config/nds32/isr-library/vec_vid20_4b.S
! b10c0e7a34e02447feb877fbdd3203ce  libgcc/config/nds32/isr-library/vec_vid21.S
! c0400eab26f82dbe8601831a858662e2  libgcc/config/nds32/isr-library/vec_vid21_4b.S
! 9819c7acc86df923f218f1988b7ebfa3  libgcc/config/nds32/isr-library/vec_vid22.S
! 7f54992c2c52ee94ea59318eb55b824a  libgcc/config/nds32/isr-library/vec_vid22_4b.S
! 2dd9e9794262379904cb05e61b81bd36  libgcc/config/nds32/isr-library/vec_vid23.S
! dba836dd1301ce92b35d6f6ee5c855cd  libgcc/config/nds32/isr-library/vec_vid23_4b.S
! 5546b36d4d96ae03a876b2bf01cc7047  libgcc/config/nds32/isr-library/vec_vid24.S
! a6f62fd4017e538b01121faf9a188d2d  libgcc/config/nds32/isr-library/vec_vid24_4b.S
! f763d98929261ce5ad0ca486fb0a0513  libgcc/config/nds32/isr-library/vec_vid25.S
! 2d5c105f2809476ecfb51849b476020d  libgcc/config/nds32/isr-library/vec_vid25_4b.S
! 78787e587161335620e44de4d1db4575  libgcc/config/nds32/isr-library/vec_vid26.S
! b63eddef11cea6264295d478f364b1f6  libgcc/config/nds32/isr-library/vec_vid26_4b.S
! 634ac76ba5b8e2ed56d106738c554278  libgcc/config/nds32/isr-library/vec_vid27.S
! e70c47700d7eec308acf24ba54e2fafd  libgcc/config/nds32/isr-library/vec_vid27_4b.S
! 80b20cf74d54deef90897b40c552e165  libgcc/config/nds32/isr-library/vec_vid28.S
! b5bd98bf2ab8825a9a533abf5415f383  libgcc/config/nds32/isr-library/vec_vid28_4b.S
! 3016834c3a34e176979667e6c441240b  libgcc/config/nds32/isr-library/vec_vid29.S
! e7b5514645c427fa806df8c621ef6934  libgcc/config/nds32/isr-library/vec_vid29_4b.S
! a22fa247d2d972fe4cfb117213049cc7  libgcc/config/nds32/isr-library/vec_vid30.S
! 815e4260ed92cd8712d936c32aec0604  libgcc/config/nds32/isr-library/vec_vid30_4b.S
! 91e65e1bb6cbda27a3908664f3793aa5  libgcc/config/nds32/isr-library/vec_vid31.S
! 84905d99390acadf351a6deb4de26d66  libgcc/config/nds32/isr-library/vec_vid31_4b.S
! b42090bd82adf8e3a011c405d933857e  libgcc/config/nds32/isr-library/vec_vid32.S
! f9fadc9f1e9bfcb8208f71ba3555cca3  libgcc/config/nds32/isr-library/vec_vid32_4b.S
! dc1c24a5f298f701207cdb6a47054e91  libgcc/config/nds32/isr-library/vec_vid33.S
! 91e20537ea40a68a8f5c21eb3cd43bf8  libgcc/config/nds32/isr-library/vec_vid33_4b.S
! 6de7f9f4d4c43f9db8f00d68c8a306a2  libgcc/config/nds32/isr-library/vec_vid34.S
! 35b84e2ac2e2ec58b9e991d8c4860ecd  libgcc/config/nds32/isr-library/vec_vid34_4b.S
! 4cbe4711857ab86a1e600254ac98e2e9  libgcc/config/nds32/isr-library/vec_vid35.S
! 79fd42f282250bb55aba9770767340d3  libgcc/config/nds32/isr-library/vec_vid35_4b.S
! 93fd88b11902c9d563cd0708d4dc5052  libgcc/config/nds32/isr-library/vec_vid36.S
! f359a34280f4d647b5478354d0d22283  libgcc/config/nds32/isr-library/vec_vid36_4b.S
! dc55432fad45943dcf834152605aa25a  libgcc/config/nds32/isr-library/vec_vid37.S
! caa42b5b4200432d60d0fb0958e19548  libgcc/config/nds32/isr-library/vec_vid37_4b.S
! 1ea04da13af7dac24a0c1b45e455902c  libgcc/config/nds32/isr-library/vec_vid38.S
! edbe866fa861b70da49d52cd817fb125  libgcc/config/nds32/isr-library/vec_vid38_4b.S
! 3d113d1f9612e9f5e487fde0fbfd2b47  libgcc/config/nds32/isr-library/vec_vid39.S
! ff95d1edebdb166aaada981986207116  libgcc/config/nds32/isr-library/vec_vid39_4b.S
! 94569764ab3a7a23590842491e5196e4  libgcc/config/nds32/isr-library/vec_vid40.S
! b718cd503b1d135c838b7f912779117e  libgcc/config/nds32/isr-library/vec_vid40_4b.S
! 86f7316aed231e9d1cfd4b6850025158  libgcc/config/nds32/isr-library/vec_vid41.S
! b79e1cc8e86e8ec951d872732e04f7af  libgcc/config/nds32/isr-library/vec_vid41_4b.S
! f3b6ce7e11e949d6b0be36466d70879b  libgcc/config/nds32/isr-library/vec_vid42.S
! 627d414483b1b1791399c529f6d8213e  libgcc/config/nds32/isr-library/vec_vid42_4b.S
! 1c03cdfef2ca7926c1d8106d0fc11efc  libgcc/config/nds32/isr-library/vec_vid43.S
! a454afd86a9d211f255fa59358bc12bf  libgcc/config/nds32/isr-library/vec_vid43_4b.S
! a593ed564bd6855f19f573faf4990b5a  libgcc/config/nds32/isr-library/vec_vid44.S
! f5932149281098710069cbdef9d9031a  libgcc/config/nds32/isr-library/vec_vid44_4b.S
! 19d62f8c2a8d6f0bb6e89980dedc4bae  libgcc/config/nds32/isr-library/vec_vid45.S
! 8b02ca806039848167f7f6d7500614a1  libgcc/config/nds32/isr-library/vec_vid45_4b.S
! 80ff14e26356a39ad0e438a78d4bf58e  libgcc/config/nds32/isr-library/vec_vid46.S
! cd450349de64c4c94646673af96b69b5  libgcc/config/nds32/isr-library/vec_vid46_4b.S
! 8501caa4a43fd5cbe9707369e71df8f3  libgcc/config/nds32/isr-library/vec_vid47.S
! f6f208328a8dac1b16cd3d31c9ab9f5f  libgcc/config/nds32/isr-library/vec_vid47_4b.S
! f5426c5eb15df7b73af6aeb39a2efcce  libgcc/config/nds32/isr-library/vec_vid48.S
! 24f01eb79c49319e4d7a8bb8c4ee36fa  libgcc/config/nds32/isr-library/vec_vid48_4b.S
! 9d9228fcf300b18d5344e8d5a4fb2098  libgcc/config/nds32/isr-library/vec_vid49.S
! 94df14d6a9b6c0da959cdde85a5de63b  libgcc/config/nds32/isr-library/vec_vid49_4b.S
! 386b3a4b9802f3d2a66b288c1d12aae0  libgcc/config/nds32/isr-library/vec_vid50.S
! 47e48d15b1b88ef26c7190c99809f2bf  libgcc/config/nds32/isr-library/vec_vid50_4b.S
! faae73ccb10182bdca56abbf6a47b5e9  libgcc/config/nds32/isr-library/vec_vid51.S
! 72eba4b26c268e48d948492abcb6033c  libgcc/config/nds32/isr-library/vec_vid51_4b.S
! 76ca9b41b4099265d494e6c9f15449ed  libgcc/config/nds32/isr-library/vec_vid52.S
! a50b026d18f55d14529d0e1ddef3db2a  libgcc/config/nds32/isr-library/vec_vid52_4b.S
! 2b10f07bdc0ee47f821fdd87cf356110  libgcc/config/nds32/isr-library/vec_vid53.S
! 4c89c7e368c7608597f990ec40a4bccf  libgcc/config/nds32/isr-library/vec_vid53_4b.S
! f1ebda94e75ad420088e16bf0592320b  libgcc/config/nds32/isr-library/vec_vid54.S
! 88057311adf62bcd0ecc42dc974880e1  libgcc/config/nds32/isr-library/vec_vid54_4b.S
! 32789507f191ccea5df164c81e3aeeed  libgcc/config/nds32/isr-library/vec_vid55.S
! 8ae4c12c2c526fc57b1453423cb2f9c6  libgcc/config/nds32/isr-library/vec_vid55_4b.S
! a84b0bd1a81d56aac263eacd09f19985  libgcc/config/nds32/isr-library/vec_vid56.S
! d5ad25fb6c6f00a9531594147a103fc2  libgcc/config/nds32/isr-library/vec_vid56_4b.S
! fa9846273ef0a389de5fcf99a531bd2b  libgcc/config/nds32/isr-library/vec_vid57.S
! d92d1bc9164ee58b77832608db22e929  libgcc/config/nds32/isr-library/vec_vid57_4b.S
! 937a18ce8ab8d1f54c98e12499b2862a  libgcc/config/nds32/isr-library/vec_vid58.S
! aefb23dd72a310ce35e251cdc6075e92  libgcc/config/nds32/isr-library/vec_vid58_4b.S
! 40a0fc7a790ff33b7405f089917067f0  libgcc/config/nds32/isr-library/vec_vid59.S
! 39bb70ade4a356e7baa02f9eaf870f51  libgcc/config/nds32/isr-library/vec_vid59_4b.S
! 5a0c4209bcd0ad5aa0cb00619da700a6  libgcc/config/nds32/isr-library/vec_vid60.S
! 3bbc39c9ce3ab5d0aceeea095f48bc01  libgcc/config/nds32/isr-library/vec_vid60_4b.S
! 636fb30ad18219b733f9a7204e2304ab  libgcc/config/nds32/isr-library/vec_vid61.S
! 647e12926f2d2e99a442189c158f8214  libgcc/config/nds32/isr-library/vec_vid61_4b.S
! 6f350c68882e9d0f291aa142e96d856b  libgcc/config/nds32/isr-library/vec_vid62.S
! 5841cbdc358af3ec337f584c7c7fef27  libgcc/config/nds32/isr-library/vec_vid62_4b.S
! e6f6f00a82b07cad2a31dc16b252a9c2  libgcc/config/nds32/isr-library/vec_vid63.S
! 587aae01b9c7a55219c9f5ef884db4af  libgcc/config/nds32/isr-library/vec_vid63_4b.S
! af46788383c38c5ef800024122fab570  libgcc/config/nds32/isr-library/vec_vid64.S
! c61f7ee824ddbbafd37da98af7a6b876  libgcc/config/nds32/isr-library/vec_vid64_4b.S
! 1750e0d8403668cf09a63ec27250d9f6  libgcc/config/nds32/isr-library/vec_vid65.S
! c5886f2f73030c379bd5b02a6375b734  libgcc/config/nds32/isr-library/vec_vid65_4b.S
! 90598af2ad27bf1ceb16b6f2cdf8f83b  libgcc/config/nds32/isr-library/vec_vid66.S
! 6314c08fc1bbbb1fb0f276d07ea396d1  libgcc/config/nds32/isr-library/vec_vid66_4b.S
! 3e22169326cee3f72bc202119b4746c6  libgcc/config/nds32/isr-library/vec_vid67.S
! 8d728ae816d5e2d6fb0339cbbc3e8013  libgcc/config/nds32/isr-library/vec_vid67_4b.S
! 7332f1aeec56057e8c142004de66d274  libgcc/config/nds32/isr-library/vec_vid68.S
! e6bbeee57eabb338cee28377264bab02  libgcc/config/nds32/isr-library/vec_vid68_4b.S
! e631c5614e75622026004e1a339e9b9f  libgcc/config/nds32/isr-library/vec_vid69.S
! db77a09f1215f420f027e6c8d417ecd9  libgcc/config/nds32/isr-library/vec_vid69_4b.S
! 4b366d9ededef6fe7a90df0f97bf6223  libgcc/config/nds32/isr-library/vec_vid70.S
! 179480ea264c892f59b2ebb0787bb205  libgcc/config/nds32/isr-library/vec_vid70_4b.S
! d2e9699d4019f63f9f7ca380ffffed25  libgcc/config/nds32/isr-library/vec_vid71.S
! 9d2d735474ba3495429127aefebe711d  libgcc/config/nds32/isr-library/vec_vid71_4b.S
! d602ebf2ffe3c7261e210bd39bfce55a  libgcc/config/nds32/isr-library/vec_vid72.S
! 1dfe4d64aa2a23a0c0b6b0a58ed1c49b  libgcc/config/nds32/isr-library/vec_vid72_4b.S
! deb4f4f6a8678ba2d495a2b6da39fe1a  libgcc/config/nds32/isr-library/wrh.S
! 7bdd4e1b5399d37b2c57e850b5462947  libgcc/config/nds32/lib1asmsrc-mculib.S
! 50618ad1adfabfed0ba9b0a7471f5567  libgcc/config/nds32/lib1asmsrc-newlib.S
! 446d7cd3e532f2beca8c643f65b1e693  libgcc/config/nds32/lib2csrc-mculib/_clzdi2.c
! 19fe5f420d90b607a39acd995263c2df  libgcc/config/nds32/lib2csrc-mculib/_clzsi2.c
! 33bb9bdbf55805575b20cb1f2ef7d3aa  libgcc/config/nds32/linux-atomic.c
! c166f906262a80203bc0d0c372d34798  libgcc/config/nds32/linux-unwind.h
! f49363d6b3244446cf2910e6d9cffef7  libgcc/config/nds32/sfp-machine.h
! e370705afd4e8cb4e00fea4aa7573421  libgcc/config/nds32/t-nds32
! 2f064de5e5ae8bcba676dc29ef71a8a3  libgcc/config/nds32/t-nds32-glibc
! 791cdb8e9d7b9d591dfbd733c9c0b12b  libgcc/config/nds32/t-nds32-isr
! a6777c67228f53aa41a13422777e9cd0  libgcc/config/nds32/t-nds32-mculib
! b590f14702debb3856dd90c8ada575ff  libgcc/config/nds32/t-nds32-newlib
! 04d5f87759ebec8ee540eed43becc6f0  libgcc/config/nios2/crti.S
! 98c501a486d43431f68ac82080bc72e8  libgcc/config/nios2/crtn.S
! 0ac4df8e72dd06da2deba23ca4c8991d  libgcc/config/nios2/elf-lib.h
! d85fec8721b3754008bc406a97169471  libgcc/config/nios2/lib2-divmod-hi.c
! 95b0601feaa7f2a85d43f0c91d270153  libgcc/config/nios2/lib2-divmod.c
! 8b5a7621dec351d6e74aab8b20e383e6  libgcc/config/nios2/lib2-divtable.c
! 229f58c93b8c241867ec49368bf99508  libgcc/config/nios2/lib2-mul.c
! 02968eec7855878d7061fb1e94969af3  libgcc/config/nios2/lib2-nios2.h
! e0f4ff84baf2122ee3b0a96d3206c364  libgcc/config/nios2/linux-atomic.c
! 9f29d434f02c81af566b2d41b6e145e9  libgcc/config/nios2/linux-unwind.h
! afe891a570aaed7318c30fe80d1a17a3  libgcc/config/nios2/sfp-machine.h
  598bde069aeebadde9b08f8703ab2c77  libgcc/config/nios2/t-linux
  058cf7bee1e8fb40a62590a2558c7f76  libgcc/config/nios2/t-nios2
! 8956e693a27ecd08ca03aae524747702  libgcc/config/nios2/tramp.c
  d554f3fc7ee3cecc697c448b8c5f61bb  libgcc/config/no-sfp-machine.h
  b70010a8e3a6734ae04ba484992563c5  libgcc/config/no-unwind.h
! 758d0fca031236bbc36683649351b56a  libgcc/config/nvptx/atomic.c
! d78f648f6e6acda8364b080677f50a8a  libgcc/config/nvptx/crt0.c
! d185b4884ac16dcc38f59de378e055ef  libgcc/config/nvptx/mgomp.c
! 834628f65ca04b1a1704420e1de00b57  libgcc/config/nvptx/nvptx-malloc.h
! a731daed6e567c406dcbce8f4004aded  libgcc/config/nvptx/reduction.c
! a2f0aaba262ea7568fe97072e2e4e19f  libgcc/config/nvptx/t-nvptx
! 7f1b12f2a052e2117fa03ce7626b2704  libgcc/config/or1k/lib1funcs.S
! 0588847124d3fe51c76ec4439a7afb14  libgcc/config/or1k/linux-unwind.h
! be0ca098d47ffed69cc52abd5263ba8e  libgcc/config/or1k/sfp-machine.h
! 7ee775207bbe4055b2381af0c6c69109  libgcc/config/or1k/t-or1k
! 550ce2a99b1f4c07fe763c29e6aa0748  libgcc/config/pa/fptr.c
! 04a992db7c0d56856fa5c774fc0f4038  libgcc/config/pa/gthr-dce.h
! d69fcc7917835f56522e34c8ce4392c0  libgcc/config/pa/hpux-unwind.h
! 836c302cadbc0d791e1369e55a27a66e  libgcc/config/pa/lib2funcs.S
! 5e991209194091b6704b9a8aa43fdede  libgcc/config/pa/linux-atomic.c
! 4b97431cb318dde7ac8de18aaa93b4ae  libgcc/config/pa/linux-unwind.h
! 6aa1c978826ac9573d2a2049f1c8861e  libgcc/config/pa/milli64.S
! d28592b5420bea6238cef27b62037ce2  libgcc/config/pa/pa64-hpux-lib.h
! 7414dcde650ea3f4fafa8501ce1b4050  libgcc/config/pa/quadlib.c
! 321129560bb803ddf655636bd9274090  libgcc/config/pa/stublib.c
  8a3964d4f1eddb14d9260a0a72a23493  libgcc/config/pa/t-hpux
  73420715a92f162a61d33bbfbe7c4dee  libgcc/config/pa/t-hpux10
  3e293a3e5a4bcd16fb9846c60502af9b  libgcc/config/pa/t-linux
*************** afb534bb9a7b7bbdb6af10009af385eb  libgcc
*** 81182,81396 ****
  3a7526d23d38b3c358e838a89cf3ad94  libgcc/config/pa/t-openbsd
  4c55604fec5e632606f19c2f176f1a6c  libgcc/config/pa/t-pa64
  6b7616abedce76aaa866d73b08ea3a07  libgcc/config/pa/t-slibgcc-dwarf-ver
! d10fe9a660a74448971a38920560569f  libgcc/config/pa/t-slibgcc-hpux
  463a4121da251ad8e53013810a31914a  libgcc/config/pa/t-slibgcc-sjlj-ver
  964be72d0cacc353ffda1509b63add90  libgcc/config/pa/t-stublib
  a2a61a2b6f3c9d3e3bd8cae0b0eb845b  libgcc/config/pdp11/t-pdp11
! 261720b8cb332b5c6261b1c6101379f8  libgcc/config/pru/asri.c
! b014a591ed4bef6d3717f0e6cdc1e306  libgcc/config/pru/eqd.c
! a093c820a061387a9250ce4b1e56cdb8  libgcc/config/pru/eqf.c
! aaf07c8ff755dc760e23962fca5205d8  libgcc/config/pru/ged.c
! 9822f5da0f82ef7b42b5346c6831b42d  libgcc/config/pru/gef.c
! 02364e2d5b9ba8f56e68fc27a55e2038  libgcc/config/pru/gtd.c
! 7cae9292a9b8c9f1f7ac9067f9ed54a5  libgcc/config/pru/gtf.c
! ccfa3df2fc53c9b018726030ac7a35c0  libgcc/config/pru/led.c
! 081f85d244dc5a53eec5b1e52cdb1bba  libgcc/config/pru/lef.c
! df9e2a8b4a0fe784e425be5afe3dcfd9  libgcc/config/pru/lib2bitcountHI.c
! 3b30aa0140435ec6b20e8a6ef0a8c662  libgcc/config/pru/lib2divHI.c
! 7f1d6f45cb58656777aaa559b4753065  libgcc/config/pru/lib2divQI.c
! 628d8c1768d4a77812c9ef2ccfe038a7  libgcc/config/pru/lib2divSI.c
! 3f567106aa7b4109e143b136852f757f  libgcc/config/pru/libgcc-eabi.ver
! 90ba60fef97947f0ed5e9e46efcbd60d  libgcc/config/pru/ltd.c
! d4664c9505ca0d85cc0ed073fad567ea  libgcc/config/pru/ltf.c
! 42d8a6e514e65a784e77b2d140822874  libgcc/config/pru/mpyll.S
! 2106613752dc695ec901ed2d1b30a8ce  libgcc/config/pru/pru-abi.h
! ef6963ad950de3bc5cf1ccc84a91ff7c  libgcc/config/pru/pru-asm.h
! 2a718c95da351afa08e9cbad4cf9d5c3  libgcc/config/pru/pru-divmod.h
! 90a9e668276b28db7ed7efd3c1a0e2ee  libgcc/config/pru/sfp-machine.h
! b7584b976e66088ce53cfad8f41d72ad  libgcc/config/pru/t-pru
! 2c1f0875debda71927c06b36cfc33c5a  libgcc/config/riscv/atomic.c
  d61879f5ed9372bd52bba7f21bb79dbc  libgcc/config/riscv/crti.S
  0485c6e233af87295472bb7a9f2767e0  libgcc/config/riscv/crtn.S
! 2e081db5a78f51ddb6f452840c396bd0  libgcc/config/riscv/div.S
! 346ea4876c0a22516ef5e16a966d75f3  libgcc/config/riscv/linux-unwind.h
! cbf80eb3d75c7ad80fa3817c8d73964c  libgcc/config/riscv/muldi3.S
! d61c9066a2469317b35608dc3e8b55d7  libgcc/config/riscv/multi3.c
! c9b3f834e1e39b4388405334d62665ce  libgcc/config/riscv/riscv-asm.h
! fbc00df2504b9fe8ea8d7132673f0403  libgcc/config/riscv/save-restore.S
! 2c68046e279b14f32ada2ac7882ce60e  libgcc/config/riscv/sfp-machine.h
! 58fd6db5bcb1ee35d04b7b38b4c78984  libgcc/config/riscv/t-elf
  02fdd22ff5d39903f17ad235a8fe0f65  libgcc/config/riscv/t-elf32
  02fdd22ff5d39903f17ad235a8fe0f65  libgcc/config/riscv/t-elf64
  1f7860fd81aff60052a039b06a850a67  libgcc/config/riscv/t-softfp32
  e96d0afc94e59431832f4cff3a794bd8  libgcc/config/riscv/t-softfp64
! ed4e5b7cce7f5ecb2313dedb66c2f411  libgcc/config/rl78/adddi3.S
! 9432ea12ddd5bee275852e651cedd629  libgcc/config/rl78/anddi3.S
! b65e2b940b2cfe25d1e2dff23931dfa2  libgcc/config/rl78/bit-count.S
! e3f6fae8c61a98e7312ed266b7d1c894  libgcc/config/rl78/cmpsi2.S
! be0bf9187db4be7bb93c91020db16511  libgcc/config/rl78/divmodhi.S
! 142969bff44895ca47d6ad7583db2e8b  libgcc/config/rl78/divmodqi.S
! 9720bab1f2ad478e00d8368f93d7839e  libgcc/config/rl78/divmodsi.S
  63e9b57af30110b61c3221ba465e2c5b  libgcc/config/rl78/fpbit-sf.S
  9099dff71d89768f77ed3ef7908d4265  libgcc/config/rl78/fpmath-sf.S
! bf44db8940986034d6cf2e005910a4f5  libgcc/config/rl78/lib2div.c
! 7a17233a7ff1f63e6fe850a6f5e1477b  libgcc/config/rl78/lib2mul.c
! c58c5276299ba2c735f3a6bc97656126  libgcc/config/rl78/lib2shift.c
! e9ab3d4b4619889b8b77d322f48126fa  libgcc/config/rl78/lshrsi3.S
! 06737ab39fceeb4818ad0ba35b2396ad  libgcc/config/rl78/mulsi3.S
! 22e51719dfdfdcfe520436045ca47e0b  libgcc/config/rl78/rl78-divmod.h
! 2cbdfb272d8e99d3829eeb00b84c7331  libgcc/config/rl78/rl78-mul.h
! ce1a25142f1c0220a763302cab77044e  libgcc/config/rl78/signbit.S
! 4dba3538685ddfda1f27f7085dfff81c  libgcc/config/rl78/smaxdi3.S
! fe5eb6e71f7218f1693ff0eb5702f867  libgcc/config/rl78/smindi3.S
! 6ea6e5df785edd63fc706cd32faf5f8c  libgcc/config/rl78/subdi3.S
! 16fc49bd28d60e5deab630955904bbee  libgcc/config/rl78/t-rl78
! 0a3edc2a10bd70e5eae1b1671262f81b  libgcc/config/rl78/trampoline.S
! 45d39505f70543f4842048b2b59c7968  libgcc/config/rl78/umaxdi3.S
! 8cba96398177f3602b4250e9aaba7548  libgcc/config/rl78/umindi3.S
  760912f22e59adbfe0317ee3df1b4849  libgcc/config/rl78/vregs.h
! cda1e0ba4e6ded4b9854282a046ea6fc  libgcc/config/rs6000/_divkc3.c
! 8d6024668314c58fca76677939b0ff9b  libgcc/config/rs6000/_mulkc3.c
! c35daf2980f00de4c784c10771172626  libgcc/config/rs6000/_powikf2.c
! 08458fd0f69bdb5a4c432aaa24e468a6  libgcc/config/rs6000/aix-unwind.h
  737841f917469789a5f925e6f08da1de  libgcc/config/rs6000/aixinitfini.c
! dacb5e6066904f146429659b8339ede8  libgcc/config/rs6000/atexit.c
! 8a422d790b1cfcd8e14b7aa50c07325b  libgcc/config/rs6000/crtcxa.c
! c3cbf30280c6d058252510328f1e11d6  libgcc/config/rs6000/crtdbase.S
! bb740d841e787a751dd37efdbb04332b  libgcc/config/rs6000/crtresfpr.S
! 839f4261d7c01a3f041b06c32e635cd7  libgcc/config/rs6000/crtresgpr.S
! 13d48b3a29966769483c36cba8f7dd71  libgcc/config/rs6000/crtrestvr.S
! 9fcebb7050247ac12e5becce601f59be  libgcc/config/rs6000/crtresxfpr.S
! 4af04ae86197c8f97a6aceed7d382402  libgcc/config/rs6000/crtresxgpr.S
! cb22a4154c427749b3163c0d207040d2  libgcc/config/rs6000/crtsavevr.S
! f49fafab320e91638198944355e64d6a  libgcc/config/rs6000/crtsavfpr.S
! 093d77fdae326ef5085fc60adead3cb8  libgcc/config/rs6000/crtsavgpr.S
! bdb733f4969ff969c8acdd2749c75c4e  libgcc/config/rs6000/cxa_atexit.c
! 7f94a1e017374b1ad7120b8f9dbf3888  libgcc/config/rs6000/cxa_finalize.c
! e65a6c9a106a7b8939c6e938652a3851  libgcc/config/rs6000/darwin-asm.h
! ed1cfb4e1a1a09944e98da6d298a77c2  libgcc/config/rs6000/darwin-crt2.c
! 08965b3e6981c9dacaaba5b556a4162f  libgcc/config/rs6000/darwin-fallback.c
! 24312554484d94e90b93512226daf16c  libgcc/config/rs6000/darwin-fpsave.S
! 90565ab30af7e879a868e9f5a8c94da7  libgcc/config/rs6000/darwin-gpsave.S
! 9e47d2202bb138598c9692e6a07853b8  libgcc/config/rs6000/darwin-tramp.S
! 3a1eeee0a3943608da263936af2bf7ed  libgcc/config/rs6000/darwin-unwind.h
! 2b7deab1e918f6a0572e9ff28108cbf7  libgcc/config/rs6000/darwin-vecsave.S
! 24a345b852eb8311d45366e92dca1183  libgcc/config/rs6000/darwin-world.S
! 50c19154a70a963372a1c7cb84d08b0f  libgcc/config/rs6000/e500crtres32gpr.S
! ec2c005666b5d6ec0f4bed81292225d5  libgcc/config/rs6000/e500crtres64gpr.S
! 792cb7f53229e51c2ee934f8c63877ba  libgcc/config/rs6000/e500crtres64gprctr.S
! 665a3a3a53b71d73ca6dc0a29c8e6ef2  libgcc/config/rs6000/e500crtrest32gpr.S
! c7b8a912e7d5cf88aeb799959c303e25  libgcc/config/rs6000/e500crtrest64gpr.S
! c0d60c7280cf7427d40a5e010f534a98  libgcc/config/rs6000/e500crtresx32gpr.S
! c282327b09230b403e0bca99b7142fee  libgcc/config/rs6000/e500crtresx64gpr.S
! 06fefbb595c2ce2d0973bb98eafd434b  libgcc/config/rs6000/e500crtsav32gpr.S
! 676f0a01fb79fc63572a95cf109af0fb  libgcc/config/rs6000/e500crtsav64gpr.S
! 870a77c0a1095e07f06c74b6c13412cf  libgcc/config/rs6000/e500crtsav64gprctr.S
! 18db2a0275110d14bce149d57a2fb587  libgcc/config/rs6000/e500crtsavg32gpr.S
! 0c9bcdd839d643f450700920d699f202  libgcc/config/rs6000/e500crtsavg64gpr.S
! b74efe38c246f7162a1b4fd16414f704  libgcc/config/rs6000/e500crtsavg64gprctr.S
! 536d425b90e20f63c978f0c4f42307bd  libgcc/config/rs6000/eabi-ci.S
! df7d2606febddd207a271a378ded92b8  libgcc/config/rs6000/eabi-cn.S
! 89de9eb6d6934fa0dd8f91183911e423  libgcc/config/rs6000/eabi.S
! b31912d693d7f3784be97ccc0c414ca6  libgcc/config/rs6000/exit.h
! c3b9cd750eeeea5e22d9c32c5a2e1cfe  libgcc/config/rs6000/extendkftf2-sw.c
! d523619128e9055299ff111b889dc019  libgcc/config/rs6000/fixkfti.c
! 1321ce11d383ebca849a5eef0ce21b0b  libgcc/config/rs6000/fixunskfti.c
! 3338ec2d3703ba11c01f06cebd5bda40  libgcc/config/rs6000/float128-hw.c
! 119178bc205a5e5300165eb4aa9733f9  libgcc/config/rs6000/float128-ifunc.c
  e30148cb7f3ce0ea8ba55383e38c66df  libgcc/config/rs6000/float128-sed
  ae9fbb2d21d9ac45513f6d3df94f3d59  libgcc/config/rs6000/float128-sed-hw
! b28b9481ee38087bf8955be7a2a75bcf  libgcc/config/rs6000/floattikf.c
! e616799e792b120d6a774b9f6bf6fa48  libgcc/config/rs6000/floatuntikf.c
! 711453f6e69bf4dde630ce9d60869b8c  libgcc/config/rs6000/freebsd-unwind.h
! 6d0cb0b4b4fd2afb5fa1410e83034906  libgcc/config/rs6000/gthr-aix.h
! 332eb1d6f310c56360dc5745efec7a77  libgcc/config/rs6000/ibm-ldouble-format
! 8d944f91915e7c2d5fe3becce1638a91  libgcc/config/rs6000/ibm-ldouble.c
  13bc252ed5254cf124822256760c6df0  libgcc/config/rs6000/libgcc-aix-cxa.ver
! 177e1dc8ba1af43a128de72b9e05e125  libgcc/config/rs6000/libgcc-darwin.10.4.ver
! d4d5f5b81c74680a9240de11f79d30d5  libgcc/config/rs6000/libgcc-darwin.10.5.ver
! 1bde2006a0e00257bde24aaab57e46c4  libgcc/config/rs6000/libgcc-glibc.ver
  7aa6f4e782960be3e2b43998ef395330  libgcc/config/rs6000/libgcc-ibm-ldouble.ver
! 425f6122379f6fcd2b36bff1675a5f8e  libgcc/config/rs6000/linux-unwind.h
! 237ea32646915bae5aec8573f040cd05  libgcc/config/rs6000/morestack.S
! fe7734c8ad21365a50e30f3f1bf88283  libgcc/config/rs6000/on_exit.c
! e3a2c9b16aa789db9529ad5e040901f9  libgcc/config/rs6000/ppc64-fp.c
! 300ab3728f3c6f4ec37d77b574e1a2c1  libgcc/config/rs6000/quad-float128.h
! 3c85dcbf6a24ea68ae3fade2c10aea7b  libgcc/config/rs6000/sfp-exceptions.c
  41c3896f925900fa6b81c0215a60075f  libgcc/config/rs6000/sfp-machine.h
! d369e4d411337e76ab7f3962f18daaf8  libgcc/config/rs6000/sol-ci.S
! 7a016ac4b0377f21c143b16228e9d317  libgcc/config/rs6000/sol-cn.S
! 8e65197842ba39fd658038728475e572  libgcc/config/rs6000/t-aix-cxa
  0d6637a7e112c021e7ce371918c7659c  libgcc/config/rs6000/t-crtstuff
  bc91baf0523c8475334ca80d6ff265c4  libgcc/config/rs6000/t-darwin
  a0014912b4b08cfbe887d9945460e370  libgcc/config/rs6000/t-darwin64
! 19d31beebe5294cd8c5cfcc24238491a  libgcc/config/rs6000/t-e500v1-fp
! 39fa5d059c21ba3069a744705b18a95b  libgcc/config/rs6000/t-e500v2-fp
! f9c993d20fe30bd0ec55ec5caf62518d  libgcc/config/rs6000/t-float128
  ea267a427a7598d5070e338c8995363d  libgcc/config/rs6000/t-float128-hw
! bb5a49088ec4a03d7ac246928b5601eb  libgcc/config/rs6000/t-freebsd
  4976aac1da0b181cf133fe8ef7243000  libgcc/config/rs6000/t-freebsd64
  565e9d6288ad496063af26b57e5fa264  libgcc/config/rs6000/t-ibm-ldouble
! 4beb07031560fabcc472f8b73c2a29aa  libgcc/config/rs6000/t-linux
  30306c74cecde65fc2af8f03fce1aa7d  libgcc/config/rs6000/t-lynx
  ad6ae6684d4dec9ddd78efad67d1af4b  libgcc/config/rs6000/t-netbsd
! d7a240410399b38f142973a475855f0b  libgcc/config/rs6000/t-ppc64-fp
  bd7ceb31787a37d9cb144c41d41acfb3  libgcc/config/rs6000/t-ppccomm
  89dc5367808582c503f03a34193e467b  libgcc/config/rs6000/t-savresfgpr
! 0f9c718a98e81cd57e33ab3d77c56464  libgcc/config/rs6000/t-slibgcc-aix
  1d9dab8390b84ff0de504beefb72ce61  libgcc/config/rs6000/t-stack-rs6000
! b4ac6fdcabd92e243c363ca034de620d  libgcc/config/rs6000/tramp.S
! b42aa9a6238fe7f872fb073e993313ad  libgcc/config/rs6000/trunctfkf2-sw.c
! 129567bae53320a05fd57113ec3988a5  libgcc/config/rx/rx-abi-functions.c
! 165bc6ac5947bc732927a0539a4a4122  libgcc/config/rx/rx-abi.h
  da7bc70013c60be91cf9f085fed52f1a  libgcc/config/rx/rx-lib.h
! 881692430f9be3407d45194e6c0cd67c  libgcc/config/rx/t-rx
! abc7153e8f3a09c6a503a279e93f227a  libgcc/config/s390/32/_fixdfdi.c
! 34dfb551eeb7bc60486e10b2e929de97  libgcc/config/s390/32/_fixsfdi.c
! 8f018a35c1c11214a1b7e782e03f1547  libgcc/config/s390/32/_fixtfdi.c
! 9db9968bbbd22d8062b42c557666612d  libgcc/config/s390/32/_fixunsdfdi.c
! ec6388b196294cd7737613cde06c44bf  libgcc/config/s390/32/_fixunssfdi.c
! e604f35cf3f0a52e0bf046b61c82b559  libgcc/config/s390/32/_fixunstfdi.c
  6101649604e2b3fdd6179e1aa53066bf  libgcc/config/s390/32/t-floattodi
! 216631d83544254de5a59cf909c5d315  libgcc/config/s390/gthr-tpf.h
! 639b2134df52e7679a8805b3e49e3d45  libgcc/config/s390/libgcc-glibc.ver
! 675bc50dd03b92c58fb524cd29e716f5  libgcc/config/s390/linux-unwind.h
! 05001902b8b768bb964bfcd8a4fe57c8  libgcc/config/s390/morestack.S
  c150e28c734710584eba8e77d2ff5105  libgcc/config/s390/t-crtstuff
  35a77f8c50ecf16802e00e647ad94026  libgcc/config/s390/t-linux
  26d353eea9229af01124cc46b2e0cebd  libgcc/config/s390/t-stack-s390
  a5218871642ae69c55b0e826c41f3798  libgcc/config/s390/t-tpf
! 807723c672cc5d741e8fc5e670a301ee  libgcc/config/s390/tpf-unwind.h
! 6c778fe61ed0a1fcb7216d6ffdf31a92  libgcc/config/score/crti.S
! 771fa16b98ff34565bd43f34a50ea7ab  libgcc/config/score/crtn.S
  5d570ff5cd40fc6fba8876bdebd59a6b  libgcc/config/score/sfp-machine.h
! 4cfa727811b20989dc93b1f82531f17b  libgcc/config/sh/crt.h
! 4ade3312203a9da7ac0e58d6a5d5e38a  libgcc/config/sh/crt1.S
! 28e8689348449842db88ef7ee18e6c24  libgcc/config/sh/crti.S
! 33658379044f4a778bb23cf7f135a957  libgcc/config/sh/crtn.S
! 9a01a553395e7d4e521c9250a7bae509  libgcc/config/sh/lib1funcs-4-300.S
! 0ef8dd6f5058b02a217344ba68509781  libgcc/config/sh/lib1funcs-Os-4-200.S
! 2d7928ff153931b2524680a9cfe9904a  libgcc/config/sh/lib1funcs.S
! 0581a991448b9e2824daa82c58590abd  libgcc/config/sh/lib1funcs.h
  68ddef94ef228a2e500c6f84ca5c5f73  libgcc/config/sh/libgcc-excl.ver
! dcb30232658f73934221a534264d588a  libgcc/config/sh/libgcc-glibc.ver
! 45682918075893af0861988ae69f788a  libgcc/config/sh/linux-atomic.c
! f6d9d1183d93aa6a7806ca1dc21d92b6  libgcc/config/sh/linux-unwind.h
  d915cb58faa1ad2108733b662853057e  libgcc/config/sh/t-linux
  be1b06de574a22c34d2cf93d2d68a4f1  libgcc/config/sh/t-netbsd
! 5bbbb7cb84419dcba77541fb9ac1930e  libgcc/config/sh/t-sh
  00d4a30e4ed4a68cd6ec53feb398914b  libgcc/config/sh/t-superh
! 9727c64ead1a90589735cbd2dee185d7  libgcc/config/sol2/crtp.c
! a7a8ced15bd2ee4eab99c712cf244c27  libgcc/config/sol2/crtpg.c
  5e87cfc189f02028b142950527a73c54  libgcc/config/sol2/gmon.c
! 99c6512572c2382107ee09d07b42b46f  libgcc/config/sol2/t-sol2
! 882e1bdd0856406792ca75bf00f6d5ae  libgcc/config/sparc/crtfastmath.c
! 933d2e305019303ddb2cc24a077384f0  libgcc/config/sparc/crti.S
! 3f2a0f89c99d65462e02a8314e748c58  libgcc/config/sparc/crtn.S
  b2a26791cd6002e4af29a7fa32510b3b  libgcc/config/sparc/lb1spc.S
! cf8f9d89901d7340abc724caa2b9f4fe  libgcc/config/sparc/libgcc-glibc.ver
! a30ab9b25f0f6cbf295bf1eaa29cb301  libgcc/config/sparc/linux-unwind.h
! c7b5e0d7108fb30ddfa47fafd1df4451  libgcc/config/sparc/sol2-c1.S
! 368aba71c8e2540de94027ba3236b926  libgcc/config/sparc/sol2-unwind.h
  ef153c3f92e3dee09716d833736683eb  libgcc/config/sparc/t-linux
  180e9bc0e471bafa1c561931dc073ebe  libgcc/config/sparc/t-linux64
  dccc96847305efc8c465f1dedc591c23  libgcc/config/sparc/t-softmul
--- 87142,87361 ----
  3a7526d23d38b3c358e838a89cf3ad94  libgcc/config/pa/t-openbsd
  4c55604fec5e632606f19c2f176f1a6c  libgcc/config/pa/t-pa64
  6b7616abedce76aaa866d73b08ea3a07  libgcc/config/pa/t-slibgcc-dwarf-ver
! bd9fe0848657120224cd1875ab81c2a3  libgcc/config/pa/t-slibgcc-hpux
  463a4121da251ad8e53013810a31914a  libgcc/config/pa/t-slibgcc-sjlj-ver
  964be72d0cacc353ffda1509b63add90  libgcc/config/pa/t-stublib
  a2a61a2b6f3c9d3e3bd8cae0b0eb845b  libgcc/config/pdp11/t-pdp11
! 16bc2eb972c773a3c8d3ad6754359686  libgcc/config/pru/asri.c
! 02faa34c8a291d8082fb135d5fddc534  libgcc/config/pru/eqd.c
! 2f3d9f574572012e8a6f63127fe7a524  libgcc/config/pru/eqf.c
! c6b8dc1d4c9c6b6beb449bfc3684d801  libgcc/config/pru/ged.c
! 8af3a836c033ecded283ae4960313fd7  libgcc/config/pru/gef.c
! 55aee3307fdd11f24834cc9708af45ff  libgcc/config/pru/gtd.c
! 851f67cd2ceeb35f5feb20423ab8a8fe  libgcc/config/pru/gtf.c
! c60cc40c73da45f82b255bb231742e95  libgcc/config/pru/led.c
! 47ae1077ad419234eb5c744b37f00b7f  libgcc/config/pru/lef.c
! b0896b680af8871aa3f8055e976eb204  libgcc/config/pru/lib2bitcountHI.c
! 340ac3efa15fd44ed9c33de7ec2fecc7  libgcc/config/pru/lib2divHI.c
! 0573a2acc6953f98753c23aee3f29206  libgcc/config/pru/lib2divQI.c
! 0aecc2cc98bedd7f6d7767f0abe76a54  libgcc/config/pru/lib2divSI.c
! 42a4a8173cc9c3523305471d24830261  libgcc/config/pru/libgcc-eabi.ver
! ec35ce2bbda6827824ffc3c05009a4e8  libgcc/config/pru/ltd.c
! 0dd039e0004438db8b3afacdb2f9ad79  libgcc/config/pru/ltf.c
! 349b73cc9f9d84dedc96b1b43b4f39b6  libgcc/config/pru/mpyll.S
! 7aeabb0cb847ab15d8ffcc4511c6b624  libgcc/config/pru/pru-abi.h
! 308e0dde981c374f419bea7a2416dc33  libgcc/config/pru/pru-asm.h
! 80218936495d180ad5806af654ae69dd  libgcc/config/pru/pru-divmod.h
! 7c45f05f4c834b8709dc16b7756ae613  libgcc/config/pru/sfp-machine.h
! 7df37c758209eb36c234ae7080d60b69  libgcc/config/pru/t-pru
! 57eeca8e717772ac1d7810b93b905b24  libgcc/config/riscv/atomic.c
  d61879f5ed9372bd52bba7f21bb79dbc  libgcc/config/riscv/crti.S
  0485c6e233af87295472bb7a9f2767e0  libgcc/config/riscv/crtn.S
! 36212e1f9a332867c979118b4edd1821  libgcc/config/riscv/div.S
! a40588694a84c949728cad9d80c882cc  libgcc/config/riscv/linux-unwind.h
! 55741074a83dcec597d24becf08808af  libgcc/config/riscv/muldi3.S
! 8bfa30c9ee049a0fd7f62d080f21f090  libgcc/config/riscv/multi3.c
! 0744ea89f672820e59873c09e9d10b1d  libgcc/config/riscv/riscv-asm.h
! fb435631050f85c4c37c35929ffe580e  libgcc/config/riscv/save-restore.S
! 1a3f0dc3144bd4d79e175d5e3c84c799  libgcc/config/riscv/sfp-machine.h
! c42f201dbf0dcdfa26d4e52583c32f53  libgcc/config/riscv/t-elf
  02fdd22ff5d39903f17ad235a8fe0f65  libgcc/config/riscv/t-elf32
  02fdd22ff5d39903f17ad235a8fe0f65  libgcc/config/riscv/t-elf64
  1f7860fd81aff60052a039b06a850a67  libgcc/config/riscv/t-softfp32
  e96d0afc94e59431832f4cff3a794bd8  libgcc/config/riscv/t-softfp64
! e4ea451be1a8f34096b64086b63c5f9f  libgcc/config/rl78/adddi3.S
! d885b0cd9a2b208ca9b87fac975c12bf  libgcc/config/rl78/anddi3.S
! bcded3fa4b8c3223ab57fbb7ff78341e  libgcc/config/rl78/bit-count.S
! 24fbb15811b6fcf36e251b0bee837dcf  libgcc/config/rl78/cmpsi2.S
! 12b3c68df3cec9b5bedfc304606eaa78  libgcc/config/rl78/divmodhi.S
! d345e0aeab6f547de70a0e0e525647aa  libgcc/config/rl78/divmodqi.S
! cc0e373f23d172213a5a8e8e04c954bf  libgcc/config/rl78/divmodsi.S
  63e9b57af30110b61c3221ba465e2c5b  libgcc/config/rl78/fpbit-sf.S
  9099dff71d89768f77ed3ef7908d4265  libgcc/config/rl78/fpmath-sf.S
! 362df0e3a8615ee0ccd830d37ba6ee64  libgcc/config/rl78/lib2div.c
! 22ac86771ad729a3fb9d8c1dd9f99f37  libgcc/config/rl78/lib2mul.c
! 6d72d92b81366bd466e0e4c67896201e  libgcc/config/rl78/lib2shift.c
! b1663407bd0465cc2c59903df8ec1b0f  libgcc/config/rl78/lshrsi3.S
! 344f40aa0f7a3248304f69c4b0546fb5  libgcc/config/rl78/mulsi3.S
! 40c2f682474da7dc0891bac92814b30a  libgcc/config/rl78/rl78-divmod.h
! 0c6aad26da1bbc2e81aa3a90af67b440  libgcc/config/rl78/rl78-mul.h
! e0e86681141eac28cde741aa997db111  libgcc/config/rl78/signbit.S
! bb3e5cbf06512776938a411dcbc69b07  libgcc/config/rl78/smaxdi3.S
! 9aa3583c4c5b13f0139fd0294b38d5bc  libgcc/config/rl78/smindi3.S
! b0c7843e9995325dddcbd2d8dc9d07c5  libgcc/config/rl78/subdi3.S
! fa87f5631665dfb19b22ce00cefa575b  libgcc/config/rl78/t-rl78
! ff438b218b166fecb413003761f2e5d7  libgcc/config/rl78/trampoline.S
! 6ced233b2fa8f5512137ff3b8d84c2fb  libgcc/config/rl78/umaxdi3.S
! dff551ddfd86e662bfc89e7000afac3c  libgcc/config/rl78/umindi3.S
  760912f22e59adbfe0317ee3df1b4849  libgcc/config/rl78/vregs.h
! ce86bc2998d12940d55472b396ad21b6  libgcc/config/rs6000/_dd_to_kf.c
! d24cf435c2555082ab6069e0ef958fc5  libgcc/config/rs6000/_divkc3.c
! f7082ba4dad8776742ae5740fc050d1d  libgcc/config/rs6000/_kf_to_dd.c
! e19f27032f2eda0ab0b748a5245f8ca9  libgcc/config/rs6000/_kf_to_sd.c
! 855da2e76ecb1cbff7cc2aa9725a8341  libgcc/config/rs6000/_kf_to_td.c
! 4bd3007ff561c51112e07e242156c5c6  libgcc/config/rs6000/_mulkc3.c
! a06a51d77575e5c2f566830b1e78182e  libgcc/config/rs6000/_powikf2.c
! 976302bb93b29cf49e6568390e17cd42  libgcc/config/rs6000/_sd_to_kf.c
! bd84223cf6456f43ca90c0f7ba48775f  libgcc/config/rs6000/_td_to_kf.c
! 06420ab7fae01b2a0f624c893525e75d  libgcc/config/rs6000/aix-unwind.h
  737841f917469789a5f925e6f08da1de  libgcc/config/rs6000/aixinitfini.c
! 574ad842b79f8d411c428fbf0f85b976  libgcc/config/rs6000/atexit.c
! 43f04a56823b828abb6ad9fb97dd5b47  libgcc/config/rs6000/crtcxa.c
! ab91f0ebe4e2ea7af49e57ddfc21a956  libgcc/config/rs6000/crtdbase.S
! cdec115c0b93a6e58b416b76153d6fd2  libgcc/config/rs6000/crtresfpr.S
! 7762338b27449bc6caeccc37d74f6284  libgcc/config/rs6000/crtresgpr.S
! 85d5acb6292050366d3978a0e1ebff3e  libgcc/config/rs6000/crtrestvr.S
! 96e931828af6738b0d512f4c85833a6c  libgcc/config/rs6000/crtresxfpr.S
! e71e94d1f7e88dd56bc0e0003d97e2db  libgcc/config/rs6000/crtresxgpr.S
! ed6e1f9a7bdce60ac6444316b2f9ed55  libgcc/config/rs6000/crtsavevr.S
! 06706719d55e75ecbd89186ffdfe0c2d  libgcc/config/rs6000/crtsavfpr.S
! 3d273aa109dd8b0cbc70dafc3447a988  libgcc/config/rs6000/crtsavgpr.S
! d188d7c4b7c90f52039bbe08a50cb06e  libgcc/config/rs6000/cxa_atexit.c
! 0dd909490ca2a1f12c7044dabd6dac2b  libgcc/config/rs6000/cxa_finalize.c
! 5fc9e83c6c114c23253e08ec83529dc6  libgcc/config/rs6000/darwin-asm.h
! d5b60bcd0b5d4c8a3349e4ff63184384  libgcc/config/rs6000/darwin-crt2.c
! d1496754c398699ae5642c621b70e3a8  libgcc/config/rs6000/darwin-fallback.c
! 360e6a357a8ba9fa22c6a646b9f1c92f  libgcc/config/rs6000/darwin-fpsave.S
! 89e0442bcc9488dd7519b41a33939ca2  libgcc/config/rs6000/darwin-gpsave.S
! 3d08c39761aa440d1f8e40aea0f551a6  libgcc/config/rs6000/darwin-tramp.S
! 043dee55b769ce7c9edd472bba05e727  libgcc/config/rs6000/darwin-unwind.h
! a1196477a71bf991d0281117a6271a26  libgcc/config/rs6000/darwin-vecsave.S
! 1546ae2396778ca2dfcf90348833df6b  libgcc/config/rs6000/darwin-world.S
! 32c1c0146c24d8c2139a3072c7bf4cda  libgcc/config/rs6000/e500crtres32gpr.S
! c213f0a29ca099361dbd05cefa36e41d  libgcc/config/rs6000/e500crtres64gpr.S
! 9d6947355fd502cc811c2d03b8134ea9  libgcc/config/rs6000/e500crtres64gprctr.S
! 3e1e46b41fcc98c0d704a0cd1f154c1b  libgcc/config/rs6000/e500crtrest32gpr.S
! 3adcdb4e98b1e525449ab4eaaddb3289  libgcc/config/rs6000/e500crtrest64gpr.S
! 0e27962b71045b826e26a63e9a77aeef  libgcc/config/rs6000/e500crtresx32gpr.S
! a6a46c82f5c6ebc430f4fca0a22f81ab  libgcc/config/rs6000/e500crtresx64gpr.S
! fddeef3a2fab788782651cde9e82f350  libgcc/config/rs6000/e500crtsav32gpr.S
! 5da4593c344861549ae679d1c9db2b3d  libgcc/config/rs6000/e500crtsav64gpr.S
! 3e7d338b0442bfd41889c826d250117f  libgcc/config/rs6000/e500crtsav64gprctr.S
! b16a90cf85f8a39271de9f4b946f5676  libgcc/config/rs6000/e500crtsavg32gpr.S
! a55595bde7fc7cd55902e06c54cb41be  libgcc/config/rs6000/e500crtsavg64gpr.S
! b450330899c6e24cd691150226c072f1  libgcc/config/rs6000/e500crtsavg64gprctr.S
! 1688196394ee035372ce84d059d823f0  libgcc/config/rs6000/eabi-ci.S
! 4a0765300df49a2b1ceea4f8c6856bd5  libgcc/config/rs6000/eabi-cn.S
! 82fd725508a6896eaa6ba33811fde19d  libgcc/config/rs6000/eabi.S
! 2908be3e778544e8886ecac6076391a2  libgcc/config/rs6000/exit.h
! f777a591d2910433fd27e9f637d106f0  libgcc/config/rs6000/extendkftf2-sw.c
! b41719db437bf2b49ec85ac04511dd02  libgcc/config/rs6000/fixkfti.c
! 3506a60d738cbef04c14ace9b7a0267c  libgcc/config/rs6000/fixunskfti.c
! e5dc92868194419efbeccf574dd92a88  libgcc/config/rs6000/float128-hw.c
! f006410331aff21089212797607534a8  libgcc/config/rs6000/float128-ifunc.c
  e30148cb7f3ce0ea8ba55383e38c66df  libgcc/config/rs6000/float128-sed
  ae9fbb2d21d9ac45513f6d3df94f3d59  libgcc/config/rs6000/float128-sed-hw
! 7f6893e8129057a75a2003e4d93e38fb  libgcc/config/rs6000/floattikf.c
! a2264a9984788900a10e4c27c9d555ec  libgcc/config/rs6000/floatuntikf.c
! da4834ebce5a6c26f26a7c213704493b  libgcc/config/rs6000/freebsd-unwind.h
! 62e0c75a7f98be33cf79050869b1d97a  libgcc/config/rs6000/gthr-aix.h
! c64f972d8d826ca87b2b4bfa0194b52c  libgcc/config/rs6000/ibm-ldouble-format
! 94ec58b1250e245aaa0d01eb1e72cb8a  libgcc/config/rs6000/ibm-ldouble.c
  13bc252ed5254cf124822256760c6df0  libgcc/config/rs6000/libgcc-aix-cxa.ver
! 5efce4f8d12233cb085c86ed4a1a9c1f  libgcc/config/rs6000/libgcc-darwin.10.4.ver
! be6945136f704e95628cd3a045548b80  libgcc/config/rs6000/libgcc-darwin.10.5.ver
! e6f581502a95454aac51fc58de92ba4b  libgcc/config/rs6000/libgcc-glibc.ver
  7aa6f4e782960be3e2b43998ef395330  libgcc/config/rs6000/libgcc-ibm-ldouble.ver
! bcdb179fc7c4ebd3795034bfcf3aa835  libgcc/config/rs6000/linux-unwind.h
! 8d756df59b76dc202862e814550eb69a  libgcc/config/rs6000/morestack.S
! b1097f91f0259f8e40df0d4c5048a342  libgcc/config/rs6000/on_exit.c
! 28c5b89952e7605fa7e41d8ce7d2a8e4  libgcc/config/rs6000/quad-float128.h
! 351bded3f7805a270b302c24435d2417  libgcc/config/rs6000/sfp-exceptions.c
  41c3896f925900fa6b81c0215a60075f  libgcc/config/rs6000/sfp-machine.h
! f91deeea850ca47563c4cc44755a0671  libgcc/config/rs6000/sol-ci.S
! aaa842a435553d5edd10b55f97334012  libgcc/config/rs6000/sol-cn.S
! 3fa6bf8673b3a7fa2278aeb2fe1824f4  libgcc/config/rs6000/t-aix-cxa
  0d6637a7e112c021e7ce371918c7659c  libgcc/config/rs6000/t-crtstuff
  bc91baf0523c8475334ca80d6ff265c4  libgcc/config/rs6000/t-darwin
  a0014912b4b08cfbe887d9945460e370  libgcc/config/rs6000/t-darwin64
! a8d6ad9840390eea8e954fb4736e88ff  libgcc/config/rs6000/t-e500v1-fp
! 5679524aee4f23d17957328c5b4336bd  libgcc/config/rs6000/t-e500v2-fp
! 8bdb2c65e891079d13912631cc445b83  libgcc/config/rs6000/t-float128
  ea267a427a7598d5070e338c8995363d  libgcc/config/rs6000/t-float128-hw
! 143db6bdc0885492dafd80b1c1b96795  libgcc/config/rs6000/t-freebsd
  4976aac1da0b181cf133fe8ef7243000  libgcc/config/rs6000/t-freebsd64
  565e9d6288ad496063af26b57e5fa264  libgcc/config/rs6000/t-ibm-ldouble
! ecf2c7e327e9df4e94343352b59b9fd2  libgcc/config/rs6000/t-linux
  30306c74cecde65fc2af8f03fce1aa7d  libgcc/config/rs6000/t-lynx
  ad6ae6684d4dec9ddd78efad67d1af4b  libgcc/config/rs6000/t-netbsd
! a0014912b4b08cfbe887d9945460e370  libgcc/config/rs6000/t-ppc64-fp
  bd7ceb31787a37d9cb144c41d41acfb3  libgcc/config/rs6000/t-ppccomm
  89dc5367808582c503f03a34193e467b  libgcc/config/rs6000/t-savresfgpr
! c75c5effc5cd7a76699e9943b8091e5d  libgcc/config/rs6000/t-slibgcc-aix
  1d9dab8390b84ff0de504beefb72ce61  libgcc/config/rs6000/t-stack-rs6000
! 6b75214ea1ac8bc215a4f44cc0b48907  libgcc/config/rs6000/tramp.S
! de65c85826f5a7784b045224e5bc84f5  libgcc/config/rs6000/trunctfkf2-sw.c
! 01c5eab8d812eeb06c203242480cc096  libgcc/config/rx/rx-abi-functions.c
! 2e8fe0faed7e6a917f13be140b6a0bba  libgcc/config/rx/rx-abi.h
  da7bc70013c60be91cf9f085fed52f1a  libgcc/config/rx/rx-lib.h
! 443eaaa66e0fd3f747bbc724143582e2  libgcc/config/rx/t-rx
! 11a32fe2e525e9bf335d5dff0052af57  libgcc/config/s390/32/_fixdfdi.c
! 508ac916a9af9fdcdd8658b8bc060edf  libgcc/config/s390/32/_fixsfdi.c
! eadd1e48f3ea5c382561c5a9f692e13e  libgcc/config/s390/32/_fixtfdi.c
! e7d0d1c7b967e52ea0635e26ccc13e2e  libgcc/config/s390/32/_fixunsdfdi.c
! bb39b6199dbd5d35299f2329e1e4baed  libgcc/config/s390/32/_fixunssfdi.c
! 928d2fe11de7cc1a7401ec87a737bf7f  libgcc/config/s390/32/_fixunstfdi.c
  6101649604e2b3fdd6179e1aa53066bf  libgcc/config/s390/32/t-floattodi
! d25717099be4e7eb156ab382cd3e02e8  libgcc/config/s390/gthr-tpf.h
! de25a44cfed734f64bbc10736a26c499  libgcc/config/s390/libgcc-glibc.ver
! 80bbea6f52983bfd78fcf2dcc1da108d  libgcc/config/s390/linux-unwind.h
! 522e6aa11521990091736c08d428437a  libgcc/config/s390/morestack.S
  c150e28c734710584eba8e77d2ff5105  libgcc/config/s390/t-crtstuff
  35a77f8c50ecf16802e00e647ad94026  libgcc/config/s390/t-linux
  26d353eea9229af01124cc46b2e0cebd  libgcc/config/s390/t-stack-s390
  a5218871642ae69c55b0e826c41f3798  libgcc/config/s390/t-tpf
! 2281740894a16919da6479d7154ece71  libgcc/config/s390/tpf-unwind.h
! c02fb109f0bbfc6ca905ddd0464d01ed  libgcc/config/score/crti.S
! d9ec990b74b11250bf09f6cc48d6b8c9  libgcc/config/score/crtn.S
  5d570ff5cd40fc6fba8876bdebd59a6b  libgcc/config/score/sfp-machine.h
! c1f8a0e89ee1f61afad7fbdf2a076b2d  libgcc/config/sh/crt.h
! 66254931a668431a15fb2641373c6a39  libgcc/config/sh/crt1.S
! c036eb8a868884dc335ea8118ab5b441  libgcc/config/sh/crti.S
! 3da4ef657bb384731d57f23b4483c5b1  libgcc/config/sh/crtn.S
! ad30323d4da708c5a2a88e3af4675e83  libgcc/config/sh/lib1funcs-4-300.S
! e149abb372f6039bc007bf6a3b8e6480  libgcc/config/sh/lib1funcs-Os-4-200.S
! 66ac293f478b9e0a220e14ef54386a6d  libgcc/config/sh/lib1funcs.S
! 6f65afc205edae910d6c40b5dc98b5ac  libgcc/config/sh/lib1funcs.h
  68ddef94ef228a2e500c6f84ca5c5f73  libgcc/config/sh/libgcc-excl.ver
! 0475134b29a371e3ac11de522c13adab  libgcc/config/sh/libgcc-glibc.ver
! e2de498591422d4989d428d6debac2cc  libgcc/config/sh/linux-atomic.c
! 31667c7cf602e7e06b34e82bf1e0cb3f  libgcc/config/sh/linux-unwind.h
  d915cb58faa1ad2108733b662853057e  libgcc/config/sh/t-linux
  be1b06de574a22c34d2cf93d2d68a4f1  libgcc/config/sh/t-netbsd
! 4a20b99ad5e135bf16706b13767b10cc  libgcc/config/sh/t-sh
  00d4a30e4ed4a68cd6ec53feb398914b  libgcc/config/sh/t-superh
! 4770161c4f95aaf93fd3ebf2642ed648  libgcc/config/sol2/crtp.c
! 331bc0fef7c869253446fbc04fc27f47  libgcc/config/sol2/crtpg.c
  5e87cfc189f02028b142950527a73c54  libgcc/config/sol2/gmon.c
! 291f01920dfb457c89fb3a4ed341d697  libgcc/config/sol2/t-sol2
! a07e427603bc6883dd9ea8f7d071c3e0  libgcc/config/sparc/crtfastmath.c
! 0136ada80bdc05cfb49b40633a747a26  libgcc/config/sparc/crti.S
! 09613b64e61bd366472d395c87461ee5  libgcc/config/sparc/crtn.S
  b2a26791cd6002e4af29a7fa32510b3b  libgcc/config/sparc/lb1spc.S
! eda5c7917f546e67b9eed33c6f70297c  libgcc/config/sparc/libgcc-glibc.ver
! 5c86ed7e3816d1e89031cd75dced226f  libgcc/config/sparc/linux-unwind.h
! 3ed2640cf1b19490cae76d298bccb311  libgcc/config/sparc/sol2-c1.S
! 702b3597b9b3bb159b4d1b8c4c24d1ab  libgcc/config/sparc/sol2-unwind.h
  ef153c3f92e3dee09716d833736683eb  libgcc/config/sparc/t-linux
  180e9bc0e471bafa1c561931dc073ebe  libgcc/config/sparc/t-linux64
  dccc96847305efc8c465f1dedc591c23  libgcc/config/sparc/t-softmul
*************** efbaa48f2cdd756a3e953deca1bd19c9  libgcc
*** 81403,81414 ****
  6cb0675d48c7276d43aa201bcc2fd60c  libgcc/config/stormy16/ctzhi2.c
  5bc65cdd345cb629c202f3e96a0410dd  libgcc/config/stormy16/divsi3.c
  3e736ac64edb45dddbedbcc751674354  libgcc/config/stormy16/ffshi2.c
! 89e939e7650a72c059ec4f3896682e55  libgcc/config/stormy16/lib2funcs.c
  5620256715f30f1eeeb4bdf614b346a6  libgcc/config/stormy16/lshrsi3.c
  27b26d13ffac636e5de0fccdcb2b4515  libgcc/config/stormy16/modsi3.c
  514e4e067379e1bef2b0baac58a21afc  libgcc/config/stormy16/parityhi2.c
  a071c36e5256dc1e154c400ef3055556  libgcc/config/stormy16/popcounthi2.c
! 60071bd8f400a107b3bad3d859b312d1  libgcc/config/stormy16/t-stormy16
  ada9a39786da3b2e999f7440a17a1ed7  libgcc/config/stormy16/ucmpsi2.c
  0db895a315f3ea78e45253f9c2c8e7f8  libgcc/config/stormy16/udivmodsi4.c
  6dca6fc4737c716575c264f3934bb6d9  libgcc/config/stormy16/udivsi3.c
--- 87368,87379 ----
  6cb0675d48c7276d43aa201bcc2fd60c  libgcc/config/stormy16/ctzhi2.c
  5bc65cdd345cb629c202f3e96a0410dd  libgcc/config/stormy16/divsi3.c
  3e736ac64edb45dddbedbcc751674354  libgcc/config/stormy16/ffshi2.c
! f4b1c955dc0769c5a1d9dc9397ed21ff  libgcc/config/stormy16/lib2funcs.c
  5620256715f30f1eeeb4bdf614b346a6  libgcc/config/stormy16/lshrsi3.c
  27b26d13ffac636e5de0fccdcb2b4515  libgcc/config/stormy16/modsi3.c
  514e4e067379e1bef2b0baac58a21afc  libgcc/config/stormy16/parityhi2.c
  a071c36e5256dc1e154c400ef3055556  libgcc/config/stormy16/popcounthi2.c
! 2746422110dbd1f40bbe1fe745a932a1  libgcc/config/stormy16/t-stormy16
  ada9a39786da3b2e999f7440a17a1ed7  libgcc/config/stormy16/ucmpsi2.c
  0db895a315f3ea78e45253f9c2c8e7f8  libgcc/config/stormy16/udivmodsi4.c
  6dca6fc4737c716575c264f3934bb6d9  libgcc/config/stormy16/udivsi3.c
*************** e70c5d58ebf79fd5741ec98848df7f6f  libgcc
*** 81426,81451 ****
  a5670d0218ee8d5011882573b6bd224b  libgcc/config/t-gthr-noweak
  925527af5cc046b48ad621a96e896dd3  libgcc/config/t-gthr-vxworks
  37f29328813c5ec6c35276b87457f6b8  libgcc/config/t-gthr-vxworksae
! 71998f091a127d67271f59cdf4916ceb  libgcc/config/t-hardfp
! b299c997005377fb09d0bad235d59691  libgcc/config/t-hardfp-sfdf
  5b1981686da4ef8b1b62a20f10b3e715  libgcc/config/t-libgcc-pic
  5c40347f0b1274c8b5759d0ed9d1ccf8  libgcc/config/t-libunwind
! fb114fc474e86040a446fa90766e8f56  libgcc/config/t-libunwind-elf
  397d06701a9c354f5606477c578c9efb  libgcc/config/t-linux
  eb3161bf886026cdcf8a78cea885fdd2  libgcc/config/t-openbsd-thread
  474d97884b393e08b0ce416dd09493bc  libgcc/config/t-rtems
! c719c44114540927ecf2555f7fb8475b  libgcc/config/t-slibgcc
  4b78cd38aff781bc4f8087e2813bcccf  libgcc/config/t-slibgcc-darwin
  57f27c60e5d8c572d2645821ec5935e0  libgcc/config/t-slibgcc-elf-ver
! fa4305a341c2d0a5f01867ee0abe6504  libgcc/config/t-slibgcc-fuchsia
  57e4154cb283fd7d9f323f5d85d534d9  libgcc/config/t-slibgcc-gld
  226b6f10bc32786901a79b070ed13468  libgcc/config/t-slibgcc-gld-nover
  429659ae1ff2531e3ba2fd0c676a320d  libgcc/config/t-slibgcc-hpux
! 591093b6168a0527eba3473d3e46110e  libgcc/config/t-slibgcc-libgcc
  b5d3fe85dff400a82befa6b901b438ec  libgcc/config/t-slibgcc-nolc-override
  bb217aa78bbf6b6a7c7844f73152110d  libgcc/config/t-slibgcc-sld
  39082f76e7ff28af867afdb6b93b1891  libgcc/config/t-slibgcc-vms
! 3f4a36c5f3ef03bf18b3837bf8acb45d  libgcc/config/t-softfp
  1ec9425eada0171d381f5f9b47b613a9  libgcc/config/t-softfp-compat
  72f41afb67b3c3c67809819763244452  libgcc/config/t-softfp-excl
  14ecf481060b3893ba43c6e09ff40eab  libgcc/config/t-softfp-sfdf
--- 87391,87416 ----
  a5670d0218ee8d5011882573b6bd224b  libgcc/config/t-gthr-noweak
  925527af5cc046b48ad621a96e896dd3  libgcc/config/t-gthr-vxworks
  37f29328813c5ec6c35276b87457f6b8  libgcc/config/t-gthr-vxworksae
! 59bdcd6dd8cb87ce5f94f6445e53fe8e  libgcc/config/t-hardfp
! d2f04dc4b7a8d7df8c1cbc551b037ded  libgcc/config/t-hardfp-sfdf
  5b1981686da4ef8b1b62a20f10b3e715  libgcc/config/t-libgcc-pic
  5c40347f0b1274c8b5759d0ed9d1ccf8  libgcc/config/t-libunwind
! 95dae48a590b4e37530b6ec564a6fbad  libgcc/config/t-libunwind-elf
  397d06701a9c354f5606477c578c9efb  libgcc/config/t-linux
  eb3161bf886026cdcf8a78cea885fdd2  libgcc/config/t-openbsd-thread
  474d97884b393e08b0ce416dd09493bc  libgcc/config/t-rtems
! bf9d89259ee614c5ffe517d943e09be5  libgcc/config/t-slibgcc
  4b78cd38aff781bc4f8087e2813bcccf  libgcc/config/t-slibgcc-darwin
  57f27c60e5d8c572d2645821ec5935e0  libgcc/config/t-slibgcc-elf-ver
! d6e035c76b062969d2034bfb0db3e68b  libgcc/config/t-slibgcc-fuchsia
  57e4154cb283fd7d9f323f5d85d534d9  libgcc/config/t-slibgcc-gld
  226b6f10bc32786901a79b070ed13468  libgcc/config/t-slibgcc-gld-nover
  429659ae1ff2531e3ba2fd0c676a320d  libgcc/config/t-slibgcc-hpux
! 09f9f47293dff0730dddb8127bd4f74d  libgcc/config/t-slibgcc-libgcc
  b5d3fe85dff400a82befa6b901b438ec  libgcc/config/t-slibgcc-nolc-override
  bb217aa78bbf6b6a7c7844f73152110d  libgcc/config/t-slibgcc-sld
  39082f76e7ff28af867afdb6b93b1891  libgcc/config/t-slibgcc-vms
! f2589d061d7108bd21a021855c76e3e7  libgcc/config/t-softfp
  1ec9425eada0171d381f5f9b47b613a9  libgcc/config/t-softfp-compat
  72f41afb67b3c3c67809819763244452  libgcc/config/t-softfp-excl
  14ecf481060b3893ba43c6e09ff40eab  libgcc/config/t-softfp-sfdf
*************** aa5fd95cba7a4d8329be007695e43d15  libgcc
*** 81453,81461 ****
  981f25965afcab131261c8bfc6c90e2f  libgcc/config/t-softfp-tf
  94681cc09c7ff0bb9a14356eff90be51  libgcc/config/t-stack
  685f35f0db36731a13637c087658e7a9  libgcc/config/t-tls
! a7dddf053d555e675906a610ead2e4a7  libgcc/config/t-vxcrtstuff
! 9a8362890a075b37f9cdfda32894d63e  libgcc/config/t-vxworks
! 089c7d2a4bb9b5ee5e0067ab0a3fa765  libgcc/config/t-vxworks7
  5e8b7b7f8448bc376425f6f16054d9ff  libgcc/config/t-vxworksae
  0e57ca5d22e3d1095f2c0cfebd41a073  libgcc/config/tilegx/sfp-machine.h
  77fba27019d1cad2a0737fada3162555  libgcc/config/tilegx/sfp-machine32.h
--- 87418,87426 ----
  981f25965afcab131261c8bfc6c90e2f  libgcc/config/t-softfp-tf
  94681cc09c7ff0bb9a14356eff90be51  libgcc/config/t-stack
  685f35f0db36731a13637c087658e7a9  libgcc/config/t-tls
! 65e3c91d5593e159fdbf46e423144f41  libgcc/config/t-vxcrtstuff
! 7d41ae75ebd8c7fad3c853141eff8642  libgcc/config/t-vxworks
! d650f97fd673cadc983472798c80383b  libgcc/config/t-vxworks7
  5e8b7b7f8448bc376425f6f16054d9ff  libgcc/config/t-vxworksae
  0e57ca5d22e3d1095f2c0cfebd41a073  libgcc/config/tilegx/sfp-machine.h
  77fba27019d1cad2a0737fada3162555  libgcc/config/tilegx/sfp-machine32.h
*************** a7dddf053d555e675906a610ead2e4a7  libgcc
*** 81463,81561 ****
  16c22b80e53f817334a19c0b48ad554d  libgcc/config/tilegx/t-crtstuff
  5e2260f13769a960c8e1f24b0c9847e4  libgcc/config/tilegx/t-softfp
  94fecaba2fa3fca31d038d5739e45e51  libgcc/config/tilegx/t-tilegx
! 1d0731f187acd8594e9a89ea5bd43436  libgcc/config/tilepro/atomic.c
! 21269388f4dffe9e5115124f70871a23  libgcc/config/tilepro/atomic.h
! e4e54111f7646a024478152ada7a6614  libgcc/config/tilepro/linux-unwind.h
  c319c87cee2bc57b33cd850fb03731b5  libgcc/config/tilepro/sfp-machine.h
! 767b2ef13e49b0634af8134eaa7d76f2  libgcc/config/tilepro/softdivide.c
! eef96b7d776b0db29c8a6cc4701b9e4b  libgcc/config/tilepro/softmpy.S
  4927dec2e58bebc9fec4d0405177eaea  libgcc/config/tilepro/t-crtstuff
  a6ca3e93e70a2a92d62823faefdc072f  libgcc/config/tilepro/t-tilepro
! 13b217674325cfc6499553ff583ada96  libgcc/config/unwind-dw2-fde-darwin.c
! 74b58dbee74d0e616dc03116c318785e  libgcc/config/v850/lib1funcs.S
  015fdb6e6a2a23f553dc5105691f7a6a  libgcc/config/v850/t-v850
! f16635286094a160c61a110a4b60475b  libgcc/config/vax/lib1funcs.S
  c668e63cf08f878538a0db39860696dc  libgcc/config/vax/t-linux
! 7249243f61d2cb708d2778e58fea2d2c  libgcc/config/visium/crti.S
! bb3e1ffdd49c45f6e7266b6d2f761b03  libgcc/config/visium/crtn.S
! 586a1fb3e947ebbd21d96232b6b71c55  libgcc/config/visium/divdi3.c
! 3d7f455b5c8b85dd06b74cc5e7896050  libgcc/config/visium/lib2funcs.c
! d817c33a7dde431e28a16415f3ed3c6d  libgcc/config/visium/memcpy.c
! d355007b4bd1b1ea8ea8c262ddb3acc5  libgcc/config/visium/memcpy.h
! 9f391928588d3e9cc55c631cf2f3ba4e  libgcc/config/visium/memset.c
! 7fbcb81e20ec2ebfdc4053c273cb29f9  libgcc/config/visium/memset.h
! 12dc7a65990de3bf81a5e31f92b96e5d  libgcc/config/visium/moddi3.c
! b4504bda5912a1359b9b6af9cb0581a2  libgcc/config/visium/set_trampoline_parity.c
! 152c6a6f25a3278b0d74f0d13bd2f7cd  libgcc/config/visium/t-visium
! af211b13a3b07dabc6d5deeb472b994d  libgcc/config/visium/udivdi3.c
! e0c0bf0dc0a67d2424e93f775bedadb4  libgcc/config/visium/udivmoddi4.c
! d931918b92bdfa0c240f41fecb66d96b  libgcc/config/visium/umoddi3.c
  9383115b20d4126cf07541b5d7bf6c2a  libgcc/config/vms/t-vms
! 26e3ecaf482f80b96726faec4b3ad969  libgcc/config/vms/vms-ucrt0.c
! 966a8dc177e01c6a9bac839b14c42689  libgcc/config/vxcache.c
  ce7c430805a241b92c4dc2eae74f6fc1  libgcc/config/vxcrtstuff.c
! 97402a0688d258bba17aebe00392a501  libgcc/config/xtensa/crti.S
! 80d8f808e5befbf6f82c0b1c0f4ba554  libgcc/config/xtensa/crtn.S
! 233a78d23a632d4e18f76052076fb70b  libgcc/config/xtensa/ieee754-df.S
! 70e331b2d29645ef4f04b94530cbe125  libgcc/config/xtensa/ieee754-sf.S
! 9ee8e921407eeac1c645de1c79a442a3  libgcc/config/xtensa/lib1funcs.S
! 4bec52f8aca1b09b2699b0d11d7039c9  libgcc/config/xtensa/lib2funcs.S
  8074695f5eea7b961c59ee9608973dac  libgcc/config/xtensa/libgcc-glibc.ver
! 7f91ec235e3009d3f3334e5a88731828  libgcc/config/xtensa/linux-unwind.h
  d437dc5394da39dbe1ece64723e90a76  libgcc/config/xtensa/t-elf
  4f2c91d0f57a675cc91b287ce2ad76aa  libgcc/config/xtensa/t-linux
  ce614fa17d52c2d7121d7e2d6f80b02d  libgcc/config/xtensa/t-windowed
! 9acbec9b3406a3560d608714300a7edf  libgcc/config/xtensa/t-xtensa
! 11cc8ccb906ab0632bde91aa4e9eb982  libgcc/config/xtensa/unwind-dw2-xtensa.c
! 97b0e9187d1e3a7dd5666e399900b4ed  libgcc/config/xtensa/unwind-dw2-xtensa.h
! bd20a75c04c3d464a4bbc5e46bb2cb78  libgcc/configure
! 0a928d2d8f55ba2a5ae638f8da93b2ad  libgcc/configure.ac
! 952648e893ac457b587913d3ff5753c7  libgcc/crtstuff.c
! 12d993f1bfca247e46e108297d623e90  libgcc/dfp-bit.c
! 8b618d977037b466adbb35cc2dbc7390  libgcc/dfp-bit.h
! 70e35fcf38774880a1f8ce9ec374010a  libgcc/divmod.c
! b9a5bcda72f7b8809010f38227353353  libgcc/empty.mk
! 9c5a4d28b5689ea1ed6b1d2ca5d596d5  libgcc/emutls.c
  aa52a8f7cb881c00c125ed5fd04ed4df  libgcc/enable-execute-stack-empty.c
! 59d0496c2f30b6f393ecd222b8e6217e  libgcc/enable-execute-stack-mprotect.c
! 2315effafb20b5d624da6c51805ea66a  libgcc/find-symver.awk
! 4af2ded045f39b47c5f56dfd643130e7  libgcc/fixed-bit.c
! 18e242d15d769f02c9ac30f288ef7375  libgcc/fixed-bit.h
  064f7220d5fd5127bd136e8e2a9d62e7  libgcc/fixed-obj.mk
  651caf13863ec6f313b467d1d8531cd4  libgcc/floatunsidf.c
  6ca2d25d30233e6c7c94aa94c266cb72  libgcc/floatunsisf.c
  faedd2248586a9d50451e03d502eb147  libgcc/floatunsitf.c
  56fa552ac2ef58f6b1563d9c11fd3548  libgcc/floatunsixf.c
! fbffca8fdc0c95fbfa4b83d3adcc87aa  libgcc/fp-bit.c
! 30553480997aadb4e07034ae39c9c756  libgcc/fp-bit.h
! 817b0951132413b7d870893ee2c285c9  libgcc/gbl-ctors.h
! d91ae85d6a83316a008ff54eb5e20215  libgcc/gcov.h
  c7b70dcc1f2024624fcba54a60ffcdda  libgcc/gen-fixed.sh
! cf106819af320908e70433d28757ae31  libgcc/generic-morestack-thread.c
! 70e63575374e9a2c3a38e46b27c0825a  libgcc/generic-morestack.c
! 7723f510a29b13ebe1d419fb739b130d  libgcc/generic-morestack.h
  971ff834e82a1a1964a019bfdac21c5c  libgcc/gstdint.h
! 6ac009fe506b0608514bb9169d23e378  libgcc/gthr-posix.h
! 4072177e55909c34164f1c9d3ffbc4c4  libgcc/gthr-single.h
! 00e0ab647e7e0aadcccf10e65b761178  libgcc/gthr.h
! e93e7525ef3d5ecaa0dc0b2259476bdb  libgcc/libgcc-std.ver.in
! 3093e9f529e8dcf6a891691885682cfb  libgcc/libgcc2.c
! 292f2c2c854c3b46789317a68d09f153  libgcc/libgcc2.h
! b42330aa89239783e0adfd7db58bada1  libgcc/libgcov-driver-system.c
! bcdaf055069511c50ad858ad60c20963  libgcc/libgcov-driver.c
! e0a444f562377731a6ff7cfbc2974fee  libgcc/libgcov-interface.c
! e4995f4017ca4382aab525c069862390  libgcc/libgcov-merge.c
! 63eff0a7d60c68b135178af39ed9c16a  libgcc/libgcov-profiler.c
! 153d834727d0e1237e792f57aa65c46a  libgcc/libgcov-util.c
! 3159f83c723b21b8b8eafdc8311ef380  libgcc/libgcov.h
  06287f034722081687f831dcb61e986c  libgcc/memcmp.c
  dad9e98504e8f79e6e97aa29c6b49d96  libgcc/memcpy.c
  135a2882c25ab6f90748b020a6cc2f02  libgcc/memmove.c
  eb54d3066646204ecc21ba5ecb67d572  libgcc/memset.c
! defd3598cad33f6c88383d17635d9ef3  libgcc/mkheader.sh
! 33b6a8d4b0451101c195621b63c234a1  libgcc/mkmap-flat.awk
! 5a8f878ffc2d3f0be434e40f4db3a896  libgcc/mkmap-symver.awk
! 50165d5697ee201dff70d3e11aab5d26  libgcc/offloadstuff.c
  0503a6ec2dc990ec5a02ea1d5ece9082  libgcc/shared-object.mk
  4320671e90e14eb5b9f91f106f923072  libgcc/siditi-object.mk
  5476b2a3295a19a0fb558d1db1aa17ae  libgcc/soft-fp/README
--- 87428,87524 ----
  16c22b80e53f817334a19c0b48ad554d  libgcc/config/tilegx/t-crtstuff
  5e2260f13769a960c8e1f24b0c9847e4  libgcc/config/tilegx/t-softfp
  94fecaba2fa3fca31d038d5739e45e51  libgcc/config/tilegx/t-tilegx
! 80f3edfa44047571c3e70211386463ad  libgcc/config/tilepro/atomic.c
! 2e62520356f77903b2f2df0d53e854df  libgcc/config/tilepro/atomic.h
! 1dfed85cbd7156bdf3fbb36567eca474  libgcc/config/tilepro/linux-unwind.h
  c319c87cee2bc57b33cd850fb03731b5  libgcc/config/tilepro/sfp-machine.h
! e439a27d11b92f57cc4cb2937adccff2  libgcc/config/tilepro/softdivide.c
! f7881b0724df50e2ce434e6e54a841cd  libgcc/config/tilepro/softmpy.S
  4927dec2e58bebc9fec4d0405177eaea  libgcc/config/tilepro/t-crtstuff
  a6ca3e93e70a2a92d62823faefdc072f  libgcc/config/tilepro/t-tilepro
! a59292b8781a3d52120212b38c85858a  libgcc/config/unwind-dw2-fde-darwin.c
! c42d1214c0c8486e4e8d8ad698a928ba  libgcc/config/v850/lib1funcs.S
  015fdb6e6a2a23f553dc5105691f7a6a  libgcc/config/v850/t-v850
! d7ae65684d43e2996e15b738809c1e38  libgcc/config/vax/lib1funcs.S
  c668e63cf08f878538a0db39860696dc  libgcc/config/vax/t-linux
! 36b80041af919602646c027232080030  libgcc/config/visium/crti.S
! da845ee8ad9149833cf89d8dcd264bc8  libgcc/config/visium/crtn.S
! 319d52cca7c8b0b59dfd056e3aab27d4  libgcc/config/visium/divdi3.c
! 7d9f75f86c0db2d01a8afcf5c53fe9c1  libgcc/config/visium/lib2funcs.c
! 60c6a871830747648f5ecc58bfe084dc  libgcc/config/visium/memcpy.c
! 72206463ee156c76e1646e05a2eb1999  libgcc/config/visium/memcpy.h
! 0d8d20116b271c5df991b49cb4492865  libgcc/config/visium/memset.c
! 282836b86416a2f11d6b46df66902de4  libgcc/config/visium/memset.h
! 01c0d7cebf6d208abfbd62425a2ba0fd  libgcc/config/visium/moddi3.c
! 70522bf094233a5a807cc8af1a482f98  libgcc/config/visium/set_trampoline_parity.c
! 4b6f9ba35befc7df4d773f5739958dcf  libgcc/config/visium/t-visium
! 5f6a8e64ad59eb56f9d37b4bffa49314  libgcc/config/visium/udivdi3.c
! eec7bb7b29458f8175dff2f03c98d533  libgcc/config/visium/udivmoddi4.c
! e6fae15117012ac958a30003ca6a96ee  libgcc/config/visium/umoddi3.c
  9383115b20d4126cf07541b5d7bf6c2a  libgcc/config/vms/t-vms
! acfa842d75b370c682ab6ba6640e1dde  libgcc/config/vms/vms-ucrt0.c
  ce7c430805a241b92c4dc2eae74f6fc1  libgcc/config/vxcrtstuff.c
! e3ce303658b600ff1c65cd590b2ef9eb  libgcc/config/xtensa/crti.S
! 91e781ab271108dda6f1d35226a53e94  libgcc/config/xtensa/crtn.S
! f2f0192bcb7d312b69a8ac0af468d175  libgcc/config/xtensa/ieee754-df.S
! 3067a0ce6d2d74ee5d1270cec923cb90  libgcc/config/xtensa/ieee754-sf.S
! 3e43f7b838c45367ed106a3dadc92c85  libgcc/config/xtensa/lib1funcs.S
! 2e4a9e4f216d46f4cac4bcaed23831bc  libgcc/config/xtensa/lib2funcs.S
  8074695f5eea7b961c59ee9608973dac  libgcc/config/xtensa/libgcc-glibc.ver
! ebf28ba7c06911b1741fb0b4d962db6d  libgcc/config/xtensa/linux-unwind.h
  d437dc5394da39dbe1ece64723e90a76  libgcc/config/xtensa/t-elf
  4f2c91d0f57a675cc91b287ce2ad76aa  libgcc/config/xtensa/t-linux
  ce614fa17d52c2d7121d7e2d6f80b02d  libgcc/config/xtensa/t-windowed
! f44d679473da1cd24c9d82c368fc08b5  libgcc/config/xtensa/t-xtensa
! 4cdcecb81ce4b6ec520731740e0ce2f9  libgcc/config/xtensa/unwind-dw2-xtensa.c
! 7071ac2e5335c883bd7a8ec46ce3db00  libgcc/config/xtensa/unwind-dw2-xtensa.h
! 252fefbf4d53bad349377c0ab8744999  libgcc/configure
! 93dd0985e8282f7ba26add63c2f5fb19  libgcc/configure.ac
! 9bba526395c2eabcac101c7be45e2411  libgcc/crtstuff.c
! e0f4322cac64d40982bfbfdc03906ccb  libgcc/dfp-bit.c
! a0a3642fe7c80d2f72e9bc40fe63b703  libgcc/dfp-bit.h
! 6f1be68119a2bbd0eade267043c7efcb  libgcc/divmod.c
! 23741c417cbbb979853af9d168eab1b8  libgcc/emutls.c
  aa52a8f7cb881c00c125ed5fd04ed4df  libgcc/enable-execute-stack-empty.c
! 4c5758e6cc866bd89d844e10e0363469  libgcc/enable-execute-stack-mprotect.c
! 1c12ba10dc00d7250b346f4ed43d41d4  libgcc/find-symver.awk
! a9df3c4bd5f2e97273db268dae99ae89  libgcc/fixed-bit.c
! dd2d7107a6325b4652788c437e588b9f  libgcc/fixed-bit.h
  064f7220d5fd5127bd136e8e2a9d62e7  libgcc/fixed-obj.mk
  651caf13863ec6f313b467d1d8531cd4  libgcc/floatunsidf.c
  6ca2d25d30233e6c7c94aa94c266cb72  libgcc/floatunsisf.c
  faedd2248586a9d50451e03d502eb147  libgcc/floatunsitf.c
  56fa552ac2ef58f6b1563d9c11fd3548  libgcc/floatunsixf.c
! dff40a87ffcefdfb5e4544f787bcf824  libgcc/fp-bit.c
! 044443eb014413a28393d0e53b71c115  libgcc/fp-bit.h
! 7a786189fd3e97c449cd9a14ebc36091  libgcc/gbl-ctors.h
! 23e99f5806ea9c4b4166579be8e04d99  libgcc/gcov.h
  c7b70dcc1f2024624fcba54a60ffcdda  libgcc/gen-fixed.sh
! 311034b6163911af2a0d931c1b55c46b  libgcc/generic-morestack-thread.c
! ef3737b64cc22211e5c99690ef89c9a5  libgcc/generic-morestack.c
! fe9e76a17b0d5b4405a8ed510ff98c3f  libgcc/generic-morestack.h
  971ff834e82a1a1964a019bfdac21c5c  libgcc/gstdint.h
! 89d599c8f04285895f338ffbc520ab78  libgcc/gthr-posix.h
! f891887eeda091b5e6836159037435f3  libgcc/gthr-single.h
! 5e109e3395abba865fd5696c06b508b4  libgcc/gthr.h
! 5c1d34004688b8b1ef6614ddc51521ed  libgcc/libgcc-std.ver.in
! 134846ce9a830cc0e69adf96db07517c  libgcc/libgcc2.c
! 6797b219abaffa4d570a45486fa5b96d  libgcc/libgcc2.h
! 7a8a48e39aef6a7d5bf233c01dedace6  libgcc/libgcov-driver-system.c
! 4cafa6cd061c7bc406dd3b87a306427e  libgcc/libgcov-driver.c
! ec897fa4a2d31af25e362acc23e36591  libgcc/libgcov-interface.c
! e11f5024f24207f4d4858509f44b5144  libgcc/libgcov-merge.c
! 87cdacfba09c3deb839f6a6bae6dfd9a  libgcc/libgcov-profiler.c
! 515ed8c4a0c0852e53a7074dbbbbc2d8  libgcc/libgcov-util.c
! e66c2d54568a3f83125c06bb6e4599ae  libgcc/libgcov.h
  06287f034722081687f831dcb61e986c  libgcc/memcmp.c
  dad9e98504e8f79e6e97aa29c6b49d96  libgcc/memcpy.c
  135a2882c25ab6f90748b020a6cc2f02  libgcc/memmove.c
  eb54d3066646204ecc21ba5ecb67d572  libgcc/memset.c
! 900261ac7eb1a1312075f0c70f338d00  libgcc/mkheader.sh
! 3fd5ddc3fd103cb9003167ec2c37f916  libgcc/mkmap-flat.awk
! cce5a4b194a88d80f2a140d156926aae  libgcc/mkmap-symver.awk
! 94545d8197f1eb75ad97e460f59c0fab  libgcc/offloadstuff.c
  0503a6ec2dc990ec5a02ea1d5ece9082  libgcc/shared-object.mk
  4320671e90e14eb5b9f91f106f923072  libgcc/siditi-object.mk
  5476b2a3295a19a0fb558d1db1aa17ae  libgcc/soft-fp/README
*************** ea6dcd1b477b905faa40a629a520a1d9  libgcc
*** 81648,81678 ****
  013277b0e2d3150d848b9b14347df5ac  libgcc/soft-fp/unordsf2.c
  4eb9235213d4c62a2fe0cf67c85ee242  libgcc/soft-fp/unordtf2.c
  8c64184cccab0ab994c69899c63f3260  libgcc/static-object.mk
! e79ec02a4e313dcb81f01b5e75eab900  libgcc/sync.c
! 1626a9b4af1beae2333c7084686984b8  libgcc/udivhi3.c
! 2762452e638a03bc793efd417f4c36ef  libgcc/udivmod.c
! c9f9ee6f6e3883822409e555d09db5c4  libgcc/udivmodhi4.c
! 6890fe87407c61354368b97ea0edf1ec  libgcc/udivmodsi4.c
! 18d44644866275cf59aa32ea23957b48  libgcc/unwind-arm-common.inc
! d40735264923c37e6ef43eb27e6cbfe2  libgcc/unwind-c.c
! 730d4f12d2c5d66a44c97437efffb175  libgcc/unwind-compat.c
! 9538bf9bdbe54dbf19bc14afb87cf3da  libgcc/unwind-compat.h
! 1405401b14902fc83da775a7f2ef1394  libgcc/unwind-dw2-fde-compat.c
! db3096a9d572a6e431c5e755b15089b2  libgcc/unwind-dw2-fde-dip.c
! 4e59474b92520f191df7fbff6c0e65b3  libgcc/unwind-dw2-fde.c
! a5c3ba0860379ea1a0b7ae52a11e013b  libgcc/unwind-dw2-fde.h
! 8d7333587316d912faa912834abcb509  libgcc/unwind-dw2.c
! 0525727976694f4fb0933263d1e594f0  libgcc/unwind-dw2.h
! a6bd60417c1879773f7ba2375536f533  libgcc/unwind-generic.h
! 469073bae0e1104a18ff5cee26d0b4c9  libgcc/unwind-pe.h
! 8fd80a2bab9818cc6b47e65c87a40894  libgcc/unwind-seh.c
! c712628743839ab3abdfb6e2b2a148b1  libgcc/unwind-sjlj.c
! aa8e5c62be8c6d026598cad74f8918ee  libgcc/unwind.inc
! aefd60a1c8d6ffbb7ec97e35dee710d4  libgcc/vtv_end.c
! f36482a521eea94524c15eaa0859e473  libgcc/vtv_end_preinit.c
! 9b5f2df98cbfd1de5a6f0f09efb80101  libgcc/vtv_start.c
! e0c401f31054829f53b8a41ab55218cf  libgcc/vtv_start_preinit.c
! 182b30e7f286a4b8080dec745ab8671d  libgfortran/ChangeLog
  9aca36338382e5b4b730e7779170b24d  libgfortran/ChangeLog-2002
  80d3edc880c2da0b7a2beec2e2c4f774  libgfortran/ChangeLog-2003
  9f0239429993a5e64ed793eb6c55a5c1  libgfortran/ChangeLog-2004
--- 87611,87641 ----
  013277b0e2d3150d848b9b14347df5ac  libgcc/soft-fp/unordsf2.c
  4eb9235213d4c62a2fe0cf67c85ee242  libgcc/soft-fp/unordtf2.c
  8c64184cccab0ab994c69899c63f3260  libgcc/static-object.mk
! 3dcc64ed3bf96a0c8e478de448c26530  libgcc/sync.c
! e0ac60c8315971593cd5000a11b8503c  libgcc/udivhi3.c
! 59ff772dcaef783a3c41a1b6e3fd9e93  libgcc/udivmod.c
! 360fbdffccc2935aeb0d9c44cdf2886a  libgcc/udivmodhi4.c
! 60d1fa6aab55a24384fe96b8ba38a746  libgcc/udivmodsi4.c
! 6fe94cca4577f2aec96006fd7910d6e2  libgcc/unwind-arm-common.inc
! 87ec9abcad36b76b7398cf7fc40881f8  libgcc/unwind-c.c
! 09938390ac4e1621926541ce5e852ca0  libgcc/unwind-compat.c
! c4e640ee464c710df999e864d52e97c3  libgcc/unwind-compat.h
! 8f5fb883643c8ec9108d93ba1423f237  libgcc/unwind-dw2-fde-compat.c
! 6d530444e26f2ffdee78a91751a029b2  libgcc/unwind-dw2-fde-dip.c
! a4b3387112636676841eb17cc2798050  libgcc/unwind-dw2-fde.c
! e23262edf306d7ab0432621d81d45fd9  libgcc/unwind-dw2-fde.h
! 7b871a020ed7d0fcef854d41235d0d13  libgcc/unwind-dw2.c
! 4802552aedbf235ab0d2b86554c8ddf7  libgcc/unwind-dw2.h
! 7b9cfacc5c4dba7abda1dccc3cb7dea0  libgcc/unwind-generic.h
! b0568c77be3b22af357389e25b1a26bd  libgcc/unwind-pe.h
! d0449982cb052f4f17661625d8c905bd  libgcc/unwind-seh.c
! e67a974e1f8cb55dcc72068be10e9832  libgcc/unwind-sjlj.c
! 90461a11e8b170034ba19d91c376afe0  libgcc/unwind.inc
! 98cd6c16c00066d32ba849b16ceaf6ed  libgcc/vtv_end.c
! 8a8461c4f8e531d7252eacf261e3799b  libgcc/vtv_end_preinit.c
! d1bdf1e757a5a9eeb3bc447fc6938f48  libgcc/vtv_start.c
! f99c5f0b1f8f77dbbb1db940bb61ef02  libgcc/vtv_start_preinit.c
! 2dc8a811d146026d8cabc5ed49388bf8  libgfortran/ChangeLog
  9aca36338382e5b4b730e7779170b24d  libgfortran/ChangeLog-2002
  80d3edc880c2da0b7a2beec2e2c4f774  libgfortran/ChangeLog-2003
  9f0239429993a5e64ed793eb6c55a5c1  libgfortran/ChangeLog-2004
*************** f565223da2dcb17328986889fbb15fa8  libgfo
*** 81691,82441 ****
  e9051611daf30b5672939006d2ab936c  libgfortran/ChangeLog-2017
  5bffa5826936db152a31f60524b34f0c  libgfortran/ChangeLog-2018
  a25a190e02c8ba2caa2c3dee224eba51  libgfortran/ChangeLog-2019
! 1d6aadae3d96457d915a812657abfcb4  libgfortran/ISO_Fortran_binding.h
! ef0711aa28a4a5c9fd75e01a50ef4d0e  libgfortran/Makefile.am
! c4b3ecebd53e2d3b9e1ff0b6fd7a1066  libgfortran/Makefile.in
  163a6e0b260d40c9b49c5bcdcf86e898  libgfortran/acinclude.m4
  77dad7b87b2adfbfda676696055ef90f  libgfortran/aclocal.m4
! 8f974ce053b16a38064ccf064cc88e2f  libgfortran/c99_protos.h
! 933e62050794d26964a8e1732593a954  libgfortran/caf/libcaf.h
! 39bda5be9c531de05986eaa9863fc334  libgfortran/caf/mpi.c
! ba5ab1a6cac8cc03866879b9e324758d  libgfortran/caf/single.c
  639e67b84ee7eff64d336c81958c98a1  libgfortran/config.h.in
! e8782e773662410e572d0d4db11c9b09  libgfortran/config/fpu-387.h
! 3f1e2d1fe5f1dcc8501b226421e0cf88  libgfortran/config/fpu-aix.h
! dbb0015993d82619dd6f54ec503c4ba2  libgfortran/config/fpu-generic.h
! f2410b011efd9ef1af75e889e92762bb  libgfortran/config/fpu-glibc.h
! 66682c7125154e46720a97cf74d3a1fe  libgfortran/config/fpu-sysv.h
! cfe85b003fd10d9e091350715b7ec935  libgfortran/configure
! 1ca48336a747e84b8f756ad32c6b38f5  libgfortran/configure.ac
! 26d3d2f20028a910fbd80fc9c770806a  libgfortran/configure.host
! de3746c56d8a32696494d6d9dec22ed0  libgfortran/generated/_abs_c10.F90
! a466a9980b14da94a7042c4caf6fa437  libgfortran/generated/_abs_c16.F90
! bd9ac4e0a3932a9a0856c16c70cd7c37  libgfortran/generated/_abs_c4.F90
! c89b80c9816cea33f82a51ecf4b03b1a  libgfortran/generated/_abs_c8.F90
! c5863ab37bad3f6cdc4117d48a189a7d  libgfortran/generated/_abs_i16.F90
! 97523dcd2e02fbc674d373a4a8a0e8f3  libgfortran/generated/_abs_i4.F90
! 90e2202926da9a122cc28f5527bf5814  libgfortran/generated/_abs_i8.F90
! cedcd3317e3b7c97d01c3af88fb3c18a  libgfortran/generated/_abs_r10.F90
! 1b365535af92b7ad40f4f991e312990c  libgfortran/generated/_abs_r16.F90
! d6b6a6a3327ec8899ce019f2881f5a85  libgfortran/generated/_abs_r4.F90
! 3677041b2901003005197c2e461b6bf0  libgfortran/generated/_abs_r8.F90
! 0de8298ac1fecb50423814528ebc080d  libgfortran/generated/_acos_r10.F90
! 7701868a3f25d228b566cd0bb15d9c67  libgfortran/generated/_acos_r16.F90
! 7c501fff5202a26db792f1d714b16385  libgfortran/generated/_acos_r4.F90
! ad46111c30b072aea83a266fde89d08f  libgfortran/generated/_acos_r8.F90
! 2ed12f61d75e2f296079c3d86bb4723c  libgfortran/generated/_acosh_r10.F90
! 1c8f5f943f6695b775a00beccb8f9893  libgfortran/generated/_acosh_r16.F90
! d7394800460d123541d8f859706fff08  libgfortran/generated/_acosh_r4.F90
! 56429891ff1445eb3f9757de6ba33a7a  libgfortran/generated/_acosh_r8.F90
! 2892e1195aa55ab36041af568b44a030  libgfortran/generated/_aimag_c10.F90
! e2ef3594269b49e43c330fbe7c4f7060  libgfortran/generated/_aimag_c16.F90
! 42957e19f6e7383cec3c7e708689dc60  libgfortran/generated/_aimag_c4.F90
! dd65dda52d86036f470ea7011b435e87  libgfortran/generated/_aimag_c8.F90
! 6caa9408776a5a4b94fde52d99b23325  libgfortran/generated/_aint_r10.F90
! 08b5760eb53170ddc8352dffdd8cb10e  libgfortran/generated/_aint_r16.F90
! 2016fef88e9799b77e90e486cec471b5  libgfortran/generated/_aint_r4.F90
! f9eea86b3a4133e873a149d1a48c6b41  libgfortran/generated/_aint_r8.F90
! 6e679732cfb26e23aaba6308d1d5735b  libgfortran/generated/_anint_r10.F90
! b4c83bd6edfd5e9527284fe297d29a53  libgfortran/generated/_anint_r16.F90
! cc4e6d7ac3064798711736f9288eec5b  libgfortran/generated/_anint_r4.F90
! f9bf5460080849e8a67ff8c70b699200  libgfortran/generated/_anint_r8.F90
! a676ad05e52ec63f3717bced50849262  libgfortran/generated/_asin_r10.F90
! 286434400cc2b8c38594bf3b492486b6  libgfortran/generated/_asin_r16.F90
! 9520afd7bd6ac25b55d2d896f2722da6  libgfortran/generated/_asin_r4.F90
! b01d3e5be02cd4999f791901f156c303  libgfortran/generated/_asin_r8.F90
! af24358810cc2d769e54fea233c0c6f1  libgfortran/generated/_asinh_r10.F90
! 0864d1b878131301a0e07d1cbe8411e0  libgfortran/generated/_asinh_r16.F90
! e73b267937f04e176bf6a371fc8823e5  libgfortran/generated/_asinh_r4.F90
! 10afc5327cad79d5914b8769152d3f46  libgfortran/generated/_asinh_r8.F90
! 7da6ea79cf15e2d5ebae84f05018d304  libgfortran/generated/_atan2_r10.F90
! 7959421d8d01070f7e5aae6fec5c6a53  libgfortran/generated/_atan2_r16.F90
! 8dd09a1c5dc1e4e2b5d06cb9b19c2981  libgfortran/generated/_atan2_r4.F90
! b3df15a28f11a45b7b348624f2618b96  libgfortran/generated/_atan2_r8.F90
! cf1669984fbc6baec52d0caa50e75962  libgfortran/generated/_atan_r10.F90
! 3fc5c386871349ee77c75cb3ca4d8331  libgfortran/generated/_atan_r16.F90
! eada211f92c270c9eee0d49f5f1ce152  libgfortran/generated/_atan_r4.F90
! 92b4e2c8ec48ed52b696dbc1068988ba  libgfortran/generated/_atan_r8.F90
! 244e88715771fa9391b487d7d1041e51  libgfortran/generated/_atanh_r10.F90
! 52ba4a1049713471c68b43432e96014c  libgfortran/generated/_atanh_r16.F90
! 300604912e42327e564a86a4e04a597a  libgfortran/generated/_atanh_r4.F90
! 4d0d56b83ed9ffdc7bddb6f9d00d3825  libgfortran/generated/_atanh_r8.F90
! c6378110a5ee90056e03529dc6c6a55c  libgfortran/generated/_conjg_c10.F90
! 4e75c55581e915ff65fd7ef9ffc87fa8  libgfortran/generated/_conjg_c16.F90
! e8308663f49f3ecf27ebc9105903ae74  libgfortran/generated/_conjg_c4.F90
! 5b585a85922d71b3504977deab4f59df  libgfortran/generated/_conjg_c8.F90
! b81bd5c7efa87cb10740a301bbb12aab  libgfortran/generated/_cos_c10.F90
! 97ef5fcf098c5c3ea781d34e5c951945  libgfortran/generated/_cos_c16.F90
! 57c0c84cfdcd464d80234048eb054bac  libgfortran/generated/_cos_c4.F90
! fb9630269f961c14fefbeb4a20e7e9b0  libgfortran/generated/_cos_c8.F90
! bd03cf585979ae242e2c2c664d3143d0  libgfortran/generated/_cos_r10.F90
! 128a668db3c02d18d2c273286e6bc87d  libgfortran/generated/_cos_r16.F90
! 72fd0228b6bf881cb4a69c8b405c210d  libgfortran/generated/_cos_r4.F90
! 4701e0813234a492a42855b03b6a0ee9  libgfortran/generated/_cos_r8.F90
! 994af30522ed46bc95d44769d5e8e2a8  libgfortran/generated/_cosh_r10.F90
! b1e3647af3bb89b09e015076d1816d25  libgfortran/generated/_cosh_r16.F90
! fe50c0627a880a83c1242b138f906984  libgfortran/generated/_cosh_r4.F90
! 275c6b40f84ebd1b8da1bc126ded6308  libgfortran/generated/_cosh_r8.F90
! b98116f54231be53ab93ab517218f1f4  libgfortran/generated/_dim_i16.F90
! 0b4cf64bf6573c79a5b45f46d7d83c68  libgfortran/generated/_dim_i4.F90
! 8d0b5bbc9923041ecb6e32c85ae67850  libgfortran/generated/_dim_i8.F90
! f2cab4b81466daa1467946a9ed5e279e  libgfortran/generated/_dim_r10.F90
! 8122459aaced118eb6c88b79c5b5df36  libgfortran/generated/_dim_r16.F90
! f34757127b87f81c38a0a1ca5ffc75ac  libgfortran/generated/_dim_r4.F90
! f833d6bca957863967029f7a2120b2fc  libgfortran/generated/_dim_r8.F90
! 90f6ba740883ef17dd4adc97a8e4920e  libgfortran/generated/_exp_c10.F90
! 21c8d269d995ca2f0a7492a51fc3e5e7  libgfortran/generated/_exp_c16.F90
! 763c0a6b3a8c32a91a422cfd422868bf  libgfortran/generated/_exp_c4.F90
! 27b625663dc6985e5490bf664f33cdf6  libgfortran/generated/_exp_c8.F90
! b267da796af4d6a9c8a6ffc1dc00ee71  libgfortran/generated/_exp_r10.F90
! 866830098acea086c70f2bfddc9e2676  libgfortran/generated/_exp_r16.F90
! 46ceb28c2e786538b612b3f0b5a65b07  libgfortran/generated/_exp_r4.F90
! 755e9d7d54982dcf614b8061970b35b5  libgfortran/generated/_exp_r8.F90
! 1b0a277607e82406d0ab88bef8c3c712  libgfortran/generated/_log10_r10.F90
! 2aadc796fe7b087d8f14abcc89a5dcd4  libgfortran/generated/_log10_r16.F90
! d8d704c60a81bad1068413d0a779be35  libgfortran/generated/_log10_r4.F90
! b2a9d38d9c7d4ef6ff6d79f5a82a9740  libgfortran/generated/_log10_r8.F90
! 539fe2944a82ffd85f8afa904dc25239  libgfortran/generated/_log_c10.F90
! 09e4ad70e6572f3e5bfa046df1252ca5  libgfortran/generated/_log_c16.F90
! cd22c651052a90881e75fc8e293979e5  libgfortran/generated/_log_c4.F90
! 43af494bb832719d0f84a7403ed5cf6e  libgfortran/generated/_log_c8.F90
! 2918dbc3221c1f9f2d78e901dc316e20  libgfortran/generated/_log_r10.F90
! 19437353f009ef9791b405cde8c3f109  libgfortran/generated/_log_r16.F90
! bb34ed0c0e51ea5f7fbed60258502ed9  libgfortran/generated/_log_r4.F90
! d153c6e3511d43aa694891457a17aa67  libgfortran/generated/_log_r8.F90
! 5005fdcfb9e3473edf430cc1bddcef22  libgfortran/generated/_mod_i16.F90
! 353acf821d6c36e8bd65f2046a618beb  libgfortran/generated/_mod_i4.F90
! 7174f7f915096646a8d4e0c50c2761b5  libgfortran/generated/_mod_i8.F90
! f5e018beb3f6c6d99b44e76d8b25ec86  libgfortran/generated/_mod_r10.F90
! c01306b5ee26aa2847e776ae0feb861a  libgfortran/generated/_mod_r16.F90
! f1fc8d68f2a31f2e364dd9470886d3de  libgfortran/generated/_mod_r4.F90
! a54b61343d6261a19f2578647c604d9b  libgfortran/generated/_mod_r8.F90
! 85643ee067eac7337b2689cd7e543e53  libgfortran/generated/_sign_i16.F90
! c277fa891899514f9f8230004454f0b6  libgfortran/generated/_sign_i4.F90
! 35438476deb9a0e26e7d17de660beb72  libgfortran/generated/_sign_i8.F90
! d9a785a16efe3cf51f9ba65c71ed600c  libgfortran/generated/_sign_r10.F90
! 9bc3f858027d041dc8b5e4d40ec7afd6  libgfortran/generated/_sign_r16.F90
! 8d11d3723ec1edd9472c2550d25903de  libgfortran/generated/_sign_r4.F90
! 25d7d67e9043e9604c96393b625ca64d  libgfortran/generated/_sign_r8.F90
! 3c279901d051feb12da1b434bae61c4a  libgfortran/generated/_sin_c10.F90
! 0548abee9f91d7d94dd406289e225451  libgfortran/generated/_sin_c16.F90
! 15bec414ce928cfb5c5288c454bfee04  libgfortran/generated/_sin_c4.F90
! 48ee548c96e2cc41a907217ea4320b6b  libgfortran/generated/_sin_c8.F90
! ad95cfc2273c2009914f35f791e4ca2e  libgfortran/generated/_sin_r10.F90
! be2adc7a9bd51604e090bc729910cd55  libgfortran/generated/_sin_r16.F90
! ced44a36bfe7645277cb5cf2b5e8de74  libgfortran/generated/_sin_r4.F90
! ea891f162b58138ac109938980e888a2  libgfortran/generated/_sin_r8.F90
! e7ab63a4a76fdb5f791db4b3be6ebd2d  libgfortran/generated/_sinh_r10.F90
! a1c637912aebf89202bebedae2b8f2f6  libgfortran/generated/_sinh_r16.F90
! 7ceeb71bd20b4cb298c285a8e139630b  libgfortran/generated/_sinh_r4.F90
! 0973dfb48280aacd963583468588e82c  libgfortran/generated/_sinh_r8.F90
! be020701c77ff3959aba3871c313c65e  libgfortran/generated/_sqrt_c10.F90
! 84c74ae44c2050ef4987487e3f5d01a4  libgfortran/generated/_sqrt_c16.F90
! c494c201bb0f7b3275b12ab5f26a921b  libgfortran/generated/_sqrt_c4.F90
! da853d92058526b575137b6b24277cb3  libgfortran/generated/_sqrt_c8.F90
! cc0a7f7be27ac9baa4226821198d69ee  libgfortran/generated/_sqrt_r10.F90
! e75db247c99beb57b5c21beafa381979  libgfortran/generated/_sqrt_r16.F90
! 625054501c4e76676e2bc1b80678625e  libgfortran/generated/_sqrt_r4.F90
! 43541b38daafeadca13ad82075458abe  libgfortran/generated/_sqrt_r8.F90
! 6392fbe1c0fb564c9827b63b26169e49  libgfortran/generated/_tan_r10.F90
! f7ce4818f09c4da9b2bc5ee722b938e2  libgfortran/generated/_tan_r16.F90
! 833b53a931337914a9a9e98bc328d7bf  libgfortran/generated/_tan_r4.F90
! f8312cf70ac52dd7f657862a78d0d806  libgfortran/generated/_tan_r8.F90
! 598a278baed1ef3df273aeed50defdc9  libgfortran/generated/_tanh_r10.F90
! e53a7c9ecd9737fdf881bcc85fc464b0  libgfortran/generated/_tanh_r16.F90
! 27abb4542f002e6efa9f8027ad4711f1  libgfortran/generated/_tanh_r4.F90
! c18e8f00389e8f7efb29611c790c89c4  libgfortran/generated/_tanh_r8.F90
! 4a4ca219cfb94095bd3d225fe17521f4  libgfortran/generated/all_l1.c
! 15af1ac3d2165e908f5ca1aae3a9a5c7  libgfortran/generated/all_l16.c
! 5b33b1de93a26e84ba1988757845e65e  libgfortran/generated/all_l2.c
! d4e190b54d3d6e0f23d13d665a915b36  libgfortran/generated/all_l4.c
! 0ae035f5fb07cd87abf7b8d48d596d66  libgfortran/generated/all_l8.c
! a0d0f485ba11d421f450ce5a62f02e08  libgfortran/generated/any_l1.c
! 3624bdb026aac47753369e4376c829fb  libgfortran/generated/any_l16.c
! 0b3b24b25145612caeae3cb74308d993  libgfortran/generated/any_l2.c
! 5c30c77303c2c45a80ddc467a09a3f25  libgfortran/generated/any_l4.c
! e8c7b9579c1b7116fc23e532c0e778c3  libgfortran/generated/any_l8.c
! a9d662b382852da845b458644a3c9e79  libgfortran/generated/bessel_r10.c
! f48e4696da1942f2739092eb02fe7f79  libgfortran/generated/bessel_r16.c
! 7d5c670b6eff5765de894ddd1cd0c427  libgfortran/generated/bessel_r4.c
! 11ab4bcce9e38338287471d1194b411d  libgfortran/generated/bessel_r8.c
! f687141346fc93536dec19119802825b  libgfortran/generated/count_16_l.c
! fb918102939692a7ef93bf4e7c060a04  libgfortran/generated/count_1_l.c
! 16a2c353229b34cd5db46774b6a16116  libgfortran/generated/count_2_l.c
! 899160fb29386e4d5c128b8e35b02a28  libgfortran/generated/count_4_l.c
! 64ef9da73b2cd8b21084083638efca2f  libgfortran/generated/count_8_l.c
! 3b8d8f770d843748989c45075f6245c1  libgfortran/generated/cshift0_c10.c
! 14480689af67da790497f0fa562a3228  libgfortran/generated/cshift0_c16.c
! 8a94d222d3c9a38e7494a9764ac8726a  libgfortran/generated/cshift0_c4.c
! 1494942f8a91725565a1d653bae86d54  libgfortran/generated/cshift0_c8.c
! 42b3589eb92995e83932519062a9c241  libgfortran/generated/cshift0_i1.c
! b102d65b6070f06666cb338ea3700c4a  libgfortran/generated/cshift0_i16.c
! 5bed415151cd0d0e6d5378775e57e197  libgfortran/generated/cshift0_i2.c
! 8406468308998086f2cb25ec8e6206fb  libgfortran/generated/cshift0_i4.c
! e0c418cc6e427f37540ebf3e8d7b58d0  libgfortran/generated/cshift0_i8.c
! f299db8afcd8acc449d13d7e8b3ea3bd  libgfortran/generated/cshift0_r10.c
! 97fe88de6c52cceaea82e10a65a236ae  libgfortran/generated/cshift0_r16.c
! b25bb6d1ae7ecf0d2c4efaecd1d6b20c  libgfortran/generated/cshift0_r4.c
! dbf8962636b216440a183dd296686128  libgfortran/generated/cshift0_r8.c
! 1ed8bc24c113666c682ca451e9ff7e91  libgfortran/generated/cshift1_16.c
! 04ea24e144527b5aa2230c6e943a1c3a  libgfortran/generated/cshift1_16_c10.c
! 588a27ddca963d315e061b3be1212e8f  libgfortran/generated/cshift1_16_c16.c
! 6298362e23dde1631ac3281edcc5c04c  libgfortran/generated/cshift1_16_c4.c
! 87c1de1b59ff0da9f1336e04df465668  libgfortran/generated/cshift1_16_c8.c
! 80194bf33d76ae119238cb722a4c50f6  libgfortran/generated/cshift1_16_i1.c
! 7619302ec37af47e924d45f9165581c6  libgfortran/generated/cshift1_16_i16.c
! 0bc035895f15d396aca5fd05e4251752  libgfortran/generated/cshift1_16_i2.c
! 19f115da614f601f0cdfec1aca8cb67b  libgfortran/generated/cshift1_16_i4.c
! 5b478c1c3e54097d2742da3b40cb9d3b  libgfortran/generated/cshift1_16_i8.c
! 20d9902dbb7d0cdbbd99bad9d21ca311  libgfortran/generated/cshift1_16_r10.c
! 7159b9467d045b9d08f264f9a2884b8c  libgfortran/generated/cshift1_16_r16.c
! f077f88edb5c2889026a8c4f2ac3b109  libgfortran/generated/cshift1_16_r4.c
! 747556f730340936ee354dbdcecabae1  libgfortran/generated/cshift1_16_r8.c
! 5778e3de3fe9db889a579518ad216482  libgfortran/generated/cshift1_4.c
! e97d2b6cbd4162f183c6ed1535c359bd  libgfortran/generated/cshift1_4_c10.c
! 3f73451e7e02a210bfdde8d7f84d2a65  libgfortran/generated/cshift1_4_c16.c
! 9a173d56a6141bf612823fde92cfc95b  libgfortran/generated/cshift1_4_c4.c
! ee2cf7433f7c8560dc4bac4f5633e4e5  libgfortran/generated/cshift1_4_c8.c
! b9385f80b5184af3827adf22834f85a0  libgfortran/generated/cshift1_4_i1.c
! 7663e20220dc74c66622ebcb2a577c15  libgfortran/generated/cshift1_4_i16.c
! 3afa920cd0faea7f8bf7afe720319456  libgfortran/generated/cshift1_4_i2.c
! 8188e43fb190dd5dc884b2228bd60c9c  libgfortran/generated/cshift1_4_i4.c
! 68fe8e7daabf2b3ed0e66b9b11ff4cf9  libgfortran/generated/cshift1_4_i8.c
! 8d6cc9987b7e4c7e9750383779be450e  libgfortran/generated/cshift1_4_r10.c
! a54b5885b027446e4d833aeae2b9aad1  libgfortran/generated/cshift1_4_r16.c
! 0fe45e8365dff7d1d912e7629e83289f  libgfortran/generated/cshift1_4_r4.c
! 0626bc5f01362beac76907f8a2238db7  libgfortran/generated/cshift1_4_r8.c
! f420b3e97516f95f70650d01b1057196  libgfortran/generated/cshift1_8.c
! 6ba08159397ee73dc10690df57ba40eb  libgfortran/generated/cshift1_8_c10.c
! c6829ea3dfaeed6849d142155d8f625c  libgfortran/generated/cshift1_8_c16.c
! fbb3bf31274c5218d3e99ff91a774347  libgfortran/generated/cshift1_8_c4.c
! ef9c420385e31a0077139e393d2e982b  libgfortran/generated/cshift1_8_c8.c
! 7e9c465fb0e9a731a7def0aeadd6f6a5  libgfortran/generated/cshift1_8_i1.c
! 75167bc94ba8ea86f3d89de7274de294  libgfortran/generated/cshift1_8_i16.c
! 23c4c34e7cfe4cb8faaacb5ffad800e9  libgfortran/generated/cshift1_8_i2.c
! 400b6233a7313d93d44ddd25a5190066  libgfortran/generated/cshift1_8_i4.c
! 21d1a2fa9fc03c2a7db84dff09cb8811  libgfortran/generated/cshift1_8_i8.c
! ec294e6000b276de79b457f50b8f8a25  libgfortran/generated/cshift1_8_r10.c
! bbf23f1eb16e5160e10288fb441da678  libgfortran/generated/cshift1_8_r16.c
! 003bc6a5d23aba7af6a4c33ba993624b  libgfortran/generated/cshift1_8_r4.c
! 1eab4552e340d034d5fd6337f40626d0  libgfortran/generated/cshift1_8_r8.c
! c7ebd1aa1bfcac1e602ef70a025cb4ec  libgfortran/generated/eoshift1_16.c
! e007ce0eaf31198295cc242be99b97cf  libgfortran/generated/eoshift1_4.c
! 3cc24ed65c01abcd6c0122076095ffb2  libgfortran/generated/eoshift1_8.c
! c99e84a1dba9c346732a50613db2939d  libgfortran/generated/eoshift3_16.c
! fe455ee6d092195e2de1695ddbcecc32  libgfortran/generated/eoshift3_4.c
! f2d717212f04d86c7d7506d05dca4467  libgfortran/generated/eoshift3_8.c
! d2240ba90deaab5cc1af8c93260b1e08  libgfortran/generated/findloc0_c10.c
! dcf10286e1394538650de20b22099c8a  libgfortran/generated/findloc0_c16.c
! e48f365af28d29abbe707013d7dfb209  libgfortran/generated/findloc0_c4.c
! 4633caebe5c099d4641148d61a10a28c  libgfortran/generated/findloc0_c8.c
! 4d1ceb5cf7258a0c9dc0a24004abb2fa  libgfortran/generated/findloc0_i1.c
! 81978d274312330842ae23c5b92aa5cd  libgfortran/generated/findloc0_i16.c
! 5292b8514514d529220621da50cdaef6  libgfortran/generated/findloc0_i2.c
! 12cbe5150aa9d78570ebfcef84610827  libgfortran/generated/findloc0_i4.c
! 012fa532aae3434786bbc8f58978c797  libgfortran/generated/findloc0_i8.c
! 931bac1fd936c18c37197c3a1f4be2fd  libgfortran/generated/findloc0_r10.c
! 8391d4ec327d546dc10010be63de1590  libgfortran/generated/findloc0_r16.c
! 704dd5a5f89cd4670b690f68d3b1c438  libgfortran/generated/findloc0_r4.c
! 18bd2d8774bce66c32ce604aa2e3cfe7  libgfortran/generated/findloc0_r8.c
! 6f29f1f5c1d30017f68ad64e0d34fb2e  libgfortran/generated/findloc0_s1.c
! 0ab8d63ace0eef2b6016a056043681ba  libgfortran/generated/findloc0_s4.c
! 13852ade6b66370d35e93ead68de6428  libgfortran/generated/findloc1_c10.c
! c0c7c77d57f305a3a77974df68763ff9  libgfortran/generated/findloc1_c16.c
! 6c947129226c49b050e55b7082e127a7  libgfortran/generated/findloc1_c4.c
! d82939bddbac1ea2a06d0d28015c3659  libgfortran/generated/findloc1_c8.c
! 28275f56b8b20d1551e762bddd234d35  libgfortran/generated/findloc1_i1.c
! 744f8bf41a232f7090c89521021212f7  libgfortran/generated/findloc1_i16.c
! 68135b157e448c9fcf1b0765f03fefe6  libgfortran/generated/findloc1_i2.c
! 9398fd9aba853186b665a5a37ddaed0b  libgfortran/generated/findloc1_i4.c
! 483a1fbe5663f69218626f61c21f8845  libgfortran/generated/findloc1_i8.c
! 9bf0124a5148853c689461033a09e57c  libgfortran/generated/findloc1_r10.c
! ef9d583c25228b49501677156def21c6  libgfortran/generated/findloc1_r16.c
! 643aa70a825348b141d3a44dc68b15ac  libgfortran/generated/findloc1_r4.c
! 1609c3948659d3303199cccff79273f6  libgfortran/generated/findloc1_r8.c
! 0c2575edb3a87c151e61b95bf9d7404d  libgfortran/generated/findloc1_s1.c
! e863a500d6501155c6d0df0e9d29ff67  libgfortran/generated/findloc1_s4.c
! 54fe43ebdea8ee3afcc3e3dbe8a3af6b  libgfortran/generated/findloc2_s1.c
! 7d4fe3c27d79fa480dbcc4c6e55e45f4  libgfortran/generated/findloc2_s4.c
! ebe317b03af8949032027b2f5748212b  libgfortran/generated/iall_i1.c
! 1a1aed9f4b7b651bc5e300d7bbd4dd04  libgfortran/generated/iall_i16.c
! fb781ac7c3125be095533186a0bd5dc7  libgfortran/generated/iall_i2.c
! a23885ff1d1859bcc09af484680b6120  libgfortran/generated/iall_i4.c
! b12ee414aed7910a133ea3f27d93a26e  libgfortran/generated/iall_i8.c
! 1ee40957daf444d63f19da9fda5264e8  libgfortran/generated/iany_i1.c
! c3537c923421cf6edb92e3a4f6d060c1  libgfortran/generated/iany_i16.c
! 7778b79fb9541fd99b71ebd49d068fe0  libgfortran/generated/iany_i2.c
! 6032db93949f5399122ed2359d19403a  libgfortran/generated/iany_i4.c
! 903c6bc277d8c272f83bd80671a07813  libgfortran/generated/iany_i8.c
! 31bf01fb42e89557e0aff12575debdba  libgfortran/generated/in_pack_c10.c
! a838c9843c82981b241ae9d033300c9a  libgfortran/generated/in_pack_c16.c
! 866fbf79a1dfc29e729c0df4351134da  libgfortran/generated/in_pack_c4.c
! 0a9cdc41cba23c5213eb8db2e5465a51  libgfortran/generated/in_pack_c8.c
! 1c5944bec8c29f899b30a13093d49b6b  libgfortran/generated/in_pack_i1.c
! ba892f601c7654ec8db431a7ae187988  libgfortran/generated/in_pack_i16.c
! 288038e0ca3d90cfedef274d3a3e3603  libgfortran/generated/in_pack_i2.c
! d19f7af9dcfe0a733da2aea6bed32357  libgfortran/generated/in_pack_i4.c
! ed16e3307d7eeae2eee2c7f02f6064ba  libgfortran/generated/in_pack_i8.c
! ba060af9efd608cdfda0dc1e8f2651da  libgfortran/generated/in_pack_r10.c
! ecbcfe5e6b0d2ccb0775a6280bfbfbd6  libgfortran/generated/in_pack_r16.c
! a740764a0686df88afd6ceaa3a6cbcff  libgfortran/generated/in_pack_r4.c
! d0c316705ebeeda48adc149a4c2728ae  libgfortran/generated/in_pack_r8.c
! 2243fd1eb81fe4d444ca2277d245829e  libgfortran/generated/in_unpack_c10.c
! 09ba62947467c44df0cad364b5d18ed9  libgfortran/generated/in_unpack_c16.c
! 38ffd371eb116b64ac1cc8093ed8d102  libgfortran/generated/in_unpack_c4.c
! 7d2c6914e8756bff5d6dbc4ccac6fcf3  libgfortran/generated/in_unpack_c8.c
! 9a2b0925b4777cc2c57ee94043aa1920  libgfortran/generated/in_unpack_i1.c
! 3275aed7dd796fd2fa528cc77a166f38  libgfortran/generated/in_unpack_i16.c
! 4fefbdf158f963bce352f78476b78be8  libgfortran/generated/in_unpack_i2.c
! 74d2e8b2b1a5ca5d0efa023e7506ef81  libgfortran/generated/in_unpack_i4.c
! e999aae9bc5be811f5f7ed477182f2eb  libgfortran/generated/in_unpack_i8.c
! ba26ebe31daf88441f45b2d6ac5baaa5  libgfortran/generated/in_unpack_r10.c
! a03be043a4be36364022446767d458a0  libgfortran/generated/in_unpack_r16.c
! 9a3df4ee7e652b4931b0048353cbcdea  libgfortran/generated/in_unpack_r4.c
! 0964525c1287a59a7d69175e732f4d8e  libgfortran/generated/in_unpack_r8.c
! bbbb96283bd4a2d82cf73e6d362b9dfd  libgfortran/generated/iparity_i1.c
! b25d51d935fc4bf9e7f6441aebdf9f83  libgfortran/generated/iparity_i16.c
! 5abe700447388ce93d3e496137a07d31  libgfortran/generated/iparity_i2.c
! 76df7333ae6e68235ad332662b4c9b62  libgfortran/generated/iparity_i4.c
! 3052465c636d58af6dda1fc3400c3bf6  libgfortran/generated/iparity_i8.c
! 9b16d6c94a3a4977201c8e38f59b9f06  libgfortran/generated/matmul_c10.c
! bb673d4a68066643bb55dcb02b3b4b5c  libgfortran/generated/matmul_c16.c
! 013650c33ae6cb8c015beb59bf362bfb  libgfortran/generated/matmul_c4.c
! fb9fd3b887cf32fac1bdf4e1f08cf149  libgfortran/generated/matmul_c8.c
! 0a136bfa6ec20087d744969d0040d39d  libgfortran/generated/matmul_i1.c
! 34d191278b656a215fc944b16c363e80  libgfortran/generated/matmul_i16.c
! f788ec826a12078b032ee67ebd274873  libgfortran/generated/matmul_i2.c
! cc9ab9e84d41cf45da7ef18f70b5e308  libgfortran/generated/matmul_i4.c
! 383978fbe77003b88702d561fd079f9e  libgfortran/generated/matmul_i8.c
! ece257028753bd4ab70729183dbad001  libgfortran/generated/matmul_l16.c
! 4d54f6c935764f802c3ba402f00b7c9e  libgfortran/generated/matmul_l4.c
! b4ae11acd2d5ae1aefb2abe0fdb2ed6b  libgfortran/generated/matmul_l8.c
! 34953588a8c75ad57638a7d38a4761e9  libgfortran/generated/matmul_r10.c
! 6cb489053ab415cd129f855d78a949dc  libgfortran/generated/matmul_r16.c
! edb4bb5374d1ac11adc08d641eb258e3  libgfortran/generated/matmul_r4.c
! a80f9cee36612b5f12a67b4cb885cbb1  libgfortran/generated/matmul_r8.c
! e65f397a99e27f84268c6331b1e40ad0  libgfortran/generated/matmulavx128_c10.c
! 2b1b24acefe1b4ff743366985c73d4a8  libgfortran/generated/matmulavx128_c16.c
! 86312d001c3a049d5cc2ba831b069ba2  libgfortran/generated/matmulavx128_c4.c
! 61e9f4ff6e9b19a32ba9e57cf6dd0390  libgfortran/generated/matmulavx128_c8.c
! 638c177a7dbe8b69ca9ba1b1c66cced3  libgfortran/generated/matmulavx128_i1.c
! a91b335ecc628d247471593df548dd7f  libgfortran/generated/matmulavx128_i16.c
! 533e45c3e81ae8ff5625b432a60880d6  libgfortran/generated/matmulavx128_i2.c
! 65c83f78d22da85c6ef5c573c0b20195  libgfortran/generated/matmulavx128_i4.c
! 703463df2a14fda229f01c794a198d53  libgfortran/generated/matmulavx128_i8.c
! 4f483aafb3edd3257e5b369688ced782  libgfortran/generated/matmulavx128_r10.c
! fea0f247b0886fa44177071b6f3bd8a5  libgfortran/generated/matmulavx128_r16.c
! 2c54a4729ba8ebbd94d21735ccc7e9d8  libgfortran/generated/matmulavx128_r4.c
! 31d8b5d958d03b506e518ea40c97bb3b  libgfortran/generated/matmulavx128_r8.c
! 4b509b73fb4e4caf9296991b9f45d408  libgfortran/generated/maxloc0_16_i1.c
! 19de6f79b130386257d4a43079b6e29f  libgfortran/generated/maxloc0_16_i16.c
! 281d7dddcdda6ee16046ede0c495f6c5  libgfortran/generated/maxloc0_16_i2.c
! 8d17562be5845ba14307549bf72554b8  libgfortran/generated/maxloc0_16_i4.c
! 13682e0f632748f3ecba67db1e269f2b  libgfortran/generated/maxloc0_16_i8.c
! 7a893e0a25fc6ee76af0b5566a5af62e  libgfortran/generated/maxloc0_16_r10.c
! 3f0c9ac632b2f2cc48c9c76b3fe1d9c6  libgfortran/generated/maxloc0_16_r16.c
! 0adc8a53798ef124bd4149199efd18f7  libgfortran/generated/maxloc0_16_r4.c
! 659fe61d366e96be11429f86d5e45ed6  libgfortran/generated/maxloc0_16_r8.c
! 4463128146703db398921f43ab37c720  libgfortran/generated/maxloc0_16_s1.c
! 3fa15fe9d80e03cec45f447a812be00f  libgfortran/generated/maxloc0_16_s4.c
! 5080f0a054aa16646e61eddf62dca206  libgfortran/generated/maxloc0_4_i1.c
! 6333960104e2053701c26b118e43416c  libgfortran/generated/maxloc0_4_i16.c
! fe2d61d650828cb872484fd4bb344819  libgfortran/generated/maxloc0_4_i2.c
! 083e3b480d8c5ed60c22c43bc98b7f2a  libgfortran/generated/maxloc0_4_i4.c
! f6f45862d0956ca12a3896f78cded660  libgfortran/generated/maxloc0_4_i8.c
! 4fc3374e2baacb7967ba6cda71b70e74  libgfortran/generated/maxloc0_4_r10.c
! 22e22b4c65ce09c0efb874b03fff9e5d  libgfortran/generated/maxloc0_4_r16.c
! 85da00f4c81f7beba34486566bcb70d4  libgfortran/generated/maxloc0_4_r4.c
! f0e5ae401ac0649a4343b95d6c1a757c  libgfortran/generated/maxloc0_4_r8.c
! 6d9d0264135a716720ac94f75b4988ad  libgfortran/generated/maxloc0_4_s1.c
! 2a12ff3216e8443cd3edebf22a522927  libgfortran/generated/maxloc0_4_s4.c
! 035e221b1af800d4d9b890fdfaf60570  libgfortran/generated/maxloc0_8_i1.c
! 9ba0a2ee4649b58406047fa19ebab0cf  libgfortran/generated/maxloc0_8_i16.c
! dde9d0b6b50d020a7f42f0979e94ba64  libgfortran/generated/maxloc0_8_i2.c
! 14705fefd3ab5a3a29b17f593331a2c6  libgfortran/generated/maxloc0_8_i4.c
! ddef613a252aa3aac26a007f8442cc2e  libgfortran/generated/maxloc0_8_i8.c
! 37ce69f07af2045eff736e42df6ec2d6  libgfortran/generated/maxloc0_8_r10.c
! fcec2a90c52efa5fb1cd3588bbe21b09  libgfortran/generated/maxloc0_8_r16.c
! eac2b1f4102b15d2b9f2fff99699d553  libgfortran/generated/maxloc0_8_r4.c
! 259aa40cb24c998fdb93328422177c4b  libgfortran/generated/maxloc0_8_r8.c
! c90266c4664845afdd3bc9062ba66a96  libgfortran/generated/maxloc0_8_s1.c
! a0960e245161e9adbd06adfcdb65a240  libgfortran/generated/maxloc0_8_s4.c
! 3fa120705c8c820c9a609ac4920567cd  libgfortran/generated/maxloc1_16_i1.c
! 36f3f7e7b79c3e36e293541b9ba6dc84  libgfortran/generated/maxloc1_16_i16.c
! 8913ad75b497564a3d5a36b4280cfa50  libgfortran/generated/maxloc1_16_i2.c
! 537175b13359bf5e3ea745b8cbc383ab  libgfortran/generated/maxloc1_16_i4.c
! 32dbbe5724d736bf8d0bb872960d51b2  libgfortran/generated/maxloc1_16_i8.c
! 0b5393d45a72f605cb451fed7adef4db  libgfortran/generated/maxloc1_16_r10.c
! 4740567d50d9c117fde6510386ebe8c0  libgfortran/generated/maxloc1_16_r16.c
! 698d337b11418419fb5e1f916e868080  libgfortran/generated/maxloc1_16_r4.c
! aa1abb0773cb1cbdd212542f1b8dbcad  libgfortran/generated/maxloc1_16_r8.c
! 4dbeb4c168e563ae71eac00cc61653fd  libgfortran/generated/maxloc1_16_s1.c
! 7849b11db4992d9b9634894c9ddc2a9a  libgfortran/generated/maxloc1_16_s4.c
! efac3e13466116f3ff1caa5d92470932  libgfortran/generated/maxloc1_4_i1.c
! 1877695dd4d09c18a5d0fb5120c9a95f  libgfortran/generated/maxloc1_4_i16.c
! 73ea753b073427e1411daa880a2c3b99  libgfortran/generated/maxloc1_4_i2.c
! 4e529d31b0859322f5de572c78c1432d  libgfortran/generated/maxloc1_4_i4.c
! f59c7acba60e94c848d0f53db54d16ca  libgfortran/generated/maxloc1_4_i8.c
! 798b627c778fd23d175f7b89115bf6dd  libgfortran/generated/maxloc1_4_r10.c
! 2d5b05ca8cefaf44d613afd18044d9cc  libgfortran/generated/maxloc1_4_r16.c
! a3ba5ff92213b4ea5fc007cd19713b31  libgfortran/generated/maxloc1_4_r4.c
! 28d6ac887859a946747a16fce96011ce  libgfortran/generated/maxloc1_4_r8.c
! 0bae0a1ccbdadc832c85032e1428e805  libgfortran/generated/maxloc1_4_s1.c
! 33b32e5b05232fdc4bc8cca6e2ad8709  libgfortran/generated/maxloc1_4_s4.c
! 90379e4079130ede6cb6461c80eab935  libgfortran/generated/maxloc1_8_i1.c
! 59e918f8759c9684f9c273cee5b73d56  libgfortran/generated/maxloc1_8_i16.c
! 97dfb6883512b2b3d484715a1d985526  libgfortran/generated/maxloc1_8_i2.c
! c536f0fd4c0f13065e4918321c0dc040  libgfortran/generated/maxloc1_8_i4.c
! 912f726c5e70632745d1fff1e7681836  libgfortran/generated/maxloc1_8_i8.c
! fb91e1a38ee74da91703176e8f77adfb  libgfortran/generated/maxloc1_8_r10.c
! 84fc96625159376931028e1cb6d67ae6  libgfortran/generated/maxloc1_8_r16.c
! 7d2c8669880bf211e6a46e66405f0020  libgfortran/generated/maxloc1_8_r4.c
! b9025874cb57f1f2e37d96df75dcfe83  libgfortran/generated/maxloc1_8_r8.c
! 4e0f1b406202fa52da1d46cdb34ff267  libgfortran/generated/maxloc1_8_s1.c
! 22f30daf3442e73780fe120b4c99dbee  libgfortran/generated/maxloc1_8_s4.c
! 2e4baec42819c80c8334fe0f77a95ccd  libgfortran/generated/maxloc2_16_s1.c
! e437aaff3e6655734470bf77ae62b892  libgfortran/generated/maxloc2_16_s4.c
! c32f947b48940cbdbe7bcbb7584df9ef  libgfortran/generated/maxloc2_4_s1.c
! 342bb77aa25be31aded5bec9756f7ec4  libgfortran/generated/maxloc2_4_s4.c
! 9437580694a4a75111e9e844760cc445  libgfortran/generated/maxloc2_8_s1.c
! 87fb8708efe3f652edc6500ba8053541  libgfortran/generated/maxloc2_8_s4.c
! 8382ec0b2c152ce5d37015644785623f  libgfortran/generated/maxval0_s1.c
! 37a4d5d5e373edb55ad4312bbddddecd  libgfortran/generated/maxval0_s4.c
! 5e1baa97d48df005e1d0eda9f5dc0e63  libgfortran/generated/maxval1_s1.c
! bc56e0578effc5d75fed5cc5ced24a45  libgfortran/generated/maxval1_s4.c
! 97d4ff2b97c8e8f91bb8d7adcb6aa2e1  libgfortran/generated/maxval_i1.c
! c1c682ad2b07aa1d0862d16bbbc9748e  libgfortran/generated/maxval_i16.c
! 96316898c4ee290ad6dcd1dc14a9fa4c  libgfortran/generated/maxval_i2.c
! 92e6e9483ecf7b7403b22e2886040040  libgfortran/generated/maxval_i4.c
! 39c8d28da168f670a210639573569902  libgfortran/generated/maxval_i8.c
! c1d4e707e9ec63adfea98ec8c41b1c9a  libgfortran/generated/maxval_r10.c
! cd9a08d1293d168d7ff0d862e3c8cfea  libgfortran/generated/maxval_r16.c
! c21d3b67bfc57dd6e91feb2ab1705187  libgfortran/generated/maxval_r4.c
! 9b5289187592f6e0bcd4c51a335a510b  libgfortran/generated/maxval_r8.c
! a9740d79835d06a201d8728337f20879  libgfortran/generated/minloc0_16_i1.c
! 405cc9d6df46671b30fc0c3a3a01db31  libgfortran/generated/minloc0_16_i16.c
! 48437b60d1b2f2e107dfe9e9693279a8  libgfortran/generated/minloc0_16_i2.c
! c2695377b98382754694c0ee46cedd7a  libgfortran/generated/minloc0_16_i4.c
! 56ba3e6696576c4e2215722d9f8f3bbf  libgfortran/generated/minloc0_16_i8.c
! 9e1f2772ac461f3e9657574f625d3244  libgfortran/generated/minloc0_16_r10.c
! f6fd7e282c8abf31da8729c26a841c08  libgfortran/generated/minloc0_16_r16.c
! 81ee5cb73bdacec772ec584190668eaf  libgfortran/generated/minloc0_16_r4.c
! c9c3c94f5e9bcdfb7dd9bb6cd736d136  libgfortran/generated/minloc0_16_r8.c
! 0bb604d8302f713610f8bd53b2277013  libgfortran/generated/minloc0_16_s1.c
! f83c56f663daaa97220edb391af8ad91  libgfortran/generated/minloc0_16_s4.c
! 023e7b283749eebb9940a03f847fedd5  libgfortran/generated/minloc0_4_i1.c
! 3e4edf56af7e5d73f115705f9ed5b252  libgfortran/generated/minloc0_4_i16.c
! 708ae2973d29be42455d9098e2964456  libgfortran/generated/minloc0_4_i2.c
! f7d28c16c7f1d499ecba348d558e1f48  libgfortran/generated/minloc0_4_i4.c
! 88e114b0beb9fe516b102b3da3f4c00f  libgfortran/generated/minloc0_4_i8.c
! 1f9a660941bfb1a2e12139dfc11807f4  libgfortran/generated/minloc0_4_r10.c
! 40d8f109151728d0931be21985be3a03  libgfortran/generated/minloc0_4_r16.c
! 194e834b7eabeeefb4ad7b2bcd57bf68  libgfortran/generated/minloc0_4_r4.c
! 7c2663b079705633d0fa5f8961759c4d  libgfortran/generated/minloc0_4_r8.c
! 99e179567d48dabd4118920ff0cd8740  libgfortran/generated/minloc0_4_s1.c
! 9c42a847ee1521a3f027e89b360ea5f4  libgfortran/generated/minloc0_4_s4.c
! 07ddac4df07c96eb0eab2ea4b5f43758  libgfortran/generated/minloc0_8_i1.c
! 1ddb8f13e1463c38f49ee178c3f6deaf  libgfortran/generated/minloc0_8_i16.c
! 8ed13dd7fc6ae0d888da6171a8b9e7dc  libgfortran/generated/minloc0_8_i2.c
! 5cd75008722ee5ffdcd4946828b8af1a  libgfortran/generated/minloc0_8_i4.c
! 7ea8e04840068c9d02094f682b9d6f79  libgfortran/generated/minloc0_8_i8.c
! e1ab21ed58c398cf4ad584e71648cf76  libgfortran/generated/minloc0_8_r10.c
! f69228c8003a4f02207c9726a34e1ab3  libgfortran/generated/minloc0_8_r16.c
! 9fa715f2dfebf6bf803fc57c57f23449  libgfortran/generated/minloc0_8_r4.c
! 154e5913b0a92f401cf23aa20e4d27c6  libgfortran/generated/minloc0_8_r8.c
! 457dea84d4a9373b4cf8c7f96047eb3c  libgfortran/generated/minloc0_8_s1.c
! 52a6d0b627ce031d290d4c14277fb84a  libgfortran/generated/minloc0_8_s4.c
! 8c039054f593e71be41d3287c07d7c20  libgfortran/generated/minloc1_16_i1.c
! 55618db1d6ca023b7d6dbefe64a51819  libgfortran/generated/minloc1_16_i16.c
! 6639c5aa5fed63be51213e599e69d2b2  libgfortran/generated/minloc1_16_i2.c
! b8455e696670705ef387dc7ee09d24cd  libgfortran/generated/minloc1_16_i4.c
! d1ca6990baad0041fcb06611d5eb95a7  libgfortran/generated/minloc1_16_i8.c
! 2b077a04f9c735f9c9be5bf224746339  libgfortran/generated/minloc1_16_r10.c
! 467351a8e3a54d4bfb493a55668e3521  libgfortran/generated/minloc1_16_r16.c
! 105692eef337cf69bd6de6e1c8dc7eae  libgfortran/generated/minloc1_16_r4.c
! a49b071ff53d13711a7c658a3e1a55e2  libgfortran/generated/minloc1_16_r8.c
! 840624503e99e28d506f26128a4722ff  libgfortran/generated/minloc1_16_s1.c
! 2c1a6d6aa8b00baa8f53391853af83e9  libgfortran/generated/minloc1_16_s4.c
! c1610601f8c354b23ad57aa80a7a1f8b  libgfortran/generated/minloc1_4_i1.c
! ed6191d20738e12fd2de78b52acc4911  libgfortran/generated/minloc1_4_i16.c
! bf98188fe1777ff1ec923837ff86698f  libgfortran/generated/minloc1_4_i2.c
! 60b6f0e51839868cd1a482638c19503b  libgfortran/generated/minloc1_4_i4.c
! b638915d61ae966529e67ec141e6b86b  libgfortran/generated/minloc1_4_i8.c
! 8b6ccaa994cbb299e7800f70fde2ccf9  libgfortran/generated/minloc1_4_r10.c
! 3530f0f5556b7f62b69ce55beb667536  libgfortran/generated/minloc1_4_r16.c
! 02c59f85577e6c8b7250f22877c72fb6  libgfortran/generated/minloc1_4_r4.c
! c19619c72e04c7f12176b18a47663133  libgfortran/generated/minloc1_4_r8.c
! 4a56bd09bdb207c1f2d8dca58dd91565  libgfortran/generated/minloc1_4_s1.c
! 93fde3b3d4c0e5da1e7661e9bb6dfba7  libgfortran/generated/minloc1_4_s4.c
! 30ac7451404c2fbfa16718ed039b55bd  libgfortran/generated/minloc1_8_i1.c
! 3b74b0f513f395dee93bf732241e8a7a  libgfortran/generated/minloc1_8_i16.c
! b75e397133819b67bbfa6509c4fe913a  libgfortran/generated/minloc1_8_i2.c
! b22c03806dd4c90a60ba6e9ee9540d7c  libgfortran/generated/minloc1_8_i4.c
! 50438598aaf83a49c8571ec46a51cdc9  libgfortran/generated/minloc1_8_i8.c
! ca47f04093b543be3e1b7390634cc2da  libgfortran/generated/minloc1_8_r10.c
! a30e4a5f8684ac332272b96835e11267  libgfortran/generated/minloc1_8_r16.c
! 4a05ef0d325ac1ecd6e7c76eb5fe525c  libgfortran/generated/minloc1_8_r4.c
! d3c1691c997e90ff0796c88ae2da318a  libgfortran/generated/minloc1_8_r8.c
! 0e54a4367febf1e207222f6e0ed5d93b  libgfortran/generated/minloc1_8_s1.c
! ad53ef1b37b44f1a224ebf4be4f15af6  libgfortran/generated/minloc1_8_s4.c
! 11ab7abbe4a16b71065000915b2dc932  libgfortran/generated/minloc2_16_s1.c
! e95227c5321b4d2d56439245fae7a3a1  libgfortran/generated/minloc2_16_s4.c
! 3cabdb522bbaa8a15ca41397b46cda1f  libgfortran/generated/minloc2_4_s1.c
! cf230f9cedfd7c89da7097afd915987a  libgfortran/generated/minloc2_4_s4.c
! 3342f9164e9b808e7c3f9a2337e043c1  libgfortran/generated/minloc2_8_s1.c
! bcd30b0773a8487c763b8776539ffcec  libgfortran/generated/minloc2_8_s4.c
! 86ff992dac2590b05995e581a9131879  libgfortran/generated/minval0_s1.c
! ee48fa5bdf79ea4b92f3be10bcc23a55  libgfortran/generated/minval0_s4.c
! e87a23ce6f63f3000f5817505ab5b512  libgfortran/generated/minval1_s1.c
! c6e71c5b28656a27f983114d804e7aff  libgfortran/generated/minval1_s4.c
! 297330a4c09c16bf510f7b316b63c3dd  libgfortran/generated/minval_i1.c
! b805252d65ab0a225d3cc1e45374836d  libgfortran/generated/minval_i16.c
! 5a6ed655d8e84ea284aa729a3a01d822  libgfortran/generated/minval_i2.c
! db12f827838b83aef5bc4c8ed18fbcaf  libgfortran/generated/minval_i4.c
! c1d1b766d905b2cbea65cc04a0fb1d54  libgfortran/generated/minval_i8.c
! 34de4bb9bc03b430bc8da1454b658c05  libgfortran/generated/minval_r10.c
! becf63c37a99f0b96aa16dfa3d683170  libgfortran/generated/minval_r16.c
! 1dddc0eed1e954acf5593884b0c3b353  libgfortran/generated/minval_r4.c
! eaf99d6cc9c8e8f92a9fbdcda7f493ce  libgfortran/generated/minval_r8.c
! cc44cef3f218bcc079642de17b3d7c1f  libgfortran/generated/misc_specifics.F90
! 31ecb655cf83b39a552b45bde57c0b50  libgfortran/generated/norm2_r10.c
! 0202338d5017f1bff05dad880d6b4f64  libgfortran/generated/norm2_r16.c
! 6c218fed6a9c9d3d01a73ef1201da5d9  libgfortran/generated/norm2_r4.c
! 4523434af799f6e73f636421f8749a3f  libgfortran/generated/norm2_r8.c
! e674ca96d30e94764ba32c4735e27df8  libgfortran/generated/pack_c10.c
! 074ff7d2100269d2f77d94e6a0fc10ce  libgfortran/generated/pack_c16.c
! a39790b7cfe280f30f925bdc5871f5aa  libgfortran/generated/pack_c4.c
! 69124176fd132e4d353bcc679ef9d493  libgfortran/generated/pack_c8.c
! 303e7f8b24dcd3d670be56e1b4490ce5  libgfortran/generated/pack_i1.c
! 9e94e130184d091be607af65801c900f  libgfortran/generated/pack_i16.c
! 53220ea117fdf2f9b8f9102473382ed0  libgfortran/generated/pack_i2.c
! e435a6f44caff54857b3cb650d746dc2  libgfortran/generated/pack_i4.c
! 42ed5fb47e5226e752ddb3c6490f11f9  libgfortran/generated/pack_i8.c
! 24299aae7928d8153ab57fa60f143684  libgfortran/generated/pack_r10.c
! 4be1cb274a6c8f503e4f561bf794b698  libgfortran/generated/pack_r16.c
! f63444500393de57e71716105d932d1f  libgfortran/generated/pack_r4.c
! 1350d73925f6ef2a63a75503dfb23fda  libgfortran/generated/pack_r8.c
! 7e372fd1064a9fa900bb6a8408ad09fc  libgfortran/generated/parity_l1.c
! d46535dd33e9468a4527e2969d259dfc  libgfortran/generated/parity_l16.c
! d19bb7cebb917bbb7a81072a019e4afc  libgfortran/generated/parity_l2.c
! c75fac3200e0d698e5633cd259840644  libgfortran/generated/parity_l4.c
! 18083984cf5c3b82e34d359abbdd9bae  libgfortran/generated/parity_l8.c
! 2730f264e0fa72958c1a32d0556e00ac  libgfortran/generated/pow_c10_i16.c
! 573642227c197c966f9f1fdc232dfe81  libgfortran/generated/pow_c10_i4.c
! 5b75ccd1f10575a4d4d2c521c4a96dfb  libgfortran/generated/pow_c10_i8.c
! 004b146be508e826254b6254553a0d37  libgfortran/generated/pow_c16_i16.c
! 3a12310e4fee566d4560780ea6887013  libgfortran/generated/pow_c16_i4.c
! 59f90f21b6927c4d8283915c4bddca7a  libgfortran/generated/pow_c16_i8.c
! 044dac5507da23b463783593c078a96a  libgfortran/generated/pow_c4_i16.c
! 65ec9dd73b71e795f8677e3c61224442  libgfortran/generated/pow_c4_i4.c
! 998cab2409dd2bff97cad4bcc31c71c1  libgfortran/generated/pow_c4_i8.c
! a561751462b2ec1eab17c48888b3ec53  libgfortran/generated/pow_c8_i16.c
! bc92aab2facd2dcbaeb2d350398488c1  libgfortran/generated/pow_c8_i4.c
! b1c8a775427b03ef6e1f287ff892b6fa  libgfortran/generated/pow_c8_i8.c
! ea0c5a7e2af2acd4c7845d55dad478a5  libgfortran/generated/pow_i16_i16.c
! bb6f8b41a1c9549564475135e37cd2bf  libgfortran/generated/pow_i16_i4.c
! 8e17cd2b8daa44f79e6b30b702ce17fe  libgfortran/generated/pow_i16_i8.c
! 43b04f6be175df9021c82932429e84b9  libgfortran/generated/pow_i4_i16.c
! 6fedfb0adb2802cbf508877970ef1239  libgfortran/generated/pow_i4_i4.c
! c33984b69010cb81d5b430f66f7d2dca  libgfortran/generated/pow_i4_i8.c
! 145dba64dd278fa43d3218883613f2d8  libgfortran/generated/pow_i8_i16.c
! f9bb851deb8c5970044cfb44330db711  libgfortran/generated/pow_i8_i4.c
! 2bde7cd68e38309baec323d8ec510be3  libgfortran/generated/pow_i8_i8.c
! 2c3451ed8a91168935ca60b6323eae2e  libgfortran/generated/pow_r10_i16.c
! f423e4fbb5c964164958d67720358e87  libgfortran/generated/pow_r10_i8.c
! 9fbcd298b1d7ad265c9b7369f16ccfea  libgfortran/generated/pow_r16_i16.c
! c3eb3ad9e741e27283ecf6107c740bf5  libgfortran/generated/pow_r16_i4.c
! 1523050b386581034a80b8bbfd31d8e7  libgfortran/generated/pow_r16_i8.c
! 15f474f1d7b9280b18c3cfa9e79ff5e7  libgfortran/generated/pow_r4_i16.c
! 17792ef9c464d582c5e368b168206cca  libgfortran/generated/pow_r4_i8.c
! 9a787a700faeae7aa5bf52787de9988d  libgfortran/generated/pow_r8_i16.c
! 87917481291c0a19491428f0ce266242  libgfortran/generated/pow_r8_i8.c
! 8237c271d75e523a301bf0ac597309ef  libgfortran/generated/product_c10.c
! 380fafdc200fa0b87e5a6df822d9135d  libgfortran/generated/product_c16.c
! 1a5abe18c7328755f794b52e4130d42b  libgfortran/generated/product_c4.c
! b23521e811eb1a72612083fb5d4d674e  libgfortran/generated/product_c8.c
! 2686178a895b6498d2d86dce15da0a1b  libgfortran/generated/product_i1.c
! 5c0e44b39df42626191ddd4c0ce5b83d  libgfortran/generated/product_i16.c
! 2fe3109ede0566d536a9204087c38abf  libgfortran/generated/product_i2.c
! 21e219c18cb50a94d425923b63cc1835  libgfortran/generated/product_i4.c
! 7db92eaeae538fd5d0c264b0c1b1a41b  libgfortran/generated/product_i8.c
! deedc3514009a5011f21911dc7423758  libgfortran/generated/product_r10.c
! 0d5ddb6515bf92b94143e64b824c1ecb  libgfortran/generated/product_r16.c
! 33264c45c8befa854b41bd8a2c41fb1c  libgfortran/generated/product_r4.c
! 8d79144a450e243cbe1a14ad4f5c5780  libgfortran/generated/product_r8.c
! e3d608c853d6590cd602bd50b7484c16  libgfortran/generated/reshape_c10.c
! d437ced4d37eebfb058967482cd0f50e  libgfortran/generated/reshape_c16.c
! 45742880a2874c094bb37546f925d1f9  libgfortran/generated/reshape_c4.c
! f1365d8f016d770f8ab70d3f1b9dd74c  libgfortran/generated/reshape_c8.c
! 7e1e1daf67b1f55bb6d121a0897df0e4  libgfortran/generated/reshape_i16.c
! 4a482a017275f355f444bf45f09b5221  libgfortran/generated/reshape_i4.c
! fc87de0a07633956fd61ace1a135086f  libgfortran/generated/reshape_i8.c
! 471098ec996e08b658feeba5f2a7a8e1  libgfortran/generated/reshape_r10.c
! d1ecedd635fa5168360d696b06f6b023  libgfortran/generated/reshape_r16.c
! 4d2671f4ebc7532e6348b3bb068445b6  libgfortran/generated/reshape_r4.c
! d344d3d77ceca3a1b1517350f717dcac  libgfortran/generated/reshape_r8.c
! 7774b4c70dfc171c54f68d5c869c88f6  libgfortran/generated/shape_i1.c
! 7224ca68d70d8a8cd1bdcb57a6b8b923  libgfortran/generated/shape_i16.c
! 55db27bc2de1738fabad667cb5dbb6b9  libgfortran/generated/shape_i2.c
! 5af3079453237added156d287068ca71  libgfortran/generated/shape_i4.c
! 5515626db09d918852c8592209a3cc6f  libgfortran/generated/shape_i8.c
! af542f1ea1999f78289ce41dac247148  libgfortran/generated/spread_c10.c
! 3e0587473591eebbc6adb24329e13cfe  libgfortran/generated/spread_c16.c
! c665c318fd76ded9675b9fee5b8afa5b  libgfortran/generated/spread_c4.c
! 0b79e95509107529c1c13a89f45198df  libgfortran/generated/spread_c8.c
! bb5b1b422b892dbee1a95cd943306c77  libgfortran/generated/spread_i1.c
! 419fef8770cbfdb2e915207b93ef07fb  libgfortran/generated/spread_i16.c
! e8fd788f2410a8ad80211900a17f1484  libgfortran/generated/spread_i2.c
! d7d7060951edcc26d0f5e11769b0a34f  libgfortran/generated/spread_i4.c
! 2fceebc4665c577eb5e2adc81253b7d5  libgfortran/generated/spread_i8.c
! 8752d151c92eb0ce6f2dc7e253244d3a  libgfortran/generated/spread_r10.c
! 05bf5fc6e75fc9c87ed26ea91b6efde2  libgfortran/generated/spread_r16.c
! cb6a0dc100b8faa0a9e61cdd246f03c0  libgfortran/generated/spread_r4.c
! ef333c5fc552f9dcaf52c21dfd7e2f50  libgfortran/generated/spread_r8.c
! 475478cd926c1084d4cc77799874715f  libgfortran/generated/sum_c10.c
! 3d643189a1ea77ccfd1928b3fcd24191  libgfortran/generated/sum_c16.c
! 180edd449b03c17b40c1a8712f91d5a7  libgfortran/generated/sum_c4.c
! 121a5408978968393981be568cb2cbcb  libgfortran/generated/sum_c8.c
! 3ab18a864319d9b8d92452543d983bff  libgfortran/generated/sum_i1.c
! eac7f934e08f3bc04e4b4efad64119fe  libgfortran/generated/sum_i16.c
! d4991f56c8d5f0f3591fb8305ccc4c63  libgfortran/generated/sum_i2.c
! ca82205ba7d7238351ef2d61600c10fd  libgfortran/generated/sum_i4.c
! 0b30769850c21e0f054d6c928ec8d4b4  libgfortran/generated/sum_i8.c
! 37a0b451996947847c1ff9e089fe579c  libgfortran/generated/sum_r10.c
! 29a660de2dab03115abc98c3096dec60  libgfortran/generated/sum_r16.c
! f9d5bb9318b9352448cfd0d9979fa90b  libgfortran/generated/sum_r4.c
! bd30ac5c880d16eae7bcf33c02edee18  libgfortran/generated/sum_r8.c
! 828a0189acaa2e09a7032fea9abb5810  libgfortran/generated/unpack_c10.c
! 4aecdd17beb1ae54d4390e82f91cd5ed  libgfortran/generated/unpack_c16.c
! 6e7a789f90af9c485affcc50a5b4a5da  libgfortran/generated/unpack_c4.c
! db820221e2975217d0c36c57a3d05538  libgfortran/generated/unpack_c8.c
! 2a98840f46e74201541ce339301ab68f  libgfortran/generated/unpack_i1.c
! 4551b45523a5cf138caa2e8ab44b468c  libgfortran/generated/unpack_i16.c
! e5a3f778cd377e7912295ea166245f9c  libgfortran/generated/unpack_i2.c
! 9c7232ccb60db515794964e25b2c314e  libgfortran/generated/unpack_i4.c
! 3421c6ed9d33bb9ac5dc90d0690aa035  libgfortran/generated/unpack_i8.c
! d8816fe08045dc2339d856a44d18a492  libgfortran/generated/unpack_r10.c
! 1ee4fd9e11b045c9e369205169189d6d  libgfortran/generated/unpack_r16.c
! 5cb53c5f73b692a2e4892ed59a17ed8e  libgfortran/generated/unpack_r4.c
! a204fd88ad2cff458f9d418aeef899af  libgfortran/generated/unpack_r8.c
  7fb3b6818515ae8e6d4d783558b705d2  libgfortran/gfortran.map
! 90fd1d9ca1371ce700b579ff6ae486af  libgfortran/ieee/ieee_arithmetic.F90
! 5c561e6854a2a220e77d722d02d47b57  libgfortran/ieee/ieee_exceptions.F90
! 8b9a20ed76e252ae60ff5e81737292dc  libgfortran/ieee/ieee_features.F90
! ec34a94a29d7cdb69b0beb432237594e  libgfortran/ieee/ieee_helper.c
! 5159e86a113498bc0cdd6e8b46bd6a40  libgfortran/intrinsics/abort.c
! 2fa8293d1770eca27ebd125bbd4afa7a  libgfortran/intrinsics/access.c
! 506d207d7c271fb731a123395e798686  libgfortran/intrinsics/args.c
! 3b68521919fb27c98f8d485b2c3e6a16  libgfortran/intrinsics/associated.c
! db72417f8b69bf74676d468fa849d9f4  libgfortran/intrinsics/c99_functions.c
! 45800d5e0b9968d2645812004db77d89  libgfortran/intrinsics/chdir.c
! 4e082b8f49405e446766606c34b68b68  libgfortran/intrinsics/chmod.c
! 218ec2e2601255fd256040d0e504155d  libgfortran/intrinsics/clock.c
! e2aae073f391a28feef938f838822432  libgfortran/intrinsics/cpu_time.c
! a6024a72d7b586f03569d320297cbddc  libgfortran/intrinsics/cshift0.c
! 6654c9a1f238e8d2698887587c6e2325  libgfortran/intrinsics/ctime.c
! 4f983a7c88f6d5329b9382bf0981df92  libgfortran/intrinsics/date_and_time.c
! b89ae9669ea5e475701a902f23f96212  libgfortran/intrinsics/dprod_r8.f90
! 556b152bd779a5ca5bfcf82f2f7e7e48  libgfortran/intrinsics/dtime.c
! 6c3471da6850c928ef30ea140c812915  libgfortran/intrinsics/env.c
! 8bab400b311852d96379395c70ec912a  libgfortran/intrinsics/eoshift0.c
! a5ae35dd667b26ad2d04eb28d1bd349d  libgfortran/intrinsics/eoshift2.c
! 00764e2b8d23d7835d11929fbe75e952  libgfortran/intrinsics/erfc_scaled.c
! a25ce6e472cdf64df3f5c009d870a1b0  libgfortran/intrinsics/erfc_scaled_inc.c
! 8d8198da46600856d2e6d7520d2b1b6d  libgfortran/intrinsics/etime.c
! 83f6b9efb7dc95bb58264785a5eab7fa  libgfortran/intrinsics/execute_command_line.c
! fe3359ac5b98a545f1d1468b9631026b  libgfortran/intrinsics/exit.c
! ea2d0ec2e4c79c2e44cb6ffa555ffb43  libgfortran/intrinsics/extends_type_of.c
! 16e0ad76118d2fa080a38093b1998b6e  libgfortran/intrinsics/f2c_specifics.F90
! bfec0868a83842159c6ceadbe1acf791  libgfortran/intrinsics/fnum.c
! 9d672eb6e78e655efa67c72c5f5f3e50  libgfortran/intrinsics/gerror.c
! 14ed06e2d75163a6236aef0bc2f77380  libgfortran/intrinsics/getXid.c
! 41b4227fadfcc07627145aee5cb852f6  libgfortran/intrinsics/getcwd.c
! 2a86af0a1282dc4d8199d147ae27f2c0  libgfortran/intrinsics/getlog.c
! 9a81d797b1494581b10a7820e8f256e8  libgfortran/intrinsics/hostnm.c
! a0c3c58ddfff83f1000c14a3c4ac0a5d  libgfortran/intrinsics/ierrno.c
! b69d7f279a589502eb057f068a9d822b  libgfortran/intrinsics/is_contiguous.c
! acc52605b5057faa64fcc053f2a70ce0  libgfortran/intrinsics/ishftc.c
! a67597f8b08b68f6accc0fdf08ef5e37  libgfortran/intrinsics/kill.c
! bef28a78705c4e4786893e7d415aba17  libgfortran/intrinsics/link.c
! 985d3bd645a21cbd4c5a2d02ed8826a4  libgfortran/intrinsics/move_alloc.c
! 20aff61579429eb89792728fe5175714  libgfortran/intrinsics/mvbits.c
! ad1891ce9caa613f4f5593b327fcdb8d  libgfortran/intrinsics/pack_generic.c
! 89e269a44a32f47a1d2bf91045b80e3e  libgfortran/intrinsics/perror.c
! c095314693871598f7f50df0fc0b698e  libgfortran/intrinsics/rand.c
! 0623ff528c71ac825ba6273a2ad51210  libgfortran/intrinsics/random.c
! 355e94091823216f1573ee1845927c2c  libgfortran/intrinsics/random_init.f90
! 5ba2b775aabec2c941cb5563d10856f9  libgfortran/intrinsics/rename.c
! 3ac0f41c73562c9a1080ad5cbe73d62e  libgfortran/intrinsics/reshape_generic.c
! 9a0de4bfeadea4d60d05e5d11be115ca  libgfortran/intrinsics/reshape_packed.c
! 5c7b1f82beda369289a096ed95b5012c  libgfortran/intrinsics/selected_char_kind.c
! 30d77c3eed181dfcdb9c0f5a98b63ecb  libgfortran/intrinsics/selected_int_kind.f90
! bbc2c74d59968eed231d7f0bf81e5812  libgfortran/intrinsics/selected_real_kind.f90
! 6e85dec36b700b337f00bcaea0a4c715  libgfortran/intrinsics/signal.c
! 8143d3528b6567c4438d099043551163  libgfortran/intrinsics/size.c
! cfa0abd359f55d6c8121cea842c7b5fa  libgfortran/intrinsics/sleep.c
! 38f64c8501dacb154d8a04f239412ead  libgfortran/intrinsics/spread_generic.c
! f4d80a701563e6d21e93773ffb05cde9  libgfortran/intrinsics/stat.c
! d9c9f414624ccef5fb3b2f08a23cd6b1  libgfortran/intrinsics/string_intrinsics.c
! 79d5fb9f106462789cbce19663728c22  libgfortran/intrinsics/string_intrinsics_inc.c
! d52657a5b601295e3f506203c45c8c99  libgfortran/intrinsics/symlnk.c
! efdf2284683efa2ba74b160a16265489  libgfortran/intrinsics/system.c
! ca6648254ecccf13a2eebb35b328c209  libgfortran/intrinsics/system_clock.c
! c92f7918dde9f9f6365b9b8e18b7dbbb  libgfortran/intrinsics/time.c
! 8d666c7765ec106ac4bb30024292e2fe  libgfortran/intrinsics/time_1.h
! 5d201c5faea8156c32ea5bb85adf2d9e  libgfortran/intrinsics/trigd.c
! 6d654e1c4fc3ef49a7750d09a50272ca  libgfortran/intrinsics/trigd.inc
! 8cf0e553a4b0966da0326bd6e04b64f1  libgfortran/intrinsics/trigd_lib.inc
! 13e0b3f802cb2034a2fd00c1e011dba2  libgfortran/intrinsics/umask.c
! bed327d5542b3ce6e70f9ae7502f5f7e  libgfortran/intrinsics/unlink.c
! 891a2dd2471e6b1294adda0dc12a7dca  libgfortran/intrinsics/unpack_generic.c
! 1980d48f9a4cc2d64593b05068ff95b6  libgfortran/io/async.c
! 2ae3054a9ad13684ca44dc1ff708b343  libgfortran/io/async.h
! be7c09e1449b2dd5597b5b55282a35c3  libgfortran/io/close.c
! e8b27983b1d58e6a35263dedf3c5323f  libgfortran/io/fbuf.c
! 5793f6f288275fa62f4d0a81c896cbff  libgfortran/io/fbuf.h
! 178c96f7cb9abab804e9a25975f349a9  libgfortran/io/file_pos.c
! 1f7e8f2cfe8a601fc5411ab980b2d2d2  libgfortran/io/format.c
! 9ec48f1db8d876234579228c5e593080  libgfortran/io/format.h
! 95c1f83bf0289227834391051c980d15  libgfortran/io/inquire.c
! 1b482963f5b6556ccf75c28f015971bb  libgfortran/io/intrinsics.c
! 537121f6b3f3c9cbec37320b3b100a70  libgfortran/io/io.h
! aec2c7143cd0eb7085232817748d296a  libgfortran/io/list_read.c
! b55d7c72f30c3222c94c47d0d3b594a0  libgfortran/io/lock.c
! c71b56b16f4744d3758e1a0ab2c9c616  libgfortran/io/open.c
! 3e64874d4fcdfc6ef2e3c817545ef89f  libgfortran/io/read.c
! d1614226ca38431773c5ee3812eb5745  libgfortran/io/size_from_kind.c
! 52b319ee9ca727c7b167c9dd99fb54e2  libgfortran/io/transfer.c
! 9e5a3d9be754e712d66e7eed65aa194a  libgfortran/io/transfer128.c
! bc2f4e1713fd4ee1129d915bfefc6702  libgfortran/io/unit.c
! eae2c40103ea3601c8c896138e488f38  libgfortran/io/unix.c
! d6316abb8317c9eb634e27db785673df  libgfortran/io/unix.h
! 2005062cf79e501ad3d4f6c9e4edbd16  libgfortran/io/write.c
! 9b9d0fd0837698335b855b45bee71cbb  libgfortran/io/write_float.def
! b40b39c4897a188478ada998c14b0f32  libgfortran/kinds-override.h
! 0b76ecb9a33632a6f334c965e822ff6b  libgfortran/libgfortran.h
  2527bb19b82f08b34038b07b172d029d  libgfortran/libgfortran.spec.in
  dc1a87f5ed3520558b0fe9f43e4f5ba8  libgfortran/libtool-version
! 6548d61a149c4d9ce4b0924ace21bf5e  libgfortran/m4/all.m4
! 5915646e208260c8a1235b6874ad7195  libgfortran/m4/any.m4
! c42626cd9a6b2729224d15b2d685b877  libgfortran/m4/bessel.m4
! 1927d7749b05f5656cb6fcb07e64e994  libgfortran/m4/count.m4
! 4b340a8316bfb4664a89c69d0a0d7219  libgfortran/m4/cshift0.m4
! 53bb1b119897d49d277b98036cc96cbc  libgfortran/m4/cshift1.m4
! 540e4adf0adf517647a57866a8132098  libgfortran/m4/cshift1a.m4
! ae1819272eb6879c0c64fa592b457388  libgfortran/m4/eoshift1.m4
! ea18e709128a99580597e866df221507  libgfortran/m4/eoshift3.m4
  a70290662a995bcc0ff8ac868b6eddda  libgfortran/m4/findloc0.m4
  22271fa12e82c61051f302c3a5072376  libgfortran/m4/findloc0s.m4
  111ea74dceb547cbf63c12832d73d5f4  libgfortran/m4/findloc1.m4
  be432b0e528c65667e6d736e1537515d  libgfortran/m4/findloc1s.m4
  62c4506b866cb09ea489c455e7c2e8bf  libgfortran/m4/findloc2s.m4
! 7057533de22840fff4c898ff45062376  libgfortran/m4/head.m4
! c48d0d168b3d201b0a563814aa4c1d25  libgfortran/m4/iall.m4
! 56ff3cb6e428dead8391a93c591c164c  libgfortran/m4/iany.m4
! c1fa7dec0533f693db954076f404cf0a  libgfortran/m4/ifindloc0.m4
! 7ad805c1fe3c58f086131f6ae1a0e542  libgfortran/m4/ifindloc1.m4
! 0ecb94ca318ebe71f2154334d5c3ab04  libgfortran/m4/ifindloc2.m4
  143daeeed4d4e1baa17753b51ddd88be  libgfortran/m4/iforeach-s.m4
  ef77f0d18ce645146e5155d85730a2dc  libgfortran/m4/iforeach-s2.m4
  8bbbce69fc532a405b1b88c79c2ef47b  libgfortran/m4/iforeach.m4
--- 87654,88406 ----
  e9051611daf30b5672939006d2ab936c  libgfortran/ChangeLog-2017
  5bffa5826936db152a31f60524b34f0c  libgfortran/ChangeLog-2018
  a25a190e02c8ba2caa2c3dee224eba51  libgfortran/ChangeLog-2019
! 561d7b7050b65ea8eac91bc825d5a816  libgfortran/ChangeLog-2020
! 87a3d9b747581ac87d882fd727300d4e  libgfortran/ISO_Fortran_binding.h
! ca99647151eebf48fc46d438de880b08  libgfortran/Makefile.am
! 6ca08b6a6247ccbda130de39586cfe8c  libgfortran/Makefile.in
  163a6e0b260d40c9b49c5bcdcf86e898  libgfortran/acinclude.m4
  77dad7b87b2adfbfda676696055ef90f  libgfortran/aclocal.m4
! 51eb22a9f5e0b5927b22af64e3d4adaa  libgfortran/c99_protos.h
! 16e9e425b6fd4ff99245ac86e2b8460f  libgfortran/caf/libcaf.h
! d37a60a3e3b0eaef18aabe9aabc8b7be  libgfortran/caf/mpi.c
! 93f420f0774c41754377d72db1088481  libgfortran/caf/single.c
  639e67b84ee7eff64d336c81958c98a1  libgfortran/config.h.in
! 8e14e6a474f85c8318328a6829856f6e  libgfortran/config/fpu-387.h
! 1903c688a28a4ba1062ffbf22a1a8b06  libgfortran/config/fpu-aix.h
! d2346ad86c73cabb4a02836729668659  libgfortran/config/fpu-generic.h
! 69b7d92fde9359159609a05854cf75da  libgfortran/config/fpu-glibc.h
! bdd66a0d8b5ebc324a7bf285ab31eee8  libgfortran/config/fpu-sysv.h
! 93375010faf12b59ff1618874a0beacd  libgfortran/config/t-aix
! 4965c94efd31f71ebb16c32bded77a5a  libgfortran/configure
! 28702d889e65c6f8c525098a34aefc63  libgfortran/configure.ac
! f839528fdec323134d27a3fe9a9f5c6e  libgfortran/configure.host
! a864b5e651585626f4ea060472af62ad  libgfortran/generated/_abs_c10.F90
! 4add714531640470bded5904ac7aaefc  libgfortran/generated/_abs_c16.F90
! ef634be93f64cf32c924204cb9b4aa27  libgfortran/generated/_abs_c4.F90
! f4407329eb1cf1b35f9ffc66bfbd503d  libgfortran/generated/_abs_c8.F90
! 6208ff3503f48a4d1ff3c27f78d98e19  libgfortran/generated/_abs_i16.F90
! ed4df3ab1d51338e1835295a7914c367  libgfortran/generated/_abs_i4.F90
! c52def9f0744341dd58aa12dbb06c20e  libgfortran/generated/_abs_i8.F90
! 5465bf92eab59939ea4162d930c5da7e  libgfortran/generated/_abs_r10.F90
! df30cd55a015f01becdfca3ea7c59438  libgfortran/generated/_abs_r16.F90
! 043d2b20325fe305b7f0ece6d2e0800d  libgfortran/generated/_abs_r4.F90
! ed64006a00a8e4d4c9babad57e82d7c1  libgfortran/generated/_abs_r8.F90
! d3b87b33f580bb1f88f9518e0badf041  libgfortran/generated/_acos_r10.F90
! a5ce82301b0c36a5246cbc0e9c881e07  libgfortran/generated/_acos_r16.F90
! 0dc68f65b2aed739d92d903e6be663c7  libgfortran/generated/_acos_r4.F90
! fa887152861fccdc4adb5b54e5132907  libgfortran/generated/_acos_r8.F90
! 509d09049bec2087b55abe25d2c40507  libgfortran/generated/_acosh_r10.F90
! 92e484f854b1d51f20f82121ddc18b65  libgfortran/generated/_acosh_r16.F90
! 99eaab5563b2db40a5e83284a26feffd  libgfortran/generated/_acosh_r4.F90
! 20542794929afb0ea776096d67f3551a  libgfortran/generated/_acosh_r8.F90
! ca7b904601e248a1485a9285f922edc7  libgfortran/generated/_aimag_c10.F90
! 1450f8933ef4344765a9b68e1a892b21  libgfortran/generated/_aimag_c16.F90
! cc93bc6b9237a5fe530c762e33a59a3e  libgfortran/generated/_aimag_c4.F90
! 26eff194f9186e6545908344c8dea831  libgfortran/generated/_aimag_c8.F90
! 2e188259766655e66c0ffd5577647567  libgfortran/generated/_aint_r10.F90
! 901201af6aaab4a311b9baa8a3b0fcef  libgfortran/generated/_aint_r16.F90
! 80e5aa8296206920bfb53e928a9d2c85  libgfortran/generated/_aint_r4.F90
! 5e3dd8e9bcb6d3b36757096fa1bc423f  libgfortran/generated/_aint_r8.F90
! 79904736b7b5f04cb766f932f29cdc9f  libgfortran/generated/_anint_r10.F90
! 6f7d77582c99f3fef117db4f83d4f22b  libgfortran/generated/_anint_r16.F90
! 2f89a677eb139c89e9809a5de6c56493  libgfortran/generated/_anint_r4.F90
! de8fcb68b7906025bc9be0a37bf8138d  libgfortran/generated/_anint_r8.F90
! 1122db5705c8c68645eb082de314e08b  libgfortran/generated/_asin_r10.F90
! 0fdded3c0c7c030bad81b06495db4137  libgfortran/generated/_asin_r16.F90
! cbe2ea263e8fed5b81505dbbb53f5a39  libgfortran/generated/_asin_r4.F90
! 804e3583b206cefdc06b17805c485181  libgfortran/generated/_asin_r8.F90
! 1333c45544bc45f24ef6e38a9f5d270d  libgfortran/generated/_asinh_r10.F90
! 14c7c8ad7343d72439edce20f2c4e13e  libgfortran/generated/_asinh_r16.F90
! 016807c20efc6512483e56a14c2f37b1  libgfortran/generated/_asinh_r4.F90
! 1b8d60fd9302399106634a10f89f2310  libgfortran/generated/_asinh_r8.F90
! d85370eb13dda7bc1c0a8c1d46d0b498  libgfortran/generated/_atan2_r10.F90
! 99d5afb905ee2c8cfda6b0d46855f298  libgfortran/generated/_atan2_r16.F90
! 24a4b1608eb7ec9cd4322ef5aed791a4  libgfortran/generated/_atan2_r4.F90
! 715d2d0b3726bd1b14dd4a1e5e1ab944  libgfortran/generated/_atan2_r8.F90
! 35f7eb2e1befbc37cfcb8c25595f379a  libgfortran/generated/_atan_r10.F90
! f5b18a69b90bb7d2c9cdee7681f1e954  libgfortran/generated/_atan_r16.F90
! 709622c5e7f506cf86323cb1a130bcc0  libgfortran/generated/_atan_r4.F90
! d7d8f16c011519afcc4db69d5353587b  libgfortran/generated/_atan_r8.F90
! 2dd831e5309f7131d8c77e3393081ce4  libgfortran/generated/_atanh_r10.F90
! d3d42ef826a1a7940da1eae53d812e0f  libgfortran/generated/_atanh_r16.F90
! ed5e36c5c4527cb120f32f67f3475462  libgfortran/generated/_atanh_r4.F90
! 9fda6c3dbcf38c300bff8cf8ab6e0b68  libgfortran/generated/_atanh_r8.F90
! ca236c7ae1893c10d9c0e8f83fb21b49  libgfortran/generated/_conjg_c10.F90
! a8ac0461825a3dc1185c7135a773e3c6  libgfortran/generated/_conjg_c16.F90
! 989aebd17211be4c10e5f8b9ffe24acc  libgfortran/generated/_conjg_c4.F90
! 2356b5212db4d040f35a273199909b74  libgfortran/generated/_conjg_c8.F90
! a4e4374f804fa1af11f2c550b5a22f25  libgfortran/generated/_cos_c10.F90
! 009e6f74f2efd1289c063169a618520a  libgfortran/generated/_cos_c16.F90
! 10d00317389b87cc8bd0ada37eea71fa  libgfortran/generated/_cos_c4.F90
! b761724e01c8083a56faca6cfef779dd  libgfortran/generated/_cos_c8.F90
! a59ea15a4765e636d364f20731942552  libgfortran/generated/_cos_r10.F90
! 30c5009267b962062b74337fa2b524a9  libgfortran/generated/_cos_r16.F90
! 0c7fc1a9cd0d70053f0916331223d4fa  libgfortran/generated/_cos_r4.F90
! 82dad2d30d8f0725fe1e743fd8b7a138  libgfortran/generated/_cos_r8.F90
! e4ab4c4909cf6ebbbb34cd234f3eb700  libgfortran/generated/_cosh_r10.F90
! 2e105b21f718005e43dd4a961d24fccc  libgfortran/generated/_cosh_r16.F90
! f5369fc3626609b9b0249cc9cd327235  libgfortran/generated/_cosh_r4.F90
! c3043490f83ad52309d72b31dfd33c51  libgfortran/generated/_cosh_r8.F90
! c69c93552ef5882e515ccf388e227535  libgfortran/generated/_dim_i16.F90
! 60c59732beeb1c2c9f00d3ff5c119680  libgfortran/generated/_dim_i4.F90
! cc51e10b5a7cb6e71e3906ae435c62a4  libgfortran/generated/_dim_i8.F90
! 08a703b183678d822c31fd594139f62d  libgfortran/generated/_dim_r10.F90
! 833febc4b06b8bb9e39c34f53593b773  libgfortran/generated/_dim_r16.F90
! dc1901d95376f6c34c2ed491273d6a0d  libgfortran/generated/_dim_r4.F90
! a2185afd669349b45440addb4ea3c29d  libgfortran/generated/_dim_r8.F90
! 69561181f0e5715c89d8cf1a3708f4bf  libgfortran/generated/_exp_c10.F90
! 9b95536df341cfd20d97db567be1a133  libgfortran/generated/_exp_c16.F90
! 3a11efca456568f89db461c78eecc8ab  libgfortran/generated/_exp_c4.F90
! 3bd09a65d4661f17d9e91aafbcf68ec2  libgfortran/generated/_exp_c8.F90
! 4dfd246fd68c0ab658c69f6ccf620330  libgfortran/generated/_exp_r10.F90
! ac90388f1036141c05bd0ff64ae98f1c  libgfortran/generated/_exp_r16.F90
! 6076e3261d03fd43bc9f00015a8c2db9  libgfortran/generated/_exp_r4.F90
! 2eb457722a50589f0449521478a3d3b2  libgfortran/generated/_exp_r8.F90
! fdd91144e62ee35c3a8027d7510f122b  libgfortran/generated/_log10_r10.F90
! 5ca71db4e5f6db9a743f74110a312b86  libgfortran/generated/_log10_r16.F90
! 6c833c1a734a7cfbe887551fa214658e  libgfortran/generated/_log10_r4.F90
! bb75143d168d076a0a4d08145322934f  libgfortran/generated/_log10_r8.F90
! 36efc5df1e38f5671d056e7391613bdc  libgfortran/generated/_log_c10.F90
! ba82d3ab2611b9ab84b4b15b5c568561  libgfortran/generated/_log_c16.F90
! bdfb5e275012db399561e9ac110a7ee4  libgfortran/generated/_log_c4.F90
! 168f06a350df9272e2967c9087cf581a  libgfortran/generated/_log_c8.F90
! 7bcca7bf3c0733e0071abc1b42893592  libgfortran/generated/_log_r10.F90
! 0e50320d3a45e67630e74292196f66c3  libgfortran/generated/_log_r16.F90
! f023b8ebedb9ed0716401a36a5266d51  libgfortran/generated/_log_r4.F90
! b96efaa2277fc18cfd5a3e2f677d6354  libgfortran/generated/_log_r8.F90
! 4be1fbc2ba1f9da7ea99ed2ca4e3894b  libgfortran/generated/_mod_i16.F90
! 9bc68815510521d9023bd3294b35c3fa  libgfortran/generated/_mod_i4.F90
! 03aed02f26be18e2881bfa0410f3b6ae  libgfortran/generated/_mod_i8.F90
! bad8aca1688240deb25d992c04a09d55  libgfortran/generated/_mod_r10.F90
! ea36e347d0fb9ed69ef679d39fa3b373  libgfortran/generated/_mod_r16.F90
! 62de73324150f4ef274a33e83ba19f94  libgfortran/generated/_mod_r4.F90
! 8333b9e605bc0d344dc408851f4ea358  libgfortran/generated/_mod_r8.F90
! d9d3ad2063af2e92a5257fb1cc4e8d1b  libgfortran/generated/_sign_i16.F90
! d7f5c1b26090636baaaa37ebf4c7da9b  libgfortran/generated/_sign_i4.F90
! ee3eb569b869077a3de5377131bc1ab8  libgfortran/generated/_sign_i8.F90
! 3a28110cbbfa54a808d614125f25f18a  libgfortran/generated/_sign_r10.F90
! b1861fb6f6ea638de1b9c1d20f040026  libgfortran/generated/_sign_r16.F90
! 995d7ef561eb454aadde5b7c1bbaf166  libgfortran/generated/_sign_r4.F90
! 4e1fbdeef5af0ae3dac004ad9021f1d7  libgfortran/generated/_sign_r8.F90
! 72d2003ca1fa8335447edbe87dd1d042  libgfortran/generated/_sin_c10.F90
! e71c6e36856e8a8272cb02a18fd17e52  libgfortran/generated/_sin_c16.F90
! 394bb99be870238a2d8ffd916909d579  libgfortran/generated/_sin_c4.F90
! f279fd9540d79043688d3c72b50eff61  libgfortran/generated/_sin_c8.F90
! fbb9d511e33a34f2b15aad5bc1b97324  libgfortran/generated/_sin_r10.F90
! 5b4aee82b02493efce193a636b253a84  libgfortran/generated/_sin_r16.F90
! 1801ed1233b9e80c8a0e5ecc57084a49  libgfortran/generated/_sin_r4.F90
! 0956038d7474f906495dc8686e7a88f1  libgfortran/generated/_sin_r8.F90
! 24877b238d18ad28909dc7f51aa00a25  libgfortran/generated/_sinh_r10.F90
! 7e39c8d0c291a2a94075a0a021d61ca8  libgfortran/generated/_sinh_r16.F90
! 98cbb239d60d1eeb4937471d305b1ff6  libgfortran/generated/_sinh_r4.F90
! 42e68011addb1e773d5eea283cca4a94  libgfortran/generated/_sinh_r8.F90
! 921d13d780f1e65f2f984cab0fb025af  libgfortran/generated/_sqrt_c10.F90
! eea856b301421491ef9cb6a5ec9655de  libgfortran/generated/_sqrt_c16.F90
! e70eb4cd5d506c0e1e7c6574f45b1b59  libgfortran/generated/_sqrt_c4.F90
! 9b34d5150b0e590cb97dea0e330310c3  libgfortran/generated/_sqrt_c8.F90
! 6fdd87db0dc454cc33d13083ca86d985  libgfortran/generated/_sqrt_r10.F90
! 5586d9dda5194695eb6c21b7b9e1cfd7  libgfortran/generated/_sqrt_r16.F90
! f4c12c42bdb0fc2bb398706cab883580  libgfortran/generated/_sqrt_r4.F90
! 0a19abb5a1c35688447325afd61d14b4  libgfortran/generated/_sqrt_r8.F90
! 6058756a3cca426370a72e05d8e759bd  libgfortran/generated/_tan_r10.F90
! a2358203d3071f328f0dbe8e632ff472  libgfortran/generated/_tan_r16.F90
! d475e671b989dbb4199390226f5f4bd8  libgfortran/generated/_tan_r4.F90
! bc5ed507371839742af3a55189e4cfcd  libgfortran/generated/_tan_r8.F90
! 97302d707b3ee3d2b650f60325ea6830  libgfortran/generated/_tanh_r10.F90
! 5c22d35ceab2bb4a000d1af149893605  libgfortran/generated/_tanh_r16.F90
! 5126d10aa3786f3f570f0c23a5d8254e  libgfortran/generated/_tanh_r4.F90
! b3ec65d6ef7db527e9d3bc0ef5711e6f  libgfortran/generated/_tanh_r8.F90
! 72e60bab930fbf35b7208df01a8f9918  libgfortran/generated/all_l1.c
! b4dc5efeb93626a8cbe29045bd39d87e  libgfortran/generated/all_l16.c
! 4bdbbaeacad22b06038f1470ab2a654f  libgfortran/generated/all_l2.c
! 199b06b92be3461cdfe66c5371c0086e  libgfortran/generated/all_l4.c
! 0a678a657b0208c9b98cea0236744089  libgfortran/generated/all_l8.c
! 898d69acdb65138582e11b93efb9aa05  libgfortran/generated/any_l1.c
! 02e9576caa048db3fb1a2a563e019b85  libgfortran/generated/any_l16.c
! 7f73b428f719c5cdb2a09de33b181665  libgfortran/generated/any_l2.c
! 932cdcddfc81cbf8753cf5fad6303609  libgfortran/generated/any_l4.c
! d49ed40cffa54a0d16400df1868f0c94  libgfortran/generated/any_l8.c
! b7f8ed782010b1577aa0ed19adc4389f  libgfortran/generated/bessel_r10.c
! a483e3d2ed2cfec67401df7682b5aaa0  libgfortran/generated/bessel_r16.c
! 21e5f2cdce1bd6c9c9fce54ea7e277e6  libgfortran/generated/bessel_r4.c
! 1767782bae80a962b9e202dd9872a505  libgfortran/generated/bessel_r8.c
! 92504ce725b3a55b318627769c0a25a1  libgfortran/generated/count_16_l.c
! e4c30f5e2669809815ca8f3702f0037c  libgfortran/generated/count_1_l.c
! c58952a696bdd2c6b479f5ee73b5cf61  libgfortran/generated/count_2_l.c
! e61130f2a58631883a8c400d3ceec0b4  libgfortran/generated/count_4_l.c
! 22eb92e36730c7fec159b7666e1633f5  libgfortran/generated/count_8_l.c
! 153421ec550a8c31c9f1f39a07d89ff5  libgfortran/generated/cshift0_c10.c
! e0dd7fa015ff7bde2ed96c077226ab29  libgfortran/generated/cshift0_c16.c
! 64cdb81f32929623c4039389211436cc  libgfortran/generated/cshift0_c4.c
! 60995dc9cdb95c88e0411c368acc3f1c  libgfortran/generated/cshift0_c8.c
! b223e8687aeb2d167b80e0b4ac241578  libgfortran/generated/cshift0_i1.c
! 0f16c60479dd8128765f3b1e4175c97c  libgfortran/generated/cshift0_i16.c
! e5190584d3f64f7f645906d40e74b44b  libgfortran/generated/cshift0_i2.c
! 85c2a9c8a2a8908765f271a115e32453  libgfortran/generated/cshift0_i4.c
! 80d06987378bfc88b308c59a1b9f4ae0  libgfortran/generated/cshift0_i8.c
! c8abf258f5ef0e329e73529b70084a6d  libgfortran/generated/cshift0_r10.c
! 33361504bc3bd75140eac1017ede93a7  libgfortran/generated/cshift0_r16.c
! 1229661ded74e0d12a722f57b42f34f4  libgfortran/generated/cshift0_r4.c
! a2fcd111efb382016ab4ccab0283cf03  libgfortran/generated/cshift0_r8.c
! b21476d839342aff1ba2b93cdeca9b01  libgfortran/generated/cshift1_16.c
! b2a9c1fdc354f32782b7b9c4ec106444  libgfortran/generated/cshift1_16_c10.c
! 069b5257f6605998eaad787b4d62d7bf  libgfortran/generated/cshift1_16_c16.c
! e1b70410133e3163c64aa96454282dcf  libgfortran/generated/cshift1_16_c4.c
! a04ac153905b8002b4841ba33f6c101d  libgfortran/generated/cshift1_16_c8.c
! 5a00637cfeb4b1f39ad3369c0eeae86b  libgfortran/generated/cshift1_16_i1.c
! cfb8e193c1ae9dec80ed28ea9fed649d  libgfortran/generated/cshift1_16_i16.c
! 963c1c65f94d0b67f781da1128c633e7  libgfortran/generated/cshift1_16_i2.c
! c374545837cedfdf3338c70522577b10  libgfortran/generated/cshift1_16_i4.c
! b328c2685a7de48d680bbba81d6465a3  libgfortran/generated/cshift1_16_i8.c
! 57586bfb78437972d1d80a35c7560fad  libgfortran/generated/cshift1_16_r10.c
! d46d35ae0bafbd39d8ac3ac368ee7958  libgfortran/generated/cshift1_16_r16.c
! acca9c0f22684561ec5732f4564f047d  libgfortran/generated/cshift1_16_r4.c
! 7a6cf84b5c636905a5d83a751dad59b6  libgfortran/generated/cshift1_16_r8.c
! 67cedd4e9ac429c6fbd8d22aceae40fb  libgfortran/generated/cshift1_4.c
! 6c521f2a6010597bef1b54db61e328ac  libgfortran/generated/cshift1_4_c10.c
! 074ddf1d5120f0f1d3aea51557a7741b  libgfortran/generated/cshift1_4_c16.c
! 3d76d5bdb6d409c6fcddb86f3e28b7ba  libgfortran/generated/cshift1_4_c4.c
! 50bde08b4662088cf995357ea91e3848  libgfortran/generated/cshift1_4_c8.c
! 10be2803a0c644c7f284557643cb383f  libgfortran/generated/cshift1_4_i1.c
! 21041ea9df6f2a292ff89101efc30a99  libgfortran/generated/cshift1_4_i16.c
! 3d6f673e27ba7405d23a2dabc32d29d2  libgfortran/generated/cshift1_4_i2.c
! ea7131b15ca55b4e16da020ee5236c98  libgfortran/generated/cshift1_4_i4.c
! 7e2e59ebeefd26d2317d8ed30b1a35fc  libgfortran/generated/cshift1_4_i8.c
! 086955d78b8825d39c9825f0f3a45d60  libgfortran/generated/cshift1_4_r10.c
! 4fc5aa2fe25e4bf701cd26abbb8ce47b  libgfortran/generated/cshift1_4_r16.c
! 367c3f0ab539cfbb4a981c33970877b4  libgfortran/generated/cshift1_4_r4.c
! d272c7bb597e2de4dced8771d5223835  libgfortran/generated/cshift1_4_r8.c
! 4809f55dc646251e9032b5719cbf01df  libgfortran/generated/cshift1_8.c
! 7ee74379b842df59d1e9ec4ebf2110dd  libgfortran/generated/cshift1_8_c10.c
! d53e9a408ee78415c5f54a76ef8d87dc  libgfortran/generated/cshift1_8_c16.c
! 4dae9e2e173336da7ae3ec8f403bceeb  libgfortran/generated/cshift1_8_c4.c
! 58ad996f54b1266528ea409b06e8eb25  libgfortran/generated/cshift1_8_c8.c
! dcf4795ea071dae456dfa2345350b967  libgfortran/generated/cshift1_8_i1.c
! 14c23bbc18e092eaaf2eea342fc8daa2  libgfortran/generated/cshift1_8_i16.c
! 655301c2fdcf25193d0687845904b389  libgfortran/generated/cshift1_8_i2.c
! 9316a0d528ec6d7cfcbd6f653a9cdf76  libgfortran/generated/cshift1_8_i4.c
! 05edeb9f08a0ac9b2babcc2aaa52320d  libgfortran/generated/cshift1_8_i8.c
! f1ecbf0f00d864ea359569549bf330da  libgfortran/generated/cshift1_8_r10.c
! d4890df251ed016124f03694b60e87f9  libgfortran/generated/cshift1_8_r16.c
! fb1803975262c0f1affe2e42cb0c896a  libgfortran/generated/cshift1_8_r4.c
! 5aef1a18ef1edd18d6112f64dafba719  libgfortran/generated/cshift1_8_r8.c
! 64aff0d0cff3f552887113f0746a4bd1  libgfortran/generated/eoshift1_16.c
! 3bda8acee8e7fb3c754cc6d94a471e8c  libgfortran/generated/eoshift1_4.c
! ad6aa69770d940288672c7222142b42f  libgfortran/generated/eoshift1_8.c
! af049e243cbca64b50747408f0349bb0  libgfortran/generated/eoshift3_16.c
! ab47cd519086798ffe2efcac08fe3df4  libgfortran/generated/eoshift3_4.c
! 200fdbd2245be0ac1a4779d5a2d4ffd8  libgfortran/generated/eoshift3_8.c
! 76d63cb43aa71b70c0cfcbcb74051733  libgfortran/generated/findloc0_c10.c
! 676469082208e3dc16bd1214379394bd  libgfortran/generated/findloc0_c16.c
! ed47f471c830717eb61e0013ca5a94e7  libgfortran/generated/findloc0_c4.c
! f930a324a4e698cb647d315234935cfa  libgfortran/generated/findloc0_c8.c
! 6a4c9803ea72969432e9d98fe3d09144  libgfortran/generated/findloc0_i1.c
! 0edaff49c17e8412e2382f1b1466ff75  libgfortran/generated/findloc0_i16.c
! a59882d71a699fe41f597afddb9f185a  libgfortran/generated/findloc0_i2.c
! bf2d61aa49ea201449c0d50770086be5  libgfortran/generated/findloc0_i4.c
! d59aaad4f13128fe3864c91f06e0e8d9  libgfortran/generated/findloc0_i8.c
! 2cd334d0253356951a3b32a6e015f055  libgfortran/generated/findloc0_r10.c
! 72f53732c4e1627c6c489a78c66af850  libgfortran/generated/findloc0_r16.c
! 907cbd3b19b4414a6090643d1f152ce2  libgfortran/generated/findloc0_r4.c
! 7d81fff2a5b9bb37d40860adece07f30  libgfortran/generated/findloc0_r8.c
! edc28bcf7c0a95c49628dc045a4c9942  libgfortran/generated/findloc0_s1.c
! ec3f836d79f191bb8113965e4b45db51  libgfortran/generated/findloc0_s4.c
! 2533a8530a570784fb7ff0f381adbebc  libgfortran/generated/findloc1_c10.c
! 6a7941a411ec8df45613bbb5dc90573a  libgfortran/generated/findloc1_c16.c
! b4395ab4a060d7065a99c17ca1faf388  libgfortran/generated/findloc1_c4.c
! 0842d7226b0c44aa845d149a0181a811  libgfortran/generated/findloc1_c8.c
! 74a666dd168b7abd64b8500ac7e02410  libgfortran/generated/findloc1_i1.c
! 9bd1966f54622cf783dce357dec14df5  libgfortran/generated/findloc1_i16.c
! e6af5db54f14c2f70871b8b3a50780f6  libgfortran/generated/findloc1_i2.c
! f3f3e67dc0232422ee54a3f143b6f1fc  libgfortran/generated/findloc1_i4.c
! 240c398c9a8a87fe8c0e0ef5f4b4ad76  libgfortran/generated/findloc1_i8.c
! c983c21d2a17fcbd8b01b7301e325b28  libgfortran/generated/findloc1_r10.c
! d25a8bd183afc98d832adad4aeccef09  libgfortran/generated/findloc1_r16.c
! e0b584374906ab02407369ac57d9a379  libgfortran/generated/findloc1_r4.c
! 6925f69ac494bc84188590b8f944c6c9  libgfortran/generated/findloc1_r8.c
! 5907c104223bac362f6f71d38b662f63  libgfortran/generated/findloc1_s1.c
! bfb03ef28ec998b4c8f0a72928468b6a  libgfortran/generated/findloc1_s4.c
! 156099b661f8660072cd565c3d16d354  libgfortran/generated/findloc2_s1.c
! 99d9c95bf4d1d19a408b233a6ea1fb3e  libgfortran/generated/findloc2_s4.c
! 46f729bc06cc5d12d471f71d9890e888  libgfortran/generated/iall_i1.c
! fab09daaadc9dd7ebb49b99a49cd61b8  libgfortran/generated/iall_i16.c
! 915eff49c56931b718221672484be17c  libgfortran/generated/iall_i2.c
! c4df9412107b3a75d2df8d3521925132  libgfortran/generated/iall_i4.c
! f30bed00e0e8d6c0801baa7beb6180de  libgfortran/generated/iall_i8.c
! 9af02360355e9e67faf39c97ce87c97f  libgfortran/generated/iany_i1.c
! d2f58f57e4643b09cea1062214c54316  libgfortran/generated/iany_i16.c
! 45d97f24086edc0c1541e311aac21157  libgfortran/generated/iany_i2.c
! 78208b50d47fbbb7463953f9da24e997  libgfortran/generated/iany_i4.c
! 16891125e1d5d85fc55953bfcb2a9ddd  libgfortran/generated/iany_i8.c
! 688e51bed59229df317775dde8cae84f  libgfortran/generated/in_pack_c10.c
! 0542bf18520509ebabcd2fdc955d63cc  libgfortran/generated/in_pack_c16.c
! 09cb0b374f009bafe3ba5107bc5c8f8b  libgfortran/generated/in_pack_c4.c
! 0aadf674cf35e0e1d9f244f5ae080ccd  libgfortran/generated/in_pack_c8.c
! 62026b375ddc14114bc17c58066186ab  libgfortran/generated/in_pack_i1.c
! 6dda90a2722e0c1c9bc5b91169731a25  libgfortran/generated/in_pack_i16.c
! 9cf86d0652da435029b5de330319c325  libgfortran/generated/in_pack_i2.c
! aa65b44e6cf75767a25806c4fbd83f28  libgfortran/generated/in_pack_i4.c
! 3c29883faa26e1021b33a5a666878911  libgfortran/generated/in_pack_i8.c
! cfbb23758317f66fedae573e9bd3af7d  libgfortran/generated/in_pack_r10.c
! 2d72713b76014a622abc59d9ff3d086c  libgfortran/generated/in_pack_r16.c
! 4e1cdc62af5e0b0d26c4ea7a3e903639  libgfortran/generated/in_pack_r4.c
! e39a22941df81af56b227803db4760c9  libgfortran/generated/in_pack_r8.c
! ac01a512d61313548d20bf5f34de3bc8  libgfortran/generated/in_unpack_c10.c
! 7fd4ed593dc90b01ff390298eb60e2bb  libgfortran/generated/in_unpack_c16.c
! 2d58e36eb2573d66e4a2c42d71fdc543  libgfortran/generated/in_unpack_c4.c
! 9a79768d1a2bbc26362391cedeff3846  libgfortran/generated/in_unpack_c8.c
! c10da51edb867acd99836d6c7a4aad20  libgfortran/generated/in_unpack_i1.c
! 30d3f98663a12afef5b17d547e5b3b28  libgfortran/generated/in_unpack_i16.c
! 0bdfb478fe3a04f202efe43728ccf285  libgfortran/generated/in_unpack_i2.c
! 7ab6ecae8c8b1a7008594afefbb8f572  libgfortran/generated/in_unpack_i4.c
! 049bca92650e0a34bfe545e73a0b414e  libgfortran/generated/in_unpack_i8.c
! 45baa6dfe33048034b61604568289b07  libgfortran/generated/in_unpack_r10.c
! 95c129d90e49e4ec314c817090ff7a3c  libgfortran/generated/in_unpack_r16.c
! 2d7af624766760bc8649988e76396e85  libgfortran/generated/in_unpack_r4.c
! 7e4589c25b0db7cceb5062d0a4d3b9f4  libgfortran/generated/in_unpack_r8.c
! bea1bafdc710f988d9c2af44d4a6b6bb  libgfortran/generated/iparity_i1.c
! 57d181a09e83b890a6a1eb93f0674f70  libgfortran/generated/iparity_i16.c
! af7bc1960a96dc321742c793125acdca  libgfortran/generated/iparity_i2.c
! 19329fae15eb54ff4df43f705ab669f8  libgfortran/generated/iparity_i4.c
! 53a832f45c1c33486a7f1cda6851b8f8  libgfortran/generated/iparity_i8.c
! 445d95e7c57cde1e76ac3b75240928ec  libgfortran/generated/matmul_c10.c
! 28c2e151aca1c469f8e75162c4421362  libgfortran/generated/matmul_c16.c
! 891d88d9fd9b887fe8dce0ab3c27e85a  libgfortran/generated/matmul_c4.c
! e8b7556043cd46a20ede897e11714125  libgfortran/generated/matmul_c8.c
! 578c304c90a1479d894c70b56907d37a  libgfortran/generated/matmul_i1.c
! 8a53c021daaacb219d8e81719c838788  libgfortran/generated/matmul_i16.c
! 1c838d040b45633dcccdc1254cfeb5cf  libgfortran/generated/matmul_i2.c
! 47c63e6cc593bf43f34e030759dd6f0c  libgfortran/generated/matmul_i4.c
! e8a453b657c1a58d98bc765c7d1b0ed8  libgfortran/generated/matmul_i8.c
! 7bf048626dba6eebaaf5a679e4b17248  libgfortran/generated/matmul_l16.c
! d731caf94c1f68235fe85d754fe500e0  libgfortran/generated/matmul_l4.c
! c296df0d240973f7a5a2e9fc76f41b4d  libgfortran/generated/matmul_l8.c
! 4b53114fd2dc8256227eb168914d7d06  libgfortran/generated/matmul_r10.c
! 1187cb7a65194d75fa1f2c8068c44ded  libgfortran/generated/matmul_r16.c
! c154a16b0907f8c7dc4868516ae1df26  libgfortran/generated/matmul_r4.c
! 644ce46e8de96004b3f546e0dadd9d29  libgfortran/generated/matmul_r8.c
! c37453cd50d82de3cc8d6d57bb1197a0  libgfortran/generated/matmulavx128_c10.c
! 65ce3f7ed6f36a12c5256165b3e67537  libgfortran/generated/matmulavx128_c16.c
! d521dc7fcab092fc2e8bd35082b6f38b  libgfortran/generated/matmulavx128_c4.c
! 9a2fca39706fc1b45268f2ab875ed77a  libgfortran/generated/matmulavx128_c8.c
! 923d758c664814d2244a4883e057893b  libgfortran/generated/matmulavx128_i1.c
! c549e88abb44e9dbe0df91974fcf584c  libgfortran/generated/matmulavx128_i16.c
! 7b701cfc02bd0854ad03bda67b038719  libgfortran/generated/matmulavx128_i2.c
! a92fd5c53a14085ab317cdef1ed2f71b  libgfortran/generated/matmulavx128_i4.c
! 8dd3916f5d409ead8ef9d0a731ac4860  libgfortran/generated/matmulavx128_i8.c
! 8acfddff15b17470d184d1824f59f88d  libgfortran/generated/matmulavx128_r10.c
! 7aa1f5d1c22ea8eedc33feb47b006ed7  libgfortran/generated/matmulavx128_r16.c
! 1f16c9c75477b30c8694621ac687c8ae  libgfortran/generated/matmulavx128_r4.c
! 734990298d1029e588f1dd6c9154f87b  libgfortran/generated/matmulavx128_r8.c
! ce8720c61253b565e7e452bf75b1028e  libgfortran/generated/maxloc0_16_i1.c
! 425e0751705b1e46dae2e11553449138  libgfortran/generated/maxloc0_16_i16.c
! 361ab6e3ad11169f1836a7e8695cd3ce  libgfortran/generated/maxloc0_16_i2.c
! 97b2d263c620da3a981473d1300abe8f  libgfortran/generated/maxloc0_16_i4.c
! 57bed9abee11e4a71918c6df263b8c5f  libgfortran/generated/maxloc0_16_i8.c
! cca36e207327b27ec94cefd20e258940  libgfortran/generated/maxloc0_16_r10.c
! ef1b7d16ed81ea862732643b0cc7947e  libgfortran/generated/maxloc0_16_r16.c
! f7aa9eac24af810827272fce18ce5146  libgfortran/generated/maxloc0_16_r4.c
! 4eab95fd39e4c942935b5b0203a2d9e4  libgfortran/generated/maxloc0_16_r8.c
! bbf93fb69e1af405ec71c33ece31762b  libgfortran/generated/maxloc0_16_s1.c
! 638a4bbd23438936924de6771c15dd28  libgfortran/generated/maxloc0_16_s4.c
! 3327fc72f9832676001aaea5269aa5e8  libgfortran/generated/maxloc0_4_i1.c
! 36563416aada0d6a7f255019f54378d2  libgfortran/generated/maxloc0_4_i16.c
! 4b27404074bc8c423a648b1735c12c68  libgfortran/generated/maxloc0_4_i2.c
! 187267fc944548357652a39ef983592b  libgfortran/generated/maxloc0_4_i4.c
! e33037e45c8e88ee0451f1d32e6af188  libgfortran/generated/maxloc0_4_i8.c
! 30b7325c00a5c3fa1f806e4d73a7d743  libgfortran/generated/maxloc0_4_r10.c
! a7805a1724007d42b5c3654ee6a40ca2  libgfortran/generated/maxloc0_4_r16.c
! 2dec14103d98330ad4b1cafbfe2530fb  libgfortran/generated/maxloc0_4_r4.c
! 740e63e8e24de83bc4996979b32f8cec  libgfortran/generated/maxloc0_4_r8.c
! 023699ab96ad27bdc325c6b83925a54d  libgfortran/generated/maxloc0_4_s1.c
! d0f637e8fdfd456e4cc98754a9a57e8f  libgfortran/generated/maxloc0_4_s4.c
! 24c5754699dfad8dcfda03173ea057ca  libgfortran/generated/maxloc0_8_i1.c
! a0e1e9fe34483b59071b6974ec3e631b  libgfortran/generated/maxloc0_8_i16.c
! 859072d951e151e010acefad8e024b11  libgfortran/generated/maxloc0_8_i2.c
! 2d777232eb5cc8ab0dbdc5a721daaeff  libgfortran/generated/maxloc0_8_i4.c
! 45f31edd29d5c374c8cd15c921b901e6  libgfortran/generated/maxloc0_8_i8.c
! 5f9ea1e9f142c3e1a458e5dbf3454772  libgfortran/generated/maxloc0_8_r10.c
! 11585aab4f5137f2f79a318ec4f76183  libgfortran/generated/maxloc0_8_r16.c
! 26168b4747ebf47331dbbafd8f4529f3  libgfortran/generated/maxloc0_8_r4.c
! 239d027d22d2547f989c49d004f2834c  libgfortran/generated/maxloc0_8_r8.c
! 520379bd36d01453515a4fc110ff53cb  libgfortran/generated/maxloc0_8_s1.c
! 948d1708822280b760ff26deff200abe  libgfortran/generated/maxloc0_8_s4.c
! 7d1ff3a0a96923637f19e4fd4cd13f7a  libgfortran/generated/maxloc1_16_i1.c
! b947cc39b720ec955e18a3863d7ea436  libgfortran/generated/maxloc1_16_i16.c
! 24c3fe9254bb5d8b3bedef9c66e9b0ef  libgfortran/generated/maxloc1_16_i2.c
! 6d3ecf27dc64bfc371fe0f16cf8be793  libgfortran/generated/maxloc1_16_i4.c
! dee415814dbe34d40016e5fe319c3a65  libgfortran/generated/maxloc1_16_i8.c
! 7cbb87e1c959420d48777b547ef74770  libgfortran/generated/maxloc1_16_r10.c
! c5fa803482b003058696f05c02b09530  libgfortran/generated/maxloc1_16_r16.c
! 19125073a102330b5a6c46eaa3793682  libgfortran/generated/maxloc1_16_r4.c
! 707ea60526e13c03afaa503b879dd8d6  libgfortran/generated/maxloc1_16_r8.c
! 91606ba7c37a172e94e06f96441e8c75  libgfortran/generated/maxloc1_16_s1.c
! 475c15934d68907af5a42010ced9ee7f  libgfortran/generated/maxloc1_16_s4.c
! c9b195d118f5d316db6c6e127723dc85  libgfortran/generated/maxloc1_4_i1.c
! 620836dd7a0ccae01c5ba7d545207ac5  libgfortran/generated/maxloc1_4_i16.c
! f63ed891aa60214ca8e17deae9600ca0  libgfortran/generated/maxloc1_4_i2.c
! 39caf9fe4accbc367df03982b46844a2  libgfortran/generated/maxloc1_4_i4.c
! d249eafc098e636432f5ca3874f50c02  libgfortran/generated/maxloc1_4_i8.c
! 70d898e96cbe09c76c42e8585c28f8ff  libgfortran/generated/maxloc1_4_r10.c
! 2b96ed982c72cea4faf14185830a81ef  libgfortran/generated/maxloc1_4_r16.c
! 275e118b841eea23bd02b9ce237a249e  libgfortran/generated/maxloc1_4_r4.c
! 1015416c684f7978f9e2ff44d4e1efde  libgfortran/generated/maxloc1_4_r8.c
! 069b14c8f14d47398b3c1f78b6ce765e  libgfortran/generated/maxloc1_4_s1.c
! bd7cbbfcd35c9357d7c51df17af9aaaf  libgfortran/generated/maxloc1_4_s4.c
! 6ff2fd6b3632e3339fd1e32d9505f8dd  libgfortran/generated/maxloc1_8_i1.c
! eff0e4bcc527111692f1745c5a35eb13  libgfortran/generated/maxloc1_8_i16.c
! 389cb399c41baa140fd49db52098794f  libgfortran/generated/maxloc1_8_i2.c
! 7ee9b2abf01a5fab002ddc33a823eb5d  libgfortran/generated/maxloc1_8_i4.c
! dd9b7c87df5428ce1c788fd51be96c3d  libgfortran/generated/maxloc1_8_i8.c
! 01ad8c7d274aad113dd594e8cb66772b  libgfortran/generated/maxloc1_8_r10.c
! 8f3559e48581d888276b11f54b97543f  libgfortran/generated/maxloc1_8_r16.c
! c8edae55d75816d69652492b69fdf63a  libgfortran/generated/maxloc1_8_r4.c
! e3ed38c09b0152da22ef602bb89bb3d6  libgfortran/generated/maxloc1_8_r8.c
! 52851568cc59414f42715c3d7febc5c1  libgfortran/generated/maxloc1_8_s1.c
! 16cb403f25719ca19d902492bef38ced  libgfortran/generated/maxloc1_8_s4.c
! 0aca1c7b5a48ac045fbfd5fb1d3fa261  libgfortran/generated/maxloc2_16_s1.c
! fbe4670d1de5945b7f13b1741bda4dd2  libgfortran/generated/maxloc2_16_s4.c
! 6889bbe560b3718936c5ef4571fb2869  libgfortran/generated/maxloc2_4_s1.c
! c9750ff69bf3dadc45f2754ae3b01e99  libgfortran/generated/maxloc2_4_s4.c
! c35437dc3b15819e72f0f0a7e2af497b  libgfortran/generated/maxloc2_8_s1.c
! d8c78144d06b65556ebf6c33e7979c56  libgfortran/generated/maxloc2_8_s4.c
! a307f168c0492c48bd2af958a0d9256b  libgfortran/generated/maxval0_s1.c
! 3ebe44a56597ec092f28b8c99f39f811  libgfortran/generated/maxval0_s4.c
! bd895c6129ffcb343024ffc4260850bc  libgfortran/generated/maxval1_s1.c
! 93cdbad26ab59617db8a257d72c62101  libgfortran/generated/maxval1_s4.c
! 91eaa3cfa34ef9443cde4352f7bd418e  libgfortran/generated/maxval_i1.c
! 9db0b2591c7ea99ba05b41f45abae389  libgfortran/generated/maxval_i16.c
! a5dbeaccdcce71af8e3c46d3a34fa373  libgfortran/generated/maxval_i2.c
! 27c50304f01f5189c6aac61c3a175de3  libgfortran/generated/maxval_i4.c
! 1c415ab91bc8963360efe5af88e49b15  libgfortran/generated/maxval_i8.c
! 94dcfa614d7371345b18702ef4030d92  libgfortran/generated/maxval_r10.c
! cbe77bb425313df353464c329b29ce78  libgfortran/generated/maxval_r16.c
! a2f52fe0e59122b0cd49f1e4449930c6  libgfortran/generated/maxval_r4.c
! eb2025312220a64dcbdb22fdb22c94d4  libgfortran/generated/maxval_r8.c
! feac16ae51499c4c79d4a683228fc98c  libgfortran/generated/minloc0_16_i1.c
! cc4bf79dc97e0f40b2af7debe7dfa1b8  libgfortran/generated/minloc0_16_i16.c
! 14bbf66b70279d14d61a72bfa494bc84  libgfortran/generated/minloc0_16_i2.c
! 97490fee7875d5d8934b64f9be5074e2  libgfortran/generated/minloc0_16_i4.c
! a5ee6ad982f560151bf497571fc185b5  libgfortran/generated/minloc0_16_i8.c
! 4ee1c2f21f3fc9d182f65b38897d1eb1  libgfortran/generated/minloc0_16_r10.c
! 6dc4aaeb5bbc349f9310b06dd56a8d86  libgfortran/generated/minloc0_16_r16.c
! b817910fed8cdafe9b69219ffaa6ddca  libgfortran/generated/minloc0_16_r4.c
! 74c0d4cda409bd8ea4d6ef4ebc1377c3  libgfortran/generated/minloc0_16_r8.c
! 91fe2e98e316b64617934470e916687d  libgfortran/generated/minloc0_16_s1.c
! 3f0f9c7e1fef7e93cb72872f7ab60e11  libgfortran/generated/minloc0_16_s4.c
! 641ba507760f248b461d1e15212537bd  libgfortran/generated/minloc0_4_i1.c
! c582c2e03a6385bd71aeab6fd3266da4  libgfortran/generated/minloc0_4_i16.c
! f18eaee730c296bef627136265475af0  libgfortran/generated/minloc0_4_i2.c
! 0108a8a8ec24588ee85065e29b7998db  libgfortran/generated/minloc0_4_i4.c
! 05654806b6b8447fcb82053b7911859d  libgfortran/generated/minloc0_4_i8.c
! 7238cc8ecf116ba86cab3e1d610a858d  libgfortran/generated/minloc0_4_r10.c
! df9cf188a3261008e50efa6258446c85  libgfortran/generated/minloc0_4_r16.c
! b59ef463516860e1bdb6cdbc8908b1cd  libgfortran/generated/minloc0_4_r4.c
! dad20635c97c77e8b79455c15d1501cc  libgfortran/generated/minloc0_4_r8.c
! d97e4133a03b4ac0fffdd499f3fb3efa  libgfortran/generated/minloc0_4_s1.c
! ac4910ca78e132227c49fddaccb8d6fc  libgfortran/generated/minloc0_4_s4.c
! 0d99c3af080eb1ad48c480fdb5c42aa1  libgfortran/generated/minloc0_8_i1.c
! 3f9e7fc36fe1ee4464cc75f4a00555ea  libgfortran/generated/minloc0_8_i16.c
! 64bbfa889e765e950022d34a9e6e5b16  libgfortran/generated/minloc0_8_i2.c
! 48199a607a84e0c656f2109b4ed62033  libgfortran/generated/minloc0_8_i4.c
! 94aa5d6b313eb567035eb43b29a65beb  libgfortran/generated/minloc0_8_i8.c
! 5c35a223b93231767f94f336303b6654  libgfortran/generated/minloc0_8_r10.c
! c1fddeff31210924e352ada9646f8450  libgfortran/generated/minloc0_8_r16.c
! c9608fbd944f173cd75fe8019084b529  libgfortran/generated/minloc0_8_r4.c
! 1b785704db62b6ec6f7ecda67f7ff3f2  libgfortran/generated/minloc0_8_r8.c
! 3a12b19a92f4a720b8d7255c6fd3c71d  libgfortran/generated/minloc0_8_s1.c
! 94e15da4ca8805ea721a4f68c953e49d  libgfortran/generated/minloc0_8_s4.c
! feaa9279aeb000218bd7c4d19b2ee4c9  libgfortran/generated/minloc1_16_i1.c
! 8b8928d06d4f50e22f204dd8927cfd82  libgfortran/generated/minloc1_16_i16.c
! 3f82ddff19c072bd2c029ba0be4cc683  libgfortran/generated/minloc1_16_i2.c
! 59cc472a8ffdc7ac7c3bd2397e35f1a5  libgfortran/generated/minloc1_16_i4.c
! be34ada420dba219fc8a511a9683ef6c  libgfortran/generated/minloc1_16_i8.c
! 870878db3779e2097f1380733ca1b71a  libgfortran/generated/minloc1_16_r10.c
! 16da647c7e60a054397bce8c112e53d7  libgfortran/generated/minloc1_16_r16.c
! 6a99b5bea4cb9bd823b1fb1a5f30d3fb  libgfortran/generated/minloc1_16_r4.c
! fd6e5cc63ef941603394957d7c1f73f0  libgfortran/generated/minloc1_16_r8.c
! 15e5be0044bef4101affb054f87fbe1d  libgfortran/generated/minloc1_16_s1.c
! 4fe1e5a6c377914ea3fc64f162a7bb1d  libgfortran/generated/minloc1_16_s4.c
! 7b37bf784af841ecf557b3efb0a7b267  libgfortran/generated/minloc1_4_i1.c
! d82df8b04d26448b4328e51760428954  libgfortran/generated/minloc1_4_i16.c
! db05da3a9737456a37c59afca02584d0  libgfortran/generated/minloc1_4_i2.c
! b70235c0a3cd8ecc9ba38d775d65ed9b  libgfortran/generated/minloc1_4_i4.c
! 30559c995d441049fde4e9c17b0d0d44  libgfortran/generated/minloc1_4_i8.c
! c81a931e36bdeb966c83767fd1f6c125  libgfortran/generated/minloc1_4_r10.c
! b9c3c898070378d1dd6d8873543de1b4  libgfortran/generated/minloc1_4_r16.c
! 7f2e6e208a58e14f552d8aec5b4d04f4  libgfortran/generated/minloc1_4_r4.c
! e22d2c866552fa0545d8493f48ab5288  libgfortran/generated/minloc1_4_r8.c
! 05d62cece902cdb7d8f9976aab3a699a  libgfortran/generated/minloc1_4_s1.c
! 2852d169b91d49311ecd95297c3b091f  libgfortran/generated/minloc1_4_s4.c
! 231da588fab43cdc436888fcc1027755  libgfortran/generated/minloc1_8_i1.c
! c1a550322790b7d8a48850837b433fc3  libgfortran/generated/minloc1_8_i16.c
! 1a985c449629f2a5ce11f3475cd54c11  libgfortran/generated/minloc1_8_i2.c
! 29cffe615266f1b6f7dfd716b1d41e3f  libgfortran/generated/minloc1_8_i4.c
! a0923bea3894df9b62695974cfac948c  libgfortran/generated/minloc1_8_i8.c
! 11848054e16ac332d6260ac1de808f96  libgfortran/generated/minloc1_8_r10.c
! 1ebb1680594377515700b46ee7fa0c89  libgfortran/generated/minloc1_8_r16.c
! 64e75316a312efa4d85cea0f46e05e27  libgfortran/generated/minloc1_8_r4.c
! c3a9b78019959cac21a21d41ffc8b182  libgfortran/generated/minloc1_8_r8.c
! 566ac7827509b4093d3549037389ba01  libgfortran/generated/minloc1_8_s1.c
! 05efb30e928923005833d75f0b3730c8  libgfortran/generated/minloc1_8_s4.c
! 75e47dcb17b731231f825f701d42f999  libgfortran/generated/minloc2_16_s1.c
! 7eb0861bb6257144b3110be5ca462a98  libgfortran/generated/minloc2_16_s4.c
! 01521798c7f1ccaba1caac36c685971d  libgfortran/generated/minloc2_4_s1.c
! 84f8b524535647568c08d3b4bd7bcc43  libgfortran/generated/minloc2_4_s4.c
! 96be08e43149ca7c7f60033ac93f575f  libgfortran/generated/minloc2_8_s1.c
! 13960f71bbbacf2d1a2a575e3898eb1e  libgfortran/generated/minloc2_8_s4.c
! 5549a1fddcbda31ee22b451381dd8756  libgfortran/generated/minval0_s1.c
! 554b3c92d9fdb80c475f14dc37dd6368  libgfortran/generated/minval0_s4.c
! 236f8b405a6a34f9facfc41524576e99  libgfortran/generated/minval1_s1.c
! dd5d07e0a2662207fdba5ff4d96706e5  libgfortran/generated/minval1_s4.c
! c5b6af7b00e314cf69821fabd69a8bcf  libgfortran/generated/minval_i1.c
! ba1dbe9a307d828a4a41dab9a145871b  libgfortran/generated/minval_i16.c
! febcd6d1ee941b16bebc12e1321969d2  libgfortran/generated/minval_i2.c
! 24ac4565920c251c936d815c579c143e  libgfortran/generated/minval_i4.c
! 6147f2072f275265c0b26e6e6cea581f  libgfortran/generated/minval_i8.c
! 759c710a9909bd2b9ed9ea4519c4d741  libgfortran/generated/minval_r10.c
! 0a529545607227c27becb2aaec53850a  libgfortran/generated/minval_r16.c
! bb06ba5b45981065b18d2729e714bbd0  libgfortran/generated/minval_r4.c
! 7491726cec48891c44463e8f21a2a7fe  libgfortran/generated/minval_r8.c
! 66b9c4ad3376c1c483273e6e0ff2c2a2  libgfortran/generated/misc_specifics.F90
! 61e5543c31d31c9633b07e991f8ac85d  libgfortran/generated/norm2_r10.c
! aa1d60036c116f4090ebcc354e399ef6  libgfortran/generated/norm2_r16.c
! 1653c46ef3ab1abc4ce79f3bbdd35a52  libgfortran/generated/norm2_r4.c
! 7ccebe281b9b80838e9c3a79b1d8b9ee  libgfortran/generated/norm2_r8.c
! a96483f16bf1da7be65508ac8d7c4b97  libgfortran/generated/pack_c10.c
! f25508f08bc6897c8b77dbf93c9e8513  libgfortran/generated/pack_c16.c
! 58ff77b19f87bfef93c11b17126436f0  libgfortran/generated/pack_c4.c
! 25eacd5956a5abc1a03bd5a50182a5bf  libgfortran/generated/pack_c8.c
! 27ced1ef1e00665010bfb3cb53585323  libgfortran/generated/pack_i1.c
! 2360de4ee4a049673955b31ee513a52f  libgfortran/generated/pack_i16.c
! 5c99aaf8bdc1af89d3a14c4f7b1351ff  libgfortran/generated/pack_i2.c
! babb7e38ac4f7b6feb67149bf3f41eb9  libgfortran/generated/pack_i4.c
! 2a8b0153688750ba227e8414fde39630  libgfortran/generated/pack_i8.c
! 19bda917a8f0f6880eda92a68d27633e  libgfortran/generated/pack_r10.c
! cdb2a55109bdd7bf2010d3d4ac31cd5a  libgfortran/generated/pack_r16.c
! cb71fc2bf954f25e64efce7f3ca1f3ef  libgfortran/generated/pack_r4.c
! 3ee4745452d36d3bc38f67443dc6140f  libgfortran/generated/pack_r8.c
! e73058951aae9db3195bde1b16d474dc  libgfortran/generated/parity_l1.c
! 881d697efdf815387d001fb3903651a7  libgfortran/generated/parity_l16.c
! 9fb97d9cf2e5d80223e41f9b3e7087ad  libgfortran/generated/parity_l2.c
! 531a67befa572bccef834302f4d4012a  libgfortran/generated/parity_l4.c
! c091f92d5d50bb894badda5bced7f034  libgfortran/generated/parity_l8.c
! f187045015310fd852732f67d17fe1ff  libgfortran/generated/pow_c10_i16.c
! 3c749039f9216426b39bbdacc78f50ec  libgfortran/generated/pow_c10_i4.c
! 478be541723153a0f216513110ec526e  libgfortran/generated/pow_c10_i8.c
! e291f5e121534c24fc429937d7f5d172  libgfortran/generated/pow_c16_i16.c
! 40f0a249dfa89928687b001167532e1d  libgfortran/generated/pow_c16_i4.c
! decfef0ed0bc868e1773ddf82d6cf8ea  libgfortran/generated/pow_c16_i8.c
! 8a27ca324635a00b2a7c5ff8017e5c65  libgfortran/generated/pow_c4_i16.c
! d12c3387658254562ad04cba3d1e0255  libgfortran/generated/pow_c4_i4.c
! 8b468d954a788da3bc425019146850a6  libgfortran/generated/pow_c4_i8.c
! 1f9e464602e31f166c1812af953ab70d  libgfortran/generated/pow_c8_i16.c
! fa84a1eef16db20fcca586cbfca1d187  libgfortran/generated/pow_c8_i4.c
! 0cbe9afab2ac933e0a9c9c487e365cb6  libgfortran/generated/pow_c8_i8.c
! 92a3aefd3ee981bd4fe98f9b31233f28  libgfortran/generated/pow_i16_i16.c
! 3e661d5ac035b4e08c3bee0e75d27c46  libgfortran/generated/pow_i16_i4.c
! 53ac871e4ec0f513114f3a6600922c94  libgfortran/generated/pow_i16_i8.c
! 752ec98d305e1cd863d158a5515f87fc  libgfortran/generated/pow_i4_i16.c
! c34913ac79379557d8ea6ba267ab8eb8  libgfortran/generated/pow_i4_i4.c
! e6245f9ac5eea4631f71d91eba9d720b  libgfortran/generated/pow_i4_i8.c
! 8566c976c54dc3fbe63dc3ac47a4e928  libgfortran/generated/pow_i8_i16.c
! bf91333745dce9097d0a6ac0566df923  libgfortran/generated/pow_i8_i4.c
! 28aab4c32ebea6a9b796e97185b5d589  libgfortran/generated/pow_i8_i8.c
! 7fff1f26034119993e531eb5150d3ab6  libgfortran/generated/pow_r10_i16.c
! d37bcc59e1035c19152bd5674bace67d  libgfortran/generated/pow_r10_i8.c
! 60905e7735a3bf56ca5ba0fa3e7cf186  libgfortran/generated/pow_r16_i16.c
! 864e782099c8b639a002d070271c3992  libgfortran/generated/pow_r16_i4.c
! 6f1cc32faed159919f23e28fe61ee088  libgfortran/generated/pow_r16_i8.c
! 19cb5f9871bf29b27c9a31eef44ab4ab  libgfortran/generated/pow_r4_i16.c
! 0ff6a9817b37e05e4b05d9f46e1feb0f  libgfortran/generated/pow_r4_i8.c
! 3b4a0a849e3f0ed26e0f9ec070f81703  libgfortran/generated/pow_r8_i16.c
! f75029104ef432f00f85b482f90202c0  libgfortran/generated/pow_r8_i8.c
! bb7c25d163090f5733bad952bb93642a  libgfortran/generated/product_c10.c
! 4b0503c3d18a64e43ebe2684b082f84c  libgfortran/generated/product_c16.c
! 6d6a8dd701234d2b97d0af6a4ba3dd51  libgfortran/generated/product_c4.c
! fe85438720e06c1b0ff039dd38156004  libgfortran/generated/product_c8.c
! aea1124e8ba1e6c6c23a04afc63a4890  libgfortran/generated/product_i1.c
! 89c9c31ec8df6b17b3cf41ef0a4e4f4b  libgfortran/generated/product_i16.c
! 0ac065ea57f2745c7139488273a89a3d  libgfortran/generated/product_i2.c
! f57db4da0759d460448ae5aebab6d3b7  libgfortran/generated/product_i4.c
! fa3c70c78b454406d26783c470a140a4  libgfortran/generated/product_i8.c
! 5d0833280e829e598bd7a4ed42ca06c4  libgfortran/generated/product_r10.c
! 9f079c53481bcadcce77d1347ac3dcfc  libgfortran/generated/product_r16.c
! 3c0337716cefb09f0f7a1796e88cb83a  libgfortran/generated/product_r4.c
! f70b2c6fe67c1acfaeece0111afe95ff  libgfortran/generated/product_r8.c
! d57d03a61194fc7c0161cb8b37acff92  libgfortran/generated/reshape_c10.c
! 9d3d66259a7f1175a0ece984f8bea41c  libgfortran/generated/reshape_c16.c
! 455c404ec8c045e3fd703dad58892306  libgfortran/generated/reshape_c4.c
! b07bd738facf41b2232ba38b9f583f7e  libgfortran/generated/reshape_c8.c
! 5f6f2af882dd153e50dee0e2bafd2338  libgfortran/generated/reshape_i16.c
! be3a92cf0936d0367e754f5f7b611b9a  libgfortran/generated/reshape_i4.c
! 33423a4e96ff8bea2d1a5f0582ab2a6a  libgfortran/generated/reshape_i8.c
! ee68cbc116004c6e1059b9945f4e5286  libgfortran/generated/reshape_r10.c
! fe337b8d42b62bdd0fe969a3a1372177  libgfortran/generated/reshape_r16.c
! 236909741c69436dd4dbf6180148a8a2  libgfortran/generated/reshape_r4.c
! de7c6d363b4eff1700d1a02167892813  libgfortran/generated/reshape_r8.c
! c42463f4d91a9a54f46eb04d5c511522  libgfortran/generated/shape_i1.c
! 34df0ad42a7c4e44b1eb79c9fc286e8d  libgfortran/generated/shape_i16.c
! fd7299ef0c285ad8d134fe169a0b2ca2  libgfortran/generated/shape_i2.c
! e09d46014747d8aad8decd290f210283  libgfortran/generated/shape_i4.c
! 75770d9c64ca4e3c85e5196a0b88712c  libgfortran/generated/shape_i8.c
! 7495c98a50bd6bbc599c9be7176455b6  libgfortran/generated/spread_c10.c
! 61cb8cb56c2bb51e6c9e8e78ea36a356  libgfortran/generated/spread_c16.c
! c0d9537d513eb940906412b1ad178a28  libgfortran/generated/spread_c4.c
! e9db0b85fc64dddb157a4f26b5234118  libgfortran/generated/spread_c8.c
! 41e615f16f1e27a2f936dfd908bafc29  libgfortran/generated/spread_i1.c
! 2310cba92bb8a24b15108b1bf1ae092d  libgfortran/generated/spread_i16.c
! 1cbd2bc7f4d728ace2d64f9d62df95e4  libgfortran/generated/spread_i2.c
! 86019786f18247ebbf1cd2e9dfd957b2  libgfortran/generated/spread_i4.c
! 85cbb33d6a913e2773e04b6396fc3e13  libgfortran/generated/spread_i8.c
! 80892179732207e436e7c3b13aed09fe  libgfortran/generated/spread_r10.c
! 02720764a463c26a513ad34472dd00b7  libgfortran/generated/spread_r16.c
! 784ddf8ee096465c976b7a5d129db018  libgfortran/generated/spread_r4.c
! 80ca2fb412cef0f8b533af2eaa41b808  libgfortran/generated/spread_r8.c
! 4f67dd49a0c55e123c3b4b2e543eb3dd  libgfortran/generated/sum_c10.c
! f28ef98e3fb32af40ee9e72578370137  libgfortran/generated/sum_c16.c
! 5ae4122f7fe93d09eda1b2432bb69c90  libgfortran/generated/sum_c4.c
! d8177a335ba215b8de4b75afb46025ec  libgfortran/generated/sum_c8.c
! b580ec68c03b36a560a58a0c49f48308  libgfortran/generated/sum_i1.c
! e9c85c9976d3e2c1f962a2b9f3a1cd23  libgfortran/generated/sum_i16.c
! 88c00e8ecedeffdb050d6e44c1ee6bc4  libgfortran/generated/sum_i2.c
! 3d98b3573185ff52f439c7347f1512dc  libgfortran/generated/sum_i4.c
! 2aba9dd98b46f2beb64449f7fee56080  libgfortran/generated/sum_i8.c
! 279607123b7670117e2da4b9e2f9a0d2  libgfortran/generated/sum_r10.c
! 4b55ab87efdff6a94a5adc09075b95ee  libgfortran/generated/sum_r16.c
! f8fe14a96f91f371fdc507b7f8791757  libgfortran/generated/sum_r4.c
! 2d67df0b7d393239856d2e82180cedcd  libgfortran/generated/sum_r8.c
! 3fbf83795404448eb0f4a8e3f966afd9  libgfortran/generated/unpack_c10.c
! aaf9be8a71fb07160d5ccb7b2f524896  libgfortran/generated/unpack_c16.c
! 6b43b16b405700182af2e35740f18805  libgfortran/generated/unpack_c4.c
! cd723c1f5abf8b604b94acbe26b14985  libgfortran/generated/unpack_c8.c
! 019b8a3d90850783d1bd9a50e6eab91f  libgfortran/generated/unpack_i1.c
! 579e8afc192c5ec35fb40d01becb104c  libgfortran/generated/unpack_i16.c
! 04eb263d8f85c9983606cb13764d74cb  libgfortran/generated/unpack_i2.c
! 9049319250f15464ccf4cddd1eed6a36  libgfortran/generated/unpack_i4.c
! 77294ea7db77f3b29551a0c12f04cbfc  libgfortran/generated/unpack_i8.c
! 29863427456625e5b63a58b60300a174  libgfortran/generated/unpack_r10.c
! 2cbc4f141f4ded29de7798e158b336ea  libgfortran/generated/unpack_r16.c
! 5524c777b64d0d5b3099db15dce793b8  libgfortran/generated/unpack_r4.c
! 5d8121d97c06a4a98d6ad7eea0e472ba  libgfortran/generated/unpack_r8.c
  7fb3b6818515ae8e6d4d783558b705d2  libgfortran/gfortran.map
! 6ca686d00386f09c4b5437fa9b25f5fb  libgfortran/ieee/ieee_arithmetic.F90
! 270cd615860fb4bb40a3c57684b22281  libgfortran/ieee/ieee_exceptions.F90
! 19dad6085ff50b858e2ae14423da8a96  libgfortran/ieee/ieee_features.F90
! 1ba772814bf2bbc5a1f84b10931d04f5  libgfortran/ieee/ieee_helper.c
! 7600b994094e313562aa74e66e7ff106  libgfortran/intrinsics/abort.c
! 2129ea130e3ff55f125e6914c4fa9ab9  libgfortran/intrinsics/access.c
! c968aca1ae1b478f0290afef46437295  libgfortran/intrinsics/args.c
! 33855478a44a55454ae2bdb897b2fe77  libgfortran/intrinsics/associated.c
! b5047168a09d6d3a88dd0d64d4919485  libgfortran/intrinsics/c99_functions.c
! 15304595a06f2e51a8a3c3846ad583ea  libgfortran/intrinsics/chdir.c
! 0c4305f11b2d4a11651903bb3996657a  libgfortran/intrinsics/chmod.c
! 55514b29b2410648f10ebf3cd1749cca  libgfortran/intrinsics/clock.c
! 45d898d09b4a1141936eda74eb934b7e  libgfortran/intrinsics/cpu_time.c
! 8a504e9967f327578a9ef19ba5f5ebe4  libgfortran/intrinsics/cshift0.c
! 7fa362f970b082e279c2c5584b0893b6  libgfortran/intrinsics/ctime.c
! 05ae2511575fb2074ef1280d2c2f5c92  libgfortran/intrinsics/date_and_time.c
! 99763d63aef512508f050a0fda6b2de7  libgfortran/intrinsics/dprod_r8.f90
! 342e7724f1d97d2738093e76b789e969  libgfortran/intrinsics/dtime.c
! 126b3358e9ae20818825cf265f4fdd60  libgfortran/intrinsics/env.c
! 1e0a02038243d39e569213c719a4c8b5  libgfortran/intrinsics/eoshift0.c
! 43c39a234a48f616edd6b8b3f549dfcf  libgfortran/intrinsics/eoshift2.c
! 35d92f4abb7617c3799bf165b17c8259  libgfortran/intrinsics/erfc_scaled.c
! 9dc172c4bf3b75cec616c4ef644417de  libgfortran/intrinsics/erfc_scaled_inc.c
! 03728a525290c11f06fb4437a2f64b85  libgfortran/intrinsics/etime.c
! 9ce03899aa0a1bcd584ce99983a95b1a  libgfortran/intrinsics/execute_command_line.c
! 18a574c28f3edaf4ba2fa9cbd484637a  libgfortran/intrinsics/exit.c
! 1c646279eb1b3ae77d5c7ac9c8b217ac  libgfortran/intrinsics/extends_type_of.c
! 7eb40a46f03d87cf54b2d73ed1a8ea16  libgfortran/intrinsics/f2c_specifics.F90
! 965038df756f9d73b316049c778a53fe  libgfortran/intrinsics/fnum.c
! 7c0d647d4b59ed4d35177084d3cd47be  libgfortran/intrinsics/gerror.c
! f4b1c65cb5551df09e51b9af150df9c4  libgfortran/intrinsics/getXid.c
! 997dd966ac063a52af1d628e92637d87  libgfortran/intrinsics/getcwd.c
! 065523aad9da58649d9f675d72fa22b2  libgfortran/intrinsics/getlog.c
! d453c9ba8b715f1cb5b701f009604ade  libgfortran/intrinsics/hostnm.c
! 52e7c2b8dc4626b9ee21e0613d33e09b  libgfortran/intrinsics/ierrno.c
! d36965d98a3961ac7aafd6c08cf76dd8  libgfortran/intrinsics/is_contiguous.c
! a865405049d84fd076beeecff4a3b4ad  libgfortran/intrinsics/ishftc.c
! 4806cec0c7a82cc15b403cf45700d5e7  libgfortran/intrinsics/kill.c
! ef9e78095a4b1a8517a1da6031a1be25  libgfortran/intrinsics/link.c
! efa969309794305d19fe430a26a5386a  libgfortran/intrinsics/move_alloc.c
! 36cf7b0beb0c08e56ff9049e8a93ef45  libgfortran/intrinsics/mvbits.c
! 8916f7148b95ba03d4424f748d0d336f  libgfortran/intrinsics/pack_generic.c
! 8a0226775787cd399fb29d2c0f304e26  libgfortran/intrinsics/perror.c
! 2fcd369a7083de5944cfbc9de36f05db  libgfortran/intrinsics/rand.c
! aa9e566ce2905000961dce7bcb442a45  libgfortran/intrinsics/random.c
! 920ef339147b0c81c5a2fac372820138  libgfortran/intrinsics/random_init.f90
! 54b94cf96b8bd536f201922fdcf3c88e  libgfortran/intrinsics/rename.c
! 6e0286e46ab64d25009a812000c0fe4c  libgfortran/intrinsics/reshape_generic.c
! e05ecb57e117a160248ad5295fdcbf18  libgfortran/intrinsics/reshape_packed.c
! 93a60eb3da310e7967aca932b176906d  libgfortran/intrinsics/selected_char_kind.c
! 464e5aaca9067594034d5f92f3e78f17  libgfortran/intrinsics/selected_int_kind.f90
! 67981f5758828a5b98ef88212657b0c0  libgfortran/intrinsics/selected_real_kind.f90
! cb1cee808e3bff3fd60dbc09a6f7001e  libgfortran/intrinsics/signal.c
! 34db5e746d06ca6b2c535cb3d209f31c  libgfortran/intrinsics/size.c
! b428ae783d9d407ebe2bd0ee983514a7  libgfortran/intrinsics/sleep.c
! 9e4d41f4e9ee5dc00fe43392b32cd7f4  libgfortran/intrinsics/spread_generic.c
! 30d3b13053d9119543b3fbf1e3113845  libgfortran/intrinsics/stat.c
! 291bd77cea06de38529cff8d960a3470  libgfortran/intrinsics/string_intrinsics.c
! b5de9b6463b57def1f1e733d39717225  libgfortran/intrinsics/string_intrinsics_inc.c
! 1950a28202803dc5e331abb12ad21699  libgfortran/intrinsics/symlnk.c
! 5e9bc4fa36c747793c9c00c02ef356a1  libgfortran/intrinsics/system.c
! 8492966997d3b4202371ade34d3e9dac  libgfortran/intrinsics/system_clock.c
! 1a6fa447aff1932ba9fdd6191713a786  libgfortran/intrinsics/time.c
! 7055d779550accee03c8b7ae54beb404  libgfortran/intrinsics/time_1.h
! bfa3afdeb04b0a3c1f1600d75fbe0b66  libgfortran/intrinsics/trigd.c
! 3470a047e1f2a7d5e70d547bf06deb65  libgfortran/intrinsics/trigd.inc
! 96cc0ff2e078027dbd9058471551cd20  libgfortran/intrinsics/trigd_lib.inc
! 2eb2a2faeebe9c3e228cf5ae48faa0d5  libgfortran/intrinsics/umask.c
! 0f3a896de8967763f7e1b3077adcab3e  libgfortran/intrinsics/unlink.c
! 03f88584ba4a9c9f62c3e7e23f800ca2  libgfortran/intrinsics/unpack_generic.c
! 8dc004ed641189a88d4555a020ed2679  libgfortran/io/async.c
! ba79121f194526d480efd56cdf3021be  libgfortran/io/async.h
! 1e65d0b6f286871b51678604e885ecf4  libgfortran/io/close.c
! 7629cca4f6530ffdd690dded622ac1de  libgfortran/io/fbuf.c
! c9b7bec74d31aca97e092f0a7f867b1f  libgfortran/io/fbuf.h
! 090904c5612f3a4932f8d1a353d12e10  libgfortran/io/file_pos.c
! 293486d779e2d8f2ea2af2be428b0bb3  libgfortran/io/format.c
! a39a1053c40eaeccd244e71292a1b6a8  libgfortran/io/format.h
! 7e23acff3f5c87813fda290858acc69d  libgfortran/io/inquire.c
! e1d9589eb15e0ad9c8bf9c235879fb03  libgfortran/io/intrinsics.c
! 80c470f0210aa6495553158b83e7c0e6  libgfortran/io/io.h
! 3e5271b240c8435f6eab8e4479243e85  libgfortran/io/list_read.c
! a9afc4d95b4a0181f2fd25bfab10abaa  libgfortran/io/lock.c
! efc83e4796eb55d81f352163489cc3fe  libgfortran/io/open.c
! 3cb179ccac0bc8e948bdb13db00570d5  libgfortran/io/read.c
! 3b58c7b1bdc3040165b255473ab1169d  libgfortran/io/size_from_kind.c
! 6fb87f1cac61934c82a8951b78f717f7  libgfortran/io/transfer.c
! b1ed0738be716c69e111b563152b440a  libgfortran/io/transfer128.c
! 2ffb52aaf8092094c723ff6ed4ee3449  libgfortran/io/unit.c
! 54362ee980110e59a1954ae6ca9d51d8  libgfortran/io/unix.c
! 60f0e1acd48d3e1f83ac817c5b7ae373  libgfortran/io/unix.h
! 93fe074e02af8fac234d46a336938948  libgfortran/io/write.c
! 52b80552cf97929403cd03e6751df513  libgfortran/io/write_float.def
! 9f24547c087e2f4a32ca6eeedec8a34b  libgfortran/kinds-override.h
! bc75d11d3876018d71022cf2311f5e61  libgfortran/libgfortran.h
  2527bb19b82f08b34038b07b172d029d  libgfortran/libgfortran.spec.in
  dc1a87f5ed3520558b0fe9f43e4f5ba8  libgfortran/libtool-version
! 41723ca6d9d9d64a55db3792b1be2deb  libgfortran/m4/all.m4
! 62e6284d1841e31965580a9d35acb51b  libgfortran/m4/any.m4
! 219e5b97bea89bbd7a69768035ab0345  libgfortran/m4/bessel.m4
! 4f086e65f3cfc2d89e46338f90a63c45  libgfortran/m4/count.m4
! 51c9a7317cadb376c1d205a9bbf35991  libgfortran/m4/cshift0.m4
! 96b9b3eb6312acb03b562ae37ceff3f6  libgfortran/m4/cshift1.m4
! 8064600fc8f78035894eceeb56552d2e  libgfortran/m4/cshift1a.m4
! 2239644b3737840df0b33286f0f21e93  libgfortran/m4/eoshift1.m4
! a607f110cf9602b4f5d1b717d028606e  libgfortran/m4/eoshift3.m4
  a70290662a995bcc0ff8ac868b6eddda  libgfortran/m4/findloc0.m4
  22271fa12e82c61051f302c3a5072376  libgfortran/m4/findloc0s.m4
  111ea74dceb547cbf63c12832d73d5f4  libgfortran/m4/findloc1.m4
  be432b0e528c65667e6d736e1537515d  libgfortran/m4/findloc1s.m4
  62c4506b866cb09ea489c455e7c2e8bf  libgfortran/m4/findloc2s.m4
! 5cf0f8e81b2566f20cb9b43ac9d8a2da  libgfortran/m4/head.m4
! de131f23fa7d72ac8c687afb7069e72e  libgfortran/m4/iall.m4
! 4b3f5243315129ae80142b112ce1a510  libgfortran/m4/iany.m4
! c8c43659484ef299c3bd18d349451d6a  libgfortran/m4/ifindloc0.m4
! 68b65a6bf5ade4c6d081626a51ee3277  libgfortran/m4/ifindloc1.m4
! e7442fb5ecff83fb7c833c2fcbf70c19  libgfortran/m4/ifindloc2.m4
  143daeeed4d4e1baa17753b51ddd88be  libgfortran/m4/iforeach-s.m4
  ef77f0d18ce645146e5155d85730a2dc  libgfortran/m4/iforeach-s2.m4
  8bbbce69fc532a405b1b88c79c2ef47b  libgfortran/m4/iforeach.m4
*************** ef77f0d18ce645146e5155d85730a2dc  libgfo
*** 82443,82538 ****
  1603b9dcffb8d8436da0598e622783a9  libgfortran/m4/ifunction-s2.m4
  3cbecd5d114cf344efea0d4754437c7a  libgfortran/m4/ifunction.m4
  86a682dafdbffea255a15ff37710c93a  libgfortran/m4/ifunction_logical.m4
! 49ed8f2856a934ef08d35fa282ef1d14  libgfortran/m4/in_pack.m4
! 4448eb75c10ac694a8857b0d1818a28e  libgfortran/m4/in_unpack.m4
! ccd0dcf1db7e704ca500fb7bdc335231  libgfortran/m4/iparity.m4
  931d3e6134be8b18f8fd4b755b0f33cc  libgfortran/m4/iparm.m4
! 574c71428eb059be80b874a188016371  libgfortran/m4/matmul.m4
  f90a0613ba9c7910fede3029a8db5527  libgfortran/m4/matmul_internal.m4
! b7df51cf406f1db1f7102d6a7b0c9eb1  libgfortran/m4/matmulavx128.m4
! 0e75072b05d77eeca9fce231be4fd329  libgfortran/m4/matmull.m4
! 7ac42738e4ccf94871239be2cff3cb53  libgfortran/m4/maxloc0.m4
! 3e1bb5b4ae492562d81e413f68c738b4  libgfortran/m4/maxloc0s.m4
! 7cfd82ada17706ba2eea531823d742fb  libgfortran/m4/maxloc1.m4
! d6a84ec0e0f9565a7d5dd3247b194944  libgfortran/m4/maxloc1s.m4
! d3cd414c5c81e64e358ac63876df9dfe  libgfortran/m4/maxloc2s.m4
! a01202b21d62377d48de5cfda747e864  libgfortran/m4/maxval.m4
! 0599a847b2c12eb0adbb80d9ae419fd3  libgfortran/m4/maxval0s.m4
! 0421c0b985eec488b84f5452425fd70b  libgfortran/m4/maxval1s.m4
! df1baaf10bddd0275e49bcb872d0b19b  libgfortran/m4/minloc0.m4
! 9bd93094d7cf43c225ad126d502d27bc  libgfortran/m4/minloc0s.m4
! f0558b951ac2fa47f2c65e802c71b1d0  libgfortran/m4/minloc1.m4
! 3cce26b968bcc4638ada608954361cc3  libgfortran/m4/minloc1s.m4
! f1e24f114e58635c97af4d7f5dd72ce2  libgfortran/m4/minloc2s.m4
! 12e6c22310f1daa40c0750e9119fd7bb  libgfortran/m4/minval.m4
! d3245d0882889f9568ff34fa8c22682c  libgfortran/m4/minval0s.m4
! 04a04448174472a082af87bb4b079fda  libgfortran/m4/minval1s.m4
  6d8cbcd1d1489f643839e7ac2c00a736  libgfortran/m4/misc_specifics.m4
  9b81a1acd09bfbf8e218728b9c6197c2  libgfortran/m4/mtype.m4
! c25898d06da160906fc1c3788a15a678  libgfortran/m4/norm2.m4
! 55f2e2ef034546c903c2ac112832bbfc  libgfortran/m4/pack.m4
! 0772c8aa88953b7986dc614694d9f8fc  libgfortran/m4/parity.m4
! ea2c749bd161dfb93e8a076d3113ca49  libgfortran/m4/pow.m4
! f110bde047738532d1837ab100829411  libgfortran/m4/product.m4
! 258f6c2980e374b646349fe38a1d465a  libgfortran/m4/reshape.m4
! 6ed82bc8b5865f76259e0a20043c41a6  libgfortran/m4/shape.m4
  2478642167175833018a8947cc98b3fd  libgfortran/m4/specific.m4
  4c60f3c3d2948ee7eb2668aa9cc61a04  libgfortran/m4/specific2.m4
! 0cfc7093d508b9f18f6f9d1b01d992a1  libgfortran/m4/spread.m4
! 45f2fa184f09742adf731a22dcd66f99  libgfortran/m4/sum.m4
  0ad0318f00c85db29d184dc3dff12276  libgfortran/m4/types.m4
! 2f845b5c643f5a734b450232b23708b1  libgfortran/m4/unpack.m4
! cef25b7bceffde6fc5728a173e842a62  libgfortran/mk-kinds-h.sh
! 764579ddc54916182288fc40bdf0e544  libgfortran/mk-sik-inc.sh
! f81db480cbfdc2b1d2291623c6cadb5f  libgfortran/mk-srk-inc.sh
! 9b582387b9bc828d2d286bddb8412584  libgfortran/runtime/ISO_Fortran_binding.c
! af355fc15971d40a31cd80fb6b7782ce  libgfortran/runtime/backtrace.c
! 21e4c04fe5341c374454e1f0785efcf0  libgfortran/runtime/bounds.c
! 4181cd05d829a17fcb083f7d75b34137  libgfortran/runtime/compile_options.c
! d781506afbfe3992f280ecb59fe11529  libgfortran/runtime/convert_char.c
! 53161c4cbd607067c6571eda7ce906e9  libgfortran/runtime/environ.c
! 2af61eaa6aa86df4741caaf50ab712f1  libgfortran/runtime/error.c
! 151e65fec40c6c56481f9c0a001da975  libgfortran/runtime/fpu.c
! 804f3c8ab0b6c9e002e3ebd2b3ada563  libgfortran/runtime/in_pack_generic.c
! e367c2f419f8fbf15d5d18f6d4748cef  libgfortran/runtime/in_unpack_generic.c
! 7d0e071f1b1e621d5b9e739cc67501a3  libgfortran/runtime/main.c
! a68d5ccf40749fe2296129c735833933  libgfortran/runtime/memory.c
! 46ab8291224f511e6abf5483b23344f7  libgfortran/runtime/minimal.c
! ffb3a4f5ab5247e0089992007471b7b9  libgfortran/runtime/pause.c
! a4f1b0fbfcd8a81e880d3f732626162d  libgfortran/runtime/select.c
! 23941c87773dc2d30ca0daaf849a7e04  libgfortran/runtime/select_inc.c
! c5458c505747cd7f657aabd153648714  libgfortran/runtime/stop.c
! a18e062c130246d07d0fe28a792329d6  libgfortran/runtime/string.c
  5d4950ecb7b26d2c5e4e7b4e0dd74707  libgo/LICENSE
! de9b7fece5442ce193b514b1920dc9ce  libgo/MERGE
! df6f16080d9283bffbc812b24164b756  libgo/Makefile.am
! 1d841271874d4b8b7abdec6983688849  libgo/Makefile.in
  3a55d95595a6f9e37dee53826b4daff2  libgo/PATENTS
  d0952f0b499c9ebb887222764488a2fc  libgo/README
  d46376034c1fd6df47c8ba2cd5de9d0a  libgo/README.gcc
! 1b3f0c087f16968ce268df5b10ebd586  libgo/VERSION
  1a52cbc1db42a585461a5c4bcb398840  libgo/aclocal.m4
! b2da9794b3e5d9bf82ae60f418ded11b  libgo/check-packages.txt
! e38e6bdc760646c30c15d9980ff41dfd  libgo/config.h.in
  ad1ce707d70b18d5d14bdbcfef82a9bb  libgo/config/README
! b053df1ca4ef199f38baeec71bd078ec  libgo/config/libtool.m4
  eca2703a341e238c14205318df64dde8  libgo/config/ltmain.sh
  dee72a6a60e99528b0d17bf3ff9a1e15  libgo/config/ltoptions.m4
  bc2f6032c98896249eadb56177c7d357  libgo/config/ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  libgo/config/ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  libgo/config/lt~obsolete.m4
! 9391e8a20a09d585f69042a157b36ff5  libgo/configure
! e6186a4998ae614e27154b82aa904432  libgo/configure.ac
! f5399dcedf2eed9ef608965fd2404139  libgo/go/archive/tar/common.go
  87a02710e7efca5db41784ba5734443b  libgo/go/archive/tar/format.go
! 86bcd306b40dfcf226487e1d1159fa97  libgo/go/archive/tar/reader.go
! 2b328dc5886b9f0ea9dec3b16a59d700  libgo/go/archive/tar/reader_test.go
  e0e69d0ccced710b6ed7c46ca1129f44  libgo/go/archive/tar/stat_actime1.go
  f24d0e0a8444fa94e8cf245a1b0655b1  libgo/go/archive/tar/stat_actime2.go
! ac4a32d020e3cc0ba3aceade23b0ac64  libgo/go/archive/tar/stat_unix.go
! dbdd5f4b3a3a0f6a006808138da0f811  libgo/go/archive/tar/strconv.go
! 4101b5e8ed3ea86609e7bee9f2f4b556  libgo/go/archive/tar/strconv_test.go
! 9ba63cf9b42226c0f07e5b3ed93066e2  libgo/go/archive/tar/tar_test.go
  d08ccef3900a68afd0a36da5c297ec0a  libgo/go/archive/tar/testdata/file-and-dir.tar
  8ec27a5ea3e63f3ba68dccfc90fa7cfa  libgo/go/archive/tar/testdata/gnu-incremental.tar
  5234643c1f7c26ef4703a7ed6b1c3a90  libgo/go/archive/tar/testdata/gnu-long-nul.tar
--- 88408,88503 ----
  1603b9dcffb8d8436da0598e622783a9  libgfortran/m4/ifunction-s2.m4
  3cbecd5d114cf344efea0d4754437c7a  libgfortran/m4/ifunction.m4
  86a682dafdbffea255a15ff37710c93a  libgfortran/m4/ifunction_logical.m4
! 224d6b4732434f021ef34ca847d4d32d  libgfortran/m4/in_pack.m4
! 72ae7c0b0e95c1ad1e51a6b4bf88b1c2  libgfortran/m4/in_unpack.m4
! e70e60502b3d43fab6688b245ddebd19  libgfortran/m4/iparity.m4
  931d3e6134be8b18f8fd4b755b0f33cc  libgfortran/m4/iparm.m4
! d5dd312cb99a2c4b86701eb70b971398  libgfortran/m4/matmul.m4
  f90a0613ba9c7910fede3029a8db5527  libgfortran/m4/matmul_internal.m4
! 43c829b6e6f70e195c7ae82383d61fcc  libgfortran/m4/matmulavx128.m4
! 512de099a7870b0bcd7106d99b1b9c6a  libgfortran/m4/matmull.m4
! 889dda2a39e53dda4d261c757e194795  libgfortran/m4/maxloc0.m4
! 2440f1b98daffbc7b1e8dd24f20105e2  libgfortran/m4/maxloc0s.m4
! 248cabd7d744ce7ef8ca802e45d96c56  libgfortran/m4/maxloc1.m4
! 2d7095e641f3d7d819c0eaf80e686acd  libgfortran/m4/maxloc1s.m4
! fd662ee0a4da268d92dde6b9b119ac3b  libgfortran/m4/maxloc2s.m4
! 3e50ef7a9a543ed2ffaad76aea1e2dfa  libgfortran/m4/maxval.m4
! 3223146d0b921e9ef28315bb6edf6710  libgfortran/m4/maxval0s.m4
! 4a1c7cfb1bdc19052a75820a79cf6f58  libgfortran/m4/maxval1s.m4
! 812f1ad269f6613301fc51babf9ffe83  libgfortran/m4/minloc0.m4
! ff14333f607d22c15ad1cff01c7e461e  libgfortran/m4/minloc0s.m4
! d592b8ff1c845680db466a14dd892c29  libgfortran/m4/minloc1.m4
! 2396f202d3b282ef74213094a001af5e  libgfortran/m4/minloc1s.m4
! 433e5c6ea52e7d5cc91a7b25c533cc45  libgfortran/m4/minloc2s.m4
! 5f6bcf360e33132889edec2df234e241  libgfortran/m4/minval.m4
! 1c561b1cb1d7ec7ac7672ea89766c068  libgfortran/m4/minval0s.m4
! 9430636ed4790c75347ebeede806a7e5  libgfortran/m4/minval1s.m4
  6d8cbcd1d1489f643839e7ac2c00a736  libgfortran/m4/misc_specifics.m4
  9b81a1acd09bfbf8e218728b9c6197c2  libgfortran/m4/mtype.m4
! 57b749bf49c017860fc6ae23ba2a3dbe  libgfortran/m4/norm2.m4
! f7a04fd3450eb7a9bf2c8e12460223b7  libgfortran/m4/pack.m4
! c0343997e11a1b85ebcd1706d0f8c1e3  libgfortran/m4/parity.m4
! 2e7ef6bc9c38387edecce8682a1628ea  libgfortran/m4/pow.m4
! bd65350eb1d0b28d732a261fdbd6cc59  libgfortran/m4/product.m4
! fa5f20d6b982d6693d03c47ba212ae0f  libgfortran/m4/reshape.m4
! b0b3f929681ad18f7e76ae21e58f3bda  libgfortran/m4/shape.m4
  2478642167175833018a8947cc98b3fd  libgfortran/m4/specific.m4
  4c60f3c3d2948ee7eb2668aa9cc61a04  libgfortran/m4/specific2.m4
! 7f6ce5e2a38483762ccd59a714e7e36f  libgfortran/m4/spread.m4
! becf8027952064fab41548258f994df6  libgfortran/m4/sum.m4
  0ad0318f00c85db29d184dc3dff12276  libgfortran/m4/types.m4
! b4401a937472147eaf1a54a10b471653  libgfortran/m4/unpack.m4
! 47fc3168e973c403289a8bc8b94b4f75  libgfortran/mk-kinds-h.sh
! 5cacd438c86553689eda2ce3d5623b45  libgfortran/mk-sik-inc.sh
! f8813ac773f6f6eb0ea6ecb287fb9250  libgfortran/mk-srk-inc.sh
! dcf17e230cfc3e6ea8918a176f742444  libgfortran/runtime/ISO_Fortran_binding.c
! a1ead418f99814a86f50c33c122d721d  libgfortran/runtime/backtrace.c
! 89aec5cdff5e22af340980f36911bcc0  libgfortran/runtime/bounds.c
! e76855e20821b1b367888f7ea69e0871  libgfortran/runtime/compile_options.c
! d752472ddc1606c8e10cdc78464f1eb2  libgfortran/runtime/convert_char.c
! 612cca13622c7628cf9e8e2333fb2d77  libgfortran/runtime/environ.c
! e40a2e7b1a7104b60d57a20932d7b3b4  libgfortran/runtime/error.c
! a71f01be3f571c30403c534f52e0a7d6  libgfortran/runtime/fpu.c
! ded3c04674324b01ca4863f0902ae9bd  libgfortran/runtime/in_pack_generic.c
! 2d945a03496083bfaa221e02d9ca00c0  libgfortran/runtime/in_unpack_generic.c
! d4303dc97a686de01894f4140efe8148  libgfortran/runtime/main.c
! 5432db966de4c07eb39256695a316137  libgfortran/runtime/memory.c
! 76349a319b5b10264c26c75c921c5d6f  libgfortran/runtime/minimal.c
! 5df4bd0d679dbaf97525db16437ab2a9  libgfortran/runtime/pause.c
! 30f6e1a06b1a94db2c129d516f8b9b60  libgfortran/runtime/select.c
! 55b6f051b3c7236a01fa263df9858399  libgfortran/runtime/select_inc.c
! a39f2ec9a6c1875055cf57a1ef3c4754  libgfortran/runtime/stop.c
! 6d9f13a4e97b31f98dd248433bc815c4  libgfortran/runtime/string.c
  5d4950ecb7b26d2c5e4e7b4e0dd74707  libgo/LICENSE
! 0da33185c5e181ccb15d8bff90cb3b8a  libgo/MERGE
! 1eb786d9dd59df8f6edd218b088b9499  libgo/Makefile.am
! 96e76a2159395b8165c565416ec342b6  libgo/Makefile.in
  3a55d95595a6f9e37dee53826b4daff2  libgo/PATENTS
  d0952f0b499c9ebb887222764488a2fc  libgo/README
  d46376034c1fd6df47c8ba2cd5de9d0a  libgo/README.gcc
! 7b1ae5c8276f8c984c7454fa6af79089  libgo/VERSION
  1a52cbc1db42a585461a5c4bcb398840  libgo/aclocal.m4
! 911b46316335f72f5818b16184305c56  libgo/check-packages.txt
! 603eaa1869aebeeab6662a9bef739a41  libgo/config.h.in
  ad1ce707d70b18d5d14bdbcfef82a9bb  libgo/config/README
! 2b5fe3d1420b597cb702a642a065373a  libgo/config/libtool.m4
  eca2703a341e238c14205318df64dde8  libgo/config/ltmain.sh
  dee72a6a60e99528b0d17bf3ff9a1e15  libgo/config/ltoptions.m4
  bc2f6032c98896249eadb56177c7d357  libgo/config/ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  libgo/config/ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  libgo/config/lt~obsolete.m4
! 3792f7551700bc23bc72027a75559901  libgo/configure
! 7e1fcd9e9dc2c7f188c4b0e45b9089cf  libgo/configure.ac
! 88719bb7579a17f3f5151847704e9817  libgo/go/archive/tar/common.go
  87a02710e7efca5db41784ba5734443b  libgo/go/archive/tar/format.go
! 6157740cb7c93bbafa4610d09f935316  libgo/go/archive/tar/reader.go
! 9930270dddaf83c2a53cb877816f7a99  libgo/go/archive/tar/reader_test.go
  e0e69d0ccced710b6ed7c46ca1129f44  libgo/go/archive/tar/stat_actime1.go
  f24d0e0a8444fa94e8cf245a1b0655b1  libgo/go/archive/tar/stat_actime2.go
! 6b75937c4b7dc88bc387f5ee7d469c86  libgo/go/archive/tar/stat_unix.go
! 06d4d332c1424af554d7e1fa9ca321b5  libgo/go/archive/tar/strconv.go
! b897241cdc074d998f7af6ae036ed90e  libgo/go/archive/tar/strconv_test.go
! a5edadc9373169a34814acddeb9a99ac  libgo/go/archive/tar/tar_test.go
  d08ccef3900a68afd0a36da5c297ec0a  libgo/go/archive/tar/testdata/file-and-dir.tar
  8ec27a5ea3e63f3ba68dccfc90fa7cfa  libgo/go/archive/tar/testdata/gnu-incremental.tar
  5234643c1f7c26ef4703a7ed6b1c3a90  libgo/go/archive/tar/testdata/gnu-long-nul.tar
*************** c41d3ee8d26caffff1a839bff5fdd38b  libgo/
*** 82578,82588 ****
  88712af2a004429d7101fd0c710baa8f  libgo/go/archive/tar/testdata/writer.tar
  d76dc07e475b2905b5fec1cf319b6356  libgo/go/archive/tar/testdata/xattrs.tar
  3c9825dafcd35349513d0466df433d28  libgo/go/archive/tar/writer.go
! 30e5fb578652ba5106a7c9d688a08836  libgo/go/archive/tar/writer_test.go
! 3fb9a69df0adcff898189eec629a34e9  libgo/go/archive/zip/reader.go
! fa58b24edeea45f23af504ecee5a3e62  libgo/go/archive/zip/reader_test.go
! c8550052ae1d8d8f02d9dc11b88189ac  libgo/go/archive/zip/register.go
! 2e142856c29c3e4979f40fbbd2b21ce7  libgo/go/archive/zip/struct.go
  0e5c6061f34579a29cd9e706200e3fc5  libgo/go/archive/zip/testdata/crc32-not-streamed.zip
  a0dc0660d6847cfdefd1e34811fa3e2a  libgo/go/archive/zip/testdata/dd.zip
  aaa427720ab764d9d4afec3a3646f6ad  libgo/go/archive/zip/testdata/go-no-datadesc-sig.zip.base64
--- 88543,88553 ----
  88712af2a004429d7101fd0c710baa8f  libgo/go/archive/tar/testdata/writer.tar
  d76dc07e475b2905b5fec1cf319b6356  libgo/go/archive/tar/testdata/xattrs.tar
  3c9825dafcd35349513d0466df433d28  libgo/go/archive/tar/writer.go
! 13a7418a94a547815d0402269d397059  libgo/go/archive/tar/writer_test.go
! b2ca12b42c9fb89e3008a6438ff055c9  libgo/go/archive/zip/reader.go
! 254318b32fd1f64adb8299760525f008  libgo/go/archive/zip/reader_test.go
! 3d2fab177a862129afb90a862adc4aa3  libgo/go/archive/zip/register.go
! a88433e6d5c9f2057511e47e1085c906  libgo/go/archive/zip/struct.go
  0e5c6061f34579a29cd9e706200e3fc5  libgo/go/archive/zip/testdata/crc32-not-streamed.zip
  a0dc0660d6847cfdefd1e34811fa3e2a  libgo/go/archive/zip/testdata/dd.zip
  aaa427720ab764d9d4afec3a3646f6ad  libgo/go/archive/zip/testdata/go-no-datadesc-sig.zip.base64
*************** ef798b17dbd597b930070b057efbe211  libgo/
*** 82611,82693 ****
  1547ce4f101eeb5c10d94718c6a226c9  libgo/go/archive/zip/testdata/zip64-2.zip
  8ae15e579d181b7b7837c197f02bbd5e  libgo/go/archive/zip/testdata/zip64.zip
  7016294ce0e44ee0d93b0fd595c059a6  libgo/go/archive/zip/writer.go
! 1505eb4cd4163a9d429901ad2e82b7c7  libgo/go/archive/zip/writer_test.go
! 59c242fd3b2bacb0401dc0debcdc4470  libgo/go/archive/zip/zip_test.go
! e88345a3980e1800b105ae79cf3cec4d  libgo/go/bufio/bufio.go
! b89f031a950a4e73def8026f844a3947  libgo/go/bufio/bufio_test.go
  74adc139d415e47f5bdc3103674b4315  libgo/go/bufio/example_test.go
  bacdebd82802cbd0f42f243c2aca0761  libgo/go/bufio/export_test.go
! 69ad7273a2ebcd83d67d1c3773919fe1  libgo/go/bufio/scan.go
! d6192a49d4cc35a0da4805e807512214  libgo/go/bufio/scan_test.go
  a84ab9f5ac6680e9df6b9852434a030d  libgo/go/builtin/builtin.go
  cc4b1f41f772919beaaddbd10c8c990d  libgo/go/bytes/boundary_test.go
  227a41e1685dec432ccc62196c0a13c0  libgo/go/bytes/buffer.go
! 9907375b3fd3254fc721bf32c91561cb  libgo/go/bytes/buffer_test.go
! 036ceedbdaed3d2a31c4277d9bfb6ac2  libgo/go/bytes/bytes.go
! ccd594cdf581d821fc4472bcb5dfe1b2  libgo/go/bytes/bytes_test.go
  8403daafe90f2fb91716d191715bfb13  libgo/go/bytes/compare_test.go
! a5193489f6b27bfc4f5720448808869f  libgo/go/bytes/example_test.go
  a6b155afe547a59c54cba47dda59425c  libgo/go/bytes/export_test.go
  1789fcecfd852b5d65f40a8be7c230db  libgo/go/bytes/reader.go
! 3ffe310f5a8c823249d09277c7e58ded  libgo/go/bytes/reader_test.go
! c0c34c5d54a4e4929dbee8d13ff21796  libgo/go/cmd/buildid/buildid.go
  7a3b8823d79387f7ff99452154b18940  libgo/go/cmd/buildid/doc.go
! 37b130c012a1752dca585f3813b5d9a3  libgo/go/cmd/cgo/ast.go
! 85fd1a0a064e855ae4c705e47e47546c  libgo/go/cmd/cgo/doc.go
! 0c161845066e9552d72252c5882fc1be  libgo/go/cmd/cgo/gcc.go
! 9440547a2d28ea823d6f8a4db7364ea3  libgo/go/cmd/cgo/godefs.go
! e77d9555be7106bdcd78d3f830c715cc  libgo/go/cmd/cgo/main.go
! 2d3e3419696c56d10bee8a991cea00e7  libgo/go/cmd/cgo/out.go
! a94e0811fcd415d1e55613d81370b2eb  libgo/go/cmd/cgo/util.go
! 6e2e35e338fc9ccfa4541ec685685161  libgo/go/cmd/go/alldocs.go
  37def72439f93e8e61475c283db6a01a  libgo/go/cmd/go/go11.go
! 863c14b20a2f7da657e852849cd3d2e9  libgo/go/cmd/go/go_test.go
  2f39d0965c1dbeb00a094a0371959aa1  libgo/go/cmd/go/go_unix_test.go
! 104ed435123c8c252426af214f419aa9  libgo/go/cmd/go/go_windows_test.go
! 30c9c1ac33ba1480a654b9c869b9b1f3  libgo/go/cmd/go/help_test.go
! 956bdde2859769606fb229079cf1dedc  libgo/go/cmd/go/init_test.go
! 19700b9504d39450f7bfd056e5a13231  libgo/go/cmd/go/internal/auth/auth.go
! 5658aab0ec392c53dd4db6b594c70220  libgo/go/cmd/go/internal/auth/netrc.go
  e4b7ca4f607d03ca05341e397f3a9e70  libgo/go/cmd/go/internal/auth/netrc_test.go
! 840c10ed591efd65b35ebfd984c38a16  libgo/go/cmd/go/internal/base/base.go
! 6944d1371c4a64beef804ca1d936a201  libgo/go/cmd/go/internal/base/env.go
! a6ba82ad4d96661c67dcb2936c87356f  libgo/go/cmd/go/internal/base/flag.go
! 71bb1afe8d92c348ed5b23f22ccf5257  libgo/go/cmd/go/internal/base/goflags.go
  e13389c7f3a934a3f3dad9b1f8d183a7  libgo/go/cmd/go/internal/base/path.go
! e9add7bd85b2ba8626c7cb1f00b40e84  libgo/go/cmd/go/internal/base/signal.go
  d2b5e73adbbf5e07a05303239c7f4128  libgo/go/cmd/go/internal/base/signal_notunix.go
  38409e86b8e297bfad5fab9a143d460c  libgo/go/cmd/go/internal/base/signal_unix.go
  9c33108683f58b8ba4fd464e37396d21  libgo/go/cmd/go/internal/base/tool.go
! c11b5a46a1405d9c776d74399d1a1581  libgo/go/cmd/go/internal/bug/bug.go
! d634425d6a26263599c90ed298cec2c6  libgo/go/cmd/go/internal/cache/cache.go
! 20028019470300ad9656ba6ab29d0478  libgo/go/cmd/go/internal/cache/cache_test.go
! e75d4663b5c80c4f41b118d68434b3ae  libgo/go/cmd/go/internal/cache/default.go
  5426c38b28355eb30bee2875e28344be  libgo/go/cmd/go/internal/cache/hash.go
! e51e4ea1dd9836b29bde9a822bda936c  libgo/go/cmd/go/internal/cache/hash_test.go
! 2ebca6e2b84fef202868efdd11f3cbda  libgo/go/cmd/go/internal/cfg/cfg.go
! 909b1175937f2654c5ca03a1c9eabb95  libgo/go/cmd/go/internal/clean/clean.go
! f66d642459d1eeb0a22516a06e739f7e  libgo/go/cmd/go/internal/cmdflag/flag.go
! 5c0a3e813105799f3ac9427c1b7d4ffc  libgo/go/cmd/go/internal/doc/doc.go
! 3b6634a945e9dcd281035922c80149f1  libgo/go/cmd/go/internal/envcmd/env.go
! e4af321b6aafd83d094f1c0184333edc  libgo/go/cmd/go/internal/fix/fix.go
! 67f78a6c952a2adfec119643d5b850cf  libgo/go/cmd/go/internal/fmtcmd/fmt.go
! fc6efd5916160dfcde37f593ce8dfb74  libgo/go/cmd/go/internal/generate/generate.go
  04d01f4e2f2945111c096a635bd59f1b  libgo/go/cmd/go/internal/generate/generate_test.go
! b347f4892b034367c8f0fc78fdd5f5cc  libgo/go/cmd/go/internal/get/discovery.go
! 0fd2517e4f90a9d9a34a5e3ae4688be6  libgo/go/cmd/go/internal/get/get.go
! 5455d87c3b4bf9732305626ed51506ef  libgo/go/cmd/go/internal/get/path.go
! 8b7132b913202d9f9d13a929ee9a0143  libgo/go/cmd/go/internal/get/pkg_test.go
  96113e4fc82645aeb2e115fbd468fcb8  libgo/go/cmd/go/internal/get/tag_test.go
! 1315bf9c1ff9c617333243a2dd86f78c  libgo/go/cmd/go/internal/get/vcs.go
! da056dc1a159ea3a8aa3eb6bb54f384b  libgo/go/cmd/go/internal/get/vcs_test.go
! 8669a38b3e84444b2490d8fa3429a8e9  libgo/go/cmd/go/internal/help/help.go
! ad99b7daa78de313cb0468ccc05d1746  libgo/go/cmd/go/internal/help/helpdoc.go
! cac35406f1de0b9287dca12ebf9a555d  libgo/go/cmd/go/internal/imports/build.go
! 2e76159abd80f1f5765aa847d436e358  libgo/go/cmd/go/internal/imports/read.go
  8c6c11674197076b261a580c5f491a5d  libgo/go/cmd/go/internal/imports/read_test.go
! 346f228e4a9b710a532bd6b5c2048aa7  libgo/go/cmd/go/internal/imports/scan.go
! f3944833b5079f3240fba2d0e66f4f58  libgo/go/cmd/go/internal/imports/scan_test.go
! a7ef871f97fd0d31a61c6c023e8a25a5  libgo/go/cmd/go/internal/imports/tags.go
  762b99b9504cf6c21afe8b2b8ac67bb3  libgo/go/cmd/go/internal/imports/testdata/android/a_android.go
  d17980afd0abcdd22bc0a638f9649ae8  libgo/go/cmd/go/internal/imports/testdata/android/b_android_arm64.go
  8028737c5f482847902e094b0772881d  libgo/go/cmd/go/internal/imports/testdata/android/c_linux.go
--- 88576,88657 ----
  1547ce4f101eeb5c10d94718c6a226c9  libgo/go/archive/zip/testdata/zip64-2.zip
  8ae15e579d181b7b7837c197f02bbd5e  libgo/go/archive/zip/testdata/zip64.zip
  7016294ce0e44ee0d93b0fd595c059a6  libgo/go/archive/zip/writer.go
! d817f5eff2efc6dd3d61434a9a3b3aad  libgo/go/archive/zip/writer_test.go
! 9294c08976cbcb51c628a6e8368b1bdb  libgo/go/archive/zip/zip_test.go
! 3634479e07cff83c61baf39bf4c34f2a  libgo/go/bufio/bufio.go
! 65bf2a704d76d4185bee8571488b51e9  libgo/go/bufio/bufio_test.go
  74adc139d415e47f5bdc3103674b4315  libgo/go/bufio/example_test.go
  bacdebd82802cbd0f42f243c2aca0761  libgo/go/bufio/export_test.go
! d740f74520ff5e88a9c0c918820ac2dd  libgo/go/bufio/scan.go
! c7ffaa2003eb1c1048b2d6c1c520fab2  libgo/go/bufio/scan_test.go
  a84ab9f5ac6680e9df6b9852434a030d  libgo/go/builtin/builtin.go
  cc4b1f41f772919beaaddbd10c8c990d  libgo/go/bytes/boundary_test.go
  227a41e1685dec432ccc62196c0a13c0  libgo/go/bytes/buffer.go
! acc8276bd91fff413e5d9650ce58be6b  libgo/go/bytes/buffer_test.go
! 601ab0b0ac43a537e7492cd0af462897  libgo/go/bytes/bytes.go
! 79a1081cd8d4c82ae6037032733ce1a6  libgo/go/bytes/bytes_test.go
  8403daafe90f2fb91716d191715bfb13  libgo/go/bytes/compare_test.go
! a20178f9f422e5fd1d3a39a04eea5b1c  libgo/go/bytes/example_test.go
  a6b155afe547a59c54cba47dda59425c  libgo/go/bytes/export_test.go
  1789fcecfd852b5d65f40a8be7c230db  libgo/go/bytes/reader.go
! ab6c0fe7af2e0c68fa77f629f9e8abd7  libgo/go/bytes/reader_test.go
! 18d29196050b82e790cef0bf03530348  libgo/go/cmd/buildid/buildid.go
  7a3b8823d79387f7ff99452154b18940  libgo/go/cmd/buildid/doc.go
! 2debfa5c39672a9c240963c68c18a10b  libgo/go/cmd/cgo/ast.go
! bf4b652e420915a8a8c2af51e94c02d4  libgo/go/cmd/cgo/doc.go
! 6005f31db323fd902a94ee68653c3277  libgo/go/cmd/cgo/gcc.go
! 3f4f081f65c8360200a9ca291e9c72a8  libgo/go/cmd/cgo/godefs.go
! 3a56522fb22cc8a3f5bcdcbc7b971603  libgo/go/cmd/cgo/main.go
! 7677535f5d7b10362903a4bbd90c25cf  libgo/go/cmd/cgo/out.go
! 149613e5586c59d8d7da138f6711f0c9  libgo/go/cmd/cgo/util.go
! b8e5ab5fabe9b352c29e12e646710b19  libgo/go/cmd/go.mod
! d2e1ea2991859ac8a6c1acdca48128ca  libgo/go/cmd/go/alldocs.go
  37def72439f93e8e61475c283db6a01a  libgo/go/cmd/go/go11.go
! cf2ef2ab4138b6f81b0bf5a5edd1df4a  libgo/go/cmd/go/go_test.go
  2f39d0965c1dbeb00a094a0371959aa1  libgo/go/cmd/go/go_unix_test.go
! bd28be506defb294a5d5a43348b02c5c  libgo/go/cmd/go/go_windows_test.go
! aa60ed147d8f5f83a3b9ef15272f609a  libgo/go/cmd/go/help_test.go
! ccf45b3e72e384d7dad8e6255ac9f357  libgo/go/cmd/go/init_test.go
! 41e41c0a0af6032b5cdcfc876da05e30  libgo/go/cmd/go/internal/auth/auth.go
! 7365cc410a1388ec7c43ea42a60a18db  libgo/go/cmd/go/internal/auth/netrc.go
  e4b7ca4f607d03ca05341e397f3a9e70  libgo/go/cmd/go/internal/auth/netrc_test.go
! 045b6dd00d08c7d374570c62fce13173  libgo/go/cmd/go/internal/base/base.go
! 6b2aecf35b34bc473f80b5803b77c054  libgo/go/cmd/go/internal/base/env.go
! f51fc340cd674673be68e2eeaa7e00dc  libgo/go/cmd/go/internal/base/flag.go
! f652cfaea2d1d5399874f7e96f6aa1c9  libgo/go/cmd/go/internal/base/goflags.go
  e13389c7f3a934a3f3dad9b1f8d183a7  libgo/go/cmd/go/internal/base/path.go
! 51d9fb9e2292044352d69588f2f36de8  libgo/go/cmd/go/internal/base/signal.go
  d2b5e73adbbf5e07a05303239c7f4128  libgo/go/cmd/go/internal/base/signal_notunix.go
  38409e86b8e297bfad5fab9a143d460c  libgo/go/cmd/go/internal/base/signal_unix.go
  9c33108683f58b8ba4fd464e37396d21  libgo/go/cmd/go/internal/base/tool.go
! 4f07de489bf44f927712e18f523862c8  libgo/go/cmd/go/internal/bug/bug.go
! d3d317725b7a3ca7f065d3cd7738abac  libgo/go/cmd/go/internal/cache/cache.go
! 01b943a1d382bbe09756ef3d05e01672  libgo/go/cmd/go/internal/cache/cache_test.go
! 111c4408ce7f421e44cedf7cff7416ee  libgo/go/cmd/go/internal/cache/default.go
  5426c38b28355eb30bee2875e28344be  libgo/go/cmd/go/internal/cache/hash.go
! dbf98cd27b5bdc1078f762e3878c3567  libgo/go/cmd/go/internal/cache/hash_test.go
! a27b7440db19aa350f424779d9932f75  libgo/go/cmd/go/internal/cfg/cfg.go
! 3090700cd99ea650ae63e87e305435e0  libgo/go/cmd/go/internal/clean/clean.go
! 0875829314fcc21843cdec060af3c5a5  libgo/go/cmd/go/internal/cmdflag/flag.go
! 6c3be0f167ad36e5a58108cd50b5a958  libgo/go/cmd/go/internal/doc/doc.go
! 4c7325725a1f8c501a9bb61605df7eab  libgo/go/cmd/go/internal/envcmd/env.go
! e94b15f1334a6a6bdf0f93b849d4423d  libgo/go/cmd/go/internal/fix/fix.go
! f79bd138d57d35655c4b28ec6b2fc3fd  libgo/go/cmd/go/internal/fmtcmd/fmt.go
! 13937aaedec64dccb2e53dcaa59d547c  libgo/go/cmd/go/internal/fsys/fsys.go
! 37055e4a8f8d7e6099c9a5fa4fc3f114  libgo/go/cmd/go/internal/fsys/fsys_test.go
! 4cd7e5f3b9252aef48b035fbbfab2ab3  libgo/go/cmd/go/internal/generate/generate.go
  04d01f4e2f2945111c096a635bd59f1b  libgo/go/cmd/go/internal/generate/generate_test.go
! d4c5a085c8a26cc9066dc982939729c8  libgo/go/cmd/go/internal/get/get.go
  96113e4fc82645aeb2e115fbd468fcb8  libgo/go/cmd/go/internal/get/tag_test.go
! f22654e489484d504acc3a9f53dd7447  libgo/go/cmd/go/internal/help/help.go
! 5c387bf72e52497b839f008394c2b8b2  libgo/go/cmd/go/internal/help/helpdoc.go
! b2fc9563f27fb6fd2afddafb4ebc6105  libgo/go/cmd/go/internal/imports/build.go
! c5f91fb600f85d53429bcbdbc02c42e1  libgo/go/cmd/go/internal/imports/read.go
  8c6c11674197076b261a580c5f491a5d  libgo/go/cmd/go/internal/imports/read_test.go
! 7558bbdd2d7ad533c664ad0aceb09577  libgo/go/cmd/go/internal/imports/scan.go
! be80b0ad695ac646cdce276679466bb2  libgo/go/cmd/go/internal/imports/scan_test.go
! 2ae1222b231c4bce886d401398f38020  libgo/go/cmd/go/internal/imports/tags.go
! f11a57290bd837448cb8b36a05f78a53  libgo/go/cmd/go/internal/imports/testdata/android/.h.go
  762b99b9504cf6c21afe8b2b8ac67bb3  libgo/go/cmd/go/internal/imports/testdata/android/a_android.go
  d17980afd0abcdd22bc0a638f9649ae8  libgo/go/cmd/go/internal/imports/testdata/android/b_android_arm64.go
  8028737c5f482847902e094b0772881d  libgo/go/cmd/go/internal/imports/testdata/android/c_linux.go
*************** d17980afd0abcdd22bc0a638f9649ae8  libgo/
*** 82695,82700 ****
--- 88659,88665 ----
  a0d258979e59d615c00853fb4a6e7188  libgo/go/cmd/go/internal/imports/testdata/android/e.go
  965cb32bab55793ea9ad29d0e83d2bfc  libgo/go/cmd/go/internal/imports/testdata/android/f.go
  2082e05cf61e131c4ed6b652d9f5af43  libgo/go/cmd/go/internal/imports/testdata/android/g.go
+ f11a57290bd837448cb8b36a05f78a53  libgo/go/cmd/go/internal/imports/testdata/illumos/.h.go
  fc183e10d5f735fe65e1d4a566ac9e83  libgo/go/cmd/go/internal/imports/testdata/illumos/a_illumos.go
  9bf212d9699b274d6c23577c51362fe7  libgo/go/cmd/go/internal/imports/testdata/illumos/b_illumos_amd64.go
  3451868899345d8236e114cdf6f93b7e  libgo/go/cmd/go/internal/imports/testdata/illumos/c_solaris.go
*************** db9a65876fdc7bae4726f703f4c0e533  libgo/
*** 82707,82750 ****
  4c4079c04c96f77c7f0b901154a28a3e  libgo/go/cmd/go/internal/imports/testdata/star/x_darwin.go
  50a7c204a7a37fb845e61dcbe29743c5  libgo/go/cmd/go/internal/imports/testdata/star/x_windows.go
  ffbbbb13bb2522e5cebe0f8a57972529  libgo/go/cmd/go/internal/list/context.go
! 2d6dac7a88583fa6a2957a7b58400487  libgo/go/cmd/go/internal/list/list.go
  1ec56bedacb7b14dc8bfe15c46277199  libgo/go/cmd/go/internal/load/flag.go
  94fca467c2106c7d6fe48cdb396c70ac  libgo/go/cmd/go/internal/load/flag_test.go
  4558f4acfca06853803287a80b960f2c  libgo/go/cmd/go/internal/load/path.go
! 07eb3252a94d45528781d8b2d8c95150  libgo/go/cmd/go/internal/load/pkg.go
  26c78443549093a85cb7a33fe5903043  libgo/go/cmd/go/internal/load/pkg_test.go
  ccfb8d791ac8b57d233dcebe8a2c2fea  libgo/go/cmd/go/internal/load/search.go
! 44c5e8b67a9fd3a66857d2d527bb866b  libgo/go/cmd/go/internal/load/test.go
! c5367a5de00f5253c35589de0a697208  libgo/go/cmd/go/internal/lockedfile/internal/filelock/filelock.go
! 65f47f2f8eb7dcecb181ad6bc38a9890  libgo/go/cmd/go/internal/lockedfile/internal/filelock/filelock_fcntl.go
! df351469ca2e46537960b996a6aebd00  libgo/go/cmd/go/internal/lockedfile/internal/filelock/filelock_other.go
! 13b0251e2d04366686d67ca7f07587d3  libgo/go/cmd/go/internal/lockedfile/internal/filelock/filelock_plan9.go
! d4887f01205074719facdd209bd84715  libgo/go/cmd/go/internal/lockedfile/internal/filelock/filelock_test.go
! d4b91211db40d628036a0000188f1e8d  libgo/go/cmd/go/internal/lockedfile/internal/filelock/filelock_unix.go
! e71a323bb13798db66c3e86f7c1141c5  libgo/go/cmd/go/internal/lockedfile/internal/filelock/filelock_windows.go
! a81224dd7532de74d2fd6097305a67dd  libgo/go/cmd/go/internal/lockedfile/lockedfile.go
! ac2fd127f7486868aec246921ef8651d  libgo/go/cmd/go/internal/lockedfile/lockedfile_filelock.go
! d19a2e6b8504272e6b8d135efda6bbb0  libgo/go/cmd/go/internal/lockedfile/lockedfile_plan9.go
! 444d27e361f4a01bb0ec751723fd9d2e  libgo/go/cmd/go/internal/lockedfile/lockedfile_test.go
  c3ba4e48088987fb7241ce00bd7c0127  libgo/go/cmd/go/internal/lockedfile/mutex.go
  2264cb4af37e609d9175569ead231ccf  libgo/go/cmd/go/internal/lockedfile/transform_test.go
! 613239f2a44e425674ea58933413ae62  libgo/go/cmd/go/internal/modcmd/download.go
! dbdaa5d9a8edc08ed08ff3a2ba90a9dd  libgo/go/cmd/go/internal/modcmd/edit.go
! d9a9d369bd8167d13a13e0a1b5bb20eb  libgo/go/cmd/go/internal/modcmd/graph.go
! 824977e6c2bc7fa93a0c6cb21f74b7f8  libgo/go/cmd/go/internal/modcmd/init.go
  315dbdaa7c8e7a77905972465be860d8  libgo/go/cmd/go/internal/modcmd/mod.go
! 073bb5afade319c798bf15f6f0ad0042  libgo/go/cmd/go/internal/modcmd/tidy.go
! 0cd771019e71a4e41f7b7dffa71fe5b1  libgo/go/cmd/go/internal/modcmd/vendor.go
! 8d234a4579069826b625f16d4f67d68a  libgo/go/cmd/go/internal/modcmd/verify.go
! cdf3bff60a084522c483547a9fc37bf5  libgo/go/cmd/go/internal/modcmd/why.go
! fa94783ec3beefa566ae08e75012c68b  libgo/go/cmd/go/internal/modconv/convert.go
! 2c73cc71a7e076055d166ba7b7af4fe6  libgo/go/cmd/go/internal/modconv/convert_test.go
  8e34cb2203e60108b1b8908db122c699  libgo/go/cmd/go/internal/modconv/dep.go
  f830bd72b020b4ead0cefc3e86f44144  libgo/go/cmd/go/internal/modconv/glide.go
  f94a290828a97890b66814d9b00df294  libgo/go/cmd/go/internal/modconv/glock.go
  8bbf0bc1c909f800d5fd13ab8fe96f71  libgo/go/cmd/go/internal/modconv/godeps.go
  998f136bacbb2a271455284352a7a3c2  libgo/go/cmd/go/internal/modconv/modconv.go
! 8653e3d2cf0c028038e069537f38a93b  libgo/go/cmd/go/internal/modconv/modconv_test.go
  ac286a9cb922e057e5dbad146645fb68  libgo/go/cmd/go/internal/modconv/testdata/cockroach.glock
  58fdf36a2cdfae6057ac6abd02ff9815  libgo/go/cmd/go/internal/modconv/testdata/cockroach.out
  1242599b998b9175ecdd73426dfe7f13  libgo/go/cmd/go/internal/modconv/testdata/dockermachine.godeps
--- 88672,88715 ----
  4c4079c04c96f77c7f0b901154a28a3e  libgo/go/cmd/go/internal/imports/testdata/star/x_darwin.go
  50a7c204a7a37fb845e61dcbe29743c5  libgo/go/cmd/go/internal/imports/testdata/star/x_windows.go
  ffbbbb13bb2522e5cebe0f8a57972529  libgo/go/cmd/go/internal/list/context.go
! e9aea19e18c2bde69520ed9ab424a5e1  libgo/go/cmd/go/internal/list/list.go
  1ec56bedacb7b14dc8bfe15c46277199  libgo/go/cmd/go/internal/load/flag.go
  94fca467c2106c7d6fe48cdb396c70ac  libgo/go/cmd/go/internal/load/flag_test.go
  4558f4acfca06853803287a80b960f2c  libgo/go/cmd/go/internal/load/path.go
! 8e242013bb2b2d4bcc906fdcf3a5eea9  libgo/go/cmd/go/internal/load/pkg.go
  26c78443549093a85cb7a33fe5903043  libgo/go/cmd/go/internal/load/pkg_test.go
  ccfb8d791ac8b57d233dcebe8a2c2fea  libgo/go/cmd/go/internal/load/search.go
! bb7e0aaaa41b91f8e398073a4e245501  libgo/go/cmd/go/internal/load/test.go
! 7d9a217aa09004e5c1276f8f9d25bcbb  libgo/go/cmd/go/internal/lockedfile/internal/filelock/filelock.go
! 2cf5a7ae2e4db240cb4de97d02c8f602  libgo/go/cmd/go/internal/lockedfile/internal/filelock/filelock_fcntl.go
! d53a39d835e9dd46e105fc86b3078070  libgo/go/cmd/go/internal/lockedfile/internal/filelock/filelock_other.go
! ba1a3f4b48c56cc982cbd65d2bd6e560  libgo/go/cmd/go/internal/lockedfile/internal/filelock/filelock_plan9.go
! df21c39d779371bde8db2b8cccf6d015  libgo/go/cmd/go/internal/lockedfile/internal/filelock/filelock_test.go
! 7ff35719ae47b913814efdb7622948ce  libgo/go/cmd/go/internal/lockedfile/internal/filelock/filelock_unix.go
! 684fb49fd8450d2b0e73ee0358bdf025  libgo/go/cmd/go/internal/lockedfile/internal/filelock/filelock_windows.go
! c7979f6e9f7f493978def2825b6bf6d4  libgo/go/cmd/go/internal/lockedfile/lockedfile.go
! 3fabb69de8e0d3e565485e99343fffe4  libgo/go/cmd/go/internal/lockedfile/lockedfile_filelock.go
! 4672281f959f3ae93ebf4204324a2bb0  libgo/go/cmd/go/internal/lockedfile/lockedfile_plan9.go
! 52bcbbd26efa621f04a096d1010eaa96  libgo/go/cmd/go/internal/lockedfile/lockedfile_test.go
  c3ba4e48088987fb7241ce00bd7c0127  libgo/go/cmd/go/internal/lockedfile/mutex.go
  2264cb4af37e609d9175569ead231ccf  libgo/go/cmd/go/internal/lockedfile/transform_test.go
! b80dbc92f4f2529ed771c50c5ae82d7a  libgo/go/cmd/go/internal/modcmd/download.go
! 5dd57065cfbf8417997f319664b06f5f  libgo/go/cmd/go/internal/modcmd/edit.go
! 8b50be9fbbd72c18ffcca8ad7b176bac  libgo/go/cmd/go/internal/modcmd/graph.go
! 03abe04351997d55ee47e49ef795cb77  libgo/go/cmd/go/internal/modcmd/init.go
  315dbdaa7c8e7a77905972465be860d8  libgo/go/cmd/go/internal/modcmd/mod.go
! 9c8030ce01ee537f0a72f38cbb2ca7b4  libgo/go/cmd/go/internal/modcmd/tidy.go
! fa84e387feaec8252597bd2ac052a8b2  libgo/go/cmd/go/internal/modcmd/vendor.go
! b0ef3a5d74e613b58a774df750d56eee  libgo/go/cmd/go/internal/modcmd/verify.go
! 258b656ec6881a536f3502537e95cd93  libgo/go/cmd/go/internal/modcmd/why.go
! 12e15061b2a3becc6ab8f4d95d3261fe  libgo/go/cmd/go/internal/modconv/convert.go
! cf46af43bd29821d79b10301e6903513  libgo/go/cmd/go/internal/modconv/convert_test.go
  8e34cb2203e60108b1b8908db122c699  libgo/go/cmd/go/internal/modconv/dep.go
  f830bd72b020b4ead0cefc3e86f44144  libgo/go/cmd/go/internal/modconv/glide.go
  f94a290828a97890b66814d9b00df294  libgo/go/cmd/go/internal/modconv/glock.go
  8bbf0bc1c909f800d5fd13ab8fe96f71  libgo/go/cmd/go/internal/modconv/godeps.go
  998f136bacbb2a271455284352a7a3c2  libgo/go/cmd/go/internal/modconv/modconv.go
! 41ec499616dafed6a9cd2664fdf1da73  libgo/go/cmd/go/internal/modconv/modconv_test.go
  ac286a9cb922e057e5dbad146645fb68  libgo/go/cmd/go/internal/modconv/testdata/cockroach.glock
  58fdf36a2cdfae6057ac6abd02ff9815  libgo/go/cmd/go/internal/modconv/testdata/cockroach.out
  1242599b998b9175ecdd73426dfe7f13  libgo/go/cmd/go/internal/modconv/testdata/dockermachine.godeps
*************** a66cca9947830608e5c45acbeb772b24  libgo/
*** 82769,82871 ****
  93db426b79be9580c820306d7cf03e0b  libgo/go/cmd/go/internal/modconv/vmanifest.go
  5b5b9fa98bf909314fd21496936ff3e1  libgo/go/cmd/go/internal/modconv/vyml.go
  10d93f1784aa7a37ccccd52360c5839b  libgo/go/cmd/go/internal/modfetch/bootstrap.go
! e08882a93f767a1846f8c3cbb74cbf28  libgo/go/cmd/go/internal/modfetch/cache.go
! 8e3c81064ee4f6658aba140815e471ce  libgo/go/cmd/go/internal/modfetch/cache_test.go
! c8bcde6420fae0611ad7fe6b768bb29a  libgo/go/cmd/go/internal/modfetch/codehost/codehost.go
! bd4f218d47ee7fe463f756f8354d7332  libgo/go/cmd/go/internal/modfetch/codehost/git.go
! 69109e398571f586e6cac53eac7144a9  libgo/go/cmd/go/internal/modfetch/codehost/git_test.go
! 995dbabd10cddc1d2d51c28d9da5b9ab  libgo/go/cmd/go/internal/modfetch/codehost/shell.go
  4dab9d544ec188eaa540abb59c73be1f  libgo/go/cmd/go/internal/modfetch/codehost/svn.go
! b0d8b255a34baa55fa06c80a6a845f05  libgo/go/cmd/go/internal/modfetch/codehost/vcs.go
! bf4b1e1e107b9c2a3fec8d3dbb4cb623  libgo/go/cmd/go/internal/modfetch/coderepo.go
! b96cc89e4bc58093f789f4801b56dff4  libgo/go/cmd/go/internal/modfetch/coderepo_test.go
! a23ac4d49381d7ae1dfef8c49de25626  libgo/go/cmd/go/internal/modfetch/fetch.go
! d0617c2b755ccd2b6526ddc708a5a193  libgo/go/cmd/go/internal/modfetch/insecure.go
  61ff5860492832e2e5d880ccfcc3b3b6  libgo/go/cmd/go/internal/modfetch/key.go
! 8d024552b4f5651bdd9ce08351a9f79a  libgo/go/cmd/go/internal/modfetch/proxy.go
! 28ef8ab67dc9c91988d0031855407ef0  libgo/go/cmd/go/internal/modfetch/pseudo.go
  56dedb4db76cfb7e037ac60aebd73a60  libgo/go/cmd/go/internal/modfetch/pseudo_test.go
! 0bf0fdc67646003b39f9d635737bc84b  libgo/go/cmd/go/internal/modfetch/repo.go
! 8362216ac33c78feb59a0d5f887b7c54  libgo/go/cmd/go/internal/modfetch/sumdb.go
! a2f77aad636bec799f2ce646ea6295e9  libgo/go/cmd/go/internal/modfetch/zip_sum_test/testdata/zip_sums.csv
! f3936ded92e17f0309bad3722aec66b6  libgo/go/cmd/go/internal/modfetch/zip_sum_test/zip_sum_test.go
! fbfd6e9d4df327684c726e9d4e6093db  libgo/go/cmd/go/internal/modget/get.go
! 67bc6728c9c0f9d15a17cbcd70bf718d  libgo/go/cmd/go/internal/modinfo/info.go
! e7f5c4dfadb30975346f9840d5d2b8c8  libgo/go/cmd/go/internal/modload/build.go
! 6ef53659fd3132c92a8561d97447ff05  libgo/go/cmd/go/internal/modload/help.go
! 6c68d9ed6b4ff025439f5cd182aa3bac  libgo/go/cmd/go/internal/modload/import.go
! 1a74e042c5f983f00d3dc05a7bca6b6d  libgo/go/cmd/go/internal/modload/import_test.go
! 7bd7aca95b91fcb325f0d250865bf0d1  libgo/go/cmd/go/internal/modload/init.go
! 789eb487562c25043ccfbe2bd4f4a01e  libgo/go/cmd/go/internal/modload/list.go
! da158f2de15134926f41f089ef961448  libgo/go/cmd/go/internal/modload/load.go
! ad2e095eac6124b9f876be9a93d48304  libgo/go/cmd/go/internal/modload/query.go
! 231e69efee104fde0395e1d19bfa9d1c  libgo/go/cmd/go/internal/modload/query_test.go
! 7f85dce1419b7e13286e98b1dd48238d  libgo/go/cmd/go/internal/modload/search.go
! 093a409faf0db68839143ddda22b3e72  libgo/go/cmd/go/internal/modload/stat_openfile.go
! 4dbe6c325fc74309d6f30fe687a42f65  libgo/go/cmd/go/internal/modload/stat_unix.go
! c0bc670d84dc11a56851696c9c19afdc  libgo/go/cmd/go/internal/modload/stat_windows.go
! 133e8d5f8f84452609015a3ade7b8068  libgo/go/cmd/go/internal/modload/testgo.go
! 34416a5f11f1768e6fb3dab105b7f9a6  libgo/go/cmd/go/internal/mvs/mvs.go
! 33a435540dff97df24738b78c940a00f  libgo/go/cmd/go/internal/mvs/mvs_test.go
  d79585b767cb622783ac2faa09ad375b  libgo/go/cmd/go/internal/par/work.go
  b65dcb25e91011cea96549a0fd605e62  libgo/go/cmd/go/internal/par/work_test.go
! 1c52501b29b43e69465dab7a8220310d  libgo/go/cmd/go/internal/renameio/renameio.go
! f2353e8ec24da6b80b68c1c5c1779e72  libgo/go/cmd/go/internal/renameio/renameio_test.go
! d36ee2bcc89f840b5300e9cf10d89ab1  libgo/go/cmd/go/internal/renameio/umask_test.go
! 00624c9c4df55f4bc0c97b582688dcef  libgo/go/cmd/go/internal/robustio/robustio.go
  4bdf402b6734d1007b7adf81c0e68556  libgo/go/cmd/go/internal/robustio/robustio_darwin.go
! 7d2fe4a82acacb2d5ace275b42e7f26f  libgo/go/cmd/go/internal/robustio/robustio_flaky.go
! 8d6ba547d07f8e8c309a5447500e3ee9  libgo/go/cmd/go/internal/robustio/robustio_other.go
  0cac75ce5ad07cd7ed2aac277db8eeec  libgo/go/cmd/go/internal/robustio/robustio_windows.go
! dda3a0ea903c48910c13345c3b3d2503  libgo/go/cmd/go/internal/run/run.go
! fc2db916a860a5a385144869b4c97a0d  libgo/go/cmd/go/internal/search/search.go
  e41ffae77a8804f84e30204116091257  libgo/go/cmd/go/internal/search/search_test.go
! 313221a37dda21de1a6405e1466a4aab  libgo/go/cmd/go/internal/str/path.go
! b0412c22237ffa4718db4c2b86a3bf7b  libgo/go/cmd/go/internal/str/str.go
  fe681e9565f65fb7361dd6451deddfc5  libgo/go/cmd/go/internal/test/cover.go
! 4f31a67a25b9e635927fc109db7fed9d  libgo/go/cmd/go/internal/test/test.go
! d00ee2180bdf96772c57806914130f42  libgo/go/cmd/go/internal/test/testflag.go
! db45a2fdb16c3beaa856ac8a33ebf414  libgo/go/cmd/go/internal/tool/tool.go
! f3fefb3b5a5f56d1d2d9f80e2212da1e  libgo/go/cmd/go/internal/txtar/archive.go
  ff7a4d711feed9235842031aa2a2caa4  libgo/go/cmd/go/internal/txtar/archive_test.go
  bb43f00ceb441e66a36a507da47c9ad2  libgo/go/cmd/go/internal/version/exe.go
! 6440cd5c07594e7d59ca4088f6e373a1  libgo/go/cmd/go/internal/version/version.go
! e0ca36195290d1f53beab97fda4d59df  libgo/go/cmd/go/internal/vet/vet.go
! 21b5d6e4854e176e267eaa5654c021ed  libgo/go/cmd/go/internal/vet/vetflag.go
! 098535bd034923b512216cb1c20ff29a  libgo/go/cmd/go/internal/web/api.go
  fbecfe49eae9efb222e34181cd13d2fd  libgo/go/cmd/go/internal/web/bootstrap.go
! 2a5a517e8c380f5b314d7e95cf3862e2  libgo/go/cmd/go/internal/web/file_test.go
! 7aa012011fba7ff2a3242dbc82a622f0  libgo/go/cmd/go/internal/web/http.go
  dca1f089508f21b14a548e658429d966  libgo/go/cmd/go/internal/web/url.go
  6b61e56552245c1159aa291f6d6d460c  libgo/go/cmd/go/internal/web/url_other.go
  cfa700d8582ce8012af61cbadf5e2624  libgo/go/cmd/go/internal/web/url_other_test.go
  f042a9e05853c9503b87ea0912abaff1  libgo/go/cmd/go/internal/web/url_test.go
  3cf617efca08defa83c5373fe054f267  libgo/go/cmd/go/internal/web/url_windows.go
  0747a99c06d7db6710937506b78e2ae9  libgo/go/cmd/go/internal/web/url_windows_test.go
! 90b49ec70c2ddc7e63020972fdab3050  libgo/go/cmd/go/internal/work/action.go
! d6a58fbd23c862ffbf4bb19b64cc6ebd  libgo/go/cmd/go/internal/work/build.go
! 74991a0ff479e9103058582630562ca2  libgo/go/cmd/go/internal/work/build_test.go
! d5eee4fbed1a001ba000b60db96d1e31  libgo/go/cmd/go/internal/work/buildid.go
! 0f9286d4288933ddb44e5f4c52a4e273  libgo/go/cmd/go/internal/work/exec.go
! 9d006ee75b7ef16161b32b1773b1915c  libgo/go/cmd/go/internal/work/gc.go
! 21085d05119d247fd69270928ec93029  libgo/go/cmd/go/internal/work/gccgo.go
! bd37d0b23f3fa6f1006aed4264006b20  libgo/go/cmd/go/internal/work/init.go
! d0cf0349c6f3eebd3cb214970e44fb0c  libgo/go/cmd/go/internal/work/security.go
! d6db1364e57f46f66fa1425e5c48be4e  libgo/go/cmd/go/internal/work/security_test.go
! 44529b3840dab683a7b62c004800dd8d  libgo/go/cmd/go/internal/work/testgo.go
! 590b3818a27e72d1f1b38d910bf1227f  libgo/go/cmd/go/main.go
  726b69c9a472df2db9d9209925992011  libgo/go/cmd/go/mkalldocs.sh
! 02679a3a1bd06a72ec63bfc289845fc8  libgo/go/cmd/go/note_test.go
! d8c994dc9215c975030fec945cef593f  libgo/go/cmd/go/proxy_test.go
! 6a1345c93747f096fa23fda217dfd097  libgo/go/cmd/go/script_test.go
! 534cffd69680fbf5a12b2c3ab17936ca  libgo/go/cmd/go/testdata/addmod.go
! 40f04f8211fc1ff2bace7a16c7cd42e0  libgo/go/cmd/go/testdata/example1_test.go
! 504e5b15f3642c4e97189505093d2972  libgo/go/cmd/go/testdata/example2_test.go
  0e982e12da255addee72f26e85fb2d0f  libgo/go/cmd/go/testdata/failssh/ssh
- dd70149db9039db14ebf4fd04d6ccf34  libgo/go/cmd/go/testdata/generate/test1.go
- 7b35a5fca3a0932856c1c20752fa76d5  libgo/go/cmd/go/testdata/generate/test2.go
- c8367be3bc3521b0464169e7986a73b4  libgo/go/cmd/go/testdata/generate/test3.go
- 1a81adbae5c72e9c7d456539ffa46cd2  libgo/go/cmd/go/testdata/generate/test4.go
  90bac82ed55ce2b07b5ad534c1dc6dbf  libgo/go/cmd/go/testdata/mod/README
  084e77d64be4ddd379ef4c2d712f085f  libgo/go/cmd/go/testdata/mod/example.com_badchain_a_v1.0.0.txt
  c1ee099a0ee845815db4cbd4e06472ee  libgo/go/cmd/go/testdata/mod/example.com_badchain_a_v1.1.0.txt
--- 88734,88848 ----
  93db426b79be9580c820306d7cf03e0b  libgo/go/cmd/go/internal/modconv/vmanifest.go
  5b5b9fa98bf909314fd21496936ff3e1  libgo/go/cmd/go/internal/modconv/vyml.go
  10d93f1784aa7a37ccccd52360c5839b  libgo/go/cmd/go/internal/modfetch/bootstrap.go
! 3d8e52ff3275370580b72ff3f20502c3  libgo/go/cmd/go/internal/modfetch/cache.go
! 7355be4c744cd452e8d8b09347b50361  libgo/go/cmd/go/internal/modfetch/cache_test.go
! 65972577e78c17b2c225f48293770ea5  libgo/go/cmd/go/internal/modfetch/codehost/codehost.go
! cec73802503524836c21380fd26f455d  libgo/go/cmd/go/internal/modfetch/codehost/git.go
! 01e034f2429ac8dd329aac8c552983ab  libgo/go/cmd/go/internal/modfetch/codehost/git_test.go
! f6f4be75ecf5a7f6961e33336d98154b  libgo/go/cmd/go/internal/modfetch/codehost/shell.go
  4dab9d544ec188eaa540abb59c73be1f  libgo/go/cmd/go/internal/modfetch/codehost/svn.go
! e60baeb065dab00d5e27b167427a5f83  libgo/go/cmd/go/internal/modfetch/codehost/vcs.go
! 86670b97f7c3b7d3d2950dfa3f9d070b  libgo/go/cmd/go/internal/modfetch/coderepo.go
! 885e4d3c31c4393cfe3ad99ad032c4d5  libgo/go/cmd/go/internal/modfetch/coderepo_test.go
! 7a2bb09991a882900570f937ab89e0a0  libgo/go/cmd/go/internal/modfetch/fetch.go
! 5708298ebfb93bfff89eec1f70ad88d0  libgo/go/cmd/go/internal/modfetch/insecure.go
  61ff5860492832e2e5d880ccfcc3b3b6  libgo/go/cmd/go/internal/modfetch/key.go
! a9218d3d5b82735122eb87e9d5f53d34  libgo/go/cmd/go/internal/modfetch/proxy.go
! f03588418c336fc1e2edacc329d1b6b8  libgo/go/cmd/go/internal/modfetch/pseudo.go
  56dedb4db76cfb7e037ac60aebd73a60  libgo/go/cmd/go/internal/modfetch/pseudo_test.go
! 84306fc2312100ad84f00eb1b5ed4151  libgo/go/cmd/go/internal/modfetch/repo.go
! 19caa153474923233ad4955db120bb94  libgo/go/cmd/go/internal/modfetch/sumdb.go
! 11c64b4bbaee64be54a71effbd92005f  libgo/go/cmd/go/internal/modfetch/zip_sum_test/testdata/zip_sums.csv
! e5028194c561d2592a2b3c1008e0a2ff  libgo/go/cmd/go/internal/modfetch/zip_sum_test/zip_sum_test.go
! 8c0accc75dfac4bdc2761955ddc33b85  libgo/go/cmd/go/internal/modget/get.go
! c1e1f41b35e1a015668cbe6e2ed12153  libgo/go/cmd/go/internal/modget/query.go
! ec02439e46dba1cb662b84c445da6f92  libgo/go/cmd/go/internal/modinfo/info.go
! 2ad0faf0617957bb6b145a274f99c9ab  libgo/go/cmd/go/internal/modload/build.go
! 8d911391eaf2dbcf120e5330f39a645a  libgo/go/cmd/go/internal/modload/buildlist.go
! b2c568c597af6293f81de78f8467b979  libgo/go/cmd/go/internal/modload/help.go
! 8fc51e9a139c7dbc1289fa026f45c42e  libgo/go/cmd/go/internal/modload/import.go
! e92583b5c1997d376362c3f02536accc  libgo/go/cmd/go/internal/modload/import_test.go
! c38c2a98f5f01651e74dbfc59def5bb3  libgo/go/cmd/go/internal/modload/init.go
! 24630eb7940bdb829f9ed30a5e6e17e8  libgo/go/cmd/go/internal/modload/list.go
! 929492d8110735cd9640a4f8a1994de4  libgo/go/cmd/go/internal/modload/load.go
! c7acccaabf3583863f9a0aa7666d3c2f  libgo/go/cmd/go/internal/modload/modfile.go
! 11020d3298ea095f9690dc1dac3d5a87  libgo/go/cmd/go/internal/modload/mvs.go
! 58eb96fee8564971f04ceab72fdc934e  libgo/go/cmd/go/internal/modload/mvs_test.go
! 605a79dba94db79ecad9b8571b0d3cb8  libgo/go/cmd/go/internal/modload/query.go
! e7667df90359e7cadecd88cbbced4c21  libgo/go/cmd/go/internal/modload/query_test.go
! 1d410d1a965c9dc52dbf75f58ca32c09  libgo/go/cmd/go/internal/modload/search.go
! 600289b769818cda8b51ca9455d1ccdb  libgo/go/cmd/go/internal/modload/stat_openfile.go
! 02f88bc37324a340168022b92068f56a  libgo/go/cmd/go/internal/modload/stat_unix.go
! a5728361fbca14983118e5af6a025926  libgo/go/cmd/go/internal/modload/stat_windows.go
! 3dc9c5d613a96bd00338488e63ca0f9c  libgo/go/cmd/go/internal/modload/vendor.go
! cb6b9ea6622fcf1e99fe6526644b0251  libgo/go/cmd/go/internal/mvs/errors.go
! 7ea5653f42d58e68ae692e1c180d0c6c  libgo/go/cmd/go/internal/mvs/mvs.go
! b8ce1515179ddf43dcad1b9bcf35d648  libgo/go/cmd/go/internal/mvs/mvs_test.go
! 1f127740cc69f9f086e1e14e484fbcbf  libgo/go/cmd/go/internal/par/queue.go
! f07569995982617035eb759a95f29a0d  libgo/go/cmd/go/internal/par/queue_test.go
  d79585b767cb622783ac2faa09ad375b  libgo/go/cmd/go/internal/par/work.go
  b65dcb25e91011cea96549a0fd605e62  libgo/go/cmd/go/internal/par/work_test.go
! 0bbc6ee5bcd91dba1476141e0ff900ac  libgo/go/cmd/go/internal/renameio/renameio.go
! 1ca7e51bcf0bc6cbbe8ef0570763e70d  libgo/go/cmd/go/internal/renameio/renameio_test.go
! 42b026c478d00c1990707f22fdae0c3c  libgo/go/cmd/go/internal/renameio/umask_test.go
! 645658b16469867d0b01e8319e6c4158  libgo/go/cmd/go/internal/robustio/robustio.go
  4bdf402b6734d1007b7adf81c0e68556  libgo/go/cmd/go/internal/robustio/robustio_darwin.go
! b6d29a36ed42b87940e0d787f0cc44ef  libgo/go/cmd/go/internal/robustio/robustio_flaky.go
! 7cdbbdb1780ef77223d163d49f57f57d  libgo/go/cmd/go/internal/robustio/robustio_other.go
  0cac75ce5ad07cd7ed2aac277db8eeec  libgo/go/cmd/go/internal/robustio/robustio_windows.go
! 2b142aded440ec3b2db1898737c17eb4  libgo/go/cmd/go/internal/run/run.go
! 3c05bd8d580f1771ce92559d576389ca  libgo/go/cmd/go/internal/search/search.go
  e41ffae77a8804f84e30204116091257  libgo/go/cmd/go/internal/search/search_test.go
! 09f08f485a1ae1a85963eb9839eeb6d9  libgo/go/cmd/go/internal/str/path.go
! e05d91d7721b14d4c0ada92aa2e7f6e9  libgo/go/cmd/go/internal/str/str.go
! a1ca62645468e4315cc7a86b9015d577  libgo/go/cmd/go/internal/str/str_test.go
  fe681e9565f65fb7361dd6451deddfc5  libgo/go/cmd/go/internal/test/cover.go
! cd31616d2b265aeeaa89515f3f3d2c89  libgo/go/cmd/go/internal/test/flagdefs.go
! 1055308c351e9a6f510e47bdf4daade3  libgo/go/cmd/go/internal/test/flagdefs_test.go
! 434fa37192f870ed533162503f9db6a2  libgo/go/cmd/go/internal/test/genflags.go
! 70fa4de2739ae83281e390cc2bd00119  libgo/go/cmd/go/internal/test/test.go
! 785b5dc5e26b1204b96a185b1e0dfd4d  libgo/go/cmd/go/internal/test/testflag.go
! c97bad85cfbb6632856b5a480c1e94a0  libgo/go/cmd/go/internal/tool/tool.go
! 14b034a1e3733a149bf0dae920236e46  libgo/go/cmd/go/internal/trace/trace.go
! 82bf1ee3927b11c1b3c39b18015ae3aa  libgo/go/cmd/go/internal/txtar/archive.go
  ff7a4d711feed9235842031aa2a2caa4  libgo/go/cmd/go/internal/txtar/archive_test.go
+ f270e47446143ea0e5b49d1bfa3bcb5d  libgo/go/cmd/go/internal/vcs/discovery.go
+ b6c8dedff4ff73b06a33006151911c02  libgo/go/cmd/go/internal/vcs/discovery_test.go
+ b12a06c79097f178f825ed879becabfb  libgo/go/cmd/go/internal/vcs/vcs.go
+ 3584786b65a3ad5e7101fe980e95e9b4  libgo/go/cmd/go/internal/vcs/vcs_test.go
  bb43f00ceb441e66a36a507da47c9ad2  libgo/go/cmd/go/internal/version/exe.go
! 210703e59946ca552eed783677f87520  libgo/go/cmd/go/internal/version/version.go
! df0614691256d171e1a5d173008aba9c  libgo/go/cmd/go/internal/vet/vet.go
! 31e3a86cb563d1ae9ff191ae5e639276  libgo/go/cmd/go/internal/vet/vetflag.go
! 5f683920a59442f441127cd2fb0371c8  libgo/go/cmd/go/internal/web/api.go
  fbecfe49eae9efb222e34181cd13d2fd  libgo/go/cmd/go/internal/web/bootstrap.go
! f95fecedfbc6323f9509aaa550d6881d  libgo/go/cmd/go/internal/web/file_test.go
! b7c8067000a1bbae0e65ef558b637098  libgo/go/cmd/go/internal/web/http.go
  dca1f089508f21b14a548e658429d966  libgo/go/cmd/go/internal/web/url.go
  6b61e56552245c1159aa291f6d6d460c  libgo/go/cmd/go/internal/web/url_other.go
  cfa700d8582ce8012af61cbadf5e2624  libgo/go/cmd/go/internal/web/url_other_test.go
  f042a9e05853c9503b87ea0912abaff1  libgo/go/cmd/go/internal/web/url_test.go
  3cf617efca08defa83c5373fe054f267  libgo/go/cmd/go/internal/web/url_windows.go
  0747a99c06d7db6710937506b78e2ae9  libgo/go/cmd/go/internal/web/url_windows_test.go
! 518ced7202c1f55715c9280fba212dde  libgo/go/cmd/go/internal/work/action.go
! 3881ae19d22b0a2a672172a76293eba3  libgo/go/cmd/go/internal/work/build.go
! e84e31f8ab41b5d291258dece4765682  libgo/go/cmd/go/internal/work/build_test.go
! 9524228bb4bbc39adf7d7935fd4330a8  libgo/go/cmd/go/internal/work/buildid.go
! c7bb4cd5ad9f155deb0f2aa0586f760a  libgo/go/cmd/go/internal/work/exec.go
! e04912ee550ec29b55ae7392e6f4c804  libgo/go/cmd/go/internal/work/exec_test.go
! cfac19e1830811ae35dfbd9c68028dd3  libgo/go/cmd/go/internal/work/gc.go
! da2d567d533f33a88a04ad1c04bb7186  libgo/go/cmd/go/internal/work/gccgo.go
! 47ece5c91b70aee3dffb92aeb5be6dab  libgo/go/cmd/go/internal/work/init.go
! 314a5880acea3898ffb86d18a9ea3434  libgo/go/cmd/go/internal/work/security.go
! b2fbdfe65bb234a826fcbd50547b9e0d  libgo/go/cmd/go/internal/work/security_test.go
! 3abe1b3a63a287957d692b5c17dc8dee  libgo/go/cmd/go/internal/work/testgo.go
! 3a172ff64842c4e73a8d61521a3fab69  libgo/go/cmd/go/main.go
  726b69c9a472df2db9d9209925992011  libgo/go/cmd/go/mkalldocs.sh
! d5cc9ef84467e0372b6f8935627f9f2d  libgo/go/cmd/go/note_test.go
! 1624b5e70c8dff58d204153c6d459263  libgo/go/cmd/go/proxy_test.go
! ee19ff44d0f6bed30597d667dab37ef5  libgo/go/cmd/go/script_test.go
! d1acd1bb3438b76c325b41b4533bf62d  libgo/go/cmd/go/testdata/addmod.go
  0e982e12da255addee72f26e85fb2d0f  libgo/go/cmd/go/testdata/failssh/ssh
  90bac82ed55ce2b07b5ad534c1dc6dbf  libgo/go/cmd/go/testdata/mod/README
  084e77d64be4ddd379ef4c2d712f085f  libgo/go/cmd/go/testdata/mod/example.com_badchain_a_v1.0.0.txt
  c1ee099a0ee845815db4cbd4e06472ee  libgo/go/cmd/go/testdata/mod/example.com_badchain_a_v1.1.0.txt
*************** e6c37e175a4269c228f6274fe9115de0  libgo/
*** 82894,82901 ****
  e58f153b4b3dcfa04ea8d02348c03959  libgo/go/cmd/go/testdata/mod/example.com_noroot_v1.0.0.txt
  7288d609b53d947433d19929dc8a30f0  libgo/go/cmd/go/testdata/mod/example.com_noroot_v1.0.1.txt
  f794e1e7fff0976eaeafe3b37c08cc43  libgo/go/cmd/go/testdata/mod/example.com_notags_v0.0.0-20190507143103-cc8cbe209b64.txt
! e63da60d60ad187a4eec1e7a33df127d  libgo/go/cmd/go/testdata/mod/example.com_printversion_v0.1.0.txt
! 3d8e92f2287047a007e94bd4a8a01033  libgo/go/cmd/go/testdata/mod/example.com_printversion_v1.0.0.txt
  a8031c6550d892a2ee4f2b64c2ad2ca2  libgo/go/cmd/go/testdata/mod/example.com_pseudoupgrade_v0.0.0-20190430073000-30950c05d534.txt
  6cf0bd0340565f3927b7136173fe2bac  libgo/go/cmd/go/testdata/mod/example.com_pseudoupgrade_v0.1.0.txt
  d4db8c9f7c442d56f2c93873ac858de0  libgo/go/cmd/go/testdata/mod/example.com_pseudoupgrade_v0.1.1-0.20190429073117-b5426c86b553.txt
--- 88871,88878 ----
  e58f153b4b3dcfa04ea8d02348c03959  libgo/go/cmd/go/testdata/mod/example.com_noroot_v1.0.0.txt
  7288d609b53d947433d19929dc8a30f0  libgo/go/cmd/go/testdata/mod/example.com_noroot_v1.0.1.txt
  f794e1e7fff0976eaeafe3b37c08cc43  libgo/go/cmd/go/testdata/mod/example.com_notags_v0.0.0-20190507143103-cc8cbe209b64.txt
! a3b99ab812d3d725c8b0c429c5d5f298  libgo/go/cmd/go/testdata/mod/example.com_printversion_v0.1.0.txt
! 03957a128fa9d842f1db3dd7fc54b1af  libgo/go/cmd/go/testdata/mod/example.com_printversion_v1.0.0.txt
  a8031c6550d892a2ee4f2b64c2ad2ca2  libgo/go/cmd/go/testdata/mod/example.com_pseudoupgrade_v0.0.0-20190430073000-30950c05d534.txt
  6cf0bd0340565f3927b7136173fe2bac  libgo/go/cmd/go/testdata/mod/example.com_pseudoupgrade_v0.1.0.txt
  d4db8c9f7c442d56f2c93873ac858de0  libgo/go/cmd/go/testdata/mod/example.com_pseudoupgrade_v0.1.1-0.20190429073117-b5426c86b553.txt
*************** ece39f757fb0881fddadab76f785e9d5  libgo/
*** 82984,83017 ****
  8f98a724beb492524719e172b2d58d8e  libgo/go/cmd/go/testdata/modlegacy/src/new/sub/x/v1/y/y.go
  f22cb178b7998fdcaba5c10532221858  libgo/go/cmd/go/testdata/modlegacy/src/old/p1/p1.go
  0751265117ff392563d0a12382092857  libgo/go/cmd/go/testdata/modlegacy/src/old/p2/p2.go
! 77dc70d9ba1eac52ae0d437dcae26355  libgo/go/cmd/go/testdata/norunexample/example_test.go
! e71d3b2866cdfbccecf38a631cfb0d4e  libgo/go/cmd/go/testdata/norunexample/test_test.go
! 05e32b6124d5255f804b2c66d6ad09d2  libgo/go/cmd/go/testdata/print_goroot.go
! 98ab3c79c3a0e5fcced00e8433fecdca  libgo/go/cmd/go/testdata/rundir/sub/sub.go
! 98ab3c79c3a0e5fcced00e8433fecdca  libgo/go/cmd/go/testdata/rundir/x.go
! 3ab572b5e34a62ee3be09c86a2a7aecb  libgo/go/cmd/go/testdata/savedir.go
! 00492fc615d5ae0532ce4cf102f0768f  libgo/go/cmd/go/testdata/script/README
  4fe8a82f32f39d436a8117d87e85de62  libgo/go/cmd/go/testdata/script/bug.txt
! 3cecd56335298a6f4ef48d5ff154228e  libgo/go/cmd/go/testdata/script/build_GOTMPDIR.txt
  97379f709ae6fbaa19f4f4bf761a5463  libgo/go/cmd/go/testdata/script/build_acl_windows.txt
  5f431c2cd2c9b93bdaa530d58f799083  libgo/go/cmd/go/testdata/script/build_cache_compile.txt
  3d4b02b1ab75e27ea31dfdda09b5f2e8  libgo/go/cmd/go/testdata/script/build_cache_gomips.txt
  a1e27faefba409c9b690c368166f2243  libgo/go/cmd/go/testdata/script/build_cache_link.txt
  190cde199cdc1246ea6e03a71bc3b58f  libgo/go/cmd/go/testdata/script/build_cache_output.txt
  960a9f8ee018a448842602fb58245706  libgo/go/cmd/go/testdata/script/build_cache_trimpath.txt
! fcc71b43ae85283c724b09f99bc96669  libgo/go/cmd/go/testdata/script/build_gcflags.txt
  f42e143987eeb6dfaea584c043242eab  libgo/go/cmd/go/testdata/script/build_i.txt
  f8077cb351530f4c7f8ca61c68d824f4  libgo/go/cmd/go/testdata/script/build_multi_main.txt
  848ade6547c233319bad0e6b3af1f0de  libgo/go/cmd/go/testdata/script/build_nocache.txt
  47ac8ac6d5a4d04f4574d2659748856b  libgo/go/cmd/go/testdata/script/build_relative_pkgdir.txt
  359e53fe0933062b22c15a526abe4cce  libgo/go/cmd/go/testdata/script/build_relative_tmpdir.txt
  0b2d629e43a0673b45fc91d5505432fa  libgo/go/cmd/go/testdata/script/build_runtime_gcflags.txt
! 6df76a6db9e22ef7d7c77a5080d660f2  libgo/go/cmd/go/testdata/script/build_trimpath.txt
  2c69443ecf0acd33c471187d6fc31bc7  libgo/go/cmd/go/testdata/script/cache_unix.txt
  951a47442045c43d50f0ee659c946b22  libgo/go/cmd/go/testdata/script/cache_vet.txt
  0e400c5f5fa693a94e9821b8ffab770a  libgo/go/cmd/go/testdata/script/cgo_syso_issue29253.txt
  af824bdae1e234c5d92f227ffd2cd1bf  libgo/go/cmd/go/testdata/script/clean_testcache.txt
! 7ba44f84630da41036771c4669e66119  libgo/go/cmd/go/testdata/script/cmd_import_error.txt
  9d7c42400724aa5ac2ca2bcc8d79e5ca  libgo/go/cmd/go/testdata/script/cover_atomic_pkgall.txt
  caf75437ba52f9bf33951bd4e1c4b09e  libgo/go/cmd/go/testdata/script/cover_mod_empty.txt
  1a42ddf1ef3f0dc2c2c6cf46f27e3c2e  libgo/go/cmd/go/testdata/script/cover_modes.txt
--- 88961,88989 ----
  8f98a724beb492524719e172b2d58d8e  libgo/go/cmd/go/testdata/modlegacy/src/new/sub/x/v1/y/y.go
  f22cb178b7998fdcaba5c10532221858  libgo/go/cmd/go/testdata/modlegacy/src/old/p1/p1.go
  0751265117ff392563d0a12382092857  libgo/go/cmd/go/testdata/modlegacy/src/old/p2/p2.go
! a0309e2b8f54c15e5e57d0982e9a4120  libgo/go/cmd/go/testdata/savedir.go
! 3a438fbedce3a8b36ffd2f4370155bf8  libgo/go/cmd/go/testdata/script/README
  4fe8a82f32f39d436a8117d87e85de62  libgo/go/cmd/go/testdata/script/bug.txt
! 5090ac6fd1fb9fbc61a6adbc46f0def6  libgo/go/cmd/go/testdata/script/build_GOTMPDIR.txt
  97379f709ae6fbaa19f4f4bf761a5463  libgo/go/cmd/go/testdata/script/build_acl_windows.txt
  5f431c2cd2c9b93bdaa530d58f799083  libgo/go/cmd/go/testdata/script/build_cache_compile.txt
  3d4b02b1ab75e27ea31dfdda09b5f2e8  libgo/go/cmd/go/testdata/script/build_cache_gomips.txt
  a1e27faefba409c9b690c368166f2243  libgo/go/cmd/go/testdata/script/build_cache_link.txt
  190cde199cdc1246ea6e03a71bc3b58f  libgo/go/cmd/go/testdata/script/build_cache_output.txt
  960a9f8ee018a448842602fb58245706  libgo/go/cmd/go/testdata/script/build_cache_trimpath.txt
! 17614c6044c0e86dc969e82489a437d9  libgo/go/cmd/go/testdata/script/build_gcflags.txt
  f42e143987eeb6dfaea584c043242eab  libgo/go/cmd/go/testdata/script/build_i.txt
  f8077cb351530f4c7f8ca61c68d824f4  libgo/go/cmd/go/testdata/script/build_multi_main.txt
  848ade6547c233319bad0e6b3af1f0de  libgo/go/cmd/go/testdata/script/build_nocache.txt
  47ac8ac6d5a4d04f4574d2659748856b  libgo/go/cmd/go/testdata/script/build_relative_pkgdir.txt
  359e53fe0933062b22c15a526abe4cce  libgo/go/cmd/go/testdata/script/build_relative_tmpdir.txt
  0b2d629e43a0673b45fc91d5505432fa  libgo/go/cmd/go/testdata/script/build_runtime_gcflags.txt
! 61d8b4389c423cdedd5eea0e64792aad  libgo/go/cmd/go/testdata/script/build_trimpath.txt
  2c69443ecf0acd33c471187d6fc31bc7  libgo/go/cmd/go/testdata/script/cache_unix.txt
  951a47442045c43d50f0ee659c946b22  libgo/go/cmd/go/testdata/script/cache_vet.txt
  0e400c5f5fa693a94e9821b8ffab770a  libgo/go/cmd/go/testdata/script/cgo_syso_issue29253.txt
  af824bdae1e234c5d92f227ffd2cd1bf  libgo/go/cmd/go/testdata/script/clean_testcache.txt
! dc491fd02d6718d5ff2a67f6c77d65d7  libgo/go/cmd/go/testdata/script/cmd_import_error.txt
  9d7c42400724aa5ac2ca2bcc8d79e5ca  libgo/go/cmd/go/testdata/script/cover_atomic_pkgall.txt
  caf75437ba52f9bf33951bd4e1c4b09e  libgo/go/cmd/go/testdata/script/cover_mod_empty.txt
  1a42ddf1ef3f0dc2c2c6cf46f27e3c2e  libgo/go/cmd/go/testdata/script/cover_modes.txt
*************** caf75437ba52f9bf33951bd4e1c4b09e  libgo/
*** 83019,83081 ****
  1115715066cf20ee58a470397f685c24  libgo/go/cmd/go/testdata/script/cover_pkgall_runtime.txt
  6158ecb786aa4a50f0cf26416e1ad5e6  libgo/go/cmd/go/testdata/script/cpu_profile_twice.txt
  31069bd0503e670384dd1dc7f8a1d4d7  libgo/go/cmd/go/testdata/script/devnull.txt
! 8e235df2ca8d015c1a16e5b60d7fe7b7  libgo/go/cmd/go/testdata/script/env_write.txt
  d2ecb1a1b1387c4923216c044e97e2f1  libgo/go/cmd/go/testdata/script/fileline.txt
  8c49a1aaeba4b8a186e7daa4f85e6a4b  libgo/go/cmd/go/testdata/script/fmt_load_errors.txt
  e266512d46667becf60b696e477051af  libgo/go/cmd/go/testdata/script/gccgo_m.txt
  482e75c227896606836ab8a873842595  libgo/go/cmd/go/testdata/script/gccgo_mangle.txt
! 0411a964529e0f2da7b821b9fba08020  libgo/go/cmd/go/testdata/script/gcflags_patterns.txt
  284d6b2821a80a6288c61cd76994ca14  libgo/go/cmd/go/testdata/script/get_404_meta.txt
  66008713bba01fe5dc311d4eea7b56f1  libgo/go/cmd/go/testdata/script/get_brace.txt
  c7ac2dd684bbd0ac3e2eeb6ab5ab2ed6  libgo/go/cmd/go/testdata/script/get_dotfiles.txt
  21f49636babac701a225dfe66bed730e  libgo/go/cmd/go/testdata/script/get_insecure_redirect.txt
  3c0ab1badc3091e3e02601b4bbba4550  libgo/go/cmd/go/testdata/script/get_tilde.txt
- 9174acc032f4f024fb4687e2c9b2577d  libgo/go/cmd/go/testdata/script/get_unicode.txt
  13c50ac07f758afd798de1aa557f03c7  libgo/go/cmd/go/testdata/script/get_with_git_trace.txt
  8f44e4ecd75acdc789a2e22d095b856c  libgo/go/cmd/go/testdata/script/goflags.txt
  106fe5ac11bc7aef87bc1c18781e2729  libgo/go/cmd/go/testdata/script/gopath_install.txt
  4f6ae40246ae093cc416f8e0c829bd01  libgo/go/cmd/go/testdata/script/gopath_local.txt
! a068b3e903d92386aaf5cdbf71f4656e  libgo/go/cmd/go/testdata/script/gopath_moved_repo.txt
  fd5fee6444dc630b75eef1466298c36c  libgo/go/cmd/go/testdata/script/gopath_paths.txt
  b5316c60f6f70d2376d84efdebfdbfa1  libgo/go/cmd/go/testdata/script/gopath_std_vendor.txt
! 9e80f79823e8cd3ae2cbe28d1f1fc838  libgo/go/cmd/go/testdata/script/help.txt
  ec1d642b1a03cce344e4c1fd323a80f4  libgo/go/cmd/go/testdata/script/import_main.txt
  9d04685fe658db9dde75baa3f3c2be80  libgo/go/cmd/go/testdata/script/install_cleans_build.txt
  5515b9a362f2978f73430307ee0a0063  libgo/go/cmd/go/testdata/script/install_cmd_gobin.txt
! c29b0a4b9e4ea9d197f352e0af6325b7  libgo/go/cmd/go/testdata/script/install_cross_gobin.txt
  c2c6b4fac69339acdcc3e93d0f524c29  libgo/go/cmd/go/testdata/script/install_rebuild_gopath.txt
  05f91037b862398cea4e11a0445b691f  libgo/go/cmd/go/testdata/script/install_rebuild_removed.txt
! 3b408e536ff67005962add74a2d8c91a  libgo/go/cmd/go/testdata/script/link_syso_issue33139.txt
  90a4596801b06a2d3ee455320c19f7ab  libgo/go/cmd/go/testdata/script/linkname.txt
! 700fe0a3b46d6b835ddc1beab936e5a9  libgo/go/cmd/go/testdata/script/list_ambiguous_path.txt
! 6cb6babcedf3afa6b2f848cfb2d36f1a  libgo/go/cmd/go/testdata/script/list_bad_import.txt
  51b259630d5666fffca1b2d6e4aa4034  libgo/go/cmd/go/testdata/script/list_compiled_imports.txt
  05836e9979f2398e923b55e0f2825705  libgo/go/cmd/go/testdata/script/list_constraints.txt
  43fda832749b6c5a38fb32a60fe60027  libgo/go/cmd/go/testdata/script/list_find.txt
! 3bb5dc55ef10dfed4c356e7feaf92862  libgo/go/cmd/go/testdata/script/list_importmap.txt
  c284c8b8f14a239fd99ae9d953873d7a  libgo/go/cmd/go/testdata/script/list_linkshared.txt
! bea7c7e7201f51ba39eb22c9a0896110  libgo/go/cmd/go/testdata/script/list_parse_err.txt
  d7219915d3aa07f166b7b63b6bd8490e  libgo/go/cmd/go/testdata/script/list_split_main.txt
  384350db6aa926c83fa06818230179c1  libgo/go/cmd/go/testdata/script/list_std.txt
  00b12c59098b1bc4d5420b57b510db64  libgo/go/cmd/go/testdata/script/list_test_e.txt
! 6d095fd6f0e16e8a6f8213ba88fe3732  libgo/go/cmd/go/testdata/script/list_test_err.txt
! e54cfedb32e878ab486f47ac9082f315  libgo/go/cmd/go/testdata/script/list_test_imports.txt
! 45e8824fd1fb5491c4faa76a0e9c42a2  libgo/go/cmd/go/testdata/script/list_test_non_go_files.txt
  78e6605bc95be0bba803431655f7150e  libgo/go/cmd/go/testdata/script/mod_alt_goroot.txt
! 142bda952b436d30e32c20c54c67c8c7  libgo/go/cmd/go/testdata/script/mod_ambiguous_import.txt
! d2b768180bd18ee2d9448b030728c81a  libgo/go/cmd/go/testdata/script/mod_auth.txt
! 943a0510c130c36186cdd73e2b338183  libgo/go/cmd/go/testdata/script/mod_bad_domain.txt
! 2045ff5baaf5f969a0e7ee67c29226c3  libgo/go/cmd/go/testdata/script/mod_bad_filenames.txt
! ff21b23d7431b5176e599bfbbfef9210  libgo/go/cmd/go/testdata/script/mod_build_info_err.txt
  c17dd01a8ba9feacfa5d646e991aba49  libgo/go/cmd/go/testdata/script/mod_build_tags.txt
  8d4d893bb529217b9cecfd767d7c2fed  libgo/go/cmd/go/testdata/script/mod_build_versioned.txt
  5bf47d0bf0113921a2cac2f9c5bb6b4d  libgo/go/cmd/go/testdata/script/mod_cache_rw.txt
! c6ef0cba1d1391ad21c8af2e20ea708d  libgo/go/cmd/go/testdata/script/mod_case.txt
! 41d505886281aa923652cde0a9ee68d7  libgo/go/cmd/go/testdata/script/mod_case_cgo.txt
  9d19119d5296dac2e72fee88788b6789  libgo/go/cmd/go/testdata/script/mod_clean_cache.txt
! fc482eee28ddddd7c3a6af61fe647889  libgo/go/cmd/go/testdata/script/mod_concurrent.txt
! 5e982cdc95500ff91978acd20341c5e5  libgo/go/cmd/go/testdata/script/mod_convert_dep.txt
! 2c4fea10af3883d10af75cccaac783bb  libgo/go/cmd/go/testdata/script/mod_convert_git.txt
  f5dbc96107be0223dfbe9ead75586749  libgo/go/cmd/go/testdata/script/mod_convert_glide.txt
  8ecb3cd01e3a6f85813f5c8ba359f483  libgo/go/cmd/go/testdata/script/mod_convert_glockfile.txt
  847c3b36df67dde72327ce7949871fbc  libgo/go/cmd/go/testdata/script/mod_convert_godeps.txt
--- 88991,89052 ----
  1115715066cf20ee58a470397f685c24  libgo/go/cmd/go/testdata/script/cover_pkgall_runtime.txt
  6158ecb786aa4a50f0cf26416e1ad5e6  libgo/go/cmd/go/testdata/script/cpu_profile_twice.txt
  31069bd0503e670384dd1dc7f8a1d4d7  libgo/go/cmd/go/testdata/script/devnull.txt
! 803cfca7ae5cbbc443f453cf8dfe2c59  libgo/go/cmd/go/testdata/script/env_write.txt
  d2ecb1a1b1387c4923216c044e97e2f1  libgo/go/cmd/go/testdata/script/fileline.txt
  8c49a1aaeba4b8a186e7daa4f85e6a4b  libgo/go/cmd/go/testdata/script/fmt_load_errors.txt
  e266512d46667becf60b696e477051af  libgo/go/cmd/go/testdata/script/gccgo_m.txt
  482e75c227896606836ab8a873842595  libgo/go/cmd/go/testdata/script/gccgo_mangle.txt
! 485d26c4c45ff8dcd9ec9040c9bb6010  libgo/go/cmd/go/testdata/script/gcflags_patterns.txt
  284d6b2821a80a6288c61cd76994ca14  libgo/go/cmd/go/testdata/script/get_404_meta.txt
  66008713bba01fe5dc311d4eea7b56f1  libgo/go/cmd/go/testdata/script/get_brace.txt
  c7ac2dd684bbd0ac3e2eeb6ab5ab2ed6  libgo/go/cmd/go/testdata/script/get_dotfiles.txt
  21f49636babac701a225dfe66bed730e  libgo/go/cmd/go/testdata/script/get_insecure_redirect.txt
  3c0ab1badc3091e3e02601b4bbba4550  libgo/go/cmd/go/testdata/script/get_tilde.txt
  13c50ac07f758afd798de1aa557f03c7  libgo/go/cmd/go/testdata/script/get_with_git_trace.txt
  8f44e4ecd75acdc789a2e22d095b856c  libgo/go/cmd/go/testdata/script/goflags.txt
  106fe5ac11bc7aef87bc1c18781e2729  libgo/go/cmd/go/testdata/script/gopath_install.txt
  4f6ae40246ae093cc416f8e0c829bd01  libgo/go/cmd/go/testdata/script/gopath_local.txt
! 518ae313f29bb0d8cc8c45948e639cb5  libgo/go/cmd/go/testdata/script/gopath_moved_repo.txt
  fd5fee6444dc630b75eef1466298c36c  libgo/go/cmd/go/testdata/script/gopath_paths.txt
  b5316c60f6f70d2376d84efdebfdbfa1  libgo/go/cmd/go/testdata/script/gopath_std_vendor.txt
! 0c2ae6ce07cc2ac4e51c2e51bb320408  libgo/go/cmd/go/testdata/script/help.txt
  ec1d642b1a03cce344e4c1fd323a80f4  libgo/go/cmd/go/testdata/script/import_main.txt
  9d04685fe658db9dde75baa3f3c2be80  libgo/go/cmd/go/testdata/script/install_cleans_build.txt
  5515b9a362f2978f73430307ee0a0063  libgo/go/cmd/go/testdata/script/install_cmd_gobin.txt
! 7040281c85b7d8e0e3284c8a235d8a3e  libgo/go/cmd/go/testdata/script/install_cross_gobin.txt
  c2c6b4fac69339acdcc3e93d0f524c29  libgo/go/cmd/go/testdata/script/install_rebuild_gopath.txt
  05f91037b862398cea4e11a0445b691f  libgo/go/cmd/go/testdata/script/install_rebuild_removed.txt
! e6b093721adee1372111b956dac686cb  libgo/go/cmd/go/testdata/script/link_syso_issue33139.txt
  90a4596801b06a2d3ee455320c19f7ab  libgo/go/cmd/go/testdata/script/linkname.txt
! 0834328bc91748984b7f75e318acd68d  libgo/go/cmd/go/testdata/script/list_ambiguous_path.txt
! 2cc605344974113fca42e09bd13a1e75  libgo/go/cmd/go/testdata/script/list_bad_import.txt
  51b259630d5666fffca1b2d6e4aa4034  libgo/go/cmd/go/testdata/script/list_compiled_imports.txt
  05836e9979f2398e923b55e0f2825705  libgo/go/cmd/go/testdata/script/list_constraints.txt
  43fda832749b6c5a38fb32a60fe60027  libgo/go/cmd/go/testdata/script/list_find.txt
! 044798238a86bf4ee2f594533a9374e6  libgo/go/cmd/go/testdata/script/list_importmap.txt
  c284c8b8f14a239fd99ae9d953873d7a  libgo/go/cmd/go/testdata/script/list_linkshared.txt
! 2184074d4d6428c1f5ee01580c51c28d  libgo/go/cmd/go/testdata/script/list_parse_err.txt
  d7219915d3aa07f166b7b63b6bd8490e  libgo/go/cmd/go/testdata/script/list_split_main.txt
  384350db6aa926c83fa06818230179c1  libgo/go/cmd/go/testdata/script/list_std.txt
  00b12c59098b1bc4d5420b57b510db64  libgo/go/cmd/go/testdata/script/list_test_e.txt
! fa0a458d838de630a68354f74823e9b8  libgo/go/cmd/go/testdata/script/list_test_err.txt
! bd3eeb1a054a9730b52810a82d2c621c  libgo/go/cmd/go/testdata/script/list_test_imports.txt
! 253161922db7bea8837d4dea71eb3dba  libgo/go/cmd/go/testdata/script/list_test_non_go_files.txt
  78e6605bc95be0bba803431655f7150e  libgo/go/cmd/go/testdata/script/mod_alt_goroot.txt
! 2413ced002f0517ccf05bc04c29b540b  libgo/go/cmd/go/testdata/script/mod_ambiguous_import.txt
! 38fb61151ae3aac698b41b167648d345  libgo/go/cmd/go/testdata/script/mod_auth.txt
! 9a360a8728f208e68dfc862769450014  libgo/go/cmd/go/testdata/script/mod_bad_domain.txt
! e6c7df0184114c23d615e0bae09d61d3  libgo/go/cmd/go/testdata/script/mod_bad_filenames.txt
! 1ce226760fe0d8ff5075999367d3cb15  libgo/go/cmd/go/testdata/script/mod_build_info_err.txt
  c17dd01a8ba9feacfa5d646e991aba49  libgo/go/cmd/go/testdata/script/mod_build_tags.txt
  8d4d893bb529217b9cecfd767d7c2fed  libgo/go/cmd/go/testdata/script/mod_build_versioned.txt
  5bf47d0bf0113921a2cac2f9c5bb6b4d  libgo/go/cmd/go/testdata/script/mod_cache_rw.txt
! 1e2d05d3d94274f851234c84609b68f3  libgo/go/cmd/go/testdata/script/mod_case.txt
! 85fd41fc414934d9ff2b5758d3609c3e  libgo/go/cmd/go/testdata/script/mod_case_cgo.txt
  9d19119d5296dac2e72fee88788b6789  libgo/go/cmd/go/testdata/script/mod_clean_cache.txt
! c05f86252b8f51660f147515c2655b0c  libgo/go/cmd/go/testdata/script/mod_concurrent.txt
! 041bdb0409111923060929fbfb95f1a0  libgo/go/cmd/go/testdata/script/mod_convert_dep.txt
! d8f609897ca8b4ddf3252575e4d47622  libgo/go/cmd/go/testdata/script/mod_convert_git.txt
  f5dbc96107be0223dfbe9ead75586749  libgo/go/cmd/go/testdata/script/mod_convert_glide.txt
  8ecb3cd01e3a6f85813f5c8ba359f483  libgo/go/cmd/go/testdata/script/mod_convert_glockfile.txt
  847c3b36df67dde72327ce7949871fbc  libgo/go/cmd/go/testdata/script/mod_convert_godeps.txt
*************** c19ca0bf7e6db0e574216222f0ea0ec3  libgo/
*** 83086,83370 ****
  3ed3da0f4cfbdff693056d33095b1465  libgo/go/cmd/go/testdata/script/mod_convert_vendor_manifest.txt
  83c33773e92023bffddc313afb498528  libgo/go/cmd/go/testdata/script/mod_convert_vendor_yml.txt
  508001f5d3ebd9d4a992adf95814d4c9  libgo/go/cmd/go/testdata/script/mod_dir.txt
! 1cea0499787ebfffe9ddcc57c728d388  libgo/go/cmd/go/testdata/script/mod_doc.txt
! 3eb47b455434484b28f23ce5f19e6fe9  libgo/go/cmd/go/testdata/script/mod_domain_root.txt
! c58b1e2e96a6d1c966523afc5cbeaeea  libgo/go/cmd/go/testdata/script/mod_dot.txt
! a16eae3a8850b2d39be3f8ab9c0098bf  libgo/go/cmd/go/testdata/script/mod_download.txt
  1e863e536039ae3143e5963c3d3527a2  libgo/go/cmd/go/testdata/script/mod_download_hash.txt
! fe3fea8dc8c937e0ea9a7b321a802c00  libgo/go/cmd/go/testdata/script/mod_download_json.txt
  433ae543b7a2c9d04cefcb2b0373d612  libgo/go/cmd/go/testdata/script/mod_download_replace_file.txt
! db96053e33ccd616eedf14fc9b87cd09  libgo/go/cmd/go/testdata/script/mod_edit.txt
  3bc901499cc6d3dd5bb76fc839e60b93  libgo/go/cmd/go/testdata/script/mod_edit_go.txt
! 42a8322372ac848413af78bafaacdb61  libgo/go/cmd/go/testdata/script/mod_empty_err.txt
! 928d7e2b515cc3577db75ba602016cbe  libgo/go/cmd/go/testdata/script/mod_enabled.txt
  f15d5cfa1ca9039927529eb601d587b3  libgo/go/cmd/go/testdata/script/mod_file_proxy.txt
! 119f10631a956977f53cdc31fdefca9a  libgo/go/cmd/go/testdata/script/mod_find.txt
! 088836d23284c25e677a3ddba70cd390  libgo/go/cmd/go/testdata/script/mod_fs_patterns.txt
  7fedd5451db2949d8f0bd2f69b0d9ccd  libgo/go/cmd/go/testdata/script/mod_get_cmd.txt
! e7beb68f9ed3fa2801c74fa975365e51  libgo/go/cmd/go/testdata/script/mod_get_commit.txt
  a6dce04db7895c5df1bce30ec21f21ed  libgo/go/cmd/go/testdata/script/mod_get_direct.txt
! 5462a566fce71059793760e7ce29ec16  libgo/go/cmd/go/testdata/script/mod_get_downgrade.txt
! 6a3420e13fa8d41254ec8a3d24dc17a2  libgo/go/cmd/go/testdata/script/mod_get_fallback.txt
  bc3ef9345cf7b5cd5ee0da3e35ca635d  libgo/go/cmd/go/testdata/script/mod_get_hash.txt
! 110cd56e10d6e6fc294039d0e091166b  libgo/go/cmd/go/testdata/script/mod_get_incompatible.txt
! 1f5476c23a353f0c814287556fa224ae  libgo/go/cmd/go/testdata/script/mod_get_indirect.txt
  4b9a72bbc0859eeca559644f8be5bb4f  libgo/go/cmd/go/testdata/script/mod_get_insecure_redirect.txt
! 05ae21b99f58a1011e57ee9c767a3c2c  libgo/go/cmd/go/testdata/script/mod_get_latest_pseudo.txt
  d407a8bf9a167025ab1fef7e388fcbd8  libgo/go/cmd/go/testdata/script/mod_get_local.txt
! 8d03a6f4f1780d1dae40362cebe338c7  libgo/go/cmd/go/testdata/script/mod_get_main.txt
  89afef727283341974ba69cc7200b453  libgo/go/cmd/go/testdata/script/mod_get_major.txt
! 4084e2f54e3c381c958dd3cb1faf696f  libgo/go/cmd/go/testdata/script/mod_get_moved.txt
! b99d61c26670fa9ccaf69764acef5c3b  libgo/go/cmd/go/testdata/script/mod_get_newcycle.txt
! 2ade002147c24bcc55c234e47ffacbd9  libgo/go/cmd/go/testdata/script/mod_get_none.txt
! 2bdfb53fa250950da80f59d89929fe35  libgo/go/cmd/go/testdata/script/mod_get_patterns.txt
  a06666f22515686acbfce4f4172cd0d4  libgo/go/cmd/go/testdata/script/mod_get_private_vcs.txt
  0fde9e8352582009fc15943ff0a7d039  libgo/go/cmd/go/testdata/script/mod_get_pseudo.txt
  d5845eab048d2441bba25b58ea7fbdfe  libgo/go/cmd/go/testdata/script/mod_get_pseudo_other_branch.txt
  a74a231b73793287812dbbbfadd954d2  libgo/go/cmd/go/testdata/script/mod_get_pseudo_prefix.txt
  1f594450efe868468aa9460c8eedd11e  libgo/go/cmd/go/testdata/script/mod_get_svn.txt
! c0ae1c79088e41bc19e474975f7fff2c  libgo/go/cmd/go/testdata/script/mod_get_tags.txt
! 221c23ba9bad6ada57132ba335ae9480  libgo/go/cmd/go/testdata/script/mod_get_test.txt
! 76e1665ac0ccc51b8fe95c9685c701cc  libgo/go/cmd/go/testdata/script/mod_get_trailing_slash.txt
! 69e3e2136dde6e68ce0813ad7144219d  libgo/go/cmd/go/testdata/script/mod_get_upgrade.txt
  bddb7cb84fdcccea02bf39da6c7dd077  libgo/go/cmd/go/testdata/script/mod_get_upgrade_pseudo.txt
  b9abad71e7e4d6f33f91a833c7fa691d  libgo/go/cmd/go/testdata/script/mod_getmode_vendor.txt
  20aab84b5f3324730760a6d40c76e6d9  libgo/go/cmd/go/testdata/script/mod_getx.txt
  e38adff826ea0f99306780ec353e2974  libgo/go/cmd/go/testdata/script/mod_git_export_subst.txt
! 477c47eb9aa885f662a51e412b55c5db  libgo/go/cmd/go/testdata/script/mod_go_version.txt
  294cd06aa8ed621f736d0fcdfca0a5f5  libgo/go/cmd/go/testdata/script/mod_go_version_mixed.txt
! d2cde08bd0a8ddcdff231d6cdcf9b3b5  libgo/go/cmd/go/testdata/script/mod_gobuild_import.txt
  eceaf7909e07bd765a20034948cadf4a  libgo/go/cmd/go/testdata/script/mod_gofmt_invalid.txt
! 6f774cc6523dcc7cd7c9f88d41856bb6  libgo/go/cmd/go/testdata/script/mod_gonoproxy.txt
! 8b01425e30ca30df4e6993f94fef9a06  libgo/go/cmd/go/testdata/script/mod_gopkg_unstable.txt
! eecd748e1efccb7157c0e4ee91866d76  libgo/go/cmd/go/testdata/script/mod_goroot_errors.txt
  f6db1b1e2b0ae05d978ec930a6eecefa  libgo/go/cmd/go/testdata/script/mod_graph.txt
  7e6b1289fcc17bd80686b261a27cf1ec  libgo/go/cmd/go/testdata/script/mod_help.txt
! f1502a7c89da409d232fcb74451eb8b8  libgo/go/cmd/go/testdata/script/mod_import.txt
  afb8c959ade039700ac864136d2a9074  libgo/go/cmd/go/testdata/script/mod_import_mod.txt
  4b94817751917b8e5efebea53f5e6d9e  libgo/go/cmd/go/testdata/script/mod_import_v1suffix.txt
! 38936a17fce47e34707d0fe2c5420307  libgo/go/cmd/go/testdata/script/mod_in_testdata_dir.txt
! c3683ff856d1652ac9817838b70b3a82  libgo/go/cmd/go/testdata/script/mod_indirect.txt
  7f482fc80919946f2f46be25a8ae094b  libgo/go/cmd/go/testdata/script/mod_indirect_main.txt
  0981b2a4cb731b987d087b08fa021b15  libgo/go/cmd/go/testdata/script/mod_indirect_tidy.txt
! a7299b92c5c51a6d9332c145d37b5279  libgo/go/cmd/go/testdata/script/mod_init_dep.txt
  2cff709ba2f617dac370072d6a3aeb57  libgo/go/cmd/go/testdata/script/mod_init_empty.txt
  5dc8e86635f1b53ecccd5b431f2f41c1  libgo/go/cmd/go/testdata/script/mod_init_glide.txt
! 6c43e6bf6da41ec1b578e15d083905ff  libgo/go/cmd/go/testdata/script/mod_init_path.txt
! 2e22dd906717a7a9ca5f8d259fad1fa1  libgo/go/cmd/go/testdata/script/mod_install_versioned.txt
! f4f6d332b24e5839832cc6804476034d  libgo/go/cmd/go/testdata/script/mod_internal.txt
! 89077e3e338285ed2f358e41b2826ee2  libgo/go/cmd/go/testdata/script/mod_invalid_version.txt
! bb339596975ffb3b73b8e975deda06f9  libgo/go/cmd/go/testdata/script/mod_issue35317.txt
! 3236c28dd7c726b943dce1c0dc05f33a  libgo/go/cmd/go/testdata/script/mod_list.txt
! 8010d7c998bf527cf6b91b55e6b584d3  libgo/go/cmd/go/testdata/script/mod_list_bad_import.txt
  1df64df10ced69dd1cfc4a1dd8f5caf3  libgo/go/cmd/go/testdata/script/mod_list_compiled_concurrent.txt
! fee22349d6ea62d0fda39bb2ddab0748  libgo/go/cmd/go/testdata/script/mod_list_dir.txt
! 823fc203f04696ac0719af7b6398c97e  libgo/go/cmd/go/testdata/script/mod_list_direct.txt
  69235ebb6ec00617be80cb85e55c47f9  libgo/go/cmd/go/testdata/script/mod_list_e_readonly.txt
! 12f76962cb2ff7f8a30d4b86032a934d  libgo/go/cmd/go/testdata/script/mod_list_pseudo.txt
! f61ca731201639d17f7a868b371dcbb8  libgo/go/cmd/go/testdata/script/mod_list_replace_dir.txt
! e305f950b4b2ea17b7f756345b5d45d8  libgo/go/cmd/go/testdata/script/mod_list_std.txt
! 3c9aa889b0f15a6f12dc4e5b1e99714c  libgo/go/cmd/go/testdata/script/mod_list_test.txt
! 80d753937d99df0b005746274d2715d3  libgo/go/cmd/go/testdata/script/mod_list_upgrade.txt
  902923a538d1b926a308bc15f62870ef  libgo/go/cmd/go/testdata/script/mod_list_upgrade_pseudo.txt
! ed13547504ae7272a24d5300b2f66058  libgo/go/cmd/go/testdata/script/mod_load_badchain.txt
! 53301915ba1e27d0fa2bc17060104ebc  libgo/go/cmd/go/testdata/script/mod_load_badmod.txt
! 0784195b77ab2cded4a8194458c89769  libgo/go/cmd/go/testdata/script/mod_load_badzip.txt
  d39036071e238f16dfac232bac06d24e  libgo/go/cmd/go/testdata/script/mod_local_replace.txt
  19abbcdcdc9cb18461e07bdf18878350  libgo/go/cmd/go/testdata/script/mod_missing_repo.txt
! 6b376629d01862a020a408c81eda5a8a  libgo/go/cmd/go/testdata/script/mod_missingpkg_prerelease.txt
! 4210a5ad7b7bc1eb5c53002ecb2e0267  libgo/go/cmd/go/testdata/script/mod_modinfo.txt
! cff1db133ede2d7258cc7e38c00049ac  libgo/go/cmd/go/testdata/script/mod_multirepo.txt
  18ae63aa8db51ebcd4cc1d711083a974  libgo/go/cmd/go/testdata/script/mod_nomod.txt
! 7558d6bb7ebd77ac93f3862ce2fff708  libgo/go/cmd/go/testdata/script/mod_off.txt
! aa262faa6b6894cada04427dfafddbb0  libgo/go/cmd/go/testdata/script/mod_off_init.txt
! 296fcc787b617873e4dfb1dd8e6e05a3  libgo/go/cmd/go/testdata/script/mod_outside.txt
  ae64b93722edefc2cb0e3c951b716d3e  libgo/go/cmd/go/testdata/script/mod_patterns.txt
  0f9cc6a73efc31e5d1073c9ede929e8c  libgo/go/cmd/go/testdata/script/mod_patterns_vendor.txt
! 52e529c861004d20c1a99df2738d10bc  libgo/go/cmd/go/testdata/script/mod_permissions.txt
  4589abd2a3ee9f0045ec5a886edcecb4  libgo/go/cmd/go/testdata/script/mod_prefer_compatible.txt
  8af488fc1b8f67369be0f4828a2792b8  libgo/go/cmd/go/testdata/script/mod_proxy_errors.txt
  48d4c782a9d0a77fe265cfa04fd117bd  libgo/go/cmd/go/testdata/script/mod_proxy_https.txt
! c718b0701fba605c6b8b8efcf4a3ee8c  libgo/go/cmd/go/testdata/script/mod_proxy_list.txt
  174511b8862c2fd5623d219931425f32  libgo/go/cmd/go/testdata/script/mod_pseudo_cache.txt
! 329fc5834ab4a10a43e8a8897a7fdcca  libgo/go/cmd/go/testdata/script/mod_query.txt
! 6f9b4de2ba9ca42b4ce4c26651779f8f  libgo/go/cmd/go/testdata/script/mod_query_empty.txt
! 50ce2e3314cfb86f4c836befd22c38b2  libgo/go/cmd/go/testdata/script/mod_query_exclude.txt
! e910f6e4cd9ea66b59513ff1854e1ab2  libgo/go/cmd/go/testdata/script/mod_readonly.txt
! c519e89d49f112306bab8e501d45223c  libgo/go/cmd/go/testdata/script/mod_replace.txt
! 03705fbd84e826e0606bcdd40e322990  libgo/go/cmd/go/testdata/script/mod_replace_gopkgin.txt
! 921b178f32ef8f4a32b58455822620c2  libgo/go/cmd/go/testdata/script/mod_replace_import.txt
! d8ce4edc18d89133f5535553905ce2fe  libgo/go/cmd/go/testdata/script/mod_require_exclude.txt
! 813438f34c9260f9f844bfe14727089c  libgo/go/cmd/go/testdata/script/mod_retention.txt
  c9526637edf8d37e0851063b805a2f0c  libgo/go/cmd/go/testdata/script/mod_run_path.txt
! a5c7845d29d7094468881c55751a19fd  libgo/go/cmd/go/testdata/script/mod_std_vendor.txt
  0b50524b8d7739ab3704e68d24d79e81  libgo/go/cmd/go/testdata/script/mod_string_alias.txt
  34f078ef1121073349bbbe0792a800e2  libgo/go/cmd/go/testdata/script/mod_sum_replaced.txt
! 1c12f5bc9a0c1367f4776c27f9c04b90  libgo/go/cmd/go/testdata/script/mod_sumdb.txt
  514dae960eb3cfb14282559a3f4dd4bc  libgo/go/cmd/go/testdata/script/mod_sumdb_cache.txt
! 05e667957aa60bd6e25b64fd042c3ae8  libgo/go/cmd/go/testdata/script/mod_sumdb_file_path.txt
! 445144c31d8a36d0495505927a15268c  libgo/go/cmd/go/testdata/script/mod_sumdb_golang.txt
! 00a387192d797546b3500dc5d6f90063  libgo/go/cmd/go/testdata/script/mod_sumdb_proxy.txt
! e37d934ae2e32e77b17e630bb5da0074  libgo/go/cmd/go/testdata/script/mod_symlink.txt
! 65e2f875dd0c5c98b14f8214f06bed1c  libgo/go/cmd/go/testdata/script/mod_test.txt
! c41899c8e44e69a40ab32ba5de1f30f7  libgo/go/cmd/go/testdata/script/mod_test_cached.txt
  85e210f2a362f270d46eb0d9a83bc9c9  libgo/go/cmd/go/testdata/script/mod_test_files.txt
  8b538329d6589f696e84ebeed445dd2e  libgo/go/cmd/go/testdata/script/mod_tidy.txt
  04e23a82a94d8f0e60b7b75ec98f4e58  libgo/go/cmd/go/testdata/script/mod_tidy_cycle.txt
! 831b3925566f2e8f51852d39df39bc3a  libgo/go/cmd/go/testdata/script/mod_tidy_error.txt
  1a78eae097a7102b1f2676e127956161  libgo/go/cmd/go/testdata/script/mod_tidy_quote.txt
! 0d21580e87525033a9a260e6a1f53562  libgo/go/cmd/go/testdata/script/mod_tidy_replace.txt
  d0c25f46fbc4a5a3218f3ceadaab7507  libgo/go/cmd/go/testdata/script/mod_tidy_sum.txt
! d18f938f2274232e139e91c6707e339e  libgo/go/cmd/go/testdata/script/mod_upgrade_patch.txt
! cb0ed86bdcd913b3c6421451faced298  libgo/go/cmd/go/testdata/script/mod_vcs_missing.txt
  f73fbc4479938d3a870e61d1fad7a10d  libgo/go/cmd/go/testdata/script/mod_vendor.txt
! 2a02886165bd01d0108bdce7a8c7eafe  libgo/go/cmd/go/testdata/script/mod_vendor_auto.txt
! 0116ea9aa41a9a3b909af9f522824619  libgo/go/cmd/go/testdata/script/mod_vendor_build.txt
  23852d4734fd6c23f2f05967dd962dd3  libgo/go/cmd/go/testdata/script/mod_vendor_nodeps.txt
  bb58498a4ff8a1face9a290da9151760  libgo/go/cmd/go/testdata/script/mod_vendor_replace.txt
  2592cb437cf8f8767dfa2d3eaea407c2  libgo/go/cmd/go/testdata/script/mod_vendor_unused.txt
! a4a67bb2dd7b9a695dce91d625605713  libgo/go/cmd/go/testdata/script/mod_verify.txt
! 3917f9adf4da1ba8239f103a8f94daf4  libgo/go/cmd/go/testdata/script/mod_versions.txt
! cfdba96990535caa60269871bfe371e3  libgo/go/cmd/go/testdata/script/mod_why.txt
! 9a64752c77accafd5eba217534d7ec6a  libgo/go/cmd/go/testdata/script/modfile_flag.txt
! 826db7d42da4799d4b2f66c559fe2964  libgo/go/cmd/go/testdata/script/noncanonical_import.txt
  dbb471f2dc212527ac6c24c3ed7ad312  libgo/go/cmd/go/testdata/script/pattern_syntax_error.txt
  dfb62925a95c0c6ca1f959ae9bc06fff  libgo/go/cmd/go/testdata/script/prevent_sys_unix_import.txt
  88e2929626e2d14449c7ccc8fc81cd60  libgo/go/cmd/go/testdata/script/run_hello.txt
  059e5010c132e3d1eba4aec4af80f299  libgo/go/cmd/go/testdata/script/run_set_executable_name.txt
  8ce8786b33aad9e2338bb4a9f46d123b  libgo/go/cmd/go/testdata/script/run_wildcard.txt
! 63b0c1712309dfff7cd66f90891d3036  libgo/go/cmd/go/testdata/script/script_wait.txt
  e595107a5dba27387b8e0c78d3ea3b1a  libgo/go/cmd/go/testdata/script/std_vendor.txt
- 7a67b7d43561ebbcef1c33a8ae66173b  libgo/go/cmd/go/testdata/script/sum_readonly.txt
  87aae535e8dd4267abb2f4d2e219243c  libgo/go/cmd/go/testdata/script/test_bad_example.txt
  4d34f58e4625e33df4a412380d4718c0  libgo/go/cmd/go/testdata/script/test_badtest.txt
! b376074ab5f260bd33b7028835121749  libgo/go/cmd/go/testdata/script/test_cache_inputs.txt
  b222151f2a921994a7f55ed249f24f7e  libgo/go/cmd/go/testdata/script/test_compile_binary.txt
! 2b23f5e094c56d641355993c22c032ab  libgo/go/cmd/go/testdata/script/test_compile_tempfile.txt
! cf0fee9c70d8ce0aecefafe047073b37  libgo/go/cmd/go/testdata/script/test_generated_main.txt
  1d0f827f0f0701185cfa7514a9f4d574  libgo/go/cmd/go/testdata/script/test_go111module_cache.txt
  00a1784b9585d68b78c3c32e86152b37  libgo/go/cmd/go/testdata/script/test_main_archive.txt
  7746ca69adbc076e6481624dc8baf98f  libgo/go/cmd/go/testdata/script/test_rebuildall.txt
  e0de8dc5161a3b6ade1429efdd6ac760  libgo/go/cmd/go/testdata/script/test_status.txt
  5a59156cc1f673ae921d634f66c71140  libgo/go/cmd/go/testdata/script/test_timeout.txt
  73e1f866c6b9c55238cc92e3f645e6b0  libgo/go/cmd/go/testdata/script/vendor_complex.txt
! 1b66a9cbfcc7440c766313ba600e631f  libgo/go/cmd/go/testdata/script/version.txt
  c800d4af05d63b175e8b1ba734b55be9  libgo/go/cmd/go/testdata/script/vet_asm.txt
  7d70f96679267e203d8aa12736575f1d  libgo/go/cmd/go/testdata/script/vet_deps.txt
! 7dfabb9d33bdcd77b5b5383088b6feb7  libgo/go/cmd/go/testdata/script/vet_flags.txt
! 4651555d01ee08df6a07c5d8f555e1b8  libgo/go/cmd/go/testdata/shadow/root1/src/foo/foo.go
! 898a1db417ec39410cbe5cede7ffeae9  libgo/go/cmd/go/testdata/shadow/root1/src/math/math.go
! 4651555d01ee08df6a07c5d8f555e1b8  libgo/go/cmd/go/testdata/shadow/root2/src/foo/foo.go
! eb921f86e1d1c1cd34e2800378e612a0  libgo/go/cmd/go/testdata/src/cgotest/m.go
! df7756ec4fe28319c9c41209413f6a65  libgo/go/cmd/go/testdata/src/coverasm/p.go
! 8efb885073bf334a8accce56732980df  libgo/go/cmd/go/testdata/src/coverasm/p.s
! e26302aa25007ca4d8e72cd2eea650f1  libgo/go/cmd/go/testdata/src/coverasm/p_test.go
! fb948ff5604170caa08a9f29689a3e7e  libgo/go/cmd/go/testdata/src/coverbad/p.go
! 7dbab7a6312b498fea15d733c43f5a13  libgo/go/cmd/go/testdata/src/coverbad/p1.go
! 9695ad48ebc4a01123118f3782d70933  libgo/go/cmd/go/testdata/src/coverbad/p_test.go
! 8227819c267b56e27a163219e706fe98  libgo/go/cmd/go/testdata/src/coverdep/p.go
! 726b8a82a1c281793bef2cd967726fae  libgo/go/cmd/go/testdata/src/coverdep/p1/p1.go
! 8a1f5a7e9b327b3e85972df8fc3d6794  libgo/go/cmd/go/testdata/src/coverdep/p_test.go
! 403de933c0a84ee756cfa697455f411c  libgo/go/cmd/go/testdata/src/coverdep2/p1/p.go
! b521dd407a3e6d0e440752e9e8ad381d  libgo/go/cmd/go/testdata/src/coverdep2/p1/p_test.go
! a12f3d9b328d17da302678def9e9c9d7  libgo/go/cmd/go/testdata/src/coverdep2/p2/p2.go
! 608afeb89ce7ace23b9a50121f3a5f24  libgo/go/cmd/go/testdata/src/coverdot1/p.go
! ef5f9a3e26a41b72c169dde3473e848a  libgo/go/cmd/go/testdata/src/coverdot2/p.go
! 32ca1c986fa3eab15dd3e81f978348ff  libgo/go/cmd/go/testdata/src/coverdot2/p_test.go
! 73f06e46b599567be5e873ddebe090ec  libgo/go/cmd/go/testdata/src/empty/pkg/pkg.go
! 73f06e46b599567be5e873ddebe090ec  libgo/go/cmd/go/testdata/src/empty/pkgtest/pkg.go
! 73f06e46b599567be5e873ddebe090ec  libgo/go/cmd/go/testdata/src/empty/pkgtest/test_test.go
! 73f06e46b599567be5e873ddebe090ec  libgo/go/cmd/go/testdata/src/empty/pkgtestxtest/pkg.go
! 73f06e46b599567be5e873ddebe090ec  libgo/go/cmd/go/testdata/src/empty/pkgtestxtest/test_test.go
! cfc8eb0d9a477d3d3d04e7ba48b64723  libgo/go/cmd/go/testdata/src/empty/pkgtestxtest/xtest_test.go
! 73f06e46b599567be5e873ddebe090ec  libgo/go/cmd/go/testdata/src/empty/pkgxtest/pkg.go
! cfc8eb0d9a477d3d3d04e7ba48b64723  libgo/go/cmd/go/testdata/src/empty/pkgxtest/xtest_test.go
! 73f06e46b599567be5e873ddebe090ec  libgo/go/cmd/go/testdata/src/empty/test/test_test.go
! 73f06e46b599567be5e873ddebe090ec  libgo/go/cmd/go/testdata/src/empty/testxtest/test_test.go
! cfc8eb0d9a477d3d3d04e7ba48b64723  libgo/go/cmd/go/testdata/src/empty/testxtest/xtest_test.go
! cfc8eb0d9a477d3d3d04e7ba48b64723  libgo/go/cmd/go/testdata/src/empty/xtest/xtest_test.go
! d41d8cd98f00b204e9800998ecf8427e  libgo/go/cmd/go/testdata/src/exclude/empty/x.txt
! ece39f757fb0881fddadab76f785e9d5  libgo/go/cmd/go/testdata/src/exclude/ignore/_x.go
! 5d01c4c6d2d95f1b5c0aaf2e6fe3b220  libgo/go/cmd/go/testdata/src/exclude/x.go
! fbb77437669c6adee4139f14a6932450  libgo/go/cmd/go/testdata/src/exclude/x_linux.go
! 43a0531819d0d966c04797ec4618ff60  libgo/go/cmd/go/testdata/src/failfast_test.go
! 51074d6b7b802b14309ec843697832c5  libgo/go/cmd/go/testdata/src/hello/hello.go
! f948e5500252bae75b154f879552bbaf  libgo/go/cmd/go/testdata/src/my.pkg/main/main.go
! 768f2afb03eee40ea793f601494a9458  libgo/go/cmd/go/testdata/src/my.pkg/pkg.go
! 3152431f650dd215d7c571d498dc63f3  libgo/go/cmd/go/testdata/src/skipper/skip_test.go
! 2de7172c70903546e0dccbbac3f35853  libgo/go/cmd/go/testdata/src/testlist/bench_test.go
! 96286132d39a8ef8649196dfb79afef2  libgo/go/cmd/go/testdata/src/testlist/example_test.go
! d9682de9694b486d40d171bc8081b4f0  libgo/go/cmd/go/testdata/src/testlist/test_test.go
! 9db6272ce5a953b135201898df4fd647  libgo/go/cmd/go/testdata/src/vend/bad.go
! ae393481947b7a614327a9059173b4f2  libgo/go/cmd/go/testdata/src/vend/dir1/dir1.go
! c280e485814ac6a32a3f76125d0277e7  libgo/go/cmd/go/testdata/src/vend/good.go
! 73111487a6c3247664106547f61404ac  libgo/go/cmd/go/testdata/src/vend/hello/hello.go
! fb99e7bf541e5eb36f5203d7ac4e8ad4  libgo/go/cmd/go/testdata/src/vend/hello/hello_test.go
! c8fd3ce5e2738437ab0e492fb504c181  libgo/go/cmd/go/testdata/src/vend/hello/hellox_test.go
! 275239cd341ad684f1519818dcbc53ba  libgo/go/cmd/go/testdata/src/vend/subdir/bad.go
! 7e5fbaca6ff9018c9de5448a637ce900  libgo/go/cmd/go/testdata/src/vend/subdir/good.go
! 73f06e46b599567be5e873ddebe090ec  libgo/go/cmd/go/testdata/src/vend/vendor/p/p.go
! 9d00066faa448193a12822b6582c817d  libgo/go/cmd/go/testdata/src/vend/vendor/q/q.go
! 8bc58f038644805406044cc1cfc04e53  libgo/go/cmd/go/testdata/src/vend/vendor/strings/msg.go
! a52e401725d20784e1640e16514fc77a  libgo/go/cmd/go/testdata/src/vend/vendor/vend/dir1/dir2/dir2.go
! cadaa9df0ea1bcaf6cc77085646d28d5  libgo/go/cmd/go/testdata/src/vend/x/invalid/invalid.go
! 73f06e46b599567be5e873ddebe090ec  libgo/go/cmd/go/testdata/src/vend/x/vendor/p/p.go
! 2e72e94cfb212a0c607b0622a19d046e  libgo/go/cmd/go/testdata/src/vend/x/vendor/p/p/p.go
! 214c8034011d6497b7e7f35e3825ed3a  libgo/go/cmd/go/testdata/src/vend/x/vendor/r/r.go
! b6396d9bf651f9cf9e8390af0777ae61  libgo/go/cmd/go/testdata/src/vend/x/x.go
! 1a6b1f83665ac7e72f054ab4c42d3094  libgo/go/cmd/go/testdata/src/vetcycle/p.go
! 055cfc097e57368443eef72acbf4b009  libgo/go/cmd/go/testdata/src/vetfail/p1/p1.go
! 4eebccfb3a36e9ff63c34985b73e6b8f  libgo/go/cmd/go/testdata/src/vetfail/p2/p2.go
! 0a8a47478f9bb090683980b36c4a98ca  libgo/go/cmd/go/testdata/src/vetfail/p2/p2_test.go
! cfc8eb0d9a477d3d3d04e7ba48b64723  libgo/go/cmd/go/testdata/src/vetpkg/a_test.go
! 61eb1aca1eb18dac980619d3f6606937  libgo/go/cmd/go/testdata/src/vetpkg/b.go
! 645874849db0b8013a55b5c125ea00fe  libgo/go/cmd/go/testdata/src/vetpkg/c.go
! 4124c41ec221ea8128e4b71c75087b37  libgo/go/cmd/go/testdata/src/xtestonly/f.go
! 135aa314a16ab626d5b4ccc81029bdf1  libgo/go/cmd/go/testdata/src/xtestonly/f_test.go
! 996c5fa6dc227f8b2fec495bb3a8fc79  libgo/go/cmd/go/testdata/standalone_benchmark_test.go
! 02efc5cfda08a5dcbb3aa29b25be4b4f  libgo/go/cmd/go/testdata/standalone_fail_sub_test.go
! 06ad0edd68b60aae94637a07ab470feb  libgo/go/cmd/go/testdata/standalone_main_normal_test.go
! 3db5fc59ef57be6c92349b4fca697294  libgo/go/cmd/go/testdata/standalone_main_wrong_test.go
! a33d9c7920a3333ea64e3529788edcec  libgo/go/cmd/go/testdata/standalone_parallel_sub_test.go
! a16600c7850f7e83e8169ccc7e3962d6  libgo/go/cmd/go/testdata/standalone_sub_test.go
! 024187500d356e5d0ad299a798dfb8ba  libgo/go/cmd/go/testdata/standalone_test.go
! dc9c9cda7fe2f64fe74fed9092f325de  libgo/go/cmd/go/testdata/standalone_testmain_flag_test.go
  2cb3cedabdbd6e8986756898ed1aa343  libgo/go/cmd/go/testdata/test_regexps.txt
- 98882c2d6c95489d7c765273a90239f9  libgo/go/cmd/go/testdata/testcover/pkg1/a.go
- 5fbfd98f4d8c3691dddf97c6b00e0e11  libgo/go/cmd/go/testdata/testcover/pkg2/a.go
- 9fe7a31ff30d49056f7bcd345f56caaa  libgo/go/cmd/go/testdata/testcover/pkg2/a_test.go
- 30433d9971305a13e4e0ac87f9c218ec  libgo/go/cmd/go/testdata/testcover/pkg3/a.go
- 590822bdf0578beb4c04938786c3673c  libgo/go/cmd/go/testdata/testcover/pkg3/a_test.go
- 626fc255cc9a717f29ada4de24d80954  libgo/go/cmd/go/testdata/testcover/pkg4/a.go
- a8145ca534fb28aa55aa1da6dd6574bc  libgo/go/cmd/go/testdata/testcover/pkg4/a_test.go
- e2dc50bc0e412f5547584fd23d10d6b1  libgo/go/cmd/go/testdata/testimport/p.go
- 403de933c0a84ee756cfa697455f411c  libgo/go/cmd/go/testdata/testimport/p1/p1.go
- 7e3be0542058c650be1be3e3ac397559  libgo/go/cmd/go/testdata/testimport/p2/p2.go
- 1a70c3ed2b72f6936ef0209dd39ac354  libgo/go/cmd/go/testdata/testimport/p_test.go
- ce9f663c035383eccc2885b3c33e99db  libgo/go/cmd/go/testdata/testimport/x_test.go
- 9b610cdf601d8a0f52c7cbf8acf525fa  libgo/go/cmd/go/testdata/testinternal/p.go
- 07c32bd28c5f4ab3b7b6e642df7537b3  libgo/go/cmd/go/testdata/testinternal2/p.go
- 2a626af39841ab5295bc0b1044327e4a  libgo/go/cmd/go/testdata/testinternal2/x/y/z/internal/w/w.go
- 6c7ed25fb6b48cf9084b5bb8fd878353  libgo/go/cmd/go/testdata/testinternal3/t.go
- eef6a76e0b93284dc308e9fcbd01feb9  libgo/go/cmd/go/testdata/testinternal4/src/p/p.go
- ece39f757fb0881fddadab76f785e9d5  libgo/go/cmd/go/testdata/testinternal4/src/q/internal/x/x.go
- c566cdf50110597f029fd894272582c2  libgo/go/cmd/go/testdata/testinternal4/src/q/j/j.go
- 73f06e46b599567be5e873ddebe090ec  libgo/go/cmd/go/testdata/testonly/p_test.go
- 1a87c610986c78d0ac9109846251ce49  libgo/go/cmd/go/testdata/testonly2/t.go
  df13e4cd3a4dcf3aa36b2533ae488d84  libgo/go/cmd/go/testdata/testterminal18153/terminal_test.go
- 521d23378dfa42dc84b2c1bca875ad4b  libgo/go/cmd/go/testdata/testvendor/src/p/p.go
- ece39f757fb0881fddadab76f785e9d5  libgo/go/cmd/go/testdata/testvendor/src/q/vendor/x/x.go
- dc3467cfa2c1316761d861905ad6fcf6  libgo/go/cmd/go/testdata/testvendor/src/q/y/y.go
- de834fca939fb2530d1269d53ef8393a  libgo/go/cmd/go/testdata/testvendor/src/q/z/z.go
- e5ddee27c430efc13ac06f49ea236f59  libgo/go/cmd/go/testdata/testvendor2/src/p/p.go
- ece39f757fb0881fddadab76f785e9d5  libgo/go/cmd/go/testdata/testvendor2/vendor/x/x.go
- a1f29ff972cb9c303bda5a634ec3f6d6  libgo/go/cmd/go/testdata/timeoutbench_test.go
  27d2592d4a25a41a5ed3c4fbdac5fb28  libgo/go/cmd/go/testdata/vendormod.txt
- 8f3c549dcb66675376cc7e9168ae44aa  libgo/go/cmd/go/vendor_test.go
  ebf01e2a6cf40d4f3551d7ce9137e9a8  libgo/go/cmd/gofmt/doc.go
! 26d6b09115ebd2bf9ef6d26af3e6c4a7  libgo/go/cmd/gofmt/gofmt.go
! 5f1825abbe9aefd17274f7c3c92d6d19  libgo/go/cmd/gofmt/gofmt_test.go
! 7425e93d2d709f08b6d9c55a2db29b5a  libgo/go/cmd/gofmt/internal.go
! c7294d64d76811554842785a5d1cc53d  libgo/go/cmd/gofmt/long_test.go
  1e1576e3781a052c948a1bd75685dc7c  libgo/go/cmd/gofmt/rewrite.go
  8cbd03fcc467680232794c829d6dfcb2  libgo/go/cmd/gofmt/simplify.go
  03bee86190c5c4c3de3e3226adfe5d22  libgo/go/cmd/gofmt/testdata/comments.golden
--- 89057,89235 ----
  3ed3da0f4cfbdff693056d33095b1465  libgo/go/cmd/go/testdata/script/mod_convert_vendor_manifest.txt
  83c33773e92023bffddc313afb498528  libgo/go/cmd/go/testdata/script/mod_convert_vendor_yml.txt
  508001f5d3ebd9d4a992adf95814d4c9  libgo/go/cmd/go/testdata/script/mod_dir.txt
! a250d88962db3d086cab21a55d25850d  libgo/go/cmd/go/testdata/script/mod_doc.txt
! e606d9757d325adfb913b353d2819598  libgo/go/cmd/go/testdata/script/mod_domain_root.txt
! 9cec43785d7adf8e2079da334a5ef5ad  libgo/go/cmd/go/testdata/script/mod_dot.txt
! 4ce4bde3ec07f85ff3c88f3ea7655ae4  libgo/go/cmd/go/testdata/script/mod_download.txt
  1e863e536039ae3143e5963c3d3527a2  libgo/go/cmd/go/testdata/script/mod_download_hash.txt
! 0efc15a8b38ccad118f21b0b84618ead  libgo/go/cmd/go/testdata/script/mod_download_json.txt
  433ae543b7a2c9d04cefcb2b0373d612  libgo/go/cmd/go/testdata/script/mod_download_replace_file.txt
! bf3fd118ad20b563b24157be21095982  libgo/go/cmd/go/testdata/script/mod_edit.txt
  3bc901499cc6d3dd5bb76fc839e60b93  libgo/go/cmd/go/testdata/script/mod_edit_go.txt
! 306297df100f2b0acd2ee0038f4e56c4  libgo/go/cmd/go/testdata/script/mod_empty_err.txt
! 0892f45fc78cf34e618968cd96829f08  libgo/go/cmd/go/testdata/script/mod_enabled.txt
  f15d5cfa1ca9039927529eb601d587b3  libgo/go/cmd/go/testdata/script/mod_file_proxy.txt
! be4b9f9ca081bca06d256ce0a119fd9d  libgo/go/cmd/go/testdata/script/mod_find.txt
! fc4c632b634f3742c11d5f881ffcb180  libgo/go/cmd/go/testdata/script/mod_fs_patterns.txt
  7fedd5451db2949d8f0bd2f69b0d9ccd  libgo/go/cmd/go/testdata/script/mod_get_cmd.txt
! 96d8bcb6a5f6da67990b355bdb5ba17c  libgo/go/cmd/go/testdata/script/mod_get_commit.txt
  a6dce04db7895c5df1bce30ec21f21ed  libgo/go/cmd/go/testdata/script/mod_get_direct.txt
! 344e5f64c8a63e895d8fb7faf35d0ce6  libgo/go/cmd/go/testdata/script/mod_get_downgrade.txt
! 07dfc1aa1faeb23d2b852bd2fb19ef58  libgo/go/cmd/go/testdata/script/mod_get_fallback.txt
  bc3ef9345cf7b5cd5ee0da3e35ca635d  libgo/go/cmd/go/testdata/script/mod_get_hash.txt
! ecee0e38e27d740021335090baa7c64c  libgo/go/cmd/go/testdata/script/mod_get_incompatible.txt
! 0f4e13b8f696c16d09b5980021582042  libgo/go/cmd/go/testdata/script/mod_get_indirect.txt
  4b9a72bbc0859eeca559644f8be5bb4f  libgo/go/cmd/go/testdata/script/mod_get_insecure_redirect.txt
! cd45ecc0131c48277f0983e6c46aed8d  libgo/go/cmd/go/testdata/script/mod_get_latest_pseudo.txt
  d407a8bf9a167025ab1fef7e388fcbd8  libgo/go/cmd/go/testdata/script/mod_get_local.txt
! 8c4324e8b977b0932f5bb0cf88b217ee  libgo/go/cmd/go/testdata/script/mod_get_main.txt
  89afef727283341974ba69cc7200b453  libgo/go/cmd/go/testdata/script/mod_get_major.txt
! 7575ef1a13e7877794a8370b78958918  libgo/go/cmd/go/testdata/script/mod_get_moved.txt
! 9396f23962c10aecefed6baf8cd0c99d  libgo/go/cmd/go/testdata/script/mod_get_newcycle.txt
! 16850ce7c010f415026c32b037b1da76  libgo/go/cmd/go/testdata/script/mod_get_none.txt
! 25c8d4197fd1811c7bc5a8ff9ac560e8  libgo/go/cmd/go/testdata/script/mod_get_patterns.txt
  a06666f22515686acbfce4f4172cd0d4  libgo/go/cmd/go/testdata/script/mod_get_private_vcs.txt
  0fde9e8352582009fc15943ff0a7d039  libgo/go/cmd/go/testdata/script/mod_get_pseudo.txt
  d5845eab048d2441bba25b58ea7fbdfe  libgo/go/cmd/go/testdata/script/mod_get_pseudo_other_branch.txt
  a74a231b73793287812dbbbfadd954d2  libgo/go/cmd/go/testdata/script/mod_get_pseudo_prefix.txt
  1f594450efe868468aa9460c8eedd11e  libgo/go/cmd/go/testdata/script/mod_get_svn.txt
! b4329cfaac89014ce53d9f443020ac0e  libgo/go/cmd/go/testdata/script/mod_get_tags.txt
! 9966b228fcae4b562d1146b84bc2dea5  libgo/go/cmd/go/testdata/script/mod_get_test.txt
! abe8adb3f9ee692d60911dfc641e8e44  libgo/go/cmd/go/testdata/script/mod_get_trailing_slash.txt
! 6ecbe0f8797493b28c2be78cf9a3402e  libgo/go/cmd/go/testdata/script/mod_get_upgrade.txt
  bddb7cb84fdcccea02bf39da6c7dd077  libgo/go/cmd/go/testdata/script/mod_get_upgrade_pseudo.txt
  b9abad71e7e4d6f33f91a833c7fa691d  libgo/go/cmd/go/testdata/script/mod_getmode_vendor.txt
  20aab84b5f3324730760a6d40c76e6d9  libgo/go/cmd/go/testdata/script/mod_getx.txt
  e38adff826ea0f99306780ec353e2974  libgo/go/cmd/go/testdata/script/mod_git_export_subst.txt
! c92ed1315860137d16bc0aa90dd80b74  libgo/go/cmd/go/testdata/script/mod_go_version.txt
  294cd06aa8ed621f736d0fcdfca0a5f5  libgo/go/cmd/go/testdata/script/mod_go_version_mixed.txt
! 617d4368b3a74fb76f772c9cd8b0a02d  libgo/go/cmd/go/testdata/script/mod_gobuild_import.txt
  eceaf7909e07bd765a20034948cadf4a  libgo/go/cmd/go/testdata/script/mod_gofmt_invalid.txt
! b8c3e9869661f0eed8bd9de34481ac0e  libgo/go/cmd/go/testdata/script/mod_gonoproxy.txt
! 8ae9b799901d22030bc9128fa3b23be1  libgo/go/cmd/go/testdata/script/mod_gopkg_unstable.txt
! 9e184867708272e0782ac10f4f7d2620  libgo/go/cmd/go/testdata/script/mod_goroot_errors.txt
  f6db1b1e2b0ae05d978ec930a6eecefa  libgo/go/cmd/go/testdata/script/mod_graph.txt
  7e6b1289fcc17bd80686b261a27cf1ec  libgo/go/cmd/go/testdata/script/mod_help.txt
! 20f9ef6514a9bb62079d4f297552aef7  libgo/go/cmd/go/testdata/script/mod_import.txt
  afb8c959ade039700ac864136d2a9074  libgo/go/cmd/go/testdata/script/mod_import_mod.txt
  4b94817751917b8e5efebea53f5e6d9e  libgo/go/cmd/go/testdata/script/mod_import_v1suffix.txt
! 88ed0be16fc8e11292d90334ee095a33  libgo/go/cmd/go/testdata/script/mod_in_testdata_dir.txt
! baf2a27935bbe1a8952740aec88989e2  libgo/go/cmd/go/testdata/script/mod_indirect.txt
  7f482fc80919946f2f46be25a8ae094b  libgo/go/cmd/go/testdata/script/mod_indirect_main.txt
  0981b2a4cb731b987d087b08fa021b15  libgo/go/cmd/go/testdata/script/mod_indirect_tidy.txt
! 6514be06552b786870c13af37faf28c8  libgo/go/cmd/go/testdata/script/mod_init_dep.txt
  2cff709ba2f617dac370072d6a3aeb57  libgo/go/cmd/go/testdata/script/mod_init_empty.txt
  5dc8e86635f1b53ecccd5b431f2f41c1  libgo/go/cmd/go/testdata/script/mod_init_glide.txt
! 795c05b45c569427dd3b9882d1f7edc3  libgo/go/cmd/go/testdata/script/mod_init_path.txt
! 78798585336b2ac0eabd300af7bc03dc  libgo/go/cmd/go/testdata/script/mod_install_versioned.txt
! e80e2cfdef839ff83917bcc4413fcd8b  libgo/go/cmd/go/testdata/script/mod_internal.txt
! 438b185ca531189265d0bf28d1e779c6  libgo/go/cmd/go/testdata/script/mod_invalid_version.txt
! 4da77574649bb61232ab800669ac3769  libgo/go/cmd/go/testdata/script/mod_issue35317.txt
! 70eb54bc34d6c86cffa6b8e2801b30cf  libgo/go/cmd/go/testdata/script/mod_list.txt
! e0daf8a063cf86ed57bca26f6ac7a2bf  libgo/go/cmd/go/testdata/script/mod_list_bad_import.txt
  1df64df10ced69dd1cfc4a1dd8f5caf3  libgo/go/cmd/go/testdata/script/mod_list_compiled_concurrent.txt
! dbc74c3e3deed398a401f87249febc30  libgo/go/cmd/go/testdata/script/mod_list_dir.txt
! ab6a61f20870116fd36aa162786df913  libgo/go/cmd/go/testdata/script/mod_list_direct.txt
  69235ebb6ec00617be80cb85e55c47f9  libgo/go/cmd/go/testdata/script/mod_list_e_readonly.txt
! aa120ef3adff6641763aab216accd157  libgo/go/cmd/go/testdata/script/mod_list_pseudo.txt
! a89069dd6a83507e6543185742b8c908  libgo/go/cmd/go/testdata/script/mod_list_replace_dir.txt
! d64bd3cdd0cd169f6be991c2b2834765  libgo/go/cmd/go/testdata/script/mod_list_std.txt
! 5aec0f10d2895860e583f8721729aff1  libgo/go/cmd/go/testdata/script/mod_list_test.txt
! 780c307f38fb1024d465900c06a3aabc  libgo/go/cmd/go/testdata/script/mod_list_upgrade.txt
  902923a538d1b926a308bc15f62870ef  libgo/go/cmd/go/testdata/script/mod_list_upgrade_pseudo.txt
! cd8f799a2d653d7f7a7310a6dd5833da  libgo/go/cmd/go/testdata/script/mod_load_badchain.txt
! 88fa780905366dc21c0c99e748d95c31  libgo/go/cmd/go/testdata/script/mod_load_badmod.txt
! 9873bd4ce08e0e1d33e5099a039f1d0b  libgo/go/cmd/go/testdata/script/mod_load_badzip.txt
  d39036071e238f16dfac232bac06d24e  libgo/go/cmd/go/testdata/script/mod_local_replace.txt
  19abbcdcdc9cb18461e07bdf18878350  libgo/go/cmd/go/testdata/script/mod_missing_repo.txt
! ecc21f99203b132d2085186040d322ec  libgo/go/cmd/go/testdata/script/mod_missingpkg_prerelease.txt
! 57aebbf7801966c6afa6651edaaae6e8  libgo/go/cmd/go/testdata/script/mod_modinfo.txt
! f7972676a80bfefe536ad4b70011fb97  libgo/go/cmd/go/testdata/script/mod_multirepo.txt
  18ae63aa8db51ebcd4cc1d711083a974  libgo/go/cmd/go/testdata/script/mod_nomod.txt
! 6c8ececfa4063012a294acd9fb4f582a  libgo/go/cmd/go/testdata/script/mod_off.txt
! bfc1507f6da3adf0a82860c1b61bcf13  libgo/go/cmd/go/testdata/script/mod_off_init.txt
! b78f35de403b87bbee0431be40a79eb5  libgo/go/cmd/go/testdata/script/mod_outside.txt
  ae64b93722edefc2cb0e3c951b716d3e  libgo/go/cmd/go/testdata/script/mod_patterns.txt
  0f9cc6a73efc31e5d1073c9ede929e8c  libgo/go/cmd/go/testdata/script/mod_patterns_vendor.txt
! 92a313127d4ef92a360380faf492aa63  libgo/go/cmd/go/testdata/script/mod_permissions.txt
  4589abd2a3ee9f0045ec5a886edcecb4  libgo/go/cmd/go/testdata/script/mod_prefer_compatible.txt
  8af488fc1b8f67369be0f4828a2792b8  libgo/go/cmd/go/testdata/script/mod_proxy_errors.txt
  48d4c782a9d0a77fe265cfa04fd117bd  libgo/go/cmd/go/testdata/script/mod_proxy_https.txt
! d8e89055f4d56aa320f8179906511579  libgo/go/cmd/go/testdata/script/mod_proxy_list.txt
  174511b8862c2fd5623d219931425f32  libgo/go/cmd/go/testdata/script/mod_pseudo_cache.txt
! 06fca4d7129ef0b7c103dbf5d5fa6980  libgo/go/cmd/go/testdata/script/mod_query.txt
! 458387d0ff0a6cc0b155dff88047b4a4  libgo/go/cmd/go/testdata/script/mod_query_empty.txt
! c8afe82966ddb004da567751c428d310  libgo/go/cmd/go/testdata/script/mod_query_exclude.txt
! fdc21447b418d8bd20cdb46c05b1253e  libgo/go/cmd/go/testdata/script/mod_readonly.txt
! 424bb8480da6a965524b17d3bb769f5c  libgo/go/cmd/go/testdata/script/mod_replace.txt
! 1bcab23d2a6e8003bbc6120a51feaba3  libgo/go/cmd/go/testdata/script/mod_replace_gopkgin.txt
! 940786d075a1228233eadcb85d1b925f  libgo/go/cmd/go/testdata/script/mod_replace_import.txt
! 66f172c612e87fcc08812e3dcb0ad682  libgo/go/cmd/go/testdata/script/mod_require_exclude.txt
! 69986c0bc07f5635b3d4ff74389a0ef4  libgo/go/cmd/go/testdata/script/mod_retention.txt
  c9526637edf8d37e0851063b805a2f0c  libgo/go/cmd/go/testdata/script/mod_run_path.txt
! 12c56c18a178cd097476ea2280e722a3  libgo/go/cmd/go/testdata/script/mod_std_vendor.txt
  0b50524b8d7739ab3704e68d24d79e81  libgo/go/cmd/go/testdata/script/mod_string_alias.txt
  34f078ef1121073349bbbe0792a800e2  libgo/go/cmd/go/testdata/script/mod_sum_replaced.txt
! 5c9b29932b852de01ab465f9bc9d9a7e  libgo/go/cmd/go/testdata/script/mod_sumdb.txt
  514dae960eb3cfb14282559a3f4dd4bc  libgo/go/cmd/go/testdata/script/mod_sumdb_cache.txt
! 4db31425906630a01497657f7feff273  libgo/go/cmd/go/testdata/script/mod_sumdb_file_path.txt
! 13e802b47e594475f301283ee2608826  libgo/go/cmd/go/testdata/script/mod_sumdb_golang.txt
! 3b3185453d3e138d94fc25e35a098074  libgo/go/cmd/go/testdata/script/mod_sumdb_proxy.txt
! 0efbe09f23828d7ddcd4f53ed8bceaca  libgo/go/cmd/go/testdata/script/mod_symlink.txt
! 7d3eca90bf6e9f474892544cc5968cfd  libgo/go/cmd/go/testdata/script/mod_test.txt
! 2820259b7d04da0270b2de52db31dc8f  libgo/go/cmd/go/testdata/script/mod_test_cached.txt
  85e210f2a362f270d46eb0d9a83bc9c9  libgo/go/cmd/go/testdata/script/mod_test_files.txt
  8b538329d6589f696e84ebeed445dd2e  libgo/go/cmd/go/testdata/script/mod_tidy.txt
  04e23a82a94d8f0e60b7b75ec98f4e58  libgo/go/cmd/go/testdata/script/mod_tidy_cycle.txt
! 13213e898df2fdddb93670b5c1908e9a  libgo/go/cmd/go/testdata/script/mod_tidy_error.txt
  1a78eae097a7102b1f2676e127956161  libgo/go/cmd/go/testdata/script/mod_tidy_quote.txt
! cdc0ad65eddb99d403747c0420a7558e  libgo/go/cmd/go/testdata/script/mod_tidy_replace.txt
  d0c25f46fbc4a5a3218f3ceadaab7507  libgo/go/cmd/go/testdata/script/mod_tidy_sum.txt
! bd81ebc17337d0c9d4873e9df78d810a  libgo/go/cmd/go/testdata/script/mod_upgrade_patch.txt
! e4f3e49d941e87bf73e9a8fd903a65cb  libgo/go/cmd/go/testdata/script/mod_vcs_missing.txt
  f73fbc4479938d3a870e61d1fad7a10d  libgo/go/cmd/go/testdata/script/mod_vendor.txt
! b8f2d69aeed4a1f5626b99dd5aad5c77  libgo/go/cmd/go/testdata/script/mod_vendor_auto.txt
! feb57ab8ab513648f1b0b076b82411c4  libgo/go/cmd/go/testdata/script/mod_vendor_build.txt
  23852d4734fd6c23f2f05967dd962dd3  libgo/go/cmd/go/testdata/script/mod_vendor_nodeps.txt
  bb58498a4ff8a1face9a290da9151760  libgo/go/cmd/go/testdata/script/mod_vendor_replace.txt
  2592cb437cf8f8767dfa2d3eaea407c2  libgo/go/cmd/go/testdata/script/mod_vendor_unused.txt
! 341eeee06fce6288a166aaf090d6edba  libgo/go/cmd/go/testdata/script/mod_verify.txt
! 7234d122c0ba93349f1663ba0405dcd5  libgo/go/cmd/go/testdata/script/mod_versions.txt
! 012656139b764651afff32e52f9d2d42  libgo/go/cmd/go/testdata/script/mod_why.txt
! 7ddc5e546c124031e60671fac2b07dbd  libgo/go/cmd/go/testdata/script/modfile_flag.txt
! 22b3afa4e8f6eaf54f5231d711fea20d  libgo/go/cmd/go/testdata/script/noncanonical_import.txt
  dbb471f2dc212527ac6c24c3ed7ad312  libgo/go/cmd/go/testdata/script/pattern_syntax_error.txt
  dfb62925a95c0c6ca1f959ae9bc06fff  libgo/go/cmd/go/testdata/script/prevent_sys_unix_import.txt
  88e2929626e2d14449c7ccc8fc81cd60  libgo/go/cmd/go/testdata/script/run_hello.txt
  059e5010c132e3d1eba4aec4af80f299  libgo/go/cmd/go/testdata/script/run_set_executable_name.txt
  8ce8786b33aad9e2338bb4a9f46d123b  libgo/go/cmd/go/testdata/script/run_wildcard.txt
! b330e0f4d27a4eabaaf1c63f3056836c  libgo/go/cmd/go/testdata/script/script_wait.txt
  e595107a5dba27387b8e0c78d3ea3b1a  libgo/go/cmd/go/testdata/script/std_vendor.txt
  87aae535e8dd4267abb2f4d2e219243c  libgo/go/cmd/go/testdata/script/test_bad_example.txt
  4d34f58e4625e33df4a412380d4718c0  libgo/go/cmd/go/testdata/script/test_badtest.txt
! fccc8b8e9cc46f9ad9f6c131b0a7ce7b  libgo/go/cmd/go/testdata/script/test_cache_inputs.txt
  b222151f2a921994a7f55ed249f24f7e  libgo/go/cmd/go/testdata/script/test_compile_binary.txt
! 2197dda02b07ad8965ba97055aacdb8c  libgo/go/cmd/go/testdata/script/test_compile_tempfile.txt
! 8809a4c467d3fc10104111656ac58b03  libgo/go/cmd/go/testdata/script/test_flags.txt
! efe26eeb268f6df41604dd3cd3f45c2e  libgo/go/cmd/go/testdata/script/test_generated_main.txt
  1d0f827f0f0701185cfa7514a9f4d574  libgo/go/cmd/go/testdata/script/test_go111module_cache.txt
  00a1784b9585d68b78c3c32e86152b37  libgo/go/cmd/go/testdata/script/test_main_archive.txt
  7746ca69adbc076e6481624dc8baf98f  libgo/go/cmd/go/testdata/script/test_rebuildall.txt
  e0de8dc5161a3b6ade1429efdd6ac760  libgo/go/cmd/go/testdata/script/test_status.txt
  5a59156cc1f673ae921d634f66c71140  libgo/go/cmd/go/testdata/script/test_timeout.txt
  73e1f866c6b9c55238cc92e3f645e6b0  libgo/go/cmd/go/testdata/script/vendor_complex.txt
! ec975c12bbc6096dfdc4c53af68a4e36  libgo/go/cmd/go/testdata/script/version.txt
  c800d4af05d63b175e8b1ba734b55be9  libgo/go/cmd/go/testdata/script/vet_asm.txt
  7d70f96679267e203d8aa12736575f1d  libgo/go/cmd/go/testdata/script/vet_deps.txt
! 99947ab56e2537c8884f6dd8cc491750  libgo/go/cmd/go/testdata/script/vet_flags.txt
  2cb3cedabdbd6e8986756898ed1aa343  libgo/go/cmd/go/testdata/test_regexps.txt
  df13e4cd3a4dcf3aa36b2533ae488d84  libgo/go/cmd/go/testdata/testterminal18153/terminal_test.go
  27d2592d4a25a41a5ed3c4fbdac5fb28  libgo/go/cmd/go/testdata/vendormod.txt
  ebf01e2a6cf40d4f3551d7ce9137e9a8  libgo/go/cmd/gofmt/doc.go
! 9dbf312f1b7aa1046fbbaf97e73622c7  libgo/go/cmd/gofmt/gofmt.go
! 00571ff76ddcf7d67aaa0b972ee7effe  libgo/go/cmd/gofmt/gofmt_test.go
! 3b0675a2f0e08b9db3195e48000b3f6b  libgo/go/cmd/gofmt/internal.go
! 2d51f4b232843ca01a38e3860006528e  libgo/go/cmd/gofmt/long_test.go
  1e1576e3781a052c948a1bd75685dc7c  libgo/go/cmd/gofmt/rewrite.go
  8cbd03fcc467680232794c829d6dfcb2  libgo/go/cmd/gofmt/simplify.go
  03bee86190c5c4c3de3e3226adfe5d22  libgo/go/cmd/gofmt/testdata/comments.golden
*************** ba5482454866512ea5ecd71a76eae2fe  libgo/
*** 83423,83460 ****
  fd6e2c41c5c105f5706233e60688824b  libgo/go/cmd/gofmt/testdata/typealias.input
  882c2b700d34e10e6b7634ab219c5b38  libgo/go/cmd/gofmt/testdata/typeswitch.golden
  0211f1b6a9bcd60c1d8bf9989b01168c  libgo/go/cmd/gofmt/testdata/typeswitch.input
! 72f099b8daefed699d6006c333a18319  libgo/go/cmd/internal/browser/browser.go
! 55231f7e3f2b1da6399505bf22154bbb  libgo/go/cmd/internal/buildid/buildid.go
! 8cbf1485b220609cd39f0ec334586864  libgo/go/cmd/internal/buildid/buildid_test.go
! ea5ae4bcd2dd8eaa5ba07c50865bcad8  libgo/go/cmd/internal/buildid/note.go
! 931b51af11f0f217078a79d94ae93333  libgo/go/cmd/internal/buildid/rewrite.go
  75258c8141883ea1dcbfd31406cbea02  libgo/go/cmd/internal/buildid/testdata/a.elf.base64
  f9298077848d0a12d774bc22367aa678  libgo/go/cmd/internal/buildid/testdata/a.macho.base64
  d959d5d86356bd9e2d7691604a02096f  libgo/go/cmd/internal/buildid/testdata/a.pe.base64
  9251962c9d5b6cbf3c0862cc176a4d0f  libgo/go/cmd/internal/buildid/testdata/p.a.base64
  424d42a5e2431fa092ba1ca6d58c3b67  libgo/go/cmd/internal/diff/diff.go
  ee83232ed44d0b93433f04b9ebf7b257  libgo/go/cmd/internal/edit/edit.go
  3af1ecc2c190e82042995e259be4fbdf  libgo/go/cmd/internal/edit/edit_test.go
! 0b847d108cd8f38f616a0acf92ad1566  libgo/go/cmd/internal/objabi/autotype.go
! a0aecc1540acbaaae66c56297fc7bbe6  libgo/go/cmd/internal/objabi/doc.go
! 058cf5e60be35a23771c3fb270a29e65  libgo/go/cmd/internal/objabi/flag.go
! 6ec92be5bb42aef2f8b7ead54827ee51  libgo/go/cmd/internal/objabi/funcdata.go
! 73505cdf2b8ded0b1dcebc2d58f740af  libgo/go/cmd/internal/objabi/funcid.go
! 28d6e32f87fa10c2960c12e0354d799e  libgo/go/cmd/internal/objabi/head.go
! 9aa65bf7598ecdc3578639317ca1c7d4  libgo/go/cmd/internal/objabi/line.go
  4d7bcc563b36b8082664a2aad3096b0d  libgo/go/cmd/internal/objabi/line_test.go
! e9209d90dcfff3795c4e8c204c2b6f16  libgo/go/cmd/internal/objabi/path.go
  5400317c37f34db5e225d1831d8bdecf  libgo/go/cmd/internal/objabi/path_test.go
! 8d1f47a05bc197efd9515b6a588aa337  libgo/go/cmd/internal/objabi/reloctype.go
! da6d8490a78b000edc6e7887f0e2a3d9  libgo/go/cmd/internal/objabi/reloctype_string.go
! b82254aa855cb3da22eed3188cc692e4  libgo/go/cmd/internal/objabi/stack.go
! fdd06c6067404d15fa404574f4522d15  libgo/go/cmd/internal/objabi/symkind.go
! f9f2e1545bcdc28e86b52e019397fa5e  libgo/go/cmd/internal/objabi/symkind_string.go
  d4754ba68d9cbe37486e976254fb41a8  libgo/go/cmd/internal/objabi/typekind.go
! a119a64cd6ab88d40eedece0b25ee56f  libgo/go/cmd/internal/objabi/util.go
! 1f06a395cd79a24dfa663010d6d627b8  libgo/go/cmd/internal/sys/arch.go
! cd6e9f6ba70f0e6466eeef104807f6aa  libgo/go/cmd/internal/sys/supported.go
! e5d0010e82b995830791802df3abb68c  libgo/go/cmd/internal/test2json/test2json.go
  c578afa830020b698532bad3e68e3207  libgo/go/cmd/internal/test2json/test2json_test.go
  a97b278a09fba3081091218371290ecf  libgo/go/cmd/internal/test2json/testdata/ascii.json
  1c175713541ed5815e6fc54fe1755112  libgo/go/cmd/internal/test2json/testdata/ascii.test
--- 89288,89329 ----
  fd6e2c41c5c105f5706233e60688824b  libgo/go/cmd/gofmt/testdata/typealias.input
  882c2b700d34e10e6b7634ab219c5b38  libgo/go/cmd/gofmt/testdata/typeswitch.golden
  0211f1b6a9bcd60c1d8bf9989b01168c  libgo/go/cmd/gofmt/testdata/typeswitch.input
! 9bcee56c7bbff38503b3029f5a5fd3a7  libgo/go/cmd/internal/browser/browser.go
! 5d4f930e06dd072de85eb0b491e2f4c4  libgo/go/cmd/internal/buildid/buildid.go
! 14a0ad894e08da2a1a8251c820a69413  libgo/go/cmd/internal/buildid/buildid_test.go
! 080093043e6ec48f16082180823992f4  libgo/go/cmd/internal/buildid/note.go
! f880d23d5bb3b71ab651a83d2a71050c  libgo/go/cmd/internal/buildid/rewrite.go
  75258c8141883ea1dcbfd31406cbea02  libgo/go/cmd/internal/buildid/testdata/a.elf.base64
  f9298077848d0a12d774bc22367aa678  libgo/go/cmd/internal/buildid/testdata/a.macho.base64
  d959d5d86356bd9e2d7691604a02096f  libgo/go/cmd/internal/buildid/testdata/a.pe.base64
  9251962c9d5b6cbf3c0862cc176a4d0f  libgo/go/cmd/internal/buildid/testdata/p.a.base64
+ 6c7be740a0a3235bbb4f8ce2163b0d6d  libgo/go/cmd/internal/codesign/codesign.go
  424d42a5e2431fa092ba1ca6d58c3b67  libgo/go/cmd/internal/diff/diff.go
  ee83232ed44d0b93433f04b9ebf7b257  libgo/go/cmd/internal/edit/edit.go
  3af1ecc2c190e82042995e259be4fbdf  libgo/go/cmd/internal/edit/edit_test.go
! 877af56b004414bc8b7aec3bf2c26931  libgo/go/cmd/internal/objabi/autotype.go
! f1ca2f98323f46b808a52ace801e9daf  libgo/go/cmd/internal/objabi/flag.go
! 8b8dabd88c226681b2868514036e4c7d  libgo/go/cmd/internal/objabi/flag_test.go
! 9b5dd9be7966b763b1832b677d6a0ecb  libgo/go/cmd/internal/objabi/funcdata.go
! 4bc23594720ecc5da1c821754d2a4333  libgo/go/cmd/internal/objabi/funcid.go
! 066c0cd80917859cb49556c619b63833  libgo/go/cmd/internal/objabi/head.go
! 951b4856356d57357b5f5eb500b436a7  libgo/go/cmd/internal/objabi/line.go
  4d7bcc563b36b8082664a2aad3096b0d  libgo/go/cmd/internal/objabi/line_test.go
! 517a7aa16c72d25832a6612226159ab7  libgo/go/cmd/internal/objabi/path.go
  5400317c37f34db5e225d1831d8bdecf  libgo/go/cmd/internal/objabi/path_test.go
! aa9b3d41087be2071f12252308b18f2e  libgo/go/cmd/internal/objabi/reloctype.go
! 3d4ce7c6c03cec3602c2961d81578897  libgo/go/cmd/internal/objabi/reloctype_string.go
! c4ab201ea32b7e425e84b16725a924a3  libgo/go/cmd/internal/objabi/stack.go
! d10125de15672b428953e57c6cecf861  libgo/go/cmd/internal/objabi/symkind.go
! 3d1f6c46118f186acae6d8cad14f200a  libgo/go/cmd/internal/objabi/symkind_string.go
  d4754ba68d9cbe37486e976254fb41a8  libgo/go/cmd/internal/objabi/typekind.go
! 84f5fc9b243b8feb42f3d20219dbe48b  libgo/go/cmd/internal/objabi/util.go
! 64a00cea6c40d3c1a2f57701da6f4b5c  libgo/go/cmd/internal/pkgpath/pkgpath.go
! 371c175f5e23850ad4f19cd0b3a27531  libgo/go/cmd/internal/pkgpath/pkgpath_test.go
! 010f1651319bf708f8f4b619d421721d  libgo/go/cmd/internal/sys/arch.go
! befa14c4e9c93ed73f9ea97b343dd66d  libgo/go/cmd/internal/sys/supported.go
! 45da7548f68cc719efe19ce4c28022cc  libgo/go/cmd/internal/sys/supported_test.go
! 7afb792f013a046717a67872e05c7ff2  libgo/go/cmd/internal/test2json/test2json.go
  c578afa830020b698532bad3e68e3207  libgo/go/cmd/internal/test2json/test2json_test.go
  a97b278a09fba3081091218371290ecf  libgo/go/cmd/internal/test2json/testdata/ascii.json
  1c175713541ed5815e6fc54fe1755112  libgo/go/cmd/internal/test2json/testdata/ascii.test
*************** b6b9eabcdadb15e13a2fe23b56534c1b  libgo/
*** 83462,83480 ****
  d89a521991318bf9165a477b4646e716  libgo/go/cmd/internal/test2json/testdata/bench.test
  b86284691ca44f56b868509ec579029e  libgo/go/cmd/internal/test2json/testdata/benchfail.json
  cf3d2aa7231cc378aa9afd9594c42549  libgo/go/cmd/internal/test2json/testdata/benchfail.test
! 34dce98cbd9739a740d1b4eb8d790018  libgo/go/cmd/internal/test2json/testdata/benchshort.json
  f786f10f4b5e8c422acc5f9d3fb9ff4e  libgo/go/cmd/internal/test2json/testdata/benchshort.test
  df1f10645adfdaebffef273184b01126  libgo/go/cmd/internal/test2json/testdata/issue23036.json
  c80442d73970e48153ce5f5e654b2179  libgo/go/cmd/internal/test2json/testdata/issue23036.test
  2cd90e8922eb27cfa61bfc13db1b0349  libgo/go/cmd/internal/test2json/testdata/issue23920.json
  25b48ee3b6e32cb6ec529aff2166cfb8  libgo/go/cmd/internal/test2json/testdata/issue23920.test
! 3805f9f74b9b09fbdb2c8f5ffdf0260c  libgo/go/cmd/internal/test2json/testdata/smiley.json
! 0356d475ad93acd0b8c1f11f572321be  libgo/go/cmd/internal/test2json/testdata/smiley.test
  7c6bb6c010a117765c60f0842ba81ce8  libgo/go/cmd/internal/test2json/testdata/unicode.json
  83f40559c1c41931ab89fc25ff03a043  libgo/go/cmd/internal/test2json/testdata/unicode.test
! 3f4aabe867e04f2d4b36cd363ca0b3b4  libgo/go/cmd/internal/test2json/testdata/vet.json
! 73cdba538cd7004bdd40ac625faf19ac  libgo/go/cmd/internal/test2json/testdata/vet.test
! 0d570ba0930380a65bce7878241e1777  libgo/go/cmd/test2json/main.go
  9eb6700aaba7ff06c6c4f36cfc3264b5  libgo/go/cmd/vet/README
  83154946bc8a0bc2471141f63bb0b4ad  libgo/go/cmd/vet/all/whitelist/386.txt
  6fe07891533d300561868ae1b09304e5  libgo/go/cmd/vet/all/whitelist/all.txt
--- 89331,89357 ----
  d89a521991318bf9165a477b4646e716  libgo/go/cmd/internal/test2json/testdata/bench.test
  b86284691ca44f56b868509ec579029e  libgo/go/cmd/internal/test2json/testdata/benchfail.json
  cf3d2aa7231cc378aa9afd9594c42549  libgo/go/cmd/internal/test2json/testdata/benchfail.test
! 039943634139150358669a12be0621d4  libgo/go/cmd/internal/test2json/testdata/benchshort.json
  f786f10f4b5e8c422acc5f9d3fb9ff4e  libgo/go/cmd/internal/test2json/testdata/benchshort.test
+ d41d8cd98f00b204e9800998ecf8427e  libgo/go/cmd/internal/test2json/testdata/empty.json
+ d41d8cd98f00b204e9800998ecf8427e  libgo/go/cmd/internal/test2json/testdata/empty.test
  df1f10645adfdaebffef273184b01126  libgo/go/cmd/internal/test2json/testdata/issue23036.json
  c80442d73970e48153ce5f5e654b2179  libgo/go/cmd/internal/test2json/testdata/issue23036.test
  2cd90e8922eb27cfa61bfc13db1b0349  libgo/go/cmd/internal/test2json/testdata/issue23920.json
  25b48ee3b6e32cb6ec529aff2166cfb8  libgo/go/cmd/internal/test2json/testdata/issue23920.test
! 709ab54f4b1c6dc2f4ec0977a45675d3  libgo/go/cmd/internal/test2json/testdata/issue29755.json
! 3178b237422043215260f2eb05793a0a  libgo/go/cmd/internal/test2json/testdata/issue29755.test
! 5167461aa7496a38027e48b5553216c7  libgo/go/cmd/internal/test2json/testdata/panic.json
! f2e87346883cf446ff4b4dbf01d1e1f3  libgo/go/cmd/internal/test2json/testdata/panic.test
! 9f9665ad5722c57c2679612c685847b6  libgo/go/cmd/internal/test2json/testdata/smiley.json
! 5a52e962c5c2f8af6ba6f90a18f52546  libgo/go/cmd/internal/test2json/testdata/smiley.test
  7c6bb6c010a117765c60f0842ba81ce8  libgo/go/cmd/internal/test2json/testdata/unicode.json
  83f40559c1c41931ab89fc25ff03a043  libgo/go/cmd/internal/test2json/testdata/unicode.test
! a838cffe1146a435fd229a8da41e0398  libgo/go/cmd/internal/test2json/testdata/vet.json
! 3041c34ce5450be85b8b727c861740f4  libgo/go/cmd/internal/test2json/testdata/vet.test
! f8a7b8e336bef9c3f9346c65ea1fcebe  libgo/go/cmd/internal/traceviewer/format.go
! 7a847f6b9210a6dd47813d3f0ad853b5  libgo/go/cmd/test2json/main.go
! 99cd841732ede8196819812792599523  libgo/go/cmd/vendor/modules.txt
  9eb6700aaba7ff06c6c4f36cfc3264b5  libgo/go/cmd/vet/README
  83154946bc8a0bc2471141f63bb0b4ad  libgo/go/cmd/vet/all/whitelist/386.txt
  6fe07891533d300561868ae1b09304e5  libgo/go/cmd/vet/all/whitelist/all.txt
*************** ad06276384ebc339e1931751e52b24ce  libgo/
*** 83523,83529 ****
  c7299a0bef92dc930694803a9b6caac2  libgo/go/cmd/vet/all/whitelist/windows_386.txt
  e4376cd78f4a0716559be206efa306cd  libgo/go/cmd/vet/all/whitelist/windows_amd64.txt
  3657e2e505c3f9ea30cccd04e8419e45  libgo/go/cmd/vet/doc.go
! 7807839aab6b16129dc0ad824e2440cb  libgo/go/cmd/vet/main.go
  f67b623e7891147d66281c5edcf9df04  libgo/go/cmd/vet/testdata/asm/asm.go
  0affe621c3c9823cd60dc639f6a2f5ff  libgo/go/cmd/vet/testdata/asm/asm1.s
  95441c9c85d5c9fa58b5ce76ce021a1f  libgo/go/cmd/vet/testdata/assign/assign.go
--- 89400,89406 ----
  c7299a0bef92dc930694803a9b6caac2  libgo/go/cmd/vet/all/whitelist/windows_386.txt
  e4376cd78f4a0716559be206efa306cd  libgo/go/cmd/vet/all/whitelist/windows_amd64.txt
  3657e2e505c3f9ea30cccd04e8419e45  libgo/go/cmd/vet/doc.go
! 2879c36bbbaf203b0d5714014ddbd438  libgo/go/cmd/vet/main.go
  f67b623e7891147d66281c5edcf9df04  libgo/go/cmd/vet/testdata/asm/asm.go
  0affe621c3c9823cd60dc639f6a2f5ff  libgo/go/cmd/vet/testdata/asm/asm1.s
  95441c9c85d5c9fa58b5ce76ce021a1f  libgo/go/cmd/vet/testdata/assign/assign.go
*************** d58e19e25a718b8e6db842b34a21e317  libgo/
*** 83549,83558 ****
  642940b3835851d8e6073e9147db0967  libgo/go/cmd/vet/testdata/unmarshal/unmarshal.go
  80a5eb01bb3d4db9bc8a29d11a863407  libgo/go/cmd/vet/testdata/unsafeptr/unsafeptr.go
  442eef42da63fb6a83ff18b45d8a77d5  libgo/go/cmd/vet/testdata/unused/unused.go
! 0c6affdc0fa7f8d1c06661090bdfedcf  libgo/go/cmd/vet/vet_test.go
  2751bc45c7c671452400b155c492052f  libgo/go/compress/bzip2/bit_reader.go
! a3f2fe40d8ad47db31a3316e6bad9a28  libgo/go/compress/bzip2/bzip2.go
! bcb03c94046ffe9a3acad30b2c65e29a  libgo/go/compress/bzip2/bzip2_test.go
  a40e0907178d700813bcc25e21ce34cb  libgo/go/compress/bzip2/huffman.go
  22e3daca4fc3cc00dade3db05ef0b000  libgo/go/compress/bzip2/move_to_front.go
  d41d8cd98f00b204e9800998ecf8427e  libgo/go/compress/bzip2/testdata/Isaac.Newton-Opticks.txt.bz2
--- 89426,89435 ----
  642940b3835851d8e6073e9147db0967  libgo/go/cmd/vet/testdata/unmarshal/unmarshal.go
  80a5eb01bb3d4db9bc8a29d11a863407  libgo/go/cmd/vet/testdata/unsafeptr/unsafeptr.go
  442eef42da63fb6a83ff18b45d8a77d5  libgo/go/cmd/vet/testdata/unused/unused.go
! 4bd47fe76e34cb5c9f6ae2cd6887bdcd  libgo/go/cmd/vet/vet_test.go
  2751bc45c7c671452400b155c492052f  libgo/go/compress/bzip2/bit_reader.go
! c8162aa3dec1f1a009d304bc45ae66a7  libgo/go/compress/bzip2/bzip2.go
! 2c3a6f12153da015c06880726247b3d9  libgo/go/compress/bzip2/bzip2_test.go
  a40e0907178d700813bcc25e21ce34cb  libgo/go/compress/bzip2/huffman.go
  22e3daca4fc3cc00dade3db05ef0b000  libgo/go/compress/bzip2/move_to_front.go
  d41d8cd98f00b204e9800998ecf8427e  libgo/go/compress/bzip2/testdata/Isaac.Newton-Opticks.txt.bz2
*************** a6454f25a97c69af84b8d1e7d1589f27  libgo/
*** 83566,83583 ****
  d85623dd5a4e51705ac4c05888b530fd  libgo/go/compress/bzip2/testdata/pass-sawtooth.bz2
  a0cc6a927f799b6e836fb47a0cfca4c7  libgo/go/compress/bzip2/testdata/random.data.bz2
  382aca9a26feadb7b1cf5224899b748d  libgo/go/compress/flate/deflate.go
! e1d5567802111f9e1788dd3c6f3c97a1  libgo/go/compress/flate/deflate_test.go
! 9a9acb3dfb3a87a0f4b46a72a289635c  libgo/go/compress/flate/deflatefast.go
! a798b1916cad0d7db359d6ad21265bc8  libgo/go/compress/flate/dict_decoder.go
  5d5be0409eea1ea8062b40daa04ea7ed  libgo/go/compress/flate/dict_decoder_test.go
  4ec634d2d33e0096a254d06608f2a63a  libgo/go/compress/flate/example_test.go
! c0c5c25be332d4257ae3e537f6a934f5  libgo/go/compress/flate/flate_test.go
! 373a8662f81e3a08d33e9f9e456390da  libgo/go/compress/flate/huffman_bit_writer.go
! aca2822401ac3bc3ce991859fc90670b  libgo/go/compress/flate/huffman_bit_writer_test.go
  4e7b9c037bab4ba28700e2b46b60a50b  libgo/go/compress/flate/huffman_code.go
  fc62dde529c6cd1362d2e18c166c9e18  libgo/go/compress/flate/inflate.go
! 682d383deb5d16067de8e3a30eb81beb  libgo/go/compress/flate/inflate_test.go
! 5b60648048a6598e08898a0d62c38eb8  libgo/go/compress/flate/reader_test.go
  a2c87e985b24115b85a59cb86a2ff148  libgo/go/compress/flate/testdata/Isaac.Newton-Opticks.txt
  f6f6f5ec1bcf65517d8a90788c4e2460  libgo/go/compress/flate/testdata/huffman-null-max.dyn.expect
  f6f6f5ec1bcf65517d8a90788c4e2460  libgo/go/compress/flate/testdata/huffman-null-max.dyn.expect-noinput
--- 89443,89460 ----
  d85623dd5a4e51705ac4c05888b530fd  libgo/go/compress/bzip2/testdata/pass-sawtooth.bz2
  a0cc6a927f799b6e836fb47a0cfca4c7  libgo/go/compress/bzip2/testdata/random.data.bz2
  382aca9a26feadb7b1cf5224899b748d  libgo/go/compress/flate/deflate.go
! 25dfe8874c04e06bc9eb699c905b04d3  libgo/go/compress/flate/deflate_test.go
! f7ab427d4f814dddc958303e79051450  libgo/go/compress/flate/deflatefast.go
! ec287809918a1c8b9f7c084a45278107  libgo/go/compress/flate/dict_decoder.go
  5d5be0409eea1ea8062b40daa04ea7ed  libgo/go/compress/flate/dict_decoder_test.go
  4ec634d2d33e0096a254d06608f2a63a  libgo/go/compress/flate/example_test.go
! 1c0e23ced77acbde55d117da6777b45c  libgo/go/compress/flate/flate_test.go
! a56873b85bc39b12561b4e16468ff9c6  libgo/go/compress/flate/huffman_bit_writer.go
! 47382ac1865736aa152592fedaf64ef2  libgo/go/compress/flate/huffman_bit_writer_test.go
  4e7b9c037bab4ba28700e2b46b60a50b  libgo/go/compress/flate/huffman_code.go
  fc62dde529c6cd1362d2e18c166c9e18  libgo/go/compress/flate/inflate.go
! 04904bd2d2cde97ecc6180037a662579  libgo/go/compress/flate/inflate_test.go
! bbab974cbdd720c81eb337c8788ef281  libgo/go/compress/flate/reader_test.go
  a2c87e985b24115b85a59cb86a2ff148  libgo/go/compress/flate/testdata/Isaac.Newton-Opticks.txt
  f6f6f5ec1bcf65517d8a90788c4e2460  libgo/go/compress/flate/testdata/huffman-null-max.dyn.expect
  f6f6f5ec1bcf65517d8a90788c4e2460  libgo/go/compress/flate/testdata/huffman-null-max.dyn.expect-noinput
*************** bc1906600d9696359786593b02e64d5b  libgo/
*** 83632,83669 ****
  0d471c82e5d2f5a5f804ad92b31e85ed  libgo/go/compress/flate/testdata/null-long-match.dyn.expect-noinput
  0d471c82e5d2f5a5f804ad92b31e85ed  libgo/go/compress/flate/testdata/null-long-match.wb.expect-noinput
  e29770657936ab1baf47d457b55381ba  libgo/go/compress/flate/token.go
! d09aa5beb07e40bdd3ca2eea8aa2a379  libgo/go/compress/flate/writer_test.go
  3381281d2e0c4003f6978263a4e85f2c  libgo/go/compress/gzip/example_test.go
  cfa21fcae5a163a28e436fe5f3cb7c6b  libgo/go/compress/gzip/gunzip.go
! 6fc9dd0260fb7b08dfe81e28684eeba9  libgo/go/compress/gzip/gunzip_test.go
  8c77742d812beae9475227ca05ee2290  libgo/go/compress/gzip/gzip.go
! e8a80a861bc092ea7f62d17aad135c82  libgo/go/compress/gzip/gzip_test.go
! 9e322f0fc16a0428ca6b3f5e6909ad11  libgo/go/compress/gzip/issue14937_test.go
  0dffcd9f3c345d4ba3c76ba82fb5f4d5  libgo/go/compress/gzip/testdata/issue6550.gz.base64
  5d03990646fcbee43a71a0184469cb42  libgo/go/compress/lzw/reader.go
! abb3f5cff8ae8a9463dd90d883708caa  libgo/go/compress/lzw/reader_test.go
  23f13d3d7299a89acadc774db245f2fb  libgo/go/compress/lzw/writer.go
! 69e09f5cf0bb31a15d8e83d6adc93e07  libgo/go/compress/lzw/writer_test.go
  575248786771823e57062a2b899ad710  libgo/go/compress/testdata/e.txt
  7ac25dac43eb18c14e69528e017cf079  libgo/go/compress/testdata/gettysburg.txt
  e654f83f0131cd51b41eebac2949f005  libgo/go/compress/testdata/pi.txt
  77ed90b5258477e86be08ddc0d9e1e9b  libgo/go/compress/zlib/reader.go
  2a7898eb21a29a8ca61904114880debb  libgo/go/compress/zlib/reader_test.go
  ae3c1bf9fe049e9563e1e2d78a929d48  libgo/go/compress/zlib/writer.go
! a86e4036a41bd0e9d3ad17cec6ef8bc9  libgo/go/compress/zlib/writer_test.go
  56dc7884aab1fb41a91a8cfcd1ef235c  libgo/go/container/heap/heap.go
  3442cea2ff783d4c4e1a941aaf0e58b4  libgo/go/container/heap/heap_test.go
! febbe53d5f54b67e4e86fa8ddda9115c  libgo/go/container/list/list.go
  7cb4aca0766678d1d5ccf4d04908ce45  libgo/go/container/list/list_test.go
  7d91d123d2b51105c8904031531704f7  libgo/go/container/ring/example_test.go
  04f808f97d2480ea07eb40b3a54bf51b  libgo/go/container/ring/ring.go
  16f6189a98042add423d1e11cb050900  libgo/go/container/ring/ring_test.go
  d768e501b478241fda6eba25c889e1f2  libgo/go/context/benchmark_test.go
! 03150e910be0126caf961039440763e7  libgo/go/context/context.go
! 72508f16420754825da780cce1af138f  libgo/go/context/context_test.go
! d2bc73f423338ccbf9e6faad0aaa2d64  libgo/go/context/example_test.go
  6292e417f26ba5bb4a6dc5cbd34f2635  libgo/go/context/net_test.go
! 764851ce64a06acb2990c2e61928ecb9  libgo/go/context/x_test.go
  590927177ab19da6e4ac9adf84c602fe  libgo/go/crypto/aes/aes_gcm.go
  9186a301659a85c1dd290f3ec7aaf4f7  libgo/go/crypto/aes/aes_test.go
  52bc400d4ddc5195f9eba3ea93646be5  libgo/go/crypto/aes/block.go
--- 89509,89546 ----
  0d471c82e5d2f5a5f804ad92b31e85ed  libgo/go/compress/flate/testdata/null-long-match.dyn.expect-noinput
  0d471c82e5d2f5a5f804ad92b31e85ed  libgo/go/compress/flate/testdata/null-long-match.wb.expect-noinput
  e29770657936ab1baf47d457b55381ba  libgo/go/compress/flate/token.go
! 4b58658416943bcc6c201084be76b4da  libgo/go/compress/flate/writer_test.go
  3381281d2e0c4003f6978263a4e85f2c  libgo/go/compress/gzip/example_test.go
  cfa21fcae5a163a28e436fe5f3cb7c6b  libgo/go/compress/gzip/gunzip.go
! 30af9a6b33e62c80a8538f6eaa7584b8  libgo/go/compress/gzip/gunzip_test.go
  8c77742d812beae9475227ca05ee2290  libgo/go/compress/gzip/gzip.go
! e9049f253d4b368d839c763010677e2f  libgo/go/compress/gzip/gzip_test.go
! cabe5a922c11d5341edbc0350c2bb334  libgo/go/compress/gzip/issue14937_test.go
  0dffcd9f3c345d4ba3c76ba82fb5f4d5  libgo/go/compress/gzip/testdata/issue6550.gz.base64
  5d03990646fcbee43a71a0184469cb42  libgo/go/compress/lzw/reader.go
! 8a86351beed7e0e8d7c316d3e4435052  libgo/go/compress/lzw/reader_test.go
  23f13d3d7299a89acadc774db245f2fb  libgo/go/compress/lzw/writer.go
! b975156ef954a72aa7d76ac790a6a466  libgo/go/compress/lzw/writer_test.go
  575248786771823e57062a2b899ad710  libgo/go/compress/testdata/e.txt
  7ac25dac43eb18c14e69528e017cf079  libgo/go/compress/testdata/gettysburg.txt
  e654f83f0131cd51b41eebac2949f005  libgo/go/compress/testdata/pi.txt
  77ed90b5258477e86be08ddc0d9e1e9b  libgo/go/compress/zlib/reader.go
  2a7898eb21a29a8ca61904114880debb  libgo/go/compress/zlib/reader_test.go
  ae3c1bf9fe049e9563e1e2d78a929d48  libgo/go/compress/zlib/writer.go
! 0aabd0dbca363692d49cb8444bbe40e1  libgo/go/compress/zlib/writer_test.go
  56dc7884aab1fb41a91a8cfcd1ef235c  libgo/go/container/heap/heap.go
  3442cea2ff783d4c4e1a941aaf0e58b4  libgo/go/container/heap/heap_test.go
! 7e6ebf6a05aa8fdd501026fc440b5f80  libgo/go/container/list/list.go
  7cb4aca0766678d1d5ccf4d04908ce45  libgo/go/container/list/list_test.go
  7d91d123d2b51105c8904031531704f7  libgo/go/container/ring/example_test.go
  04f808f97d2480ea07eb40b3a54bf51b  libgo/go/container/ring/ring.go
  16f6189a98042add423d1e11cb050900  libgo/go/container/ring/ring_test.go
  d768e501b478241fda6eba25c889e1f2  libgo/go/context/benchmark_test.go
! a7ff7766f77fe173c5255bcc8fe84c6e  libgo/go/context/context.go
! dbe3aa773447511570b26028bf948bcb  libgo/go/context/context_test.go
! 30bbdde1d795ea395dd8ea2e8d86d46c  libgo/go/context/example_test.go
  6292e417f26ba5bb4a6dc5cbd34f2635  libgo/go/context/net_test.go
! 027d92fdcb4aed934e53ee1041d6e486  libgo/go/context/x_test.go
  590927177ab19da6e4ac9adf84c602fe  libgo/go/crypto/aes/aes_gcm.go
  9186a301659a85c1dd290f3ec7aaf4f7  libgo/go/crypto/aes/aes_test.go
  52bc400d4ddc5195f9eba3ea93646be5  libgo/go/crypto/aes/block.go
*************** ed80fb436d52d58edc59c787f0cb29a8  libgo/
*** 83698,83747 ****
  77f940f1c6de211c8043f5e2877635ff  libgo/go/crypto/cipher/ofb.go
  4d22c5a31ed3d5a3827c3c74a203d991  libgo/go/crypto/cipher/ofb_test.go
  e21ed3e4b39e2d1323eca20687c30a7c  libgo/go/crypto/cipher/xor_amd64.go
! 575770b83ca2753a59d88506eaa908cd  libgo/go/crypto/cipher/xor_generic.go
  93942117cdc4add1e26f144dfad48ccf  libgo/go/crypto/cipher/xor_ppc64x.go
  46e3dba7c3b2c14da77f1ee17298f12e  libgo/go/crypto/cipher/xor_test.go
! b1c2a583020acc4dfe7580dfe4ff46fb  libgo/go/crypto/crypto.go
! 3c96f3145563db73e829e0d808c4621d  libgo/go/crypto/des/block.go
  20cc7cd917ce51716b99383088e00040  libgo/go/crypto/des/cipher.go
  d906bcfd596bbd97b0c5ef8207a0e28d  libgo/go/crypto/des/const.go
  cb096af6cecb093d35c299cf7ae9c236  libgo/go/crypto/des/des_test.go
! 207ffc7b62d27fd39df4688dddbf4859  libgo/go/crypto/dsa/dsa.go
  5cffeec14876235caecf7bbeb78d03dc  libgo/go/crypto/dsa/dsa_test.go
! c2942c044884767fb932f0dc7310fc19  libgo/go/crypto/ecdsa/ecdsa.go
! a5afafd027154a8d69b21df2e68387c7  libgo/go/crypto/ecdsa/ecdsa_test.go
! f30fcd1f9d7cf1d293f46d6688d670fd  libgo/go/crypto/ecdsa/example_test.go
  0029cd1da64f60898b152b066ced6605  libgo/go/crypto/ecdsa/testdata/SigVer.rsp.bz2
! 09c12752c1d84c2686331b84804c54dc  libgo/go/crypto/ed25519/ed25519.go
! fe8250a2ed7226cf10865c1560e70d7d  libgo/go/crypto/ed25519/ed25519_test.go
  7d7d579cae9aa68ee288df719b2be675  libgo/go/crypto/ed25519/internal/edwards25519/const.go
! 7351f56555c0f74406c03baa8b2bb44e  libgo/go/crypto/ed25519/internal/edwards25519/edwards25519.go
  a9b19ad79ebc3c5ae2eadacf03a7b4d7  libgo/go/crypto/ed25519/testdata/sign.input.gz
! 37d6c022e3a8d8d80cafa06f9016f7a8  libgo/go/crypto/elliptic/elliptic.go
! efcf3b0b90ceca4770fa2b2fbb5def61  libgo/go/crypto/elliptic/elliptic_test.go
  24e3815812637e2939b2d19b5c00b779  libgo/go/crypto/elliptic/fuzz_test.go
! 4c76be5ef590f2ca3178dc34b4cbd853  libgo/go/crypto/elliptic/p224.go
! dc67e4ed0c45d557134ef9df1bc21811  libgo/go/crypto/elliptic/p224_test.go
  000bcf9bb2173282c1606bd0272ccd93  libgo/go/crypto/elliptic/p256.go
  e1cbb9bf22b8a11a1d017ebce22c6c32  libgo/go/crypto/elliptic/p256_asm.go
  057533cbf435b0018497b0efebd22fae  libgo/go/crypto/elliptic/p256_generic.go
  08d199c8bee01940a667eb5284ea3819  libgo/go/crypto/elliptic/p256_ppc64le.go
  316a8a71732aa6b5bdbb6eb12ef647f3  libgo/go/crypto/elliptic/p256_s390x.go
! b25d9e1d601799080138f4922826921c  libgo/go/crypto/hmac/hmac.go
! e436442d00bbedf26b0ac9dcc651ed0d  libgo/go/crypto/hmac/hmac_test.go
  40b515143722f2248d7e52d256a97006  libgo/go/crypto/internal/randutil/randutil.go
  750f1a2bb19bf76301183ef399378571  libgo/go/crypto/internal/subtle/aliasing.go
  837be21833bdd2636b29898f31b9ef71  libgo/go/crypto/internal/subtle/aliasing_appengine.go
  e44f4d4a74bff971d55f1b6251f9042f  libgo/go/crypto/internal/subtle/aliasing_test.go
  669523c34b97d66daa84c79e43853b86  libgo/go/crypto/issue21104_test.go
! ebc0d2d2ef9f621d567c9f14aa1f240b  libgo/go/crypto/md5/gen.go
  77482dca8a16b8ed34ff0bbb0a814bae  libgo/go/crypto/md5/md5.go
  58f89aac1586e1a14d02e930e9fc1ba9  libgo/go/crypto/md5/md5_test.go
  100f84449d4cb967137ba4e030741c19  libgo/go/crypto/md5/md5block.go
  968fd9882cfe28c759541ba88d214776  libgo/go/crypto/md5/md5block_decl.go
  b7c1e3948e6b96dc8ef794ee411a07c3  libgo/go/crypto/md5/md5block_generic.go
! 9a25950ae22d42cd133fb3ca4ca1091b  libgo/go/crypto/rand/eagain.go
! 5c6e5327de8c8ce9b359987acacafbb6  libgo/go/crypto/rand/rand.go
  c6ec91bcf16b412cfb637c18cfb68ace  libgo/go/crypto/rand/rand_batched.go
  655ad0c2849557ce31036c60948fe7b3  libgo/go/crypto/rand/rand_batched_test.go
  54c4c1fef2097f42406db46f45c99490  libgo/go/crypto/rand/rand_freebsd.go
--- 89575,89629 ----
  77f940f1c6de211c8043f5e2877635ff  libgo/go/crypto/cipher/ofb.go
  4d22c5a31ed3d5a3827c3c74a203d991  libgo/go/crypto/cipher/ofb_test.go
  e21ed3e4b39e2d1323eca20687c30a7c  libgo/go/crypto/cipher/xor_amd64.go
! 9d4b3db6ed2b0126799140b0b4bffd99  libgo/go/crypto/cipher/xor_arm64.go
! 59f2775fd3dfdac1b4f76e47f8d8c2ad  libgo/go/crypto/cipher/xor_generic.go
  93942117cdc4add1e26f144dfad48ccf  libgo/go/crypto/cipher/xor_ppc64x.go
  46e3dba7c3b2c14da77f1ee17298f12e  libgo/go/crypto/cipher/xor_test.go
! 0a2b318a2fec0ff0f9b5aecf344cbfd8  libgo/go/crypto/crypto.go
! 2ad96a9cd5b4541d77b0adfb0aede027  libgo/go/crypto/des/block.go
  20cc7cd917ce51716b99383088e00040  libgo/go/crypto/des/cipher.go
  d906bcfd596bbd97b0c5ef8207a0e28d  libgo/go/crypto/des/const.go
  cb096af6cecb093d35c299cf7ae9c236  libgo/go/crypto/des/des_test.go
! dd825a66e55a1427b4cac8a1aa33c055  libgo/go/crypto/dsa/dsa.go
  5cffeec14876235caecf7bbeb78d03dc  libgo/go/crypto/dsa/dsa_test.go
! f7e0ec192f4dbcb2152b1d18deefc1d8  libgo/go/crypto/ecdsa/ecdsa.go
! 3214729a52bb0a2270a96a294f91d136  libgo/go/crypto/ecdsa/ecdsa_noasm.go
! c41321b8a43e741d665d614ebd8f07b8  libgo/go/crypto/ecdsa/ecdsa_s390x.go
! 232ae867be298185b967f7d7969832ad  libgo/go/crypto/ecdsa/ecdsa_s390x_test.go
! bbfe2ed8cf2022ab28b800d07d782646  libgo/go/crypto/ecdsa/ecdsa_test.go
! 398cde569b0ddbf96b8611c9d618f71b  libgo/go/crypto/ecdsa/equal_test.go
! 0f9f31975a844f6b570e4d3baa1a5f7a  libgo/go/crypto/ecdsa/example_test.go
  0029cd1da64f60898b152b066ced6605  libgo/go/crypto/ecdsa/testdata/SigVer.rsp.bz2
! 4eb1b4b732695b6c021c084e1c32327e  libgo/go/crypto/ed25519/ed25519.go
! 7dce67a379a8f188d5bc7371856a5c73  libgo/go/crypto/ed25519/ed25519_test.go
  7d7d579cae9aa68ee288df719b2be675  libgo/go/crypto/ed25519/internal/edwards25519/const.go
! 7243ca323f4dfa1dc73bb44f31473d6a  libgo/go/crypto/ed25519/internal/edwards25519/edwards25519.go
  a9b19ad79ebc3c5ae2eadacf03a7b4d7  libgo/go/crypto/ed25519/testdata/sign.input.gz
! 067211884b0f7fc0da43cbbc229b71d6  libgo/go/crypto/elliptic/elliptic.go
! 1acae09eb65247f2df7ee64f459dca95  libgo/go/crypto/elliptic/elliptic_test.go
  24e3815812637e2939b2d19b5c00b779  libgo/go/crypto/elliptic/fuzz_test.go
! 82344ad6bc49868d9ae403f2d181a1db  libgo/go/crypto/elliptic/p224.go
! 264b9b1a9cdc576bb03babdbe852a08b  libgo/go/crypto/elliptic/p224_test.go
  000bcf9bb2173282c1606bd0272ccd93  libgo/go/crypto/elliptic/p256.go
  e1cbb9bf22b8a11a1d017ebce22c6c32  libgo/go/crypto/elliptic/p256_asm.go
  057533cbf435b0018497b0efebd22fae  libgo/go/crypto/elliptic/p256_generic.go
  08d199c8bee01940a667eb5284ea3819  libgo/go/crypto/elliptic/p256_ppc64le.go
  316a8a71732aa6b5bdbb6eb12ef647f3  libgo/go/crypto/elliptic/p256_s390x.go
! 888b765e4c780f2a661d41b15f5173d5  libgo/go/crypto/hmac/hmac.go
! 8b7aa0a161c1d32d046639b00ad3a9d8  libgo/go/crypto/hmac/hmac_test.go
  40b515143722f2248d7e52d256a97006  libgo/go/crypto/internal/randutil/randutil.go
  750f1a2bb19bf76301183ef399378571  libgo/go/crypto/internal/subtle/aliasing.go
  837be21833bdd2636b29898f31b9ef71  libgo/go/crypto/internal/subtle/aliasing_appengine.go
  e44f4d4a74bff971d55f1b6251f9042f  libgo/go/crypto/internal/subtle/aliasing_test.go
  669523c34b97d66daa84c79e43853b86  libgo/go/crypto/issue21104_test.go
! d69271b213176abe15638f80d7e01bd3  libgo/go/crypto/md5/gen.go
  77482dca8a16b8ed34ff0bbb0a814bae  libgo/go/crypto/md5/md5.go
  58f89aac1586e1a14d02e930e9fc1ba9  libgo/go/crypto/md5/md5_test.go
  100f84449d4cb967137ba4e030741c19  libgo/go/crypto/md5/md5block.go
  968fd9882cfe28c759541ba88d214776  libgo/go/crypto/md5/md5block_decl.go
  b7c1e3948e6b96dc8ef794ee411a07c3  libgo/go/crypto/md5/md5block_generic.go
! ef5bb5dc6a45996643b3b448fa924a2d  libgo/go/crypto/rand/eagain.go
! 391a9a2ae9e4da4b8ea87cb8788fac0a  libgo/go/crypto/rand/rand.go
  c6ec91bcf16b412cfb637c18cfb68ace  libgo/go/crypto/rand/rand_batched.go
  655ad0c2849557ce31036c60948fe7b3  libgo/go/crypto/rand/rand_batched_test.go
  54c4c1fef2097f42406db46f45c99490  libgo/go/crypto/rand/rand_freebsd.go
*************** c6ec91bcf16b412cfb637c18cfb68ace  libgo/
*** 83749,83766 ****
  54f5cab340aff2d5aca2ff32f39e0331  libgo/go/crypto/rand/rand_linux.go
  056f9af0010c1093db173851d879797c  libgo/go/crypto/rand/rand_openbsd.go
  ac766ed9ce82e6a75dec0f207442090c  libgo/go/crypto/rand/rand_test.go
! b05be22345b4c1349f0f69690760add1  libgo/go/crypto/rand/rand_unix.go
! fc68ac9b5efe930893e0fd87f1455209  libgo/go/crypto/rand/rand_windows.go
  e75d13daca9a534d8c9cd611e5ba6ffc  libgo/go/crypto/rand/util.go
  5280043695d6d553f0deca76f9c1c1a1  libgo/go/crypto/rand/util_test.go
  5484bc24b76805eaa13344610c6e3626  libgo/go/crypto/rc4/rc4.go
  d4f34b7df03a0225cf2b97a3ec2f4b32  libgo/go/crypto/rc4/rc4_test.go
! ec859e8a0415db3df648748878f1fda9  libgo/go/crypto/rsa/example_test.go
! a09f4e4810a64532495a11a00906a3af  libgo/go/crypto/rsa/pkcs1v15.go
! 688f1ea1f87e287fcfd311da9b77c7df  libgo/go/crypto/rsa/pkcs1v15_test.go
! 4964b318f863948a2719997de22b158f  libgo/go/crypto/rsa/pss.go
  4ef2e2436a726f7519f039b0c9909d73  libgo/go/crypto/rsa/pss_test.go
! 26ed3416e158799fa46f3aaafaa66d11  libgo/go/crypto/rsa/rsa.go
  b5f6d9451a7d175381c880ccfe20d86d  libgo/go/crypto/rsa/rsa_test.go
  164dcaca31277eda4b7aaeec705a46c8  libgo/go/crypto/rsa/testdata/pss-vect.txt.bz2
  886be768c52b2baa7c7ecc36a53392f6  libgo/go/crypto/sha1/fallback_test.go
--- 89631,89649 ----
  54f5cab340aff2d5aca2ff32f39e0331  libgo/go/crypto/rand/rand_linux.go
  056f9af0010c1093db173851d879797c  libgo/go/crypto/rand/rand_openbsd.go
  ac766ed9ce82e6a75dec0f207442090c  libgo/go/crypto/rand/rand_test.go
! c51b133923dc892eedae83eb9ef6a053  libgo/go/crypto/rand/rand_unix.go
! 7cf4992fa65701a4a2540f04c701edde  libgo/go/crypto/rand/rand_windows.go
  e75d13daca9a534d8c9cd611e5ba6ffc  libgo/go/crypto/rand/util.go
  5280043695d6d553f0deca76f9c1c1a1  libgo/go/crypto/rand/util_test.go
  5484bc24b76805eaa13344610c6e3626  libgo/go/crypto/rc4/rc4.go
  d4f34b7df03a0225cf2b97a3ec2f4b32  libgo/go/crypto/rc4/rc4_test.go
! c1e097bbd571c427229aed459110e1db  libgo/go/crypto/rsa/equal_test.go
! 1beb834fae7fc1fb88ccb0995e143530  libgo/go/crypto/rsa/example_test.go
! 06d63094db340ee11d1644444876692f  libgo/go/crypto/rsa/pkcs1v15.go
! 632f7da30e49c832040685897659456a  libgo/go/crypto/rsa/pkcs1v15_test.go
! aa6a91b7d20ebdfa4e4461bd6442ab91  libgo/go/crypto/rsa/pss.go
  4ef2e2436a726f7519f039b0c9909d73  libgo/go/crypto/rsa/pss_test.go
! c464c46171d124053a4dc80cd11b2a60  libgo/go/crypto/rsa/rsa.go
  b5f6d9451a7d175381c880ccfe20d86d  libgo/go/crypto/rsa/rsa_test.go
  164dcaca31277eda4b7aaeec705a46c8  libgo/go/crypto/rsa/testdata/pss-vect.txt.bz2
  886be768c52b2baa7c7ecc36a53392f6  libgo/go/crypto/sha1/fallback_test.go
*************** af3da4ebe2fbed7fd7ecd6d7bbc503e9  libgo/
*** 83789,83820 ****
  610c117fe37cd7883af5944fb15efead  libgo/go/crypto/sha512/sha512block.go
  84648a2dea26c9969bde5a382bbac7ad  libgo/go/crypto/sha512/sha512block_amd64.go
  e86a6f534f375062e63acaad00707dad  libgo/go/crypto/sha512/sha512block_decl.go
! 4e468a00f97280d818fc07fdc538395e  libgo/go/crypto/sha512/sha512block_generic.go
  40cea3fa4bde06c8572e87fad431784d  libgo/go/crypto/sha512/sha512block_s390x.go
  7c4dfa85f6bd1558e9c4e6f0856eb776  libgo/go/crypto/subtle/constant_time.go
  24a0e131c0fe0854057b893333a9d345  libgo/go/crypto/subtle/constant_time_test.go
! 6f7db1d62887fbe73c1e65eea2002959  libgo/go/crypto/tls/alert.go
! d70491d9816cbf1fac46e4b0d4ff4dfa  libgo/go/crypto/tls/auth.go
! a14c1c4cd67a2b79c7c688935154875f  libgo/go/crypto/tls/auth_test.go
! dcbe65c56c492fd5ff4f453874e040af  libgo/go/crypto/tls/cipher_suites.go
! 59990686b2de8479899577cfb1474eeb  libgo/go/crypto/tls/common.go
! 202d274bdfec1a1aa069715a289c17fa  libgo/go/crypto/tls/conn.go
  6948a81b470020b87c20d0aa71de1bfd  libgo/go/crypto/tls/conn_test.go
! bab0c31b9fe5566a88aee782a4f3c499  libgo/go/crypto/tls/example_test.go
! 0d8abaf37f855d76006dad85e72c2c76  libgo/go/crypto/tls/generate_cert.go
! 0028fda7d80935def8b6b051c5d60f00  libgo/go/crypto/tls/handshake_client.go
! 08cca23ba83f408f1acc673d8396e47f  libgo/go/crypto/tls/handshake_client_test.go
! 32b2ccc008e32da5f773d15fae751b9e  libgo/go/crypto/tls/handshake_client_tls13.go
  abfdf6660ed14979b84023ced6bcb1ce  libgo/go/crypto/tls/handshake_messages.go
! 6cdf032f4196f66ba10c8dc3c08fc77e  libgo/go/crypto/tls/handshake_messages_test.go
! 57449a39e0058010c2758846ef7a708f  libgo/go/crypto/tls/handshake_server.go
! 2c126d9ba1ae27432ad20adc31a0ad5f  libgo/go/crypto/tls/handshake_server_test.go
! ac4e0fbf0f80b330d8524834075d1741  libgo/go/crypto/tls/handshake_server_tls13.go
! dd2daaa9a605a192605e11e71d10277c  libgo/go/crypto/tls/handshake_test.go
  a105030d37b852be09c79ab64711c30c  libgo/go/crypto/tls/handshake_unix_test.go
! 75a26832540951d4ad8e479eec6914f2  libgo/go/crypto/tls/key_agreement.go
! 00ffb49f5f914fdda1fb9e9928c413d5  libgo/go/crypto/tls/key_schedule.go
  b98cc62e868e434daafbce170d3d29d4  libgo/go/crypto/tls/key_schedule_test.go
  a498585344ed13cdf9b6422f4d91a1eb  libgo/go/crypto/tls/prf.go
  f83a9bcb2792661f0a2508c44f3f1c3f  libgo/go/crypto/tls/prf_test.go
  b8c0d2aebd6ba06d54bb267af6994da8  libgo/go/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-ECDSA
--- 89672,89705 ----
  610c117fe37cd7883af5944fb15efead  libgo/go/crypto/sha512/sha512block.go
  84648a2dea26c9969bde5a382bbac7ad  libgo/go/crypto/sha512/sha512block_amd64.go
  e86a6f534f375062e63acaad00707dad  libgo/go/crypto/sha512/sha512block_decl.go
! 038d3674424f0dd5d7a585171588b58a  libgo/go/crypto/sha512/sha512block_generic.go
  40cea3fa4bde06c8572e87fad431784d  libgo/go/crypto/sha512/sha512block_s390x.go
  7c4dfa85f6bd1558e9c4e6f0856eb776  libgo/go/crypto/subtle/constant_time.go
  24a0e131c0fe0854057b893333a9d345  libgo/go/crypto/subtle/constant_time_test.go
! ffb037cc0f610f1a0bf525c58563c3bb  libgo/go/crypto/tls/alert.go
! 25e84204a83692c6e404e9681d45b7cb  libgo/go/crypto/tls/auth.go
! 02915594a831b3476e65c122d3cf173a  libgo/go/crypto/tls/auth_test.go
! d5cf8140c11b51c979651fba81912766  libgo/go/crypto/tls/cipher_suites.go
! 0be0bf165dd0d0fb5ee39705f080ed79  libgo/go/crypto/tls/common.go
! f5d22c7d084a2cb43d32a9ccbd4bd4ee  libgo/go/crypto/tls/common_string.go
! 69e3f9b47b1cd89ff491601fefa8991f  libgo/go/crypto/tls/conn.go
  6948a81b470020b87c20d0aa71de1bfd  libgo/go/crypto/tls/conn_test.go
! 1e4c9666f505813e54ed2b3d4056d2f8  libgo/go/crypto/tls/example_test.go
! e2323c9e784e5e135871aa27ad4fc263  libgo/go/crypto/tls/generate_cert.go
! e92e8806811a956a9195fb2972cfdf05  libgo/go/crypto/tls/handshake_client.go
! fc81278cb93dbaf194469547fd6db099  libgo/go/crypto/tls/handshake_client_test.go
! 02e4e3049ada3475c9cf2a8013818c0d  libgo/go/crypto/tls/handshake_client_tls13.go
  abfdf6660ed14979b84023ced6bcb1ce  libgo/go/crypto/tls/handshake_messages.go
! 9458e121c070ab03cbc896ec1ba75d02  libgo/go/crypto/tls/handshake_messages_test.go
! 9cb3039fdf437490719ab7522f8f6a27  libgo/go/crypto/tls/handshake_server.go
! 1dd58618f08b1251c339c156c02c5397  libgo/go/crypto/tls/handshake_server_test.go
! 92b8814efb369f95cfb764078465d332  libgo/go/crypto/tls/handshake_server_tls13.go
! c6d1d325bc6276875d33d2945cce0f2e  libgo/go/crypto/tls/handshake_test.go
  a105030d37b852be09c79ab64711c30c  libgo/go/crypto/tls/handshake_unix_test.go
! de4d4e319b659530ccf13b712b85e7bc  libgo/go/crypto/tls/key_agreement.go
! aa7a95034a03be2806fa57040be5dc21  libgo/go/crypto/tls/key_schedule.go
  b98cc62e868e434daafbce170d3d29d4  libgo/go/crypto/tls/key_schedule_test.go
+ 1f6ce4e721cd7e630fef1020741f99fb  libgo/go/crypto/tls/link_test.go
  a498585344ed13cdf9b6422f4d91a1eb  libgo/go/crypto/tls/prf.go
  f83a9bcb2792661f0a2508c44f3f1c3f  libgo/go/crypto/tls/prf_test.go
  b8c0d2aebd6ba06d54bb267af6994da8  libgo/go/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-ECDSA
*************** be58274cfd1ec54f00569371c2958f7d  libgo/
*** 83878,84004 ****
  13bc92092741f980459efc907bbf3206  libgo/go/crypto/tls/testdata/Client-TLSv13-P256-ECDHE
  86a5e7745772c687ff14b4b4249dbad3  libgo/go/crypto/tls/testdata/Client-TLSv13-X25519-ECDHE
  8a35f9d6111362221232ee2ac91daa5c  libgo/go/crypto/tls/testdata/Server-TLSv10-ECDHE-ECDSA-AES
! cd1826ee2d50bcd5e7708ee0c4e9e189  libgo/go/crypto/tls/testdata/Server-TLSv10-ExportKeyingMaterial
  979b9a5c28b19ee9596fd6f33963eb84  libgo/go/crypto/tls/testdata/Server-TLSv10-RSA-3DES
  fadd2d0370b181146bc89aa16c62b1cc  libgo/go/crypto/tls/testdata/Server-TLSv10-RSA-AES
  4fca5f34631ee17bae6fd95e2573f5f2  libgo/go/crypto/tls/testdata/Server-TLSv10-RSA-RC4
  7d26f337261af1876f06a9d1a302bcfd  libgo/go/crypto/tls/testdata/Server-TLSv11-FallbackSCSV
  cf9907844ce26b93f3d6cb22c7098dae  libgo/go/crypto/tls/testdata/Server-TLSv11-RSA-RC4
! 99cbecb62c4dfc11dc5374def5408c0f  libgo/go/crypto/tls/testdata/Server-TLSv12-ALPN
! f494bebd8ff5e244114ef7e99e8e41ed  libgo/go/crypto/tls/testdata/Server-TLSv12-ALPN-NoMatch
  3705e63ae94c8d7e5b4d6cdc117e0b0c  libgo/go/crypto/tls/testdata/Server-TLSv12-CipherSuiteCertPreferenceECDSA
  41e6b12f748a8f356f63222231343da3  libgo/go/crypto/tls/testdata/Server-TLSv12-CipherSuiteCertPreferenceRSA
! 76154c31ed401f42757870debf3d457f  libgo/go/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndECDSAGiven
! 4839bfd8a02c081db884240c2eb4cfe2  libgo/go/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndEd25519Given
! c9bf1ab2a60b9a58646568c09c90aee9  libgo/go/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndGiven
! d909994b74717c3f622a475e87f7c034  libgo/go/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndPKCS1v15Given
! ad9b98889b4dac1003c2da81df213b84  libgo/go/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedNotGiven
  98030e80728af41a3a73f4a2e03f5180  libgo/go/crypto/tls/testdata/Server-TLSv12-ECDHE-ECDSA-AES
! f885513c16f0a1c9042a06a09cbd41cc  libgo/go/crypto/tls/testdata/Server-TLSv12-Ed25519
! 6f3233074eea8ea8ac287448c69f2f8a  libgo/go/crypto/tls/testdata/Server-TLSv12-ExportKeyingMaterial
! 0bd05b01a20ad5d5c354768f9fc35609  libgo/go/crypto/tls/testdata/Server-TLSv12-IssueTicket
! a073ba9534a926987bbd1d757f56a7f7  libgo/go/crypto/tls/testdata/Server-TLSv12-IssueTicketPreDisable
  2d7dff4f7cc0dae9c149fa927bb3afe3  libgo/go/crypto/tls/testdata/Server-TLSv12-P256
  51bb681d576dd0400d0eefb7a93c2610  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-3DES
  60a6fec52075090c2a0324883eba50da  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-AES
  2a4934a9abf18c37944a2feba0948928  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-AES-GCM
  74b7c5d0433c3594a0d1958e7ed1a48b  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-AES256-GCM-SHA384
  eb7c14ab74f58aff649eb6b16adb73a6  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-RC4
! d14cac779ab411e7864b2ef924b46a94  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-RSAPKCS1v15
! 1659ae6824a61e86e528e24a97587ff7  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-RSAPSS
! ec3e41ab83d456cb06d20744491d2fae  libgo/go/crypto/tls/testdata/Server-TLSv12-Resume
! 21569904ee8eef0fbe228304f3a89b74  libgo/go/crypto/tls/testdata/Server-TLSv12-ResumeDisabled
  2229c466f5f367750933c6d2a82acc9b  libgo/go/crypto/tls/testdata/Server-TLSv12-SNI
  ce7834bb08d8cd867d9c00ba286d01a4  libgo/go/crypto/tls/testdata/Server-TLSv12-SNI-GetCertificate
  2bdefe0b29412624aec0883d2746d6bf  libgo/go/crypto/tls/testdata/Server-TLSv12-SNI-GetCertificateNotFound
  ac747971f61e396ec1ebe11a05715800  libgo/go/crypto/tls/testdata/Server-TLSv12-X25519
  ad4bb8c8fa389088f86c8dfa7cd798e6  libgo/go/crypto/tls/testdata/Server-TLSv13-AES128-SHA256
  9d26ff8f2a3bf1834cb055fc14662e88  libgo/go/crypto/tls/testdata/Server-TLSv13-AES256-SHA384
! b74a2c8ba49ab24cb2a0635d8d95e429  libgo/go/crypto/tls/testdata/Server-TLSv13-ALPN
! ae5cb570295e4fd776641994f4f70e69  libgo/go/crypto/tls/testdata/Server-TLSv13-ALPN-NoMatch
  b892c2dcef373b878ff2d0715366110c  libgo/go/crypto/tls/testdata/Server-TLSv13-CHACHA20-SHA256
! a9fefc249bbba9c48bfff9cef4e5c46f  libgo/go/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndECDSAGiven
! 5a4f928ed4f568440ef4fba48b8753f5  libgo/go/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndEd25519Given
! 02d5af7be3a59d454e7beb101b0f3919  libgo/go/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndGiven
! e7581da3e3dafe4fc2a88fad8a091631  libgo/go/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedNotGiven
  c94c9de3ab1f7573920b5a4ae5f17507  libgo/go/crypto/tls/testdata/Server-TLSv13-ECDHE-ECDSA-AES
! 3860c31741c521dbc724ffc9cc209d0e  libgo/go/crypto/tls/testdata/Server-TLSv13-Ed25519
! a7841aa537bb4eb0574a7680ad1eaa36  libgo/go/crypto/tls/testdata/Server-TLSv13-ExportKeyingMaterial
! 2fe546d17e405c408815f2227188ead1  libgo/go/crypto/tls/testdata/Server-TLSv13-HelloRetryRequest
! 057b16a3ba667dfc5bae43bd75ccef39  libgo/go/crypto/tls/testdata/Server-TLSv13-IssueTicket
! 220152e526e332255abfc13c0ca4316a  libgo/go/crypto/tls/testdata/Server-TLSv13-IssueTicketPreDisable
! 00c0eb487bbdf5a056c222888b8ddbb9  libgo/go/crypto/tls/testdata/Server-TLSv13-P256
! 7304f8c603e25aee5c1aaf1c5c95edb3  libgo/go/crypto/tls/testdata/Server-TLSv13-RSA-RSAPSS
! 9cb129c2550bb20befe037537cbf0e25  libgo/go/crypto/tls/testdata/Server-TLSv13-RSA-RSAPSS-TooSmall
! bae3f6a38b599e492a191276d762b64b  libgo/go/crypto/tls/testdata/Server-TLSv13-Resume
! 7d9b28896418575412ed0f806a57610e  libgo/go/crypto/tls/testdata/Server-TLSv13-Resume-HelloRetryRequest
! d1f33489ba8f42089ccf53290e081b98  libgo/go/crypto/tls/testdata/Server-TLSv13-ResumeDisabled
! 164a02a7a6fb0989c44a44b92c166e44  libgo/go/crypto/tls/testdata/Server-TLSv13-X25519
  2f28864b82258ed5eaf4bbec2254a0d6  libgo/go/crypto/tls/testdata/example-cert.pem
  e2ec9bd8f6f42c104c048bb324bf00d7  libgo/go/crypto/tls/testdata/example-key.pem
! 624dff60a88de9319b5e314e8d4e9303  libgo/go/crypto/tls/ticket.go
! 63088341ede25c5390dbd99ecfbdcce8  libgo/go/crypto/tls/tls.go
! 799cb682e304aabbbe49546a1ead84f8  libgo/go/crypto/tls/tls_test.go
! f704f61627f819ea4254cb796cb6059c  libgo/go/crypto/x509/cert_pool.go
! e338bd11ef1bf2a8851975dc7cb10134  libgo/go/crypto/x509/name_constraints_test.go
! fc2b55717ce1ff08e0f486ea2ae652f1  libgo/go/crypto/x509/pem_decrypt.go
  55ba8377b99cdcb798b75e8749e49d45  libgo/go/crypto/x509/pem_decrypt_test.go
! 47088e111130e85f10a7978fb8eb6927  libgo/go/crypto/x509/pkcs1.go
! c7647305c022d530a41c568091eee472  libgo/go/crypto/x509/pkcs8.go
  61a7cff3e2916004065025a4a62666be  libgo/go/crypto/x509/pkcs8_test.go
! 681f5dfeb443451336a44d340f2bf987  libgo/go/crypto/x509/pkix/pkix.go
! 8f84b6b3f205bddb014d54b141d921bc  libgo/go/crypto/x509/root.go
! 21a97b9dfdc6ebd3752f373c8c07a8f7  libgo/go/crypto/x509/root_aix.go
! 88c5798b2d7468ea7b8aef13b2f48eaf  libgo/go/crypto/x509/root_bsd.go
! f997ea1c1027e5a2c082d675c57f8de5  libgo/go/crypto/x509/root_cgo_darwin.go
! 506d5a0d052af1c1924e69b46e488d94  libgo/go/crypto/x509/root_darwin.go
! f78f92a5d37cdf312d66e075cc381368  libgo/go/crypto/x509/root_darwin_arm_gen.go
! 25c9edb50a5e21a551dd74dfc6d91280  libgo/go/crypto/x509/root_darwin_armx.go
! c922aa217fd40a409bf56d9aeb31db55  libgo/go/crypto/x509/root_hurd.go
! 27fda5187659c90038163eb2b309f505  libgo/go/crypto/x509/root_js.go
! 3e796c98233ff7bed71ecbea8cb87e9d  libgo/go/crypto/x509/root_linux.go
! 59185e7130f20f5c1cafbf631adbc177  libgo/go/crypto/x509/root_nocgo_darwin.go
! b1f11debadd8b98f3bd3ce1672d381ff  libgo/go/crypto/x509/root_plan9.go
! cc06b79ec659b9f713f62b59de08335f  libgo/go/crypto/x509/root_solaris.go
! 3d51209881df66bcb5a4275f6b90eb1c  libgo/go/crypto/x509/root_unix.go
! 01a19f706b20e13449ca4d1c53a57d56  libgo/go/crypto/x509/root_unix_test.go
! 6456b9c5d8ec7f34509bafe032df8f1b  libgo/go/crypto/x509/root_windows.go
! 7e0022025cf8a5491bd2a74321803c89  libgo/go/crypto/x509/sec1.go
  cecdc706396bf89248a2f067b663c0cd  libgo/go/crypto/x509/sec1_test.go
  18202f8d63fb43e053de6458d55872ad  libgo/go/crypto/x509/test-file.crt
  53c378bcca2793c3fa7a4df52707eb56  libgo/go/crypto/x509/testdata/test-dir.crt
! b274ead3142df70f7225dd787035d04d  libgo/go/crypto/x509/verify.go
! dc3cabc22310621dac73dcf95073e63e  libgo/go/crypto/x509/verify_test.go
! 2b2d7a8b1d783d8faa472cd1cc81299d  libgo/go/crypto/x509/x509.go
! dd0c2825ae7c9b9446dd223300770367  libgo/go/crypto/x509/x509_test.go
  3132ca5e45245920caa072161fbe4f12  libgo/go/crypto/x509/x509_test_import.go
  b9ec55c3c325a1ee4868df47df4ced26  libgo/go/database/sql/convert.go
  6de4c96cea91ae1df63a66bfaf09832e  libgo/go/database/sql/convert_test.go
  b22b8d2d363a6eab8942852ef826d0f4  libgo/go/database/sql/ctxutil.go
! bd73af958f839e98c1ee032b2bd65ac3  libgo/go/database/sql/driver/driver.go
  c5ba0d21f265f91954430abeaf452b68  libgo/go/database/sql/driver/types.go
  1bf043969dce134c7ad69a556fb6834a  libgo/go/database/sql/driver/types_test.go
  e6321acca093a0f56c3f7d3cfc6e5f4e  libgo/go/database/sql/example_cli_test.go
  ab87746229e8a46ba621c5e16875c5cf  libgo/go/database/sql/example_service_test.go
! 0ea7e115e3a7778e75fdd9a727ede39f  libgo/go/database/sql/fakedb_test.go
! 6cb48e9d4fb282e05f51ff15c1621687  libgo/go/database/sql/sql.go
! 0c0509befdd1cb7e0a8a3460e4773253  libgo/go/database/sql/sql_test.go
  2cf5b361722255fae8e7192154b8402e  libgo/go/debug/dwarf/attr_string.go
  9174ba90e858174fe2f0669882d8e6c7  libgo/go/debug/dwarf/buf.go
  b46f4916a66938077e6031bf41dda9c6  libgo/go/debug/dwarf/class_string.go
! 0d5ca7b60d912045a23af0acd6b18f45  libgo/go/debug/dwarf/const.go
! b3acf18301dccd4b2ac459a006e55fad  libgo/go/debug/dwarf/entry.go
! ae3d45fb18ff70da2f3578b064d2bcbb  libgo/go/debug/dwarf/entry_test.go
  248287fbc820cab5a4276928ff9d7209  libgo/go/debug/dwarf/export_test.go
! 5eedf9a2ca985f69e31218de104245b4  libgo/go/debug/dwarf/line.go
! 4fe6d03c33966321f3d7ee84e17fc5c8  libgo/go/debug/dwarf/line_test.go
! 8959e221cd473ac1d00311b159f6f884  libgo/go/debug/dwarf/open.go
  3bf2f8f5466e194ea1461667c4ccc3af  libgo/go/debug/dwarf/tag_string.go
  73bc9386f8192ed75607d4bde1ce2b42  libgo/go/debug/dwarf/testdata/cppunsuptypes.cc
  e04f9c38fe56385085e6b2ebd8564154  libgo/go/debug/dwarf/testdata/cppunsuptypes.elf
  c48488233d6ad5097bba0895351ae989  libgo/go/debug/dwarf/testdata/cycle.c
  c23f993b006d7c48440e841566c9cee8  libgo/go/debug/dwarf/testdata/cycle.elf
  53be9821e20d51fc576404ee0d0cdb3b  libgo/go/debug/dwarf/testdata/line-clang.elf
  4556640fe537f2e39652e7dddf3a6d3e  libgo/go/debug/dwarf/testdata/line-gcc-win.bin
  f73405447309d114781eb0331b37ffa2  libgo/go/debug/dwarf/testdata/line-gcc.elf
  644ab0e7301af5d40837759ee9f7a23e  libgo/go/debug/dwarf/testdata/line1.c
--- 89763,89895 ----
  13bc92092741f980459efc907bbf3206  libgo/go/crypto/tls/testdata/Client-TLSv13-P256-ECDHE
  86a5e7745772c687ff14b4b4249dbad3  libgo/go/crypto/tls/testdata/Client-TLSv13-X25519-ECDHE
  8a35f9d6111362221232ee2ac91daa5c  libgo/go/crypto/tls/testdata/Server-TLSv10-ECDHE-ECDSA-AES
! e4d506412483d9d24d78eda89be2aa10  libgo/go/crypto/tls/testdata/Server-TLSv10-ExportKeyingMaterial
  979b9a5c28b19ee9596fd6f33963eb84  libgo/go/crypto/tls/testdata/Server-TLSv10-RSA-3DES
  fadd2d0370b181146bc89aa16c62b1cc  libgo/go/crypto/tls/testdata/Server-TLSv10-RSA-AES
  4fca5f34631ee17bae6fd95e2573f5f2  libgo/go/crypto/tls/testdata/Server-TLSv10-RSA-RC4
  7d26f337261af1876f06a9d1a302bcfd  libgo/go/crypto/tls/testdata/Server-TLSv11-FallbackSCSV
  cf9907844ce26b93f3d6cb22c7098dae  libgo/go/crypto/tls/testdata/Server-TLSv11-RSA-RC4
! 19e36eaf1adc5b6e10048b9bc8015557  libgo/go/crypto/tls/testdata/Server-TLSv12-ALPN
! 6a2a1b31f2ff9e3215b0da673ac92800  libgo/go/crypto/tls/testdata/Server-TLSv12-ALPN-NoMatch
  3705e63ae94c8d7e5b4d6cdc117e0b0c  libgo/go/crypto/tls/testdata/Server-TLSv12-CipherSuiteCertPreferenceECDSA
  41e6b12f748a8f356f63222231343da3  libgo/go/crypto/tls/testdata/Server-TLSv12-CipherSuiteCertPreferenceRSA
! cc7876ba528c34cfa660b4806e8d95f2  libgo/go/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndECDSAGiven
! 3591b5da1873d7db628f8d4f30c010f5  libgo/go/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndEd25519Given
! 5b3ef9ce382f8c6b9dca671ec717c335  libgo/go/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndGiven
! 36a052798ad482bcc1faacf76a8871e8  libgo/go/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndPKCS1v15Given
! 14c9bb041e3507bb52d2b449f6e07586  libgo/go/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedNotGiven
  98030e80728af41a3a73f4a2e03f5180  libgo/go/crypto/tls/testdata/Server-TLSv12-ECDHE-ECDSA-AES
! e1e0c11c4146192f6f7d2b833a6ae51f  libgo/go/crypto/tls/testdata/Server-TLSv12-Ed25519
! f565c6bb1570fd8b20b2116f4e3e29bb  libgo/go/crypto/tls/testdata/Server-TLSv12-ExportKeyingMaterial
! 2348ab0acfd9d6fda4a31a4dd4ea2872  libgo/go/crypto/tls/testdata/Server-TLSv12-IssueTicket
! fbe5d150732e635f75e5e824e707c7e1  libgo/go/crypto/tls/testdata/Server-TLSv12-IssueTicketPreDisable
  2d7dff4f7cc0dae9c149fa927bb3afe3  libgo/go/crypto/tls/testdata/Server-TLSv12-P256
  51bb681d576dd0400d0eefb7a93c2610  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-3DES
  60a6fec52075090c2a0324883eba50da  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-AES
  2a4934a9abf18c37944a2feba0948928  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-AES-GCM
  74b7c5d0433c3594a0d1958e7ed1a48b  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-AES256-GCM-SHA384
  eb7c14ab74f58aff649eb6b16adb73a6  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-RC4
! 41d5e2c6c9199a883773d80839ed07c9  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-RSAPKCS1v15
! 5f3cd08d3ae4e67f7291d5528453e79f  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-RSAPSS
! a88dd4bca6cdd4352f86787d22db1123  libgo/go/crypto/tls/testdata/Server-TLSv12-Resume
! 6525d48295bad341126354b38f481053  libgo/go/crypto/tls/testdata/Server-TLSv12-ResumeDisabled
  2229c466f5f367750933c6d2a82acc9b  libgo/go/crypto/tls/testdata/Server-TLSv12-SNI
  ce7834bb08d8cd867d9c00ba286d01a4  libgo/go/crypto/tls/testdata/Server-TLSv12-SNI-GetCertificate
  2bdefe0b29412624aec0883d2746d6bf  libgo/go/crypto/tls/testdata/Server-TLSv12-SNI-GetCertificateNotFound
  ac747971f61e396ec1ebe11a05715800  libgo/go/crypto/tls/testdata/Server-TLSv12-X25519
  ad4bb8c8fa389088f86c8dfa7cd798e6  libgo/go/crypto/tls/testdata/Server-TLSv13-AES128-SHA256
  9d26ff8f2a3bf1834cb055fc14662e88  libgo/go/crypto/tls/testdata/Server-TLSv13-AES256-SHA384
! 599bf831ad82cb6af9d4096d22a197ca  libgo/go/crypto/tls/testdata/Server-TLSv13-ALPN
! 071ea0da163a59679d50393e1acb621f  libgo/go/crypto/tls/testdata/Server-TLSv13-ALPN-NoMatch
  b892c2dcef373b878ff2d0715366110c  libgo/go/crypto/tls/testdata/Server-TLSv13-CHACHA20-SHA256
! a346cc436f327e3c69680b345bea8483  libgo/go/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndECDSAGiven
! 23bf51657b1c03171885dd43085dd60b  libgo/go/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndEd25519Given
! 1e89cc168d7c5a2bfb58b033ec1ba783  libgo/go/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndGiven
! 6a371c27ba9291bbc100c630348e5059  libgo/go/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedNotGiven
  c94c9de3ab1f7573920b5a4ae5f17507  libgo/go/crypto/tls/testdata/Server-TLSv13-ECDHE-ECDSA-AES
! 4f0b7ac3b51a7a455da62cb6b8bb0fef  libgo/go/crypto/tls/testdata/Server-TLSv13-Ed25519
! 32844d2e49f030a6ec1a2f90d3b8bcfa  libgo/go/crypto/tls/testdata/Server-TLSv13-ExportKeyingMaterial
! 4e99a278c2372e9cdb0005f45121755a  libgo/go/crypto/tls/testdata/Server-TLSv13-HelloRetryRequest
! 8d9472da3c24a615d77f891878270183  libgo/go/crypto/tls/testdata/Server-TLSv13-IssueTicket
! c43474c8c8f651b932b4afb7916ce819  libgo/go/crypto/tls/testdata/Server-TLSv13-IssueTicketPreDisable
! 23214d2d62f9b626414d75ce6b19934c  libgo/go/crypto/tls/testdata/Server-TLSv13-P256
! f3b43ad877418bd412d294588f953479  libgo/go/crypto/tls/testdata/Server-TLSv13-RSA-RSAPSS
! 14ac6ccd921982a2e65950582777d156  libgo/go/crypto/tls/testdata/Server-TLSv13-RSA-RSAPSS-TooSmall
! 03c7a8da1f6362cd51eb29b820661208  libgo/go/crypto/tls/testdata/Server-TLSv13-Resume
! abc93050bf9c9e595094881d32391a19  libgo/go/crypto/tls/testdata/Server-TLSv13-Resume-HelloRetryRequest
! d6a3256a046d57feca0ff021235c9ede  libgo/go/crypto/tls/testdata/Server-TLSv13-ResumeDisabled
! 06cb7cf85fa2ed4dcbf66ecfd08b071f  libgo/go/crypto/tls/testdata/Server-TLSv13-X25519
  2f28864b82258ed5eaf4bbec2254a0d6  libgo/go/crypto/tls/testdata/example-cert.pem
  e2ec9bd8f6f42c104c048bb324bf00d7  libgo/go/crypto/tls/testdata/example-key.pem
! e0281d4b0d8067540dc185550b995938  libgo/go/crypto/tls/ticket.go
! 84229f90ab43909ed3b7d321222fbd2f  libgo/go/crypto/tls/tls.go
! d1635f555d1d8e46eb8697fee769470e  libgo/go/crypto/tls/tls_test.go
! ca9462c0020e0ad94b34f1bde5ea7aa2  libgo/go/crypto/x509/cert_pool.go
! 4e8f3124ead5100e098f9d0d93651443  libgo/go/crypto/x509/internal/macos/corefoundation.go
! d47875d1c1d95d96f1463b14c1b3cf0b  libgo/go/crypto/x509/internal/macos/security.go
! 7828850a2815d8a826f0d4b775cff1b9  libgo/go/crypto/x509/name_constraints_test.go
! 28f99bcfe0c23c5be4370a85ac4010d7  libgo/go/crypto/x509/pem_decrypt.go
  55ba8377b99cdcb798b75e8749e49d45  libgo/go/crypto/x509/pem_decrypt_test.go
! 1255a59ccc8d75bc9845213c27d272ed  libgo/go/crypto/x509/pkcs1.go
! ffe52c837386e3f097aa22525659a764  libgo/go/crypto/x509/pkcs8.go
  61a7cff3e2916004065025a4a62666be  libgo/go/crypto/x509/pkcs8_test.go
! 0d678edc4b07c5a4037f4e292f301783  libgo/go/crypto/x509/pkix/pkix.go
! 8b0ecf8aa3e747c0d7461540d730c5b9  libgo/go/crypto/x509/root.go
! c946c905b6af2773a7b9ec63f6783462  libgo/go/crypto/x509/root_aix.go
! 6b110eebc55d7f6619579c9899d324c2  libgo/go/crypto/x509/root_bsd.go
! 06b28bef8ecc003b0ff7584e2830e0cf  libgo/go/crypto/x509/root_darwin.go
! 7520b592de05803bc8987571f3a55035  libgo/go/crypto/x509/root_hurd.go
! 7988a1ff50e272611d784679248560a3  libgo/go/crypto/x509/root_ios.go
! ae966a28e3dd42ddcb40bba8dbd2686e  libgo/go/crypto/x509/root_ios_gen.go
! 655b7dde2ed17a7f9ee1a90158d917fc  libgo/go/crypto/x509/root_js.go
! 95a799d8c6ba6ba3d5f6d6277fd2eb8e  libgo/go/crypto/x509/root_linux.go
! 34e1b2dc96dffbfcabd6a0c94069072b  libgo/go/crypto/x509/root_omit.go
! a8e09427cd58becbf91e9b3114c6a2b1  libgo/go/crypto/x509/root_omit_test.go
! 48b8f019b4f6d184b62759df40384d15  libgo/go/crypto/x509/root_plan9.go
! fadfeafcc6db85e649f82aec9da0f7a8  libgo/go/crypto/x509/root_solaris.go
! 24f3679cac7c6257f8db4fb9cd77e233  libgo/go/crypto/x509/root_unix.go
! 3322314f4fb861720f44d8c970885002  libgo/go/crypto/x509/root_unix_test.go
! a5fb94a5f352065db55ee87836e72371  libgo/go/crypto/x509/root_windows.go
! 1d434a92ae23d60f7c2fbf0e0e194225  libgo/go/crypto/x509/sec1.go
  cecdc706396bf89248a2f067b663c0cd  libgo/go/crypto/x509/sec1_test.go
  18202f8d63fb43e053de6458d55872ad  libgo/go/crypto/x509/test-file.crt
  53c378bcca2793c3fa7a4df52707eb56  libgo/go/crypto/x509/testdata/test-dir.crt
! a422702ebe2b0a7679649e4f751e00b3  libgo/go/crypto/x509/verify.go
! bff0ccf5649e24c82cca3235ddb84d4c  libgo/go/crypto/x509/verify_test.go
! 4a9498015a7d1f363058f9301f1b47fa  libgo/go/crypto/x509/x509.go
! d1739a3dec9aeb4fb06700883ec7cffc  libgo/go/crypto/x509/x509_test.go
  3132ca5e45245920caa072161fbe4f12  libgo/go/crypto/x509/x509_test_import.go
  b9ec55c3c325a1ee4868df47df4ced26  libgo/go/database/sql/convert.go
  6de4c96cea91ae1df63a66bfaf09832e  libgo/go/database/sql/convert_test.go
  b22b8d2d363a6eab8942852ef826d0f4  libgo/go/database/sql/ctxutil.go
! 790f2bf00c8ae0745ac944b2fe370411  libgo/go/database/sql/driver/driver.go
  c5ba0d21f265f91954430abeaf452b68  libgo/go/database/sql/driver/types.go
  1bf043969dce134c7ad69a556fb6834a  libgo/go/database/sql/driver/types_test.go
  e6321acca093a0f56c3f7d3cfc6e5f4e  libgo/go/database/sql/example_cli_test.go
  ab87746229e8a46ba621c5e16875c5cf  libgo/go/database/sql/example_service_test.go
! a3db9f2ae992fa5348f6747b98af05d4  libgo/go/database/sql/fakedb_test.go
! 590dafc75e7983f4fe3880bb97aafd3f  libgo/go/database/sql/sql.go
! dff028d25851566678a1fe9ec47596ac  libgo/go/database/sql/sql_test.go
  2cf5b361722255fae8e7192154b8402e  libgo/go/debug/dwarf/attr_string.go
  9174ba90e858174fe2f0669882d8e6c7  libgo/go/debug/dwarf/buf.go
  b46f4916a66938077e6031bf41dda9c6  libgo/go/debug/dwarf/class_string.go
! 384aeca0e25fa5c6b4df21e1543f8a24  libgo/go/debug/dwarf/const.go
! c28e0230ff0b0ee5802089ee60269016  libgo/go/debug/dwarf/dwarf5ranges_test.go
! aaf568df9a1d7d8db23d69720a8cf243  libgo/go/debug/dwarf/entry.go
! d2b7da91d468222484ab65bb98948f48  libgo/go/debug/dwarf/entry_test.go
  248287fbc820cab5a4276928ff9d7209  libgo/go/debug/dwarf/export_test.go
! 6cc5cf17f9effa1deddee19588d11e1a  libgo/go/debug/dwarf/line.go
! 3b70091c3aa18dd00a7080f5b2baa0e0  libgo/go/debug/dwarf/line_test.go
! 788715db62d3e90e17530e88471af5ad  libgo/go/debug/dwarf/open.go
  3bf2f8f5466e194ea1461667c4ccc3af  libgo/go/debug/dwarf/tag_string.go
  73bc9386f8192ed75607d4bde1ce2b42  libgo/go/debug/dwarf/testdata/cppunsuptypes.cc
  e04f9c38fe56385085e6b2ebd8564154  libgo/go/debug/dwarf/testdata/cppunsuptypes.elf
  c48488233d6ad5097bba0895351ae989  libgo/go/debug/dwarf/testdata/cycle.c
  c23f993b006d7c48440e841566c9cee8  libgo/go/debug/dwarf/testdata/cycle.elf
+ 243efd643ea69c63069262742f34d536  libgo/go/debug/dwarf/testdata/debug_rnglists
+ 74f9340f1affedffcb4a219d19cddae1  libgo/go/debug/dwarf/testdata/line-clang-dwarf5.elf
  53be9821e20d51fc576404ee0d0cdb3b  libgo/go/debug/dwarf/testdata/line-clang.elf
+ 78caff03eca5a281d833045b3431d25d  libgo/go/debug/dwarf/testdata/line-gcc-dwarf5.elf
  4556640fe537f2e39652e7dddf3a6d3e  libgo/go/debug/dwarf/testdata/line-gcc-win.bin
  f73405447309d114781eb0331b37ffa2  libgo/go/debug/dwarf/testdata/line-gcc.elf
  644ab0e7301af5d40837759ee9f7a23e  libgo/go/debug/dwarf/testdata/line1.c
*************** f8e205cc8c6ab3effebb16ac6be0a17d  libgo/
*** 84016,84025 ****
  3e90447c18712f2d16508e71d90f97d4  libgo/go/debug/dwarf/type_test.go
  b39de4ed3f1f884de7b8821a985287fb  libgo/go/debug/dwarf/typeunit.go
  3cf8d97cb9790a429475ff5741901017  libgo/go/debug/dwarf/unit.go
! 597ddaa9cf478787343566538762d819  libgo/go/debug/elf/elf.go
  28eb6b9f4f46f23fd82e0d06f1365df2  libgo/go/debug/elf/elf_test.go
! c58eb1076fb055e2105628478eb1307a  libgo/go/debug/elf/file.go
! 3c31a1213ca9e52ef997285788eeeca4  libgo/go/debug/elf/file_test.go
  f9f04dd77ce8b45403e77ea632d93590  libgo/go/debug/elf/reader.go
  f1374ec8ed40aa77be540da55827179d  libgo/go/debug/elf/symbols_test.go
  e4fd8964522a2eb47fd40f7171a8ae1b  libgo/go/debug/elf/testdata/compressed-32.obj
--- 89907,89916 ----
  3e90447c18712f2d16508e71d90f97d4  libgo/go/debug/dwarf/type_test.go
  b39de4ed3f1f884de7b8821a985287fb  libgo/go/debug/dwarf/typeunit.go
  3cf8d97cb9790a429475ff5741901017  libgo/go/debug/dwarf/unit.go
! e5fbc0b5f609e183f2af9b4804c90fb8  libgo/go/debug/elf/elf.go
  28eb6b9f4f46f23fd82e0d06f1365df2  libgo/go/debug/elf/elf_test.go
! 04be6d9f86605b61147242758bc0b118  libgo/go/debug/elf/file.go
! 92bb6cfd41c3f32dd777299ab90aaf1c  libgo/go/debug/elf/file_test.go
  f9f04dd77ce8b45403e77ea632d93590  libgo/go/debug/elf/reader.go
  f1374ec8ed40aa77be540da55827179d  libgo/go/debug/elf/symbols_test.go
  e4fd8964522a2eb47fd40f7171a8ae1b  libgo/go/debug/elf/testdata/compressed-32.obj
*************** dac6f48fa8361588e7ce170820173bac  libgo/
*** 84043,84056 ****
  e51fb93859539ccd38bb35e642eb463e  libgo/go/debug/elf/testdata/go-relocation-test-gcc540-mips.obj
  016e6616f79dfa176220f25936f1387d  libgo/go/debug/elf/testdata/go-relocation-test-gcc620-sparc64.obj
  f115382738e2c8f0308ae9592e7bec47  libgo/go/debug/elf/testdata/go-relocation-test-gcc720-riscv64.obj
  6974830fe9ac5f9b0ef12e42398df84d  libgo/go/debug/elf/testdata/hello-world-core.gz
  263c86bf4d1ceda8a3070abee7208219  libgo/go/debug/elf/testdata/hello.c
  0986841ab8783e088c0d4efb2d625030  libgo/go/debug/elf/testdata/zdebug-test-gcc484-x86-64.obj
  f549e93bb4abecfa2f405787ace90ac7  libgo/go/debug/gosym/pclinetest.h
  0c042c48ee46b12d9e396c15d9f5998e  libgo/go/debug/gosym/pclinetest.s
! 4d7fe04697a49bfa032815d6adc7e472  libgo/go/debug/gosym/pclntab.go
! f864822df234ae4ef3161ecab6716413  libgo/go/debug/gosym/pclntab_test.go
! 2ae5a5a10c46daff977ee43b1c99b6b4  libgo/go/debug/gosym/symtab.go
  697848ed94fa28dec4c95568c8a567c1  libgo/go/debug/gosym/symtab_test.go
  38e10a38566d3ff59dbb7ddce0af1283  libgo/go/debug/gosym/testdata/main.go
  d6803afca4c3518d9c29b4e7ee435eeb  libgo/go/debug/gosym/testdata/pclinetest.h
--- 89934,89950 ----
  e51fb93859539ccd38bb35e642eb463e  libgo/go/debug/elf/testdata/go-relocation-test-gcc540-mips.obj
  016e6616f79dfa176220f25936f1387d  libgo/go/debug/elf/testdata/go-relocation-test-gcc620-sparc64.obj
  f115382738e2c8f0308ae9592e7bec47  libgo/go/debug/elf/testdata/go-relocation-test-gcc720-riscv64.obj
+ 9044f1b31d3dcd9dc42a5082e3c243d7  libgo/go/debug/elf/testdata/go-relocation-test-gcc930-ranges-no-rela-x86-64
+ 202b678104096513788babbd6285a937  libgo/go/debug/elf/testdata/go-relocation-test-gcc930-ranges-with-rela-x86-64
  6974830fe9ac5f9b0ef12e42398df84d  libgo/go/debug/elf/testdata/hello-world-core.gz
  263c86bf4d1ceda8a3070abee7208219  libgo/go/debug/elf/testdata/hello.c
+ a5ba9661734ffb886d3675082c2b4808  libgo/go/debug/elf/testdata/multiple-code-sections.c
  0986841ab8783e088c0d4efb2d625030  libgo/go/debug/elf/testdata/zdebug-test-gcc484-x86-64.obj
  f549e93bb4abecfa2f405787ace90ac7  libgo/go/debug/gosym/pclinetest.h
  0c042c48ee46b12d9e396c15d9f5998e  libgo/go/debug/gosym/pclinetest.s
! 33f6fbe4fd645600afda3cadd408096b  libgo/go/debug/gosym/pclntab.go
! e8ffe72f5e22b991f866d0082f356b9d  libgo/go/debug/gosym/pclntab_test.go
! 7d70e392c2f3dfab766fb7421679041b  libgo/go/debug/gosym/symtab.go
  697848ed94fa28dec4c95568c8a567c1  libgo/go/debug/gosym/symtab_test.go
  38e10a38566d3ff59dbb7ddce0af1283  libgo/go/debug/gosym/testdata/main.go
  d6803afca4c3518d9c29b4e7ee435eeb  libgo/go/debug/gosym/testdata/pclinetest.h
*************** d5cc5689613d6dc3c5ba7c3eca1227ba  libgo/
*** 84072,84079 ****
  16ac886f4f5d825a30306e935bbeb5a4  libgo/go/debug/macho/testdata/hello.c
  ba30628b2b4211cab47f9f4fd0690bca  libgo/go/debug/pe/file.go
  1aab25a4380f0c22365b051945ab2b20  libgo/go/debug/pe/file_cgo_test.go
! 2000f3d4a6a5faa1e33e5a90e5d40f38  libgo/go/debug/pe/file_test.go
! 1f019a0139c6a35f49bac3a6c552d56e  libgo/go/debug/pe/pe.go
  404dc2de3446caddf51b1e530890772d  libgo/go/debug/pe/section.go
  2ab06d918d5a54d3e94f28b6936ce7ff  libgo/go/debug/pe/string.go
  2a03e214e0d28deb8235bdff676aefd1  libgo/go/debug/pe/symbol.go
--- 89966,89973 ----
  16ac886f4f5d825a30306e935bbeb5a4  libgo/go/debug/macho/testdata/hello.c
  ba30628b2b4211cab47f9f4fd0690bca  libgo/go/debug/pe/file.go
  1aab25a4380f0c22365b051945ab2b20  libgo/go/debug/pe/file_cgo_test.go
! e1ee4d23501ba1e5024abeb442856302  libgo/go/debug/pe/file_test.go
! 76f28e14543b1783c334287451ec44f7  libgo/go/debug/pe/pe.go
  404dc2de3446caddf51b1e530890772d  libgo/go/debug/pe/section.go
  2ab06d918d5a54d3e94f28b6936ce7ff  libgo/go/debug/pe/string.go
  2a03e214e0d28deb8235bdff676aefd1  libgo/go/debug/pe/symbol.go
*************** d141fe4ce073e954a739c2e351360bd7  libgo/
*** 84100,84126 ****
  8cc04b1db59fdf4acc68badc19499092  libgo/go/debug/xcoff/testdata/xlc-ppc32-aix-exec
  78797635724d3a8303f4a60746af071c  libgo/go/debug/xcoff/testdata/xlc-ppc64-aix-exec
  257dfc19ff2e8edabb5bc509f273bfab  libgo/go/debug/xcoff/xcoff.go
  92462ac904ce7336d9743e4e831d7f23  libgo/go/encoding/ascii85/ascii85.go
! f00e15f0c3e2a31d5404c679363f429a  libgo/go/encoding/ascii85/ascii85_test.go
! 148eb8270711cdd74f9fb610f0f7e529  libgo/go/encoding/asn1/asn1.go
! 40e066aa35019408214feccbd3e976e1  libgo/go/encoding/asn1/asn1_test.go
! 8b7108345b53252936203632aa292e45  libgo/go/encoding/asn1/common.go
! d3a716ddbe33b5349ecb82272c0d6e42  libgo/go/encoding/asn1/marshal.go
! 6e5ef62f79444434321db95b690eb385  libgo/go/encoding/asn1/marshal_test.go
  5924a31f389fef88e3c2984a70e28973  libgo/go/encoding/base32/base32.go
! 304a863c2b20e06952105666b9a0d2d5  libgo/go/encoding/base32/base32_test.go
! fd5c19df09081eb35d52932268970027  libgo/go/encoding/base64/base64.go
! 849e4ea564383baafe583e49c2ccb5b8  libgo/go/encoding/base64/base64_test.go
! 135b871dd1428fa55e3c54141f7de0e8  libgo/go/encoding/binary/binary.go
! d530cd212c63579e7695103d2316bff7  libgo/go/encoding/binary/binary_test.go
! ab2d348d93a3265f3577e4745556414c  libgo/go/encoding/binary/varint.go
! cf4f9c7b06e86b79dedfb7fa7c7f1da5  libgo/go/encoding/binary/varint_test.go
  2dafdf86dc65328db0ae53a0bc7b9c2c  libgo/go/encoding/csv/example_test.go
  f001138424b9da0d05b3c0edd233a1ed  libgo/go/encoding/csv/fuzz.go
  854e345232f051b0d17f482f9261586c  libgo/go/encoding/csv/reader.go
  b0d5fa9fbc716d275429d7e6cc6102c5  libgo/go/encoding/csv/reader_test.go
! efcf086bdaac37e01cd3787bddbbd443  libgo/go/encoding/csv/writer.go
! f340094dbe6ae6274f9907adcc6da664  libgo/go/encoding/csv/writer_test.go
  cf390c08a8bce581b43b6812e08876c9  libgo/go/encoding/encoding.go
  00e9712d6448eeb8f7c7c9771de2699e  libgo/go/encoding/gob/codec_test.go
  e35904a2dcd7a30c41cef893ed3c49f9  libgo/go/encoding/gob/debug.go
--- 89994,90035 ----
  8cc04b1db59fdf4acc68badc19499092  libgo/go/debug/xcoff/testdata/xlc-ppc32-aix-exec
  78797635724d3a8303f4a60746af071c  libgo/go/debug/xcoff/testdata/xlc-ppc64-aix-exec
  257dfc19ff2e8edabb5bc509f273bfab  libgo/go/debug/xcoff/xcoff.go
+ d387e0a244d2a6decdfddddb9d0f320a  libgo/go/embed/embed.go
+ e15c72e1c1fa865a18bfdcd19bd6f868  libgo/go/embed/internal/embedtest/concurrency.txt
+ a7b648b399c1ea09046abfca99323ff2  libgo/go/embed/internal/embedtest/embed_test.go
+ 652bffbbb0fb766ee1e12c8fd095bf77  libgo/go/embed/internal/embedtest/embedx_test.go
+ 7082df90f1a8d05c24fe7d99b3873410  libgo/go/embed/internal/embedtest/testdata/.hidden/.more/tip.txt
+ 7082df90f1a8d05c24fe7d99b3873410  libgo/go/embed/internal/embedtest/testdata/.hidden/_more/tip.txt
+ dbbeec96bf25b5c1bd4d238ea436868d  libgo/go/embed/internal/embedtest/testdata/.hidden/fortune.txt
+ 7082df90f1a8d05c24fe7d99b3873410  libgo/go/embed/internal/embedtest/testdata/.hidden/more/tip.txt
+ dbbeec96bf25b5c1bd4d238ea436868d  libgo/go/embed/internal/embedtest/testdata/_hidden/fortune.txt
+ 07ed7491eaeb2827fc43db885613e762  libgo/go/embed/internal/embedtest/testdata/ascii.txt
+ c66d3d004302f9f51908bc6c3e36118e  libgo/go/embed/internal/embedtest/testdata/glass.txt
+ 22c3683b094136c3398391ae71b20f04  libgo/go/embed/internal/embedtest/testdata/hello.txt
+ ad92f7955f525b0b753d2c9a42cc3299  libgo/go/embed/internal/embedtest/testdata/i/i18n.txt
+ 713431a750b0f2aa7424b22c6e358302  libgo/go/embed/internal/embedtest/testdata/i/j/k/k8s.txt
+ f7db82a199d42ea62434c427df056f19  libgo/go/embed/internal/embedtest/testdata/ken.txt
  92462ac904ce7336d9743e4e831d7f23  libgo/go/encoding/ascii85/ascii85.go
! 394fccf3c771a3dec9351731f986d492  libgo/go/encoding/ascii85/ascii85_test.go
! 5bd924cae56b717a46ce9edcb07f9a26  libgo/go/encoding/asn1/asn1.go
! 0a3457d8809fb2c690c11efac4598c3c  libgo/go/encoding/asn1/asn1_test.go
! 29f6ba578eabac750e5cd22e1463c491  libgo/go/encoding/asn1/common.go
! 35befa39e8fcc86a459c5aea35b64d6f  libgo/go/encoding/asn1/marshal.go
! 8c5d658b618ea7faa7cd2a34d8c63c56  libgo/go/encoding/asn1/marshal_test.go
  5924a31f389fef88e3c2984a70e28973  libgo/go/encoding/base32/base32.go
! a5ce5f293c7b689e5e67a7ea968e6617  libgo/go/encoding/base32/base32_test.go
! f848c631931812702bfb84285a17c0f1  libgo/go/encoding/base64/base64.go
! 33417c87a88630800bf03b8b0cdc8097  libgo/go/encoding/base64/base64_test.go
! 48cf868077c34055080b5d621708c96c  libgo/go/encoding/binary/binary.go
! ee7f7b272990cff751c5c48d417916c6  libgo/go/encoding/binary/binary_test.go
! b11b8a8fc803b15b8632d3f4f4a245c8  libgo/go/encoding/binary/varint.go
! 750de3a4ba4ddecfa53ac3fd53ad274f  libgo/go/encoding/binary/varint_test.go
  2dafdf86dc65328db0ae53a0bc7b9c2c  libgo/go/encoding/csv/example_test.go
  f001138424b9da0d05b3c0edd233a1ed  libgo/go/encoding/csv/fuzz.go
  854e345232f051b0d17f482f9261586c  libgo/go/encoding/csv/reader.go
  b0d5fa9fbc716d275429d7e6cc6102c5  libgo/go/encoding/csv/reader_test.go
! 21810d1e935bd6cb045ef36e558fa5d3  libgo/go/encoding/csv/writer.go
! 23f200934e20b4aba08aa28d698ec740  libgo/go/encoding/csv/writer_test.go
  cf390c08a8bce581b43b6812e08876c9  libgo/go/encoding/encoding.go
  00e9712d6448eeb8f7c7c9771de2699e  libgo/go/encoding/gob/codec_test.go
  e35904a2dcd7a30c41cef893ed3c49f9  libgo/go/encoding/gob/debug.go
*************** c25bf7312645b9cff0b4e4365de1f28f  libgo/
*** 84134,84140 ****
  7009b6d8c961571f9e9077ff48d5d09f  libgo/go/encoding/gob/encgen.go
  6b00bcd634e2b5820fc4abeee24195f7  libgo/go/encoding/gob/encode.go
  b741a56a102065decc52ff0a9295eda8  libgo/go/encoding/gob/encoder.go
! 7a4b653a0abe6c1701dca4a0a63025cb  libgo/go/encoding/gob/encoder_test.go
  dfa08fd6d3fdf33eddcc3dbe126d0926  libgo/go/encoding/gob/error.go
  9cec44542cce4412a2e0219901fca7d2  libgo/go/encoding/gob/gobencdec_test.go
  58f5d1e91674343e771e58571daa2fca  libgo/go/encoding/gob/timing_test.go
--- 90043,90049 ----
  7009b6d8c961571f9e9077ff48d5d09f  libgo/go/encoding/gob/encgen.go
  6b00bcd634e2b5820fc4abeee24195f7  libgo/go/encoding/gob/encode.go
  b741a56a102065decc52ff0a9295eda8  libgo/go/encoding/gob/encoder.go
! 32b1ee613ff2f9cdd1413a5721aff491  libgo/go/encoding/gob/encoder_test.go
  dfa08fd6d3fdf33eddcc3dbe126d0926  libgo/go/encoding/gob/error.go
  9cec44542cce4412a2e0219901fca7d2  libgo/go/encoding/gob/gobencdec_test.go
  58f5d1e91674343e771e58571daa2fca  libgo/go/encoding/gob/timing_test.go
*************** a19838c42be76f32233bbeebd11763c5  libgo/
*** 84142,84153 ****
  efc0a34fb6763c8c757f71b5f6dd87c2  libgo/go/encoding/gob/type_test.go
  528076ee7a1fa504117e9d2a98955009  libgo/go/encoding/hex/example_test.go
  19f9396403ff4bc876895de2f0c11371  libgo/go/encoding/hex/hex.go
! e9dfbe155008fb81d46503d5ea1a8d91  libgo/go/encoding/hex/hex_test.go
! 263ebe5161020fa6c2f8a7686b9ca0b2  libgo/go/encoding/json/bench_test.go
  91bb04cd54ace2ef6029961eb86410ff  libgo/go/encoding/json/decode.go
! 136e74df7cf5d955da4d21e70372f22a  libgo/go/encoding/json/decode_test.go
! 5608c6e49e4374fee8b9b427659ca083  libgo/go/encoding/json/encode.go
! e729b05a5dc7227120e5405477fe6b1e  libgo/go/encoding/json/encode_test.go
  6696d9e8b1715c9ccc8952351c83fab4  libgo/go/encoding/json/example_marshaling_test.go
  21ba7c7ab58f176aee4a162af24a6316  libgo/go/encoding/json/example_text_marshaling_test.go
  58f0b67923caf5d1a8ea55470b6c0ac0  libgo/go/encoding/json/fold.go
--- 90051,90062 ----
  efc0a34fb6763c8c757f71b5f6dd87c2  libgo/go/encoding/gob/type_test.go
  528076ee7a1fa504117e9d2a98955009  libgo/go/encoding/hex/example_test.go
  19f9396403ff4bc876895de2f0c11371  libgo/go/encoding/hex/hex.go
! dfdf3a5c3d7f1cbecfa7031321799ce7  libgo/go/encoding/hex/hex_test.go
! 926e8d054c08e4281f97cae658164918  libgo/go/encoding/json/bench_test.go
  91bb04cd54ace2ef6029961eb86410ff  libgo/go/encoding/json/decode.go
! 510c528e270598da7e456edce39412b7  libgo/go/encoding/json/decode_test.go
! 9738c57b219faa7e72717831a1b2ac9e  libgo/go/encoding/json/encode.go
! fcd302ef3faba7a2c5ad7a68ca2b8454  libgo/go/encoding/json/encode_test.go
  6696d9e8b1715c9ccc8952351c83fab4  libgo/go/encoding/json/example_marshaling_test.go
  21ba7c7ab58f176aee4a162af24a6316  libgo/go/encoding/json/example_text_marshaling_test.go
  58f0b67923caf5d1a8ea55470b6c0ac0  libgo/go/encoding/json/fold.go
*************** e729b05a5dc7227120e5405477fe6b1e  libgo/
*** 84155,84210 ****
  5d727b3808d8a1507f36ab3b3d402eb1  libgo/go/encoding/json/fuzz.go
  5bec5a03439a24edea5675b46016a4f9  libgo/go/encoding/json/indent.go
  4668675f4c4b18c8f639cd78bb4eafae  libgo/go/encoding/json/number_test.go
! 4044c215188d94d426b28383e503d7d2  libgo/go/encoding/json/scanner.go
  96a6d9c9c0216a2e3c1ddcb4a06c79af  libgo/go/encoding/json/scanner_test.go
  f4322e52985f772289ccce741790611e  libgo/go/encoding/json/stream.go
! 6f9a3b563b2f5d311fbda566fe0235c8  libgo/go/encoding/json/stream_test.go
  1277e282f6bf1c91d83f726aae7be95c  libgo/go/encoding/json/tables.go
! cf8d91034e9bab7b6cb38c7e5098954c  libgo/go/encoding/json/tagkey_test.go
  9f0b63408a1cf1c63f1ba0a556aa0ca0  libgo/go/encoding/json/tags.go
  89e4c307ea4a4f4ec3eb43d0cea004c0  libgo/go/encoding/json/tags_test.go
  9d281d5b21f0fcbbf6e840a2901d01c1  libgo/go/encoding/json/testdata/code.json.gz
  90f113780677fc209fbc176f20c85905  libgo/go/encoding/pem/example_test.go
  cb2b7b67399e2511432239484492b466  libgo/go/encoding/pem/pem.go
! b46d5db9f50f17fc89818f4f9655019f  libgo/go/encoding/pem/pem_test.go
  f7065bcad9023fbf85033e459dd41594  libgo/go/encoding/xml/atom_test.go
  d6faa60a5ae55010235a8d13771d9560  libgo/go/encoding/xml/example_marshaling_test.go
  ba01e03401cf7036e5da40f1bd4eceda  libgo/go/encoding/xml/example_text_marshaling_test.go
! 9ff40b5a29f687a88670ba39c20ca589  libgo/go/encoding/xml/marshal.go
! 852e13cf28201337ad0790ec215e0ec2  libgo/go/encoding/xml/marshal_test.go
! 3487a1ee041de7aa53a629330ac5921f  libgo/go/encoding/xml/read.go
  fa97bb2f93f6dd8e2546eb678966c4ee  libgo/go/encoding/xml/read_test.go
! 246f02d28fbf76881b1f1817fee4ee9b  libgo/go/encoding/xml/typeinfo.go
! 099a7dab96c45039438a78f61df778ec  libgo/go/encoding/xml/xml.go
! 48cf9983d80db931b5e8c60919a544d1  libgo/go/encoding/xml/xml_test.go
! b264e26eadc6b41a10af82f0315ec521  libgo/go/errors/errors.go
  d3f785fb54dda63a9286d9e2038f5aeb  libgo/go/errors/errors_test.go
! 647278eea8722cb63395ed6cf40cc823  libgo/go/errors/wrap.go
! 7b7ff3d63aa68b27c930264e54c1fa19  libgo/go/errors/wrap_test.go
  69cec3ad76693af3e50d004ea7c7025a  libgo/go/expvar/expvar.go
! 0b4571c9542297086e0d42d0e087446f  libgo/go/expvar/expvar_test.go
  97c2f30cebb7bb49677b5c6216b7e495  libgo/go/flag/example_test.go
  16150cc6861f8da8c38f66da3492231e  libgo/go/flag/example_value_test.go
  a69ac9ffc946290a3b40d54743810cb7  libgo/go/flag/export_test.go
! 78da4884f811dbca5df7ff81fc794e33  libgo/go/flag/flag.go
! 869e4d49492e6f0c89e9b92a8cfd479d  libgo/go/flag/flag_test.go
! 2e0bfd0c331a83f62a7d94536b197b0b  libgo/go/fmt/doc.go
  3dec4da5df39592bec1c14a2fcbe3131  libgo/go/fmt/errors.go
  041cd7949f21f8cbe57370cb9a202d5e  libgo/go/fmt/errors_test.go
  4aac3ae60bb7f1350b4ac2d0c6f1a5d8  libgo/go/fmt/example_test.go
  4f3d783dffb31ae9d17c27343eb363d3  libgo/go/fmt/export_test.go
! 8911565e2526c620c4b2603da505843d  libgo/go/fmt/fmt_test.go
! 0c7972379c29cd3cba546d11655209f6  libgo/go/fmt/format.go
  2819cadd0e04cc10f1c31e41ee42463a  libgo/go/fmt/gostringer_example_test.go
! 8010796fc8352d22c8e3c4c4e806b95d  libgo/go/fmt/print.go
! 3feaef4fdca2a1c3884b0765e4c77789  libgo/go/fmt/scan.go
  879bd805a141c26820822483afd54cbb  libgo/go/fmt/scan_test.go
  6fcb09cb0cd589441f3d63eda967b071  libgo/go/fmt/stringer_example_test.go
  2369824f08c60e32daa40b736d182964  libgo/go/fmt/stringer_test.go
! 50d11514b4e39f22c8f05defa3fb689b  libgo/go/go/ast/ast.go
! f8d3946f87220cd03b7c011174b0fd23  libgo/go/go/ast/ast_test.go
  9f1f11f06f41ae838e8a0b1d1041291b  libgo/go/go/ast/commentmap.go
! 889bfab30af17cf18a71cf952b6a0740  libgo/go/go/ast/commentmap_test.go
  ff813a3cb3fe9d99e87360055ed08345  libgo/go/go/ast/filter.go
  bf2c3134657aed37c679064ac0654d88  libgo/go/go/ast/filter_test.go
  58bdbbe7729f18c722f00a1bc5956a60  libgo/go/go/ast/import.go
--- 90064,90121 ----
  5d727b3808d8a1507f36ab3b3d402eb1  libgo/go/encoding/json/fuzz.go
  5bec5a03439a24edea5675b46016a4f9  libgo/go/encoding/json/indent.go
  4668675f4c4b18c8f639cd78bb4eafae  libgo/go/encoding/json/number_test.go
! 2c58e996cc5b437fe2442a8ed9f45a13  libgo/go/encoding/json/scanner.go
  96a6d9c9c0216a2e3c1ddcb4a06c79af  libgo/go/encoding/json/scanner_test.go
  f4322e52985f772289ccce741790611e  libgo/go/encoding/json/stream.go
! 74ad5a3ea8fff51726b26bafca0689b8  libgo/go/encoding/json/stream_test.go
  1277e282f6bf1c91d83f726aae7be95c  libgo/go/encoding/json/tables.go
! 7d143f4b184e728a7751184a5ab99de6  libgo/go/encoding/json/tagkey_test.go
  9f0b63408a1cf1c63f1ba0a556aa0ca0  libgo/go/encoding/json/tags.go
  89e4c307ea4a4f4ec3eb43d0cea004c0  libgo/go/encoding/json/tags_test.go
  9d281d5b21f0fcbbf6e840a2901d01c1  libgo/go/encoding/json/testdata/code.json.gz
  90f113780677fc209fbc176f20c85905  libgo/go/encoding/pem/example_test.go
  cb2b7b67399e2511432239484492b466  libgo/go/encoding/pem/pem.go
! 8c0bd61f38c812933895516d4f68ae62  libgo/go/encoding/pem/pem_test.go
  f7065bcad9023fbf85033e459dd41594  libgo/go/encoding/xml/atom_test.go
  d6faa60a5ae55010235a8d13771d9560  libgo/go/encoding/xml/example_marshaling_test.go
  ba01e03401cf7036e5da40f1bd4eceda  libgo/go/encoding/xml/example_text_marshaling_test.go
! 9e46aa2766467ea70f729ab2db3cad4b  libgo/go/encoding/xml/marshal.go
! fb7d98eb6a64ac6d3b10856589c48cb0  libgo/go/encoding/xml/marshal_test.go
! c3c30183cbbd8bae3c59ed2654b51aeb  libgo/go/encoding/xml/read.go
  fa97bb2f93f6dd8e2546eb678966c4ee  libgo/go/encoding/xml/read_test.go
! 29621a85b7d1f28a460b6c511c429911  libgo/go/encoding/xml/typeinfo.go
! c73a5699e4a7bbff33533876973ffc43  libgo/go/encoding/xml/xml.go
! 6aca24ecf657efb93c35d127ea7039a7  libgo/go/encoding/xml/xml_test.go
! 61973f508c803662e93c35e6ed0a479d  libgo/go/errors/errors.go
  d3f785fb54dda63a9286d9e2038f5aeb  libgo/go/errors/errors_test.go
! edc480fa5e6c12aae036680900ef04c9  libgo/go/errors/wrap.go
! 31164292d2ef36d303963dc89e5e532e  libgo/go/errors/wrap_test.go
  69cec3ad76693af3e50d004ea7c7025a  libgo/go/expvar/expvar.go
! 91404b0dff65de8e258ef64d473b44d1  libgo/go/expvar/expvar_test.go
! b869c622917743b3781eceb20df1371b  libgo/go/flag/example_func_test.go
  97c2f30cebb7bb49677b5c6216b7e495  libgo/go/flag/example_test.go
  16150cc6861f8da8c38f66da3492231e  libgo/go/flag/example_value_test.go
  a69ac9ffc946290a3b40d54743810cb7  libgo/go/flag/export_test.go
! 2a6903f7c292623286ea7c273900e654  libgo/go/flag/flag.go
! 21eca174952000ade04b36faf240f396  libgo/go/flag/flag_test.go
! 37f4199e0fd0370a237c91524a67a9be  libgo/go/fmt/doc.go
  3dec4da5df39592bec1c14a2fcbe3131  libgo/go/fmt/errors.go
  041cd7949f21f8cbe57370cb9a202d5e  libgo/go/fmt/errors_test.go
  4aac3ae60bb7f1350b4ac2d0c6f1a5d8  libgo/go/fmt/example_test.go
  4f3d783dffb31ae9d17c27343eb363d3  libgo/go/fmt/export_test.go
! 2a532ba34799573764cc16c807bb15b6  libgo/go/fmt/fmt_test.go
! 3f87f828cc703438a0771105f3259979  libgo/go/fmt/format.go
  2819cadd0e04cc10f1c31e41ee42463a  libgo/go/fmt/gostringer_example_test.go
! 1e2abbd9388d2c40161b69b25e90f353  libgo/go/fmt/print.go
! 1f898e43ee97be4a21f7b4054dbffefe  libgo/go/fmt/scan.go
  879bd805a141c26820822483afd54cbb  libgo/go/fmt/scan_test.go
  6fcb09cb0cd589441f3d63eda967b071  libgo/go/fmt/stringer_example_test.go
  2369824f08c60e32daa40b736d182964  libgo/go/fmt/stringer_test.go
! abcec64dbaad22933c8a2bfb303cc485  libgo/go/go.mod
! 48fddd6db923a87c59afdc8b66665047  libgo/go/go/ast/ast.go
! d4d45d52a65eb9a90a577b7642507749  libgo/go/go/ast/ast_test.go
  9f1f11f06f41ae838e8a0b1d1041291b  libgo/go/go/ast/commentmap.go
! 06e1b96007b49fefd9c6e6f78a308d6d  libgo/go/go/ast/commentmap_test.go
  ff813a3cb3fe9d99e87360055ed08345  libgo/go/go/ast/filter.go
  bf2c3134657aed37c679064ac0654d88  libgo/go/go/ast/filter_test.go
  58bdbbe7729f18c722f00a1bc5956a60  libgo/go/go/ast/import.go
*************** e9a932b0d26963e43bbaff5af1a13a6c  libgo/
*** 84214,84229 ****
  3be25bbb06e1daddd8871a53a5202517  libgo/go/go/ast/resolve.go
  a34425a8ac23d6af13812cc2f18b5e0b  libgo/go/go/ast/scope.go
  518c3e4a187ec8053a8721ab88b1b6c8  libgo/go/go/ast/walk.go
! cc85542997c369b3f01ac8e1d68a9faa  libgo/go/go/build/build.go
! c340aae1be8f23fec915f90af88cf6ae  libgo/go/go/build/build_test.go
! 32dd87c519f0f66db61851f8a4a013f6  libgo/go/go/build/deps_test.go
! 954a516206ad20d33c0bc634af5061c1  libgo/go/go/build/doc.go
  208c93a77628472488f59d8fca6c0958  libgo/go/go/build/gc.go
  d9f729d93287dd32bee3c25091895c81  libgo/go/go/build/gccgo.go
! d48cbae850a60e76803d78aa5f102e08  libgo/go/go/build/read.go
! 6d322a212acd2e7a7b0c7ffbf677259f  libgo/go/go/build/read_test.go
! 51635488b97597f61f26e9b13ef5eb00  libgo/go/go/build/syslist.go
! a3e1b4a47759ac93d3a90b8bda10894f  libgo/go/go/build/syslist_test.go
  d0508cfc2d888979852c42a97500ae2c  libgo/go/go/build/testdata/cgo_disabled/cgo_disabled.go
  f657ff91cc94e1fd35f0e42e74d86020  libgo/go/go/build/testdata/cgo_disabled/empty.go
  9bb671d4d7713c3b7b37d5f8ce7b5b8f  libgo/go/go/build/testdata/doc/a_test.go
--- 90125,90142 ----
  3be25bbb06e1daddd8871a53a5202517  libgo/go/go/ast/resolve.go
  a34425a8ac23d6af13812cc2f18b5e0b  libgo/go/go/ast/scope.go
  518c3e4a187ec8053a8721ab88b1b6c8  libgo/go/go/ast/walk.go
! d80f789164b9949774a58c6ccbb9e6e3  libgo/go/go/build/build.go
! 5ef4fced7a098f9ca67f438700bf5dbc  libgo/go/go/build/build_test.go
! 9cad0a4129d85b2fd258e882d9a2eb73  libgo/go/go/build/constraint/expr.go
! da821af42e97c3fc7f2b088ea293b757  libgo/go/go/build/constraint/expr_test.go
! 134f726571de1804510c2f18c6da56b3  libgo/go/go/build/deps_test.go
! c3c50241f1971c7a0fd71a6b9a4d58f7  libgo/go/go/build/doc.go
  208c93a77628472488f59d8fca6c0958  libgo/go/go/build/gc.go
  d9f729d93287dd32bee3c25091895c81  libgo/go/go/build/gccgo.go
! 07c2dc964cf324ed1da8360c7ff81368  libgo/go/go/build/read.go
! 19eda25fb5946d5bc126c8de668c59ae  libgo/go/go/build/read_test.go
! b172838ffe01e1819a218164b16e23d5  libgo/go/go/build/syslist.go
! bc42fd82b00ef1da0fb863a04c89e368  libgo/go/go/build/syslist_test.go
  d0508cfc2d888979852c42a97500ae2c  libgo/go/go/build/testdata/cgo_disabled/cgo_disabled.go
  f657ff91cc94e1fd35f0e42e74d86020  libgo/go/go/build/testdata/cgo_disabled/empty.go
  9bb671d4d7713c3b7b37d5f8ce7b5b8f  libgo/go/go/build/testdata/doc/a_test.go
*************** d41d8cd98f00b204e9800998ecf8427e  libgo/
*** 84238,84256 ****
  de6991b3771170d6d3ce31fe2c89b5f1  libgo/go/go/build/testdata/other/file/file.go
  0f6926e3a63df39bdeb382e093950776  libgo/go/go/build/testdata/other/main.go
  842e240ef7931f92f94e63add9e6506f  libgo/go/go/build/testdata/withvendor/src/a/b/b.go
! eb31b8dabff5785d4a236b6721d75f29  libgo/go/go/build/testdata/withvendor/src/a/c/d/d.go
  9dcd23f222a1c03c55ea842cc261e586  libgo/go/go/constant/example_test.go
! b76c72c28bbf50448428b6b34789b7d7  libgo/go/go/constant/value.go
! db8fc78a2453f356fcf433c6b0d852b0  libgo/go/go/constant/value_test.go
! 7188c536179abe0c036bcc32f2bff879  libgo/go/go/doc/comment.go
! 5cf2a7bba82f129795fa29b158a40820  libgo/go/go/doc/comment_test.go
  ab3c88177579e5642eeeb1fe919a6cc2  libgo/go/go/doc/doc.go
! caeaa151bf48f4c2764eb4c881bdac71  libgo/go/go/doc/doc_test.go
! 117db6a9ce3d7c82826b2e8fa39ddb7b  libgo/go/go/doc/example.go
! b8957128fd815099b85b5974e652d270  libgo/go/go/doc/example_test.go
  fa43e8e8becdba36441c11035fd12961  libgo/go/go/doc/exports.go
  a8c394bea00b685d8d0c5c3e24018879  libgo/go/go/doc/filter.go
! 0206a7ce8fddd8fd5bc959b35051e87b  libgo/go/go/doc/headscan.go
  1104d0ee6bc6e739c64ed1ad078a6bd5  libgo/go/go/doc/reader.go
  5312f84d2d0336c226ea19fcb6113732  libgo/go/go/doc/synopsis.go
  68b6b95ed70c1edc284b99e8fca494a0  libgo/go/go/doc/synopsis_test.go
--- 90151,90169 ----
  de6991b3771170d6d3ce31fe2c89b5f1  libgo/go/go/build/testdata/other/file/file.go
  0f6926e3a63df39bdeb382e093950776  libgo/go/go/build/testdata/other/main.go
  842e240ef7931f92f94e63add9e6506f  libgo/go/go/build/testdata/withvendor/src/a/b/b.go
! eb31b8dabff5785d4a236b6721d75f29  libgo/go/go/build/testdata/withvendor/src/a/vendor/c/d/d.go
  9dcd23f222a1c03c55ea842cc261e586  libgo/go/go/constant/example_test.go
! dc5a41ba96cf4f03ad9101740e5305dc  libgo/go/go/constant/value.go
! c66922722a14b16ff715320d1ae60b77  libgo/go/go/constant/value_test.go
! 90244c0ba39bfd8861cc5a5831f3d512  libgo/go/go/doc/comment.go
! d780e53bc79b866b24f476916593a43a  libgo/go/go/doc/comment_test.go
  ab3c88177579e5642eeeb1fe919a6cc2  libgo/go/go/doc/doc.go
! 2970192b5008968e37b8890ce9d2429c  libgo/go/go/doc/doc_test.go
! 323e1f53b61f1a58982cba1e3036dcbe  libgo/go/go/doc/example.go
! 9305aff0cfadc347d336ee91af081c39  libgo/go/go/doc/example_test.go
  fa43e8e8becdba36441c11035fd12961  libgo/go/go/doc/exports.go
  a8c394bea00b685d8d0c5c3e24018879  libgo/go/go/doc/filter.go
! 65a21b416615cf6818c879000bb569f3  libgo/go/go/doc/headscan.go
  1104d0ee6bc6e739c64ed1ad078a6bd5  libgo/go/go/doc/reader.go
  5312f84d2d0336c226ea19fcb6113732  libgo/go/go/doc/synopsis.go
  68b6b95ed70c1edc284b99e8fca494a0  libgo/go/go/doc/synopsis_test.go
*************** f13e35e01236bc501949cc0b287f3bbd  libgo/
*** 84331,84349 ****
  b4aa32ac3afc28901c39479ed56c82cb  libgo/go/go/doc/testdata/testing.1.golden
  f13e35e01236bc501949cc0b287f3bbd  libgo/go/go/doc/testdata/testing.2.golden
  6fe45325395c5d54867b223e79ea5c58  libgo/go/go/doc/testdata/testing.go
! 1eee84e064879686666ea72b51907a6a  libgo/go/go/format/benchmark_test.go
  d950896d6e41074456c9560e96f01530  libgo/go/go/format/example_test.go
! 598b3997df235a8dc3df06b2ab736643  libgo/go/go/format/format.go
! 81e803ba3ff4ea967b85ca1964c2b0c7  libgo/go/go/format/format_test.go
! ba468fbb0494fe4b9e7bc2b2d14d47d3  libgo/go/go/format/internal.go
  277376daf740554d51f37e5a0f90d3ab  libgo/go/go/importer/importer.go
! 445f210a55791311b4f260d4c94842e7  libgo/go/go/importer/importer_test.go
  77696dafc97f7596d5278e9f1d0ba739  libgo/go/go/internal/gccgoimporter/ar.go
! 793d64a663f57774e79ad07c62d9d7f5  libgo/go/go/internal/gccgoimporter/gccgoinstallation.go
  32693376e96a6b80ca2ed06f4e097bf8  libgo/go/go/internal/gccgoimporter/gccgoinstallation_test.go
! 12f542900528e2c8761c660080a88fb5  libgo/go/go/internal/gccgoimporter/importer.go
! 5ce3c319dbb347e8ed22baf9007cb93e  libgo/go/go/internal/gccgoimporter/importer_test.go
! 429ff82a36b91cf1d352772483856168  libgo/go/go/internal/gccgoimporter/parser.go
  21dadbf1bff4c2adbb8dc8ec49147ecd  libgo/go/go/internal/gccgoimporter/parser_test.go
  6b5ad74e54217ee2ce9a4d097b9d0c7d  libgo/go/go/internal/gccgoimporter/testdata/aliases.go
  08b64ac87a4fec11683ee190a7b23a8a  libgo/go/go/internal/gccgoimporter/testdata/aliases.gox
--- 90244,90262 ----
  b4aa32ac3afc28901c39479ed56c82cb  libgo/go/go/doc/testdata/testing.1.golden
  f13e35e01236bc501949cc0b287f3bbd  libgo/go/go/doc/testdata/testing.2.golden
  6fe45325395c5d54867b223e79ea5c58  libgo/go/go/doc/testdata/testing.go
! 9017b048eec20f87a31077d05316e842  libgo/go/go/format/benchmark_test.go
  d950896d6e41074456c9560e96f01530  libgo/go/go/format/example_test.go
! dbfb0c1f123596ae7472d86ac6261611  libgo/go/go/format/format.go
! 380ca9251b43b72ed20d39c2a89eccae  libgo/go/go/format/format_test.go
! 91f5c3352f2eadd529476893acd69d73  libgo/go/go/format/internal.go
  277376daf740554d51f37e5a0f90d3ab  libgo/go/go/importer/importer.go
! 2ba584cb96ff09dbb063e5d2094c5008  libgo/go/go/importer/importer_test.go
  77696dafc97f7596d5278e9f1d0ba739  libgo/go/go/internal/gccgoimporter/ar.go
! 8e3a6950d33efa95e394b949babaf086  libgo/go/go/internal/gccgoimporter/gccgoinstallation.go
  32693376e96a6b80ca2ed06f4e097bf8  libgo/go/go/internal/gccgoimporter/gccgoinstallation_test.go
! 6d2110aa252ba390c43c76ab4e05e535  libgo/go/go/internal/gccgoimporter/importer.go
! 645727d4da77bf34aca527ba08cb74d0  libgo/go/go/internal/gccgoimporter/importer_test.go
! ce33a41ec260744656fb958247d03d31  libgo/go/go/internal/gccgoimporter/parser.go
  21dadbf1bff4c2adbb8dc8ec49147ecd  libgo/go/go/internal/gccgoimporter/parser_test.go
  6b5ad74e54217ee2ce9a4d097b9d0c7d  libgo/go/go/internal/gccgoimporter/testdata/aliases.go
  08b64ac87a4fec11683ee190a7b23a8a  libgo/go/go/internal/gccgoimporter/testdata/aliases.gox
*************** dda8a5c340df73d55f70ac0b56e8e92f  libgo/
*** 84368,84383 ****
  90e48df212447c17fa43fd56392e4af4  libgo/go/go/internal/gccgoimporter/testdata/libimportsar.a
  e8f52c582ba100d6fdf04b4a7bbc6f36  libgo/go/go/internal/gccgoimporter/testdata/nointerface.go
  00a05ff4434ba3eab68854cd84fed86b  libgo/go/go/internal/gccgoimporter/testdata/nointerface.gox
  d252c7977d4e0ba245d64fe2a5d30b26  libgo/go/go/internal/gccgoimporter/testdata/pointer.go
  7ba18b627fc4f0e18686f8ac6ab94ff1  libgo/go/go/internal/gccgoimporter/testdata/pointer.gox
  25905b474f8daf5c748fd1601d07ec2f  libgo/go/go/internal/gccgoimporter/testdata/time.gox
  6b7776e67ae5d53ca59f5656077e9ce9  libgo/go/go/internal/gccgoimporter/testdata/unicode.gox
  aed8c3f6c46b268ec4901d99015742b2  libgo/go/go/internal/gccgoimporter/testdata/v1reflect.gox
- 214e813064d9f385576b46d730170f3c  libgo/go/go/internal/gcimporter/bimport.go
  eb3940abadb512293f35d5547d38941c  libgo/go/go/internal/gcimporter/exportdata.go
! c19bee38ced6e49560a7f36e633337aa  libgo/go/go/internal/gcimporter/gcimporter.go
! c8d6501d3f2fff93a635872dc645ece3  libgo/go/go/internal/gcimporter/gcimporter_test.go
  4ed93af45a53d5cb924f28ca6dd2b33e  libgo/go/go/internal/gcimporter/iimport.go
  fa2d73794ce8800e4017f58c09681818  libgo/go/go/internal/gcimporter/testdata/a.go
  d78cd93092154dfb7842feab562a6248  libgo/go/go/internal/gcimporter/testdata/b.go
  fb949938da30994387e0897252ca0dae  libgo/go/go/internal/gcimporter/testdata/exports.go
--- 90281,90298 ----
  90e48df212447c17fa43fd56392e4af4  libgo/go/go/internal/gccgoimporter/testdata/libimportsar.a
  e8f52c582ba100d6fdf04b4a7bbc6f36  libgo/go/go/internal/gccgoimporter/testdata/nointerface.go
  00a05ff4434ba3eab68854cd84fed86b  libgo/go/go/internal/gccgoimporter/testdata/nointerface.gox
+ 1a8abe6ae4b102defe25619d21b1d030  libgo/go/go/internal/gccgoimporter/testdata/notinheap.go
+ 77882aee4bb2c6d05d3da6b08122a2e4  libgo/go/go/internal/gccgoimporter/testdata/notinheap.gox
  d252c7977d4e0ba245d64fe2a5d30b26  libgo/go/go/internal/gccgoimporter/testdata/pointer.go
  7ba18b627fc4f0e18686f8ac6ab94ff1  libgo/go/go/internal/gccgoimporter/testdata/pointer.gox
  25905b474f8daf5c748fd1601d07ec2f  libgo/go/go/internal/gccgoimporter/testdata/time.gox
  6b7776e67ae5d53ca59f5656077e9ce9  libgo/go/go/internal/gccgoimporter/testdata/unicode.gox
  aed8c3f6c46b268ec4901d99015742b2  libgo/go/go/internal/gccgoimporter/testdata/v1reflect.gox
  eb3940abadb512293f35d5547d38941c  libgo/go/go/internal/gcimporter/exportdata.go
! 105eef2e703b0243b1f4a1cda6eea737  libgo/go/go/internal/gcimporter/gcimporter.go
! fe9a3e26001d94f90ef00a6db5ee80a9  libgo/go/go/internal/gcimporter/gcimporter_test.go
  4ed93af45a53d5cb924f28ca6dd2b33e  libgo/go/go/internal/gcimporter/iimport.go
+ ab44749988ea788f1f20824546b37d1b  libgo/go/go/internal/gcimporter/support.go
  fa2d73794ce8800e4017f58c09681818  libgo/go/go/internal/gcimporter/testdata/a.go
  d78cd93092154dfb7842feab562a6248  libgo/go/go/internal/gcimporter/testdata/b.go
  fb949938da30994387e0897252ca0dae  libgo/go/go/internal/gcimporter/testdata/exports.go
*************** aeadde285ab5506ebf28678f041722fb  libgo/
*** 84391,84413 ****
  bf14de558b361637cf2ad47ad9aba0c5  libgo/go/go/internal/gcimporter/testdata/versions/test_go1.7_1.a
  5a0034304205c4a2c415093ecc5c04c8  libgo/go/go/internal/gcimporter/testdata/versions/test_go1.8_4.a
  77e3c54dd4f4906536e53da7838b5be9  libgo/go/go/internal/gcimporter/testdata/versions/test_go1.8_5.a
! 3a2e5288ea528a7358cce600ca28d01a  libgo/go/go/internal/srcimporter/srcimporter.go
! 1523de05d28a0a6b2b5dd849e8e2739b  libgo/go/go/internal/srcimporter/srcimporter_test.go
  5c5d6ebb692d11662cba1e0976c899cc  libgo/go/go/internal/srcimporter/testdata/issue20855/issue20855.go
  4d161a0b48ef22681b4fa685e515db91  libgo/go/go/internal/srcimporter/testdata/issue23092/issue23092.go
  55bc01f8d6ba92e431d53ab84eb2f323  libgo/go/go/internal/srcimporter/testdata/issue24392/issue24392.go
! 0c204bff3c6bbce0ca03661eebb52b36  libgo/go/go/parser/error_test.go
! 08fb9723c9b9c40812889ffdc9dc4320  libgo/go/go/parser/interface.go
  5c15f7685bbbdaa66cce590a6957d20e  libgo/go/go/parser/parser.go
! 53c8e7e1908e134ef43720f7d5b3c2eb  libgo/go/go/parser/parser_test.go
! 785eea855ded220460b8f6bbc78a392a  libgo/go/go/parser/performance_test.go
  b1da7f282fd4b9e9ef2ea850a38f0c62  libgo/go/go/parser/short_test.go
  362111aeac401922457af40d001736a1  libgo/go/go/parser/testdata/commas.src
  1a130846a9251f6d348aca13acd2e01a  libgo/go/go/parser/testdata/issue3106.src
! 7c42b1d28d39d1c4d6701f42a9dc385d  libgo/go/go/printer/nodes.go
! a3b1bc0d9114a1883a56f0adbb5d8d96  libgo/go/go/printer/performance_test.go
! fd39ce5ce5b78024b7b98be1dcb360e4  libgo/go/go/printer/printer.go
! f5c9cc107ee49431a1c81474bb082f9c  libgo/go/go/printer/printer_test.go
  d9f820e42a7eeb56cc7af343b9699b71  libgo/go/go/printer/testdata/alignment.golden
  16fe038ae8932a4471d08f8b7ba0d807  libgo/go/go/printer/testdata/alignment.input
  1b790755dad29c1b8f0bc91b97a336d5  libgo/go/go/printer/testdata/comments.golden
--- 90306,90329 ----
  bf14de558b361637cf2ad47ad9aba0c5  libgo/go/go/internal/gcimporter/testdata/versions/test_go1.7_1.a
  5a0034304205c4a2c415093ecc5c04c8  libgo/go/go/internal/gcimporter/testdata/versions/test_go1.8_4.a
  77e3c54dd4f4906536e53da7838b5be9  libgo/go/go/internal/gcimporter/testdata/versions/test_go1.8_5.a
! fa92356aba7350bcd4386737e0824bb8  libgo/go/go/internal/srcimporter/srcimporter.go
! 1ddcd620ea4493471981849cceb5752f  libgo/go/go/internal/srcimporter/srcimporter_test.go
  5c5d6ebb692d11662cba1e0976c899cc  libgo/go/go/internal/srcimporter/testdata/issue20855/issue20855.go
  4d161a0b48ef22681b4fa685e515db91  libgo/go/go/internal/srcimporter/testdata/issue23092/issue23092.go
  55bc01f8d6ba92e431d53ab84eb2f323  libgo/go/go/internal/srcimporter/testdata/issue24392/issue24392.go
! 5fae056f0f7aa75393db8c62fc01b8bd  libgo/go/go/parser/error_test.go
! 6914fa5fe8ab91cd3aefed9958decc21  libgo/go/go/parser/interface.go
  5c15f7685bbbdaa66cce590a6957d20e  libgo/go/go/parser/parser.go
! b82eaade03d7012d67bcf68a073792f1  libgo/go/go/parser/parser_test.go
! 4ba9c5f7c2884da437e84577e5740ece  libgo/go/go/parser/performance_test.go
  b1da7f282fd4b9e9ef2ea850a38f0c62  libgo/go/go/parser/short_test.go
  362111aeac401922457af40d001736a1  libgo/go/go/parser/testdata/commas.src
  1a130846a9251f6d348aca13acd2e01a  libgo/go/go/parser/testdata/issue3106.src
! 6480022653ed4624f85aa950e7fa37c1  libgo/go/go/parser/testdata/issue42951/not_a_file.go/invalid.go
! cb1c7e32aced5191cacdbb50386ed764  libgo/go/go/printer/nodes.go
! 47eef095890b2c6fb9965a113ac4dcde  libgo/go/go/printer/performance_test.go
! 95d892939ea16d933c4c84da2cce17f0  libgo/go/go/printer/printer.go
! 272c2ad0aa544b62bfb533bda8132a98  libgo/go/go/printer/printer_test.go
  d9f820e42a7eeb56cc7af343b9699b71  libgo/go/go/printer/testdata/alignment.golden
  16fe038ae8932a4471d08f8b7ba0d807  libgo/go/go/printer/testdata/alignment.input
  1b790755dad29c1b8f0bc91b97a336d5  libgo/go/go/printer/testdata/comments.golden
*************** b9fd25f9636658afa591244caa09d205  libgo/
*** 84424,84429 ****
--- 90340,90348 ----
  0475f52459bd9ca1c93bb1f7338bbfa4  libgo/go/go/printer/testdata/expressions.golden
  f464c3f5e94d978350ffc105a3e672cf  libgo/go/go/printer/testdata/expressions.input
  7eb7d2808ef1f4646bae851b2d047ac9  libgo/go/go/printer/testdata/expressions.raw
+ df4aaedd6d7edf6471c6363b96f795c7  libgo/go/go/printer/testdata/go2numbers.golden
+ 044db0cfacf41ac5e9e196f6d94dfbd5  libgo/go/go/printer/testdata/go2numbers.input
+ ca43d929b2ceece8c92e6759db0a8ff1  libgo/go/go/printer/testdata/go2numbers.norm
  54cbe27977459067884da0108f3c1c3c  libgo/go/go/printer/testdata/linebreaks.golden
  a5ba1a460ad6c282f937c16b5c2badd0  libgo/go/go/printer/testdata/linebreaks.input
  b776048c31403cc51479f0db5c84468e  libgo/go/go/printer/testdata/parser.go
*************** c32070e550551ee1057b8c015483f42d  libgo/
*** 84433,84512 ****
  6d36ac4950b4eaed99ad086d4897b606  libgo/go/go/printer/testdata/statements.input
  edf121a0d1c71749f3ece109a73694d0  libgo/go/go/scanner/errors.go
  aba79891d778a3912d3df8691cc2cd78  libgo/go/go/scanner/scanner.go
! f5bb0505901f7fd6d2a7b62189e025aa  libgo/go/go/scanner/scanner_test.go
  baea047d348fd93adde5c2f5902bf9a7  libgo/go/go/token/example_test.go
! 0c8920254a2ecab180cd07950c3e7eb6  libgo/go/go/token/position.go
  99e5f129d15043788208753943786cd4  libgo/go/go/token/position_test.go
  814b43a3b82369e7deed2ff7e7c6d079  libgo/go/go/token/serialize.go
  7f96cc16b25fcc0687a856f1bd33e74f  libgo/go/go/token/serialize_test.go
  0328cf596208beae09a04e7285aabe78  libgo/go/go/token/token.go
  6a2b61bdb350f083c29a0af1bcf7a37f  libgo/go/go/token/token_test.go
! e233e2f85ae9f638b0aef7106a27ea63  libgo/go/go/types/api.go
! f57ec211d6e325ae92ecd417dd62e590  libgo/go/go/types/api_test.go
! 20efdd42c3f2f118b6ada80cc567a118  libgo/go/go/types/assignments.go
! 3277d4c37a24723e71987f2e017aded1  libgo/go/go/types/builtins.go
! cde321641c5ea1443b5ed29fd32d85d3  libgo/go/go/types/builtins_test.go
! 35a8ca44cda950cbad9aa27babe63ea7  libgo/go/go/types/call.go
! bf225b8d0d9b39ab32f4ec4beb3980cd  libgo/go/go/types/check.go
! 10078be74cb51d3c0f0e76acf42f2e18  libgo/go/go/types/check_test.go
! e12cecbb6fe91580f41b879c1d66d74d  libgo/go/go/types/conversions.go
! cb809f60686312bcc8f18f364669d8ab  libgo/go/go/types/decl.go
! 17dd8139700817cfecfacb68b452aa7d  libgo/go/go/types/errors.go
  1868beb856f30bdb110b2fdc91238e69  libgo/go/go/types/eval.go
  1367e8b84242c7d42cb6bb1cc633b528  libgo/go/go/types/eval_test.go
! 3ba2ea912ecbdaf588b956313e2c13c7  libgo/go/go/types/example_test.go
! 891283dea0697d8a97ec9028b1010979  libgo/go/go/types/expr.go
  9bed1f6e6ef958381f2b6527b48b2847  libgo/go/go/types/exprstring.go
  8ed6d8b0fb472274826f384ff6d90799  libgo/go/go/types/exprstring_test.go
  35a1fe79aa62d392ec0a7e238232d6fd  libgo/go/go/types/gccgosizes.go
! 325ccbcb33bdfddf4ecd21ecc8721a09  libgo/go/go/types/gotype.go
! d0ec3e67e6111c59d9c4a0984fea3b63  libgo/go/go/types/hilbert_test.go
! 231d94629753635893df2fc4af295857  libgo/go/go/types/initorder.go
! fecc171901b86ec56d70db716a6a2f37  libgo/go/go/types/issues_test.go
! 658b32da38ee52a9d5f59102935d0d8c  libgo/go/go/types/labels.go
! 5028349625ed2eff69c475127a3482a9  libgo/go/go/types/lookup.go
! b519795a0bb704b7eab0444944f30b6a  libgo/go/go/types/methodset.go
  cf4e23e4c3f35c8cd199940f4c90256c  libgo/go/go/types/object.go
  55a65c987a87796a9208085aba2a1e48  libgo/go/go/types/object_test.go
  f2ff0868ba0ab2672cc4e85528cc2f7c  libgo/go/go/types/objset.go
! 8432851783ddf0e7dfc53b47253ea57a  libgo/go/go/types/operand.go
! f75410532ce21c9d655754c87f488235  libgo/go/go/types/package.go
! 8c52f791548852edb3e03d0011098ea1  libgo/go/go/types/predicates.go
! 92f4af3adf0a95d033d6fc1edf94de0a  libgo/go/go/types/resolver.go
  25fe964a60967efdafd8cbb1ba593ca0  libgo/go/go/types/resolver_test.go
  1ca75c3032dd6f340590617c3c02cb0b  libgo/go/go/types/return.go
  f9948680939961e0f6418fac0fa903bb  libgo/go/go/types/scope.go
  4500c9306a301889ef87a02195752d7b  libgo/go/go/types/selection.go
! 5227915f74fe2314c2146484dc903ce1  libgo/go/go/types/self_test.go
! 1bc77dcb867a6ad2f50a94288f450d2e  libgo/go/go/types/sizes.go
  4e1e2589621b76695b808b6b677f39e6  libgo/go/go/types/sizes_test.go
! bf3b18c66601bcc6b6b5242581f88f20  libgo/go/go/types/stdlib_test.go
! 8aec00c432c09f2b473118374a957aeb  libgo/go/go/types/stmt.go
  008462149fe95dcefb74d6f667b079af  libgo/go/go/types/testdata/blank.src
! 632934bc5bbbd659c8c3a07796881d26  libgo/go/go/types/testdata/builtins.src
  f29bac3367b85c3b92fa33e54b10e705  libgo/go/go/types/testdata/const0.src
  8c449f1a8fb86e1997b04091718c3fe7  libgo/go/go/types/testdata/const1.src
! 2ab91ed190045c0fcfe970ad155c220a  libgo/go/go/types/testdata/constdecl.src
  1fe35ddc4ddb5b91c5bfe6afc171ab86  libgo/go/go/types/testdata/conversions.src
  94ced19e10ffde3473340cc1d79339e7  libgo/go/go/types/testdata/conversions2.src
! 2d362df20f7d6ebb27b040cbe6221f39  libgo/go/go/types/testdata/cycles.src
  e422e493f2eb6cf61258dd94b1abcfca  libgo/go/go/types/testdata/cycles1.src
! 5ef0e0e43c6e05a97079349e9384c0e8  libgo/go/go/types/testdata/cycles2.src
  cbe80cc074110d1d70d23636e566e8b2  libgo/go/go/types/testdata/cycles3.src
  504c4a77c5f0451810add2ad1422146a  libgo/go/go/types/testdata/cycles4.src
  bde8ec7d2176a8a2c54817e41af082f9  libgo/go/go/types/testdata/cycles5.src
  85940ae79e224255c65ada285263111d  libgo/go/go/types/testdata/decls0.src
! 04bca8f53945b517fb259ae54de4f85f  libgo/go/go/types/testdata/decls1.src
  12a09f4291016af1c6dadd60ba5fd9e4  libgo/go/go/types/testdata/decls2a.src
! 4c1381528b8b36bc96723dd601311fdf  libgo/go/go/types/testdata/decls2b.src
! 9d6991b1de20006d480d641c0b8ddea7  libgo/go/go/types/testdata/decls3.src
! 73cf582eac8720eb7940158b9743b372  libgo/go/go/types/testdata/decls4.src
  07e078643ddda701387abc66e94c175f  libgo/go/go/types/testdata/decls5.src
  a35ff5cb8c071230e952d1dce60e00c5  libgo/go/go/types/testdata/errors.src
  2031bfb47acd5d5bf3f870f3d420f66f  libgo/go/go/types/testdata/expr0.src
  a9ce179fc2b1677dad210c8873a24217  libgo/go/go/types/testdata/expr1.src
  7b84531a732a948ce059a36b3a69422a  libgo/go/go/types/testdata/expr2.src
! 49951648e44992e34308df03d936f0ba  libgo/go/go/types/testdata/expr3.src
  5c94eeb6b55885675d4f84c0e6b20ca8  libgo/go/go/types/testdata/gotos.src
  db641dbe9fcdb62946ff5fd045c88f59  libgo/go/go/types/testdata/importC.src
  46ff342259a4ec3927ed1907e02dc771  libgo/go/go/types/testdata/importdecl0a.src
--- 90352,90433 ----
  6d36ac4950b4eaed99ad086d4897b606  libgo/go/go/printer/testdata/statements.input
  edf121a0d1c71749f3ece109a73694d0  libgo/go/go/scanner/errors.go
  aba79891d778a3912d3df8691cc2cd78  libgo/go/go/scanner/scanner.go
! 13bbaa71abf373f2d244bc7e4996b37c  libgo/go/go/scanner/scanner_test.go
  baea047d348fd93adde5c2f5902bf9a7  libgo/go/go/token/example_test.go
! dfa2e5e8ef03adf46474f835ff1b3045  libgo/go/go/token/position.go
  99e5f129d15043788208753943786cd4  libgo/go/go/token/position_test.go
  814b43a3b82369e7deed2ff7e7c6d079  libgo/go/go/token/serialize.go
  7f96cc16b25fcc0687a856f1bd33e74f  libgo/go/go/token/serialize_test.go
  0328cf596208beae09a04e7285aabe78  libgo/go/go/token/token.go
  6a2b61bdb350f083c29a0af1bcf7a37f  libgo/go/go/token/token_test.go
! 0b28272cccb96d56514e76753a143bbc  libgo/go/go/types/api.go
! 0a9922529a47bd740112c558290ef2ef  libgo/go/go/types/api_test.go
! df569654d5d781799a2e02a5557cdccb  libgo/go/go/types/assignments.go
! d1414dac16e32e4f1d17421f1023b7c4  libgo/go/go/types/builtins.go
! a08bb7ccec9c006300659030a2ec45ff  libgo/go/go/types/builtins_test.go
! 84de8c3e970a780277007600cc42721b  libgo/go/go/types/call.go
! 51d845a4bf98a7a5a44b8fdad52ea6d8  libgo/go/go/types/check.go
! 4c1549e9d3aeb7e155655abaf2a7d1c3  libgo/go/go/types/check_test.go
! ba6a1328352da11a2264613aa6281320  libgo/go/go/types/conversions.go
! f19b22c98ce47373cb0b9be2d31cf2d5  libgo/go/go/types/decl.go
! eadf01a4966ea0f59b0602d822e1552f  libgo/go/go/types/errorcodes.go
! 745f11eb0d717043d1a4d83a97038e5a  libgo/go/go/types/errorcodes_test.go
! e3c6cc0b49358383decd728fdce4e663  libgo/go/go/types/errors.go
  1868beb856f30bdb110b2fdc91238e69  libgo/go/go/types/eval.go
  1367e8b84242c7d42cb6bb1cc633b528  libgo/go/go/types/eval_test.go
! 8cb45ba351067662a9e438b5b118e444  libgo/go/go/types/example_test.go
! 309e778ec94c84141f879d214b6b09a1  libgo/go/go/types/expr.go
  9bed1f6e6ef958381f2b6527b48b2847  libgo/go/go/types/exprstring.go
  8ed6d8b0fb472274826f384ff6d90799  libgo/go/go/types/exprstring_test.go
  35a1fe79aa62d392ec0a7e238232d6fd  libgo/go/go/types/gccgosizes.go
! d75feba1cd83fe7877030671d6e1595a  libgo/go/go/types/gotype.go
! 7c5725c280fc3df46912afedf256b134  libgo/go/go/types/hilbert_test.go
! f2b01caf257d7a20674b79942cacb48e  libgo/go/go/types/initorder.go
! cf0067f3096ff68413a52d58ba2919da  libgo/go/go/types/issues_test.go
! dd137e07eb215940585370fb3a21d360  libgo/go/go/types/labels.go
! a397eaec8ae991e1faffc624876dd32a  libgo/go/go/types/lookup.go
! a3839545900d35fc3ecc163471723220  libgo/go/go/types/methodset.go
  cf4e23e4c3f35c8cd199940f4c90256c  libgo/go/go/types/object.go
  55a65c987a87796a9208085aba2a1e48  libgo/go/go/types/object_test.go
  f2ff0868ba0ab2672cc4e85528cc2f7c  libgo/go/go/types/objset.go
! 6bf5cf67e425b7e175e899b81e4dbdc3  libgo/go/go/types/operand.go
! e46dba56e3772c008e9e2afc1ea14074  libgo/go/go/types/package.go
! 56e523aebb94254653edd764cb17068c  libgo/go/go/types/predicates.go
! 6690aa16e3ae9531a614918816ccd232  libgo/go/go/types/resolver.go
  25fe964a60967efdafd8cbb1ba593ca0  libgo/go/go/types/resolver_test.go
  1ca75c3032dd6f340590617c3c02cb0b  libgo/go/go/types/return.go
  f9948680939961e0f6418fac0fa903bb  libgo/go/go/types/scope.go
  4500c9306a301889ef87a02195752d7b  libgo/go/go/types/selection.go
! a6ee3a769de242de18fcc51827d9137a  libgo/go/go/types/self_test.go
! 702a7c3990388a5c32e89a8e2f805e8c  libgo/go/go/types/sizes.go
  4e1e2589621b76695b808b6b677f39e6  libgo/go/go/types/sizes_test.go
! a2cd16591fdfa79f7ef98644f290a774  libgo/go/go/types/stdlib_test.go
! 1d6954d1f038b47a698a52200efe3fbe  libgo/go/go/types/stmt.go
  008462149fe95dcefb74d6f667b079af  libgo/go/go/types/testdata/blank.src
! f8085390ee334b329a853c5715290771  libgo/go/go/types/testdata/builtins.src
  f29bac3367b85c3b92fa33e54b10e705  libgo/go/go/types/testdata/const0.src
  8c449f1a8fb86e1997b04091718c3fe7  libgo/go/go/types/testdata/const1.src
! 86c2c1ef1f64d8fa8226516803b7f277  libgo/go/go/types/testdata/constdecl.src
  1fe35ddc4ddb5b91c5bfe6afc171ab86  libgo/go/go/types/testdata/conversions.src
  94ced19e10ffde3473340cc1d79339e7  libgo/go/go/types/testdata/conversions2.src
! 544338dccc69a24b87a4f6ac5cea5538  libgo/go/go/types/testdata/cycles.src
  e422e493f2eb6cf61258dd94b1abcfca  libgo/go/go/types/testdata/cycles1.src
! 3f5efced473a835a0542b6b6f04977ab  libgo/go/go/types/testdata/cycles2.src
  cbe80cc074110d1d70d23636e566e8b2  libgo/go/go/types/testdata/cycles3.src
  504c4a77c5f0451810add2ad1422146a  libgo/go/go/types/testdata/cycles4.src
  bde8ec7d2176a8a2c54817e41af082f9  libgo/go/go/types/testdata/cycles5.src
  85940ae79e224255c65ada285263111d  libgo/go/go/types/testdata/decls0.src
! c666841104c793be2718aabe501cc6cf  libgo/go/go/types/testdata/decls1.src
  12a09f4291016af1c6dadd60ba5fd9e4  libgo/go/go/types/testdata/decls2a.src
! c042412a65bfe3884be84c1307a74e00  libgo/go/go/types/testdata/decls2b.src
! 20608e21f45967894e9fc9f9d7b215c8  libgo/go/go/types/testdata/decls3.src
! 70b1c5068e1e39d45116b9de826fd32e  libgo/go/go/types/testdata/decls4.src
  07e078643ddda701387abc66e94c175f  libgo/go/go/types/testdata/decls5.src
  a35ff5cb8c071230e952d1dce60e00c5  libgo/go/go/types/testdata/errors.src
  2031bfb47acd5d5bf3f870f3d420f66f  libgo/go/go/types/testdata/expr0.src
  a9ce179fc2b1677dad210c8873a24217  libgo/go/go/types/testdata/expr1.src
  7b84531a732a948ce059a36b3a69422a  libgo/go/go/types/testdata/expr2.src
! 4231a6e2d73a8c955c772ea98a1fbda0  libgo/go/go/types/testdata/expr3.src
  5c94eeb6b55885675d4f84c0e6b20ca8  libgo/go/go/types/testdata/gotos.src
  db641dbe9fcdb62946ff5fd045c88f59  libgo/go/go/types/testdata/importC.src
  46ff342259a4ec3927ed1907e02dc771  libgo/go/go/types/testdata/importdecl0a.src
*************** f2a5574eb1b0300d377550415b4f39f1  libgo/
*** 84516,84554 ****
  03247d6c441722b2c1dd0bf2a5b22d1e  libgo/go/go/types/testdata/init0.src
  65d334e9813ba6e1367f9920ffede43b  libgo/go/go/types/testdata/init1.src
  82306de0bef1e661c90f9f77801cf752  libgo/go/go/types/testdata/init2.src
- 294c4e9b5b2c655dccfff1c26c4c076b  libgo/go/go/types/testdata/issue23203a.src
- 75ce73a035540c6b26a395e889633146  libgo/go/go/types/testdata/issue23203b.src
  8113077fe1c39682d3f202161d5c9d79  libgo/go/go/types/testdata/issue25008a.src
  ab72be0005cedb4d1cbe8c9640935d68  libgo/go/go/types/testdata/issue25008b.src
! e7401a04f84992c19f7d98d9e13793de  libgo/go/go/types/testdata/issue26390.src
! 9f5c56aed18d6c2a84e6c9e8d5b3229a  libgo/go/go/types/testdata/issue28251.src
! 2b4e4ef82f44fe02d733a13119334aea  libgo/go/go/types/testdata/issue6977.src
! 2b7a0326d869f6262a6627c05362b016  libgo/go/go/types/testdata/issues.src
  6970d9e692e79c1b9d7e65fe0567d01e  libgo/go/go/types/testdata/labels.src
  cd845c1a3d1cdd5a2aea623c3f926380  libgo/go/go/types/testdata/literals.src
! 5d712b9276d2bd0f3d15e5abc6930776  libgo/go/go/types/testdata/methodsets.src
! 7d6936f2188687b8b18d49183962ea95  libgo/go/go/types/testdata/shifts.src
! d5ffaf88b2ad1c49bc1cd551fb005216  libgo/go/go/types/testdata/stmt0.src
  ba7656e7e724bb7562202316c80f9787  libgo/go/go/types/testdata/stmt1.src
  a0be82eda51173b561726a64e04cfcd9  libgo/go/go/types/testdata/vardecl.src
  4abe25acbffdb7feb1ba047129054611  libgo/go/go/types/token_test.go
  d739614ca3c1042ff3503130c3b74e2b  libgo/go/go/types/type.go
  e808c960462de22436f95b1ee1c13043  libgo/go/go/types/typestring.go
  e66a9c7215c924cc2523a90433cbd769  libgo/go/go/types/typestring_test.go
! 1de323e8be69b47ab3d8fa31debb45c6  libgo/go/go/types/typexpr.go
! 02fe40f6d16e6814e8702e9a081c420d  libgo/go/go/types/universe.go
! 5cc80c9e1a8d4e92e79a6e42ae7f127b  libgo/go/golang.org/x/crypto/chacha20/chacha_arm64.go
! bac721418be8a0521c04a6d788168441  libgo/go/golang.org/x/crypto/chacha20/chacha_generic.go
! 37cd0a9597818025bb39fcbf34d8d2ff  libgo/go/golang.org/x/crypto/chacha20/chacha_noasm.go
! 8c414039318ac9cad4bdc2af8ac51606  libgo/go/golang.org/x/crypto/chacha20/chacha_ppc64le.go
! c8dbfc95977b1be78910ec0042e33f80  libgo/go/golang.org/x/crypto/chacha20/chacha_s390x.go
! 15019b48e02b972cb8bb6d81c49106f4  libgo/go/golang.org/x/crypto/chacha20/xor.go
  bc4746b36731db02210cb2a2779a996b  libgo/go/golang.org/x/crypto/chacha20poly1305/chacha20poly1305.go
! 0893efb1b983f7f020b7affcc6030604  libgo/go/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.go
! a127e308b077bc718b57abe5020a34ca  libgo/go/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_generic.go
! d1c02dce9e9c622684d992064f6d688c  libgo/go/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_noasm.go
  9e9656b041ae703ef7995fb3c45173cd  libgo/go/golang.org/x/crypto/chacha20poly1305/xchacha20poly1305.go
! 93d9e522aac904cb698d9276774b6b89  libgo/go/golang.org/x/crypto/cryptobyte/asn1.go
  a852d2d0592351484d2ea6420359b481  libgo/go/golang.org/x/crypto/cryptobyte/asn1/asn1.go
  ab8c271bbf0d149ff9712708622bb755  libgo/go/golang.org/x/crypto/cryptobyte/builder.go
  6991f1b3d36a2f360ea8ba64afddb1dc  libgo/go/golang.org/x/crypto/cryptobyte/string.go
--- 90437,90470 ----
  03247d6c441722b2c1dd0bf2a5b22d1e  libgo/go/go/types/testdata/init0.src
  65d334e9813ba6e1367f9920ffede43b  libgo/go/go/types/testdata/init1.src
  82306de0bef1e661c90f9f77801cf752  libgo/go/go/types/testdata/init2.src
  8113077fe1c39682d3f202161d5c9d79  libgo/go/go/types/testdata/issue25008a.src
  ab72be0005cedb4d1cbe8c9640935d68  libgo/go/go/types/testdata/issue25008b.src
! f003ba3e8bb918f7829c6aea8658f7fd  libgo/go/go/types/testdata/issues.src
  6970d9e692e79c1b9d7e65fe0567d01e  libgo/go/go/types/testdata/labels.src
  cd845c1a3d1cdd5a2aea623c3f926380  libgo/go/go/types/testdata/literals.src
! 12cabb6502fee8532daa89bf04d6c0d4  libgo/go/go/types/testdata/methodsets.src
! aa25dc6346414ca9da5f55995ec67c56  libgo/go/go/types/testdata/shifts.src
! 186bc7b03a0d04e5187b9fe455277ab4  libgo/go/go/types/testdata/stmt0.src
  ba7656e7e724bb7562202316c80f9787  libgo/go/go/types/testdata/stmt1.src
  a0be82eda51173b561726a64e04cfcd9  libgo/go/go/types/testdata/vardecl.src
  4abe25acbffdb7feb1ba047129054611  libgo/go/go/types/token_test.go
  d739614ca3c1042ff3503130c3b74e2b  libgo/go/go/types/type.go
  e808c960462de22436f95b1ee1c13043  libgo/go/go/types/typestring.go
  e66a9c7215c924cc2523a90433cbd769  libgo/go/go/types/typestring_test.go
! 6db6f3e6e31c1e31a4aaf64ac3abbdb5  libgo/go/go/types/typexpr.go
! 30cc99ca40ff0d0ebb41439489c1c711  libgo/go/go/types/universe.go
! 294175d8fccde1f8879927872562464c  libgo/go/golang.org/x/crypto/chacha20/chacha_arm64.go
! 6e8cb26a6e41c21717e772a10b2f2a6d  libgo/go/golang.org/x/crypto/chacha20/chacha_generic.go
! 7082af02c0206377432fd6e14cd66515  libgo/go/golang.org/x/crypto/chacha20/chacha_noasm.go
! bb1312b92dafd211928941424de5ae72  libgo/go/golang.org/x/crypto/chacha20/chacha_ppc64le.go
! 39549f24b1eb49abf6a0a665d7908ac3  libgo/go/golang.org/x/crypto/chacha20/chacha_s390x.go
! 001058088edcf8ef751b1dfdd825a2dd  libgo/go/golang.org/x/crypto/chacha20/xor.go
  bc4746b36731db02210cb2a2779a996b  libgo/go/golang.org/x/crypto/chacha20poly1305/chacha20poly1305.go
! 0973c058dd91a31d8d511f8c95c1ece6  libgo/go/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.go
! 9e59656d225750b0552c8b3bcca22a3b  libgo/go/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_generic.go
! a208724f94100e267934abb44876746e  libgo/go/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_noasm.go
  9e9656b041ae703ef7995fb3c45173cd  libgo/go/golang.org/x/crypto/chacha20poly1305/xchacha20poly1305.go
! f814205c53d4e6ca09f449eca77cc2b7  libgo/go/golang.org/x/crypto/cryptobyte/asn1.go
  a852d2d0592351484d2ea6420359b481  libgo/go/golang.org/x/crypto/cryptobyte/asn1/asn1.go
  ab8c271bbf0d149ff9712708622bb755  libgo/go/golang.org/x/crypto/cryptobyte/builder.go
  6991f1b3d36a2f360ea8ba64afddb1dc  libgo/go/golang.org/x/crypto/cryptobyte/string.go
*************** ffcbf66e442f8121fdd6dc6f677d0a28  libgo/
*** 84565,84586 ****
  4e827205e775951ae90121fe4dfb07a4  libgo/go/golang.org/x/crypto/internal/subtle/aliasing_appengine.go
  13a32f566cf41201625b267b19b33a59  libgo/go/golang.org/x/crypto/poly1305/bits_compat.go
  e39f74da755ccdbd9e3862245e23fc21  libgo/go/golang.org/x/crypto/poly1305/bits_go1.13.go
! 1e93f93eace094ab65798d592a9c1438  libgo/go/golang.org/x/crypto/poly1305/mac_noasm.go
! 1926556ad11f5fd282676fc2fd98944e  libgo/go/golang.org/x/crypto/poly1305/poly1305.go
! 2e0941a8195a19415a0ae9611581a271  libgo/go/golang.org/x/crypto/poly1305/sum_amd64.go
! 2450eb3b3c50e61d2a78a6828fc5464a  libgo/go/golang.org/x/crypto/poly1305/sum_arm.go
! 8069eb0f1d3b4c776f3bd4b49d59c39f  libgo/go/golang.org/x/crypto/poly1305/sum_generic.go
! e33bbb2fca1e74ad04ebffe2a5aa5958  libgo/go/golang.org/x/crypto/poly1305/sum_noasm.go
! af414594b0be6b4cb11925b5b4c76140  libgo/go/golang.org/x/crypto/poly1305/sum_ppc64le.go
! 2743c4d8206d31ce3426ecc1f8ad0cf2  libgo/go/golang.org/x/crypto/poly1305/sum_s390x.go
  5d4950ecb7b26d2c5e4e7b4e0dd74707  libgo/go/golang.org/x/mod/LICENSE
  3a55d95595a6f9e37dee53826b4daff2  libgo/go/golang.org/x/mod/PATENTS
  01f071fdba44f661c678e282b4b86423  libgo/go/golang.org/x/mod/internal/lazyregexp/lazyre.go
! 9578bb0f2d6067585ebd40a98ed77a97  libgo/go/golang.org/x/mod/modfile/print.go
! 853edbbf355681e656593d96dd80807c  libgo/go/golang.org/x/mod/modfile/read.go
! 0718a8001c35877ccd52528c4e4bbc09  libgo/go/golang.org/x/mod/modfile/rule.go
! a57d004771f3a24e681ab4fadbe81540  libgo/go/golang.org/x/mod/module/module.go
! 605d1fa93dde9356becac408108532c5  libgo/go/golang.org/x/mod/semver/semver.go
  492129824fc9784e2099ab478c939872  libgo/go/golang.org/x/mod/sumdb/cache.go
  becf75eb44b4de4d653ad78ff96f046c  libgo/go/golang.org/x/mod/sumdb/client.go
  cda0ed349ceae0857ba39c4fc10044f3  libgo/go/golang.org/x/mod/sumdb/dirhash/hash.go
--- 90481,90500 ----
  4e827205e775951ae90121fe4dfb07a4  libgo/go/golang.org/x/crypto/internal/subtle/aliasing_appengine.go
  13a32f566cf41201625b267b19b33a59  libgo/go/golang.org/x/crypto/poly1305/bits_compat.go
  e39f74da755ccdbd9e3862245e23fc21  libgo/go/golang.org/x/crypto/poly1305/bits_go1.13.go
! 418a6aac1e09a6a5c97c9b91e973b0c0  libgo/go/golang.org/x/crypto/poly1305/mac_noasm.go
! f7cac3740f0f0648b7ec7f56a3807ca8  libgo/go/golang.org/x/crypto/poly1305/poly1305.go
! 8e00e16edc44eb4005ad263e1a0a75cf  libgo/go/golang.org/x/crypto/poly1305/sum_amd64.go
! 98c6abccaad0c4c2e1d2385d96236c9a  libgo/go/golang.org/x/crypto/poly1305/sum_generic.go
! 6f5d476ef9ad8820918fc146df976b25  libgo/go/golang.org/x/crypto/poly1305/sum_ppc64le.go
! 5256516c87093d2075734d4dd3913917  libgo/go/golang.org/x/crypto/poly1305/sum_s390x.go
  5d4950ecb7b26d2c5e4e7b4e0dd74707  libgo/go/golang.org/x/mod/LICENSE
  3a55d95595a6f9e37dee53826b4daff2  libgo/go/golang.org/x/mod/PATENTS
  01f071fdba44f661c678e282b4b86423  libgo/go/golang.org/x/mod/internal/lazyregexp/lazyre.go
! eef486d3a5702629cd3b1f847e74d9a9  libgo/go/golang.org/x/mod/modfile/print.go
! d7449f53ffc8bc05508db0741986ebc3  libgo/go/golang.org/x/mod/modfile/read.go
! 3853a5dd9be96cf437d2e3cb59211c9e  libgo/go/golang.org/x/mod/modfile/rule.go
! 0ac763cbab52f0d2b4eb4ff562022731  libgo/go/golang.org/x/mod/module/module.go
! 275fb73fa32ea3b8de7e2016c2c8a2cf  libgo/go/golang.org/x/mod/semver/semver.go
  492129824fc9784e2099ab478c939872  libgo/go/golang.org/x/mod/sumdb/cache.go
  becf75eb44b4de4d653ad78ff96f046c  libgo/go/golang.org/x/mod/sumdb/client.go
  cda0ed349ceae0857ba39c4fc10044f3  libgo/go/golang.org/x/mod/sumdb/dirhash/hash.go
*************** e3de471cf243e8815c29682f42fb6b99  libgo/
*** 84590,84610 ****
  fccc2c770b7828c5d3661624520b3f90  libgo/go/golang.org/x/mod/sumdb/tlog/note.go
  03b7d8c74ae821341092399957604da9  libgo/go/golang.org/x/mod/sumdb/tlog/tile.go
  b1e8095ab63cff363f1041823e7f687b  libgo/go/golang.org/x/mod/sumdb/tlog/tlog.go
! 9e888b90d8573a2b4054009981b028e6  libgo/go/golang.org/x/mod/zip/zip.go
! 6c455b00b019170c11d58ca73466bdb7  libgo/go/golang.org/x/net/dns/dnsmessage/message.go
  602426b485b3cb10d9b87b39886e4a56  libgo/go/golang.org/x/net/http/httpguts/guts.go
  dc2b0b7aace53b563bca04175247881e  libgo/go/golang.org/x/net/http/httpguts/httplex.go
! 855c664fd1fe2db5665edcbdf0ec43c6  libgo/go/golang.org/x/net/http/httpproxy/proxy.go
  962a47212c19377e92a498be4f60d639  libgo/go/golang.org/x/net/http2/hpack/encode.go
  e2c26266346af2f9439c83b75a384f3e  libgo/go/golang.org/x/net/http2/hpack/hpack.go
! a0e9767fb41a6cf3518e402b8f15ec28  libgo/go/golang.org/x/net/http2/hpack/huffman.go
  bd5e9668dfcbd5c3da3373e2a2f6ebb0  libgo/go/golang.org/x/net/http2/hpack/tables.go
  fb79b74bbfea28d7246ffe3b8d205ade  libgo/go/golang.org/x/net/idna/idna10.0.0.go
  fbede0954fc47c0dd3d39b6717933b2f  libgo/go/golang.org/x/net/idna/idna9.0.0.go
  33ea1bc0c96b90bc05b2e40c49242729  libgo/go/golang.org/x/net/idna/punycode.go
  5ea6016ab7ed40246a799b71b8f86456  libgo/go/golang.org/x/net/idna/tables10.0.0.go
  340637f486682e7a5b47fb60861659fa  libgo/go/golang.org/x/net/idna/tables11.0.0.go
! 38e7a884ff3806b812684cf930e5376c  libgo/go/golang.org/x/net/idna/tables12.00.go
  4164652b93db1331492d3cecc56cd1c6  libgo/go/golang.org/x/net/idna/tables9.0.0.go
  1d7b3e2ea7786cbe36a81d4fab3c2e38  libgo/go/golang.org/x/net/idna/trie.go
  85b4d935f17f8c700e85e324975790e7  libgo/go/golang.org/x/net/idna/trieval.go
--- 90504,90525 ----
  fccc2c770b7828c5d3661624520b3f90  libgo/go/golang.org/x/mod/sumdb/tlog/note.go
  03b7d8c74ae821341092399957604da9  libgo/go/golang.org/x/mod/sumdb/tlog/tile.go
  b1e8095ab63cff363f1041823e7f687b  libgo/go/golang.org/x/mod/sumdb/tlog/tlog.go
! d617e2b509c7adb1d575de7cd68bf62d  libgo/go/golang.org/x/mod/zip/zip.go
! e615ffcbf45a2b16f2a2b02518f68aa7  libgo/go/golang.org/x/net/dns/dnsmessage/message.go
  602426b485b3cb10d9b87b39886e4a56  libgo/go/golang.org/x/net/http/httpguts/guts.go
  dc2b0b7aace53b563bca04175247881e  libgo/go/golang.org/x/net/http/httpguts/httplex.go
! a2e657d268ae254bb89e9490236fbd6d  libgo/go/golang.org/x/net/http/httpproxy/proxy.go
  962a47212c19377e92a498be4f60d639  libgo/go/golang.org/x/net/http2/hpack/encode.go
  e2c26266346af2f9439c83b75a384f3e  libgo/go/golang.org/x/net/http2/hpack/hpack.go
! 75f17bda97f4bb746eea8496660ff0fb  libgo/go/golang.org/x/net/http2/hpack/huffman.go
  bd5e9668dfcbd5c3da3373e2a2f6ebb0  libgo/go/golang.org/x/net/http2/hpack/tables.go
  fb79b74bbfea28d7246ffe3b8d205ade  libgo/go/golang.org/x/net/idna/idna10.0.0.go
  fbede0954fc47c0dd3d39b6717933b2f  libgo/go/golang.org/x/net/idna/idna9.0.0.go
  33ea1bc0c96b90bc05b2e40c49242729  libgo/go/golang.org/x/net/idna/punycode.go
  5ea6016ab7ed40246a799b71b8f86456  libgo/go/golang.org/x/net/idna/tables10.0.0.go
  340637f486682e7a5b47fb60861659fa  libgo/go/golang.org/x/net/idna/tables11.0.0.go
! e79ea41619ace8f001b78183be7410c9  libgo/go/golang.org/x/net/idna/tables12.0.0.go
! d571c53db0769302598d14feeeb2a05e  libgo/go/golang.org/x/net/idna/tables13.0.0.go
  4164652b93db1331492d3cecc56cd1c6  libgo/go/golang.org/x/net/idna/tables9.0.0.go
  1d7b3e2ea7786cbe36a81d4fab3c2e38  libgo/go/golang.org/x/net/idna/trie.go
  85b4d935f17f8c700e85e324975790e7  libgo/go/golang.org/x/net/idna/trieval.go
*************** f36569f7299b92a48642d22e99c40bf9  libgo/
*** 84616,84626 ****
  c43a70009595bdd359eeb92a6f382e5c  libgo/go/golang.org/x/net/lif/syscall.go
  098af34ff8bbcff6d527c7e69339107a  libgo/go/golang.org/x/net/lif/zsys_solaris.go
  b5229968d2aa82db5ce227ff8a556c17  libgo/go/golang.org/x/net/nettest/conntest.go
! bf4f684d1b7c1908ed5cc6a4ed7511b9  libgo/go/golang.org/x/net/nettest/nettest.go
! 61f146e7c87cac3eae6a0d69fa9d0b66  libgo/go/golang.org/x/net/nettest/nettest_stub.go
! ed2107c9ceaa62ce316addae912c267b  libgo/go/golang.org/x/net/nettest/nettest_unix.go
  9b04a2d1a00f3d24e45ca3d89c02ed55  libgo/go/golang.org/x/net/nettest/nettest_windows.go
! b69c1ecda015f5606cbaa6c4ed349ed2  libgo/go/golang.org/x/net/route/address.go
  2212f11eb8bbac2067c381bd530de27f  libgo/go/golang.org/x/net/route/binary.go
  3f7010d7aa2d1f0056776e502268e86c  libgo/go/golang.org/x/net/route/interface.go
  452f46106eaa7f59893f258d2590a27f  libgo/go/golang.org/x/net/route/interface_announce.go
--- 90531,90541 ----
  c43a70009595bdd359eeb92a6f382e5c  libgo/go/golang.org/x/net/lif/syscall.go
  098af34ff8bbcff6d527c7e69339107a  libgo/go/golang.org/x/net/lif/zsys_solaris.go
  b5229968d2aa82db5ce227ff8a556c17  libgo/go/golang.org/x/net/nettest/conntest.go
! 353f5979995eedfc4344b61887a1d1b5  libgo/go/golang.org/x/net/nettest/nettest.go
! a373b6fae6265f316a7e74169717f047  libgo/go/golang.org/x/net/nettest/nettest_stub.go
! c84be399cee482507f20c78700a35b57  libgo/go/golang.org/x/net/nettest/nettest_unix.go
  9b04a2d1a00f3d24e45ca3d89c02ed55  libgo/go/golang.org/x/net/nettest/nettest_windows.go
! 453e65ccf87a74cedb5c8568caee365c  libgo/go/golang.org/x/net/route/address.go
  2212f11eb8bbac2067c381bd530de27f  libgo/go/golang.org/x/net/route/binary.go
  3f7010d7aa2d1f0056776e502268e86c  libgo/go/golang.org/x/net/route/interface.go
  452f46106eaa7f59893f258d2590a27f  libgo/go/golang.org/x/net/route/interface_announce.go
*************** c710caae4ba863d2129e62234442a0b4  libgo/
*** 84629,84636 ****
  4d1fcc318ff42997d12d9e1809470dbc  libgo/go/golang.org/x/net/route/interface_multicast.go
  fb888eeead4668205e2aa214dd7a9555  libgo/go/golang.org/x/net/route/interface_openbsd.go
  3a1665372ef78ba7b00f2438177fa8ea  libgo/go/golang.org/x/net/route/message.go
! e7573835789458403df91da4fa6d9fd6  libgo/go/golang.org/x/net/route/route.go
! 94f6f82d446e84c42cb39a162123b94c  libgo/go/golang.org/x/net/route/route_classic.go
  c2139a4ad02da0c00701d24f41567a20  libgo/go/golang.org/x/net/route/route_openbsd.go
  a2364eeb5755f822a00bdc84469682e1  libgo/go/golang.org/x/net/route/sys.go
  383e5ad87a434a3a4e9234f50b9d801b  libgo/go/golang.org/x/net/route/sys_darwin.go
--- 90544,90551 ----
  4d1fcc318ff42997d12d9e1809470dbc  libgo/go/golang.org/x/net/route/interface_multicast.go
  fb888eeead4668205e2aa214dd7a9555  libgo/go/golang.org/x/net/route/interface_openbsd.go
  3a1665372ef78ba7b00f2438177fa8ea  libgo/go/golang.org/x/net/route/message.go
! 63ded70e77b0eecff568674bebb240a4  libgo/go/golang.org/x/net/route/route.go
! 48735830dd762f682356141d9f216ea1  libgo/go/golang.org/x/net/route/route_classic.go
  c2139a4ad02da0c00701d24f41567a20  libgo/go/golang.org/x/net/route/route_openbsd.go
  a2364eeb5755f822a00bdc84469682e1  libgo/go/golang.org/x/net/route/sys.go
  383e5ad87a434a3a4e9234f50b9d801b  libgo/go/golang.org/x/net/route/sys_darwin.go
*************** fa8e88415aea9c3f9affb88657ee4e95  libgo/
*** 84649,84681 ****
  377f5a6c1e428f1fcc1317b4ff54db8d  libgo/go/golang.org/x/net/route/zsys_freebsd_arm64.go
  69d348fc35dd61eded30c974642338d1  libgo/go/golang.org/x/net/route/zsys_netbsd.go
  29dfae294b6fa731202660d1484aba36  libgo/go/golang.org/x/net/route/zsys_openbsd.go
! 1f0bd5e07208c06323ebbc351cef71f9  libgo/go/golang.org/x/sys/cpu/byteorder.go
! 3f051ed1892e1b71f78a261d6f18d9d5  libgo/go/golang.org/x/sys/cpu/cpu.go
! 637b18cec6403e7c6a8b6ad2ab1ea9fb  libgo/go/golang.org/x/sys/cpu/cpu_aix_ppc64.go
! e012cf423e50e8cf86d14e15ecf8cb93  libgo/go/golang.org/x/sys/cpu/cpu_gc_s390x.go
! c16cd2d283795036aa54187ac3ea07be  libgo/go/golang.org/x/sys/cpu/cpu_gc_x86.go
! e0bc6706f149f0af949f31b78fa508a1  libgo/go/golang.org/x/sys/cpu/cpu_gccgo.c
! 1c59e2cfc2f1e7952fa9e72cd7e6b2bc  libgo/go/golang.org/x/sys/cpu/cpu_gccgo.go
  12f7e4b7edf300007aaa54324dbd3abc  libgo/go/golang.org/x/sys/cpu/cpu_gccgo_s390x.go
! 376106bf7be63dfe3a995dded82782f5  libgo/go/golang.org/x/sys/cpu/cpu_linux.go
! af4bfe3ea7e529b978702811171c67ae  libgo/go/golang.org/x/sys/cpu/cpu_linux_arm64.go
! e35174155639217deda83e0c0696155d  libgo/go/golang.org/x/sys/cpu/cpu_linux_other.go
  63acb9717e602641e848fbb925475113  libgo/go/golang.org/x/sys/cpu/cpu_linux_ppc64x.go
! 46bc62b238db9b9658bb2118fe968fcf  libgo/go/golang.org/x/sys/cpu/cpu_linux_s390x.go
! 3f7b42160256df4976506136e9972707  libgo/go/golang.org/x/sys/cpu/cpu_riscv64.go
! e501154214e4a3725cd6b13f1815ab56  libgo/go/golang.org/x/sys/cpu/cpu_x86.go
! 515cf3d8ee54e273bd6b1a9531c4f3be  libgo/go/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go
  1f98dc5015303aab187a536269e6231b  libgo/go/golang.org/x/text/secure/bidirule/bidirule.go
  6e8e590126f079169319e0d233663f82  libgo/go/golang.org/x/text/secure/bidirule/bidirule10.0.0.go
  3d337d19f4039985f6b7304d2725df5c  libgo/go/golang.org/x/text/secure/bidirule/bidirule9.0.0.go
! f0e0a0f1aa5901ab9f77ab2bb212aa3c  libgo/go/golang.org/x/text/transform/transform.go
  518d271c7405a857a0338011671ae3fa  libgo/go/golang.org/x/text/unicode/bidi/bidi.go
  65e1f7062ad3c6d02973663c25eaf6c8  libgo/go/golang.org/x/text/unicode/bidi/bracket.go
! 95a22c30579127d84a9e9dcbad27bbad  libgo/go/golang.org/x/text/unicode/bidi/core.go
  a94e8735d389eafb100e8701c924819e  libgo/go/golang.org/x/text/unicode/bidi/prop.go
  146c655815fc90e42238d55a7ab4bbd9  libgo/go/golang.org/x/text/unicode/bidi/tables10.0.0.go
  ad06408704bb70ff0b701a4c91637c66  libgo/go/golang.org/x/text/unicode/bidi/tables11.0.0.go
! 5877508abaa5fe5a27205c462cd78e8b  libgo/go/golang.org/x/text/unicode/bidi/tables12.0.0.go
  4ec5d1da2c2c6ed3665886a9eea0ff4d  libgo/go/golang.org/x/text/unicode/bidi/tables9.0.0.go
  de1e7e42151682f52b862c88c21804e7  libgo/go/golang.org/x/text/unicode/bidi/trieval.go
  6f35763cd2d9b734d8b22c1e843d6ef6  libgo/go/golang.org/x/text/unicode/norm/composition.go
--- 90564,90619 ----
  377f5a6c1e428f1fcc1317b4ff54db8d  libgo/go/golang.org/x/net/route/zsys_freebsd_arm64.go
  69d348fc35dd61eded30c974642338d1  libgo/go/golang.org/x/net/route/zsys_netbsd.go
  29dfae294b6fa731202660d1484aba36  libgo/go/golang.org/x/net/route/zsys_openbsd.go
! 72c424862ee2e52c1b2d8a512e3d99af  libgo/go/golang.org/x/sys/cpu/byteorder.go
! 915388e7d1ba9e27c2f31767b6a67317  libgo/go/golang.org/x/sys/cpu/cpu.go
! 3f4be11cf0cfb86c2dd19883165d0f9b  libgo/go/golang.org/x/sys/cpu/cpu_aix.go
! 93487a30ddfed1539bd8be87e0440af3  libgo/go/golang.org/x/sys/cpu/cpu_arm.go
! b6f0ad68a7fa53522d0cc523d3bccdf8  libgo/go/golang.org/x/sys/cpu/cpu_arm64.go
! 6a3004a70ef68c51edf001b91db461f7  libgo/go/golang.org/x/sys/cpu/cpu_gc_arm64.go
! 9160e8a992724b1b99332a6478ad722f  libgo/go/golang.org/x/sys/cpu/cpu_gc_s390x.go
! e838c4b9c35fa70c17bc64ed1f19b731  libgo/go/golang.org/x/sys/cpu/cpu_gc_x86.go
! 934b9b37caf25623d6cb877337df50e8  libgo/go/golang.org/x/sys/cpu/cpu_gccgo_arm64.go
  12f7e4b7edf300007aaa54324dbd3abc  libgo/go/golang.org/x/sys/cpu/cpu_gccgo_s390x.go
! e0bc6706f149f0af949f31b78fa508a1  libgo/go/golang.org/x/sys/cpu/cpu_gccgo_x86.c
! 1c59e2cfc2f1e7952fa9e72cd7e6b2bc  libgo/go/golang.org/x/sys/cpu/cpu_gccgo_x86.go
! c1ab7547deb2442c6276f18ef12be434  libgo/go/golang.org/x/sys/cpu/cpu_linux.go
! dfa4fd04aa81a48316bf341f872bb405  libgo/go/golang.org/x/sys/cpu/cpu_linux_arm.go
! 844a01fc6dcf133ac1824858e651794a  libgo/go/golang.org/x/sys/cpu/cpu_linux_arm64.go
! acf6450dd66693a58e49cceb2d3a6dde  libgo/go/golang.org/x/sys/cpu/cpu_linux_mips64x.go
! edcbc08a28e3ee95bbe6de0c23f7a06f  libgo/go/golang.org/x/sys/cpu/cpu_linux_noinit.go
  63acb9717e602641e848fbb925475113  libgo/go/golang.org/x/sys/cpu/cpu_linux_ppc64x.go
! cba171250f2ae7823c6f05eea268ef25  libgo/go/golang.org/x/sys/cpu/cpu_linux_s390x.go
! 5764d0518a237f22b7f34f2fdd60dc4f  libgo/go/golang.org/x/sys/cpu/cpu_mips64x.go
! 39bbaa74d66a45b6ca744702cd6c8544  libgo/go/golang.org/x/sys/cpu/cpu_mipsx.go
! 1dcdcebd484888e4e3f728664f67172a  libgo/go/golang.org/x/sys/cpu/cpu_netbsd_arm64.go
! df064edf2863b53d67231ed238b2bef0  libgo/go/golang.org/x/sys/cpu/cpu_other.go
! 3e7df39456861c43ddbdc7886f47dc21  libgo/go/golang.org/x/sys/cpu/cpu_other_arch.go
! 9cc30fa0b92bc7419bf3b11e81ffbb91  libgo/go/golang.org/x/sys/cpu/cpu_other_arm.go
! 5b1c2e1eca603397033117a07e5325e5  libgo/go/golang.org/x/sys/cpu/cpu_other_arm64.go
! 3c30b0c32448877292b1b36e82dc7c50  libgo/go/golang.org/x/sys/cpu/cpu_other_mips64x.go
! 69f1f59f683e5205718f368bf47ee7c8  libgo/go/golang.org/x/sys/cpu/cpu_ppc64x.go
! b8c18684d0ecf11b798f30b622745a3e  libgo/go/golang.org/x/sys/cpu/cpu_riscv.go
! 8f1e9722ce73e259974c50de54c6d4ed  libgo/go/golang.org/x/sys/cpu/cpu_riscv64.go
! c0dffb19ab8b9b3d65648ce0245712bc  libgo/go/golang.org/x/sys/cpu/cpu_s390x.go
! ace277646f736c2e3ad4d2b88d691ca0  libgo/go/golang.org/x/sys/cpu/cpu_wasm.go
! a91909911a2968caefec3f73fa967c1e  libgo/go/golang.org/x/sys/cpu/cpu_x86.go
! f56c0de271b61bcd29da88c95796b5fa  libgo/go/golang.org/x/sys/cpu/cpu_zos.go
! 5e07f432b17138e15cca555da7146863  libgo/go/golang.org/x/sys/cpu/cpu_zos_s390x.go
! 00875b04df26aec9a2001a82eeef4ae0  libgo/go/golang.org/x/sys/cpu/hwcap_linux.go
! d156e232e449c78fb4c6f9bd9f5d14d9  libgo/go/golang.org/x/sys/cpu/syscall_aix_gccgo.go
! 382f831387d1fb7fc3dc25ac183442c0  libgo/go/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go
  1f98dc5015303aab187a536269e6231b  libgo/go/golang.org/x/text/secure/bidirule/bidirule.go
  6e8e590126f079169319e0d233663f82  libgo/go/golang.org/x/text/secure/bidirule/bidirule10.0.0.go
  3d337d19f4039985f6b7304d2725df5c  libgo/go/golang.org/x/text/secure/bidirule/bidirule9.0.0.go
! ccfe8db2db5e042dbf99382b06245078  libgo/go/golang.org/x/text/transform/transform.go
  518d271c7405a857a0338011671ae3fa  libgo/go/golang.org/x/text/unicode/bidi/bidi.go
  65e1f7062ad3c6d02973663c25eaf6c8  libgo/go/golang.org/x/text/unicode/bidi/bracket.go
! b0c9f9e3eeaa730ef8535680a58b9d6c  libgo/go/golang.org/x/text/unicode/bidi/core.go
  a94e8735d389eafb100e8701c924819e  libgo/go/golang.org/x/text/unicode/bidi/prop.go
  146c655815fc90e42238d55a7ab4bbd9  libgo/go/golang.org/x/text/unicode/bidi/tables10.0.0.go
  ad06408704bb70ff0b701a4c91637c66  libgo/go/golang.org/x/text/unicode/bidi/tables11.0.0.go
! 87cd82d04212c6d9237ab1bc557c3a58  libgo/go/golang.org/x/text/unicode/bidi/tables12.0.0.go
! 8c0c90f7d65724f4f09574747e233a51  libgo/go/golang.org/x/text/unicode/bidi/tables13.0.0.go
  4ec5d1da2c2c6ed3665886a9eea0ff4d  libgo/go/golang.org/x/text/unicode/bidi/tables9.0.0.go
  de1e7e42151682f52b862c88c21804e7  libgo/go/golang.org/x/text/unicode/bidi/trieval.go
  6f35763cd2d9b734d8b22c1e843d6ef6  libgo/go/golang.org/x/text/unicode/norm/composition.go
*************** f9d515d1d2c32e2992a936e3a8fb8e43  libgo/
*** 84686,84751 ****
  c4127ecd30651864558a44a09c9e9e70  libgo/go/golang.org/x/text/unicode/norm/readwriter.go
  2fb185792a2d680c8ce8868111884f64  libgo/go/golang.org/x/text/unicode/norm/tables10.0.0.go
  ad477cd0e75fc1729df8667d39889ad2  libgo/go/golang.org/x/text/unicode/norm/tables11.0.0.go
! eb614197c7a0b3a9eb8ff65e643e9ec6  libgo/go/golang.org/x/text/unicode/norm/tables12.0.0.go
  0cf511ecd9ab859a86305c7f152f42d1  libgo/go/golang.org/x/text/unicode/norm/tables9.0.0.go
  f9454484617953b06b380088ecda689c  libgo/go/golang.org/x/text/unicode/norm/transform.go
  3aae5b2aa8a6489b1c0ae5ab31f1d356  libgo/go/golang.org/x/text/unicode/norm/trie.go
  5d4950ecb7b26d2c5e4e7b4e0dd74707  libgo/go/golang.org/x/tools/LICENSE
  3a55d95595a6f9e37dee53826b4daff2  libgo/go/golang.org/x/tools/PATENTS
! 27c983b78c734738e4cfb0865ce10b2e  libgo/go/golang.org/x/tools/go/analysis/analysis.go
! 1f8c23a6b7f0ee8ea46724ae17a82ed2  libgo/go/golang.org/x/tools/go/analysis/diagnostic.go
! 7c4af178c78403243cbfb723f1dca9a1  libgo/go/golang.org/x/tools/go/analysis/doc.go
! 591148823169ef73b6ea349e38f44271  libgo/go/golang.org/x/tools/go/analysis/internal/analysisflags/flags.go
! 974b151902590c43cf4f22e3cf5d1dc4  libgo/go/golang.org/x/tools/go/analysis/internal/analysisflags/help.go
  2b7faa806070439f60ffcf09da47c956  libgo/go/golang.org/x/tools/go/analysis/internal/facts/facts.go
  047690a925914d659c7d606db34e2953  libgo/go/golang.org/x/tools/go/analysis/internal/facts/imports.go
! 35e46892406ca2ec9603dbe307890c55  libgo/go/golang.org/x/tools/go/analysis/passes/asmdecl/asmdecl.go
  752f5ca6d07525ce6521335e31fdb010  libgo/go/golang.org/x/tools/go/analysis/passes/assign/assign.go
  d6e4016f63abf5cbba2bf42af536f6bf  libgo/go/golang.org/x/tools/go/analysis/passes/atomic/atomic.go
  02c202ce36618742088c9753ace3b671  libgo/go/golang.org/x/tools/go/analysis/passes/bools/bools.go
! fd45780df5d203846ed50005169828a4  libgo/go/golang.org/x/tools/go/analysis/passes/buildtag/buildtag.go
! b97e95f597596ac4003ca7a7496b87a1  libgo/go/golang.org/x/tools/go/analysis/passes/cgocall/cgocall.go
  e093bc475e5fd432d58a41b43695f493  libgo/go/golang.org/x/tools/go/analysis/passes/composite/composite.go
  9d4974d405f509290cc1636daae4aaf5  libgo/go/golang.org/x/tools/go/analysis/passes/composite/whitelist.go
  b9b564e1890e5e6b6b38e8c66a1711bb  libgo/go/golang.org/x/tools/go/analysis/passes/copylock/copylock.go
  8021155ced2fcc8daef17d6d6bc64eb9  libgo/go/golang.org/x/tools/go/analysis/passes/ctrlflow/ctrlflow.go
! 20cb43d8e4042c04c326c4777b4f5b1b  libgo/go/golang.org/x/tools/go/analysis/passes/errorsas/errorsas.go
! 48197af0ea225efa33db6c69df22e37d  libgo/go/golang.org/x/tools/go/analysis/passes/httpresponse/httpresponse.go
  3b5932a4e4c3910b6120192d474a3a91  libgo/go/golang.org/x/tools/go/analysis/passes/inspect/inspect.go
! 98fb60c6876c3f3b2d33dd5036caba35  libgo/go/golang.org/x/tools/go/analysis/passes/internal/analysisutil/util.go
  587ab2465297764bd9ae960bb5105286  libgo/go/golang.org/x/tools/go/analysis/passes/loopclosure/loopclosure.go
  b30ac7d0075decdc3e45bee86192b9be  libgo/go/golang.org/x/tools/go/analysis/passes/lostcancel/lostcancel.go
  349239697f7da1a9e8baaab5e84ab663  libgo/go/golang.org/x/tools/go/analysis/passes/nilfunc/nilfunc.go
  ffa02dd6d141f2ce330857b5ac7ab678  libgo/go/golang.org/x/tools/go/analysis/passes/pkgfact/pkgfact.go
! c9cbbcc2cf6ac91a1844bfcf7cc7834a  libgo/go/golang.org/x/tools/go/analysis/passes/printf/printf.go
! d3dfaf90263921af20047517b003cb16  libgo/go/golang.org/x/tools/go/analysis/passes/printf/types.go
  e6fa433a73322f3d5843e8490159e030  libgo/go/golang.org/x/tools/go/analysis/passes/shift/dead.go
  1e7582193fbdec5d182005e69fe393eb  libgo/go/golang.org/x/tools/go/analysis/passes/shift/shift.go
  aab0951d37eb49a1ba2be11f1c4e040f  libgo/go/golang.org/x/tools/go/analysis/passes/stdmethods/stdmethods.go
! 63e923544013e082ad1f7b13fcb477ba  libgo/go/golang.org/x/tools/go/analysis/passes/structtag/structtag.go
  065a81c257f58f07cc5c379124e76cae  libgo/go/golang.org/x/tools/go/analysis/passes/tests/tests.go
! f7cbc9c0b19d82c1a665e32a93bdce1c  libgo/go/golang.org/x/tools/go/analysis/passes/unmarshal/unmarshal.go
! 8d588c638f02d5d1aa13257cebf40819  libgo/go/golang.org/x/tools/go/analysis/passes/unreachable/unreachable.go
! c7b9a85595c61c649b6bafa8bb8f5b28  libgo/go/golang.org/x/tools/go/analysis/passes/unsafeptr/unsafeptr.go
! 0b32326762b24ff7b585be1d9a8ed722  libgo/go/golang.org/x/tools/go/analysis/passes/unusedresult/unusedresult.go
  d229db7f70c41d6a68ee5946e87d872c  libgo/go/golang.org/x/tools/go/analysis/unitchecker/main.go
! 7bf9cfe16457d762a39d4c45c08525c3  libgo/go/golang.org/x/tools/go/analysis/unitchecker/unitchecker.go
! 7851538d9bce17b699ecf542da86e2c4  libgo/go/golang.org/x/tools/go/analysis/unitchecker/unitchecker112.go
! 96cf54c8c33fbce934833873be2347cb  libgo/go/golang.org/x/tools/go/analysis/validate.go
  50c85ecf02816f1b403349e85622d7ea  libgo/go/golang.org/x/tools/go/ast/astutil/enclosing.go
! 26f84eec1dc68e00850f098f986d9865  libgo/go/golang.org/x/tools/go/ast/astutil/imports.go
  53e84944057680f2ad2c83b3b705c0f6  libgo/go/golang.org/x/tools/go/ast/astutil/rewrite.go
! b1fb2201e0dbb2bc635d5aa6ec4e5c65  libgo/go/golang.org/x/tools/go/ast/astutil/util.go
! 38a4c88900b1af9f63b96d9ba2bd907d  libgo/go/golang.org/x/tools/go/ast/inspector/inspector.go
! f589740becbfb3a3186d11a08bbc4b5c  libgo/go/golang.org/x/tools/go/ast/inspector/typeof.go
  a009c86f7a675bae6190aaf68d579b31  libgo/go/golang.org/x/tools/go/cfg/builder.go
! 7e7ec4ea059e25d5256ab3bac0116ab6  libgo/go/golang.org/x/tools/go/cfg/cfg.go
! 48a68c6ef5214d8f47d4656dd6377ca8  libgo/go/golang.org/x/tools/go/types/objectpath/objectpath.go
  a718ff62afafa1b52e7d8b336031e195  libgo/go/golang.org/x/tools/go/types/typeutil/callee.go
  fb6c2862bcf88d38633449c9d62a0c0a  libgo/go/golang.org/x/tools/go/types/typeutil/imports.go
  b2e833de33caaa37aa3cf677b8b878da  libgo/go/golang.org/x/tools/go/types/typeutil/map.go
  f474c8805d07a4bcd752b963c7a72da9  libgo/go/golang.org/x/tools/go/types/typeutil/methodsetcache.go
  f4a1ba4e7337cb75bee6aba59d4a09ca  libgo/go/golang.org/x/tools/go/types/typeutil/ui.go
  a413d6b3884e141783f23d00d5838777  libgo/go/golang.org/x/xerrors/LICENSE
  3a55d95595a6f9e37dee53826b4daff2  libgo/go/golang.org/x/xerrors/PATENTS
  87e85122864fe749bfe1f872546a4ca6  libgo/go/golang.org/x/xerrors/README
--- 90624,90697 ----
  c4127ecd30651864558a44a09c9e9e70  libgo/go/golang.org/x/text/unicode/norm/readwriter.go
  2fb185792a2d680c8ce8868111884f64  libgo/go/golang.org/x/text/unicode/norm/tables10.0.0.go
  ad477cd0e75fc1729df8667d39889ad2  libgo/go/golang.org/x/text/unicode/norm/tables11.0.0.go
! 828b4bc3281dd91ec4772124c0fe8686  libgo/go/golang.org/x/text/unicode/norm/tables12.0.0.go
! 9c77fd3cc7c7bdcc7cf946d5d427da5b  libgo/go/golang.org/x/text/unicode/norm/tables13.0.0.go
  0cf511ecd9ab859a86305c7f152f42d1  libgo/go/golang.org/x/text/unicode/norm/tables9.0.0.go
  f9454484617953b06b380088ecda689c  libgo/go/golang.org/x/text/unicode/norm/transform.go
  3aae5b2aa8a6489b1c0ae5ab31f1d356  libgo/go/golang.org/x/text/unicode/norm/trie.go
  5d4950ecb7b26d2c5e4e7b4e0dd74707  libgo/go/golang.org/x/tools/LICENSE
  3a55d95595a6f9e37dee53826b4daff2  libgo/go/golang.org/x/tools/PATENTS
! 3e66a29882c623d9f97222fc1e5ade7d  libgo/go/golang.org/x/tools/go/analysis/analysis.go
! 8e6057601126792179df2ee6f4512147  libgo/go/golang.org/x/tools/go/analysis/diagnostic.go
! d1aed24c142c9ff02b201a582b014e69  libgo/go/golang.org/x/tools/go/analysis/doc.go
! 32d5f865d959f91fbc5fc2b4a4e815ee  libgo/go/golang.org/x/tools/go/analysis/internal/analysisflags/flags.go
! 0f93e9c057af5edb0820cd30ccfc2bc5  libgo/go/golang.org/x/tools/go/analysis/internal/analysisflags/help.go
  2b7faa806070439f60ffcf09da47c956  libgo/go/golang.org/x/tools/go/analysis/internal/facts/facts.go
  047690a925914d659c7d606db34e2953  libgo/go/golang.org/x/tools/go/analysis/internal/facts/imports.go
! 3f812f43e51734577ea6cafc292a30af  libgo/go/golang.org/x/tools/go/analysis/passes/asmdecl/asmdecl.go
  752f5ca6d07525ce6521335e31fdb010  libgo/go/golang.org/x/tools/go/analysis/passes/assign/assign.go
  d6e4016f63abf5cbba2bf42af536f6bf  libgo/go/golang.org/x/tools/go/analysis/passes/atomic/atomic.go
  02c202ce36618742088c9753ace3b671  libgo/go/golang.org/x/tools/go/analysis/passes/bools/bools.go
! 3e21b7bf7f21452a4854f26a01a8ff08  libgo/go/golang.org/x/tools/go/analysis/passes/buildtag/buildtag.go
! be7a1d8a4e7a7afd663038a3afa12bb9  libgo/go/golang.org/x/tools/go/analysis/passes/cgocall/cgocall.go
  e093bc475e5fd432d58a41b43695f493  libgo/go/golang.org/x/tools/go/analysis/passes/composite/composite.go
  9d4974d405f509290cc1636daae4aaf5  libgo/go/golang.org/x/tools/go/analysis/passes/composite/whitelist.go
  b9b564e1890e5e6b6b38e8c66a1711bb  libgo/go/golang.org/x/tools/go/analysis/passes/copylock/copylock.go
  8021155ced2fcc8daef17d6d6bc64eb9  libgo/go/golang.org/x/tools/go/analysis/passes/ctrlflow/ctrlflow.go
! 270d2204868268034bd85140ae7c3d6b  libgo/go/golang.org/x/tools/go/analysis/passes/errorsas/errorsas.go
! f6b2a86344ae4d5f1fe872b6a2a0b378  libgo/go/golang.org/x/tools/go/analysis/passes/framepointer/framepointer.go
! 18a705762411f83155eb6ec477b5c1c7  libgo/go/golang.org/x/tools/go/analysis/passes/httpresponse/httpresponse.go
! 6ad355721a9d78190ed5db055c3ffdad  libgo/go/golang.org/x/tools/go/analysis/passes/ifaceassert/ifaceassert.go
  3b5932a4e4c3910b6120192d474a3a91  libgo/go/golang.org/x/tools/go/analysis/passes/inspect/inspect.go
! 6142bd66242c3953d5a14ed1d3161a27  libgo/go/golang.org/x/tools/go/analysis/passes/internal/analysisutil/util.go
  587ab2465297764bd9ae960bb5105286  libgo/go/golang.org/x/tools/go/analysis/passes/loopclosure/loopclosure.go
  b30ac7d0075decdc3e45bee86192b9be  libgo/go/golang.org/x/tools/go/analysis/passes/lostcancel/lostcancel.go
  349239697f7da1a9e8baaab5e84ab663  libgo/go/golang.org/x/tools/go/analysis/passes/nilfunc/nilfunc.go
  ffa02dd6d141f2ce330857b5ac7ab678  libgo/go/golang.org/x/tools/go/analysis/passes/pkgfact/pkgfact.go
! a86fea9db1724722aa66f348ae2da74b  libgo/go/golang.org/x/tools/go/analysis/passes/printf/printf.go
! 24a606a46b6b55bb490e47299cd0080f  libgo/go/golang.org/x/tools/go/analysis/passes/printf/types.go
  e6fa433a73322f3d5843e8490159e030  libgo/go/golang.org/x/tools/go/analysis/passes/shift/dead.go
  1e7582193fbdec5d182005e69fe393eb  libgo/go/golang.org/x/tools/go/analysis/passes/shift/shift.go
  aab0951d37eb49a1ba2be11f1c4e040f  libgo/go/golang.org/x/tools/go/analysis/passes/stdmethods/stdmethods.go
! 77c1bde28750b5909e322ce45ace0296  libgo/go/golang.org/x/tools/go/analysis/passes/stringintconv/string.go
! 086df3e2ff2d8908352456c0df68bd4a  libgo/go/golang.org/x/tools/go/analysis/passes/structtag/structtag.go
! dcfadae355b9d9b829bc5e45d5d4f373  libgo/go/golang.org/x/tools/go/analysis/passes/testinggoroutine/testinggoroutine.go
  065a81c257f58f07cc5c379124e76cae  libgo/go/golang.org/x/tools/go/analysis/passes/tests/tests.go
! a07a47429c9717c0496262cf6699c4fa  libgo/go/golang.org/x/tools/go/analysis/passes/unmarshal/unmarshal.go
! 5481cda4886283c9ee939223c048b3d0  libgo/go/golang.org/x/tools/go/analysis/passes/unreachable/unreachable.go
! 0beb6bda795bb2066c74956398f3f988  libgo/go/golang.org/x/tools/go/analysis/passes/unsafeptr/unsafeptr.go
! 7c42000ab97d6750616696ec636be6f0  libgo/go/golang.org/x/tools/go/analysis/passes/unusedresult/unusedresult.go
  d229db7f70c41d6a68ee5946e87d872c  libgo/go/golang.org/x/tools/go/analysis/unitchecker/main.go
! ea067aea11f0fe6c63df53e8db56c22b  libgo/go/golang.org/x/tools/go/analysis/unitchecker/unitchecker.go
! 3af9b34683095504cc713e6baa8073be  libgo/go/golang.org/x/tools/go/analysis/unitchecker/unitchecker112.go
! 0e97f1a01944e52b289f15b6d5cd5804  libgo/go/golang.org/x/tools/go/analysis/validate.go
  50c85ecf02816f1b403349e85622d7ea  libgo/go/golang.org/x/tools/go/ast/astutil/enclosing.go
! ee4b46f4339448515f1709dc25f94b34  libgo/go/golang.org/x/tools/go/ast/astutil/imports.go
  53e84944057680f2ad2c83b3b705c0f6  libgo/go/golang.org/x/tools/go/ast/astutil/rewrite.go
! 313722a1bf0a9dae2e023c9f8fffd1d4  libgo/go/golang.org/x/tools/go/ast/astutil/util.go
! 834a33506af13a7f0cf8539876816cf9  libgo/go/golang.org/x/tools/go/ast/inspector/inspector.go
! 051b30c426b6c2b0e878db3872105862  libgo/go/golang.org/x/tools/go/ast/inspector/typeof.go
  a009c86f7a675bae6190aaf68d579b31  libgo/go/golang.org/x/tools/go/cfg/builder.go
! 69b538a6ff1160cef6c6613f368e1629  libgo/go/golang.org/x/tools/go/cfg/cfg.go
! b15b7bbe77e382ab230c647fdd598ed0  libgo/go/golang.org/x/tools/go/types/objectpath/objectpath.go
  a718ff62afafa1b52e7d8b336031e195  libgo/go/golang.org/x/tools/go/types/typeutil/callee.go
  fb6c2862bcf88d38633449c9d62a0c0a  libgo/go/golang.org/x/tools/go/types/typeutil/imports.go
  b2e833de33caaa37aa3cf677b8b878da  libgo/go/golang.org/x/tools/go/types/typeutil/map.go
  f474c8805d07a4bcd752b963c7a72da9  libgo/go/golang.org/x/tools/go/types/typeutil/methodsetcache.go
  f4a1ba4e7337cb75bee6aba59d4a09ca  libgo/go/golang.org/x/tools/go/types/typeutil/ui.go
+ 54a1028ba7bad14a6710910e024d7676  libgo/go/golang.org/x/tools/internal/analysisinternal/analysis.go
+ 01df12a2ea6454c7d1ac6c119226471f  libgo/go/golang.org/x/tools/internal/lsp/fuzzy/input.go
+ 363385c8cd31218fea029ea9a846d2dd  libgo/go/golang.org/x/tools/internal/lsp/fuzzy/matcher.go
  a413d6b3884e141783f23d00d5838777  libgo/go/golang.org/x/xerrors/LICENSE
  3a55d95595a6f9e37dee53826b4daff2  libgo/go/golang.org/x/xerrors/PATENTS
  87e85122864fe749bfe1f872546a4ca6  libgo/go/golang.org/x/xerrors/README
*************** a413d6b3884e141783f23d00d5838777  libgo/
*** 84753,84759 ****
  72222f1db121276244f0c69eade88d09  libgo/go/golang.org/x/xerrors/codereview.cfg
  001fce03b97e68f5e5da459a13d4801f  libgo/go/golang.org/x/xerrors/doc.go
  9a7b78ea30b30592b8b2e712ac20d09f  libgo/go/golang.org/x/xerrors/errors.go
! 3beeefc471bd71ac5089f62b3fe6f7d9  libgo/go/golang.org/x/xerrors/fmt.go
  8c6b355b925aa690288e43a9c6c5f5c5  libgo/go/golang.org/x/xerrors/format.go
  3a9f3aa71fc0c58fd988fc79ae505896  libgo/go/golang.org/x/xerrors/frame.go
  4c79e49e262473eac1603b016cbbc70d  libgo/go/golang.org/x/xerrors/go.mod
--- 90699,90705 ----
  72222f1db121276244f0c69eade88d09  libgo/go/golang.org/x/xerrors/codereview.cfg
  001fce03b97e68f5e5da459a13d4801f  libgo/go/golang.org/x/xerrors/doc.go
  9a7b78ea30b30592b8b2e712ac20d09f  libgo/go/golang.org/x/xerrors/errors.go
! 33385dd7596e6d975ef0be65ebd285a3  libgo/go/golang.org/x/xerrors/fmt.go
  8c6b355b925aa690288e43a9c6c5f5c5  libgo/go/golang.org/x/xerrors/format.go
  3a9f3aa71fc0c58fd988fc79ae505896  libgo/go/golang.org/x/xerrors/frame.go
  4c79e49e262473eac1603b016cbbc70d  libgo/go/golang.org/x/xerrors/go.mod
*************** a413d6b3884e141783f23d00d5838777  libgo/
*** 84761,84784 ****
  dc249a8eb439c42aaa93f60d1cf7ef4a  libgo/go/golang.org/x/xerrors/wrap.go
  f8eee87504cb4018a26fdb2a48f4538e  libgo/go/hash/adler32/adler32.go
  607bed9e7f8051c6870551da82ae7bfb  libgo/go/hash/adler32/adler32_test.go
! 765bdcff36cac5f6e6f8a41667c81bed  libgo/go/hash/crc32/crc32.go
  9e5c06cb4bd7d4f4bd01312ab279e508  libgo/go/hash/crc32/crc32_amd64.go
  747c1f9bd3aeafb6e0b7c0e8e2058123  libgo/go/hash/crc32/crc32_arm64.go
  672e27745433436913cf360b2dece8b5  libgo/go/hash/crc32/crc32_generic.go
  1ba309eacf965359eebfbdb64555674f  libgo/go/hash/crc32/crc32_otherarch.go
  ab076b6be5c97561bf79fab2c0569a64  libgo/go/hash/crc32/crc32_ppc64le.go
! c2885def28efe65033c7d61e2f112db4  libgo/go/hash/crc32/crc32_s390x.go
! d8543e6c12823667d360ced2c9d64e90  libgo/go/hash/crc32/crc32_test.go
  7b8109fec8c950fc712ffd6350ca612c  libgo/go/hash/crc32/example_test.go
! a1e189f02427ace8e6a1516ce87e6978  libgo/go/hash/crc32/gen_const_ppc64le.go
  9bc9fc984994e69f19bf7366912ce7a5  libgo/go/hash/crc64/crc64.go
  2fffa60cc4121c2414a1299720b41ea7  libgo/go/hash/crc64/crc64_test.go
  645bb03c0d4d72740efdf952be1f85e7  libgo/go/hash/example_test.go
  51523259bbbc1bd5072a2cb9114ab4fe  libgo/go/hash/fnv/fnv.go
  bc4c5a7ede82eb4418b96c6d7738d4c9  libgo/go/hash/fnv/fnv_test.go
  c1a5611f8ea9c06ccb019508c3c2ed5c  libgo/go/hash/hash.go
! 2fe1cf5185747ae9b03ee720084982f0  libgo/go/hash/maphash/maphash.go
! c7de4d9f5917c0296a5cd6849c28cc16  libgo/go/hash/maphash/maphash_test.go
  04d7e6f5cb7eb19f39ed7e328ef6097e  libgo/go/hash/maphash/smhasher_test.go
  055a6da6aec9eb5976d82f7aeb497dbd  libgo/go/hash/marshal_test.go
  348ce93e9c934fe4500a7e54211e7efe  libgo/go/html/entity.go
--- 90707,90731 ----
  dc249a8eb439c42aaa93f60d1cf7ef4a  libgo/go/golang.org/x/xerrors/wrap.go
  f8eee87504cb4018a26fdb2a48f4538e  libgo/go/hash/adler32/adler32.go
  607bed9e7f8051c6870551da82ae7bfb  libgo/go/hash/adler32/adler32_test.go
! d2dfcb5689c9caf5ce1b8559fbd89d76  libgo/go/hash/crc32/crc32.go
  9e5c06cb4bd7d4f4bd01312ab279e508  libgo/go/hash/crc32/crc32_amd64.go
  747c1f9bd3aeafb6e0b7c0e8e2058123  libgo/go/hash/crc32/crc32_arm64.go
  672e27745433436913cf360b2dece8b5  libgo/go/hash/crc32/crc32_generic.go
  1ba309eacf965359eebfbdb64555674f  libgo/go/hash/crc32/crc32_otherarch.go
  ab076b6be5c97561bf79fab2c0569a64  libgo/go/hash/crc32/crc32_ppc64le.go
! 59ebac54a70cb3aa291598b17769564c  libgo/go/hash/crc32/crc32_s390x.go
! da2cbf6b81f25f8c73b7c2c5a32c7be3  libgo/go/hash/crc32/crc32_test.go
  7b8109fec8c950fc712ffd6350ca612c  libgo/go/hash/crc32/example_test.go
! 0cd5a00cdc6edfbc7e4c9de059f3baf4  libgo/go/hash/crc32/gen_const_ppc64le.go
  9bc9fc984994e69f19bf7366912ce7a5  libgo/go/hash/crc64/crc64.go
  2fffa60cc4121c2414a1299720b41ea7  libgo/go/hash/crc64/crc64_test.go
  645bb03c0d4d72740efdf952be1f85e7  libgo/go/hash/example_test.go
  51523259bbbc1bd5072a2cb9114ab4fe  libgo/go/hash/fnv/fnv.go
  bc4c5a7ede82eb4418b96c6d7738d4c9  libgo/go/hash/fnv/fnv_test.go
  c1a5611f8ea9c06ccb019508c3c2ed5c  libgo/go/hash/hash.go
! 9b2ffae26f6954f75a3e90a25d1f57e5  libgo/go/hash/maphash/example_test.go
! 1e9bd8dd532b18462b28ec31986bf25d  libgo/go/hash/maphash/maphash.go
! 661a14606fdef21086734291f2659aea  libgo/go/hash/maphash/maphash_test.go
  04d7e6f5cb7eb19f39ed7e328ef6097e  libgo/go/hash/maphash/smhasher_test.go
  055a6da6aec9eb5976d82f7aeb497dbd  libgo/go/hash/marshal_test.go
  348ce93e9c934fe4500a7e54211e7efe  libgo/go/html/entity.go
*************** c25ef92adb0747302fe0d99c86b07bac  libgo/
*** 84789,84797 ****
  bba1e21bdf1e331c14228c6d55f7404b  libgo/go/html/fuzz.go
  abd5871dc8a3767d7c00031851098ebd  libgo/go/html/template/attr.go
  888dc55957e989bbefdb0e5ede73a2a8  libgo/go/html/template/attr_string.go
! 90e872f2dd2e09fc90abdd0dd4db90d3  libgo/go/html/template/clone_test.go
  c7b8d9f38483918cfab71f4ae89ee141  libgo/go/html/template/content.go
! 6672b82d3a9bb497f409cc21b8472392  libgo/go/html/template/content_test.go
  85545c3d44bdab3811ddd2d6123d0bcc  libgo/go/html/template/context.go
  65b80129a2d5d1154f16365c27695360  libgo/go/html/template/css.go
  55e9163874525f8c28e019f575a9ebba  libgo/go/html/template/css_test.go
--- 90736,90744 ----
  bba1e21bdf1e331c14228c6d55f7404b  libgo/go/html/fuzz.go
  abd5871dc8a3767d7c00031851098ebd  libgo/go/html/template/attr.go
  888dc55957e989bbefdb0e5ede73a2a8  libgo/go/html/template/attr_string.go
! 3d419cd9114fc275ee973d253409e71e  libgo/go/html/template/clone_test.go
  c7b8d9f38483918cfab71f4ae89ee141  libgo/go/html/template/content.go
! 2a43b26d9be4eba09d0258843033fcae  libgo/go/html/template/content_test.go
  85545c3d44bdab3811ddd2d6123d0bcc  libgo/go/html/template/context.go
  65b80129a2d5d1154f16365c27695360  libgo/go/html/template/css.go
  55e9163874525f8c28e019f575a9ebba  libgo/go/html/template/css_test.go
*************** d0685d862b438677e3a70cf22117cdf0  libgo/
*** 84799,84816 ****
  86ebe6f57a3758381707d59dc4a44905  libgo/go/html/template/doc.go
  c04868ab9d1e2a50b8a2c58e5aeaf003  libgo/go/html/template/element_string.go
  e1a59197f089f1ebaf97c96dc60f7f9e  libgo/go/html/template/error.go
! c1bc9547ee6820cab29dc2ddead82df3  libgo/go/html/template/escape.go
! c09dc2bda0ba7ed162f8706a3d2c689e  libgo/go/html/template/escape_test.go
! 19ac59e08818d24aa15bdb2cf81a087a  libgo/go/html/template/example_test.go
! 31b8ee60e7c95c9c4a0071658c428529  libgo/go/html/template/examplefiles_test.go
! 532809681b23d79af697a22304d1afe9  libgo/go/html/template/html.go
  168fb875c16d9bbe98e9f332d126c055  libgo/go/html/template/html_test.go
! 7872df8e5b116599bef1609dedcecfed  libgo/go/html/template/js.go
! 34bd843fa54c75cd1195032c612edfd1  libgo/go/html/template/js_test.go
  dc6364324c3072c8b723a4e53677d08c  libgo/go/html/template/jsctx_string.go
  85defc4801e92a882e763665cdd9ae3f  libgo/go/html/template/state_string.go
! 8e67b1c3d9a450081ad3868fc5516060  libgo/go/html/template/template.go
! 020895cc65c07008482f11b3094819d5  libgo/go/html/template/template_test.go
  52472e4d3838e2a2530712e77cbb0ac1  libgo/go/html/template/transition.go
  794c76daefd189e7a55f97b5ce4bd9ed  libgo/go/html/template/transition_test.go
  a5e95c51763710adcae02d703a247433  libgo/go/html/template/url.go
--- 90746,90770 ----
  86ebe6f57a3758381707d59dc4a44905  libgo/go/html/template/doc.go
  c04868ab9d1e2a50b8a2c58e5aeaf003  libgo/go/html/template/element_string.go
  e1a59197f089f1ebaf97c96dc60f7f9e  libgo/go/html/template/error.go
! fbc94e6bf09bbbb0c35e8c4992a2e5c0  libgo/go/html/template/escape.go
! be220be3539e72faa220a02f51e2cbe7  libgo/go/html/template/escape_test.go
! 067ca8111c5709e89a5094e3bbd68116  libgo/go/html/template/example_test.go
! 1e0217b43d300a7bb7cc355f8e9e121a  libgo/go/html/template/examplefiles_test.go
! 076429f488a0751882936bc6e383ad7c  libgo/go/html/template/exec_test.go
! 3cb0e280dd29754101994f41e86bcfcf  libgo/go/html/template/html.go
  168fb875c16d9bbe98e9f332d126c055  libgo/go/html/template/html_test.go
! 9ce9cdc5970063761708be57e3bb0d4e  libgo/go/html/template/js.go
! 8416142cde816f3551af2146d1c022dc  libgo/go/html/template/js_test.go
  dc6364324c3072c8b723a4e53677d08c  libgo/go/html/template/jsctx_string.go
+ 908a1881fba2f8329387c886eb59d8e4  libgo/go/html/template/multi_test.go
  85defc4801e92a882e763665cdd9ae3f  libgo/go/html/template/state_string.go
! 39d18d11bc1a4fffc827851a8a126e8e  libgo/go/html/template/template.go
! b4a327b369f41634ea522f736a4e170e  libgo/go/html/template/template_test.go
! d6b6ff8eb45b5d3c6559c70664f2f9f3  libgo/go/html/template/testdata/file1.tmpl
! 30ae547a79cfdc1dc838a5a0d9ed8198  libgo/go/html/template/testdata/file2.tmpl
! 47b29f51328e97794a0fb49bba31f560  libgo/go/html/template/testdata/fs.zip
! 3bb3b4e20658955000386362214b8246  libgo/go/html/template/testdata/tmpl1.tmpl
! 1fd8ef440f5fd08e0117c3c00500294b  libgo/go/html/template/testdata/tmpl2.tmpl
  52472e4d3838e2a2530712e77cbb0ac1  libgo/go/html/template/transition.go
  794c76daefd189e7a55f97b5ce4bd9ed  libgo/go/html/template/transition_test.go
  a5e95c51763710adcae02d703a247433  libgo/go/html/template/url.go
*************** a5e95c51763710adcae02d703a247433  libgo/
*** 84818,84845 ****
  1973229a5ac302dc476de88f825aafe2  libgo/go/html/template/urlpart_string.go
  0ee9e1086d3be098c9d118eea9e2b35c  libgo/go/image/color/color.go
  697ed61304b0fa02aea26470f306a495  libgo/go/image/color/color_test.go
! 277e9c43e84f3d180eb601ffc048c293  libgo/go/image/color/palette/gen.go
  9351e4a2e64d6046298e943eb06ecf5c  libgo/go/image/color/palette/generate.go
  6b6b24a272cf87fff7f3b3fe4d980e4f  libgo/go/image/color/palette/palette.go
  9d403013ccc8572ceb09585a7e868089  libgo/go/image/color/ycbcr.go
  eb49954ae9c2cc1153e2b0ac76c25fda  libgo/go/image/color/ycbcr_test.go
  7beb2f38eacb2c6b1fcab14b480f4aa5  libgo/go/image/decode_example_test.go
  f9d93c6d8bba9579dec7faf89cc73658  libgo/go/image/decode_test.go
! 0cfc93a02fc67184d7414d683983b8db  libgo/go/image/draw/bench_test.go
  05b4c6b42b216ef3f39178bdedd124a6  libgo/go/image/draw/clip_test.go
! 2c790d22354242a131a2fe713f4034d8  libgo/go/image/draw/draw.go
! e9eb815245adf4d6cf4c0a290df2ec33  libgo/go/image/draw/draw_test.go
  f5204adc294703971186a2ddc9714760  libgo/go/image/draw/example_test.go
  6119c833eb5b59fb2f443394c0db2acb  libgo/go/image/format.go
! 9f4999b824476b6d67de9c67c30ad31a  libgo/go/image/geom.go
  9a8f5ed2c0cf944d5b4c93bd318889d2  libgo/go/image/geom_test.go
  722f3c4e1a524c012bce85ab0323985d  libgo/go/image/gif/reader.go
! 81edea1ac149e05650de33cb57864230  libgo/go/image/gif/reader_test.go
  d06cf95880b3a8ae31d4fdb93fedf851  libgo/go/image/gif/writer.go
! 16dc1c9c1000d9bfc5a41e950473205c  libgo/go/image/gif/writer_test.go
! 6f5d620d56016c4ae16ad8d27d8e5189  libgo/go/image/image.go
! 41bfec6198108a7222c3d98e6dbc5c5c  libgo/go/image/image_test.go
! 48a06a0b514b75fea4cdd5d13aae2ba9  libgo/go/image/internal/imageutil/gen.go
  f17c0b78607a9db21a18e33d106ed160  libgo/go/image/internal/imageutil/imageutil.go
  6b45c8bcc99a04a90fc88d500ac3a227  libgo/go/image/internal/imageutil/impl.go
  e0649349326bee233728d0badff2e25b  libgo/go/image/jpeg/dct_test.go
--- 90772,90799 ----
  1973229a5ac302dc476de88f825aafe2  libgo/go/html/template/urlpart_string.go
  0ee9e1086d3be098c9d118eea9e2b35c  libgo/go/image/color/color.go
  697ed61304b0fa02aea26470f306a495  libgo/go/image/color/color_test.go
! 5c3c52bb25cf94b6f8fa93336b481f0a  libgo/go/image/color/palette/gen.go
  9351e4a2e64d6046298e943eb06ecf5c  libgo/go/image/color/palette/generate.go
  6b6b24a272cf87fff7f3b3fe4d980e4f  libgo/go/image/color/palette/palette.go
  9d403013ccc8572ceb09585a7e868089  libgo/go/image/color/ycbcr.go
  eb49954ae9c2cc1153e2b0ac76c25fda  libgo/go/image/color/ycbcr_test.go
  7beb2f38eacb2c6b1fcab14b480f4aa5  libgo/go/image/decode_example_test.go
  f9d93c6d8bba9579dec7faf89cc73658  libgo/go/image/decode_test.go
! a7dfb713905410d3cbc0d90b9181ea31  libgo/go/image/draw/bench_test.go
  05b4c6b42b216ef3f39178bdedd124a6  libgo/go/image/draw/clip_test.go
! fb0c0ae2d40239c18c5ad401d47f46e5  libgo/go/image/draw/draw.go
! fc1f7a765694edd76da9066b0908c5b5  libgo/go/image/draw/draw_test.go
  f5204adc294703971186a2ddc9714760  libgo/go/image/draw/example_test.go
  6119c833eb5b59fb2f443394c0db2acb  libgo/go/image/format.go
! 48ecf182eff7c6291cc91ef7323ab69d  libgo/go/image/geom.go
  9a8f5ed2c0cf944d5b4c93bd318889d2  libgo/go/image/geom_test.go
  722f3c4e1a524c012bce85ab0323985d  libgo/go/image/gif/reader.go
! f24db612d6f3f688edb8c4882a042fa9  libgo/go/image/gif/reader_test.go
  d06cf95880b3a8ae31d4fdb93fedf851  libgo/go/image/gif/writer.go
! 485f9510892c7611f22309428af139cf  libgo/go/image/gif/writer_test.go
! 45bd9571607b2de75068cfca388e138b  libgo/go/image/image.go
! 52c8c7a9c070e214a441eec2467b7df4  libgo/go/image/image_test.go
! d093a41a1cc2ecbc753bbfc9914b8550  libgo/go/image/internal/imageutil/gen.go
  f17c0b78607a9db21a18e33d106ed160  libgo/go/image/internal/imageutil/imageutil.go
  6b45c8bcc99a04a90fc88d500ac3a227  libgo/go/image/internal/imageutil/impl.go
  e0649349326bee233728d0badff2e25b  libgo/go/image/jpeg/dct_test.go
*************** d8ec8e0dc67d96f56b092e650a3d6b80  libgo/
*** 84847,84863 ****
  9700c44ea13ff67daedd5dad2511a15f  libgo/go/image/jpeg/huffman.go
  6cfacf6d19184013295b9ab200b3f37a  libgo/go/image/jpeg/idct.go
  809ee4017e28ae7097777d773515b402  libgo/go/image/jpeg/reader.go
! d0ff607dd283a97ef351755b06b6d601  libgo/go/image/jpeg/reader_test.go
! 29d39be2a9bf46121d6b23dd307ea4f9  libgo/go/image/jpeg/scan.go
  6ab9412fbf1fd9c757c0b2b2c722861e  libgo/go/image/jpeg/writer.go
! ae478fd32f7c9015aead4b0213dbe4c6  libgo/go/image/jpeg/writer_test.go
! 7a8c5dacd9ce342c1f6d93f43460cd1c  libgo/go/image/names.go
  b10ff76b18900da446480301b6880117  libgo/go/image/png/example_test.go
  73d25d1f6314c780192d0b9722163334  libgo/go/image/png/fuzz.go
  cae7ad20b122bf2b990fef70ff4877b4  libgo/go/image/png/paeth.go
  1caac54afaaad92487178b716e2727fe  libgo/go/image/png/paeth_test.go
! f0b6783da3170944069657e2058762ab  libgo/go/image/png/reader.go
! 5e8032fe3c3d2f4482471a6ff841bd9d  libgo/go/image/png/reader_test.go
  02fc2ecfd2154905cb5b591c32c9f7c7  libgo/go/image/png/testdata/benchGray.png
  e53a3cd017e256b059f0c63055182f17  libgo/go/image/png/testdata/benchNRGBA-gradient.png
  dff276b9ce98522dce7be9b0c7ac050a  libgo/go/image/png/testdata/benchNRGBA-opaque.png
--- 90801,90817 ----
  9700c44ea13ff67daedd5dad2511a15f  libgo/go/image/jpeg/huffman.go
  6cfacf6d19184013295b9ab200b3f37a  libgo/go/image/jpeg/idct.go
  809ee4017e28ae7097777d773515b402  libgo/go/image/jpeg/reader.go
! f0fde4609baccf420794b7757affebde  libgo/go/image/jpeg/reader_test.go
! edbebf89453d683d6bd67291a54257d7  libgo/go/image/jpeg/scan.go
  6ab9412fbf1fd9c757c0b2b2c722861e  libgo/go/image/jpeg/writer.go
! 9a2bc48f04ac41ed269e990fb43ed44f  libgo/go/image/jpeg/writer_test.go
! 8329e8281233f429a5df3f95b8a47eaa  libgo/go/image/names.go
  b10ff76b18900da446480301b6880117  libgo/go/image/png/example_test.go
  73d25d1f6314c780192d0b9722163334  libgo/go/image/png/fuzz.go
  cae7ad20b122bf2b990fef70ff4877b4  libgo/go/image/png/paeth.go
  1caac54afaaad92487178b716e2727fe  libgo/go/image/png/paeth_test.go
! 323e61fca3d4744abee847ba63e0e81d  libgo/go/image/png/reader.go
! bdabb5415003ef1ba7ea49107a9af640  libgo/go/image/png/reader_test.go
  02fc2ecfd2154905cb5b591c32c9f7c7  libgo/go/image/png/testdata/benchGray.png
  e53a3cd017e256b059f0c63055182f17  libgo/go/image/png/testdata/benchNRGBA-gradient.png
  dff276b9ce98522dce7be9b0c7ac050a  libgo/go/image/png/testdata/benchNRGBA-opaque.png
*************** e4451d4233de3574bd2728193f2c9f24  libgo/
*** 84944,84950 ****
  6207a3c0ebe11ad7aa3c0b859d7194b9  libgo/go/image/png/testdata/pngsuite/ftp1n3p08.png
  5c6ef37bff477455f8dd3db200ce09e2  libgo/go/image/png/testdata/pngsuite/ftp1n3p08.sng
  80c6e9a22ce2c54c11ad9b8651ef97e6  libgo/go/image/png/writer.go
! 4a39a3184e97f1e37ba658c2fa5d038c  libgo/go/image/png/writer_test.go
  cdc71af61452de075b355596f429cea0  libgo/go/image/testdata/video-001.221212.jpeg
  2448220c1dbd15767fea75277a25725a  libgo/go/image/testdata/video-001.221212.png
  4525d5eeca18697cbb6af6a1ed405666  libgo/go/image/testdata/video-001.5bpp.gif
--- 90898,90904 ----
  6207a3c0ebe11ad7aa3c0b859d7194b9  libgo/go/image/png/testdata/pngsuite/ftp1n3p08.png
  5c6ef37bff477455f8dd3db200ce09e2  libgo/go/image/png/testdata/pngsuite/ftp1n3p08.sng
  80c6e9a22ce2c54c11ad9b8651ef97e6  libgo/go/image/png/writer.go
! dfabe62d5520064adc004f21cc6bf0db  libgo/go/image/png/writer_test.go
  cdc71af61452de075b355596f429cea0  libgo/go/image/testdata/video-001.221212.jpeg
  2448220c1dbd15767fea75277a25725a  libgo/go/image/testdata/video-001.221212.png
  4525d5eeca18697cbb6af6a1ed405666  libgo/go/image/testdata/video-001.5bpp.gif
*************** a37c029e52bd96f9d2bc7dfb49555287  libgo/
*** 84980,85095 ****
  1f882287f34692d3d93a088c05b224f2  libgo/go/image/testdata/video-005.gray.q50.2x2.progressive.jpeg
  981c41ba6c5829f203cffb876847fabd  libgo/go/image/testdata/video-005.gray.q50.jpeg
  3c36ce09b1f5861634d848e61e66b8c7  libgo/go/image/testdata/video-005.gray.q50.progressive.jpeg
! b34c5b95a2a1a0d1a152b553ffba2b61  libgo/go/image/ycbcr.go
  66d45571901c586c5fead74ece5018a7  libgo/go/image/ycbcr_test.go
  56335170da7d34683f92d648c43b551c  libgo/go/index/suffixarray/example_test.go
! 1004227a304c8daf6ab60b568f4c0493  libgo/go/index/suffixarray/gen.go
  7f7d92cdd7daf1cc56836403b19048bb  libgo/go/index/suffixarray/sais.go
  adecb9131ed5256a866ebce39bbca8cc  libgo/go/index/suffixarray/sais2.go
  b467c33283f1a55c04377e216b195ff3  libgo/go/index/suffixarray/suffixarray.go
! 2cb13ecc8ec1e0f3e4ffc5dca72ee9b7  libgo/go/index/suffixarray/suffixarray_test.go
! 628716f5c7ea1a87b08461fe7cbeb48f  libgo/go/internal/bytealg/bytealg.c
! 94ba35f150482e10a4e541b0421d6879  libgo/go/internal/bytealg/bytealg.go
  50d73d85502c43d48a60e6c3f5bc65b9  libgo/go/internal/bytealg/compare_generic.go
  5124101a6c62e1b52a085156942dfa29  libgo/go/internal/bytealg/compare_native.go
! 71bda8667b88bbb2ea6ed582d3e2dbf8  libgo/go/internal/bytealg/count_generic.go
! 35e347ac9bd8ca889fcef42652dd03f0  libgo/go/internal/bytealg/count_native.go
  2145d5da05a7099dc860bb0793e9fae4  libgo/go/internal/bytealg/equal_generic.go
  64c2194a10be3a82e8db4becdf1c5c36  libgo/go/internal/bytealg/equal_native.go
! cb32751b5c2148beeb9e909931f1a59b  libgo/go/internal/bytealg/gccgo.go
  4bc4e211372e7593dcf26b04e1cd4917  libgo/go/internal/bytealg/index_amd64.go
  8b850df851f320f487b70789d0638c59  libgo/go/internal/bytealg/index_arm64.go
  182373a1ecfde0b0796163f62123f5a1  libgo/go/internal/bytealg/index_generic.go
  899a4121dfc1080be6d811e366ea055c  libgo/go/internal/bytealg/index_native.go
  c8c66af1d46d2b7a8041efd120e337fb  libgo/go/internal/bytealg/index_s390x.go
! 3b1151807368fd1e3a7b3da7128c8a3f  libgo/go/internal/bytealg/indexbyte_generic.go
! 28d2cd99df0dd9c2128319914835f01e  libgo/go/internal/bytealg/indexbyte_native.go
! 193823851a219ff8afc2f2dce721bddf  libgo/go/internal/cfg/cfg.go
! 5a349b6f5621d9b2db2edccbc6960df6  libgo/go/internal/cpu/cpu.go
  bd260454659fd16e51c5099f5835b9b7  libgo/go/internal/cpu/cpu_386.go
  3ac00a0e4410afd906c8cbd6f6507b1d  libgo/go/internal/cpu/cpu_amd64.go
! afe16d4595ec415955fd34f6bd8c4994  libgo/go/internal/cpu/cpu_arm.go
! 064c6dee13d1af128e9bc4ca5e1cba3b  libgo/go/internal/cpu/cpu_arm64.go
! 5300f5cde8ec0a25daba7398eecf4710  libgo/go/internal/cpu/cpu_gccgo.c
! 840de192e7cb79cc66faecfbe28d2df7  libgo/go/internal/cpu/cpu_no_init.go
! f21ed6665bf0a34d57c4ee9f93120dde  libgo/go/internal/cpu/cpu_ppc64x.go
! a285b809757e5acbd7ac6e9ddc1c31b0  libgo/go/internal/cpu/cpu_riscv64.go
! 1d18dc9dcd2163f91c4f629e48ca9af6  libgo/go/internal/cpu/cpu_s390x.go
! c656f409e91652cc737488234774f22b  libgo/go/internal/cpu/cpu_s390x_test.go
! 9512761af5245841adedca5d85d487d8  libgo/go/internal/cpu/cpu_test.go
! b9c5830dbbb4ee56b6ca7656383ce98f  libgo/go/internal/cpu/cpu_x86.go
  a670507ac0571dcfec9601ce12640961  libgo/go/internal/cpu/cpu_x86_test.go
  f765a2fda3ec7787cce5555c4bae0bdf  libgo/go/internal/cpu/export_test.go
  bed4982a037778184d1458880055fdc1  libgo/go/internal/fmtsort/export_test.go
! 3a554eec98c13cbf3e45431802b2ec7b  libgo/go/internal/fmtsort/sort.go
! d07de49e9ba6a4270c4663c65f1bd8e2  libgo/go/internal/fmtsort/sort_test.go
! 3de01542a4da0c965cf01ec464c118d2  libgo/go/internal/goroot/gc.go
  2da7893142df2acd00e4a02e40987779  libgo/go/internal/goroot/gccgo.go
! c6b1d827fcb41c3df2d1d832eceddd99  libgo/go/internal/goversion/goversion.go
  01f071fdba44f661c678e282b4b86423  libgo/go/internal/lazyregexp/lazyre.go
  8e4d4c0e32cb9a122240e9182d0d2033  libgo/go/internal/lazytemplate/lazytemplate.go
  3684d457c29d834d162bc6c54dabba5a  libgo/go/internal/nettrace/nettrace.go
! 3b6ff063af914f0fee0a16ee01c6dec6  libgo/go/internal/obscuretestdata/obscuretestdata.go
  4d5b4079868a55f90a39e911081221a2  libgo/go/internal/oserror/errors.go
  344224ef5d918433550680411229d4cb  libgo/go/internal/poll/errno_unix.go
  09ce7e9dd7e3ddbb02ef8e5022e484f5  libgo/go/internal/poll/errno_windows.go
  ce40fbd4795dc9d6c3f99e9d5272916d  libgo/go/internal/poll/error_linux_test.go
  6abf852630ab8f8482da952b5926eadf  libgo/go/internal/poll/error_stub_test.go
! cf443e4052b25463608c54603ef79d93  libgo/go/internal/poll/error_test.go
  6298dfe843c39d3508506d95a485e783  libgo/go/internal/poll/export_posix_test.go
  ec209188a8bfd11890e98c94a4bcb7f2  libgo/go/internal/poll/export_test.go
  b268c43a787383b30fc7d66ccacff408  libgo/go/internal/poll/export_windows_test.go
  b37d21c6d3a50abd066c81778cc8eee0  libgo/go/internal/poll/fcntl_js.go
  f2c6fad9ee90b573b5fd3798ebb40349  libgo/go/internal/poll/fcntl_libc.go
  7cca42cee0122e69b6f9603cd28a0f4f  libgo/go/internal/poll/fcntl_syscall.go
! 2fca78695a19fe78b525b83956cae3ae  libgo/go/internal/poll/fd.go
! f685039e4931f0d8305376cc577e1538  libgo/go/internal/poll/fd_fsync_darwin.go
! a2870753ff847741367033b41cc84528  libgo/go/internal/poll/fd_fsync_posix.go
  f1e70083b1440bed4ad990f346263a02  libgo/go/internal/poll/fd_fsync_windows.go
  6e6c2602ebea534f5df8de7e9dc0f665  libgo/go/internal/poll/fd_io_plan9.go
  bc5d762a542ed1506735c6f49562a49c  libgo/go/internal/poll/fd_mutex.go
! 3cba587e3e4e5e2e981c3ea26d51682f  libgo/go/internal/poll/fd_mutex_test.go
! cce6c70f1ea9759668f9a7b00fed7608  libgo/go/internal/poll/fd_opendir_darwin.go
! e077af2ee07d7e655b9081928cdb9aa9  libgo/go/internal/poll/fd_plan9.go
! b6689387a9803d440dcbc4f51e10ad34  libgo/go/internal/poll/fd_poll_js.go
! 8e9edd4314c251fa74b6654f83b528d8  libgo/go/internal/poll/fd_poll_runtime.go
! 059277a59b90d42483c2be9fa1ed53f1  libgo/go/internal/poll/fd_posix.go
  53b68571628c77f910929ad374d9108c  libgo/go/internal/poll/fd_posix_test.go
! 62917de05a5514c4998b28bd61d81f6b  libgo/go/internal/poll/fd_unix.go
! fc558170b921c5dc15becc5b7da33cbb  libgo/go/internal/poll/fd_windows.go
  6590e98d43fdc0c2593220dfe36d67fd  libgo/go/internal/poll/fd_windows_test.go
  c2638ff2846b2fef2f70790ace2f10f2  libgo/go/internal/poll/fd_writev_darwin.go
! 3f9ea4dfdc6521ce23828cbcbab0ad91  libgo/go/internal/poll/fd_writev_unix.go
! abf313ef3208139f96cd896a9bab3f14  libgo/go/internal/poll/hook_cloexec.go
  03e18719c64d62fa7a53911815af99ca  libgo/go/internal/poll/hook_unix.go
  f9e203c47c3495141cef11d4c2af02c9  libgo/go/internal/poll/hook_windows.go
! 5ee1f269aa412284b7ca1193339fbc5d  libgo/go/internal/poll/read_test.go
! 7503893d47e9f4ad75947ec6b342f9ff  libgo/go/internal/poll/sendfile_bsd.go
! 4adcc17a317924f8255e3e72ec03192b  libgo/go/internal/poll/sendfile_glibc.go
! ddbf78dc0727c75eb0a712eb0a3887b2  libgo/go/internal/poll/sendfile_solaris.go
! 2621b50db0d2fb70e7b2192ba9d0edfa  libgo/go/internal/poll/sendfile_windows.go
! 37cc6fdffd449f11b2107e6bea840a72  libgo/go/internal/poll/sock_cloexec.go
  8c750ebdada708bdc788b0eda25cdf74  libgo/go/internal/poll/sockopt.go
  03c5e2154fbf3bd10e0b12987e5ef16d  libgo/go/internal/poll/sockopt_linux.go
  b67a976b9f96bd7b74d7ae5b0d8b5ec8  libgo/go/internal/poll/sockopt_unix.go
  a63c6dd4bc5f02088c1dc3158d68bb07  libgo/go/internal/poll/sockopt_windows.go
  b03a6090ea070edc902c2af6a9eb32ae  libgo/go/internal/poll/sockoptip.go
! 79652ab60d9837ba85d1da677b64d2d2  libgo/go/internal/poll/splice_linux.go
  126eec79336718067d9463116ff15194  libgo/go/internal/poll/strconv.go
! 646ba86df43569e1bbaa3b2caf6246aa  libgo/go/internal/poll/sys_cloexec.go
! 2c07d8ab8157f53d8bc05d1135659cf5  libgo/go/internal/poll/writev.go
  7d3289a09320b4aacd68e8cd5d63f813  libgo/go/internal/poll/writev_test.go
  4d0a5052a9c31a154e29aae1181fe6b4  libgo/go/internal/race/doc.go
  3334c451d82b93847b8ba2669beb36a8  libgo/go/internal/race/norace.go
  132fd81e2b9c683c70d9feb34fc9b1a0  libgo/go/internal/race/race.go
  19c92d9fe876b7488bf6b387ae187215  libgo/go/internal/reflectlite/all_test.go
  cebae82d16a55ef2b10d5374a1f95b68  libgo/go/internal/reflectlite/export_test.go
! e541efa75d8adf8d1470dfbb57c5bb86  libgo/go/internal/reflectlite/reflect_mirror_test.go
  0f915757131d22a3ee186bd8335b7ff0  libgo/go/internal/reflectlite/set_test.go
! 02eb1044ed4a841eb2671850b916918f  libgo/go/internal/reflectlite/swapper.go
  ecb3ce6e9174c6d808c87ff8e6fefdb9  libgo/go/internal/reflectlite/tostring_test.go
! e41cc74836abe83662a19c9c67482135  libgo/go/internal/reflectlite/type.go
! 7e728ef61a6bedee72bd9ca8879aac5e  libgo/go/internal/reflectlite/value.go
  1313f76918c28d0331464947516bf946  libgo/go/internal/singleflight/singleflight.go
  bf16bc5e91196cda98289113290abbe2  libgo/go/internal/singleflight/singleflight_test.go
  93a4d7f1f28004592f6c56b56b1c851f  libgo/go/internal/syscall/execenv/execenv_default.go
--- 90934,91080 ----
  1f882287f34692d3d93a088c05b224f2  libgo/go/image/testdata/video-005.gray.q50.2x2.progressive.jpeg
  981c41ba6c5829f203cffb876847fabd  libgo/go/image/testdata/video-005.gray.q50.jpeg
  3c36ce09b1f5861634d848e61e66b8c7  libgo/go/image/testdata/video-005.gray.q50.progressive.jpeg
! c80a82eedbf089afed7d5ec207094c47  libgo/go/image/ycbcr.go
  66d45571901c586c5fead74ece5018a7  libgo/go/image/ycbcr_test.go
  56335170da7d34683f92d648c43b551c  libgo/go/index/suffixarray/example_test.go
! b3af43ed6d8395690d662da170a7d1f0  libgo/go/index/suffixarray/gen.go
  7f7d92cdd7daf1cc56836403b19048bb  libgo/go/index/suffixarray/sais.go
  adecb9131ed5256a866ebce39bbca8cc  libgo/go/index/suffixarray/sais2.go
  b467c33283f1a55c04377e216b195ff3  libgo/go/index/suffixarray/suffixarray.go
! 2a7f05341169c7c5a8dd7f78a69da041  libgo/go/index/suffixarray/suffixarray_test.go
! b11555655e664f686e42a17df96bdeef  libgo/go/internal/bytealg/bytealg.c
! 4ce0e8299547a80aea9c42df2c064986  libgo/go/internal/bytealg/bytealg.go
  50d73d85502c43d48a60e6c3f5bc65b9  libgo/go/internal/bytealg/compare_generic.go
  5124101a6c62e1b52a085156942dfa29  libgo/go/internal/bytealg/compare_native.go
! ce518b6be094ad03577da8bed16b4db0  libgo/go/internal/bytealg/count_generic.go
! 425bd1420190fdab3be99db13bc791c1  libgo/go/internal/bytealg/count_native.go
  2145d5da05a7099dc860bb0793e9fae4  libgo/go/internal/bytealg/equal_generic.go
  64c2194a10be3a82e8db4becdf1c5c36  libgo/go/internal/bytealg/equal_native.go
! 05984539eab7374389d533b62fab5834  libgo/go/internal/bytealg/gccgo.go
  4bc4e211372e7593dcf26b04e1cd4917  libgo/go/internal/bytealg/index_amd64.go
  8b850df851f320f487b70789d0638c59  libgo/go/internal/bytealg/index_arm64.go
  182373a1ecfde0b0796163f62123f5a1  libgo/go/internal/bytealg/index_generic.go
  899a4121dfc1080be6d811e366ea055c  libgo/go/internal/bytealg/index_native.go
  c8c66af1d46d2b7a8041efd120e337fb  libgo/go/internal/bytealg/index_s390x.go
! df4e604f0c71e62a842685437eb2248e  libgo/go/internal/bytealg/indexbyte_generic.go
! e63183a3f65b252a5f09be0990d5a737  libgo/go/internal/bytealg/indexbyte_native.go
! 769b8f1eb8c042ff67f1a2c50ed66de6  libgo/go/internal/cfg/cfg.go
! 385887f0c12f7b54186d887ab742266f  libgo/go/internal/cpu/cpu.go
  bd260454659fd16e51c5099f5835b9b7  libgo/go/internal/cpu/cpu_386.go
  3ac00a0e4410afd906c8cbd6f6507b1d  libgo/go/internal/cpu/cpu_amd64.go
! 0ea848573797f48450f5659ce12b8e3e  libgo/go/internal/cpu/cpu_amd64p32.go
! 5bf64f2add6728649b4b2551e9279e52  libgo/go/internal/cpu/cpu_arm.go
! 5c3f11edfc7630cdf5117b153cd88a4b  libgo/go/internal/cpu/cpu_arm64.go
! 7319189aa9183d1861de82426d987138  libgo/go/internal/cpu/cpu_arm64_android.go
! 158440da805d03e534bfab9d8ffa392f  libgo/go/internal/cpu/cpu_arm64_darwin.go
! fb750d8071148c9985ac107179ea133a  libgo/go/internal/cpu/cpu_arm64_freebsd.go
! fa4126a8007e9e9b0633ff49968727d9  libgo/go/internal/cpu/cpu_arm64_hwcap.go
! 1b2b943b46d4218c487a4334d4f7de62  libgo/go/internal/cpu/cpu_arm64_linux.go
! c707eda75ffcfc9e531ca40db446f7fe  libgo/go/internal/cpu/cpu_arm64_other.go
! d74b89702856fbfd5627a1097bdae86a  libgo/go/internal/cpu/cpu_gccgo.c
! cfa3e345725cdccf65fd0df74870bfee  libgo/go/internal/cpu/cpu_mips.go
! 06c3361233b35a835dca8630dee1a2c6  libgo/go/internal/cpu/cpu_mips64x.go
! cfa3e345725cdccf65fd0df74870bfee  libgo/go/internal/cpu/cpu_mipsle.go
! a06547b3c88da70b42718075c4bbb80b  libgo/go/internal/cpu/cpu_no_name.go
! 18e14581eea8ccaf1de84db156c49454  libgo/go/internal/cpu/cpu_other.go
! 6101d0d15253e55a71d92c8d23039b2e  libgo/go/internal/cpu/cpu_ppc64x.go
! 4c18ffcedee52d1bbddedd635569a8b3  libgo/go/internal/cpu/cpu_ppc64x_aix.go
! aa0f897fc0d6bdcdfdc6e87ed77c5550  libgo/go/internal/cpu/cpu_ppc64x_linux.go
! 844e86e41ff72a5ec95ca1ce9d799585  libgo/go/internal/cpu/cpu_riscv64.go
! ccf0b9c5e70b51716cb9981bc67a5cd6  libgo/go/internal/cpu/cpu_s390x.go
! 8a762efe878fed094098c0a7c7d5be8c  libgo/go/internal/cpu/cpu_s390x_test.go
! 47654b9f81a7be82721a54b3465f9f12  libgo/go/internal/cpu/cpu_test.go
! e8d5a968f90a53caed664069c785c177  libgo/go/internal/cpu/cpu_wasm.go
! 9041b4c1a30e8863bfc9ae29c34b3f8c  libgo/go/internal/cpu/cpu_x86.go
  a670507ac0571dcfec9601ce12640961  libgo/go/internal/cpu/cpu_x86_test.go
  f765a2fda3ec7787cce5555c4bae0bdf  libgo/go/internal/cpu/export_test.go
+ c02af26ea85b8e6b84589fbbdd64f8c2  libgo/go/internal/execabs/execabs.go
+ bcf3befa86d329337f6c5abefc0e401c  libgo/go/internal/execabs/execabs_test.go
  bed4982a037778184d1458880055fdc1  libgo/go/internal/fmtsort/export_test.go
! 8eca65685f31f40d80ac5b56c87205be  libgo/go/internal/fmtsort/sort.go
! be4db4d47005e878d0037e5113d711a7  libgo/go/internal/fmtsort/sort_test.go
! 7ec25de305993812c6cea97b4698278c  libgo/go/internal/goroot/gc.go
  2da7893142df2acd00e4a02e40987779  libgo/go/internal/goroot/gccgo.go
! 8086a3ce4a371c2ada91d4cca3c65651  libgo/go/internal/goversion/goversion.go
  01f071fdba44f661c678e282b4b86423  libgo/go/internal/lazyregexp/lazyre.go
  8e4d4c0e32cb9a122240e9182d0d2033  libgo/go/internal/lazytemplate/lazytemplate.go
  3684d457c29d834d162bc6c54dabba5a  libgo/go/internal/nettrace/nettrace.go
! 59c48c26fb5883d16a4258d405180af2  libgo/go/internal/obscuretestdata/obscuretestdata.go
  4d5b4079868a55f90a39e911081221a2  libgo/go/internal/oserror/errors.go
+ c2103d2f9cb594f453c1a8ed275a9946  libgo/go/internal/poll/copy_file_range_linux.go
  344224ef5d918433550680411229d4cb  libgo/go/internal/poll/errno_unix.go
  09ce7e9dd7e3ddbb02ef8e5022e484f5  libgo/go/internal/poll/errno_windows.go
  ce40fbd4795dc9d6c3f99e9d5272916d  libgo/go/internal/poll/error_linux_test.go
  6abf852630ab8f8482da952b5926eadf  libgo/go/internal/poll/error_stub_test.go
! 5bd53f09db86bc21cfa6624b7b50b225  libgo/go/internal/poll/error_test.go
  6298dfe843c39d3508506d95a485e783  libgo/go/internal/poll/export_posix_test.go
  ec209188a8bfd11890e98c94a4bcb7f2  libgo/go/internal/poll/export_test.go
  b268c43a787383b30fc7d66ccacff408  libgo/go/internal/poll/export_windows_test.go
  b37d21c6d3a50abd066c81778cc8eee0  libgo/go/internal/poll/fcntl_js.go
  f2c6fad9ee90b573b5fd3798ebb40349  libgo/go/internal/poll/fcntl_libc.go
  7cca42cee0122e69b6f9603cd28a0f4f  libgo/go/internal/poll/fcntl_syscall.go
! 893a4b606c35aee188853bf4dc06ae67  libgo/go/internal/poll/fd.go
! 2047f76830787af95040898be9772cfa  libgo/go/internal/poll/fd_fsync_darwin.go
! 6789b5fdfadee7dd0c256d3f3a8aac55  libgo/go/internal/poll/fd_fsync_posix.go
  f1e70083b1440bed4ad990f346263a02  libgo/go/internal/poll/fd_fsync_windows.go
  6e6c2602ebea534f5df8de7e9dc0f665  libgo/go/internal/poll/fd_io_plan9.go
  bc5d762a542ed1506735c6f49562a49c  libgo/go/internal/poll/fd_mutex.go
! 6b5b823059f30516131664efcd143a82  libgo/go/internal/poll/fd_mutex_test.go
! 728e6ae558e3f30964b93caceca90a6d  libgo/go/internal/poll/fd_opendir_darwin.go
! fce1c3235a394a3921fcda95c1c8f569  libgo/go/internal/poll/fd_plan9.go
! d54c6c0ecc111e893ee2a2098ddd2c5a  libgo/go/internal/poll/fd_poll_js.go
! 9c70a2d07c2b06942b2d38e5d6105db2  libgo/go/internal/poll/fd_poll_runtime.go
! 87c024095ae24dc8ad9cd8f616e480df  libgo/go/internal/poll/fd_posix.go
  53b68571628c77f910929ad374d9108c  libgo/go/internal/poll/fd_posix_test.go
! 740845682bff9a5366ca6a1d3ca92f55  libgo/go/internal/poll/fd_unix.go
! 78eab2e6f99ab266e636ceb7b9b6ee46  libgo/go/internal/poll/fd_windows.go
  6590e98d43fdc0c2593220dfe36d67fd  libgo/go/internal/poll/fd_windows_test.go
  c2638ff2846b2fef2f70790ace2f10f2  libgo/go/internal/poll/fd_writev_darwin.go
! 2a925f236349379318c938c8685ee071  libgo/go/internal/poll/fd_writev_illumos.go
! 6d6afe97611c3127e6e7c5e92a0adabd  libgo/go/internal/poll/fd_writev_unix.go
! 91260376b6439aecd6c09d3b459a64f6  libgo/go/internal/poll/hook_cloexec.go
  03e18719c64d62fa7a53911815af99ca  libgo/go/internal/poll/hook_unix.go
  f9e203c47c3495141cef11d4c2af02c9  libgo/go/internal/poll/hook_windows.go
! 4e91a2b40d0f2cdd7f66ff9297083917  libgo/go/internal/poll/iovec_illumos.go
! 5a37b41c29dd9e0c3ab43276420ec57e  libgo/go/internal/poll/iovec_unix.go
! 5124d2d882958e77d5810767e564b25d  libgo/go/internal/poll/read_test.go
! abf5728578824d91d24b5f0ccf24b71b  libgo/go/internal/poll/sendfile_bsd.go
! 5bbe1c37852ee039d791f288ae5b652d  libgo/go/internal/poll/sendfile_glibc.go
! 2dab4218fcdb7f3a8fc3dd30018f5ac8  libgo/go/internal/poll/sendfile_solaris.go
! 8028f4b74e5dd9fd00b5b9cf623c0f69  libgo/go/internal/poll/sendfile_windows.go
! 9c62e29e96c099aa70b76fc60e56eecd  libgo/go/internal/poll/sock_cloexec.go
  8c750ebdada708bdc788b0eda25cdf74  libgo/go/internal/poll/sockopt.go
  03c5e2154fbf3bd10e0b12987e5ef16d  libgo/go/internal/poll/sockopt_linux.go
  b67a976b9f96bd7b74d7ae5b0d8b5ec8  libgo/go/internal/poll/sockopt_unix.go
  a63c6dd4bc5f02088c1dc3158d68bb07  libgo/go/internal/poll/sockopt_windows.go
  b03a6090ea070edc902c2af6a9eb32ae  libgo/go/internal/poll/sockoptip.go
! b44d61f083428332c184bf48c848af86  libgo/go/internal/poll/splice_linux.go
  126eec79336718067d9463116ff15194  libgo/go/internal/poll/strconv.go
! 5f7ec0d5a948671af6f9178c4e4c68fc  libgo/go/internal/poll/sys_cloexec.go
! 1915b66b670ec70e75a7b27e83ccc999  libgo/go/internal/poll/writev.go
  7d3289a09320b4aacd68e8cd5d63f813  libgo/go/internal/poll/writev_test.go
+ 62f2042d1fd0940991a4e6138dfbfac7  libgo/go/internal/profile/encode.go
+ 2742e1a8fd2c10f25cc9e98f2834edfc  libgo/go/internal/profile/filter.go
+ f215ab05a44b0b39da0130653d8b6473  libgo/go/internal/profile/legacy_profile.go
+ 0008dfcfa21cdfe81f7f2cf2fcfd6008  libgo/go/internal/profile/merge.go
+ 16ec4637d8d50dfdaa5728c13c120a33  libgo/go/internal/profile/profile.go
+ b0444ee7eda577cce633330363da86b9  libgo/go/internal/profile/profile_test.go
+ b09e36c05434f8c71095dd34193dd6dc  libgo/go/internal/profile/proto.go
+ d434ed2afa9b019dd066da34dd384e7f  libgo/go/internal/profile/proto_test.go
+ d3bec38805b7716ed269d85f46e818b5  libgo/go/internal/profile/prune.go
  4d0a5052a9c31a154e29aae1181fe6b4  libgo/go/internal/race/doc.go
  3334c451d82b93847b8ba2669beb36a8  libgo/go/internal/race/norace.go
  132fd81e2b9c683c70d9feb34fc9b1a0  libgo/go/internal/race/race.go
  19c92d9fe876b7488bf6b387ae187215  libgo/go/internal/reflectlite/all_test.go
+ 5ba573755b0ee07d578396e1eed8d6c5  libgo/go/internal/reflectlite/eqtype.go
+ 8ae87ca0238c38aa85a1d125b5b7da21  libgo/go/internal/reflectlite/eqtype_aix_gccgo.go
  cebae82d16a55ef2b10d5374a1f95b68  libgo/go/internal/reflectlite/export_test.go
! c77a92a5887deb9be2c3b85e04ddb104  libgo/go/internal/reflectlite/reflect_mirror_test.go
  0f915757131d22a3ee186bd8335b7ff0  libgo/go/internal/reflectlite/set_test.go
! 0b802b0d2d1e24e370de50824c9ea866  libgo/go/internal/reflectlite/swapper.go
  ecb3ce6e9174c6d808c87ff8e6fefdb9  libgo/go/internal/reflectlite/tostring_test.go
! e258dd4906c9875ff2ff0cc68a13885d  libgo/go/internal/reflectlite/type.go
! 47d943bddb2fd81cd6c27dd4a7be8841  libgo/go/internal/reflectlite/value.go
  1313f76918c28d0331464947516bf946  libgo/go/internal/singleflight/singleflight.go
  bf16bc5e91196cda98289113290abbe2  libgo/go/internal/singleflight/singleflight_test.go
  93a4d7f1f28004592f6c56b56b1c851f  libgo/go/internal/syscall/execenv/execenv_default.go
*************** e58e02c7666b00717e1d143e704a7df1  libgo/
*** 85106,85165 ****
  3963b371690257ca39117335dd3f8aa4  libgo/go/internal/syscall/unix/at_sysnum_linux.go
  15a88f0e99ae242cd8dc7c2f52cd6093  libgo/go/internal/syscall/unix/at_sysnum_netbsd.go
  f5810b9fbd18c36d1398cc96f407c689  libgo/go/internal/syscall/unix/at_sysnum_openbsd.go
  ad17fd7c7a01712ad2add81147c009c2  libgo/go/internal/syscall/unix/dummy.go
  14cedfa3a429812400e1fecdca4a87ee  libgo/go/internal/syscall/unix/getentropy_openbsd.go
  fcb24324edaa58254a9fc1038122e0f0  libgo/go/internal/syscall/unix/getrandom_freebsd.go
! 2e821c1eb8775ca9ff927df6421b19c2  libgo/go/internal/syscall/unix/getrandom_linux.go
! 1113f4a9423d1baeb82e5ea450f049f7  libgo/go/internal/syscall/unix/getrandom_linux_386.go
! 83edb582b8ec98db073fcb180ecaf049  libgo/go/internal/syscall/unix/getrandom_linux_alpha.go
! e8a6fe0412741ea16edfeb6355696fee  libgo/go/internal/syscall/unix/getrandom_linux_amd64.go
! a3149c24df5f1ba5841fe1d030c43855  libgo/go/internal/syscall/unix/getrandom_linux_amd64p32.go
! 72fc988be1b6e3b8eed6c5cde010cce1  libgo/go/internal/syscall/unix/getrandom_linux_arm.go
! 98f5c0633dc66e505301ff812d9d799d  libgo/go/internal/syscall/unix/getrandom_linux_generic.go
! f1eab13ce71bd0b79c7fce50fd5f221c  libgo/go/internal/syscall/unix/getrandom_linux_ia64.go
! 7f35aed28702173edff1131d2ab4bdb8  libgo/go/internal/syscall/unix/getrandom_linux_m68k.go
! a7b799b8d7258ec09d5fff3d4c6270d8  libgo/go/internal/syscall/unix/getrandom_linux_mips64p32x.go
! 0c0c934deb0c125c8487c636113f3598  libgo/go/internal/syscall/unix/getrandom_linux_mips64x.go
! fd79b2ebfa3daf7a2c6496008027f36f  libgo/go/internal/syscall/unix/getrandom_linux_mipsx.go
! 8f0a345621433724ad7a3b158a619511  libgo/go/internal/syscall/unix/getrandom_linux_ppc64x.go
! 3bd2510b9d70ed458b5a1a0991143ddf  libgo/go/internal/syscall/unix/getrandom_linux_s390.go
! 3bd2510b9d70ed458b5a1a0991143ddf  libgo/go/internal/syscall/unix/getrandom_linux_s390x.go
! da3b487bce306c91385e608575b9ac1c  libgo/go/internal/syscall/unix/getrandom_linux_shx.go
! cc395bbeea96d24f9313faaac4648657  libgo/go/internal/syscall/unix/getrandom_linux_sparcx.go
  dc8031c307652bb718e60a3b304242ba  libgo/go/internal/syscall/unix/ioctl_aix.go
  4718738e0210d678d83a341bfee72886  libgo/go/internal/syscall/unix/nonblocking.go
  def73170c0c8ef7205ec429a96d9accf  libgo/go/internal/syscall/unix/nonblocking_js.go
  5db6fc4b8c14c51d7f670bdc67d79590  libgo/go/internal/syscall/unix/nonblocking_libc.go
  85ccf208033b5cd98f9423010ffeb3de  libgo/go/internal/syscall/windows/exec_windows_test.go
! ade26534e74d2e44a0c4afa680c404ea  libgo/go/internal/syscall/windows/mksyscall.go
  ccbb2330dfe78c312331a30db624eb3e  libgo/go/internal/syscall/windows/psapi_windows.go
  16b69449cf06972cee015e61b6af51e5  libgo/go/internal/syscall/windows/registry/export_test.go
! 392aaf3252c49bbf7e9ab0691cc2cebf  libgo/go/internal/syscall/windows/registry/key.go
! b6f254ddaa5a9d6f2dea705790f7ff33  libgo/go/internal/syscall/windows/registry/mksyscall.go
! f6c46030d9c9290ecb80739dab5067c4  libgo/go/internal/syscall/windows/registry/registry_test.go
  129139bd05e6e8f3fedb25800f917751  libgo/go/internal/syscall/windows/registry/syscall.go
! 440b5219b5539a8c4fbf7f43c37466b2  libgo/go/internal/syscall/windows/registry/value.go
! 77a610d7120941b886fc34321ea4a738  libgo/go/internal/syscall/windows/registry/zsyscall_windows.go
  74bb4a567a76df3b27ea63a509019d4c  libgo/go/internal/syscall/windows/reparse_windows.go
  4c0205bc5d9f38bbd817631131b7161f  libgo/go/internal/syscall/windows/security_windows.go
  03a74d8777dc4356f59e0d05c8b508b2  libgo/go/internal/syscall/windows/symlink_windows.go
! 75c69fcb9e3a353be4d88a0d2a5a9afa  libgo/go/internal/syscall/windows/syscall_windows.go
  f6c3625a5621c028d79dad266af198d7  libgo/go/internal/syscall/windows/sysdll/sysdll.go
! 79b2a13a1c4582b22ebbb54533dfac7c  libgo/go/internal/syscall/windows/zsyscall_windows.go
! cd0bceb71d54643f6110720f89fe5bfe  libgo/go/internal/testenv/testenv.go
  d12588db1f13411a3196285507549640  libgo/go/internal/testenv/testenv_cgo.go
  c482a74cfa5ffe5dd986afa7b54bbb82  libgo/go/internal/testenv/testenv_notwin.go
! b4bca761ffbb555181a8713bc7cba62e  libgo/go/internal/testenv/testenv_windows.go
  f4df4d86b40e7880ca5dad3a8c8fc2d0  libgo/go/internal/testlog/log.go
  cec6ea83cbf8865804722b3cd08b4001  libgo/go/internal/trace/gc.go
! 9679f2817a9355263c02b4896cb0ba7f  libgo/go/internal/trace/gc_test.go
  8280f1704ca9600a9db8cf3140260c88  libgo/go/internal/trace/goroutines.go
  5394d35cbaa3168a9ad8264b3e484967  libgo/go/internal/trace/mkcanned.bash
  f63a46b914ffaaf48c3e3a8c508f1398  libgo/go/internal/trace/mud.go
  7b075cec88ab8619376b4c74eacce221  libgo/go/internal/trace/mud_test.go
  010cb5f562f5f4b8dae10096785ec8bb  libgo/go/internal/trace/order.go
  c049cf26af8d17724a0fc3b3692fafe2  libgo/go/internal/trace/parser.go
! 61dffb3f73ae761d624107a2315678ad  libgo/go/internal/trace/parser_test.go
  2baf1b8be54952bd774c75e378e25179  libgo/go/internal/trace/testdata/http_1_10_good
  5f05df28b789b47c6a0c15c08e8af815  libgo/go/internal/trace/testdata/http_1_11_good
  ed51cf6484537faf4a16d18dbaafafed  libgo/go/internal/trace/testdata/http_1_5_good
--- 91091,91153 ----
  3963b371690257ca39117335dd3f8aa4  libgo/go/internal/syscall/unix/at_sysnum_linux.go
  15a88f0e99ae242cd8dc7c2f52cd6093  libgo/go/internal/syscall/unix/at_sysnum_netbsd.go
  f5810b9fbd18c36d1398cc96f407c689  libgo/go/internal/syscall/unix/at_sysnum_openbsd.go
+ 5f40b47e7c2d0ea70816ee5e3dff1253  libgo/go/internal/syscall/unix/copy_file_range_linux.go
  ad17fd7c7a01712ad2add81147c009c2  libgo/go/internal/syscall/unix/dummy.go
  14cedfa3a429812400e1fecdca4a87ee  libgo/go/internal/syscall/unix/getentropy_openbsd.go
  fcb24324edaa58254a9fc1038122e0f0  libgo/go/internal/syscall/unix/getrandom_freebsd.go
! 78bc141cbd60fb390424d6451a8eda84  libgo/go/internal/syscall/unix/getrandom_linux.go
  dc8031c307652bb718e60a3b304242ba  libgo/go/internal/syscall/unix/ioctl_aix.go
  4718738e0210d678d83a341bfee72886  libgo/go/internal/syscall/unix/nonblocking.go
  def73170c0c8ef7205ec429a96d9accf  libgo/go/internal/syscall/unix/nonblocking_js.go
  5db6fc4b8c14c51d7f670bdc67d79590  libgo/go/internal/syscall/unix/nonblocking_libc.go
+ 6c778fb7caaa01ec917bbd5903ad235c  libgo/go/internal/syscall/unix/sysnum_linux_386.go
+ 6d9eee7c2bc1039f94363f74ab36df45  libgo/go/internal/syscall/unix/sysnum_linux_alpha.go
+ 31d102a1e964ff235f5e5b71d2973256  libgo/go/internal/syscall/unix/sysnum_linux_amd64.go
+ 8818766790a8cd5fa7611ebe8cfbeae4  libgo/go/internal/syscall/unix/sysnum_linux_amd64p32.go
+ da6cfdc50392a3492ab214b2c0ae9dbb  libgo/go/internal/syscall/unix/sysnum_linux_arm.go
+ a7ef1a1d13f32c2a5242b0046b248f1b  libgo/go/internal/syscall/unix/sysnum_linux_generic.go
+ 5c1ded3244f3105658389affd3bee07f  libgo/go/internal/syscall/unix/sysnum_linux_ia64.go
+ 59e8c36b0e300cda73dfb1c5ecc0d900  libgo/go/internal/syscall/unix/sysnum_linux_m68k.go
+ ad622a655de7f37ffba483821d6fd8b7  libgo/go/internal/syscall/unix/sysnum_linux_mips64p32x.go
+ f44c983bf379887db04ae937d06911e7  libgo/go/internal/syscall/unix/sysnum_linux_mips64x.go
+ 9b46730feb1b6de73f0aa1eb1a6cf8fc  libgo/go/internal/syscall/unix/sysnum_linux_mipsx.go
+ db3fb089a4f8762d9acb7b1b57e0b680  libgo/go/internal/syscall/unix/sysnum_linux_ppc64x.go
+ 58d81d5dcd2792550a7cb6b0c73b5e44  libgo/go/internal/syscall/unix/sysnum_linux_s390.go
+ 58d81d5dcd2792550a7cb6b0c73b5e44  libgo/go/internal/syscall/unix/sysnum_linux_s390x.go
+ 6a05117de661d9ff7cb1a6bda4c4c8f4  libgo/go/internal/syscall/unix/sysnum_linux_shx.go
+ 6d90d9cd636bf0236864a33aa04a750d  libgo/go/internal/syscall/unix/sysnum_linux_sparcx.go
  85ccf208033b5cd98f9423010ffeb3de  libgo/go/internal/syscall/windows/exec_windows_test.go
! b59960035e16893423bb1669aca98a14  libgo/go/internal/syscall/windows/mksyscall.go
  ccbb2330dfe78c312331a30db624eb3e  libgo/go/internal/syscall/windows/psapi_windows.go
  16b69449cf06972cee015e61b6af51e5  libgo/go/internal/syscall/windows/registry/export_test.go
! c533112a99dfabffcf8cc2b3e1e9ff68  libgo/go/internal/syscall/windows/registry/key.go
! c3dee09652c0affeb1fa7eb7daf7aaa7  libgo/go/internal/syscall/windows/registry/mksyscall.go
! 15758ab73df1aab1fb79115ddd26dffc  libgo/go/internal/syscall/windows/registry/registry_test.go
  129139bd05e6e8f3fedb25800f917751  libgo/go/internal/syscall/windows/registry/syscall.go
! 32ff14cc938d267a8175e6c4566e3979  libgo/go/internal/syscall/windows/registry/value.go
! 7953c5599b6a4611ab9fbb86c515446c  libgo/go/internal/syscall/windows/registry/zsyscall_windows.go
  74bb4a567a76df3b27ea63a509019d4c  libgo/go/internal/syscall/windows/reparse_windows.go
  4c0205bc5d9f38bbd817631131b7161f  libgo/go/internal/syscall/windows/security_windows.go
  03a74d8777dc4356f59e0d05c8b508b2  libgo/go/internal/syscall/windows/symlink_windows.go
! 443f9b947b590bd3cc20ea1a612496fc  libgo/go/internal/syscall/windows/syscall_windows.go
  f6c3625a5621c028d79dad266af198d7  libgo/go/internal/syscall/windows/sysdll/sysdll.go
! fd2a36db6ad279979992f53547273c80  libgo/go/internal/syscall/windows/zsyscall_windows.go
! b1a9e78745c0e4b4f3dd09eaef29bc14  libgo/go/internal/sysinfo/sysinfo.go
! 040e5bfa2bcfb18e75f9ae288152c189  libgo/go/internal/testenv/testenv.go
  d12588db1f13411a3196285507549640  libgo/go/internal/testenv/testenv_cgo.go
  c482a74cfa5ffe5dd986afa7b54bbb82  libgo/go/internal/testenv/testenv_notwin.go
! 8ec4ccfba33625e9e9cc36fd38aa73d1  libgo/go/internal/testenv/testenv_windows.go
! dadc0d83af748ffe1e098ac2729a33cc  libgo/go/internal/testlog/exit.go
  f4df4d86b40e7880ca5dad3a8c8fc2d0  libgo/go/internal/testlog/log.go
  cec6ea83cbf8865804722b3cd08b4001  libgo/go/internal/trace/gc.go
! 077f7681ed780a66bb674fa0c57c0b35  libgo/go/internal/trace/gc_test.go
  8280f1704ca9600a9db8cf3140260c88  libgo/go/internal/trace/goroutines.go
  5394d35cbaa3168a9ad8264b3e484967  libgo/go/internal/trace/mkcanned.bash
  f63a46b914ffaaf48c3e3a8c508f1398  libgo/go/internal/trace/mud.go
  7b075cec88ab8619376b4c74eacce221  libgo/go/internal/trace/mud_test.go
  010cb5f562f5f4b8dae10096785ec8bb  libgo/go/internal/trace/order.go
  c049cf26af8d17724a0fc3b3692fafe2  libgo/go/internal/trace/parser.go
! 9319343d0db89b675ccfc90301527c38  libgo/go/internal/trace/parser_test.go
  2baf1b8be54952bd774c75e378e25179  libgo/go/internal/trace/testdata/http_1_10_good
  5f05df28b789b47c6a0c15c08e8af815  libgo/go/internal/trace/testdata/http_1_11_good
  ed51cf6484537faf4a16d18dbaafafed  libgo/go/internal/trace/testdata/http_1_5_good
*************** dc6e9ddbf2ef3bcf2b8a0a0e8cbff73c  libgo/
*** 85177,85186 ****
  c4fbaf5d300d81134153d78fe396039a  libgo/go/internal/trace/testdata/stress_start_stop_1_7_good
  ff0eb1ecdac489ead4abe06c4ef72597  libgo/go/internal/trace/testdata/stress_start_stop_1_9_good
  c86d327cba4954b40469735b6bea0d31  libgo/go/internal/trace/testdata/user_task_span_1_11_good
! 47bdba8ca1a18b87daae1a9fab5f18f3  libgo/go/internal/trace/writer.go
  5f2c24c4397b3632946e74c97305fd3d  libgo/go/internal/xcoff/ar.go
  6d80832c8c42e4312d76da61b90ff416  libgo/go/internal/xcoff/ar_test.go
! 4cc35d127a43ec0ef74cd0017e1590d6  libgo/go/internal/xcoff/file.go
  8ec488daa455336728aebe37fe29dd3b  libgo/go/internal/xcoff/file_test.go
  8bebdbf3cf1a18337cb20cb53af95ca4  libgo/go/internal/xcoff/testdata/bigar-empty
  9eafe6bbde7780843386dcad5da0f729  libgo/go/internal/xcoff/testdata/bigar-ppc64
--- 91165,91176 ----
  c4fbaf5d300d81134153d78fe396039a  libgo/go/internal/trace/testdata/stress_start_stop_1_7_good
  ff0eb1ecdac489ead4abe06c4ef72597  libgo/go/internal/trace/testdata/stress_start_stop_1_9_good
  c86d327cba4954b40469735b6bea0d31  libgo/go/internal/trace/testdata/user_task_span_1_11_good
! 6895874f4c24f8bd7c9889bfadb3c8ee  libgo/go/internal/trace/writer.go
! 37acb645035047f980d398e1e38e1430  libgo/go/internal/unsafeheader/unsafeheader.go
! f4ef2585d4a7de15a0494c61809b703d  libgo/go/internal/unsafeheader/unsafeheader_test.go
  5f2c24c4397b3632946e74c97305fd3d  libgo/go/internal/xcoff/ar.go
  6d80832c8c42e4312d76da61b90ff416  libgo/go/internal/xcoff/ar_test.go
! dc040cb1d1f707a07a19399a3a2795eb  libgo/go/internal/xcoff/file.go
  8ec488daa455336728aebe37fe29dd3b  libgo/go/internal/xcoff/file_test.go
  8bebdbf3cf1a18337cb20cb53af95ca4  libgo/go/internal/xcoff/testdata/bigar-empty
  9eafe6bbde7780843386dcad5da0f729  libgo/go/internal/xcoff/testdata/bigar-ppc64
*************** d141fe4ce073e954a739c2e351360bd7  libgo/
*** 85190,85221 ****
  8e157c18afb0e5f0344a6f0997267ac2  libgo/go/internal/xcoff/testdata/printbye.c
  53f217ba5dd53217e5e2539808fac481  libgo/go/internal/xcoff/testdata/printhello.c
  3eb585d550d13a2f892b31bb10624203  libgo/go/internal/xcoff/xcoff.go
! 40581a4a1b641cdf3f85f8decf2a51d1  libgo/go/io/example_test.go
! bbf5deb4b37002184bf8b82bffe3107f  libgo/go/io/io.go
! bd8089e2b18538e2c06fa5b26329138a  libgo/go/io/io_test.go
! 877cde9e64962641e5887d9b8c72cd80  libgo/go/io/ioutil/example_test.go
! 0643567ffa9576e32d28445ccd4b31d3  libgo/go/io/ioutil/ioutil.go
! aec544b72a60c3bd148cb732e9ad384f  libgo/go/io/ioutil/ioutil_test.go
! bdd83db3f669cffe38de3829489fcf47  libgo/go/io/ioutil/tempfile.go
! 0a3a71bf962264695055ff38b5aa5aff  libgo/go/io/ioutil/tempfile_test.go
  a2ad62dd6088e213c12f8dbb625a993a  libgo/go/io/ioutil/testdata/hello
  6ce38e3f8bf981ad9af952e18fc05a0e  libgo/go/io/multi.go
! 02efe4764794e8a9490cca289a0d0b3d  libgo/go/io/multi_test.go
  0d70325f6d9d2c45fb95dfa6d768a14d  libgo/go/io/pipe.go
  2aede3906faae4d3345e8f920dea3ec9  libgo/go/io/pipe_test.go
! 5988ccdde221cab428fa799d158e412c  libgo/go/log/log.go
! ea340ce5c8b9afd14ca44df603cb3f37  libgo/go/log/log_test.go
  e1898bb015ade6fb47cf79273e845db2  libgo/go/log/syslog/doc.go
  552ae509e0780cb32ad6c818f065a380  libgo/go/log/syslog/example_test.go
! 4cc4a4456a549da6ef0cd554e3cccb02  libgo/go/log/syslog/syslog.go
! 0685e06f51cf0fd17c21aae039f7f7d4  libgo/go/log/syslog/syslog_c.c
  9f42a14ed1130e5bfb22285493c519c5  libgo/go/log/syslog/syslog_libc.go
! d16e89838a7df8d79e54cb19924ae542  libgo/go/log/syslog/syslog_test.go
  1c1d1eebc3e7d7ad3488614a3738fd85  libgo/go/log/syslog/syslog_unix.go
  bc0baa61ecd6897de3da3edb0f016806  libgo/go/math/abs.go
! 2fd331f8a07f89c4dd0fb1a0985231fc  libgo/go/math/acosh.go
! 6fb8afe9ea73641596d9a547d6ead40f  libgo/go/math/all_test.go
! b340ed44fe78ca48252eba26043fd57d  libgo/go/math/arith_s390x.go
  bfecc5023664f4f5f590e1622c616030  libgo/go/math/arith_s390x_test.go
  ee47bed0f44643a86454d881fa472627  libgo/go/math/asin.go
  56391c66d4b1272044c0b6e3be60a5a6  libgo/go/math/asinh.go
--- 91180,91227 ----
  8e157c18afb0e5f0344a6f0997267ac2  libgo/go/internal/xcoff/testdata/printbye.c
  53f217ba5dd53217e5e2539808fac481  libgo/go/internal/xcoff/testdata/printhello.c
  3eb585d550d13a2f892b31bb10624203  libgo/go/internal/xcoff/xcoff.go
! 5438db9816934f4485c7bd2aaf2b1dc2  libgo/go/io/example_test.go
! 70dfd01084b40cc343dddb71b47c4647  libgo/go/io/export_test.go
! 8b052b24f728c838732f2f6f9be8b8eb  libgo/go/io/fs/fs.go
! a7e5a796a7c6a75a4773e2be1341300e  libgo/go/io/fs/fs_test.go
! baa15e6c3dc261539a75a51eef0e70df  libgo/go/io/fs/glob.go
! 9fd5ac01209081acb82b66d7203f399d  libgo/go/io/fs/glob_test.go
! bb336e507ad2226047171339c0c564f2  libgo/go/io/fs/readdir.go
! 87cbf2c7df560f443090ff8b01a91b7b  libgo/go/io/fs/readdir_test.go
! 9bed2635cbb2e4d8e4a76e3eafc8b7e3  libgo/go/io/fs/readfile.go
! a2e5e119811014f0282d37066d8434ed  libgo/go/io/fs/readfile_test.go
! 7841564e890598962e48154823e51678  libgo/go/io/fs/stat.go
! d6e77cc5f64cb615decf65139dcf07e4  libgo/go/io/fs/stat_test.go
! aa7cef1c33395b5493295ad393460017  libgo/go/io/fs/sub.go
! 42d836ccd378d7a4ab8c40ec4807f6f0  libgo/go/io/fs/sub_test.go
! 00598403a89c3c1139fa282b6578bb95  libgo/go/io/fs/walk.go
! eaac303672e2ec316cd24921b3c6dab7  libgo/go/io/fs/walk_test.go
! d43299c78c64d9d3c3c680243e2aad2e  libgo/go/io/io.go
! ec1450d3e4837d8de7f8f2c5aa766fc9  libgo/go/io/io_test.go
! ea902dbac9d42e895bc2606402cb6582  libgo/go/io/ioutil/example_test.go
! e7c2136c063d22769d4484fa81fc5273  libgo/go/io/ioutil/export_test.go
! 37e1bd1a1c317ccf79eee8fb8d92e4c9  libgo/go/io/ioutil/ioutil.go
! a8bb2cc0b3284d3c6f7ff8c31a241e74  libgo/go/io/ioutil/ioutil_test.go
! 351e1b5f1b2e4360b34554cd0bb3c4c9  libgo/go/io/ioutil/tempfile.go
! 032e9d8a024353caf1426b5ff34fde14  libgo/go/io/ioutil/tempfile_test.go
  a2ad62dd6088e213c12f8dbb625a993a  libgo/go/io/ioutil/testdata/hello
  6ce38e3f8bf981ad9af952e18fc05a0e  libgo/go/io/multi.go
! 5ef43d874ea207dba328274c09dbdb4c  libgo/go/io/multi_test.go
  0d70325f6d9d2c45fb95dfa6d768a14d  libgo/go/io/pipe.go
  2aede3906faae4d3345e8f920dea3ec9  libgo/go/io/pipe_test.go
! c2c00ad977ffa9840fc2efcb933faddc  libgo/go/log/log.go
! e83593c150d09111e8a286b7bbdc4944  libgo/go/log/log_test.go
  e1898bb015ade6fb47cf79273e845db2  libgo/go/log/syslog/doc.go
  552ae509e0780cb32ad6c818f065a380  libgo/go/log/syslog/example_test.go
! 1a469852babd69328a7c222e333163e4  libgo/go/log/syslog/syslog.go
! 5a7976c6d885eb99b534a5dfdaea0682  libgo/go/log/syslog/syslog_c.c
  9f42a14ed1130e5bfb22285493c519c5  libgo/go/log/syslog/syslog_libc.go
! 8354b405c498f2698d155b76f519abf2  libgo/go/log/syslog/syslog_test.go
  1c1d1eebc3e7d7ad3488614a3738fd85  libgo/go/log/syslog/syslog_unix.go
  bc0baa61ecd6897de3da3edb0f016806  libgo/go/math/abs.go
! 390f0d72d3c81adad147c6db82db048b  libgo/go/math/acosh.go
! 31354da67eee59257d6d04c54e31b222  libgo/go/math/all_test.go
! 99f2434d0df7c9ba1ad47e6e04429f9f  libgo/go/math/arith_s390x.go
  bfecc5023664f4f5f590e1622c616030  libgo/go/math/arith_s390x_test.go
  ee47bed0f44643a86454d881fa472627  libgo/go/math/asin.go
  56391c66d4b1272044c0b6e3be60a5a6  libgo/go/math/asinh.go
*************** ee47bed0f44643a86454d881fa472627  libgo/
*** 85223,85244 ****
  a38c5d81ae7b5fa0749743a1f6d19480  libgo/go/math/atan2.go
  1a21b8de6f753a2af01c2c1bf116bc92  libgo/go/math/atanh.go
  3eff02e47f20d8e41dc9b93305133aa7  libgo/go/math/big/accuracy_string.go
! e99e06a7a30b8ca95bf1d22846644305  libgo/go/math/big/arith.go
  3b1de652535445b99ab2db4c6483df0c  libgo/go/math/big/arith_amd64.go
! e1f81ffe502c71d38cd18c424071e450  libgo/go/math/big/arith_decl.go
! 701bafc653013add3e871090d96c907a  libgo/go/math/big/arith_decl_pure.go
! 8c7cba4de43356093588dbd80f507959  libgo/go/math/big/arith_decl_s390x.go
! 8726925a09e7aaebd730029ade39c9aa  libgo/go/math/big/arith_s390x_test.go
! de5cf1fe785159086591dcc2ead46e7c  libgo/go/math/big/arith_test.go
  531c8219fcaf9855deccc82027b58363  libgo/go/math/big/bits_test.go
  8a466a0f1cde16efa473dc4d23259bb3  libgo/go/math/big/calibrate_test.go
! 7441f413fd175be344ef87098768e583  libgo/go/math/big/decimal.go
  71f75a06e14c8c009d5777e5f897dbcd  libgo/go/math/big/decimal_test.go
  aacd9e49acb2bfbf4a6969b4712ee33e  libgo/go/math/big/doc.go
  3cca165f20a30a7c2263cd6ac9c3e7c3  libgo/go/math/big/example_rat_test.go
! c10b9ca1be91607abba13ebca34ecd3a  libgo/go/math/big/float.go
  94bd0f3b6df04601c99a5a5993c22c0d  libgo/go/math/big/float_test.go
! 345160fc41aae5398551764734ace247  libgo/go/math/big/floatconv.go
  fd9a871cd0bbe604e704daf713f82275  libgo/go/math/big/floatconv_test.go
  fa13efda78fb148d3417cce3248e0b94  libgo/go/math/big/floatexample_test.go
  b0f20b2822c486d8711bc0d0fabf33de  libgo/go/math/big/floatmarsh.go
--- 91229,91250 ----
  a38c5d81ae7b5fa0749743a1f6d19480  libgo/go/math/atan2.go
  1a21b8de6f753a2af01c2c1bf116bc92  libgo/go/math/atanh.go
  3eff02e47f20d8e41dc9b93305133aa7  libgo/go/math/big/accuracy_string.go
! 19cf848d64d107c15b45420a5c226fbf  libgo/go/math/big/arith.go
  3b1de652535445b99ab2db4c6483df0c  libgo/go/math/big/arith_amd64.go
! 8c5d65e25fee864dcfe07f8e4b52f067  libgo/go/math/big/arith_decl.go
! f4292de20b0dadad077fedc3fc3ef239  libgo/go/math/big/arith_decl_pure.go
! 5afbbd5632d4d621c92bb612ad37255c  libgo/go/math/big/arith_decl_s390x.go
! a87e678346bcf5d9cc3e1fecc0540beb  libgo/go/math/big/arith_s390x_test.go
! 7a3e3778ab582aeda9b136cc8f89b8bd  libgo/go/math/big/arith_test.go
  531c8219fcaf9855deccc82027b58363  libgo/go/math/big/bits_test.go
  8a466a0f1cde16efa473dc4d23259bb3  libgo/go/math/big/calibrate_test.go
! e3ff2206e46c4b4bcc2844647f379ef0  libgo/go/math/big/decimal.go
  71f75a06e14c8c009d5777e5f897dbcd  libgo/go/math/big/decimal_test.go
  aacd9e49acb2bfbf4a6969b4712ee33e  libgo/go/math/big/doc.go
  3cca165f20a30a7c2263cd6ac9c3e7c3  libgo/go/math/big/example_rat_test.go
! d09df6d150ee3ca2ba25742cfe58acfe  libgo/go/math/big/float.go
  94bd0f3b6df04601c99a5a5993c22c0d  libgo/go/math/big/float_test.go
! 7119ff0121cc1c877a741de6ae9d8151  libgo/go/math/big/floatconv.go
  fd9a871cd0bbe604e704daf713f82275  libgo/go/math/big/floatconv_test.go
  fa13efda78fb148d3417cce3248e0b94  libgo/go/math/big/floatexample_test.go
  b0f20b2822c486d8711bc0d0fabf33de  libgo/go/math/big/floatmarsh.go
*************** b0f20b2822c486d8711bc0d0fabf33de  libgo/
*** 85246,85259 ****
  4d7cadd571e64eb7bbbee489f9ecd716  libgo/go/math/big/ftoa.go
  6f756735158cadf1b9f9f4672b21a357  libgo/go/math/big/gcd_test.go
  fb40193bf8426b322ecf298d83723925  libgo/go/math/big/hilbert_test.go
! c3c7722bc5dfcd2c759716b984a24963  libgo/go/math/big/int.go
! fa86fc80973fe66006a686c3ea958b02  libgo/go/math/big/int_test.go
  495cd63056ebbca31a6209d482d2d982  libgo/go/math/big/intconv.go
  025f18ceae84aff402e04c7d7dbb6b39  libgo/go/math/big/intconv_test.go
  f83cd650bde6dc9a8c2485bf06444de2  libgo/go/math/big/intmarsh.go
  b27cdb7ccf9576445e7184aade97c6f8  libgo/go/math/big/intmarsh_test.go
! 5ca1685620fe531ddb4b12d21f23e1ed  libgo/go/math/big/nat.go
! 892a054407f9198b4483e925b5a1a4b9  libgo/go/math/big/nat_test.go
  d44aed2c1bc27a400a674876c1ec4162  libgo/go/math/big/natconv.go
  d9ebeb148d22afa7f74c364b0c7cae5f  libgo/go/math/big/natconv_test.go
  37ca7d53a658194c31917978905eee03  libgo/go/math/big/prime.go
--- 91252,91266 ----
  4d7cadd571e64eb7bbbee489f9ecd716  libgo/go/math/big/ftoa.go
  6f756735158cadf1b9f9f4672b21a357  libgo/go/math/big/gcd_test.go
  fb40193bf8426b322ecf298d83723925  libgo/go/math/big/hilbert_test.go
! e4a2b8725ed50515145aad344e598829  libgo/go/math/big/int.go
! fa9e205b853590c1b7267a870a46846f  libgo/go/math/big/int_test.go
  495cd63056ebbca31a6209d482d2d982  libgo/go/math/big/intconv.go
  025f18ceae84aff402e04c7d7dbb6b39  libgo/go/math/big/intconv_test.go
  f83cd650bde6dc9a8c2485bf06444de2  libgo/go/math/big/intmarsh.go
  b27cdb7ccf9576445e7184aade97c6f8  libgo/go/math/big/intmarsh_test.go
! 5b57bfefda41864a56ab9e05b667285d  libgo/go/math/big/link_test.go
! a09f0908bfd9dccfb526dba926d41a3c  libgo/go/math/big/nat.go
! 5097892c6f7e877b3e37cca79f5d6682  libgo/go/math/big/nat_test.go
  d44aed2c1bc27a400a674876c1ec4162  libgo/go/math/big/natconv.go
  d9ebeb148d22afa7f74c364b0c7cae5f  libgo/go/math/big/natconv_test.go
  37ca7d53a658194c31917978905eee03  libgo/go/math/big/prime.go
*************** c07f99af31649a2b0636333e730d9d93  libgo/
*** 85265,85305 ****
  007fbce07bd46fbd343213a0c490069a  libgo/go/math/big/ratmarsh.go
  3baa3e326bed1bcbda3688e0a423defb  libgo/go/math/big/ratmarsh_test.go
  ebec80a55b4b0ec4db98b9e390f09e79  libgo/go/math/big/roundingmode_string.go
! e387679fdf51314394f26d8635ccfd1c  libgo/go/math/big/sqrt.go
  a8215473d04f5f20e59b669bd6a7fd66  libgo/go/math/big/sqrt_test.go
  9e18366ae7543837f4de3a42b1f81755  libgo/go/math/bits.go
  7bfa4f8304ea1b5fbe1ef995af6f9f75  libgo/go/math/bits/bits.go
  5fbf79c53143c2c7ad8faf3cf1a2bb64  libgo/go/math/bits/bits_errors.go
  b8de89840fb542054416a5ddc6188692  libgo/go/math/bits/bits_errors_bootstrap.go
  24d83bc55817368d8e63f142c930b5d6  libgo/go/math/bits/bits_tables.go
! 4d061f714d61782405512bc02c6fd52f  libgo/go/math/bits/bits_test.go
  8006429b4515fa749039cc520c90686a  libgo/go/math/bits/example_test.go
  21e60e9877a9cb90c81efb31ab0d8e11  libgo/go/math/bits/export_test.go
! 0da0bec26f46d959a2daa7413c5407b2  libgo/go/math/bits/make_examples.go
! 4004e5d9d547e5fe2ad42896c0708962  libgo/go/math/bits/make_tables.go
  e50f00b43d394a0cc319719168e913fd  libgo/go/math/cbrt.go
! 400bac022849ee5bc5e3e03de5e2d076  libgo/go/math/cmplx/abs.go
! b0a0aa26b59448a782575f89831e5785  libgo/go/math/cmplx/asin.go
! 44aed099a2156ec68c584e48b69f8bf0  libgo/go/math/cmplx/cmath_test.go
  1928eb52ae51818eb4897ba32fde3792  libgo/go/math/cmplx/conj.go
  df86d1988ac7b59a219120e121720a02  libgo/go/math/cmplx/example_test.go
! 0204d5c5dc63ea204583dd4d1034b2e9  libgo/go/math/cmplx/exp.go
  4ac6d445ed14fc77867d97cb71d0ee5a  libgo/go/math/cmplx/isinf.go
  290e6cab4d4048c8ae7bcf2a10bbafbd  libgo/go/math/cmplx/isnan.go
! 9cf52a2c885fd17a5c1c4b29985c70d8  libgo/go/math/cmplx/log.go
  1992e5d65cd6165f182c8fd5e0155cc6  libgo/go/math/cmplx/phase.go
  e9d3a2acfcb8f7aa22d34d60051dfc1e  libgo/go/math/cmplx/polar.go
  1e04ac1338fcea907ac52962e20130fb  libgo/go/math/cmplx/pow.go
  7565544ab9a0ce7b52dfa406942bf593  libgo/go/math/cmplx/rect.go
! 8286e3a435bb8c5bc60aa2b37bdf97db  libgo/go/math/cmplx/sin.go
! c74550f284f8b4ad74386be6b1028382  libgo/go/math/cmplx/sqrt.go
! 80304d0810d6197929d61ee39f352838  libgo/go/math/cmplx/tan.go
  76d51d6b78a918eb58974d3e180a1551  libgo/go/math/const.go
  6996ff601a059b6529b5623dd0cd9cfe  libgo/go/math/copysign.go
  46c69e6939df96f2ead0127fd151cdc6  libgo/go/math/dim.go
  c696310a2a108fa2532395d36ccc7646  libgo/go/math/erf.go
  9f5c919e88e0e943560a7e522e9b5086  libgo/go/math/erfinv.go
! 945663dbdba53d80889af5afe519f1d3  libgo/go/math/example_test.go
  68c9f1cc4d8457a9a5f9622af53e7d8f  libgo/go/math/exp.go
  77a6892b42c98c582404f30444539a58  libgo/go/math/exp_asm.go
  fb4b108669e64f9b5aea823c43a9a367  libgo/go/math/expm1.go
--- 91272,91313 ----
  007fbce07bd46fbd343213a0c490069a  libgo/go/math/big/ratmarsh.go
  3baa3e326bed1bcbda3688e0a423defb  libgo/go/math/big/ratmarsh_test.go
  ebec80a55b4b0ec4db98b9e390f09e79  libgo/go/math/big/roundingmode_string.go
! 8cea1d8e4b8ec378dfcc8f2226074757  libgo/go/math/big/sqrt.go
  a8215473d04f5f20e59b669bd6a7fd66  libgo/go/math/big/sqrt_test.go
  9e18366ae7543837f4de3a42b1f81755  libgo/go/math/bits.go
  7bfa4f8304ea1b5fbe1ef995af6f9f75  libgo/go/math/bits/bits.go
  5fbf79c53143c2c7ad8faf3cf1a2bb64  libgo/go/math/bits/bits_errors.go
  b8de89840fb542054416a5ddc6188692  libgo/go/math/bits/bits_errors_bootstrap.go
  24d83bc55817368d8e63f142c930b5d6  libgo/go/math/bits/bits_tables.go
! 70fd134308e319c371ccf039e8007d81  libgo/go/math/bits/bits_test.go
  8006429b4515fa749039cc520c90686a  libgo/go/math/bits/example_test.go
  21e60e9877a9cb90c81efb31ab0d8e11  libgo/go/math/bits/export_test.go
! 5c9f9339c4c794c743b39fc252dc9221  libgo/go/math/bits/make_examples.go
! 5e476afb86d31e88e0f6a791da046f1b  libgo/go/math/bits/make_tables.go
  e50f00b43d394a0cc319719168e913fd  libgo/go/math/cbrt.go
! f7162d9045ea9510ab026896240021b7  libgo/go/math/cmplx/abs.go
! 0184ecc1643a26c7ca854184fbe260d5  libgo/go/math/cmplx/asin.go
! 91383768c0f578da3b5ca26ef42bf747  libgo/go/math/cmplx/cmath_test.go
  1928eb52ae51818eb4897ba32fde3792  libgo/go/math/cmplx/conj.go
  df86d1988ac7b59a219120e121720a02  libgo/go/math/cmplx/example_test.go
! b2028e9a2d391d640ee6cc773e059143  libgo/go/math/cmplx/exp.go
! b743e1a2e908d653aa95f35e41635979  libgo/go/math/cmplx/huge_test.go
  4ac6d445ed14fc77867d97cb71d0ee5a  libgo/go/math/cmplx/isinf.go
  290e6cab4d4048c8ae7bcf2a10bbafbd  libgo/go/math/cmplx/isnan.go
! 247fbec6892f5fa6df7d2e38363d17c7  libgo/go/math/cmplx/log.go
  1992e5d65cd6165f182c8fd5e0155cc6  libgo/go/math/cmplx/phase.go
  e9d3a2acfcb8f7aa22d34d60051dfc1e  libgo/go/math/cmplx/polar.go
  1e04ac1338fcea907ac52962e20130fb  libgo/go/math/cmplx/pow.go
  7565544ab9a0ce7b52dfa406942bf593  libgo/go/math/cmplx/rect.go
! b0b6cde1cb13bbd346ebdc4a192ebcb5  libgo/go/math/cmplx/sin.go
! b70050d82020a78a09d0f80c28ab69f3  libgo/go/math/cmplx/sqrt.go
! 6f8db890a8205d2dd11d2619403d7ff1  libgo/go/math/cmplx/tan.go
  76d51d6b78a918eb58974d3e180a1551  libgo/go/math/const.go
  6996ff601a059b6529b5623dd0cd9cfe  libgo/go/math/copysign.go
  46c69e6939df96f2ead0127fd151cdc6  libgo/go/math/dim.go
  c696310a2a108fa2532395d36ccc7646  libgo/go/math/erf.go
  9f5c919e88e0e943560a7e522e9b5086  libgo/go/math/erfinv.go
! 97cb0d4191fe1e15f62b43c53fd0f35f  libgo/go/math/example_test.go
  68c9f1cc4d8457a9a5f9622af53e7d8f  libgo/go/math/exp.go
  77a6892b42c98c582404f30444539a58  libgo/go/math/exp_asm.go
  fb4b108669e64f9b5aea823c43a9a367  libgo/go/math/expm1.go
*************** f79fd24d6f9a8693688cdb5dfe744990  libgo/
*** 85309,85315 ****
  493edf5f6bb440d2dbfecc953e579249  libgo/go/math/fma.go
  4822cff972ca61cb955c6f6a36c2cc62  libgo/go/math/frexp.go
  9fee9eb1c4a27bde46ff9f47068ebc61  libgo/go/math/gamma.go
! 849b48999f30d0ad8630080257843af7  libgo/go/math/huge_test.go
  3ff0355ea3e589a6e34d8067b23bc07e  libgo/go/math/hypot.go
  b2d54ba768d8b7f3343854b69a633cd3  libgo/go/math/j0.go
  671d8a3fec1262edf6b6038a27a6274d  libgo/go/math/j1.go
--- 91317,91323 ----
  493edf5f6bb440d2dbfecc953e579249  libgo/go/math/fma.go
  4822cff972ca61cb955c6f6a36c2cc62  libgo/go/math/frexp.go
  9fee9eb1c4a27bde46ff9f47068ebc61  libgo/go/math/gamma.go
! a17d37b6c57712659ad85e2ca7260bcb  libgo/go/math/huge_test.go
  3ff0355ea3e589a6e34d8067b23bc07e  libgo/go/math/hypot.go
  b2d54ba768d8b7f3343854b69a633cd3  libgo/go/math/j0.go
  671d8a3fec1262edf6b6038a27a6274d  libgo/go/math/j1.go
*************** b2d54ba768d8b7f3343854b69a633cd3  libgo/
*** 85318,85324 ****
  a6421fbd9c44f96c9b411d269c2311bf  libgo/go/math/lgamma.go
  6d248032462e296f305c0b8c9b14b355  libgo/go/math/log.go
  e07dbaf31b13d9cf786d4152690f2f77  libgo/go/math/log10.go
! 620535e8c874cfcb37fdf197a9c170f9  libgo/go/math/log1p.go
  664e5b5d5a8d19bc2e7c91d3d980b67b  libgo/go/math/logb.go
  7f9fcf9e6f727787053fdf088a483810  libgo/go/math/mod.go
  870939d9b36a60ab96b01e95dd35adb2  libgo/go/math/modf.go
--- 91326,91332 ----
  a6421fbd9c44f96c9b411d269c2311bf  libgo/go/math/lgamma.go
  6d248032462e296f305c0b8c9b14b355  libgo/go/math/log.go
  e07dbaf31b13d9cf786d4152690f2f77  libgo/go/math/log10.go
! a6d6ae4ff171a327b75e01904b38154f  libgo/go/math/log1p.go
  664e5b5d5a8d19bc2e7c91d3d980b67b  libgo/go/math/logb.go
  7f9fcf9e6f727787053fdf088a483810  libgo/go/math/mod.go
  870939d9b36a60ab96b01e95dd35adb2  libgo/go/math/modf.go
*************** e07dbaf31b13d9cf786d4152690f2f77  libgo/
*** 85326,85332 ****
  ebf25f782cfb20da855daf4cc040fbb8  libgo/go/math/pow.go
  68f05dfe608033365773b29625d8a6fd  libgo/go/math/pow10.go
  994ed60e5c9cd6fae93df29614b2e6be  libgo/go/math/rand/exp.go
! f0a2035e6576998cb08c75753901c152  libgo/go/math/rand/gen_cooked.go
  cd375b5752b3094726a21a5d7732b5e1  libgo/go/math/rand/normal.go
  8073c269d6f074828a9db5f28229f721  libgo/go/math/rand/race_test.go
  ca3f837cf3ecfbae0da5af3cba36565c  libgo/go/math/rand/rand.go
--- 91334,91340 ----
  ebf25f782cfb20da855daf4cc040fbb8  libgo/go/math/pow.go
  68f05dfe608033365773b29625d8a6fd  libgo/go/math/pow10.go
  994ed60e5c9cd6fae93df29614b2e6be  libgo/go/math/rand/exp.go
! ec47ef7ebffdda64d44e0a5a32e95701  libgo/go/math/rand/gen_cooked.go
  cd375b5752b3094726a21a5d7732b5e1  libgo/go/math/rand/normal.go
  8073c269d6f074828a9db5f28229f721  libgo/go/math/rand/race_test.go
  ca3f837cf3ecfbae0da5af3cba36565c  libgo/go/math/rand/rand.go
*************** a029fa437e4ae151a70522e359e9c3d0  libgo/
*** 85339,85378 ****
  6d6c1b19605d63cd740405980a088e36  libgo/go/math/sin.go
  c557575561d914fb0897682f2026c02d  libgo/go/math/sincos.go
  fc62755ca43927185173b4d1d80c02c7  libgo/go/math/sinh.go
! ad97db28333c0a8d0a47314dcfcdb7cd  libgo/go/math/sqrt.go
  44bb39c6347c24333768ec52a8c551b2  libgo/go/math/tan.go
  4be00347ccb57c3cae5c45bec3537471  libgo/go/math/tanh.go
! c8f896388d421222d3c6d8d9c363b258  libgo/go/math/trig_reduce.go
  75063090695c29e729302c292798d6b8  libgo/go/math/unsafe.go
  9c64d71fb6f2a342b61f3600248d5d4d  libgo/go/mime/encodedword.go
! 1e5eb3e828b05d4b7b9dfce0b37a7a6e  libgo/go/mime/encodedword_test.go
! 0fe2b70579af2cdb1850873409bcbc25  libgo/go/mime/example_test.go
  e646cecd5158e36054301b0bb6704adf  libgo/go/mime/grammar.go
  ea55e25b2312e99c226e5a273c4266db  libgo/go/mime/mediatype.go
  6ed1263c400cfb229322b863e98e30b1  libgo/go/mime/mediatype_test.go
! 1f1d4d216b731ae23f58fbb610ed3f3c  libgo/go/mime/multipart/formdata.go
! 607690d75129c63da029e238d2d2c5f7  libgo/go/mime/multipart/formdata_test.go
! 80ecbed23c9086b2dd3354255d63faf5  libgo/go/mime/multipart/multipart.go
! 947e0f889ee6bd92f12c59dddcbdaef7  libgo/go/mime/multipart/multipart_test.go
  ea13f3c87e9a921a7368f85cd6ae67d3  libgo/go/mime/multipart/testdata/nested-mime
  29d0c21fd543ed7cd2aa15cc6c447899  libgo/go/mime/multipart/writer.go
! 199eb9e41958de1d5c8553068e86f66c  libgo/go/mime/multipart/writer_test.go
! 5d8d3ea50411258b34a32bfeaf070362  libgo/go/mime/quotedprintable/example_test.go
  4be366c0b9637966fe48a68be687ecb0  libgo/go/mime/quotedprintable/reader.go
  5ee4624e8a954ae45009209c028f3843  libgo/go/mime/quotedprintable/reader_test.go
  9a7a8fa0c7feea3bba71fb7f409edf6a  libgo/go/mime/quotedprintable/writer.go
! d1970eb1a59aeceb1c32c049a6a2b6fd  libgo/go/mime/quotedprintable/writer_test.go
  d7c2d693b83d74f542553f24afe3d013  libgo/go/mime/test.types
  d7c2d693b83d74f542553f24afe3d013  libgo/go/mime/testdata/test.types
  452e5eefd1071c8538b9315a6439994f  libgo/go/mime/testdata/test.types.plan9
! ccf3dc229f67e1942a70dfa20c59d6b9  libgo/go/mime/type.go
  38cd804ecac4484ac521d769afedbefb  libgo/go/mime/type_dragonfly.go
  38cd804ecac4484ac521d769afedbefb  libgo/go/mime/type_freebsd.go
  eaef28a4e56cbee96692095f999e83f8  libgo/go/mime/type_openbsd.go
  5decf13646968cfa0292bce1e80d78da  libgo/go/mime/type_plan9.go
! 2b3e1d5d4f9d10216ec911eb6a95c663  libgo/go/mime/type_test.go
! 37a4d20412a711e92f958332b4fed464  libgo/go/mime/type_unix.go
! 1a352a7ae6c8d9a9af3e85230e27c578  libgo/go/mime/type_windows.go
  e2058cbdab21bb5cf65d266969706e0e  libgo/go/net/addrselect.go
  e18e6a1c6d22dee80fae58407386579f  libgo/go/net/addrselect_test.go
  9307247e641c97ad0f67a82ac8b9ef5b  libgo/go/net/cgo_aix.go
--- 91347,91386 ----
  6d6c1b19605d63cd740405980a088e36  libgo/go/math/sin.go
  c557575561d914fb0897682f2026c02d  libgo/go/math/sincos.go
  fc62755ca43927185173b4d1d80c02c7  libgo/go/math/sinh.go
! 2a25de3c788f51c27f4e6fe380a7fd06  libgo/go/math/sqrt.go
  44bb39c6347c24333768ec52a8c551b2  libgo/go/math/tan.go
  4be00347ccb57c3cae5c45bec3537471  libgo/go/math/tanh.go
! 1a19326370f789fa184010859c26b09b  libgo/go/math/trig_reduce.go
  75063090695c29e729302c292798d6b8  libgo/go/math/unsafe.go
  9c64d71fb6f2a342b61f3600248d5d4d  libgo/go/mime/encodedword.go
! 2f4b629d6238da024f3eeac6cc62bf87  libgo/go/mime/encodedword_test.go
! 8f95cf63e95b52f170e1ca0a638759d9  libgo/go/mime/example_test.go
  e646cecd5158e36054301b0bb6704adf  libgo/go/mime/grammar.go
  ea55e25b2312e99c226e5a273c4266db  libgo/go/mime/mediatype.go
  6ed1263c400cfb229322b863e98e30b1  libgo/go/mime/mediatype_test.go
! d1439d295d145e849ac1e4f9c013213f  libgo/go/mime/multipart/formdata.go
! 60f83992f660d8c19a49229c288f8652  libgo/go/mime/multipart/formdata_test.go
! c8fe55da74d055b29d72b726250eed47  libgo/go/mime/multipart/multipart.go
! e937bf46ab349c3e5a1e7332d599abc9  libgo/go/mime/multipart/multipart_test.go
  ea13f3c87e9a921a7368f85cd6ae67d3  libgo/go/mime/multipart/testdata/nested-mime
  29d0c21fd543ed7cd2aa15cc6c447899  libgo/go/mime/multipart/writer.go
! b91db6ffe7fd90e987e8e97afb54f235  libgo/go/mime/multipart/writer_test.go
! 8b858169302a8d76b5045883818ecafa  libgo/go/mime/quotedprintable/example_test.go
  4be366c0b9637966fe48a68be687ecb0  libgo/go/mime/quotedprintable/reader.go
  5ee4624e8a954ae45009209c028f3843  libgo/go/mime/quotedprintable/reader_test.go
  9a7a8fa0c7feea3bba71fb7f409edf6a  libgo/go/mime/quotedprintable/writer.go
! 0b8baa2e929c511c094acfcefdd96fa9  libgo/go/mime/quotedprintable/writer_test.go
  d7c2d693b83d74f542553f24afe3d013  libgo/go/mime/test.types
  d7c2d693b83d74f542553f24afe3d013  libgo/go/mime/testdata/test.types
  452e5eefd1071c8538b9315a6439994f  libgo/go/mime/testdata/test.types.plan9
! 38f3cba1e07d36aaef13e98b3de07e5c  libgo/go/mime/type.go
  38cd804ecac4484ac521d769afedbefb  libgo/go/mime/type_dragonfly.go
  38cd804ecac4484ac521d769afedbefb  libgo/go/mime/type_freebsd.go
  eaef28a4e56cbee96692095f999e83f8  libgo/go/mime/type_openbsd.go
  5decf13646968cfa0292bce1e80d78da  libgo/go/mime/type_plan9.go
! b2404ba91edcd277d3a8364c4fb803a3  libgo/go/mime/type_test.go
! fab12682bc6af83e8bf9f3fb94acf2f0  libgo/go/mime/type_unix.go
! 3bdf5598271fa2c31d7b55137192c950  libgo/go/mime/type_windows.go
  e2058cbdab21bb5cf65d266969706e0e  libgo/go/net/addrselect.go
  e18e6a1c6d22dee80fae58407386579f  libgo/go/net/addrselect_test.go
  9307247e641c97ad0f67a82ac8b9ef5b  libgo/go/net/cgo_aix.go
*************** a40b11b7e620d7da9f650f3c85e94228  libgo/
*** 85391,85424 ****
  1c91001dd6a305b2636297fc7a852a46  libgo/go/net/cgo_unix.go
  97b160dce3390dbe7bf638c1743d86ee  libgo/go/net/cgo_unix_test.go
  1ae0c51bf7a5c7e6cc4577b948752c13  libgo/go/net/cgo_windows.go
! 167a99aadf9ba395a6a5d361954555ec  libgo/go/net/conf.go
  5ac9aff1490640627a495d3645b2d715  libgo/go/net/conf_netcgo.go
! bfc3bf63490c4404f9da6f5052e48d53  libgo/go/net/conf_test.go
! fb2c1e23f8863e4bd16002f1363630e8  libgo/go/net/conn_test.go
! 51483b293b903d87efafc3f8e7586ee7  libgo/go/net/dial.go
! 548e1b7b8bd79c40d6cc2cd23f97b5bd  libgo/go/net/dial_test.go
  72ec733a48ddc2c97a8db850236817b0  libgo/go/net/dial_unix_test.go
! d2622b228e7714f94cbe62e71e3eb12a  libgo/go/net/dnsclient.go
! 87994ae2396825c052b9426cf53d676d  libgo/go/net/dnsclient_test.go
! 063b227037f03e95cbbc1c61fd172d51  libgo/go/net/dnsclient_unix.go
! d8fbb3cadab50ebbc5e640dc7f1ffa1d  libgo/go/net/dnsclient_unix_test.go
  84d9bd9121afb272a4d6031b65f60279  libgo/go/net/dnsconfig_unix.go
! 0499c0a0011840039dfee685c0862ef7  libgo/go/net/dnsconfig_unix_test.go
  e19c81108b1510936f59e0fc23923503  libgo/go/net/dnsname_test.go
  2a09c424c0d8d80ffe611262a6e281a8  libgo/go/net/error_plan9.go
  b8b3b08358f6c9491bd4480a65429bdb  libgo/go/net/error_plan9_test.go
  42d0b841630fe9035f765a328c60518e  libgo/go/net/error_posix.go
  56b5bea56d7c6395d2494e5f8ae5fcaf  libgo/go/net/error_posix_test.go
! 79812a273198246eb09e54809e872e1e  libgo/go/net/error_test.go
  041d6ec8861d0caccee9fd2efc78cb00  libgo/go/net/error_unix.go
  8d6e3589f7b3eb6ee9a5f60053166e9a  libgo/go/net/error_unix_test.go
  074802dcbd0d547811a910e495d18a14  libgo/go/net/error_windows.go
  63f0353da8d8fce76096c47f4d2d6441  libgo/go/net/error_windows_test.go
! 56d36b7521b6e41a897062f99acaba1e  libgo/go/net/example_test.go
  8ce695e5626036ec9a966858f13c23ed  libgo/go/net/external_test.go
  365593e80afb253f235bba55f42b21d1  libgo/go/net/fd_plan9.go
! f8de7d88139c3282b8a482a271bf8f22  libgo/go/net/fd_unix.go
! 9ad4691b48ec2a9d52ce912e220af2d1  libgo/go/net/fd_windows.go
  fa04cee92dab65f8128b73a7a36408ae  libgo/go/net/file.go
  13ecb88d7305a09023afffde195e7c15  libgo/go/net/file_plan9.go
  292ba0400cddbd99c3ec814eec243ba3  libgo/go/net/file_stub.go
--- 91399,91433 ----
  1c91001dd6a305b2636297fc7a852a46  libgo/go/net/cgo_unix.go
  97b160dce3390dbe7bf638c1743d86ee  libgo/go/net/cgo_unix_test.go
  1ae0c51bf7a5c7e6cc4577b948752c13  libgo/go/net/cgo_windows.go
! ea0f9fa98ed9abbc58f32ca0adb4f0f6  libgo/go/net/conf.go
  5ac9aff1490640627a495d3645b2d715  libgo/go/net/conf_netcgo.go
! e7b9f81df8907c662efcb26ea7dccb03  libgo/go/net/conf_test.go
! f80a1bf212ebf785b8fcfa260f5dc107  libgo/go/net/conn_test.go
! 4bb42666ec03bd72d3cfa26fc98176ac  libgo/go/net/dial.go
! 9cce875db9d170a116014865674a722e  libgo/go/net/dial_test.go
  72ec733a48ddc2c97a8db850236817b0  libgo/go/net/dial_unix_test.go
! 3d95aea0ae8344ab86081581e0f9ffc7  libgo/go/net/dnsclient.go
! 0633848b8fde9f29e6590c6dfa02fcd7  libgo/go/net/dnsclient_test.go
! dfed4b46549f676be43d9b24b0e3f84a  libgo/go/net/dnsclient_unix.go
! 14648040434bd2630d81ee7a4516747b  libgo/go/net/dnsclient_unix_test.go
  84d9bd9121afb272a4d6031b65f60279  libgo/go/net/dnsconfig_unix.go
! 8f7437983cc8642509862731eee0c995  libgo/go/net/dnsconfig_unix_test.go
  e19c81108b1510936f59e0fc23923503  libgo/go/net/dnsname_test.go
  2a09c424c0d8d80ffe611262a6e281a8  libgo/go/net/error_plan9.go
  b8b3b08358f6c9491bd4480a65429bdb  libgo/go/net/error_plan9_test.go
  42d0b841630fe9035f765a328c60518e  libgo/go/net/error_posix.go
  56b5bea56d7c6395d2494e5f8ae5fcaf  libgo/go/net/error_posix_test.go
! 1d1377db03d2a4c39c412ffc2a8c1f22  libgo/go/net/error_test.go
  041d6ec8861d0caccee9fd2efc78cb00  libgo/go/net/error_unix.go
  8d6e3589f7b3eb6ee9a5f60053166e9a  libgo/go/net/error_unix_test.go
  074802dcbd0d547811a910e495d18a14  libgo/go/net/error_windows.go
  63f0353da8d8fce76096c47f4d2d6441  libgo/go/net/error_windows_test.go
! 049847a20de33e0167e978efe9bc4ff6  libgo/go/net/example_test.go
  8ce695e5626036ec9a966858f13c23ed  libgo/go/net/external_test.go
  365593e80afb253f235bba55f42b21d1  libgo/go/net/fd_plan9.go
! 7c53ad5ad6bb709739175577ce7dfa3a  libgo/go/net/fd_posix.go
! e56f319f19e2f3fac9507041f590ac40  libgo/go/net/fd_unix.go
! e62732711509abc471f5330f0ac38eaf  libgo/go/net/fd_windows.go
  fa04cee92dab65f8128b73a7a36408ae  libgo/go/net/file.go
  13ecb88d7305a09023afffde195e7c15  libgo/go/net/file_plan9.go
  292ba0400cddbd99c3ec814eec243ba3  libgo/go/net/file_stub.go
*************** f2e6fabae4c9d246bdbd8ff254f4e096  libgo/
*** 85432,85529 ****
  928fe4840b0c4214c7d43682f59446a8  libgo/go/net/hosts.go
  9a2343dbaa644fdbac9d74a72d812cf8  libgo/go/net/hosts_test.go
  77e1fec0f3af1cf49701683f11039637  libgo/go/net/hosts_testdata
! 3abcd3590b8166ca70ef6ad10851a7fe  libgo/go/net/http/alpn_test.go
! f71b28db2b8516ab2d96d3e845d22fbf  libgo/go/net/http/cgi/child.go
! 896d96bfbe8932bb87f8f91e61d2d4f7  libgo/go/net/http/cgi/child_test.go
! 2f07c6f437396b1cd4f097a1efdddd8e  libgo/go/net/http/cgi/host.go
  3840d3572518856a8ada5173d9811715  libgo/go/net/http/cgi/host_test.go
! 55235ba80956fbb63247fbd3ef035e72  libgo/go/net/http/cgi/integration_test.go
  e4400fedaf2630813552e8b089eab560  libgo/go/net/http/cgi/posix_test.go
  d7e85fa43c940035f4594614307de77a  libgo/go/net/http/cgi/testdata/test.cgi
! af682e050b72385b139257d3ae41919f  libgo/go/net/http/client.go
! 36a51f3ff07f95e2ccfcb734bdec9324  libgo/go/net/http/client_test.go
! 09b45e1b24b88105476c5faf568db0ad  libgo/go/net/http/clientserver_test.go
  32dab4fc96751b3b271a3658a6b16d69  libgo/go/net/http/clone.go
! 6b99a5dc7666ae9f0bbc06524379217e  libgo/go/net/http/cookie.go
! a5baa614c4bab9d1aa7e012c39f167ec  libgo/go/net/http/cookie_test.go
  42a80d5d3ffd56144396086e16a507bd  libgo/go/net/http/cookiejar/dummy_publicsuffix_test.go
  989022b325e93055d5d7ca0fe4e5ebb7  libgo/go/net/http/cookiejar/example_test.go
  0552a5ee0d1b3a56a3712a00dc5918cb  libgo/go/net/http/cookiejar/jar.go
  8c7a7c09f9bae622b62ae1560f37fdef  libgo/go/net/http/cookiejar/jar_test.go
  7aea102b9b4298e12caa878e7e70f330  libgo/go/net/http/cookiejar/punycode.go
  fabfb997332db4db285c4a3beaa6d742  libgo/go/net/http/cookiejar/punycode_test.go
! b50423cb8972e513fc81006625211254  libgo/go/net/http/doc.go
! 93b8ea058445b1a65b354c0df8202014  libgo/go/net/http/example_filesystem_test.go
  e79282f8a2abf5d53e71a8b587b0ad95  libgo/go/net/http/example_handle_test.go
! 135709e5a5e13c9bb760ae99a4ef2c9d  libgo/go/net/http/example_test.go
! 6d86636e058c30f9f4990f970673856d  libgo/go/net/http/export_test.go
! c569eb9686d3933bc9a8555f65135897  libgo/go/net/http/fcgi/child.go
  47202d325ac9d95c70abeaaaffc8dd61  libgo/go/net/http/fcgi/fcgi.go
! 24f24cc41353df388b8c81592622fbd9  libgo/go/net/http/fcgi/fcgi_test.go
  8f307dd7176f148925a44be015c37dba  libgo/go/net/http/filetransport.go
! 0e1a9ae7ece248077c9fad98299e4483  libgo/go/net/http/filetransport_test.go
! 1572ee47081fba0e2ed70c84aa3e8c2a  libgo/go/net/http/fs.go
! 57f5ee2d6b89cf9c8deb9c5e2b1e72f7  libgo/go/net/http/fs_test.go
! d462c8646cf3a7a1f4eeb19679d74fa0  libgo/go/net/http/h2_bundle.go
  4d4601fac859fd8a72db73438a7668c5  libgo/go/net/http/header.go
  33d6be154b87bdf0f213bcab064b5f00  libgo/go/net/http/header_test.go
! f394bc1b266364e6092a71551232a7b7  libgo/go/net/http/http.go
! ce1afbc372fc4981ed7fc56a1aced98c  libgo/go/net/http/http_test.go
! 00c9695690472614a25c1350d3e43beb  libgo/go/net/http/httptest/example_test.go
! 753b35f46ca755bbee4f49c46550bd56  libgo/go/net/http/httptest/httptest.go
! af4c14bfc69278f4d55dec879eadf5e6  libgo/go/net/http/httptest/httptest_test.go
! b39e7481c75e0ecbd96f3895dd8aa6ed  libgo/go/net/http/httptest/recorder.go
! af709cd6db51db84c8993888fe64f362  libgo/go/net/http/httptest/recorder_test.go
  d01b4313ea3995f7adaa945cdb68e102  libgo/go/net/http/httptest/server.go
! 8a35b364624cb82893df7c887323a671  libgo/go/net/http/httptest/server_test.go
  e6dc64cdeb8c4ccdf9e88fdb0d4587ef  libgo/go/net/http/httptrace/example_test.go
  5a3eac540df1900a44d08f7a9f9d85d1  libgo/go/net/http/httptrace/trace.go
  bb2a61d61c614a20bfdef885c91bb578  libgo/go/net/http/httptrace/trace_test.go
! f1409690da40c57e52e31ac5fa95cf1b  libgo/go/net/http/httputil/dump.go
! ed4d752a1c4f45f95d3d38893612a372  libgo/go/net/http/httputil/dump_test.go
! bf6fbd9583e3dfba760cf2e37f18b3fb  libgo/go/net/http/httputil/example_test.go
  621fc522707bcfe96838d2f35ff32e29  libgo/go/net/http/httputil/httputil.go
  8fcb758f622f8024b45c670f5c214f6a  libgo/go/net/http/httputil/persist.go
! 3c4a764c327038cf2a38e28bf0092c27  libgo/go/net/http/httputil/reverseproxy.go
! 04c8044616a1594ece1550545ee11ead  libgo/go/net/http/httputil/reverseproxy_test.go
  f41563affc303e804d128880491ffd58  libgo/go/net/http/internal/chunked.go
! 9b9252666bb5bfc6b6bd22b8ed065237  libgo/go/net/http/internal/chunked_test.go
  d8dfb99ddffa4bb63870288bdf1b9fe8  libgo/go/net/http/internal/testcert.go
  0f1b2ae9b087721dc8d532479b919c2e  libgo/go/net/http/jar.go
! fe5775e8fd8ba986e84cd281cdbafa46  libgo/go/net/http/main_test.go
  5b196501ffa7d98bd91bcb0561952a22  libgo/go/net/http/method.go
! 031baecfa54efdc46f351fb7469f539e  libgo/go/net/http/omithttp2.go
! 890c40fdbb24bcbb9df7c78fd1da15bd  libgo/go/net/http/pprof/pprof.go
! fa1022533c76a2198844f5c7e263eb3f  libgo/go/net/http/pprof/pprof_test.go
! f41a4a4d2d2387f202e30fa290bff01f  libgo/go/net/http/proxy_test.go
  9a78c894b9046071d6fd6ecaaaa1537b  libgo/go/net/http/range_test.go
! 01586643b9393067a8d919bf80cd6dfc  libgo/go/net/http/readrequest_test.go
! 1f69b13583d9f3567409301998ce53d5  libgo/go/net/http/request.go
! a0873969151e452713f28b06c882161c  libgo/go/net/http/request_test.go
! 1ffb45e5f59a01b7a5dc9e34af75b1c8  libgo/go/net/http/requestwrite_test.go
! 489170b5049b7c44ed96626419411ea4  libgo/go/net/http/response.go
! e77f4656370d07b193522273c189525c  libgo/go/net/http/response_test.go
! 06f5252495a364cbb74825a589b7467c  libgo/go/net/http/responsewrite_test.go
  46994b44d2940614c609ba98688e7a3f  libgo/go/net/http/roundtrip.go
! 497607d7446b5da8c51b64626d3e0f9f  libgo/go/net/http/roundtrip_js.go
! 9870906c6c026278663115bf36c2272b  libgo/go/net/http/serve_test.go
! 700d33d23416de5bd7dc67711d8ca247  libgo/go/net/http/server.go
  a7586db3651650d075f8fa4151a5f579  libgo/go/net/http/server_test.go
  ddf3c49d88c56a8d67fb809980cb20b6  libgo/go/net/http/sniff.go
! fb6a03dd1b0fcfdcc97f49bced933658  libgo/go/net/http/sniff_test.go
  743834de0c5c3afe182870b421463ea7  libgo/go/net/http/socks_bundle.go
  959838655df79dd1948d8a7e1e954196  libgo/go/net/http/status.go
  3749f52bb326ae96782b42dc0a97b4c1  libgo/go/net/http/testdata/file
  39bf3a5cbcd978e0d9a9bab0f27787b4  libgo/go/net/http/testdata/index.html
  746f7bd76da133c7035108d0053a7e79  libgo/go/net/http/testdata/style.css
! f2e6f07289d59034477d0f9ff8e13619  libgo/go/net/http/transfer.go
! af9529304c62bdfb808b7f4d2c92e3e5  libgo/go/net/http/transfer_test.go
! 0bfc5ac67338a72f64ec66e43c06aa4b  libgo/go/net/http/transport.go
! cd93f24f598e8bca4fcdd70b8bfc1512  libgo/go/net/http/transport_internal_test.go
! ba84060454f297b5b9f63eff1746af29  libgo/go/net/http/transport_test.go
  1cc2a86545b9a3ad083398fd0eb443de  libgo/go/net/http/triv.go
  1de2210361240cb1b3b237a4bb5bdbf1  libgo/go/net/interface.go
! caa877eb9b42bfd54e336d3c18538b8d  libgo/go/net/interface_aix.go
  55dbd9d74d3b73535e827df0056bae1e  libgo/go/net/interface_bsd.go
  77ada80f92003ee97ea83618ee47fa4e  libgo/go/net/interface_bsd_test.go
  82469630fe461a0b90c1242ea1c06145  libgo/go/net/interface_bsdvar.go
--- 91441,91538 ----
  928fe4840b0c4214c7d43682f59446a8  libgo/go/net/hosts.go
  9a2343dbaa644fdbac9d74a72d812cf8  libgo/go/net/hosts_test.go
  77e1fec0f3af1cf49701683f11039637  libgo/go/net/hosts_testdata
! 7641f03b37990656f1576a2bacf8f7ca  libgo/go/net/http/alpn_test.go
! 97c9804ba4405d65f35b808f94454192  libgo/go/net/http/cgi/child.go
! 8a0a6010ff8d3d98ef12c353d26c2bef  libgo/go/net/http/cgi/child_test.go
! 6c8bf1c306e687e9c64c2fcdb082a5b6  libgo/go/net/http/cgi/host.go
  3840d3572518856a8ada5173d9811715  libgo/go/net/http/cgi/host_test.go
! 99a9b081ac9213a61fd8f1d8c1fedd52  libgo/go/net/http/cgi/integration_test.go
  e4400fedaf2630813552e8b089eab560  libgo/go/net/http/cgi/posix_test.go
  d7e85fa43c940035f4594614307de77a  libgo/go/net/http/cgi/testdata/test.cgi
! ad4de725958b31ba38d5cd4c952c5228  libgo/go/net/http/client.go
! 4252ede860e070a2ab445ac7de7e44a6  libgo/go/net/http/client_test.go
! 16efad9ef3af2f0e47c240635b3db8d1  libgo/go/net/http/clientserver_test.go
  32dab4fc96751b3b271a3658a6b16d69  libgo/go/net/http/clone.go
! 57f5b3bad1ed9517b8253651e6535860  libgo/go/net/http/cookie.go
! 83f75344595ca7d211e0e5e54e8666ef  libgo/go/net/http/cookie_test.go
  42a80d5d3ffd56144396086e16a507bd  libgo/go/net/http/cookiejar/dummy_publicsuffix_test.go
  989022b325e93055d5d7ca0fe4e5ebb7  libgo/go/net/http/cookiejar/example_test.go
  0552a5ee0d1b3a56a3712a00dc5918cb  libgo/go/net/http/cookiejar/jar.go
  8c7a7c09f9bae622b62ae1560f37fdef  libgo/go/net/http/cookiejar/jar_test.go
  7aea102b9b4298e12caa878e7e70f330  libgo/go/net/http/cookiejar/punycode.go
  fabfb997332db4db285c4a3beaa6d742  libgo/go/net/http/cookiejar/punycode_test.go
! 9076d9db46c1c4ade79461dc62bd4dbe  libgo/go/net/http/doc.go
! 5b6a21d31e80ad6c19a58345aee58ac6  libgo/go/net/http/example_filesystem_test.go
  e79282f8a2abf5d53e71a8b587b0ad95  libgo/go/net/http/example_handle_test.go
! 7ecd7017df48c43f1db1d357e8f21873  libgo/go/net/http/example_test.go
! 75ecfd6146bd2a4a4afa886fe71ba384  libgo/go/net/http/export_test.go
! 61305ed0b99ea85b5c37be3f54d1f11c  libgo/go/net/http/fcgi/child.go
  47202d325ac9d95c70abeaaaffc8dd61  libgo/go/net/http/fcgi/fcgi.go
! 1171b2fd272110e556bf67992fd20b64  libgo/go/net/http/fcgi/fcgi_test.go
  8f307dd7176f148925a44be015c37dba  libgo/go/net/http/filetransport.go
! a25d68ed5be13dcbf8a8df0b43804521  libgo/go/net/http/filetransport_test.go
! 19b65e44ae21cc537047e06f1f31f875  libgo/go/net/http/fs.go
! 1c3c19becb2d7895c60d603ea3b2d15f  libgo/go/net/http/fs_test.go
! 9ba15574af137b0b8ee1335378f141fc  libgo/go/net/http/h2_bundle.go
  4d4601fac859fd8a72db73438a7668c5  libgo/go/net/http/header.go
  33d6be154b87bdf0f213bcab064b5f00  libgo/go/net/http/header_test.go
! 49360f359f8152d6638cf019152081bd  libgo/go/net/http/http.go
! 9ac8f0f399219c9d7eb77dc3c7ef419f  libgo/go/net/http/http_test.go
! d499dfabe7114254ee6c46aa0aa60af6  libgo/go/net/http/httptest/example_test.go
! 14ded6bb454b765d7cce0dfb77fd49cb  libgo/go/net/http/httptest/httptest.go
! 7d91e33ce6d2d5af37024f317fbd7e86  libgo/go/net/http/httptest/httptest_test.go
! 785ddb162c3de6330d60e350e3c87769  libgo/go/net/http/httptest/recorder.go
! f2e40c968579813d4e4bad71af19e6f2  libgo/go/net/http/httptest/recorder_test.go
  d01b4313ea3995f7adaa945cdb68e102  libgo/go/net/http/httptest/server.go
! 4fe7875d8475b243712d3ef4d379999a  libgo/go/net/http/httptest/server_test.go
  e6dc64cdeb8c4ccdf9e88fdb0d4587ef  libgo/go/net/http/httptrace/example_test.go
  5a3eac540df1900a44d08f7a9f9d85d1  libgo/go/net/http/httptrace/trace.go
  bb2a61d61c614a20bfdef885c91bb578  libgo/go/net/http/httptrace/trace_test.go
! 7e873b8a525bec21ff9c731496a55708  libgo/go/net/http/httputil/dump.go
! 954be5d60a1cbd11e6ff7fbd6c5f3004  libgo/go/net/http/httputil/dump_test.go
! 48c8628596e0db641a910479cbc95c60  libgo/go/net/http/httputil/example_test.go
  621fc522707bcfe96838d2f35ff32e29  libgo/go/net/http/httputil/httputil.go
  8fcb758f622f8024b45c670f5c214f6a  libgo/go/net/http/httputil/persist.go
! 102d77b29f81120abb6810f597ae40af  libgo/go/net/http/httputil/reverseproxy.go
! 48949029d8ed08aa818ba0a7dff9e525  libgo/go/net/http/httputil/reverseproxy_test.go
  f41563affc303e804d128880491ffd58  libgo/go/net/http/internal/chunked.go
! c3561567fa2c3c2f70748fbb6834510e  libgo/go/net/http/internal/chunked_test.go
  d8dfb99ddffa4bb63870288bdf1b9fe8  libgo/go/net/http/internal/testcert.go
  0f1b2ae9b087721dc8d532479b919c2e  libgo/go/net/http/jar.go
! 16c5d56b1e54d05ccfc299d62d3154ee  libgo/go/net/http/main_test.go
  5b196501ffa7d98bd91bcb0561952a22  libgo/go/net/http/method.go
! 10005d3edbd4896077baf52eca2b21ca  libgo/go/net/http/omithttp2.go
! 73f9ecc56d651b23f7bfbd07fcd65969  libgo/go/net/http/pprof/pprof.go
! ccd3698c1005feee2a10ec47a1154daa  libgo/go/net/http/pprof/pprof_test.go
! f13e1f63c322e94e3b907d6caf09d25e  libgo/go/net/http/proxy_test.go
  9a78c894b9046071d6fd6ecaaaa1537b  libgo/go/net/http/range_test.go
! f3a20b03b94a0865bbeeda0f2076d3f2  libgo/go/net/http/readrequest_test.go
! bf86005e5600a4ff826daf4d109d349d  libgo/go/net/http/request.go
! 7ae5eb68a6aadfcd9872fe8503aa5f4a  libgo/go/net/http/request_test.go
! e8090a2582b7d8c84a0643b1fed21452  libgo/go/net/http/requestwrite_test.go
! 6d90a38f3a41a3766eccf971f5e578f8  libgo/go/net/http/response.go
! fe4afea7434b6aa8a5131faadb916dae  libgo/go/net/http/response_test.go
! 49c49d05c7a8ac63eff2062c67e065f5  libgo/go/net/http/responsewrite_test.go
  46994b44d2940614c609ba98688e7a3f  libgo/go/net/http/roundtrip.go
! 2c43db9b8d7e5d63db9321300894affd  libgo/go/net/http/roundtrip_js.go
! cd7e373e5f02e73fe5c95aab8cc13d23  libgo/go/net/http/serve_test.go
! cec55125a3320513fe735a74aadbe7c8  libgo/go/net/http/server.go
  a7586db3651650d075f8fa4151a5f579  libgo/go/net/http/server_test.go
  ddf3c49d88c56a8d67fb809980cb20b6  libgo/go/net/http/sniff.go
! 19a64dc78a1331187e99b5ca5a807c5b  libgo/go/net/http/sniff_test.go
  743834de0c5c3afe182870b421463ea7  libgo/go/net/http/socks_bundle.go
  959838655df79dd1948d8a7e1e954196  libgo/go/net/http/status.go
  3749f52bb326ae96782b42dc0a97b4c1  libgo/go/net/http/testdata/file
  39bf3a5cbcd978e0d9a9bab0f27787b4  libgo/go/net/http/testdata/index.html
  746f7bd76da133c7035108d0053a7e79  libgo/go/net/http/testdata/style.css
! 3b1d33a2a9bfc46181f7c54d16f667ac  libgo/go/net/http/transfer.go
! a27ef4ea99a47c5dd4df08d6a6f4b15d  libgo/go/net/http/transfer_test.go
! a5e36d2a0f75270d08ce6568eb6a1d91  libgo/go/net/http/transport.go
! 7712a4b51c96dd7bd831adfcfe6698f9  libgo/go/net/http/transport_internal_test.go
! c3f149a0436b18b5871007b084ca8eec  libgo/go/net/http/transport_test.go
  1cc2a86545b9a3ad083398fd0eb443de  libgo/go/net/http/triv.go
  1de2210361240cb1b3b237a4bb5bdbf1  libgo/go/net/interface.go
! 6d4658ce4e7b49e17d28d6831ed8e707  libgo/go/net/interface_aix.go
  55dbd9d74d3b73535e827df0056bae1e  libgo/go/net/interface_bsd.go
  77ada80f92003ee97ea83618ee47fa4e  libgo/go/net/interface_bsd_test.go
  82469630fe461a0b90c1242ea1c06145  libgo/go/net/interface_bsdvar.go
*************** dc7ca7365edbede73daa0b1b5b4891c7  libgo/
*** 85531,85542 ****
  3e55fb7a3a7d5189b393a50069faa756  libgo/go/net/interface_freebsd.go
  477b4e2fff4f36318811b100f7cfcac9  libgo/go/net/interface_linux.go
  bd00334720a282bfa3655af3d4587339  libgo/go/net/interface_linux_test.go
! 0af3cd99fdc3edcfdfb39e20cddd1cb6  libgo/go/net/interface_plan9.go
! f75680fadd64ee951a7814b629c7b12a  libgo/go/net/interface_solaris.go
  8d3de81cca9651cde9463f4d8fedb02e  libgo/go/net/interface_stub.go
  033a0386e631592f479a4b8e476b121e  libgo/go/net/interface_test.go
! f1607d1980081646c9c087694a405afd  libgo/go/net/interface_unix_test.go
! 1c89f1dfe87b1137f2d0fb526accbff6  libgo/go/net/interface_windows.go
  4938aae8d8c4b20a144745c62fd03807  libgo/go/net/internal/socktest/main_test.go
  0e56ac4ee38729db3b2be1ecaabdc830  libgo/go/net/internal/socktest/main_unix_test.go
  2cfc75a60347ce6dc6ec6e2bbbbdf587  libgo/go/net/internal/socktest/main_windows_test.go
--- 91540,91551 ----
  3e55fb7a3a7d5189b393a50069faa756  libgo/go/net/interface_freebsd.go
  477b4e2fff4f36318811b100f7cfcac9  libgo/go/net/interface_linux.go
  bd00334720a282bfa3655af3d4587339  libgo/go/net/interface_linux_test.go
! 7f2d976c02da3cc28d0065030d140b13  libgo/go/net/interface_plan9.go
! e44f73a9ea0f4a7121fbd349ef32d47e  libgo/go/net/interface_solaris.go
  8d3de81cca9651cde9463f4d8fedb02e  libgo/go/net/interface_stub.go
  033a0386e631592f479a4b8e476b121e  libgo/go/net/interface_test.go
! cd30a9ed56f82d4f5b853d70f64d6dc4  libgo/go/net/interface_unix_test.go
! f2ec265e092f0d8906570a8593fd766d  libgo/go/net/interface_windows.go
  4938aae8d8c4b20a144745c62fd03807  libgo/go/net/internal/socktest/main_test.go
  0e56ac4ee38729db3b2be1ecaabdc830  libgo/go/net/internal/socktest/main_unix_test.go
  2cfc75a60347ce6dc6ec6e2bbbbdf587  libgo/go/net/internal/socktest/main_windows_test.go
*************** d533a96d403af07716cce570e7894e7f  libgo/
*** 85545,85640 ****
  210a4961c356382d8caa578085bdbdad  libgo/go/net/internal/socktest/switch_stub.go
  f5e2be14e840535ee3b2a79ed4272c43  libgo/go/net/internal/socktest/switch_unix.go
  e545fc02b83eb3d301779219574da8e8  libgo/go/net/internal/socktest/switch_windows.go
! 793e389ae252b0857053c2153d178f5e  libgo/go/net/internal/socktest/sys_cloexec.go
  3ab157716994aa4830b4d0e43246db1e  libgo/go/net/internal/socktest/sys_unix.go
  a9793c2001dcdbae6de26c3126bfc146  libgo/go/net/internal/socktest/sys_windows.go
! bfeeaf353ed4318e6567a2e4b64b573c  libgo/go/net/ip.go
  fea86d1cbbdea760b8dcf7ea47b934a4  libgo/go/net/ip_test.go
  998f95960c278185cc6ef75d037c1066  libgo/go/net/iprawsock.go
  5ddf25949204389f7e9f8cf2aafc14bc  libgo/go/net/iprawsock_plan9.go
  702c73b17e7b2f6bbc81fcd80e2380d2  libgo/go/net/iprawsock_posix.go
  7cd1b291592446506c82c1c52d97bc84  libgo/go/net/iprawsock_test.go
  f0dee4365510b930764c8499fa387b82  libgo/go/net/ipsock.go
! 0e912bdf8bac43fd471a5ea4fdf0a059  libgo/go/net/ipsock_plan9.go
  e73106463a2641ed1ad960c03d87580f  libgo/go/net/ipsock_posix.go
  07e3ace72b261ace00842ec4e545cca4  libgo/go/net/ipsock_test.go
  3e98060d35354c0739ee574a3b4a8220  libgo/go/net/listen_test.go
! 09d809b38da67d130dc2af1cf91ad44b  libgo/go/net/lookup.go
  5ac46ed0a8d1ae83aa1ba81984ff1611  libgo/go/net/lookup_fake.go
  57f21572384e12e43660359ba7be6943  libgo/go/net/lookup_plan9.go
! 8aff77e9b4a47e9b00145bdb1351c1c1  libgo/go/net/lookup_test.go
  ce866560b80d2541411e577b98f34a1a  libgo/go/net/lookup_unix.go
! 553f15f4bc9d0899fb9c11c74a8dca34  libgo/go/net/lookup_windows.go
  c8e49c19c7268af3855bf732fe511097  libgo/go/net/lookup_windows_test.go
  4b90d898a40af43e323c8bf7a6bda41f  libgo/go/net/mac.go
  3fd6cf58c362824035b77585d22e8a7c  libgo/go/net/mac_test.go
! 3aa152c5158e39a55caecfd6714e2712  libgo/go/net/mail/example_test.go
! 7d99d39fd3854987fcdbb71aa75f311a  libgo/go/net/mail/message.go
! 1dc32428198c6df0766452c6dc3038ee  libgo/go/net/mail/message_test.go
! 04201c17cd693613159de31d9917c594  libgo/go/net/main_cloexec_test.go
  f548d336745a50c4cc8aab84000c0ced  libgo/go/net/main_conf_test.go
  9c78f23cb9b4d91337ade37872c930f4  libgo/go/net/main_noconf_test.go
  eda73809fd6152fe3ad6d2d02e53b5a2  libgo/go/net/main_plan9_test.go
  c915459d5ed65674b20dcd2f185bcceb  libgo/go/net/main_posix_test.go
! 9b92bf2f5ecb798ac752508f48e5e476  libgo/go/net/main_test.go
  ee33d9a7803e138456a6fb6f71ee341a  libgo/go/net/main_unix_test.go
  843c1a9e232c2fedc1f7c555559b8dc9  libgo/go/net/main_windows_test.go
! 8c335e3b500065e9445e98352c63779e  libgo/go/net/mockserver_test.go
! 03ee8eb7bd965b28eee2915f459b882b  libgo/go/net/net.go
  c57b6d8fec004b20287e061c7a12806b  libgo/go/net/net_fake.go
! c9c42a3c6017943f8dbe5123a6d42594  libgo/go/net/net_test.go
  d20ac26330c1e6fa5c87a58b79711acf  libgo/go/net/newpollserver_rtems.go
  6be4dc522d68c3da3f17b58c7e516494  libgo/go/net/nss.go
  9468475a1e672be361eae05bd6d14cca  libgo/go/net/nss_test.go
  c15f35d8f2d9ef5129c08b325da26f8d  libgo/go/net/packetconn_test.go
  c2f0dcd463ece472ebd0dfd0c3fbdb38  libgo/go/net/parse.go
  3279d0b13595d5e1bfb99cb783442120  libgo/go/net/parse_test.go
! 4ac000d99e64d1c64a252251ba9a5373  libgo/go/net/pipe.go
  55cefd2dfaea8ff7cf1fdd39074d09f1  libgo/go/net/pipe_test.go
! 44faf4b412a9b85fb0964136e8efc1ba  libgo/go/net/platform_test.go
  af34e67f238a3a08bbeefc6183d29db7  libgo/go/net/port.go
  978481de9c29c13c4a16a3830071185b  libgo/go/net/port_test.go
  8c0d7aaac3166c161d7b9e8eedfc612c  libgo/go/net/port_unix.go
! 3b2ec0b74e493285720eeea9a9bb8961  libgo/go/net/protoconn_test.go
  9687c28f5dc92a1da123e0e1274acc81  libgo/go/net/rawconn.go
  51ea9b7abbb9f15c63bf6a28a395c613  libgo/go/net/rawconn_stub_test.go
! 10e7676b28a7a9bf9521e915949db221  libgo/go/net/rawconn_test.go
! a50bd511fb91d3109017b16c4f612657  libgo/go/net/rawconn_unix_test.go
! 77b6ad87f76505931876139ea33ca584  libgo/go/net/rawconn_windows_test.go
! e9eb8dc7322442ce4f4aab6e1fc59942  libgo/go/net/rpc/client.go
  dc7eddb96079bd8e41e2575c18600d48  libgo/go/net/rpc/client_test.go
  762e605bffd0f0a556ee73f508ccbfdb  libgo/go/net/rpc/debug.go
! eaa2a38318b398653cd0f7f6a6cfe45e  libgo/go/net/rpc/jsonrpc/all_test.go
  ff795877f97b65357aa503243b45d315  libgo/go/net/rpc/jsonrpc/client.go
  8c6fdfad63d6c4d640fbfd035195cf67  libgo/go/net/rpc/jsonrpc/server.go
  16da175ff093948a388f398205db6672  libgo/go/net/rpc/server.go
  815a2f3260866ae90071593c2226ce51  libgo/go/net/rpc/server_test.go
  5b3add5c4e27bfd2da9536ec88fd597c  libgo/go/net/sendfile_glibc.go
  721dbdf95459d720107b1324f6194ffc  libgo/go/net/sendfile_stub.go
! ce602236fcdabdf104e32e8d195fa9e6  libgo/go/net/sendfile_test.go
  24b8e7273ff3c5ed1f8b261f44b7bd2c  libgo/go/net/sendfile_unix_alt.go
  cd44d6ae6b2b3350bbed7ebd04f4dce9  libgo/go/net/sendfile_windows.go
! c3f090ca76294fc08be9c5c634ac5d89  libgo/go/net/server_test.go
  7afcebc4df1bf52412d0f986632e31b2  libgo/go/net/smtp/auth.go
! ed09c9e214895a722a47d5562b9ab773  libgo/go/net/smtp/smtp.go
! f81ba586e4253ece86e31f3474b8e65d  libgo/go/net/smtp/smtp_test.go
! 2830a0d463f118d7dbce6129f70b8eb0  libgo/go/net/sock_bsd.go
! b31571ad4581386d715866d9dd0dc941  libgo/go/net/sock_cloexec.go
! 8f28ceaeb7fc96f283f045789e8112e5  libgo/go/net/sock_linux.go
  1745a4c17a11526e5b5264cf29f14a19  libgo/go/net/sock_plan9.go
  0b5c710926043382e478f3099a6b658a  libgo/go/net/sock_posix.go
  ff289f7506c62c0f610bc4ab3ff3bd7e  libgo/go/net/sock_stub.go
  586c6c2dbd46b409eaa254d4303aa799  libgo/go/net/sock_windows.go
  a8cac3be8de9c88ef61a9f81d2c0a3cb  libgo/go/net/sockaddr_posix.go
! 78e3546c36e076b63f983bb51ef5091f  libgo/go/net/sockopt_aix.go
! c0b5f2c3ce1dce59fee93fcd04d2d6aa  libgo/go/net/sockopt_bsd.go
  4fa5f3d74893806406fe9266c7e8201d  libgo/go/net/sockopt_hurd.go
! b3d3070c05591ca14e669733d519a05f  libgo/go/net/sockopt_linux.go
  144c11ac9965aac68530e61d45bc93d7  libgo/go/net/sockopt_plan9.go
  b9845c25a7ab3005c831ec44c93c8038  libgo/go/net/sockopt_posix.go
! b3d3070c05591ca14e669733d519a05f  libgo/go/net/sockopt_solaris.go
  a63fb310d0dfd85f9c206eeb86456203  libgo/go/net/sockopt_stub.go
! d31ec179341939e5568d9e920d37ffa1  libgo/go/net/sockopt_windows.go
  48590a90b3d81d9c93872de1f1d83f9c  libgo/go/net/sockoptip_bsdvar.go
  f8ae591103e20a0aa91d07b395965ad0  libgo/go/net/sockoptip_linux.go
  af9eda9f2808fabb678e4f42d90c4a07  libgo/go/net/sockoptip_posix.go
--- 91554,91651 ----
  210a4961c356382d8caa578085bdbdad  libgo/go/net/internal/socktest/switch_stub.go
  f5e2be14e840535ee3b2a79ed4272c43  libgo/go/net/internal/socktest/switch_unix.go
  e545fc02b83eb3d301779219574da8e8  libgo/go/net/internal/socktest/switch_windows.go
! 8c566bb2dfbfaadb53bfecaafad7299a  libgo/go/net/internal/socktest/sys_cloexec.go
  3ab157716994aa4830b4d0e43246db1e  libgo/go/net/internal/socktest/sys_unix.go
  a9793c2001dcdbae6de26c3126bfc146  libgo/go/net/internal/socktest/sys_windows.go
! 6ab9cb5ecc1902a3c6d26aaad3ba0cb8  libgo/go/net/ip.go
  fea86d1cbbdea760b8dcf7ea47b934a4  libgo/go/net/ip_test.go
  998f95960c278185cc6ef75d037c1066  libgo/go/net/iprawsock.go
  5ddf25949204389f7e9f8cf2aafc14bc  libgo/go/net/iprawsock_plan9.go
  702c73b17e7b2f6bbc81fcd80e2380d2  libgo/go/net/iprawsock_posix.go
  7cd1b291592446506c82c1c52d97bc84  libgo/go/net/iprawsock_test.go
  f0dee4365510b930764c8499fa387b82  libgo/go/net/ipsock.go
! ee95729a82114579c73d006a9cdfb56a  libgo/go/net/ipsock_plan9.go
! a3a7e158b19729a1ade563770da81985  libgo/go/net/ipsock_plan9_test.go
  e73106463a2641ed1ad960c03d87580f  libgo/go/net/ipsock_posix.go
  07e3ace72b261ace00842ec4e545cca4  libgo/go/net/ipsock_test.go
  3e98060d35354c0739ee574a3b4a8220  libgo/go/net/listen_test.go
! 0fd9b5038c99d2eefd57ce71648332a0  libgo/go/net/lookup.go
  5ac46ed0a8d1ae83aa1ba81984ff1611  libgo/go/net/lookup_fake.go
  57f21572384e12e43660359ba7be6943  libgo/go/net/lookup_plan9.go
! 73a0f83b029425672019f8ec5d0d787d  libgo/go/net/lookup_test.go
  ce866560b80d2541411e577b98f34a1a  libgo/go/net/lookup_unix.go
! 79678b69256585beb2e73b6bb751b030  libgo/go/net/lookup_windows.go
  c8e49c19c7268af3855bf732fe511097  libgo/go/net/lookup_windows_test.go
  4b90d898a40af43e323c8bf7a6bda41f  libgo/go/net/mac.go
  3fd6cf58c362824035b77585d22e8a7c  libgo/go/net/mac_test.go
! 97a3035d50497940cc9f6f0344d20570  libgo/go/net/mail/example_test.go
! 7c8f73222e4d071534d9b20fec33f528  libgo/go/net/mail/message.go
! b13090c48e676c8ceb99d0825a76f9b1  libgo/go/net/mail/message_test.go
! 6746fd10e869d5a352809bf6f709665d  libgo/go/net/main_cloexec_test.go
  f548d336745a50c4cc8aab84000c0ced  libgo/go/net/main_conf_test.go
  9c78f23cb9b4d91337ade37872c930f4  libgo/go/net/main_noconf_test.go
  eda73809fd6152fe3ad6d2d02e53b5a2  libgo/go/net/main_plan9_test.go
  c915459d5ed65674b20dcd2f185bcceb  libgo/go/net/main_posix_test.go
! 96b558563018da41ebed12e8e1dd0367  libgo/go/net/main_test.go
  ee33d9a7803e138456a6fb6f71ee341a  libgo/go/net/main_unix_test.go
  843c1a9e232c2fedc1f7c555559b8dc9  libgo/go/net/main_windows_test.go
! a10b9e35d70de28b8f12814459f152fc  libgo/go/net/mockserver_test.go
! aff2ec583e47a06ef3b87b238466b791  libgo/go/net/net.go
  c57b6d8fec004b20287e061c7a12806b  libgo/go/net/net_fake.go
! f135db4cb19f3458710ec982ae0fb738  libgo/go/net/net_test.go
  d20ac26330c1e6fa5c87a58b79711acf  libgo/go/net/newpollserver_rtems.go
  6be4dc522d68c3da3f17b58c7e516494  libgo/go/net/nss.go
  9468475a1e672be361eae05bd6d14cca  libgo/go/net/nss_test.go
  c15f35d8f2d9ef5129c08b325da26f8d  libgo/go/net/packetconn_test.go
  c2f0dcd463ece472ebd0dfd0c3fbdb38  libgo/go/net/parse.go
  3279d0b13595d5e1bfb99cb783442120  libgo/go/net/parse_test.go
! 0dde92b72eee0cc50fe8bf91e5cd62b5  libgo/go/net/pipe.go
  55cefd2dfaea8ff7cf1fdd39074d09f1  libgo/go/net/pipe_test.go
! c5c601ef30dd705c4bcc3f456348dd01  libgo/go/net/platform_test.go
  af34e67f238a3a08bbeefc6183d29db7  libgo/go/net/port.go
  978481de9c29c13c4a16a3830071185b  libgo/go/net/port_test.go
  8c0d7aaac3166c161d7b9e8eedfc612c  libgo/go/net/port_unix.go
! 348c8eb27e296d5129d313b3e67de966  libgo/go/net/protoconn_test.go
  9687c28f5dc92a1da123e0e1274acc81  libgo/go/net/rawconn.go
  51ea9b7abbb9f15c63bf6a28a395c613  libgo/go/net/rawconn_stub_test.go
! d9a007acaa20a67dd2ce23c8d39f4445  libgo/go/net/rawconn_test.go
! bba31a8d06589f04be7a6bb68b536a93  libgo/go/net/rawconn_unix_test.go
! e4e0d447c40a040fd3332598398f8bda  libgo/go/net/rawconn_windows_test.go
! a494ab1139990e3926aae6fb447cc805  libgo/go/net/rpc/client.go
  dc7eddb96079bd8e41e2575c18600d48  libgo/go/net/rpc/client_test.go
  762e605bffd0f0a556ee73f508ccbfdb  libgo/go/net/rpc/debug.go
! 1dc366ed08a127bb4afee52b265a2d8a  libgo/go/net/rpc/jsonrpc/all_test.go
  ff795877f97b65357aa503243b45d315  libgo/go/net/rpc/jsonrpc/client.go
  8c6fdfad63d6c4d640fbfd035195cf67  libgo/go/net/rpc/jsonrpc/server.go
  16da175ff093948a388f398205db6672  libgo/go/net/rpc/server.go
  815a2f3260866ae90071593c2226ce51  libgo/go/net/rpc/server_test.go
  5b3add5c4e27bfd2da9536ec88fd597c  libgo/go/net/sendfile_glibc.go
  721dbdf95459d720107b1324f6194ffc  libgo/go/net/sendfile_stub.go
! c766859d43863cdf07d4984d17f09510  libgo/go/net/sendfile_test.go
  24b8e7273ff3c5ed1f8b261f44b7bd2c  libgo/go/net/sendfile_unix_alt.go
  cd44d6ae6b2b3350bbed7ebd04f4dce9  libgo/go/net/sendfile_windows.go
! 945b942313ba8cf4f4e1239eadb273a6  libgo/go/net/server_test.go
  7afcebc4df1bf52412d0f986632e31b2  libgo/go/net/smtp/auth.go
! 29d20945b94901edca38358db3531ca5  libgo/go/net/smtp/smtp.go
! a42e8795e9077f6c4d76b6865fb72613  libgo/go/net/smtp/smtp_test.go
! c791c9a7cec804f833dba5c1c3413a3a  libgo/go/net/sock_bsd.go
! a007ad97a8ba9ab382f1a28e84f4d414  libgo/go/net/sock_cloexec.go
! bbe86caad9d84d107df292439d1d69c8  libgo/go/net/sock_linux.go
! 4dfe461cfa55fc62cdae8eb9e1e0ef51  libgo/go/net/sock_linux_test.go
  1745a4c17a11526e5b5264cf29f14a19  libgo/go/net/sock_plan9.go
  0b5c710926043382e478f3099a6b658a  libgo/go/net/sock_posix.go
  ff289f7506c62c0f610bc4ab3ff3bd7e  libgo/go/net/sock_stub.go
  586c6c2dbd46b409eaa254d4303aa799  libgo/go/net/sock_windows.go
  a8cac3be8de9c88ef61a9f81d2c0a3cb  libgo/go/net/sockaddr_posix.go
! f71881b3b43b5c24b0772a7110d2db94  libgo/go/net/sockopt_aix.go
! 8258c43efbff79dc7d6e1d76cc8554c8  libgo/go/net/sockopt_bsd.go
  4fa5f3d74893806406fe9266c7e8201d  libgo/go/net/sockopt_hurd.go
! 871c2b92d28844e6b3a518641592cdcd  libgo/go/net/sockopt_linux.go
  144c11ac9965aac68530e61d45bc93d7  libgo/go/net/sockopt_plan9.go
  b9845c25a7ab3005c831ec44c93c8038  libgo/go/net/sockopt_posix.go
! 871c2b92d28844e6b3a518641592cdcd  libgo/go/net/sockopt_solaris.go
  a63fb310d0dfd85f9c206eeb86456203  libgo/go/net/sockopt_stub.go
! ea9c79e5f89d2b3b71ce5fc2ad519cc3  libgo/go/net/sockopt_windows.go
  48590a90b3d81d9c93872de1f1d83f9c  libgo/go/net/sockoptip_bsdvar.go
  f8ae591103e20a0aa91d07b395965ad0  libgo/go/net/sockoptip_linux.go
  af9eda9f2808fabb678e4f42d90c4a07  libgo/go/net/sockoptip_posix.go
*************** af9eda9f2808fabb678e4f42d90c4a07  libgo/
*** 85642,85653 ****
  b5ee6bc6eee276205750c472b9ad6015  libgo/go/net/sockoptip_windows.go
  bcaaea0fe67ed1bc11479f252d3b02ff  libgo/go/net/splice_linux.go
  93c509c784d56231a1e03612d699f559  libgo/go/net/splice_stub.go
! b77301d9d7468f375e2a3cdc6772a8c1  libgo/go/net/splice_test.go
! 0c70ea9eeeabb207e600ba8e5af48117  libgo/go/net/sys_cloexec.go
  220a5518ac3ade85bca414ae4a215b6b  libgo/go/net/tcpsock.go
  590c0b4812a9fca1e6b798b2ac528eb2  libgo/go/net/tcpsock_plan9.go
  37848e5543b5b61e84499ad0bb070786  libgo/go/net/tcpsock_posix.go
! 19653ee824e3158db4d0566dd49d2653  libgo/go/net/tcpsock_test.go
  e0523ac7f05df4c5d316c09da7fd8ee1  libgo/go/net/tcpsock_unix_test.go
  b4c87ff0d2bd706fcee868a0365d87e2  libgo/go/net/tcpsockopt_darwin.go
  bac7765c9de9a68ea328de1d96e6093c  libgo/go/net/tcpsockopt_dragonfly.go
--- 91653,91664 ----
  b5ee6bc6eee276205750c472b9ad6015  libgo/go/net/sockoptip_windows.go
  bcaaea0fe67ed1bc11479f252d3b02ff  libgo/go/net/splice_linux.go
  93c509c784d56231a1e03612d699f559  libgo/go/net/splice_stub.go
! 17c8cf536d2b2384dedc2067159bdf8e  libgo/go/net/splice_test.go
! 55a19be9b185c96ff31e363a4d3ba386  libgo/go/net/sys_cloexec.go
  220a5518ac3ade85bca414ae4a215b6b  libgo/go/net/tcpsock.go
  590c0b4812a9fca1e6b798b2ac528eb2  libgo/go/net/tcpsock_plan9.go
  37848e5543b5b61e84499ad0bb070786  libgo/go/net/tcpsock_posix.go
! b3995fb5aba6258afee1ad89a3304c65  libgo/go/net/tcpsock_test.go
  e0523ac7f05df4c5d316c09da7fd8ee1  libgo/go/net/tcpsock_unix_test.go
  b4c87ff0d2bd706fcee868a0365d87e2  libgo/go/net/tcpsockopt_darwin.go
  bac7765c9de9a68ea328de1d96e6093c  libgo/go/net/tcpsockopt_dragonfly.go
*************** e13c881c9e7511c475dd3f538224a427  libgo/
*** 85680,85802 ****
  1e50713af550a622ccac96715544e530  libgo/go/net/testdata/singleline-hosts
  4c9f815b1e71d6207f3b7efd42d8a7e1  libgo/go/net/textproto/header.go
  8783131de6323dff01565b3ceeef7ca8  libgo/go/net/textproto/header_test.go
! 1943646963304a31dcf10d5a53d39a9a  libgo/go/net/textproto/pipeline.go
! 7a40bced9b5c6f4657046f12a3f8fe53  libgo/go/net/textproto/reader.go
  32e7cdd3cb6c5f342526eb69944abb17  libgo/go/net/textproto/reader_test.go
  4129d0642056114957236c93c22da284  libgo/go/net/textproto/textproto.go
  220484e40709e9b5cfa2e19c378261c2  libgo/go/net/textproto/writer.go
  8b533b1a06afed0dd5623c6d71e17a67  libgo/go/net/textproto/writer_test.go
! 20177df29f9fee0f8920c6ceb44ef92b  libgo/go/net/timeout_test.go
! ec9804461e67d6ad689a16a531f91bd7  libgo/go/net/udpsock.go
  cad4aba219f3d37debd02fa5a2145104  libgo/go/net/udpsock_plan9.go
  52ae31ea57d0a3db86f7e56b742ca851  libgo/go/net/udpsock_plan9_test.go
  039d2ef9980a4fc6029c5fd95bdd5d73  libgo/go/net/udpsock_posix.go
! 1a3bbff41852f65f89ae1c434418fbd8  libgo/go/net/udpsock_test.go
  9d022bcb6a4950adc68c82457408b40f  libgo/go/net/unixsock.go
  3e9fbd3d3c9a4def683ac7883c6ee147  libgo/go/net/unixsock_linux_test.go
  781514566fecf6fcd07ae118be60fa47  libgo/go/net/unixsock_plan9.go
  e4b717b3f3e05ba9656fd62d6d25fc9f  libgo/go/net/unixsock_posix.go
! 93996962ab0982977d080a1952fba746  libgo/go/net/unixsock_test.go
  199a4e85dfa65f1cc5901d3b04f2f6dd  libgo/go/net/unixsock_windows_test.go
! 890f6d69a4b9ab15a038e74393743276  libgo/go/net/url/url.go
! ac7d3e84d7be625b8f9e99db4afdc770  libgo/go/net/url/url_test.go
  01c834d311c610d1b73b61b2d9f41f3e  libgo/go/net/write_unix_test.go
! 7daef506a7851e250217b12230bf8f8e  libgo/go/net/writev_test.go
! 7f8311d51134aeee941d582c770e68e9  libgo/go/net/writev_unix.go
! ac1b65788279ef840aa30f1411d68e77  libgo/go/os/dir.go
! 1dc1101fbb76143bc5474f2c202982d8  libgo/go/os/dir_gccgo.go
! 12f95b4f670bbf0b2afa0057c4062488  libgo/go/os/dir_largefile.go
  5a7fb9d3b7290895bd47de4a284deadf  libgo/go/os/dir_libc64_gccgo.go
  5ae837671814a1d209a4f704585e27c9  libgo/go/os/dir_libc_gccgo.go
! d3cfe6799a6a88601cd99a34802996f0  libgo/go/os/dir_plan9.go
! 40fb320f259265c6e4173cb9eebf97f9  libgo/go/os/dir_regfile.go
  48612ceabf93a8d3d370a9a7f16fb0c9  libgo/go/os/env.go
  cd77df8c9ea90f59f5585ad99ad6f779  libgo/go/os/env_test.go
  829a99830d39b5262c6633d36be9b81d  libgo/go/os/env_unix_test.go
! 3ab30d1947cc1b25f04bc805e61b0c9b  libgo/go/os/error.go
  53b10212ffafcf262daa6a27eee0ea49  libgo/go/os/error_errno.go
  006fd4281d610546aa4a8ff33fd5f99a  libgo/go/os/error_plan9.go
  41b05a26214359c08d295bcf495e76c1  libgo/go/os/error_posix.go
! d3e4e79e44ed4e49c895e42222bed4b1  libgo/go/os/error_test.go
! 5b480ed556243647d7e266d19b34f756  libgo/go/os/error_unix_test.go
! 5775a5d025ee0c670d1e8c24cd8643a8  libgo/go/os/error_windows_test.go
! bba188a7f6cd76ef45574901f8952526  libgo/go/os/example_test.go
! 26a5c35d7c8d01366298f48e9b9c1113  libgo/go/os/exec.go
  c667f335928cea32a9f5a07f12ba4ad5  libgo/go/os/exec/bench_test.go
  5da5764a4759c08543e5bc63e0d970f6  libgo/go/os/exec/env_test.go
  468118c23a3fb1747bd4768fc2074b1b  libgo/go/os/exec/exec.go
! 66f6607e129dc6c74767a19bb476bc8d  libgo/go/os/exec/exec_plan9.go
  7c817d2ea793e3d11be4b0cfde72b53f  libgo/go/os/exec/exec_posix_test.go
! dd9cbd44a88c05ed5b375bafbd9e7a8e  libgo/go/os/exec/exec_test.go
! 67c24be7edf04e2c116de6e51c2189e5  libgo/go/os/exec/exec_unix.go
! fbb064eec8d475afa58a84d7e9b95eeb  libgo/go/os/exec/exec_windows.go
  2d239d712d33fb848065f13812a876ab  libgo/go/os/exec/internal_test.go
  087a049915267129b3f26d539a0f9be9  libgo/go/os/exec/lp_js.go
! e5a2e448bed9914f0d7f6abe84a48761  libgo/go/os/exec/lp_plan9.go
  41619b7d87d5ecc522bc2eafadf2f303  libgo/go/os/exec/lp_test.go
! f82ade112503fedbfbcac7758c0935e0  libgo/go/os/exec/lp_unix.go
! 418e3d54366a27e71ec9f7214b1eec37  libgo/go/os/exec/lp_unix_test.go
! 7b5285cc8dcf49fab3b141091c362099  libgo/go/os/exec/lp_windows.go
! 5e6708a7d2d5050c2e97becc81519e96  libgo/go/os/exec_plan9.go
! fc1bd2860a44afde393b46c85a93ad63  libgo/go/os/exec_posix.go
! 4da66171d95c050c7ae4741db15493f6  libgo/go/os/exec_unix.go
! 3538bd607cc26bc62db8da22714fc82a  libgo/go/os/exec_windows.go
  205c51b025b9372f82e747dfe4df1782  libgo/go/os/executable.go
  2ea7281434095cfc020304ea4563cf0a  libgo/go/os/executable_darwin.go
! 4dc05db923782c8d7f49fd3099e0e711  libgo/go/os/executable_freebsd.go
  fbe11481073d5075eefa66b42528677c  libgo/go/os/executable_path.go
  b7de93476c44316aaabb84d7439ad1ac  libgo/go/os/executable_plan9.go
! cfc217b79de781d47bc7086ba49cac00  libgo/go/os/executable_procfs.go
  247494adee7109031bdc31783030e565  libgo/go/os/executable_solaris.go
  828bee93fe63b3ca92e80c288eb651a1  libgo/go/os/executable_test.go
  76aa9403bfb354bc7e6c45c4ad819ba5  libgo/go/os/executable_windows.go
! 633be9ee06b806e3ac58904d6af48740  libgo/go/os/export_test.go
  a5c4b470aa115d38ebc202bb1387c3d8  libgo/go/os/export_unix_test.go
  5eaec89a04438036b1e5dde518a8ae06  libgo/go/os/export_windows_test.go
! d67b9f7283a78ef5ba1da53ef164883e  libgo/go/os/fifo_test.go
! 70f6db1072aa595f750da63803d46757  libgo/go/os/file.go
! 96ab144c9a484bc2363b964486a21c90  libgo/go/os/file_plan9.go
! 925079104670a13581c8ecc28cb4c4e4  libgo/go/os/file_posix.go
! 83ee40aa9eaa1a9df162e6cf2c6dd57a  libgo/go/os/file_unix.go
! 3040e1a73b2e16347d21e1660ebac89e  libgo/go/os/getwd.go
! 946002a354047976f85f0555021ddf04  libgo/go/os/getwd_darwin.go
! f8b0cb2b42e6b04effc2e7d62f2ba5a7  libgo/go/os/os_test.go
! 0354f67ab97ada46d26b0bfe309d15e5  libgo/go/os/os_unix_test.go
! 52b996693ecfd16f3a630d28303f1386  libgo/go/os/os_windows_test.go
! b2353ee6b7171268f817c917019d4856  libgo/go/os/path.go
  c5fe061b3241fd61d8724fe886aafa73  libgo/go/os/path_plan9.go
! cab0b73b5b77057b01b07f633b90caba  libgo/go/os/path_test.go
  f6a0f852e64d6b7cacbdeafc18ee39be  libgo/go/os/path_unix.go
  07eddf0ade79736627b79606534072a3  libgo/go/os/path_windows.go
! 89126173687e945f47ee21bafadf1566  libgo/go/os/path_windows_test.go
  6c80d6c0ac41d5aadf6259521395f543  libgo/go/os/pipe2_bsd.go
! 3a1c4591348f9a20d06dd0cbb456f071  libgo/go/os/pipe_bsd.go
  62e073cfad6b7be1fa723966438a32a6  libgo/go/os/pipe_glibc.go
! 7026f34265856bddb389e1368bf02af9  libgo/go/os/pipe_test.go
! 48e4869aab8b160cc1a0dbdce15df809  libgo/go/os/proc.go
  ecfb560f067c5e85c62904e8993ebd20  libgo/go/os/rawconn.go
  562b35a1b7c0c3eff8819a1a8dd04c36  libgo/go/os/rawconn_test.go
! 3dcd0507ea074c6e89c875941dab0f0e  libgo/go/os/removeall_at.go
! 12d30604d2acc9f289a195446aed07c0  libgo/go/os/removeall_noat.go
! 5b9f8c9d22a4d4759e07f1ce9a82418e  libgo/go/os/removeall_test.go
  6971857726d8ed4e0693ac29515b5585  libgo/go/os/signal/doc.go
! de24a3d8c229c07746818e8f805c1613  libgo/go/os/signal/internal/pty/pty.go
! 730044e5b43b80cfadcc8f4ce7b1274f  libgo/go/os/signal/signal.go
! f8d5c7b0776727632df0fbb6d05be80b  libgo/go/os/signal/signal_cgo_test.go
! 7b56b1fb0132bb9be440658fd5e6f8c4  libgo/go/os/signal/signal_plan9.go
  6cf1c60023e30d5d680ef01b501db3ee  libgo/go/os/signal/signal_plan9_test.go
! 65e658b47f02fae28fea84336cd6d1aa  libgo/go/os/signal/signal_test.go
! 5c9de14a7ca4c11cf3b14bdada34e0ec  libgo/go/os/signal/signal_unix.go
  c3a2764cad7b0e3d72287cbdaf77ac78  libgo/go/os/stat.go
  4319edab2ffac69f550a4ae26017b939  libgo/go/os/stat_aix.go
  caee66c9780fe059d640e53d032c325b  libgo/go/os/stat_atim.go
  935e4988e6d00ab23025096627435e65  libgo/go/os/stat_atimespec.go
  69889f3f3aa9c669ff47b492066de899  libgo/go/os/stat_dragonfly.go
  6e2d987cbabee98c52ae5c5d4a19a23a  libgo/go/os/stat_js.go
! ae62ccff3a25b5c48592bbfe7b0b8b04  libgo/go/os/stat_plan9.go
  3fa76abf938fab717fa51a63a7939245  libgo/go/os/stat_solaris.go
! 9b1717dbb1623201b0fd0f96a90995d1  libgo/go/os/stat_test.go
! 266c7990b0c60ceb70d9d08eeec75cfe  libgo/go/os/stat_unix.go
  71b59ea3be063a158bf045bce757da60  libgo/go/os/sticky_bsd.go
  b287121f5e6f7c32af9eee221a3e65e8  libgo/go/os/sticky_notbsd.go
  7278237d114b2684931308a7499ea925  libgo/go/os/str.go
--- 91691,91829 ----
  1e50713af550a622ccac96715544e530  libgo/go/net/testdata/singleline-hosts
  4c9f815b1e71d6207f3b7efd42d8a7e1  libgo/go/net/textproto/header.go
  8783131de6323dff01565b3ceeef7ca8  libgo/go/net/textproto/header_test.go
! cd367df6141c293f6de3d7c4cc7a6d27  libgo/go/net/textproto/pipeline.go
! b84fd4ec62e901b54f89544fd33a008d  libgo/go/net/textproto/reader.go
  32e7cdd3cb6c5f342526eb69944abb17  libgo/go/net/textproto/reader_test.go
  4129d0642056114957236c93c22da284  libgo/go/net/textproto/textproto.go
  220484e40709e9b5cfa2e19c378261c2  libgo/go/net/textproto/writer.go
  8b533b1a06afed0dd5623c6d71e17a67  libgo/go/net/textproto/writer_test.go
! 91ca49062084f4d0b81c8a02c1df1728  libgo/go/net/timeout_test.go
! 90883586911f67bd0a8ee43ef7b7e3ea  libgo/go/net/udpsock.go
  cad4aba219f3d37debd02fa5a2145104  libgo/go/net/udpsock_plan9.go
  52ae31ea57d0a3db86f7e56b742ca851  libgo/go/net/udpsock_plan9_test.go
  039d2ef9980a4fc6029c5fd95bdd5d73  libgo/go/net/udpsock_posix.go
! fee3d419dc3b6b719876d42aeea59e06  libgo/go/net/udpsock_test.go
  9d022bcb6a4950adc68c82457408b40f  libgo/go/net/unixsock.go
  3e9fbd3d3c9a4def683ac7883c6ee147  libgo/go/net/unixsock_linux_test.go
  781514566fecf6fcd07ae118be60fa47  libgo/go/net/unixsock_plan9.go
  e4b717b3f3e05ba9656fd62d6d25fc9f  libgo/go/net/unixsock_posix.go
! afb49b60b746f2950f962ec865d628dc  libgo/go/net/unixsock_test.go
  199a4e85dfa65f1cc5901d3b04f2f6dd  libgo/go/net/unixsock_windows_test.go
! 58dce64a99ad9b2491e2a20b3afc8b82  libgo/go/net/url/url.go
! 7bc31ec2672ffe642606c9598314e0a5  libgo/go/net/url/url_test.go
  01c834d311c610d1b73b61b2d9f41f3e  libgo/go/net/write_unix_test.go
! e70fe5f2b31986a201168b6ae8a9f865  libgo/go/net/writev_test.go
! 3bc4f2305d4cb646325567ac8b4a2f89  libgo/go/net/writev_unix.go
! ae62fb0abeecfb7a271d2951f74ae74b  libgo/go/os/dir.go
! e4e0d93b86976adf73916677181dfe7b  libgo/go/os/dir_gccgo.go
! 626828291c232475e93f49f1a707b826  libgo/go/os/dir_gccgo_c.c
! d3deb692ae1c89e8da90ed01d9f16dbd  libgo/go/os/dir_largefile.go
  5a7fb9d3b7290895bd47de4a284deadf  libgo/go/os/dir_libc64_gccgo.go
  5ae837671814a1d209a4f704585e27c9  libgo/go/os/dir_libc_gccgo.go
! c0850a9cf08dc95e5853216ba08c767e  libgo/go/os/dir_plan9.go
! d7f5b3c9e8b47d2b79131254c9579db0  libgo/go/os/dir_regfile.go
  48612ceabf93a8d3d370a9a7f16fb0c9  libgo/go/os/env.go
  cd77df8c9ea90f59f5585ad99ad6f779  libgo/go/os/env_test.go
  829a99830d39b5262c6633d36be9b81d  libgo/go/os/env_unix_test.go
! da470199a15a808612f3a3097e4f4a3c  libgo/go/os/error.go
  53b10212ffafcf262daa6a27eee0ea49  libgo/go/os/error_errno.go
  006fd4281d610546aa4a8ff33fd5f99a  libgo/go/os/error_plan9.go
  41b05a26214359c08d295bcf495e76c1  libgo/go/os/error_posix.go
! a48e9b54008a2395e2fa5d5135955f72  libgo/go/os/error_test.go
! d45241b9bf279733c03984c52501f5be  libgo/go/os/error_unix_test.go
! c0ddd4e4d820fd052ba825f658b5bc46  libgo/go/os/error_windows_test.go
! af6f9e193b61860d1e69bb4ec34be223  libgo/go/os/example_test.go
! a10f8acb5e6e7afa2780ef3a4589cc98  libgo/go/os/exec.go
  c667f335928cea32a9f5a07f12ba4ad5  libgo/go/os/exec/bench_test.go
  5da5764a4759c08543e5bc63e0d970f6  libgo/go/os/exec/env_test.go
  468118c23a3fb1747bd4768fc2074b1b  libgo/go/os/exec/exec.go
! ef94eb24a0bcc22384780dbded1c084d  libgo/go/os/exec/exec_linux_test.go
! ea7d95f6f7f47a8c425c79642db6b087  libgo/go/os/exec/exec_plan9.go
  7c817d2ea793e3d11be4b0cfde72b53f  libgo/go/os/exec/exec_posix_test.go
! eb9c011bae9f048bab8d9f56e42bdc0b  libgo/go/os/exec/exec_test.go
! 69460f7e30d1a3bb3051497ec8f7debe  libgo/go/os/exec/exec_unix.go
! c919d639a65c14c4c5f1adbb8615ee87  libgo/go/os/exec/exec_windows.go
  2d239d712d33fb848065f13812a876ab  libgo/go/os/exec/internal_test.go
  087a049915267129b3f26d539a0f9be9  libgo/go/os/exec/lp_js.go
! b2b6c83c09ee08994ca69e45716ce7cc  libgo/go/os/exec/lp_plan9.go
  41619b7d87d5ecc522bc2eafadf2f303  libgo/go/os/exec/lp_test.go
! 4ed92188e6a15babab3125dc3fec28e0  libgo/go/os/exec/lp_unix.go
! 65add26723a3f6f88ce2bafd1856a4bc  libgo/go/os/exec/lp_unix_test.go
! a4ba4a7bb7b291afd212d2aa32931eb4  libgo/go/os/exec/lp_windows.go
! 002d8c2029cfaef8683837960fee6a9e  libgo/go/os/exec/read3.go
! 1201579b585387b6b822d76b8766ea31  libgo/go/os/exec_plan9.go
! 22f80b88722e83c224a1c5bddbc4d7e9  libgo/go/os/exec_posix.go
! 3831f33b4ef48ad8b8b0bf89d7421bb0  libgo/go/os/exec_unix.go
! f78e199fc9d9fff605f5a4974fa7d967  libgo/go/os/exec_unix_test.go
! 71986a6eaa7d8b560abbaece2b141b46  libgo/go/os/exec_windows.go
  205c51b025b9372f82e747dfe4df1782  libgo/go/os/executable.go
  2ea7281434095cfc020304ea4563cf0a  libgo/go/os/executable_darwin.go
! 46540aea0cd42828d23a566c4765a125  libgo/go/os/executable_dragonfly.go
! b66d0f701cfe7d0916b14cd6ec5a327d  libgo/go/os/executable_freebsd.go
  fbe11481073d5075eefa66b42528677c  libgo/go/os/executable_path.go
  b7de93476c44316aaabb84d7439ad1ac  libgo/go/os/executable_plan9.go
! e975a3486095eaf868c46e4f5e282f13  libgo/go/os/executable_procfs.go
  247494adee7109031bdc31783030e565  libgo/go/os/executable_solaris.go
+ bb7ae384abea2c65566970ec7b35d1ef  libgo/go/os/executable_sysctl.go
  828bee93fe63b3ca92e80c288eb651a1  libgo/go/os/executable_test.go
  76aa9403bfb354bc7e6c45c4ad819ba5  libgo/go/os/executable_windows.go
! 9159ce8dd0b7ab4c49c5004c3fcfb695  libgo/go/os/export_linux_test.go
! 457ad7b99509395d986ef4d5ce1c488c  libgo/go/os/export_test.go
  a5c4b470aa115d38ebc202bb1387c3d8  libgo/go/os/export_unix_test.go
  5eaec89a04438036b1e5dde518a8ae06  libgo/go/os/export_windows_test.go
! 8ac3639f6457463e8aa7317a3c915729  libgo/go/os/fifo_test.go
! 3d06a496b80eebfd017d5492a3a62f8d  libgo/go/os/file.go
! 7481ab23436952e18f0c15b31e72d04d  libgo/go/os/file_plan9.go
! 2138b2a35092296bb69059ddfd64accb  libgo/go/os/file_posix.go
! 0ffe7c129c4e95d3bab524c9f5ef5834  libgo/go/os/file_unix.go
! b2243d03465b2f097be566c15ef44c82  libgo/go/os/getwd.go
! 60b725f10c9c85c70d97880dfe8191b3  libgo/go/os/issue37161/a
! 3b5d5c3712955042212316173ccf37be  libgo/go/os/issue37161/b
! 2cd6ee2c70b0bde53fbe6cac3c8b8bb1  libgo/go/os/issue37161/c
! ce619ed6d2eb85a485c93a0d7352232a  libgo/go/os/os_test.go
! 60352e5f4e91901d4e9663591468576a  libgo/go/os/os_unix_test.go
! 4edf29e7caa11c2498503b01b20dcad8  libgo/go/os/os_windows_test.go
! 38c233202cc22800cc031a416c84f5b4  libgo/go/os/path.go
  c5fe061b3241fd61d8724fe886aafa73  libgo/go/os/path_plan9.go
! e6946f9caca43f7ac372d49e7ae2086d  libgo/go/os/path_test.go
  f6a0f852e64d6b7cacbdeafc18ee39be  libgo/go/os/path_unix.go
  07eddf0ade79736627b79606534072a3  libgo/go/os/path_windows.go
! b968a9ff3d7fab809c26baedb4802e1e  libgo/go/os/path_windows_test.go
  6c80d6c0ac41d5aadf6259521395f543  libgo/go/os/pipe2_bsd.go
! 16331821d7f96d014884cea181d36ec0  libgo/go/os/pipe2_illumos.go
! da3b676b293dc8dc4e8365e5fde3942a  libgo/go/os/pipe_bsd.go
  62e073cfad6b7be1fa723966438a32a6  libgo/go/os/pipe_glibc.go
! 017dd2e375b140a67c869242e43fa991  libgo/go/os/pipe_test.go
! a2699279e503d0c05b713f6f422ba217  libgo/go/os/proc.go
  ecfb560f067c5e85c62904e8993ebd20  libgo/go/os/rawconn.go
  562b35a1b7c0c3eff8819a1a8dd04c36  libgo/go/os/rawconn_test.go
! bc748e210808e7063aa16d9a59c5e2ff  libgo/go/os/read_test.go
! edc9923bdcb09887d9fb4cf944f04f53  libgo/go/os/readfrom_linux.go
! 5f384406c842093069536a63affe6e95  libgo/go/os/readfrom_linux_test.go
! e36d4c17180d47f8c05a56c7624164a6  libgo/go/os/readfrom_stub.go
! 2fee5149f93982d99685f0d0f78c0c0c  libgo/go/os/removeall_at.go
! f3e7d386c7df3983e007ea0248884feb  libgo/go/os/removeall_noat.go
! 338544972d065cb97dc4a98a066497af  libgo/go/os/removeall_test.go
  6971857726d8ed4e0693ac29515b5585  libgo/go/os/signal/doc.go
! c2d576a31f2416d8ebf6909194111a6e  libgo/go/os/signal/example_unix_test.go
! 15686fd346a7959e3b18eba74b3ce3f8  libgo/go/os/signal/internal/pty/pty.go
! bddacc4ff6633ece2dfde601f2ccfc38  libgo/go/os/signal/signal.go
! 4ed4fa4cf9f25d9a1a42509546c10c86  libgo/go/os/signal/signal_cgo_test.go
! a4b7bf5e137c6a3d1950e8e4ab5d685a  libgo/go/os/signal/signal_linux_test.go
! 1d29e80b44f28ebcb46a792beae60116  libgo/go/os/signal/signal_plan9.go
  6cf1c60023e30d5d680ef01b501db3ee  libgo/go/os/signal/signal_plan9_test.go
! b8f942671485dcd738f0106fe140d7fc  libgo/go/os/signal/signal_test.go
! 3e8afa043bbf06a04ffd0fa82cf48859  libgo/go/os/signal/signal_unix.go
  c3a2764cad7b0e3d72287cbdaf77ac78  libgo/go/os/stat.go
  4319edab2ffac69f550a4ae26017b939  libgo/go/os/stat_aix.go
  caee66c9780fe059d640e53d032c325b  libgo/go/os/stat_atim.go
  935e4988e6d00ab23025096627435e65  libgo/go/os/stat_atimespec.go
  69889f3f3aa9c669ff47b492066de899  libgo/go/os/stat_dragonfly.go
  6e2d987cbabee98c52ae5c5d4a19a23a  libgo/go/os/stat_js.go
! 409d6db198b97c4adb6bd8ddada2e601  libgo/go/os/stat_plan9.go
  3fa76abf938fab717fa51a63a7939245  libgo/go/os/stat_solaris.go
! 8af44cad005b68f166cead5cc6d63584  libgo/go/os/stat_test.go
! 40ea0fa444240d60e430a1c51511734b  libgo/go/os/stat_unix.go
  71b59ea3be063a158bf045bce757da60  libgo/go/os/sticky_bsd.go
  b287121f5e6f7c32af9eee221a3e65e8  libgo/go/os/sticky_notbsd.go
  7278237d114b2684931308a7499ea925  libgo/go/os/str.go
*************** c901864bd0df87310edb915da0582abc  libgo/
*** 85807,85887 ****
  2bfd35fe4bb2fc2a259a109a2742c1fc  libgo/go/os/sys_plan9.go
  0245da3396070eea47171fe6e14a8633  libgo/go/os/sys_uname.go
  68d9eb0dfdcd0ba3e4b81df9b51387ff  libgo/go/os/sys_unix.go
! 7d7ef805bee8dada15a6e517e603d1cf  libgo/go/os/timeout_test.go
! 916d6027ce86e9ac1988005a8bd216e0  libgo/go/os/types.go
  fdc1a679906c3a2e0f863a13a92a1ae8  libgo/go/os/types_plan9.go
  d4dfa6fa1d9d3cae77a56dd3aafa8bb5  libgo/go/os/types_unix.go
! 68b100faf47b21d76c88c581afbd4e81  libgo/go/os/types_windows.go
  6de092f1dda5924c307110d4de06d588  libgo/go/os/user/cgo_lookup_unix.go
  87886aff6077cb9e5e57d39176853ff2  libgo/go/os/user/cgo_unix_test.go
  24be1c687e6c538507a64aaba948f83e  libgo/go/os/user/decls_aix.go
  432f92fc323362b66a4272e7e0115503  libgo/go/os/user/decls_solaris.go
! c86226dbeb3ada4c1b2af99777663d02  libgo/go/os/user/decls_unix.go
  e066aa2b75bae3e2fb74844b72e5ba5c  libgo/go/os/user/listgroups_aix.go
  235b2dc0ce73096c1d486260abfa89af  libgo/go/os/user/listgroups_solaris.go
  a984b4be3dd307b894d0192e7df2413e  libgo/go/os/user/listgroups_unix.go
  c1127101febb20131cce341d39d68923  libgo/go/os/user/lookup.go
  96980b26ee2386f37e644d277d6b667e  libgo/go/os/user/lookup_android.go
! 78195be327b1c1be4a1fba0a8ea9021d  libgo/go/os/user/lookup_plan9.go
  3f385d7e5c1badb1c41690c0101c2b31  libgo/go/os/user/lookup_stubs.go
  ea3679db938e72e3b47d1df138ea6c3f  libgo/go/os/user/lookup_unix.go
  ed11fb0b86333c68fec5db25eb40ea5a  libgo/go/os/user/lookup_unix_test.go
! f91f9e8d56a5d34278606c93d050541f  libgo/go/os/user/lookup_windows.go
  fb87f1809e72b8166e8a58c63a88175e  libgo/go/os/user/user.go
  437d1e90d948b1697c5e1da2cb741ac5  libgo/go/os/user/user_test.go
  414062b5610f07df01ccdbf522926228  libgo/go/os/wait_unimp.go
! 1149e94a06368d702e8cd694897012c3  libgo/go/os/wait_wait6.go
! 18542350591ced6b5d1ba48b6a83446d  libgo/go/os/wait_waitid.go
! cbe9199bda3e4f922554e3f764fe8df0  libgo/go/path/example_test.go
  e7362f9952e047522ea3080f1772e750  libgo/go/path/filepath/example_test.go
! ead9abecb54804d169a8089f894b44aa  libgo/go/path/filepath/example_unix_test.go
! 35a1e4b8a5abd8928062db14f1d20e4a  libgo/go/path/filepath/example_unix_walk_test.go
  d53439751e8554fd84fa78a0103cf17d  libgo/go/path/filepath/export_test.go
  4233036575e89add745849a436003709  libgo/go/path/filepath/export_windows_test.go
! 4395d01543828daa76903006e8f6a253  libgo/go/path/filepath/match.go
! 5aef5e66f123bb88847d69884252c894  libgo/go/path/filepath/match_test.go
! eb2436d2f99891a1100abb8b5432b598  libgo/go/path/filepath/path.go
  182004ef31c7f7d0d6071a350a78deef  libgo/go/path/filepath/path_plan9.go
! 074432388521e4d8215bd57deec3dbbe  libgo/go/path/filepath/path_test.go
  4d5f5f3a09ec0ad479489950df00f58c  libgo/go/path/filepath/path_unix.go
  eb115a379b5df7372cf96272d914c013  libgo/go/path/filepath/path_windows.go
! 1e690115ed63606e38ba085396950962  libgo/go/path/filepath/symlink.go
  67d9ef4276c83f465159c29bb2e2bfa6  libgo/go/path/filepath/symlink_unix.go
! f7b269694c33b5e78090709a7a64b883  libgo/go/path/filepath/symlink_windows.go
! 4e11eb7f3db93713e1cb1590b2095001  libgo/go/path/match.go
! 88ea360b9efa966577c4e6571d6c7d48  libgo/go/path/match_test.go
! 24caf1813ff4f4409ca33237bbcc127c  libgo/go/path/path.go
! 21791b41153a23930bfbeb41020a12e8  libgo/go/path/path_test.go
  f39cb04a9ade4d04aa5ec6f32d789d4b  libgo/go/plugin/plugin.go
  575bf4a5bc93d4621ad44461d9defc9e  libgo/go/plugin/plugin_dlopen.go
  14cf8031dee4203d67eb002fc559df1c  libgo/go/plugin/plugin_stubs.go
  bc45f7de0f0d6ab99d967682215d5c36  libgo/go/plugin/plugin_test.go
! cd53740e472396c210effbd7946e3783  libgo/go/reflect/all_test.go
! 4bfee01afdb7110551d733e209bb764c  libgo/go/reflect/deepequal.go
  0ddb9a403f277f567de00299da1a3349  libgo/go/reflect/example_test.go
  34cb3367aa488760da8c5cdce4745fb8  libgo/go/reflect/export_test.go
  afdb129f8614d2ab1c3696f35cef28ae  libgo/go/reflect/makefunc.go
  52a2968dfb36942acea8de1d8f872f11  libgo/go/reflect/makefunc_ffi.go
  64143c1a6fceabc569854ebd07504a3e  libgo/go/reflect/makefunc_ffi_c.c
  9674609cef9de54dd124b6e86cc37213  libgo/go/reflect/set_test.go
! 00e7f6ab33b5e2fdcabcc847f5669be0  libgo/go/reflect/swapper.go
  f85e1c21045db9a41164cb7c72373e9b  libgo/go/reflect/tostring_test.go
! 7f140135324638a66ab8e1547649d69a  libgo/go/reflect/type.go
! d70e865c041038e3331156a04052b272  libgo/go/reflect/value.go
! 6cc5de1b6a6941ac88aba370ba1cf6df  libgo/go/regexp/all_test.go
  95fb311a7b03e760ccbb36bee08a6856  libgo/go/regexp/backtrack.go
! 5e9c40eb7b43d8a1fb4428bd028d5f77  libgo/go/regexp/example_test.go
  d69b2ea15320ca7b32ebec0ddcf9a87c  libgo/go/regexp/exec.go
  b31d554eec2179c2bf7351f41210fbf2  libgo/go/regexp/exec2_test.go
  6b083706dc1a5c2a3d57862665d21919  libgo/go/regexp/exec_test.go
  e9c00b39233fbf6471f9f9560e02cb04  libgo/go/regexp/find_test.go
  e5db5b014b326bcd175755a50be0ac79  libgo/go/regexp/onepass.go
  24ef884e19f816eef85e7446fcc6bc41  libgo/go/regexp/onepass_test.go
! 3efdc03e2636c4cc31ef3e810b79c86a  libgo/go/regexp/regexp.go
! 32778da98da6926f11245f6da7468041  libgo/go/regexp/syntax/compile.go
! 815786a44f6bd0b7e93266dc4ac4569e  libgo/go/regexp/syntax/doc.go
  4ec17c72c61756faea953da0152e293c  libgo/go/regexp/syntax/op_string.go
! 646b9fe55fa3736f172069c8158b1118  libgo/go/regexp/syntax/parse.go
  67016ecf6ea3204e45cae2369df84b0c  libgo/go/regexp/syntax/parse_test.go
  fa7a5c563b7be06e9ced902e305223f7  libgo/go/regexp/syntax/perl_groups.go
  d1c63835261f3c040b259c37e38a96c9  libgo/go/regexp/syntax/prog.go
--- 91834,91925 ----
  2bfd35fe4bb2fc2a259a109a2742c1fc  libgo/go/os/sys_plan9.go
  0245da3396070eea47171fe6e14a8633  libgo/go/os/sys_uname.go
  68d9eb0dfdcd0ba3e4b81df9b51387ff  libgo/go/os/sys_unix.go
! ebc60498ed2e0e20ba8cd5ab561deb94  libgo/go/os/tempfile.go
! 5977fdd4aebf336bd65c128b896f2e32  libgo/go/os/tempfile_test.go
! d41d8cd98f00b204e9800998ecf8427e  libgo/go/os/testdata/dirfs/a
! d41d8cd98f00b204e9800998ecf8427e  libgo/go/os/testdata/dirfs/b
! d41d8cd98f00b204e9800998ecf8427e  libgo/go/os/testdata/dirfs/dir/x
! a2ad62dd6088e213c12f8dbb625a993a  libgo/go/os/testdata/hello
! 60b725f10c9c85c70d97880dfe8191b3  libgo/go/os/testdata/issue37161/a
! 3b5d5c3712955042212316173ccf37be  libgo/go/os/testdata/issue37161/b
! 2cd6ee2c70b0bde53fbe6cac3c8b8bb1  libgo/go/os/testdata/issue37161/c
! 07ff7fc3c1fd96f56848b8382ccea9c2  libgo/go/os/timeout_test.go
! 5e60413c95f8421ca70bb23d39fa8d61  libgo/go/os/types.go
  fdc1a679906c3a2e0f863a13a92a1ae8  libgo/go/os/types_plan9.go
  d4dfa6fa1d9d3cae77a56dd3aafa8bb5  libgo/go/os/types_unix.go
! 53f847cd389166174c483090d4eb50c5  libgo/go/os/types_windows.go
  6de092f1dda5924c307110d4de06d588  libgo/go/os/user/cgo_lookup_unix.go
  87886aff6077cb9e5e57d39176853ff2  libgo/go/os/user/cgo_unix_test.go
  24be1c687e6c538507a64aaba948f83e  libgo/go/os/user/decls_aix.go
  432f92fc323362b66a4272e7e0115503  libgo/go/os/user/decls_solaris.go
! d2d3f20206e0defbe9e862e4a0a27845  libgo/go/os/user/decls_unix.go
  e066aa2b75bae3e2fb74844b72e5ba5c  libgo/go/os/user/listgroups_aix.go
  235b2dc0ce73096c1d486260abfa89af  libgo/go/os/user/listgroups_solaris.go
  a984b4be3dd307b894d0192e7df2413e  libgo/go/os/user/listgroups_unix.go
  c1127101febb20131cce341d39d68923  libgo/go/os/user/lookup.go
  96980b26ee2386f37e644d277d6b667e  libgo/go/os/user/lookup_android.go
! 860c5caae9e009f8fd2f0e343122a000  libgo/go/os/user/lookup_plan9.go
  3f385d7e5c1badb1c41690c0101c2b31  libgo/go/os/user/lookup_stubs.go
  ea3679db938e72e3b47d1df138ea6c3f  libgo/go/os/user/lookup_unix.go
  ed11fb0b86333c68fec5db25eb40ea5a  libgo/go/os/user/lookup_unix_test.go
! 80e4c8e2c040a193473c47f1b683c3b3  libgo/go/os/user/lookup_windows.go
  fb87f1809e72b8166e8a58c63a88175e  libgo/go/os/user/user.go
  437d1e90d948b1697c5e1da2cb741ac5  libgo/go/os/user/user_test.go
  414062b5610f07df01ccdbf522926228  libgo/go/os/wait_unimp.go
! 2ae5b989f765ac1e32add0258d228422  libgo/go/os/wait_wait6.go
! e26f5a2db17f5a36e36b837bf84e610c  libgo/go/os/wait_waitid.go
! c1b9c98ee021d849c0b43c9216735455  libgo/go/path/example_test.go
  e7362f9952e047522ea3080f1772e750  libgo/go/path/filepath/example_test.go
! 5e8dba6867482ebd10113ca50d0787fc  libgo/go/path/filepath/example_unix_test.go
! d03c6cf4a0ddb4b82fb3c80889b87190  libgo/go/path/filepath/example_unix_walk_test.go
  d53439751e8554fd84fa78a0103cf17d  libgo/go/path/filepath/export_test.go
  4233036575e89add745849a436003709  libgo/go/path/filepath/export_windows_test.go
! c243339e3b608d1cbf970bea228b3bd2  libgo/go/path/filepath/match.go
! e07a3e9ca036eb3c46b4c8adf8ffc10e  libgo/go/path/filepath/match_test.go
! f3284017d182827ec5c32be29ac78e72  libgo/go/path/filepath/path.go
  182004ef31c7f7d0d6071a350a78deef  libgo/go/path/filepath/path_plan9.go
! 0321fc180882e1eaf6eda3d214f678f3  libgo/go/path/filepath/path_test.go
  4d5f5f3a09ec0ad479489950df00f58c  libgo/go/path/filepath/path_unix.go
  eb115a379b5df7372cf96272d914c013  libgo/go/path/filepath/path_windows.go
! ff36007801cac266bbbb9ea95811cdd9  libgo/go/path/filepath/symlink.go
  67d9ef4276c83f465159c29bb2e2bfa6  libgo/go/path/filepath/symlink_unix.go
! 26e03d701fc7a412804382943f651cc0  libgo/go/path/filepath/symlink_windows.go
! 2689c67d5fabe8f0ee17ede3ea25e93c  libgo/go/path/match.go
! cbf07a00c9d3ac4f4fbde2ba7d235983  libgo/go/path/match_test.go
! 54c6b8c746a5a3135245ba73fbe122c3  libgo/go/path/path.go
! 45e0329e1a3506bac219751ad0ef21a2  libgo/go/path/path_test.go
  f39cb04a9ade4d04aa5ec6f32d789d4b  libgo/go/plugin/plugin.go
  575bf4a5bc93d4621ad44461d9defc9e  libgo/go/plugin/plugin_dlopen.go
  14cf8031dee4203d67eb002fc559df1c  libgo/go/plugin/plugin_stubs.go
  bc45f7de0f0d6ab99d967682215d5c36  libgo/go/plugin/plugin_test.go
! 6588c619d72856473a0675338e9d6e0b  libgo/go/reflect/all_test.go
! 3b44d54a552aef4827bdfdfde2dc99fd  libgo/go/reflect/deepequal.go
! a2296897da2a9eb152deaea98d179c73  libgo/go/reflect/eqtype.go
! 6ebbb61bd2c7644252d9a065e2b64e0e  libgo/go/reflect/eqtype_aix_gccgo.go
  0ddb9a403f277f567de00299da1a3349  libgo/go/reflect/example_test.go
  34cb3367aa488760da8c5cdce4745fb8  libgo/go/reflect/export_test.go
  afdb129f8614d2ab1c3696f35cef28ae  libgo/go/reflect/makefunc.go
  52a2968dfb36942acea8de1d8f872f11  libgo/go/reflect/makefunc_ffi.go
  64143c1a6fceabc569854ebd07504a3e  libgo/go/reflect/makefunc_ffi_c.c
  9674609cef9de54dd124b6e86cc37213  libgo/go/reflect/set_test.go
! 352b590753ef61df4c824197ebec9a4e  libgo/go/reflect/swapper.go
  f85e1c21045db9a41164cb7c72373e9b  libgo/go/reflect/tostring_test.go
! 099262adb40160647f8b741e19a8b56c  libgo/go/reflect/type.go
! 69e53fd5265c65d1d9edf26f8f9a021f  libgo/go/reflect/value.go
! dd8f5683cd2b1c04f4c9c8724ee9da27  libgo/go/regexp/all_test.go
  95fb311a7b03e760ccbb36bee08a6856  libgo/go/regexp/backtrack.go
! 60e05eaee653363d8a79d7da5096d277  libgo/go/regexp/example_test.go
  d69b2ea15320ca7b32ebec0ddcf9a87c  libgo/go/regexp/exec.go
  b31d554eec2179c2bf7351f41210fbf2  libgo/go/regexp/exec2_test.go
  6b083706dc1a5c2a3d57862665d21919  libgo/go/regexp/exec_test.go
  e9c00b39233fbf6471f9f9560e02cb04  libgo/go/regexp/find_test.go
  e5db5b014b326bcd175755a50be0ac79  libgo/go/regexp/onepass.go
  24ef884e19f816eef85e7446fcc6bc41  libgo/go/regexp/onepass_test.go
! da17f2db76fe9c130aa1bcfa5b4d887b  libgo/go/regexp/regexp.go
! ba087ffac21ce3eb47b024b0982f5537  libgo/go/regexp/syntax/compile.go
! f4a5b748c6b9a24d905f31201c0d0e61  libgo/go/regexp/syntax/doc.go
  4ec17c72c61756faea953da0152e293c  libgo/go/regexp/syntax/op_string.go
! 9cf26fe0273715feb630ba67915548ed  libgo/go/regexp/syntax/parse.go
  67016ecf6ea3204e45cae2369df84b0c  libgo/go/regexp/syntax/parse_test.go
  fa7a5c563b7be06e9ced902e305223f7  libgo/go/regexp/syntax/perl_groups.go
  d1c63835261f3c040b259c37e38a96c9  libgo/go/regexp/syntax/prog.go
*************** ce4d01bc256482203dedba6c2e6827df  libgo/
*** 85896,85967 ****
  3e1bb0bc67b431632da2eb15a8cb0149  libgo/go/regexp/testdata/re2-search.txt
  f99f99715745fe92f8a824f11d936a06  libgo/go/regexp/testdata/repetition.dat
  454e3934d6cbf6640a547548f78e70b9  libgo/go/regexp/testdata/testregex.c
! 05a950951f79b7db91da97dd2d0c9739  libgo/go/runtime/alg.go
! 8377b0676d7eb7e27cc59bd984a5ad4e  libgo/go/runtime/atomic_pointer.go
! b5ce8c062cd21c8d58a8bcb8546d60ca  libgo/go/runtime/auxv_none.go
! aae5b553baaa27db886d524b9c539547  libgo/go/runtime/callers_test.go
! ad2c67ff932e40eb8c4ee0ea06a27d8d  libgo/go/runtime/cgo_gccgo.go
! b2a389668a14a249dc4fc237db9b339f  libgo/go/runtime/cgocall.go
! b18f92c3ba1709b79f540beb9488a6e1  libgo/go/runtime/cgocheck.go
! 0c3a4b1adcd6bb5afa03e52bfb302bef  libgo/go/runtime/chan.go
! 438f73bb4982a3a54007d32eda723d79  libgo/go/runtime/chan_test.go
  cea2ebeeac97f27d5f1e673612690253  libgo/go/runtime/chanbarrier_test.go
! a59dd01dd8efe16745e96f651ca488bb  libgo/go/runtime/checkptr.go
! b73ed7ca4481fe62d75220b76d483f33  libgo/go/runtime/checkptr_test.go
! fb78502ca8f0a4bfc5b6b5dbb4ff54d5  libgo/go/runtime/closure_test.go
  7971d50020cc0b08b89878bba0ec9d82  libgo/go/runtime/compiler.go
  e0c63ad8382340442573a02a97aebcda  libgo/go/runtime/complex_test.go
! 01e3de31c9088f5470fe2d076c3cb9de  libgo/go/runtime/cpuprof.go
  00acb53994f636800e13672a2124d54d  libgo/go/runtime/cputicks.go
! 19b157260ac0f3a295f274baceeb327e  libgo/go/runtime/crash_cgo_test.go
  cfee3af9ebba822f9b0e8a0bbd9375da  libgo/go/runtime/crash_gccgo_test.go
  faa0e8c2c9f18a97bc8528c36caec4ae  libgo/go/runtime/crash_nonunix_test.go
! f998adf674bcc76821ed16e932457e00  libgo/go/runtime/crash_test.go
! 20e8bf2062e89a2688ae216cc9ba5cce  libgo/go/runtime/crash_unix_test.go
! c8a88dbc19dfc5555877f5d686ad81cf  libgo/go/runtime/debug.go
! 56659816ee221b228427510ea5deaf6b  libgo/go/runtime/debug/garbage.go
  ad795ea82c891dcc44b81669415d5bb3  libgo/go/runtime/debug/garbage_test.go
! a9fd6ece71647651c44aa591f2e8d3c7  libgo/go/runtime/debug/heapdump_test.go
! 9fb5bb491087c5397657fa8856e6b89b  libgo/go/runtime/debug/mod.go
  324e61ddc62f45a1d1c3fd20a427062a  libgo/go/runtime/debug/stack.go
  7bd8d2bc1b1ac62347f86f745d0eff95  libgo/go/runtime/debug/stack_test.go
  a85550fb24ca8225b8874b47efa133df  libgo/go/runtime/debug/stubs.go
! cd2e126a077b3a3025b618a4062a25c6  libgo/go/runtime/debug_test.go
! 3177d87342dc28f172b3ce94063f9508  libgo/go/runtime/debuglog.go
  aaa699990c48a09562d10e3463c3358d  libgo/go/runtime/debuglog_off.go
  5bc7be738f4354d2f56e010b6cf5fac4  libgo/go/runtime/debuglog_on.go
  62cba6f9b8d70f7119bca15e6c2b6151  libgo/go/runtime/debuglog_test.go
! a0d6e514676186731781a1ed8db5ae28  libgo/go/runtime/defer_test.go
! 9003ce58bc09c44e90a2cbbee1e300dd  libgo/go/runtime/env_posix.go
! 6afbee4232da9dafe1ea6550571f0e4a  libgo/go/runtime/env_test.go
! 55d2d04a37da0494dcae7cca5da41ee6  libgo/go/runtime/error.go
  ef9929cc224a1ccdaf626cd48cc662fb  libgo/go/runtime/example_test.go
! 151a93580174b7059dfb95645bfe6974  libgo/go/runtime/export_debug_test.go
  b469d2ae326e9597c7725a3fce9c3a56  libgo/go/runtime/export_debuglog_test.go
  463e2910ec971e8016d5ccf09406ea59  libgo/go/runtime/export_linux_test.go
  f9a75d0ebb3f61a23003fae884bb60fc  libgo/go/runtime/export_mmap_test.go
! 7b1f1f8b638808dc7b0a6de77e82c286  libgo/go/runtime/export_test.go
! ab530198ab54d52d76cacbabd6bc7387  libgo/go/runtime/export_unix_test.go
  6cf8e5461555704101c96680c126d3d9  libgo/go/runtime/export_windows_test.go
! ce6d74fb48314d47ffd8fcaa0e92a9a0  libgo/go/runtime/extern.go
  c320b7da530e4f0897ae4a0e5f245bdd  libgo/go/runtime/fastlog2.go
  98fa37aa2849cd0923db32ac978bfcea  libgo/go/runtime/fastlog2_test.go
  52d8d18843078e415ebd00a11c8f45f4  libgo/go/runtime/fastlog2table.go
  37daeb0497dbbd2f1756c917528cac47  libgo/go/runtime/ffi.go
  f3e367be9f1303b808ba504b2992d9b0  libgo/go/runtime/float.go
! 353e2d498a06bdb8fbd800e0c4280b0e  libgo/go/runtime/gc_test.go
! 1fcc435365efa9316de5f50cabb2b4c3  libgo/go/runtime/gcinfo_test.go
! 4f293a801ebe72b3d096d44d7f24e3cb  libgo/go/runtime/hash32.go
  a01d3d3cb68a30fb31cc0d4dca31549d  libgo/go/runtime/hash64.go
! e309169043039c9b51cd5513c984d01b  libgo/go/runtime/hash_test.go
! 2b3f9bc7de48d78676efe543f7f5446a  libgo/go/runtime/heapdump.go
! 937768ca19f41231970481171656201f  libgo/go/runtime/iface.go
! f4e8953abb7d6bab5733d7367d88cd4d  libgo/go/runtime/iface_test.go
! 1a2f15a31569f1fca61c46668e5a716d  libgo/go/runtime/internal/atomic/atomic.c
! e576a872d5dfabf1ee5e0860c13cf630  libgo/go/runtime/internal/atomic/atomic_test.go
! d0e10601825d72e4a18738a733562eba  libgo/go/runtime/internal/atomic/bench_test.go
! ed826aa9e3955e0d253accd0c6550570  libgo/go/runtime/internal/atomic/gccgo.go
  1dc653ff1fcc67879350143ec04ea9a9  libgo/go/runtime/internal/atomic/stubs.go
  00c883035abf1442ec1db178f2362d18  libgo/go/runtime/internal/math/math.go
  3f66365f42e291740221db6cdeab6e44  libgo/go/runtime/internal/math/math_test.go
  d3209c9cf093801706fb8cb5b31bc0e8  libgo/go/runtime/internal/sys/intrinsics.go
--- 91934,92015 ----
  3e1bb0bc67b431632da2eb15a8cb0149  libgo/go/regexp/testdata/re2-search.txt
  f99f99715745fe92f8a824f11d936a06  libgo/go/regexp/testdata/repetition.dat
  454e3934d6cbf6640a547548f78e70b9  libgo/go/regexp/testdata/testregex.c
! 24ac34791027d34c6448ed2c16dd881a  libgo/go/runtime/alg.go
! 620c42d6906acae7dd0f38723004acdc  libgo/go/runtime/atomic_pointer.go
! cfdfbc90626aa2d5809312a5bf644a76  libgo/go/runtime/auxv_none.go
! 7fe910f3c857427987a1be1f74b0ee1b  libgo/go/runtime/callers_test.go
! 2b4bf4503adf708178e74d03b7188e26  libgo/go/runtime/cgo_gccgo.go
! 124bc74c240aa26a27cbe18e3582f76c  libgo/go/runtime/cgocall.go
! 647b5a506f805201e90e685709cfd5db  libgo/go/runtime/cgocheck.go
! b3711fe537bcf675b7e6c52862f18acc  libgo/go/runtime/chan.go
! 3fe48f8e89015dfae836d80a3a6647ae  libgo/go/runtime/chan_test.go
  cea2ebeeac97f27d5f1e673612690253  libgo/go/runtime/chanbarrier_test.go
! 623acba67151b098cab2c93df4617ae7  libgo/go/runtime/checkptr.go
! b192356934be0e4ee548be728c7a8e76  libgo/go/runtime/checkptr_test.go
! d24444200f8bef380fcad6ba46723fc1  libgo/go/runtime/closure_test.go
  7971d50020cc0b08b89878bba0ec9d82  libgo/go/runtime/compiler.go
  e0c63ad8382340442573a02a97aebcda  libgo/go/runtime/complex_test.go
! c4e255afc3d67a69f152edbbf405afa6  libgo/go/runtime/conv_wasm_test.go
! cbb402068c51090546e64ff50efa903c  libgo/go/runtime/cpuflags_arm64.go
! 48b40bc8900eb1eed9fa3d7727323560  libgo/go/runtime/cpuprof.go
  00acb53994f636800e13672a2124d54d  libgo/go/runtime/cputicks.go
! ade88fb4c9b198d4b2843779de2671c4  libgo/go/runtime/crash_cgo_test.go
  cfee3af9ebba822f9b0e8a0bbd9375da  libgo/go/runtime/crash_gccgo_test.go
  faa0e8c2c9f18a97bc8528c36caec4ae  libgo/go/runtime/crash_nonunix_test.go
! 1e8b3cf4c678748521f222eb4248830a  libgo/go/runtime/crash_test.go
! 46d913069c8ea9fe954fb83972ea9960  libgo/go/runtime/crash_unix_test.go
! 0b7804edf0945318789a2be140b9129a  libgo/go/runtime/debug.go
! 8c834fcf7fd2e9c3780e8ccf18f1c18a  libgo/go/runtime/debug/garbage.go
  ad795ea82c891dcc44b81669415d5bb3  libgo/go/runtime/debug/garbage_test.go
! 4b773b3d915f30b30540f9cde03eb184  libgo/go/runtime/debug/heapdump_test.go
! ef6474040e50307711bca4675750aeac  libgo/go/runtime/debug/mod.go
! 474e4e2e87ebcb44c6c6c9c4b7de44ab  libgo/go/runtime/debug/panic_test.go
  324e61ddc62f45a1d1c3fd20a427062a  libgo/go/runtime/debug/stack.go
  7bd8d2bc1b1ac62347f86f745d0eff95  libgo/go/runtime/debug/stack_test.go
  a85550fb24ca8225b8874b47efa133df  libgo/go/runtime/debug/stubs.go
! ac8b543c3f436dafb99267a0eafd9705  libgo/go/runtime/debug_test.go
! 7d70761083d4586f72751e4c13a18e51  libgo/go/runtime/debuglog.go
  aaa699990c48a09562d10e3463c3358d  libgo/go/runtime/debuglog_off.go
  5bc7be738f4354d2f56e010b6cf5fac4  libgo/go/runtime/debuglog_on.go
  62cba6f9b8d70f7119bca15e6c2b6151  libgo/go/runtime/debuglog_test.go
! 1eda0188837f2ad2a7f379f157d99014  libgo/go/runtime/defer_test.go
! 1739ec210635a37f3ab9e8ce8d62c703  libgo/go/runtime/env_posix.go
! 66d03cf12b02144ceb3e7563770e8b7d  libgo/go/runtime/env_test.go
! 518595b084705257e997919e33cf3e01  libgo/go/runtime/eqtype.go
! 88345351f85e1313557ed2047d58ac27  libgo/go/runtime/eqtype_aix_gccgo.go
! 0ac319968243fde03d79b35c14d1b8b5  libgo/go/runtime/error.go
  ef9929cc224a1ccdaf626cd48cc662fb  libgo/go/runtime/example_test.go
! 867523ef958954b1c37cf87ee6528bf6  libgo/go/runtime/export_debug_test.go
  b469d2ae326e9597c7725a3fce9c3a56  libgo/go/runtime/export_debuglog_test.go
  463e2910ec971e8016d5ccf09406ea59  libgo/go/runtime/export_linux_test.go
  f9a75d0ebb3f61a23003fae884bb60fc  libgo/go/runtime/export_mmap_test.go
! 387c9cf0e6f9a646d4ed5668d691cc2a  libgo/go/runtime/export_pipe2_test.go
! a1c33256a02aab7de15ae556296dfa55  libgo/go/runtime/export_pipe_test.go
! 0998e75f522063e297e46011a9ddcc56  libgo/go/runtime/export_test.go
! 14ccdaeb9af79c348b15c6f021f156ca  libgo/go/runtime/export_unix_test.go
  6cf8e5461555704101c96680c126d3d9  libgo/go/runtime/export_windows_test.go
! 86eaee889dcc5332bfc9745f82582597  libgo/go/runtime/extern.go
  c320b7da530e4f0897ae4a0e5f245bdd  libgo/go/runtime/fastlog2.go
  98fa37aa2849cd0923db32ac978bfcea  libgo/go/runtime/fastlog2_test.go
  52d8d18843078e415ebd00a11c8f45f4  libgo/go/runtime/fastlog2table.go
  37daeb0497dbbd2f1756c917528cac47  libgo/go/runtime/ffi.go
  f3e367be9f1303b808ba504b2992d9b0  libgo/go/runtime/float.go
! 627d76812669048792f17e499dc47f91  libgo/go/runtime/gc_test.go
! 0ef1294eb18e7eef240af3cc387917aa  libgo/go/runtime/gcinfo_test.go
! f671634c37cf53673ac00a0a9411fc1c  libgo/go/runtime/hash32.go
  a01d3d3cb68a30fb31cc0d4dca31549d  libgo/go/runtime/hash64.go
! 4fc9acd59ec1d5ee8d417bcb395bb9e4  libgo/go/runtime/hash_test.go
! 5d4cf9e455a62234f05d45746d835c8a  libgo/go/runtime/heapdump.go
! e1f17f2369323d2580e99ba0304d1b58  libgo/go/runtime/histogram.go
! 8984a6b36a97ff8d34d2b3d62c2eea75  libgo/go/runtime/histogram_test.go
! 0a30a4b660b7ad66a646d95ff84f66de  libgo/go/runtime/iface.go
! 5529c91bb6e4c3e93c37c06b0869306a  libgo/go/runtime/iface_test.go
! 25481682fe117ee7ad3b5f365167b8db  libgo/go/runtime/internal/atomic/atomic.c
! 2c146ec44a28c3e1caca69a57a3cd09f  libgo/go/runtime/internal/atomic/atomic_test.go
! 6b470ca4fe8bb5557468dfba062a346b  libgo/go/runtime/internal/atomic/bench_test.go
! 4e32a2a66164b532ba5d3a00c2b3b080  libgo/go/runtime/internal/atomic/gccgo.go
  1dc653ff1fcc67879350143ec04ea9a9  libgo/go/runtime/internal/atomic/stubs.go
+ 1abc65286966e58e772e23a93e78a08a  libgo/go/runtime/internal/atomic/unaligned.go
  00c883035abf1442ec1db178f2362d18  libgo/go/runtime/internal/math/math.go
  3f66365f42e291740221db6cdeab6e44  libgo/go/runtime/internal/math/math_test.go
  d3209c9cf093801706fb8cb5b31bc0e8  libgo/go/runtime/internal/sys/intrinsics.go
*************** d3209c9cf093801706fb8cb5b31bc0e8  libgo/
*** 85970,86089 ****
  03af967c43c39bc3bd839953c0d47c08  libgo/go/runtime/internal/sys/stubs.go
  25743016e1c0daa81d5651f5651641e0  libgo/go/runtime/internal/sys/sys.go
  3c71ad04ba9834cd1e4cdcd1b873f6ab  libgo/go/runtime/lfstack.go
! 2cacdfb7e208707a2df2140c6199ff97  libgo/go/runtime/lfstack_32bit.go
  abdd677a24643066606135cb5d1d7df2  libgo/go/runtime/lfstack_64bit.go
  67fe49711e28c2362368b34e8bb09969  libgo/go/runtime/lfstack_test.go
  ee76757a978bf6edf09fe1399a4b733e  libgo/go/runtime/libfuzzer.go
! a21a489c98755db5e03a86cc3bf0aa01  libgo/go/runtime/lock_futex.go
! f9f36cf290e642988f3251ee30c9bdab  libgo/go/runtime/lock_js.go
! 1a8bd0907b8f6c9e2d62c829c7e3d6f4  libgo/go/runtime/lock_sema.go
! 22986d1d55af5621cf4e9e8143b648d7  libgo/go/runtime/malloc.go
! 2d4a35c789782a7a833a45df36e3845f  libgo/go/runtime/malloc_test.go
! 3ab657c157bf8ea2b02ba894e7383a5c  libgo/go/runtime/map.go
! 5cf49dcb249938d0f53fc7afe63821b3  libgo/go/runtime/map_benchmark_test.go
! 5a9a59d29317a28685b82137de18c0de  libgo/go/runtime/map_fast32.go
! 1237842b93270f921917e28b63d179e4  libgo/go/runtime/map_fast64.go
! 3419358458cf4939ddf314339e4bd478  libgo/go/runtime/map_faststr.go
! 359833a669edb6ad47ad125dd77fb632  libgo/go/runtime/map_test.go
! a91b66bb0871b52f3b2669decab57d04  libgo/go/runtime/mbarrier.go
! cec2ec771b089f4fed3deeef328a400d  libgo/go/runtime/mbitmap.go
! 9a3e791f32fea5791057c307e69cdfd0  libgo/go/runtime/mcache.go
! 7fc9645c72d5705c1694af6837969817  libgo/go/runtime/mcentral.go
! 0f540182fd6b6980ab050ab35f427f3b  libgo/go/runtime/mem_gccgo.go
! 1095832a061dc7574bc9495bc5c9c345  libgo/go/runtime/memmove_linux_amd64_test.go
! 5f7d412dece87f53c152b3d91847f700  libgo/go/runtime/memmove_test.go
! a24ec74841f37faeb864e8ab1c2fe52a  libgo/go/runtime/mfinal.go
  bfbf41b480ab847220914454bd77cc57  libgo/go/runtime/mfinal_test.go
! 458810e82ea2c35f5f7ca202797bd571  libgo/go/runtime/mfixalloc.go
! 2fb053473ff4ed45356f1cd92bedd65b  libgo/go/runtime/mgc.go
  a675c175229e5f286b000acd88117f40  libgo/go/runtime/mgc_gccgo.go
! c4bc6e550a4f5082563aa5a8c672f654  libgo/go/runtime/mgcmark.go
! 84a89107e3b061a9667e3c7b91bf9107  libgo/go/runtime/mgcscavenge.go
! 77db3b92337cef2cdb8f9f1007d55919  libgo/go/runtime/mgcscavenge_test.go
! 27bd2cbc098304e3506639d21f3fd1ec  libgo/go/runtime/mgcsweep.go
! d17b8ae81324935762746f9d9fdb5b2c  libgo/go/runtime/mgcsweepbuf.go
! 2d0b057afacb2c43985e8a1a431b9a77  libgo/go/runtime/mgcwork.go
! feb9dbef07e7b3ffb6ed566dfa49bca3  libgo/go/runtime/mheap.go
! 7aa1a337255af7cea048ab9836ab6ee8  libgo/go/runtime/mkfastlog2table.go
! 07afcdc560949ed65ad5a88fa424a7f5  libgo/go/runtime/mkpreempt.go
! ed723fbe16adf7188abb17effab02c6c  libgo/go/runtime/mksizeclasses.go
! 606242aad42ac00080dac6485a2a0650  libgo/go/runtime/mpagealloc.go
! da14e118ed2e02ddb1c192fa92869e21  libgo/go/runtime/mpagealloc_32bit.go
! 1534ee8fe9d6f4dfdbab1ea4cc4716a7  libgo/go/runtime/mpagealloc_64bit.go
! 9b7b6912ee0cbe33b52756657f75b24c  libgo/go/runtime/mpagealloc_test.go
! 7c0042216fdabf23123fdc42763b4bb3  libgo/go/runtime/mpagecache.go
  d2f54ff10655ec48fe4433ec98ffed9e  libgo/go/runtime/mpagecache_test.go
! cdff46e6aa348ac1ca673ea29905a56b  libgo/go/runtime/mpallocbits.go
! aee91bae9f731d5317cd811df3b159b6  libgo/go/runtime/mpallocbits_test.go
! 93d9031f2fa6a25ff5180a4e82a235f2  libgo/go/runtime/mprof.go
! 3703a90087d9cfa390f01890aecab42d  libgo/go/runtime/mranges.go
  d12da266bc7b9f926629e9cb02ba26ad  libgo/go/runtime/msan/msan.go
! 400196169ecbd5bbad801a7d9075caa7  libgo/go/runtime/msan0.go
! 27116e5def30bf0b28056100932a9883  libgo/go/runtime/msize.go
! 3ca16002dd0459192d94b380edb8508f  libgo/go/runtime/mstats.go
! 71ef1d02750a591078bbd0a2d3477200  libgo/go/runtime/mwbbuf.go
  5f828c62ed1df3416c488dd2fff2830b  libgo/go/runtime/nbpipe_pipe.go
  3b7f7a3b07fb8ab64803db0f385a2138  libgo/go/runtime/nbpipe_pipe2.go
! d0a5035113a748120309aa32f9f3417b  libgo/go/runtime/nbpipe_test.go
! 901c7bcd59f946715c9db8c74f1a2cfa  libgo/go/runtime/net_plan9.go
! 56c0123b74c82dd5e73c9199b9a39176  libgo/go/runtime/netpoll.go
! 352280e51ec21e8e13124969aeecde6a  libgo/go/runtime/netpoll_aix.go
! 5eed016746716815c2504bcf1d3cb16b  libgo/go/runtime/netpoll_epoll.go
  e45b58d8270eff020e441bfddbae83a6  libgo/go/runtime/netpoll_fake.go
  6a26d3e5a283bea6c1289c2f0ad53287  libgo/go/runtime/netpoll_hurd.go
! 0b99b526f5c6a7ff91856a8cca343d1b  libgo/go/runtime/netpoll_kqueue.go
! 08a62393c5f65cd2b9ca92138dce7bdc  libgo/go/runtime/netpoll_solaris.go
! f382837a813bdc76a8637fd7ca05b369  libgo/go/runtime/netpoll_stub.go
! 182ef2ade2ef1ffc41126b062473f443  libgo/go/runtime/netpoll_windows.go
  3c6b542f720e39a9402d8d391cc66701  libgo/go/runtime/norace_test.go
  abe03e43d221f9678964394a556d4cf6  libgo/go/runtime/numcpu_freebsd_test.go
  c3659bc3c8b68203331c793e7686c2fb  libgo/go/runtime/os3_solaris.go
! 7b26422511c3ebcc310b1a897fffe730  libgo/go/runtime/os_aix.go
  714006ac1454334e5570041c5ea7c150  libgo/go/runtime/os_darwin.go
  5efe91ea7f0721e326a065d99f091883  libgo/go/runtime/os_dragonfly.go
! 4c90157ac245de070bd26c6a1338035c  libgo/go/runtime/os_freebsd.go
! cd3af5cd9c4f5eda09b16c52f3cce2e6  libgo/go/runtime/os_freebsd_arm64.go
! 9d58601c99296a2af2b162a903cbd7a2  libgo/go/runtime/os_gccgo.go
! 085e37ba1b49a46b4d62f23d738b21e5  libgo/go/runtime/os_hurd.go
  e9438f316eb39bee387d1e010a69e0ca  libgo/go/runtime/os_illumos.go
! 7f7dc63e918fbb15835e231868678778  libgo/go/runtime/os_js.go
! 45ab1e9eae7ec6bbb73694b6778cbd1e  libgo/go/runtime/os_linux.go
  bc2773acfbcd6d681d5355bd9d5179d2  libgo/go/runtime/os_linux_arm.go
! 35523d0b07ede1cc27fa05f6dfd9d258  libgo/go/runtime/os_linux_arm64.go
! 48cee83b17b8f7904dba89c5cc0473c8  libgo/go/runtime/os_linux_mips64x.go
  7779dda91a0a8e06884b8a83ab3c37c2  libgo/go/runtime/os_linux_mipsx.go
  9eefb8a5f36b447da6e2cca654a437dc  libgo/go/runtime/os_linux_noauxv.go
  d2a903bcf33552be9cebb89563c92a63  libgo/go/runtime/os_linux_ppc64x.go
! 5fd34dd19cc47985f91ed8862e0c7997  libgo/go/runtime/os_linux_s390x.go
! 4378a3ad598fe8da6c836ece54b96507  libgo/go/runtime/os_netbsd.go
  220f87e2bb50ec754dd7a6450bda5020  libgo/go/runtime/os_netbsd_arm64.go
  215aa422c585f52745541596a4a5cf1a  libgo/go/runtime/os_only_solaris.go
! ea3c86cb38d4e68b875b5596e33f3b75  libgo/go/runtime/os_openbsd.go
! 045469820e4cfb6b3c610e797e785b60  libgo/go/runtime/os_openbsd_arm64.go
! 696cf42ba080e75a2f2306e67e1d3569  libgo/go/runtime/os_solaris.go
  b2d6fa5728766e88e876f91f1a3c9e95  libgo/go/runtime/os_windows_arm.go
! b1e802825440a400851ce00ab0e933b2  libgo/go/runtime/panic.go
  76912002531d838499d2542bd45ce4c3  libgo/go/runtime/panic32.go
  093fb8619e8f718d7c2a6748f7a0d4da  libgo/go/runtime/pprof/elf.go
! 62f2042d1fd0940991a4e6138dfbfac7  libgo/go/runtime/pprof/internal/profile/encode.go
! 2742e1a8fd2c10f25cc9e98f2834edfc  libgo/go/runtime/pprof/internal/profile/filter.go
! f215ab05a44b0b39da0130653d8b6473  libgo/go/runtime/pprof/internal/profile/legacy_profile.go
! 8b8e8113165a6f637bcad1ed04032df0  libgo/go/runtime/pprof/internal/profile/profile.go
! b0444ee7eda577cce633330363da86b9  libgo/go/runtime/pprof/internal/profile/profile_test.go
! a70340db97c93aa39b3b7937b51dad68  libgo/go/runtime/pprof/internal/profile/proto.go
! d434ed2afa9b019dd066da34dd384e7f  libgo/go/runtime/pprof/internal/profile/proto_test.go
! d3bec38805b7716ed269d85f46e818b5  libgo/go/runtime/pprof/internal/profile/prune.go
! 3abf603ba930e891e92ccb1f8123f531  libgo/go/runtime/pprof/label.go
! d856fc637b909502a8fef9483e6d55f3  libgo/go/runtime/pprof/label_test.go
  934fdf417b83965fbe03f6a27e1e4ff9  libgo/go/runtime/pprof/map.go
! 5ba9783b82ebbb97e417d88e0044a308  libgo/go/runtime/pprof/mprof_test.go
! 6117962d251a8bd8f8d6aa1f1ac3f8a7  libgo/go/runtime/pprof/pprof.go
! 4d7618eb3c6aa0400716ea6c3d254af5  libgo/go/runtime/pprof/pprof_test.go
! 7a01ee1cbf1ed93896cd7f81bc0ed043  libgo/go/runtime/pprof/proto.go
! e7f57235f99762dd7e90dbc9a52a51e5  libgo/go/runtime/pprof/proto_test.go
  67d1caf2c57ece01a95a85053ad0afb3  libgo/go/runtime/pprof/protobuf.go
  0b700804ed788627f579d33fdc38f64b  libgo/go/runtime/pprof/protomem.go
! 5f750fcdc2e9a02a653cefe8e9c71b2a  libgo/go/runtime/pprof/protomem_test.go
  a41903e6b202c94c5cf7608397153b93  libgo/go/runtime/pprof/runtime.go
  2ea1c28984ca3fcabe6f98ace0e16b28  libgo/go/runtime/pprof/runtime_test.go
  5913b7b52393d1764efd64d1da9c7054  libgo/go/runtime/pprof/testdata/README
--- 92018,92146 ----
  03af967c43c39bc3bd839953c0d47c08  libgo/go/runtime/internal/sys/stubs.go
  25743016e1c0daa81d5651f5651641e0  libgo/go/runtime/internal/sys/sys.go
  3c71ad04ba9834cd1e4cdcd1b873f6ab  libgo/go/runtime/lfstack.go
! c7c054cebbc0fcd02b8b6061541a2fc8  libgo/go/runtime/lfstack_32bit.go
  abdd677a24643066606135cb5d1d7df2  libgo/go/runtime/lfstack_64bit.go
  67fe49711e28c2362368b34e8bb09969  libgo/go/runtime/lfstack_test.go
  ee76757a978bf6edf09fe1399a4b733e  libgo/go/runtime/libfuzzer.go
! 6aced5a6f90c881eb45618c264bf3d45  libgo/go/runtime/lock_futex.go
! 5a817222c0d60ead7ea80c63ae320eba  libgo/go/runtime/lock_js.go
! 5bab25a4cf512787b1aede585131ce01  libgo/go/runtime/lock_sema.go
! 91825c16003641fb4d446aba378ad05d  libgo/go/runtime/lockrank.go
! aac1189a19825aa4a84dddb91ac340ea  libgo/go/runtime/lockrank_off.go
! ff886c8c654a5758896bd94871cec80c  libgo/go/runtime/lockrank_on.go
! ab0e007c398e60995c7e58a93aaa442c  libgo/go/runtime/malloc.go
! 68cedbbd93c084bd59d79a6c3f2416ad  libgo/go/runtime/malloc_test.go
! 130f6aff6449e4928cddbceff0fc9359  libgo/go/runtime/map.go
! 7472ece3b9588817129607489c44c924  libgo/go/runtime/map_benchmark_test.go
! 41515ae10e1ec71a15a0a509756d134f  libgo/go/runtime/map_fast32.go
! 9c521ec16d07ed95b219bb538b2e90d4  libgo/go/runtime/map_fast64.go
! c09ecd8bfc8f81ab291cf5fa96aa08d0  libgo/go/runtime/map_faststr.go
! d8447e0130c65ee7aab8ef7aea9fb577  libgo/go/runtime/map_test.go
! 8d9eb852041027ad6341ec6feea97f94  libgo/go/runtime/mbarrier.go
! 438af70fe1ea548a7ec740fe5712ed99  libgo/go/runtime/mbitmap.go
! 03e6c1751a397b3f107cc06b0ae6d590  libgo/go/runtime/mcache.go
! edd0b74ab16abe4e872a200ae4afe1c7  libgo/go/runtime/mcentral.go
! d8a0e84b0d0701c5c560017f6ab56e68  libgo/go/runtime/mcheckmark.go
! bd01a74e0a3f3e08aeec945100c329bc  libgo/go/runtime/mem_gccgo.go
! 034df5e78566981cc4e6b61135fef43b  libgo/go/runtime/memmove_linux_amd64_test.go
! e295e76c8e913427333b9f518014abc6  libgo/go/runtime/memmove_test.go
! e24f97cf46946efef68d63a0eb6fda73  libgo/go/runtime/metrics.go
! fa64eadf70e4d77961d69d74cab60fd1  libgo/go/runtime/metrics/description.go
! c910177cd122abd5a9eba6a885a93910  libgo/go/runtime/metrics/description_test.go
! 20e0b549d9c5fa5caf0fd89407c508d6  libgo/go/runtime/metrics/doc.go
! 39ab6d68704b555dc84d5054697cada6  libgo/go/runtime/metrics/example_test.go
! b160fa69fe0592127a84a5dfaee0d157  libgo/go/runtime/metrics/histogram.go
! ce5e99bef63aa6aa260ed1e961be86a0  libgo/go/runtime/metrics/sample.go
! f61bd133399628a1900b27b3a28141cf  libgo/go/runtime/metrics/value.go
! c9f22648024bef39c1ae707bcc190589  libgo/go/runtime/metrics_test.go
! 9217467d23edd53af43c17618b3dd621  libgo/go/runtime/mfinal.go
  bfbf41b480ab847220914454bd77cc57  libgo/go/runtime/mfinal_test.go
! 346b416ff4234b6b81387c537dd753c9  libgo/go/runtime/mfixalloc.go
! 5f757100bf6633b6f70d1dc265cb01a7  libgo/go/runtime/mgc.go
  a675c175229e5f286b000acd88117f40  libgo/go/runtime/mgc_gccgo.go
! 6a0ede4cbe1d6d8d86b67e56f413e722  libgo/go/runtime/mgcmark.go
! 0280a5ec6b4a73a280500939495d9f2e  libgo/go/runtime/mgcscavenge.go
! 8760c82934c31db8b09b9483c44a8894  libgo/go/runtime/mgcscavenge_test.go
! 7ca18f5033cbc19a428093d2705e6ce0  libgo/go/runtime/mgcsweep.go
! cd298b1116cd374938571c779e8ea48d  libgo/go/runtime/mgcwork.go
! b060c4d98883f2e8b20f61f0914c480b  libgo/go/runtime/mheap.go
! b5dd5f449d709e6034f39d2fe9aa05d4  libgo/go/runtime/mkfastlog2table.go
! 20895f7acfce2d35a40418a72b7ee124  libgo/go/runtime/mkpreempt.go
! 55c4568709378f8ba5feb260e85ef500  libgo/go/runtime/mksizeclasses.go
! 89898115ac5ac6f74cb73926a07adf0a  libgo/go/runtime/mpagealloc.go
! f7f668b84edec631a36169ae428628aa  libgo/go/runtime/mpagealloc_32bit.go
! 694976d331df489ee25f7778d795f543  libgo/go/runtime/mpagealloc_64bit.go
! 298bf18506dec178ae67216e71e7184e  libgo/go/runtime/mpagealloc_test.go
! 05d3c93e7d060b514e1ca1571d727ea9  libgo/go/runtime/mpagecache.go
  d2f54ff10655ec48fe4433ec98ffed9e  libgo/go/runtime/mpagecache_test.go
! 421f66392fcb243fefe850920b79a771  libgo/go/runtime/mpallocbits.go
! d92a6ae713740eec77e0d5fdeead20a6  libgo/go/runtime/mpallocbits_test.go
! 42a894d734de6f5becb38cff6e06c533  libgo/go/runtime/mprof.go
! d4051b4865c90e6e3b0a7ec568e8e22d  libgo/go/runtime/mranges.go
! fc7d340e2875c2cb28c840799efb1ba4  libgo/go/runtime/mranges_test.go
  d12da266bc7b9f926629e9cb02ba26ad  libgo/go/runtime/msan/msan.go
! b23ff3c874c1ce27a2593cc04fce04d8  libgo/go/runtime/msan0.go
! b5116da5a4fcab561313b26771e06d9f  libgo/go/runtime/msize.go
! 3858b85e8202235e6b5e49c9b867afb6  libgo/go/runtime/mspanset.go
! d84dfd57ebade2b8065afb2fd59aa94f  libgo/go/runtime/mstats.go
! e10306589a35fdcf436bb78fa3f302f2  libgo/go/runtime/mwbbuf.go
  5f828c62ed1df3416c488dd2fff2830b  libgo/go/runtime/nbpipe_pipe.go
  3b7f7a3b07fb8ab64803db0f385a2138  libgo/go/runtime/nbpipe_pipe2.go
! a3fe1c973796b455d48587d4793ab6b6  libgo/go/runtime/nbpipe_test.go
! b955bbe836c3bbd65144d08f3aa3f5ea  libgo/go/runtime/net_plan9.go
! 4441f9ce3167c2e767e4e22840a3a7e2  libgo/go/runtime/netpoll.go
! b44ba804f96f754cfc0329811c9260af  libgo/go/runtime/netpoll_aix.go
! 09b4862291ac81fb4a4629a302e72322  libgo/go/runtime/netpoll_epoll.go
  e45b58d8270eff020e441bfddbae83a6  libgo/go/runtime/netpoll_fake.go
  6a26d3e5a283bea6c1289c2f0ad53287  libgo/go/runtime/netpoll_hurd.go
! 9b0d32ac47b89c1733223e6072d45f05  libgo/go/runtime/netpoll_kqueue.go
! ea73638a43a5d13ff246a5ffa08b173f  libgo/go/runtime/netpoll_os_test.go
! 25d17666891cda7499f04d3fc57f9561  libgo/go/runtime/netpoll_solaris.go
! 04e728611de521f9f123542e2e60f2de  libgo/go/runtime/netpoll_stub.go
! ef6fe895bb7ee3f159c5b6ca1ff80f3b  libgo/go/runtime/netpoll_windows.go
  3c6b542f720e39a9402d8d391cc66701  libgo/go/runtime/norace_test.go
  abe03e43d221f9678964394a556d4cf6  libgo/go/runtime/numcpu_freebsd_test.go
  c3659bc3c8b68203331c793e7686c2fb  libgo/go/runtime/os3_solaris.go
! 5e88f005a14acdacd8ba8a81be31e2c2  libgo/go/runtime/os_aix.go
  714006ac1454334e5570041c5ea7c150  libgo/go/runtime/os_darwin.go
  5efe91ea7f0721e326a065d99f091883  libgo/go/runtime/os_dragonfly.go
! 06cd69da109dfcdc951b2a53d5301b93  libgo/go/runtime/os_freebsd.go
! 6ac875ea3308e7ca018f45ec3d4ff5e1  libgo/go/runtime/os_freebsd_arm64.go
! 7263dc141c33c580296470ba3f4e6239  libgo/go/runtime/os_gccgo.go
! 42b620de6e7edc0375659dd018b73577  libgo/go/runtime/os_hurd.go
  e9438f316eb39bee387d1e010a69e0ca  libgo/go/runtime/os_illumos.go
! 0e29c4238d4c5aab06e202c1dc5d56e6  libgo/go/runtime/os_js.go
! 56f134f75932352896a48402b87ce922  libgo/go/runtime/os_linux.go
  bc2773acfbcd6d681d5355bd9d5179d2  libgo/go/runtime/os_linux_arm.go
! 88a4f32f4ba04626f44875fedff21b1c  libgo/go/runtime/os_linux_arm64.go
! 5877c1717c882bb2bf6560ff9decbb14  libgo/go/runtime/os_linux_mips64x.go
  7779dda91a0a8e06884b8a83ab3c37c2  libgo/go/runtime/os_linux_mipsx.go
  9eefb8a5f36b447da6e2cca654a437dc  libgo/go/runtime/os_linux_noauxv.go
  d2a903bcf33552be9cebb89563c92a63  libgo/go/runtime/os_linux_ppc64x.go
! 62cfdb71cdb491bd41cbf9340fbedf1c  libgo/go/runtime/os_linux_s390x.go
! f8d7d7ef4fbf058d3869d19e92ef66f4  libgo/go/runtime/os_netbsd.go
  220f87e2bb50ec754dd7a6450bda5020  libgo/go/runtime/os_netbsd_arm64.go
  215aa422c585f52745541596a4a5cf1a  libgo/go/runtime/os_only_solaris.go
! 10c3bda813ada3ee0177ee82eebe0585  libgo/go/runtime/os_openbsd.go
! b62275fe8976cc8c90a8d3ead2cc5276  libgo/go/runtime/os_solaris.go
  b2d6fa5728766e88e876f91f1a3c9e95  libgo/go/runtime/os_windows_arm.go
! 86644f758997585769ec12d8c32c75b8  libgo/go/runtime/panic.go
  76912002531d838499d2542bd45ce4c3  libgo/go/runtime/panic32.go
+ f3061a853da4f2665a4e6253ec4b50db  libgo/go/runtime/panic_test.go
  093fb8619e8f718d7c2a6748f7a0d4da  libgo/go/runtime/pprof/elf.go
! 20b4a3be648af8ee3718713b9f616765  libgo/go/runtime/pprof/label.go
! dd42aa77fa2e7d47ac2023d5f32aad5e  libgo/go/runtime/pprof/label_test.go
  934fdf417b83965fbe03f6a27e1e4ff9  libgo/go/runtime/pprof/map.go
! 5f21078c44f905301a06241f4f87eebd  libgo/go/runtime/pprof/mprof_test.go
! 8da83328d7214f29a5f89528e30d255d  libgo/go/runtime/pprof/pprof.go
! 51b6dc2fba4b95006fecd316d0e0de5a  libgo/go/runtime/pprof/pprof_norusage.go
! 98db463bd85416db468b1b6b96375b6a  libgo/go/runtime/pprof/pprof_rusage.go
! 74204b1865d600bcfd825398f0a20cec  libgo/go/runtime/pprof/pprof_test.go
! 0c0d58d830445464466a3f9269ccf745  libgo/go/runtime/pprof/proto.go
! 9fe6ade2165de6c2b61baf0ad8a864bd  libgo/go/runtime/pprof/proto_test.go
  67d1caf2c57ece01a95a85053ad0afb3  libgo/go/runtime/pprof/protobuf.go
  0b700804ed788627f579d33fdc38f64b  libgo/go/runtime/pprof/protomem.go
! 0b4f6877a921a7caecae0481b1d994f1  libgo/go/runtime/pprof/protomem_test.go
  a41903e6b202c94c5cf7608397153b93  libgo/go/runtime/pprof/runtime.go
  2ea1c28984ca3fcabe6f98ace0e16b28  libgo/go/runtime/pprof/runtime_test.go
  5913b7b52393d1764efd64d1da9c7054  libgo/go/runtime/pprof/testdata/README
*************** b0c0ee9afbf20e5ec7df25bf6a591593  libgo/
*** 86092,86156 ****
  70ce312996442a3c9f1ca1c61d10e628  libgo/go/runtime/pprof/testdata/test32be
  092db9490d8f1d4d5d6d45c308363239  libgo/go/runtime/pprof/testdata/test64
  330e0459efb34478eab1df29cf3b1530  libgo/go/runtime/pprof/testdata/test64be
! 936862d9700515fc5caa9ef8e071f154  libgo/go/runtime/preempt.go
  902cd6d78fa504200458c7068699c1b2  libgo/go/runtime/preempt_nonwindows.go
! 834e0e1477dfb27e2b695f30d4786448  libgo/go/runtime/print.go
! 5f0d60d5978f6365376d29c35f38a75e  libgo/go/runtime/proc.go
  ae6799d03b400a51be099b6b67904f9e  libgo/go/runtime/proc_runtime_test.go
! b6308ad3ba54fdc6c82ba6e9b3721a77  libgo/go/runtime/proc_test.go
  05262f8d035dc7329132ff2204136f6a  libgo/go/runtime/profbuf.go
  d5e668c7e76529245dc2b9fa56fee3a8  libgo/go/runtime/profbuf_test.go
! 8aa362f89e63dd0f2c9e73f3af511453  libgo/go/runtime/proflabel.go
! a05a5cfb8efec3e565d3abf1057d1d76  libgo/go/runtime/race0.go
  befb3cf1a8dfbf62d85d4c066b099e09  libgo/go/runtime/rand_test.go
! 60c21f5a0cdf921b76d131f7cd1d117e  libgo/go/runtime/rdebug.go
  74fad87dade3574ab0087f79088ca092  libgo/go/runtime/relax_stub.go
! 18b141e62909cc988f03292ffcee17ba  libgo/go/runtime/runtime-lldb_test.go
! ec6bc2d9dc9916ab35a51e438c4d6f5c  libgo/go/runtime/runtime.go
! a49e4fb79fac61fc1d96caa455bd53e6  libgo/go/runtime/runtime1.go
! 8ee81a615d38574346f627fa9a3c64dd  libgo/go/runtime/runtime2.go
  80d7659d3ca8c538c66bf8eeda56c5c0  libgo/go/runtime/runtime_mmap_test.go
  06be1cb9674129b3dfebe1f8c05789aa  libgo/go/runtime/runtime_test.go
  fe613f3911dc534ab842212f4f4984ce  libgo/go/runtime/runtime_unix_test.go
! d4fb4f46c2c52c0ef0bfc450aeaf479b  libgo/go/runtime/rwmutex.go
  cbe3eb01e703e7b83786189c7a28765e  libgo/go/runtime/rwmutex_test.go
! af0ece7a5aeab64bf66e54d769f78ed9  libgo/go/runtime/select.go
! 1a0372f4a0040bb366dbf175e6bac9c8  libgo/go/runtime/sema.go
! 858b09e5d529ed903058b71d4c91be93  libgo/go/runtime/sema_test.go
  4d897bf2651d7cb40eccdae43d5ba58a  libgo/go/runtime/semasleep_test.go
! 2387a9f1b22768d097e4d6bab076f3a5  libgo/go/runtime/signal_gccgo.go
! d7688a75eb885d75ee11f59a3c33778e  libgo/go/runtime/signal_unix.go
! c74f7b7375f162bca40dc4c5a82a7e1e  libgo/go/runtime/signal_windows_test.go
! 2bee2236939a99f305201f04743edaf9  libgo/go/runtime/sigqueue.go
  8f3c93b817167aacd1889f0d4d67504f  libgo/go/runtime/sigqueue_note.go
! 0021c94fb1dc80809bf59fc06d1805ed  libgo/go/runtime/sizeclasses.go
! b08e60f77e79ed493726d274bc09fb06  libgo/go/runtime/sizeof_test.go
! c310a1078b143f3ea53358ea4087c84d  libgo/go/runtime/slice.go
! 8f227e58241caec0c2e877b23c207724  libgo/go/runtime/slice_test.go
! 6447788b58b0774c245361d145788d11  libgo/go/runtime/stack_test.go
! d055c1b67c3416e5b2ee8b3c9f95357d  libgo/go/runtime/string.go
! fefff0cba56d9017629b72d9192225b9  libgo/go/runtime/string_test.go
! ad32109b94f88318b369b6bbca04f56a  libgo/go/runtime/stubs.go
! f5914f1c8bea682cf905c3a7b4c87088  libgo/go/runtime/stubs2.go
  a3697bc9b8072b6aa70956171dfe68f6  libgo/go/runtime/stubs3.go
  868e81b1a88bd922d5a9660b677a9f43  libgo/go/runtime/stubs_linux.go
  493f0a9be547e5872838cfe4a186aabf  libgo/go/runtime/stubs_nonlinux.go
! 796abba6afb1085ef89ed3045c6e5091  libgo/go/runtime/symtab.go
! f199411475b5635629898d23081f67be  libgo/go/runtime/symtab_test.go
  4daf82b54749beaac24c1193f929d74b  libgo/go/runtime/sys_wasm.go
  c472fb1d79f1919c32c8087c37e8a606  libgo/go/runtime/testdata/testfaketime/faketime.go
  0e5300ee70a78543ac67025af26a69b5  libgo/go/runtime/testdata/testprog/abort.go
  e16bfd00b1cef1b0b70864d179610bb4  libgo/go/runtime/testdata/testprog/badtraceback.go
! ba7bb76c92c966c03bcc3391d031ea40  libgo/go/runtime/testdata/testprog/checkptr.go
  172e4208200267e59d0ea047a8c0440d  libgo/go/runtime/testdata/testprog/crash.go
! 05819ba6376f3d906e353da60c400094  libgo/go/runtime/testdata/testprog/deadlock.go
! 46b18b0249924cff581a0b20529a54f6  libgo/go/runtime/testdata/testprog/gc.go
! 1f0d55303ff24f2d6bc874e01a0f1810  libgo/go/runtime/testdata/testprog/lockosthread.go
  d9e02d0b5bbe11e3d270bbd949888cf8  libgo/go/runtime/testdata/testprog/main.go
  1e74a8f6718e1af4736e09e826b27dc4  libgo/go/runtime/testdata/testprog/map.go
! f19e84cec09c98ef97a5220583b92976  libgo/go/runtime/testdata/testprog/memprof.go
  e9e92bff3636bbec8c572dab5cdc5847  libgo/go/runtime/testdata/testprog/misc.go
! 4c4c0dc3b3c7ae2d54bf17191c2b3ee2  libgo/go/runtime/testdata/testprog/numcpu_freebsd.go
  c2048f4452acdf90e12de2313c902b9d  libgo/go/runtime/testdata/testprog/panicrace.go
  6efe1f6686e874fc6acccb140d506207  libgo/go/runtime/testdata/testprog/preempt.go
  b76ce0d4c1c05d70941ffc4db0e19ab9  libgo/go/runtime/testdata/testprog/signal.go
--- 92149,92214 ----
  70ce312996442a3c9f1ca1c61d10e628  libgo/go/runtime/pprof/testdata/test32be
  092db9490d8f1d4d5d6d45c308363239  libgo/go/runtime/pprof/testdata/test64
  330e0459efb34478eab1df29cf3b1530  libgo/go/runtime/pprof/testdata/test64be
! 4d361e4dc4fe1dd24b4faef629b9ca73  libgo/go/runtime/preempt.go
  902cd6d78fa504200458c7068699c1b2  libgo/go/runtime/preempt_nonwindows.go
! 0a183551878641308f4e3d345b584c95  libgo/go/runtime/print.go
! 7166c7d333b86bd612637e4a76130895  libgo/go/runtime/proc.go
  ae6799d03b400a51be099b6b67904f9e  libgo/go/runtime/proc_runtime_test.go
! 2c9862d834efc51ab36f33f94bf2c07d  libgo/go/runtime/proc_test.go
  05262f8d035dc7329132ff2204136f6a  libgo/go/runtime/profbuf.go
  d5e668c7e76529245dc2b9fa56fee3a8  libgo/go/runtime/profbuf_test.go
! 76f5ccb5dde7aec4ad22293203beb1c5  libgo/go/runtime/proflabel.go
! c145a4aea40bca8e94cbd24e2d0be914  libgo/go/runtime/race0.go
  befb3cf1a8dfbf62d85d4c066b099e09  libgo/go/runtime/rand_test.go
! a9bb6d5971fad9daae8045e815ce3622  libgo/go/runtime/rdebug.go
  74fad87dade3574ab0087f79088ca092  libgo/go/runtime/relax_stub.go
! e80da2f088ad93fb1141f3d764c5fb04  libgo/go/runtime/runtime-lldb_test.go
! 94ecf1eafd18d3b7283ab71080f03f70  libgo/go/runtime/runtime.go
! 293e2bd8fb6a42b5c633720f70e6f84a  libgo/go/runtime/runtime1.go
! 274127f65b4d0c2f80a2efb179f6a74d  libgo/go/runtime/runtime2.go
  80d7659d3ca8c538c66bf8eeda56c5c0  libgo/go/runtime/runtime_mmap_test.go
  06be1cb9674129b3dfebe1f8c05789aa  libgo/go/runtime/runtime_test.go
  fe613f3911dc534ab842212f4f4984ce  libgo/go/runtime/runtime_unix_test.go
! 4d4aac317c0d55be4f22b399ef43cc55  libgo/go/runtime/rwmutex.go
  cbe3eb01e703e7b83786189c7a28765e  libgo/go/runtime/rwmutex_test.go
! bf052a158f67e3ac4b64780145e3eb5c  libgo/go/runtime/select.go
! 3fc3a1073075fbc3404dd60fef3c394c  libgo/go/runtime/sema.go
! bb2f5f655d3c5eeea977bc4dd0c46cad  libgo/go/runtime/sema_test.go
  4d897bf2651d7cb40eccdae43d5ba58a  libgo/go/runtime/semasleep_test.go
! 7c5b5f99bc1114fc3d56b83611269de2  libgo/go/runtime/signal_gccgo.go
! 46e61a23e757a5fa78545faa9643ca53  libgo/go/runtime/signal_unix.go
! 678fbe97cfbbd118ced0bf06b9c7ef47  libgo/go/runtime/signal_windows_test.go
! e92d75d63ef0aad2afc65f9709248e4c  libgo/go/runtime/sigqueue.go
  8f3c93b817167aacd1889f0d4d67504f  libgo/go/runtime/sigqueue_note.go
! 724f9663ffea2815c500769e2ec6c4c6  libgo/go/runtime/sizeclasses.go
! ef5147fe184a47a3eaf802111aa56150  libgo/go/runtime/sizeof_test.go
! 1863e0a28d2c3c6e512a0d350f0948d6  libgo/go/runtime/slice.go
! 451d4d651d99426f7901f74ddd7e6e5d  libgo/go/runtime/slice_test.go
! 30ad4bc5cc97a4434d18095e74f7813b  libgo/go/runtime/stack_test.go
! a6dace3e648b2f6bb5202408aba94ee5  libgo/go/runtime/string.go
! 3d5512aded08e80fbb3d9a7454c58b3b  libgo/go/runtime/string_test.go
! 1e42949c8923a214d0d64f972e393cdc  libgo/go/runtime/stubs.go
! e29ae878d12273f1b1ea54c23e14f499  libgo/go/runtime/stubs2.go
  a3697bc9b8072b6aa70956171dfe68f6  libgo/go/runtime/stubs3.go
  868e81b1a88bd922d5a9660b677a9f43  libgo/go/runtime/stubs_linux.go
  493f0a9be547e5872838cfe4a186aabf  libgo/go/runtime/stubs_nonlinux.go
! f683775b936ff1dae38fe1a8d3c4086f  libgo/go/runtime/symtab.go
! cfc0c3a2025090722210a998e8c6bae0  libgo/go/runtime/symtab_test.go
  4daf82b54749beaac24c1193f929d74b  libgo/go/runtime/sys_wasm.go
  c472fb1d79f1919c32c8087c37e8a606  libgo/go/runtime/testdata/testfaketime/faketime.go
  0e5300ee70a78543ac67025af26a69b5  libgo/go/runtime/testdata/testprog/abort.go
  e16bfd00b1cef1b0b70864d179610bb4  libgo/go/runtime/testdata/testprog/badtraceback.go
! 78184745c3e8ae2c880da54be797b3b2  libgo/go/runtime/testdata/testprog/checkptr.go
  172e4208200267e59d0ea047a8c0440d  libgo/go/runtime/testdata/testprog/crash.go
! fa231bb8c7bea90eb3b4f56c648a1cd4  libgo/go/runtime/testdata/testprog/deadlock.go
! 682b683d23d8cf8ba1161f7fefd868e8  libgo/go/runtime/testdata/testprog/gc.go
! 4a33f046238f211f09e59df6e0298be6  libgo/go/runtime/testdata/testprog/lockosthread.go
  d9e02d0b5bbe11e3d270bbd949888cf8  libgo/go/runtime/testdata/testprog/main.go
  1e74a8f6718e1af4736e09e826b27dc4  libgo/go/runtime/testdata/testprog/map.go
! f7ea862313619d428b31b40fd107f93f  libgo/go/runtime/testdata/testprog/memprof.go
  e9e92bff3636bbec8c572dab5cdc5847  libgo/go/runtime/testdata/testprog/misc.go
! 6d85470f2651e69227d5d1db070238aa  libgo/go/runtime/testdata/testprog/numcpu_freebsd.go
! 9000e4cbb4edd13619b679af8fc6106d  libgo/go/runtime/testdata/testprog/panicprint.go
  c2048f4452acdf90e12de2313c902b9d  libgo/go/runtime/testdata/testprog/panicrace.go
  6efe1f6686e874fc6acccb140d506207  libgo/go/runtime/testdata/testprog/preempt.go
  b76ce0d4c1c05d70941ffc4db0e19ab9  libgo/go/runtime/testdata/testprog/signal.go
*************** ee681b8dd07ca8896cf664f581ff1b8b  libgo/
*** 86158,86168 ****
  b86bee5ad967b6809bba1a6e5ba90247  libgo/go/runtime/testdata/testprog/stringconcat.go
  ec6f3dd15e09fab6a391e7a9f9a6a831  libgo/go/runtime/testdata/testprog/syscall_windows.go
  4aaaef9d2cf35e4eabd0f3ee96f907bb  libgo/go/runtime/testdata/testprog/syscalls.go
! fded806b73aca60b027a84870a6c5d07  libgo/go/runtime/testdata/testprog/syscalls_linux.go
  250e33f09d303bce57b082757979a3e8  libgo/go/runtime/testdata/testprog/syscalls_none.go
! 202d47e6c4788b2c3326f10ef5de656d  libgo/go/runtime/testdata/testprog/timeprof.go
  0ff6666a689c68fef9af813c42065d0b  libgo/go/runtime/testdata/testprog/traceback_ancestors.go
! aa7b7181b8f0fdceaa63e0dda983b0de  libgo/go/runtime/testdata/testprog/vdso.go
  b67ffc75ff026c7d58fadbab4cfc0ee8  libgo/go/runtime/testdata/testprogcgo/aprof.go
  cb7bbb3acd0fdb0ddc9ec3bb6361724b  libgo/go/runtime/testdata/testprogcgo/bigstack_windows.c
  5c15092fea3beb7a81dfeca1840a2599  libgo/go/runtime/testdata/testprogcgo/bigstack_windows.go
--- 92216,92226 ----
  b86bee5ad967b6809bba1a6e5ba90247  libgo/go/runtime/testdata/testprog/stringconcat.go
  ec6f3dd15e09fab6a391e7a9f9a6a831  libgo/go/runtime/testdata/testprog/syscall_windows.go
  4aaaef9d2cf35e4eabd0f3ee96f907bb  libgo/go/runtime/testdata/testprog/syscalls.go
! cac0974909402e3236227717b3bd7f7c  libgo/go/runtime/testdata/testprog/syscalls_linux.go
  250e33f09d303bce57b082757979a3e8  libgo/go/runtime/testdata/testprog/syscalls_none.go
! d12956ad4f26beaceacb3f1add9607e0  libgo/go/runtime/testdata/testprog/timeprof.go
  0ff6666a689c68fef9af813c42065d0b  libgo/go/runtime/testdata/testprog/traceback_ancestors.go
! ea8fd66b0b8dfb93b42d1225205c9b01  libgo/go/runtime/testdata/testprog/vdso.go
  b67ffc75ff026c7d58fadbab4cfc0ee8  libgo/go/runtime/testdata/testprogcgo/aprof.go
  cb7bbb3acd0fdb0ddc9ec3bb6361724b  libgo/go/runtime/testdata/testprogcgo/bigstack_windows.c
  5c15092fea3beb7a81dfeca1840a2599  libgo/go/runtime/testdata/testprogcgo/bigstack_windows.go
*************** ebaf5edc08d3a26b8c824f217f07d4fa  libgo/
*** 86174,86196 ****
  eb23be0ba22dad5ed40d97c424315870  libgo/go/runtime/testdata/testprogcgo/dll_windows.go
  817552d9d1b1e53369cd97b1187c63c9  libgo/go/runtime/testdata/testprogcgo/dropm.go
  459ea91b6e71cd736d3c50e96e8e459b  libgo/go/runtime/testdata/testprogcgo/dropm_stub.go
! 42c5e317a910f5135de327163e97bb67  libgo/go/runtime/testdata/testprogcgo/exec.go
  efe1c0d9aa9f984cd856be2f934df8ed  libgo/go/runtime/testdata/testprogcgo/lockosthread.c
  18b2c640cfae3adb7411c7431ecbc1fc  libgo/go/runtime/testdata/testprogcgo/lockosthread.go
  d9e02d0b5bbe11e3d270bbd949888cf8  libgo/go/runtime/testdata/testprogcgo/main.go
  b65f082237e0067797a890413e83bb92  libgo/go/runtime/testdata/testprogcgo/numgoroutine.go
! 15d2bf97ff74200c0c61748e11df98f1  libgo/go/runtime/testdata/testprogcgo/pprof.go
  4bbb100713ee74cea6e93a2568ca96cc  libgo/go/runtime/testdata/testprogcgo/raceprof.go
  de8f539845f39e326f0b38570b3daafb  libgo/go/runtime/testdata/testprogcgo/racesig.go
  2a1d972b04491bafa8f369a961984aad  libgo/go/runtime/testdata/testprogcgo/sigpanic.go
  e82cbd0866f6d960030b8ac84cd2c67a  libgo/go/runtime/testdata/testprogcgo/sigstack.go
  c178d94c2363d68c114e7e28c23b1a25  libgo/go/runtime/testdata/testprogcgo/stack_windows.go
  f130568d34a09b1fec48db4dc63abd45  libgo/go/runtime/testdata/testprogcgo/threadpanic.go
  21ca4bdb7d827c5d39c0f256ed673d6c  libgo/go/runtime/testdata/testprogcgo/threadpanic_unix.c
  4521507061b29e1f266a11e2a7a99698  libgo/go/runtime/testdata/testprogcgo/threadpanic_windows.c
! 326b747a553f5476ade9d51daa3b9022  libgo/go/runtime/testdata/testprogcgo/threadpprof.go
  15f8cc955e22863859c5c3635107dbc4  libgo/go/runtime/testdata/testprogcgo/threadprof.go
! e0df6460134564133be5653a51d5eb7f  libgo/go/runtime/testdata/testprogcgo/traceback.go
  e20920cf8f51db2555210dc9ef3691ae  libgo/go/runtime/testdata/testprogcgo/traceback_gccgo.go
  b02afeb4a15586ff5f18385717f595a2  libgo/go/runtime/testdata/testprogcgo/tracebackctxt.go
  3ef0a7a35d982d07aa1d469c5ca0e631  libgo/go/runtime/testdata/testprogcgo/tracebackctxt_c.c
--- 92232,92257 ----
  eb23be0ba22dad5ed40d97c424315870  libgo/go/runtime/testdata/testprogcgo/dll_windows.go
  817552d9d1b1e53369cd97b1187c63c9  libgo/go/runtime/testdata/testprogcgo/dropm.go
  459ea91b6e71cd736d3c50e96e8e459b  libgo/go/runtime/testdata/testprogcgo/dropm_stub.go
! 15ff97f702f51aebd59bdaa53817f470  libgo/go/runtime/testdata/testprogcgo/eintr.go
! 049a865e329153280a35570c3f29b131  libgo/go/runtime/testdata/testprogcgo/exec.go
  efe1c0d9aa9f984cd856be2f934df8ed  libgo/go/runtime/testdata/testprogcgo/lockosthread.c
  18b2c640cfae3adb7411c7431ecbc1fc  libgo/go/runtime/testdata/testprogcgo/lockosthread.go
  d9e02d0b5bbe11e3d270bbd949888cf8  libgo/go/runtime/testdata/testprogcgo/main.go
+ 44c55b451dae91e983d9f4f3b1660060  libgo/go/runtime/testdata/testprogcgo/needmdeadlock.go
  b65f082237e0067797a890413e83bb92  libgo/go/runtime/testdata/testprogcgo/numgoroutine.go
! 9f89240630d79e1c1ad468f9ecc4ee25  libgo/go/runtime/testdata/testprogcgo/pprof.go
  4bbb100713ee74cea6e93a2568ca96cc  libgo/go/runtime/testdata/testprogcgo/raceprof.go
  de8f539845f39e326f0b38570b3daafb  libgo/go/runtime/testdata/testprogcgo/racesig.go
+ 2b712007a051f59a2e33d59567afb4c8  libgo/go/runtime/testdata/testprogcgo/segv.go
  2a1d972b04491bafa8f369a961984aad  libgo/go/runtime/testdata/testprogcgo/sigpanic.go
  e82cbd0866f6d960030b8ac84cd2c67a  libgo/go/runtime/testdata/testprogcgo/sigstack.go
  c178d94c2363d68c114e7e28c23b1a25  libgo/go/runtime/testdata/testprogcgo/stack_windows.go
  f130568d34a09b1fec48db4dc63abd45  libgo/go/runtime/testdata/testprogcgo/threadpanic.go
  21ca4bdb7d827c5d39c0f256ed673d6c  libgo/go/runtime/testdata/testprogcgo/threadpanic_unix.c
  4521507061b29e1f266a11e2a7a99698  libgo/go/runtime/testdata/testprogcgo/threadpanic_windows.c
! 5def76ba7616e2811c1509f5f35dd230  libgo/go/runtime/testdata/testprogcgo/threadpprof.go
  15f8cc955e22863859c5c3635107dbc4  libgo/go/runtime/testdata/testprogcgo/threadprof.go
! 207c20ea521747b498b011db47e25ff0  libgo/go/runtime/testdata/testprogcgo/traceback.go
  e20920cf8f51db2555210dc9ef3691ae  libgo/go/runtime/testdata/testprogcgo/traceback_gccgo.go
  b02afeb4a15586ff5f18385717f595a2  libgo/go/runtime/testdata/testprogcgo/tracebackctxt.go
  3ef0a7a35d982d07aa1d469c5ca0e631  libgo/go/runtime/testdata/testprogcgo/tracebackctxt_c.c
*************** d85dd3c49d08697f99f540ba6e1174c8  libgo/
*** 86204,86225 ****
  c5fbacb05e941bf3f1efe84ec9709b49  libgo/go/runtime/testdata/testprognet/signalexec.go
  a64a93630a058498b7796fc7b8579454  libgo/go/runtime/testdata/testwinlib/main.c
  8d24bc36e158943d336ba603a7b38987  libgo/go/runtime/testdata/testwinlib/main.go
! b1662dabd535c90ec01e7bad51f8ba04  libgo/go/runtime/time.go
  cc0e2649a4d605233383bcc2ff2f1fe5  libgo/go/runtime/time_fake.go
  01fe9c3ea9536d2f747c7ba7af77db08  libgo/go/runtime/time_nofake.go
! 5499664440bca7258b8a97ac8cc584f5  libgo/go/runtime/time_test.go
  33112dfd3d444056a0113e7e594cbe80  libgo/go/runtime/timeasm.go
  627f19cb56b7b72997034603dcffad90  libgo/go/runtime/timestub.go
! 31d9fbd28d9f3ff76a56be0e6967484a  libgo/go/runtime/timestub2.go
! e7da06b41f4cf6540bfc7a29b886f1fd  libgo/go/runtime/trace.go
! c8d6e16ba08f36a404bcaa676e1b1d0d  libgo/go/runtime/trace/annotation.go
! 363d25a9e93109f1508044d4a20d1036  libgo/go/runtime/trace/annotation_test.go
  8394ada76c0c28f76f5e262e5c99f974  libgo/go/runtime/trace/example_test.go
! 8c607feaf6f0b6cad88c41cd3dbf0c07  libgo/go/runtime/trace/trace.go
! 2e32b63705c11f1e5c86fe6fbc6e8e3f  libgo/go/runtime/trace/trace_stack_test.go
! e6e7eaa299ebaaf68f72084cecc37221  libgo/go/runtime/trace/trace_test.go
! 0cd9b44749965a462482c75bbdf94a2a  libgo/go/runtime/traceback_gccgo.go
! 48ec639c58643333f35c83ffe622ba6c  libgo/go/runtime/type.go
  c60a5202f5ceb0e3f3b09ab202e9f6c7  libgo/go/runtime/typekind.go
  5a418f6713f974c3cd474e9ffea7cc82  libgo/go/runtime/utf8.go
  f44bd95750b08ffb83cfa731995cbeed  libgo/go/runtime/write_err.go
--- 92265,92288 ----
  c5fbacb05e941bf3f1efe84ec9709b49  libgo/go/runtime/testdata/testprognet/signalexec.go
  a64a93630a058498b7796fc7b8579454  libgo/go/runtime/testdata/testwinlib/main.c
  8d24bc36e158943d336ba603a7b38987  libgo/go/runtime/testdata/testwinlib/main.go
! e2d2f6befe9c9e5aedefa0911b612630  libgo/go/runtime/testdata/testwinlibsignal/dummy.go
! 73b045094ad01a0e940034428947dd5b  libgo/go/runtime/testdata/testwinsignal/main.go
! a48cc1fb702bbb7bc1063fd8e04b5a7c  libgo/go/runtime/time.go
  cc0e2649a4d605233383bcc2ff2f1fe5  libgo/go/runtime/time_fake.go
  01fe9c3ea9536d2f747c7ba7af77db08  libgo/go/runtime/time_nofake.go
! 101d390946aaa71a11228ad540098145  libgo/go/runtime/time_test.go
  33112dfd3d444056a0113e7e594cbe80  libgo/go/runtime/timeasm.go
  627f19cb56b7b72997034603dcffad90  libgo/go/runtime/timestub.go
! 229ab68136e461342a8858deedd2f6f8  libgo/go/runtime/timestub2.go
! 81c7b80b9e903eaf732b82c319de3545  libgo/go/runtime/trace.go
! f8ac444d17d3614d42771effbed5ab7d  libgo/go/runtime/trace/annotation.go
! 7d05fccd96ef7c5ca2a56c68539addd1  libgo/go/runtime/trace/annotation_test.go
  8394ada76c0c28f76f5e262e5c99f974  libgo/go/runtime/trace/example_test.go
! 461ea3ae4a3de89bd39a90cd59395753  libgo/go/runtime/trace/trace.go
! 8ffa5ee76cec4cde4685441101e038d3  libgo/go/runtime/trace/trace_stack_test.go
! 3956a504e82dfb465d6f711422d5e6af  libgo/go/runtime/trace/trace_test.go
! 6e4f94a6076e388fadedd6cc333efdf0  libgo/go/runtime/traceback_gccgo.go
! e5cc2a202a1b816f34a202b59f4d80da  libgo/go/runtime/type.go
  c60a5202f5ceb0e3f3b09ab202e9f6c7  libgo/go/runtime/typekind.go
  5a418f6713f974c3cd474e9ffea7cc82  libgo/go/runtime/utf8.go
  f44bd95750b08ffb83cfa731995cbeed  libgo/go/runtime/write_err.go
*************** b89549ffb67af1968a2b38c8f879ec67  libgo/
*** 86231,86268 ****
  b89a87e51c9a8363066de856ef127981  libgo/go/sort/example_test.go
  21ebe3c56494e1ebc52acb3251a6f78a  libgo/go/sort/example_wrapper_test.go
  5ec468d74053964b118cc04effd2611c  libgo/go/sort/export_test.go
! dc44bdc2c3ec173a8d087fc9adf0a6b7  libgo/go/sort/genzfunc.go
  ab69a9f941ac3f104b923190814c37f3  libgo/go/sort/search.go
  3e876da36a15eeb8775010f13220c341  libgo/go/sort/search_test.go
! 8b71cbbb5d235d99fb81f226eaaec932  libgo/go/sort/slice.go
  69701041804123373c00232a2f02fb71  libgo/go/sort/slice_go113.go
  6128f25368ee73a0eedaf736be1544c6  libgo/go/sort/slice_go14.go
  cf46c40c1fda767519b934a325330597  libgo/go/sort/slice_go18.go
! 0c682a048529b1694ecc6f1cbaad3235  libgo/go/sort/sort.go
  838b24b5f7cf8599474947780e5ee459  libgo/go/sort/sort_test.go
  a5872ee6a27e38bd3b6a51628c580f87  libgo/go/sort/zfuncversion.go
  c57d3bac728104db67ce130b39533fa2  libgo/go/strconv/atob.go
  2b0e97637f1876802fd5251d27c86e27  libgo/go/strconv/atob_test.go
! b03d0bb001ebd25cf2279de9e5477ae2  libgo/go/strconv/atof.go
! c9d6c85ad8e11a0ceb24845be49dc589  libgo/go/strconv/atof_test.go
! 6b6f469a98c44381aa25e8e769e903a5  libgo/go/strconv/atoi.go
  b57957fb64e39d4a7b58ae8295209de7  libgo/go/strconv/atoi_test.go
  437406951b80b7f1a169625d5cadf412  libgo/go/strconv/decimal.go
  c8fbcf5ed89480898c8ad5a5f7e91a2f  libgo/go/strconv/decimal_test.go
  7bd2703a371609a3f08e85b11dbdee4a  libgo/go/strconv/doc.go
  31b299c818ecfe2d488e2f804cbbba08  libgo/go/strconv/example_test.go
  b19af02747208a319da91b1301c9900f  libgo/go/strconv/export_test.go
! c722655f32a0b9f1b31bd6821e002f68  libgo/go/strconv/extfloat.go
  deae6f87af61351b28e00a4509bcf6a9  libgo/go/strconv/fp_test.go
  32f06226601cb51511bacfeccc5613bb  libgo/go/strconv/ftoa.go
! 6cf70d34d367f2172f3a1cb33d1df548  libgo/go/strconv/ftoa_test.go
! c85e39623b22d1a4ea56bf05e1010929  libgo/go/strconv/internal_test.go
! fe358175571c8ab72a10507bb2726a1f  libgo/go/strconv/isprint.go
  e0b69352ae18a9d9771d314abf634f6f  libgo/go/strconv/itoa.go
  82e1c89ea104e3fb66329dbbce013d21  libgo/go/strconv/itoa_test.go
! e9154493a1b649b0ed747a2525f0ac7b  libgo/go/strconv/makeisprint.go
  871551883b9efed73e00f96e7928b7ff  libgo/go/strconv/quote.go
! 70c816eb6bfd5a6dbc051255c827e672  libgo/go/strconv/quote_test.go
  b38355d8b3ec666c65f60742e650a983  libgo/go/strconv/strconv_test.go
  dc1ca447fa01cae0bb5de6427d6aa4ae  libgo/go/strconv/testdata/testfp.txt
  dc1ca447fa01cae0bb5de6427d6aa4ae  libgo/go/strconv/testfp.txt
--- 92294,92336 ----
  b89a87e51c9a8363066de856ef127981  libgo/go/sort/example_test.go
  21ebe3c56494e1ebc52acb3251a6f78a  libgo/go/sort/example_wrapper_test.go
  5ec468d74053964b118cc04effd2611c  libgo/go/sort/export_test.go
! a6e2d182d3592f5a48e8edddce544a64  libgo/go/sort/genzfunc.go
  ab69a9f941ac3f104b923190814c37f3  libgo/go/sort/search.go
  3e876da36a15eeb8775010f13220c341  libgo/go/sort/search_test.go
! b76a181cd7ad76df37f78cb126b1b2c4  libgo/go/sort/slice.go
  69701041804123373c00232a2f02fb71  libgo/go/sort/slice_go113.go
  6128f25368ee73a0eedaf736be1544c6  libgo/go/sort/slice_go14.go
  cf46c40c1fda767519b934a325330597  libgo/go/sort/slice_go18.go
! 93de62953073d66e2af1a0eee33f7352  libgo/go/sort/sort.go
  838b24b5f7cf8599474947780e5ee459  libgo/go/sort/sort_test.go
  a5872ee6a27e38bd3b6a51628c580f87  libgo/go/sort/zfuncversion.go
  c57d3bac728104db67ce130b39533fa2  libgo/go/strconv/atob.go
  2b0e97637f1876802fd5251d27c86e27  libgo/go/strconv/atob_test.go
! cbb11485fea3e1dec0a0bb5056fbabdd  libgo/go/strconv/atoc.go
! 10c2791c2e8bdccd4d6f9a4fdcc4d28a  libgo/go/strconv/atoc_test.go
! 6256547db67790a92f77b6fb131c502d  libgo/go/strconv/atof.go
! 99c8303ed137b848beabb0d83e1368cf  libgo/go/strconv/atof_test.go
! 83566b971e34187bd41a2ded739b7223  libgo/go/strconv/atoi.go
  b57957fb64e39d4a7b58ae8295209de7  libgo/go/strconv/atoi_test.go
+ 35c9fee0ee5d1c05424ee60d909ceae4  libgo/go/strconv/ctoa.go
+ af6268eb8dddb9905ca11013c0ff30c9  libgo/go/strconv/ctoa_test.go
  437406951b80b7f1a169625d5cadf412  libgo/go/strconv/decimal.go
  c8fbcf5ed89480898c8ad5a5f7e91a2f  libgo/go/strconv/decimal_test.go
  7bd2703a371609a3f08e85b11dbdee4a  libgo/go/strconv/doc.go
+ a98db250a8e25c7b3777aebc306454c8  libgo/go/strconv/eisel_lemire.go
  31b299c818ecfe2d488e2f804cbbba08  libgo/go/strconv/example_test.go
  b19af02747208a319da91b1301c9900f  libgo/go/strconv/export_test.go
! 4afdf4e977d5eb91484039c01fe0cafe  libgo/go/strconv/extfloat.go
  deae6f87af61351b28e00a4509bcf6a9  libgo/go/strconv/fp_test.go
  32f06226601cb51511bacfeccc5613bb  libgo/go/strconv/ftoa.go
! 9de3c86b862f192f6c8dab7a804b24cd  libgo/go/strconv/ftoa_test.go
! b5e86b1aacb6b32ea789f88f9e000ea8  libgo/go/strconv/internal_test.go
! 66b80541ebd0d866b4ca257d79792a47  libgo/go/strconv/isprint.go
  e0b69352ae18a9d9771d314abf634f6f  libgo/go/strconv/itoa.go
  82e1c89ea104e3fb66329dbbce013d21  libgo/go/strconv/itoa_test.go
! 0be0bdac5c5aa74c6e38fd08c0d252c0  libgo/go/strconv/makeisprint.go
  871551883b9efed73e00f96e7928b7ff  libgo/go/strconv/quote.go
! 6fce184c5e5e94f9479bafeb2a713ff7  libgo/go/strconv/quote_test.go
  b38355d8b3ec666c65f60742e650a983  libgo/go/strconv/strconv_test.go
  dc1ca447fa01cae0bb5de6427d6aa4ae  libgo/go/strconv/testdata/testfp.txt
  dc1ca447fa01cae0bb5de6427d6aa4ae  libgo/go/strconv/testfp.txt
*************** dc1ca447fa01cae0bb5de6427d6aa4ae  libgo/
*** 86272,86311 ****
  23b544761fdb246896dddad133cf16e0  libgo/go/strings/compare_test.go
  6fc3af07975f3f8e78c28cc8b98bae43  libgo/go/strings/example_test.go
  bf5ce9a36e5bedbd7dc045557c398236  libgo/go/strings/export_test.go
! 5e6fda58d1d56c76dde31734b6dc51c4  libgo/go/strings/reader.go
! ebcf0399bb8bfa2ee489b95f620b7e63  libgo/go/strings/reader_test.go
  a138cc57ced2c51385dc7e09482735b2  libgo/go/strings/replace.go
  3f8a61dbea1b3788851a32c3836f266c  libgo/go/strings/replace_test.go
  5be401c63806185ee237c0bb137c44b4  libgo/go/strings/search.go
  4244a4944e6adcdd4876875c45b9d73a  libgo/go/strings/search_test.go
! 2ab5a715bc0b738d66fd068bac478879  libgo/go/strings/strings.go
! d025bbd26120132714ba47c503acfcff  libgo/go/strings/strings_test.go
! 099c60891cc542f9d0b72c1f613873d8  libgo/go/sync/atomic/atomic.c
! ea97f3f93fbc00815ab2a9b08e06af1b  libgo/go/sync/atomic/atomic_test.go
! 64b2820fd9137758e1fcb27bcb51f5bd  libgo/go/sync/atomic/doc.go
  e213ecb30da78e95c4ec808dea908299  libgo/go/sync/atomic/example_test.go
  81c084116d0d8145dde5ce2ffbc6ac3b  libgo/go/sync/atomic/value.go
! 9506721f916ed8e85bb0db57f5b9d3aa  libgo/go/sync/atomic/value_test.go
  bce2e5ddfc7d396f523e03e136b571fc  libgo/go/sync/cond.go
! 5c75ed9eab887083e7cac13e1ceae8da  libgo/go/sync/cond_test.go
  5e8ce2e0a595e04701e5deed174f386b  libgo/go/sync/example_pool_test.go
  379823b8233ddc7532c13535342b773c  libgo/go/sync/example_test.go
  5d9408fdbfc3e7d6d198b46c07064d94  libgo/go/sync/export_test.go
! 7fefcf6f450903a66bb752bb6287d8dc  libgo/go/sync/map.go
! e68c83bf43a6a87336e9fcc3395dbaaa  libgo/go/sync/map_bench_test.go
! 6fdfc6af4e123915d96776f8242420aa  libgo/go/sync/map_reference_test.go
! 6872e3ae08d4aa6906ea5cd1740e9217  libgo/go/sync/map_test.go
  99ca5bd4d9b7266e63dc76eb0fdd4e00  libgo/go/sync/mutex.go
! b4f48a0033d701b0e867c7a40f3fa051  libgo/go/sync/mutex_test.go
! 9b53f4408d7ac3aa4e730ad81e55a742  libgo/go/sync/once.go
  2c3240d310641137172167ba79ac92de  libgo/go/sync/once_test.go
! 3d4f99144a02673383f3f89f68775837  libgo/go/sync/pool.go
  70ce4bae1704966ee184600d3dbc3996  libgo/go/sync/pool_test.go
! 3f6493d1ed39bcae070d15f4f02eae27  libgo/go/sync/poolqueue.go
! 116eacc5f220e74e20e42ea2fa281ea1  libgo/go/sync/runtime.go
  72ceac3d1895eef5f4e9ed1a4181478e  libgo/go/sync/runtime_sema_test.go
! 3e394e7469d230893d4c4dc31dd9c937  libgo/go/sync/rwmutex.go
! 1eaba9dbfbc3a8734f20ea74d3e57a86  libgo/go/sync/rwmutex_test.go
  ecc0f5669d668369b39ae3fc191e93e5  libgo/go/sync/waitgroup.go
  0565e2113baf9c59f317d6f38670f9e4  libgo/go/sync/waitgroup_test.go
  3f280b435328bda30bee1fe9f6e8d3a2  libgo/go/syscall/bpf_bsd.go
--- 92340,92382 ----
  23b544761fdb246896dddad133cf16e0  libgo/go/strings/compare_test.go
  6fc3af07975f3f8e78c28cc8b98bae43  libgo/go/strings/example_test.go
  bf5ce9a36e5bedbd7dc045557c398236  libgo/go/strings/export_test.go
! 91485bf0f0a1ad6e75a74b5816c57810  libgo/go/strings/reader.go
! ffca52eba4b92c2a24fbf8a8fc6ac8fa  libgo/go/strings/reader_test.go
  a138cc57ced2c51385dc7e09482735b2  libgo/go/strings/replace.go
  3f8a61dbea1b3788851a32c3836f266c  libgo/go/strings/replace_test.go
  5be401c63806185ee237c0bb137c44b4  libgo/go/strings/search.go
  4244a4944e6adcdd4876875c45b9d73a  libgo/go/strings/search_test.go
! a7c201d9a3caf7228bee4496a7267543  libgo/go/strings/strings.go
! 5a393deefb89b3c800c447075b94a95c  libgo/go/strings/strings_test.go
! 922ef30f735e54dc806f7f1001312fa7  libgo/go/sync/atomic/atomic.c
! 86bf93b6f8458ff210176ccb6be48f17  libgo/go/sync/atomic/atomic_test.go
! 02ac008e348750401076ed908cdaf51d  libgo/go/sync/atomic/doc.go
  e213ecb30da78e95c4ec808dea908299  libgo/go/sync/atomic/example_test.go
+ 1abc65286966e58e772e23a93e78a08a  libgo/go/sync/atomic/unaligned.go
  81c084116d0d8145dde5ce2ffbc6ac3b  libgo/go/sync/atomic/value.go
! b2fdda58342667817a298b3e024ce3b6  libgo/go/sync/atomic/value_test.go
  bce2e5ddfc7d396f523e03e136b571fc  libgo/go/sync/cond.go
! 647cb2014f8ffdbeb3af5116d2bc56da  libgo/go/sync/cond_test.go
  5e8ce2e0a595e04701e5deed174f386b  libgo/go/sync/example_pool_test.go
  379823b8233ddc7532c13535342b773c  libgo/go/sync/example_test.go
  5d9408fdbfc3e7d6d198b46c07064d94  libgo/go/sync/export_test.go
! e1617e6b96c6f74260432af19a692a6a  libgo/go/sync/map.go
! 71ad28344e922f1a895209edd8feca09  libgo/go/sync/map_bench_test.go
! 17fae3516f8195c35cbf15dfbd4f5f81  libgo/go/sync/map_reference_test.go
! 02f131e649c1e89288aa15aa3245bf02  libgo/go/sync/map_test.go
  99ca5bd4d9b7266e63dc76eb0fdd4e00  libgo/go/sync/mutex.go
! 6ca5ec0ed58e8e5cceaf69d0870811b0  libgo/go/sync/mutex_test.go
! c2dca259aa25c21414782786a5b764b5  libgo/go/sync/once.go
  2c3240d310641137172167ba79ac92de  libgo/go/sync/once_test.go
! fc671511eec0b97c17c6aaacff90cdbc  libgo/go/sync/pool.go
  70ce4bae1704966ee184600d3dbc3996  libgo/go/sync/pool_test.go
! 7a143eb46b84fff8f9ca729ab8b1918a  libgo/go/sync/poolqueue.go
! 64ec5b8b4aec8fd8ad76d658b859b9ee  libgo/go/sync/runtime.go
! 2b7cbe6d38694ac368965aa733e0b5a5  libgo/go/sync/runtime2.go
! 599ddff7bcaf47b63219b526f44cc0af  libgo/go/sync/runtime2_lockrank.go
  72ceac3d1895eef5f4e9ed1a4181478e  libgo/go/sync/runtime_sema_test.go
! ed5a5bd1e0d95a57da6347d2d6a337d0  libgo/go/sync/rwmutex.go
! 6e3231c7e62e442b590cc8dc21b8ae4a  libgo/go/sync/rwmutex_test.go
  ecc0f5669d668369b39ae3fc191e93e5  libgo/go/sync/waitgroup.go
  0565e2113baf9c59f317d6f38670f9e4  libgo/go/sync/waitgroup_test.go
  3f280b435328bda30bee1fe9f6e8d3a2  libgo/go/syscall/bpf_bsd.go
*************** bcba9c41e717ecc5f9fadedc63b51631  libgo/
*** 86315,86391 ****
  598132f71cd40ff38e768ec6f9993eaa  libgo/go/syscall/creds_test.go
  f3bc6044d11bfddc8ddee276c7c3c8a0  libgo/go/syscall/dir_plan9.go
  a00662e475fe9d459295430953886ad2  libgo/go/syscall/dirent.go
! 9e5138123906ac5220391ac51afb6b24  libgo/go/syscall/dirent_test.go
  40ebb3339843bac09d8fd3fad178ebc0  libgo/go/syscall/endian_big.go
! 9dbcedfa5da587b4c2aa37f875995bef  libgo/go/syscall/endian_little.go
! 65de915c2e2d8b1485b132ffeedd00f9  libgo/go/syscall/env_plan9.go
! 157d210fae07b9be224bc97ae5cc3520  libgo/go/syscall/env_unix.go
  191058c52e6b6cfb72ed323baa0e0f01  libgo/go/syscall/env_windows.go
  9d171a1ced6ead793607cd7bcb7f1d58  libgo/go/syscall/errno.c
  e997bae42fe4ba0d7865f88e9f039a9c  libgo/go/syscall/errors_plan9.go
  246ad220feddf48c3796fabb035a8d6b  libgo/go/syscall/errstr.go
  b5fde02a7c01362d218b8e407438c7b8  libgo/go/syscall/errstr_glibc.go
! 06654f468c301071710b7338ed27287a  libgo/go/syscall/exec_bsd.go
! 7c55c36c8fdd3bc56e8f09d903f73f6b  libgo/go/syscall/exec_darwin.go
! 58d7bfca7b289b3d7ad8b46c25f3cc80  libgo/go/syscall/exec_linux.go
! cd796e5fda689b764b649b9b3fd9428d  libgo/go/syscall/exec_linux_test.go
! e37f71a22ebb8d890d1917af8996c9d7  libgo/go/syscall/exec_stubs.go
! 5f6b5abccbf7bca2b8b87205c079a730  libgo/go/syscall/exec_unix.go
! 7f26fcc393baaaaddc14b622dfc5ce78  libgo/go/syscall/exec_unix_test.go
! 2d81875a29915e82bef242671e870cdc  libgo/go/syscall/exec_windows.go
  9ae3d196559303bcbfcb54e5ab7b3ea7  libgo/go/syscall/export_freebsd_test.go
  e47cb3fd01944472b1b09591f44ab02c  libgo/go/syscall/export_linux_test.go
  687f993fe615bbec0dd2869fc28d3640  libgo/go/syscall/export_test.go
! 0c6e0af447ef0ad70b23147af426ae22  libgo/go/syscall/export_unix_test.go
  c0c22c4f29e8103f803487e806626353  libgo/go/syscall/flock_darwin.go
  ceccc326b879cdcf064237f4d3ca0195  libgo/go/syscall/forkpipe.go
  450142be47b9f19cc8df995ce851361b  libgo/go/syscall/forkpipe2.go
! b2c9671cd8ac0dfd578b8c8ea54157bd  libgo/go/syscall/fs_js.go
! da0fd45fa88a61361d696e7146bed4e1  libgo/go/syscall/getdirentries_test.go
  3029f758f3b668d233e4f073af7ba3eb  libgo/go/syscall/js/export_test.go
! 185f8f2f139857ef20f58807230178b9  libgo/go/syscall/js/func.go
! 371ce861618bacee9ea0c4db57cb751a  libgo/go/syscall/js/js.go
! 1bb116f21e74a3c555bfbaca54d3d30a  libgo/go/syscall/js/js_test.go
! c9ea292c219f47e862a684991abd2bc0  libgo/go/syscall/libcall_aix.go
! d346327ce79c4e4bc1e5b21fe71cec93  libgo/go/syscall/libcall_bsd.go
  8d3d53322b2783b898c415ba37a16dd9  libgo/go/syscall/libcall_bsd_largefile.go
! 709b4bb7c43060965d3d97407f7df055  libgo/go/syscall/libcall_bsd_regfile.go
! 56e705a549758cfafbb4937a168d92a8  libgo/go/syscall/libcall_glibc.go
! 55a2690f3436b094d06102df0438059e  libgo/go/syscall/libcall_hurd.go
  562e5aacf2778a3c9a00918069e43b2f  libgo/go/syscall/libcall_hurd_386.go
! e59e4cfb46884347fe7f82a32f20a8a4  libgo/go/syscall/libcall_irix.go
! 602137f691cd7a718957453ebc36cc48  libgo/go/syscall/libcall_linux.go
  08d02e9ba31a2f132b6670d56e5f9a91  libgo/go/syscall/libcall_linux_386.go
  d0dfa8e45cee5defb536480f056ed447  libgo/go/syscall/libcall_linux_alpha.go
  0f110f6b4b28d847963c11d0307ebbfb  libgo/go/syscall/libcall_linux_amd64.go
  ce162a117004aefe7a22fb9acbb75fb6  libgo/go/syscall/libcall_linux_s390.go
  ce162a117004aefe7a22fb9acbb75fb6  libgo/go/syscall/libcall_linux_s390x.go
  b5f13f78bdec181d93be33d7c9e6e761  libgo/go/syscall/libcall_linux_utimesnano.go
! 9b0b20977f674b3ef6f0580853b89c6a  libgo/go/syscall/libcall_posix.go
  be76e9be95722a9b93ae038a613eea57  libgo/go/syscall/libcall_posix_largefile.go
  52330f2b01b7aed2a0559201d3b5fb0a  libgo/go/syscall/libcall_posix_nonhurd.go
  9951e30a68e24311c6a58d8cbad5049c  libgo/go/syscall/libcall_posix_regfile.go
  b2fa41d1a19889e90c59fb16d47aa785  libgo/go/syscall/libcall_posix_utimesnano.go
! 0d15b09d1ea6051acbfbd14d967c5896  libgo/go/syscall/libcall_solaris_386.go
! db8674dc2f974e11a4dbb83d3538ef72  libgo/go/syscall/libcall_solaris_amd64.go
  b55e11c58c083680acda683400c7317e  libgo/go/syscall/libcall_solaris_largefile.go
  80d482a2123836bc92a7e3407140b4f2  libgo/go/syscall/libcall_solaris_regfile.go
! 9b6c3ba061ae00628e2837722268295e  libgo/go/syscall/libcall_solaris_sparc.go
! db8674dc2f974e11a4dbb83d3538ef72  libgo/go/syscall/libcall_solaris_sparc64.go
  245890ded83cf01a69151e347f18bb8b  libgo/go/syscall/libcall_support.go
  4a419aa6ee84d47246c4eee7e7e11188  libgo/go/syscall/libcall_uname.go
  1f3faef7b5f08c81787d0faa2588cec3  libgo/go/syscall/libcall_wait4.go
  e6c0c1a73eb2b4304600563980dfa862  libgo/go/syscall/libcall_wait4_aix.go
  c69fafcb2bf056078c9afe6a81824c87  libgo/go/syscall/lsf_linux.go
! 0a15bd4ebc2451cc61e5e4e1e005e86b  libgo/go/syscall/mkasm_darwin.go
! 4a808c138f8a7b12ec31e56b79bc4326  libgo/go/syscall/mksyscall.awk
  654b63d48a23c725285a2623f7b257a4  libgo/go/syscall/mmap_unix_test.go
  c7faa8214b138ba27eed688d7bb69fc8  libgo/go/syscall/msan0.go
  84caaf6601fe2492731e0aaa08d5dae8  libgo/go/syscall/net.go
  d04d2e357aa9727921aae85d0c76a7e1  libgo/go/syscall/net_js.go
  2c7ce5b469b485c93b8b0ff3f41ab578  libgo/go/syscall/netlink_linux.go
  6a6dcc85d1a2d05d3e3d1174dcf8066a  libgo/go/syscall/pwd_plan9.go
! 431aa916719c6809a26a18b8cdcf028f  libgo/go/syscall/route_bsd.go
  171380e74906e9601567bc81a59892c8  libgo/go/syscall/route_darwin.go
  0dd914e211c368d01bb31bdcf1e2b4ab  libgo/go/syscall/route_dragonfly.go
  0b29cea4bb6830d007e070bc49454a6a  libgo/go/syscall/route_freebsd.go
--- 92386,92463 ----
  598132f71cd40ff38e768ec6f9993eaa  libgo/go/syscall/creds_test.go
  f3bc6044d11bfddc8ddee276c7c3c8a0  libgo/go/syscall/dir_plan9.go
  a00662e475fe9d459295430953886ad2  libgo/go/syscall/dirent.go
! 9e637fe8f51b23680da50d56ad00b3dc  libgo/go/syscall/dirent_test.go
  40ebb3339843bac09d8fd3fad178ebc0  libgo/go/syscall/endian_big.go
! 0034d19c6def92611f9f06c887551c34  libgo/go/syscall/endian_little.go
! 0f0434c5d9c765199dd218c63ca748ff  libgo/go/syscall/env_unix.go
  191058c52e6b6cfb72ed323baa0e0f01  libgo/go/syscall/env_windows.go
  9d171a1ced6ead793607cd7bcb7f1d58  libgo/go/syscall/errno.c
  e997bae42fe4ba0d7865f88e9f039a9c  libgo/go/syscall/errors_plan9.go
  246ad220feddf48c3796fabb035a8d6b  libgo/go/syscall/errstr.go
  b5fde02a7c01362d218b8e407438c7b8  libgo/go/syscall/errstr_glibc.go
! 99e09fa893bf563c62966cf0fc97d75c  libgo/go/syscall/exec_bsd.go
! b6d87a9382e61be21af2b76cf9280930  libgo/go/syscall/exec_linux.go
! 0ada317d0f37e4f1f1e32895517076e2  libgo/go/syscall/exec_linux_test.go
! ec30317b065747527fccbc8e4cc44f04  libgo/go/syscall/exec_stubs.go
! 208d246dfa5c6469513947907e5c4272  libgo/go/syscall/exec_unix.go
! a10d5d797375c60e5711f5521071982d  libgo/go/syscall/exec_unix_test.go
! 21e0ffcc2987b1b79f6b2387f72dc0c9  libgo/go/syscall/exec_windows.go
! 9e826f2ddd3ac3bfd9d85c43ca3cd424  libgo/go/syscall/exec_windows_test.go
! 6ecaf802afbac821d42f9bd596eae9ac  libgo/go/syscall/export_aix_test.go
  9ae3d196559303bcbfcb54e5ab7b3ea7  libgo/go/syscall/export_freebsd_test.go
  e47cb3fd01944472b1b09591f44ab02c  libgo/go/syscall/export_linux_test.go
  687f993fe615bbec0dd2869fc28d3640  libgo/go/syscall/export_test.go
! 8da717c80792374633ca6ceb42c25434  libgo/go/syscall/export_unix_test.go
  c0c22c4f29e8103f803487e806626353  libgo/go/syscall/flock_darwin.go
  ceccc326b879cdcf064237f4d3ca0195  libgo/go/syscall/forkpipe.go
  450142be47b9f19cc8df995ce851361b  libgo/go/syscall/forkpipe2.go
! 86e607127624156a5002762c37c1586d  libgo/go/syscall/fs_js.go
! 330f4a6009a05539f085d1a578e16419  libgo/go/syscall/getdirentries_test.go
  3029f758f3b668d233e4f073af7ba3eb  libgo/go/syscall/js/export_test.go
! f2a9acd2a4530f20f8df91b27bf38073  libgo/go/syscall/js/func.go
! 458f8aa72147c24165ef98aef203d732  libgo/go/syscall/js/js.go
! 58cc615ba93c90d5cd68a2bb766599fa  libgo/go/syscall/js/js_test.go
! 715c03693785f5172ce7ae5971015c28  libgo/go/syscall/libcall_aix.go
! fad34038f40ff23de2b9b3390008db34  libgo/go/syscall/libcall_bsd.go
  8d3d53322b2783b898c415ba37a16dd9  libgo/go/syscall/libcall_bsd_largefile.go
! 0510facb65ec87fbb79c71e9b30b6499  libgo/go/syscall/libcall_bsd_regfile.go
! caf93ff057c135366a3fabf9c1992ad9  libgo/go/syscall/libcall_bsd_sendfile.go
! 9889793326ebd5a0d55792f628ac0386  libgo/go/syscall/libcall_glibc.go
! 0b7cc30b317196a42882ace5a55527bd  libgo/go/syscall/libcall_hurd.go
  562e5aacf2778a3c9a00918069e43b2f  libgo/go/syscall/libcall_hurd_386.go
! ad4306c7d52c93cc9cdfbaa2415c8ad4  libgo/go/syscall/libcall_irix.go
! 2f1987db41335974b8c0d5af17cf3895  libgo/go/syscall/libcall_linux.go
  08d02e9ba31a2f132b6670d56e5f9a91  libgo/go/syscall/libcall_linux_386.go
  d0dfa8e45cee5defb536480f056ed447  libgo/go/syscall/libcall_linux_alpha.go
  0f110f6b4b28d847963c11d0307ebbfb  libgo/go/syscall/libcall_linux_amd64.go
  ce162a117004aefe7a22fb9acbb75fb6  libgo/go/syscall/libcall_linux_s390.go
  ce162a117004aefe7a22fb9acbb75fb6  libgo/go/syscall/libcall_linux_s390x.go
  b5f13f78bdec181d93be33d7c9e6e761  libgo/go/syscall/libcall_linux_utimesnano.go
! 78f9b733965f52ec037f340da4424679  libgo/go/syscall/libcall_posix.go
  be76e9be95722a9b93ae038a613eea57  libgo/go/syscall/libcall_posix_largefile.go
  52330f2b01b7aed2a0559201d3b5fb0a  libgo/go/syscall/libcall_posix_nonhurd.go
  9951e30a68e24311c6a58d8cbad5049c  libgo/go/syscall/libcall_posix_regfile.go
  b2fa41d1a19889e90c59fb16d47aa785  libgo/go/syscall/libcall_posix_utimesnano.go
! 7f6b5fdb1828edd9f2110bb86bc8b899  libgo/go/syscall/libcall_solaris_386.go
! 9402e49eb4623164b42fab1642e26326  libgo/go/syscall/libcall_solaris_amd64.go
  b55e11c58c083680acda683400c7317e  libgo/go/syscall/libcall_solaris_largefile.go
  80d482a2123836bc92a7e3407140b4f2  libgo/go/syscall/libcall_solaris_regfile.go
! 104e4f2b5dae1c3f7ea7824db3e26029  libgo/go/syscall/libcall_solaris_sparc.go
! 9402e49eb4623164b42fab1642e26326  libgo/go/syscall/libcall_solaris_sparc64.go
  245890ded83cf01a69151e347f18bb8b  libgo/go/syscall/libcall_support.go
  4a419aa6ee84d47246c4eee7e7e11188  libgo/go/syscall/libcall_uname.go
  1f3faef7b5f08c81787d0faa2588cec3  libgo/go/syscall/libcall_wait4.go
  e6c0c1a73eb2b4304600563980dfa862  libgo/go/syscall/libcall_wait4_aix.go
  c69fafcb2bf056078c9afe6a81824c87  libgo/go/syscall/lsf_linux.go
! 94fff5b8dcf7538948089b7bacab366d  libgo/go/syscall/mkasm.go
! fa8ba9dad35bbc2428696a0cfcfdd116  libgo/go/syscall/mksyscall.awk
  654b63d48a23c725285a2623f7b257a4  libgo/go/syscall/mmap_unix_test.go
  c7faa8214b138ba27eed688d7bb69fc8  libgo/go/syscall/msan0.go
  84caaf6601fe2492731e0aaa08d5dae8  libgo/go/syscall/net.go
  d04d2e357aa9727921aae85d0c76a7e1  libgo/go/syscall/net_js.go
  2c7ce5b469b485c93b8b0ff3f41ab578  libgo/go/syscall/netlink_linux.go
  6a6dcc85d1a2d05d3e3d1174dcf8066a  libgo/go/syscall/pwd_plan9.go
! f105e492e3737dabc634989bf6fe66d1  libgo/go/syscall/route_bsd.go
  171380e74906e9601567bc81a59892c8  libgo/go/syscall/route_darwin.go
  0dd914e211c368d01bb31bdcf1e2b4ab  libgo/go/syscall/route_dragonfly.go
  0b29cea4bb6830d007e070bc49454a6a  libgo/go/syscall/route_freebsd.go
*************** d04d2e357aa9727921aae85d0c76a7e1  libgo/
*** 86393,86412 ****
  1fa9a87313d79c057ca1b5a730eefa05  libgo/go/syscall/route_freebsd_64bit.go
  df8a551c956bc3737301c2d5a3700579  libgo/go/syscall/route_netbsd.go
  d13db977a1f8b505c859367325c65687  libgo/go/syscall/route_openbsd.go
! c2eb1da23c04de0308406b570aeb860b  libgo/go/syscall/security_windows.go
  683a3640fbaa7c9ef0458b2f809d3265  libgo/go/syscall/setuidgid_32_linux.go
  9e91781375f8f01e8e474c1d4736f37d  libgo/go/syscall/setuidgid_linux.go
! 301318f4cf3fbe695dacff8c8aaa3390  libgo/go/syscall/signame.c
  f6198757bf750b2e86c9f7f4920828a9  libgo/go/syscall/sleep_rtems.go
  b30e4fd94e74d91b5252cfd8eccad3cf  libgo/go/syscall/sleep_select.go
  930ac3cd3c8a42dd414b1a24125658e8  libgo/go/syscall/sock_cloexec_linux.go
  1f16c7eba73e816c7cd9458eb1b017ea  libgo/go/syscall/sockcmsg_dragonfly.go
  ac6ea144ae2aa14415fe0681812fb135  libgo/go/syscall/sockcmsg_linux.go
  2c7a8993930231b05be90691c1c4713f  libgo/go/syscall/sockcmsg_unix.go
! 948bc68b562ddca4355f35348f1936f3  libgo/go/syscall/sockcmsg_unix_other.go
  b7f206a5ea4e302476061105275f8c6c  libgo/go/syscall/socket.go
  c43e9f9fd83b7f82926c7fdab24fc53d  libgo/go/syscall/socket_aix.go
! 9792ba4161a5a5391402b9888d37ad33  libgo/go/syscall/socket_bsd.go
  91b198a36357fdf64b728fcc898b62b0  libgo/go/syscall/socket_irix.go
  ed112d1c897af9d6ce0d5556eeeec5ca  libgo/go/syscall/socket_linux.go
  2f5321278738955c743661d8db6dc172  libgo/go/syscall/socket_linux_ppc64x_type.go
--- 92465,92485 ----
  1fa9a87313d79c057ca1b5a730eefa05  libgo/go/syscall/route_freebsd_64bit.go
  df8a551c956bc3737301c2d5a3700579  libgo/go/syscall/route_netbsd.go
  d13db977a1f8b505c859367325c65687  libgo/go/syscall/route_openbsd.go
! 548c717be44bdf60ffddf6bda2f8f852  libgo/go/syscall/security_windows.go
  683a3640fbaa7c9ef0458b2f809d3265  libgo/go/syscall/setuidgid_32_linux.go
  9e91781375f8f01e8e474c1d4736f37d  libgo/go/syscall/setuidgid_linux.go
! c41963aff6f671a6df727e478deed0bc  libgo/go/syscall/signame.c
  f6198757bf750b2e86c9f7f4920828a9  libgo/go/syscall/sleep_rtems.go
  b30e4fd94e74d91b5252cfd8eccad3cf  libgo/go/syscall/sleep_select.go
  930ac3cd3c8a42dd414b1a24125658e8  libgo/go/syscall/sock_cloexec_linux.go
  1f16c7eba73e816c7cd9458eb1b017ea  libgo/go/syscall/sockcmsg_dragonfly.go
  ac6ea144ae2aa14415fe0681812fb135  libgo/go/syscall/sockcmsg_linux.go
  2c7a8993930231b05be90691c1c4713f  libgo/go/syscall/sockcmsg_unix.go
! 8b8c8ed578ff9a8f2cc373a59346f888  libgo/go/syscall/sockcmsg_unix_other.go
  b7f206a5ea4e302476061105275f8c6c  libgo/go/syscall/socket.go
  c43e9f9fd83b7f82926c7fdab24fc53d  libgo/go/syscall/socket_aix.go
! ca7f79d8156a318a770247ee29c43a01  libgo/go/syscall/socket_bsd.go
! 4526ce2d51a10cff3f4c3edecdb2a584  libgo/go/syscall/socket_hurd.go
  91b198a36357fdf64b728fcc898b62b0  libgo/go/syscall/socket_irix.go
  ed112d1c897af9d6ce0d5556eeeec5ca  libgo/go/syscall/socket_linux.go
  2f5321278738955c743661d8db6dc172  libgo/go/syscall/socket_linux_ppc64x_type.go
*************** a32c8f38aef86961c1bfd750e18d94a1  libgo/
*** 86415,86443 ****
  57ed75694a025e8553fe2ba1de10d658  libgo/go/syscall/socket_solaris.go
  167f36ad5355fe6ed983982996c02d69  libgo/go/syscall/socket_xnet.go
  21b5a484bcf7f42415dfc0d1c2da3be5  libgo/go/syscall/str.go
! 53a21a130b7579a6658d047b88480f53  libgo/go/syscall/syscall.go
  6f2b2e0979d3ed4fc77da45b0f4d3dd0  libgo/go/syscall/syscall_aix.go
! b3aed1c706891b6c383a2fbf00f5466c  libgo/go/syscall/syscall_aix_ppc.go
  0e142cfb436483c276aea628de798a86  libgo/go/syscall/syscall_aix_ppc64.go
  ba4c03de9f8e4f01b7e68cd654298b1b  libgo/go/syscall/syscall_darwin.go
  8abaea48f434c80b6330ce22fbdbb1ce  libgo/go/syscall/syscall_dragonfly.go
! 4c555e514b94acb1605163db1fb21961  libgo/go/syscall/syscall_errno.go
  21c7b2d93dc14b6c353aa068a648ee4d  libgo/go/syscall/syscall_freebsd.go
  9272cf24534b777af3e85023778fcda9  libgo/go/syscall/syscall_freebsd_arm64.go
  655be20fa3d71905f880371748ad8345  libgo/go/syscall/syscall_freebsd_test.go
  cfc572e64bcc8691afa48ba2e4ae15b6  libgo/go/syscall/syscall_funcs.go
  d2d141db7a9d52927adc4a783fd1fb97  libgo/go/syscall/syscall_funcs_stubs.go
  f5d79416aee343137923856cdd7d2ded  libgo/go/syscall/syscall_glibc.go
! b87f778e0156e954c0e918ccd41f4fa3  libgo/go/syscall/syscall_js.go
! 3bd2dc1d6ba2b9c4c1637f7c690d558a  libgo/go/syscall/syscall_linux_386.go
  76aaef7313d5941f3fbacda3ce01b730  libgo/go/syscall/syscall_linux_alpha.go
  3e9b2f55c7ff79a34dc0b67bca3de753  libgo/go/syscall/syscall_linux_amd64.go
  9ecd94464c4c67d7dc027ad9495abee1  libgo/go/syscall/syscall_linux_mipsx.go
  112479d6d9e365de6d786867c94dd2b6  libgo/go/syscall/syscall_linux_riscv64.go
  c6e4c1099b33e82cff86979650bbaa5f  libgo/go/syscall/syscall_linux_s390.go
  37f887c57173dd177a17d2c50ffca527  libgo/go/syscall/syscall_linux_s390x.go
! 3b0bcafeccb87ed3faee9b78ece5c8a9  libgo/go/syscall/syscall_linux_test.go
! d9361d43ef12dff92e57635f642be2a9  libgo/go/syscall/syscall_netbsd.go
  7cb17b469b491a72fcb4249bb3865514  libgo/go/syscall/syscall_netbsd_arm64.go
  d9361d43ef12dff92e57635f642be2a9  libgo/go/syscall/syscall_openbsd.go
  ec6b33dd3de3394bb0f6bb83659e3582  libgo/go/syscall/syscall_openbsd_arm64.go
--- 92488,92517 ----
  57ed75694a025e8553fe2ba1de10d658  libgo/go/syscall/socket_solaris.go
  167f36ad5355fe6ed983982996c02d69  libgo/go/syscall/socket_xnet.go
  21b5a484bcf7f42415dfc0d1c2da3be5  libgo/go/syscall/str.go
! ce4c501d2565a767d84060f75dc51366  libgo/go/syscall/syscall.go
  6f2b2e0979d3ed4fc77da45b0f4d3dd0  libgo/go/syscall/syscall_aix.go
! 5c1be62bcdb0a752dce2f1dc35c1349e  libgo/go/syscall/syscall_aix_ppc.go
  0e142cfb436483c276aea628de798a86  libgo/go/syscall/syscall_aix_ppc64.go
  ba4c03de9f8e4f01b7e68cd654298b1b  libgo/go/syscall/syscall_darwin.go
  8abaea48f434c80b6330ce22fbdbb1ce  libgo/go/syscall/syscall_dragonfly.go
! d46537cc7906d2e27e3dd0b20f59cdda  libgo/go/syscall/syscall_errno.go
  21c7b2d93dc14b6c353aa068a648ee4d  libgo/go/syscall/syscall_freebsd.go
  9272cf24534b777af3e85023778fcda9  libgo/go/syscall/syscall_freebsd_arm64.go
  655be20fa3d71905f880371748ad8345  libgo/go/syscall/syscall_freebsd_test.go
  cfc572e64bcc8691afa48ba2e4ae15b6  libgo/go/syscall/syscall_funcs.go
  d2d141db7a9d52927adc4a783fd1fb97  libgo/go/syscall/syscall_funcs_stubs.go
  f5d79416aee343137923856cdd7d2ded  libgo/go/syscall/syscall_glibc.go
! 8d1154ea561f8a20ed1100e04b866380  libgo/go/syscall/syscall_js.go
! 714caa0736025bb89a456a46aecadc5f  libgo/go/syscall/syscall_linux.go
! 4423eeae94452b3674c0ce2fe1471499  libgo/go/syscall/syscall_linux_386.go
  76aaef7313d5941f3fbacda3ce01b730  libgo/go/syscall/syscall_linux_alpha.go
  3e9b2f55c7ff79a34dc0b67bca3de753  libgo/go/syscall/syscall_linux_amd64.go
  9ecd94464c4c67d7dc027ad9495abee1  libgo/go/syscall/syscall_linux_mipsx.go
  112479d6d9e365de6d786867c94dd2b6  libgo/go/syscall/syscall_linux_riscv64.go
  c6e4c1099b33e82cff86979650bbaa5f  libgo/go/syscall/syscall_linux_s390.go
  37f887c57173dd177a17d2c50ffca527  libgo/go/syscall/syscall_linux_s390x.go
! 46a3ffe4cdd80e1f2bbce57b9ba4054c  libgo/go/syscall/syscall_linux_test.go
! 2c6673d99c57c3c767a4b710b904683d  libgo/go/syscall/syscall_netbsd.go
  7cb17b469b491a72fcb4249bb3865514  libgo/go/syscall/syscall_netbsd_arm64.go
  d9361d43ef12dff92e57635f642be2a9  libgo/go/syscall/syscall_openbsd.go
  ec6b33dd3de3394bb0f6bb83659e3582  libgo/go/syscall/syscall_openbsd_arm64.go
*************** ece0acb4b95afb8e2355bc2209b174be  libgo/
*** 86445,86472 ****
  2da75be9bd1cb47b3b97958458ed832b  libgo/go/syscall/syscall_ptrace_test.go
  42f8185437f1661f70b62fd714eb4210  libgo/go/syscall/syscall_solaris.go
  54e52c75bcc1208dfe76f1bec5636b42  libgo/go/syscall/syscall_test.go
! 7eed6208d2114d4f9cace0d351a8e6e4  libgo/go/syscall/syscall_unix.go
! c415429d7c5fef11e0c3bb405219e936  libgo/go/syscall/syscall_unix_test.go
  cd78596f499af675401bbc1672a9bb4a  libgo/go/syscall/tables_js.go
  ebc8a787bfe2504ea9a8d693456e6354  libgo/go/syscall/time_fake.go
  47cf79c188c42fbd2a50a9288f5c1ba4  libgo/go/syscall/time_nofake.go
! cf0c2bc4115c2c9123f863327e1815db  libgo/go/syscall/timestruct.go
  ab266dfc8754f91d500efadf03d22e64  libgo/go/syscall/wait.c
  a2c87e985b24115b85a59cb86a2ff148  libgo/go/testdata/Isaac.Newton-Opticks.txt
  a8b0651e692061a91726f593bf794765  libgo/go/testing/allocs.go
  fd587d4a53008cc7bcdc65dbd97333c5  libgo/go/testing/allocs_test.go
! 521182d480dc6dd942e2ff4ce9215c9d  libgo/go/testing/benchmark.go
! 619edc7fd679d80ae268e57ef77a97e1  libgo/go/testing/benchmark_test.go
  d7217f9dcf2dcbc3e0812990b8f01da7  libgo/go/testing/cover.go
! c73ac17b56b7bd5607009a0691fdd8b0  libgo/go/testing/example.go
  154fb812f9bfb1b22935cc50c58da653  libgo/go/testing/export_test.go
! 40476e47f04336ec26576708606168e2  libgo/go/testing/helper_test.go
! 7dea357c4b745df9d3cb8276da234b46  libgo/go/testing/helperfuncs_test.go
! 8492b691820c0a77fb8d2f36103f0c71  libgo/go/testing/internal/testdeps/deps.go
  c92087889bddee38d4a41461eefac76d  libgo/go/testing/iotest/logger.go
! 7293329595b32f84018f17d479c48fba  libgo/go/testing/iotest/logger_test.go
! 02f261596073434f926e843ae73be2b7  libgo/go/testing/iotest/reader.go
! 8817171501ca5aa70a7a69a7d63ca1c7  libgo/go/testing/iotest/reader_test.go
  9217f1912a8069ffc6136a02aeeb2f4b  libgo/go/testing/iotest/writer.go
  550b212707ff9943f9dd0c4c709fc08e  libgo/go/testing/iotest/writer_test.go
  4f73f47e7836d2ab7c80bc4b1d851f6f  libgo/go/testing/match.go
--- 92519,92551 ----
  2da75be9bd1cb47b3b97958458ed832b  libgo/go/syscall/syscall_ptrace_test.go
  42f8185437f1661f70b62fd714eb4210  libgo/go/syscall/syscall_solaris.go
  54e52c75bcc1208dfe76f1bec5636b42  libgo/go/syscall/syscall_test.go
! 1806eda28508161bc91cfa6118c3755d  libgo/go/syscall/syscall_unix.go
! cd48cf9d21d5138b479cbf34a1c15b8b  libgo/go/syscall/syscall_unix_test.go
  cd78596f499af675401bbc1672a9bb4a  libgo/go/syscall/tables_js.go
  ebc8a787bfe2504ea9a8d693456e6354  libgo/go/syscall/time_fake.go
  47cf79c188c42fbd2a50a9288f5c1ba4  libgo/go/syscall/time_nofake.go
! bdef0892248df4ed47072739435722aa  libgo/go/syscall/timestruct.go
  ab266dfc8754f91d500efadf03d22e64  libgo/go/syscall/wait.c
  a2c87e985b24115b85a59cb86a2ff148  libgo/go/testdata/Isaac.Newton-Opticks.txt
  a8b0651e692061a91726f593bf794765  libgo/go/testing/allocs.go
  fd587d4a53008cc7bcdc65dbd97333c5  libgo/go/testing/allocs_test.go
! 558f3581613a3a860969de295a22e5d0  libgo/go/testing/benchmark.go
! 0205cd107789c875f30dcb5c4f270470  libgo/go/testing/benchmark_test.go
  d7217f9dcf2dcbc3e0812990b8f01da7  libgo/go/testing/cover.go
! 68038959488a20eef13750a0d39020b6  libgo/go/testing/example.go
  154fb812f9bfb1b22935cc50c58da653  libgo/go/testing/export_test.go
! dc897bac6e873dee2e396bdf6b27af75  libgo/go/testing/fstest/mapfs.go
! 6d273392a6affad3841afc0a11362393  libgo/go/testing/fstest/mapfs_test.go
! ef3d915f1d601f05f89c826315606769  libgo/go/testing/fstest/testfs.go
! e8615b035f0bf7246eb0f635aeff4488  libgo/go/testing/fstest/testfs_test.go
! a8937ad3fe13481fc114a20c4a6de354  libgo/go/testing/helper_test.go
! 85dc600b7c6155a9604762587113429e  libgo/go/testing/helperfuncs_test.go
! 68722b8a553434f9f161de23478600d9  libgo/go/testing/internal/testdeps/deps.go
! 39eef9208cd80357e68f61229111a61a  libgo/go/testing/iotest/example_test.go
  c92087889bddee38d4a41461eefac76d  libgo/go/testing/iotest/logger.go
! 65a5a6a2fe66ee7dc57130369d446d34  libgo/go/testing/iotest/logger_test.go
! 70845be4fb130aebcf56d6a39725203c  libgo/go/testing/iotest/reader.go
! 41cf012ce22f41e95b32bf896e19a065  libgo/go/testing/iotest/reader_test.go
  9217f1912a8069ffc6136a02aeeb2f4b  libgo/go/testing/iotest/writer.go
  550b212707ff9943f9dd0c4c709fc08e  libgo/go/testing/iotest/writer_test.go
  4f73f47e7836d2ab7c80bc4b1d851f6f  libgo/go/testing/match.go
*************** cacbe685a3aecedc1a5826107be94bf7  libgo/
*** 86474,86535 ****
  eeacb58b3d0b63d641138c7bfe44ac78  libgo/go/testing/panic_test.go
  b37e60c8c0fa363df74bbfc444e10e38  libgo/go/testing/quick/quick.go
  e61ef5d6d57ba58f408157c9c14626e2  libgo/go/testing/quick/quick_test.go
! 967ff6b926fb077a58a312088276d6f5  libgo/go/testing/run_example.go
! 8be9f0015491732ab42977afc6140f6e  libgo/go/testing/run_example_js.go
! 6e2ebd7e562028439131edf35b6f3db3  libgo/go/testing/sub_test.go
! e9fc97f1fed92099faab8ee55994f980  libgo/go/testing/testing.go
! 6bce532febdf978d2e44c87336681a34  libgo/go/testing/testing_test.go
  ea889e738285153fa058f4fcdbda499f  libgo/go/text/scanner/example_test.go
  7179b565461e46655db74ffc519528a8  libgo/go/text/scanner/scanner.go
  631bde4f1fe3d7ea07ea8cfff9ace675  libgo/go/text/scanner/scanner_test.go
  610499705fdc72cc6842a53888e534f0  libgo/go/text/tabwriter/example_test.go
  aa9987f61437c585e160b2482b9c4f7f  libgo/go/text/tabwriter/tabwriter.go
! f79a232980197afa51e21a79f2961fcb  libgo/go/text/tabwriter/tabwriter_test.go
! 5716ea43b3e103a6040895a7877c0205  libgo/go/text/template/doc.go
! 40a3ea2ec0be48104f7a5863bcc77c1a  libgo/go/text/template/exec.go
! 41ee934c7297d4c4c26e438bb27f4cd1  libgo/go/text/template/exec_test.go
! 629e936fd700fdfe82293de4e2c649e9  libgo/go/text/template/funcs.go
! dc78b5fed05d2e769e38c7900a19322c  libgo/go/text/template/helper.go
! b252869c9182047e04a09120c453ba53  libgo/go/text/template/multi_test.go
  f3066faeb273231ca51b072c3b55aa4e  libgo/go/text/template/option.go
! cb680ce300e5cfbf681f4524403ce17e  libgo/go/text/template/parse/lex.go
! ddbc9337581fac3a760fe358b8361c6b  libgo/go/text/template/parse/lex_test.go
! 4162d83b5f5837e5c559fbd396db2905  libgo/go/text/template/parse/node.go
! 71526feb2fc6caac586c81b52b412be3  libgo/go/text/template/parse/parse.go
! 9e0bcb64dbb03696508f634b4909c9c7  libgo/go/text/template/parse/parse_test.go
! 2091391562ce4b8324bd3dac2824bb4e  libgo/go/text/template/template.go
  d6b6ff8eb45b5d3c6559c70664f2f9f3  libgo/go/text/template/testdata/file1.tmpl
  30ae547a79cfdc1dc838a5a0d9ed8198  libgo/go/text/template/testdata/file2.tmpl
  3bb3b4e20658955000386362214b8246  libgo/go/text/template/testdata/tmpl1.tmpl
  1fd8ef440f5fd08e0117c3c00500294b  libgo/go/text/template/testdata/tmpl2.tmpl
! 166a70ab24dee0bc3bb361f562b35908  libgo/go/time/example_test.go
  f7096f0422dcb77d03e56eb3fb2f2f12  libgo/go/time/export_android_test.go
! 25bf2adb2e30c72725277640e05dddca  libgo/go/time/export_test.go
! f7ce6fbc026a2c45ce9f89479efd5b7b  libgo/go/time/format.go
! db680dcbb580739fee1a718ca828cdd6  libgo/go/time/format_test.go
! d7e1888f177b024af9524d6b7884221a  libgo/go/time/genzabbrs.go
! c6110914f3a4b3a3bdfcd03195a840fe  libgo/go/time/internal_test.go
  ef4b3752a38e904365f7b901d1a78aa4  libgo/go/time/mono_test.go
! 21635bbf3f637842803cb8e3db4e9ac3  libgo/go/time/sleep.go
! c4f5c2741832245fff1511beed1c9880  libgo/go/time/sleep_test.go
  5dbbfa399e9a3b3f215b5eb60054f52f  libgo/go/time/sys_plan9.go
  383a565b424663f1f701dc1918dbd84b  libgo/go/time/sys_unix.go
  bb0750db9ecbdac55664d532e548111d  libgo/go/time/sys_windows.go
! b6436cc0dd1dccad013ebe6d2dca3e8a  libgo/go/time/tick.go
! fa7f47478f080d2689ec15cdc26902ab  libgo/go/time/tick_test.go
! 4dafc5a222f906b80dc43d54b6351a89  libgo/go/time/time.go
! c67a39be1a415c831cdaf64f8c78dd45  libgo/go/time/time_test.go
! 1a0831fdbd8e52d65e996b38b9b10574  libgo/go/time/zoneinfo.go
  f4b087362ae55fe6e4011d8bf2d16d4f  libgo/go/time/zoneinfo_abbrs_windows.go
  d4a1098abc233868e45ed49030f3f189  libgo/go/time/zoneinfo_android.go
  805c52a6dfd07be8e0d5c805ef8c0180  libgo/go/time/zoneinfo_android_test.go
! fc22380739f9ba9597075d396b4f01b8  libgo/go/time/zoneinfo_ios.go
  d3966960ae0149012d9a7e4ed8e09343  libgo/go/time/zoneinfo_js.go
  3d248aad631a78cbd82f8b2106d19181  libgo/go/time/zoneinfo_plan9.go
! e468ebe513462d1d6ca6947addb2d006  libgo/go/time/zoneinfo_read.go
! fcf52a3f66678c086e4820093c474181  libgo/go/time/zoneinfo_test.go
! 729bbdf0f74430fc35a0b01453fd66f2  libgo/go/time/zoneinfo_unix.go
! 7a7152396cbf0954f24e857050b53781  libgo/go/time/zoneinfo_windows.go
  20462663527bbc31aa3bdf3fba3f978a  libgo/go/unicode/casetables.go
  06fbe90f41e9b74f0bd79e5303d67d2d  libgo/go/unicode/digit.go
  52e66b5dde148ddf6d9b349d93601cfe  libgo/go/unicode/digit_test.go
--- 92553,92621 ----
  eeacb58b3d0b63d641138c7bfe44ac78  libgo/go/testing/panic_test.go
  b37e60c8c0fa363df74bbfc444e10e38  libgo/go/testing/quick/quick.go
  e61ef5d6d57ba58f408157c9c14626e2  libgo/go/testing/quick/quick_test.go
! cb2334b28ff6fd4a8e499b347f2cf117  libgo/go/testing/run_example.go
! 04b8fc3d0cf3e2e842806b59cad9b771  libgo/go/testing/run_example_js.go
! 389c5f9680a0e043230a14b2bae9c925  libgo/go/testing/sub_test.go
! edf3a9bffd08fed186506a2081f194c3  libgo/go/testing/testing.go
! 2079fa0ac2771b4e42372ce837c3647e  libgo/go/testing/testing_test.go
  ea889e738285153fa058f4fcdbda499f  libgo/go/text/scanner/example_test.go
  7179b565461e46655db74ffc519528a8  libgo/go/text/scanner/scanner.go
  631bde4f1fe3d7ea07ea8cfff9ace675  libgo/go/text/scanner/scanner_test.go
  610499705fdc72cc6842a53888e534f0  libgo/go/text/tabwriter/example_test.go
  aa9987f61437c585e160b2482b9c4f7f  libgo/go/text/tabwriter/tabwriter.go
! b3e4ad224d7a34bec609bc60d94cb04f  libgo/go/text/tabwriter/tabwriter_test.go
! be7ddb34046a14629a2f8c7cfe137195  libgo/go/text/template/doc.go
! 9fddc3eae7dfb19d1f0df9e6e9833feb  libgo/go/text/template/exec.go
! 841e0dc80dc57119b1c6572c6f13b3da  libgo/go/text/template/exec_test.go
! 590a3672886d888c744e7b4aba572aa2  libgo/go/text/template/funcs.go
! 1095452082515db1e2fc4995c0b374a5  libgo/go/text/template/helper.go
! bb49a2cfe22b2076a9c734f27d2c2223  libgo/go/text/template/link_test.go
! acc4fc495ad62e71ff415da11fd4395b  libgo/go/text/template/multi_test.go
  f3066faeb273231ca51b072c3b55aa4e  libgo/go/text/template/option.go
! 09ed25db5cbfac498feda9b19fd2e35a  libgo/go/text/template/parse/lex.go
! f79328b24cd8b668fbcad1eaf576ded6  libgo/go/text/template/parse/lex_test.go
! 03c297fa0809aed7d5289fb4b789d601  libgo/go/text/template/parse/node.go
! ed0c695deb8318fe4610d76c9d8134a0  libgo/go/text/template/parse/parse.go
! 6373b602a4dd54bd0b2c844db61fb9f1  libgo/go/text/template/parse/parse_test.go
! 33615261a25336759ebda7b709fe3a7f  libgo/go/text/template/template.go
  d6b6ff8eb45b5d3c6559c70664f2f9f3  libgo/go/text/template/testdata/file1.tmpl
  30ae547a79cfdc1dc838a5a0d9ed8198  libgo/go/text/template/testdata/file2.tmpl
  3bb3b4e20658955000386362214b8246  libgo/go/text/template/testdata/tmpl1.tmpl
  1fd8ef440f5fd08e0117c3c00500294b  libgo/go/text/template/testdata/tmpl2.tmpl
! 1241564f352b0a970bf6f03cbf3bdfe3  libgo/go/time/embed.go
! 98dc1110cba902b063e7117fc0710896  libgo/go/time/example_test.go
  f7096f0422dcb77d03e56eb3fb2f2f12  libgo/go/time/export_android_test.go
! f0955c2a3243409f58ecf9d06fcf05e8  libgo/go/time/export_test.go
! df2da641e4e93b330dcd40b6f7f52f58  libgo/go/time/format.go
! 071a86b16f7ba6d5a49eec775f80f75c  libgo/go/time/format_test.go
! edc12e7feb81eeaab1c0469520cbe20c  libgo/go/time/genzabbrs.go
! 022b234f43fcff2fad04074ad2586051  libgo/go/time/internal_test.go
  ef4b3752a38e904365f7b901d1a78aa4  libgo/go/time/mono_test.go
! a24199f7bf8d885e76de2938718ebf67  libgo/go/time/sleep.go
! 3cacff48ffd28376082e1506cb5b6ecf  libgo/go/time/sleep_test.go
  5dbbfa399e9a3b3f215b5eb60054f52f  libgo/go/time/sys_plan9.go
  383a565b424663f1f701dc1918dbd84b  libgo/go/time/sys_unix.go
  bb0750db9ecbdac55664d532e548111d  libgo/go/time/sys_windows.go
! 6e2f9dfc13f3bce1013fdc6e161dbf82  libgo/go/time/tick.go
! 073f98b6bd3dc779a606718591192f2e  libgo/go/time/tick_test.go
! 74440bb1734555ad44515239f0bd2b56  libgo/go/time/time.go
! 5b1add418f6c1b0d5494acb76ec8454b  libgo/go/time/time_test.go
! d5b4f504e7587118a0baffc912aaaa8d  libgo/go/time/tzdata/generate_zipdata.go
! b7954062d2fdf2b1a331f2820a36e9ec  libgo/go/time/tzdata/tzdata.go
! addd4742f36477388796b827c3ef1f1b  libgo/go/time/tzdata/zipdata.go
! c41a73dd27252057857c3cf40ddbe132  libgo/go/time/tzdata_test.go
! 7f03c102089b8ddacb9694faff8d260c  libgo/go/time/zoneinfo.go
  f4b087362ae55fe6e4011d8bf2d16d4f  libgo/go/time/zoneinfo_abbrs_windows.go
  d4a1098abc233868e45ed49030f3f189  libgo/go/time/zoneinfo_android.go
  805c52a6dfd07be8e0d5c805ef8c0180  libgo/go/time/zoneinfo_android_test.go
! db2c7a203ad7636b97179d3692de5860  libgo/go/time/zoneinfo_ios.go
  d3966960ae0149012d9a7e4ed8e09343  libgo/go/time/zoneinfo_js.go
  3d248aad631a78cbd82f8b2106d19181  libgo/go/time/zoneinfo_plan9.go
! 2231a2331483ab5958ae9cfe3e2d8342  libgo/go/time/zoneinfo_read.go
! bd1ee193fca7fab1978be8b93a84dc15  libgo/go/time/zoneinfo_test.go
! b70de040ef4c02635e7ff454b01bd390  libgo/go/time/zoneinfo_unix.go
! bab64eb6109295bb7c80a9bc3c0fa1d0  libgo/go/time/zoneinfo_unix_test.go
! 38f82cdd53d65ee608b10a62bc5fd5bf  libgo/go/time/zoneinfo_windows.go
  20462663527bbc31aa3bdf3fba3f978a  libgo/go/unicode/casetables.go
  06fbe90f41e9b74f0bd79e5303d67d2d  libgo/go/unicode/digit.go
  52e66b5dde148ddf6d9b349d93601cfe  libgo/go/unicode/digit_test.go
*************** f21fa9794cb8a8f6a8340fd13ebd9029  libgo/
*** 86539,86558 ****
  b3068b0ac809964e0211877cf76f5453  libgo/go/unicode/letter.go
  da9f96e402aa9002e78a487b4951f328  libgo/go/unicode/letter_test.go
  f0a68679656718826d449fde31ed2f98  libgo/go/unicode/script_test.go
! e2da66319c0469ccce064eb70cb41d4d  libgo/go/unicode/tables.go
  02eca89a5d7dac849d7d937649f00c42  libgo/go/unicode/utf16/export_test.go
  38efab74303157974a2309158b6ceb79  libgo/go/unicode/utf16/utf16.go
  8788eacccc9d765d9e1252feca08f02d  libgo/go/unicode/utf16/utf16_test.go
! d493ccc4ea8c9c25684b75eed5cbd10f  libgo/go/unicode/utf8/example_test.go
! 7419cde12efe96db5c6cea0f5d4dcdcd  libgo/go/unicode/utf8/utf8.go
! e6791e86ea3b9040a379e70cab28f60a  libgo/go/unicode/utf8/utf8_test.go
  3105d5a31e583b294d7db2540fb04600  libgo/goarch.sh
  342e21bbfbb708562a0417b169575759  libgo/godeps.sh
! 49225ab4ab03f3ba967319431b498252  libgo/gotool-packages.txt
! 0917488ca32a3380e3be98ffbddd7867  libgo/libgo-packages.txt
  b6c9aececc30fd32355c0415e1b547a5  libgo/libgo.imp
! e531b5cbfaf2cc72baa6218809882480  libgo/match.sh
! 737efbd5eed423c20a0919515a261ad0  libgo/merge.sh
  852a00528844f9946f54e21a8607ba33  libgo/misc/cgo/errors/errors_test.go
  f8e5f71a2d83e0cd5ceb4cc5dedb4232  libgo/misc/cgo/errors/ptr_test.go
  3c0ed980714b44f50b4492eb067bcc17  libgo/misc/cgo/errors/testdata/err1.go
--- 92625,92646 ----
  b3068b0ac809964e0211877cf76f5453  libgo/go/unicode/letter.go
  da9f96e402aa9002e78a487b4951f328  libgo/go/unicode/letter_test.go
  f0a68679656718826d449fde31ed2f98  libgo/go/unicode/script_test.go
! c4d2846cb08f6c5bab32f58c0fa76517  libgo/go/unicode/tables.go
  02eca89a5d7dac849d7d937649f00c42  libgo/go/unicode/utf16/export_test.go
  38efab74303157974a2309158b6ceb79  libgo/go/unicode/utf16/utf16.go
  8788eacccc9d765d9e1252feca08f02d  libgo/go/unicode/utf16/utf16_test.go
! 0463ed5b5c03ba70a9b7ed02c9730b8e  libgo/go/unicode/utf8/example_test.go
! c97eaceb00bddd7fec1d8d4868b2b69a  libgo/go/unicode/utf8/utf8.go
! 126253403a6fd8518387122ed73e1c58  libgo/go/unicode/utf8/utf8_test.go
! cd2324825a10fa6ce8450de56d9b7eb4  libgo/go/vendor/modules.txt
  3105d5a31e583b294d7db2540fb04600  libgo/goarch.sh
  342e21bbfbb708562a0417b169575759  libgo/godeps.sh
! ca0647f4ad6aa1857522b87b141f2097  libgo/gotool-packages.txt
! f75237819f9a3a1efbc8254ec43e8c8a  libgo/libgo-packages.txt
  b6c9aececc30fd32355c0415e1b547a5  libgo/libgo.imp
! cbf6a5fc1d5e643d60d6681bd7d4afcd  libgo/match.sh
! 1050837fa0f5d2a9f07ab6e514186d07  libgo/merge.sh
! 1b2ae4d92dd69e03d324e96ba6e9cc71  libgo/misc/cgo/errors/badsym_test.go
  852a00528844f9946f54e21a8607ba33  libgo/misc/cgo/errors/errors_test.go
  f8e5f71a2d83e0cd5ceb4cc5dedb4232  libgo/misc/cgo/errors/ptr_test.go
  3c0ed980714b44f50b4492eb067bcc17  libgo/misc/cgo/errors/testdata/err1.go
*************** d7e78058738290e2483251e6b97251ba  libgo/
*** 86598,86622 ****
  95e77a31170491326dd8742a0a1ebfb2  libgo/misc/cgo/stdio/testdata/stdio/stdio.go
  eaeb78fda062d986c76134fc2bbf2d51  libgo/misc/cgo/test/backdoor.go
  17244228322762ffa7ecdd8a727a6b71  libgo/misc/cgo/test/buildid_linux.go
! f25ebf99d7317d1d34ba712b0e8e06ac  libgo/misc/cgo/test/callback.go
  49335fbfcbae448f34377e51959082e1  libgo/misc/cgo/test/callback_c.c
  cc7244ffa840bb2bf6f2b383616d28d8  libgo/misc/cgo/test/callback_c_gc.c
  96fff232701fc15784e771f3f3645d0f  libgo/misc/cgo/test/callback_c_gccgo.c
! 1a44aec6808451007b969ba1c05e75b6  libgo/misc/cgo/test/cgo_linux_test.go
  bf38c3690d634d5cd54a6ff63c800406  libgo/misc/cgo/test/cgo_stubs_android_test.go
! c86409876aeedd8c3fda4c9fea553fc3  libgo/misc/cgo/test/cgo_test.go
  20e866126359dbe63b0c97b38410f574  libgo/misc/cgo/test/cgo_thread_lock.go
  d4bf41221286a234cf3efa8b8ca7c73e  libgo/misc/cgo/test/cgo_unix_test.go
! 3ff78676096b9d24fc08907058aeefac  libgo/misc/cgo/test/cthread_unix.c
  f6c5c772dfcb6fe41dbccf8d1456bec3  libgo/misc/cgo/test/cthread_windows.c
! 767ad0e480b1cb0ab25f2eed20304d8f  libgo/misc/cgo/test/issue18146.go
  e7e431ce6e7b5ae73377b4cfc1ad2077  libgo/misc/cgo/test/issue20910.c
  decd112bb307b94c45444d59be7033d2  libgo/misc/cgo/test/issue21897.go
  592d353ddb7a12a9cc7479b353808d0e  libgo/misc/cgo/test/issue21897b.go
  a827b10ecb1480b6f992149979a87a5a  libgo/misc/cgo/test/issue31891.c
! af01f080b5c096680baf6acef3650bf2  libgo/misc/cgo/test/issue4029.c
! 7ca842f63341e09c6adb6066676895d8  libgo/misc/cgo/test/issue4029.go
! 5b114275cb34cd913c772727d2803b40  libgo/misc/cgo/test/issue4029w.go
  6dbc3bfd1740a9d7d57bd1857cf29233  libgo/misc/cgo/test/issue4273.c
  8e53c0246b8bd05729dd04f7d7466b7e  libgo/misc/cgo/test/issue4273b.c
  3a001087af9f2ae09d8dc39dfac7655a  libgo/misc/cgo/test/issue4339.c
--- 92686,92712 ----
  95e77a31170491326dd8742a0a1ebfb2  libgo/misc/cgo/stdio/testdata/stdio/stdio.go
  eaeb78fda062d986c76134fc2bbf2d51  libgo/misc/cgo/test/backdoor.go
  17244228322762ffa7ecdd8a727a6b71  libgo/misc/cgo/test/buildid_linux.go
! 109e33aac9c7e3b38805dffed3eba1aa  libgo/misc/cgo/test/callback.go
  49335fbfcbae448f34377e51959082e1  libgo/misc/cgo/test/callback_c.c
  cc7244ffa840bb2bf6f2b383616d28d8  libgo/misc/cgo/test/callback_c_gc.c
  96fff232701fc15784e771f3f3645d0f  libgo/misc/cgo/test/callback_c_gccgo.c
! 32b3e7610c58a4a743889f2af83879e4  libgo/misc/cgo/test/cgo_linux_test.go
  bf38c3690d634d5cd54a6ff63c800406  libgo/misc/cgo/test/cgo_stubs_android_test.go
! abc5434949a48aca01d670c22dc17fef  libgo/misc/cgo/test/cgo_test.go
  20e866126359dbe63b0c97b38410f574  libgo/misc/cgo/test/cgo_thread_lock.go
  d4bf41221286a234cf3efa8b8ca7c73e  libgo/misc/cgo/test/cgo_unix_test.go
! ab5d420b8abd087ed27f929d43428f42  libgo/misc/cgo/test/cthread_unix.c
  f6c5c772dfcb6fe41dbccf8d1456bec3  libgo/misc/cgo/test/cthread_windows.c
! eb5f6bff3e1219da1650530e52a26ca7  libgo/misc/cgo/test/issue1435.go
! f00698e7b7eaff04e57b27283e837485  libgo/misc/cgo/test/issue18146.go
  e7e431ce6e7b5ae73377b4cfc1ad2077  libgo/misc/cgo/test/issue20910.c
  decd112bb307b94c45444d59be7033d2  libgo/misc/cgo/test/issue21897.go
  592d353ddb7a12a9cc7479b353808d0e  libgo/misc/cgo/test/issue21897b.go
  a827b10ecb1480b6f992149979a87a5a  libgo/misc/cgo/test/issue31891.c
! 4f3ef598cb35b3a4309daa3fc866aa5d  libgo/misc/cgo/test/issue4029.c
! 991a203bc90bc84523eb8c54a83676ac  libgo/misc/cgo/test/issue4029.go
! 1dfbf93a9df8b975fdfda7b97162d555  libgo/misc/cgo/test/issue4029w.go
! 2d3cd1dcdf8b33c48b60726ea737355e  libgo/misc/cgo/test/issue42495.go
  6dbc3bfd1740a9d7d57bd1857cf29233  libgo/misc/cgo/test/issue4273.c
  8e53c0246b8bd05729dd04f7d7466b7e  libgo/misc/cgo/test/issue4273b.c
  3a001087af9f2ae09d8dc39dfac7655a  libgo/misc/cgo/test/issue4339.c
*************** e679d0cc00ca8503a5adb8cfafdcba58  libgo/
*** 86637,86648 ****
  91e7f56bc81da2c233ccc0d0bad0d775  libgo/misc/cgo/test/issue8694.go
  8d3ea20893a9489ef5be4dcec9547f60  libgo/misc/cgo/test/issue8811.c
  a09e5b7ae79a928e91712fb26b34533d  libgo/misc/cgo/test/overlaydir_test.go
! a0f4cb4682a764484520e15430233cfd  libgo/misc/cgo/test/pkg_test.go
  23796df8a6c6ed3aad756f5ad7d647e4  libgo/misc/cgo/test/setgid_linux.go
! b1bca1425c624c848401cd28445f80d0  libgo/misc/cgo/test/sigaltstack.go
  be7ad618980be7ceb8d08800414925b0  libgo/misc/cgo/test/sigprocmask.c
  c0c2c867016085d2c729c08d37bb7021  libgo/misc/cgo/test/sigprocmask.go
! cacc20d6d34005d9b7aad6386e452560  libgo/misc/cgo/test/test.go
  4f20ccdc7c1335d68b283d5c3836dc77  libgo/misc/cgo/test/test_unix.go
  b51608fa946e2a41effc284dddcd3b56  libgo/misc/cgo/test/test_windows.go
  bb6d37eb8e88211ceed1e0ad1d37b56a  libgo/misc/cgo/test/testdata/cgo_linux_test.go
--- 92727,92738 ----
  91e7f56bc81da2c233ccc0d0bad0d775  libgo/misc/cgo/test/issue8694.go
  8d3ea20893a9489ef5be4dcec9547f60  libgo/misc/cgo/test/issue8811.c
  a09e5b7ae79a928e91712fb26b34533d  libgo/misc/cgo/test/overlaydir_test.go
! fbac7f6d6e6b4d5f80cec295bf3d4632  libgo/misc/cgo/test/pkg_test.go
  23796df8a6c6ed3aad756f5ad7d647e4  libgo/misc/cgo/test/setgid_linux.go
! 8edbe29e0d6dfe92a50c5b6910677634  libgo/misc/cgo/test/sigaltstack.go
  be7ad618980be7ceb8d08800414925b0  libgo/misc/cgo/test/sigprocmask.c
  c0c2c867016085d2c729c08d37bb7021  libgo/misc/cgo/test/sigprocmask.go
! ef0e47a19d2aa48bcca2fa860f520f31  libgo/misc/cgo/test/test.go
  4f20ccdc7c1335d68b283d5c3836dc77  libgo/misc/cgo/test/test_unix.go
  b51608fa946e2a41effc284dddcd3b56  libgo/misc/cgo/test/test_windows.go
  bb6d37eb8e88211ceed1e0ad1d37b56a  libgo/misc/cgo/test/testdata/cgo_linux_test.go
*************** d462f8156e422e3c8686897c976b4f16  libgo/
*** 86671,86678 ****
  f5112a0152c3588e360b1500226053ad  libgo/misc/cgo/test/testdata/issue26743.go
  a674723018a17ce84a3f95d1b46da975  libgo/misc/cgo/test/testdata/issue26743/a.go
  df878f280b9fecc8c91827fb4a21a33d  libgo/misc/cgo/test/testdata/issue26743/b.go
! bf4a1f94d677a687fa70e11e4705f77d  libgo/misc/cgo/test/testdata/issue27054/egl.h
! 030feb6c672475abae219cdd0783160c  libgo/misc/cgo/test/testdata/issue27054/test27054.go
  4ae3f28eecbb01db46c14f1ed668b19d  libgo/misc/cgo/test/testdata/issue27340.go
  c02c055410692b0c72a2b796281ce920  libgo/misc/cgo/test/testdata/issue27340/a.go
  e58b777c193541eb1d44463e8f040445  libgo/misc/cgo/test/testdata/issue29563.go
--- 92761,92768 ----
  f5112a0152c3588e360b1500226053ad  libgo/misc/cgo/test/testdata/issue26743.go
  a674723018a17ce84a3f95d1b46da975  libgo/misc/cgo/test/testdata/issue26743/a.go
  df878f280b9fecc8c91827fb4a21a33d  libgo/misc/cgo/test/testdata/issue26743/b.go
! 4ed13f921dae0730843b93ac11fcefd0  libgo/misc/cgo/test/testdata/issue27054/egl.h
! 265d13478c18008288b4fdcbbca79125  libgo/misc/cgo/test/testdata/issue27054/test27054.go
  4ae3f28eecbb01db46c14f1ed668b19d  libgo/misc/cgo/test/testdata/issue27340.go
  c02c055410692b0c72a2b796281ce920  libgo/misc/cgo/test/testdata/issue27340/a.go
  e58b777c193541eb1d44463e8f040445  libgo/misc/cgo/test/testdata/issue29563.go
*************** c18a9cf261a0d3ce21d3b8c59f67f66b  libgo/
*** 86682,86687 ****
--- 92772,92779 ----
  57ba5633e07ac18467a0ec567fe92cd8  libgo/misc/cgo/test/testdata/issue30527.go
  0986f47df500bcfb8eb7f2321922a6f6  libgo/misc/cgo/test/testdata/issue30527/a.go
  0f72ebb2ea5347c250f3ea0150eda90c  libgo/misc/cgo/test/testdata/issue30527/b.go
+ ba8a1f1f623813b97df2f3ab58c18d70  libgo/misc/cgo/test/testdata/issue41761.go
+ ff8308c36e57c40821589281fecb683a  libgo/misc/cgo/test/testdata/issue41761a/a.go
  b7d412debb2abf957799934c77b7cdb6  libgo/misc/cgo/test/testdata/issue8756.go
  78befbe35ef08e8c4ba0c5930192445a  libgo/misc/cgo/test/testdata/issue8756/issue8756.go
  b9aa09f798b3bc83ce51e20bd810bade  libgo/misc/cgo/test/testdata/issue8828.go
*************** d6a563e1a42c2dbf68308bca23f858ad  libgo/
*** 86696,86701 ****
--- 92788,92794 ----
  03860280564ecb90d3c1169d81455921  libgo/misc/cgo/test/testdata/issue9400/asm_mips64x.s
  3f8483786bc876c80c1d1b4df2f0c538  libgo/misc/cgo/test/testdata/issue9400/asm_mipsx.s
  29533c67786f80a6b2368a5ec9e5fd7a  libgo/misc/cgo/test/testdata/issue9400/asm_ppc64x.s
+ 3d720bc896800033908328ff962d9c04  libgo/misc/cgo/test/testdata/issue9400/asm_riscv64.s
  88bfbd9927e0341a4ad2aa3d40de8c60  libgo/misc/cgo/test/testdata/issue9400/asm_s390x.s
  050b0c9810cc2ac7620223802714318c  libgo/misc/cgo/test/testdata/issue9400/gccgo.go
  4ce7229937fa38e883e74683001df70a  libgo/misc/cgo/test/testdata/issue9400/stubs.go
*************** b20ddef474a1c4b0ebee9c8627deb41c  libgo/
*** 86704,86712 ****
  f75c8000816f3eac1bceebafd1e8ffa2  libgo/misc/cgo/test/testdata/issue9510a/a.go
  83bbcdcb1023f0de0807dbb2d7742f09  libgo/misc/cgo/test/testdata/issue9510b/b.go
  269d28ce1dda5d7d67560dd21997a3df  libgo/misc/cgo/test/testdata/test26213.go
! 3f9cf9c6290b3983e82dfe29232d8856  libgo/misc/cgo/test/testx.go
  e93af13b9ec72b3ff0a20994cef2d38c  libgo/misc/cgo/testasan/main.go
! 381954d812e323ea75f173148eb351b7  libgo/misc/cgo/testcarchive/carchive_test.go
  f8d551b0a2fd42e8270f9527e25e56ea  libgo/misc/cgo/testcarchive/overlaydir_test.go
  587041295d36af14ec71daf2b3bb9795  libgo/misc/cgo/testcarchive/testdata/libgo/libgo.go
  53753bff72eede1a577ac364c9cb22ed  libgo/misc/cgo/testcarchive/testdata/libgo2/libgo2.go
--- 92797,92805 ----
  f75c8000816f3eac1bceebafd1e8ffa2  libgo/misc/cgo/test/testdata/issue9510a/a.go
  83bbcdcb1023f0de0807dbb2d7742f09  libgo/misc/cgo/test/testdata/issue9510b/b.go
  269d28ce1dda5d7d67560dd21997a3df  libgo/misc/cgo/test/testdata/test26213.go
! 2521342c991cfc5080d0e2d2cd5111a2  libgo/misc/cgo/test/testx.go
  e93af13b9ec72b3ff0a20994cef2d38c  libgo/misc/cgo/testasan/main.go
! d247ed383ef84bdb92f2d5738545d8a2  libgo/misc/cgo/testcarchive/carchive_test.go
  f8d551b0a2fd42e8270f9527e25e56ea  libgo/misc/cgo/testcarchive/overlaydir_test.go
  587041295d36af14ec71daf2b3bb9795  libgo/misc/cgo/testcarchive/testdata/libgo/libgo.go
  53753bff72eede1a577ac364c9cb22ed  libgo/misc/cgo/testcarchive/testdata/libgo2/libgo2.go
*************** d8e523dbb07ee8991068ef6886d2a8cc  libgo/
*** 86721,86738 ****
  2d616e7b1c6bfba4b64789f71941b58e  libgo/misc/cgo/testcarchive/testdata/main5.c
  cfec2f087e0c44a1af6688aa685fc36d  libgo/misc/cgo/testcarchive/testdata/main6.c
  a4d768923d14ea98ac9811fc9a117032  libgo/misc/cgo/testcarchive/testdata/main7.c
! 0eb24473b6225dad1c4748ebd7a1a814  libgo/misc/cgo/testcarchive/testdata/main_unix.c
  10233f35d78e18db246cf0fdf68d875e  libgo/misc/cgo/testcarchive/testdata/main_windows.c
  0b9a14f8a2750604ebb0ca8e0541cc2e  libgo/misc/cgo/testcarchive/testdata/p/p.go
! 8ff0bf4df2e0517a541a308a914f19b8  libgo/misc/cgo/testcshared/cshared_test.go
  0896e0a75c112ff26beb911cdfca0ca3  libgo/misc/cgo/testcshared/overlaydir_test.go
  d711df9a3e8d93ab912a04bc6f1d0fb0  libgo/misc/cgo/testcshared/testdata/go2c2go/go/shlib.go
  99281ff3a94472a7031e180cc4af7757  libgo/misc/cgo/testcshared/testdata/go2c2go/m1/c.c
  7844ecdc921b6cd0c7667af6471549b2  libgo/misc/cgo/testcshared/testdata/go2c2go/m1/main.go
  f3ce4a9e9f9308298ffe8d43a0cd08b7  libgo/misc/cgo/testcshared/testdata/go2c2go/m2/main.go
  52bdff20a9d30e5166dd3c7693c8e667  libgo/misc/cgo/testcshared/testdata/libgo/libgo.go
! 9df4c9e28470325f133463d949f99b9c  libgo/misc/cgo/testcshared/testdata/libgo2/dup2.go
! e90a49f566d47347ff7aa3e14bec0e64  libgo/misc/cgo/testcshared/testdata/libgo2/dup3.go
  05d2c95bd1c4bbf7589a26dccb8f2362  libgo/misc/cgo/testcshared/testdata/libgo2/libgo2.go
  e3f3c15f046056f657dd4a02626be4d8  libgo/misc/cgo/testcshared/testdata/libgo4/libgo4.go
  6abb6f1115cbda57e3777a32809ac7cb  libgo/misc/cgo/testcshared/testdata/libgo5/libgo5.go
--- 92814,92831 ----
  2d616e7b1c6bfba4b64789f71941b58e  libgo/misc/cgo/testcarchive/testdata/main5.c
  cfec2f087e0c44a1af6688aa685fc36d  libgo/misc/cgo/testcarchive/testdata/main6.c
  a4d768923d14ea98ac9811fc9a117032  libgo/misc/cgo/testcarchive/testdata/main7.c
! 7c6ebec01d4524b0f65222e6cfb2ef97  libgo/misc/cgo/testcarchive/testdata/main_unix.c
  10233f35d78e18db246cf0fdf68d875e  libgo/misc/cgo/testcarchive/testdata/main_windows.c
  0b9a14f8a2750604ebb0ca8e0541cc2e  libgo/misc/cgo/testcarchive/testdata/p/p.go
! c7ab3949a10b313bbbc2af2509e516ca  libgo/misc/cgo/testcshared/cshared_test.go
  0896e0a75c112ff26beb911cdfca0ca3  libgo/misc/cgo/testcshared/overlaydir_test.go
  d711df9a3e8d93ab912a04bc6f1d0fb0  libgo/misc/cgo/testcshared/testdata/go2c2go/go/shlib.go
  99281ff3a94472a7031e180cc4af7757  libgo/misc/cgo/testcshared/testdata/go2c2go/m1/c.c
  7844ecdc921b6cd0c7667af6471549b2  libgo/misc/cgo/testcshared/testdata/go2c2go/m1/main.go
  f3ce4a9e9f9308298ffe8d43a0cd08b7  libgo/misc/cgo/testcshared/testdata/go2c2go/m2/main.go
  52bdff20a9d30e5166dd3c7693c8e667  libgo/misc/cgo/testcshared/testdata/libgo/libgo.go
! 125f686b2903a5d5a5386bc188485e6b  libgo/misc/cgo/testcshared/testdata/libgo2/dup2.go
! 85236243464ab5d7e04737e83bbfeca4  libgo/misc/cgo/testcshared/testdata/libgo2/dup3.go
  05d2c95bd1c4bbf7589a26dccb8f2362  libgo/misc/cgo/testcshared/testdata/libgo2/libgo2.go
  e3f3c15f046056f657dd4a02626be4d8  libgo/misc/cgo/testcshared/testdata/libgo4/libgo4.go
  6abb6f1115cbda57e3777a32809ac7cb  libgo/misc/cgo/testcshared/testdata/libgo5/libgo5.go
*************** e3f3c15f046056f657dd4a02626be4d8  libgo/
*** 86744,86759 ****
  11ac3b972b66a590472e34779065f63e  libgo/misc/cgo/testcshared/testdata/main5.c
  2b5b7e1e86b6eef671d58159c4d18745  libgo/misc/cgo/testcshared/testdata/p/p.go
  c7ae56cd405daae1108c6808d22058a7  libgo/misc/cgo/testgodefs/testdata/anonunion.go
  fb75da8705701f3da6e2ec86473c4c17  libgo/misc/cgo/testgodefs/testdata/fieldtypedef.go
  099ffe6a03a1df61483e28865698f4c1  libgo/misc/cgo/testgodefs/testdata/issue37479.go
  e0a1c1a867c2e93bd63c19d70dda4256  libgo/misc/cgo/testgodefs/testdata/issue37621.go
  db2bc8bd45ed894b976b9475a5becabb  libgo/misc/cgo/testgodefs/testdata/issue8478.go
! c92e9a5c1166376dcd4c00a44beef40c  libgo/misc/cgo/testgodefs/testdata/main.go
! 8694b5f26c9a945fa98fa41b49ffdb66  libgo/misc/cgo/testgodefs/testgodefs_test.go
  b3330d10bd88d7aad002abd770127440  libgo/misc/cgo/testplugin/altpath/testdata/common/common.go
  f52770aca0b2057488145d14f2b05df5  libgo/misc/cgo/testplugin/altpath/testdata/plugin-mismatch/main.go
  bd3ef64f7b22e8989fa8c22242e28170  libgo/misc/cgo/testplugin/overlaydir_test.go
! 0f839ae1d939d0d4de2ae0b9760b7c57  libgo/misc/cgo/testplugin/plugin_test.go
  77087613c7c8ef8378399fb25995bd87  libgo/misc/cgo/testplugin/testdata/checkdwarf/main.go
  4494c6c69234e18bd292355275abb48f  libgo/misc/cgo/testplugin/testdata/common/common.go
  c7f56577da69e7e969cde246d407eeb0  libgo/misc/cgo/testplugin/testdata/host/host.go
--- 92837,92855 ----
  11ac3b972b66a590472e34779065f63e  libgo/misc/cgo/testcshared/testdata/main5.c
  2b5b7e1e86b6eef671d58159c4d18745  libgo/misc/cgo/testcshared/testdata/p/p.go
  c7ae56cd405daae1108c6808d22058a7  libgo/misc/cgo/testgodefs/testdata/anonunion.go
+ bd0b972f0bdff9120eaeaf431b166056  libgo/misc/cgo/testgodefs/testdata/bitfields.go
  fb75da8705701f3da6e2ec86473c4c17  libgo/misc/cgo/testgodefs/testdata/fieldtypedef.go
  099ffe6a03a1df61483e28865698f4c1  libgo/misc/cgo/testgodefs/testdata/issue37479.go
  e0a1c1a867c2e93bd63c19d70dda4256  libgo/misc/cgo/testgodefs/testdata/issue37621.go
+ 51234920db243fdb579717c77d539dcb  libgo/misc/cgo/testgodefs/testdata/issue38649.go
+ 232f33165bc0ed8f55560d412cb86ced  libgo/misc/cgo/testgodefs/testdata/issue39534.go
  db2bc8bd45ed894b976b9475a5becabb  libgo/misc/cgo/testgodefs/testdata/issue8478.go
! 7ff732b2b8ce548d1c923632aeb06d4c  libgo/misc/cgo/testgodefs/testdata/main.go
! 1bbe5a7986a1331a8c536d622c6de4b6  libgo/misc/cgo/testgodefs/testgodefs_test.go
  b3330d10bd88d7aad002abd770127440  libgo/misc/cgo/testplugin/altpath/testdata/common/common.go
  f52770aca0b2057488145d14f2b05df5  libgo/misc/cgo/testplugin/altpath/testdata/plugin-mismatch/main.go
  bd3ef64f7b22e8989fa8c22242e28170  libgo/misc/cgo/testplugin/overlaydir_test.go
! 5665c37633bd03209ca5ab8cd0a482b6  libgo/misc/cgo/testplugin/plugin_test.go
  77087613c7c8ef8378399fb25995bd87  libgo/misc/cgo/testplugin/testdata/checkdwarf/main.go
  4494c6c69234e18bd292355275abb48f  libgo/misc/cgo/testplugin/testdata/common/common.go
  c7f56577da69e7e969cde246d407eeb0  libgo/misc/cgo/testplugin/testdata/host/host.go
*************** f735b88214bb0d7314efc4176262991e  libgo/
*** 86782,86787 ****
--- 92878,92892 ----
  e333919bef801e9adcc46db19680d3b9  libgo/misc/cgo/testplugin/testdata/issue25756/plugin/c-life.c
  1e283c4f53fb40cc1f1c4972c5b223b2  libgo/misc/cgo/testplugin/testdata/issue25756/plugin/life.go
  dfdc119418aeb62974ddc5dbb70ecb78  libgo/misc/cgo/testplugin/testdata/issue25756/plugin/life.h
+ 10ba635351f56e9e11c8c468bb6712d2  libgo/misc/cgo/testplugin/testdata/issue44956/base/base.go
+ 6223d3bc39e5353a1ee0d86dfaa41708  libgo/misc/cgo/testplugin/testdata/issue44956/main.go
+ ef6e6dcc03cbd7f5dd7f6e1331843f52  libgo/misc/cgo/testplugin/testdata/issue44956/plugin1.go
+ b2ebd0a0623c71002f67de62c61753e9  libgo/misc/cgo/testplugin/testdata/issue44956/plugin2.go
+ b11da600e0889c4fe57d2895bf8c839d  libgo/misc/cgo/testplugin/testdata/method/main.go
+ e75122fe9fccf43cf8dfc77fca461787  libgo/misc/cgo/testplugin/testdata/method/plugin.go
+ def44028fe231c2547cb3078694ee0a8  libgo/misc/cgo/testplugin/testdata/method2/main.go
+ 30024686784a5b19bd8d28987c78e101  libgo/misc/cgo/testplugin/testdata/method2/p/p.go
+ 5cefa1cd5e491227f1ed44d1fe101e9b  libgo/misc/cgo/testplugin/testdata/method2/plugin.go
  6631548e13c55dc48c06670d1738ea9f  libgo/misc/cgo/testplugin/testdata/plugin1/plugin1.go
  6adce074fca2e8a6d10a970e7c0d7c21  libgo/misc/cgo/testplugin/testdata/plugin2/plugin2.go
  38a354fcc57c1a4a50ea408a2077751b  libgo/misc/cgo/testplugin/testdata/sub/plugin1/plugin1.go
*************** dfdc119418aeb62974ddc5dbb70ecb78  libgo/
*** 86789,86795 ****
  16caee69133d198a6300aa09ce4a96c2  libgo/misc/cgo/testplugin/testdata/unnamed2/main.go
  5cd59d5d24da9c0261c0dc8d8d5dda07  libgo/misc/cgo/testsanitizers/cc_test.go
  cc2b8ba11008ea6a498e7b00974159f6  libgo/misc/cgo/testsanitizers/cshared_test.go
! c7a7e7d6ecf9221539dc77c8ad700e2a  libgo/misc/cgo/testsanitizers/msan_test.go
  306ad24dba4a960089277ca997dfa740  libgo/misc/cgo/testsanitizers/testdata/msan.go
  7f1cda8c94eef92c16f09c3c966b14e5  libgo/misc/cgo/testsanitizers/testdata/msan2.go
  148f1af88cd5cba489c7cade511966a8  libgo/misc/cgo/testsanitizers/testdata/msan2_cmsan.go
--- 92894,92900 ----
  16caee69133d198a6300aa09ce4a96c2  libgo/misc/cgo/testplugin/testdata/unnamed2/main.go
  5cd59d5d24da9c0261c0dc8d8d5dda07  libgo/misc/cgo/testsanitizers/cc_test.go
  cc2b8ba11008ea6a498e7b00974159f6  libgo/misc/cgo/testsanitizers/cshared_test.go
! b24770c8d41ed44fcd75995b2efa8e38  libgo/misc/cgo/testsanitizers/msan_test.go
  306ad24dba4a960089277ca997dfa740  libgo/misc/cgo/testsanitizers/testdata/msan.go
  7f1cda8c94eef92c16f09c3c966b14e5  libgo/misc/cgo/testsanitizers/testdata/msan2.go
  148f1af88cd5cba489c7cade511966a8  libgo/misc/cgo/testsanitizers/testdata/msan2_cmsan.go
*************** c7a7e7d6ecf9221539dc77c8ad700e2a  libgo/
*** 86797,86802 ****
--- 92902,92908 ----
  d5094826cb76b870851b25cb34f068ce  libgo/misc/cgo/testsanitizers/testdata/msan4.go
  7b8ba99361c5f738ff8c95b826b59047  libgo/misc/cgo/testsanitizers/testdata/msan5.go
  6251fa837e5b9e01ac77578c4dd2eb57  libgo/misc/cgo/testsanitizers/testdata/msan6.go
+ b9c17c27540f00dcc1aedd0e2498998c  libgo/misc/cgo/testsanitizers/testdata/msan7.go
  bbfca19f56ecd3397f1ccda5daf5b156  libgo/misc/cgo/testsanitizers/testdata/msan_fail.go
  62246d176148e932140dbc1f7d209594  libgo/misc/cgo/testsanitizers/testdata/msan_shared.go
  9ad1ebeec513d9831beffde820167bdc  libgo/misc/cgo/testsanitizers/testdata/tsan.go
*************** f5081bc39552f3e27dca3536687ebf54  libgo/
*** 86814,86820 ****
  b3939da3e573bc742d313c4c766f5677  libgo/misc/cgo/testsanitizers/testdata/tsan_shared.go
  32afff6a513b574ad17963c3c3c2adac  libgo/misc/cgo/testsanitizers/tsan_test.go
  6e7cf64dcc5fd620ee90f312670672b2  libgo/misc/cgo/testshared/overlaydir_test.go
! 6adcec0ff3420902ef1518d08524599f  libgo/misc/cgo/testshared/shared_test.go
  c8c244c463dafa52f306582ef7f534a2  libgo/misc/cgo/testshared/testdata/dep2/dep2.go
  e8933585d210efc08ffd3e3df56062bb  libgo/misc/cgo/testshared/testdata/dep3/dep3.go
  7540284a79ae7e46ed86d02bcf6175a1  libgo/misc/cgo/testshared/testdata/depBase/asm.s
--- 92920,92926 ----
  b3939da3e573bc742d313c4c766f5677  libgo/misc/cgo/testsanitizers/testdata/tsan_shared.go
  32afff6a513b574ad17963c3c3c2adac  libgo/misc/cgo/testsanitizers/tsan_test.go
  6e7cf64dcc5fd620ee90f312670672b2  libgo/misc/cgo/testshared/overlaydir_test.go
! 9dfaedb1a4891949044af0e938cb6360  libgo/misc/cgo/testshared/shared_test.go
  c8c244c463dafa52f306582ef7f534a2  libgo/misc/cgo/testshared/testdata/dep2/dep2.go
  e8933585d210efc08ffd3e3df56062bb  libgo/misc/cgo/testshared/testdata/dep3/dep3.go
  7540284a79ae7e46ed86d02bcf6175a1  libgo/misc/cgo/testshared/testdata/depBase/asm.s
*************** f018e673324a605d87d1f3efddac5b11  libgo/
*** 86827,86832 ****
--- 92933,92940 ----
  415cbba0145eb150af5e4ae50252dda9  libgo/misc/cgo/testshared/testdata/exe3/exe3.go
  26be48312516a0ce1cd441879559a7aa  libgo/misc/cgo/testshared/testdata/execgo/exe.go
  395ab0e62085bea9d0e920bf752aef51  libgo/misc/cgo/testshared/testdata/explicit/explicit.go
+ ff82640564a38cb8a58974e7b086a5bb  libgo/misc/cgo/testshared/testdata/gcdata/main/main.go
+ c57d732074281b066dbfb27344f06096  libgo/misc/cgo/testshared/testdata/gcdata/p/p.go
  c677343b134a28719f8dd5ec9ec424c9  libgo/misc/cgo/testshared/testdata/global/main.go
  a575b075bcce14e1d7279bdb6508ba06  libgo/misc/cgo/testshared/testdata/globallib/global.go
  8bdaacd51a4d694d26b0766677596f6c  libgo/misc/cgo/testshared/testdata/iface/main.go
*************** a453ecb62218416359af3cdf05e6a098  libgo/
*** 86838,86848 ****
  e81d61c56eedf62529c78e9bfffba1c8  libgo/misc/cgo/testshared/testdata/issue25065/a.go
  93ac26bb81b1944a061bf8f97db616c0  libgo/misc/cgo/testshared/testdata/issue30768/issue30768lib/lib.go
  e5cecd405b45869e5965650fcab5b134  libgo/misc/cgo/testshared/testdata/issue30768/x_test.go
  aeab150469a79abc75a5def987bebe73  libgo/misc/cgo/testshared/testdata/trivial/trivial.go
  d07e34b8576e3653d7b109bdb8d8ce57  libgo/misc/cgo/testsigfwd/main.go
  9b32239b5572c937f10ecdabed00c9f8  libgo/misc/cgo/testso/noso_test.go
  0f7eff7658a5d95930e817fcd0c1f75b  libgo/misc/cgo/testso/overlaydir_test.go
! d0f43af54778b8232dbf19f3c78cbb0f  libgo/misc/cgo/testso/so_test.go
  476b5d0c49c5f4c36f12ad08f5ef1bc4  libgo/misc/cgo/testso/testdata/cgoso.c
  2a69ca98eb03a290b2ec09f90e3dc246  libgo/misc/cgo/testso/testdata/cgoso.go
  6ad786311efe9c3dac415f5cbf696b41  libgo/misc/cgo/testso/testdata/cgoso_c.c
--- 92946,92961 ----
  e81d61c56eedf62529c78e9bfffba1c8  libgo/misc/cgo/testshared/testdata/issue25065/a.go
  93ac26bb81b1944a061bf8f97db616c0  libgo/misc/cgo/testshared/testdata/issue30768/issue30768lib/lib.go
  e5cecd405b45869e5965650fcab5b134  libgo/misc/cgo/testshared/testdata/issue30768/x_test.go
+ 962c265ad2dd9a2895ee9b5111d89d5e  libgo/misc/cgo/testshared/testdata/issue39777/a/a.go
+ bda05a0352aefb90f231db36d77ae557  libgo/misc/cgo/testshared/testdata/issue39777/b/b.go
+ 2f61d19894f6e01c33bf61d2066fd695  libgo/misc/cgo/testshared/testdata/issue44031/a/a.go
+ 1724b6ddc0c6c417eff07d5e22925056  libgo/misc/cgo/testshared/testdata/issue44031/b/b.go
+ 1f4efd722c821a92248db6e0448d196d  libgo/misc/cgo/testshared/testdata/issue44031/main/main.go
  aeab150469a79abc75a5def987bebe73  libgo/misc/cgo/testshared/testdata/trivial/trivial.go
  d07e34b8576e3653d7b109bdb8d8ce57  libgo/misc/cgo/testsigfwd/main.go
  9b32239b5572c937f10ecdabed00c9f8  libgo/misc/cgo/testso/noso_test.go
  0f7eff7658a5d95930e817fcd0c1f75b  libgo/misc/cgo/testso/overlaydir_test.go
! 661581c23e91b8218c337957150c6533  libgo/misc/cgo/testso/so_test.go
  476b5d0c49c5f4c36f12ad08f5ef1bc4  libgo/misc/cgo/testso/testdata/cgoso.c
  2a69ca98eb03a290b2ec09f90e3dc246  libgo/misc/cgo/testso/testdata/cgoso.go
  6ad786311efe9c3dac415f5cbf696b41  libgo/misc/cgo/testso/testdata/cgoso_c.c
*************** d0f43af54778b8232dbf19f3c78cbb0f  libgo/
*** 86850,86856 ****
  0c93bb23c01933294ee6dc5d7dc2639a  libgo/misc/cgo/testso/testdata/main.go
  9b32239b5572c937f10ecdabed00c9f8  libgo/misc/cgo/testsovar/noso_test.go
  0f7eff7658a5d95930e817fcd0c1f75b  libgo/misc/cgo/testsovar/overlaydir_test.go
! d0f43af54778b8232dbf19f3c78cbb0f  libgo/misc/cgo/testsovar/so_test.go
  f1fdc9ddbd81397c9765fe70c1a643a0  libgo/misc/cgo/testsovar/testdata/cgoso.go
  d5161f9796e597a2feaef3607564562a  libgo/misc/cgo/testsovar/testdata/cgoso_c.c
  8911a6ef43f6b3dc013db9ac307919dd  libgo/misc/cgo/testsovar/testdata/cgoso_c.h
--- 92963,92969 ----
  0c93bb23c01933294ee6dc5d7dc2639a  libgo/misc/cgo/testso/testdata/main.go
  9b32239b5572c937f10ecdabed00c9f8  libgo/misc/cgo/testsovar/noso_test.go
  0f7eff7658a5d95930e817fcd0c1f75b  libgo/misc/cgo/testsovar/overlaydir_test.go
! 661581c23e91b8218c337957150c6533  libgo/misc/cgo/testsovar/so_test.go
  f1fdc9ddbd81397c9765fe70c1a643a0  libgo/misc/cgo/testsovar/testdata/cgoso.go
  d5161f9796e597a2feaef3607564562a  libgo/misc/cgo/testsovar/testdata/cgoso_c.c
  8911a6ef43f6b3dc013db9ac307919dd  libgo/misc/cgo/testsovar/testdata/cgoso_c.h
*************** d5161f9796e597a2feaef3607564562a  libgo/
*** 86858,86867 ****
  fb40fc675164613c2ce0361a86ebd5d0  libgo/misc/cgo/testtls/tls.go
  377645daa8bde69ae6669dcc00a689ff  libgo/misc/cgo/testtls/tls_test.go
  696f9519af1fee77682869bb7037ecaf  libgo/misc/cgo/testtls/tls_unix.c
! 0c48e13e5b5659cb62bc4ea90934535e  libgo/mkrsysinfo.sh
! feddf0dba77e70c4357c19a845cc6a06  libgo/mkruntimeinc.sh
  81b8b042300eee47fae42dae3d92cf4e  libgo/mksigtab.sh
! da2c80f4aa1b2005fa4a040a0687f5d6  libgo/mksysinfo.sh
  9c66bb618ec9c46d7e7dcadd04faf52b  libgo/mvifdiff.sh
  828897ee2e9950dc2b36e98b3f4e1f77  libgo/runtime/aeshash.c
  06b0ddfbd036dbdfdf8c4c7efb8b746f  libgo/runtime/arch.h
--- 92971,92981 ----
  fb40fc675164613c2ce0361a86ebd5d0  libgo/misc/cgo/testtls/tls.go
  377645daa8bde69ae6669dcc00a689ff  libgo/misc/cgo/testtls/tls_test.go
  696f9519af1fee77682869bb7037ecaf  libgo/misc/cgo/testtls/tls_unix.c
! cf2ea695111955efb5ada96e3b469cf2  libgo/mklinknames.awk
! c5d522fa8da8b1baf4a55a13d292eacb  libgo/mkrsysinfo.sh
! 4fc8543396f9c5be709cbdc38b94d373  libgo/mkruntimeinc.sh
  81b8b042300eee47fae42dae3d92cf4e  libgo/mksigtab.sh
! 6a1ca54f4f84b00f4d0308ff0a794d5f  libgo/mksysinfo.sh
  9c66bb618ec9c46d7e7dcadd04faf52b  libgo/mvifdiff.sh
  828897ee2e9950dc2b36e98b3f4e1f77  libgo/runtime/aeshash.c
  06b0ddfbd036dbdfdf8c4c7efb8b746f  libgo/runtime/arch.h
*************** da2c80f4aa1b2005fa4a040a0687f5d6  libgo/
*** 86870,87100 ****
  eceb042d837eb004e7367ac9a847a1b2  libgo/runtime/env_posix.c
  6fb6a5d0012113bed4ea45325d64a0ae  libgo/runtime/go-assert.c
  15f566278d64ff0b58823d3875194e29  libgo/runtime/go-assert.h
! 86743b6f109a66153b2d06bb47cb8154  libgo/runtime/go-caller.c
  726db52000a4399d47f0bf33d370e279  libgo/runtime/go-callers.c
- 50987521ad86112e16576c245865263d  libgo/runtime/go-cdiv.c
  e4747f7482c2a2899139d6ee06867726  libgo/runtime/go-cgo.c
  9215f79b59788b463d9c5c3277110718  libgo/runtime/go-construct-map.c
  a3b5410fcc5b1287020bc1ed559acfb0  libgo/runtime/go-context.S
! 92eada40e26107216875725b04929860  libgo/runtime/go-ffi.c
! 2526db1f3be62207cb9eb6524cc61a9c  libgo/runtime/go-fieldtrack.c
  0258632eb5c914a44aef0299a84bf544  libgo/runtime/go-libmain.c
  f55d7c34311e5085f8a057226a4c439e  libgo/runtime/go-main.c
  bc8121acb97ddc7bf2ce153b0918ca35  libgo/runtime/go-matherr.c
! a9854b4cb449f288809172082f269e7b  libgo/runtime/go-memclr.c
  7b65a1c75d9305d8697b763645bb0e8f  libgo/runtime/go-memequal.c
  b532f1e01813112ca6cc108a5b8ffdf2  libgo/runtime/go-nanotime.c
  7f766af44d2f922e4cfd15b9867eab8d  libgo/runtime/go-nosys.c
  4b025f100a217b94db371dbe5e6b8a60  libgo/runtime/go-now.c
  d9925cb56c2ba2bc269933fc5c2ca259  libgo/runtime/go-reflect-call.c
! b1affbed93e0d33f700cff4d87d48393  libgo/runtime/go-setenv.c
! a27035f8e3debbba74f2bf8a1473c788  libgo/runtime/go-signal.c
  6ade856ecb3d86b341bf182f31679cfe  libgo/runtime/go-string.h
! 8c284cc7838368afdcbb7c815ca5ac8b  libgo/runtime/go-unsafe-pointer.c
! 467af0f8b43cdf3a816e5c032fd525a8  libgo/runtime/go-unsetenv.c
! 02911ffe31ffa0f46c49b3b94f8357e2  libgo/runtime/go-unwind.c
! 5271236d86859e787f152ed7095eb43e  libgo/runtime/go-varargs.c
  a069ce221f9436d070ef24e5b056f5a7  libgo/runtime/panic.c
  ee09b4a160083b328fd1b84c8e6bef3e  libgo/runtime/print.c
! b0e8fa5226e64de83fb7bcf98048134a  libgo/runtime/proc.c
  88236bd9baaae0e22c2fe3c097d9cfbf  libgo/runtime/rtems-task-variable-add.c
! 9bdc968058c2125c05e7c2f29b5eb358  libgo/runtime/runtime.h
  9f3cbb4598995168f1b1042a587ee8e9  libgo/runtime/runtime_c.c
  7e8c8817ee732c944857259927850d02  libgo/runtime/stack.c
  f1f0917f45d626d15a5f129fef3d81e2  libgo/runtime/yield.c
! 1eda7c90b3d33a9e266793a21fe81f95  libgo/sysinfo.c
  64195708a46fb2d5225149f15a8e3991  libgo/testsuite/Makefile.am
! b17bd64bcb44aa1d18b2dc2b263ebba4  libgo/testsuite/Makefile.in
  180c96a619276205ec9fc8e8217b67bd  libgo/testsuite/config/default.exp
! 95603691edbb94c24975144927477994  libgo/testsuite/gotest
  e3e86019491a40bd4f45424d7ce11037  libgo/testsuite/lib/libgo.exp
  c5574d106d35be5d94e80301b0855ada  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 4bceaee84f1958421cdc68e333005a65  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
! 9fd2a1e7d1a539dbbc2d854e30b0e00b  libgomp/Makefile.am
! 9feaf433a0fb58e0e870f28ff2115ecc  libgomp/Makefile.in
! 578623817bc0c80f414096447e703091  libgomp/acc_prof.h
  c49c27dee875cdeae7024cb9d7fadf27  libgomp/acinclude.m4
  30a64ccfecfa60e8b5098e9fe26ea707  libgomp/aclocal.m4
! 36994dced6fbd3b2696942bbce7f1bb9  libgomp/affinity-fmt.c
! 7c6054d3048e7daff0074f7fda3be398  libgomp/affinity.c
! 592925f78c824ca6c285e709a079fe2b  libgomp/alloc.c
! ea19f02b273a582bb48097a33285cc33  libgomp/atomic.c
! fc893cd42c5e401343f346d27ed30e9d  libgomp/barrier.c
! 1899f1d87cdd7e17988b2cbe9a148ea1  libgomp/config.h.in
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/libgomp-plugin.c
! bdb06ec459f635a6eb942b08b521eb55  libgomp/config/accel/lock.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/mutex.c
! 0d3b928b7c8711671470739cf854a02a  libgomp/config/accel/mutex.h
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-async.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-cuda.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-host.c
! 55fc35a30828bb181d2880aa9f87dbc3  libgomp/config/accel/oacc-init.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-mem.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-plugin.c
  7973e447504d3a02e64bae101b909b1a  libgomp/config/accel/omp-lock.h
! 1edd4ad845c231df3c084f2823d6b14a  libgomp/config/accel/openacc.f90
! 93dddf4af4dbe805608ca4238913f24a  libgomp/config/accel/pool.h
! 8064262f939e225235753d5541202466  libgomp/config/accel/proc.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/ptrlock.c
! 5d4a85389815724af6655fd52ce17a56  libgomp/config/accel/ptrlock.h
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/sem.c
! cf4a0e538ce1f3630cbf50b4c0cae669  libgomp/config/accel/sem.h
! 3b38c5c5032b53146449f3bd716cd606  libgomp/config/accel/thread-stacksize.h
! f5d8567dbbbbd407eecaa07a52fe5d89  libgomp/config/bsd/proc.c
! 2e2dc448857f5f9259c79c0e316cab3c  libgomp/config/darwin/plugin-suffix.h
! 8b6874b75e7fbff12a135fb7efdf66aa  libgomp/config/darwin/thread-stacksize.h
! 9ea122ecf7a1409360de952590a41426  libgomp/config/gcn/affinity-fmt.c
! 49bf60a0b3b93943dd2c17124cc119f7  libgomp/config/gcn/bar.c
! 2f552ab944d12343d9acc1c8b7459509  libgomp/config/gcn/bar.h
! f4b038da58ef0c4a74ca27207f1c1bb3  libgomp/config/gcn/doacross.h
! 6cfc9a1aa0e97798937e67c0cc5a303e  libgomp/config/gcn/icv-device.c
! b1fe657fb43447ec12f5d0719a05e588  libgomp/config/gcn/oacc-target.c
! f0d0b88d1514d82298d79624e788cc93  libgomp/config/gcn/simple-bar.h
! 0afdeb081226284ac7d1166604bac4d9  libgomp/config/gcn/target.c
! 4d1e4c06a14b218dd8f0c78ea2ab24ad  libgomp/config/gcn/task.c
! 5f99e5552dd5cd3f86a21d26b9a7dd4d  libgomp/config/gcn/team.c
! 7bcf001195b9c5df8bd155c123f43b5f  libgomp/config/gcn/time.c
! ff070289dda72e2da07b1099e9ca87cb  libgomp/config/hpux/plugin-suffix.h
! a77278ce648d8463c6f47891b5e078c6  libgomp/config/linux/affinity.c
! 0de780b287f3fab082f9d170c44d8244  libgomp/config/linux/alpha/futex.h
! 248f3c6479eae55d879ad7910f81f634  libgomp/config/linux/bar.c
! c47c68032fc84ce49802bf55b6c66885  libgomp/config/linux/bar.h
! a93b6d7806988b6aa99fa7a79b2df031  libgomp/config/linux/doacross.h
! f725e4455dcf624a5869d17f4615db3e  libgomp/config/linux/futex.h
! 630ee178a1346e099baa6b99dc0cacb3  libgomp/config/linux/ia64/futex.h
! 1b591358f528383e8c1ab94431a0dcb6  libgomp/config/linux/lock.c
! 9f7c9796d4dc93ae361e2a9eadea8713  libgomp/config/linux/mips/futex.h
! a63e35337d807f4e482e9f4a406dbed0  libgomp/config/linux/mutex.c
! 0064c18aa0de7e3c8cacc7a6b0eebfdf  libgomp/config/linux/mutex.h
  7973e447504d3a02e64bae101b909b1a  libgomp/config/linux/omp-lock.h
! 71b1c0d11a7770308207e10a292e9646  libgomp/config/linux/powerpc/futex.h
! 80684c856bb95fbf079c000cafd69f8d  libgomp/config/linux/proc.c
! 08928140f967e7847d62bb8b69d78732  libgomp/config/linux/proc.h
! 18dc7651db25bdae0a0a03d7bf7a5378  libgomp/config/linux/ptrlock.c
! 68c3a03a754cdb49c5b33d600c53fb0c  libgomp/config/linux/ptrlock.h
! bb8c6e45bb28878f41985f4a492d0f2e  libgomp/config/linux/s390/futex.h
! 3db3135effc16c5f5a63210c846cdd6a  libgomp/config/linux/sem.c
! 11c983384809597401642f976a601a73  libgomp/config/linux/sem.h
! d40e0737c4421684291e7c1b340d4f3e  libgomp/config/linux/sparc/futex.h
! 97a9161cf89e16081fdbddd12df7b192  libgomp/config/linux/tile/futex.h
! 8fd5730fc7e54c1f9a4dfc446a6f76d0  libgomp/config/linux/wait.h
! 6847cc9fd6106d5bf87177f1f03136a8  libgomp/config/linux/x86/futex.h
! e8bbcfd8e38b936dc35980d4f70e0a4a  libgomp/config/mingw32/affinity-fmt.c
! bf941c7f07a0978a9fdb86b83713a510  libgomp/config/mingw32/proc.c
! d7cd59e118dda5f08bc217396aae3e37  libgomp/config/mingw32/time.c
! b4b516363efda1e1c4d99a55ff539dc2  libgomp/config/nvptx/affinity-fmt.c
! 7e518e5cb18974469ddf6e9de6efd3dc  libgomp/config/nvptx/bar.c
! 5cef75fb25d827e6887738cb58960ebc  libgomp/config/nvptx/bar.h
! df9ea5b0cc19649b06438dd852decaf0  libgomp/config/nvptx/doacross.h
! c7a449d7e062d8f0419cabfb51a4279e  libgomp/config/nvptx/error.c
! 751f866668041e4f21336e1384c2d529  libgomp/config/nvptx/icv-device.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/oacc-parallel.c
! 350d0cef57e01193c7f48f55a454e424  libgomp/config/nvptx/simple-bar.h
! 5d1d281890d0c31a9c558146500eda28  libgomp/config/nvptx/target.c
! 298d268895ffc2f0c5900405e0b8ed34  libgomp/config/nvptx/task.c
! c8b7d152e143fcca843c568252640166  libgomp/config/nvptx/team.c
! 5bf7448a15d79444c72be6dcff9d7c8a  libgomp/config/nvptx/teams.c
! 9df1e153952ae7ecfdcd95f29c6c7328  libgomp/config/nvptx/time.c
! 4d661aa202ab956273ea4e965b6414ef  libgomp/config/posix/bar.c
! 8765fcf49e28e12b4f94b3ae1ebf5e0d  libgomp/config/posix/bar.h
! 8eb08b0751029f54970a39d94740c6d1  libgomp/config/posix/doacross.h
! 4ea0a4367baf026e73e9cc234e62d996  libgomp/config/posix/lock.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/posix/mutex.c
! 702d567211817b0ded8bb19f41d73de7  libgomp/config/posix/mutex.h
  e84e55894856b53abe34b30f6148b070  libgomp/config/posix/omp-lock.h
! 627915b7dc42fbc239df7c55b87ba77f  libgomp/config/posix/plugin-suffix.h
! c507e4005b3019a4407297a0bcd5dc20  libgomp/config/posix/pool.h
! 368c2d925a98406c66734a5b62f30269  libgomp/config/posix/proc.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/posix/ptrlock.c
! 379def601a4cd2c7c69827a85a1f6793  libgomp/config/posix/ptrlock.h
! 8363b5bd69275a43fd596e3db3c032a9  libgomp/config/posix/sem.c
! 6fb38159f9da2f2858b6af31e61d32af  libgomp/config/posix/sem.h
! fc3abeb6ae5c86f4eb86af7a2476729e  libgomp/config/posix/simple-bar.h
! 1c31b3cb636b91241e72ff44b1d66df0  libgomp/config/posix/thread-stacksize.h
! c360c7ef6ae5173260c9f9a1b88fa708  libgomp/config/posix/time.c
! 583bce2805119b40261c9e353722d18a  libgomp/config/rtems/affinity-fmt.c
! 62c293d59d35f3002052eac58a490172  libgomp/config/rtems/bar.c
! 4a5c796b6f9094ce6649ed093b81b3a0  libgomp/config/rtems/bar.h
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/mutex.c
! 994877e83fcc116240fd82e2cb98fc67  libgomp/config/rtems/mutex.h
! 5c93796595b377622595eebcac0d472e  libgomp/config/rtems/pool.h
! 152ad2a58528ae6e0b803ab330584231  libgomp/config/rtems/proc.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/sem.c
! c8ae07c2a35773cf9c9c135d9516c8b7  libgomp/config/rtems/sem.h
! a17dd7464be496b673d21ef539fa4635  libgomp/configure
! 3b78acf9ea846c722f53ceafb26458e8  libgomp/configure.ac
! 9ce7a799a6f948e37c2d0cb03e5b6724  libgomp/configure.tgt
! 1ab68bc896f0782f77f1ef130059226c  libgomp/critical.c
! 267fc6a2b4aeef04b92b572ad5b1c82e  libgomp/env.c
! 2309f2fc048b648975209cf292d80acc  libgomp/error.c
! 9372a103d1ed55b354435b79a9706fd7  libgomp/fortran.c
! 6f3452930fa7c610d64927144ddac876  libgomp/hashtab.h
! 74a91106e2f60f8d05f3c18a6432f55f  libgomp/icv-device.c
! 883285b26cd21497843a3c5a04f722e1  libgomp/icv.c
! a975b1cf520505ee9be61620c216ea82  libgomp/iter.c
! 53b0dc4bbb525b3a7500afc76f3e51ff  libgomp/iter_ull.c
! 80bd3c31185cf94ee2e48201c6ace5f1  libgomp/libgomp-plugin.c
! a183f11abf5bcd0b728c89ba99706f53  libgomp/libgomp-plugin.h
! e2da9a5d3298e4acf757d3e0c8066adb  libgomp/libgomp.h
! e8c59287f500e04679f068750a3b6ca5  libgomp/libgomp.info
! 4052732f79d134fd439c1b39aa83c0db  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! 0bf7d35e522085d8b7e5aa8f0efd6187  libgomp/libgomp.texi
! 9551cacd6b18881b3364e721d52390f1  libgomp/libgomp_f.h.in
! e86c9baf94937c05a5a03eb53b964061  libgomp/libgomp_g.h
! 6792fef62e7b80c7d2121018153e2f5d  libgomp/lock.c
! 12309697824acdf88d46b0e6ae0f1183  libgomp/loop.c
! 98da923d4df296f30394ded253210edc  libgomp/loop_ull.c
! a2f88020bc0221efc62dc4d11da9a2e4  libgomp/oacc-async.c
! 72ee5b3d711b6eba24c8b77f9fe574b5  libgomp/oacc-cuda.c
! 5ebd9f7dc07ecb035d008d62a289df6c  libgomp/oacc-host.c
! e81e369d87db0c5b2b8324dbc703d31e  libgomp/oacc-init.c
! 413f640831197c500928b3efbdacc901  libgomp/oacc-int.h
! 330b7d4d3b6eddd5a8368e139951fff5  libgomp/oacc-mem.c
! 23d86e83806fc2ae6a15e036b4fa1e5d  libgomp/oacc-parallel.c
! 670eda218908aa7b0e2b13f29104cdf9  libgomp/oacc-plugin.c
! 145df91fa5a7230229c7118605d3d52c  libgomp/oacc-plugin.h
! ee4e5f930bff34c6ae6ed16d8c5d626c  libgomp/oacc-profiling.c
  6a2627e5d8a4e542cab7eddc96b53f37  libgomp/oacc-target.c
! 2354c66133202f7ac5078bcef5bd0d44  libgomp/omp.h.in
! a4dba5200f4372ec3bd570b654b1f365  libgomp/omp_lib.f90.in
! 713c6c374a3c17bafa12dce033276313  libgomp/omp_lib.h.in
! bde5a6ebbeb02a11fc7799c387c02320  libgomp/openacc.f90
! b0b5037ba86902af18da0a8deead357b  libgomp/openacc.h
! a02d81915fbbe14458da4e997166451f  libgomp/openacc_lib.h
! c570a84f4c59db00162b975e47bf7ff6  libgomp/ordered.c
! 0e01a98e3aea1479ee3feb16ee969831  libgomp/parallel.c
! 463b64b9574385ca937c0ee74f6dbee9  libgomp/plugin/Makefrag.am
! 785fef38db42434bf84011965690d0ac  libgomp/plugin/configfrag.ac
  7a3944d0ff7bc0b4cdbcaebc1228469b  libgomp/plugin/cuda-lib.def
! 29edc4dd18df9d7a8a12b67a27df40df  libgomp/plugin/cuda/cuda.h
! df937a07ca169a97f163c3997bda0dfa  libgomp/plugin/hsa_ext_finalize.h
! 2cad63cf37884e846999a44a551483b9  libgomp/plugin/plugin-gcn.c
! 03ffa93ec542a2d304e29c88974e3cd5  libgomp/plugin/plugin-hsa.c
! 35af89a57c94c2fb0064deffac27dc53  libgomp/plugin/plugin-nvptx.c
! 3691f439ce94a16f9dfd7a0bc5c7155c  libgomp/priority_queue.c
! 734c41af908a322f4d75228786eadac9  libgomp/priority_queue.h
! 5e9d6b1625cd6037f9ae926f8627290e  libgomp/sections.c
! 5ef1218d6b93d758a6faa88ef0237fff  libgomp/secure_getenv.h
! 723f9272d0d9f33a1f83a303a09d4c43  libgomp/single.c
! ba124482fdc049e9a99041d9dd816bfa  libgomp/splay-tree.c
! d7583e2ad844cee8070dfaae09c5501b  libgomp/splay-tree.h
! 889bc97e4b57775b1fc28108d9a80036  libgomp/target.c
! 74fe88e494974b02dd7dc8c87c78d18d  libgomp/task.c
! 7099d1c76e2fe2886ac388d4af76a3e7  libgomp/taskloop.c
! 143611e2f787d1ffe83f8912eded0919  libgomp/team.c
! d8605ac6c582f4457e119461358194f2  libgomp/teams.c
  e07f04fffd2f6276df2fbeca36cc3d91  libgomp/testsuite/Makefile.am
! 2458fe11e80d58a059637d4c9edd1060  libgomp/testsuite/Makefile.in
! 0a51e9c23b796c49142c702063a3dd14  libgomp/testsuite/config/default.exp
! 344187e477d511bb41e97bc1c845aeb4  libgomp/testsuite/lib/libgomp-dg.exp
! a657c16e745d07370a7282ab6cc19ddd  libgomp/testsuite/lib/libgomp.exp
  97fdc33cc25788d4b9dc1db6aefed760  libgomp/testsuite/libgomp-site-extra.exp.in
  ed323f968c0e2d197ee36bf3b1f678e3  libgomp/testsuite/libgomp-test-support.exp.in
! 2cf1f823e10665f77ed445bc524240e7  libgomp/testsuite/libgomp.c++/affinity-1.C
  2c957d1d7acf181ac6aa27218cc24d76  libgomp/testsuite/libgomp.c++/atomic-1.C
  75d6941396142273d25d6693d7556616  libgomp/testsuite/libgomp.c++/atomic-10.C
  5562ceebc0054102930e3944e3d8cea0  libgomp/testsuite/libgomp.c++/atomic-11.C
--- 92984,93216 ----
  eceb042d837eb004e7367ac9a847a1b2  libgo/runtime/env_posix.c
  6fb6a5d0012113bed4ea45325d64a0ae  libgo/runtime/go-assert.c
  15f566278d64ff0b58823d3875194e29  libgo/runtime/go-assert.h
! 3c653ff2663b804d086528eee3f7ae13  libgo/runtime/go-caller.c
  726db52000a4399d47f0bf33d370e279  libgo/runtime/go-callers.c
  e4747f7482c2a2899139d6ee06867726  libgo/runtime/go-cgo.c
  9215f79b59788b463d9c5c3277110718  libgo/runtime/go-construct-map.c
  a3b5410fcc5b1287020bc1ed559acfb0  libgo/runtime/go-context.S
! d3e43ca05c1768f0c32e7fc9d55ed9ae  libgo/runtime/go-ffi.c
! 9102cbc4e5b129b693f67c7ce2e086f6  libgo/runtime/go-fieldtrack.c
  0258632eb5c914a44aef0299a84bf544  libgo/runtime/go-libmain.c
  f55d7c34311e5085f8a057226a4c439e  libgo/runtime/go-main.c
  bc8121acb97ddc7bf2ce153b0918ca35  libgo/runtime/go-matherr.c
! 3eaa382fd0218e1b46d9533f29cef8f9  libgo/runtime/go-memclr.c
  7b65a1c75d9305d8697b763645bb0e8f  libgo/runtime/go-memequal.c
+ 1b81e55f6ff9cd0734e326617f8fb7ac  libgo/runtime/go-memmove.c
  b532f1e01813112ca6cc108a5b8ffdf2  libgo/runtime/go-nanotime.c
  7f766af44d2f922e4cfd15b9867eab8d  libgo/runtime/go-nosys.c
  4b025f100a217b94db371dbe5e6b8a60  libgo/runtime/go-now.c
  d9925cb56c2ba2bc269933fc5c2ca259  libgo/runtime/go-reflect-call.c
! b2f07b4235f5d3afea32439a6620995b  libgo/runtime/go-setenv.c
! aa805c79a1211a3a570ce1e5a86ef004  libgo/runtime/go-signal.c
  6ade856ecb3d86b341bf182f31679cfe  libgo/runtime/go-string.h
! 2b81afafd311c1c2b992982984c5e326  libgo/runtime/go-unsafe-pointer.c
! 5d48d5cccc2ed2f80b567efbb0b71971  libgo/runtime/go-unsetenv.c
! fcf383d3cba5ec358dfc04932d155811  libgo/runtime/go-unwind.c
! c9a81542bf3ef7560958b6cbea5982c1  libgo/runtime/go-varargs.c
  a069ce221f9436d070ef24e5b056f5a7  libgo/runtime/panic.c
  ee09b4a160083b328fd1b84c8e6bef3e  libgo/runtime/print.c
! 9012366cf930d1e2d07a7f4906838cee  libgo/runtime/proc.c
  88236bd9baaae0e22c2fe3c097d9cfbf  libgo/runtime/rtems-task-variable-add.c
! da8feb87689c14c2ade32638da912eac  libgo/runtime/runtime.h
  9f3cbb4598995168f1b1042a587ee8e9  libgo/runtime/runtime_c.c
  7e8c8817ee732c944857259927850d02  libgo/runtime/stack.c
  f1f0917f45d626d15a5f129fef3d81e2  libgo/runtime/yield.c
! 3ed2085cb41333632578bcadc9dc38b7  libgo/sysinfo.c
  64195708a46fb2d5225149f15a8e3991  libgo/testsuite/Makefile.am
! a88e7b262182c586e88c9684af1ccc29  libgo/testsuite/Makefile.in
  180c96a619276205ec9fc8e8217b67bd  libgo/testsuite/config/default.exp
! db714ec1a0facc57280cd0cea89f20d3  libgo/testsuite/gotest
  e3e86019491a40bd4f45424d7ce11037  libgo/testsuite/lib/libgo.exp
  c5574d106d35be5d94e80301b0855ada  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! c99182032efa608b9bef089966cca4a4  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
! 775674136485d314e8cfa08ec26c4fc4  libgomp/Makefile.am
! cc0f858ff11f575dddb9c6738a27e009  libgomp/Makefile.in
! 2a5f26b1d96224a9bac97798c67316cd  libgomp/acc_prof.h
  c49c27dee875cdeae7024cb9d7fadf27  libgomp/acinclude.m4
  30a64ccfecfa60e8b5098e9fe26ea707  libgomp/aclocal.m4
! 75c0b7d44adf436cbd3e317fd3f6301c  libgomp/affinity-fmt.c
! f6ad5774aeeaa762b39e1090bf3d75db  libgomp/affinity.c
! 88b4f18e0c355c7167390548a4754da4  libgomp/alloc.c
! 2458c741c39c3e6f6ab24dc983d8bddb  libgomp/allocator.c
! d53fa2f436c75979aa6433c2e2fdae91  libgomp/atomic.c
! c91d9fdfda3eb84c845b7703305de606  libgomp/barrier.c
! 4aeeea235b6b35c0c89feb9b7a9b349e  libgomp/config.h.in
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/libgomp-plugin.c
! 04c5216eb27a1a0828309594496031a5  libgomp/config/accel/lock.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/mutex.c
! c46e7dd52585a60d4be525e938f3c26f  libgomp/config/accel/mutex.h
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-async.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-cuda.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-host.c
! 07e89a4b19a37e19374df28a3c4d2428  libgomp/config/accel/oacc-init.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-mem.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-plugin.c
  7973e447504d3a02e64bae101b909b1a  libgomp/config/accel/omp-lock.h
! 23566eb8d91cc69e5396156c7bdf5b61  libgomp/config/accel/openacc.f90
! 0a41cd8d100e9e4cde1284ad7db47bd6  libgomp/config/accel/pool.h
! 585c0875306ee27f73630c7af8e0f5f0  libgomp/config/accel/proc.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/ptrlock.c
! 1d3fbd9ed01779c5de119455e28c2f4c  libgomp/config/accel/ptrlock.h
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/sem.c
! 9a7d3bbaed73db2faf8cdf3372dad10d  libgomp/config/accel/sem.h
! 323fdd6ead9f8db70c976caf583b152e  libgomp/config/accel/thread-stacksize.h
! 72dd6bc01035e9ef5579a23108de8799  libgomp/config/bsd/proc.c
! 9c3a691078b1047c1f467b9d89bd361a  libgomp/config/darwin/plugin-suffix.h
! 6a6844728f0ba5f74de03d31a7f5e698  libgomp/config/darwin/thread-stacksize.h
! 43fa2c8e58a2c4601b19ac818ab348d6  libgomp/config/gcn/affinity-fmt.c
! f61d6c76267281217e9fd1ee62d943ac  libgomp/config/gcn/bar.c
! af056d3b347662626aa0637959f7c4be  libgomp/config/gcn/bar.h
! 8bb7fccc402a23d8afc286765a19a587  libgomp/config/gcn/doacross.h
! b5dec9b9a3b48cc3b4fe45747fa00fcd  libgomp/config/gcn/icv-device.c
! 97fb7bc3e26ac7b779ca573d0b393833  libgomp/config/gcn/oacc-target.c
! 9754b40012de512c01def38b532eb5d1  libgomp/config/gcn/simple-bar.h
! 0b3ef7c79010eabc012a13f9f00b0a50  libgomp/config/gcn/target.c
! a093268f0aff101841cae70e1687df24  libgomp/config/gcn/task.c
! af315838686f7af6cdffd5ecc842f150  libgomp/config/gcn/team.c
! cf17e7c7438f7a965af7e87f2061f9b6  libgomp/config/gcn/time.c
! d0d13a906e96f70ffaf885be3e18fed5  libgomp/config/hpux/plugin-suffix.h
! 77b70229675f5f02a4dcedd57055b1df  libgomp/config/linux/affinity.c
! 789cef084fcc44283227869bce3f3e54  libgomp/config/linux/alpha/futex.h
! 80dabbe0ad3609a72e78ef109a79184d  libgomp/config/linux/bar.c
! b85366ae34b87988c342cff0a52d1506  libgomp/config/linux/bar.h
! 8b6308d8ad62d496a9b4fec88c7d690e  libgomp/config/linux/doacross.h
! 675f17dcb21c01bd98a76712132e1523  libgomp/config/linux/futex.h
! eff4f12666ca50f8fc38db31bc3f8329  libgomp/config/linux/ia64/futex.h
! 06ae546d273bb8e157443e888876519a  libgomp/config/linux/lock.c
! 39dd96d7d746e748aede075f4d5913e4  libgomp/config/linux/mips/futex.h
! 213b604b256dbeb88361aca90d91a81b  libgomp/config/linux/mutex.c
! d24e6e1b670a272ad9827e4e2137464d  libgomp/config/linux/mutex.h
  7973e447504d3a02e64bae101b909b1a  libgomp/config/linux/omp-lock.h
! 94351d37a42a509c91c28df6e885e109  libgomp/config/linux/powerpc/futex.h
! 3bdee04f8603cff8515a579a7e56f410  libgomp/config/linux/proc.c
! 276793de1600c29a294e24b1af57fe8b  libgomp/config/linux/proc.h
! 4214f75d480b8a3c176c1a4c16bc02ff  libgomp/config/linux/ptrlock.c
! 8b0b288099e6a8eb5aae6dde207630a6  libgomp/config/linux/ptrlock.h
! 4736fb38916fd7ee77ec2f93187c2577  libgomp/config/linux/s390/futex.h
! c674d8fd0e81b3e10baa105e4a0eae68  libgomp/config/linux/sem.c
! 512503a6dbbc684f53ea50339af93a4c  libgomp/config/linux/sem.h
! fdcd449dcbfb0a8ee9ea935b67db9bba  libgomp/config/linux/sparc/futex.h
! 3e9f89eebb191b83ecd80f4b1f392846  libgomp/config/linux/tile/futex.h
! e10251baa98d3fd948fa9163b021b425  libgomp/config/linux/wait.h
! 91e132743b604c25db4b432948fd71de  libgomp/config/linux/x86/futex.h
! c99f6685d1156ef616af2af894a33bb7  libgomp/config/mingw32/affinity-fmt.c
! 0bb2c931a1fe49822628041c58913156  libgomp/config/mingw32/proc.c
! 69642c5d72ce78161bdeca95ff3f3e99  libgomp/config/mingw32/time.c
! 7c55c8d2149b70367eb8c4ec9b79d239  libgomp/config/nvptx/affinity-fmt.c
! 6bb7711f9ae2bc93662a9c5ece06f7ee  libgomp/config/nvptx/atomic.c
! f7f45ad0a9dc463668c10274a0f4c594  libgomp/config/nvptx/bar.c
! 0e9b61aebba1e58777abe2bf70778706  libgomp/config/nvptx/bar.h
! 54e8f598739c528d22f193ab62258db0  libgomp/config/nvptx/doacross.h
! 6e59f8a20192492f7b1595247c2d12ba  libgomp/config/nvptx/error.c
! 2f0525fd51e62727629b10f4c4c24e96  libgomp/config/nvptx/icv-device.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/oacc-parallel.c
! d87bcf74841551ea33d5cffcc62db0cd  libgomp/config/nvptx/simple-bar.h
! 684451c729128ce049f848a4887c7d6b  libgomp/config/nvptx/target.c
! a256af837eb07e275556ca133282fa6a  libgomp/config/nvptx/task.c
! 08514204486ba062f5ace0a02b876889  libgomp/config/nvptx/team.c
! 0c9a9b2f916798969643d9950c09d444  libgomp/config/nvptx/teams.c
! 4749e8d9231ff778a7cd85f0bfa6f12e  libgomp/config/nvptx/time.c
! 165fbbe344a2201f2a8e82c93799bea7  libgomp/config/posix/bar.c
! 9859176df2961e171f9ee1a4f8d71369  libgomp/config/posix/bar.h
! 45b6e0d88e3d297b47dea43cacf6a715  libgomp/config/posix/doacross.h
! dd4b649edd0a24171fba8bdd42ff9944  libgomp/config/posix/lock.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/posix/mutex.c
! 9a7986ecdef410bc30c4a814f1f49a7e  libgomp/config/posix/mutex.h
  e84e55894856b53abe34b30f6148b070  libgomp/config/posix/omp-lock.h
! 51ac5218ec13ae06244faec594f7a941  libgomp/config/posix/plugin-suffix.h
! a075a84248997a7f3925cbf46873f176  libgomp/config/posix/pool.h
! 6223fb1acc8a5f6da489ac0b12976701  libgomp/config/posix/proc.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/posix/ptrlock.c
! a3e8b4412687e1382e329ab9e00c9e92  libgomp/config/posix/ptrlock.h
! a9c4214838c06c650f5a474c90b68423  libgomp/config/posix/sem.c
! 1fa7b4b284c7bd4a9dc413cae0e37974  libgomp/config/posix/sem.h
! 551893eada2e8ba4db7fbb4ea7604938  libgomp/config/posix/simple-bar.h
! cc13c8014fa0ee53a326cb3583984368  libgomp/config/posix/thread-stacksize.h
! 2efbd097aed6baa5b2acb5a2d0abf4fe  libgomp/config/posix/time.c
! f66a804b7a06f3422b299e392ff2cd6a  libgomp/config/rtems/affinity-fmt.c
! b1a1be3d7d546e03f2697050f0105f10  libgomp/config/rtems/bar.c
! a42093fb96dd7de613a5350ca11e99e7  libgomp/config/rtems/bar.h
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/mutex.c
! fc96df2ec557da944078791fe7c1f12f  libgomp/config/rtems/mutex.h
! 52d0c9ce481b81eb9ccc68162a6784e5  libgomp/config/rtems/pool.h
! 2e980d17defcb97fde88cf5f6c8585e5  libgomp/config/rtems/proc.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/sem.c
! 4d3a8b6f34059afa087aa981d61460dd  libgomp/config/rtems/sem.h
! af41d1d04a4112345554ca8b8a072ed9  libgomp/config/t-aix
! 7fdc6ca37533a57dd7a24a6e6bf58085  libgomp/configure
! 188d1535492124a0b091a5e3dd96d429  libgomp/configure.ac
! 5b8ec995a772307aacae5779580b5817  libgomp/configure.tgt
! 705ffb59b51affa5d25feededd4bdd63  libgomp/critical.c
! 97efd7efc8cc031e7446d5dc7088a851  libgomp/env.c
! 0c0c8a0552a7ee0cf622007aada7d9a3  libgomp/error.c
! cac1df4750249c9f5daeb544c5ed2aa3  libgomp/fortran.c
! 13f0b1f26e2686a5714fa8eed067ad8f  libgomp/hashtab.h
! 4a4b43464c190c16a36bf24c71ba60e3  libgomp/icv-device.c
! f54116feb9c269130e632ccb02620a48  libgomp/icv.c
! c8843a63ba608b0b5d646254dedaca38  libgomp/iter.c
! de1c2d0c718443d5a90b60ea327939da  libgomp/iter_ull.c
! a9602ab9ee9f89734074f35456117573  libgomp/libgomp-plugin.c
! 465ccd19218bce34f9416c8e5367ac12  libgomp/libgomp-plugin.h
! aaa17bf11b59931da2d709d5a2e528a2  libgomp/libgomp.h
! 07b87ce84ddaadb2e2ce852d03ebfd2b  libgomp/libgomp.info
! 67964eb0101a54721e14945594dc2c5a  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! 1207eb54aa3a040f8b931b86d5d21b1d  libgomp/libgomp.texi
! b474ebd58d1c5d3bcb39f0c5f2efec6a  libgomp/libgomp_f.h.in
! 09ffcd91d661a0b21fe7c335ce09c201  libgomp/libgomp_g.h
! 8233367e108fccb64e978ccda1dd0951  libgomp/lock.c
! 1243457101a80ac8375af609fd070ab6  libgomp/loop.c
! fc116d44f2230fc2c772c94d57a12c0b  libgomp/loop_ull.c
! c22fea336d6cc9feeaa92b98483cc8ec  libgomp/oacc-async.c
! 149843d87f3c9fc61b6fea2c213c841d  libgomp/oacc-cuda.c
! 70c966c661d7b2d5e4a2f7549c63967a  libgomp/oacc-host.c
! 322fdb3f78c5fc466c07db0b3e3259c2  libgomp/oacc-init.c
! 6288055e0d95f7c55434ea18f21c2303  libgomp/oacc-int.h
! 775b8218b1e40da5ccd7fca9e96d230c  libgomp/oacc-mem.c
! 2b677b86d83b9f8b3b2270027227d698  libgomp/oacc-parallel.c
! fd62934cb4258d44e8ddceba017d23aa  libgomp/oacc-plugin.c
! efa5f1b51c15eff06510345cbf3bafed  libgomp/oacc-plugin.h
! c2be6336690df753da151f6d64755628  libgomp/oacc-profiling.c
  6a2627e5d8a4e542cab7eddc96b53f37  libgomp/oacc-target.c
! a8516a4a3a84a5d6c8a2c327ff2c305a  libgomp/omp.h.in
! f4e3a5c05af500b391491a273d4eb5ae  libgomp/omp_lib.f90.in
! 8b5319b3c6cd9867a145173635b706f5  libgomp/omp_lib.h.in
! ccc1d2e4e602d77a4aaca6d3d42153d4  libgomp/openacc.f90
! 9c5c306a756d7270788a26be0331337a  libgomp/openacc.h
! 423e5d861550f0c628e17c04bc57baa1  libgomp/openacc_lib.h
! 9d64bf8d95e3d0c6ec8063ec688dd14e  libgomp/ordered.c
! 3dce7225ba2f160067353cf99843c439  libgomp/parallel.c
! b886fd207a7042a06000c9f5268f98c1  libgomp/plugin/Makefrag.am
! 3bf44442c2dcba6af5ab3a2bad037296  libgomp/plugin/configfrag.ac
  7a3944d0ff7bc0b4cdbcaebc1228469b  libgomp/plugin/cuda-lib.def
! 0efac2d6a68e4eb8959a016090bf1e5b  libgomp/plugin/cuda/cuda.h
! 967970de7d98de4920af20e2399feda6  libgomp/plugin/plugin-gcn.c
! 90892e08e6d646b902d50ad2529a2e74  libgomp/plugin/plugin-nvptx.c
! bb638ec2a05e8ec15bc382976eb5640b  libgomp/priority_queue.c
! e372584ef8304cf52e4e09a9fc05adf3  libgomp/priority_queue.h
! 8aa923ea97fcdde12994c8485d0f6d2e  libgomp/sections.c
! 14f5dd8fb06b6d64c2b883bae8f012a8  libgomp/secure_getenv.h
! 954d195e8d56380488976617fde73813  libgomp/single.c
! e6cf92cd98976f129367e400696fabbb  libgomp/splay-tree.c
! 48ca4acfe2742359f3e2a732ec5d92d4  libgomp/splay-tree.h
! 3671c9767a3fc1f7e8f80f6478c46c2e  libgomp/target.c
! f25f9fac81b92895a0989da808a2777c  libgomp/task.c
! 4a2e5b2fd7cf330d1049b9b8cbf6bb15  libgomp/taskloop.c
! 1d1cca28977e6aef439521c8d10eed90  libgomp/team.c
! 8d61131215921c894f5e0449c79c0a18  libgomp/teams.c
  e07f04fffd2f6276df2fbeca36cc3d91  libgomp/testsuite/Makefile.am
! 648be0a5f804ab0023a14d22cca4a3de  libgomp/testsuite/Makefile.in
! e7fa5ebeef61fd5a5de78de61a1f82b3  libgomp/testsuite/config/default.exp
! 6c859d1c520b245e51a29693632545d6  libgomp/testsuite/lib/libgomp-dg.exp
! b16eb77046b618bc32e83f6d240b2290  libgomp/testsuite/lib/libgomp.exp
  97fdc33cc25788d4b9dc1db6aefed760  libgomp/testsuite/libgomp-site-extra.exp.in
  ed323f968c0e2d197ee36bf3b1f678e3  libgomp/testsuite/libgomp-test-support.exp.in
! 75cc672a1bf25974c5f4c5e3bc1a74b1  libgomp/testsuite/libgomp.c++/affinity-1.C
! 196ffcd43fb2edf60795e6aabf50d259  libgomp/testsuite/libgomp.c++/allocate-1.C
  2c957d1d7acf181ac6aa27218cc24d76  libgomp/testsuite/libgomp.c++/atomic-1.C
  75d6941396142273d25d6693d7556616  libgomp/testsuite/libgomp.c++/atomic-10.C
  5562ceebc0054102930e3944e3d8cea0  libgomp/testsuite/libgomp.c++/atomic-11.C
*************** a56e4a1dad7c21fecfbf5dd26cb1f86a  libgom
*** 87103,87109 ****
  f5aa3b6a543d3042289d53904701574b  libgomp/testsuite/libgomp.c++/atomic-14.C
  156c6a231b71803eea67391fb8826eab  libgomp/testsuite/libgomp.c++/atomic-15.C
  11dca764f708d500baba4ceaa6de9b54  libgomp/testsuite/libgomp.c++/atomic-2.C
! 46336d6474df6db19a695cf5a1f13069  libgomp/testsuite/libgomp.c++/atomic-3.C
  f944acede3f9beeaf281ef9282c0ff44  libgomp/testsuite/libgomp.c++/atomic-4.C
  deb63d2160d43f3e708a4363b1e0afaa  libgomp/testsuite/libgomp.c++/atomic-5.C
  b033e9045b45805b9c4de42aa8f1eb17  libgomp/testsuite/libgomp.c++/atomic-6.C
--- 93219,93225 ----
  f5aa3b6a543d3042289d53904701574b  libgomp/testsuite/libgomp.c++/atomic-14.C
  156c6a231b71803eea67391fb8826eab  libgomp/testsuite/libgomp.c++/atomic-15.C
  11dca764f708d500baba4ceaa6de9b54  libgomp/testsuite/libgomp.c++/atomic-2.C
! 6cce79d9ec704407d872ee19b27e9946  libgomp/testsuite/libgomp.c++/atomic-3.C
  f944acede3f9beeaf281ef9282c0ff44  libgomp/testsuite/libgomp.c++/atomic-4.C
  deb63d2160d43f3e708a4363b1e0afaa  libgomp/testsuite/libgomp.c++/atomic-5.C
  b033e9045b45805b9c4de42aa8f1eb17  libgomp/testsuite/libgomp.c++/atomic-6.C
*************** dc7de2a56e857e340edadd8faabda685  libgom
*** 87218,87223 ****
--- 93334,93340 ----
  9262df59cf611b7f8a158b637ef46a9e  libgomp/testsuite/libgomp.c++/pr86542.C
  2f4b5b9cb40dd4bff2c3c0ebada29767  libgomp/testsuite/libgomp.c++/pr88988.C
  7cc253bb1b2c2c65f9d69743d9235b32  libgomp/testsuite/libgomp.c++/pr93931.C
+ 8a7b94143ab9452c0f9db7ac15b3344f  libgomp/testsuite/libgomp.c++/pr96390.C
  a594cebdf052900dd0c8792068e14d85  libgomp/testsuite/libgomp.c++/reduction-1.C
  1473f55e3f6f9827b6dd281025b88b85  libgomp/testsuite/libgomp.c++/reduction-10.C
  bd119573b86fb5577edaf97dd86d2a6c  libgomp/testsuite/libgomp.c++/reduction-11.C
*************** cae1fc2a9354c3a86718128ae4ce239b  libgom
*** 87332,87349 ****
  d781578fb089699e0ef346a39952f9ba  libgomp/testsuite/libgomp.c++/udr-2.C
  5b4b50c570b25d55796124f11168988d  libgomp/testsuite/libgomp.c++/udr-20.C
  66c3ee1d97bf98787c71112cad84a23b  libgomp/testsuite/libgomp.c++/udr-21.C
! 9fbc10fae7a305b6bd8fea38417fa68d  libgomp/testsuite/libgomp.c++/udr-3.C
  ea9d7efadb5b2c25e305ce1e8aee8d04  libgomp/testsuite/libgomp.c++/udr-4.C
  237e9df073e4ccf5adf875c41f053cb2  libgomp/testsuite/libgomp.c++/udr-5.C
  05359c9369906184ed3a5b1b706ae2cb  libgomp/testsuite/libgomp.c++/udr-6.C
  18bc8983002568fa3de20df48f9b2c2f  libgomp/testsuite/libgomp.c++/udr-7.C
  a0ed7c5ec445acca5bb4d3efd5041bbf  libgomp/testsuite/libgomp.c++/udr-8.C
  4dc4b112dfee5bd9786bd0c593398b1b  libgomp/testsuite/libgomp.c-c++-common/atomic-18.c
  83a30fcfeab47090fa194cc1e6ec2f83  libgomp/testsuite/libgomp.c-c++-common/cancel-parallel-1.c
  025dfca2b02c470cf7f46afb552c078c  libgomp/testsuite/libgomp.c-c++-common/cancel-taskgroup-1.c
  e84312e49f013526d73d8d431b003123  libgomp/testsuite/libgomp.c-c++-common/cancel-taskgroup-2.c
  954be12144c529b10fe999f79ec5e0c2  libgomp/testsuite/libgomp.c-c++-common/cancel-taskgroup-3.c
  65874eb51aef9c0a8ebb700f6708ac82  libgomp/testsuite/libgomp.c-c++-common/cancel-taskgroup-4.c
  ffae923e01f64777614298d5256aa1e4  libgomp/testsuite/libgomp.c-c++-common/depend-iterator-1.c
  89f89f54b56b11293d8d7db027c1dc5b  libgomp/testsuite/libgomp.c-c++-common/depend-iterator-2.c
  1583f97cbaa7d0b05f4bc3415cf9a901  libgomp/testsuite/libgomp.c-c++-common/depend-mutexinout-1.c
--- 93449,93474 ----
  d781578fb089699e0ef346a39952f9ba  libgomp/testsuite/libgomp.c++/udr-2.C
  5b4b50c570b25d55796124f11168988d  libgomp/testsuite/libgomp.c++/udr-20.C
  66c3ee1d97bf98787c71112cad84a23b  libgomp/testsuite/libgomp.c++/udr-21.C
! 1dac2ba3cd4e120276a0c48f6207f8a0  libgomp/testsuite/libgomp.c++/udr-3.C
  ea9d7efadb5b2c25e305ce1e8aee8d04  libgomp/testsuite/libgomp.c++/udr-4.C
  237e9df073e4ccf5adf875c41f053cb2  libgomp/testsuite/libgomp.c++/udr-5.C
  05359c9369906184ed3a5b1b706ae2cb  libgomp/testsuite/libgomp.c++/udr-6.C
  18bc8983002568fa3de20df48f9b2c2f  libgomp/testsuite/libgomp.c++/udr-7.C
  a0ed7c5ec445acca5bb4d3efd5041bbf  libgomp/testsuite/libgomp.c++/udr-8.C
+ 9049517c3597f400ce3982fc59a9cb94  libgomp/testsuite/libgomp.c-c++-common/alloc-1.c
+ fd2369c7ae56d95d52913f986183913e  libgomp/testsuite/libgomp.c-c++-common/alloc-2.c
+ 6f5f297baa365e3ee82fd98026c3f0f4  libgomp/testsuite/libgomp.c-c++-common/alloc-3.c
+ 74336da00bc337b3aa2ecc1cbfdd3303  libgomp/testsuite/libgomp.c-c++-common/alloc-4.c
+ dd35f837ba3f36a2f937940516cd6df9  libgomp/testsuite/libgomp.c-c++-common/allocate-1.c
  4dc4b112dfee5bd9786bd0c593398b1b  libgomp/testsuite/libgomp.c-c++-common/atomic-18.c
  83a30fcfeab47090fa194cc1e6ec2f83  libgomp/testsuite/libgomp.c-c++-common/cancel-parallel-1.c
  025dfca2b02c470cf7f46afb552c078c  libgomp/testsuite/libgomp.c-c++-common/cancel-taskgroup-1.c
  e84312e49f013526d73d8d431b003123  libgomp/testsuite/libgomp.c-c++-common/cancel-taskgroup-2.c
  954be12144c529b10fe999f79ec5e0c2  libgomp/testsuite/libgomp.c-c++-common/cancel-taskgroup-3.c
  65874eb51aef9c0a8ebb700f6708ac82  libgomp/testsuite/libgomp.c-c++-common/cancel-taskgroup-4.c
+ 9fe6259058ff7671b0dadfe2a5eea80f  libgomp/testsuite/libgomp.c-c++-common/critical-hint-1.c
+ a4ab197aeadddd54aec1345501b5ea69  libgomp/testsuite/libgomp.c-c++-common/critical-hint-2.c
+ 12e3ee01b70343537315551db476c391  libgomp/testsuite/libgomp.c-c++-common/declare_target-1.c
  ffae923e01f64777614298d5256aa1e4  libgomp/testsuite/libgomp.c-c++-common/depend-iterator-1.c
  89f89f54b56b11293d8d7db027c1dc5b  libgomp/testsuite/libgomp.c-c++-common/depend-iterator-2.c
  1583f97cbaa7d0b05f4bc3415cf9a901  libgomp/testsuite/libgomp.c-c++-common/depend-mutexinout-1.c
*************** dffc3aabaa5b2461aa560fc66c80c0fe  libgom
*** 87387,87394 ****
--- 93512,93521 ----
  3c55e0ae7ee0559f4081eae1bd8bcff2  libgomp/testsuite/libgomp.c-c++-common/master-combined-1.c
  f959c1fe9d94d7321dbc7b419eefe7a7  libgomp/testsuite/libgomp.c-c++-common/monotonic-1.c
  cc6abf61b301e17286872d6d76d483c0  libgomp/testsuite/libgomp.c-c++-common/monotonic-2.c
+ 1c4ec2975c3dc84ae293e87a285260b4  libgomp/testsuite/libgomp.c-c++-common/nested-parallel-unbalanced.c
  d9c974865c1c03b48fac0231e028a7be  libgomp/testsuite/libgomp.c-c++-common/nonmonotonic-1.c
  214e7bba3d270a6822e2e6161f05981b  libgomp/testsuite/libgomp.c-c++-common/nonmonotonic-2.c
+ dfe1951e336cd10cf4b2330c5ffb28f4  libgomp/testsuite/libgomp.c-c++-common/on_device_arch.h
  53fe13231ac841815b983b820fa61932  libgomp/testsuite/libgomp.c-c++-common/ordered-4.c
  35032e9e752cf0fddfcf3aa3df880c48  libgomp/testsuite/libgomp.c-c++-common/pause-1.c
  333f11e6a780e595ef92d101803745c9  libgomp/testsuite/libgomp.c-c++-common/pause-2.c
*************** dff7a676c5c7625a109dad1fb29c317d  libgom
*** 87413,87418 ****
--- 93540,93548 ----
  4066b4a4600721101ac384b659311782  libgomp/testsuite/libgomp.c-c++-common/pr81875.c
  08611a968d3d5d8544391a554aa64d2e  libgomp/testsuite/libgomp.c-c++-common/pr83046.c
  bbbd1b345adde5e2b11d48880c03841d  libgomp/testsuite/libgomp.c-c++-common/pr93515.c
+ 083fd3b3485a54da1a1bf118b3d85a18  libgomp/testsuite/libgomp.c-c++-common/pr96390.c
+ 815799e957465c99070ca74ae5616589  libgomp/testsuite/libgomp.c-c++-common/ptr-attach-1.c
+ 9da12835144604ca0825fc458da152ab  libgomp/testsuite/libgomp.c-c++-common/reduction-16.c
  d66bb650f4953bee67dede99228fb94f  libgomp/testsuite/libgomp.c-c++-common/simd-1.c
  561437d7d3d7ef8ef34cb872b883ba18  libgomp/testsuite/libgomp.c-c++-common/simd-14.c
  cbc1c46aca10b5056dd653273e1b22d3  libgomp/testsuite/libgomp.c-c++-common/simd-15.c
*************** fa179f92bce747c523f38056959318ff  libgom
*** 87422,87427 ****
--- 93552,93569 ----
  d01ee6246770101e0827d46c27fc4cc5  libgomp/testsuite/libgomp.c-c++-common/target-10.c
  52ce685862fa4549564c34c17e73ed24  libgomp/testsuite/libgomp.c-c++-common/target-13.c
  e590f10fae9bf053ed7123777b03bf32  libgomp/testsuite/libgomp.c-c++-common/target-2.c
+ 5411abe8bc8fb16337ef59206b9a233a  libgomp/testsuite/libgomp.c-c++-common/target-40.c
+ 5232d615b2109b50002b7e6eb8301a84  libgomp/testsuite/libgomp.c-c++-common/task-detach-1.c
+ 7f2f3a630783e68a54ffcd18a73085b2  libgomp/testsuite/libgomp.c-c++-common/task-detach-10.c
+ bf2a6ba66b2350c597a56727abd53608  libgomp/testsuite/libgomp.c-c++-common/task-detach-11.c
+ 5992bcf110c8d557070ec896be0cf9fc  libgomp/testsuite/libgomp.c-c++-common/task-detach-2.c
+ 80f1063bb97ccd9af83f01d1967ea47b  libgomp/testsuite/libgomp.c-c++-common/task-detach-3.c
+ 9d8d31615d3312bd47d979e0ddb895a1  libgomp/testsuite/libgomp.c-c++-common/task-detach-4.c
+ 511e7692f392de69f828890dc5901e90  libgomp/testsuite/libgomp.c-c++-common/task-detach-5.c
+ fd0527d1b510bf4ad7665823b3d06823  libgomp/testsuite/libgomp.c-c++-common/task-detach-6.c
+ 30fa39cf4185a1d4467acb7da650aaa6  libgomp/testsuite/libgomp.c-c++-common/task-detach-7.c
+ 8e64db6e7526c10809c0a1d05a25f95b  libgomp/testsuite/libgomp.c-c++-common/task-detach-8.c
+ d2cb6d4c0500a7f9ba372f1dbf3296c1  libgomp/testsuite/libgomp.c-c++-common/task-detach-9.c
  106ee243910ede9a5511eec8792fcded  libgomp/testsuite/libgomp.c-c++-common/task-reduction-1.c
  564f092ddd87e8a1beaeda362953188d  libgomp/testsuite/libgomp.c-c++-common/task-reduction-11.c
  23584c2b5e72b0f66678ce4ada7296dd  libgomp/testsuite/libgomp.c-c++-common/task-reduction-12.c
*************** fb173d8d2f7d77807e2f94fea30c2a43  libgom
*** 87448,87456 ****
  5d8ecdbae4b1a48b2e6a1ddef6b0ca7f  libgomp/testsuite/libgomp.c-c++-common/udr-1.c
  448f5dd482b6ef3000923aaa33bb3bfb  libgomp/testsuite/libgomp.c-c++-common/unmap-infinity-2.c
  25cf40a08a85d10ceba1e3874293f472  libgomp/testsuite/libgomp.c-c++-common/variable-not-offloaded.c
! a165ac1103c55b18730a3ab7add4f795  libgomp/testsuite/libgomp.c/affinity-1.c
! 1158aba9f91c847a376587e1a9d453a0  libgomp/testsuite/libgomp.c/affinity-2.c
! 5b7669d833c280f2eb266ac1f26d1462  libgomp/testsuite/libgomp.c/appendix-a/a.15.1.c
  16dafd2aadb62eb39423e7b2deb46cc1  libgomp/testsuite/libgomp.c/appendix-a/a.16.1.c
  e93a3e74972b33d2a0caef52cf757ee4  libgomp/testsuite/libgomp.c/appendix-a/a.18.1.c
  96260e7bf4bf9b25a68ce3f18a1af175  libgomp/testsuite/libgomp.c/appendix-a/a.19.1.c
--- 93590,93598 ----
  5d8ecdbae4b1a48b2e6a1ddef6b0ca7f  libgomp/testsuite/libgomp.c-c++-common/udr-1.c
  448f5dd482b6ef3000923aaa33bb3bfb  libgomp/testsuite/libgomp.c-c++-common/unmap-infinity-2.c
  25cf40a08a85d10ceba1e3874293f472  libgomp/testsuite/libgomp.c-c++-common/variable-not-offloaded.c
! b6206b96870346519e061d466750b845  libgomp/testsuite/libgomp.c/affinity-1.c
! fe6e22f8c0d2e289ecbd5ea26c9ed1bc  libgomp/testsuite/libgomp.c/affinity-2.c
! 1f6a1f1c31286073320fc1d55660da23  libgomp/testsuite/libgomp.c/appendix-a/a.15.1.c
  16dafd2aadb62eb39423e7b2deb46cc1  libgomp/testsuite/libgomp.c/appendix-a/a.16.1.c
  e93a3e74972b33d2a0caef52cf757ee4  libgomp/testsuite/libgomp.c/appendix-a/a.18.1.c
  96260e7bf4bf9b25a68ce3f18a1af175  libgomp/testsuite/libgomp.c/appendix-a/a.19.1.c
*************** a0864a470dcfab5610654831f9ec1740  libgom
*** 87504,87509 ****
--- 93646,93652 ----
  4dd2cfb516bf87f648a7200fcbe97240  libgomp/testsuite/libgomp.c/critical-1.c
  1cca2a92d0182ae3c650964de6d87d0a  libgomp/testsuite/libgomp.c/critical-2.c
  b5604fce8e01b4e305a8c0a4563d1aa9  libgomp/testsuite/libgomp.c/debug-1.c
+ 9c2e77575175172ebb8ff9301c063d3d  libgomp/testsuite/libgomp.c/declare-variant-1.c
  de26bcca8c4e027a5ce130d6ff6fc370  libgomp/testsuite/libgomp.c/depend-1.c
  f064386a2df301c3135834944af37de9  libgomp/testsuite/libgomp.c/depend-10.c
  e46784f3cdfb38c461a2af6e0d9094a0  libgomp/testsuite/libgomp.c/depend-2.c
*************** ae4ee25a98b96a2f6bbcd9bc817b5b90  libgom
*** 87561,87568 ****
  19b2705df361d5db0e54ab9b2dbb30d4  libgomp/testsuite/libgomp.c/examples-4/teams-6.c
  00d45ed4a463f0629d2d21a38fe0073a  libgomp/testsuite/libgomp.c/icv-1.c
  6619bda92e7a29f372b1a0bc19ef2c79  libgomp/testsuite/libgomp.c/icv-2.c
! 5a2f59ea49d588c654193e575f3190a6  libgomp/testsuite/libgomp.c/lib-1.c
! a12a4f3899d065fe6f4a528a8ca92169  libgomp/testsuite/libgomp.c/lib-2.c
  954e001a86eca6e39424518360cc7b36  libgomp/testsuite/libgomp.c/linear-1.c
  8df4ee07267cae79bbb8fd9ce8e3d054  libgomp/testsuite/libgomp.c/lock-1.c
  8038f70c8492fa39f553051073970a59  libgomp/testsuite/libgomp.c/lock-2.c
--- 93704,93711 ----
  19b2705df361d5db0e54ab9b2dbb30d4  libgomp/testsuite/libgomp.c/examples-4/teams-6.c
  00d45ed4a463f0629d2d21a38fe0073a  libgomp/testsuite/libgomp.c/icv-1.c
  6619bda92e7a29f372b1a0bc19ef2c79  libgomp/testsuite/libgomp.c/icv-2.c
! 60295e2f73526594a93b118333ca7ff3  libgomp/testsuite/libgomp.c/lib-1.c
! af9d852282ae3da623a0727f1df789ab  libgomp/testsuite/libgomp.c/lib-2.c
  954e001a86eca6e39424518360cc7b36  libgomp/testsuite/libgomp.c/linear-1.c
  8df4ee07267cae79bbb8fd9ce8e3d054  libgomp/testsuite/libgomp.c/lock-1.c
  8038f70c8492fa39f553051073970a59  libgomp/testsuite/libgomp.c/lock-2.c
*************** e85d68d05fc9ccbe77ecb0de41222b7c  libgom
*** 87572,87578 ****
--- 93715,93730 ----
  7709f14677461aacba0647baa31ac592  libgomp/testsuite/libgomp.c/loop-11.c
  eedf4ded48f258d9de2bce91fae39374  libgomp/testsuite/libgomp.c/loop-12.c
  8257d204f0bf53b53ae5433dcee92216  libgomp/testsuite/libgomp.c/loop-16.c
+ ee808080fb81399c0d72f84741915b0c  libgomp/testsuite/libgomp.c/loop-17.c
+ 5bb984c2d2283cf8123f69ba1b0d372a  libgomp/testsuite/libgomp.c/loop-18.c
+ 9ad1cf364c499c8a1671851f9cdb5f2f  libgomp/testsuite/libgomp.c/loop-19.c
  fcf0b70da92fc55e6cdd5d1a77923dc3  libgomp/testsuite/libgomp.c/loop-2.c
+ 47fb0d9927bb3aee196ab3e52cf07a6d  libgomp/testsuite/libgomp.c/loop-20.c
+ 8e0875862cc838ae1a1551a354fc9e77  libgomp/testsuite/libgomp.c/loop-21.c
+ c97be2d4dda2fd0e24aee73e7daeb779  libgomp/testsuite/libgomp.c/loop-22.c
+ 55bdc5ab65021c3fa80cc6ee8c856909  libgomp/testsuite/libgomp.c/loop-23.c
+ a19b860b4cd897806edbbabe581dbb96  libgomp/testsuite/libgomp.c/loop-24.c
+ 1560509326b57b175c476871c1751dee  libgomp/testsuite/libgomp.c/loop-25.c
  2d311b74a086fbde01cc1251018f8c89  libgomp/testsuite/libgomp.c/loop-3.c
  3e1854d7c928c20929261995df919755  libgomp/testsuite/libgomp.c/loop-4.c
  4537e604838f3ef6d5be6400a2725e3d  libgomp/testsuite/libgomp.c/loop-5.c
*************** fcf0b70da92fc55e6cdd5d1a77923dc3  libgom
*** 87580,87588 ****
  a28f0449c06d99dd5b700e4d3e6bc6f9  libgomp/testsuite/libgomp.c/loop-7.c
  b0f5c1da84528f7536416837c59936a3  libgomp/testsuite/libgomp.c/loop-8.c
  675d1d2731b881ab81851bc2a4026c37  libgomp/testsuite/libgomp.c/loop-9.c
! b2897ef36f9aca9073affdb0f5ffe1ec  libgomp/testsuite/libgomp.c/nested-1.c
! 3e3d86fcad02e1203d498b0545982d22  libgomp/testsuite/libgomp.c/nested-2.c
! d253fe7cc31f0d382c1073294eb85ffc  libgomp/testsuite/libgomp.c/nested-3.c
  726d0ef78ecb6dd92379c6d84e18a9c7  libgomp/testsuite/libgomp.c/nestedfn-1.c
  48b7f93dc451cc15a3beb0cecceade08  libgomp/testsuite/libgomp.c/nestedfn-2.c
  d8d9ea68baada1a29a137d38c8c2206b  libgomp/testsuite/libgomp.c/nestedfn-3.c
--- 93732,93740 ----
  a28f0449c06d99dd5b700e4d3e6bc6f9  libgomp/testsuite/libgomp.c/loop-7.c
  b0f5c1da84528f7536416837c59936a3  libgomp/testsuite/libgomp.c/loop-8.c
  675d1d2731b881ab81851bc2a4026c37  libgomp/testsuite/libgomp.c/loop-9.c
! d84bb51b8ed9d10332e1e2199d17e364  libgomp/testsuite/libgomp.c/nested-1.c
! 1d1a9a5fca15cd4628e275afcbca97e9  libgomp/testsuite/libgomp.c/nested-2.c
! accdda3ec5d8ad880d3578643fdff519  libgomp/testsuite/libgomp.c/nested-3.c
  726d0ef78ecb6dd92379c6d84e18a9c7  libgomp/testsuite/libgomp.c/nestedfn-1.c
  48b7f93dc451cc15a3beb0cecceade08  libgomp/testsuite/libgomp.c/nestedfn-2.c
  d8d9ea68baada1a29a137d38c8c2206b  libgomp/testsuite/libgomp.c/nestedfn-3.c
*************** c522146f1617da47efbc34dedb563f61  libgom
*** 87631,87645 ****
  ded5bb2e545637b6c82a610e436c8a30  libgomp/testsuite/libgomp.c/pr29947-1.c
  aa5a778f080a2db992fd129c08db2106  libgomp/testsuite/libgomp.c/pr29947-2.c
  791a3c4b8c8bdd23a07dc3806890f63a  libgomp/testsuite/libgomp.c/pr30494.c
! 9ae208ba6a38f23ffc2aef22a10e420c  libgomp/testsuite/libgomp.c/pr32362-1.c
! 5eb212d5a2c3542183e47f1d48258e6f  libgomp/testsuite/libgomp.c/pr32362-2.c
! 40521ce2862d3edf802c828264ea9ceb  libgomp/testsuite/libgomp.c/pr32362-3.c
  c2c2b58b5bf9fa99cfbeeda1195da0a3  libgomp/testsuite/libgomp.c/pr32468.c
  dfaa61e4059d184085b04f03c6c34868  libgomp/testsuite/libgomp.c/pr33880.c
  305f9885421a3563778dc747ec1a453a  libgomp/testsuite/libgomp.c/pr34513.c
  6d096a8801d0edc2992c0a34931461c3  libgomp/testsuite/libgomp.c/pr35130.c
  531ab9e555fb0383a766159755df6dae  libgomp/testsuite/libgomp.c/pr35196.c
! 2597d1eed6d5e20646a2075e8b698537  libgomp/testsuite/libgomp.c/pr35549.c
  3085bd3ed5d539ec6496f9a6e7143047  libgomp/testsuite/libgomp.c/pr35625.c
  01da017caeffa1182d40f6cdd9fe9f10  libgomp/testsuite/libgomp.c/pr36802-1.c
  9b08dbf8190693ccdebb9daafaace75b  libgomp/testsuite/libgomp.c/pr36802-2.c
--- 93783,93797 ----
  ded5bb2e545637b6c82a610e436c8a30  libgomp/testsuite/libgomp.c/pr29947-1.c
  aa5a778f080a2db992fd129c08db2106  libgomp/testsuite/libgomp.c/pr29947-2.c
  791a3c4b8c8bdd23a07dc3806890f63a  libgomp/testsuite/libgomp.c/pr30494.c
! dc88b63113bf127240dd0f71c296751a  libgomp/testsuite/libgomp.c/pr32362-1.c
! 7b7c1ac115d6749f143461a19eb9512d  libgomp/testsuite/libgomp.c/pr32362-2.c
! 391713125d6a74e358b758ab008d3b46  libgomp/testsuite/libgomp.c/pr32362-3.c
  c2c2b58b5bf9fa99cfbeeda1195da0a3  libgomp/testsuite/libgomp.c/pr32468.c
  dfaa61e4059d184085b04f03c6c34868  libgomp/testsuite/libgomp.c/pr33880.c
  305f9885421a3563778dc747ec1a453a  libgomp/testsuite/libgomp.c/pr34513.c
  6d096a8801d0edc2992c0a34931461c3  libgomp/testsuite/libgomp.c/pr35130.c
  531ab9e555fb0383a766159755df6dae  libgomp/testsuite/libgomp.c/pr35196.c
! 38191e85a7e2c12f5a3f3da7ca73dd39  libgomp/testsuite/libgomp.c/pr35549.c
  3085bd3ed5d539ec6496f9a6e7143047  libgomp/testsuite/libgomp.c/pr35625.c
  01da017caeffa1182d40f6cdd9fe9f10  libgomp/testsuite/libgomp.c/pr36802-1.c
  9b08dbf8190693ccdebb9daafaace75b  libgomp/testsuite/libgomp.c/pr36802-2.c
*************** e6e85a95036d356cc79f52a34c50bcff  libgom
*** 87650,87656 ****
  303b20aba875482b4c82fbff22e10e03  libgomp/testsuite/libgomp.c/pr39591-2.c
  a09e656e44149f1bcaf7519d9cfea66c  libgomp/testsuite/libgomp.c/pr39591-3.c
  006c9241a06131d8b1ad87c0a7a58349  libgomp/testsuite/libgomp.c/pr42029.c
! 965ea816877f4bf791f4bf1a1aeef3cf  libgomp/testsuite/libgomp.c/pr42942.c
  3b6d62c4c9f8e8ce4656f6342157558e  libgomp/testsuite/libgomp.c/pr43893.c
  98e5e0392d559ee3428b62c6dfa93e0c  libgomp/testsuite/libgomp.c/pr46032-2.c
  014ad41df9153b87675e7db55d0b87e9  libgomp/testsuite/libgomp.c/pr46032.c
--- 93802,93808 ----
  303b20aba875482b4c82fbff22e10e03  libgomp/testsuite/libgomp.c/pr39591-2.c
  a09e656e44149f1bcaf7519d9cfea66c  libgomp/testsuite/libgomp.c/pr39591-3.c
  006c9241a06131d8b1ad87c0a7a58349  libgomp/testsuite/libgomp.c/pr42029.c
! 9833af43747691db1943582bcdcaaa5c  libgomp/testsuite/libgomp.c/pr42942.c
  3b6d62c4c9f8e8ce4656f6342157558e  libgomp/testsuite/libgomp.c/pr43893.c
  98e5e0392d559ee3428b62c6dfa93e0c  libgomp/testsuite/libgomp.c/pr46032-2.c
  014ad41df9153b87675e7db55d0b87e9  libgomp/testsuite/libgomp.c/pr46032.c
*************** a4e264055265ee01b91f6f62b639ce64  libgom
*** 87664,87670 ****
  57e6b92443be755bf3396ed062a9c769  libgomp/testsuite/libgomp.c/pr52547.c
  7847fed30380539b9a7a67a436d605df  libgomp/testsuite/libgomp.c/pr58392.c
  571cb766c5a5c80766ae412322b1b824  libgomp/testsuite/libgomp.c/pr58756.c
! a5c8ec3cb2fa7cde29cb39cc0b9b66fc  libgomp/testsuite/libgomp.c/pr61200.c
  be881f5cc9989977aeedb5b25a571556  libgomp/testsuite/libgomp.c/pr64734.c
  c28350ecdcc618f3d0482bc83f7bbdcb  libgomp/testsuite/libgomp.c/pr66133.c
  0687dd4d8ae99f4e978b76d42978a0a5  libgomp/testsuite/libgomp.c/pr66714.c
--- 93816,93822 ----
  57e6b92443be755bf3396ed062a9c769  libgomp/testsuite/libgomp.c/pr52547.c
  7847fed30380539b9a7a67a436d605df  libgomp/testsuite/libgomp.c/pr58392.c
  571cb766c5a5c80766ae412322b1b824  libgomp/testsuite/libgomp.c/pr58756.c
! 35eb6ba6a4b9d74003bb15491b583c8c  libgomp/testsuite/libgomp.c/pr61200.c
  be881f5cc9989977aeedb5b25a571556  libgomp/testsuite/libgomp.c/pr64734.c
  c28350ecdcc618f3d0482bc83f7bbdcb  libgomp/testsuite/libgomp.c/pr66133.c
  0687dd4d8ae99f4e978b76d42978a0a5  libgomp/testsuite/libgomp.c/pr66714.c
*************** ed00c0e197dcbbf46f44ea320b473f78  libgom
*** 87688,87693 ****
--- 93840,93847 ----
  647c1c2e346c7cfa972582b2d830c004  libgomp/testsuite/libgomp.c/pr90779.c
  c809670e9df5e9371adcd7582c352fe5  libgomp/testsuite/libgomp.c/pr90811.c
  f8cba5bb3699e3f485284509b6e62be1  libgomp/testsuite/libgomp.c/pr93566.c
+ 4bb680cff61e18f2ea352bea8bb8c120  libgomp/testsuite/libgomp.c/pr95620.c
+ 5f704d7ceb2f2c83dc54e374e9bece7c  libgomp/testsuite/libgomp.c/pr99555-1.c
  2a0a447db3ae892c0c62b0136b00360e  libgomp/testsuite/libgomp.c/priority.c
  1e5ea8fc34fa3f534cb09856ee80711f  libgomp/testsuite/libgomp.c/private-1.c
  a594cebdf052900dd0c8792068e14d85  libgomp/testsuite/libgomp.c/reduction-1.c
*************** a2fe1187196581f584947961e875b325  libgom
*** 87747,87753 ****
  e770a162e63a8ef14578c664c60a1609  libgomp/testsuite/libgomp.c/simd-9.c
  21b382f164a90f3510cb97d72b5288b0  libgomp/testsuite/libgomp.c/single-1.c
  f96d46491425528d3d7b30c80c64952a  libgomp/testsuite/libgomp.c/single-2.c
! d0eb12d4db0380864ee557701bf2ffbd  libgomp/testsuite/libgomp.c/sort-1.c
  fe7fdb3688e9cc0090e8bf29500cd119  libgomp/testsuite/libgomp.c/static-chunk-size-one.c
  b100c329df163acfa97656a24a5c1bb9  libgomp/testsuite/libgomp.c/switch-conversion-2.c
  7c841b55fe2c0baa3b9aa8b2656a1d60  libgomp/testsuite/libgomp.c/switch-conversion.c
--- 93901,93907 ----
  e770a162e63a8ef14578c664c60a1609  libgomp/testsuite/libgomp.c/simd-9.c
  21b382f164a90f3510cb97d72b5288b0  libgomp/testsuite/libgomp.c/single-1.c
  f96d46491425528d3d7b30c80c64952a  libgomp/testsuite/libgomp.c/single-2.c
! eed557effb2ec344dd9cfde4cdefdf74  libgomp/testsuite/libgomp.c/sort-1.c
  fe7fdb3688e9cc0090e8bf29500cd119  libgomp/testsuite/libgomp.c/static-chunk-size-one.c
  b100c329df163acfa97656a24a5c1bb9  libgomp/testsuite/libgomp.c/switch-conversion-2.c
  7c841b55fe2c0baa3b9aa8b2656a1d60  libgomp/testsuite/libgomp.c/switch-conversion.c
*************** cfb96280c2ccf2711f5cc008a7b246ae  libgom
*** 87772,87787 ****
  b7efacf79d1aeccedabb2bb25be9f758  libgomp/testsuite/libgomp.c/target-3.c
  89b93437359f4de22f03c55eb9283547  libgomp/testsuite/libgomp.c/target-30.c
  fb05ccdba2c69c6ada8c59531dc61e6b  libgomp/testsuite/libgomp.c/target-31.c
! b1d109faffe0cd8b3129628be12bc293  libgomp/testsuite/libgomp.c/target-32.c
  bccccd438324ee9e479d4e3a0bdb6d81  libgomp/testsuite/libgomp.c/target-33.c
  1ac6fb011b9f01d7645493e720fffe9b  libgomp/testsuite/libgomp.c/target-34.c
  39197232f51c6d357b1433cbac40474e  libgomp/testsuite/libgomp.c/target-35.c
  8ceaf60bd931304015eb3da87ed4570f  libgomp/testsuite/libgomp.c/target-36.c
  afd63367e7cb3f8df5a7702805b4f9d2  libgomp/testsuite/libgomp.c/target-37.c
  42c91dcf309f915341e77cf7bc7b46ea  libgomp/testsuite/libgomp.c/target-38.c
  2976dbc7a685197058903e4113919f62  libgomp/testsuite/libgomp.c/target-4.c
! 4ebf32f910116d66ca9d291de6853ff9  libgomp/testsuite/libgomp.c/target-5.c
! 478dec9f49fcb1b67e9fe82cbb95d254  libgomp/testsuite/libgomp.c/target-6.c
  a9b2ad991bd60cd4cd6ef4a68071bee6  libgomp/testsuite/libgomp.c/target-7.c
  9249f482d7291a60ed32df9743b496fb  libgomp/testsuite/libgomp.c/target-8.c
  59acb9b212e99b3f1ea3d1a543acdd3d  libgomp/testsuite/libgomp.c/target-9.c
--- 93926,93945 ----
  b7efacf79d1aeccedabb2bb25be9f758  libgomp/testsuite/libgomp.c/target-3.c
  89b93437359f4de22f03c55eb9283547  libgomp/testsuite/libgomp.c/target-30.c
  fb05ccdba2c69c6ada8c59531dc61e6b  libgomp/testsuite/libgomp.c/target-31.c
! dceaa3615119793c5e2cc8a17d2db8bf  libgomp/testsuite/libgomp.c/target-32.c
  bccccd438324ee9e479d4e3a0bdb6d81  libgomp/testsuite/libgomp.c/target-33.c
  1ac6fb011b9f01d7645493e720fffe9b  libgomp/testsuite/libgomp.c/target-34.c
  39197232f51c6d357b1433cbac40474e  libgomp/testsuite/libgomp.c/target-35.c
  8ceaf60bd931304015eb3da87ed4570f  libgomp/testsuite/libgomp.c/target-36.c
  afd63367e7cb3f8df5a7702805b4f9d2  libgomp/testsuite/libgomp.c/target-37.c
  42c91dcf309f915341e77cf7bc7b46ea  libgomp/testsuite/libgomp.c/target-38.c
+ 30443acc8daefd5d19442cdbebdf89c9  libgomp/testsuite/libgomp.c/target-39.c
  2976dbc7a685197058903e4113919f62  libgomp/testsuite/libgomp.c/target-4.c
! 8709eb7110674b1efddc628092eb42bc  libgomp/testsuite/libgomp.c/target-40.c
! c9e80fc96a8f99538398f336cf472679  libgomp/testsuite/libgomp.c/target-41.c
! d067438963387572140642a66e0fc4e4  libgomp/testsuite/libgomp.c/target-42.c
! 4dea939b912f361c60b8386c2e6ffb84  libgomp/testsuite/libgomp.c/target-5.c
! 28d4b1be162344df6352a5d813c023fb  libgomp/testsuite/libgomp.c/target-6.c
  a9b2ad991bd60cd4cd6ef4a68071bee6  libgomp/testsuite/libgomp.c/target-7.c
  9249f482d7291a60ed32df9743b496fb  libgomp/testsuite/libgomp.c/target-8.c
  59acb9b212e99b3f1ea3d1a543acdd3d  libgomp/testsuite/libgomp.c/target-9.c
*************** d4661425a651c88d20ba240b4b095d25  libgom
*** 87798,87818 ****
  38213b90919e07d4d9f35aca2fd48cdd  libgomp/testsuite/libgomp.c/task-reduction-1.c
  ccf79f1a3cd3d9897f6ea88c19bfbdc8  libgomp/testsuite/libgomp.c/task-reduction-2.c
  e25fde9ed6b03c3c743ea8cf6c8eaa3e  libgomp/testsuite/libgomp.c/task-reduction-3.c
! 8f3987fb26389f7b68ec00353f2b2a18  libgomp/testsuite/libgomp.c/teams-1.c
  37b3daacf6336034e4ee7c938d7fc2ef  libgomp/testsuite/libgomp.c/teams-2.c
  8f9a5283e3b48bb452ccf9f17b6bf998  libgomp/testsuite/libgomp.c/teams-3.c
! 99028484e29de30f98a28ae8f9667616  libgomp/testsuite/libgomp.c/thread-limit-1.c
! c51095e89e7d25c69a19796fdd4d5257  libgomp/testsuite/libgomp.c/thread-limit-2.c
  099b6f9e6fd2c4becb3b005b67c87003  libgomp/testsuite/libgomp.c/thread-limit-3.c
! 95b100076076536a30b57c61cfd96635  libgomp/testsuite/libgomp.c/thread-limit-4.c
  690f08837bbda19cd6c9f10de6e3376d  libgomp/testsuite/libgomp.c/thread-limit-5.c
  4e04bd947e2e4aa6b0d33535232575a6  libgomp/testsuite/libgomp.c/udr-2.c
  26a632a90e3b65f74ab6b734c3fd0d94  libgomp/testsuite/libgomp.c/udr-3.c
  edfe0cd950eb6d29688ffe6e38c87d10  libgomp/testsuite/libgomp.c/uns-outer-4.c
  35c4904668124586d73a652acb4ed703  libgomp/testsuite/libgomp.c/vla-1.c
! c6507fc0b39b314367d618a7592fbae1  libgomp/testsuite/libgomp.fortran/affinity1.f90
  a7ba1c005e2c0979fffc63313c6c2d42  libgomp/testsuite/libgomp.fortran/affinity2.f90
  b4e8ed1ab4338f0ccdabc2598d2e0973  libgomp/testsuite/libgomp.fortran/aligned1.f03
  20b043532a006fde073387f9a23e4054  libgomp/testsuite/libgomp.fortran/alloc-comp-1.f90
  21463b128d951cea6b4ea41176379b5c  libgomp/testsuite/libgomp.fortran/alloc-comp-2.f90
  678b373acad56382f04e66e2b24bc6c2  libgomp/testsuite/libgomp.fortran/alloc-comp-3.f90
--- 93956,93982 ----
  38213b90919e07d4d9f35aca2fd48cdd  libgomp/testsuite/libgomp.c/task-reduction-1.c
  ccf79f1a3cd3d9897f6ea88c19bfbdc8  libgomp/testsuite/libgomp.c/task-reduction-2.c
  e25fde9ed6b03c3c743ea8cf6c8eaa3e  libgomp/testsuite/libgomp.c/task-reduction-3.c
! 9f2f00d3e1ed329753822b8614fad257  libgomp/testsuite/libgomp.c/teams-1.c
  37b3daacf6336034e4ee7c938d7fc2ef  libgomp/testsuite/libgomp.c/teams-2.c
  8f9a5283e3b48bb452ccf9f17b6bf998  libgomp/testsuite/libgomp.c/teams-3.c
! 74e159f134df946b8d2bcebce46c6cf3  libgomp/testsuite/libgomp.c/thread-limit-1.c
! c489925b819c1df0808582fbb2b592cd  libgomp/testsuite/libgomp.c/thread-limit-2.c
  099b6f9e6fd2c4becb3b005b67c87003  libgomp/testsuite/libgomp.c/thread-limit-3.c
! 6ded7f74bd8b65e15dcfbb69dc9dd7c0  libgomp/testsuite/libgomp.c/thread-limit-4.c
  690f08837bbda19cd6c9f10de6e3376d  libgomp/testsuite/libgomp.c/thread-limit-5.c
  4e04bd947e2e4aa6b0d33535232575a6  libgomp/testsuite/libgomp.c/udr-2.c
  26a632a90e3b65f74ab6b734c3fd0d94  libgomp/testsuite/libgomp.c/udr-3.c
  edfe0cd950eb6d29688ffe6e38c87d10  libgomp/testsuite/libgomp.c/uns-outer-4.c
+ 6e82e5e252481546aea46d0ffe020ef9  libgomp/testsuite/libgomp.c/usleep.h
  35c4904668124586d73a652acb4ed703  libgomp/testsuite/libgomp.c/vla-1.c
! bc4cd825c8ad15fbafb7f2c60e6cab7c  libgomp/testsuite/libgomp.fortran/affinity1.f90
  a7ba1c005e2c0979fffc63313c6c2d42  libgomp/testsuite/libgomp.fortran/affinity2.f90
  b4e8ed1ab4338f0ccdabc2598d2e0973  libgomp/testsuite/libgomp.fortran/aligned1.f03
+ 6b755198be1d78cfe83494a9c5e1b2cb  libgomp/testsuite/libgomp.fortran/alloc-1.F90
+ cd56a1c8c06023889e5801d472bfd513  libgomp/testsuite/libgomp.fortran/alloc-2.F90
+ 7b4c534af5b5bc27d14a0f407856cdef  libgomp/testsuite/libgomp.fortran/alloc-3.F
+ 6d561b42c19202f65d0c78524b9803c5  libgomp/testsuite/libgomp.fortran/alloc-4.f90
+ 6426f3a0ec331dd77abdb2bb4f3f2150  libgomp/testsuite/libgomp.fortran/alloc-5.f90
  20b043532a006fde073387f9a23e4054  libgomp/testsuite/libgomp.fortran/alloc-comp-1.f90
  21463b128d951cea6b4ea41176379b5c  libgomp/testsuite/libgomp.fortran/alloc-comp-2.f90
  678b373acad56382f04e66e2b24bc6c2  libgomp/testsuite/libgomp.fortran/alloc-comp-3.f90
*************** a8a1d4819e69f862a14301cb3ed192c9  libgom
*** 87886,87897 ****
--- 94050,94064 ----
  c930836635408ae2f513d5a829fcac58  libgomp/testsuite/libgomp.fortran/crayptr1.f90
  5c72e66b85ebaa813cafc7e498afdc78  libgomp/testsuite/libgomp.fortran/crayptr2.f90
  03cd1507e8a9e3a9d48b7a317bba1008  libgomp/testsuite/libgomp.fortran/crayptr3.f90
+ f83e1497def5d9050edf0d194ed99cab  libgomp/testsuite/libgomp.fortran/critical-hint-1.f90
+ 0724da8768603666f78c19f0f7748ddb  libgomp/testsuite/libgomp.fortran/critical-hint-2.f90
  195704dc31f8244affcdcab3cba3b2c5  libgomp/testsuite/libgomp.fortran/declare-simd-1.f90
  c0ebd55529e9baf82532c7b2f51f3fe4  libgomp/testsuite/libgomp.fortran/declare-simd-2.f90
  8ca22b63783876ef9de275258422a06a  libgomp/testsuite/libgomp.fortran/declare-simd-3.f90
  4aa1fe4701d5e31226d8165c2fb26718  libgomp/testsuite/libgomp.fortran/declare-simd-4.f90
  764201860dc811d06aced27b2b1a3637  libgomp/testsuite/libgomp.fortran/declare-target-1.f90
  b7af5ebe63291dc93c626e43d6f57175  libgomp/testsuite/libgomp.fortran/declare-target-2.f90
+ 49813561cddcf22ee10c7f9de89f62c3  libgomp/testsuite/libgomp.fortran/declare-target-3.f90
  085b168af19aac8a6dd4f31eda256d5c  libgomp/testsuite/libgomp.fortran/depend-1.f90
  f528c60f59b52a75c434ced5c9a53e30  libgomp/testsuite/libgomp.fortran/depend-2.f90
  7ebb6e3f3faa4674c639dfcc079e08dc  libgomp/testsuite/libgomp.fortran/depend-3.f90
*************** a0fea6593244c117295ec1c75e63b64f  libgom
*** 87948,87963 ****
  02624408febf6ba2958380cf587a6f5f  libgomp/testsuite/libgomp.fortran/examples-4/teams-5.f90
  e3121f156cff11c333c32e13f4f02f1c  libgomp/testsuite/libgomp.fortran/examples-4/teams-6.f90
  f221242394d1d1eed14fbd76d9a03c2f  libgomp/testsuite/libgomp.fortran/fortran.exp
  c25692d207e679ebce7864339e12a85f  libgomp/testsuite/libgomp.fortran/jacobi.f
  ae72f9bef5c27e6ae84ab0ff6ee16399  libgomp/testsuite/libgomp.fortran/lastprivate1.f90
  c845e7034250759b9b08ddeeb577af4d  libgomp/testsuite/libgomp.fortran/lastprivate2.f90
! 9eb1668b918c39413dafb8e82277a1b4  libgomp/testsuite/libgomp.fortran/lib1.f90
! 2a2bc2bab6cf13ee165852de0434ecf0  libgomp/testsuite/libgomp.fortran/lib2.f
  fbe0e124aba46c9f69f236a8199dee70  libgomp/testsuite/libgomp.fortran/lib3.f
! 9073b5b90f5620d38e4d28b42a68c0a0  libgomp/testsuite/libgomp.fortran/lib4.f90
  7122ffee4ad568a67d404fe06da86cf8  libgomp/testsuite/libgomp.fortran/lock-1.f90
  12b2386c008a817a32688ca1ae228c42  libgomp/testsuite/libgomp.fortran/lock-2.f90
! d68f348a8639ed38120e2da254abaecc  libgomp/testsuite/libgomp.fortran/nested1.f90
  d85fd25e4c208bee65d5780465935a3c  libgomp/testsuite/libgomp.fortran/nestedfn1.f90
  7aabebf18cc6b5bbbdc0f8f4a85f1a60  libgomp/testsuite/libgomp.fortran/nestedfn2.f90
  13f8ef8330f5457c54434b768f4ed844  libgomp/testsuite/libgomp.fortran/nestedfn3.f90
--- 94115,94134 ----
  02624408febf6ba2958380cf587a6f5f  libgomp/testsuite/libgomp.fortran/examples-4/teams-5.f90
  e3121f156cff11c333c32e13f4f02f1c  libgomp/testsuite/libgomp.fortran/examples-4/teams-6.f90
  f221242394d1d1eed14fbd76d9a03c2f  libgomp/testsuite/libgomp.fortran/fortran.exp
+ 1d7f490f3aa22662cdd277712b26a462  libgomp/testsuite/libgomp.fortran/is_device_ptr-1.f90
  c25692d207e679ebce7864339e12a85f  libgomp/testsuite/libgomp.fortran/jacobi.f
+ de6f55a3f86dc416877253cfdf1ab448  libgomp/testsuite/libgomp.fortran/lastprivate-conditional-10.f90
  ae72f9bef5c27e6ae84ab0ff6ee16399  libgomp/testsuite/libgomp.fortran/lastprivate1.f90
  c845e7034250759b9b08ddeeb577af4d  libgomp/testsuite/libgomp.fortran/lastprivate2.f90
! bef133e4d3cf823ac34bff98a44d05ad  libgomp/testsuite/libgomp.fortran/lib1.f90
! 650bd5daf8df9ced6b7c318d3e3a7222  libgomp/testsuite/libgomp.fortran/lib2.f
  fbe0e124aba46c9f69f236a8199dee70  libgomp/testsuite/libgomp.fortran/lib3.f
! edb8cf0884ac73fb59ab5c66f1acb3ad  libgomp/testsuite/libgomp.fortran/lib4.f90
  7122ffee4ad568a67d404fe06da86cf8  libgomp/testsuite/libgomp.fortran/lock-1.f90
  12b2386c008a817a32688ca1ae228c42  libgomp/testsuite/libgomp.fortran/lock-2.f90
! f4ad2acbc3bf213777f658e4581eb805  libgomp/testsuite/libgomp.fortran/map-alloc-ptr-1.f90
! 794f9311ffd6c98b9329dc06aa6a39e3  libgomp/testsuite/libgomp.fortran/map-alloc-ptr-2.f90
! 34e118b4de7cfbd20c7427abb1d4c7e5  libgomp/testsuite/libgomp.fortran/nested1.f90
  d85fd25e4c208bee65d5780465935a3c  libgomp/testsuite/libgomp.fortran/nestedfn1.f90
  7aabebf18cc6b5bbbdc0f8f4a85f1a60  libgomp/testsuite/libgomp.fortran/nestedfn2.f90
  13f8ef8330f5457c54434b768f4ed844  libgomp/testsuite/libgomp.fortran/nestedfn3.f90
*************** d09da57ba1fe6d1b566373765f254243  libgom
*** 87981,87986 ****
--- 94152,94158 ----
  c910dfe57b9f53b8992d397c3571fd09  libgomp/testsuite/libgomp.fortran/omp_reduction.f
  77c80068c3418c0e379971a5e4ac91f1  libgomp/testsuite/libgomp.fortran/omp_workshare1.f
  4c7b256074253b51c44fe0f469b4512e  libgomp/testsuite/libgomp.fortran/omp_workshare2.f
+ 3e8aa59e7a86d28bacafdfab584f0a22  libgomp/testsuite/libgomp.fortran/on_device_arch.c
  8aa12e7dad422c429a80a15a029ca3b8  libgomp/testsuite/libgomp.fortran/openmp_version-1.f
  652c29cde1daaffead2dae0cc54aa9a7  libgomp/testsuite/libgomp.fortran/openmp_version-2.f90
  57b1c325fdc9d4288e335bb56037d1c3  libgomp/testsuite/libgomp.fortran/optional-map.f90
*************** dfdf03d556a272c57311f1f4636f68b6  libgom
*** 88012,88017 ****
--- 94184,94196 ----
  3d70b22328a8221a4c872fe01bd197f8  libgomp/testsuite/libgomp.fortran/pr65597.f90
  3dc4f93b187eb942cbb533ff37d1c260  libgomp/testsuite/libgomp.fortran/pr66199-1.f90
  fb0cca89b35e42c1ec536e2b805e62d7  libgomp/testsuite/libgomp.fortran/pr66199-2.f90
+ b5464a5fc3b2177dbbb7914f889eec6a  libgomp/testsuite/libgomp.fortran/pr66199-3.f90
+ f6accf43fa1fb8544d4e6b8a5d2cd85e  libgomp/testsuite/libgomp.fortran/pr66199-4.f90
+ aa6261722179d6c6be29b56e7795f174  libgomp/testsuite/libgomp.fortran/pr66199-5.f90
+ ce8e1fbc4db3adaa2b297432396e8348  libgomp/testsuite/libgomp.fortran/pr66199-6.f90
+ 53dbe9ec11948039c4974efbd22a613e  libgomp/testsuite/libgomp.fortran/pr66199-7.f90
+ ab0522068e155161821bdc393a61ff35  libgomp/testsuite/libgomp.fortran/pr66199-8.f90
+ 50f265bbf0ad2bb346fd3ea8a4b366d3  libgomp/testsuite/libgomp.fortran/pr66199-9.f90
  090e14b3e3d9a95dbcd195aca47aeedf  libgomp/testsuite/libgomp.fortran/pr66680.f90
  74d726caa21c3b77517b0de832c84632  libgomp/testsuite/libgomp.fortran/pr71014.f90
  eaeadf99271f326c16618e5bfa7fa387  libgomp/testsuite/libgomp.fortran/pr71734-1.f90
*************** c7db4b5dee9ac08d55532ef8375a0a44  libgom
*** 88024,88029 ****
--- 94203,94209 ----
  10dbdf5281da9c9f304148a51eebb319  libgomp/testsuite/libgomp.fortran/pr88463-2.f90
  6a708c6e46808f6d4af2fd68ad5aac1a  libgomp/testsuite/libgomp.fortran/pr90779.f90
  525a2158ec6cd5547def75322fa30912  libgomp/testsuite/libgomp.fortran/pr93553.f90
+ 8b1a074bf6ac8ea5010df757cd5d381f  libgomp/testsuite/libgomp.fortran/pr95654.f90
  1a0d9a55fff1fc09bbe94b9bf7578792  libgomp/testsuite/libgomp.fortran/procptr1.f90
  c1a53ea8789c3861561b7fb5726a9ba2  libgomp/testsuite/libgomp.fortran/recursion1.f90
  b86e035d24babf0c6f9d3607c02b652e  libgomp/testsuite/libgomp.fortran/reduction1.f90
*************** ad73f3cdfa6093602117e056e552a92e  libgom
*** 88036,88041 ****
--- 94216,94222 ----
  50d442710afd759c4aa50c0567fff8cb  libgomp/testsuite/libgomp.fortran/reference2.f90
  87ff32e5b6410cb8d684b7aa6daa7822  libgomp/testsuite/libgomp.fortran/retval1.f90
  fcd96d03b20dba6577d8b95c225c2827  libgomp/testsuite/libgomp.fortran/retval2.f90
+ f94173449f0106660c3c83b7da6eb1b2  libgomp/testsuite/libgomp.fortran/scan-1.f90
  e4cf951d5826f38fd2445b2bd21a6f3b  libgomp/testsuite/libgomp.fortran/sharing1.f90
  fb3e4ec0015a50f8ddd3f6a1306e2627  libgomp/testsuite/libgomp.fortran/sharing2.f90
  4b323aab0234bc26e21f874065725efd  libgomp/testsuite/libgomp.fortran/simd1.f90
*************** b6d9358584962acfea41fdb687af3cf6  libgom
*** 88047,88058 ****
--- 94228,94241 ----
  be3637f31c89db03d70d9033e00bc86b  libgomp/testsuite/libgomp.fortran/simd7.f90
  c404adfb5e1e175f034e3ec64a2d8553  libgomp/testsuite/libgomp.fortran/stack.f90
  0468e11ca87799d9ff54db3416afc90f  libgomp/testsuite/libgomp.fortran/strassen.f90
+ b0c4d7d8991d26105163a63641eb9f46  libgomp/testsuite/libgomp.fortran/struct-elem-map-1.f90
  662ace7f2e660ef85ab05666191e4606  libgomp/testsuite/libgomp.fortran/tabs1.f90
  6bdb484b10f4cf6e378b081ae20083f6  libgomp/testsuite/libgomp.fortran/tabs2.f
  063a24dc5c19b2adb2c5fcb0b05a58a4  libgomp/testsuite/libgomp.fortran/target-allocatable-1-1.f90
  89c53be6c76a8902941180b26848ae9b  libgomp/testsuite/libgomp.fortran/target-allocatable-1-2.f90
  f3e9642d4302feea21de2d2b9f5ca654  libgomp/testsuite/libgomp.fortran/target-enter-data-1.f90
  10cc37e35fda6c7ed2cff8cf2f9f8371  libgomp/testsuite/libgomp.fortran/target-enter-data-2.F90
+ c8674726b7e6d033a64557c340289db9  libgomp/testsuite/libgomp.fortran/target-map-1.f90
  7e2f3e496520976a37df3ba992f7f69a  libgomp/testsuite/libgomp.fortran/target-print-1-nvptx.f90
  bc18d7dcb406b7660308046e178bba0d  libgomp/testsuite/libgomp.fortran/target-print-1.f90
  b7c20b004458fd9909db3090ddfcd1d8  libgomp/testsuite/libgomp.fortran/target-simd.f90
*************** c7cbb1fd57ef2663e3293bb979181399  libgom
*** 88066,88071 ****
--- 94249,94265 ----
  b1889638e28c31a67ab996e01c764b45  libgomp/testsuite/libgomp.fortran/target7.f90
  675782568bedb5bd5daef132e71aac8c  libgomp/testsuite/libgomp.fortran/target8.f90
  dcfe27eb9dec5095293470aaba48e94a  libgomp/testsuite/libgomp.fortran/target9.f90
+ 93803cea6999dc2ffa26c3d175258645  libgomp/testsuite/libgomp.fortran/task-detach-1.f90
+ 1eae3488d7432161fa4f226b22586c85  libgomp/testsuite/libgomp.fortran/task-detach-10.f90
+ 2113abfbdfd00b964b78ee5b3d807d29  libgomp/testsuite/libgomp.fortran/task-detach-11.f90
+ 4f07616ac0212ff835681c9d3d250314  libgomp/testsuite/libgomp.fortran/task-detach-2.f90
+ 2684d47a634cb6a69da9f20d4837c35c  libgomp/testsuite/libgomp.fortran/task-detach-3.f90
+ 034c0352697e1a21933626072ccb4d81  libgomp/testsuite/libgomp.fortran/task-detach-4.f90
+ 247136c819572f09a1c2db8e5f41ed1d  libgomp/testsuite/libgomp.fortran/task-detach-5.f90
+ fa9e29d2f58ab9c04a5bc5a1a3876da2  libgomp/testsuite/libgomp.fortran/task-detach-6.f90
+ 590b516f04de7ece4ed42eb82e4c487f  libgomp/testsuite/libgomp.fortran/task-detach-7.f90
+ a46ae26255d516b8ed937dff6c28ec1d  libgomp/testsuite/libgomp.fortran/task-detach-8.f90
+ f2450ae8387ba84e68f4b97807a8092e  libgomp/testsuite/libgomp.fortran/task-detach-9.f90
  113de27610157d8cdd9794598566ad24  libgomp/testsuite/libgomp.fortran/task1.f90
  2675d60a88dcd376d85a3b69e41997be  libgomp/testsuite/libgomp.fortran/task2.f90
  d0a3dcc41da194a892e1d5818a58e3fb  libgomp/testsuite/libgomp.fortran/task3.f90
*************** e51a40daef7d1ce1e50dfdd1b278cad2  libgom
*** 88075,88081 ****
  98a35e139eeb4252f32bce147d6909a7  libgomp/testsuite/libgomp.fortran/taskloop2.f90
  beee9d3f7311fb5afea95ed2904ade4d  libgomp/testsuite/libgomp.fortran/taskloop3.f90
  5abe0f692be4e8a434110d635cdfc8ad  libgomp/testsuite/libgomp.fortran/taskloop4.f90
! 258e19f475c4f5b6a0167b06ec4b2ab7  libgomp/testsuite/libgomp.fortran/teams1.f90
  271e42e9ae5699ce11bdb626da4f303e  libgomp/testsuite/libgomp.fortran/teams2.f90
  68c582cd53392d927b924261c0a0a9ae  libgomp/testsuite/libgomp.fortran/threadprivate1.f90
  25a920544d3094734b29affc551ff0ef  libgomp/testsuite/libgomp.fortran/threadprivate2.f90
--- 94269,94275 ----
  98a35e139eeb4252f32bce147d6909a7  libgomp/testsuite/libgomp.fortran/taskloop2.f90
  beee9d3f7311fb5afea95ed2904ade4d  libgomp/testsuite/libgomp.fortran/taskloop3.f90
  5abe0f692be4e8a434110d635cdfc8ad  libgomp/testsuite/libgomp.fortran/taskloop4.f90
! 346d467e4a3734eae3741cf486561f31  libgomp/testsuite/libgomp.fortran/teams1.f90
  271e42e9ae5699ce11bdb626da4f303e  libgomp/testsuite/libgomp.fortran/teams2.f90
  68c582cd53392d927b924261c0a0a9ae  libgomp/testsuite/libgomp.fortran/threadprivate1.f90
  25a920544d3094734b29affc551ff0ef  libgomp/testsuite/libgomp.fortran/threadprivate2.f90
*************** b1f5d4bd212151ec10ee5fcb2e86e8a9  libgom
*** 88101,88106 ****
--- 94295,94301 ----
  9161a2c67f2086d26842275e652c2d09  libgomp/testsuite/libgomp.fortran/use_device_addr-3.f90
  0f0739055024a52f6c6062614fefcd20  libgomp/testsuite/libgomp.fortran/use_device_addr-4.f90
  27c3a980a8e94305bd6a957c7ea5dbd8  libgomp/testsuite/libgomp.fortran/use_device_ptr-1.f90
+ d58b22d6389008961e84f8a1b3d9a8f9  libgomp/testsuite/libgomp.fortran/use_device_ptr-3.f90
  5b0545422a5d32741adf1b28e189108a  libgomp/testsuite/libgomp.fortran/use_device_ptr-optional-1.f90
  95257bb64bc7b70916e7cf5e4c13ac0a  libgomp/testsuite/libgomp.fortran/use_device_ptr-optional-2.f90
  2b347c1c7f2cbe98905e1b48f453f08c  libgomp/testsuite/libgomp.fortran/use_device_ptr-optional-3.f90
*************** bc89329871a4063322c6c6a75033c327  libgom
*** 88125,88157 ****
  c7c454ddd0e7815a3bcc65d728543f0c  libgomp/testsuite/libgomp.graphite/force-parallel-7.c
  5a66165f62acdcd93ac4a96fd04c5e7c  libgomp/testsuite/libgomp.graphite/force-parallel-8.c
  afbfc00298798c7c56e3095384ac408a  libgomp/testsuite/libgomp.graphite/force-parallel-9.c
! b35a8e67f7858c50f571200547c7c307  libgomp/testsuite/libgomp.graphite/graphite.exp
  b274f32716465c48bfe021ad40ae5184  libgomp/testsuite/libgomp.graphite/pr41118.c
! 0a779303dcec02073cd1bd3896a9c8a0  libgomp/testsuite/libgomp.hsa.c/alloca-1.c
! c45b0483802d40293ffe9d8967cd8615  libgomp/testsuite/libgomp.hsa.c/bitfield-1.c
! 70e5febf38e4088f5a8029e7a7df0543  libgomp/testsuite/libgomp.hsa.c/bits-insns.c
! f3d2ea4630d1fcb25d84b6ba89ae47f2  libgomp/testsuite/libgomp.hsa.c/builtins-1.c
! 6e3e2fc227f8fad61ddcb85fcddd983d  libgomp/testsuite/libgomp.hsa.c/c.exp
! 27fb32a6a737ec1b4f131bda0a196191  libgomp/testsuite/libgomp.hsa.c/complex-1.c
! 7c0ddbedd6b281bc9300f36374a8e5df  libgomp/testsuite/libgomp.hsa.c/complex-align-2.c
! 9ca2d40b0829f30ffd252bf29d77c6f6  libgomp/testsuite/libgomp.hsa.c/formal-actual-args-1.c
! 566a787a23dbfd923ff41ba6a4a30736  libgomp/testsuite/libgomp.hsa.c/function-call-1.c
! a4130e550c56fec85239c9db68e18fdb  libgomp/testsuite/libgomp.hsa.c/get-level-1.c
! dc940d7884c1ad83085cd0c95f9cf09d  libgomp/testsuite/libgomp.hsa.c/gridify-1.c
! ac88db0e71ccc4041bfe6d92218c8c42  libgomp/testsuite/libgomp.hsa.c/gridify-2.c
! ca035efd56fd9ee9889e49e15d34a627  libgomp/testsuite/libgomp.hsa.c/gridify-3.c
! e3624c56baad41a2af157335cb4fd08f  libgomp/testsuite/libgomp.hsa.c/gridify-4.c
! bd7a8c53d3879d79861d120ec876f119  libgomp/testsuite/libgomp.hsa.c/memory-operations-1.c
! 3dc56468bc91698c50d4295a20abbdd6  libgomp/testsuite/libgomp.hsa.c/pr69568.c
! 13a76d384f25b9b881feef571bd96cd6  libgomp/testsuite/libgomp.hsa.c/pr82416.c
! dfc590b024995313958247342296f179  libgomp/testsuite/libgomp.hsa.c/rotate-1.c
! 2b5674485ffa980a9acbcac729ad705b  libgomp/testsuite/libgomp.hsa.c/staticvar.c
! bfac6d74739b95deba27861d2be18215  libgomp/testsuite/libgomp.hsa.c/switch-1.c
! e410b9a2ecc042fbefbbbcff667b3510  libgomp/testsuite/libgomp.hsa.c/switch-branch-1.c
! ca9f24c1fc8b56e57a5e25787159b637  libgomp/testsuite/libgomp.hsa.c/switch-sbr-2.c
! 4dca1deb9f7dda8472ad9702722d0283  libgomp/testsuite/libgomp.hsa.c/tiling-1.c
! 76e6a7972a10292f8ca1718a7469d3b3  libgomp/testsuite/libgomp.hsa.c/tiling-2.c
! f66e0b33e2265795cf175514ef3e2c71  libgomp/testsuite/libgomp.oacc-c++/c++.exp
  453e6f1d9f502042e4ee6b8e52564c6a  libgomp/testsuite/libgomp.oacc-c++/cache-1.C
  b27cecd237d0e2ce459988833e90f28a  libgomp/testsuite/libgomp.oacc-c++/declare-1.C
  d4976186c6059f98d3a33b36f5c4d896  libgomp/testsuite/libgomp.oacc-c++/declare-pr94120.C
--- 94320,94328 ----
  c7c454ddd0e7815a3bcc65d728543f0c  libgomp/testsuite/libgomp.graphite/force-parallel-7.c
  5a66165f62acdcd93ac4a96fd04c5e7c  libgomp/testsuite/libgomp.graphite/force-parallel-8.c
  afbfc00298798c7c56e3095384ac408a  libgomp/testsuite/libgomp.graphite/force-parallel-9.c
! 5a1b6bfa5ae68b138afdba21d69ff0c4  libgomp/testsuite/libgomp.graphite/graphite.exp
  b274f32716465c48bfe021ad40ae5184  libgomp/testsuite/libgomp.graphite/pr41118.c
! a8440c7128038abbec4c5b0b8e057565  libgomp/testsuite/libgomp.oacc-c++/c++.exp
  453e6f1d9f502042e4ee6b8e52564c6a  libgomp/testsuite/libgomp.oacc-c++/cache-1.C
  b27cecd237d0e2ce459988833e90f28a  libgomp/testsuite/libgomp.oacc-c++/declare-1.C
  d4976186c6059f98d3a33b36f5c4d896  libgomp/testsuite/libgomp.oacc-c++/declare-pr94120.C
*************** a7e8657476ab5ede649a5fcf9baad94a  libgom
*** 88209,88215 ****
  f7a9b184b1fef89d4ba1d7e2bfcef9c5  libgomp/testsuite/libgomp.oacc-c-c++-common/asyncwait-1.c
  42da18fa72387c734c218d031aca73cc  libgomp/testsuite/libgomp.oacc-c-c++-common/asyncwait-nop-1.c
  cb001e314fc2dbfe743f56e927a54dce  libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_capture-1.c
! 7701cc2c5657c7e8793bdc8a296226d0  libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_capture-2.c
  97f62618e6e37c14b2b9ed17c7579fd0  libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_rw-1.c
  276fea47eb47f5b846d12e7f4013aaa1  libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_update-1.c
  760e768bc422654e755f3164d717aedf  libgomp/testsuite/libgomp.oacc-c-c++-common/broadcast-1.c
--- 94380,94386 ----
  f7a9b184b1fef89d4ba1d7e2bfcef9c5  libgomp/testsuite/libgomp.oacc-c-c++-common/asyncwait-1.c
  42da18fa72387c734c218d031aca73cc  libgomp/testsuite/libgomp.oacc-c-c++-common/asyncwait-nop-1.c
  cb001e314fc2dbfe743f56e927a54dce  libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_capture-1.c
! fbdb79613c9e4039ef079c21db73e11f  libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_capture-2.c
  97f62618e6e37c14b2b9ed17c7579fd0  libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_rw-1.c
  276fea47eb47f5b846d12e7f4013aaa1  libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_update-1.c
  760e768bc422654e755f3164d717aedf  libgomp/testsuite/libgomp.oacc-c-c++-common/broadcast-1.c
*************** cb001e314fc2dbfe743f56e927a54dce  libgom
*** 88217,88224 ****
  7075fc6b02473e696cc6447d68b597a9  libgomp/testsuite/libgomp.oacc-c-c++-common/clauses-1.c
  e69ad21264603585ada7277411b59fab  libgomp/testsuite/libgomp.oacc-c-c++-common/clauses-2.c
  a4310590c76fb5671abb7e599593076d  libgomp/testsuite/libgomp.oacc-c-c++-common/collapse-1.c
! 8c6d96e2b0eaf7dda2aebf6a2a46cb63  libgomp/testsuite/libgomp.oacc-c-c++-common/collapse-2.c
! 89f08493dc1d069d2b20c950dc3daeb3  libgomp/testsuite/libgomp.oacc-c-c++-common/collapse-3.c
  c32e2956c7c1bb85bd85fa3aecfc50c5  libgomp/testsuite/libgomp.oacc-c-c++-common/collapse-4.c
  19f2f5601f95ec58b09b95258b0818b1  libgomp/testsuite/libgomp.oacc-c-c++-common/combined-directives-1.c
  958046e6274805975b0db25945fb2609  libgomp/testsuite/libgomp.oacc-c-c++-common/combined-reduction.c
--- 94388,94395 ----
  7075fc6b02473e696cc6447d68b597a9  libgomp/testsuite/libgomp.oacc-c-c++-common/clauses-1.c
  e69ad21264603585ada7277411b59fab  libgomp/testsuite/libgomp.oacc-c-c++-common/clauses-2.c
  a4310590c76fb5671abb7e599593076d  libgomp/testsuite/libgomp.oacc-c-c++-common/collapse-1.c
! 323be94aff19a2ddd90fd7a2ebb0d734  libgomp/testsuite/libgomp.oacc-c-c++-common/collapse-2.c
! 5b7b19682332006afa07f4ed9893193e  libgomp/testsuite/libgomp.oacc-c-c++-common/collapse-3.c
  c32e2956c7c1bb85bd85fa3aecfc50c5  libgomp/testsuite/libgomp.oacc-c-c++-common/collapse-4.c
  19f2f5601f95ec58b09b95258b0818b1  libgomp/testsuite/libgomp.oacc-c-c++-common/combined-directives-1.c
  958046e6274805975b0db25945fb2609  libgomp/testsuite/libgomp.oacc-c-c++-common/combined-reduction.c
*************** ce24e046c5347f93b3d94f41af63f083  libgom
*** 88242,88248 ****
  00535f53258bc361a4c8f866fec0f25e  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-3.c
  ebb8f3adc650c08eeaf1e77a9b7084d4  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-4.c
  22918a096aad8e89d005adba57f4568d  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-5.c
! 0317b50a2c41c1528a6b3221a1943b16  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla.c
  87e0504dda48475fd0f053b8ce73c933  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-1.c
  4fa07035c293b9ed9e4dc0c2e01511da  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-10.c
  0b25a866f5d087c91925337a99617ee2  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-11.c
--- 94413,94421 ----
  00535f53258bc361a4c8f866fec0f25e  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-3.c
  ebb8f3adc650c08eeaf1e77a9b7084d4  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-4.c
  22918a096aad8e89d005adba57f4568d  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-5.c
! 95bfbb7b9d1551a2ef52542dae69b25a  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose-ice-1.c
! b31aa7619a0bd38041bb74c411d3f21f  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose.c
! 9492c467f79eeae532b409d7b23b0631  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla.c
  87e0504dda48475fd0f053b8ce73c933  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-1.c
  4fa07035c293b9ed9e4dc0c2e01511da  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-10.c
  0b25a866f5d087c91925337a99617ee2  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-11.c
*************** dfbe7b7f1e2335edce726504383f9b2c  libgom
*** 88280,88285 ****
--- 94453,94459 ----
  b62d943ff000b5c04985d2e8e9583ab7  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-alias-ipa-pta-2.c
  46bf7e2b0cabef27d798b3b2957f6583  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-alias-ipa-pta-3.c
  c35fcfa359b0fbc3caf1b7d8d7c018bb  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-alias-ipa-pta.c
+ fe7f0dffa24d94a2574c1eed6d80d907  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-decompose-1.c
  beed5eb74e7f9b935447c13c31a7ed23  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-empty.c
  f55ca55492b58beee675080a877a7ad5  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-2.c
  bf84cd20cbed842b879a3ebfee653954  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-3.c
*************** f4b077ed86c2694e71f3b739b8acc39a  libgom
*** 88459,88469 ****
  7766af3cacc170fb7222a4a7a4d920f8  libgomp/testsuite/libgomp.oacc-c-c++-common/pr84217.c
  163681ae13ec7dafe5504b0ea3b6545c  libgomp/testsuite/libgomp.oacc-c-c++-common/pr84955-1.c
  7bebc40e2fc1dd55a72340d501f63635  libgomp/testsuite/libgomp.oacc-c-c++-common/pr84955.c
! 607e89028d2eaa55120ea4ad6c03d695  libgomp/testsuite/libgomp.oacc-c-c++-common/pr85381-2.c
! 2932ad233bb45d2fddc0019ae01a1bd3  libgomp/testsuite/libgomp.oacc-c-c++-common/pr85381-3.c
! 23ca4ba7ba9323ece4e1ea0d74a68bd1  libgomp/testsuite/libgomp.oacc-c-c++-common/pr85381-4.c
! a987cd393f48c823104f89409ba80113  libgomp/testsuite/libgomp.oacc-c-c++-common/pr85381-5.c
! d768198b90b24028fc11be993642faa1  libgomp/testsuite/libgomp.oacc-c-c++-common/pr85381.c
  26e31ce5804cbb967bc6fd5ea1958412  libgomp/testsuite/libgomp.oacc-c-c++-common/pr85422.c
  196e0a60a6dc7e2db37056e930062298  libgomp/testsuite/libgomp.oacc-c-c++-common/pr85486-2.c
  ab0118348db01ee3397b09491f15e5ce  libgomp/testsuite/libgomp.oacc-c-c++-common/pr85486-3.c
--- 94633,94643 ----
  7766af3cacc170fb7222a4a7a4d920f8  libgomp/testsuite/libgomp.oacc-c-c++-common/pr84217.c
  163681ae13ec7dafe5504b0ea3b6545c  libgomp/testsuite/libgomp.oacc-c-c++-common/pr84955-1.c
  7bebc40e2fc1dd55a72340d501f63635  libgomp/testsuite/libgomp.oacc-c-c++-common/pr84955.c
! c0b1c7a2ace439e7d274ea61e014601c  libgomp/testsuite/libgomp.oacc-c-c++-common/pr85381-2.c
! f9e197fbc815ab50517803597fd883bc  libgomp/testsuite/libgomp.oacc-c-c++-common/pr85381-3.c
! 7d7ef33a08e8f83dda3171b8ce0c7d3d  libgomp/testsuite/libgomp.oacc-c-c++-common/pr85381-4.c
! 04d32f8ffb3748882719791be7c2d862  libgomp/testsuite/libgomp.oacc-c-c++-common/pr85381-5.c
! f40f9dcdb158db5585a400b5fdb7c8ca  libgomp/testsuite/libgomp.oacc-c-c++-common/pr85381.c
  26e31ce5804cbb967bc6fd5ea1958412  libgomp/testsuite/libgomp.oacc-c-c++-common/pr85422.c
  196e0a60a6dc7e2db37056e930062298  libgomp/testsuite/libgomp.oacc-c-c++-common/pr85486-2.c
  ab0118348db01ee3397b09491f15e5ce  libgomp/testsuite/libgomp.oacc-c-c++-common/pr85486-3.c
*************** bfb8a1981f65bf0f6f7e7ceffe50d12f  libgom
*** 88514,88519 ****
--- 94688,94694 ----
  1a465d1e1bc74775a2990782de6cc788  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-w-1.c
  771ea191fe0f86feae77a91e786cd92f  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-wv-1.c
  9418b01ffd5959058f86a266f7d445e6  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-wv-2.c
+ c9bee1b3813a97104a84319927c91922  libgomp/testsuite/libgomp.oacc-c-c++-common/static-variable-1.c
  0c8d53037ec5c2b4a2208f9527b55b0c  libgomp/testsuite/libgomp.oacc-c-c++-common/struct-1.c
  a2a3b463713aeac5d2334e0d7d3a7b08  libgomp/testsuite/libgomp.oacc-c-c++-common/struct-3-1-1.c
  d5a34a7eae3b8074ac27869cb72cfff3  libgomp/testsuite/libgomp.oacc-c-c++-common/struct-copyout-1.c
*************** e65c44041c15898765a99f6782a191d2  libgom
*** 88566,88572 ****
  3df312778896ed29ec60eefae35ce701  libgomp/testsuite/libgomp.oacc-c-c++-common/vprop.c
  89749d57d6791896fff641c862a9331b  libgomp/testsuite/libgomp.oacc-c-c++-common/vred2d-128.c
  4210ba709794292b7c55787ddbfa572a  libgomp/testsuite/libgomp.oacc-c-c++-common/zero_length_subarrays.c
! ab93f1dc30040dfc675bc12b7bfc8fa4  libgomp/testsuite/libgomp.oacc-c/c.exp
  cbdcc7dbb1bbfcb008b972db87d6a771  libgomp/testsuite/libgomp.oacc-c/nested-function-1.c
  009dee52db49f02bd518c318808bd4ab  libgomp/testsuite/libgomp.oacc-c/nested-function-2.c
  72bcce9d26c09f9366370cb966bc078d  libgomp/testsuite/libgomp.oacc-c/print-1.c
--- 94741,94747 ----
  3df312778896ed29ec60eefae35ce701  libgomp/testsuite/libgomp.oacc-c-c++-common/vprop.c
  89749d57d6791896fff641c862a9331b  libgomp/testsuite/libgomp.oacc-c-c++-common/vred2d-128.c
  4210ba709794292b7c55787ddbfa572a  libgomp/testsuite/libgomp.oacc-c-c++-common/zero_length_subarrays.c
! 4796f6f728e7eb127e28ee59e5f1ef18  libgomp/testsuite/libgomp.oacc-c/c.exp
  cbdcc7dbb1bbfcb008b972db87d6a771  libgomp/testsuite/libgomp.oacc-c/nested-function-1.c
  009dee52db49f02bd518c318808bd4ab  libgomp/testsuite/libgomp.oacc-c/nested-function-2.c
  72bcce9d26c09f9366370cb966bc078d  libgomp/testsuite/libgomp.oacc-c/print-1.c
*************** b679de5ffd18c9aa9dde2bffdaf92c7f  libgom
*** 88580,88598 ****
  1156f6bd1e8853e97f454dde55593fcf  libgomp/testsuite/libgomp.oacc-fortran/allocatable-1-1.f90
  b5f50dc24e2c3eca23c78de810809df1  libgomp/testsuite/libgomp.oacc-fortran/allocatable-1-2.f90
  268441c3b6afe4ef21eb895887650817  libgomp/testsuite/libgomp.oacc-fortran/allocatable-array-1.f90
  b60f9df599841cb97ef2a6785c97ff52  libgomp/testsuite/libgomp.oacc-fortran/asyncwait-1.f90
  c54dcd56776270d286dbab537ea69b4a  libgomp/testsuite/libgomp.oacc-fortran/asyncwait-2.f90
  8b367ab07bf8308d580e8dc6e80b36a3  libgomp/testsuite/libgomp.oacc-fortran/asyncwait-3.f90
! ad9924b5d578f6266bf3506566197993  libgomp/testsuite/libgomp.oacc-fortran/atomic_capture-1.f90
  b53eda12d1ace10b6256bd20bcfcfa38  libgomp/testsuite/libgomp.oacc-fortran/atomic_rw-1.f90
  552def687c8967818402a522b6670853  libgomp/testsuite/libgomp.oacc-fortran/atomic_update-1.f90
  c459a54e791263602dae13c9b38a66ad  libgomp/testsuite/libgomp.oacc-fortran/cache-1.f95
  87fd6e069189d013b2200472b9eb8bda  libgomp/testsuite/libgomp.oacc-fortran/class-ptr-param.f95
  46b5b05317d2df4d7304b651d112c541  libgomp/testsuite/libgomp.oacc-fortran/classtypes-1.f95
  8ebf87808b85955077301c0a5fe98dc9  libgomp/testsuite/libgomp.oacc-fortran/classtypes-2.f95
  eb119d5430cde6e637e7544ce8939fe5  libgomp/testsuite/libgomp.oacc-fortran/clauses-1.f90
! ce55f5feea92469a28e9d13fb2a2835d  libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90
! 920b2acfe461471d5a5387c3775476e2  libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90
  6ed0719954efef2eee5a4e2d4d57090b  libgomp/testsuite/libgomp.oacc-fortran/collapse-3.f90
  594ec70de63180a87e3b05eb230a6ecb  libgomp/testsuite/libgomp.oacc-fortran/collapse-4.f90
  77e112d3ea9db0e5b89d887d9a851002  libgomp/testsuite/libgomp.oacc-fortran/collapse-5.f90
--- 94755,94776 ----
  1156f6bd1e8853e97f454dde55593fcf  libgomp/testsuite/libgomp.oacc-fortran/allocatable-1-1.f90
  b5f50dc24e2c3eca23c78de810809df1  libgomp/testsuite/libgomp.oacc-fortran/allocatable-1-2.f90
  268441c3b6afe4ef21eb895887650817  libgomp/testsuite/libgomp.oacc-fortran/allocatable-array-1.f90
+ cc03e25c3691271e9e9fbb2a674b4655  libgomp/testsuite/libgomp.oacc-fortran/array-stride-dt-1.f90
  b60f9df599841cb97ef2a6785c97ff52  libgomp/testsuite/libgomp.oacc-fortran/asyncwait-1.f90
  c54dcd56776270d286dbab537ea69b4a  libgomp/testsuite/libgomp.oacc-fortran/asyncwait-2.f90
  8b367ab07bf8308d580e8dc6e80b36a3  libgomp/testsuite/libgomp.oacc-fortran/asyncwait-3.f90
! 6fd2a710a84cc89cd45650694d15656e  libgomp/testsuite/libgomp.oacc-fortran/atomic_capture-1.f90
  b53eda12d1ace10b6256bd20bcfcfa38  libgomp/testsuite/libgomp.oacc-fortran/atomic_rw-1.f90
  552def687c8967818402a522b6670853  libgomp/testsuite/libgomp.oacc-fortran/atomic_update-1.f90
+ acd19f659b5ab60d50f00dbdf9726673  libgomp/testsuite/libgomp.oacc-fortran/attach-descriptor-1.f90
+ a317b75844930d0a54c56b7d47efafee  libgomp/testsuite/libgomp.oacc-fortran/attach-descriptor-2.f90
  c459a54e791263602dae13c9b38a66ad  libgomp/testsuite/libgomp.oacc-fortran/cache-1.f95
  87fd6e069189d013b2200472b9eb8bda  libgomp/testsuite/libgomp.oacc-fortran/class-ptr-param.f95
  46b5b05317d2df4d7304b651d112c541  libgomp/testsuite/libgomp.oacc-fortran/classtypes-1.f95
  8ebf87808b85955077301c0a5fe98dc9  libgomp/testsuite/libgomp.oacc-fortran/classtypes-2.f95
  eb119d5430cde6e637e7544ce8939fe5  libgomp/testsuite/libgomp.oacc-fortran/clauses-1.f90
! fa74511643709ee6d9bec253cb04c510  libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90
! 0b657d429aac61883b78f57f98900209  libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90
  6ed0719954efef2eee5a4e2d4d57090b  libgomp/testsuite/libgomp.oacc-fortran/collapse-3.f90
  594ec70de63180a87e3b05eb230a6ecb  libgomp/testsuite/libgomp.oacc-fortran/collapse-4.f90
  77e112d3ea9db0e5b89d887d9a851002  libgomp/testsuite/libgomp.oacc-fortran/collapse-5.f90
*************** ac946b94f0151da0c0b97127eec425f2  libgom
*** 88615,88621 ****
  83b2b6a7d90554fc77a6a4266b037818  libgomp/testsuite/libgomp.oacc-fortran/declare-2.f90
  ae41f5db2035d1b0ded7399cbf7135b4  libgomp/testsuite/libgomp.oacc-fortran/declare-3.f90
  28eddc3ff93ba0dcfa58b6e5aa8315bc  libgomp/testsuite/libgomp.oacc-fortran/declare-4.f90
! 1d98bed1177d5b1d9ec175d6ecccc2d7  libgomp/testsuite/libgomp.oacc-fortran/declare-5.f90
  e7a3c51b8d35c1cdddbc27fff479cd33  libgomp/testsuite/libgomp.oacc-fortran/deep-copy-1.f90
  4b09f26772b90e8ca03fb868985251f7  libgomp/testsuite/libgomp.oacc-fortran/deep-copy-3.f90
  56ffa40df7356420fd446e1241dbe693  libgomp/testsuite/libgomp.oacc-fortran/deep-copy-4.f90
--- 94793,94799 ----
  83b2b6a7d90554fc77a6a4266b037818  libgomp/testsuite/libgomp.oacc-fortran/declare-2.f90
  ae41f5db2035d1b0ded7399cbf7135b4  libgomp/testsuite/libgomp.oacc-fortran/declare-3.f90
  28eddc3ff93ba0dcfa58b6e5aa8315bc  libgomp/testsuite/libgomp.oacc-fortran/declare-4.f90
! 91954267381c2cc6b4889ae005a0567f  libgomp/testsuite/libgomp.oacc-fortran/declare-5.f90
  e7a3c51b8d35c1cdddbc27fff479cd33  libgomp/testsuite/libgomp.oacc-fortran/deep-copy-1.f90
  4b09f26772b90e8ca03fb868985251f7  libgomp/testsuite/libgomp.oacc-fortran/deep-copy-3.f90
  56ffa40df7356420fd446e1241dbe693  libgomp/testsuite/libgomp.oacc-fortran/deep-copy-4.f90
*************** cd7fb9976506e9fd8976a32edc607640  libgom
*** 88628,88633 ****
--- 94806,94812 ----
  cdfddf352df6c0dd2ff55366462575ec  libgomp/testsuite/libgomp.oacc-fortran/derived-type-1.f90
  57095ccfd680418928ca4837fbc882d6  libgomp/testsuite/libgomp.oacc-fortran/derivedtype-1.f95
  55a9a80a81230662b49c62fb85e8cf84  libgomp/testsuite/libgomp.oacc-fortran/derivedtype-2.f95
+ fe9488a4be690a5e768b3954dc317933  libgomp/testsuite/libgomp.oacc-fortran/derivedtypes-arrays-1.f90
  7094eb65ee7121b33edac2c4502fd4cb  libgomp/testsuite/libgomp.oacc-fortran/dummy-array.f90
  8db3687cdd62db5b1cdc1b4ab1991217  libgomp/testsuite/libgomp.oacc-fortran/dynamic-incr-structural-1.f90
  de0b6577a463e2b1228c30823e3d915e  libgomp/testsuite/libgomp.oacc-fortran/dynamic-pointer-1.f90
*************** dec0ff0c9d1763372e0d89a8d486c716  libgom
*** 88635,88641 ****
  b15b38824b1308517e500eed941b395c  libgomp/testsuite/libgomp.oacc-fortran/error_stop-2.f
  4a500c43dca65f6d5bef5129616a5d0f  libgomp/testsuite/libgomp.oacc-fortran/error_stop-3.f
  1ca90666ec166deb31a532f320f58fa2  libgomp/testsuite/libgomp.oacc-fortran/firstprivate-1.f90
! 75812ec116d61973569d7f5ee5677cf7  libgomp/testsuite/libgomp.oacc-fortran/fortran.exp
  1c759d21e241899405470f8b5a93d4c4  libgomp/testsuite/libgomp.oacc-fortran/gang-static-1.f90
  baf0045717c212a4e4fa0e95506bf19c  libgomp/testsuite/libgomp.oacc-fortran/gemm-2.f90
  008479edcad6762fa3ed30dda45251a8  libgomp/testsuite/libgomp.oacc-fortran/gemm.f90
--- 94814,94820 ----
  b15b38824b1308517e500eed941b395c  libgomp/testsuite/libgomp.oacc-fortran/error_stop-2.f
  4a500c43dca65f6d5bef5129616a5d0f  libgomp/testsuite/libgomp.oacc-fortran/error_stop-3.f
  1ca90666ec166deb31a532f320f58fa2  libgomp/testsuite/libgomp.oacc-fortran/firstprivate-1.f90
! 9ed8ce5724f0c0dcfe8ed42ca9f70faa  libgomp/testsuite/libgomp.oacc-fortran/fortran.exp
  1c759d21e241899405470f8b5a93d4c4  libgomp/testsuite/libgomp.oacc-fortran/gang-static-1.f90
  baf0045717c212a4e4fa0e95506bf19c  libgomp/testsuite/libgomp.oacc-fortran/gemm-2.f90
  008479edcad6762fa3ed30dda45251a8  libgomp/testsuite/libgomp.oacc-fortran/gemm.f90
*************** ba279397e9aceb22ea58f656fd6bcd9f  libgom
*** 88738,88743 ****
--- 94917,94925 ----
  ae34a0a33c324e692b2da2ef2923edb3  libgomp/testsuite/libgomp.oacc-fortran/pr83920.f90
  2db69fba10f0ce5a690041399be29d9d  libgomp/testsuite/libgomp.oacc-fortran/pr84028.f90
  8175cec1f19b14dba021a884c3d90e52  libgomp/testsuite/libgomp.oacc-fortran/pr84955.f90
+ 91bf4d48a39d8394a4d44a6f471979dc  libgomp/testsuite/libgomp.oacc-fortran/pr94358-1.f90
+ f6d2da9fc59c699efbd51b9c34bdbeb8  libgomp/testsuite/libgomp.oacc-fortran/pr96628-part1.f90
+ 0713d6f197e69942e0bf3ce291d92c25  libgomp/testsuite/libgomp.oacc-fortran/pr96628-part2.f90
  b67bfba76f88f8ae8281c1e2e381706a  libgomp/testsuite/libgomp.oacc-fortran/print-1-nvptx.f90
  0ca3908532b8e5ae143b4c11a6822625  libgomp/testsuite/libgomp.oacc-fortran/print-1.f90
  0da4e68cc568259f83f1c02b2e4a6305  libgomp/testsuite/libgomp.oacc-fortran/private-variables.f90
*************** a9e822ce19d26f5cc1427bb8eccd2aba  libgom
*** 88752,88757 ****
--- 94934,94940 ----
  2319e6e9fb323e323de49d8e109f5e73  libgomp/testsuite/libgomp.oacc-fortran/reduction-8.f90
  ef528021ebe7dff74cf8f0a78d2eac65  libgomp/testsuite/libgomp.oacc-fortran/reference-reductions.f90
  2ddccd79e8a32a22990bb59958cdf590  libgomp/testsuite/libgomp.oacc-fortran/routine-1.f90
+ aaf52555d5d80386445afe1a1fb0fda4  libgomp/testsuite/libgomp.oacc-fortran/routine-10.f90
  180a86fcfcbd20e3283b065ecc7ab6aa  libgomp/testsuite/libgomp.oacc-fortran/routine-2.f90
  587985ef7e9fc6203f8886fbafacf9f5  libgomp/testsuite/libgomp.oacc-fortran/routine-3.f90
  576d913af18b8261f765fcf068efc278  libgomp/testsuite/libgomp.oacc-fortran/routine-4.f90
*************** b597915a52bb85b1298c867e37105162  libgom
*** 88765,88819 ****
  82af62e83e94b4aaa2e865016ba78741  libgomp/testsuite/libgomp.oacc-fortran/subarrays-2.f90
  e8a3245c095430c8ef2413afe2ee4c48  libgomp/testsuite/libgomp.oacc-fortran/update-1.f90
  1ee538b1d8c3361fa5c71fc8cac2aa7a  libgomp/testsuite/libgomp.oacc-fortran/update-2.f90
  989e6535f20045be32e9e91643a0b08f  libgomp/testsuite/libgomp.oacc-fortran/vector-routine.f90
! ba7b24b7084a24f7eeb9edb6a47f3dee  libgomp/work.c
! 927b831302100a181018feb6fc072fb9  libhsail-rt/ChangeLog
  9147b482b39962a71e580b4a8265285e  libhsail-rt/Makefile.am
  f63e3c959c7490f1fbe708067e4884ae  libhsail-rt/Makefile.in
  de97a355fadb5753d182cbcf06b1b33a  libhsail-rt/README
  9fe4a2e547516f597b253cd8efd9c069  libhsail-rt/aclocal.m4
! dfaf94c123b02c3589767eb98833ab8f  libhsail-rt/configure
  8fe038f14ce9e21e83fdd96fb85374ea  libhsail-rt/configure.ac
! 5d7c4a939534f3bf0d38e9714d021a9f  libhsail-rt/configure.tgt
! 83bce39e93894d482702a596aa3c1303  libhsail-rt/include/internal/fibers.h
! 0aa14b91f7c0b10bca5ef07d08d898ac  libhsail-rt/include/internal/phsa-queue-interface.h
! 53fc61fd3a5c566fa2b4b3422a1ea319  libhsail-rt/include/internal/phsa-rt.h
! d4b07d273764089b568ba33ccff87781  libhsail-rt/include/internal/workitems.h
! 3bbf0613a33549d3e634968d02be9180  libhsail-rt/rt/arithmetic.c
! 45e208984f0b3331cb46ce14fd45f978  libhsail-rt/rt/atomics.c
! 557eb1829e8e69bc4fc2598c181c88c2  libhsail-rt/rt/bitstring.c
! 08f6059dd3349170b3fae3bc4a52a7d5  libhsail-rt/rt/fbarrier.c
! a6ae35dc7ae5be03b05e1923af961a61  libhsail-rt/rt/fibers.c
! 0b59a66e708019dabc6b6a79ffe3b0d9  libhsail-rt/rt/fp16.c
! fb6d76b1ee67ef8de5eedae4a2ca5b7f  libhsail-rt/rt/misc.c
! c5c76a60b7dc655f32d44e709ba49ca5  libhsail-rt/rt/multimedia.c
! b547e642b38859daf774fa7f744c6b64  libhsail-rt/rt/queue.c
! d3cb42f0affccdc8401528fdfd1f5b65  libhsail-rt/rt/sat_arithmetic.c
! 6da78dc305cb571c414f762a2adb1d58  libhsail-rt/rt/segment.c
! 53c2be130b047dd97b085dd87bb5e061  libhsail-rt/rt/workitems.c
  ef9f05873915c22cae79ef5545355353  libhsail-rt/target-config.h.in
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 963a2f9f8f30f5036e9b3998040a585e  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
! a3ef253370857a89895181e5431a20e3  libiberty/Makefile.in
  c68dbf7834af4281ebd84caa3fd54680  libiberty/README
! 8a7a5e7c6c0be64ba8c847f47a60bacb  libiberty/_doprnt.c
! 15f5c08d41772bbdb89c2fcf0d6afae9  libiberty/aclocal.m4
  e60c2e7c5dcdd19510066c13f1a527d3  libiberty/alloca.c
! 499a2bed0b2dd091f0accf34cbdc48fa  libiberty/argv.c
! 8f3032c7ec594fb54d8d0a9c912dab3f  libiberty/asprintf.c
  a16ea056b95fd70c21333db132da14ff  libiberty/at-file.texi
  c34119797a13e71989722851c14b711b  libiberty/atexit.c
  ab8d4cd68aa4892e2318d2c71864cc56  libiberty/basename.c
  17a1f1d7f5acf01ce922d98210067542  libiberty/bcmp.c
  a707d2e5daa09d204d4441e8713048ca  libiberty/bcopy.c
! 76888d9a6ed315d1e12029016d96672e  libiberty/bsearch.c
  4a0acb9356a52f3bcfd67efa26997b58  libiberty/bzero.c
  5bd055836a440051d7c561a9f591ecbb  libiberty/calloc.c
! 6e5cd8de6375c5b1b166a2f6f427b161  libiberty/choose-temp.c
! a49da50901109322fa446b9d34a94088  libiberty/clock.c
! f5d10c38f8751cfeff42fa5e40c1bfd0  libiberty/concat.c
  83565a31c7f296b3013daf383cd03ee9  libiberty/config.h-vms
  c490c2d0e84347da40a272a019f71dd4  libiberty/config.in
  4004fdcde347fda58406b4b84a995c66  libiberty/config/mh-aix
--- 94948,95005 ----
  82af62e83e94b4aaa2e865016ba78741  libgomp/testsuite/libgomp.oacc-fortran/subarrays-2.f90
  e8a3245c095430c8ef2413afe2ee4c48  libgomp/testsuite/libgomp.oacc-fortran/update-1.f90
  1ee538b1d8c3361fa5c71fc8cac2aa7a  libgomp/testsuite/libgomp.oacc-fortran/update-2.f90
+ 1d2e2e1ab9f0d92351625f2c5661dbb8  libgomp/testsuite/libgomp.oacc-fortran/update-dt-array.f90
  989e6535f20045be32e9e91643a0b08f  libgomp/testsuite/libgomp.oacc-fortran/vector-routine.f90
! 8ad28ef1808c27a75ad52229a13307c4  libgomp/work.c
! 13267ada5c35e70d500cc9bd08d10921  libhsail-rt/ChangeLog
  9147b482b39962a71e580b4a8265285e  libhsail-rt/Makefile.am
  f63e3c959c7490f1fbe708067e4884ae  libhsail-rt/Makefile.in
  de97a355fadb5753d182cbcf06b1b33a  libhsail-rt/README
  9fe4a2e547516f597b253cd8efd9c069  libhsail-rt/aclocal.m4
! 0f3f9000b23f89249af720f0cc2034fa  libhsail-rt/configure
  8fe038f14ce9e21e83fdd96fb85374ea  libhsail-rt/configure.ac
! 74e96a808d107fbaec535d18c1686a98  libhsail-rt/configure.tgt
! 9ea444ff6e91bb60f7c3637665e5efb9  libhsail-rt/include/internal/fibers.h
! f7cd18dd096b1bc07364470ea1c7a6fb  libhsail-rt/include/internal/phsa-queue-interface.h
! 2db46bbcce909d9df6402954f9c94eb4  libhsail-rt/include/internal/phsa-rt.h
! 555a075ebdf52347960985e053edd866  libhsail-rt/include/internal/workitems.h
! 4844c8729c3e504934b981bdefad7e0d  libhsail-rt/rt/arithmetic.c
! ba9d6c8fce9da64c0ab8d7f9c8188d4a  libhsail-rt/rt/atomics.c
! 5513605c8ecdeff153dbe3cb1fdfe744  libhsail-rt/rt/bitstring.c
! be5e977073ff1d8264c9a95397fac305  libhsail-rt/rt/fbarrier.c
! 3a4c9afc82600a30c02ab2fe47e10ace  libhsail-rt/rt/fibers.c
! ea531e7185c5909308ccddc8f273dd88  libhsail-rt/rt/fp16.c
! fff440612fc95e424cc537811af84250  libhsail-rt/rt/misc.c
! 425c23afc0032ee2e6dd9a935d2b8ac6  libhsail-rt/rt/multimedia.c
! 1319d35508333122096e5b445436b6e2  libhsail-rt/rt/queue.c
! 5fb5725754d747fb054ecb7fa16217e4  libhsail-rt/rt/sat_arithmetic.c
! 2c33cd0d204cf46d93cb0764bbed603a  libhsail-rt/rt/segment.c
! f35af2a2efaa8dd337095878b57cabf5  libhsail-rt/rt/workitems.c
  ef9f05873915c22cae79ef5545355353  libhsail-rt/target-config.h.in
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! fe756d31a329884def93d9628322713e  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
! d2b139408a3f08c5813183e34dc39b38  libiberty/Makefile.in
  c68dbf7834af4281ebd84caa3fd54680  libiberty/README
! f9b2cd52c3c30368d71459347fb64849  libiberty/_doprnt.c
! ad7456c201ca1e60520e6955b41a964c  libiberty/acinclude.m4
! d1955a5319e9f2bf4d714152f8da1d1a  libiberty/aclocal.m4
  e60c2e7c5dcdd19510066c13f1a527d3  libiberty/alloca.c
! 2a8c5652b247080a01280f8c6af37fdc  libiberty/argv.c
! ba1a69aa92e6248b3ab674f74a9fd0de  libiberty/asprintf.c
  a16ea056b95fd70c21333db132da14ff  libiberty/at-file.texi
  c34119797a13e71989722851c14b711b  libiberty/atexit.c
  ab8d4cd68aa4892e2318d2c71864cc56  libiberty/basename.c
  17a1f1d7f5acf01ce922d98210067542  libiberty/bcmp.c
  a707d2e5daa09d204d4441e8713048ca  libiberty/bcopy.c
! 12b384d6fbe8db3b1da132f566043423  libiberty/bsearch.c
! 0ce04768d60b33d4951e6542d1bcbdac  libiberty/bsearch_r.c
  4a0acb9356a52f3bcfd67efa26997b58  libiberty/bzero.c
  5bd055836a440051d7c561a9f591ecbb  libiberty/calloc.c
! 2d92d71ed61f6621c087dac46c5f2450  libiberty/choose-temp.c
! 36f44e787c68450a2b7c1d10fc3d13f8  libiberty/clock.c
! bfd0958f18564e6b31c64920e419969e  libiberty/concat.c
  83565a31c7f296b3013daf383cd03ee9  libiberty/config.h-vms
  c490c2d0e84347da40a272a019f71dd4  libiberty/config.in
  4004fdcde347fda58406b4b84a995c66  libiberty/config/mh-aix
*************** c490c2d0e84347da40a272a019f71dd4  libibe
*** 88821,89040 ****
  044204f5b4bcac5eae2face0602129ae  libiberty/config/mh-fbsd21
  904bdcd9daf97fa55a9ca8901ffe7435  libiberty/config/mh-openedition
  38e76da568ab25260754fdb9d5080513  libiberty/config/mh-windows
! 6fcb0df7566e7d4a98552da0ab982a96  libiberty/configure
! 495471cdc3b33de416ea63f5dccce55b  libiberty/configure.ac
  5824bd0f9be9f4fa74bb3bdc7fd9431c  libiberty/configure.com
! 32e36ace2011f801ed41c55aafe01dfa  libiberty/copying-lib.texi
  fe053283d3559af3ec5cac45f8ead009  libiberty/copysign.c
! 545e9e45d9f0007888bcfa14302c5c2e  libiberty/cp-demangle.c
! b8336e582376d12d78cf1d818d206acf  libiberty/cp-demangle.h
! c6947259a5fcec022f9cd87afb26b7f6  libiberty/cp-demint.c
! 7b91278b283db6f8b01cc41a7199e2f3  libiberty/cplus-dem.c
! f3b1d5eed16f95badf3412d6e2c2a771  libiberty/crc32.c
! c82803efa091db267609f2883bdba61c  libiberty/d-demangle.c
! b3f503d376697e199d60829e3b46e9f8  libiberty/dwarfnames.c
! 42656270a5ae02c493bce5e3a5d51189  libiberty/dyn-string.c
! 3f0c90d1b27d44678f86b2fe6c070618  libiberty/fdmatch.c
  0c2635175b975823b40980974dfc2110  libiberty/ffs.c
! f6c2f4c81a01ea6b153da31ebda0c1d8  libiberty/fibheap.c
! 51b1e8181419cedd484651963a38fcc6  libiberty/filedescriptor.c
! ae9aec19117f62bc9ace36c909d524c9  libiberty/filename_cmp.c
! c85943db12e0ff5742de15f5fe6043fd  libiberty/floatformat.c
! 9c941f37bb87a884deb0a7d5a17a2aec  libiberty/fnmatch.c
  145debe2f28f470878f95b1255f5537c  libiberty/fnmatch.txh
! ca26ea2c4b1969544df852f68e7d639b  libiberty/fopen_unlocked.c
! 7b5c69d4cb9a566ee20fadd1cc6bc14b  libiberty/functions.texi
! d726857f5eca148ece9f95daa3d91be2  libiberty/gather-docs
  754c5ef42440c5d1b62146174a6636e4  libiberty/getcwd.c
! 67b511e2aad69ace3c4cadda3b2e354f  libiberty/getopt.c
! 82d7a3f0a778bfc2d87741ea555435f1  libiberty/getopt1.c
  bb0043d92c716691cc17b80c845c336b  libiberty/getpagesize.c
  5e520e600636a692f52e62dcfb01921c  libiberty/getpwd.c
! d1fbc5ec08be5424ed02c411fdaa9dc4  libiberty/getruntime.c
  0c70ad1e35bb090b52ed593865025741  libiberty/gettimeofday.c
! 01fee24260083ad12aeb0c96e55caab3  libiberty/hashtab.c
! 98afb78908d08ccf90f03ff366490a5a  libiberty/hex.c
  4d485e7735be430b22aea0abb4938e26  libiberty/index.c
  9d0471286f21d9027bbf1b7c67b87856  libiberty/insque.c
! 80c9e06bbf3ecf70da5defc750847c77  libiberty/lbasename.c
! 4a030e1b3c4c413acd25fc73265305f4  libiberty/libiberty.texi
! 59da2afd1d530436660df6d8bdfe6baf  libiberty/lrealpath.c
! a018b867cae1aecf9527466d83b9a3f7  libiberty/maint-tool
! 1dcdc2d3156e635c65727878e5e730ec  libiberty/make-relative-prefix.c
! 1473186080b62646294610c25b02f956  libiberty/make-temp-file.c
  80367d734a974bd32e9ebc370dedd2e7  libiberty/makefile.vms
! e4704df09ee375ea333f8b846ccd6f04  libiberty/md5.c
  de9bd20436bf2cb64d8c374c110ce315  libiberty/memchr.c
  33320d312ab390ca0eb5c43c9e349d57  libiberty/memcmp.c
  c90c2f09bdcbd65b4732a4be25a56d12  libiberty/memcpy.c
! 0e35aa65bd64892d5cc3d195e1625047  libiberty/memmem.c
  99bfeaeb76e8e725dd8766f33810ccb1  libiberty/memmove.c
! 8446e21ec9d2833ae495541e07e84069  libiberty/mempcpy.c
  c44adc5ac09bdc782a8e13086ffa9367  libiberty/memset.c
! 3c79f555e3332331dcfe6db34313d55c  libiberty/mkstemps.c
  7897e43bedd2def4beb6eb73003efa68  libiberty/msdos.c
! 528cb7fe9ed2020f2ee12de85c28aa1c  libiberty/objalloc.c
! 67d3ca965a908a112cecfe8c27199abd  libiberty/obstack.c
  26ef02d458c958c1599de12b02c559dc  libiberty/obstacks.texi
! f161b1b347835751a363811214f498e7  libiberty/partition.c
! 6cca08f3c95238f56e4a1ea80c2f4d17  libiberty/pex-common.c
! f38926846c412da68ec8ffa6fb1df6a7  libiberty/pex-common.h
! af10edf4f344047779b1d38bd673f19c  libiberty/pex-djgpp.c
! 22e750b40503bcb93d1390565b357123  libiberty/pex-msdos.c
! d72cecd2f491eb8759d5cb9807c4d5a3  libiberty/pex-one.c
! d550f4428dd2571dd6257b8b82d356fc  libiberty/pex-unix.c
! 3cdd2959ea478cd814da17121ced898e  libiberty/pex-win32.c
! addc7ab855be5521caf7f6dd522c47ed  libiberty/pexecute.c
  a6b1581efa83a4072727b38d6fef4230  libiberty/pexecute.txh
! e1d75ae780d9c3f5239a74b9414c6a75  libiberty/physmem.c
! 9e66648d0a72d5c721794ac087a709c0  libiberty/putenv.c
  94f22680349b4ae73ad658495d2eb542  libiberty/random.c
! 65619c4e962d5590f7506a4dfa999af9  libiberty/regex.c
  24eab3d83825c3be13549dc62b6d63d6  libiberty/rename.c
  74850488731148a9c9f410042144f37d  libiberty/rindex.c
! 118230c232b8e2d0fc8d67d86c50c4f0  libiberty/rust-demangle.c
! aff91d7b9a881699df694ae4643d01a9  libiberty/safe-ctype.c
! 54aa3c65868ae8a49cbc56f52fd8dd79  libiberty/setenv.c
! 40bda10fe095526774b795ad4d8d96f6  libiberty/setproctitle.c
! 7ac6268a790477c48405b9acbf4efe3f  libiberty/sha1.c
  284bb7a096480b355b75c337086220a2  libiberty/sigsetmask.c
! b89abf26a0a5df30dffc8b7c01988119  libiberty/simple-object-coff.c
! 68f1ec6282a2e9e4562f75413268ff74  libiberty/simple-object-common.h
! da1621f0b4eb6fc364c14f4fd4f36566  libiberty/simple-object-elf.c
! f69eb31890a283b988064f7061562a90  libiberty/simple-object-mach-o.c
! 4bce08f9c3170d230e9b6ce841a4f1c7  libiberty/simple-object-xcoff.c
! 4f75ce2d9c575d2d57c58be929d9f3b9  libiberty/simple-object.c
  4863a11e04a2021af582edf86f156954  libiberty/simple-object.txh
! 87816b3826177801666e18db75d16c1e  libiberty/snprintf.c
! 1599d19c91a86e2ea4e8a358bd1499ae  libiberty/sort.c
! b94e71c549ffb69f1a8291fc2a5c1506  libiberty/spaces.c
! d252eb28fd6e1a00d423ffada3630ce9  libiberty/splay-tree.c
! f3d66c0f81af1c1b4e2e0ea41b022716  libiberty/stack-limit.c
! fd7bff1ad183fda5470a0f03e4569591  libiberty/stpcpy.c
! ff32cfcde62c375120a99ddcaee0f586  libiberty/stpncpy.c
  0c900e9180d750a26ac0ddb237151832  libiberty/strcasecmp.c
  13cce636dd9882e42c9fc5d607351f4f  libiberty/strchr.c
  9f681e91439ac44c9df8e1b1deef33b5  libiberty/strdup.c
  ccad70af73664dbb198eb66bbea8659a  libiberty/strerror.c
  2d414e20c053293f373a5306192db8f5  libiberty/strncasecmp.c
  cc534c2ea00ea0b5e49ba8f61c6e467d  libiberty/strncmp.c
! fd7441d68af7274c4052f0b4d0011fd2  libiberty/strndup.c
  fd1435a5be24d2ed84909540998dd5d7  libiberty/strnlen.c
  5b0eb0000c746fc4c1854f00bb80b53d  libiberty/strrchr.c
  f214096086d1747033efa505022dd89c  libiberty/strsignal.c
! e2f3721273c7ef1ab0194aad78ffa3aa  libiberty/strstr.c
! 2ce1ef5f8fd7baae7b9b769d61338c94  libiberty/strtod.c
  c9bd3841bbde6d8ae680f62523f00ab0  libiberty/strtol.c
  9968bbb75dc08ce768389912954f4348  libiberty/strtoll.c
  26196a9a92fae743a06d65f0e081084b  libiberty/strtoul.c
  d132d24f15fe05fe3614e69d6dbc65aa  libiberty/strtoull.c
! d9faf1fdf0d22e76f7a1b9b1134aa334  libiberty/strverscmp.c
! a07414830fcafbd78e8496829ada76b4  libiberty/testsuite/Makefile.in
! 61b4aece767895a8647f3bc7f58cec88  libiberty/testsuite/d-demangle-expected
! aaf0bc97bec5884d53e83d66c6db0f1e  libiberty/testsuite/demangle-expected
! 4a3496823ff0be319d313a76aef47b81  libiberty/testsuite/demangler-fuzzer.c
! b592fda21c9e12a8afa0b84c30b034e2  libiberty/testsuite/rust-demangle-expected
! 1299666a910d584850e0c68716a91538  libiberty/testsuite/test-demangle.c
! 8add8b59c49a2c11353bb6639a26a61e  libiberty/testsuite/test-expandargv.c
! 988d000de7008b950887d70fe39da141  libiberty/testsuite/test-pexecute.c
! e54cc0119c70794eda4c5dad0aa26d87  libiberty/testsuite/test-strtol.c
! 022a2937ce8bb513d8a23a2e3c757d9a  libiberty/timeval-utils.c
  6b513119d8c36af928821e8ec24265d7  libiberty/tmpnam.c
! 34240e1f32e77e729e0890ab6405a971  libiberty/unlink-if-ordinary.c
! 74dcb5b3f5cbaa08ec9e1b225d55a3e6  libiberty/vasprintf.c
  8e71982d77e91c0e3c57ca86c8a1b548  libiberty/vfork.c
! 1d056dfdb93570ccdfdca2ac5397ef91  libiberty/vfprintf.c
! 26a3a56b6dc5cc9a99825b4e3067446e  libiberty/vprintf-support.c
! 43a2458d9460f627b292cd793ab926f1  libiberty/vprintf-support.h
  28af0a1bf222ed2a5a87d9e170ef4a46  libiberty/vprintf.c
! 0a8cd2c671b9ba11520ae74d57e6a22b  libiberty/vsnprintf.c
! c34f8049b6d30b9b002ba3f30d51fa35  libiberty/vsprintf.c
  3b03f409fd38f9d543870f21e6d7f5c8  libiberty/waitpid.c
! 08b71dbfa12258887769aaf51b19938d  libiberty/xasprintf.c
  f32b581d10bcc500277b6f4b4f923a4e  libiberty/xatexit.c
! 385d92cff72e33b64a6963b9eab5d055  libiberty/xexit.c
! 70727c8bde6a817d78570feb0bd4acf9  libiberty/xmalloc.c
  b2c289eb14e9197dcad172f3acba12b7  libiberty/xmemdup.c
  4746095b1b67693ab6e78ed72ead1235  libiberty/xstrdup.c
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
! 2854fd878740d7ea0f0c5ba34f695362  libiberty/xstrndup.c
! 00ce7121672e7f540abedae54264e8e1  libiberty/xvasprintf.c
! d4fa8be69cda2e6fea7cfabadc0be25f  libitm/ChangeLog
  a9df0726c501bf71a46f426068e8fc9f  libitm/Makefile.am
  06bb67375770bbbe550b5708624ed9d8  libitm/Makefile.in
! 3688bb99bcb94998fd633eabeeebd40f  libitm/aatree.cc
! d70d81a7730a0c497b97c65a8e334193  libitm/aatree.h
  3d33a4cdccfd6a43f5e6b37fa3c6ba9c  libitm/acinclude.m4
  c98774b09e6486e6a0818631af2fd088  libitm/aclocal.m4
! 9e090c0011e06f3918f5f48d92f1841f  libitm/alloc.cc
! b492e0564b3b82c79f9376a0b2081d3d  libitm/alloc_c.cc
! ae48f759df1688394b63185b703a170c  libitm/alloc_cpp.cc
! ef8aab17af080609bc552c5941f3d5d6  libitm/barrier.cc
! eeef7a6959349bb9af0d4e4b1d3d0506  libitm/beginend.cc
! 6b54043139fb66c56bf34cd1668d98ce  libitm/clone.cc
! 4e293527be2fb0b9fa5c25fe2f29fbc0  libitm/common.h
  05ea82fd12c7b4a030b6310b862ff47d  libitm/config.h.in
! 991f8855797e91207ec49d4c1974cb1f  libitm/config/aarch64/sjlj.S
! d073c7d0066092c99a651f6d69a951e0  libitm/config/aarch64/target.h
! 6f9953b09b92f5e443cbb8d7002ff661  libitm/config/alpha/sjlj.S
! 4e45ce8aab1407da683075b9b2ad0738  libitm/config/alpha/target.h
! f3e55edbafb5dfb9b22d4fa6b88f63f0  libitm/config/arm/hwcap.cc
! 8c502510ddee2e3cc15c439b753c403a  libitm/config/arm/hwcap.h
! 31f1ece4c2bfbade1cccfa3fb07e331f  libitm/config/arm/sjlj.S
! ff149203e2af3bf8c1fa83d50a546d0a  libitm/config/arm/target.h
! ca411e95ffdda5dd59e88e341395c7b4  libitm/config/generic/asmcfi.h
! ebe04b67b8b9ddc9533a4d634c862690  libitm/config/generic/tls.cc
! 16e33b0c88e456041c008a18b570efaf  libitm/config/generic/tls.h
! a522534f77bd272eccc07ca627a1c725  libitm/config/linux/alpha/futex_bits.h
! 675ff416b5a86ce98bb33711a03abe9b  libitm/config/linux/futex.cc
! 0511f3c6075ddedab7964cad37bb9415  libitm/config/linux/futex.h
! f336037598e396b9b94420b2033a9743  libitm/config/linux/futex_bits.h
! f9fefb0f44548329c1e0b92f6593ac1b  libitm/config/linux/powerpc/futex_bits.h
! 22dab175c0b71eebb3c808b01933a8bb  libitm/config/linux/rwlock.cc
! fb3d82709da48bbb6aaae34ff6025dc5  libitm/config/linux/rwlock.h
! 9ec819da686a1bbe103970b75542d597  libitm/config/linux/sh/futex_bits.h
! 79c2fc6c1a1e1f138206035b50c32231  libitm/config/linux/sparc/futex_bits.h
! e0895f41a052b6e450b75a65de82aff1  libitm/config/linux/x86/futex_bits.h
! bb0f24579fd73331ba9b3ffc98b7e5aa  libitm/config/linux/x86/tls.h
! 7d14b0626ac01df536ec8b3642f72963  libitm/config/posix/rwlock.cc
! 9827e61ea43a0bede67eeb9cab5990e4  libitm/config/posix/rwlock.h
! d0f69d18df068d5fb4bd128678b0c874  libitm/config/powerpc/sjlj.S
! 53c92c666b4deb8028f14da3b957888e  libitm/config/powerpc/target.h
! 3fe4202ec986a79750e71985781b87aa  libitm/config/s390/sjlj.S
! d91073af6346537202e0a01c374c25a9  libitm/config/s390/target.h
! 23c14f4949d294b2dc8392e7361fcde0  libitm/config/sh/sjlj.S
! bc22065168e9253e99fefb3300e6a33e  libitm/config/sh/target.h
! ed755307442e314d600d81676f939b70  libitm/config/sparc/sjlj.S
! 62acd70b684cf5995ecc04f88bed1bbd  libitm/config/sparc/target.h
! cf38c0ded7afa8199a5e0eee0b0991dc  libitm/config/x86/sjlj.S
! 40b94dfe3a80f4e60dbdc247884af3bc  libitm/config/x86/target.h
! ddaa0750a947d9cec4bb7c0d540952fb  libitm/config/x86/x86_avx.cc
! deadb433ed14d0519ed18c7f3fc1a5bc  libitm/config/x86/x86_sse.cc
! 1dd0e2925ddaf08847c50776ea009f9e  libitm/configure
! 6d79c7dca2e664a4219b5d89de926262  libitm/configure.ac
! 4fb899171249362e56b05b17691e27db  libitm/configure.tgt
! a878bfd544991c9b1f0f2f5b39e8ca23  libitm/containers.h
! 767a0f12cfa1b6ac5a7c058fcb704dc4  libitm/dispatch.h
! 0011a3c9a726269021c8d5adcbffc2e5  libitm/eh_cpp.cc
! 91636819710989afcfb9423bebd8d9b6  libitm/libitm.h
! a053aff7bf37a8965d4522bbc4e54cd2  libitm/libitm.info
  0c43820b921ecdbe9d98f068100e716a  libitm/libitm.map
  ea467d7117853d139bb288ab75261139  libitm/libitm.spec.in
! d2826737d965aaa637712f0fe8f7f0ec  libitm/libitm.texi
! 60fe021e4db68bee2db1dea498c7a116  libitm/libitm_i.h
! 0f95d667431efbcd0f109ef603717a8c  libitm/local.cc
! b4f6c5ae1a5c4ad4967eb0f168510fa8  libitm/local_atomic
! a461019d2ced90cb3de63924eae42f87  libitm/method-gl.cc
! e01cccac677305196186cfaf800e78d0  libitm/method-ml.cc
! 0f069af5615b7eacdd20ae0f3cbb2a58  libitm/method-serial.cc
! eb3e152cd0abb246ad003faf6b9265d9  libitm/query.cc
! acfc5be1599986642876b64e82636309  libitm/retry.cc
  4835ec70e1fbcd9acd3c280c0060afa4  libitm/testsuite/Makefile.am
  d4d9b9513817c7a7ed3b32f016b07c90  libitm/testsuite/Makefile.in
! a9cb05f5a6766b7308f774d673ffcdf0  libitm/testsuite/config/default.exp
  9ab92f2310c96121666b692e1660d24f  libitm/testsuite/lib/libitm-dg.exp
! d7622f6467baf09ec539f5de44850c97  libitm/testsuite/lib/libitm.exp
! 4f9455dc2aa0262271079ba167cbc2f5  libitm/testsuite/libitm.c++/c++.exp
  11785412cb94b04ecc293453486ad223  libitm/testsuite/libitm.c++/dropref.C
  d806946f2845368f69a6513f60b085d2  libitm/testsuite/libitm.c++/eh-1.C
  4d185e0f675cc4954831fb956401121c  libitm/testsuite/libitm.c++/eh-2.C
--- 95007,95226 ----
  044204f5b4bcac5eae2face0602129ae  libiberty/config/mh-fbsd21
  904bdcd9daf97fa55a9ca8901ffe7435  libiberty/config/mh-openedition
  38e76da568ab25260754fdb9d5080513  libiberty/config/mh-windows
! 8a192359bbc0820a9a92f5094c13c48e  libiberty/configure
! 651f598ea71875086af3efc4345dcd54  libiberty/configure.ac
  5824bd0f9be9f4fa74bb3bdc7fd9431c  libiberty/configure.com
! 3f7c04aad9685c914253ef29a611199e  libiberty/copying-lib.texi
  fe053283d3559af3ec5cac45f8ead009  libiberty/copysign.c
! 7b63e04c6e9a18f279805ade1fe0305f  libiberty/cp-demangle.c
! 918eb42653b0bef10c0451209f10f2ff  libiberty/cp-demangle.h
! 22ffad6d2f908fe9f25f89016ec265cf  libiberty/cp-demint.c
! 7b74e83f683480ac7b91daf96f42a208  libiberty/cplus-dem.c
! c62fd9d734ffc22c24974f15a2196191  libiberty/crc32.c
! 67426e2352d23441bd5925f13013791c  libiberty/d-demangle.c
! 5a65aae4d1fdb63ca287ad773d568f7f  libiberty/dwarfnames.c
! 44caaf4ea452985b89aba11ee3d379be  libiberty/dyn-string.c
! 4390cd531b96e37fec16e734b6b5db8c  libiberty/fdmatch.c
  0c2635175b975823b40980974dfc2110  libiberty/ffs.c
! 379d8f7ec4a178e363d55d5aa7a29e8a  libiberty/fibheap.c
! 293852de0cc2c1a94b8129572dabdfc0  libiberty/filedescriptor.c
! 811d12698ad26785de510760f9369afc  libiberty/filename_cmp.c
! 79f2a33446d1de281562472249364b59  libiberty/floatformat.c
! fb0c17f9894de5d167d54d45e5a14290  libiberty/fnmatch.c
  145debe2f28f470878f95b1255f5537c  libiberty/fnmatch.txh
! d571094ade4af24192b8ae639d503802  libiberty/fopen_unlocked.c
! cd2f41c11d564ff1394a2bc8e0d39bd9  libiberty/functions.texi
! f867b7a778070d75e1b256ed4f3a65fb  libiberty/gather-docs
  754c5ef42440c5d1b62146174a6636e4  libiberty/getcwd.c
! 2a5faa14c0b41ebe7053ee32cdf17231  libiberty/getopt.c
! 4600d159dcc9940c11ff8763c8f2a021  libiberty/getopt1.c
  bb0043d92c716691cc17b80c845c336b  libiberty/getpagesize.c
  5e520e600636a692f52e62dcfb01921c  libiberty/getpwd.c
! fee15e1f5a5859ed8953cc8c2bad2794  libiberty/getruntime.c
  0c70ad1e35bb090b52ed593865025741  libiberty/gettimeofday.c
! 315d634b387f55dd0d1fa4ee97ee95fa  libiberty/hashtab.c
! 199dea139218ad71acf9f6dbcbf340bb  libiberty/hex.c
  4d485e7735be430b22aea0abb4938e26  libiberty/index.c
  9d0471286f21d9027bbf1b7c67b87856  libiberty/insque.c
! 6af8aee3d0f8fc3ae252e3ead4e9b454  libiberty/lbasename.c
! 49c5f5ab825c4bd456afb37b5474784b  libiberty/libiberty.texi
! 7881dfa6c12008ddaf11607bf6bed713  libiberty/lrealpath.c
! 1f97bb74cde590207b10930a47eca3b5  libiberty/maint-tool
! 55933913890a2ece22d08e4482707166  libiberty/make-relative-prefix.c
! 18b6d56f9bc4bccc36d13fda3838b203  libiberty/make-temp-file.c
  80367d734a974bd32e9ebc370dedd2e7  libiberty/makefile.vms
! e383b626d8414d0d87f24445bd58e6d4  libiberty/md5.c
  de9bd20436bf2cb64d8c374c110ce315  libiberty/memchr.c
  33320d312ab390ca0eb5c43c9e349d57  libiberty/memcmp.c
  c90c2f09bdcbd65b4732a4be25a56d12  libiberty/memcpy.c
! d09bf75e62c1449c1c488d4baf8842eb  libiberty/memmem.c
  99bfeaeb76e8e725dd8766f33810ccb1  libiberty/memmove.c
! b7293fcd6d5be9cc7e1ea5c72d5b5918  libiberty/mempcpy.c
  c44adc5ac09bdc782a8e13086ffa9367  libiberty/memset.c
! 24f0ad30c6403a6b12143a48221b6c29  libiberty/mkstemps.c
  7897e43bedd2def4beb6eb73003efa68  libiberty/msdos.c
! 5be63278d0ff2f3cf24e7d08f2406e0d  libiberty/objalloc.c
! b0e28d6013324933cde86a7082548bee  libiberty/obstack.c
  26ef02d458c958c1599de12b02c559dc  libiberty/obstacks.texi
! 502f10848aaa76deabb3fc72dbedc765  libiberty/partition.c
! f6588fdb80e5e9577731264474196485  libiberty/pex-common.c
! eb70b37dd4cd7d2a8216103c62bbce1f  libiberty/pex-common.h
! 046feff2e86d975122743becc6709540  libiberty/pex-djgpp.c
! ad0436df24cc7e497bedcf3c332b0a1a  libiberty/pex-msdos.c
! 9432e56b8b6fd150ced79ef0a1e3e45c  libiberty/pex-one.c
! 63af51490434d9289a6e3491424f6ed2  libiberty/pex-unix.c
! 314a2e9353d33a06ba2ff9dcea4e77b1  libiberty/pex-win32.c
! 06304452ee660564b6c1c0ac6c5ce553  libiberty/pexecute.c
  a6b1581efa83a4072727b38d6fef4230  libiberty/pexecute.txh
! 563e1d12db28f6000083bd3333a1ca9c  libiberty/physmem.c
! 7022295e4946e3823e17f166ae7809cb  libiberty/putenv.c
  94f22680349b4ae73ad658495d2eb542  libiberty/random.c
! f3f0aaebb6ab368e62c67ff9a5675ce0  libiberty/regex.c
  24eab3d83825c3be13549dc62b6d63d6  libiberty/rename.c
  74850488731148a9c9f410042144f37d  libiberty/rindex.c
! 6249a85761472466cd47eec599a3cb6d  libiberty/rust-demangle.c
! eace59ac0de55fdc58232b196cdaecd1  libiberty/safe-ctype.c
! 2ae492363d5deb14f195eec78fae6234  libiberty/setenv.c
! 743e1e272d59750c5edb14d5bce9d4bd  libiberty/setproctitle.c
! b0bfa24a5463b326e70dd400a27201c8  libiberty/sha1.c
  284bb7a096480b355b75c337086220a2  libiberty/sigsetmask.c
! 51026799cd2d665738861e8d6c917701  libiberty/simple-object-coff.c
! 31967686f407e6ca1bdd2a1fa1cce850  libiberty/simple-object-common.h
! 3fce95806e3e36cd4f4b130ef5d506b4  libiberty/simple-object-elf.c
! f5c136491aacb4f86c42ef3c4a678b13  libiberty/simple-object-mach-o.c
! 159199682f4dd7bbff930e9d8bd572fe  libiberty/simple-object-xcoff.c
! 57fb43d2b927f5e971297262fcefd35b  libiberty/simple-object.c
  4863a11e04a2021af582edf86f156954  libiberty/simple-object.txh
! cbac1b4a54ec343f1f8a842296cc98b4  libiberty/snprintf.c
! 406b30d27fbd7b0ca02091076d26e698  libiberty/sort.c
! 83b96a061a3b8367d613fd75c47e4868  libiberty/spaces.c
! 9ba32f6bca1addef2033422aad2f73e9  libiberty/splay-tree.c
! 9135a0ed6f68840642ad4c4e82039a88  libiberty/stack-limit.c
! 22ad5e39a8364d95669519172851de1b  libiberty/stpcpy.c
! afd870344182ec591e834367a722294d  libiberty/stpncpy.c
  0c900e9180d750a26ac0ddb237151832  libiberty/strcasecmp.c
  13cce636dd9882e42c9fc5d607351f4f  libiberty/strchr.c
  9f681e91439ac44c9df8e1b1deef33b5  libiberty/strdup.c
  ccad70af73664dbb198eb66bbea8659a  libiberty/strerror.c
  2d414e20c053293f373a5306192db8f5  libiberty/strncasecmp.c
  cc534c2ea00ea0b5e49ba8f61c6e467d  libiberty/strncmp.c
! 6aecad401679a5a2f8601d059bab31ca  libiberty/strndup.c
  fd1435a5be24d2ed84909540998dd5d7  libiberty/strnlen.c
  5b0eb0000c746fc4c1854f00bb80b53d  libiberty/strrchr.c
  f214096086d1747033efa505022dd89c  libiberty/strsignal.c
! 4f7ee7afbc48687f2bb8436658acff27  libiberty/strstr.c
! ef49b0148e933f2d05c4db04f2e84822  libiberty/strtod.c
  c9bd3841bbde6d8ae680f62523f00ab0  libiberty/strtol.c
  9968bbb75dc08ce768389912954f4348  libiberty/strtoll.c
  26196a9a92fae743a06d65f0e081084b  libiberty/strtoul.c
  d132d24f15fe05fe3614e69d6dbc65aa  libiberty/strtoull.c
! e9e8c2477a3ce95e3e55ba150c09fd0d  libiberty/strverscmp.c
! e2a97c7f2fce77132895514e4e88fd1c  libiberty/testsuite/Makefile.in
! c2803e850764e5da003e01d6d89fbd55  libiberty/testsuite/d-demangle-expected
! 402444a8dd2467bb6c339bcaae24a1f8  libiberty/testsuite/demangle-expected
! 23a85f27f4ef8c991e64e7c857988709  libiberty/testsuite/demangler-fuzzer.c
! d979995f0dcf2d11fce7fb6d015a1ad4  libiberty/testsuite/rust-demangle-expected
! 2ba92e242bd94088875b9f708f070b36  libiberty/testsuite/test-demangle.c
! 6314ba3ceeacd48c9edcad338689f6b3  libiberty/testsuite/test-expandargv.c
! 85c87a1abb1e3aa504219350c91802bb  libiberty/testsuite/test-pexecute.c
! 2be5d7fddaf9b0c521a00249a478a004  libiberty/testsuite/test-strtol.c
! 2d7988cd6b6920dcd5b68865aa9c597e  libiberty/timeval-utils.c
  6b513119d8c36af928821e8ec24265d7  libiberty/tmpnam.c
! bc203eb5a03dad5029933d5b65169737  libiberty/unlink-if-ordinary.c
! 87c106da8333aa8fb935ee7509c40023  libiberty/vasprintf.c
  8e71982d77e91c0e3c57ca86c8a1b548  libiberty/vfork.c
! 078d0fdc3c590ebed4d75a5404816df2  libiberty/vfprintf.c
! 1b0601be727001d9067180203c7152d5  libiberty/vprintf-support.c
! ccacfcab364a33558a78c0c56171b589  libiberty/vprintf-support.h
  28af0a1bf222ed2a5a87d9e170ef4a46  libiberty/vprintf.c
! aac44ef288c8181046489935c34b70f0  libiberty/vsnprintf.c
! 4ad579fa6ded04268d6bb696f6d58d9f  libiberty/vsprintf.c
  3b03f409fd38f9d543870f21e6d7f5c8  libiberty/waitpid.c
! 563ac1fd45c903826633c0b3773d5b8f  libiberty/xasprintf.c
  f32b581d10bcc500277b6f4b4f923a4e  libiberty/xatexit.c
! 58d5efcbeda8b76df09a27fd7adac3e0  libiberty/xexit.c
! ecf9feade1fe158968a07ebbabcd41ea  libiberty/xmalloc.c
  b2c289eb14e9197dcad172f3acba12b7  libiberty/xmemdup.c
  4746095b1b67693ab6e78ed72ead1235  libiberty/xstrdup.c
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
! 8d3c8fb3f736a2aa560ea573c413e8a7  libiberty/xstrndup.c
! e99d7e473939c4eba9b0590e304ce757  libiberty/xvasprintf.c
! a74802bbfad161225be7f81036444c58  libitm/ChangeLog
  a9df0726c501bf71a46f426068e8fc9f  libitm/Makefile.am
  06bb67375770bbbe550b5708624ed9d8  libitm/Makefile.in
! af64519b66d5357841d3fcdec64563ed  libitm/aatree.cc
! 20dde25f5f649dded702c12bd23c1657  libitm/aatree.h
  3d33a4cdccfd6a43f5e6b37fa3c6ba9c  libitm/acinclude.m4
  c98774b09e6486e6a0818631af2fd088  libitm/aclocal.m4
! 808f29cbbd1f64b63aab7a7e5f6da9c6  libitm/alloc.cc
! 21c423753011440e9fe6d5e2d2683537  libitm/alloc_c.cc
! e134de1202f4fb98b2f0bf3454c54e0e  libitm/alloc_cpp.cc
! ad69789b0361bf09c2bcb19135f584b1  libitm/barrier.cc
! 622036164204a5e17bf1d67dd6ae88e7  libitm/beginend.cc
! bb26b491f8f9b96f2cd8517b2f616a06  libitm/clone.cc
! 3e02fdf93a4202ad2bc8762f9370edb3  libitm/common.h
  05ea82fd12c7b4a030b6310b862ff47d  libitm/config.h.in
! 8e59b58ecd24f49a9f222939d90a568d  libitm/config/aarch64/sjlj.S
! f77bb601b4532b9ff2aa758718061839  libitm/config/aarch64/target.h
! deeb0f7d85567ad281619dd87679c440  libitm/config/alpha/sjlj.S
! 62bcfbef13f1e90796149d99544b6625  libitm/config/alpha/target.h
! a92724ed04dceb8953510342c6190481  libitm/config/arm/hwcap.cc
! 0f5310de3f4c00263859fa888547df4a  libitm/config/arm/hwcap.h
! 49fc84c95ddbb8e7d3c3d3a451d7d848  libitm/config/arm/sjlj.S
! b8a966cce5270a8f70ad0fea4bad8617  libitm/config/arm/target.h
! 04f9dbbcb3cd61160b22bb591a1604bd  libitm/config/generic/asmcfi.h
! 1ee3f7b556ca67aeb48dba245d8a5024  libitm/config/generic/tls.cc
! f37eb39fe50cb49d2b567914e51aeaf8  libitm/config/generic/tls.h
! 7a8577eaa483adb47c2254592b72fcbe  libitm/config/linux/alpha/futex_bits.h
! b2eef913ff00c95478bce09a86a14c08  libitm/config/linux/futex.cc
! f6c634d071b6f57f86c5901774403f14  libitm/config/linux/futex.h
! dffbe312764a34a974d98dee3d5b0996  libitm/config/linux/futex_bits.h
! 31fd8448cd93f1b4da625ff1e9494455  libitm/config/linux/powerpc/futex_bits.h
! 6010f479f96da34bd53bfa81bbefab01  libitm/config/linux/rwlock.cc
! ce00a3626e73cfc3cc5b8fd09cfd7abd  libitm/config/linux/rwlock.h
! 2d639133eeb5ba71fea3f3bc89447a71  libitm/config/linux/sh/futex_bits.h
! 1a478b7c13136e4f1246d9444cefec6b  libitm/config/linux/sparc/futex_bits.h
! 1884909ded39de9dd8a89e9009106550  libitm/config/linux/x86/futex_bits.h
! c34d6a4e42d719ad60452be0e3a96da9  libitm/config/linux/x86/tls.h
! 3ed37bb1df55a0f4c4c4f2ec1847903d  libitm/config/posix/rwlock.cc
! fdd5f042f8a451d0e1fa12849d5771a7  libitm/config/posix/rwlock.h
! 67fc5ebc5960d68d52651f84e9cb7cb4  libitm/config/powerpc/sjlj.S
! db3cc7a6bb88958e3d38f644a14f8342  libitm/config/powerpc/target.h
! 0ec39ea5fc008d33726ec360d97fff30  libitm/config/s390/sjlj.S
! a25bde591ff489c0e0e57a82cc993922  libitm/config/s390/target.h
! 5f3992182c52efc54e1f74da797534ce  libitm/config/sh/sjlj.S
! 10acaf48689bcfd791d86f465d504da9  libitm/config/sh/target.h
! 61733d0738dd24c1a7b384073b411cb0  libitm/config/sparc/sjlj.S
! e2c16d597b1af6445a1772ceee987273  libitm/config/sparc/target.h
! 5f0d398c7234fbb87cc86c0ca9bfb8c4  libitm/config/x86/sjlj.S
! c9222a512fcc4f010415011a88500092  libitm/config/x86/target.h
! 9c568b09bc5774c81e94d2293756cb4b  libitm/config/x86/x86_avx.cc
! 64f9b1adce5d7b0cd2c7e3fbe285f19f  libitm/config/x86/x86_sse.cc
! 740eebd258eea5c470334bb0246bc5b7  libitm/configure
! 912610810bb0eb582e6463b2caa5c524  libitm/configure.ac
! 562cd5d45320ff8b6d0d4b011dc26ec2  libitm/configure.tgt
! 0169c0d253c2099112e38ba69dcab625  libitm/containers.h
! ab70f9809e69aeb6236ac85b453d22ae  libitm/dispatch.h
! 00dbe1cee8d24eca61f7b471d1bdb412  libitm/eh_cpp.cc
! 0fc2c7d1a46777c2f9aeaa3dbc4010c1  libitm/libitm.h
! ced193068c17a0b8dc863f8116b1ef21  libitm/libitm.info
  0c43820b921ecdbe9d98f068100e716a  libitm/libitm.map
  ea467d7117853d139bb288ab75261139  libitm/libitm.spec.in
! 210ab7d12145f345b6d37bcbc56f15c7  libitm/libitm.texi
! e018d80f6a6d89f00ec87308073222e5  libitm/libitm_i.h
! 9294c322e823968a6af75534c5023883  libitm/local.cc
! 76b3fec08241438f8bbb5ee68fe3bd05  libitm/local_atomic
! 539661b2ef52bdcc5644b8e5d62eb779  libitm/method-gl.cc
! af7a9eafbcdfee89fc6136127b662355  libitm/method-ml.cc
! 35b3754587e760bdce304d531d526c43  libitm/method-serial.cc
! f7c1652ecebd6464075dc85bd052d9be  libitm/query.cc
! b2a53ec17f9f9209aa2f051e1264c31c  libitm/retry.cc
  4835ec70e1fbcd9acd3c280c0060afa4  libitm/testsuite/Makefile.am
  d4d9b9513817c7a7ed3b32f016b07c90  libitm/testsuite/Makefile.in
! c09f570c398098186715184415926c1f  libitm/testsuite/config/default.exp
  9ab92f2310c96121666b692e1660d24f  libitm/testsuite/lib/libitm-dg.exp
! dc74f9049c1c5e5ba706ccd9a852f0f0  libitm/testsuite/lib/libitm.exp
! d953b4e9b6a33467c1c38d9a56f7cd13  libitm/testsuite/libitm.c++/c++.exp
  11785412cb94b04ecc293453486ad223  libitm/testsuite/libitm.c++/dropref.C
  d806946f2845368f69a6513f60b085d2  libitm/testsuite/libitm.c++/eh-1.C
  4d185e0f675cc4954831fb956401121c  libitm/testsuite/libitm.c++/eh-2.C
*************** b4e503ecfdccc9f13da8f73eeb6f23a9  libitm
*** 89060,89129 ****
  838bdb8846eac9161e3ffbe553049f2f  libitm/testsuite/libitm.c/simple-2.c
  7ecc8e520a5c494d159cb7571cca7cdc  libitm/testsuite/libitm.c/stackundo.c
  ef24198422c19f99b0c41be6a16f7081  libitm/testsuite/libitm.c/txrelease.c
! bc16054ebacc75aa7800d984c09e69df  libitm/useraction.cc
! 73b31e65f4454e0d3684afca18e8be62  libitm/util.cc
! d243063fe92ce4047e53f517db381329  libobjc/ChangeLog
! 9d4f4158c2e1e11d5b0fbb824d28cb49  libobjc/Makefile.in
! 5d2db5fdd28bd269de26be0cffc1dfc5  libobjc/NXConstStr.m
! f7220a0d5e4ece5d5f47b88a837d818e  libobjc/Object.m
! 0e14a6362f74aeefbd8ae23256fecb6b  libobjc/Protocol.m
  d5edaeee0d84e4305368367019952ba7  libobjc/README
  dbf36fc59f8e048201543aead57eb206  libobjc/THREADS
! d022c55660dbb3b357a92eb7ee42a8f4  libobjc/accessors.m
! d1ef86f8a3cdaf289f63c4f99a11b709  libobjc/acinclude.m4
  005cfc1ff705e51549970f72513c195a  libobjc/aclocal.m4
! 5ad52e87934fb8faab4fdea9856fffa6  libobjc/class.c
  a9245d99d9418e18cecf891d7a93d664  libobjc/config.h.in
! f2acf4949e230d46514286c6e3a55256  libobjc/configure
! c932ad2a2e1b679b005ec16f1f30880a  libobjc/configure.ac
! f7bd9bb4758e29d6302b0d3d4e914378  libobjc/encoding.c
! 6e9861783b8b4742bc5e239efabeb86a  libobjc/error.c
! cd0037e6fdba4b025d328fc5c161b704  libobjc/exception.c
! 1c36b2ea12a1ca23e8c94bb0fc31901a  libobjc/gc.c
! 2707a4527edf19e29dadc9e3565eeb96  libobjc/hash.c
! 364fdbc558655d9cd9e706e52219add0  libobjc/init.c
! 474ba84efa62e10bc7fab5fc19f6bd32  libobjc/ivars.c
! 0f3572f9d45b68afbc0999955d22e790  libobjc/libobjc.def
! e813a79fca3ac337de2ef0ca585055d4  libobjc/linking.m
! beabf3e8e8cf6eef4b51e6430d487ebf  libobjc/memory.c
! 5af132299c9353ccaa2691599e4f3c72  libobjc/methods.c
! 148c5e200fc1840803fe3f4d64e1c9aa  libobjc/nil_method.c
! e6f13fd6b3b9adc1e1c01bffa70d3229  libobjc/objc-foreach.c
  4758c47369f62786c0dcdf45f3397ff7  libobjc/objc-private/README
! eb1328b40739097b1147afc9fff40d55  libobjc/objc-private/accessors.h
! 8552b5c41f2ff80ec70a3af97cd2efbd  libobjc/objc-private/common.h
! b64b455a5d5e42b4a760e8129c6137aa  libobjc/objc-private/error.h
! 62f18d9bc7710fccc2a8084d504055fa  libobjc/objc-private/hash.h
! 805887200a18485166a54e7343720252  libobjc/objc-private/module-abi-8.h
! b7e9362f4e8992e15f2448c64ecf0406  libobjc/objc-private/objc-list.h
! 7310c5ad393c055fb144821acb45d4a9  libobjc/objc-private/objc-sync.h
! e5ebfbe3c769b48fe6c677a44fd4227d  libobjc/objc-private/protocols.h
! 50a08309fed00679b9c9c675741c9757  libobjc/objc-private/runtime.h
! 51f686df569cc07a4876ef858b44e491  libobjc/objc-private/sarray.h
! 641842899ffaf159ec684d3354b9388c  libobjc/objc-private/selector.h
! dd7bc1ed1d26fcc326557760baebce9e  libobjc/objc-sync.c
! 439e28336174ff06c422795b500e6dfb  libobjc/objc/NXConstStr.h
! 6e1bbe8e6ce7b790142cde1e87095911  libobjc/objc/Object.h
! d24349e547d070975ff7d79c656ac2b7  libobjc/objc/Protocol.h
  6a0d7c25fa8ddefde53bbaf36eea5bdf  libobjc/objc/README
! 6b7562166defff571bfe719d28a979f9  libobjc/objc/message.h
! 808e6d905e6271c2bd2438a2e3b46471  libobjc/objc/objc-decls.h
! 112938ff5ec0c1038ffb4651f79d41b1  libobjc/objc/objc-exception.h
! 948ec432cf5eef195b05d69d885f16de  libobjc/objc/objc-sync.h
! 0e244984951c19930350d6d40f490c9f  libobjc/objc/objc.h
! 9bee82b58a527e3c25860ee46f345f42  libobjc/objc/runtime.h
! 332ac869a0a7c2966ba6ca6134a5fe31  libobjc/objc/thr.h
! a8ec801c9883d227d37816356bdc7327  libobjc/objects.c
! 45e399f8dcee272a43564df855cf2de4  libobjc/protocols.c
! 8364669a61809a4b28be2ce70e512940  libobjc/sarray.c
! b260ef0ddaeec837196c8e6104dbfb65  libobjc/selector.c
! 9bb351bbc1b307b03d3089874e1011a8  libobjc/sendmsg.c
! 1ab3f79e5cb7359150b4c5d0feb93d62  libobjc/thr.c
! eafefdc59865970f9057423eeb422aa7  liboffloadmic/ChangeLog
  99e2b0817f42c602b520261f7dee183b  liboffloadmic/Makefile.am
  a64a74f82774f355013471ad4dbe5014  liboffloadmic/Makefile.in
  ab5ae12a0dda7edadc0bd2be40ccff6a  liboffloadmic/aclocal.m4
! 2b81e175b24bdaf8f5b2407f1bbdef02  liboffloadmic/configure
  4284b81c40ea406b9b4fc868669f4710  liboffloadmic/configure.ac
  278b4d0003cfa80aa2ea86bca2645fff  liboffloadmic/configure.tgt
  1a7d44cf3f018d8ece62ac06721d8f36  liboffloadmic/doc/doxygen/config
--- 95246,95315 ----
  838bdb8846eac9161e3ffbe553049f2f  libitm/testsuite/libitm.c/simple-2.c
  7ecc8e520a5c494d159cb7571cca7cdc  libitm/testsuite/libitm.c/stackundo.c
  ef24198422c19f99b0c41be6a16f7081  libitm/testsuite/libitm.c/txrelease.c
! fe2e602544303e0ca40c8acd58bf0397  libitm/useraction.cc
! c3a4f9a7b553245bf2dbb55c53767427  libitm/util.cc
! d065b536d8f733acde716334f1908942  libobjc/ChangeLog
! fee63cfea98fac80ab4c9369ce19765a  libobjc/Makefile.in
! 0b2f74b5c1588ee9de0dd076fccc99a6  libobjc/NXConstStr.m
! df7a2af88216fb36f0319f328ada2fb8  libobjc/Object.m
! 9d750d580d82eda065c586a72ee24b79  libobjc/Protocol.m
  d5edaeee0d84e4305368367019952ba7  libobjc/README
  dbf36fc59f8e048201543aead57eb206  libobjc/THREADS
! c54ef3ce58742ec702257f92d488d292  libobjc/accessors.m
! 8fe4599c2b2fdbb1db7497742339e3aa  libobjc/acinclude.m4
  005cfc1ff705e51549970f72513c195a  libobjc/aclocal.m4
! b49b41658bd96cfc00259d94ebc1665b  libobjc/class.c
  a9245d99d9418e18cecf891d7a93d664  libobjc/config.h.in
! 2665537bab5737c5050d2ee2916707a9  libobjc/configure
! 54c6b0286127dee4e0870d5f393b5ce6  libobjc/configure.ac
! d0614f512e28731901f9885801641a30  libobjc/encoding.c
! fc77599698386d9a4ff7902ef1d30494  libobjc/error.c
! 4eef06d9263623ff16229c01ec247dd5  libobjc/exception.c
! 822850fa39d927cb0108d2617d26f9ff  libobjc/gc.c
! 6e6a2372ee3dd50270a7afbcc9176b8a  libobjc/hash.c
! 8607e141d70ff4641c57e9b247d70e44  libobjc/init.c
! f8133eb49a489661484c06373cbc3a94  libobjc/ivars.c
! fe5457410030bbaaba80703e4331cf9f  libobjc/libobjc.def
! de9d24f86ec7692c31978fca3a8ba024  libobjc/linking.m
! 4e4d662205df779610957792f64abec1  libobjc/memory.c
! 7cb21f2396a373764fd52affceb3c9d1  libobjc/methods.c
! 97abf83c3b37ce760fc9ebc4bf95e725  libobjc/nil_method.c
! fed0bcd80ed284c3517a13c2aa1f6d76  libobjc/objc-foreach.c
  4758c47369f62786c0dcdf45f3397ff7  libobjc/objc-private/README
! 1eeac7fe67901671d1e9d8a145b092f4  libobjc/objc-private/accessors.h
! 621ccd4244d28d100806ec70f4452912  libobjc/objc-private/common.h
! 74c8c8aa9ee74b1f586fdf65bb418568  libobjc/objc-private/error.h
! 6c9ddfcc23fc298b62596a465fa23b8f  libobjc/objc-private/hash.h
! 6408208fe57765389d872b2acb1337c5  libobjc/objc-private/module-abi-8.h
! c50de86f3d29a23f6422f49b5239bdc5  libobjc/objc-private/objc-list.h
! 45f6a1e5e30fb26624ca6783e7f3e25e  libobjc/objc-private/objc-sync.h
! 43502d777be81cc3412e6f3904935763  libobjc/objc-private/protocols.h
! 45dac50f9a35e291d0cef7866d4ff0b3  libobjc/objc-private/runtime.h
! 0c353b42bd9dad0a456f98180b222e18  libobjc/objc-private/sarray.h
! 3ae041a41f632abb82c1e74e9c054100  libobjc/objc-private/selector.h
! 66ff5b3833e7b6ad9b86edfc2f99f318  libobjc/objc-sync.c
! 6ec5e1d6e72c3ad9cddbef17b8b6998e  libobjc/objc/NXConstStr.h
! 68699fc3e135530bbaaa0a477b98e1a8  libobjc/objc/Object.h
! e3dbc08721ba9bb6ecae03dc505ffb55  libobjc/objc/Protocol.h
  6a0d7c25fa8ddefde53bbaf36eea5bdf  libobjc/objc/README
! 1dd96f505f3e9941502e045bb4d435de  libobjc/objc/message.h
! 98feb767c2a22b77ebda043180f4de8c  libobjc/objc/objc-decls.h
! b664e161f8e4aa5faf76a5e093c1a7ef  libobjc/objc/objc-exception.h
! f15abb3904df01a31d3c398c492c40c8  libobjc/objc/objc-sync.h
! 1d0d8ac71f445e5ebd2a9897459ce012  libobjc/objc/objc.h
! 64b37629483264fce10bc575f8ab496e  libobjc/objc/runtime.h
! f223d0a01e060ed11fc165db01786f72  libobjc/objc/thr.h
! 205ba52fb74a10773faccd5b675c7e84  libobjc/objects.c
! fcf99f4b6c05e0ac9ca7b7523e859699  libobjc/protocols.c
! e514cfffa12c9e3a276f91bda41431b4  libobjc/sarray.c
! b19a45655f215076ddf0ba0abecfbb45  libobjc/selector.c
! 1c03202bdb561211ad5e1d73cbb0172e  libobjc/sendmsg.c
! efb54be80262d2dd7d3b30974990576e  libobjc/thr.c
! d0d3016411af7b3278ecbc0b3728c05a  liboffloadmic/ChangeLog
  99e2b0817f42c602b520261f7dee183b  liboffloadmic/Makefile.am
  a64a74f82774f355013471ad4dbe5014  liboffloadmic/Makefile.in
  ab5ae12a0dda7edadc0bd2be40ccff6a  liboffloadmic/aclocal.m4
! 7ec3176bc702ef637f22cbd5c6a47a94  liboffloadmic/configure
  4284b81c40ea406b9b4fc868669f4710  liboffloadmic/configure.ac
  278b4d0003cfa80aa2ea86bca2645fff  liboffloadmic/configure.tgt
  1a7d44cf3f018d8ece62ac06721d8f36  liboffloadmic/doc/doxygen/config
*************** e759e3e99ff36a77562aabb91987e4bc  liboff
*** 89148,89154 ****
  2a933cb97504d0bc9c94c6b15fddbb94  liboffloadmic/plugin/Makefile.am
  80e060db44b3356edce963a710253d48  liboffloadmic/plugin/Makefile.in
  d6fc27745b253dfa53972e2439ec9b4e  liboffloadmic/plugin/aclocal.m4
! 265e267c3289c009ff5c94a7fb6324f5  liboffloadmic/plugin/configure
  440adfb52f4fc1522fbe88184ffc9aeb  liboffloadmic/plugin/configure.ac
  0eeb692b98b3a90b6fdb915a78005eae  liboffloadmic/plugin/libgomp-plugin-intelmic.cpp
  6b20eaf07b897ce0ffb3eca79c0783a4  liboffloadmic/plugin/offload_target_main.cpp
--- 95334,95340 ----
  2a933cb97504d0bc9c94c6b15fddbb94  liboffloadmic/plugin/Makefile.am
  80e060db44b3356edce963a710253d48  liboffloadmic/plugin/Makefile.in
  d6fc27745b253dfa53972e2439ec9b4e  liboffloadmic/plugin/aclocal.m4
! ee81558864da953f14c0b773e514ca89  liboffloadmic/plugin/configure
  440adfb52f4fc1522fbe88184ffc9aeb  liboffloadmic/plugin/configure.ac
  0eeb692b98b3a90b6fdb915a78005eae  liboffloadmic/plugin/libgomp-plugin-intelmic.cpp
  6b20eaf07b897ce0ffb3eca79c0783a4  liboffloadmic/plugin/offload_target_main.cpp
*************** a2a1ed886d0bbb767414132196e823f4  liboff
*** 89192,89198 ****
  243929a2c17cf413f38d78a1ada9a864  liboffloadmic/runtime/offload_orsl.h
  a38d78d9969ba2e4583f776ade7fc3b3  liboffloadmic/runtime/offload_table.cpp
  4b806ed0a17ec6754be29402f25da563  liboffloadmic/runtime/offload_table.h
! 0ed34157d13ac34e4ec8c953dc112717  liboffloadmic/runtime/offload_target.cpp
  e23d462291b697cf0a5216944e7cc6df  liboffloadmic/runtime/offload_target.h
  c5ed2cdd43714c6e1503825dcc4f1870  liboffloadmic/runtime/offload_target_main.cpp
  3d28bddc0edbd3880352c2589cb1d1b8  liboffloadmic/runtime/offload_timer.h
--- 95378,95384 ----
  243929a2c17cf413f38d78a1ada9a864  liboffloadmic/runtime/offload_orsl.h
  a38d78d9969ba2e4583f776ade7fc3b3  liboffloadmic/runtime/offload_table.cpp
  4b806ed0a17ec6754be29402f25da563  liboffloadmic/runtime/offload_table.h
! eed7cf7567fc263c1e9c9d345110ad6e  liboffloadmic/runtime/offload_target.cpp
  e23d462291b697cf0a5216944e7cc6df  liboffloadmic/runtime/offload_target.h
  c5ed2cdd43714c6e1503825dcc4f1870  liboffloadmic/runtime/offload_target_main.cpp
  3d28bddc0edbd3880352c2589cb1d1b8  liboffloadmic/runtime/offload_timer.h
*************** b1def68202639bd452fb59aea3371fe4  liboff
*** 89207,89279 ****
  4659326a13bd5fed47bb680ddb6f5dc3  liboffloadmic/runtime/orsl-lite/include/orsl-lite.h
  cc603cdf253cc686bfcee192bb7630df  liboffloadmic/runtime/orsl-lite/lib/orsl-lite.c
  dff5c8575c49d6aa71e549b0fa021479  liboffloadmic/runtime/orsl-lite/version.txt
! 3c281b9dc7c978f2da992ee4b30f6887  libphobos/ChangeLog
! c0cf15c8749b27e8cbddf4b7a0624410  libphobos/Makefile.am
! 7ad7ee1e1bf5ae832c27808640f7d8fb  libphobos/Makefile.in
  ee88c20a7744a2305503e1670f3b7889  libphobos/README.gcc
! 9e45e564200b57cbeff3e2faef2549a9  libphobos/acinclude.m4
! cad54e92dc1de05941ae2d6b630be82f  libphobos/aclocal.m4
  4923b1152206303a26c7dfb87f5de315  libphobos/config.h.in
! a33988c2e271a535e3172df7b718c4d1  libphobos/configure
! 6d486c924db0a05b440bf0a0ac92072d  libphobos/configure.ac
! 478030f518bd66ff5553ebf151591109  libphobos/configure.tgt
! 10b7fdf03be6e3c4b9c320b8207415d6  libphobos/d_rules.am
  8aa3148471595dc8cae4ec62919a57ea  libphobos/libdruntime/LICENSE
! 7ff133b53cd05d13018e7e9593d6a299  libphobos/libdruntime/MERGE
! 75b64e58848f1fff24a6e70edf99bf6d  libphobos/libdruntime/Makefile.am
! 0e1351f0fd5ac16a2b163e17b524397f  libphobos/libdruntime/Makefile.in
! 98b902ba8f9108fa3f2738af586b3915  libphobos/libdruntime/__entrypoint.di
! ced045bb866611449ff2f5567008973f  libphobos/libdruntime/__main.di
! 8d8103b2682c77ab543b7d1f338334be  libphobos/libdruntime/config/aarch64/switchcontext.S
! 7c1c32c5a0be6745c864af3a50ad8532  libphobos/libdruntime/config/arm/switchcontext.S
! faa7b660783bd323488f9730e619973d  libphobos/libdruntime/config/common/threadasm.S
! 85e999d8cd0ed16f86cd607e5608c50e  libphobos/libdruntime/config/mingw/switchcontext.S
! 5aed26d165013e64cd76828db93beb9e  libphobos/libdruntime/config/mips/switchcontext.S
! 9163da0f4eff32dd8ccd8bd6b8158eb8  libphobos/libdruntime/config/powerpc/switchcontext.S
! 6b5bd65dd2d9e7bb653cf2037f7a08a4  libphobos/libdruntime/config/s390/get_tls_offset.S
! a550dfe8410964b9ed36e8860540d31c  libphobos/libdruntime/config/systemz/get_tls_offset.S
! d1975a2f6c17a6ab190ecea5d58c07bc  libphobos/libdruntime/config/x86/switchcontext.S
  a8c8d5fe3bf3060df2aef535a1a3cb15  libphobos/libdruntime/core/atomic.d
  9d6d58736eca8f18fbb0207d7ea26756  libphobos/libdruntime/core/attribute.d
! 89c32774af11f97ece25b34722c349cd  libphobos/libdruntime/core/bitop.d
! d1b3bf3883e943a1c78fc8f982a6970e  libphobos/libdruntime/core/checkedint.d
! 06a1a5c3186c2b3506708259793dc454  libphobos/libdruntime/core/cpuid.d
! e33bf04a13c9e74533581a69ef9a7c2c  libphobos/libdruntime/core/demangle.d
  a44eebee0344cacc3e7b8b0a99cff8c7  libphobos/libdruntime/core/exception.d
! 7d5d8d0b5260df73ae5c40c44658f6fe  libphobos/libdruntime/core/internal/abort.d
  faf661e33781f7a48d9702fb9c8f11c7  libphobos/libdruntime/core/internal/arrayop.d
! 6d1b6adc8e755444c9f8fe4eaab5d72c  libphobos/libdruntime/core/internal/convert.d
  e99b934946358577ca5236bc4afaf88c  libphobos/libdruntime/core/internal/hash.d
  39f71cce4c8ab6c77cfa8590abc1bbf5  libphobos/libdruntime/core/internal/spinlock.d
  1d11ebb93bf474099f1fd3590c94356b  libphobos/libdruntime/core/internal/string.d
! 9654226815d4e46896754d177579ef14  libphobos/libdruntime/core/internal/traits.d
! fe97bedf7e7f800310c6743d51736db2  libphobos/libdruntime/core/math.d
  975c6a4f7bc3b7d27578d2fbc84c5176  libphobos/libdruntime/core/memory.d
  0a83ed84f5ae0ea3ae09d4a55846f0db  libphobos/libdruntime/core/runtime.d
! 46baf95d4530dab1294a9de512da516f  libphobos/libdruntime/core/simd.d
  f276ebf85ef328a41c5ca86da694d73f  libphobos/libdruntime/core/stdc/assert_.d
! dae8aa8d104eb0346e03f070e5833ed0  libphobos/libdruntime/core/stdc/complex.d
! e0cb1f2329a825fdbf07a089c2e07080  libphobos/libdruntime/core/stdc/config.d
  e73e1e0aaf48227fef16ff41037ecbdd  libphobos/libdruntime/core/stdc/ctype.d
! e2739899265953513137d5c006ed5a8b  libphobos/libdruntime/core/stdc/errno.d
  e91ed8a068db9723b27deb61078c2a0e  libphobos/libdruntime/core/stdc/errno_.c
! 9370ea1d3ff82ca25c894fb50c3c69ad  libphobos/libdruntime/core/stdc/fenv.d
  627bd812c57c65e72ca9360911ec5e37  libphobos/libdruntime/core/stdc/float_.d
! 213804b794c66c80a5ad9076c9882d36  libphobos/libdruntime/core/stdc/inttypes.d
! 6d6d2b35b73e95f65dcc80bf8ceb9e9c  libphobos/libdruntime/core/stdc/limits.d
! 534800d3ad8e7a98a1962b699e5d2cac  libphobos/libdruntime/core/stdc/locale.d
! 7fc333619a69dd6c2ee4b18691ca47e3  libphobos/libdruntime/core/stdc/math.d
  94c1f25ee3344d05581afb7715c36fd8  libphobos/libdruntime/core/stdc/signal.d
! 0ef5d07b12633cf63f79aa58e9217e65  libphobos/libdruntime/core/stdc/stdarg.d
  ec9f863d9c7addf6af7a13d803894041  libphobos/libdruntime/core/stdc/stddef.d
! 8812baba1be6e426b9e6797d0a148965  libphobos/libdruntime/core/stdc/stdint.d
! 1a6d2c9e378c043288d4701f280db025  libphobos/libdruntime/core/stdc/stdio.d
! 01267d28d80f1425b7103c6c0c9568c8  libphobos/libdruntime/core/stdc/stdlib.d
! 9a9cdfaca13ebefaf3eb962c0137f0be  libphobos/libdruntime/core/stdc/string.d
! 6d1a50452c5f12024a6df6221a482def  libphobos/libdruntime/core/stdc/tgmath.d
! 8ee6de8cd26fb973e5887b6795273f44  libphobos/libdruntime/core/stdc/time.d
! cc86c6a46d54008ff5ec8cf600d0dda0  libphobos/libdruntime/core/stdc/wchar_.d
! 96418ebea80a9027537b27771e592537  libphobos/libdruntime/core/stdc/wctype.d
  52254a7e6a4872d378fc0fe1625b3eed  libphobos/libdruntime/core/stdcpp/exception.d
  41e1afdf4ad74ac7784eb4eb2e1eebe8  libphobos/libdruntime/core/stdcpp/typeinfo.d
  9ca247dcfa9f9740089dacdd465e7fc0  libphobos/libdruntime/core/sync/barrier.d
--- 95393,95467 ----
  4659326a13bd5fed47bb680ddb6f5dc3  liboffloadmic/runtime/orsl-lite/include/orsl-lite.h
  cc603cdf253cc686bfcee192bb7630df  liboffloadmic/runtime/orsl-lite/lib/orsl-lite.c
  dff5c8575c49d6aa71e549b0fa021479  liboffloadmic/runtime/orsl-lite/version.txt
! e664a019ef29ff28ec812e5a04ca0ae4  libphobos/ChangeLog
! 33bab560c80ad2bb8f6a01c76e8fac58  libphobos/Makefile.am
! c82f2c9df9a32b41c885f634fd4618b4  libphobos/Makefile.in
  ee88c20a7744a2305503e1670f3b7889  libphobos/README.gcc
! 4b61d4f71285cbc989f962250fb067a6  libphobos/acinclude.m4
! fbb3c30724cb241010afacb0505c53e7  libphobos/aclocal.m4
  4923b1152206303a26c7dfb87f5de315  libphobos/config.h.in
! e1132d289faa02ff818735f097e6961d  libphobos/configure
! 844b7bd59219ff22200c109d3daca5b4  libphobos/configure.ac
! 1561aa0dddb59baab61546f1413c767f  libphobos/configure.tgt
! 4fc4fe1f005bbbe92182c492dfa11879  libphobos/d_rules.am
  8aa3148471595dc8cae4ec62919a57ea  libphobos/libdruntime/LICENSE
! a2e3d8e50b683be1bb2a3f71654cf253  libphobos/libdruntime/MERGE
! 79c0bb65136e2d09884f89a8ee5fe84c  libphobos/libdruntime/Makefile.am
! fc1493d12618a9d399f1b50a6059b3c9  libphobos/libdruntime/Makefile.in
! 243d5d07f12cc2eb4375b39daee48cb6  libphobos/libdruntime/__entrypoint.di
! d9431d9349d8904f044016098d57ed93  libphobos/libdruntime/__main.di
! f7d57528e369858a460619fc3fd71cdb  libphobos/libdruntime/config/aarch64/switchcontext.S
! 6453f31e003a8235b632df6d25155d41  libphobos/libdruntime/config/arm/switchcontext.S
! ea455c0596f7024208c4a2e9063cc4c2  libphobos/libdruntime/config/common/threadasm.S
! 8022403e7c6803acaf21cbb861ce8589  libphobos/libdruntime/config/mingw/msvc.c
! 46cb95493bf5b06dabba4d1f813b9da6  libphobos/libdruntime/config/mingw/switchcontext.S
! c12b05a45964bf4bdae4603ae4ce47b5  libphobos/libdruntime/config/mips/switchcontext.S
! 01a90ff80c4d60c00aadbcb7adefaf73  libphobos/libdruntime/config/powerpc/switchcontext.S
! 17c32783668bfe24249a0c951ef18d08  libphobos/libdruntime/config/s390/get_tls_offset.S
! 6b102a3459c85782c18f2fbab0a0e5ea  libphobos/libdruntime/config/systemz/get_tls_offset.S
! 91cb936a44ff7b5a45a6002369fbde6e  libphobos/libdruntime/config/x86/switchcontext.S
  a8c8d5fe3bf3060df2aef535a1a3cb15  libphobos/libdruntime/core/atomic.d
  9d6d58736eca8f18fbb0207d7ea26756  libphobos/libdruntime/core/attribute.d
! 4fcb39af3195321a158589d875faaa2c  libphobos/libdruntime/core/bitop.d
! bc6c7fad057970ceedf1b4384a0d173d  libphobos/libdruntime/core/checkedint.d
! e78005e94abbe57989cebd7c9a7c745f  libphobos/libdruntime/core/cpuid.d
! 0bbfdf6946f532945962f2ea11fe9c65  libphobos/libdruntime/core/demangle.d
  a44eebee0344cacc3e7b8b0a99cff8c7  libphobos/libdruntime/core/exception.d
! e83e6a9f6fb52fb24f1796f23f1a18b6  libphobos/libdruntime/core/internal/abort.d
  faf661e33781f7a48d9702fb9c8f11c7  libphobos/libdruntime/core/internal/arrayop.d
! 87f5099304bb6fa7f4723eb1c7b3aa7d  libphobos/libdruntime/core/internal/attributes.d
! 6caa475db7002dc33f288a2c493e895d  libphobos/libdruntime/core/internal/convert.d
  e99b934946358577ca5236bc4afaf88c  libphobos/libdruntime/core/internal/hash.d
  39f71cce4c8ab6c77cfa8590abc1bbf5  libphobos/libdruntime/core/internal/spinlock.d
  1d11ebb93bf474099f1fd3590c94356b  libphobos/libdruntime/core/internal/string.d
! ed84173ee2f70111f0daf3c08433d7e7  libphobos/libdruntime/core/internal/traits.d
! a42df479bd0f00336da756f71cadec09  libphobos/libdruntime/core/math.d
  975c6a4f7bc3b7d27578d2fbc84c5176  libphobos/libdruntime/core/memory.d
  0a83ed84f5ae0ea3ae09d4a55846f0db  libphobos/libdruntime/core/runtime.d
! 1c57f26e7da85fca9e47d730ec9e8444  libphobos/libdruntime/core/simd.d
  f276ebf85ef328a41c5ca86da694d73f  libphobos/libdruntime/core/stdc/assert_.d
! 027bd40faf09b13abf5dc94da4aaa176  libphobos/libdruntime/core/stdc/complex.d
! 9d2ae5828ad2e4e11fc25d3838c06341  libphobos/libdruntime/core/stdc/config.d
  e73e1e0aaf48227fef16ff41037ecbdd  libphobos/libdruntime/core/stdc/ctype.d
! b0bed8bde9d9aa6689fee207f4ae06e0  libphobos/libdruntime/core/stdc/errno.d
  e91ed8a068db9723b27deb61078c2a0e  libphobos/libdruntime/core/stdc/errno_.c
! 5bc69913491ed28a0c3a08bf4d2434d8  libphobos/libdruntime/core/stdc/fenv.d
  627bd812c57c65e72ca9360911ec5e37  libphobos/libdruntime/core/stdc/float_.d
! 7b0fbc4eebf5b3364fd3541f51608b9a  libphobos/libdruntime/core/stdc/inttypes.d
! 1a30fd546325cb5ed6fe746ef0c6f995  libphobos/libdruntime/core/stdc/limits.d
! b51a1082520c7feae033856d8ff7feaf  libphobos/libdruntime/core/stdc/locale.d
! f81c12ec62853e665d8537a2590e7006  libphobos/libdruntime/core/stdc/math.d
  94c1f25ee3344d05581afb7715c36fd8  libphobos/libdruntime/core/stdc/signal.d
! 637ca0b5e651c59698ec62ce8235a651  libphobos/libdruntime/core/stdc/stdarg.d
  ec9f863d9c7addf6af7a13d803894041  libphobos/libdruntime/core/stdc/stddef.d
! 4a8184303c15a0bd84986bd752cb5956  libphobos/libdruntime/core/stdc/stdint.d
! 6e6b96bab9be505e18fa06a22c66f330  libphobos/libdruntime/core/stdc/stdio.d
! 162cf9b9678d6f00ed1578ea329f5d2c  libphobos/libdruntime/core/stdc/stdlib.d
! f4fb01a3ee53332353bf7d886b82e6a7  libphobos/libdruntime/core/stdc/string.d
! b1b452c04a088565feada1af815d3ea2  libphobos/libdruntime/core/stdc/tgmath.d
! 5b4d2f8d4b10356845cfded43243cbeb  libphobos/libdruntime/core/stdc/time.d
! f0996fca3450ab1ce16a808a4e304176  libphobos/libdruntime/core/stdc/wchar_.d
! b1663e1953112eee39a60ee083f81988  libphobos/libdruntime/core/stdc/wctype.d
  52254a7e6a4872d378fc0fe1625b3eed  libphobos/libdruntime/core/stdcpp/exception.d
  41e1afdf4ad74ac7784eb4eb2e1eebe8  libphobos/libdruntime/core/stdcpp/typeinfo.d
  9ca247dcfa9f9740089dacdd465e7fc0  libphobos/libdruntime/core/sync/barrier.d
*************** f9fb574f0baa909bf159bb8d4823ef96  libpho
*** 89283,89311 ****
  48cde7504a00966d44e02ab9e1798254  libphobos/libdruntime/core/sync/mutex.d
  7fd0938eeb60d93b07b37eaf932947fd  libphobos/libdruntime/core/sync/rwmutex.d
  9fa64d695826f18da9541181ceda3892  libphobos/libdruntime/core/sync/semaphore.d
  d55bf2dad61f2510372f4bc81570b20b  libphobos/libdruntime/core/sys/bionic/fcntl.d
  c4a4a30c955883aaed97049584c1513c  libphobos/libdruntime/core/sys/bionic/string.d
  6590cb511cc9a5f03165dd25827e7d5b  libphobos/libdruntime/core/sys/bionic/unistd.d
  7268f90152682f29fdbfdaea2235051f  libphobos/libdruntime/core/sys/darwin/crt_externs.d
! 825b4d38e6947e434fea4ffc588457ef  libphobos/libdruntime/core/sys/darwin/dlfcn.d
  57ead34bc2c10609cee697697c7109d9  libphobos/libdruntime/core/sys/darwin/execinfo.d
! 5524965b540081e30136bfa5573a6f9c  libphobos/libdruntime/core/sys/darwin/mach/dyld.d
! 3f1d133c57617a85c9465f64d2632b03  libphobos/libdruntime/core/sys/darwin/mach/getsect.d
  0ff5ed83f084635f094a9003ce83e2e3  libphobos/libdruntime/core/sys/darwin/mach/kern_return.d
! 1705b39ab4bc6b422c1c41d33b22fb9e  libphobos/libdruntime/core/sys/darwin/mach/loader.d
  27705f6828a0cd3d2ed10b37956cb52d  libphobos/libdruntime/core/sys/darwin/mach/port.d
  11f245cf78f453eec2ce6ab6ab994489  libphobos/libdruntime/core/sys/darwin/mach/semaphore.d
! d6176f88d7d2b5d7bd8a59fdee00f9f2  libphobos/libdruntime/core/sys/darwin/mach/thread_act.d
! 6ba8e4a56f05aeea83e0ae3baa05c486  libphobos/libdruntime/core/sys/darwin/netinet/in_.d
! 1092c1874cbb8af48e6372b25a9001fc  libphobos/libdruntime/core/sys/darwin/pthread.d
  a76880a4302f8dd367056c35b58eec89  libphobos/libdruntime/core/sys/darwin/string.d
  f313052d67738ea2ef7ecb6a841d8e8a  libphobos/libdruntime/core/sys/darwin/sys/cdefs.d
  0a9f455c4909b18d235716e2e990b036  libphobos/libdruntime/core/sys/darwin/sys/event.d
  d45630fa4eae2334c1017e90da6181b4  libphobos/libdruntime/core/sys/darwin/sys/mman.d
! 060231cb347338cbf6994fdec3503f02  libphobos/libdruntime/core/sys/dragonflybsd/dlfcn.d
  acf1e3bd64ab277991c64333d3e0579b  libphobos/libdruntime/core/sys/dragonflybsd/execinfo.d
! 7ad61257e30e3f9ab891cbf56e53ac20  libphobos/libdruntime/core/sys/dragonflybsd/netinet/in_.d
  c86f640d53951aff6dc85f8a55a95b29  libphobos/libdruntime/core/sys/dragonflybsd/pthread_np.d
  9972b2bf7d75c85217ee1cb8e4168a9d  libphobos/libdruntime/core/sys/dragonflybsd/string.d
  aebec2abbff9264fe5fb8fe7f0742f3e  libphobos/libdruntime/core/sys/dragonflybsd/sys/_bitset.d
  5ab9878143773ab170060d0052e88be1  libphobos/libdruntime/core/sys/dragonflybsd/sys/_cpuset.d
--- 95471,95512 ----
  48cde7504a00966d44e02ab9e1798254  libphobos/libdruntime/core/sync/mutex.d
  7fd0938eeb60d93b07b37eaf932947fd  libphobos/libdruntime/core/sync/rwmutex.d
  9fa64d695826f18da9541181ceda3892  libphobos/libdruntime/core/sync/semaphore.d
+ 50fe5e30b4d51364e814298406f553f8  libphobos/libdruntime/core/sys/bionic/err.d
  d55bf2dad61f2510372f4bc81570b20b  libphobos/libdruntime/core/sys/bionic/fcntl.d
+ 61ec901bd4228ade72b80f786ea9f841  libphobos/libdruntime/core/sys/bionic/stdlib.d
  c4a4a30c955883aaed97049584c1513c  libphobos/libdruntime/core/sys/bionic/string.d
  6590cb511cc9a5f03165dd25827e7d5b  libphobos/libdruntime/core/sys/bionic/unistd.d
+ e1a0c2ace7ce019d9507ff2e36d9046c  libphobos/libdruntime/core/sys/darwin/config.d
  7268f90152682f29fdbfdaea2235051f  libphobos/libdruntime/core/sys/darwin/crt_externs.d
! 709b12a24d03edec2c980a4af2b9d3aa  libphobos/libdruntime/core/sys/darwin/dlfcn.d
! a3c540146008694cd55b9331f0ea3c00  libphobos/libdruntime/core/sys/darwin/err.d
  57ead34bc2c10609cee697697c7109d9  libphobos/libdruntime/core/sys/darwin/execinfo.d
! 0060659b909387b22689025cf7610aa1  libphobos/libdruntime/core/sys/darwin/fcntl.d
! 58b8dee3b90f7fa64a82c894643b2027  libphobos/libdruntime/core/sys/darwin/ifaddrs.d
! cdd965e1bc4060658a5783cea01da633  libphobos/libdruntime/core/sys/darwin/mach/dyld.d
! 1977f7f9305576784856f478fc34637e  libphobos/libdruntime/core/sys/darwin/mach/getsect.d
  0ff5ed83f084635f094a9003ce83e2e3  libphobos/libdruntime/core/sys/darwin/mach/kern_return.d
! 322a2c3bf9ff78db7beed5f673f08f84  libphobos/libdruntime/core/sys/darwin/mach/loader.d
! c122b118a6caa88ffee48b98cab19b1a  libphobos/libdruntime/core/sys/darwin/mach/nlist.d
  27705f6828a0cd3d2ed10b37956cb52d  libphobos/libdruntime/core/sys/darwin/mach/port.d
  11f245cf78f453eec2ce6ab6ab994489  libphobos/libdruntime/core/sys/darwin/mach/semaphore.d
! 09669d73890b99bf78487d58f0bc57df  libphobos/libdruntime/core/sys/darwin/mach/stab.d
! 6a7b6370ff94633dc40723b8e1135b29  libphobos/libdruntime/core/sys/darwin/mach/thread_act.d
! e0cfebfa42a04ef83e94ce398f8d572a  libphobos/libdruntime/core/sys/darwin/netinet/in_.d
! 99642cacbd6ed7ea6c4ea68521cbd236  libphobos/libdruntime/core/sys/darwin/pthread.d
! a638835645b7f6f237988cde82cdc023  libphobos/libdruntime/core/sys/darwin/stdlib.d
  a76880a4302f8dd367056c35b58eec89  libphobos/libdruntime/core/sys/darwin/string.d
+ 1822982f807a2d0bf4f414d7508f14b9  libphobos/libdruntime/core/sys/darwin/sys/attr.d
  f313052d67738ea2ef7ecb6a841d8e8a  libphobos/libdruntime/core/sys/darwin/sys/cdefs.d
  0a9f455c4909b18d235716e2e990b036  libphobos/libdruntime/core/sys/darwin/sys/event.d
  d45630fa4eae2334c1017e90da6181b4  libphobos/libdruntime/core/sys/darwin/sys/mman.d
! ee768f1e1a87f6a51cceb812e431b845  libphobos/libdruntime/core/sys/darwin/sys/sysctl.d
! 7ac49f34c30e28529c9432aaafc80b09  libphobos/libdruntime/core/sys/dragonflybsd/dlfcn.d
! 6eac382e99d9b8534968c86038d313d8  libphobos/libdruntime/core/sys/dragonflybsd/err.d
  acf1e3bd64ab277991c64333d3e0579b  libphobos/libdruntime/core/sys/dragonflybsd/execinfo.d
! a6a8f14bd00ff97c7e0951489f562ad8  libphobos/libdruntime/core/sys/dragonflybsd/netinet/in_.d
  c86f640d53951aff6dc85f8a55a95b29  libphobos/libdruntime/core/sys/dragonflybsd/pthread_np.d
+ ca5f75ae9c3430ffa168de837fbdacce  libphobos/libdruntime/core/sys/dragonflybsd/stdlib.d
  9972b2bf7d75c85217ee1cb8e4168a9d  libphobos/libdruntime/core/sys/dragonflybsd/string.d
  aebec2abbff9264fe5fb8fe7f0742f3e  libphobos/libdruntime/core/sys/dragonflybsd/sys/_bitset.d
  5ab9878143773ab170060d0052e88be1  libphobos/libdruntime/core/sys/dragonflybsd/sys/_cpuset.d
*************** aebec2abbff9264fe5fb8fe7f0742f3e  libpho
*** 89315,89328 ****
  7be5b5634353fc858899a6918aa3cbd5  libphobos/libdruntime/core/sys/dragonflybsd/sys/elf64.d
  99207929e21166c3d01746e683da783f  libphobos/libdruntime/core/sys/dragonflybsd/sys/elf_common.d
  c4670d2d6c9210cd8b63dd16ea2d4c7e  libphobos/libdruntime/core/sys/dragonflybsd/sys/event.d
! b9e28d7d67d3d531de6b82f1d484098f  libphobos/libdruntime/core/sys/dragonflybsd/sys/link_elf.d
  3fe6b99d2ece571b1ae5c5515edd2f1c  libphobos/libdruntime/core/sys/dragonflybsd/sys/mman.d
  894ff2238ebbebe3242c4209a893c05b  libphobos/libdruntime/core/sys/dragonflybsd/sys/socket.d
  f14294df112fde328fa8d60fe9777a4c  libphobos/libdruntime/core/sys/dragonflybsd/time.d
! 1b3df43cf29221667e1c56364e8af305  libphobos/libdruntime/core/sys/freebsd/dlfcn.d
! 0efbffe14932110915ab1d05d65899b5  libphobos/libdruntime/core/sys/freebsd/execinfo.d
! 685ff4a5a2e62f045ab28c15b50a23d7  libphobos/libdruntime/core/sys/freebsd/netinet/in_.d
  eed1afcf0c9c1f7170550c80d4c1a294  libphobos/libdruntime/core/sys/freebsd/pthread_np.d
  516149c63b33c453ea924d05504cd92f  libphobos/libdruntime/core/sys/freebsd/string.d
  760a556212d4a95cf4109e26f2492711  libphobos/libdruntime/core/sys/freebsd/sys/_bitset.d
  55344b2716c3a4c2b4dae60cf7c69ca8  libphobos/libdruntime/core/sys/freebsd/sys/_cpuset.d
--- 95516,95533 ----
  7be5b5634353fc858899a6918aa3cbd5  libphobos/libdruntime/core/sys/dragonflybsd/sys/elf64.d
  99207929e21166c3d01746e683da783f  libphobos/libdruntime/core/sys/dragonflybsd/sys/elf_common.d
  c4670d2d6c9210cd8b63dd16ea2d4c7e  libphobos/libdruntime/core/sys/dragonflybsd/sys/event.d
! 94cb059685b222a5be21171cd4e5ae38  libphobos/libdruntime/core/sys/dragonflybsd/sys/link_elf.d
  3fe6b99d2ece571b1ae5c5515edd2f1c  libphobos/libdruntime/core/sys/dragonflybsd/sys/mman.d
  894ff2238ebbebe3242c4209a893c05b  libphobos/libdruntime/core/sys/dragonflybsd/sys/socket.d
+ 1edd21f71df6ed90f611f5f352b3166c  libphobos/libdruntime/core/sys/dragonflybsd/sys/sysctl.d
  f14294df112fde328fa8d60fe9777a4c  libphobos/libdruntime/core/sys/dragonflybsd/time.d
! 11d346220afca0260d90a23b42154bf7  libphobos/libdruntime/core/sys/freebsd/config.d
! 1300c66d6a74457f3ae9b2215df2821e  libphobos/libdruntime/core/sys/freebsd/dlfcn.d
! af280329e0c803d82636283b14c46642  libphobos/libdruntime/core/sys/freebsd/err.d
! 380100960f334f1ed62e46fcde0154f3  libphobos/libdruntime/core/sys/freebsd/execinfo.d
! 307b5921875f2667f8c2a0195d46589e  libphobos/libdruntime/core/sys/freebsd/netinet/in_.d
  eed1afcf0c9c1f7170550c80d4c1a294  libphobos/libdruntime/core/sys/freebsd/pthread_np.d
+ ef7226f644352e61dd81ad370cf837fc  libphobos/libdruntime/core/sys/freebsd/stdlib.d
  516149c63b33c453ea924d05504cd92f  libphobos/libdruntime/core/sys/freebsd/string.d
  760a556212d4a95cf4109e26f2492711  libphobos/libdruntime/core/sys/freebsd/sys/_bitset.d
  55344b2716c3a4c2b4dae60cf7c69ca8  libphobos/libdruntime/core/sys/freebsd/sys/_cpuset.d
*************** eed1afcf0c9c1f7170550c80d4c1a294  libpho
*** 89331,89374 ****
  2bc8637b5d34b107ae5a6b2dcf35c780  libphobos/libdruntime/core/sys/freebsd/sys/elf32.d
  99a3029e4430f4ac1819c71b837eaa55  libphobos/libdruntime/core/sys/freebsd/sys/elf64.d
  f505ef077a2c3986ca4055d98decc56a  libphobos/libdruntime/core/sys/freebsd/sys/elf_common.d
! 8834b48df054341f7b1c0d6b21de3721  libphobos/libdruntime/core/sys/freebsd/sys/event.d
! ef34d9683cbbaff15e8b4f5d4c4e36c4  libphobos/libdruntime/core/sys/freebsd/sys/link_elf.d
  b5482e757cf68b7cab783fb27ff7e8dc  libphobos/libdruntime/core/sys/freebsd/sys/mman.d
! 03b38cf0921af754d36adeed5cc45d49  libphobos/libdruntime/core/sys/freebsd/sys/mount.d
  7580b3a7ee4945c8401ff9ad2b1eb5d8  libphobos/libdruntime/core/sys/freebsd/time.d
  58ce9c60b279b1d219d3f44f0c062f3e  libphobos/libdruntime/core/sys/freebsd/unistd.d
  78eda82e58bc4fe3830e3a0d95ad237b  libphobos/libdruntime/core/sys/linux/config.d
! 92a7280c64f4b07791ae260b6d269f00  libphobos/libdruntime/core/sys/linux/dlfcn.d
! b8779933aef86343d2aedd33f7e23f71  libphobos/libdruntime/core/sys/linux/elf.d
! 7c76ba277040549dda929f6ae4925cc9  libphobos/libdruntime/core/sys/linux/epoll.d
! d63865d7d79d1b19c39998cc5aeab177  libphobos/libdruntime/core/sys/linux/errno.d
! 735bee6a2e085c7a5140da1f50f1b0b9  libphobos/libdruntime/core/sys/linux/execinfo.d
! 3be4fb4327824d508767f100923fff6c  libphobos/libdruntime/core/sys/linux/fcntl.d
! 9f8adb3868c5638b1cb8608b572b0946  libphobos/libdruntime/core/sys/linux/ifaddrs.d
! 1a86ebde280651186aaa2563cd9ff437  libphobos/libdruntime/core/sys/linux/link.d
! deeaf72b21f1f238817c322c38f1c344  libphobos/libdruntime/core/sys/linux/netinet/in_.d
  ef4ca38842cf7000f36294af3547a28a  libphobos/libdruntime/core/sys/linux/netinet/tcp.d
! 1b38d6c73d487b8f1a4217e9e80405e8  libphobos/libdruntime/core/sys/linux/sched.d
! e6fa9f9bb5e7591878e8f3896f6e29fe  libphobos/libdruntime/core/sys/linux/stdio.d
! b69cd1197f08982d3b3fe2e98ece2882  libphobos/libdruntime/core/sys/linux/string.d
  28da6eda5c615291a6aac7a619f20f78  libphobos/libdruntime/core/sys/linux/sys/auxv.d
  7ea96b49471b6289eb8299fbe418c31a  libphobos/libdruntime/core/sys/linux/sys/eventfd.d
  d24094280e490194dedf87b353ff18bb  libphobos/libdruntime/core/sys/linux/sys/file.d
! 78ffa271a2a40e383a769f5c3d1a2cbb  libphobos/libdruntime/core/sys/linux/sys/inotify.d
! 2d931d0c9b933ba56f385e4c4d197419  libphobos/libdruntime/core/sys/linux/sys/mman.d
! dd69099f2923a9da5adfc09236150377  libphobos/libdruntime/core/sys/linux/sys/prctl.d
! fe6b18516eb240fa19ceb923b0bde103  libphobos/libdruntime/core/sys/linux/sys/signalfd.d
  00be1093b809dc09200b03f711033c00  libphobos/libdruntime/core/sys/linux/sys/socket.d
! 86a89527d97460eaf8460e185ad3f275  libphobos/libdruntime/core/sys/linux/sys/sysinfo.d
! 7093b2312930ce5ca5bf93c8247540fc  libphobos/libdruntime/core/sys/linux/sys/time.d
! a079b89d45ee1428ae5d9d128411abd7  libphobos/libdruntime/core/sys/linux/sys/xattr.d
  0b804d571d1307b84e7e1f15b4c3d019  libphobos/libdruntime/core/sys/linux/termios.d
  51b5b6cdb4decd39c003dd6fcd9216ce  libphobos/libdruntime/core/sys/linux/time.d
  911e6b52f63b86bf643effb3bc490d48  libphobos/libdruntime/core/sys/linux/timerfd.d
! bb22c87ab53594d27e8179d8de1002a3  libphobos/libdruntime/core/sys/linux/tipc.d
! 45c477c249f4282aec09e2f84e15a042  libphobos/libdruntime/core/sys/linux/unistd.d
! 9e00dfba4ad5e1c446950f8ab74e8bd6  libphobos/libdruntime/core/sys/netbsd/dlfcn.d
  16687f12d9b35a350c3415c52d038cd0  libphobos/libdruntime/core/sys/netbsd/execinfo.d
  a112b6ad4d37972b66801bcdf8b36906  libphobos/libdruntime/core/sys/netbsd/string.d
  e739d3dae4d70fa6737b4ce09c43994d  libphobos/libdruntime/core/sys/netbsd/sys/elf.d
  2f2ddae6374b8429bf5c0782474af3b8  libphobos/libdruntime/core/sys/netbsd/sys/elf32.d
--- 95536,95583 ----
  2bc8637b5d34b107ae5a6b2dcf35c780  libphobos/libdruntime/core/sys/freebsd/sys/elf32.d
  99a3029e4430f4ac1819c71b837eaa55  libphobos/libdruntime/core/sys/freebsd/sys/elf64.d
  f505ef077a2c3986ca4055d98decc56a  libphobos/libdruntime/core/sys/freebsd/sys/elf_common.d
! d2880e9391595d51528eb24f44a12446  libphobos/libdruntime/core/sys/freebsd/sys/event.d
! 3438f02ecb73e3e9a85756b150a51b74  libphobos/libdruntime/core/sys/freebsd/sys/link_elf.d
  b5482e757cf68b7cab783fb27ff7e8dc  libphobos/libdruntime/core/sys/freebsd/sys/mman.d
! 35461fcb8e8d6d5134771fd6e623e2ef  libphobos/libdruntime/core/sys/freebsd/sys/mount.d
! 2fd5d8f5c454e4d0236e0c6b4076b3f3  libphobos/libdruntime/core/sys/freebsd/sys/sysctl.d
  7580b3a7ee4945c8401ff9ad2b1eb5d8  libphobos/libdruntime/core/sys/freebsd/time.d
  58ce9c60b279b1d219d3f44f0c062f3e  libphobos/libdruntime/core/sys/freebsd/unistd.d
  78eda82e58bc4fe3830e3a0d95ad237b  libphobos/libdruntime/core/sys/linux/config.d
! 979cdf63693b849e23cf9b16863fd665  libphobos/libdruntime/core/sys/linux/dlfcn.d
! 9d78ad97e048f35f166e93fc8a257d3b  libphobos/libdruntime/core/sys/linux/elf.d
! 45b78c71b74d9b20049dbdc6489ea85a  libphobos/libdruntime/core/sys/linux/epoll.d
! e191c06f87919f4adec9c982feb29aec  libphobos/libdruntime/core/sys/linux/err.d
! 185b342b16c42624b12ffd1b30a8a362  libphobos/libdruntime/core/sys/linux/errno.d
! 5acfff22872b45dea57ec75e92889abc  libphobos/libdruntime/core/sys/linux/execinfo.d
! 935ea2ae6772bc751d347bb55641b584  libphobos/libdruntime/core/sys/linux/fcntl.d
! 74e924a11837d0902cd064af18ae0456  libphobos/libdruntime/core/sys/linux/ifaddrs.d
! 4f38545861ca7fa7efb84e0a5fcd6b3c  libphobos/libdruntime/core/sys/linux/link.d
! 55ee58373a21df97b0b2b1976c1030f6  libphobos/libdruntime/core/sys/linux/netinet/in_.d
  ef4ca38842cf7000f36294af3547a28a  libphobos/libdruntime/core/sys/linux/netinet/tcp.d
! 429fd504099fca269ed1b8cf4929cdf7  libphobos/libdruntime/core/sys/linux/sched.d
! 8a4825fd9f24f4d8eb8b82ab454851c3  libphobos/libdruntime/core/sys/linux/stdio.d
! e4101265ca43c372f146c958e47bc0c4  libphobos/libdruntime/core/sys/linux/string.d
  28da6eda5c615291a6aac7a619f20f78  libphobos/libdruntime/core/sys/linux/sys/auxv.d
  7ea96b49471b6289eb8299fbe418c31a  libphobos/libdruntime/core/sys/linux/sys/eventfd.d
  d24094280e490194dedf87b353ff18bb  libphobos/libdruntime/core/sys/linux/sys/file.d
! e9d6847489a932ed6c168dc2f63139f1  libphobos/libdruntime/core/sys/linux/sys/inotify.d
! eaf7761cb76c18a22f0106e37ba72ff8  libphobos/libdruntime/core/sys/linux/sys/mman.d
! 760b3a3ba87ef1ea457197d20ffd7bb8  libphobos/libdruntime/core/sys/linux/sys/prctl.d
! 8dd5be002434c8031e503c306e4400f9  libphobos/libdruntime/core/sys/linux/sys/signalfd.d
  00be1093b809dc09200b03f711033c00  libphobos/libdruntime/core/sys/linux/sys/socket.d
! 9467d51c62741df44e30900beee30259  libphobos/libdruntime/core/sys/linux/sys/sysinfo.d
! ef42e08f89c82f6a904ab70a22e52ad9  libphobos/libdruntime/core/sys/linux/sys/time.d
! e0d6349243f4628102df05cc8aecb721  libphobos/libdruntime/core/sys/linux/sys/xattr.d
  0b804d571d1307b84e7e1f15b4c3d019  libphobos/libdruntime/core/sys/linux/termios.d
  51b5b6cdb4decd39c003dd6fcd9216ce  libphobos/libdruntime/core/sys/linux/time.d
  911e6b52f63b86bf643effb3bc490d48  libphobos/libdruntime/core/sys/linux/timerfd.d
! 36b60a4130cd1488549946ab47892020  libphobos/libdruntime/core/sys/linux/tipc.d
! 147de99dcf03eef5b45d3c774b64b677  libphobos/libdruntime/core/sys/linux/unistd.d
! 8b13977d689884e56be2965cdcee0968  libphobos/libdruntime/core/sys/netbsd/dlfcn.d
! dfd28b5ab076802f136129647195c782  libphobos/libdruntime/core/sys/netbsd/err.d
  16687f12d9b35a350c3415c52d038cd0  libphobos/libdruntime/core/sys/netbsd/execinfo.d
+ f03137d862ce397c6fb8ef85bcefab73  libphobos/libdruntime/core/sys/netbsd/stdlib.d
  a112b6ad4d37972b66801bcdf8b36906  libphobos/libdruntime/core/sys/netbsd/string.d
  e739d3dae4d70fa6737b4ce09c43994d  libphobos/libdruntime/core/sys/netbsd/sys/elf.d
  2f2ddae6374b8429bf5c0782474af3b8  libphobos/libdruntime/core/sys/netbsd/sys/elf32.d
*************** e739d3dae4d70fa6737b4ce09c43994d  libpho
*** 89376,89452 ****
  62f3e35fa3023872887390d5132421ce  libphobos/libdruntime/core/sys/netbsd/sys/elf_common.d
  3b9b03a58246b1ff0add7bf8623db546  libphobos/libdruntime/core/sys/netbsd/sys/event.d
  b7d30227519e88528d6f108a0b716317  libphobos/libdruntime/core/sys/netbsd/sys/featuretest.d
! 50792b9070c0ff408dc03d35d4669401  libphobos/libdruntime/core/sys/netbsd/sys/link_elf.d
  9de03b49678d737774525f946308c176  libphobos/libdruntime/core/sys/netbsd/sys/mman.d
  c91b85e73f2ed19d2ab87faaa1954366  libphobos/libdruntime/core/sys/netbsd/time.d
  dbe541665e1a72e9c61dcddb24ffe02a  libphobos/libdruntime/core/sys/openbsd/dlfcn.d
! 5abdfc1d759f0000620d56f82c1cb4b9  libphobos/libdruntime/core/sys/openbsd/string.d
  61119274dbe0da19bb7862b1d8e3be88  libphobos/libdruntime/core/sys/openbsd/sys/cdefs.d
  4f2b043926b16e1b37a2e25509085736  libphobos/libdruntime/core/sys/openbsd/sys/elf.d
  47420237b3795e8d4fa790d55bde4adf  libphobos/libdruntime/core/sys/openbsd/sys/elf32.d
  b1f1af3d6d0621746166cc16eb9c7b3e  libphobos/libdruntime/core/sys/openbsd/sys/elf64.d
  dadfb12aa3ebcaf98bc06d53bec3b016  libphobos/libdruntime/core/sys/openbsd/sys/elf_common.d
! 8bc1650d7bcebc9a01aed1c80aeeed6a  libphobos/libdruntime/core/sys/openbsd/sys/link_elf.d
  21b6f504ce0ee889fbffd0f0ea9aeb52  libphobos/libdruntime/core/sys/openbsd/sys/mman.d
  26fdce9d3769cf37bf38b5ada08836f3  libphobos/libdruntime/core/sys/openbsd/time.d
! 3dfeaaf8e457a6226f36ee5363693804  libphobos/libdruntime/core/sys/posix/aio.d
! a98623f7a378df0ee97cd1cec1aa112d  libphobos/libdruntime/core/sys/posix/arpa/inet.d
! 6615b27ecfb9e6ac80837ed89acb7f51  libphobos/libdruntime/core/sys/posix/config.d
! bbd8fb545d3e1062d89963a2676d6dbd  libphobos/libdruntime/core/sys/posix/dirent.d
! daee92393c011377817dc152880b874e  libphobos/libdruntime/core/sys/posix/dlfcn.d
! 75d06cc9c57c6a1503544e3ce7009669  libphobos/libdruntime/core/sys/posix/fcntl.d
! 733105844e75ab6961072fab2e2dfe0f  libphobos/libdruntime/core/sys/posix/grp.d
! 679d3813df1d2563a30b0d87bdb5a5ab  libphobos/libdruntime/core/sys/posix/iconv.d
! 0e43c19196fbb55a248e11197fe9ce77  libphobos/libdruntime/core/sys/posix/inttypes.d
! 81dd20c53642e5d32550aab3d366f157  libphobos/libdruntime/core/sys/posix/libgen.d
! 75d99141dd5bb0411bfb8c3979644e57  libphobos/libdruntime/core/sys/posix/mqueue.d
! 281f8e9d9c0ee7bcad39b6709a045dc9  libphobos/libdruntime/core/sys/posix/net/if_.d
! 6a2280edc8881385f0a3e4238f87519f  libphobos/libdruntime/core/sys/posix/netdb.d
! 7a8fb5c68286e950cc01855f2d3041ff  libphobos/libdruntime/core/sys/posix/netinet/in_.d
! 5970c7ae59046139ca69cef1490b4aa6  libphobos/libdruntime/core/sys/posix/netinet/tcp.d
! a8572a06acf675a9830ea92329fe3a24  libphobos/libdruntime/core/sys/posix/poll.d
! 2bd3e4fcd1e526e0051257bc4c669b86  libphobos/libdruntime/core/sys/posix/pthread.d
! 9bfb747fddccaadb02a055816c24f5e5  libphobos/libdruntime/core/sys/posix/pwd.d
! 97e3dca788430892ccea1281b656d17e  libphobos/libdruntime/core/sys/posix/sched.d
! 05db0af4864c4a19e49b165c4ddb3667  libphobos/libdruntime/core/sys/posix/semaphore.d
! 78c86ec97774400a0ef45dfbcdf240f8  libphobos/libdruntime/core/sys/posix/setjmp.d
! 60227c4d85b583302274370ac842fbae  libphobos/libdruntime/core/sys/posix/signal.d
! a3c4a07e34251576512c010a1bd82f82  libphobos/libdruntime/core/sys/posix/spawn.d
! 12ea64e98de5757a77060923724317b2  libphobos/libdruntime/core/sys/posix/stdio.d
! f630294298ecc12c33193601cde97330  libphobos/libdruntime/core/sys/posix/stdlib.d
! a0a982b9e159212868953cd12d539439  libphobos/libdruntime/core/sys/posix/sys/filio.d
! 10717dbcdda9ceb942a4ea2cb06f2347  libphobos/libdruntime/core/sys/posix/sys/ioccom.d
! b553321857b9b96b3efc23d4bafbf583  libphobos/libdruntime/core/sys/posix/sys/ioctl.d
! 226790839fe4d66168d1aba0c24430da  libphobos/libdruntime/core/sys/posix/sys/ipc.d
! 75872324c75a39361ad68ca629088624  libphobos/libdruntime/core/sys/posix/sys/mman.d
! 3cf85477813d91c95edf6e56478e2b9f  libphobos/libdruntime/core/sys/posix/sys/msg.d
! ff135cbdf5b61276c8be5193a585bee0  libphobos/libdruntime/core/sys/posix/sys/resource.d
! 5b35c8d36f9a4de2a8ac9c64cfb1e88c  libphobos/libdruntime/core/sys/posix/sys/select.d
! db113a3bf5bd9cccbdc7217712d8c134  libphobos/libdruntime/core/sys/posix/sys/shm.d
! c898bae09b918e1382e03234d6d302d5  libphobos/libdruntime/core/sys/posix/sys/socket.d
! 967739c2356820559044ef6324b4cd3e  libphobos/libdruntime/core/sys/posix/sys/stat.d
! 3ebfa48e94a468406d7fe4dc2bf2dea6  libphobos/libdruntime/core/sys/posix/sys/statvfs.d
! dc70745f1d303a924261c9aa045ed37f  libphobos/libdruntime/core/sys/posix/sys/time.d
! 8247e986a9bd9dd24d2df7852ce21bb9  libphobos/libdruntime/core/sys/posix/sys/ttycom.d
! c89afeccc34d34281f04ba2c080f5226  libphobos/libdruntime/core/sys/posix/sys/types.d
! 2e919105b1b303c1f509b8e5fce7e613  libphobos/libdruntime/core/sys/posix/sys/uio.d
! 51f7afe07c50617af673fc2dbdf3cf40  libphobos/libdruntime/core/sys/posix/sys/un.d
! cac398e14e045ed42244544f84db5c9a  libphobos/libdruntime/core/sys/posix/sys/utsname.d
! 52323df475894b2d4510f86aa4080287  libphobos/libdruntime/core/sys/posix/sys/wait.d
! 35819f5cbe14d0de9ad45950c7b7119a  libphobos/libdruntime/core/sys/posix/syslog.d
! 8bb74b4da3e528772ec40fb979ab1700  libphobos/libdruntime/core/sys/posix/termios.d
! a8d1b1f804ca2ad176339b4af8a9016e  libphobos/libdruntime/core/sys/posix/time.d
! 21982346701096c5cbea3871dedb85d5  libphobos/libdruntime/core/sys/posix/ucontext.d
! ca5f63a7ff3eebc0e67ebffcff911833  libphobos/libdruntime/core/sys/posix/unistd.d
! dc704221d81639a700f26c9228abdcb5  libphobos/libdruntime/core/sys/posix/utime.d
! 29f254a6c3431b138bfb431682c531e7  libphobos/libdruntime/core/sys/solaris/dlfcn.d
  e24762f124741eb7164ac6d35f819119  libphobos/libdruntime/core/sys/solaris/elf.d
  d821485cf4fb84fc3a4823d17496c304  libphobos/libdruntime/core/sys/solaris/execinfo.d
! 97096c3aec4455454a5ea9a6da778746  libphobos/libdruntime/core/sys/solaris/libelf.d
! 879efae98afd4f44e32a262866614191  libphobos/libdruntime/core/sys/solaris/link.d
  61b6eada0d246b8f343da95efdc87f67  libphobos/libdruntime/core/sys/solaris/sys/elf.d
  61f95af40f0fc7bdd539dd639521b495  libphobos/libdruntime/core/sys/solaris/sys/elf_386.d
! 315f62f4ff6e40a48f0674c624371087  libphobos/libdruntime/core/sys/solaris/sys/elf_SPARC.d
  c3b9387d319e17b1825a2b306d1b524d  libphobos/libdruntime/core/sys/solaris/sys/elf_amd64.d
  0884e0943c7a980f29212b1293b12dba  libphobos/libdruntime/core/sys/solaris/sys/elf_notes.d
  eeffc8caf2a16c5f95ba55a3c48f70f1  libphobos/libdruntime/core/sys/solaris/sys/elftypes.d
--- 95585,95672 ----
  62f3e35fa3023872887390d5132421ce  libphobos/libdruntime/core/sys/netbsd/sys/elf_common.d
  3b9b03a58246b1ff0add7bf8623db546  libphobos/libdruntime/core/sys/netbsd/sys/event.d
  b7d30227519e88528d6f108a0b716317  libphobos/libdruntime/core/sys/netbsd/sys/featuretest.d
! 90e9b823006c634cf0ea0fc288e628f2  libphobos/libdruntime/core/sys/netbsd/sys/link_elf.d
  9de03b49678d737774525f946308c176  libphobos/libdruntime/core/sys/netbsd/sys/mman.d
+ 00fa230caafce571c5e5b9b1c0e66f55  libphobos/libdruntime/core/sys/netbsd/sys/sysctl.d
  c91b85e73f2ed19d2ab87faaa1954366  libphobos/libdruntime/core/sys/netbsd/time.d
  dbe541665e1a72e9c61dcddb24ffe02a  libphobos/libdruntime/core/sys/openbsd/dlfcn.d
! 76a7cedaf47c514815473a2e187a7c4d  libphobos/libdruntime/core/sys/openbsd/err.d
! 1094a03d71c0a72acc499e1514f8a6d8  libphobos/libdruntime/core/sys/openbsd/stdlib.d
! 79e7d6174c84307e15bfe2d70bf58884  libphobos/libdruntime/core/sys/openbsd/string.d
  61119274dbe0da19bb7862b1d8e3be88  libphobos/libdruntime/core/sys/openbsd/sys/cdefs.d
  4f2b043926b16e1b37a2e25509085736  libphobos/libdruntime/core/sys/openbsd/sys/elf.d
  47420237b3795e8d4fa790d55bde4adf  libphobos/libdruntime/core/sys/openbsd/sys/elf32.d
  b1f1af3d6d0621746166cc16eb9c7b3e  libphobos/libdruntime/core/sys/openbsd/sys/elf64.d
  dadfb12aa3ebcaf98bc06d53bec3b016  libphobos/libdruntime/core/sys/openbsd/sys/elf_common.d
! ed254802fe236c52abe7ec9ebf7f8f79  libphobos/libdruntime/core/sys/openbsd/sys/link_elf.d
  21b6f504ce0ee889fbffd0f0ea9aeb52  libphobos/libdruntime/core/sys/openbsd/sys/mman.d
+ 3a11d7597d9438b11c9a26cccfe8117c  libphobos/libdruntime/core/sys/openbsd/sys/sysctl.d
  26fdce9d3769cf37bf38b5ada08836f3  libphobos/libdruntime/core/sys/openbsd/time.d
! 589069ea0610cd2c7339a90d955d292d  libphobos/libdruntime/core/sys/openbsd/unistd.d
! 198370b8820f3db46a80d447938a30d3  libphobos/libdruntime/core/sys/posix/aio.d
! c1dac6288753c891f8ec173a3dc57d62  libphobos/libdruntime/core/sys/posix/arpa/inet.d
! 1a446ce70964990d0864c586f5755fe0  libphobos/libdruntime/core/sys/posix/config.d
! 676658d748ed751e7fc65ece0c887cfc  libphobos/libdruntime/core/sys/posix/dirent.d
! 8d0dd76f14de21e3e98b7c00ec62402c  libphobos/libdruntime/core/sys/posix/dlfcn.d
! 308cbd84ae80447c14acd90eabef36aa  libphobos/libdruntime/core/sys/posix/fcntl.d
! 7c2ed4684f1e1236c753e224d3861bc6  libphobos/libdruntime/core/sys/posix/grp.d
! 78097ad54d7e30233bc2096505d9381f  libphobos/libdruntime/core/sys/posix/iconv.d
! 5fde0ea877bd02237ae4c8bad758af1e  libphobos/libdruntime/core/sys/posix/inttypes.d
! c582dcc48c9dbc511dcbb250b6e8e0ff  libphobos/libdruntime/core/sys/posix/libgen.d
! b988465d4b60d57b4960d42b8fe49352  libphobos/libdruntime/core/sys/posix/locale.d
! 5cdd1d83f9dd28b654c12a503f0721bd  libphobos/libdruntime/core/sys/posix/mqueue.d
! 7a91f96e1429fa42fa4f41114dc92706  libphobos/libdruntime/core/sys/posix/net/if_.d
! 0e92adce08f71ad99e1d8c8939c17092  libphobos/libdruntime/core/sys/posix/netdb.d
! 352e112b95d9f5b485e02df80a159271  libphobos/libdruntime/core/sys/posix/netinet/in_.d
! e2bed0b739fc017fa2c967cab3adf1ab  libphobos/libdruntime/core/sys/posix/netinet/tcp.d
! c0b5849f19fa26f6230cf4bee5543e08  libphobos/libdruntime/core/sys/posix/poll.d
! f018b3052e24a1c26e41901675990102  libphobos/libdruntime/core/sys/posix/pthread.d
! 453c6c187ee2dc82d0fa5abc3504c0b1  libphobos/libdruntime/core/sys/posix/pwd.d
! 4a9f21b35663aad717b12e86926bf338  libphobos/libdruntime/core/sys/posix/sched.d
! e28f540a5c2e22756eefd8b50d01a0a0  libphobos/libdruntime/core/sys/posix/semaphore.d
! 802cdc5f25ac3225689c0d239b5568df  libphobos/libdruntime/core/sys/posix/setjmp.d
! eecb290966813f46751b150311a3e9ba  libphobos/libdruntime/core/sys/posix/signal.d
! c93e4de9caab4a1470e278682e6c903d  libphobos/libdruntime/core/sys/posix/spawn.d
! 5c93ef14880500138d9f642ec4d501e0  libphobos/libdruntime/core/sys/posix/stdc/time.d
! 9216223c082ad17fb7e37ffa9e3d1f41  libphobos/libdruntime/core/sys/posix/stdio.d
! 11edef1239c75ff58562b90313319a04  libphobos/libdruntime/core/sys/posix/stdlib.d
! 47ea7e4d8969d71d4d029e26ccc354af  libphobos/libdruntime/core/sys/posix/string.d
! cfe01b190b878b0e95fb9347033971dc  libphobos/libdruntime/core/sys/posix/strings.d
! a5bdd8ee2ca5db40440e27208ed0389c  libphobos/libdruntime/core/sys/posix/sys/filio.d
! c4d1a3c15ffb9d69c5111e4fd2d9eed5  libphobos/libdruntime/core/sys/posix/sys/ioccom.d
! 17aaf38545598765b5d6cde146431720  libphobos/libdruntime/core/sys/posix/sys/ioctl.d
! 925d759cf9d5b18eb3e54b1c2e1bc77d  libphobos/libdruntime/core/sys/posix/sys/ipc.d
! 054c01a08967a0829cf04244b28ae7ae  libphobos/libdruntime/core/sys/posix/sys/mman.d
! 71e2800fd8795ce5238be51d015f215d  libphobos/libdruntime/core/sys/posix/sys/msg.d
! 6b74b3097f933b7f747f680af0cadff2  libphobos/libdruntime/core/sys/posix/sys/resource.d
! 920e611edb76252a28fadbc6f1f7290c  libphobos/libdruntime/core/sys/posix/sys/select.d
! 3f0160fd3aef93cff923512013076f31  libphobos/libdruntime/core/sys/posix/sys/shm.d
! af2ed3c00c9dfcc030db67502b701893  libphobos/libdruntime/core/sys/posix/sys/socket.d
! 0771629aad6d79f026a4d9326819a63b  libphobos/libdruntime/core/sys/posix/sys/stat.d
! a1bfb009ab16e1b9ac568b1bdee35fac  libphobos/libdruntime/core/sys/posix/sys/statvfs.d
! f71ae7f996ce3771b140c9a921b5aeb9  libphobos/libdruntime/core/sys/posix/sys/time.d
! 3ae60f821a06e5d186bca19aba1d47e6  libphobos/libdruntime/core/sys/posix/sys/ttycom.d
! 7a8ec90679d130ed9a9a2a83dbca6592  libphobos/libdruntime/core/sys/posix/sys/types.d
! 2d6bebed89a89ff7ab8a98164586e3f8  libphobos/libdruntime/core/sys/posix/sys/uio.d
! 052e161c5cb19aa20eb6573d04d35678  libphobos/libdruntime/core/sys/posix/sys/un.d
! 9d80c5eb1f9e3c226152f4b1a775ade7  libphobos/libdruntime/core/sys/posix/sys/utsname.d
! 39278679b3f1fcb707ac0d97d4c67ab4  libphobos/libdruntime/core/sys/posix/sys/wait.d
! 8437ee40fa6b6f2f44bf7c68f5009ab3  libphobos/libdruntime/core/sys/posix/syslog.d
! 2f0cc16e98fbd3d4ec11f56079e524ab  libphobos/libdruntime/core/sys/posix/termios.d
! a17c99a8a9d6de27db17c0817eea5849  libphobos/libdruntime/core/sys/posix/time.d
! 5e84397b1e18a77a36adb905de82fc26  libphobos/libdruntime/core/sys/posix/ucontext.d
! b170c2fa65d62140895035c27f858ff0  libphobos/libdruntime/core/sys/posix/unistd.d
! 2df1796dfe2516e39808045b21b3ff8c  libphobos/libdruntime/core/sys/posix/utime.d
! 3912c5418db939fee965556c29a7d147  libphobos/libdruntime/core/sys/solaris/dlfcn.d
  e24762f124741eb7164ac6d35f819119  libphobos/libdruntime/core/sys/solaris/elf.d
+ 6609181d8ebdbb548ac7d475d0b53e25  libphobos/libdruntime/core/sys/solaris/err.d
  d821485cf4fb84fc3a4823d17496c304  libphobos/libdruntime/core/sys/solaris/execinfo.d
! 13168aebf00d1f79d79f7aa9a14ee45e  libphobos/libdruntime/core/sys/solaris/libelf.d
! b80defc2ca94dd32d65995270ef8aed4  libphobos/libdruntime/core/sys/solaris/link.d
! 9ab55da380bb23d8586ee2d0026f2d88  libphobos/libdruntime/core/sys/solaris/stdlib.d
  61b6eada0d246b8f343da95efdc87f67  libphobos/libdruntime/core/sys/solaris/sys/elf.d
  61f95af40f0fc7bdd539dd639521b495  libphobos/libdruntime/core/sys/solaris/sys/elf_386.d
! 7f25338f3d930a3d260412d97117d0df  libphobos/libdruntime/core/sys/solaris/sys/elf_SPARC.d
  c3b9387d319e17b1825a2b306d1b524d  libphobos/libdruntime/core/sys/solaris/sys/elf_amd64.d
  0884e0943c7a980f29212b1293b12dba  libphobos/libdruntime/core/sys/solaris/sys/elf_notes.d
  eeffc8caf2a16c5f95ba55a3c48f70f1  libphobos/libdruntime/core/sys/solaris/sys/elftypes.d
*************** b9faed4c0872089959f3d536c5ef4859  libpho
*** 89455,89738 ****
  ee0171b87244b69c4c653ae92f3ecdc3  libphobos/libdruntime/core/sys/solaris/sys/procset.d
  62c2f92b9a740d50758085899522502d  libphobos/libdruntime/core/sys/solaris/sys/types.d
  f3220636fa9a34351a43f51401f4186d  libphobos/libdruntime/core/sys/solaris/time.d
! 062a55196b75f84ec12ecab5ff93a947  libphobos/libdruntime/core/sys/windows/accctrl.d
! 3cee13c0f0e731a23510ece20cc56fe7  libphobos/libdruntime/core/sys/windows/aclapi.d
! 6e29fce0511fdda418b5e9ca3cdd4d28  libphobos/libdruntime/core/sys/windows/aclui.d
! f4036ba0db8a449148689abef4be9ce3  libphobos/libdruntime/core/sys/windows/basetsd.d
! ea6da7789d13c72e434e5024df6caf81  libphobos/libdruntime/core/sys/windows/basetyps.d
  8ab3cf5d41de5eb9291b75ad64741d98  libphobos/libdruntime/core/sys/windows/cderr.d
! 0a63ef0d1c5e4206b456bdde82aedab1  libphobos/libdruntime/core/sys/windows/cguid.d
! 4d937b05623adf47adcab2044b993ed3  libphobos/libdruntime/core/sys/windows/com.d
! 82abed97aebd6161a127427632846d82  libphobos/libdruntime/core/sys/windows/comcat.d
! 240f231c1e894703b72660f1aab4fa56  libphobos/libdruntime/core/sys/windows/commctrl.d
! 19fb307cc2800ef2b35b2a2d8a76455c  libphobos/libdruntime/core/sys/windows/commdlg.d
  9bcf0e605c73bd7256a44647d29ca972  libphobos/libdruntime/core/sys/windows/core.d
! 56d18fd3015963e2ec93aa3d82caf70e  libphobos/libdruntime/core/sys/windows/cpl.d
! f11d6cd53948a63aac6fbe86ca19454c  libphobos/libdruntime/core/sys/windows/cplext.d
! c3229aa87b4f60c3d6fd21347ffa2426  libphobos/libdruntime/core/sys/windows/custcntl.d
! 1621f9b98ae9c1661844ed915a4f9945  libphobos/libdruntime/core/sys/windows/dbghelp.d
! 5d026ec2e43ebbbe3f06a24f39348ee9  libphobos/libdruntime/core/sys/windows/dbghelp_types.d
! 2047cade1138902d6bc6e3103f33b2c6  libphobos/libdruntime/core/sys/windows/dbt.d
! 06d861e23443ea98bda7d8c7104a3513  libphobos/libdruntime/core/sys/windows/dde.d
! 212eb6152e28a3f183bcb63de8cd3b69  libphobos/libdruntime/core/sys/windows/ddeml.d
! 710ff88a06af0aecb9de368f760898ce  libphobos/libdruntime/core/sys/windows/dhcpcsdk.d
! 4c4cc149969da6d8aa4e4e9fead20c8e  libphobos/libdruntime/core/sys/windows/dlgs.d
! 10c29e618a4e738a46bc377afd2f19ab  libphobos/libdruntime/core/sys/windows/dll.d
! 34fa4f0d0444bacd09a1c67688eae13d  libphobos/libdruntime/core/sys/windows/docobj.d
! 358fe6890d47022253912541edd0929b  libphobos/libdruntime/core/sys/windows/errorrep.d
! a36dab3afa98741ea4562b38a25c5127  libphobos/libdruntime/core/sys/windows/exdisp.d
  9f3821ee16c7c0f6841bcd16db654226  libphobos/libdruntime/core/sys/windows/exdispid.d
! b542225315c8498e3fb5c12e058581de  libphobos/libdruntime/core/sys/windows/httpext.d
  62fd7b950934b7aa3e5229e7b77bdcee  libphobos/libdruntime/core/sys/windows/idispids.d
! 1331ac1d5eccc05440523539e6b0a487  libphobos/libdruntime/core/sys/windows/imagehlp.d
! 5e5b3fbfe95cdb9d4c2793f88fe8db70  libphobos/libdruntime/core/sys/windows/imm.d
! f20975fcbbc7f60639e1fd42315d1e00  libphobos/libdruntime/core/sys/windows/intshcut.d
! 7b08f7b87b144ddd969bf273f481b65e  libphobos/libdruntime/core/sys/windows/ipexport.d
! b5d38df5faeebb9a94213333e77b7b67  libphobos/libdruntime/core/sys/windows/iphlpapi.d
  38c49ea9d35df883cba0e21646be27e9  libphobos/libdruntime/core/sys/windows/ipifcons.d
! a908fc44f65af0d2752dd5fa7cb2d2b2  libphobos/libdruntime/core/sys/windows/iprtrmib.d
! 7aae0795b8bcadec6c12d60e7b416088  libphobos/libdruntime/core/sys/windows/iptypes.d
! 35b7e0338901e0145cf424e71624dc63  libphobos/libdruntime/core/sys/windows/isguids.d
! 238d490a0cf20c196c61a96cfe0c43d4  libphobos/libdruntime/core/sys/windows/lm.d
! de5f954e4f496932053bccd8fc70a667  libphobos/libdruntime/core/sys/windows/lmaccess.d
! e3a1cfb7465093b6d5a3482efc966798  libphobos/libdruntime/core/sys/windows/lmalert.d
! 8bfd26e2338ad9436ab2981dda2d70d6  libphobos/libdruntime/core/sys/windows/lmapibuf.d
! f01280e58d704ba9024cc0389a29b769  libphobos/libdruntime/core/sys/windows/lmat.d
! 0fb7e43db46b07c4d41463450f0b42fe  libphobos/libdruntime/core/sys/windows/lmaudit.d
! bf0758c348bf75503829f74b79f91139  libphobos/libdruntime/core/sys/windows/lmbrowsr.d
! 15d47d701f7321356daba5d6a2db2b9f  libphobos/libdruntime/core/sys/windows/lmchdev.d
! 05cba1c625a1217691ae30f25a2af014  libphobos/libdruntime/core/sys/windows/lmconfig.d
! 99aac85ad2ca5627da445f8269ca07b6  libphobos/libdruntime/core/sys/windows/lmcons.d
! a02598fbc50b53dfb684f12aa5e7eae5  libphobos/libdruntime/core/sys/windows/lmerr.d
! f209a8bfb4d4fc63d107e5f075c51ffd  libphobos/libdruntime/core/sys/windows/lmerrlog.d
! a3c81c97a64f3868ffb4de1fb95691d9  libphobos/libdruntime/core/sys/windows/lmmsg.d
! cf53338279ea8b882500463197aa85c0  libphobos/libdruntime/core/sys/windows/lmremutl.d
! e4d22983a630b19d387006b09107390d  libphobos/libdruntime/core/sys/windows/lmrepl.d
! f362c6281b7cfa9612afc7ef53d181f1  libphobos/libdruntime/core/sys/windows/lmserver.d
! 7fba442c4b71516a343229e50782acc9  libphobos/libdruntime/core/sys/windows/lmshare.d
! f0e2415aa21eb703145ff326ef8a016a  libphobos/libdruntime/core/sys/windows/lmsname.d
! 934038c38d370420052838e86f5c7ec4  libphobos/libdruntime/core/sys/windows/lmstats.d
! 1a58834f1c66b74ab43e433564fa5d86  libphobos/libdruntime/core/sys/windows/lmsvc.d
! ea9cae730ff98af4cc352b4216cd6ffb  libphobos/libdruntime/core/sys/windows/lmuse.d
  28d14d90a9460081e92f7084295ca390  libphobos/libdruntime/core/sys/windows/lmuseflg.d
! 6cc87673fbc0bc7702bd22c9f53d1f76  libphobos/libdruntime/core/sys/windows/lmwksta.d
! ae70dd19f53d8789d4efa6d4c63567a6  libphobos/libdruntime/core/sys/windows/lzexpand.d
! e839640fd9417c369ebf8031308ac9b3  libphobos/libdruntime/core/sys/windows/mapi.d
! f8f74bea019aa9313d0f0a9d6f043d3f  libphobos/libdruntime/core/sys/windows/mciavi.d
! 9d07ac6e888955af9b41db487314ec76  libphobos/libdruntime/core/sys/windows/mcx.d
! 52b8a53de365afd23da3a6e86a8ebaa0  libphobos/libdruntime/core/sys/windows/mgmtapi.d
! cdecd79fceccbbefd3f6eb0a34cf74b5  libphobos/libdruntime/core/sys/windows/mmsystem.d
! 4ddbb5c7477b4a3af6aba220e99ff231  libphobos/libdruntime/core/sys/windows/msacm.d
! 0290c0b44fb864b459aa080da944f6ea  libphobos/libdruntime/core/sys/windows/mshtml.d
! 5119749e4bc3feb4bb808bf8eab1ef62  libphobos/libdruntime/core/sys/windows/mswsock.d
! 91fb06e8da997e26229744e94b8c4438  libphobos/libdruntime/core/sys/windows/nb30.d
! 60d7e4feeff1bd019d8a914d5a69e306  libphobos/libdruntime/core/sys/windows/nddeapi.d
! c4ec61810201f4fdcac21d6f685e3bd1  libphobos/libdruntime/core/sys/windows/nspapi.d
! 88404f4dcb534b09ca16cb0950e8d2cb  libphobos/libdruntime/core/sys/windows/ntdef.d
! 2742aec87787a16951a91b56ec195e8a  libphobos/libdruntime/core/sys/windows/ntdll.d
! d5dc94a0d07dd4d60d5ce96a1016b39d  libphobos/libdruntime/core/sys/windows/ntldap.d
! d6ea95e2e1e2f4a8e40f360758ee889d  libphobos/libdruntime/core/sys/windows/ntsecapi.d
! 53a7804434e5f0be8cb283a4b7f1d13e  libphobos/libdruntime/core/sys/windows/ntsecpkg.d
! 596ad5584d0667b389ebb02680062cd1  libphobos/libdruntime/core/sys/windows/oaidl.d
! 53df5c929882b9d022385bc8eed87cf3  libphobos/libdruntime/core/sys/windows/objbase.d
! 85fef426752cf1bd19269abb4bc095a6  libphobos/libdruntime/core/sys/windows/objfwd.d
! ff4287c94f213ef29b6f11e0f41115a6  libphobos/libdruntime/core/sys/windows/objidl.d
! 4df24876762e382598db81a95864d356  libphobos/libdruntime/core/sys/windows/objsafe.d
! 38f11e3d7308d9bd3c8bb2c503ac3523  libphobos/libdruntime/core/sys/windows/ocidl.d
! 63dbba4f54fa3299e250d5e5bdd097b4  libphobos/libdruntime/core/sys/windows/odbcinst.d
! 1c17d2ff14b4f7a3c6420bae91802048  libphobos/libdruntime/core/sys/windows/ole.d
! 57e407a22ebf4f2cf344b732d60072f1  libphobos/libdruntime/core/sys/windows/ole2.d
  c6c71c11b0bcfa7339473dd044bd15d4  libphobos/libdruntime/core/sys/windows/ole2ver.d
! 1c5e196fc8f3b2870946e413ced204ae  libphobos/libdruntime/core/sys/windows/oleacc.d
! 03498bff107beeca21ff283e36f467ae  libphobos/libdruntime/core/sys/windows/oleauto.d
! 2b429258e84ce9feccafbeaf9e0b11ac  libphobos/libdruntime/core/sys/windows/olectl.d
! 59276a2292d4bed27167f6ab344a264b  libphobos/libdruntime/core/sys/windows/olectlid.d
! ac9f3593097b3bf9a935f6838d3f342f  libphobos/libdruntime/core/sys/windows/oledlg.d
! be8dad04c68063ef575a8ecd3f26894c  libphobos/libdruntime/core/sys/windows/oleidl.d
! 2a014b29ef18c3e78998344fd2d69a41  libphobos/libdruntime/core/sys/windows/pbt.d
! 4d0af2f91b59ff2a26038588f7fe4203  libphobos/libdruntime/core/sys/windows/powrprof.d
! b818544c7dc50a26a05811e949481dd9  libphobos/libdruntime/core/sys/windows/prsht.d
! 7375a991530273161359daebcb41c4b6  libphobos/libdruntime/core/sys/windows/psapi.d
! a54f8ad510a7ed54fd6db1163f1e9899  libphobos/libdruntime/core/sys/windows/rapi.d
! 119c4c3845f1426e6ba5eeb3177f91d2  libphobos/libdruntime/core/sys/windows/ras.d
! f6dfded2021020b76b5a194d3f575aef  libphobos/libdruntime/core/sys/windows/rasdlg.d
! 8f80c010c18a58efea9afa9f98407a6e  libphobos/libdruntime/core/sys/windows/raserror.d
! 3f57ea54573fcab73713e2625eff308e  libphobos/libdruntime/core/sys/windows/rassapi.d
! f58694a355f33f7e980f1260ca830666  libphobos/libdruntime/core/sys/windows/reason.d
! 139f9b0721d2440104f46a3e681f466d  libphobos/libdruntime/core/sys/windows/regstr.d
! f3c541e1fdaba6cd99f8e744e260d787  libphobos/libdruntime/core/sys/windows/richedit.d
! 88a9f37e7eded9b7ddde551478ff2bcd  libphobos/libdruntime/core/sys/windows/richole.d
! c325bd3c214d2544b734803f41e5f038  libphobos/libdruntime/core/sys/windows/rpc.d
! dd790c851330250d0531438ff99d4563  libphobos/libdruntime/core/sys/windows/rpcdce.d
! 363cac426bb905958e63156173a8c750  libphobos/libdruntime/core/sys/windows/rpcdce2.d
! 6e7d6b80dd1207a6d6c448f168b359fc  libphobos/libdruntime/core/sys/windows/rpcdcep.d
! 9e62f28f6e411331c393b261b3d06b8a  libphobos/libdruntime/core/sys/windows/rpcndr.d
! 38c05936e4ade1189db681ff59059fa0  libphobos/libdruntime/core/sys/windows/rpcnsi.d
! 6ceae9e834b5493db24b351e08fa5ef0  libphobos/libdruntime/core/sys/windows/rpcnsip.d
! 8178e58e031bab0d6ebf5da0e087ec58  libphobos/libdruntime/core/sys/windows/rpcnterr.d
! 616cb8a70a2a979a926c9824223bd52f  libphobos/libdruntime/core/sys/windows/schannel.d
! 62b7732e31dfffc397c9cadf3a679bb6  libphobos/libdruntime/core/sys/windows/secext.d
! db045c77c8e133d68d778837639ea542  libphobos/libdruntime/core/sys/windows/security.d
! 9a59547dfe6626aa6c287974aa634d7b  libphobos/libdruntime/core/sys/windows/servprov.d
! 160640d5c9404aec1d0bdfdae7f07cea  libphobos/libdruntime/core/sys/windows/setupapi.d
! 6d3a0537527a6a3fd23698e26023ff00  libphobos/libdruntime/core/sys/windows/shellapi.d
! 1b719764c2eaee9172bb27d5de9e8c58  libphobos/libdruntime/core/sys/windows/shldisp.d
! c0c4bbc0ea4d1242b1793af96d38ecca  libphobos/libdruntime/core/sys/windows/shlguid.d
! aade225d127fe47d54312688f1a4afad  libphobos/libdruntime/core/sys/windows/shlobj.d
! 0535b728008bad03a72b6bf2066c96df  libphobos/libdruntime/core/sys/windows/shlwapi.d
! 85813ceed2a5172572a2e3927f1f88be  libphobos/libdruntime/core/sys/windows/snmp.d
! e39e92e3b82ad60997c9c98d2946d511  libphobos/libdruntime/core/sys/windows/sql.d
! c74c0457f636c0f5b4e4e22dbc03830d  libphobos/libdruntime/core/sys/windows/sqlext.d
! b9faedd26f9af883648b3f57fa2d742d  libphobos/libdruntime/core/sys/windows/sqltypes.d
! 14e803ff4e70129e91d97767b38c5cd8  libphobos/libdruntime/core/sys/windows/sqlucode.d
! f2ed44017f646470414805512e41cafb  libphobos/libdruntime/core/sys/windows/sspi.d
! acda341092c90a5ffd88f800ace469c6  libphobos/libdruntime/core/sys/windows/stacktrace.d
! cb54326ceeaf39f60cc6645dfabeb8a3  libphobos/libdruntime/core/sys/windows/stat.d
! 0c75a98e70c8f12e00293e16721f1228  libphobos/libdruntime/core/sys/windows/subauth.d
! 239f97a5d7606f5dd7849dd0ff1003a5  libphobos/libdruntime/core/sys/windows/threadaux.d
! a4e77166f96f4dff9b7b8415bda729eb  libphobos/libdruntime/core/sys/windows/tlhelp32.d
! c43158304f5c7d3a31e3809d0abe1236  libphobos/libdruntime/core/sys/windows/tmschema.d
! 74a76ca1f51d1acbe351a5bd6c184c05  libphobos/libdruntime/core/sys/windows/unknwn.d
! cb98ff926684a18df476f1124b5354d9  libphobos/libdruntime/core/sys/windows/uuid.d
! 072482118ed2dfaf6adf7c29428ea6a5  libphobos/libdruntime/core/sys/windows/vfw.d
! 99a484b3fcbef2f7b4f78e97f9fa949e  libphobos/libdruntime/core/sys/windows/w32api.d
! 76b0a6f2321cf6d0a892c74b0061cded  libphobos/libdruntime/core/sys/windows/winbase.d
! 34ae843aec27a366e3869a2cd01fdb27  libphobos/libdruntime/core/sys/windows/winber.d
! 9b6519c42e3316e08073a6555a756b5e  libphobos/libdruntime/core/sys/windows/wincon.d
! e209e26c3019b1f9c5a850d779153196  libphobos/libdruntime/core/sys/windows/wincrypt.d
! 558d5004d6d75ea3bccd816c366c5d0a  libphobos/libdruntime/core/sys/windows/windef.d
! df779af80bc9014e334be89715d77d87  libphobos/libdruntime/core/sys/windows/windows.d
! b817c0ee9faf96134c338f52d76ac665  libphobos/libdruntime/core/sys/windows/winerror.d
! e84137bfb393338a6414011367d67bfb  libphobos/libdruntime/core/sys/windows/wingdi.d
! b83b22c6c057175ba37f39a4ce88767d  libphobos/libdruntime/core/sys/windows/winhttp.d
! 545525e344ac94afce2c1ec55395523e  libphobos/libdruntime/core/sys/windows/wininet.d
! 4a519fea5bb80ec81c7c6b8dc6658666  libphobos/libdruntime/core/sys/windows/winioctl.d
! ec2efa84683c9b2f8064890044005254  libphobos/libdruntime/core/sys/windows/winldap.d
! 36efc3115bef87a891ceab04b88a8801  libphobos/libdruntime/core/sys/windows/winnetwk.d
! bfbb2daef285df12e7732c77837856ef  libphobos/libdruntime/core/sys/windows/winnls.d
! 6db01e44416561d86e8d5aa0cf009ea6  libphobos/libdruntime/core/sys/windows/winnt.d
! 97a934f43ce871907bc97352fa7b8494  libphobos/libdruntime/core/sys/windows/winperf.d
! 1c72cc9ce2ec76270fb9b54cef102ca0  libphobos/libdruntime/core/sys/windows/winreg.d
! b1a77bd877a740a975bcbeabb48d9731  libphobos/libdruntime/core/sys/windows/winsock2.d
! f9d2cd980de6dfa0479620bf66ef687c  libphobos/libdruntime/core/sys/windows/winspool.d
! 63f6aa0b1125c3b03249d9f384b2217e  libphobos/libdruntime/core/sys/windows/winsvc.d
! d6b7c67683234af6a273a3d4932e52c0  libphobos/libdruntime/core/sys/windows/winuser.d
! 94e213795f0244ed44436cc14a492878  libphobos/libdruntime/core/sys/windows/winver.d
! 8cfe1bcb2d08a1c1050784203bc4acf8  libphobos/libdruntime/core/sys/windows/wtsapi32.d
! bb4907e2b3535906de488fabe923e5b2  libphobos/libdruntime/core/sys/windows/wtypes.d
! 8c8daf6dd0f83065b6cec3512cff018a  libphobos/libdruntime/core/thread.d
  2adf057be60160bf656c8cc794855f90  libphobos/libdruntime/core/time.d
! 9f7991cc24708bb5b0c59949d94645ea  libphobos/libdruntime/core/vararg.d
  6f76ee818b90e0f22edc13f0fb8a42d4  libphobos/libdruntime/gc/bits.d
  54d72201d48183b39118594ea1640215  libphobos/libdruntime/gc/config.d
  59bcd185be418dd333b4b8fecbb8dbd1  libphobos/libdruntime/gc/gcinterface.d
! 46414fbf151d2fac7b3d996b1284ad57  libphobos/libdruntime/gc/impl/conservative/gc.d
  b33daac4c8f5cd557ce1498686f0b4a9  libphobos/libdruntime/gc/impl/manual/gc.d
  f935018d2e1b9673ff79cd99976f9b44  libphobos/libdruntime/gc/os.d
  2aa01ae9368c8cb0b3a7199e0d0463f0  libphobos/libdruntime/gc/pooltable.d
  5e7be9fda7539a63e55b53ca6e89a41f  libphobos/libdruntime/gc/proxy.d
! 7f61b186f853bb1ded37be86deabbcfa  libphobos/libdruntime/gcc/attribute.d
! 74e508d1008a5fa9c6c575f953fee0cb  libphobos/libdruntime/gcc/backtrace.d
! 011e6158792f1fdbd22445ee1eb2dc7b  libphobos/libdruntime/gcc/builtins.d
! 3eee50515716d185f586376f65e510de  libphobos/libdruntime/gcc/config.d.in
! 8cbded4b2f28a0af2f7f5b83a7d4193d  libphobos/libdruntime/gcc/deh.d
! 495a4bf9370380919715a95c243b37ba  libphobos/libdruntime/gcc/drtstuff.c
! 2c555980f0ba08a8d574879c383dad3d  libphobos/libdruntime/gcc/emutls.d
! 302326e39db011e7add7f8e770b00e38  libphobos/libdruntime/gcc/gthread.d
! 6b47a513ad09d7bf7a0c7f64a85a2cb9  libphobos/libdruntime/gcc/libbacktrace.d.in
! d8f4c769f08dfb2ffd305b16f41df04e  libphobos/libdruntime/gcc/sections/android.d
! 350d1d96d62cee4f7ddd9e5be7514a00  libphobos/libdruntime/gcc/sections/elf_shared.d
! e18c906ce994ca0cd593e448b5c0e9fb  libphobos/libdruntime/gcc/sections/osx.d
! 4f0ea798da0212f70e0cd30aed1d7435  libphobos/libdruntime/gcc/sections/package.d
! 6141e853447d65dc6c735d9086c758e3  libphobos/libdruntime/gcc/sections/win32.d
! 82aa6e85f7ae7a53237688aa9c26c7de  libphobos/libdruntime/gcc/sections/win64.d
! d9083f2c5922f7740ee67c8257b7aa52  libphobos/libdruntime/gcc/unwind/arm.d
! ee20343ae615ce04477254bd066cde0c  libphobos/libdruntime/gcc/unwind/arm_common.d
! 4a7957d4f04cff22f99b1112224a98e3  libphobos/libdruntime/gcc/unwind/c6x.d
! 9bfa176fb75bcf35ca813963f55669a1  libphobos/libdruntime/gcc/unwind/generic.d
! 84015e475277a0271f38d97770ad1b7c  libphobos/libdruntime/gcc/unwind/package.d
! 9a890d79378de6083c73ead544da6478  libphobos/libdruntime/gcc/unwind/pe.d
! e19a0613e55b529507d181a96f7bba05  libphobos/libdruntime/object.d
  2339759e263b9ee6cb54007a2f65621f  libphobos/libdruntime/rt/aApply.d
  7bae7a71451d0c1c4887017cb1444224  libphobos/libdruntime/rt/aApplyR.d
! ca36618ce01a3bb3be6c0d6935285f1e  libphobos/libdruntime/rt/aaA.d
  bf2d0c5ee588f20591feb760d1be062b  libphobos/libdruntime/rt/adi.d
  f936df09728d8c3159d0072b320e4394  libphobos/libdruntime/rt/arrayassign.d
  10987733a1727eee2dd196de6ec57cff  libphobos/libdruntime/rt/arraycast.d
  483d28e61a9c8d210a65dcbe60f0966d  libphobos/libdruntime/rt/arraycat.d
  f151c72274ebba5d0c7e154de741bc13  libphobos/libdruntime/rt/cast_.d
  0ad55700a19e5572d0c3f30f18d1a87f  libphobos/libdruntime/rt/config.d
! 3636892422270957b4bd7c57f51d68de  libphobos/libdruntime/rt/critical_.d
  1b88256983be275224fce2f52916777e  libphobos/libdruntime/rt/deh.d
! d8958768225f530fe7720819f7029416  libphobos/libdruntime/rt/dmain2.d
  4fbc11ce97f57dee76d205b024119fd0  libphobos/libdruntime/rt/dylib_fixes.c
  e617634e193d1a564871af1b4ec12608  libphobos/libdruntime/rt/invariant.d
! 369d092da970395a16faa6a0e07bcf92  libphobos/libdruntime/rt/lifetime.d
  189f5d4e3c91aad753ebab4f8e9326e7  libphobos/libdruntime/rt/memory.d
  ffe683bd3698fcf91c1540cec5729b6e  libphobos/libdruntime/rt/minfo.d
! bfc9c54807c5fc04fe82ba724b7cebf7  libphobos/libdruntime/rt/monitor_.d
  4db7e4d3e4deb583457c38fc0b1a31fe  libphobos/libdruntime/rt/obj.d
  0503266dd47dfdb53c6fc6e8956a48cf  libphobos/libdruntime/rt/qsort.d
  1af010948b5366c59d84460f6f4948ba  libphobos/libdruntime/rt/sections.d
  6939b735af708f1e0f40865d462e3f8b  libphobos/libdruntime/rt/switch_.d
  f034f9b404d470e3ab8714d8280b9d9f  libphobos/libdruntime/rt/tlsgc.d
- 4a25eaf31aecfec051660d4acdca4924  libphobos/libdruntime/rt/typeinfo/ti_Acdouble.d
- 73f726e09b30dda9ec3686bb6649942c  libphobos/libdruntime/rt/typeinfo/ti_Acfloat.d
- 5fc36ca88c64e5936d9444a6b1b6ce41  libphobos/libdruntime/rt/typeinfo/ti_Acreal.d
- 78aa8626dcafa7459bc5815823e540c7  libphobos/libdruntime/rt/typeinfo/ti_Adouble.d
- f2045a2776169ec14d4ea4f9400eab14  libphobos/libdruntime/rt/typeinfo/ti_Afloat.d
- e52caa005739829073a4eb2f2febe75c  libphobos/libdruntime/rt/typeinfo/ti_Ag.d
- d78cb2429e1feb0a7390d73783606882  libphobos/libdruntime/rt/typeinfo/ti_Aint.d
- 1d84c5bd3f389f286e8033c2b0678096  libphobos/libdruntime/rt/typeinfo/ti_Along.d
- abf78979ade90e96b756eb76befa6272  libphobos/libdruntime/rt/typeinfo/ti_Areal.d
- 1c6c43be6a359a3a0cde98fab13727b3  libphobos/libdruntime/rt/typeinfo/ti_Ashort.d
- a872c2a4c54a90e31aa6e71d23bb3681  libphobos/libdruntime/rt/typeinfo/ti_C.d
- 21c111855bfc7e1e741d0d5a2cee55fa  libphobos/libdruntime/rt/typeinfo/ti_byte.d
- 4469b6b8adcd6f63e5cc08280a588c6f  libphobos/libdruntime/rt/typeinfo/ti_cdouble.d
- 5656f5c458dbfe451e76f655cdf92db0  libphobos/libdruntime/rt/typeinfo/ti_cent.d
- f0eb3444ce755410f4fe4f3e0475ac26  libphobos/libdruntime/rt/typeinfo/ti_cfloat.d
- 082228345205d88a738991fb981353d9  libphobos/libdruntime/rt/typeinfo/ti_char.d
- 8e6c32195c55f1aaf651d89e2611a033  libphobos/libdruntime/rt/typeinfo/ti_creal.d
- 2486b947e27db55c0299cc9b99a8e54a  libphobos/libdruntime/rt/typeinfo/ti_dchar.d
- 28a7bd539dde9669dc82dafb90061883  libphobos/libdruntime/rt/typeinfo/ti_delegate.d
- 17c5b25dfca511d8f830ed0a0639a75d  libphobos/libdruntime/rt/typeinfo/ti_double.d
- 6a13dbcb2236f590da94f36dde83eb2f  libphobos/libdruntime/rt/typeinfo/ti_float.d
- 2f8f2e0aaba2cd9fcfce26d183900882  libphobos/libdruntime/rt/typeinfo/ti_idouble.d
- 457ecd2a525c9fe0dc6bcbce8448e8cd  libphobos/libdruntime/rt/typeinfo/ti_ifloat.d
- 1fc11f67d621ff4289af892f988d2c1f  libphobos/libdruntime/rt/typeinfo/ti_int.d
- b7478b959d7f287b81d68b9cf9278782  libphobos/libdruntime/rt/typeinfo/ti_ireal.d
- 14c5804fd33e9b441bfc044255d3afd1  libphobos/libdruntime/rt/typeinfo/ti_long.d
- e0f5ac32f8a32fa9f0a9a80502d99274  libphobos/libdruntime/rt/typeinfo/ti_n.d
- 83d30b51e69c596aee00711092107cb7  libphobos/libdruntime/rt/typeinfo/ti_ptr.d
- 11fd51691659ae698d98bb421c8c975c  libphobos/libdruntime/rt/typeinfo/ti_real.d
- bfde6df33a49980cbfe905c7368c7917  libphobos/libdruntime/rt/typeinfo/ti_short.d
- 9754d27aa09206cd63f51b12eb653f8b  libphobos/libdruntime/rt/typeinfo/ti_ubyte.d
- 79a8f169c3d908a18a0ed517ad7eedac  libphobos/libdruntime/rt/typeinfo/ti_ucent.d
- d98f0bdb7c9f9cd05b42c4056487e540  libphobos/libdruntime/rt/typeinfo/ti_uint.d
- effa5fd944268813294841401cc6966e  libphobos/libdruntime/rt/typeinfo/ti_ulong.d
- d0ed50f647c822520321e8d2997b82fa  libphobos/libdruntime/rt/typeinfo/ti_ushort.d
- 63a29e6e27661d13e03c5d7160234f8e  libphobos/libdruntime/rt/typeinfo/ti_void.d
- d224d8e187a22c12ee0737f9c8757fb4  libphobos/libdruntime/rt/typeinfo/ti_wchar.d
  f69875190bb511b8b4c65781b727e2b3  libphobos/libdruntime/rt/util/array.d
  757864d7635457a26314632dee8a02f7  libphobos/libdruntime/rt/util/container/array.d
  109e2c9880c4070b4bd43b308b4acc4b  libphobos/libdruntime/rt/util/container/common.d
  cb673fe348c18d72ce4a2757adfc228b  libphobos/libdruntime/rt/util/container/hashtab.d
  877344d9958d333ea890d5138ef045aa  libphobos/libdruntime/rt/util/container/treap.d
  0024b82d84229e7bf6bac4ef0dcfe9c7  libphobos/libdruntime/rt/util/random.d
! 9cb9399f2002338b6c6d8751ca1b8c52  libphobos/libdruntime/rt/util/typeinfo.d
! d7120dda88b16c38c5cec307abae43d9  libphobos/libdruntime/rt/util/utf.d
  054c5512c17b9e4cee9d7b7b617d8b21  libphobos/m4/autoconf.m4
! 5573587388e2e015791dd2fef6fff368  libphobos/m4/druntime.m4
  fbffedeb7e8a911ebb298bdff921256a  libphobos/m4/druntime/cpu.m4
! e651d30fdb98292ad075c65a7670c275  libphobos/m4/druntime/libraries.m4
! 6fbffc8863299cccf83b3f382212d8ca  libphobos/m4/druntime/os.m4
  5569bee9140b0a0f5701b0260a254296  libphobos/m4/gcc_support.m4
  c49ab40607849fa623787878420e7207  libphobos/m4/gdc.m4
  458abf211dc60540bf28a9257d4bd4e5  libphobos/m4/libtool.m4
  e4224ccaecb14d942c71d31bef20d78c  libphobos/src/LICENSE_1_0.txt
! 3a29e0b3b00d1ec1e96886e2d5d4c3e2  libphobos/src/MERGE
! fadc6a2a0a9ac581b7a99043d7f42faa  libphobos/src/Makefile.am
! 6c770a13bf6f2115ca0220601d9dc720  libphobos/src/Makefile.in
  ff30fe7275b03f69e2a7796e47d142e8  libphobos/src/drtstuff.spec
  97eb1f8362eca17ed08cc593df09b125  libphobos/src/etc/c/curl.d
  a19ea89a62a29ab1731f633de9096dc5  libphobos/src/etc/c/sqlite3.d
--- 95675,95931 ----
  ee0171b87244b69c4c653ae92f3ecdc3  libphobos/libdruntime/core/sys/solaris/sys/procset.d
  62c2f92b9a740d50758085899522502d  libphobos/libdruntime/core/sys/solaris/sys/types.d
  f3220636fa9a34351a43f51401f4186d  libphobos/libdruntime/core/sys/solaris/time.d
! e60ba1b5fbad2b45a6ead5bad484e550  libphobos/libdruntime/core/sys/windows/accctrl.d
! c158ff42f4f0eb9add373d2ffa6a171f  libphobos/libdruntime/core/sys/windows/aclapi.d
! 74ff7397965f83ace4a336c95411c51e  libphobos/libdruntime/core/sys/windows/aclui.d
! 2de19c2dc772f4ab59b9ff46da50589f  libphobos/libdruntime/core/sys/windows/basetsd.d
! 0c7ea73111f044ebba90bd13ede0e173  libphobos/libdruntime/core/sys/windows/basetyps.d
  8ab3cf5d41de5eb9291b75ad64741d98  libphobos/libdruntime/core/sys/windows/cderr.d
! 106e46f3e0870524d208517f3c487e50  libphobos/libdruntime/core/sys/windows/cguid.d
! 76bef2951a092c3c8357d154f511f7d6  libphobos/libdruntime/core/sys/windows/com.d
! b8a1593ba1d52da2ce8f1da485a6a90d  libphobos/libdruntime/core/sys/windows/comcat.d
! e8fb8ec4d3f85f31fcd7cd3dace6c237  libphobos/libdruntime/core/sys/windows/commctrl.d
! 1fe6fea72f7159d2591eb65f10ef09d6  libphobos/libdruntime/core/sys/windows/commdlg.d
  9bcf0e605c73bd7256a44647d29ca972  libphobos/libdruntime/core/sys/windows/core.d
! 9e8be05cb7df74dff8d1e2a7c6077077  libphobos/libdruntime/core/sys/windows/cpl.d
! 8c99efa6d0dc4df6d1675006b1ea8c50  libphobos/libdruntime/core/sys/windows/cplext.d
! e55801c9457fa9c384dd940783ec1d8b  libphobos/libdruntime/core/sys/windows/custcntl.d
! 28ae9c29d5ed81f89c6de26951280a10  libphobos/libdruntime/core/sys/windows/dbghelp.d
! 8cba1e0d4f91578ef2364a4888827226  libphobos/libdruntime/core/sys/windows/dbghelp_types.d
! 416c6790167d04b195ad2659edb9a48c  libphobos/libdruntime/core/sys/windows/dbt.d
! 4d3f13ec29be06ff5c1b03a1fb736d83  libphobos/libdruntime/core/sys/windows/dde.d
! cf43067723fa8e10d50b9573d9248af6  libphobos/libdruntime/core/sys/windows/ddeml.d
! b90666e0ce33d32ef93a3b74557474c8  libphobos/libdruntime/core/sys/windows/dhcpcsdk.d
! fe3cc14affda80417ee5ebb011ed77ae  libphobos/libdruntime/core/sys/windows/dlgs.d
! 48461edcf3b5f0046910c40e27e5f3ca  libphobos/libdruntime/core/sys/windows/dll.d
! 599667129a9fccaad408b7e80eb3de78  libphobos/libdruntime/core/sys/windows/docobj.d
! c6d513ec9c9ef2a48d657f1d4ca6e593  libphobos/libdruntime/core/sys/windows/errorrep.d
! 94e87d15366e92bdea6ef2bbdacbb993  libphobos/libdruntime/core/sys/windows/exdisp.d
  9f3821ee16c7c0f6841bcd16db654226  libphobos/libdruntime/core/sys/windows/exdispid.d
! 5dcd2bc8b138be0ad88102d542602d51  libphobos/libdruntime/core/sys/windows/httpext.d
  62fd7b950934b7aa3e5229e7b77bdcee  libphobos/libdruntime/core/sys/windows/idispids.d
! dbceb35681601fdb9455df0c10181988  libphobos/libdruntime/core/sys/windows/imagehlp.d
! cbd671394c28499999293ee71041f7da  libphobos/libdruntime/core/sys/windows/imm.d
! 9c375de14db8f808f13eaeb8f1ac1d08  libphobos/libdruntime/core/sys/windows/intshcut.d
! 47577573b9b6313b6c0c0abaf081988b  libphobos/libdruntime/core/sys/windows/ipexport.d
! 4f6274a5a48fa1187b047d72e4e70416  libphobos/libdruntime/core/sys/windows/iphlpapi.d
  38c49ea9d35df883cba0e21646be27e9  libphobos/libdruntime/core/sys/windows/ipifcons.d
! a3262ebec262d4237681c3a13524348c  libphobos/libdruntime/core/sys/windows/iprtrmib.d
! eada8afcd4475b2e9aab5741f3aad725  libphobos/libdruntime/core/sys/windows/iptypes.d
! a37c1498fa989d3fb5d2b86964d01a50  libphobos/libdruntime/core/sys/windows/isguids.d
! 906312f4cf83638377b5351963995fa9  libphobos/libdruntime/core/sys/windows/lm.d
! 493639602b21da35477a40ec61c1552e  libphobos/libdruntime/core/sys/windows/lmaccess.d
! 66d0894420dc642ce72153af82679236  libphobos/libdruntime/core/sys/windows/lmalert.d
! b2bcd7942acd283bcdda94580c8b7cdb  libphobos/libdruntime/core/sys/windows/lmapibuf.d
! 0b59c401015b5531c9a80f564c365c9d  libphobos/libdruntime/core/sys/windows/lmat.d
! 00963138deec1f655aeb6243aed0f50a  libphobos/libdruntime/core/sys/windows/lmaudit.d
! 115b2b88f629468f026c1c5f87bfbe8c  libphobos/libdruntime/core/sys/windows/lmbrowsr.d
! 95a503c6be23f4cf380508f529c185cf  libphobos/libdruntime/core/sys/windows/lmchdev.d
! 54dcd6c18d843586a880a400e4ff5746  libphobos/libdruntime/core/sys/windows/lmconfig.d
! bf4d1baebe6a104d462b19843d7b5fa4  libphobos/libdruntime/core/sys/windows/lmcons.d
! 8f725c403cacc5b8d1d0d80583112588  libphobos/libdruntime/core/sys/windows/lmerr.d
! 83ec843f18885dfdc0c4ed5653d0c812  libphobos/libdruntime/core/sys/windows/lmerrlog.d
! 369978c6ae021429bf834cb329315d87  libphobos/libdruntime/core/sys/windows/lmmsg.d
! 6acd8eb9cf2e6195acedb677fbd8b974  libphobos/libdruntime/core/sys/windows/lmremutl.d
! a25fd9e141794b70cb04f64cdba47aab  libphobos/libdruntime/core/sys/windows/lmrepl.d
! 7edaa9a90a50484b62774984be03c722  libphobos/libdruntime/core/sys/windows/lmserver.d
! 07247c1a9c0a15a7af9d41d72123c382  libphobos/libdruntime/core/sys/windows/lmshare.d
! 7d593a4a0782846e8cb8f86bb892082c  libphobos/libdruntime/core/sys/windows/lmsname.d
! 15b5358cdf17034d2d3569577cae4f16  libphobos/libdruntime/core/sys/windows/lmstats.d
! b49ae5de02315bd5e425f675317d558a  libphobos/libdruntime/core/sys/windows/lmsvc.d
! 763b5699d40e0133b1d9790486575096  libphobos/libdruntime/core/sys/windows/lmuse.d
  28d14d90a9460081e92f7084295ca390  libphobos/libdruntime/core/sys/windows/lmuseflg.d
! fba032824ff31f7fd1b779b20deca3c5  libphobos/libdruntime/core/sys/windows/lmwksta.d
! 4b6f4ad39f879985146c226e1edf91b3  libphobos/libdruntime/core/sys/windows/lzexpand.d
! 878b8303fd216c0112e4a665c57d58c0  libphobos/libdruntime/core/sys/windows/mapi.d
! ca6cf9f783bfa9e145e762147871e6ea  libphobos/libdruntime/core/sys/windows/mciavi.d
! 835f23a4c9c102cb74d0e84d4c329ff5  libphobos/libdruntime/core/sys/windows/mcx.d
! 5f4f87999a72b1fc41c568539f344415  libphobos/libdruntime/core/sys/windows/mgmtapi.d
! 26b6de7d78e946770d8afb8629f64777  libphobos/libdruntime/core/sys/windows/mmsystem.d
! 4036a7e0f6d72a2d0f1155472286d2c3  libphobos/libdruntime/core/sys/windows/msacm.d
! 79a3f4ea1653eeb862b7784b978bb207  libphobos/libdruntime/core/sys/windows/mshtml.d
! 373af9dcda49c0381586f6ec65a33ae6  libphobos/libdruntime/core/sys/windows/mswsock.d
! df173ade8257d396c02febe385d518b6  libphobos/libdruntime/core/sys/windows/nb30.d
! d25ba8587e58f0e96dba770247dca79b  libphobos/libdruntime/core/sys/windows/nddeapi.d
! b0affcb7330f10bf314c4a9997ab2bd1  libphobos/libdruntime/core/sys/windows/nspapi.d
! 2342a185e4238a54e763de0833b33f98  libphobos/libdruntime/core/sys/windows/ntdef.d
! eb0fd31ee4ad16a9fd69b22d66b0dac8  libphobos/libdruntime/core/sys/windows/ntdll.d
! 27fcc788fddef64bf1904685e546d568  libphobos/libdruntime/core/sys/windows/ntldap.d
! 2813a5d99ac7580e2064b6ee78a59568  libphobos/libdruntime/core/sys/windows/ntsecapi.d
! 3fa692a7e1c9591b9f4317839db0c1b7  libphobos/libdruntime/core/sys/windows/ntsecpkg.d
! 01f1dac5eae2337d0f5c3c84e076444e  libphobos/libdruntime/core/sys/windows/oaidl.d
! 42f6b17bea44954f8559025f0eec633d  libphobos/libdruntime/core/sys/windows/objbase.d
! 400a2701dd09b0ae3785f32a2a20bdd2  libphobos/libdruntime/core/sys/windows/objfwd.d
! 22fd5a0838e74215870ce7d1ff4979d2  libphobos/libdruntime/core/sys/windows/objidl.d
! 774048c8307cdbfe5a8bd486808d388d  libphobos/libdruntime/core/sys/windows/objsafe.d
! 5e75bb42fad5055fd1fb680f244ffd8e  libphobos/libdruntime/core/sys/windows/ocidl.d
! ebb1693b0ffb56e58f57331a7f65d1f1  libphobos/libdruntime/core/sys/windows/odbcinst.d
! 471881b1b36e9ae0b971d9c26af4776a  libphobos/libdruntime/core/sys/windows/ole.d
! 680eff4f2cce805e5ab8bc317ce3f002  libphobos/libdruntime/core/sys/windows/ole2.d
  c6c71c11b0bcfa7339473dd044bd15d4  libphobos/libdruntime/core/sys/windows/ole2ver.d
! 1a9f69fe60881a975f86934fce8d6e8b  libphobos/libdruntime/core/sys/windows/oleacc.d
! 643ae0d0439ecfabb44e3de47a3d5806  libphobos/libdruntime/core/sys/windows/oleauto.d
! f6a1546a4a38c09f27f7aef318e9915c  libphobos/libdruntime/core/sys/windows/olectl.d
! e72ecc6bf147449b0e681c6ad64a122d  libphobos/libdruntime/core/sys/windows/olectlid.d
! 61e8419892db64c602107d64b9485f49  libphobos/libdruntime/core/sys/windows/oledlg.d
! b89a6cac2b53c4f4938f7efca8b788f1  libphobos/libdruntime/core/sys/windows/oleidl.d
! b43671b2d6e1e874612f9f8be6a9462e  libphobos/libdruntime/core/sys/windows/pbt.d
! 8d52b0ea286320b82dfca47c98fb5795  libphobos/libdruntime/core/sys/windows/powrprof.d
! 16d29cb9889e9d4b5577e7909a7fae9a  libphobos/libdruntime/core/sys/windows/prsht.d
! 62daf71b1ccaee28f31fc5a4145d657e  libphobos/libdruntime/core/sys/windows/psapi.d
! 62aeb568f4301e8f01a0d4da4ec5cbf5  libphobos/libdruntime/core/sys/windows/rapi.d
! b5daf87e5e46bbb9b95935ee5420cedb  libphobos/libdruntime/core/sys/windows/ras.d
! 4a8b10315dba17f62c4bdf47120d720a  libphobos/libdruntime/core/sys/windows/rasdlg.d
! c35c3610ef8f118d77b0d774190e5954  libphobos/libdruntime/core/sys/windows/raserror.d
! c0bbfba568022b4422e1b94f4507794c  libphobos/libdruntime/core/sys/windows/rassapi.d
! 9c09e394032f099c47036d3f572f4ef0  libphobos/libdruntime/core/sys/windows/reason.d
! fea4e3459e1f8e5fb0acdb73d5b0433d  libphobos/libdruntime/core/sys/windows/regstr.d
! 11b3aab10ae9d21b5041585fdaabda0c  libphobos/libdruntime/core/sys/windows/richedit.d
! ce52bc0a798920138465d416bad50023  libphobos/libdruntime/core/sys/windows/richole.d
! 7ee34cc5279dfc6ffad216dacd11b7eb  libphobos/libdruntime/core/sys/windows/rpc.d
! 1e6e6a97f105d2404b06010277a32b8a  libphobos/libdruntime/core/sys/windows/rpcdce.d
! e5f8ed5d31722e4e2d2b571154b97936  libphobos/libdruntime/core/sys/windows/rpcdce2.d
! 9e6b2a24309e5e1c556156653b47df1d  libphobos/libdruntime/core/sys/windows/rpcdcep.d
! 05245fa8a1d1451b7d50c7eb3e152813  libphobos/libdruntime/core/sys/windows/rpcndr.d
! 13058673cfd91dd78b1b2b85e69f74e5  libphobos/libdruntime/core/sys/windows/rpcnsi.d
! 6ac497c9ccf65a0f7f5ac90e78433812  libphobos/libdruntime/core/sys/windows/rpcnsip.d
! cd3181cb55dee6037162a110c0598189  libphobos/libdruntime/core/sys/windows/rpcnterr.d
! 3d876681523e99c06b7d53372e061814  libphobos/libdruntime/core/sys/windows/schannel.d
! 43a6fe0904eadb137f289ac65dc2da29  libphobos/libdruntime/core/sys/windows/sdkddkver.d
! 1442256d523a52c55b6b40442519685e  libphobos/libdruntime/core/sys/windows/secext.d
! 4915cba40db9f33552dd7706eebc17e1  libphobos/libdruntime/core/sys/windows/security.d
! 0eb410b3790b48e03609bb95c11fb189  libphobos/libdruntime/core/sys/windows/servprov.d
! bd46957e8c9a4322cfc9ae1b41cbde70  libphobos/libdruntime/core/sys/windows/setupapi.d
! 0cf5294512c7d0feb19ceb1463ae494e  libphobos/libdruntime/core/sys/windows/shellapi.d
! fa27de1603bc83ad2936e0cd1f2ff7e9  libphobos/libdruntime/core/sys/windows/shldisp.d
! 120cdb222080e5ed979298d98f62a8d2  libphobos/libdruntime/core/sys/windows/shlguid.d
! 59666bfbe6ebda2672079aec76cf7415  libphobos/libdruntime/core/sys/windows/shlobj.d
! 8d1ca51e3757d8fd1dc3543cd4bad4f6  libphobos/libdruntime/core/sys/windows/shlwapi.d
! c06d30b4138e251eb80270d7adf3b7dd  libphobos/libdruntime/core/sys/windows/snmp.d
! aa8243b901e194899e739be4ed581765  libphobos/libdruntime/core/sys/windows/sql.d
! fcf4c97e6513ec6db1f4658c4b768ab7  libphobos/libdruntime/core/sys/windows/sqlext.d
! e009969d2f6d6d230008e5a1f7328c96  libphobos/libdruntime/core/sys/windows/sqltypes.d
! 0d21c1a4dcc25b49189166ec66f6405b  libphobos/libdruntime/core/sys/windows/sqlucode.d
! 0fa45f1564447bf49c3badb1f0cba2b7  libphobos/libdruntime/core/sys/windows/sspi.d
! fe2b1b324ddc31d4721bf8f161a1ce05  libphobos/libdruntime/core/sys/windows/stacktrace.d
! da80ac2bd36e867daaa4c860e8b5b507  libphobos/libdruntime/core/sys/windows/stat.d
! 7ea919cf11baf0b21a655c60a96c1bf1  libphobos/libdruntime/core/sys/windows/stdc/malloc.d
! 33fcc28066c3bb9129080337483b0f97  libphobos/libdruntime/core/sys/windows/stdc/time.d
! 7b404900e92c9e6fd30778373c1557eb  libphobos/libdruntime/core/sys/windows/subauth.d
! e7e393070a6f9ebc51696a32de60f6b9  libphobos/libdruntime/core/sys/windows/threadaux.d
! 48620a58eb7160ce7051e046466f4fd5  libphobos/libdruntime/core/sys/windows/tlhelp32.d
! a028aedb3483e9a767110f0306ea51a9  libphobos/libdruntime/core/sys/windows/tmschema.d
! 347e8ef196427622cb729d6e45f566b9  libphobos/libdruntime/core/sys/windows/unknwn.d
! ce81808a97b10b192404ef60d9c75dbe  libphobos/libdruntime/core/sys/windows/uuid.d
! 03faf8d65d7a8a81e6a9f00bd421e9ee  libphobos/libdruntime/core/sys/windows/vfw.d
! 9f93ac18d6448a519ea50cb57f714922  libphobos/libdruntime/core/sys/windows/w32api.d
! c9411fa956bcbe61bfa7a1bce1d40fbb  libphobos/libdruntime/core/sys/windows/winbase.d
! ef3efdcdc68c749ece0349be6a119d3a  libphobos/libdruntime/core/sys/windows/winber.d
! b43233820d08e93bcd4a8655c4c4aa2e  libphobos/libdruntime/core/sys/windows/wincon.d
! 5d7777681139515ab078d8a4e60c300a  libphobos/libdruntime/core/sys/windows/wincrypt.d
! f6ffc7c1a7ed3906bd2cc19692f68d9c  libphobos/libdruntime/core/sys/windows/windef.d
! b38eaec7db540b9b15906ca44b7f1a6c  libphobos/libdruntime/core/sys/windows/windows.d
! be4861a5332104cdcb9001be3453e5a7  libphobos/libdruntime/core/sys/windows/winerror.d
! 95c7867dfe940f9a82956ce88cefc916  libphobos/libdruntime/core/sys/windows/wingdi.d
! 21329a6c9bef96038b45c20171e0abdd  libphobos/libdruntime/core/sys/windows/winhttp.d
! 6184889de5f294499addce7f7372ca62  libphobos/libdruntime/core/sys/windows/wininet.d
! bc2e3aaebf590cd6e58c68d9837d9cbb  libphobos/libdruntime/core/sys/windows/winioctl.d
! 25a0bded049a78fc140fdc40e5c888b3  libphobos/libdruntime/core/sys/windows/winldap.d
! 2cd0d40500f11c538843688d31a97520  libphobos/libdruntime/core/sys/windows/winnetwk.d
! 739f94fe333acfa41fa4ec26382b0221  libphobos/libdruntime/core/sys/windows/winnls.d
! b66fb78b8524d3a11b5c9fa70deae7bc  libphobos/libdruntime/core/sys/windows/winnt.d
! 647409c56727f538c8a553ec2bbe7c7d  libphobos/libdruntime/core/sys/windows/winperf.d
! 01d4f9684ab288599c1851abd254ff18  libphobos/libdruntime/core/sys/windows/winreg.d
! 58898fbc427949691097ea2bc559e461  libphobos/libdruntime/core/sys/windows/winsock2.d
! d6e08a59f40a5095d1e68af93fb84fb4  libphobos/libdruntime/core/sys/windows/winspool.d
! 6ef834a3781977793bdc4af1b38f3c85  libphobos/libdruntime/core/sys/windows/winsvc.d
! 298f3157a21f756bdc6c6511e11001f7  libphobos/libdruntime/core/sys/windows/winuser.d
! a6887674d81fb7f6e0b970616305f770  libphobos/libdruntime/core/sys/windows/winver.d
! 3fc2f9ae527422e5d960625685f28d13  libphobos/libdruntime/core/sys/windows/wtsapi32.d
! 431b79a9c95d40f30daad89d9ed98726  libphobos/libdruntime/core/sys/windows/wtypes.d
! b889a41034dc19351fd74b8d7199c6f1  libphobos/libdruntime/core/thread/context.d
! 312b976c2fca3b1d8b9639eea51fe481  libphobos/libdruntime/core/thread/fiber.d
! 0dd1fe337ca623145e20ebb3c5b0aa00  libphobos/libdruntime/core/thread/osthread.d
! 9b6ee3a7c47a4d264ce79b0c16495747  libphobos/libdruntime/core/thread/package.d
! ca894a1fd05d407c5cbf06f783910779  libphobos/libdruntime/core/thread/threadbase.d
! c1ed5b58527141cfd45c44e71ae05ec8  libphobos/libdruntime/core/thread/threadgroup.d
! 12e24b84e408496a6d50f1b25ac7faed  libphobos/libdruntime/core/thread/types.d
  2adf057be60160bf656c8cc794855f90  libphobos/libdruntime/core/time.d
! ba840dec340cd1fed28cbc0a57224321  libphobos/libdruntime/core/vararg.d
! 4cf99596b90593fec63debe10874dfdb  libphobos/libdruntime/core/volatile.d
  6f76ee818b90e0f22edc13f0fb8a42d4  libphobos/libdruntime/gc/bits.d
  54d72201d48183b39118594ea1640215  libphobos/libdruntime/gc/config.d
  59bcd185be418dd333b4b8fecbb8dbd1  libphobos/libdruntime/gc/gcinterface.d
! 8d1b6f7e0ee968b3576749cff4b046c6  libphobos/libdruntime/gc/impl/conservative/gc.d
  b33daac4c8f5cd557ce1498686f0b4a9  libphobos/libdruntime/gc/impl/manual/gc.d
  f935018d2e1b9673ff79cd99976f9b44  libphobos/libdruntime/gc/os.d
  2aa01ae9368c8cb0b3a7199e0d0463f0  libphobos/libdruntime/gc/pooltable.d
  5e7be9fda7539a63e55b53ca6e89a41f  libphobos/libdruntime/gc/proxy.d
! f254748ad10d3df614cb9e26c72f088d  libphobos/libdruntime/gcc/attribute.d
! 9ce27a7c239a646ec1cef7caffc32b46  libphobos/libdruntime/gcc/attributes.d
! 1919e6f2b1cf995ea1d672a1e2d29775  libphobos/libdruntime/gcc/backtrace.d
! a29875e6acf5d065eab3c5037a3b3e8c  libphobos/libdruntime/gcc/builtins.d
! ba6c574496316ee8452cb145f4f816fb  libphobos/libdruntime/gcc/config.d.in
! d1bc6dd2550ef17d320b1583376b8b36  libphobos/libdruntime/gcc/deh.d
! bffb543e12c3ce864f73bb97ca4107ae  libphobos/libdruntime/gcc/drtstuff.c
! cd0f98cd27c9a5b12a111827e95e712f  libphobos/libdruntime/gcc/emutls.d
! 9a777f758428471cbf8230c1c999b6df  libphobos/libdruntime/gcc/gthread.d
! 952bb8e2b4c008fd81f8acb0f0c972b9  libphobos/libdruntime/gcc/libbacktrace.d.in
! 8cf9845da9c1aedb6ce9878ed08c9df8  libphobos/libdruntime/gcc/sections/common.d
! dc4de3ad4cf18c1a624aa3aac3edbb8d  libphobos/libdruntime/gcc/sections/elf.d
! a90a63ebd63cdf43a58084f6dfa08080  libphobos/libdruntime/gcc/sections/macho.d
! 04352ae20ae0f414115cecad44305ed2  libphobos/libdruntime/gcc/sections/package.d
! d5e63a537336c57c3de8697fc334d37b  libphobos/libdruntime/gcc/sections/pecoff.d
! e3859370c796afb93733e146dc19ea70  libphobos/libdruntime/gcc/unwind/arm.d
! e9f9b70dcc86d63920bac973ef5f9fc0  libphobos/libdruntime/gcc/unwind/arm_common.d
! 50e5fecb9286822a640e4145c21d7807  libphobos/libdruntime/gcc/unwind/c6x.d
! c9ece913a80fb2002e7e45b3c7d12cd8  libphobos/libdruntime/gcc/unwind/generic.d
! ae8fde642e27c32d71fbe494e7033cf6  libphobos/libdruntime/gcc/unwind/package.d
! 883e374c29aa5c26149e82cca526b7e4  libphobos/libdruntime/gcc/unwind/pe.d
! a3c7fae6372b9dfd9fcc3bf208e19d61  libphobos/libdruntime/object.d
  2339759e263b9ee6cb54007a2f65621f  libphobos/libdruntime/rt/aApply.d
  7bae7a71451d0c1c4887017cb1444224  libphobos/libdruntime/rt/aApplyR.d
! 4c2319a5c816f32f16e456ebfb275025  libphobos/libdruntime/rt/aaA.d
  bf2d0c5ee588f20591feb760d1be062b  libphobos/libdruntime/rt/adi.d
  f936df09728d8c3159d0072b320e4394  libphobos/libdruntime/rt/arrayassign.d
  10987733a1727eee2dd196de6ec57cff  libphobos/libdruntime/rt/arraycast.d
  483d28e61a9c8d210a65dcbe60f0966d  libphobos/libdruntime/rt/arraycat.d
  f151c72274ebba5d0c7e154de741bc13  libphobos/libdruntime/rt/cast_.d
  0ad55700a19e5572d0c3f30f18d1a87f  libphobos/libdruntime/rt/config.d
! 146496a6e27ce8ade6fa851733e22127  libphobos/libdruntime/rt/critical_.d
  1b88256983be275224fce2f52916777e  libphobos/libdruntime/rt/deh.d
! 9e735b8192cebcd1b070e06c3a3d5306  libphobos/libdruntime/rt/dmain2.d
  4fbc11ce97f57dee76d205b024119fd0  libphobos/libdruntime/rt/dylib_fixes.c
  e617634e193d1a564871af1b4ec12608  libphobos/libdruntime/rt/invariant.d
! 4986aec9888f2f85b3c667d87cf5a1d5  libphobos/libdruntime/rt/lifetime.d
  189f5d4e3c91aad753ebab4f8e9326e7  libphobos/libdruntime/rt/memory.d
  ffe683bd3698fcf91c1540cec5729b6e  libphobos/libdruntime/rt/minfo.d
! a205d23d1d543ad22c2d36a7997f7fed  libphobos/libdruntime/rt/monitor_.d
  4db7e4d3e4deb583457c38fc0b1a31fe  libphobos/libdruntime/rt/obj.d
  0503266dd47dfdb53c6fc6e8956a48cf  libphobos/libdruntime/rt/qsort.d
  1af010948b5366c59d84460f6f4948ba  libphobos/libdruntime/rt/sections.d
  6939b735af708f1e0f40865d462e3f8b  libphobos/libdruntime/rt/switch_.d
  f034f9b404d470e3ab8714d8280b9d9f  libphobos/libdruntime/rt/tlsgc.d
  f69875190bb511b8b4c65781b727e2b3  libphobos/libdruntime/rt/util/array.d
  757864d7635457a26314632dee8a02f7  libphobos/libdruntime/rt/util/container/array.d
  109e2c9880c4070b4bd43b308b4acc4b  libphobos/libdruntime/rt/util/container/common.d
  cb673fe348c18d72ce4a2757adfc228b  libphobos/libdruntime/rt/util/container/hashtab.d
  877344d9958d333ea890d5138ef045aa  libphobos/libdruntime/rt/util/container/treap.d
  0024b82d84229e7bf6bac4ef0dcfe9c7  libphobos/libdruntime/rt/util/random.d
! 5acc985ba4c4fe58afd6366c7ed8dfc8  libphobos/libdruntime/rt/util/typeinfo.d
! b99dcde4a59a7d6102c8ee790ca070ac  libphobos/libdruntime/rt/util/utf.d
  054c5512c17b9e4cee9d7b7b617d8b21  libphobos/m4/autoconf.m4
! cbef578492ab132e253c07ad83e6ee8a  libphobos/m4/druntime.m4
  fbffedeb7e8a911ebb298bdff921256a  libphobos/m4/druntime/cpu.m4
! 82b8f67e7ad56ad32591fd6b000fca98  libphobos/m4/druntime/libraries.m4
! 4ee961ccd0e2772af6fb86d6b3c412d6  libphobos/m4/druntime/os.m4
  5569bee9140b0a0f5701b0260a254296  libphobos/m4/gcc_support.m4
  c49ab40607849fa623787878420e7207  libphobos/m4/gdc.m4
  458abf211dc60540bf28a9257d4bd4e5  libphobos/m4/libtool.m4
  e4224ccaecb14d942c71d31bef20d78c  libphobos/src/LICENSE_1_0.txt
! 2b7cdc36f40f01119007f3ee872eafac  libphobos/src/MERGE
! 6114be53c421dfdca3e2a1f5229422dc  libphobos/src/Makefile.am
! 8c15d1b15bd23b969c26b385859a4c81  libphobos/src/Makefile.in
  ff30fe7275b03f69e2a7796e47d142e8  libphobos/src/drtstuff.spec
  97eb1f8362eca17ed08cc593df09b125  libphobos/src/etc/c/curl.d
  a19ea89a62a29ab1731f633de9096dc5  libphobos/src/etc/c/sqlite3.d
*************** bea08d206672098f5b66b07740dbb497  libpho
*** 89741,89750 ****
  3a1ad66c3c47609c90c1f4d9cf8ddca2  libphobos/src/libgphobos.spec.in
  69b5f280c2ba8060530461cb88c3a235  libphobos/src/std/algorithm/comparison.d
  1f42972eaccf7f667e216e0e3f4b4585  libphobos/src/std/algorithm/internal.d
! 21e0c255ddc278f098d4d9b2e91aa7d4  libphobos/src/std/algorithm/iteration.d
  c9df126fd96c686e5df36b73634f325c  libphobos/src/std/algorithm/mutation.d
  d0af10a29dfafad75ab5c5e0c5e0884d  libphobos/src/std/algorithm/package.d
! 8419de4f2069c60bf4392b38195adcd6  libphobos/src/std/algorithm/searching.d
  98ef6e3bab6054ad1d63925fde0f5e13  libphobos/src/std/algorithm/setops.d
  24af0fa9b2d7e8792742d122ccdda15b  libphobos/src/std/algorithm/sorting.d
  89778338c1b9f4097e75cf8a0129f8cf  libphobos/src/std/array.d
--- 95934,95943 ----
  3a1ad66c3c47609c90c1f4d9cf8ddca2  libphobos/src/libgphobos.spec.in
  69b5f280c2ba8060530461cb88c3a235  libphobos/src/std/algorithm/comparison.d
  1f42972eaccf7f667e216e0e3f4b4585  libphobos/src/std/algorithm/internal.d
! 2f7e8806821cb1d624019faf20790446  libphobos/src/std/algorithm/iteration.d
  c9df126fd96c686e5df36b73634f325c  libphobos/src/std/algorithm/mutation.d
  d0af10a29dfafad75ab5c5e0c5e0884d  libphobos/src/std/algorithm/package.d
! f918ff65686c3aef055494c94d2cbe22  libphobos/src/std/algorithm/searching.d
  98ef6e3bab6054ad1d63925fde0f5e13  libphobos/src/std/algorithm/setops.d
  24af0fa9b2d7e8792742d122ccdda15b  libphobos/src/std/algorithm/sorting.d
  89778338c1b9f4097e75cf8a0129f8cf  libphobos/src/std/array.d
*************** dd05c9b26bc4c8fea27c29375fb19bce  libpho
*** 89753,89775 ****
  2e1b74bd6f1caaa09fc7b0815300f93e  libphobos/src/std/bigint.d
  c7d8dbb241e01e5455a912f11ff68b83  libphobos/src/std/bitmanip.d
  650a2cffce3d7f24c75c74f88094e60b  libphobos/src/std/compiler.d
! db5d56a3290c7bc0c67de950992fb955  libphobos/src/std/complex.d
  e7c7c3c72593bf413bdd6cf318a0ec5e  libphobos/src/std/concurrency.d
  efefaf636ac9c2700e0236e905fd6a66  libphobos/src/std/container/array.d
  36afdfdd90a59191e14f28d4707f3dc4  libphobos/src/std/container/binaryheap.d
  37d8ece674f85aa09238e37202cb9051  libphobos/src/std/container/dlist.d
  ddad07ebe46fb30a7bc04dacf7bcb95d  libphobos/src/std/container/package.d
! a52cf8d6959bbd8edded910edcfa9e86  libphobos/src/std/container/rbtree.d
  012132aa38bffc0bda89172cf79b83ac  libphobos/src/std/container/slist.d
  e782ada904d666a60876d579a3e968b4  libphobos/src/std/container/util.d
! 61421a1ef9952ada59e2bf4f27a31db0  libphobos/src/std/conv.d
  854792846bec69d0162f4541a2d790f9  libphobos/src/std/csv.d
  2d4609b176df3fa82a934ba209ae8a0b  libphobos/src/std/datetime/date.d
  facdd33ec15bb454b70f1fb6f2085b78  libphobos/src/std/datetime/interval.d
  78730a0ec629f956f20bb731e03e6ab2  libphobos/src/std/datetime/package.d
  a9b9e495e47d86cdc0718c4b8cc1600c  libphobos/src/std/datetime/stopwatch.d
! b384fca271e251f984ac251e573b18f4  libphobos/src/std/datetime/systime.d
! d733ad6405e8a23c23d4a1febaa58461  libphobos/src/std/datetime/timezone.d
  d8b6962911e8b75d349da26658d8b57a  libphobos/src/std/demangle.d
  77339e6de1fc6d9273dc43f384f456e1  libphobos/src/std/digest/crc.d
  46da8f96e31725d98662f6c7014b7354  libphobos/src/std/digest/digest.d
--- 95946,95968 ----
  2e1b74bd6f1caaa09fc7b0815300f93e  libphobos/src/std/bigint.d
  c7d8dbb241e01e5455a912f11ff68b83  libphobos/src/std/bitmanip.d
  650a2cffce3d7f24c75c74f88094e60b  libphobos/src/std/compiler.d
! f4412f413d3e5a859b4c9d0fa5cdf5c0  libphobos/src/std/complex.d
  e7c7c3c72593bf413bdd6cf318a0ec5e  libphobos/src/std/concurrency.d
  efefaf636ac9c2700e0236e905fd6a66  libphobos/src/std/container/array.d
  36afdfdd90a59191e14f28d4707f3dc4  libphobos/src/std/container/binaryheap.d
  37d8ece674f85aa09238e37202cb9051  libphobos/src/std/container/dlist.d
  ddad07ebe46fb30a7bc04dacf7bcb95d  libphobos/src/std/container/package.d
! 6b16380ed49c116bddb3ed6e07117350  libphobos/src/std/container/rbtree.d
  012132aa38bffc0bda89172cf79b83ac  libphobos/src/std/container/slist.d
  e782ada904d666a60876d579a3e968b4  libphobos/src/std/container/util.d
! 5704d8083d5bd5fd677448c8af0a0a65  libphobos/src/std/conv.d
  854792846bec69d0162f4541a2d790f9  libphobos/src/std/csv.d
  2d4609b176df3fa82a934ba209ae8a0b  libphobos/src/std/datetime/date.d
  facdd33ec15bb454b70f1fb6f2085b78  libphobos/src/std/datetime/interval.d
  78730a0ec629f956f20bb731e03e6ab2  libphobos/src/std/datetime/package.d
  a9b9e495e47d86cdc0718c4b8cc1600c  libphobos/src/std/datetime/stopwatch.d
! 93988329919ee7fd12cb90e95478944d  libphobos/src/std/datetime/systime.d
! 3dc36925a727161d1d20d58070d928d1  libphobos/src/std/datetime/timezone.d
  d8b6962911e8b75d349da26658d8b57a  libphobos/src/std/demangle.d
  77339e6de1fc6d9273dc43f384f456e1  libphobos/src/std/digest/crc.d
  46da8f96e31725d98662f6c7014b7354  libphobos/src/std/digest/digest.d
*************** a2a3eb71c004efc75dcd31e564090bb4  libpho
*** 89780,89786 ****
  64f861b7bc3c68a5d37183fb631b1ce4  libphobos/src/std/digest/ripemd.d
  db4bc8a27e488683760a1d60913bf1e1  libphobos/src/std/digest/sha.d
  0b8d0d2ad0c8bc98be4121f8fbf4cfe9  libphobos/src/std/encoding.d
! 467bef58fd59f8cdc3a3d0babb3586a9  libphobos/src/std/exception.d
  07361a6b930672629c60fc313827f6c7  libphobos/src/std/experimental/allocator/building_blocks/affix_allocator.d
  a1abaa55e33b599a4cf0c8f7d3824194  libphobos/src/std/experimental/allocator/building_blocks/allocator_list.d
  b1676a1df71e77fa9f6188d999132348  libphobos/src/std/experimental/allocator/building_blocks/bitmapped_block.d
--- 95973,95979 ----
  64f861b7bc3c68a5d37183fb631b1ce4  libphobos/src/std/digest/ripemd.d
  db4bc8a27e488683760a1d60913bf1e1  libphobos/src/std/digest/sha.d
  0b8d0d2ad0c8bc98be4121f8fbf4cfe9  libphobos/src/std/encoding.d
! ec152502cb3ce282f7b74bb2d525dd11  libphobos/src/std/exception.d
  07361a6b930672629c60fc313827f6c7  libphobos/src/std/experimental/allocator/building_blocks/affix_allocator.d
  a1abaa55e33b599a4cf0c8f7d3824194  libphobos/src/std/experimental/allocator/building_blocks/allocator_list.d
  b1676a1df71e77fa9f6188d999132348  libphobos/src/std/experimental/allocator/building_blocks/bitmapped_block.d
*************** dfc19eabde984f92952cef4aa53f2e8a  libpho
*** 89792,89805 ****
  bd256f7962ef397981f5f90de59c52dd  libphobos/src/std/experimental/allocator/building_blocks/null_allocator.d
  518c8d4d74b42f38d4c5f6895b243fcf  libphobos/src/std/experimental/allocator/building_blocks/package.d
  d9668ecbba55bd17ce9296662a29e88f  libphobos/src/std/experimental/allocator/building_blocks/quantizer.d
! 8052fdd25d4785d35af534ed3ef18231  libphobos/src/std/experimental/allocator/building_blocks/region.d
  ade382f0228d590696e1e1730c23dcc4  libphobos/src/std/experimental/allocator/building_blocks/scoped_allocator.d
  ed4b6ca271c719393e3d32f95bf98d09  libphobos/src/std/experimental/allocator/building_blocks/segregator.d
  e02ae51df2e72057c7be83a876850e01  libphobos/src/std/experimental/allocator/building_blocks/stats_collector.d
  cf920ce550d5a446019208ffd4586fc0  libphobos/src/std/experimental/allocator/common.d
  f8489c053be22fef99fa0e956069cdbf  libphobos/src/std/experimental/allocator/gc_allocator.d
  3104dc6db8a51151c8bcb99942e18ae0  libphobos/src/std/experimental/allocator/mallocator.d
! 750e3cc8dcffcf2aeff7aeb375ccf729  libphobos/src/std/experimental/allocator/mmap_allocator.d
  8590746fbf0c31d80c991fa43fc62723  libphobos/src/std/experimental/allocator/package.d
  8c297aaae9395d04d6b0a4291608e578  libphobos/src/std/experimental/allocator/showcase.d
  2c77ac07c57f268607b7c4722668dfd8  libphobos/src/std/experimental/allocator/typed.d
--- 95985,95998 ----
  bd256f7962ef397981f5f90de59c52dd  libphobos/src/std/experimental/allocator/building_blocks/null_allocator.d
  518c8d4d74b42f38d4c5f6895b243fcf  libphobos/src/std/experimental/allocator/building_blocks/package.d
  d9668ecbba55bd17ce9296662a29e88f  libphobos/src/std/experimental/allocator/building_blocks/quantizer.d
! 2adb3dae5ebc282dc6e3e3fad09874f0  libphobos/src/std/experimental/allocator/building_blocks/region.d
  ade382f0228d590696e1e1730c23dcc4  libphobos/src/std/experimental/allocator/building_blocks/scoped_allocator.d
  ed4b6ca271c719393e3d32f95bf98d09  libphobos/src/std/experimental/allocator/building_blocks/segregator.d
  e02ae51df2e72057c7be83a876850e01  libphobos/src/std/experimental/allocator/building_blocks/stats_collector.d
  cf920ce550d5a446019208ffd4586fc0  libphobos/src/std/experimental/allocator/common.d
  f8489c053be22fef99fa0e956069cdbf  libphobos/src/std/experimental/allocator/gc_allocator.d
  3104dc6db8a51151c8bcb99942e18ae0  libphobos/src/std/experimental/allocator/mallocator.d
! 94fca816b1a2d7ed566e18b1a62c1cf0  libphobos/src/std/experimental/allocator/mmap_allocator.d
  8590746fbf0c31d80c991fa43fc62723  libphobos/src/std/experimental/allocator/package.d
  8c297aaae9395d04d6b0a4291608e578  libphobos/src/std/experimental/allocator/showcase.d
  2c77ac07c57f268607b7c4722668dfd8  libphobos/src/std/experimental/allocator/typed.d
*************** ab89728697de6aa77dd0fd009e7b4e2c  libpho
*** 89807,89825 ****
  81c45a5b96126468ad2b7230bd2031c1  libphobos/src/std/experimental/logger/core.d
  fb93cb9970cc8437579c2d36ffe210cc  libphobos/src/std/experimental/logger/filelogger.d
  8ffbef37f72cdcaffa8370e932827a62  libphobos/src/std/experimental/logger/multilogger.d
! 2ba0ca1245facf8bd9f06e0c00f38a2f  libphobos/src/std/experimental/logger/nulllogger.d
  8990e49eb8e32ce16d9ad60a59d2f0f8  libphobos/src/std/experimental/logger/package.d
  768b30d13593aba9e2715a7d868d763e  libphobos/src/std/experimental/note.md
! fda060262c6e10ade53fd95520773562  libphobos/src/std/experimental/typecons.d
! 28a64d0c5bc1bf0610f66147e52742e5  libphobos/src/std/file.d
! ec0e05f5a1a49547321c0254037f0a51  libphobos/src/std/format.d
  a9bcbfe8b80cf74f958269311360e8a9  libphobos/src/std/functional.d
  cba82f262d27ecd762bade9ceb5641df  libphobos/src/std/getopt.d
  0e73cb6827cf20df80c4dbda34e548c6  libphobos/src/std/internal/cstring.d
! 826fbe5fdacfa547fecedfd41ea5eee6  libphobos/src/std/internal/math/biguintcore.d
  1573927ce5c1c799a6a3b9687b60f97b  libphobos/src/std/internal/math/biguintnoasm.d
  2f88d75d8626b0556660186e9e589e3d  libphobos/src/std/internal/math/errorfunction.d
! 8d93cb049aa7e1503cf14eb96f428d63  libphobos/src/std/internal/math/gammafunction.d
  58e2abb18da0d53741e22e3bf5e1285a  libphobos/src/std/internal/scopebuffer.d
  f36ecd6944cbf2a1b92c449a33839d11  libphobos/src/std/internal/test/dummyrange.d
  8c74ab50895aaf9b04b114888ade41d8  libphobos/src/std/internal/test/range.d
--- 96000,96018 ----
  81c45a5b96126468ad2b7230bd2031c1  libphobos/src/std/experimental/logger/core.d
  fb93cb9970cc8437579c2d36ffe210cc  libphobos/src/std/experimental/logger/filelogger.d
  8ffbef37f72cdcaffa8370e932827a62  libphobos/src/std/experimental/logger/multilogger.d
! 0e25692d617d83b6135ad7cf96cba552  libphobos/src/std/experimental/logger/nulllogger.d
  8990e49eb8e32ce16d9ad60a59d2f0f8  libphobos/src/std/experimental/logger/package.d
  768b30d13593aba9e2715a7d868d763e  libphobos/src/std/experimental/note.md
! fca340b51411154e910811dbec4ad528  libphobos/src/std/experimental/typecons.d
! 8a70f0774df0a5ff1569b429efeb180f  libphobos/src/std/file.d
! a2273330503c3be223468f79cfac2603  libphobos/src/std/format.d
  a9bcbfe8b80cf74f958269311360e8a9  libphobos/src/std/functional.d
  cba82f262d27ecd762bade9ceb5641df  libphobos/src/std/getopt.d
  0e73cb6827cf20df80c4dbda34e548c6  libphobos/src/std/internal/cstring.d
! f4d2a4f227d72d6aaae7253ec7deca77  libphobos/src/std/internal/math/biguintcore.d
  1573927ce5c1c799a6a3b9687b60f97b  libphobos/src/std/internal/math/biguintnoasm.d
  2f88d75d8626b0556660186e9e589e3d  libphobos/src/std/internal/math/errorfunction.d
! 3ee93003bf8edd81e0a57973faa63456  libphobos/src/std/internal/math/gammafunction.d
  58e2abb18da0d53741e22e3bf5e1285a  libphobos/src/std/internal/scopebuffer.d
  f36ecd6944cbf2a1b92c449a33839d11  libphobos/src/std/internal/test/dummyrange.d
  8c74ab50895aaf9b04b114888ade41d8  libphobos/src/std/internal/test/range.d
*************** f36ecd6944cbf2a1b92c449a33839d11  libpho
*** 89831,89837 ****
  e6a08fb4d7276775840f8fde15eb008e  libphobos/src/std/internal/unicode_tables.d
  a2ae05947a98834a562acbc03bf33550  libphobos/src/std/internal/windows/advapi32.d
  07236968633d655b0da673e496fed396  libphobos/src/std/json.d
! 2fa0f3370dec50995de358441506af9d  libphobos/src/std/math.d
  d64e7c6f9f940e7d7f14d7d36c358989  libphobos/src/std/mathspecial.d
  67828c841f9f6ada962fea66bb268d33  libphobos/src/std/meta.d
  0399473cfd9632b309d72c0040489531  libphobos/src/std/mmfile.d
--- 96024,96030 ----
  e6a08fb4d7276775840f8fde15eb008e  libphobos/src/std/internal/unicode_tables.d
  a2ae05947a98834a562acbc03bf33550  libphobos/src/std/internal/windows/advapi32.d
  07236968633d655b0da673e496fed396  libphobos/src/std/json.d
! 8199a7cd17f02f5334601fdef3166535  libphobos/src/std/math.d
  d64e7c6f9f940e7d7f14d7d36c358989  libphobos/src/std/mathspecial.d
  67828c841f9f6ada962fea66bb268d33  libphobos/src/std/meta.d
  0399473cfd9632b309d72c0040489531  libphobos/src/std/mmfile.d
*************** d64e7c6f9f940e7d7f14d7d36c358989  libpho
*** 89839,89867 ****
  70c88d4496f371ca966e6a139e837ea3  libphobos/src/std/net/isemail.d
  d471e006e4eff73c7d20b9167e24d741  libphobos/src/std/numeric.d
  388208c6635979df5a07648d1f0cdc2e  libphobos/src/std/outbuffer.d
! fb2ab68236e21bf3840a53b15043cac4  libphobos/src/std/parallelism.d
  2b189485e4897de30dbd494f6d788e0b  libphobos/src/std/path.d
! 164b6df12b19e11ca70b9684b1e947fa  libphobos/src/std/process.d
  592b96acd85b7ae34760c56d2e1af9f7  libphobos/src/std/random.d
  1d5f5bfe4477f509753c7242be1c9583  libphobos/src/std/range/interfaces.d
! 8d10dd10b03c425714911f6873b9493a  libphobos/src/std/range/package.d
  977bc68925d2e5a24972dfec11d6d245  libphobos/src/std/range/primitives.d
  f1c1a6b3c7a2ae3529faf5dd24fa3837  libphobos/src/std/regex/internal/backtracking.d
  26a9d95cdcd55fa4d7006787f114bee9  libphobos/src/std/regex/internal/generator.d
  62bc465827acb96232b4132a60f05a36  libphobos/src/std/regex/internal/ir.d
  f854d99cc56bd90af7ed854ae4c5f4a9  libphobos/src/std/regex/internal/kickstart.d
  975b74c5457b32ddace295e759995f63  libphobos/src/std/regex/internal/parser.d
! b32344931154c0949d91ea5977b128e8  libphobos/src/std/regex/internal/tests.d
  b99f626316273c3daf2953bfd822609c  libphobos/src/std/regex/internal/thompson.d
  9331982b3979f24025c8d01a02eaae41  libphobos/src/std/regex/package.d
  df4f18ae8c7b1188ceb25cebc8cdbfad  libphobos/src/std/signals.d
! 50e8f943c45048bda343c13c5ea8f6c2  libphobos/src/std/socket.d
  6a33097edd4ad1e0309cbf45449a8d4e  libphobos/src/std/stdint.d
! da34a709cc539e4cd81f4100d93b17c9  libphobos/src/std/stdio.d
! 085d44aff64496b59aa3e7a785af5074  libphobos/src/std/string.d
! 174fcd8c187f1e134773b4439e9d5ef4  libphobos/src/std/system.d
! 7ec31ac728ed4fdf60d84e5c1e139b6c  libphobos/src/std/traits.d
! af3931e2d5f5841e7ebac3d804b4dfc8  libphobos/src/std/typecons.d
  0c2864a8173de711ac1c1085e4f321cf  libphobos/src/std/typetuple.d
  e0069a8fdebf24d2689b2648a6fa8248  libphobos/src/std/uni.d
  87e90859aa6919e3023e8671040966c8  libphobos/src/std/uri.d
--- 96032,96061 ----
  70c88d4496f371ca966e6a139e837ea3  libphobos/src/std/net/isemail.d
  d471e006e4eff73c7d20b9167e24d741  libphobos/src/std/numeric.d
  388208c6635979df5a07648d1f0cdc2e  libphobos/src/std/outbuffer.d
! 842f278bff583b4bd01499694eadcb0c  libphobos/src/std/parallelism.d
  2b189485e4897de30dbd494f6d788e0b  libphobos/src/std/path.d
! a006724a052bc99182ee61bb064412e4  libphobos/src/std/process.d
  592b96acd85b7ae34760c56d2e1af9f7  libphobos/src/std/random.d
  1d5f5bfe4477f509753c7242be1c9583  libphobos/src/std/range/interfaces.d
! 6c8837cd6d2408380210c4f909eb18f3  libphobos/src/std/range/package.d
  977bc68925d2e5a24972dfec11d6d245  libphobos/src/std/range/primitives.d
  f1c1a6b3c7a2ae3529faf5dd24fa3837  libphobos/src/std/regex/internal/backtracking.d
  26a9d95cdcd55fa4d7006787f114bee9  libphobos/src/std/regex/internal/generator.d
  62bc465827acb96232b4132a60f05a36  libphobos/src/std/regex/internal/ir.d
  f854d99cc56bd90af7ed854ae4c5f4a9  libphobos/src/std/regex/internal/kickstart.d
  975b74c5457b32ddace295e759995f63  libphobos/src/std/regex/internal/parser.d
! cc02a9fea97526c85bb1ea77ef6760c0  libphobos/src/std/regex/internal/tests.d
! 49a6aceaab294b0b5369e56f7ba87bb5  libphobos/src/std/regex/internal/tests2.d
  b99f626316273c3daf2953bfd822609c  libphobos/src/std/regex/internal/thompson.d
  9331982b3979f24025c8d01a02eaae41  libphobos/src/std/regex/package.d
  df4f18ae8c7b1188ceb25cebc8cdbfad  libphobos/src/std/signals.d
! 209df4ea3736cae127de93cd246ea310  libphobos/src/std/socket.d
  6a33097edd4ad1e0309cbf45449a8d4e  libphobos/src/std/stdint.d
! be8a624f7d83029b625cc6a304f7ce56  libphobos/src/std/stdio.d
! 54c3c76107b8a7608d8de8cfbff0a908  libphobos/src/std/string.d
! ae3eea4dd286cc0c253a4bf4f0382cef  libphobos/src/std/system.d
! 857bc18696d7036249f50428486036b0  libphobos/src/std/traits.d
! 4557e49ba3c063b8a29e71536a7008ca  libphobos/src/std/typecons.d
  0c2864a8173de711ac1c1085e4f321cf  libphobos/src/std/typetuple.d
  e0069a8fdebf24d2689b2648a6fa8248  libphobos/src/std/uni.d
  87e90859aa6919e3023e8671040966c8  libphobos/src/std/uri.d
*************** ee1fa3514e0cedfb7488e2be873ec9fd  libpho
*** 89872,89911 ****
  47c382b5ecf8e5b81bf7760dc34f57c6  libphobos/src/std/windows/registry.d
  16a61b9b540df5967d61dc3060daf52d  libphobos/src/std/windows/syserror.d
  ed6622a6fa6da3b41e47f072aacdcccb  libphobos/src/std/xml.d
! 53a8403333c9932242d98d51e5a5b3d6  libphobos/src/std/zip.d
  e286530c1673eab67616befb2f26f1a7  libphobos/src/std/zlib.d
! eda1ddbf394b618b7488efde98c0ef46  libphobos/testsuite/Makefile.am
! 3adb7fa8a02f5588903141e348a35c8d  libphobos/testsuite/Makefile.in
! b21826cc6daed1066d2b7a42f2476b60  libphobos/testsuite/config/default.exp
! 74eb333f63aab72ebf727c7768c48728  libphobos/testsuite/lib/libphobos-dg.exp
! 752b7cdf153b006b16e4b0ef007f3aa0  libphobos/testsuite/lib/libphobos.exp
! b4be67485d7faade311c9061561af23e  libphobos/testsuite/libphobos.aa/aa.exp
  bc5e4ff02f931c6e4092411c492a23eb  libphobos/testsuite/libphobos.aa/test_aa.d
! 560b7c676aa6374d975048ed0d3dea42  libphobos/testsuite/libphobos.allocations/allocations.exp
  7dfee0831ce08cfd971056dee5ce8519  libphobos/testsuite/libphobos.allocations/overflow_from_existing.d
  39b50d25dc11230fd4d61a9d7c8cf7a0  libphobos/testsuite/libphobos.allocations/overflow_from_zero.d
! eb23a46380d7854189331a38e1b260b3  libphobos/testsuite/libphobos.allocations/tls_gc_integration.d
! 4d862b7d6a9c37026387462d2f18baf9  libphobos/testsuite/libphobos.cycles/cycles.exp
  1d8fc1ccfee07e211685dad723c7c5ef  libphobos/testsuite/libphobos.cycles/mod1.d
  504ac65b81c5b13426dbccb387e5ea96  libphobos/testsuite/libphobos.cycles/mod2.d
  8fd2e066de9b173803c23766ec268bc6  libphobos/testsuite/libphobos.cycles/mod3.d
! aaba486567e0b3d139a6f9b0d2ba6d0f  libphobos/testsuite/libphobos.druntime/druntime.exp
! b6eb5b23b95505aace8c3495af61c96e  libphobos/testsuite/libphobos.druntime_shared/druntime_shared.exp
! 19a83daac4a74719662b0bafbd5ee07d  libphobos/testsuite/libphobos.exceptions/chain.d
! 560b7c676aa6374d975048ed0d3dea42  libphobos/testsuite/libphobos.exceptions/exceptions.exp
  17d3680e349b715f2c8ae4cd23ab5dc5  libphobos/testsuite/libphobos.exceptions/invalid_memory_operation.d
! 79ad9406d3677f68903d7e1a4f7cdbad  libphobos/testsuite/libphobos.exceptions/line_trace.d
  bf5b834c84dce34c411728d08e740501  libphobos/testsuite/libphobos.exceptions/static_dtor.d
  31f5d626ceb6296159b2ba424ee49c32  libphobos/testsuite/libphobos.exceptions/stderr_msg.d
  1f17216ed3cb74970b34edf1fe76623d  libphobos/testsuite/libphobos.exceptions/unittest_assert.d
  71bea904d6761af4063877c668a8fe49  libphobos/testsuite/libphobos.exceptions/unknown_gc.d
! b4be67485d7faade311c9061561af23e  libphobos/testsuite/libphobos.hash/hash.exp
  23008e0ae50c9c076a539d22ebcd0b49  libphobos/testsuite/libphobos.hash/test_hash.d
! 35a8e616fdcbacb81b4451aafb732c93  libphobos/testsuite/libphobos.init_fini/init_fini.exp
  b6bbf47234f6bdb61c628cae44fb04f9  libphobos/testsuite/libphobos.init_fini/runtime_args.d
  6cf643d2e05d4806362cf62c56562e5e  libphobos/testsuite/libphobos.init_fini/thread_join.d
! 24fc4148ed34d61f8bb26ecf0205bec3  libphobos/testsuite/libphobos.phobos/phobos.exp
! c3a0a097f19904145efb300dd537f612  libphobos/testsuite/libphobos.phobos_shared/phobos_shared.exp
  dc9924675718952b484eadd2d458553a  libphobos/testsuite/libphobos.shared/finalize.d
  31e8bf46746f3f04a617d6a88183d6df  libphobos/testsuite/libphobos.shared/host.c
  568552f233800fa4522238fe4c907fb7  libphobos/testsuite/libphobos.shared/lib.d
--- 96066,96105 ----
  47c382b5ecf8e5b81bf7760dc34f57c6  libphobos/src/std/windows/registry.d
  16a61b9b540df5967d61dc3060daf52d  libphobos/src/std/windows/syserror.d
  ed6622a6fa6da3b41e47f072aacdcccb  libphobos/src/std/xml.d
! f948100c606aac80dc7ea101dbd8938b  libphobos/src/std/zip.d
  e286530c1673eab67616befb2f26f1a7  libphobos/src/std/zlib.d
! b5ef2bfc6ccc86766453074317e71166  libphobos/testsuite/Makefile.am
! a13be93a99fb4f3ac1cd895ac34c9305  libphobos/testsuite/Makefile.in
! b6823735d7a4e6efcdd761ebf75c53bc  libphobos/testsuite/config/default.exp
! a5710012b14c38efe030c8768c419b84  libphobos/testsuite/lib/libphobos-dg.exp
! b0323a9ca2c057a6dfef1504422c88bc  libphobos/testsuite/lib/libphobos.exp
! 84287a27c199fbae32ce036586eb3e99  libphobos/testsuite/libphobos.aa/aa.exp
  bc5e4ff02f931c6e4092411c492a23eb  libphobos/testsuite/libphobos.aa/test_aa.d
! 52aa82eb55841708ea1accdcab5dfc19  libphobos/testsuite/libphobos.allocations/allocations.exp
  7dfee0831ce08cfd971056dee5ce8519  libphobos/testsuite/libphobos.allocations/overflow_from_existing.d
  39b50d25dc11230fd4d61a9d7c8cf7a0  libphobos/testsuite/libphobos.allocations/overflow_from_zero.d
! 94c17250a195da16fb246ef8e28d3477  libphobos/testsuite/libphobos.allocations/tls_gc_integration.d
! 68744a241e68f31847432a7816c595e0  libphobos/testsuite/libphobos.cycles/cycles.exp
  1d8fc1ccfee07e211685dad723c7c5ef  libphobos/testsuite/libphobos.cycles/mod1.d
  504ac65b81c5b13426dbccb387e5ea96  libphobos/testsuite/libphobos.cycles/mod2.d
  8fd2e066de9b173803c23766ec268bc6  libphobos/testsuite/libphobos.cycles/mod3.d
! f83fd9e007d10b5d0231dfd0cfb8a17d  libphobos/testsuite/libphobos.druntime/druntime.exp
! 5b2eec0a9988a7c0c87200eb5efd0e77  libphobos/testsuite/libphobos.druntime_shared/druntime_shared.exp
! 53adf2e14495ca10a85a32022b69fa86  libphobos/testsuite/libphobos.exceptions/chain.d
! 52aa82eb55841708ea1accdcab5dfc19  libphobos/testsuite/libphobos.exceptions/exceptions.exp
  17d3680e349b715f2c8ae4cd23ab5dc5  libphobos/testsuite/libphobos.exceptions/invalid_memory_operation.d
! f20a3bb9bc82bda410377ab87e9dfa75  libphobos/testsuite/libphobos.exceptions/line_trace.d
  bf5b834c84dce34c411728d08e740501  libphobos/testsuite/libphobos.exceptions/static_dtor.d
  31f5d626ceb6296159b2ba424ee49c32  libphobos/testsuite/libphobos.exceptions/stderr_msg.d
  1f17216ed3cb74970b34edf1fe76623d  libphobos/testsuite/libphobos.exceptions/unittest_assert.d
  71bea904d6761af4063877c668a8fe49  libphobos/testsuite/libphobos.exceptions/unknown_gc.d
! 84287a27c199fbae32ce036586eb3e99  libphobos/testsuite/libphobos.hash/hash.exp
  23008e0ae50c9c076a539d22ebcd0b49  libphobos/testsuite/libphobos.hash/test_hash.d
! 245b43d36cad9840fce44fbf4358d424  libphobos/testsuite/libphobos.init_fini/init_fini.exp
  b6bbf47234f6bdb61c628cae44fb04f9  libphobos/testsuite/libphobos.init_fini/runtime_args.d
  6cf643d2e05d4806362cf62c56562e5e  libphobos/testsuite/libphobos.init_fini/thread_join.d
! 27c43b1f8fa27481d7f1a9039ca3f912  libphobos/testsuite/libphobos.phobos/phobos.exp
! 295b1eaf5b3977cb09f1a23395f94e08  libphobos/testsuite/libphobos.phobos_shared/phobos_shared.exp
  dc9924675718952b484eadd2d458553a  libphobos/testsuite/libphobos.shared/finalize.d
  31e8bf46746f3f04a617d6a88183d6df  libphobos/testsuite/libphobos.shared/host.c
  568552f233800fa4522238fe4c907fb7  libphobos/testsuite/libphobos.shared/lib.d
*************** c2d7d8743684246c1910e1f5b7886bf4  libpho
*** 89925,89949 ****
  d3c9a66f75a4c0e9517bb616aa64dbf0  libphobos/testsuite/libphobos.shared/load_loaddep.d
  7296c8b58a8ecd96b9e356bc9b48f141  libphobos/testsuite/libphobos.shared/load_mod_collision.d
  7208bfcc87f14bf3c973fd0046246456  libphobos/testsuite/libphobos.shared/plugin.d
! e36d56c030504444e9f43a67de69388e  libphobos/testsuite/libphobos.shared/shared.exp
! d6d76c43d490a2c9d8addee8eee021b8  libphobos/testsuite/libphobos.thread/fiber_guard_page.d
! 560b7c676aa6374d975048ed0d3dea42  libphobos/testsuite/libphobos.thread/thread.exp
  47f6734418d71269ebe08d8f12ec205f  libphobos/testsuite/libphobos.thread/tlsgc_sections.d
  78729aa84444a843eaada3c2e3a17e43  libphobos/testsuite/libphobos.typeinfo/comparison.d
! 7d73c130e62a20e51195ca1c51bf2b2f  libphobos/testsuite/libphobos.typeinfo/struct-align.d
! 35a8e616fdcbacb81b4451aafb732c93  libphobos/testsuite/libphobos.typeinfo/typeinfo.exp
! 9e301017360325e39a83c6b15962800a  libphobos/testsuite/testsuite_flags.in
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! 547d9c9a276732a9b0ff7ff656e6fadc  libquadmath/ChangeLog
  4696eddf264dd090e144b4849b0a6d91  libquadmath/Makefile.am
  644a78a01d94abe28b364eaa21142d82  libquadmath/Makefile.in
  d9afbc1f1e04c7e461265ff9323cc6f4  libquadmath/acinclude.m4
  1a1d1b5a61d685d544d98ec2e4b86d5a  libquadmath/aclocal.m4
  cf5a7864ff15ab4dd1604e0f6fe4e501  libquadmath/config.h.in
! 75e633e311f438dd649acfd4008abd14  libquadmath/configure
  279cb151e8c43d5af048eb1a9608a435  libquadmath/configure.ac
! 0ea1ff3d84c35811520698429b2d0aa7  libquadmath/libquadmath.info
! 8442a7234a31a9e0c384bc6376ae9724  libquadmath/libquadmath.texi
  77280bb7ee423875e03d9c0d34527df6  libquadmath/libtool-version
  452fee0ef153d65eb7413a5103c63a23  libquadmath/math/acoshq.c
  c4c7d5ffedb33360fdfb16dc037faf46  libquadmath/math/acosq.c
--- 96119,96143 ----
  d3c9a66f75a4c0e9517bb616aa64dbf0  libphobos/testsuite/libphobos.shared/load_loaddep.d
  7296c8b58a8ecd96b9e356bc9b48f141  libphobos/testsuite/libphobos.shared/load_mod_collision.d
  7208bfcc87f14bf3c973fd0046246456  libphobos/testsuite/libphobos.shared/plugin.d
! 937c57ed50388766f10b6ef01e2bfd52  libphobos/testsuite/libphobos.shared/shared.exp
! b32be97cb294b7836a5e6d15a92b9047  libphobos/testsuite/libphobos.thread/fiber_guard_page.d
! 52aa82eb55841708ea1accdcab5dfc19  libphobos/testsuite/libphobos.thread/thread.exp
  47f6734418d71269ebe08d8f12ec205f  libphobos/testsuite/libphobos.thread/tlsgc_sections.d
  78729aa84444a843eaada3c2e3a17e43  libphobos/testsuite/libphobos.typeinfo/comparison.d
! f0442e8b8974938ded0d17389f8b0608  libphobos/testsuite/libphobos.typeinfo/struct-align.d
! 245b43d36cad9840fce44fbf4358d424  libphobos/testsuite/libphobos.typeinfo/typeinfo.exp
! 9b10185286c1d2167a91a48b650c30fd  libphobos/testsuite/testsuite_flags.in
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! e3e239074163ecca41c2cdc10b31f866  libquadmath/ChangeLog
  4696eddf264dd090e144b4849b0a6d91  libquadmath/Makefile.am
  644a78a01d94abe28b364eaa21142d82  libquadmath/Makefile.in
  d9afbc1f1e04c7e461265ff9323cc6f4  libquadmath/acinclude.m4
  1a1d1b5a61d685d544d98ec2e4b86d5a  libquadmath/aclocal.m4
  cf5a7864ff15ab4dd1604e0f6fe4e501  libquadmath/config.h.in
! 7b01e196ad5d8354ad07398ee5c470fe  libquadmath/configure
  279cb151e8c43d5af048eb1a9608a435  libquadmath/configure.ac
! 7d9e33a7d1280f9bcba81d21e63e5ad8  libquadmath/libquadmath.info
! f698e3dbcbae17420f2b72b77578ea17  libquadmath/libquadmath.texi
  77280bb7ee423875e03d9c0d34527df6  libquadmath/libtool-version
  452fee0ef153d65eb7413a5103c63a23  libquadmath/math/acoshq.c
  c4c7d5ffedb33360fdfb16dc037faf46  libquadmath/math/acosq.c
*************** a81cc82679e80c86cfbd5575867450d0  libqua
*** 90074,90096 ****
  af84fa5118f4adec8393614994e1c4d6  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
  12c73a846f7668d29de720bd79502bef  libquadmath/update-quadmath.py
! 18372b90e21c4a51c1d48327e5dcdb5b  libsanitizer/ChangeLog
! 0e35a2dc2727acc707a3f5ead45c8e12  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
! 214b34d29a767814ebb2e1fc47be8b55  libsanitizer/LOCAL_PATCHES
! 42f08b8eea49b33d0faa6164aafd737b  libsanitizer/MERGE
! 0b2039ae189846277493a5b6f7fefc9b  libsanitizer/Makefile.am
! 091dc1fd1fa808d6895f829f8a99447f  libsanitizer/Makefile.in
! 86d7961250addd460750856d5b7b6914  libsanitizer/README.gcc
  9fefac8c0974bfaa97f7bd2eba2ecb55  libsanitizer/acinclude.m4
  3e95ebc3e885f5937a99e76009d4bf78  libsanitizer/aclocal.m4
! eae7fbe376f21984fa2c641f07171c25  libsanitizer/asan/Makefile.am
! c3186b43070b2f448fb913560e2a221b  libsanitizer/asan/Makefile.in
  95fe7ddd3619047b1789dacbf0905dba  libsanitizer/asan/asan_activation.cpp
  49679f380cb38cd6671d4d18b3c103e2  libsanitizer/asan/asan_activation.h
  acd6633a0710d8be6454db6d024d7aa9  libsanitizer/asan/asan_activation_flags.inc
! 9c77984f8ddd62b5eed61c91435dbddb  libsanitizer/asan/asan_allocator.cpp
! 47836bf8e3cf07595dad4e188300103f  libsanitizer/asan/asan_allocator.h
  efe8748a992ee28fbb7cf3767f4c872d  libsanitizer/asan/asan_debugging.cpp
  09fdd7d7cf90f1a76dee6dbe6a32e44f  libsanitizer/asan/asan_descriptions.cpp
  d02234d10635c3d0489d656daa5fa47f  libsanitizer/asan/asan_descriptions.h
--- 96268,96290 ----
  af84fa5118f4adec8393614994e1c4d6  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
  12c73a846f7668d29de720bd79502bef  libquadmath/update-quadmath.py
! 48aceac62efde7a6a9adb804b92edc7c  libsanitizer/ChangeLog
! 63916ba64a3cfa7ce2809fb46ab38597  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
! 4b97cb7f10927471b74a1536f5472643  libsanitizer/LOCAL_PATCHES
! 020d73e585a109be07580b930d4f8efd  libsanitizer/MERGE
! 070b22e4af6b91b74a465f4cec5b59e8  libsanitizer/Makefile.am
! c8d39f0bf0aeeb7dbd74e4bcaf219b0f  libsanitizer/Makefile.in
! af677523339d9108ea25d6905226bf0a  libsanitizer/README.gcc
  9fefac8c0974bfaa97f7bd2eba2ecb55  libsanitizer/acinclude.m4
  3e95ebc3e885f5937a99e76009d4bf78  libsanitizer/aclocal.m4
! 55f3f71c4cc613a257e8ddd792b91d6a  libsanitizer/asan/Makefile.am
! ac450965101bb600287e4c45ed96cc32  libsanitizer/asan/Makefile.in
  95fe7ddd3619047b1789dacbf0905dba  libsanitizer/asan/asan_activation.cpp
  49679f380cb38cd6671d4d18b3c103e2  libsanitizer/asan/asan_activation.h
  acd6633a0710d8be6454db6d024d7aa9  libsanitizer/asan/asan_activation_flags.inc
! 657b7c01211e1500dfc24ffec381a05e  libsanitizer/asan/asan_allocator.cpp
! ee92172d838335e71cb4d7c250888a63  libsanitizer/asan/asan_allocator.h
  efe8748a992ee28fbb7cf3767f4c872d  libsanitizer/asan/asan_debugging.cpp
  09fdd7d7cf90f1a76dee6dbe6a32e44f  libsanitizer/asan/asan_descriptions.cpp
  d02234d10635c3d0489d656daa5fa47f  libsanitizer/asan/asan_descriptions.h
*************** d02234d10635c3d0489d656daa5fa47f  libsan
*** 90098,90172 ****
  1d5de746827142d7ea1943556d298756  libsanitizer/asan/asan_errors.h
  2cfebe883cd41f184334eb6ca1c41b9f  libsanitizer/asan/asan_fake_stack.cpp
  a15f0895968debeada4576d3f50cd49f  libsanitizer/asan/asan_fake_stack.h
! eb092c15d882f7858a5b7d5a2cd43853  libsanitizer/asan/asan_flags.cpp
  62bf4dd74e13c5de98bece330fca0dae  libsanitizer/asan/asan_flags.h
  d1c9d6ab30c5a2c49cc292ed78970aec  libsanitizer/asan/asan_flags.inc
! 8f593efa9e65859c57612ef7d826a6c3  libsanitizer/asan/asan_fuchsia.cpp
  70b118d5e33ff23fe15dae5e02f0d9ea  libsanitizer/asan/asan_globals.cpp
  6f0a3e5b544abc4a7e05109d94bc01f6  libsanitizer/asan/asan_globals_win.cpp
  70bdc70f05ca1bf6f615ea7609e3bf8c  libsanitizer/asan/asan_init_version.h
! 74f056524cd18d8fd7194e6029398bc4  libsanitizer/asan/asan_interceptors.cpp
! fa8c960ea0773c84f24024622a82ded9  libsanitizer/asan/asan_interceptors.h
  d16e968834fb08491e8bd8187ff2430f  libsanitizer/asan/asan_interceptors_memintrinsics.cpp
  74aac85222c7e2a49a37c5d6d6eef525  libsanitizer/asan/asan_interceptors_memintrinsics.h
! 3e535b8dfc4a8480f0766eb6c71cbb88  libsanitizer/asan/asan_interceptors_vfork.S
  e64899305d01254f317b0a0101e04e57  libsanitizer/asan/asan_interface.inc
! 2ef8a2d88fc03e08abd01fb75d349e55  libsanitizer/asan/asan_interface_internal.h
! e76971c65fe600d5e331d559547434ff  libsanitizer/asan/asan_internal.h
! ba18948445a6421426074cad1524ae2b  libsanitizer/asan/asan_linux.cpp
  d41d8cd98f00b204e9800998ecf8427e  libsanitizer/asan/asan_lock.h
! 25bf567526eee32aa3b086c0d00951e2  libsanitizer/asan/asan_mac.cpp
! e0dd251df7ef67126e24b1e08e3a9a72  libsanitizer/asan/asan_malloc_linux.cpp
! a865a25048a867002a6a24550a21bc4c  libsanitizer/asan/asan_malloc_local.h
  2bb6ed3c14824117e69719ed5be917f4  libsanitizer/asan/asan_malloc_mac.cpp
  ad791013449cae9daa0b4ec69efa1ab8  libsanitizer/asan/asan_malloc_win.cpp
! edaa5abc91005d2853fc4084b8c8e905  libsanitizer/asan/asan_mapping.h
  375ef070698f18947fc62a996458b6f1  libsanitizer/asan/asan_mapping_myriad.h
  02919456959330f6eb64ef743f43f0c9  libsanitizer/asan/asan_mapping_sparc64.h
  1d6e119ce3ae5fb54b0de58087c07392  libsanitizer/asan/asan_memory_profile.cpp
  df7f6f214bae98741d56eb846dce787a  libsanitizer/asan/asan_new_delete.cpp
! 8aa1305ae253ee844dc9b254fafba1b1  libsanitizer/asan/asan_poisoning.cpp
  acb0afb7b450c53a1e77e6cb22244e8d  libsanitizer/asan/asan_poisoning.h
! 21b2bfea7e17f1c1ee73164d4cb15aba  libsanitizer/asan/asan_posix.cpp
  72bdf1b7e38d574b81f7eda5e24a7341  libsanitizer/asan/asan_preinit.cpp
! f656ba02556cb22183a9e670562a94cf  libsanitizer/asan/asan_premap_shadow.cpp
  a116a301835f4803dda6ba547a4efb13  libsanitizer/asan/asan_premap_shadow.h
! 8814949498369544641ad0a112b663ac  libsanitizer/asan/asan_report.cpp
  446fa0a0c19f36c3e72a9b18c5aacc2d  libsanitizer/asan/asan_report.h
! 95c215a3d7cc738a2b3bbec252211c7e  libsanitizer/asan/asan_rtems.cpp
! b5a10bf884dfe9f32195943915ec5e4f  libsanitizer/asan/asan_rtl.cpp
  7a66ee99b1b671c738ca237415ef25b8  libsanitizer/asan/asan_scariness_score.h
! 022e33ffbf77ace69ef3f13800e693aa  libsanitizer/asan/asan_shadow_setup.cpp
  8cb86aec8b62e684309ecf0ce74aa6e7  libsanitizer/asan/asan_stack.cpp
! 6be7a0d84f226c2d995fb4e422bd42f8  libsanitizer/asan/asan_stack.h
  bb9764c02889b8a287b178dd518a6581  libsanitizer/asan/asan_stats.cpp
  89151303b3f73f562ecdcb3835396dee  libsanitizer/asan/asan_stats.h
  a2311345c440ff8eb171ae9fa30980b6  libsanitizer/asan/asan_suppressions.cpp
  8ab11db904fc944b69ba16601317c1c7  libsanitizer/asan/asan_suppressions.h
! 0e2e0bcfff063260544c1122fee29179  libsanitizer/asan/asan_thread.cpp
! 0f729938085f4eb11dbd7aaf12b6cdc4  libsanitizer/asan/asan_thread.h
! f571fa4f19fbfcb50228b07d8f1ec56e  libsanitizer/asan/asan_win.cpp
  04f1f4ed8494f257b85b04acb5ba1429  libsanitizer/asan/asan_win_dll_thunk.cpp
  c38c4aad80d927b2557c5e1699d5ad04  libsanitizer/asan/asan_win_dynamic_runtime_thunk.cpp
  92464876ef7c58cb739f8dbb05e2f3a9  libsanitizer/asan/asan_win_weak_interception.cpp
  b0666c8f23d627e872a9a54b1a201cec  libsanitizer/asan/libtool-version
  5e33ed31fe41aaddda140fbff4ce0a62  libsanitizer/builtins/assembly.h
  4d6948c4912be5da16e30aac001b87d7  libsanitizer/config.h.in
! 5298a8aa0af358b921073718b8fa3f89  libsanitizer/configure
! e2da6d2fe49e4bc7b52487b9ea222f7f  libsanitizer/configure.ac
! a3b991a02d2433cab2b57a9c3eb24d7c  libsanitizer/configure.tgt
  62164e6387eaa4f03566444e00018275  libsanitizer/include/sanitizer/allocator_interface.h
! 59dccccf5737e12e033f7467a7f3768e  libsanitizer/include/sanitizer/asan_interface.h
! d462269eefcb3ebf53e43398ad8a6804  libsanitizer/include/sanitizer/common_interface_defs.h
  2473b60a7a21e100e8373bfe0d6b6aef  libsanitizer/include/sanitizer/coverage_interface.h
! adb8d0e5e5ca3ae2799013679adff860  libsanitizer/include/sanitizer/dfsan_interface.h
  b6b381c0cd9b86557889037633008dec  libsanitizer/include/sanitizer/hwasan_interface.h
! 623b7b3fb127d548a977019f4b87811c  libsanitizer/include/sanitizer/linux_syscall_hooks.h
  12eef8384005b7381e07c3fadcabbe1d  libsanitizer/include/sanitizer/lsan_interface.h
! 78d8943567f5e0a440fe343704262cc9  libsanitizer/include/sanitizer/msan_interface.h
! e914fe644d8adf914222ecd331c8745c  libsanitizer/include/sanitizer/netbsd_syscall_hooks.h
  0cd62c0e877b3674d128dc7d69440b19  libsanitizer/include/sanitizer/scudo_interface.h
! 6c3c6732466f5154ef9ceafd21c63804  libsanitizer/include/sanitizer/tsan_interface.h
  c5941a599594f1b6244644c35900365a  libsanitizer/include/sanitizer/tsan_interface_atomic.h
  1d1427dc8a4b30396a8d300315cb10eb  libsanitizer/include/sanitizer/ubsan_interface.h
  c06732d7b90bf79a06f7aa44d08a1fbb  libsanitizer/include/system/asm/ptrace.h
--- 96292,96401 ----
  1d5de746827142d7ea1943556d298756  libsanitizer/asan/asan_errors.h
  2cfebe883cd41f184334eb6ca1c41b9f  libsanitizer/asan/asan_fake_stack.cpp
  a15f0895968debeada4576d3f50cd49f  libsanitizer/asan/asan_fake_stack.h
! a9a92abd9f935775712cc15525cf3f06  libsanitizer/asan/asan_flags.cpp
  62bf4dd74e13c5de98bece330fca0dae  libsanitizer/asan/asan_flags.h
  d1c9d6ab30c5a2c49cc292ed78970aec  libsanitizer/asan/asan_flags.inc
! 7327417056adc5eec500d86950ed917a  libsanitizer/asan/asan_fuchsia.cpp
  70b118d5e33ff23fe15dae5e02f0d9ea  libsanitizer/asan/asan_globals.cpp
  6f0a3e5b544abc4a7e05109d94bc01f6  libsanitizer/asan/asan_globals_win.cpp
  70bdc70f05ca1bf6f615ea7609e3bf8c  libsanitizer/asan/asan_init_version.h
! 46028b60b69f991457dcbe846946f345  libsanitizer/asan/asan_interceptors.cpp
! 585bb04555a4f07af610378c0fbd0db5  libsanitizer/asan/asan_interceptors.h
  d16e968834fb08491e8bd8187ff2430f  libsanitizer/asan/asan_interceptors_memintrinsics.cpp
  74aac85222c7e2a49a37c5d6d6eef525  libsanitizer/asan/asan_interceptors_memintrinsics.h
! 0a948195ce48643ed8bf2a408f34139f  libsanitizer/asan/asan_interceptors_vfork.S
  e64899305d01254f317b0a0101e04e57  libsanitizer/asan/asan_interface.inc
! 0ef4a03be11df9ef0907f857904612cd  libsanitizer/asan/asan_interface_internal.h
! b2d0b3ddb40abcef5cc5540d41362590  libsanitizer/asan/asan_internal.h
! c7d170a96441edb85be872bfa2afbf4e  libsanitizer/asan/asan_linux.cpp
  d41d8cd98f00b204e9800998ecf8427e  libsanitizer/asan/asan_lock.h
! 0982c46c224d6935989e45d1745fab1e  libsanitizer/asan/asan_mac.cpp
! 739bd928d87e5cdb31cc78dd9f56d72b  libsanitizer/asan/asan_malloc_linux.cpp
! 71856c7aeab5f4ab5245d696e364f23a  libsanitizer/asan/asan_malloc_local.h
  2bb6ed3c14824117e69719ed5be917f4  libsanitizer/asan/asan_malloc_mac.cpp
  ad791013449cae9daa0b4ec69efa1ab8  libsanitizer/asan/asan_malloc_win.cpp
! dc147668f9368546c106d487229e0ef2  libsanitizer/asan/asan_mapping.h
  375ef070698f18947fc62a996458b6f1  libsanitizer/asan/asan_mapping_myriad.h
  02919456959330f6eb64ef743f43f0c9  libsanitizer/asan/asan_mapping_sparc64.h
  1d6e119ce3ae5fb54b0de58087c07392  libsanitizer/asan/asan_memory_profile.cpp
  df7f6f214bae98741d56eb846dce787a  libsanitizer/asan/asan_new_delete.cpp
! 3dbbec86a2a5d3354c39f723879652a2  libsanitizer/asan/asan_poisoning.cpp
  acb0afb7b450c53a1e77e6cb22244e8d  libsanitizer/asan/asan_poisoning.h
! 1005d495564b8276b01c78b4b69441f3  libsanitizer/asan/asan_posix.cpp
  72bdf1b7e38d574b81f7eda5e24a7341  libsanitizer/asan/asan_preinit.cpp
! dafabda2dd9c06fc4a26b5dd8bf4717b  libsanitizer/asan/asan_premap_shadow.cpp
  a116a301835f4803dda6ba547a4efb13  libsanitizer/asan/asan_premap_shadow.h
! abe0bd33f8ae0be518474ee31e17a4df  libsanitizer/asan/asan_report.cpp
  446fa0a0c19f36c3e72a9b18c5aacc2d  libsanitizer/asan/asan_report.h
! 4d87e1a5f426afe302f2bd712f18257c  libsanitizer/asan/asan_rtems.cpp
! d9426b73fde0f81c91f9966a8836ecc2  libsanitizer/asan/asan_rtl.cpp
  7a66ee99b1b671c738ca237415ef25b8  libsanitizer/asan/asan_scariness_score.h
! 5c2f75c6c1313619dfbdd2e7e69d0087  libsanitizer/asan/asan_shadow_setup.cpp
  8cb86aec8b62e684309ecf0ce74aa6e7  libsanitizer/asan/asan_stack.cpp
! 42492d06c2785f69f2a16ad7cfc63c91  libsanitizer/asan/asan_stack.h
  bb9764c02889b8a287b178dd518a6581  libsanitizer/asan/asan_stats.cpp
  89151303b3f73f562ecdcb3835396dee  libsanitizer/asan/asan_stats.h
  a2311345c440ff8eb171ae9fa30980b6  libsanitizer/asan/asan_suppressions.cpp
  8ab11db904fc944b69ba16601317c1c7  libsanitizer/asan/asan_suppressions.h
! 6240f3af19547519077f2653db981c00  libsanitizer/asan/asan_thread.cpp
! 6b6bbe7f7b8238b0de1b1219b9a3790f  libsanitizer/asan/asan_thread.h
! 614e84099db77267fe0d0faf603f1bf3  libsanitizer/asan/asan_win.cpp
  04f1f4ed8494f257b85b04acb5ba1429  libsanitizer/asan/asan_win_dll_thunk.cpp
  c38c4aad80d927b2557c5e1699d5ad04  libsanitizer/asan/asan_win_dynamic_runtime_thunk.cpp
  92464876ef7c58cb739f8dbb05e2f3a9  libsanitizer/asan/asan_win_weak_interception.cpp
  b0666c8f23d627e872a9a54b1a201cec  libsanitizer/asan/libtool-version
  5e33ed31fe41aaddda140fbff4ce0a62  libsanitizer/builtins/assembly.h
  4d6948c4912be5da16e30aac001b87d7  libsanitizer/config.h.in
! 71791af9e7d64000760bb85e094f90bd  libsanitizer/configure
! b3d0b12bf4f8383e0827e526087737cb  libsanitizer/configure.ac
! ebd023260ace15db0db0a8e46ee9efa1  libsanitizer/configure.tgt
! cc44a43ab9d9eda272e30cd495ce110f  libsanitizer/hwasan/Makefile.am
! 4145fee4229c812edebc4f61974d28de  libsanitizer/hwasan/Makefile.in
! d7b2b70db329a1129a9bed7c9f516b5d  libsanitizer/hwasan/hwasan.cpp
! 7751f58fd14a782e9c68d8c83702f0bb  libsanitizer/hwasan/hwasan.h
! 8beb6730eaa8c2f8bacbe3c6617b8668  libsanitizer/hwasan/hwasan_allocator.cpp
! 05dca677617b2386811b03d54f0832f1  libsanitizer/hwasan/hwasan_allocator.h
! e891daf3d4e0e7e4980fd15fbd87214d  libsanitizer/hwasan/hwasan_checks.h
! 9e13f86d83a5c8a7048f6d6a274915e0  libsanitizer/hwasan/hwasan_dynamic_shadow.cpp
! d2c53fada53bfee78b11f99e297aed7b  libsanitizer/hwasan/hwasan_dynamic_shadow.h
! 2d23dce5938d99923f83e2d93c15f07b  libsanitizer/hwasan/hwasan_exceptions.cpp
! 88a12cde40ae4429b0c9a2f128894e99  libsanitizer/hwasan/hwasan_flags.h
! 631ca201320c44e3e577206e7b7ee27e  libsanitizer/hwasan/hwasan_flags.inc
! 8b0d27d2990e7a5abefa41c4b95a0b6f  libsanitizer/hwasan/hwasan_globals.cpp
! 7050574c89f5706695578f62a6ead34e  libsanitizer/hwasan/hwasan_globals.h
! 67a6a7e6c6dddeeed46a0fa544f9e1f3  libsanitizer/hwasan/hwasan_interceptors.cpp
! e342ab75f732f28c79f631aca00b5013  libsanitizer/hwasan/hwasan_interceptors_vfork.S
! ccb82a33af1ed139388c973973c74c8e  libsanitizer/hwasan/hwasan_interface_internal.h
! 9aed6858728a8dad071db315e7319938  libsanitizer/hwasan/hwasan_linux.cpp
! 2ee3ae16d29b69720e9f2512908a45b5  libsanitizer/hwasan/hwasan_malloc_bisect.h
! ed70218d108ab3e3251b2f9a22d0d67b  libsanitizer/hwasan/hwasan_mapping.h
! efbdd779145141823082c48a4ad53c41  libsanitizer/hwasan/hwasan_memintrinsics.cpp
! aac0d87d95144a9ce8db025b95dc92ee  libsanitizer/hwasan/hwasan_new_delete.cpp
! c804d0ccb4271188b656229cb457efcb  libsanitizer/hwasan/hwasan_poisoning.cpp
! dbbf5a6219c3628eace17cf1d008c47a  libsanitizer/hwasan/hwasan_poisoning.h
! 4471f7ae84a8840ec7de94392467f8f7  libsanitizer/hwasan/hwasan_report.cpp
! b654d3bf43a1885c15c7c532f2b80593  libsanitizer/hwasan/hwasan_report.h
! 05e9b01c45a051d7c23f1a2fb36647f0  libsanitizer/hwasan/hwasan_setjmp.S
! 08ef6d0b3d26eb842b39d4b18007981f  libsanitizer/hwasan/hwasan_tag_mismatch_aarch64.S
! 17fae4a3e13b65d4b30bc49d7c0b4846  libsanitizer/hwasan/hwasan_thread.cpp
! 10a629cbb854905fbc283e9a6de688eb  libsanitizer/hwasan/hwasan_thread.h
! 8a277c2106a3322632345828ffd77237  libsanitizer/hwasan/hwasan_thread_list.cpp
! 61174c902f062d5420ad26a2d5cc11a1  libsanitizer/hwasan/hwasan_thread_list.h
! 27b02d0cf05eb6997418e27440efbaa9  libsanitizer/hwasan/hwasan_type_test.cpp
! c2d591f0e8a0a7d8a274ee310042f00c  libsanitizer/hwasan/libtool-version
  62164e6387eaa4f03566444e00018275  libsanitizer/include/sanitizer/allocator_interface.h
! d15385fa189a19d55a4dbab26ba7055b  libsanitizer/include/sanitizer/asan_interface.h
! 67fa207c563b03d0529149c3f2a9eccd  libsanitizer/include/sanitizer/common_interface_defs.h
  2473b60a7a21e100e8373bfe0d6b6aef  libsanitizer/include/sanitizer/coverage_interface.h
! 01b353fb748cf7fb72897f00d34922ce  libsanitizer/include/sanitizer/dfsan_interface.h
  b6b381c0cd9b86557889037633008dec  libsanitizer/include/sanitizer/hwasan_interface.h
! 32d69c8a8a4ee4a80e85f28148f58d53  libsanitizer/include/sanitizer/linux_syscall_hooks.h
  12eef8384005b7381e07c3fadcabbe1d  libsanitizer/include/sanitizer/lsan_interface.h
! dafda38ec4b5bf6106655b34f8d5998b  libsanitizer/include/sanitizer/memprof_interface.h
! 3a84e0f703152591b105e71397ff5b61  libsanitizer/include/sanitizer/msan_interface.h
! 8cfb31c202da51942d071d62333feafa  libsanitizer/include/sanitizer/netbsd_syscall_hooks.h
  0cd62c0e877b3674d128dc7d69440b19  libsanitizer/include/sanitizer/scudo_interface.h
! b8497d556c1eeff1ddc861e9ee7508b8  libsanitizer/include/sanitizer/tsan_interface.h
  c5941a599594f1b6244644c35900365a  libsanitizer/include/sanitizer/tsan_interface_atomic.h
  1d1427dc8a4b30396a8d300315cb10eb  libsanitizer/include/sanitizer/ubsan_interface.h
  c06732d7b90bf79a06f7aa44d08a1fbb  libsanitizer/include/system/asm/ptrace.h
*************** e0f26bb761d75b6aac187f2c8d755c0b  libsan
*** 90176,90389 ****
  52441feaf66ebf0ecf003bd66b0845a1  libsanitizer/include/system/linux/perf_event.h
  3de6060b4f9ff628820f60672dee5958  libsanitizer/include/system/linux/types.h
  177782c011eb97e4adc68bd2c39b6f84  libsanitizer/include/system/sys/ptrace.h
! 4d3e7842723cc36a328b17b5a8b05376  libsanitizer/interception/Makefile.am
! 7f2125b985dcda8e1f47610a111c43bb  libsanitizer/interception/Makefile.in
! ccacd267105879e10112e59f7bc4e213  libsanitizer/interception/interception.h
! 547a65c8531b6b608114f45b01d4bf27  libsanitizer/interception/interception_linux.cpp
! 24851c2d136420f64ee34bf9ed6fd2e4  libsanitizer/interception/interception_linux.h
  eb28a680879815dcce016978cbf38c79  libsanitizer/interception/interception_mac.cpp
  fece49ff778064e81bdfc6ad6b84b2b4  libsanitizer/interception/interception_mac.h
  ee840b8af091f87e1b1712cf360ddb50  libsanitizer/interception/interception_type_test.cpp
  613e3ac48bce41be6acc570d1e5c144c  libsanitizer/interception/interception_win.cpp
  d2397720fce56dc1634db6efb7d0eb22  libsanitizer/interception/interception_win.h
! 29f4b3c346703488edcbebd71265eb84  libsanitizer/libbacktrace/Makefile.am
! 3c778c473c094bcc86334e6d9db41483  libsanitizer/libbacktrace/Makefile.in
! a977c759646b5ac8e7e1ec279a92a404  libsanitizer/libbacktrace/backtrace-rename.h
  ea35b83ff2eb2bff286f2781693b0cc7  libsanitizer/libbacktrace/backtrace-supported.h.in
  35b2978dd28dbb4048032ad8db998f5c  libsanitizer/libbacktrace/bridge.cc
! 4b83707f75499a1070d0ad8757700b50  libsanitizer/libsanitizer.spec.in
! 1313d9c7e8702ad106921ba64c54e731  libsanitizer/lsan/Makefile.am
! 0fee295e87cee6cf892ac4cfcaf46037  libsanitizer/lsan/Makefile.in
  f2f51c768041ab63c956646fa5f7af5b  libsanitizer/lsan/libtool-version
! c434115ce9e4011d586344a1782637b5  libsanitizer/lsan/lsan.cpp
! 8af61385b6cb75b8740a3d4f87fedf18  libsanitizer/lsan/lsan.h
  6ecac87c2f9cd69f3228bc7ee4e86cb9  libsanitizer/lsan/lsan_allocator.cpp
! 07659ce8c0bdaa3a883768039760d5f0  libsanitizer/lsan/lsan_allocator.h
! 170242dfda226d986f10a13d2aea6575  libsanitizer/lsan/lsan_common.cpp
! b2eda54c5cafd2a5159fa8d2eca2a91b  libsanitizer/lsan/lsan_common.h
! a67889c8d2412e01c623b8cb2819e632  libsanitizer/lsan/lsan_common_linux.cpp
! 0c144139e3af1ddbb685a7c392ff26c1  libsanitizer/lsan/lsan_common_mac.cpp
  6af587085d16319361de6f118714b293  libsanitizer/lsan/lsan_flags.inc
! 984b7d237b75143891c3d41a6413c5a0  libsanitizer/lsan/lsan_interceptors.cpp
! 9f773bc94eb8b2d44b1c6b9241d082b8  libsanitizer/lsan/lsan_linux.cpp
  b02d5934dd8074a40824a4f503348bdc  libsanitizer/lsan/lsan_mac.cpp
  dfff917b961891644801b0380ed93384  libsanitizer/lsan/lsan_malloc_mac.cpp
  7d7a28d8f42ca368b3ffa1b674377b25  libsanitizer/lsan/lsan_preinit.cpp
! 7d1b5b64f457e980ec7c122cdc4d7e3d  libsanitizer/lsan/lsan_thread.cpp
! 25c64551c49154e60dc6a56046495ccc  libsanitizer/lsan/lsan_thread.h
! 706264015aec5ea818aca17ed2b54593  libsanitizer/merge.sh
! bc88ed53326796c08a473669a3e23953  libsanitizer/sanitizer_common/Makefile.am
! 567b42db335e6e619d2a83aebf2447cb  libsanitizer/sanitizer_common/Makefile.in
  d68aa097ee532430d26f11ec81234ed5  libsanitizer/sanitizer_common/sancov_flags.cpp
  1cee185b14a59f3bfc596ac9bf851f89  libsanitizer/sanitizer_common/sancov_flags.h
  a68d04c69558f46a8e18488b1baa260a  libsanitizer/sanitizer_common/sancov_flags.inc
  6123b794b0b7a8e32fcceb1ab85263c0  libsanitizer/sanitizer_common/sanitizer_addrhashmap.h
! c9c86fa75f63cfdafbf3b8c1d6133f63  libsanitizer/sanitizer_common/sanitizer_allocator.cpp
! fd634718cf6769c2c392b288a41af814  libsanitizer/sanitizer_common/sanitizer_allocator.h
  d2b4005593bbd33bab18f30a02442292  libsanitizer/sanitizer_common/sanitizer_allocator_bytemap.h
  58afe7ee0a8301bc2ee5e0495a5c3720  libsanitizer/sanitizer_common/sanitizer_allocator_checks.cpp
! e905f3f02128c1b806df330b5dc1a563  libsanitizer/sanitizer_common/sanitizer_allocator_checks.h
  d69cf99403562d2206fcfef6915f277c  libsanitizer/sanitizer_common/sanitizer_allocator_combined.h
  742b8a455904e57e1dc253cd94af8343  libsanitizer/sanitizer_common/sanitizer_allocator_interface.h
  239b2e57109dcb876b1522fa7d561e05  libsanitizer/sanitizer_common/sanitizer_allocator_internal.h
  a4d4ae7663608663ea43138c52235e09  libsanitizer/sanitizer_common/sanitizer_allocator_local_cache.h
! af6879c3d2e77968882dbd79750e42b1  libsanitizer/sanitizer_common/sanitizer_allocator_primary32.h
! cee863685ac02b43d06461e9ec56f89d  libsanitizer/sanitizer_common/sanitizer_allocator_primary64.h
! ea4681b3898bf65b62bff67df0a4cd16  libsanitizer/sanitizer_common/sanitizer_allocator_report.cpp
! 1052fda4d51a9f220409ec1ad9accd3a  libsanitizer/sanitizer_common/sanitizer_allocator_report.h
! 9fa0fe22c85282d87802eba05854bb0e  libsanitizer/sanitizer_common/sanitizer_allocator_secondary.h
  379630954de26a0d0e6f91e96035f372  libsanitizer/sanitizer_common/sanitizer_allocator_size_class_map.h
  a21ea81dbfc52981e1c446285eaf2981  libsanitizer/sanitizer_common/sanitizer_allocator_stats.h
  605a2893bb09405ed90588fa97e3663d  libsanitizer/sanitizer_common/sanitizer_asm.h
! 2227903f0a5ab8006d2f9546aeceac30  libsanitizer/sanitizer_common/sanitizer_atomic.h
! 0b8053bb07f5d6c6b92b253f67b9150f  libsanitizer/sanitizer_common/sanitizer_atomic_clang.h
! 620f116964a40b7f5e36dd61c77f7fde  libsanitizer/sanitizer_common/sanitizer_atomic_clang_mips.h
! f04ddc64cfeba88ad83603f5a30dfcad  libsanitizer/sanitizer_common/sanitizer_atomic_clang_other.h
! 688ab1a055ba6ebc1814c4cbc49e3161  libsanitizer/sanitizer_common/sanitizer_atomic_clang_x86.h
! 4a7f37d3b565c213fe851c4f3e0d33b6  libsanitizer/sanitizer_common/sanitizer_atomic_msvc.h
  f652b6a1b7460128cccd6c016c4828c6  libsanitizer/sanitizer_common/sanitizer_bitvector.h
  2c60255aaee6514e73b7c326d2edbc51  libsanitizer/sanitizer_common/sanitizer_bvgraph.h
! cb99c43b0c583e8a8ba1866782497653  libsanitizer/sanitizer_common/sanitizer_common.cpp
! c7dc2218df2ca81b648ada3c38723d1c  libsanitizer/sanitizer_common/sanitizer_common.h
! 6419dda19e4aa8a589434574e0416d00  libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
! 41c5a0a4c2f4f5dd93b441c75bb81713  libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc
  ac944c9b6034fc9af577b8a43562ddbd  libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
  35c1671edb836194de169cd01c5e0757  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S
  b4b4ed1f1a36cce44031fd0b4a1a141f  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_arm.inc.S
  6d1ff4bab107ed97a3e8eca57e12a3c7  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S
  a2d364a4f2335bbb464e9f03ece4a103  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S
  3403b50462f933580299f188870f146c  libsanitizer/sanitizer_common/sanitizer_common_interface.inc
  71dfbac2abdf5add380080b29aaf84c2  libsanitizer/sanitizer_common/sanitizer_common_interface_posix.inc
! ddfcd197b079098cb6b31e00d3f1bb6c  libsanitizer/sanitizer_common/sanitizer_common_libcdep.cpp
! 30fe4b3b7c9700f4e3ecad6d4ececfcf  libsanitizer/sanitizer_common/sanitizer_common_nolibc.cpp
! e0cb4fb6af54c9342a668288e4aed8bf  libsanitizer/sanitizer_common/sanitizer_common_syscalls.inc
! e4d5a514c009db1b8415d163d97a018a  libsanitizer/sanitizer_common/sanitizer_coverage_fuchsia.cpp
! 924f65a0fd3a03f0bd7024f445bc51ae  libsanitizer/sanitizer_common/sanitizer_coverage_interface.inc
! 10c6966862154ab4f701a91246a428fb  libsanitizer/sanitizer_common/sanitizer_coverage_libcdep_new.cpp
  f64c402c63e4fdccc3b91f46fa008563  libsanitizer/sanitizer_common/sanitizer_coverage_win_dll_thunk.cpp
  b23b66463d261a32c3e71eb67bdce1ea  libsanitizer/sanitizer_common/sanitizer_coverage_win_dynamic_runtime_thunk.cpp
  3f3a487b0f415ffaf2022c06c7e71af4  libsanitizer/sanitizer_common/sanitizer_coverage_win_sections.cpp
  ed3ef2b479c7d2116591b6f628dbce45  libsanitizer/sanitizer_common/sanitizer_coverage_win_weak_interception.cpp
  c24845d0d3c29b56170aa71091426359  libsanitizer/sanitizer_common/sanitizer_dbghelp.h
  3d4bef29c7db4991f9e249a02d52bdec  libsanitizer/sanitizer_common/sanitizer_deadlock_detector.h
! af861bdcb3160f566132a294b099412f  libsanitizer/sanitizer_common/sanitizer_deadlock_detector1.cpp
! ae9299d0a57e79b3791809edee424757  libsanitizer/sanitizer_common/sanitizer_deadlock_detector2.cpp
! 1f67b71b4b65098040cf9cb408f16e95  libsanitizer/sanitizer_common/sanitizer_deadlock_detector_interface.h
  dd71222889a46d09229b51c9a128a5aa  libsanitizer/sanitizer_common/sanitizer_errno.cpp
! b474d46884f8c6f9c891f123709134fa  libsanitizer/sanitizer_common/sanitizer_errno.h
! b801a127b2bb144f010b67509c601659  libsanitizer/sanitizer_common/sanitizer_errno_codes.h
! 980b145edb3104fa74e1c011a38697af  libsanitizer/sanitizer_common/sanitizer_file.cpp
! c27f1df8a29876962344de0c2338bd89  libsanitizer/sanitizer_common/sanitizer_file.h
! 1fe8a35dc178690612a47fe04b4be0fc  libsanitizer/sanitizer_common/sanitizer_flag_parser.cpp
! 1c9257f301e6406a70f0a56deec4489e  libsanitizer/sanitizer_common/sanitizer_flag_parser.h
! 6a83775b72f2315f970d9aa06ccc8ac1  libsanitizer/sanitizer_common/sanitizer_flags.cpp
! 7394eda2d8fc4f38e81673eec2f6dad8  libsanitizer/sanitizer_common/sanitizer_flags.h
! 730f12787cfbd337bf97eaeec5250347  libsanitizer/sanitizer_common/sanitizer_flags.inc
! 450776f4aa6bd46ca67b9c2b16ee4006  libsanitizer/sanitizer_common/sanitizer_freebsd.h
! cebfc9f2f8481ea071665fa2750c514b  libsanitizer/sanitizer_common/sanitizer_fuchsia.cpp
! 67a74f2558cba0f8bf63c92800bb8cde  libsanitizer/sanitizer_common/sanitizer_fuchsia.h
! bb4356c3286fe3e00b4930652bf495d6  libsanitizer/sanitizer_common/sanitizer_getauxval.h
  f06be5c69a658d7ac5ebea616ebb001a  libsanitizer/sanitizer_common/sanitizer_glibc_version.h
  5f4fe0d6b6354aae18a1cfcbeb1d2573  libsanitizer/sanitizer_common/sanitizer_hash.h
! d6908415c63aba9e557fcacbff461d9b  libsanitizer/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc
! eed0d518978168e6b400bc52dd72f0f8  libsanitizer/sanitizer_common/sanitizer_interface_internal.h
! a58b66f77401817f3fbefc057972f2c2  libsanitizer/sanitizer_common/sanitizer_internal_defs.h
  5da7cbe05015b8a52342cd8a74fb0ad2  libsanitizer/sanitizer_common/sanitizer_lfstack.h
  5971aab85335beb4f8ec1f37f6ec3e3f  libsanitizer/sanitizer_common/sanitizer_libc.cpp
! 2c766f3ac697b2c72f3deda4282dc692  libsanitizer/sanitizer_common/sanitizer_libc.h
! be27216b0433f97b8e2267da04e648ad  libsanitizer/sanitizer_common/sanitizer_libignore.cpp
  85b7de59b8c28ea298343b8a275f5943  libsanitizer/sanitizer_common/sanitizer_libignore.h
! 51b260a51395ae6686ecb148d5da7bf3  libsanitizer/sanitizer_common/sanitizer_linux.cpp
! e9563a01104e26ad607a73bc8361b183  libsanitizer/sanitizer_common/sanitizer_linux.h
! 803409115f79f8ba748a983f4cf3ef7b  libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
! 5834489d2d995652df6c440be4b36cab  libsanitizer/sanitizer_common/sanitizer_linux_s390.cpp
  51d4c37472c1c2c6010e5d1eb5bf340f  libsanitizer/sanitizer_common/sanitizer_list.h
  d0b45512a07eac4f507b3b0f49965980  libsanitizer/sanitizer_common/sanitizer_local_address_space_view.h
! 2d4c03ea509758c3dd7ebc8b8eacf11f  libsanitizer/sanitizer_common/sanitizer_mac.cpp
! f8396a48c98e7f46020c693f0f08b6a6  libsanitizer/sanitizer_common/sanitizer_mac.h
  9195d6bb30ce9845c5ecc617d3ccf7a2  libsanitizer/sanitizer_common/sanitizer_mac_libcdep.cpp
! beb0355a1d5f4c9e2666ad508bb8a3b4  libsanitizer/sanitizer_common/sanitizer_malloc_mac.inc
  c868e09e86d58bc45378287c5c44c316  libsanitizer/sanitizer_common/sanitizer_mutex.h
! 27311647a3556a85f29f2e118c53b713  libsanitizer/sanitizer_common/sanitizer_netbsd.cpp
! 72d8d91018285337d030a713aea30149  libsanitizer/sanitizer_common/sanitizer_openbsd.cpp
  696718e3b23e865cae08f0236c603e50  libsanitizer/sanitizer_common/sanitizer_persistent_allocator.cpp
  cdba436682d2c05dd25c8e0c3e611a14  libsanitizer/sanitizer_common/sanitizer_persistent_allocator.h
  b9966b23ae76d3ec9290c4a5e8c3d94c  libsanitizer/sanitizer_common/sanitizer_placement_new.h
! 9a865f2afb6b7570494ffa205784ddcc  libsanitizer/sanitizer_common/sanitizer_platform.h
! d2bf2d24145b87281fed9790d72e64fb  libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
! 16e3b2fe39179a5fed3e1bfa13c3f3cb  libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.cpp
! 8480ac530e4d0f25467466988d21af48  libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.h
  719d41ca1e8b246ea668a5da852e43fe  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cpp
! 202ed5a79e657c49588a95acb7fe8ba7  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.cpp
! 8b4031e08b6385eb303cbeea8d39acfe  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h
! 8000711a00d2894dbf4e5b23932e4241  libsanitizer/sanitizer_common/sanitizer_platform_limits_openbsd.cpp
! 9d9e2ca7e7d8ece7182fbd83d5df0b42  libsanitizer/sanitizer_common/sanitizer_platform_limits_openbsd.h
! afbd369b59c71b2be448bd4c4461b0f5  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
! 92d58a28684a004a6d6f217d08dfc216  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
! 3ee58b1ba29dcc881e4bb98f0b8f8b16  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp
! 65580ad77115e59c2e7c3343384d5991  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.h
! 262b50384f8cd72c2df5737945de60f3  libsanitizer/sanitizer_common/sanitizer_posix.cpp
! 424ee56faf38d3f5a264ac53cdfcec75  libsanitizer/sanitizer_common/sanitizer_posix.h
! 875d6537796bafb713b1343aa0e76db0  libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp
  0e291c4a21a07dfe2ca6a59095a82c61  libsanitizer/sanitizer_common/sanitizer_printf.cpp
! ebc718bd9bde507cee73def20e9c43f1  libsanitizer/sanitizer_common/sanitizer_procmaps.h
! e8f4313e91204916fd4fe297342de804  libsanitizer/sanitizer_common/sanitizer_procmaps_bsd.cpp
! c3364b6f18219a4a44be176619bf8a3d  libsanitizer/sanitizer_common/sanitizer_procmaps_common.cpp
  cac752f7b42df7a26fc91e0aadc8aa36  libsanitizer/sanitizer_common/sanitizer_procmaps_linux.cpp
  b9719fe47fcd7dba224d7fc88eb1da99  libsanitizer/sanitizer_common/sanitizer_procmaps_mac.cpp
! 7d093b327a9fc1fe241511c06c4a8194  libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp
  fc7370f5a826d8e20cb887e540ef593b  libsanitizer/sanitizer_common/sanitizer_quarantine.h
  790117d4c85c98c499151ad830f99a49  libsanitizer/sanitizer_common/sanitizer_report_decorator.h
  b83c750f7315e3e874aea656d760be62  libsanitizer/sanitizer_common/sanitizer_ring_buffer.h
! b66f81c3fc2a0c22d5efd708f6a7e8a9  libsanitizer/sanitizer_common/sanitizer_rtems.cpp
  2fa71eb71b2224dc69ba605af7fea5ce  libsanitizer/sanitizer_common/sanitizer_rtems.h
! 56d0e4dfb1fe33f05b9e97eb477fd72e  libsanitizer/sanitizer_common/sanitizer_signal_interceptors.inc
! cab9f540a809a4ca3f800460e857f3a9  libsanitizer/sanitizer_common/sanitizer_solaris.cpp
! d0bb49c352f8dbbf2a17233675db6b64  libsanitizer/sanitizer_common/sanitizer_stackdepot.cpp
! c6f1e85a88ce48694d4d0a3d59c01b99  libsanitizer/sanitizer_common/sanitizer_stackdepot.h
! f871a3b35387527ef814cc04bdde1a52  libsanitizer/sanitizer_common/sanitizer_stackdepotbase.h
! 7e2e4ed638e7242aaad41a5cc16cf754  libsanitizer/sanitizer_common/sanitizer_stacktrace.cpp
! 95408e991d4e15a4bc49c8d72d21447f  libsanitizer/sanitizer_common/sanitizer_stacktrace.h
! 2427c8a792c51a506bcf3834cfc7e5a8  libsanitizer/sanitizer_common/sanitizer_stacktrace_libcdep.cpp
! d7cd4e48407afe28f045274878eb8c75  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.cpp
! 094eba930abf60522c11913e4c55da5a  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.h
  670b449e6111903f6d125a767fa0dcdc  libsanitizer/sanitizer_common/sanitizer_stacktrace_sparc.cpp
! 473196a3c00328d96f27299f1f47e745  libsanitizer/sanitizer_common/sanitizer_stoptheworld.h
! 6ab7876e7d4bda26b168558cc572ba00  libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp
! 51320af3d0a5b70de803dc7f25fa7c0b  libsanitizer/sanitizer_common/sanitizer_stoptheworld_mac.cpp
! 0ddf100174e698fede4304bff9c50a6c  libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp
  eb39444af2185c26905e505a935da3dc  libsanitizer/sanitizer_common/sanitizer_suppressions.cpp
  6dc05d23b94fb4783618dcd3cd4b1c9f  libsanitizer/sanitizer_common/sanitizer_suppressions.h
! 5259fd597d8b1045c2f960de9eaf0e16  libsanitizer/sanitizer_common/sanitizer_symbolizer.cpp
! 758807d505f58976443d92db0361b8f1  libsanitizer/sanitizer_common/sanitizer_symbolizer.h
  12fcc306e0ffc32a224b785eaec125a8  libsanitizer/sanitizer_common/sanitizer_symbolizer_fuchsia.h
! 094c29b6c0b0664b4fe8a32cf2819955  libsanitizer/sanitizer_common/sanitizer_symbolizer_internal.h
  bb131db68f565eae8a9dc5516f29326e  libsanitizer/sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp
! 41f9d52c951a443699a01bc72265d0b1  libsanitizer/sanitizer_common/sanitizer_symbolizer_libbacktrace.h
! 3c1fc8bbf018c6bdc4027fb54940fe2e  libsanitizer/sanitizer_common/sanitizer_symbolizer_libcdep.cpp
! b51c90cf9c6084d088aa7bf5ebc23e91  libsanitizer/sanitizer_common/sanitizer_symbolizer_mac.cpp
! 4b4bd47628bcf39802227873e435acc0  libsanitizer/sanitizer_common/sanitizer_symbolizer_mac.h
! 1a0bc7d940fe3e115881f4a4386f277c  libsanitizer/sanitizer_common/sanitizer_symbolizer_markup.cpp
! b04220480b7ab744c11f3c0a87b6b878  libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp
! 48595a3f7cde2cc222c263161512ddc8  libsanitizer/sanitizer_common/sanitizer_symbolizer_report.cpp
  bf1f33d4411f0b874ee25e8e906c3325  libsanitizer/sanitizer_common/sanitizer_symbolizer_rtems.h
! 40a5d1e5b1ac366a804720c07f1dfa04  libsanitizer/sanitizer_common/sanitizer_symbolizer_win.cpp
! efebc0b3a7e72e3f86d66f54d4fa952b  libsanitizer/sanitizer_common/sanitizer_syscall_generic.inc
  9546e0a896837e1fc30d0f1421f2b220  libsanitizer/sanitizer_common/sanitizer_syscall_linux_aarch64.inc
  0711f1c23e48efd357f77c0be4ab551c  libsanitizer/sanitizer_common/sanitizer_syscall_linux_arm.inc
  e5a40190912f9655e972ed0025bf35f3  libsanitizer/sanitizer_common/sanitizer_syscall_linux_x86_64.inc
! a6987d5a76ec64f0a32b5d5a56cc6a19  libsanitizer/sanitizer_common/sanitizer_syscalls_netbsd.inc
  59c4265dc5b17f42ad6d52e4f044a691  libsanitizer/sanitizer_common/sanitizer_termination.cpp
  1027484259ada5e402d64308fdd8512b  libsanitizer/sanitizer_common/sanitizer_thread_registry.cpp
! cdd92cf9d817c0f55d24caba96ff2c31  libsanitizer/sanitizer_common/sanitizer_thread_registry.h
! 738026c7ae6ce340364ebfd6228f49ca  libsanitizer/sanitizer_common/sanitizer_tls_get_addr.cpp
  b8c609acff6402e7c8d1742ad1fcea1b  libsanitizer/sanitizer_common/sanitizer_tls_get_addr.h
  daf0a3ec50a14c09b41741865f11e807  libsanitizer/sanitizer_common/sanitizer_type_traits.cpp
  a951fc08e5b53c0d76a6a477883ad964  libsanitizer/sanitizer_common/sanitizer_type_traits.h
  e3cbe959db25a033713c3bba86c68b9e  libsanitizer/sanitizer_common/sanitizer_unwind_linux_libcdep.cpp
! 61f34c1e50dde1bff724839b0c6a887f  libsanitizer/sanitizer_common/sanitizer_unwind_win.cpp
  8d76e69157ad8d7f8c665105cb1b9358  libsanitizer/sanitizer_common/sanitizer_vector.h
! f8b642630f6c23ef8bd180fa3496300e  libsanitizer/sanitizer_common/sanitizer_win.cpp
  ca31c361d0d8cc286a9c2a79da57a3ed  libsanitizer/sanitizer_common/sanitizer_win.h
  3a867f4ebec3e726e51526c82c85c978  libsanitizer/sanitizer_common/sanitizer_win_defs.h
  192408cb784e2738287506aefa3d586d  libsanitizer/sanitizer_common/sanitizer_win_dll_thunk.cpp
--- 96405,96630 ----
  52441feaf66ebf0ecf003bd66b0845a1  libsanitizer/include/system/linux/perf_event.h
  3de6060b4f9ff628820f60672dee5958  libsanitizer/include/system/linux/types.h
  177782c011eb97e4adc68bd2c39b6f84  libsanitizer/include/system/sys/ptrace.h
! 8f1bdadc9e93122c6df478bd1da061cd  libsanitizer/interception/Makefile.am
! b718e59dd1fded8100567fe56a7d4b44  libsanitizer/interception/Makefile.in
! e8b2f35d1d64cd4a827734af05650934  libsanitizer/interception/interception.h
! 74205e1673dbdc65c0674dd496a1e1ef  libsanitizer/interception/interception_linux.cpp
! 2eafdf3a12ed7bc09921982c68be3286  libsanitizer/interception/interception_linux.h
  eb28a680879815dcce016978cbf38c79  libsanitizer/interception/interception_mac.cpp
  fece49ff778064e81bdfc6ad6b84b2b4  libsanitizer/interception/interception_mac.h
  ee840b8af091f87e1b1712cf360ddb50  libsanitizer/interception/interception_type_test.cpp
  613e3ac48bce41be6acc570d1e5c144c  libsanitizer/interception/interception_win.cpp
  d2397720fce56dc1634db6efb7d0eb22  libsanitizer/interception/interception_win.h
! cb37bab881f5414c69f9d3269d4aabfe  libsanitizer/libbacktrace/Makefile.am
! 922cb7a224e041442df5c82093f3b681  libsanitizer/libbacktrace/Makefile.in
! a998136ffc66ed3a32f65097fb86ec05  libsanitizer/libbacktrace/backtrace-rename.h
  ea35b83ff2eb2bff286f2781693b0cc7  libsanitizer/libbacktrace/backtrace-supported.h.in
  35b2978dd28dbb4048032ad8db998f5c  libsanitizer/libbacktrace/bridge.cc
! afbb83670aebea5034bc386604a01397  libsanitizer/libsanitizer.spec.in
! c4136e6e8ea505237b12759509ab4c2b  libsanitizer/lsan/Makefile.am
! 52171960b1dd2c1d6ce3ea28cb5909bd  libsanitizer/lsan/Makefile.in
  f2f51c768041ab63c956646fa5f7af5b  libsanitizer/lsan/libtool-version
! 8212b5c8ace8dd0aa2862af4f6254ede  libsanitizer/lsan/lsan.cpp
! 57ec7ec9a0cc945ab4171610d016f526  libsanitizer/lsan/lsan.h
  6ecac87c2f9cd69f3228bc7ee4e86cb9  libsanitizer/lsan/lsan_allocator.cpp
! 9c04ba0c9b2eaccfc9b767db73550e34  libsanitizer/lsan/lsan_allocator.h
! 4ac43c065f767c2816c97796160fe979  libsanitizer/lsan/lsan_common.cpp
! 4613ad4296960cd15c1d92590906413c  libsanitizer/lsan/lsan_common.h
! 29a76725191c2e6c8be6ab53fa0a684b  libsanitizer/lsan/lsan_common_fuchsia.cpp
! 9b73d8a46a2371dd701e44646d18b37f  libsanitizer/lsan/lsan_common_linux.cpp
! e26831f9ce663d7fe7fa2a1731e20930  libsanitizer/lsan/lsan_common_mac.cpp
  6af587085d16319361de6f118714b293  libsanitizer/lsan/lsan_flags.inc
! e6a6122aacae53ce58e1e1580dafd6ff  libsanitizer/lsan/lsan_fuchsia.cpp
! b1405b2af5d96d313f8364c5af519be5  libsanitizer/lsan/lsan_fuchsia.h
! 264703701bad62012620d9954f125b4e  libsanitizer/lsan/lsan_interceptors.cpp
! 112de5191cba37114a27b3c851b03637  libsanitizer/lsan/lsan_linux.cpp
  b02d5934dd8074a40824a4f503348bdc  libsanitizer/lsan/lsan_mac.cpp
  dfff917b961891644801b0380ed93384  libsanitizer/lsan/lsan_malloc_mac.cpp
+ 5dbc6024a04d620b5d464635c0c98aee  libsanitizer/lsan/lsan_posix.cpp
+ 2d218702383904dd6ba0cbb97b0bfd82  libsanitizer/lsan/lsan_posix.h
  7d7a28d8f42ca368b3ffa1b674377b25  libsanitizer/lsan/lsan_preinit.cpp
! f905c006d315ddb1b29393bad2917557  libsanitizer/lsan/lsan_thread.cpp
! 2552ec2134fe8c89a703e18b6216eaa2  libsanitizer/lsan/lsan_thread.h
! 2f9987fde4c23efc1b95546e481fff85  libsanitizer/merge.sh
! e50e2249541db27cd30444f1c509d37c  libsanitizer/sanitizer_common/Makefile.am
! 283df6d30726fe2197f806a950ddb770  libsanitizer/sanitizer_common/Makefile.in
  d68aa097ee532430d26f11ec81234ed5  libsanitizer/sanitizer_common/sancov_flags.cpp
  1cee185b14a59f3bfc596ac9bf851f89  libsanitizer/sanitizer_common/sancov_flags.h
  a68d04c69558f46a8e18488b1baa260a  libsanitizer/sanitizer_common/sancov_flags.inc
  6123b794b0b7a8e32fcceb1ab85263c0  libsanitizer/sanitizer_common/sanitizer_addrhashmap.h
! 3cc5bb5117d28744346d33e455f2ca32  libsanitizer/sanitizer_common/sanitizer_allocator.cpp
! 7299be72860678b792a48a98c7f47054  libsanitizer/sanitizer_common/sanitizer_allocator.h
  d2b4005593bbd33bab18f30a02442292  libsanitizer/sanitizer_common/sanitizer_allocator_bytemap.h
  58afe7ee0a8301bc2ee5e0495a5c3720  libsanitizer/sanitizer_common/sanitizer_allocator_checks.cpp
! 4ee074df007bb212ba0e23ec75009eca  libsanitizer/sanitizer_common/sanitizer_allocator_checks.h
  d69cf99403562d2206fcfef6915f277c  libsanitizer/sanitizer_common/sanitizer_allocator_combined.h
  742b8a455904e57e1dc253cd94af8343  libsanitizer/sanitizer_common/sanitizer_allocator_interface.h
  239b2e57109dcb876b1522fa7d561e05  libsanitizer/sanitizer_common/sanitizer_allocator_internal.h
  a4d4ae7663608663ea43138c52235e09  libsanitizer/sanitizer_common/sanitizer_allocator_local_cache.h
! c9e4bac921f22bab61497ee61ae2c06a  libsanitizer/sanitizer_common/sanitizer_allocator_primary32.h
! 72e37513966cdf006f4a8073c59827a2  libsanitizer/sanitizer_common/sanitizer_allocator_primary64.h
! 1f6d1b3f6f13be09e010540c91a420ff  libsanitizer/sanitizer_common/sanitizer_allocator_report.cpp
! 5fca989318db3c792dfeea2a7a028c24  libsanitizer/sanitizer_common/sanitizer_allocator_report.h
! b7c066f10e6606476ba670fd678e0a77  libsanitizer/sanitizer_common/sanitizer_allocator_secondary.h
  379630954de26a0d0e6f91e96035f372  libsanitizer/sanitizer_common/sanitizer_allocator_size_class_map.h
  a21ea81dbfc52981e1c446285eaf2981  libsanitizer/sanitizer_common/sanitizer_allocator_stats.h
  605a2893bb09405ed90588fa97e3663d  libsanitizer/sanitizer_common/sanitizer_asm.h
! 998bded7a554ef1499c0f9da7137fc8a  libsanitizer/sanitizer_common/sanitizer_atomic.h
! 3bf5070c74e1aecc4b00c5970aeb17c6  libsanitizer/sanitizer_common/sanitizer_atomic_clang.h
! bd0755e5d9a78e591a2c14b0a691088d  libsanitizer/sanitizer_common/sanitizer_atomic_clang_mips.h
! 3686782bec0fb0a981c075ff25565e74  libsanitizer/sanitizer_common/sanitizer_atomic_clang_other.h
! 53ca180c9d422d41817722cfdb7f6264  libsanitizer/sanitizer_common/sanitizer_atomic_clang_x86.h
! a086d2b579c91b2576f9c35c798b8b04  libsanitizer/sanitizer_common/sanitizer_atomic_msvc.h
  f652b6a1b7460128cccd6c016c4828c6  libsanitizer/sanitizer_common/sanitizer_bitvector.h
  2c60255aaee6514e73b7c326d2edbc51  libsanitizer/sanitizer_common/sanitizer_bvgraph.h
! 37fda67c0a241a3c958f663809161b55  libsanitizer/sanitizer_common/sanitizer_common.cpp
! 461795fb04c2da6f64a772dc73004848  libsanitizer/sanitizer_common/sanitizer_common.h
! 3e1b7cb099ea699efdb4e91adfca7aaa  libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
! 2f7d47202e9f6d50e6445e0a3c457a8d  libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc
  ac944c9b6034fc9af577b8a43562ddbd  libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
+ 1a5adf613af41f9e4cc538f5d6e9bc59  libsanitizer/sanitizer_common/sanitizer_common_interceptors_netbsd_compat.inc
  35c1671edb836194de169cd01c5e0757  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S
  b4b4ed1f1a36cce44031fd0b4a1a141f  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_arm.inc.S
  6d1ff4bab107ed97a3e8eca57e12a3c7  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S
+ 558231bbaa4fc2b256a4cf0851a6bd0b  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_riscv64.inc.S
  a2d364a4f2335bbb464e9f03ece4a103  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S
  3403b50462f933580299f188870f146c  libsanitizer/sanitizer_common/sanitizer_common_interface.inc
  71dfbac2abdf5add380080b29aaf84c2  libsanitizer/sanitizer_common/sanitizer_common_interface_posix.inc
! 2db013e95c8d1e0bd546e36c7b807236  libsanitizer/sanitizer_common/sanitizer_common_libcdep.cpp
! dd89766d44d316a7ed5dc09829d3a612  libsanitizer/sanitizer_common/sanitizer_common_nolibc.cpp
! 39f0f93b74b051a34a6ac19987339b74  libsanitizer/sanitizer_common/sanitizer_common_syscalls.inc
! a1a40838ea1b9a5d29ce4248acd0e4af  libsanitizer/sanitizer_common/sanitizer_coverage_fuchsia.cpp
! fa4ab1b80686df69edafddefaf9111f2  libsanitizer/sanitizer_common/sanitizer_coverage_interface.inc
! 85a4f76b336bf5f5c730e14e7c4f3645  libsanitizer/sanitizer_common/sanitizer_coverage_libcdep_new.cpp
  f64c402c63e4fdccc3b91f46fa008563  libsanitizer/sanitizer_common/sanitizer_coverage_win_dll_thunk.cpp
  b23b66463d261a32c3e71eb67bdce1ea  libsanitizer/sanitizer_common/sanitizer_coverage_win_dynamic_runtime_thunk.cpp
  3f3a487b0f415ffaf2022c06c7e71af4  libsanitizer/sanitizer_common/sanitizer_coverage_win_sections.cpp
  ed3ef2b479c7d2116591b6f628dbce45  libsanitizer/sanitizer_common/sanitizer_coverage_win_weak_interception.cpp
  c24845d0d3c29b56170aa71091426359  libsanitizer/sanitizer_common/sanitizer_dbghelp.h
  3d4bef29c7db4991f9e249a02d52bdec  libsanitizer/sanitizer_common/sanitizer_deadlock_detector.h
! 3375eabf5db48f245798ab91e6262ab6  libsanitizer/sanitizer_common/sanitizer_deadlock_detector1.cpp
! 31546c3def6d80a9c24960a47502bc25  libsanitizer/sanitizer_common/sanitizer_deadlock_detector2.cpp
! 714375c2f0080364d3f9636fb365cb50  libsanitizer/sanitizer_common/sanitizer_deadlock_detector_interface.h
  dd71222889a46d09229b51c9a128a5aa  libsanitizer/sanitizer_common/sanitizer_errno.cpp
! f01d49004b9f4b111e1f255149dd726e  libsanitizer/sanitizer_common/sanitizer_errno.h
! 569eef7f7a96f68658eb85aec7bd4bef  libsanitizer/sanitizer_common/sanitizer_errno_codes.h
! a3d6962149aebd140a99a33879461133  libsanitizer/sanitizer_common/sanitizer_file.cpp
! e40b71404b0ff7dd2fc45e15933f357e  libsanitizer/sanitizer_common/sanitizer_file.h
! 603de04d166f3a49fa913a548ec80c21  libsanitizer/sanitizer_common/sanitizer_flag_parser.cpp
! a1cb25b30a7bf8a637161ecad7a66640  libsanitizer/sanitizer_common/sanitizer_flag_parser.h
! 3a7768a048aef85c7c717fd7cb2bffff  libsanitizer/sanitizer_common/sanitizer_flags.cpp
! 50b07ed067f181e6df763aa0940acec1  libsanitizer/sanitizer_common/sanitizer_flags.h
! 9824734f05d90c553980db5a57e221df  libsanitizer/sanitizer_common/sanitizer_flags.inc
! 3f779f66885b3027cad2a2af88a8a2f5  libsanitizer/sanitizer_common/sanitizer_freebsd.h
! 983a576cd3a2d0addf30751287a15300  libsanitizer/sanitizer_common/sanitizer_fuchsia.cpp
! 1a0e3555f149432989644866f738273a  libsanitizer/sanitizer_common/sanitizer_fuchsia.h
! 1d8e62bbd8a595f6e44228e1dc7cbcd8  libsanitizer/sanitizer_common/sanitizer_getauxval.h
  f06be5c69a658d7ac5ebea616ebb001a  libsanitizer/sanitizer_common/sanitizer_glibc_version.h
  5f4fe0d6b6354aae18a1cfcbeb1d2573  libsanitizer/sanitizer_common/sanitizer_hash.h
! 9a961d39984bfd2ce3ceb3ff41058df4  libsanitizer/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc
! 9a4901a8406dcbd5200a7d5be9057978  libsanitizer/sanitizer_common/sanitizer_interface_internal.h
! 19d5dbdb889e123283b6bb4b5d342df5  libsanitizer/sanitizer_common/sanitizer_internal_defs.h
  5da7cbe05015b8a52342cd8a74fb0ad2  libsanitizer/sanitizer_common/sanitizer_lfstack.h
  5971aab85335beb4f8ec1f37f6ec3e3f  libsanitizer/sanitizer_common/sanitizer_libc.cpp
! c61e68a25de38caf21a83188e6cd3818  libsanitizer/sanitizer_common/sanitizer_libc.h
! f7495cea9a190ee4681052e06fa592b9  libsanitizer/sanitizer_common/sanitizer_libignore.cpp
  85b7de59b8c28ea298343b8a275f5943  libsanitizer/sanitizer_common/sanitizer_libignore.h
! 0ac9b5cf58824c5415a136be43a4cff7  libsanitizer/sanitizer_common/sanitizer_linux.cpp
! f84c1d5d99c579ab2feefa9c9feb0af0  libsanitizer/sanitizer_common/sanitizer_linux.h
! 25e66ce58b987c77b295b7f4d4cae447  libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
! 4c8636023e3eed320e3692dda7e88e1d  libsanitizer/sanitizer_common/sanitizer_linux_s390.cpp
  51d4c37472c1c2c6010e5d1eb5bf340f  libsanitizer/sanitizer_common/sanitizer_list.h
  d0b45512a07eac4f507b3b0f49965980  libsanitizer/sanitizer_common/sanitizer_local_address_space_view.h
! bbf9ffd9f009fe829fa0a64127885ebc  libsanitizer/sanitizer_common/sanitizer_mac.cpp
! 4035667225233503e07c2b73d3fd97ae  libsanitizer/sanitizer_common/sanitizer_mac.h
  9195d6bb30ce9845c5ecc617d3ccf7a2  libsanitizer/sanitizer_common/sanitizer_mac_libcdep.cpp
! 66161e6c5f3a0cd78dd80ed26b8bc9fe  libsanitizer/sanitizer_common/sanitizer_malloc_mac.inc
  c868e09e86d58bc45378287c5c44c316  libsanitizer/sanitizer_common/sanitizer_mutex.h
! f6cbfda6f1b7d7c7ee77b5d6cc554185  libsanitizer/sanitizer_common/sanitizer_netbsd.cpp
! d41d8cd98f00b204e9800998ecf8427e  libsanitizer/sanitizer_common/sanitizer_openbsd.cpp
  696718e3b23e865cae08f0236c603e50  libsanitizer/sanitizer_common/sanitizer_persistent_allocator.cpp
  cdba436682d2c05dd25c8e0c3e611a14  libsanitizer/sanitizer_common/sanitizer_persistent_allocator.h
  b9966b23ae76d3ec9290c4a5e8c3d94c  libsanitizer/sanitizer_common/sanitizer_placement_new.h
! 459766877eb5895abed058d936693d0b  libsanitizer/sanitizer_common/sanitizer_platform.h
! a6690bc47fe2522c2f62aba9ec072074  libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
! 4e7d9d83a9b74f304cdfb186c925d633  libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.cpp
! 7705c8e11c0aafaeb922a586edda5c26  libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.h
  719d41ca1e8b246ea668a5da852e43fe  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cpp
! dfd8ca61572d533c9a5fef9d44521a89  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.cpp
! 51a6933c53085e75485e4b4c59f1e3e2  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h
! d41d8cd98f00b204e9800998ecf8427e  libsanitizer/sanitizer_common/sanitizer_platform_limits_openbsd.cpp
! d41d8cd98f00b204e9800998ecf8427e  libsanitizer/sanitizer_common/sanitizer_platform_limits_openbsd.h
! 45cac31d4f4d128ac11fa0a72d7a00da  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
! 7946f9448fefe791876eaa38faa83bd7  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
! 6a600fe0b2f737602ab53034aaeaf443  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp
! 7e240cd8f027b06b432493422a3ffc45  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.h
! 4ede10fee7725e1477a63ed897d3ee60  libsanitizer/sanitizer_common/sanitizer_posix.cpp
! 9d0b05768da256e8f92b97fda2deb252  libsanitizer/sanitizer_common/sanitizer_posix.h
! a5920e3a2fd79f67ffd1367e5bb37a2c  libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp
  0e291c4a21a07dfe2ca6a59095a82c61  libsanitizer/sanitizer_common/sanitizer_printf.cpp
! d323176e3cc5255a315f5b1eeba97067  libsanitizer/sanitizer_common/sanitizer_procmaps.h
! 9f49c09176556fe4c5863604acaa373e  libsanitizer/sanitizer_common/sanitizer_procmaps_bsd.cpp
! af53b891a8a2f66f1930a5671dea7dc7  libsanitizer/sanitizer_common/sanitizer_procmaps_common.cpp
! 359d6e04536b11f84ee64fcc65fceff5  libsanitizer/sanitizer_common/sanitizer_procmaps_fuchsia.cpp
  cac752f7b42df7a26fc91e0aadc8aa36  libsanitizer/sanitizer_common/sanitizer_procmaps_linux.cpp
  b9719fe47fcd7dba224d7fc88eb1da99  libsanitizer/sanitizer_common/sanitizer_procmaps_mac.cpp
! 8f37049b0c572e25e5497796eb8f924b  libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp
! c9937d34e01561a1dad54b76931a5fdf  libsanitizer/sanitizer_common/sanitizer_ptrauth.h
  fc7370f5a826d8e20cb887e540ef593b  libsanitizer/sanitizer_common/sanitizer_quarantine.h
  790117d4c85c98c499151ad830f99a49  libsanitizer/sanitizer_common/sanitizer_report_decorator.h
  b83c750f7315e3e874aea656d760be62  libsanitizer/sanitizer_common/sanitizer_ring_buffer.h
! 6a7070228fa1edbe54635120da5485c1  libsanitizer/sanitizer_common/sanitizer_rtems.cpp
  2fa71eb71b2224dc69ba605af7fea5ce  libsanitizer/sanitizer_common/sanitizer_rtems.h
! d59f677c5a0e62a67f876840b8f56c8a  libsanitizer/sanitizer_common/sanitizer_signal_interceptors.inc
! 4a6942a20d64097418de985a12dbc548  libsanitizer/sanitizer_common/sanitizer_solaris.cpp
! 9bd8a9750d54e4ea412c8539b00706d0  libsanitizer/sanitizer_common/sanitizer_stackdepot.cpp
! b63e24b68004db3bdae2e31e443fe521  libsanitizer/sanitizer_common/sanitizer_stackdepot.h
! fd5135ec27f75815425f2b7bcc0c6559  libsanitizer/sanitizer_common/sanitizer_stackdepotbase.h
! 460c8082fec58bc00337634ea7efa6fb  libsanitizer/sanitizer_common/sanitizer_stacktrace.cpp
! 6c32eec16a975213f5aaad74da48558d  libsanitizer/sanitizer_common/sanitizer_stacktrace.h
! 893a6de837685da5b361e7481629a552  libsanitizer/sanitizer_common/sanitizer_stacktrace_libcdep.cpp
! 421ac15799ce1b208117cd3a04578e68  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.cpp
! 48a3ae33d0047b239ce6108de3b21f01  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.h
  670b449e6111903f6d125a767fa0dcdc  libsanitizer/sanitizer_common/sanitizer_stacktrace_sparc.cpp
! 76324ac84f5eb512c3e2351dbfd9ce24  libsanitizer/sanitizer_common/sanitizer_stoptheworld.h
! c1faa837dd50d9ad2162751a200fa58b  libsanitizer/sanitizer_common/sanitizer_stoptheworld_fuchsia.cpp
! 60c0888eff94b59773f87548c52f756a  libsanitizer/sanitizer_common/sanitizer_stoptheworld_fuchsia.h
! d0583a16195ac0f74ae4c5fe2d9c86c0  libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp
! 2ef561190d53b373c3fbcbc354775b87  libsanitizer/sanitizer_common/sanitizer_stoptheworld_mac.cpp
! 9e854f45be8f0397a82d3c766bfa91c2  libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp
  eb39444af2185c26905e505a935da3dc  libsanitizer/sanitizer_common/sanitizer_suppressions.cpp
  6dc05d23b94fb4783618dcd3cd4b1c9f  libsanitizer/sanitizer_common/sanitizer_suppressions.h
! cec284352a6e1650f96d4e6ed4c72ec3  libsanitizer/sanitizer_common/sanitizer_symbolizer.cpp
! 9b67549c15a9336724643313a9b57076  libsanitizer/sanitizer_common/sanitizer_symbolizer.h
  12fcc306e0ffc32a224b785eaec125a8  libsanitizer/sanitizer_common/sanitizer_symbolizer_fuchsia.h
! f5b2e7e1316c9d77c7724db34ee596a2  libsanitizer/sanitizer_common/sanitizer_symbolizer_internal.h
  bb131db68f565eae8a9dc5516f29326e  libsanitizer/sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp
! 57fad0f520b4b3e56bb19ce40a50676a  libsanitizer/sanitizer_common/sanitizer_symbolizer_libbacktrace.h
! 257475d14f1a77ec762e342d61ced0dd  libsanitizer/sanitizer_common/sanitizer_symbolizer_libcdep.cpp
! 31a79296e19ed6dfe94376a3a726bf14  libsanitizer/sanitizer_common/sanitizer_symbolizer_mac.cpp
! e3003592669953bc272f2de5f3e2dbbf  libsanitizer/sanitizer_common/sanitizer_symbolizer_mac.h
! bd8e335b7bb95233c994c9af58c16ca2  libsanitizer/sanitizer_common/sanitizer_symbolizer_markup.cpp
! 37b3f30605604d3349ee0518a9c51e3e  libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp
! ba37412ab5b90827d8ae139cbf61cbb2  libsanitizer/sanitizer_common/sanitizer_symbolizer_report.cpp
  bf1f33d4411f0b874ee25e8e906c3325  libsanitizer/sanitizer_common/sanitizer_symbolizer_rtems.h
! a5d028c603a77837e906b79479217fb7  libsanitizer/sanitizer_common/sanitizer_symbolizer_win.cpp
! 034628d52b5ccccaeb8ab2d857599538  libsanitizer/sanitizer_common/sanitizer_syscall_generic.inc
  9546e0a896837e1fc30d0f1421f2b220  libsanitizer/sanitizer_common/sanitizer_syscall_linux_aarch64.inc
  0711f1c23e48efd357f77c0be4ab551c  libsanitizer/sanitizer_common/sanitizer_syscall_linux_arm.inc
+ a14b05d5a122d962a0d8d477334c65e1  libsanitizer/sanitizer_common/sanitizer_syscall_linux_riscv64.inc
  e5a40190912f9655e972ed0025bf35f3  libsanitizer/sanitizer_common/sanitizer_syscall_linux_x86_64.inc
! eb5c24ff6468763e083b23c4491451f2  libsanitizer/sanitizer_common/sanitizer_syscalls_netbsd.inc
  59c4265dc5b17f42ad6d52e4f044a691  libsanitizer/sanitizer_common/sanitizer_termination.cpp
  1027484259ada5e402d64308fdd8512b  libsanitizer/sanitizer_common/sanitizer_thread_registry.cpp
! 047fce30927a184ecf1bb40fb7363a85  libsanitizer/sanitizer_common/sanitizer_thread_registry.h
! d0db7bb2e93125659a57d70f71d799bf  libsanitizer/sanitizer_common/sanitizer_tls_get_addr.cpp
  b8c609acff6402e7c8d1742ad1fcea1b  libsanitizer/sanitizer_common/sanitizer_tls_get_addr.h
  daf0a3ec50a14c09b41741865f11e807  libsanitizer/sanitizer_common/sanitizer_type_traits.cpp
  a951fc08e5b53c0d76a6a477883ad964  libsanitizer/sanitizer_common/sanitizer_type_traits.h
  e3cbe959db25a033713c3bba86c68b9e  libsanitizer/sanitizer_common/sanitizer_unwind_linux_libcdep.cpp
! 5797e275b3326dd81c1d06fee61025ca  libsanitizer/sanitizer_common/sanitizer_unwind_win.cpp
  8d76e69157ad8d7f8c665105cb1b9358  libsanitizer/sanitizer_common/sanitizer_vector.h
! 81f3a92df6fbbc4c1eed2227bf16ae74  libsanitizer/sanitizer_common/sanitizer_win.cpp
  ca31c361d0d8cc286a9c2a79da57a3ed  libsanitizer/sanitizer_common/sanitizer_win.h
  3a867f4ebec3e726e51526c82c85c978  libsanitizer/sanitizer_common/sanitizer_win_defs.h
  192408cb784e2738287506aefa3d586d  libsanitizer/sanitizer_common/sanitizer_win_dll_thunk.cpp
*************** ca31c361d0d8cc286a9c2a79da57a3ed  libsan
*** 90391,90424 ****
  c8748a0184d2e5e1b50d9c106e5a45f1  libsanitizer/sanitizer_common/sanitizer_win_dynamic_runtime_thunk.cpp
  61159becd1bfb41004e8fef8a36ccc1c  libsanitizer/sanitizer_common/sanitizer_win_weak_interception.cpp
  eb330b64a368e29af662c65273f49815  libsanitizer/sanitizer_common/sanitizer_win_weak_interception.h
! ad7daff88d0cab8696275d0a3cd0fad3  libsanitizer/tsan/Makefile.am
! 025b9479a2341adb76d449ebe8ebdce4  libsanitizer/tsan/Makefile.in
  fa3130229750a0a919b8e02b8f7ba7de  libsanitizer/tsan/libtool-version
! ff441b38db7a647c15b1cdb507cac854  libsanitizer/tsan/tsan_clock.cpp
! 33e2de24044189c5a48f3986f6ac62d7  libsanitizer/tsan/tsan_clock.h
  198dd384e23f4083d7a366461294aabd  libsanitizer/tsan/tsan_debugging.cpp
  33b141b62b30fcb86e5cf6d2cc074296  libsanitizer/tsan/tsan_defs.h
  e1d26b675f8475c414fab61865e226fd  libsanitizer/tsan/tsan_dense_alloc.h
! a5b9c33bb0d91d70e980be9bad2acedc  libsanitizer/tsan/tsan_dispatch_defs.h
! 5a290bf86c8c9d8a467dfdd6e9a78024  libsanitizer/tsan/tsan_external.cpp
  b86a41b569932590f309c75e4cd7139d  libsanitizer/tsan/tsan_fd.cpp
  86e32f67753dbc92efc697a97b1e38a7  libsanitizer/tsan/tsan_fd.h
! f4f223a4ab3dee913c5fde7ea815e270  libsanitizer/tsan/tsan_flags.cpp
  9fcbcc17ace4216572d132c7f19980dd  libsanitizer/tsan/tsan_flags.h
! 41a6a70f6766398c937fac61a75f558b  libsanitizer/tsan/tsan_flags.inc
  3872bbcb0ac76748d47bccfb94743d99  libsanitizer/tsan/tsan_ignoreset.cpp
  058ce7b802bf98df41675feb392e163c  libsanitizer/tsan/tsan_ignoreset.h
! d37359437387748d49fe5039db66377d  libsanitizer/tsan/tsan_interceptors.h
! e7b435a4217e0ff550bdce9378161f30  libsanitizer/tsan/tsan_interceptors_libdispatch.cpp
  c7a11371b12f8ca00dcec6de27c7e1ae  libsanitizer/tsan/tsan_interceptors_mac.cpp
! 3554fe9a680485fa454ce7c66dda2c14  libsanitizer/tsan/tsan_interceptors_mach_vm.cpp
! 84481acaa5ff2a811b5c549741886edc  libsanitizer/tsan/tsan_interceptors_posix.cpp
! 88acee2c9d55ccede0f37aa1ce9d361e  libsanitizer/tsan/tsan_interface.cpp
  02a71dcd4e7816dc118a76c8e9717b63  libsanitizer/tsan/tsan_interface.h
  36a60cd8cc05a70aea224f8255440fd8  libsanitizer/tsan/tsan_interface_ann.cpp
  85e02689af55fa1cc3f98b5cfe3043a1  libsanitizer/tsan/tsan_interface_ann.h
  11d4fa995e7e99a76fdcd77cd64294b5  libsanitizer/tsan/tsan_interface_atomic.cpp
! 1933a05546119dcc0a86d82aa5527a88  libsanitizer/tsan/tsan_interface_inl.h
  86ee073be4b8094d8eec986d9fbfe46b  libsanitizer/tsan/tsan_interface_java.cpp
  b6f28fd4519c6bc2e8cd9cdb820f72a8  libsanitizer/tsan/tsan_interface_java.h
  d4742ed564ebb24495bdd7764fb8eec9  libsanitizer/tsan/tsan_malloc_mac.cpp
--- 96632,96665 ----
  c8748a0184d2e5e1b50d9c106e5a45f1  libsanitizer/sanitizer_common/sanitizer_win_dynamic_runtime_thunk.cpp
  61159becd1bfb41004e8fef8a36ccc1c  libsanitizer/sanitizer_common/sanitizer_win_weak_interception.cpp
  eb330b64a368e29af662c65273f49815  libsanitizer/sanitizer_common/sanitizer_win_weak_interception.h
! 1cfcceecc6eeeae848b8c6902149e236  libsanitizer/tsan/Makefile.am
! d07f5fba43dc25a3502e9a50c92f1a0f  libsanitizer/tsan/Makefile.in
  fa3130229750a0a919b8e02b8f7ba7de  libsanitizer/tsan/libtool-version
! f5a6fd0eade721690ec33ba89dadc48c  libsanitizer/tsan/tsan_clock.cpp
! 1d56f0d4ebbc576628a066665605c625  libsanitizer/tsan/tsan_clock.h
  198dd384e23f4083d7a366461294aabd  libsanitizer/tsan/tsan_debugging.cpp
  33b141b62b30fcb86e5cf6d2cc074296  libsanitizer/tsan/tsan_defs.h
  e1d26b675f8475c414fab61865e226fd  libsanitizer/tsan/tsan_dense_alloc.h
! 9a994c7cd167ddbaea5df65cb0e6e051  libsanitizer/tsan/tsan_dispatch_defs.h
! 2b523a85f62df928bb2a59c24854dc8c  libsanitizer/tsan/tsan_external.cpp
  b86a41b569932590f309c75e4cd7139d  libsanitizer/tsan/tsan_fd.cpp
  86e32f67753dbc92efc697a97b1e38a7  libsanitizer/tsan/tsan_fd.h
! e77eb0d3639c52827e9f8753fe78b8a6  libsanitizer/tsan/tsan_flags.cpp
  9fcbcc17ace4216572d132c7f19980dd  libsanitizer/tsan/tsan_flags.h
! da24b3b72762d44cb7ee6a750981e19d  libsanitizer/tsan/tsan_flags.inc
  3872bbcb0ac76748d47bccfb94743d99  libsanitizer/tsan/tsan_ignoreset.cpp
  058ce7b802bf98df41675feb392e163c  libsanitizer/tsan/tsan_ignoreset.h
! e0d35aa3d6f65f90936a1641380d012d  libsanitizer/tsan/tsan_interceptors.h
! 1b4ec7c176ae05e65095a6d2cdb0365c  libsanitizer/tsan/tsan_interceptors_libdispatch.cpp
  c7a11371b12f8ca00dcec6de27c7e1ae  libsanitizer/tsan/tsan_interceptors_mac.cpp
! a83781c196d253d2f7538367873b4d65  libsanitizer/tsan/tsan_interceptors_mach_vm.cpp
! 8da3fef3da6b5cfb77ef95e2c300ac88  libsanitizer/tsan/tsan_interceptors_posix.cpp
! a782403c2fec24598634a26efa94be0f  libsanitizer/tsan/tsan_interface.cpp
  02a71dcd4e7816dc118a76c8e9717b63  libsanitizer/tsan/tsan_interface.h
  36a60cd8cc05a70aea224f8255440fd8  libsanitizer/tsan/tsan_interface_ann.cpp
  85e02689af55fa1cc3f98b5cfe3043a1  libsanitizer/tsan/tsan_interface_ann.h
  11d4fa995e7e99a76fdcd77cd64294b5  libsanitizer/tsan/tsan_interface_atomic.cpp
! f6342dc638e1620ba03b5fe0591fe268  libsanitizer/tsan/tsan_interface_inl.h
  86ee073be4b8094d8eec986d9fbfe46b  libsanitizer/tsan/tsan_interface_java.cpp
  b6f28fd4519c6bc2e8cd9cdb820f72a8  libsanitizer/tsan/tsan_interface_java.h
  d4742ed564ebb24495bdd7764fb8eec9  libsanitizer/tsan/tsan_malloc_mac.cpp
*************** d4742ed564ebb24495bdd7764fb8eec9  libsan
*** 90430,90529 ****
  cf371605f25f8d576f1f035dc41e575d  libsanitizer/tsan/tsan_mutexset.cpp
  4297e22dd9e18efcbc82b989a42b2ab7  libsanitizer/tsan/tsan_mutexset.h
  abb77573543b4ca2e18a84ae834d8ff7  libsanitizer/tsan/tsan_new_delete.cpp
! 6a788390d7a8bf4a8a6b73fc3fd1869c  libsanitizer/tsan/tsan_platform.h
! 36c98aab4a9ac71b5f358bc7116aa47d  libsanitizer/tsan/tsan_platform_linux.cpp
! dcbbc102d50fec973a13c6261a5c9edd  libsanitizer/tsan/tsan_platform_mac.cpp
! 1d28a37042b8910e173eb61614918222  libsanitizer/tsan/tsan_platform_posix.cpp
  e571fafbedfc5631ba9a65a021b3690c  libsanitizer/tsan/tsan_platform_windows.cpp
  52a08181bf0cebd537f6ff681e4201d2  libsanitizer/tsan/tsan_ppc_regs.h
  26e9eb9d1219608d4a3f8b5de755e6c7  libsanitizer/tsan/tsan_preinit.cpp
! d73f80804ebf9bd299771e2a716bd3c0  libsanitizer/tsan/tsan_report.cpp
  266790a202d1beb065d3cc6b67a3bf3f  libsanitizer/tsan/tsan_report.h
! 274f8ad8dc9908cef36ccac427439362  libsanitizer/tsan/tsan_rtl.cpp
! ed37b13f9a24fd52de540f97aac054d0  libsanitizer/tsan/tsan_rtl.h
  b07a5d2489d36192b3df5324b8591748  libsanitizer/tsan/tsan_rtl_aarch64.S
  ce5ee002d48ad3b4d06a80252d42c5a7  libsanitizer/tsan/tsan_rtl_amd64.S
  2e223da4b198b7996aa993b62da9470c  libsanitizer/tsan/tsan_rtl_mips64.S
! a7c6c39bbdaed6c138890d5191671448  libsanitizer/tsan/tsan_rtl_mutex.cpp
  d771c907949512e86f6221398475c2c1  libsanitizer/tsan/tsan_rtl_ppc64.S
  90a9b217381a5220aa59007a40614de1  libsanitizer/tsan/tsan_rtl_proc.cpp
! cc358adf0594bf6c0733010898d5b681  libsanitizer/tsan/tsan_rtl_report.cpp
! 01a289c3f4d000717e1e4046d0acd4ca  libsanitizer/tsan/tsan_rtl_thread.cpp
  637c77a5937a7370cf3595223014c144  libsanitizer/tsan/tsan_stack_trace.cpp
  fcdf88c4922b4bf531859f5e19f37f19  libsanitizer/tsan/tsan_stack_trace.h
  6615e70a417622568139e04a8b479a6c  libsanitizer/tsan/tsan_stat.cpp
! dacb18e8ad763bc593e90db9f622c62e  libsanitizer/tsan/tsan_stat.h
  69f20cee78a054f26a59decf38be934b  libsanitizer/tsan/tsan_suppressions.cpp
  2158aca0f3a2d54057e8cd7895ef496c  libsanitizer/tsan/tsan_suppressions.h
  d32a18022d701573e6bde5eb24cce928  libsanitizer/tsan/tsan_symbolize.cpp
  339793c91cce47c39da05aab388a1d91  libsanitizer/tsan/tsan_symbolize.h
! 665be2050952ea8b01c342f2049f3e81  libsanitizer/tsan/tsan_sync.cpp
  f8c7ffb6db970f21de91cd68dbd5a786  libsanitizer/tsan/tsan_sync.h
  788d8ec9c132710c6b8f4bc88d18c2d8  libsanitizer/tsan/tsan_trace.h
  b03734881e1f28d3f47413d49b4e8d0d  libsanitizer/tsan/tsan_update_shadow_word_inl.h
! b4d0e6cabd4df85483f5a6a50d85a43b  libsanitizer/ubsan/Makefile.am
! ba3f32bf03c3d78832d9689bad392f3d  libsanitizer/ubsan/Makefile.in
  db0727716bbb494b5221fcab5517db23  libsanitizer/ubsan/libtool-version
! c79f822f77c65a7c9dc8c52278c62876  libsanitizer/ubsan/ubsan_checks.inc
  ebed06d61582a88d2a71b8d370a2f95f  libsanitizer/ubsan/ubsan_diag.cpp
  78ecfd51a2b4b88d4595bb54c66abc8a  libsanitizer/ubsan/ubsan_diag.h
  8a33500618e07eac8c0c32849ab1deb0  libsanitizer/ubsan/ubsan_diag_standalone.cpp
! 11a4b32d044c58a375ddbb06c1b8df7b  libsanitizer/ubsan/ubsan_flags.cpp
! bad841f4d775db7f8923cfaf6ff93216  libsanitizer/ubsan/ubsan_flags.h
  b27e02f11f51c44900f55d9f84490952  libsanitizer/ubsan/ubsan_flags.inc
! 6529cda1da5ea88f6724ba1716eaf1ea  libsanitizer/ubsan/ubsan_handlers.cpp
! b4695d17304eede0040da901bad948d7  libsanitizer/ubsan/ubsan_handlers.h
  43ef0529b23d1faac6f1d00a3bb99c48  libsanitizer/ubsan/ubsan_handlers_cxx.cpp
  2d856feaefc2fa81a63e9be3a41ecc34  libsanitizer/ubsan/ubsan_handlers_cxx.h
! bb257e1d3c67b5c890944bca4bfc3330  libsanitizer/ubsan/ubsan_init.cpp
  6e2f838f2a1a00942ff6a510da152fac  libsanitizer/ubsan/ubsan_init.h
  6709b25bace5613d327e12057227eefc  libsanitizer/ubsan/ubsan_init_standalone.cpp
  8b7c4cd2bd1ad8759b5d13c230fffb54  libsanitizer/ubsan/ubsan_init_standalone_preinit.cpp
! ebd0b1c1cd4aff08d509898b518a3ef2  libsanitizer/ubsan/ubsan_interface.inc
  6f773fa76726f275c5f2f9b0d1c9448e  libsanitizer/ubsan/ubsan_monitor.cpp
  7311068be7eacbc04a232416cd95a29d  libsanitizer/ubsan/ubsan_monitor.h
! 043ea6eb1c447eb1783f37ca56f90802  libsanitizer/ubsan/ubsan_platform.h
  c538b76dffda11b57555fde1324f6e80  libsanitizer/ubsan/ubsan_signals_standalone.cpp
  80d12dc787dd1f9c2aff6e99ccf028a3  libsanitizer/ubsan/ubsan_signals_standalone.h
  c334521cda7aa18f71d0584166e5ed32  libsanitizer/ubsan/ubsan_type_hash.cpp
  cc7b9d72793a57ce775ed182634de360  libsanitizer/ubsan/ubsan_type_hash.h
! 4372afcdf8198b801428a72ff1bc4ab6  libsanitizer/ubsan/ubsan_type_hash_itanium.cpp
! 262682b097b11b3f1363dd8ac3436ddd  libsanitizer/ubsan/ubsan_type_hash_win.cpp
! bdb41afe9a974c72c5ce5ade35707ff5  libsanitizer/ubsan/ubsan_value.cpp
! cabf4d60cc2e457091514cb4f2237bbd  libsanitizer/ubsan/ubsan_value.h
  545e91fffb8d4987ca5d1c0054aadd11  libsanitizer/ubsan/ubsan_win_dll_thunk.cpp
  e9c85349d92ab1a6b66d0872077acd3b  libsanitizer/ubsan/ubsan_win_dynamic_runtime_thunk.cpp
  72f297f487b6bb9db917cce361192c28  libsanitizer/ubsan/ubsan_win_weak_interception.cpp
! 0e1232ae0c5f763cd5d7cef793453357  libssp/ChangeLog
! 587c237b1073b8be40a1975c86d0ce01  libssp/Makefile.am
  b56958cdc5828ca811c35bbf479b3a09  libssp/Makefile.in
  f6f6c804e40e3a3ef407d3d13fafb6c0  libssp/aclocal.m4
  f4886e6dd0590caba717fd1bc96a6f50  libssp/config.h.in
! 2c3261745f9ccb06e414c438ded6e692  libssp/configure
  add86bdb9a39ea186a4120d7e7b32438  libssp/configure.ac
! ac617bda66bff5fe53f9890d3d244a56  libssp/gets-chk.c
  0ac32b60459d1fdec670990324d7bdc6  libssp/libtool-version
! 4c2855d86d4e2ee63e97c9d43a6ddb6f  libssp/memcpy-chk.c
! 00f079a8b41f8017df8fbcb54875e4bd  libssp/memmove-chk.c
! 0fcac1a651efe35587f8b76854f3e966  libssp/mempcpy-chk.c
! d99ba3f6ceb524a2006c6ab527174d1a  libssp/memset-chk.c
! 7a5edf953b35c9329a8402d367e5a20c  libssp/snprintf-chk.c
! 1436f7f46a717c877ca319d34bb9cdb0  libssp/sprintf-chk.c
! bece4233e33940f670a30fc568910aaa  libssp/ssp-local.c
! adc7cd03de5226442d8cbe5684e30693  libssp/ssp.c
  a45e2fbfb70a8e0d68d726bb31ffe4cd  libssp/ssp.map
! 9bda7d184223ff21f537aecf42d51b40  libssp/ssp/ssp.h.in
! 19de2654e7102ed100dc4309ed9ee62d  libssp/ssp/stdio.h
! 436375bb040a346f64c72573c011b4d1  libssp/ssp/string.h
! d30e9b22f74bf3f5ff5c20cebe0715f6  libssp/ssp/unistd.h
! 831f1a3fbb68d3f6ae0ac1b8e34c4bed  libssp/stpcpy-chk.c
! a8291ec60d5058c6b652ad3948ba88f2  libssp/strcat-chk.c
! 507ba8d82a1fe33eb0d512934c239950  libssp/strcpy-chk.c
! 519704293b8f2b2535c57f6975d70d18  libssp/strncat-chk.c
! b7a581dfcf315a2215d8792224b15ba4  libssp/strncpy-chk.c
! 4720732375196e3834d0dc2a4ccd4678  libssp/vsnprintf-chk.c
! c67bcbd0e33f52512fa906f33a6ad93c  libssp/vsprintf-chk.c
! d082ee0a8892f3eff99f48f44e4f197b  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 96671,96770 ----
  cf371605f25f8d576f1f035dc41e575d  libsanitizer/tsan/tsan_mutexset.cpp
  4297e22dd9e18efcbc82b989a42b2ab7  libsanitizer/tsan/tsan_mutexset.h
  abb77573543b4ca2e18a84ae834d8ff7  libsanitizer/tsan/tsan_new_delete.cpp
! 913ec2300271ec9b2c984b6fdfb1789a  libsanitizer/tsan/tsan_platform.h
! 9ed026dfa307d67a7f713304f839ff27  libsanitizer/tsan/tsan_platform_linux.cpp
! 890260122ddd8e76d463cf588dfc0fe0  libsanitizer/tsan/tsan_platform_mac.cpp
! 55a41428796341ab07728b80b03ca2a1  libsanitizer/tsan/tsan_platform_posix.cpp
  e571fafbedfc5631ba9a65a021b3690c  libsanitizer/tsan/tsan_platform_windows.cpp
  52a08181bf0cebd537f6ff681e4201d2  libsanitizer/tsan/tsan_ppc_regs.h
  26e9eb9d1219608d4a3f8b5de755e6c7  libsanitizer/tsan/tsan_preinit.cpp
! 539e61cf68e10c91fc6a9ad3a8edae3a  libsanitizer/tsan/tsan_report.cpp
  266790a202d1beb065d3cc6b67a3bf3f  libsanitizer/tsan/tsan_report.h
! 047e3f57f3c1fce96594799a62cc1c08  libsanitizer/tsan/tsan_rtl.cpp
! f035aa9034dae111f33e2e039aee6414  libsanitizer/tsan/tsan_rtl.h
  b07a5d2489d36192b3df5324b8591748  libsanitizer/tsan/tsan_rtl_aarch64.S
  ce5ee002d48ad3b4d06a80252d42c5a7  libsanitizer/tsan/tsan_rtl_amd64.S
  2e223da4b198b7996aa993b62da9470c  libsanitizer/tsan/tsan_rtl_mips64.S
! 797ca95e291b2ab1dae1c6506564ebeb  libsanitizer/tsan/tsan_rtl_mutex.cpp
  d771c907949512e86f6221398475c2c1  libsanitizer/tsan/tsan_rtl_ppc64.S
  90a9b217381a5220aa59007a40614de1  libsanitizer/tsan/tsan_rtl_proc.cpp
! 3080e03b50a8bf432037bf4eeb6f5bdd  libsanitizer/tsan/tsan_rtl_report.cpp
! 8a6e4cca762964493b1a4060f864c159  libsanitizer/tsan/tsan_rtl_thread.cpp
  637c77a5937a7370cf3595223014c144  libsanitizer/tsan/tsan_stack_trace.cpp
  fcdf88c4922b4bf531859f5e19f37f19  libsanitizer/tsan/tsan_stack_trace.h
  6615e70a417622568139e04a8b479a6c  libsanitizer/tsan/tsan_stat.cpp
! 385fc5624d45fb5abdec5321269e4ebd  libsanitizer/tsan/tsan_stat.h
  69f20cee78a054f26a59decf38be934b  libsanitizer/tsan/tsan_suppressions.cpp
  2158aca0f3a2d54057e8cd7895ef496c  libsanitizer/tsan/tsan_suppressions.h
  d32a18022d701573e6bde5eb24cce928  libsanitizer/tsan/tsan_symbolize.cpp
  339793c91cce47c39da05aab388a1d91  libsanitizer/tsan/tsan_symbolize.h
! ba92d7b136512f1cb411bd13ea779385  libsanitizer/tsan/tsan_sync.cpp
  f8c7ffb6db970f21de91cd68dbd5a786  libsanitizer/tsan/tsan_sync.h
  788d8ec9c132710c6b8f4bc88d18c2d8  libsanitizer/tsan/tsan_trace.h
  b03734881e1f28d3f47413d49b4e8d0d  libsanitizer/tsan/tsan_update_shadow_word_inl.h
! 387c0b821641937f7c18b6f4b7ecf22d  libsanitizer/ubsan/Makefile.am
! fb38ef2356416d8375ebd44d98eab243  libsanitizer/ubsan/Makefile.in
  db0727716bbb494b5221fcab5517db23  libsanitizer/ubsan/libtool-version
! 09adf5cec3b2e75084c18928b377c4f3  libsanitizer/ubsan/ubsan_checks.inc
  ebed06d61582a88d2a71b8d370a2f95f  libsanitizer/ubsan/ubsan_diag.cpp
  78ecfd51a2b4b88d4595bb54c66abc8a  libsanitizer/ubsan/ubsan_diag.h
  8a33500618e07eac8c0c32849ab1deb0  libsanitizer/ubsan/ubsan_diag_standalone.cpp
! e3592cc9006c6b039a3cec6a3bf25efb  libsanitizer/ubsan/ubsan_flags.cpp
! c6447e64133bd56b1aa97dde6c16675f  libsanitizer/ubsan/ubsan_flags.h
  b27e02f11f51c44900f55d9f84490952  libsanitizer/ubsan/ubsan_flags.inc
! a457f4b0060070f9e92b5432f6629610  libsanitizer/ubsan/ubsan_handlers.cpp
! f6fe1e866e950cd3658102fc9405e469  libsanitizer/ubsan/ubsan_handlers.h
  43ef0529b23d1faac6f1d00a3bb99c48  libsanitizer/ubsan/ubsan_handlers_cxx.cpp
  2d856feaefc2fa81a63e9be3a41ecc34  libsanitizer/ubsan/ubsan_handlers_cxx.h
! ec90595fe9a6426584202b6aa1aec310  libsanitizer/ubsan/ubsan_init.cpp
  6e2f838f2a1a00942ff6a510da152fac  libsanitizer/ubsan/ubsan_init.h
  6709b25bace5613d327e12057227eefc  libsanitizer/ubsan/ubsan_init_standalone.cpp
  8b7c4cd2bd1ad8759b5d13c230fffb54  libsanitizer/ubsan/ubsan_init_standalone_preinit.cpp
! a2661ff01d56abb8a41522539c5d3931  libsanitizer/ubsan/ubsan_interface.inc
  6f773fa76726f275c5f2f9b0d1c9448e  libsanitizer/ubsan/ubsan_monitor.cpp
  7311068be7eacbc04a232416cd95a29d  libsanitizer/ubsan/ubsan_monitor.h
! 1749ce481b95c721f4fc685175cb8807  libsanitizer/ubsan/ubsan_platform.h
  c538b76dffda11b57555fde1324f6e80  libsanitizer/ubsan/ubsan_signals_standalone.cpp
  80d12dc787dd1f9c2aff6e99ccf028a3  libsanitizer/ubsan/ubsan_signals_standalone.h
  c334521cda7aa18f71d0584166e5ed32  libsanitizer/ubsan/ubsan_type_hash.cpp
  cc7b9d72793a57ce775ed182634de360  libsanitizer/ubsan/ubsan_type_hash.h
! c8d0621aeb94135587684a01c4289095  libsanitizer/ubsan/ubsan_type_hash_itanium.cpp
! 07c0334c044295c3fef2cabbb9973477  libsanitizer/ubsan/ubsan_type_hash_win.cpp
! a87890bd420fc4f2759fbb6d5a239a8b  libsanitizer/ubsan/ubsan_value.cpp
! bd58abd803667b3373381b6bb1b68f1b  libsanitizer/ubsan/ubsan_value.h
  545e91fffb8d4987ca5d1c0054aadd11  libsanitizer/ubsan/ubsan_win_dll_thunk.cpp
  e9c85349d92ab1a6b66d0872077acd3b  libsanitizer/ubsan/ubsan_win_dynamic_runtime_thunk.cpp
  72f297f487b6bb9db917cce361192c28  libsanitizer/ubsan/ubsan_win_weak_interception.cpp
! b30dcdea5bbac8ba4467714085fa8f4b  libssp/ChangeLog
! cf4ee646515263611d025bd12ba88148  libssp/Makefile.am
  b56958cdc5828ca811c35bbf479b3a09  libssp/Makefile.in
  f6f6c804e40e3a3ef407d3d13fafb6c0  libssp/aclocal.m4
  f4886e6dd0590caba717fd1bc96a6f50  libssp/config.h.in
! 68e956231b19fc09cf5925e781fbf02c  libssp/configure
  add86bdb9a39ea186a4120d7e7b32438  libssp/configure.ac
! f237c287bd4088c9048ec62394d3ddc9  libssp/gets-chk.c
  0ac32b60459d1fdec670990324d7bdc6  libssp/libtool-version
! f641cf4cfbbb4dfc1ae33baa7836a5aa  libssp/memcpy-chk.c
! 5613c5dc1e4505774b8b01c003766209  libssp/memmove-chk.c
! fef85fdc21c8b5a5d314140e76b70f9c  libssp/mempcpy-chk.c
! ef7666cc4670d2fdd3ed6c6dd12bca7b  libssp/memset-chk.c
! 411dc0b87d1fc37eb44ef081cf9309d8  libssp/snprintf-chk.c
! 217a74c8cf9b8ec7f3fd487c204aa9d1  libssp/sprintf-chk.c
! eba1ff6ccf2fef1a4a36cf89159dfdae  libssp/ssp-local.c
! 8eefa25e6beb3ddc951cfc158306cef5  libssp/ssp.c
  a45e2fbfb70a8e0d68d726bb31ffe4cd  libssp/ssp.map
! 570abf6eea96f49b90c9570367f770d9  libssp/ssp/ssp.h.in
! df66ccf23f6b963bb290249d790ccb82  libssp/ssp/stdio.h
! 0bf976a219a5a86f2014e9b5a7b48e3d  libssp/ssp/string.h
! 3350c42e9933e35efe7108c1d1ae32b3  libssp/ssp/unistd.h
! 9ebda8eddf7c28758980c24a023cf62e  libssp/stpcpy-chk.c
! 96ca007503cad767a1ad9ac42b679d50  libssp/strcat-chk.c
! 3c882991a2d39aa8e4f89be554c29fa3  libssp/strcpy-chk.c
! 86d4871093d73da6a106b029236223e0  libssp/strncat-chk.c
! 0a9dff73d2333b2997da42b4615533fd  libssp/strncpy-chk.c
! 11c140b790d482decba4951f6508dd84  libssp/vsnprintf-chk.c
! 2ce510f683585f686681d926e3fafb82  libssp/vsprintf-chk.c
! 4ed6b9d19bf8b81c64d38bc7f152c35b  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** b331fae97e334afde1bd5fa125610458  libstd
*** 90546,90762 ****
  ced62eb7e4ae82690abb361aefcea876  libstdc++-v3/ChangeLog-2017
  72cd87c288677791bf39ac8327b1cf25  libstdc++-v3/ChangeLog-2018
  a8f4290dba5b481ad426148a03c75dd0  libstdc++-v3/ChangeLog-2019
! 8abbe8dbceada1feb649f12e6e42431e  libstdc++-v3/Makefile.am
! 89887190096da88c7db4e289a7e6f486  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! b6ad5bb980f65363f37886a84c2384c6  libstdc++-v3/acinclude.m4
  734c1cbc8791fbceb09b49c5d07d6966  libstdc++-v3/aclocal.m4
! 9d34c3f037d40d0587c7663cee68f369  libstdc++-v3/config.h.in
! b5b123749a2ebe91df30079f9bc9ef13  libstdc++-v3/config/abi/compatibility.h
! 662289c954191e4d980cf2642cad40fe  libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
  730569c0ef38f6e6322b3c4ac65253ce  libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
  ad5f7ad17c209326dd45364406b5a992  libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt
! 8c69e8a7580c94cfe60beaee5e809d75  libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt
! 74a08c4c9e21889187be09be60738f10  libstdc++-v3/config/abi/post/i386-solaris/amd64/baseline_symbols.txt
! b607ef945dfd72ce63f05b81fbf37bb0  libstdc++-v3/config/abi/post/i386-solaris/baseline_symbols.txt
! 8c69e8a7580c94cfe60beaee5e809d75  libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt
! 356ef5e52f0276ffb3721f062e2ca6bf  libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
! 5abe83239231d7240b4595419bb81a90  libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt
  61308215d393f11169ace76935f2b034  libstdc++-v3/config/abi/post/mips-linux-gnu/baseline_symbols.txt
  725325d7b24195d1e6374ce4e24afdb0  libstdc++-v3/config/abi/post/mips64-linux-gnu/32/baseline_symbols.txt
  907face03890009654193fc67fa4e427  libstdc++-v3/config/abi/post/mips64-linux-gnu/64/baseline_symbols.txt
  1a34bda2bb4c3a576335343c0a4a9377  libstdc++-v3/config/abi/post/mips64-linux-gnu/baseline_symbols.txt
! cdaf97374fe10c7c30c73d674576d361  libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt
! cdaf97374fe10c7c30c73d674576d361  libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt
! efc81d30c55a6bb7ba7877c0b45d125e  libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt
! e95a399b3b85f3623c2e24ca57c200a1  libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt
  3ec228e0d9301df0938cba4a7fb94374  libstdc++-v3/config/abi/post/s390-linux-gnu/baseline_symbols.txt
  3ec228e0d9301df0938cba4a7fb94374  libstdc++-v3/config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt
! efc81d30c55a6bb7ba7877c0b45d125e  libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt
  cc65678819ec7ff06eaeed8b1a5455eb  libstdc++-v3/config/abi/post/sparc-linux-gnu/baseline_symbols.txt
! 7ee357ab4c140287e7bdfabec1c38913  libstdc++-v3/config/abi/post/sparc-solaris/baseline_symbols.txt
! d2fa712fc8aba7722bd2fcef11955d6e  libstdc++-v3/config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt
  ebf1c408e326c18c0c1f337bc5108fae  libstdc++-v3/config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt
  c224a11f9b7b76848462bffd472b20c2  libstdc++-v3/config/abi/post/sparc64-linux-gnu/baseline_symbols.txt
! 8c69e8a7580c94cfe60beaee5e809d75  libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt
! f59eaff19b8f941e8bf58d11e42c3b64  libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
! 10c8266dce856f4bd99fada3230a1ac3  libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
  5c4c38aeca254313c616b84337c937c3  libstdc++-v3/config/abi/pre/float128.ver
! e19bdce64f0ddc202e2857a54f4b5331  libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
! 652c97afe282b8e5d962cf517c5f1e06  libstdc++-v3/config/abi/pre/gnu.ver
  b01f8da8f4373070847fe317fe8a546e  libstdc++-v3/config/abi/pre/none.ver
! 383e35120b7a60e287cca37f2631f1c9  libstdc++-v3/config/allocator/bitmap_allocator_base.h
! 54c429c81865be28a4f782ae2b428e37  libstdc++-v3/config/allocator/malloc_allocator_base.h
! 500679d8db432a93a506e32a75ffb4f1  libstdc++-v3/config/allocator/mt_allocator_base.h
! 81f39988e9e07cf8a63d9bcc1286df65  libstdc++-v3/config/allocator/new_allocator_base.h
! 4a8f75cbd9ee51f1d580268f039d179f  libstdc++-v3/config/allocator/pool_allocator_base.h
! fd51b38224eaf91205c8636f1fcec9e5  libstdc++-v3/config/cpu/aarch64/opt/bits/opt_random.h
! 32b8a1b4c040afd686496ff9fb662148  libstdc++-v3/config/cpu/aarch64/opt/ext/opt_random.h
! 9a94d6c6cf7765355262b3346effde24  libstdc++-v3/config/cpu/arm/cpu_defines.h
! 5e37c2debec7b887d59c674994b5bd9e  libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h
! c84e6d706806c9795b89d782f4c16ad2  libstdc++-v3/config/cpu/cris/atomic_word.h
! d876e83850952084403635da7f36c511  libstdc++-v3/config/cpu/cris/atomicity.h
! 19cf185b1860c72868868341eb472c4a  libstdc++-v3/config/cpu/generic/atomic_word.h
! 8f017720e11287888b6e7ede4a89f94f  libstdc++-v3/config/cpu/generic/atomicity_builtins/atomicity.h
! 58653cc291dc3041a2c1297dbebfc944  libstdc++-v3/config/cpu/generic/atomicity_mutex/atomicity.h
! b84532d364a8325344f636c9a17cccbe  libstdc++-v3/config/cpu/generic/cpu_defines.h
! 4dd14f90520d36cfba8ea4c735ab9716  libstdc++-v3/config/cpu/generic/cxxabi_tweaks.h
! faf3020e674ae4fd8fe152b83ae055a7  libstdc++-v3/config/cpu/generic/opt/bits/opt_random.h
! 7bbdcd7cfab3a762096de9731ee8d991  libstdc++-v3/config/cpu/generic/opt/ext/opt_random.h
! ec8aa643e4d9c46918e9f68e851ff740  libstdc++-v3/config/cpu/hppa/atomicity.h
! d21f47236b7acf2110b3d5ad420f67ff  libstdc++-v3/config/cpu/i386/atomicity.h
! 548fe33f16d18de3815170f3171dbb49  libstdc++-v3/config/cpu/i486/atomicity.h
! 807e116f1bce9677b180845e08e0c27b  libstdc++-v3/config/cpu/i486/opt/bits/opt_random.h
! 48ec1f1f6ca7ee862cd97e01b78debfe  libstdc++-v3/config/cpu/i486/opt/ext/opt_random.h
! 6a2ea1b59d0ba5b2c19cd7b6b4559f1d  libstdc++-v3/config/cpu/m68k/atomicity.h
! 670975203ea58a3020eb358a04864f25  libstdc++-v3/config/cpu/microblaze/cpu_defines.h
! 5f3ab415b0f3313bd9a58dfec369ac37  libstdc++-v3/config/cpu/powerpc/cpu_defines.h
! 72c7db4c5d36ffcad490f471198ca828  libstdc++-v3/config/cpu/sh/atomicity.h
! ff7a758a4b90b410d876f37cf3c7895b  libstdc++-v3/config/cpu/sparc/atomic_word.h
! b7475245b1c10b5f858581ed65bee395  libstdc++-v3/config/cpu/sparc/atomicity.h
! 0589c8803a8331721ec7b9fe7f13e71a  libstdc++-v3/config/io/basic_file_stdio.cc
! be53992a362a2630f1b5db2fc1ef5b40  libstdc++-v3/config/io/basic_file_stdio.h
! 7ea4f0216483980b15f501b040ed2c9d  libstdc++-v3/config/io/c_io_stdio.h
! 529ed3e0a9da72e6bb166c149cc4fbe3  libstdc++-v3/config/locale/darwin/ctype_members.cc
! 12b74d78839d43b53f119b4da218e9cc  libstdc++-v3/config/locale/dragonfly/c_locale.cc
! 37fd044e235edf483dd7f9c8a0b42d7b  libstdc++-v3/config/locale/dragonfly/c_locale.h
! 4cc2c8382cd16ff10954bdef17401d31  libstdc++-v3/config/locale/dragonfly/codecvt_members.cc
! a8fb4d9e6eedc5594e1e6c08acf6da2f  libstdc++-v3/config/locale/dragonfly/collate_members.cc
! d8c1dd674e290aefe7c624a1aba5008e  libstdc++-v3/config/locale/dragonfly/ctype_members.cc
! 8e83ff71c18b912d62b4b6abe8c00a7a  libstdc++-v3/config/locale/dragonfly/monetary_members.cc
! a69695a42a880788d2cbb355f37ba767  libstdc++-v3/config/locale/dragonfly/numeric_members.cc
! 482bf8e2aca387a54007f30fcf69052d  libstdc++-v3/config/locale/dragonfly/time_members.cc
! bc26d8f127320e86785571e61a8c1e72  libstdc++-v3/config/locale/dragonfly/time_members.h
! 6fe11d3388d57d23728dd622adb6b130  libstdc++-v3/config/locale/generic/c++locale_internal.h
! 4a8606637c8f4b8af15da70e85e7b261  libstdc++-v3/config/locale/generic/c_locale.cc
! a77fa93b52b908d41737b27f71aad33f  libstdc++-v3/config/locale/generic/c_locale.h
! 8dd8c9359f2bd5bcb75a00c66dfdb6f6  libstdc++-v3/config/locale/generic/codecvt_members.cc
! 1668a2a11109f6045cd066a5a394771b  libstdc++-v3/config/locale/generic/collate_members.cc
! b4f8df0da1eeaf0b352153eebfa80846  libstdc++-v3/config/locale/generic/ctype_members.cc
! 730b401aa83ae87cae017f691a2e2a81  libstdc++-v3/config/locale/generic/messages_members.cc
! 17f93d27b055e0406cd324fbe47d5408  libstdc++-v3/config/locale/generic/messages_members.h
! 4ee61917a54317dfc3361961bc3583f8  libstdc++-v3/config/locale/generic/monetary_members.cc
! e53b5b622eecde91d9e5a80e9cde39ef  libstdc++-v3/config/locale/generic/numeric_members.cc
! aa957a20e2af35cccd5589beb2afecd7  libstdc++-v3/config/locale/generic/time_members.cc
! 365d31ea3861fc945eaddeb540db3da4  libstdc++-v3/config/locale/generic/time_members.h
! 245e01e0d2c2fa42dd4f0d2f572e94ae  libstdc++-v3/config/locale/gnu/c++locale_internal.h
! 8570b2777245678d48c5761772f29625  libstdc++-v3/config/locale/gnu/c_locale.cc
! ccd7eb4e5d5333a1363462478d1e639a  libstdc++-v3/config/locale/gnu/c_locale.h
! 5c68e7456d5a598db5acfc3b78e3f485  libstdc++-v3/config/locale/gnu/codecvt_members.cc
! cdd628f7e77a8a9fc11570f315a8f269  libstdc++-v3/config/locale/gnu/collate_members.cc
! 5d4a0015f0d38b4af4129ddd3cd11a38  libstdc++-v3/config/locale/gnu/ctype_members.cc
! 13adb4e6f07abe793e783c8c6c72fb8a  libstdc++-v3/config/locale/gnu/messages_members.cc
! 36a22634d476314138d54cb28f6d2dab  libstdc++-v3/config/locale/gnu/messages_members.h
! 750ae3547514859d2681be63ffcfd9e1  libstdc++-v3/config/locale/gnu/monetary_members.cc
! 8103a7bbbee3b660d16522d68a11dd27  libstdc++-v3/config/locale/gnu/numeric_members.cc
! 4450dc3478a3804d1cf2a9ddcd697e4d  libstdc++-v3/config/locale/gnu/time_members.cc
! 9e811aa097fbb67ab7b709f12b412f52  libstdc++-v3/config/locale/gnu/time_members.h
! 7b365a2f87ef96d2c0f6a7459f891ab5  libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.cc
! 21d5c23bbe195d4aee3007d8bf6fe476  libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.h
! c002298949a9c0be2da21b87959d7b32  libstdc++-v3/config/locale/ieee_1003.1-2001/messages_members.cc
! 47325579c27489a40f02910197553074  libstdc++-v3/config/locale/ieee_1003.1-2001/messages_members.h
! 6865e897c87ce5d3c058d74818d75adc  libstdc++-v3/config/locale/newlib/ctype_members.cc
! e5b1fd0b5f6a41356958254db74e437f  libstdc++-v3/config/os/aix/atomicity.h
! d4d5bbabc049ea69e6dde3ac681c0566  libstdc++-v3/config/os/aix/ctype_base.h
! dfa9684a4145cbb3466ce370c879c2d1  libstdc++-v3/config/os/aix/ctype_configure_char.cc
! 97aea7637d2869e67c62695ffece41ef  libstdc++-v3/config/os/aix/ctype_inline.h
! c514184ac09ab707df51f22a6ecb6350  libstdc++-v3/config/os/aix/os_defines.h
! 125005edb0a6200a472b26fcdffd92e3  libstdc++-v3/config/os/bionic/ctype_base.h
! bc1a025ee0ece9c226d6f3becf738590  libstdc++-v3/config/os/bionic/ctype_configure_char.cc
! 556ef0d8ffd9e67f2744985d7173b690  libstdc++-v3/config/os/bionic/ctype_inline.h
! fc64a65a6fd1a9f13efa7703038922ff  libstdc++-v3/config/os/bionic/os_defines.h
! 667e91679811edc249e78dee285f63f7  libstdc++-v3/config/os/bsd/darwin/ctype_base.h
! dfa9684a4145cbb3466ce370c879c2d1  libstdc++-v3/config/os/bsd/darwin/ctype_configure_char.cc
! 68d2b68b9f5027c28856ac5facb8a990  libstdc++-v3/config/os/bsd/darwin/ctype_inline.h
! 06b8d356d9f6c335c95b7f576a86747e  libstdc++-v3/config/os/bsd/darwin/os_defines.h
! 64eaf8f8fdcbdbe03f5e656342cb13dc  libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver
! f068b064d702dd2a36ec15f1073b38d7  libstdc++-v3/config/os/bsd/dragonfly/ctype_base.h
! 33b512ca2547604c4614d4680e8a04c4  libstdc++-v3/config/os/bsd/dragonfly/ctype_configure_char.cc
! fa3aeb90cd5da0089411d63d89c2fbc6  libstdc++-v3/config/os/bsd/dragonfly/ctype_inline.h
! 06eee83c99b69c5e2868c3e18e4efc80  libstdc++-v3/config/os/bsd/dragonfly/os_defines.h
! a489e2cdaf0172f03ae6e0cda64bc3d3  libstdc++-v3/config/os/bsd/freebsd/ctype_base.h
! 33b512ca2547604c4614d4680e8a04c4  libstdc++-v3/config/os/bsd/freebsd/ctype_configure_char.cc
! 68d2b68b9f5027c28856ac5facb8a990  libstdc++-v3/config/os/bsd/freebsd/ctype_inline.h
! dc1f0926984604ead72d7f97b820a275  libstdc++-v3/config/os/bsd/freebsd/os_defines.h
! 2ace9171a3040feb0e3be10e358803a8  libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
! 52a86e737b809e54d227a80dea3c45c9  libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc
! 297ccf09727a612502650661faea8d93  libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h
! b54dcfabf025bdecda8257439adaea14  libstdc++-v3/config/os/bsd/netbsd/os_defines.h
! d801bfb47e03e3d2423a420c0d52798e  libstdc++-v3/config/os/bsd/openbsd/ctype_base.h
! 8d64464b6e6917374e1ce1f6e4fc9318  libstdc++-v3/config/os/bsd/openbsd/ctype_configure_char.cc
! 556ef0d8ffd9e67f2744985d7173b690  libstdc++-v3/config/os/bsd/openbsd/ctype_inline.h
! 790be9c756b625f7d605246a558216a5  libstdc++-v3/config/os/bsd/openbsd/os_defines.h
! 7103471994eeae33773f84551410b794  libstdc++-v3/config/os/djgpp/ctype_base.h
! be72c21d75d10eb369136be0e9a759ec  libstdc++-v3/config/os/djgpp/ctype_configure_char.cc
! 12a708ee47f4b133f74fc4f13c459a2b  libstdc++-v3/config/os/djgpp/ctype_inline.h
! e67129dee00f97e36b626e64d728d5ab  libstdc++-v3/config/os/djgpp/error_constants.h
! 1038b0e94ad60c180c1c5ce8f4ebb1af  libstdc++-v3/config/os/djgpp/os_defines.h
! 1a129c1e10b1599775678ba44c782456  libstdc++-v3/config/os/generic/ctype_base.h
! dfa9684a4145cbb3466ce370c879c2d1  libstdc++-v3/config/os/generic/ctype_configure_char.cc
! 3bc510714a0a290c3e38b14991f5c28e  libstdc++-v3/config/os/generic/ctype_inline.h
! ff651708a1c55dcadd5d1a1deaa41eb8  libstdc++-v3/config/os/generic/error_constants.h
! 0993e47a9348f6f117e93943d158cb32  libstdc++-v3/config/os/generic/os_defines.h
  5b9a724ca8744a0e193a82f2ea8e9f5b  libstdc++-v3/config/os/gnu-linux/arm-eabi-extra.ver
! cb723a587a363c4fa71e6712aeff2458  libstdc++-v3/config/os/gnu-linux/ctype_base.h
! 392a5979e3829b759e1848f75ea231a7  libstdc++-v3/config/os/gnu-linux/ctype_configure_char.cc
! 6ccf22a952f8ff3a744f441f9faa02a3  libstdc++-v3/config/os/gnu-linux/ctype_inline.h
! e7a5616dfe1ba65fd2ef182675c2f3e4  libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver
! 63bfbd899e138a2361b556f27bf76bed  libstdc++-v3/config/os/gnu-linux/os_defines.h
! 7dd9d1c93692872f6caba3b914589ab8  libstdc++-v3/config/os/hpux/ctype_base.h
! dfcb95a6906bfd8758f8d0b94f77dfd5  libstdc++-v3/config/os/hpux/ctype_configure_char.cc
! 6ccf22a952f8ff3a744f441f9faa02a3  libstdc++-v3/config/os/hpux/ctype_inline.h
! 85f2924f663a8a499d543c3a964faba5  libstdc++-v3/config/os/hpux/os_defines.h
! e2dbd50370590fb8b234f5166323ad2b  libstdc++-v3/config/os/mingw32-w64/ctype_base.h
! c7fb84f12642c508c1b05faf1cb03f04  libstdc++-v3/config/os/mingw32-w64/ctype_configure_char.cc
! 84ad998318e668fa168bc934b005f462  libstdc++-v3/config/os/mingw32-w64/ctype_inline.h
! e862f13cfc7ae4b6a165382fede52668  libstdc++-v3/config/os/mingw32-w64/error_constants.h
! 21360719b3c15697dffb3d22da186d6c  libstdc++-v3/config/os/mingw32-w64/os_defines.h
! e2dbd50370590fb8b234f5166323ad2b  libstdc++-v3/config/os/mingw32/ctype_base.h
! c7fb84f12642c508c1b05faf1cb03f04  libstdc++-v3/config/os/mingw32/ctype_configure_char.cc
! 84ad998318e668fa168bc934b005f462  libstdc++-v3/config/os/mingw32/ctype_inline.h
! 2b53f5f7cbbb721558692a1875c9de74  libstdc++-v3/config/os/mingw32/error_constants.h
! 0b0e4f08759e5be735e99eaa8f0e59f6  libstdc++-v3/config/os/mingw32/os_defines.h
! f10aaa142c430593a003196ab0e95878  libstdc++-v3/config/os/newlib/ctype_base.h
! bc1a025ee0ece9c226d6f3becf738590  libstdc++-v3/config/os/newlib/ctype_configure_char.cc
! 07150cdc2da1e6ecfccf601148b7e32c  libstdc++-v3/config/os/newlib/ctype_inline.h
! 2f9c4d205383ad3b6d740b754ccaff8a  libstdc++-v3/config/os/newlib/os_defines.h
! b92f1235f2437f0493679e5d7c26d5f7  libstdc++-v3/config/os/qnx/qnx6.1/ctype_base.h
! a81057ec9a2f977c0ff57357421dd907  libstdc++-v3/config/os/qnx/qnx6.1/ctype_configure_char.cc
! 1f4e4426184b64186b0593e6b5b6ab38  libstdc++-v3/config/os/qnx/qnx6.1/ctype_inline.h
! 8d2147af8349194a055b5424017660a0  libstdc++-v3/config/os/qnx/qnx6.1/os_defines.h
! 272c08eb80b3594ae70337e726e5ca3b  libstdc++-v3/config/os/solaris/ctype_base.h
! 50da437b072b4a28f70cc29c744bf256  libstdc++-v3/config/os/solaris/ctype_configure_char.cc
! 6ccf22a952f8ff3a744f441f9faa02a3  libstdc++-v3/config/os/solaris/ctype_inline.h
! 824d1a32e6fceeae7a0b6899549e2537  libstdc++-v3/config/os/solaris/os_defines.h
! 42e322c2a348ee852dfe5306e2fe4832  libstdc++-v3/config/os/tpf/ctype_base.h
! 12d63b70ce53ebda57e6894a0bd7d955  libstdc++-v3/config/os/tpf/ctype_configure_char.cc
! bc404af6cf742c6a54826dd9350c6ab7  libstdc++-v3/config/os/tpf/ctype_inline.h
! 298f5e96f844c0be6b3932d2a25aaaf8  libstdc++-v3/config/os/tpf/os_defines.h
! 8e89915b30e915db2bad427809a7cd4a  libstdc++-v3/config/os/uclibc/ctype_base.h
! d589e7da95e6c856efe0535d28de9ed0  libstdc++-v3/config/os/uclibc/ctype_configure_char.cc
! 6ccf22a952f8ff3a744f441f9faa02a3  libstdc++-v3/config/os/uclibc/ctype_inline.h
! 6a9ebc2566da79ed29652139cab55aa6  libstdc++-v3/config/os/uclibc/os_defines.h
! 0e2b4019b8bde3055dfbbbee1127adab  libstdc++-v3/config/os/vxworks/ctype_base.h
! 1512dff9de35487fcd8b9eee7f1eb778  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
! cfbfaa59bb5275f80aa5b21dad2cf912  libstdc++-v3/config/os/vxworks/ctype_inline.h
! 099ac68f8469a88b6b1e11951e0ed4bd  libstdc++-v3/config/os/vxworks/os_defines.h
! 28516775bf8c6ec8ef287907279c635c  libstdc++-v3/configure
! d11905f1cc023209da26adc9d41f9308  libstdc++-v3/configure.ac
! 4878f285ce292dd64814701b1148c299  libstdc++-v3/configure.host
! f12b39e2d500465a4e8075fefea72280  libstdc++-v3/crossconfig.m4
! 1d078acc881fbe467d07945b452f2170  libstdc++-v3/doc/Makefile.am
! b8a5c51b5ccd2c0cc47018aef1c0d435  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
! ca3e62817fc4c45c6f1e23e555fbbab1  libstdc++-v3/doc/doxygen/doxygroups.cc
  520db39aef0e2a59418132af88b897ed  libstdc++-v3/doc/doxygen/mainpage.html
  3486d64b0aaa601908006a0e78395ca3  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
! 8d3d0719b43327ae94a379bcc3283bcd  libstdc++-v3/doc/doxygen/user.cfg.in
  66e139590a163a3e9d632f33fbe1d1b3  libstdc++-v3/doc/html/README
  c68ff21babfa14f20b98e36a2c808418  libstdc++-v3/doc/html/api.html
  fd168dc2b2d0c12b1e17b40ffec96390  libstdc++-v3/doc/html/bk02.html
  47886ba7da131bf3cbf81a27cada5f6f  libstdc++-v3/doc/html/bk03.html
! 2211b9b47cd9f2d47d55db52774152c9  libstdc++-v3/doc/html/faq.html
  1ae70f0bf94464b036515d333fff8ab2  libstdc++-v3/doc/html/images/confdeps.png
  d7f63b43e9f4c39cf71de7585de522ee  libstdc++-v3/doc/html/images/pbds_balls_and_bins.png
  22eedc841676a98f8ae8b95131ac4d7e  libstdc++-v3/doc/html/images/pbds_binary_priority_queue_int_push.png
--- 96787,97006 ----
  ced62eb7e4ae82690abb361aefcea876  libstdc++-v3/ChangeLog-2017
  72cd87c288677791bf39ac8327b1cf25  libstdc++-v3/ChangeLog-2018
  a8f4290dba5b481ad426148a03c75dd0  libstdc++-v3/ChangeLog-2019
! 0f81783bc492458ec96cea677852a49c  libstdc++-v3/ChangeLog-2020
! 008caca43b4e195eecb9c08bf29ba4d1  libstdc++-v3/Makefile.am
! 54e48e33eb9146948dff98aca20830c4  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! 5c5d1d21d25ef7bbc962ba2fcb00b1dc  libstdc++-v3/acinclude.m4
  734c1cbc8791fbceb09b49c5d07d6966  libstdc++-v3/aclocal.m4
! 9323354dc161f529752acc7cd2090a7c  libstdc++-v3/config.h.in
! b01fddf6d6bea14bdfb65dbd4c979845  libstdc++-v3/config/abi/compatibility.h
! 4dc0ed9711e1e8d1c3555df4a246013c  libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
  730569c0ef38f6e6322b3c4ac65253ce  libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
  ad5f7ad17c209326dd45364406b5a992  libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt
! 3564a8198041594b04f35e13701fdb53  libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt
! a3d616175c468c707a25b8abe6451940  libstdc++-v3/config/abi/post/i386-solaris/amd64/baseline_symbols.txt
! 9eb9f4479bb15ff4d341f401e0aa8122  libstdc++-v3/config/abi/post/i386-solaris/baseline_symbols.txt
! 3564a8198041594b04f35e13701fdb53  libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt
! 01500b319bb297b4059106c465b92567  libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
! 145f9897a5e2606b2eefcbdde501b065  libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt
  61308215d393f11169ace76935f2b034  libstdc++-v3/config/abi/post/mips-linux-gnu/baseline_symbols.txt
  725325d7b24195d1e6374ce4e24afdb0  libstdc++-v3/config/abi/post/mips64-linux-gnu/32/baseline_symbols.txt
  907face03890009654193fc67fa4e427  libstdc++-v3/config/abi/post/mips64-linux-gnu/64/baseline_symbols.txt
  1a34bda2bb4c3a576335343c0a4a9377  libstdc++-v3/config/abi/post/mips64-linux-gnu/baseline_symbols.txt
! 95e879d2bc31a3b6883a980d43f1f98b  libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt
! 95e879d2bc31a3b6883a980d43f1f98b  libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt
! 1c11af4e80d072f12bfd8bea657897b5  libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt
! 104287e40f1276a2b123d0a86f37d9b4  libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt
  3ec228e0d9301df0938cba4a7fb94374  libstdc++-v3/config/abi/post/s390-linux-gnu/baseline_symbols.txt
  3ec228e0d9301df0938cba4a7fb94374  libstdc++-v3/config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt
! cc660aa62a7606e3ef49a2277901708f  libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt
  cc65678819ec7ff06eaeed8b1a5455eb  libstdc++-v3/config/abi/post/sparc-linux-gnu/baseline_symbols.txt
! fc368e920573dc50de5e047e4bccd412  libstdc++-v3/config/abi/post/sparc-solaris/baseline_symbols.txt
! bcd4e2e4e8201e542c8c4ca1034a0207  libstdc++-v3/config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt
  ebf1c408e326c18c0c1f337bc5108fae  libstdc++-v3/config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt
  c224a11f9b7b76848462bffd472b20c2  libstdc++-v3/config/abi/post/sparc64-linux-gnu/baseline_symbols.txt
! 3564a8198041594b04f35e13701fdb53  libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt
! 8e58b877f0b2e8f064748ca17e6792dc  libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
! 483a11b93ae0da31d1f2f6470d4e7578  libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
  5c4c38aeca254313c616b84337c937c3  libstdc++-v3/config/abi/pre/float128.ver
! f7eaad9998541112063ab39f4999e54d  libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
! 551b9890ec6be122f02a273558c9b4b8  libstdc++-v3/config/abi/pre/gnu.ver
  b01f8da8f4373070847fe317fe8a546e  libstdc++-v3/config/abi/pre/none.ver
! b69693893d1f7b107322d8438366923d  libstdc++-v3/config/allocator/bitmap_allocator_base.h
! 1c94205ae266227c3b8fa7963e379d58  libstdc++-v3/config/allocator/malloc_allocator_base.h
! 03d060c69c8950eeef775a4142352b74  libstdc++-v3/config/allocator/mt_allocator_base.h
! 4365fd09a73a10159654eb9942efef79  libstdc++-v3/config/allocator/new_allocator_base.h
! 0761028626c5e517f9ba74a4258af9a5  libstdc++-v3/config/allocator/pool_allocator_base.h
! 5b0a4c5516eaea4f31c0b1e7bc63bf6d  libstdc++-v3/config/cpu/aarch64/opt/bits/opt_random.h
! f0fe3568b8311b075734f96e9b8090b6  libstdc++-v3/config/cpu/aarch64/opt/ext/opt_random.h
! b2aefc926c3ea38fd6487bae2de6c59e  libstdc++-v3/config/cpu/arm/cpu_defines.h
! 0c3862c71700bccd66a6bb29724c0d2f  libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h
! 2b1931457915dac67f8f618739c03820  libstdc++-v3/config/cpu/cris/atomic_word.h
! ab83a22dccd07762a8b8098660450680  libstdc++-v3/config/cpu/cris/atomicity.h
! 1e8289689465816810a529017de58414  libstdc++-v3/config/cpu/generic/atomic_word.h
! f24af2a59ddfc915878446ff97688302  libstdc++-v3/config/cpu/generic/atomicity_builtins/atomicity.h
! b56751a4d193ebd7c21e533ca365909b  libstdc++-v3/config/cpu/generic/atomicity_mutex/atomicity.h
! cbd94f1c4cc370db3b537c26221d0a33  libstdc++-v3/config/cpu/generic/cpu_defines.h
! a175cc0b5e33b924739aaccc76749492  libstdc++-v3/config/cpu/generic/cxxabi_tweaks.h
! 8c1184756d8797cc7f2df9e10b73d7e0  libstdc++-v3/config/cpu/generic/opt/bits/opt_random.h
! d9e89f177bdbbf9720d88d808b3e36e0  libstdc++-v3/config/cpu/generic/opt/ext/opt_random.h
! 2ee572e94d5ddcd3454dd044c2879de8  libstdc++-v3/config/cpu/hppa/atomicity.h
! 6824fa34134069ff9e3e92c5b5bcfedb  libstdc++-v3/config/cpu/i386/atomicity.h
! e955cd36dfb9b8644707aab6203e4ca0  libstdc++-v3/config/cpu/i486/atomicity.h
! c30d8eb6198648c318bba293396f0d18  libstdc++-v3/config/cpu/i486/opt/bits/opt_random.h
! a145f8193500dfe89c46611831e7a56c  libstdc++-v3/config/cpu/i486/opt/ext/opt_random.h
! 4cd31357d36aa72f5d6e7e68640f11cd  libstdc++-v3/config/cpu/m68k/atomicity.h
! b4c9ce8cc3ad255074673572be9f128a  libstdc++-v3/config/cpu/microblaze/cpu_defines.h
! b6eb737e4202479142250b8452f95480  libstdc++-v3/config/cpu/powerpc/cpu_defines.h
! 5c69a1641dbd9ac50625147ba7564eb1  libstdc++-v3/config/cpu/sh/atomicity.h
! bd302e8e3705d628b208d6541ef157b3  libstdc++-v3/config/cpu/sparc/atomic_word.h
! eb5be96f5a0cf5c10f6dd08072bf34c0  libstdc++-v3/config/cpu/sparc/atomicity.h
! 1bdb44d7c0267c1641088c2eff5f4170  libstdc++-v3/config/io/basic_file_stdio.cc
! 48ab156244c19bae78a4cb3e02d4c1c0  libstdc++-v3/config/io/basic_file_stdio.h
! abcc096dc907ecbc9e39655bb37a6c15  libstdc++-v3/config/io/c_io_stdio.h
! 31c16821352fc65fc31fd7b8af8f95bf  libstdc++-v3/config/locale/darwin/ctype_members.cc
! 3c6485c9fa1cd36908646e6a29084268  libstdc++-v3/config/locale/dragonfly/c_locale.cc
! bdb39998c54249aa2bbe1d8a7d9113e0  libstdc++-v3/config/locale/dragonfly/c_locale.h
! ba23dba0af7f9eb8e2703276d5830efb  libstdc++-v3/config/locale/dragonfly/codecvt_members.cc
! 81a1ec26795553f7d105b72734b8acc1  libstdc++-v3/config/locale/dragonfly/collate_members.cc
! 69ceb102c79692ddd787c931e4a9f69e  libstdc++-v3/config/locale/dragonfly/ctype_members.cc
! 58576c452c5095fde78406f149f1f513  libstdc++-v3/config/locale/dragonfly/monetary_members.cc
! 91bea296fb812b47214c3fd85a137eac  libstdc++-v3/config/locale/dragonfly/numeric_members.cc
! 3752dc3aac483b3d498ac93e16b6e446  libstdc++-v3/config/locale/dragonfly/time_members.cc
! e236d8764df2e10b3232b45c01b6647c  libstdc++-v3/config/locale/dragonfly/time_members.h
! edd7d76491a9ac45507933ec3f267b19  libstdc++-v3/config/locale/generic/c++locale_internal.h
! 0f490bdc1066c866b67ee9ce39e3ecff  libstdc++-v3/config/locale/generic/c_locale.cc
! 798bab72607ab12c33d75f77608c59a5  libstdc++-v3/config/locale/generic/c_locale.h
! e39bc2c58956ad6385c96816ce5a4a6b  libstdc++-v3/config/locale/generic/codecvt_members.cc
! 2e47923c2e1646eae5ea7f5d91d5d3c6  libstdc++-v3/config/locale/generic/collate_members.cc
! c50fb3eb8541c6040bd20991a159534b  libstdc++-v3/config/locale/generic/ctype_members.cc
! 164764f3d7079b336710c9575023ad88  libstdc++-v3/config/locale/generic/messages_members.cc
! 075ee9e75a61997c0841ea418e00f4ff  libstdc++-v3/config/locale/generic/messages_members.h
! 00b4c1e08f4d1435945b8c608a8dce0d  libstdc++-v3/config/locale/generic/monetary_members.cc
! dde8ce65414960886382af1f45a62b50  libstdc++-v3/config/locale/generic/numeric_members.cc
! 4a6e7b86431a7486f47a122fa2e429de  libstdc++-v3/config/locale/generic/time_members.cc
! f8763ab0b9b5e0a2724ff94e0cd88ab3  libstdc++-v3/config/locale/generic/time_members.h
! 451b2c2d87db61087d0018773d83e5fd  libstdc++-v3/config/locale/gnu/c++locale_internal.h
! aa1568d30650d78b49104b15ee3f7eeb  libstdc++-v3/config/locale/gnu/c_locale.cc
! 9c9d49b3755c740a857d3373548d02e4  libstdc++-v3/config/locale/gnu/c_locale.h
! 4827cfd6aeee201a315b5747ecffcf86  libstdc++-v3/config/locale/gnu/codecvt_members.cc
! 757b77385a197e7e2c16cf9cab2e6bc1  libstdc++-v3/config/locale/gnu/collate_members.cc
! 0c6e14e1f79bf1fb455b936359f1ffa3  libstdc++-v3/config/locale/gnu/ctype_members.cc
! 4de697d08762a46a8641121dd094a82a  libstdc++-v3/config/locale/gnu/messages_members.cc
! a8bf2cdd03ac04f9198eee377186b8ec  libstdc++-v3/config/locale/gnu/messages_members.h
! fbbd00d81da8dbaf733e77cd7d2537bd  libstdc++-v3/config/locale/gnu/monetary_members.cc
! 6f40f29b745a684a8f422e4e1c583ea4  libstdc++-v3/config/locale/gnu/numeric_members.cc
! 1b5d1a6664de5964e62fd5a3963aa930  libstdc++-v3/config/locale/gnu/time_members.cc
! 7d1470ee2722e7f5ee2eba7fb5954c8b  libstdc++-v3/config/locale/gnu/time_members.h
! e909229da85af1fe12546105e1200393  libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.cc
! 37e6b3f3f41540500a435af17625f242  libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.h
! f6f5f8ea691c3d436eaa4da5d9ccce08  libstdc++-v3/config/locale/ieee_1003.1-2001/messages_members.cc
! c0d342155fff6182328d5669b5b4dab0  libstdc++-v3/config/locale/ieee_1003.1-2001/messages_members.h
! e04a297f0b3696b14b5b58b4cdccd521  libstdc++-v3/config/locale/newlib/ctype_members.cc
! b0d17c0fcfd3407d6ec69337b8f36f5e  libstdc++-v3/config/os/aix/atomicity.h
! 787b4bc0e4ad81313fcabf39cbeb7034  libstdc++-v3/config/os/aix/ctype_base.h
! 73886695d0bba09b495be44138801960  libstdc++-v3/config/os/aix/ctype_configure_char.cc
! 235941859c59814ebcad236daf9df56f  libstdc++-v3/config/os/aix/ctype_inline.h
! 0892272137b1c94e18899bb7cd13f9d4  libstdc++-v3/config/os/aix/os_defines.h
! 7d1373c31caa4fdc44bcb11af08b4ab3  libstdc++-v3/config/os/aix/t-aix
! e248e9ad18c224787c7ecd59ed1c1be5  libstdc++-v3/config/os/bionic/ctype_base.h
! df3e291ccd8afccf10ccb45fcea9e669  libstdc++-v3/config/os/bionic/ctype_configure_char.cc
! 9d4065be61eb4d5767515334e1c9bcbc  libstdc++-v3/config/os/bionic/ctype_inline.h
! a3baceaeccc8885f6c3a367c82ce462b  libstdc++-v3/config/os/bionic/os_defines.h
! f5a102b966ee58824caab09e7b92c5fa  libstdc++-v3/config/os/bsd/darwin/ctype_base.h
! 73886695d0bba09b495be44138801960  libstdc++-v3/config/os/bsd/darwin/ctype_configure_char.cc
! 8a4e43750fc88aac4b1290e0de5b1da5  libstdc++-v3/config/os/bsd/darwin/ctype_inline.h
! 7fb69cc175e0cc363fe16c65c04c695c  libstdc++-v3/config/os/bsd/darwin/os_defines.h
! 9e91dfcb11e4c78744df0e1e0cf69b5b  libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver
! 2db5914060fa8f5c79f8ecc010cb96e3  libstdc++-v3/config/os/bsd/dragonfly/ctype_base.h
! e64fc983738f5792c9fbba8c238a4969  libstdc++-v3/config/os/bsd/dragonfly/ctype_configure_char.cc
! fa9e404808dac4ca18e81b063be826b6  libstdc++-v3/config/os/bsd/dragonfly/ctype_inline.h
! c8e496b609711c46f381d3b57a278abc  libstdc++-v3/config/os/bsd/dragonfly/os_defines.h
! d5c6493a6e71b421fe67f0a4393c61ee  libstdc++-v3/config/os/bsd/freebsd/ctype_base.h
! e64fc983738f5792c9fbba8c238a4969  libstdc++-v3/config/os/bsd/freebsd/ctype_configure_char.cc
! 8a4e43750fc88aac4b1290e0de5b1da5  libstdc++-v3/config/os/bsd/freebsd/ctype_inline.h
! 3871865b552af9913778448e197a6381  libstdc++-v3/config/os/bsd/freebsd/os_defines.h
! f0895d3fdd3bd48a385aa843f3095bbb  libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
! f7ead843d195f22a21a451820b25b51f  libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc
! e08422e5af575115b4c16ddc9bba97f1  libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h
! f5a486aeaa7c18874eb894995abf2c35  libstdc++-v3/config/os/bsd/netbsd/os_defines.h
! c4c1f9a8c37ac8327cad0ff43b6cafd7  libstdc++-v3/config/os/bsd/openbsd/ctype_base.h
! cc5678fcd9d64b25e9388cf40b13cfe8  libstdc++-v3/config/os/bsd/openbsd/ctype_configure_char.cc
! 9d4065be61eb4d5767515334e1c9bcbc  libstdc++-v3/config/os/bsd/openbsd/ctype_inline.h
! 38bc550b77385f69c9acae0ad2c04428  libstdc++-v3/config/os/bsd/openbsd/os_defines.h
! 1a11f458397c597d3295d3f1f996df42  libstdc++-v3/config/os/djgpp/ctype_base.h
! 8f03318cb69d0bec010262170bf91e82  libstdc++-v3/config/os/djgpp/ctype_configure_char.cc
! f4f2b26e27c3957ff5929b885646364f  libstdc++-v3/config/os/djgpp/ctype_inline.h
! 97769d925c6f39dc958a006c9ef4e956  libstdc++-v3/config/os/djgpp/error_constants.h
! 6d36646c13456c0ce99b64fd49a208be  libstdc++-v3/config/os/djgpp/os_defines.h
! bf2705404dd521ebcceeafe57468080d  libstdc++-v3/config/os/generic/ctype_base.h
! 73886695d0bba09b495be44138801960  libstdc++-v3/config/os/generic/ctype_configure_char.cc
! 48817692e8c606525ef9889af16b6269  libstdc++-v3/config/os/generic/ctype_inline.h
! 47fdd345f650cdcb509d00e47f36e44a  libstdc++-v3/config/os/generic/error_constants.h
! 431a6ecf06ba237be9373b2cb922d764  libstdc++-v3/config/os/generic/os_defines.h
  5b9a724ca8744a0e193a82f2ea8e9f5b  libstdc++-v3/config/os/gnu-linux/arm-eabi-extra.ver
! c99864811cb81795f882ee8d709a39f8  libstdc++-v3/config/os/gnu-linux/ctype_base.h
! 3c7ff25faf5e6a1988405d89f350a6a2  libstdc++-v3/config/os/gnu-linux/ctype_configure_char.cc
! 82fbb19a1614c44d6c3f0cb87465fcc6  libstdc++-v3/config/os/gnu-linux/ctype_inline.h
! df7b0a76ea127cef7009bec82b53dcee  libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver
! b44c419a58eaf15493ce8e0eaaf56e5a  libstdc++-v3/config/os/gnu-linux/ldbl-ieee128-extra.ver
! 1cefcd2d26ce8f7a59b501efd366ee39  libstdc++-v3/config/os/gnu-linux/os_defines.h
! 959e3af95f997505166123d88fee00a0  libstdc++-v3/config/os/hpux/ctype_base.h
! 889db89ec247613e9652018bee43d6cb  libstdc++-v3/config/os/hpux/ctype_configure_char.cc
! 82fbb19a1614c44d6c3f0cb87465fcc6  libstdc++-v3/config/os/hpux/ctype_inline.h
! 3b501e43f53a75ac70f53bc4aad5d6e3  libstdc++-v3/config/os/hpux/os_defines.h
! 156a8e1620699112640e505cf15e26a5  libstdc++-v3/config/os/mingw32-w64/ctype_base.h
! 2c39cdce70f9febc74daf7b01798cdd0  libstdc++-v3/config/os/mingw32-w64/ctype_configure_char.cc
! 33732f962d7ed1460f46312ef2dd27d3  libstdc++-v3/config/os/mingw32-w64/ctype_inline.h
! 45ed33e62334b04b28bae5d70bbd97ed  libstdc++-v3/config/os/mingw32-w64/error_constants.h
! dbcc08f425608c78c535e3c38bdd86d6  libstdc++-v3/config/os/mingw32-w64/os_defines.h
! 156a8e1620699112640e505cf15e26a5  libstdc++-v3/config/os/mingw32/ctype_base.h
! 2c39cdce70f9febc74daf7b01798cdd0  libstdc++-v3/config/os/mingw32/ctype_configure_char.cc
! 33732f962d7ed1460f46312ef2dd27d3  libstdc++-v3/config/os/mingw32/ctype_inline.h
! 1a66c862ca32e249d8d7b394d092bd69  libstdc++-v3/config/os/mingw32/error_constants.h
! 6970067bac107c5875f4a6a43eea7718  libstdc++-v3/config/os/mingw32/os_defines.h
! 364a7a506055c8d013ec87ba46e239b9  libstdc++-v3/config/os/newlib/ctype_base.h
! df3e291ccd8afccf10ccb45fcea9e669  libstdc++-v3/config/os/newlib/ctype_configure_char.cc
! 31bafa66fdbad23f4a4acafa374e5853  libstdc++-v3/config/os/newlib/ctype_inline.h
! 214bac3c44b72b39bb44d8032b334a5d  libstdc++-v3/config/os/newlib/os_defines.h
! ee33087222222912f28a34cd13868247  libstdc++-v3/config/os/qnx/qnx6.1/ctype_base.h
! 1dcd257abf8e277fbeac7e632e616378  libstdc++-v3/config/os/qnx/qnx6.1/ctype_configure_char.cc
! f8117032e3c3cb0c669168dbf609cdd6  libstdc++-v3/config/os/qnx/qnx6.1/ctype_inline.h
! 9ec2b8386ca13ba9428a86acb1849d74  libstdc++-v3/config/os/qnx/qnx6.1/os_defines.h
! b2000e2dc020a695a3a1489a4315fe2d  libstdc++-v3/config/os/solaris/ctype_base.h
! 7345b060e9a6c300bdced273ee4b1088  libstdc++-v3/config/os/solaris/ctype_configure_char.cc
! 82fbb19a1614c44d6c3f0cb87465fcc6  libstdc++-v3/config/os/solaris/ctype_inline.h
! 1f47d1ff1bbeac9d0382d81c0ebb1ca7  libstdc++-v3/config/os/solaris/os_defines.h
! 0c92f0a4c060de6ca262481e5cdf328f  libstdc++-v3/config/os/tpf/ctype_base.h
! d880bf6c95e32000add4194f7f9e953f  libstdc++-v3/config/os/tpf/ctype_configure_char.cc
! 1349579e5264a472591d110d2a124b7b  libstdc++-v3/config/os/tpf/ctype_inline.h
! 523c1749803da12f34d25c6eddedd49e  libstdc++-v3/config/os/tpf/os_defines.h
! f13814697af5c87d966915337eb157b4  libstdc++-v3/config/os/uclibc/ctype_base.h
! d00b9bfddb0e8397de2d35e76f678cf4  libstdc++-v3/config/os/uclibc/ctype_configure_char.cc
! 82fbb19a1614c44d6c3f0cb87465fcc6  libstdc++-v3/config/os/uclibc/ctype_inline.h
! 6c614f8a0b68218267f1985f75307b0f  libstdc++-v3/config/os/uclibc/os_defines.h
! 31378f9cda46a5d426ad717bfdf1b16a  libstdc++-v3/config/os/vxworks/ctype_base.h
! 233fbfff89917179ae9fc7fecbd37a4b  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
! 1b61257cbf79eed6c1465ccd5906ed98  libstdc++-v3/config/os/vxworks/ctype_inline.h
! cf270f423d6238158d5385095a7fc932  libstdc++-v3/config/os/vxworks/os_defines.h
! c800b52e2f33565f08fbcd95dfd8766a  libstdc++-v3/configure
! 95dd8407d2fb966f421efafec0f907ff  libstdc++-v3/configure.ac
! 6f48d91af78c16e62f258e7bedec5125  libstdc++-v3/configure.host
! 1ad0555cf1f65702d35f5d19683b6a49  libstdc++-v3/crossconfig.m4
! 1418ec33ef872f309726f2187f19bd33  libstdc++-v3/doc/Makefile.am
! 5385f85dbbbe80a7d7ab79e63698294f  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
! de3401fae851679a8dc5c138f98ef21d  libstdc++-v3/doc/doxygen/doxygroups.cc
  520db39aef0e2a59418132af88b897ed  libstdc++-v3/doc/doxygen/mainpage.html
  3486d64b0aaa601908006a0e78395ca3  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
! f1c6ab30bee4d3ee41f2cdc190a44645  libstdc++-v3/doc/doxygen/user.cfg.in
  66e139590a163a3e9d632f33fbe1d1b3  libstdc++-v3/doc/html/README
  c68ff21babfa14f20b98e36a2c808418  libstdc++-v3/doc/html/api.html
  fd168dc2b2d0c12b1e17b40ffec96390  libstdc++-v3/doc/html/bk02.html
  47886ba7da131bf3cbf81a27cada5f6f  libstdc++-v3/doc/html/bk03.html
! da9e55325b837b7f6167339db94dd606  libstdc++-v3/doc/html/faq.html
  1ae70f0bf94464b036515d333fff8ab2  libstdc++-v3/doc/html/images/confdeps.png
  d7f63b43e9f4c39cf71de7585de522ee  libstdc++-v3/doc/html/images/pbds_balls_and_bins.png
  22eedc841676a98f8ae8b95131ac4d7e  libstdc++-v3/doc/html/images/pbds_binary_priority_queue_int_push.png
*************** d7249eb4d31bd107d0b09ea3c80cb723  libstd
*** 90836,90869 ****
  1d86b338a316806c80b250eb132ac6dd  libstdc++-v3/doc/html/images/pbds_tree_text_lor_find.png
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
! df179506f96fcb91052f81a4364915b5  libstdc++-v3/doc/html/index.html
! c1e5ffe8cab62b023f6ec0921dae323f  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
! ed0df2a39ee4dc6f7612c69f53f6f5a6  libstdc++-v3/doc/html/manual/api.html
! 5da5f8ee60b9c017065648d24e093ac6  libstdc++-v3/doc/html/manual/appendix.html
  9fecd7dab1bd0d46e97d36cded231ebe  libstdc++-v3/doc/html/manual/appendix_contributing.html
  23038a3eb57967596dd7dc4f944e55e6  libstdc++-v3/doc/html/manual/appendix_free.html
  7bedd2c8f6a4683546db552dc3e8261f  libstdc++-v3/doc/html/manual/appendix_gfdl.html
  502f9b7267830b21cb88745d060faacf  libstdc++-v3/doc/html/manual/appendix_gpl.html
! 58c2bd62cb2eb393093972c271d96a13  libstdc++-v3/doc/html/manual/appendix_porting.html
  88601e29445579d77cd6a3a88c8df909  libstdc++-v3/doc/html/manual/associative.html
  b8ac9fc2f2cfcaed0450c79e2fb01569  libstdc++-v3/doc/html/manual/atomics.html
! 3fc7d36497eb9024c74305a4517d106b  libstdc++-v3/doc/html/manual/backwards.html
  c60c6ae778d5dedae24ac21abf948bdb  libstdc++-v3/doc/html/manual/bitmap_allocator.html
  3a3d01d1d9478286b8c505d1449531d4  libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html
! cc84e6627ef0e8a9c3bc0abb7a2a9efe  libstdc++-v3/doc/html/manual/bugs.html
  cc3700f2fde50987f186f23abf98a7b1  libstdc++-v3/doc/html/manual/concept_checking.html
  f3a54a6315d716742603d33f454f2c19  libstdc++-v3/doc/html/manual/concurrency.html
! 038cc9d13126720d0defabe93ce3bd32  libstdc++-v3/doc/html/manual/configure.html
  af4e79b9e55fd023eeb0459df34a4a82  libstdc++-v3/doc/html/manual/containers.html
  c7e40c1085e414b3b4d5896db4013205  libstdc++-v3/doc/html/manual/containers_and_c.html
! 6060f7c7d98b892449cbf4afee75a6a2  libstdc++-v3/doc/html/manual/debug.html
  1bd34529d162b6f3a08d5f2ea4943c6a  libstdc++-v3/doc/html/manual/debug_mode.html
  1cdde24f16865575b93bcb86156f70e5  libstdc++-v3/doc/html/manual/debug_mode_design.html
  fc2f4ac9d9c05ca8c4dce6b46e259f97  libstdc++-v3/doc/html/manual/debug_mode_semantics.html
  33325138d9fa5d5628cdb1dd11cdef77  libstdc++-v3/doc/html/manual/debug_mode_using.html
  7f6c5a9eb000f65ee1888d459beb9dd5  libstdc++-v3/doc/html/manual/diagnostics.html
! 7d990cee6d511e5784d6ea8b4f44914d  libstdc++-v3/doc/html/manual/documentation_hacking.html
  44375d933be3e667b4c31334c041decb  libstdc++-v3/doc/html/manual/dynamic_memory.html
  55666dfa05ec7aae2596d6968f6fdb38  libstdc++-v3/doc/html/manual/errno.html
  e47e050922ad8c8f67f42be36ea507c4  libstdc++-v3/doc/html/manual/ext_algorithms.html
--- 97080,97113 ----
  1d86b338a316806c80b250eb132ac6dd  libstdc++-v3/doc/html/images/pbds_tree_text_lor_find.png
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
! c31c56e341c4377c8c4d0ab3861a0fce  libstdc++-v3/doc/html/index.html
! 24de5f936e90a1f57f037f166ff75004  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
! 70a5fa3916abe3de8650b93632b6914b  libstdc++-v3/doc/html/manual/api.html
! 7c6d43d50040fdcfce63d3ae3b6a56dc  libstdc++-v3/doc/html/manual/appendix.html
  9fecd7dab1bd0d46e97d36cded231ebe  libstdc++-v3/doc/html/manual/appendix_contributing.html
  23038a3eb57967596dd7dc4f944e55e6  libstdc++-v3/doc/html/manual/appendix_free.html
  7bedd2c8f6a4683546db552dc3e8261f  libstdc++-v3/doc/html/manual/appendix_gfdl.html
  502f9b7267830b21cb88745d060faacf  libstdc++-v3/doc/html/manual/appendix_gpl.html
! 464ade72999da1197a60a12548a37352  libstdc++-v3/doc/html/manual/appendix_porting.html
  88601e29445579d77cd6a3a88c8df909  libstdc++-v3/doc/html/manual/associative.html
  b8ac9fc2f2cfcaed0450c79e2fb01569  libstdc++-v3/doc/html/manual/atomics.html
! d30e8a474595941b24a6493ad08f78d9  libstdc++-v3/doc/html/manual/backwards.html
  c60c6ae778d5dedae24ac21abf948bdb  libstdc++-v3/doc/html/manual/bitmap_allocator.html
  3a3d01d1d9478286b8c505d1449531d4  libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html
! f6f0410c2bcc234e2fa3a5dd8949e086  libstdc++-v3/doc/html/manual/bugs.html
  cc3700f2fde50987f186f23abf98a7b1  libstdc++-v3/doc/html/manual/concept_checking.html
  f3a54a6315d716742603d33f454f2c19  libstdc++-v3/doc/html/manual/concurrency.html
! 99088f38a5f288b88340a71d68f773eb  libstdc++-v3/doc/html/manual/configure.html
  af4e79b9e55fd023eeb0459df34a4a82  libstdc++-v3/doc/html/manual/containers.html
  c7e40c1085e414b3b4d5896db4013205  libstdc++-v3/doc/html/manual/containers_and_c.html
! f71d3ed5d8c1753572ba02518e3744a9  libstdc++-v3/doc/html/manual/debug.html
  1bd34529d162b6f3a08d5f2ea4943c6a  libstdc++-v3/doc/html/manual/debug_mode.html
  1cdde24f16865575b93bcb86156f70e5  libstdc++-v3/doc/html/manual/debug_mode_design.html
  fc2f4ac9d9c05ca8c4dce6b46e259f97  libstdc++-v3/doc/html/manual/debug_mode_semantics.html
  33325138d9fa5d5628cdb1dd11cdef77  libstdc++-v3/doc/html/manual/debug_mode_using.html
  7f6c5a9eb000f65ee1888d459beb9dd5  libstdc++-v3/doc/html/manual/diagnostics.html
! f1cca6d534c470a60343b0c88f4b5c4a  libstdc++-v3/doc/html/manual/documentation_hacking.html
  44375d933be3e667b4c31334c041decb  libstdc++-v3/doc/html/manual/dynamic_memory.html
  55666dfa05ec7aae2596d6968f6fdb38  libstdc++-v3/doc/html/manual/errno.html
  e47e050922ad8c8f67f42be36ea507c4  libstdc++-v3/doc/html/manual/ext_algorithms.html
*************** afcc2751dae09e088abc1e3175cb94cc  libstd
*** 90879,90891 ****
  6d380acac52eb8c888a54068e44b16ac  libstdc++-v3/doc/html/manual/ext_preface.html
  5632eb8ef681cd35b41be7eb7a3d7a98  libstdc++-v3/doc/html/manual/ext_sgi.html
  9b34310c7cb7faa4373ee6683678c457  libstdc++-v3/doc/html/manual/ext_utilities.html
! 00c415f7a8c72582b50938a7eb8366e7  libstdc++-v3/doc/html/manual/extensions.html
! 35b79745331dead1ad1971dd05389baf  libstdc++-v3/doc/html/manual/facets.html
  9b06f8b16b4ba69e1269f98bb22377f2  libstdc++-v3/doc/html/manual/fstreams.html
  b404abb1e78a27e8a8980eb14ec27bab  libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
! 4594f00fd54dea536f6a64d04948a56c  libstdc++-v3/doc/html/manual/index.html
  8687facb6d19ccc2a663efbc50e745a1  libstdc++-v3/doc/html/manual/internals.html
! 4b8578e3de6c36c2681abb0a4d88b99f  libstdc++-v3/doc/html/manual/intro.html
  46de5aefef02b8c599fc816bea53ae67  libstdc++-v3/doc/html/manual/io.html
  89dd67b210011f646675fa2ede886305  libstdc++-v3/doc/html/manual/io_and_c.html
  32f6d6929349f8f96de44fbdd842ed48  libstdc++-v3/doc/html/manual/iterators.html
--- 97123,97135 ----
  6d380acac52eb8c888a54068e44b16ac  libstdc++-v3/doc/html/manual/ext_preface.html
  5632eb8ef681cd35b41be7eb7a3d7a98  libstdc++-v3/doc/html/manual/ext_sgi.html
  9b34310c7cb7faa4373ee6683678c457  libstdc++-v3/doc/html/manual/ext_utilities.html
! 5c3d4b1da33055adb0a5fc9742fdbe19  libstdc++-v3/doc/html/manual/extensions.html
! 909760c7437c6622b56dcc4fb9ba89e8  libstdc++-v3/doc/html/manual/facets.html
  9b06f8b16b4ba69e1269f98bb22377f2  libstdc++-v3/doc/html/manual/fstreams.html
  b404abb1e78a27e8a8980eb14ec27bab  libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
! e39219ab2b0d00f3de0b1cbf5c06eeba  libstdc++-v3/doc/html/manual/index.html
  8687facb6d19ccc2a663efbc50e745a1  libstdc++-v3/doc/html/manual/internals.html
! 29e0671531d99a27944e6d073ec62182  libstdc++-v3/doc/html/manual/intro.html
  46de5aefef02b8c599fc816bea53ae67  libstdc++-v3/doc/html/manual/io.html
  89dd67b210011f646675fa2ede886305  libstdc++-v3/doc/html/manual/io_and_c.html
  32f6d6929349f8f96de44fbdd842ed48  libstdc++-v3/doc/html/manual/iterators.html
*************** f9f0e84051f62c45dfb0a2c150dff6ee  libstd
*** 90906,90915 ****
  ecf6c505a75fa3dff283b1fefdda671b  libstdc++-v3/doc/html/manual/parallel_mode_semantics.html
  e2c97bcb68cbed2f84d4599f561c91d0  libstdc++-v3/doc/html/manual/parallel_mode_test.html
  935f34a82f6ef3b0dc60b8d3a06563ae  libstdc++-v3/doc/html/manual/parallel_mode_using.html
! 6dcb7ee01b181342aec4f8566212149e  libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html
! ecd781c9c91efd08cecf2f20fcb3db18  libstdc++-v3/doc/html/manual/policy_data_structures.html
  84c9bc8c54a3de8b4d90dfe3b438bc43  libstdc++-v3/doc/html/manual/policy_data_structures_ack.html
! 55d3b7158a656f31f208d0219fbb33fa  libstdc++-v3/doc/html/manual/policy_data_structures_design.html
  9acf818681732e9c264224c86b5ffdb3  libstdc++-v3/doc/html/manual/policy_data_structures_using.html
  46aa9a22800aa10982b2c82718b9606f  libstdc++-v3/doc/html/manual/profile_mode.html
  c000d7803b4aea724a6ea6b5846e17e7  libstdc++-v3/doc/html/manual/profile_mode_api.html
--- 97150,97159 ----
  ecf6c505a75fa3dff283b1fefdda671b  libstdc++-v3/doc/html/manual/parallel_mode_semantics.html
  e2c97bcb68cbed2f84d4599f561c91d0  libstdc++-v3/doc/html/manual/parallel_mode_test.html
  935f34a82f6ef3b0dc60b8d3a06563ae  libstdc++-v3/doc/html/manual/parallel_mode_using.html
! 9979d7cb4d5cf7e6587881acebf84a4d  libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html
! 10761aeffaaab6e15c4e734c9f3f5332  libstdc++-v3/doc/html/manual/policy_data_structures.html
  84c9bc8c54a3de8b4d90dfe3b438bc43  libstdc++-v3/doc/html/manual/policy_data_structures_ack.html
! d973b7693c2b6c717784b81d549c61e5  libstdc++-v3/doc/html/manual/policy_data_structures_design.html
  9acf818681732e9c264224c86b5ffdb3  libstdc++-v3/doc/html/manual/policy_data_structures_using.html
  46aa9a22800aa10982b2c82718b9606f  libstdc++-v3/doc/html/manual/profile_mode.html
  c000d7803b4aea724a6ea6b5846e17e7  libstdc++-v3/doc/html/manual/profile_mode_api.html
*************** dc012f6bbeb24332ca023dc15d6da9cf  libstd
*** 90919,90928 ****
  d55e182adbf08772ec85b18d390b0dbb  libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html
  0e9a02c563561ad32d5b24fd930bf8f5  libstdc++-v3/doc/html/manual/profile_mode_impl.html
  30dc2d04c79d520f048c2759bf437b5b  libstdc++-v3/doc/html/manual/setup.html
! 722af7e8800eb4ecd31806b2e4bd20e5  libstdc++-v3/doc/html/manual/source_code_style.html
  f875f3f4cddfe4fee6aff2308ccb4563  libstdc++-v3/doc/html/manual/source_design_notes.html
  391422dd4f4cdbd4d764a952a0f345e6  libstdc++-v3/doc/html/manual/source_organization.html
! bb6345d66b568394a1dcc7e1d0fde2ce  libstdc++-v3/doc/html/manual/status.html
  ea0c531c09fa230f346f8ba700961e4a  libstdc++-v3/doc/html/manual/std_contents.html
  dbb5f81a9e8864374fbb835eaa4e8b0d  libstdc++-v3/doc/html/manual/streambufs.html
  47e6a6ef4752e7c7e3ecb2a4948a7514  libstdc++-v3/doc/html/manual/strings.html
--- 97163,97172 ----
  d55e182adbf08772ec85b18d390b0dbb  libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html
  0e9a02c563561ad32d5b24fd930bf8f5  libstdc++-v3/doc/html/manual/profile_mode_impl.html
  30dc2d04c79d520f048c2759bf437b5b  libstdc++-v3/doc/html/manual/setup.html
! f82628740b7b95e95da49ce234a05bca  libstdc++-v3/doc/html/manual/source_code_style.html
  f875f3f4cddfe4fee6aff2308ccb4563  libstdc++-v3/doc/html/manual/source_design_notes.html
  391422dd4f4cdbd4d764a952a0f345e6  libstdc++-v3/doc/html/manual/source_organization.html
! a3d94c444f70f7404a1c9ed58112fe81  libstdc++-v3/doc/html/manual/status.html
  ea0c531c09fa230f346f8ba700961e4a  libstdc++-v3/doc/html/manual/std_contents.html
  dbb5f81a9e8864374fbb835eaa4e8b0d  libstdc++-v3/doc/html/manual/streambufs.html
  47e6a6ef4752e7c7e3ecb2a4948a7514  libstdc++-v3/doc/html/manual/strings.html
*************** e19e711d0b369090f4782ac1fc0792bd  libstd
*** 90933,90954 ****
  c39b927efcec5ac84139c1490c8ef320  libstdc++-v3/doc/html/manual/traits.html
  530b96535baacfe35df2e65f9dfe7efc  libstdc++-v3/doc/html/manual/unordered_associative.html
  aa7b0f41bad16f799c166f2db354e106  libstdc++-v3/doc/html/manual/using.html
! e5a44446efe24c37e9b107d443d76878  libstdc++-v3/doc/html/manual/using_concurrency.html
  79fb9de4a4c89a913a76e1828500499d  libstdc++-v3/doc/html/manual/using_dual_abi.html
  4868e3591133577974ca85a537dbd8a0  libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
! 463afe53824d0e1da00eae28ed5e4925  libstdc++-v3/doc/html/manual/using_exceptions.html
! 290a5a60538cbc1f308ab6c40e833bb7  libstdc++-v3/doc/html/manual/using_headers.html
  9633d55d0a80170c7115cdfd40bedcb4  libstdc++-v3/doc/html/manual/using_macros.html
  ccc3b1a320ccc49a977c80546610195b  libstdc++-v3/doc/html/manual/using_namespaces.html
  d881fcffb799c09a28d8174ccb1326a2  libstdc++-v3/doc/html/manual/utilities.html
  ccbc0492a648982f2dc225595bdbc567  libstdc++-v3/doc/xml/api.xml
  61748d51ede56b338ef61ce9232c23e0  libstdc++-v3/doc/xml/authors.xml
! f5a41d4f7585b850b3182fc5f4888f93  libstdc++-v3/doc/xml/book.txml
! 95d1335e76860d53246f3e400231ec38  libstdc++-v3/doc/xml/chapter.txml
! 7f8c520dc83013026c671c5c342f73e2  libstdc++-v3/doc/xml/class.txml
! 1b1212091727965bb7968b8ad8a1c502  libstdc++-v3/doc/xml/faq.xml
! f7459abb0d4a0265176aaada5a73bd08  libstdc++-v3/doc/xml/gnu/fdl-1.3.xml
! 586a107d5b259aea253440bc588765e9  libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
  18a6390297702ec8fd75cbcc525d2005  libstdc++-v3/doc/xml/images/confdeps.dot
  d572550db5e38d8d5b04bae7afe01124  libstdc++-v3/doc/xml/images/confdeps.pdf
  1ae70f0bf94464b036515d333fff8ab2  libstdc++-v3/doc/xml/images/confdeps.png
--- 97177,97198 ----
  c39b927efcec5ac84139c1490c8ef320  libstdc++-v3/doc/html/manual/traits.html
  530b96535baacfe35df2e65f9dfe7efc  libstdc++-v3/doc/html/manual/unordered_associative.html
  aa7b0f41bad16f799c166f2db354e106  libstdc++-v3/doc/html/manual/using.html
! a98d94ba8ccfb620e98ebfe01192e61e  libstdc++-v3/doc/html/manual/using_concurrency.html
  79fb9de4a4c89a913a76e1828500499d  libstdc++-v3/doc/html/manual/using_dual_abi.html
  4868e3591133577974ca85a537dbd8a0  libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
! b9abf80a75c223a9423b212d20240602  libstdc++-v3/doc/html/manual/using_exceptions.html
! 8fc6625206a4feba33ced5fa38ab3af8  libstdc++-v3/doc/html/manual/using_headers.html
  9633d55d0a80170c7115cdfd40bedcb4  libstdc++-v3/doc/html/manual/using_macros.html
  ccc3b1a320ccc49a977c80546610195b  libstdc++-v3/doc/html/manual/using_namespaces.html
  d881fcffb799c09a28d8174ccb1326a2  libstdc++-v3/doc/html/manual/utilities.html
  ccbc0492a648982f2dc225595bdbc567  libstdc++-v3/doc/xml/api.xml
  61748d51ede56b338ef61ce9232c23e0  libstdc++-v3/doc/xml/authors.xml
! 5906074c27c57c65b220c35bbcb2c5ec  libstdc++-v3/doc/xml/book.txml
! 44d3a92b83abfb18efac80519c79b44c  libstdc++-v3/doc/xml/chapter.txml
! 011b8e6a5442e4dc08f02e7295b644a3  libstdc++-v3/doc/xml/class.txml
! 2f5ea82382e50f24f4d784b7273c2c42  libstdc++-v3/doc/xml/faq.xml
! ea77580f7e81e2c49aea3f425c01ee2b  libstdc++-v3/doc/xml/gnu/fdl-1.3.xml
! 56bb32e9ab9358834c5f8eca2cd0e969  libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
  18a6390297702ec8fd75cbcc525d2005  libstdc++-v3/doc/xml/images/confdeps.dot
  d572550db5e38d8d5b04bae7afe01124  libstdc++-v3/doc/xml/images/confdeps.pdf
  1ae70f0bf94464b036515d333fff8ab2  libstdc++-v3/doc/xml/images/confdeps.png
*************** cc132f90a00a3ca05f64b578f9e332aa  libstd
*** 91126,96755 ****
  f63bfdc03ba2b82c74864f02206d7c52  libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find.svg
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/xml/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/xml/images/pbds_update_seq_diagram.png
! da68711270488c086ffe2bdc30f00bfc  libstdc++-v3/doc/xml/manual/abi.xml
! 6a68f07a8b8abd9e65846432ed52d646  libstdc++-v3/doc/xml/manual/algorithms.xml
! 7075c80cd053d72a380cd348dbff7d47  libstdc++-v3/doc/xml/manual/allocator.xml
! 612c73755f226b71336ad68a706390cf  libstdc++-v3/doc/xml/manual/appendix_contributing.xml
! b372b87067d03fedce176460f04e8a2e  libstdc++-v3/doc/xml/manual/appendix_free.xml
! fddfbac311009ebd3056c4edd7ee522a  libstdc++-v3/doc/xml/manual/appendix_porting.xml
! e0b6ea09e982758f8a79d0d165939943  libstdc++-v3/doc/xml/manual/atomics.xml
! 41f9578438e22c82fe9f70dc482cdca1  libstdc++-v3/doc/xml/manual/auto_ptr.xml
! 4b3d640f3d54f54764f35e0c8faaa9b2  libstdc++-v3/doc/xml/manual/backwards_compatibility.xml
! 9890a9635fbc47991765f74f8727c01b  libstdc++-v3/doc/xml/manual/bitmap_allocator.xml
! 0b5f349e0cb157661fd44b59627716e3  libstdc++-v3/doc/xml/manual/build_hacking.xml
! e6ca26c475748296f849f8024304550a  libstdc++-v3/doc/xml/manual/codecvt.xml
! 5e6aec06cc4fb89c3732b636f9186077  libstdc++-v3/doc/xml/manual/concurrency.xml
! 419226b3ec7857dff17ed8d82f12a2d0  libstdc++-v3/doc/xml/manual/concurrency_extensions.xml
! 1d41fd62d41bf7b96b6bd59fd95248de  libstdc++-v3/doc/xml/manual/configure.xml
! 550901587025784cb2582180fbca6a20  libstdc++-v3/doc/xml/manual/containers.xml
! 35d8bc77747044001636800a86dbac24  libstdc++-v3/doc/xml/manual/ctype.xml
! 4f050415a8edf6ee0d878b8e07db514b  libstdc++-v3/doc/xml/manual/debug.xml
! c2b5fe8f3aba75d63e43dedc1c66c9a1  libstdc++-v3/doc/xml/manual/debug_mode.xml
! de9142912808678c2c2ce8b0192c394f  libstdc++-v3/doc/xml/manual/diagnostics.xml
! c1e74618e099a0a26f35c653a9d49971  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
! fca17d234bdc033e9e27285ab9c84b4b  libstdc++-v3/doc/xml/manual/evolution.xml
  14742e66a2ac01343ef60e87d06d05ff  libstdc++-v3/doc/xml/manual/extensions.xml
! 26083dec441281888a23365de5567180  libstdc++-v3/doc/xml/manual/internals.xml
! 23ada350ca896232c67ab4c97c758fdb  libstdc++-v3/doc/xml/manual/intro.xml
! 82d01f11ebf848dc64a611a829ef5a38  libstdc++-v3/doc/xml/manual/io.xml
! bab548248426e0e90cdc1436ff5b87de  libstdc++-v3/doc/xml/manual/iterators.xml
! 78f41acb39e015b061554cc816e3155e  libstdc++-v3/doc/xml/manual/locale.xml
! 8d6a4daabfdaa26ed8c3bd68f6cb0930  libstdc++-v3/doc/xml/manual/localization.xml
! 1b5a65ba0db5ffc07ba8b4f704b16a99  libstdc++-v3/doc/xml/manual/messages.xml
! 64e17c2dd1bfe3b92309e4ca1b9b375d  libstdc++-v3/doc/xml/manual/mt_allocator.xml
! 0093c0e2ef4c460d644a7c3d3e90c7b4  libstdc++-v3/doc/xml/manual/numerics.xml
! ebf5d45818e4309d61cdcc28b48ccc51  libstdc++-v3/doc/xml/manual/parallel_mode.xml
! eb99bd418a3e47c7fc7a2298d1d63d27  libstdc++-v3/doc/xml/manual/policy_data_structures.xml
! e2ea3eb265b0daa00700ec1b06a363d9  libstdc++-v3/doc/xml/manual/policy_data_structures_biblio.xml
! 4e49a8e041ae187579c7683d4b840fc4  libstdc++-v3/doc/xml/manual/prerequisites.xml
! d006612b2e21ab181c25bc88697b4543  libstdc++-v3/doc/xml/manual/shared_ptr.xml
! 4973f5115dccc7a4572777a094cc60e8  libstdc++-v3/doc/xml/manual/spine.xml
  21b4ad60404b59dfe18632c7f5a6d317  libstdc++-v3/doc/xml/manual/status_cxx1998.xml
! caec35016c6aae250fcddce0b8dc7b39  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
! acbf48436c7496bd80f5ed68bab9008e  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
! 93c6e3b276e8d966e1d6a425830d1449  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
! db6b42adee6e91b0d3070990995bbedc  libstdc++-v3/doc/xml/manual/status_cxx2020.xml
  3c72998c4574690fac280c058a0db757  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
! a24ce9da7b6fb967eb459308f8b5d72c  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
! ac15199dfd0338379b93c9f4fff2ae73  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
! 1ea4904f13ba196db9689534b653622f  libstdc++-v3/doc/xml/manual/strings.xml
! 1aa65aa75a216512c45df3eb15fadaa3  libstdc++-v3/doc/xml/manual/support.xml
! ac1ebee24bb0998849f0e195df6d932a  libstdc++-v3/doc/xml/manual/test.xml
! cc6b44837ffecfed21ba33bf580865af  libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml
! 39349aa54b0deda3f81ad07ac7089d3c  libstdc++-v3/doc/xml/manual/using.xml
! 024b479d745c4ac6ca00618bdde55274  libstdc++-v3/doc/xml/manual/using_exceptions.xml
! 43b751639aa82dbcd414b6c628beefac  libstdc++-v3/doc/xml/manual/utilities.xml
! a8f0003856ec916712e8abaddf746a77  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
! 7bb72420e699e194cf6066457cb6d6a5  libstdc++-v3/fragment.am
! 85ea29041c12f506d9feccbb0ba8db3c  libstdc++-v3/include/Makefile.am
! 2e47eca8288cdadbb0c8af3e64f71639  libstdc++-v3/include/Makefile.in
! 4fdaa579a320c5b2f53586fac01d65d0  libstdc++-v3/include/backward/auto_ptr.h
! 831dbf0ebc9318ec68636e9546b698fc  libstdc++-v3/include/backward/backward_warning.h
! e9f460a762e1c4ab8196c03532a7568e  libstdc++-v3/include/backward/binders.h
! 2ae6ff4d1766dae70c7e0ff343c13097  libstdc++-v3/include/backward/hash_fun.h
! e9d9de6c23151ac554374a0970563bb2  libstdc++-v3/include/backward/hash_map
! 5595678c8844a994f523bdb840a4c8a5  libstdc++-v3/include/backward/hash_set
! 731cf5f8704ce341c5318809596bf4f5  libstdc++-v3/include/backward/hashtable.h
! d3328a672a039bfd90d67d6b15cffeae  libstdc++-v3/include/backward/strstream
! 406cf930d32ea9b24a3b38d611591da3  libstdc++-v3/include/bits/algorithmfwd.h
! d805d7b8d7e65d02ad70eeb0f54638d6  libstdc++-v3/include/bits/alloc_traits.h
! f43e89e976a1e5bd6e7ac6fc5d5b2e6f  libstdc++-v3/include/bits/allocated_ptr.h
! 48aab785314be46559216ad61c8e602f  libstdc++-v3/include/bits/allocator.h
! c1b0e3181857d5f71a77eea3dfa94b9d  libstdc++-v3/include/bits/atomic_base.h
! 92c45df4ca56d697729ec08344786fda  libstdc++-v3/include/bits/atomic_futex.h
! a3a740622a4554763452ec10cec87f90  libstdc++-v3/include/bits/basic_ios.h
! e02561e847871b3c2e564e770d38dd91  libstdc++-v3/include/bits/basic_ios.tcc
! 3c9b3812d31263ce654536e726e7ec23  libstdc++-v3/include/bits/basic_string.h
! 2640a84105a61017f234b2d6bf4a6151  libstdc++-v3/include/bits/basic_string.tcc
! a9f458e6d11bd8fe67ccf9f8f565cd21  libstdc++-v3/include/bits/boost_concept_check.h
! 385f27a13104bc239d9b88715e10253f  libstdc++-v3/include/bits/c++0x_warning.h
! 40d9fc042bf6725394cc094ab20505e8  libstdc++-v3/include/bits/c++config
! dd7301fe6d03b999606155efaae414c7  libstdc++-v3/include/bits/char_traits.h
! 3170f2367f21184e43a6bacc31c7c17f  libstdc++-v3/include/bits/charconv.h
! e1843d770da6461dc6b8068d411cf15a  libstdc++-v3/include/bits/codecvt.h
! f37a2494f525b746088a79bc5068c2ec  libstdc++-v3/include/bits/concept_check.h
! c3cc2d45d990447929460f51bb112b73  libstdc++-v3/include/bits/cpp_type_traits.h
! f563980ab088b6c6785672b3e8691ef1  libstdc++-v3/include/bits/deque.tcc
! 9abeeba07316d16042e907dfe04e27b1  libstdc++-v3/include/bits/enable_special_members.h
! 184d8cdc779212e99b204322e504121e  libstdc++-v3/include/bits/erase_if.h
! ce60de93cf2da8333e20306fc5be999d  libstdc++-v3/include/bits/forward_list.h
! ff185b61e9f7d8ecea308b72ca27350b  libstdc++-v3/include/bits/forward_list.tcc
! 32189de09325718794e803d5b922bde1  libstdc++-v3/include/bits/fs_dir.h
! 5a200424da45d06e75bbce0337a5e1ad  libstdc++-v3/include/bits/fs_fwd.h
! 5ddba6e8f874cdbd27e7f542989380cf  libstdc++-v3/include/bits/fs_ops.h
! ccd854c16506454f27ec56b64dd11874  libstdc++-v3/include/bits/fs_path.h
! 22ff14d1a36511441f5a67a1abe47856  libstdc++-v3/include/bits/fstream.tcc
! 9769ec5cf1d70f5d388572a69a3a88d5  libstdc++-v3/include/bits/functexcept.h
! adb5dde9a712ba1704c09ceb4d7ba09a  libstdc++-v3/include/bits/functional_hash.h
! 38a5e94145bc46d7bc77326bfdd0eb3f  libstdc++-v3/include/bits/gslice.h
! 0192fffafef1f34c19d0b39add009ec8  libstdc++-v3/include/bits/gslice_array.h
! 595823c20929c35447f96366ea032a7c  libstdc++-v3/include/bits/hashtable.h
! 0335f8216dfa0bbb408704d30fa933cc  libstdc++-v3/include/bits/hashtable_policy.h
! f9f74348fc555b80fd488703710060a2  libstdc++-v3/include/bits/indirect_array.h
! 2103c37950b04e2ddd4fe96183d4a4eb  libstdc++-v3/include/bits/invoke.h
! 2413e956f6232abf2d9fd5a794c781b0  libstdc++-v3/include/bits/ios_base.h
! f41ecd4020ddfbf088767f2ce83cddd9  libstdc++-v3/include/bits/istream.tcc
! dff62c27573fc256a0d2d226b5cd46ad  libstdc++-v3/include/bits/iterator_concepts.h
! 5e1af8238a7182366476acc7c95f6cb9  libstdc++-v3/include/bits/list.tcc
! e0f065d3ce709e381bafef4d30c88feb  libstdc++-v3/include/bits/locale_classes.h
! 1a4d19df3be9b714847a5e438ba25b3b  libstdc++-v3/include/bits/locale_classes.tcc
! c4fed2b5b4879837686150624f51ddbc  libstdc++-v3/include/bits/locale_conv.h
! 355d41fd06efa71d679d1e6a416b690a  libstdc++-v3/include/bits/locale_facets.h
! ad3726c17e8e10e80b100401ec35a07c  libstdc++-v3/include/bits/locale_facets.tcc
! 2b4f782bc2a3f9e0339e84df0b473aac  libstdc++-v3/include/bits/locale_facets_nonio.h
! a3cf6cabd7bdaee154cafa2c88aede3a  libstdc++-v3/include/bits/locale_facets_nonio.tcc
! 756fbe1353340b4e7cae5d8a93132788  libstdc++-v3/include/bits/localefwd.h
! 8228e1a12d5f8baf7541c9e012539b8b  libstdc++-v3/include/bits/mask_array.h
! 7d924fcf17909edcad84d227043b7a55  libstdc++-v3/include/bits/memoryfwd.h
! 394c4a570b254b49ffbdd566bf8a6076  libstdc++-v3/include/bits/move.h
! f6aa6553dc5524abdfe41a7da3a49706  libstdc++-v3/include/bits/node_handle.h
! 7403d75f60a3792a27b459e9ff829ee2  libstdc++-v3/include/bits/ostream.tcc
! e1cc5c2a4400aeb3ea5a2e0c66399709  libstdc++-v3/include/bits/ostream_insert.h
! 3e01243aab3aedcbba07ae3d2d75cb87  libstdc++-v3/include/bits/parse_numbers.h
! 7ab4f93ddf386b9b5b8bd66dba5a745b  libstdc++-v3/include/bits/postypes.h
! 2fcd48b0681ba342cff50c3cbca9875c  libstdc++-v3/include/bits/predefined_ops.h
! b6673c70044c63dc76561b464a4c6e28  libstdc++-v3/include/bits/ptr_traits.h
! c1dbfdcef6bb8952176db50e5956f3f0  libstdc++-v3/include/bits/quoted_string.h
! be6f74664c2f7a3a51f7fbae0db1e318  libstdc++-v3/include/bits/random.h
! f4d01141c2ee6224817ff1baa5724fd8  libstdc++-v3/include/bits/random.tcc
! 1c7dd7812bb09e9652d2a84422edddd7  libstdc++-v3/include/bits/range_access.h
! 98ddc447ed23629cfe71a497dd38cc0a  libstdc++-v3/include/bits/range_cmp.h
! 9965d9bd4842bc3bb23450d9bbeaabba  libstdc++-v3/include/bits/ranges_algo.h
! fcd584cdd3e8e0e7c9f107a8e7c17395  libstdc++-v3/include/bits/ranges_algobase.h
! 7a33f6c06953282b7921ce1777bbec9d  libstdc++-v3/include/bits/ranges_uninitialized.h
! 5e205c02ccd545cd3b349d65fa4aeca0  libstdc++-v3/include/bits/refwrap.h
! 1e86cf14a8dcd41a3828152d48cb5c57  libstdc++-v3/include/bits/regex.h
! f23ad4b66e11fbf0102e9bb997345693  libstdc++-v3/include/bits/regex.tcc
! 175e478d9d4eb2d3dc50d03bb0e1c0a7  libstdc++-v3/include/bits/regex_automaton.h
! ec658fb588ddb17f4f5d56f054a2120b  libstdc++-v3/include/bits/regex_automaton.tcc
! 4405d00cf738e5551e8bb955ab69b1d6  libstdc++-v3/include/bits/regex_compiler.h
! 3067ffb45e42c4f58c270b5abb262c25  libstdc++-v3/include/bits/regex_compiler.tcc
! a3428068dd56a0ace5f1f727201d432d  libstdc++-v3/include/bits/regex_constants.h
! b45023b28baeac2b65d0ce87b7895166  libstdc++-v3/include/bits/regex_error.h
! bce99f7c5d46435072f5a39cabd4e613  libstdc++-v3/include/bits/regex_executor.h
! a5f7599269265e9fa08515b3153fae50  libstdc++-v3/include/bits/regex_executor.tcc
! 7aa7ba63a0233f0c3fde002b17a26e7e  libstdc++-v3/include/bits/regex_scanner.h
! e17036c2169768877a2decc8fafb1408  libstdc++-v3/include/bits/regex_scanner.tcc
! 3258e6294b16b14e2cbd2415d665292b  libstdc++-v3/include/bits/shared_ptr.h
! 0f72af40dd13857325d467aaaa73c338  libstdc++-v3/include/bits/shared_ptr_atomic.h
! 514e9422587c60bf662cdb1ba8f19ad9  libstdc++-v3/include/bits/shared_ptr_base.h
! ae5ba3f2aa49eedfac839d0007fb8f34  libstdc++-v3/include/bits/slice_array.h
! 337464f1ac2159b136b4a0afd32f7111  libstdc++-v3/include/bits/specfun.h
! e899b384347b53af6ce6e1034e25b861  libstdc++-v3/include/bits/sstream.tcc
! a2872a3a5e8bdfdb68af596ab9b2956c  libstdc++-v3/include/bits/std_abs.h
! cd2f8eeb37b2bb488d12b76e4456aa50  libstdc++-v3/include/bits/std_function.h
! b61e6d1a8f0dc4396b01505cea30c46b  libstdc++-v3/include/bits/std_mutex.h
! 3c4f1ca1519a818547a4606d6aae0ba5  libstdc++-v3/include/bits/stl_algo.h
! 5f3bc739ebb6db56b9d750d270603807  libstdc++-v3/include/bits/stl_algobase.h
! 5dcf1b271ce1b05e9ac604309874f19c  libstdc++-v3/include/bits/stl_bvector.h
! 3b91865ebdcda29a914d4a5427a1f2c7  libstdc++-v3/include/bits/stl_construct.h
! 840c431d16d5df7d9104acddedd5cbbf  libstdc++-v3/include/bits/stl_deque.h
! f87fbc5d632d6a84307ec8d2ada3d6c3  libstdc++-v3/include/bits/stl_function.h
! ce0341fe6e305b41215648e27a5b71eb  libstdc++-v3/include/bits/stl_heap.h
! 984cac89bcb91b91d3a15d2eb0849d10  libstdc++-v3/include/bits/stl_iterator.h
! ec8f5457561f81d938fe7292bd695aa3  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
! ef094ca966cf01515e8640f728ae4ba1  libstdc++-v3/include/bits/stl_iterator_base_types.h
! 5f49cd6ecd76af79a9fac53049c58c08  libstdc++-v3/include/bits/stl_list.h
! 3e017a0492dfc29dd82293ab82f130f1  libstdc++-v3/include/bits/stl_map.h
! 9a1a9e9add10e0ce163c15c5966dd0b4  libstdc++-v3/include/bits/stl_multimap.h
! c90cd1bab022bc213c064342f28b99e3  libstdc++-v3/include/bits/stl_multiset.h
! f8ef67b8b5b552306bbfcec549d40279  libstdc++-v3/include/bits/stl_numeric.h
! 1ac0c190b5005a19f043fabb0e2d1c0a  libstdc++-v3/include/bits/stl_pair.h
! d9c218451145b8975ba226c5f64b25ff  libstdc++-v3/include/bits/stl_queue.h
! 0b8c99ed2af9d2eddb9bfeeffcb245a8  libstdc++-v3/include/bits/stl_raw_storage_iter.h
! 617e2354e64a291088457390c718a4e0  libstdc++-v3/include/bits/stl_relops.h
! c39034808cd9a7fc1362136244390339  libstdc++-v3/include/bits/stl_set.h
! afe766f0ecb032df023c7042cf701b96  libstdc++-v3/include/bits/stl_stack.h
! 43ec67c71a6a4de0533398e4142dcde7  libstdc++-v3/include/bits/stl_tempbuf.h
! d802e0c03e1866c9d09fbee79d4f1e32  libstdc++-v3/include/bits/stl_tree.h
! 693f99da86052cc6e1466869e9db37fa  libstdc++-v3/include/bits/stl_uninitialized.h
! 7de0f0dc86a833efdd78c658d956e37c  libstdc++-v3/include/bits/stl_vector.h
! 4d05d6d317c7e6c953044db2b7758424  libstdc++-v3/include/bits/stream_iterator.h
! 173a77332f78d2ca96b9c0d2c72fbdfb  libstdc++-v3/include/bits/streambuf.tcc
! aa5e37b34cb17fdf4166d73b9941c2b9  libstdc++-v3/include/bits/streambuf_iterator.h
! 335640f78bb0ef8a05ef5478c9e47c0e  libstdc++-v3/include/bits/string_view.tcc
! e3095dcf7065f2d18a36fb8840a30df1  libstdc++-v3/include/bits/stringfwd.h
! 50088534266c2789c805619613a114da  libstdc++-v3/include/bits/uniform_int_dist.h
! 752f2a5920a05504809539555d6c9cff  libstdc++-v3/include/bits/unique_lock.h
! 99e69d532037892e34fe80e7a0fe10c8  libstdc++-v3/include/bits/unique_ptr.h
! 51bfc981cfde107ab90e8daf9ca11e09  libstdc++-v3/include/bits/unordered_map.h
! c7c1ca760b5b24a7e28645f9d121e99f  libstdc++-v3/include/bits/unordered_set.h
! 2ad7e4c9f76cdfd15bcd0e5b01e77881  libstdc++-v3/include/bits/uses_allocator.h
! b4b6d8644279f7f15f50dab3967e5027  libstdc++-v3/include/bits/valarray_after.h
! f430639a864443be198d57ba7792f441  libstdc++-v3/include/bits/valarray_array.h
! ab74225f197699dc51771fa587d2c397  libstdc++-v3/include/bits/valarray_array.tcc
! 52571aa8a80edc56b2ce5f95f6b7eef4  libstdc++-v3/include/bits/valarray_before.h
! d553ff13ea7986ec636b7b59751fabb4  libstdc++-v3/include/bits/vector.tcc
! 2b253789d7e901fdf2b0d3e65a33a1fa  libstdc++-v3/include/c/cassert
! 0e326b949420e3e1c4fa03ab98c96928  libstdc++-v3/include/c/cctype
! 90f58d6c8e68af7acd8e06bc3bd80f66  libstdc++-v3/include/c/cerrno
! d3ebb283f11dd06cba8293d55bb0a3ac  libstdc++-v3/include/c/cfloat
! 25d5b4a2f044f2c4379ce1a70430ef6b  libstdc++-v3/include/c/ciso646
! 0fe179efd328158309f23ed03cc1281b  libstdc++-v3/include/c/climits
! 0a8f3d0d5828cd1e4cb2a4330be8560f  libstdc++-v3/include/c/clocale
! 1c4d27f0ca635c92c40fce0111d720d1  libstdc++-v3/include/c/cmath
! 9d421817bcc8f5b11ead44fbb4d28a70  libstdc++-v3/include/c/csetjmp
! 4e2ef5846eac46aa383971f460854985  libstdc++-v3/include/c/csignal
! cb0219f1a82effea46afcc2d0bd7f4f5  libstdc++-v3/include/c/cstdarg
! a0c7a65d669e9bed17c8ae03063a0097  libstdc++-v3/include/c/cstddef
! 3b84328dd8c4a7f759b87779eb487ec0  libstdc++-v3/include/c/cstdio
! a10d00197d90ab0f8af226a790829588  libstdc++-v3/include/c/cstdlib
! 7491f810f049cabce34da6e10932d3d0  libstdc++-v3/include/c/cstring
! a6bc9ffafee4b01bbcf2b28072cf22ac  libstdc++-v3/include/c/ctime
! a85a17f9af476682303f06e2aea13db3  libstdc++-v3/include/c/cuchar
! 34f804fb1a645c4ecfd821d6946b6341  libstdc++-v3/include/c/cwchar
! dbf84c99b69da5e53c667a02030ddc4f  libstdc++-v3/include/c/cwctype
! d193a71a6e7d9d3e7624080b44316bf4  libstdc++-v3/include/c_compatibility/assert.h
! 2f9800e58aa28cc0e4a2ede0dda637fc  libstdc++-v3/include/c_compatibility/complex.h
! 7d97a4c66f872a5c6f1136ca9133a88b  libstdc++-v3/include/c_compatibility/ctype.h
! 67eb8e41f58d0dfc1797bd0a4d8eaffe  libstdc++-v3/include/c_compatibility/errno.h
! 16f79e63dcc89b023fdc4c690861e2b9  libstdc++-v3/include/c_compatibility/fenv.h
! c0da44a49415de30e46cb60edc5e9de4  libstdc++-v3/include/c_compatibility/float.h
! 70c0d3fb5de88872e3c773b7722c7d7d  libstdc++-v3/include/c_compatibility/inttypes.h
! af6b4e662d74d19c8864ec449386a694  libstdc++-v3/include/c_compatibility/iso646.h
! 12a0cced81278e24bd372745377285ab  libstdc++-v3/include/c_compatibility/limits.h
! 9abd84e91aead1bc242c2a9a541a0823  libstdc++-v3/include/c_compatibility/locale.h
! b4e5451670188aa97f74ef245fc696ff  libstdc++-v3/include/c_compatibility/math.h
! 97fbb80e7f049721e6a827a1227fcea8  libstdc++-v3/include/c_compatibility/setjmp.h
! f90830b1980355c07813fadb9ff6ebda  libstdc++-v3/include/c_compatibility/signal.h
! 433d6ebae8584978a743ca0abaf6838a  libstdc++-v3/include/c_compatibility/stdarg.h
! 3aa1504080f7222d946816bd21427569  libstdc++-v3/include/c_compatibility/stdbool.h
! f973dace51f4db5628dae5fcbb305f0d  libstdc++-v3/include/c_compatibility/stddef.h
! 7b9912b416a7a6208744aee5358d7bb0  libstdc++-v3/include/c_compatibility/stdint.h
! 9f2ff3aad07f816ac9f68c3f65c09997  libstdc++-v3/include/c_compatibility/stdio.h
! 74812296ae1ebf65f0c19983efc04bc1  libstdc++-v3/include/c_compatibility/stdlib.h
! ce57b770ffc09ecf3028c024b8e74342  libstdc++-v3/include/c_compatibility/string.h
! 065467190e6075ccbb67570ba9fb5f36  libstdc++-v3/include/c_compatibility/tgmath.h
! b9463ba258805222743f3e1466eb0e9c  libstdc++-v3/include/c_compatibility/time.h
! 63926ade34c4e8d0b709d3866563f8c7  libstdc++-v3/include/c_compatibility/uchar.h
! 0c0d975cb20947ad1a877af8d67c4329  libstdc++-v3/include/c_compatibility/wchar.h
! db7db87166ebbc02e76cacf526347f53  libstdc++-v3/include/c_compatibility/wctype.h
! 0c02fa2a532c4cfd83099759730b7295  libstdc++-v3/include/c_global/cassert
! 5b4bb2396c71a517617252189c85f592  libstdc++-v3/include/c_global/ccomplex
! 4c9859e7b6bbbe37d63c35a8bacd7c34  libstdc++-v3/include/c_global/cctype
! 46be308170420f17fe00558b85030e2a  libstdc++-v3/include/c_global/cerrno
! 262b1e9e589774b3b1e64f6c66766da3  libstdc++-v3/include/c_global/cfenv
! b36082f580baadae951dbdd8815a4749  libstdc++-v3/include/c_global/cfloat
! d9d3917829364b36d1ed627c5f739777  libstdc++-v3/include/c_global/cinttypes
! 7c99177e2019dc5c16098abc8637b0be  libstdc++-v3/include/c_global/ciso646
! 2e4d47fee18e015816676e7d0798537f  libstdc++-v3/include/c_global/climits
! 8afd032a672df0c7c7f84e4f282e0d77  libstdc++-v3/include/c_global/clocale
! 846a65f7c25fc69c60eb7f016b1709df  libstdc++-v3/include/c_global/cmath
! ef57c73e3ab3cc71860443f1172accde  libstdc++-v3/include/c_global/csetjmp
! 9e1ba73c8872ecf31c184c5bca2b122a  libstdc++-v3/include/c_global/csignal
! 79aa22eaaff180f61823cb18d737caf2  libstdc++-v3/include/c_global/cstdalign
! 9c0f5150bdae417992dc624be64b70da  libstdc++-v3/include/c_global/cstdarg
! 86a299e406e8ce2bf0962bc10eb2c0b4  libstdc++-v3/include/c_global/cstdbool
! e6e530e2a4fa2a4fd619f32f60dbc31f  libstdc++-v3/include/c_global/cstddef
! 86e85681fa20589f517c4bfa51b4a0a2  libstdc++-v3/include/c_global/cstdint
! 7abf03657af2add6a8b07c93c69bb575  libstdc++-v3/include/c_global/cstdio
! 66ad7d9c0e397d6e3104b6a02df70e7f  libstdc++-v3/include/c_global/cstdlib
! 317d8307409c437aeb24b3d2c1523ed3  libstdc++-v3/include/c_global/cstring
! 57e2b5730b7c258b9c59111bfc0a9fcc  libstdc++-v3/include/c_global/ctgmath
! 02cb08d428c0234f560061bfa58077da  libstdc++-v3/include/c_global/ctime
! ec27146b7bc1642503c103013851b203  libstdc++-v3/include/c_global/cuchar
! 1e880047d218afa13909387c78b300f5  libstdc++-v3/include/c_global/cwchar
! 3e9b7b7b328fc235869e159d96fcfcc2  libstdc++-v3/include/c_global/cwctype
! 813271c7fca4c95054ff0e9ceab53051  libstdc++-v3/include/c_std/cassert
! bc512750b5528e5cd103189aba0e9ae9  libstdc++-v3/include/c_std/cctype
! 1b546f4f296f4fbd7f37882f9c5c6045  libstdc++-v3/include/c_std/cerrno
! e817217eca619254e7e9f31a057ba9fd  libstdc++-v3/include/c_std/cfloat
! 63030d38195e0f3852838bc7241b3f70  libstdc++-v3/include/c_std/ciso646
! af0739dea251d407c050e12e9fb83488  libstdc++-v3/include/c_std/climits
! 1a46b0cb2362f96f9960495f2bbeb0d6  libstdc++-v3/include/c_std/clocale
! a02409c37df12ec6625f7837003cd1bf  libstdc++-v3/include/c_std/cmath
! 66003560185763d124b7ec66d5977a44  libstdc++-v3/include/c_std/csetjmp
! 7eab0270eabe160e0036808b3809c25a  libstdc++-v3/include/c_std/csignal
! ebcd8cc80b68b0a5f96632808f3ea5fc  libstdc++-v3/include/c_std/cstdarg
! 2397592177da5cc7e6b02a5224b145e7  libstdc++-v3/include/c_std/cstddef
! c81c732bc53b37b09242f6404a91f1ce  libstdc++-v3/include/c_std/cstdio
! 33b4adb866be78d88d2acba6630c897b  libstdc++-v3/include/c_std/cstdlib
! 480e4401a4320f85d2c42ff2540773d5  libstdc++-v3/include/c_std/cstring
! c71945acf486b85f18018d31b9ba79ba  libstdc++-v3/include/c_std/ctime
! 9e10ecc49dc339eda0e7b851f07b706c  libstdc++-v3/include/c_std/cuchar
! 4ba95ab060c0913982285f6c74593c73  libstdc++-v3/include/c_std/cwchar
! 4dfea18bb5cfdc539d7695acfde4beab  libstdc++-v3/include/c_std/cwctype
! ee32b0934fc416f282cc0f843aac3fbc  libstdc++-v3/include/debug/array
! dafa987d0ce211f5543442f8200934e4  libstdc++-v3/include/debug/assertions.h
! 3bb05160b49cf95621781a7ff2b61723  libstdc++-v3/include/debug/bitset
! c69f68f2d2cbac034a41bb7ce5c36465  libstdc++-v3/include/debug/debug.h
! 0fa6c10e12e51b0df85a931eec632eba  libstdc++-v3/include/debug/deque
! ec721ea945725a41d5073a57903b612a  libstdc++-v3/include/debug/formatter.h
! 07e6945efbd59ba69dfc02f2c4a203da  libstdc++-v3/include/debug/forward_list
! a0fdaba8d70082b66e89cced6e91043c  libstdc++-v3/include/debug/functions.h
! 07f640e4a0022df2b0b701e00168db30  libstdc++-v3/include/debug/helper_functions.h
! e9092530a7ddddbf6b4dcd53a5a504d1  libstdc++-v3/include/debug/list
! 3d540bdbad977966971fd4e15e6cfb10  libstdc++-v3/include/debug/macros.h
! 12a942b02c0226017ef599506e28b3e7  libstdc++-v3/include/debug/map
! d1847746e98ea89075870bcb1e4262bd  libstdc++-v3/include/debug/map.h
! 8970f1940fd738b34901a8dff4b03050  libstdc++-v3/include/debug/multimap.h
! 1c345cdef0e16f8e8a8aafb117445228  libstdc++-v3/include/debug/multiset.h
! 54f097dc6be3892470593918079d0138  libstdc++-v3/include/debug/safe_base.h
! 63c07aa34e8d7d31252cdba74d4eff64  libstdc++-v3/include/debug/safe_container.h
! 54eedcd8da6fb652d814d2f6aface0d5  libstdc++-v3/include/debug/safe_iterator.h
! f60aac3ae732f90ddfd635820799abc0  libstdc++-v3/include/debug/safe_iterator.tcc
! 5895470a6a60eee5168cd741ceac3945  libstdc++-v3/include/debug/safe_local_iterator.h
! 8a4487c674364b2015343571ad0e5181  libstdc++-v3/include/debug/safe_local_iterator.tcc
! f0d24bc4e710f3a4e8afbcdf89e9a222  libstdc++-v3/include/debug/safe_sequence.h
! 8a204c17a0277cab32a0f92c5c79a441  libstdc++-v3/include/debug/safe_sequence.tcc
! aa425edbfb470e145927a56391aa6b09  libstdc++-v3/include/debug/safe_unordered_base.h
! 0bb713b570e27171aaf39bda77a1a708  libstdc++-v3/include/debug/safe_unordered_container.h
! e2b4bcff61ee2c5a9ba5fd72d403d1c2  libstdc++-v3/include/debug/safe_unordered_container.tcc
! f0f7c303e5ec432a7d75d08475cbd8b3  libstdc++-v3/include/debug/set
! 4d82220fa9721091a00af2999e8c9a8c  libstdc++-v3/include/debug/set.h
! d10157575fe3190d54fe75d262ee76d9  libstdc++-v3/include/debug/stl_iterator.h
! e143e1109da87c7fa764c9c3645f93be  libstdc++-v3/include/debug/string
! 84f5cbbb0c9c0b000d1d035a01ed562f  libstdc++-v3/include/debug/unordered_map
! b4e4534fce63d69b0f8391aa7dc49e89  libstdc++-v3/include/debug/unordered_set
! 2337490e5ffc563fe032216c47a1258e  libstdc++-v3/include/debug/vector
! 0d30ae0f59ccb102dff6f710e4dad847  libstdc++-v3/include/decimal/decimal
! 87f66d3a94733712f3e40d085b84e52c  libstdc++-v3/include/decimal/decimal.h
! 484fe8201bf592577d0bfd1c59459606  libstdc++-v3/include/experimental/algorithm
! 087e7b768b6051d5f6af9b059c1bff50  libstdc++-v3/include/experimental/any
! 50e7fbed6b54b3c2e9dc9a3c24296581  libstdc++-v3/include/experimental/array
! e10fb986854b741fc79ea42b6d7af26a  libstdc++-v3/include/experimental/bits/fs_dir.h
! 3e9004549b3c588dcca58852d3e0a0ee  libstdc++-v3/include/experimental/bits/fs_fwd.h
! e00eae994d75bb47387f4fa6aff504b1  libstdc++-v3/include/experimental/bits/fs_ops.h
! 2d7c290da04dc39317dd6b6be214eac5  libstdc++-v3/include/experimental/bits/fs_path.h
! 44164985fdc9e47215384a6393a71240  libstdc++-v3/include/experimental/bits/lfts_config.h
! b37b8aae0135e4438dca38197e238d4d  libstdc++-v3/include/experimental/bits/net.h
! aebf6fc7efc7d4f0c4680db40266e2e4  libstdc++-v3/include/experimental/bits/shared_ptr.h
! 711c588327a5555ae1658b49ca4bea61  libstdc++-v3/include/experimental/bits/string_view.tcc
! e9d1aa517c9bb13efbf6ed52bd1baf46  libstdc++-v3/include/experimental/buffer
! 94800126a824f286adc49e3b231724ec  libstdc++-v3/include/experimental/chrono
! cf74fd43a0d58ef217f46f170deaef31  libstdc++-v3/include/experimental/deque
! e8e045340aecb2d40cd4e966c47c107a  libstdc++-v3/include/experimental/executor
! cad9ec24afc63e6dc308a37d6f440ace  libstdc++-v3/include/experimental/filesystem
! ca110518e910a3be034032b8a9946302  libstdc++-v3/include/experimental/forward_list
! 3ddb8dc14f6fc5e17bdff604bbc80efe  libstdc++-v3/include/experimental/functional
! c4432845feba7a246d521f346030a080  libstdc++-v3/include/experimental/internet
! 709ae9fa19088f5335e58bc6cfef7b87  libstdc++-v3/include/experimental/io_context
! addea971b35a75f23989171878228e4f  libstdc++-v3/include/experimental/iterator
! 6f22e77aadd04c97f9427288c525dc45  libstdc++-v3/include/experimental/list
! 9ee64fa5791151806da524fb2932aa00  libstdc++-v3/include/experimental/map
! 8f092ceaf155aa19b78cedea046912ad  libstdc++-v3/include/experimental/memory
! 69a595ed7e32bab5f954957195e1863e  libstdc++-v3/include/experimental/memory_resource
! a7d3ea8538cf6c8e57484af9a461a655  libstdc++-v3/include/experimental/net
! bf4ef7b68a82e1643ee24b5dac94501f  libstdc++-v3/include/experimental/netfwd
! 7fcfb5fbfa3aa6bd01ac4d2bd9377171  libstdc++-v3/include/experimental/numeric
! 170f7e52ce7abc904f967e516a9cf9f2  libstdc++-v3/include/experimental/optional
! 2af41ee4740ae792771100907299c37b  libstdc++-v3/include/experimental/propagate_const
! 883a8fabcc4a030b8dbf11dd3c3c4527  libstdc++-v3/include/experimental/random
! 2082e6de6ad79541d6a07e1ad809a6e1  libstdc++-v3/include/experimental/ratio
! f6407626676a18b2f4cb95aeea19f7bb  libstdc++-v3/include/experimental/regex
! 9b642da2039a1899dea07a5dcf79a312  libstdc++-v3/include/experimental/set
! c4df67f859946fb8847b3cd1f35ae0af  libstdc++-v3/include/experimental/socket
! bb33d213be62eb1191b964e6623412c4  libstdc++-v3/include/experimental/source_location
! 2b4eb42f8ac6bc3f00c0f3d9b11f07ca  libstdc++-v3/include/experimental/string
! 0fbde687c8046a397ec4a6585551964a  libstdc++-v3/include/experimental/string_view
! fb7841c5008d5fea5a7a893d4a2ba011  libstdc++-v3/include/experimental/system_error
! 866092bd617b586414d6ae38bdddeecf  libstdc++-v3/include/experimental/timer
! c0763618ff6f0da3030920aa5a653f4d  libstdc++-v3/include/experimental/tuple
! efc188b6093d254ad24d0f550e14f429  libstdc++-v3/include/experimental/type_traits
! 9414d52b3c3d86642272e47670739831  libstdc++-v3/include/experimental/unordered_map
! 7a15592b9518f8bfe23455045bd22948  libstdc++-v3/include/experimental/unordered_set
! 218d9f99ba5048d9e355b183c9515465  libstdc++-v3/include/experimental/utility
! bf44541d28bf1f5ded216ff7be52fcea  libstdc++-v3/include/experimental/vector
! 70a3b972fd96739f62aecd037360f49c  libstdc++-v3/include/ext/algorithm
! 409bfd03b6e73a1a7f4fa3383c7da453  libstdc++-v3/include/ext/aligned_buffer.h
! df703a73a0d6c27e160037ac01fa04b8  libstdc++-v3/include/ext/alloc_traits.h
! 495f94b66355f397be669c462a32bf9a  libstdc++-v3/include/ext/atomicity.h
! c01f71c7b8dc4156877084ce0f084b6b  libstdc++-v3/include/ext/bitmap_allocator.h
! 6a245b6db5290172685d73f9cf125967  libstdc++-v3/include/ext/cast.h
! 4d2b145b8f848a961f4b1508caeacd4a  libstdc++-v3/include/ext/cmath
! 067ae03ae62a542f6a873186d9e2ccbb  libstdc++-v3/include/ext/codecvt_specializations.h
! 57265d4b502d0727e5c4bee7a04729d4  libstdc++-v3/include/ext/concurrence.h
! ec4a92f6302894f985da65409a7cd07f  libstdc++-v3/include/ext/debug_allocator.h
! e426b26ea19db7d2d4e21dda98d15f13  libstdc++-v3/include/ext/enc_filebuf.h
! 1ff3a563db80ea40f566e38f0deae5b5  libstdc++-v3/include/ext/extptr_allocator.h
! 9e9c93b8b532b3b2bdb5864bf5654b38  libstdc++-v3/include/ext/functional
! fbb718c8b9c11e2dd529591065e9ca28  libstdc++-v3/include/ext/iterator
! cd28c9a60286430a23e722e3de510bc2  libstdc++-v3/include/ext/malloc_allocator.h
! 9bc7e74457fd1a4398ad1fb485bbd111  libstdc++-v3/include/ext/memory
! cdc716bd05d4f195d984d48201e857a3  libstdc++-v3/include/ext/mt_allocator.h
! 27d2fb41bdd1d679a3db9f8f420b769e  libstdc++-v3/include/ext/new_allocator.h
! ebf9c1d2139571a50d315a67f8ca0ce4  libstdc++-v3/include/ext/numeric
! 0df838a77977ab3eefc49c30cf4ca696  libstdc++-v3/include/ext/numeric_traits.h
! f9ece93d0c021a026901f345cd18bd4e  libstdc++-v3/include/ext/pb_ds/assoc_container.hpp
! c6b16d4bf0f5ca4a099ee80a1b91c10b  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
! 538535373ece82aedd56970473d6b2d1  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
! 2a99690ab1c30122e8ad337017b96109  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
! 8570ae0f8245a0dd09c3b3379965b12e  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
! ebbe25d6bf05df9d3cee7bdd7eeb9f8b  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
! 8eb3abcd1f8592cfaa951f600af22e45  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
! c3faeeff22e7adf88493c7dc3d16c4bf  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
! a406416875723d50c6e0fc2f37671d4b  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
! 4fd541cab0c79e4a8d0298ad1aad7815  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
! 0531bd805697fadf01b396501bf957fb  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
! 125e6022bddc820549fda0219ada9782  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
! bec5094d018ecce566cf0989fe90e088  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
! 8dcc0d508bed3f03b656a46521374a60  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
! aa14962fcb58f404f6319e84fe68a721  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
! a473226ff0bdf5f359f0ecf33b4caf02  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp
! 8b06d3f08c065fff93baeff2731f6c40  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
! 0d7590afff66c846c80e000243e4aac5  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
! 6a222a31d04aefb2b2b798309cb08e03  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
! ee7018952af64c2910ff3e62291a4628  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
! 9c2a24fc4879cc9858e2b47ca32f696f  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
! 959fdc2f42947cccc70acc9278b07d3e  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
! 606cfdd9e8014ef6959dda9dfc39074f  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
! e47d2d9ec2704c5ee480d71cd561f28e  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
! 7ed7dc8e9fe9909878baec2c1a33aca8  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
! 193673a498135b7187941b704a0fdace  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
! 347dfc728db3b1111e9ff676cecd85bf  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
! d9575d5f2f73c3597c117a30ac83b3bf  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp
! 98859ce81f451879bfb9f2e378c6a56a  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
! 92a64a5201655847a725737e5a3b0bac  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
! 514a1ab2c3c0943c6746d4231a5beea1  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
! 35b34edec8d4b1ca5ce4c5a361a05885  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
! dc8d9b74e1d083c188e2b02576eba5f0  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
! 170dc3382acc2b804875dcb4da2afb54  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
! faa620a8323d11494f598c9d51dd62b2  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
! a2a9becad641c2bdb75400e6ab7883be  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
! 79d6d691793d5b06dd8d2d63b2ec8eb4  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
! de987c1d5fce065f15705547adf58468  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
! 54e46251b4f0d3f138c414dc8d9d3745  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
! b439479b445803b150d0939331288618  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
! 103ba1d57cd27a8590decc5c5c8e98b9  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
! 37797d041c7ac18d9decc0a200ffe802  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
! 0f84fa7046cda897de82af7924af2bab  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/branch_policy.hpp
! ff7fe94c2e89fdd2549c59c58f52fbed  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp
! 8858fa05e8daf89e5542307a7cca5cda  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/traits.hpp
! 9b03de7da450e72aa19a513e5fe3f007  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
! b1c603febd55d1d567061588c499ba63  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
! 21fb97511637d181e7104bae3ec20032  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
! 8282ed12f9c6322c1e9bfa57636403a4  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
! 5dfd0f0137e05e5a859dc22a921207dd  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
! b2552975ba8513aa640b8c1067bfb2fb  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
! 17452f00c2c56a8b339951637b173339  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
! fb3f8ff354969d3cbd3e4c79e09de62c  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
! 32cf1b6cb42433408f16e98dc17f4ece  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
! d7f6cab8c1100e186b343a820b535304  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
! ba19717c52a13930bb33abcba8df04d5  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
! bdb2ab2210c36e79c6591244cc60d121  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
! 2be4bc4253fe96082655c5f419278259  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
! f3025b84f331aa6f7899491a6e749b5e  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
! e5d8ccfbb1f2bde744135016144ab357  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
! 3892105846c1daf242db33832d947564  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
! 7a34d4e27361f962f19c7845e7cad229  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
! 14bc83c380d9f89dfad9122d31ceaefc  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
! 87e8c1e6aa8915aa3a4f3fbfee8666d5  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
! e525b89cf65e4834985c2b49af9560b2  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
! 7c7d9035a7d40213f0c70986df6d1f14  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
! 6fe0238e7c6172ece2693f9757229c37  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
! 02128e57e07e7f0c51ad356ab460fd2f  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
! 6948c385504e5d9e8c1662ca489c5854  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
! cb7db286138b328a138f75306c6d5fc9  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
! 610137989852c7ef63ac538c30565d7d  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
! 3bf5d458d4972102215af48a58553485  libstdc++-v3/include/ext/pb_ds/detail/cond_dealtor.hpp
! 1a650f1aad160d5afa93f99e38da0fb7  libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp
! 4a0f9d6905c053d1ac9c3cf44d3f666f  libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp
! d5d73ee380f3f354243b7caeeb8f2ecc  libstdc++-v3/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
! 940aeb53ecd2582f975911cf11e53cd4  libstdc++-v3/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
! cbbd22f663f74be095c95643a2086b95  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
! 2d4ab34d4b3ed5fdb2058c7cec986971  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
! ee0779d64f1d1cf51d1d9efb9dbc6872  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
! 13da24280c04fc841220b9ddabc580df  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
! 5058eb481eac81c2a16f630675924604  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
! 007e0a6051c39faabb216179b435d085  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
! 88aff7aeaa75bba21c8c31d7d9cbbe8e  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
! 2cef0d87fdf529ab254830d780e6e7ef  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
! 1d1a0ce747a8e32e7f7cedc417234cf8  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
! dc85f2364a3791fa50d28e6736b73c4f  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
! 4463e6abf8e7183e851b94fc15dd51e4  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
! dd0195305ca79aa112fb02b0dfa354d8  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
! 3a4f41f96d2411ceccfe1eb065f88bf5  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
! d1a4a3774d3adbd8ea38080bf2d64d07  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
! ae32694075d67715a329cb9d1a6b83fc  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
! 6d43245172ded4429a783cfb75b5fb98  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
! 1dce04d44dd228d22b2a8c3854464b48  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
! 85ba10fbfbfa485017ebaa05c48db93a  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
! 4c4bb2d8484bd309cac74dbbd79755a0  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
! 8e0901af20eb02c375ffe26e13e19959  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
! 443bf104eacdfa961bb4e50f2aa1e9e2  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
! b3a5ad61e1ccb5b41c48e45cea9a1ef1  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
! c4082cc096e8eb2b99f38cd16571795f  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
! cdaa822ef79574d9b3d2f7551876205e  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
! 599f63d579bffde9f2999cde5e811a47  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
! 3f9f2392b36f2964a70957c676b6cc46  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
! 7c26ad889d7c1b1f8ea191990882ea5b  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
! cdf9aead2d4da6e52c3c9716c0722866  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
! f0ecddd3b1aeb3fa3540abaa2169a2a3  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
! 68f319e7e48f192868aaf32a194a4530  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
! c36eebd05bb1e0cbbb5233d135ee1f59  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
! a80036a605103aef16f0f258fdeabefb  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
! 6e1c3f2d12b1e28e1f112051cbe352f0  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
! 2e59edf53c582b14ddfd44ab4947768a  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
! f110cbde27af14481113eab0068bbc5c  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
! 23f4d6ca616391fee0e50b82ee4e7141  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
! 7b9a9ea6f967924674fb22b27ceb6952  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
! 0cf1223f8e194eb032af1b7d25c8d085  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
! a9eb5f0bbf33d2b88f1264341132d258  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
! 2320a629375f8d96da9032c849a054c7  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
! 99f426a288f4cee25915c4313b32f316  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
! e078e5e7dabc47d934c15e35305a378a  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
! 38d9d842b99ee52789186a0e32329782  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
! 58bfd4876376fce05a2cb548bc9d8cb6  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
! 38e2f5b3db48fd90b3f9949b328cc4b8  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
! 211a7b8563c796558463cfc7558e3f7e  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp
! 8e723b6cde64e2d7fc57c9331277da88  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
! 1849b4fadb8db2f1021d0da414f9f4ff  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
! b7ed84ec9fe999a10705499b41391f8a  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
! 761ec9fce0fcee85c342557e15b83399  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
! 3f3daf3e561e0fc7ba319752654bb180  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
! a4a1a93b271f7043341855a4f0508b71  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
! 9d75a0135640cc219bab37c11be41ddb  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
! 524c0de86a22ddafc92366d8b18f603c  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
! adb507c1582ded32a13146a64e436cc5  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
! f095a8468740d174cb558702f1f42e77  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
! 2c87d9dd1590f50fa0c06b316999d1b2  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
! 8ec65c44f878b0bac7209672f211b1f0  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
! 32d4a82d5316f3b936cbb2589bd768a0  libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp
! 70eb1c1bb8999ca3f98eb2dfb1da1663  libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
! a95a318d77d92aba4b5d1e40021c5881  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
! d82b98be0166359f646edb91c3ed1242  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
! ec607253c8f566e56296356992749fba  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
! d7e64f36a414c6bd7c3966185c1a2f9f  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
! e4bfe4ac62036d79e4893cd09574a56c  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
! 2202fb1bb18f7ff130427550ca74330d  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
! 09430a15653827836d90f955792b7067  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
! 156b155d90d3576ca03d1a960317701c  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
! 5fcd7e56be4993427d46085b374676ad  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
! fd6e1630f93c5aab96ddbe171b6de7c3  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
! e2f23c8210a9bf95bcda52311af103a7  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp
! cac37612407fe67952e187109a418293  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
! b01c43ec19f0a75753903064ad920d2f  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
! b898edff9c5a695a76c56e083a801f80  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
! 376e51213e6e93cac1205314307330d3  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
! 5799787eb66520f4df73a2c833520e6c  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
! 18192e144b1a96bea05fa31b42c2d1f7  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
! 50d097f64a9c9ea5c846ed9af579aab9  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
! cc5a3cc6ef2ee6e165136a02b4848675  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
! 6568f973d181bb2c54fa4467733dd8ed  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
! 352320497ad198ba9f1b68b1a143c530  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
! 176978c901bcdf60b79083fe161e4594  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
! 38b9c6bd35b452ddffdd1a089fdb6bb0  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
! 900c911538266335e9841dbfcb625309  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
! 1a757b81f631fa01057b19215862f776  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
! 28ddb759d2724668bbfc1d705d66c8d4  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
! 8f56fdb56b0d38165d47eca4befedf08  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
! aca9b3d1cb91130ad81b174bb00bd97f  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
! 24ef2c4e44b7e42a07c3133369078fcc  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
! 74f8322e8aa8f84fda8aa68958e7a3ca  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
! a022a65437a22da9c2babe43d0477a7e  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
! 5f5f32f9ed34ea6147498b94d2a68c69  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp
! 872301811c50ffb3e025d5d1fc5d09e5  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
! fa308146db463b3654f9a21a7e18c95e  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/traits.hpp
! 4f193f427b95b34ba0c0be677734658e  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
! 5ef784db231c332584c922e05574eb65  libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
! af9b49ff3d2ca10fece69e7e5bc7d345  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
! 4881b0949abb734a7f899f1ba0cbd76b  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
! 0a048e06f76904d239b1f5930ee64c1b  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
! 5a67f3933e480deeb31b3c4c1bf8897e  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
! 919f87b918c7e09204d008c532c9b3a1  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
! 67a5c8ce99a100ccf3edc19d37d53291  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
! c45e00bea606e108c2cf3c3486fc2855  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/node.hpp
! 4b294076610a4d533f56cea0afed9260  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
! c28b2959d6b59ab2236897d7736f46c4  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
! 780cd5788d159da5551e139277215707  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp
! 98fe6cc6961a7ff8d840512591afb2fd  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
! 0cb6734b2dd3653a648721d93508939c  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
! c6a4cb999fb5457b2065afb941ce35cd  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
! faea8a5a0563aa742ed78559f0398826  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
! 233a96f9b79ceeed9c7b93b69800ea4e  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
! f9f5ab5929d890f8c02e864d8b1a5d38  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
! b90f34cace7d206cb2515a481cdbcac0  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
! c8853fa379eda40d10b671b107fd64a8  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
! 23ad56e8f307d676dec39959b3b928ea  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
! 94ec69d527011dab6b531c8ca1ec2e00  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
! a042e359c591ad9a3edef184dcdb2245  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
! 025a31c788d6e5d4c0f45468a2562fc4  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
! 0d5ba9c32ca44c6debc22558fbd8d83f  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
! b2640ee3c98deb8d15fefb769d4c5e59  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
! 06fb6f8c5b2e201d6f219f8178121e53  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
! 123c1a369b5fbd3da5da3d2f9fc48289  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
! bb3a98f43b20fab06ba02bacbf8c2be3  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
! d58e71b7ebeeff20c5c0c139da9e1877  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
! 57b56835540d7423c51f803ddb493dc6  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
! 20eb0f703cc1e4ba47e0c1ff5472e354  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
! 27647a8589e5233112c9aed689a35c6d  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
! 49bb217af7c92e4607317559cc63e484  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
! bce521f459304675c9ba247c195c41ba  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
! a80e4c9ccd1ecb0480e664043efc5d87  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/node.hpp
! 8167a17e79761294d3d30ed8270fe4bc  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
! 868fd42f3d1f67da49ea52c577d94b9a  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
! 87b84fd47db236ecead789658c9fe22a  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
! c51fbf35bfb2ed6bca2b9bd0d36c38e2  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/traits.hpp
! e5d851bd9eb817cd312361eda9186c09  libstdc++-v3/include/ext/pb_ds/detail/standard_policies.hpp
! d6bcf0aaf62910d6555ef28e4e8dcc48  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
! 8c207145f8f3701ad1440fe625704e20  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
! 6e2fc6eb82794a6d43c4405d49c3b97b  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
! 6c31767d0bf88c45835c8a000efe5962  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
! 6729bd63c9d2e43bc1d38f4cd1f7e6b7  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
! b507495f18712ee7c187c78d0bfa7af1  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
! a1f4e5ad7687c7e52ed58a15ec0d7d74  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
! aafffe56cd3e27114f5ec53b8ca0a9f6  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
! f7e3aea46adee0c2a51e1c78b1cb7abd  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
! 387a92150c8cf19de2fe19691670f6a5  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
! 749ac3d646fe51ee40dd1a97c1463b29  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
! 9727467c1602d3d7165626a6fdc3a815  libstdc++-v3/include/ext/pb_ds/detail/tree_trace_base.hpp
! 6b006c807bb1fbbc9221607152666d3c  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
! 4c5ee3b8a4a1d2d156daf15c4a373bcc  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
! fab765701354d2cfd4ca5760c4ce681b  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
! eb5c576b7f9cb32079ffd1e3503280ef  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp
! a41002910abe608e47df0e4c2371d0fd  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
! 8543082d9873a36bd9194a65ac71db71  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
! 82da6acee2c9fd837aef7bc1e41dfa65  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp
! 47fec53bf2104014b45c1837143a9284  libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp
! 4e1443a7d3c6e432a6ceeede90a5049a  libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp
! c6810811ef13ac27781bf8f71686f981  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
! 8175c8128d88adf622afac7daadef031  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp
! 86dea8a5ff1f6f2d12d82f824118bd73  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp
! 62945b45dd00db52c9bd36b81071ba0d  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
! 7139f92c71fb359f1e8335370bd0c3f8  libstdc++-v3/include/ext/pb_ds/exception.hpp
! 6808375fb8fc9ea55f7b897456bfd6ab  libstdc++-v3/include/ext/pb_ds/hash_policy.hpp
! a7a81b3f51c56977b610f962718fdede  libstdc++-v3/include/ext/pb_ds/list_update_policy.hpp
! bf9c430cf3ef7c0fb4c8781ad9be6610  libstdc++-v3/include/ext/pb_ds/priority_queue.hpp
! e0421764a80a19a2706d34095623f85b  libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp
! fcee24dd31eeac48d5964701362d0d5e  libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
! 5e1ba6d29e153cc25d1174534f9fa606  libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
! ec3cce836d7ec67df6cfc0664eedb7c4  libstdc++-v3/include/ext/pod_char_traits.h
! bc60402cb23df834e8f6dff9c372ac93  libstdc++-v3/include/ext/pointer.h
! 9320e4bded05b902c6a03617e2c5c5ca  libstdc++-v3/include/ext/pool_allocator.h
! c355881d2f04681159518fda4f69fe62  libstdc++-v3/include/ext/random
! af48d9b42ed6ff71185b4847b8258c75  libstdc++-v3/include/ext/random.tcc
! c18a1ff3602fb071240a18d125142bb1  libstdc++-v3/include/ext/rb_tree
! 28bc38a99c6a3429b778dcc5b83c945b  libstdc++-v3/include/ext/rc_string_base.h
! 0b625ee9a68b32ba51484908508c71c3  libstdc++-v3/include/ext/rope
! 5eb23ebeffc789418baca327eb2ff16b  libstdc++-v3/include/ext/ropeimpl.h
! 069e9d57012d754062e5460430f1d5c9  libstdc++-v3/include/ext/slist
! f13310565f29b3a5fd081b6ed8e89280  libstdc++-v3/include/ext/sso_string_base.h
! ec688ab63b1c94fbcb7fa809f5a73ada  libstdc++-v3/include/ext/stdio_filebuf.h
! 27ba889da8ab164a3160e5edac1d0a14  libstdc++-v3/include/ext/stdio_sync_filebuf.h
! 9beb5bfc6e01f8ab3a3b7812237648f6  libstdc++-v3/include/ext/string_conversions.h
! 867bdb6f39f616c4a745c95425926f1a  libstdc++-v3/include/ext/throw_allocator.h
! 7bc2e4535f886443a00f26a8e4e3afb0  libstdc++-v3/include/ext/type_traits.h
! 914801408d4eeb729b608de36c2388b2  libstdc++-v3/include/ext/typelist.h
! def38eff4323e6220c3d504599fc7ba1  libstdc++-v3/include/ext/vstring.h
! 1319720d5fc144102ef3b7f9974eb461  libstdc++-v3/include/ext/vstring.tcc
! cd5ad3d58a182c0a9dd76a41f1d23ed5  libstdc++-v3/include/ext/vstring_fwd.h
! 453266b40d2d3f7289af5f2511dae693  libstdc++-v3/include/ext/vstring_util.h
! 5fb04fd0ead053a082b22132b7074628  libstdc++-v3/include/parallel/algo.h
! 174852f149bc828c400c3b0fae472f11  libstdc++-v3/include/parallel/algobase.h
! bbf2ffabffb61c9a85150cee06e80b2a  libstdc++-v3/include/parallel/algorithm
! 86f3d8500f9c493c781a1dbb1a3e094f  libstdc++-v3/include/parallel/algorithmfwd.h
! 35d57620d94f39548964cf9b92131d12  libstdc++-v3/include/parallel/balanced_quicksort.h
! dea832385c704258c89e4be12b8806ff  libstdc++-v3/include/parallel/base.h
! b1ea4f28d47e2a3af769f11e2105099f  libstdc++-v3/include/parallel/basic_iterator.h
! 13c1dc8a4c45bfcf21fb2194b98dc2ab  libstdc++-v3/include/parallel/checkers.h
! 1d0173ca796112bf5340da9070c190d9  libstdc++-v3/include/parallel/compatibility.h
! 1d93e78e9ebd15aa9800a536a053fd91  libstdc++-v3/include/parallel/compiletime_settings.h
! 0834fef78c3a5bd8102102a8e0d0af16  libstdc++-v3/include/parallel/equally_split.h
! 16e5dda63166c5e13022decce4d60658  libstdc++-v3/include/parallel/features.h
! 57f42642b89c0d77333ae8e7e193d039  libstdc++-v3/include/parallel/find.h
! 3ff275396e768b1f1a9b8e89d6973e77  libstdc++-v3/include/parallel/find_selectors.h
! 5204f8149ec3b03990d300b738a35a31  libstdc++-v3/include/parallel/for_each.h
! 9c0007b24aa7bb15f5aa353466377819  libstdc++-v3/include/parallel/for_each_selectors.h
! 42fb0e368510f8a7a3ea01c86991ccc6  libstdc++-v3/include/parallel/iterator.h
! 625671e90101f90aa2bd922a71a16c49  libstdc++-v3/include/parallel/list_partition.h
! 39ca0c4d64e7b051de947b2c0c417af3  libstdc++-v3/include/parallel/losertree.h
! a43cae01d151cedfc9795f2817d66cec  libstdc++-v3/include/parallel/merge.h
! 7c4a08614db93da7720b06bd93ce9091  libstdc++-v3/include/parallel/multiseq_selection.h
! f3172011172b443b3f303d8e0e907728  libstdc++-v3/include/parallel/multiway_merge.h
! 4b94b156addf03dcca206c91468d6b4d  libstdc++-v3/include/parallel/multiway_mergesort.h
! 8afd47adff0378e9dad3d2828a73e5d3  libstdc++-v3/include/parallel/numeric
! cd99bd2d6d7316559a594cc6ae125554  libstdc++-v3/include/parallel/numericfwd.h
! c0691d43037583c1eabfcda9d69d9712  libstdc++-v3/include/parallel/omp_loop.h
! e34fe20ee31b2b3594be982d4a2838c2  libstdc++-v3/include/parallel/omp_loop_static.h
! 7229eaf92fa9063399a1b21d65af9f19  libstdc++-v3/include/parallel/par_loop.h
! 59c7bf6b4764eac941eb89ad1abefdc0  libstdc++-v3/include/parallel/parallel.h
! eef980650e435d9cfc3e3e86c810121f  libstdc++-v3/include/parallel/partial_sum.h
! 6c4807ca61979d6790517e1307302926  libstdc++-v3/include/parallel/partition.h
! 784eaca6be9bbe2560649da9bc0a0383  libstdc++-v3/include/parallel/queue.h
! 16b76c35216e64bdb82baddc374934f9  libstdc++-v3/include/parallel/quicksort.h
! 34d4b45e2c8c6c57b3c95d2309eea7c8  libstdc++-v3/include/parallel/random_number.h
! 824cdc67922f62cd26d041cf7909a9f0  libstdc++-v3/include/parallel/random_shuffle.h
! ecf17e34489c1b7d41430faac236ea7e  libstdc++-v3/include/parallel/search.h
! d8559a0f6091582a2c094acfd427976c  libstdc++-v3/include/parallel/set_operations.h
! e086d47631b0af2f0eee6e399671d4ea  libstdc++-v3/include/parallel/settings.h
! 07ff8ee25c969e769f19cda940be644e  libstdc++-v3/include/parallel/sort.h
! 061dd57b090ee54fdb14051e1df833a6  libstdc++-v3/include/parallel/tags.h
! 3f7024810ef6fd9c92bcbb13a9558633  libstdc++-v3/include/parallel/types.h
! 8289778cb3535434275ad4470efb03db  libstdc++-v3/include/parallel/unique_copy.h
! 5a4c24c8c2f50a298123d899a6008eab  libstdc++-v3/include/parallel/workstealing.h
! 46b27b0b5187d3cb73dc48bf2d7f5ebd  libstdc++-v3/include/precompiled/expc++.h
! 3d15fc6476e9dc314bd6098daaf70b76  libstdc++-v3/include/precompiled/extc++.h
! 9396ebfefb799a0f31162f2c859a1c65  libstdc++-v3/include/precompiled/stdc++.h
! 4049626146d982e0b4bb4ca7eb3d029e  libstdc++-v3/include/precompiled/stdtr1c++.h
  75cfb36aeb3ed8672bb4e2957272203c  libstdc++-v3/include/pstl/LICENSE.txt
  12b7134f312d65f84a117c18a456d271  libstdc++-v3/include/pstl/algorithm_fwd.h
! 780496c9a3a64805529c49aac4f38f26  libstdc++-v3/include/pstl/algorithm_impl.h
  f6334ffc99f69354798bfc8024dc39f0  libstdc++-v3/include/pstl/execution_defs.h
! f566d82fdf04653f37b31f79e6254ea2  libstdc++-v3/include/pstl/execution_impl.h
  f7c70190a8af4b3ee9cf149465acf15d  libstdc++-v3/include/pstl/glue_algorithm_defs.h
! 0d7dce5aa4e1f7f801b636d940799592  libstdc++-v3/include/pstl/glue_algorithm_impl.h
  dd6e851bc473b9ff23e81df89abe4fc7  libstdc++-v3/include/pstl/glue_execution_defs.h
  0b0a3983fbed012140824669c804e50a  libstdc++-v3/include/pstl/glue_memory_defs.h
! f63576d9d4865ecf790cadc47ef5ff56  libstdc++-v3/include/pstl/glue_memory_impl.h
  13bca58c5aa152304554b44e5ce89845  libstdc++-v3/include/pstl/glue_numeric_defs.h
! d89841643fea72573673f5fd1c98b7d9  libstdc++-v3/include/pstl/glue_numeric_impl.h
! c85ed99067762cd3ee0e2a740f5c5fbb  libstdc++-v3/include/pstl/memory_impl.h
  b692aa95f9f120acbe330c2893c3ce6e  libstdc++-v3/include/pstl/numeric_fwd.h
! 9b560aca23ed167871c33454c8193e68  libstdc++-v3/include/pstl/numeric_impl.h
! 9bfa43cc35863457a977516f06420eb3  libstdc++-v3/include/pstl/parallel_backend.h
! 892428d43b78431e73945b0e59b42954  libstdc++-v3/include/pstl/parallel_backend_serial.h
! 0c1dbf55f1132a84ad0944ebd1f3a526  libstdc++-v3/include/pstl/parallel_backend_tbb.h
! 87c3cb581dc1a9e156d943e453fd85c9  libstdc++-v3/include/pstl/parallel_backend_utils.h
  d3d2812c60e828c1e822801f148c7630  libstdc++-v3/include/pstl/parallel_impl.h
! 4aac51800d38d244674ec03c3dbec2e2  libstdc++-v3/include/pstl/pstl_config.h
! b273dc977fd70ba3f379d1a3b1863379  libstdc++-v3/include/pstl/unseq_backend_simd.h
  248e4a4c932ee32246a6216c3b58a482  libstdc++-v3/include/pstl/utils.h
! d13b5b555064cbe65fe9a48522f98fc6  libstdc++-v3/include/std/algorithm
! a7cee0670ef2f43ba603a1f326b37e8c  libstdc++-v3/include/std/any
! 2eb20d4a1a3384519f368d3874a83786  libstdc++-v3/include/std/array
! 35945f283d293dd44a50f46f675f8f6d  libstdc++-v3/include/std/atomic
! 2f17eb89f77e2ee921a57253de6ee5c9  libstdc++-v3/include/std/bit
! 5f1c8f4031c376daa520b4042e737031  libstdc++-v3/include/std/bitset
! a5b4db6fed007fcc004ed0ff48a37dd4  libstdc++-v3/include/std/charconv
! 07f9830465216953f0fac42f304ba27b  libstdc++-v3/include/std/chrono
! 8b37cc9e28ddcbaeebc68650806fcfaa  libstdc++-v3/include/std/codecvt
! d749241b64a50448a25412edfef0530f  libstdc++-v3/include/std/complex
! 7af6b971bd60f2b4dcf057b25414933c  libstdc++-v3/include/std/concepts
! 271d8d0b07b3197b87ffc8b60e5bce2f  libstdc++-v3/include/std/condition_variable
! b4493ef8e7b02102293f5a3c9730209b  libstdc++-v3/include/std/coroutine
! b2f8064791ef2156aa9b6064bda8d41b  libstdc++-v3/include/std/deque
! 680dceb8e58dc362e06d8a25de148386  libstdc++-v3/include/std/execution
! 11c5a92f32a0bbd015601d1425677837  libstdc++-v3/include/std/filesystem
! be4d22542b1ad1eb46dee2cf07515b36  libstdc++-v3/include/std/forward_list
! 7e8deeb0e0e8a6b9269929a27884a001  libstdc++-v3/include/std/fstream
! 35d0ec3d03ab91d93ef4645794953a82  libstdc++-v3/include/std/functional
! 25366471e0838b8bc8262fec3a360f23  libstdc++-v3/include/std/future
! 5bdf514df587a0b7e143fd31534822f6  libstdc++-v3/include/std/iomanip
! c38aff42e4260791f26b2c61947dc465  libstdc++-v3/include/std/ios
! 1bb450b79d915a2d887b7b54d3c9a23c  libstdc++-v3/include/std/iosfwd
! da0c5f6020be0dbfaae462da3664d852  libstdc++-v3/include/std/iostream
! a97242b798d849f57f1973ae28ec6a14  libstdc++-v3/include/std/istream
! 0745b363c5c0fdde6b446cc71829d990  libstdc++-v3/include/std/iterator
! 9d5a07eab13798f7ccc2e19862883f0d  libstdc++-v3/include/std/limits
! d44965fd1119516c430f841e5e500b2b  libstdc++-v3/include/std/list
! 665715a7b0758a25afbee33a0423900d  libstdc++-v3/include/std/locale
! caaabd7110451202bfa1b8ad2aabddb9  libstdc++-v3/include/std/map
! eb129d70fff74546439ddc0ed9ec59de  libstdc++-v3/include/std/memory
! 3f400dd93f6a698931858300f3e1943a  libstdc++-v3/include/std/memory_resource
! eb27e3da0e7adcb08114e75823aa314d  libstdc++-v3/include/std/mutex
! 6eef564e779ff625b1fb0fa009e40fd4  libstdc++-v3/include/std/numbers
! 3893165ee53c20e82172830265940367  libstdc++-v3/include/std/numeric
! 43aca55880360ee8aa4174e19fe38490  libstdc++-v3/include/std/optional
! a4920c96869c681a69d1ab1dc26906ee  libstdc++-v3/include/std/ostream
! c43c4eb1ed1a4868d4c6323cc6de7522  libstdc++-v3/include/std/queue
! eb0270a262359d9c42cc05dff455433d  libstdc++-v3/include/std/random
! 6e96508e1189d14028ae46115a4d3530  libstdc++-v3/include/std/ranges
! 0b31cefab4f78a15b3d17e37a9bf18f7  libstdc++-v3/include/std/ratio
! a8222a3097b562fb1cd796c07ec7c61f  libstdc++-v3/include/std/regex
! b66d9f96bf954c63d6525112c84eb381  libstdc++-v3/include/std/scoped_allocator
! 245521f6014ae11952787e3814f04026  libstdc++-v3/include/std/set
! 4eab9ce701852f6f93ce77518be96f9d  libstdc++-v3/include/std/shared_mutex
! 08d4e6b5703c0aa85c063a85d448da8e  libstdc++-v3/include/std/span
! 57d20fd66958cb5ff87fd63d0146d6b1  libstdc++-v3/include/std/sstream
! 2e668b0677af4c060836d386a013d36b  libstdc++-v3/include/std/stack
! 213cb30744e2061b4e0e3d513981f177  libstdc++-v3/include/std/stdexcept
! 4927a29ef58b4de3622103ccacdc0ed1  libstdc++-v3/include/std/stop_token
! d3ac04fc7aa69a7120e89940ee3b1ec7  libstdc++-v3/include/std/streambuf
! eb3091100e8f81513efe90cccdb3c1a5  libstdc++-v3/include/std/string
! 24fc566264c206a5dff63a79ba17a028  libstdc++-v3/include/std/string_view
! e3343b9b60a75f919adeedf0a21617e6  libstdc++-v3/include/std/system_error
! 6ce7c9c44f03d1d1ea1e35933d1a7c2a  libstdc++-v3/include/std/thread
! f9b1a79c3af55c6dd77d8ae5f812b62d  libstdc++-v3/include/std/tuple
! 0ec1762e27283bff05b311d0ec42b40e  libstdc++-v3/include/std/type_traits
! a4fb839cf1231ef9e1358c002e576ec8  libstdc++-v3/include/std/typeindex
! 1337d5daba21c28cdeb4c94ca872b4ba  libstdc++-v3/include/std/unordered_map
! e3b3bdf6bb027fd8ddee13353d7b6234  libstdc++-v3/include/std/unordered_set
! 121c5a282a5a4db2a38d858687acc93c  libstdc++-v3/include/std/utility
! 94ed65fd4131001ca7494272ac631b78  libstdc++-v3/include/std/valarray
! b0bba02ee607469f720a495eccc4e012  libstdc++-v3/include/std/variant
! d226f70ed3db8fb048011cc9efe12c5a  libstdc++-v3/include/std/vector
! d0a43124c9596ee2dc26a3af4bacc792  libstdc++-v3/include/std/version
! becf8176a2ce28ba95a0d84d6bbd909a  libstdc++-v3/include/tr1/array
! 06066bfa4ffb52c16f2a0011ee915639  libstdc++-v3/include/tr1/bessel_function.tcc
! 9f9269f3aa1f171576fbfbccddc0c33c  libstdc++-v3/include/tr1/beta_function.tcc
! eb2f02680f104fc51762a0f3bcc027ae  libstdc++-v3/include/tr1/ccomplex
! a41ded9af79aa61dce52c606d0bf4f9c  libstdc++-v3/include/tr1/cctype
! d227fecdf7b427b7cbbb5c299068b11e  libstdc++-v3/include/tr1/cfenv
! 8b7afc7d6e165ea05c17bbff340550c0  libstdc++-v3/include/tr1/cfloat
! 12499b5ac449cc0d186e8fcdf1352068  libstdc++-v3/include/tr1/cinttypes
! d334a06e2eaa8d855f7928caa13326a9  libstdc++-v3/include/tr1/climits
! 5627f96e51aca38510c7b50fc4206468  libstdc++-v3/include/tr1/cmath
! 1593c0a4a57b393db881d4b99728a762  libstdc++-v3/include/tr1/complex
! 8ecd2dccc95981872f5dd7cf98f3b39f  libstdc++-v3/include/tr1/complex.h
! ef9dcaed6142cabfb5b32cd08df3145a  libstdc++-v3/include/tr1/cstdarg
! 8b8e1527de5f885dd48be7fada970f62  libstdc++-v3/include/tr1/cstdbool
! 2129e0299599267fb09fe8780d993279  libstdc++-v3/include/tr1/cstdint
! 9e9679eedffaed7ff635d8981857d7e0  libstdc++-v3/include/tr1/cstdio
! 86e338395d20f5592aec1b8618e13896  libstdc++-v3/include/tr1/cstdlib
! 644b529cdb6f4e2acfbc8efa0b6ce704  libstdc++-v3/include/tr1/ctgmath
! 57190e72be7ef87ae7de64426b04adac  libstdc++-v3/include/tr1/ctime
! c4ee289ac3669390489bfaf03c67eed4  libstdc++-v3/include/tr1/ctype.h
! 0c0fbbb3db8b69549f773d047d454909  libstdc++-v3/include/tr1/cwchar
! 05f2ba561d95094541b9d8fbfbcf5baa  libstdc++-v3/include/tr1/cwctype
! a02b1372db3c74f0dba01ea122c5a356  libstdc++-v3/include/tr1/ell_integral.tcc
! c51842426888bc6c8468daeeaa978180  libstdc++-v3/include/tr1/exp_integral.tcc
! c33e36ae0808d8a823c7526134ca0cc5  libstdc++-v3/include/tr1/fenv.h
! a4199a29e709f3a450e414abd61dc599  libstdc++-v3/include/tr1/float.h
! c7335ea595b60c4f3b93af5c55a6a60a  libstdc++-v3/include/tr1/functional
! aa68371d6e34deeb2c26caee8be04fb5  libstdc++-v3/include/tr1/functional_hash.h
! 5177b82cdefa3d6fdf0fccadc4e9a9de  libstdc++-v3/include/tr1/gamma.tcc
! 79805ccc7bc809158bbced1c1082b088  libstdc++-v3/include/tr1/hashtable.h
! 184d55bbf5fb95689f00ebe3bb3f987b  libstdc++-v3/include/tr1/hashtable_policy.h
! 28c8f193552b1e00e4a481c2f336f7f9  libstdc++-v3/include/tr1/hypergeometric.tcc
! 790bdbc2cba7570b54dc84e697fcb1ca  libstdc++-v3/include/tr1/inttypes.h
! af4569aa27abef07e1e54671ac1f05da  libstdc++-v3/include/tr1/legendre_function.tcc
! cef10496f70fab1c7c11c4ccf089711d  libstdc++-v3/include/tr1/limits.h
! fa52c1e6938add60929d55ccd019cfba  libstdc++-v3/include/tr1/math.h
! fabe2ae5dd4b2005cbc7602e0443e0b0  libstdc++-v3/include/tr1/memory
! fcfb7e2fcc0771a39c292ff0fc766094  libstdc++-v3/include/tr1/modified_bessel_func.tcc
! 5495f6af469975273f4c72634f281417  libstdc++-v3/include/tr1/poly_hermite.tcc
! 6fb63930008c0ea5db714ad1275aa652  libstdc++-v3/include/tr1/poly_laguerre.tcc
! 1eb08faa47ba499a03f9dfa10b0ab38a  libstdc++-v3/include/tr1/random
! ed1d55d17485b282fcee6dd7e5a888c5  libstdc++-v3/include/tr1/random.h
! c47e2e868b4bc389937c0e50144c51c6  libstdc++-v3/include/tr1/random.tcc
! 8aa7dcd7a234bd2c5975f1e20ac110cb  libstdc++-v3/include/tr1/regex
! 5ae5c07b9be0b909af6bea7d2f44be1a  libstdc++-v3/include/tr1/riemann_zeta.tcc
! 835a478836e3cc45860c738c2d8c461d  libstdc++-v3/include/tr1/shared_ptr.h
! 22432eca009de4449f299abf4f13686a  libstdc++-v3/include/tr1/special_function_util.h
! afdab5d6121da28414162fb973d144bd  libstdc++-v3/include/tr1/stdarg.h
! a81b3d30e1f7c0f049663ea1cb27ad2f  libstdc++-v3/include/tr1/stdbool.h
! aff6b5297b2efb3522dbcde6f0bee22a  libstdc++-v3/include/tr1/stdint.h
! 9156f611f557ae49b953c38eeb75b39f  libstdc++-v3/include/tr1/stdio.h
! 1e8f79be9721b042149fdaa7f434c5d4  libstdc++-v3/include/tr1/stdlib.h
! ef9753f0f3ddaff0b1a323f705301105  libstdc++-v3/include/tr1/tgmath.h
! c9c6cfb10a61fa68896730f31c35f4bc  libstdc++-v3/include/tr1/tuple
! f4e2dd66af47db855e89c3abda192487  libstdc++-v3/include/tr1/type_traits
! f9168437a60285609978c0f4ac249f63  libstdc++-v3/include/tr1/unordered_map
! 2a5e2175e95682b76597b7545af4bb66  libstdc++-v3/include/tr1/unordered_map.h
! a4e82ba5af226b218c677ada1386f3f4  libstdc++-v3/include/tr1/unordered_set
! 554ea2bcd92a67e53507262fbe94ebd0  libstdc++-v3/include/tr1/unordered_set.h
! f52c735be3fa0ba0822b490c864ed5b7  libstdc++-v3/include/tr1/utility
! c4957b1343b7e92f0114cb2f6f92d0ab  libstdc++-v3/include/tr1/wchar.h
! 8612d7a60fc538dd88175066c44827e3  libstdc++-v3/include/tr1/wctype.h
! c299b5a95bf9cc081406fbabbc619eec  libstdc++-v3/include/tr2/bool_set
! ef3c3be52710a1911df3359721e497e4  libstdc++-v3/include/tr2/bool_set.tcc
! 1fe750461422135879123aecf9f3bc81  libstdc++-v3/include/tr2/dynamic_bitset
! bd40329a5bd87d9247007a23cf9d21ea  libstdc++-v3/include/tr2/dynamic_bitset.tcc
! 8c1b4126ab09f7b340712a32a9d379c5  libstdc++-v3/include/tr2/ratio
! c302e24e8c307b5e29514f20ff56e166  libstdc++-v3/include/tr2/type_traits
! 0a1aa020ec179500ea892d3b950205a9  libstdc++-v3/libsupc++/Makefile.am
! a06a5a4740e6879e487d9f499e3ff1a8  libstdc++-v3/libsupc++/Makefile.in
! b0f9c6b6e8ba996af9d85ec44c9078b7  libstdc++-v3/libsupc++/array_type_info.cc
! 10eee09d05d87d10df2c70128336876e  libstdc++-v3/libsupc++/atexit_arm.cc
! 0f4fe28cf9d498afcf0d4479045e53b4  libstdc++-v3/libsupc++/atexit_thread.cc
! 20c4ed0c54350a5e280885bdd5ea31a4  libstdc++-v3/libsupc++/atomic_lockfree_defines.h
! 36e4ee246af5055d2024e195e754f296  libstdc++-v3/libsupc++/bad_alloc.cc
! 977600028cdb513893b9e750d342ea13  libstdc++-v3/libsupc++/bad_array_length.cc
! 0cbe19d784b7003c52877b01c5cfd597  libstdc++-v3/libsupc++/bad_array_new.cc
! c2c5edf248125df1baa7acc04b65bfe4  libstdc++-v3/libsupc++/bad_cast.cc
! 998cbb4737b22f094cde1c05c40098b8  libstdc++-v3/libsupc++/bad_typeid.cc
! 3a4784cb41c5d3e8500d6df66036cf1e  libstdc++-v3/libsupc++/class_type_info.cc
! 109d6d87d9c70b1351f72cb5690a3aa0  libstdc++-v3/libsupc++/compare
! bd0ecfe5c8670b8a9e4a3514ce299ca0  libstdc++-v3/libsupc++/cxxabi.h
! acf0d1fef71373c5162fe13d85bb2c25  libstdc++-v3/libsupc++/cxxabi_forced.h
! 928915fd1e9fc3d3622d49a8c45333ce  libstdc++-v3/libsupc++/cxxabi_init_exception.h
! e4b6e6c4bc1f2bc87bcc4af5f1168f28  libstdc++-v3/libsupc++/del_op.cc
! 234d6c4bd5837880bae48e28d4b85967  libstdc++-v3/libsupc++/del_opa.cc
! bbed62598cdbc4215d89da171ff2e252  libstdc++-v3/libsupc++/del_opant.cc
! ff14c4ad1086eb6635b6201c4553d7e5  libstdc++-v3/libsupc++/del_opnt.cc
! e510f08ed866e1a340c91a51f1eaad46  libstdc++-v3/libsupc++/del_ops.cc
! 47824ec0a3ffbd8f03e1ca3b559ab9e0  libstdc++-v3/libsupc++/del_opsa.cc
! 7b1750b65b49f997ba14b3545fbb922b  libstdc++-v3/libsupc++/del_opv.cc
! 6bd45d83d3db1462bbf8b33ca9c58d18  libstdc++-v3/libsupc++/del_opva.cc
! 52b3283ca5933eded93a48aba19b82df  libstdc++-v3/libsupc++/del_opvant.cc
! 3ed8340e955a44fdda22952fc453b6c0  libstdc++-v3/libsupc++/del_opvnt.cc
! b662f60e0a172b4f700b98852e81789e  libstdc++-v3/libsupc++/del_opvs.cc
! 0be57a9c8b924d59965e3b05089d5b65  libstdc++-v3/libsupc++/del_opvsa.cc
! ad02769c165053e2d136b0232c2342fe  libstdc++-v3/libsupc++/dyncast.cc
! da31e0ce7233ab663b1b8233b604c5cc  libstdc++-v3/libsupc++/eh_alloc.cc
! 6d206ecf1fad9dd05c1d07a3aca0f983  libstdc++-v3/libsupc++/eh_arm.cc
! a950060545fef39fd058d23b404dc58a  libstdc++-v3/libsupc++/eh_atomics.h
! 6162e94574d91ecb72be7b049e864482  libstdc++-v3/libsupc++/eh_aux_runtime.cc
! 04c78c4d4a8c96c327112d0cf3f62ba8  libstdc++-v3/libsupc++/eh_call.cc
! 323eeaaf7217172e0cab05d20f449630  libstdc++-v3/libsupc++/eh_catch.cc
! 781e88d0f9e28e3be991d3e49ca30ae7  libstdc++-v3/libsupc++/eh_exception.cc
! 4d2a8798c9449bb993d4332f981d4141  libstdc++-v3/libsupc++/eh_globals.cc
! 710822b429ef74b1080b39a7768a4def  libstdc++-v3/libsupc++/eh_personality.cc
! 17bd3b49f294adea4a44611195fcc83e  libstdc++-v3/libsupc++/eh_ptr.cc
! f014d698b27243fd9d4b0dc63604e3e3  libstdc++-v3/libsupc++/eh_term_handler.cc
! 7dd3cab89ba82d519abd81e19bbef326  libstdc++-v3/libsupc++/eh_term_handler.h
! e333f3400ec7d458c680be4e7d4a1627  libstdc++-v3/libsupc++/eh_terminate.cc
! a59622e276639dd515175fbd6395df24  libstdc++-v3/libsupc++/eh_throw.cc
! 8c2f3ce2f9fba1cab422421601033c2f  libstdc++-v3/libsupc++/eh_tm.cc
! 1cd5b6ce1ebf8e06a5af76e1a7a8fa5f  libstdc++-v3/libsupc++/eh_type.cc
! 78238663a71562f56f9dc00b37fc2094  libstdc++-v3/libsupc++/eh_unex_handler.cc
! efaee9802db9806f8b37c1ab4846218f  libstdc++-v3/libsupc++/enum_type_info.cc
! 6fd4b4da611a39ba27d0262a7e7ddd59  libstdc++-v3/libsupc++/exception
! d231b21df16a2b98bae52e9f06236f84  libstdc++-v3/libsupc++/exception.h
! 5eec165f70e99f7038ec1079aeef99fb  libstdc++-v3/libsupc++/exception_defines.h
! 17ca6bef6dd8f906cb5e59165a298a13  libstdc++-v3/libsupc++/exception_ptr.h
! 05409d8f020796a3a4767bfc4879d82d  libstdc++-v3/libsupc++/function_type_info.cc
! 46fd738848135c9b89b456cd4432d003  libstdc++-v3/libsupc++/fundamental_type_info.cc
! 84c501e2416bdb87e34abe6237a3c17f  libstdc++-v3/libsupc++/guard.cc
! f995be571c49b49289cb4c5de246a591  libstdc++-v3/libsupc++/guard_error.cc
! 499f44fbab08a2d2bc291e87930001c4  libstdc++-v3/libsupc++/hash_bytes.cc
! a9d6bf3e7b5591d98a15ccbabe8992a8  libstdc++-v3/libsupc++/hash_bytes.h
! 3233e15027e0d66e4a1f3fdac41e1523  libstdc++-v3/libsupc++/initializer_list
! f3b2f278f157b615a46dfe8757355a87  libstdc++-v3/libsupc++/nested_exception.cc
! c6ff9941eea45390601d9f88f7e9c189  libstdc++-v3/libsupc++/nested_exception.h
! 726c612aec9b4cf5ffb86ae013500764  libstdc++-v3/libsupc++/new
! 5b82533aa83b45d8fab5a61f946a7c55  libstdc++-v3/libsupc++/new_handler.cc
! af35a3d0f506bd4981ff5656f06aa4e4  libstdc++-v3/libsupc++/new_op.cc
! d429265d795447b1f392ca9c49e63e16  libstdc++-v3/libsupc++/new_opa.cc
! ec1c7852934ac7e6673169f46bbb2d6a  libstdc++-v3/libsupc++/new_opant.cc
! 2716d45ff48a14bd06985fbf36c7cab8  libstdc++-v3/libsupc++/new_opnt.cc
! 3d049eba4fdeccdf9aba8cccf1b9eff9  libstdc++-v3/libsupc++/new_opv.cc
! ef592f9cdd0c0e62cac97367ab36b8fb  libstdc++-v3/libsupc++/new_opva.cc
! b0b7bc1cc7d188efc3ec019764c56f7a  libstdc++-v3/libsupc++/new_opvant.cc
! 0178c10bb1a1f62a210a0c1af6531a29  libstdc++-v3/libsupc++/new_opvnt.cc
! 06b63140b029ce7ec9113090bc531e25  libstdc++-v3/libsupc++/pbase_type_info.cc
! 2caf1587b38ad402400b10697bfc1658  libstdc++-v3/libsupc++/pmem_type_info.cc
! 07ba06004a3e9cfce2ae95915af6fe08  libstdc++-v3/libsupc++/pointer_type_info.cc
! b0655ff1b1a0301938e295df5fa558a2  libstdc++-v3/libsupc++/pure.cc
! 5c554221026af9676435ad2664587216  libstdc++-v3/libsupc++/si_class_type_info.cc
! d6b610198fa0dcb5e900ae82d22ddff0  libstdc++-v3/libsupc++/tinfo.cc
! 248ce60196c2b9e975b23c4a402a4b67  libstdc++-v3/libsupc++/tinfo.h
! b4b7715da36132fb105b841809166e12  libstdc++-v3/libsupc++/tinfo2.cc
! 86fb1d29e3cddda9f25e591e7ab8cc57  libstdc++-v3/libsupc++/typeinfo
! baf79639efa96243dc2422df6b205763  libstdc++-v3/libsupc++/unwind-cxx.h
! c8685e61b78411092f8634594d97b5a8  libstdc++-v3/libsupc++/vec.cc
! 7ce117bee5c8e12186c65fdc79f64eed  libstdc++-v3/libsupc++/vmi_class_type_info.cc
! 29f94a79597c84c1002804cbf8a964d8  libstdc++-v3/libsupc++/vterminate.cc
! 5101eb6939b8a2d7ea7b08bde7a39838  libstdc++-v3/libsupc++/vtv_stubs.cc
  6e1809e9ac8f237378ab1ebc1b99fb6a  libstdc++-v3/linkage.m4
! 75cf329443f1f33e724396ae592b9277  libstdc++-v3/po/Makefile.am
! be884fac7fe653644bd183b904956886  libstdc++-v3/po/Makefile.in
! 120693df29f3694825c1319664059f88  libstdc++-v3/po/POTFILES.in
! fd848e9998fa389554b1d1a78f56c932  libstdc++-v3/po/de.po
! c3325ce572e11e80ad0892e4f64397ae  libstdc++-v3/po/fr.po
! 51e81dfb580a235b73f6a3b903a822a9  libstdc++-v3/po/libstdc++.pot
! 62c624a1041a47c9d0b776aed8474d8b  libstdc++-v3/po/string_literals.cc
! b8eebd20a7c7445e66d60ef7200fabb9  libstdc++-v3/python/Makefile.am
! ea77968350f7b0fa8ca65e556314ac58  libstdc++-v3/python/Makefile.in
! dd2d88360d92246b172169fa496272e9  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
! ae17853071ca9899f6cb501024af780a  libstdc++-v3/python/libstdcxx/v6/__init__.py
! 80ec62783506bb83f60f3f86e4bbe73d  libstdc++-v3/python/libstdcxx/v6/printers.py
! 236a5719c2424adc4d59612fd75dc1c6  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
! 135cc633b60b1fe91bcc3ea62a5ff845  libstdc++-v3/scripts/check_performance
! 222d3bed3efbfa2cc45349dba7566fb4  libstdc++-v3/scripts/create_testsuite_files
! 19ceee7be782508048ba5a7d6cd8f1d5  libstdc++-v3/scripts/extract_symvers.in
! ba4786b815ac1fd4a5747e3b7c301373  libstdc++-v3/scripts/extract_symvers.pl
  755b77f929d926f07f3257df2e802f2e  libstdc++-v3/scripts/gen_bind_includers.pl
  85378fa65bc3dc46ffe255374b304560  libstdc++-v3/scripts/gen_includers.pl
  f1a84a17158780aaa37927191db4463a  libstdc++-v3/scripts/gen_includers2.pl
  e8e7773bc629a008b2813ee507a0dab6  libstdc++-v3/scripts/make_exports.pl
  80b6ff44b325c6b6d113435d8eea4b76  libstdc++-v3/scripts/make_graph.py
! dc1296234355fa7f34409b5f2e70986b  libstdc++-v3/scripts/run_doxygen
  7579350b0ac0412cb42e9c354485ebd9  libstdc++-v3/scripts/testsuite_flags.in
! dd602fb73ab044dd4936ea0f7394293f  libstdc++-v3/src/Makefile.am
! b5b888c48a4edc7b41ef7cf409072cdc  libstdc++-v3/src/Makefile.in
! 9d0e24e5f795d56cfc9228b163b63a46  libstdc++-v3/src/c++11/Makefile.am
! 87d2433d51742544fd9035db13354513  libstdc++-v3/src/c++11/Makefile.in
! 642c0b1386b501bcbc4637d9054f04c3  libstdc++-v3/src/c++11/chrono.cc
! fcc171b450c88b01bf27d368b75cfc4c  libstdc++-v3/src/c++11/codecvt.cc
! 7ade28f04aa255d381be649a9e98a526  libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc
! 4a07be0609d547cfef8c8ab3d59a3f89  libstdc++-v3/src/c++11/compatibility-c++0x.cc
! 8ffce56f1d8c7852d616eca740014f05  libstdc++-v3/src/c++11/compatibility-chrono.cc
! 7a0912fb72a916c1fa8ee01df3b7593c  libstdc++-v3/src/c++11/compatibility-condvar.cc
! ccb3b1f5b8afeaeaf79c36b9545418f2  libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc
! d44412cc3a7888aba9b65989a91b80c2  libstdc++-v3/src/c++11/condition_variable.cc
! 4acdd01a6c558afa2f4b6dfe49e65420  libstdc++-v3/src/c++11/cow-fstream-inst.cc
! bc7cfdd0e5d822d399c4d58dfee8ef80  libstdc++-v3/src/c++11/cow-locale_init.cc
! 195f8a13fc275a42d868ab10c53067ce  libstdc++-v3/src/c++11/cow-shim_facets.cc
! f0492639f7f0422d7049998a2565ca50  libstdc++-v3/src/c++11/cow-sstream-inst.cc
! e92919b25fc543a2d62e738da8b8f575  libstdc++-v3/src/c++11/cow-stdexcept.cc
! 0d90f828c31c96aa6a2579daf0464397  libstdc++-v3/src/c++11/cow-string-inst.cc
! ca941bfc0f6abe50651d62ef454c4183  libstdc++-v3/src/c++11/cow-string-io-inst.cc
! 148106d6937f8b76f8371d1db668ecd1  libstdc++-v3/src/c++11/cow-wstring-inst.cc
! 1bfd932df943324dc826911bc08b1238  libstdc++-v3/src/c++11/cow-wstring-io-inst.cc
! 6202fb327e8ffa26217793d99d26930b  libstdc++-v3/src/c++11/ctype.cc
! 42050ba8b3ee85d73812b965f8aa00bc  libstdc++-v3/src/c++11/cxx11-hash_tr1.cc
! 918440e77ab6a5808bdbcdf8fe77f1bc  libstdc++-v3/src/c++11/cxx11-ios_failure.cc
! f3f2cbb0daabd4c296c69e78fcc4d5b1  libstdc++-v3/src/c++11/cxx11-locale-inst.cc
! c7d811d14528360a149cf0377efc02fd  libstdc++-v3/src/c++11/cxx11-shim_facets.cc
! 034dc42fc52106850e40b3e62835d863  libstdc++-v3/src/c++11/cxx11-stdexcept.cc
! 8281969240611fc6c78770eabf521ccf  libstdc++-v3/src/c++11/cxx11-wlocale-inst.cc
! 5d799503a44753fb86b9bc04abe3ff74  libstdc++-v3/src/c++11/debug.cc
! 261be1140b9f3c325719c4d9bbfee352  libstdc++-v3/src/c++11/ext11-inst.cc
! 8bcc516811e604ab214bd8064dc7dbdb  libstdc++-v3/src/c++11/fstream-inst.cc
! 3c4ecaa8f3d300ae9134cc9985248bed  libstdc++-v3/src/c++11/functexcept.cc
! 496e315e601a184dce610444b442da69  libstdc++-v3/src/c++11/functional.cc
! 2a87f0b636773b2b02c4d147dabe42f6  libstdc++-v3/src/c++11/futex.cc
! f9646a3e5cb20bdcf9e86a90b9d1c3d0  libstdc++-v3/src/c++11/future.cc
! 1dedf023b628eb6b8012121eab960053  libstdc++-v3/src/c++11/hash_c++0x.cc
! 9d30c3537a201c1b50aa6e866137bbd6  libstdc++-v3/src/c++11/hashtable_c++0x.cc
! 73641909b8936165ec0d82de554e483e  libstdc++-v3/src/c++11/ios-inst.cc
! 4c6cc270ccc85f7b190511b20fd117c9  libstdc++-v3/src/c++11/ios.cc
! 9c39814f1a86ec95500d985d3b2fb3eb  libstdc++-v3/src/c++11/iostream-inst.cc
! 3899189ca7d4bd976ee2af3bac9f6aa4  libstdc++-v3/src/c++11/istream-inst.cc
! 0854161c931e341070ab1477b6adaf92  libstdc++-v3/src/c++11/limits.cc
! 0deb81699c6ad9ac7686650fd1b7f0b1  libstdc++-v3/src/c++11/locale-inst.cc
! f9251761bd503752899141cea5df2134  libstdc++-v3/src/c++11/mutex.cc
! 228b7948ee402f4b4e27ee6e0dc0dfd0  libstdc++-v3/src/c++11/mutex_pool.h
! 93533810bbe584776b924f1f9fb9e38c  libstdc++-v3/src/c++11/ostream-inst.cc
! ad5677c370e44dc219c9edd14948d12d  libstdc++-v3/src/c++11/placeholders.cc
! 9123dce0f6b32b92917cacfec039909d  libstdc++-v3/src/c++11/random.cc
! 9ca7f698d7bfe5f3749fba5640d40949  libstdc++-v3/src/c++11/regex.cc
! 4638fae1fa44b4315ee51070b1375fe0  libstdc++-v3/src/c++11/shared_ptr.cc
! f261a5695cf413b262d8d771012c36cf  libstdc++-v3/src/c++11/snprintf_lite.cc
! 325609a458c28bddc37df7073543fda3  libstdc++-v3/src/c++11/sso_string.cc
! 58ea140d0a02d58d144b0e2b0b8a3c7c  libstdc++-v3/src/c++11/sstream-inst.cc
! 4fb3701cc944efa6295cf3701076da7d  libstdc++-v3/src/c++11/streambuf-inst.cc
! 67489e44aabf6ee27491f83aded895e5  libstdc++-v3/src/c++11/string-inst.cc
! 90fff7ea468ea45ee79b57c88711d684  libstdc++-v3/src/c++11/string-io-inst.cc
! b2e2720546b88a7a4deab7e3d9f68417  libstdc++-v3/src/c++11/system_error.cc
! 3c91c9ec8d1b0a5df45bf18e30b0af8e  libstdc++-v3/src/c++11/thread.cc
! 13e198b930798010d9e16aee69f138b5  libstdc++-v3/src/c++11/wlocale-inst.cc
! 1ea4c9bf30c5548ffad100b839a94a6a  libstdc++-v3/src/c++11/wstring-inst.cc
! 39ae108cfb70c0557e92896f0a8d4672  libstdc++-v3/src/c++11/wstring-io-inst.cc
! 6133e7c167b9d708fec2b95f1bcacbf0  libstdc++-v3/src/c++17/Makefile.am
! d50a92ec3a38f89b984a6c5c5942d0b2  libstdc++-v3/src/c++17/Makefile.in
! 5153750745e4ef562c8de604d7724b9b  libstdc++-v3/src/c++17/cow-fs_dir.cc
! d5f997a3f8dd5097f784e8fe86ddd77e  libstdc++-v3/src/c++17/cow-fs_ops.cc
! 447f9dd7802185faaef3f02d5e28e059  libstdc++-v3/src/c++17/cow-fs_path.cc
! ef1ee344de2bc2b04be3d0f275c0b4d3  libstdc++-v3/src/c++17/cow-string-inst.cc
  21e22ff1ddec6a91c7b379d6f6398649  libstdc++-v3/src/c++17/default_resource.h
! 1f8175c4b6152a79f499e31e612be72d  libstdc++-v3/src/c++17/fs_dir.cc
! 40a53a7e312203d0b28233650e71358e  libstdc++-v3/src/c++17/fs_ops.cc
! 78942e7c26418bc0bfa5504d75a1bab4  libstdc++-v3/src/c++17/fs_path.cc
! 194bab9f1a1b9fef9dcd795adf026641  libstdc++-v3/src/c++17/memory_resource.cc
! 87912386c5e6de771b56062a52139e93  libstdc++-v3/src/c++17/ostream-inst.cc
! 2f637a3602ab38de44daa31a9a1de119  libstdc++-v3/src/c++17/string-inst.cc
! 006d4d754512e332eac656862570ac52  libstdc++-v3/src/c++98/Makefile.am
! 97f699e34454d9377286405357435434  libstdc++-v3/src/c++98/Makefile.in
! e4fdb47a74a89f009512acf06a77e397  libstdc++-v3/src/c++98/allocator-inst.cc
! 6dcbfe93ffa948b4eb4b677ffffc21d7  libstdc++-v3/src/c++98/bitmap_allocator.cc
! d7200c74dc5ada450fc056d31067066a  libstdc++-v3/src/c++98/codecvt.cc
! 7ab22e6f00d15aeef321deb935620991  libstdc++-v3/src/c++98/compatibility-debug_list-2.cc
! 5f2990263b45faa468b41f8e28360c53  libstdc++-v3/src/c++98/compatibility-debug_list.cc
! ab9102231456009877858931a2c8169c  libstdc++-v3/src/c++98/compatibility-ldbl.cc
! f5f20ea40f5b792b3c3adb9932ad9ec9  libstdc++-v3/src/c++98/compatibility.cc
! cafb1200e2263d8866a4d4d4684f2407  libstdc++-v3/src/c++98/complex_io.cc
! 7ca502752d8f172b3577264a5750e1f7  libstdc++-v3/src/c++98/concept-inst.cc
! 40c1ba055630ed3741a8af61eca15566  libstdc++-v3/src/c++98/cow-istream-string.cc
! e125ca757cbf8b8d52ef29a2811d84da  libstdc++-v3/src/c++98/ext-inst.cc
! fac8613533cd2746ee4c9dca432ae071  libstdc++-v3/src/c++98/globals_io.cc
! d63e2280a3e63bf40f56eb2159d06fbe  libstdc++-v3/src/c++98/hash-long-double-tr1-aux.cc
! 59435a78742ddd9184239f3aef35342b  libstdc++-v3/src/c++98/hash_tr1.cc
! 87afcad71e7f9f55cc50b107044c9669  libstdc++-v3/src/c++98/hashtable_tr1.cc
! f262e8e2aa15a1453da1e4c9ac700f97  libstdc++-v3/src/c++98/ios_failure.cc
! 6f45bc4e33bedf6b150a938879b832d1  libstdc++-v3/src/c++98/ios_init.cc
! 4c7c606c80abcb5240f54a5ab19668c5  libstdc++-v3/src/c++98/ios_locale.cc
! a255aef4e96d293a49f3b44a2db3c455  libstdc++-v3/src/c++98/istream-string.cc
! ecbcd6e72604a20f66e7353eb9a2f7e7  libstdc++-v3/src/c++98/istream.cc
! eae70c6e921ed4d36afea6380695aa9a  libstdc++-v3/src/c++98/list-aux-2.cc
! 2a2c647995986981186aa2660eda2c52  libstdc++-v3/src/c++98/list-aux.cc
! 816e86c5924c50dc092fc082907ba6ef  libstdc++-v3/src/c++98/list.cc
! 15adf3b22d8b7ed0bf87520375b64021  libstdc++-v3/src/c++98/list_associated-2.cc
! 7a999329ee1407cd2343229315b6b2f3  libstdc++-v3/src/c++98/list_associated.cc
! b6109a4e004704d22c9566fef1926519  libstdc++-v3/src/c++98/locale.cc
! c68b1bcfdb550b1e1252e2abd827f3c1  libstdc++-v3/src/c++98/locale_facets.cc
! ca247984e954254977bb5598e7205a86  libstdc++-v3/src/c++98/locale_init.cc
! 7ae86cded3211b11ed9f587fc945bc35  libstdc++-v3/src/c++98/localename.cc
! 1ad0540543a6c07432c1a796b76f340e  libstdc++-v3/src/c++98/math_stubs_float.cc
! 43e43cc5d964d95f8e53ff286db4b10c  libstdc++-v3/src/c++98/math_stubs_long_double.cc
! f9e853038a9e6365c7aad0ae2c1c7d96  libstdc++-v3/src/c++98/misc-inst.cc
! 50ddae9ca51edf6f2b792e5da3c039b6  libstdc++-v3/src/c++98/mt_allocator.cc
! de811ce3f370485e5a57f779f73ffa34  libstdc++-v3/src/c++98/parallel_settings.cc
! 3368d0dc151aec73c1a9be3d62432bd3  libstdc++-v3/src/c++98/pool_allocator.cc
! e8d2927cb22e5c8ff221ac18134dc6fe  libstdc++-v3/src/c++98/stdexcept.cc
! 448ca5755549960ab87e049055d6614f  libstdc++-v3/src/c++98/streambuf.cc
! 4746aa713e865ff56eb3b8014b05775e  libstdc++-v3/src/c++98/strstream.cc
! 8aa046fb8e04fe4e97e9f9e857412401  libstdc++-v3/src/c++98/tree.cc
! 160ca66bbf9bc039d3f442a26afd7929  libstdc++-v3/src/c++98/valarray.cc
! f696e1553cdd7d1b79fb2d8012409057  libstdc++-v3/src/filesystem/Makefile.am
! 446b5a7923eb491c94ced393012b7d48  libstdc++-v3/src/filesystem/Makefile.in
! 8815d16fd7268dfcf421241576ddde25  libstdc++-v3/src/filesystem/cow-dir.cc
! e2247434ec0f4ba1ddd7dfbeff34c24e  libstdc++-v3/src/filesystem/cow-ops.cc
! cb2f4ac26828ff897617df0f8edfeb5c  libstdc++-v3/src/filesystem/cow-path.cc
! 18060719bf00c53f45270f021ed36cd8  libstdc++-v3/src/filesystem/dir-common.h
! ecf248d129384f868ed501ca64cb40d5  libstdc++-v3/src/filesystem/dir.cc
! 83b4b430427186f28a0bc64770655f8a  libstdc++-v3/src/filesystem/ops-common.h
! 66808cb66277f721027c3b253f643ff6  libstdc++-v3/src/filesystem/ops.cc
! 4a126f97e780b00040b3b0b2ebe31380  libstdc++-v3/src/filesystem/path.cc
! 65fe0dc13541415c36e51df643d228e0  libstdc++-v3/src/shared/hashtable-aux.cc
! 72e87d870132ac94eda716f470d8918d  libstdc++-v3/testsuite/17_intro/badnames.cc
! b3d3ed9b91d70f1730fd2328876aa09b  libstdc++-v3/testsuite/17_intro/freestanding.cc
! bd871e343ea3ccdd4da0edfa1297090a  libstdc++-v3/testsuite/17_intro/headers/c++1998/49745.cc
! 1ac0fe5b84a7b95bd5c5513290440bfe  libstdc++-v3/testsuite/17_intro/headers/c++1998/all.cc
! 54e7e8497c5b7d77699b8b60538467b5  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_attributes.cc
! eaca426c2876d91be0c0e85903aba4d0  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_c++200x_compatibility.cc
! 6f7ecac198347f07efbf2e3f32960033  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_exceptions.cc
! a85761670ef7d6681579ee3696f368a4  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_rtti.cc
! 9616ea361d5e924021e11ee126757ba2  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++1998/charset.cc
! 7ce9a97a7ccd5611ec779a8d173d988f  libstdc++-v3/testsuite/17_intro/headers/c++1998/complex.cc
! 9e551b3402ba0c4e231bffc9d544cf43  libstdc++-v3/testsuite/17_intro/headers/c++1998/operator_names.cc
! 34d458c857c62b500774918b9eb8d783  libstdc++-v3/testsuite/17_intro/headers/c++1998/profile_mode.cc
! 41b4ec59b29bf5fb800422a7951601f1  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++.cc
! 06501b480cd1c6083a6a61b7363c9c52  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc
! ef60706c8ca20be87b2cb42a7b18914c  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_multiple_inclusion.cc
! 753190f76b112ba6ff0fb072bbbbec5d  libstdc++-v3/testsuite/17_intro/headers/c++2011/42319.cc
! c267879ef7c33e43a66054ff649cb1a5  libstdc++-v3/testsuite/17_intro/headers/c++2011/67309.cc
! a468f668da9d10af501163e2fbdd63ff  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_attributes.cc
! 0707c804a2fdaf76cfbace1c30418d2c  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_no_exceptions.cc
! 7f6a4b7506fe1cde322b12c53f52112b  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_no_rtti.cc
! cc63f3d8220ff45db3e9ec4fa725ca3b  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++2011/charset.cc
! b11828105ad9fa176fbf14da852c7997  libstdc++-v3/testsuite/17_intro/headers/c++2011/linkage.cc
! 3e8a1694be938e6fdfa9befe89a17878  libstdc++-v3/testsuite/17_intro/headers/c++2011/operator_names.cc
! 4b2aa64269d8a242edcef38f043c77ac  libstdc++-v3/testsuite/17_intro/headers/c++2011/parallel_mode.cc
! 9fe127baffb71db2dac5183eb9c3a968  libstdc++-v3/testsuite/17_intro/headers/c++2011/profile_mode.cc
! 4b9da47c87d09172f4428e4d84be4d90  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++.cc
! f7273695a0183374bea6bc7ee2e6c448  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
! 9400261e57cb8cdf74ed5db6a6bb6aa0  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc
! 0a820666ce69ab55059327924b93cac2  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_no_exceptions.cc
! 2eec55dca49a428061b5b9929576cc28  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_no_rtti.cc
! f4d9645cfa86ab9632a993a5f3c2add1  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++2014/charset.cc
! 2dc042397126918d623b030baed4b6b1  libstdc++-v3/testsuite/17_intro/headers/c++2014/operator_names.cc
! 22ea39fa95a816e18df0d88546128652  libstdc++-v3/testsuite/17_intro/headers/c++2014/parallel_mode.cc
! 0038200392cc7131db1d4e0a9baeb2f2  libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc
! 7f0a80018a0f5e320790839af365edf6  libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc
! 22a5080ff520bd7faf6daa141dd0b245  libstdc++-v3/testsuite/17_intro/headers/c++2017/all_attributes.cc
! f8cd8636c1679c390dd7b27078ae3157  libstdc++-v3/testsuite/17_intro/headers/c++2017/all_no_exceptions.cc
! 09d0855144e5383438c03eca9b1ff5c5  libstdc++-v3/testsuite/17_intro/headers/c++2017/all_no_rtti.cc
! 94900d8efd4be0695bd8e2fe99c6eeba  libstdc++-v3/testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++2017/charset.cc
! a32557782aafbff610772fb7a5e9f254  libstdc++-v3/testsuite/17_intro/headers/c++2017/operator_names.cc
! 5ac27eea32e4382b7eea845f0fa1c1f3  libstdc++-v3/testsuite/17_intro/headers/c++2017/parallel_mode.cc
! 6d849846e71dd6dc5988b9a7c00555de  libstdc++-v3/testsuite/17_intro/headers/c++2017/stdc++.cc
! 52695012ea7b44f804504798d34926a3  libstdc++-v3/testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc
! ff7a7eae0b125cfa6b37c766e3c4bb46  libstdc++-v3/testsuite/17_intro/headers/c++2020/all_attributes.cc
! dc0c327556eddcf11ebb066a0446558f  libstdc++-v3/testsuite/17_intro/headers/c++2020/all_no_exceptions.cc
! 9e8816efbf11034ae5aa28c0dd3334e3  libstdc++-v3/testsuite/17_intro/headers/c++2020/all_no_rtti.cc
! 8e7c5fc039a1b8245b07f3b05b647447  libstdc++-v3/testsuite/17_intro/headers/c++2020/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++2020/charset.cc
! 938a022059e1c731076e20aa462db76a  libstdc++-v3/testsuite/17_intro/headers/c++2020/operator_names.cc
! 5db28641fcfeb9fa540357a1c2521c41  libstdc++-v3/testsuite/17_intro/headers/c++2020/stdc++.cc
! 5f2b3fa82c579ba8031e1e4bb6f6e2f1  libstdc++-v3/testsuite/17_intro/headers/c++2020/stdc++_multiple_inclusion.cc
! a6ed1dc8a599a942524d06e38fdab7fa  libstdc++-v3/testsuite/17_intro/names.cc
! 1ecf512a3207128b09bdc697eb76bf54  libstdc++-v3/testsuite/17_intro/shared_with_static_deps.cc
! 4650080bee2b638659331760fac18f8f  libstdc++-v3/testsuite/17_intro/static.cc
! e3a0c14e0c45e07f34f1b51ddef6d97e  libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc
! b332376ec3573b196b348b1c5159de76  libstdc++-v3/testsuite/17_intro/using_namespace_std.cc
! b624e2a8b7716ffa8c7f6d3dff5ed054  libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc
! deaa99eb6e23ec5dfc3ef84c35df3b41  libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc
! 8c2dbfcef749a788ea908b9b8de19004  libstdc++-v3/testsuite/18_support/50594.cc
! a57adbd50f4842d963a27b9fcab4ce5b  libstdc++-v3/testsuite/18_support/51333.cc
! 116cbd94059a40c22857a4a5c4c530b2  libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc
! ebf699d78a9dd38596a8a3583af7aceb  libstdc++-v3/testsuite/18_support/bad_alloc/cons_virtual_derivation.cc
! ebf6d60ca57ba63f8a1163fa88492fb5  libstdc++-v3/testsuite/18_support/bad_alloc/what.cc
! 3329894654d0661dc17ee5ed1fe9e083  libstdc++-v3/testsuite/18_support/bad_cast/cons_virtual_derivation.cc
! 2604461a98fee4acecb43ee66b5129b0  libstdc++-v3/testsuite/18_support/bad_cast/what.cc
! 2c32a731b501769c16bb5c12da24c163  libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c
! 375051f7eeeafe77c4e150e9f702ddd4  libstdc++-v3/testsuite/18_support/bad_exception/59392.cc
! eb7c6cee64de6380b138a5994f26866c  libstdc++-v3/testsuite/18_support/bad_exception/cons_virtual_derivation.cc
! 2bfc06a1443d279f3b5ab9c9ed28928b  libstdc++-v3/testsuite/18_support/bad_exception/what.cc
! d98c81219ceb89773ae3826356ddac3b  libstdc++-v3/testsuite/18_support/bad_typeid/cons_virtual_derivation.cc
! db32112e54ea8e4dbe46c755dff95b57  libstdc++-v3/testsuite/18_support/bad_typeid/what.cc
! 7aa9bf1ea1c75af427353050e7ebcd20  libstdc++-v3/testsuite/18_support/byte/81076.cc
! 18de4f42ca6f16c946c1bbb3d29ffbcc  libstdc++-v3/testsuite/18_support/byte/global_neg.cc
! 7a4acafee1f39b7bf208cbc3ea2e2017  libstdc++-v3/testsuite/18_support/byte/ops.cc
! a5cccbcdb974939ec18d1237dbe67f75  libstdc++-v3/testsuite/18_support/byte/requirements.cc
! 48252aafc471ab903fcab8ac534384a9  libstdc++-v3/testsuite/18_support/comparisons/algorithms/partial_order.cc
! bc4a5123f0f0167549a2c07e2d825781  libstdc++-v3/testsuite/18_support/comparisons/algorithms/strong_order.cc
! bc9693a074f3b17f185776f01dd57a59  libstdc++-v3/testsuite/18_support/comparisons/algorithms/weak_order.cc
! f556ee0f16b7c8d0c9b511ff09e025a7  libstdc++-v3/testsuite/18_support/comparisons/categories/94565.cc
! 91cfd661b80b248accca1c6663eb3f12  libstdc++-v3/testsuite/18_support/comparisons/categories/partialord.cc
! 7c606300d3686b2c8a39e172fa05baad  libstdc++-v3/testsuite/18_support/comparisons/categories/strongord.cc
! a42c604843aa83aa622c8c775cbd43cc  libstdc++-v3/testsuite/18_support/comparisons/categories/weakord.cc
! b10b68893f089a766cb63d3051f0bf71  libstdc++-v3/testsuite/18_support/comparisons/common/1.cc
! 1dd5bbf02132c59bc604661326df06e9  libstdc++-v3/testsuite/18_support/comparisons/object/93479.cc
! 86e226a7113a6b0a29acf9a86b657ff4  libstdc++-v3/testsuite/18_support/comparisons/object/lwg3530.cc
! 4505f7e1ab983bcba9050d8ad46fed62  libstdc++-v3/testsuite/18_support/cxa_vec.cc
! 5cdd75861a32bd4ed5df43b1872ca6d4  libstdc++-v3/testsuite/18_support/destroying_delete.cc
! 6f3250008a90087fa8410fb32c865f33  libstdc++-v3/testsuite/18_support/exception/38732.cc
! 16d11b5a00099dc2d55f3284734931ff  libstdc++-v3/testsuite/18_support/exception/what.cc
! af4850a50ee3e9d2b26adc695f567ddf  libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc
! 36b5a0ff3ccb36afd9d98ca987b3b77a  libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc
! 97b0d110d1131f97d82c79edf153433a  libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc
! 169245776d64df42016c3097c27dd0f6  libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc
! f053b297ddce892d803382be6fbbc52e  libstdc++-v3/testsuite/18_support/exception_ptr/64241.cc
! e1a6f0f34f8d852103b03cb179ed4f1b  libstdc++-v3/testsuite/18_support/exception_ptr/current_exception.cc
! b5e0ca6b0ed66cb6668bfaf993035134  libstdc++-v3/testsuite/18_support/exception_ptr/lifespan.cc
! 353017452a231fc907f5c534fb782f3a  libstdc++-v3/testsuite/18_support/exception_ptr/make_exception_ptr.cc
! 33b67703a5f836a961535acca6178f51  libstdc++-v3/testsuite/18_support/exception_ptr/make_exception_ptr_2.cc
! b73ec0d4e52f089cbad09166b85a9811  libstdc++-v3/testsuite/18_support/exception_ptr/move.cc
! 6990462a60a06ea53ded219b9360041f  libstdc++-v3/testsuite/18_support/exception_ptr/requirements.cc
! 6f1c77bc6b369a5acfd7f1bcba1cb2df  libstdc++-v3/testsuite/18_support/exception_ptr/requirements_neg.cc
! 5cde747f06beeb2742622d7747ef904c  libstdc++-v3/testsuite/18_support/exception_ptr/rethrow_exception.cc
! b9e84101e7379b96cdc3efacfd34cd22  libstdc++-v3/testsuite/18_support/free_eh_pool.cc
! e2d31e9e6af06ae2b9ff07e355cd86e9  libstdc++-v3/testsuite/18_support/headers/cfloat/values.cc
! b8e58dc5fa2863c32091330548e58520  libstdc++-v3/testsuite/18_support/headers/cfloat/values_c++17.cc
! 137860d405aea934773d9b9f4b618bcc  libstdc++-v3/testsuite/18_support/headers/climits/values.cc
! a4e10b8216b3fb5f897f8319826f0f62  libstdc++-v3/testsuite/18_support/headers/csetjmp/functions_std.cc
! 5f521a69981adaacab6bb4d128f0c340  libstdc++-v3/testsuite/18_support/headers/csetjmp/macros.cc
! 40f31aabc1903af0ee88cbee650fd8a3  libstdc++-v3/testsuite/18_support/headers/csetjmp/types_std.cc
! a7fda762af2271b8e285706e301dc8ae  libstdc++-v3/testsuite/18_support/headers/csignal/functions_std.cc
! b49a0dcf1f2094bcd95d637f554a8e1f  libstdc++-v3/testsuite/18_support/headers/csignal/macros.cc
! 7ec56b2df05920170f9afc57e76a4e9b  libstdc++-v3/testsuite/18_support/headers/csignal/types_std.cc
! 90128c7aae7010fdf2fa09d3198c5b78  libstdc++-v3/testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc
! 67104dbed5fb9bb976539a9d4fea5391  libstdc++-v3/testsuite/18_support/headers/cstdarg/macros.cc
! f7e203c03244d3c0ca35184994edad7a  libstdc++-v3/testsuite/18_support/headers/cstdarg/types_std.cc
! e8762343e224714e3dbfea192a25aaa1  libstdc++-v3/testsuite/18_support/headers/cstdbool/macros.cc
! 71290fd028c6b08d9e758278fba959ed  libstdc++-v3/testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc
! 6bf7247f4372f764cc0dbb49247f99e2  libstdc++-v3/testsuite/18_support/headers/cstddef/macros.cc
! f15d44ead9a0539822690c60f8f3dc7c  libstdc++-v3/testsuite/18_support/headers/cstddef/types_std.cc
! f911cc209800dcc7086aacf0f5abdfdf  libstdc++-v3/testsuite/18_support/headers/cstdint/std_c++0x_neg.cc
! fc485129a14eb8d81eb8c896961fb12f  libstdc++-v3/testsuite/18_support/headers/cstdint/types_std_c++0x.cc
! 0343cdf57eea222d92ce25aaeab7fc62  libstdc++-v3/testsuite/18_support/headers/cstdlib/functions_std.cc
! 87f4937d917059895d6d65ba5d3cea4e  libstdc++-v3/testsuite/18_support/headers/cstdlib/macros.cc
! d03e95f261062999104f9973f644fb75  libstdc++-v3/testsuite/18_support/headers/ctime/functions_std.cc
! 286b09667bd9c503e0071a5e44b7fdf7  libstdc++-v3/testsuite/18_support/headers/ctime/macros.cc
! ed59f6039257dc8197d001a3b66ef277  libstdc++-v3/testsuite/18_support/headers/ctime/types_std.cc
! 8040d5154630673efcde9d5956f6b709  libstdc++-v3/testsuite/18_support/headers/exception/synopsis.cc
! 3ad1023391fcce616defee0194ecf3ec  libstdc++-v3/testsuite/18_support/headers/exception/types_std.cc
! 08a636e08049201590e40876ff4feea4  libstdc++-v3/testsuite/18_support/headers/limits/synopsis.cc
! ea5879799d043cfbc2277c532360701f  libstdc++-v3/testsuite/18_support/headers/new/synopsis.cc
! cc3aad8fb7975c266c60a261d139beec  libstdc++-v3/testsuite/18_support/headers/new/synopsis_cxx98.cc
! 3c11cfdffdb9e5f96f247eab97397f50  libstdc++-v3/testsuite/18_support/headers/new/types_std.cc
! f9f95f200c43606706193adadf7c2928  libstdc++-v3/testsuite/18_support/headers/typeinfo/synopsis.cc
! a9001cde18bccd5e01a8670115d5de41  libstdc++-v3/testsuite/18_support/headers/typeinfo/types_std.cc
! 15e57b66ced1ef37869d3679a7890fdf  libstdc++-v3/testsuite/18_support/headers/version/macros.cc
! 80afd08be65bddbb408278c29d9d0092  libstdc++-v3/testsuite/18_support/initializer_list/constexpr.cc
! 747644deee5980250a4d8f4106c0cadb  libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc
! d0519c8581620e3e29df1eb0aedbbdc5  libstdc++-v3/testsuite/18_support/initializer_list/requirements/constexpr_functions.cc
! d225ddc1d6425e9894e2e2fc6de0b853  libstdc++-v3/testsuite/18_support/initializer_list/requirements/explicit_instantiation.cc
! a6331e60fafa5a66d9a95e44d3cb5762  libstdc++-v3/testsuite/18_support/initializer_list/requirements/typedefs.cc
! 06018c61eb86fbd8acf99d5fe9b10ab2  libstdc++-v3/testsuite/18_support/launder/1.cc
! dba9213f0a51d5e8b4d7c5c54fcd1fd9  libstdc++-v3/testsuite/18_support/launder/nodiscard.cc
! 7f2ea791be2372233bbbf6a9a5182e91  libstdc++-v3/testsuite/18_support/launder/requirements.cc
! d6708f859ad83256ee9abe79d3c3079e  libstdc++-v3/testsuite/18_support/launder/requirements_neg.cc
! 8deaf1aedf7e05fd42681372f5dd582b  libstdc++-v3/testsuite/18_support/max_align_t/requirements/1.cc
! cb7bef689cc9326fe98f9fddc8a0a753  libstdc++-v3/testsuite/18_support/max_align_t/requirements/2.cc
! d3fbb67b2236acce43605799590640cd  libstdc++-v3/testsuite/18_support/nested_exception/51438.cc
! 2a26604f965d2cbe752a95858ffbe105  libstdc++-v3/testsuite/18_support/nested_exception/62154.cc
! b347b135ff6a65ab811c8b1a8dd8e5c3  libstdc++-v3/testsuite/18_support/nested_exception/68139.cc
! e729da368a200445d562977bb1d4cd59  libstdc++-v3/testsuite/18_support/nested_exception/79114.cc
! 511b34be209dedfb2c4ec213bb743f20  libstdc++-v3/testsuite/18_support/nested_exception/cons.cc
! 0577546047531712f33f5785cdaf6d2a  libstdc++-v3/testsuite/18_support/nested_exception/nested_ptr.cc
! 2f4b66cb8da991db67399c8b059232b3  libstdc++-v3/testsuite/18_support/nested_exception/rethrow_if_nested.cc
! bbbfc677a1fdcdb8642b0f76aa8bf621  libstdc++-v3/testsuite/18_support/nested_exception/rethrow_nested.cc
! f5d90119fb1cb5db30268d9772c1a919  libstdc++-v3/testsuite/18_support/nested_exception/throw_with_nested.cc
! abf409c81ae671a594ac4cf0a56046dc  libstdc++-v3/testsuite/18_support/new_aligned.cc
! 4522c879d713e0f817a810cfe801f114  libstdc++-v3/testsuite/18_support/new_delete_placement.cc
! 7f93cb1b2d212d6537a17b7a838d5103  libstdc++-v3/testsuite/18_support/new_handler.cc
! f2970f0f9343851069576cb95e28a4cc  libstdc++-v3/testsuite/18_support/new_nothrow.cc
! 5cf5dcd437648ba0ffec5462506e92f1  libstdc++-v3/testsuite/18_support/numeric_limits/29989.cc
! abef86c7232185409249500ea323773a  libstdc++-v3/testsuite/18_support/numeric_limits/40856.cc
! 6cc1f6cb9504f4e9f52458b28f438aae  libstdc++-v3/testsuite/18_support/numeric_limits/char16_32_t.cc
! 7403431ce1f79fc78a543ef0e5b185bb  libstdc++-v3/testsuite/18_support/numeric_limits/char8_t.cc
! c9180a84a9cd2cf704da413ee081b7fb  libstdc++-v3/testsuite/18_support/numeric_limits/cons/default.cc
! 85e6e48af7c08e9ffb0b7ae9b0e4ac0e  libstdc++-v3/testsuite/18_support/numeric_limits/cons/default_c++0x.cc
! 32350428311a6ecfe8ca6f0c84afa20b  libstdc++-v3/testsuite/18_support/numeric_limits/denorm_min.cc
! ad507228914ca1a6132e381c670846ef  libstdc++-v3/testsuite/18_support/numeric_limits/digits10.cc
! 77a626992711ab1ef0c4c3214baaf285  libstdc++-v3/testsuite/18_support/numeric_limits/dr559.cc
! 5f0201ac72462194f060639a781174a2  libstdc++-v3/testsuite/18_support/numeric_limits/epsilon.cc
! 7a2795d9a67b4c9e54bb021822709cbb  libstdc++-v3/testsuite/18_support/numeric_limits/infinity.cc
! c4a7e4b3187b8e56f133b8ce3006eaaa  libstdc++-v3/testsuite/18_support/numeric_limits/is_iec559.cc
! deee65878b9e3cf529167436b40d5385  libstdc++-v3/testsuite/18_support/numeric_limits/is_signed.cc
! ce7982d7741c922ca2c747157b63acb8  libstdc++-v3/testsuite/18_support/numeric_limits/lowest.cc
! 2281311a2e612f693209189aa998c60a  libstdc++-v3/testsuite/18_support/numeric_limits/max_digits10.cc
! afaa5e4e61410f8220b04577a19ec0b4  libstdc++-v3/testsuite/18_support/numeric_limits/min_max.cc
! de7c9181a9d940179f552929948bf90b  libstdc++-v3/testsuite/18_support/numeric_limits/primary.cc
! f4dbb3a85289d722ed1a18225cc2e320  libstdc++-v3/testsuite/18_support/numeric_limits/quiet_NaN.cc
! 61b28ef6c710ba6df774a89a49c47c38  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc
! 99557e2122cab1b0f3e2048ccc31befb  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc
! c4261b8304bee059dce34230d1e4e828  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/explicit_instantiation/1.cc
! 74cf4958542fdee1b0241db35e266870  libstdc++-v3/testsuite/18_support/numeric_limits/specialization_default_values.cc
! a5a973152e8ff93c4d5188cfc98a7501  libstdc++-v3/testsuite/18_support/numeric_limits/traps.cc
! e4829dc9966bc469a554a85bcef5083a  libstdc++-v3/testsuite/18_support/pthread_guard.cc
! 18cc0d952d1a532e6ad0ce90a29a536b  libstdc++-v3/testsuite/18_support/quick_exit/quick_exit.cc
! e2a05dd01b04a46534b3d116b537db62  libstdc++-v3/testsuite/18_support/set_terminate.cc
! e43627eee0a42cd4cf6938c4e3add25e  libstdc++-v3/testsuite/18_support/set_unexpected.cc
! 02dcd9ecad0c194700f144d3c58367c5  libstdc++-v3/testsuite/18_support/terminate_handler.cc
! 915948fd0500d168456c1ed8c149f764  libstdc++-v3/testsuite/18_support/type_info/52562.cc
! 8525ea67cb13d5bafa0349a6e6c691f0  libstdc++-v3/testsuite/18_support/type_info/fundamental.cc
! c8b98692b1d8338dc6989c877063436d  libstdc++-v3/testsuite/18_support/type_info/hash_code.cc
! 14a087da6e4839662195d18a83851ebb  libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc
! 5f8120eb294c62379a8c649236297579  libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc
! 406f1d6ceaa144480a51b7f4c4e80796  libstdc++-v3/testsuite/18_support/unexpected_handler.cc
! 90841085f4ccce1ff739ad14bf7f9a3a  libstdc++-v3/testsuite/19_diagnostics/error_category/cons/copy_neg.cc
! ccd7ef4024642e9a79db00c9f587b205  libstdc++-v3/testsuite/19_diagnostics/error_category/cons/default.cc
! 49ee175042a485bb4be55bc506cb6e44  libstdc++-v3/testsuite/19_diagnostics/error_category/generic_category.cc
! 89de01e340146b8a3aaf3df09e3e4ccb  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/equal.cc
! f7c0422f2d05d8b22661433794245bee  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/less.cc
! bc25d5d8ace792b27e90708c76f17c77  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/not_equal.cc
! 6237ba52e1f58cfedb615491127b1a4b  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/three_way.cc
! 7237f78fafa5542a1ddfbdf02e8447ca  libstdc++-v3/testsuite/19_diagnostics/error_category/system_category.cc
! 772fa8bbe7fa8b9e45223ba5bec26c21  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/1.cc
! b5dcb01adbf896d42a8ffebb3e4b1331  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/39882.cc
! 63b3269de711f8f86cc6798ebb4a45cd  libstdc++-v3/testsuite/19_diagnostics/error_code/hash.cc
! 35b7feee558d6cc2eddb4222523131d4  libstdc++-v3/testsuite/19_diagnostics/error_code/is_error_code_v.cc
! c5e166d58b08276fa1185baf77d76469  libstdc++-v3/testsuite/19_diagnostics/error_code/modifiers/39882.cc
! 8f1eb4946c6b80e86053e0fe93d60055  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool.cc
! 89f4e5a0790c9b2d340f41a439b48bd8  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool_neg.cc
! 975ad51876601b26dcb84821d962a842  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/equal.cc
! 764d792bbaf8177e7f219aedf73dc1d4  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/less.cc
! ebd1878de6537630432cf94bb41fb065  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/not_equal.cc
! 46babc163178ce636aa29c232c05dbd2  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/three_way.cc
! 2c30a4a21dcccaffc991099ed6e14cc4  libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/1.cc
! 4cd53d235566265ea65fe2193fed7d0c  libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/39881.cc
! dce6ef0721ff28ce350be58ae6eacc58  libstdc++-v3/testsuite/19_diagnostics/error_condition/hash.cc
! b959884b137a6e5cd0a7f14a4e28bec3  libstdc++-v3/testsuite/19_diagnostics/error_condition/modifiers/39881.cc
! 7fcf84d94f248be5648ba90e179960ed  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/bool.cc
! 1e51b0891ccad10c97ecbefbd2628023  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/bool_neg.cc
! 38e4193ad74e18b85960eed3c6f61faf  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/equal.cc
! f6826772ec809213defe655d71a18929  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/less.cc
! 6b976cbd4872b10f5f412583a16d2ad1  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/not_equal.cc
! a4e968bd3963e0f03f518ad491b66b0a  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/three_way.cc
! fc5f037d37397eba0d02cd8507cf6952  libstdc++-v3/testsuite/19_diagnostics/headers/cassert/macros.cc
! db45fa48ee5011a45b343bc679e110bb  libstdc++-v3/testsuite/19_diagnostics/headers/cerrno/macros.cc
! 9fdf73a5e4e447086f88e8456a95a840  libstdc++-v3/testsuite/19_diagnostics/headers/stdexcept/synopsis.cc
! 91b69358d723ede628a4fa8dd7dfa702  libstdc++-v3/testsuite/19_diagnostics/headers/stdexcept/types_std.cc
! 75f073ae96165a6cf0a43ce2e756da53  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/34538.cc
! cb37a5c51478bdf9ffa55817e9c07e48  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/93151.cc
! 4d9aebfa05dd350b5db2e4a6accf4135  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc
! 1a2fe3c0f3d36b2101ec564850c9ee1c  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc
! 5781c504bb69370e4ffa859db13c103a  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc
! 54a1b456d532ba95df896ebdd9dce910  libstdc++-v3/testsuite/19_diagnostics/logic_error/cons_virtual_derivation.cc
! a245fe0afdab674d3ea42bf7035572e6  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-1.cc
! 1e00244d084392b8a69fea794a206904  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-2.cc
! 356266eeebbceef95968f93fb2c1e326  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-3.cc
! 16de017684cfb378be9e83cdc3899a2e  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-big.cc
! 739e804afef94ec6f5cba702f02e3db5  libstdc++-v3/testsuite/19_diagnostics/runtime_error/cons_virtual_derivation.cc
! 7743f9e2ca3c3b39442a67b3fa04fda5  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-1.cc
! 19abff4281147ff8b7f45dfd862bae35  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-2.cc
! 9c931dda971a79b8f568e5a2b1c45054  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-3.cc
! 229fab7e9fd0626d79a64fd67a1de90e  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-big.cc
! 7c06c30feebb497f1193ddbf57eb7cef  libstdc++-v3/testsuite/19_diagnostics/stdexcept.cc
! 31678ebcdb8b2f0a9ad48b31e8c403ad  libstdc++-v3/testsuite/19_diagnostics/system_error/39880.cc
! 2e05ec1a57ed3d67e1cfaaef09f74910  libstdc++-v3/testsuite/19_diagnostics/system_error/cons-1.cc
! d4161dab43af0c04428691e855f87dde  libstdc++-v3/testsuite/19_diagnostics/system_error/cons_virtual_derivation.cc
! 101b20c47957e22be48459275aef481c  libstdc++-v3/testsuite/19_diagnostics/system_error/what-1.cc
! dc883a78e66ed407cdf7969f85c18cdc  libstdc++-v3/testsuite/19_diagnostics/system_error/what-2.cc
! fff4f40509c48278d4b5234d8d4b4e3e  libstdc++-v3/testsuite/19_diagnostics/system_error/what-3.cc
! a418c167d61996cbd47f5fd998496770  libstdc++-v3/testsuite/19_diagnostics/system_error/what-4.cc
! 33a5d7adb996413defaaab11cc16ca40  libstdc++-v3/testsuite/19_diagnostics/system_error/what-big.cc
! 27cf63b808852692983ea8bfff9da524  libstdc++-v3/testsuite/20_util/add_const/requirements/alias_decl.cc
! 1eda1bfb42a4b8fa7a1911d2bdf831a2  libstdc++-v3/testsuite/20_util/add_const/requirements/explicit_instantiation.cc
! e74883dd5822d1bf261985b21ba48e84  libstdc++-v3/testsuite/20_util/add_const/value.cc
! 7ca257e508b30a3e6d3c9995ff784bfd  libstdc++-v3/testsuite/20_util/add_cv/requirements/alias_decl.cc
! 90c52035a7d6cc403c59212db1b0e0f6  libstdc++-v3/testsuite/20_util/add_cv/requirements/explicit_instantiation.cc
! 0861f5207101882045463908ac299a26  libstdc++-v3/testsuite/20_util/add_cv/value.cc
! 83e05994ea7ae599a92a05b658995e6c  libstdc++-v3/testsuite/20_util/add_lvalue_reference/requirements/alias_decl.cc
! e51c394f42b4771fd8d06486a4148833  libstdc++-v3/testsuite/20_util/add_lvalue_reference/requirements/explicit_instantiation.cc
! e31937ac8fa21c27356c113efe82e164  libstdc++-v3/testsuite/20_util/add_lvalue_reference/value.cc
! 942d84c1597e98e8ca616e95c1d66072  libstdc++-v3/testsuite/20_util/add_pointer/requirements/alias_decl.cc
! 98130747e34814f3f516da7c27e85e29  libstdc++-v3/testsuite/20_util/add_pointer/requirements/explicit_instantiation.cc
! 6e305326693a754252a219695418c524  libstdc++-v3/testsuite/20_util/add_pointer/value.cc
! 0ce88b137dd8c87c0b9864856efff1b6  libstdc++-v3/testsuite/20_util/add_rvalue_reference/requirements/alias_decl.cc
! fb889afe1514a89fd52b44cd43fcd0c8  libstdc++-v3/testsuite/20_util/add_rvalue_reference/requirements/explicit_instantiation.cc
! bd3103c5f1c43f2318da927d048c2ae8  libstdc++-v3/testsuite/20_util/add_rvalue_reference/value.cc
! 924308518d2f6609336eaa9277cc3e08  libstdc++-v3/testsuite/20_util/add_volatile/requirements/alias_decl.cc
! 5d37bf1b67f42eba8bbb63dcc17ec130  libstdc++-v3/testsuite/20_util/add_volatile/requirements/explicit_instantiation.cc
! d4da0b142a39c728379ea633fc1b6348  libstdc++-v3/testsuite/20_util/add_volatile/value.cc
! 1153c9231590fba003d982b23327985b  libstdc++-v3/testsuite/20_util/addressof/1.cc
! 4264e9c14aaa560003a1669ecf0b819f  libstdc++-v3/testsuite/20_util/addressof/requirements/constexpr.cc
! 2622ee804b3243f9928c331f145a9877  libstdc++-v3/testsuite/20_util/addressof/requirements/explicit_instantiation.cc
! 7239664d8d1c15a870146f6decf4b4cc  libstdc++-v3/testsuite/20_util/align/1.cc
! 9853317a715766e08090891ccb21d8c4  libstdc++-v3/testsuite/20_util/align/2.cc
! 4556f56ec08512aebe3121c8ac3a2075  libstdc++-v3/testsuite/20_util/aligned_storage/requirements/alias_decl.cc
! cc4447e1b060eecc93540351db0e86f8  libstdc++-v3/testsuite/20_util/aligned_storage/requirements/explicit_instantiation.cc
! 4bb1e59f9f2f88b14846b657f64fd9ab  libstdc++-v3/testsuite/20_util/aligned_storage/value.cc
! d79030c7b3e3a37cc2d749353eb676fd  libstdc++-v3/testsuite/20_util/aligned_union/1.cc
! cfd8fe713ad4dff82c062bdfb0673f68  libstdc++-v3/testsuite/20_util/aligned_union/requirements/alias_decl.cc
! 1dd37ec86966e2c1ffca0cffc7a03bc5  libstdc++-v3/testsuite/20_util/alignment_of/requirements/explicit_instantiation.cc
! 4a86b1987317a7782dce497b8a51b959  libstdc++-v3/testsuite/20_util/alignment_of/requirements/typedefs.cc
! 23072c23a3b39de866e9d00b90d08d93  libstdc++-v3/testsuite/20_util/alignment_of/value.cc
! e79b89d33a124129d06a32cb4eb84056  libstdc++-v3/testsuite/20_util/allocator/1.cc
! a45d588ec554b58c1a0ff61f171e7d45  libstdc++-v3/testsuite/20_util/allocator/10378.cc
! a4986801367c402011c22dba317cac68  libstdc++-v3/testsuite/20_util/allocator/14176.cc
! 40ca3f07d48e604a18a516cf83f8162b  libstdc++-v3/testsuite/20_util/allocator/33807.cc
! 51bcb5771ea37a8c1d39d41da6a61e31  libstdc++-v3/testsuite/20_util/allocator/8230.cc
! 729de1ba488ec826dcbdbf35595bb617  libstdc++-v3/testsuite/20_util/allocator/89510.cc
! 3368655db90a67449395690b0c70b3bc  libstdc++-v3/testsuite/20_util/allocator/overaligned.cc
! caa162219e7b950e53cb567b120877b6  libstdc++-v3/testsuite/20_util/allocator/rebind_c++20.cc
! 99d2368878f796e1b3284756e1b17842  libstdc++-v3/testsuite/20_util/allocator/requirements/constexpr.cc
! 2f81ef575bb4fe24f526288c72dfb76d  libstdc++-v3/testsuite/20_util/allocator/requirements/explicit_instantiation/1.cc
! fb2ca28ba9f9d2f0ac0980807dd1e6dd  libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs.cc
! e79c3084f9ee0277e3f573c2f9515006  libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs_c++20.cc
! bcf39341f037ced8b49552a23d02561a  libstdc++-v3/testsuite/20_util/allocator/void.cc
! 2286082efef191324836731d498ba92d  libstdc++-v3/testsuite/20_util/allocator_traits/header-2.cc
! e9eda040789aad540dbf32107596d85d  libstdc++-v3/testsuite/20_util/allocator_traits/header.cc
! 8cfc4634911a9c068b844e512af79334  libstdc++-v3/testsuite/20_util/allocator_traits/members/92878_92947.cc
! b1b6d23d91573b154882032ee62cbf3a  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint.cc
! 714af011343edc3b106505a8a4115bd6  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc
! 37cfced82f0849ad0646ab9961b9a7ee  libstdc++-v3/testsuite/20_util/allocator_traits/members/construct.cc
! 687fe369b20e9a286d33f4e66392d996  libstdc++-v3/testsuite/20_util/allocator_traits/members/destroy.cc
! 1483d220b0573f129070030462c82810  libstdc++-v3/testsuite/20_util/allocator_traits/members/is_always_equal.cc
! 4f9e22c92e92023414392e56dc4c6c60  libstdc++-v3/testsuite/20_util/allocator_traits/members/max_size.cc
! 9ff600f500ecd021448a4e7bee102943  libstdc++-v3/testsuite/20_util/allocator_traits/members/pointers.cc
! 115483ef6c403e6e2a0be7ceca288c32  libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc
! 9f3c2263ddaa6b8f7ec0a8d63e4ed827  libstdc++-v3/testsuite/20_util/allocator_traits/members/select.cc
! 2d16da8da31aa4d29fbe7bbd2444865c  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc
! 66b0938877eeb82fa3706571fa76acda  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs.cc
! 63a3f3ba9d5697cc124b776b2e9f8ce2  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs2.cc
! 04e46d1fdc51173f35ffb0a91bfd4f46  libstdc++-v3/testsuite/20_util/any/assign/1.cc
! 7ea0fdd68cf42e40801117baabb2d4dc  libstdc++-v3/testsuite/20_util/any/assign/2.cc
! ec72c9d7d5d626cf7190ea50036978dd  libstdc++-v3/testsuite/20_util/any/assign/92878_92947.cc
! 0551da82f0b249b0cd79a3cfdd27c44a  libstdc++-v3/testsuite/20_util/any/assign/emplace.cc
! 7f21e2f757788bb23667efe831ebc444  libstdc++-v3/testsuite/20_util/any/assign/exception.cc
! db51723dd90388df304ad3a67ae1aad7  libstdc++-v3/testsuite/20_util/any/assign/self.cc
! bbbd4d2e9b5f0823bf51676792c96e35  libstdc++-v3/testsuite/20_util/any/cons/1.cc
! a33df4bf452704704b2839b56ff491be  libstdc++-v3/testsuite/20_util/any/cons/2.cc
! d6c4d82ae1acc5c41fbb1b02392acc91  libstdc++-v3/testsuite/20_util/any/cons/90415.cc
! 98760b39632ecc9ad91e48d7c8f0e10c  libstdc++-v3/testsuite/20_util/any/cons/92156.cc
! 7f8018ea0edc4420782f60c21f046bea  libstdc++-v3/testsuite/20_util/any/cons/92878_92947.cc
! 7bfd00d93d02744e4c5438203da21821  libstdc++-v3/testsuite/20_util/any/cons/aligned.cc
! 10c99c9cb4fd2a6f111aa50f0ac2126b  libstdc++-v3/testsuite/20_util/any/cons/explicit.cc
! e54575295d44748d15c7ed8abf75d14e  libstdc++-v3/testsuite/20_util/any/cons/in_place.cc
! 9a15c1d7b650091e3ff1d9681331e604  libstdc++-v3/testsuite/20_util/any/cons/nontrivial.cc
! c52a665a244ea2770d156577c1fa93f6  libstdc++-v3/testsuite/20_util/any/make_any.cc
! b4c75ea237d0de69e2ecb08b44ea43b7  libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc
! 04e3bc61b69e34f4ee3769f233f97888  libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc
! 1ad488f186bb7bf4981c8a3234c15b1a  libstdc++-v3/testsuite/20_util/any/misc/any_cast_no_rtti.cc
! 24a854601528adee7021f077777a9561  libstdc++-v3/testsuite/20_util/any/misc/swap.cc
! e94897dd9d6be238c2c2cdce3646a5b7  libstdc++-v3/testsuite/20_util/any/modifiers/1.cc
! ae0289cd0f44b901c7ec5451f88672bd  libstdc++-v3/testsuite/20_util/any/modifiers/83658.cc
! e816600008c482bba60fea89a8bc06c5  libstdc++-v3/testsuite/20_util/any/modifiers/92156.cc
! f4ddd115c4c800bf18acd5bdf13ff151  libstdc++-v3/testsuite/20_util/any/observers/type.cc
! c22732615b72070b19107c5d5f7172ba  libstdc++-v3/testsuite/20_util/any/requirements.cc
! 0676e969d7db4de6054c4a30fe794f90  libstdc++-v3/testsuite/20_util/any/typedefs.cc
! f07d7ff59df7b2beb922ee1557250beb  libstdc++-v3/testsuite/20_util/as_const/1.cc
! 3a39efa4b858748b55dc58fcb333900b  libstdc++-v3/testsuite/20_util/as_const/rvalue_neg.cc
! 65dea37781718f8d754a73a847578658  libstdc++-v3/testsuite/20_util/assume_aligned/1.cc
! 660129765f02fcde32b6f9633a34dbc0  libstdc++-v3/testsuite/20_util/assume_aligned/2_neg.cc
! a303a1c0b67cc5299ee684207ac1615c  libstdc++-v3/testsuite/20_util/assume_aligned/3.cc
! 30e301b4c8225d9c021177d2bf4124da  libstdc++-v3/testsuite/20_util/assume_aligned/97132.cc
! 9465d0a404cdb20901e13981924b89df  libstdc++-v3/testsuite/20_util/auto_ptr/1.cc
! fb6e9161c8acdd3516aa6fe0b4c35077  libstdc++-v3/testsuite/20_util/auto_ptr/2.cc
! 7ac95be9b8695e689f279665e9aabf8c  libstdc++-v3/testsuite/20_util/auto_ptr/3.cc
! fb2b1e161598fa472bc861b68598ab7c  libstdc++-v3/testsuite/20_util/auto_ptr/3946.cc
! 1f8d69bfcb988ef957ed03461e5f0406  libstdc++-v3/testsuite/20_util/auto_ptr/4.cc
! e9c9c229f67d9d8e069da1b9889efd64  libstdc++-v3/testsuite/20_util/auto_ptr/5.cc
! 88cce1b9f2ea86ab959aee707c6d7a32  libstdc++-v3/testsuite/20_util/auto_ptr/6.cc
! 7aec7176b37833ab52fe9560614c2dd1  libstdc++-v3/testsuite/20_util/auto_ptr/7.cc
! 116ae5c2b0fc756f299a54f0cfafdee0  libstdc++-v3/testsuite/20_util/auto_ptr/assign_neg.cc
! 9f4f2f10f1fa225169e0ba709fac7853  libstdc++-v3/testsuite/20_util/auto_ptr/requirements/explicit_instantiation/1.cc
! 389bbef89e47acc5d4e39e45a512dd26  libstdc++-v3/testsuite/20_util/bad_function_call/cons_virtual_derivation.cc
! bef63204931154a7587086fa448b712e  libstdc++-v3/testsuite/20_util/bad_function_call/what.cc
! cf97a81018359e1feac594038e43401e  libstdc++-v3/testsuite/20_util/bind/35569.cc
! 6d25527615dc1903df266a19343ca7dd  libstdc++-v3/testsuite/20_util/bind/38889.cc
! 6df30d9af98fcf327b5ac1f5122db195  libstdc++-v3/testsuite/20_util/bind/42593.cc
! 44e1cf913b8dd5b1cd734ed9d5a250c4  libstdc++-v3/testsuite/20_util/bind/45924.cc
! 332d9861306da5dd637e2ff2136921f9  libstdc++-v3/testsuite/20_util/bind/48698.cc
! d8d6421b15cec6d69e1eb7f02e7a674c  libstdc++-v3/testsuite/20_util/bind/49058_1.cc
! bb888242d52e5db18eaa8f085803c2a9  libstdc++-v3/testsuite/20_util/bind/49058_2.cc
! 31fa30d3fef6ca8e9a7f2ef6d73c2bd2  libstdc++-v3/testsuite/20_util/bind/57899.cc
! 96cfb642893d67a74aa8f432b615cb76  libstdc++-v3/testsuite/20_util/bind/60497.cc
! 46fee2bce11d21f99d49ab8e6f23def6  libstdc++-v3/testsuite/20_util/bind/68912.cc
! 4c9173e3b0377065096315defc222ea7  libstdc++-v3/testsuite/20_util/bind/79798.cc
! 41d3ce3991a0913a7ae35c871806d58d  libstdc++-v3/testsuite/20_util/bind/83427.cc
! 3da6cc547c4e6fb44d16de65800f810e  libstdc++-v3/testsuite/20_util/bind/91371.cc
! faa0b32da63f2515885a7bb729226bfb  libstdc++-v3/testsuite/20_util/bind/all_bound.cc
! 128235066c1f5cace302576a690f6774  libstdc++-v3/testsuite/20_util/bind/constexpr.cc
! 1788f8414c7305193844cf30a78ea8fd  libstdc++-v3/testsuite/20_util/bind/conv_result.cc
! bcb5a521ce0804be84796767d4346e3e  libstdc++-v3/testsuite/20_util/bind/cv_quals.cc
! b9e214d61e944f0fb73c3ae8e8da40f4  libstdc++-v3/testsuite/20_util/bind/cv_quals_2.cc
! 1d0c092978881f85dd1497ea6ac8b168  libstdc++-v3/testsuite/20_util/bind/cv_quals_3.cc
! 75c209f21607200898b12c16b27f36c0  libstdc++-v3/testsuite/20_util/bind/is_placeholder_v.cc
! 3d1ae1bf2b84c84ce7a7f085aefaf8f3  libstdc++-v3/testsuite/20_util/bind/move.cc
! 7112edac50be61827d12c7ecc399f9c6  libstdc++-v3/testsuite/20_util/bind/nested.cc
! 9bdb39bd07cc7db83d7dd4bda39decdf  libstdc++-v3/testsuite/20_util/bind/placeholders.cc
! 2f58437e3acdb18d387c14076bd15256  libstdc++-v3/testsuite/20_util/bind/ref.cc
! 4162b0d08864ed575ba875e4980f704f  libstdc++-v3/testsuite/20_util/bind/ref2.cc
! 14bf9cb219a235dfe3b2307764e3f455  libstdc++-v3/testsuite/20_util/bind/ref_neg.cc
! 90dd1835d801f9e51f64ee03d436e5e3  libstdc++-v3/testsuite/20_util/bind/refqual.cc
! ef5577b2c736617a885751f6fa935d72  libstdc++-v3/testsuite/20_util/bind/socket.cc
! 4ccb86c49fae643bcc046cf9f71e9000  libstdc++-v3/testsuite/20_util/bool_constant/requirements.cc
! 46b2a739be2dd1eaa1990f765d027afc  libstdc++-v3/testsuite/20_util/common_reference/requirements/alias_decl.cc
! bb7706cf339f658c3b85d827a420b990  libstdc++-v3/testsuite/20_util/common_reference/requirements/explicit_instantiation.cc
! 243e00f1598d2743bef44cdc7cc6a52a  libstdc++-v3/testsuite/20_util/common_reference/requirements/typedefs.cc
! f853cf233e44eb21b52696fc3673699c  libstdc++-v3/testsuite/20_util/common_type/requirements/alias_decl.cc
! 84d195f66f3c840f22147023cb599bd9  libstdc++-v3/testsuite/20_util/common_type/requirements/explicit_instantiation.cc
! 10b50d34b69f9e64e1917f79c9a4ce47  libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc
! b1bfda2e48b5e7b30b3f9dfc66fe92fc  libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc
! d7b5abee17b1fd31e15f68d16b0cf89e  libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-1.cc
! 3d0e61c749166cd44ff2116b6b6c030b  libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-2.cc
! 37a7f0eac9dbe92c1328f39d1da3b37a  libstdc++-v3/testsuite/20_util/conditional/requirements/alias_decl.cc
! 40060e99380544ab12982e151890052a  libstdc++-v3/testsuite/20_util/conditional/requirements/explicit_instantiation.cc
! 7f566d649aa0b33fbaa5242d513bc754  libstdc++-v3/testsuite/20_util/conditional/requirements/typedefs.cc
! bfc0a1ffc26589fe8cada0b62ab610d0  libstdc++-v3/testsuite/20_util/decay/requirements/alias_decl.cc
! affb99d8679549af04e65495d7cbc931  libstdc++-v3/testsuite/20_util/decay/requirements/explicit_instantiation.cc
! 77216b37866de933394a1c8e339ae8d4  libstdc++-v3/testsuite/20_util/decay/requirements/typedefs.cc
! b91b32d401fafb65b6722e0565920791  libstdc++-v3/testsuite/20_util/declval/requirements/1.cc
! 22980dfc93978681acf336f645ae62e5  libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
! a6c59b34decaefef7fc56a80e06579ac  libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc
! 00512ee478ad9a057c7ec4020cf5df98  libstdc++-v3/testsuite/20_util/default_delete/cons/constexpr.cc
! e6d4c467ab3f3ea797e7d13754f4a594  libstdc++-v3/testsuite/20_util/default_delete/void_neg.cc
! 735c2f154d3a0fc6f84caefca1da0156  libstdc++-v3/testsuite/20_util/duration/arithmetic/1.cc
! fe6b19ed1e00857146ddf031ae34c4e3  libstdc++-v3/testsuite/20_util/duration/arithmetic/2.cc
! e89851a2871c52b4a59dbc45f91f33df  libstdc++-v3/testsuite/20_util/duration/arithmetic/58850.cc
! adecc203c6f67d11c2b348d4e521b030  libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr.cc
! a1ae186297925b4773db7757e31259e5  libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr_c++17.cc
! fa52de8010c0fd7eaa09470c35b859f5  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr2020.cc
! 9e94444afb016676e4ce2ce9d0d4156c  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr3050.cc
! 830561c29416382e0d2276f9b6b00bae  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr934-1.cc
! f0176c870f135af32e82486a7c9e75fc  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr934-2.cc
! 9722e2f5e85ebbbcf4674435d7542be7  libstdc++-v3/testsuite/20_util/duration/comparison_operators/1.cc
! 3c59c4cc7eb3c0f43911aab5c3f94558  libstdc++-v3/testsuite/20_util/duration/comparison_operators/constexpr.cc
! 8cc88b3d5c09099ab46bc6012f3cfe3a  libstdc++-v3/testsuite/20_util/duration/comparison_operators/three_way.cc
! 1677c4d88e033b4a45e3bf1d004944b4  libstdc++-v3/testsuite/20_util/duration/cons/1.cc
! 1728e55e9ddc0e0c42fa91c88f6176ce  libstdc++-v3/testsuite/20_util/duration/cons/1_neg.cc
! 6072deae4946cc9c50856364aa955fe6  libstdc++-v3/testsuite/20_util/duration/cons/2.cc
! 607db4431e1589bdcab2b74695c5ee12  libstdc++-v3/testsuite/20_util/duration/cons/54025.cc
! 19d1733e3f79e3fafdcd5370daee7c79  libstdc++-v3/testsuite/20_util/duration/cons/constexpr.cc
! da74c9a76f05440fc315bda64ff7bd82  libstdc++-v3/testsuite/20_util/duration/cons/dr1177.cc
! dac2126d43fe4ab2b87c38a912f3d0aa  libstdc++-v3/testsuite/20_util/duration/cons/dr2094.cc
! ad72aa53f8bdfaad76b79e373dfd8042  libstdc++-v3/testsuite/20_util/duration/cons/dr3050.cc
! 04b7761a12a2facb287c692c0a25e67e  libstdc++-v3/testsuite/20_util/duration/cons/dr974_neg.cc
! 398f5ae49e2b1d55b5292b16d4973aa0  libstdc++-v3/testsuite/20_util/duration/literals/61166.cc
! 41a265a795c812fc78d0c39c940033e5  libstdc++-v3/testsuite/20_util/duration/literals/65499.cc
! 9e225c6a52f5a3d80fcdbcc8209fae1d  libstdc++-v3/testsuite/20_util/duration/literals/84671.cc
  f11b5a7d64db419bf2305c0f433c638b  libstdc++-v3/testsuite/20_util/duration/literals/ns_detail.cc
! fe1a069d2bfc922dc90ae218c5622ea6  libstdc++-v3/testsuite/20_util/duration/literals/range_neg.cc
! bd9aa4fa062e9e19cc60e6e5cf63b04a  libstdc++-v3/testsuite/20_util/duration/literals/types.cc
! c38ddf96299fa206f6e464d0a9606d83  libstdc++-v3/testsuite/20_util/duration/literals/values.cc
! 60f94d0858ba1ef767d73f7309f5925b  libstdc++-v3/testsuite/20_util/duration/requirements/constexpr_functions.cc
! a5dcb421282c268ef6a40b477aba3eee  libstdc++-v3/testsuite/20_util/duration/requirements/explicit_instantiation/explicit_instantiation.cc
! 8e6209738a6016494cf8882c240e3ae1  libstdc++-v3/testsuite/20_util/duration/requirements/noexcept.cc
! a2c2a78dbfff49495f2df4e38413cef4  libstdc++-v3/testsuite/20_util/duration/requirements/reduced_period.cc
! 401ccbd7066bf0aafae02b2f636d7ef8  libstdc++-v3/testsuite/20_util/duration/requirements/sfinae_friendly_1.cc
! a75b94b25cc765507d7b9eb4ab2fe917  libstdc++-v3/testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc
! 6d02e2b9820be0bcc9bd37cfef5403e3  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg1.cc
! 319f1cc27160c6562c66eed3d449f481  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg2.cc
! 09f4542111270bbf9cac6a89d3fc0b5d  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg3.cc
! da9451170a4430a198d89bb49c55af36  libstdc++-v3/testsuite/20_util/duration_cast/constexpr.cc
! af5dce2cb214a9ea1c6000c0c90ec2a2  libstdc++-v3/testsuite/20_util/duration_cast/rounding.cc
! 29b1f71925ff61b8c1e0cd3c2b289d3c  libstdc++-v3/testsuite/20_util/enable_if/requirements/alias_decl.cc
! 88bd6b0a4aba38de182bbdc14aae95c5  libstdc++-v3/testsuite/20_util/enable_if/requirements/explicit_instantiation.cc
! 90d8995a1c089221674e5de48debac75  libstdc++-v3/testsuite/20_util/enable_if/requirements/typedefs.cc
! 7a2d08c1676d9cd9d31e05e9dc3c1906  libstdc++-v3/testsuite/20_util/enable_if/requirements/typedefs_neg.cc
! ac9abee74f5ed31aa7d146edaafadb13  libstdc++-v3/testsuite/20_util/enable_shared_from_this/56383.cc
! fffafeeaf18f322d0a8b9a89672b473f  libstdc++-v3/testsuite/20_util/enable_shared_from_this/89303.cc
! 9016e3d422c769e45c004ad171d55071  libstdc++-v3/testsuite/20_util/enable_shared_from_this/cons/constexpr.cc
! b890884a632e10423285bfff33b90f61  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/assign.cc
! 499897b63507caec004ebc96f7495795  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/const.cc
! 1bae905d8974d89ce7ba8537cc295925  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc
! 8acf7d2342beb770617ab9c137ed293b  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/unique_ptr.cc
! 6cb79a1548716eebbec574d4ce5d73f6  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc
! 099425bf82b3602224af2700b4a4cd24  libstdc++-v3/testsuite/20_util/enable_shared_from_this/requirements/explicit_instantiation.cc
! 2748a542f1bbee65b3bca0d2cf007505  libstdc++-v3/testsuite/20_util/exchange/1.cc
! 16aa688366bda8ce70993a24850d76b6  libstdc++-v3/testsuite/20_util/exchange/constexpr.cc
! 0ad41eca349570bf47e18f5e23217e25  libstdc++-v3/testsuite/20_util/extent/requirements/explicit_instantiation.cc
! 4e574a9ace920f0b0d6a288f1fc445ac  libstdc++-v3/testsuite/20_util/extent/requirements/typedefs.cc
! ba621ca1698a3fbdc9e7182e2293e655  libstdc++-v3/testsuite/20_util/extent/value.cc
! 556ad72edc6d52a41e814db783a25277  libstdc++-v3/testsuite/20_util/forward/1.cc
! d7b9fec07e0327a260e496e80eae0625  libstdc++-v3/testsuite/20_util/forward/1_neg.cc
! 3801f736f0a43e6cefa9b1869e204d23  libstdc++-v3/testsuite/20_util/forward/a.cc
! 924c6688306ac96da5af39706dbb9e46  libstdc++-v3/testsuite/20_util/forward/b.cc
! 72b8cddb5b7ca4329f43e11b4eb4f7e0  libstdc++-v3/testsuite/20_util/forward/c_neg.cc
! 1062612a7e42655e89c8e08c9ecd3291  libstdc++-v3/testsuite/20_util/forward/d.cc
! 5f9a0241d2cd0d0a5662c0693f94529d  libstdc++-v3/testsuite/20_util/forward/e.cc
! 3e6d8a18a374937d450810abfac08b84  libstdc++-v3/testsuite/20_util/forward/f_neg.cc
! a847d7bf59b80fb7f6ee1b44680ae87f  libstdc++-v3/testsuite/20_util/forward/requirements/explicit_instantiation.cc
! 69cecf714fd791d7efdc890c471c0838  libstdc++-v3/testsuite/20_util/from_chars/1.cc
! 0b4124f907207c84a1e99bace0079d95  libstdc++-v3/testsuite/20_util/from_chars/1_c++20_neg.cc
! 5fc62381dffd100120f1517d02a10b59  libstdc++-v3/testsuite/20_util/from_chars/1_neg.cc
! 26ae2c32be616eacc364a5c7c72a7980  libstdc++-v3/testsuite/20_util/from_chars/2.cc
! 22402aea68aeaabd9a54e64f50a77161  libstdc++-v3/testsuite/20_util/from_chars/3.cc
! eca14c465350941ea6aabc8833bd8cda  libstdc++-v3/testsuite/20_util/from_chars/compare.cc
! 3b7efddb52461f79b6c265a9c09cb657  libstdc++-v3/testsuite/20_util/from_chars/requirements.cc
! d0115a8f8599b0626c6ddedbc38c67c8  libstdc++-v3/testsuite/20_util/function/1.cc
! 5b582b9856e77352328ebc9df4050403  libstdc++-v3/testsuite/20_util/function/10.cc
! 389002a2201cede2db7ea44063806bdd  libstdc++-v3/testsuite/20_util/function/2.cc
! d31b90bb4f09e38c5ceb0e1807f0dc43  libstdc++-v3/testsuite/20_util/function/3.cc
! 2c284c3b06430285d07263bdace802b5  libstdc++-v3/testsuite/20_util/function/4.cc
! cd0d9febec18e191fbfaa5cea119f166  libstdc++-v3/testsuite/20_util/function/43397.cc
! 9acb54b675a1934fc752be41ccd660a3  libstdc++-v3/testsuite/20_util/function/48541.cc
! cb05f197bf38aefcca92f6d66abca911  libstdc++-v3/testsuite/20_util/function/5.cc
! 89a5093b148f305ccc5c4b34cf39d10f  libstdc++-v3/testsuite/20_util/function/58569.cc
! 20a9d326722f98480959850e9cc3f826  libstdc++-v3/testsuite/20_util/function/6.cc
! bdfec78589b1f79c12fa27201611eba0  libstdc++-v3/testsuite/20_util/function/60594.cc
! 51931d4270e3a3fea0ef4e117147b348  libstdc++-v3/testsuite/20_util/function/63840.cc
! 5e9abd11afad6f08310da8d52c4b3b46  libstdc++-v3/testsuite/20_util/function/65760.cc
! c995a55971144e10b24d61e6ed11b595  libstdc++-v3/testsuite/20_util/function/68995.cc
! a4baa24a0cd85278e2d54ec4ce5e02c0  libstdc++-v3/testsuite/20_util/function/69222.cc
! 05f93c1e7a9c64e82893f59ce690d18b  libstdc++-v3/testsuite/20_util/function/7.cc
! b4397616a8a2094daff6a2a59afed06a  libstdc++-v3/testsuite/20_util/function/77322.cc
! dbc37bf23b9e8a90204e2333c448248c  libstdc++-v3/testsuite/20_util/function/8.cc
! c6aae1607a9a859d273697f8c6cebcf7  libstdc++-v3/testsuite/20_util/function/9.cc
! aea7aa3c56dfd5b0f8dd2c5ee08be7d8  libstdc++-v3/testsuite/20_util/function/91456.cc
! 91e05f97908155844dc583cdd2240ed5  libstdc++-v3/testsuite/20_util/function/assign/move.cc
! 96b4fe52cecbaa566c43b4964c5ded5e  libstdc++-v3/testsuite/20_util/function/assign/move_target.cc
! 704e4ffdafefad4f7ad5ac0f29203110  libstdc++-v3/testsuite/20_util/function/cmp/cmp_neg.cc
! 0b95ca4726ffca41904af5d1688dcb4a  libstdc++-v3/testsuite/20_util/function/cons/55320.cc
! f7e02c620e80756e8d2808ec31f75021  libstdc++-v3/testsuite/20_util/function/cons/57465.cc
! f3291ea4503b48d936aac669c0e5d4c8  libstdc++-v3/testsuite/20_util/function/cons/72820.cc
! 560bf8e11c8476b60bd3d40712e03af5  libstdc++-v3/testsuite/20_util/function/cons/addressof.cc
! 418be80be914f70fe01f0276f045346d  libstdc++-v3/testsuite/20_util/function/cons/callable.cc
! e6b4703621f25273ef3f91003fab2b60  libstdc++-v3/testsuite/20_util/function/cons/deduction.cc
! 5bb1783b3460a5835d8075bff8938774  libstdc++-v3/testsuite/20_util/function/cons/move.cc
! 9f4201e7a8821b3121b7cb820447e664  libstdc++-v3/testsuite/20_util/function/cons/move_target.cc
! 1d8eb19921acc947190e1efabdc25f75  libstdc++-v3/testsuite/20_util/function/cons/non_copyconstructible.cc
! f721889918e50f8aba4d0f64e5c79513  libstdc++-v3/testsuite/20_util/function/cons/refqual.cc
! a15ccf4731c038751c4f37cafd0053f1  libstdc++-v3/testsuite/20_util/function/invoke/forwarding.cc
! a4e9e8b885043350fec7f2409c965f6e  libstdc++-v3/testsuite/20_util/function/invoke/move_only.cc
! fee522f84c4a2b38b81de9cd6b32dc68  libstdc++-v3/testsuite/20_util/function/null_pointer_comparisons.cc
! 3ee46b773749c983a6e92d0b840e48ff  libstdc++-v3/testsuite/20_util/function/requirements/explicit_instantiation.cc
! 27c9a30f96c854be50e17d1c07ec2609  libstdc++-v3/testsuite/20_util/function_objects/83607.cc
! c8c6a0b2d8174192069241199e2e0147  libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc
! d8bcdbc5a2c184c167304b0f7b35a305  libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc
! b5c138b593e8161502e01a2c2e0eecbf  libstdc++-v3/testsuite/20_util/function_objects/bind_front/97101.cc
! 260444f63b4f07ae65f4436cbb2f34bd  libstdc++-v3/testsuite/20_util/function_objects/bind_front/constexpr.cc
! 4e933ed7f6eda3d00469e39f372bb400  libstdc++-v3/testsuite/20_util/function_objects/binders/1.cc
! 4d06ee1897d4e0683645457c6538d3eb  libstdc++-v3/testsuite/20_util/function_objects/binders/3113.cc
! d89e7019c755b251dade15697fef1636  libstdc++-v3/testsuite/20_util/function_objects/comparisons.cc
! 63d1298f681d026540b0569d247e229e  libstdc++-v3/testsuite/20_util/function_objects/comparisons_pointer.cc
! 1eba7c82491876afb0f865675de49e6e  libstdc++-v3/testsuite/20_util/function_objects/comparisons_void.cc
! 47e455c34cc9f3eb894af1f6d1a0025f  libstdc++-v3/testsuite/20_util/function_objects/constexpr.cc
! 611eb6c1edc1a5f912b4ab595c29b206  libstdc++-v3/testsuite/20_util/function_objects/constexpr_searcher.cc
! 46aa22d081d4612808748035bc77fe11  libstdc++-v3/testsuite/20_util/function_objects/dr660.cc
! fcf03032223ea682f862f68bddfdf7bc  libstdc++-v3/testsuite/20_util/function_objects/identity/1.cc
! 6a2aafc8ab08a888679eb130659530b6  libstdc++-v3/testsuite/20_util/function_objects/invoke/1.cc
! 36df3927750143a14df13e168991a36a  libstdc++-v3/testsuite/20_util/function_objects/invoke/2.cc
! 7d7ac5f95ccaa8c642c1a1d46432292c  libstdc++-v3/testsuite/20_util/function_objects/invoke/3.cc
! 0191b78472da94457e5f9f7ae0d09ad9  libstdc++-v3/testsuite/20_util/function_objects/invoke/59768.cc
! 9f5b1ee7042071ef3e028d4f827eb4da  libstdc++-v3/testsuite/20_util/function_objects/invoke/constexpr.cc
! b6002cc10210fb0c8a5012173c7f2130  libstdc++-v3/testsuite/20_util/function_objects/invoke/ref_ext.cc
! 34058b55b212a742d3c4a5b17d40228b  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/55463.cc
! 66f1bab24f4096914c94905f1ae5fd92  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/55908.cc
! 88884763d28fba591178355b1b3c3e52  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/68982.cc
! 337238eb37174acc8f4b9e709503e931  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/80478.cc
! 19386e08eb43803818cd70bb96893c8f  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/adl.cc
! 2a6a73c0933d4f4236bb381a9fb6768c  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/constexpr.cc
! 9e758b0d7731e142bf6c51d450090ceb  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/forward.cc
! bff1b0676ebe1929719ce218a2162afa  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/refqual.cc
! 64c6dad7b04b6d23f22d2587a4900f7c  libstdc++-v3/testsuite/20_util/function_objects/not_fn/1.cc
! 4491db8aae844896edcbf2671466bb2d  libstdc++-v3/testsuite/20_util/function_objects/not_fn/87538.cc
! 542f8d8ee049f9b9914f9cf1b3f00817  libstdc++-v3/testsuite/20_util/function_objects/not_fn/constexpr.cc
! 6a3f4b146ddc2e7b1fe5a5c4d10700ac  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/equal_to.cc
! feeb2964db94da842036939893843e97  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/greater.cc
! 9cc841305df3f72264b0c89bc5e388ba  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/greater_equal.cc
! 34c39faf9b2d295882989fd77a86cd9f  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/less.cc
! 2bbaad136281951853f88433165f6865  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/less_equal.cc
  36c7e25fd78fe269cdcacaa2a008ede5  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/lwg3530.cc
! 330c9c1b4ae0f015af4987f988f85dd5  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/not_equal_to.cc
! e0dd59e78e2ce9e5fe96c02540c7b7bd  libstdc++-v3/testsuite/20_util/function_objects/searchers.cc
! e801c39b4c43c7d6165296cf94519992  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc
! 41bb62393ea3fd23055082835b315e84  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc
! ee16e84953e732327b16519fa75579c7  libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc
! e93aea8f49c35532a61350fd8096eec9  libstdc++-v3/testsuite/20_util/has_virtual_destructor/requirements/explicit_instantiation.cc
! 4fb621916034bc16753bd7c80bdfc9cd  libstdc++-v3/testsuite/20_util/has_virtual_destructor/requirements/typedefs.cc
! 1d749e40e39599d9d0d129d7002ac933  libstdc++-v3/testsuite/20_util/has_virtual_destructor/value.cc
! da53d77fe722a3764e19d9b454c4ba2e  libstdc++-v3/testsuite/20_util/hash/52931.cc
! 331481a2e9ee74afcead8fe6c0f72fc1  libstdc++-v3/testsuite/20_util/hash/60970.cc
! 2d9169fa06fbf4923d58c6d489a29399  libstdc++-v3/testsuite/20_util/hash/84998.cc
! 3342d416adc7d08022c268e6f9110514  libstdc++-v3/testsuite/20_util/hash/89629.cc
! 152acda3a1a76bdc830e4d38dff31bcc  libstdc++-v3/testsuite/20_util/hash/chi2_q_bit_flip_set.cc
! 3a867904cce51f075b6c2937bbd38787  libstdc++-v3/testsuite/20_util/hash/chi2_q_bit_string_set.cc
! d8943a4332b1c684d9b30908677090c8  libstdc++-v3/testsuite/20_util/hash/chi2_q_document_words.cc
! 585ea7ee7bcde7a88c56a438bdf6eba8  libstdc++-v3/testsuite/20_util/hash/chi2_q_numeric_pattern_set.cc
! 02154bbd31dac0e0b49ad967daf6069f  libstdc++-v3/testsuite/20_util/hash/chi2_q_uniform_random.cc
! d6ebfb5b8d0b8bbf8833467a8b36f3a3  libstdc++-v3/testsuite/20_util/hash/chi2_quality.h
! b20b010d513ac74a96858e591c4454b7  libstdc++-v3/testsuite/20_util/hash/nullptr.cc
! df56aa26b3af04ff839e80a46a35aae7  libstdc++-v3/testsuite/20_util/hash/operators/size_t.cc
! 3b4f9ac9ef3c4b0d63263d46fa619a6c  libstdc++-v3/testsuite/20_util/hash/quality.cc
! 1fb99e680e47a25f73a5ef7abaa24ed9  libstdc++-v3/testsuite/20_util/hash/requirements/explicit_instantiation.cc
! a68694bf0a3303b3b03cedfb64f350de  libstdc++-v3/testsuite/20_util/headers/cstdlib/functions_std.cc
! 5b174ab238e6c00fed2bb465c554d478  libstdc++-v3/testsuite/20_util/headers/cstring/functions_std.cc
! 4ac2de43e2f69546c8217c2bc885d064  libstdc++-v3/testsuite/20_util/headers/cstring/macros.cc
! 1f7b2105906d0d0de75ccb0fac245be3  libstdc++-v3/testsuite/20_util/headers/cstring/types_std.cc
! 49efe5fa0bce9fad601253eb1467e557  libstdc++-v3/testsuite/20_util/headers/ctime/functions_std.cc
! 4f7d3fbf58589eb5cc7343c3d78112ae  libstdc++-v3/testsuite/20_util/headers/ctime/macros.cc
! f57943bfaeb5cd5fd76002ff5980bc9c  libstdc++-v3/testsuite/20_util/headers/ctime/types_std.cc
! b6ab03ee1943c3d7827892fa1098af7a  libstdc++-v3/testsuite/20_util/headers/functional/synopsis.cc
! 89604961e7393da1807bbdee8359687c  libstdc++-v3/testsuite/20_util/headers/functional/types_std_c++0x.cc
! 8dbb3359128fa78576f51d9bea0f16e1  libstdc++-v3/testsuite/20_util/headers/functional/using_namespace_std_placeholders.cc
! bd69522e6b7c808ed85b241e2110563a  libstdc++-v3/testsuite/20_util/headers/memory/synopsis.cc
! 147acdc85e4e420bdc7162ffc131be7a  libstdc++-v3/testsuite/20_util/headers/memory/types_std_c++0x.cc
! 099f3581a642ed737f203cbbbb1b2781  libstdc++-v3/testsuite/20_util/headers/type_traits/std_c++0x_neg.cc
! b54db1364b61d665a6a7539186bf63e3  libstdc++-v3/testsuite/20_util/headers/type_traits/types_std_c++0x.cc
! d4793a75565af9e4644f394927bd6d4c  libstdc++-v3/testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc
! e18d36a230428a7572b590bf54b7a9b6  libstdc++-v3/testsuite/20_util/headers/utility/synopsis.cc
! 19da316b5a0b37e9173bdbe38bb51bef  libstdc++-v3/testsuite/20_util/headers/utility/using_namespace_std_rel_ops.cc
! 4e697391cd5e7cb723388b01b12550ec  libstdc++-v3/testsuite/20_util/in_place/requirements.cc
! 0166c2a27004d65df156dd3c0622ac6c  libstdc++-v3/testsuite/20_util/integer_comparisons/1.cc
! 7e64fe4a6ed4a3c8dc6ae6d0494db4a6  libstdc++-v3/testsuite/20_util/integer_comparisons/2.cc
! 6e287affe93cfe4a39ef5f63086987cd  libstdc++-v3/testsuite/20_util/integer_comparisons/equal.cc
! e7861cd2108a9e32ea32e8fe41c5cea3  libstdc++-v3/testsuite/20_util/integer_comparisons/equal_neg.cc
! f46ed6bcbb862049b56bedbda856cd54  libstdc++-v3/testsuite/20_util/integer_comparisons/greater_equal.cc
! c20b3051693d1c412fb0db968908e9c2  libstdc++-v3/testsuite/20_util/integer_comparisons/greater_equal_neg.cc
! 3be557902355e2dfc15247896bf93b93  libstdc++-v3/testsuite/20_util/integer_comparisons/greater_neg.cc
! 3a587c2802fd4c9c7b6978610e73e744  libstdc++-v3/testsuite/20_util/integer_comparisons/in_range.cc
! 5da4e534ccc25cb273bb713180ae7195  libstdc++-v3/testsuite/20_util/integer_comparisons/in_range_neg.cc
! 725231a2359fc43fbbb0c8d16f2b6a11  libstdc++-v3/testsuite/20_util/integer_comparisons/less.cc
! f05ebd715af452ae8c128db819daa930  libstdc++-v3/testsuite/20_util/integer_comparisons/less_equal.cc
! f87b17d2b8beb7f7322d436e1862eed5  libstdc++-v3/testsuite/20_util/integer_comparisons/less_equal_neg.cc
! 1aabbbcba58ae7d1769a40ed90938499  libstdc++-v3/testsuite/20_util/integer_comparisons/less_neg.cc
! ce733ea684ee099c027b7ff8e9a04dcb  libstdc++-v3/testsuite/20_util/integer_comparisons/not_equal.cc
! e7861cd2108a9e32ea32e8fe41c5cea3  libstdc++-v3/testsuite/20_util/integer_comparisons/not_equal_neg.cc
! 5f02e44f467ecfae7c316d1b3fbb36b4  libstdc++-v3/testsuite/20_util/integer_sequence/intseq.cc
! 130ec6ec6810fb8127480dd1be98a303  libstdc++-v3/testsuite/20_util/integer_sequence/requirements/typedefs.cc
! 7dad099af6f3318f657376495c8a5e83  libstdc++-v3/testsuite/20_util/integral_constant/call_operator.cc
! c92abd00f68ed79714e6009a7605028a  libstdc++-v3/testsuite/20_util/integral_constant/operator_value_type.cc
! a80a23c7d18b17324349be593ac3487f  libstdc++-v3/testsuite/20_util/integral_constant/requirements/constexpr_data.cc
! 187f9a7589d1b7e5fa8cc5d363e9d195  libstdc++-v3/testsuite/20_util/integral_constant/requirements/explicit_instantiation.cc
! ae8bf19d13368e9493fd8a48fb96d10c  libstdc++-v3/testsuite/20_util/integral_constant/requirements/typedefs.cc
! 63b880cd2d4576b483fe30e4aef1eb58  libstdc++-v3/testsuite/20_util/integral_constant/static_definition.cc
! a1ec88de0792bd6f83c30bbbf405b1a1  libstdc++-v3/testsuite/20_util/integral_constant/true_false_type_typedefs.cc
! 0fc34a43446a2c8b72ddb6323d0eb6d9  libstdc++-v3/testsuite/20_util/integral_constant/true_false_value.cc
! d31991841e796cc71500a3b208d69bc0  libstdc++-v3/testsuite/20_util/is_abstract/incomplete_neg.cc
! 3fffa216580e47af0c783860bbc43372  libstdc++-v3/testsuite/20_util/is_abstract/requirements/explicit_instantiation.cc
! 66c7f38fa1da55ddcffbc3208499b7c5  libstdc++-v3/testsuite/20_util/is_abstract/requirements/typedefs.cc
! 84183df84c4af7366db1e095c9d66d12  libstdc++-v3/testsuite/20_util/is_abstract/value.cc
! 0752601eee792485cb5c7fc04e47984f  libstdc++-v3/testsuite/20_util/is_aggregate/incomplete_neg.cc
! 98918e72698e7055e19eec9a807aa59d  libstdc++-v3/testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc
! 254b11428bbe7a58573c5672cb5ee959  libstdc++-v3/testsuite/20_util/is_aggregate/requirements/typedefs.cc
! 95379bb95e0fa2dd5d1d8a8f808d9a85  libstdc++-v3/testsuite/20_util/is_aggregate/value.cc
! a8c73111fd874cf17113564abf6b3be0  libstdc++-v3/testsuite/20_util/is_arithmetic/requirements/explicit_instantiation.cc
! d80b71e0d46fc049341dccb067ce65ee  libstdc++-v3/testsuite/20_util/is_arithmetic/requirements/typedefs.cc
! f7cc96b409b50135fcfc3b11648738db  libstdc++-v3/testsuite/20_util/is_arithmetic/value.cc
! ada1ed0ece1ef986087added0e65124c  libstdc++-v3/testsuite/20_util/is_array/requirements/explicit_instantiation.cc
! 03c87e9390f3661d0a466cf26e2649c8  libstdc++-v3/testsuite/20_util/is_array/requirements/typedefs.cc
! 88dd4f49456cbf89dd378542b0c1d05b  libstdc++-v3/testsuite/20_util/is_array/value.cc
! 310670fc4db5518ece73611ed64f02af  libstdc++-v3/testsuite/20_util/is_assignable/requirements/explicit_instantiation.cc
! 1bcc450459018d3b18a44e66b27dd6b8  libstdc++-v3/testsuite/20_util/is_assignable/requirements/typedefs.cc
! 8501dd9b91f8a05466aa1ceca2ae1e57  libstdc++-v3/testsuite/20_util/is_assignable/value.cc
! ef94ec87946ed27fc9730c587af901ea  libstdc++-v3/testsuite/20_util/is_base_of/requirements/explicit_instantiation.cc
! c844a1a36955abf91e15ff419f5bcb28  libstdc++-v3/testsuite/20_util/is_base_of/requirements/typedefs.cc
! 49c813f8418c373530568e1c215572b3  libstdc++-v3/testsuite/20_util/is_base_of/value.cc
! 65381e53aca73da5d4012a2ada5b2d7c  libstdc++-v3/testsuite/20_util/is_bounded_array/requirements/explicit_instantiation.cc
! 1b86b1397fe966274b2ae1b2c16fb5de  libstdc++-v3/testsuite/20_util/is_bounded_array/requirements/typedefs.cc
! 667e7cb2413a1f0d24176beb46397cf8  libstdc++-v3/testsuite/20_util/is_bounded_array/value.cc
! 4f583443015294964bf53734b754e155  libstdc++-v3/testsuite/20_util/is_class/requirements/explicit_instantiation.cc
! 1a9806f2c067dc8a2f78941659cfd240  libstdc++-v3/testsuite/20_util/is_class/requirements/typedefs.cc
! fe769bb1decd54538592bf41f6834602  libstdc++-v3/testsuite/20_util/is_class/value.cc
! cfe5c8ac8a7660ba985517605d354f31  libstdc++-v3/testsuite/20_util/is_complete_or_unbounded/memoization.cc
! f645caec6dcd750956562d6ddb5ebc7c  libstdc++-v3/testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc
! 0ee8a9b4a86f2c98e41f56610da7109f  libstdc++-v3/testsuite/20_util/is_complete_or_unbounded/value.cc
! bcea66a75916fd48eb32e1020389d137  libstdc++-v3/testsuite/20_util/is_compound/requirements/explicit_instantiation.cc
! 9260bdccbd86c15d73285682f7b43dfc  libstdc++-v3/testsuite/20_util/is_compound/requirements/typedefs.cc
! aa809d409c519b37fd10e8f83a44970b  libstdc++-v3/testsuite/20_util/is_compound/value.cc
! 2b08cea0798e0f05cc820c0a4bd1d051  libstdc++-v3/testsuite/20_util/is_const/requirements/explicit_instantiation.cc
! e55172e92decbdcca4141246d883894d  libstdc++-v3/testsuite/20_util/is_const/requirements/typedefs.cc
! e8406ad46f5daace936b0b25b5ce03a9  libstdc++-v3/testsuite/20_util/is_const/value.cc
! d097697faeb1e0f1ed82416afdc26464  libstdc++-v3/testsuite/20_util/is_constant_evaluated/1.cc
! 1cafc546bb415f2ae9fdf616a64989ba  libstdc++-v3/testsuite/20_util/is_constant_evaluated/noexcept.cc
! b5bcce541590def31327121636c1b85e  libstdc++-v3/testsuite/20_util/is_constructible/51185.cc
  a5e184714ddd867798fa94c2ebe2c9fe  libstdc++-v3/testsuite/20_util/is_constructible/68430.cc
! 2a14a63718af15604557c5b62c052965  libstdc++-v3/testsuite/20_util/is_constructible/77395.cc
! 8efd88653a517f0242a148e7601d0da6  libstdc++-v3/testsuite/20_util/is_constructible/80812.cc
! d5d4434e749dcb5574170c1c0b10bc05  libstdc++-v3/testsuite/20_util/is_constructible/92878_92947.cc
! 40e19a2ddb04f1b49803b74c341e4dd3  libstdc++-v3/testsuite/20_util/is_constructible/requirements/explicit_instantiation.cc
! 1a45fff04ca575790afcee3dc7c570e8  libstdc++-v3/testsuite/20_util/is_constructible/requirements/typedefs.cc
! ba22a46d90a65cf6b3c7e6963b90b307  libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
! 7b6bd9fb74d142977463ef853a1146b2  libstdc++-v3/testsuite/20_util/is_constructible/value.cc
! ea0fbc2b0454ba0ad42d194886d23cc4  libstdc++-v3/testsuite/20_util/is_convertible/requirements/explicit_instantiation.cc
! c4e19b47464ca6f7e4f975b1e618ce03  libstdc++-v3/testsuite/20_util/is_convertible/requirements/typedefs.cc
! b700a30856aaa7f01a1e4224a716d8ee  libstdc++-v3/testsuite/20_util/is_convertible/value.cc
! 415f7870791885ca197ed2f80ecaa9f2  libstdc++-v3/testsuite/20_util/is_copy_assignable/requirements/explicit_instantiation.cc
! a7740eb2e6a90431873bdba7b3efedb7  libstdc++-v3/testsuite/20_util/is_copy_assignable/requirements/typedefs.cc
! 2147c3471c5bb1829ee3ec43eab903df  libstdc++-v3/testsuite/20_util/is_copy_assignable/value.cc
! c2a70c54ea96e4f9c7cd72f149f0eb84  libstdc++-v3/testsuite/20_util/is_copy_constructible/requirements/explicit_instantiation.cc
! 28b2b910ebe170d653164abd552ae433  libstdc++-v3/testsuite/20_util/is_copy_constructible/requirements/typedefs.cc
! 837ae7901ef8349f16fb1bbad24d7410  libstdc++-v3/testsuite/20_util/is_copy_constructible/value.cc
! 4956599598884051deeca16089f75c1e  libstdc++-v3/testsuite/20_util/is_default_constructible/requirements/explicit_instantiation.cc
! 433adf98f5eae845dc22241b2182ade4  libstdc++-v3/testsuite/20_util/is_default_constructible/requirements/typedefs.cc
! 637ea27250cfbd934494e8a66945ef58  libstdc++-v3/testsuite/20_util/is_default_constructible/value.cc
! 130166c60b6aa4a63ebb17b716c3a281  libstdc++-v3/testsuite/20_util/is_destructible/requirements/explicit_instantiation.cc
! b684dc978536a4ac3dbc0e41fa61d158  libstdc++-v3/testsuite/20_util/is_destructible/requirements/typedefs.cc
! f2c400e619407329b5e8fc1b71bd179c  libstdc++-v3/testsuite/20_util/is_destructible/value.cc
! d719a0e568610d36374e6509eefcc142  libstdc++-v3/testsuite/20_util/is_empty/incomplete_neg.cc
! 22077dcca6b694ff735a75b8a6cd3e98  libstdc++-v3/testsuite/20_util/is_empty/requirements/explicit_instantiation.cc
! 9359429eb0698f8cc4192dec2d198c26  libstdc++-v3/testsuite/20_util/is_empty/requirements/typedefs.cc
! d61747b29c8936e6ff90f6ec7d4efab2  libstdc++-v3/testsuite/20_util/is_empty/value.cc
! bcb682157fbd1cc200947af5845c8e38  libstdc++-v3/testsuite/20_util/is_enum/requirements/explicit_instantiation.cc
! 1e15ebb816a06183c34331f174d74b48  libstdc++-v3/testsuite/20_util/is_enum/requirements/typedefs.cc
! 6df1bda605a9719ec56c9a4d15e7930a  libstdc++-v3/testsuite/20_util/is_enum/value.cc
! ed99555d2eb5b94872a8d2c2134f12d7  libstdc++-v3/testsuite/20_util/is_final/incomplete_neg.cc
! eab193d23aea8bef35a441d1d7112ff4  libstdc++-v3/testsuite/20_util/is_final/requirements/explicit_instantiation.cc
! 64cdd56ae80f60b0d90bf6acc061453a  libstdc++-v3/testsuite/20_util/is_final/requirements/typedefs.cc
! d4d4502c062d76e3bd86b9cb31945af8  libstdc++-v3/testsuite/20_util/is_final/value.cc
! 01eaf601e563f712384dc1dead251025  libstdc++-v3/testsuite/20_util/is_floating_point/requirements/explicit_instantiation.cc
! 73599608cbdddfef9f800daef43026c7  libstdc++-v3/testsuite/20_util/is_floating_point/requirements/typedefs.cc
! a9d201804604e2468fcdc48ccee487b6  libstdc++-v3/testsuite/20_util/is_floating_point/value.cc
! c8d69dc2e1a459b1253a9d96024f51c5  libstdc++-v3/testsuite/20_util/is_function/24808.cc
! d83e8632d6af871f2899533c9d66917a  libstdc++-v3/testsuite/20_util/is_function/35637.cc
! c833a1b0b753b4f71670d7c5d1dc8213  libstdc++-v3/testsuite/20_util/is_function/91371.cc
! a09227b0ac7340fc778da005a1eb0e5d  libstdc++-v3/testsuite/20_util/is_function/requirements/explicit_instantiation.cc
! 2e18588c51050c126e7d78253f4f5969  libstdc++-v3/testsuite/20_util/is_function/requirements/typedefs.cc
! 108960fbd3282d9efd1874934d4ec9f7  libstdc++-v3/testsuite/20_util/is_function/value.cc
! d6db7d5c9df86628d74bdfbe12e35861  libstdc++-v3/testsuite/20_util/is_fundamental/requirements/explicit_instantiation.cc
! 091f484bb153b6730da59bc86b718561  libstdc++-v3/testsuite/20_util/is_fundamental/requirements/typedefs.cc
! 1ef911643e42fdd73b1f839fc7e31173  libstdc++-v3/testsuite/20_util/is_fundamental/value.cc
! a654b35b6c2584c36d574ec32b7535d4  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/requirements/explicit_instantiation.cc
! 9c8eea7f1a69fcb70dc802b86aa7c51d  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/requirements/typedefs.cc
! 0cf8b5b162215a848c48dd307d8b7a90  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/value.cc
! f1ba3a224ef6f1da68ebe06186e593c7  libstdc++-v3/testsuite/20_util/is_integral/requirements/explicit_instantiation.cc
! c182a4ad945894e8ec1702d3aaa8ef9b  libstdc++-v3/testsuite/20_util/is_integral/requirements/typedefs.cc
! 28750a9297cf45c3d760057eafc962a4  libstdc++-v3/testsuite/20_util/is_integral/value.cc
! fba1502c12608e8037f76620058c24d5  libstdc++-v3/testsuite/20_util/is_invocable/83395.cc
! 2955ec2e3dc4565777e81ff7e9196785  libstdc++-v3/testsuite/20_util/is_invocable/91456.cc
! 0df607de8159409d67a75872670e9c4d  libstdc++-v3/testsuite/20_util/is_invocable/requirements/explicit_instantiation.cc
! ce2a0d9233070b608e506252e9866317  libstdc++-v3/testsuite/20_util/is_invocable/requirements/explicit_instantiation_ext.cc
! fe18bb2b93b4da7e0f0cb1c0a731e8ca  libstdc++-v3/testsuite/20_util/is_invocable/requirements/typedefs.cc
! c1ccbd6fc7d113253bf4e5d6a9c6d2f9  libstdc++-v3/testsuite/20_util/is_invocable/requirements/typedefs_ext.cc
! fd94121b4acaac488bb32c94e6d61b55  libstdc++-v3/testsuite/20_util/is_invocable/value.cc
! 01446c329b8532f794113d7711425e9b  libstdc++-v3/testsuite/20_util/is_invocable/value_ext.cc
! 2d666f82562314e0befe00aa7557d43c  libstdc++-v3/testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc
! 5a41bba3b47cf9125218ca585ddf4656  libstdc++-v3/testsuite/20_util/is_literal_type/requirements/typedefs.cc
! ac3c990b1aa12360a1190d9df72b5b1e  libstdc++-v3/testsuite/20_util/is_literal_type/value.cc
! 645ac3400ef546ee50707e76a33d36df  libstdc++-v3/testsuite/20_util/is_lvalue_reference/requirements/explicit_instantiation.cc
! 0d83f04ca1a6f415d73c13ad72fee884  libstdc++-v3/testsuite/20_util/is_lvalue_reference/requirements/typedefs.cc
! 817ae850c0b5bf1ca37c65cd8ab4417b  libstdc++-v3/testsuite/20_util/is_lvalue_reference/value.cc
! 6ec492fa5d41b1f0bf81eba717301a2d  libstdc++-v3/testsuite/20_util/is_member_function_pointer/91371.cc
! 5308305c811312fe2198eaaffa843ace  libstdc++-v3/testsuite/20_util/is_member_function_pointer/requirements/explicit_instantiation.cc
! 2728be1b06ea01c1b21d9015195da279  libstdc++-v3/testsuite/20_util/is_member_function_pointer/requirements/typedefs.cc
! e9e74adb92d6d2fbe574b24d9dfea571  libstdc++-v3/testsuite/20_util/is_member_function_pointer/value.cc
! 8e3085eb5eb5981644d4f89d9511f24f  libstdc++-v3/testsuite/20_util/is_member_object_pointer/requirements/explicit_instantiation.cc
! 1e9158acc3cca193ea92cd83f4309eb9  libstdc++-v3/testsuite/20_util/is_member_object_pointer/requirements/typedefs.cc
! dade24f50d24699f27106bbb09f926f7  libstdc++-v3/testsuite/20_util/is_member_object_pointer/value.cc
! 073b04960c47453051dae2b58cc058c5  libstdc++-v3/testsuite/20_util/is_member_pointer/requirements/explicit_instantiation.cc
! 2c6b01bb9e4443e49f8c425efd06610a  libstdc++-v3/testsuite/20_util/is_member_pointer/requirements/typedefs.cc
! 3ee9ba0eb1351abc864fe27b1ae464f5  libstdc++-v3/testsuite/20_util/is_member_pointer/value.cc
! 4593164ccaec25cb99dd52087a8e5ea3  libstdc++-v3/testsuite/20_util/is_move_assignable/requirements/explicit_instantiation.cc
! d08dff5ebf390f29e2988f62984de68e  libstdc++-v3/testsuite/20_util/is_move_assignable/requirements/typedefs.cc
! 15c79dc43bb660d6f9a6dd1d21cdb818  libstdc++-v3/testsuite/20_util/is_move_assignable/value.cc
! 53df9d721b102f0e06d94e40ad620dec  libstdc++-v3/testsuite/20_util/is_move_constructible/incomplete_neg.cc
! 6e31475adb6555f93cc3cd687ee10087  libstdc++-v3/testsuite/20_util/is_move_constructible/requirements/explicit_instantiation.cc
! 9d624d1e5bb6b94d6c5e1821fb6353da  libstdc++-v3/testsuite/20_util/is_move_constructible/requirements/typedefs.cc
! ddd61a2dc7a1646f080f781e87282701  libstdc++-v3/testsuite/20_util/is_move_constructible/value.cc
! cb721d79c6149e87ba4b158ef2f0385e  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/requirements/explicit_instantiation.cc
! b5074cb5341c4faf1a3f01e5ad38f483  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/requirements/typedefs.cc
! 6343860c9dd81dc03f855262be483243  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/value.cc
! 8c881549c90fa6227f9773ea3f56c460  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/94003.cc
! 2329655117c92e57fe07b9c03c3b7226  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/requirements/explicit_instantiation.cc
! 5ae0eceea3123507f40c7463e338e4eb  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/requirements/typedefs.cc
! ce36a651034414a5136df058a87922f6  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/value.cc
! f18df6ee2342c75ef9af529caeb16ed9  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/value_c++20.cc
! 83ab51bf14b7091c9bc21404b8576f83  libstdc++-v3/testsuite/20_util/is_nothrow_convertible/requirements/explicit_instantiation.cc
! cfbef74b1262d44220cf3054e900f2f6  libstdc++-v3/testsuite/20_util/is_nothrow_convertible/requirements/typedefs.cc
! d584ee13f86d7cff35161843aa57c3e9  libstdc++-v3/testsuite/20_util/is_nothrow_convertible/value.cc
! 8302b150c92b1d3eaa2d47405be81101  libstdc++-v3/testsuite/20_util/is_nothrow_convertible/value_ext.cc
! b9e6b758063d6a94d1bfbe6c5e2fb434  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/requirements/explicit_instantiation.cc
! e7f53dd139a61198bfc05ea17ab35e9f  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/requirements/typedefs.cc
! d0683e442ba10075a6bb48f0547c7434  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/value.cc
! 1e6ed7cf04035f4b887bbd4497c04efe  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/requirements/explicit_instantiation.cc
! e9e75070a1b567ba153f5af05bd2446a  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/requirements/typedefs.cc
! ce58866b56b6b7c06f7be9f08b2f089b  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/value.cc
! ba56110b2d7183399c7a17d75b9c5054  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/requirements/explicit_instantiation.cc
! 3ba251b59fee7207c725359e27848e0d  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/requirements/typedefs.cc
! 210ab18196ed4e7fc60cd49a4488993e  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/value.cc
! 7131aa2c6bc87d7505749684cd7ca720  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/requirements/explicit_instantiation.cc
! 796a9c386f9e2fbed9f8832f4dd5179f  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/requirements/typedefs.cc
! a1b046ddd48bf08053ef3561d7cac9ae  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc
! de3e97bb31433e3859e829fd4989c057  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/83395.cc
! e27ef8c64a01907658a192bd29b96811  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation.cc
! 9c637e732401648d795e0c4a0141be26  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation_ext.cc
! 0bc93848561f832cb8a5523be87de733  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/typedefs.cc
! 58614868af6d543f5c438c0d95e5850b  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/typedefs_ext.cc
! f80a795fa8bef1aa756add0d9caaf542  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc
! afc0e60fbc651c8483ffabe2d4099fd7  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value_ext.cc
! 9d70fbc717bbc954df539cf1afd9d698  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/incomplete_neg.cc
! 61d89b9325f2e22bf06ab2eb9d234b6c  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/requirements/explicit_instantiation.cc
! 25af7e34f4e390fb277e9ab8fd2d367b  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/requirements/typedefs.cc
! fdfe12a5e5d9ed51ac98ab6f9e5ec191  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/value.cc
! 88d487fb5128687763cca7e79b12dba5  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/requirements/explicit_instantiation.cc
! e6ac2064cd3b7fd945716d2bd67eb66b  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/requirements/typedefs.cc
! efa9a75caf404c303b514d60cb3e0c24  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/value.cc
! d4215dc33f2560bcaadabcc29781462f  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc
! 1dc44aa4afafb851c14447faa8f22298  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation_ext.cc
! a9cb7f482591382b85e284eb774340f2  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc
! ec503f54a1d96ae47cdda62efbf4cf2b  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/typedefs_ext.cc
! bcde65605931c4a09c1aa44729b2fb0b  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.cc
! d7c0a9bf62c9392cf0effaa29efa1bd2  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.h
! 19f96e49852542f297d2e57bc47dcf94  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value_ext.cc
! be4ce59c1f162191a86d00f23f4a9c9b  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc
! 15fada0b0ef7f47d6da2b45852416d0c  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc
! 93e4266afd83c7ec2baa63a0ed55c4a0  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/value.cc
! dad13a2454e55c87c2602c818f1c6b5d  libstdc++-v3/testsuite/20_util/is_null_pointer/requirements/explicit_instantiation.cc
! 7a1cb8e749d8fd4e807aa0f66cc24df6  libstdc++-v3/testsuite/20_util/is_null_pointer/requirements/typedefs.cc
! 7add6acc78456b269dbaa0202bfe12fe  libstdc++-v3/testsuite/20_util/is_null_pointer/value.cc
! b9676170d354031fecdd612e7332443e  libstdc++-v3/testsuite/20_util/is_object/24808.cc
! 5d038d5751601b1eb16b1cc45c230641  libstdc++-v3/testsuite/20_util/is_object/91371.cc
! 43dfca2fce6e28b5f92d2ac88d838990  libstdc++-v3/testsuite/20_util/is_object/requirements/explicit_instantiation.cc
! 3ffde7984b6b74242d21675a6007dd2c  libstdc++-v3/testsuite/20_util/is_object/requirements/typedefs.cc
! 700c40649cf751a3385b556f0af934d7  libstdc++-v3/testsuite/20_util/is_object/value.cc
! 5bd9b6a697a97a1bfb415fb060367007  libstdc++-v3/testsuite/20_util/is_pod/deprecated-2a.cc
! df1fc58ff4b3a0561cdf702a83699553  libstdc++-v3/testsuite/20_util/is_pod/requirements/explicit_instantiation.cc
! 8c71e55a6205882694a8615bef97a020  libstdc++-v3/testsuite/20_util/is_pod/requirements/typedefs.cc
! 154d7acd44e3f9e68db85b6365944a56  libstdc++-v3/testsuite/20_util/is_pod/value.cc
! d2acb56da2901ae404b318d1274c826d  libstdc++-v3/testsuite/20_util/is_pointer/requirements/explicit_instantiation.cc
! 37066bbeddd2f8493ffe9ffdef61ec38  libstdc++-v3/testsuite/20_util/is_pointer/value.cc
! 115e2dbdc16c696372f9b82205196d32  libstdc++-v3/testsuite/20_util/is_polymorphic/incomplete_neg.cc
! 2d0b59bf715c3526c37447e366e3af81  libstdc++-v3/testsuite/20_util/is_polymorphic/requirements/explicit_instantiation.cc
! 941101689530c84877aa473a8c86c533  libstdc++-v3/testsuite/20_util/is_polymorphic/requirements/typedefs.cc
! 7d83d21de4f702091482efc0678ad66d  libstdc++-v3/testsuite/20_util/is_polymorphic/value.cc
! af7d407540331d384cf18591715dea43  libstdc++-v3/testsuite/20_util/is_reference/requirements/explicit_instantiation.cc
! b3575402153c3376de961a171089574b  libstdc++-v3/testsuite/20_util/is_reference/requirements/typedefs.cc
! f88c5cd20a7cfeb0e7cd518395ed261c  libstdc++-v3/testsuite/20_util/is_reference/value.cc
! b51346c7cbaa6a00925b1c3ccfe06a9a  libstdc++-v3/testsuite/20_util/is_rvalue_reference/requirements/explicit_instantiation.cc
! 9c9a677f3a5b5c4b6ca131fef235424a  libstdc++-v3/testsuite/20_util/is_rvalue_reference/requirements/typedefs.cc
! 10d314844da3d75cd9b13047ed8a14af  libstdc++-v3/testsuite/20_util/is_rvalue_reference/value.cc
! 47642e5126deea6b64e94e396081f2e6  libstdc++-v3/testsuite/20_util/is_same/requirements/explicit_instantiation.cc
! 874654eaf4266bc06f9413bf163b3226  libstdc++-v3/testsuite/20_util/is_same/requirements/typedefs.cc
! 2abf1466f38d5a6aa7daab485e4aabd9  libstdc++-v3/testsuite/20_util/is_same/value.cc
! 91b2daae4ee0d7552c1863a517c2cad9  libstdc++-v3/testsuite/20_util/is_scalar/requirements/explicit_instantiation.cc
! e6fcc4b1d75d553680c6061dac42d802  libstdc++-v3/testsuite/20_util/is_scalar/requirements/typedefs.cc
! a6ec72fbf1d4dabfb527640b6a1377ef  libstdc++-v3/testsuite/20_util/is_scalar/value.cc
! cd48b44240aae0d7c5b6625032c83eb6  libstdc++-v3/testsuite/20_util/is_signed/requirements/explicit_instantiation.cc
! 1baf2d6e319ad6dcfa323ea95115fab9  libstdc++-v3/testsuite/20_util/is_signed/requirements/typedefs.cc
! e59732a7249fbcdb1818d5c29134f9bb  libstdc++-v3/testsuite/20_util/is_signed/value.cc
! 9f6e353a0414ea42ce67ebcfbe2d4187  libstdc++-v3/testsuite/20_util/is_standard_layout/requiremenents/explicit_instantiation.cc
! 661cebae468aa80b0edac11de5e4e55a  libstdc++-v3/testsuite/20_util/is_standard_layout/requiremenents/typedefs.cc
! ba20280b7c523c4db7eeb9939983e19b  libstdc++-v3/testsuite/20_util/is_standard_layout/value.cc
! 4ba842b4b227075059bc295f41fcc6a7  libstdc++-v3/testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc
! 7dc7b5425a2f9b9a2eab42d4b8843d8a  libstdc++-v3/testsuite/20_util/is_swappable/requirements/explicit_instantiation_ext.cc
! 21fd84bf00a0adf50e2b8e0cc9b46cf8  libstdc++-v3/testsuite/20_util/is_swappable/requirements/typedefs.cc
! 95b955e853d31eeb23321f667a2f8547  libstdc++-v3/testsuite/20_util/is_swappable/requirements/typedefs_ext.cc
! 2d909573a94bcbd9841061b3400af897  libstdc++-v3/testsuite/20_util/is_swappable/value.cc
! 8b4c958319e57eea91dbeb085cc69d76  libstdc++-v3/testsuite/20_util/is_swappable/value.h
! f4fead3e98c45b80527947b303f2fb4f  libstdc++-v3/testsuite/20_util/is_swappable/value_ext.cc
! 99e1625aa1d9c52f40222b4662488f1b  libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc
! e7b9e90bd057330e5d13b598dda7485b  libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/typedefs.cc
! 069035fd0bf7dbc0e44ee9b75a0db31b  libstdc++-v3/testsuite/20_util/is_swappable_with/value.cc
! 4789f1469032b8be75a43b1329480a89  libstdc++-v3/testsuite/20_util/is_trivial/requirements/explicit_instantiation.cc
! c2983f7d5016a6a72f98771f7d71f810  libstdc++-v3/testsuite/20_util/is_trivial/requirements/typedefs.cc
! 64ee8560bb7c4fd7a1c4dfa78b5a2f9b  libstdc++-v3/testsuite/20_util/is_trivial/value.cc
! abb0f6c6ee8f7afb0bb86c36a371c312  libstdc++-v3/testsuite/20_util/is_trivially_assignable/requirements/explicit_instantiation.cc
! ad9a25f9baf8ea20f21d1d0351688707  libstdc++-v3/testsuite/20_util/is_trivially_assignable/requirements/typedefs.cc
! 2df3be83963d30c6b0107f5b75cbcf00  libstdc++-v3/testsuite/20_util/is_trivially_assignable/value.cc
! 9c25adc8f50809f5e87f1533e3ff3bec  libstdc++-v3/testsuite/20_util/is_trivially_constructible/requirements/explicit_instantiation.cc
! 00af344fd6661e296f717317a1ef990e  libstdc++-v3/testsuite/20_util/is_trivially_constructible/requirements/typedefs.cc
! 9107a72d373be405ae5163dead45ccae  libstdc++-v3/testsuite/20_util/is_trivially_constructible/value.cc
! 4525af0045189ad9f8d0b4946dffbfcb  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/requirements/explicit_instantiation.cc
! f42ac216fe572a1b1d137609d6529972  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/requirements/typedefs.cc
! ba1bd8b9012f84ff03730353cbac81f5  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/value.cc
! 77145acc0cc5e899cd9a99e765584830  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/requirements/explicit_instantiation.cc
! 1f681cd2e30d31c9a4c3b295554af64e  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/requirements/typedefs.cc
! 6dd4a66921c202ff4c689605c6b0102b  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/value.cc
! 168155572712a129d936df79c8203233  libstdc++-v3/testsuite/20_util/is_trivially_copyable/requirements/explicit_instantiation.cc
! 5e99a5b11dca3eb0d8b9972cc0a38412  libstdc++-v3/testsuite/20_util/is_trivially_copyable/requirements/typedefs.cc
! 49205b12f1658563bc6e5e133c5d6c22  libstdc++-v3/testsuite/20_util/is_trivially_copyable/value.cc
! 0f37696368145546427ef6bfa8f65c8d  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/requirements/explicit_instantiation.cc
! 76dbd392e9c25e073ee34b96b147e771  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/requirements/typedefs.cc
! 2020f345657b159f2f5994d081904143  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/value.cc
! 16633ab585a2a0f908eae4254bc627ea  libstdc++-v3/testsuite/20_util/is_trivially_destructible/requirements/explicit_instantiation.cc
! f67d9f279244709a7aafc2984626e6f1  libstdc++-v3/testsuite/20_util/is_trivially_destructible/requirements/typedefs.cc
! bddbbd307274336ec637e8bb910555c8  libstdc++-v3/testsuite/20_util/is_trivially_destructible/value.cc
! 7a0ab24fb921fbf5d5f412d35e80a411  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/requirements/explicit_instantiation.cc
! 1dbd47aedeb129bcd8a10193a67b4822  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/requirements/typedefs.cc
! ea1cc5313ba4238ed8240058fdfd6a0f  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/value.cc
! c01eb78851c312d6db586cf75aff2072  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/requirements/explicit_instantiation.cc
! 44d3d2e988c55046eec72478a27baaa8  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/requirements/typedefs.cc
! 7c4fc07eadacfd890e6c40e7ab0da1d9  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/value.cc
! b18f4cc21e01ea0034b026c55f2590cd  libstdc++-v3/testsuite/20_util/is_unbounded_array/requirements/explicit_instantiation.cc
! 1b86b1397fe966274b2ae1b2c16fb5de  libstdc++-v3/testsuite/20_util/is_unbounded_array/requirements/typedefs.cc
! fce454f24b58be28de2bb38cdce25b4a  libstdc++-v3/testsuite/20_util/is_unbounded_array/value.cc
! 251f2a08795c4ed37ab9ccbf9d5184fd  libstdc++-v3/testsuite/20_util/is_union/requirements/explicit_instantiation.cc
! 62b7974fac03eae949504ddd1ce34224  libstdc++-v3/testsuite/20_util/is_union/requirements/typedefs.cc
! e47b4b5280efb070148ee8b4400b2dfa  libstdc++-v3/testsuite/20_util/is_union/value.cc
! 60f16b23785c8b33bc4568ddd630869e  libstdc++-v3/testsuite/20_util/is_unsigned/requirements/explicit_instantiation.cc
! f88bc6831b2e481be7c796e1b266637f  libstdc++-v3/testsuite/20_util/is_unsigned/requirements/typedefs.cc
! 80d0fff61c6987da66f1fa43e37a163b  libstdc++-v3/testsuite/20_util/is_unsigned/value.cc
! e67d92c86024230379835d72af207ec6  libstdc++-v3/testsuite/20_util/is_void/requirements/explicit_instantiation.cc
! 8c3943389120eb0360ee7b0ac5f15760  libstdc++-v3/testsuite/20_util/is_void/requirements/typedefs.cc
! 7560e46c42a25914daab736c1214652f  libstdc++-v3/testsuite/20_util/is_void/value.cc
! 3da0e7d3c26981b4bb77e535785356f4  libstdc++-v3/testsuite/20_util/is_volatile/requirements/explicit_instantiation.cc
! e9d39104a4a54bff3767ede023ea8d36  libstdc++-v3/testsuite/20_util/is_volatile/requirements/typedefs.cc
! 7463981a3d4d3ab79d32a9654501a5b8  libstdc++-v3/testsuite/20_util/is_volatile/value.cc
! 29b1cb5f35683899b70fa619450fbf45  libstdc++-v3/testsuite/20_util/logical_traits/83134.cc
! da24c43c5c345c582223fe74d5f67641  libstdc++-v3/testsuite/20_util/logical_traits/requirements/explicit_instantiation.cc
! f6b6b06f916c3a62e7fb0b0f59d0e9c0  libstdc++-v3/testsuite/20_util/logical_traits/requirements/typedefs.cc
! e7505415077d28f925c4efae534b5fee  libstdc++-v3/testsuite/20_util/logical_traits/value.cc
! 6b87f4cf449dd0ae43f38faae6c71d5b  libstdc++-v3/testsuite/20_util/make_signed/requirements/alias_decl.cc
! c24de7b658bdfaaed506ba2836e97775  libstdc++-v3/testsuite/20_util/make_signed/requirements/explicit_instantiation.cc
! 2ce20a42947e4d4d54c1af07036ef8b8  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc
! 8cb32b7f30331d7ae033eef8b9813079  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
! b79710fc651e100d31f8600fb3dbbe86  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-3.cc
! 8be855490e5e9fe3d61f5c2ad532acac  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-4.cc
! dd269c5dd95e7295a3fa4ee15d1e3eb5  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
! 67a7e9593e7755806aa9cf34bf913005  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/alias_decl.cc
! 992499b9964ee1eed2f910a68331831d  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/explicit_instantiation.cc
! 1930c85ec3895b2aff175f64156ab5a1  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc
! 0e3fbbef6423e0b14b68b833a7a105b5  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
! 2dac85941eff04d95072ad32331a4d84  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-3.cc
! 67f9e883dd4827455bdcda24c6bdbd49  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
! 1d6ae75bee98339f431469ac637ac774  libstdc++-v3/testsuite/20_util/memory_resource/1.cc
! 707d8dcd7e2464648ea2ebe728248be9  libstdc++-v3/testsuite/20_util/memory_resource/2.cc
! 305eb86a05b5a52b3689ced79fcfb6da  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/1.cc
! 4829daa7e9cd22ef9a4ba54cf04d6084  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/93208.cc
! 32b8021f35b3fba796da557d64b97c6e  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/allocate.cc
! 2244fe323b84ad64b2d378c81552c3ee  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/deallocate.cc
! 1d143787a54cc55591224b534e9e67be  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/release.cc
! 89958827be4a47d10c3442fa2e1f201d  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc
! eaf0f72f8e74aaf4965033604656e47a  libstdc++-v3/testsuite/20_util/move/1.cc
! 6eeec03907193269ffffa229c431348c  libstdc++-v3/testsuite/20_util/move/requirements/explicit_instantiation.cc
! 68d6de9ebb64258b6c8e7ed581844930  libstdc++-v3/testsuite/20_util/move_if_noexcept/1.cc
! 37c33a0f9f741dda26017886316c5135  libstdc++-v3/testsuite/20_util/move_if_noexcept/constexpr.cc
! 66461dd482969aba7e6a1b93f43bfdf6  libstdc++-v3/testsuite/20_util/move_if_noexcept/requirements/explicit_instantiation.cc
! bc3c097c0044e4d458fbde5483bcd850  libstdc++-v3/testsuite/20_util/nonesuch/nonesuch.cc
! 2f39cbdf831d3dec2fbd34b2ff411301  libstdc++-v3/testsuite/20_util/optional/77288.cc
  5361a28b1321ad89bf07b0ba11faf27a  libstdc++-v3/testsuite/20_util/optional/84601.cc
! b4fe16f770f77abfd8cc440689c39193  libstdc++-v3/testsuite/20_util/optional/assignment/1.cc
! 8a2900c696ba13fce2d1f6dcb88db158  libstdc++-v3/testsuite/20_util/optional/assignment/2.cc
! 7ead99f9dddd8f0e86d1b00ae65b73dc  libstdc++-v3/testsuite/20_util/optional/assignment/3.cc
! 499b4151087e968c6999e7d220e37033  libstdc++-v3/testsuite/20_util/optional/assignment/4.cc
! 1a903508c5ca63f521fddd89b1938b4f  libstdc++-v3/testsuite/20_util/optional/assignment/5.cc
! 7939684f5b0c4ae0db36bc99dfa519db  libstdc++-v3/testsuite/20_util/optional/assignment/6.cc
! f974fd861e27e57991af38356d89f9a4  libstdc++-v3/testsuite/20_util/optional/assignment/7.cc
! 1a9098e2e4d584b538b587cbad3d8332  libstdc++-v3/testsuite/20_util/optional/assignment/8.cc
! 67c71156cfbea7d426a08621ea270650  libstdc++-v3/testsuite/20_util/optional/assignment/9.cc
! 514c56050a008974a23c8fb81926872b  libstdc++-v3/testsuite/20_util/optional/assignment/92878_92947.cc
! 37bcece2d5b35624bed6958f5eaf6c86  libstdc++-v3/testsuite/20_util/optional/bad_access.cc
! e5985b3df2eb6016f735808ba6215158  libstdc++-v3/testsuite/20_util/optional/cons/77727.cc
! e5c0f14d66405839c8e2f600972f43e8  libstdc++-v3/testsuite/20_util/optional/cons/85642.cc
! 2b0cde0d1d286bc70ab0eba8d86f89ab  libstdc++-v3/testsuite/20_util/optional/cons/92878_92947.cc
! 8253d9de4d06ee0501a47919e86a051d  libstdc++-v3/testsuite/20_util/optional/cons/copy.cc
! e63df13b254e468e6589134d2dbf2702  libstdc++-v3/testsuite/20_util/optional/cons/deduction.cc
! 6e5a36f717f1feec03bc2947a7f994f8  libstdc++-v3/testsuite/20_util/optional/cons/default.cc
! 6dc10ff3c4a302ad7993a720063c87c7  libstdc++-v3/testsuite/20_util/optional/cons/move.cc
! b821c8d2618929c78c115ee5904679fd  libstdc++-v3/testsuite/20_util/optional/cons/trivial.cc
! af8d6718931d1ce973d08ff971c80f93  libstdc++-v3/testsuite/20_util/optional/cons/value.cc
! 503cbea26750d6293a4e2f1002c2ae4d  libstdc++-v3/testsuite/20_util/optional/cons/value_neg.cc
! b199ab4561d28b8a518a5647bfc0bbd0  libstdc++-v3/testsuite/20_util/optional/constexpr/cons/default.cc
! 76515c063f0a675bd232acab3e4717ea  libstdc++-v3/testsuite/20_util/optional/constexpr/cons/value.cc
! b798d6ae5e8824ff454ee4090b619f07  libstdc++-v3/testsuite/20_util/optional/constexpr/in_place.cc
! fc3832ec32cc2651aa815b91b20dfd80  libstdc++-v3/testsuite/20_util/optional/constexpr/make_optional.cc
! 8072e4cdb18b7ed0f8c327e3728ecd96  libstdc++-v3/testsuite/20_util/optional/constexpr/nullopt.cc
! ef87d8e0fa833c94f6c127c8b31418a6  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/1.cc
! cf6b527d8fc6dd5d9ac16a3fa7139bfc  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/2.cc
! 062815a057c58d98c07f12f99e661a7c  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/3.cc
! 1170a9c938efe94a5399c7c40f942f29  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/4.cc
! 6846738adc4ed7196ca701ac137630a2  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/5.cc
! 7d8a499e862b2a8ae44abcbb466f914d  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/1.cc
! f45ab592bbb52f1cc3579262a99ffc14  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/2.cc
! 1f3f0711556ceabb3b7588aecd4b5829  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/3.cc
! 6575f77f0eab86954975e08af616c0e3  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/4.cc
! f238e44e8f9f3e7df4b482939ff28a10  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/5.cc
! 40dd12ab6007a823a6bb7b4645cb5bd4  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/6.cc
! 02b5437f84caf68895ed47b6e7e55520  libstdc++-v3/testsuite/20_util/optional/hash.cc
! 66b50331dfaf9aa357c3348edd0bec19  libstdc++-v3/testsuite/20_util/optional/in_place.cc
! 1bbaf2c7fbeb7728d315849ba95efa65  libstdc++-v3/testsuite/20_util/optional/make_optional.cc
! 962a4bfe03e3181495ffd05336789054  libstdc++-v3/testsuite/20_util/optional/nullopt.cc
! dc6b5fe9ae513dd9a9aec6cd54dcdb3c  libstdc++-v3/testsuite/20_util/optional/observers/1.cc
! b89baba4ba777ca8ba6c1470241f2537  libstdc++-v3/testsuite/20_util/optional/observers/2.cc
! 90dc403dbc154e8d7d26c92f769adea5  libstdc++-v3/testsuite/20_util/optional/observers/3.cc
! 24e3d7a235fc59e7260cd25ab2bd5333  libstdc++-v3/testsuite/20_util/optional/observers/4.cc
! d67c62af299d31f368eb847e49ba0178  libstdc++-v3/testsuite/20_util/optional/observers/5.cc
! da76ed4cf0b4be0b7f23ca3e2c6082d6  libstdc++-v3/testsuite/20_util/optional/observers/6.cc
! bc9bf75afe8df3f5a64848be91ef9d2b  libstdc++-v3/testsuite/20_util/optional/relops/1.cc
! 0451f97fac8325848c55ac5759fcbe99  libstdc++-v3/testsuite/20_util/optional/relops/2.cc
! 1e6e8d92614ec50ce194997bee540695  libstdc++-v3/testsuite/20_util/optional/relops/3.cc
! de258d1f0877cdd2f7f9fd25c48dbaa8  libstdc++-v3/testsuite/20_util/optional/relops/4.cc
! c076e2060c0c15a3024d2a3010ba6200  libstdc++-v3/testsuite/20_util/optional/relops/5.cc
! f1e057c8c2f5d65f63aad8e3bbb5d958  libstdc++-v3/testsuite/20_util/optional/relops/6.cc
! 465edab583fbc24d2fa008a963c8bdca  libstdc++-v3/testsuite/20_util/optional/relops/7.cc
! 1f4553e71f05a89fb2f5c9ec4ebd5ba1  libstdc++-v3/testsuite/20_util/optional/relops/96269.cc
! d3f7525f0f4ea547d2a6c7da8d9ba891  libstdc++-v3/testsuite/20_util/optional/relops/three_way.cc
! 9c8fa3730d54f1fda78052267b4c1307  libstdc++-v3/testsuite/20_util/optional/requirements.cc
! 7e7436a01a01b453111cc490dd95b452  libstdc++-v3/testsuite/20_util/optional/swap/1.cc
! cf6e653bde082ac86ab528416d9229e0  libstdc++-v3/testsuite/20_util/optional/swap/2.cc
! 2ca92024670c19340206f1a38e022483  libstdc++-v3/testsuite/20_util/optional/typedefs.cc
! b57ad93feba499f04f743336c00a7ebc  libstdc++-v3/testsuite/20_util/owner_less/cmp.cc
! 151914f79f19bac3678438e5870c90f1  libstdc++-v3/testsuite/20_util/owner_less/noexcept.cc
! 501d3c6fe33d0ceb81249d44eaa71602  libstdc++-v3/testsuite/20_util/owner_less/void.cc
! d73f58ec39ab56f40226d2d7e8fcb2ad  libstdc++-v3/testsuite/20_util/pair/1.cc
! fc10536285be114ae40d750fce6d9c46  libstdc++-v3/testsuite/20_util/pair/2.cc
! 87070ca82941937f3947d11bac61ace1  libstdc++-v3/testsuite/20_util/pair/3.cc
! 3bf6d05546ac67d7c5ea1e3100208819  libstdc++-v3/testsuite/20_util/pair/4.cc
! 37b5f8ba1e17ba2b1a6fa4b2a3bbe1fd  libstdc++-v3/testsuite/20_util/pair/40925.cc
! 80c60ef681cd20dfcdf5a4736ecd9c3b  libstdc++-v3/testsuite/20_util/pair/44487.cc
! 92beaf7f41ff9439dcc951e3ef9bbdff  libstdc++-v3/testsuite/20_util/pair/70437.cc
! 4b8fc722cac66e39b28d9c15035dc98b  libstdc++-v3/testsuite/20_util/pair/79141.cc
! 4ac1b82787391a757cb4ab8d6090aff9  libstdc++-v3/testsuite/20_util/pair/86751.cc
! df014fb3d60435d7b7536415d6ed4147  libstdc++-v3/testsuite/20_util/pair/87822.cc
! d36f17ddc5af3683e9f73f91a7260f8e  libstdc++-v3/testsuite/20_util/pair/astuple/astuple.cc
! 6ef4ddbe5a32b7eb9d71c46c64d8e78d  libstdc++-v3/testsuite/20_util/pair/astuple/astuple_cpp14.cc
! f48c07c44140150e937f03bb12848635  libstdc++-v3/testsuite/20_util/pair/astuple/constexpr_get.cc
! 92db3c7cd40898a1713a71660bbd32e1  libstdc++-v3/testsuite/20_util/pair/astuple/constexpr_get_by_type.cc
! 728049cccec5bf6658c5cbb4d0af4ec0  libstdc++-v3/testsuite/20_util/pair/astuple/get.cc
! c933c0e8dc73afd62ff2b2f667dd8227  libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type.cc
! 4c31e1c7f6940621c5f0f720507aa909  libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type_neg.cc
! cdf81bba5f64f558e34988e4e221c98a  libstdc++-v3/testsuite/20_util/pair/astuple/get_neg.cc
! 860d54257279821f7eb6af11ce821e7b  libstdc++-v3/testsuite/20_util/pair/comparison_operators/constexpr.cc
! 6d6f944f439f1b2e80e8642e0680ac9e  libstdc++-v3/testsuite/20_util/pair/comparison_operators/constexpr_c++20.cc
! c7d9408852f277d03600a90a81ed9a42  libstdc++-v3/testsuite/20_util/pair/cons/92878_92947.cc
! c4a7ba55923dc0e0feb336fcfe33a761  libstdc++-v3/testsuite/20_util/pair/cons/constexpr.cc
! 09b45369bb245107c745d03c30cbcf61  libstdc++-v3/testsuite/20_util/pair/cons/deduction.cc
! 23a52ce2c67e504a587fb26924f40bd5  libstdc++-v3/testsuite/20_util/pair/cons/explicit_construct.cc
! 464ea2020b5485c1f432ba1c4a51bcda  libstdc++-v3/testsuite/20_util/pair/cons/noexcept_move_construct.cc
! 05dd8bcaaef1baf7ae2e13feba650bf1  libstdc++-v3/testsuite/20_util/pair/constexpr_assign.cc
! b6b1c0faa843b84743e584cba065d80d  libstdc++-v3/testsuite/20_util/pair/constexpr_get.cc
! 49fd902c36dbdec3bef020430aac2e17  libstdc++-v3/testsuite/20_util/pair/constexpr_swap.cc
! 34804699c56f14236a0842f549a466da  libstdc++-v3/testsuite/20_util/pair/make_pair/constexpr.cc
! d83b72e33a3afc95acda8f6158425d7e  libstdc++-v3/testsuite/20_util/pair/moveable.cc
! 87d943eac2b9a16f8729fe9238b6be83  libstdc++-v3/testsuite/20_util/pair/noexcept_move_assign.cc
! 1f29c7c0c7d4db10261b6bf1ffcc8fa5  libstdc++-v3/testsuite/20_util/pair/noexcept_swap.cc
! a6f7409089171d3d53ad718720f2f3ff  libstdc++-v3/testsuite/20_util/pair/noncopyable.cc
! dda3adbc2109c7a04c43d9d459141796  libstdc++-v3/testsuite/20_util/pair/piecewise.cc
! 3a2a3366187afff3fd4f07910f85bba1  libstdc++-v3/testsuite/20_util/pair/piecewise2.cc
! d728f15527324a49fb5fd696c938887d  libstdc++-v3/testsuite/20_util/pair/ref_assign.cc
! 6b0bd7ff8b47b17f37816f2f34fb76b1  libstdc++-v3/testsuite/20_util/pair/requirements/dr2367.cc
! afb25b871c5ac32e24834ae6e04474b9  libstdc++-v3/testsuite/20_util/pair/requirements/dr801.cc
! 1cb1ef48a49202547d578162f79c397d  libstdc++-v3/testsuite/20_util/pair/requirements/explicit_instantiation/1.cc
! bcb7ccf6af44e55b079b391083c5f9b8  libstdc++-v3/testsuite/20_util/pair/swap.cc
! 94dad84e3439a1b6ab408bc6375686ff  libstdc++-v3/testsuite/20_util/pair/swap_cxx17.cc
! 4f415caa3b4e98e3fe3a06ec90abc176  libstdc++-v3/testsuite/20_util/pair/traits.cc
! 7fa297a7958359c656f4c583a21a8d83  libstdc++-v3/testsuite/20_util/pointer_safety/1.cc
! 700b5d71f0af915a8922e0f8451c80b6  libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to.cc
! 022a92969d0104d1c4bcd4b66c33c01e  libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to_constexpr.cc
! 0b7698ef51226955ee2e6f444018ad48  libstdc++-v3/testsuite/20_util/pointer_traits/rebind.cc
! 9e1166e1d0e5aaa9d20154b19e428813  libstdc++-v3/testsuite/20_util/pointer_traits/requirements/explicit_instantiation.cc
! 9a8bd68756f66d9559782d42a5f4115c  libstdc++-v3/testsuite/20_util/pointer_traits/requirements/typedefs.cc
! 92f9c4eb66b4056d7cd19d1d9c2309a8  libstdc++-v3/testsuite/20_util/polymorphic_allocator/1.cc
! af4c948c1482a9384b93102d5c0b1d1f  libstdc++-v3/testsuite/20_util/polymorphic_allocator/allocate_object.cc
! 30b7177100105382c6926ff52e46bb89  libstdc++-v3/testsuite/20_util/polymorphic_allocator/construct_c++2a.cc
! d85cedcd89242a184a5d2311d3160c47  libstdc++-v3/testsuite/20_util/polymorphic_allocator/construct_pair.cc
! b60765e152b4254c2da10d2cb04d4424  libstdc++-v3/testsuite/20_util/polymorphic_allocator/lwg3237.cc
! 9e1e73afef5f41073917a18cc8762573  libstdc++-v3/testsuite/20_util/polymorphic_allocator/resource.cc
! 1b851cd859625ac541394c67b1f26dad  libstdc++-v3/testsuite/20_util/polymorphic_allocator/select.cc
! 70aca84b5d8436a5f4b19912f38deb49  libstdc++-v3/testsuite/20_util/rank/requirements/explicit_instantiation.cc
! 0b8c9879cb000062edcafdcac4ad56b3  libstdc++-v3/testsuite/20_util/rank/requirements/typedefs.cc
! 1a17aefcda6c368a1b22a56de5637c22  libstdc++-v3/testsuite/20_util/rank/value.cc
! 4e2c2ced9d25ea18bf5dc889cfb35daf  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp1.cc
! d525f8b53529cc97b6a5d3a18af351f3  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp2.cc
! 9e0a87edf13ebfef6b7c513222cf8986  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp3.cc
! 9130ec872916594277fa70807bb5c2d0  libstdc++-v3/testsuite/20_util/ratio/cons/cons1.cc
! e19292752b88517e18cc91b68bf32288  libstdc++-v3/testsuite/20_util/ratio/cons/cons_overflow_neg.cc
! 95288a2d348c616eee65df43ca5881c4  libstdc++-v3/testsuite/20_util/ratio/operations/45866.cc
! 150cad72ab2beb28a4406e9a32ffb56e  libstdc++-v3/testsuite/20_util/ratio/operations/47913.cc
! 53c54955c377f13d5bad3e4a74b0ce4f  libstdc++-v3/testsuite/20_util/ratio/operations/53840.cc
! 1624490c59cbd731eb5c227b9b178abb  libstdc++-v3/testsuite/20_util/ratio/operations/ops1.cc
! f2a4d59cb1a9a1f2e19f6c3e045e5758  libstdc++-v3/testsuite/20_util/ratio/operations/ops2.cc
! c52dd225d62681d7a2c1bf3daaedae17  libstdc++-v3/testsuite/20_util/ratio/operations/ops3.cc
! 47d8f344f476c8ca2d58dc9921289890  libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc
! 07fd98d895a67935d4ef3a0f2272ba7e  libstdc++-v3/testsuite/20_util/ratio/requirements/constexpr_data.cc
! d0d93ff6944b43052d2e279f658836ed  libstdc++-v3/testsuite/20_util/ratio/requirements/ratio_equal_v.cc
! 061c56f2a47053805407e2dce7d24c23  libstdc++-v3/testsuite/20_util/raw_storage_iterator/base.cc
! 49636b836303733af3fec391dd5e9dd7  libstdc++-v3/testsuite/20_util/raw_storage_iterator/dr2127.cc
! 35a3e3c87c4fdb18b676ff381adc496b  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/base_classes.cc
! fb8ee3543acbe85a72f7cfbbdb54c1cd  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/explicit_instantiation/1.cc
! 73dd5dd79e68fbebc82057567f4889dd  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/typedefs.cc
! 0735bed3a8c665d6555c64281b333588  libstdc++-v3/testsuite/20_util/reference_wrapper/24803.cc
! f2f4b51a869adde5950919fc131a7487  libstdc++-v3/testsuite/20_util/reference_wrapper/41792.cc
! 9ec0796ffcf9ad623de247095f89c392  libstdc++-v3/testsuite/20_util/reference_wrapper/80504.cc
! 542ab2762ef8dce5341ff4d18876bf28  libstdc++-v3/testsuite/20_util/reference_wrapper/83427.cc
! 207ed91ffcd79aba0dd8be0a0e2df46c  libstdc++-v3/testsuite/20_util/reference_wrapper/constexpr.cc
! b3136a2f54326650da5bb3ddd4f09579  libstdc++-v3/testsuite/20_util/reference_wrapper/deduction.cc
! 97565b43638bbb9e5926e5ec3fd071e2  libstdc++-v3/testsuite/20_util/reference_wrapper/incomplete.cc
! 872aba50f2be6a2d605bcd40ab66c756  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-2.cc
! ea8a964d4061c164792e287c5322cf8c  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-3.cc
! 136daf18947c4327bb845e5091153139  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc
! e3019fa57d36a886df676c147fcf87b5  libstdc++-v3/testsuite/20_util/reference_wrapper/lwg2993.cc
! 0b3661878ddecbe323e583e699fc22b0  libstdc++-v3/testsuite/20_util/reference_wrapper/ref_neg.cc
! e037f808884b2fc7c680a0df7474b9fa  libstdc++-v3/testsuite/20_util/reference_wrapper/requirements.cc
! caeb8b2c26fa69a8f959c7958965934e  libstdc++-v3/testsuite/20_util/reference_wrapper/result_type.cc
! a24f87fb012603efc0acda9ef9d41ab4  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs-2.cc
! 411aaaf5443d11a3b77f6a1c7c89710e  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs-3.cc
! 67d7c677e3f918bac0790fd987ad1e11  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs.cc
! 8f85d5dbe1ef10519dd95dc5f65267df  libstdc++-v3/testsuite/20_util/rel_ops.cc
! ac86dbd28518c67e9429aae0968495f7  libstdc++-v3/testsuite/20_util/remove_all_extents/requirements/alias_decl.cc
! ce4c43799890277a066dc2ea85a0f623  libstdc++-v3/testsuite/20_util/remove_all_extents/requirements/explicit_instantiation.cc
! fe7a455a0d1efb0bf4954528fa1ee86d  libstdc++-v3/testsuite/20_util/remove_all_extents/value.cc
! 5630449e06f159b0359f9308b6edbaeb  libstdc++-v3/testsuite/20_util/remove_const/requirements/alias_decl.cc
! 352445c9f9f6611076dc88c1f94ba657  libstdc++-v3/testsuite/20_util/remove_const/requirements/explicit_instantiation.cc
! 16ff617c7b78e777ed161d0ab71c97fa  libstdc++-v3/testsuite/20_util/remove_const/value.cc
! 613eca124ee74083a62b54d73ed820fb  libstdc++-v3/testsuite/20_util/remove_cv/requirements/alias_decl.cc
! b0f1df79a56b8aa09a415c31ce2ec059  libstdc++-v3/testsuite/20_util/remove_cv/requirements/explicit_instantiation.cc
! 697922a1c2b43864d5e38f3c706455d1  libstdc++-v3/testsuite/20_util/remove_cv/value.cc
! eb5066e90450ce636ff9c6ac165460f5  libstdc++-v3/testsuite/20_util/remove_cvref/requirements/alias_decl.cc
! 856076a2e0b0ecb4c27fc0c6c7e1eae2  libstdc++-v3/testsuite/20_util/remove_cvref/requirements/explicit_instantiation.cc
! cc1231a45abbd1ca25a2a3abd4adadf6  libstdc++-v3/testsuite/20_util/remove_cvref/value.cc
! b130f22b8961c063a4b7a2ccf151ecc6  libstdc++-v3/testsuite/20_util/remove_cvref/value_ext.cc
! 9896deb243f2a56607e0647b5c02d75e  libstdc++-v3/testsuite/20_util/remove_extent/requirements/alias_decl.cc
! 7db68fb65a1051ecc20f2b0c362481df  libstdc++-v3/testsuite/20_util/remove_extent/requirements/explicit_instantiation.cc
! 70336efc95b1a3e25ddfb77b7092365a  libstdc++-v3/testsuite/20_util/remove_extent/value.cc
! 7f061e5516ec78f0f0fd31409e5f4ea6  libstdc++-v3/testsuite/20_util/remove_pointer/requirements/alias_decl.cc
! 2699cd6b3ffd3c0841ac0ba51644649c  libstdc++-v3/testsuite/20_util/remove_pointer/requirements/explicit_instantiation.cc
! 7b399a7f48ec713d4db1c6d9a687eaa6  libstdc++-v3/testsuite/20_util/remove_pointer/value.cc
! d5be1868bb650da34159480d17944ce4  libstdc++-v3/testsuite/20_util/remove_reference/requirements/alias_decl.cc
! add4536f351fdf875a77ef6f6d7d908e  libstdc++-v3/testsuite/20_util/remove_reference/requirements/explicit_instantiation.cc
! dc91b1014a98d3af3571827d79fd4d0a  libstdc++-v3/testsuite/20_util/remove_reference/value.cc
! 45c62c09a987879d2b0f432bb0c20c49  libstdc++-v3/testsuite/20_util/remove_volatile/requirements/alias_decl.cc
! 451ad7ab744ea44976c44a5b0cd1ddc1  libstdc++-v3/testsuite/20_util/remove_volatile/requirements/explicit_instantiation.cc
! dc97ba43ef26b0af144ab905c716f92c  libstdc++-v3/testsuite/20_util/remove_volatile/value.cc
! 5de661099c6657371396231b3c5a0dce  libstdc++-v3/testsuite/20_util/result_of/1.cc
! 7b10fbbd6e34dd5bee76d7a64758255b  libstdc++-v3/testsuite/20_util/result_of/2.cc
! ec79612af30d4118681cd24d521fcc4c  libstdc++-v3/testsuite/20_util/result_of/requirements/alias_decl.cc
! 1f18023aad96c237ba249d9957ec9f05  libstdc++-v3/testsuite/20_util/result_of/sfinae_friendly_1.cc
! f07ab1dffe53ab00f86f3026cf86818d  libstdc++-v3/testsuite/20_util/result_of/sfinae_friendly_2.cc
! 694ba23126474c18fc064b738675a2d6  libstdc++-v3/testsuite/20_util/scoped_allocator/1.cc
! a545c7c7a6b52d41a0c2234d630c6ac6  libstdc++-v3/testsuite/20_util/scoped_allocator/2.cc
! 8daf2d919b1ef09c3e9be2eb757822a0  libstdc++-v3/testsuite/20_util/scoped_allocator/3.cc
! 7e9f8edf716e9726b9acd264006fb719  libstdc++-v3/testsuite/20_util/scoped_allocator/65279.cc
! d57ac9a75489a1553c016ba94d28a328  libstdc++-v3/testsuite/20_util/scoped_allocator/69114.cc
! 22a2652214e57ccf79e5bc85157eb03b  libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc
! 291d8dcd9cf03f2ca3082a179dd700f3  libstdc++-v3/testsuite/20_util/scoped_allocator/construct_pair.cc
! 7e450dffd1553d318cb30d9b69e5747e  libstdc++-v3/testsuite/20_util/scoped_allocator/construct_pair_c++2a.cc
! 1b6d4012b69fb94779f5c6ec95a05c9c  libstdc++-v3/testsuite/20_util/scoped_allocator/dr2586.cc
! 4e545a41fe3e8386807c185021fadca6  libstdc++-v3/testsuite/20_util/scoped_allocator/outermost.cc
! e2c552281e7144bee80c13f82bdd93f1  libstdc++-v3/testsuite/20_util/scoped_allocator/propagation.cc
! 6d4373ae49654a970c0c3d27b13cbc51  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc
! a88cc206809638e0db5321018861e779  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/typedefs.cc
! 8d3e92373c7078c1d8e2c0aff5351301  libstdc++-v3/testsuite/20_util/shared_ptr/assign/assign.cc
! 39f96651adf810124d68fa4f76d5d842  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr.cc
! b3724d65acc2080e5d08c6eba3a94333  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc
! 2f50b2b24c7e5a22f04e96435282740e  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc
! 4170734874ec7a324bd1adfa1956fe5f  libstdc++-v3/testsuite/20_util/shared_ptr/assign/dr541.cc
! 9b434fbdc0ec53a7b56995868ca226fc  libstdc++-v3/testsuite/20_util/shared_ptr/assign/move.cc
! 4a9df300ef5a130f52629eda9342bdd6  libstdc++-v3/testsuite/20_util/shared_ptr/assign/sfinae.cc
! 968ee69672c89b62e7a5bc1d9eea3b8a  libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr.cc
! 403d5605cf85169943328ec8394c91c9  libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc
! 815dc82d3d7edd2fcee6c6fc4bcba44b  libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc
! 66d4199900a178ef8bcbd26e2c356592  libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc
! 3eb0928669e5d78670f32f430ec29eae  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/1.cc
! d6f3a9999b32665bbea6cbcbe23cec39  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc
! 0a51b11189a4757b716f9b08bd7bc5e0  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/3.cc
! 423a38084ba73ea45db8a3ab314fbd46  libstdc++-v3/testsuite/20_util/shared_ptr/casts/1.cc
! bf4202deb670331eca63f0cbf289a0c3  libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc
! 15daff70c282253178dc782735bce7ff  libstdc++-v3/testsuite/20_util/shared_ptr/casts/rval.cc
! b46aec2c9c4ea86cd18a0548973df4ef  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/42925.cc
! 02d6831c7058c4ae86bddd3d279abe79  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/86537.cc
! de369ce6a61b7120d1b3241fe2f583da  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc
! ca615dfc09f9cecbdc0e32269434301d  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc
! 61ff1a5964807383ed056e8fa452e623  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/dr1401.cc
! ac5a42242374fc273b603d83f02d3e04  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc
! 54b46d805fb627faa327142e759f3f39  libstdc++-v3/testsuite/20_util/shared_ptr/cons/39405.cc
! 06f37ae5d90d814666559d6d780755e4  libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
! ad85b483365a34aa49ac0b45238e3f8c  libstdc++-v3/testsuite/20_util/shared_ptr/cons/46910.cc
! ea5e6c9a2a810af6e93a482707bee5f0  libstdc++-v3/testsuite/20_util/shared_ptr/cons/51365.cc
! 6cbb3890c0a4b84e27d96b6c27128eb6  libstdc++-v3/testsuite/20_util/shared_ptr/cons/52924.cc
! 1508733a215d095cf433bae20aae3350  libstdc++-v3/testsuite/20_util/shared_ptr/cons/55123.cc
! 119541ff2bd0d1e817ada93bb3157735  libstdc++-v3/testsuite/20_util/shared_ptr/cons/58659.cc
! 5bcbacb255d550d13fc8c552d8972f07  libstdc++-v3/testsuite/20_util/shared_ptr/cons/58839.cc
! 008f35c5e7d34bdec6794989ca2bcd5a  libstdc++-v3/testsuite/20_util/shared_ptr/cons/61036.cc
! 2d2f6f0b14b5bc78dad956ec0874641c  libstdc++-v3/testsuite/20_util/shared_ptr/cons/79467.cc
! 0935239e4b893ef08d272376682dd773  libstdc++-v3/testsuite/20_util/shared_ptr/cons/80229.cc
! d722b5bb950e93266fc25c9ca338145e  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias-rval.cc
! 96d62a543be8878e9f6271fccecb96ae  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias.cc
! 846a4bbf2ce4c1be6509748d26052b41  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc.cc
! ebc779e862fbfc07200b786fe7ce9d8c  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc_min.cc
! ea6911f27767ecd1f5282e8470e78b2c  libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc
! ee39f9071c8becd18b4715e5b084ec8f  libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr.cc
! 9123e3ef5287a5345e3698f0b4ba99c4  libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc
! c2b763ad43aa9efa5e46e66bd487a74e  libstdc++-v3/testsuite/20_util/shared_ptr/cons/constexpr.cc
! 09a1421541ce314d50884f7392e2df39  libstdc++-v3/testsuite/20_util/shared_ptr/cons/copy.cc
! 2c977d02a79cd38d24bc7cf9bbab4a88  libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc
! a7771554c6ebc6b0992d4ed4f7b43e34  libstdc++-v3/testsuite/20_util/shared_ptr/cons/default.cc
! 4f1ed19b65176bb610bc821407f41194  libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg2802.cc
! ea992ddc70a48e7e94e6c7a7a6d32f7a  libstdc++-v3/testsuite/20_util/shared_ptr/cons/move.cc
! 81003090b3afeb2e7e1bc746de87ba16  libstdc++-v3/testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc
! 9d3d523a2c9c7be7f386cfcc565fe8b4  libstdc++-v3/testsuite/20_util/shared_ptr/cons/nullptr.cc
! 2b104f708008aa35c2a79dd6e493dae7  libstdc++-v3/testsuite/20_util/shared_ptr/cons/pointer.cc
! daffe0925527ea52fbf019624de9769e  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr.cc
! 66dbfe167c84be6d75f6d3b3130608bc  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc
! a5e4a599be6583ef00cc0b64eb9b0699  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc
! 7c6f1ef3418dfde9c6fb8db0bc9d9edd  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc
! 335c657fd37b8853b3806bd0a7f6ee27  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc
! 60672c32af44fd37637b845252961c07  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_neg.cc
! 3a3e83b2d1684acdeccfbbb3f45658c2  libstdc++-v3/testsuite/20_util/shared_ptr/cons/void_neg.cc
! c182003d94c08defbc552d0de3254588  libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr.cc
! 05f5f65051c47ce5591ef2df6aae423f  libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr_expired.cc
! 4d4227201461e6abe69ad0f711c858bd  libstdc++-v3/testsuite/20_util/shared_ptr/creation/36949.cc
! 6abee47ab07236f05a4de9dc0c558186  libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594-no-rtti.cc
! 12e0a6c910b2c80352ad60ae399fccdc  libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594.cc
! 1514c48e723c23cfaa863e6073e892d5  libstdc++-v3/testsuite/20_util/shared_ptr/creation/87278.cc
! 4d951805fbf72d3c6c8deb49157f84b7  libstdc++-v3/testsuite/20_util/shared_ptr/creation/92878_92947.cc
! 0f7a2cc3603d07ad3bd6651244b5ed77  libstdc++-v3/testsuite/20_util/shared_ptr/creation/alloc.cc
! e539f5f83cfe49f359bc0a681baf6622  libstdc++-v3/testsuite/20_util/shared_ptr/creation/alloc_min.cc
! 5508122e494da3b2c37554471a4c7df8  libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr402.cc
! 547036216774383b2729f714518d0972  libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr925.cc
! c6e7b981f1b51d237bdee41593115c8e  libstdc++-v3/testsuite/20_util/shared_ptr/creation/make.cc
! 5901abaabd3173ae0a9653b638acec53  libstdc++-v3/testsuite/20_util/shared_ptr/creation/no_rtti.cc
! 414568e676f949b3c519a7402360ff70  libstdc++-v3/testsuite/20_util/shared_ptr/creation/private.cc
! f33167daffb5b43409550d3be84e3a4e  libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation.cc
! 93d098adeb9ad8705f3f3c7c272d6716  libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc
! c7a76bdd13f16d010348b41ce2cc1286  libstdc++-v3/testsuite/20_util/shared_ptr/dest/dest.cc
! db718db1ad7f9aa5ec55ecbaa724aab7  libstdc++-v3/testsuite/20_util/shared_ptr/hash/1.cc
! f9732b6bf34b708920cac2a70a535043  libstdc++-v3/testsuite/20_util/shared_ptr/misc/24595.cc
! 1b62003aa144d492271b09c163a4b4dd  libstdc++-v3/testsuite/20_util/shared_ptr/misc/42019.cc
! b698cf232c01cce3950f39957e8e17ab  libstdc++-v3/testsuite/20_util/shared_ptr/misc/get_deleter.cc
! ff66928beb2d12c1e5a2e434c99c2190  libstdc++-v3/testsuite/20_util/shared_ptr/misc/io.cc
! da8867e28492841089bc7af91321d275  libstdc++-v3/testsuite/20_util/shared_ptr/misc/swap.cc
! cd780c26ab9fffd5df66ea835ea5aef2  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/24805.cc
! afcb5e010a6c869c06d5f85d29e6bc7d  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset.cc
! 4e8efacfa9b7048acd13b8d09de6f52f  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_alloc.cc
! 621eaef93e7491ab4e55ef0351ab1ef6  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_neg.cc
! def8b35c3c1354604b70f5d3806661ef  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc
! f8848b427a664846536ab1d66d31875a  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap.cc
! 9f48e60331b7857574af25de2f66a30d  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap_neg.cc
! 7009ee5a28997115e3665916b4d13bb0  libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc
! b61340c1e0d65af2d3011ed6abe56568  libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc
! 592e22a606a0a1f2b47e61148cfea593  libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc
! 181c40fd27782799ed5ca5b8b7bd9e03  libstdc++-v3/testsuite/20_util/shared_ptr/observers/owner_before.cc
! 19d1052400bb901a9ecc59808d210fb3  libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc
! f1d98588c9b104aea7d591010de8f8d3  libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc
! 4c5969df78d37086120068d940d12160  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc
! 164e1286f278b6e03f85a80089b591a5  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/2.cc
! 6eea80bcf68a087d0d09f595b72534e9  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/weak_type.cc
! 1ef534c928309c177fe39992e40c5b7b  libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc
! c208ffbe0cbd7be81c25671a93faaf66  libstdc++-v3/testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc
! 7be38a008a69253c6d5441ef347a8204  libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/1.cc
! f86d90af38229dcf456c5203a32cda69  libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc
! 3779899bc7c7b4da0d21441f6272fb0c  libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/95788.cc
! f6742ab5a9f67cf4234ea7f3ca886717  libstdc++-v3/testsuite/20_util/specialized_algorithms/destroy/constrained.cc
! f148a80d5253d383b587c8aeb437566b  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc
! 8840006d670700de29040a960a0a5d50  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
  a8a96c5beee704fc305ac0b3f9f86eb8  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc
  71c89a867dc34b77baecc40ffccad5c3  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc
  8ec8915100c6353851df3874d54e7f8c  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc
! ec5da8e18fcb6b75d3760d0e6c2493c7  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc
! ad3dda254a67889c026119fecc1daaa4  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/58982.cc
! d2df33db374fcc8d4ee70cfa71720d04  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/64476.cc
! f0a0a71806284432eb1af044fcb0d7a8  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590-cxx11.cc
! 0af933a2167073b00a19f5828bad7421  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590.cc
! 2a2ec9ec649ec76850cfeb0e3c411fd6  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc
! 30a566b682a61fdf451de6bf5db031b1  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/constrained.cc
! dbeedb1eb8c27c088f26c25e4eb41ff5  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/move_iterators/1.cc
! a44a5f6ebd99c9a9ad523cee846b636b  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/58982.cc
! bdbbf73d23c2708a909ffa067a430c92  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/89164.cc
! d589653cebbadf45aa7504d84f485063  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/move_iterators/1.cc
! 09231e7dbd01dc9d5603ce93ecec28e0  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_construct/constrained.cc
! d57f7b8b2bd226c51593e4928693775b  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/32158.cc
! a7381ea2f9112128a1fefbb037399116  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/58982.cc
! ae4c8d13e228d61d7bb7badc49770e43  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc
! be1501f9885d71bfeb47fe401dbc1b2e  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc
! 8c53e866193968294f45eac92c123fcf  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/constrained.cc
! a79a2c659eedeb13d02614038fda5e3a  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/16505.cc
! 29176e7558de745e8e1b53e699a3fa85  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/58982.cc
! 448e2c22cea1d8c9ba770fba1835560e  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/89164.cc
! 373638dd7048affaf6ffed8eef615bb5  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc
! 37afd793c2c2b520eac6a470e35f1a9e  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/dr1339.cc
! dc7e67084ee40a7b89b329a388673ec1  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_move/constrained.cc
! 14bab55e8ff7bd3624cdaf87bf0fd22e  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94831.cc
! 97e677bb0e3cd867286dfa17c6e9b67d  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/constrained.cc
! 9a1b7e4bfb2a3964d65ab2b01702d1c5  libstdc++-v3/testsuite/20_util/steady_clock/constexpr_data.cc
! f8db55835a14db41bba0bf7b0b30bb2b  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/allocate.cc
! a5c12a29c462f85283fda0dbec2182f0  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/allocate_single.cc
! 6460df3863e3db76b5262c6936b34ca8  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/cons.cc
! 3ae523fbe59b84125e1245543e4133b6  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/cons_single.cc
! 29ccf69f47f09e4f4e05fe5eed1920e5  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/is_equal.cc
! 5b1aec48a22bb9d36d452a76ce592a02  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/multithreaded.cc
! b153dec0c15715b8ba73addbec367bc7  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/options.cc
! eb22a62bf88e150b45d6685ae9203544  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/release.cc
! d134272b2f20dd4dc0634d2bb358da90  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/release_single.cc
! 49d7cfe2a64cf41d2149b1bb07af6cc3  libstdc++-v3/testsuite/20_util/system_clock/1.cc
! 36afcdc2237c28e9c149b78557d99d8a  libstdc++-v3/testsuite/20_util/system_clock/constexpr_data.cc
! 8619d3cafbc87418a834201da72be7a7  libstdc++-v3/testsuite/20_util/temporary_buffer.cc
! 4c7bac110fec4e423ebc802e28e46160  libstdc++-v3/testsuite/20_util/time_point/1.cc
! 17d8930c19f64a139188902c9ddfe999  libstdc++-v3/testsuite/20_util/time_point/2.cc
! 20d429aac17ea28fead7d7a5abae5a8f  libstdc++-v3/testsuite/20_util/time_point/3.cc
! efc350b2d7c848e40bf6cfcec62bcd3a  libstdc++-v3/testsuite/20_util/time_point/arithmetic/constexpr.cc
! bba883f45c78d0dc0a89cf67760e2585  libstdc++-v3/testsuite/20_util/time_point/comparison_operators/constexpr.cc
! 8ae72659f8a34994347b4efc1a6c221e  libstdc++-v3/testsuite/20_util/time_point/comparison_operators/three_way.cc
! 9a6a877c619488c003d108edef41aa5d  libstdc++-v3/testsuite/20_util/time_point/cons/81468.cc
! 19aac89a61eefa2bb427c4050e01189f  libstdc++-v3/testsuite/20_util/time_point/cons/constexpr.cc
! e1fedf6c6108c70fc99b13b73b96283b  libstdc++-v3/testsuite/20_util/time_point/nonmember/constexpr.cc
! e09dcef467c3c66ab41cebeaf97aa406  libstdc++-v3/testsuite/20_util/time_point/requirements/constexpr_functions.cc
! a54cb050c6291aea1f2bd90a7dc9892b  libstdc++-v3/testsuite/20_util/time_point/requirements/duration_neg.cc
! fc1631a1c2d8c5e78e84610c65ed82e8  libstdc++-v3/testsuite/20_util/time_point/requirements/explicit_instantiation/explicit_instantiation.cc
! 5ef44cfc8bb3806dcba3439989e834d6  libstdc++-v3/testsuite/20_util/time_point/requirements/noexcept.cc
! 5e2291adb1dab6a4f58a7fd07a4ad8da  libstdc++-v3/testsuite/20_util/time_point_cast/constexpr.cc
! 23e4ceee3bdb15e695b84fdda68a5a16  libstdc++-v3/testsuite/20_util/time_point_cast/rounding.cc
! 31687343f1e84b2d2dbf104c767695fd  libstdc++-v3/testsuite/20_util/to_address/1.cc
! 2be74c8500e29bf0c1a430bdb461b5c0  libstdc++-v3/testsuite/20_util/to_address/1_neg.cc
! ec17b984778fce7912266fc4526fcfb6  libstdc++-v3/testsuite/20_util/to_address/debug.cc
! 3ca8fbd306c8319c7e54f7700866f1e7  libstdc++-v3/testsuite/20_util/to_chars/1.cc
! 91f4db32aa7b37c08bcde6398569aefd  libstdc++-v3/testsuite/20_util/to_chars/2.cc
! 6a6de18abec12388f9172f640f8832f2  libstdc++-v3/testsuite/20_util/to_chars/3.cc
! 841cc30dd7cafc4dbfe620231b57a130  libstdc++-v3/testsuite/20_util/to_chars/95851.cc
! 979dd70408e1b1c671644fd51961df8f  libstdc++-v3/testsuite/20_util/to_chars/chars_format.cc
! f1f6bb511550e64dc70aac6a54d90504  libstdc++-v3/testsuite/20_util/to_chars/compare.cc
! 6c84cbbd712831d763fca1adfeb27fc3  libstdc++-v3/testsuite/20_util/to_chars/lwg3266.cc
! 8f12bd31775d784d0f95359ff4c6c807  libstdc++-v3/testsuite/20_util/to_chars/requirements.cc
! 0888e5d6fced62ed14b05ea63ed4dc85  libstdc++-v3/testsuite/20_util/tuple/48476.cc
! 4014039b6aa7420df975347aa3514398  libstdc++-v3/testsuite/20_util/tuple/51365.cc
! 934b3f6d62a22480ca94149cb8ffa22c  libstdc++-v3/testsuite/20_util/tuple/53648.cc
! 242894c2b3fb2c643d423075fd1311a3  libstdc++-v3/testsuite/20_util/tuple/56785.cc
! c37f21f8890760d2b4379050f0e8fe5f  libstdc++-v3/testsuite/20_util/tuple/60497.cc
! 9ad5dc42382cba5d50bb60fc2dfa8d4a  libstdc++-v3/testsuite/20_util/tuple/61947.cc
! 9ef6298722d2111051a7eeb1e78877d7  libstdc++-v3/testsuite/20_util/tuple/67844.cc
! 7ee83596a2d29cbbabab7d9e88ae868e  libstdc++-v3/testsuite/20_util/tuple/77395.cc
! 01078016d351dc72b7bd67aa59747213  libstdc++-v3/testsuite/20_util/tuple/77802.cc
! d95c71749d65fa46c49f70e44c7a2dec  libstdc++-v3/testsuite/20_util/tuple/78939.cc
! d308898f4e2e483d7649035d30934ae9  libstdc++-v3/testsuite/20_util/tuple/apply/1.cc
! fe2f5bb3e3f103441f10f826d1162fa1  libstdc++-v3/testsuite/20_util/tuple/apply/2.cc
! a061192e72723c3beebcb4b5672ebf1d  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/35480_neg.cc
! 8955d9a55acb24bb1890bf86b3b5bef0  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/comparisons.cc
! b6fbdba96a04634ad390e2306ca313a0  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/constexpr.cc
! adb1ecdbe280954e59283a1f3e0ed1cc  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/overloaded.cc
! dfa1f4320dd7939c91a770e1592f4940  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/three_way.cc
! c7e3d258ef2cabfad61abae8aa2039d3  libstdc++-v3/testsuite/20_util/tuple/cons/41530.cc
! 3bb038e71617fed7e02e631160fe5e7e  libstdc++-v3/testsuite/20_util/tuple/cons/44487.cc
! e903395ce4fa31df42f7fbeef9640f16  libstdc++-v3/testsuite/20_util/tuple/cons/45228.cc
! 5a579490e7bb36a3d28b1dc9f90dc2a1  libstdc++-v3/testsuite/20_util/tuple/cons/48476.cc
! d379e88e7b9770029bd867f4f58f1021  libstdc++-v3/testsuite/20_util/tuple/cons/66338.cc
! 4e83d233e81c63a84ffc3071ac1d7246  libstdc++-v3/testsuite/20_util/tuple/cons/90700.cc
! 932eba8ec1b53519dc0aa9ede111ef6e  libstdc++-v3/testsuite/20_util/tuple/cons/96592.cc
! 08fff57b52db11072c36a2ddafb8e80b  libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc
! d6056fc6b6106ff7771973fd50fde11a  libstdc++-v3/testsuite/20_util/tuple/cons/allocator_with_any.cc
! 1ef311a6e4992d4d6c824fd72b6b81af  libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc
! 42142d2bfbb5a37f499df37bf6d7d58e  libstdc++-v3/testsuite/20_util/tuple/cons/assignment.cc
! 6586044de6d4438d4316894bc2adede8  libstdc++-v3/testsuite/20_util/tuple/cons/big_tuples.cc
! 52de78f1dc313e0e8aeaad366e5fdc06  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr-2.cc
! 35b6ec9d9b344466a06d9b0f48ee4d54  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr-3.cc
! 1af69a8cceed91ead1032dbb9e013b1f  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc
! 4ff631bf2053d57f7d8c6fce51916dc4  libstdc++-v3/testsuite/20_util/tuple/cons/constructor.cc
! 83740e712df7dbfe89080d33d692e968  libstdc++-v3/testsuite/20_util/tuple/cons/converting.cc
! 6c5f4a16b8d302050ba6eea7e80c894f  libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc
! b423afdab231fd2f7cfbc59e1d45a952  libstdc++-v3/testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc
! 9db85019fe8154487ade30ba50df6868  libstdc++-v3/testsuite/20_util/tuple/cons/explicit_construct.cc
! 4ffadeb3e33e33ca77cdae9576cc3909  libstdc++-v3/testsuite/20_util/tuple/cons/nested_tuple_construct.cc
! 18294e76f298b77ba5ee23d17077b8fe  libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_move_construct.cc
! 1e93d48f5ca111475bd77afc295ec399  libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_specs.cc
! 5156e7890e7ff12a4b2e8c60792e0d90  libstdc++-v3/testsuite/20_util/tuple/constexpr_swap.cc
! d4b0d2841dba741f457536eec1154f9a  libstdc++-v3/testsuite/20_util/tuple/creation_functions/23978.cc
! f1234aaefe52691a8d79d16dcad9d1b2  libstdc++-v3/testsuite/20_util/tuple/creation_functions/48476.cc
! 97afefb91e3c0f5229925d1d1eb52b66  libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr.cc
! 0ac5e8bda4873a09b25decb58d4d92fd  libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr_cpp14.cc
! 546d27224648758e03e8e6edc9062c26  libstdc++-v3/testsuite/20_util/tuple/creation_functions/forward_as_tuple.cc
! 76b5d966d6696a21ca0722ef5cd4f87d  libstdc++-v3/testsuite/20_util/tuple/creation_functions/make_tuple.cc
! fd9a6eb00300576bfa5297c6ecba8e64  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tie.cc
! 9cc3371057ac857aa83dbd7e420212eb  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tie2.cc
! bc6f22c995fdea66396d861cae632566  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tuple_cat.cc
! c5c16d665d1a0cbdcadd4b54a8c9b597  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_element.cc
! e4277268103a7f9e6f839f3006504905  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_size.cc
! 15e054137d223feff1e11bc87dcf6bbd  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_size_neg.cc
! ce636a1e597d0e80e9c71a27ae18bad9  libstdc++-v3/testsuite/20_util/tuple/dr2729.cc
! 1464d322f990b7846d9f403346fa92af  libstdc++-v3/testsuite/20_util/tuple/element_access/constexpr_get.cc
! 86fc7f07a5baa1dd57f1f5aa33f10cef  libstdc++-v3/testsuite/20_util/tuple/element_access/constexpr_get_by_type.cc
! e5a6cd948c02c7d573efe5cccd57d35a  libstdc++-v3/testsuite/20_util/tuple/element_access/get.cc
! bb3d38b754f08f5502ee798e75184dc0  libstdc++-v3/testsuite/20_util/tuple/element_access/get2.cc
! 00f1b0fa93579031c0275d100509e740  libstdc++-v3/testsuite/20_util/tuple/element_access/get2_by_type.cc
! 49bbfcec08584fcdd1eab2b83b4ae473  libstdc++-v3/testsuite/20_util/tuple/element_access/get_by_type.cc
! 75353d1b4cb722aa1ab986597b308009  libstdc++-v3/testsuite/20_util/tuple/element_access/get_neg.cc
! 63861dce98ad710d0ca4ea5a66f2fbac  libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/1.cc
! 9838195e7f0a48dd07f492bf425dea28  libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/2.cc
! 79862f861f590fd6c34bfb50cdf5c861  libstdc++-v3/testsuite/20_util/tuple/moveable.cc
! 6b4f7dfa30a90b37c40ca858d90de7fc  libstdc++-v3/testsuite/20_util/tuple/moveable2.cc
! 460f9b2f92b819465cf1ff1c6f06d830  libstdc++-v3/testsuite/20_util/tuple/noexcept_move_assign.cc
! c74a102c5b8fb815cc2e70678f2a900f  libstdc++-v3/testsuite/20_util/tuple/noexcept_swap.cc
! c403070545bd9ec1d24da0f7abcc8109  libstdc++-v3/testsuite/20_util/tuple/requirements/dr2367.cc
! 3069a8fbce9de113fa22f191aaf26d42  libstdc++-v3/testsuite/20_util/tuple/requirements/dr801.cc
! de7b38a16a72fa9047a55472ecde5fff  libstdc++-v3/testsuite/20_util/tuple/requirements/explicit_instantiation.cc
! 1564316a2ac13ee9b636f496dcaefcaa  libstdc++-v3/testsuite/20_util/tuple/swap.cc
! 47aae68428a43bc8239be1c69d4f7efe  libstdc++-v3/testsuite/20_util/tuple/swap_cxx17.cc
! 5f5d6610a3520cad987e68e25c134126  libstdc++-v3/testsuite/20_util/tuple/tuple_element.cc
! 9bf15005582ff2c300c937f4a4753710  libstdc++-v3/testsuite/20_util/tuple/tuple_element_t.cc
! c8ea50953f7ecbc75ebb3b3a0fb45b63  libstdc++-v3/testsuite/20_util/tuple/tuple_size.cc
! 416026233f065191be3cd9bbfdccbfa2  libstdc++-v3/testsuite/20_util/tuple/tuple_size_v.cc
! a121ad209876b97f21d22603e3a122c9  libstdc++-v3/testsuite/20_util/type_identity/requirements/alias_decl.cc
! a92b98f344c043505466f76e5b9e0dac  libstdc++-v3/testsuite/20_util/type_identity/requirements/explicit_instantiation.cc
! b51865a1d6e82ee5e3bd2edc900a8bf5  libstdc++-v3/testsuite/20_util/type_identity/requirements/typedefs.cc
! 26b981d741eb1d87f686e16522348d08  libstdc++-v3/testsuite/20_util/typeindex/comparison_operators.cc
! bde8769e03a93d3d0a6b48c3fd384c29  libstdc++-v3/testsuite/20_util/typeindex/comparison_operators_c++20.cc
! 1b33fb4afa9fb4b882a5be6782f5fd28  libstdc++-v3/testsuite/20_util/typeindex/hash.cc
! 3a63631f810936d3173bc70c7eeed62c  libstdc++-v3/testsuite/20_util/typeindex/hash_code.cc
! d218053515dbbde84801be3dd495d5ae  libstdc++-v3/testsuite/20_util/typeindex/name.cc
! 373df607da289ca2c8be2e6c541d3afd  libstdc++-v3/testsuite/20_util/underlying_type/requirements/alias_decl.cc
! f989c8d6e21d7403416071aa41976fec  libstdc++-v3/testsuite/20_util/underlying_type/requirements/explicit_instantiation.cc
! d4f332051a9bf56d60e46b383e776f28  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-1.cc
! b1dd98c21afbc2cc9c5ce0e644059bb1  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-2.cc
! 45bfb2f4f4f5661f534f7eca045bbe98  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-3.cc
! fe37de91a0c5e895cce60c9d7e07f4c0  libstdc++-v3/testsuite/20_util/unique_ptr/54351.cc
! e823ad67ca5db340e2e9cb29c20bc760  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635.cc
! c07f8677be3dc90bf5ecb98ed2933533  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc
! c4370d12b0fb9b3aa4bf0765451034cf  libstdc++-v3/testsuite/20_util/unique_ptr/assign/91308.cc
! e5e54ac2f5592672b72a0406f511a2cd  libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc
! 711421cd2a5de3ddfca6985637417981  libstdc++-v3/testsuite/20_util/unique_ptr/assign/cv_qual.cc
! ef2923473e42dd7cdf581f7732ad836b  libstdc++-v3/testsuite/20_util/unique_ptr/assign/move.cc
! 16ce0918bf56a3ae9ff9b485e6e2252c  libstdc++-v3/testsuite/20_util/unique_ptr/assign/move_array.cc
! 49c0e433f06b3f4834044614850a708f  libstdc++-v3/testsuite/20_util/unique_ptr/assign/nullptr.cc
! 8485d2062bd3771e78105abfb95c6b42  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/42925.cc
! 2c42aea9ed7eed141b3342f290414a78  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/compare.cc
! b46f71dfd84101c040d78da761517fc2  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/compare_c++20.cc
! ee2554b1f273bd386a2277aaf872ba35  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/dr1401.cc
! 1031f26536adbf2d85577039fad9fa34  libstdc++-v3/testsuite/20_util/unique_ptr/cons/77990.cc
! 251efeca6067e7039f78c49dfd96e971  libstdc++-v3/testsuite/20_util/unique_ptr/cons/array_convertible_neg.cc
! fcbbbf4ffac2a3db03f25b462a4c7f67  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr.cc
! 9f1011d97ab2f5a1e64451f69605978c  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc
! b73feb8f7d8fade084b988d69f9dccd0  libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr.cc
! 2e3ec6bfb6535a33bcaf77ddb24877af  libstdc++-v3/testsuite/20_util/unique_ptr/cons/convertible_neg.cc
! aa4580cf477f4584dd34541b02f5cfaf  libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual.cc
! e5608a985861ff9aa84ca21604d3ac9d  libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc
! 1450e90cc9e0cde7622f922785d0faef  libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc
! 8899f2fc7d8429dc53d8cfe2221dec35  libstdc++-v3/testsuite/20_util/unique_ptr/cons/default.cc
! 7bfe60b8ce02f541ea49b7d2e4b6f31e  libstdc++-v3/testsuite/20_util/unique_ptr/cons/incomplete.cc
! 3c3a4bdb7be769775f60dd18eab85873  libstdc++-v3/testsuite/20_util/unique_ptr/cons/lwg2905.cc
! a82c6c5a65b977f869e7d7fd71fa3aef  libstdc++-v3/testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc
! 8a261cb28d91dc113e1abe359c584336  libstdc++-v3/testsuite/20_util/unique_ptr/cons/nullptr.cc
! 4b30758db6d6a981a45a86d006a2f17e  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer.cc
! 87766713a094b2f7407458e9d33628c0  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer_array.cc
! 407c01fd2d7a7d4cdd3d296157dc33cd  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer_array_convertible_neg.cc
! d816e1247c991d020aa931bb0b09267d  libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter.cc
! 4fa59a557edf3350f86d80dea34fc202  libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc
! 4b809d0544e44c20c9ed7cb3ad4e9b8f  libstdc++-v3/testsuite/20_util/unique_ptr/creation/92878_92947.cc
! 5b38033c22516b1d07e2c8bfa2f0eeac  libstdc++-v3/testsuite/20_util/unique_ptr/creation/array.cc
! bf4c0d1c4379b8585668806fdfff7b15  libstdc++-v3/testsuite/20_util/unique_ptr/creation/array_neg.cc
! 4e1a6a35cff49daf1edd1a37302d08db  libstdc++-v3/testsuite/20_util/unique_ptr/creation/single.cc
! d82d6e978472004873e842f861636073  libstdc++-v3/testsuite/20_util/unique_ptr/dr2228.cc
! b30d26b5e6b3c6af36535bbd45d8c158  libstdc++-v3/testsuite/20_util/unique_ptr/dr2899.cc
! ad0a4a88133b1eee32796f838e5989a7  libstdc++-v3/testsuite/20_util/unique_ptr/hash/1.cc
! 9bc6b7df9afe0328a568cb8be2727c5b  libstdc++-v3/testsuite/20_util/unique_ptr/hash/90388.cc
! 0b81a02cb11b1287462efab6eda5dd37  libstdc++-v3/testsuite/20_util/unique_ptr/io/lwg2948.cc
! c31031b0d99c1a96afd0c2bb409a4a9b  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/43183.cc
! deb89269057f05d89b86b6af7ef3be4c  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/48398.cc
! 652a945e3e33dd9445a13cebd0009ed8  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/93562.cc
! c7e6c5888dff3fbe05417ea2ba65b9e2  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/cv_qual.cc
! f297f0d486ae383e6d51dc7526810c75  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/reset_neg.cc
! 6691603763a0355d5df843f7f543fbc8  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/explicit_instantiation/explicit_instantiation.cc
! 20634f066940a6f8a4b607c5735c3ee6  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/incomplete.cc
! 88a8026792846a09abf0c407ddaf9eb4  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/pointer_type.cc
! 45053a3473bdf32dc808a807486655da  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/pointer_type_array.cc
! 5eb144ab9a982b29822b0451e1eca7e4  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/comparisons.cc
! ff6fd2e89c87b256aad09cd62bfc94de  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/comparisons_array.cc
! fc18a8f5cf0ebc78a41d6970fcd9c99d  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/swap.cc
! adbb5dfec524eede276494e708a54229  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc
! 82ddff076d16cb641eb7cadbc0027ca8  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/allocate-max-chunks.cc
! 3cb2209f1ccff09a90ad75ede70f9d46  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/allocate.cc
! 09feb7a86358b6755d9fa6aa21fc2d51  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/cons.cc
! b9c286bbf9794d8e5b623e2d8a03a14b  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/is_equal.cc
! d8e8ac8c3fd86dd9258e9969cc189ebb  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/options.cc
! c9f4e2afbe952dbc89c61a0a46dfefa7  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/release.cc
! 93a1a8f43419e86234625d2978010812  libstdc++-v3/testsuite/20_util/unwrap_reference/1.cc
! 5707587e5d064697287c66b550ee4cf1  libstdc++-v3/testsuite/20_util/unwrap_reference/2.cc
! 9ae53850fc816ef0b228c260d427e9ee  libstdc++-v3/testsuite/20_util/unwrap_reference/3.cc
! 181317ae8b8cfec7ea7003f10ee47f25  libstdc++-v3/testsuite/20_util/uses_allocator/69114.cc
! dd5f4f08c369d8c361199aec71949b20  libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc
! 49b89488c5f2f8b08b5afbace59564e7  libstdc++-v3/testsuite/20_util/uses_allocator/92878_92947.cc
! e6c117a9fb5b8a3f48cbfddc12d4d9c9  libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc
! 2bee549b036390dc8ab271a20439c07a  libstdc++-v3/testsuite/20_util/uses_allocator/construction.cc
! 09515817bf420f2311396b2daf00ffb7  libstdc++-v3/testsuite/20_util/uses_allocator/make_obj.cc
! ae03c2b43b20cf8ac1bd997bfa0b9ce9  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/explicit_instantiation.cc
! 6889bd8ba19a5b84ea84a55886bf1951  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/typedefs.cc
! e2d087bbe46ac2f71e8e33716b1b1ef0  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc
! ab99753060141e714d16128df6a09f7f  libstdc++-v3/testsuite/20_util/uses_allocator/value.cc
! be2ec0241c6096fe89e619d5e4b3b0e0  libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc
  fd102d43e723306496bcc14b30a9565c  libstdc++-v3/testsuite/20_util/variant/80165.cc
! 74d73778562d9c56898d9a74153f032d  libstdc++-v3/testsuite/20_util/variant/85183.cc
! 3e354ee80feda90462e1034e058e156a  libstdc++-v3/testsuite/20_util/variant/86874.cc
! ffb4c8ffa343c1fd7f02f48a9b7d9423  libstdc++-v3/testsuite/20_util/variant/87431.cc
! beaa13ec1d1a4204888c8f2a79ee2fff  libstdc++-v3/testsuite/20_util/variant/87619.cc
! 32853aa39cb1b1c0ce0663b1e7ea32af  libstdc++-v3/testsuite/20_util/variant/91807.cc
! b8153d3e513daebee4d582e62bc8c1b0  libstdc++-v3/testsuite/20_util/variant/92878_92947.cc
! 71af8f248a5e8f7d25120f975e6ec1ea  libstdc++-v3/testsuite/20_util/variant/95915.cc
! 46ef9d2055f4dfb19780326f04956358  libstdc++-v3/testsuite/20_util/variant/any.cc
! 9362b94d2f5b18846b2ac2671d100a4f  libstdc++-v3/testsuite/20_util/variant/compile.cc
! f81ad026888502e3bcef4b7e21e01bd5  libstdc++-v3/testsuite/20_util/variant/deduction.cc
! 75302d1c9d8983d0fd213dcdadfa392e  libstdc++-v3/testsuite/20_util/variant/exception_safety.cc
! a05d8d34397294854dc0542502ac141f  libstdc++-v3/testsuite/20_util/variant/hash.cc
! 08e52d30e0cbd35df0f8421090340d11  libstdc++-v3/testsuite/20_util/variant/index_type.cc
! 9303b34dc9d5c7fc3d9b4585b0f702b8  libstdc++-v3/testsuite/20_util/variant/relops/89851.cc
! 303cbcef194c618dbbf1fc5dd8c6179c  libstdc++-v3/testsuite/20_util/variant/relops/90008.cc
! ac2439eef4c35ab67d4d939640f58ddb  libstdc++-v3/testsuite/20_util/variant/relops/three_way.cc
! b2a64a0b3e695415befdf20391ecebee  libstdc++-v3/testsuite/20_util/variant/run.cc
! 95ca4c03ec6925a8f504f54d0a0b6954  libstdc++-v3/testsuite/20_util/variant/visit.cc
! db227b2a2c160eaa1c0fa2adfd130675  libstdc++-v3/testsuite/20_util/variant/visit_neg.cc
! 1e79bd8324b0ee8c689af610e3a404df  libstdc++-v3/testsuite/20_util/variant/visit_r.cc
! 43b010e9cc9026803be19d3ad8c43dbc  libstdc++-v3/testsuite/20_util/void_t/1.cc
! cfd09fb260ddcc6454286c1ee0974762  libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
! b20cdb20e2ae350d976e52b340735a4c  libstdc++-v3/testsuite/20_util/weak_ptr/cons/constexpr.cc
! bae6e6433438180812f30ae7d4a856d5  libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc
! c1ea55493ce2eb7ca9a08850a37018fc  libstdc++-v3/testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc
! 1f53a3ef9fa709ccf9168083abcc8ab8  libstdc++-v3/testsuite/20_util/weak_ptr/lock/1.cc
! 0408e5cda7627b1f0ec51ff64d654b0e  libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc
! 7e1b904216ad534b48fdd6638bb21311  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc
! df3ce7d4bb98b79018721bcbf452941b  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc
! e5661e58e7517e219f4f87c2b98d106d  libstdc++-v3/testsuite/21_strings/basic_string/40160.cc
! 11d7380659ca216bd897c83283810981  libstdc++-v3/testsuite/21_strings/basic_string/56166.cc
! cd3cc92a6fb4493ec4ad4aa2a8f1de71  libstdc++-v3/testsuite/21_strings/basic_string/79162.cc
! becf4f63d90706890e3a807e62911777  libstdc++-v3/testsuite/21_strings/basic_string/allocator/71964.cc
! 885177c1ee32636520a11a88ddac3b38  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/copy.cc
! b2b6236e2bbcc0b25b3fa46bf334c75c  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/copy_assign.cc
! ff5fff614997d1156c79df14111476d3  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/lwg2788.cc
! 20f29d50370941bc816a235ee91a2e1d  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/minimal.cc
! d7b18ae7d44b7a8d99c578a244cce2dc  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/move.cc
! df9566dc1579291a081356c4154f0658  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/move_assign.cc
! 9c4607c8bf0b23905682f1edc5c3c3a7  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/noexcept.cc
! 5d4ec118ee4952c048459b1bd00632b0  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/operator_plus.cc
! ab1410468b9792fc40ccef5c166a7612  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/swap.cc
! afb129f77fbce9efbc4e9567b2ef1a8f  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc
! d52b91ad61a4421f6dd221dec6df9de5  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc
! 2caec22b2d12fc43224c5dd4f2d14f70  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/lwg2788.cc
! c351cf08cb4bcc05a7aedfe6a73bda10  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc
! 10064c74f9a50e077c83a67329de0819  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move.cc
! e707555b24cbafe881683c4351001e28  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc
! 66b62dfb79ebfc573e96f329e9dc1ba1  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc
! e34efad27876e10d4606988c9653280b  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc
! 2a2e06fa814ca2e964233a61c64dd6d8  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc
! db7825a912836205eebd3fe17e57a4b7  libstdc++-v3/testsuite/21_strings/basic_string/capacity/1.cc
! bcc6f6607b2cbc4932d1a8eed9ab11d6  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc
! 90ece46b65b91a4d2400c04b620ce05b  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc
! d61a10f0c08160ea94ea6870281642ce  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/2.cc
! 9ae9d0ee148d10a7eb21720064f710ba  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc
! 8f7e19075caf24192ea43b96106bc18b  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc
! 17a0cd3ab26d7646c751d88e0a57ce8a  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc
! e9e32b4ba7c760ddae0bd444e8e90f8c  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/2.cc
! 3fc0b1f941bee73cf64d7765a4022de8  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc
! dceae81edf0a4f8b76e45116e95cc032  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/1.cc
! 4663e4ceae43985a778190778251cdb4  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/2.cc
! b526dcbf2004146b3db9642c9b7ed0dc  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/3.cc
! cc89de75d94e257bc53332ce87ddfa72  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/4.cc
! 4ff5abcd0fb62cf088cef90e0a4e0a9d  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/42261.cc
! 26a101e5bd1fe24cf3f287ed3bb6f9dd  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/5.cc
! f9442b899204f644e509dc46b8bbbf09  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/6.cc
! 6c6a126b0b7d661776473b221f167dd1  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/64657.cc
! 5110c67e76e5c07dec89e5f4dfef8876  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/65085.cc
! ccbf822334104cfd6cd712f6cbf48f2c  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/69092.cc
! cbb191ddbc084a32b363079d7e894c9c  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/7.cc
! 9772f09d3093b563815d56a2707d30b4  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/79162.cc
! 051e7a79271c26565707429e8655e975  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc
! 3b182d3615de2940ff5105e8a7896d33  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/86138.cc
! 7dda100478f588752e73d5454f54d287  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/9.cc
! 132198ecac065279d898da474f026722  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/deduction.cc
! 0005ec3f00c6e7f131a31a736d432923  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable.cc
! df43acfd895b0339c483a6afaae79521  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2.cc
! e6f04d0255e1e36f3383a8e2d5fd4fe8  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc
! 8e278333b7abfcd866abad86f44201aa  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/noexcept_move_construct.cc
! 47c0450325a7a6a9563b1a0bb3d78d1a  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/1.cc
! 5c7144f9d22c347fc83e0be37e6f361e  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/2.cc
! b386ca3afccb1df527fd1bd89b0e36df  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/3.cc
! 80f6c32efd3882ab76c073c75ffae36e  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/4.cc
! fdf9ef9a3e9179d4e6c027ad299e182b  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/42261.cc
! 6df9edb9c9be82f815de45d21dfd6d44  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/5.cc
! beb12963b472dc39cf1e4656211463eb  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/6.cc
! 3a9fbd5553725dc398fee78adaea9ba0  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/7.cc
! 9772f09d3093b563815d56a2707d30b4  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/79162.cc
! 3825944cef0e0ca9bf4c264298bcd78a  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc
! 8120e88c3ad2c046d178b1dcfc64f5d9  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/86138.cc
! f974558c7367e8e806dc92282bdc9980  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/9.cc
! 5a2d3d3ea6756a91aba1334734e3416b  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc
! 30d4f3eaa511fb77eebca386cb8e72ba  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc
! cbee67b0fcf983257cafdbfb075a2664  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc
! 1e619df7b35fd8cacc9e75d2d565f564  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc
! cbf4cfd46daba9d8c591fe83bf5727c9  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/noexcept_move_construct.cc
! 28b8476368bfaf336ca7c7e272d6a487  libstdc++-v3/testsuite/21_strings/basic_string/debug/1_neg.cc
! fb09de682cdc5a46f41d1640b781555c  libstdc++-v3/testsuite/21_strings/basic_string/debug/2_neg.cc
! b29c113f4332ee004d30e044be3138ca  libstdc++-v3/testsuite/21_strings/basic_string/dr2268.cc
! 22dca268dea9fa957258a595966a401d  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/1.cc
! 4a036a8743d10608efb6817550b59283  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/2.cc
! 3ab93f85f8a617d6ddbcb7b973d39d1e  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/21674.cc
! d5ed7a7fd87a204d99494ddfe6fd53b9  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/3.cc
! cb0daa33054959494c62d03c0773d02e  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/4.cc
! dd5f204ff9ea9aa094e2b2b2594ece4f  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/58163.cc
! 2430fad1b68efe4d5f0e6f5bb83d5f54  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/empty.cc
! daebf54db087d33e43bd863b4b890ff2  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/front_back.cc
! b1162e4e551ee6ba88009529eec72ac5  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/1.cc
! 2409ac018251a873249694d8c9286278  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/2.cc
! 94ce1a945e80c9a8c9fff0987c71c474  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/21674.cc
! 0138f5223400375962efac3d7ad42a0e  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/3.cc
! b2089d0de3e478f667c29f20ac76fb38  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/4.cc
! 7a3b524ff9ec88ba23dcc8c6132cedaa  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/58163.cc
! 293e9ec93c7a2e380cb902efe36ebd95  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/empty.cc
! 620f1a14fbe52d0a1c30d46536627baa  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/front_back.cc
! f6299ae4fac86b48f6a78d82f80fb22b  libstdc++-v3/testsuite/21_strings/basic_string/erasure.cc
! ec3ed1babf4526f0889bc333a4e8fe3c  libstdc++-v3/testsuite/21_strings/basic_string/hash/hash.cc
! b2d8c9aa78ec97e3cb5897c92b688485  libstdc++-v3/testsuite/21_strings/basic_string/hash/hash_char8_t.cc
! 07fd2da761caa4ab2b0e168d1c3d239f  libstdc++-v3/testsuite/21_strings/basic_string/init-list.cc
! a5e67eed7004e474b04181f57aa9f483  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/1.cc
! a3e212c1c47fefff6f667804c6436d78  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/10.cc
! c317b2a6a2e02a47c720d2d257794fd7  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/11.cc
! 8d24fd0409462d6b5226a9041b6c3289  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/12.cc
! 71795e60e3131792c78aff3af11358ec  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/28277.cc
! b92f3d881b058642afd95c1312006af5  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/4.cc
! e9d1f9e622816be6a3e5b052126c2d68  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/5.cc
! 2a54ec2c2b737b9d1773d761802f4cf7  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/6.cc
! ada480bc9b831ea2b7cb69f1674a43b9  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/7.cc
! 6f9cb0c05fdd2093ecb9dbe50bc979a7  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/8.cc
! 40d94e51efcfe488ff69de2d8245c6e6  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/9.cc
! 5897655ce061765fa6b9ad44123fe6f7  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/pod/10081-in.cc
! 6c9a18d97a2081386d3f2bafb93cdc76  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/pod/10081-out.cc
! 5f21d80b222a6efa4b8d8d239a967730  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/1.cc
! 7eb930ab898865f724e66143e5553924  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/10.cc
! d9cb6a1e89629a45314c420b5eabd5fb  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/11.cc
! fec626e0ba363fb9e5777d90bf9f9e9a  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/12.cc
! c6e05d291cefebd6c24c9e4198ef3f0a  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/28277.cc
! d4f4f9b625fb5052fc302dfadd8f091a  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/4.cc
! da5a03977966538ec19991add3b2590e  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc
! 4770194e4acc324b5cb9e3c6e0cb9d2e  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/6.cc
! 6c74c9deb1d0cb3d2a13eed0a79542be  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/7.cc
! 35d9a82dc92e297c3e2bd9347091aef7  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/8.cc
! 607703def195ac8e39bfd300967ea9c5  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/9.cc
! 73ad1f87fcedda4606535cddfd106706  libstdc++-v3/testsuite/21_strings/basic_string/literals/types-char8_t.cc
! 1bae495b436c654b4036c8c9e38768c4  libstdc++-v3/testsuite/21_strings/basic_string/literals/types.cc
! b6d060bcdddff6de18c04a35e3ea3940  libstdc++-v3/testsuite/21_strings/basic_string/literals/values-char8_t.cc
! e420a58a183cd010431baaa95dbad20c  libstdc++-v3/testsuite/21_strings/basic_string/literals/values.cc
! 260bce788e192270433853495f536820  libstdc++-v3/testsuite/21_strings/basic_string/lwg2758.cc
! e25337ecf0443196ee04cbaca4b582ee  libstdc++-v3/testsuite/21_strings/basic_string/lwg2946.cc
! b3bd3765f9a33b290fe64e86e34cbef9  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/64422.cc
! f70f801d8f7fd38bc35b716509cd978a  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/1.cc
! 58d0f01f36614a3f57ce9665ea43bac4  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/2.cc
! a19ab8b516c84fe3021d0e1a0059fdf8  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/3.cc
! d660c7eadea6b90acc7929b79ceac640  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/4.cc
! 4e48a0fdab5d8c1d6ddab7b3437c2db1  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/1.cc
! 3de45ed20fe6e74794f7c736ab8a3d77  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/2.cc
! dd7e3a5bc9a9db138ca1178165882e2e  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/3.cc
! f88732aba1c7079a8b49b2530cf4d211  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc
! 9e4af3391553225df312e5f29479307f  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/1.cc
! 7c0052d64ff761162463eb0faeb32fd3  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/2.cc
! 9ae8428ff0e29a552e003988edcc4331  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/3.cc
! b9607b9b55e558c414b7b18046c1a38f  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/4.cc
! 2643f24fac22466196b0311506238560  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/64657.cc
! d6b23b47ef81dad34d5b8ed5185fa814  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc
! 47fbc97d5e0a2d5210e0e38580944d29  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign.cc
! 7f87ba247f1ba38fcd7669ee2f6d212d  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc
! 71ce3c5306e5b904f2d79c9a039c0abb  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/1.cc
! 0639951e1e920050d63e39e2bf24371c  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/2.cc
! cd461ce548c98927572cd3f550571501  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/3.cc
! e9bae6c53799c28295831d58e695719d  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc
! f2e1d0d88e3462be77ef9a6a081257f2  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc
! 9c30fba5ef57d29d3ff8e21f33699503  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign.cc
! ebd6f6364213efa291f12862a1df767a  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc
! d0218b4d7b3ee62f04579f1a7ff183fd  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/1.cc
! f4203c81ed416b6eee65916670a7a802  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/2.cc
! 2fa6d69cfb069efa3de1d4d517b86f7c  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/3.cc
! 5e2ccf081fe880905460104f6a36ec26  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/83328.cc
! 1831f427d5c0936e62e0d3eba0e83e50  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/1.cc
! ef3cdd411df3ec0b781d8b737d6eab39  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/2.cc
! 6a7b0c94f8afbbff1aa493545c9b2dc3  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc
! 8ab161f831def003412f994ce958f4aa  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/83328.cc
! c00b49688889d7b769ef8634fa32789f  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/pop_back/char/1.cc
! eb25fe8ed876890b0ee587c32b8a4e94  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/pop_back/wchar_t/1.cc
! d1909127c519f4c81f269b1885b17b5a  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/1.cc
! ce62cd8a95237823ef55a8286990ad8f  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/2.cc
! a89b01cb3994ec852ae11d41fa102eaa  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/3.cc
! 696dc4fc542358887bb65ecaf5408add  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/4.cc
! 4cf8d79dd8e3397c29b6871adb90e7a4  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/5.cc
! c8c1e33dc096b5d2c4e840f5c851f7cb  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/6.cc
! 3de7d807ca1a0bcd2540ce59a4f20d81  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/7.cc
! 5cd5488b87224124bbdd342570580f05  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/1.cc
! a6d54e9345c88ca8a9d659eaaf9c139d  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/2.cc
! 285855c4e419fac8f9d7997766508a49  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/3.cc
! 30e8cdacfba9463512a0c958f1c360a1  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/4.cc
! 450f331a2cc87c89c7959cdb628b4e34  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/5.cc
! cbd97708e28bed47896661390a5e10ea  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/6.cc
! 80daf13b63ae8785f1f440148cdf15c5  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc
! 8859f372a24bf4ce2479196a7499052e  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/dr1261.cc
! d3fd1ec73d52527ac28bee1469699f7f  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/errno.cc
! 95b411340487c32fc96735b734091693  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc
! 025ef73b47b5adb96b0f5dcf0b7a20d3  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc
! b5bd3094898f1e0f0c11ad88cac22cae  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc
! 10df81f22033906bc973a458f8cca838  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc
! 2fe447030fef5874f894e7fa773daf75  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc
! 5bf8c93f0547bb76345d4b9e862c4444  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc
! 804e59d0044a7a1656496b0adbe0d88d  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc
! f039b272a49df75264c60715d734137c  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc
! a7c5101a92768dede676d594c4d4789f  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string.cc
! 5eed4ab04eea8315afb85c217b314fb4  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_int.cc
! 41dd161ea4d6afcb76fcedb4c6464daa  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/dr1261.cc
! 958674b7737dd811e12761e6a90279ad  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc
! 07423a87c58ee69aeb6c9938a6b3b9d2  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc
! 6cecc40ce9e07cb24d638aa148cfb000  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc
! cea49adae6bbd7e7332eb9d2a25297ef  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc
! 8328185b2ee6648000770f567ec4614e  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc
! 26c94fcfa9a9b63dc89f4f6b8b127166  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc
! 5040509bbbda5967e29d26abfe54fd4c  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc
! 3b62d22cee141351edeb0a691ad7be35  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc
! a2c48449342796505f7d846c19638dea  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc
! 8e78daca695181b2911b12eb9c546ff7  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/1.cc
! e80bbcdb6593f7927b634d034ccbadd2  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/13650.cc
! 36a91bf97a300b3103ed68df11f87bb7  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/2.cc
! 62314438608e78fb7daa48b023e247ca  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc
! 4a66353b43f577713e91af002de12f8e  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/13650.cc
! 9662d95c13692fa1e016541550b0f453  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc
  da3f700a53d22cd029a604673e059e11  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/1.cc
! 9c862000398e6a89b8c4cc17fe666c2c  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/2.cc
  629c4fb49dd0d4a29803e1c5176619c1  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/86169.cc
  ca74682c72cb547cf309e380caad822d  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t/1.cc
! 896589bdc779441eea34071f745eaa6f  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc
! f07b8fa29d1465cf230e17718f313849  libstdc++-v3/testsuite/21_strings/basic_string/operations/ends_with/char/1.cc
! 0d9a5ce9e3abcde3389f59f1b058a654  libstdc++-v3/testsuite/21_strings/basic_string/operations/ends_with/wchar_t/1.cc
! 4b65ef6e10b20e0dedda48b27b33f829  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/1.cc
! b8afd256fd77b7faadc021c2ade70789  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/2.cc
! 33676ddcfe73066ac0e4b2a992e17e30  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/3.cc
! 826deaf0599475790285c3422acb6bbf  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/4.cc
! d35d3a9be68687779ed7c10fec222792  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/5.cc
! f29cb9b405a0229be9a458e8729b01a1  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/6.cc
! f0f0afddf38f2f5decc2df5d3a266921  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/1.cc
! 583c52aa75d34e98ed62638825e969f0  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/2.cc
! 874b4e514620fe55552e4b9fb77adb9d  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/3.cc
! ddf374eb3c25e457f5e37b503c775e40  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/4.cc
! d184543f20f22dc758ae14f2f9c7c679  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc
! 8aacf6c6fbcf086c93ccc5944ec5106d  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/6.cc
! 0ad148c4a156e5db640f4505b8f63688  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/1.cc
! 9a02c84ec6747c58c593a6209544377e  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/2.cc
! 35b9fa38c37a4273894942149e8594a6  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/3.cc
! 7112b7efc36d44f60a6477970da981e1  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/1.cc
! 2082898823f6defd1cbaea13501aab78  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/2.cc
! 8399b596d90e47bc8e5ed3a6f3b78215  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/3.cc
! 1681c7fd6089f193607e8bc1af9cba19  libstdc++-v3/testsuite/21_strings/basic_string/operations/starts_with/char/1.cc
! 7d4dcb3f99fc59e577017ed12696cdf4  libstdc++-v3/testsuite/21_strings/basic_string/operations/starts_with/wchar_t/1.cc
! 61bf0232921fda40cd62dc9274ddeb1c  libstdc++-v3/testsuite/21_strings/basic_string/operations/substr/char/1.cc
! b645f3f19be4bcd83c32aa484d53025e  libstdc++-v3/testsuite/21_strings/basic_string/operations/substr/wchar_t/1.cc
! e510231176fea3b7b87f058b0bec8d21  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/1.cc
! bce8c834cd20b46118410892b2a63015  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/2.cc
! f6907245c98dc10e4ae7696bbec35c16  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/3.cc
! d0864bd68f1582569c7bb0c2c274185c  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/4.cc
! 3dce8e5471747d338063bbb75370dc5f  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/5.cc
! cf061ffe5a19f0df5c86488461522f7e  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/65630.cc
! 87dc3624ae14711e04da728ce41d9794  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc
! c94f4e49a1ef59c08217a98e71529d0f  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/1.cc
! 8ad1ebea6939e547a708aa0a04e3b27a  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/2.cc
! 48c1db47a43680b41c4d9f5f19d9f1c4  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/3.cc
! 89c551813aca1794c8ac5fa288d3c35c  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/4.cc
! aebfc462f74fed0082197109bff6be88  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/5.cc
! 33d3721ab87abe4944b2329017984fcb  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/65630.cc
! 19add164de198deb01223678d1c49b49  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc
! 3f1510634d112ce56748f77a1180f95d  libstdc++-v3/testsuite/21_strings/basic_string/pthread18185.cc
! 3b33aa35b0b693ee1749daaf9bee027d  libstdc++-v3/testsuite/21_strings/basic_string/pthread33394.cc
! 66061d1af4d29de220ac7cdc41c1750e  libstdc++-v3/testsuite/21_strings/basic_string/pthread4.cc
! 0a5eb6f2a3e6f734d966ff7293d451dc  libstdc++-v3/testsuite/21_strings/basic_string/range_access/char/1.cc
! bdadfb01fecd4e6fffca0d63f4b943d9  libstdc++-v3/testsuite/21_strings/basic_string/range_access/wchar_t/1.cc
! 4e537da555b626d14e20fd700b43b92d  libstdc++-v3/testsuite/21_strings/basic_string/requirements/citerators.cc
! e31d25e9ef44367db61f48849066fbf2  libstdc++-v3/testsuite/21_strings/basic_string/requirements/dr438/constructor.cc
! e75dee2475d35e89aa6e1e9a89b08ea2  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/basic.cc
! b044ee1ab21bf4496f25cefd32315732  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/generation_prohibited.cc
! c5009bf5471c195586f819abe601d9d3  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/propagation_consistent.cc
! de61493f6bf6cfc8aa9e8750688555bb  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/1.cc
! f80a5cd27b344a00ac067dd9ac3d15b7  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char/1.cc
! 4e680a1ce275eaa02f68b6d2aa7d0b24  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char16_t/1.cc
! e85e0b77e3b1caf3780c9916df6130d8  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char32_t/1.cc
! ea755119ba90f864d06765399c9c4467  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char8_t/1.cc
! 7717a4295437ed5192df03756ab85af4  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/debug.cc
! 60c8354c4986fe912e4c4a0acd15e698  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/wchar_t/1.cc
! 3f764f62ac4fc0152993cd38f1d71e73  libstdc++-v3/testsuite/21_strings/basic_string/requirements/typedefs.cc
! 59d0838e04c8f5ea4913bb8b15ba651f  libstdc++-v3/testsuite/21_strings/basic_string/types/1.cc
! a3e1a578660eda849f18e4892a2b895a  libstdc++-v3/testsuite/21_strings/basic_string/types/23767.cc
! 166806f348b1d8b0fb1f365659050009  libstdc++-v3/testsuite/21_strings/basic_string/types/pmr_typedefs.cc
! c1d4d39704cba59e36019c4ddb05d95d  libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/1.cc
! 87210fe5f02bff52664d87280ca366a6  libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/empty_neg.cc
! fd284ced63fd89487a8fd92ff986a24f  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/1.cc
! 67d6894be6dcd9a735a451b3fe7b9e17  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/2.cc
! 41dd688383ad9f2e3218f8926746b07b  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/3.cc
! 37ba41e2a6d55d8ec93c47f2ac65958a  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/nonnull.cc
! caae673a93e23e320b19e2f4473e5b9c  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/range.cc
! fdd65953700e57b34ca1e72f80a24b49  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc
! 017a61fc143869aca543f33ca2e0b896  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc
! d014e9e009a969a8f733f0d82e75e4d2  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc
! fa9492d30d70759095ad2cb60194e32d  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc
! 7c425f08d795ffeb7ffa4f5c98516dd5  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/1.cc
! c352204ff45fadfc812f6a14284edba7  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/2.cc
! 7a30ea357ada2434c60086df5e7fc833  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/empty.cc
! 8f956ccabe6b7e83e0549e0f975f6737  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/front_back.cc
! ea31e926eada9001c9e57452cf593aa5  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc
! 559e1ec99cbc94f0f16ffabad68cf292  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc
! 0c830868f8c4553a086e7fb62947dca3  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc
! e789d246232fffc87fe0771d5e7dbe1c  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc
! 0615a46e68c13a82b2301d8c3096d762  libstdc++-v3/testsuite/21_strings/basic_string_view/include.cc
! c8c1da71154fc1777b8e711223a1983a  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/94051.cc
! 066ccbbca53dafd0a7b43ec61bb3826e  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/1.cc
! 6f282571419568d90009973289a0f3d2  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/2.cc
! 4cf028a1349e60f9c1379fc7fafe2a62  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/3.cc
! ae3ca1e3b8811ecd7031c2e8f8a9f0c3  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc
! 646cd6e107a09810094f693595e75189  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc
! ca18882d77f4afda490ee3112c5b08be  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc
! 9a679b3b8466ebf0d6571264da2a7e3f  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc
! 51a0ddcd665b7a21f8b39eb8a7cba8a5  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/types-char8_t.cc
! 0909813699ff020ffe39027efd13a652  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/types.cc
! 344514961877b87ce6108b9989e5a349  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/values-char8_t.cc
! 1e61b3b44cc49d5d913c85b490d73b66  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/values.cc
! 90d603fc208fbd1b320979b16abba914  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc
! cfcb63fe3f671720a2d18da3efadc6fd  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc
! 5e15a46dd097b2baad077a1e57cfbeb6  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc
! d3f5316ec380d840bece38db776e8996  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc
! 305e327cb81236d90c0cd16819d6d589  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc
! 067f61bf596cb8fcbece321855c0c39a  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc
! 84ca2b4b56690c8a0df4f56c14f7a696  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/1.cc
! 67e96e8e26bdd5dedbbd42ab7234839d  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc
! 529996ce0841d2f22c7f49124c7e0979  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/2.cc
! ef56a1469d30d87bd88548849e747965  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc
! 4c1c72e9f3acb17377652d3a3334597f  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc
! 0ca9fc4eee737bf8a13402a04b3bc8ac  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc
! d6538ea6385e7dd4a6ab240a2ecac922  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc
! ace5c937694842cefe6072424387859a  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc
! 1b5c6de2945afeca48c7b822977da518  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/1.cc
! 16ceba2c37a3889be107f9bfe823957a  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/2.cc
! f54a24bb33589161cdad7c2ea6ecb81c  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc
! 63eb0c19f5cd64545853cb614116564c  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc
! 97716e48c2c1be0962d6fe6ecd92bc53  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/2.cc
! 699938f656ae2337f25e6a2803a209cb  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/constexpr.cc
! b178593999d92cbe5e29f11ccb26422c  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/char/1.cc
! 0dab42efa58d63a01667ea2a23b61401  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc
! 778a244165ee07710c74d7a0ffe566c5  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/ends_with/char/1.cc
! 7b4945cd9c40c2e0b6f8804ebfeed668  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/ends_with/wchar_t/1.cc
! 1b15579c8f7c056b7aa7ca528f2ef7f1  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/1.cc
! ffeed15a60e561aa1bc112cf89d652c5  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/2.cc
! cd5696d3faf8d67ab8da52825c7f0b4e  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/3.cc
! 9e6ca2051f7a8c2dc9382d88690b0536  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/4.cc
! 8430d26ed393e87c678e5381ed6f157b  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc
! 72da3a64fec0fc919263d145f4c00646  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc
! 05ab003d927b10736ac65352e54611fc  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc
! 231752c8eb816565de95c8503770048c  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc
! a5c8e967c1b490c2ad62eb57ecbf5bd1  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc
! 688fb0c8e6da5c1412bcd51b17f60e0d  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc
! e49cf7f2f6e2fda62149ac20227ab1f3  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc
! a3e8fe32af2a6c80fcc002b288fcb60b  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc
! 829b2dfb2412b867e8f8682c3265ed84  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc
! 2415c5446f77b4168ab7f1c97043c074  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc
! 6c2aedc48350f1ee30b51468789093cf  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc
! 53deaccdfd282b3914c13f231fa80843  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc
! e81340424b8b437f49e7267533f7364e  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/starts_with/char/1.cc
! ad88ea5a0701aa728419abdb35b2db89  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/starts_with/wchar_t/1.cc
! 70492cca76a82e735e3aab64bf05ad30  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc
! 2da044bec5b7f00c8648845e425e4a44  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/char/1.cc
! dba3460deb1d561d92acdb1d6e0fe15a  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/char/83511.cc
! 8b708c027babea8cbe983355f7eb55ba  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc
! 873a6ad67971846dcbdd61cc741ae77b  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t/83511.cc
! d8a24a2cebb02b3bbe3a8e6ef78fc7e9  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/2.cc
! de007caa49899414b85dbb6adae09e49  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc
! cc6950a09717f908fe3babcb5db7b728  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc
! 6885e076ee81ac0974bbe968833c51d3  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc
! c472b549574aed7044f27ee83bbeeb96  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc
! 36ca3e38d718b022726fb7bf8f5a8e27  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc
! ce69009106a445a659a7ff6a7715adc0  libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char/1.cc
! 1905f8fe1df7dd4c24b182bd4958248e  libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc
! 2ebf2d87c68fdc1824000a398cf022dd  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/constexpr_iter.cc
! 101c4f0d3131ef9d1510d64cbce948ef  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc
! 90d9a6b717b6ea1dd1a745ba28d9dcb3  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc
! 23836ba5b2ffd6a35fbc6d70e45363aa  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc
! 1d7d99e3216d29f2001fce984b46ba22  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc
! 0402e6bff183d3fef4c002fa13910e33  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t/1.cc
! 60683e7c98be307d8428a5e3bec0b8c5  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc
! bd20cd99185f4830039d5b660b7eb44e  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/traits_neg.cc
! 3eb6d4c15092255482feec49a8b42d3b  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/typedefs.cc
! 7971a7124069d15af83339a75c311151  libstdc++-v3/testsuite/21_strings/basic_string_view/typedefs.cc
! e615fb67e3d88e99f516b71c34bdd7ca  libstdc++-v3/testsuite/21_strings/basic_string_view/types/1.cc
! b0f4e2b68a0eaba5376952c6d3f1a3a0  libstdc++-v3/testsuite/21_strings/c_strings/char/1.cc
! 418649b7bbe35d0cdc89269d679b22fa  libstdc++-v3/testsuite/21_strings/c_strings/char/2.cc
! 3b87899c393c54cc120fbf53519fefe8  libstdc++-v3/testsuite/21_strings/c_strings/char/3_neg.cc
! 8e814afd3b9ea745bc8afcfc34b2b657  libstdc++-v3/testsuite/21_strings/c_strings/char/69626.cc
! 405b4c1791baf9aa655572273aae686d  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/1.cc
! f06f451a7bb3edee5486e747fbaa2904  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/2.cc
! fdf2245a4c16a619ac43126000a74390  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/24559.cc
! 72b0e90c06f1dd1c2b0ed33c000dd6b3  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/3_neg.cc
! 04fcafbdc5954414ed41ad4504982c9b  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/1.cc
! 4f9cedb5d00367192ccedb50fe6a2bd5  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/57704.cc
! 52e3da6e71833543f458ecc360f793ed  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/65049.cc
  5576204856dce289918761309e8b6366  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/99181.cc
! 674b890252e6450b77d4393f2a4e0fa1  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/typedefs.cc
! 1fe0f4091086e3bbdb53ef064b49c669  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/65049.cc
! 9b4a8ad5d5339b4f6ca2905502ebab8b  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/eof.cc
! 03407e1a4e99abcd82df149025c8500d  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/typedefs.cc
! 0b2a94351dbab08a8cac8d75151fa408  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char32_t/65049.cc
! 82418a34f2c2d7d31bee8d5a7a4ae0fb  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char32_t/typedefs.cc
! 185b2a91b2c8cc7f1780168d88bd88e6  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char8_t/65049.cc
! 925deb64d89008c17a645512575cd6af  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char8_t/typedefs.cc
! ca9bf969377bd19f1fa568790aed6288  libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions.cc
! c7c6616f4db18a2553c2ac8ff3a51904  libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc
! a681997789fef6cddd5dda0288af0234  libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc
! 0048d07d26f4d5b1bffe87cb6d249161  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char/1.cc
! 014bc70fa5e794eaf8a491b82ffa1fea  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char16_t/1.cc
! 70b0a846ccdc6ca487e4df1636d55bea  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char32_t/1.cc
! f70f2f5183b125fb9ed018a723aa3a81  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char8_t/1.cc
! b0903b3fb565de884fb64774242e6397  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/short/1.cc
! 30b4223c8d98a558700056b81ee934b7  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/wchar_t/1.cc
! 0d66815781051645a32a463ad9ed907a  libstdc++-v3/testsuite/21_strings/char_traits/requirements/short/1.cc
! 5b4610ad13fa662d8f977be2f3405ec6  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/1.cc
! 27a6866c884910e46aef7d3e0dad3c04  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/65049.cc
! 558ed86932d22302ad7d9d8fea9d264e  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/typedefs.cc
! 950495a4b70cf33daf597695b6b0237c  libstdc++-v3/testsuite/21_strings/debug/iterator_self_move_assign_neg.cc
! 6deeada2583146e39f57f25899736f05  libstdc++-v3/testsuite/21_strings/debug/self_move_assign_neg.cc
! 410ef47cfb16bdab44ffac7a23eec4ac  libstdc++-v3/testsuite/21_strings/debug/shrink_to_fit.cc
! ead03b2ebfc1bc196dc50366ba61c234  libstdc++-v3/testsuite/21_strings/headers/cctype/functions_std.cc
! 8a0d6f9f7fb22bffdfe4be6224cd6288  libstdc++-v3/testsuite/21_strings/headers/cstdlib/functions_std.cc
! 4ac2de43e2f69546c8217c2bc885d064  libstdc++-v3/testsuite/21_strings/headers/cstdlib/macros.cc
! 102eb37623b64ce04ff72574665656a4  libstdc++-v3/testsuite/21_strings/headers/cstring/functions_std.cc
! 4ac2de43e2f69546c8217c2bc885d064  libstdc++-v3/testsuite/21_strings/headers/cstring/macros.cc
! 1f7b2105906d0d0de75ccb0fac245be3  libstdc++-v3/testsuite/21_strings/headers/cstring/types_std.cc
! e8fb0ca878f274065005f884366aad15  libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc
! b7e20c8ee482859b8ed791bd40539ea5  libstdc++-v3/testsuite/21_strings/headers/cwchar/macros.cc
! 01ab8395dc4c9bb05d29aa7971bd5348  libstdc++-v3/testsuite/21_strings/headers/cwchar/types_std.cc
! 56e13e94727d529bcf127caa72fe7299  libstdc++-v3/testsuite/21_strings/headers/cwctype/functions_std.cc
! 1470b47cf48e8a9f1d2507b74bd8dc60  libstdc++-v3/testsuite/21_strings/headers/cwctype/macros.cc
! eba27963a50060aa997503726d2a2ce3  libstdc++-v3/testsuite/21_strings/headers/cwctype/types_std.cc
! d7b746ac095664b8739f5f7ea572f712  libstdc++-v3/testsuite/21_strings/headers/string/synopsis.cc
! 1ba8ef9a9faf976f509945cc38f666cd  libstdc++-v3/testsuite/21_strings/headers/string/types_std.cc
! 4c559e1e6209184ea78bee9ba7abe45e  libstdc++-v3/testsuite/21_strings/headers/string/types_std_c++0x.cc
! e07b665b53a4dfc40677bc65bbda48a3  libstdc++-v3/testsuite/22_locale/classification/isblank.cc
! 285b219eaffbbc317730cdd025b0d321  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/1.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/wrapped_locale.cc
! 925fdd5c917a8512715ab7302a5ff2c8  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/1.cc
! 198f1edc86e0a5dcd165352868294b25  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc
! fbd6678a2ae5a0a97a2f17bf786ec988  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc
! d3c39b17ee9125471dc3e884406fb3f1  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_locale.cc
! e48c1e3a8131212952cf789e2bb68d38  libstdc++-v3/testsuite/22_locale/codecvt/char16_t-char8_t.cc
! 6053c43ea7ab0f556d50015edef2ece3  libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc
! e2e0e8bcf258784dbfd7878463627ef1  libstdc++-v3/testsuite/22_locale/codecvt/char32_t-char8_t.cc
! f6875c7cffe1078d4eff1255720ee85b  libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc
! 4d033cdb082968705456c7b0ed88bbbe  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/66417.cc
! 5adf66301a84575b8f6048b6d64732cb  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc
! 78be2e80446f59a55ea50e8cdf6f7b23  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.cc
! 690da118d6fc9fe20135aaae031cb80d  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
! 28b11ec0fd2c731c029377f202da0c37  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
! 665c03f973e0dde13280f6b124f26bec  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc
! a357c53ca82f456c530792b11cdf11d2  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/69703.cc
! 409644a95de0f6082c50175316e14ace  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
! 530ede72935063d6cd93a5dfcdd2475a  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc
! 43642bb1988dad3a04db89a3dbd68946  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc
! 16ece40ae045c2a79b3615a73658b0fd  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc
! e6e89604af0d120390ec0bf095e6face  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/66855.cc
! a9bd3866f8ddffa38a7a74d8ee8f760d  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
! c26a561b8109460701a5d1cfa777e4c6  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc
! 0abd7040da10a6294277587c98a8c33e  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc
! 9e00ecd91b9260b99b96cef1ab5a7236  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/1.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/wrapped_locale.cc
! 0b70307decabc66fd8c17fb02a62b70f  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/1.cc
! a76622c0eb718b21a3cbbb2da831f911  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/2.cc
! c322bdbfab3f98dd6391cbb8110827ad  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/3.cc
! be005c873bb80cd6efd44793a3c3a68b  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/4.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/wrapped_locale.cc
! 44b44d81ebc7b2cfac0a1b2eac69344e  libstdc++-v3/testsuite/22_locale/codecvt/in/char/1.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/codecvt/in/char/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/codecvt/in/char/wrapped_locale.cc
! 5adea9b0bd861ddbd54e82341131e4c9  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/1.cc
! 597deee72dd7fdc5254c2185597537ad  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/2.cc
! 1eac6abcb9571c737172add8e8ab8fbf  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/3.cc
! 2769eb098c5f799ab39bdd3d40a30af3  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/4.cc
! 8441f13f2fabf8b34d52d18496d2930a  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/5.cc
! 3a92c21e3e2108268568f07eda36e6c6  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/6.cc
! 0d4b2982555c71073a49ba4975162801  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/7.cc
! 8544eaf06e56f1cc67e6b9588db0f0e6  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/8.cc
! e6fee973d4e1848c1f8f19e80a88b8b3  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/9.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/wrapped_locale.cc
! b7b62762907ac75dc53f848766d63086  libstdc++-v3/testsuite/22_locale/codecvt/length/char/1.cc
! bfe2bcf9289c076e0f20c74857a4f6a2  libstdc++-v3/testsuite/22_locale/codecvt/length/char/2.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/codecvt/length/char/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/codecvt/length/char/wrapped_locale.cc
! a1980121777b8b8565220e3d4055b38c  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/1.cc
! c8d1add9322833c9ab3f159b17e61efa  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/2.cc
! 1d013359e8617ff9b71cea1c33b9ed4b  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/3.cc
! 2d15b49627b90f8b11e6316e4729272d  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/4.cc
! 470335b6e3bf157200d27bacbbe8dd7b  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/5.cc
! 6ccf913680492efd772d37de4984bdcb  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/6.cc
! 65ba49bd4fc88fe535956e46f8b3e229  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/7.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/wrapped_locale.cc
! 44aa6f730432d57a4a6f624777cab040  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/1.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/wrapped_locale.cc
! 7d4cc216ec5afcb104005663f6dda42b  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/1.cc
! 0ae66f6df4ca6d226d6d649bdc87088b  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/2.cc
! 4d49c02e4dcae4e8e71ffeb8bdd60d65  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/3.cc
! 607e74bf56ebbf35f816078489f21cf4  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/4.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/wrapped_locale.cc
! 10b350abbfc5f3be789e20d55be777bb  libstdc++-v3/testsuite/22_locale/codecvt/out/char/1.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/codecvt/out/char/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/codecvt/out/char/wrapped_locale.cc
! 88ef3b720ad8240d8a59e21a00887487  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/1.cc
! 05a83970e476a64e453d81b942486292  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/2.cc
! ae6b3bda80ea972a7e9716088b087ac5  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/3.cc
! 455758ffdc2da11f2c2b892d2c20c052  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/4.cc
! 681d561ad5c43f4dea51156d4668fe61  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/5.cc
! b6d00fd5bb517bad349ec3420dcf0286  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/6.cc
! 3ae112d50c5f34ee9c7798d6f0cee3ce  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/7.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/wrapped_locale.cc
! a6fd87644814d1b5846971d308430c93  libstdc++-v3/testsuite/22_locale/codecvt/requirements/base_classes.cc
! 65ecd3fc399025537248e4979aba26ff  libstdc++-v3/testsuite/22_locale/codecvt/requirements/explicit_instantiation.cc
! 3e4bb4683fb5d1f60093e5ace66a335e  libstdc++-v3/testsuite/22_locale/codecvt/requirements/typedefs.cc
! f7c49d510605cf0c3dacb546c460c367  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/1.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/wrapped_locale.cc
! 93e4fe2760e5655c25a20f0fdb51ab0a  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/1.cc
! 0aa6e7fd0bd26d1fc1e4f4599f89eaf9  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/2.cc
! 8b7c3cf6a11552533875cf354896dd31  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/3.cc
! 6cda7ffeb982b32900638c85bc4d5428  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/4.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/wrapped_locale.cc
! 9e3e58da275afa8f4b9aa8cbe54f5279  libstdc++-v3/testsuite/22_locale/codecvt/utf8-char8_t.cc
! 97b986c627248df145e47da40d99af01  libstdc++-v3/testsuite/22_locale/codecvt/utf8.cc
! dc3147b64cf3406ef24e84c99f1a2403  libstdc++-v3/testsuite/22_locale/codecvt_byname/1.cc
! c16017d1bd0937f6e41872af84777957  libstdc++-v3/testsuite/22_locale/codecvt_byname/50714.cc
! 3a0bc752a886b24b6d31214b60efdf4c  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/base_classes.cc
! 1c818023e3b04279de7381bc7c4b2af2  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/explicit_instantiation.cc
! 2d1bd8605f549c3b32b9acd24cffbca4  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/typedefs.cc
! a21b75a997cb2bddfa1da2050a9c4669  libstdc++-v3/testsuite/22_locale/collate/compare/char/1.cc
! 686cb920e13321ee5bc479bf241fecef  libstdc++-v3/testsuite/22_locale/collate/compare/char/2.cc
! 677779979a254268644f42e1088a01f3  libstdc++-v3/testsuite/22_locale/collate/compare/char/3.cc
! 51aee93b112738d201ec1267f92bebfe  libstdc++-v3/testsuite/22_locale/collate/compare/char/wrapped_env.cc
! 4efa6f33dd0b9d8875f187c1e8ac13d4  libstdc++-v3/testsuite/22_locale/collate/compare/char/wrapped_locale.cc
! d4e3b5d34a8965df0848063a816c760e  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/1.cc
! 02e9908393127ff3b7a02a6a988b4497  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/2.cc
! 39c0ab3242bbdb4eb21f324350c7df7d  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/3.cc
! 93fa9ac87f659bdd021b3f2711a2d802  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc
! e97a6835855f671bbb1a07f630e0750f  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc
! 4f348812fd856fbf7ce2ca5ec22213c6  libstdc++-v3/testsuite/22_locale/collate/hash/char/1.cc
! d4f4679ea269e8019a7a91651df843c9  libstdc++-v3/testsuite/22_locale/collate/hash/char/2.cc
! 8618af1800a808aacf5af083d3331e91  libstdc++-v3/testsuite/22_locale/collate/hash/char/wrapped_env.cc
! 41fda01ba46d47124b1adfd722aae608  libstdc++-v3/testsuite/22_locale/collate/hash/char/wrapped_locale.cc
! 690be6706bfbc2f02595e3d9a3a82b4e  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/1.cc
! be45af8ab8d7f615e2776d1b0e035cb9  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/2.cc
! 93fa9ac87f659bdd021b3f2711a2d802  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc
! e97a6835855f671bbb1a07f630e0750f  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc
! 154ba8de3f422ca0027eb2f012741c48  libstdc++-v3/testsuite/22_locale/collate/requirements/base_classes.cc
! ef66b7f66106e9db9c8912c34922516f  libstdc++-v3/testsuite/22_locale/collate/requirements/explicit_instantiation.cc
! 86c68bcf651e981eb8db005c713974e4  libstdc++-v3/testsuite/22_locale/collate/requirements/typedefs.cc
! 191b0bb61df79d77f5682c1f59bb29de  libstdc++-v3/testsuite/22_locale/collate/transform/char/2.cc
! 8a81e6011d482b8d7a3d8f55875b0f5e  libstdc++-v3/testsuite/22_locale/collate/transform/char/28277.cc
! c563588ec05707f5d55b00f52f56041d  libstdc++-v3/testsuite/22_locale/collate/transform/char/3.cc
! f0de3b9a74d0416dc7064b3ade4cd1c0  libstdc++-v3/testsuite/22_locale/collate/transform/char/wrapped_env.cc
! 04edddd3d0aa9a48d02e1c50a48fa5da  libstdc++-v3/testsuite/22_locale/collate/transform/char/wrapped_locale.cc
! b313c13eb4dae39d3c37a1d20c9d2e87  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/2.cc
! 2cea8b0c5cc9e96fd752a22bbcd80708  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/28277.cc
! a53577f0247b98323a2466be0be5eee9  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/3.cc
! e9ac5920b8a18ab586d47b89c374be3a  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc
! afb44a59576ffc8736eee1695318e9ac  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc
! 7452770d36408d3043517eb321b7e4a9  libstdc++-v3/testsuite/22_locale/collate_byname/1.cc
! b877015f652eb51961df81dbd0e1ed35  libstdc++-v3/testsuite/22_locale/collate_byname/88681.cc
! 7a02f96f2704d94a47efe8f0b1b2b1f5  libstdc++-v3/testsuite/22_locale/collate_byname/named_equivalence.cc
! bca3e2b5325d7c48fe9fa6a49343475c  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/base_classes.cc
! a08391ae1f968750e2419ceff25f7474  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/explicit_instantiation.cc
! 4f73728d63efc596cdcbdd012fb60875  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/typedefs.cc
! a5ac6ca01fc455f63b2e9d557ea27817  libstdc++-v3/testsuite/22_locale/conversions/buffer/1.cc
! a88b41e148dab0a0fc8ee9759eff0a59  libstdc++-v3/testsuite/22_locale/conversions/buffer/2.cc
! edbe836a9467ea311f5aed4fea7d9ed0  libstdc++-v3/testsuite/22_locale/conversions/buffer/3.cc
! 47f0356381021002bcc1651fa7897fdb  libstdc++-v3/testsuite/22_locale/conversions/buffer/requirements/typedefs.cc
! 81e431e1d02d3a3787c3c35c4dd25b3e  libstdc++-v3/testsuite/22_locale/conversions/string/1.cc
! a405346fa2a43aa06206e4de29a2d550  libstdc++-v3/testsuite/22_locale/conversions/string/2.cc
! 356bb393450110e6f8151d1b45ce6dc6  libstdc++-v3/testsuite/22_locale/conversions/string/3.cc
! 02f5deb9dca9fe966bc98a9ae7169c46  libstdc++-v3/testsuite/22_locale/conversions/string/66441.cc
! 80414fc160561d465a924105abdfa010  libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs-2.cc
! 9c1113aa1dfdf537e31c1b327c69e373  libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs.cc
! 89759ae71f4dd7659435024b70a5dcb5  libstdc++-v3/testsuite/22_locale/ctype/2.cc
! 27c4979ade48505bba3304bfd9881f80  libstdc++-v3/testsuite/22_locale/ctype/cons/char/1.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/ctype/cons/char/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/ctype/cons/char/wrapped_locale.cc
! f100f3070752e22fcbd2a07e2b279b38  libstdc++-v3/testsuite/22_locale/ctype/dr695.cc
! 0a61d9b449451108b9baa5e9b7ccd3e0  libstdc++-v3/testsuite/22_locale/ctype/is/char/1.cc
! 068cf9f254a9a18b1dfb1ac20ae43652  libstdc++-v3/testsuite/22_locale/ctype/is/char/2.cc
! 75b80123797612c110fe39ec88fa2a41  libstdc++-v3/testsuite/22_locale/ctype/is/char/3.cc
! ff8f48857756b940a02f86d8b2130bfe  libstdc++-v3/testsuite/22_locale/ctype/is/char/9858.cc
! 5d4aee0279fcc6499c96304ced412f2d  libstdc++-v3/testsuite/22_locale/ctype/is/char/wrapped_env.cc
! 4586c173ceab1776dfd2d8878d328cf5  libstdc++-v3/testsuite/22_locale/ctype/is/char/wrapped_locale.cc
! d284c44af73c4607fb6f7923a8ecfeea  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/1.cc
! 9fa8ceaf1ad2620693a973ab3b81e34d  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/11740.cc
! 250c03be490c2cf392210c82d266b7bc  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/2.cc
! 39a28048a4b4c6022768deb861f77e83  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/wrapped_env.cc
! 36a92682341f98d375fdf391f8d2659f  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/wrapped_locale.cc
! 5f1a9c66f9b153fcd7dd05359d4b4847  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/1.cc
! 3829ea500abd737d76a7fc94e2337939  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/19955.cc
! 4ab4f3962701b15567d1867f3ec1334b  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/2.cc
! 39a28048a4b4c6022768deb861f77e83  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/wrapped_env.cc
! 8496fa67f65a42663c7dac4935498df2  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/wrapped_locale.cc
! 11a607a8853fba451108d4b3fa11abf3  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/1.cc
! 5572a243cea152da4d9427b1f337f52d  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/2.cc
! 822a3de381f15df0ef2f7733f0cc1cde  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/3.cc
! 39a28048a4b4c6022768deb861f77e83  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/wrapped_env.cc
! 8496fa67f65a42663c7dac4935498df2  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/wrapped_locale.cc
! 0414b3d637c0f4e351729884ba8ff019  libstdc++-v3/testsuite/22_locale/ctype/requirements/base_classes.cc
! 8052a65d06f8306e0c3e4d53271eb8e7  libstdc++-v3/testsuite/22_locale/ctype/requirements/explicit_instantiation.cc
! e626c30d2fd208cdcc63612bb15551cf  libstdc++-v3/testsuite/22_locale/ctype/requirements/typedefs.cc
! 6a79418d9b28b81cf77abd0da37f5602  libstdc++-v3/testsuite/22_locale/ctype/scan/char/1.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/ctype/scan/char/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/ctype/scan/char/wrapped_locale.cc
! 2a8d782e181ff62ef9965aa18e492c7a  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/1.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/wrapped_locale.cc
! 9b9504cabc0d754d9d3f919e99b7c6f3  libstdc++-v3/testsuite/22_locale/ctype/to/char/1.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/ctype/to/char/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/ctype/to/char/wrapped_locale.cc
! f7e6ec52e33caa0d92169c024fea8838  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/1.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/wrapped_locale.cc
! 8e73516f96ed7f595dd64615901d3a1d  libstdc++-v3/testsuite/22_locale/ctype/widen/char/1.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/ctype/widen/char/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/ctype/widen/char/wrapped_locale.cc
! 9273e13cf6a26a3d79af366a8df8459a  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/1.cc
! 8a189de0ab49b5f466585a58794e22ad  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/2.cc
! 45ef3e18824a4089772b16f031a9effa  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/3.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/wrapped_locale.cc
! c13979fece9e54384e13c2ad31191714  libstdc++-v3/testsuite/22_locale/ctype_base/11844.cc
! a9f38a73101f7c6d5d4329bf08ee8ca8  libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc
! 17f4143047b87a01b7b0a56c54d2f35f  libstdc++-v3/testsuite/22_locale/ctype_base/blank.cc
! 7bc45b04fd717f572bce86f1fa901ee3  libstdc++-v3/testsuite/22_locale/ctype_base/mask.cc
! de7cdce7c0e001af0d167dd5b3477692  libstdc++-v3/testsuite/22_locale/ctype_byname/1.cc
! af673929c88761c739ba34bc2a801c10  libstdc++-v3/testsuite/22_locale/ctype_byname/2.cc
! 7bbde119e2f142fdab64c110e965397b  libstdc++-v3/testsuite/22_locale/facet/1.cc
! 1104aed73f1ba04519ace5b7f189ed7b  libstdc++-v3/testsuite/22_locale/facet/2.cc
! 17eb35d1d5a83d9350d4990181332394  libstdc++-v3/testsuite/22_locale/facet/25421.cc
! 870f61f6535ba7743811655e821032ec  libstdc++-v3/testsuite/22_locale/global_templates/1.cc
! 5da67e4dc5a49187e3fb2e45f152ef87  libstdc++-v3/testsuite/22_locale/global_templates/standard_facet_hierarchies.cc
! 65a0df42f1bcc0774b286e1d488eb68a  libstdc++-v3/testsuite/22_locale/global_templates/user_facet_hierarchies.cc
! d8105f1d825f15b2ba74c789a7ffcada  libstdc++-v3/testsuite/22_locale/headers/clocale/functions_std.cc
! fd3b48f3337394f0f0df8174e51edfc6  libstdc++-v3/testsuite/22_locale/headers/clocale/macros.cc
! 4b2572179f89fa4e047ee13a8ee8c89d  libstdc++-v3/testsuite/22_locale/headers/clocale/types_std.cc
! 887ca61ad7c7e96e1f7c7105dca8dda4  libstdc++-v3/testsuite/22_locale/headers/locale/synopsis.cc
! 23b9d4048e7ee362168605db567a6c12  libstdc++-v3/testsuite/22_locale/headers/locale/types_std.cc
! 46527c3de26a9e8e39dcab3509be981e  libstdc++-v3/testsuite/22_locale/locale/13630.cc
! 2a11ec79b1d7093462b54a62a047260d  libstdc++-v3/testsuite/22_locale/locale/cons/1.cc
! fc894c3f76107e18bf5e232d4036a069  libstdc++-v3/testsuite/22_locale/locale/cons/12352.cc
! 6cbc73ba2dab8603d929e51a6dad2f7c  libstdc++-v3/testsuite/22_locale/locale/cons/12438.cc
! f80b092e07198a5260ffb995a9b91173  libstdc++-v3/testsuite/22_locale/locale/cons/12658_thread-1.cc
! 7ddd79707c7d7960d55da7a75cb6ad74  libstdc++-v3/testsuite/22_locale/locale/cons/12658_thread-2.cc
! 4844204d7ba922aa345011e891a89664  libstdc++-v3/testsuite/22_locale/locale/cons/2.cc
! 152c3ddfc096b77d8eeaef3a08ff1ace  libstdc++-v3/testsuite/22_locale/locale/cons/29217.cc
! 030a6fc2a159d81b333e6f36ad8bc861  libstdc++-v3/testsuite/22_locale/locale/cons/38365.cc
! 4c0e1f59bc89dd6d0a00b44920ada174  libstdc++-v3/testsuite/22_locale/locale/cons/38368.cc
! 276e38f4766bbda9428102dbc162617e  libstdc++-v3/testsuite/22_locale/locale/cons/4.cc
! f2d40ce61d018c1cfa62b1c4a1bc0479  libstdc++-v3/testsuite/22_locale/locale/cons/40184.cc
! 0af445ba0dfa7aa05cd64e38e28b0fac  libstdc++-v3/testsuite/22_locale/locale/cons/5.cc
! ce3942f052712a3403bfac93302d6159  libstdc++-v3/testsuite/22_locale/locale/cons/6.cc
! b9b18d2cd7f2fe4771b716314931a9dd  libstdc++-v3/testsuite/22_locale/locale/cons/7.cc
! cdcd21d6dab03e7940502c08c5fc51d3  libstdc++-v3/testsuite/22_locale/locale/cons/7222-c.cc
! d241f86652fd9eb28a5a5349d4e8ce59  libstdc++-v3/testsuite/22_locale/locale/cons/7222-env.cc
! b6d599102f5765e3ff0378a2b5334429  libstdc++-v3/testsuite/22_locale/locale/cons/8.cc
! 8d287aac1c053ac4ceee7e8778d33c49  libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc
! da34fd5c263bcb2d5af0258f17b87126  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/1.cc
! 278a26445dcd05cf042c038726e398e0  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/14071.cc
! 82920611ed4af7db9ca5e37a2b4cbbda  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/2.cc
! 5ab6451d25f970903d4e21fc4bcce167  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/3.cc
! 847c49a05274b802fe96061ade96562d  libstdc++-v3/testsuite/22_locale/locale/operations/1.cc
! 077c6ce11af0481ee59bb9209e8f5844  libstdc++-v3/testsuite/22_locale/locale/operations/2.cc
! 4fd9a09b73a807be738272114278b4b8  libstdc++-v3/testsuite/22_locale/messages/13631.cc
! 6e5226ac3ef47bbdd5a932bfa0a87d9c  libstdc++-v3/testsuite/22_locale/messages/members/char/1.cc
! 0fc507694987ef239a632b85085e14db  libstdc++-v3/testsuite/22_locale/messages/members/char/2.cc
! 0e75c3b08370d117a67b13f24b616d0e  libstdc++-v3/testsuite/22_locale/messages/members/char/3.cc
! aac46d2cf0a7f4a871102737fd284d8c  libstdc++-v3/testsuite/22_locale/messages/members/char/wrapped_env.cc
! d15d651aec81a2aa0b9e399388a98c86  libstdc++-v3/testsuite/22_locale/messages/members/char/wrapped_locale.cc
! 1c7e3ff39faa085e4fe9ddd8aa13c5f5  libstdc++-v3/testsuite/22_locale/messages/requirements/base_classes.cc
! dfb16738db79c3e2b92013bd4436c9b1  libstdc++-v3/testsuite/22_locale/messages/requirements/explicit_instantiation.cc
! e9a6fa505a3f144c3c82753ec1abd03a  libstdc++-v3/testsuite/22_locale/messages/requirements/typedefs.cc
! 6706ff5a4cabd74162ba86bf6d9f864c  libstdc++-v3/testsuite/22_locale/messages_byname/1.cc
! 7ed68c6088b50781a58b7964c19b3a15  libstdc++-v3/testsuite/22_locale/messages_byname/named_equivalence.cc
! e6c7b77b672c45e268cf12f283352509  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/base_classes.cc
! e759a30c3622ee3eb5bee1cb7bcd44ac  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/explicit_instantiation.cc
! be5d0021815f76b542060fce48a74648  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/typedefs.cc
! 00dea680d079e724f3d6eeb666fab3a9  libstdc++-v3/testsuite/22_locale/money_get/cons/3.cc
! 94296c07adac84796fb324921734dc94  libstdc++-v3/testsuite/22_locale/money_get/get/char/1.cc
! 8e8f13583dcaf982d2ece06389bed347  libstdc++-v3/testsuite/22_locale/money_get/get/char/10.cc
! ff52d7721c633ef5fff71924f262559e  libstdc++-v3/testsuite/22_locale/money_get/get/char/11.cc
! 1a5d29e1c88082cd52c969b1342bf4fb  libstdc++-v3/testsuite/22_locale/money_get/get/char/11528.cc
! e11effe3fd1862fad0a1034fad3e8e7a  libstdc++-v3/testsuite/22_locale/money_get/get/char/12.cc
! 23ab304e5e128dc0a3e0656043c95a86  libstdc++-v3/testsuite/22_locale/money_get/get/char/13.cc
! c7b52374cec2da4bea333c435650b606  libstdc++-v3/testsuite/22_locale/money_get/get/char/14.cc
! 6d624473a5295beff48cd94abe3cac09  libstdc++-v3/testsuite/22_locale/money_get/get/char/15.cc
! 43ace2da444d898c82fa4ccbda4c23b6  libstdc++-v3/testsuite/22_locale/money_get/get/char/16.cc
! 4197c1080566d95da25d06d39e348934  libstdc++-v3/testsuite/22_locale/money_get/get/char/17.cc
! edbadeda17be48baefae346695f8653a  libstdc++-v3/testsuite/22_locale/money_get/get/char/18.cc
! 0292129df46e2c921d07fdec01754149  libstdc++-v3/testsuite/22_locale/money_get/get/char/19.cc
! 4c9ad658ca1af56d48f231e60db5a011  libstdc++-v3/testsuite/22_locale/money_get/get/char/2.cc
! 8540e885ed3b08bf56a4bc96dbab8786  libstdc++-v3/testsuite/22_locale/money_get/get/char/22131.cc
! 6256b9adf2a773f0aff224230bcba898  libstdc++-v3/testsuite/22_locale/money_get/get/char/3.cc
! f4ea6f61c1b7caee29559e244b89d6d2  libstdc++-v3/testsuite/22_locale/money_get/get/char/38399.cc
! 1878c4f0d1a541e9a4ba21596244da05  libstdc++-v3/testsuite/22_locale/money_get/get/char/39168.cc
! b48e433244dd3c6cbd1c5d5f3ca04d43  libstdc++-v3/testsuite/22_locale/money_get/get/char/4.cc
! 344f4aef8097a120f628bea43d665070  libstdc++-v3/testsuite/22_locale/money_get/get/char/5.cc
! 0d180867d70e894d0b67c0fcb9daf740  libstdc++-v3/testsuite/22_locale/money_get/get/char/6.cc
! 092aaa2a23f85b954c9732b711f78b4f  libstdc++-v3/testsuite/22_locale/money_get/get/char/7.cc
! 50a1c12717a87c58b6b46cee9ff9edb5  libstdc++-v3/testsuite/22_locale/money_get/get/char/8.cc
! 6e924259bbe16adc2fc3b648538fad3f  libstdc++-v3/testsuite/22_locale/money_get/get/char/9.cc
! ab346a246807b6160b908a4e79439858  libstdc++-v3/testsuite/22_locale/money_get/get/char/wrapped_env.cc
! 4bec98f203d976caf696f6de5aa470d3  libstdc++-v3/testsuite/22_locale/money_get/get/char/wrapped_locale.cc
! 10582510ba4c94e85257cf0acd55e696  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/1.cc
! 7b753ccc114c9f6e21b4980e5a25b2c8  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/10.cc
! 85411e004050a46a3b72af099653b876  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/11.cc
! f8aba9a53480ea9a4f6d7c41ced30bfc  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/11528.cc
! 37f859bab42a8a9e1d20f0578e244fbb  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/12.cc
! e54e331156ed6f4f5d4bd70c7415e249  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/13.cc
! c8fd7a90569f9fcc17748faef4d5bb30  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/14.cc
! 2d7475be99b656df12992f8a6aec3816  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/15.cc
! 9f537809001310d7cb1d23bc2a26ceb6  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/16.cc
! 00aa1d4b2371d4baba3b7bf5aa9d67d8  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/17.cc
! e25a37db29f4933fa3c0383fac136af8  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/18.cc
! 3a41372b2706193dad91bd4b4a5b6078  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/19.cc
! 8387b94b61e37151fdc7623f30ef353d  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/2.cc
! 3a47fb73bd09e4e73164637265fb4fe6  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/22131.cc
! e84f3daa14fe1e62ac1fe8e7064d7fb4  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/3.cc
! fe1c3d7f9f33ba7675d67cb528d0068b  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/38399.cc
! 25b1de6784ef4ced6e13ef2bfb2c2071  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/39168.cc
! a432246a83c4fc251edadf4be9fd4bd6  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/4.cc
! 9447056e1bfbf337ff3e4f660e53400a  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/5.cc
! 5f7d0429fff0343091dac48ebf57c9b5  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/6.cc
! c9413c76adfdd99b146e9eb29a479050  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/7.cc
! b5b03758c64e269a832ff217f1967482  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/8.cc
! 985dbc307cd246b1410f1d4c74c56f34  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/9.cc
! ab346a246807b6160b908a4e79439858  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/wrapped_env.cc
! 4bec98f203d976caf696f6de5aa470d3  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/wrapped_locale.cc
! ad767747b897ff0963d7ff8a62a16132  libstdc++-v3/testsuite/22_locale/money_get/requirements/base_classes.cc
! 70b94ad6d6500bf395185eb25aaaf506  libstdc++-v3/testsuite/22_locale/money_get/requirements/explicit_instantiation.cc
! 38c30e8136bd0a93e95985e923b60960  libstdc++-v3/testsuite/22_locale/money_get/requirements/typedefs.cc
! e51fd25fd2f6c4df423dd5df7886a0d7  libstdc++-v3/testsuite/22_locale/money_put/cons/3.cc
! 5efa9a65ae9e89863825774eb6cc8704  libstdc++-v3/testsuite/22_locale/money_put/put/char/1.cc
! 97056c1e0bf4b7c5fa3bbf3f5524114c  libstdc++-v3/testsuite/22_locale/money_put/put/char/12971.cc
! 539c20b29e62992e068bd69356c1e1a3  libstdc++-v3/testsuite/22_locale/money_put/put/char/2.cc
! 80bc0530673f06b6aadbcc637601f1ca  libstdc++-v3/testsuite/22_locale/money_put/put/char/3.cc
! 655852e506a4e92f8f937ca1b7a67d97  libstdc++-v3/testsuite/22_locale/money_put/put/char/39168.cc
! 18a80c5b22303778f57c8f525dc29d01  libstdc++-v3/testsuite/22_locale/money_put/put/char/4.cc
! 71979f202d3c91babaddb44e4bcf1894  libstdc++-v3/testsuite/22_locale/money_put/put/char/5.cc
! 23a46b84a62bf4370cfb106f17e00fab  libstdc++-v3/testsuite/22_locale/money_put/put/char/6.cc
! 73e839c97e448a4cc1dca700654eac10  libstdc++-v3/testsuite/22_locale/money_put/put/char/9780-3.cc
! 0b1b8487ba1091e0294afa7d82a3e1e1  libstdc++-v3/testsuite/22_locale/money_put/put/char/wrapped_env.cc
! ecf4b2c7bb4357d3ddea932ef8957e74  libstdc++-v3/testsuite/22_locale/money_put/put/char/wrapped_locale.cc
! bc5e3753ad0ae863d00695da5e2aea2f  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/1.cc
! 21f77cf069e2489aa668a5de6b7c701a  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/12971.cc
! 2af46df09906f09a9cf5cc6215354bb3  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/2.cc
! c0fdbe19fd9553d7224129e5909cc8a8  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/3.cc
! 22f0fa8bdd712a9e78b26de22080734a  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/39168.cc
! dd849ae03c2822b2582ad2abe0a0d379  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/4.cc
! 5f44481e13197f24bc04f587310ea5c2  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/5.cc
! d57787cb61ca9b7cd14cdf8cd627788e  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/6.cc
! 0b1b8487ba1091e0294afa7d82a3e1e1  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/wrapped_env.cc
! ecf4b2c7bb4357d3ddea932ef8957e74  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/wrapped_locale.cc
! 4a4e11c9c98f7f652c03f8e2265ddb76  libstdc++-v3/testsuite/22_locale/money_put/requirements/base_classes.cc
! 05454e84f387af76f5441924d8316441  libstdc++-v3/testsuite/22_locale/money_put/requirements/explicit_instantiation.cc
! bb1075774a96f8a9456cf72ca3ecc8fe  libstdc++-v3/testsuite/22_locale/money_put/requirements/typedefs.cc
! d54c829bb005fa7b748cb8f094367bf7  libstdc++-v3/testsuite/22_locale/moneypunct/40712.cc
! d431909465e088499f2dd7fa825838cb  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/1.cc
! 0b767f2757ea69131a76d9baac4730ce  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/2.cc
! 39a28048a4b4c6022768deb861f77e83  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/wrapped_env.cc
! c22479a887df08ceb0516851ee391f89  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/wrapped_locale.cc
! 7706499e1017a773d8e312346ec7fdcd  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/1.cc
! 254cc3d25538c69b1bdbc84f0da93c3f  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/2.cc
! 39a28048a4b4c6022768deb861f77e83  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/wrapped_env.cc
! 36a92682341f98d375fdf391f8d2659f  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/wrapped_locale.cc
! 13d443f599f6a1fe008b2305f0eaefa2  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/base_classes.cc
! a2b2091b426d73e7adc8ccb98e38fa14  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/explicit_instantiation.cc
! 2ddf8477788eda3e889a34e0364141e9  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/intl.cc
! 16a43796b4e76554532d0859797cf020  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/typedefs.cc
! 56d086d0286e36140d2952533616d06a  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/base_classes.cc
! 971f6ffc22de01087396e20a286c5905  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/explicit_instantiation.cc
! 70b74b806c751834782058f716729516  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/intl.cc
! cab55ced872f90a4bf6b3835de32ed59  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/typedefs.cc
! 3ba44c42e56ebeea4b5f858fa03ec55e  libstdc++-v3/testsuite/22_locale/moneypunct_byname/1.cc
! 8a230cf37e9c0e8186fc6e4980f5dc96  libstdc++-v3/testsuite/22_locale/moneypunct_byname/named_equivalence.cc
! 8dce808048d2c5b945c482ddff4ebd96  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/base_classes.cc
! 234e8dfb0de0e87d2a75052f72f3f8eb  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/explicit_instantiation.cc
! 02fe48dab8faae9db172102651621149  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/typedefs.cc
! 7af09d0a540f18d134a16294a66af047  libstdc++-v3/testsuite/22_locale/num_get/cons/3.cc
! 1244a405d3e861ca29a3722f99361a5c  libstdc++-v3/testsuite/22_locale/num_get/get/char/1.cc
! bc6a967391d13f6013850fced183aca8  libstdc++-v3/testsuite/22_locale/num_get/get/char/10.cc
! 9f06e83ceb5c4de3f772d0531273be22  libstdc++-v3/testsuite/22_locale/num_get/get/char/11.cc
! 198dd88e55e9acce6dd2d6ce2787d94b  libstdc++-v3/testsuite/22_locale/num_get/get/char/12.cc
! 96d65f361ea5abe3cfffc624aaef4cbb  libstdc++-v3/testsuite/22_locale/num_get/get/char/13.cc
! d8349d3fa9d015249a007b578523fb37  libstdc++-v3/testsuite/22_locale/num_get/get/char/14.cc
! 2ee89fef68f8220d4836c367d9cb9f3d  libstdc++-v3/testsuite/22_locale/num_get/get/char/15.cc
! 0888e6a3ce319ca52df3f2473978b86a  libstdc++-v3/testsuite/22_locale/num_get/get/char/16.cc
! 731262c7fa2b56d1ac719faa92290013  libstdc++-v3/testsuite/22_locale/num_get/get/char/2.cc
! 187658aadd4fc77e6573fc8f0f576bb9  libstdc++-v3/testsuite/22_locale/num_get/get/char/22131.cc
! 3373c193b67fb997880d5a878de42a68  libstdc++-v3/testsuite/22_locale/num_get/get/char/23953.cc
! 5ba798a3eea91612912155dd9e372a50  libstdc++-v3/testsuite/22_locale/num_get/get/char/3.cc
! d5014ab166a839ab3f86426d49fdaba5  libstdc++-v3/testsuite/22_locale/num_get/get/char/37958.cc
! 8a7863db4d0feb2805337967302c4657  libstdc++-v3/testsuite/22_locale/num_get/get/char/39168.cc
! 29ca207de5711b892440d2082d14dea4  libstdc++-v3/testsuite/22_locale/num_get/get/char/39802.cc
! 084328951ef436a55edc3dfa65ad9cf9  libstdc++-v3/testsuite/22_locale/num_get/get/char/4.cc
! 1df0d29a108bb1d15e99655c10b1a4e9  libstdc++-v3/testsuite/22_locale/num_get/get/char/5.cc
! f9d1504d2b853a398ca84d96f23ac12c  libstdc++-v3/testsuite/22_locale/num_get/get/char/6.cc
! 7759e4c38005495eb35e4f99da3b1d58  libstdc++-v3/testsuite/22_locale/num_get/get/char/7.cc
! b67befc1418f6cdcdb476253c4e78230  libstdc++-v3/testsuite/22_locale/num_get/get/char/8.cc
! a0fda16bba57bf32ce55a9f3c2f92a4c  libstdc++-v3/testsuite/22_locale/num_get/get/char/9.cc
! 4540762d0d8fe5cd46e0142301f16c93  libstdc++-v3/testsuite/22_locale/num_get/get/char/wrapped_env.cc
! ecf4b2c7bb4357d3ddea932ef8957e74  libstdc++-v3/testsuite/22_locale/num_get/get/char/wrapped_locale.cc
! 68ad73ce5608d7880bf14850158016e8  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/1.cc
! c78a3a850512520cf3317b13fde77352  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/10.cc
! fcb953a9047095aadfb36cac5a93b191  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/11.cc
! 6514e52bcfa9f2630129dc8c61e4285c  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/12.cc
! b3c69eebcd3e5b40f824a41ec207adab  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/13.cc
! 23f4da6915eaa2fa034323aa206dd7b1  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/14.cc
! f7e536440e8cde3b90c69e274452b7f6  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/15.cc
! 216a322f78ba6f65812fc387d530f059  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/16.cc
! a4e16655f61aee808ac1cd37abd72dc4  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/2.cc
! a4daa408a4146a66f27f442f38dd2d43  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/22131.cc
! 7035d31902eb8178f0655c345952644e  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/23953.cc
! 69e7334b44930090f290c84c006693ce  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/3.cc
! 1b6440c255a6445b95e418ca01bc27ca  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/37958.cc
! 0879b5da1ee61ef1e8b0f74096efe27c  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39168.cc
! 3704efbb8e48f7a2b4860d82d532bb25  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39802.cc
! a011b2f25ff30820f66dc32033402b27  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/4.cc
! 1e5a989fbd80cfcfc28c61c40c5d85b1  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/5.cc
! f00cc53f768a4646812611f8a0df780a  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/6.cc
! 9723e946dfc45034aae38cd942350314  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/7.cc
! 07121bf2f0554ae3a589c4b2f88d2f1a  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/8.cc
! b2464421cdd2e380562e5c3e87fed50d  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/9.cc
! 4540762d0d8fe5cd46e0142301f16c93  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/wrapped_env.cc
! ecf4b2c7bb4357d3ddea932ef8957e74  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/wrapped_locale.cc
! 3e59d3c043390eec2410e0eadd1ade51  libstdc++-v3/testsuite/22_locale/num_get/requirements/base_classes.cc
! 78f39b0403f547bab0053cb17679245c  libstdc++-v3/testsuite/22_locale/num_get/requirements/explicit_instantiation.cc
! 02381b1f901bba88801302a578663c42  libstdc++-v3/testsuite/22_locale/num_get/requirements/typedefs.cc
! ebb786b6de4206038a079c301f4a136e  libstdc++-v3/testsuite/22_locale/num_put/cons/3.cc
! b436c8af21fa90b75e17fe4fee9dd1c8  libstdc++-v3/testsuite/22_locale/num_put/put/char/1.cc
! 48cfb1449b43fb4abff86eab162bafdf  libstdc++-v3/testsuite/22_locale/num_put/put/char/10.cc
! f6faf86df6f940413eadf40edf1ec7ab  libstdc++-v3/testsuite/22_locale/num_put/put/char/11.cc
! 0ddf343c857a414549bdffb6c8165119  libstdc++-v3/testsuite/22_locale/num_put/put/char/12.cc
! 1bd92ab57c27ccbc75327aefef399f62  libstdc++-v3/testsuite/22_locale/num_put/put/char/14220.cc
! d3456189004f4e3e719459c60fc87ee9  libstdc++-v3/testsuite/22_locale/num_put/put/char/15565.cc
! 53db7b2160295455712f4f87aa9c65f1  libstdc++-v3/testsuite/22_locale/num_put/put/char/2.cc
! 0860a299ce2e0b660c1f5e4b0514ef7a  libstdc++-v3/testsuite/22_locale/num_put/put/char/20909.cc
! 3cb7f36702a9b30ac4111a07f8136ba7  libstdc++-v3/testsuite/22_locale/num_put/put/char/20914.cc
! 2e55871e27d489497b4197d3cedb1827  libstdc++-v3/testsuite/22_locale/num_put/put/char/23953.cc
! b8cea2e89e9168bc2754fc0d2782fb6b  libstdc++-v3/testsuite/22_locale/num_put/put/char/3.cc
! c42671d6d28ffe8a53a470dbf9255d78  libstdc++-v3/testsuite/22_locale/num_put/put/char/38196.cc
! fa9a6b956f00d89423ac7127f14f66a3  libstdc++-v3/testsuite/22_locale/num_put/put/char/38210.cc
! 098c7b974b0ed9364eae346e93de685d  libstdc++-v3/testsuite/22_locale/num_put/put/char/4.cc
! 09ab6a7082c2445cdf59da455cb1b05c  libstdc++-v3/testsuite/22_locale/num_put/put/char/5.cc
! 93adacd7eed0798fbf242e7a5d2fb2e8  libstdc++-v3/testsuite/22_locale/num_put/put/char/6.cc
! e50462c1510857f24b257a7dfef28532  libstdc++-v3/testsuite/22_locale/num_put/put/char/7.cc
! bc71c86838cf1426ee7d6e31a1d0d15e  libstdc++-v3/testsuite/22_locale/num_put/put/char/8.cc
! d69bf3ca080f33364f67f0d1b01ce729  libstdc++-v3/testsuite/22_locale/num_put/put/char/9.cc
! 94838b080d88950b5015306242f05a74  libstdc++-v3/testsuite/22_locale/num_put/put/char/9780-2.cc
! 18d1b735000011d8572cde46df034498  libstdc++-v3/testsuite/22_locale/num_put/put/char/wrapped_env.cc
! 01a4bc908eda18a299cd10df96a57527  libstdc++-v3/testsuite/22_locale/num_put/put/char/wrapped_locale.cc
! e2bcf35c48efc6965d8c5fd72c44fb35  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/1.cc
! c89cc2c255f1c6bc2f7f749a24418c36  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/10.cc
! c2a4f50203f86ee34ad68d5928cfc2e8  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/11.cc
! dd60d0e69ee36abab457b04a9d7ccf83  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/12.cc
! ae9e7dceedac47c749d2f5f641183892  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/14220.cc
! 806c99cab946919864cea84cab7f6c79  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/15565.cc
! c5d28b5acec0ce7c8f10d0e49cf8aba1  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/2.cc
! 714e9b2823d523058d3338cf9b1a11ac  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/20909.cc
! d3fab241c7ed02215df27eeea6e77c70  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/20914.cc
! a25717afec10d3bb683ae326c0743a92  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/23953.cc
! 6be91d97e363670f1f04323ff5a4548e  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/3.cc
! 96d8a64797171fc92d88b0736747274e  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/38196.cc
! 9176bde18c2332f85b1d90887031b629  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/38210.cc
! cff15519069c6da65e2f16361466a816  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/4.cc
! 01ffb8401997ed1cce8a858748f5fdac  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/5.cc
! 2f7295228b6d86088bbbdc5de49f2b27  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/6.cc
! fbfef5809a1c4016580a36253902b7c9  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/7.cc
! a7e4b4239804a84b0bcb1f03a4f9183b  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/8.cc
! 5a21f8cbf23dee257c670b70e69681e4  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/9.cc
! e8b9f6928d6c3a333aa5a3524696b146  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/wrapped_env.cc
! 956cf53d78be33df4e9033cbaf4f28a0  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/wrapped_locale.cc
! 65251f84c29a8c117cefd2187fb539d6  libstdc++-v3/testsuite/22_locale/num_put/requirements/base_classes.cc
! 11416c24ad099fbae6d8e1c076e930c4  libstdc++-v3/testsuite/22_locale/num_put/requirements/explicit_instantiation.cc
! 27bf08262b5a734877f21097d51df4a9  libstdc++-v3/testsuite/22_locale/num_put/requirements/typedefs.cc
! 29ff60afa90a58933ca351165a0b8f7c  libstdc++-v3/testsuite/22_locale/numpunct/members/char/1.cc
! a4ff6b7588eb0e00fcfbd3d189aad2b7  libstdc++-v3/testsuite/22_locale/numpunct/members/char/2.cc
! ca8fcb7cf024b68722f1a1b69f417dea  libstdc++-v3/testsuite/22_locale/numpunct/members/char/3.cc
! a6908f8e79faee038c78b3119e6d9e80  libstdc++-v3/testsuite/22_locale/numpunct/members/char/cache_1.cc
! cf99b63da1142e4a81f50ff9234d4b5a  libstdc++-v3/testsuite/22_locale/numpunct/members/char/cache_2.cc
! 136c57467f484f4733c23ad06883d008  libstdc++-v3/testsuite/22_locale/numpunct/members/char/wrapped_env.cc
! 693c391e2e0ac6180d5f028d1f2b2f0e  libstdc++-v3/testsuite/22_locale/numpunct/members/char/wrapped_locale.cc
! 1043d5dbd0155c6f8dc9f97ec7cfdc77  libstdc++-v3/testsuite/22_locale/numpunct/members/pod/1.cc
! 1eb3091226a998f9fbda156d3dfab29d  libstdc++-v3/testsuite/22_locale/numpunct/members/pod/2.cc
! e4566046595d1b9ebafd21ea1325283a  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/1.cc
! 9c3f6cd2a45bfdec12fd599fe959b8c5  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/2.cc
! 4563b2cbd29523179f4f76a10bb41f37  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/cache_1.cc
! fbf6ab55527f0876027c1f99c9372159  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/cache_2.cc
! 136c57467f484f4733c23ad06883d008  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/wrapped_env.cc
! 693c391e2e0ac6180d5f028d1f2b2f0e  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/wrapped_locale.cc
! c9fb8b0436fb8c1dad2716cac4c8c61a  libstdc++-v3/testsuite/22_locale/numpunct/requirements/base_classes.cc
! 97130efa1c99b10c647ebb0cc813ec9a  libstdc++-v3/testsuite/22_locale/numpunct/requirements/explicit_instantiation.cc
! 3279390624304feb4d355959e4498de4  libstdc++-v3/testsuite/22_locale/numpunct/requirements/typedefs.cc
! 55f31818131ba27f40b6202836a9f90d  libstdc++-v3/testsuite/22_locale/numpunct_byname/1.cc
! 86f2fc9357ab3ae8ab66b2a06a3f995a  libstdc++-v3/testsuite/22_locale/numpunct_byname/named_equivalence.cc
! 4b273f682e18b6155168385cce782a78  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/base_classes.cc
! 90b12d63759571f7ad97281ebc068d49  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/explicit_instantiation.cc
! 26ff617be764d91ae65bf1cdf6677dd2  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/typedefs.cc
! 035fba3ace21796b9eb7724ee4d4eb5f  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/1.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/wrapped_locale.cc
! 1b8dfd1984a0dbac74ba52c8b29c05e1  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/1.cc
! f68c84c2d32cadcc458b52a7c6ed5a23  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/wrapped_env.cc
! cee8cd5590e55d1becbda316f50374ec  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/wrapped_locale.cc
! 46d1b39bb37d82f7b29164ae19f87633  libstdc++-v3/testsuite/22_locale/time_get/get/char/1.cc
! fdbaf02d70fe0d129db65aa7edf02e07  libstdc++-v3/testsuite/22_locale/time_get/get/char/2.cc
! 6873cef25adadf6ad4c163f7910b99a3  libstdc++-v3/testsuite/22_locale/time_get/get/char/88681.cc
! ad4fee30f6ea3022f05137d92523c4c8  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/1.cc
! a5cd9aa390adbb59207f7945328d68dc  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/2.cc
! bc338a821ef234052bc2ee14a57f1d87  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/88681.cc
! a157372358b979992f052754003e1ef6  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/1.cc
! 978f5116e2056b0fcf31ad1e85503181  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12750.cc
! e009131926b326485237b83396c7dcd7  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12791.cc
! e524cb2375bd7d466042e2e4b90456bc  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/2.cc
! 9f1d4be8bd6b2f9d3423c27cf82d7791  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/26701.cc
! 998c5d268979bb2a895c341098e03eb9  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/3.cc
! 992f836e1af1b96b127cc8a5d27a3e79  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/5.cc
! c0e71a10c57927468cd36db6e2097717  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/wrapped_env.cc
! 11776226c02e07c023e72ea1bba8d29c  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/wrapped_locale.cc
! 1133f5c11e489f7b39f41e7174eaf8d2  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/1.cc
! 952f2ff9f275ef2c031e5eef1c370c0e  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12750.cc
! 92bc3f5e9297deef330af06e5dd2fb1f  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12791.cc
! 6350ade6774f7033e2571dc0ad10c3a4  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/2.cc
! f89027e9e55526b3a0bae3d99e6785e8  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/26701.cc
! 02daa5334216106f56fa7e701f4d5888  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/3.cc
! 43eec6f5d73f97bbce41171c85d21cfa  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/4.cc
! d456a31d585bf5c380297cd5c579d599  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/5.cc
! c0e71a10c57927468cd36db6e2097717  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/wrapped_env.cc
! 11776226c02e07c023e72ea1bba8d29c  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/wrapped_locale.cc
! 4edb4d40097349c2458bbec8e1ae0b13  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/1.cc
! 1a6c747a1abd44a5c4aba182e95ce364  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/2.cc
! 25ea110b4e0f030b11d6140396334355  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/3.cc
! 4e15be2fac1cf85cf80124acd682e6fe  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/4.cc
! add980b3750a864339107b6cc02a14f7  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/5.cc
! 2bdf730a51f8dce1ae255e0fb6b1d880  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/6.cc
! c0e71a10c57927468cd36db6e2097717  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/wrapped_env.cc
! 11776226c02e07c023e72ea1bba8d29c  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/wrapped_locale.cc
! c14b9e3ade45659268c24999437071b0  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc
! 478f5c15b36b2683d2657161b859fcf7  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/2.cc
! 47bb1bce7179e0ed3ed0641e27089f16  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/3.cc
! cddb5940149924631b28afa037f7ccff  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/4.cc
! 6dc55813ac0137cd4423c57ac8ed16d9  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/5.cc
! 38da00930ec050a16c66e6fdc22774fe  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/6.cc
! c0e71a10c57927468cd36db6e2097717  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/wrapped_env.cc
! 11776226c02e07c023e72ea1bba8d29c  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/wrapped_locale.cc
! 83ab37cf39df59b497fba38d3d30cd86  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/1.cc
! e74e7c0e361c71cb0d111ff396306fea  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/2.cc
! 459c1725d4ac07137273a7bb3d2fa3f0  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/3.cc
! c25e32b70d1270883561d0c87c8588ad  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/4.cc
! 4f197282261f5c4eed285c56ab923f34  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/5.cc
! c5e73e12c52d80c94f251da99ffb5643  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/6.cc
! c0e71a10c57927468cd36db6e2097717  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/wrapped_env.cc
! 11776226c02e07c023e72ea1bba8d29c  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/wrapped_locale.cc
! 3ee67acf9efcbde6246dc20fe9694a79  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/1.cc
! 26d4369681d3ac4bd5edccb5bd5f1423  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/2.cc
! d1207c5f668cc56e591b64ef2b80ec32  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/3.cc
! 8c45b951c079733b86b35e4513b38979  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/4.cc
! 529dbccadacda9899dfb3cfa6dbe513e  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/5.cc
! e41aa5aaa3a176fb120d838c828501ee  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/6.cc
! c0e71a10c57927468cd36db6e2097717  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/wrapped_env.cc
! 11776226c02e07c023e72ea1bba8d29c  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/wrapped_locale.cc
! 799b4960f5575ebd0e56f25cb07495e7  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/1.cc
! 6e37902ec6e403a5b2441ee5b185a679  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/2.cc
! 90810671f1557521b5f0cd227f24f785  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/3.cc
! 45d687a7f00628a8981d270412eb581c  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc
! b6cdde527ac8ae9cf1c1b45c09563b60  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc
! c6f44f202a5c2e7d17ae579fbf8bb12e  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/5.cc
! 09e8b01aad05e441817f8a97e78c0623  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/6.cc
! c0e71a10c57927468cd36db6e2097717  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/wrapped_env.cc
! 11776226c02e07c023e72ea1bba8d29c  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/wrapped_locale.cc
! 70545eb61f9f22f2bc818b0acfddd613  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc
! 3eab3172c3408c8277539f8eec0d7b32  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/2.cc
! 7ab21bf2a362b78b1d7eafd0692734c3  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/3.cc
! 9a8d0467527ddb0c49662613263491b1  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/5.cc
! b5910be3f57eac172ce20dcdbf012249  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/6.cc
! 3898987b54da57663f4758c25a096a39  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/wrapped_env.cc
! 47fc8fe7f9975d8c4655e0fb735a18a6  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/wrapped_locale.cc
! 383a92d85774cf711bd3b4ea34993fc5  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc
! fd6f4847916a906a47c5697daf83ed1c  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/3.cc
! e047b45d3aeced0995c0e6a8abb522b4  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/5.cc
! bbb381c6a92c7dfc94fd0fd1b909d7b6  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/wrapped_env.cc
! dab4bc0cdd45281c8057932a88863ca0  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/wrapped_locale.cc
! d36d4a471a4e3015db02684f5e47a4fe  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/1.cc
! d718f09b9bc067c1643fd7bfa8775729  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/3.cc
! a77ecd67b416a87b1ae2e9249ceaa41d  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/5.cc
! bbb381c6a92c7dfc94fd0fd1b909d7b6  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/wrapped_env.cc
! dab4bc0cdd45281c8057932a88863ca0  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/wrapped_locale.cc
! 406d0f915c328e8bbf92c1d2b9d987b1  libstdc++-v3/testsuite/22_locale/time_get/requirements/base_classes.cc
! ae0909aa8679b27f4fdeb94b45947eac  libstdc++-v3/testsuite/22_locale/time_get/requirements/explicit_instantiation.cc
! 7e94145b49eee1feae588c6d7abe551d  libstdc++-v3/testsuite/22_locale/time_get/requirements/typedefs.cc
! d8b3ec7f2c1f345e3e6f01242ee2cb64  libstdc++-v3/testsuite/22_locale/time_put/put/char/1.cc
! 27c88e63e5fa1204ccb41c6287b9b113  libstdc++-v3/testsuite/22_locale/time_put/put/char/10.cc
! b9e025a701ceb3e536bdb4b436186ec9  libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_1.cc
! 06c2e3c64a6c53f99b949e3e9ba9c9ee  libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_3.cc
! ff4f8bafadf2e62177ae7d8a41b12f4c  libstdc++-v3/testsuite/22_locale/time_put/put/char/17038.cc
! 0fbd2ebd3b239bb6509fd72a84307560  libstdc++-v3/testsuite/22_locale/time_put/put/char/2.cc
! ce338cc9ee323d214b29f2f20114a018  libstdc++-v3/testsuite/22_locale/time_put/put/char/3.cc
! 2070dccad42348148b1eb0df376d1f12  libstdc++-v3/testsuite/22_locale/time_put/put/char/4.cc
! bf00b9dd81ab02844cd2c3230f6742a2  libstdc++-v3/testsuite/22_locale/time_put/put/char/5.cc
! b9a2966a7e31a0d29da73d520cb6bb55  libstdc++-v3/testsuite/22_locale/time_put/put/char/6.cc
! 99fb8750ae9a4571ed3618b88f7e210d  libstdc++-v3/testsuite/22_locale/time_put/put/char/7.cc
! 31503ce6e5537fe1b0eed926c58b7b28  libstdc++-v3/testsuite/22_locale/time_put/put/char/8.cc
! 312dad3deb65ad6fe81eefedd366eeb3  libstdc++-v3/testsuite/22_locale/time_put/put/char/9.cc
! d03497b5ffdcf67dc19fdfcaf1bffd4c  libstdc++-v3/testsuite/22_locale/time_put/put/char/9780-1.cc
! a1682530dca69bbd78ad3ff50c03683f  libstdc++-v3/testsuite/22_locale/time_put/put/char/wrapped_env.cc
! 2d81b1ec0622e59fa83c875fe5040a6b  libstdc++-v3/testsuite/22_locale/time_put/put/char/wrapped_locale.cc
! 81c303375258237601def10ebae1e111  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/1.cc
! fb67243c3de89b4be94e7970c169aae1  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/10.cc
! f51b6a0f99017dd79379fb207f44b5dc  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_1.cc
! 39aa515ce11d63a53effdec2ef1f1630  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_2.cc
! 8c9bc1e015b9fdde39ffc184b45d1dee  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_3.cc
! 92e4314d78c6c409f178e7e67db2c7fa  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/17038.cc
! d0bdceebc87067353885042d13b062ec  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/2.cc
! 45f156f2c28d658b60c206b919b6a8d4  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/3.cc
! 823591f1480f4f531d41e3f5a0741bb6  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/4.cc
! 1db4afa75b1617196197a90f0cf6c58f  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/5.cc
! 92d12919c5c71c2fa3d7c9d18c25b3fa  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/6.cc
! c90f11752abe67dd8d86840b923d593c  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/7.cc
! 62f8a2f7f43ffc7012236ff2da8446ed  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/8.cc
! ca2e4ad8879795ae2c0ba1126a471135  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/9.cc
! a1682530dca69bbd78ad3ff50c03683f  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/wrapped_env.cc
! b0cdd704f85b3ba72f5b78cd6950378f  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/wrapped_locale.cc
! 8b55176a4dd9aea4e4f57386b39fe61a  libstdc++-v3/testsuite/22_locale/time_put/requirements/base_classes.cc
! 513a9555a5df1a662097edb53bd26fbc  libstdc++-v3/testsuite/22_locale/time_put/requirements/explicit_instantiation.cc
! d874d8e2551c3b5c1491d41be9e863ae  libstdc++-v3/testsuite/22_locale/time_put/requirements/typedefs.cc
! 05ece56e5a9246773f422156ab6dd929  libstdc++-v3/testsuite/23_containers/array/capacity/constexpr_functions.cc
! d08b109eddf387a7a8286634262a8e2f  libstdc++-v3/testsuite/23_containers/array/capacity/empty.cc
! 00ccc0d39a83df248fcdc2025912e714  libstdc++-v3/testsuite/23_containers/array/capacity/max_size.cc
! d2b634a107d00e054c9f632bb6119d35  libstdc++-v3/testsuite/23_containers/array/capacity/size.cc
! 10b622ca5911b6a6093f9bea6e1225ac  libstdc++-v3/testsuite/23_containers/array/comparison_operators/96851.cc
! e543a1b4ed3c8ac4cdc9532161e3e7be  libstdc++-v3/testsuite/23_containers/array/comparison_operators/constexpr.cc
! 1717e6a723f89b7efdd5c178f20466f4  libstdc++-v3/testsuite/23_containers/array/comparison_operators/equal.cc
! 0f383f3c0b3ecff922cb961ad297d6a1  libstdc++-v3/testsuite/23_containers/array/comparison_operators/greater.cc
! 9e5667635922f4b4d6e8adb1b675dcfc  libstdc++-v3/testsuite/23_containers/array/comparison_operators/greater_or_equal.cc
! 33cc311e1bf930619e89458c27d05b10  libstdc++-v3/testsuite/23_containers/array/comparison_operators/less.cc
! dd70ac134b5349bb805d28b059fdb2d0  libstdc++-v3/testsuite/23_containers/array/comparison_operators/less_or_equal.cc
! 1506e72c725c353a7ce378ea864ea1bc  libstdc++-v3/testsuite/23_containers/array/comparison_operators/not_equal.cc
! a7400ddc02d6d50f05fc2f5af885554e  libstdc++-v3/testsuite/23_containers/array/cons/53361.cc
! 5bede77450cc39ae07783605f18eec22  libstdc++-v3/testsuite/23_containers/array/cons/aggregate_initialization.cc
! 9dc3d2e18387fc96a4a5ec4d771ef0e4  libstdc++-v3/testsuite/23_containers/array/cons/deduction.cc
! 89d770d5e1c8c13bcde5aaf2e0ce00de  libstdc++-v3/testsuite/23_containers/array/cons/deduction_neg.cc
! 18e982a04f75c0898c8d302f1631e3dd  libstdc++-v3/testsuite/23_containers/array/creation/1.cc
! 87a1a500de18ddd2e6641830c6d665b7  libstdc++-v3/testsuite/23_containers/array/creation/2.cc
! dd053d362f989ff762807706ca8c4589  libstdc++-v3/testsuite/23_containers/array/creation/3_neg.cc
! 077038196e7b3e0a929157c294b4b339  libstdc++-v3/testsuite/23_containers/array/debug/back1_neg.cc
! 799a6730127ca679922678691004ba33  libstdc++-v3/testsuite/23_containers/array/debug/back2_neg.cc
! f35c56e97937a24deccb63763dcb0d68  libstdc++-v3/testsuite/23_containers/array/debug/front1_neg.cc
! 3371265acf1421ff46c3d45ad576936e  libstdc++-v3/testsuite/23_containers/array/debug/front2_neg.cc
! 300872269702cdf9a3d09d4cd5a7ddd1  libstdc++-v3/testsuite/23_containers/array/debug/square_brackets_operator1_neg.cc
! 80ac6c566f1992110ae1cfb85d812969  libstdc++-v3/testsuite/23_containers/array/debug/square_brackets_operator2_neg.cc
! 941b6b6e15c8f73cd8e18326b52bab2a  libstdc++-v3/testsuite/23_containers/array/element_access/54388.cc
! c942c39c761d19d1ca107843afc4980b  libstdc++-v3/testsuite/23_containers/array/element_access/60497.cc
! fe43ef76e042d0d9ac9890bc93c34f31  libstdc++-v3/testsuite/23_containers/array/element_access/at_neg.cc
! b0b8557f6fcc8f6bae5ca6fc1e5b162d  libstdc++-v3/testsuite/23_containers/array/element_access/at_out_of_range.cc
! 5d96c50ecb24b8d682e518cd7a5577d1  libstdc++-v3/testsuite/23_containers/array/element_access/back.cc
! d6cde369e04bb3bb111060def53b09e0  libstdc++-v3/testsuite/23_containers/array/element_access/constexpr_c++17.cc
! a936cde0de2a98275d03990c540b2c8b  libstdc++-v3/testsuite/23_containers/array/element_access/constexpr_element_access.cc
! b102925fa9e42c8d2d8ccd119463caa0  libstdc++-v3/testsuite/23_containers/array/element_access/data.cc
! 084eedf2f7685cf3718a7e91f65704e6  libstdc++-v3/testsuite/23_containers/array/element_access/front.cc
! b7fed4e22cf8ec8196b0dc88ea210c97  libstdc++-v3/testsuite/23_containers/array/iterators/end_is_one_past.cc
! f625575c6d29e9bdad69da6ebe25cca3  libstdc++-v3/testsuite/23_containers/array/range_access.cc
! 0155ed1cf3658ff7d999ce2fe2f67edb  libstdc++-v3/testsuite/23_containers/array/requirements/citerators.cc
! 701e1f5b9f3a7a85975a44389b93598f  libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_fill.cc
! 55c141a46f304ccb366d7c65baa2d720  libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_iter.cc
! a525fb1ec745e5f53b4a78effaf16835  libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_swap.cc
! 1e6e1c2e3807560bcc5470c1898c1756  libstdc++-v3/testsuite/23_containers/array/requirements/contiguous.cc
! 8080babb4a69f3d4dffb88f3bc2a803e  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/1.cc
! 04c8d128e374e8e8498e264bff01d73c  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/2.cc
! 8b65d8adea286f4086087f03b425bd89  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/3.cc
! ddd90e05de5bfd059a22957fcdf1b5d7  libstdc++-v3/testsuite/23_containers/array/requirements/fill.cc
! 5ceb13f9c1bbd32f3da4beb63c4d437b  libstdc++-v3/testsuite/23_containers/array/requirements/member_swap.cc
! f50519ea2a79aed557fbf80db5b03f9c  libstdc++-v3/testsuite/23_containers/array/requirements/non_default_constructible.cc
! 77c2e9b07ab0867e8e62ccda35aadf9f  libstdc++-v3/testsuite/23_containers/array/requirements/typedefs.cc
! c4dd4d0ac2d39ea59d8afae445019d81  libstdc++-v3/testsuite/23_containers/array/requirements/zero_sized_arrays.cc
! 66245511fdaf9cedc2eb62ee36ad9b4d  libstdc++-v3/testsuite/23_containers/array/specialized_algorithms/swap.cc
! 99c7b7ea16bfc067f1fc04f845dd12bd  libstdc++-v3/testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc
! 92dc396c3fb9668b78f0e890ef0443bc  libstdc++-v3/testsuite/23_containers/array/tuple_interface/constexpr_get.cc
! e865d095eceef08194aac4387435e7c9  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get.cc
! 7d70d9eb0b1f301c9c452762552243f2  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_debug_neg.cc
! c7f93052b229a238f3249082964089e1  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
! 8c87fdec23003d2b426c9937091caa79  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element.cc
! c69ff46c856d21a1eb89d73fb74670c2  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_cpp14.cc
! 1968acad293e1c95fd93856d5408e387  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc
! e7f5deb0c51ff038866efefdab6e7527  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc
! c38ca8674613980a9c5ad5001d2aa154  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_size.cc
! d13355e3cdf09c65f41e789c4741df81  libstdc++-v3/testsuite/23_containers/bitset/18604.cc
! 1cf062f2b5f23e01d97b5df304578e9a  libstdc++-v3/testsuite/23_containers/bitset/45713.cc
! 049588070635b735e374a2dfa01872d9  libstdc++-v3/testsuite/23_containers/bitset/all/1.cc
! 11dcd35608278dce0a1d899eaebaa6d3  libstdc++-v3/testsuite/23_containers/bitset/cons/1.cc
! 67ff5a78704c28cd632fbf5d88887338  libstdc++-v3/testsuite/23_containers/bitset/cons/16020.cc
! 945cd31ef9cefb9b2eb18479187ad2c7  libstdc++-v3/testsuite/23_containers/bitset/cons/2.cc
! b39769927d68da27a3dcd97b05ea7d0a  libstdc++-v3/testsuite/23_containers/bitset/cons/3.cc
! 95cb31b2e61082478ca9f4b994f3192c  libstdc++-v3/testsuite/23_containers/bitset/cons/38244.cc
! 0d39d3af5d9bb3233735d6ece04e5a03  libstdc++-v3/testsuite/23_containers/bitset/cons/50268.cc
! 5733f5343e6fa9c4d813c758e4cfd5ca  libstdc++-v3/testsuite/23_containers/bitset/cons/6282.cc
! e62197419acb1c71bf6840b2ff844642  libstdc++-v3/testsuite/23_containers/bitset/cons/constexpr.cc
! eef972ae54155fb3cd0c237a9bb6945d  libstdc++-v3/testsuite/23_containers/bitset/cons/dr1325-1.cc
! 86a8cb2dd02190191fd421cb493e3628  libstdc++-v3/testsuite/23_containers/bitset/cons/dr1325-2.cc
! 5bfec333dd8259b2c89afe6c34010749  libstdc++-v3/testsuite/23_containers/bitset/cons/dr396.cc
! bdffca617e29dbc3774067048edb1f90  libstdc++-v3/testsuite/23_containers/bitset/count/6124.cc
! fb9b9b86a0d2da1fa993ec9591008499  libstdc++-v3/testsuite/23_containers/bitset/debug/invalidation/1.cc
! fa97c90d6869b3adde516ccc5b1521da  libstdc++-v3/testsuite/23_containers/bitset/ext/15361.cc
! b0a2cec54cba6d00c150394791e2ffbb  libstdc++-v3/testsuite/23_containers/bitset/hash/1.cc
! 6f0ace5d47c844acdf2f8f21a12db8e9  libstdc++-v3/testsuite/23_containers/bitset/input/1.cc
! e17eecae9cb55925f15adb8585c27587  libstdc++-v3/testsuite/23_containers/bitset/operations/1.cc
! fff1359d2b1333c4bc774a982686526d  libstdc++-v3/testsuite/23_containers/bitset/operations/13838.cc
! 9dfab7be93152f0c5b6156b9563a73e4  libstdc++-v3/testsuite/23_containers/bitset/operations/2.cc
! 6737d5e35ef3f28306a089f642246bc9  libstdc++-v3/testsuite/23_containers/bitset/operations/96303.cc
! fd16f78e9e5b164a3d4e8e5611feac4c  libstdc++-v3/testsuite/23_containers/bitset/operations/constexpr-2.cc
! 1380af4dec0eed471fa86a207ca7706e  libstdc++-v3/testsuite/23_containers/bitset/operations/constexpr.cc
! d626901b7498a412e8a96d9a7fc77e73  libstdc++-v3/testsuite/23_containers/bitset/requirements/constexpr_functions.cc
! 7e46cdb32e8cd7dc37d6706b32fb4fb4  libstdc++-v3/testsuite/23_containers/bitset/requirements/explicit_instantiation/1.cc
! 98659a325050091a67f58fb6e0be4faa  libstdc++-v3/testsuite/23_containers/bitset/requirements/explicit_instantiation/1_c++0x.cc
! 1551ab02e8db9737db87bf13f63b6e7c  libstdc++-v3/testsuite/23_containers/bitset/test/1.cc
! b3c245b155bae63c206d13cb3eddee36  libstdc++-v3/testsuite/23_containers/bitset/to_string/1.cc
! 31a7def83975533b0d5f833be6119110  libstdc++-v3/testsuite/23_containers/bitset/to_string/dr396.cc
! 91b3659f22d9f93b9bb88e615c0e5364  libstdc++-v3/testsuite/23_containers/bitset/to_ullong/1.cc
! 910df448fb71968cf54a7186ec0b831b  libstdc++-v3/testsuite/23_containers/bitset/to_ulong/1.cc
! 1938b83c11b823c3b9d38890957bdf47  libstdc++-v3/testsuite/23_containers/deque/14340.cc
! 25ccfa496819e9e6291a4a6b60b3e036  libstdc++-v3/testsuite/23_containers/deque/18604.cc
! 0c08e3339feeb03239538e3040667909  libstdc++-v3/testsuite/23_containers/deque/48101-2_neg.cc
! 24af0f353734a23f855ab36ca11b542d  libstdc++-v3/testsuite/23_containers/deque/48101-3_neg.cc
! 76d284b0296b330cc528d247030c8799  libstdc++-v3/testsuite/23_containers/deque/48101_neg.cc
! 287a0caa65e8d2611abe1adfb53f693b  libstdc++-v3/testsuite/23_containers/deque/58764.cc
! 685e459f00654b88ae89d4f33cc6a57e  libstdc++-v3/testsuite/23_containers/deque/92124.cc
! 6eaaf7841d83d3b17fa2191af10ff357  libstdc++-v3/testsuite/23_containers/deque/allocator/copy.cc
! 59fc941383d196d89e01517623e7f607  libstdc++-v3/testsuite/23_containers/deque/allocator/copy_assign.cc
! 1f3b833c27f0df3de7d2bfc19b8c15c6  libstdc++-v3/testsuite/23_containers/deque/allocator/default_init.cc
! 2b2f7af50ca5de6938a8a3da4d1f70c4  libstdc++-v3/testsuite/23_containers/deque/allocator/ext_ptr.cc
! 9cf6c39d3c3c64950cfbaabe6ad81a64  libstdc++-v3/testsuite/23_containers/deque/allocator/minimal.cc
! c44c5341ceb2206cd8312507736c90bc  libstdc++-v3/testsuite/23_containers/deque/allocator/move-2.cc
! ac8a39461db958a801716fbb3fb93309  libstdc++-v3/testsuite/23_containers/deque/allocator/move.cc
! b1b2bc6476eaf43660dfabdeaef33027  libstdc++-v3/testsuite/23_containers/deque/allocator/move_assign-2.cc
! b6061ed3da402908c9dc8ca860e0e830  libstdc++-v3/testsuite/23_containers/deque/allocator/move_assign.cc
! a843b36d65920eff97e1de77e2728cd8  libstdc++-v3/testsuite/23_containers/deque/allocator/noexcept.cc
! 4a5789026c741a40eb02917a36b8c36b  libstdc++-v3/testsuite/23_containers/deque/allocator/swap.cc
! 09e5a5305c098cc90f0522c99ff2c748  libstdc++-v3/testsuite/23_containers/deque/capacity/29134-2.cc
! 39e7691fd510adba1693377e5eb3144e  libstdc++-v3/testsuite/23_containers/deque/capacity/29134.cc
! 810304f12f885ca604cf51854ec93af8  libstdc++-v3/testsuite/23_containers/deque/capacity/max_size.cc
! 3a87abfcd762740be3d86cb53b197624  libstdc++-v3/testsuite/23_containers/deque/capacity/moveable.cc
! 914f063c5cf6cf3dbf8bc5bced026c7d  libstdc++-v3/testsuite/23_containers/deque/capacity/resize_size.cc
! f4ec9ec89b0950ec33301041d5b0436e  libstdc++-v3/testsuite/23_containers/deque/capacity/shrink_to_fit.cc
! 53fbeaae586e86061fc05e12e467eaea  libstdc++-v3/testsuite/23_containers/deque/check_construct_destroy.cc
! 15123b75d9f9e985998959e3e6f5c9f3  libstdc++-v3/testsuite/23_containers/deque/cons/1.cc
! 117479d8e3ed7a4f0329bd6b038db81c  libstdc++-v3/testsuite/23_containers/deque/cons/2.cc
! 25d5393a715a92bd59a22f0501a98e48  libstdc++-v3/testsuite/23_containers/deque/cons/55977.cc
! 01c550977ed6f97eccc13ed4abd559fa  libstdc++-v3/testsuite/23_containers/deque/cons/assign/1.cc
! 92631082081c8f819f5c2ca7a53ff901  libstdc++-v3/testsuite/23_containers/deque/cons/clear_allocator.cc
! edafa70194282b786d132121e7e73a90  libstdc++-v3/testsuite/23_containers/deque/cons/cons_size.cc
! b7e6021a4ef915ab233bef0a3d255f1e  libstdc++-v3/testsuite/23_containers/deque/cons/deduction.cc
! f8c9d7254773c1c63b5289ddab3cb190  libstdc++-v3/testsuite/23_containers/deque/cons/moveable.cc
! 602d016a62c7ef99a0a7f997ecb73825  libstdc++-v3/testsuite/23_containers/deque/cons/moveable2.cc
! 1cbdfe30169ea5c8549ccb526a604f9b  libstdc++-v3/testsuite/23_containers/deque/debug/assign1_neg.cc
! 9a43be4162d0c637f00a97255a318a1b  libstdc++-v3/testsuite/23_containers/deque/debug/assign2_neg.cc
! 1fa92a8c4aa3ecb584e794ca2cf19e2b  libstdc++-v3/testsuite/23_containers/deque/debug/assign3_neg.cc
! a352321c82a9ef1a7efc94f34789ec25  libstdc++-v3/testsuite/23_containers/deque/debug/assign4_neg.cc
! 95176c0525d58b3da55334d87af33fec  libstdc++-v3/testsuite/23_containers/deque/debug/construct1_neg.cc
! 4d99a2660219e031d9cb7efef976e01c  libstdc++-v3/testsuite/23_containers/deque/debug/construct2_neg.cc
! e234c7754b95c322a4e103524db9693c  libstdc++-v3/testsuite/23_containers/deque/debug/construct3_neg.cc
! d9d20d4244ef670549d26bb838f3947e  libstdc++-v3/testsuite/23_containers/deque/debug/construct4_neg.cc
! 10c47b820a1fc9ff29b5323742f75ba9  libstdc++-v3/testsuite/23_containers/deque/debug/insert1_neg.cc
! 5a0304683ee8638a4ddc433aff27c1fc  libstdc++-v3/testsuite/23_containers/deque/debug/insert2_neg.cc
! 4b070c3e2b150996f3ac03c3728e564f  libstdc++-v3/testsuite/23_containers/deque/debug/insert3_neg.cc
! 45a75ead90e2815700a674daec40fcbf  libstdc++-v3/testsuite/23_containers/deque/debug/insert4_neg.cc
! 7dd9e2a28601bc3f43f14d20ae0bec09  libstdc++-v3/testsuite/23_containers/deque/debug/insert5_neg.cc
! cd9c952bac8ac34bec5f33b800656864  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/1.cc
! 569dbab12a4458c46a88b84eb5c9caf1  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/2.cc
! 6f17df16f9204e2f0b9a10f9ed4c0e03  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/3.cc
! fccb79c214feae1cfc3228949bdfdf39  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/4.cc
! d04b1a80ac3c01fc7f2be452223a9b72  libstdc++-v3/testsuite/23_containers/deque/debug/iterator_self_move_assign_neg.cc
! 717639cac2011eb9e7f7022a5847ce69  libstdc++-v3/testsuite/23_containers/deque/debug/self_move_assign_neg.cc
! ddd6ea50ddcdbf9a9b4ad6267632d3b3  libstdc++-v3/testsuite/23_containers/deque/debug/shrink_to_fit.cc
! d63b2dd5ac29686b3019ca304f6da1fd  libstdc++-v3/testsuite/23_containers/deque/erasure.cc
! f6667db6768b2c2e32cf0d8411401620  libstdc++-v3/testsuite/23_containers/deque/init-list.cc
! 75a68964259553aa878d11ad5b405aaf  libstdc++-v3/testsuite/23_containers/deque/modifiers/assign/1.cc
! f7205861403f1cf5bfb557aea92fb900  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/52799.cc
! 06af7b247605a127c8ee0b598b2cf249  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc
! df290be39ae48f2b35debce82367df8f  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/const_iterator.cc
! ac17d79cbaded4ce3419d7645f5b7689  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc
! b251117b0adb6068efbf4b4ca34abe3c  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/1.cc
! 1ed85d7db2085f57028e69674355df40  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/2.cc
! 1ce8b301a5332fd19fbe8c30f0a757fc  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/3.cc
! b367538ab0bd1a86047fe919dc42d2b5  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/50529.cc
! 415e3b4237e87cfd82f8d07b3b7bcf71  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/54577.cc
! d03b4a7d5396d6b714f5cbedb8d9d351  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/moveable.cc
! 010976d8b2d69cfd996bcc5854ead6f2  libstdc++-v3/testsuite/23_containers/deque/modifiers/insert/const_iterator.cc
! 19c3a2c1d06488fa0c036feed79d2701  libstdc++-v3/testsuite/23_containers/deque/modifiers/moveable.cc
! b51bd3e28f301195c7111a33f7555a64  libstdc++-v3/testsuite/23_containers/deque/modifiers/push_back/49836.cc
! 877238832980f75979d9f66d44535d90  libstdc++-v3/testsuite/23_containers/deque/modifiers/push_front/49836.cc
! 05ba36f9330ece07c9468707bf6e66c8  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/1.cc
! ec8b1ee01f96a4ab2329a5939b18186f  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/2.cc
! 410b4f9b2833dbae4f71ffff44e4c566  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/3.cc
! 0a30800cf3fa50dfabb38cb394504394  libstdc++-v3/testsuite/23_containers/deque/operators/1.cc
! e9b86b4ccd7773cb7243f1540ce7db3f  libstdc++-v3/testsuite/23_containers/deque/operators/2.cc
! f9435182dddd834698cb80e47843f96e  libstdc++-v3/testsuite/23_containers/deque/operators/cmp_c++20.cc
! d07c787325442dc4c2f29ac31c7dfd0e  libstdc++-v3/testsuite/23_containers/deque/range_access.cc
! 90fabbe656dd10b12f54a316d6582e9b  libstdc++-v3/testsuite/23_containers/deque/requirements/citerators.cc
! 46a3b167959c7de949cf8a062b00e8e3  libstdc++-v3/testsuite/23_containers/deque/requirements/do_the_right_thing.cc
! 1f63aba3e9676a5dfe856d0d15010024  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
! b408a86f5378fa272b81e16b44707f70  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor.cc
! 6cece9f31a922d7f3a0d17272949750b  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
! 5e79f52a22698cb66c3610eadcef2804  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
! 4cd8622a3513be0733c878676f9274c3  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
! b190ec073c7ed7fe2c27dab6a0c0e0be  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/basic.cc
! c4564f8222cddd2aa413a4f8bad39385  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/generation_prohibited.cc
! 13934f143d0e29a3e3ff57355257b680  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/propagation_consistent.cc
! db98d16a36ba0b477bead35f39caac11  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/1.cc
! 2f2c7501ead5bf653dd2ecac27bbe0a3  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/2.cc
! 4d79c2f51cc26840e593e617236409ac  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/3.cc
! f674cc5fcd540f9f583046e4f394f03c  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/4.cc
! 345cdaba75a391ae7adcfbd22abd71dc  libstdc++-v3/testsuite/23_containers/deque/requirements/partial_specialization/1.cc
! a23872fd52c0b50df088c165605f579e  libstdc++-v3/testsuite/23_containers/deque/requirements/typedefs.cc
! ba8df67f59ed778227a5ed355b593731  libstdc++-v3/testsuite/23_containers/deque/types/1.cc
! 1c25824f9df13b794194aea5818f1ae4  libstdc++-v3/testsuite/23_containers/deque/types/92267.cc
! 17636f3d5f9db658e95d914b483673cf  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs.cc
! 3af7d0111341b8a477e13d4eb275b3a2  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs_debug.cc
! 9b145ccf4c0cf07c1be0b55ebe970877  libstdc++-v3/testsuite/23_containers/forward_list/48101-2_neg.cc
! 4146ff5c750adc5cbbfdb3635f4097cb  libstdc++-v3/testsuite/23_containers/forward_list/48101-3_neg.cc
! 2155db73baad997546a278209ed87de5  libstdc++-v3/testsuite/23_containers/forward_list/48101_neg.cc
! 19369e7fa1ed5fb759f484339ac8317a  libstdc++-v3/testsuite/23_containers/forward_list/92124.cc
! 360bd2e0581ec478cc3543c0cb670731  libstdc++-v3/testsuite/23_containers/forward_list/allocator/copy.cc
! b5aacb1e5a6c3033d4802a88923ef245  libstdc++-v3/testsuite/23_containers/forward_list/allocator/copy_assign.cc
! 5917002ddc33c4d48e193c48835990d1  libstdc++-v3/testsuite/23_containers/forward_list/allocator/default_init.cc
! de579ad6b9a95fb6729c6f00a2a9d68e  libstdc++-v3/testsuite/23_containers/forward_list/allocator/ext_ptr.cc
! 522124d3a8d7f4c529fed68dab5c513a  libstdc++-v3/testsuite/23_containers/forward_list/allocator/minimal.cc
! 382cfcdc392a34b828b82fbe3b23f01d  libstdc++-v3/testsuite/23_containers/forward_list/allocator/move.cc
! 59ab306b683a094cb6b63feb15e0c5b5  libstdc++-v3/testsuite/23_containers/forward_list/allocator/move_assign.cc
! 7d71a63107ccbc76412ac2e62b3def45  libstdc++-v3/testsuite/23_containers/forward_list/allocator/noexcept.cc
! 365b914ccf7faab7afc4b95430ca5190  libstdc++-v3/testsuite/23_containers/forward_list/allocator/swap.cc
! 4a58bf6a70150e30bdc6631c5f67f494  libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc
! 5e961c0a5005734e64040821725142d2  libstdc++-v3/testsuite/23_containers/forward_list/capacity/resize_size.cc
! 27b23b7e57ad33ad43440bd8dcee2128  libstdc++-v3/testsuite/23_containers/forward_list/cmp_c++20.cc
! 31f0b01ec59eafc89f66d21b0c6fea76  libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc
! a726134369308275a79f9141bc0cfc61  libstdc++-v3/testsuite/23_containers/forward_list/cons/1.cc
! 61fd3b9502be4f414f806e64176f942d  libstdc++-v3/testsuite/23_containers/forward_list/cons/10.cc
! 8594b1b5764467df1de6d60c573fbcf3  libstdc++-v3/testsuite/23_containers/forward_list/cons/11.cc
! 2600349f4ad6017695c47de6bccce7db  libstdc++-v3/testsuite/23_containers/forward_list/cons/12.cc
! 03f7f6ee4dea2e58dd7b3cdb875f7490  libstdc++-v3/testsuite/23_containers/forward_list/cons/13.cc
! edd23ea12d077d24f4f87e1d98446667  libstdc++-v3/testsuite/23_containers/forward_list/cons/14.cc
! aa64899221c6867d8e66f4e6bb14f3b2  libstdc++-v3/testsuite/23_containers/forward_list/cons/2.cc
! b7fd9de08dac2b2520fccea45ff9a726  libstdc++-v3/testsuite/23_containers/forward_list/cons/3.cc
! 674ba2be948bc6735395ce8da98e48d2  libstdc++-v3/testsuite/23_containers/forward_list/cons/4.cc
! ab2cd154b0e737cbcdde427910a9a6ff  libstdc++-v3/testsuite/23_containers/forward_list/cons/5.cc
! 0736b4d7ea87d2c357f05392ed15874d  libstdc++-v3/testsuite/23_containers/forward_list/cons/6.cc
! 3a5a007269e7e745980ea937e150a44e  libstdc++-v3/testsuite/23_containers/forward_list/cons/7.cc
! eeeb3a6027d40ef7b5592c21ce0dab10  libstdc++-v3/testsuite/23_containers/forward_list/cons/8.cc
! a583edba4d5736237183440ac9a8d48f  libstdc++-v3/testsuite/23_containers/forward_list/cons/87809.cc
! 0118e467da3ff98df3c37d06c4618039  libstdc++-v3/testsuite/23_containers/forward_list/cons/9.cc
! 8ff20500ef9fdd0963a64e4b31253ee5  libstdc++-v3/testsuite/23_containers/forward_list/cons/cons_size.cc
! c0666defe6850f99fa397fd02a8f9fdb  libstdc++-v3/testsuite/23_containers/forward_list/cons/deduction.cc
! c50fd9939b9ad794c18b0805651d9526  libstdc++-v3/testsuite/23_containers/forward_list/cons/moveable.cc
! 3d22b0b70dfab123a136316fa45ce983  libstdc++-v3/testsuite/23_containers/forward_list/cons/noexcept_move_construct.cc
! c06d2e295b771743b86dfdfcc0e34193  libstdc++-v3/testsuite/23_containers/forward_list/debug/60499.cc
! 62eac9859afb800e8a36efc65590f350  libstdc++-v3/testsuite/23_containers/forward_list/debug/clear.cc
! 4ccbee3aeccea666eb33bb346c8adc24  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct1_neg.cc
! 2d06b27da8add1cef5d86f76c39f507a  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct2_neg.cc
! 2ed70bf58770bafc39c66457fa1bb080  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct3_neg.cc
! 4159d74ce16a30360e2fb0ea71f4a7b9  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct4_neg.cc
! d6caf8090df0c3427d6988630bdecdc7  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after1_neg.cc
! 18aee74fe367a690ffc02c66a619c96b  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after2_neg.cc
! 91b36d3d56bc2e01aac3c547331105f6  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after3_neg.cc
! e2ad067bd2570dddfc58be5290755f29  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after4_neg.cc
! 8993dedd0b8c390af215fff6aa3ed20d  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after5_neg.cc
! c82eb0e48a74e9014b981e317f3434a3  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after6_neg.cc
! 9eeca89ddccd286a6e17c5fe1ebf5fb0  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after7_neg.cc
! 9eba9815d5182834321db73b1a6aecdb  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after8_neg.cc
! 33ae73bc3d26d1568ade8c0d1416e14c  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after9_neg.cc
! 0c33130d0b3a9c8af72801dd32337214  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after1_neg.cc
! cdd5e88af3375a75c799b64ba8586c09  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after2_neg.cc
! 91006d58e2ef157b6006d7a9dbb31fca  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after3_neg.cc
! c01ee1c35de354c9ba0679609c37d9c4  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after4_neg.cc
! 255821a42620390c56d2ec7fdef48661  libstdc++-v3/testsuite/23_containers/forward_list/debug/iterator_self_move_assign_neg.cc
! 74d174dbbcd202cd2e1564b3d1ce20c6  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_assign_neg.cc
! f320329e8016125dc785240d1129b88d  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_constructor.cc
! b72a274b163c3b7ce75507bcf58ed79f  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_neg.cc
! 5b3f3f5994c45a8b47fed3e5f8cc6a68  libstdc++-v3/testsuite/23_containers/forward_list/debug/self_move_assign_neg.cc
! 860c2b1c5401280cf4fbb5779d6817f4  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after.cc
! d1728046bed281b4ac7ab29816559cab  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after1_neg.cc
! d8b08be3d32ea9a1feb52f320901042e  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after2_neg.cc
! f9df8f1940a0ae0cf3826d6d4e236199  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after3_neg.cc
! 1535f6503d3d6dd0a0a3a58c55376dc6  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after4_neg.cc
! cbdb6552ae34099dd700037fafb3d694  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after5_neg.cc
! c6947f761fbc40810ddabb5c71491d96  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after6_neg.cc
! 19175c633affb224f3f07c9c186dd8c5  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after7_neg.cc
! 4cc509c276835c9e5b8d0bb1e404ae01  libstdc++-v3/testsuite/23_containers/forward_list/debug/swap.cc
! 5dce380c6c75ded3bd6ac5ca8304799b  libstdc++-v3/testsuite/23_containers/forward_list/erasure.cc
! 0d828a0e111871f03ff1b800d213c638  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/1.cc
! 12229abb14942c3b29b8fcbd3250a345  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/2.cc
! 6867893cf6d3ec58cf63c8bbc506f97a  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/3.cc
! fa99594d8783ec7ea5929ebd0c94daed  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/4.cc
! ebed0607d13e8813292bf893e6652218  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/5.cc
! 00d592860dd091dfcea4f0d1b2b2b5bb  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/6.cc
! ecf10451546d2ea6748f43ca5f47109e  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/92878_92947.cc
! d9b295bfb717922391d0e366ade90a34  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/addressof.cc
! ea74817da39de52695cec85169ad3a4d  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc
! 224edcdb255e569e1fe2ea5ab8437f35  libstdc++-v3/testsuite/23_containers/forward_list/operations/1.cc
! 80ad82d15c97c7ad9fb5d8d172ecff21  libstdc++-v3/testsuite/23_containers/forward_list/operations/2.cc
! b3a7efd6f1764048eb9361af85838154  libstdc++-v3/testsuite/23_containers/forward_list/operations/3.cc
! ebbe06f695fb454c6baac9488460974e  libstdc++-v3/testsuite/23_containers/forward_list/operations/4.cc
! 4028f55700ba0d0a410d6aa1de8df9af  libstdc++-v3/testsuite/23_containers/forward_list/operations/5.cc
! 81895266077131e4bdc98c746ddd8334  libstdc++-v3/testsuite/23_containers/forward_list/operations/6.cc
! eb7e3d42e0735daf9323809ae40a5ae4  libstdc++-v3/testsuite/23_containers/forward_list/operations/7.cc
! 66e798b8858fe7575f1aec586f1985fc  libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc
! 076354de08627adeb4823f95cc693004  libstdc++-v3/testsuite/23_containers/forward_list/operations/remove_cxx20_return.cc
! 595f8365cb299cf43444019f522608d0  libstdc++-v3/testsuite/23_containers/forward_list/operations/remove_freed.cc
! e5cc1378632869725929748ab203dce3  libstdc++-v3/testsuite/23_containers/forward_list/operations/unique_cxx20_return.cc
! 0c63548976ca674149b07e490dc29534  libstdc++-v3/testsuite/23_containers/forward_list/pmr_typedefs.cc
! 060623db7b31a3bb55943a97cb505e82  libstdc++-v3/testsuite/23_containers/forward_list/pmr_typedefs_debug.cc
! bd6f1129f468423b5b72ba91aff9caf7  libstdc++-v3/testsuite/23_containers/forward_list/range_access.cc
! 82e2c50f8679762168cf61cc41d5c660  libstdc++-v3/testsuite/23_containers/forward_list/requirements/citerators.cc
! 9e3a309c1795a5bc7870237694a4907c  libstdc++-v3/testsuite/23_containers/forward_list/requirements/do_the_right_thing.cc
! 773c9074f8da0c78e2c4643b4f9be0db  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc
! 4181f0a5e912a42ddbfbcb90ddb32a41  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor.cc
! d710a542788b596834331997902dbcb3  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc
! daae31a6feca36b3213d3ec1372216ad  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc
! f8e1e839e369244531367f0a1ba6e04d  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc
! c39a18eb21bcd19a90ba4c9b946d2e01  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/basic.cc
! 1185fcc9615600821d8c70cdc4e84433  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/generation_prohibited.cc
! 792698514355cd843faf89335977b8d9  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/propagation_consistent.cc
! d98dbf342395c57710aab66a9b29a24e  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/1.cc
! 3490552ed6833920e2d93dc907f4775a  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/3.cc
! 7d4ef2a4da8dbf2b21925a2b70eeeb8a  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/4.cc
! d6ba3eb47d59a485fa306cd855042215  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/5.cc
! 4f743bf1997d9066827c582a1ee0e03d  libstdc++-v3/testsuite/23_containers/forward_list/requirements/typedefs.cc
! f7c812c511fc7e5ca5d02152f7ce0e19  libstdc++-v3/testsuite/23_containers/forward_list/types/1.cc
! 4ed42a3e99068b01d13f20350d4dfd6c  libstdc++-v3/testsuite/23_containers/headers/array/std_c++0x_neg.cc
! 31cc4dcfc7f94cdc0ba87a1482ebf7be  libstdc++-v3/testsuite/23_containers/headers/bitset/synopsis.cc
! e48a0c627d29a798f55e988eb99fb80a  libstdc++-v3/testsuite/23_containers/headers/deque/synopsis.cc
! 910bf393f68904079426245a1b9be905  libstdc++-v3/testsuite/23_containers/headers/forward_list/synopsis.cc
! 987604f5fe23b506c5373882a88b1988  libstdc++-v3/testsuite/23_containers/headers/list/synopsis.cc
! 6ceeb31c825b83175c966a00ffa458d7  libstdc++-v3/testsuite/23_containers/headers/map/synopsis.cc
! 3d2ede2f6f21a67cc06b8c93c581cd24  libstdc++-v3/testsuite/23_containers/headers/queue/synopsis.cc
! 2f2062893b3345696166d45a601a382c  libstdc++-v3/testsuite/23_containers/headers/set/synopsis.cc
! 0db52928eb371151069392b61296cb36  libstdc++-v3/testsuite/23_containers/headers/stack/synopsis.cc
! 2cd4e0e44129484be3863a0bb33109ca  libstdc++-v3/testsuite/23_containers/headers/tuple/std_c++0x_neg.cc
! fcd78bc2df2dc2bf5636b42401413532  libstdc++-v3/testsuite/23_containers/headers/tuple/types_std_c++0x.cc
! ac15a2e10205e321a5d1220415d6f98b  libstdc++-v3/testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc
! dba883a8eef2161a6c5d833104241f8c  libstdc++-v3/testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc
! 1d1e9975566026ba3f6f7b6ab1f7ae1b  libstdc++-v3/testsuite/23_containers/headers/vector/synopsis.cc
! f37a9441087e5c3ff52bd06dd6030ee4  libstdc++-v3/testsuite/23_containers/list/14340.cc
! 7a268ce73bd84c542fdce9520b46608d  libstdc++-v3/testsuite/23_containers/list/18604.cc
! 9f32023e8b98e7556ca4289694710592  libstdc++-v3/testsuite/23_containers/list/23781_neg.cc
! 319428731ccb8f3e58aff5ba900ec4ba  libstdc++-v3/testsuite/23_containers/list/48101-2_neg.cc
! 8cf0267ff31d6528ce05b2081fde960b  libstdc++-v3/testsuite/23_containers/list/48101-3_neg.cc
! 30379426c69caf1c88a19a93fbf214a7  libstdc++-v3/testsuite/23_containers/list/48101_neg.cc
! 0912661be48b92e86e840b226fc50824  libstdc++-v3/testsuite/23_containers/list/58764.cc
! 6934da071866e41d2bdf1cb9e1ac068c  libstdc++-v3/testsuite/23_containers/list/61347.cc
! 9653dec843c85e0aadbbafdc413519af  libstdc++-v3/testsuite/23_containers/list/68222_neg.cc
! 6655b65d041518d334c33ae2c57f0268  libstdc++-v3/testsuite/23_containers/list/92124.cc
! c3746d5239453f65581342d72e3369e1  libstdc++-v3/testsuite/23_containers/list/allocator/copy.cc
! ca6f2cb997b1883c366bf201b197c74c  libstdc++-v3/testsuite/23_containers/list/allocator/copy_assign.cc
! 1d81cc3034e707afb9f9072b92fdc827  libstdc++-v3/testsuite/23_containers/list/allocator/default_init.cc
! 80161d29960b469e4e6ac016638350f3  libstdc++-v3/testsuite/23_containers/list/allocator/minimal.cc
! 0e14824b69d0392a5fbc9342c8efcdb0  libstdc++-v3/testsuite/23_containers/list/allocator/move.cc
! da86427e9ab36f645b22edbfe0beee49  libstdc++-v3/testsuite/23_containers/list/allocator/move_assign.cc
! f35274b17a9f0a875a2ec83ec09082bb  libstdc++-v3/testsuite/23_containers/list/allocator/noexcept.cc
! ffbe7b2ba33d7b12b008a3fcc6f7fd49  libstdc++-v3/testsuite/23_containers/list/allocator/swap.cc
! f4cb5238da585ac8062f26bfc736c9de  libstdc++-v3/testsuite/23_containers/list/capacity/1.cc
! 02884c540eb176062c0ada59c453ec57  libstdc++-v3/testsuite/23_containers/list/capacity/1.h
! 3c324b5e99a454ec8ca2b3fd178837ab  libstdc++-v3/testsuite/23_containers/list/capacity/29134.cc
! 5de842190f6e664f63d5bc03a5062a1d  libstdc++-v3/testsuite/23_containers/list/capacity/resize_size.cc
! bf1c30fb84c9fb798946b18dd80274d5  libstdc++-v3/testsuite/23_containers/list/check_construct_destroy.cc
! e5c04bbdb535d99110399141b8fb8ef1  libstdc++-v3/testsuite/23_containers/list/check_construct_destroy.h
! d4ee86670497a49244af98fce1a62673  libstdc++-v3/testsuite/23_containers/list/cmp_c++20.cc
! 9265fcff81bcc52b77f52347e25a5319  libstdc++-v3/testsuite/23_containers/list/cons/1.cc
! 701be137f925906386ecdbbfdc24bfae  libstdc++-v3/testsuite/23_containers/list/cons/1.h
! 893f0d5f734d17f48cb995a79f148d9d  libstdc++-v3/testsuite/23_containers/list/cons/2.cc
! 51fc08cbcb2f57777dd1d0539b86556f  libstdc++-v3/testsuite/23_containers/list/cons/2.h
! ca62b35c26b2db7d970d4e6b163b84b5  libstdc++-v3/testsuite/23_containers/list/cons/3.cc
! eb3f95cbc22827d9beff630bddc829fb  libstdc++-v3/testsuite/23_containers/list/cons/3.h
! dbbab6365fcef651a238eb225ee7ecd7  libstdc++-v3/testsuite/23_containers/list/cons/4.cc
! fa9c9865a20e4690feba9353dd753803  libstdc++-v3/testsuite/23_containers/list/cons/4.h
! ff4534e321f5707f225314238d9e2f1b  libstdc++-v3/testsuite/23_containers/list/cons/5.cc
! 03c8d61e222e31d9824f6a8fed98c25c  libstdc++-v3/testsuite/23_containers/list/cons/5.h
! 427dd657b18130159ecb876ea2d67be4  libstdc++-v3/testsuite/23_containers/list/cons/55979.cc
! 0e0789e9750ebc9fa4842c322e2db168  libstdc++-v3/testsuite/23_containers/list/cons/6.cc
! 563314a67ca1b9664dd53fd09a36bf55  libstdc++-v3/testsuite/23_containers/list/cons/6.h
! 425f5b0a406eaec535d7fc706e1856b2  libstdc++-v3/testsuite/23_containers/list/cons/7.cc
! d2e8f45c73440c264501fe53cfe5c369  libstdc++-v3/testsuite/23_containers/list/cons/7.h
! 67807b89b1c4596ea31cbdf761847d7e  libstdc++-v3/testsuite/23_containers/list/cons/8.cc
! 6599658bd12334d2cfa2bcbfcf4b3db9  libstdc++-v3/testsuite/23_containers/list/cons/8.h
! a3f4c9cc0040fff5bea706e2a1589af1  libstdc++-v3/testsuite/23_containers/list/cons/87809.cc
! dfe5902e7a65bf55f963141bbe3863b3  libstdc++-v3/testsuite/23_containers/list/cons/9.cc
! 345d906298a81e61868e9d97acaca44f  libstdc++-v3/testsuite/23_containers/list/cons/9.h
! 20cc115abbeb3d7b765a3074be40388c  libstdc++-v3/testsuite/23_containers/list/cons/clear_allocator.cc
! a187cedff94a3ef1bec363b76acb8627  libstdc++-v3/testsuite/23_containers/list/cons/clear_allocator.h
! 21f5c4f11d35a0f0f7eaecabd6c09063  libstdc++-v3/testsuite/23_containers/list/cons/cons_size.cc
! 1f1ef53bb03e2b5222cbfe0d084a29cc  libstdc++-v3/testsuite/23_containers/list/cons/deduction.cc
! b3e8de1c909e422d65a693454d894e77  libstdc++-v3/testsuite/23_containers/list/cons/moveable.cc
! 6a6357695a5b951dbcbeaaf0da3390f6  libstdc++-v3/testsuite/23_containers/list/cons/moveable.h
! 1f930c95b49abb429dfda379f89ce3a3  libstdc++-v3/testsuite/23_containers/list/cons/noexcept_move_construct.cc
! 05bb64a4a4f10c0c8720da8796ac483c  libstdc++-v3/testsuite/23_containers/list/debug/assign1_neg.cc
! a7f9cfbd20ca4d13f0d2d3c20d4f43f7  libstdc++-v3/testsuite/23_containers/list/debug/assign2_neg.cc
! 427056cb45f7e028050c72cbebc772a6  libstdc++-v3/testsuite/23_containers/list/debug/assign3_neg.cc
! d1c95016c22179f0e0cc5afc2d299259  libstdc++-v3/testsuite/23_containers/list/debug/assign4_neg.cc
! 8ffa3e88c4007062282172c50c1346a0  libstdc++-v3/testsuite/23_containers/list/debug/construct1_neg.cc
! de17d612cf749c54baa08ab64bce55c0  libstdc++-v3/testsuite/23_containers/list/debug/construct2_neg.cc
! fa650c42f6c209dbc546478da0d79681  libstdc++-v3/testsuite/23_containers/list/debug/construct3_neg.cc
! 5f0e7dd9af6d6c0ea5bd3060fd406866  libstdc++-v3/testsuite/23_containers/list/debug/construct4_neg.cc
! 8478e73a4185340419a5389dd2b3c623  libstdc++-v3/testsuite/23_containers/list/debug/insert1_neg.cc
! bdc9e96eaf63839c7c823573d68134ac  libstdc++-v3/testsuite/23_containers/list/debug/insert2_neg.cc
! 5e1e2f71ab934bdb3cc18d8fd4ad3387  libstdc++-v3/testsuite/23_containers/list/debug/insert3_neg.cc
! c2960e12c2dc4bd80a448e4edf33846b  libstdc++-v3/testsuite/23_containers/list/debug/insert4_neg.cc
! 4d624f1678a0056619a6c41102a5dcc0  libstdc++-v3/testsuite/23_containers/list/debug/insert5_neg.cc
! f9ac9222232588890abe9eb56e8ec659  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/1.cc
! 210c8f906760e9f1d03f02a0692245f7  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/2.cc
! 4fa841a551140dd0d76b1d50c794f417  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/3.cc
! ed399a92e21c1011af3f63efc5dd3176  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/4.cc
! 7d150edb849160593b9c038a7745dd8e  libstdc++-v3/testsuite/23_containers/list/debug/iterator_self_move_assign_neg.cc
! d28823aef2f9999a6bae10c43b73571f  libstdc++-v3/testsuite/23_containers/list/debug/self_move_assign_neg.cc
! dffec3aafa19846f070578d42343c78b  libstdc++-v3/testsuite/23_containers/list/erasure.cc
! 63816188d6b7e1ec0e3b3b6d7a06f32e  libstdc++-v3/testsuite/23_containers/list/init-list.cc
! 594a05128d81cc18a2d2dc419a311b8e  libstdc++-v3/testsuite/23_containers/list/init-list.h
! 60593d52737578515d0a07d5d9a6ef15  libstdc++-v3/testsuite/23_containers/list/modifiers/1.cc
! ff6038473002c39f98dcf25b2dc26d8d  libstdc++-v3/testsuite/23_containers/list/modifiers/1.h
! 46748d5f186b62b4a628c97148980497  libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc
! 1c100bb0df35687a1a769bf8ccd49202  libstdc++-v3/testsuite/23_containers/list/modifiers/2.cc
! 85ee8d24f0344b33fd8fc7b7c5c803a5  libstdc++-v3/testsuite/23_containers/list/modifiers/2.h
! 9e884fa885c2b8d23a6faca93dca5e86  libstdc++-v3/testsuite/23_containers/list/modifiers/3.cc
! b9476b8b25e0e84b9b4c7b6169500348  libstdc++-v3/testsuite/23_containers/list/modifiers/3.h
! d2d73acfab188d95ea60602ca31455db  libstdc++-v3/testsuite/23_containers/list/modifiers/addressof.cc
! f82b4c220847f6162e3ad4a00ecf2ed6  libstdc++-v3/testsuite/23_containers/list/modifiers/assign/1.cc
! a98a602bc8156512f75a3847aaf620fc  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/52799.cc
! 3c635e069ca3143242a2aeda7fa0d136  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/92878_92947.cc
! 429e80757b6d95e1efe1640275b488c8  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/const_iterator.cc
! 41b7dd4441b5605f29ee55b5de79bebb  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc
! 150a3e93add79ea26d845954a494713f  libstdc++-v3/testsuite/23_containers/list/modifiers/erase/54577.cc
! c4a142c33f976dd2ddf522818a72a81f  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.cc
! 22e5a7148e339e7e634a7568d2f08a9b  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.h
! 41f6fce513b11e60d1b73473c4036b00  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/const_iterator.cc
! bb1c5589d7d05497f3364034e396b7ed  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/1.cc
! bc1c7c210bd97e4317028aff40dea114  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/1.h
! 97add9c057d445dc04101faf0d27a8da  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/2.cc
! e333ab28aeaead0a9f72df9113607f67  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/2.h
! 450955e866906cffd6b5c8a98b498ee2  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/3.cc
! 2da721e92bdab46f8dc1a356c6e6750c  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/3.h
! 0595d97fbe25a2f8570cd25381805da3  libstdc++-v3/testsuite/23_containers/list/operations/1.cc
! a9bff7c075fe689e4992ff2e75df0f82  libstdc++-v3/testsuite/23_containers/list/operations/1.h
! a9e43600736aa030ba231d3d0eeecffe  libstdc++-v3/testsuite/23_containers/list/operations/2.cc
! d8f2c4f690ee55d89d2ca81110abc4af  libstdc++-v3/testsuite/23_containers/list/operations/2.h
! 617fa531befa53a1e5c75ba72e8ec8fe  libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc
! caa0acbae4a0adee2443f95a4170e8af  libstdc++-v3/testsuite/23_containers/list/operations/3.cc
! 72e9ddb1eb2b2949396891cde54c9806  libstdc++-v3/testsuite/23_containers/list/operations/3.h
! 09bcc48b2607236477cbf1cc2b73c90b  libstdc++-v3/testsuite/23_containers/list/operations/35969.cc
! 13c853a1716ea1f02168633b7f34261c  libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc
! 1c1fc7fdd1c445f27ca90e6011443ef1  libstdc++-v3/testsuite/23_containers/list/operations/4.cc
! fa11e134e7044a0d27b18d1870fce5d0  libstdc++-v3/testsuite/23_containers/list/operations/4.h
! f057a83fe703e0de410ac9a9483cece9  libstdc++-v3/testsuite/23_containers/list/operations/42352.cc
! 117c08c70e684b6b5a3efc822ee00016  libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
! ffbe23f42a14cf1fe52cf7c962386771  libstdc++-v3/testsuite/23_containers/list/operations/80034.cc
! 0126778a142a75011bb167c42c132dae  libstdc++-v3/testsuite/23_containers/list/operations/remove_cxx20_return.cc
! 58ddad892b9857e9bca18e870f418598  libstdc++-v3/testsuite/23_containers/list/operations/splice/const_iterator.cc
! b3f63ed1f9e7b513afd69ea22b44fbd0  libstdc++-v3/testsuite/23_containers/list/operations/unique_cxx20_return.cc
! fc1645bbd914411837de5398d73f6806  libstdc++-v3/testsuite/23_containers/list/pmr_typedefs.cc
! b23b2947ee39cf3d7e444acb8bab351e  libstdc++-v3/testsuite/23_containers/list/pmr_typedefs_debug.cc
! d5c9a9e4ce5fd0fe29b123b4c64af877  libstdc++-v3/testsuite/23_containers/list/pthread1.cc
! 9cd6b1bdd7854da4eed6b978837a8a6b  libstdc++-v3/testsuite/23_containers/list/pthread5.cc
! 29324d213225c877d496d7bdd8f1725a  libstdc++-v3/testsuite/23_containers/list/range_access.cc
! 4c3e0faac0caab8b1b53a0cc093e4453  libstdc++-v3/testsuite/23_containers/list/requirements/citerators.cc
! f40897d132167fb3deecb8b158439d7b  libstdc++-v3/testsuite/23_containers/list/requirements/do_the_right_thing.cc
! 6e594acef6bcb0c0597905b0e97ac196  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
! 63bf57b787729d27b67dbae982bce1f2  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor.cc
! 21bb33fa8e9705888e63d761187f85f4  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
! 82408cf8700a42cf6d868dbd3fc08f2f  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
! 6070459648a43afb822e44b06acf80f0  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
! 4d0a573b6113cc5dd010527e920d0af1  libstdc++-v3/testsuite/23_containers/list/requirements/exception/basic.cc
! 02f83b5091ba39efb671f857e0257316  libstdc++-v3/testsuite/23_containers/list/requirements/exception/generation_prohibited.cc
! 1e727d481def07242d916ae1028e4bdf  libstdc++-v3/testsuite/23_containers/list/requirements/exception/propagation_consistent.cc
! 027317e460f416db7c668122639f859a  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/1.cc
! fbc6045994d55f16223ed35b7aa35fbe  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/2.cc
! 5cdb73caecb10fa0ec9e093c3a4442fc  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/3.cc
! 9eb1a033596d0bd77ae9dcb5e56d8020  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/4.cc
! 3a99cb0234c9741b065d42b908d23e64  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/5.cc
! ba55b81270941f88cc8a011e0685e9ff  libstdc++-v3/testsuite/23_containers/list/requirements/partial_specialization/1.cc
! 5fa237bd3bcef2f91af7e3aa34bc7031  libstdc++-v3/testsuite/23_containers/list/requirements/typedefs.cc
! d06ab96caaabb9947fa2f0ac2704d446  libstdc++-v3/testsuite/23_containers/list/types/1.cc
! 221729a5167f9863090c1e3c5ef40ffa  libstdc++-v3/testsuite/23_containers/map/14340.cc
! 626e83017c4ceae0ff4e2aba2d87e048  libstdc++-v3/testsuite/23_containers/map/18604.cc
! e8c4062264303a3e8aed6d0bc316fd3c  libstdc++-v3/testsuite/23_containers/map/23781_neg.cc
! fb1e199ff1b9191aca802abee2078d7b  libstdc++-v3/testsuite/23_containers/map/48101-2_neg.cc
! 0d276b27b1c5e767a5bbcc11b6db3d37  libstdc++-v3/testsuite/23_containers/map/48101-3_neg.cc
! a682336bce121b61e7278163fe49efaf  libstdc++-v3/testsuite/23_containers/map/48101_neg.cc
! c7864208a835b8b05b524b5a1152e981  libstdc++-v3/testsuite/23_containers/map/56613.cc
! 61e85b427890f529aaeb101e727f9dda  libstdc++-v3/testsuite/23_containers/map/58764.cc
! c4cda67aa39afece5a5dbf48fa0fe0e6  libstdc++-v3/testsuite/23_containers/map/59872.cc
! 7e3d8498da2e2b3f7d870d81b148968c  libstdc++-v3/testsuite/23_containers/map/77334.cc
! d1dd1bdfab9f4190369ab6a50dc9fba8  libstdc++-v3/testsuite/23_containers/map/92124.cc
! 48445c4519942f50e9a4711841dd3a69  libstdc++-v3/testsuite/23_containers/map/allocator/copy.cc
! c0680ec2956b0558accb310957d2a3ea  libstdc++-v3/testsuite/23_containers/map/allocator/copy_assign.cc
! 32f87e0a012ec76ebd8b1e2ad33d78f1  libstdc++-v3/testsuite/23_containers/map/allocator/default_init.cc
! 99ba0eb3e1041cf1b29417d6bafde0c0  libstdc++-v3/testsuite/23_containers/map/allocator/init-list.cc
! c2d0bb4b645b2e6b8616fadb390e0795  libstdc++-v3/testsuite/23_containers/map/allocator/minimal.cc
! c0fed2cc3c9e96e74a32755a01f0cbf0  libstdc++-v3/testsuite/23_containers/map/allocator/move.cc
! 41e637463c7e5845564edbd388d49cdf  libstdc++-v3/testsuite/23_containers/map/allocator/move_assign.cc
! 265babf8b5d1dd369038b215c8bd2519  libstdc++-v3/testsuite/23_containers/map/allocator/noexcept.cc
! 9cbad073e57d7c29e0f293730d0ee890  libstdc++-v3/testsuite/23_containers/map/allocator/swap.cc
! 3e110dc4819394a87d9ccc877d4dddfb  libstdc++-v3/testsuite/23_containers/map/capacity/29134.cc
  529756ae90a32204608c2c98fd51f6e7  libstdc++-v3/testsuite/23_containers/map/cons/deduction.cc
! 51d6c9810bc3ef5be19d798078c59f83  libstdc++-v3/testsuite/23_containers/map/cons/moveable.cc
! 70e65d98a12560fd67d687962a1c7a0f  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_default_construct.cc
! 3a2617635339f35e024a35ad9b6fbdd6  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_move_construct.cc
! c473169114d7088fd545ba3c65015387  libstdc++-v3/testsuite/23_containers/map/debug/60499.cc
! cc623baaf15271320b23aae0cbb6e7a2  libstdc++-v3/testsuite/23_containers/map/debug/construct1_neg.cc
! b976b5e429a34831b5c5e90548077f17  libstdc++-v3/testsuite/23_containers/map/debug/construct2_neg.cc
! c6a5f746f033bd8c5e88294d4914d3e4  libstdc++-v3/testsuite/23_containers/map/debug/construct3_neg.cc
! a75c771a1df9ac11818b024d900151c6  libstdc++-v3/testsuite/23_containers/map/debug/construct4_neg.cc
! 67579061b3a5cd42c5fb62d3fde1fbb3  libstdc++-v3/testsuite/23_containers/map/debug/construct5_neg.cc
! f704f51651cbf4e68088e488c985c433  libstdc++-v3/testsuite/23_containers/map/debug/insert1_neg.cc
! cfd87a39c7ad6ca6c15b30b1bc0bbe92  libstdc++-v3/testsuite/23_containers/map/debug/insert2_neg.cc
! 2e77fabba4fe72804f865dc04ce99499  libstdc++-v3/testsuite/23_containers/map/debug/insert3_neg.cc
! c907bef268bd37ea43fb2c2434a58469  libstdc++-v3/testsuite/23_containers/map/debug/insert4_neg.cc
! b88c7fde8f7c85a892ed104cfb247a8c  libstdc++-v3/testsuite/23_containers/map/debug/invalidation/1.cc
! f9d321fb15fdef5639b1e553bcef44d1  libstdc++-v3/testsuite/23_containers/map/debug/invalidation/2.cc
! 4937cd16b07240532e0f3907a1f038cf  libstdc++-v3/testsuite/23_containers/map/debug/iterator_self_move_assign_neg.cc
! fbd449eb33d1ecd4ee7d5e07fa52a32f  libstdc++-v3/testsuite/23_containers/map/debug/move_assign_neg.cc
! afc8707441d034086e7d6e2c0fe1594f  libstdc++-v3/testsuite/23_containers/map/debug/move_neg.cc
! e8294d65217cfd14b4b06bd77dca13df  libstdc++-v3/testsuite/23_containers/map/debug/self_move_assign_neg.cc
! 3388fd3d0621c7be12a969fa0a0b00ea  libstdc++-v3/testsuite/23_containers/map/element_access/1.cc
! 58d6fe05efecbdbcec03c623794ed5a9  libstdc++-v3/testsuite/23_containers/map/element_access/2.cc
! f720e5f9542a62009011549eef84e248  libstdc++-v3/testsuite/23_containers/map/element_access/39901.cc
! d10cb5440b975444f10f7bd4953d2c26  libstdc++-v3/testsuite/23_containers/map/element_access/46148.cc
! cacf02cdf43fff6ac038ac856ebc6cde  libstdc++-v3/testsuite/23_containers/map/erasure.cc
! 6d3f20007518f399a106a4f7983a693a  libstdc++-v3/testsuite/23_containers/map/init-list.cc
! c1058fd9fbb72e0519ae0216d175b040  libstdc++-v3/testsuite/23_containers/map/modifiers/dr130.cc
! 567e05cf6b4d1b7a4483edd0f4a257c8  libstdc++-v3/testsuite/23_containers/map/modifiers/emplace/1.cc
! d06d87fd419940c87ff6d09e9fbcfdf4  libstdc++-v3/testsuite/23_containers/map/modifiers/emplace/92878_92947.cc
! 57db3b59d9fc392f1ec0b5b75934dee8  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/47628.cc
! 46b16e4132b42439eb00ac1c0781481c  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc
! 73fc7817542ae406c32bb1123599c6a5  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/abi_tag.cc
! fd9cac115489d2efdbbce8f9a4c836e7  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/dr130-linkage-check.cc
! 9da8736fa72bdab4c17a808578a4cedb  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/end_neg.cc
! 64d8a751e824d27b300c1569dc669497  libstdc++-v3/testsuite/23_containers/map/modifiers/extract.cc
! 3c8d0d298df6eab18e80c2c03cd8bc26  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/1.cc
! 95f5fef5d46382545ae99d4d194912d2  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/16813.cc
! 2b0b7cd8db8994c1e29068142f427300  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/2.cc
! b4695a090122fdc2e8c321940411e34f  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/3.cc
! 4c96b6e703fcb3db81f346290015f779  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/4.cc
! ddda8f44849dc610d7128171d8c91cec  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/5.cc
! d912bc74a17a971f5a99aa77c691d7f9  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/78595.cc
! 4938431e4f1425d0fc6a50d355e4c845  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/83226.cc
! 3e9acf065dcb528ef01d790451971586  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/87194.cc
! 4d0bde3c9a04b5af58ad28e570710291  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/dr2354.cc
! 6d4b485a9d6962992d948d6b4cdff3e1  libstdc++-v3/testsuite/23_containers/map/modifiers/insert_or_assign/1.cc
! 3fbbd5a3ee5d594990607cc5ef87c1b0  libstdc++-v3/testsuite/23_containers/map/modifiers/merge.cc
! 43ef1650e68524b5b3ff4aa6fa08bff7  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/1.cc
! 1d7f2df93e8734ff47f97e3da580a4c8  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/2.cc
! ca8cb3b60c0ea731981d5630dec35132  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/3.cc
! c2fa9864decba0abb028590657333b5a  libstdc++-v3/testsuite/23_containers/map/modifiers/try_emplace/1.cc
! 0d9bfe607f5c19e3e9704a8ac20ba570  libstdc++-v3/testsuite/23_containers/map/operations/1.cc
! 3f75bc3d2a388b99357ec32ad54e1f82  libstdc++-v3/testsuite/23_containers/map/operations/2.cc
! c27a55fedb0856ed621c89c6c0b60642  libstdc++-v3/testsuite/23_containers/map/operations/31440.cc
! 60779afcd22d5505585f36073b2594a5  libstdc++-v3/testsuite/23_containers/map/operations/contains.cc
! d9fb664710e9a7f07ad117f81b81fd4f  libstdc++-v3/testsuite/23_containers/map/operations/count.cc
! 85cf0c0fdb36a8c5202a925adf0fd6d9  libstdc++-v3/testsuite/23_containers/map/operators/1.cc
! 29350ff238f9562160ca7b19b5baca9e  libstdc++-v3/testsuite/23_containers/map/operators/1_neg.cc
! 567686d26cc53e0ce734b74423d117e1  libstdc++-v3/testsuite/23_containers/map/operators/2.cc
! 72702e4e3f6ef1c6e8439ddfcecbf0d7  libstdc++-v3/testsuite/23_containers/map/operators/cmp_c++20.cc
! d87a0aa725a9a7b69c9da8f2ce53027f  libstdc++-v3/testsuite/23_containers/map/pmr_typedefs.cc
! 7d82bb1815a0afbe680995ef3fab661c  libstdc++-v3/testsuite/23_containers/map/pmr_typedefs_debug.cc
! 192bb59160b149113db64b52c6e12842  libstdc++-v3/testsuite/23_containers/map/pthread6.cc
! cb45de54113917284e449c2d6dd8753b  libstdc++-v3/testsuite/23_containers/map/range_access.cc
! 2aa9b6f09570f461967d7fa74317f7d0  libstdc++-v3/testsuite/23_containers/map/requirements/citerators.cc
! e7a396dd66aa96139ae5c161c3846556  libstdc++-v3/testsuite/23_containers/map/requirements/exception/basic.cc
! 400ae4cfe55aa00c870aeeb0c71614f8  libstdc++-v3/testsuite/23_containers/map/requirements/exception/generation_prohibited.cc
! 15cc81de8e1fcc96c49e8b1352bd29f3  libstdc++-v3/testsuite/23_containers/map/requirements/exception/propagation_consistent.cc
! ab57df93b487d8b697803fab2e0ef99a  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/1.cc
! 522d27f18938b6d90cd05b832fd93a15  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/2.cc
! c8241fb1d64d0964d387414e7e00237a  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/3.cc
! 848da08889fd0de9e0dc307e2a78a06c  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/4.cc
! 16e0215e9165306ab082a83bec4b9882  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/5.cc
! 17bd4f340a69ce1923edb8d76b0d55e9  libstdc++-v3/testsuite/23_containers/map/requirements/partial_specialization/1.cc
! 232330b73538f28528dd192fa3772ca1  libstdc++-v3/testsuite/23_containers/map/requirements/typedefs.cc
! 5ffbbe32aabeb92a260e704337cc13dc  libstdc++-v3/testsuite/23_containers/multimap/14340.cc
! 408db151ec36dc6db9b27eb744bdac4f  libstdc++-v3/testsuite/23_containers/multimap/23781_neg.cc
! 21774a34f52b06f94e8bfe60218895b8  libstdc++-v3/testsuite/23_containers/multimap/48101-2_neg.cc
! 31a982b52bf00b9493e375a6ff841a6f  libstdc++-v3/testsuite/23_containers/multimap/48101-3_neg.cc
! 54e7a8c2d7e6aa8fca459a64c4477f24  libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc
! d11a888bae3f037290b47ffbef818a89  libstdc++-v3/testsuite/23_containers/multimap/58764.cc
! 99ae5344f63171fa65f927fa344e0151  libstdc++-v3/testsuite/23_containers/multimap/allocator/copy.cc
! 5cd4b937a9e6a000629bdac056178335  libstdc++-v3/testsuite/23_containers/multimap/allocator/copy_assign.cc
! 8acc39f39650a616f33e95e649908800  libstdc++-v3/testsuite/23_containers/multimap/allocator/init-list.cc
! b137dad333a9a751de8fd7c9a90372db  libstdc++-v3/testsuite/23_containers/multimap/allocator/minimal.cc
! 16866ecea96f81a3003b6d8c13d69879  libstdc++-v3/testsuite/23_containers/multimap/allocator/move.cc
! 8e26f395b1cc522dc2d3abf45a1854d2  libstdc++-v3/testsuite/23_containers/multimap/allocator/move_assign.cc
! e3c3c5ee3a454aba44531aad1a49e46c  libstdc++-v3/testsuite/23_containers/multimap/allocator/noexcept.cc
! 79bd2dcef2640bb7172875f4c7953c16  libstdc++-v3/testsuite/23_containers/multimap/allocator/swap.cc
! b2cac9ae86c6e7a14f499e1e41b7dff7  libstdc++-v3/testsuite/23_containers/multimap/capacity/29134.cc
  f34b9568e5ff78a9c1f70d5f056c24c7  libstdc++-v3/testsuite/23_containers/multimap/cons/deduction.cc
! e53d49643473f1313a3050ce7125366f  libstdc++-v3/testsuite/23_containers/multimap/cons/moveable.cc
! 7954b3dd141ce517ddc6bcf541d943be  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_default_construct.cc
! e386755ca174946b8a04b4a6c6af60da  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_move_construct.cc
! f224d4e669119c54cb37bed04eac4896  libstdc++-v3/testsuite/23_containers/multimap/debug/60499.cc
! 4cc88cacf1f8b8a432519583dfaff9f5  libstdc++-v3/testsuite/23_containers/multimap/debug/construct1_neg.cc
! fc381f3551fe92e514b09cc3b3b3796e  libstdc++-v3/testsuite/23_containers/multimap/debug/construct2_neg.cc
! 90464d6ff1f5db637ab061292a6f979c  libstdc++-v3/testsuite/23_containers/multimap/debug/construct3_neg.cc
! b3e50147c28f8770646e02672db14b80  libstdc++-v3/testsuite/23_containers/multimap/debug/construct4_neg.cc
! 3de6facac85d2b51e24d2b3ad98eb9d6  libstdc++-v3/testsuite/23_containers/multimap/debug/construct5_neg.cc
! 9f756bee39924a6ae18c6b3f43c94adf  libstdc++-v3/testsuite/23_containers/multimap/debug/insert1_neg.cc
! 759d46cf2c2383777728e7eb8ef9f258  libstdc++-v3/testsuite/23_containers/multimap/debug/insert2_neg.cc
! 42b9bd5d6c61dc0dfa163cfbd845a88b  libstdc++-v3/testsuite/23_containers/multimap/debug/insert3_neg.cc
! 7ed883ebc74c5ba63b3517b7b212c8b1  libstdc++-v3/testsuite/23_containers/multimap/debug/insert4_neg.cc
! e6562f744d2325baba82d0eddbfbc1cf  libstdc++-v3/testsuite/23_containers/multimap/debug/invalidation/1.cc
! 79265ebf58bce528ab146cc467ddcf57  libstdc++-v3/testsuite/23_containers/multimap/debug/invalidation/2.cc
! fd38603568d8ade037186d5858c29803  libstdc++-v3/testsuite/23_containers/multimap/debug/iterator_self_move_assign_neg.cc
! fcbab0d6c7d08947aa7799535c05f636  libstdc++-v3/testsuite/23_containers/multimap/debug/move_assign_neg.cc
! 6081f55feb1d116cf6578eba878bb122  libstdc++-v3/testsuite/23_containers/multimap/debug/move_neg.cc
! cc2f7580a81adcf5899c1a7258101a2d  libstdc++-v3/testsuite/23_containers/multimap/debug/self_move_assign_neg.cc
! 6d1a6d4ebce54791d07d4e621d630865  libstdc++-v3/testsuite/23_containers/multimap/init-list.cc
! a2164e91f9349c47ecfd8544ef1688e9  libstdc++-v3/testsuite/23_containers/multimap/modifiers/dr130.cc
! c5a639c825003229f400bca16492693d  libstdc++-v3/testsuite/23_containers/multimap/modifiers/emplace/1.cc
! 1a8f673c768d4a114864928c3dafb119  libstdc++-v3/testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc
! f9ac258bad6039342f8197e3750ccdda  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/47628.cc
! fe684866067002ae44faa18ef9d22d21  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc
! 42b86ed7323f4bb608fbcc4384bbd102  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/abi_tag.cc
! 4ef16c846c528639152f3f07e3aaa309  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/dr130-linkage-check.cc
! c02f03de3a8930ab196d74b4206572e0  libstdc++-v3/testsuite/23_containers/multimap/modifiers/extract.cc
! e12aa35f7865e2553733202c23b2914a  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/1.cc
! 31e140cc089085d77c3a0e03559979ba  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/2.cc
! c0f4c561568ae0fb246abd86ad8db1c6  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/22102.cc
! f64c94b381f398c5474ab6ba16f66410  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/3.cc
! d743509ee5954b2cb645075a00d9f397  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/4.cc
! aa749b3f96be9c698042e5ebb53974fc  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/78595.cc
! 8e80798d66110177dad32f58174641a3  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/87194.cc
! bea533a660d0bd13959f733d29e803f1  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/dr2354.cc
! b021c5c0e9ee09069336283c31bfb87a  libstdc++-v3/testsuite/23_containers/multimap/modifiers/merge.cc
! e6e8693b71632278071dc5a0d91d2ff7  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/1.cc
! ac0ff111a56437e6b572adce8b9b4336  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/2.cc
! 062137ebe8d8c445cf737752be40d65a  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/3.cc
! 1d975b427c8325f0f4ef81abc1c53f99  libstdc++-v3/testsuite/23_containers/multimap/operations/1.cc
! 3d14ca12016bddfc682f44208a8efe0c  libstdc++-v3/testsuite/23_containers/multimap/operations/2.cc
! 95079cd62e5098138c07a54df7abf9e3  libstdc++-v3/testsuite/23_containers/multimap/operations/contains.cc
! d7ab8350b22156863f5929b660cc1a65  libstdc++-v3/testsuite/23_containers/multimap/operations/count.cc
! 1fb17b10f94877405bec309ba0232b02  libstdc++-v3/testsuite/23_containers/multimap/operators/cmp_c++20.cc
! a2f8c68b1de4850c93a74f6b8649ba74  libstdc++-v3/testsuite/23_containers/multimap/pmr_typedefs.cc
! e56163c8006ed4d4f406db404de5816d  libstdc++-v3/testsuite/23_containers/multimap/pmr_typedefs_debug.cc
! b72eb9b363cf46e31ed27f7e2c111e57  libstdc++-v3/testsuite/23_containers/multimap/range_access.cc
! 412d96ed8b7fe31d079bedf621f3671b  libstdc++-v3/testsuite/23_containers/multimap/requirements/citerators.cc
! 5ac4ac4410af35305dd7b27fb680f02e  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/basic.cc
! 14eb9c78978d2927a4e3cfdc972ca5ea  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/generation_prohibited.cc
! 6e2d42b9fa0b6aee937a8581296a5009  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/propagation_consistent.cc
! 8ab8ccb0803d382d79ec74545904cf71  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/1.cc
! 1cc220775c5ab6079c41e9ee279f0abc  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/2.cc
! ccf3b1bf7ed4e0b3f82d4d3bceb68ab7  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/3.cc
! 128e0887c897ce6e813da7fb09c2b60b  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/4.cc
! 716a448e688d26af387f78e905bb3a3b  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/5.cc
! b5202d4bd79e30b87deeed34078fb52e  libstdc++-v3/testsuite/23_containers/multimap/requirements/partial_specialization/1.cc
! e0108d925582b2bbffb7f96a6858ef62  libstdc++-v3/testsuite/23_containers/multimap/requirements/typedefs.cc
! dd63ff5547bd3f8932a7dd1f5c40d3b3  libstdc++-v3/testsuite/23_containers/multiset/14340.cc
! 528a4e25aa31199341acf34031b645d8  libstdc++-v3/testsuite/23_containers/multiset/23781_neg.cc
! 6b0ca231d8cb55a888b04e058e421538  libstdc++-v3/testsuite/23_containers/multiset/48101-2_neg.cc
! b97023dae8d2f3693aa59d2a444f252b  libstdc++-v3/testsuite/23_containers/multiset/48101-3_neg.cc
! d60b50bb57d19358f4bb7678d2dc46d8  libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc
! ea42a04e7691f371565d0a9b66135f37  libstdc++-v3/testsuite/23_containers/multiset/58764.cc
! b867ec437a9bd969533a59f00982760f  libstdc++-v3/testsuite/23_containers/multiset/allocator/copy.cc
! 5a59273dab35f9e21d05377e7c7c36ac  libstdc++-v3/testsuite/23_containers/multiset/allocator/copy_assign.cc
! e11de5be6c59c7433654b55ccbd19ed7  libstdc++-v3/testsuite/23_containers/multiset/allocator/init-list.cc
! 41028de807c520acbc88540038e1d712  libstdc++-v3/testsuite/23_containers/multiset/allocator/minimal.cc
! 55fc85756f64af1889bc1f14ca787eb3  libstdc++-v3/testsuite/23_containers/multiset/allocator/move.cc
! 25af496b7837657fc1293c331d364bc0  libstdc++-v3/testsuite/23_containers/multiset/allocator/move_assign.cc
! 96a185443eb1d702323165e4e01530c2  libstdc++-v3/testsuite/23_containers/multiset/allocator/noexcept.cc
! 942c2cfb450e53df9903722c5493040a  libstdc++-v3/testsuite/23_containers/multiset/allocator/swap.cc
! 6d153c8ac11517b627dc7da5c52e5b4f  libstdc++-v3/testsuite/23_containers/multiset/capacity/29134.cc
  a0f00b99adcaf730ba73537486b2a2b3  libstdc++-v3/testsuite/23_containers/multiset/cons/deduction.cc
! 0a42886ca1a34c85bc69cf0c96affdc1  libstdc++-v3/testsuite/23_containers/multiset/cons/moveable.cc
! 3b66f506c08cf105326f3279d17c3b9e  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_default_construct.cc
! 14b894a38cdf0845747c617049b55ec3  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_move_construct.cc
! 7b36a81d023cf6569bb44a9babfe2ef2  libstdc++-v3/testsuite/23_containers/multiset/debug/60499.cc
! 23a9cf66d279557289f0d0deea68fc5d  libstdc++-v3/testsuite/23_containers/multiset/debug/construct1_neg.cc
! 79415fd448110734a6b3b8ee67f4d53f  libstdc++-v3/testsuite/23_containers/multiset/debug/construct2_neg.cc
! 1d167236c138373119384ab37b0e629c  libstdc++-v3/testsuite/23_containers/multiset/debug/construct3_neg.cc
! 169d7aa335951c4c974e79a63299b1dd  libstdc++-v3/testsuite/23_containers/multiset/debug/construct4_neg.cc
! 9d97fc68992e9d0b6e3cb9eeaa41f6ae  libstdc++-v3/testsuite/23_containers/multiset/debug/construct5_neg.cc
! 9af6f806906a46afb55e0ade6e329f3f  libstdc++-v3/testsuite/23_containers/multiset/debug/insert1_neg.cc
! 5ae43c7b824d70064926fcce0b8b3366  libstdc++-v3/testsuite/23_containers/multiset/debug/insert2_neg.cc
! e9677f7b830cfe1334ee5e4758183733  libstdc++-v3/testsuite/23_containers/multiset/debug/insert3_neg.cc
! 1665a55604a60a99d0377f2fa06c836c  libstdc++-v3/testsuite/23_containers/multiset/debug/insert4_neg.cc
! 8976a7b526fb60388b2eef82cb0f1d11  libstdc++-v3/testsuite/23_containers/multiset/debug/invalidation/1.cc
! 8f6d9d4ff550c4a55bf7a5aa4617d597  libstdc++-v3/testsuite/23_containers/multiset/debug/invalidation/2.cc
! a999d1cc9501ded0e5308fa13766c7e2  libstdc++-v3/testsuite/23_containers/multiset/debug/iterator_self_move_assign_neg.cc
! cd7a9ee0b29ac66c82febe7b4f1d4c47  libstdc++-v3/testsuite/23_containers/multiset/debug/move_assign_neg.cc
! 3c7a381aa412912da01a1862a5263653  libstdc++-v3/testsuite/23_containers/multiset/debug/move_neg.cc
! c1c2f9b64e254b724c9bb2dd0d2bb1c7  libstdc++-v3/testsuite/23_containers/multiset/debug/self_move_assign_neg.cc
! ebceb850f38bef13c67fb5a661e44f80  libstdc++-v3/testsuite/23_containers/multiset/init-list.cc
! ff4b7ae268ac4ff9a5e0623b3626b374  libstdc++-v3/testsuite/23_containers/multiset/modifiers/dr130.cc
! ef93549f654c5d67cb6472a6dc7c1de8  libstdc++-v3/testsuite/23_containers/multiset/modifiers/emplace/1.cc
! a68112fd98662ec7112c6e2f58f7eca7  libstdc++-v3/testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc
! fb6256f6877e94f8270ea5aa18bba6d6  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc
! ae7d5779002a4e55285f08f25b1b2aa8  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/abi_tag.cc
! aa638898d33cab30337a82aa2504747a  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/dr130-linkage-check.cc
! 41679fedf4c5491fd51ba8ed7d098a5b  libstdc++-v3/testsuite/23_containers/multiset/modifiers/extract.cc
! 4f2400cf24bd8f8c901e81d5ed11f07b  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/1.cc
! ba02fc0276f3f142908642ac72d810b0  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/2.cc
! 77a270e03128511a988c488c906b00f7  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/22102.cc
! eeb62818e06eda90f8f58b4041ef562e  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/3.cc
! 90de907f9ab992e6a93e02b5fde5736d  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/4.cc
! 0771a7c9e1b541d0efa162a15182eee4  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/87194.cc
! 032a1be77771ce1b814da044cf4cc540  libstdc++-v3/testsuite/23_containers/multiset/modifiers/merge.cc
! a39c57672f7454691b1901a2a535acad  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/1.cc
! 16894ed145029d9be64a13c3cbbdddd4  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/2.cc
! 5eaed92f53a65279b9a0ad52861ce855  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/3.cc
! ab33f57dae49993fb8db3a83fb949b19  libstdc++-v3/testsuite/23_containers/multiset/operations/1.cc
! 61ad07b9673eb6a4a3cecddd83ee4158  libstdc++-v3/testsuite/23_containers/multiset/operations/2.cc
! 9047abf7f60a019b01a5254c66777800  libstdc++-v3/testsuite/23_containers/multiset/operations/contains.cc
! 8de3909574cd132fcdd3b6d0468a384d  libstdc++-v3/testsuite/23_containers/multiset/operations/count.cc
! 59c99dba98296a89550c70b9bd66b4a7  libstdc++-v3/testsuite/23_containers/multiset/operators/cmp_c++20.cc
! d0d5be0160ce0169648fecf2347e8da9  libstdc++-v3/testsuite/23_containers/multiset/pmr_typedefs.cc
! 0168bf7889ad81ccd449d5f8d4f0eba1  libstdc++-v3/testsuite/23_containers/multiset/pmr_typedefs_debug.cc
! a5040775db3a7e5ecbef383ed42c22ee  libstdc++-v3/testsuite/23_containers/multiset/range_access.cc
! cccb47cb8c6893713415b4d31b074403  libstdc++-v3/testsuite/23_containers/multiset/requirements/citerators.cc
! 66487d0fd39a21b06d70aa311ff4ab34  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/basic.cc
! 30eb7b7d9d046aff7c08b67795608c79  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/generation_prohibited.cc
! 05a87f3eb94459536d8a41606125781e  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/propagation_consistent.cc
! f8a9848711f8f906bb28a423f7057198  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/1.cc
! fb21b825bdbd798f1a78fe76dabb5994  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/1_c++0x.cc
! 6cc8fae6ddc9fa89a5ac305322585d51  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/2.cc
! b4ccdc67d0c9705749a59c1e2ac8ec14  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/3.cc
! 1c7b7659236acfe460ee567f2e4445b0  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/4.cc
! 6e6d40d5f34a4409e8059b9457e73876  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/5.cc
! 097598ccd45e72332c4814b223bcc399  libstdc++-v3/testsuite/23_containers/multiset/requirements/partial_specialization/1.cc
! fcc2fc68ffa4ed03c68f16e29a9a0c2d  libstdc++-v3/testsuite/23_containers/multiset/requirements/typedefs.cc
! d25b855cc99ec54cdcf8eb83731c8a30  libstdc++-v3/testsuite/23_containers/priority_queue/67085.cc
! 5027d4d4ea6506f7eff11952bed6b164  libstdc++-v3/testsuite/23_containers/priority_queue/77528.cc
! d18d4ccf1845fa4a3518a7b855b901ab  libstdc++-v3/testsuite/23_containers/priority_queue/92878_92947.cc
! fd9b6897a86d6209d69866043ca42de5  libstdc++-v3/testsuite/23_containers/priority_queue/allocator.cc
! e1e70751e582f95e88c95f6fb498fcd4  libstdc++-v3/testsuite/23_containers/priority_queue/deduction.cc
! dfa2e0fc237c6fd217b0d375a7aec467  libstdc++-v3/testsuite/23_containers/priority_queue/dr2537.cc
! 0950c5f334b6a5b8e94a4717a32e6a05  libstdc++-v3/testsuite/23_containers/priority_queue/members/7161.cc
! b839ba864c40a419ab19d7ef36087c2f  libstdc++-v3/testsuite/23_containers/priority_queue/moveable.cc
! 41b84fdf4191e3ace4abc8e75de86c6f  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/constructible.cc
! 63c78507c7f762611ceaaa8401a54ce9  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1.cc
! 55aff56461a18bee78e4246928b4a860  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1_c++98.cc
! 0a667a01f8fb749d0a4b2324721f077d  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/typedefs.cc
! 6cd3432380b101e08143d6f77ab301a6  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/uses_allocator.cc
! 108124da21eedcbcf27a4df60c2d91be  libstdc++-v3/testsuite/23_containers/queue/77528.cc
! 34cc171ef70d7620b88a8d517574baa3  libstdc++-v3/testsuite/23_containers/queue/92878_92947.cc
! aac7368a4da85fa8e887a3ad3f469659  libstdc++-v3/testsuite/23_containers/queue/cmp_c++20.cc
! 703eb57c982966f9170b389d0619870c  libstdc++-v3/testsuite/23_containers/queue/deduction.cc
! 58a99d2e3ee7ced215d92201c90db0e3  libstdc++-v3/testsuite/23_containers/queue/members/7157.cc
! e93f5e2fdf878be22311f5d7c1041b55  libstdc++-v3/testsuite/23_containers/queue/members/emplace_cxx17_return.cc
! 0e57859b4a94e804dfee45b7d3123d24  libstdc++-v3/testsuite/23_containers/queue/moveable.cc
! 35f5ae07902f227094a0a40ecc392d6e  libstdc++-v3/testsuite/23_containers/queue/requirements/constructible.cc
! 0c731fd954763b70e0809c9e44484203  libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1.cc
! fa7180e121e8e5da5b16e401fe65b001  libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1_c++98.cc
! fe88b1745cfaae658707c216eba0b571  libstdc++-v3/testsuite/23_containers/queue/requirements/typedefs.cc
! 54fa06089b7bd334dbbabc68c0297f14  libstdc++-v3/testsuite/23_containers/queue/requirements/uses_allocator.cc
! e66d2158eb801a7a887ee77efc09e8ac  libstdc++-v3/testsuite/23_containers/set/14340.cc
! d3e34016bc46aaaea28382a50bfd13a5  libstdc++-v3/testsuite/23_containers/set/18604.cc
! fc4c55a3290bb6df9dfc12d7b11b93a3  libstdc++-v3/testsuite/23_containers/set/23781_neg.cc
! 9147b8e5f140e0b74968b11387240a8e  libstdc++-v3/testsuite/23_containers/set/48101-2_neg.cc
! e4fea1ceacea0e9d21b963d4795e94e0  libstdc++-v3/testsuite/23_containers/set/48101-3_neg.cc
! 53e3a79f139f7ce0d46881af8664b893  libstdc++-v3/testsuite/23_containers/set/48101_neg.cc
! 92a17eb053933c696799a73fdf4947a3  libstdc++-v3/testsuite/23_containers/set/58764.cc
! eb9e378939291034edfd21fa47e027db  libstdc++-v3/testsuite/23_containers/set/85965.cc
! 5ce57aa1c8420e886240d9d633932638  libstdc++-v3/testsuite/23_containers/set/92124.cc
! bd476dafd6a1721a023a04c9ef108889  libstdc++-v3/testsuite/23_containers/set/allocator/71964.cc
! d62f761e2d55485ec485e6462cb9579f  libstdc++-v3/testsuite/23_containers/set/allocator/copy.cc
! 07b8bdcc7da0414b41875eaf8661dae8  libstdc++-v3/testsuite/23_containers/set/allocator/copy_assign.cc
! dbdf0f629df7538619b387a37d41d7cf  libstdc++-v3/testsuite/23_containers/set/allocator/default_init.cc
! b4383f8916fb466fb67342be8b871c26  libstdc++-v3/testsuite/23_containers/set/allocator/init-list.cc
! 79546630a9388539b064d2aabdc2a3a7  libstdc++-v3/testsuite/23_containers/set/allocator/minimal.cc
! 53c646fadc26e4bf926153ce1dc7d8f9  libstdc++-v3/testsuite/23_containers/set/allocator/move.cc
! 705b059c34caf629181bdbd4bb9c676e  libstdc++-v3/testsuite/23_containers/set/allocator/move_assign.cc
! bfd47a18693f20363ebc72cd2661ebc2  libstdc++-v3/testsuite/23_containers/set/allocator/noexcept.cc
! c7f1ea6999c048aa6455125b5cdbc438  libstdc++-v3/testsuite/23_containers/set/allocator/swap.cc
! 9af434ab19235575074281a4ddfa1b89  libstdc++-v3/testsuite/23_containers/set/capacity/29134.cc
! fe80eba3de42ee7857b623a7cd94c9f0  libstdc++-v3/testsuite/23_containers/set/check_construct_destroy.cc
! ede5ac38f32290eae8d036e97275ef56  libstdc++-v3/testsuite/23_containers/set/cons/61023.cc
  d7fb6d5367cbb1a6b1747e6a9e5133f2  libstdc++-v3/testsuite/23_containers/set/cons/deduction.cc
! 87f3d99627c137494313d473c0b49b67  libstdc++-v3/testsuite/23_containers/set/cons/moveable.cc
! 261c5f50c550b868c040251eca407d0e  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_default_construct.cc
! a9627c433e3846d54b43eb25ed324692  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_move_construct.cc
! 7a89eb5d92b2c5483ec4a99f99fb80d0  libstdc++-v3/testsuite/23_containers/set/debug/60499.cc
! 6e0ec0cf08258154d30057220aa06cbf  libstdc++-v3/testsuite/23_containers/set/debug/construct1_neg.cc
! 0b7a7475e869e410f47477555713c5b4  libstdc++-v3/testsuite/23_containers/set/debug/construct2_neg.cc
! 7974e4b4c89d65265259673a46c41654  libstdc++-v3/testsuite/23_containers/set/debug/construct3_neg.cc
! a5bbc550824909c314a9813c6335deb2  libstdc++-v3/testsuite/23_containers/set/debug/construct4_neg.cc
! 931653c15cebe28fa6d9d21d3d0aea77  libstdc++-v3/testsuite/23_containers/set/debug/construct5_neg.cc
! a02f76e588678a0c5d2fda635b623bc9  libstdc++-v3/testsuite/23_containers/set/debug/insert1_neg.cc
! 7c899f039f0ff8b8c3e26227641c16e6  libstdc++-v3/testsuite/23_containers/set/debug/insert2_neg.cc
! 18f519fe1a8ea080e28ca4b6d2b8c59f  libstdc++-v3/testsuite/23_containers/set/debug/insert3_neg.cc
! 4f44ca161b91b2c6827104650525b453  libstdc++-v3/testsuite/23_containers/set/debug/insert4_neg.cc
! 0c82c6079b17c96d56dd0ba413be0eed  libstdc++-v3/testsuite/23_containers/set/debug/invalidation/1.cc
! 192ef33265b2339802b089c3b9e2a679  libstdc++-v3/testsuite/23_containers/set/debug/invalidation/2.cc
! 25de85c36e00128d34a66ea54001edf3  libstdc++-v3/testsuite/23_containers/set/debug/iterator_self_move_assign_neg.cc
! a12c24ae9987be74d407e66ed9a4fac8  libstdc++-v3/testsuite/23_containers/set/debug/move_assign_neg.cc
! f45366b4913f021be33f1088964c4943  libstdc++-v3/testsuite/23_containers/set/debug/move_neg.cc
! 458f6ed214c40cd2577dfab9771c7699  libstdc++-v3/testsuite/23_containers/set/debug/self_move_assign_neg.cc
! fb3345157d1bb03d28e2938c0b8d2f00  libstdc++-v3/testsuite/23_containers/set/erasure.cc
! 1c4236bf1b92996f12fdf6f97a9900bc  libstdc++-v3/testsuite/23_containers/set/init-list.cc
! a51d998b52d2c42599b575727e23b0b8  libstdc++-v3/testsuite/23_containers/set/modifiers/16728.cc
! f56078833ac761f0ebd3aef96841a17c  libstdc++-v3/testsuite/23_containers/set/modifiers/17948.cc
! eb596e7b304e6fafdd84cef74df0aabe  libstdc++-v3/testsuite/23_containers/set/modifiers/dr130.cc
! 1780ec10ed28789a6e5fa9ff3baa941a  libstdc++-v3/testsuite/23_containers/set/modifiers/emplace/1.cc
! c4a221727ff9ab629a1bb734b8a4ce85  libstdc++-v3/testsuite/23_containers/set/modifiers/emplace/92878_92947.cc
! 9f2ad115078d9f14584e1b5587f5435a  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc
! 96b668b80fbd705ea008231e3e34f391  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/abi_tag.cc
! 6479fdc0ca25d601668110ce1d9f552f  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/dr130-linkage-check.cc
! 397f9b1bb503561616422e865a14a738  libstdc++-v3/testsuite/23_containers/set/modifiers/extract.cc
! 1db3c20766e8a55b9f19d2ff920f6371  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/1.cc
! be5fbfcc01a2684a113bdfcec64129d7  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/2.cc
! c242b66acaccdf2fdde9385f01a7ea87  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/3.cc
! e0757f98749ef19a4286f8655e07f15c  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/87194.cc
! 287a6557f0bb24928bf8c7365c5ca763  libstdc++-v3/testsuite/23_containers/set/modifiers/merge.cc
! 71457f2967d15a990a9240dfb0dad96d  libstdc++-v3/testsuite/23_containers/set/modifiers/node_swap.cc
! a6394049c722f21f51490360cda35424  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/1.cc
! 3f7e23e1905ecca52b5c3850ff43f12a  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/2.cc
! 7ca7555b4bbc2210152e82c5ba5590af  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/3.cc
! b38b23c364b30289972462255fbd3aa1  libstdc++-v3/testsuite/23_containers/set/move_comparison.cc
! b0cd590ce73aecfb90b0be0bba8b4c9c  libstdc++-v3/testsuite/23_containers/set/operations/1.cc
! 58e410324e932de5d1715bd7f44352f5  libstdc++-v3/testsuite/23_containers/set/operations/2.cc
! 623ddaf776933a71081d77ed254d5e9f  libstdc++-v3/testsuite/23_containers/set/operations/contains.cc
! b2a8e21cfcf0099eb4bb86cb3d4ec1dc  libstdc++-v3/testsuite/23_containers/set/operations/count.cc
! 6f67e339b8272227f8018a6d9713638a  libstdc++-v3/testsuite/23_containers/set/operators/1_neg.cc
! 6152ebad248942bde90576cd7917e581  libstdc++-v3/testsuite/23_containers/set/operators/cmp_c++20.cc
! f848ee69e65154bbef1019363bcee6d0  libstdc++-v3/testsuite/23_containers/set/pmr_typedefs.cc
! 75a636491865a5692d7288a4b5af020f  libstdc++-v3/testsuite/23_containers/set/pmr_typedefs_debug.cc
! 06f0268765501feddc5645bde0f27bef  libstdc++-v3/testsuite/23_containers/set/range_access.cc
! accd25ade102af08b6505a2c7d14d980  libstdc++-v3/testsuite/23_containers/set/requirements/citerators.cc
! d1cdd03b2f8e0dd861d4407c38157bc7  libstdc++-v3/testsuite/23_containers/set/requirements/exception/basic.cc
! 8d6af8d0297d0d31b3c7b7dee2563c3b  libstdc++-v3/testsuite/23_containers/set/requirements/exception/generation_prohibited.cc
! 554fd92efb0407909c397fd8b552ed7e  libstdc++-v3/testsuite/23_containers/set/requirements/exception/propagation_consistent.cc
! 0acbe5c8fdc3b86c195dc820eb61d001  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/1.cc
! 7834ba27722efb75bccfe5987642ab5f  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/2.cc
! 122a1e5f7a16437d4f3021f9cb6ecea0  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/3.cc
! 6f056624d3498c20bd678e61768d200d  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/4.cc
! 7445b184d94382375f91f964d3370cdd  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/5.cc
! fd72ebc8f5564c07ba57595544146515  libstdc++-v3/testsuite/23_containers/set/requirements/partial_specialization/1.cc
! 574a7f8c92bc9b3b89dddfd74d0f7500  libstdc++-v3/testsuite/23_containers/set/requirements/typedefs.cc
! 18d10b2e78d8baa734cf80ea212fa92d  libstdc++-v3/testsuite/23_containers/span/1.cc
! 9f3f7297de5ffd1be04994ce0ae49439  libstdc++-v3/testsuite/23_containers/span/2.cc
! 99d6c1ea7d3fcf797ffd17f5c8f123bd  libstdc++-v3/testsuite/23_containers/span/back_assert_neg.cc
! 7257a3841d42a4b4e2c526754a12138a  libstdc++-v3/testsuite/23_containers/span/back_neg.cc
! 074820b375398998fb7f897dd96ed804  libstdc++-v3/testsuite/23_containers/span/contiguous_range_neg.cc
! 05767a53f7beb996573792ac2ad9ac88  libstdc++-v3/testsuite/23_containers/span/deduction.cc
! e6eb55004ff18e42d36a0e8a174bc424  libstdc++-v3/testsuite/23_containers/span/everything.cc
! 31cffb3dfc6ac08c109e6b3be0996e7d  libstdc++-v3/testsuite/23_containers/span/explicit.cc
! 25fd7bc922780d2b39a0dfcd3e2acd63  libstdc++-v3/testsuite/23_containers/span/first_2_assert_neg.cc
! dfbb92042e4fcb8f61461d85b5dd31fb  libstdc++-v3/testsuite/23_containers/span/first_assert_neg.cc
! 4336276c396e3ce95aeef072dd2bf2e4  libstdc++-v3/testsuite/23_containers/span/first_neg.cc
! 52600c6aeac73d04312b35563a654cbb  libstdc++-v3/testsuite/23_containers/span/front_assert_neg.cc
! b56f62495433b3036e45c0b3024e3a24  libstdc++-v3/testsuite/23_containers/span/front_neg.cc
! f44de649904cc2de83597b8761c0bb34  libstdc++-v3/testsuite/23_containers/span/index_op_assert_neg.cc
! fc2ecac6af300fd23bac1982017c9bdd  libstdc++-v3/testsuite/23_containers/span/index_op_neg.cc
! 4949a848c8ab76b03e7dd3f9c4dac656  libstdc++-v3/testsuite/23_containers/span/last_2_assert_neg.cc
! ab44196c79af4936920480a486d66c50  libstdc++-v3/testsuite/23_containers/span/last_assert_neg.cc
! 3ceeee4a872fa36a4d4eebfd8469ac21  libstdc++-v3/testsuite/23_containers/span/last_neg.cc
! 560c511c44a1ac8a6157b41f65648267  libstdc++-v3/testsuite/23_containers/span/lwg3255.cc
! d74ef3dc2a65f7ff894e858bd9544e53  libstdc++-v3/testsuite/23_containers/span/nothrow_cons.cc
! cda303bc791abfda228a1c3899260517  libstdc++-v3/testsuite/23_containers/span/subspan_2_assert_neg.cc
! 2dad23ce2886693ff87a79ffa3f8a705  libstdc++-v3/testsuite/23_containers/span/subspan_3_assert_neg.cc
! 0a29e6ff08d4dbeba4cf5c0be6bc34da  libstdc++-v3/testsuite/23_containers/span/subspan_4_assert_neg.cc
! 768a38a4dea728bc23c024f9118dcb25  libstdc++-v3/testsuite/23_containers/span/subspan_5_assert_neg.cc
! b01d6b9f691c1b3feb2ca206b789b760  libstdc++-v3/testsuite/23_containers/span/subspan_6_assert_neg.cc
! fd82578a754c2ab499f6ed1d716b899a  libstdc++-v3/testsuite/23_containers/span/subspan_assert_neg.cc
! 43b0266ed9762c14776d54e9e4f57151  libstdc++-v3/testsuite/23_containers/span/subspan_neg.cc
! 5b510e3a1cc56b0eaa6a91e7ec8f9725  libstdc++-v3/testsuite/23_containers/stack/77528.cc
! e8d9a8b1f95301ffc4ea8b961ff978ff  libstdc++-v3/testsuite/23_containers/stack/92878_92947.cc
! 3e1847e68d4af599bbea7d7e1df2e4a0  libstdc++-v3/testsuite/23_containers/stack/cmp_c++20.cc
! f245c7b119078084563f5c2d563f0faa  libstdc++-v3/testsuite/23_containers/stack/deduction.cc
! 3b8105862ecec84118eb32c14a37e21b  libstdc++-v3/testsuite/23_containers/stack/members/7158.cc
! ad297398711dcdd8296f6edcaaa09766  libstdc++-v3/testsuite/23_containers/stack/members/emplace_cxx17_return.cc
! ed2edd09b00f77e6fe0e6cc4f035ac62  libstdc++-v3/testsuite/23_containers/stack/requirements/constructible.cc
! 99573b2005bd0e071b2024e9f4e42a11  libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1.cc
! e43886a61a804fd46858a62b185fb98f  libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1_c++98.cc
! ad9adb5d451418c812087e4c268c854c  libstdc++-v3/testsuite/23_containers/stack/requirements/typedefs.cc
! 7c0f6286323644d0491378ee7785d36a  libstdc++-v3/testsuite/23_containers/stack/requirements/uses_allocator.cc
! fcd13a1659987b689b8dec250292a8d9  libstdc++-v3/testsuite/23_containers/unordered_map/48101-2_neg.cc
! 9f9b6fee444fba20a373d2b218806a3d  libstdc++-v3/testsuite/23_containers/unordered_map/48101-3_neg.cc
! cb84acc411ac789ab0cfb110bcdf634a  libstdc++-v3/testsuite/23_containers/unordered_map/48101_neg.cc
! 917839f7f8d84ad4a1fbf64ad5bbca60  libstdc++-v3/testsuite/23_containers/unordered_map/55043.cc
! fba06019906a399e1aa50a7e2363a290  libstdc++-v3/testsuite/23_containers/unordered_map/59548.cc
! ccabe8ded28b651954d067850bd0a332  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/copy.cc
! 1ba6a0ce7805ccc44211992e7a8ff7c1  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/copy_assign.cc
! a5fd2b2ad6c89cb4bdd2132554f07e6e  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/minimal.cc
! acf9c1b71b2d5fca3e88506e57db5d67  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/move.cc
! 4634db724c9261015666ac8c9b86aa9b  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/move_assign.cc
! 1e4ac6b1c3dbe064452be6f858c66021  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/noexcept.cc
! 94652ff394c11ce9d5fe3ddb8d0e6932  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/swap.cc
! 7feeaaa3a7480137fa6e114c286bc13b  libstdc++-v3/testsuite/23_containers/unordered_map/cons/56112.cc
! 618ea58a923488bde06d6f4ba7762611  libstdc++-v3/testsuite/23_containers/unordered_map/cons/66055.cc
! d3883d908ea0d1609338a54f5393712c  libstdc++-v3/testsuite/23_containers/unordered_map/cons/81891.cc
  e8415b1babfb828135391be029b553d3  libstdc++-v3/testsuite/23_containers/unordered_map/cons/deduction.cc
! 54fe8826d2b53e0d06a8e1f869e011a0  libstdc++-v3/testsuite/23_containers/unordered_map/cons/moveable.cc
! 05234b6349c56145e5b61d395bb623d2  libstdc++-v3/testsuite/23_containers/unordered_map/debug/60499.cc
! 0eb92947dc50f86db94e9afffbe4969e  libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin1_neg.cc
! 601cc49a9f19fb99d670c14db88b4474  libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin2_neg.cc
! 4d4c800e73c92e068b1e09a416e60297  libstdc++-v3/testsuite/23_containers/unordered_map/debug/bucket_size_neg.cc
! 059b79153933f9c67fa8f78db600362c  libstdc++-v3/testsuite/23_containers/unordered_map/debug/cbegin_neg.cc
! 99147ddbce54857654ae109895a9c4ec  libstdc++-v3/testsuite/23_containers/unordered_map/debug/cend_neg.cc
! fc994d7c7878e787eefddd75b7694c2f  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct1_neg.cc
! 43fb75fa8aa411f64b7d81aca34ca3f8  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct2_neg.cc
! 929b215f19972658b9c37dc2f368bb55  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct3_neg.cc
! 2b40c4d95d98d56bf0dfdeed82040197  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct4_neg.cc
! ae522d784e6067637e8a48b8c6639c1e  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct5_neg.cc
! 3772654adc78fa353e9d68eea2700b02  libstdc++-v3/testsuite/23_containers/unordered_map/debug/end1_neg.cc
! 809ac507aa86eed1fc3c2c57895551f4  libstdc++-v3/testsuite/23_containers/unordered_map/debug/end2_neg.cc
! cab648759d8608d479366d1c11212f9f  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert1_neg.cc
! 6b2d47ae426ed570e452d5194e9ec160  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert2_neg.cc
! 11311d39ed50e5a673c62fca8f3d8e1e  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert3_neg.cc
! f2d28d96cbc35b93696795b3a9c023cc  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert4_neg.cc
! 617fc8f94b25f3cfe494daa00cdbe14e  libstdc++-v3/testsuite/23_containers/unordered_map/debug/invalid_local_iterator_compare_neg.cc
! f40fa3fffdade828ab54efec976a3ebf  libstdc++-v3/testsuite/23_containers/unordered_map/debug/invalid_local_iterator_range_neg.cc
! 2e1ffa5d752ccd5db211ee32b841f10b  libstdc++-v3/testsuite/23_containers/unordered_map/debug/iterator_self_move_assign_neg.cc
! db641feda281786b05e923098d0b0dcf  libstdc++-v3/testsuite/23_containers/unordered_map/debug/max_load_factor_neg.cc
! ab64b6c469740d4a89d17faa325d2b4c  libstdc++-v3/testsuite/23_containers/unordered_map/debug/move_assign_neg.cc
! 7d117c6bd4e6f8b1c837dc713decaf1d  libstdc++-v3/testsuite/23_containers/unordered_map/debug/move_neg.cc
! ac3f61348498a5c6e65f3cee765d4e61  libstdc++-v3/testsuite/23_containers/unordered_map/debug/self_move_assign_neg.cc
! 89a7214c42dbc4cc0a013b1c39a50c66  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_erased_local_iterator_neg.cc
! a5c043ac03ca7db954f026d14c828e38  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_invalid_iterator_neg.cc
! 7bb81679949f5e8d1067cb1c1b56085c  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_invalid_local_iterator_neg.cc
! 8cd8134d7b65010da12a2436c20a26e9  libstdc++-v3/testsuite/23_containers/unordered_map/dr761.cc
! 27c06a788b795c323d28eb088d2fcaa6  libstdc++-v3/testsuite/23_containers/unordered_map/erase/1.cc
! 40ef75176085cd8772e6305a56eb4abd  libstdc++-v3/testsuite/23_containers/unordered_map/erase/24061-map.cc
! ceb900e0e394e3aeb89a35899c7b6d07  libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc
! 8f90aaa099aabf33bfb3b56ecfc16d99  libstdc++-v3/testsuite/23_containers/unordered_map/erase/54276.cc
! 278cddcb7faa1906e1f485a2162d4d54  libstdc++-v3/testsuite/23_containers/unordered_map/erasure.cc
! 425011edb822e4a2fdd6eba3ba7aa0b7  libstdc++-v3/testsuite/23_containers/unordered_map/final_hash.cc
! 539e74eac76b6e4c8c9f249e4521b11b  libstdc++-v3/testsuite/23_containers/unordered_map/hash_policy/dr1189.cc
! fa461e5928f009061f670c3a1c6de90f  libstdc++-v3/testsuite/23_containers/unordered_map/init-list.cc
! df2e170f703bd2edec66e585a3a6787e  libstdc++-v3/testsuite/23_containers/unordered_map/insert/24061-map.cc
! be0c7edb630d8831786e5942b295c4d1  libstdc++-v3/testsuite/23_containers/unordered_map/insert/57619.cc
! 70d17c7661e2724acbcd46249e2438ec  libstdc++-v3/testsuite/23_containers/unordered_map/insert/83709.cc
! 5fc9aa7f6ee879e64c3fc60cce8de885  libstdc++-v3/testsuite/23_containers/unordered_map/insert/array_syntax.cc
! 7497e247309baa29b31d70bc4b02d59b  libstdc++-v3/testsuite/23_containers/unordered_map/insert/array_syntax_move.cc
! 96ec9f746d2ac9b6c5592fd26167531c  libstdc++-v3/testsuite/23_containers/unordered_map/insert/dr2354.cc
! c5699da7f99c9698ed59fb6523e5a4bd  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_range.cc
! e7911fdf4b1c8332260b5adee5e6e828  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single.cc
! 18221457ce3b0bafa384187262001cf9  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single_move-1.cc
! d47419fa6ccafc6aab739a15fe03ae1c  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single_move-2.cc
! 059d76f5e30c7c90ddf34da0988cff4f  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/61667.cc
! 682d1222bc129bb6a5b84f49de2bee77  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/78595.cc
! 754af3aa5288e1f87df7847102512ec8  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/92878_92947.cc
! 99660304c7340aad2bd12132516ea582  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/emplace.cc
! 55c0adbd10bc13c6a8383c0322a55398  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/extract.cc
! 57a7f561742eea2f3263032c9deab10b  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc
! df25e3fa6648ee9efd50df6821029fc0  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/merge.cc
! cf8bacb9577b094c1f67efe81e2c8f97  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/reserve.cc
! f6fb8e41b8cb18091689c84403d99735  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/try_emplace.cc
! 756defc1b2988cf5a17072e3c8b3884e  libstdc++-v3/testsuite/23_containers/unordered_map/observers.cc
! 681a7f8d15931023dc548e89ec6413e1  libstdc++-v3/testsuite/23_containers/unordered_map/operations/contains.cc
! 50854e9dc0f30d63640b51731f52af18  libstdc++-v3/testsuite/23_containers/unordered_map/operations/count.cc
! 43d99034c7ac8dceb363b49830493eef  libstdc++-v3/testsuite/23_containers/unordered_map/operators/1.cc
! a2f213bf0a338ad70880dac8ba10b481  libstdc++-v3/testsuite/23_containers/unordered_map/operators/2.cc
! 597504591efc77e6bfa07263de2f4fec  libstdc++-v3/testsuite/23_containers/unordered_map/pmr_typedefs.cc
! fc3b29c413869ca08d071f52a2cf0469  libstdc++-v3/testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc
  45f46b4cea5268d1bf8f903d79e3c350  libstdc++-v3/testsuite/23_containers/unordered_map/profile/hash_map.cc
  6bcaac31a8700749f12b90fa8913629b  libstdc++-v3/testsuite/23_containers/unordered_map/profile/unordered.cc
! bb1b3b5ef704c45fd1646731d6c815f6  libstdc++-v3/testsuite/23_containers/unordered_map/range_access.cc
! 66c7f1aa96e3421aa0260ce51a0f4221  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/52942.cc
! f193374fccbc6fd2ff0385ee7d1edc26  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53067.cc
! 93feabe0f1275bc4fcd84c7ebf8e9c88  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53339.cc
! 6a7aa35caa032755dbcbdf54400d7646  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/citerators.cc
! c59cae1118f68f1bc7cd02245ca70613  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/cliterators.cc
! 0d7830c0be905ae48782c6351e73021b  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_container.cc
! 6e67ce87c78b8ebca4041ce23f7ef31f  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_mode.cc
! 1fb31ec71ba274cfed4029e4b6b042d8  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/basic.cc
! ccef2b21c99fb34e4946bb5bc50911d3  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/generation_prohibited.cc
! 2e9c835fdc71d78b30342e583b168154  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/propagation_consistent.cc
! 4b68ddf619c362d043f9ad84407a2e3e  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/1.cc
! f8ca2e327407eac7ce46dc95df57e5ec  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/2.cc
! 09d4ea758960782cef053dd0f09528dd  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/3.cc
! f559ffdacad3a62ea605b46dac4e719a  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/4.cc
! c4d25ed654a8c4fe7b9496fd10e5d1f5  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/5.cc
! c6db842c1c61d9d85bb9ab189799d578  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/typedefs.cc
! 597f1ef266c2a21f522115a51a59e0f8  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101-2_neg.cc
! ff565b6bd4b25baf3c226340156a8474  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101-3_neg.cc
! 30663314599615a7513f4c4330ef2a75  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101_neg.cc
! 99d2afe6b01b760bff7514c053a32016  libstdc++-v3/testsuite/23_containers/unordered_multimap/55043.cc
! 56fb6e95a987cfb9a03f20d9b0e36d4c  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/copy.cc
! 9d150ce5b29493b3f2d559bc4e0d26c8  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/copy_assign.cc
! 7ec35ae89262ef545c9cc055db60d49a  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/minimal.cc
! f0dac633d4600acf7886e5d10ed4c5c1  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/move.cc
! 95d4d1c6715b50de6d4b7cc6be4f69fc  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/move_assign.cc
! d92c21d09948bc64c892379e2d9740b7  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/noexcept.cc
! 249b54b87e112ca4ad1b91bd5b0e899e  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/swap.cc
! ae690f6705c7c0f7d97c2ae993dcbdb5  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/66055.cc
  0c0d6b35989640c377141d1531195df7  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/deduction.cc
! 35cff1fdb44afc04da7e73080084e211  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/moveable.cc
! d28de6a50ca517f1e794c3dc8d4ff490  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/60499.cc
! 64d5177aeb4feb56bd9fbf7541fb9617  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin1_neg.cc
! 601cc49a9f19fb99d670c14db88b4474  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin2_neg.cc
! 4d4c800e73c92e068b1e09a416e60297  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/bucket_size_neg.cc
! 059b79153933f9c67fa8f78db600362c  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cbegin_neg.cc
! 99147ddbce54857654ae109895a9c4ec  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cend_neg.cc
! 9cf10e51aa5953654ee1df0b5a33cbfb  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct1_neg.cc
! 69cf9cfb4698be988e0016b11c990ae3  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct2_neg.cc
! 3afbcc37a35747a36d6e9c45faf9dfab  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct3_neg.cc
! e598582adcb141dca19db8cef788b5d1  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct4_neg.cc
! 1835938664a93df163c93bd2e106168d  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct5_neg.cc
! 3772654adc78fa353e9d68eea2700b02  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end1_neg.cc
! 809ac507aa86eed1fc3c2c57895551f4  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end2_neg.cc
! 24f72f9e7028a1538e3093827799ac5a  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert1_neg.cc
! 27adfedc7fb22a6d9d3bccf352072c97  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert2_neg.cc
! ba63476e4d11074bdf886eb974886c3c  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert3_neg.cc
! c1a07d363c37eaf4721a84ae782da17d  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert4_neg.cc
! 979205e18ffe732140de9d765c67cbd0  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_compare_neg.cc
! cb9d9028b0f8ddccbb845a1001060bcb  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_range_neg.cc
! 490e12d7504cc151a4414bc09f957b21  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/iterator_self_move_assign_neg.cc
! f2b8e48c710fc617ccfaebe94c1f3886  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/max_load_factor_neg.cc
! d2dda704dcf0123a86c8f04684854f7e  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/move_assign_neg.cc
! 420d9e5ef68e941e98b666578508ad6e  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/move_neg.cc
! 2927d83e8289f52b2fa34c0638d5f1f0  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/self_move_assign_neg.cc
! c4f682361a85eb56e7a70ff2f2efdb41  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_erased_local_iterator_neg.cc
! f4d99fa2847b9a74a40bfb4d3097a0ba  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_invalid_iterator_neg.cc
! fff7ae031dcd564c6df12ba47935cc50  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_invalid_local_iterator_neg.cc
! 761456755f05273eeea7edda55bb59d3  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/1.cc
! 00ab36be0da5116b3746abfb63f54874  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/2.cc
! b54fc9639cf7c028313e203eb383575b  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/24061-multimap.cc
! ee48232d5db0d3bf2817d24e99ac995e  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc
! ab5d9bd9dd253a7681c05aa4c932ea3c  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51845-multimap.cc
! f74e047f0e3023569c3b1e0654e72553  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/54276.cc
! 51536ae85e767e528121c3804d153d10  libstdc++-v3/testsuite/23_containers/unordered_multimap/final_hash.cc
! 698d8c4099375862b41079ee8a63c1ba  libstdc++-v3/testsuite/23_containers/unordered_multimap/hash_policy/dr1189.cc
! d6fe57a38887abf2eeb7f806c7624e60  libstdc++-v3/testsuite/23_containers/unordered_multimap/init-list.cc
! e718d8b0e0dcae43109a43cdb27418b8  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
! 647956ee305d8ec5b47a4a2fbe31d749  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/51866.cc
! 90eff8948ebfbe615d6bc8c67fa3ed7e  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/52476.cc
! 835229207e026ec50a6325bee1162424  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/53115.cc
! 5f89cf906ae6b8c6db2e0a2a334e8c21  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/55028-debug.cc
! 4c7fa3eddeb40e36842a30455dd134a8  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/57619.cc
! 65c52b8435368b92fa03c3687ea006bd  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/dr2354.cc
! 50f690b6941a47e33ffbb2b5d3fea56a  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/hint.cc
! f42d80b84f1455214b97556f31a52316  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_range.cc
! c009f63e36238370d348ccb0b29a178a  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single.cc
! a5dc6be8d4f89bdcf136b292b396503a  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single_move-1.cc
! 61e891d1f3979766c3d049462b0f8988  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single_move-2.cc
! 192d6d7b16bfdd9fda3e52fb4544292f  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/78595.cc
! 62eb930294fe13226599578f00c386ed  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc
! 9e1ac5ae18f56c97c18584d616196884  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/emplace.cc
! c694e8db1842311bb717d36ea207ee70  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/extract.cc
! 85b79e1b3409513e4baff92e46c45ee3  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/merge.cc
! e75d1134566d93dfaccde60aa79f2fb0  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/reserve.cc
! 947f3f69469ad18c74f2704dd6538d0e  libstdc++-v3/testsuite/23_containers/unordered_multimap/observers.cc
! f0d20a29670fab99dc9cf70934cad56d  libstdc++-v3/testsuite/23_containers/unordered_multimap/operations/contains.cc
! 1771b93f8d063a54f25fa49318d18b37  libstdc++-v3/testsuite/23_containers/unordered_multimap/operations/count.cc
! 01afaa13f05394b878810177b4a69b0e  libstdc++-v3/testsuite/23_containers/unordered_multimap/operators/1.cc
! 25486017b953d382c11b80c42dc75194  libstdc++-v3/testsuite/23_containers/unordered_multimap/operators/2.cc
! 9ad148c794f4a29a6749373d0842ddd0  libstdc++-v3/testsuite/23_containers/unordered_multimap/pmr_typedefs.cc
! 79c0fc86e9cea82d3a2965b159dee644  libstdc++-v3/testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc
! 2d2f84ccf691cc07eee361ca78f43e7b  libstdc++-v3/testsuite/23_containers/unordered_multimap/range_access.cc
! e75a4175ba0703215b26baa26d20d739  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/53339.cc
! 8f8d16403e2025945eb12b38a5c9c819  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/citerators.cc
! 27ce8d4599bb24773d47dc2a8c0fabc3  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/cliterators.cc
! 30abd7b13dbd6706d3bfde08cec02092  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/debug.cc
! 628c61f03cb454a48dd20525580ee235  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/basic.cc
! 26cfb640dc36a37295b744ef3922acb3  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/generation_prohibited.cc
! 8f34c22d7274ba615cd35c63382f8511  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/propagation_consistent.cc
! ddfa6d28fc5f8f3c226d1183cd7ff8b3  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/1.cc
! fc48ca6ae00d0eece397d045878a6225  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/2.cc
! 27b1f04da0f98c21ee5b83231482380b  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/3.cc
! bbc99e2e867e8252995b9e689534bf25  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/4.cc
! 2f9763f0b4a4c2588a95941566a693d2  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/5.cc
! f83be2e35d6a76821df905b99d06c79d  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/typedefs.cc
! 21d1bc08546fdd5e16a7bc30a3c47200  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101-2_neg.cc
! 463e7a11bdff71f05ad376e43cec4f1b  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101-3_neg.cc
! ac0f521f33c406d665b7d1add7a11e6b  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101_neg.cc
! 1acb7c67da3a72d2fb8d2763886cc5a7  libstdc++-v3/testsuite/23_containers/unordered_multiset/55043.cc
! a1f67bbabde60a160b071e77cf9b291a  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/copy.cc
! f25ad05b6056d88f29e532e209e1d2ab  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/copy_assign.cc
! e2b7dbae6a2d06eeab7d449fdb3481d1  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/minimal.cc
! 1d479030a1708f5530aa99689e9a446c  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/move.cc
! ee43b4d96e41d45d267c7b59dae55736  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/move_assign.cc
! 062f5155696efe0e5ee115940af596cb  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/noexcept.cc
! 4f3edc84badd0f31c5190f170a89b8df  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/swap.cc
! e8b88c2e83dd0dba23fcdbf1c1f1b60a  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/66055.cc
! f479b023c0c74d9b7a7ca0e7cb8b00e1  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/copy.cc
  94762517775d99b186586f012a571051  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/deduction.cc
! e0b10eb35e0edf27b864a409a176fb6b  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/moveable.cc
! 6611fc64748c9850681df45b0b68c784  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/60499.cc
! 2bb41ccac43a5929653663e0a71effbe  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin1_neg.cc
! a7bbaf5a1e2b82b1c2dca3879a1605fe  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin2_neg.cc
! 808994815ac307f21e4b3a4b41a73cdc  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/bucket_size_neg.cc
! 71c3f23dc5c3a706c35d3af9ea9563ab  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cbegin_neg.cc
! 094744de963ccfd7ebeca367a8f46912  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cend_neg.cc
! a71a7906d517c3f198c14a8cf10901ae  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct1_neg.cc
! 26f3ea50e95f9a5d8be04aa8d84a4e56  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct2_neg.cc
! 48ac80825363327799069423ef49439f  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct3_neg.cc
! 093abdda2d4d970661cc915809cd5269  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct4_neg.cc
! 430292fe609eddd71451c93d1d4e6c97  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct5_neg.cc
! 02cc5d8c0f78a98c131e222d82f26989  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end1_neg.cc
! ba4b67323f4b7b2202c419c14223098f  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end2_neg.cc
! b3051017141a7689bab1fc298530e2c3  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert1_neg.cc
! 8742d815efccd7d4d8a80b7ed02cdb63  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert2_neg.cc
! 0e98536d087de9590839e764193de727  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert3_neg.cc
! 0475ba5f560d18b9620be960e222f6e2  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert4_neg.cc
! f445d89b07f5794a6ce4a4493ba6b90d  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_compare_neg.cc
! 3a9cdec53d42c721d15e1b9c78a74362  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_range_neg.cc
! 76e0473723bd08f6f903edbbda5c1dfe  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/iterator_self_move_assign_neg.cc
! 9aea159b622f3bc5426b815335e1e978  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/max_load_factor_neg.cc
! 0382ce905468e7bddb4d05e2f87b6d68  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/move_assign_neg.cc
! fae18c308e1c0c9935346f26bd7cc69a  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/move_neg.cc
! cf54f37cb36738a1a8c0560b4b8d5741  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/self_move_assign_neg.cc
! c487246090a9a1d6e9217bdb9e69bfd2  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_erased_local_iterator_neg.cc
! af2c1f0e2740f98711f98617aa3cca30  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_invalid_iterator_neg.cc
! 30f94b63c156a4633947d22d6cd3bf64  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_invalid_local_iterator_neg.cc
! 9b563d5b549f477a18d466d8a4c37191  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/1.cc
! b8ddd416cc7207d27ce675dfe0a12944  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/2.cc
! 9340a365c17e1da6d9d5fd36cad7c7de  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/24061-multiset.cc
! 13e6bb3f629aa8e201433f2a640108a1  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc
! 2e687636e9d39b2b7b020b3bbb1b4746  libstdc++-v3/testsuite/23_containers/unordered_multiset/final_hash.cc
! 536639dc36d975e10739130aeeb74d0c  libstdc++-v3/testsuite/23_containers/unordered_multiset/hash_policy/dr1189.cc
! 052d02e1578c804e35fa6a15be722883  libstdc++-v3/testsuite/23_containers/unordered_multiset/init-list.cc
! 0e678298770378f1809c0d7ebd121d3d  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/24061-multiset.cc
! 9b4783b5eac6b78e0c0ad61f2db3417a  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/51866.cc
! d89bea85aae037c64a13247c5729818a  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/52476.cc
! 43a2791f0ceb3e5fc8808b684b45be79  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/53115.cc
! 2bb7f459bfbbd6ed4ebcf1c9052b290b  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/hash_policy.cc
! 8acdcbefd2fd417a37a0626f2d2e2153  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_range.cc
! 67238a3e43ff6152d3bb06a0cf2b4a65  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_single.cc
! 1723d94f9712d4608fadb2bc867b64a6  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_single_move.cc
! 443582248d93ac23e180df05940838ac  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc
! 398a90c4efb11a20beff73d3bdf6fe92  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/emplace.cc
! 4168922ead237d7f2cc1eb4a9506dab5  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/extract.cc
! 6238bf7589a8ed614f114fe9c0b78a03  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/merge.cc
! 84f737173197232139f7623bcd1a0c94  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/reserve.cc
! 2276b6ad905771dfe1fb816880b06af6  libstdc++-v3/testsuite/23_containers/unordered_multiset/observers.cc
! f6643588d9156180b28821c28b38f3d4  libstdc++-v3/testsuite/23_containers/unordered_multiset/operations/contains.cc
! f636ea3282f5f2691ac3bfe2a44b5f5b  libstdc++-v3/testsuite/23_containers/unordered_multiset/operations/count.cc
! e28c7aa6d07a9cebfed2253cba04de47  libstdc++-v3/testsuite/23_containers/unordered_multiset/operators/1.cc
! 70c38be6e77980b518ed57bb4979b82a  libstdc++-v3/testsuite/23_containers/unordered_multiset/pmr_typedefs.cc
! 1068a92727e9f3fddff658dd4e0e2df8  libstdc++-v3/testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc
! cf73b8702b24a4ac550beeed4ae399ba  libstdc++-v3/testsuite/23_containers/unordered_multiset/range_access.cc
! 4f9dfd8577c7f058eabadf61a77ef1b6  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/citerators.cc
! 32484a5dd17217409041f5fbc705c1f5  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/cliterators.cc
! e47526b01e53bc65ee88ee7594229784  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/debug.cc
! 7aa570f4045894cb0261c8b06bddeac3  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/basic.cc
! add363747914fa17e8dca8e9e7f4e2db  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/generation_prohibited.cc
! bbf47b03a3171043929a47a70c3675a4  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/propagation_consistent.cc
! 44a04d2003b27b7c207ed5d1d33a1927  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/1.cc
! 958d1544c9c729f196f729b9208c71e0  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/2.cc
! d3e9d97385f519444032eab6cfc15e31  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/3.cc
! d1d109faefb0f21d03f5eaf63ea1e286  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/4.cc
! 3b6c40585021c9107ee1bd1946bd8d89  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/5.cc
! 0521f871ec5acbde6945593c0b33c8f8  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/typedefs.cc
! 44d8485d9c83fb58291b8b4a2aab4ad1  libstdc++-v3/testsuite/23_containers/unordered_set/48101-2_neg.cc
! b968302347a4a91e44c34341cdd11879  libstdc++-v3/testsuite/23_containers/unordered_set/48101-3_neg.cc
! 935ae921bdaaeea316a9efa2bd74b8e3  libstdc++-v3/testsuite/23_containers/unordered_set/48101_neg.cc
! 4d9e74a7fa5f99a17675e6d65b1e2da6  libstdc++-v3/testsuite/23_containers/unordered_set/55043.cc
! 60d04db09801b2413d22353245f526f8  libstdc++-v3/testsuite/23_containers/unordered_set/56267-2.cc
! 6de63a75cae0c53d0b4d438b9907435b  libstdc++-v3/testsuite/23_containers/unordered_set/56267.cc
! 99bcee53ab247427e1e0f270aa070e17  libstdc++-v3/testsuite/23_containers/unordered_set/56278.cc
! 79099061a8e8cb914af51358edd3c71a  libstdc++-v3/testsuite/23_containers/unordered_set/61143.cc
! 59f730ce6922ea706a71c5e000c7881d  libstdc++-v3/testsuite/23_containers/unordered_set/63456.cc
! 0087fc3e11da28c921c4121e29c908b1  libstdc++-v3/testsuite/23_containers/unordered_set/85965.cc
! 13a8eda637daa205b7c6793116b0579b  libstdc++-v3/testsuite/23_containers/unordered_set/92124.cc
! c8ea3048b30ffa31ac91f02e41bb3c84  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/copy.cc
! 37a79f9c1cd30bc26a62620b60bfa653  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/copy_assign.cc
! 0796bb0232ff397111c0fadf04a88c40  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc
! 1eb49f3fe37785d4f29ee7d8b1adb09c  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/minimal.cc
! c26cae207d11da819821de263792e056  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move.cc
! 861fe495ed2638aaf6e8bb0eea70e27f  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move_assign.cc
! d879e90c2bc9d9c28fdef4dbc4ca618a  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/noexcept.cc
! f99119cae35abd3c81e31f8044c623fe  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/swap.cc
! d540623f05bb8156c72744d17273d259  libstdc++-v3/testsuite/23_containers/unordered_set/buckets/swap.cc
! 182b35b1ef56447fd3e7aba1c7863839  libstdc++-v3/testsuite/23_containers/unordered_set/cons/66055.cc
  b3b806f5f10ddfb77c8aeb8ba285b4a9  libstdc++-v3/testsuite/23_containers/unordered_set/cons/deduction.cc
! ba8af49486d5d3c3c8a4dec507661c7e  libstdc++-v3/testsuite/23_containers/unordered_set/cons/moveable.cc
! 01119af8e6870ebc2b0760127c4deb6d  libstdc++-v3/testsuite/23_containers/unordered_set/debug/60499.cc
! cd5576e36e1a194d03e482ba0406e064  libstdc++-v3/testsuite/23_containers/unordered_set/debug/89608_neg.cc
! 92f1092eea2f4a9e5a23bbd97ee409a7  libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin1_neg.cc
! f8058c3e1a92413f95f6dbee585aba9a  libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin2_neg.cc
! 2f5f789f053ccc9384e8474b5b257c2a  libstdc++-v3/testsuite/23_containers/unordered_set/debug/bucket_size_neg.cc
! b9ad60712342eb1add1d7ca84a7ff9d2  libstdc++-v3/testsuite/23_containers/unordered_set/debug/cbegin_neg.cc
! 693871954234ba7a28424437f5b1b9e9  libstdc++-v3/testsuite/23_containers/unordered_set/debug/cend_neg.cc
! 06afde92727f00eff9cfe78537888341  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct1_neg.cc
! 67a887ab3cba25a5641db5a8a5597892  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct2_neg.cc
! cdf37d707972133238aea60f92cc977b  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct3_neg.cc
! fad10142d7280c6d6999b25bd8d34792  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct4_neg.cc
! 31b242335d63d4ba7e49bb56c1544910  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct5_neg.cc
! 42a37924f59db30e550db6c4a0cab09b  libstdc++-v3/testsuite/23_containers/unordered_set/debug/debug_functions.cc
! 564dcb0ce135b08aecaea59a1eb0c0f5  libstdc++-v3/testsuite/23_containers/unordered_set/debug/end1_neg.cc
! 5f0cb8df20ddb4dbe8ff9e6fe8ec814f  libstdc++-v3/testsuite/23_containers/unordered_set/debug/end2_neg.cc
! 345d3c41314a90b07d5d7e733fb030ab  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert1_neg.cc
! aeaa40b99e8504677412d7ea00cb91fd  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert2_neg.cc
! 7bee81332401a35388380f3a18bdd574  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert3_neg.cc
! 4e9812ecaa3fd43f7cc0a950a8e1905a  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert4_neg.cc
! ab81bad5743eea0c49b48e1622e88449  libstdc++-v3/testsuite/23_containers/unordered_set/debug/invalid_local_iterator_compare_neg.cc
! 23612ea2d45290843a3cf8cb51feb2e6  libstdc++-v3/testsuite/23_containers/unordered_set/debug/invalid_local_iterator_range_neg.cc
! a1f7adf0cd68a540ce8468b8b11a93a9  libstdc++-v3/testsuite/23_containers/unordered_set/debug/iterator_self_move_assign_neg.cc
! d402dba32bc42cfd242dc5ffe04c9fa8  libstdc++-v3/testsuite/23_containers/unordered_set/debug/max_load_factor_neg.cc
! e7af6b50541fc6c3a9cbfc487fe07b62  libstdc++-v3/testsuite/23_containers/unordered_set/debug/move_assign_neg.cc
! 579ec563bd7dc8e122bb213db9af62ef  libstdc++-v3/testsuite/23_containers/unordered_set/debug/move_neg.cc
! a8c73b7bd85ba185d8f815f2016bf6f1  libstdc++-v3/testsuite/23_containers/unordered_set/debug/self_move_assign_neg.cc
! 70d989de75517f31f78d641c35aee0e3  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_erased_local_iterator_neg.cc
! 0f45649758f5f674f151c6f607133f5d  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_invalid_iterator_neg.cc
! 2cf33b93551da3c4253cffbecd45f830  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_invalid_local_iterator_neg.cc
! c5eaed75f3afd7a5200acacf825a95fe  libstdc++-v3/testsuite/23_containers/unordered_set/erase/1.cc
! 4954d351d1cc95ea61837cb9d7e80a3a  libstdc++-v3/testsuite/23_containers/unordered_set/erase/24061-set.cc
! 977af84bb29bdea25f33700f8e48f068  libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc
! 8862dbd26f52a1a6a4887fc18d87a8d5  libstdc++-v3/testsuite/23_containers/unordered_set/erasure.cc
! 34122fae4fd783922438363e1b42d52f  libstdc++-v3/testsuite/23_containers/unordered_set/final_hash.cc
! 203ec052bd85db9e96a893108c6d0871  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/26132.cc
! c77c26732881fb9df5f695c32a4e5980  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/71181.cc
! 968df17dc0f9716d3a4eee2000c2b537  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/dr1189.cc
! d128fd02e8953008895c0c22ae475f8a  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/load_factor.cc
! ea36b75a2d890f37feb966540cefc702  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/power2_rehash.cc
! c5778245c6e9b310a4b79cdeee77c353  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/prime_rehash.cc
! 07e2a3e5a6acd249336365ab6debefd0  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/rehash.cc
! f2ddbadff4a6656b7a47efb2782565c8  libstdc++-v3/testsuite/23_containers/unordered_set/init-list.cc
! b41d4a3484c388d89e1352d2a3fd40ee  libstdc++-v3/testsuite/23_containers/unordered_set/insert/24061-set.cc
! 67e5be7ceaad28c2db78a0c7cb0fcfe2  libstdc++-v3/testsuite/23_containers/unordered_set/insert/83709.cc
! 9ed7cac5ffd5731db85be95b2d1943a3  libstdc++-v3/testsuite/23_containers/unordered_set/insert/hash_policy.cc
! 710c39af20f066e779cbc9198ee26fc9  libstdc++-v3/testsuite/23_containers/unordered_set/insert/move_range.cc
! 6933e6df16ea93d70895f3c1ad5c83bb  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_range.cc
! ae8403c7ed48bdd522e15d66208c419c  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_single.cc
! 96120dbfe19ec68f96e1d20b621922d2  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_single_move.cc
! 6494c08fe35d7ad6c9f38e16b7f034da  libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc
! 140d34122b4cca69d77011746046bcde  libstdc++-v3/testsuite/23_containers/unordered_set/max_load_factor/robustness.cc
! 57e8b6659deca2a2534f5ef61d28dbd4  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/92878_92947.cc
! 87b78cc61c360be57e1142423ce1982c  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/emplace.cc
! 19e63b20579bec2d04873ba407609f8a  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/extract.cc
! f9465f9889bf26da8a2ac14f33014797  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/merge.cc
! 67bbf36067da5d3bdf048fbf1edf827b  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/reserve.cc
! 2e5e9a171eb2ab6b5394d6819bb51d17  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/swap.cc
! 54ce82f0ec2a9f0eba47380dd0bd2cfa  libstdc++-v3/testsuite/23_containers/unordered_set/observers.cc
! 5547f2466446d2974d171c33f2215589  libstdc++-v3/testsuite/23_containers/unordered_set/operations/contains.cc
! 273b582be828944f32a70475901d299c  libstdc++-v3/testsuite/23_containers/unordered_set/operations/count.cc
! bae3830167b118242c4c9b3422690f99  libstdc++-v3/testsuite/23_containers/unordered_set/operators/1.cc
! 6799f27f44376c74baeabf37a8c43de5  libstdc++-v3/testsuite/23_containers/unordered_set/operators/52309.cc
! a9fc38965adde9f56ffdcb2ea9f22ecf  libstdc++-v3/testsuite/23_containers/unordered_set/pmr_typedefs.cc
! b0d4d31f2eeb0dce5206b90936fd4f07  libstdc++-v3/testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc
! f4d47c09bfbc1c3687d9cfd7cbada01c  libstdc++-v3/testsuite/23_containers/unordered_set/range_access.cc
! dc3f7056b30f4b9044c0f73741c3c58a  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/52942.cc
! 858303c2254515309704d4182a961d4a  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/53067.cc
! 7294b6782750045a49975f9491b05571  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/citerators.cc
! f79fa4c26c7cfb03e3ff5af86a5670ef  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/cliterators.cc
! f09611ab4fc38448e3bd2dddf7981015  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/debug_container.cc
! bc18fd86e2f829b4e7efa21a5a6f7b77  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/debug_mode.cc
! 9be95af2cef6517d063f4e99bdba846c  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/basic.cc
! dab12ee64740b6fa29b20265ddd0dd2c  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/generation_prohibited.cc
! ae3c762ab32a9d40f957fdf542b748d2  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/propagation_consistent.cc
! a037a85ebb5834b80f933fc542f7c288  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/1.cc
! e2cb584a2fedc730ac268a9beaca841e  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/2.cc
! 79f6a34f6eba52bf097e1867d5b243b5  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/3.cc
! 87a6fddf2b8719a85ce7cdb43b64359c  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/4.cc
! c847dbac11cadf0e30537db269da813d  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/5.cc
! 11a963ae98f7b832e674716257425a7d  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/typedefs.cc
! ecd063b3a8162170a081417015fae7bf  libstdc++-v3/testsuite/23_containers/vector/14340.cc
! 778c84a10c87bc3c56f0a58984d4f4d0  libstdc++-v3/testsuite/23_containers/vector/15523.cc
! e832ce53652852ef154e0225c40fbc71  libstdc++-v3/testsuite/23_containers/vector/18604.cc
! 97c3a4a1fa641b7e311de5e8cb51e07e  libstdc++-v3/testsuite/23_containers/vector/26412-1.cc
! 25d7a9608f9fda3afe0749e865d7f35f  libstdc++-v3/testsuite/23_containers/vector/26412-2.cc
! 59f8533c6238507dda4c9672dee52d94  libstdc++-v3/testsuite/23_containers/vector/40192.cc
! 97345d70deac0d343f578ea9d1436acd  libstdc++-v3/testsuite/23_containers/vector/48101-2_neg.cc
! 58fa0f50227e8e50ac164b386582a75d  libstdc++-v3/testsuite/23_containers/vector/48101-3_neg.cc
! f9fbf0651d65bca98a982bb016fa80c8  libstdc++-v3/testsuite/23_containers/vector/48101_neg.cc
! 67968d6b438c2c48066760512c45dcca  libstdc++-v3/testsuite/23_containers/vector/52591.cc
! 61f5998c10320732cce4ea5eed393ec2  libstdc++-v3/testsuite/23_containers/vector/58764.cc
! ac4ff419f8b096d64e9dda29d1bb1282  libstdc++-v3/testsuite/23_containers/vector/59829.cc
! 1a78dd2f59e6919c9a2ec252af84ede6  libstdc++-v3/testsuite/23_containers/vector/63500.cc
! 12aedef3be43bbd31fa3f1781cd90bc1  libstdc++-v3/testsuite/23_containers/vector/92124.cc
! 33c8df4b7f5e49e62ad169242fd43095  libstdc++-v3/testsuite/23_containers/vector/allocator/construction.cc
! f98101ba614105be276de94bfcd3e8ee  libstdc++-v3/testsuite/23_containers/vector/allocator/copy.cc
! 095096dc8bfa58d0a5f247378ac75bda  libstdc++-v3/testsuite/23_containers/vector/allocator/copy_assign.cc
! 8aec2b3f08c3e8cf4aaf8c5533c859ef  libstdc++-v3/testsuite/23_containers/vector/allocator/default_init.cc
! fcabb9478a6d2f1a84dbac1860565434  libstdc++-v3/testsuite/23_containers/vector/allocator/ext_ptr.cc
! 540d3d6ecb91513b5b8287dcb4253ef7  libstdc++-v3/testsuite/23_containers/vector/allocator/minimal.cc
! 53c8a34177d8249a4695f983d8fa24c4  libstdc++-v3/testsuite/23_containers/vector/allocator/move.cc
! 4b74f7d56eb91fc2dda198083f74ab6a  libstdc++-v3/testsuite/23_containers/vector/allocator/move_assign.cc
! ae8b72943bd42d54fea6873c60dab47b  libstdc++-v3/testsuite/23_containers/vector/allocator/noexcept.cc
! 4c7afddc4f53391302f1303358d07a9f  libstdc++-v3/testsuite/23_containers/vector/allocator/swap.cc
! 827d35d5f0ef11dc0b961fa80d32bee7  libstdc++-v3/testsuite/23_containers/vector/bool/1.cc
! 702f7f82fd793e0fa4fd7f5e01651c40  libstdc++-v3/testsuite/23_containers/vector/bool/21244.cc
! 3a8b9b2c52d843ae2f60fdf091e80175  libstdc++-v3/testsuite/23_containers/vector/bool/23632.cc
! b2f8bf373d853bf6d9368a37fb79bcff  libstdc++-v3/testsuite/23_containers/vector/bool/6886.cc
! ce1e1426b77f9e520a7f6a45197d7bf7  libstdc++-v3/testsuite/23_containers/vector/bool/72847.cc
! 53fb57f02aeb5b0c28f98de99b2ab9c0  libstdc++-v3/testsuite/23_containers/vector/bool/80893.cc
! 33cfa8291e943a47e8c2cbb98906212c  libstdc++-v3/testsuite/23_containers/vector/bool/82558.cc
! 7f907af8ef482f35b32436b05afafd95  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/copy.cc
! bc1be4cdd03798e4697d7551e90b640f  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/copy_assign.cc
! a0841429a41b15e2d32ff8ff50450bf5  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/default_init.cc
! dd9d362b5feb8099a1206069a91fe5ab  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/ext_ptr.cc
! fe9fdd365de801fc3afb54263b5d5e4e  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/minimal.cc
! d8aec57006162ff7fe1125a8088aebd4  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/move.cc
! 52dd26efe097477eee6d94ee8e3a8950  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/move_assign.cc
! 5b61717d343461ca384faa1a3e12da7c  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/noexcept.cc
! 527fffd4c523a2dd5833c325100fa486  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/swap.cc
! 3f2eb63e52244e22af0c2d10b58e9da8  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/1.cc
! 8801b5d0d3894ba9741591f979f29938  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/29134.cc
! f65995e8c08fb48cdfbf1c3a2a5c845b  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/shrink_to_fit.cc
! cbac3d03899c6fe697f2a6435cf7c6a2  libstdc++-v3/testsuite/23_containers/vector/bool/clear_allocator.cc
! ac9e640fedf1443e8829817c3e3f4c99  libstdc++-v3/testsuite/23_containers/vector/bool/cmp_c++20.cc
! 2c028d4cbdabf4db7f8586ee643742d4  libstdc++-v3/testsuite/23_containers/vector/bool/cons/1.cc
! 2b3ec9bdeb24e98c4dd89fd3e76ab9be  libstdc++-v3/testsuite/23_containers/vector/bool/cons/2.cc
! 43e3f0476a71ab9cf6d42065a7bebbba  libstdc++-v3/testsuite/23_containers/vector/bool/cons/87809.cc
! 6f162d80946671cce96e5a0ed5a971db  libstdc++-v3/testsuite/23_containers/vector/bool/cons/noexcept_move_construct.cc
! 737b83615a642d8738a9711ecd990966  libstdc++-v3/testsuite/23_containers/vector/bool/emplace.cc
! bc373932721f6d4ba32b59b79d699413  libstdc++-v3/testsuite/23_containers/vector/bool/emplace_cxx17_return.cc
! f6cca27b1cf4ba2e666a2efa01a88eca  libstdc++-v3/testsuite/23_containers/vector/bool/hash/1.cc
! 4347ef35e42f3c8ca413b7dcf614f58a  libstdc++-v3/testsuite/23_containers/vector/bool/iterator_c++20.cc
! 45b8517e815570589d17dfc60c40094e  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/assign/1.cc
! ab71d9ba029a80dbe6cb2f4f34b0879e  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/erase/1.cc
! bac3f9943592ba84daec2fab178d7e55  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/erase/54577.cc
! 4d04ca90f4cff9e8eed10a752b58552e  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/1.cc
! eaaf9462d276bbe9ef8590657b4ae4b7  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/31370.cc
! 6e4197b1faf1bf24613a8e7ab35c02ed  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/const_iterator.cc
! 4a44e060b12a21affb877a1c2a3cdb2b  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/1.cc
! b383541768ec9d8eb922472ea9cb95cb  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/2.cc
! 9ee4903388d3a11a7181ee727f239511  libstdc++-v3/testsuite/23_containers/vector/bool/requirements/citerators.cc
! 08c427fd091534d5c3c3c018020d29ad  libstdc++-v3/testsuite/23_containers/vector/bool/requirements/dr438/constructor.cc
! 073a4aa1e23259e2c17f48d27d470c28  libstdc++-v3/testsuite/23_containers/vector/bool/swap.cc
! 60f858b3a71a2b7922451f16ed59ac75  libstdc++-v3/testsuite/23_containers/vector/capacity/1.cc
! 1568ffb66b8fc368278eab98ca5bdb21  libstdc++-v3/testsuite/23_containers/vector/capacity/2.cc
! e4d2c68ec12feaa656c6ed46057048aa  libstdc++-v3/testsuite/23_containers/vector/capacity/29134-2.cc
! 747b209564f54d054060b3574574e25d  libstdc++-v3/testsuite/23_containers/vector/capacity/29134.cc
! 8008c813606319f4da04cbc27b110a4b  libstdc++-v3/testsuite/23_containers/vector/capacity/44190.cc
! cd83ae9307294eab1cb2c08e8752a4a4  libstdc++-v3/testsuite/23_containers/vector/capacity/8230.cc
! 031111d9e1f93b3680a334ad4abbb903  libstdc++-v3/testsuite/23_containers/vector/capacity/87544.cc
! 21cf2263b66c0614a32459284512831c  libstdc++-v3/testsuite/23_containers/vector/capacity/max_size.cc
! fdb65ad70fcaf6428c52a75da6271700  libstdc++-v3/testsuite/23_containers/vector/capacity/reserve/moveable.cc
! 864b04e324dd52c8c528b7b4d667791c  libstdc++-v3/testsuite/23_containers/vector/capacity/reserve/moveable2.cc
! 7f2dbbd657cb74dfd214a18a91691730  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/1.cc
! 7a2fe419535969777ea6fbdcca79f1ca  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/moveable.cc
! 6f2a9e34cc9eabecd8889e7d91290266  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/moveable2.cc
! 04e6b0ee5f4d428f2d701bb0de8d6116  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/resize_size.cc
! 7731a419f5ba6238a2005eb40ff636d1  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc
! dee190bee33ce6b06b82367fa2db3b0b  libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit.cc
! a4beaf06893512d7ec4f5feddedd9a1f  libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit2.cc
! 2082e2a85196b5565db58221bfbb2e9a  libstdc++-v3/testsuite/23_containers/vector/check_construct_destroy.cc
! a9ffa1899fd8662a750bf438ad2ae3e3  libstdc++-v3/testsuite/23_containers/vector/cmp_c++20.cc
! 89e02116ca3f9c21c2272c7680fc711c  libstdc++-v3/testsuite/23_containers/vector/cons/1.cc
! 31d62d8e015148b8ccd021e43978d3c0  libstdc++-v3/testsuite/23_containers/vector/cons/2.cc
! c0ef5c71137a218850c8c558bf2b6399  libstdc++-v3/testsuite/23_containers/vector/cons/3.cc
! 1edb830d9fcb9387e39923427c5129cd  libstdc++-v3/testsuite/23_containers/vector/cons/4.cc
! ec2cbcbd579c7db00bfa4974e6e4f620  libstdc++-v3/testsuite/23_containers/vector/cons/55977.cc
! b88d2378fda69ce34b7aca5a960cb2e8  libstdc++-v3/testsuite/23_containers/vector/cons/6513.cc
! 5787b6df578422e6696a2bc15aaba253  libstdc++-v3/testsuite/23_containers/vector/cons/86292.cc
! 57f43448495a1f4eec092cb9e2012fd2  libstdc++-v3/testsuite/23_containers/vector/cons/87809.cc
! 3fc61c2eea4ee30b1b78c0784fc95061  libstdc++-v3/testsuite/23_containers/vector/cons/89164.cc
! 91e34dc9d3989a7274744c16d06d3922  libstdc++-v3/testsuite/23_containers/vector/cons/89164_c++17.cc
! 2b455887b8664a15556cd198ea2793f3  libstdc++-v3/testsuite/23_containers/vector/cons/94831.cc
! 1b0637cd75d90c6f78015e03dd67a628  libstdc++-v3/testsuite/23_containers/vector/cons/clear_allocator.cc
! d2beca7d5db03f0cbf7463e386d24849  libstdc++-v3/testsuite/23_containers/vector/cons/cons_size.cc
! fe9e8055d2bd64a514c4695e7581f475  libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc
! 5c9634f893b56b2608e1c050e190d297  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
! 3933c1d1590ea0692dd5041da402d9cd  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
! 1a9d5585bca836c37bbc8286ebd4caca  libstdc++-v3/testsuite/23_containers/vector/cons/moveable.cc
! f9dbf3ed4f74b4b93e5afd54ebe0780b  libstdc++-v3/testsuite/23_containers/vector/cons/moveable2.cc
! c92eb4d0394c1dd65acd0807ab021ce1  libstdc++-v3/testsuite/23_containers/vector/cons/noexcept_move_construct.cc
! b9efbe67db532b7277936a6820596af8  libstdc++-v3/testsuite/23_containers/vector/data_access/1.cc
! 59d7670a81fec983e71fbd6a6201b5bb  libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc
! c7caa56fbcfa917d6cdfdf5f204bdb53  libstdc++-v3/testsuite/23_containers/vector/debug/57779_neg.cc
! 064253aea68babc3abab987a23e380cb  libstdc++-v3/testsuite/23_containers/vector/debug/60499.cc
! b92fd72a9bab6a367bb241b2557a6113  libstdc++-v3/testsuite/23_containers/vector/debug/60587.cc
! cd469c921dbc94ecdf2768e5b2121c08  libstdc++-v3/testsuite/23_containers/vector/debug/60587_neg.cc
! c51a9b8e125077a2072885b0b25fda36  libstdc++-v3/testsuite/23_containers/vector/debug/alloc_prop.cc
! 1ed6c44e5da419462d9c1a3905902c7d  libstdc++-v3/testsuite/23_containers/vector/debug/assign1_neg.cc
! 00da6565df3859ebe03e8b84b172a269  libstdc++-v3/testsuite/23_containers/vector/debug/assign2_neg.cc
! ad21abf6806b69aee67bc12ea44bd8ff  libstdc++-v3/testsuite/23_containers/vector/debug/assign3_neg.cc
! 7f6e62ae3621d2587fc227b0b75d29db  libstdc++-v3/testsuite/23_containers/vector/debug/assign4_neg.cc
! d104180896df81526f72128876503a92  libstdc++-v3/testsuite/23_containers/vector/debug/bool/shrink_to_fit.cc
! d649814f6ea344847f20497c07a019a8  libstdc++-v3/testsuite/23_containers/vector/debug/construct1_neg.cc
! a684bde2fb250e77f68273ef2a8060fd  libstdc++-v3/testsuite/23_containers/vector/debug/construct2_neg.cc
! f37af8a727e364045fb992e0652abde2  libstdc++-v3/testsuite/23_containers/vector/debug/construct3_neg.cc
! 915d95ee4995be5526f9d4cf64711264  libstdc++-v3/testsuite/23_containers/vector/debug/construct4_neg.cc
! 1d8d9b9a9d1ea40730d318afc7eb11da  libstdc++-v3/testsuite/23_containers/vector/debug/debug_functions.cc
! 38c258412acbbcf1d7246e2cb9a2add1  libstdc++-v3/testsuite/23_containers/vector/debug/insert1_neg.cc
! 04a2ab84076f32bc511ad820da6a1156  libstdc++-v3/testsuite/23_containers/vector/debug/insert2_neg.cc
! bfb61daee24bba21ce65945a377b5961  libstdc++-v3/testsuite/23_containers/vector/debug/insert3_neg.cc
! e5f12355005471cabdb148a3c6a14dff  libstdc++-v3/testsuite/23_containers/vector/debug/insert4_neg.cc
! 0b3a91646ab5fdbf7574407dd8c1f84c  libstdc++-v3/testsuite/23_containers/vector/debug/insert5_neg.cc
! a4567fbdf10ac1acde0c6f87f96c1264  libstdc++-v3/testsuite/23_containers/vector/debug/insert6_neg.cc
! 392eda765d93d972fe00f5e2144f33c0  libstdc++-v3/testsuite/23_containers/vector/debug/insert7_neg.cc
! 4542055f979700d680cd37df03b4b281  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/1.cc
! 99c0a30328282619c86f10955a03a99d  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/2.cc
! ccba001890988ddbcc6df7ae1b26f5a5  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/3.cc
! 71158c4cf224a204eb21c18804e55b44  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/4.cc
! 7b1f3f5d375d0305e17461a508522f1a  libstdc++-v3/testsuite/23_containers/vector/debug/iterator_self_move_assign_neg.cc
! 78a67e2bd471ebabadd2731f9da95021  libstdc++-v3/testsuite/23_containers/vector/debug/move_assign_neg.cc
! 253e829b7b79c3e75b56421fa29b67f7  libstdc++-v3/testsuite/23_containers/vector/debug/move_neg.cc
! 1d1958011b802dcee3ee213eb4990411  libstdc++-v3/testsuite/23_containers/vector/debug/multithreaded_swap.cc
! a9550e641e8bf20a0142313cde7ad74e  libstdc++-v3/testsuite/23_containers/vector/debug/mutex_association.cc
! 5e0b6a3be79aef316c75180fb7fe8a0b  libstdc++-v3/testsuite/23_containers/vector/debug/self_move_assign_neg.cc
! 28959da9c4ce84f37d4b4af1cc741138  libstdc++-v3/testsuite/23_containers/vector/debug/shrink_to_fit.cc
! 4fabd9ae62ec904ca41883f9c1a4cc22  libstdc++-v3/testsuite/23_containers/vector/debug_mode_requires_reallocation-1.cc
! 1ea35f7162a0e6962038d30e597921f9  libstdc++-v3/testsuite/23_containers/vector/debug_mode_requires_reallocation-2.cc
! 941258a525428d4d8de65c29e611a27c  libstdc++-v3/testsuite/23_containers/vector/element_access/1.cc
! 176b94322343b6319846f409c0d7dfaf  libstdc++-v3/testsuite/23_containers/vector/erasure.cc
! c6d35f9638c1511d87caf7245f388ed9  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/citerators.cc
! 202729aed32d7edac57aaa5895bf5f06  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/data_access.cc
! 499c83a99db99bd05c9e2972cb9bb1dc  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/explicit_instantiation/1.cc
! 00d2c9ef8a59afce4240572848d6ae7c  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/explicit_instantiation/3.cc
! da3d0722d3e5a5986d54d680be3985b2  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/element.cc
! b8160b3952645d1c55ce60b76dcd7c5c  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/erase.cc
! 17e78c9b18b732b85d12c6b421ed005c  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/insert.cc
! f7dcc9f76e82f7aef2b7028814e6edd9  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/resize.cc
! 774c0dd13a8e547f2e10cfa5ea734b9f  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/types/1.cc
! fa52ca88af3445ff13bddc86d6df1731  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/types/2.cc
! debea5d3179faef3d598ccc84f1640f7  libstdc++-v3/testsuite/23_containers/vector/init-list.cc
! 0f1225450f26e341fb2309b1699ca877  libstdc++-v3/testsuite/23_containers/vector/modifiers/1.cc
! b5fad7b0ba77f9ad6d0769fd579fb7a2  libstdc++-v3/testsuite/23_containers/vector/modifiers/2.cc
! ff11d96ea321c1667d11adb8f6a386fa  libstdc++-v3/testsuite/23_containers/vector/modifiers/assign/1.cc
! 2b27b9e5d6468793961d37290b991211  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/52799.cc
! 7873295e9f3e8da2fffe3058a28eec3b  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc
! 10b360b37949efb211a4d30086c517b4  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/const_iterator.cc
! 6b45bac174f7be0d03aeb9ab3d14ad6b  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc
! 7017dac9a936ad0982b857274d7d4bda  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc
! 991adb0347fbd09d132caef4964545a3  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/1.cc
! be0b698e9a5555ea69805e165d5a28c4  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/50529.cc
! b4bf52f52aa80bdafa32694f70ca0178  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/54577.cc
! ff7951b13098649f0c7fec7c01c29fe0  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/moveable.cc
! 5e43db8348cfd927146439b8e5057753  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/1.cc
! d3bf1956f1e19e67ab8f8e986bc6ab64  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/58148.cc
! 26dcce9fb3d5ba9b742e0a08703aeeac  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/aliasing.cc
! d7764a274746370c2ce135564642655c  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/const_iterator.cc
! aca3789f080d598680093c312ff0b0da  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/self_insert.cc
  8fb5c601f412e71f5977219b7d89f18d  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc
! 782d387788dcca12157c7e420dc96a5c  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable.cc
! d33fa3eecba5c9cb15772a57da301fbf  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable2.cc
! 239305ade9a1c956cbbb5c2feb6ccb1c  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/49836.cc
! ea13de176a25ae251b9c2da88f50fe7c  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89130.cc
! c456c4e18b92e4dda1f90a5688c4a5c0  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89416.cc
! 2ff07323cd02c1cc74065fd5ae1c046b  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/strong_guarantee.cc
! 6ed9f2a018c97967657c49db4bca25cc  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/1.cc
! 39150a3647d57e6f22c56b32ff9da5a6  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/2.cc
! f55bdb5b69fe22449da4814dbe013325  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/3.cc
! e89bf5c69ff8920ee10c61f2538f01ff  libstdc++-v3/testsuite/23_containers/vector/pmr_typedefs.cc
  33db2bb591e55ad911ea124e372841ca  libstdc++-v3/testsuite/23_containers/vector/profile/vector.cc
! 9dd3aa1de68c53b302cc7288fe6792b0  libstdc++-v3/testsuite/23_containers/vector/range_access.cc
! 56c5e067f669a099c6f78cfc77bd680d  libstdc++-v3/testsuite/23_containers/vector/requirements/citerators.cc
! eae038171d3f86b48134be3ade49df10  libstdc++-v3/testsuite/23_containers/vector/requirements/do_the_right_thing.cc
! 14519a6ea431298dce69c3f4fd98aa4a  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
! 1f6b8b4e030994627daf9d9fe40a0cbc  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor.cc
! 6aa1cfc6d3214bc988d43a59aa6ec026  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
! 98c0869119ecea2cc30f48e76104ded2  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
! b97bbd18ad6f789144004647b8c4a275  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
! f600062122c6bf830ee2582d052f8ab6  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/basic.cc
! f7c5134005d29e0c3dee600e3842416b  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/generation_prohibited.cc
! 0836ebfd7cdd273170eb5732697c922a  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/propagation_consistent.cc
! caf43b1c6e60ac16e2ff3565693d97be  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/1.cc
! e8a98b5c55a9feca435cc9c2faf1fec4  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/1_c++0x.cc
! 2f2a09d82c97c869d83312adef28442a  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/2.cc
! 96f6f5cb7db3ac55d6e63329c73729d8  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/3.cc
! 5544bb0ee462759fe9c353a2baec1bac  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/4.cc
! b1728d29ba30e3479403c8f97787073f  libstdc++-v3/testsuite/23_containers/vector/requirements/partial_specialization/1.cc
! ca9ad020eaf82aea883ffcc5b2ce3d3f  libstdc++-v3/testsuite/23_containers/vector/requirements/typedefs.cc
! d4b0d0e299cb501f8252137573be9fe2  libstdc++-v3/testsuite/23_containers/vector/types/1.cc
! 06c4d334f0296980b371c841cf6bc555  libstdc++-v3/testsuite/23_containers/vector/types/23767.cc
! fd1c755c828254de106a44d52751fd80  libstdc++-v3/testsuite/23_containers/vector/types/pmr_typedefs_debug.cc
! 3c3763ff01a66773ec0b46a9a69221e2  libstdc++-v3/testsuite/23_containers/vector/zero_sized_allocations.cc
! 585dc7742d7aa5b8ed44368291227e5b  libstdc++-v3/testsuite/24_iterators/aliases.cc
! 4528100dfb5556c585eb3f5fcc77eeec  libstdc++-v3/testsuite/24_iterators/associated_types/incrementable.traits.cc
! 699cf0394d4d92df0835bd605158fa08  libstdc++-v3/testsuite/24_iterators/associated_types/iterator.traits.cc
! 111fca7042ba295b9b5c67bae787b80c  libstdc++-v3/testsuite/24_iterators/associated_types/readable.traits.cc
! 5a3b7c5b309a469082fd84b471403396  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/2.cc
! fe63188a40a01ea44ff6ed64d5e63f6f  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/constexpr.cc
! 63dce76846bb71ee9fd6d45809f0eb30  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/pr93884.cc
! d237046a81d6e5ce03179d11bb6f1691  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc
! adf4d560e5aaa898a39c8a8adbd8c03a  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/container.cc
! 1da3f58b748be68d4252bab57ce7fea2  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/explicit_instantiation.cc
! ac5672e7f14c29e4e9daa6e47f80992b  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/typedefs.cc
! 882c665ff5f8175c7c78a6ab0c38dbcf  libstdc++-v3/testsuite/24_iterators/bidirectional/concept.cc
! 7bcc36e24b1de7e367f9734b360cd260  libstdc++-v3/testsuite/24_iterators/bidirectional/tag.cc
! 3800d5ae8dd74f040738a1d3d352c3b9  libstdc++-v3/testsuite/24_iterators/common_iterator/1.cc
! 324435aecd194db25d558253509d1c24  libstdc++-v3/testsuite/24_iterators/common_iterator/2.cc
! 5129c792e6bfe1b6cbea670e3aa9b745  libstdc++-v3/testsuite/24_iterators/container_access.cc
! 14ab787ffbe7315c795d857e5257adca  libstdc++-v3/testsuite/24_iterators/contiguous/concept.cc
! b35b2041457d61d21057e40506c78199  libstdc++-v3/testsuite/24_iterators/contiguous/tag.cc
! 0c91c7597d95a7202c26ad07388f0a3b  libstdc++-v3/testsuite/24_iterators/counted_iterator/1.cc
! 4c2a298fc3822028958001c3f4cc31fc  libstdc++-v3/testsuite/24_iterators/counted_iterator/lwg3389.cc
! 472e2a0abff9fd043b940fd8bac67ad5  libstdc++-v3/testsuite/24_iterators/customization_points/92894.cc
! daee88c97f6e5f9ae44a9ad0e536a239  libstdc++-v3/testsuite/24_iterators/customization_points/iter_move.cc
! e75d7b0b6942fa4073bf6110ebb5ee44  libstdc++-v3/testsuite/24_iterators/customization_points/iter_swap.cc
! 94034bfac86f3955e242b478ce62257b  libstdc++-v3/testsuite/24_iterators/customization_points/lwg3420.cc
! 9cd763eadfec79189f914d3cd9c6cc04  libstdc++-v3/testsuite/24_iterators/forward/concept.cc
! 1313bfb2b13faf5476a9610a1f60bddc  libstdc++-v3/testsuite/24_iterators/forward/tag.cc
! 931cf34e41fe2e4c1115bd8694a7043d  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/2.cc
! 06195c77bd467314aca739ad10c1c666  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/constexpr.cc
! 9b35bcd74a814bbefc9dd53bba5e8814  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/pr93884.cc
! 02c6b164f5479be89f7dd77262a89341  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc
! 89b2f347e83d0cd8825103b7c6697c7e  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/container.cc
! 79029673e63bf95543c88556061356bf  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/explicit_instantiation.cc
! 2bdd3976f470ee4817f8483e2defd017  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/typedefs.cc
! 27313c90eac8d15bb15b3ec7c3b64f37  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++11.cc
! f49e0436d0258bfcfba6da57a3581937  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++14.cc
! 325bc4b25d186f095c897a8553be1d89  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++17.cc
! ae9dc623ab27d928c35bc44cfd64602b  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis.cc
! 4cc382285cc520898f0999351963c263  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++11.cc
! bdcee24ed1b69a88669379e581d404b5  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++14.cc
! f664863570f3a05dcc52e28621e0d62f  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++17.cc
! c3424d4d1df83c98611e39929ea6d646  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++20.cc
! 1aaf2012d70201bcb85defa8cfeacd6c  libstdc++-v3/testsuite/24_iterators/headers/iterator/types_std.cc
! 13510f3e6f3ce4478f0f886adce2e9b9  libstdc++-v3/testsuite/24_iterators/indirect_callable/92894.cc
! 9a41e4d5473b6de776139240d174da7c  libstdc++-v3/testsuite/24_iterators/indirect_callable/projected.cc
! c7492d0214d190d3d5d0143ffde9347a  libstdc++-v3/testsuite/24_iterators/input/concept.cc
! 5fdd0aa932e6d00da9b1c7f7faf3f89f  libstdc++-v3/testsuite/24_iterators/input/tag.cc
! 2878c0ae03d351209b7918943d5856cc  libstdc++-v3/testsuite/24_iterators/insert_iterator/2.cc
! afc03fab775176f4aa7ec118ce006b5d  libstdc++-v3/testsuite/24_iterators/insert_iterator/constexpr.cc
! ed86afe553677a529cc116b124aad91a  libstdc++-v3/testsuite/24_iterators/insert_iterator/dr561.cc
! 2c43175ce07c005207426dec88f58f78  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/base_classes.cc
! b9095749a7b653a7b6b3f86b96f0e86c  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/container.cc
! 50431023bc28cd6ba7ca89a039560928  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/explicit_instantiation.cc
! e6fee855c5eeb934fe432412f3b47bbb  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/typedefs.cc
! 8362d298015c34268d386883253acaa0  libstdc++-v3/testsuite/24_iterators/istream_iterator/1.cc
! 6951cc6f146a92120de43ba0473105de  libstdc++-v3/testsuite/24_iterators/istream_iterator/2.cc
! 8b6405dcea0b4f1f06dd4b2ab8c4f0ae  libstdc++-v3/testsuite/24_iterators/istream_iterator/70766.cc
! 0e8284a4f57c6ab59b028504b2fb2eaf  libstdc++-v3/testsuite/24_iterators/istream_iterator/cons/constexpr.cc
! 4c3527b6211cf1ccaac8550aa3b50d4a  libstdc++-v3/testsuite/24_iterators/istream_iterator/cons/sentinel.cc
! 8b9efacaa2d1ce761af949399b97842e  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/base_classes.cc
! cee2cd0644bab9c2ab954f4a4fcafb1f  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/explicit_instantiation.cc
! 7a029f8c21cac25df45d0859d3d0f12b  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/typedefs.cc
! 2698a3e5247afdff3daaaae69acfbac8  libstdc++-v3/testsuite/24_iterators/istream_iterator/sentinel.cc
! cd44b8ddc54b538506a776b252967d07  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2.cc
! f0f8ec3831977dc9fcef278b832fdfef  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2627.cc
! e1380838e6ae61f22189a8f6cf1b5edf  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/92285.cc
! 6759739cca5bcf81ae1b51660b16933a  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/cons/constexpr.cc
! 589f2477cac4b55fdcc98000444c8a9b  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc
! 56d8113e7232c1dabd4611a2b760ecec  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/debug/1_neg.cc
! df565a8f3121d8ec0a97038d93353d98  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/debug/2_neg.cc
! 4164debb73a71e7f9938f3cb0b79d8fa  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc
! bbe746ee1a6c65dadf5c7de8a5a2e588  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc
! 56818db5bb78504e5e734718cdd2b68a  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/explicit_instantiation.cc
! 7ab5ec1847ae5449ba4736c1d25cdb9d  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/typedefs.cc
! c9ba0b2b08a336006b316037977ed7bd  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/sentinel.cc
! 7658e5b1e0df302dc38a6c836c6ebf6a  libstdc++-v3/testsuite/24_iterators/move_iterator/cust.cc
! dc6720e27bb853c5e63d162fdb5b3fe0  libstdc++-v3/testsuite/24_iterators/move_iterator/debug_neg.cc
! 69137b51879de99e40c69fa0af1ede82  libstdc++-v3/testsuite/24_iterators/move_iterator/dr2061.cc
! f0cdc00b3bc9c68919fb0b7ebe7c11ef  libstdc++-v3/testsuite/24_iterators/move_iterator/dr2106.cc
! 9e503f00071d08ed089f0ca08f3e7908  libstdc++-v3/testsuite/24_iterators/move_iterator/dr3265.cc
! 42ee241f19f1531375af69938ac18bc9  libstdc++-v3/testsuite/24_iterators/move_iterator/greedy_ops.cc
! 6615610a231fe3f256bc31ac0fc9fbcb  libstdc++-v3/testsuite/24_iterators/move_iterator/input_iterator.cc
! dacb7f3a3e08dcffc71bcc6b21be151e  libstdc++-v3/testsuite/24_iterators/move_iterator/lwg3390.cc
! dac75da0e4feb879b523a12d8083087a  libstdc++-v3/testsuite/24_iterators/move_iterator/move_only.cc
! 8566347691f9037b6a9b4632511b1348  libstdc++-v3/testsuite/24_iterators/move_iterator/rel_ops_c++20.cc
! 39903a61dbaef11c6527f78131dcc707  libstdc++-v3/testsuite/24_iterators/move_iterator/sentinel.cc
! 239dbacda6832aa47081b383921bd1a4  libstdc++-v3/testsuite/24_iterators/normal_iterator/58403.cc
! d63a36d41f83bc5f59484199121f3bc7  libstdc++-v3/testsuite/24_iterators/normal_iterator/cmp_c++20.cc
! fefc73e154c0a809bd8bc103c7bc3d22  libstdc++-v3/testsuite/24_iterators/normal_iterator/debug_neg.cc
! 750c1d19a562e899eb3091c44ccf4890  libstdc++-v3/testsuite/24_iterators/normal_iterator/greedy_ops.cc
! 7b4f0c77908261177f0a36da30b843c6  libstdc++-v3/testsuite/24_iterators/operations/26020.cc
! 69c0dea12122cb20b7dc5c85003d675b  libstdc++-v3/testsuite/24_iterators/operations/40497.cc
  631af97d6c75b598ecf8901dc62067b2  libstdc++-v3/testsuite/24_iterators/operations/lwg2353.cc
! bf16d08e88a47d4d99da7e65886b697c  libstdc++-v3/testsuite/24_iterators/operations/next.cc
! 2e8a698ee3863f13ac507f7ce367583c  libstdc++-v3/testsuite/24_iterators/operations/prev.cc
! 9bf9da517faabd7337eb20a5cafeb724  libstdc++-v3/testsuite/24_iterators/operations/prev_neg.cc
! 51d84082398a76d3b954ee476d1e3635  libstdc++-v3/testsuite/24_iterators/ostream_iterator/1.cc
! 2d51106f322364d8e555be29db83799c  libstdc++-v3/testsuite/24_iterators/ostream_iterator/70766.cc
! 3528a41b07d51438a61425897cabd24f  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc
! 38e43d3b255f4a7bd5441bdc6af0035c  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/constexpr.cc
! f2ed6a87db86170ebd11b8830247e64d  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/explicit_instantiation.cc
! f8fd0d58b73faa1c94f9e7c47de1ce80  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/typedefs.cc
! 67aa54fa55a2385750f268932d69b8ca  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/2.cc
! e8bb16171e4815939b7e6357490934f4  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc
! a8d2165ac1a8f606ce28fa8c6347ea86  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/explicit_instantiation.cc
! d2993047656da39a701d4360ea8c51f2  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/typedefs.cc
! 1ceadf75c1d6bc3b482c13719b4fefa5  libstdc++-v3/testsuite/24_iterators/output/concept.cc
! 59a060321d5f49013a134b14ba8e9256  libstdc++-v3/testsuite/24_iterators/output/tag.cc
! dc78a91508008d55273ae583684039cb  libstdc++-v3/testsuite/24_iterators/random_access/concept.cc
! ffc2a5e4d2a541501c379b86999c464a  libstdc++-v3/testsuite/24_iterators/random_access/string_vector_iterators.cc
! f63ac0bd88224689979625e5ea4d6ba9  libstdc++-v3/testsuite/24_iterators/random_access/tag.cc
! 2a97efd6ffd93026ae12f55a9bdaae6f  libstdc++-v3/testsuite/24_iterators/range_access/range_access.cc
! 00a0255ca7e47cb4a3b6ac2652012d2e  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp14.cc
! abf9e229b4c2bd54b92c5d96cf8e7efd  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp17.cc
! 2dd66fadc4415dfb7505331710b5e6be  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp17_neg.cc
! 72118a17987b99523ec83d39b2644b0c  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp20.cc
! b68ee8f4d04b2cc181f70866343443ae  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp20_neg.cc
! 587aac0fb1f751c06a75e69b4da7328f  libstdc++-v3/testsuite/24_iterators/range_operations/advance.cc
! 2a73c779dbf3ede57966512845075e62  libstdc++-v3/testsuite/24_iterators/range_operations/advance_debug_neg.cc
! 5b4a17d39a0e4628f13856152c81236d  libstdc++-v3/testsuite/24_iterators/range_operations/distance.cc
! 651c176eda81081cc313517b577cec1b  libstdc++-v3/testsuite/24_iterators/range_operations/next.cc
! 825493a5d381f534b1f3b192a881aa95  libstdc++-v3/testsuite/24_iterators/range_operations/prev.cc
! e6a8fd95d27b75260ac14bbdb96599fb  libstdc++-v3/testsuite/24_iterators/reverse_iterator/11729.cc
! a817d05c1c9addc215b896db5d499d12  libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc
! 7bba901ec7d2a287308c1c97e829e545  libstdc++-v3/testsuite/24_iterators/reverse_iterator/3.cc
! 5216dba2655cfb027982ccd3cb860cfe  libstdc++-v3/testsuite/24_iterators/reverse_iterator/71771.cc
! 06d4282ea0f497d2c3308236e55c83b8  libstdc++-v3/testsuite/24_iterators/reverse_iterator/cust.cc
! 1626d5666fdfc9c0e17c8da48ad87dcb  libstdc++-v3/testsuite/24_iterators/reverse_iterator/debug_neg.cc
! f2cdd21ab5c93d6689119ee1599c59ab  libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr1052.cc
! f071d97e5462ac5ff1a46b3c5d8c668e  libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr2188.cc
! f7ff5148084bec3bb45505e5fa9a839f  libstdc++-v3/testsuite/24_iterators/reverse_iterator/greedy_ops.cc
! 693ddbdec1c467b8085f742cdf86a48c  libstdc++-v3/testsuite/24_iterators/reverse_iterator/make.cc
! d15476df26cc7cf82dc831738d8022b7  libstdc++-v3/testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc
! 282ecde9d08fe527d21eaa402b8f49dc  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc
! f4f2c5ea456af328806bb478e7232f3a  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/current.cc
! 93f3ce89be876a4b2c3edd4125464f15  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/explicit_instantiation.cc
! afd27dd2cf6fc805e6e1fbd7750caaaf  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/typedefs.cc
! 80f8a4156f4923d895e9537fb47c381e  libstdc++-v3/testsuite/25_algorithms/adjacent_find/1.cc
! 863779e450a5f1af4bd39db794807bff  libstdc++-v3/testsuite/25_algorithms/adjacent_find/check_type.cc
! e399d620e012e97583077863261cc7fe  libstdc++-v3/testsuite/25_algorithms/adjacent_find/constexpr.cc
! 7da5d2425da0c3829d4563d4bf26620d  libstdc++-v3/testsuite/25_algorithms/adjacent_find/constrained.cc
! 4b39bd212b50ffd175af4dee52988d6f  libstdc++-v3/testsuite/25_algorithms/adjacent_find/requirements/explicit_instantiation/2.cc
! 4686d453323a940fdee92a8302c1475f  libstdc++-v3/testsuite/25_algorithms/adjacent_find/requirements/explicit_instantiation/pod.cc
! 4f473ba20de4884beeb287c87cf02535  libstdc++-v3/testsuite/25_algorithms/adjacent_find/vectorbool.cc
! aa001d18541b3c4751fce6463335dbf2  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/1.cc
! a0f8c58341b30db808b75683679bce12  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/1_neg.cc
! b5edc1ccef64ce2297edb365bbe19503  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/2.cc
! f2f82f96ece60b2ab65091c942c18e4f  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/2_neg.cc
! 83bdd7eca25c49af784c6885af280a7d  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/3_neg.cc
! 6d46d3390c468596dc141b8f904d04cd  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/1.cc
! 69babf267f827ee6060ef7c5cabd977d  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/1_neg.cc
! 6e0af1301063b0bc970aaf2ba0464b83  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/2.cc
! b4f4ee393ec29bbfa3b812bf4c039fbe  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/2_neg.cc
! 79e2a40d44b13cf554773f23bf0f3aa0  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/3_neg.cc
! 2ab01fcd60c1f6dfd28677752b36e961  libstdc++-v3/testsuite/25_algorithms/all_of/1.cc
! cbf5765d8edd08d3cf6bd6eaa339f448  libstdc++-v3/testsuite/25_algorithms/all_of/check_type.cc
! 2363537b5ac6ea893b6047ffda6be68d  libstdc++-v3/testsuite/25_algorithms/all_of/constexpr.cc
! ff651aa1cd8f117beccc675f86007d66  libstdc++-v3/testsuite/25_algorithms/all_of/constrained.cc
! a00b1bb749bb513d47f22c5c136e59f3  libstdc++-v3/testsuite/25_algorithms/all_of/requirements/explicit_instantiation/2.cc
! 13741b4467cadc091d0c358399a24575  libstdc++-v3/testsuite/25_algorithms/all_of/requirements/explicit_instantiation/pod.cc
! f41a9cc987506d9d43a4724a15482953  libstdc++-v3/testsuite/25_algorithms/any_of/1.cc
! 3077cd007a3fc341f0d7d5a561889cd5  libstdc++-v3/testsuite/25_algorithms/any_of/check_type.cc
! 588fca8fb958ba5b7f41017b07061916  libstdc++-v3/testsuite/25_algorithms/any_of/constexpr.cc
! 27db522eb9f4ffc33e8b3497adb35abe  libstdc++-v3/testsuite/25_algorithms/any_of/constrained.cc
! 4225ac24306da4c585587ff1ea9f9421  libstdc++-v3/testsuite/25_algorithms/any_of/requirements/explicit_instantiation/2.cc
! 35d0b993875ad3fb80fe22b20bf559df  libstdc++-v3/testsuite/25_algorithms/any_of/requirements/explicit_instantiation/pod.cc
! 8ea5566fc1e08d9ca94e95b4191b4b76  libstdc++-v3/testsuite/25_algorithms/binary_search/1.cc
! bb3bbf2f19cb232efef58075feb6d277  libstdc++-v3/testsuite/25_algorithms/binary_search/2.cc
! bb8c9dd5f36254e3490e58ae9ed3ce50  libstdc++-v3/testsuite/25_algorithms/binary_search/check_type.cc
! dd2e41474f7e5be0313ec279cb921455  libstdc++-v3/testsuite/25_algorithms/binary_search/constexpr.cc
! c7752ebcbd16d3f2aba1b0bd82e4bfab  libstdc++-v3/testsuite/25_algorithms/binary_search/constrained.cc
! e78680fa969ed691e7d84a7496583bd1  libstdc++-v3/testsuite/25_algorithms/binary_search/partitioned.cc
! 9c4707894dd22fd5c733a606e3f44396  libstdc++-v3/testsuite/25_algorithms/binary_search/requirements/explicit_instantiation/2.cc
! 55dcd7bbec0cc028805a43d6f2bcde6a  libstdc++-v3/testsuite/25_algorithms/binary_search/requirements/explicit_instantiation/pod.cc
! b5b0be3c389dbb1e07e0628d33d9ac2a  libstdc++-v3/testsuite/25_algorithms/clamp/1.cc
! f3ae416091210b0fdee8e027c1a8d0d2  libstdc++-v3/testsuite/25_algorithms/clamp/2.cc
! b59d82b81ad1129844766eeeebeab9aa  libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc
! cb21657f5c115a23d5a5ec5d9985c0dd  libstdc++-v3/testsuite/25_algorithms/clamp/constrained.cc
! c41b1fd6ecd00ce8d12e90999714439e  libstdc++-v3/testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc
! fbca89c730a10b439aaf4dc3f5b8a4d1  libstdc++-v3/testsuite/25_algorithms/clamp/requirements/explicit_instantiation/pod.cc
! a44716b85a90e01a39fc1bbc773cf06f  libstdc++-v3/testsuite/25_algorithms/constexpr_macro.cc
! 4ed1010ac7ddb038a956e5a54e855f37  libstdc++-v3/testsuite/25_algorithms/copy/1.cc
! 7b778921ec33b295b7f94a60defc5342  libstdc++-v3/testsuite/25_algorithms/copy/2.cc
! 5861e87276d93e061d9a0de46a2228ed  libstdc++-v3/testsuite/25_algorithms/copy/3.cc
! 33ebafce21411d4ab1b59a23f1478ca8  libstdc++-v3/testsuite/25_algorithms/copy/34595.cc
! 674166b8b93269f4c5b745f66831bf2e  libstdc++-v3/testsuite/25_algorithms/copy/4.cc
! d6d3b4a968a888c5eaef0a2ebf180160  libstdc++-v3/testsuite/25_algorithms/copy/58982.cc
! 19f14cbe8793bc1b06e29affef224fb4  libstdc++-v3/testsuite/25_algorithms/copy/86658.cc
! 969fef3ea38904c70083de0ba1205baa  libstdc++-v3/testsuite/25_algorithms/copy/94013.cc
! 06fb768df97f46dcf0b6a1296f415fc0  libstdc++-v3/testsuite/25_algorithms/copy/95578.cc
! 03fe5425ab29f7853c4da61d2eacfc61  libstdc++-v3/testsuite/25_algorithms/copy/constexpr.cc
! cb898d5f8528ab636442ba26db01dea8  libstdc++-v3/testsuite/25_algorithms/copy/constrained.cc
! d0daafbd838daa77f51d8eff2c078367  libstdc++-v3/testsuite/25_algorithms/copy/debug/1_neg.cc
! a3764d3162963291cc6c00b35b769200  libstdc++-v3/testsuite/25_algorithms/copy/debug/2_neg.cc
! 3213c56295e266c5978ab9762ee90871  libstdc++-v3/testsuite/25_algorithms/copy/debug/95289.cc
  a4e3b919e921272cb082f7fa810f39d2  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/1.cc
! 1bbbed4ee905380ac2d5d0b4e2f0fbdd  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/2.cc
! f1bfc8cd3ff9b4b16dfb6191c99cfd4e  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/31.cc
! 8acc1d42472f860b7d81334d72919c57  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/32.cc
! aba28123a9f1873c272a95e3ea58d40b  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/33.cc
! 8f28ac1cc574ea19f13608d9cde3acc0  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/41.cc
! a6899d4224fa43612cbe7a04190e9fd5  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/42.cc
! b3e2a2468583222e60679f07643f6feb  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/43.cc
! c46d02633ae17c59cf5cdcb1b3b919ad  libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/1.cc
! 5b6ba040c850f438f361eeed377964d8  libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/69478.cc
! ec5878bdbb34db464fc8de3af9304bc6  libstdc++-v3/testsuite/25_algorithms/copy/requirements/explicit_instantiation/2.cc
! 7957af22f65f8f15c75bad199eed2fde  libstdc++-v3/testsuite/25_algorithms/copy/requirements/explicit_instantiation/pod.cc
! 46bb5151dfb3c96524cd1fbadd5ed330  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc
! 76815c87dced37470dda1f72067f6356  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc
! e9cad388e8466353ba7a2f5667e21519  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc
! 1e3ae09d176d01ba90a1c1dca22d7e68  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc
! 4b34c558c316167e1bf17e3d72cff677  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc
! 167c26144be271bcae421f9b886b8da9  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc
! e48ad7581f61efffaaccc4fd3a1c00e2  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc
! b49dd405a3fa4e89768e500ff3914405  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc
! ebb5ec19ebd8cd0a86e8a4d72c0f9194  libstdc++-v3/testsuite/25_algorithms/copy_backward/94013.cc
! a149428d1678b75864338e83e5f6e30c  libstdc++-v3/testsuite/25_algorithms/copy_backward/95578.cc
! e28df2e4c4aacb2c97616c7caeb0d219  libstdc++-v3/testsuite/25_algorithms/copy_backward/constexpr.cc
! 088f68c771ec2361f8480b072a620b5a  libstdc++-v3/testsuite/25_algorithms/copy_backward/constrained.cc
! 89009e92df8e496b839d497a3b26245a  libstdc++-v3/testsuite/25_algorithms/copy_backward/debug/1_neg.cc
! 9e165a27e714de1ea4945451a4e3fb02  libstdc++-v3/testsuite/25_algorithms/copy_backward/debug/2_neg.cc
! 4519aa5e916fe6e133921f75ad8fd719  libstdc++-v3/testsuite/25_algorithms/copy_backward/debug/3_neg.cc
  da1fb78d5a3cd469ddf537052865be96  libstdc++-v3/testsuite/25_algorithms/copy_backward/deque_iterators/1.cc
! b249dfabb210677e2060237743fb4659  libstdc++-v3/testsuite/25_algorithms/copy_backward/deque_iterators/2.cc
! 47ac9f53b3dbb1ec1323204e52dcd8c5  libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/1.cc
! b8d15fc50f7600c23fb54b94c424bf96  libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/69478.cc
! 8f4e083a84c0099a12331ab69739a803  libstdc++-v3/testsuite/25_algorithms/copy_backward/requirements/explicit_instantiation/2.cc
! 2eaf0fb27f9c540ac8c5669bd8682c58  libstdc++-v3/testsuite/25_algorithms/copy_backward/requirements/explicit_instantiation/pod.cc
! b8ada86cb691f57748ea6571f05d393c  libstdc++-v3/testsuite/25_algorithms/copy_if/check_type.cc
! 3e240f4e993c7a022197e186844e4043  libstdc++-v3/testsuite/25_algorithms/copy_if/constexpr.cc
! 9d75914ee656a365fa0a0c378dc049d5  libstdc++-v3/testsuite/25_algorithms/copy_if/constrained.cc
! a63751d8d0ee93f20f56cffab0a56eb6  libstdc++-v3/testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/2.cc
! 0b721ef2c09d877547edc1a67534fdc8  libstdc++-v3/testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/pod.cc
! acb8c08c7d8754dfad967b68e5bcd4d2  libstdc++-v3/testsuite/25_algorithms/copy_n/1.cc
! 5085154e17c1e406f268a2b9eba4b68e  libstdc++-v3/testsuite/25_algorithms/copy_n/2.cc
! 2f928a0af884d84d22c28841825f5e76  libstdc++-v3/testsuite/25_algorithms/copy_n/3.cc
! cdfd75739be0015e09b52cd47e813da7  libstdc++-v3/testsuite/25_algorithms/copy_n/4.cc
! c14a0866f7611d4a8fd024e5b638f749  libstdc++-v3/testsuite/25_algorithms/copy_n/5.cc
! 9b4e641280eab37b9d73dfe72cc9e6c6  libstdc++-v3/testsuite/25_algorithms/copy_n/50119.cc
! 3a7c34abc5ae114e0056f0e773eec2a3  libstdc++-v3/testsuite/25_algorithms/copy_n/58982.cc
! 8a4492299424d566688046a6c64f7f17  libstdc++-v3/testsuite/25_algorithms/copy_n/constexpr.cc
! f48a21321252a642933c0a2a55f15455  libstdc++-v3/testsuite/25_algorithms/copy_n/constrained.cc
! 5ce9f9d87d2207992131d7d2ff06d409  libstdc++-v3/testsuite/25_algorithms/copy_n/debug/1_neg.cc
! 63a4e56af5bff30029b0abeeed233e79  libstdc++-v3/testsuite/25_algorithms/copy_n/debug/2_neg.cc
! 9c0e3cf26b6d8b6fe622c75152da3642  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/1.cc
! 7a03725f6c887faa65cb8521f582a3ad  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/1_neg.cc
! 85a4bb718a06c3b53ab892c0a267094c  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/2_neg.cc
! caf39d67427769024ce68660527d23a8  libstdc++-v3/testsuite/25_algorithms/copy_n/move_iterators/1.cc
! 8e0c75dfa93b8708f95be5eca3ea93cf  libstdc++-v3/testsuite/25_algorithms/copy_n/requirements/explicit_instantiation/2.cc
! 0fcbe869b47de95ca25774456b82c1c0  libstdc++-v3/testsuite/25_algorithms/copy_n/requirements/explicit_instantiation/pod.cc
! 2d87127dc8c4aa8ba2fc6faabae3de0e  libstdc++-v3/testsuite/25_algorithms/count/1.cc
! 554bf37653a8f65f6f86f7c4c17ca655  libstdc++-v3/testsuite/25_algorithms/count/check_type.cc
! 10eb55d468dd9c5505c12e9b7c427c6c  libstdc++-v3/testsuite/25_algorithms/count/constexpr.cc
! b5f19cb3f5aa0d0c42e4a1d4b643d0b4  libstdc++-v3/testsuite/25_algorithms/count/constrained.cc
! c7096a4f1c347e0101b4fe552e00663f  libstdc++-v3/testsuite/25_algorithms/count/requirements/explicit_instantiation/2.cc
! 4e09b00a69f009b1fe742256c29f2407  libstdc++-v3/testsuite/25_algorithms/count/requirements/explicit_instantiation/pod.cc
! 113b7f6cf1d40009fe95210117c95efb  libstdc++-v3/testsuite/25_algorithms/count_if/1.cc
! e96836e480bf7c99499350a0dfc6f781  libstdc++-v3/testsuite/25_algorithms/count_if/check_type.cc
! 1f86911d4b8b853d53024066051561e4  libstdc++-v3/testsuite/25_algorithms/count_if/constexpr.cc
! 2d6009fb15e42234c17a7711ab2064e9  libstdc++-v3/testsuite/25_algorithms/count_if/constrained.cc
! e995063765b605068f47f053bceb47d1  libstdc++-v3/testsuite/25_algorithms/count_if/requirements/explicit_instantiation/2.cc
! 5aa37993247186fc684b0cc968bb11f2  libstdc++-v3/testsuite/25_algorithms/count_if/requirements/explicit_instantiation/pod.cc
! e23190aa8674595e9df79de2e0e50f80  libstdc++-v3/testsuite/25_algorithms/cpp_lib_constexpr.cc
! 3220492f992693aaa0b172f061f49992  libstdc++-v3/testsuite/25_algorithms/equal/1.cc
! 38ade269b1a05750500b12b9c40208a8  libstdc++-v3/testsuite/25_algorithms/equal/2.cc
! bab32815bddb295904265ea9433f74ba  libstdc++-v3/testsuite/25_algorithms/equal/94013.cc
! 9caa745bfc73fc0b6da4c3883d9a0299  libstdc++-v3/testsuite/25_algorithms/equal/95578.cc
! b6b002df7c4fda51ae2578dcf2beae6d  libstdc++-v3/testsuite/25_algorithms/equal/check_type.cc
! 2044b401769629f04a86d9037d7b182d  libstdc++-v3/testsuite/25_algorithms/equal/check_type2.cc
! 74e2f19ebf2090ef829decc006ecf4a9  libstdc++-v3/testsuite/25_algorithms/equal/constexpr.cc
! b63ab575b1b0eef82747fdc8cec343d9  libstdc++-v3/testsuite/25_algorithms/equal/constrained.cc
! 1e03344df3e689c5fb0fdfea4cc4c849  libstdc++-v3/testsuite/25_algorithms/equal/debug/1_neg.cc
! 246224b4aa4766112f4fced99bf31ed8  libstdc++-v3/testsuite/25_algorithms/equal/debug/2_neg.cc
! 124600b81a76fd5f14a05af8254f6973  libstdc++-v3/testsuite/25_algorithms/equal/debug/3_neg.cc
! 166249d8246078e265024ae963b20cf2  libstdc++-v3/testsuite/25_algorithms/equal/deque_iterators/1.cc
! 5539ca0db2040140e02065e6603e4584  libstdc++-v3/testsuite/25_algorithms/equal/no_operator_ne.cc
! c8515a5268ca416eeafc6cd215804ed6  libstdc++-v3/testsuite/25_algorithms/equal/requirements/explicit_instantiation/2.cc
! 52b6b13a51946e9b0a0e2062a8baf20e  libstdc++-v3/testsuite/25_algorithms/equal/requirements/explicit_instantiation/pod.cc
! aa0ddac9d96ba2a4a3de7b24b66f638a  libstdc++-v3/testsuite/25_algorithms/equal_range/1.cc
! 96886195cc85a0b5ddcc15f8a62c0d4a  libstdc++-v3/testsuite/25_algorithms/equal_range/2.cc
! c909d2d165a24fc7214b30d234204d3a  libstdc++-v3/testsuite/25_algorithms/equal_range/check_type.cc
! 4c66287f5ca3a56bf00da955fc1fe008  libstdc++-v3/testsuite/25_algorithms/equal_range/constexpr.cc
! bbd88218ac9c74782b0c64ac042d1b6b  libstdc++-v3/testsuite/25_algorithms/equal_range/constrained.cc
! fd9748810991035eb3243d4e1aa4ac55  libstdc++-v3/testsuite/25_algorithms/equal_range/partitioned.cc
! 5d89d9e26aff6462fd7f6058d264a391  libstdc++-v3/testsuite/25_algorithms/equal_range/requirements/explicit_instantiation/2.cc
! 604ca539af3cd8030a214b310c662f25  libstdc++-v3/testsuite/25_algorithms/equal_range/requirements/explicit_instantiation/pod.cc
! 75b28980c87dae86e81e43b27e9af26a  libstdc++-v3/testsuite/25_algorithms/fill/1.cc
! 2ac9d48366767597c8d258b7e60615a4  libstdc++-v3/testsuite/25_algorithms/fill/2.cc
! 9690f4ef65675721c7b05f603aed7c8b  libstdc++-v3/testsuite/25_algorithms/fill/3.cc
! b4c068389e68edd250a18a991692ace5  libstdc++-v3/testsuite/25_algorithms/fill/35725.cc
! f23c83e8f314be842873cda6c10898ce  libstdc++-v3/testsuite/25_algorithms/fill/4.cc
! 7665e2edb94a6c15abce4005393590c9  libstdc++-v3/testsuite/25_algorithms/fill/94013.cc
! 4cc6f213e543390c3c6477da57895712  libstdc++-v3/testsuite/25_algorithms/fill/94017.cc
! 2494f45468d32dd071459394e8474a1a  libstdc++-v3/testsuite/25_algorithms/fill/constexpr.cc
! 9514165ba6e8e0855bba4ab70bde470a  libstdc++-v3/testsuite/25_algorithms/fill/constrained.cc
! d6f893cf8d2022ad6f67d6c8d14bc3c2  libstdc++-v3/testsuite/25_algorithms/fill/deque_iterators/1.cc
! bf9dbfbc1c6600f7576e7ffc94bde7ce  libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/2.cc
! 8094a2fbda002bfa63febd594268b2cc  libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/pod.cc
! 2f2bd014dc85111eee2b7f8d218a8283  libstdc++-v3/testsuite/25_algorithms/fill_n/1.cc
! 7e119cf301cff0d87e5efc2e981042b7  libstdc++-v3/testsuite/25_algorithms/fill_n/2.cc
! 2d02bef6280d58e2baa41d6329768088  libstdc++-v3/testsuite/25_algorithms/fill_n/25306.cc
! 1088bfe41a18859ca849f7176f0e1885  libstdc++-v3/testsuite/25_algorithms/fill_n/35725.cc
! ebd01e224082a3b97bd59c68afb737d3  libstdc++-v3/testsuite/25_algorithms/fill_n/87982.cc
! efaa3b24526444ad5911ee49e2b3dcbe  libstdc++-v3/testsuite/25_algorithms/fill_n/87982_neg.cc
! 56ec4f07e489762061aee5150901a599  libstdc++-v3/testsuite/25_algorithms/fill_n/94017.cc
! c44dccf2f7fefb919b56cd8d2e9c8f05  libstdc++-v3/testsuite/25_algorithms/fill_n/constexpr.cc
! 769e0a431031732214494f3d91532aa7  libstdc++-v3/testsuite/25_algorithms/fill_n/constrained.cc
! 5cafcf0f9ce4e279105e1df93aa06ba5  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/1_neg.cc
! a735fcf2342954a1234ea35f0cbe0d6e  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/2_neg.cc
! cbcd0e1094510e503e62a2db35d881bf  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/3_neg.cc
! c5e8417d355e9147097353c9855b443b  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/4_neg.cc
! c42bf781ac763748dbcfc97beecaef5e  libstdc++-v3/testsuite/25_algorithms/fill_n/dr426.cc
! c8515a5268ca416eeafc6cd215804ed6  libstdc++-v3/testsuite/25_algorithms/fill_n/requirements/explicit_instantiation/2.cc
! 52b6b13a51946e9b0a0e2062a8baf20e  libstdc++-v3/testsuite/25_algorithms/fill_n/requirements/explicit_instantiation/pod.cc
! d33f73aff2946ce71dbb38fdefa238bc  libstdc++-v3/testsuite/25_algorithms/find/1.cc
! 47cfdc8c5c2d9be8a7521454881a1d9d  libstdc++-v3/testsuite/25_algorithms/find/17441.cc
! 6fafdb4f85ccba21e66d1b3d71e466c9  libstdc++-v3/testsuite/25_algorithms/find/39546.cc
! da1b31e28b750967d7db8c75147664e9  libstdc++-v3/testsuite/25_algorithms/find/check_type.cc
! 589cceb0ae85e8793facf346db9a1f33  libstdc++-v3/testsuite/25_algorithms/find/constexpr.cc
! dd30137eac1e862ec7f22076fd53a97f  libstdc++-v3/testsuite/25_algorithms/find/constrained.cc
! ad547fb1c10dec6d728c0b57e904e6ba  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc
! 35821902bea0aff9a1457faab3037b8d  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc
! d40c7efe09289108f3608f73b73fb175  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc
! b264eb64e38a3c61562d7860b82d4009  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc
! b1834bcd5d627fc70f14731e3aeab953  libstdc++-v3/testsuite/25_algorithms/find/requirements/explicit_instantiation/2.cc
! 73f97873870cabb011cb14babee6a74f  libstdc++-v3/testsuite/25_algorithms/find/requirements/explicit_instantiation/pod.cc
! d74b04933257489f1a917d55b83ecd05  libstdc++-v3/testsuite/25_algorithms/find/vectorbool.cc
! 9ca2a6608a6649f9faa5a4ac297608d1  libstdc++-v3/testsuite/25_algorithms/find_end/1.cc
! 02149a7e80a1924d8a263c527d01565f  libstdc++-v3/testsuite/25_algorithms/find_end/check_type.cc
! 1f18d3dc946f4b46a571b4daacf69d52  libstdc++-v3/testsuite/25_algorithms/find_end/constexpr.cc
! de5973b975183e45824251fe2340cea2  libstdc++-v3/testsuite/25_algorithms/find_end/constrained.cc
! 18f21a6b29b355a97167180fd3da1110  libstdc++-v3/testsuite/25_algorithms/find_end/requirements/explicit_instantiation/2.cc
! 25c529af8e710665e78bb8abc10259f3  libstdc++-v3/testsuite/25_algorithms/find_end/requirements/explicit_instantiation/pod.cc
! 83f0d853c2821624582d1484c7e00de9  libstdc++-v3/testsuite/25_algorithms/find_end/vectorbool.cc
! fdfd217b91992f9682d255592fb8fbb1  libstdc++-v3/testsuite/25_algorithms/find_first_of/1.cc
! 59eb1b24e53c73c01f0656182b0f2746  libstdc++-v3/testsuite/25_algorithms/find_first_of/check_type.cc
! 6245a0c8eaf2a5dae3b30822764c5833  libstdc++-v3/testsuite/25_algorithms/find_first_of/concept_check_1.cc
! 67e6869b23f403a7dbdad55808c62b09  libstdc++-v3/testsuite/25_algorithms/find_first_of/constexpr.cc
! ce3a14c13832119f757cc77e418ad4a2  libstdc++-v3/testsuite/25_algorithms/find_first_of/constrained.cc
! f5e91818fbb0b1fa27e56e41bd6bd6dd  libstdc++-v3/testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/2.cc
! 0c40438acf1ad6527a547b290852d67a  libstdc++-v3/testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/pod.cc
! 9c19423faec4246d8ad84da2a5e1e5b9  libstdc++-v3/testsuite/25_algorithms/find_first_of/vectorbool.cc
! 19711e29018e933a1ef45063f71ba33c  libstdc++-v3/testsuite/25_algorithms/find_if/1.cc
! 9a2f9e00683515d39a21a4b5945458c6  libstdc++-v3/testsuite/25_algorithms/find_if/check_type.cc
! 64d24304a180f2754f6ea9dbe9a53816  libstdc++-v3/testsuite/25_algorithms/find_if/constexpr.cc
! 36fef522ab877335e112a0caf896f8c7  libstdc++-v3/testsuite/25_algorithms/find_if/constrained.cc
! eaa29b749e0b87abfc501e6b5c320964  libstdc++-v3/testsuite/25_algorithms/find_if/requirements/explicit_instantiation/2.cc
! 381272c1994020fc4a6af7a5165b0f21  libstdc++-v3/testsuite/25_algorithms/find_if/requirements/explicit_instantiation/pod.cc
! d74b04933257489f1a917d55b83ecd05  libstdc++-v3/testsuite/25_algorithms/find_if/vectorbool.cc
! f6a2d81b3cb53109057ab4f44ec263be  libstdc++-v3/testsuite/25_algorithms/find_if_not/1.cc
! 59444238c7f087486b24bb0fe3f450b8  libstdc++-v3/testsuite/25_algorithms/find_if_not/check_type.cc
! 1f11ac06425bcc78925ee4b22e744e18  libstdc++-v3/testsuite/25_algorithms/find_if_not/constexpr.cc
! ac9d789b2c4e3dfef6d226b951045402  libstdc++-v3/testsuite/25_algorithms/find_if_not/constrained.cc
! 1122ffeb64bba70aa6fb441a8a68e824  libstdc++-v3/testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/2.cc
! e7651be9a4e851813629f49648c2443e  libstdc++-v3/testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/pod.cc
! d155712ac41b100fe79e28f44943526e  libstdc++-v3/testsuite/25_algorithms/find_if_not/vectorbool.cc
! f4b964f1b9ee6477f99230ede674e1e6  libstdc++-v3/testsuite/25_algorithms/for_each/1.cc
! e8c58d6467ea3e44f96471193d232366  libstdc++-v3/testsuite/25_algorithms/for_each/constexpr.cc
! 060c97a0d731769cf0c9a3dc4a605ac0  libstdc++-v3/testsuite/25_algorithms/for_each/constrained.cc
! f61d24d1350b219965877f325c9dcb4c  libstdc++-v3/testsuite/25_algorithms/for_each/for_each_n.cc
! 24dd18b12a36f693fcf8085512b230a2  libstdc++-v3/testsuite/25_algorithms/for_each/for_each_n_debug.cc
! bdfdd88e573d75927ddf820fa8cab24c  libstdc++-v3/testsuite/25_algorithms/for_each/requirements/explicit_instantiation/2.cc
! b8290e3768ae76c5905bd20183e00613  libstdc++-v3/testsuite/25_algorithms/for_each/requirements/explicit_instantiation/pod.cc
! e72feb8e913955f57718a2f1c1cba440  libstdc++-v3/testsuite/25_algorithms/generate/constexpr.cc
! 8d1a1a5438d7645c320f50fc308f8f53  libstdc++-v3/testsuite/25_algorithms/generate/constrained.cc
! f53c6c46a8f27308b2f87afda2ccb744  libstdc++-v3/testsuite/25_algorithms/generate/requirements/explicit_instantiation/2.cc
! f4ea30da41b28d97f6bffd17504e0291  libstdc++-v3/testsuite/25_algorithms/generate/requirements/explicit_instantiation/pod.cc
! cc664ebd6b07172ccc6dfd7f7d0f5110  libstdc++-v3/testsuite/25_algorithms/generate_n/1.cc
! 3d05ff0cfa039ebd519a74278dce5968  libstdc++-v3/testsuite/25_algorithms/generate_n/25306.cc
! 255c022fb4cb767e641c28cd15851dd3  libstdc++-v3/testsuite/25_algorithms/generate_n/87982.cc
! 782f3a6d9e3b869bf75ab517c365a511  libstdc++-v3/testsuite/25_algorithms/generate_n/87982_neg.cc
! d94dbe3ef83a0563c4cf326cf3fa43b1  libstdc++-v3/testsuite/25_algorithms/generate_n/constexpr.cc
! 5dd1e36cca9bcf05667f98bc93c4c7bc  libstdc++-v3/testsuite/25_algorithms/generate_n/constrained.cc
! 3337084ae6adc626c063f1070eecc783  libstdc++-v3/testsuite/25_algorithms/generate_n/dr426.cc
! 3486eddc6d958e2d3724443c5324d455  libstdc++-v3/testsuite/25_algorithms/generate_n/requirements/explicit_instantiation/2.cc
! e42f23940ffcd488573de7547101b4d9  libstdc++-v3/testsuite/25_algorithms/generate_n/requirements/explicit_instantiation/pod.cc
! 3e719cd9356a169a5e9f7675fa8a3944  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/algorithm_parallel_mode.cc
! d10d7daa2f988c592408f4eab9fde0a6  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm.cc
! 1c6e2ef9bf167fe986816a8a0eeac582  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_assert.cc
! 3ee0c85c516a8ab931562f48959d76eb  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_assert2.cc
! 3a665e807a1b99bc067353cae8a96edb  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed1.cc
! 7a278a918e3fdc317f45b7b97b29a582  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed2.cc
! 901185a5193bf7e0be8a0b445e1f9306  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/synopsis.cc
! 2789241cac1ce5386e70c00988b84128  libstdc++-v3/testsuite/25_algorithms/headers/cstdlib/functions_std.cc
! e942ed59ee90e45d1f212202add3bf42  libstdc++-v3/testsuite/25_algorithms/heap/1.cc
! b7639174278342b3a62e44ea15293efb  libstdc++-v3/testsuite/25_algorithms/heap/constrained.cc
! f9946ea1d19f87d10af4d525b67b7a33  libstdc++-v3/testsuite/25_algorithms/heap/moveable.cc
! 9a92b44dc4b07b53e6a54c22e41eb2a9  libstdc++-v3/testsuite/25_algorithms/heap/moveable2.cc
! 68ff393543f8fde28ba67e19925dc1d3  libstdc++-v3/testsuite/25_algorithms/heap/vectorbool.cc
! 7aa7011f8ad46a5a80473d048f80a68e  libstdc++-v3/testsuite/25_algorithms/includes/1.cc
! 3a5511b6d2bf3b10ad0ec8e1a216c249  libstdc++-v3/testsuite/25_algorithms/includes/check_type.cc
! 91dc8b6246de353b561c80942d07a52c  libstdc++-v3/testsuite/25_algorithms/includes/constrained.cc
! d0fa3fdac585277784d653e8c9a66189  libstdc++-v3/testsuite/25_algorithms/includes/requirements/explicit_instantiation/2.cc
! 60776b75270ae4a1e733f600e2b87402  libstdc++-v3/testsuite/25_algorithms/includes/requirements/explicit_instantiation/pod.cc
! 91cded86bba1d667c380a1eece89eb97  libstdc++-v3/testsuite/25_algorithms/inplace_merge/1.cc
! c2e22032de765d34365a31f0caf79320  libstdc++-v3/testsuite/25_algorithms/inplace_merge/49559.cc
! 82cb89d4c95531b8e5925c70125ee94a  libstdc++-v3/testsuite/25_algorithms/inplace_merge/check_type.cc
! 68731abf82b84a03e547d1112ef261f2  libstdc++-v3/testsuite/25_algorithms/inplace_merge/constrained.cc
! 58b663c81afbdb4d3e792de77edaf809  libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable.cc
! 116bfe4ee831b9e7f27a1f9968bf296e  libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable2.cc
! 716a38ca21abd9d0c401eaa12cc535c9  libstdc++-v3/testsuite/25_algorithms/inplace_merge/requirements/explicit_instantiation/2.cc
! c46e527c795c111998b7a4e584ce6dd7  libstdc++-v3/testsuite/25_algorithms/inplace_merge/requirements/explicit_instantiation/pod.cc
! e71fc4efa2f61d59e98f02bc2f4d2473  libstdc++-v3/testsuite/25_algorithms/is_heap/1.cc
! b48f5d1e9cdd402bb80985571a13c4f4  libstdc++-v3/testsuite/25_algorithms/is_heap/constexpr.cc
! c47060a9814e26f7e199cd0988ae840e  libstdc++-v3/testsuite/25_algorithms/is_heap/requirements/explicit_instantiation/2.cc
! bfce4528ed38187a1ebf15bbc509f6b3  libstdc++-v3/testsuite/25_algorithms/is_heap/requirements/explicit_instantiation/pod.cc
! 6544eb539ca9b7f995182797e8720320  libstdc++-v3/testsuite/25_algorithms/is_heap_until/1.cc
! 230148873fd33885a73e34fdbc460978  libstdc++-v3/testsuite/25_algorithms/is_heap_until/constexpr.cc
! de6f8a372417e54b479c07d74c87079f  libstdc++-v3/testsuite/25_algorithms/is_heap_until/requirements/explicit_instantiation/2.cc
! 3a94d213e145934b111e7ba1a67b4961  libstdc++-v3/testsuite/25_algorithms/is_heap_until/requirements/explicit_instantiation/pod.cc
! 4af80a8ffd564d7b35ffb7287d1141b8  libstdc++-v3/testsuite/25_algorithms/is_partitioned/1.cc
! e37ff092c27758af6e4823a0b5efa748  libstdc++-v3/testsuite/25_algorithms/is_partitioned/2.cc
! 32ee64bd1f86e76a515d30681a7f6d75  libstdc++-v3/testsuite/25_algorithms/is_partitioned/check_type.cc
! f205839fa0ebe4b40c992703ab598203  libstdc++-v3/testsuite/25_algorithms/is_partitioned/constexpr.cc
! 82ad85dec7692abafe05d0ba6c10ef7a  libstdc++-v3/testsuite/25_algorithms/is_partitioned/constrained.cc
! b13aacad69f9d2a0c4e4b24d32797d38  libstdc++-v3/testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/2.cc
! 4d383ef88d0b956a4c975a9c8e8c19a1  libstdc++-v3/testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/pod.cc
! b765310545476fde27355f1bb9d8c64e  libstdc++-v3/testsuite/25_algorithms/is_permutation/1.cc
! cf205764a9cf7070226958f2e7ae35c3  libstdc++-v3/testsuite/25_algorithms/is_permutation/2.cc
! 025ce1bb4b4b790247f0dc396be89527  libstdc++-v3/testsuite/25_algorithms/is_permutation/64646.cc
! 15ab07f4978189e0668a5bf7e776e69c  libstdc++-v3/testsuite/25_algorithms/is_permutation/check_type.cc
! 4bc4be1703b3ec29ad8719105d8d29fd  libstdc++-v3/testsuite/25_algorithms/is_permutation/check_type2.cc
! eb74bd98626da609319ffcc72dc7116a  libstdc++-v3/testsuite/25_algorithms/is_permutation/constexpr.cc
! 7ac2e246fa86a97642bc813b477b21a1  libstdc++-v3/testsuite/25_algorithms/is_permutation/constrained.cc
! aeced05fabe24e56a129935b1318abaa  libstdc++-v3/testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/2.cc
! fc7c3cd7a3fb437658c5d6fc1969b0b1  libstdc++-v3/testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/pod.cc
! 3c1119756209f892b0e59c8d0845d690  libstdc++-v3/testsuite/25_algorithms/is_permutation/vectorbool.cc
! afcc241cbb501a7041b5320c21096bd6  libstdc++-v3/testsuite/25_algorithms/is_sorted/1.cc
! efa750f5c12e1f784dcb77925d7c58d1  libstdc++-v3/testsuite/25_algorithms/is_sorted/constexpr.cc
! baa1679044d624719ef17f4e79cf15ea  libstdc++-v3/testsuite/25_algorithms/is_sorted/constrained.cc
! cd659207c648416c336f522d3d5481dc  libstdc++-v3/testsuite/25_algorithms/is_sorted/requirements/explicit_instantiation/2.cc
! 38940042aebfd14a680a196d6228d48b  libstdc++-v3/testsuite/25_algorithms/is_sorted/requirements/explicit_instantiation/pod.cc
! 37344dea1119d4451b273dc2f04c3325  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/1.cc
! 061011ff1a511edb32bda1f7046a9ab9  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/constexpr.cc
! 461b73c5e1a5424eda5d21318e743e4b  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/constrained.cc
! bddaf30a9a7e833dd61b1a1a8a73fc6c  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/requirements/explicit_instantiation/2.cc
! 599cca1246b80921d6f285ac9dbc9fd0  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/requirements/explicit_instantiation/pod.cc
! c1242160a9fbc783f0cf9d63200d701d  libstdc++-v3/testsuite/25_algorithms/iter_swap/20577.cc
! 58076b0823a6cf56b319f31fe33a2f13  libstdc++-v3/testsuite/25_algorithms/iter_swap/constexpr.cc
! ab4596df2ae147826de3cd12afd8c19c  libstdc++-v3/testsuite/25_algorithms/iter_swap/requirements/explicit_instantiation/2.cc
! 03803b4f95d96693073c0629e5e9603f  libstdc++-v3/testsuite/25_algorithms/iter_swap/requirements/explicit_instantiation/pod.cc
! 1a25dbb38992c2a3116e01a31eb8358b  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/1.cc
! 51d57bfbe5a34d3b9bf51f5ecee3414c  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/71545.cc
! 0bd7868dd71654e81b8e2c2557397bc5  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/93972.cc
! 6ceefdfba4d0ac96126422253138a17c  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/94013.cc
! a6003151e15598f8639df64781a07265  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/95578.cc
! bd6872c5d550edc33a21fcf2660e1830  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/check_type.cc
! fb8b796e04a7db09adebb198413133ac  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/constexpr.cc
! 3e6587295ac2c31ba503c287fcae2af3  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/constrained.cc
! cb6681c31edfc67097d82ee3c0edd1df  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/requirements/explicit_instantiation/2.cc
! afa6cde076278179271f152c77e73106  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/requirements/explicit_instantiation/pod.cc
! 51e96671549e9acc41049164706c08f7  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/uchar.cc
! 695f60d8c3ead291b40c9feb890ef4c7  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare_three_way/1.cc
! c6a37b733b9fdd98602f72df79d75075  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare_three_way/constexpr.cc
! 97c931622a188c29036a6e49e00fc73d  libstdc++-v3/testsuite/25_algorithms/lower_bound/1.cc
! 2c193b70f08c71c7e733297f532e2948  libstdc++-v3/testsuite/25_algorithms/lower_bound/2.cc
! ceee2f66c93f6852512e44c5e924d808  libstdc++-v3/testsuite/25_algorithms/lower_bound/33613.cc
! 36ddfd197495dee01fe3751b4f8b0a35  libstdc++-v3/testsuite/25_algorithms/lower_bound/check_type.cc
! 180b96485687198416ded0d5975ee62d  libstdc++-v3/testsuite/25_algorithms/lower_bound/constexpr.cc
! 60acb00fab597b92b0259d03ce6adc3a  libstdc++-v3/testsuite/25_algorithms/lower_bound/constrained.cc
! b444fc3ac2c60bc18791d6ed98dfa8a6  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc
! b746da951dd68b6a09e13fdf6e29ab47  libstdc++-v3/testsuite/25_algorithms/lower_bound/no_operator_ne.cc
! 81428264bb54b0bed10d77c1290adfca  libstdc++-v3/testsuite/25_algorithms/lower_bound/partitioned.cc
! 454e6ae7b417f55b943aadb4904c2386  libstdc++-v3/testsuite/25_algorithms/lower_bound/requirements/explicit_instantiation/2.cc
! 9eb83f6886d2c60c85d712c3a02d007d  libstdc++-v3/testsuite/25_algorithms/lower_bound/requirements/explicit_instantiation/pod.cc
! cc48c541fd32dde50a2fae6285190770  libstdc++-v3/testsuite/25_algorithms/make_heap/80064.cc
! b00c9b90173903eceaa51eb8fbd0801c  libstdc++-v3/testsuite/25_algorithms/make_heap/complexity.cc
! 19dba87963391bbc6cc90a5febd9d41f  libstdc++-v3/testsuite/25_algorithms/make_heap/constexpr.cc
! 22d9c8a8f7865f176a9f6529095c6e93  libstdc++-v3/testsuite/25_algorithms/make_heap/movable.cc
! e23c0bef3a0f5c9cb3c8e7fc2ab51ebe  libstdc++-v3/testsuite/25_algorithms/make_heap/requirements/explicit_instantiation/2.cc
! 69d017fb4653fc700905f444ca17613f  libstdc++-v3/testsuite/25_algorithms/make_heap/requirements/explicit_instantiation/pod.cc
! 4c31ae3b329ceeb214f2165c31bb75a2  libstdc++-v3/testsuite/25_algorithms/max/1.cc
! 50fd468b17cb1eeb817f279655bdf4e6  libstdc++-v3/testsuite/25_algorithms/max/2.cc
! 5b0fcba9bc3a667a68d97070cae47f01  libstdc++-v3/testsuite/25_algorithms/max/3.cc
! b76d62c1fedd2417e7c3d9e5af977ad6  libstdc++-v3/testsuite/25_algorithms/max/37547.cc
! e55e8197926288038cccf6757a10c5c6  libstdc++-v3/testsuite/25_algorithms/max/4.cc
! 39e44027155cc1e0e8ced8e06359fcfc  libstdc++-v3/testsuite/25_algorithms/max/constexpr.cc
! 3be3ed876a7e094685a7b3b4f701c818  libstdc++-v3/testsuite/25_algorithms/max/constrained.cc
! dc262b5dd5e760ab3fc000d02676e12c  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/2.cc
! a01bba38d4fa7456ec0c553a19e3af11  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/3.cc
! 5249b393f0c06a96956874e10b279101  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/pod.cc
! 63046d8227109451bb884b087a6e3e92  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/pod2.cc
! 5b7f00a536aef26c6535760fa21622cd  libstdc++-v3/testsuite/25_algorithms/max_element/1.cc
! ad2b5205817f806a0a992a822757dc6a  libstdc++-v3/testsuite/25_algorithms/max_element/check_type.cc
! a7b0752dda0ef43d98174f05beeeabab  libstdc++-v3/testsuite/25_algorithms/max_element/constexpr.cc
! 70ddb1e843f3a4378600f365754b1a18  libstdc++-v3/testsuite/25_algorithms/max_element/constrained.cc
! f016de3e8d5703b3a2cffd409a211b5e  libstdc++-v3/testsuite/25_algorithms/max_element/requirements/explicit_instantiation/2.cc
! 8d5432efa79a91bfd0c1249b504f2bfa  libstdc++-v3/testsuite/25_algorithms/max_element/requirements/explicit_instantiation/pod.cc
! 3895e1dd1aed0b843d7f430813098dc8  libstdc++-v3/testsuite/25_algorithms/merge/1.cc
! f6f5b89220ad05f6e69b7b81bc22157c  libstdc++-v3/testsuite/25_algorithms/merge/check_type.cc
! 5ca39b46e51976a67dfad987e58f8636  libstdc++-v3/testsuite/25_algorithms/merge/constexpr.cc
! 372d21d2e7ed83af15eb334d8d06b5e4  libstdc++-v3/testsuite/25_algorithms/merge/constrained.cc
! 5e8bbcefe7aeac16615f068f93992abf  libstdc++-v3/testsuite/25_algorithms/merge/requirements/explicit_instantiation/2.cc
! 6af3651143f5e3981022ad606ddb28af  libstdc++-v3/testsuite/25_algorithms/merge/requirements/explicit_instantiation/pod.cc
! 2b7aa7ca1fefc34523eeaa55a9cfbdce  libstdc++-v3/testsuite/25_algorithms/min/1.cc
! 03d7625e3c5e56fab9b46d752afbdb25  libstdc++-v3/testsuite/25_algorithms/min/2.cc
! bb09489711794b1cf30012464f105e77  libstdc++-v3/testsuite/25_algorithms/min/3.cc
! b6eae2618e07eefb12454ca76bb14d7e  libstdc++-v3/testsuite/25_algorithms/min/37547.cc
! 4cec2270dbdea93d9b29519d6041758c  libstdc++-v3/testsuite/25_algorithms/min/4.cc
! 104129075e923d26d78d91e030b06fa2  libstdc++-v3/testsuite/25_algorithms/min/concept_checks.cc
! db02a0a0a4dcdb4fba86da64839ee7c9  libstdc++-v3/testsuite/25_algorithms/min/constexpr.cc
! 1cb7395fa9d8258cc690892e79a057b7  libstdc++-v3/testsuite/25_algorithms/min/constrained.cc
! 0003eadbf8e1b5731970d7c441f1c513  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/2.cc
! 3e73774a07967a306c67951bb065933b  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/3.cc
! dd33ff67a260c1407294ab07e4fc35e5  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/pod.cc
! 89cacf9b25186d209320e80b9b05696f  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/pod2.cc
! cedfd05559995b49a7a5a6249add4a41  libstdc++-v3/testsuite/25_algorithms/min_element/1.cc
! 10f1bc8c36ffa637cf398da67d6e6992  libstdc++-v3/testsuite/25_algorithms/min_element/check_type.cc
! ccbcde99b47968f58ead39f0ca872c4f  libstdc++-v3/testsuite/25_algorithms/min_element/constexpr.cc
! 68b19f7e7a81e35330b2eaadcb4c6fee  libstdc++-v3/testsuite/25_algorithms/min_element/constrained.cc
! 6130bae588a3f87545395fa809af647a  libstdc++-v3/testsuite/25_algorithms/min_element/requirements/explicit_instantiation/2.cc
! e8c975a2df91cc326c9c32b307350b97  libstdc++-v3/testsuite/25_algorithms/min_element/requirements/explicit_instantiation/pod.cc
! 13b1ececc44b6f63db200d67bd6b0462  libstdc++-v3/testsuite/25_algorithms/minmax/1.cc
! 088cc1e82dfb64f432480e1312a606c2  libstdc++-v3/testsuite/25_algorithms/minmax/2.cc
! c03b0afd02ffd62208474ade63f0b4ea  libstdc++-v3/testsuite/25_algorithms/minmax/3.cc
! 40a129ae9f5859c91074f06ba3655d5f  libstdc++-v3/testsuite/25_algorithms/minmax/37547.cc
! 19c1a25ea2679a527a70970a0dbebb43  libstdc++-v3/testsuite/25_algorithms/minmax/constexpr.cc
! 61057077c93c651cacbdfba67db5d7b3  libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc
! 74576aa96c9027a953384a98fdae681b  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/2.cc
! aaf762dba887a6eca41bcea865818600  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/3.cc
! f9567a21f0ab72b5cdf15e321b174d36  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/pod.cc
! e9fdf7bef540184c8384358c19949614  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/pod2.cc
! c0aab9ecad25d14b9e0ccd2bd5fead7d  libstdc++-v3/testsuite/25_algorithms/minmax_element/1.cc
! 5b604efc6a8d47758e0a1ede9e86e077  libstdc++-v3/testsuite/25_algorithms/minmax_element/check_type.cc
! 9ca5acf827230008960a2bb3517fc4e5  libstdc++-v3/testsuite/25_algorithms/minmax_element/constexpr.cc
! eee9daf63c17954c1adcf3eb29b18afd  libstdc++-v3/testsuite/25_algorithms/minmax_element/constrained.cc
! 10d0b521d41147f324c21525976c4b51  libstdc++-v3/testsuite/25_algorithms/minmax_element/requirements/explicit_instantiation/2.cc
! e54300931305d0a66006475e90ef5723  libstdc++-v3/testsuite/25_algorithms/minmax_element/requirements/explicit_instantiation/pod.cc
! dab61b74a6bbfabe20a5e101954ab499  libstdc++-v3/testsuite/25_algorithms/mismatch/1.cc
! 83cd2c77ce6bdfab08f3e009888e774c  libstdc++-v3/testsuite/25_algorithms/mismatch/2.cc
! 638b947106777bf90e9b4542c8bb4c76  libstdc++-v3/testsuite/25_algorithms/mismatch/check_type.cc
! 9a5d185620e7064a4a58d65646209475  libstdc++-v3/testsuite/25_algorithms/mismatch/check_type2.cc
! cc6960c47e0b479b2c81d6e78b9d7dbb  libstdc++-v3/testsuite/25_algorithms/mismatch/constexpr.cc
! 0fcde5b2caea6e08b0b57603e70f1311  libstdc++-v3/testsuite/25_algorithms/mismatch/constrained.cc
! 055ffc52d86fd74aaf98354a4bd981bf  libstdc++-v3/testsuite/25_algorithms/move/1.cc
! ebf13bf2627034bbd471091c4f3c3368  libstdc++-v3/testsuite/25_algorithms/move/69478.cc
! 44e221569946a0e33a2e67f843382e50  libstdc++-v3/testsuite/25_algorithms/move/93872.cc
! f96db947c69a08837af8ac605b48c92d  libstdc++-v3/testsuite/25_algorithms/move/94013.cc
! b30f988b1fbb90c45a8593ca770812c1  libstdc++-v3/testsuite/25_algorithms/move/95578.cc
! 585202866e7fe990ca74f85d14ebafae  libstdc++-v3/testsuite/25_algorithms/move/constrained.cc
  c41fedc68e3cee79d652221a1c6b2c9a  libstdc++-v3/testsuite/25_algorithms/move/deque_iterators/1.cc
! 22a53398fac55f2b6eca6cc938cf84fc  libstdc++-v3/testsuite/25_algorithms/move/deque_iterators/2.cc
! 855ff59e5822af3a3c126279d43f7ce7  libstdc++-v3/testsuite/25_algorithms/move/requirements/explicit_instantiation/2.cc
! 721585435cfd11ba0483767f6c67ae4d  libstdc++-v3/testsuite/25_algorithms/move/requirements/explicit_instantiation/pod.cc
! dbd3b05bff9c931a86930244ef0cf8cc  libstdc++-v3/testsuite/25_algorithms/move_backward/1.cc
! c310d6baae77a49901d5ae11e16ee47d  libstdc++-v3/testsuite/25_algorithms/move_backward/69478.cc
! 5ddca353d4abf9a6989855f035961cfa  libstdc++-v3/testsuite/25_algorithms/move_backward/93872.cc
! e70ae113f5f60af9678daeb34acd334b  libstdc++-v3/testsuite/25_algorithms/move_backward/94013.cc
! 034b9379e803cdbc111a993cfa7a7d3b  libstdc++-v3/testsuite/25_algorithms/move_backward/95578.cc
! 3b596af568842b93f812ef2b6b3064f4  libstdc++-v3/testsuite/25_algorithms/move_backward/constrained.cc
  d798b4d62b339492aca582244b60767f  libstdc++-v3/testsuite/25_algorithms/move_backward/deque_iterators/1.cc
! 7c35e5d8a5b56c89a714013e82967737  libstdc++-v3/testsuite/25_algorithms/move_backward/deque_iterators/2.cc
! ef082ec3371a2e86e25d54adb12ef556  libstdc++-v3/testsuite/25_algorithms/move_backward/requirements/explicit_instantiation/2.cc
! d0e7161eaeef7bb4a8bd57a2368f2edc  libstdc++-v3/testsuite/25_algorithms/move_backward/requirements/explicit_instantiation/pod.cc
! 3adb0e3243ae102e1e4e9fa4fc08a7b9  libstdc++-v3/testsuite/25_algorithms/next_permutation/1.cc
! 67a0635669193163a285a5e6ee0bc761  libstdc++-v3/testsuite/25_algorithms/next_permutation/check_type.cc
! 4dfc35bb8f514fdb648df2b7cdaeac07  libstdc++-v3/testsuite/25_algorithms/next_permutation/constexpr.cc
! 5353824f0108a27c61e70fbc76f765a5  libstdc++-v3/testsuite/25_algorithms/next_permutation/constrained.cc
! 7b071ee79ab027468517ef9b8ff2b753  libstdc++-v3/testsuite/25_algorithms/next_permutation/moveable.cc
! a1b4f606f10939b680924502127ee659  libstdc++-v3/testsuite/25_algorithms/next_permutation/requirements/explicit_instantiation/2.cc
! b06344ec7be0595c368146041b164f09  libstdc++-v3/testsuite/25_algorithms/next_permutation/requirements/explicit_instantiation/pod.cc
! 7e4d4e97b88a369dd4e0375158d338bd  libstdc++-v3/testsuite/25_algorithms/none_of/1.cc
! 58865abe960e1157d713bb248b9917aa  libstdc++-v3/testsuite/25_algorithms/none_of/check_type.cc
! d1720681beec9b17e60a505afb620e70  libstdc++-v3/testsuite/25_algorithms/none_of/constexpr.cc
! 75080b877198e89e2abb0a4397e61c7b  libstdc++-v3/testsuite/25_algorithms/none_of/constrained.cc
! 5cb30162868b76cecb515cd11454a033  libstdc++-v3/testsuite/25_algorithms/none_of/requirements/explicit_instantiation/2.cc
! bbb69dfb145101b7b64a69b992adf84d  libstdc++-v3/testsuite/25_algorithms/none_of/requirements/explicit_instantiation/pod.cc
! 2074dc911da234cebb9061730684acf5  libstdc++-v3/testsuite/25_algorithms/nth_element/1.cc
! 2cb2aa8397556576dc962178ab420334  libstdc++-v3/testsuite/25_algorithms/nth_element/2.cc
! ab9f74920b415691062990a38a6263d7  libstdc++-v3/testsuite/25_algorithms/nth_element/3.cc
! ee5017f14d132154349e5c35bb5716e4  libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc
! e08f71a6aa17e73562c69247ea0563e6  libstdc++-v3/testsuite/25_algorithms/nth_element/check_type.cc
! 857914ff2facc4bf904bc818e972db1c  libstdc++-v3/testsuite/25_algorithms/nth_element/constexpr.cc
! 01ad0f6417bd7fd800c52f7c5f5e5119  libstdc++-v3/testsuite/25_algorithms/nth_element/constrained.cc
! 0d1af6d1bab5d60162a4caad206034f8  libstdc++-v3/testsuite/25_algorithms/nth_element/moveable.cc
! ab8e8a3b877c49b6974d8af6ef4e14c0  libstdc++-v3/testsuite/25_algorithms/nth_element/random_test.cc
! bb458d9bbafb243ca4f5cfed63ced2af  libstdc++-v3/testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/2.cc
! 9157f9a10e396d142f8a4ce4005b33d3  libstdc++-v3/testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/pod.cc
! c2b495d0dea47185c40f11d917ab6400  libstdc++-v3/testsuite/25_algorithms/partial_sort/1.cc
! ad2704f1e492e6e98b55737ad22282f8  libstdc++-v3/testsuite/25_algorithms/partial_sort/2.cc
! a3742ab7751151fd20906f020887da15  libstdc++-v3/testsuite/25_algorithms/partial_sort/check_compare_by_value.cc
! 9467b02324b3628ef92c05cd2a05cb8e  libstdc++-v3/testsuite/25_algorithms/partial_sort/check_type.cc
! 86b030b38f48c11a588caec9a0030b8b  libstdc++-v3/testsuite/25_algorithms/partial_sort/constexpr.cc
! 3a8586976b4a3f12b9157207fd2520cd  libstdc++-v3/testsuite/25_algorithms/partial_sort/constrained.cc
! 173d494354988995fc6083d1966f222f  libstdc++-v3/testsuite/25_algorithms/partial_sort/moveable.cc
! 2b34fd16d36d4bc7ebf7feefe96f6ff3  libstdc++-v3/testsuite/25_algorithms/partial_sort/random_test.cc
! 1fa88dd56806b1ee019969a27e3b8c42  libstdc++-v3/testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/2.cc
! e1cb36675404dd2e2f8babc0e215fbb5  libstdc++-v3/testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/pod.cc
! 7ffcbe5ee664d0cfd3bb9005c66de920  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/1.cc
! 308d84a03110818f71bc5470f1df16f7  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/2.cc
! d96a75b6f7df1713f5a49189ad423e18  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/check_type.cc
! b064e0ab2585e275ee256ec83201afde  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/constexpr.cc
! d45bffaefc550a760abbb34b82c2f0ef  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/constrained.cc
! 50db8484637b1f6fb0ddd52aa62cf32f  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc
! b6836948f0c8b978bccc484f3a298b55  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/random_test.cc
! 343c42774f4331ef87a2489915b0a787  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/2.cc
! 564e1a9a37a2915c588ef93e335ffff1  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/pod.cc
! b0759086f7dc1bb583b0621107b5d5b1  libstdc++-v3/testsuite/25_algorithms/partition/1.cc
! 3c54c0df634ca2f3bdd310abc26f9748  libstdc++-v3/testsuite/25_algorithms/partition/constexpr.cc
! 5b8e064a737fd73cb9f5b77a65067326  libstdc++-v3/testsuite/25_algorithms/partition/constrained.cc
! 5e499638b76b52197bafc091bf29763d  libstdc++-v3/testsuite/25_algorithms/partition/moveable.cc
! aa3dfbad3e03b3a885b168f6235de3af  libstdc++-v3/testsuite/25_algorithms/partition/requirements/explicit_instantiation/2.cc
! 2496490022adbf92205cbfd611747911  libstdc++-v3/testsuite/25_algorithms/partition/requirements/explicit_instantiation/pod.cc
! 3d7574d8b6e4bb13a031743c1c6aae43  libstdc++-v3/testsuite/25_algorithms/partition_copy/1.cc
! 9a51181acc66624185fb2b45b6a58ebd  libstdc++-v3/testsuite/25_algorithms/partition_copy/check_type.cc
! ad3ef9c0fc0724c81737acdc7b34d855  libstdc++-v3/testsuite/25_algorithms/partition_copy/constexpr.cc
! 463404fb40d32487a3e495642aa53b73  libstdc++-v3/testsuite/25_algorithms/partition_copy/constrained.cc
! 504eab7446b624c1504148afd4ff2249  libstdc++-v3/testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/2.cc
! 7596b38773df787204d943ebc5bc45fe  libstdc++-v3/testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/pod.cc
! 84a842a8a746e527fc7d7ee606c2f5b8  libstdc++-v3/testsuite/25_algorithms/partition_point/1.cc
! d8c20e7615e37493ba28e63850fd3305  libstdc++-v3/testsuite/25_algorithms/partition_point/check_type.cc
! 2b12d173784b1117761e87d783756009  libstdc++-v3/testsuite/25_algorithms/partition_point/constexpr.cc
! b0d60b70af12b53bf51316ae7d655894  libstdc++-v3/testsuite/25_algorithms/partition_point/constrained.cc
! a753c54d3e333be48fc1553eac399622  libstdc++-v3/testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/2.cc
! 2a6aff0e3ea930488ef4cc186128b6f1  libstdc++-v3/testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/pod.cc
! ceb29dc779b25ffa1fcc6114b49a6383  libstdc++-v3/testsuite/25_algorithms/pop_heap/57010.cc
! abcfda90ab3256709f53f6b594b0e957  libstdc++-v3/testsuite/25_algorithms/pop_heap/complexity.cc
! c24f7439d969fac2327b4c3e5452e027  libstdc++-v3/testsuite/25_algorithms/pop_heap/constexpr.cc
! 432e369fa052130eafa4e326ab934f44  libstdc++-v3/testsuite/25_algorithms/pop_heap/empty2_neg.cc
! 313b714c6e88dfd1122fbb256af52ff4  libstdc++-v3/testsuite/25_algorithms/pop_heap/empty_neg.cc
! e5b614b0adb824625935966c5096aef6  libstdc++-v3/testsuite/25_algorithms/pop_heap/requirements/explicit_instantiation/2.cc
! 7879c4a33cb2f20408a15947a7de1485  libstdc++-v3/testsuite/25_algorithms/pop_heap/requirements/explicit_instantiation/pod.cc
! ee8b573205fcfbf997f2306da2e1557f  libstdc++-v3/testsuite/25_algorithms/prev_permutation/1.cc
! cd130fe3fbc6a171e9b6a98a3e398fa2  libstdc++-v3/testsuite/25_algorithms/prev_permutation/check_type.cc
! 94fb76d6fbd99c31a0cdd6c2d5a07dcc  libstdc++-v3/testsuite/25_algorithms/prev_permutation/constexpr.cc
! 2784af63ed5fa338dab7bd7248f85b06  libstdc++-v3/testsuite/25_algorithms/prev_permutation/constrained.cc
! b9a84d6d19dcb870a88a6c9cbca6ded1  libstdc++-v3/testsuite/25_algorithms/prev_permutation/moveable.cc
! 2309aaed1c762325c484ea54b342a29c  libstdc++-v3/testsuite/25_algorithms/prev_permutation/requirements/explicit_instantiation/2.cc
! 724d26037056a13f9e016b05a6c4af58  libstdc++-v3/testsuite/25_algorithms/prev_permutation/requirements/explicit_instantiation/pod.cc
  99f7e56e4f4a3482e5357134c04779ca  libstdc++-v3/testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc
  2d01f77a95c07a8691544e98c3af8d53  libstdc++-v3/testsuite/25_algorithms/pstl/alg_merge/merge.cc
  b3a5e3e03e4c7000686ccc6f79cef937  libstdc++-v3/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc
--- 97370,103163 ----
  f63bfdc03ba2b82c74864f02206d7c52  libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find.svg
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/xml/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/xml/images/pbds_update_seq_diagram.png
! 88de4b5735be84dd96b4933de443860c  libstdc++-v3/doc/xml/manual/abi.xml
! c1d775ba87be90b85044162eab59a66c  libstdc++-v3/doc/xml/manual/algorithms.xml
! 9dab55417f1d5dd3fc88e61ad41e771e  libstdc++-v3/doc/xml/manual/allocator.xml
! 955fe25d6d9b0ad80a7234695a81a794  libstdc++-v3/doc/xml/manual/appendix_contributing.xml
! 11e0fd62db5b93db462f3c54750904ec  libstdc++-v3/doc/xml/manual/appendix_free.xml
! 0e37b1b056c89ad8cd7ef98f9924284c  libstdc++-v3/doc/xml/manual/appendix_porting.xml
! 5139cfc8fdaabd93b5aa7362de789702  libstdc++-v3/doc/xml/manual/atomics.xml
! c3d24d92dc2ae1e99149164f60e80337  libstdc++-v3/doc/xml/manual/auto_ptr.xml
! 18ecbccd2db2605dc093780d7b72799b  libstdc++-v3/doc/xml/manual/backwards_compatibility.xml
! b84cb983bda244285e1314327a420e66  libstdc++-v3/doc/xml/manual/bitmap_allocator.xml
! e184d827d7fb559037041e81118936cb  libstdc++-v3/doc/xml/manual/build_hacking.xml
! 8f13cae7ea80bc018b87b4ff8de7e3cf  libstdc++-v3/doc/xml/manual/codecvt.xml
! af3361d0d0af961859ec0346c38ac8c8  libstdc++-v3/doc/xml/manual/concurrency.xml
! 86f27306f8b76aebd69ea92641fd2c94  libstdc++-v3/doc/xml/manual/concurrency_extensions.xml
! 2a354bce3e662dd8b60d6ac5243e4e4b  libstdc++-v3/doc/xml/manual/configure.xml
! b7a892b2e432f52274c482549c3264a2  libstdc++-v3/doc/xml/manual/containers.xml
! a1ff7d876c3d43ddeea13056c5d8079b  libstdc++-v3/doc/xml/manual/ctype.xml
! 1ef2d3bb759e6f6de762e1c79ff08030  libstdc++-v3/doc/xml/manual/debug.xml
! f6280ade305c2ebb21bd3a78c06105e3  libstdc++-v3/doc/xml/manual/debug_mode.xml
! f320f25003678cca910f09ba54c923fc  libstdc++-v3/doc/xml/manual/diagnostics.xml
! 561ce4bba87e35c92c47d95599ca9d9b  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
! a3b670e11d8db732a9352e2fbe236347  libstdc++-v3/doc/xml/manual/evolution.xml
  14742e66a2ac01343ef60e87d06d05ff  libstdc++-v3/doc/xml/manual/extensions.xml
! 7f1864c7f3c3b2bfde84b7086be97ca7  libstdc++-v3/doc/xml/manual/internals.xml
! 3bb41abfa95c0595af0cde92765188a9  libstdc++-v3/doc/xml/manual/intro.xml
! 93c3158fe28bdfbbf03dd039cc4e79a2  libstdc++-v3/doc/xml/manual/io.xml
! 5ac71d67674ea22bcf1e54043bf8e99d  libstdc++-v3/doc/xml/manual/iterators.xml
! b9c8759ff9b60e09bd2875420a55cd31  libstdc++-v3/doc/xml/manual/locale.xml
! b00f98f125f6186c369ce588d795f978  libstdc++-v3/doc/xml/manual/localization.xml
! 90cedee1e8e04d1ab87bbf41d47293ec  libstdc++-v3/doc/xml/manual/messages.xml
! 97e1a65bd62a0b553a1239ee0ab92cfa  libstdc++-v3/doc/xml/manual/mt_allocator.xml
! 42b8355117a7bd9aa755048290e70d2c  libstdc++-v3/doc/xml/manual/numerics.xml
! 7edd591e15a0bbc76d58e9edcb7c28d1  libstdc++-v3/doc/xml/manual/parallel_mode.xml
! b4f22a512ad29af70c76d4e459bdf2a8  libstdc++-v3/doc/xml/manual/policy_data_structures.xml
! d766137e6e226eaf2c354f95fd9c7274  libstdc++-v3/doc/xml/manual/policy_data_structures_biblio.xml
! 2f4a4ec5c3f1beecb2e7e72f3b0d2958  libstdc++-v3/doc/xml/manual/prerequisites.xml
! cec5c5415c371a664adb0490e2571c3c  libstdc++-v3/doc/xml/manual/shared_ptr.xml
! 9a8f1a85034e6fe72b02302051aa7af9  libstdc++-v3/doc/xml/manual/spine.xml
  21b4ad60404b59dfe18632c7f5a6d317  libstdc++-v3/doc/xml/manual/status_cxx1998.xml
! 8253286adbeae477e34108477564e376  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
! b1431db7e834d8841899ce3e8cf9cc1e  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
! dbc9c0d00c0b189acb36b4104265201c  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
! e02040abe3d50e00f9e6c2291ed71e79  libstdc++-v3/doc/xml/manual/status_cxx2020.xml
  3c72998c4574690fac280c058a0db757  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
! 3a19bd0f91506b2ac8559bd9afa754f7  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
! c6cb51b19d85e47416a616658db64d08  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
! 49334f70b9df9a3f9b81e04a418e8066  libstdc++-v3/doc/xml/manual/strings.xml
! 2b80feb1b53a8d0895a292620ec430b2  libstdc++-v3/doc/xml/manual/support.xml
! 5a89da07906610f85971c9faa717428e  libstdc++-v3/doc/xml/manual/test.xml
! e2e099be3dd6a4b7a940a7232635ee2c  libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml
! 951665646abb37053d22bfa2c42d67e7  libstdc++-v3/doc/xml/manual/using.xml
! 30ec356feba73e85c6cef4c27dbb372e  libstdc++-v3/doc/xml/manual/using_exceptions.xml
! 74a5acaa32b3d223bd413c1bb5b69ac6  libstdc++-v3/doc/xml/manual/utilities.xml
! 05d0e18187995e8ce64185beb05cd6ed  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
! 42d14268f2b16c54a6bc2f71538a838c  libstdc++-v3/fragment.am
! 4b4e6a7dc20318d53a49357dfecb7dc7  libstdc++-v3/include/Makefile.am
! 8ffbcef7dbc180c53210178a0d44edc4  libstdc++-v3/include/Makefile.in
! 83813d3bf45dd53bdc13d769af501845  libstdc++-v3/include/backward/auto_ptr.h
! 93f8180370b2b5df7b580ce625762260  libstdc++-v3/include/backward/backward_warning.h
! 3ba6b626499f6c5a1cf871734a77df07  libstdc++-v3/include/backward/binders.h
! 670f2693341c46749d2c5b6b54df41c5  libstdc++-v3/include/backward/hash_fun.h
! c67bdff0760417827f5a8cab3067b626  libstdc++-v3/include/backward/hash_map
! af8e9554e20f02102b5017a30f1e9eff  libstdc++-v3/include/backward/hash_set
! 4ae40666dc641c3f172087ed984f1e01  libstdc++-v3/include/backward/hashtable.h
! 73b62e0f113a7d8e63e0d13183419c1b  libstdc++-v3/include/backward/strstream
! f6791325ac8042a3d1825c0f1ae0765b  libstdc++-v3/include/bits/algorithmfwd.h
! 6b5ce7ffbf8ffbb2440a44894aee279a  libstdc++-v3/include/bits/align.h
! 442b89bcdb261424542a1ee74863a63f  libstdc++-v3/include/bits/alloc_traits.h
! 9fbd8fe4ee82100ead481133a769ba62  libstdc++-v3/include/bits/allocated_ptr.h
! 8bd175d1a0fec99377ee20ad0c018b4b  libstdc++-v3/include/bits/allocator.h
! ec722744a2793ffdb2bdafc86545c53f  libstdc++-v3/include/bits/atomic_base.h
! adb82b0133e664d7a6d703cde2ee9b90  libstdc++-v3/include/bits/atomic_futex.h
! cd905b67c3e994ab3680f3d2c5da1fdf  libstdc++-v3/include/bits/atomic_timed_wait.h
! f4cdc0b777deedeaf4bab0465e58238b  libstdc++-v3/include/bits/atomic_wait.h
! 3a2158164dc155855b2c0175c5f3c80b  libstdc++-v3/include/bits/basic_ios.h
! bd6a297c732d4d1fc2db79f61e854e8c  libstdc++-v3/include/bits/basic_ios.tcc
! b543454338458641b9940df822e99e49  libstdc++-v3/include/bits/basic_string.h
! cdec0fb14b071f72010a9b8c2d2e814d  libstdc++-v3/include/bits/basic_string.tcc
! 143f01f2ac09091fe6272d8d3d996dd4  libstdc++-v3/include/bits/boost_concept_check.h
! c48dd1724bfe2a240a2d017612ff109d  libstdc++-v3/include/bits/c++0x_warning.h
! 212a23aa53ba273772696d75c95c0011  libstdc++-v3/include/bits/c++config
! f886322a694a8f50412af979a1f6e9ad  libstdc++-v3/include/bits/char_traits.h
! bc3afa551b214a1d9450c6798b21dc1c  libstdc++-v3/include/bits/charconv.h
! a143652aea71c3de835d07a5ca715a81  libstdc++-v3/include/bits/codecvt.h
! 0c7784a98f845682f7e0257592f53ed9  libstdc++-v3/include/bits/concept_check.h
! 8d0a413609fd69213697c57a2f7e6efc  libstdc++-v3/include/bits/cpp_type_traits.h
! 947ff17e4a377263e8f322147b3273d9  libstdc++-v3/include/bits/deque.tcc
! 65e85d94a207872f285a93186ef2b0bb  libstdc++-v3/include/bits/enable_special_members.h
! 00ebb6049dacf8ab023b15caf7b3a690  libstdc++-v3/include/bits/erase_if.h
! a7d5bb28720ccf51fe638410018fc593  libstdc++-v3/include/bits/forward_list.h
! 7ce3876e2c3546f4e3f7fb947e3479a7  libstdc++-v3/include/bits/forward_list.tcc
! 42e0fac7ef6d3d3217e48ce36672e534  libstdc++-v3/include/bits/fs_dir.h
! a63f77a9474742ae09c01d1f91b2ee81  libstdc++-v3/include/bits/fs_fwd.h
! c58e18a2280eec2e679ae84b9ec94475  libstdc++-v3/include/bits/fs_ops.h
! 787a5371a426fed59a367975ab2722fb  libstdc++-v3/include/bits/fs_path.h
! 1e083c1a36d484e25c40b96ad6699e4e  libstdc++-v3/include/bits/fstream.tcc
! dd8a128f529a9f6f73237a176e7299bc  libstdc++-v3/include/bits/functexcept.h
! 3854e123c62afb06ce8eff3213da177e  libstdc++-v3/include/bits/functional_hash.h
! 7e28c413fb2ff8f896ab6f4b81296589  libstdc++-v3/include/bits/gslice.h
! 6d64fcf711e66e1774782608ff3b5159  libstdc++-v3/include/bits/gslice_array.h
! cb917006d9ce3bfd4a721667bdd29fc5  libstdc++-v3/include/bits/hashtable.h
! 4c92f28a1ef1274d928ac888dcc4c511  libstdc++-v3/include/bits/hashtable_policy.h
! 94b514a53ce7d1816738c38c1e0655a8  libstdc++-v3/include/bits/indirect_array.h
! 70c7a436935136a62065871cf31e4943  libstdc++-v3/include/bits/invoke.h
! b81521437ef0ce936cef3eaef2df90db  libstdc++-v3/include/bits/ios_base.h
! 6605273dbd3b4a796727eff37aa712ed  libstdc++-v3/include/bits/istream.tcc
! c62f7fcf5926ffb7ff4395186ad7499e  libstdc++-v3/include/bits/iterator_concepts.h
! 9c607b8172976c0554f82e593ebab6e7  libstdc++-v3/include/bits/list.tcc
! 9033c9a135c14cc8c1b25fb5774e57e7  libstdc++-v3/include/bits/locale_classes.h
! d9209b1a8387c8074c0b4dfa10383f2d  libstdc++-v3/include/bits/locale_classes.tcc
! b93ec8fb60ddfb747f6a4956d056226e  libstdc++-v3/include/bits/locale_conv.h
! 60086948f806696451f55032cdff69dc  libstdc++-v3/include/bits/locale_facets.h
! 20df9195fafbed780aca7f7a838399e3  libstdc++-v3/include/bits/locale_facets.tcc
! 40d368932a34a5a714551d5411431aed  libstdc++-v3/include/bits/locale_facets_nonio.h
! 05f284aca697735aea072159826db863  libstdc++-v3/include/bits/locale_facets_nonio.tcc
! bded7dc13b4cfa5d81cf5165cc84122a  libstdc++-v3/include/bits/localefwd.h
! 3f32eafc5a86b24ba1ddea1f2c791f2f  libstdc++-v3/include/bits/mask_array.h
! 3b99ebe899129f76e71b6a400b7ae599  libstdc++-v3/include/bits/max_size_type.h
! 1978e96ec1a7ea3268cf7acdd6c69e57  libstdc++-v3/include/bits/memoryfwd.h
! 204940fe012c29feb67f1e7f3f1e90f5  libstdc++-v3/include/bits/move.h
! 43e7bcc096b6696bce49d4d2f41a5cf2  libstdc++-v3/include/bits/node_handle.h
! 3877d17291319659d2c7ab82f127deeb  libstdc++-v3/include/bits/ostream.tcc
! c6baef5b0dbad526c4a7d462e52887b8  libstdc++-v3/include/bits/ostream_insert.h
! 518cd0ae140bee151205f0ccbbe7a9d2  libstdc++-v3/include/bits/parse_numbers.h
! e270c86004665d7c88cb0daea0668abd  libstdc++-v3/include/bits/postypes.h
! 1aa21e383abff8b98908de39896ac74d  libstdc++-v3/include/bits/predefined_ops.h
! b6317075019adec6605d0a9e2ff1148e  libstdc++-v3/include/bits/ptr_traits.h
! bf73b2a247be8d104de523be716f61f4  libstdc++-v3/include/bits/quoted_string.h
! e05ff5f61630e3ab98cd5502bd8bd9b7  libstdc++-v3/include/bits/random.h
! 500df2469574ed6915c80e60da1f75fa  libstdc++-v3/include/bits/random.tcc
! 94fe05bef1244872d91dffec0700dbb3  libstdc++-v3/include/bits/range_access.h
! 21179d387fc2573d8a48e78022b49ffb  libstdc++-v3/include/bits/ranges_algo.h
! 9fe4599bcdeab5c22d33117b7e9ba960  libstdc++-v3/include/bits/ranges_algobase.h
! 58a42b94c74670c1d29f9482048b216e  libstdc++-v3/include/bits/ranges_base.h
! 78cb996cd8902c5baabd4b2dfdd65af4  libstdc++-v3/include/bits/ranges_cmp.h
! 6bb4f3d4369ad8f3c7d28c6bc69d5c8d  libstdc++-v3/include/bits/ranges_uninitialized.h
! e4500ff5a19d11d073da9f0e730d81ac  libstdc++-v3/include/bits/ranges_util.h
! bafb49c6b1a65444216c071f25b43760  libstdc++-v3/include/bits/refwrap.h
! d0f6e74ba75bd371d006cfd1b912c50c  libstdc++-v3/include/bits/regex.h
! 98d3d51046b708d9220ef857b955650f  libstdc++-v3/include/bits/regex.tcc
! b8b0cf85c115bbd16b3256e7f86315c5  libstdc++-v3/include/bits/regex_automaton.h
! 1a0c43de6ed4d56e298516e81208096a  libstdc++-v3/include/bits/regex_automaton.tcc
! 9b98eca9adb64a3789d65233db362bf5  libstdc++-v3/include/bits/regex_compiler.h
! 04718138ae92de2ca5211b1127e6bdfb  libstdc++-v3/include/bits/regex_compiler.tcc
! 528eeb9a41f8fa2f75c7da93f3a87e51  libstdc++-v3/include/bits/regex_constants.h
! fa9fbe5b4b6b38cebc35d0a4f86d2aa2  libstdc++-v3/include/bits/regex_error.h
! bf2631da804338ebd183a2ab97e8fe71  libstdc++-v3/include/bits/regex_executor.h
! f419d75dd099ff83043ecee608bcbd0b  libstdc++-v3/include/bits/regex_executor.tcc
! 716607b7d27d47a176e82ac8130fdf31  libstdc++-v3/include/bits/regex_scanner.h
! 785e8171663dd2f0db22813a93c65ed9  libstdc++-v3/include/bits/regex_scanner.tcc
! edb844da674b647e8cb411ace1619b58  libstdc++-v3/include/bits/semaphore_base.h
! f0316d2fdb0f991f91e23c8661faca28  libstdc++-v3/include/bits/shared_ptr.h
! 007e220395413941831ec80cc4e916b7  libstdc++-v3/include/bits/shared_ptr_atomic.h
! f80bd4ea573dbc12c759524fc39004ca  libstdc++-v3/include/bits/shared_ptr_base.h
! 76a4a29ee68e815ad238f784a66392d3  libstdc++-v3/include/bits/slice_array.h
! 82bbae243b362815baa11a73f83d2188  libstdc++-v3/include/bits/specfun.h
! 13dd655f9d33eef94922ec1a670c462c  libstdc++-v3/include/bits/sstream.tcc
! 0ca803a7f09755f05290802f0dd2b38c  libstdc++-v3/include/bits/std_abs.h
! 0f61c570cbb535b1691a12ada5c2a34d  libstdc++-v3/include/bits/std_function.h
! c65174fff50fe5647fc68ed6f3ae1695  libstdc++-v3/include/bits/std_mutex.h
! 31afd24299e34c415da3d47aaa42d3e8  libstdc++-v3/include/bits/std_thread.h
! c661d981a881e8628863fac1295c261c  libstdc++-v3/include/bits/stl_algo.h
! c0e5fec159b35d2e970802869ef11db5  libstdc++-v3/include/bits/stl_algobase.h
! 98118948adc1b932091fb4e357a8762c  libstdc++-v3/include/bits/stl_bvector.h
! c1e09b0354857b8e354266917b1a5930  libstdc++-v3/include/bits/stl_construct.h
! 030b82de595162b8288defee8ca51bc1  libstdc++-v3/include/bits/stl_deque.h
! 25317d371d99754142da342fe8338100  libstdc++-v3/include/bits/stl_function.h
! 9b5d138d0bfe5519552ee1fd50135555  libstdc++-v3/include/bits/stl_heap.h
! 76a079b9e73609cd31fd7d4d6a59e0dc  libstdc++-v3/include/bits/stl_iterator.h
! 76a3280d9bb3ee6191804428721c4059  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
! 4c794f35830ab1d4f96e6d5dacb8ecc7  libstdc++-v3/include/bits/stl_iterator_base_types.h
! 98c11423a3f4c54610e2c3580faffbd7  libstdc++-v3/include/bits/stl_list.h
! aee57a8661ec66bcbd3d049a16df390e  libstdc++-v3/include/bits/stl_map.h
! b8cb58fbb28fca627fd75d308c3b79fa  libstdc++-v3/include/bits/stl_multimap.h
! f6c4537c41eed49ed99d69f857341edf  libstdc++-v3/include/bits/stl_multiset.h
! 23f50728106a7dd127f28bfa1e82e21d  libstdc++-v3/include/bits/stl_numeric.h
! 7f4523a2a9644730e7f1af988b6f398d  libstdc++-v3/include/bits/stl_pair.h
! 0ec5c2472e95a10fb800f78245c05300  libstdc++-v3/include/bits/stl_queue.h
! 9f4c41dd191035f1a70db333f988202b  libstdc++-v3/include/bits/stl_raw_storage_iter.h
! e519ad1037772e85daa706ffa7ea28da  libstdc++-v3/include/bits/stl_relops.h
! 93170ef391fdcbda38838ce3f8f4b861  libstdc++-v3/include/bits/stl_set.h
! ba0b8ae642f56a2b5ac0e0f6b5efdb5f  libstdc++-v3/include/bits/stl_stack.h
! cf3c9e963ec99beda2bb6c7db4a045f6  libstdc++-v3/include/bits/stl_tempbuf.h
! bf00b712beec015ea638e92162683a9d  libstdc++-v3/include/bits/stl_tree.h
! e5b2dfda2795d428e8e4a9ac15177146  libstdc++-v3/include/bits/stl_uninitialized.h
! abcaf00227294b9790605822a1c03477  libstdc++-v3/include/bits/stl_vector.h
! 1e99e977ac1c11c7b57913dfa5041da9  libstdc++-v3/include/bits/stream_iterator.h
! e1046f3460e6b41c7e73808ecb83be4d  libstdc++-v3/include/bits/streambuf.tcc
! 68cf363b8a59975fef89e4a35f305aac  libstdc++-v3/include/bits/streambuf_iterator.h
! edfcae2473cc1997408a2778fd824b00  libstdc++-v3/include/bits/string_view.tcc
! dce486b4bf1d6d2797c477681a012b6b  libstdc++-v3/include/bits/stringfwd.h
! 98845c8acb65ad30581355638051805e  libstdc++-v3/include/bits/this_thread_sleep.h
! 13b7236ca3b4f48a897996d806dfcd78  libstdc++-v3/include/bits/uniform_int_dist.h
! f121bb0af76bb2def80cd57ec47a7a93  libstdc++-v3/include/bits/unique_lock.h
! 4b5ae66ad1eb2fe06e6955f59533f596  libstdc++-v3/include/bits/unique_ptr.h
! b23caecd2ad3808e9572b2051285a5ef  libstdc++-v3/include/bits/unordered_map.h
! 2b37ceccf2a7d7b2510b97d737feb425  libstdc++-v3/include/bits/unordered_set.h
! a0235307021a386f653230df9f88f20c  libstdc++-v3/include/bits/uses_allocator.h
! 101803fea1c9b20b1dc8df08e69ce89e  libstdc++-v3/include/bits/uses_allocator_args.h
! 92ac9967aa8b4e7ebb4019d9e5fc2cf6  libstdc++-v3/include/bits/valarray_after.h
! 68516738753362c2db0a29a86a8e6264  libstdc++-v3/include/bits/valarray_array.h
! 164619db6e4fbc8072543c783e3b533e  libstdc++-v3/include/bits/valarray_array.tcc
! eec1e9f3ef9e5c255e124414bcf4c902  libstdc++-v3/include/bits/valarray_before.h
! 5c24b494579a64c40c25078afc9592a4  libstdc++-v3/include/bits/vector.tcc
! b1f8590e0971e6f4f03bdadbd17bdbbe  libstdc++-v3/include/c/cassert
! 464f65c3985036f2313f8dfd9e478cbf  libstdc++-v3/include/c/cctype
! e9f32ea9e1c02499c9120e1ba83e0563  libstdc++-v3/include/c/cerrno
! 49059898325ffa5d3852381f296cce62  libstdc++-v3/include/c/cfloat
! 00468aec7541431dec1166471a270532  libstdc++-v3/include/c/ciso646
! e8ef1969853763b12144e4dd715c90e5  libstdc++-v3/include/c/climits
! e1a4aede3764d463bfae88592d878ecb  libstdc++-v3/include/c/clocale
! 85e8da2891b0dc7e045e0926e095de4f  libstdc++-v3/include/c/cmath
! fc7e732a58106ddaf6357aefad544078  libstdc++-v3/include/c/csetjmp
! 12d2c09925adc565a7bbd2e2cce15a84  libstdc++-v3/include/c/csignal
! 229862a417590e4915e7d8ac106e3c02  libstdc++-v3/include/c/cstdarg
! 344d9612ac54bff89d173f76a16a53d2  libstdc++-v3/include/c/cstddef
! 823b7886bf4c12aaec87b8cf56faa7a3  libstdc++-v3/include/c/cstdio
! 639a2404cf486508a0d15eb8d802a1fe  libstdc++-v3/include/c/cstdlib
! e7e68f1d6d8c15caa4499b71244837bd  libstdc++-v3/include/c/cstring
! 4242ed7213a0d08fb8f52eb04a92933a  libstdc++-v3/include/c/ctime
! e9ec3faaff77297b7d5d35261a834639  libstdc++-v3/include/c/cuchar
! fc1a73954110ddf125e38ff51a57089a  libstdc++-v3/include/c/cwchar
! 4efd48773f6e8ad4773e54dc3cbb6bac  libstdc++-v3/include/c/cwctype
! e5b5bdccc2815f3267e111267e39b016  libstdc++-v3/include/c_compatibility/assert.h
! 99b685cb1a592724f5e8fc2a5a4e4751  libstdc++-v3/include/c_compatibility/complex.h
! d197fedbd5f799ee12cda48c134ba0b1  libstdc++-v3/include/c_compatibility/ctype.h
! 3020e8fdf2d791b3920bcc45a8780db9  libstdc++-v3/include/c_compatibility/errno.h
! 7b4b437b8b2ed6b3cbea8b170a70ced1  libstdc++-v3/include/c_compatibility/fenv.h
! e318cb8787c3331e8cb0c34450f8a67b  libstdc++-v3/include/c_compatibility/float.h
! 8b3f447d5672462770be96a803e5176d  libstdc++-v3/include/c_compatibility/inttypes.h
! 73be13f7d3ee850c677f85c03763c091  libstdc++-v3/include/c_compatibility/iso646.h
! d6a9983f2e702639cc764daed21ce749  libstdc++-v3/include/c_compatibility/limits.h
! d69ee5666bf05d5f616819e98bd338d2  libstdc++-v3/include/c_compatibility/locale.h
! a990cded20a6fb8dad866460b8c40922  libstdc++-v3/include/c_compatibility/math.h
! 09fa37a1accdb876179eee0c01ff791e  libstdc++-v3/include/c_compatibility/setjmp.h
! 5c9e19271f36b6925db08dda89551370  libstdc++-v3/include/c_compatibility/signal.h
! 80fc798516a43195d045438301c80d59  libstdc++-v3/include/c_compatibility/stdarg.h
! d9833ce64eb06173c41b1d061f75f4ee  libstdc++-v3/include/c_compatibility/stdbool.h
! 6bc9f5fdce0412bbd5a2b7196a51b5dd  libstdc++-v3/include/c_compatibility/stddef.h
! e27ee850642364e3c93882ec21b6bd9a  libstdc++-v3/include/c_compatibility/stdint.h
! f0a22d28ae70ac83038142747cc66504  libstdc++-v3/include/c_compatibility/stdio.h
! 0f5b773a303c24013fb112082e6d18a5  libstdc++-v3/include/c_compatibility/stdlib.h
! 5d1de6ef97a8769bda2562a92b64bbbf  libstdc++-v3/include/c_compatibility/string.h
! 43becd4bd5bc0592fac474c1e4ef4db0  libstdc++-v3/include/c_compatibility/tgmath.h
! f7ee4a99bedec3e3ada578d1c3bb1922  libstdc++-v3/include/c_compatibility/time.h
! efc875b05a446056ec6ad54333e46e73  libstdc++-v3/include/c_compatibility/uchar.h
! 470e782f9d7e1c028d1ec452844cdb85  libstdc++-v3/include/c_compatibility/wchar.h
! de615e8fe87c352a024f4e748554cc45  libstdc++-v3/include/c_compatibility/wctype.h
! b6cde66175354eaa0d2a3e34b0b8e37d  libstdc++-v3/include/c_global/cassert
! e6b814d83656748c24ca6c3bc56ecb62  libstdc++-v3/include/c_global/ccomplex
! b9ae7e30c55e034c52546e762f15837d  libstdc++-v3/include/c_global/cctype
! c23637eb3e55b3f86c5e85f5402312ca  libstdc++-v3/include/c_global/cerrno
! 30cbccd125005bbb4474b283e6a46470  libstdc++-v3/include/c_global/cfenv
! 55807a98bed8356f59d5bc440d445133  libstdc++-v3/include/c_global/cfloat
! 825ebe1c099d9e7d16d4dfe0aac6d77d  libstdc++-v3/include/c_global/cinttypes
! bea4736c30e19b7dbbb353d744ed95f8  libstdc++-v3/include/c_global/ciso646
! 05b0d3083d07e10954c5b39df656eaf7  libstdc++-v3/include/c_global/climits
! 6afe6dfb5f2274ccbf33ba43f6559ba4  libstdc++-v3/include/c_global/clocale
! 12cfb685fa59bae140922161835837f9  libstdc++-v3/include/c_global/cmath
! 741102d213f2c21d9b2d2130b2e6e761  libstdc++-v3/include/c_global/csetjmp
! 4bb7695c936055e976e354b1f402bc4a  libstdc++-v3/include/c_global/csignal
! 46a63be570cb38caa5e9a9dbbb602cc7  libstdc++-v3/include/c_global/cstdalign
! 74c8c88b10906374a040dbdbdff64367  libstdc++-v3/include/c_global/cstdarg
! 50d2074e121e5079532c038fbffec30e  libstdc++-v3/include/c_global/cstdbool
! 6265732c237dbce60877696f72fb210b  libstdc++-v3/include/c_global/cstddef
! 3495a000699aeacc73362a939388c5d3  libstdc++-v3/include/c_global/cstdint
! a7ce4ac37bb51deeb3861d4cb6c8f260  libstdc++-v3/include/c_global/cstdio
! 5c22b21848d5ef9504ded4ba9ac0f5b0  libstdc++-v3/include/c_global/cstdlib
! 07e98ff970d37552eda7fb819617f66d  libstdc++-v3/include/c_global/cstring
! ee7b4a9a804e645ca62cdd946c0c2e51  libstdc++-v3/include/c_global/ctgmath
! 57b099868e5b48fb4ad6e35fa82da878  libstdc++-v3/include/c_global/ctime
! 2a1de3f771e2899f8708ee307eaef032  libstdc++-v3/include/c_global/cuchar
! 747b477dace554af9c9a6aa93d790308  libstdc++-v3/include/c_global/cwchar
! 86bb01bf423d68a9192df921187ad040  libstdc++-v3/include/c_global/cwctype
! 87f6fe4679044e4ea440001f1f3157ee  libstdc++-v3/include/c_std/cassert
! 1c626c074f7a55d84a99407d2aa29bbc  libstdc++-v3/include/c_std/cctype
! 4f9946f3aa7c4f2cfc65539e9706076c  libstdc++-v3/include/c_std/cerrno
! 81c658b963dd1c12c8903126a266c1b6  libstdc++-v3/include/c_std/cfloat
! 22f67d7fe74c8b79c55202e8a4d60c06  libstdc++-v3/include/c_std/ciso646
! 1b970426335cfd9b38e01ceb56acbec4  libstdc++-v3/include/c_std/climits
! 2a79f6a5a523b42d5ef1a8a7ea078b08  libstdc++-v3/include/c_std/clocale
! f691742455e574c0473929114fbc5c79  libstdc++-v3/include/c_std/cmath
! 5d187f9d4d030bb1dd7b639ebbee9143  libstdc++-v3/include/c_std/csetjmp
! 502db2f7efd5220c17d8395a1de99c4d  libstdc++-v3/include/c_std/csignal
! c5df2a6650b19fcbc7ea8337497c6b8a  libstdc++-v3/include/c_std/cstdarg
! 4e432b63175c3c537fb94af2abfcb6d7  libstdc++-v3/include/c_std/cstddef
! 9b264a53cbcc760048683004267958c6  libstdc++-v3/include/c_std/cstdio
! ce7b58db427116da62e9a4c7ddff7207  libstdc++-v3/include/c_std/cstdlib
! c6fc62e7d12600e5c129d2d2ad9a2662  libstdc++-v3/include/c_std/cstring
! 88cf029a233c4314e1339e6289fac230  libstdc++-v3/include/c_std/ctime
! 758a598e2606e6a21f171ef4fdb4c72a  libstdc++-v3/include/c_std/cuchar
! bcddf9c045520bcb631559376dc42835  libstdc++-v3/include/c_std/cwchar
! 0efb884ff8a189f77fd542dfb2fc5bd4  libstdc++-v3/include/c_std/cwctype
! 963865eb5322b6ffdddcd071272feba0  libstdc++-v3/include/debug/assertions.h
! 1d6ef299bacc09a55667272276c35d6c  libstdc++-v3/include/debug/bitset
! 982c0103e1e5f86b0818efdfc5273c3c  libstdc++-v3/include/debug/debug.h
! a2bb5b96e30e1ec8adca3f4f2349c5f2  libstdc++-v3/include/debug/deque
! 292da4c038fc1dfe51b75788349b902b  libstdc++-v3/include/debug/formatter.h
! 1c0a8bb642d445b17e0b83f10080a080  libstdc++-v3/include/debug/forward_list
! b8d8c1f08472efae032f44026863678a  libstdc++-v3/include/debug/functions.h
! e0553720cdf0df02b776145b36a51a65  libstdc++-v3/include/debug/helper_functions.h
! dc02cfa95e6389a4e8ed53b52037efa1  libstdc++-v3/include/debug/list
! 78c2f071eb897f7ad6930768a63e681d  libstdc++-v3/include/debug/macros.h
! 52694538be445d5249d6d7f585cd45ce  libstdc++-v3/include/debug/map
! a860368b110d2e3a9b48548930534cea  libstdc++-v3/include/debug/map.h
! 3310eefcc964365c4995c10e87295cdd  libstdc++-v3/include/debug/multimap.h
! 0dded1f7e540e609d552b63a74ea43ae  libstdc++-v3/include/debug/multiset.h
! 8fc7f164cd47fa7cc795cd12a6fee97a  libstdc++-v3/include/debug/safe_base.h
! 7ab3483a2e0e07f1a655730909bba7c5  libstdc++-v3/include/debug/safe_container.h
! 964fd0767ce2a9bba6db6b479608ab98  libstdc++-v3/include/debug/safe_iterator.h
! c4aae7777a1ffacd1f63402616576d7c  libstdc++-v3/include/debug/safe_iterator.tcc
! b6b1edbd453c29daedb29dafb48d4ed6  libstdc++-v3/include/debug/safe_local_iterator.h
! b09b03b9dce9c9c1b2f2a7dd7536a6fb  libstdc++-v3/include/debug/safe_local_iterator.tcc
! 52876bad207210c63cbccff6760e4b8f  libstdc++-v3/include/debug/safe_sequence.h
! dee5de74a647471159287adfbac14498  libstdc++-v3/include/debug/safe_sequence.tcc
! 678091ae466c0fb9db85aedf2773166c  libstdc++-v3/include/debug/safe_unordered_base.h
! 2281122214d54628243d2fbbae5ebdd0  libstdc++-v3/include/debug/safe_unordered_container.h
! d8ae0f386b639951eabe29a57d2f68cb  libstdc++-v3/include/debug/safe_unordered_container.tcc
! f475c2504647d12ab0026b7c3f256f4d  libstdc++-v3/include/debug/set
! efd6533e84bfc436b900b80a7715e389  libstdc++-v3/include/debug/set.h
! bbaa39c68a8689f894b4d32d8a71a33e  libstdc++-v3/include/debug/stl_iterator.h
! 9338fa7bb61e6716eb79ad8ad9b3cc64  libstdc++-v3/include/debug/string
! fa95e8291a021fd8d54e739bfb36d8f4  libstdc++-v3/include/debug/unordered_map
! bbcb44f5d6a75be289854e78c50d6e0e  libstdc++-v3/include/debug/unordered_set
! c3d82bad900e0d196ae511bd4c0f3fec  libstdc++-v3/include/debug/vector
! 120f78076a2f681354fccdfa1c64f57f  libstdc++-v3/include/decimal/decimal
! 477587a4b4e34940758c5fbea090924c  libstdc++-v3/include/decimal/decimal.h
! a5dc946ed9ad5abaadf5484a8d94c35b  libstdc++-v3/include/experimental/algorithm
! fee23cd92a92d6bf2f6fdd3850d1ec1a  libstdc++-v3/include/experimental/any
! 51feabb5a9aff9c2650be847f563769d  libstdc++-v3/include/experimental/array
! 363feb942b9ed4fdcb8f065231501c85  libstdc++-v3/include/experimental/bits/fs_dir.h
! 1e6cf57adc1d2e1e2f6b3386c723c716  libstdc++-v3/include/experimental/bits/fs_fwd.h
! 14ed2c858fb9b3b202244270d22e8588  libstdc++-v3/include/experimental/bits/fs_ops.h
! 95bc1b2540801e93c5b61c05cbc51bea  libstdc++-v3/include/experimental/bits/fs_path.h
! f35b43a0d32627601d4bfe3ac24e84ff  libstdc++-v3/include/experimental/bits/lfts_config.h
! 91cf8a8dfd486460546ef6e54009b843  libstdc++-v3/include/experimental/bits/net.h
! 19f9985a717ce911687aa7087349693d  libstdc++-v3/include/experimental/bits/numeric_traits.h
! 526bcbcdfb0acc96580ff835ceb38948  libstdc++-v3/include/experimental/bits/shared_ptr.h
! 148721a68e956207907656f45be41f04  libstdc++-v3/include/experimental/bits/simd.h
! 77017778ba2d0d32457cec429d6d6977  libstdc++-v3/include/experimental/bits/simd_builtin.h
! 24126236d714fbf83db8ddc38457b246  libstdc++-v3/include/experimental/bits/simd_converter.h
! 9a523438f206d342e3a250b92a4f608d  libstdc++-v3/include/experimental/bits/simd_detail.h
! eec02f44fcb5eba6ba668e810c146d8d  libstdc++-v3/include/experimental/bits/simd_fixed_size.h
! 847194b3fe1db090040fca784135ea40  libstdc++-v3/include/experimental/bits/simd_math.h
! 0bcac8d453d8e154e6ccb741b4519051  libstdc++-v3/include/experimental/bits/simd_neon.h
! 7b753c6c4038aa02447cf0318cdeb6ec  libstdc++-v3/include/experimental/bits/simd_ppc.h
! 5c1c0064d9b5bbd62fff9f3d0f78f5b6  libstdc++-v3/include/experimental/bits/simd_scalar.h
! b4b13543518a05fcce27741e6abddd5b  libstdc++-v3/include/experimental/bits/simd_x86.h
! a7070d3b5675c71011b2b53a091f1276  libstdc++-v3/include/experimental/bits/simd_x86_conversions.h
! 3a18bdda008c9ee7d00a7fe3df2978f7  libstdc++-v3/include/experimental/bits/string_view.tcc
! 854d9b5964314dea05a89721173b4da0  libstdc++-v3/include/experimental/buffer
! fcf9b359d9c5736dbd49ff2a3fde7951  libstdc++-v3/include/experimental/chrono
! 3c43d79f9cbc3238cf48255689f62349  libstdc++-v3/include/experimental/deque
! baeaf7b9b85bb476117d286653f6d6dd  libstdc++-v3/include/experimental/executor
! 7b2663037e13929b806bf614936012cd  libstdc++-v3/include/experimental/filesystem
! de12aef18178267fe21aaf85aa6b5d98  libstdc++-v3/include/experimental/forward_list
! 5dcfda8a1ea0023fdf730226a958f492  libstdc++-v3/include/experimental/functional
! 05cdfc6626af376f09cc12bee4b364af  libstdc++-v3/include/experimental/internet
! 6f54560b54e9b5831aab7f9ebb1c74f5  libstdc++-v3/include/experimental/io_context
! 4691bb9a4cbb032dd0b0bd7a07fa1867  libstdc++-v3/include/experimental/iterator
! 760aa8f9adda752006a29223129fb0e3  libstdc++-v3/include/experimental/list
! 4e6e0455f4851cba8c386f87fa7cffa5  libstdc++-v3/include/experimental/map
! 1b3a4936b1c0446679cab0c44bca7868  libstdc++-v3/include/experimental/memory
! 8d496ecdcd31004e5178103976818db7  libstdc++-v3/include/experimental/memory_resource
! 00e11abd45c1991e940e3cc0ce0ebe37  libstdc++-v3/include/experimental/net
! c37c4ab64b91d429eb61d78fdc4ae75e  libstdc++-v3/include/experimental/netfwd
! e9319e5893708aa04f34ad9d9a5782d8  libstdc++-v3/include/experimental/numeric
! a0cb31346100ef6e31c5340c851b1acd  libstdc++-v3/include/experimental/optional
! a2044b6c4110d7b3dd17b2369a4b3c27  libstdc++-v3/include/experimental/propagate_const
! b9a97a912d958096564644bd8f9c49e6  libstdc++-v3/include/experimental/random
! bcc2870c86a9e3a62d9cc64e34919516  libstdc++-v3/include/experimental/ratio
! 7e0f9fbf12108027afd2e6248d9f5bda  libstdc++-v3/include/experimental/regex
! 645d538d0ba30fecafec0f1cd4f5b3f6  libstdc++-v3/include/experimental/set
! 16e06077a7e896dcb7f3de95a869e983  libstdc++-v3/include/experimental/simd
! 218082921b39fabe9307bd0f5d61021f  libstdc++-v3/include/experimental/socket
! 62e4341339e0537b4c003fc7af143bfb  libstdc++-v3/include/experimental/source_location
! b500d85d056b59344bda216ea50a8dc9  libstdc++-v3/include/experimental/string
! f52632f13e686838f3781d23288a2d7d  libstdc++-v3/include/experimental/string_view
! 97920d684395dfd6b6412ea10b98750d  libstdc++-v3/include/experimental/system_error
! 7f2b47081abbff883bb7b5742683f4fc  libstdc++-v3/include/experimental/timer
! 8f29cc85dfc3c0304ff4e631e71cc8b2  libstdc++-v3/include/experimental/tuple
! 23be28fd63bfcefd1bddaede10b4f06c  libstdc++-v3/include/experimental/type_traits
! 5b6d031ea5e1e121f67d540682e7a32d  libstdc++-v3/include/experimental/unordered_map
! 838f25578044afb07fa073b5b64a49c5  libstdc++-v3/include/experimental/unordered_set
! 8df151efcb383fabc32af1d11c823c63  libstdc++-v3/include/experimental/utility
! c77947a8e5d56e9ec5bd632f54d9c2b7  libstdc++-v3/include/experimental/vector
! 40ff818bc651dcc4ddb2d6a89872b302  libstdc++-v3/include/ext/algorithm
! 355369213d3139cc065c981d8d38bc1a  libstdc++-v3/include/ext/aligned_buffer.h
! 2281be427d104b4f13880f90209a00bd  libstdc++-v3/include/ext/alloc_traits.h
! de910203c9add5dfa31e3da6958d6f0c  libstdc++-v3/include/ext/atomicity.h
! 5d0fb71198c9b9544ebbd9b1a661ca60  libstdc++-v3/include/ext/bitmap_allocator.h
! 19729e251044ebdf0b4f215af2ae3c3c  libstdc++-v3/include/ext/cast.h
! 79e3628c5c7e897b2b87644e7849b35d  libstdc++-v3/include/ext/cmath
! ea80a2ca9ca788adc2676ab1a43a771a  libstdc++-v3/include/ext/codecvt_specializations.h
! 79a69441ec59c5bcbfe76b4d54f72634  libstdc++-v3/include/ext/concurrence.h
! 2f8c74a3bcc7692b9ec445fb64c28b30  libstdc++-v3/include/ext/debug_allocator.h
! 4959107d48788e9bc120ece3dfd2705c  libstdc++-v3/include/ext/enc_filebuf.h
! da4ae9662e82020f9017f33b26382857  libstdc++-v3/include/ext/extptr_allocator.h
! eec31fad47ebb7d363bbebf67e556a13  libstdc++-v3/include/ext/functional
! 7a54c13e6e6f460d94b0b2ee2618eaf5  libstdc++-v3/include/ext/iterator
! 00507cbc7da4b33f3b64bb0232972c25  libstdc++-v3/include/ext/malloc_allocator.h
! ad91354cb0b33f044a763a1341d79b13  libstdc++-v3/include/ext/memory
! 23f8158e09c74b18812664af55956d17  libstdc++-v3/include/ext/mt_allocator.h
! 172c04ce87bb7a6543b6ac80e28611aa  libstdc++-v3/include/ext/new_allocator.h
! 1c72ce3ba84613550222ba3120839531  libstdc++-v3/include/ext/numeric
! 37fc3959e3cfa768c4b798e492e8d54a  libstdc++-v3/include/ext/numeric_traits.h
! ad479234abe388c6a0a929fbbd8eb19b  libstdc++-v3/include/ext/pb_ds/assoc_container.hpp
! b5ecdc803461ee4bd7273076fd9d8710  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
! 14ef728b4811e55adefde906c534f2f3  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
! b16f66629fa0c166116e554766c52b51  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
! e337b44c280fe8d18a65136118d04fb5  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
! f28f15957d7d8ad14ce8a9c8b5ce685e  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
! 7dfc82080f6c1aecd9dc8fe5f736dcbf  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
! eb4c4cd3078034eb6dcb1567f5c4af3c  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
! 98d49268e822df8ccadc48dfea4e41a1  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
! 61e2b9d5c6478b135317ee2fe8fe97b3  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
! 1be9ec9e1b02bd173ad99ec2d88fd749  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
! 3a47526916910c5f256cf654f523ce73  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
! 22696a6fd519c8c6eaf62edc9bbaa20b  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
! 3cda348df104dfc550d07d7da5285a1c  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
! a39069572c4d9bfb64fc739acc507353  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
! a4889cdd4db930162742e4bcbbc12a66  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp
! 1f882b8763b2e8a10a1ac5b544e679a5  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
! efe026bf33b8bcc16ffa2d6ef293c074  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
! a7195eb92564ab1cc8ef9337c1e9f4d0  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
! f23e01c89658de59fe28dd1656bb2804  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
! 87c3b318b6ff64cef40e48bc75946190  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
! 97359a698805169cb6b2d599e33345c6  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
! f3b94702c8e63487ea87cc139bbb3aae  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
! 85ba51a85fe93868f10a468c5fefd62e  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
! b4bea519772cb6effb02279575c4bbb0  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
! f163b92c68f0c6c35b14176e43bfc6d5  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
! 2a6c4d0e5828a47f212c032d921a7637  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
! e86724a15bbe5fd3f34c261b88bc3ec7  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp
! 03a4630c32bbd764013b3c51ba3a7224  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
! f8c5e0833baba8f9ef5ca02c8b191a71  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
! 500d8ab23378e496713d81d68edc04b4  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
! a650c77a0d2abc1cf8962ab45f0b1a58  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
! 9d771e6206ba47e43f4d51ba736f050e  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
! 644efde23a617315dba8b4bf6abaee52  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
! ad12a07847645e8af0c09908d92b98c3  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
! bfe820f1bbdf855fb6a50f179a5b5848  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
! 63683f14d851ce5daec56bb6594f6ca7  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
! cd0457a063efbf72878c6709ce495d75  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
! e47260ac135a89a3eae5d03090f176d0  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
! 6fd42aa2f8bcc97e597c30ca31646ddb  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
! d34a3f5c27fa8b5350930f76daf2b74e  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
! db79e79919dc4835979a6d522ae53d11  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
! 1d082595830bf228d156038b15d3c1ad  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/branch_policy.hpp
! a6b7b529f57d96361a4b1d9ca86b928c  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp
! 9b811e1c9d1d5518b44cb07697841b78  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/traits.hpp
! 8a383c8c8df0b2ff476b034a1d06433c  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
! 49f56310317bea5ddf8f6b3f41853c62  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
! 9983e113f6bb2a0aef466a486527e096  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
! ad6e771cd19bbf58daf086611791f4c3  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
! b58e119b4acfc8e2d3fce604df2b1196  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
! e85dd1d87f7203e687653cacc604a492  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
! b016c49ed2175bfa1598f7974f72dd07  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
! 587d30c32258c1838637bf537228edf3  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
! e2282c3fa14b574b16617ebca381f62a  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
! 37adfc3725868dc50877034c9394d2a6  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
! 5115f00d96c2423b11fd1db9fb975819  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
! b6c3f06eb4275cc88d77051104228bee  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
! b2bce54090e77f93371692301f2c8a30  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
! fbcd39f7a84f5d4d3559007606b8c081  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
! fa83632b16549584d077ff470fd128bc  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
! 042c52b8a6595389c2c75f1cdce087d7  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
! 978ca57631acd616139f06b690217381  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
! 6c7d95406459ae58720e075608727afa  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
! 2e57b352d128fc7e58fc8f8455276ff8  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
! f45b9be2d66e52a6439d519a2a7a0dd0  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
! a9cc905357cd08b58355e9015c7eb8c7  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
! 613874992423aa16b5f88a37d187c53b  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
! 90c81870268318035d7d00ea6a2a64b3  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
! 8997dec36a09747842f08335f0728b81  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
! c2016b48e5d5d47ef522e84b2870d534  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
! f4f1fd19731f36d288ec567399b26fd5  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
! 905411b0d78f8d44ae988ad785f87873  libstdc++-v3/include/ext/pb_ds/detail/cond_dealtor.hpp
! a46da4525215adcba236dce075b09522  libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp
! 52f9dc9b5cf832e00aacd8c967792ecd  libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp
! 154368cbaac4775713ba605f2174b764  libstdc++-v3/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
! 5caa92eb20e6157c21c9b34a823cec0b  libstdc++-v3/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
! dd418f7a1d5856a13131f6990500cbd6  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
! e8af3b41a57c59eea71a8b30ef94883a  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
! 4bf0ef7f56976bcffa8309a03cb15eab  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
! c195dd6572bcdbd2d99209170342696a  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
! 9c932aecd36cdf5dea9b9fa7800d8621  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
! f6f0dc9868c64254333e61c5df4953a5  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
! 70d5307701b5922ea7c6927fec35eb9d  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
! 83670269fc2f1f3d9f7cba87014d9b68  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
! d456903993c10e9e12efba8d469018f7  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
! 93ad975c4e54e0daf71e30d92e1d7622  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
! 716ae1bb634edaeff82b7d998477a56d  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
! 62a572dc018281a0c403bae7cd266417  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
! d1f41635aa2761314a2e65a0a4995efd  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
! 3df1629c50017fad41567d9db6e62439  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
! 63643f80cc5d5d62926c3b4b232c5a93  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
! d6c81cfaf5b285726b2dba6b089a8f92  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
! 2dd7d578518baa4a2fd97ce252522fca  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
! 84c7a23aeb26fa542f9c0a3c6664da48  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
! 3fc7fd54b44fb30d114fec063d7ce93f  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
! a6f15a08dfd80581e058c3ff85c88195  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
! fb1c8d45c007f2498889c031a74f7559  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
! 8c58c8aec59d002c441c75d23a685b0c  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
! 7a6ed15e6d022682a4ba54c68610ef05  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
! e18b9ce88b8f3395b3824e0422a2777f  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
! 7eb1e861547c67b442c258418a0bf33d  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
! 31cea736e34406f28d87dcb83197bbd0  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
! d2f1e5a43ec68fd2bac4e1d349675b77  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
! b5c86f882f2925bceeee071250ffe170  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
! 1aa4027556733398c871b412fcd9cce4  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
! ea6cf192c0b780db8186cbf0f28b1b51  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
! 9b9d9eac26f7349f0cccefe419ff1d8f  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
! de1974ff19320bd1c0a2377023e635fe  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
! 46c50940b6eaeec14d53dcc22eda4f7b  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
! e5bdf8e625d00a9ab55f6096ab216eec  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
! 0e2ede302f61466effff69a3f07dc562  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
! d5ba5c7725a3efba9e424d0c7950004f  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
! babc1ee343f4c5c926141c544781e140  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
! e6a7865ef6f8e0a6be1b10920211a238  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
! 2d4a0e327cb73c5df9bec53179852fec  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
! ef34798d52847f04ba6f9af3bb8ad93d  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
! 3618e33fd7b127e0f56e472979be6275  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
! b2cd562906d7c9ca4567ee9289ead3a5  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
! bbff46dfeb3a8bb47aae1128f704f746  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
! f5c6e1f9b97225dc3f2b65f05bb9b30a  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
! 7e3dd766f8add31464a329c780cac3ad  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
! 8c955c8e58b74b0a73a053d862bbaa65  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp
! 0f06806e1ac156a6f045656db9f6c91f  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
! fc30da69640d46bc4145036d160228c8  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
! a3a2b59d0a72f09a9c9beca7a2ffb56a  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
! 1fa79bf1952526277e86ac7bda0cb22e  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
! 687face4d02ddaecae828c156af38ebf  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
! 5f7e53c94cfb88161694a38139db7ad5  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
! f56315318cdccad8633c73cc0b3c4b52  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
! 0e4d64b63ed79aed6c5008b0372f391d  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
! 40191f85f2dd3f579f8a4b058423b9a9  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
! 1b52b3bcc8f4f82955f5e47d50d5a5f8  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
! 77ae2491855cc65c73767d5546180266  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
! 7facbc3c4bfcc59cc17c259d0313ec6e  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
! 7540f6e7d22a339f64956a24f91878c5  libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp
! 5839f7563d92470cb8425c61688ca45f  libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
! cc95cec3bd74e97bf6fc1a31eedd0ef5  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
! c5ff704d2a89b3896ebc1dcd15769fc6  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
! c224f2da5636ca9dd2311750bfe495cd  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
! ffb6b39fb1fbcbc7a6b1fa8478218e89  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
! 1090f8b5a336597e9431675b49a1df61  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
! e39cc28020439e7db1c4de04b58adca5  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
! 39b024da4736ad5c91ead1772e056187  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
! 40879b245c4ff0ed5407aa6f2095b947  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
! 34f78053d24f67676882ef2c401ef374  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
! c42c03d05d413485b304d81217869931  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
! bb9d6a8cf8e8a5a369287f9b5636c06b  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp
! 6ed85a6c92e52597ff7292ae3d8da74f  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
! b0cddafd0cc77b3ed29fd0481f14d903  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
! b89fae38c99463a668570f5d538e78dc  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
! 09a02445aed4609acbd632d4712b210c  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
! bc66e3df0ffa8a82ab47d5339a95a266  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
! d49aa89a7b0af415713635a53fbdda07  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
! 9e43c285d67ce76b3f04bd139da60aa9  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
! d2f71162a9e727afd4e6a61ab00c28bb  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
! 5a4800b38cc0bd87ea79403cd5348885  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
! f1e7e7791b5ce0e929240b858c61a64d  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
! e3e31f4354b191e4b72248e62e345e4e  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
! dcbfa5f76c91aa14f8a9beb98ae9dd1a  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
! 98c8ebb5dd52e44533d8302bea1feb42  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
! 77273bcb88457f87666084401e3df645  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
! d98b971e335323c7ba3b89e662d55f3f  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
! 97456b7f8a293f095b690f40343d0a8e  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
! f0197460faf1d545dbadcc1d97b6d40b  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
! cbeb9bb9337e3327a61bb66328c63a4f  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
! ccf57b5c0a119ffcfd7799300f7455c7  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
! e70d7b55da93554bf057ae727128070e  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
! 6f45c2e310e6fe19a8f0911d89c60211  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp
! ba5c24cea18c5b89ce87551d8452dddd  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
! 60682ff94a1f606c13c900e78d1c5a83  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/traits.hpp
! c00515cb269db36761ac36b997d65e83  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
! 8906cc3074726c46cd2674aa6fa7f531  libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
! eb8f68e26e32ce84ed9422874482e2ec  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
! 86f55b90ff3d84969b73ae77ee81f35d  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
! 483ef73d9c4714f6a322e608dba38961  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
! 66901e7cfdc3d36ee33c473406b0c772  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
! 71c1a013e08ecaa0e28278ab6c411dfd  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
! ae42f784dfa9938423571156f71c06c7  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
! 540f31f22b4e8ca92b023d3bab7020ff  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/node.hpp
! 2910fa5c5065039e64d77832ded189c8  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
! aa5a3b4beb9153bdcdb01c251e9fdbc7  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
! e10ec4618bcbb663a6bffcbb54466b59  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp
! 5024066b0bd8170ff18d70a9215615f0  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
! b08f0923e18de31ad8296e0127dc374c  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
! 4defb7820f18b266cbe99653cd166395  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
! dd505d5812cda80b82e01c049a979352  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
! af3330f4d02ece3f64f9e35345ba94a0  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
! 63b8b29280f96673ed65d4282d6ca4f0  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
! 9b9cb0630bce76ba44c054f508fbdb24  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
! a4e4231d7a65071737e1df96ac1d15c7  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
! c0a26518209de29632141c60101da375  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
! 95c10ad2afed06d0a291a48d6ab34215  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
! 626963fc919098d83698ed2bc71b0444  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
! e89ff88ff4b88ed52f1feb6d12c713f8  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
! 06042821edb3bdec89fd371e90023a82  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
! 8cb7309ea65bf25b170f111c55d6ea74  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
! 079799213d682172abfd1b11167087e9  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
! 6af7158d8d2389522146112e0bf8fb71  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
! 1a9c043cceac2cff9d65257da77e35dd  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
! 56141571787e57a9a075a62fda4acc4f  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
! 53c527a1ae3d6e3771aba50608ae2174  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
! 16c333240b5a8b0b29fca03cf159db06  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
! 9e6686cf0907683723906647ed35df8b  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
! 2e7e1edcb05aec9a12e521b3ce65fddf  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
! c0f32eff8a5a1b3deb136786b8cb9c0e  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
! 34ce93417507c52c6e4722965861aa81  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/node.hpp
! b10a5a861fa1451f118c355dee4fc5c6  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
! 98eac02334429cdf347f54b8ee75bb8a  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
! ec3ba32507633b0e5a51479647d6c0ea  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
! bbfd247fa78aef100dd725d4a127d091  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/traits.hpp
! 0bdd0980e5c4196de6cb70135aa18e63  libstdc++-v3/include/ext/pb_ds/detail/standard_policies.hpp
! 2554a8ee2cb766cf77112139b7279848  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
! 0711cf485567703cc4fd9279680358f6  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
! ac4b4f609286fc9b7b676d98a7755210  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
! e8d0884e3afdf43cf1ce648bb9682666  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
! 9c1b3b7dcde8f0cfc5939723b0c424aa  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
! f16b7ba04e16eb197ec47ee2c9e0235d  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
! 257b859537d6c4cb1b64967d535566d2  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
! e3ab0b81e1c20e46f60bd506d75e458b  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
! aefdd467af8f518e1695b8e35a91a5d3  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
! ed5af815ac13fe93c54c946bd5366df5  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
! d1281a35b943e4ff26dace1527161023  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
! 5683a2cd5ace905ff3dda1b400e63543  libstdc++-v3/include/ext/pb_ds/detail/tree_trace_base.hpp
! 74c7e2b543e8e5c23138daacfdf5ce12  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
! 867d24c28c8fe7fdb6f144e7c3312467  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
! 315ee32b0668dd1868b5c2ce5712268e  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
! 36496659b342d867f5de921b15ca3086  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp
! 32dc3c6cb956a32364f6304b6f412a3c  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
! aab6daaaf9fdc34a5858c367e2c9b291  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
! aabac38142cab3c97fc3325105675878  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp
! 9318ccfd33e6b92d79fc761a35318762  libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp
! 76116b516204d21c4042fcfcc9f147b0  libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp
! bcc699b9bb4d0c9782bf650469a0d993  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
! 23ac5556f9d0cc47617203489eeb08b8  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp
! 3edd992fc75b3f228a59d6df55903f79  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp
! af014eba8ac7ae6e4c3cdef49136c435  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
! a0d135e8273cc5a4f78db8db8cc4e4e3  libstdc++-v3/include/ext/pb_ds/exception.hpp
! a90c745471ac45bf8b4bc63a10cf8ccf  libstdc++-v3/include/ext/pb_ds/hash_policy.hpp
! eb1817a84574e0b31d4d1fdf19b571b2  libstdc++-v3/include/ext/pb_ds/list_update_policy.hpp
! 93ca147405801205aae762414adb0609  libstdc++-v3/include/ext/pb_ds/priority_queue.hpp
! 06cb3e97c42cde03e07d5b7440926538  libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp
! f58fcc66bc26177e4d310e7c16cb90a8  libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
! 0f6a593109978da483559b11aceab61a  libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
! c661917a06b6a7d48a5a39494e9b7526  libstdc++-v3/include/ext/pod_char_traits.h
! 734752624edaf9246873a38790ff55db  libstdc++-v3/include/ext/pointer.h
! befdb510ad6834ccd0df7a4136e3a1f8  libstdc++-v3/include/ext/pool_allocator.h
! ce69f1e624269a8721e5a954efb5dc04  libstdc++-v3/include/ext/random
! 6894d46827219ab4f87c99fa55747dbd  libstdc++-v3/include/ext/random.tcc
! 1f39dd2e3db99a24b96518fe96cce49d  libstdc++-v3/include/ext/rb_tree
! 887a8a6b63bed291b3c470540fcaaa4b  libstdc++-v3/include/ext/rc_string_base.h
! 5213308ce396b386306fb29121140e7f  libstdc++-v3/include/ext/rope
! e4965077c58739b0417036394f07e39a  libstdc++-v3/include/ext/ropeimpl.h
! 99f5838816c6597df0e8558052f3a18b  libstdc++-v3/include/ext/slist
! e836b76f864ee40c6389f9f8a8590618  libstdc++-v3/include/ext/sso_string_base.h
! 03d4a2f17412d2df48b882b4e6dc2bcf  libstdc++-v3/include/ext/stdio_filebuf.h
! 31f63659be962213f41ca2361f8bc160  libstdc++-v3/include/ext/stdio_sync_filebuf.h
! ed7cad99ffe69538e5e6374fdde82f0f  libstdc++-v3/include/ext/string_conversions.h
! 4b2dca5f3f2de252adce3178b83a6c2d  libstdc++-v3/include/ext/throw_allocator.h
! 0b81f2152afb8342fe6466bcd7e964b2  libstdc++-v3/include/ext/type_traits.h
! 0c390cedd6d94b1522b17eb2daa34761  libstdc++-v3/include/ext/typelist.h
! a811c9fa07a8faa1f6de79e3cbb53ca4  libstdc++-v3/include/ext/vstring.h
! 78f99f23aa66db49d819b5d885de9431  libstdc++-v3/include/ext/vstring.tcc
! 92be499e5ce4a695bbff28406c7dbe1c  libstdc++-v3/include/ext/vstring_fwd.h
! 7926d142ee701043033d71612b8d2b40  libstdc++-v3/include/ext/vstring_util.h
! ccfe1ed0000536abf3a8da7a174017ad  libstdc++-v3/include/parallel/algo.h
! a3c968805d46e0b714696bc084c567c7  libstdc++-v3/include/parallel/algobase.h
! 74afd468ebb611ef3f46fcf13f8854af  libstdc++-v3/include/parallel/algorithm
! 26da122731388989750923bdd7196397  libstdc++-v3/include/parallel/algorithmfwd.h
! a17e92715be9355a3296ee0bfc0f8478  libstdc++-v3/include/parallel/balanced_quicksort.h
! c3ee8ce07a4ef3aef7e0dce64bc20d78  libstdc++-v3/include/parallel/base.h
! e487b1595ea07aec93caecaec43ed7da  libstdc++-v3/include/parallel/basic_iterator.h
! 5a113b075c415fdeb401b174757174ed  libstdc++-v3/include/parallel/checkers.h
! 5154327fecd36d32175075b4a256e11f  libstdc++-v3/include/parallel/compatibility.h
! c1efa3bb4b9c43de34eaa03f3fc39600  libstdc++-v3/include/parallel/compiletime_settings.h
! 410c96e00ac37ae9b3d1ad89df0dc80d  libstdc++-v3/include/parallel/equally_split.h
! dcc3f51d18bcf52ce7fbd302bc073cb7  libstdc++-v3/include/parallel/features.h
! c6e5524d06a3e93b9941e1add43c4cf2  libstdc++-v3/include/parallel/find.h
! 5c55fd0035f187d9fb3350c108a14450  libstdc++-v3/include/parallel/find_selectors.h
! fd82021161a7f521c9a0d3f6b7527d20  libstdc++-v3/include/parallel/for_each.h
! d071430d9b32db9584db227a0f747568  libstdc++-v3/include/parallel/for_each_selectors.h
! d154c2b598a08a9fe112fa473a778c9f  libstdc++-v3/include/parallel/iterator.h
! 4d381de7b31693c5fe2971235645229f  libstdc++-v3/include/parallel/list_partition.h
! d71f42da4eac530606f3910ee06b5da0  libstdc++-v3/include/parallel/losertree.h
! c35d6366cc38c17b62ad654aba47e4aa  libstdc++-v3/include/parallel/merge.h
! de9876f31845406c5bdaa090a1548051  libstdc++-v3/include/parallel/multiseq_selection.h
! 1d50f81ba1c9ece1dd12b7d44c6c53bd  libstdc++-v3/include/parallel/multiway_merge.h
! b6d54bf377b7afe92dfaf18ea289ecbe  libstdc++-v3/include/parallel/multiway_mergesort.h
! 272ba94a9512e470757e7119bfb9de9c  libstdc++-v3/include/parallel/numeric
! c0301f1a92b46d0a5f1c5f2e26ebc3dd  libstdc++-v3/include/parallel/numericfwd.h
! dbc06437a8aa29ebb32aa0b94cb1692f  libstdc++-v3/include/parallel/omp_loop.h
! 5dba1d5ecd7f23c8b74b61d300a31ee0  libstdc++-v3/include/parallel/omp_loop_static.h
! 021125ee59dc0f8a6709190f27a3b22d  libstdc++-v3/include/parallel/par_loop.h
! 5bcc58c2e262c9090c76263f91aa3e93  libstdc++-v3/include/parallel/parallel.h
! 774be5fa874366606944d7c3dcd94634  libstdc++-v3/include/parallel/partial_sum.h
! 7fe2d6c267507a30f30881b0a88f096a  libstdc++-v3/include/parallel/partition.h
! da0e9b4ea2fc6b53edff7253e2990f43  libstdc++-v3/include/parallel/queue.h
! 0baa9352fa5a061197fc42855c923d63  libstdc++-v3/include/parallel/quicksort.h
! 30f38a23c3aa9ee3c1926876bd0b7010  libstdc++-v3/include/parallel/random_number.h
! c9119bbdf284b8613164f64c330985de  libstdc++-v3/include/parallel/random_shuffle.h
! 16c2d7ceab9a93f58e7021db91be45a1  libstdc++-v3/include/parallel/search.h
! 3a19fe2f587c29163aa29142ac8c087d  libstdc++-v3/include/parallel/set_operations.h
! a0fbeae3ab958dc07d52fc40d6d129ec  libstdc++-v3/include/parallel/settings.h
! 353839eadc4ee268a845fa67ed641771  libstdc++-v3/include/parallel/sort.h
! 73e825077f0fa7d3bfb4cb962a6738e9  libstdc++-v3/include/parallel/tags.h
! 839b9e9924fdf46ae1cde7b763a969ba  libstdc++-v3/include/parallel/types.h
! 12146939fe237593b7b2cf5cbf5440b6  libstdc++-v3/include/parallel/unique_copy.h
! 55e88c33fc0ec1760e6a4409165d4bff  libstdc++-v3/include/parallel/workstealing.h
! 7c9a21563d39c8c0dd7895c83362c3bf  libstdc++-v3/include/precompiled/extc++.h
! f0dba626812ae0a0aea4c1f9bcb71628  libstdc++-v3/include/precompiled/stdc++.h
! 5ce82218fac10318f47135f243d29b7f  libstdc++-v3/include/precompiled/stdtr1c++.h
  75cfb36aeb3ed8672bb4e2957272203c  libstdc++-v3/include/pstl/LICENSE.txt
  12b7134f312d65f84a117c18a456d271  libstdc++-v3/include/pstl/algorithm_fwd.h
! 74a0358aaa3f639ff58b225e142f615b  libstdc++-v3/include/pstl/algorithm_impl.h
  f6334ffc99f69354798bfc8024dc39f0  libstdc++-v3/include/pstl/execution_defs.h
! 69ed2403525edbee720eaac531dfa979  libstdc++-v3/include/pstl/execution_impl.h
  f7c70190a8af4b3ee9cf149465acf15d  libstdc++-v3/include/pstl/glue_algorithm_defs.h
! afd65b5eade8cb9bde229048ab072fad  libstdc++-v3/include/pstl/glue_algorithm_impl.h
  dd6e851bc473b9ff23e81df89abe4fc7  libstdc++-v3/include/pstl/glue_execution_defs.h
  0b0a3983fbed012140824669c804e50a  libstdc++-v3/include/pstl/glue_memory_defs.h
! e5017e0d8d380d892163a4a110331fb0  libstdc++-v3/include/pstl/glue_memory_impl.h
  13bca58c5aa152304554b44e5ce89845  libstdc++-v3/include/pstl/glue_numeric_defs.h
! 95509c3eea99d2f277912479e94c6449  libstdc++-v3/include/pstl/glue_numeric_impl.h
! d654c6a3cf5ee1bab1e7bc476cbb7f37  libstdc++-v3/include/pstl/memory_impl.h
  b692aa95f9f120acbe330c2893c3ce6e  libstdc++-v3/include/pstl/numeric_fwd.h
! 5ce6f567dcefec1acb4954df2ff6e4e3  libstdc++-v3/include/pstl/numeric_impl.h
! f0154f75dafee0c95cfc13f091939f93  libstdc++-v3/include/pstl/parallel_backend.h
! e972bfc42cfac92bfde04a35e915514e  libstdc++-v3/include/pstl/parallel_backend_serial.h
! 063d0a82ae5aba59786edcabc4932e96  libstdc++-v3/include/pstl/parallel_backend_tbb.h
! e128e525f970f3948feec2f4750919a8  libstdc++-v3/include/pstl/parallel_backend_utils.h
  d3d2812c60e828c1e822801f148c7630  libstdc++-v3/include/pstl/parallel_impl.h
! 64e9a3bc96d1e3015387cb95106544cf  libstdc++-v3/include/pstl/pstl_config.h
! b156f0d597a2edae1a06e54aba071e41  libstdc++-v3/include/pstl/unseq_backend_simd.h
  248e4a4c932ee32246a6216c3b58a482  libstdc++-v3/include/pstl/utils.h
! 6f7d40cef8f663c474dbafbd94db6d41  libstdc++-v3/include/std/algorithm
! 3e15a0ae23f4c6bdf28b4ff9bc881fe4  libstdc++-v3/include/std/any
! 1c0c57ef53ca4293de32b58ded42452f  libstdc++-v3/include/std/array
! 3616eb318b793fb7a6f2cf2269d7aa88  libstdc++-v3/include/std/atomic
! 1e61c24b851f3a5d32e6269b09566a6b  libstdc++-v3/include/std/barrier
! 7bb917bb7b34d5cf900805769b20fbd5  libstdc++-v3/include/std/bit
! 92df508c8bd5ee1e5201893372265093  libstdc++-v3/include/std/bitset
! 6bbb74325237388e502bf6c8d45a11be  libstdc++-v3/include/std/charconv
! 3d8e8c2eaed95f06df8e4717dbba1091  libstdc++-v3/include/std/chrono
! 9fc8010f8954d7f9d9b7b73480068af4  libstdc++-v3/include/std/codecvt
! 34ecc2d19af4343e2194a05671920bcf  libstdc++-v3/include/std/complex
! d33ca217751ca65132a5414655ed7688  libstdc++-v3/include/std/concepts
! fb6345dccc50a327805158467bdd0578  libstdc++-v3/include/std/condition_variable
! 0f8d495b0973573de96359f543a4b357  libstdc++-v3/include/std/coroutine
! 8b2773ff4157b0afe801622dc6da60ad  libstdc++-v3/include/std/deque
! 6f595687b79057f213583411ceb87649  libstdc++-v3/include/std/execution
! a237fb5e78eed942187e2c31d09781cd  libstdc++-v3/include/std/filesystem
! f5cdaa349c402ad3dc30fafc021795ed  libstdc++-v3/include/std/forward_list
! bb00f2ca62b1de81f535a88e31c1f5de  libstdc++-v3/include/std/fstream
! 58a2fdd72fd79ee358a1e9503125bf81  libstdc++-v3/include/std/functional
! 9f34d99703388d45aab855bc2cdea413  libstdc++-v3/include/std/future
! 845b6c7d80f2571b48679fa2d1782e3c  libstdc++-v3/include/std/iomanip
! 7f2ddbbe088dd66d76a348a256dba943  libstdc++-v3/include/std/ios
! 3c26a7aac28e06bf5c15f34547dccfe2  libstdc++-v3/include/std/iosfwd
! cc9ef3d2217fc8c34ac467dc84040a1a  libstdc++-v3/include/std/iostream
! f676bd468b66732edecdbdc6c8727497  libstdc++-v3/include/std/istream
! 18a3b1062d8afaac67497cf9e22a5001  libstdc++-v3/include/std/iterator
! 02e04305d111ee17f9c47d5be14bfde0  libstdc++-v3/include/std/latch
! 5db2105ed53cebe7e72b5aeade698f93  libstdc++-v3/include/std/limits
! 16c217a27a73a7f4aeeb27168b011a69  libstdc++-v3/include/std/list
! fdca44bb1137ac2dff5858d707a7d4bf  libstdc++-v3/include/std/locale
! f36de15c1f3b7e03051daa3f7c7472c5  libstdc++-v3/include/std/map
! 9c7bf4ea1e18b545d124ae2680b02ed9  libstdc++-v3/include/std/memory
! eefb79e63abf6981b7e039602b92d9ce  libstdc++-v3/include/std/memory_resource
! 44c7dab7177844460c0d95f3b2c6d2dd  libstdc++-v3/include/std/mutex
! 0f98490a23012b0d475a6438918e05e8  libstdc++-v3/include/std/numbers
! ac43fbb050b8d2a1ec74bacb3c616355  libstdc++-v3/include/std/numeric
! cbda536ce69fdfa05eb7a35caa2e993e  libstdc++-v3/include/std/optional
! cd61415584c1581bf72fcbe29c65916c  libstdc++-v3/include/std/ostream
! 61b007baae14c52b13732aad82286815  libstdc++-v3/include/std/queue
! aad0b8c05c77db48c9ae1eddb9e0380d  libstdc++-v3/include/std/random
! dd54b410427082bb772c6eff0ce0855f  libstdc++-v3/include/std/ranges
! 338a84095148e5196b391a7fdf949691  libstdc++-v3/include/std/ratio
! 52827264570402b0bccc80a3adb4bf59  libstdc++-v3/include/std/regex
! 62195f008afa4b9fd1bea335fca46182  libstdc++-v3/include/std/scoped_allocator
! 7ea9ab55b16bf212329fa852a89c8167  libstdc++-v3/include/std/semaphore
! 742567ce5079b72e691794c61cfb2af3  libstdc++-v3/include/std/set
! 91a9a4fa6c63c846408b4454d2c8f4b2  libstdc++-v3/include/std/shared_mutex
! e0c9f8627e498a77f31adb76a452b0b1  libstdc++-v3/include/std/source_location
! aea911420dac4fb648fde0d5bac52f0a  libstdc++-v3/include/std/span
! 906b5423836b8b95366b23366f24b8c5  libstdc++-v3/include/std/sstream
! ed0009b64dfff30999a2182d0189ee7f  libstdc++-v3/include/std/stack
! 9d66312aa64c804c24a1e83155f4a200  libstdc++-v3/include/std/stdexcept
! 908cf9755013388ec909738b403ed227  libstdc++-v3/include/std/stop_token
! 05c6cffed4833f117e386206af8f878e  libstdc++-v3/include/std/streambuf
! 8eccd3adbdc9f406ec98e5483acf9c01  libstdc++-v3/include/std/string
! 87cd5041f8478892e3936d9e0abdfe85  libstdc++-v3/include/std/string_view
! 3386938e1698a1f76bd82d3399fbe5ea  libstdc++-v3/include/std/syncstream
! 48e36c3ca8d130bd0e9a77aab0d95a6f  libstdc++-v3/include/std/system_error
! 83a8f781edae2a22c67cf12b96568a03  libstdc++-v3/include/std/thread
! 7924c34ff83da299f21f850fe73d70d9  libstdc++-v3/include/std/tuple
! 6281a179aaf74b043d09d4436a9e7e40  libstdc++-v3/include/std/type_traits
! 330d42fb74c13496f374d6b2cb3cbf7c  libstdc++-v3/include/std/typeindex
! 16ace88be8613b378b5fffc1958351a0  libstdc++-v3/include/std/unordered_map
! aeb2a92a3c9a2263f24568c8ece52a4c  libstdc++-v3/include/std/unordered_set
! bdac698614e70e29eed7098d316ca2ff  libstdc++-v3/include/std/utility
! eba3f9944908a390ab9674c4941d5ff3  libstdc++-v3/include/std/valarray
! a43aca7cb00f9c646bd9e8f1e0c8d433  libstdc++-v3/include/std/variant
! b2ab68817368c3805d64bb4978a6129d  libstdc++-v3/include/std/vector
! 2acdfc6b22feddcbcc64e1624e3ca5e7  libstdc++-v3/include/std/version
! 7a3df4ee77f8051d9c8970f892588ef6  libstdc++-v3/include/tr1/array
! 79c7b722cf8e5135a96d12e1a660393b  libstdc++-v3/include/tr1/bessel_function.tcc
! 814be185cac0443c6e0933c450d9f912  libstdc++-v3/include/tr1/beta_function.tcc
! 9c043b3653c3325638cf3588fec7ece0  libstdc++-v3/include/tr1/ccomplex
! d3c3b6bac4b3d367e865b63aa2410ab6  libstdc++-v3/include/tr1/cctype
! ac405d7ea684a51838b86fda743e5aea  libstdc++-v3/include/tr1/cfenv
! 7c2b8ee6774495fde760c5c255355e08  libstdc++-v3/include/tr1/cfloat
! 33c94fadd343e910c935759b1f4c8f16  libstdc++-v3/include/tr1/cinttypes
! 320bcecaecad766ea012b7c6d19fc649  libstdc++-v3/include/tr1/climits
! ea3db4ebd386418c9efa0eb41f11cc0f  libstdc++-v3/include/tr1/cmath
! 00a6830845558bae2accc806f804731d  libstdc++-v3/include/tr1/complex
! 15a8c16694856707f076e6b4272257cb  libstdc++-v3/include/tr1/complex.h
! 28e9ba2bf6799d252c8ebdb24c2aff57  libstdc++-v3/include/tr1/cstdarg
! 845bbc8e3530d971f5e3163e7d822e98  libstdc++-v3/include/tr1/cstdbool
! a20fff5d7a096234f2043115d2fa71bc  libstdc++-v3/include/tr1/cstdint
! 4a6f5ebb14bc5ed0f4abc096ee1cf637  libstdc++-v3/include/tr1/cstdio
! ece87efbf632dc59fd8ea0b0a41dc202  libstdc++-v3/include/tr1/cstdlib
! 7db5e2872c87105112cb3829d666aede  libstdc++-v3/include/tr1/ctgmath
! 2581a315b1b5d125015ebc851302a726  libstdc++-v3/include/tr1/ctime
! 52e5edff6c3dad597cf93d8f39f24689  libstdc++-v3/include/tr1/ctype.h
! eb78e60638d9d09e2ad25fff2429d32e  libstdc++-v3/include/tr1/cwchar
! 04ebdcfc7a287e51e350188b0f6bbd78  libstdc++-v3/include/tr1/cwctype
! 9e16044d0ab10fb07690e646dcc6e01c  libstdc++-v3/include/tr1/ell_integral.tcc
! c2f619449b4893754a47a8879f5e9d16  libstdc++-v3/include/tr1/exp_integral.tcc
! c61ad09b738c3f7c469601f0d590ef9c  libstdc++-v3/include/tr1/fenv.h
! 4d54f4a2f728d5173ab2d9cc8b58fd1d  libstdc++-v3/include/tr1/float.h
! d07b9fd6078103f8da38a8d5ddc36e0e  libstdc++-v3/include/tr1/functional
! dbacb7c680c2cb72e6f1ffe632071bf7  libstdc++-v3/include/tr1/functional_hash.h
! e44cb108c0e4132dcc1aafc07abda044  libstdc++-v3/include/tr1/gamma.tcc
! 735207aced10426f7a63827db25346e9  libstdc++-v3/include/tr1/hashtable.h
! 1ba5fb2b2879e531b67e73884f1cf5a3  libstdc++-v3/include/tr1/hashtable_policy.h
! 9f8d8afd257c9238b3d56c40ebc6b78a  libstdc++-v3/include/tr1/hypergeometric.tcc
! b01c64ac85c3393fdfdc8476c3fa870b  libstdc++-v3/include/tr1/inttypes.h
! 33b21c370ed57f340e16b5f2759a310c  libstdc++-v3/include/tr1/legendre_function.tcc
! 5dbae440d3a1cadc9dc051750cb3baa0  libstdc++-v3/include/tr1/limits.h
! c731430cd17e9030ad549442f9f1d2d6  libstdc++-v3/include/tr1/math.h
! 8cda6a4a431de078da0a2e32d3e57e79  libstdc++-v3/include/tr1/memory
! f3bf2b60d401c5dde94dc8dcfc2100c1  libstdc++-v3/include/tr1/modified_bessel_func.tcc
! eb7fc33fd9e10d92696e565e2750c8fd  libstdc++-v3/include/tr1/poly_hermite.tcc
! 3931da06bfda41bb8ba16da3ba08b6bb  libstdc++-v3/include/tr1/poly_laguerre.tcc
! 714c6eabff1433666fa863172a30bf76  libstdc++-v3/include/tr1/random
! fab5f07b0f81755cf865053acb22bc4a  libstdc++-v3/include/tr1/random.h
! a9ffb1a996dd8625597e6c5bdde3b138  libstdc++-v3/include/tr1/random.tcc
! 55ae846c7d6dde6c50ebd2828bbf2d85  libstdc++-v3/include/tr1/regex
! 9de6e0514ae7563cfd9feecb58cfb627  libstdc++-v3/include/tr1/riemann_zeta.tcc
! b0fd9be2b3d41411acd55d8b102bd5a7  libstdc++-v3/include/tr1/shared_ptr.h
! 047869d2b4c577f4d413e00d4358c9b7  libstdc++-v3/include/tr1/special_function_util.h
! c8e598bceada47de7abae538c8db7d28  libstdc++-v3/include/tr1/stdarg.h
! 6aeed2ef9252c548d1bbb2a56e29c0f6  libstdc++-v3/include/tr1/stdbool.h
! 2aad58d794765ed990d32441691efe03  libstdc++-v3/include/tr1/stdint.h
! e385db7228cb54e30952ca4807167c33  libstdc++-v3/include/tr1/stdio.h
! 7616e777a00c9f421bad734f16daa35e  libstdc++-v3/include/tr1/stdlib.h
! 0cceda6185ac7bd62a4aba8371da3f7c  libstdc++-v3/include/tr1/tgmath.h
! cc426c89f657c59de43f7199aebc8ed2  libstdc++-v3/include/tr1/tuple
! ebc4cb09fa274d497ca333beb245ce63  libstdc++-v3/include/tr1/type_traits
! ced2e710e86bb56241f9f70e3608bf65  libstdc++-v3/include/tr1/unordered_map
! fd68a21fa3521f8301740b7740dccd2d  libstdc++-v3/include/tr1/unordered_map.h
! 17519ea92652f3bf96e8a691f6e8678a  libstdc++-v3/include/tr1/unordered_set
! 612fe16b974f7df0582bd10351eca6d6  libstdc++-v3/include/tr1/unordered_set.h
! bfb645994f10ceefcde0efdb634016ce  libstdc++-v3/include/tr1/utility
! 1653e12e4647b197f17abfb5fea8d7af  libstdc++-v3/include/tr1/wchar.h
! 1899d850ec32836322e010e0dcafb275  libstdc++-v3/include/tr1/wctype.h
! b89fa4c41849c6025ae19ba92b4a57ef  libstdc++-v3/include/tr2/bool_set
! a9b3b2678eaae70252b2a5a2246fcf27  libstdc++-v3/include/tr2/bool_set.tcc
! c89b275a194b7370f322c7128b243090  libstdc++-v3/include/tr2/dynamic_bitset
! cc2a0b62bf04cad951e0838fd4e29e3d  libstdc++-v3/include/tr2/dynamic_bitset.tcc
! 95f8128d43e4fa453bad55b8db6307bc  libstdc++-v3/include/tr2/ratio
! cb6ce365cf504ab2292795d611943c6e  libstdc++-v3/include/tr2/type_traits
! 5559362627331d7a7be957332eba7b9f  libstdc++-v3/libsupc++/Makefile.am
! 0e698fb2d933bed1c0fd85b86464a335  libstdc++-v3/libsupc++/Makefile.in
! b992d92f8e27c5837ac0932ebba6e786  libstdc++-v3/libsupc++/array_type_info.cc
! d773d7947ef6fa9dba87bc66d1556985  libstdc++-v3/libsupc++/atexit_arm.cc
! bcd2caa5d8bd8939dccd73056d9b9954  libstdc++-v3/libsupc++/atexit_thread.cc
! 27cb6b28cf79bb48f22b024c36a5f1e4  libstdc++-v3/libsupc++/atomic_lockfree_defines.h
! eb2bc7d97ecdf010f9361939f387092c  libstdc++-v3/libsupc++/bad_alloc.cc
! 2975254953042c9edb3c7722d5e30c91  libstdc++-v3/libsupc++/bad_array_length.cc
! 5096b0ba3cebdfffe51cada55dafb110  libstdc++-v3/libsupc++/bad_array_new.cc
! 8aa8dd4846aee0a32c74838ffe1a9b18  libstdc++-v3/libsupc++/bad_cast.cc
! 61fcac9976ceb3ce4d31eda2e568a7c6  libstdc++-v3/libsupc++/bad_typeid.cc
! 3192b4cce5548a08f659876a1332baa5  libstdc++-v3/libsupc++/class_type_info.cc
! 972cdff7fe8351d5ca78c6b5bf563ebb  libstdc++-v3/libsupc++/compare
! 782af6cf5da6b4aed7e6e655947c10c7  libstdc++-v3/libsupc++/cxxabi.h
! 134a2a7d6f57e9fed9432b11cf8bee41  libstdc++-v3/libsupc++/cxxabi_forced.h
! 0969b2aced8d0038ae64557f408773c9  libstdc++-v3/libsupc++/cxxabi_init_exception.h
! 9d7d9b6720047e04b62c81d60c19ab9f  libstdc++-v3/libsupc++/del_op.cc
! 71523ef966b19773108b8523a4bfd5e4  libstdc++-v3/libsupc++/del_opa.cc
! 6533e4a8be6bf3ad145990dcfcfa8a37  libstdc++-v3/libsupc++/del_opant.cc
! bc68a1f53f0ad3b3834933ceee2e252e  libstdc++-v3/libsupc++/del_opnt.cc
! 9fe62143520ee396c14bac9823f65e2a  libstdc++-v3/libsupc++/del_ops.cc
! 49b60af0ac3142e42430b239fd6a189d  libstdc++-v3/libsupc++/del_opsa.cc
! 30f647e60d5a21c572c21ea36154d671  libstdc++-v3/libsupc++/del_opv.cc
! 7749ae8e05a18802e8520da741df610b  libstdc++-v3/libsupc++/del_opva.cc
! 182fa330491b47e2b3004b2ae7cfac20  libstdc++-v3/libsupc++/del_opvant.cc
! a447e9889ed49c1a3e80bad3e04c0802  libstdc++-v3/libsupc++/del_opvnt.cc
! 5271762160e5a0b167d83294f21848e8  libstdc++-v3/libsupc++/del_opvs.cc
! 4f464f88bb1716c20b773822180ecca3  libstdc++-v3/libsupc++/del_opvsa.cc
! 49e6c7cbd8d13777d87f30a8ffd426bf  libstdc++-v3/libsupc++/dyncast.cc
! a02800140b28e1ad50fadb5273befc01  libstdc++-v3/libsupc++/eh_alloc.cc
! 00696f9d36a2ece784510c64a60ac5c1  libstdc++-v3/libsupc++/eh_arm.cc
! 4526fec3a911b9a1c8def297f051f9d9  libstdc++-v3/libsupc++/eh_atomics.h
! c020134520aeb4e1dbc6a22bfecc07fa  libstdc++-v3/libsupc++/eh_aux_runtime.cc
! 9b17fb096c41315af5a885974f69e1e9  libstdc++-v3/libsupc++/eh_call.cc
! 1f1b8c2bf4762b1428918c808f5ce011  libstdc++-v3/libsupc++/eh_catch.cc
! eb85b2d059eebd4bab2ddebf20f51fdd  libstdc++-v3/libsupc++/eh_exception.cc
! 7da469e1e44b59b30954cc615228a501  libstdc++-v3/libsupc++/eh_globals.cc
! fd215243989a8a4cd896f2dc9385a832  libstdc++-v3/libsupc++/eh_personality.cc
! 8a870bd6d2382f7592dc36a89d536aa8  libstdc++-v3/libsupc++/eh_ptr.cc
! 4402b39e94bf04e4d0f6205b518acdb4  libstdc++-v3/libsupc++/eh_term_handler.cc
! a859026b177a6ae9130ba67464cae66f  libstdc++-v3/libsupc++/eh_term_handler.h
! eeeaade1c899ee5f8ec1cb80459af466  libstdc++-v3/libsupc++/eh_terminate.cc
! 690ffcf5c0a0567b62bdd38797f9f6e0  libstdc++-v3/libsupc++/eh_throw.cc
! 2311b0aa098d49a979e28df504a3c8ce  libstdc++-v3/libsupc++/eh_tm.cc
! e419810c256cf4e3b9555eda630ea0ba  libstdc++-v3/libsupc++/eh_type.cc
! e5d56ce300f615cb191a91f63d15da7e  libstdc++-v3/libsupc++/eh_unex_handler.cc
! 4f2380b784e1ea9dad3f41d28513a543  libstdc++-v3/libsupc++/enum_type_info.cc
! a4b331e3b64f52c98ce35a98fbcd3a75  libstdc++-v3/libsupc++/exception
! 922b8cf12b911111d666bec90bde61e4  libstdc++-v3/libsupc++/exception.h
! 4f705d1748ddbd2ef4f9b4b7f7b30501  libstdc++-v3/libsupc++/exception_defines.h
! cb9f7e096e8ea7c4f5d31c641a5113f0  libstdc++-v3/libsupc++/exception_ptr.h
! 4b2020eec5a9266f030bc8e0a6b4b574  libstdc++-v3/libsupc++/function_type_info.cc
! f4c887793b010205b07a92b68684bfd8  libstdc++-v3/libsupc++/fundamental_type_info.cc
! 4eb0c7b938eeb3c75bcd6de3523f9589  libstdc++-v3/libsupc++/guard.cc
! 34f51c3e056cb362fbe48756a83264ef  libstdc++-v3/libsupc++/guard_error.cc
! a8f4b35fda7f213f31eb9a60d469ed5c  libstdc++-v3/libsupc++/hash_bytes.cc
! 8527b7e51734b3e98d31b07214213f4d  libstdc++-v3/libsupc++/hash_bytes.h
! 57fb932fc6d7fbe06dbbbaeba2e79e48  libstdc++-v3/libsupc++/initializer_list
! bec60cfb10a615ed3fb38cd41e15dde2  libstdc++-v3/libsupc++/nested_exception.cc
! 783152727522499ab2d59c9b7bcd3913  libstdc++-v3/libsupc++/nested_exception.h
! 5bf31ff50dc9c1389f350e48b92a6d19  libstdc++-v3/libsupc++/new
! 4a160d4c275c619668643c13998c3ae3  libstdc++-v3/libsupc++/new_handler.cc
! 95974f6dab8b4a9606bbbde0c079f0f3  libstdc++-v3/libsupc++/new_op.cc
! 3281d05c8f0b45f9e2f3c5a293027ec4  libstdc++-v3/libsupc++/new_opa.cc
! 00ba98d70ab72ac86de363238367712f  libstdc++-v3/libsupc++/new_opant.cc
! 7cf3f37d12584577c5edbc707e27ff74  libstdc++-v3/libsupc++/new_opnt.cc
! 79d65e52b01935d8953bc0de0c578f5b  libstdc++-v3/libsupc++/new_opv.cc
! a7f967ba52db1f70e1e6f8f98bb1042a  libstdc++-v3/libsupc++/new_opva.cc
! 1fe559ec50af74ab9da1aa7c5641e768  libstdc++-v3/libsupc++/new_opvant.cc
! 7633efc7a426a4954592f04d3ff7a644  libstdc++-v3/libsupc++/new_opvnt.cc
! 8752b9bcf738617bcb22a0c90925d082  libstdc++-v3/libsupc++/pbase_type_info.cc
! 4213855418b7bfcf910fd8b2a35061bc  libstdc++-v3/libsupc++/pmem_type_info.cc
! 55352e9434a3e5802a1cd1ccd3dd29bf  libstdc++-v3/libsupc++/pointer_type_info.cc
! 8916af2aaeb71abbe2022ddea75fedf3  libstdc++-v3/libsupc++/pure.cc
! 9e204e4c507b9cd4d3350d9cabcdb05d  libstdc++-v3/libsupc++/si_class_type_info.cc
! 49503fb5737ae6037800c7c08bc84912  libstdc++-v3/libsupc++/tinfo.cc
! b4c5eff9da2552a0441b442f8a56ecbc  libstdc++-v3/libsupc++/tinfo.h
! 0a6936e11602332604fe631ae944beb7  libstdc++-v3/libsupc++/tinfo2.cc
! f97b6e79e4ebb4f5c69e54dbe29a3aed  libstdc++-v3/libsupc++/typeinfo
! 77e0a5871873d95f3233bf411845ce60  libstdc++-v3/libsupc++/unwind-cxx.h
! 429a9876b1a1a9b8bb8b7c39b269b98d  libstdc++-v3/libsupc++/vec.cc
! 33cbbc69d8e4a900ec9ed9ffc2a2c2bb  libstdc++-v3/libsupc++/vmi_class_type_info.cc
! ba2e29761befd05a6d89233e99f8346b  libstdc++-v3/libsupc++/vterminate.cc
! 366a883e72b3a7a3b78bd72abf7487e4  libstdc++-v3/libsupc++/vtv_stubs.cc
  6e1809e9ac8f237378ab1ebc1b99fb6a  libstdc++-v3/linkage.m4
! 5dad9b49f3f8615c2ea65e49d80a4efd  libstdc++-v3/po/Makefile.am
! 5f0ce98f30fb70b22b691abb9ef3c549  libstdc++-v3/po/Makefile.in
! a8b9b273f76ae07d9b348f0a5d810e19  libstdc++-v3/po/POTFILES.in
! 3e03898abf86f67331e09c1ed2c75cc2  libstdc++-v3/po/de.po
! 2863b152e6ea006828d931b909e65f0f  libstdc++-v3/po/fr.po
! 2c7616acffe8edae7935e283e7270ed0  libstdc++-v3/po/libstdc++.pot
! 4946e4d28c388353dc776bcae8af08f0  libstdc++-v3/po/string_literals.cc
! c21bf2b01d1b7c8ee9a275cd06e6deef  libstdc++-v3/python/Makefile.am
! 348deab7d2ccb33ea3c4ed28b3a6c10d  libstdc++-v3/python/Makefile.in
! ef60735f8655321222e620486f219e8d  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
! 484cb11df73bf42227946114a89d29b5  libstdc++-v3/python/libstdcxx/v6/__init__.py
! 5d1d6eec7823c71c6b443effaf2e59bc  libstdc++-v3/python/libstdcxx/v6/printers.py
! 004c942e49fec929e06d6634be72913a  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
! a4c1d51bba293cee2307fc7f9dd090f7  libstdc++-v3/scripts/check_performance
! 128d0fbc24e1d43d9ff93d14bd521aa6  libstdc++-v3/scripts/check_simd
! 40f8ee10a4683f6c7f555f9450fcaa12  libstdc++-v3/scripts/create_testsuite_files
! d44f1280b2ae0e585a833bac86b35dc1  libstdc++-v3/scripts/extract_symvers.in
! cb00fad72fef0f33c2f74614710e6329  libstdc++-v3/scripts/extract_symvers.pl
  755b77f929d926f07f3257df2e802f2e  libstdc++-v3/scripts/gen_bind_includers.pl
  85378fa65bc3dc46ffe255374b304560  libstdc++-v3/scripts/gen_includers.pl
  f1a84a17158780aaa37927191db4463a  libstdc++-v3/scripts/gen_includers2.pl
  e8e7773bc629a008b2813ee507a0dab6  libstdc++-v3/scripts/make_exports.pl
  80b6ff44b325c6b6d113435d8eea4b76  libstdc++-v3/scripts/make_graph.py
! a839992684f910ce17e6ad41077121f6  libstdc++-v3/scripts/run_doxygen
  7579350b0ac0412cb42e9c354485ebd9  libstdc++-v3/scripts/testsuite_flags.in
! 90d9f3e1d4379ef148eff766138db885  libstdc++-v3/src/Makefile.am
! 3d242c79bb2931ab9442d67f04ec5292  libstdc++-v3/src/Makefile.in
! 000cfcfbee87b2cd6e095ada940b97be  libstdc++-v3/src/c++11/Makefile.am
! d7fac9138ce1d66a3a3bcb97a36bd4f7  libstdc++-v3/src/c++11/Makefile.in
! fdce91d6f0e0cb276b62993742bb7146  libstdc++-v3/src/c++11/chrono.cc
! 7ec3713834b6a0a9356d439a66579099  libstdc++-v3/src/c++11/codecvt.cc
! 2fbc29206c3ec26f5a499d1d8b01ea01  libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc
! 20622ccf2bba591552b35f31986affd8  libstdc++-v3/src/c++11/compatibility-c++0x.cc
! a9122c87521f59de28f5cb332637e5fd  libstdc++-v3/src/c++11/compatibility-chrono.cc
! 58d704fbd5d7285885ddbcf519c39b85  libstdc++-v3/src/c++11/compatibility-condvar.cc
! 13d8eb617ee09a49ddae147ced1116e1  libstdc++-v3/src/c++11/compatibility-ldbl-alt128-cxx11.cc
! 2c0c2b7d24e35933118507d044750127  libstdc++-v3/src/c++11/compatibility-ldbl-alt128.cc
! 2684f76d9a220ab6d41add8127f6ade0  libstdc++-v3/src/c++11/compatibility-ldbl-facets-aliases.h
! 70b5162172c80d0b9e539a8376d23cdf  libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc
! 67763c2722b1fecba6026d3a5e279186  libstdc++-v3/src/c++11/condition_variable.cc
! a4dbc4289865dcd160d4c3920de33abf  libstdc++-v3/src/c++11/cow-fstream-inst.cc
! 14b931173008b978537627c1155d8b5d  libstdc++-v3/src/c++11/cow-locale_init.cc
! ecef4303b2fe8614abdcdee8f5a97784  libstdc++-v3/src/c++11/cow-shim_facets.cc
! f0feb9b595b11812996f4df508fff346  libstdc++-v3/src/c++11/cow-sstream-inst.cc
! e03c620462e68a76e66e6041ec102c70  libstdc++-v3/src/c++11/cow-stdexcept.cc
! bcc8422f4892401dc0259597750a6103  libstdc++-v3/src/c++11/cow-string-inst.cc
! 8bb4ac2f38b17b2842534afee19f5710  libstdc++-v3/src/c++11/cow-string-io-inst.cc
! b1e311a760b7fc9f79f4c3e116d870ad  libstdc++-v3/src/c++11/cow-wstring-inst.cc
! 9c2da2f0e682809a7efdecfc6fa49934  libstdc++-v3/src/c++11/cow-wstring-io-inst.cc
! 30ddd0f9c87af440dc416afc40d57f44  libstdc++-v3/src/c++11/ctype.cc
! d63ad10cee99effce602ecfd86f2c6b3  libstdc++-v3/src/c++11/cxx11-hash_tr1.cc
! 333a9eec225a90ac835319896b494725  libstdc++-v3/src/c++11/cxx11-ios_failure.cc
! 3e4964b37cb4e0a7a3dabf39ce83038d  libstdc++-v3/src/c++11/cxx11-locale-inst.cc
! 83fbc2f04af1752e626ce5c04fc41021  libstdc++-v3/src/c++11/cxx11-shim_facets.cc
! 547060ebce06c57f1d36a3ebb230f6d1  libstdc++-v3/src/c++11/cxx11-stdexcept.cc
! e81f604b9243aa5f90328c1172c9e9bd  libstdc++-v3/src/c++11/cxx11-wlocale-inst.cc
! b17f6f7ac95e790c63dc4b307011484f  libstdc++-v3/src/c++11/debug.cc
! 928aeeb60a85a111ed4a0a6534151377  libstdc++-v3/src/c++11/ext11-inst.cc
! 0093bfa20464b3d436abcdc6d62059ce  libstdc++-v3/src/c++11/fstream-inst.cc
! a3e4eadf15f208dba5ae3f1a63d51220  libstdc++-v3/src/c++11/functexcept.cc
! 9a3c407f47856f2156a033d0c5ed9830  libstdc++-v3/src/c++11/functional.cc
! 03c63e35d2bfb3354ac527797632baf0  libstdc++-v3/src/c++11/futex.cc
! a779e1496a831a9e58dbfe0c2393a9e3  libstdc++-v3/src/c++11/future.cc
! a4701f7f549c0b1fd6c50e2e2b9cc9ed  libstdc++-v3/src/c++11/hash_c++0x.cc
! 7637f776a1c1ed11f452aa84d3d64491  libstdc++-v3/src/c++11/hashtable_c++0x.cc
! 21ef2783c98363b3c7027ae99e9a9471  libstdc++-v3/src/c++11/ios-inst.cc
! 1ab83951e761f829b2a568219ad1df26  libstdc++-v3/src/c++11/ios.cc
! 047218ea85f430a4c8b3d6ab04b8045c  libstdc++-v3/src/c++11/iostream-inst.cc
! e50f33dad04bda8c47dfabc758779fde  libstdc++-v3/src/c++11/istream-inst.cc
! 10ea1661070457646890d07d1d32fc82  libstdc++-v3/src/c++11/limits.cc
! f77f8a7ae8553f284cf026a0c69d2cd1  libstdc++-v3/src/c++11/locale-inst-monetary.h
! 38f8318be41e2263c9bf6879c635764d  libstdc++-v3/src/c++11/locale-inst-numeric.h
! a4ad998b432d02bb72aaf1d87d0acd8b  libstdc++-v3/src/c++11/locale-inst.cc
! 0e6e420840dd0745776976b2863c3215  libstdc++-v3/src/c++11/mutex.cc
! 4a9c69794963372e7cfe7a89a3c36fa5  libstdc++-v3/src/c++11/mutex_pool.h
! 6949bb94e5a7111191195d7c1509f2a1  libstdc++-v3/src/c++11/ostream-inst.cc
! 92279da6a43eb47f7355581a4a2a7631  libstdc++-v3/src/c++11/placeholders.cc
! 22dcc0914aa84993903fc88abdcf0df9  libstdc++-v3/src/c++11/random.cc
! b3f5a0e85916e3062a0f408f5c588e05  libstdc++-v3/src/c++11/regex.cc
! 6f5ac010c707f1b6b80de53cf1266a6b  libstdc++-v3/src/c++11/shared_ptr.cc
! a058c0b6cc7d0111a3e534392191bf7d  libstdc++-v3/src/c++11/snprintf_lite.cc
! 3a8d202675f9b8edcb4bf8625ea7273c  libstdc++-v3/src/c++11/sso_string.cc
! 7a0c80b802957763b9c5234927b32103  libstdc++-v3/src/c++11/sstream-inst.cc
! f719f4c27c082199cb4cc7bd224b1235  libstdc++-v3/src/c++11/streambuf-inst.cc
! 1956880dcf7cf135e21c20c27366d969  libstdc++-v3/src/c++11/string-inst.cc
! 918dca1dc0f88fdd6ea72120d506122a  libstdc++-v3/src/c++11/string-io-inst.cc
! 0cdd0749aadaee1d349646bf77f9ac99  libstdc++-v3/src/c++11/system_error.cc
! 9381c68fea89c0b9811704782c8014d3  libstdc++-v3/src/c++11/thread.cc
! d0b105c1c7ce2890dc9ff2748affabbf  libstdc++-v3/src/c++11/wlocale-inst.cc
! dcfd2322c93dd48b11088455fc3beba2  libstdc++-v3/src/c++11/wstring-inst.cc
! 91c011938cc99078b2f3730c38065003  libstdc++-v3/src/c++11/wstring-io-inst.cc
! 5130b25166674acc8b78c398389d7c1c  libstdc++-v3/src/c++17/Makefile.am
! f8a85e35ee28a1af625c11bfb454e0de  libstdc++-v3/src/c++17/Makefile.in
! 58788f91c44721baed47f7b56e0b9025  libstdc++-v3/src/c++17/cow-fs_dir.cc
! 52c93781a1a27322c5ccdf462d3b199d  libstdc++-v3/src/c++17/cow-fs_ops.cc
! 0732bbfdd57bfb7a0d6e33b50a9d479d  libstdc++-v3/src/c++17/cow-fs_path.cc
! fe48c009c5684613dd310097f544a115  libstdc++-v3/src/c++17/cow-string-inst.cc
  21e22ff1ddec6a91c7b379d6f6398649  libstdc++-v3/src/c++17/default_resource.h
! 242d9497f8938d611ecbc446bc541a5c  libstdc++-v3/src/c++17/floating_from_chars.cc
! 08292ff50d9c26a19fa201aa16fdc33f  libstdc++-v3/src/c++17/floating_to_chars.cc
! fa649062d7f81d76e699298c19815c77  libstdc++-v3/src/c++17/fs_dir.cc
! 21d21080857f704ed108edd7fa6e09c0  libstdc++-v3/src/c++17/fs_ops.cc
! 8e13c63ce5c5f6b76072b2c38173c975  libstdc++-v3/src/c++17/fs_path.cc
! 875017e6a7576d4589b31911090cd940  libstdc++-v3/src/c++17/memory_resource.cc
! 6d9c0bef465f18c79af1f9a7af80b525  libstdc++-v3/src/c++17/ostream-inst.cc
! 794925ed6e9f3bf0923fb3227959bef2  libstdc++-v3/src/c++17/ryu/LOCAL_PATCHES
! 47f52d4af05ab513a6a1ab62c5fdc086  libstdc++-v3/src/c++17/ryu/MERGE
! 5c512389f4cbe0ea37ce2a8da0f070d6  libstdc++-v3/src/c++17/ryu/common.h
! 68d17d3946647c70092348da5b4d2150  libstdc++-v3/src/c++17/ryu/d2fixed.c
! 9a0ed5eccd5099079586be75b34d2936  libstdc++-v3/src/c++17/ryu/d2fixed_full_table.h
! 0619e34c1de264dce5cbbe615f54e8e0  libstdc++-v3/src/c++17/ryu/d2s.c
! 35c6da63cdf032dc7d6630d3a54ab8e7  libstdc++-v3/src/c++17/ryu/d2s_full_table.h
! e0d8ea3fabad3c5ae596aaaea19e35c4  libstdc++-v3/src/c++17/ryu/d2s_intrinsics.h
! ae01717fb9bc756d7dab7e93b33bb6dc  libstdc++-v3/src/c++17/ryu/digit_table.h
! cdfce2fa1d76af09cfdf0989501826ca  libstdc++-v3/src/c++17/ryu/f2s.c
! 3c7632b8c46bbe9bb1c1cfad1b228818  libstdc++-v3/src/c++17/ryu/f2s_intrinsics.h
! 74bc36f5cffd7626c78090061e4416a9  libstdc++-v3/src/c++17/ryu/generic_128.c
! fbb127f006c65ae37d591c627cc6235c  libstdc++-v3/src/c++17/ryu/generic_128.h
! 58e63c9c08b034749974b5a904f17c45  libstdc++-v3/src/c++17/ryu/ryu_generic_128.h
! 809d9cbbb4da2d3c37ae554cfe604cd3  libstdc++-v3/src/c++17/string-inst.cc
! 82231ef77687529627b4a19e5ba192a7  libstdc++-v3/src/c++17/uint128_t.h
! ac15faa3fb83593da9575905b1478902  libstdc++-v3/src/c++20/Makefile.am
! 94388664bad26272c36c8b4a277d2214  libstdc++-v3/src/c++20/Makefile.in
! edbcebd86d4459a054bf7300f4eb0860  libstdc++-v3/src/c++20/sstream-inst.cc
! 6802c325a00d0f72a28087f0e515b2cd  libstdc++-v3/src/c++98/Makefile.am
! 443653488d884dcd6503d401769cf71f  libstdc++-v3/src/c++98/Makefile.in
! 8c7f00d8db3289676db19dd406fdf1dd  libstdc++-v3/src/c++98/allocator-inst.cc
! 6ac27832df1381d70d82bed7d7147a11  libstdc++-v3/src/c++98/bitmap_allocator.cc
! 3366d53181b7628deb171706a52c0f13  libstdc++-v3/src/c++98/codecvt.cc
! 01c49a1a154bb05ac14b5d4a1e8571f9  libstdc++-v3/src/c++98/compatibility-debug_list-2.cc
! 195fda8daf4ea2046958325d2b345dc6  libstdc++-v3/src/c++98/compatibility-debug_list.cc
! e1f42955277b60bcd0175a0240d10290  libstdc++-v3/src/c++98/compatibility-ldbl.cc
! a87a7ad03820628310bb3cf663572368  libstdc++-v3/src/c++98/compatibility.cc
! 4139a07cbde17ce9977ebf5b30210b91  libstdc++-v3/src/c++98/complex_io.cc
! 12299f694abae0251fc2e70a053b07f3  libstdc++-v3/src/c++98/concept-inst.cc
! ddf43df3bd1ac307bc166565edfe3e12  libstdc++-v3/src/c++98/cow-istream-string.cc
! 88fbd02963e5450bb25ea282691900bd  libstdc++-v3/src/c++98/ext-inst.cc
! a8f35fa3e12ca074ba9803583169fe43  libstdc++-v3/src/c++98/globals_io.cc
! 7b1520b86e323fb9e9df76e28e2a61f6  libstdc++-v3/src/c++98/hash-long-double-tr1-aux.cc
! 191bb41590cb3e785eca366b2c4100b7  libstdc++-v3/src/c++98/hash_tr1.cc
! 048738a7e2444c5ab0e625ee46f188b9  libstdc++-v3/src/c++98/hashtable_tr1.cc
! d346a1050733dead9aa51be491ce819e  libstdc++-v3/src/c++98/ios_failure.cc
! d9dfe6c2bfa6c05b985911940d3cdb13  libstdc++-v3/src/c++98/ios_init.cc
! 05bcfb1e7fc816e411c7857e74da7aae  libstdc++-v3/src/c++98/ios_locale.cc
! e06fc71ef77a33e6415916cdca48dd83  libstdc++-v3/src/c++98/istream-string.cc
! b3e2e80a85e420cd6926e6fad3bab64e  libstdc++-v3/src/c++98/istream.cc
! 62b4de9e61ee72d1a936f2667174c4de  libstdc++-v3/src/c++98/list-aux-2.cc
! 28efaaf3e77eda8e5f02019edcbc7bae  libstdc++-v3/src/c++98/list-aux.cc
! a80c86ad1d57170d1afbe8f4d5e48eb6  libstdc++-v3/src/c++98/list.cc
! 0fd9eb2475138ec1f3ac9e27fa87fa11  libstdc++-v3/src/c++98/list_associated-2.cc
! 0cc33eaa1f68a7a738b5e69ab3c52aa8  libstdc++-v3/src/c++98/list_associated.cc
! 565eedf78ba4a333f364f43ee00b38cd  libstdc++-v3/src/c++98/locale.cc
! 4ccc39c4a18223534265abb85deb39ee  libstdc++-v3/src/c++98/locale_facets.cc
! ca7f4cc6cfae069a385712380c108be7  libstdc++-v3/src/c++98/locale_init.cc
! faadb0350388a0e095ddd63d283a1a42  libstdc++-v3/src/c++98/localename.cc
! f85110c16d99602f628c45e7352765c2  libstdc++-v3/src/c++98/math_stubs_float.cc
! 4c48a88afbe1084a9b79edaf6195dd52  libstdc++-v3/src/c++98/math_stubs_long_double.cc
! 82601237098cb6370fd147c0d34bd237  libstdc++-v3/src/c++98/misc-inst.cc
! a02321a13b74928e428912d1ab647c08  libstdc++-v3/src/c++98/mt_allocator.cc
! 85516d97e3e29b02a68a40ed5a2c3f90  libstdc++-v3/src/c++98/parallel_settings.cc
! 107f363f7bdea0aa7af7b5288a872732  libstdc++-v3/src/c++98/pool_allocator.cc
! d29ab284e569bbe343dddc20859c1ed9  libstdc++-v3/src/c++98/stdexcept.cc
! 0cb3406c39d1805139a8aaa7d144df17  libstdc++-v3/src/c++98/streambuf.cc
! fb15bb368e327c843383096ec55eaa00  libstdc++-v3/src/c++98/strstream.cc
! 4bf1e2e5f4db0ad68da4f34bcb15d667  libstdc++-v3/src/c++98/tree.cc
! b673220babee424d2b70a4dbda885118  libstdc++-v3/src/c++98/valarray.cc
! 46504b4bb10e4119c5d6831ad8b7b3d1  libstdc++-v3/src/filesystem/Makefile.am
! 6f56674012e49967fe0887a3dffbd67e  libstdc++-v3/src/filesystem/Makefile.in
! 0b7a43e506d04a83193b7dec27610ac1  libstdc++-v3/src/filesystem/cow-dir.cc
! d61e45b9d5e6a114646872dd2109583e  libstdc++-v3/src/filesystem/cow-ops.cc
! 1cec190567d6217eca7c91ba30fcac96  libstdc++-v3/src/filesystem/cow-path.cc
! c775a951bdee850a043193645b4b64bf  libstdc++-v3/src/filesystem/dir-common.h
! 591ff90c0e0f9d9d9e959614832848fc  libstdc++-v3/src/filesystem/dir.cc
! f8ea984a816f949e86f29a00746cfeaf  libstdc++-v3/src/filesystem/ops-common.h
! ae999d2ba9caf1531899176aacbb2ed0  libstdc++-v3/src/filesystem/ops.cc
! 35978d397a37f9c8652bddaca54e8f22  libstdc++-v3/src/filesystem/path.cc
! 4d050a72fe3bf6800e6b61c3d97b09ca  libstdc++-v3/src/shared/hashtable-aux.cc
! 269e3bac13e39e68daa7adab30401447  libstdc++-v3/testsuite/17_intro/badnames.cc
! 664bdcdc68f1dc65bafa053d9a6ac9f2  libstdc++-v3/testsuite/17_intro/freestanding.cc
! 74caf8a601513ff0499f38e7af54918f  libstdc++-v3/testsuite/17_intro/headers/c++1998/49745.cc
! 01bb8f5cdc1f9caf4e7e44d58deb9297  libstdc++-v3/testsuite/17_intro/headers/c++1998/all.cc
! c6a7466079eb3c793145a13d89cb816c  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_attributes.cc
! bd4a18481bfc51dffb0332a3b3f92585  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_c++200x_compatibility.cc
! 632230dceae59f2654605508ae230044  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_exceptions.cc
! 89d02ab5e9c016fb44174bd04b5f96d2  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_rtti.cc
! 94f042a56a2ef7821accaba38f91de45  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++1998/charset.cc
! e9bf8bf07a179b66cf4fe16cd6a895c6  libstdc++-v3/testsuite/17_intro/headers/c++1998/complex.cc
! 421afccfc536742f58df78b415ec48c8  libstdc++-v3/testsuite/17_intro/headers/c++1998/operator_names.cc
! ab4f91dc1f2d1fd67d3e9a48d8f69755  libstdc++-v3/testsuite/17_intro/headers/c++1998/profile_mode.cc
! d991a9dd9b3f84358d2fe37694ba1194  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++.cc
! 24b419747b1e18d06cbada64271f5d56  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc
! 808d7a78d7565929bb476522605f3b8f  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_multiple_inclusion.cc
! b613a517e0cba0f4d974b14b19a2f3a4  libstdc++-v3/testsuite/17_intro/headers/c++2011/42319.cc
! 1556033e8bc4256332da36fe9763e15e  libstdc++-v3/testsuite/17_intro/headers/c++2011/67309.cc
! 8706e7f7ea31e9bed06c6bbc4debbaab  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_attributes.cc
! f413084ac984250f3f4dfa1cb0603b2c  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_no_exceptions.cc
! 8a29120704378c53bf664556f6e90229  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_no_rtti.cc
! 2f9d06a4c0330e3468d0a29f8f246656  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++2011/charset.cc
! 0b0b6b3613a00a368e35186e93f9a3f4  libstdc++-v3/testsuite/17_intro/headers/c++2011/linkage.cc
! 13ad763ed600996d79c3a056e55e7433  libstdc++-v3/testsuite/17_intro/headers/c++2011/operator_names.cc
! eed818216dc9da652350d9ccf75a395f  libstdc++-v3/testsuite/17_intro/headers/c++2011/parallel_mode.cc
! e501bf5670fc19e734c453073d782a1a  libstdc++-v3/testsuite/17_intro/headers/c++2011/profile_mode.cc
! b4c9924b81e1e611449568298a2c2232  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++.cc
! fdbdc5fd4fd5851895466f76b08653af  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
! 2eac50e1208f721dd302402a743a83c0  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc
! e38bb99ea5d7711f9c4d193da4b17fa0  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_no_exceptions.cc
! aeb039c8a9cad0e1be56941e1386d9ff  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_no_rtti.cc
! 140b286b00a0e72f68b10d296ace24a2  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++2014/charset.cc
! 9457b9d070c50084dbab5013a4587968  libstdc++-v3/testsuite/17_intro/headers/c++2014/operator_names.cc
! 5a852f1a3acf48c285dca72c33f5709f  libstdc++-v3/testsuite/17_intro/headers/c++2014/parallel_mode.cc
! 969fd0cff8b6ad7f0168d4117e539631  libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc
! 38fd605d4063d997899c7a1081bb4302  libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc
! 28a8a6e8d74870e6c704ca41fb0884e8  libstdc++-v3/testsuite/17_intro/headers/c++2017/all_attributes.cc
! b408c7995b814da09b76e29e0e3384ed  libstdc++-v3/testsuite/17_intro/headers/c++2017/all_no_exceptions.cc
! c8be12e77122b59f5d07150379eac8dc  libstdc++-v3/testsuite/17_intro/headers/c++2017/all_no_rtti.cc
! cc65515fef44a7c0fec93e6212a2b5ed  libstdc++-v3/testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++2017/charset.cc
! e28f94183354034acd060482238d9f04  libstdc++-v3/testsuite/17_intro/headers/c++2017/operator_names.cc
! e4694d6716a3c5b1693678b4a6cb2ec4  libstdc++-v3/testsuite/17_intro/headers/c++2017/parallel_mode.cc
! 5916754c0829a0fca7aab95f116968c5  libstdc++-v3/testsuite/17_intro/headers/c++2017/stdc++.cc
! f4b369c9a55b45b541436952b08f6bb0  libstdc++-v3/testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc
! 27f9b89dadbfb32b890c4161a605f5e5  libstdc++-v3/testsuite/17_intro/headers/c++2020/all_attributes.cc
! dde81d585041d6394cb89544f656763e  libstdc++-v3/testsuite/17_intro/headers/c++2020/all_no_exceptions.cc
! b6df8729c3fcf5e92385a6ae4ebc33a9  libstdc++-v3/testsuite/17_intro/headers/c++2020/all_no_rtti.cc
! f79eda61083c2a5923bc86e97f849a8a  libstdc++-v3/testsuite/17_intro/headers/c++2020/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++2020/charset.cc
! 8c11d848a50b34cc41e4f38457340ab0  libstdc++-v3/testsuite/17_intro/headers/c++2020/operator_names.cc
! 00f02d1595a0b4d76fa4c334f1d290c3  libstdc++-v3/testsuite/17_intro/headers/c++2020/stdc++.cc
! 9a503e9f7a4962b02dcf7af55a6ec225  libstdc++-v3/testsuite/17_intro/headers/c++2020/stdc++_multiple_inclusion.cc
! b31dcf1e139f12a63179fc86981b452f  libstdc++-v3/testsuite/17_intro/names.cc
! c8b92b0456cec060527cba3fcf483eb7  libstdc++-v3/testsuite/17_intro/shared_with_static_deps.cc
! 31f0502096c772d1e15fff55afb87ea4  libstdc++-v3/testsuite/17_intro/static.cc
! fb6074535e87c7e3a68810fb1d497360  libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc
! 420c26a0ca0c9f6ab2030c5e1a1985b3  libstdc++-v3/testsuite/17_intro/using_namespace_std.cc
! 021af94fd3cdf3ab048710b5430f13d1  libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc
! 8cf2ca8bf2d938941d7b9682402a5fb2  libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc
! 92607f3ca117f7dcf10d80aeb7a3a865  libstdc++-v3/testsuite/18_support/50594.cc
! 1300847b2383140b1542c3b357a52b53  libstdc++-v3/testsuite/18_support/51333.cc
! 4dd604a1f18d39eb191c1d61a7f80a48  libstdc++-v3/testsuite/18_support/96817.cc
! 71a8e336a0f6a0d5a25f4632331d646b  libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc
! a7ad15bb9b6e877b18a53157274af916  libstdc++-v3/testsuite/18_support/bad_alloc/cons_virtual_derivation.cc
! 44e345137f4e5677a3f2e1a9a8f5af53  libstdc++-v3/testsuite/18_support/bad_alloc/what.cc
! c8fbb66363e4aeaa645bcb1bc9a0463a  libstdc++-v3/testsuite/18_support/bad_cast/cons_virtual_derivation.cc
! b5720ae54a260e5bee08f619db37727d  libstdc++-v3/testsuite/18_support/bad_cast/what.cc
! 6d95345c4a83f4fa7b8e206abad7dad9  libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c
! 54ada7fd0e606bd7578cc5adf169d715  libstdc++-v3/testsuite/18_support/bad_exception/59392.cc
! 287ca9b3fbe9a1117c047a22543c441a  libstdc++-v3/testsuite/18_support/bad_exception/cons_virtual_derivation.cc
! 6bdf533b889a920dd85611a16e3e6c17  libstdc++-v3/testsuite/18_support/bad_exception/what.cc
! e73337cabdd6f41e42119e038f3a1cb3  libstdc++-v3/testsuite/18_support/bad_typeid/cons_virtual_derivation.cc
! 7b716c2654ed4bf662579bc9b201093c  libstdc++-v3/testsuite/18_support/bad_typeid/what.cc
! b33d1e1d9f07dd1d402a38b01f5b57f8  libstdc++-v3/testsuite/18_support/byte/81076.cc
! 6b89f6f94a3c88f773b88dc27815ffdf  libstdc++-v3/testsuite/18_support/byte/global_neg.cc
! 5e044683caf6afdeba03867efb546905  libstdc++-v3/testsuite/18_support/byte/ops.cc
! b7bee2c4d8af6d89ec383e901fd9bdce  libstdc++-v3/testsuite/18_support/byte/requirements.cc
! e13d96a11fabb13790e44c211cd92f3c  libstdc++-v3/testsuite/18_support/comparisons/algorithms/partial_order.cc
! 844ff72611c0d4c210c7cf7f79bf568e  libstdc++-v3/testsuite/18_support/comparisons/algorithms/strong_order.cc
! 2d8f835ce49787e2c60c236273484d23  libstdc++-v3/testsuite/18_support/comparisons/algorithms/weak_order.cc
! cdf18d0b4b9243989a14b6a9c697f5e7  libstdc++-v3/testsuite/18_support/comparisons/categories/94565.cc
! 89c8786a9c26f12f93b90ad30d23e7d2  libstdc++-v3/testsuite/18_support/comparisons/categories/partialord.cc
! 30df59bf8d24def6f2d84b18b6b75980  libstdc++-v3/testsuite/18_support/comparisons/categories/strongord.cc
! 370053ce16b298661d2a52d1ca7e31cc  libstdc++-v3/testsuite/18_support/comparisons/categories/weakord.cc
! 17463b197e8836f2f1cd601128a383b8  libstdc++-v3/testsuite/18_support/comparisons/categories/zero_neg.cc
! 41a5470b480d1c67cf3af77bc2b49946  libstdc++-v3/testsuite/18_support/comparisons/common/1.cc
! ae3c31a0d90d9cf87a3ce5ed3fe427f2  libstdc++-v3/testsuite/18_support/comparisons/object/93479.cc
! a79b1eca93cc35bcb8a1e55ef37b209d  libstdc++-v3/testsuite/18_support/comparisons/object/lwg3530.cc
! 7df1c9f269f12deb177e04cdc1d2518e  libstdc++-v3/testsuite/18_support/coroutines/95917.cc
! 0233b02f827166115656fc4ec2aa06ca  libstdc++-v3/testsuite/18_support/coroutines/lwg3460.cc
! 05fc58a5ef8c6782f4f073a0797dd286  libstdc++-v3/testsuite/18_support/cxa_vec.cc
! c2cfb457c65bc6c55bc3c0b2c638ce4b  libstdc++-v3/testsuite/18_support/destroying_delete.cc
! ce22e4735ecd95159c340e5186ba8266  libstdc++-v3/testsuite/18_support/exception/38732.cc
! cbbe9b0ecfe25e4d73c964b8e3aaba27  libstdc++-v3/testsuite/18_support/exception/what.cc
! a3a6b6c53e7f7962d0edf9b334e4f65b  libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc
! 21198d97496aa2ba0cf3e0f58eefcaec  libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc
! f53e2f19afb2fbaa0e374c404e2bf377  libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc
! f8ed24ce66067da2b340818c2e51a1f3  libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc
! c87f66b9c23fd9309a97bc330c090766  libstdc++-v3/testsuite/18_support/exception_ptr/64241.cc
! bd38997c39abdcfa180b8c1310a14e70  libstdc++-v3/testsuite/18_support/exception_ptr/90295.cc
! 8907da30a344e71f1227eec1fae72f2b  libstdc++-v3/testsuite/18_support/exception_ptr/96657.cc
! ed07787c03e35628440394ecd374df45  libstdc++-v3/testsuite/18_support/exception_ptr/current_exception.cc
! 74a2d32b0d782e296255ec3f1511d3fd  libstdc++-v3/testsuite/18_support/exception_ptr/lifespan.cc
! 53080fd8bd265a7b99def71a18886dae  libstdc++-v3/testsuite/18_support/exception_ptr/make_exception_ptr.cc
! f0e9366291cf987086a9252d2df708b0  libstdc++-v3/testsuite/18_support/exception_ptr/make_exception_ptr_2.cc
! d7e939db8f3d0b7755bd65d842ce448e  libstdc++-v3/testsuite/18_support/exception_ptr/move.cc
! 0331e82b95d41118ad69988b61c97a14  libstdc++-v3/testsuite/18_support/exception_ptr/requirements.cc
! 3b3b776a6204ff7a046d1f36c90c1054  libstdc++-v3/testsuite/18_support/exception_ptr/requirements_neg.cc
! 9542e21867d1714e16d9b5e6b1af6bca  libstdc++-v3/testsuite/18_support/exception_ptr/rethrow_exception.cc
! 39c163b51d265ffd1acbfc6872d5b6e7  libstdc++-v3/testsuite/18_support/free_eh_pool.cc
! a63c3e274aaac795583e5681b2f92ba4  libstdc++-v3/testsuite/18_support/headers/cfloat/values.cc
! ceff152dd58f5718542ad5106a12d8b4  libstdc++-v3/testsuite/18_support/headers/cfloat/values_c++17.cc
! 383e9c97714c9e856d07c331699d9c85  libstdc++-v3/testsuite/18_support/headers/climits/values.cc
! 0ec985236a0129db62dfaaa64a2a4ae1  libstdc++-v3/testsuite/18_support/headers/csetjmp/functions_std.cc
! 077367347a4f77fd310c7a89cd7ec329  libstdc++-v3/testsuite/18_support/headers/csetjmp/macros.cc
! 609f55522cd9597e25a6ce9eadc39814  libstdc++-v3/testsuite/18_support/headers/csetjmp/types_std.cc
! 5a88be7b16358cb4e0fbdec49e614a89  libstdc++-v3/testsuite/18_support/headers/csignal/functions_std.cc
! 3a86cdf74d02a9211b016b6f4f04af6c  libstdc++-v3/testsuite/18_support/headers/csignal/macros.cc
! 26e7937e131f3d6a5922f6df3e930a4a  libstdc++-v3/testsuite/18_support/headers/csignal/types_std.cc
! a18700647cd5d3fdbd32ade3e248a1a9  libstdc++-v3/testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc
! bb836f31dd507d668dc91362105f7240  libstdc++-v3/testsuite/18_support/headers/cstdarg/macros.cc
! 2dc5ae015d981987f1bfe96468d3b7c8  libstdc++-v3/testsuite/18_support/headers/cstdarg/types_std.cc
! 592d78864ca42df1faf426bab9287bdf  libstdc++-v3/testsuite/18_support/headers/cstdbool/macros.cc
! ddf7d0512acc6af3a76bce88df06d29c  libstdc++-v3/testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc
! 89dfbd0f2705419482d8440a58277924  libstdc++-v3/testsuite/18_support/headers/cstddef/macros.cc
! 6581b728c879f4ff84fa1051fa24a1bc  libstdc++-v3/testsuite/18_support/headers/cstddef/types_std.cc
! a80a1f3451171c14f186521e77568ab8  libstdc++-v3/testsuite/18_support/headers/cstdint/std_c++0x_neg.cc
! 1f98ebf38ddc7ed3b16516bddedfd170  libstdc++-v3/testsuite/18_support/headers/cstdint/types_std_c++0x.cc
! c885b5162a392c6bc031cbf9e9403541  libstdc++-v3/testsuite/18_support/headers/cstdlib/functions_std.cc
! d9a44a1c4e1e01bd8ab6dee950ed27c0  libstdc++-v3/testsuite/18_support/headers/cstdlib/macros.cc
! 0affc249f7261e08de2cfb0710915ffb  libstdc++-v3/testsuite/18_support/headers/ctime/functions_std.cc
! c8368fe45b6bb53f412d3f8e2a6a6f5f  libstdc++-v3/testsuite/18_support/headers/ctime/macros.cc
! 2c0b748e5de0118e3d29449ac2b8548f  libstdc++-v3/testsuite/18_support/headers/ctime/types_std.cc
! 41a32206e2e643e61bb41e2443467078  libstdc++-v3/testsuite/18_support/headers/exception/synopsis.cc
! 2c8559b4b84d7d1e1b149719bcf0bf46  libstdc++-v3/testsuite/18_support/headers/exception/types_std.cc
! 97500ef70ab3d61d8737b5d47d70c3de  libstdc++-v3/testsuite/18_support/headers/limits/synopsis.cc
! 379f0246fe0e335510c6ca56daea24c9  libstdc++-v3/testsuite/18_support/headers/new/synopsis.cc
! a4d41e9472da80aaf7b149d20259b3d3  libstdc++-v3/testsuite/18_support/headers/new/synopsis_cxx98.cc
! e9b662610d1a923f9e8d0a6ebd602aec  libstdc++-v3/testsuite/18_support/headers/new/types_std.cc
! dac07e37a521e1eef69e5cba1d87f832  libstdc++-v3/testsuite/18_support/headers/typeinfo/synopsis.cc
! d4d7a996af960ad82742bdce084965d6  libstdc++-v3/testsuite/18_support/headers/typeinfo/types_std.cc
! d1756458f919298faeaa0d9da2276041  libstdc++-v3/testsuite/18_support/headers/version/macros.cc
! 220a54ef199e142b7cbadb4dc5fa1181  libstdc++-v3/testsuite/18_support/initializer_list/constexpr.cc
! 93c0463851658ae75a785b347efa3ae6  libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc
! ac08d3abca83a09e4e62a730958356eb  libstdc++-v3/testsuite/18_support/initializer_list/requirements/constexpr_functions.cc
! 74cf20a675d71b3aef60ee9ddad11123  libstdc++-v3/testsuite/18_support/initializer_list/requirements/explicit_instantiation.cc
! c3acf192f4e72e0d6b8acd4a7da4a956  libstdc++-v3/testsuite/18_support/initializer_list/requirements/typedefs.cc
! 016e9fc2cdfed442fb9adbe53d0c59be  libstdc++-v3/testsuite/18_support/launder/1.cc
! a9dbb9ff55f06de9a0319dc59b02cc7a  libstdc++-v3/testsuite/18_support/launder/nodiscard.cc
! 776a2cb1845273bed8ec54812a83d553  libstdc++-v3/testsuite/18_support/launder/requirements.cc
! d6d72e4101ebf2cfade9bb0e57fab070  libstdc++-v3/testsuite/18_support/launder/requirements_neg.cc
! f2f9432ea90d2f18279f929c7512121e  libstdc++-v3/testsuite/18_support/max_align_t/requirements/1.cc
! 7f45a195482db0aa0d5277dd85dc1d47  libstdc++-v3/testsuite/18_support/max_align_t/requirements/2.cc
! 470fbaf501b4bee1ada8e8ad4a040010  libstdc++-v3/testsuite/18_support/nested_exception/51438.cc
! 9c02e5e4859e05fc95605cc66cd538df  libstdc++-v3/testsuite/18_support/nested_exception/62154.cc
! 80aba3daa4bf2852201517b659525ad0  libstdc++-v3/testsuite/18_support/nested_exception/68139.cc
! 5f31a58005c7950c4f0e51ec00e9e4c1  libstdc++-v3/testsuite/18_support/nested_exception/79114.cc
! 6acfa58114bcbe0a03fc75fcec321df5  libstdc++-v3/testsuite/18_support/nested_exception/cons.cc
! 1a9647d0ac837ee99fb921b41ef79078  libstdc++-v3/testsuite/18_support/nested_exception/nested_ptr.cc
! 4f1246b0b9ebba2670236d2593edadd5  libstdc++-v3/testsuite/18_support/nested_exception/rethrow_if_nested.cc
! 6a07ffbb65886d3a5bb489e426883e58  libstdc++-v3/testsuite/18_support/nested_exception/rethrow_nested.cc
! 6d526e3ce3dd11f9db744758aa93923a  libstdc++-v3/testsuite/18_support/nested_exception/throw_with_nested.cc
! 989643bd42d8c9445383d04002489fb2  libstdc++-v3/testsuite/18_support/new_aligned.cc
! 48091e828e76d75bb45e9235cc0d96b6  libstdc++-v3/testsuite/18_support/new_delete_placement.cc
! 6c65f11273efe08f2b4e8f0b09a84d77  libstdc++-v3/testsuite/18_support/new_handler.cc
! bc044f2d7f84ec708dc77fdd314a8add  libstdc++-v3/testsuite/18_support/new_nothrow.cc
! 39727df45cdb5327756ed448ab14e1b1  libstdc++-v3/testsuite/18_support/numeric_limits/29989.cc
! 05f68bb5858d20d7db17f197d431b3df  libstdc++-v3/testsuite/18_support/numeric_limits/40856.cc
! 316196ac4ff9d2323134010102d1c47f  libstdc++-v3/testsuite/18_support/numeric_limits/char16_32_t.cc
! 99629cab63d7854bafe8b077aab2a1e1  libstdc++-v3/testsuite/18_support/numeric_limits/char8_t.cc
! 18b1ef1a8d188e90ed95c6f7a924e8c9  libstdc++-v3/testsuite/18_support/numeric_limits/cons/default.cc
! 6cde3b831b5bb05d702aa2be5ab41a55  libstdc++-v3/testsuite/18_support/numeric_limits/cons/default_c++0x.cc
! 5ca0282daa756d74f4ece1257216cd89  libstdc++-v3/testsuite/18_support/numeric_limits/denorm_min.cc
! 4b07f840b5dbbb2d05a27bf97b71bef6  libstdc++-v3/testsuite/18_support/numeric_limits/digits10.cc
! 40107180994c7644f67a9d7450b149b7  libstdc++-v3/testsuite/18_support/numeric_limits/dr559.cc
! b5c539c068b125034b423979f4678642  libstdc++-v3/testsuite/18_support/numeric_limits/epsilon.cc
! 09c32239e0ca321deb212076fe9e14c9  libstdc++-v3/testsuite/18_support/numeric_limits/infinity.cc
! f6b17cd6fa2d9704c1e4aa248b95e249  libstdc++-v3/testsuite/18_support/numeric_limits/is_iec559.cc
! 1b4007b2c7c9e6232cb3ee410f7cafcd  libstdc++-v3/testsuite/18_support/numeric_limits/is_signed.cc
! 5bc37ad5513503be681375eb6f7064d9  libstdc++-v3/testsuite/18_support/numeric_limits/lowest.cc
! 8e3bd94db6ae3062f227f2df86161662  libstdc++-v3/testsuite/18_support/numeric_limits/max_digits10.cc
! e18bde0e66a2de5fd922f092e2312d4e  libstdc++-v3/testsuite/18_support/numeric_limits/min_max.cc
! 251c62443a88aca1cbf05c383cbe471c  libstdc++-v3/testsuite/18_support/numeric_limits/primary.cc
! fd59cc871f3ef0f8bcb3126d1a2a450b  libstdc++-v3/testsuite/18_support/numeric_limits/quiet_NaN.cc
! 8ea1898ae6b96f057a61cb2b89dbbdae  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc
! 8798eba7239f6a9ce68c039b8560ac38  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc
! 6ce7b327389b6029a27a8d128767a0f4  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/explicit_instantiation/1.cc
! af0a12d99e817d1d4d9f01c347019b72  libstdc++-v3/testsuite/18_support/numeric_limits/specialization_default_values.cc
! 871be1d8a2ceccc26dd07e2a55c9cd07  libstdc++-v3/testsuite/18_support/numeric_limits/traps.cc
! 219c1d6379773582f62bab9ee1150457  libstdc++-v3/testsuite/18_support/pthread_guard.cc
! 4a2aa18ad09d4c53f99b74e649e1db31  libstdc++-v3/testsuite/18_support/quick_exit/quick_exit.cc
! 1946dc49603ae38b4546fd2cdadfd0fc  libstdc++-v3/testsuite/18_support/set_terminate.cc
! 80d83582ba61dccd3d9d2284309c4c1f  libstdc++-v3/testsuite/18_support/set_unexpected.cc
! 7dc1f3315e779300cd9806130066a1f9  libstdc++-v3/testsuite/18_support/source_location/1.cc
! 506eaad43ab3325467ff2608e58d4bb0  libstdc++-v3/testsuite/18_support/source_location/consteval.cc
! d67d60cc69f922051b18b859d97b5983  libstdc++-v3/testsuite/18_support/source_location/srcloc.h
! a6b04424812557329cb78c9219a4f510  libstdc++-v3/testsuite/18_support/source_location/version.cc
! bd50cbf3b881fb7d4e8204d5ccbfe40e  libstdc++-v3/testsuite/18_support/terminate_handler.cc
! 6ab8978b367ecd9639e833d4ea186069  libstdc++-v3/testsuite/18_support/type_info/52562.cc
! 29b689b2adaa6a8f785a22e7d7154e35  libstdc++-v3/testsuite/18_support/type_info/fundamental.cc
! 67985f91552cc45f084511dfeb5beb13  libstdc++-v3/testsuite/18_support/type_info/hash_code.cc
! d49ac9d58977743ccf78dc349ea9f902  libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc
! e4bfb2302516a5bae07bfde63db6e496  libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc
! 8f403d1d96a3895da01fee88b5652481  libstdc++-v3/testsuite/18_support/unexpected_handler.cc
! c95c327e4680e772d0de1de3bad0ffb2  libstdc++-v3/testsuite/19_diagnostics/error_category/cons/copy_neg.cc
! 42d2c521cb78289c413f2d728a19e243  libstdc++-v3/testsuite/19_diagnostics/error_category/cons/default.cc
! 84e4ea0170f5d3de2b3338868d078a7b  libstdc++-v3/testsuite/19_diagnostics/error_category/generic_category.cc
! d42d3cc358a7e4f99a092cde1d28267f  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/equal.cc
! 2f7016e40ecf9f347abbac7810b3dac6  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/less.cc
! 7c37bf2e6c8ad7106740de6df763cc14  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/not_equal.cc
! de62118ebc45d3fff00ca4bf0fb388a6  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/three_way.cc
! a7f4f3e82f349fc304a2c025de0274dc  libstdc++-v3/testsuite/19_diagnostics/error_category/system_category.cc
! 4334201b31488915fcb0f2d0a61b2be5  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/1.cc
! 0155fa7b3e6d4c61dc355d6ae065c957  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/39882.cc
! a95106119137af1300b40855b06e58df  libstdc++-v3/testsuite/19_diagnostics/error_code/hash.cc
! b27d39c851838c253ce36fe9da4b4e84  libstdc++-v3/testsuite/19_diagnostics/error_code/is_error_code_v.cc
! cb9036756b525e4b1b211aa1f4c2249c  libstdc++-v3/testsuite/19_diagnostics/error_code/modifiers/39882.cc
! 03d1f8d14c1d670f3cad9ad9aad28763  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool.cc
! 4be083923854f2ea2dc9e8291b47d375  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool_neg.cc
! 2409e7e11ce84034c0e5e0e41c672961  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/equal.cc
! fbe4e3c85ef21a7c6f0c48230a32f6da  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/less.cc
! ce31af5c8b099f00930fa1de02aa1e80  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/not_equal.cc
! 3573c1557839e8ad344d0512e2579676  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/three_way.cc
! c75470d5530b5ae2eaa627e47c0eed69  libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/1.cc
! 79bbcafed481820fd162c1ad1b6c2a98  libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/39881.cc
! 68f077e1a920660ca5bcf51fe919a8a7  libstdc++-v3/testsuite/19_diagnostics/error_condition/hash.cc
! c7bc411865275a3a44dc8d2b00b447e2  libstdc++-v3/testsuite/19_diagnostics/error_condition/modifiers/39881.cc
! fdafdf271cc77e0465f1f7894c92ca8a  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/bool.cc
! fb679db786744670029626dcddf4a938  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/bool_neg.cc
! 43e3d17b9c56a470d47e64d9b9f378cd  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/equal.cc
! c12f7f0e71b5f59c60b4fa810cc4eeea  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/less.cc
! 7826b27aa308e24dc8a8a0a18f6027c9  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/not_equal.cc
! 79a154197eb4cb74b1eaf5e458e7310a  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/three_way.cc
! 13c256a4dfe566194a489e5ff68f4fc2  libstdc++-v3/testsuite/19_diagnostics/headers/cassert/macros.cc
! 0982a03bbaaed34cd25637afd0bbe5b4  libstdc++-v3/testsuite/19_diagnostics/headers/cerrno/macros.cc
! 033e393caae24e730605735cca784fd8  libstdc++-v3/testsuite/19_diagnostics/headers/stdexcept/synopsis.cc
! 151f673b7788106642a49efcbb22de95  libstdc++-v3/testsuite/19_diagnostics/headers/stdexcept/types_std.cc
! 1ec0c010132206cd877710fb445c5f29  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/34538.cc
! 9c3a7f3566fe981536477c78ab9e70d7  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/93151.cc
! d663bcd885d0bbfd344cda6b0cb5297e  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc
! 0940ff9cb09d19d4a0c03d2f9128efae  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc
! 90f59b47f42f93035e6fe21bd0d1cd1e  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc
! 48ffe60543f5ab3697f2d3e1a79572e8  libstdc++-v3/testsuite/19_diagnostics/logic_error/cons_virtual_derivation.cc
! 3ef18ba3cee519f495d8f5b5e5f62e2a  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-1.cc
! 0e4ee50fa51955ec1d9e02647a081ece  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-2.cc
! 51d3d1376ad4041bf72cd1fe68a13716  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-3.cc
! 75ee69dd4ca6f84652a2c23e4f01be95  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-big.cc
! abb1dfd384144a9e8a3c8abcbbca424a  libstdc++-v3/testsuite/19_diagnostics/runtime_error/cons_virtual_derivation.cc
! 71ec7060a1c101c27468c81e9931a770  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-1.cc
! e86ec8d2ed640d1ec738b949c0b35654  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-2.cc
! 690800ba3f00da184e16f948f358d82d  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-3.cc
! 9603e23b21ade23013c90a748ed9bc50  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-big.cc
! 47f4f27ecf4bda087c5b0a3cd14a7c66  libstdc++-v3/testsuite/19_diagnostics/stdexcept.cc
! 2264c22a40011e311f857936e455ea01  libstdc++-v3/testsuite/19_diagnostics/system_error/39880.cc
! 6c5934a5df61fc5c08b17f85f553babc  libstdc++-v3/testsuite/19_diagnostics/system_error/cons-1.cc
! f50967809900e6d07ee02904a6e39903  libstdc++-v3/testsuite/19_diagnostics/system_error/cons_virtual_derivation.cc
! 4e7eceb75a1b5e9a861de98219de4b8e  libstdc++-v3/testsuite/19_diagnostics/system_error/what-1.cc
! e78a2781f39a561579731ed4b960a801  libstdc++-v3/testsuite/19_diagnostics/system_error/what-2.cc
! 923e5cbb03fb94147137928b28629f77  libstdc++-v3/testsuite/19_diagnostics/system_error/what-3.cc
! fe49dba39d4e2edf0d63d26f4f713f87  libstdc++-v3/testsuite/19_diagnostics/system_error/what-4.cc
! bed26b2c77450f72283773e024e692bb  libstdc++-v3/testsuite/19_diagnostics/system_error/what-big.cc
! 4f19735cffc9501630786534d68c6427  libstdc++-v3/testsuite/20_util/add_const/requirements/alias_decl.cc
! 8f92a44b7cb21cf107313c756229f7f4  libstdc++-v3/testsuite/20_util/add_const/requirements/explicit_instantiation.cc
! cb55ed14c5cdb8d4e9810898e24228b2  libstdc++-v3/testsuite/20_util/add_const/value.cc
! 913f5de4ed07041603f36ce458832442  libstdc++-v3/testsuite/20_util/add_cv/requirements/alias_decl.cc
! b197ae5e27b8b9dc6ad44641892d362f  libstdc++-v3/testsuite/20_util/add_cv/requirements/explicit_instantiation.cc
! 11ac79e2160e61696bf899eae12e6f11  libstdc++-v3/testsuite/20_util/add_cv/value.cc
! fa44636f74d0a027af383518a8e65baa  libstdc++-v3/testsuite/20_util/add_lvalue_reference/requirements/alias_decl.cc
! 6e03b35b2b01e7e3dcd0f349693cbc0b  libstdc++-v3/testsuite/20_util/add_lvalue_reference/requirements/explicit_instantiation.cc
! f99cea9970b6620322741c8c29194efc  libstdc++-v3/testsuite/20_util/add_lvalue_reference/value.cc
! 44c68dc9c627cdb56f75074daacb2580  libstdc++-v3/testsuite/20_util/add_pointer/requirements/alias_decl.cc
! 7452b73813ef058566edf62b55373fec  libstdc++-v3/testsuite/20_util/add_pointer/requirements/explicit_instantiation.cc
! bbd0ece01a616e2e3dea7293772ebd2f  libstdc++-v3/testsuite/20_util/add_pointer/value.cc
! 3a85562cd33f2b758c9840b8b4714eac  libstdc++-v3/testsuite/20_util/add_rvalue_reference/requirements/alias_decl.cc
! c37f408d49515e3d8302032320f22243  libstdc++-v3/testsuite/20_util/add_rvalue_reference/requirements/explicit_instantiation.cc
! 5da2bb58c0387d516f42d6786ef20331  libstdc++-v3/testsuite/20_util/add_rvalue_reference/value.cc
! 7e76672a295d718baa546a5308131507  libstdc++-v3/testsuite/20_util/add_volatile/requirements/alias_decl.cc
! a1be84585d147cb512d2e5600111c20b  libstdc++-v3/testsuite/20_util/add_volatile/requirements/explicit_instantiation.cc
! 525c09575c9b0be3e098dc2ffffe9fe0  libstdc++-v3/testsuite/20_util/add_volatile/value.cc
! 42b2d083b6efc71db8762fafab12b26e  libstdc++-v3/testsuite/20_util/addressof/1.cc
! 5ac78b29530e2805edbd6eb0eb6ed4da  libstdc++-v3/testsuite/20_util/addressof/requirements/constexpr.cc
! a92ddd435a58948646acefb1070193e9  libstdc++-v3/testsuite/20_util/addressof/requirements/explicit_instantiation.cc
! 333e62334736d5afe100ed8342a442b0  libstdc++-v3/testsuite/20_util/align/1.cc
! 7307ec8be932ec7180f478ec6a18abc6  libstdc++-v3/testsuite/20_util/align/2.cc
! 6a977e1f50867d8029afa2458f109a5b  libstdc++-v3/testsuite/20_util/align/3.cc
! d1527c91a02c2ce5debc2cd6cd6f38aa  libstdc++-v3/testsuite/20_util/aligned_storage/requirements/alias_decl.cc
! 16b9eaa4c7e8392d525244803d7241de  libstdc++-v3/testsuite/20_util/aligned_storage/requirements/explicit_instantiation.cc
! 09fe4b42734b407d1f95928e6d4004e9  libstdc++-v3/testsuite/20_util/aligned_storage/value.cc
! c80d0777cc1b33430f063c5317b267f6  libstdc++-v3/testsuite/20_util/aligned_union/1.cc
! a7767d4c495812b3e8db102d3eb3011b  libstdc++-v3/testsuite/20_util/aligned_union/requirements/alias_decl.cc
! 626c33b94c32d159ffa50ce55a1ba702  libstdc++-v3/testsuite/20_util/alignment_of/requirements/explicit_instantiation.cc
! b5155793dcbf056ed0449d9e3c76a9dd  libstdc++-v3/testsuite/20_util/alignment_of/requirements/typedefs.cc
! 9825cfb0c04f9c220d8698371ff95025  libstdc++-v3/testsuite/20_util/alignment_of/value.cc
! 01ff9ce0bdd7f8d8502f564e43e3e7c7  libstdc++-v3/testsuite/20_util/allocator/1.cc
! 57a35a8bc4c54923fbf87d8606eb819e  libstdc++-v3/testsuite/20_util/allocator/10378.cc
! 14b137495952f9ee0b7461f051d189d2  libstdc++-v3/testsuite/20_util/allocator/14176.cc
! b2fc59f13d30b1a69ca9ad6675698f0e  libstdc++-v3/testsuite/20_util/allocator/33807.cc
! fe1d83fae3c0730ab91eb0a7e4dc07a8  libstdc++-v3/testsuite/20_util/allocator/8230.cc
! 606c92f5e0f9c00872de27ae733eaccc  libstdc++-v3/testsuite/20_util/allocator/89510.cc
! b00f036debbe09aaba5288e14cb68a7d  libstdc++-v3/testsuite/20_util/allocator/lwg3190.cc
! 77828de9d70ae8089f8b6700ce04dc32  libstdc++-v3/testsuite/20_util/allocator/overaligned.cc
! 58b5b645c8c7c7fdb40d0b8f10add64c  libstdc++-v3/testsuite/20_util/allocator/rebind_c++20.cc
! 93e69ac1bff3a29d98e0a18dbb736a35  libstdc++-v3/testsuite/20_util/allocator/requirements/constexpr.cc
! f00a16c69147887fb51ac87e69df3e28  libstdc++-v3/testsuite/20_util/allocator/requirements/explicit_instantiation/1.cc
! 6d2828fbec00985d3ef41c99add8e143  libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs.cc
! e12608d86c78ef09146d4d23502dbcd1  libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs_c++20.cc
! 61a4ba66b67f89b64fc2e53892c79e7a  libstdc++-v3/testsuite/20_util/allocator/void.cc
! d8d2792700c4256d6bafe5f823baa7e4  libstdc++-v3/testsuite/20_util/allocator_traits/header-2.cc
! 0caa10ed5d647c7934481bf543e1c544  libstdc++-v3/testsuite/20_util/allocator_traits/header.cc
! f21d13983b6538238c18e581209d3d0e  libstdc++-v3/testsuite/20_util/allocator_traits/members/92878_92947.cc
! 454b12b0e2a54715a29b56197e0b26ad  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint.cc
! 8708d483e2ebc7d04fa5a83dad157381  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc
! e2c1ff17157b913cca263133c3b45206  libstdc++-v3/testsuite/20_util/allocator_traits/members/construct.cc
! 73efaab81d4dce5380de65dc213c2a61  libstdc++-v3/testsuite/20_util/allocator_traits/members/destroy.cc
! 43d4c297d85ee3226fd6c9484547f399  libstdc++-v3/testsuite/20_util/allocator_traits/members/is_always_equal.cc
! 971d8de26d85df7190a005ae9df438de  libstdc++-v3/testsuite/20_util/allocator_traits/members/max_size.cc
! d1b2a49158dd7ef16d2c30963706204e  libstdc++-v3/testsuite/20_util/allocator_traits/members/pointers.cc
! bc3e5d18e81309aaa3663842c25793b1  libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc
! 87cf798e0bf4d1090354cb086b0c9dc8  libstdc++-v3/testsuite/20_util/allocator_traits/members/select.cc
! 9d0e77a130dabdb51cd3088966c097d3  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc
! 9a457d65594fa59471232b6fa4e55a96  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs.cc
! 46f9d3e426c143207b8a20997f48fa46  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs2.cc
! 518b2504982a353ee03a1d67627ee80a  libstdc++-v3/testsuite/20_util/any/assign/1.cc
! 7560a56c6b57bc1bfe3cab1aa14732dc  libstdc++-v3/testsuite/20_util/any/assign/2.cc
! b23d8220c3c4e6866e0b70777d2b719f  libstdc++-v3/testsuite/20_util/any/assign/92878_92947.cc
! 2a20d8155d3d7a2f430580139b53c06b  libstdc++-v3/testsuite/20_util/any/assign/emplace.cc
! f68586fa6289e3fa1a8848db0fa4b023  libstdc++-v3/testsuite/20_util/any/assign/exception.cc
! ba0d4cc38eb5a1a4f222b889dc508f98  libstdc++-v3/testsuite/20_util/any/assign/self.cc
! a3299501709bf36640f0f61f1d1ad42d  libstdc++-v3/testsuite/20_util/any/cons/1.cc
! ff2da516b9833d1dc382b650dc00e0f6  libstdc++-v3/testsuite/20_util/any/cons/2.cc
! f8bbb4ac61ba42c4822af488adc61176  libstdc++-v3/testsuite/20_util/any/cons/90415.cc
! f6a4d99870925b88fba528272041ca2a  libstdc++-v3/testsuite/20_util/any/cons/92156.cc
! c5cfc6b55ebf507bc83fb83d29e4defc  libstdc++-v3/testsuite/20_util/any/cons/92878_92947.cc
! ad3388e4ccb446050890a0b0239bd193  libstdc++-v3/testsuite/20_util/any/cons/aligned.cc
! 6c46e3aa21061ed87068d6d3a7b79a40  libstdc++-v3/testsuite/20_util/any/cons/explicit.cc
! db38913b6e5a55d87a9215e74c7b8b76  libstdc++-v3/testsuite/20_util/any/cons/in_place.cc
! 96e45eb416fe98404841ab0c62c75a3a  libstdc++-v3/testsuite/20_util/any/cons/nontrivial.cc
! 7d83715f75777d2006e1f8cfb596c2c6  libstdc++-v3/testsuite/20_util/any/make_any.cc
! c276b747e9e62e7a14b580774d6a6285  libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc
! 4f638ff412bb43615113a1d4d75a49e8  libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc
! c1e31377ca7c62152d14435aed73ca45  libstdc++-v3/testsuite/20_util/any/misc/any_cast_no_rtti.cc
! 9a176250de27aff8701d51a9ffd6a85e  libstdc++-v3/testsuite/20_util/any/misc/swap.cc
! f8f1f4d893537ff6abe38315de74763d  libstdc++-v3/testsuite/20_util/any/modifiers/1.cc
! 9ed7d8022d1d092f2f90c64749514737  libstdc++-v3/testsuite/20_util/any/modifiers/83658.cc
! a3aa025b7326cf5512ccfc75befeb0cc  libstdc++-v3/testsuite/20_util/any/modifiers/92156.cc
! 8edae2eba9acf58a30e258dc82d8f30c  libstdc++-v3/testsuite/20_util/any/observers/type.cc
! 58e54953d69de91773baee41b34bdee7  libstdc++-v3/testsuite/20_util/any/requirements.cc
! 9e8137ff2a288fd3cf88eadcdcf9a2a5  libstdc++-v3/testsuite/20_util/any/typedefs.cc
! 786b4de777101230f342c8cb48417784  libstdc++-v3/testsuite/20_util/as_const/1.cc
! 7c907f0450690e09114fae3618467271  libstdc++-v3/testsuite/20_util/as_const/rvalue_neg.cc
! ce9968392f2d9bd735d5819821f50ae5  libstdc++-v3/testsuite/20_util/assume_aligned/1.cc
! 97dfa7e9a41435ef613b11a1c68661d6  libstdc++-v3/testsuite/20_util/assume_aligned/2_neg.cc
! edc69b37db3e5aeb1ed18f8318dac7fc  libstdc++-v3/testsuite/20_util/assume_aligned/3.cc
! ac6e25340eaf5c0d405f288413c63556  libstdc++-v3/testsuite/20_util/assume_aligned/97132.cc
! 6d90adcd40c713c3480236ae12fc6459  libstdc++-v3/testsuite/20_util/auto_ptr/1.cc
! 8c4f5f49fc03586648a1585b1d4f5127  libstdc++-v3/testsuite/20_util/auto_ptr/2.cc
! e9ae26c706b935c512393ec66b92ce55  libstdc++-v3/testsuite/20_util/auto_ptr/3.cc
! 3112a4fe512789b5b37f1a080fcd4b53  libstdc++-v3/testsuite/20_util/auto_ptr/3946.cc
! b283c235da3a8dc4a108a91ab0d01171  libstdc++-v3/testsuite/20_util/auto_ptr/4.cc
! ae886cb6835f432eadd6736e364304c0  libstdc++-v3/testsuite/20_util/auto_ptr/5.cc
! c15e6b3d7c7bacb3de178861d8b19745  libstdc++-v3/testsuite/20_util/auto_ptr/6.cc
! c8eb159622af3379d80a7ff6dbfb413b  libstdc++-v3/testsuite/20_util/auto_ptr/7.cc
! 972c0ccc1f5427f943ab2251a7ae95ce  libstdc++-v3/testsuite/20_util/auto_ptr/assign_neg.cc
! abf81655129d7d4a3d171866cd91d462  libstdc++-v3/testsuite/20_util/auto_ptr/requirements/explicit_instantiation/1.cc
! 15f34bc9397ed65f726608db85010ae7  libstdc++-v3/testsuite/20_util/bad_function_call/cons_virtual_derivation.cc
! f4f03bafd83ce1cca00fe1a989a542fa  libstdc++-v3/testsuite/20_util/bad_function_call/what.cc
! 607cfeaeda2f05cee57f528d6499869a  libstdc++-v3/testsuite/20_util/bind/35569.cc
! 202b36ae45f2cfd9bef718595eaa6b1e  libstdc++-v3/testsuite/20_util/bind/38889.cc
! bde0bd273b76c8e3652f114367b06d6f  libstdc++-v3/testsuite/20_util/bind/42593.cc
! cb6a4b8ffe88a2602a4a8e6e057b43dc  libstdc++-v3/testsuite/20_util/bind/45924.cc
! 3becaf018fd3ab4214a1258ec060dca7  libstdc++-v3/testsuite/20_util/bind/48698.cc
! d83e730d914d2933411a07fb7203c4ba  libstdc++-v3/testsuite/20_util/bind/49058_1.cc
! 62904729df4475609daeed7a6b0cab4e  libstdc++-v3/testsuite/20_util/bind/49058_2.cc
! 2a99f3295a021e79dd7d88c890c3bc88  libstdc++-v3/testsuite/20_util/bind/57899.cc
! 9cb0e1022640d84357b24e1f70c0627f  libstdc++-v3/testsuite/20_util/bind/60497.cc
! b4cc4161a11ef2d134c29d8abb9d3b38  libstdc++-v3/testsuite/20_util/bind/68912.cc
! 6034d6ba545a17eac17c4ecd60b2cbaa  libstdc++-v3/testsuite/20_util/bind/79798.cc
! 6e13fb7f1bba4f5d28fc878c7e6a02ee  libstdc++-v3/testsuite/20_util/bind/83427.cc
! be3327b5fb01863ef9a903e43ca66167  libstdc++-v3/testsuite/20_util/bind/91371.cc
! 9e783627172973c0d7ecea59a9dcc474  libstdc++-v3/testsuite/20_util/bind/all_bound.cc
! ef388a98c02b5f0512a8edc4131178d9  libstdc++-v3/testsuite/20_util/bind/constexpr.cc
! f24ef66222c5db60d8bba755c741805c  libstdc++-v3/testsuite/20_util/bind/conv_result.cc
! a09cc50b33219a28c9288fdf8a20e4a0  libstdc++-v3/testsuite/20_util/bind/cv_quals.cc
! 8fe6aa04c7f803409a60f51730852f87  libstdc++-v3/testsuite/20_util/bind/cv_quals_2.cc
! 63fc0d2fa25414d35f794262c7886281  libstdc++-v3/testsuite/20_util/bind/cv_quals_3.cc
! e73e2be9d3626aeedf1b6bba1a5646a3  libstdc++-v3/testsuite/20_util/bind/is_placeholder_v.cc
! f4229dee791b024bb8699da45f7ac896  libstdc++-v3/testsuite/20_util/bind/move.cc
! 1538c4b5cc1842245ae087bbdb9d3b84  libstdc++-v3/testsuite/20_util/bind/nested.cc
! 02afa4ecc1a1e5908804df3509d4cbc5  libstdc++-v3/testsuite/20_util/bind/placeholders.cc
! 4f61c4ea60eca64b5ea631b4db216aa0  libstdc++-v3/testsuite/20_util/bind/ref.cc
! b6621c31fb87afd1f3c5f9c87c7d7215  libstdc++-v3/testsuite/20_util/bind/ref2.cc
! 6aacb5aa912bc906c4d2963776aa9a69  libstdc++-v3/testsuite/20_util/bind/ref_neg.cc
! ad51f76f92115fec03463c69a2309e8d  libstdc++-v3/testsuite/20_util/bind/refqual.cc
! 9e14912bdc2a5bc1ab28c6ff4e4f7b24  libstdc++-v3/testsuite/20_util/bind/socket.cc
! d96ebfaf6dd360f5261a2044da5a0c00  libstdc++-v3/testsuite/20_util/bool_constant/requirements.cc
! f622668a4c35fcef294e3caf26811077  libstdc++-v3/testsuite/20_util/common_reference/requirements/alias_decl.cc
! 415c9655ce786c9705ac1f2c679e8d1e  libstdc++-v3/testsuite/20_util/common_reference/requirements/explicit_instantiation.cc
! 26138a4790627b72ab13000211971d04  libstdc++-v3/testsuite/20_util/common_reference/requirements/typedefs.cc
! 999b246f0be8a98eefb40899b3d9f17b  libstdc++-v3/testsuite/20_util/common_type/requirements/alias_decl.cc
! ed4265d02bb9c8e183cb33cb5f3e3dad  libstdc++-v3/testsuite/20_util/common_type/requirements/explicit_instantiation.cc
! f01e0735d4b7c903731d82c5b7b7fb31  libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc
! b5845f5f6eef5d51e8300e8b9682b65f  libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc
! 6120970692baab7ea63065224096f8e5  libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-1.cc
! ec06534cb1d1b809fc74fddbfd797944  libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-2.cc
! 2ddbb3795eb1089cdebdbc8d8fd32fc4  libstdc++-v3/testsuite/20_util/conditional/requirements/alias_decl.cc
! d2a617b4f6e9127b790d34f60c1233a7  libstdc++-v3/testsuite/20_util/conditional/requirements/explicit_instantiation.cc
! 8882a65bfeb8c6c602fda3d3565414a1  libstdc++-v3/testsuite/20_util/conditional/requirements/typedefs.cc
! 96c275423771da8b3f8f2c9f921437fc  libstdc++-v3/testsuite/20_util/decay/requirements/alias_decl.cc
! 5afc8b5c0a04137ad4133adc1aad5c5c  libstdc++-v3/testsuite/20_util/decay/requirements/explicit_instantiation.cc
! f07e9d46dee6526fb9c0fa96a2836168  libstdc++-v3/testsuite/20_util/decay/requirements/typedefs.cc
! 3996ae85c53cc3e31cf0b61d6e531b43  libstdc++-v3/testsuite/20_util/declval/requirements/1.cc
! 9a5210345be4dde7ba93cb65a10ea626  libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
! 549db046bb2b4c762f5beb02c954821e  libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc
! 121ed09f89185e50fef4223394c067b1  libstdc++-v3/testsuite/20_util/default_delete/cons/constexpr.cc
! ae540d904ec0b0edc3f254076a1607c7  libstdc++-v3/testsuite/20_util/default_delete/void_neg.cc
! c239e64c89b941c1031dcfb9c401a4aa  libstdc++-v3/testsuite/20_util/duration/arithmetic/1.cc
! bffcd48d0570eb9828adec392d4b3de6  libstdc++-v3/testsuite/20_util/duration/arithmetic/2.cc
! 14d102e42b49b11ef8bf98b7bc38162e  libstdc++-v3/testsuite/20_util/duration/arithmetic/58850.cc
! 04b379f2f557566a75d65ffd196c7f53  libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr.cc
! dacfb9ef9af035d24c1ac2eff0b7e857  libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr_c++17.cc
! 266a9d9d46ab67091ca0e2522782311d  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr2020.cc
! f0bbd3d08b2c44e19c1c4c87f0fef4b8  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr3050.cc
! 84262430168ce80e657434b0eca8d423  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr934-1.cc
! 92a98cc859bc1725d87d77a866a8a1e1  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr934-2.cc
! a3c2ded1903092dee22e4b128b2df43b  libstdc++-v3/testsuite/20_util/duration/comparison_operators/1.cc
! 57c8858ec45d47a186ddd86a2ae56b1a  libstdc++-v3/testsuite/20_util/duration/comparison_operators/constexpr.cc
! 4bdafa1349f1acf3bc15cf2dd3701228  libstdc++-v3/testsuite/20_util/duration/comparison_operators/three_way.cc
! 04f3aec8e9e5e83674e088bfd0878a6c  libstdc++-v3/testsuite/20_util/duration/cons/1.cc
! eec98ce001eaca337027457dcdd0abdf  libstdc++-v3/testsuite/20_util/duration/cons/1_neg.cc
! 78c5194acd523eb8bb70dc40bba37506  libstdc++-v3/testsuite/20_util/duration/cons/2.cc
! 4ba4a976138119dfa69c6a5c3089f6c1  libstdc++-v3/testsuite/20_util/duration/cons/54025.cc
! b5636d1084e16acd030ca0316edb164d  libstdc++-v3/testsuite/20_util/duration/cons/constexpr.cc
! 80b58ee6285a00cc18e17d9d9bc09157  libstdc++-v3/testsuite/20_util/duration/cons/dr1177.cc
! 6386077363bb13acfeaa0def08f6e5b4  libstdc++-v3/testsuite/20_util/duration/cons/dr2094.cc
! 8da81f3f1f280b59e97127162d8483b3  libstdc++-v3/testsuite/20_util/duration/cons/dr3050.cc
! 5584f0e1d3da88b18c3ff8d136283ec8  libstdc++-v3/testsuite/20_util/duration/cons/dr974_neg.cc
! c9b63103feccf037e6a9876be472eec7  libstdc++-v3/testsuite/20_util/duration/literals/61166.cc
! e7225cd5b5292c85be660357ec3ac331  libstdc++-v3/testsuite/20_util/duration/literals/65499.cc
! 825a87163e261d236e02ab50942422b9  libstdc++-v3/testsuite/20_util/duration/literals/84671.cc
  f11b5a7d64db419bf2305c0f433c638b  libstdc++-v3/testsuite/20_util/duration/literals/ns_detail.cc
! eae29a5fb5256d7ffc0d7020aaa72a1f  libstdc++-v3/testsuite/20_util/duration/literals/range_neg.cc
! 93c8e966a159421640cdd28884d2bc1b  libstdc++-v3/testsuite/20_util/duration/literals/types.cc
! 56e390ec9d076658ce04bbcb77002f61  libstdc++-v3/testsuite/20_util/duration/literals/values.cc
! cc36f23f1d73ca35deb65062c084b3c0  libstdc++-v3/testsuite/20_util/duration/requirements/constexpr_functions.cc
! 81e3e413f446af4bbd1ae9bbc7dba3c8  libstdc++-v3/testsuite/20_util/duration/requirements/explicit_instantiation/explicit_instantiation.cc
! 7708ba31c65f168972b1c954b266d902  libstdc++-v3/testsuite/20_util/duration/requirements/noexcept.cc
! fc9376cd50b39801c89800df02a371a8  libstdc++-v3/testsuite/20_util/duration/requirements/reduced_period.cc
! 135f2f9cdd11d9143fd92d1268887974  libstdc++-v3/testsuite/20_util/duration/requirements/sfinae_friendly_1.cc
! 214be1619609618240e7005f455b5590  libstdc++-v3/testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc
! 166f4f1631c6c8abd84d685ad2d345c3  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg1.cc
! cbdf7538c4361a2607d10881eeffffab  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg2.cc
! 0b3d30ff1c47f0c5db9a136980aa4341  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg3.cc
! 0170b1b215999e41103ceab614df8c0c  libstdc++-v3/testsuite/20_util/duration_cast/constexpr.cc
! ac9d1ae3f380aa4a9535290d7d540c93  libstdc++-v3/testsuite/20_util/duration_cast/rounding.cc
! baa1449ebd7de3243374edef2752f2f8  libstdc++-v3/testsuite/20_util/duration_cast/rounding_c++11.cc
! 09b4bf1c154d85c7232396978948be02  libstdc++-v3/testsuite/20_util/enable_if/requirements/alias_decl.cc
! 9131f0633e9205a6ee91e03c9bc0de2e  libstdc++-v3/testsuite/20_util/enable_if/requirements/explicit_instantiation.cc
! f4942d2e9f083015368156272559b2d2  libstdc++-v3/testsuite/20_util/enable_if/requirements/typedefs.cc
! 6e30493e480ac860a9c9e8f9ce482098  libstdc++-v3/testsuite/20_util/enable_if/requirements/typedefs_neg.cc
! a6443fdc397c92d0f7c64da1a0b3164c  libstdc++-v3/testsuite/20_util/enable_shared_from_this/56383.cc
! 75f8452f541e8afecae999457f7e6482  libstdc++-v3/testsuite/20_util/enable_shared_from_this/89303.cc
! 334def83be46190897f593f4fc370236  libstdc++-v3/testsuite/20_util/enable_shared_from_this/cons/constexpr.cc
! 1bf4f6e5aea3335b9b47df676a52020e  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/assign.cc
! 526909794809b8b9360c6e026b499b62  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/const.cc
! 6db677ea58ed3972f3dd1009de7cdf5b  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc
! c59a49e8fd4d2841bf5fbb488af3cafe  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/unique_ptr.cc
! 56753311613b31c7ba88fd7021da5ba0  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc
! d88931a7796d02c29a4b18b318135d67  libstdc++-v3/testsuite/20_util/enable_shared_from_this/requirements/explicit_instantiation.cc
! 6b3812890fa5008e9dca751a14d3a38e  libstdc++-v3/testsuite/20_util/exchange/1.cc
! 6e9b35718e888a33c12f78018e80b255  libstdc++-v3/testsuite/20_util/exchange/constexpr.cc
! 018dc5aa6ecda61289bae29b039caa32  libstdc++-v3/testsuite/20_util/extent/requirements/explicit_instantiation.cc
! daa117a2da905ad06c1deee104cacd3d  libstdc++-v3/testsuite/20_util/extent/requirements/typedefs.cc
! 298fc1c006982f40b9038dfa7a5a12f4  libstdc++-v3/testsuite/20_util/extent/value.cc
! 2082b529b20f461383fb2ea0b45910da  libstdc++-v3/testsuite/20_util/forward/1.cc
! b9ebb4b63e2d315728ec842428c698c7  libstdc++-v3/testsuite/20_util/forward/1_neg.cc
! 2d64e847c77b2d588a0ccd9bb45ce6dd  libstdc++-v3/testsuite/20_util/forward/a.cc
! d25215613f40955f5a7fd442fb131458  libstdc++-v3/testsuite/20_util/forward/b.cc
! 7d34b07a296e7488384e9c7466f6545e  libstdc++-v3/testsuite/20_util/forward/c_neg.cc
! 51e689c4fa06db0a2cae228687363af2  libstdc++-v3/testsuite/20_util/forward/d.cc
! e3ad3ddb332d6e3943018f602b2bb29e  libstdc++-v3/testsuite/20_util/forward/e.cc
! cf98a05d7dc8c0c9f43d5589eb6fb0ff  libstdc++-v3/testsuite/20_util/forward/f_neg.cc
! 6305321239f725beb7a0f5d4c13e2677  libstdc++-v3/testsuite/20_util/forward/requirements/explicit_instantiation.cc
! 119831d0cdee2eea498cb43e73c03fe9  libstdc++-v3/testsuite/20_util/from_chars/1.cc
! 89452d2c4edd9cf5ebef1e7b76e6cae9  libstdc++-v3/testsuite/20_util/from_chars/1_c++20_neg.cc
! 6bd2b6e93fc9e40e56cc4fffe4d3d228  libstdc++-v3/testsuite/20_util/from_chars/1_neg.cc
! a6110c4b49ec7f62741f6522e32a6c6b  libstdc++-v3/testsuite/20_util/from_chars/2.cc
! b452bcbd65079a0ade852a6033eafcdb  libstdc++-v3/testsuite/20_util/from_chars/3.cc
! f3ccdf4af13dcd90b2d482870fb5c408  libstdc++-v3/testsuite/20_util/from_chars/4.cc
! 7c06b66f04ab4eec4b2c5fddbedb2ef7  libstdc++-v3/testsuite/20_util/from_chars/5.cc
! 876e65536f484bd6edb44cae8b8e1073  libstdc++-v3/testsuite/20_util/from_chars/6.cc
! f9142ca7542677ebcdbdfcd2a8c64199  libstdc++-v3/testsuite/20_util/from_chars/compare.cc
! ae6ff21ead6a9fa6a0de46170016283f  libstdc++-v3/testsuite/20_util/from_chars/requirements.cc
! e96c312728ed1f0052831242b1e0499c  libstdc++-v3/testsuite/20_util/function/1.cc
! 97923bb98b81c72f4e8849de83c22bd6  libstdc++-v3/testsuite/20_util/function/10.cc
! 2e2712ce9cea35684fcdd4fb124d4c84  libstdc++-v3/testsuite/20_util/function/2.cc
! ebdcbaf5bfbe4c58d5dc08a93e5c265b  libstdc++-v3/testsuite/20_util/function/3.cc
! c1111357f10cd79ce5dd15aa0c4d80e6  libstdc++-v3/testsuite/20_util/function/4.cc
! 83e4f96ccca027120fa657b1962be8e8  libstdc++-v3/testsuite/20_util/function/43397.cc
! 06bb5069518c591d03a1a249b8b25c83  libstdc++-v3/testsuite/20_util/function/48541.cc
! b67968a4c35ab94dfe33b5804fcaf014  libstdc++-v3/testsuite/20_util/function/5.cc
! 07e0e76d1c2180bb6bb73c087be9347c  libstdc++-v3/testsuite/20_util/function/58569.cc
! 6c3cd0e25c726b64ccd3b8628e7e8361  libstdc++-v3/testsuite/20_util/function/6.cc
! 273c34775cf9af081a47a8c88621ec5a  libstdc++-v3/testsuite/20_util/function/60594.cc
! 0460b6cd523c01656f5af8f3f0d0af52  libstdc++-v3/testsuite/20_util/function/63840.cc
! 42d4489439defd6a12af7fd81d36efe5  libstdc++-v3/testsuite/20_util/function/65760.cc
! b7659674575b55ae28ae26208c06f86c  libstdc++-v3/testsuite/20_util/function/68995.cc
! 217be4d5bfe07ce667024b28f4a014f5  libstdc++-v3/testsuite/20_util/function/69222.cc
! 03cfd8b6ffe676644b846fe73d51ee4b  libstdc++-v3/testsuite/20_util/function/7.cc
! 96d921c2408761c0a5516d6efaf8e961  libstdc++-v3/testsuite/20_util/function/77322.cc
! 80e67d1d6c88fdcced6ddcd4eb961b3b  libstdc++-v3/testsuite/20_util/function/8.cc
! cf62ca28be8b88a47b8cf971822d9144  libstdc++-v3/testsuite/20_util/function/9.cc
! 4ddef203d670517aa5b5df662233e6f1  libstdc++-v3/testsuite/20_util/function/91456.cc
! 850abcae89e2cf4bab20c24e79db157d  libstdc++-v3/testsuite/20_util/function/assign/move.cc
! a64ab80d842e951c373cd4d16df73af7  libstdc++-v3/testsuite/20_util/function/assign/move_target.cc
! f6e5afd1d31b7aff453bbbd6c2121329  libstdc++-v3/testsuite/20_util/function/cmp/cmp_neg.cc
! 3ef1d08e329263c96c8081c3d74f2eb9  libstdc++-v3/testsuite/20_util/function/cons/55320.cc
! eaa6839a699600b5a99bbaaa55f47556  libstdc++-v3/testsuite/20_util/function/cons/57465.cc
! 87a93fd6f2101578f52adefd5117dc12  libstdc++-v3/testsuite/20_util/function/cons/72820.cc
! 7c2add666c179c76abbcb6adde058817  libstdc++-v3/testsuite/20_util/function/cons/addressof.cc
! 5eb2163115862edede72379dd2ba154f  libstdc++-v3/testsuite/20_util/function/cons/callable.cc
! 264259dbd9f327fde776e5aa5b397e0a  libstdc++-v3/testsuite/20_util/function/cons/deduction.cc
! 664a5449951c8654f642774e8182b3a6  libstdc++-v3/testsuite/20_util/function/cons/move.cc
! 10dcfb92be128afd10ad0ceeb7b73968  libstdc++-v3/testsuite/20_util/function/cons/move_target.cc
! e59f93cab5834149979fdde2d9c80143  libstdc++-v3/testsuite/20_util/function/cons/non_copyconstructible.cc
! efa81f1461b098de8b83762b823f381f  libstdc++-v3/testsuite/20_util/function/cons/refqual.cc
! e0f31486735849e79af822e97c40f893  libstdc++-v3/testsuite/20_util/function/invoke/forwarding.cc
! 023b3c2803556f0dbb3d28831239ca31  libstdc++-v3/testsuite/20_util/function/invoke/move_only.cc
! de7da92782b74c2892a86aaa555b5a57  libstdc++-v3/testsuite/20_util/function/null_pointer_comparisons.cc
! e91fdb41a4e4cfa15e250db073ad94dc  libstdc++-v3/testsuite/20_util/function/requirements/explicit_instantiation.cc
! 27c59e84ea196d740361c1dc71d12cbb  libstdc++-v3/testsuite/20_util/function/target_no_rtti.cc
! a17319fefd47ee1f6dceff6b3a865610  libstdc++-v3/testsuite/20_util/function_objects/83607.cc
! bdd68490d8c01e7aba32cace755ef834  libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc
! 585c90d0aa3c6acb937e3c62b2a92078  libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc
! 92284f472595f939febbab9a06f513f0  libstdc++-v3/testsuite/20_util/function_objects/bind_front/97101.cc
! d54592ed6214e0579ec1b657ea19a610  libstdc++-v3/testsuite/20_util/function_objects/bind_front/constexpr.cc
! a75ed32b273893981943843dbf7adfbb  libstdc++-v3/testsuite/20_util/function_objects/binders/1.cc
! 592aa438ad4494b4f63adf67715ad169  libstdc++-v3/testsuite/20_util/function_objects/binders/3113.cc
! 39e42433878d8edf56dbd423b74839ad  libstdc++-v3/testsuite/20_util/function_objects/comparisons.cc
! a6c566307f7a75e5eb8c842e4860511c  libstdc++-v3/testsuite/20_util/function_objects/comparisons_pointer.cc
! 094efca80f1a00eebb8cc94bd4dfa5b4  libstdc++-v3/testsuite/20_util/function_objects/comparisons_void.cc
! 5224d4c1fb3c9d7c7161a3104d1ce983  libstdc++-v3/testsuite/20_util/function_objects/constexpr.cc
! 08b2d16cb1953b078f045ec12b74448f  libstdc++-v3/testsuite/20_util/function_objects/constexpr_searcher.cc
! b8c1a06744f48d117c2e1921698e0507  libstdc++-v3/testsuite/20_util/function_objects/dr660.cc
! 0defe7e29bd2adf3c7f84b179d848f90  libstdc++-v3/testsuite/20_util/function_objects/identity/1.cc
! 70d5f49ffeced59deaa267053d40a226  libstdc++-v3/testsuite/20_util/function_objects/invoke/1.cc
! de42b887f28be59d393364b56096ac18  libstdc++-v3/testsuite/20_util/function_objects/invoke/2.cc
! b6fb5a5ce5f1403b7fdbef39bbeb67f5  libstdc++-v3/testsuite/20_util/function_objects/invoke/3.cc
! 5b6f3d0bd6622829547094a803d18049  libstdc++-v3/testsuite/20_util/function_objects/invoke/59768.cc
! c46d1fd426e112f69e7f7461ec6d0f6d  libstdc++-v3/testsuite/20_util/function_objects/invoke/constexpr.cc
! 4af134ad86d10b999c48c68e2af9e88d  libstdc++-v3/testsuite/20_util/function_objects/invoke/ref_ext.cc
! 104ddc7a70c5a18ccaabe002976813c5  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/55463.cc
! e983c2cdc73aefb22d54a74b6f256df3  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/55908.cc
! d6b7537c7aae06d6897baf21aa2ac6ef  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/68982.cc
! 84df97d74ba88e2d5cebcbd343bce50f  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/80478.cc
! 9c09ba5a0dfc93034d745d3b14fbe2bd  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/adl.cc
! 5ffde1c33bfc0c1df37ac473957bb6b1  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/constexpr.cc
! cabda01abc220c68522f774d2450a9c4  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/forward.cc
! 0aaab47ae61b2ed7a70e475ce6fd6270  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/refqual.cc
! 023658fdf14ee1f7b11d0373db11da11  libstdc++-v3/testsuite/20_util/function_objects/not_fn/1.cc
! 9929d0abb414f2148881a3d3344e477f  libstdc++-v3/testsuite/20_util/function_objects/not_fn/87538.cc
! c08880f96a757280025c19b18d0a8bec  libstdc++-v3/testsuite/20_util/function_objects/not_fn/constexpr.cc
! 37b75d811c487b2c61614abda594dd66  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/equal_to.cc
! c09d26239fcd60966e280ae6fa737a90  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/greater.cc
! ae13809717a755eaf6db3d1abc5c4d87  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/greater_equal.cc
! 52dff2dcccc9143e7536133d6691c3d5  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/less.cc
! bc3f83937a862e1b9bf726ad07eee7c6  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/less_equal.cc
  36c7e25fd78fe269cdcacaa2a008ede5  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/lwg3530.cc
! 9ec1b800b9f8878cb5f185897018c8bb  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/not_equal_to.cc
! 9f5ac8d5f33c2c7ac8abd79849f9db68  libstdc++-v3/testsuite/20_util/function_objects/searchers.cc
! 838e6128fbba26a34306b0173b5dbe07  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc
! 1977fc6aabdfaba9aa6f17bb07dc0e9c  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc
! 2a31ba330be7002df6b28af2bffc08e6  libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc
! 18597d64826a9cefb5ef92b17a4983b6  libstdc++-v3/testsuite/20_util/has_virtual_destructor/requirements/explicit_instantiation.cc
! 43fb854986fbc39581d4f4655aee352e  libstdc++-v3/testsuite/20_util/has_virtual_destructor/requirements/typedefs.cc
! d3acb2eea307a47061e09ecceb689f6a  libstdc++-v3/testsuite/20_util/has_virtual_destructor/value.cc
! 2bc33347d129d51ff84ea5ed31f46e45  libstdc++-v3/testsuite/20_util/hash/52931.cc
! a797e93e073c1faf5fb3777e382fb9be  libstdc++-v3/testsuite/20_util/hash/60970.cc
! 37ef4ae91073e7316f2700c6c92a1963  libstdc++-v3/testsuite/20_util/hash/84998.cc
! 94aa7221a6366423784ae4ba316b98a3  libstdc++-v3/testsuite/20_util/hash/89629.cc
! 1f2615a9a7536859d65d7d20990baf7a  libstdc++-v3/testsuite/20_util/hash/chi2_q_bit_flip_set.cc
! 79cb3aa90d5a58d74c03c9370f6a25ac  libstdc++-v3/testsuite/20_util/hash/chi2_q_bit_string_set.cc
! ba6a4b1d958ad23f197d5af23dde5004  libstdc++-v3/testsuite/20_util/hash/chi2_q_document_words.cc
! 0b87205adddbbff000df100248e41004  libstdc++-v3/testsuite/20_util/hash/chi2_q_numeric_pattern_set.cc
! 0b4c7c5af7c55aa9758ea57ffd031577  libstdc++-v3/testsuite/20_util/hash/chi2_q_uniform_random.cc
! 228d05c65f665e4c3538f139fa3784f0  libstdc++-v3/testsuite/20_util/hash/chi2_quality.h
! ebada1f02784d97a18ddee5c0e0db105  libstdc++-v3/testsuite/20_util/hash/nullptr.cc
! 35c7e017fef650b83bd1fa4a888146d2  libstdc++-v3/testsuite/20_util/hash/operators/size_t.cc
! f4c925ad6a38f720cca03d646e99d3eb  libstdc++-v3/testsuite/20_util/hash/quality.cc
! a3b6d8ea33fca377de442091052fb3ad  libstdc++-v3/testsuite/20_util/hash/requirements/explicit_instantiation.cc
! a4dd7efa3df4b430e951c8f74b5685d4  libstdc++-v3/testsuite/20_util/headers/cstdlib/functions_std.cc
! 3cabefdd86312dd3fca6ceb68ed1f17c  libstdc++-v3/testsuite/20_util/headers/cstring/functions_std.cc
! 585129c451ae7eda763b895a4807d13a  libstdc++-v3/testsuite/20_util/headers/cstring/macros.cc
! e025f8ff19faaedbbdca0c9f69779c63  libstdc++-v3/testsuite/20_util/headers/cstring/types_std.cc
! 24e6d8853810feb667b33a4ed1d2962b  libstdc++-v3/testsuite/20_util/headers/ctime/functions_std.cc
! 799dbab23b9089855c633204a4915b61  libstdc++-v3/testsuite/20_util/headers/ctime/macros.cc
! dfffc1463479973ad1050023a528463d  libstdc++-v3/testsuite/20_util/headers/ctime/types_std.cc
! e3e73bb1107b41c31aa9811fb34f7053  libstdc++-v3/testsuite/20_util/headers/functional/synopsis.cc
! f7c14272401ed4e7a49ff0a38d31281d  libstdc++-v3/testsuite/20_util/headers/functional/types_std_c++0x.cc
! f492ac6e62ea38857c7acd31b9db6c00  libstdc++-v3/testsuite/20_util/headers/functional/using_namespace_std_placeholders.cc
! bc77268969f1def2cd70c7151e3199d6  libstdc++-v3/testsuite/20_util/headers/memory/synopsis.cc
! 42c846f3a7e686424a9f70c0310b0ddb  libstdc++-v3/testsuite/20_util/headers/memory/types_std_c++0x.cc
! 8d345546532418c775d96a8365cef4f4  libstdc++-v3/testsuite/20_util/headers/type_traits/std_c++0x_neg.cc
! 0706569a991d632238b138b5b1f963ec  libstdc++-v3/testsuite/20_util/headers/type_traits/types_std_c++0x.cc
! 1c9da3a0e75a49c7a2885251c3535ce0  libstdc++-v3/testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc
! 609c7892363e47fbcfc1b4d95de46ee4  libstdc++-v3/testsuite/20_util/headers/utility/synopsis.cc
! 7aa1ee38274adb91881b14bcf213f0eb  libstdc++-v3/testsuite/20_util/headers/utility/using_namespace_std_rel_ops.cc
! dd5cdf24ea64035dcee8707d7cfb14ee  libstdc++-v3/testsuite/20_util/in_place/requirements.cc
! d3cc1c441c25efc27fd036b387be9318  libstdc++-v3/testsuite/20_util/integer_comparisons/1.cc
! 42deea84c1e5f4bcb12dc3be5f94e559  libstdc++-v3/testsuite/20_util/integer_comparisons/2.cc
! d0d1654776dfccff0809ac830a8ed639  libstdc++-v3/testsuite/20_util/integer_comparisons/equal.cc
! 677741b8ec87de8ab0d685b43bb7ed8c  libstdc++-v3/testsuite/20_util/integer_comparisons/equal_neg.cc
! 5fd145478b104e494f38be141565346c  libstdc++-v3/testsuite/20_util/integer_comparisons/greater_equal.cc
! cc2c834d24fde49e9b39d5fdc21a1036  libstdc++-v3/testsuite/20_util/integer_comparisons/greater_equal_neg.cc
! 73941640eda6ad80833bff73ab600f99  libstdc++-v3/testsuite/20_util/integer_comparisons/greater_neg.cc
! 1ba63da49f446aa61ae4eece9dcdf0e4  libstdc++-v3/testsuite/20_util/integer_comparisons/in_range.cc
! 3a808b88ff8bc53eebb599b8846d8ca9  libstdc++-v3/testsuite/20_util/integer_comparisons/in_range_neg.cc
! 41f8e6faea974f81048b7e7b2703e87b  libstdc++-v3/testsuite/20_util/integer_comparisons/less.cc
! b8cc0f425b7279d2a7bb8dcff88e0079  libstdc++-v3/testsuite/20_util/integer_comparisons/less_equal.cc
! ebd1e27c1fabfae2ef9106e1af190bd0  libstdc++-v3/testsuite/20_util/integer_comparisons/less_equal_neg.cc
! fe02c44fa83bf1abd4e8e421763db1c3  libstdc++-v3/testsuite/20_util/integer_comparisons/less_neg.cc
! 838931508535aea3cd86c8c312864fc8  libstdc++-v3/testsuite/20_util/integer_comparisons/not_equal.cc
! 677741b8ec87de8ab0d685b43bb7ed8c  libstdc++-v3/testsuite/20_util/integer_comparisons/not_equal_neg.cc
! 40f5e1f8a5ca516f07c6130a54751e24  libstdc++-v3/testsuite/20_util/integer_sequence/intseq.cc
! 79f7cfe5881b0b28786f2b954c1f68b8  libstdc++-v3/testsuite/20_util/integer_sequence/requirements/typedefs.cc
! cb6a4a4c95418eeed0f87f65e932d1bc  libstdc++-v3/testsuite/20_util/integral_constant/call_operator.cc
! 5913c1f46d1efe34bc33bf1b27f30367  libstdc++-v3/testsuite/20_util/integral_constant/operator_value_type.cc
! 135c20ad21126813ff94e9edc51ec9a7  libstdc++-v3/testsuite/20_util/integral_constant/requirements/constexpr_data.cc
! 31a042c0c8c2a188c4259ec741064f7f  libstdc++-v3/testsuite/20_util/integral_constant/requirements/explicit_instantiation.cc
! 8ec56c794de8cb91acdbe94eadb1f0f8  libstdc++-v3/testsuite/20_util/integral_constant/requirements/typedefs.cc
! 3456d847976ccf71a49950615b183109  libstdc++-v3/testsuite/20_util/integral_constant/static_definition.cc
! 66f0408909da52ea8254c17cce80dab1  libstdc++-v3/testsuite/20_util/integral_constant/true_false_type_typedefs.cc
! 2abf8ca38836eb01ab96c862c15b121c  libstdc++-v3/testsuite/20_util/integral_constant/true_false_value.cc
! d987e0752db4242b8deedbd340a2baa4  libstdc++-v3/testsuite/20_util/invoke_result/incomplete_args_neg.cc
! b816ed53586535aeacadb58a470d345f  libstdc++-v3/testsuite/20_util/invoke_result/incomplete_neg.cc
! e2ac49a14d9055787d97bbec8f19c1d7  libstdc++-v3/testsuite/20_util/is_abstract/incomplete_neg.cc
! c133a9f27c9f4b66ad7e07480b31c3e8  libstdc++-v3/testsuite/20_util/is_abstract/requirements/explicit_instantiation.cc
! a00696fff4b9dd9c75881d1961aaafab  libstdc++-v3/testsuite/20_util/is_abstract/requirements/typedefs.cc
! 01471015cbc30f0d871b57c88515353e  libstdc++-v3/testsuite/20_util/is_abstract/value.cc
! d809ea2b5e8881b3b790c55435b7015d  libstdc++-v3/testsuite/20_util/is_aggregate/incomplete_neg.cc
! 4242a3de4022bc11e5d7ea4653b14e91  libstdc++-v3/testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc
! 70e0dd55283e1f0f03b53c316a92ce66  libstdc++-v3/testsuite/20_util/is_aggregate/requirements/typedefs.cc
! 0b6102add7007cb9c9133670580657e2  libstdc++-v3/testsuite/20_util/is_aggregate/value.cc
! 568cf4a097460f24d44734c887791a95  libstdc++-v3/testsuite/20_util/is_arithmetic/requirements/explicit_instantiation.cc
! 2da0e9c41fd9198e3d898e9299eac935  libstdc++-v3/testsuite/20_util/is_arithmetic/requirements/typedefs.cc
! 7db964f97760195a4cd40bebc9e87b4f  libstdc++-v3/testsuite/20_util/is_arithmetic/value.cc
! d908d2f4087d72735c929f07493dbcad  libstdc++-v3/testsuite/20_util/is_array/requirements/explicit_instantiation.cc
! 3462215e2cc5f93af9d8353ceaeadbbf  libstdc++-v3/testsuite/20_util/is_array/requirements/typedefs.cc
! 5397c230a79eb970155ff09fbe5e4682  libstdc++-v3/testsuite/20_util/is_array/value.cc
! 7477619def9debbbf4bd1d75a9120c2a  libstdc++-v3/testsuite/20_util/is_assignable/requirements/explicit_instantiation.cc
! 36cc03ff6e196e2f5e183b25b6b712a0  libstdc++-v3/testsuite/20_util/is_assignable/requirements/typedefs.cc
! c3924aa586a12947174ea99d223117c0  libstdc++-v3/testsuite/20_util/is_assignable/value.cc
! 950f9d82a18ca813b2e8a96cfcb6f929  libstdc++-v3/testsuite/20_util/is_base_of/requirements/explicit_instantiation.cc
! 8ae040701d6f9b83fe2ef1eb61dd3433  libstdc++-v3/testsuite/20_util/is_base_of/requirements/typedefs.cc
! f6bcc0d1e40849728276b6e2a06222a7  libstdc++-v3/testsuite/20_util/is_base_of/value.cc
! 43dcd238d749ce7c74bb7c41d9fd3e85  libstdc++-v3/testsuite/20_util/is_bounded_array/requirements/explicit_instantiation.cc
! 10ab1d47587f043d9e83f51a74bfc9a0  libstdc++-v3/testsuite/20_util/is_bounded_array/requirements/typedefs.cc
! 4cc4c586b5a3f7d17b2d40be7beae7af  libstdc++-v3/testsuite/20_util/is_bounded_array/value.cc
! 1a44fd3c6474e8ac88f60c9ee6af33ea  libstdc++-v3/testsuite/20_util/is_class/requirements/explicit_instantiation.cc
! b114290626ed11a6aaaf5060a0f9a1f0  libstdc++-v3/testsuite/20_util/is_class/requirements/typedefs.cc
! 7c157502d03e4fbe8ac6cd41b72bcd8d  libstdc++-v3/testsuite/20_util/is_class/value.cc
! 5688998b3d261b1aa7220bd7b13845b2  libstdc++-v3/testsuite/20_util/is_complete_or_unbounded/memoization.cc
! d13e714d08bee05610a0afad0814017d  libstdc++-v3/testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc
! 9bbf4e85fe787e32ac688b69c084e281  libstdc++-v3/testsuite/20_util/is_complete_or_unbounded/value.cc
! 61f008a95b547beb30f400041e1ac8f1  libstdc++-v3/testsuite/20_util/is_compound/requirements/explicit_instantiation.cc
! 96e3db40bf65515b358d368cf204c537  libstdc++-v3/testsuite/20_util/is_compound/requirements/typedefs.cc
! add178a46e275d81fd5dd8fff41bddce  libstdc++-v3/testsuite/20_util/is_compound/value.cc
! 3024b1cfcfa1f2f7f6216ad5c90a8213  libstdc++-v3/testsuite/20_util/is_const/requirements/explicit_instantiation.cc
! d3543034c0d73b64d0b083ccffe41202  libstdc++-v3/testsuite/20_util/is_const/requirements/typedefs.cc
! 6636fdd743ad650dc91c07543db61037  libstdc++-v3/testsuite/20_util/is_const/value.cc
! d14e1da7e96c04319a714df3a8570d3f  libstdc++-v3/testsuite/20_util/is_constant_evaluated/1.cc
! db7314b434b36bd352c49d46a467ed1f  libstdc++-v3/testsuite/20_util/is_constant_evaluated/noexcept.cc
! b53225c5f7aacc064cf1cb505fde5a79  libstdc++-v3/testsuite/20_util/is_constructible/51185.cc
  a5e184714ddd867798fa94c2ebe2c9fe  libstdc++-v3/testsuite/20_util/is_constructible/68430.cc
! f0c3d97f1bd5fc0d99eb3547ee865ab4  libstdc++-v3/testsuite/20_util/is_constructible/77395.cc
! 2f6e2e772067bd15c048469fe605f60f  libstdc++-v3/testsuite/20_util/is_constructible/80812.cc
! 14549fb56b06be15f4491a2feb3befc1  libstdc++-v3/testsuite/20_util/is_constructible/92878_92947.cc
! 7f17a4fe3e8a8e93a780c68f75be0811  libstdc++-v3/testsuite/20_util/is_constructible/94003.cc
! f8e2f01bacd5202fd8447398178053d0  libstdc++-v3/testsuite/20_util/is_constructible/requirements/explicit_instantiation.cc
! 6a2aca156592d3d0def2e9721af9c6b6  libstdc++-v3/testsuite/20_util/is_constructible/requirements/typedefs.cc
! 64fa29b5a67a6785d1ed15e2924ea3e4  libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
! f175d6553187052e21ec3d75f07c330f  libstdc++-v3/testsuite/20_util/is_constructible/value.cc
! 851dd494a73121175709c4c6052aa5e4  libstdc++-v3/testsuite/20_util/is_convertible/requirements/explicit_instantiation.cc
! 70ca2d53054dc06008e4e1306941b28b  libstdc++-v3/testsuite/20_util/is_convertible/requirements/typedefs.cc
! f4ae51f94bfb78d99d2ce95a2e566f65  libstdc++-v3/testsuite/20_util/is_convertible/value.cc
! d8af19d35478f2e3c00727b7ed9c4b02  libstdc++-v3/testsuite/20_util/is_copy_assignable/requirements/explicit_instantiation.cc
! c47aa03faf2fc1dca533991c54230a2a  libstdc++-v3/testsuite/20_util/is_copy_assignable/requirements/typedefs.cc
! bccd1b72c610808fb34148e73c3ef4e1  libstdc++-v3/testsuite/20_util/is_copy_assignable/value.cc
! dbfb8737621b842d586c979a6f229ed5  libstdc++-v3/testsuite/20_util/is_copy_constructible/requirements/explicit_instantiation.cc
! 4eb8388c37b308561bb0569a91f2ff68  libstdc++-v3/testsuite/20_util/is_copy_constructible/requirements/typedefs.cc
! 7f0ba60a2ea0fa8cdab2176c48096634  libstdc++-v3/testsuite/20_util/is_copy_constructible/value.cc
! 888584fbabdc1e7070bf3519a6bc5794  libstdc++-v3/testsuite/20_util/is_default_constructible/requirements/explicit_instantiation.cc
! c7fc115a9ca5b78c2cc898a73706459f  libstdc++-v3/testsuite/20_util/is_default_constructible/requirements/typedefs.cc
! 38058d3d3fddb37ed85876e24020e049  libstdc++-v3/testsuite/20_util/is_default_constructible/value.cc
! 2c4726280d2579477ef9111d2e65dc9b  libstdc++-v3/testsuite/20_util/is_destructible/requirements/explicit_instantiation.cc
! 3518f81de0b0979e6fd8622eb00ca410  libstdc++-v3/testsuite/20_util/is_destructible/requirements/typedefs.cc
! 5e2dfe7ca3f0c204bde5b57693abe77b  libstdc++-v3/testsuite/20_util/is_destructible/value.cc
! 3d82c9e49478f8351fdd774d744ff154  libstdc++-v3/testsuite/20_util/is_empty/incomplete_neg.cc
! 322073c55866eca23760fe19d74dbeb4  libstdc++-v3/testsuite/20_util/is_empty/requirements/explicit_instantiation.cc
! f31c17d75d6cf12e892e397aa38a33f7  libstdc++-v3/testsuite/20_util/is_empty/requirements/typedefs.cc
! 6f8ad49bdb25cdd372269955d5537b46  libstdc++-v3/testsuite/20_util/is_empty/value.cc
! 1810f65a789aba89c8e899684f48c737  libstdc++-v3/testsuite/20_util/is_enum/requirements/explicit_instantiation.cc
! 7dc5e1d874ce45412ae50a39e10c051f  libstdc++-v3/testsuite/20_util/is_enum/requirements/typedefs.cc
! 9b8bcf76189636b45a22b84755bd23c6  libstdc++-v3/testsuite/20_util/is_enum/value.cc
! 94f85df88c5f1c4ce1c155181854f024  libstdc++-v3/testsuite/20_util/is_final/incomplete_neg.cc
! dede3e7c6beeccb6b102af703b6ab577  libstdc++-v3/testsuite/20_util/is_final/requirements/explicit_instantiation.cc
! 64429fbeb5c638d238179cea4d39d74d  libstdc++-v3/testsuite/20_util/is_final/requirements/typedefs.cc
! 406282a0b7f7fe8cf84bd938a9924a7f  libstdc++-v3/testsuite/20_util/is_final/value.cc
! 836a72a5669907b69520b7d6fcc11034  libstdc++-v3/testsuite/20_util/is_floating_point/requirements/explicit_instantiation.cc
! 172fe473dffb8e609d1a4afb60f2610d  libstdc++-v3/testsuite/20_util/is_floating_point/requirements/typedefs.cc
! 9633a5e698b0d652b10a41620b047a4c  libstdc++-v3/testsuite/20_util/is_floating_point/value.cc
! d818cf406068b80aa5d993a94484a62f  libstdc++-v3/testsuite/20_util/is_function/24808.cc
! 9cc7742c4312216735f755a2d9ccff49  libstdc++-v3/testsuite/20_util/is_function/35637.cc
! e08c547d50dbc01405b14edafd17b2f4  libstdc++-v3/testsuite/20_util/is_function/91371.cc
! fc6699f392a4eb194cf5f3725dc1be39  libstdc++-v3/testsuite/20_util/is_function/requirements/explicit_instantiation.cc
! a287286cbb900cf1e419a65b0782dfb8  libstdc++-v3/testsuite/20_util/is_function/requirements/typedefs.cc
! 482ffcd098dfe066a8e42ff4bdaee401  libstdc++-v3/testsuite/20_util/is_function/value.cc
! e3cfe687ecb032adb44a5c1ec8600633  libstdc++-v3/testsuite/20_util/is_fundamental/requirements/explicit_instantiation.cc
! 63275bf45066a9f7c5f4a566d29b4c0d  libstdc++-v3/testsuite/20_util/is_fundamental/requirements/typedefs.cc
! 27699a7db33a57dc65a297e1bb9374cf  libstdc++-v3/testsuite/20_util/is_fundamental/value.cc
! 191501a33966299b7302de500b2cd1e8  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/requirements/explicit_instantiation.cc
! 2ba4deb21cf15ce26ce11d6ac4a4a6b3  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/requirements/typedefs.cc
! 8f1b5f1e11b01797282a39033ecef8bf  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/value.cc
! 74f45040e7ddffce123081bdf129a5f8  libstdc++-v3/testsuite/20_util/is_integral/requirements/explicit_instantiation.cc
! a5b78cd250b9a56c5581f8bf17809462  libstdc++-v3/testsuite/20_util/is_integral/requirements/typedefs.cc
! 1c3f51d0a99b345db8705ff7f76424f1  libstdc++-v3/testsuite/20_util/is_integral/value.cc
! 28ad82973cbabb9e57422ca81fa07aeb  libstdc++-v3/testsuite/20_util/is_invocable/83395.cc
! fe4edf22e6d2ec4e090d0c30556d4e68  libstdc++-v3/testsuite/20_util/is_invocable/91456.cc
! 72723e124fc7ddcdf9c72461445043e8  libstdc++-v3/testsuite/20_util/is_invocable/incomplete_args_neg.cc
! fc90f33c14b40f099b85b1242c8ca142  libstdc++-v3/testsuite/20_util/is_invocable/incomplete_neg.cc
! 8a67662cb7d671d0578b53b73203effb  libstdc++-v3/testsuite/20_util/is_invocable/requirements/explicit_instantiation.cc
! c7ea9225a66aedaf32b754eddcaae048  libstdc++-v3/testsuite/20_util/is_invocable/requirements/explicit_instantiation_ext.cc
! 9b20221a9c14709a331c35f91760696b  libstdc++-v3/testsuite/20_util/is_invocable/requirements/typedefs.cc
! 047de45a905c3639f78c1b402f4db015  libstdc++-v3/testsuite/20_util/is_invocable/requirements/typedefs_ext.cc
! 3c27acdd46196efb2f1352ef0a00465c  libstdc++-v3/testsuite/20_util/is_invocable/value.cc
! 2920db4bb18b612fa13753f44da15dcd  libstdc++-v3/testsuite/20_util/is_invocable/value_ext.cc
! f7e109ba7e54fdae5b31a8405a8f47a8  libstdc++-v3/testsuite/20_util/is_literal_type/deprecated-1z.cc
! b244acd7866c4c84996a7ffd5092a8bf  libstdc++-v3/testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc
! 170aea2ed3baec54943409def767b7fc  libstdc++-v3/testsuite/20_util/is_literal_type/requirements/typedefs.cc
! 645f9307a25bcc79fc6e6d466d3c4306  libstdc++-v3/testsuite/20_util/is_literal_type/value.cc
! 4fa718e26d42e6934ffd92be6aa90377  libstdc++-v3/testsuite/20_util/is_lvalue_reference/requirements/explicit_instantiation.cc
! a1506449ae205bbb49430051c47124da  libstdc++-v3/testsuite/20_util/is_lvalue_reference/requirements/typedefs.cc
! da1921caa23a43c12418dd0293b5291e  libstdc++-v3/testsuite/20_util/is_lvalue_reference/value.cc
! f5b104ea947e53fa99d54daa33894db2  libstdc++-v3/testsuite/20_util/is_member_function_pointer/91371.cc
! 355cf65fac2059a386dbc2a920d6de08  libstdc++-v3/testsuite/20_util/is_member_function_pointer/requirements/explicit_instantiation.cc
! 10dc743a9c00a7a686f0d5c038c32ff9  libstdc++-v3/testsuite/20_util/is_member_function_pointer/requirements/typedefs.cc
! 6c7317181ef533035dfdce638254ae67  libstdc++-v3/testsuite/20_util/is_member_function_pointer/value.cc
! 4fe06187f48e399dcc5cfb32a28d6a0b  libstdc++-v3/testsuite/20_util/is_member_object_pointer/requirements/explicit_instantiation.cc
! ae93fbf1e9d79d1ba0b2777c697f7f06  libstdc++-v3/testsuite/20_util/is_member_object_pointer/requirements/typedefs.cc
! 5600240438f7ffb8bd8761dc8eac626a  libstdc++-v3/testsuite/20_util/is_member_object_pointer/value.cc
! c100dd920a88b5e5772a991aec08ef42  libstdc++-v3/testsuite/20_util/is_member_pointer/requirements/explicit_instantiation.cc
! 14d9868f1f79dc4923c86a6e93c6fb6e  libstdc++-v3/testsuite/20_util/is_member_pointer/requirements/typedefs.cc
! 959446592c56005dc743ac05ebbfae29  libstdc++-v3/testsuite/20_util/is_member_pointer/value.cc
! f495f1ada6001587eaca39e64ac17fad  libstdc++-v3/testsuite/20_util/is_move_assignable/requirements/explicit_instantiation.cc
! 590bde4bea38f5266a08439865830a60  libstdc++-v3/testsuite/20_util/is_move_assignable/requirements/typedefs.cc
! 88e62c0b2b01e3377ba6f2fffee56a19  libstdc++-v3/testsuite/20_util/is_move_assignable/value.cc
! 4209b3de1bcf90a0b15501fd2bd813f8  libstdc++-v3/testsuite/20_util/is_move_constructible/incomplete_neg.cc
! 0b64a8805805c4a688e80b8aca00e01e  libstdc++-v3/testsuite/20_util/is_move_constructible/requirements/explicit_instantiation.cc
! d7f40810177cc3527fe1934303e3939d  libstdc++-v3/testsuite/20_util/is_move_constructible/requirements/typedefs.cc
! a5cbecb1f6fd9cd2a88f308955589136  libstdc++-v3/testsuite/20_util/is_move_constructible/value.cc
! d1d8477a1c8d2c653545136b672d90a1  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/requirements/explicit_instantiation.cc
! 1ad4ebe78a82246eef4c39e5457f531c  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/requirements/typedefs.cc
! 1a6d17022073e8af3f71ca1c5edbb404  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/value.cc
! 253886fc0c9a1298c846f28233a0de25  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/94003.cc
! 5208df134b3cd819199f7f5c5c3df4cc  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/requirements/explicit_instantiation.cc
! 63b1bfabb4689934197f449830a1a2dc  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/requirements/typedefs.cc
! 7bf980463791b4c29536c3ce011abcb6  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/value.cc
! 1f0e13e56c2859c6f9d33d950145dd08  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/value_c++20.cc
! ccec019719d047b45fd7d533d6806083  libstdc++-v3/testsuite/20_util/is_nothrow_convertible/requirements/explicit_instantiation.cc
! 06f14c380966307810d78cfa21154eef  libstdc++-v3/testsuite/20_util/is_nothrow_convertible/requirements/typedefs.cc
! 8e8eeaf825cf5c5f267ace68da9e66f1  libstdc++-v3/testsuite/20_util/is_nothrow_convertible/value.cc
! fe1751d3b300ceb6b2a354ad1ab84ada  libstdc++-v3/testsuite/20_util/is_nothrow_convertible/value_ext.cc
! 92ff60ce1eaeb43657622a57f19538ca  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/requirements/explicit_instantiation.cc
! a5cb728650f87108206e09da15430b55  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/requirements/typedefs.cc
! a2fb959a92554bb25f85214c1e20e7d4  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/value.cc
! 761b1ce263276076f7857915848da14b  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/requirements/explicit_instantiation.cc
! 7eecf542f09422873e58f526f4ccefd8  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/requirements/typedefs.cc
! b4da362fdf4c0ea8164dd5ceed8549af  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/value.cc
! d97eca51e91248b7773ad138660a0c19  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/requirements/explicit_instantiation.cc
! dbe93962d9e924eb50ec4118ad52e412  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/requirements/typedefs.cc
! 89074684e73df92e75b2bcbabe8870d9  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/value.cc
! af2b15dc0413fdf9d9d040d6274aeb49  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/requirements/explicit_instantiation.cc
! 909b086f8ab07d0aaccf6a3bbefae04d  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/requirements/typedefs.cc
! 1e59eeb1d22448a627913928912d6957  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc
! a3f8b891eb0c9244f4ee331650eb2ec9  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/83395.cc
! 646fe798da0204d769fd7fcf06e2b587  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/incomplete_args_neg.cc
! 3361e0b4fb9e8c826cfdeb5a86cc15cb  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/incomplete_neg.cc
! 8dd8ee47769432a73f41bc2ca0cf7c1f  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation.cc
! 9e0f90663288319b353fee68eea8790e  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation_ext.cc
! 65428f6971ca4b3b935bc65d803083f0  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/typedefs.cc
! 72702ab138167cc60abc3e8dd4206021  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/typedefs_ext.cc
! 017d4572bb44e363d2a52cfc51180682  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc
! 0e57d9ec32338e8203a50a4c7224563c  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value_ext.cc
! 17d7f9ce8fb514ae1daf26740b867c5b  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/incomplete_neg.cc
! 144888873966c4754120b7f3d2da14c3  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/requirements/explicit_instantiation.cc
! 1088fbb77970bc8deaa318aa56e446f1  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/requirements/typedefs.cc
! 74974dce04216519a100082aea97dbac  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/value.cc
! 2e4bef78ec7ed9ef37461ab5ac44db11  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/requirements/explicit_instantiation.cc
! ba64211d25713ebbd33627846da4f465  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/requirements/typedefs.cc
! 195a59ed30e917cf3327afef4a6c8f8c  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/value.cc
! 9558437b39e428fa651e1eccdc9fab6e  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/incomplete_neg.cc
! a5c5190824fde2ad9798f8b20355de1c  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc
! 9701df95308c6be905cbe7d1e908a475  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation_ext.cc
! 686729ead379ee99f6b2217c28d70054  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc
! d068ca637b3bb00afe65eeb8715f6c9d  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/typedefs_ext.cc
! 0b1db2125cf37942ed8775674489b97f  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.cc
! c6fd3ef80234ffe6b0e639aed9560e27  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.h
! c96433aa9d91a5495a878121b56c088b  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value_ext.cc
! f59a88f30dd2f5af8e66f4de61e7b358  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/incomplete_neg.cc
! 483586f401867c64764418edfee06420  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc
! af1f1560df5137a7e80763f53762b15b  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc
! c5eb17aa8495fab34844af143c5bf6f9  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/value.cc
! 828dcf33887cf515d8a4b24757cfd884  libstdc++-v3/testsuite/20_util/is_null_pointer/requirements/explicit_instantiation.cc
! 64f4840c24673e4b59f0c82db86368d7  libstdc++-v3/testsuite/20_util/is_null_pointer/requirements/typedefs.cc
! 5064f0134cae2a4bb9acfe4d2686b6ab  libstdc++-v3/testsuite/20_util/is_null_pointer/value.cc
! 41e5756bd5cd70257a1f48d0cfe193ab  libstdc++-v3/testsuite/20_util/is_object/24808.cc
! e1e4f3bbdea1b1ef61cc053388f84988  libstdc++-v3/testsuite/20_util/is_object/91371.cc
! 0dc34b1ba68d2653e0a9ef182627408a  libstdc++-v3/testsuite/20_util/is_object/requirements/explicit_instantiation.cc
! 6ad9eee0775103cdce246b9aebb3b3a7  libstdc++-v3/testsuite/20_util/is_object/requirements/typedefs.cc
! 29ee73ba5922a32fe0f12b8ce1b5746a  libstdc++-v3/testsuite/20_util/is_object/value.cc
! 52741360f43c27307e2ef4eca62f8cde  libstdc++-v3/testsuite/20_util/is_pod/deprecated-2a.cc
! 29a069d10a8a8af3c98e37e446e1ae14  libstdc++-v3/testsuite/20_util/is_pod/requirements/explicit_instantiation.cc
! 8bf024d1728ab308bd1ce3ef9728b5c7  libstdc++-v3/testsuite/20_util/is_pod/requirements/typedefs.cc
! 2b2ed23d775f7f4e50a798bcbc4c8170  libstdc++-v3/testsuite/20_util/is_pod/value.cc
! 0dd40eedee2ab72b24aaf37c793f3a02  libstdc++-v3/testsuite/20_util/is_pointer/requirements/explicit_instantiation.cc
! 2d9a9affcd6c8f083de05e1450e29b73  libstdc++-v3/testsuite/20_util/is_pointer/value.cc
! a6981a1363b0d64f70a806f515c13dfb  libstdc++-v3/testsuite/20_util/is_polymorphic/incomplete_neg.cc
! 5e91ad356e09ab33d5765cac260451e7  libstdc++-v3/testsuite/20_util/is_polymorphic/requirements/explicit_instantiation.cc
! f615eaf042c3c52d9c665d4650031da9  libstdc++-v3/testsuite/20_util/is_polymorphic/requirements/typedefs.cc
! c90743a10ba8831b098b62196242ad90  libstdc++-v3/testsuite/20_util/is_polymorphic/value.cc
! 575894c7bcef8b8989f03ca25f60c8f9  libstdc++-v3/testsuite/20_util/is_reference/requirements/explicit_instantiation.cc
! 3d4c610430bd35934d0d29b02884b6f1  libstdc++-v3/testsuite/20_util/is_reference/requirements/typedefs.cc
! bcb670657645804b4ed30f33d09ea8d6  libstdc++-v3/testsuite/20_util/is_reference/value.cc
! e5202ac577048ce8235f8f9ff489d402  libstdc++-v3/testsuite/20_util/is_rvalue_reference/requirements/explicit_instantiation.cc
! b9299540650574503c800d8d83c1e951  libstdc++-v3/testsuite/20_util/is_rvalue_reference/requirements/typedefs.cc
! 38ed2cd2efe624a1b8317da624f83807  libstdc++-v3/testsuite/20_util/is_rvalue_reference/value.cc
! ba071fb9d7a09bad128e9d8c07c7cc56  libstdc++-v3/testsuite/20_util/is_same/requirements/explicit_instantiation.cc
! b51c430f3be2c573f138bf51419131e5  libstdc++-v3/testsuite/20_util/is_same/requirements/typedefs.cc
! 690572436667e945ccaaf59ec6ab4ef7  libstdc++-v3/testsuite/20_util/is_same/value.cc
! 22d884f141f914dcda1fa09f8bced5d1  libstdc++-v3/testsuite/20_util/is_scalar/requirements/explicit_instantiation.cc
! 4b0086abd09dd2c23acc94be14e8a06b  libstdc++-v3/testsuite/20_util/is_scalar/requirements/typedefs.cc
! 5566792833fd58362271b0c7508157db  libstdc++-v3/testsuite/20_util/is_scalar/value.cc
! c8c04454618a55587123eacac860513a  libstdc++-v3/testsuite/20_util/is_scoped_enum/value.cc
! a843c4b0043748404b4da3779418ab08  libstdc++-v3/testsuite/20_util/is_scoped_enum/version.cc
! 4778d0348e322bc78a7576c6baddb404  libstdc++-v3/testsuite/20_util/is_signed/requirements/explicit_instantiation.cc
! dcc9bc6d66ad1eb6ac0a9bb6a2beb720  libstdc++-v3/testsuite/20_util/is_signed/requirements/typedefs.cc
! 223661b27a9be585730ed9fe9153bef9  libstdc++-v3/testsuite/20_util/is_signed/value.cc
! 56f50e395ecf63b8cc8df865b3f8d1c5  libstdc++-v3/testsuite/20_util/is_standard_layout/requiremenents/explicit_instantiation.cc
! 604c0700c95106ec9000d14b1918529d  libstdc++-v3/testsuite/20_util/is_standard_layout/requiremenents/typedefs.cc
! 886575304da2d6a016d1d6ee00257ad1  libstdc++-v3/testsuite/20_util/is_standard_layout/value.cc
! b5165e33a05e5b0d318ec3ee2d2c720f  libstdc++-v3/testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc
! c6fd9816824e4a8b41772865bacd1b3d  libstdc++-v3/testsuite/20_util/is_swappable/requirements/explicit_instantiation_ext.cc
! a6111474a5c2d566f2689fc07f4b82df  libstdc++-v3/testsuite/20_util/is_swappable/requirements/typedefs.cc
! aa021dd4ee7626b47eb500398c5521a4  libstdc++-v3/testsuite/20_util/is_swappable/requirements/typedefs_ext.cc
! 93d683aa5c4ce19ab043c1446e92faac  libstdc++-v3/testsuite/20_util/is_swappable/value.cc
! 2264a7c7e9646c3322143b5593325ce2  libstdc++-v3/testsuite/20_util/is_swappable/value.h
! 3a77dd200b134cecd63b7ad403ee31db  libstdc++-v3/testsuite/20_util/is_swappable/value_ext.cc
! e45d5dbb6f7f581467bac2fdbecc8665  libstdc++-v3/testsuite/20_util/is_swappable_with/incomplete_neg.cc
! 8ceb11fa3f84d2d4015dad8cfe752a66  libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc
! aabd190248a4024842c22598cbe8667e  libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/typedefs.cc
! 0df2d26ed062a20bfb9a6b2ebabce9ae  libstdc++-v3/testsuite/20_util/is_swappable_with/value.cc
! 367ffec31618a1fa76e95d3e073ef835  libstdc++-v3/testsuite/20_util/is_trivial/requirements/explicit_instantiation.cc
! e385fe8965c56be6a95fc5bd9f5cc5f7  libstdc++-v3/testsuite/20_util/is_trivial/requirements/typedefs.cc
! bb7d6d40fed4583a503135b4ffdb4a8d  libstdc++-v3/testsuite/20_util/is_trivial/value.cc
! a47d4818bba6741bb8841463cca0a94b  libstdc++-v3/testsuite/20_util/is_trivially_assignable/requirements/explicit_instantiation.cc
! 95f1e913038839a10e5b946e60a6e752  libstdc++-v3/testsuite/20_util/is_trivially_assignable/requirements/typedefs.cc
! 46431da89b0557131f1cdb42716df6cb  libstdc++-v3/testsuite/20_util/is_trivially_assignable/value.cc
! 8515a8322564ccb8c3849e7c6cf68956  libstdc++-v3/testsuite/20_util/is_trivially_constructible/requirements/explicit_instantiation.cc
! fd12b2af8b92737fee2e0da405cc6a1e  libstdc++-v3/testsuite/20_util/is_trivially_constructible/requirements/typedefs.cc
! 86804fc6a1385d11a49aedc27162dba9  libstdc++-v3/testsuite/20_util/is_trivially_constructible/value.cc
! 592664af2b923c73700a04fe92d504c3  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/requirements/explicit_instantiation.cc
! a96bc80d18ee3947b79797d30b2c70b2  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/requirements/typedefs.cc
! 2640d1af158cddc4cff25aec40eabc8d  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/value.cc
! 09e248649e12d52579b10aa198288c4d  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/requirements/explicit_instantiation.cc
! 6285585ef8b007323bd39b46c0e27f10  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/requirements/typedefs.cc
! d894522c16a19442daf29912ef957278  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/value.cc
! d1c519fed701127c847e7aede436b29e  libstdc++-v3/testsuite/20_util/is_trivially_copyable/requirements/explicit_instantiation.cc
! acd1f18ff23b09d2833639a93c84aeea  libstdc++-v3/testsuite/20_util/is_trivially_copyable/requirements/typedefs.cc
! e3a8cebfadaa0d5d9263604905b66e44  libstdc++-v3/testsuite/20_util/is_trivially_copyable/value.cc
! 287c80710c7da132a5f446b89b42d0c8  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/requirements/explicit_instantiation.cc
! 320079a0c396ec8fa9339cc005e9e8df  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/requirements/typedefs.cc
! 0c55d66132aba814b4ff83be9b7ea308  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/value.cc
! b4dae1358103dc9b51bc223987a42759  libstdc++-v3/testsuite/20_util/is_trivially_destructible/requirements/explicit_instantiation.cc
! f8e238ea24ade4b9c8e05fa1ec42ffc6  libstdc++-v3/testsuite/20_util/is_trivially_destructible/requirements/typedefs.cc
! a561be6383dd49fe4ee526e2bd404801  libstdc++-v3/testsuite/20_util/is_trivially_destructible/value.cc
! 32c73556a484f5c9ccddb3078d0889e7  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/requirements/explicit_instantiation.cc
! 9fff506f8a04c133ad35c879c6e0a586  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/requirements/typedefs.cc
! 3aa1940e27da5d2e93455f5c38dce3fa  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/value.cc
! 1b1a78aec6b0a34a77575ff71e96d1ff  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/requirements/explicit_instantiation.cc
! 3c23f589a2ff043f28ca783228578c59  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/requirements/typedefs.cc
! 52fd4db0ebac1fca1c771e57d396b826  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/value.cc
! a6e22cc3b4f3cfe1847e424b2cf7c900  libstdc++-v3/testsuite/20_util/is_unbounded_array/requirements/explicit_instantiation.cc
! 10ab1d47587f043d9e83f51a74bfc9a0  libstdc++-v3/testsuite/20_util/is_unbounded_array/requirements/typedefs.cc
! 7184580ace692746f39d3cad6e98b854  libstdc++-v3/testsuite/20_util/is_unbounded_array/value.cc
! fa6377290481f8e1b0bb028c9642ac1f  libstdc++-v3/testsuite/20_util/is_union/requirements/explicit_instantiation.cc
! e00c172136d3874b3b9659c704570e22  libstdc++-v3/testsuite/20_util/is_union/requirements/typedefs.cc
! d4b0f71d6e81bf7fb8bb7b1837246fd1  libstdc++-v3/testsuite/20_util/is_union/value.cc
! 12e99abbcc9ff6167c5d7100f0c61317  libstdc++-v3/testsuite/20_util/is_unsigned/requirements/explicit_instantiation.cc
! 52a3f94666041cbe5e4b9850986d84cf  libstdc++-v3/testsuite/20_util/is_unsigned/requirements/typedefs.cc
! 1163bffa0cd035ee8c82709445d69319  libstdc++-v3/testsuite/20_util/is_unsigned/value.cc
! 7093859af33397abb001ad0482bbc27a  libstdc++-v3/testsuite/20_util/is_void/requirements/explicit_instantiation.cc
! dade720c5034607a7fbdd7e0aab2f78f  libstdc++-v3/testsuite/20_util/is_void/requirements/typedefs.cc
! 13b7ffc9ea4ed94f9b0cba5438bffdab  libstdc++-v3/testsuite/20_util/is_void/value.cc
! 913bf2a86f02109fb793abcd42c4bb07  libstdc++-v3/testsuite/20_util/is_volatile/requirements/explicit_instantiation.cc
! af3bf89e7481b8a34a3edb98b21a8da6  libstdc++-v3/testsuite/20_util/is_volatile/requirements/typedefs.cc
! 4be69f46ebd04e1219af97a867a7ecd8  libstdc++-v3/testsuite/20_util/is_volatile/value.cc
! fe738049a10fb4718b903856436c3d42  libstdc++-v3/testsuite/20_util/logical_traits/83134.cc
! 974e3c3c36c4cbfb571c889e32514571  libstdc++-v3/testsuite/20_util/logical_traits/requirements/explicit_instantiation.cc
! a53aec1439374d294aa4b6803f1b4842  libstdc++-v3/testsuite/20_util/logical_traits/requirements/typedefs.cc
! c32c2b35d274443e8248767054adcedb  libstdc++-v3/testsuite/20_util/logical_traits/value.cc
! f5f9ba741f4a91e21efb9bef0ca82ffe  libstdc++-v3/testsuite/20_util/make_signed/requirements/alias_decl.cc
! 2ceff88b404f936e4350c67018095f82  libstdc++-v3/testsuite/20_util/make_signed/requirements/explicit_instantiation.cc
! 6b8ba2584113e0c3fb6fc2a4e7cbccdf  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc
! 80dee8d32289a169c4dfefe5f6dfaf5b  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
! b91194d57bd968046e51b369f86aef86  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-3.cc
! bc084107b24c429bf48018c4862abe6b  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-4.cc
! fc0092367458f75960ce5d9db4c0239e  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
! 1b6bf3e42e3acc695986f9bf50e3f670  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/alias_decl.cc
! ecd3e19c212af2a30aad633afedb15bd  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/explicit_instantiation.cc
! a5f43fbc0309ca53c59e5ad98675778a  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc
! 2b7f2a67748a8a2e0c2a9436509ff2db  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
! ef0c6e9bae1e6df4b914524a245d22ee  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-3.cc
! 4cefdbe7e3bb06fc089f77de468c9895  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
! ba822bea714184e3513f4ca1269617a3  libstdc++-v3/testsuite/20_util/memory_resource/1.cc
! 5761dd7f50e61a4c07a615ffa0a1225b  libstdc++-v3/testsuite/20_util/memory_resource/2.cc
! 72fba957035e9dda8d078150e7d3013d  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/1.cc
! 3be8e595aac542fdcbb9f54a05251319  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/93208.cc
! 70b79cc27bb51b812db5bdf7258412c6  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/allocate.cc
! 57b49e84ca6688b709eac96a9ec75b9a  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/deallocate.cc
! 57d4aa1189cfa39a696225b7b25a950b  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/release.cc
! afe4cf70fddfc7d6ad254d261e3a7399  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc
! b73bf9f3918dcd5f532cb637f9e25b66  libstdc++-v3/testsuite/20_util/move/1.cc
! a5e367ba6ce34de49b78873061017800  libstdc++-v3/testsuite/20_util/move/requirements/explicit_instantiation.cc
! 5d533e56be8de18f98e6ca6d7cb1cbd4  libstdc++-v3/testsuite/20_util/move_if_noexcept/1.cc
! 84907eb0f575a17ebfc2b4f6f8317050  libstdc++-v3/testsuite/20_util/move_if_noexcept/constexpr.cc
! 0872c1b23716b1ac269b6a3da2a977a4  libstdc++-v3/testsuite/20_util/move_if_noexcept/requirements/explicit_instantiation.cc
! 82f389c7f1eeafd3a20a38a3ba2082c7  libstdc++-v3/testsuite/20_util/nonesuch/nonesuch.cc
! 44a3c57432f58ca67c8d802cfc1b2ebb  libstdc++-v3/testsuite/20_util/optional/77288.cc
  5361a28b1321ad89bf07b0ba11faf27a  libstdc++-v3/testsuite/20_util/optional/84601.cc
! 9d44d5e9085d43961e21a8a45bf30fba  libstdc++-v3/testsuite/20_util/optional/assignment/1.cc
! 90e6dccbfe16d77706fdfa40cd705949  libstdc++-v3/testsuite/20_util/optional/assignment/2.cc
! 529ce8bd39505b65572e08b44b84dda3  libstdc++-v3/testsuite/20_util/optional/assignment/3.cc
! dfd85a7bfa061c99c27919e79af71439  libstdc++-v3/testsuite/20_util/optional/assignment/4.cc
! a18a59164cbc57acb043f9368e92bebe  libstdc++-v3/testsuite/20_util/optional/assignment/5.cc
! 0f18e0c9c9fe5fe63712370b136fe13b  libstdc++-v3/testsuite/20_util/optional/assignment/6.cc
! b7b26e724cf95d1e07328b99b6cbdea0  libstdc++-v3/testsuite/20_util/optional/assignment/7.cc
! 633fa183b62109c3ccf75d26c44bf4b3  libstdc++-v3/testsuite/20_util/optional/assignment/8.cc
! 83dfe2c932262a78d402a8b9cb7cbf38  libstdc++-v3/testsuite/20_util/optional/assignment/9.cc
! dcb74383e43c4de34f6a7bf973ba0ba1  libstdc++-v3/testsuite/20_util/optional/assignment/92878_92947.cc
! c28a8a0f77f0d9b7031df05630376c01  libstdc++-v3/testsuite/20_util/optional/assignment/noexcept.cc
! 8453e6737203215ece292d1831dd9170  libstdc++-v3/testsuite/20_util/optional/bad_access.cc
! d83673037421e573240752e0c7c2bad6  libstdc++-v3/testsuite/20_util/optional/cons/77727.cc
! a8bc071059bc1f046246e80b9a522b78  libstdc++-v3/testsuite/20_util/optional/cons/85642.cc
! d40d58e55fea860d5c16965c578bd7b5  libstdc++-v3/testsuite/20_util/optional/cons/92878_92947.cc
! 3f45c218cecda6d43641f98669bc3562  libstdc++-v3/testsuite/20_util/optional/cons/copy.cc
! 022fc73eb70fa164404a6b14036745f4  libstdc++-v3/testsuite/20_util/optional/cons/deduction.cc
! 07bfe474c5c08804b3d72e76e45521d8  libstdc++-v3/testsuite/20_util/optional/cons/default.cc
! 0f79d088f21d1b1dd4c230708a6aa530  libstdc++-v3/testsuite/20_util/optional/cons/move.cc
! 0fbf0ce727a4e8950dbe0b46c05bfaff  libstdc++-v3/testsuite/20_util/optional/cons/noexcept.cc
! 4fdb8f6ba44014c92943c8f61e3d9ad3  libstdc++-v3/testsuite/20_util/optional/cons/trivial.cc
! d260e5a6567a7b028ff9d33279272148  libstdc++-v3/testsuite/20_util/optional/cons/value.cc
! 5edcf01727ef5285d0f4b6d7cfe12eb4  libstdc++-v3/testsuite/20_util/optional/cons/value_neg.cc
! a64088bc550cf529096983dbb272040b  libstdc++-v3/testsuite/20_util/optional/constexpr/cons/default.cc
! 73aabbe4b7fb41c83e3a37ddfc535051  libstdc++-v3/testsuite/20_util/optional/constexpr/cons/value.cc
! 749ceb89d08952e27d56b7a19e2c67e5  libstdc++-v3/testsuite/20_util/optional/constexpr/in_place.cc
! 6926568207ee79412eb710ee92ba398a  libstdc++-v3/testsuite/20_util/optional/constexpr/make_optional.cc
! 55d8acb30e8673c8b1575988764dd6ba  libstdc++-v3/testsuite/20_util/optional/constexpr/nullopt.cc
! b6915ef7ff5c856776cc1794d68ec63d  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/1.cc
! 8040241a71a82e043821c490979d3dda  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/2.cc
! 3f84d65343ae5ea31638eec6fb7f88d3  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/3.cc
! fb612d9becba40789c266e4ee659f154  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/4.cc
! 4a35eec10edc0f8a8ffdae3c196f1220  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/5.cc
! 31d947594f28dd7a866f6620af854bc4  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/1.cc
! 17db489ddbd2316348c31a6031b747bd  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/2.cc
! 0543733593631a247b9f305b02e28cb3  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/3.cc
! fd0624d9cf1c528cbf2aefae0685b504  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/4.cc
! bae6d265d35240cfd6a3c33a31059444  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/5.cc
! 6bd774e01a190776ab137686e5d0f08f  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/6.cc
! 179780595e4cd861f6a6df17e48196ff  libstdc++-v3/testsuite/20_util/optional/hash.cc
! e0e5ebfaf855c494f4286e93e27e2971  libstdc++-v3/testsuite/20_util/optional/in_place.cc
! 91761354dfa32f98a1a8b7366b39f399  libstdc++-v3/testsuite/20_util/optional/make_optional-2.cc
! 911188c53b4c608b19b5eab32b9c8c43  libstdc++-v3/testsuite/20_util/optional/make_optional.cc
! a30c04b6ff0a92f63aedeecbe37094db  libstdc++-v3/testsuite/20_util/optional/nullopt.cc
! fb02b8cb560086367790bbf634d9891e  libstdc++-v3/testsuite/20_util/optional/observers/1.cc
! 7b5581cbc6e6c6b999e7630fca8a189a  libstdc++-v3/testsuite/20_util/optional/observers/2.cc
! e3f2b9185c697bd4337fedff0d3aeb72  libstdc++-v3/testsuite/20_util/optional/observers/3.cc
! 40252cd496c199522f6432b8600590a4  libstdc++-v3/testsuite/20_util/optional/observers/4.cc
! d409ae45dd2b8418fd9d0d4281d2d915  libstdc++-v3/testsuite/20_util/optional/observers/5.cc
! a4334219d5580f190bc5c3edfdac73f5  libstdc++-v3/testsuite/20_util/optional/observers/6.cc
! e115c211bd27cb2ad8981cc79d41d54d  libstdc++-v3/testsuite/20_util/optional/relops/1.cc
! 96c222589c5f8c177b7d647ae0992b17  libstdc++-v3/testsuite/20_util/optional/relops/2.cc
! 920643b5bb8c5e287787a48fb109ebc8  libstdc++-v3/testsuite/20_util/optional/relops/3.cc
! 34967645a85eff138b9230d3910793a4  libstdc++-v3/testsuite/20_util/optional/relops/4.cc
! 00763eb374e08e7fa221382af421fed9  libstdc++-v3/testsuite/20_util/optional/relops/5.cc
! 4b717b3951730c9aad28eed83e782028  libstdc++-v3/testsuite/20_util/optional/relops/6.cc
! 5073717358c3cb89118384a8109a5fb2  libstdc++-v3/testsuite/20_util/optional/relops/7.cc
! b2c51e8c1d1f364214d8251552a757bf  libstdc++-v3/testsuite/20_util/optional/relops/96269.cc
! de96a6cffdf74e96b8e9c6d4fab0d8ea  libstdc++-v3/testsuite/20_util/optional/relops/three_way.cc
! 2dfe3f1283b24ea12692b649dc501959  libstdc++-v3/testsuite/20_util/optional/requirements.cc
! b27bf70330af561063ecfa2b023c7a87  libstdc++-v3/testsuite/20_util/optional/swap/1.cc
! 7e6b898d23367f04f5242488491c9647  libstdc++-v3/testsuite/20_util/optional/swap/2.cc
! a245d03bcdff13f43d9999fa8759db68  libstdc++-v3/testsuite/20_util/optional/typedefs.cc
! 0fd38f3f18cd193ab7d405b047fb100c  libstdc++-v3/testsuite/20_util/owner_less/cmp.cc
! cc042037588e24cb2ab9dcbf9e2e44f5  libstdc++-v3/testsuite/20_util/owner_less/noexcept.cc
! c509455451f4af770bde8922ac97fc5c  libstdc++-v3/testsuite/20_util/owner_less/void.cc
! f97a91b17a9a6a7c3250c558ca4f7663  libstdc++-v3/testsuite/20_util/pair/1.cc
! 615f251e0cb1e5dfa0de8c1f08f51250  libstdc++-v3/testsuite/20_util/pair/2.cc
! 4ae308ba1295e7d5ae993655cbac483a  libstdc++-v3/testsuite/20_util/pair/3.cc
! e1e3c6549e93ee9ef168e5bedecf8ca1  libstdc++-v3/testsuite/20_util/pair/4.cc
! f988fa69a9f6e22b5decedceb3f08fea  libstdc++-v3/testsuite/20_util/pair/40925.cc
! b8b29196cc04f848770700e61392427f  libstdc++-v3/testsuite/20_util/pair/44487.cc
! ac5c6e03a642c0de87325f1d1184af62  libstdc++-v3/testsuite/20_util/pair/70437.cc
! 7aa7f200a4253849e18546d0e0441fad  libstdc++-v3/testsuite/20_util/pair/79141.cc
! 4a4288aa4f6242ce1ff44327cd424c57  libstdc++-v3/testsuite/20_util/pair/86751.cc
! 165fa12714d95c9483f895d3ca62c164  libstdc++-v3/testsuite/20_util/pair/87822.cc
! 4bd036055d6c232e2091b7d7f8dbb4e9  libstdc++-v3/testsuite/20_util/pair/astuple/astuple.cc
! aaa15cfd6f26e0bdfdf36143e47db23a  libstdc++-v3/testsuite/20_util/pair/astuple/astuple_cpp14.cc
! d31c50d42649cc28417caaad7bf7347e  libstdc++-v3/testsuite/20_util/pair/astuple/constexpr_get.cc
! 49ecc83fbbfd3f602ba6befca13cf43a  libstdc++-v3/testsuite/20_util/pair/astuple/constexpr_get_by_type.cc
! fdd6f03cd47f5235fdefae4cde0e47e1  libstdc++-v3/testsuite/20_util/pair/astuple/get.cc
! 5061f9c8e10f9f13a90a6061857a3299  libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type.cc
! 19a126d1e8148367c5ccbee544b9c89f  libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type_neg.cc
! 4a0172ff0eea3449d4271d86c530ba4c  libstdc++-v3/testsuite/20_util/pair/astuple/get_neg.cc
! 7c9ec0a1fceef4c9092e17a56cbc667f  libstdc++-v3/testsuite/20_util/pair/comparison_operators/constexpr.cc
! 6867ac41b18b151afb9f207f8821a665  libstdc++-v3/testsuite/20_util/pair/comparison_operators/constexpr_c++20.cc
! a010f6ac09f4efd657c8ac7ebbdead8a  libstdc++-v3/testsuite/20_util/pair/cons/92878_92947.cc
! f4892e0f3783ebde2f9c599e4f7ed9f7  libstdc++-v3/testsuite/20_util/pair/cons/constexpr.cc
! 64bffe30183a04f883b7b4649a06c453  libstdc++-v3/testsuite/20_util/pair/cons/deduction.cc
! 20909d44a813fd647ac1797d3534d86a  libstdc++-v3/testsuite/20_util/pair/cons/explicit_construct.cc
! e10503ff10ec0c0b3d8789bba784766e  libstdc++-v3/testsuite/20_util/pair/cons/noexcept_move_construct.cc
! 99f4fe8ad4c4bac54670def56fdd55b0  libstdc++-v3/testsuite/20_util/pair/constexpr_assign.cc
! f0f8acb7e527f90e3d8193eca7a63b63  libstdc++-v3/testsuite/20_util/pair/constexpr_get.cc
! 289e0add62d0db8c9f7d8885071f8f0a  libstdc++-v3/testsuite/20_util/pair/constexpr_swap.cc
! 5aebc4daca8e03bcf2a03a9e8ead5648  libstdc++-v3/testsuite/20_util/pair/make_pair/constexpr.cc
! 703e38a39fcd1b19007ab1c7330883dd  libstdc++-v3/testsuite/20_util/pair/moveable.cc
! 2e3f5f58bac9400a61524cf9c79e0bfc  libstdc++-v3/testsuite/20_util/pair/noexcept_move_assign.cc
! 00daf5da8857a7f8a6f7426833e57b43  libstdc++-v3/testsuite/20_util/pair/noexcept_swap.cc
! 5ea19ebba0670654d4f5689c7c5268b3  libstdc++-v3/testsuite/20_util/pair/noncopyable.cc
! 90aca903ada3b8d618a21b94bfc70708  libstdc++-v3/testsuite/20_util/pair/piecewise.cc
! 2c9faa585f6b63441a685d608bead701  libstdc++-v3/testsuite/20_util/pair/piecewise2.cc
! bcd081e70bdbbe071e6f8a067b67b68e  libstdc++-v3/testsuite/20_util/pair/ref_assign.cc
! f55e4095f2577409871172f767d21ef3  libstdc++-v3/testsuite/20_util/pair/requirements/dr2367.cc
! 364927c425068d49426b2b4915d0c10d  libstdc++-v3/testsuite/20_util/pair/requirements/dr801.cc
! 6dabddddb5dd007ba2fffbf2164c99dd  libstdc++-v3/testsuite/20_util/pair/requirements/explicit_instantiation/1.cc
! e076b1ed48773b172c90e913d19df0fb  libstdc++-v3/testsuite/20_util/pair/swap.cc
! 8e4f845d6aabcc9b203c24447d8c5286  libstdc++-v3/testsuite/20_util/pair/swap_cxx17.cc
! fa1f4f902855db5777aa5754d89f16c0  libstdc++-v3/testsuite/20_util/pair/traits.cc
! 911314550ac1f2c8af9f32e810e4648c  libstdc++-v3/testsuite/20_util/pointer_safety/1.cc
! 36ea3aa5eb2c0131e9f450515225f135  libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to.cc
! 45fa8f660a3f66eb552f4c83ae08cfc8  libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to_constexpr.cc
! cd28225270cad35df044d6daf22a90b9  libstdc++-v3/testsuite/20_util/pointer_traits/rebind.cc
! 89eb7dbac834de5a99b7be6f107dbb29  libstdc++-v3/testsuite/20_util/pointer_traits/requirements/explicit_instantiation.cc
! fe4ad8d9513dea873f47c4174a4bec72  libstdc++-v3/testsuite/20_util/pointer_traits/requirements/typedefs.cc
! a225d39820dbf254373deef58588e845  libstdc++-v3/testsuite/20_util/polymorphic_allocator/1.cc
! e911e6b695491b7cb9e1134e147caaff  libstdc++-v3/testsuite/20_util/polymorphic_allocator/allocate_object.cc
! 4621354fc1ad10271437806ec13b7c99  libstdc++-v3/testsuite/20_util/polymorphic_allocator/construct_c++2a.cc
! cd344f8c854993df29738dc752bc605e  libstdc++-v3/testsuite/20_util/polymorphic_allocator/construct_pair.cc
! 9983fc2c9413f1b64594fe04a5e1b59c  libstdc++-v3/testsuite/20_util/polymorphic_allocator/lwg3237.cc
! 3568aa6c23a34a5aa55868942d1b799e  libstdc++-v3/testsuite/20_util/polymorphic_allocator/resource.cc
! e5e587d6e278494711c38febb361b12b  libstdc++-v3/testsuite/20_util/polymorphic_allocator/select.cc
! 9589a7ea8ac2c87dfe02964a832ab6bf  libstdc++-v3/testsuite/20_util/rank/requirements/explicit_instantiation.cc
! e6182b66abc93c38a9dcfdb68e050345  libstdc++-v3/testsuite/20_util/rank/requirements/typedefs.cc
! e5c871259608ed18358a7cbc536e4aa7  libstdc++-v3/testsuite/20_util/rank/value.cc
! 207de37aa8dd1d0db2743d38dae921b4  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp1.cc
! 199b1d369158d675bff3c92f5d011ca1  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp2.cc
! d3dcd38bf870ae75a5a2f1502999310c  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp3.cc
! 4de68cb784306f0cabff48b2c6cebc38  libstdc++-v3/testsuite/20_util/ratio/cons/cons1.cc
! 6ed06e234e3a903d8ecba26b19c301aa  libstdc++-v3/testsuite/20_util/ratio/cons/cons_overflow_neg.cc
! 4f74bb4f7db36474f77afe3c386772ca  libstdc++-v3/testsuite/20_util/ratio/operations/45866.cc
! 76c7c2f7b2f2e98312240ac187d40021  libstdc++-v3/testsuite/20_util/ratio/operations/47913.cc
! 3f446b2e8c04497cc2bf076d060d1a90  libstdc++-v3/testsuite/20_util/ratio/operations/53840.cc
! 3b7c9e327c25cf1de9276a2ccb1a8e58  libstdc++-v3/testsuite/20_util/ratio/operations/ops1.cc
! 20893ae55d35dc406c8987c68ecf509a  libstdc++-v3/testsuite/20_util/ratio/operations/ops2.cc
! d0e71b142804d7131ca91db4a47f94aa  libstdc++-v3/testsuite/20_util/ratio/operations/ops3.cc
! 3eb2600013772b46f08910dd36078e2c  libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc
! d8f550e346649a98e7b0e0ed13d30d1f  libstdc++-v3/testsuite/20_util/ratio/requirements/constexpr_data.cc
! fef5060af03d5b23232c048d58376c2d  libstdc++-v3/testsuite/20_util/ratio/requirements/ratio_equal_v.cc
! e67b3868201079198e4bc3543f9083d1  libstdc++-v3/testsuite/20_util/raw_storage_iterator/base.cc
! da1754b1f3487a0120554b4f6c929720  libstdc++-v3/testsuite/20_util/raw_storage_iterator/dr2127.cc
! b81af6aab22484eac9c56285da3802d1  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/base_classes.cc
! dbc5d2ac2caab9c3c244b55297ed000b  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/explicit_instantiation/1.cc
! 5bc07bc46caa9f0c6c710d79fb35b0e5  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/typedefs.cc
! c2b47c89b97dd890d09439888fd669ab  libstdc++-v3/testsuite/20_util/reference_wrapper/24803.cc
! ab77b86fcdbc98cd4a292eb741e25831  libstdc++-v3/testsuite/20_util/reference_wrapper/41792.cc
! 064e04c23e0096793c11efdb4cb68335  libstdc++-v3/testsuite/20_util/reference_wrapper/80504.cc
! aa106fabd5a6a9320b420d0cac480231  libstdc++-v3/testsuite/20_util/reference_wrapper/83427.cc
! efd01685cefdcc431904a6834c493177  libstdc++-v3/testsuite/20_util/reference_wrapper/constexpr.cc
! e3708c3d1661bb22836f42b49aad45b6  libstdc++-v3/testsuite/20_util/reference_wrapper/deduction.cc
! 47b2b4ef49d4cc8224b66532b15aaeea  libstdc++-v3/testsuite/20_util/reference_wrapper/incomplete.cc
! e05d362aaf20d9f796a178b28ffa5402  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-2.cc
! bc2a9b5ddf521051836816a7f2631836  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-3.cc
! d0c77ef75c79f4cfc8c59e17faaf8a67  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc
! 775f4f2fe6d37098d0472584f28cc629  libstdc++-v3/testsuite/20_util/reference_wrapper/lwg2993.cc
! d158176b7b0971e1da87c0c9bc978d8b  libstdc++-v3/testsuite/20_util/reference_wrapper/ref_neg.cc
! e14d574881d1fad5772ed0fb8fea47e0  libstdc++-v3/testsuite/20_util/reference_wrapper/requirements.cc
! deceeda0a4e0c5b466478af83b93c847  libstdc++-v3/testsuite/20_util/reference_wrapper/result_type.cc
! 3ae2e288002106655c82a15fdea6af45  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs-2.cc
! e426bc0889e49a71ee738cebe2751da7  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs-3.cc
! 9369d70b210633d518c12f2901855d6d  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs.cc
! 137ad7dcd4e75da1261dcdb3a0d6d699  libstdc++-v3/testsuite/20_util/rel_ops.cc
! 895383f032004a5eb44400b23d7444ac  libstdc++-v3/testsuite/20_util/remove_all_extents/requirements/alias_decl.cc
! c08cc7f2e4b65eef3f29667fa29809e2  libstdc++-v3/testsuite/20_util/remove_all_extents/requirements/explicit_instantiation.cc
! d63b1e74502aa503e7d0bc04f2e325b6  libstdc++-v3/testsuite/20_util/remove_all_extents/value.cc
! 1b989c17a5f5a52bb0fc5bb776ee16d8  libstdc++-v3/testsuite/20_util/remove_const/requirements/alias_decl.cc
! 91bf6682dc9e296d9762a0f2cd6a8010  libstdc++-v3/testsuite/20_util/remove_const/requirements/explicit_instantiation.cc
! 8d47ffceb5b9cea363847b2c04e10b37  libstdc++-v3/testsuite/20_util/remove_const/value.cc
! c4e12519d35527275ec8bdedd7cff741  libstdc++-v3/testsuite/20_util/remove_cv/requirements/alias_decl.cc
! ddde96ed39a10a45b7e8d0db629563a1  libstdc++-v3/testsuite/20_util/remove_cv/requirements/explicit_instantiation.cc
! f943e353331fc3472c8313aacff1288a  libstdc++-v3/testsuite/20_util/remove_cv/value.cc
! 000d5fbe8e76853a436c170d3a58ab44  libstdc++-v3/testsuite/20_util/remove_cvref/requirements/alias_decl.cc
! dbd04d1cd5f3f2a45c96a19c82d4bf16  libstdc++-v3/testsuite/20_util/remove_cvref/requirements/explicit_instantiation.cc
! ebd7e8adb733a26fdefd45b9cc779867  libstdc++-v3/testsuite/20_util/remove_cvref/value.cc
! f16d280351ceaae46408b753e8188947  libstdc++-v3/testsuite/20_util/remove_cvref/value_ext.cc
! 5ecc97b65af677814fa75c32f9917ca8  libstdc++-v3/testsuite/20_util/remove_extent/requirements/alias_decl.cc
! 7c8752a44dde37e33d839f3ac8374767  libstdc++-v3/testsuite/20_util/remove_extent/requirements/explicit_instantiation.cc
! e437b1bf43c914e6f72d65841ac2962f  libstdc++-v3/testsuite/20_util/remove_extent/value.cc
! befd64d689b7a9521a9f0f1a5350383c  libstdc++-v3/testsuite/20_util/remove_pointer/requirements/alias_decl.cc
! 112c5677b3712fe2cbaa0491729db5cd  libstdc++-v3/testsuite/20_util/remove_pointer/requirements/explicit_instantiation.cc
! 265e10a4dd46f0b77863a2b9f93bc6ae  libstdc++-v3/testsuite/20_util/remove_pointer/value.cc
! acbc5177fd79f3604a537160329bc1e2  libstdc++-v3/testsuite/20_util/remove_reference/requirements/alias_decl.cc
! 6828dc651fb52bba0b29d327e319a1e0  libstdc++-v3/testsuite/20_util/remove_reference/requirements/explicit_instantiation.cc
! 8db0ecc19c8b23a4e532eeefd228bf2f  libstdc++-v3/testsuite/20_util/remove_reference/value.cc
! 50b926c5d3307a97a89bc3e0aa053b8f  libstdc++-v3/testsuite/20_util/remove_volatile/requirements/alias_decl.cc
! b52fa3cdb8dd4ad62023d2c76e0940e9  libstdc++-v3/testsuite/20_util/remove_volatile/requirements/explicit_instantiation.cc
! ade43f79e08e57b5bdc1f3f77df6cbf3  libstdc++-v3/testsuite/20_util/remove_volatile/value.cc
! 3f77a70769e288e53ecfe9ec63022b1b  libstdc++-v3/testsuite/20_util/result_of/1.cc
! b55afcc94d1a91a2a689c0587349d422  libstdc++-v3/testsuite/20_util/result_of/2.cc
! 1d608b2d0673bc2633ac82e8cdbda3ad  libstdc++-v3/testsuite/20_util/result_of/requirements/alias_decl.cc
! 7c4e6d61c93c97f2533c1cb31d44c529  libstdc++-v3/testsuite/20_util/result_of/sfinae_friendly_1.cc
! 3a68fb53cde5817cb58725200bd4a9b5  libstdc++-v3/testsuite/20_util/result_of/sfinae_friendly_2.cc
! d35d4db73c35b1943c77273ed173d9dc  libstdc++-v3/testsuite/20_util/scoped_allocator/1.cc
! b270f73ff97fa36792a6b0faf61b0191  libstdc++-v3/testsuite/20_util/scoped_allocator/2.cc
! 5b5b197c3784a132cf0b0a6fdf265089  libstdc++-v3/testsuite/20_util/scoped_allocator/3.cc
! 14237034a0ba21d271477e724c70175e  libstdc++-v3/testsuite/20_util/scoped_allocator/65279.cc
! 28c72b75147d6af75da8fd88b3a8da0c  libstdc++-v3/testsuite/20_util/scoped_allocator/69114.cc
! d6740bd351d0ccab63244009ee4a81c1  libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc
! e871a5df2eba2364ac02f4f035b3b4d8  libstdc++-v3/testsuite/20_util/scoped_allocator/construct_pair.cc
! a2b81f8017db634fc4f9df9fcf7234a8  libstdc++-v3/testsuite/20_util/scoped_allocator/construct_pair_c++2a.cc
! 96797cb015e75b0c6ccd87d7d7c54c06  libstdc++-v3/testsuite/20_util/scoped_allocator/dr2586.cc
! 6f53bb8f21ba1508b929b404b51a12f5  libstdc++-v3/testsuite/20_util/scoped_allocator/outermost.cc
! 542b24b2be4f8cf9c42f542a16bf6817  libstdc++-v3/testsuite/20_util/scoped_allocator/propagation.cc
! 2e6c7ccd36a707fc132e06aaebc44a52  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc
! a022741da66d6e865e81bb5edb9ca241  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/typedefs.cc
! fddd9ead409305c0d86d42dbaaf7ca71  libstdc++-v3/testsuite/20_util/shared_ptr/assign/assign.cc
! ffcf22f1e384254e96d935330ddbeed2  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr.cc
! 64dfba068bcb5998c1654a5b194b8703  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc
! a9f1232fd44429cc829fcb6b1911b053  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc
! 695e771a81b6007eb9718d77d09e1974  libstdc++-v3/testsuite/20_util/shared_ptr/assign/dr541.cc
! 3ced8b22d431f17e36acdb3ce886d8e2  libstdc++-v3/testsuite/20_util/shared_ptr/assign/move.cc
! 24cfec31db8f4609621472804136a82f  libstdc++-v3/testsuite/20_util/shared_ptr/assign/sfinae.cc
! 083ddc1ed1b9d54d8595e19f8a92d44a  libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr.cc
! 895fb4cb352d8c0f78b311dc86d06707  libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc
! af87a7b6ae8525c5f56e39b3bc94de9b  libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc
! 04cafb9acaf56f130d1444e1e014cce5  libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc
! a89246a82ca4c1e04ef904a11e75ff5d  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/1.cc
! 8566bfdbc012478ea7001354b06af28d  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc
! b36fb8ab16564f2c57c409b36a7c99be  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/3.cc
! 78c6bea140e57a7ac3d1ff402a06ea79  libstdc++-v3/testsuite/20_util/shared_ptr/casts/1.cc
! bfde24be58e1a582453014ff1f540928  libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc
! c85df25a3c50788b00571489cbe36965  libstdc++-v3/testsuite/20_util/shared_ptr/casts/rval.cc
! f9e36171dfe090ea8c2e92c86ce1fe05  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/42925.cc
! 44722d5233e174dc6aa2bf85c04913d7  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/86537.cc
! e74b3811f85ee59d34bcfd68d77e3fcf  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc
! 6da84a7994aca5f2499df0054102a0e1  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc
! 9addda6c9019c775eb00b0c7470098d7  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/dr1401.cc
! c15fa455a5ab532390deb84ee88dd987  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc
! f91c97cfc73a0e6c0adb25e52e095ee1  libstdc++-v3/testsuite/20_util/shared_ptr/cons/39405.cc
! 3ae08cbf764ef99f84735904c7033f9a  libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
! 4ff37289c296474efdad795e82ebccb4  libstdc++-v3/testsuite/20_util/shared_ptr/cons/46910.cc
! 5fedf92a9a8e562dc9b67cce62b69490  libstdc++-v3/testsuite/20_util/shared_ptr/cons/51365.cc
! af4f74573e43d20966241f947820ca67  libstdc++-v3/testsuite/20_util/shared_ptr/cons/52924.cc
! d07032503eef9e88e90c1474483353fe  libstdc++-v3/testsuite/20_util/shared_ptr/cons/55123.cc
! 4692329944218701aa2f1fb728f5fb0a  libstdc++-v3/testsuite/20_util/shared_ptr/cons/58659.cc
! f97b44a7dd91001540d6953b0e9b08e1  libstdc++-v3/testsuite/20_util/shared_ptr/cons/58839.cc
! 94236b69615b016685f41535954a1886  libstdc++-v3/testsuite/20_util/shared_ptr/cons/61036.cc
! d8d0eb72efc712dc53e80546121729cc  libstdc++-v3/testsuite/20_util/shared_ptr/cons/79467.cc
! 82badecf27726c99004a3ee2f2d1dde1  libstdc++-v3/testsuite/20_util/shared_ptr/cons/80229.cc
! 2a9c463ec319565bfd6427ff9c2fe004  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias-rval.cc
! 462478cbe2dd19256a55d96d5073b297  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias.cc
! 4f1c76cfd8d4ff9688b041dd0366a82e  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc.cc
! e8dbdcb85ca5ebe787c56647fd263740  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc_min.cc
! 24e42f8c48cbb1d828f843d157829ae3  libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc
! 882b1d8899cb2adf8212069b0c65b07f  libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr.cc
! 45d72d66e2e985fc46e241ef0dac3a93  libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc
! 7bea3d3fe65621235ac24cc5a6996e5a  libstdc++-v3/testsuite/20_util/shared_ptr/cons/constexpr.cc
! 8878bf4def942692927a2dbeb6021c58  libstdc++-v3/testsuite/20_util/shared_ptr/cons/copy.cc
! c0a9c654a05737aa462b6131e6ec9da6  libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc
! 8328a277ea83d87fb57c9d3df8d8efa4  libstdc++-v3/testsuite/20_util/shared_ptr/cons/default.cc
! 962d726032ceb5728bc20a6af100e5cf  libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg2802.cc
! f5ab5b4ba1935845e5729cc9245e5c04  libstdc++-v3/testsuite/20_util/shared_ptr/cons/move.cc
! e02b794e56d74c705350344dc2211fc8  libstdc++-v3/testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc
! 9ae2381bee0531e9c6ed265713b2ee20  libstdc++-v3/testsuite/20_util/shared_ptr/cons/nullptr.cc
! d0fb56e41f27126dd46380680b85ae2e  libstdc++-v3/testsuite/20_util/shared_ptr/cons/pointer.cc
! 9603381a835a5f290cbf4766aeb100f1  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr.cc
! 644348b1e0c83416c8f1aa45cca897b5  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc
! 2402f632b1704eb224946b9990f5f8ed  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc
! bd96d8da0a14d98320c6bc6cc5950aba  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc
! be726562a07531b866b47d7ec0946d84  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc
! 580abbe777e8adce5ba9b1051d0b25be  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_neg.cc
! fe5b77cea13fe526b01349726a395381  libstdc++-v3/testsuite/20_util/shared_ptr/cons/void_neg.cc
! 6e9a84ca4cda6930a4aa3b5250a82990  libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr.cc
! 1f441bf77297570a18e60ee06a22eb50  libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr_expired.cc
! cf3fc22a1af10aa50e949fac6f0903ac  libstdc++-v3/testsuite/20_util/shared_ptr/creation/36949.cc
! a575120adc93409d9d4a18dfef29a267  libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594-no-rtti.cc
! 3d83a3250323b33c6205cd2ec624d11e  libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594.cc
! 674686652879a51cfc201f881118d979  libstdc++-v3/testsuite/20_util/shared_ptr/creation/87278.cc
! a44d681603fac09689d6bbd6d9b3e1f0  libstdc++-v3/testsuite/20_util/shared_ptr/creation/92878_92947.cc
! fa48c04ffa8cd19ba4a57655812231bc  libstdc++-v3/testsuite/20_util/shared_ptr/creation/alloc.cc
! eaba0153f8cc432c016c670415e3b94e  libstdc++-v3/testsuite/20_util/shared_ptr/creation/alloc_min.cc
! 3bc63f8736fccb0c89ea5f4806a56782  libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr402.cc
! eeb7fa84e489c2606d1bc0755785edd5  libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr925.cc
! 19fb105da1e7decc32838063c4cae85b  libstdc++-v3/testsuite/20_util/shared_ptr/creation/make.cc
! e7f4d0aa877a2115bc97cb019042aea0  libstdc++-v3/testsuite/20_util/shared_ptr/creation/no_rtti.cc
! 5d56c4718a9c1d8740fe605b31e49216  libstdc++-v3/testsuite/20_util/shared_ptr/creation/private.cc
! f2f4f3a3136eb8789df2b60c2664566b  libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation.cc
! 56a134cf6bf97b90432b12363b5432e6  libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc
! 9538b89003867ad9f92c7db3098808a0  libstdc++-v3/testsuite/20_util/shared_ptr/dest/dest.cc
! 00311464b332e334a4511d462f22f312  libstdc++-v3/testsuite/20_util/shared_ptr/hash/1.cc
! f7ab9cb255caa09854822628d9e872a4  libstdc++-v3/testsuite/20_util/shared_ptr/misc/24595.cc
! e205bf10f5648be15a143c5dd7679ff7  libstdc++-v3/testsuite/20_util/shared_ptr/misc/42019.cc
! ed2f425f843730641066bba6fdaa0b36  libstdc++-v3/testsuite/20_util/shared_ptr/misc/get_deleter.cc
! 48294efe2c206e3e5d1c8b4e5ae2005c  libstdc++-v3/testsuite/20_util/shared_ptr/misc/io.cc
! e88d4d15e04ded8fedd1da6ddceee6c7  libstdc++-v3/testsuite/20_util/shared_ptr/misc/swap.cc
! 7d98e99d7beeafcdd1da8ea52a6b968b  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/24805.cc
! 0da2848675af638b34039d2db515e895  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset.cc
! 4d9f0b7efd5924070ba1b9caa41e4413  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_alloc.cc
! 7f70791ce1181c536952fbe84e5b2ddb  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_neg.cc
! 12484ca015fed24dc965d2d9f79513ee  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc
! f79fa52b63ddf249d648427750d0384b  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap.cc
! f1c94af073c4a71fe39d5723a80add5e  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap_neg.cc
! 089d35eb2c8b60e51455ed6304d3ddf7  libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc
! a1b13851c959354ad53194b6136cda8b  libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc
! 5b4e9cec8799b330a7f4541ff95c7114  libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc
! 66a7ba11ef75c6ccc85acb6e268e8654  libstdc++-v3/testsuite/20_util/shared_ptr/observers/owner_before.cc
! 76a18a2fa120928f2d9c86a5c6ab376c  libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc
! 9c2d44e746f4a94f2132a96d06deb76e  libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc
! be5b9375a332dfd29787a73c8edb78e9  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc
! cf3f76846d23c3ec41ad12fc5d91d984  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/2.cc
! ccd90ddcc3a6e916ed3cb7331fb54c2b  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/weak_type.cc
! 568456c7f61ea207d24342079865e087  libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc
! dafef3355983ff2b3065b188a4692cca  libstdc++-v3/testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc
! 47a89ac44d7e3073ceeed94886d6bece  libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/1.cc
! 01748aaab248cabfba4e0cc36a23e79a  libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc
! e7e959199b5fd7f436d7e56d3d746f47  libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/95788.cc
! 9db249b48dcdbd4713caafdd0302c240  libstdc++-v3/testsuite/20_util/specialized_algorithms/destroy/constrained.cc
! f6ab919bc99d15634470a5588db6b8df  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc
! 72a517cac5142f1eac9c7f0c008f7244  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
  a8a96c5beee704fc305ac0b3f9f86eb8  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc
  71c89a867dc34b77baecc40ffccad5c3  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc
  8ec8915100c6353851df3874d54e7f8c  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc
! b52c8e7d9de32fdd0beff24aebe33b14  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc
! b415cb4f0a007ddf44206e69d5b79dee  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/58982.cc
! 24accae72f91389d5232078d3d931bc1  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/64476.cc
! 753b55ee1464abbda6a126a12a7e2b90  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590-cxx11.cc
! 07f32aef4ea49b8bcf850c0832438646  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590.cc
! 5b33206899648a142f0c8b1aa61d9524  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc
! c8c01c0704ee7dd4a77c13968a3bdc98  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/constrained.cc
! 5558401fae56387639a4bdfc0a644af6  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/move_iterators/1.cc
! 4655453bee4867113e6d9a78da03ff67  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/58982.cc
! 9ba71da77adf69c4afeaed3a351b8a11  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/89164.cc
! 5a7ce7ec6352468c45c413babba1a393  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/move_iterators/1.cc
! 103bba7ba3cb7f8b0af54a5d73f285d6  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default/94540.cc
! 5d945de5c922092314f493ff7c5b9e31  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_construct/constrained.cc
! 59f9d791d1f1b71780d2e19f923542bb  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_n/94540.cc
! fbceb5bdc92fc40df91a86cef92fc287  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc
! 6be78fd32f4d4cbd39a83e755af00646  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/32158.cc
! b48a007fa01e34186ceed1e10a2c04ee  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/58982.cc
! b9476d6bce48e0dfb5c7800ee8dda94a  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc
! 872da6aba200b53e7607df7ce326d848  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc
! 039ca6b77153207af9c30c83eda86b58  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/constrained.cc
! f4bf22b0791f44d55d99afedd49a9593  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/16505.cc
! a1c838ed9f6349162054cfa13acfec1e  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/58982.cc
! b1b5c229b6bef4b78affc416ad9ade1c  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/89164.cc
! 27d366ce2bf0ef3f2b78b9ddc4d55d93  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc
! 57da2bdb3bb3acc9dac4a5df1f258424  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/dr1339.cc
! d3c40097c0f5bd9745cdf077882bf917  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/sizes.cc
! 9e7a9c4c073ef17679ffcf3f97f1c72e  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_move/constrained.cc
! 21fc1b5ee4b48934de5431a28043d3e9  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94540.cc
! 4118f7e3f17434ab13bead8de2278e42  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94831.cc
! 80546dd4bafa39b68ae120b565cbc09d  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/constrained.cc
! 7996596be4af071f076aa1c5d9157585  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/94540.cc
! 5391506b605333e718db0dd5e2c5946e  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc
! d32fc942b7a7cb96a5ac2ed5d25b5448  libstdc++-v3/testsuite/20_util/steady_clock/constexpr_data.cc
! b962dc173c602919a740f163373124e4  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/allocate.cc
! e2c9a561013d9373cdbd49e370dfa98e  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/allocate_single.cc
! 2075068fdd6d8593c381f4e6cabc6cbe  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/cons.cc
! 850eddc7ffffa10e1b4bdcd4e7f69709  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/cons_single.cc
! a62d9bfcc3129976c19e17eefa4663d0  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/is_equal.cc
! 7063ba9577961215650957bf5ac76b54  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/multithreaded.cc
! 5e97f9b059e0e2de013cc9c0cd2563e5  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/options.cc
! 0e299d94af63ce3f998a0cbef8a14f45  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/release.cc
! 7cdf924694849e2066af54139add1dda  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/release_single.cc
! 03391880458b9e5b911ebe568267ef86  libstdc++-v3/testsuite/20_util/system_clock/1.cc
! b6edb24a8ef0f06b92ceeb16e9b362b1  libstdc++-v3/testsuite/20_util/system_clock/constexpr_data.cc
! e9337d40380c1b05c7822e278413b4f7  libstdc++-v3/testsuite/20_util/temporary_buffer.cc
! 11dba124c27fd44b7cc79e242e051a23  libstdc++-v3/testsuite/20_util/time_point/1.cc
! 785f5e24bcff749d46db13d3527ce1fd  libstdc++-v3/testsuite/20_util/time_point/2.cc
! 6f0d513fbde1697bb523b45ec0de2a65  libstdc++-v3/testsuite/20_util/time_point/3.cc
! 1a80b386386d435edb0cba9cdfb70b5d  libstdc++-v3/testsuite/20_util/time_point/4.cc
! fd470359b91330310de28d508aa1b2bf  libstdc++-v3/testsuite/20_util/time_point/arithmetic/constexpr.cc
! c192c301f4b37e5e7dbe1de4a597484b  libstdc++-v3/testsuite/20_util/time_point/comparison_operators/constexpr.cc
! 9cb0f2b9cc5c427a6e5b65902f2d0cca  libstdc++-v3/testsuite/20_util/time_point/comparison_operators/three_way.cc
! b298b62ce8dc552d84daf7e7164d4187  libstdc++-v3/testsuite/20_util/time_point/cons/81468.cc
! 57792c225478218e30cace44b35e26a3  libstdc++-v3/testsuite/20_util/time_point/cons/constexpr.cc
! fa266b1e66906ad683bb8b78d84a6166  libstdc++-v3/testsuite/20_util/time_point/nonmember/constexpr.cc
! b990de4205cf8d74fcc3dfba7eadf370  libstdc++-v3/testsuite/20_util/time_point/requirements/constexpr_functions.cc
! 454047a743cdb7d32388e2ba483432eb  libstdc++-v3/testsuite/20_util/time_point/requirements/duration_neg.cc
! c355bfffa6d2ecab99f322b01dfc8a5a  libstdc++-v3/testsuite/20_util/time_point/requirements/explicit_instantiation/explicit_instantiation.cc
! 6d4dad896dbbd40d474ef7d6fc37140e  libstdc++-v3/testsuite/20_util/time_point/requirements/noexcept.cc
! b2316fab435a1f2d8520298d14805a9d  libstdc++-v3/testsuite/20_util/time_point_cast/constexpr.cc
! f89f7fec9af040a1d8a59d32af7eda38  libstdc++-v3/testsuite/20_util/time_point_cast/rounding.cc
! 2c5bd4b6508aec1f493e5d1a2cd8494c  libstdc++-v3/testsuite/20_util/to_address/1.cc
! 7ae269a374d0a0aab75eb1f929fd52fc  libstdc++-v3/testsuite/20_util/to_address/1_neg.cc
! 133fe12805e3256b9c431c4ba30e0622  libstdc++-v3/testsuite/20_util/to_address/debug.cc
! 8fb10a36f1bccc97501878ffd73ca157  libstdc++-v3/testsuite/20_util/to_chars/1.cc
! de7ebfc26e88acbc9d63fcfcabf0b382  libstdc++-v3/testsuite/20_util/to_chars/2.cc
! 1a0d64d92cabf841fba2b6b306ccc587  libstdc++-v3/testsuite/20_util/to_chars/3.cc
! 8fe52dfaad2bd6b6d62754c4cd1939c5  libstdc++-v3/testsuite/20_util/to_chars/95851.cc
! 0b1e2248e96f7a1a6258c26e4447c6c5  libstdc++-v3/testsuite/20_util/to_chars/chars_format.cc
! 50b3c2a75acca0712b10b34a839020ab  libstdc++-v3/testsuite/20_util/to_chars/compare.cc
! 3a4dda72d6bd8a2382f03c3eeaad6281  libstdc++-v3/testsuite/20_util/to_chars/double.cc
! 4fdd8972cf7eaa957efeaadc8246584f  libstdc++-v3/testsuite/20_util/to_chars/float.cc
! 3071c957932bfb98cf56c2a7ba65604c  libstdc++-v3/testsuite/20_util/to_chars/long_double.cc
! 0828e09caa203d35b515224149ea5061  libstdc++-v3/testsuite/20_util/to_chars/lwg3266.cc
! fd200165728788ecbdd79a3dbbb19e2e  libstdc++-v3/testsuite/20_util/to_chars/requirements.cc
! 526c19d264780eb47e22a26b407f9e9b  libstdc++-v3/testsuite/20_util/to_underlying/1.cc
! 84e6ca1a28b37bb40918da03edff0d14  libstdc++-v3/testsuite/20_util/to_underlying/version.cc
! e99c678e5b67fe8c2095f4247a68aa82  libstdc++-v3/testsuite/20_util/tuple/48476.cc
! d566241f227e4e73bc1c36389e28718e  libstdc++-v3/testsuite/20_util/tuple/51365.cc
! e0457daadc13c74d943db9f55dc9bb0b  libstdc++-v3/testsuite/20_util/tuple/53648.cc
! eb69c33f8797fd1762720028f0c924c1  libstdc++-v3/testsuite/20_util/tuple/56785.cc
! d10e8c37983d12ee66458861314750ba  libstdc++-v3/testsuite/20_util/tuple/60497.cc
! 2785992c8a2531fef2fbf0b1bad1f5eb  libstdc++-v3/testsuite/20_util/tuple/61947.cc
! b4ee094e2e63ede558403cc895e896ee  libstdc++-v3/testsuite/20_util/tuple/67844.cc
! 6f141b823acf9318f18dd934dfe80f1d  libstdc++-v3/testsuite/20_util/tuple/77395.cc
! cc096e102c4e2e92bfad7ea3e3a8d663  libstdc++-v3/testsuite/20_util/tuple/77802.cc
! 7fcf52a42396f34d0e10abf5fb067aed  libstdc++-v3/testsuite/20_util/tuple/78939.cc
! fbb4ececa4de00ba62eee736ae91e4b5  libstdc++-v3/testsuite/20_util/tuple/apply/1.cc
! 253b30376cd44ca11eb8146d7f11de1e  libstdc++-v3/testsuite/20_util/tuple/apply/2.cc
! bc61feeb8d935a3aac751383ef085c55  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/35480_neg.cc
! f6b7a33203fa4099631dec37e15dcf3b  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/93147.cc
! d14f4b5e32eff50b207cc01fdea90213  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/comparisons.cc
! 5286da75b33de2dbd53bc25475bbecdd  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/constexpr.cc
! 28e4120fadc0bd2c624b8fff9b2b25f7  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/overloaded.cc
! 1a535e0b93b4813fb9d5ce3c26d0d3fc  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/three_way.cc
! e3566f9668d13eea0bc28024e1e60adc  libstdc++-v3/testsuite/20_util/tuple/cons/41530.cc
! b8b6f7aca02de3d0464000ca018da3ba  libstdc++-v3/testsuite/20_util/tuple/cons/44487.cc
! 521de308a3f68c36303b621ffb72195a  libstdc++-v3/testsuite/20_util/tuple/cons/45228.cc
! bce4ed9172dff691ac4b512a48d8dde3  libstdc++-v3/testsuite/20_util/tuple/cons/48476.cc
! 41b466da97ce935231421e5d64c46608  libstdc++-v3/testsuite/20_util/tuple/cons/66338.cc
! d99cccbe9da8c2e4b0c72f855176776b  libstdc++-v3/testsuite/20_util/tuple/cons/90700.cc
! cf0d796e3c59582ba024232a1427027b  libstdc++-v3/testsuite/20_util/tuple/cons/96592.cc
! aba82a3e912783f65a46815c1d73599a  libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc
! 982be20bceca427f397f21e65d328ef4  libstdc++-v3/testsuite/20_util/tuple/cons/allocator_with_any.cc
! 112a8649ba08ed91d027648793df8242  libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc
! 867417757a7fa4209e2948844fb36542  libstdc++-v3/testsuite/20_util/tuple/cons/assignment.cc
! 3115bc52b27a5101595441e8f6e34cfe  libstdc++-v3/testsuite/20_util/tuple/cons/big_tuples.cc
! 8a37c959ace01c26597f68f1bcaaef5e  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr-2.cc
! 22e6a7f098c03a946151a2c21748fc93  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr-3.cc
! e87f74762d2bdea9865a9e8a3aa4fde1  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc
! a45c2c2dceecab2183b3d6cc6da5d499  libstdc++-v3/testsuite/20_util/tuple/cons/constructor.cc
! d613833f2851a12c297f1c3e812f1bd4  libstdc++-v3/testsuite/20_util/tuple/cons/converting.cc
! 8394f49e99a0c46290fc64cae552035a  libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc
! 1f2dce38e797ee00b3bed538d1379a8a  libstdc++-v3/testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc
! 6ef33a7dc8a2f1bc0c3a3faab4fcff71  libstdc++-v3/testsuite/20_util/tuple/cons/explicit_construct.cc
! 040aea5e231d08b8bb79fcad595ab669  libstdc++-v3/testsuite/20_util/tuple/cons/nested_tuple_construct.cc
! 98e01b5536c80c2105656537bda875c5  libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_move_construct.cc
! 2d231d34db3830d42820504dcbbba167  libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_specs.cc
! aca809d8ed661a9cae0d7c44f1d9d96b  libstdc++-v3/testsuite/20_util/tuple/constexpr_swap.cc
! 268266ca9c3663bc003a98106fedb7bc  libstdc++-v3/testsuite/20_util/tuple/creation_functions/23978.cc
! 79c9d183318b6c2e8c2cccb0f7220f83  libstdc++-v3/testsuite/20_util/tuple/creation_functions/48476.cc
! dfe9708a0b7f880bad3ff2bec43c49da  libstdc++-v3/testsuite/20_util/tuple/creation_functions/55713.cc
! 9d4685f7638901221b72ab9b0315f7bc  libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr.cc
! be90ce43ffea0b6e9c23abd1ccf5e4e5  libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr_cpp14.cc
! 10226aa1f1eba829f003188f86dda194  libstdc++-v3/testsuite/20_util/tuple/creation_functions/forward_as_tuple.cc
! e46f6755f4fb6b865573a96f7cd7923e  libstdc++-v3/testsuite/20_util/tuple/creation_functions/make_tuple.cc
! d46cb9d24e911bccc84df98314e4c462  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tie.cc
! 42ce0c61e7ce0ed04f2b80472ba18b63  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tie2.cc
! ad6f111f9867b13754a311adc6301377  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tuple_cat.cc
! 0c7ec09c8b4aca267db72b2b9153f90f  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_element.cc
! 93ba5ddbb9f6992dbfab73ff1098c592  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_size.cc
! 3e8979b11f69a2d6617bb76fef39355e  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_size_neg.cc
! 46adde7d7d256841c482dc16a18d1ea2  libstdc++-v3/testsuite/20_util/tuple/dr2729.cc
! 41238d590ea4765b923c8788ab40c644  libstdc++-v3/testsuite/20_util/tuple/element_access/71096.cc
! 8284ee35cf319fed144438737344e7a0  libstdc++-v3/testsuite/20_util/tuple/element_access/constexpr_get.cc
! b68cf5416c2fe58417a5aa928142e9c0  libstdc++-v3/testsuite/20_util/tuple/element_access/constexpr_get_by_type.cc
! 1ab5d5135ed18826705090182d042b4f  libstdc++-v3/testsuite/20_util/tuple/element_access/get.cc
! 2664029df7afaf53b6185f17aedba134  libstdc++-v3/testsuite/20_util/tuple/element_access/get2.cc
! 8bb95bc3aa77e1f9d2214264bae0256d  libstdc++-v3/testsuite/20_util/tuple/element_access/get2_by_type.cc
! 92478d058d2368d1e740e28f8f3977c6  libstdc++-v3/testsuite/20_util/tuple/element_access/get_by_type.cc
! bb828b0edfb3695f6590c6f3ccd95f30  libstdc++-v3/testsuite/20_util/tuple/element_access/get_neg.cc
! 05cab5247f675a297c4e948572c966f1  libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/1.cc
! b10cd71ad94f301c32dfdf14c5355d43  libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/2.cc
! 517d115528944a2df1cf9e410fc0c1f9  libstdc++-v3/testsuite/20_util/tuple/moveable.cc
! 999bf853742ffaf04d98a854888e6366  libstdc++-v3/testsuite/20_util/tuple/moveable2.cc
! d98df0b309eca2ab7730157cd8d7a84a  libstdc++-v3/testsuite/20_util/tuple/noexcept_move_assign.cc
! 274787f9152451d3e7d659a5b5bfd701  libstdc++-v3/testsuite/20_util/tuple/noexcept_swap.cc
! cd6e87cc2bc277c9bd69063e8eea2817  libstdc++-v3/testsuite/20_util/tuple/requirements/dr2367.cc
! ca9ac6997faa284d081bf6a24d5a3da4  libstdc++-v3/testsuite/20_util/tuple/requirements/dr801.cc
! 43fedc385c7ce652a2826e88c4c18727  libstdc++-v3/testsuite/20_util/tuple/requirements/explicit_instantiation.cc
! 1ece695951a9c7644bcbd55d3c803bc1  libstdc++-v3/testsuite/20_util/tuple/swap.cc
! 008c3c538a49df681745591871eb43fc  libstdc++-v3/testsuite/20_util/tuple/swap_cxx17.cc
! 7233e6e7c83752f9e6c4efba32ed5ceb  libstdc++-v3/testsuite/20_util/tuple/tuple_element.cc
! c190385542e45d4575995a22902596b6  libstdc++-v3/testsuite/20_util/tuple/tuple_element_t.cc
! e07c734adbd191f41dd01e0936d9cd60  libstdc++-v3/testsuite/20_util/tuple/tuple_size.cc
! f50530ab866b45b58291cc97db04383e  libstdc++-v3/testsuite/20_util/tuple/tuple_size_v.cc
! 16c775f8be368c4e00c34e7428404a81  libstdc++-v3/testsuite/20_util/type_identity/requirements/alias_decl.cc
! cb8ec3b0cb8af783cfbb1047a912958f  libstdc++-v3/testsuite/20_util/type_identity/requirements/explicit_instantiation.cc
! 9681ae174d527f82b7cd1a3e039f0056  libstdc++-v3/testsuite/20_util/type_identity/requirements/typedefs.cc
! 2cc88d466ef4d3076732c530273adee7  libstdc++-v3/testsuite/20_util/typeindex/comparison_operators.cc
! a314f2620e84bf2ee4b06b3054dd4d4d  libstdc++-v3/testsuite/20_util/typeindex/comparison_operators_c++20.cc
! e2fe633f1713bb0755a42d9191182fd4  libstdc++-v3/testsuite/20_util/typeindex/hash.cc
! 10220cafe427c3dc98b0c870324eeeb8  libstdc++-v3/testsuite/20_util/typeindex/hash_code.cc
! 1f39ad9bb88ffa3ea19dd6fbae259cb2  libstdc++-v3/testsuite/20_util/typeindex/name.cc
! 332d465ede6901d73bc527515622f41a  libstdc++-v3/testsuite/20_util/underlying_type/requirements/alias_decl.cc
! f2e5fbc7fd08b26aaf50462ad4a5cec0  libstdc++-v3/testsuite/20_util/underlying_type/requirements/explicit_instantiation.cc
! 597aa70f3c9155beacfe30645ef249bf  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-1.cc
! 76b36855993c715d1829904f6e2dc247  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-2.cc
! 1d026cddb6ddb5ad87666ec6dce86828  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-3.cc
! 7f63843d9456fe020877f497f5dbde84  libstdc++-v3/testsuite/20_util/unique_ptr/54351.cc
! 26b79702d30cb1f90f5e324c2f8d48da  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635.cc
! ce82913601675dfd1f0a1b80c85241e1  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc
! b18de44d2d6352cd80f2944b1f4e0a42  libstdc++-v3/testsuite/20_util/unique_ptr/assign/91308.cc
! 3829e00f0101ec77a61f8c1f33c39dca  libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc
! ce7e4bd35f9c76632a9d67b846a0e187  libstdc++-v3/testsuite/20_util/unique_ptr/assign/cv_qual.cc
! 4b4076fab2a949c8b45ebcf1c808969a  libstdc++-v3/testsuite/20_util/unique_ptr/assign/move.cc
! d16ba6d172a62560e54389288770ca17  libstdc++-v3/testsuite/20_util/unique_ptr/assign/move_array.cc
! b7f1641e65317d69fd1f844a1e4fd3e0  libstdc++-v3/testsuite/20_util/unique_ptr/assign/nullptr.cc
! b105191dabe52ce217b77015a5bd6f91  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/42925.cc
! 0e420b78b00e4126e4745533017b7cf1  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/compare.cc
! 783e6835d21425ff44cb331cf457c30d  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/compare_c++20.cc
! e18aa65583d794ba87bbe31f10746e55  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/dr1401.cc
! 68186e3b2dc33bf455673b6fecb7c0ac  libstdc++-v3/testsuite/20_util/unique_ptr/cons/77990.cc
! a99f65d7c8a22a00d450421fda5fa7b9  libstdc++-v3/testsuite/20_util/unique_ptr/cons/array_convertible_neg.cc
! 2ecd2a758ac403244b58ed1f9c16cab1  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr.cc
! c056a906426399063ddaf9c18975a3a7  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc
! 78cbbded3a55b1554262ba8371cd2a80  libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr.cc
! cc06b8828762fb8c2b039574426940c5  libstdc++-v3/testsuite/20_util/unique_ptr/cons/convertible_neg.cc
! c4a83e5d09feec66437e000e529de09f  libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual.cc
! 122b6f61c7e72d348591e26485528b10  libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc
! f7f54b6a5c0b803a0f943b06900d6e48  libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc
! 111f8141ab6d41f65ef89264e0e5637d  libstdc++-v3/testsuite/20_util/unique_ptr/cons/default.cc
! 2b5a678678d4a565a450e60a4ea4269b  libstdc++-v3/testsuite/20_util/unique_ptr/cons/incomplete.cc
! e61cdeee0663f8f0d43904103cd838d8  libstdc++-v3/testsuite/20_util/unique_ptr/cons/lwg2905.cc
! 0b1d6e21221b45cf90a1f5f539ce2507  libstdc++-v3/testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc
! e835f38de4f7b60d1cf6175b11541982  libstdc++-v3/testsuite/20_util/unique_ptr/cons/nullptr.cc
! 5bd970db286dd1656af05b52e85ec113  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer.cc
! 93d3c868dea9357e25cf54596bbfaa2e  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer_array.cc
! 198be2118b99176a87db3183f1f01925  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer_array_convertible_neg.cc
! bba09ab190e600361a239801c1252e26  libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter.cc
! 8cbe5f4af43267717ca297541c1d7a05  libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc
! ab926de12f928de6cc33af5fb9466ad1  libstdc++-v3/testsuite/20_util/unique_ptr/creation/92878_92947.cc
! 45e04bab9cc12c37f7ec630384c681bb  libstdc++-v3/testsuite/20_util/unique_ptr/creation/array.cc
! 9e089c530b4b41be00b0c9bf8903da83  libstdc++-v3/testsuite/20_util/unique_ptr/creation/array_neg.cc
! f0bf2b46453fc774435747a616c8c8fa  libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite.cc
! 243ea5f4bab5135b6b21277a52803c65  libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite__neg.cc
! e113ddb3c3c66c82ed2de7c0b26eec09  libstdc++-v3/testsuite/20_util/unique_ptr/creation/single.cc
! b68f8eae33065d18bb295963e5926d51  libstdc++-v3/testsuite/20_util/unique_ptr/dr2228.cc
! 00c863cc85fcf57fe5aed5bf46e48a77  libstdc++-v3/testsuite/20_util/unique_ptr/dr2899.cc
! d676ba1cdb2a65c0f373b53b172c00cf  libstdc++-v3/testsuite/20_util/unique_ptr/hash/1.cc
! 3777d2aafb415d44deff4278b3c6b5d6  libstdc++-v3/testsuite/20_util/unique_ptr/hash/90388.cc
! 823806fd077dffb75ddabe9381da6188  libstdc++-v3/testsuite/20_util/unique_ptr/io/lwg2948.cc
! 6548048ea96bb68ebd6023832472641e  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/43183.cc
! 06cdb13cb41e17f6c590929ddbc1404d  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/48398.cc
! fb3158f00250a1c4c7652045a063ec08  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/93562.cc
! 64050a33db19f1d1fe5cfb6e01f2bca9  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/cv_qual.cc
! a438adfe84d541a91c9b7c768aa87c46  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/reset_neg.cc
! 3bf797a02f6961e87528b7b94270c9e5  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/explicit_instantiation/explicit_instantiation.cc
! 6713da41d47d96ba3618f3ae78c68c3e  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/incomplete.cc
! 5ce2c7ff8ae05c486431d032b4ca314b  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/pointer_type.cc
! c366b09cca0254eb576e5d20741489ea  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/pointer_type_array.cc
! 6b06d5ab722540d13dc14d9118aa7a20  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/comparisons.cc
! 1eb460f041c572ac2216ada227542ffd  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/comparisons_array.cc
! 4a7cafdbbe65743044943fc950f31e26  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/swap.cc
! c988029a2b309cb64b5301403ce702b9  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc
! 0d9a9ab1a84654258e93a09e98529a29  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/allocate-max-chunks.cc
! 923f653e681cc2c115bab886aec63873  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/allocate.cc
! 6f8be6df3008d13a344c13042243975c  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/cons.cc
! c2a5d4132c1d8cceb71fa38e46db02f1  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/is_equal.cc
! 3d1c1d1d65ccb9385007b3f57bcaade9  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/options.cc
! 973c7cc848601b58fbe097990bfbafc0  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/release.cc
! 42405d0f76a86c7e2657f560a3101459  libstdc++-v3/testsuite/20_util/unwrap_reference/1.cc
! be823c67e5fc9db39f204a926648fa47  libstdc++-v3/testsuite/20_util/unwrap_reference/2.cc
! 66e487d92183b1af7085eb51e80ad173  libstdc++-v3/testsuite/20_util/unwrap_reference/3.cc
! 3f0703dde192948fd3710f4b6f522a6b  libstdc++-v3/testsuite/20_util/uses_allocator/69114.cc
! ad2949be5ec15db52455395a3855968f  libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc
! 94da979e26afd2b1ac9050756ced02a7  libstdc++-v3/testsuite/20_util/uses_allocator/92878_92947.cc
! 66c740424aabea47657522aa536816ba  libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc
! 2f6d8997cf3698510fbf6c9a880d7a7d  libstdc++-v3/testsuite/20_util/uses_allocator/construction.cc
! f120b3f4038658f2f5aee7aa1130eee6  libstdc++-v3/testsuite/20_util/uses_allocator/make_obj.cc
! aae6d425bfd5346e2bfe0bdb42a12f6b  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/explicit_instantiation.cc
! 99b710c9d615ca5cebaebad0a330f6aa  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/typedefs.cc
! a02a3167e5ae5d939c02ca46abf8b238  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc
! a34b6aa262d459f73e3788d23ad8b292  libstdc++-v3/testsuite/20_util/uses_allocator/value.cc
! f4d1227700e9175dcf2040c0cc2131f3  libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc
  fd102d43e723306496bcc14b30a9565c  libstdc++-v3/testsuite/20_util/variant/80165.cc
! 65e970e962c99207ac2587a6b0109120  libstdc++-v3/testsuite/20_util/variant/85183.cc
! eeaf7ebdc9a657fd5f19d2d3cec39ae2  libstdc++-v3/testsuite/20_util/variant/86874.cc
! 33750a997b8fb909bc18952c19c862ba  libstdc++-v3/testsuite/20_util/variant/87431.cc
! 69c55c3094a54e54019f3fc8560529e0  libstdc++-v3/testsuite/20_util/variant/87619.cc
! 5ea23a8b6fd069bf96e190bc109907d0  libstdc++-v3/testsuite/20_util/variant/91807.cc
! 0fcd38de860b3197d359ef980881d0b3  libstdc++-v3/testsuite/20_util/variant/92878_92947.cc
! eebde6b588768281db7c77f74cb31057  libstdc++-v3/testsuite/20_util/variant/95915.cc
! 582987d2602384346807a907ef269aca  libstdc++-v3/testsuite/20_util/variant/any.cc
! 57d1ae93a7087cca1005345f7b750492  libstdc++-v3/testsuite/20_util/variant/compile.cc
! 62dcc4b3e169c097c6889ec44d73fedf  libstdc++-v3/testsuite/20_util/variant/deduction.cc
! e86d9287881a48d12a66736a0ec64890  libstdc++-v3/testsuite/20_util/variant/exception_safety.cc
! 7f0e62d4f4505fec14ec1343c3db0531  libstdc++-v3/testsuite/20_util/variant/hash.cc
! 4a0f50a3054a8f12b492c4826a2d554a  libstdc++-v3/testsuite/20_util/variant/index_type.cc
! 8f39566f6dd04a0a874df0ce4bd1260a  libstdc++-v3/testsuite/20_util/variant/relops/89851.cc
! aca37cf3174497f93edee4132e80c496  libstdc++-v3/testsuite/20_util/variant/relops/90008.cc
! 6651742cfc1bb4258874bcc98a9449ec  libstdc++-v3/testsuite/20_util/variant/relops/three_way.cc
! 8ce6284efb744e1be7c1b46d712df497  libstdc++-v3/testsuite/20_util/variant/run.cc
! 571478d71537921bbce5c8f9a8fdff15  libstdc++-v3/testsuite/20_util/variant/visit.cc
! 9b0b50f6248ab97ece861beb2c58f5fe  libstdc++-v3/testsuite/20_util/variant/visit_neg.cc
! 1da351b220cb8d19528340fc313cc023  libstdc++-v3/testsuite/20_util/variant/visit_r.cc
! f4414f38f1b235a8f5432bd0080edbbd  libstdc++-v3/testsuite/20_util/void_t/1.cc
! f7dd4f87adde6cb2df536a32dd286087  libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
! 6f877b48fdad86c664b26edc2cbad29f  libstdc++-v3/testsuite/20_util/weak_ptr/cons/constexpr.cc
! 53074cb426cb8724c5511df8285e3d42  libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc
! a1c3fc381e8b5cb07d7a81318b43580f  libstdc++-v3/testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc
! 88209dc54287543e8ca3b154854bd2e0  libstdc++-v3/testsuite/20_util/weak_ptr/lock/1.cc
! 4bc5d42bcaa8a672e738a30df3f40de3  libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc
! fb22e4bd606041e6c06feebce0991bcd  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc
! 900670bd62a0a0d5de7e38cff27f814b  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc
! fda318aff5ecc8249c4fffc1d77ddb1e  libstdc++-v3/testsuite/21_strings/basic_string/40160.cc
! b26f6587d783865d309df0276030e7be  libstdc++-v3/testsuite/21_strings/basic_string/56166.cc
! de3e125965b055f933abd03fcff148a3  libstdc++-v3/testsuite/21_strings/basic_string/79162.cc
! 8b7ebdef0ddd3cb7458a67467e8bcf28  libstdc++-v3/testsuite/21_strings/basic_string/allocator/71964.cc
! 61d8b495673549b8e05c8ea02515747f  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/copy.cc
! 901755c81d0a4b7d27ba03debba5dd77  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/copy_assign.cc
! c30ac2911b6beb23f855f96be0e7362a  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/lwg2788.cc
! 60279c8ace63a5941991f12d7eec1801  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/minimal.cc
! f8362df4bcd48eb96ff23cfe22852934  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/move.cc
! 45c8b4fc27253e189920b7ef315d3e47  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/move_assign.cc
! d04e3e37b815cfbc34cab9f32620488e  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/noexcept.cc
! 20451a64721c5ab7b8a35d8940e276be  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/operator_plus.cc
! ae46da727b630556942258422e55b6d4  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/swap.cc
! 6fb8b91698ad5989180fb14fbd1b845e  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc
! 92e11ed5e6a5e5fd5de2a873f4e3bd6e  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc
! 1fa1fe81bab6d1b8e37f65bd686dd0d9  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/lwg2788.cc
! 2bbf7d6dee6a256a8f41bef34f58fb17  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc
! 6d64e6489fb288bbd03a80a75a246924  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move.cc
! b3dc75a04354a33cc31c04c3e6ada9f7  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc
! cd578dccdce676f2516cfc41886ea776  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc
! 5cff4588bc029dd9e06186d77d8cc3b6  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc
! ac81e3b9c8d3c3da89ed2d1d22e6ae06  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc
! fb0a7eb293077a5c14097619ab0ed3e9  libstdc++-v3/testsuite/21_strings/basic_string/capacity/1.cc
! d79a7be96bcb90a9e850d136ccda203a  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc
! 9de1c95fbbea1b80396e15821507b83c  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc
! 54391128b33e4fff440cd65ef528c3e6  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/2.cc
! 6968e99dc019fe4212a3f31a39a785b2  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc
! dc8f8b694a1b11df2094357a08607e73  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc
! b679520743d93f7f5e54bb89c4334ed7  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc
! 889399b8fd4c904cb47756768ff3f835  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/2.cc
! 77eff1beecc106314c1499985965e6bf  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc
! 3e81a9bb9b5505524d7865be6577cde8  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/1.cc
! d91450c03e9686ad90713b26b78c5668  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/2.cc
! a6bdbb0a8131ceb7d4d05ad86274d320  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/3.cc
! eb495b43e9debfc95bcb6e8e5253e71f  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/4.cc
! b83bfb053075b49a56f896410ee1e17b  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/42261.cc
! 85601587f91d52548099b32a4a2e23cf  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/5.cc
! 58b87f0a8cb47029211e2aff61d28677  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/6.cc
! deadccd20fad8b2be84febf6ade337d3  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/64657.cc
! f384543feceee16e4c2f3dc67b08d6d3  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/65085.cc
! 891d02d384515a5d11fa5fc084de1457  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/69092.cc
! 59afd56a5b1aea16610259b621ee2fc7  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/7.cc
! ee9dc6230b162e8c1fc1fcace8fb2e20  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/79162.cc
! 1b23196114084546b56b35843187cc51  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc
! b69287003f6adea992b810a2de27c712  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/86138.cc
! bd9610fb8e708799aed164112d4ed878  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/9.cc
! 020fa1606294ff26a4d01c1ded0986e4  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/deduction.cc
! 08c69b37f34e9fcc8004657dd22e98b5  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable.cc
! fdd720fde4d8b7e03f0978aeadcd81c3  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2.cc
! 9085064c443093338c8a38dfab3029cc  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc
! f5903ca34648b8e12d5d121053bbc2d7  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/noexcept_move_construct.cc
! 08f71bfd429fdb9ce8b4e68a45021bb7  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/self_move.cc
! e2d28362398397903a672439dced1e06  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/1.cc
! c32600bbb5b4e9cd5d23d77cf6dc7806  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/2.cc
! 95b74be50b66fbbdaa9a861f75f815af  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/3.cc
! cdf7609b5d4d99b28b7ab877f3272a5c  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/4.cc
! 9eb60aacc98e0fb0d03f62306fcfa93d  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/42261.cc
! bd155020710062e6eb1c79588ccf8f5e  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/5.cc
! a5ce919e795e3506b93d7dc1f6c248f1  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/6.cc
! 179ccbe2639fff2e67d3d0ed27c34153  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/7.cc
! ee9dc6230b162e8c1fc1fcace8fb2e20  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/79162.cc
! 430a0303d87f965e86d320828da98575  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc
! c1e4a5ef4d3d86f3785a616626e192e4  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/86138.cc
! 83861281b192d680dec2427aa2930a0e  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/9.cc
! 309bd727068e3d75bb5aca0cd49cc93c  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc
! 3a8e67d81072d6e7ddb397a8390b21c6  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc
! 6666500f25229c00ddddd5e871ccfb4d  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc
! b92d5484cde8d8f952b97ec7a4008b4e  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc
! 6fd0a02fa7e53162fe645c435849e895  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/noexcept_move_construct.cc
! 984584c2e1a06d29e600b9c58c438bb0  libstdc++-v3/testsuite/21_strings/basic_string/debug/1_neg.cc
! 94cf20eb5fea5595de99c508bda8999a  libstdc++-v3/testsuite/21_strings/basic_string/debug/2_neg.cc
! 42b3107f9d19768dc9f462e529fa76e0  libstdc++-v3/testsuite/21_strings/basic_string/dr2268.cc
! af4dca521a676d276346a998bde81080  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/1.cc
! 28e712e1eb5634b4ecb2b0afc1fd48ce  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/2.cc
! 7fbe1f463672d45c6be3d29704383510  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/21674.cc
! dbb7052e07262071ede4367744116cde  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/3.cc
! f63fa08305b045ab6869f7376b87eaca  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/4.cc
! 47c53e5a0d40d95360c89e6d2bb5c6b0  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/58163.cc
! fccfcfd6ac7e1dbe8aebbe8b14fafc5e  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/empty.cc
! dbc686f9969e5f55c2662c637fa15c72  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/front_back.cc
! a1fa73cbc8b510625fcc1d74ef9a0ae7  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/1.cc
! 03aabb83193b51ccbd961db3bcf94cae  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/2.cc
! 68856bb72f6e711f47ca1ccced78e369  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/21674.cc
! 91897a6271c678bd30d6f6a5836d4c4a  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/3.cc
! 436bcbeb673ede2f72d8019c44578540  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/4.cc
! 9005c4eb158ca32f57b61327bad5efd1  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/58163.cc
! aa40a4236f9cf555968baf9e7c4fe259  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/empty.cc
! 41b662eebc4ef5db15f5564d0c907499  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/front_back.cc
! deb70f6c3da16174684a54137e75a883  libstdc++-v3/testsuite/21_strings/basic_string/erasure.cc
! 3012363a00af878dad369c4a08363a6a  libstdc++-v3/testsuite/21_strings/basic_string/hash/debug.cc
! bdd8eb057e5c3972f7a0196a6493a7d7  libstdc++-v3/testsuite/21_strings/basic_string/hash/hash.cc
! d86aaa9701b1086b41817dcdaafcb3c7  libstdc++-v3/testsuite/21_strings/basic_string/hash/hash_char8_t.cc
! d3b6c07e014a3c1cc58be3c72618a756  libstdc++-v3/testsuite/21_strings/basic_string/init-list.cc
! ffb6ab40920241497cda9d942a301d8d  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/1.cc
! 1e753145d04403aaba70438924d5205f  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/10.cc
! d7f57a807f330a4b95270154546a4b51  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/11.cc
! 745e49746a5556ff3e723017626dffee  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/12.cc
! b1bfb3244ef331083df98546101ee3b4  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/13.cc
! 54abbf948dcf4e6495eb84340683900e  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/28277.cc
! cd1eec58f11d968d7c45c549425071e3  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/4.cc
! f831f2f7030905a74239c4cdccdeb54d  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/5.cc
! 599095e980aa889cdb7af0d37c3aeb60  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/6.cc
! e0d81d4a4b28f10ccc6676ce3a5dbd80  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/7.cc
! 6c50e29e70aebd5ca76daba97ee481c5  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/8.cc
! 76896d64963ad6e80223bb9bda7864a3  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/9.cc
! 6f6206ddb02231fcad1fde14007bd609  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/pod/10081-in.cc
! 428e9cb6fa9e98f0202d805961ae0f75  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/pod/10081-out.cc
! 3b78a83c37713641cdc61cc7f8892c41  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/1.cc
! f51fe1c9232da0a55154aff53307ad44  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/10.cc
! 78120c1bf86b0ecc47d9e65a84ee7472  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/11.cc
! 42a61c117b877af50afbe0c021a71a26  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/12.cc
! 2d54425eb9db7ae679fa8000c55ca16e  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/13.cc
! 9f2c933d87e360210df843244de6f7f4  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/28277.cc
! d32cc629c846098ec5b3c26973505b10  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/4.cc
! 28a7ae56fb603b6fbbc4c4d96ba505bc  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc
! 5851a56d51d139691f9f3379e0a94974  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/6.cc
! 250378e6059a2602929a7e26f359dfc8  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/7.cc
! e5bfdf3ca2cf94ac55b2b45666b31c24  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/8.cc
! 6f2a874b7bd7c247a20dfc6643383c59  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/9.cc
! 781d150ba67e33d982014aaa1348fc01  libstdc++-v3/testsuite/21_strings/basic_string/literals/types-char8_t.cc
! f693c8dddff62abe438cc0b6e6cde342  libstdc++-v3/testsuite/21_strings/basic_string/literals/types.cc
! 321c8d3229149e0aff65826d18c2f948  libstdc++-v3/testsuite/21_strings/basic_string/literals/values-char8_t.cc
! 3fd4d233019981331d835f5c8fc6f8fd  libstdc++-v3/testsuite/21_strings/basic_string/literals/values.cc
! 5c7a5c3623cc6024db0f5f24a328dcf4  libstdc++-v3/testsuite/21_strings/basic_string/lwg2758.cc
! 1a419269280b5238e4eb28636803c5ba  libstdc++-v3/testsuite/21_strings/basic_string/lwg2946.cc
! 57becbeac5d018b97a5102f806b732a4  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/64422.cc
! 1384b18661279c469f58c719386d5353  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/1.cc
! d89be2827f7b45ede9cf50874981ba8f  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/2.cc
! df725c56d95af34babbb2fa335ae2658  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/3.cc
! 78e5224754bbba74db573f2f66d77340  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/4.cc
! de1eceaea768daaf9cf358d3083c6f44  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/1.cc
! d2d52386959b8439fc98e6cac2705f34  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/2.cc
! ca07b45f60c46d8f212cade82289f842  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/3.cc
! 0046f3666aac092c9058ec54284ceed3  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc
! bf775781f97f27016a1de082b99cb066  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/1.cc
! 1281771a2e2423754e312527b5de0c6c  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/2.cc
! ac907d18580861af5e60a18f34b3dd0d  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/3.cc
! c081c2c55aef75a2f49a502fca387a75  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/4.cc
! 7689d4eb51835bbca85634cb4fc7d7c7  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/64657.cc
! 343fa5f220cddcff36445b1f4cc1a9cd  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc
! 68016e73a14554996e92bb4751501d4a  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign.cc
! c4b97c6cc26415c9317d1a7fba5af004  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc
! 8315b2235343a4a4ccc5e159ba4221d4  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/1.cc
! 7511dd8946b7b1402f9dc0e42829779d  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/2.cc
! 010289dbc32b7bb4ed2607b561a1aa17  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/3.cc
! a9c711d92f6e4dab7fd054fca10cbe8f  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc
! 02fb1795cd73633cb03926cf32bc9d33  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc
! df8371a298515f69ab2ee268102ad750  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign.cc
! 43720ea349c982885e2a46621ad19ee8  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc
! cdb9ede449fb05842a36d19b3de84d3d  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/1.cc
! f6e8fe5bdaf4e95458a3b16d455b99bb  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/2.cc
! 08197c78709d8c125279fe2276c8bfa7  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/3.cc
! e3f127a63dedcce6b5c52ab602b889ef  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/83328.cc
! 667161140259df75643dbe15298aa1e3  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/1.cc
! 3526329ec5e6d16b65ccaa5959d287f0  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/2.cc
! 6d18ceeeffde912c352712fa65258fad  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc
! 8c04ebb47257fc9ca7442bd6a84df7ff  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/83328.cc
! 0fe484e38b288a79b1fff4c5f20dda5b  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/pop_back/char/1.cc
! f68925a356975d6c4a5603b796777dff  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/pop_back/wchar_t/1.cc
! efa11d3baaaebaec58feacd2bf439472  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/1.cc
! bbf06efd63ee8c50e3ae2a000cc00b0a  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/2.cc
! bd7e50cbdc086e3f74e1567542ff1e6a  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/3.cc
! 0f0a44700eeb4ba0f403b6a0d0d49223  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/4.cc
! 28bcd4565eb20bd6bbcbaeb4bfa9778c  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/5.cc
! c4146b41a6a68a5e2bcb2e50cb730b43  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/6.cc
! 25894afdc155e3248726eea9611a9aaa  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/7.cc
! 66dcff5ab8d7538ff96bd57f1eb60f5d  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/1.cc
! d55b6e917016fda1f414bcdf063b6b43  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/2.cc
! 84fc5dd4a5d86d2d656351f2349d43ad  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/3.cc
! d6cfb46ef8c717ea44bbdac68d753b4f  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/4.cc
! 03d97a6f24128a333c8dd00b8526cfba  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/5.cc
! 25f8f586e4028339123067abbbcb82e2  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/6.cc
! 5efc26956f9f8fd1c4ff5534ca5af15c  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc
! b424ef069d48031ad9c9624f8fa7a286  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/dr1261.cc
! 9a0793b215b28ba27e9682a529c69c64  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/errno.cc
! 8eb21f053802e2eec48fa2882e0a12ea  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc
! f147b096c66caaaf0201df0684500b88  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc
! 24d389f80b36ad69ece307c104f6b1f6  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc
! cfaf2227bdee07c04c92604d5db1d039  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc
! 938f26dad52bc1ae0bc2d8825d5aad4c  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc
! 3f1e08970f69be7e2d32a5109aa26034  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc
! 6f5e7d19069f3c07cb885ddf0dd1239f  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc
! 4426a1cb393e5a4c5f83f2e859004173  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc
! 67d8b155ab4c0baa4fff704712e34115  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string.cc
! 9fe25f119a8a4ba7a1dfe65375c7f33d  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_int.cc
! 5ed6b95122a7cb1a6776b7bc5947ad65  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/dr1261.cc
! 5d7421493025543795b2a1af10be6088  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc
! 4e1466fee5a80a8933b933504884e96a  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc
! aebfcd5a73c59b91266e8b3dd633b8d4  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc
! 9ae04093f4aafcb2f3d1e4ef4ee46939  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc
! 19b03cc28dea3efbb84d91ed1432da61  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc
! 53f5950b7d14a777d083a71e5b0a966b  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc
! 8d37d3b52f71f3d6e83f34ae544433e3  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc
! 8518bfce96658b2cd9bbc73cd61bdb6b  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc
! 5ac54148d1d8e226b2a848b800e0569b  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc
! fa2a36a3b369e4a6f177f9b6704c7e69  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/1.cc
! 17c606d72b06231c7c13920c517402ce  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/13650.cc
! 1c4debb53c78dd3f004130ef8b1efeb3  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/2.cc
! 6896eec9d2ce54e0a11b8415ceaee285  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc
! 8fd98f3ba0025dac3542dcc30821d7de  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/13650.cc
! bb4e955dc046e32a71542e7c8e6f73d3  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc
! f7fb8f147784f13a3e57e1ff26eff5c8  libstdc++-v3/testsuite/21_strings/basic_string/operations/contains/char/1.cc
! 499431f59c731a8d4da5bc04c759fc87  libstdc++-v3/testsuite/21_strings/basic_string/operations/contains/wchar_t/1.cc
  da3f700a53d22cd029a604673e059e11  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/1.cc
! 2434b4a1a2e9d3b0cdf759a06307fc9f  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/2.cc
  629c4fb49dd0d4a29803e1c5176619c1  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/86169.cc
  ca74682c72cb547cf309e380caad822d  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t/1.cc
! 5fa71a0af989fb3ccf28396a74d72b6a  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc
! c160d3e4a0700da761a056e2fa9bd367  libstdc++-v3/testsuite/21_strings/basic_string/operations/ends_with/char/1.cc
! 8884ebafb4e16bffdd953d59bf14b7b0  libstdc++-v3/testsuite/21_strings/basic_string/operations/ends_with/wchar_t/1.cc
! e0ac309c64852ab5616e662af337e458  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/1.cc
! 027a39178ed5f00b7e95409f2963a170  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/2.cc
! 1ece88b3afea76aff35cee3649e8a94b  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/3.cc
! 25747975c211509fe80e544fee5d71e8  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/4.cc
! f8eada2ad7af5fa31a9b1665c86c217b  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/5.cc
! eb9038c33769ab6981ee1b1c86735d6a  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/6.cc
! b4fcb1a576b9fbb38e9f63916d3cb2b4  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/1.cc
! d949fe1757d965d711055e01110720f4  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/2.cc
! aba5fedb457fc2b025545981630ae36a  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/3.cc
! 1d9a134e755267f66018985a472a4f1c  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/4.cc
! 582dfa77cc4e73659fb8b3d8cfb5e5da  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc
! 5c57875d3a9397305ea02a701048da99  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/6.cc
! 4dee36dc3720409f6c155425e2017c5c  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/1.cc
! 3351ee7a6bb4dc8101ed1502c850a48d  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/2.cc
! 869697039258335d6861e4e2e35ddfe5  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/3.cc
! 47c7bb43d94b1cf2a349b053805230e4  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/1.cc
! db33d861ee2c2ba7e9d7860b58e2d2f8  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/2.cc
! d018bd3c22925582a14300c6d2edde6f  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/3.cc
! 3effded80c848974a3d83bf1f9fb61d0  libstdc++-v3/testsuite/21_strings/basic_string/operations/starts_with/char/1.cc
! aaddd573c4151c326ea72bc5788f294e  libstdc++-v3/testsuite/21_strings/basic_string/operations/starts_with/wchar_t/1.cc
! 611eda9da6975c32c7f8aa0722b80c17  libstdc++-v3/testsuite/21_strings/basic_string/operations/substr/char/1.cc
! 112db38fe5d55ec099021e71c7d62307  libstdc++-v3/testsuite/21_strings/basic_string/operations/substr/wchar_t/1.cc
! 12aa80f3b5bfa11d8964179422341ab8  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/1.cc
! ee93e8e4686d8c02b3cd35ebe2c14c73  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/2.cc
! 780157cf3d7f32a4ad7996341cb5078d  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/3.cc
! e172d4a435c7faeb83f02be3d79525b7  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/4.cc
! b54c1164dc7d2ffe8090232882900035  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/5.cc
! 4d61fa1c31a6bb3cfd4a1e220d2f0dcc  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/65630.cc
! 5c43a67ce93a6c007ad3d39db2e72bca  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc
! a65974b9d152480211f04dff880b8e9b  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/1.cc
! 5fda6133eaa600b609c0d3dddb4bece5  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/2.cc
! 1b11e94ef6bd70ab33b3497524728a97  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/3.cc
! 39ea08de583d46faae48fd3904807014  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/4.cc
! 12c18bdbde140d9d6a3ec5aa37e1d44d  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/5.cc
! 3e92c3c2f3393a787df8407412e05136  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/65630.cc
! b04766777458f2b7301a194e0c919549  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc
! 0eb83b04c15c8d202ced5340009538b0  libstdc++-v3/testsuite/21_strings/basic_string/pthread18185.cc
! 3545d1b03bd865ada27c5681eea3d6f2  libstdc++-v3/testsuite/21_strings/basic_string/pthread33394.cc
! 5ccaed78e80304b38cd361300ff604ed  libstdc++-v3/testsuite/21_strings/basic_string/pthread4.cc
! 1ede96c671ad519796003fbe0f079556  libstdc++-v3/testsuite/21_strings/basic_string/range_access/char/1.cc
! cb5bf642b6ef0b0386471c45f438036a  libstdc++-v3/testsuite/21_strings/basic_string/range_access/wchar_t/1.cc
! b24b354cea0f26b6e22689ec8d8331a3  libstdc++-v3/testsuite/21_strings/basic_string/requirements/citerators.cc
! 0a74136d79709b7dcf8baabf428fed5d  libstdc++-v3/testsuite/21_strings/basic_string/requirements/dr438/constructor.cc
! 4a4a7a9d9af8a3d252eb21f06d9cca69  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/basic.cc
! 7aa56765bd1ba4a45ba275191f3d4273  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/generation_prohibited.cc
! a3555e52bd4a0899b30cac0c203c47e9  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/propagation_consistent.cc
! f473707ddcddca3025e5b3bc74027281  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/1.cc
! abc57ef8c3b9b6740de3c0c1b4effa84  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char/1.cc
! 3a6e7e31db8136b347fbf77aa84a80d8  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char16_t/1.cc
! 969ab3a2d353ee150aac09f629a6fe98  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char32_t/1.cc
! 76516a018d926f4fd1533753dc44f447  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char8_t/1.cc
! b426c4def62251ac3d24be08ee1bf64f  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/debug.cc
! 5e612d0f3334ae374c6d9b647f36c93a  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/wchar_t/1.cc
! 6a11edfc864a472816029448ebf436f7  libstdc++-v3/testsuite/21_strings/basic_string/requirements/typedefs.cc
! 6b1eb7b26573dd38d176c4ce7dd90ecf  libstdc++-v3/testsuite/21_strings/basic_string/types/1.cc
! 316dcb337c00d2fba2a343425cab8b62  libstdc++-v3/testsuite/21_strings/basic_string/types/23767.cc
! f8b533dc27c8219635da3aec055631db  libstdc++-v3/testsuite/21_strings/basic_string/types/pmr_typedefs.cc
! 3ae78abd8f0cb440f057c1b42b2d7f6b  libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/1.cc
! 6dd699bb1d430f8f5f8262b4a22a57bd  libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/empty_neg.cc
! 9e4a9f4c641411930d0406e35b493eec  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/1.cc
! cac5af1f70952d41c86a65f74d48b7bd  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/2.cc
! 143c15aaef353eaaf06168cab2cd549f  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/3.cc
! abc7fc9b3859771da29ea6fe83866ea2  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/nonnull.cc
! 3f91d3d2483b9f098c4c17c2ebfbf86f  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/range.cc
! a4f9e3607774ef2331c5cd93f7845be6  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/range_c++20.cc
! 3959ab48ede40d23b801173872ef1366  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc
! 06462ef959846c5e1b7e340a34cbbc11  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc
! 135e8e09e12b11970f985c862b6b80d0  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc
! 7add6249978cfd96f5b6ed54a5d5f840  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc
! 567dda958cc31c3a8e8b55db8f18cb9d  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/range_c++20.cc
! b51d8dc7c7bf96a3f4ffbc86e478b129  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/1.cc
! 26779822533046eadb814032e72290dc  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/2.cc
! 87403ab654e14a02d4a36684530d5183  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/back_constexpr_neg.cc
! 93a7a0292dfdc23ae9fad7198db8ca82  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/constexpr.cc
! 95e236632df7173b741a1b394e9eb046  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/constexpr_neg.cc
! eca16d2e865a8bfd114abb18702b1a74  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/empty.cc
! dcf1f17c6567492fad67ce5f341d4123  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/front_back.cc
! 8629d7916c5109feb79a2a5721202bfd  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/front_back_constexpr.cc
! 9b747a4805bbb986dbc0ba605199c657  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/front_constexpr_neg.cc
! 2fc51b90b2d6652b0626b70d9f5ce7f3  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc
! e7937ba198ecde33ff4b53c9ddf65b63  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc
! f88891195093bb7c0881e2b204420b24  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/back_constexpr_neg.cc
! 096925da9a0f56b27c2cecba57954972  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr.cc
! efe93dd17e1149a49bfd60cbad4e4d81  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr_neg.cc
! 68ee9bafc39ab241aaa4f528adaedaf2  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc
! 7de506c807c3a0af4c93cf6fa47ac1b7  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc
! ffba04efac9e2f9199b5165483ed07fb  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/front_constexpr_neg.cc
! c3d9db5d1348b184e8a0bd0f75c0cf60  libstdc++-v3/testsuite/21_strings/basic_string_view/include.cc
! cd2572e8af7972b45e410b6d99a627d1  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/94051.cc
! 98d7e2e072bb07ea05344c4e91083a69  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/1.cc
! eebee66758a1ecbff18939fa9c550a02  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/2.cc
! aa3ff8a784efb120cafad5c27067006d  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/3.cc
! e12bb7b4dd78180288d9b6984c91a052  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc
! 115788d871ee13864b8bb6d51924510e  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc
! a76fb683e5c12489b503e181e01f7756  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc
! 906c73fb8c1456c1d8b5630fc3c26127  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc
! c1705307a2f45ca1d734339afe70d119  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/types-char8_t.cc
! cd5cf5d211fc8df3a95fe5d88a6fb8a0  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/types.cc
! 9fc7a2ce5698892be1dc3fd2f1693811  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/values-char8_t.cc
! 9172020f9670722ee9ad8eac437bde2a  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/values.cc
! 73a6dac8f941cc1468ca1a6fed7b5291  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc
! be6298f082af99ada623019ccf0bf2da  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc
! 7000a03bb8c44092810a52c6801ece67  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc
! de6597f835b26297c2c5fc7b27e4f117  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc
! 21a74c7b11dd42cf6460ba3704860063  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc
! b3e234e000c84bc227058b221d69162c  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc
! b3689a7349a3f70227a39f24c7a9cb97  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/1.cc
! e0c499396f45f4f90d30f42df882ebfc  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc
! 9190394ae38d86a6e0bad84c14791dd9  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/2.cc
! 71cf167477b603c9a040c7c4023a5e5d  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc
! bce4aa176cfcfe562c84763347e913dc  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc
! bc5ba6e2a4591c3030b647f69d7242b9  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc
! 07cb7ebfcd5e691c69207fe852b0e2da  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc
! 19b49713c318044028b382f712afa0db  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc
! 6865bd43ce41c5eb3ed32a10fe1d9979  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char/1.cc
! 6a7d77f05002ba3cc85e75859fb211c1  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char/2.cc
! 08434190dcd52439abb046b581e9a103  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/wchar_t/1.cc
! aa718d31d37b246a709334870e2a4cf2  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/1.cc
! 8cd3c20f936cb2208c3d81f185095fc0  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/2.cc
! eb02a4fa2890eb65be9983306367c835  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc
! a7f6bfe557140e36992b34e8d4b2a049  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc
! c47e4d02dc7d9f00124b8f75a4d5c159  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/2.cc
! b92f0a6b615175785f7cd18ebaffcf62  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/constexpr.cc
! 20251b062226017495d1ab37b9e06be5  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/char/1.cc
! b39e8704c8b994423ffc6af70d2e357c  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc
! 88cd328cecbf8b5ba9ffd43638cd947e  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/ends_with/char/1.cc
! 8bf78d9c6b6d2ad80791ade9ddb8d084  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/ends_with/wchar_t/1.cc
! d63b061bc3cf4a33e14caec7a63e4516  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/1.cc
! 2e933ee038fc22b6275954e97199058e  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/2.cc
! 26220ee792f09839bfbaf66f5a331937  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/3.cc
! 890eb6e33907176f4e92e37b49ef0452  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/4.cc
! a2a53e003467c2eb1a33d309bdfd98b5  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc
! d66e3f109d9e705d8b43bc7e297a261d  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc
! 8e659f501aff3ede5315f80e23e45420  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc
! 448b36c57df5aec09978e14e4b2daa85  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc
! 7b7f21f40e6e03678b51f8d35415a93e  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc
! 1d3c5f522ef69aaba063ee32a0b8f021  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc
! edaf2a46b84e12ca876e4bd56e95c4b9  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc
! 631050a0f0ffa82c67fb43cfb3845076  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc
! 1c2dcaac6fb41399c1701ae63f51d798  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc
! 217412fe17776e5e84e5aaf02872d926  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc
! 9b59aac1ec190b8ef29df4fe36dc7b47  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc
! a82468d30b7d897d0d247c9193861c89  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc
! 24c61699ddf5729ea0ff064e7154ad51  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/starts_with/char/1.cc
! 959999bc23a6e4b0e798657bd523f4c6  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/starts_with/wchar_t/1.cc
! 3310c4e94c76117aa841e4de0445c844  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc
! 63ac64c2aa04452c9063e40d96555cda  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/char/1.cc
! 72a8d7bb4482b6c1615372dd34ed2da0  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/char/83511.cc
! b044c1b2e33ceffb2edcec8cf0f855b8  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc
! 2c7914f1f439ba1489e80ec7dd68c639  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t/83511.cc
! 979a431e9ad7f2044405e4a348a6e653  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/2.cc
! 2f084649fdad745e665714fd57bb1c2c  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc
! 459d13bf929302da3021de0711b40d5c  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc
! 5038957bef02ed3a3f0bc92860dad9ab  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc
! ae7e78cc795130feebc52b972568d6c0  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc
! eb20dc849f8300277dcdf0be52639003  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc
! 07e556714cb82dd8c89ab912460fc237  libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char/1.cc
! b8aba65c344eafe5bf7cebdca1c87798  libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc
! acf2b026de8e4981b9eec3ff02d819dd  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/constexpr_iter.cc
! b38609a19af19f90d7ee0330416893d5  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc
! 54ed0def55ac691075b630c5892f3061  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc
! dcda6989f9bead9aaa86243f9687e61b  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc
! 57973f9cdc564665aa7167b3f7cb2476  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc
! 648c60f078cf32b1d1406244e5cf286a  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t/1.cc
! 3d1e3095824a3f71d975af9667a9e3e6  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc
! cccc0ded713c22e6536edfd5af400457  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/traits_neg.cc
! 219966f225fbde97798857aa44b53014  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/typedefs.cc
! ffc1ec78a6504bb436184d0d443c49e0  libstdc++-v3/testsuite/21_strings/basic_string_view/typedefs.cc
! 0c4a73e0727904e452b6e3db1ad3a711  libstdc++-v3/testsuite/21_strings/basic_string_view/types/1.cc
! e722bc26aff269db73e0bfe5f4f9531a  libstdc++-v3/testsuite/21_strings/c_strings/char/1.cc
! 127b326e94c3827778fd5f32ce64bc28  libstdc++-v3/testsuite/21_strings/c_strings/char/2.cc
! 008d75650596a9b88f36dbb86d66a5a7  libstdc++-v3/testsuite/21_strings/c_strings/char/3_neg.cc
! 6b386d4762ded5fc46ed4490a2587dd1  libstdc++-v3/testsuite/21_strings/c_strings/char/69626.cc
! 7ab22f1eca3d2163d70d1fca577eeba0  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/1.cc
! 8e5854a4d2dcb18a671fea463b6ae968  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/2.cc
! 76b748b7a5ae86f7ef64aa97533be47c  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/24559.cc
! 61273db84a24973d685dfa28f1dad4ef  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/3_neg.cc
! 08584669c547d9624598e6f249398912  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/1.cc
! c4aa40fef9e40133cdc0e07f8548d86a  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/57704.cc
! 2411e7b3a2c4912a831f9714f8452b02  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/65049.cc
  5576204856dce289918761309e8b6366  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/99181.cc
! f4b616f53a91454dc4cc796789333411  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/typedefs.cc
! a7f3a15d3b510eea614d924bde4e90c2  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/65049.cc
! 88b16bcd976741b89b4fc2c8a63f4edb  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/eof.cc
! dc2163d3064f8b1cbb0e4a72a173e133  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/typedefs.cc
! 50ab8cc1d716b51a94c9558e0bd5e7a4  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char32_t/65049.cc
! 31801bd9a20aece427d39581d08be3d6  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char32_t/typedefs.cc
! 2fe66c87716622ba6e964e6b70bb6939  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char8_t/65049.cc
! 819f978a2dccb0bb94ee5d2edc454b72  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char8_t/typedefs.cc
! 40e9161139bad049915c7ae5a6ef2733  libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions.cc
! 52dd17037f74ce778dafb17da346e321  libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc
! 08f652239fee7d677771a0ab63d96c08  libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc
! 955438433acee1c100dba7c5172187cf  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char/1.cc
! e36b81ed3e3c93bdebeba84eb99ea42b  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char16_t/1.cc
! ccf11f05b5b84d95731c4d00bd6c49b9  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char32_t/1.cc
! c3ca3d667f2a68a99aa3e39db9588829  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char8_t/1.cc
! 8fe1711ff06b77388013f79820da23ca  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/short/1.cc
! e48790d617942662612cb6c7223d76b1  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/wchar_t/1.cc
! 75b338a953af76ec5dff9df7afa3b01d  libstdc++-v3/testsuite/21_strings/char_traits/requirements/short/1.cc
! cbb955786cd9098c4d69e362a6a6ad6a  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/1.cc
! 516861afc8775ba070ffca8f2eca1129  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/65049.cc
! d5aacdee7411be410be37a365e721a64  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/typedefs.cc
! d9c885283c90755165497fdbfc3fc2ec  libstdc++-v3/testsuite/21_strings/debug/shrink_to_fit.cc
! 071cb1bcc966f2e9b26dd2b097edbce0  libstdc++-v3/testsuite/21_strings/headers/cctype/functions_std.cc
! 00cb7df1f595c0dff1cc99951782e6ed  libstdc++-v3/testsuite/21_strings/headers/cstdlib/functions_std.cc
! 585129c451ae7eda763b895a4807d13a  libstdc++-v3/testsuite/21_strings/headers/cstdlib/macros.cc
! afffcbae8d2a946ec972351290c411c6  libstdc++-v3/testsuite/21_strings/headers/cstring/functions_std.cc
! 585129c451ae7eda763b895a4807d13a  libstdc++-v3/testsuite/21_strings/headers/cstring/macros.cc
! e025f8ff19faaedbbdca0c9f69779c63  libstdc++-v3/testsuite/21_strings/headers/cstring/types_std.cc
! 51d39332b4350caad9fb12ccd5a8c6e7  libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc
! d09c90f8cba887833440fe1183ed0f58  libstdc++-v3/testsuite/21_strings/headers/cwchar/macros.cc
! bad31a31a829dd02d1f7d1e403e323aa  libstdc++-v3/testsuite/21_strings/headers/cwchar/types_std.cc
! da02fb36b24ab2ab812135e8c1ce1a6f  libstdc++-v3/testsuite/21_strings/headers/cwctype/functions_std.cc
! 63ba231d26d73227a9ab4ad84a5d06d3  libstdc++-v3/testsuite/21_strings/headers/cwctype/macros.cc
! 9f3070cde97c439439c09865a9b17efe  libstdc++-v3/testsuite/21_strings/headers/cwctype/types_std.cc
! a67fccf8731b9033e35a6403c6af03f6  libstdc++-v3/testsuite/21_strings/headers/string/synopsis.cc
! 8863dd42d20617025cda9fadd61b4862  libstdc++-v3/testsuite/21_strings/headers/string/types_std.cc
! d236a616ca41e31e1749bcf646ca4da6  libstdc++-v3/testsuite/21_strings/headers/string/types_std_c++0x.cc
! eadd4e1f7c673d18943e6a3f2721cda0  libstdc++-v3/testsuite/22_locale/classification/isblank.cc
! 5e76f19c90a1dc863168dda88076d6a6  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/1.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/wrapped_locale.cc
! 6495add60139a9dde9a12852ba2b5c66  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/1.cc
! a989a227555fb23467b29517fa1fcfdb  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc
! 9e5f11ade0e8e628be45fc883c9dbc79  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc
! 2d6331b0a3389c3566e5ba75912c852e  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_locale.cc
! 189cb0e4995ee8d88178db2a35411505  libstdc++-v3/testsuite/22_locale/codecvt/char16_t-char8_t.cc
! a4814acac1b17553b0b6ba8b2a8b3920  libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc
! 8c65750ebf8876197842506710051ffe  libstdc++-v3/testsuite/22_locale/codecvt/char32_t-char8_t.cc
! 5981ae8d5e64e82d0dabc263ba2f1036  libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc
! 9278cc3909e5c4f59c757afbb1546c71  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/66417.cc
! 417f7f1ed521326a949252d879138363  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc
! c27bcde2e58845f8995d651f11d51043  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.cc
! b06af525f6b154ecdf1a8fdc69d36614  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
! 954a21bf082eed42b26919e5df8bbad2  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
! f583e2faab7d329f8f9daf4e7db7405b  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc
! 80ba0b6fd55d5cd10a0bed5eb3893a0a  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/69703.cc
! f31eb5cdc91083b0372b0bbc2ea8272d  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
! 0f6d22be6c963b83e22305ceb89a6fcc  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc
! 80c7dddade0fc4d503dd0ac8f79f6888  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc
! 62f0e02ea2082270f2bedde91361ee61  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc
! 16a4e8dc7d8df2d3d56a4a770a079308  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/66855.cc
! d23859cd1acead3dc7fae0bace79cb72  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
! 922d55abc3f4cb5eb7904719b2393b45  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc
! 2bbbeb6961a1001fbd3a24f68ae8ebc0  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc
! 86fab0453dd31f032c06833a5f67579c  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/1.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/wrapped_locale.cc
! cd90df5bf0efda72cdc22055d5ede4f9  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/1.cc
! fe73eaa7c31458c255b03430680295c4  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/2.cc
! ec6366612f83a1ee6dfded6c209beda3  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/3.cc
! 5f540c30feefbec18e17ec1ea1e360e0  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/4.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/wrapped_locale.cc
! 8edde82121bfb4f96ff1083d6ccb9fa7  libstdc++-v3/testsuite/22_locale/codecvt/in/char/1.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/codecvt/in/char/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/codecvt/in/char/wrapped_locale.cc
! d31bffae8590100ec20c176dd23c7758  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/1.cc
! cb5ed3cfb6b56f1ab91a74c6f5009df7  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/2.cc
! 87f1ba38d96519ce4648f2167fee7c58  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/3.cc
! 833c87078129e6b7c3821c84d3e07633  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/4.cc
! 138d1e3c4a6f5fe6d6034cbf312f7194  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/5.cc
! 07049270968014a74d9aedcb014fa8b5  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/6.cc
! 023436d39494d9e66bb3aa795f2866ce  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/7.cc
! 7a3cb45cf624903af3fc691c43b358c3  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/8.cc
! 476fa318de5ddb3bf35e7509bdf1df65  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/9.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/wrapped_locale.cc
! 99d74d3592f1a82e28bf3670f7fe79b4  libstdc++-v3/testsuite/22_locale/codecvt/length/char/1.cc
! f693b87ca2deee4fb1cf7a4d51d93e0f  libstdc++-v3/testsuite/22_locale/codecvt/length/char/2.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/codecvt/length/char/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/codecvt/length/char/wrapped_locale.cc
! 5d393c84b1b75dcec0aac9a803d16d5e  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/1.cc
! aee875df3cce19eed3401ba3fcbc51ba  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/2.cc
! 1781d2bb1777f2bde2efa52a64bef6e5  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/3.cc
! a0fcfefebd1e1655e143ff5856305b03  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/4.cc
! ac80fa056067f2c931e05c6d66ea7ab5  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/5.cc
! 7511b0359adcc67551da97b7f1ac7276  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/6.cc
! 4177f6062642db982bcfc4e750de6043  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/7.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/wrapped_locale.cc
! 4c039b2446bfba8e1d8b056a1f00acbb  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/1.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/wrapped_locale.cc
! 44bc41b17ea95b6ae90c1496e260ef75  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/1.cc
! 4d12fbd650b1df0ce25cb6b17665e74f  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/2.cc
! d2085ad209f62cb0951edeaaaf8b344d  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/3.cc
! 6458ef988b346b5931682744d77d7f06  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/4.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/wrapped_locale.cc
! 8f5aab9bc322f96af4752afcac08300e  libstdc++-v3/testsuite/22_locale/codecvt/out/char/1.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/codecvt/out/char/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/codecvt/out/char/wrapped_locale.cc
! 1dbbebbe1fea895c0c63a53a198e676f  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/1.cc
! 5839eb485e500d6bfe4eba8f27799838  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/2.cc
! 223a9a7fbf8b7f05928ae8ae7e53e5ca  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/3.cc
! 8686407217d585a6ec6d6f01c10764c9  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/4.cc
! 718df4a5e24c608f9a4cfd9ec4058ba1  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/5.cc
! cfab58089cbaedb09ab889f32b2668d4  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/6.cc
! 2c3761cee5d8db27e2b26cd841234077  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/7.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/wrapped_locale.cc
! 57980882cd14fb10682a9ca2014122c7  libstdc++-v3/testsuite/22_locale/codecvt/requirements/base_classes.cc
! 005eb0c9e633f15ac8eb953e96ea865e  libstdc++-v3/testsuite/22_locale/codecvt/requirements/explicit_instantiation.cc
! 7d8730a8bed37799436902f1a75a82ab  libstdc++-v3/testsuite/22_locale/codecvt/requirements/typedefs.cc
! b3c0615863377d60ba49af9e23bce6cb  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/1.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/wrapped_locale.cc
! 65ed8c6b367c248be64c89ffc3f16a3b  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/1.cc
! 05ba52bf978008211242ae36896bdf6a  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/2.cc
! 8a228c45c60922c77617b4d858c6f25e  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/3.cc
! c19445e3c9f35485c43cc9148891e822  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/4.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/wrapped_locale.cc
! b834a9fe8a0aa86aa6e5b8da194e03d5  libstdc++-v3/testsuite/22_locale/codecvt/utf8-char8_t.cc
! 9ce913d64dc44f046acecbc66b480114  libstdc++-v3/testsuite/22_locale/codecvt/utf8.cc
! 9a657d3ede0a4c01bf2558bf41d7d4cc  libstdc++-v3/testsuite/22_locale/codecvt_byname/1.cc
! 4aee8b4d9a20440e8026fa356776ea83  libstdc++-v3/testsuite/22_locale/codecvt_byname/50714.cc
! eeaca72bceca591a3912d756d3edae9f  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/base_classes.cc
! da52e1de380c1445867363803440eb21  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/explicit_instantiation.cc
! 86a7c4fdaf370a6e1654774bd4fbfdc2  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/typedefs.cc
! 73986e52171d7eec4c9c7376cc24b011  libstdc++-v3/testsuite/22_locale/collate/compare/char/1.cc
! 07ce2202fbb73d42ff393f9d6e3a63a5  libstdc++-v3/testsuite/22_locale/collate/compare/char/2.cc
! d334b077adcc7ac2fb8abe6024fe57ef  libstdc++-v3/testsuite/22_locale/collate/compare/char/3.cc
! 938978ce3bb19c2f3d24444b8ef5999c  libstdc++-v3/testsuite/22_locale/collate/compare/char/wrapped_env.cc
! 91788bac12d94fc92e9ee9fb1f270e6c  libstdc++-v3/testsuite/22_locale/collate/compare/char/wrapped_locale.cc
! b7062f193457d9ea35a9406a54fb8f3c  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/1.cc
! ec162139a24040e2a66e6618b8c73022  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/2.cc
! ed918ff361a903deb6b95411d51af8ec  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/3.cc
! e237dfad7a9ed277f5189fbe61d6c189  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc
! fe1421dd95af34d121b176d0746317ef  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc
! 5f76bf4895b89c7cb67d4dcc2b70fd64  libstdc++-v3/testsuite/22_locale/collate/hash/char/1.cc
! 09b78564ef6fe896c8bdeec3b58141a0  libstdc++-v3/testsuite/22_locale/collate/hash/char/2.cc
! 303b668812dba1c4eb85525fc3bb55aa  libstdc++-v3/testsuite/22_locale/collate/hash/char/wrapped_env.cc
! 53c5f3cad2015aaa20f03187c7845dec  libstdc++-v3/testsuite/22_locale/collate/hash/char/wrapped_locale.cc
! d8eb4415e9f6d90720ebed1b643f403f  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/1.cc
! 63e79483c7dde260486e22297688fd69  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/2.cc
! e237dfad7a9ed277f5189fbe61d6c189  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc
! fe1421dd95af34d121b176d0746317ef  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc
! 90f4939dd47ae63c845629917a525148  libstdc++-v3/testsuite/22_locale/collate/requirements/base_classes.cc
! 7b9e295a39b84c9cb4e3aa568adf1464  libstdc++-v3/testsuite/22_locale/collate/requirements/explicit_instantiation.cc
! b5fd304aba897d4d79bd9074c98f7509  libstdc++-v3/testsuite/22_locale/collate/requirements/typedefs.cc
! bac894e6e420aa35618aba137835c9e0  libstdc++-v3/testsuite/22_locale/collate/transform/char/2.cc
! bf2006b3d432352548112f043edefe57  libstdc++-v3/testsuite/22_locale/collate/transform/char/28277.cc
! 25a740b506d02ab845903d6d039e56c5  libstdc++-v3/testsuite/22_locale/collate/transform/char/3.cc
! df43c2b2eb35ae8dbcc40c3bb862d992  libstdc++-v3/testsuite/22_locale/collate/transform/char/wrapped_env.cc
! 8ec93ba64bd8a362a1f9eb610993f608  libstdc++-v3/testsuite/22_locale/collate/transform/char/wrapped_locale.cc
! 1057d3fb39b68075d400c4decc80c041  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/2.cc
! 6490c729e6db988f7b1a9b3c66f0e05a  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/28277.cc
! 822dde7d14592d7293ee287258f45d76  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/3.cc
! 3c90cbf0427f46c1a181025e2fd22892  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc
! ed22ff4b1eec2dbe90a6bdf15bc5df13  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc
! d5ba1516b2c6e1584944292235564ffd  libstdc++-v3/testsuite/22_locale/collate_byname/1.cc
! 227c1211fa6d68dc05a245d2dc0b8f24  libstdc++-v3/testsuite/22_locale/collate_byname/88681.cc
! 3f4e15619c729434888c3364f175e043  libstdc++-v3/testsuite/22_locale/collate_byname/named_equivalence.cc
! 5882b44b07072fcdd2309044a64d1c47  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/base_classes.cc
! 073b64dd2f4a178fb55919ca62cc4083  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/explicit_instantiation.cc
! e012e8d578332a6262fb03103c26f44a  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/typedefs.cc
! 3debc521788fc4f253c1489c97ce6ddb  libstdc++-v3/testsuite/22_locale/conversions/buffer/1.cc
! 5b1d145c28df2348ab1963d53bb8cef1  libstdc++-v3/testsuite/22_locale/conversions/buffer/2.cc
! 23b7f420e47c27c6abb04b9c2d848bc4  libstdc++-v3/testsuite/22_locale/conversions/buffer/3.cc
! 484651c08eb5e6c558869644f1db7bc9  libstdc++-v3/testsuite/22_locale/conversions/buffer/requirements/typedefs.cc
! 1f46dc268cc87c4f385010ab17bcb696  libstdc++-v3/testsuite/22_locale/conversions/string/1.cc
! bbbb5538b6a03dc3941332174ddab41a  libstdc++-v3/testsuite/22_locale/conversions/string/2.cc
! f041b60cc91283c2666db5fb5589d3fd  libstdc++-v3/testsuite/22_locale/conversions/string/3.cc
! 26ca10dc1c1f9ac375662f65e13d206d  libstdc++-v3/testsuite/22_locale/conversions/string/66441.cc
! d3c6d0edeff5981aaaedfccd116bcb09  libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs-2.cc
! f8ab858b2cfb3fc86fbf60cf55186941  libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs.cc
! 8a2e67d3b859f974bda00380a60cda4d  libstdc++-v3/testsuite/22_locale/ctype/2.cc
! 9ace2cda182fcbe82b0d2086b478dad6  libstdc++-v3/testsuite/22_locale/ctype/cons/char/1.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/ctype/cons/char/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/ctype/cons/char/wrapped_locale.cc
! 1256d1545ed912c15626551fdf32c3a4  libstdc++-v3/testsuite/22_locale/ctype/dr695.cc
! 4244bc0e9831eeae763e6ae2747bd8e5  libstdc++-v3/testsuite/22_locale/ctype/is/char/1.cc
! aea1db4e4db8feb803ad24d95e92fd24  libstdc++-v3/testsuite/22_locale/ctype/is/char/2.cc
! e74ca0e6089192a78f6f1abcd363dfde  libstdc++-v3/testsuite/22_locale/ctype/is/char/3.cc
! 02406e64ec9e40bb6ec326e7990d6b51  libstdc++-v3/testsuite/22_locale/ctype/is/char/9858.cc
! 6f43545bbace76e02bf3a8a5a81d7f17  libstdc++-v3/testsuite/22_locale/ctype/is/char/wrapped_env.cc
! a4ec0901c0534972bb5211197d794985  libstdc++-v3/testsuite/22_locale/ctype/is/char/wrapped_locale.cc
! a06783e6066b8894e12fbc40d87bab0c  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/1.cc
! ec95ba5d41117ac30ffe613145d26e6b  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/11740.cc
! 7b07d0f18b7c48a38428fa69c51d6f4c  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/2.cc
! 1bba72d19d6070e168cb7a9a87aa77b0  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/wrapped_env.cc
! cf17480e0c3f5659fa68035f2d7bf7f8  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/wrapped_locale.cc
! 36bb25326c2b87db0ad086f9cbdd89ce  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/1.cc
! ce76d6bf3c098651462df7bb44e5cfb2  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/19955.cc
! 4fe970a474e722d8a9ef16f21c8eca55  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/2.cc
! 1bba72d19d6070e168cb7a9a87aa77b0  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/wrapped_env.cc
! 71f1820217aa5986cfd32b8bb1dc1599  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/wrapped_locale.cc
! bebceb2b00cdc14cf3a01c8e6467d894  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/1.cc
! e79855a1ba1aa716b82947c6d70d49e9  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/2.cc
! a90801099f8b5def81f37cbe69966cc4  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/3.cc
! 1bba72d19d6070e168cb7a9a87aa77b0  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/wrapped_env.cc
! 71f1820217aa5986cfd32b8bb1dc1599  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/wrapped_locale.cc
! c86d067f3f4f10daa0555d561948a5ab  libstdc++-v3/testsuite/22_locale/ctype/requirements/base_classes.cc
! c5d8b64df52f44f754ae6989a61ca0db  libstdc++-v3/testsuite/22_locale/ctype/requirements/explicit_instantiation.cc
! d69eba9d2f8afaf0e033f5ff6eed18e8  libstdc++-v3/testsuite/22_locale/ctype/requirements/typedefs.cc
! c459fbf8682ed428aaa97ed871fddcf6  libstdc++-v3/testsuite/22_locale/ctype/scan/char/1.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/ctype/scan/char/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/ctype/scan/char/wrapped_locale.cc
! 5e3c227f3154b78b8524fd56bdb877c3  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/1.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/wrapped_locale.cc
! d19941ee2ad81e38586a1d8b8dfbf653  libstdc++-v3/testsuite/22_locale/ctype/to/char/1.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/ctype/to/char/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/ctype/to/char/wrapped_locale.cc
! a79c2bfb96d51df238a5795ba58c92f0  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/1.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/wrapped_locale.cc
! cd677dbdeb5b6fe745e8974a90efebb6  libstdc++-v3/testsuite/22_locale/ctype/widen/char/1.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/ctype/widen/char/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/ctype/widen/char/wrapped_locale.cc
! 9589c8f102151adbd507a57a5236b023  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/1.cc
! c1a1216a874c1fb9eafe0a875b74e6bd  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/2.cc
! 76c7447315b581c92322b496f1c05fd7  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/3.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/wrapped_locale.cc
! 2cbb6ec306cdf4f07f0c7ea3106517fb  libstdc++-v3/testsuite/22_locale/ctype_base/11844.cc
! 7d5df4c4b377cb6e6f007881169f546d  libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc
! 67088f38ed02ed5a60d27d01f7b3e7fc  libstdc++-v3/testsuite/22_locale/ctype_base/blank.cc
! a3bf0f0a48ae03726d3cc941ad564932  libstdc++-v3/testsuite/22_locale/ctype_base/mask.cc
! d2861760bf7fe70f66822aff871d8afc  libstdc++-v3/testsuite/22_locale/ctype_byname/1.cc
! 8d49043316bf18675134c7ce7bf01cc2  libstdc++-v3/testsuite/22_locale/ctype_byname/2.cc
! 2f560f9e656749d6c2bda288c2df062f  libstdc++-v3/testsuite/22_locale/facet/1.cc
! 833119bca6fbd5ab104d20647711f05b  libstdc++-v3/testsuite/22_locale/facet/2.cc
! d2365f8bfc2e68b8d2e61ebefe51a46a  libstdc++-v3/testsuite/22_locale/facet/25421.cc
! eb5a742865efb9b764bc06a13ac46c8a  libstdc++-v3/testsuite/22_locale/global_templates/1.cc
! c20df550c4f7985684e7c982da98dcf6  libstdc++-v3/testsuite/22_locale/global_templates/standard_facet_hierarchies.cc
! 9e8090ae511679433e433703178d45fe  libstdc++-v3/testsuite/22_locale/global_templates/user_facet_hierarchies.cc
! 43211ffff7bb9f6a09c6c972d775a6e1  libstdc++-v3/testsuite/22_locale/headers/clocale/functions_std.cc
! cc4374a08775f617094139ebf3325ad8  libstdc++-v3/testsuite/22_locale/headers/clocale/macros.cc
! b6e8cd5ecb2401cbae0906f664d2a3e2  libstdc++-v3/testsuite/22_locale/headers/clocale/types_std.cc
! 9a286535516ee0465ddfd21358f5f73e  libstdc++-v3/testsuite/22_locale/headers/locale/synopsis.cc
! 2ff3489fe7976d8d9a021ca5129a61c5  libstdc++-v3/testsuite/22_locale/headers/locale/types_std.cc
! 98db97a47d275bc5d42accbeedf130e5  libstdc++-v3/testsuite/22_locale/locale/13630.cc
! 82ffcf4405bbc31ea61ab1710516d4e2  libstdc++-v3/testsuite/22_locale/locale/cons/1.cc
! 98914a00f0a5cafa32db10e3dee4bf26  libstdc++-v3/testsuite/22_locale/locale/cons/12352.cc
! b053172c4b34b4f3d64b019bd6dc888c  libstdc++-v3/testsuite/22_locale/locale/cons/12438.cc
! c293c75393102f63ec5ce93ed9926e79  libstdc++-v3/testsuite/22_locale/locale/cons/12658_thread-1.cc
! febd1830ab1538d7d136b6b9162c2622  libstdc++-v3/testsuite/22_locale/locale/cons/12658_thread-2.cc
! cbd7f496186be07205182aad38afbd33  libstdc++-v3/testsuite/22_locale/locale/cons/2.cc
! cb2da9a320dacdde384205cf90555d79  libstdc++-v3/testsuite/22_locale/locale/cons/29217.cc
! 25d8e698192a729d38cfa77350515c5a  libstdc++-v3/testsuite/22_locale/locale/cons/38365.cc
! 8a7a9d53559e0f9e5c6739543b2421fa  libstdc++-v3/testsuite/22_locale/locale/cons/38368.cc
! 99a152826e89f43245c1290615dda44f  libstdc++-v3/testsuite/22_locale/locale/cons/4.cc
! 7d804f060c7605c22d891243293d9dda  libstdc++-v3/testsuite/22_locale/locale/cons/40184.cc
! 631f4c7b0cb136b1fdccb2e876ca86fb  libstdc++-v3/testsuite/22_locale/locale/cons/5.cc
! df847dc3ff7bf6ac5a8d383fe6ec4b1e  libstdc++-v3/testsuite/22_locale/locale/cons/6.cc
! 253ce58b211b0d51d7c60780b9af82f2  libstdc++-v3/testsuite/22_locale/locale/cons/7.cc
! 973ceaa57872a878a140d0b08994dcd9  libstdc++-v3/testsuite/22_locale/locale/cons/7222-c.cc
! fbf3f780557b7020949a040261f6699f  libstdc++-v3/testsuite/22_locale/locale/cons/7222-env.cc
! 402907f4d8aa5ffc2da3f460477867c6  libstdc++-v3/testsuite/22_locale/locale/cons/8.cc
! fe1ffefb63b9bae94124f6b635567eae  libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc
! afc78641213cd2937359735e85aa57d3  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/1.cc
! 7302733b26b00ee978ccad3455a6d54d  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/14071.cc
! bb7132662b3b96d7b0cc253dfdb6e657  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/2.cc
! 265c1c3d84347ed0bdd8c5a0bf5b5a6e  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/3.cc
! aabb9f50222e407c13fac44d3a253004  libstdc++-v3/testsuite/22_locale/locale/operations/1.cc
! c047585c7e83933910c18b2445f2bcbf  libstdc++-v3/testsuite/22_locale/locale/operations/2.cc
! 5df263157cac27b8a22e903460557de6  libstdc++-v3/testsuite/22_locale/messages/13631.cc
! 77bb35688ffdd190e6e0754ab1d61614  libstdc++-v3/testsuite/22_locale/messages/members/char/1.cc
! c96712058d9f619080b071eb4db26edf  libstdc++-v3/testsuite/22_locale/messages/members/char/2.cc
! 4aa848b2b9029b948cd1dcd2685bb69a  libstdc++-v3/testsuite/22_locale/messages/members/char/3.cc
! 593c427dde8d126d6a663aed35eb4653  libstdc++-v3/testsuite/22_locale/messages/members/char/wrapped_env.cc
! fce63ba1f3708709105fe000820eb5fd  libstdc++-v3/testsuite/22_locale/messages/members/char/wrapped_locale.cc
! 6d4aa2f0954418a0bed050fe240a4eea  libstdc++-v3/testsuite/22_locale/messages/requirements/base_classes.cc
! 6994a9d0553ec6e57ce15ca671e8fb3f  libstdc++-v3/testsuite/22_locale/messages/requirements/explicit_instantiation.cc
! f46f11c1731268f3ba68e5990cc6578b  libstdc++-v3/testsuite/22_locale/messages/requirements/typedefs.cc
! d0170b38410b0ed2b2552fc13309bcb2  libstdc++-v3/testsuite/22_locale/messages_byname/1.cc
! eccff464aadc410f6ffa2c5944e3483d  libstdc++-v3/testsuite/22_locale/messages_byname/named_equivalence.cc
! 686e7121bc8e0909f2a128aec66ce0e6  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/base_classes.cc
! 1057f6c3b703bccfb52fc6c8871985a7  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/explicit_instantiation.cc
! aa71b12b22a5359ae5a7fa78cf86aac9  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/typedefs.cc
! fb414862bfba40ef50d9afd54a4b5799  libstdc++-v3/testsuite/22_locale/money_get/cons/3.cc
! fe0839e1c6625c3943fed238dd3d782f  libstdc++-v3/testsuite/22_locale/money_get/get/char/1.cc
! 7cae8c2837fa0d1abfa8469c820f36c2  libstdc++-v3/testsuite/22_locale/money_get/get/char/10.cc
! c7409b7d9ea5f36b5b83234e148c81d0  libstdc++-v3/testsuite/22_locale/money_get/get/char/11.cc
! bab3295b07ffa9f37e559fdb127d5cc0  libstdc++-v3/testsuite/22_locale/money_get/get/char/11528.cc
! 30d87c20f80b5f2e3bcfc0e3576ec9f2  libstdc++-v3/testsuite/22_locale/money_get/get/char/12.cc
! d6f11449e0da1da8e44684fdba81f3ed  libstdc++-v3/testsuite/22_locale/money_get/get/char/13.cc
! 3dfc03ca90e2a5fbab05a57b20a544e5  libstdc++-v3/testsuite/22_locale/money_get/get/char/14.cc
! cd3d6a0501726e74ad34af8cf3f6a6ba  libstdc++-v3/testsuite/22_locale/money_get/get/char/15.cc
! d835d4a89119e4dcf04d5175fbbc899d  libstdc++-v3/testsuite/22_locale/money_get/get/char/16.cc
! 224572847295080bbd0b925826d58670  libstdc++-v3/testsuite/22_locale/money_get/get/char/17.cc
! 015ec8457faab578dd92ec2780e529aa  libstdc++-v3/testsuite/22_locale/money_get/get/char/18.cc
! 07e837747123087c251f451c3bc826dc  libstdc++-v3/testsuite/22_locale/money_get/get/char/19.cc
! 9d40135bc9473e77e422120bfdf9b622  libstdc++-v3/testsuite/22_locale/money_get/get/char/2.cc
! e49375981f02ba633a6b3eb23af5414d  libstdc++-v3/testsuite/22_locale/money_get/get/char/22131.cc
! 0a9a218eb03a036e09933c882f081d82  libstdc++-v3/testsuite/22_locale/money_get/get/char/3.cc
! 512357964ffc4504f87f38e09eef3c25  libstdc++-v3/testsuite/22_locale/money_get/get/char/38399.cc
! 1f05e7f4cc9e9ccbf9208049657077a3  libstdc++-v3/testsuite/22_locale/money_get/get/char/39168.cc
! 1352e504d62b302d7d6249e3e8c274eb  libstdc++-v3/testsuite/22_locale/money_get/get/char/4.cc
! f561afce5d291524285ae1f0b366922d  libstdc++-v3/testsuite/22_locale/money_get/get/char/5.cc
! b114473b5b0346c0ff46ad46652844a7  libstdc++-v3/testsuite/22_locale/money_get/get/char/6.cc
! d4a2473d2268d7393e5cfe1078bf9afd  libstdc++-v3/testsuite/22_locale/money_get/get/char/7.cc
! 44d904466cd7a83efd3d1a3a1d4b6ef2  libstdc++-v3/testsuite/22_locale/money_get/get/char/8.cc
! 975a1c98f055fd6f2204b0c375b22039  libstdc++-v3/testsuite/22_locale/money_get/get/char/9.cc
! 6dfd55ee94f5156e0f28d98db13df960  libstdc++-v3/testsuite/22_locale/money_get/get/char/wrapped_env.cc
! e63ab06f077278e1bcc9138b6010f3f0  libstdc++-v3/testsuite/22_locale/money_get/get/char/wrapped_locale.cc
! 51e92284a5ff8f1b81c7e46b7b9a09fb  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/1.cc
! 19298404b6fae3317162c0c5e9fdf55e  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/10.cc
! 0d57ace80951af5c17ef99bb951e4d31  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/11.cc
! 5262bd80f30c54077c14054e58da7f88  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/11528.cc
! 59d2c309e860c294b954292ea2129777  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/12.cc
! e3ce9f06b7ca6cc71448e1b72f43e964  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/13.cc
! 8051d00808827d12e9f342fd51366de4  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/14.cc
! 2c72bd41558964a046394748293ae685  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/15.cc
! 3b5fb2b60c66b0858ad746642299090a  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/16.cc
! 6e9d0e2376b171cec223b714f37934d5  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/17.cc
! afae273fb6fc36f0f8950c730c4c4933  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/18.cc
! ef5a1fbfebc45f367f9e489ffa27756b  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/19.cc
! ef478cb3dc0bdb8b7dc8993ef8c41e9d  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/2.cc
! 1295b914e0fc6ce71422db9270cc77f7  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/22131.cc
! 1b4a249d6299ceed4f23d3a8fd602ef1  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/3.cc
! 595575876938cacd93cb1e5798dfe08e  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/38399.cc
! 1636253c5a61712970932a1857a14651  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/39168.cc
! 2eefdd30988e888faca942074f39f2e9  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/4.cc
! 8453a03f279eb0d0dc09e643ff26fae8  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/5.cc
! fc6fd55fb6eed42d48c59efb6df7c38e  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/6.cc
! b59f425e17b4e46a4dd45fd91b665f23  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/7.cc
! 0ada0aec17247f0d567eb50e434e3fed  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/8.cc
! 6df1e86ec65755c5a8f85bd3d98c551e  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/9.cc
! 6dfd55ee94f5156e0f28d98db13df960  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/wrapped_env.cc
! e63ab06f077278e1bcc9138b6010f3f0  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/wrapped_locale.cc
! 6f7fa83f8f48d2e4ee3974ca45811d9c  libstdc++-v3/testsuite/22_locale/money_get/requirements/base_classes.cc
! 138ae45bceb1a3427423069f7dae84da  libstdc++-v3/testsuite/22_locale/money_get/requirements/explicit_instantiation.cc
! 20a01f965dab4e7b2532ccf6df4b2ddb  libstdc++-v3/testsuite/22_locale/money_get/requirements/typedefs.cc
! 2641997a341bd4d6718273dcea75d134  libstdc++-v3/testsuite/22_locale/money_put/cons/3.cc
! 04e906e791e309330b46daea1b331d78  libstdc++-v3/testsuite/22_locale/money_put/put/char/1.cc
! 207298ff254fe974d1b8f7c005ae9692  libstdc++-v3/testsuite/22_locale/money_put/put/char/12971.cc
! 2fb846832dcc7988bf302246c40dfb3b  libstdc++-v3/testsuite/22_locale/money_put/put/char/2.cc
! 4e21f036c63881cfb5ace856709c7761  libstdc++-v3/testsuite/22_locale/money_put/put/char/3.cc
! 2ceb53d2b504bdd79b15252c49b6f4a6  libstdc++-v3/testsuite/22_locale/money_put/put/char/39168.cc
! 8a36092157aa1ac1fef25820ca13a24e  libstdc++-v3/testsuite/22_locale/money_put/put/char/4.cc
! a245a7ec8f88f3a4f0d203802854f0c7  libstdc++-v3/testsuite/22_locale/money_put/put/char/5.cc
! 9f6dfc48860efa57610bb5cccda80764  libstdc++-v3/testsuite/22_locale/money_put/put/char/6.cc
! 3080903ea535e2a683b7bd2ae53cd103  libstdc++-v3/testsuite/22_locale/money_put/put/char/9780-3.cc
! eb478911d7da1ec03d8c0c234d1dea02  libstdc++-v3/testsuite/22_locale/money_put/put/char/wrapped_env.cc
! 942f6d5cb29aa1b525eb28e7b7497470  libstdc++-v3/testsuite/22_locale/money_put/put/char/wrapped_locale.cc
! 3a50804498371b45de05533766b426fb  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/1.cc
! d243049d139ee5189545af5a8e34c012  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/12971.cc
! 2a0b71158c4d4bc4a474c6ece1eaf269  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/2.cc
! 820c936ae2f9596b161fd21745ea65fb  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/3.cc
! aa0a0382e28348b93559a362ba77b52b  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/39168.cc
! c0ba46a3d892899e5e86cc6c0d117b53  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/4.cc
! 61f465a32b77499fc2b2de2b65f71511  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/5.cc
! b5977c617cd9b4462360bcbdc8086e9b  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/6.cc
! eb478911d7da1ec03d8c0c234d1dea02  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/wrapped_env.cc
! 942f6d5cb29aa1b525eb28e7b7497470  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/wrapped_locale.cc
! 5ecc4ea9c3e45ec6eb6ff053f1de0551  libstdc++-v3/testsuite/22_locale/money_put/requirements/base_classes.cc
! 0ec4863d1729ea358c96c9fcfbb35a9e  libstdc++-v3/testsuite/22_locale/money_put/requirements/explicit_instantiation.cc
! 113d553662fbcffa6731ae92c5ed9985  libstdc++-v3/testsuite/22_locale/money_put/requirements/typedefs.cc
! e94c8899d9d62c5692a2b86cc04020e6  libstdc++-v3/testsuite/22_locale/moneypunct/40712.cc
! 0c09868d537d6437f40bf4b8f619deee  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/1.cc
! 263310fd2fcec9eaf1d6bcd3f0f6ce0e  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/2.cc
! 1bba72d19d6070e168cb7a9a87aa77b0  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/wrapped_env.cc
! 65a97ea4dece05e20fd7107671a01415  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/wrapped_locale.cc
! c7eedc1dc74cd6140b6be8caeedea929  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/1.cc
! 403546bff86b30f282f601ef8533e2a6  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/2.cc
! 1bba72d19d6070e168cb7a9a87aa77b0  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/wrapped_env.cc
! cf17480e0c3f5659fa68035f2d7bf7f8  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/wrapped_locale.cc
! ab0a87111bd614fcca243acd0d47edea  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/base_classes.cc
! c40854690c86cfaf337866f186212315  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/explicit_instantiation.cc
! 2324d57b45ba6a4cb2c7a411126f7356  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/intl.cc
! 4d99a3bd3ebaa9bcca2ab9933ab28729  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/typedefs.cc
! 0e2d7a25369d60fec03549ffedb962f3  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/base_classes.cc
! b149b1deff78706c44fe9769cd8b3a13  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/explicit_instantiation.cc
! 024b2947163248dfe09ead192a2495c8  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/intl.cc
! 69c1af0a735a1385b96785750b3ad57e  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/typedefs.cc
! 4d31f84befdf6174decc637dcb490b71  libstdc++-v3/testsuite/22_locale/moneypunct_byname/1.cc
! e67bc9a38a2cfea150f354e8f3aa541c  libstdc++-v3/testsuite/22_locale/moneypunct_byname/named_equivalence.cc
! 01f7f604ba061bfd7cda8987d413dc63  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/base_classes.cc
! cb4fe9de4f9f4cb029afa68a6c31acca  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/explicit_instantiation.cc
! a6ed5c20e6a3991177d906a12a232900  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/typedefs.cc
! c32a01a0a4a45182472de41799aafcb1  libstdc++-v3/testsuite/22_locale/num_get/cons/3.cc
! 02e9dc276d1cf6bff77e28ee7320ba97  libstdc++-v3/testsuite/22_locale/num_get/get/char/1.cc
! 7e025387a21acf91f7b41785119ab26a  libstdc++-v3/testsuite/22_locale/num_get/get/char/10.cc
! 0f7b73f8f52705e46721f51048e8491a  libstdc++-v3/testsuite/22_locale/num_get/get/char/11.cc
! 8762c24d8292bd1b3cb9ba7b7fbbe8fb  libstdc++-v3/testsuite/22_locale/num_get/get/char/12.cc
! cc1ae47235ac037159c05e680e21dacc  libstdc++-v3/testsuite/22_locale/num_get/get/char/13.cc
! 58bc4860168b051af5df9bdfe3a3d448  libstdc++-v3/testsuite/22_locale/num_get/get/char/14.cc
! 1332f1f49eb786cc384edd0afbaca822  libstdc++-v3/testsuite/22_locale/num_get/get/char/15.cc
! 147167c19352a51420a12c9ab8a0c7b0  libstdc++-v3/testsuite/22_locale/num_get/get/char/16.cc
! 8b9eb510b13281fe453609efea34751b  libstdc++-v3/testsuite/22_locale/num_get/get/char/2.cc
! 73508a355dab231f39baabfd53de5d84  libstdc++-v3/testsuite/22_locale/num_get/get/char/22131.cc
! b18f4230737c719a59703d4b65c212f5  libstdc++-v3/testsuite/22_locale/num_get/get/char/23953.cc
! 8e7f787434e681aac78c157d9da9847b  libstdc++-v3/testsuite/22_locale/num_get/get/char/3.cc
! ab8a89a66aaf56d47e03e24405f7b6cd  libstdc++-v3/testsuite/22_locale/num_get/get/char/37958.cc
! daafdd76f886db5605d39b77eb0ccc59  libstdc++-v3/testsuite/22_locale/num_get/get/char/39168.cc
! 8c1554b656909c6ec4431ae3704d2102  libstdc++-v3/testsuite/22_locale/num_get/get/char/39802.cc
! 2b8f1fc96c83056618d52b1347fb43fa  libstdc++-v3/testsuite/22_locale/num_get/get/char/4.cc
! 050aef3eff4856de0ebe40edf431f7b3  libstdc++-v3/testsuite/22_locale/num_get/get/char/5.cc
! 755205087b291038701368005189a5c3  libstdc++-v3/testsuite/22_locale/num_get/get/char/6.cc
! 444166f1209d1a35d14ea0132d7a3276  libstdc++-v3/testsuite/22_locale/num_get/get/char/7.cc
! d37bfef05e2c10de999b0b03d9619997  libstdc++-v3/testsuite/22_locale/num_get/get/char/8.cc
! 69c6d5e42369fc56f2ca77254f3bacdb  libstdc++-v3/testsuite/22_locale/num_get/get/char/9.cc
! 15810a1c208b4676a0f38a8ec9b308f0  libstdc++-v3/testsuite/22_locale/num_get/get/char/wrapped_env.cc
! 942f6d5cb29aa1b525eb28e7b7497470  libstdc++-v3/testsuite/22_locale/num_get/get/char/wrapped_locale.cc
! 0552847a802969c3f56d8e1187ae8108  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/1.cc
! 551b6b540847ece1308eca0cc5d2aebd  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/10.cc
! 8e1cec44b13ff29a6622c19a96395f16  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/11.cc
! c1de62fc096f1eb4e4c3b8e7fe1d0dda  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/12.cc
! ea1a045eb2548470d61a5f1d28a85bba  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/13.cc
! d9bd022ab02098134950bb29a2479f36  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/14.cc
! d29a2d0ad668117d7b4c4ec62bc504cd  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/15.cc
! a799ef29a7ab43c1f6a6a6d6139665ba  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/16.cc
! f954f90a8810c1f81c11395ed8a62517  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/2.cc
! e666763dca74bccf548154908ed63834  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/22131.cc
! 60742614c7e8c61d071d206525069148  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/23953.cc
! e4de7d7a416840ab27a1cfc7be15637d  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/3.cc
! 4d99f8fb9275c20c1f54b1ac24be9d9a  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/37958.cc
! 5f0a9f6696dda70eb1c2ffeaa969584a  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39168.cc
! 4346973e965fe9f852b3167d27a7a5c3  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39802.cc
! 00cf9c40baef937bbb31755f89a8e9a3  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/4.cc
! 6962d1aea6d5dd42a4766b9572f100fd  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/5.cc
! c9424cb3f844bb4d93475557915462ad  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/6.cc
! 05c01fef89b9d34328b702943d4a3de1  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/7.cc
! 03f141fd9eb81b162a6254675d293230  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/8.cc
! 6018a47b5c0e16db4e90d5994cb2bb01  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/9.cc
! 15810a1c208b4676a0f38a8ec9b308f0  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/wrapped_env.cc
! 942f6d5cb29aa1b525eb28e7b7497470  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/wrapped_locale.cc
! 8071003f230fa87790d0306799c0281c  libstdc++-v3/testsuite/22_locale/num_get/requirements/base_classes.cc
! 55561f09693f9f2972dc3d4328f4c95a  libstdc++-v3/testsuite/22_locale/num_get/requirements/explicit_instantiation.cc
! de63066d9c2d190b994e3a7bfd0f6385  libstdc++-v3/testsuite/22_locale/num_get/requirements/typedefs.cc
! 9bdffb58430894dd37a526edf0c459d8  libstdc++-v3/testsuite/22_locale/num_put/cons/3.cc
! d59444a7227321deab8b9f51cb16e315  libstdc++-v3/testsuite/22_locale/num_put/put/char/1.cc
! 6031e28965fd8a633622db64e60470b4  libstdc++-v3/testsuite/22_locale/num_put/put/char/10.cc
! e1b49183a92a645e50b0cc140e4a9f58  libstdc++-v3/testsuite/22_locale/num_put/put/char/11.cc
! 1b4e1bea897935117bbafce8f2b384f8  libstdc++-v3/testsuite/22_locale/num_put/put/char/12.cc
! cfef440e8d7491f8babbf935431847f4  libstdc++-v3/testsuite/22_locale/num_put/put/char/14220.cc
! c314e642528285f034582926360f89ec  libstdc++-v3/testsuite/22_locale/num_put/put/char/15565.cc
! 0450a2f621cb8d9de6d9af3c62c32fe1  libstdc++-v3/testsuite/22_locale/num_put/put/char/2.cc
! d32bbe175151405232423ca6af2f9d4c  libstdc++-v3/testsuite/22_locale/num_put/put/char/20909.cc
! 82d010211972e2c72a8b88fb8af6240c  libstdc++-v3/testsuite/22_locale/num_put/put/char/20914.cc
! 7fc6330ef428aac3b032d2924934e7ca  libstdc++-v3/testsuite/22_locale/num_put/put/char/23953.cc
! 97aaa0433532a002610a0c074117f627  libstdc++-v3/testsuite/22_locale/num_put/put/char/3.cc
! 80ca90f5a009f4f3792b5452e60e8a10  libstdc++-v3/testsuite/22_locale/num_put/put/char/38196.cc
! f203c6c8330f1c96b4fb33bfe6e4c272  libstdc++-v3/testsuite/22_locale/num_put/put/char/38210.cc
! 76b518be4855fb3df673c84786611f0d  libstdc++-v3/testsuite/22_locale/num_put/put/char/4.cc
! bdfd7f0b94d59ced4038d959603706ae  libstdc++-v3/testsuite/22_locale/num_put/put/char/5.cc
! 71c14ea41263dffd9f6ecc759591ed9f  libstdc++-v3/testsuite/22_locale/num_put/put/char/6.cc
! dbb32ea6a239e9afcefa1585efdcd452  libstdc++-v3/testsuite/22_locale/num_put/put/char/7.cc
! 57e4f2e5fe10ec6243d1ef7cf68b6335  libstdc++-v3/testsuite/22_locale/num_put/put/char/8.cc
! 1d101fd90fdc388533526439a87fac96  libstdc++-v3/testsuite/22_locale/num_put/put/char/9.cc
! a78a821d9836bcceef53f6d1e14523c3  libstdc++-v3/testsuite/22_locale/num_put/put/char/9780-2.cc
! a568b14659b37e68009ec456ddb3683c  libstdc++-v3/testsuite/22_locale/num_put/put/char/wrapped_env.cc
! 3bc215161d98015198158ea76a0671e8  libstdc++-v3/testsuite/22_locale/num_put/put/char/wrapped_locale.cc
! 3c3bf672d3ee0318050d1238fcb28f97  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/1.cc
! 7d6047ed71b33b2cbeda52e22493a2e1  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/10.cc
! a14dcfdf52110d4f8a21ae8767645261  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/11.cc
! 65f2698ac8254670bb5545b3f8d8fb71  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/12.cc
! d309c3afd51e21ba6a6e23dde0b677e4  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/14220.cc
! dc6d501665e65ba2f10f3ca3b48d576d  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/15565.cc
! 50964de993ebeb371ca66bd99267fce6  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/2.cc
! 19ab8146eafc80044b946863f7e1f292  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/20909.cc
! f926c8e129aa34f1f2c57c496b0452e0  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/20914.cc
! 90ca10500dd19955f72c2fe4626e0f7c  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/23953.cc
! 645aed4b4673eb77f43408bd02641974  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/3.cc
! 34a0fe906ca84e638bc2e04d53cf7825  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/38196.cc
! 4722195e1bd27f9137f43107559de60b  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/38210.cc
! ce288c60d2f2161dc1dece59d450bc2c  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/4.cc
! 5920637e4afcf621fe98922289a296b4  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/5.cc
! 4a2ca6a16b2c73e3016a33c1149c6ab6  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/6.cc
! 461683ae79c862c0a9433f8b458e395b  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/7.cc
! b957de5f2eb3b8174755ffb61f23f0c5  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/8.cc
! 7c6125495578c29be91533753eabc094  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/9.cc
! aeb23a6a61de6f7ae2a4d8b2bc2fddd1  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/wrapped_env.cc
! f46f02c901ea3b3df5569d133b4de4d0  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/wrapped_locale.cc
! bc78fcf786b9f16596fef6c87d6d9db6  libstdc++-v3/testsuite/22_locale/num_put/requirements/base_classes.cc
! 5e0cdb9e3b275804dfab22d425b676d4  libstdc++-v3/testsuite/22_locale/num_put/requirements/explicit_instantiation.cc
! 6d4d6e33b2ecfb633ecfcc8612c94819  libstdc++-v3/testsuite/22_locale/num_put/requirements/typedefs.cc
! 59bd3ea13174217f6e5b5a45427bdc49  libstdc++-v3/testsuite/22_locale/numpunct/members/char/1.cc
! 68fc77e6bd9d705ebd12a40c808c61e2  libstdc++-v3/testsuite/22_locale/numpunct/members/char/2.cc
! 3564fa06f415ef18c557a8a669af5d05  libstdc++-v3/testsuite/22_locale/numpunct/members/char/3.cc
! c45e70fa6b06d9e0d60147b0856dd0a0  libstdc++-v3/testsuite/22_locale/numpunct/members/char/cache_1.cc
! 50678960bc28f73a7eaa79be6224631e  libstdc++-v3/testsuite/22_locale/numpunct/members/char/cache_2.cc
! c76ca2a4689986eeb2bf1b3338e99884  libstdc++-v3/testsuite/22_locale/numpunct/members/char/wrapped_env.cc
! c30b6fd12eff8e2d830c5e4dc6d0271c  libstdc++-v3/testsuite/22_locale/numpunct/members/char/wrapped_locale.cc
! adfdf5eb419eebc07701a1b969dd16cf  libstdc++-v3/testsuite/22_locale/numpunct/members/pod/1.cc
! 4776b65f54b9e63b1aa1edb382b331e5  libstdc++-v3/testsuite/22_locale/numpunct/members/pod/2.cc
! e46b761d84f963bb735796d19b7ffdcf  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/1.cc
! 1de1a54a5d9e5e67f20ece803fcaadb6  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/2.cc
! a3d19bbfba2a99423e76b36f8e0a583c  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/cache_1.cc
! 44a8904ae48460ef37f2f1f031698fb4  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/cache_2.cc
! c76ca2a4689986eeb2bf1b3338e99884  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/wrapped_env.cc
! c30b6fd12eff8e2d830c5e4dc6d0271c  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/wrapped_locale.cc
! 25936b7ce2efcd88c8e42e0862db35dd  libstdc++-v3/testsuite/22_locale/numpunct/requirements/base_classes.cc
! c716f1a22a1a7825d2caf82775e292a0  libstdc++-v3/testsuite/22_locale/numpunct/requirements/explicit_instantiation.cc
! a0214e6df660137e60a97f073cb0626a  libstdc++-v3/testsuite/22_locale/numpunct/requirements/typedefs.cc
! 83582b8c8c66825d81640e4900226817  libstdc++-v3/testsuite/22_locale/numpunct_byname/1.cc
! 1174bbc20f86ccc3164adef15d185024  libstdc++-v3/testsuite/22_locale/numpunct_byname/named_equivalence.cc
! 9492dec3e411dc1b41f2be6ed5a45610  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/base_classes.cc
! 1117392bad22e8460a8534afba659b40  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/explicit_instantiation.cc
! 851f2ae38fb7352f6869b37a88515184  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/typedefs.cc
! 4a22f1d1ed0ac4bc3674212578c1cac4  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/1.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/wrapped_locale.cc
! 5b51d02db9399c13cdc77c7f630f748f  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/1.cc
! b04853c628b4bd309c57ab8e2cc26991  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/wrapped_env.cc
! 3096806591df2dca52c36a9d583f9917  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/wrapped_locale.cc
! 9fd1691b64a566f37779699a2c38aad5  libstdc++-v3/testsuite/22_locale/time_get/get/char/1.cc
! 48d55e6a40464178094d212cf82cad39  libstdc++-v3/testsuite/22_locale/time_get/get/char/2.cc
! 4b7123251969c5301cc0931ce1f21c66  libstdc++-v3/testsuite/22_locale/time_get/get/char/88681.cc
! fc82b67ddb3b03610cbf50ced427a0f2  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/1.cc
! 9b5f79cdd6eac3756c50798043447fc9  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/2.cc
! 9e0421aef4f801ae97ba68f97c3ee272  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/88681.cc
! ae83fe47d6120d17fb2dde6dca582f47  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/1.cc
! 1f781e81345d580b921fd631eaa67c1a  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12750.cc
! 3f734c893a3d832581f9756164f6ae52  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12791.cc
! 79a46d22a1883e9fdcc23a5fc191fec8  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/2.cc
! e1c0ef5f6e9a66b3025ffaeaa8370e35  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/26701.cc
! 140869ac6bed5c8fa2ce3567b697ba25  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/3.cc
! b76407da166b731ee540cf6a4a8928bc  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/5.cc
! 519af95ebfe0880934c929a335a4a05b  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/wrapped_env.cc
! ca16e881cc35f9af7eda032a0fe0c722  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/wrapped_locale.cc
! a4a9590bedec349491d410bcff046774  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/1.cc
! 1b388745f66ee3bd24ab6ff917229386  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12750.cc
! 0cdd4adac071458deca4204a3fd2c3c2  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12791.cc
! 3d02f0c66375c42f14d5ffcbee0b3524  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/2.cc
! 14aaa074e4e35ca914412316ac001c2f  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/26701.cc
! cdbae8d344ea8e535b27027a6030522e  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/3.cc
! b23c49ca3632c8a377a6d5fd6cfc4b52  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/4.cc
! 8ec34f50bee08a87cba30f0993f9d984  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/5.cc
! 519af95ebfe0880934c929a335a4a05b  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/wrapped_env.cc
! ca16e881cc35f9af7eda032a0fe0c722  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/wrapped_locale.cc
! d85f79f7c7e7583cd0866a0853e87483  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/1.cc
! 74517903ba66c89fca12d18f44ed34d0  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/2.cc
! cdcdee303e5453224ee894c6910cdbc1  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/3.cc
! dfd341fe60dfda2f14cf454a4a38a12d  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/4.cc
! 6cb7c8271f4849fc90708dca003af0b0  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/5.cc
! a5d0f9d61ed2a2e75408ffd08e018393  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/6.cc
! 519af95ebfe0880934c929a335a4a05b  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/wrapped_env.cc
! ca16e881cc35f9af7eda032a0fe0c722  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/wrapped_locale.cc
! a75dc675eaf93027a4a054eb14bddc57  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc
! dfe0c39f9f3341cdd9f2e2106ea6489a  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/2.cc
! 8c40ae289013fa08755686ea28ce78f1  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/3.cc
! daedca901d0dc44f96de732b23b2b668  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/4.cc
! 1337ce4c2c41a06d24b2bdec6a0f4d87  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/5.cc
! 0f1552a0edb1387e325264a77f3149cc  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/6.cc
! 519af95ebfe0880934c929a335a4a05b  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/wrapped_env.cc
! ca16e881cc35f9af7eda032a0fe0c722  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/wrapped_locale.cc
! a270312ab763e17cc74bddb16fd36bb9  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/1.cc
! 16a9b77f2171ec2a9cc14e0f99679859  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/2.cc
! e5c3e33a30cd72ba238eceb134c49342  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/3.cc
! 493121c99af57e0f7b382f2b9b68cd5c  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/4.cc
! 3e24d0c01d991a761199b3c865cb506b  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/5.cc
! 328f4b2b48da6351440e02693c0cee15  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/6.cc
! 519af95ebfe0880934c929a335a4a05b  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/wrapped_env.cc
! ca16e881cc35f9af7eda032a0fe0c722  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/wrapped_locale.cc
! a9931fb070f1e328d3c01e1bde578043  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/1.cc
! bbce66b067ec528824125cadfe2610d4  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/2.cc
! 5907302d10a0482195612f691a4c0db0  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/3.cc
! f1f8436a4b534144b5526e8f027e254f  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/4.cc
! 783bf7c1b0aa18bab5d8427201a1f7d6  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/5.cc
! ff2b7dbebbee2dd2ef3d75513eac39d7  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/6.cc
! 519af95ebfe0880934c929a335a4a05b  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/wrapped_env.cc
! ca16e881cc35f9af7eda032a0fe0c722  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/wrapped_locale.cc
! 8caa6832c070c973eb92c44f2ed28de0  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/1.cc
! 4500069c605880c703136875d16b5af2  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/2.cc
! 8d61b9a0420b8f988be5b3de0500b56c  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/3.cc
! 721bf3457b36fa5266b0ddb3ef5b7558  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc
! 18c62a0adb9e6dfb074173143d8f91bc  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc
! 5a90befdee434930db080e5e07cd0781  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/5.cc
! 02b4450499e6028c7b19663588c6110e  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/6.cc
! 519af95ebfe0880934c929a335a4a05b  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/wrapped_env.cc
! ca16e881cc35f9af7eda032a0fe0c722  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/wrapped_locale.cc
! c64c292a7ac216f1496704d884145858  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc
! 09e2b343f74665c8905dbe1bf404754b  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/2.cc
! 2aff3eeae5a47632b65ea9c1bc73c16c  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/3.cc
! 18e3b28ead43d4c1dc1a03f8f69de280  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/5.cc
! 0d42016e273479aaf3e43beafe141f63  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/6.cc
! 9734298790fead68872db238660c04bc  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/wrapped_env.cc
! 59c3bbe5ce6078c89d6904fc66a172bb  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/wrapped_locale.cc
! 46277cc152da45f4f96a8504279a33ad  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc
! 1af9e72d08ed4e19393b171fc735bd71  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/3.cc
! f98cb4ef1072f402700f5b1bfd6d909f  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/5.cc
! f703ece912fa429fbfaff3007b421b0a  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/wrapped_env.cc
! 339893f8998536912273ef852ecb2dbd  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/wrapped_locale.cc
! 0ff05f3fa0b40911382af8af29450ad0  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/1.cc
! cfce609044f005a6c8cc2823f29e0f0c  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/3.cc
! 7dda697c6926aaf5294044f2eb218a8c  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/5.cc
! f703ece912fa429fbfaff3007b421b0a  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/wrapped_env.cc
! 339893f8998536912273ef852ecb2dbd  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/wrapped_locale.cc
! c1e4e4bf86341f8e65ac7d6402a91664  libstdc++-v3/testsuite/22_locale/time_get/requirements/base_classes.cc
! d7625fafa001a353ea615a422f772d8d  libstdc++-v3/testsuite/22_locale/time_get/requirements/explicit_instantiation.cc
! 550e09a11db9b332a5333c3a81d155c4  libstdc++-v3/testsuite/22_locale/time_get/requirements/typedefs.cc
! 2a7e837dd6d988404ee4a4ac107849a7  libstdc++-v3/testsuite/22_locale/time_put/put/char/1.cc
! ceeb8ae62391089abd7040a44a8b2966  libstdc++-v3/testsuite/22_locale/time_put/put/char/10.cc
! f522a2b46d5508b7d172321c92afa582  libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_1.cc
! f3a62f014c29301e477dadcff118e51f  libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_3.cc
! 85fc8989b3daf0ca4fcabd5e5182215c  libstdc++-v3/testsuite/22_locale/time_put/put/char/17038.cc
! ad915a9960835d0f87f081fcc67459bb  libstdc++-v3/testsuite/22_locale/time_put/put/char/2.cc
! 0fe84037874d4ce6a870d670b77a2b6a  libstdc++-v3/testsuite/22_locale/time_put/put/char/3.cc
! 900b2b9fbe4f2fc1ace65b17f12a25d1  libstdc++-v3/testsuite/22_locale/time_put/put/char/4.cc
! 7f4df248f721ec2887bbc9aadb51f449  libstdc++-v3/testsuite/22_locale/time_put/put/char/5.cc
! 0043ea8119568381f11823f686eb3a7c  libstdc++-v3/testsuite/22_locale/time_put/put/char/6.cc
! 88d2710cacffffbb291d328ab5b86af1  libstdc++-v3/testsuite/22_locale/time_put/put/char/7.cc
! f86b2d002409a2a0aad901a9bb20ee3b  libstdc++-v3/testsuite/22_locale/time_put/put/char/8.cc
! 1a9c624372fc141eb6636bb3f46556a9  libstdc++-v3/testsuite/22_locale/time_put/put/char/9.cc
! df2a97a9ecca075bb7bf1a39bbc63b52  libstdc++-v3/testsuite/22_locale/time_put/put/char/9780-1.cc
! 137f52498dabd361b3c33019d2625f26  libstdc++-v3/testsuite/22_locale/time_put/put/char/wrapped_env.cc
! 3433f33fc892eea36a73501003a719e0  libstdc++-v3/testsuite/22_locale/time_put/put/char/wrapped_locale.cc
! 8a62dc202f56c2d1a9dd5306e5fa6384  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/1.cc
! 107dbafcbe21974dac5445d184bf24f2  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/10.cc
! 34995691f27b2b89df5e0d6042a41ee3  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_1.cc
! 68d708f44e5f03e587e4ff11bfa48bde  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_2.cc
! b1c1e2dbc291c4dd4c863a26296a4bd7  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_3.cc
! 0e81c74c51e09d9042816c73d5f6c61b  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/17038.cc
! fcb6867922a3ba3a2f0249dc8c04ab7e  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/2.cc
! 9b8e4715377f00d1e305e67d2bf1a03f  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/3.cc
! 3def19603f56a73099eb5d45858ff657  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/4.cc
! 27d2eaadd797ed16e158a8bf31b292b1  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/5.cc
! 3f4a28195484ccde833ae9d93ef3a3ad  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/6.cc
! f95bd370b486e4b83847ce9742bf7c9a  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/7.cc
! f9d4ffb8603f026411ee14029c26da00  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/8.cc
! 0239d2b78fe2ed0676dc8ef15a9739cf  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/9.cc
! 137f52498dabd361b3c33019d2625f26  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/wrapped_env.cc
! cb88cc02647f9ea76c8b1330cf3c1bba  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/wrapped_locale.cc
! 08874ba5b375c049bb922b8429151730  libstdc++-v3/testsuite/22_locale/time_put/requirements/base_classes.cc
! 20b0ec294554b42f96cfc36c16978d09  libstdc++-v3/testsuite/22_locale/time_put/requirements/explicit_instantiation.cc
! 7b47efb76a95ff45b6ab0b461ea67507  libstdc++-v3/testsuite/22_locale/time_put/requirements/typedefs.cc
! f068b23843318c17da7706f27d2f63df  libstdc++-v3/testsuite/23_containers/array/capacity/constexpr_functions.cc
! 673ffee43222f5e2bd7b96b226d10855  libstdc++-v3/testsuite/23_containers/array/capacity/empty.cc
! 714651530f0066e0f602ac557bc641ee  libstdc++-v3/testsuite/23_containers/array/capacity/max_size.cc
! d012a75ea4409d9eb629980126141ae5  libstdc++-v3/testsuite/23_containers/array/capacity/size.cc
! ee161adf8cac0a62cdaae778d6c5ad7f  libstdc++-v3/testsuite/23_containers/array/comparison_operators/96851.cc
! 4ad855d38b46aa536bab9ed6e559a9be  libstdc++-v3/testsuite/23_containers/array/comparison_operators/constexpr.cc
! 5ca077c8f374db1dafbeb6659dba2818  libstdc++-v3/testsuite/23_containers/array/comparison_operators/equal.cc
! 0a16dc96c15a1bb59efda1b912aa3bc7  libstdc++-v3/testsuite/23_containers/array/comparison_operators/greater.cc
! 93bb5de6ba3c8b80b5defbff3ba58b62  libstdc++-v3/testsuite/23_containers/array/comparison_operators/greater_or_equal.cc
! 3413a0c1cd1ce9083c180915ccf5bfdf  libstdc++-v3/testsuite/23_containers/array/comparison_operators/less.cc
! ae2a6dfbb8f82593be63eb1c17dc4b4e  libstdc++-v3/testsuite/23_containers/array/comparison_operators/less_or_equal.cc
! 06e2ca4d48ff9bf561e5276328558080  libstdc++-v3/testsuite/23_containers/array/comparison_operators/not_equal.cc
! 65dcaca11d5c4a55011720f900e68154  libstdc++-v3/testsuite/23_containers/array/cons/53361.cc
! b3c9e3af0f49a131973d6c4ac03b1a69  libstdc++-v3/testsuite/23_containers/array/cons/aggregate_initialization.cc
! 46431d29d17addaa4eb2d9274515a2f3  libstdc++-v3/testsuite/23_containers/array/cons/deduction.cc
! f0b8912da73872c320875c0b221f5b0b  libstdc++-v3/testsuite/23_containers/array/cons/deduction_neg.cc
! d2a212f2b8f6fdc5c0cfbd95e4c8c0d3  libstdc++-v3/testsuite/23_containers/array/creation/1.cc
! d5f4d148e3e8b228594162f3ef05c987  libstdc++-v3/testsuite/23_containers/array/creation/2.cc
! dcfec188e09b247823945c7fcfd7d096  libstdc++-v3/testsuite/23_containers/array/creation/3_neg.cc
! 1a5de8290102971098844454cfa49d9e  libstdc++-v3/testsuite/23_containers/array/debug/back1_neg.cc
! ca8138cfed1017518043355a360ae990  libstdc++-v3/testsuite/23_containers/array/debug/back2_neg.cc
! 449fcc9e36fd1b6635d3d7f0dfba53d2  libstdc++-v3/testsuite/23_containers/array/debug/constexpr_c++11.cc
! 29ab26e6827e0d958b369cc2743dbde2  libstdc++-v3/testsuite/23_containers/array/debug/front1_neg.cc
! b0d2e23aa91cf9d00a03fa12d9708b91  libstdc++-v3/testsuite/23_containers/array/debug/front2_neg.cc
! 6dc61c0b818d42a3ae7b12c0b375d217  libstdc++-v3/testsuite/23_containers/array/debug/square_brackets_operator1_neg.cc
! c389e2d3f01358756ffae3c5efd8b861  libstdc++-v3/testsuite/23_containers/array/debug/square_brackets_operator2_neg.cc
! adb867258c829b6eb6723cbf1ddb05cd  libstdc++-v3/testsuite/23_containers/array/element_access/54388.cc
! 9b5d77c7496c7f544043adbace42f9fa  libstdc++-v3/testsuite/23_containers/array/element_access/60497.cc
! f0ada280ac5c33ed8e4ff8204bca7866  libstdc++-v3/testsuite/23_containers/array/element_access/at_neg.cc
! 475f361a533db81dcb51f5b5ff4daf17  libstdc++-v3/testsuite/23_containers/array/element_access/at_out_of_range.cc
! ae04f00435944482d8f2762c2dc70265  libstdc++-v3/testsuite/23_containers/array/element_access/back.cc
! 916eca82ab9c5cf2190486921e4fef7b  libstdc++-v3/testsuite/23_containers/array/element_access/constexpr_c++17.cc
! aef8e21404e9f1d6682fd1b63acc7389  libstdc++-v3/testsuite/23_containers/array/element_access/constexpr_element_access.cc
! 9261ffe7897065d1d176443946c9eea3  libstdc++-v3/testsuite/23_containers/array/element_access/data.cc
! 61fa35060643d4e3f1a5dd6bf4142997  libstdc++-v3/testsuite/23_containers/array/element_access/front.cc
! 1e3823eeb7280969624040c98cbb6cc5  libstdc++-v3/testsuite/23_containers/array/iterators/end_is_one_past.cc
! 3c7c1d167cc78ca91f17cd6b13c8a90e  libstdc++-v3/testsuite/23_containers/array/range_access.cc
! bb9b1ef86ffbe51abdab9960a32ddc76  libstdc++-v3/testsuite/23_containers/array/requirements/citerators.cc
! 5226ea58214e95acbab7115e1d580550  libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_fill.cc
! c578b37f7a96dd415b09f9e640960bff  libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_iter.cc
! 47fc2e9ae1a3190da1f29e187418dcbb  libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_swap.cc
! 4abbf4e5ffce5dfbc38a2f55b8607cd1  libstdc++-v3/testsuite/23_containers/array/requirements/contiguous.cc
! 4f9a6b38b5ccd4db9a5b71a3dde3ad04  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/1.cc
! 00600face7e170213d275d8c513fa2b3  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/2.cc
! 8819cbeb66ca364b10a8f7f091630c0e  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/3.cc
! 81d7f525b528ceb06633d87621ea06f7  libstdc++-v3/testsuite/23_containers/array/requirements/fill.cc
! 6bac407845c5abce3982a78f53593c3d  libstdc++-v3/testsuite/23_containers/array/requirements/member_swap.cc
! ed17a67c69d9b1db665e81a60e39c410  libstdc++-v3/testsuite/23_containers/array/requirements/non_default_constructible.cc
! 07ca0a73dff5d274627af56f53e1ec8e  libstdc++-v3/testsuite/23_containers/array/requirements/typedefs.cc
! eaa50489f9229a225f79c52bcc220381  libstdc++-v3/testsuite/23_containers/array/requirements/zero_sized_arrays.cc
! 1db6cca519147c85ecfaaf8d2197cbda  libstdc++-v3/testsuite/23_containers/array/specialized_algorithms/swap.cc
! 20b7d6bc0d7fc880796b9a291e2beb8b  libstdc++-v3/testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc
! 0046b08ffe5d34662b0ddf7216acf03d  libstdc++-v3/testsuite/23_containers/array/tuple_interface/constexpr_get.cc
! c38b8917a10f8c17c3fda5778917dc28  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get.cc
! ab5174f2feb448c7ce179afe98876e62  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
! 2f6abedea25dd7d8ffb64bd4239ba5a1  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element.cc
! 4413b984845c5000ef44eaed41902b30  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_cpp14.cc
! 3b4f7bb2281ff6d7c4ebd6a6dce64559  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc
! 1ccc322b1290f4dfeebcf08c029ca447  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_size.cc
! 58044e8262d11211e164e1db321736d4  libstdc++-v3/testsuite/23_containers/bitset/18604.cc
! 312346734568fc408df3de0a14fe5e7e  libstdc++-v3/testsuite/23_containers/bitset/45713.cc
! 2215b8fae5200c1d44ef3ca82f160be7  libstdc++-v3/testsuite/23_containers/bitset/all/1.cc
! c01bf53053a7e46a9b1c0ed6fa967164  libstdc++-v3/testsuite/23_containers/bitset/cons/1.cc
! 5c5ea6cd12d6f7775a94d285b61e3905  libstdc++-v3/testsuite/23_containers/bitset/cons/16020.cc
! fee3cda11d6f96fa0ed14fe5248760e7  libstdc++-v3/testsuite/23_containers/bitset/cons/2.cc
! af737c1c0459553477686413c5f82046  libstdc++-v3/testsuite/23_containers/bitset/cons/3.cc
! c4f60b346ade5396d4451da4b43199f6  libstdc++-v3/testsuite/23_containers/bitset/cons/38244.cc
! 2e78a690dd99541e16ebc8f27f0eba63  libstdc++-v3/testsuite/23_containers/bitset/cons/50268.cc
! eef9ffa61f4cecc83abd1f2fd25533aa  libstdc++-v3/testsuite/23_containers/bitset/cons/6282.cc
! d9050e2a61ddddb57074c52f4c8b8058  libstdc++-v3/testsuite/23_containers/bitset/cons/constexpr.cc
! 371ae2ca407cae74eaced6efff100e10  libstdc++-v3/testsuite/23_containers/bitset/cons/dr1325-1.cc
! 9b80ccfae6feaaf23caf769e4ee79321  libstdc++-v3/testsuite/23_containers/bitset/cons/dr1325-2.cc
! 7138542dd2fb08309a45fa0198c153c1  libstdc++-v3/testsuite/23_containers/bitset/cons/dr396.cc
! 4afd2b2fca557b719a59f3a456b627b2  libstdc++-v3/testsuite/23_containers/bitset/count/6124.cc
! e9ac78dad69d31c9008e31d7aeed17f6  libstdc++-v3/testsuite/23_containers/bitset/debug/invalidation/1.cc
! a003cdbb5ddc13d3de02b41665b912e4  libstdc++-v3/testsuite/23_containers/bitset/ext/15361.cc
! c46f5bb8c90c0886547268016242f380  libstdc++-v3/testsuite/23_containers/bitset/hash/1.cc
! 71307eb055626576facb5e06fbdf4cca  libstdc++-v3/testsuite/23_containers/bitset/input/1.cc
! acc42a5d65041dcdc29d674fab9eb223  libstdc++-v3/testsuite/23_containers/bitset/operations/1.cc
! aabf8bf0c7f6da86839ce5fd9f6f55a5  libstdc++-v3/testsuite/23_containers/bitset/operations/13838.cc
! cf7bf33f3067784569c29224f16e932a  libstdc++-v3/testsuite/23_containers/bitset/operations/2.cc
! 0b3bbc46ddcc27706816abaf7e639725  libstdc++-v3/testsuite/23_containers/bitset/operations/96303.cc
! 55445760f613c7bffb9e165241977fbe  libstdc++-v3/testsuite/23_containers/bitset/operations/constexpr-2.cc
! 9e344633bfa39c0f453f3335ba58b83b  libstdc++-v3/testsuite/23_containers/bitset/operations/constexpr.cc
! ddc5647043bc48464b6c67a663e4e549  libstdc++-v3/testsuite/23_containers/bitset/requirements/constexpr_functions.cc
! 0661a15d62f061519df2710ed817cfb7  libstdc++-v3/testsuite/23_containers/bitset/requirements/explicit_instantiation/1.cc
! 9a409a91ab7177372ad2dcd990804cf4  libstdc++-v3/testsuite/23_containers/bitset/requirements/explicit_instantiation/1_c++0x.cc
! edaa004bb9eae943f183fcdc0f269808  libstdc++-v3/testsuite/23_containers/bitset/test/1.cc
! 5cdeb81ed8045b8b041a1506ee6c4c9f  libstdc++-v3/testsuite/23_containers/bitset/to_string/1.cc
! de56de001d169a4b8a691a41327fee47  libstdc++-v3/testsuite/23_containers/bitset/to_string/dr396.cc
! f57a4db11fe719ce3262a1977035e5cc  libstdc++-v3/testsuite/23_containers/bitset/to_ullong/1.cc
! 776ef9d76323c363dc5a78d1e9169e19  libstdc++-v3/testsuite/23_containers/bitset/to_ulong/1.cc
! b61080bacaa1f97ee4ffe96d40c8929c  libstdc++-v3/testsuite/23_containers/deque/14340.cc
! 19c3dab506c20712027bb8729ef87b57  libstdc++-v3/testsuite/23_containers/deque/18604.cc
! 193e02a35660ce434ac8d69fceaa8efa  libstdc++-v3/testsuite/23_containers/deque/48101-2_neg.cc
! f3ce531e896937b8009a2dd9dcec2da8  libstdc++-v3/testsuite/23_containers/deque/48101-3_neg.cc
! a571f454d0034057da52010e07b1058c  libstdc++-v3/testsuite/23_containers/deque/48101_neg.cc
! 1bfd7aaebd5dc094538cbc56c54bb430  libstdc++-v3/testsuite/23_containers/deque/58764.cc
! 5c0fa9880d0f0d1d1915bc00e58ffa21  libstdc++-v3/testsuite/23_containers/deque/70303.cc
! 846ecf14541802b66b4e773f971dace7  libstdc++-v3/testsuite/23_containers/deque/92124.cc
! ee2a48c4f0a92fcb3c174ab6d3b4893e  libstdc++-v3/testsuite/23_containers/deque/allocator/copy.cc
! b1323ee2dac97f66637e5a1606afb100  libstdc++-v3/testsuite/23_containers/deque/allocator/copy_assign.cc
! 0b056a7cfb10e89882c7f9725d54c131  libstdc++-v3/testsuite/23_containers/deque/allocator/default_init.cc
! b073ceeebf610bf180df7457fc1cc131  libstdc++-v3/testsuite/23_containers/deque/allocator/ext_ptr.cc
! 7a5f99c4228a188c47a84ae2acf7ec9a  libstdc++-v3/testsuite/23_containers/deque/allocator/minimal.cc
! caa6b562b5ea9fa9360b9e3eebf390e2  libstdc++-v3/testsuite/23_containers/deque/allocator/move-2.cc
! 7b7194515b015935812abfd00b4ab6b6  libstdc++-v3/testsuite/23_containers/deque/allocator/move.cc
! c7ffee6064a27839f78a8b49801088d3  libstdc++-v3/testsuite/23_containers/deque/allocator/move_assign-2.cc
! 3c779a710b94bb756c3a49600e50976a  libstdc++-v3/testsuite/23_containers/deque/allocator/move_assign.cc
! 2c4765c33d5d4c6cea2aa4138d956c99  libstdc++-v3/testsuite/23_containers/deque/allocator/noexcept.cc
! c035d485925673075108c416a4afe6fa  libstdc++-v3/testsuite/23_containers/deque/allocator/swap.cc
! f7af1096e81624465f69a9499f677ec1  libstdc++-v3/testsuite/23_containers/deque/capacity/29134-2.cc
! a4aafc1684ec9e9d925c0c105255e3ff  libstdc++-v3/testsuite/23_containers/deque/capacity/29134.cc
! 1a4beccb6926d317825c272acf5c941f  libstdc++-v3/testsuite/23_containers/deque/capacity/max_size.cc
! baccc794b8546722037101e5b07bd6c1  libstdc++-v3/testsuite/23_containers/deque/capacity/moveable.cc
! 1aa1d84d2c00f2e93b9e8d60def463ce  libstdc++-v3/testsuite/23_containers/deque/capacity/resize_size.cc
! f4d2d4f500709cd6bad16e7e8524bb18  libstdc++-v3/testsuite/23_containers/deque/capacity/shrink_to_fit.cc
! ee31417251056080fe0d1b45f9491430  libstdc++-v3/testsuite/23_containers/deque/check_construct_destroy.cc
! 55114d9071be2fe4efce536fba12334b  libstdc++-v3/testsuite/23_containers/deque/cons/1.cc
! 303e16ab156854fee80a8e02c051ea52  libstdc++-v3/testsuite/23_containers/deque/cons/2.cc
! e64522973a13bef3a3ab72ac5f1a3d3d  libstdc++-v3/testsuite/23_containers/deque/cons/55977.cc
! ef3dbe4ffca80ece40b19c57ae5a6aa4  libstdc++-v3/testsuite/23_containers/deque/cons/assign/1.cc
! 0a894c53d861bb7aa954f4f466ada93f  libstdc++-v3/testsuite/23_containers/deque/cons/clear_allocator.cc
! ef0e7856f98cb8873e435b8fe04d9cd3  libstdc++-v3/testsuite/23_containers/deque/cons/cons_size.cc
! abfa446a727f4640912f02d8a91ca1a7  libstdc++-v3/testsuite/23_containers/deque/cons/deduction.cc
! 9685f94855fd7399b464be8f52dbcf0f  libstdc++-v3/testsuite/23_containers/deque/cons/moveable.cc
! 571fd29645d669b02f18c779671abbc2  libstdc++-v3/testsuite/23_containers/deque/cons/moveable2.cc
! a1112a96cbac7144c3d11546501ccf93  libstdc++-v3/testsuite/23_containers/deque/cons/self_move.cc
! d6e37df153767c6ebc31de139d8701c9  libstdc++-v3/testsuite/23_containers/deque/debug/90102.cc
! 3caf04236f57a1ee301d7091396eb2d0  libstdc++-v3/testsuite/23_containers/deque/debug/98466.cc
! 65527d81972eb5888673636548527398  libstdc++-v3/testsuite/23_containers/deque/debug/assign1_neg.cc
! 2922121efcff92eb6e2307b05840cc0e  libstdc++-v3/testsuite/23_containers/deque/debug/assign2_neg.cc
! c46d2d6d6dc14fbbe30984d5784953e4  libstdc++-v3/testsuite/23_containers/deque/debug/assign3_neg.cc
! c351cbd2ddaef825a60635793de739d8  libstdc++-v3/testsuite/23_containers/deque/debug/assign4_neg.cc
! 9c5bd9a0406e2e46bda987a259140c1c  libstdc++-v3/testsuite/23_containers/deque/debug/construct1_neg.cc
! 80b7ed9cdd99a95f18938f554e2cb8e0  libstdc++-v3/testsuite/23_containers/deque/debug/construct2_neg.cc
! 2908ede2e2c736d30c66ea5fde1a234c  libstdc++-v3/testsuite/23_containers/deque/debug/construct3_neg.cc
! c8967f1a4b52f58c9cd9cec0f8d54d9c  libstdc++-v3/testsuite/23_containers/deque/debug/construct4_neg.cc
! 227f1cce69cf48f6bdde0942a2971564  libstdc++-v3/testsuite/23_containers/deque/debug/insert1_neg.cc
! 3b2e3db41a759bbc1d0aeaa0f34e93a2  libstdc++-v3/testsuite/23_containers/deque/debug/insert2_neg.cc
! 5ca330e27e6e1a667881ac9483405506  libstdc++-v3/testsuite/23_containers/deque/debug/insert3_neg.cc
! c6ec81f174919e2bf2676a08a595e675  libstdc++-v3/testsuite/23_containers/deque/debug/insert4_neg.cc
! b959a439f55e1def1b4989a983175876  libstdc++-v3/testsuite/23_containers/deque/debug/insert5_neg.cc
! 9b96ccac8331fe36b7cfccbdaefb1c88  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/1.cc
! b1252f9ada735cc967091d234e0678b5  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/2.cc
! 1e474cf499e356fe6c945a12bfa8190f  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/3.cc
! 379606df033fd2d9f34abea0682075d9  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/4.cc
! 784e358249d51931989789c4489e95e9  libstdc++-v3/testsuite/23_containers/deque/debug/shrink_to_fit.cc
! b77d33c27170bd5d12aadb975ae8eb67  libstdc++-v3/testsuite/23_containers/deque/erasure.cc
! a6e3a3e7f564bdea08d019eafab21650  libstdc++-v3/testsuite/23_containers/deque/init-list.cc
! fd3ff9a093fd2a40cb85db58fb0104b0  libstdc++-v3/testsuite/23_containers/deque/modifiers/assign/1.cc
! 72863504895f9aba7a5e4b83e0e368f7  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/52799.cc
! 3ada7303d4561d2a469a666f8eab7962  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc
! 362cf63a791fe50dcbb6d72d2bb94cb6  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/const_iterator.cc
! 3c4568a4d5fe7248892b41d350870fea  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc
! a6b647a927e4f0d2037a29da43a72ee4  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/1.cc
! 02f849d36977140b5e69f2aed6d87c5d  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/2.cc
! dccdd5211a86a555c43ef3fa06ebff56  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/3.cc
! 481ad18ca44e70811e061e00be1a80c8  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/50529.cc
! 6fd99314ee258ec9d66dc0f73b078a0d  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/54577.cc
! e8e3cbda843a0962aa5a98ea7adef421  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/moveable.cc
! 94c1b3cb6651852c7a6414709b6ccf1c  libstdc++-v3/testsuite/23_containers/deque/modifiers/insert/const_iterator.cc
! 945f23303929f36fe3c59e19f7ce6e00  libstdc++-v3/testsuite/23_containers/deque/modifiers/moveable.cc
! 38f92fcc31e50c0311e08cb8eefbb4a2  libstdc++-v3/testsuite/23_containers/deque/modifiers/push_back/49836.cc
! 138937a7c4140b0978edff69139702c1  libstdc++-v3/testsuite/23_containers/deque/modifiers/push_front/49836.cc
! 3a868a60305a426508c011383a6ee030  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/1.cc
! 58c35839fd3f87a4329b5e8429cc77f9  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/2.cc
! 4aeb4100a90ee997352d0e224b9ffa14  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/3.cc
! 08ee18c78bd1af9c4563e4e0555f2d21  libstdc++-v3/testsuite/23_containers/deque/operators/1.cc
! 4fd8841c69220e402587f33c58b82a61  libstdc++-v3/testsuite/23_containers/deque/operators/2.cc
! 9261cb95473bfd069461d96924a07534  libstdc++-v3/testsuite/23_containers/deque/operators/cmp_c++20.cc
! aa88cea08e5471e19eb1f93cad9f3a78  libstdc++-v3/testsuite/23_containers/deque/range_access.cc
! bf65d709970b858c543ec7e8d5398300  libstdc++-v3/testsuite/23_containers/deque/requirements/citerators.cc
! e1680199ceb80bccc838c9b33a5f9f46  libstdc++-v3/testsuite/23_containers/deque/requirements/do_the_right_thing.cc
! d8978fa80b6170b60061fd35df68f2c2  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
! 692f3a3689f2c77334eddc9c72e0befb  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor.cc
! 534d7fa9110e9b9c0fbae1f06cfab2b9  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
! 4349a16229d414b2440e8d2cee53670f  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
! e156a3bf461909084bd58a0a6d58724a  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
! 13fa219a7615f3901912ec0f6f99621f  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/basic.cc
! b2a96a60987990d64e2a950b86fe0264  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/generation_prohibited.cc
! 098783ba91841d01609406c632f6a7f3  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/propagation_consistent.cc
! b40ff7074efa24f9862e85e58e28bfc0  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/1.cc
! 962ab29257d99c84e6eeb3128175fc73  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/2.cc
! 5ddd510163fd99918ba2e3f19d045f41  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/3.cc
! 00ff0ec7e1f8ad8edd6d6599621c68d8  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/4.cc
! 7307f1b1bde0a9643f64b453944221ac  libstdc++-v3/testsuite/23_containers/deque/requirements/partial_specialization/1.cc
! c737595b0096bc543cda88b64f390a14  libstdc++-v3/testsuite/23_containers/deque/requirements/typedefs.cc
! e8f7b616dcd3af1aab6c53ccf4b4ae9d  libstdc++-v3/testsuite/23_containers/deque/types/1.cc
! 5386341b50f4baa27972d3e9b6f14e1b  libstdc++-v3/testsuite/23_containers/deque/types/92267.cc
! 56b3367bf13bd41a716ecda25bd0a051  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs.cc
! 3871625febac5bfe72d823901ec788d3  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs_debug.cc
! 9e5e7bcc4c7ceb6d5c149927aea9a913  libstdc++-v3/testsuite/23_containers/forward_list/48101-2_neg.cc
! e14b7653f40437ebc3d3c33d10e1b021  libstdc++-v3/testsuite/23_containers/forward_list/48101-3_neg.cc
! 5aac40e4edc6404002166049ec53abb1  libstdc++-v3/testsuite/23_containers/forward_list/48101_neg.cc
! 4b7e56c38c70b549dcb4d1abd552be2f  libstdc++-v3/testsuite/23_containers/forward_list/92124.cc
! 1adef73aa977701765bdcd008a45551a  libstdc++-v3/testsuite/23_containers/forward_list/allocator/copy.cc
! fe1f11dd3fc5221ef07621fb36e42fff  libstdc++-v3/testsuite/23_containers/forward_list/allocator/copy_assign.cc
! 1891c529d36bd22b691b53caf3aec4e5  libstdc++-v3/testsuite/23_containers/forward_list/allocator/default_init.cc
! bfb5e300b139601f2207fc6fdb579133  libstdc++-v3/testsuite/23_containers/forward_list/allocator/ext_ptr.cc
! 9a69cd502231363bc87b9a303e2a0ea6  libstdc++-v3/testsuite/23_containers/forward_list/allocator/minimal.cc
! 46fc8d23448b7226e2e28bb0c17cce73  libstdc++-v3/testsuite/23_containers/forward_list/allocator/move.cc
! dcee5e3dd7ae41d09b4c790140aa069e  libstdc++-v3/testsuite/23_containers/forward_list/allocator/move_assign.cc
! 718cf0258538162fbfe4dba26821b880  libstdc++-v3/testsuite/23_containers/forward_list/allocator/noexcept.cc
! 4a77559b88bd7d2011486ba18f22b5f8  libstdc++-v3/testsuite/23_containers/forward_list/allocator/swap.cc
! 747a6f4c87e19c03af1b9a84769e0282  libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc
! 86f03db00edc2f97b3306d30b99eb328  libstdc++-v3/testsuite/23_containers/forward_list/capacity/resize_size.cc
! f2a4aec6fdbc3e2c0a10822d844fecda  libstdc++-v3/testsuite/23_containers/forward_list/cmp_c++20.cc
! 25e31bb20c3597b57a5b9792a87ef418  libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc
! 4db2a77852701870abc90718e478da2e  libstdc++-v3/testsuite/23_containers/forward_list/cons/1.cc
! 581b5e48dd59d1507394c20bf0e9d972  libstdc++-v3/testsuite/23_containers/forward_list/cons/10.cc
! ea0efc71bcd91ec0094c94db3b63724d  libstdc++-v3/testsuite/23_containers/forward_list/cons/11.cc
! 2e4adfe606f877f827c0f920901b3cb7  libstdc++-v3/testsuite/23_containers/forward_list/cons/12.cc
! a50ba0459904028620065119ac4c5962  libstdc++-v3/testsuite/23_containers/forward_list/cons/13.cc
! 07036af6e50332204d30f8d16b72603c  libstdc++-v3/testsuite/23_containers/forward_list/cons/14.cc
! 16481a83449f576f7749192f36f84164  libstdc++-v3/testsuite/23_containers/forward_list/cons/2.cc
! be281bc97b6138a2262bcdac602a4eb1  libstdc++-v3/testsuite/23_containers/forward_list/cons/3.cc
! a286a0473ab733554ddd6a95de858a61  libstdc++-v3/testsuite/23_containers/forward_list/cons/4.cc
! 2c4806aff2cb91e6182da9b3b2c13608  libstdc++-v3/testsuite/23_containers/forward_list/cons/5.cc
! 8354804f937be2829045cfc1bf5548d6  libstdc++-v3/testsuite/23_containers/forward_list/cons/6.cc
! 8dbd0fc49f6bc66aff2492578ec76dd0  libstdc++-v3/testsuite/23_containers/forward_list/cons/7.cc
! 08d079258055ee6eadb97f356f04604f  libstdc++-v3/testsuite/23_containers/forward_list/cons/8.cc
! 9b57aba6f754f47803b254192a5fab2f  libstdc++-v3/testsuite/23_containers/forward_list/cons/87809.cc
! 0f7675761955eab72ffda0d252cd25fc  libstdc++-v3/testsuite/23_containers/forward_list/cons/9.cc
! 272e88d15b5c9642e9a664f249407064  libstdc++-v3/testsuite/23_containers/forward_list/cons/cons_size.cc
! 91d9c178ec7d510d81a5c7b538047601  libstdc++-v3/testsuite/23_containers/forward_list/cons/deduction.cc
! 926f23ac144367b77b601454f9010ffd  libstdc++-v3/testsuite/23_containers/forward_list/cons/moveable.cc
! 99cb5ddd45e96bb7ebc62a4923c4ad4f  libstdc++-v3/testsuite/23_containers/forward_list/cons/noexcept_move_construct.cc
! c77871dd15acb504cef6c33836e471ae  libstdc++-v3/testsuite/23_containers/forward_list/cons/self_move.cc
! cf6cedae5c4b12dfada0354f8e86c35c  libstdc++-v3/testsuite/23_containers/forward_list/debug/60499.cc
! 30425d3b7ccd2a227468529cf86bf888  libstdc++-v3/testsuite/23_containers/forward_list/debug/90102.cc
! 13542a635adc3aa5f52dcbcd416d5160  libstdc++-v3/testsuite/23_containers/forward_list/debug/clear.cc
! d7275a2851690c7430f7f6127f59d88c  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct1_neg.cc
! 466c6c7e0cd03816e85c56a7fb471e9e  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct2_neg.cc
! 41f03c4f307b5955961192ac7c13eb70  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct3_neg.cc
! b3dca3a2dac1896e1aa2d9f72392bb8f  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct4_neg.cc
! bdb29a71676a7895cd820014b6995427  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after1_neg.cc
! 1db860c75f268ce28b30870bb6745a75  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after2_neg.cc
! 8030d56bdce608b86fbfbd91982d93a7  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after3_neg.cc
! 078a1eabb652126a5d728793fd3e28ef  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after4_neg.cc
! 8c077c6096cbcdcef48b0ae6a49b8621  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after5_neg.cc
! 4aa0bdb7c67a445013916dafa31a1beb  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after6_neg.cc
! 1bf8c7fccc806cd4fd65394142a4b56d  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after7_neg.cc
! ad9109c024f0266710651d12dad7f35b  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after8_neg.cc
! d790504309b2890f142a83591c7a6723  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after9_neg.cc
! d4819f6669c19632c555eab1ca85c8d5  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after1_neg.cc
! a816feeb6cfbcc859d14c9fa13026873  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after2_neg.cc
! 8226f87750c417f9582767fc07010589  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after3_neg.cc
! 64ac0145a3f5a4bbf041edce87c3eff4  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after4_neg.cc
! ad1bccee687ffa4368decdbc1f0a34e4  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_assign_neg.cc
! a92b559c08ab8bfc8f55f7287f54647d  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_constructor.cc
! eac18a3bc627cdda2b645518997db9f8  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_neg.cc
! dd228c7148b3d1b8eb38871692dbba8a  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after.cc
! 060501058fa375fade8985b13417559b  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after1_neg.cc
! 51893b0ea32b0cb1f42626880b0dcfc6  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after2_neg.cc
! 5d80b2b1bc4bcf3b1dffee8209a2efbb  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after3_neg.cc
! 1ed9874fd1acc174866ee48d792bc588  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after4_neg.cc
! 1df3954449a0f40d52af876659253305  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after5_neg.cc
! a84273593d603daa464a8cebd69797e7  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after6_neg.cc
! e188e3e136da6b1b76fd5b9941afd63b  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after7_neg.cc
! da864c29eb5161d50dad3dd69b7136fa  libstdc++-v3/testsuite/23_containers/forward_list/debug/swap.cc
! c29d55ded9ee57cf71999cbd35085a0f  libstdc++-v3/testsuite/23_containers/forward_list/erasure.cc
! 6c748dc21648ad0525cff8007fa19d4d  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/1.cc
! c43703a47497de527ad141691ad45047  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/2.cc
! e4e0b18ebc47b0ca1198555f3cfebbb2  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/3.cc
! 03179eb6a900eee9738c78620738f52d  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/4.cc
! ee0ef131b9b98516f397a3bfd954abfc  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/5.cc
! 1649046ce335ff0fa97d1ab3200296ac  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/6.cc
! a3b6286b3b05a4ebb8e5e463411037e4  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/92878_92947.cc
! 7ddd892d2604eb9789d35adfa0452336  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/addressof.cc
! bb8f786dbc6e9451ba9393b8ac536f27  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc
! e932d132a312eca22cfc0b32ed0fd67b  libstdc++-v3/testsuite/23_containers/forward_list/operations/1.cc
! 26b72626c5fbf82fab638353c35667de  libstdc++-v3/testsuite/23_containers/forward_list/operations/2.cc
! ea035fd1703043173c556b707d860944  libstdc++-v3/testsuite/23_containers/forward_list/operations/3.cc
! 3b3777771a8b4b7be9c037c058032a78  libstdc++-v3/testsuite/23_containers/forward_list/operations/4.cc
! 9eb8af5ee98d938db7ff497882ee01d1  libstdc++-v3/testsuite/23_containers/forward_list/operations/5.cc
! 29bb6fda74b943b2a3ccb12f6f5ce174  libstdc++-v3/testsuite/23_containers/forward_list/operations/6.cc
! 4a1d935a5b4ed56e471a36148934047a  libstdc++-v3/testsuite/23_containers/forward_list/operations/7.cc
! c64716f53aebf514c78d3418ea4238f0  libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc
! 3e38365bc364038126ca0bf9ba41e0a9  libstdc++-v3/testsuite/23_containers/forward_list/operations/91620.cc
! ed1c990c0651d29ea22162cfd4492705  libstdc++-v3/testsuite/23_containers/forward_list/operations/remove_cxx20_return.cc
! 82dae48024b8b4efba3e01ab0e22b17d  libstdc++-v3/testsuite/23_containers/forward_list/operations/remove_freed.cc
! 34cd2f1d3b48d7452c36ff47bc070ca8  libstdc++-v3/testsuite/23_containers/forward_list/operations/unique_cxx20_return.cc
! 83817618a77e0f5c9808343894ce1ece  libstdc++-v3/testsuite/23_containers/forward_list/pmr_typedefs.cc
! f2deb0890a3f74c93a39da04d5e27026  libstdc++-v3/testsuite/23_containers/forward_list/pmr_typedefs_debug.cc
! 58886117518898dfe7424e83c80225f2  libstdc++-v3/testsuite/23_containers/forward_list/range_access.cc
! 50260bb1948e53ea37191a47b446b405  libstdc++-v3/testsuite/23_containers/forward_list/requirements/citerators.cc
! 64547249778c267abc8dabc03520f462  libstdc++-v3/testsuite/23_containers/forward_list/requirements/do_the_right_thing.cc
! 2ed4b1316ec11898d95adc2b883be0c8  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc
! 6834fbfff7238877435dca85241e982e  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor.cc
! 68a532ccc6a84043c75cea42432ff280  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc
! 84b1b7468bb5085367859c1b361c2066  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc
! 75973f6e1c51a1b7c0a9be805b7c01a8  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc
! 521927f1840357d8dbd3929823952555  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/basic.cc
! 678734cd499f712c65cdc6cbe8bf0c49  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/generation_prohibited.cc
! 2c60d62ff8ec381fa7a4ec616ed5e352  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/propagation_consistent.cc
! 7737d76ac742a639d6278684e7d21420  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/1.cc
! 1569459c2c2a598fb37d94f0355c0415  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/3.cc
! a65a3939e9446d8db0a461b0601c24da  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/4.cc
! 4baf7e598a6b7ddd322e14070513b9cb  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/5.cc
! fb4bf9a8d0c4967f1d2eaf12dd2554fd  libstdc++-v3/testsuite/23_containers/forward_list/requirements/typedefs.cc
! 1996b67e5722c1740d9eec227f48a31a  libstdc++-v3/testsuite/23_containers/forward_list/types/1.cc
! 65ef5d45e0666a688af890c11eca5fbe  libstdc++-v3/testsuite/23_containers/headers/array/std_c++0x_neg.cc
! e6e3363f0e3a78768c6013e4882a3d40  libstdc++-v3/testsuite/23_containers/headers/bitset/synopsis.cc
! fa6d63f1d2222e0839870eb310d1e951  libstdc++-v3/testsuite/23_containers/headers/deque/synopsis.cc
! 94711f4197c65da59783842f40a29013  libstdc++-v3/testsuite/23_containers/headers/forward_list/synopsis.cc
! 5b77d2ca53398076973eb00efdec8fd7  libstdc++-v3/testsuite/23_containers/headers/list/synopsis.cc
! df9fce838f1adc185b0b49f7f68e572c  libstdc++-v3/testsuite/23_containers/headers/map/synopsis.cc
! 63c366011a21756af92f48464c38f7b3  libstdc++-v3/testsuite/23_containers/headers/queue/synopsis.cc
! 5f2cc2bbc79d7055ca6d3d2f31efcab7  libstdc++-v3/testsuite/23_containers/headers/set/synopsis.cc
! b14916aa0f07371033d85cd93ca20d84  libstdc++-v3/testsuite/23_containers/headers/stack/synopsis.cc
! cdd9d9e20ff558989422d32f9b4cc31c  libstdc++-v3/testsuite/23_containers/headers/tuple/std_c++0x_neg.cc
! 10611e970e424cbf6b558c8470eca2c0  libstdc++-v3/testsuite/23_containers/headers/tuple/types_std_c++0x.cc
! 44fc48ca720fed03c9d07c44aeff548b  libstdc++-v3/testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc
! b86ba236be01f0387b4b239153a32ab2  libstdc++-v3/testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc
! 39240a2b706c12bdb54d58bdace339e6  libstdc++-v3/testsuite/23_containers/headers/vector/synopsis.cc
! 43f4f698f31e0a4a95e2cc95e8881f10  libstdc++-v3/testsuite/23_containers/list/14340.cc
! 9a2d2ebbadcb27112ea2d5e6d90b0df4  libstdc++-v3/testsuite/23_containers/list/18604.cc
! a2481c606e73ca95cecd64ef1274f784  libstdc++-v3/testsuite/23_containers/list/23781_neg.cc
! d3a926cb0d210427978dc7c0b804ffc5  libstdc++-v3/testsuite/23_containers/list/48101-2_neg.cc
! 2bf54e112397c8e897622beea4ca3557  libstdc++-v3/testsuite/23_containers/list/48101-3_neg.cc
! e2b496aa89288d633de62f88732489fa  libstdc++-v3/testsuite/23_containers/list/48101_neg.cc
! f5ec0a0da378e7f6663cedcceda9cf4b  libstdc++-v3/testsuite/23_containers/list/58764.cc
! 8797cf83d3686dd068208150e723b5f2  libstdc++-v3/testsuite/23_containers/list/61347.cc
! fb3268278375d30190ac8078a8156384  libstdc++-v3/testsuite/23_containers/list/68222_neg.cc
! ace73e9f1431e80ae7b1dd906ad6a9f6  libstdc++-v3/testsuite/23_containers/list/92124.cc
! 5bfd2a976a20d1953113a9bf2a220a60  libstdc++-v3/testsuite/23_containers/list/allocator/copy.cc
! 707a4640467890e76359e3b74f44e34e  libstdc++-v3/testsuite/23_containers/list/allocator/copy_assign.cc
! c5c2633c7e4d240dc80f492d93886d11  libstdc++-v3/testsuite/23_containers/list/allocator/default_init.cc
! 4bc8a4ffe621fcfeeb01f726a978dfc0  libstdc++-v3/testsuite/23_containers/list/allocator/minimal.cc
! 73eba2fbbad8596548442a49ddeb9065  libstdc++-v3/testsuite/23_containers/list/allocator/move.cc
! ca59dabdbf7ccb6370fbceed7659fbf5  libstdc++-v3/testsuite/23_containers/list/allocator/move_assign.cc
! 41020714a8941f7e3c5a057d39858929  libstdc++-v3/testsuite/23_containers/list/allocator/noexcept.cc
! 4757bd50a586733b24a259bea0ae9148  libstdc++-v3/testsuite/23_containers/list/allocator/swap.cc
! 8f146a56e28816a2b69509020eea7675  libstdc++-v3/testsuite/23_containers/list/capacity/1.cc
! 124b11eef2c6d64631dfacaa2bf92ed9  libstdc++-v3/testsuite/23_containers/list/capacity/1.h
! f39983d5ac8f71725656b8814af00bbc  libstdc++-v3/testsuite/23_containers/list/capacity/29134.cc
! a3069d2a2b9145201d3ee8a946218fb7  libstdc++-v3/testsuite/23_containers/list/capacity/resize_size.cc
! ffba54c67be5c4d3ff926ac46d566aaa  libstdc++-v3/testsuite/23_containers/list/check_construct_destroy.cc
! 33f653c660f7b51327c8628c9f6adfbf  libstdc++-v3/testsuite/23_containers/list/check_construct_destroy.h
! d250750617b3f07a0700df537ceb97df  libstdc++-v3/testsuite/23_containers/list/cmp_c++20.cc
! 0b26edcbacd226d55708f688361758b8  libstdc++-v3/testsuite/23_containers/list/cons/1.cc
! 768b2cb3fbdce182599f7864b7cb17a3  libstdc++-v3/testsuite/23_containers/list/cons/1.h
! c1eaf8cfd9fdcd490f943b4cab23c626  libstdc++-v3/testsuite/23_containers/list/cons/2.cc
! 5cd71e45088fb645dea4cc24c397a8d3  libstdc++-v3/testsuite/23_containers/list/cons/2.h
! 1c2eec2467c052a2d6ed428828e7978e  libstdc++-v3/testsuite/23_containers/list/cons/3.cc
! 1f37c4ff47fdf24c11959d1e31767a2a  libstdc++-v3/testsuite/23_containers/list/cons/3.h
! 5ddd9ba135e5e10a8aebe0db2e6d0603  libstdc++-v3/testsuite/23_containers/list/cons/4.cc
! a77708aefe74b980e21cdad1fc130735  libstdc++-v3/testsuite/23_containers/list/cons/4.h
! 6c3ea675098541703f18adf7856659f3  libstdc++-v3/testsuite/23_containers/list/cons/5.cc
! 937daee12924c7b205d7c9fc279ad924  libstdc++-v3/testsuite/23_containers/list/cons/5.h
! fb230a43b62a66f86df67f1c73fa9efd  libstdc++-v3/testsuite/23_containers/list/cons/55979.cc
! 537f01be7869cebac7e7f7091da65e0e  libstdc++-v3/testsuite/23_containers/list/cons/6.cc
! bec0f2c2814a1029b2748a2114c0d2eb  libstdc++-v3/testsuite/23_containers/list/cons/6.h
! 2282fe66772c3b95988b88b2f079524f  libstdc++-v3/testsuite/23_containers/list/cons/7.cc
! 46d818b116268a0c167478f519312c23  libstdc++-v3/testsuite/23_containers/list/cons/7.h
! 88efd32838fdd5bdc40322165e98d734  libstdc++-v3/testsuite/23_containers/list/cons/8.cc
! a161b2c48769b474171911b987acff5a  libstdc++-v3/testsuite/23_containers/list/cons/8.h
! b301bb362715c40e2330403c8e6ba0d8  libstdc++-v3/testsuite/23_containers/list/cons/87809.cc
! 2e2263130ae4792df53a59ba1a72eec1  libstdc++-v3/testsuite/23_containers/list/cons/9.cc
! bc4626c103548f257ef7c87a5d7754bb  libstdc++-v3/testsuite/23_containers/list/cons/9.h
! 4bc9fa6d64501c87fb209aa700e0f677  libstdc++-v3/testsuite/23_containers/list/cons/clear_allocator.cc
! f32a2317db8fc63347246d9c4ce2c932  libstdc++-v3/testsuite/23_containers/list/cons/clear_allocator.h
! 3cd8a8f24c42106d44e4b1a4239fa1ef  libstdc++-v3/testsuite/23_containers/list/cons/cons_size.cc
! 5eb4a9fe243496b70378c8f7a60e0c3c  libstdc++-v3/testsuite/23_containers/list/cons/deduction.cc
! 39d58e858dc9731f9267550152b7b206  libstdc++-v3/testsuite/23_containers/list/cons/moveable.cc
! 36c55f06260c073197f6efc6e2e9de53  libstdc++-v3/testsuite/23_containers/list/cons/moveable.h
! 2a03031ac92579b6c49326cbb7f4bb79  libstdc++-v3/testsuite/23_containers/list/cons/noexcept_move_construct.cc
! 01a222f4e66251e0d487cbd8aabe36f9  libstdc++-v3/testsuite/23_containers/list/cons/self_move.cc
! 0a3ff1f5f8ba40ee312f3c40f2613569  libstdc++-v3/testsuite/23_containers/list/debug/90102.cc
! d694217d89c21e062493a76083f00117  libstdc++-v3/testsuite/23_containers/list/debug/assign1_neg.cc
! fc60a9e3d26105001e843dfcc396f381  libstdc++-v3/testsuite/23_containers/list/debug/assign2_neg.cc
! 7a70cc8b1d20bb907f61d169dd2a6e28  libstdc++-v3/testsuite/23_containers/list/debug/assign3_neg.cc
! a54ff86f6e5dd1365d2cdd9e05e4aab3  libstdc++-v3/testsuite/23_containers/list/debug/assign4_neg.cc
! 2e598b3a2c41284ccbe437fe5e16d83e  libstdc++-v3/testsuite/23_containers/list/debug/construct1_neg.cc
! 58b7c4044248f67a4f0612678d2830d0  libstdc++-v3/testsuite/23_containers/list/debug/construct2_neg.cc
! c9794ba200e7997f0142915a863d99b4  libstdc++-v3/testsuite/23_containers/list/debug/construct3_neg.cc
! 0a4b49bdf31b6367a1d1b6e55baa8b3e  libstdc++-v3/testsuite/23_containers/list/debug/construct4_neg.cc
! 1bcb2b7a416c93d6dc6fb21f50b11c71  libstdc++-v3/testsuite/23_containers/list/debug/insert1_neg.cc
! dfaf7182587265e8e85a935457fb24fd  libstdc++-v3/testsuite/23_containers/list/debug/insert2_neg.cc
! 70906ab6d474c2773fd3ee76e6eda060  libstdc++-v3/testsuite/23_containers/list/debug/insert3_neg.cc
! 99594aec8aacaa90f672b18a63efc68f  libstdc++-v3/testsuite/23_containers/list/debug/insert4_neg.cc
! 20847cd19287333127d816c1208b9cdf  libstdc++-v3/testsuite/23_containers/list/debug/insert5_neg.cc
! 181ce3a3f86e82749e46c208d75f9b6f  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/1.cc
! 164de611013da68f541bc72470d7ae4a  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/2.cc
! bca70cb2cdc417780172f3a6e9f18570  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/3.cc
! 379c03719021b34f8f0ba0dfbeb06e37  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/4.cc
! 083f453a5cc6cd0b6cecfbf84150daa4  libstdc++-v3/testsuite/23_containers/list/erasure.cc
! 21715d76b24f03219a8f98405a59bb96  libstdc++-v3/testsuite/23_containers/list/init-list.cc
! b351a1d752944980878d175c2f7a0f4a  libstdc++-v3/testsuite/23_containers/list/init-list.h
! 75c6c9272d8d8a8f03facae951a08e70  libstdc++-v3/testsuite/23_containers/list/modifiers/1.cc
! c23796abb59434ee98808240a6c6ef6e  libstdc++-v3/testsuite/23_containers/list/modifiers/1.h
! dd36bd930ad3cc624ea0499beca1cfbc  libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc
! da3a6deacac36bb8ecd85605b7714800  libstdc++-v3/testsuite/23_containers/list/modifiers/2.cc
! a854242fc1c023ffb7a66b368dd62a64  libstdc++-v3/testsuite/23_containers/list/modifiers/2.h
! 4b3a210ffe320d54aa7c35fe3a137a39  libstdc++-v3/testsuite/23_containers/list/modifiers/3.cc
! 7c2ae32885327f9a0971f15008cda79c  libstdc++-v3/testsuite/23_containers/list/modifiers/3.h
! 59da91b7b944fd8a31986bfb85c3ec1a  libstdc++-v3/testsuite/23_containers/list/modifiers/addressof.cc
! ee0ed7e93544eb6c66c57e5492425e77  libstdc++-v3/testsuite/23_containers/list/modifiers/assign/1.cc
! 15684f500c7ae3afff41d6618c925283  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/52799.cc
! ebe5c7ead9b7e719333121b5dd2dfbaf  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/92878_92947.cc
! 42421bf1ccd6e864319cc8315e06efb5  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/const_iterator.cc
! d780992e6a50de33c20e1c9b0a581587  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc
! 04196a7acebf9308544557322d47d7c0  libstdc++-v3/testsuite/23_containers/list/modifiers/erase/54577.cc
! 73946a54ea45c2365ad995dcc9cffa1e  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.cc
! ee7bd93bc463108ad1100f389e895801  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.h
! b5eacb261751f1b90344ce48c5835ff5  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/const_iterator.cc
! 4a5910d697b9adcd6e231273a147bfb4  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/1.cc
! 25a40f789fbec8865e35d8101becfdcb  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/1.h
! b2651c980bbb768aa5425d721ae9da36  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/2.cc
! 19fe706fbb4b90c0c118e37ecb7da56d  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/2.h
! b08cf0a0a06e45a24a0a8658841ff6eb  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/3.cc
! 5c1f39594d85d94a2355453873c7eb1f  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/3.h
! c2f6fcdd3b77bdb1c4b1a50c9c0b6815  libstdc++-v3/testsuite/23_containers/list/operations/1.cc
! d0e2ac1926587c7c9eab0270407c0cdb  libstdc++-v3/testsuite/23_containers/list/operations/1.h
! fed69104010f19f63ce58c7b4afb2c86  libstdc++-v3/testsuite/23_containers/list/operations/2.cc
! f40cf5d2f1076cb9f65536f3cd497274  libstdc++-v3/testsuite/23_containers/list/operations/2.h
! 9c9f7df8c770051e2514ad24101cfbbe  libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc
! caf00eb589de131806a0932f60e49e96  libstdc++-v3/testsuite/23_containers/list/operations/3.cc
! fe2d4e7e468f843f524e0e9a1a439ad7  libstdc++-v3/testsuite/23_containers/list/operations/3.h
! e7524d557b12c2cf3f8c85959895af2f  libstdc++-v3/testsuite/23_containers/list/operations/35969.cc
! 6c6421af4953293ba99ce48df657f890  libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc
! fcc3fe0e77c8ec13cd344aaf176ef184  libstdc++-v3/testsuite/23_containers/list/operations/4.cc
! 448278b3b821614b48518fbaa9e5da20  libstdc++-v3/testsuite/23_containers/list/operations/4.h
! 0222a00e748d2c50cc5cfb994fe2ee40  libstdc++-v3/testsuite/23_containers/list/operations/42352.cc
! 475d2dc5e6dcae61ce087ddfa33ed7a0  libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
! ff88c100c4488d6f7fe238a2c3b1594c  libstdc++-v3/testsuite/23_containers/list/operations/80034.cc
! 8023ad529f75d33be3e89a05b7284907  libstdc++-v3/testsuite/23_containers/list/operations/91620.cc
! 337364fe2640ed2e1cb06531c5a3ca5b  libstdc++-v3/testsuite/23_containers/list/operations/remove_cxx20_return.cc
! e5d6e3b75e3181c734c5a042b960b7fd  libstdc++-v3/testsuite/23_containers/list/operations/splice/const_iterator.cc
! fd2a08b6e18f44430871ce27a78f45da  libstdc++-v3/testsuite/23_containers/list/operations/unique_cxx20_return.cc
! 537b75b464e3ae06ac1fddc3dfa10851  libstdc++-v3/testsuite/23_containers/list/pmr_typedefs.cc
! f643ca264fdd10d78f37e92ae1092a1f  libstdc++-v3/testsuite/23_containers/list/pmr_typedefs_debug.cc
! a17c26e42ffa06c6f5ecf96920a6fdec  libstdc++-v3/testsuite/23_containers/list/pthread1.cc
! 2d788d77c34ba7ab92793a5c80f7735b  libstdc++-v3/testsuite/23_containers/list/pthread5.cc
! 21d430c5bdd24554f2965270632c5260  libstdc++-v3/testsuite/23_containers/list/range_access.cc
! d7185e9391025be00d7e1f0a64c3d363  libstdc++-v3/testsuite/23_containers/list/requirements/citerators.cc
! 8190ff4e54452e208b400b39c3085998  libstdc++-v3/testsuite/23_containers/list/requirements/do_the_right_thing.cc
! b3bb44d058f69cbc6253e300bca9cc32  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
! 384193c0eee10bce00cf15012ce4fe4d  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor.cc
! 0735e6112f57d162ca0fb0f4015f7732  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
! eb642dc51beef0bd0ca4fdc966546a72  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
! d184c457663a24c43657b15d3f34eb1e  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
! e1897421d47ae79df732793eaf8a2e08  libstdc++-v3/testsuite/23_containers/list/requirements/exception/basic.cc
! bcc13ad53ada1eef135188c613642cb5  libstdc++-v3/testsuite/23_containers/list/requirements/exception/generation_prohibited.cc
! ad46ed9e6386a85d97546c7626d3676b  libstdc++-v3/testsuite/23_containers/list/requirements/exception/propagation_consistent.cc
! dc2f2ed3ef9711357df18684b4eb6b7a  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/1.cc
! 50f0f490c6e4c0db6ebcfc1d555be564  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/2.cc
! 71e3430194c684111eb072e865dad632  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/3.cc
! 3d6e60a663945130e67b1e52639ab062  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/4.cc
! c381ef61003545130531f9d12e48e765  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/5.cc
! 7a695a3c9661796a161f3c0185ef08d7  libstdc++-v3/testsuite/23_containers/list/requirements/partial_specialization/1.cc
! 6848ba356dd43b5776adae4993107c99  libstdc++-v3/testsuite/23_containers/list/requirements/typedefs.cc
! fe64d91e8f821ce83f40268d8f669b3b  libstdc++-v3/testsuite/23_containers/list/types/1.cc
! b3d4b64959e32751a584025bfcc95812  libstdc++-v3/testsuite/23_containers/map/14340.cc
! ea0e4ed80a250e8f0d47bc8785a114f1  libstdc++-v3/testsuite/23_containers/map/18604.cc
! a9cfdd558fa441b09af3cbdf0c287b91  libstdc++-v3/testsuite/23_containers/map/23781_neg.cc
! 0851b3465e716fc568154531e551503a  libstdc++-v3/testsuite/23_containers/map/48101-2_neg.cc
! 01ee400dccea0c15b62cf152edb5086f  libstdc++-v3/testsuite/23_containers/map/48101-3_neg.cc
! 6450b2ed9665db5d20d9a293e893cb01  libstdc++-v3/testsuite/23_containers/map/48101_neg.cc
! 95bd1851c950ad65b34c05298f7e2753  libstdc++-v3/testsuite/23_containers/map/56613.cc
! 652203e40e8fdbbf603f28c953c9d38e  libstdc++-v3/testsuite/23_containers/map/58764.cc
! 3f315458c103641f9aa9556728c960b9  libstdc++-v3/testsuite/23_containers/map/59872.cc
! 6ff4012ee675cfdc90fd9e3045ac1ad2  libstdc++-v3/testsuite/23_containers/map/77334.cc
! ce0d1f559cfd762160b5364727f7a6ce  libstdc++-v3/testsuite/23_containers/map/92124.cc
! bbfee5262fbd858065be2e2b313f89ff  libstdc++-v3/testsuite/23_containers/map/allocator/copy.cc
! 559911e032094d786841b808528375ad  libstdc++-v3/testsuite/23_containers/map/allocator/copy_assign.cc
! f20722bb14b72ff7eead44b4b9459875  libstdc++-v3/testsuite/23_containers/map/allocator/default_init.cc
! 1367840a2e1f24a66925067416479be8  libstdc++-v3/testsuite/23_containers/map/allocator/init-list.cc
! 58d5bb66309e3f1b5ba7e26083547e03  libstdc++-v3/testsuite/23_containers/map/allocator/minimal.cc
! 4171a0a215116ede3a133a96ce344960  libstdc++-v3/testsuite/23_containers/map/allocator/move.cc
! b098552f6a68b66c8f97debe1d202cee  libstdc++-v3/testsuite/23_containers/map/allocator/move_assign.cc
! 3c170d2757a8e669d816fddbe1092a97  libstdc++-v3/testsuite/23_containers/map/allocator/move_cons.cc
! 1ddd5b7d6ae939ae39b4a65729a9525f  libstdc++-v3/testsuite/23_containers/map/allocator/noexcept.cc
! 0defa0cdd60a41e995eafbb93d194bbe  libstdc++-v3/testsuite/23_containers/map/allocator/swap.cc
! 357711804fc62efa30d2159f97de6cd2  libstdc++-v3/testsuite/23_containers/map/capacity/29134.cc
  529756ae90a32204608c2c98fd51f6e7  libstdc++-v3/testsuite/23_containers/map/cons/deduction.cc
! 3f0a619c5be9c669fa2d96fd9c7b2184  libstdc++-v3/testsuite/23_containers/map/cons/moveable.cc
! b6dfd05178c106513ee4389e7a90cf8c  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_default_construct.cc
! 987917309405a5705e3e3f57498a3de6  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_move_construct.cc
! 99e0f46ccf7cf7cac8879fc4ce35c897  libstdc++-v3/testsuite/23_containers/map/debug/60499.cc
! 070b0ec84ac3dc4829ccfb1fbeea6fb8  libstdc++-v3/testsuite/23_containers/map/debug/90102.cc
! 4dbe7de083acf90d303815f230abb2e0  libstdc++-v3/testsuite/23_containers/map/debug/construct1_neg.cc
! 40bdad179d20ffe21499cb11cd73a397  libstdc++-v3/testsuite/23_containers/map/debug/construct2_neg.cc
! a5a6f45e9cd0a06b5934df6ca38f3fe8  libstdc++-v3/testsuite/23_containers/map/debug/construct3_neg.cc
! 1a137817043c4a1a6a536643f62c243a  libstdc++-v3/testsuite/23_containers/map/debug/construct4_neg.cc
! 61d1506803edc9449880262b9d2b66bf  libstdc++-v3/testsuite/23_containers/map/debug/construct5_neg.cc
! 3b2037b33ea5b2c7e045a1a316fa7a5d  libstdc++-v3/testsuite/23_containers/map/debug/insert1_neg.cc
! 1aeaf4bebd5e700c04c8c7c04157c104  libstdc++-v3/testsuite/23_containers/map/debug/insert2_neg.cc
! bc3ea613dffa661ef8afc7579ced4d3a  libstdc++-v3/testsuite/23_containers/map/debug/insert3_neg.cc
! 52e7be45e9c133e2ed10b54f72f1ba36  libstdc++-v3/testsuite/23_containers/map/debug/insert4_neg.cc
! 19a1e058a07bbe679db6bbeef1d565b6  libstdc++-v3/testsuite/23_containers/map/debug/invalidation/1.cc
! b7bbac640d776065aee5f4f37a8985c2  libstdc++-v3/testsuite/23_containers/map/debug/invalidation/2.cc
! 18f03fa4514058985476fa17c9afeb1b  libstdc++-v3/testsuite/23_containers/map/debug/move_assign_neg.cc
! d01d8791ceddb9f305c71b983d3698be  libstdc++-v3/testsuite/23_containers/map/debug/move_neg.cc
! ffe5ad9eb2000cfc6d725352fbf211a5  libstdc++-v3/testsuite/23_containers/map/element_access/1.cc
! 4f6e5e4cdce638423aca161888b2fb4e  libstdc++-v3/testsuite/23_containers/map/element_access/2.cc
! 898e34c1eafc301748503cf17b40b412  libstdc++-v3/testsuite/23_containers/map/element_access/39901.cc
! 0ff82243d8a024a7601413f95d2cfc6b  libstdc++-v3/testsuite/23_containers/map/element_access/46148.cc
! f5bf9ecd9c515ee6ba597129e4d1f495  libstdc++-v3/testsuite/23_containers/map/erasure.cc
! 4dd400653eb2d00c5207552d3361b4fb  libstdc++-v3/testsuite/23_containers/map/init-list.cc
! 89a4b3d424cc011ec45a90f8f13b636f  libstdc++-v3/testsuite/23_containers/map/modifiers/dr130.cc
! 0858a592090660d7ec278ede0ad09fab  libstdc++-v3/testsuite/23_containers/map/modifiers/emplace/1.cc
! e3203ccc490c49997aaf2133585266c8  libstdc++-v3/testsuite/23_containers/map/modifiers/emplace/92878_92947.cc
! 20a3807664e426827aa899a7e74b4038  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/47628.cc
! acf30d2f43703f27d92b83f66569f54a  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc
! cee82d7247dd70b2c812dbb4ee42b9a5  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/abi_tag.cc
! 02d9439143c57d282e1e5d413f8817c1  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/dr130-linkage-check.cc
! 3f4d4ab35affff6dfb3bfd7c4f595e73  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/end_neg.cc
! ad5c461b3a507eafee3f8b0edbd31fbc  libstdc++-v3/testsuite/23_containers/map/modifiers/extract.cc
! b9b50aedc996f34e4ceeafed6cc0fbd2  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/1.cc
! f5b3692c435a07abbdaddb3bdb7d4185  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/16813.cc
! 00e65f7786cea0cebd91f6037ee11128  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/2.cc
! 96e79bfd0b392a2b0587d3dcc03c422d  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/3.cc
! 1b32f1c0daf7d2e9ead569a2b057ffce  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/4.cc
! 43e2d26a6d3172744a69f7e62385beb6  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/5.cc
! a6bc198c84bb65bd57f2ad60a6669c44  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/78595.cc
! e7b8d8a27ebc7563659140d6527f4846  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/83226.cc
! 29e804507cac6190eac932aa0e152169  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/87194.cc
! 5e60d35c20bf659ea0fcff696750889b  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/dr2354.cc
! 5c37a00e5541dfb7c744f6694678742b  libstdc++-v3/testsuite/23_containers/map/modifiers/insert_or_assign/1.cc
! c55534dc7af0cc3b7fceacd1c3c59d8b  libstdc++-v3/testsuite/23_containers/map/modifiers/merge.cc
! 9e5688a908a076583e4d53f7df90db8a  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/1.cc
! 039cd9f853700fcedf374bf1c8e3e111  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/2.cc
! 528de2dece5fcab0e43cee844512fcc2  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/3.cc
! 5b5bccca14eaf27d710288c13292ccb3  libstdc++-v3/testsuite/23_containers/map/modifiers/try_emplace/1.cc
! 5bfade7988997f9711bdb86ff477a965  libstdc++-v3/testsuite/23_containers/map/operations/1.cc
! c7f5eec8c238ba4e66744baaebfeb4ea  libstdc++-v3/testsuite/23_containers/map/operations/2.cc
! fc59711b0199bd97b0b48fef6ed288b8  libstdc++-v3/testsuite/23_containers/map/operations/31440.cc
! fd615451e4f76cb52bfd9e922225646b  libstdc++-v3/testsuite/23_containers/map/operations/contains.cc
! 5011624f560368f467b8f5a6678216ff  libstdc++-v3/testsuite/23_containers/map/operations/count.cc
! 6fd9a6aaf9ac04ec041a24b87de62235  libstdc++-v3/testsuite/23_containers/map/operators/1.cc
! c8cc7697a3f7d42227c89b56a187f63a  libstdc++-v3/testsuite/23_containers/map/operators/1_neg.cc
! 22065bac8ef4291768b9da93547b9af2  libstdc++-v3/testsuite/23_containers/map/operators/2.cc
! 426cbf4c8e5ba1e3061044ea58f92749  libstdc++-v3/testsuite/23_containers/map/operators/cmp_c++20.cc
! 97b11fd9ffb6cc269cd382a4f2f31d5f  libstdc++-v3/testsuite/23_containers/map/pmr_typedefs.cc
! 948dcdeac63fe4f7d8f900eadebb8a86  libstdc++-v3/testsuite/23_containers/map/pmr_typedefs_debug.cc
! f5f251600c32afa2956a5031682a67ee  libstdc++-v3/testsuite/23_containers/map/pthread6.cc
! f44740214a02cba8700ed5b0e815f3b0  libstdc++-v3/testsuite/23_containers/map/range_access.cc
! be0881914454b08377335394aecdd0ef  libstdc++-v3/testsuite/23_containers/map/requirements/citerators.cc
! 536dba34487453725c3c212f48a11c52  libstdc++-v3/testsuite/23_containers/map/requirements/exception/basic.cc
! 53f9c961397f4cf125ffc5df934f3fb3  libstdc++-v3/testsuite/23_containers/map/requirements/exception/generation_prohibited.cc
! 0f174743f45641f8d13bb94c65dadf65  libstdc++-v3/testsuite/23_containers/map/requirements/exception/propagation_consistent.cc
! 5747032d9e0d7f9e6aadc7d3d16080bf  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/1.cc
! 26a26e0dd5054aeddde28a5d0973e8c6  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/2.cc
! 2544ee257afcbfa6950b984f72518273  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/3.cc
! 345bcb7ae088286e35e7883d5bc0618a  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/4.cc
! b9f3acae3b57d2bbe91a2e26ca8dce2b  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/5.cc
! 599c38a4979f4ccca3ede66407a2dcb3  libstdc++-v3/testsuite/23_containers/map/requirements/partial_specialization/1.cc
! 2daad626aea4bfe80567338c6b218c3e  libstdc++-v3/testsuite/23_containers/map/requirements/typedefs.cc
! 6eda861a4e6609a0ba349c68e14b9cc3  libstdc++-v3/testsuite/23_containers/multimap/14340.cc
! 756a509dc019390affb5cf4af84ceb9e  libstdc++-v3/testsuite/23_containers/multimap/23781_neg.cc
! 32bdddd59e8d4fec65feea94bfd0d094  libstdc++-v3/testsuite/23_containers/multimap/48101-2_neg.cc
! 2fe290e66958abdfe4b20913ad9d738a  libstdc++-v3/testsuite/23_containers/multimap/48101-3_neg.cc
! 1e50f85467ccd0284d26a080ab0cd083  libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc
! 9332d1e8b6b5e86206b0d15eefb861a9  libstdc++-v3/testsuite/23_containers/multimap/58764.cc
! 5dcf5bf73681870d3651cb28fa3f2e00  libstdc++-v3/testsuite/23_containers/multimap/allocator/copy.cc
! 677a2a46f953f12991db2a3742aca7c2  libstdc++-v3/testsuite/23_containers/multimap/allocator/copy_assign.cc
! 0723723812efce92c4a502babaea499b  libstdc++-v3/testsuite/23_containers/multimap/allocator/init-list.cc
! 81dc82eb4f7c6a33a40eb2435f62a729  libstdc++-v3/testsuite/23_containers/multimap/allocator/minimal.cc
! 3d85c2d41effd3f27ec86ca756bb1344  libstdc++-v3/testsuite/23_containers/multimap/allocator/move.cc
! a9a3716c2800d2ea1409624ca2f98792  libstdc++-v3/testsuite/23_containers/multimap/allocator/move_assign.cc
! fd4430051544cca087e02558d908c2f7  libstdc++-v3/testsuite/23_containers/multimap/allocator/move_cons.cc
! 5530aa8b58ba732be418bf447fbae3c7  libstdc++-v3/testsuite/23_containers/multimap/allocator/noexcept.cc
! 5c7fff2e50e66ba6a95992e668650076  libstdc++-v3/testsuite/23_containers/multimap/allocator/swap.cc
! 059305798e69806ca6be92cda9a07ec6  libstdc++-v3/testsuite/23_containers/multimap/capacity/29134.cc
  f34b9568e5ff78a9c1f70d5f056c24c7  libstdc++-v3/testsuite/23_containers/multimap/cons/deduction.cc
! 7279408ac2d3845f2aff452c2cebd46d  libstdc++-v3/testsuite/23_containers/multimap/cons/moveable.cc
! 0f6cdac068552d528187f1bf7e36d5ab  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_default_construct.cc
! 352e93645771fe73221eaf2b19544fa8  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_move_construct.cc
! 9ebda5ebeb93647a4d5cd2c71686993f  libstdc++-v3/testsuite/23_containers/multimap/debug/60499.cc
! a08624393897b72351e1d0cf1471fb3a  libstdc++-v3/testsuite/23_containers/multimap/debug/90102.cc
! da854137fdc9cd3b48b7f4317ae476b4  libstdc++-v3/testsuite/23_containers/multimap/debug/construct1_neg.cc
! b2f72fd5d642195852288112254925d5  libstdc++-v3/testsuite/23_containers/multimap/debug/construct2_neg.cc
! 0dc84a62c5a5e38ea0764cc9c6b9a899  libstdc++-v3/testsuite/23_containers/multimap/debug/construct3_neg.cc
! f12085466e8ca832783ff66dfc1beee2  libstdc++-v3/testsuite/23_containers/multimap/debug/construct4_neg.cc
! 135af31e8676065e906916a69b4749a4  libstdc++-v3/testsuite/23_containers/multimap/debug/construct5_neg.cc
! f320ced7ad889ac7f860744165e78367  libstdc++-v3/testsuite/23_containers/multimap/debug/insert1_neg.cc
! a2ebfc3c59758d054a13a89f40a279de  libstdc++-v3/testsuite/23_containers/multimap/debug/insert2_neg.cc
! daa404c48b46883fdbab8282c2f47deb  libstdc++-v3/testsuite/23_containers/multimap/debug/insert3_neg.cc
! 65d8a2f6052b5dbe5349d9782ec715c1  libstdc++-v3/testsuite/23_containers/multimap/debug/insert4_neg.cc
! 4d2d0c435ec3be8c55fcedfee7946a15  libstdc++-v3/testsuite/23_containers/multimap/debug/invalidation/1.cc
! 56a316bf027a0f0ceeab030a22a2e6ee  libstdc++-v3/testsuite/23_containers/multimap/debug/invalidation/2.cc
! 3d191817bb7f0df6af59fc050349c4d5  libstdc++-v3/testsuite/23_containers/multimap/debug/move_assign_neg.cc
! 6ed65f62c246d8247edef2039894d368  libstdc++-v3/testsuite/23_containers/multimap/debug/move_neg.cc
! d0c3f5f2c360da9b5bf268b3e837a238  libstdc++-v3/testsuite/23_containers/multimap/init-list.cc
! 9f6d65c7c3f1c6124593028af225698b  libstdc++-v3/testsuite/23_containers/multimap/modifiers/dr130.cc
! af93ccb8fd2e1bd908a22eeb824aa0b0  libstdc++-v3/testsuite/23_containers/multimap/modifiers/emplace/1.cc
! 71a021d3ee5be585ce395e6b8f1f46dd  libstdc++-v3/testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc
! b86d0983304ac68fc3be4bbb4e05671f  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/47628.cc
! b9a40804093799adc5db48994e1271bc  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc
! cc08d4d3bad465eddbb2285ae6355c09  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/abi_tag.cc
! 064ae979c2a53f9caf15082e7ef4d78b  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/dr130-linkage-check.cc
! 81f4aa4e93ae43fcc8dacc0f14d51204  libstdc++-v3/testsuite/23_containers/multimap/modifiers/extract.cc
! 9f5ff7641d4d1ac2b3b476ca66e4fd89  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/1.cc
! a95f1476dbb5d72c65c06f7618d202c0  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/2.cc
! 3e7040c4267ab3dd17e613642db37822  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/22102.cc
! 7ac76a18a42e5a1fef92d36cabf083cf  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/3.cc
! c921f2301927f51298714ac883483a44  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/4.cc
! ce171f7d52888c7a3b953cd4a94797fa  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/78595.cc
! bc3fba064a932448c6a537a1b8284664  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/87194.cc
! 5051ab16cb9cd9c8b7d57468a7097c61  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/dr2354.cc
! 01781dff4acc8145653d5c71d7e2424f  libstdc++-v3/testsuite/23_containers/multimap/modifiers/merge.cc
! 1525e830d8a1d248d0c6de675c1a2bd8  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/1.cc
! 6012b777273671c8b3f30dfbb4925b06  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/2.cc
! a27c3037c9650280778cb033fce27c05  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/3.cc
! 8986eb5dc083e6db602f3e1fcd67162e  libstdc++-v3/testsuite/23_containers/multimap/operations/1.cc
! dacb16dc58286a4a773808693c2dd2d2  libstdc++-v3/testsuite/23_containers/multimap/operations/2.cc
! b14437087eb0da8bc5ce4cf46dc54b8c  libstdc++-v3/testsuite/23_containers/multimap/operations/contains.cc
! 5fe855f7b8100ce340955216cfbd8a21  libstdc++-v3/testsuite/23_containers/multimap/operations/count.cc
! 9c884300d99fd1b44bc8ab3a1b65944c  libstdc++-v3/testsuite/23_containers/multimap/operators/cmp_c++20.cc
! 48ea0679d534ac1d5acbfc979f117fd5  libstdc++-v3/testsuite/23_containers/multimap/pmr_typedefs.cc
! 249822f9d8f78c76e49a1ca3346e96f0  libstdc++-v3/testsuite/23_containers/multimap/pmr_typedefs_debug.cc
! 09fd75f4efff5ddc7d0f276729a854bb  libstdc++-v3/testsuite/23_containers/multimap/range_access.cc
! 309b86e9f05e12ccf4919712ee340f5f  libstdc++-v3/testsuite/23_containers/multimap/requirements/citerators.cc
! 008d06791b5353d4359a9a22a716755c  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/basic.cc
! 3e8fc4a0cb7a94440046d284f3b65a83  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/generation_prohibited.cc
! 8119ad9c44fc8781fa8f7a61f078cd92  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/propagation_consistent.cc
! 43789fda27b5a37a3bb3d7eca1c4886c  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/1.cc
! 2306d3f4aea847bea4fc9780e5f04a77  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/2.cc
! 32fbff32d9c50067432fd662ce44be51  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/3.cc
! 3e27540d016a6f89561ce0b6d11fbab3  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/4.cc
! 6c8b40c49d3daf4b0a75a409d2ce02d1  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/5.cc
! c47ed3ceea6e048b1775f0fe2ccacb6e  libstdc++-v3/testsuite/23_containers/multimap/requirements/partial_specialization/1.cc
! 6bc4f0fbe05b1b17b89f930d56af50ec  libstdc++-v3/testsuite/23_containers/multimap/requirements/typedefs.cc
! 947228412ba2d4355325f1c5a808ad1d  libstdc++-v3/testsuite/23_containers/multiset/14340.cc
! 09724938d70eb281acb3b3d59cdda964  libstdc++-v3/testsuite/23_containers/multiset/23781_neg.cc
! 7f1d74fe8bd04ce71cf4ebca772c32e6  libstdc++-v3/testsuite/23_containers/multiset/48101-2_neg.cc
! 66508613d0926be09ddf8ffaed67e610  libstdc++-v3/testsuite/23_containers/multiset/48101-3_neg.cc
! 9a2952adfbd6b854279119ebb540563b  libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc
! e11172304436ea41e0bc84faaa3cfdac  libstdc++-v3/testsuite/23_containers/multiset/58764.cc
! 1144cc12d85a6c3e05bf629fbe0abb95  libstdc++-v3/testsuite/23_containers/multiset/allocator/copy.cc
! 5ce5479b9687060d924566d7fcfe4a02  libstdc++-v3/testsuite/23_containers/multiset/allocator/copy_assign.cc
! acdba075ab6eb7c80b362dd04b52165d  libstdc++-v3/testsuite/23_containers/multiset/allocator/init-list.cc
! 62204fc53b5687e97570ee39c2c2ddb4  libstdc++-v3/testsuite/23_containers/multiset/allocator/minimal.cc
! 4bdc6bbf57d24025580351052aac4888  libstdc++-v3/testsuite/23_containers/multiset/allocator/move.cc
! a061133d8a6d26e4fcc4fe7cafa680db  libstdc++-v3/testsuite/23_containers/multiset/allocator/move_assign.cc
! 2f71170abe54de386e7c963413a42e5a  libstdc++-v3/testsuite/23_containers/multiset/allocator/move_cons.cc
! 9ad8ad9082cb3b800c664a5badc8ff7c  libstdc++-v3/testsuite/23_containers/multiset/allocator/noexcept.cc
! 5f278132c7418a83af10128c69cec0ad  libstdc++-v3/testsuite/23_containers/multiset/allocator/swap.cc
! 169fc3f5dfdd87e28c0418f566d9f27d  libstdc++-v3/testsuite/23_containers/multiset/capacity/29134.cc
  a0f00b99adcaf730ba73537486b2a2b3  libstdc++-v3/testsuite/23_containers/multiset/cons/deduction.cc
! 8471a667b502a70913b89fe39b5ed35b  libstdc++-v3/testsuite/23_containers/multiset/cons/moveable.cc
! eaf6a2fdb28db324d0d477fd1f55a17d  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_default_construct.cc
! 855d683992e941da82361710d4b5913a  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_move_construct.cc
! e8cca5d4509afe48ec69099546eec4b7  libstdc++-v3/testsuite/23_containers/multiset/debug/60499.cc
! 54ab17100c158543937ce42d22a917bc  libstdc++-v3/testsuite/23_containers/multiset/debug/90102.cc
! 640a084f85a833662f421178518678e5  libstdc++-v3/testsuite/23_containers/multiset/debug/construct1_neg.cc
! 878e0a116d9174cbeab94e3b513fb171  libstdc++-v3/testsuite/23_containers/multiset/debug/construct2_neg.cc
! 90d04a1fac15a2438b4664a8ec81f50a  libstdc++-v3/testsuite/23_containers/multiset/debug/construct3_neg.cc
! 5345016fae380de3ad9792065bca834a  libstdc++-v3/testsuite/23_containers/multiset/debug/construct4_neg.cc
! 3c82843a9016935475137eb948330291  libstdc++-v3/testsuite/23_containers/multiset/debug/construct5_neg.cc
! 99957c3233db9435cd5b9eaddcd9ea7d  libstdc++-v3/testsuite/23_containers/multiset/debug/insert1_neg.cc
! 8e972872ba67b0ab0cc0b8821d6dbfd7  libstdc++-v3/testsuite/23_containers/multiset/debug/insert2_neg.cc
! 5076e7ddc9fc9a7f18e24a22d356fdc9  libstdc++-v3/testsuite/23_containers/multiset/debug/insert3_neg.cc
! 9ba599d835ffcabd7481dd0969ac64f3  libstdc++-v3/testsuite/23_containers/multiset/debug/insert4_neg.cc
! 727743994e25b0f78a1bd3a492791dd8  libstdc++-v3/testsuite/23_containers/multiset/debug/invalidation/1.cc
! 8d01e21b11fe770cdc099fda02f06ce9  libstdc++-v3/testsuite/23_containers/multiset/debug/invalidation/2.cc
! 551fd45774593c0c8d934bfaf2be92f6  libstdc++-v3/testsuite/23_containers/multiset/debug/move_assign_neg.cc
! e4d60375ddeb1bb67555d79d6f3bf551  libstdc++-v3/testsuite/23_containers/multiset/debug/move_neg.cc
! 88c561bccd85e62fadc7c43287e671cf  libstdc++-v3/testsuite/23_containers/multiset/init-list.cc
! 9fa7e3af060081b7d9cfad93a15fe4f9  libstdc++-v3/testsuite/23_containers/multiset/modifiers/dr130.cc
! dbaff1331137b71965546885e60d275b  libstdc++-v3/testsuite/23_containers/multiset/modifiers/emplace/1.cc
! 5b392904ec0c46196eb3eee21db0c5e7  libstdc++-v3/testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc
! eecee42bbd3b4b0e4b06b6fef7bbf532  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc
! 3d6fddb09687e49735806538ce9fa37a  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/abi_tag.cc
! 5e76ab8f911960f5e4308945264ef396  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/dr130-linkage-check.cc
! f29becb11f20effa9a5e7311545872da  libstdc++-v3/testsuite/23_containers/multiset/modifiers/extract.cc
! 5b2ed1cb5c6cf983557ed5fcca74b1ad  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/1.cc
! cb14356ef92492ef57e46f5cd7811527  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/2.cc
! ed805497b45f76225208f0e612342bc4  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/22102.cc
! 762ffb069b8d424fbbd995da08a66426  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/3.cc
! 13e12a717a07cc254f4fcbda89a5593d  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/4.cc
! e1c1ebb7b696adbb43bd4508b3ccae4b  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/87194.cc
! b15cd4e20db926fef36ec081eb1a164b  libstdc++-v3/testsuite/23_containers/multiset/modifiers/merge.cc
! ef828511878ec9d8289e179ae7ac2c98  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/1.cc
! 4cb191f9069817aedfcc11b29b0ddf7d  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/2.cc
! 15520cd8e0c8f128c01f92ec3e293a2f  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/3.cc
! f4934f2f71f90ca3a7dba7bfd2124f42  libstdc++-v3/testsuite/23_containers/multiset/operations/1.cc
! 7e73820f721707ea994d94988500e4ed  libstdc++-v3/testsuite/23_containers/multiset/operations/2.cc
! b9eb73bf77809a8692c59b508895db86  libstdc++-v3/testsuite/23_containers/multiset/operations/contains.cc
! 2a62c0692c66a8d1bfd0ba2a19578c60  libstdc++-v3/testsuite/23_containers/multiset/operations/count.cc
! 3575d08a252b4b0388ef12265aa823cb  libstdc++-v3/testsuite/23_containers/multiset/operators/cmp_c++20.cc
! 72945dcd178e2e320cebfebbb5de1482  libstdc++-v3/testsuite/23_containers/multiset/pmr_typedefs.cc
! 9029f5a1b51c242c4cf2fa7d03388556  libstdc++-v3/testsuite/23_containers/multiset/pmr_typedefs_debug.cc
! 4eea081c385f10361dc5b9aad1ef969d  libstdc++-v3/testsuite/23_containers/multiset/range_access.cc
! b859c4c7cc439364239ed068fe763316  libstdc++-v3/testsuite/23_containers/multiset/requirements/citerators.cc
! 9f684fbc7e724fd819640979283608b7  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/basic.cc
! e6cac5c7a7eb94ecc9df666c48ce7280  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/generation_prohibited.cc
! d798e221664bb5f8ba1ee0bd8c240281  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/propagation_consistent.cc
! e7bb22dce227a047e15fe2806f863b31  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/1.cc
! 15bf95eb9982be048e5e1a844407c768  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/1_c++0x.cc
! a2d94469362c21eadf1926f8d105dbe4  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/2.cc
! eb0a86069c983f06f3c1c056da8458fd  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/3.cc
! 0b19e3947cbbc8a96a2f92ea948251e7  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/4.cc
! 30633f335d37e4675529dc95f04c6224  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/5.cc
! b9a9c251048408c51141041b72e82451  libstdc++-v3/testsuite/23_containers/multiset/requirements/partial_specialization/1.cc
! 26391fe0d3c2522c949b92b30cedd493  libstdc++-v3/testsuite/23_containers/multiset/requirements/typedefs.cc
! 29f84ce3afe424cdb5c889bca950c72a  libstdc++-v3/testsuite/23_containers/priority_queue/67085.cc
! 04faf9a0ee19f71f5afbbaadf49280a5  libstdc++-v3/testsuite/23_containers/priority_queue/77528.cc
! 8b625aa3ba99081201549b4300933532  libstdc++-v3/testsuite/23_containers/priority_queue/92878_92947.cc
! 617247f1ea48067b44f8689c4974c86f  libstdc++-v3/testsuite/23_containers/priority_queue/allocator.cc
! d0b18e58b2d988283c357f4f9aa4707d  libstdc++-v3/testsuite/23_containers/priority_queue/deduction.cc
! e01bac4f77a920bdc836075483434529  libstdc++-v3/testsuite/23_containers/priority_queue/dr2537.cc
! ac3e64b8e0abbec18f503522a183089c  libstdc++-v3/testsuite/23_containers/priority_queue/members/7161.cc
! 20980e5963d74fc7f9c0a35de8f45c1e  libstdc++-v3/testsuite/23_containers/priority_queue/moveable.cc
! 97755355326b3cb407e7617d8c89e60d  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/constructible.cc
! 6ecaa6e7a2ff5f3b3e6050a323bb0574  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1.cc
! 9953e3e5341efdd34638d8f2585e557e  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1_c++98.cc
! 7f45e9ac28eb894be4c3a9ee4a0f1257  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/typedefs.cc
! e57a592ffd3b830a25733950eca13785  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/uses_allocator.cc
! c186835ae380038c6e65c06c99426683  libstdc++-v3/testsuite/23_containers/queue/77528.cc
! d7307f392737ad6881e13785f631ab70  libstdc++-v3/testsuite/23_containers/queue/92878_92947.cc
! 8b60161c65e3899654bb49ddd1d19f07  libstdc++-v3/testsuite/23_containers/queue/cmp_c++20.cc
! efedd98cdb95628296aaef6dbd24e958  libstdc++-v3/testsuite/23_containers/queue/deduction.cc
! 2f9bff8973a16436e92988d2f90448dc  libstdc++-v3/testsuite/23_containers/queue/members/7157.cc
! 753e54f9521440f9078536d4bbac516e  libstdc++-v3/testsuite/23_containers/queue/members/emplace_cxx17_return.cc
! 5edeb4c2717776475b1016a4de6d4e0f  libstdc++-v3/testsuite/23_containers/queue/moveable.cc
! 1a6b5efcaece393533a89d763a8279ea  libstdc++-v3/testsuite/23_containers/queue/requirements/constructible.cc
! e9d6035d153c85c7201318a3f1ccbd4c  libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1.cc
! 5bb76183ec7898aafba7f2d2c8339a36  libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1_c++98.cc
! b59b8daf9478266eb577875bdcce9775  libstdc++-v3/testsuite/23_containers/queue/requirements/typedefs.cc
! e12365ba3e2d698bf9b1569716e17f5d  libstdc++-v3/testsuite/23_containers/queue/requirements/uses_allocator.cc
! f14476d70aca4fcca16080ebebef6c26  libstdc++-v3/testsuite/23_containers/set/14340.cc
! 02b99290a19ad6b5c13a7fa7645bdf32  libstdc++-v3/testsuite/23_containers/set/18604.cc
! c0ff72dd22e409065c498aee9cca2491  libstdc++-v3/testsuite/23_containers/set/23781_neg.cc
! 1fd7da66740556d365f7a74f148df555  libstdc++-v3/testsuite/23_containers/set/48101-2_neg.cc
! 55d2cb50976ab5d55384a429b5503d68  libstdc++-v3/testsuite/23_containers/set/48101-3_neg.cc
! d4508bbc7506891550849cc553384aee  libstdc++-v3/testsuite/23_containers/set/48101_neg.cc
! 1db057ca7542232a02eb263c696ece96  libstdc++-v3/testsuite/23_containers/set/58764.cc
! c7e69fd568faa54cc9b643b06113e5dd  libstdc++-v3/testsuite/23_containers/set/85965.cc
! 343d95b13459e294e5aa8fcc53339a4c  libstdc++-v3/testsuite/23_containers/set/92124.cc
! 1e765d37aacce269c491936d07f02c51  libstdc++-v3/testsuite/23_containers/set/allocator/71964.cc
! a11fe36ab5541bcb94de7cd50f51c240  libstdc++-v3/testsuite/23_containers/set/allocator/copy.cc
! 73fd3f9d7ecd631a66fba036209376b1  libstdc++-v3/testsuite/23_containers/set/allocator/copy_assign.cc
! 7d73290ab7c8bc3b6da4754a047681b8  libstdc++-v3/testsuite/23_containers/set/allocator/default_init.cc
! 45557c555307133303ef5aad6e900b82  libstdc++-v3/testsuite/23_containers/set/allocator/init-list.cc
! a67cfed97d6aaf337309f5193ac15848  libstdc++-v3/testsuite/23_containers/set/allocator/minimal.cc
! 2c19e9ed78ddefed5c81fd422d815b3a  libstdc++-v3/testsuite/23_containers/set/allocator/move.cc
! c2e2c043aa20e60c466cb24851b4cfd4  libstdc++-v3/testsuite/23_containers/set/allocator/move_assign.cc
! 5f6c8cc0fa61d7499a93ca54e5456a2d  libstdc++-v3/testsuite/23_containers/set/allocator/move_cons.cc
! 7f8b174e19cb368af00a919c186f00c0  libstdc++-v3/testsuite/23_containers/set/allocator/noexcept.cc
! ba584bcd90dd9e63198abc8d6dca0990  libstdc++-v3/testsuite/23_containers/set/allocator/swap.cc
! edfe881419f574e15299192cc7aefe7a  libstdc++-v3/testsuite/23_containers/set/capacity/29134.cc
! 580e90bafd87cf7a4c1e7879d040cdae  libstdc++-v3/testsuite/23_containers/set/check_construct_destroy.cc
! 218e2e9e431840d723e8fff1af982e90  libstdc++-v3/testsuite/23_containers/set/cons/61023.cc
  d7fb6d5367cbb1a6b1747e6a9e5133f2  libstdc++-v3/testsuite/23_containers/set/cons/deduction.cc
! 08f85eb73976aecc4bf307ff6077e73d  libstdc++-v3/testsuite/23_containers/set/cons/moveable.cc
! d76bb7897d4a1c4139432b5f7ddfadba  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_default_construct.cc
! b5c665ee18d244d9a03a7ca48c0d31dd  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_move_construct.cc
! c01c1bf51a0fb4088558596f3e9c1871  libstdc++-v3/testsuite/23_containers/set/cons/self_move.cc
! 50fb28b893a2dcee37fec8f3bcae7135  libstdc++-v3/testsuite/23_containers/set/debug/60499.cc
! 03d7e20b418b123e2aa3e30da26116e8  libstdc++-v3/testsuite/23_containers/set/debug/90102.cc
! 8110e737b7d763454b5a96599abbd604  libstdc++-v3/testsuite/23_containers/set/debug/construct1_neg.cc
! 7d938502cf90f26967f2c523196be084  libstdc++-v3/testsuite/23_containers/set/debug/construct2_neg.cc
! 95facfd7b8b95a0256203aa0e21994e7  libstdc++-v3/testsuite/23_containers/set/debug/construct3_neg.cc
! ad97b13f4206a23571b0275fe4ca29e6  libstdc++-v3/testsuite/23_containers/set/debug/construct4_neg.cc
! dee6f5eddb90c4fa5e1c06af2274f685  libstdc++-v3/testsuite/23_containers/set/debug/construct5_neg.cc
! 431c96e72ce0075aa8c2c1049d0d7b20  libstdc++-v3/testsuite/23_containers/set/debug/insert1_neg.cc
! 5b785ec45d7f7e654b34976384ef8f8e  libstdc++-v3/testsuite/23_containers/set/debug/insert2_neg.cc
! d5af232ffc05ffb85a736c9233700338  libstdc++-v3/testsuite/23_containers/set/debug/insert3_neg.cc
! e2c21c14258866be76af1265de777a10  libstdc++-v3/testsuite/23_containers/set/debug/insert4_neg.cc
! e5338f80303163f6077c23d4945848a4  libstdc++-v3/testsuite/23_containers/set/debug/invalidation/1.cc
! c690c12f5e797697b490f7703bf9254c  libstdc++-v3/testsuite/23_containers/set/debug/invalidation/2.cc
! cd19f08a642afb80becf0268e6af9f98  libstdc++-v3/testsuite/23_containers/set/debug/move_assign_neg.cc
! 2d5cb9ca33e1afcd6502856d8bde1853  libstdc++-v3/testsuite/23_containers/set/debug/move_neg.cc
! cf914f74e1887effc611d4e59d596f43  libstdc++-v3/testsuite/23_containers/set/erasure.cc
! e7183d05aaab60e1babfca3603253809  libstdc++-v3/testsuite/23_containers/set/init-list.cc
! 337f1743c04fa5a6f80b4d012abea9ac  libstdc++-v3/testsuite/23_containers/set/modifiers/16728.cc
! 2634b21875a441cf53f4bfd7cfefec5c  libstdc++-v3/testsuite/23_containers/set/modifiers/17948.cc
! 67d274e8cb6fafff84fe2140ffac712c  libstdc++-v3/testsuite/23_containers/set/modifiers/dr130.cc
! 0270af6327e8180802b954a20fa473e6  libstdc++-v3/testsuite/23_containers/set/modifiers/emplace/1.cc
! cd7eae57dc6c9c17c7008ecec10cc0bb  libstdc++-v3/testsuite/23_containers/set/modifiers/emplace/92878_92947.cc
! 2900768f70968c22171edc8a7871c5f3  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc
! 3baa8f4682d0cc550526211a836d22e8  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/abi_tag.cc
! e11cf4f88b9e3ba4b91623a202605872  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/dr130-linkage-check.cc
! be1720dae4daee4c8e17286413b89cbc  libstdc++-v3/testsuite/23_containers/set/modifiers/extract.cc
! 60a81a3a309105bd5f52ee49fb3b91bb  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/1.cc
! 3a215244934a1e7f1a3a51b615af4c42  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/2.cc
! 6e3b2dcade2b7d7ef36257cb5f8004ac  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/3.cc
! 995b7268ef585ab7ed20b884ede94ae1  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/87194.cc
! ea70d050104dc5608e12c93912148bed  libstdc++-v3/testsuite/23_containers/set/modifiers/merge.cc
! b86f7e4cd8b183cd06296ceba6b431f4  libstdc++-v3/testsuite/23_containers/set/modifiers/node_swap.cc
! db54236e23aa37f2f0afd7d1ef3e08a2  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/1.cc
! b338120d6a6169a0cb929c49f3c32221  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/2.cc
! 57a650409e8ea45b679aec4aa33cd2b6  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/3.cc
! 46b3c00bfea4b91835e917c6d9204876  libstdc++-v3/testsuite/23_containers/set/move_comparison.cc
! 1de72c1da1a27dacf8c4d11015915a1b  libstdc++-v3/testsuite/23_containers/set/operations/1.cc
! cdf30556c1686f1a3614b6b7ec072500  libstdc++-v3/testsuite/23_containers/set/operations/2.cc
! 6bd409f7616d0bb9dda1c672f54289ad  libstdc++-v3/testsuite/23_containers/set/operations/contains.cc
! 88816574542b19065a61b617285b57ca  libstdc++-v3/testsuite/23_containers/set/operations/count.cc
! 1b0ab5da00c7375eb5091f7ece0d952b  libstdc++-v3/testsuite/23_containers/set/operators/1_neg.cc
! 3dc217a9196155c460e19a48676d5cea  libstdc++-v3/testsuite/23_containers/set/operators/cmp_c++20.cc
! 028194892033897e83bba096ff63a34a  libstdc++-v3/testsuite/23_containers/set/pmr_typedefs.cc
! a83f4b34e6c69b04da78a001bbf01988  libstdc++-v3/testsuite/23_containers/set/pmr_typedefs_debug.cc
! b103b72661edb40605fd943fced92708  libstdc++-v3/testsuite/23_containers/set/range_access.cc
! 53197e9ae15489610c96ae8231f0f3f3  libstdc++-v3/testsuite/23_containers/set/requirements/citerators.cc
! eef1f83cb9ef2ee41741e42042737680  libstdc++-v3/testsuite/23_containers/set/requirements/exception/basic.cc
! 1c315820e7c23c3b1492e1b75fe174ad  libstdc++-v3/testsuite/23_containers/set/requirements/exception/generation_prohibited.cc
! 9abb9430b060b8060beb70e0a968b5d2  libstdc++-v3/testsuite/23_containers/set/requirements/exception/propagation_consistent.cc
! 7beca85241ffd15402694915c560d3c6  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/1.cc
! 708db8608209c637a378ef4e70289f99  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/2.cc
! 0f91616e1ca6d40fd549ad0c876f8dbc  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/3.cc
! 3aa73e6329d2b54a1b7269b30b752659  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/4.cc
! eaf56db87c279e3f768df376fe5cace0  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/5.cc
! 3765709f0785561b3686e9a3af773ecf  libstdc++-v3/testsuite/23_containers/set/requirements/partial_specialization/1.cc
! 4517ed5d9a541f6f64a4e209a48eb600  libstdc++-v3/testsuite/23_containers/set/requirements/typedefs.cc
! 494f02db53360d3809acece0240215ab  libstdc++-v3/testsuite/23_containers/span/1.cc
! 667a066b8b8fdf35b62b2bad50b9da97  libstdc++-v3/testsuite/23_containers/span/2.cc
! feb06d52fa0653f7a0d0fffdcced5349  libstdc++-v3/testsuite/23_containers/span/back_assert_neg.cc
! df5183825c660bdd57632167267ec10b  libstdc++-v3/testsuite/23_containers/span/back_neg.cc
! 82c681641c14a8f789f3beec1a8883ac  libstdc++-v3/testsuite/23_containers/span/contiguous_range_neg.cc
! b7de4256573a64a27c5b02ee5b869f43  libstdc++-v3/testsuite/23_containers/span/deduction.cc
! 0fde7cf66dc5e3a6d4bc3e574b638e5a  libstdc++-v3/testsuite/23_containers/span/everything.cc
! cb565eb1d5d7587501ef67aec5bd343f  libstdc++-v3/testsuite/23_containers/span/explicit.cc
! 391b494a066eb015a515c68c3c693ce1  libstdc++-v3/testsuite/23_containers/span/first_2_assert_neg.cc
! 53b80f550f6fa6a17147da61d896f076  libstdc++-v3/testsuite/23_containers/span/first_assert_neg.cc
! e9b17ff195eb6a230f1d229962312656  libstdc++-v3/testsuite/23_containers/span/first_neg.cc
! 8b71b7f5714514d4bdb848035f31a262  libstdc++-v3/testsuite/23_containers/span/front_assert_neg.cc
! 5907d9ebd1468e4b51fbdf691a45d42b  libstdc++-v3/testsuite/23_containers/span/front_neg.cc
! ccaf09e55de87220352319614e9f1f6c  libstdc++-v3/testsuite/23_containers/span/index_op_assert_neg.cc
! 558f2146d34f735a676b8973795a24b6  libstdc++-v3/testsuite/23_containers/span/index_op_neg.cc
! 7caf02dcece7fa65542dc59197cfb63e  libstdc++-v3/testsuite/23_containers/span/last_2_assert_neg.cc
! b464e090bd63b9d2bff8cb12e442c943  libstdc++-v3/testsuite/23_containers/span/last_assert_neg.cc
! 02073e176bca2ba8516055863ec7d539  libstdc++-v3/testsuite/23_containers/span/last_neg.cc
! 5ece8a1475e8bbe2e4482ef2e7d79d1e  libstdc++-v3/testsuite/23_containers/span/layout_compat.cc
! 65ec538949c65a560310646479ace252  libstdc++-v3/testsuite/23_containers/span/lwg3255.cc
! 55cd85d7a566e3fd6de48ef83f6ba33f  libstdc++-v3/testsuite/23_containers/span/nothrow_cons.cc
! 8f0a3427520ac24e360b31dd4a31f22d  libstdc++-v3/testsuite/23_containers/span/subspan_2_assert_neg.cc
! 79ae430aa62576c7856f803aa90c38a3  libstdc++-v3/testsuite/23_containers/span/subspan_3_assert_neg.cc
! 9f2f25fa0b29ab02918046e444270fe6  libstdc++-v3/testsuite/23_containers/span/subspan_4_assert_neg.cc
! 6200572e9a62b325b76429aef5e5a9fd  libstdc++-v3/testsuite/23_containers/span/subspan_5_assert_neg.cc
! 2c3edf40601c9fd34867e991225c4ad1  libstdc++-v3/testsuite/23_containers/span/subspan_6_assert_neg.cc
! 916389ba013bf1efecaa2b405aa0e78e  libstdc++-v3/testsuite/23_containers/span/subspan_assert_neg.cc
! bd7ef95705213ddf1c5961f3283f045f  libstdc++-v3/testsuite/23_containers/span/subspan_neg.cc
! 4003c941d10299054e56ae86adec8559  libstdc++-v3/testsuite/23_containers/stack/77528.cc
! 489db74312a7cf9c9b536769ad1ce432  libstdc++-v3/testsuite/23_containers/stack/92878_92947.cc
! 0e845abe548a2afb362cc268894b1b61  libstdc++-v3/testsuite/23_containers/stack/cmp_c++20.cc
! 2180a01409be90404e60230d927bfd47  libstdc++-v3/testsuite/23_containers/stack/deduction.cc
! 9774c2256e6c649df8861f18214ee790  libstdc++-v3/testsuite/23_containers/stack/members/7158.cc
! 3e7c8cd465259bca1966b1651992a729  libstdc++-v3/testsuite/23_containers/stack/members/emplace_cxx17_return.cc
! 0e7cc5dcf333f42a6d26ec88154c7d15  libstdc++-v3/testsuite/23_containers/stack/requirements/constructible.cc
! 292bd4d50780d7d0a65dd7f608323d57  libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1.cc
! cb49242d74fe5378f9b25a6d949f090d  libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1_c++98.cc
! 664d8d3db9683f6d02336eb38c1d2f7f  libstdc++-v3/testsuite/23_containers/stack/requirements/typedefs.cc
! dd354afd06fb1c384cd7126f6c3efddc  libstdc++-v3/testsuite/23_containers/stack/requirements/uses_allocator.cc
! 9545b0c83acfb1cde909cdbe8a6fadb9  libstdc++-v3/testsuite/23_containers/unordered_map/48101-2_neg.cc
! b8561195c978939ce400fd1853989cc2  libstdc++-v3/testsuite/23_containers/unordered_map/48101-3_neg.cc
! d36ae56fb777ed81c60a4b9cb4151fa9  libstdc++-v3/testsuite/23_containers/unordered_map/48101_neg.cc
! 2bfd46c35d7a842ac110423503acf56f  libstdc++-v3/testsuite/23_containers/unordered_map/55043.cc
! e404c6c29d86d00f6d12070e7de7b6c6  libstdc++-v3/testsuite/23_containers/unordered_map/59548.cc
! e2c95422a77bac67fd24b5d4ea6c654b  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/copy.cc
! 04a1f33f59068eb1e9fbd622204dbc47  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/copy_assign.cc
! a903acc08e15ab58be2a5207482d3965  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/default_init.cc
! 65280d7765625e94d70075f1efd74578  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/minimal.cc
! 8fb3743bdb6b9df9f6de5c8cb2e6c7a5  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/move.cc
! b34b514ea98b772fff11e0802fc7695f  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/move_assign.cc
! 3297ffc494d1ac7e651dd5fba6aec7ea  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/noexcept.cc
! e210463e69073327c4d2538d97b970ac  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/swap.cc
! 1c5c20f0082fe642a2ca766e27d9af4f  libstdc++-v3/testsuite/23_containers/unordered_map/cons/56112.cc
! 3c848cf85f1a5a153262c1f2937d7b58  libstdc++-v3/testsuite/23_containers/unordered_map/cons/66055.cc
! bb06d5e923e3d5d8bd84b4bfcb798aa2  libstdc++-v3/testsuite/23_containers/unordered_map/cons/81891.cc
  e8415b1babfb828135391be029b553d3  libstdc++-v3/testsuite/23_containers/unordered_map/cons/deduction.cc
! 186eb09f0feeb412dd49047f612454d2  libstdc++-v3/testsuite/23_containers/unordered_map/cons/moveable.cc
! 4104335ace0c1004c988ee3252c86310  libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc
! 729790d0d118599062d8f37ec85642af  libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc
! 2ae8d48d09db6580c04f5ad5ebe2b6b6  libstdc++-v3/testsuite/23_containers/unordered_map/debug/60499.cc
! 025c569bd2b6548fce897d61f09e28e2  libstdc++-v3/testsuite/23_containers/unordered_map/debug/90102.cc
! 3acc75c89574fd3fe4e583896ac661c2  libstdc++-v3/testsuite/23_containers/unordered_map/debug/98466.cc
! f2b4742b4623aaf8fe63c74c84fec9f7  libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin1_neg.cc
! 82ce1a2f61c79950ae64ee0477c439ed  libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin2_neg.cc
! 110fc4562a5cf1814d9f48fa078d4830  libstdc++-v3/testsuite/23_containers/unordered_map/debug/bucket_size_neg.cc
! a60a1b4fe6093860a2a6e1e29c1c5158  libstdc++-v3/testsuite/23_containers/unordered_map/debug/cbegin_neg.cc
! c5fd03682d14c78d774240e8082309d4  libstdc++-v3/testsuite/23_containers/unordered_map/debug/cend_neg.cc
! d7c36f878d491568a2a3bdbb01673ff4  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct1_neg.cc
! 6ab9e0d8c6f5eaa6f0d8043882f13b19  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct2_neg.cc
! cc9fd40f47a5188ad045ccf6048eea54  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct3_neg.cc
! 6ac2ae5c78e62fce7f8f1e5bed7bb6f2  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct4_neg.cc
! 7cfbacb5bb26c433ee602eba32ff8567  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct5_neg.cc
! 4b0cf5c36e50ed7d51ce836e11b253da  libstdc++-v3/testsuite/23_containers/unordered_map/debug/end1_neg.cc
! d92c7c04d88e525e1f58807414b5f92a  libstdc++-v3/testsuite/23_containers/unordered_map/debug/end2_neg.cc
! 970983f1b858692899ac86b2b3c81351  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert1_neg.cc
! 2d0cac0fce3a1cd2c6a3adefb2c857cd  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert2_neg.cc
! 8cf62055e3364decfd33af2f06318dae  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert3_neg.cc
! 93c39da2a120722626981ec720b68e9d  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert4_neg.cc
! 2da91295f75da5795d453cb31df42263  libstdc++-v3/testsuite/23_containers/unordered_map/debug/invalid_local_iterator_compare_neg.cc
! 6dd2fa0dc8f6e58e14e195c509cc3eb5  libstdc++-v3/testsuite/23_containers/unordered_map/debug/invalid_local_iterator_range_neg.cc
! 11f454d367c22213caa623c4d5325953  libstdc++-v3/testsuite/23_containers/unordered_map/debug/max_load_factor_neg.cc
! ddd6c05854efec8860d07e7b8665186d  libstdc++-v3/testsuite/23_containers/unordered_map/debug/move_assign_neg.cc
! 45aa91a3ecccde5cb0578523ade390b2  libstdc++-v3/testsuite/23_containers/unordered_map/debug/move_neg.cc
! f9cbb251430abfa3a1d72a93ea49fa06  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_erased_local_iterator_neg.cc
! 497437401b3c43dc9082757d61b053eb  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_invalid_iterator_neg.cc
! 0084ebb667078ec99d5b44eef6b967cc  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_invalid_local_iterator_neg.cc
! 99f8165565f4a0b9de53bc9bdd4dc2e4  libstdc++-v3/testsuite/23_containers/unordered_map/dr761.cc
! 0358e172eec13fd578e6300c3c3917db  libstdc++-v3/testsuite/23_containers/unordered_map/dup_types.cc
! 907046bcfb9a72f1ee410e5bca434d47  libstdc++-v3/testsuite/23_containers/unordered_map/erase/1.cc
! e224d8333657932d47f7d76373eae737  libstdc++-v3/testsuite/23_containers/unordered_map/erase/24061-map.cc
! 2aa1ed0e355002ae9645e1aa741b132e  libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc
! 30e82beb3c6534317649f154cafebfb8  libstdc++-v3/testsuite/23_containers/unordered_map/erase/54276.cc
! a7f515a7ef00d0167d7b5b4bd1c4c610  libstdc++-v3/testsuite/23_containers/unordered_map/erasure.cc
! fd132d14ed59f38217c3255ffa11c35d  libstdc++-v3/testsuite/23_containers/unordered_map/final_hash.cc
! 7b2df247ad156025a0015d63d803932f  libstdc++-v3/testsuite/23_containers/unordered_map/hash_policy/dr1189.cc
! 2044585f7bec2124c133976a7081ee51  libstdc++-v3/testsuite/23_containers/unordered_map/init-list.cc
! 099e127c1ad8c51aec72c5b75c0a643e  libstdc++-v3/testsuite/23_containers/unordered_map/insert/24061-map.cc
! 0f2f8ce91755af8b2ab7615aeb443c49  libstdc++-v3/testsuite/23_containers/unordered_map/insert/57619.cc
! abd676d2b9cc3adab87c3579f47a5b02  libstdc++-v3/testsuite/23_containers/unordered_map/insert/83709.cc
! 66a8e01b242e7844121c491d56de662e  libstdc++-v3/testsuite/23_containers/unordered_map/insert/array_syntax.cc
! e84b6afe22a624a4e0b74cd13f56c183  libstdc++-v3/testsuite/23_containers/unordered_map/insert/array_syntax_move.cc
! 8f5333ff387bed992d6d5c87204e8df2  libstdc++-v3/testsuite/23_containers/unordered_map/insert/dr2354.cc
! 0bb02232ee546044d92359303aa71ea2  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_range.cc
! 7e1ab0e068a8694be16cbffc0546be86  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single.cc
! cfba2858d238ab31856d26660bd9b899  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single_move-1.cc
! 83dbab85dda286376255b364c3909825  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single_move-2.cc
! 178b64a3461b13835d647227d96822d4  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/61667.cc
! 8bf69845649ab50ae655b025b389db18  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/78595.cc
! cb90de7a4ebd751293a6dc72758ba2a7  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/92878_92947.cc
! aad182a7742254d80acf4d12d37c0ca4  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/emplace.cc
! 7a496078f929f8db3d21c7a3ba680f8b  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/extract.cc
! b791b3f7bf3ca99940c1d507ca0ef179  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc
! 525e26ed7c6dbf00a4f5e92303cdb4f5  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/merge.cc
! f46b86c23c494b57dea314c176d73826  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/move_assign.cc
! c17e4de260cd092f864e0801d51169e3  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/reserve.cc
! b557d466e78d0c0636bc5eca4f2a57a9  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/try_emplace.cc
! 2a052947e563d8b689012622bd308f8e  libstdc++-v3/testsuite/23_containers/unordered_map/observers.cc
! 1dd08be998c55b04b8295ab7ec2ebbe9  libstdc++-v3/testsuite/23_containers/unordered_map/operations/1.cc
! 822c8712dc03ef7a9d6752494cf0e402  libstdc++-v3/testsuite/23_containers/unordered_map/operations/contains.cc
! c97458d3a0f3e78df79ad7aa68a7040a  libstdc++-v3/testsuite/23_containers/unordered_map/operations/count.cc
! d57910bde07151a215121df720540168  libstdc++-v3/testsuite/23_containers/unordered_map/operators/1.cc
! 79f498889ca3b12c450efaa1b679bd1c  libstdc++-v3/testsuite/23_containers/unordered_map/operators/2.cc
! 0bdb032dd8985276de05431d45611cb2  libstdc++-v3/testsuite/23_containers/unordered_map/pmr_typedefs.cc
! c8ba116d56ea934499d3aee6a210a72b  libstdc++-v3/testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc
  45f46b4cea5268d1bf8f903d79e3c350  libstdc++-v3/testsuite/23_containers/unordered_map/profile/hash_map.cc
  6bcaac31a8700749f12b90fa8913629b  libstdc++-v3/testsuite/23_containers/unordered_map/profile/unordered.cc
! 1aaacfa87133d783070ffb87ed75f6f6  libstdc++-v3/testsuite/23_containers/unordered_map/range_access.cc
! c7d9db0c0dc430aae2737cf246759bec  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/52942.cc
! a79f8ec8ad6841febe6c5048a2897c3b  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53067.cc
! 8e8aa68011a3c573e158dda9e47056f6  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53339.cc
! ef366ef6c620f1ccab2a1ef6a3573439  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/citerators.cc
! dac8b2ee47cd8695131946d5ff6fb340  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/cliterators.cc
! 08ff09227b501426eff4edaa600f88cd  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_container.cc
! 7e794532ab74a72d9e2a0db82cd21eef  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_mode.cc
! a2bd085a273645550fabecdacc3e64cd  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/basic.cc
! 5b1568578cb0c8a4cd8707c3ada62bdb  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/generation_prohibited.cc
! a06d68aedd2401e57785c8c940cc3149  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/propagation_consistent.cc
! fec3e6355240f84a155ed1724f414e1a  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/1.cc
! caa4114ef35daf8e9211fb069c8dbd92  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/2.cc
! 91a08c85ff334b949d025bd81157c41d  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/3.cc
! 64997bb85a60aa224560f6eda98a95dd  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/4.cc
! d9e9abeedd37c9817e1f85fddf5cf7c7  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/5.cc
! 4bfb39462c563644a9d656bbc05cda92  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/typedefs.cc
! 1ca99b26d994b0ce15f1f67a311fc25d  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101-2_neg.cc
! b37215820564f374dc7c95310867f75c  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101-3_neg.cc
! bf46653624427be070500de808a7149b  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101_neg.cc
! 1edb74c10ff5e0f9867a6d8968d11f0d  libstdc++-v3/testsuite/23_containers/unordered_multimap/55043.cc
! 4b28941edd2857fe2c7e42ac04d99207  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/copy.cc
! 4f1a73831771fee02527b4136a9e87b3  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/copy_assign.cc
! 394e5dbdab175819fee604a517cd64da  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/minimal.cc
! 7e023b579f604c5aee2113dbd9658c84  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/move.cc
! 64ad1c128408a4edc9fa841ce8930ba7  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/move_assign.cc
! 66c0b383afcbc9f988e0fb895c3b036c  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/noexcept.cc
! 0c014247a54f91684130e8180157d7a1  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/swap.cc
! bf443c1b51a6c411bb0b50e16c9da609  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/66055.cc
  0c0d6b35989640c377141d1531195df7  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/deduction.cc
! 82955a364e1aa7a59656c62222b9cfa2  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/moveable.cc
! aa129fdc07e0df788c539d3c93122296  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc
! 66d7f3c2e5577cd7f28c4204c90409b3  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc
! 80228e618881cab7b336e370a02d314c  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/60499.cc
! 90bcb8988ebfe4fac285b1cd27142572  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/90102.cc
! 73964ad6e7a51fc2c8b263233a37ffbb  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin1_neg.cc
! 82ce1a2f61c79950ae64ee0477c439ed  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin2_neg.cc
! 110fc4562a5cf1814d9f48fa078d4830  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/bucket_size_neg.cc
! a60a1b4fe6093860a2a6e1e29c1c5158  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cbegin_neg.cc
! c5fd03682d14c78d774240e8082309d4  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cend_neg.cc
! 749d7680be4504347711f0c2eb85da05  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct1_neg.cc
! f6cab7dc35ab980f40f561c0d51fa7e4  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct2_neg.cc
! 93ea5efb4ce9f8a3554a897e25041470  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct3_neg.cc
! 223f29f5c928bbdfa3a5f8f11c828580  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct4_neg.cc
! 63ab1d4611278001eb48df1f656f5e1f  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct5_neg.cc
! 4b0cf5c36e50ed7d51ce836e11b253da  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end1_neg.cc
! d92c7c04d88e525e1f58807414b5f92a  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end2_neg.cc
! 1e4570d7e382561ef5e0c1dae7274df6  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert1_neg.cc
! eadb44738d46d8ff13affa63c64f6b0e  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert2_neg.cc
! 5dc9a259c7f5422e4ee87b16ee87d659  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert3_neg.cc
! ddf0d22ddb8b64faf758832a1a4d1f93  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert4_neg.cc
! ce869d27de0e75b8d5608938539ee006  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_compare_neg.cc
! 964d425b0984d86f0afdedc43c4a94e4  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_range_neg.cc
! 0ee44b03e999d0527475ca89e3275d37  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/max_load_factor_neg.cc
! 0ed18bc7716a20d789a0ccc98510d6d7  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/move_assign_neg.cc
! f74c25e25b92aedcba0c1b12362df28e  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/move_neg.cc
! f64329c2be0a96a3d71e71e2dcf02429  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_erased_local_iterator_neg.cc
! 4c99a82a3e57e05ff90a0736436aba4b  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_invalid_iterator_neg.cc
! f84793e1a0963a55579be21e8b74e26b  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_invalid_local_iterator_neg.cc
! ceaa3abccb07b85a4c8975c77ab6a44b  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/1.cc
! f06d8be977a91e9dc5960f728c10ef72  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/2.cc
! 55d1b9c01bcf0a9798504ef53cff6f9e  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/24061-multimap.cc
! 3dadb53c0347f21434c43efef96e24ef  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc
! 144aafec7b64db1489cd0686fde6b877  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51845-multimap.cc
! 28c90cb6c47b1f376efd1aec4deca0aa  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/54276.cc
! 09e1d7bf6a3f72cf254fba7154c19470  libstdc++-v3/testsuite/23_containers/unordered_multimap/final_hash.cc
! 64e071eedccae41e2f302cb9f0140de7  libstdc++-v3/testsuite/23_containers/unordered_multimap/hash_policy/dr1189.cc
! bafbab37dae850462ac0c192f897544e  libstdc++-v3/testsuite/23_containers/unordered_multimap/init-list.cc
! 586f4e86c966dda6cb68546c152de795  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
! 491ec2d8e9836a82be2ca92d99ad529a  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/51866.cc
! 702d797b5f92aad6a33bc58cc2d8bf5d  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/52476.cc
! f683f6602d9ed8f53c91fc2111ca6777  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/53115.cc
! 77cda4823a627d81ff417c2b79de5005  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/55028-debug.cc
! 08c6eceb3649a02459a986557dd80162  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/57619.cc
! 3a196d8e028c324faf2717d7d97360b3  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/dr2354.cc
! 8c4d1aa98c3b17b8448c86c97394611e  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/hint.cc
! 41463ed441512d80db2901558471d97b  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_range.cc
! 7a7814b91b31f16965258d3f48d2c5f0  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single.cc
! c2a1f76a29fde0634454e45d44d61552  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single_move-1.cc
! 768593778f4605a24cb2d75dc5e23967  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single_move-2.cc
! f3c37f7b11895b079af128c6ba6d29bb  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/78595.cc
! 9d4ba1ff9fae10e066ee0922481ec175  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc
! bb8801fbe3114b9485c2b58d9489cea0  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/emplace.cc
! ad1300d03de8cbd905994c2b9590a24d  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/extract.cc
! c02d1e6ea5edd0480fc2caefd05f01d3  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/merge.cc
! 63b3903591ef51d3680d3d2a52b5499a  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/reserve.cc
! 654e86ce7f19ea615a96b83617a60e5a  libstdc++-v3/testsuite/23_containers/unordered_multimap/observers.cc
! d2ab1793b19b08bcfcb5763780685cfe  libstdc++-v3/testsuite/23_containers/unordered_multimap/operations/1.cc
! 4ae58350cb8529e94c918d47c1835954  libstdc++-v3/testsuite/23_containers/unordered_multimap/operations/contains.cc
! f75ebb0458951d649d86eaa84d600b0a  libstdc++-v3/testsuite/23_containers/unordered_multimap/operations/count.cc
! 4b6a9e1e914dc4daa22e238a15160a51  libstdc++-v3/testsuite/23_containers/unordered_multimap/operators/1.cc
! 719f2a47323dc26429c753eb42056d3b  libstdc++-v3/testsuite/23_containers/unordered_multimap/operators/2.cc
! 1602ac862f963b8194c03ea3ae41d505  libstdc++-v3/testsuite/23_containers/unordered_multimap/pmr_typedefs.cc
! d4dece3a36442a324a83198454383d0e  libstdc++-v3/testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc
! 460184fe41d7b0640a0fc92bc6113107  libstdc++-v3/testsuite/23_containers/unordered_multimap/range_access.cc
! cf13650ca9d74844292174e4cbf6656f  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/53339.cc
! 0935770285ba876c696d26d03bc353db  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/citerators.cc
! 9c930d9c318d34163b0e218fc09c2166  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/cliterators.cc
! e3a27189bb12e2de1855db164d775503  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/debug.cc
! 17c206b22f2a5292ebb83baa0c446812  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/basic.cc
! 228045e4ff427037f61f59f8757c1c85  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/generation_prohibited.cc
! 5777a8e88172e6d7fb5718d76783622f  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/propagation_consistent.cc
! e1390492325b876b355a1db3b0604924  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/1.cc
! fb23d5de87100ca5ad84ea7596adced4  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/2.cc
! 880c16813372aebd4427526804a24e51  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/3.cc
! 6165d685cacb97fa98f5130207e1bf66  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/4.cc
! 4e91b24a20b25cad6c6b91eb192caba1  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/5.cc
! dd6656cecc7941e9ab030816d181cb8c  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/typedefs.cc
! 340e92c3553eb7de11481f3f6e726a1d  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101-2_neg.cc
! 3c6ea6a9c961ba41ffaf759ae7387de3  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101-3_neg.cc
! 8234a8997922fc9a540184a8fbf96119  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101_neg.cc
! 30649898f3435ba20ab67fcbab1cdbda  libstdc++-v3/testsuite/23_containers/unordered_multiset/55043.cc
! 32109ee74582f61e3347c51838eacdcf  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/copy.cc
! c052a423a5d46825a136f512e1cb6905  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/copy_assign.cc
! c364953606bdee7da4ec04853db6c82e  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/minimal.cc
! 9adc100959ed675240c0e79ddb89d86a  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/move.cc
! 5d3047a8a10af7b71acc7d83746aa086  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/move_assign.cc
! 9e8a3d27a9d4295a9dd0493d22966b71  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/noexcept.cc
! 6878fb73ac1058694369e8fc098ce689  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/swap.cc
! 4514faeeda29a9797671dc9ea2b58193  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/66055.cc
! 02bd43203d61b881e3ba7277fd071b3e  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/copy.cc
  94762517775d99b186586f012a571051  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/deduction.cc
! 37e7e2c08fb018d52648d9413859b141  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/moveable.cc
! 47604493769a708694e580ef49d5cbb1  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc
! 554c7b97ade2633dfa5e7c64a914d9f1  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc
! b11a5fc9778b7c6bee84254c2bce1268  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/60499.cc
! 136b5678b06b2070f08cfacb8078e698  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/90102.cc
! 4eaa52d512eb51fa996a6326188f9aba  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin1_neg.cc
! 217e9adc5a81b83205fafd79fe3f38d2  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin2_neg.cc
! 53ff27d7af216b2fa89fd6227c382cbf  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/bucket_size_neg.cc
! 7127c1f24e6aec25574c7e598919c7a8  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cbegin_neg.cc
! bf9d530cfbb57d53c0ae785dba149743  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cend_neg.cc
! 37ccacaaf6658637ac655826ab7a09bb  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct1_neg.cc
! a7176ef0c481bc1c3321fbf9db962cc7  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct2_neg.cc
! 816ef1fc6ee126a9332331cda2e94ef8  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct3_neg.cc
! 4aef87f1b12e684889ca827382065f4e  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct4_neg.cc
! 024126666de94ea9939e3d0996c030bc  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct5_neg.cc
! 6581fceaa96e610464b37f86ec71821e  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end1_neg.cc
! d54aeee4a97ec0d2bd9adb278bed93e3  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end2_neg.cc
! a4ba508f319166723dc84ad4bb91887e  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert1_neg.cc
! fba60722daa5731f454c8bb12f56fa3c  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert2_neg.cc
! dfe709d5f4b2d02e2045414245abab70  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert3_neg.cc
! 6e47d36741100384cc524b71ba60fc9e  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert4_neg.cc
! 5840a52c39f9c2a14a4f74f9a04f1407  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_compare_neg.cc
! 677b3d8c615cae43687d66f61bd92cc5  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_range_neg.cc
! 79ea032af85c1c47cecd00d9f5727c30  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/max_load_factor_neg.cc
! a8b3c730ae73c253dc119870878f7e04  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/move_assign_neg.cc
! a801dc0441676dd2cd6b98c6700985e3  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/move_neg.cc
! 5a2316cb87d1608e60abfff6f1a3a78b  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_erased_local_iterator_neg.cc
! c7f096ef349c5266a707ffb5e20d73c0  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_invalid_iterator_neg.cc
! d81ea68a91930d7f94cf1b05ba59fa87  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_invalid_local_iterator_neg.cc
! 764753230510612b98daa144aeb4a7a4  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/1.cc
! 030fc6d0505ad19d9782ff7a80c1a086  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/2.cc
! 9706dcbb6b2290b863c2a984492b36fb  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/24061-multiset.cc
! fc5fb9c0b3535fc1d94d181cbed0daa9  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc
! d8cdb1de567b65e973012e30de887965  libstdc++-v3/testsuite/23_containers/unordered_multiset/final_hash.cc
! 4825a617e790cee42373f0a39cf92894  libstdc++-v3/testsuite/23_containers/unordered_multiset/hash_policy/dr1189.cc
! a416f9020594ecd7d4034eb1aee43c44  libstdc++-v3/testsuite/23_containers/unordered_multiset/init-list.cc
! f825633a2b19de676693d228337b4aae  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/24061-multiset.cc
! cdd76bde17781ae347bed08c0757ea68  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/51866.cc
! 4a2df5267d3a067133bb34f955ba5b04  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/52476.cc
! 9b03bf7746843fe0da00c1d47240a6c8  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/53115.cc
! a391c6711d5a25e7aa133ccb1e4fcc6a  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/hash_policy.cc
! 2537293881e8cc49cb4a3ff428e1db74  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_range.cc
! 666d70c227528357e013bcdf7588657c  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_single.cc
! 4ff0eb9e76e9c9c8f229c2529f983cdd  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_single_move.cc
! c18c77ba1ace5ae23a8cfa8253228f14  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc
! 9e5e202c22d69db839959e7fb0677b73  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/emplace.cc
! 9f848e16c7a80f50d39565f263c0cd8f  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/extract.cc
! 98c498a622b09d08f6049e943825ca2d  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/merge.cc
! 343f829974a4e89e74832fe863582c05  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/reserve.cc
! 504c3d27067ddc9682051620c0c17ab7  libstdc++-v3/testsuite/23_containers/unordered_multiset/observers.cc
! 5a231a3b1937cb77c62bc16ea22ea1e7  libstdc++-v3/testsuite/23_containers/unordered_multiset/operations/1.cc
! b75edae6f5b0c32bd5c610a2b756e5fc  libstdc++-v3/testsuite/23_containers/unordered_multiset/operations/contains.cc
! a6dcee028ce66c6dce1d16c8caf7ec69  libstdc++-v3/testsuite/23_containers/unordered_multiset/operations/count.cc
! bf134497e8d88c46aaac71ea26c80cd5  libstdc++-v3/testsuite/23_containers/unordered_multiset/operators/1.cc
! 3c725c9f4dfadd91dc8cefc7c7307679  libstdc++-v3/testsuite/23_containers/unordered_multiset/pmr_typedefs.cc
! d70af4eade3c09e50d985a655cb7938c  libstdc++-v3/testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc
! 21730d02bdc6ca82c8489af39c456908  libstdc++-v3/testsuite/23_containers/unordered_multiset/range_access.cc
! 26dbe25325fa6ac4b85fd1dade8dc904  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/citerators.cc
! fcdb5d9acc1abb3cef7628fe18b1e081  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/cliterators.cc
! 4ec8cb31b546e97e6ff66bdbbdfd05cd  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/debug.cc
! 7e357a262ad103019c755efe33b5dd99  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/basic.cc
! de996b2965ca201ffd425bc7c0a4edcc  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/generation_prohibited.cc
! 057d8b6edfb3d0f1ef8dbc315f879216  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/propagation_consistent.cc
! cabebd21f57b134c03235e46bb0ebc8f  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/1.cc
! 827129168e04f59f3acfdb4119b544e0  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/2.cc
! e4afa025ed499400fad5ddc50c119919  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/3.cc
! d5b1b8c8c288ab3f4cb02cf718243507  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/4.cc
! 5ef51322c5c908f6393d3231f1216416  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/5.cc
! 73b3c2a90e52e5ef08ab00c22b3e7370  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/typedefs.cc
! 897abd60a087d78ccc4af3fc25ed88bd  libstdc++-v3/testsuite/23_containers/unordered_set/48101-2_neg.cc
! 8473d2d7a02602b06a5ae26053fa17c1  libstdc++-v3/testsuite/23_containers/unordered_set/48101-3_neg.cc
! 850c1f5396abb30374a8842d2227f61a  libstdc++-v3/testsuite/23_containers/unordered_set/48101_neg.cc
! e2abbcffa7ee67d6fec32d6ebc057e79  libstdc++-v3/testsuite/23_containers/unordered_set/55043.cc
! 978cad34e053975a31370e0b08e98682  libstdc++-v3/testsuite/23_containers/unordered_set/56267-2.cc
! 653053026fc79d70ffc42476fff302f3  libstdc++-v3/testsuite/23_containers/unordered_set/56267.cc
! 83ad305b31bfd994db00331b90de829e  libstdc++-v3/testsuite/23_containers/unordered_set/56278.cc
! 78905d8a6cfb40be793d1687295d4e59  libstdc++-v3/testsuite/23_containers/unordered_set/61143.cc
! 7fa697c6e4d4cf5fffe80abd43a79c97  libstdc++-v3/testsuite/23_containers/unordered_set/63456.cc
! d56d6a3b11674c5ef5e08147bfad9f5b  libstdc++-v3/testsuite/23_containers/unordered_set/85965.cc
! 074652bfafd367dcf66ff4eb41f64fe7  libstdc++-v3/testsuite/23_containers/unordered_set/92124.cc
! 9ecb77bba4dd535fa5bf7951d935bdf8  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/copy.cc
! f42b7981043b0f2be2678785df364814  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/copy_assign.cc
! 63ebd139d6e4bb3f1be1631514ca214d  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/default_init.cc
! fd123093f7e5013ec2a5baefead534fe  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc
! e0d2a365a09b5636f6135bef123aca67  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/minimal.cc
! a0e7d6da59994b0dbb4dc0688ac4a143  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move.cc
! b5832b3ba451d220de70edb42b963613  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move_assign.cc
! f4244378734778d9b31dd6da27cf8d7f  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/noexcept.cc
! d7ecdf15bd51a2f6297bb4452ba0528d  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/swap.cc
! a65ba3d8e27655ddd0bc328ab73ada4c  libstdc++-v3/testsuite/23_containers/unordered_set/buckets/swap.cc
! 8664c586819b39f71f7c9cf87fdf8074  libstdc++-v3/testsuite/23_containers/unordered_set/cons/66055.cc
! 9d752eefc22b63ac38738f296f675279  libstdc++-v3/testsuite/23_containers/unordered_set/cons/99985.cc
! dbfc14e923792da5010ad03c34f624b0  libstdc++-v3/testsuite/23_containers/unordered_set/cons/bucket_hint.cc
  b3b806f5f10ddfb77c8aeb8ba285b4a9  libstdc++-v3/testsuite/23_containers/unordered_set/cons/deduction.cc
! b975a36e94bc20e855f45e5622c7e5a2  libstdc++-v3/testsuite/23_containers/unordered_set/cons/moveable.cc
! 9e6f87cb9a4da17b72ed4ff59c4ec009  libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc
! 0e0a91bf1832ab1063c7388fdeec7fca  libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc
! 4f845f7452843ba005d6c429af4220d6  libstdc++-v3/testsuite/23_containers/unordered_set/cons/self_move.cc
! a7d6f1c2e0e5e971edf626d099acb8b3  libstdc++-v3/testsuite/23_containers/unordered_set/debug/60499.cc
! 47f5f525e5b71e57b016c95d8c69f358  libstdc++-v3/testsuite/23_containers/unordered_set/debug/89608_neg.cc
! f97ccafb13fa977bb9788625931814f2  libstdc++-v3/testsuite/23_containers/unordered_set/debug/90102.cc
! 93098159bd75a6655eafcc0f3882ef5e  libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin1_neg.cc
! 8085ae41b15a468fcc1416d815e767a9  libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin2_neg.cc
! a5389b0c3f846534d67db11191db0257  libstdc++-v3/testsuite/23_containers/unordered_set/debug/bucket_size_neg.cc
! 98bbd0b94107ece4b5cdf9bea3f1adbc  libstdc++-v3/testsuite/23_containers/unordered_set/debug/cbegin_neg.cc
! b5726a5c367503ff6f2e0a1aec3d5acb  libstdc++-v3/testsuite/23_containers/unordered_set/debug/cend_neg.cc
! c3ddb6dc2ec9df65766476d037b2078d  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct1_neg.cc
! 18102c962837ecb63eadbd977ff568b5  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct2_neg.cc
! afe93b6777fe0f699a655e9aa76adb94  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct3_neg.cc
! 52d36be5260d4026efd79ec5f6cca04c  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct4_neg.cc
! fef21e0e5355b6c87e4c902448ea73c7  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct5_neg.cc
! 493c5507fb7c332e99e562823a92769d  libstdc++-v3/testsuite/23_containers/unordered_set/debug/debug_functions.cc
! e76b270ec5bb52ee64e45ac7fd0ce9e9  libstdc++-v3/testsuite/23_containers/unordered_set/debug/end1_neg.cc
! d086b998333d864189b4375b7ab7b452  libstdc++-v3/testsuite/23_containers/unordered_set/debug/end2_neg.cc
! b3a1b916c15d0130c12ee66805f0d979  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert1_neg.cc
! d9bf51d2ba0dbfc1f046f3da04655645  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert2_neg.cc
! 365a485839ae125f94c8ab002bf5a1a1  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert3_neg.cc
! c7f11eb9f82076dc9ad187074858894f  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert4_neg.cc
! 74c20479e6807b08c8b146b32ea553f9  libstdc++-v3/testsuite/23_containers/unordered_set/debug/invalid_local_iterator_compare_neg.cc
! e0cfa9bbcccc6a720e264fa33fe4a76e  libstdc++-v3/testsuite/23_containers/unordered_set/debug/invalid_local_iterator_range_neg.cc
! 985fcca97a8e0d5467a21517058b762b  libstdc++-v3/testsuite/23_containers/unordered_set/debug/max_load_factor_neg.cc
! c9c7542a12eda902158ab8777c625e3c  libstdc++-v3/testsuite/23_containers/unordered_set/debug/move_assign_neg.cc
! c3d65c11e9b05927a4125df474775cdd  libstdc++-v3/testsuite/23_containers/unordered_set/debug/move_neg.cc
! 0972e4a001f234c0ca817cbc7bb67b4e  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_erased_local_iterator_neg.cc
! 817370a746daa0bf6653242bf3613f97  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_invalid_iterator_neg.cc
! 8770cc40a61b09ccfd1a714bf0245c79  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_invalid_local_iterator_neg.cc
! 6e5ff9b3fbce8bf1757551a6030d2edb  libstdc++-v3/testsuite/23_containers/unordered_set/erase/1.cc
! 7397d859125f6b481fcc7781d79101f9  libstdc++-v3/testsuite/23_containers/unordered_set/erase/24061-set.cc
! 4063b22a46ca4fc6d7b4f1a7a3c30574  libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc
! b37ded9ee23c9b7b64a372e2c1551b93  libstdc++-v3/testsuite/23_containers/unordered_set/erasure.cc
! b4dfa4b72b2d6ef2d15c1378d9d36315  libstdc++-v3/testsuite/23_containers/unordered_set/final_hash.cc
! 2769995c8aa3d2ea93549f2b1cfa7705  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/26132.cc
! 4c7f71f250a3e4ffe410ced10ed25b6f  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/71181.cc
! 09c35d67d24040058ec66ed2312f0712  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/dr1189.cc
! 29089d2693113c480cc483f34fff2a41  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/load_factor.cc
! 9cfacc58a473c09f2e47fb21e62f48e4  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/power2_rehash.cc
! 60f8b5068257cd7c12a149dc54f50063  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/prime_rehash.cc
! 6ecdc0028bd658c041ff08b27d68ed22  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/rehash.cc
! 624fe5c75d5d6d7e0ce6cef7180e4896  libstdc++-v3/testsuite/23_containers/unordered_set/init-list.cc
! 7acb45dfc35e318927f3da0d418c57f8  libstdc++-v3/testsuite/23_containers/unordered_set/insert/24061-set.cc
! 815790fc3e7c28a83b0b10dae9d2051c  libstdc++-v3/testsuite/23_containers/unordered_set/insert/83709.cc
! 15a7951457ac4d9625377fba511ef54a  libstdc++-v3/testsuite/23_containers/unordered_set/insert/hash_policy.cc
! 22425856d79e5bbc0cd54be56085c9d9  libstdc++-v3/testsuite/23_containers/unordered_set/insert/move_range.cc
! f9b36f93158a45b95505cc0b8d1214ca  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_range.cc
! 6587ebec9298d5f01a2d661a90f3c01f  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_single.cc
! a70fac297764bf83bc8bc857c756815d  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_single_move.cc
! 43438f8e1c5808890b21b18d32e3b2d2  libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc
! d7e3d76f83a4c549010b84ef2e211c1b  libstdc++-v3/testsuite/23_containers/unordered_set/max_load_factor/robustness.cc
! 5515806c64ef5269e6c55c5b517376ac  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/92878_92947.cc
! 69d96fa11ffafa089d5f551b31c705c8  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/emplace.cc
! b7d2c021bd51e5079b3016b4e41fefa1  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/extract.cc
! bee72317d52ca6b2f334e8b574904d3a  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/insert.cc
! 37a8fa42015af680ee37f17836293ec3  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/merge.cc
! ae2bd75da19a4298d3dd2e5ea87704c3  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/reserve.cc
! 9fb95a80ddadee28f00b8fe191f1920f  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/swap.cc
! 955cb43adac4b795a95901668015803b  libstdc++-v3/testsuite/23_containers/unordered_set/observers.cc
! 46523461cfe3319d6baf779f0ef178c4  libstdc++-v3/testsuite/23_containers/unordered_set/operations/1.cc
! 914f46c915405883fe67950f431ec660  libstdc++-v3/testsuite/23_containers/unordered_set/operations/contains.cc
! fb1705d88e7e249367ba232fd54934eb  libstdc++-v3/testsuite/23_containers/unordered_set/operations/count.cc
! 650610fcbb1db0626275e5589897ea84  libstdc++-v3/testsuite/23_containers/unordered_set/operators/1.cc
! 6e0762cc036e56299ca8079c1103b842  libstdc++-v3/testsuite/23_containers/unordered_set/operators/52309.cc
! d68ae29b7d79b64b4b678d67966c4565  libstdc++-v3/testsuite/23_containers/unordered_set/pmr_typedefs.cc
! 01286e0da50419473a4ddd7d2a498d67  libstdc++-v3/testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc
! a14ec43f949209f502e3d92596637b09  libstdc++-v3/testsuite/23_containers/unordered_set/range_access.cc
! 764b2dfab343cdd77b5da90592d38a19  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/52942.cc
! f39853d8d62df85248bf0b5a3fd439ac  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/53067.cc
! cee7e722f5473eabbbd0df753a95ee76  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/citerators.cc
! 2709e624b519a812dbf923bfe06b7ad6  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/cliterators.cc
! b68b141e21e7ee92ab6ca812c0b33998  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/debug_container.cc
! ac1f07d67fc710540283b7882b45f0b6  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/debug_mode.cc
! 2b58b1fd05ad76fed775544fffd3e271  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/basic.cc
! ffec224977623da08d2e8cb7676b10ae  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/generation_prohibited.cc
! ec4f597a041c38657a877b8495842e6b  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/propagation_consistent.cc
! e79a64f9c1a53474c493d87e4a13bba7  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/1.cc
! 4c6cde6c14f91ed71c6ae04af1ae64a4  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/2.cc
! e854168e38668988aa3dfdf9526402f9  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/3.cc
! 01260bc096a3e710b113b590b1e055fa  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/4.cc
! 442e8780f2f62dbaa3e7094558a9f79d  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/5.cc
! 53e9f9459b1645ffc1ab2d255991cdfe  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/typedefs.cc
! 02840d72f57055db53124c32a81dae01  libstdc++-v3/testsuite/23_containers/vector/14340.cc
! 32c2fe152d316290c5eb92da431d9cf2  libstdc++-v3/testsuite/23_containers/vector/15523.cc
! e43b29429c1c5a235e7435cc845e6954  libstdc++-v3/testsuite/23_containers/vector/18604.cc
! 5430c50c8c69b8e1b55c08626efcd9b4  libstdc++-v3/testsuite/23_containers/vector/26412-1.cc
! 24c4d4abef1a550a5d51812fc8979bb8  libstdc++-v3/testsuite/23_containers/vector/26412-2.cc
! d677f19c3f429dd9d15be2600379c217  libstdc++-v3/testsuite/23_containers/vector/40192.cc
! cd2c1a11874e20a5535175ff0d8e948c  libstdc++-v3/testsuite/23_containers/vector/48101-2_neg.cc
! 015d049ec76bf7c1a0724881349bb6f5  libstdc++-v3/testsuite/23_containers/vector/48101-3_neg.cc
! 36ae24e84ea0d141965614da9a41512b  libstdc++-v3/testsuite/23_containers/vector/48101_neg.cc
! 9abfdaae6e4748410327dbf6d73ceb55  libstdc++-v3/testsuite/23_containers/vector/52591.cc
! cdf2d940d0d7430ad7e84f3fc9f8f606  libstdc++-v3/testsuite/23_containers/vector/58764.cc
! bbb7dcf69edab2d3cbd7e0f474bb8ac6  libstdc++-v3/testsuite/23_containers/vector/59829.cc
! 011ff18d458c407ad8d558afab858923  libstdc++-v3/testsuite/23_containers/vector/63500.cc
! a990fbd034d1830cbe8175d95333d592  libstdc++-v3/testsuite/23_containers/vector/70303.cc
! 8292899cb22fed71c051ee4ee7bb931d  libstdc++-v3/testsuite/23_containers/vector/92124.cc
! b29b353bd57084f24eaa1a4870cb7493  libstdc++-v3/testsuite/23_containers/vector/allocator/construction.cc
! 2af8efe71f3f2ab5d2a5eec15d1ff76c  libstdc++-v3/testsuite/23_containers/vector/allocator/copy.cc
! 29498084e0b8ee0016c292de38944a57  libstdc++-v3/testsuite/23_containers/vector/allocator/copy_assign.cc
! eb7444140e19f13dad13361963e0418c  libstdc++-v3/testsuite/23_containers/vector/allocator/default_init.cc
! 1822c85386adf40f1ad01e5ed8886c5a  libstdc++-v3/testsuite/23_containers/vector/allocator/ext_ptr.cc
! 545e7613c48073137cb8a91b582314b4  libstdc++-v3/testsuite/23_containers/vector/allocator/minimal.cc
! 2ddf2181afd1fddb7be1ea734b4647d4  libstdc++-v3/testsuite/23_containers/vector/allocator/move.cc
! a2ec1f247865e18a36a72b50b5326bed  libstdc++-v3/testsuite/23_containers/vector/allocator/move_assign.cc
! ba015768718b09fdd976fc5fafd96a1a  libstdc++-v3/testsuite/23_containers/vector/allocator/noexcept.cc
! 0581439a0f33acd3b031e838a2ab069b  libstdc++-v3/testsuite/23_containers/vector/allocator/swap.cc
! ac4a7bb14f0b6c0007f3b32a8d02c908  libstdc++-v3/testsuite/23_containers/vector/bool/1.cc
! 3e67d42e24976071de1a05dbc2eb544c  libstdc++-v3/testsuite/23_containers/vector/bool/21244.cc
! d75df03344ac625e9565395b2dc4f2cf  libstdc++-v3/testsuite/23_containers/vector/bool/23632.cc
! f81c17598fbc2235f43daa78baf879fe  libstdc++-v3/testsuite/23_containers/vector/bool/6886.cc
! 6d70635c69167041a42f02485849748a  libstdc++-v3/testsuite/23_containers/vector/bool/72847.cc
! aca3f1e31129b81672b4821823745e11  libstdc++-v3/testsuite/23_containers/vector/bool/80893.cc
! 3afd5ee70451b44a6ae47d8a2895b667  libstdc++-v3/testsuite/23_containers/vector/bool/82558.cc
! b419b1a3d7d31632d9a5edda8611bb97  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/copy.cc
! 9fc52e6174b30204331dbe1c49b2c454  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/copy_assign.cc
! 0cb5b8baefc5220886a5d05911ae2f5a  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/default_init.cc
! c2980b76cbcbea76a0139f7327387fcc  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/ext_ptr.cc
! 8f3f4ce561f7d16da69e484cb74d4ade  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/minimal.cc
! 4bcf82f245d3b2c5e5b93f805360fa51  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/move.cc
! 8cf7842031a8ea29d02c568ea8c0eedd  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/move_assign.cc
! 612101a85984370821180461c2cc302a  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/noexcept.cc
! d1383159d742681c762a47615d0baa9a  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/swap.cc
! cef99bd3d675df834ebe5e2f59388e0f  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/1.cc
! b42d0243e22d7b6aa6b18fc8fa12677f  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/29134.cc
! 63be2fbb79fe5ec6dbcff8d28083db01  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/shrink_to_fit.cc
! 2bcb82e579ba51ff1735836f9edfd086  libstdc++-v3/testsuite/23_containers/vector/bool/clear_allocator.cc
! e574ed46fcc7d5e7b8e4749b0024e4bf  libstdc++-v3/testsuite/23_containers/vector/bool/cmp_c++20.cc
! 5432b852b1ad3391da7d08abe6c70177  libstdc++-v3/testsuite/23_containers/vector/bool/cons/1.cc
! 94e2d0131aa6a4132ccb4800c5db865c  libstdc++-v3/testsuite/23_containers/vector/bool/cons/2.cc
! 798342a34a31057ef17a780ad90bdb4f  libstdc++-v3/testsuite/23_containers/vector/bool/cons/87809.cc
! d4d81bf57d000556af47b8302b6e2ac5  libstdc++-v3/testsuite/23_containers/vector/bool/cons/noexcept_move_construct.cc
! 92171b00a610caea0ea25d42a41eb5e0  libstdc++-v3/testsuite/23_containers/vector/bool/emplace.cc
! fa6143a19cb07c5bc12553518b2a1633  libstdc++-v3/testsuite/23_containers/vector/bool/emplace_cxx17_return.cc
! 5a3c7598a39ee308a23dfeb71c5a6dc4  libstdc++-v3/testsuite/23_containers/vector/bool/hash/1.cc
! 20caa8d1060674d02fa9058cbe5fd543  libstdc++-v3/testsuite/23_containers/vector/bool/iterator_c++20.cc
! 53440f9078adf1cc88bb1c1b8cb7d3ef  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/assign/1.cc
! 85de6b56cc8e11a71e93ec8949fbfc5a  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/erase/1.cc
! 60e4d90addfbc4c458d3b27ffd769bfe  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/erase/54577.cc
! 53f86d064451bc50f64e2de3b4e0f868  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/1.cc
! 7d1fccee7c654bda0330e6e02dd2d5fa  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/31370.cc
! 38102b08c752d23c871ecd428a61f489  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/const_iterator.cc
! cc1826a790dd5cddd4b9a01c369e5361  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/1.cc
! e40f53503c19e306371b58a308bb56f1  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/2.cc
! 3969848b5f0d6e3a99766f41da742992  libstdc++-v3/testsuite/23_containers/vector/bool/requirements/citerators.cc
! 5c9569c506b165c605ea60457ee7b756  libstdc++-v3/testsuite/23_containers/vector/bool/requirements/dr438/constructor.cc
! 1ca3a4c53021ac18283734167f0caf69  libstdc++-v3/testsuite/23_containers/vector/bool/swap.cc
! df3ab46873764a0ec71d5ef61fd6d76f  libstdc++-v3/testsuite/23_containers/vector/capacity/1.cc
! 656dfa9b76c536a5a69f02993e6c8546  libstdc++-v3/testsuite/23_containers/vector/capacity/2.cc
! c633d6c3358431264d0d95875784adca  libstdc++-v3/testsuite/23_containers/vector/capacity/29134-2.cc
! 28fc1b40b0ebe942ca4947dc36d213c7  libstdc++-v3/testsuite/23_containers/vector/capacity/29134.cc
! 429b17860d658d28d994a3677a2444c6  libstdc++-v3/testsuite/23_containers/vector/capacity/44190.cc
! 7f2cd16e478815ee1ee9cde8de3efcc5  libstdc++-v3/testsuite/23_containers/vector/capacity/8230.cc
! 6addaf5e8637e241609d37f7a98b9ae4  libstdc++-v3/testsuite/23_containers/vector/capacity/87544.cc
! 02f8d9dcc8ec5450ec98ff1324703051  libstdc++-v3/testsuite/23_containers/vector/capacity/max_size.cc
! e12b64593b524fd2a2820bc63847236a  libstdc++-v3/testsuite/23_containers/vector/capacity/reserve/moveable.cc
! 4a66bf891e3f94521682bce3a99ae9a6  libstdc++-v3/testsuite/23_containers/vector/capacity/reserve/moveable2.cc
! d832ee754c81ac2c45ef16e80abc39e3  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/1.cc
! 0181243092e5b0dec387b7708092ab02  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/moveable.cc
! ccf6f479b5e256008d0255822deb3794  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/moveable2.cc
! 9bfa6a819d32a773080d3c23564bd29d  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/resize_size.cc
! 61831db45f832a168796a3950959fb28  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc
! a85d4fe1404f49889553d9c174b8afb1  libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit.cc
! a2ed8464d53e5f675b21a2197a5af8fc  libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit2.cc
! a57a99172da30aee03cbb85a881de068  libstdc++-v3/testsuite/23_containers/vector/check_construct_destroy.cc
! a96f84aa8002282db8196daf1443564f  libstdc++-v3/testsuite/23_containers/vector/cmp_c++20.cc
! 13cf10ad1046503e754a6383f6d96ad6  libstdc++-v3/testsuite/23_containers/vector/cons/1.cc
! 30d83f47c41bfd6b1fc7d4e69f5037dd  libstdc++-v3/testsuite/23_containers/vector/cons/2.cc
! bb2dfa551fc1a50eb784eb2f2b2ad5d7  libstdc++-v3/testsuite/23_containers/vector/cons/3.cc
! bc7d32b07a54390854eb34b6498e82ae  libstdc++-v3/testsuite/23_containers/vector/cons/4.cc
! 60571a1a12807105b6ee06f52bc78e60  libstdc++-v3/testsuite/23_containers/vector/cons/55977.cc
! b87a7a3cd541605715bcc94ce9ffd309  libstdc++-v3/testsuite/23_containers/vector/cons/6513.cc
! 728db9cba9c08ad1ba6af3d6c541b503  libstdc++-v3/testsuite/23_containers/vector/cons/86292.cc
! 365e19dafafd4135a3d0450a61a3f1e0  libstdc++-v3/testsuite/23_containers/vector/cons/87809.cc
! aa02f2c43480108b00dac0de71bf1469  libstdc++-v3/testsuite/23_containers/vector/cons/89164.cc
! b39a169db48f0fcbb759e8f98aead2c6  libstdc++-v3/testsuite/23_containers/vector/cons/89164_c++17.cc
! 0e21c66113eb26fc8738889b46359d29  libstdc++-v3/testsuite/23_containers/vector/cons/94540.cc
! 91077740ab7bf3bdee0226e442628f2d  libstdc++-v3/testsuite/23_containers/vector/cons/94831.cc
! 64603aa0c23f62ddd0f7822d614dee9f  libstdc++-v3/testsuite/23_containers/vector/cons/clear_allocator.cc
! 328073d94217d294f750da19ee6d0f30  libstdc++-v3/testsuite/23_containers/vector/cons/cons_size.cc
! f8988bf57937d0bc678725cfd04dfe7b  libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc
! 4f75096a24cb959dbff7093f990a8852  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
! 88a06c32c07a05b906612b8b6180031f  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
! e9e18dc92dc482f39937bb8cbf4c7436  libstdc++-v3/testsuite/23_containers/vector/cons/moveable.cc
! 6edb022036b3345e26e610e2940666da  libstdc++-v3/testsuite/23_containers/vector/cons/moveable2.cc
! 8c49f3bb6291e56019a1f03d296fb711  libstdc++-v3/testsuite/23_containers/vector/cons/noexcept_move_construct.cc
! 9ea5eff4ad4f33a34892cc0bf92c7de2  libstdc++-v3/testsuite/23_containers/vector/cons/self_move.cc
! c1516efb1f474183cc992f59b2915e7b  libstdc++-v3/testsuite/23_containers/vector/data_access/1.cc
! 07f960c16b3626071f0f8d0c45b2bada  libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc
! e8e40973dd98ce4beb6e597c37ee64ac  libstdc++-v3/testsuite/23_containers/vector/debug/57779_neg.cc
! adc8b7c70fc4001378243f5970972278  libstdc++-v3/testsuite/23_containers/vector/debug/60499.cc
! 716a45f6828ca4e68f997c8dd8e7b232  libstdc++-v3/testsuite/23_containers/vector/debug/60587.cc
! c45ba0552909ec0464bb780e0ad3b465  libstdc++-v3/testsuite/23_containers/vector/debug/60587_neg.cc
! 102ef1a54784f4623591926db7e190cc  libstdc++-v3/testsuite/23_containers/vector/debug/90102.cc
! b099d3dcdf20b667caa06f06b53ab301  libstdc++-v3/testsuite/23_containers/vector/debug/alloc_prop.cc
! fdd87545a12b8c36e49ce59177f83cfa  libstdc++-v3/testsuite/23_containers/vector/debug/assign1_neg.cc
! 360b599475322529d749d2d73f2a628f  libstdc++-v3/testsuite/23_containers/vector/debug/assign2_neg.cc
! c70ef8492e25f8544f061c6b2e9eb6f4  libstdc++-v3/testsuite/23_containers/vector/debug/assign3_neg.cc
! 0d7a6dc3cf389a58dde1aaebb5058dc5  libstdc++-v3/testsuite/23_containers/vector/debug/assign4_neg.cc
! 941824b2440da594c00f49687d836d39  libstdc++-v3/testsuite/23_containers/vector/debug/bool/shrink_to_fit.cc
! 42fa00d52afa391b6e671fa380336d12  libstdc++-v3/testsuite/23_containers/vector/debug/construct1_neg.cc
! 7b2d33820dc762651c2d1d750e2bc6bb  libstdc++-v3/testsuite/23_containers/vector/debug/construct2_neg.cc
! 5644b537b6f6a93da4ebe6e62e8bb9e6  libstdc++-v3/testsuite/23_containers/vector/debug/construct3_neg.cc
! 8fa38eaed109536907916be78106cf34  libstdc++-v3/testsuite/23_containers/vector/debug/construct4_neg.cc
! cf77fce84f4563b81a89c0dd2a495d68  libstdc++-v3/testsuite/23_containers/vector/debug/debug_functions.cc
! 9a4d5e3ab117f3b75d51a82d1771eda8  libstdc++-v3/testsuite/23_containers/vector/debug/insert1_neg.cc
! 142989f0bd4a3fa1bb14024d5a562137  libstdc++-v3/testsuite/23_containers/vector/debug/insert2_neg.cc
! a927d92fae7ed940cc755b99f983f19f  libstdc++-v3/testsuite/23_containers/vector/debug/insert3_neg.cc
! 941c87b3a581a978e084d4dddd06bea7  libstdc++-v3/testsuite/23_containers/vector/debug/insert4_neg.cc
! a487ee8c4f53c8536cd5042aca122263  libstdc++-v3/testsuite/23_containers/vector/debug/insert5_neg.cc
! 24798920426ff6d0cafbb6f47732e8fc  libstdc++-v3/testsuite/23_containers/vector/debug/insert6_neg.cc
! 9d3b046493d337dc0e30b77494df99fc  libstdc++-v3/testsuite/23_containers/vector/debug/insert7_neg.cc
! 8e05bdb0c4a02307dc73d9e65933d20c  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/1.cc
! dcaf0406e675b49fd2b3cd7c6b2efc8f  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/2.cc
! 778a6e223e0d587269519ddbe2ef9bd2  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/3.cc
! 9776da00390d590e77faa61f26f38734  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/4.cc
! 3f9ecc3e555b30fb9e914ecb93286a06  libstdc++-v3/testsuite/23_containers/vector/debug/move_assign_neg.cc
! 273545ea0f15f6193436973d7885c2e8  libstdc++-v3/testsuite/23_containers/vector/debug/move_neg.cc
! bea2cede2013e6375a5aaed46627ad04  libstdc++-v3/testsuite/23_containers/vector/debug/multithreaded_swap.cc
! 14e74b2f2cd966170814d61472c39c37  libstdc++-v3/testsuite/23_containers/vector/debug/mutex_association.cc
! fcc6a23c25fed2323cec6ad30ac23888  libstdc++-v3/testsuite/23_containers/vector/debug/shrink_to_fit.cc
! 8c81657e28b61a3102a26e23c10cc07f  libstdc++-v3/testsuite/23_containers/vector/debug_mode_requires_reallocation-1.cc
! e8f7c410b9ee7fb0b84086f4cd1e1f9e  libstdc++-v3/testsuite/23_containers/vector/debug_mode_requires_reallocation-2.cc
! ea4bc683bfae758dd2818267e0ba84a8  libstdc++-v3/testsuite/23_containers/vector/element_access/1.cc
! 68741996e1671f2265741e4f18c874f0  libstdc++-v3/testsuite/23_containers/vector/erasure.cc
! 43f87785640cf0bdfbf41c9096d687fb  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/citerators.cc
! a451842314f44f73a1cbc0191d0e9569  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/data_access.cc
! 674efc7054ef3eb53fadec6abf5dd809  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/explicit_instantiation/1.cc
! 5a742778dbc77923017245cfab7522c2  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/explicit_instantiation/3.cc
! 916c7a5013dd26f214a9a4953267e770  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/element.cc
! d1f901c3aa259904fbdc63d23dc8c2fc  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/erase.cc
! f93510445e0abd38d0718337e47d0061  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/insert.cc
! 8eb3bcc1d927dca5cca113f7d2aa8e6c  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/resize.cc
! 30e91a017fd7bb67dd3d007e20b4ad92  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/types/1.cc
! f5e979e29be0ede498967bf878030f8f  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/types/2.cc
! 58ddb4baafd7d6d70d676174e7b5b2a8  libstdc++-v3/testsuite/23_containers/vector/init-list.cc
! 1083bd2e76086711a778da0f6c50fd1f  libstdc++-v3/testsuite/23_containers/vector/modifiers/1.cc
! 1211a8bfd16cd7d661c7de8033e2c8ec  libstdc++-v3/testsuite/23_containers/vector/modifiers/2.cc
! 24db0703ed5f65e772374e48a53cb9da  libstdc++-v3/testsuite/23_containers/vector/modifiers/assign/1.cc
! ee0835ac70d6cde78bc4a0a5d658a257  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/52799.cc
! b2d085beb6d3f253521b53e08fed53bf  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc
! 64d1add61242c7cb736bb1274245a914  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/const_iterator.cc
! 2eba39b85e0c6720b9fd48d927a55cfe  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc
! b20fbbdd9ff0c2268fb99d0551e24b7c  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc
! 33905742d0b0c96581d4f3e2e691716d  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/1.cc
! 655a01b7e6185cbd87cff45dc416f9fe  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/50529.cc
! 02c15c3bfa2235668e29a684c92c7bc3  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/54577.cc
! 9ed44db2bb99a3cad4e736cc261e4a0a  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/moveable.cc
! fd48e0e46446d15dcad4947a38602ca8  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/1.cc
! 3d0d5cb3c697eed01405572c583e16fb  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/58148.cc
! 19ec2a880d74bb94a1d8e83ac8889b19  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/aliasing.cc
! 1936c41d66cdae3bdbfa7513b2b558cc  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/const_iterator.cc
! 2cb6c63c15e3c221ac0702d59c5139f5  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/self_insert.cc
  8fb5c601f412e71f5977219b7d89f18d  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc
! 522e67715088c6bc25d2a87becea1f2e  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable.cc
! cfa1ee73257bdbb7b03abdd50fdffc36  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable2.cc
! cb8e9edd0041930c9424b43f761603e2  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/49836.cc
! dafa5e8020ab4a64f360785ed6176101  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89130.cc
! f104b598ff5572a8dad417228ef454d2  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89416.cc
! 52b8a3bbdbaf8857347b2e5807f485f1  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/strong_guarantee.cc
! 3c28ca41919fd5cecafaa8e37cb1385d  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/1.cc
! afc5e84b6e05491e60627214a8925d15  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/2.cc
! 55713e0ffbc98fc358e28d0003e61579  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/3.cc
! 7c573931fbabf112e1520c304ba880cf  libstdc++-v3/testsuite/23_containers/vector/pmr_typedefs.cc
  33db2bb591e55ad911ea124e372841ca  libstdc++-v3/testsuite/23_containers/vector/profile/vector.cc
! fb655a6a50f52dfd12fdfcd66eed3f7a  libstdc++-v3/testsuite/23_containers/vector/range_access.cc
! 7824d7e6f2df6a8062afc44f77fc580c  libstdc++-v3/testsuite/23_containers/vector/requirements/citerators.cc
! 049fd0b0d699095cc7ceb9ad34cfe6a6  libstdc++-v3/testsuite/23_containers/vector/requirements/do_the_right_thing.cc
! 256be79e9479dac22008b92650560ce0  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
! 7eedfc087eeb5b1b6519bbb4a408c15f  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor.cc
! 69e0e9bf77ce01deb71654de4e9fb156  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
! e545a327e2d262252f6d15a6d9ad16b4  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
! cfd6ed62afaa0fe860d6a70374650948  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
! 4f7c3654f1a6082888e249fd85c31d70  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/basic.cc
! 9ebd34a9acdd96b98dd0dbdc27a3d04f  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/generation_prohibited.cc
! 1e92fcb6689c9c6ae378a4e904b6952a  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/propagation_consistent.cc
! f1d2dfe8bdde1711fe9c1f2e68ac54d6  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/1.cc
! 85b4802f2ab6d298c7781f74bb8628a4  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/1_c++0x.cc
! 99f29676f9c02dddac25e7f4d47495a1  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/2.cc
! b00c6cc7b58325e8e853681e3f224138  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/3.cc
! a0b98f6b70d2132065e7a01b465ab28a  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/4.cc
! 8b5c5fb01d20b54a330850d9ff37a460  libstdc++-v3/testsuite/23_containers/vector/requirements/partial_specialization/1.cc
! 036d623aa14d6fcb341a4ec74318bbd0  libstdc++-v3/testsuite/23_containers/vector/requirements/typedefs.cc
! 32498175a4ac03b7038e7be403befb27  libstdc++-v3/testsuite/23_containers/vector/types/1.cc
! 9ace48b2c34943546511d27bd70404f5  libstdc++-v3/testsuite/23_containers/vector/types/23767.cc
! 53fad0cbfecdbee16fed0901bda402c2  libstdc++-v3/testsuite/23_containers/vector/types/pmr_typedefs_debug.cc
! d79ca12204738505a399aeff984ee255  libstdc++-v3/testsuite/23_containers/vector/zero_sized_allocations.cc
! 13db5aa30b43a040ef63c3c216b16e29  libstdc++-v3/testsuite/24_iterators/aliases.cc
! 199431a1580752ab5d2d52e6ea704493  libstdc++-v3/testsuite/24_iterators/associated_types/incrementable.traits.cc
! 7bd5596041cecabc5bd66ed4d40d7aac  libstdc++-v3/testsuite/24_iterators/associated_types/iterator.traits.cc
! 748639209be77fb79ac55feee234aba1  libstdc++-v3/testsuite/24_iterators/associated_types/readable.traits.cc
! 93ad746fac4b6ce91267df0e5907f50e  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/2.cc
! 4e80133a27c29a7d845e714bbbfd6360  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/constexpr.cc
! f8b0802e186351890c7fbf01bac3df02  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/pr93884.cc
! 8a622b0ae8025ffb99be5a2175f64184  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc
! beeca7a8e5a68f05c55b5f036dfae41a  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/container.cc
! 8006dfff78337801564e5b6ab9d87a3d  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/explicit_instantiation.cc
! 1f090b3647a98de217dc36823829e05d  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/typedefs.cc
! 54b2766b9fbe73218d8470be531e0926  libstdc++-v3/testsuite/24_iterators/bidirectional/concept.cc
! c79d1f0e10c0a939f0c6401bc65db1e0  libstdc++-v3/testsuite/24_iterators/bidirectional/tag.cc
! 64a13a1fb43872055e33902203f05261  libstdc++-v3/testsuite/24_iterators/common_iterator/1.cc
! aeb31a80322253f628082c76be6b3455  libstdc++-v3/testsuite/24_iterators/common_iterator/2.cc
! f3a27d4ec65bf65e2469a2eec37cf54d  libstdc++-v3/testsuite/24_iterators/container_access.cc
! 985edba23526581e2811581b195af9aa  libstdc++-v3/testsuite/24_iterators/contiguous/concept.cc
! d77d56d08a4417d44491163642da79fb  libstdc++-v3/testsuite/24_iterators/contiguous/tag.cc
! 260d0f9649b885323173c667220c0dcc  libstdc++-v3/testsuite/24_iterators/counted_iterator/1.cc
! a768c04fe288f140bd6cd57555e1895b  libstdc++-v3/testsuite/24_iterators/counted_iterator/lwg3389.cc
! da76f425f8371ea7d8b7b449a8aa177b  libstdc++-v3/testsuite/24_iterators/customization_points/92894.cc
! ea8a2e5202d41e63eb3eec79cfc06b0b  libstdc++-v3/testsuite/24_iterators/customization_points/iter_move.cc
! da2cbef76db54168f270e4b9335b069a  libstdc++-v3/testsuite/24_iterators/customization_points/iter_swap.cc
! 6a8eb88055b6d046a592451f7143bc27  libstdc++-v3/testsuite/24_iterators/customization_points/lwg3420.cc
! e744b3499cc089f085f4715e4304ff17  libstdc++-v3/testsuite/24_iterators/forward/concept.cc
! 0b13053e52641f945501a1e722e0dbe1  libstdc++-v3/testsuite/24_iterators/forward/tag.cc
! ca188cb6975c1cccf08e52d677b6a6ce  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/2.cc
! 655276cd71e80bd888a9416c2d3fe8b2  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/constexpr.cc
! 6163619db52120cdc96bf71ecebd16ba  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/pr93884.cc
! f543e08cb3adc70799dc5207027a7074  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc
! 8dec5aebad79c6c64c9b8c5d6c238b17  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/container.cc
! d5937490b19817cd14cf51552e3c2681  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/explicit_instantiation.cc
! 8c4c274b78e6cc16e7f475ce24a10e06  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/typedefs.cc
! 332c93567e45045fc0fb3b887ff45476  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++11.cc
! e0bc4e62ab3fd0e88e0a41f09145ddc6  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++14.cc
! c335d49135cb5fb8f7805adccb71e77b  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++17.cc
! ce5875927d24851119506e0cd2a9fa4c  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis.cc
! 7d4ecadd50879aeb5f55f38c90c65ea7  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++11.cc
! 098d7028c2dba5078caff7184df26aad  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++14.cc
! bc55e39d672f8f2acf4a3a839799a302  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++17.cc
! 6369133690cde3e4e17a08285673475b  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++20.cc
! ead7b347f3a84b38262546ce18206a07  libstdc++-v3/testsuite/24_iterators/headers/iterator/types_std.cc
! f25cd16c63db0eb06c20b51fc7f796e0  libstdc++-v3/testsuite/24_iterators/indirect_callable/92894.cc
! 91dfe14e4840b1461fe3aeade634c378  libstdc++-v3/testsuite/24_iterators/indirect_callable/projected.cc
! 578a9f922f0d38aaa181459c0e0882a3  libstdc++-v3/testsuite/24_iterators/input/concept.cc
! 8d23220366aee3df10c0bb582efe714f  libstdc++-v3/testsuite/24_iterators/input/tag.cc
! 9dc3e1da9c4150710274e8b9e8310e3c  libstdc++-v3/testsuite/24_iterators/insert_iterator/2.cc
! 213bd21bce21fee8f06a6a8f7dafd173  libstdc++-v3/testsuite/24_iterators/insert_iterator/constexpr.cc
! 78bab213b4f5e9d0e5cd9b39de333203  libstdc++-v3/testsuite/24_iterators/insert_iterator/dr561.cc
! 8446526fef270b820c8259ad604fa616  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/base_classes.cc
! ac5be76e595ef097caab1e9668b5db28  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/container.cc
! c6cb34dc6806fb03d64498552554a50a  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/explicit_instantiation.cc
! 716f218665ed37e5d78917b36448e803  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/typedefs.cc
! 1dd3c622d326432ea92ecd80d73f9019  libstdc++-v3/testsuite/24_iterators/istream_iterator/1.cc
! b5f85dc7dd3d5dcc3085616e68ef992e  libstdc++-v3/testsuite/24_iterators/istream_iterator/2.cc
! 134d93af7c8b518f644cebcb1b1dc7b3  libstdc++-v3/testsuite/24_iterators/istream_iterator/70766.cc
! 55f901c24fd53b962dc28f68bdad8b21  libstdc++-v3/testsuite/24_iterators/istream_iterator/cons/constexpr.cc
! 5500e13c2821b64d16dddbc6342dd79a  libstdc++-v3/testsuite/24_iterators/istream_iterator/cons/sentinel.cc
! 7597221603702411907820bd2b3c5ec3  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/base_classes.cc
! baa16b6d9cfa9432ad7ceddc06ffc5ec  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/explicit_instantiation.cc
! 012adae7d457295231ca80687e075453  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/typedefs.cc
! d8d9e972fb3e36920db7c058b8a05fb6  libstdc++-v3/testsuite/24_iterators/istream_iterator/sentinel.cc
! da19f38b817739061b5fe43671683500  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2.cc
! 187cfd5d51bccdff3179b32b71eb55d6  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2627.cc
! cfa404bb764e5f4b59e3cb573d9fc4f5  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/92285.cc
! 9f126aebdf8cd5acf6cdd83471bf5704  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/cons/constexpr.cc
! 7fdfd6f0fb74ea7b7881462e526e793d  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc
! fcd3eafd85b5a87d33863baa868ed894  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/debug/1_neg.cc
! 63f9faddffe497ff63af8195d0d8fa98  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/debug/2_neg.cc
! 360d9e62de8ad0c906034d15bc6c493c  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc
! 3b80c9880280f87195249b34d7bf9bba  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc
! fbfe93dbfb566414b75da9a9293f0a05  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/explicit_instantiation.cc
! e04d0bbe59fde133552ac637f60e0966  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/typedefs.cc
! a6ce33f817005fed6fde94ccae6196c3  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/sentinel.cc
! b83580062979fb7f9ca63ed95de103ca  libstdc++-v3/testsuite/24_iterators/move_iterator/cust.cc
! f1b3ed883beb84a0ab6a40680b3b8919  libstdc++-v3/testsuite/24_iterators/move_iterator/debug_neg.cc
! 616a547223c3716a41e85ec3fec50874  libstdc++-v3/testsuite/24_iterators/move_iterator/dr2061.cc
! bb690f467c25f63dba9533e5b3f90c56  libstdc++-v3/testsuite/24_iterators/move_iterator/dr2106.cc
! c4eb82f09dfdab955ee9beaa8c382aa3  libstdc++-v3/testsuite/24_iterators/move_iterator/dr3265.cc
! 1cc84b858963466af88283995dbedba2  libstdc++-v3/testsuite/24_iterators/move_iterator/dr3435.cc
! f61c9fca6266649673037a304f5087d1  libstdc++-v3/testsuite/24_iterators/move_iterator/greedy_ops.cc
! 0533536b91d1b8889bc0514c951db02e  libstdc++-v3/testsuite/24_iterators/move_iterator/input_iterator.cc
! 677f7e3442a1f49a2317e5d2e84aafbc  libstdc++-v3/testsuite/24_iterators/move_iterator/lwg3390.cc
! 0540897c8b6b2c9666c5257c5b02d7cd  libstdc++-v3/testsuite/24_iterators/move_iterator/move_only.cc
! fa15fa33472593185ffd5c4507ebd70a  libstdc++-v3/testsuite/24_iterators/move_iterator/rel_ops_c++20.cc
! 00713bae4b62792aaac5258e8985b3b4  libstdc++-v3/testsuite/24_iterators/move_iterator/sentinel.cc
! 7197efde86b8ed3ae703ab142f49bcf0  libstdc++-v3/testsuite/24_iterators/normal_iterator/58403.cc
! d4a585aaf65e0b5c63f72b7dfef6fb06  libstdc++-v3/testsuite/24_iterators/normal_iterator/cmp_c++20.cc
! c493bdcdf31b28125ae6f70bbca275d6  libstdc++-v3/testsuite/24_iterators/normal_iterator/debug_neg.cc
! f4094d814d12e4659302d41112dd550a  libstdc++-v3/testsuite/24_iterators/normal_iterator/greedy_ops.cc
! 12000340c1f9bfe32446a6a27f2ef092  libstdc++-v3/testsuite/24_iterators/operations/26020.cc
! 917541289d2626ad7a2ea1b13ffdd7e9  libstdc++-v3/testsuite/24_iterators/operations/40497.cc
  631af97d6c75b598ecf8901dc62067b2  libstdc++-v3/testsuite/24_iterators/operations/lwg2353.cc
! aae1372c23f5d8c02125e84667ce154b  libstdc++-v3/testsuite/24_iterators/operations/next.cc
! 38acf7e05fe7d6929219d063d2b2df92  libstdc++-v3/testsuite/24_iterators/operations/prev.cc
! abf62f2b7bd08b512cf4a63e83d62a39  libstdc++-v3/testsuite/24_iterators/operations/prev_neg.cc
! 6cf084d9a0808e4c9fc5c905fd5c1334  libstdc++-v3/testsuite/24_iterators/ostream_iterator/1.cc
! b1cd648fa0161dbd889af2da5840d9b2  libstdc++-v3/testsuite/24_iterators/ostream_iterator/70766.cc
! cf9e8dd00fa7b1dfc5adf36ce333a602  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc
! 182b9a52d603abfe6f533d5f7a7f1335  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/constexpr.cc
! efe530e88822d35149a01acf1aa92090  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/explicit_instantiation.cc
! a09ba4e9746bfccb38de1a500ccdbee7  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/typedefs.cc
! 929912ebe8471b152d136c91bd447048  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/2.cc
! 103b735c4056f05794239479a6c608e7  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc
! 208c39ece926ed4db5f88063aad210c4  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/explicit_instantiation.cc
! 471f17cd91cfff659806305c80ef94c1  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/typedefs.cc
! da420a856dc0c7c8f0bb6c46069d1e08  libstdc++-v3/testsuite/24_iterators/output/concept.cc
! 1cbec407a4e4e583d65d62c3f33811d1  libstdc++-v3/testsuite/24_iterators/output/tag.cc
! 5d9e6c455c33aca40789c39f35da21cd  libstdc++-v3/testsuite/24_iterators/random_access/concept.cc
! 05d3d24060565793f5d927f9e4e12a07  libstdc++-v3/testsuite/24_iterators/random_access/string_vector_iterators.cc
! aacad6819aab8553b0bf0a910b28e289  libstdc++-v3/testsuite/24_iterators/random_access/tag.cc
! fab46014937def539ea8644b0c5f010b  libstdc++-v3/testsuite/24_iterators/range_access/range_access.cc
! 4237dd63ffa7becd9dfb9a7984f56f50  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp14.cc
! b34f119563bf8f2b15aed511f600272d  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp17.cc
! 203fc54cf6c08b7250e8bd40077ad8fb  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp17_neg.cc
! 00993d52fb3fde3612b964bf044116bc  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp20.cc
! 5d0d1075b02e1560aab2247c10a9ea3d  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp20_neg.cc
! 0a0e93c3e501c58643907cbd325aa468  libstdc++-v3/testsuite/24_iterators/range_operations/advance.cc
! 0801af026902ec25c1d5d62d2deba688  libstdc++-v3/testsuite/24_iterators/range_operations/advance_debug_neg.cc
! 2f4b9ccddd25fdf144f1acfd7e17410b  libstdc++-v3/testsuite/24_iterators/range_operations/distance.cc
! 8b27bbddfc1deb1ac2effc7160d22c2f  libstdc++-v3/testsuite/24_iterators/range_operations/next.cc
! 0ed9099160635d30a917767db4db3dae  libstdc++-v3/testsuite/24_iterators/range_operations/prev.cc
! 98e36525858fd93320155eb672561949  libstdc++-v3/testsuite/24_iterators/reverse_iterator/11729.cc
! 2553beacac54ca2da1d7a66d33c9baf7  libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc
! 60587bf48218c6927a7a995dca42e36a  libstdc++-v3/testsuite/24_iterators/reverse_iterator/3.cc
! de69d094b2ae892c5e4ae783c62c4030  libstdc++-v3/testsuite/24_iterators/reverse_iterator/71771.cc
! 9f32b003701f0cdecd68b77a67a63d74  libstdc++-v3/testsuite/24_iterators/reverse_iterator/cust.cc
! 8d12559bac04b35cf062198040c0ab53  libstdc++-v3/testsuite/24_iterators/reverse_iterator/debug_neg.cc
! 42456cdae645dc2ad60d5b7c84580afd  libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr1052.cc
! ad3b3b2a842d4a5971ada1ec65915b33  libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr2188.cc
! d0245acbf77ce3c391b673882d1fbe17  libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr3435.cc
! 10a30093717f5364472d564ab8f3480c  libstdc++-v3/testsuite/24_iterators/reverse_iterator/greedy_ops.cc
! eacfd1e3ae08d0552c3f411b2f898c04  libstdc++-v3/testsuite/24_iterators/reverse_iterator/make.cc
! 176111d4588dbae7cb9892efdb60b435  libstdc++-v3/testsuite/24_iterators/reverse_iterator/rel_ops.cc
! 612d2ec6f0e7bc45cd380f0350a02678  libstdc++-v3/testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc
! 7ba2158f95def9dc4a0f44f1fd86a350  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc
! db91076c73ca493e4569a0674f36e2b6  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/current.cc
! e4d89ef5e294aa6cb9a1f2452b5612ed  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/explicit_instantiation.cc
! 6466d8b6575a8178da5fb381e667e995  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/typedefs.cc
! 90bde308ab904cf28b3261adac937d35  libstdc++-v3/testsuite/25_algorithms/adjacent_find/1.cc
! 7e0360b366a2fea34d737a83910ba207  libstdc++-v3/testsuite/25_algorithms/adjacent_find/check_type.cc
! e95fe405d494b8ea40a447d35d0da1fa  libstdc++-v3/testsuite/25_algorithms/adjacent_find/constexpr.cc
! 384f1ea67496fa7c0dc304776612dcac  libstdc++-v3/testsuite/25_algorithms/adjacent_find/constrained.cc
! f13955c074d0f5382add2f59473dcee0  libstdc++-v3/testsuite/25_algorithms/adjacent_find/requirements/explicit_instantiation/2.cc
! 2292a02b47bc2061f3214971c3ab7e76  libstdc++-v3/testsuite/25_algorithms/adjacent_find/requirements/explicit_instantiation/pod.cc
! 8027d5f0245602b31634eb47843b94b6  libstdc++-v3/testsuite/25_algorithms/adjacent_find/vectorbool.cc
! 175f62e49d750cd9d5c0443ca0382548  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/1.cc
! 60ef4441a59bb6dd8e34241c6e27597b  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/1_neg.cc
! 845b6dc72dddb686a538e09b7d9a86a9  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/2.cc
! 3697facf76844e7c9c300da3fa0769b3  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/2_neg.cc
! d28f682c16aa496f90cc5b6379356ccc  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/3_neg.cc
! 8c9c0b346336799eae288e004e857357  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/1.cc
! 956d422b7a8b2cfe1b6640ee16fbf337  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/1_neg.cc
! 6c4f28bb24f17c377559fad93097e11a  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/2.cc
! 8955eafe5c747d940397494555dd2934  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/2_neg.cc
! 19a51fa8f69f54d1d9b167d4251af225  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/3_neg.cc
! 5ea8db904a294ec5717be5e387c6450a  libstdc++-v3/testsuite/25_algorithms/all_of/1.cc
! 8d4373be7f25dd9a5e47906ed8b2aad7  libstdc++-v3/testsuite/25_algorithms/all_of/check_type.cc
! f3243481f32e61e0a2fc77e5d5650b51  libstdc++-v3/testsuite/25_algorithms/all_of/constexpr.cc
! 6ba868ed03604bd2ec55c108cc992a72  libstdc++-v3/testsuite/25_algorithms/all_of/constrained.cc
! 5d3a339ce736751b99e64ade93cac3c9  libstdc++-v3/testsuite/25_algorithms/all_of/requirements/explicit_instantiation/2.cc
! f57a742d8d4ce9885374655f074e4e94  libstdc++-v3/testsuite/25_algorithms/all_of/requirements/explicit_instantiation/pod.cc
! eb759d69563f33a11a64664837f7284d  libstdc++-v3/testsuite/25_algorithms/any_of/1.cc
! d70b5eb5e59ac884a403b495680ceb9f  libstdc++-v3/testsuite/25_algorithms/any_of/check_type.cc
! df41a523540078cd2eed9ba96a5557c6  libstdc++-v3/testsuite/25_algorithms/any_of/constexpr.cc
! eb506d4669738f0c9abdd8cce4565a19  libstdc++-v3/testsuite/25_algorithms/any_of/constrained.cc
! aecaca3349660a397ada3716f5031372  libstdc++-v3/testsuite/25_algorithms/any_of/requirements/explicit_instantiation/2.cc
! da59ccce6ab8b24c444518f0e5c2ece1  libstdc++-v3/testsuite/25_algorithms/any_of/requirements/explicit_instantiation/pod.cc
! 1756d38fb678205d15e9c30ccda054dc  libstdc++-v3/testsuite/25_algorithms/binary_search/1.cc
! adc86017e88fac861ef17195fd4b019f  libstdc++-v3/testsuite/25_algorithms/binary_search/2.cc
! 01292b41dedc0cf41adec14035161781  libstdc++-v3/testsuite/25_algorithms/binary_search/check_type.cc
! 23dd9fae6176242a31f732f2181da4fb  libstdc++-v3/testsuite/25_algorithms/binary_search/constexpr.cc
! b050ef94cc2701cc1905a350732fa4a8  libstdc++-v3/testsuite/25_algorithms/binary_search/constrained.cc
! 088b7ce37745483e9d23f52090bf5abe  libstdc++-v3/testsuite/25_algorithms/binary_search/partitioned.cc
! 439b5c4d8065a991861c9267cf4e4ffc  libstdc++-v3/testsuite/25_algorithms/binary_search/requirements/explicit_instantiation/2.cc
! 6ca01ea21b924af144bb3293a1245446  libstdc++-v3/testsuite/25_algorithms/binary_search/requirements/explicit_instantiation/pod.cc
! 373cd1675e05ca8e88be604530d9cef4  libstdc++-v3/testsuite/25_algorithms/clamp/1.cc
! fd0af266816f32a0842c268b4487e6f9  libstdc++-v3/testsuite/25_algorithms/clamp/2.cc
! e3a29cf1d7a8c91b4c1840ad097e52a0  libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc
! ea2e43d9ff46da21909b1c3e060d1926  libstdc++-v3/testsuite/25_algorithms/clamp/constrained.cc
! 9e8e0304dd91f2b620e1392d8a3d8c6f  libstdc++-v3/testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc
! b0099518ae4ec80f4f31eb740fbf4acf  libstdc++-v3/testsuite/25_algorithms/clamp/requirements/explicit_instantiation/pod.cc
! c6e8e7cdd4cdeb553597287ca39dc001  libstdc++-v3/testsuite/25_algorithms/constexpr_macro.cc
! 053e23e4178851270af265355239c823  libstdc++-v3/testsuite/25_algorithms/copy/1.cc
! dcca2e799b172b6ae7558afec256a1a4  libstdc++-v3/testsuite/25_algorithms/copy/2.cc
! 13c82658bb8ef4ccd96377e0ccd5692a  libstdc++-v3/testsuite/25_algorithms/copy/3.cc
! 21aa1c4c96a6fdf471e5633f95316382  libstdc++-v3/testsuite/25_algorithms/copy/34595.cc
! bd0fbcb5db9b9f8cd4dc55a21d39d8eb  libstdc++-v3/testsuite/25_algorithms/copy/4.cc
! 0ab408076b76ee456758b743f13236c0  libstdc++-v3/testsuite/25_algorithms/copy/58982.cc
! 879873f67941456c02e489257c811023  libstdc++-v3/testsuite/25_algorithms/copy/86658.cc
! 37092a5d667f0f28b7e935968d25aae8  libstdc++-v3/testsuite/25_algorithms/copy/94013.cc
! 45915ce0a8f26f04668919afa3a1813b  libstdc++-v3/testsuite/25_algorithms/copy/95578.cc
! 0c8ee5b6733184cae3f4d172c8c52482  libstdc++-v3/testsuite/25_algorithms/copy/constexpr.cc
! a856949ff52e618021f41e850f7bc19b  libstdc++-v3/testsuite/25_algorithms/copy/constrained.cc
! 88c4528cea53c54b25e61640d60c4a0f  libstdc++-v3/testsuite/25_algorithms/copy/debug/1_neg.cc
! 13b2ddea0038c1efaabdac86c47114a4  libstdc++-v3/testsuite/25_algorithms/copy/debug/2_neg.cc
! 760427e630997a8203a7268ee08a95d0  libstdc++-v3/testsuite/25_algorithms/copy/debug/95289.cc
! 9a3a0ade660f9884db589ce72a2d98f1  libstdc++-v3/testsuite/25_algorithms/copy/debug/99402.cc
! 4af1d64b7b67cfcaf88e49e3a2a7f2de  libstdc++-v3/testsuite/25_algorithms/copy/debug/constexpr_neg.cc
  a4e3b919e921272cb082f7fa810f39d2  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/1.cc
! e743ffe0642314b6d9ca04036acacacb  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/2.cc
! 9bf93afe07f5e4ca802a9a5a9ec49e00  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/31.cc
! 65a953c4ce68c438f61c97c0a6c5257f  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/32.cc
! a696f1bee9e8885b71f3a383d4708836  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/33.cc
! 3c05075f6c4fcd4e4d76ea6c62046a5b  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/41.cc
! b96915e0b639c3059d258c328da12b96  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/42.cc
! b2ca47b38a5ee4b25be2011cdacc40e0  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/43.cc
! d632c0e6c0d77f23264739bb96299afb  libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/1.cc
! 2b3a99acaa8b94c3b201cf600df2e1b6  libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/69478.cc
! 82ff5026bab8cd037930900500de4ea5  libstdc++-v3/testsuite/25_algorithms/copy/requirements/explicit_instantiation/2.cc
! 044e24c19a1bb72860bb383b5badf25e  libstdc++-v3/testsuite/25_algorithms/copy/requirements/explicit_instantiation/pod.cc
! ddceebf534475c6e0b7d35e0af9b0656  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc
! 4a6cf9239d69a0c6ce132fdd6cf41178  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc
! 06c250c13204204e013c284fe9658223  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc
! 1f401ee324f0b1b2d3b328c6f4623c4d  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc
! be4ae6fd309901fa170f3dfd63010efa  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/debug/deque_neg.cc
! 6b692c9ade6d0bb9aa56f6d69fed96fd  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc
! 9090bcc90fa01efd343f5f5ef1b216b1  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc
! c8c9ba876e02f67cf14a0033428a2ec6  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc
! 0643bf41b1c740c1ef14d3be0df7cc1e  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc
! 25a06f48a57e215a75009f7bd3e744c4  libstdc++-v3/testsuite/25_algorithms/copy_backward/94013.cc
! a5ab4abb427020d773229fe079af886d  libstdc++-v3/testsuite/25_algorithms/copy_backward/95578.cc
! d95c001a40919a2726a61342f79e879e  libstdc++-v3/testsuite/25_algorithms/copy_backward/constexpr.cc
! af28e7652522eda92f1bd96e7a54ddd0  libstdc++-v3/testsuite/25_algorithms/copy_backward/constrained.cc
! 56e2a6805683f12a80025315e3c0a46b  libstdc++-v3/testsuite/25_algorithms/copy_backward/debug/1_neg.cc
! c083aca0a57f538f8dcaea229aed51a0  libstdc++-v3/testsuite/25_algorithms/copy_backward/debug/2_neg.cc
! bf447c73ef970e539424adaeb3d41c1d  libstdc++-v3/testsuite/25_algorithms/copy_backward/debug/3_neg.cc
! 3fe22fdce6cd9e61fe30b1094487c30a  libstdc++-v3/testsuite/25_algorithms/copy_backward/debug/constexpr_neg.cc
  da1fb78d5a3cd469ddf537052865be96  libstdc++-v3/testsuite/25_algorithms/copy_backward/deque_iterators/1.cc
! 03b332c9e78417ec5e7c4e41342fc8de  libstdc++-v3/testsuite/25_algorithms/copy_backward/deque_iterators/2.cc
! 2a4d24be8e48cecc6d72468cb39d8a27  libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/1.cc
! 3b53c1fc7abe829b7ae31480a2250cf4  libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/69478.cc
! 7507237480711b7d9889f972a088cfb7  libstdc++-v3/testsuite/25_algorithms/copy_backward/requirements/explicit_instantiation/2.cc
! d3f47d6f7c7a9270106c4c166fbd361f  libstdc++-v3/testsuite/25_algorithms/copy_backward/requirements/explicit_instantiation/pod.cc
! 8b5620247bdabcf989e1a205a744ea8e  libstdc++-v3/testsuite/25_algorithms/copy_if/check_type.cc
! 78f28cb5245f7c3c579075f70d0d3ae4  libstdc++-v3/testsuite/25_algorithms/copy_if/constexpr.cc
! d6e2c0facef6fd370f275000cb87bcd6  libstdc++-v3/testsuite/25_algorithms/copy_if/constrained.cc
! 4e0435737cec973fe5414dbd24e2ef6e  libstdc++-v3/testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/2.cc
! 227a2f6ebf375bd292c4971341a5cbb3  libstdc++-v3/testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/pod.cc
! fd16aafe842baf16280cc5058fbf96a3  libstdc++-v3/testsuite/25_algorithms/copy_n/1.cc
! 06b720ca86e3c150660272be1c20c686  libstdc++-v3/testsuite/25_algorithms/copy_n/2.cc
! 3a85187302c43df0b5d7373d81783745  libstdc++-v3/testsuite/25_algorithms/copy_n/3.cc
! 487138d29d457af64bf287c71b5ac498  libstdc++-v3/testsuite/25_algorithms/copy_n/4.cc
! ff2f66de60b46a281fdf146958aa5cd8  libstdc++-v3/testsuite/25_algorithms/copy_n/5.cc
! e728334f59c842be79e5e1a9994779cb  libstdc++-v3/testsuite/25_algorithms/copy_n/50119.cc
! 11d5927a220ad115a5f463cf6033f290  libstdc++-v3/testsuite/25_algorithms/copy_n/58982.cc
! 0d94cb6fe4691c8c05c91e8327ff5114  libstdc++-v3/testsuite/25_algorithms/copy_n/constexpr.cc
! ef617eb959138f370f8d6d1f597d1d41  libstdc++-v3/testsuite/25_algorithms/copy_n/constrained.cc
! 7bb2930b1509d447255188a0124ca2c4  libstdc++-v3/testsuite/25_algorithms/copy_n/debug/1_neg.cc
! 4074e14bb2f9ca60a300fd6ce3b716b9  libstdc++-v3/testsuite/25_algorithms/copy_n/debug/2_neg.cc
! 4083c30fe908cd9660a67f06e9764604  libstdc++-v3/testsuite/25_algorithms/copy_n/debug/istreambuf_ite_deque_neg.cc
! 1f65e8f4b827390fb808bcdfc6436c23  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/1.cc
! ba1b0b6aa962c591f1626f71a674a306  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/1_neg.cc
! 4cb11f3da17c1caefcd564f3b736b1eb  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/2.cc
! ed49e2a091abb8074e4d57e0a81d1d1c  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/2_neg.cc
! 3078bd4de8a0d2ae4ee2674bd2a28735  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/deque.cc
! 6b28ead8a4d0259d5762445928676acd  libstdc++-v3/testsuite/25_algorithms/copy_n/move_iterators/1.cc
! 4263c26f5dfc20e2ba7175ca30ac1ddf  libstdc++-v3/testsuite/25_algorithms/copy_n/requirements/explicit_instantiation/2.cc
! bddd8ec69103a1dba9efaac9f2271c2c  libstdc++-v3/testsuite/25_algorithms/copy_n/requirements/explicit_instantiation/pod.cc
! 78fb5d8414dbf2fb3b1bce60e1c8653f  libstdc++-v3/testsuite/25_algorithms/count/1.cc
! 4c06c9d29822cc0c501c0eb7946612da  libstdc++-v3/testsuite/25_algorithms/count/check_type.cc
! 0746e34348e64208f14d742a826241cc  libstdc++-v3/testsuite/25_algorithms/count/constexpr.cc
! a0501fc7a5f2d2b94faf80d3ca27740f  libstdc++-v3/testsuite/25_algorithms/count/constrained.cc
! 898318eefe35d54c37087ba3137a53c6  libstdc++-v3/testsuite/25_algorithms/count/requirements/explicit_instantiation/2.cc
! 75118fdfffdc8c0bffc5dfa47f4d9e7a  libstdc++-v3/testsuite/25_algorithms/count/requirements/explicit_instantiation/pod.cc
! 9f6dc81b3bd9e1fdc5cc88a604e232b5  libstdc++-v3/testsuite/25_algorithms/count_if/1.cc
! 4b953c74693ce4e96aecc91b1a8fd713  libstdc++-v3/testsuite/25_algorithms/count_if/check_type.cc
! 22d3b8b020412dbd37536a555b28f7bb  libstdc++-v3/testsuite/25_algorithms/count_if/constexpr.cc
! 13d3791d590e555690e6379ed6a980be  libstdc++-v3/testsuite/25_algorithms/count_if/constrained.cc
! f6acbf1a23fff6c855c2d9ec97b3fdc4  libstdc++-v3/testsuite/25_algorithms/count_if/requirements/explicit_instantiation/2.cc
! a53cc5e36503f375efe6d8d912baa583  libstdc++-v3/testsuite/25_algorithms/count_if/requirements/explicit_instantiation/pod.cc
! 3f91619d204ec0f1e175fc4bd222fbf6  libstdc++-v3/testsuite/25_algorithms/cpp_lib_constexpr.cc
! 4a2d972d68ab9087d2786be83e9d9cbb  libstdc++-v3/testsuite/25_algorithms/equal/1.cc
! c08fd15fb657b679b9a9cfb95e2a63b1  libstdc++-v3/testsuite/25_algorithms/equal/2.cc
! 75731329258ad0c61ed69568750fcea1  libstdc++-v3/testsuite/25_algorithms/equal/94013.cc
! 8c0bcc64648f6b0a62a1ea268f791e62  libstdc++-v3/testsuite/25_algorithms/equal/95578.cc
! 3d6fae1512b4e86079c1efce7c06e2d4  libstdc++-v3/testsuite/25_algorithms/equal/check_type.cc
! 172a0df6dc265dd889da56bf9baffe9e  libstdc++-v3/testsuite/25_algorithms/equal/check_type2.cc
! 321205ba65fe45207bfdea92466894a7  libstdc++-v3/testsuite/25_algorithms/equal/constexpr.cc
! 3cdbfb2bf2faf64f370a553e541651cc  libstdc++-v3/testsuite/25_algorithms/equal/constexpr_neg.cc
! bab5d550cc7c5262d25e78341d6442bb  libstdc++-v3/testsuite/25_algorithms/equal/constrained.cc
! e1a6cea037c01ec42b7d292e95c35490  libstdc++-v3/testsuite/25_algorithms/equal/debug/1_neg.cc
! 5b7f430a6ce4d843f465f8d1fbd74dec  libstdc++-v3/testsuite/25_algorithms/equal/debug/2_neg.cc
! e0b4f42e708e4b9dedb62dbdf622b8e2  libstdc++-v3/testsuite/25_algorithms/equal/debug/3_neg.cc
! 9222c7bf70f53a39bda75d14f5edbb03  libstdc++-v3/testsuite/25_algorithms/equal/debug/constexpr_neg.cc
! 05b1de4284204b7162bf3b92b82acaa5  libstdc++-v3/testsuite/25_algorithms/equal/deque_iterators/1.cc
! ef0ed71ca0f466be1ed2af868761c94f  libstdc++-v3/testsuite/25_algorithms/equal/no_operator_ne.cc
! 28b5c14c58649ea2599978f8225a71e7  libstdc++-v3/testsuite/25_algorithms/equal/requirements/explicit_instantiation/2.cc
! c570619f12a1f5869836081070914df1  libstdc++-v3/testsuite/25_algorithms/equal/requirements/explicit_instantiation/pod.cc
! 627415a7fddcf23edd0aa8efa3f13c69  libstdc++-v3/testsuite/25_algorithms/equal_range/1.cc
! 69098dca74aa5a961b9a73e62497c673  libstdc++-v3/testsuite/25_algorithms/equal_range/2.cc
! d8425f87472f19a4f685823e26a94f1a  libstdc++-v3/testsuite/25_algorithms/equal_range/check_type.cc
! b4263f3ab20e116d569e29c3ecb4a525  libstdc++-v3/testsuite/25_algorithms/equal_range/constexpr.cc
! 447e8b1d50439e0b867b4d0dbc812de8  libstdc++-v3/testsuite/25_algorithms/equal_range/constrained.cc
! 4290d99693c401befdfbca118ea46dfa  libstdc++-v3/testsuite/25_algorithms/equal_range/partitioned.cc
! 569415f217ae94d5a24bd1b06d928337  libstdc++-v3/testsuite/25_algorithms/equal_range/requirements/explicit_instantiation/2.cc
! 096f5c3dadbe9feeb2293de3d94a3bdf  libstdc++-v3/testsuite/25_algorithms/equal_range/requirements/explicit_instantiation/pod.cc
! 6db4991f9bf2471dbdc3ae0945f9af66  libstdc++-v3/testsuite/25_algorithms/fill/1.cc
! fdadbd0508287a505eef916751ab6c74  libstdc++-v3/testsuite/25_algorithms/fill/2.cc
! 2834db5a53426ba7d8e2ea0f41c6c7c7  libstdc++-v3/testsuite/25_algorithms/fill/3.cc
! 7ce20b51c600f2b02df76fe99f3a6213  libstdc++-v3/testsuite/25_algorithms/fill/35725.cc
! 65dbbfd3045ddec5b13b829a58d8f545  libstdc++-v3/testsuite/25_algorithms/fill/4.cc
! 500766b6c0cf38b01c376501a147b0c3  libstdc++-v3/testsuite/25_algorithms/fill/94013.cc
! fd35a8637b2c05fc3606acfcdf14de7e  libstdc++-v3/testsuite/25_algorithms/fill/94017.cc
! ff880569cc92eb14b3b983472b24abe6  libstdc++-v3/testsuite/25_algorithms/fill/bvector/1.cc
! 7bc9bcd513486ad198e30af162b3d161  libstdc++-v3/testsuite/25_algorithms/fill/constexpr.cc
! 27fbe8ddda6735fca69178e8bc7bbb0b  libstdc++-v3/testsuite/25_algorithms/fill/constrained.cc
! 3e880deb41883c8ab4fdbcd03daea805  libstdc++-v3/testsuite/25_algorithms/fill/deque_iterators/1.cc
! 358000bba65216818ea4bc41b6ef55dd  libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/2.cc
! 560f8a06611fbcfc4b6d4e193a777ae3  libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/pod.cc
! 2805b5c74ef4afba2ef800f90a18e5d2  libstdc++-v3/testsuite/25_algorithms/fill_n/1.cc
! 1f1cf231f8a6415d190b8ba3922a82a1  libstdc++-v3/testsuite/25_algorithms/fill_n/2.cc
! adb0f161f5e50502f44a4844e0556ada  libstdc++-v3/testsuite/25_algorithms/fill_n/25306.cc
! 542732f852db437171daa067e0dc5bc0  libstdc++-v3/testsuite/25_algorithms/fill_n/35725.cc
! 33e3f23eaff0f79ae4490be6d3c95d27  libstdc++-v3/testsuite/25_algorithms/fill_n/87982.cc
! bd12ad788a871ad7bc1200ce7ffffacf  libstdc++-v3/testsuite/25_algorithms/fill_n/87982_neg.cc
! 9cae8e7b121b221dd9e14d658a7926e1  libstdc++-v3/testsuite/25_algorithms/fill_n/94017.cc
! 2ef4dd995a04a06ddca0078ed51e41ce  libstdc++-v3/testsuite/25_algorithms/fill_n/constexpr.cc
! 05b49a226ef97f64bc4b6978f1caf079  libstdc++-v3/testsuite/25_algorithms/fill_n/constrained.cc
! 7201a12995c263954600ba2f946368fc  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/1_neg.cc
! c9442a86b817319cac8273413c0db9e6  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/2_neg.cc
! 5d9cba9d7d7047d6049ed17de055f446  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/3_neg.cc
! bcbc3c47d37a8361c9ea46307d78e738  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/4_neg.cc
! e28d22a2d05b56763803a7aa51b76c32  libstdc++-v3/testsuite/25_algorithms/fill_n/dr426.cc
! 28b5c14c58649ea2599978f8225a71e7  libstdc++-v3/testsuite/25_algorithms/fill_n/requirements/explicit_instantiation/2.cc
! c570619f12a1f5869836081070914df1  libstdc++-v3/testsuite/25_algorithms/fill_n/requirements/explicit_instantiation/pod.cc
! 791fb196b1d8c152a846782bdd5ece4b  libstdc++-v3/testsuite/25_algorithms/find/1.cc
! 61988cb33dfd284eb880263ea660a1a0  libstdc++-v3/testsuite/25_algorithms/find/17441.cc
! 915febb8005e187d802557ef055a9ecd  libstdc++-v3/testsuite/25_algorithms/find/39546.cc
! 63f906013f7dfa9070fd549df3a2379d  libstdc++-v3/testsuite/25_algorithms/find/check_type.cc
! 4f28fc6481b5464d9ac60abf61077a87  libstdc++-v3/testsuite/25_algorithms/find/constexpr.cc
! db68a0ca6d066b6bdeb073d1cb05800c  libstdc++-v3/testsuite/25_algorithms/find/constrained.cc
! 6380837015b428e6505a3e9ef17b849b  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc
! d6bf36d3178e04358be7357ed2e60182  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc
! 9da4946f0681aad3fab7bfc36d537e62  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc
! 0e46ab025c440695a18f6b8747861c6c  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc
! eb2dafcd7ae58f1dce89b54d17951126  libstdc++-v3/testsuite/25_algorithms/find/requirements/explicit_instantiation/2.cc
! 7ced3ac6704bca5b576573177cc1e0e5  libstdc++-v3/testsuite/25_algorithms/find/requirements/explicit_instantiation/pod.cc
! d6292640a43273fcca5c196a4b8e183f  libstdc++-v3/testsuite/25_algorithms/find/vectorbool.cc
! 78be7d4f448b3828b2ec63e23165ce98  libstdc++-v3/testsuite/25_algorithms/find_end/1.cc
! d4458de1a78a2e1b19173033381cdba5  libstdc++-v3/testsuite/25_algorithms/find_end/check_type.cc
! a2468439b321fe1e207833ef63f8ac91  libstdc++-v3/testsuite/25_algorithms/find_end/constexpr.cc
! 6f2aa71b6b0fc2db61be52635ff2caa7  libstdc++-v3/testsuite/25_algorithms/find_end/constrained.cc
! f0a5c229e329cf6a37fb394388f27190  libstdc++-v3/testsuite/25_algorithms/find_end/requirements/explicit_instantiation/2.cc
! 34a5987d04f3e959c2949496d5114f15  libstdc++-v3/testsuite/25_algorithms/find_end/requirements/explicit_instantiation/pod.cc
! d17dbfe46956da4a6e8e1d8eae3ce843  libstdc++-v3/testsuite/25_algorithms/find_end/vectorbool.cc
! 59719357bf287fdc43a6639382c59337  libstdc++-v3/testsuite/25_algorithms/find_first_of/1.cc
! 3c42ffbcfd5a8f223c574c0af90f02cd  libstdc++-v3/testsuite/25_algorithms/find_first_of/check_type.cc
! 836853f736bff16daaa8a60bba9d8c35  libstdc++-v3/testsuite/25_algorithms/find_first_of/concept_check_1.cc
! e60ab11e378e6417c082cad077e73d74  libstdc++-v3/testsuite/25_algorithms/find_first_of/constexpr.cc
! 4c7505fc775129b5c836712b2bcb458c  libstdc++-v3/testsuite/25_algorithms/find_first_of/constrained.cc
! c7524bb80a1303a1edbe1bab53a5040f  libstdc++-v3/testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/2.cc
! 4d5c676e4f4eb9e3567bf7c3ae3b90d8  libstdc++-v3/testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/pod.cc
! 0a079a319bb43e5e09dc99a5efbc4d3c  libstdc++-v3/testsuite/25_algorithms/find_first_of/vectorbool.cc
! ef4ad5d97edd9b8cd38d2843a762cb00  libstdc++-v3/testsuite/25_algorithms/find_if/1.cc
! b698b7d8aa84e97482fb6a6512d28eed  libstdc++-v3/testsuite/25_algorithms/find_if/check_type.cc
! e976c5b413175600f2ffc12263d9854c  libstdc++-v3/testsuite/25_algorithms/find_if/constexpr.cc
! 55b3d80b873fa3ba8669ae1376f7071a  libstdc++-v3/testsuite/25_algorithms/find_if/constrained.cc
! 2126c05dbb4c95e8729dc67658867b32  libstdc++-v3/testsuite/25_algorithms/find_if/requirements/explicit_instantiation/2.cc
! e2c6bf90c0546c776c6de471828b8304  libstdc++-v3/testsuite/25_algorithms/find_if/requirements/explicit_instantiation/pod.cc
! d6292640a43273fcca5c196a4b8e183f  libstdc++-v3/testsuite/25_algorithms/find_if/vectorbool.cc
! 3527589ca665a67c6ea032c6ae08bbce  libstdc++-v3/testsuite/25_algorithms/find_if_not/1.cc
! 3a8fc358f33eb82139d1d330d57eede8  libstdc++-v3/testsuite/25_algorithms/find_if_not/check_type.cc
! 4b913152696a2f9d8a6a43abd5ef21bd  libstdc++-v3/testsuite/25_algorithms/find_if_not/constexpr.cc
! 073de63a574b7876419a75220c23b99f  libstdc++-v3/testsuite/25_algorithms/find_if_not/constrained.cc
! 73cb5981bb61a8932e24a61136d7c9af  libstdc++-v3/testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/2.cc
! a7f4c862382b5457479543595bbe994e  libstdc++-v3/testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/pod.cc
! c083b40b562b97966bc2ad1edf800426  libstdc++-v3/testsuite/25_algorithms/find_if_not/vectorbool.cc
! 02953c5b049327e2cbac0a2c4b9d1890  libstdc++-v3/testsuite/25_algorithms/for_each/1.cc
! d57c3ae09b652dbf086fa4472d042635  libstdc++-v3/testsuite/25_algorithms/for_each/constexpr.cc
! f1fdf0d44bfcbcfc709aeff60e0c6610  libstdc++-v3/testsuite/25_algorithms/for_each/constrained.cc
! 361e4185c712a689b70d507977079cda  libstdc++-v3/testsuite/25_algorithms/for_each/for_each_n.cc
! dc073fc29d47a6d1a65308820e48a177  libstdc++-v3/testsuite/25_algorithms/for_each/for_each_n_debug.cc
! bc54b4db5563053cbe133fca9a5b8c8b  libstdc++-v3/testsuite/25_algorithms/for_each/requirements/explicit_instantiation/2.cc
! 71d9fba1b5b0fd6d8fc0c46c55274290  libstdc++-v3/testsuite/25_algorithms/for_each/requirements/explicit_instantiation/pod.cc
! 7567ef8046ab3eda4d87559aedd7100e  libstdc++-v3/testsuite/25_algorithms/generate/constexpr.cc
! 533496860012d08333fac4fa5517f9e9  libstdc++-v3/testsuite/25_algorithms/generate/constrained.cc
! c8ca094e079fd3995e9d2f012eb78fee  libstdc++-v3/testsuite/25_algorithms/generate/requirements/explicit_instantiation/2.cc
! af8af84e0a0aadcd8d0a61b701e60d82  libstdc++-v3/testsuite/25_algorithms/generate/requirements/explicit_instantiation/pod.cc
! fa8ae2a0f2bd2faad156d10cff9d596a  libstdc++-v3/testsuite/25_algorithms/generate_n/1.cc
! 6f519547986882f698c2b764a5486610  libstdc++-v3/testsuite/25_algorithms/generate_n/25306.cc
! 60d6b1cb772c5a99b18b540e0964a8e2  libstdc++-v3/testsuite/25_algorithms/generate_n/87982.cc
! b057e5104e4bc874b02cec85799369f7  libstdc++-v3/testsuite/25_algorithms/generate_n/87982_neg.cc
! 253e2e1d9bf6cbb5827d7373c182a410  libstdc++-v3/testsuite/25_algorithms/generate_n/constexpr.cc
! 426f907837ad07214ccd85a7361e7464  libstdc++-v3/testsuite/25_algorithms/generate_n/constrained.cc
! 5f04efa2ba5a75d6311ddff6894a997a  libstdc++-v3/testsuite/25_algorithms/generate_n/dr426.cc
! ae29a3354b6387fb44db95c3ab76d096  libstdc++-v3/testsuite/25_algorithms/generate_n/requirements/explicit_instantiation/2.cc
! b7bc1216510e545404b388657eb769ce  libstdc++-v3/testsuite/25_algorithms/generate_n/requirements/explicit_instantiation/pod.cc
! ab8843182974e48c0eacea71898279f1  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/algorithm_parallel_mode.cc
! f781b3cd51ad89fd392338a3ad2ca53e  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm.cc
! 713c8854bac9001e6767129ce98ba46e  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_assert.cc
! a4295d74406f0076c94c68ce7393237f  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_assert2.cc
! 4d551bb62137c1f74896a20b2f17748a  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed1.cc
! 73a89692db4ac45ccd4083235b118444  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed2.cc
! a17588c37544b437d9a4b58f524e49a9  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/synopsis.cc
! fe357b5ddb22a61b4d529ba2261bcd64  libstdc++-v3/testsuite/25_algorithms/headers/cstdlib/functions_std.cc
! c553672d90e17cedf522e53041e82367  libstdc++-v3/testsuite/25_algorithms/heap/1.cc
! 4824d40e4857770b7c35f8d476b410a4  libstdc++-v3/testsuite/25_algorithms/heap/constrained.cc
! 76a2b9721a8cf2a58c835f1d175638f2  libstdc++-v3/testsuite/25_algorithms/heap/moveable.cc
! f3c2dc94659ece550362b9e37eb8f730  libstdc++-v3/testsuite/25_algorithms/heap/moveable2.cc
! 9bdcc93d13934d182fc5e944c0a3fac2  libstdc++-v3/testsuite/25_algorithms/heap/vectorbool.cc
! f7ab5637fab5d76b5434e176f441605f  libstdc++-v3/testsuite/25_algorithms/includes/1.cc
! 8d4ee4addd69695a4e2fcffa82db6554  libstdc++-v3/testsuite/25_algorithms/includes/check_type.cc
! 209401088fe05e6cf1a0962153afa3d0  libstdc++-v3/testsuite/25_algorithms/includes/constrained.cc
! 730de0c7eb56de8bb7b4d349cc9a95e5  libstdc++-v3/testsuite/25_algorithms/includes/requirements/explicit_instantiation/2.cc
! b7c7a6abdcaae2ff75e01a0483e447f8  libstdc++-v3/testsuite/25_algorithms/includes/requirements/explicit_instantiation/pod.cc
! 8eedb00016ec8b3a0cb7bf7175c7516e  libstdc++-v3/testsuite/25_algorithms/inplace_merge/1.cc
! 27c4ce5b48eab4f5004df952a0a8ac03  libstdc++-v3/testsuite/25_algorithms/inplace_merge/49559.cc
! 5a0ecf991ebefb635862f95709a92632  libstdc++-v3/testsuite/25_algorithms/inplace_merge/check_type.cc
! ff9a546a83d866bc8a16bab65c3280b5  libstdc++-v3/testsuite/25_algorithms/inplace_merge/constrained.cc
! 2ee05f77956043657b5dc59ba3e26066  libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable.cc
! 1c6ca192cef4456e994d486800e162a2  libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable2.cc
! 8264beab8b9789d324ee71de5994c30d  libstdc++-v3/testsuite/25_algorithms/inplace_merge/requirements/explicit_instantiation/2.cc
! 8f0a148707a6d50625e9135b46c829fa  libstdc++-v3/testsuite/25_algorithms/inplace_merge/requirements/explicit_instantiation/pod.cc
! ab86276cb4d9ff7e077d3624aa1d286f  libstdc++-v3/testsuite/25_algorithms/is_heap/1.cc
! 7efe10ff19c181b51b8368dd189cf909  libstdc++-v3/testsuite/25_algorithms/is_heap/constexpr.cc
! 6b899f05721c8cdd3416e3f544e30b3f  libstdc++-v3/testsuite/25_algorithms/is_heap/requirements/explicit_instantiation/2.cc
! af5e07be95e905e8fed0614934e3dd2a  libstdc++-v3/testsuite/25_algorithms/is_heap/requirements/explicit_instantiation/pod.cc
! 845394b8b2503d23855e2cff04d941e0  libstdc++-v3/testsuite/25_algorithms/is_heap_until/1.cc
! a9e84df520a345f1fa913d0ffe9da26e  libstdc++-v3/testsuite/25_algorithms/is_heap_until/constexpr.cc
! 25700e1495d0038bc4eb799f198100ca  libstdc++-v3/testsuite/25_algorithms/is_heap_until/requirements/explicit_instantiation/2.cc
! 1ee546283ee5be0f713592d7dc749501  libstdc++-v3/testsuite/25_algorithms/is_heap_until/requirements/explicit_instantiation/pod.cc
! 0466924c76bf1ab717f5bd614d2855ab  libstdc++-v3/testsuite/25_algorithms/is_partitioned/1.cc
! dd0b2aca49bb7670c2ae78d31414441d  libstdc++-v3/testsuite/25_algorithms/is_partitioned/2.cc
! e0a10b226f45c3a9c39ab0cf55e1b893  libstdc++-v3/testsuite/25_algorithms/is_partitioned/check_type.cc
! 1cbfefa0f6e3070ffcbb7b73beeb7255  libstdc++-v3/testsuite/25_algorithms/is_partitioned/constexpr.cc
! df92f1850791a4b570bc0caf81b14dc0  libstdc++-v3/testsuite/25_algorithms/is_partitioned/constrained.cc
! 8b118095e31c63a13ec30f202389ed2f  libstdc++-v3/testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/2.cc
! 6506c41f3ae28d97c1fc7d9b2cdc001b  libstdc++-v3/testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/pod.cc
! f5bb5f715db38a2f535c7afc9df34ed8  libstdc++-v3/testsuite/25_algorithms/is_permutation/1.cc
! 83acce24faa7ff03104569cffea59523  libstdc++-v3/testsuite/25_algorithms/is_permutation/2.cc
! 3e3b1d3a41e2a78ad719c161460c5037  libstdc++-v3/testsuite/25_algorithms/is_permutation/64646.cc
! 531ba80c472bd96de3ba4d54728eaaaa  libstdc++-v3/testsuite/25_algorithms/is_permutation/check_type.cc
! d4eb6bf76f91ff3174a4d69816cd866d  libstdc++-v3/testsuite/25_algorithms/is_permutation/check_type2.cc
! 67d43049bb9d99bdde74ea57394e5e96  libstdc++-v3/testsuite/25_algorithms/is_permutation/constexpr.cc
! 52a923bb59cb4ee07eba2458f7ce9ceb  libstdc++-v3/testsuite/25_algorithms/is_permutation/constrained.cc
! 20d230c38a0b1142163c4b79a0f6b5fb  libstdc++-v3/testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/2.cc
! fbb20a4f7a8b90203cdbaebc825668ed  libstdc++-v3/testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/pod.cc
! 74f1bb749020f13d841d51e77325824f  libstdc++-v3/testsuite/25_algorithms/is_permutation/vectorbool.cc
! 50083aaf403d774b682ee0979690e782  libstdc++-v3/testsuite/25_algorithms/is_sorted/1.cc
! 5b3099e32c6f585d1d746e5255b4140d  libstdc++-v3/testsuite/25_algorithms/is_sorted/constexpr.cc
! 169bd743975d02bd23591055df9e4fb9  libstdc++-v3/testsuite/25_algorithms/is_sorted/constrained.cc
! c6f500f00e44bbd96ff35487daf6d145  libstdc++-v3/testsuite/25_algorithms/is_sorted/requirements/explicit_instantiation/2.cc
! 53e42f5591be4ac8b982c2b9088ebbae  libstdc++-v3/testsuite/25_algorithms/is_sorted/requirements/explicit_instantiation/pod.cc
! 2e14a0d7001767d6a1fc6c04bf503862  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/1.cc
! 442e943665e95ec06e1a4605c9a2ad1e  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/constexpr.cc
! 9c078a277aa8da2a3f659a5045a40375  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/constrained.cc
! 96b43f9e982cfd6b33897850be9e8e24  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/requirements/explicit_instantiation/2.cc
! d8bbaa894499fca1c91a37928e5bb723  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/requirements/explicit_instantiation/pod.cc
! 211a987128d1d427edbe066bb5fe6374  libstdc++-v3/testsuite/25_algorithms/iter_swap/20577.cc
! c286a2e2252d85d98049125fdafd4f26  libstdc++-v3/testsuite/25_algorithms/iter_swap/constexpr.cc
! d8ddd7801dcd57b02b7cc59b69d89c6f  libstdc++-v3/testsuite/25_algorithms/iter_swap/requirements/explicit_instantiation/2.cc
! 35413b292b9b0d672248a425a0683158  libstdc++-v3/testsuite/25_algorithms/iter_swap/requirements/explicit_instantiation/pod.cc
! b2f448255e54be9b4fac7edbf2143487  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/1.cc
! 9b76a42693f98445cdd65b810ace48e1  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/71545.cc
! f427f9830493e633c3f13019712b70f1  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/93972.cc
! 5cd700af43bccab7a8b90a86a9b8ab3b  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/94013.cc
! 815c0bdc27100468d4090253b2c53d89  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/95578.cc
! 126e9692de96cfe9c31afe48af868580  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/check_type.cc
! 4819aa98066d478fce0ec878d586112a  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/constexpr.cc
! 5177aa792b200226e0caa89c78cc3851  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/constrained.cc
! 393fb8a9ea97b80de6e74135677da0a5  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/deque_iterators/1.cc
! 3b19786189f36f21b08bda28d4c855c8  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/requirements/explicit_instantiation/2.cc
! c49a93ba5f42ad7385af4b2d1ff4ba82  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/requirements/explicit_instantiation/pod.cc
! 640fc753c0c48c0dd3d8a547f2c2087c  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/uchar.cc
! b056a7493beddef63083d87f003f557e  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare_three_way/1.cc
! 6dfb017270378eab34d0c7c47bc7a9aa  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare_three_way/constexpr.cc
! 389a6a205e6be8d24ba5d6a93282ace6  libstdc++-v3/testsuite/25_algorithms/lower_bound/1.cc
! 94e4d1fb0c2e04394a67f27d5f0ebc9f  libstdc++-v3/testsuite/25_algorithms/lower_bound/2.cc
! a70a0c54e03727302f807b7f88e0601a  libstdc++-v3/testsuite/25_algorithms/lower_bound/33613.cc
! ef1832bb3742a1b2baf2dedb09fd4db9  libstdc++-v3/testsuite/25_algorithms/lower_bound/check_type.cc
! 2017a6634921053f0fdaf3bf3ecaa14c  libstdc++-v3/testsuite/25_algorithms/lower_bound/constexpr.cc
! 66fe5267a4b3627599610922d8d38f2e  libstdc++-v3/testsuite/25_algorithms/lower_bound/constrained.cc
! 869372379a8acf20d6eed604f1e6fca4  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_neg.cc
! d0500f88b71c47b7caca5f6a7bfb0459  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_pred_neg.cc
! 8c2e643e06646bb0fbc0b5747d0498a5  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/constexpr_valid_range_neg.cc
! 422e3fac25c6b0491659d070dbdd2ba5  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc
! d397292596b3ba88558d12f1310c26a3  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/partitioned_neg.cc
! 9a50f0858fbee8c3e04175b275baac1a  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/partitioned_pred_neg.cc
! 369bcbb0889ac20378667a89ecb1a9f4  libstdc++-v3/testsuite/25_algorithms/lower_bound/no_operator_ne.cc
! 639c9618ee56a2e8d1fee38f039ff18e  libstdc++-v3/testsuite/25_algorithms/lower_bound/partitioned.cc
! 5942004f9af89f2b297fc35b42536942  libstdc++-v3/testsuite/25_algorithms/lower_bound/requirements/explicit_instantiation/2.cc
! a25dd68d0df2cb1f2e20360c4c705b88  libstdc++-v3/testsuite/25_algorithms/lower_bound/requirements/explicit_instantiation/pod.cc
! b693c1309b4ecbd750b186c229f5e058  libstdc++-v3/testsuite/25_algorithms/make_heap/80064.cc
! 1aea4786f272c52f8069ebbba71776d9  libstdc++-v3/testsuite/25_algorithms/make_heap/complexity.cc
! 123d8fec445c2c76deb84b5facd9bd1b  libstdc++-v3/testsuite/25_algorithms/make_heap/constexpr.cc
! e89a91d12b8e2062970f4a4b0fea8830  libstdc++-v3/testsuite/25_algorithms/make_heap/movable.cc
! 53f9cbdc4bfdc082e58c27402725d8ba  libstdc++-v3/testsuite/25_algorithms/make_heap/requirements/explicit_instantiation/2.cc
! cbe779094674767f2d7b69a444a0702c  libstdc++-v3/testsuite/25_algorithms/make_heap/requirements/explicit_instantiation/pod.cc
! 18fbdbc66d65fbc8bc4f813b6b1d59be  libstdc++-v3/testsuite/25_algorithms/max/1.cc
! bf0b48755e930aa09ed55a3d7094ac47  libstdc++-v3/testsuite/25_algorithms/max/2.cc
! cf7a864782c702d1a69a1103072a49f4  libstdc++-v3/testsuite/25_algorithms/max/3.cc
! 7344367a957e8cce10e079234bc8b3e2  libstdc++-v3/testsuite/25_algorithms/max/37547.cc
! 92d28c4b55436defe5bebf8598abff13  libstdc++-v3/testsuite/25_algorithms/max/4.cc
! 5edbbed3052a03813f9f07b04b034d65  libstdc++-v3/testsuite/25_algorithms/max/constexpr.cc
! 7d22d9843a843a468aa44d720e2b07ad  libstdc++-v3/testsuite/25_algorithms/max/constrained.cc
! 7e8587683731274b994ffb5940353d06  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/2.cc
! 9983d129fe019aa822ea24b9843d8973  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/3.cc
! f969b6ac5aa260ff37801d578a1f0306  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/pod.cc
! 398562318aae4032823f28592d0b057f  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/pod2.cc
! c4a8ac0e249df133044e32e857c15a44  libstdc++-v3/testsuite/25_algorithms/max_element/1.cc
! d7f9be8ca50dee1477ede4ee50a33f23  libstdc++-v3/testsuite/25_algorithms/max_element/check_type.cc
! 4208984011e982432092948f1a7ca067  libstdc++-v3/testsuite/25_algorithms/max_element/constexpr.cc
! f36ea1dd6487e02afcf934f91693fe14  libstdc++-v3/testsuite/25_algorithms/max_element/constrained.cc
! e0bb1ea688398b5a8b665a0b6ed5f470  libstdc++-v3/testsuite/25_algorithms/max_element/requirements/explicit_instantiation/2.cc
! b67b077358d0e023f813392ca1c41da4  libstdc++-v3/testsuite/25_algorithms/max_element/requirements/explicit_instantiation/pod.cc
! 4ad53b6f4155f1d4e1a7d4d1a450d28a  libstdc++-v3/testsuite/25_algorithms/merge/1.cc
! a4826771d4aef1f7191e1aff4b11ebe0  libstdc++-v3/testsuite/25_algorithms/merge/check_type.cc
! 551eef27b7c1ef921cb11bb2e35c8648  libstdc++-v3/testsuite/25_algorithms/merge/constexpr.cc
! fb3b3bac331848766589b984b77ad42f  libstdc++-v3/testsuite/25_algorithms/merge/constrained.cc
! 584708968e11060244dfbf910669c5f8  libstdc++-v3/testsuite/25_algorithms/merge/requirements/explicit_instantiation/2.cc
! e5916ef842e1968ecfe19e333d2f3cad  libstdc++-v3/testsuite/25_algorithms/merge/requirements/explicit_instantiation/pod.cc
! 59effef56057d59e6865a7cd4a6c8cf1  libstdc++-v3/testsuite/25_algorithms/min/1.cc
! d8ad4a196cc241dc57a4723c5d67eb05  libstdc++-v3/testsuite/25_algorithms/min/2.cc
! 07d9a620b596942bb50b41b72c1c3196  libstdc++-v3/testsuite/25_algorithms/min/3.cc
! dbcddd5872e0f261ee8ef964af38ca1a  libstdc++-v3/testsuite/25_algorithms/min/37547.cc
! 1a532211c8bedf82ab07217537b96ad5  libstdc++-v3/testsuite/25_algorithms/min/4.cc
! 9984db5f621dcf9e1180349d1776f22b  libstdc++-v3/testsuite/25_algorithms/min/concept_checks.cc
! 83c7a536cd74207a392bc56ec48247b5  libstdc++-v3/testsuite/25_algorithms/min/constexpr.cc
! 7f1652eb05bbc4d86a02a16280f77ed0  libstdc++-v3/testsuite/25_algorithms/min/constrained.cc
! 14be8495ee1a32aec87992918a6e4c10  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/2.cc
! d465b2e1b504bd0fa7f35a536ab7e03b  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/3.cc
! 5886a218d4cd37c1af9155d9278680b8  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/pod.cc
! f5ce6278c3627b7625487bf88be7ea69  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/pod2.cc
! 46edb5c3ebdcb5db7024ebb70e78b502  libstdc++-v3/testsuite/25_algorithms/min_element/1.cc
! f4a81889495f0558fcc681508b69fc26  libstdc++-v3/testsuite/25_algorithms/min_element/check_type.cc
! 2ee375b4e131976993297c4ac5dc13b7  libstdc++-v3/testsuite/25_algorithms/min_element/constexpr.cc
! 60b6e4bb4de27abdec3143519cdebc6e  libstdc++-v3/testsuite/25_algorithms/min_element/constrained.cc
! 096ad87e8e95012294bd76acaadf1c79  libstdc++-v3/testsuite/25_algorithms/min_element/requirements/explicit_instantiation/2.cc
! 3a7ab26271072669095d1fc8b0b6b656  libstdc++-v3/testsuite/25_algorithms/min_element/requirements/explicit_instantiation/pod.cc
! 04d16949e3d9e5faf70d00783e872221  libstdc++-v3/testsuite/25_algorithms/minmax/1.cc
! 19526fb0e45100fc19779753d1c76a24  libstdc++-v3/testsuite/25_algorithms/minmax/2.cc
! 45a1b3c03a775fac98745f03d2ed8bdf  libstdc++-v3/testsuite/25_algorithms/minmax/3.cc
! 293067558fba9a70a64a4710dd94835c  libstdc++-v3/testsuite/25_algorithms/minmax/37547.cc
! 24f01081ff3ac5d333835c9dde39d846  libstdc++-v3/testsuite/25_algorithms/minmax/constexpr.cc
! 05149ebe314519ad96cc8ace7e318002  libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc
! 42b3601531899a7d9f65fc286f5a7ab6  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/2.cc
! 80815723e26d59dcf6f075698ae16fd8  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/3.cc
! 15440a38bc0046faef9d709982757cc1  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/pod.cc
! 8eae20ab5711fd0499542495839b9a19  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/pod2.cc
! 1dbe660dc6ef92e664b4cdde30af491e  libstdc++-v3/testsuite/25_algorithms/minmax_element/1.cc
! 59e201bc09d73893ef5b9b271ed388aa  libstdc++-v3/testsuite/25_algorithms/minmax_element/check_type.cc
! 7542fc4fbed293ccac58660be7c44702  libstdc++-v3/testsuite/25_algorithms/minmax_element/constexpr.cc
! 2a7d031edf237cfb6346d79659892a7c  libstdc++-v3/testsuite/25_algorithms/minmax_element/constrained.cc
! 9f3b9eb73d4e19d138467eb60a44c70c  libstdc++-v3/testsuite/25_algorithms/minmax_element/requirements/explicit_instantiation/2.cc
! fcd5f32b02ece62486f4aeda569f4b47  libstdc++-v3/testsuite/25_algorithms/minmax_element/requirements/explicit_instantiation/pod.cc
! 063d1309645d9b424c692fb67dbf21e6  libstdc++-v3/testsuite/25_algorithms/mismatch/1.cc
! b0a91d9cc835866b802fec64257c942b  libstdc++-v3/testsuite/25_algorithms/mismatch/2.cc
! 0a01553643b9e570282a76a0460d827d  libstdc++-v3/testsuite/25_algorithms/mismatch/check_type.cc
! 717dc9d0b53fa844695d211ce7203ab0  libstdc++-v3/testsuite/25_algorithms/mismatch/check_type2.cc
! 5bc1608c08a8a3bce3a3086989e37412  libstdc++-v3/testsuite/25_algorithms/mismatch/constexpr.cc
! 7eafbd685f151101bb7d72e8347e75c4  libstdc++-v3/testsuite/25_algorithms/mismatch/constrained.cc
! ce52165e7b64c4474cd7a4510b678819  libstdc++-v3/testsuite/25_algorithms/move/1.cc
! fe2d7d571db188f036d9f737a42d9631  libstdc++-v3/testsuite/25_algorithms/move/69478.cc
! 138597d597be1c7bb6bf760221951b1c  libstdc++-v3/testsuite/25_algorithms/move/93872.cc
! c481e5e926bd5482086f725fee988614  libstdc++-v3/testsuite/25_algorithms/move/94013.cc
! 7f4c47f2585231deb19c22a359d2abd4  libstdc++-v3/testsuite/25_algorithms/move/95578.cc
! 4220d5c7ced38d9efd845d81407426e3  libstdc++-v3/testsuite/25_algorithms/move/constrained.cc
  c41fedc68e3cee79d652221a1c6b2c9a  libstdc++-v3/testsuite/25_algorithms/move/deque_iterators/1.cc
! 7f90edf77fe9772f53a72430e8d69939  libstdc++-v3/testsuite/25_algorithms/move/deque_iterators/2.cc
! a11b8b4d9f3bd35a40fe63156a9ae025  libstdc++-v3/testsuite/25_algorithms/move/requirements/explicit_instantiation/2.cc
! 24ea58a5dcb06858a17aeea27e49ad7b  libstdc++-v3/testsuite/25_algorithms/move/requirements/explicit_instantiation/pod.cc
! 025a568a748cea04ba976fa43f889dec  libstdc++-v3/testsuite/25_algorithms/move_backward/1.cc
! 2f6f13adbbca4714001ab531e722ec45  libstdc++-v3/testsuite/25_algorithms/move_backward/69478.cc
! d4e010be5f0bbb37a9133214d197e7a1  libstdc++-v3/testsuite/25_algorithms/move_backward/93872.cc
! ae7d0d9b0557e478afe1e1d9271f643a  libstdc++-v3/testsuite/25_algorithms/move_backward/94013.cc
! b4abdf61f07d3083da7ffd10b2088ff4  libstdc++-v3/testsuite/25_algorithms/move_backward/95578.cc
! 5d93bf59efb8d931dcb94e16418b2941  libstdc++-v3/testsuite/25_algorithms/move_backward/constrained.cc
  d798b4d62b339492aca582244b60767f  libstdc++-v3/testsuite/25_algorithms/move_backward/deque_iterators/1.cc
! 0c482a5205fb68027c67438d883cace4  libstdc++-v3/testsuite/25_algorithms/move_backward/deque_iterators/2.cc
! 8ddd7fd34b55d04e3fbf5e9d1c73ae0a  libstdc++-v3/testsuite/25_algorithms/move_backward/requirements/explicit_instantiation/2.cc
! 9390e9a096f634f2f272a8a8c0dc49cf  libstdc++-v3/testsuite/25_algorithms/move_backward/requirements/explicit_instantiation/pod.cc
! 04e4c27d889cd706327f80c07a4d90f3  libstdc++-v3/testsuite/25_algorithms/next_permutation/1.cc
! 2808fd168ac1c238e8bec3d66d769149  libstdc++-v3/testsuite/25_algorithms/next_permutation/check_type.cc
! 056a51d5b11f4b35c1f045a175a30f48  libstdc++-v3/testsuite/25_algorithms/next_permutation/constexpr.cc
! 45c2578ff44a26dca5dcf0c1abcbfe21  libstdc++-v3/testsuite/25_algorithms/next_permutation/constrained.cc
! 083a069f4d843d4ec37639f47bc8aa7e  libstdc++-v3/testsuite/25_algorithms/next_permutation/moveable.cc
! fbfc97eb5736112945600f348b1acb7b  libstdc++-v3/testsuite/25_algorithms/next_permutation/requirements/explicit_instantiation/2.cc
! e0c809e211f0884c2a391b630ed27aed  libstdc++-v3/testsuite/25_algorithms/next_permutation/requirements/explicit_instantiation/pod.cc
! 6743630dd87ecf7c775cad0839058d50  libstdc++-v3/testsuite/25_algorithms/none_of/1.cc
! fefbcb966089d87caddcf2b28f2c46b9  libstdc++-v3/testsuite/25_algorithms/none_of/check_type.cc
! 35068d82621a8305d59e1ffc09e907a1  libstdc++-v3/testsuite/25_algorithms/none_of/constexpr.cc
! 66587a58de677c02ea3ee053d7f3597e  libstdc++-v3/testsuite/25_algorithms/none_of/constrained.cc
! aafb3344f004007c7e81a42f8c42069c  libstdc++-v3/testsuite/25_algorithms/none_of/requirements/explicit_instantiation/2.cc
! 20f146fbc17cb0bfbc09fbcaae71b164  libstdc++-v3/testsuite/25_algorithms/none_of/requirements/explicit_instantiation/pod.cc
! 332b96ab552635aeee52560a7aa09df3  libstdc++-v3/testsuite/25_algorithms/nth_element/1.cc
! d902451c78f7e0837847f810a9b2e34e  libstdc++-v3/testsuite/25_algorithms/nth_element/2.cc
! d21db11f863c109a079c1ac7d6f37a0a  libstdc++-v3/testsuite/25_algorithms/nth_element/3.cc
! ddc621bf3b08ce2f28e7ff7ea3f6e68d  libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc
! 842afeb9aec3b749b45119b80d92bbbe  libstdc++-v3/testsuite/25_algorithms/nth_element/check_type.cc
! 458d8dd5f9a162640b657ef7a02b8ac8  libstdc++-v3/testsuite/25_algorithms/nth_element/constexpr.cc
! eae8f1e6f8506168cae8099ea1c2523d  libstdc++-v3/testsuite/25_algorithms/nth_element/constrained.cc
! b63739c78eb97c41affb0d33d8f03bc7  libstdc++-v3/testsuite/25_algorithms/nth_element/moveable.cc
! 32dbc34d16af5720a46bbff375f2d8e0  libstdc++-v3/testsuite/25_algorithms/nth_element/random_test.cc
! a65131c2340063dc457f9303d2c28ab3  libstdc++-v3/testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/2.cc
! 4070161188ddc7e3bc90b38b617e44b8  libstdc++-v3/testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/pod.cc
! 83e912b737610da11e7ea2ec588ba00b  libstdc++-v3/testsuite/25_algorithms/partial_sort/1.cc
! f3fe230ccdab027c278d713a83982839  libstdc++-v3/testsuite/25_algorithms/partial_sort/2.cc
! f3846a2c5c9257977dd12371715a6f20  libstdc++-v3/testsuite/25_algorithms/partial_sort/check_compare_by_value.cc
! 0e07b33a046dd6d05183540fb49a8dd5  libstdc++-v3/testsuite/25_algorithms/partial_sort/check_type.cc
! 4c5210d61264d8ea7ec5c23a60aa0f60  libstdc++-v3/testsuite/25_algorithms/partial_sort/constexpr.cc
! c2846111eb33b84a19e05354655f4cef  libstdc++-v3/testsuite/25_algorithms/partial_sort/constrained.cc
! 1314f6eb6523aff82e39cfc49167bfa7  libstdc++-v3/testsuite/25_algorithms/partial_sort/moveable.cc
! 0e328263cc6a4c8b46f4fd5c44bb0796  libstdc++-v3/testsuite/25_algorithms/partial_sort/random_test.cc
! b6a901a019e52c7531462855fb5e27c5  libstdc++-v3/testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/2.cc
! 5c1a12fd938a6b8c58ba93e5206caf61  libstdc++-v3/testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/pod.cc
! fa3f03089b402bffd19c3f5cca4e2122  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/1.cc
! fbbeedb720672a900d8f7aa63ab86097  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/2.cc
! 1a790e37ca71f7cb6b9dcf21e50f698e  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/check_type.cc
! fd27b855091f8dbfe49fcd9f26cef2d9  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/constexpr.cc
! 3236cfff4b4c691de54f935a0bc8a685  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/constrained.cc
! 571074709bd13a21cd1957333abaf7fe  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc
! 928eb7550c1b2aef523197c721b2824d  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/random_test.cc
! 00307f559e6c533634dcea019df3f7c0  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/2.cc
! 4e384538655d783747fde1964ba015f7  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/pod.cc
! 552346b0edf0083fe5c43248fc8a6b4e  libstdc++-v3/testsuite/25_algorithms/partition/1.cc
! c0ebf311f14acc6c9173e4061be5e356  libstdc++-v3/testsuite/25_algorithms/partition/constexpr.cc
! 8a773ee2083ba9cf52a59d157698542c  libstdc++-v3/testsuite/25_algorithms/partition/constrained.cc
! 96fd55fde76185f2572f3154768a3c93  libstdc++-v3/testsuite/25_algorithms/partition/moveable.cc
! ad3db5f54c86675e0f815086cd486771  libstdc++-v3/testsuite/25_algorithms/partition/requirements/explicit_instantiation/2.cc
! 893c71c8fec9750fc79c576600ac260b  libstdc++-v3/testsuite/25_algorithms/partition/requirements/explicit_instantiation/pod.cc
! 6e11808f5e6dd8e22185386431fe7a0c  libstdc++-v3/testsuite/25_algorithms/partition_copy/1.cc
! e6ccfbc7c5e5d7b595c1f51bcddb1f5d  libstdc++-v3/testsuite/25_algorithms/partition_copy/check_type.cc
! 7c77f1320250fe1dab7a44db06a54cc5  libstdc++-v3/testsuite/25_algorithms/partition_copy/constexpr.cc
! ccf57ad69345ce9d98f80c171193ad9b  libstdc++-v3/testsuite/25_algorithms/partition_copy/constrained.cc
! 872c0d8c1ad238d2f1333690f7139ac4  libstdc++-v3/testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/2.cc
! fe496c02eb6b31f354379d256dfc5f85  libstdc++-v3/testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/pod.cc
! 6e5f9cce9368dc08d82af51041302132  libstdc++-v3/testsuite/25_algorithms/partition_point/1.cc
! 30dc5f2522f5802f440eda428db9df8b  libstdc++-v3/testsuite/25_algorithms/partition_point/check_type.cc
! 8f470f604e1d7a769cf51f59bf6ab1ce  libstdc++-v3/testsuite/25_algorithms/partition_point/constexpr.cc
! 0b93daad80bfc046a62978b009f70025  libstdc++-v3/testsuite/25_algorithms/partition_point/constrained.cc
! 7d9922bea52b37725568b31ee4417aaf  libstdc++-v3/testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/2.cc
! afb0c124e56f3be82185077a28cc0e10  libstdc++-v3/testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/pod.cc
! a55081721e7f1b8bccf30085e887e27b  libstdc++-v3/testsuite/25_algorithms/pop_heap/57010.cc
! 763e8ad9623c63e05d188bbd678ef5a9  libstdc++-v3/testsuite/25_algorithms/pop_heap/complexity.cc
! 879fc0581c1deb06dd2368ea5b1f0c30  libstdc++-v3/testsuite/25_algorithms/pop_heap/constexpr.cc
! 98ee8037c0f284b3ab67a4b0486f2e51  libstdc++-v3/testsuite/25_algorithms/pop_heap/empty2_neg.cc
! f2593a79f9ad68a359c294c8ddf8ccac  libstdc++-v3/testsuite/25_algorithms/pop_heap/empty_neg.cc
! 06ac575ee15a9b4e20921714c6f7367f  libstdc++-v3/testsuite/25_algorithms/pop_heap/requirements/explicit_instantiation/2.cc
! 908b2bc8da94d046f99e94d5f48e34fd  libstdc++-v3/testsuite/25_algorithms/pop_heap/requirements/explicit_instantiation/pod.cc
! 04c6dc15f9a34d348ce288dba383fb1f  libstdc++-v3/testsuite/25_algorithms/prev_permutation/1.cc
! 608ef9b10fd7773b75d0e63a0ef56165  libstdc++-v3/testsuite/25_algorithms/prev_permutation/check_type.cc
! 1771ecaffbf0c4812f56d8cc885cd2b3  libstdc++-v3/testsuite/25_algorithms/prev_permutation/constexpr.cc
! 7ac887dbfd45febae7bd70fc4e68f053  libstdc++-v3/testsuite/25_algorithms/prev_permutation/constrained.cc
! 763c54dc488002f634bfeb55d377f2c3  libstdc++-v3/testsuite/25_algorithms/prev_permutation/moveable.cc
! 1dd951077f872d0750c05a1cc46e68e7  libstdc++-v3/testsuite/25_algorithms/prev_permutation/requirements/explicit_instantiation/2.cc
! 74ec3ac84be3c5d600a5d33c608f440d  libstdc++-v3/testsuite/25_algorithms/prev_permutation/requirements/explicit_instantiation/pod.cc
  99f7e56e4f4a3482e5357134c04779ca  libstdc++-v3/testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc
  2d01f77a95c07a8691544e98c3af8d53  libstdc++-v3/testsuite/25_algorithms/pstl/alg_merge/merge.cc
  b3a5e3e03e4c7000686ccc6f79cef937  libstdc++-v3/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc
*************** f0e714b09c38ebbfcaa1dec37a6678b5  libstd
*** 96795,99223 ****
  b249e9c92416019fb04cda355da8f58b  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc
  6716b699a6dddb06f3fefd4fcb9fed85  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/set.cc
  e160587f287d7f1536f35ad3c122411c  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/sort.cc
! bb1c07b7fa184bcd361277616fe492b0  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-2.cc
! beb201716339d95352622a798a280a01  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-3.cc
! a841741f97a9dda6fb832a72a2263855  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-4.cc
! 5c6a4e25931855004ed32d2d909d3e7c  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-5.cc
! 269256c30cd6d1145b7bb85bfdd6bcc5  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test.cc
! 77dbb5c1c30fde0527d1a41dee6349e0  libstdc++-v3/testsuite/25_algorithms/push_heap/complexity.cc
! b8bcb95ad94c3cf24d3b1fd6722645d1  libstdc++-v3/testsuite/25_algorithms/push_heap/constexpr.cc
! 69eb713c6e95f50bc6d07ea7ae67e2b7  libstdc++-v3/testsuite/25_algorithms/push_heap/requirements/explicit_instantiation/2.cc
! 9af7d900e5693cafacfd7b27746da42b  libstdc++-v3/testsuite/25_algorithms/push_heap/requirements/explicit_instantiation/pod.cc
! deca5afad127d821d51276b9244ed15d  libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc
! be60daa24c9a16250fcf100cba26ca94  libstdc++-v3/testsuite/25_algorithms/random_shuffle/59603.cc
! d153cb8f60aab0f525c6ea6aabb17abe  libstdc++-v3/testsuite/25_algorithms/random_shuffle/moveable.cc
! 11c5869d7e7a6872e8f9cb395a069954  libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc
! e1610b510cfc8ce00589637ca75834be  libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc
! 2bbe21d64fe1a26a441189ad67e94f7d  libstdc++-v3/testsuite/25_algorithms/remove/1.cc
! ef8c75304ce86499cb1169e253bcd39d  libstdc++-v3/testsuite/25_algorithms/remove/check_type.cc
! 44dc16c073080afaac39261f2a0a5bf2  libstdc++-v3/testsuite/25_algorithms/remove/constexpr.cc
! f7c870ac71681249b4d583725bf253ac  libstdc++-v3/testsuite/25_algorithms/remove/constrained.cc
! c0ad37260f9a5750d720fdc814a26df4  libstdc++-v3/testsuite/25_algorithms/remove/moveable.cc
! 8013689ca470c2c48c7edeb913e3984d  libstdc++-v3/testsuite/25_algorithms/remove/requirements/explicit_instantiation/2.cc
! 7e35e9430c2b2ae4322ab30694f2e490  libstdc++-v3/testsuite/25_algorithms/remove/requirements/explicit_instantiation/pod.cc
! 135451006c1c3eda081a6be46adbc702  libstdc++-v3/testsuite/25_algorithms/remove_copy/constexpr.cc
! b093ad2a64e83e879ca85acbd2028ade  libstdc++-v3/testsuite/25_algorithms/remove_copy/constrained.cc
! 3848f763120e62413becc3dad9d0114f  libstdc++-v3/testsuite/25_algorithms/remove_copy/requirements/explicit_instantiation/2.cc
! 997f04ff3a70ba0e8f2c32105ec76916  libstdc++-v3/testsuite/25_algorithms/remove_copy/requirements/explicit_instantiation/pod.cc
! f0316cec5de319b52251d7e67cd64fd0  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/check_type.cc
! 83fe0a1fdf550c61c5fdae5b27b9ef93  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/constexpr.cc
! c755c19be50a73a67a5bda012f5db470  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/constrained.cc
! 5ba507ee8b3beb4c4801511933ca2390  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/2.cc
! 73a2d413f1b9bbddaffdfb55d2289f23  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/pod.cc
! 62307e3ff9113b29b87042600dce517e  libstdc++-v3/testsuite/25_algorithms/remove_if/1.cc
! 2d049bfeafc9c31f9dca4e3810075871  libstdc++-v3/testsuite/25_algorithms/remove_if/check_type.cc
! 4997b8f65ef51ee168b226c44752c722  libstdc++-v3/testsuite/25_algorithms/remove_if/constexpr.cc
! 0c8cbe6a822fa2cfeaa05b7a36adaff1  libstdc++-v3/testsuite/25_algorithms/remove_if/constrained.cc
! 714642cf09381d025d296d1f2c9139f9  libstdc++-v3/testsuite/25_algorithms/remove_if/moveable.cc
! 819db1c0b4aa04d952d1689d9b9609e0  libstdc++-v3/testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/2.cc
! 7e1bcab9702b9474c815d8a301adc170  libstdc++-v3/testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/pod.cc
! 17ab736991acf18c38c799e6c794a475  libstdc++-v3/testsuite/25_algorithms/replace/1.cc
! e8588e728f336e600bd6e99024b28ea9  libstdc++-v3/testsuite/25_algorithms/replace/check_type.cc
! d820022909dcb710ba1965086462a7c3  libstdc++-v3/testsuite/25_algorithms/replace/constrained.cc
! de5213b679a1a46f63f2cf75aed40b6e  libstdc++-v3/testsuite/25_algorithms/replace/requirements/explicit_instantiation/2.cc
! 1d97ff56206cf4b171de5c4acc9aaedb  libstdc++-v3/testsuite/25_algorithms/replace/requirements/explicit_instantiation/pod.cc
! a5595e002918faf8d7f9e13e1953c86f  libstdc++-v3/testsuite/25_algorithms/replace_copy/1.cc
! 7c211f2e3d4e80f834f98f6c58019db8  libstdc++-v3/testsuite/25_algorithms/replace_copy/check_type.cc
! 84f8a493ca5a76e51b3207418a804d41  libstdc++-v3/testsuite/25_algorithms/replace_copy/constexpr.cc
! 9772f29deebce74b8f7d923b92e1033f  libstdc++-v3/testsuite/25_algorithms/replace_copy/constrained.cc
! 48b63f57ea2d891579281b7aab113c0e  libstdc++-v3/testsuite/25_algorithms/replace_copy/requirements/explicit_instantiation/2.cc
! 32c64f248ad16568a867b30f8a6130ab  libstdc++-v3/testsuite/25_algorithms/replace_copy/requirements/explicit_instantiation/pod.cc
! 9dc21370313be6bfadcf181053bca054  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/1.cc
! b0a6dcf30a8978006f0787e9f1c44498  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/check_type.cc
! 254e0448684f4878066dfdf22a5ec0fe  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/constexpr.cc
! 79930fee2373ad92f3ac9cfa22190e1a  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/constrained.cc
! 7b6baaa5a68f7efc8b01645e5540de54  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/2.cc
! 22bbaad26e5641fabf34934b6644a025  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/pod.cc
! 412730f52a701fb75eb23ebd84c0597d  libstdc++-v3/testsuite/25_algorithms/replace_if/1.cc
! f69daa619c86265dc560e3f5e2f14eea  libstdc++-v3/testsuite/25_algorithms/replace_if/check_type.cc
! 2e2ddaaa0174fec3399a45680026a5dc  libstdc++-v3/testsuite/25_algorithms/replace_if/constexpr.cc
! 443639fb72b0fb45efd8dc52467f4a8b  libstdc++-v3/testsuite/25_algorithms/replace_if/constrained.cc
! 2e7a60cfa1d7c5232120993f7364a7fe  libstdc++-v3/testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/2.cc
! 2a67bbd5a5ddddf93b0c53762d8d0205  libstdc++-v3/testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/pod.cc
  36f40bd4fda4eb8bb7b8c7178baddcb8  libstdc++-v3/testsuite/25_algorithms/reverse/constexpr.cc
! 1cdb958fd201b4ac44b7e4f46cd7b1ff  libstdc++-v3/testsuite/25_algorithms/reverse/constrained.cc
! 3388b8649f2ba9f7a2371b826393c978  libstdc++-v3/testsuite/25_algorithms/reverse/moveable.cc
! d1f81074b5b34a76fbe23850eab0c63d  libstdc++-v3/testsuite/25_algorithms/reverse/requirements/explicit_instantiation/2.cc
! b0a6049e6722eea9e6a437a5e6846ad2  libstdc++-v3/testsuite/25_algorithms/reverse/requirements/explicit_instantiation/pod.cc
! 8c93480388d122610f559bf666821a95  libstdc++-v3/testsuite/25_algorithms/reverse_copy/constexpr.cc
! 855e68b2dc1f937a73f3fff8e7068c2e  libstdc++-v3/testsuite/25_algorithms/reverse_copy/constrained.cc
! f7ae14b0efce9e86dec447e443c3db13  libstdc++-v3/testsuite/25_algorithms/reverse_copy/explicit_instantiation/2.cc
! 5ebac639ddb1affa305802132291602a  libstdc++-v3/testsuite/25_algorithms/reverse_copy/explicit_instantiation/pod.cc
! ac5fdb0e116d05325db9098e6e49e964  libstdc++-v3/testsuite/25_algorithms/rotate/1.cc
! 134037e90fc9164bcd9de6b4afac5b0a  libstdc++-v3/testsuite/25_algorithms/rotate/90920.cc
! c79ee35d3cb8a6747161267e50e685f4  libstdc++-v3/testsuite/25_algorithms/rotate/check_type.cc
  6e81a6e87bcee591a45269b5ef7edde0  libstdc++-v3/testsuite/25_algorithms/rotate/constexpr.cc
! 98983cc03636f268d70623b673cf0699  libstdc++-v3/testsuite/25_algorithms/rotate/constrained.cc
! 5f7f72cd3536eae63c2bed15980e01d2  libstdc++-v3/testsuite/25_algorithms/rotate/dr488.cc
! fba2ec023a81f25ae0fc979c8bb72e0f  libstdc++-v3/testsuite/25_algorithms/rotate/moveable.cc
! 4bc4c4b9c57e33cbe15615ae56371824  libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc
! 2ea208bbe108a1c7252c1d46b33f3a75  libstdc++-v3/testsuite/25_algorithms/rotate/requirements/explicit_instantiation/2.cc
! b6f3cf75964ec05c572020161f717a2f  libstdc++-v3/testsuite/25_algorithms/rotate/requirements/explicit_instantiation/pod.cc
! 7517afb592a1abf462cf84793c29960c  libstdc++-v3/testsuite/25_algorithms/rotate/rotate.cc
! 751a339da1dc987e8747dd3e362af357  libstdc++-v3/testsuite/25_algorithms/rotate_copy/constexpr.cc
! 2e1717afcf5eab4fdfb0c969b55f7bd6  libstdc++-v3/testsuite/25_algorithms/rotate_copy/constrained.cc
! f92dece377cd528f8103d08838e7cee9  libstdc++-v3/testsuite/25_algorithms/rotate_copy/requirements/explicit_instantiation/2.cc
! 7c28803898d4ee45a344034d7eca84cd  libstdc++-v3/testsuite/25_algorithms/rotate_copy/requirements/explicit_instantiation/pod.cc
! 43311467f07ab0de54166988c20adc7b  libstdc++-v3/testsuite/25_algorithms/sample/1.cc
! c6d5caeda562e2832d5705efadd8a54e  libstdc++-v3/testsuite/25_algorithms/sample/2.cc
! db856cd29e5c790549359ef2504c6ed1  libstdc++-v3/testsuite/25_algorithms/sample/3.cc
! 52bfb11f48177cb42d05803c27e9f568  libstdc++-v3/testsuite/25_algorithms/sample/81221.cc
! 1f0006d8a18917bb49ae066f44adb795  libstdc++-v3/testsuite/25_algorithms/sample/constrained.cc
! 2ff8ef9b1a080bdddae30ea415366fd1  libstdc++-v3/testsuite/25_algorithms/search/1.cc
! c90dc15ba7616943bef38e8068fd6643  libstdc++-v3/testsuite/25_algorithms/search/78346.cc
! 28fe368fddf7d26045615ea51ba73d6b  libstdc++-v3/testsuite/25_algorithms/search/check_type.cc
! 65f2c169154925072ef306ec4c2e122d  libstdc++-v3/testsuite/25_algorithms/search/constexpr.cc
! d36ef5b575cd5a31899cadef69549053  libstdc++-v3/testsuite/25_algorithms/search/constrained.cc
! aaeabae46e9f3f278595111788d75fe8  libstdc++-v3/testsuite/25_algorithms/search/requirements/explicit_instantiation/2.cc
! c21a95d40a736d006537b9a7fd6241c3  libstdc++-v3/testsuite/25_algorithms/search/requirements/explicit_instantiation/pod.cc
! cd67cffdee2fd464cbe0817dc4369470  libstdc++-v3/testsuite/25_algorithms/search/searcher.cc
! 9174d978796a42f6bafb338d6beaf63b  libstdc++-v3/testsuite/25_algorithms/search_n/11400.cc
! 88823cbe73848781e027fdd1e9be1194  libstdc++-v3/testsuite/25_algorithms/search_n/58358.cc
! 1c14d137286eddc6c63c6de63932bf3f  libstdc++-v3/testsuite/25_algorithms/search_n/97828.cc
! ba58133474e21f5a73565aa5382fe10c  libstdc++-v3/testsuite/25_algorithms/search_n/check_type.cc
! 918bf28828e59d4e1f3a1c031212d789  libstdc++-v3/testsuite/25_algorithms/search_n/constexpr.cc
! 8ebaab99d811d42f9d25ef14fc82129f  libstdc++-v3/testsuite/25_algorithms/search_n/constrained.cc
! cb5a634fb3ec453e90a1bc0cd83b1afc  libstdc++-v3/testsuite/25_algorithms/search_n/iterator.cc
! c41eb22de9e0fc087c0924ce87febf02  libstdc++-v3/testsuite/25_algorithms/search_n/requirements/explicit_instantiation/2.cc
! a9315e4091f47eeab97f9504516ebbd1  libstdc++-v3/testsuite/25_algorithms/search_n/requirements/explicit_instantiation/pod.cc
! d51674f74cbcc01a574328d53b9f06af  libstdc++-v3/testsuite/25_algorithms/set_difference/1.cc
! e4230bfd115a420997476fbbecbc5693  libstdc++-v3/testsuite/25_algorithms/set_difference/35541.cc
! 475af07c51d7447ea10d43202c635082  libstdc++-v3/testsuite/25_algorithms/set_difference/check_type.cc
! 98ae5dad8bc64bcf585b78be77f348ac  libstdc++-v3/testsuite/25_algorithms/set_difference/constexpr.cc
! 5c8b774b04915e84307ca259431de913  libstdc++-v3/testsuite/25_algorithms/set_difference/constrained.cc
! 32e78518274617bffa6518eea55d2d06  libstdc++-v3/testsuite/25_algorithms/set_difference/requirements/explicit_instantiation/2.cc
! 0edad60a28b4d8ead8843a7185c2a47a  libstdc++-v3/testsuite/25_algorithms/set_difference/requirements/explicit_instantiation/pod.cc
! 8ff9f65e8a205352e9451aa5d6ba51b8  libstdc++-v3/testsuite/25_algorithms/set_intersection/1.cc
! e51b9d26742f01e72aca1e9187e882e6  libstdc++-v3/testsuite/25_algorithms/set_intersection/34730.cc
! 8515307d8b491674ac49108cdae2c961  libstdc++-v3/testsuite/25_algorithms/set_intersection/check_type.cc
! 209a358bd274ca34aaaadc319c230792  libstdc++-v3/testsuite/25_algorithms/set_intersection/constexpr.cc
! 0988cbd80e9b5a4421b8d7b7c5ba3754  libstdc++-v3/testsuite/25_algorithms/set_intersection/constrained.cc
! 234d61f6949fdfb95585a562032277e8  libstdc++-v3/testsuite/25_algorithms/set_intersection/requirements/explicit_instantiation/2.cc
! 1ee039e497412e22ad98f308ded45743  libstdc++-v3/testsuite/25_algorithms/set_intersection/requirements/explicit_instantiation/pod.cc
! 4fdee19682ae97f503bc9f41a3457a8d  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/1.cc
! 2a49a2c5d84d92979f063ee6e52aa9a5  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/check_type.cc
! e8e3207dfe66a197adce1e8cf88ae199  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/constexpr.cc
! 3a3d2b60ac18ffb8044d9d001120871f  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/constrained.cc
! 316438f502bde8e8528872f59ea87ed9  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/requirements/explicit_instantiation/2.cc
! b8b68614c35d5bce11fdb9cd1cd07892  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/requirements/explicit_instantiation/pod.cc
! ba96686d25d7668950c37c6d88478839  libstdc++-v3/testsuite/25_algorithms/set_union/1.cc
! c318c0685feb42085d200329cad0f33c  libstdc++-v3/testsuite/25_algorithms/set_union/check_type.cc
! 0960f210439fbe822871255f154066c4  libstdc++-v3/testsuite/25_algorithms/set_union/constexpr.cc
! 55aa7488ce671e019896ec20a9b63334  libstdc++-v3/testsuite/25_algorithms/set_union/constrained.cc
! 47f2e9dfd25a70f279390bc5c6bdc615  libstdc++-v3/testsuite/25_algorithms/set_union/requirements/explicit_instantiation/2.cc
! b6c27a892eda2ced66c83c4a8c0d8c03  libstdc++-v3/testsuite/25_algorithms/set_union/requirements/explicit_instantiation/pod.cc
! 11a5694b9a9182d4153b18876913dd57  libstdc++-v3/testsuite/25_algorithms/shift_left/1.cc
! 6805194a158a68235f750d379227f60a  libstdc++-v3/testsuite/25_algorithms/shift_right/1.cc
! f3e0105e70885fc63d7b4b40c73df6af  libstdc++-v3/testsuite/25_algorithms/shuffle/1.cc
! a587b0da4f702a05828635f003277549  libstdc++-v3/testsuite/25_algorithms/shuffle/constrained.cc
! 52f4df02abb4f4f78af09eb880b11fa0  libstdc++-v3/testsuite/25_algorithms/shuffle/requirements/explicit_instantiation/2.cc
! 825c6e7369b9105074297c3a2c445801  libstdc++-v3/testsuite/25_algorithms/shuffle/requirements/explicit_instantiation/pod.cc
! 882e741821653aef7b32a0d0c6ebb174  libstdc++-v3/testsuite/25_algorithms/sort/1.cc
! 9b6d67ead5507022b18f4df95a7359b1  libstdc++-v3/testsuite/25_algorithms/sort/34095.cc
! 36251089ab1476e4851c11503dd30177  libstdc++-v3/testsuite/25_algorithms/sort/34636.cc
! f9936b309ab088dc296d7422960a9479  libstdc++-v3/testsuite/25_algorithms/sort/35588.cc
! 38f13b451774492f70fbf11e3fb84a2a  libstdc++-v3/testsuite/25_algorithms/sort/78991.cc
! 852ea3798202c2347fbcc1c5f1312b89  libstdc++-v3/testsuite/25_algorithms/sort/check_compare_by_value.cc
! dd13d6ef04c3891b7e432be95dd1f06b  libstdc++-v3/testsuite/25_algorithms/sort/constexpr.cc
! 10ca365905be2dea7f801d41ece88521  libstdc++-v3/testsuite/25_algorithms/sort/constrained.cc
! 8aa17c581f1bd7c1bae988faef80a93e  libstdc++-v3/testsuite/25_algorithms/sort/moveable.cc
! 1171d26c45c311415c0b6d5118aa1e12  libstdc++-v3/testsuite/25_algorithms/sort/random_test.cc
! 464ccde1539209f9ae8b5b9f26cc7bdb  libstdc++-v3/testsuite/25_algorithms/sort/requirements/explicit_instantiation/2.cc
! 81b2eca9b4edce2e1dcce2818ac4f478  libstdc++-v3/testsuite/25_algorithms/sort/requirements/explicit_instantiation/pod.cc
! 534324724a6274672c6268ad64d3c5bd  libstdc++-v3/testsuite/25_algorithms/sort/vectorbool.cc
! 23cddfdcb0cb716f06dd136770a5c0b8  libstdc++-v3/testsuite/25_algorithms/sort_heap/check_compare_by_value.cc
! 5079ec031c4630468bcf44f7c13dccd3  libstdc++-v3/testsuite/25_algorithms/sort_heap/complexity.cc
! 2a75a4cb74e52ddee8f3d3c7191752a6  libstdc++-v3/testsuite/25_algorithms/sort_heap/constexpr.cc
! efb735ca6eef25717e7f2fa2bd02ae47  libstdc++-v3/testsuite/25_algorithms/sort_heap/requirements/explicit_instantiation/2.cc
! 81efbad167d5a7ffec8c2e1f5c318c87  libstdc++-v3/testsuite/25_algorithms/sort_heap/requirements/explicit_instantiation/pod.cc
! b2a8ec29769a33af9014de015d418001  libstdc++-v3/testsuite/25_algorithms/stable_partition/1.cc
! 1f4e9cfe92dadcf27d0f0429c204fb43  libstdc++-v3/testsuite/25_algorithms/stable_partition/constrained.cc
! 1843d71addef444a66436ecb09c55fad  libstdc++-v3/testsuite/25_algorithms/stable_partition/mem_check.cc
! 42c75c8741b2a3651e00a69ad80d4ae9  libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc
! 6a4756bf989e906c58dfcb3486318c96  libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc
! 17538c8bb7382c89644de9003d379647  libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc
! 71b8f589228a344776f827d9d7e901d1  libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc
! 04351787a1b9f5053ad09276571b7c6f  libstdc++-v3/testsuite/25_algorithms/stable_sort/1.cc
! 2b81fcf8929a6d9151605c95ceaf8b03  libstdc++-v3/testsuite/25_algorithms/stable_sort/2.cc
! 35d39bf771196befc3fe180830784da9  libstdc++-v3/testsuite/25_algorithms/stable_sort/3.cc
! 2b60c022795e689f84b2d44124aa73de  libstdc++-v3/testsuite/25_algorithms/stable_sort/49559.cc
! 996351cc6fc3126b33973d02ac824b4f  libstdc++-v3/testsuite/25_algorithms/stable_sort/check_compare_by_value.cc
! d2194d2cdb1f29908ab4db3d479302db  libstdc++-v3/testsuite/25_algorithms/stable_sort/check_type.cc
! 9388c545d4d2ccd9376c541dc6ddbfe9  libstdc++-v3/testsuite/25_algorithms/stable_sort/constrained.cc
! 71149eb0aa4cae4dd4c7d383f1bbfb4c  libstdc++-v3/testsuite/25_algorithms/stable_sort/mem_check.cc
! a9e272893280d10b8b4199a5071d7e13  libstdc++-v3/testsuite/25_algorithms/stable_sort/moveable.cc
! 36febc297423c64c6088fe9a2137cb76  libstdc++-v3/testsuite/25_algorithms/stable_sort/moveable2.cc
! 2ef38edfea90b9ca76a1c295ce1d8c72  libstdc++-v3/testsuite/25_algorithms/stable_sort/requirements/explicit_instantiation/2.cc
! 6e397b8aff268c0ffd0b0595e327b9a3  libstdc++-v3/testsuite/25_algorithms/stable_sort/requirements/explicit_instantiation/pod.cc
! 1762e7041c1253c366c60ea55924e46a  libstdc++-v3/testsuite/25_algorithms/swap/68877.cc
! 144c5b5abb25ef03e312453beb4bebea  libstdc++-v3/testsuite/25_algorithms/swap/constexpr.cc
! 41a9a5356dd07a65cfbeb1a38af27822  libstdc++-v3/testsuite/25_algorithms/swap/dr809.cc
! 02e8b0cab39f6ddaacde1012572eabec  libstdc++-v3/testsuite/25_algorithms/swap/noexcept.cc
! b749d8212eaad3df179db413c3186dfb  libstdc++-v3/testsuite/25_algorithms/swap/requirements/explicit_instantiation/2.cc
! 318d093d4f6a3c246ed52fbb468c30da  libstdc++-v3/testsuite/25_algorithms/swap/requirements/explicit_instantiation/pod.cc
! 020790d8fccf70ca73b922283afae015  libstdc++-v3/testsuite/25_algorithms/swap_ranges/1.cc
! af63d1652df54250d8c331fe5a0cd7b9  libstdc++-v3/testsuite/25_algorithms/swap_ranges/check_type.cc
! 8cae840e96dde45152af359a625fd0d9  libstdc++-v3/testsuite/25_algorithms/swap_ranges/constexpr.cc
! 7460add336e2708afe91a5843e0bd861  libstdc++-v3/testsuite/25_algorithms/swap_ranges/constrained.cc
! 87ca9a1e1fd90186ba6e6975f8ac4401  libstdc++-v3/testsuite/25_algorithms/swap_ranges/moveable.cc
! 545090ea34937bf46d87657464c1febc  libstdc++-v3/testsuite/25_algorithms/swap_ranges/requirements/explicit_instantiation/2.cc
! f37108035f9501f2dd3b60984a6fce5d  libstdc++-v3/testsuite/25_algorithms/swap_ranges/requirements/explicit_instantiation/pod.cc
! df28f2f91fa066a93912858f3d24fbdc  libstdc++-v3/testsuite/25_algorithms/transform/constexpr.cc
! d0c224757254b13ca2d9d92efea97d3d  libstdc++-v3/testsuite/25_algorithms/transform/constrained.cc
! 303431c22fa342a7c9fef5f7139b6ffc  libstdc++-v3/testsuite/25_algorithms/transform/requirements/explicit_instantiation/2.cc
! ffbe248a1cb61101e080f43bbfc2dd57  libstdc++-v3/testsuite/25_algorithms/transform/requirements/explicit_instantiation/pod.cc
! b4d0cb9f15bfcdda25c8f4d36616d0df  libstdc++-v3/testsuite/25_algorithms/unique/1.cc
! f3b91f0c7754172101fee6043903b6cc  libstdc++-v3/testsuite/25_algorithms/unique/11480.cc
! 0e189f56f9469baec135c4a0a9b83d2c  libstdc++-v3/testsuite/25_algorithms/unique/2.cc
! 3c595dd3df41489794ef2823e3a06c01  libstdc++-v3/testsuite/25_algorithms/unique/constexpr.cc
! 1d931088d8bf97bcb6f01ce21b434c51  libstdc++-v3/testsuite/25_algorithms/unique/constrained.cc
! 33bc9264a3c1e9dcf7defb2402888958  libstdc++-v3/testsuite/25_algorithms/unique/moveable.cc
! 500b6934f2f9adac3109158d5a4bba62  libstdc++-v3/testsuite/25_algorithms/unique/requirements/explicit_instantiation/2.cc
! c7478131e1a6906d61def3e302aa466f  libstdc++-v3/testsuite/25_algorithms/unique/requirements/explicit_instantiation/pod.cc
! f7ab28679e2a015ef036b95af1ad67a9  libstdc++-v3/testsuite/25_algorithms/unique_copy/1.cc
! 6c8c730b16982820d5c702f0097d95f1  libstdc++-v3/testsuite/25_algorithms/unique_copy/2.cc
! 518ffd611482b633c0ab62dbe6693916  libstdc++-v3/testsuite/25_algorithms/unique_copy/26133.cc
! dd0fa7a14b08da3066a2ac8d96618441  libstdc++-v3/testsuite/25_algorithms/unique_copy/check_type.cc
! 1c9957e37dd200b02e7129096e9995d1  libstdc++-v3/testsuite/25_algorithms/unique_copy/constexpr.cc
! f645064c374b13e8c9e010b739489923  libstdc++-v3/testsuite/25_algorithms/unique_copy/constrained.cc
! 796fa3633d359b73820a1f463820c9b7  libstdc++-v3/testsuite/25_algorithms/unique_copy/requirements/explicit_instantiation/2.cc
! 25126bc6c38a69417586e667addf8dca  libstdc++-v3/testsuite/25_algorithms/unique_copy/requirements/explicit_instantiation/pod.cc
! 2f701b6daa8d252d8055dcea666c59b7  libstdc++-v3/testsuite/25_algorithms/upper_bound/1.cc
! c4d0732310dea636cf9a19a45babab05  libstdc++-v3/testsuite/25_algorithms/upper_bound/2.cc
! 8339e118db457ba11891372c5e7772f5  libstdc++-v3/testsuite/25_algorithms/upper_bound/33613.cc
! b6be3c7f8a72ae3138184f011688cb5f  libstdc++-v3/testsuite/25_algorithms/upper_bound/check_type.cc
! fc4f409594faadd01c397634f785922b  libstdc++-v3/testsuite/25_algorithms/upper_bound/constexpr.cc
! 29ba98d778cf2803dc43e680589bcd43  libstdc++-v3/testsuite/25_algorithms/upper_bound/constrained.cc
! d6cf6fa284992256a477adf1a2ce83dc  libstdc++-v3/testsuite/25_algorithms/upper_bound/partitioned.cc
! 02f1c254f20b7cc18c66565d99045620  libstdc++-v3/testsuite/25_algorithms/upper_bound/requirements/explicit_instantiation/2.cc
! 16479bd97578295411e177f1869b68a1  libstdc++-v3/testsuite/25_algorithms/upper_bound/requirements/explicit_instantiation/pod.cc
! b0b63da07698ace8b26781ba2b030801  libstdc++-v3/testsuite/26_numerics/accumulate/1.cc
! 691d5f80015ab65a6ac09b153a0a4e2e  libstdc++-v3/testsuite/26_numerics/accumulate/48750.cc
! fe0009a01d37f045c95198eba9285e8d  libstdc++-v3/testsuite/26_numerics/accumulate/constexpr.cc
! 467cc5b25899477daecc7a3b5f5761ec  libstdc++-v3/testsuite/26_numerics/accumulate/lwg2055.cc
! 51d4ee5a4d9693c24ae0e6ed4a6d32ec  libstdc++-v3/testsuite/26_numerics/accumulate/requirements/explicit_instantiation/2.cc
! 37be0d641f6df7f7334719a7a700c995  libstdc++-v3/testsuite/26_numerics/accumulate/requirements/explicit_instantiation/pod.cc
! ac519678236d6dc32c57379f63483fe4  libstdc++-v3/testsuite/26_numerics/adjacent_difference/1.cc
! 0814108a1488a6fed0441142919a8e5c  libstdc++-v3/testsuite/26_numerics/adjacent_difference/constexpr.cc
! 3fb5206fcdb442624e7722e332cc531c  libstdc++-v3/testsuite/26_numerics/adjacent_difference/lwg2055.cc
! b750cf721cc8b7c7fe0b939e801917d2  libstdc++-v3/testsuite/26_numerics/adjacent_difference/requirements/explicit_instantiation/2.cc
! cb775cc4ffd55deb02b135eb1bec28ab  libstdc++-v3/testsuite/26_numerics/adjacent_difference/requirements/explicit_instantiation/pod.cc
! 55a1d068eec4ca9d34d15eed6ab73ccc  libstdc++-v3/testsuite/26_numerics/bit/bit.count/countl_one.cc
! 0c9345e638588c70f70c5557efda8797  libstdc++-v3/testsuite/26_numerics/bit/bit.count/countl_zero.cc
! 83eb8b5f93bf1c5cc266322c78bce525  libstdc++-v3/testsuite/26_numerics/bit/bit.count/countr_one.cc
! 12f59ec21cd233cc61c986a2f7eddeca  libstdc++-v3/testsuite/26_numerics/bit/bit.count/countr_zero.cc
! eb4866e652d1a5fa2e15614b1d06463d  libstdc++-v3/testsuite/26_numerics/bit/bit.count/popcount.cc
! 8250e61fed24bf23aa54d0c5bcf9c94f  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc
! 9e14831285bc88527e909699c79534b5  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc
! b697bd507c54fb429ee1c6a19d54635e  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc
! de2edc57b9d19f7b7f8cab0da3175a16  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/bit_width.cc
! ee375b953301cba6a54f5042af3d26d2  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc
! 6bd39740cf57083d57d69e51ffa50182  libstdc++-v3/testsuite/26_numerics/bit/bit.rotate/rotl.cc
! 26b60ab8294b2875c5e9f5b160bfd765  libstdc++-v3/testsuite/26_numerics/bit/bit.rotate/rotr.cc
! b95d1851f6e450f5e4bcdd139209649d  libstdc++-v3/testsuite/26_numerics/bit/header-2.cc
! 563b83d6d14dc61565d0c61e14c27146  libstdc++-v3/testsuite/26_numerics/bit/header.cc
! e7bb4ebeb26b99125c8169c196b27149  libstdc++-v3/testsuite/26_numerics/complex/1.cc
! de5ce7deedc2c984547c631c6cd09845  libstdc++-v3/testsuite/26_numerics/complex/13450.cc
! 8e0ab91f1fb470f41939452f4b2753d6  libstdc++-v3/testsuite/26_numerics/complex/2.cc
! cdbaa95f9708b1e62bf1cb6cd97db3eb  libstdc++-v3/testsuite/26_numerics/complex/50880.cc
! 5037856b3079d35c20122b0529de7a7d  libstdc++-v3/testsuite/26_numerics/complex/51083.cc
! 940170b89637e79a60aad55354b350fb  libstdc++-v3/testsuite/26_numerics/complex/56111.cc
! 0d75a837f7b9ada306b0cced8a9d4e42  libstdc++-v3/testsuite/26_numerics/complex/abi_tag.cc
! 4ffda5247d6abd2a722d366a2c57a984  libstdc++-v3/testsuite/26_numerics/complex/buggy_complex.cc
! 8ca71dbaa20e6e3626c32e9bfd7cd5ae  libstdc++-v3/testsuite/26_numerics/complex/c99.cc
! dd0b79a3b94d6e3740518017a3b866d0  libstdc++-v3/testsuite/26_numerics/complex/comparison_operators/constexpr.cc
! ff5794f9c5e822886bba4ec3e52569fb  libstdc++-v3/testsuite/26_numerics/complex/comparison_operators/more_constexpr.cc
! b96b61c050bc37b44bc0059729ac6c7e  libstdc++-v3/testsuite/26_numerics/complex/cons/48760.cc
! 984958c06e6da17f78c6f2db62497baa  libstdc++-v3/testsuite/26_numerics/complex/cons/48760_c++0x.cc
! 682e5e18814d9161784b1000a7570fb8  libstdc++-v3/testsuite/26_numerics/complex/cons/constexpr.cc
! e9632ae1b8d597e993c3c0571196c0f2  libstdc++-v3/testsuite/26_numerics/complex/cons/constexpr_primary.cc
! 238d872aa17dc74cdbdf674ff88f93a7  libstdc++-v3/testsuite/26_numerics/complex/dr387_2.cc
! 53bb22538b00e0c037bd46f78c89e9d9  libstdc++-v3/testsuite/26_numerics/complex/dr781.cc
! 5c3a1de8f82ac1ef263c1c101f93c027  libstdc++-v3/testsuite/26_numerics/complex/dr844.cc
! 8c335e7a3753082645f21a292aa073e5  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/char/1.cc
! 8e5e384b19eb75e4cb859fd522d3cffd  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/char/dr2714.cc
! edf5af15f700ae85d3de75a33456f3b0  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/wchar_t/1.cc
! 12553f69519321969d070cd54b57e4d3  libstdc++-v3/testsuite/26_numerics/complex/literals/types.cc
! fa21fdf27764b43ae78b2500472c7022  libstdc++-v3/testsuite/26_numerics/complex/literals/values.cc
! 344102adab440e75788f31ee329f8d43  libstdc++-v3/testsuite/26_numerics/complex/operators/more_constexpr.cc
  906619ecf0877a7ff5302dd409c34714  libstdc++-v3/testsuite/26_numerics/complex/pow.cc
! baca7af663103218b0ba538e3ffcfecc  libstdc++-v3/testsuite/26_numerics/complex/proj.cc
! 2312ae2b03c18823b6cc8377fb68e37e  libstdc++-v3/testsuite/26_numerics/complex/requirements/constexpr_functions.cc
! c2748d20ee855f487257334c705de2db  libstdc++-v3/testsuite/26_numerics/complex/requirements/more_constexpr.cc
! 53be651c8b2167ef829346b017440bfd  libstdc++-v3/testsuite/26_numerics/complex/value_operations/1.cc
! 7489f42548ee4899dbb78c93e425d5e1  libstdc++-v3/testsuite/26_numerics/complex/value_operations/constexpr.cc
! 67c1896a83e37453ab36655e7834bd7f  libstdc++-v3/testsuite/26_numerics/complex/value_operations/constexpr2.cc
! d8c43d86d4610081b35a4ebd805dbf12  libstdc++-v3/testsuite/26_numerics/complex/value_operations/dr387.cc
! 186e7c15fdf5fe3a9e967259f9f28902  libstdc++-v3/testsuite/26_numerics/complex/value_operations/more_constexpr.cc
! aabb5d664d5d9757b8366acb4a6b6cbc  libstdc++-v3/testsuite/26_numerics/complex/value_operations/pr88341.cc
! 1c37c2b8209aa87bad06eaa38547e999  libstdc++-v3/testsuite/26_numerics/endian/1.cc
! c05242330f2fa3254611e0dbe0b0e2dd  libstdc++-v3/testsuite/26_numerics/endian/2.cc
! ef566b90d8e1a57842d710a78d73f87f  libstdc++-v3/testsuite/26_numerics/endian/3.cc
! af2c66edde57fed474cc7c47119167f4  libstdc++-v3/testsuite/26_numerics/endian/4.cc
! 98aaa071c218ed2b03b506e7e1dea91c  libstdc++-v3/testsuite/26_numerics/exclusive_scan/1.cc
! 786c88392ad21476586549a3bc39caeb  libstdc++-v3/testsuite/26_numerics/exclusive_scan/constexpr.cc
! 8c35eb135966eac7f9f735660421deec  libstdc++-v3/testsuite/26_numerics/gcd/1.cc
! 95693fa697af2ce7ef6deaa0394c7fef  libstdc++-v3/testsuite/26_numerics/gcd/92978.cc
! 181c083afcb45ba3ff41798db8b2bc8f  libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc
! 6313a74200a87668bca313215e442bd4  libstdc++-v3/testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc
! 20a1d7fbdc4a485c2ab5c2da4623df1c  libstdc++-v3/testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc
! 7d3b4a095ff9cd832fa48e1efd2baf89  libstdc++-v3/testsuite/26_numerics/headers/cfenv/types_std_c++0x.cc
! e168fc1ef66c607452118f94fc6ddc23  libstdc++-v3/testsuite/26_numerics/headers/cmath/14608.cc
! f12f174676487235c819ae2d9272f1cf  libstdc++-v3/testsuite/26_numerics/headers/cmath/19322.cc
! 1466062606d44ac78dff36dc7391904e  libstdc++-v3/testsuite/26_numerics/headers/cmath/25913.cc
! 2102ac029ed10d4ffa8d8499243d9022  libstdc++-v3/testsuite/26_numerics/headers/cmath/37582.cc
! a1c50597ed2efe3913eead77dfee2523  libstdc++-v3/testsuite/26_numerics/headers/cmath/48891.cc
! 714635960b3d70ed732ccb243d3f1a25  libstdc++-v3/testsuite/26_numerics/headers/cmath/51083.cc
! ba5ddc36a2a874b235b57c7595d8afb1  libstdc++-v3/testsuite/26_numerics/headers/cmath/53503.cc
! 3f427768da2bfa78b57528cc0ad74999  libstdc++-v3/testsuite/26_numerics/headers/cmath/60401.cc
! a9e1b7e3f6e37022175d05332cada18d  libstdc++-v3/testsuite/26_numerics/headers/cmath/60637.cc
! 83c6af6340505fbadc47079b42f4f176  libstdc++-v3/testsuite/26_numerics/headers/cmath/82644.cc
! 9d3b5621d6534c9779c58a9fecaf4023  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++11.cc
! 7aa61b0e677556a0b74a24f1dc7ddb80  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++98.cc
! b4e6a96b610679566961de38060080ec  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc
! f93129bdd4699f6182332e0e0973302e  libstdc++-v3/testsuite/26_numerics/headers/cmath/c_math.cc
! ca71262cc2665ab8c79346472cd7bfdf  libstdc++-v3/testsuite/26_numerics/headers/cmath/c_math_dynamic.cc
! f573745aa60414a68caf206035e94760  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr2192.cc
! ff27e17af80dcd8a4a5c4b32de43ec3a  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr2192_neg.cc
! 001b5e5c82c6a4bd9ca3196edea0083b  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr550.cc
! 43c0a3d15278cb00c12a1427b83600d3  libstdc++-v3/testsuite/26_numerics/headers/cmath/fabs_inline.cc
! 974b5c2b7f6ddd97c1f378b21588499f  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_global.cc
! dfa0b4a9a27d1d30a0199c8ea5f8f0d5  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std.cc
! 4a50ea265310fb7b740acfd4c3e572c4  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std_c++17.cc
! ed5de9e1f3669a84e3c06747c29dc240  libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc
! 422fdd8cbbb00558921a98009373ea7a  libstdc++-v3/testsuite/26_numerics/headers/cmath/macros.cc
! 012dbea5166e704fe9be54da210a509f  libstdc++-v3/testsuite/26_numerics/headers/cmath/overloads.cc
! b065a1311002121f6624452611214968  libstdc++-v3/testsuite/26_numerics/headers/cmath/overloads_c++0x_neg.cc
! 77b685254ee1b2c5f1650239e2a81bfb  libstdc++-v3/testsuite/26_numerics/headers/cmath/powi.cc
! 97646569b53a968681c3de240fd588b3  libstdc++-v3/testsuite/26_numerics/headers/cmath/special_functions_global.cc
! c22e2ffb532ab9edf8979bd1bca67778  libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x.cc
! 018edff766506399b69775b256416a77  libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc
! 75120b30f14250927bc232690e09782b  libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++11.h
! db12c3fa53163a81ef029ce8a9d8be88  libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++98.h
! bc55884059aa5337a57e7758d55963c3  libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_gnu++11.h
! 908dae72ae68b3c63868a185969ae290  libstdc++-v3/testsuite/26_numerics/headers/complex/synopsis.cc
! db74ed8410bc3c36f8da2508c83a1a65  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc
! 491ad0f990f3289ea509cb3921c7eabf  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/2190.cc
! cc30284ecddf9c5a0ee1a0cddae77aa1  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/54686.cc
! 16e0cec7cb170025babfb38bd3b1d45a  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/60401.cc
! 81dbc0dcc656ea266833265b58a60584  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192.cc
! a1123784686c4b4c3dc5a2489a8d6d27  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192_neg.cc
! 3156b6120f0fd87b200325ae349f104b  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2735.cc
! 3df3c4bca208d0a4643728fc656558ef  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/functions_std.cc
! fe9a828d6189a309cb0dea8a9ea9c2ff  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/macros.cc
! 378bb2d5f849f72423b957d07dbf4ed3  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std.cc
! e3f25a7d92cc377852ed23f3f45fffa2  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc
! 8f9db715e8e29757fbd198f05acbcab2  libstdc++-v3/testsuite/26_numerics/headers/ctgmath/complex.cc
! 064859ce1010ef945f609cdd6c076f01  libstdc++-v3/testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc
! 7dd70c039cc8440d27bf5abdf6c6b8b8  libstdc++-v3/testsuite/26_numerics/headers/numeric/numeric_parallel_mode.cc
! 58a89af655412c76d137900c9f5b6484  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric.cc
! d6157eba5825397c832ac1e1d0fdfbf0  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed1.cc
! ae00b24e2cee1fc350966d7e5f0bc4fa  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed2.cc
! e3454d79be297f80d8a74c98a6f4c21c  libstdc++-v3/testsuite/26_numerics/headers/numeric/synopsis.cc
! c975f5e57a6e12b6a27dc143ff47f046  libstdc++-v3/testsuite/26_numerics/headers/random/std_c++0x_neg.cc
! 7d67524dfdf461e6f1a4af1af6d8e15f  libstdc++-v3/testsuite/26_numerics/headers/random/types_std_c++0x.cc
! d9c392c17d590f3daa22d4bad2ccad39  libstdc++-v3/testsuite/26_numerics/headers/valarray/synopsis.cc
! 5440b4f99902f3d8ea4c0e200d7c5aa2  libstdc++-v3/testsuite/26_numerics/headers/valarray/types_std.cc
! 411ddc520087867ce76d925c52073fc9  libstdc++-v3/testsuite/26_numerics/inclusive_scan/1.cc
! d6e2b59370faa50e16a11c4672d1a104  libstdc++-v3/testsuite/26_numerics/inclusive_scan/constexpr.cc
! 515172e8155187b469773f32e2e783ad  libstdc++-v3/testsuite/26_numerics/inner_product/1.cc
! 6ab8d1fdaeedcae830d50c05a961ad96  libstdc++-v3/testsuite/26_numerics/inner_product/constexpr.cc
! b78fe5ac76935fb93c89467e7988e25e  libstdc++-v3/testsuite/26_numerics/inner_product/lwg2055.cc
! 7015acdee72736a52716ac58ae938f29  libstdc++-v3/testsuite/26_numerics/inner_product/requirements/explicit_instantiation/2.cc
! 0929c9d1f4e88a6b5f9ce778ac6931b0  libstdc++-v3/testsuite/26_numerics/inner_product/requirements/explicit_instantiation/pod.cc
! 74349b441dec427369f8c03a2c4e75da  libstdc++-v3/testsuite/26_numerics/iota/1.cc
! c982d6aaa4c9dab0894ace50f9f3db73  libstdc++-v3/testsuite/26_numerics/iota/constexpr.cc
! 77e3964372e7319438f2e4bf00b4ffcb  libstdc++-v3/testsuite/26_numerics/iota/requirements/explicit_instantiation/2.cc
! 60f92e8ec904935ac8d4151cc0b481e5  libstdc++-v3/testsuite/26_numerics/iota/requirements/explicit_instantiation/pod.cc
! 08539aa6d85601e5c884414e0e3665d0  libstdc++-v3/testsuite/26_numerics/lcm/1.cc
! e34475da99458f7a1a16d3d58bc08693  libstdc++-v3/testsuite/26_numerics/lcm/92978.cc
! 5173c15e5da52949296fbfb05fc1ad06  libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc
! 4e72ddc5145e1ca4cbaa0da8f2f0e7c9  libstdc++-v3/testsuite/26_numerics/lerp.cc
! 99cba480cfe0a31037aee3fa69baebcc  libstdc++-v3/testsuite/26_numerics/midpoint/floating.cc
! d07be8d9763f7bd442e79f9cb43513e1  libstdc++-v3/testsuite/26_numerics/midpoint/integral.cc
! 865269dc626bd5bc16f32d6ad6a4c121  libstdc++-v3/testsuite/26_numerics/midpoint/pointer.cc
! c9f54ca77d5111f585af2b0e8f179a4f  libstdc++-v3/testsuite/26_numerics/midpoint/pointer_neg.cc
! cd17748accf4d7860bb253443f0d3148  libstdc++-v3/testsuite/26_numerics/numbers/1.cc
! a0d9a5703ee9b7b1c854009c5621e27d  libstdc++-v3/testsuite/26_numerics/numbers/2.cc
! 7b232e9265bfff982b0e2a3a3f4b3b9a  libstdc++-v3/testsuite/26_numerics/numbers/3.cc
! 5500d832b0c989e6391bd75ac4d4a6a4  libstdc++-v3/testsuite/26_numerics/numbers/float128.cc
! 52463cd38b8e0a7024d7153b502d9927  libstdc++-v3/testsuite/26_numerics/numbers/nonfloat_neg.cc
! 125ed71c973d4f77d324a69f458d94ba  libstdc++-v3/testsuite/26_numerics/partial_sum/1.cc
! 6a752bce6ec16ae304bf8572425f8cc8  libstdc++-v3/testsuite/26_numerics/partial_sum/constexpr.cc
! e074b4730fb14fa323010398a7450f56  libstdc++-v3/testsuite/26_numerics/partial_sum/lwg2055.cc
! 1dc682eecaae6c6d971c0616c8e2d3cb  libstdc++-v3/testsuite/26_numerics/partial_sum/requirements/explicit_instantiation/2.cc
! 2721ce79436a23c6c6cddd3f9a9695ff  libstdc++-v3/testsuite/26_numerics/partial_sum/requirements/explicit_instantiation/pod.cc
  06f9a0eacab04d61b242252874d326a8  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc
  c7bf275d3e57ab4398c667478453b690  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/reduce.cc
  3b38ab0095f6c3e64a3aafc3953a3532  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/scan.cc
  be9f4cd42cf1d2640f0000739e67b4b0  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc
  ad6996fbdb2fc70e958aa203f8e720c3  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc
! 391113ce8ef50298348aa90c88cf9e10  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc
! 68963de733ad299f374392ce9f9a5630  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/cons/parms.cc
! 3c147c95fcd5984708256f4362676a4b  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/equal.cc
! d12715bcad2c237431d95db5f0d56d52  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/inequal.cc
! 1071d427f858e060759994ce14c8ce24  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/serialize.cc
! dbf234d8a58b4492ed03e699a1ed9120  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/values.cc
! e89afc55ea76cd120cda85a0a5b4433c  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/requirements/typedefs.cc
! d9d21b433c0a30b086a302697c3bb55d  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/cons/default.cc
! fa09b69cfc9c96883e602d2174f9e5c7  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/cons/parms.cc
! 6a9f7ab365130f9035dd84b346beae44  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/equal.cc
! 71d75ee15be52faea3e67b4b061f4830  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/inequal.cc
! 17c1f22da347299227200c5005bdb276  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/serialize.cc
! 435b4e3efd17b27c32ac8576d415e4fd  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values.cc
! 27af1a93253ce64622a9c7140269be69  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values2.cc
! 95285454a8c136a1b59eb13e9d302ccf  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values3.cc
! bce1585486922783c04fb0e4cd8a656c  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values4.cc
! 33e7737b9c8cd82465dbb14b09d8b178  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values5.cc
! 6a6328ab2d6449680541309b989819e6  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/requirements/explicit_instantiation/1.cc
! a0c988c130c10db40cd58cc650efa40e  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/requirements/typedefs.cc
! 1c536994bb7f1cebfc56c4640d89dbdd  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/default.cc
! ee45746a642e14bbd748142ea2040b50  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc
! 0d8cedf926f9df7a09d8716cbfd4bc94  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/equal.cc
! e4c1666883c4af556b86e76295b0845b  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/inequal.cc
! 07524d240c00354986b9dbf98d069e8c  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/serialize.cc
! 93110322af39b46e2529d28f2f8a190b  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/requirements/explicit_instantiation/1.cc
! 198b3d035a1ca36bb0bf97370c9d86a4  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/requirements/typedefs.cc
! 7df12b19a4183dc8d130d109f610a5cd  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/83833.cc
! ac22ec40fe333f00ce191949e394e317  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc
! c4de1b103e9fe33c95f37205ba4416ee  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/cons/parms.cc
! 186f865fbbefe9f287045002aa084959  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/equal.cc
! 8e1238ce5f4354ace86fde0efc96d0e4  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/inequal.cc
! 24c07e91b77eb5a49ee006f4a7a1ba64  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/serialize.cc
! f547000df252efa2eee27e4f43f5f1ef  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/requirements/explicit_instantiation/1.cc
! 49e70ca6ce3b6cdfd4e287465dc69a7f  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/requirements/typedefs.cc
! 586de5f690caf6f0bce3d4781508c317  libstdc++-v3/testsuite/26_numerics/random/concept.cc
! 3b2da811dd72f05072aa8f5a5ce84e31  libstdc++-v3/testsuite/26_numerics/random/default_random_engine.cc
! afc03a3978cf05a9253ba8c06078c52a  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/55215.cc
! dd0dd5f4c3151e5ace241107d7707dc8  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc
! 75089bd5e6cfad36ce75f00639010c2a  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc
! cef9c6dd5f8751df63d1c1fdbf717ec6  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/copy.cc
! da714c44b04018b12161f55c8ef407fe  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/default.cc
! 7eb5370830af437fe3db64d2925b7c2f  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed1.cc
! e5ef49e2c46ea0dabf23b920f570a01b  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed2.cc
! 98daaa06254c30e6b699e1166357f1f3  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed_seq.cc
! 477e9b25b8670370907f17a5fa1066cb  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc
! f35821df29d918f97c0aa713d7a41468  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/equal.cc
! c8eba98566cde8b305f984060941a977  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/inequal.cc
! a2ab807ce8b5bb4a7d2c49d833f71b21  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/serialize.cc
! f08fb6cdcc6daa835e16835d74c981e2  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/constexpr_data.cc
! 3d8bd2b445502b9dd24882192e5d21ec  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/constexpr_functions.cc
! a876de2a7f07f9d61ea6f0710108ff9d  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/typedefs.cc
! 214b1c0eac13a7f719078b6fd9aadc44  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/default.cc
! 103188a9cadd69cc787021675d068109  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/initlist.cc
! 9ec342b4411bc630ff6e78ff31ac14cb  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/num_xbound_fun.cc
! dfeb06efcad204e63780a478ac961ccc  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/range.cc
! 6608e6f54d363ac6db08b2a05a71c785  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/call-default.cc
! e52e03eedbd9e2ae2129db682fc1452c  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/equal.cc
! 9ee4ca47e7ea733ea08a6574862cd385  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/inequal.cc
! 05e5ffecd3d65cc0fc1478705110dd47  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/serialize.cc
! db5a8162bcb0883df756ff672005acc2  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/values.cc
! c94115db015aa0fd4c0bd1973f36b548  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/requirements/explicit_instantiation/1.cc
! 298a025276e9e548070c06fffc4402e4  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/requirements/typedefs.cc
! f34029436802a3c61a66d606bcc48795  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/default.cc
! e772264c5dddbfd026f02ddb23ae21fe  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/parms.cc
! 89a4b86c8161e9dcb37c61296a970fdc  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/equal.cc
! 15a47268dd1c6044a35557c0f57da950  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/inequal.cc
! c5227c8c5068f01da29dbc7c3ff3cda0  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/serialize.cc
! 14afe4ff850a26ebbb847413ca878341  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/requirements/explicit_instantiation/1.cc
! cbf95b45b17a82ee744edc21e4155ef9  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/requirements/typedefs.cc
! 55e0ad45ba90eba99f8fdf0761f11cd3  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc
! b36e6c3b272957ddd15d38c10ba17464  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/parms.cc
! 0046e585d773ee38dbd4b3e2526167ef  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/equal.cc
! ff61fa7db192baf60d0d3f73ac989b2b  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/inequal.cc
! a3013d472514d1799a550b72a766b8a9  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/serialize.cc
! ddf377baf4e4777656e7fe80713f7920  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/requirements/explicit_instantiation/1.cc
! 2b90cd0657c7e118fed37337e98b171c  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/requirements/typedefs.cc
! 5c02b7f50e4ce9809d476255f2b02c27  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc
! 98ce02f71ee04345cbc5a62796d795a7  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/cons/parms.cc
! 65e262a97d22c767ef4161e7222b3430  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/equal.cc
! fd278344b05fa95dfcd7f7d75af1be95  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/inequal.cc
! 8240852560a0a3f9d4588b6ca1670159  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/serialize.cc
! fce809710f8089648798a33b543b880a  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/requirements/explicit_instantiation/1.cc
! e419257f11767f3f1ac917e041f22af6  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/requirements/typedefs.cc
! d9115e3d783eda24fe6fc44809b22a7b  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/cons/default.cc
! 8f86f3391d63961cf22142cfbe73cc3a  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/cons/parms.cc
! 9c1e441761090bd7d8052f7bbdd1db16  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/equal.cc
! 072464365657cc7ea778a950a478d04f  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/inequal.cc
! 8ecba5e99b973ff8d5aaed3937109170  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/serialize.cc
! 46b111796b944ae17c7058eb0d1adf7b  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/requirements/explicit_instantiation/1.cc
! dba75750d50b65a6c5ae27f228f928df  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/requirements/typedefs.cc
! 699a26780a411fe365974e52fd26b93a  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/cons/default.cc
! f029d7b48e08225f064f5db46aaa428a  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/cons/parms.cc
! 02cf16594fa8259f524e1427a50c731c  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/equal.cc
! 5f446062c8478d2eea5ce1952945b8ac  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/inequal.cc
! 3eb09972786d831a8671d041962cfbe3  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/serialize.cc
! 7fd7af056b0a024cde992067ec142feb  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/values.cc
! 9cc7ea4b1397ddaf518168d23000f2cd  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/requirements/explicit_instantiation/1.cc
! f3dc28501beac419731c5b0b1df14ca5  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/requirements/typedefs.cc
! 8ae5c37ecec32100a733742038b1ad1a  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/55215.cc
! 308b64d7019b29efe971a6160654dc1c  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/base_copy.cc
! 94744f1aee7693f081cdd0766ee404b3  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/base_move.cc
! 8f252af4bec82408e346c88fe5d2f18a  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/copy.cc
! e93ad3330a2956529e5225d8f28575e9  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/default.cc
! bd58bc71047aab6354da436659ce0f46  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed1.cc
! 8445e5b67cbeb081990f1531ea4408d4  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed2.cc
! 823d550fb4bcdcaf5a6539964bc73671  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed_seq.cc
! 25c5c37043442d18b222fd228362adae  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed_seq2.cc
! 076baeda9341fb2b4f4dceb46138da97  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/equal.cc
! 9c76f1b7775abe2bd17a4dec466250bf  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/inequal.cc
! 2f10b86a88f6e46b5e7cb85746b64c17  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/serialize.cc
! 4fa58496a9aae8c3811052d46d592e5f  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/requirements/constexpr_functions.cc
! 57a12a2a34ef566ea01439bd76b60391  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/requirements/typedefs.cc
! 87fb84ff493976f6b42a7e71814a6a37  libstdc++-v3/testsuite/26_numerics/random/knuth_b.cc
! 15f95dce89762085c1ff9357a7ba8da2  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/55215.cc
! 53b6df01aca3553216c03fb118e49785  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/copy.cc
! dbd126ac5b29002ea180f84c5c04a4cb  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/default.cc
! 2bfe70c13b1d77d59fb78a9fa8a0a805  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed1.cc
! 6fb4457eec37f4a76bc0b90756afc488  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed2.cc
! eec9add50c0caa250729c5e49b0f5ff7  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed_seq.cc
! 0bce5b6a610b64c6574ead3f85c03e2c  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed_seq2.cc
! a8aa75486e5f9e1037d06835a340f92b  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/51795.cc
! 17f9947e9267f6fe1ba859b208a46877  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc
! 8b061e66eb651f4fd883cc79c8f79548  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/equal.cc
! 0ac2c3374237e0079cd40dd540da9215  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/inequal.cc
! 9fd61a1d8c79c3bce8c09d8e66937ee8  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/serialize.cc
! c935479db4fc2c93041fc4dd0dea88b5  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constants.cc
! eed2b13405b37bfd7281bc59a78da969  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_data.cc
! ee91a103b24592450cbfb2ac2cc1d4d3  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_functions.cc
! 0734f002f98352fea3ca46258b481eb5  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
! 99ba1468b4291b9accf23f53b2640160  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/typedefs.cc
! aafdd20ef6fb17606ed8f6a615c17723  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/cons/default.cc
! fcdbbfbcdf3a960cd7f9dc3b60bfa645  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/cons/parms.cc
! d2a5564e40c0545674a6de6786992225  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/equal.cc
! 6b4f9f73979d61d1a9bd6f18e8787162  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/inequal.cc
! b56086bf5f32b84c375ce7b144e95aed  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/serialize.cc
! e35937c75bead2325e618847b3c0a485  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/requirements/explicit_instantiation/1.cc
! 96056c4a1868dfce022d93c969e20861  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/requirements/typedefs.cc
! 1afcee507fbf5d6f906a1fec353bc231  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/55215.cc
! 2252899f1e7e01941720bea5a06c431b  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/copy.cc
! 539bd2fe20884712bcc9ef9134856457  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/default.cc
! aaee24898f22e5b03ff85d9e02bce62e  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed1.cc
! b6eae2321330897374cef2a04477b07d  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed2.cc
! 105ba479dbffdaad9898a5d2d9985706  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed_seq.cc
! 05a4c26663eeab12cbc746c0d4e351b8  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed_seq2.cc
! 2e643f43919241897617801c4a14b623  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/equal.cc
! 79682a36fe62d6bbd89899fd164a160b  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/inequal.cc
! 965d40206a389fd365d92d92a38aef0c  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/serialize.cc
! cb5a46f009a586945393141eb49af1c7  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constants.cc
! 9d836a1b83ecf604171dcc5c7e2fb14d  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constexpr_data.cc
! 01ee96353c1ffbeb1e942fc91d10ea6b  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constexpr_functions.cc
! 591086e3d472c9d613f7f138e6bbfd19  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/typedefs.cc
! 7dbd1298ed992eb29594298051d25420  libstdc++-v3/testsuite/26_numerics/random/minstd_rand.cc
! c353ad241c6f3da9a04b6534e0cf4740  libstdc++-v3/testsuite/26_numerics/random/minstd_rand0.cc
! 6176905e0ea5e2b1cdc9a6df9463933a  libstdc++-v3/testsuite/26_numerics/random/mt19937.cc
! 8ede9739edf2fb1c753a35e9f3f8d6f2  libstdc++-v3/testsuite/26_numerics/random/mt19937_64.cc
! f6a9616d53a06c4e93282a25ea0a9c33  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc
! db437233db07b60230d81c021edc0c58  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/cons/parms.cc
! e34df004700b3cda2c3df2d7c22390a2  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/58302.cc
! b27f9a26cfd985042789b2e374c8a69b  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/equal.cc
! 4a457933b08f653dc7815af49aedf6fe  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/inequal.cc
! 20d6e5de494d5008e08db3bd493d9a26  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/serialize.cc
! 98f501e253eb794705e4c2aae60ddc59  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/values.cc
! b8ea50090fa3841e7b26b43e70798fa4  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/requirements/explicit_instantiation/1.cc
! a9b89cb1649ca9ce61637d343ddd8821  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/requirements/typedefs.cc
! d80f5ed421169b7dc386434996424103  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/default.cc
! 18ddf9fe593a1959923caba6d321d687  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/parms.cc
! 7ffc7ed168cb10a6c37c5adb2dffacd3  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/equal.cc
! 7256d624e2ab4c55cb5f415c2d5b6725  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/inequal.cc
! c1388cf269719dda4ceaf7a1eeb43840  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/serialize.cc
! 92b2f44f1ea924a47de38a799f9dbf5e  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/requirements/explicit_instantiation/1.cc
! 57e3dc910035f142af19f7e5ec90d409  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/requirements/typedefs.cc
! f6d33ee1429f711b4966a770792eb929  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc
! 129fc1bcf77164226304d5612902db3f  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/initlist_fun.cc
! c1e070bafbd25f15b3a080f25fd771f9  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/num_xbound_fun.cc
! 848bf9f5ff538733f033d71e79cd8ba2  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/range.cc
! 4f3b6100b4f76bd62d770068f3fb33d4  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/call-default.cc
! 1cbaefe6cb6c97f2dea49ee75ec51393  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/equal.cc
! 479e3e8e2a6b0304f14f502664219b8c  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/inequal.cc
! 8b841bbfeec79807895f57acb6140edb  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize.cc
! c55b402bdd052b352ec2727c6335592a  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/explicit_instantiation/1.cc
! f0bffef102e7b46e42e5d9340505347d  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/typedefs.cc
! 3d5fa8fc572f6b513b217cf5280b2cee  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc
! 0729124d7457caed0ba43f27b5911615  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/initlist_fun.cc
! 2f70c3cc3e940f0c3aa3be7382c0e084  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/num_xbound_fun.cc
! c2884f0fff8969ce2d729a91f4ec0565  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/range.cc
! ffcf353eadfc87159da019bb5472237b  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/call-default.cc
! adaae6f1c01d512085c3fc67bf091a85  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/equal.cc
! 246a5c6f769fc38bcb22c56aaeeccacd  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/inequal.cc
! 79911dfe89934166d10ca81cce5c4d5e  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize.cc
! 28b9cd92e181f8367799b0de4f5a5ee6  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/requirements/explicit_instantiation/1.cc
! e93ad9af5d30bfee02b53a20a607fe89  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/requirements/typedefs.cc
! 454ab990540bb542bbc3742f9e9226af  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/cons/default.cc
! 4018bf28d8597939cf6850b7a5509f45  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/cons/parms.cc
! 15e7608ead86119bedad1d35255cdbc7  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/equal.cc
! 6749d7b8f4eab898b81529f8420908df  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/inequal.cc
! 5dcbc03f4f255ae56135b25cec0ba280  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/serialize.cc
! 73b0c27d9aa966e4cc6da9855fdc8523  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/values.cc
! 9c999c82491c954bbbbc9411256a7b4f  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/explicit_instantiation/1.cc
! e289156e639f6fb62ab388683d910974  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/typedefs.cc
! 9ed7c90932e518423e74465a94c76df4  libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc
! ca2cf6b593449ed1beeec7cb58fc6d60  libstdc++-v3/testsuite/26_numerics/random/random_device/85494.cc
! 1191250054a363859a2f9ac2854b6f2d  libstdc++-v3/testsuite/26_numerics/random/random_device/94087.cc
! e55163461f2825863d85db7f79f567be  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default-cow.cc
! 2c83337dd9aa02a244878c5853dd475a  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default.cc
! de2a3a80c9eec84ba5eebc3ada84b93b  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/token.cc
! d63e7f90dafb0fca4bc10f024ae1e380  libstdc++-v3/testsuite/26_numerics/random/random_device/requirements/typedefs.cc
! b3654d3a2237911626d014625ee2270e  libstdc++-v3/testsuite/26_numerics/random/ranlux24.cc
! beb086a2b92a125b25966af0ac0a4be4  libstdc++-v3/testsuite/26_numerics/random/ranlux24_base.cc
! ba0396f984117130fd134ff2e651b4f2  libstdc++-v3/testsuite/26_numerics/random/ranlux48.cc
! dca8c9fd01b8c6234c64f8d3a66d1f83  libstdc++-v3/testsuite/26_numerics/random/ranlux48_base.cc
! ca2c98dcb6e88a8c27e67cb1669c59fe  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/65631.cc
! ef42c1ed57d97c4e83a5aa8a347c7e82  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/default.cc
! 5b8ec802ffa68475c2e68b77c27e8c72  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/initlist.cc
! 81b81eea87e3b680a470d2d8b36da654  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/range.cc
! a148bec552a6f55fd10e5e743b2e304e  libstdc++-v3/testsuite/26_numerics/random/seed_seq/requirements/typedefs.cc
! f288aefac015ec69024ec7d1bf249fd3  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/55215.cc
! fc742b15cfd99b9b476b2235179e7f6a  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/base_copy.cc
! 3f4bcd1882c114b258e1cf1be1e2464e  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/base_move.cc
! a51ea20a10b71fb143c54ee81c65d69a  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/copy.cc
! 3cdd786ce74b16ce8da45a711626df24  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/default.cc
! 63cb7c179adf4e4f59abb07f4f2bc87b  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed1.cc
! 319381fa046aac90b69c8841dbbd852f  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed2.cc
! 45766b282c0d502dd76627f8cc72f4c6  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq.cc
! 3fe900a683912c18ac633c3e6c12157b  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc
! 477eb6f512e597c5d7934ad68ebde61a  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/equal.cc
! 1566962a851b0c0baf7b9d0014b04f50  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/inequal.cc
! b2d3a02bc369c40201790602aaa7b21d  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/serialize.cc
! ccbcbace548bd4bf367f91592b424bb8  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constants.cc
! 9b38cbe7e1ce7601213cdfaf134de3dc  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constexpr_data.cc
! 17ae174cf81fc48e0245f573503aebd2  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constexpr_functions.cc
! 7c16c0348f5272ce0a399fb69fed450a  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/typedefs.cc
! 5fc3aae9f9fe445d8d1a0dc425043241  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/default.cc
! 90efe44c0ca218f73203ebf959b630ae  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/parms.cc
! 13dff3d924de8901d89b7ceb47b9dc80  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/equal.cc
! 8bf257748325bb7acaa8c0b49561afa0  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/inequal.cc
! 71805867b441b3e5718cd433bc0128ce  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/serialize.cc
! 24dccade431683927dac09dde5af4ef5  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/requirements/explicit_instantiation/1.cc
! 3b6e1ec7b036d100bd05d2d8870b8721  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/requirements/typedefs.cc
! 72c25bb4fb80165918d61dc24ccb3e5d  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/55215.cc
! c240a5a012a8ec35d55d732510b3f869  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/copy.cc
! 91708ac1ace9c17e1cf3c671ce646b65  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/default.cc
! da9752f48db57b2db58a06b11e0ff956  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed1.cc
! 6c8b190e404566371a38ae35c4d02a1a  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed2.cc
! 9b65843f291b1297a2269a0f8b42da1d  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed_seq.cc
! 0e16ba245bec1bc599112757710327eb  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed_seq2.cc
! ac98144341b4b3652519561806708a7b  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/equal.cc
! 8aaf91b60c71bf192ec65cabf7448c73  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/inequal.cc
! 1bf577d35420bd121ac62fbf966979d7  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/serialize.cc
! 8a8a442b35749794e10b907824c21860  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constants.cc
! 26b12e16110c4e294a27e9eb321f9068  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constexpr_data.cc
! 730bb76df92c121f5e6378497cfac1b9  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constexpr_functions.cc
! a810dfb171ba2086a39d3418de3aa447  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/typedefs.cc
! bf68e762e2c086d2e59ac276fa1e6b9e  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc
! 1eff3268de407a0a35ec33266361bb53  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/cons/parms.cc
! 73318f1eaa321e69f31c9df06c853dca  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/equal.cc
! 8c647179aeafe591b569fadade8de066  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/inequal.cc
! 02b3d6a44ff2b93b7013e6143c36d3d8  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/serialize.cc
! 8b626b0700838f4cc8ade903ebe269b5  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc
! bb85a79ba928ec16e2fae76b0e60e728  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/requirements/explicit_instantiation/1.cc
! 9f72b3c63b96b35e1f442729bddec009  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/requirements/typedefs.cc
! d8390fb44f337b009afc021c40c0cb71  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc
! 087ed1e727a4f50e09ab462c714512e0  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/cons/parms.cc
! a875776dba3b8356850f9c23c09f0dc8  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/64351.cc
! 985f71529dc78dcfe49cc4a736950b27  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/equal.cc
! 1a1ed7f2ff7b2f73b3e596724aaa7621  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/inequal.cc
! 3753a36c2be190fdd90d32ea2469e810  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/serialize.cc
! 40a0ccebe350f1363df3e91a0f73c027  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/requirements/explicit_instantiation/1.cc
! 7db62e5cc8218d606693493bf9a83230  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/requirements/typedefs.cc
! cbab0c6cde022cfc59511ed1db51b1c4  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/cons/default.cc
! 7d79045eff5ce210402f5f90b4c00e4c  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/cons/parms.cc
! 52fc55f467129dbe3453ad1800096e5c  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/equal.cc
! 5cc718e415a862080c4b16907a3c4e1e  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/inequal.cc
! 2b7515842ff486b8882a971172b3b083  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/serialize.cc
! f4d821fc7d20d619d13b8425fc17280d  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/requirements/explicit_instantiation/1.cc
! edc07ad9145bfd94fd0d42dc48d90a1b  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/requirements/typedefs.cc
! 6c536198e7ad1782f3e07e1ff3f18d21  libstdc++-v3/testsuite/26_numerics/reduce/1.cc
! 4bb34c2823ac8d433f175b9264b1c298  libstdc++-v3/testsuite/26_numerics/reduce/2.cc
! b87ba7d57488dd1b3313b59f02c3caa9  libstdc++-v3/testsuite/26_numerics/reduce/constexpr.cc
! c8e496ff0d8600dd3ffa7ec000673f37  libstdc++-v3/testsuite/26_numerics/slice/1.cc
! b1f62400d2cab1960b7d3addd69f2f56  libstdc++-v3/testsuite/26_numerics/slice/compare.cc
! 4abbb51b0ddcc2ecba4b7385f894f27f  libstdc++-v3/testsuite/26_numerics/slice_array/array_assignment.cc
! bf643fe2aedc89b858fb702d954c1c49  libstdc++-v3/testsuite/26_numerics/slice_array/requirements/explicit_instantiation.cc
! 81827537273f1c2df8f3351a129aebfb  libstdc++-v3/testsuite/26_numerics/slice_array/requirements/typedefs.cc
! 2cc343c572e911d28862a76561d55afb  libstdc++-v3/testsuite/26_numerics/transform_exclusive_scan/1.cc
! ce8f6afbe0197f0e9941d330c87fffe5  libstdc++-v3/testsuite/26_numerics/transform_exclusive_scan/constexpr.cc
! a5358247b15452dc5caae361f7762d66  libstdc++-v3/testsuite/26_numerics/transform_inclusive_scan/1.cc
! 94b47f6b3d994651a08b4f13c59027c4  libstdc++-v3/testsuite/26_numerics/transform_inclusive_scan/constexpr.cc
! 7633633e0dac470354153bb8e970293d  libstdc++-v3/testsuite/26_numerics/transform_reduce/1.cc
! 4917a73f883f485cd09a057f3dbdacc5  libstdc++-v3/testsuite/26_numerics/transform_reduce/constexpr.cc
! 163e8018c0a9d9ebdb83bcd3f859f405  libstdc++-v3/testsuite/26_numerics/valarray/27867.cc
! 7538f9fc6e54a9d1cd3ce7839f6c6bba  libstdc++-v3/testsuite/26_numerics/valarray/28277.cc
! cf692c2a1a274a0001d2210a27308f09  libstdc++-v3/testsuite/26_numerics/valarray/30416.cc
! ac1b1da7941bdec5c4511cce84afdcf6  libstdc++-v3/testsuite/26_numerics/valarray/33084.cc
! 7cdae0a01aca264c8e727bacc2a240e3  libstdc++-v3/testsuite/26_numerics/valarray/40691.cc
! 418a7632890c6c575a46a41dd5dee923  libstdc++-v3/testsuite/26_numerics/valarray/69116.cc
! 9aeacc3bec54588f60fa706ec6289c09  libstdc++-v3/testsuite/26_numerics/valarray/83860.cc
! 50dc81a427e57ef5b8ce2a2389829746  libstdc++-v3/testsuite/26_numerics/valarray/87641.cc
! 59e5f3a283a29ead59bf83dc4eb75fa6  libstdc++-v3/testsuite/26_numerics/valarray/95592.cc
! b5297e6ef0951c8b529595e540c79951  libstdc++-v3/testsuite/26_numerics/valarray/algo.cc
  3e191d68e11822f58de5e4bd15365ca5  libstdc++-v3/testsuite/26_numerics/valarray/binary_closure.cc
! b4252d942b448f0aa585d1b4c2a434e3  libstdc++-v3/testsuite/26_numerics/valarray/const_bracket.cc
! d868a35e7d2e09013fe46c8c1fc54486  libstdc++-v3/testsuite/26_numerics/valarray/deduction.cc
! 479b35b80c93382ffdaf19453513a29b  libstdc++-v3/testsuite/26_numerics/valarray/dr543.cc
! dc2395691efd93cbd3d452fed6749786  libstdc++-v3/testsuite/26_numerics/valarray/dr630-1.cc
! 5c9d7ae1ab4a8b37f08d419cbe41d162  libstdc++-v3/testsuite/26_numerics/valarray/dr630-2.cc
! 07fb75a2fda2963f9197d86b10f38f1c  libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.C
! 3cfcae852809308da9f8c56c35a55723  libstdc++-v3/testsuite/26_numerics/valarray/init-list.cc
! 2c1b40380a534edf3e5f8e94fdbc96d8  libstdc++-v3/testsuite/26_numerics/valarray/moveable.cc
! f0a368224cc9276f4a633dd600834852  libstdc++-v3/testsuite/26_numerics/valarray/name_lookup.cc
! dbd0910580db8571862fb6a5bf7fcc3d  libstdc++-v3/testsuite/26_numerics/valarray/noexcept_move_construct.cc
! c791fe0d6bcf5babfd23629ed068e9fb  libstdc++-v3/testsuite/26_numerics/valarray/operators.cc
! 64d60700a21797dd44fd4f8d622d0b7d  libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc
! 0bbd127e770866d3c35408d9500a55a6  libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc
! 5b12c45a2338fa1643df22452ee47d38  libstdc++-v3/testsuite/26_numerics/valarray/requirements/explicit_instantiation.cc
! 7cb5f1559f00220967e6f6cb0d382499  libstdc++-v3/testsuite/26_numerics/valarray/requirements/typedefs.cc
! c2ace579ce66da33045961e4dcc4f5c2  libstdc++-v3/testsuite/26_numerics/valarray/subset_assignment.cc
! 2c382fd2b7d103bfbbbac1abcf4b7155  libstdc++-v3/testsuite/26_numerics/valarray/swap.cc
! a0e0c2528f7773879d347eac823e627c  libstdc++-v3/testsuite/26_numerics/valarray/transcend.cc
! 461f65995acf9fdc2ff3af9964f38ff3  libstdc++-v3/testsuite/27_io/basic_filebuf/close/12790-1.cc
! 4053ed662ebf8956feba0dbd5b7aa88a  libstdc++-v3/testsuite/27_io/basic_filebuf/close/81256.cc
! 6851dda942642f8557ad783497516e84  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/1.cc
! f46c86be55a332ef717c62b909ecd423  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-1.cc
! 414d5eece8f99f48a3c7f4b40d2e72be  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-2.cc
! 2c2e76f056e3cf658f7549b0c41329ef  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-3.cc
! 7569f990690c29922e868c1a00822173  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-4.cc
! 379297abfed1919de0bf2090e921a1ff  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/2.cc
! 46bc6ceacd8eaadea162b7a8c6ac6c54  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/3.cc
! 50731c7995316bac7cc1becf9085ac27  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4.cc
! 06e6829ebcda6cd045e2130031070161  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4879.cc
! a5d8f82870522269b63dfb99e9dbaa7a  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/5.cc
! 1d0cac081b2c96b9739bbffdc4c140f8  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc
! e92acb8467eba04a6e2731f354acf2f5  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-1.cc
! 839cf084e99e501869ba65567392210a  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-2.cc
! 1453e56c7ae5a554046565fd8d86fb5e  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc
! af3e47b5b9e76fa515db5bcc3c92ea2a  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-4.cc
! 008dedc58e11b81a7385ae97885d000d  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/2020.cc
! 1048723d49e1ea9106e18f7a427affaf  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/char/1.cc
! 5e37f0721f2ab0c7aabee19006376a34  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/char/copy_neg.cc
! 8cd535be6ae50cddf0ecf0bb27c13200  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/wchar_t/1.cc
! 48072b70c021cccc74b0806b4e814928  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/wchar_t/10132-1.cc
! 36006e53708a3e81dec1b03d091f85db  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/12206.cc
! b8b6b9d7fe8c494423092cbecf8054b9  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/1.cc
! d49536056c5ab6550df065227dd883e9  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13007.cc
! 1106cbe792f69ede06493a559b6980e5  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-1.cc
! 613682784c1ca44bd3dd54fcd7461dbd  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc
! 848e1055b053aea86259c00e83e03eea  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-4.cc
! c86329d7a0c8d4b70d55787c930aa40a  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13582-2.cc
! fb6b698189fc3adee18ef5d7de25ee4b  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/14975-1.cc
! 4b7718fabffd4116f926e8f969621e8b  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/2.cc
! 9d6629e95df6a0677fb6580216f3c987  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/3.cc
! d87935ebc2d1787ca261c8310c0b3b45  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/9322.cc
! 1bf0a0c63eb51563fa9c04f9d3c162f3  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/1.cc
! b8fae877667f06266829d4aa25977fd1  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/12868.cc
! 2ae45562ad746ad23e70936f96ea627e  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13007.cc
! 0a87622ad39470662cf739062d91bc51  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13171-3.cc
! a8332db134f65bd464d9613826b99ef8  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-2.cc
! e4a3630017e09ea121090353287d8d69  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-3.cc
! 1f933303f19e3ed293ef5613ab0ab4f7  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc
! 742467692d61f300a0f52773ed748edb  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc
! e249857937779c6751ceb47cb030e933  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/3.cc
! f047b6aec4eddcef7480b7e3d8c9d14f  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/9322.cc
! a830b9b824575ea1b0d7098a05305398  libstdc++-v3/testsuite/27_io/basic_filebuf/in_avail/char/1.cc
! b535cb045383b2c2fc377907f6854cb4  libstdc++-v3/testsuite/27_io/basic_filebuf/in_avail/char/9701-3.cc
! 035676bbd33ba356c2d36922ccfd83a8  libstdc++-v3/testsuite/27_io/basic_filebuf/is_open/char/1.cc
! 331340ffca9bcd32d32331b67bb0ace5  libstdc++-v3/testsuite/27_io/basic_filebuf/open/12790-1.cc
! f9da48a3675a4f805ae402d0d60906f3  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/1.cc
! e99cd1775322990fab4437bb0dcf177f  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/2.cc
! 57e3c9f8dca49cd09d1b3c62ca70bc58  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/3.cc
! cee2c9d594ed38e39ce553a2f77a4cbb  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/4.cc
! d874ab28b96eaa172a969cf90a9f3b20  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/5.cc
! 552f9eea4bfac88fb9ed7b614c277c59  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/9507.cc
! 15cb9a317f86d51f667fdc5096099799  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/path.cc
! 54c7a2e032134ddf194c0b550605c1e9  libstdc++-v3/testsuite/27_io/basic_filebuf/open/wchar_t/1.cc
! b107e73b38d80e5200f93eb5f5c73100  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/1.cc
! 67486cb8e408e3babf1dda91c47b090e  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/13858.cc
! 3506b13744cad1f461b9ca8b501017dc  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/2-unbuf.cc
! 15dd6462d79ed7f1f37220a5873b063e  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/2.cc
! 667d7cf67b7683742d232bef7e4b6b6d  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/3599.cc
! 85dbcc4353082fe3389aa66850210fc6  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9169.cc
! 9a30780d045b70465bf34e68f55f1710  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc
! b2e1e8a2871b832de777e95dd6e08da5  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9988.cc
! 416d791380f0385a6325e7d1ca8d66f4  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1.cc
! 9f527c9988d583f1b9d5cd2c188d8d26  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2.cc
! f32a70abee619916d51c78e7f113c989  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3.cc
! b3a72f95f1a74a3506fc6a621e62dbcc  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4.cc
! 994e7bb2d57d9d2c534d225febb6297f  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/13858.cc
! 4f0a83a54a26628f41a3bd84db88bf89  libstdc++-v3/testsuite/27_io/basic_filebuf/pbackfail/char/9761.cc
! fefc397ad002800c8159fab91c07b2f7  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/base_classes.cc
! eeac4126fb73e177aa76c8a172611efd  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/explicit_instantiation.cc
! 3e2fd007ea6c21140eecb6a6e33e1fe1  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/typedefs.cc
! 6834f8db9a4229697cfe37d090ad6de8  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-in.cc
! 7cae55cfd188a105c43616a6934018aa  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-io.cc
! 81882f1d2c9e87cea46abd81186cb030  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-out.cc
! 23d12cb90848ab8f90d189ef9eaf4e8d  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-in.cc
! 070abef02f0e8522a178308741760cb9  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-io.cc
! 1a28b4201c30d7aa74855907c8baafba  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-out.cc
! 984b942a074869bf5bfa3288d75fb405  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/9825.cc
! 79f1cb7f0126ab3ffe932f74d80ce23b  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/10132-2.cc
! 0e80db89194216c1cd5796e51a868a38  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-1.cc
! d149677bc471227bcd5b2b5c575467d7  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-2.cc
! 7c67469e83798d64876749eb24625f8e  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-3.cc
! 460055846c7c4a83e401fe2bc820f0c5  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-4.cc
! 209a406e1e2858ff602e978a9c5db17b  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/45628-2.cc
! 130c750ca3b15d2ae7659592fa7d34ba  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-in.cc
! f7a301fefc9465ee183f6d32dd7947ce  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc
! c24196f83bc5044ed21d3a32c8500e45  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-out.cc
! 78d6885134a731ec9a8616e776e04f14  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/11543.cc
! 9bc4e9e5ed85570231ea6730e1f9dc2e  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12232.cc
! 6e86bb0cfe2b6c89a44f3cce152865b8  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-1.cc
! 87edf2267400aac2557649a062beda13  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-2.cc
! 9cd77bba4d33d814336c37ec942dd88b  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-3.cc
! 3ce17a0a8aef80ccba3af3b8f46a66d2  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-4.cc
! 361229a3e7bc78b60c0f7d369ef66a72  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-in.cc
! c530167773f46ffc6e24be65ff15ff29  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc
! 4b5720f259aff2879c48df6b8159f586  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-out.cc
! bc5591eb6f053b7321c5fb96b1dca621  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/26777.cc
! e163993bbbe548a95cba486c4156aa23  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-in.cc
! cc471c199487a29cd5efa7900b72d118  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc
! 0d9efb6d50136ddf45d8a17b64418a18  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-out.cc
! 9db2cff1e28babfae58229db94180b20  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/4.cc
! fd5575b71298aca3941ed940a23e0df7  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/45628-1.cc
! 58fbfad0ae0420e133aac7f6295de5bd  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/1.cc
! 00b3502c87870546dc6a6e540b1547ae  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/11543.cc
! 180fbf0b716a94cb6f8d13aa45fd24ed  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-1.cc
! 701d9f301526296d9919390cfe6e9b1e  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc
! 30968d7fcbd48ed57f117dda0e0519ee  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc
! fd74d9c07a966db2057937c5d6d5c900  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc
! 5d0c07d837e17d18824836564f9218a2  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/2.cc
! f04efc8c27e63f71b0a2f8fc8bd83c3c  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc
! b8aaed2f6e92dd6f66ba5f1bac719d6f  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc
! 0ee5d453c21f38bf213ae902d79b43a2  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/9875_seekoff.cc
! e96c1ce269cd0465bcc8150e3949c09b  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/10132-3.cc
! 3bb4fd7053612529ec7d338600757367  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-1.cc
! c286037d849b783d1f5ade3cf79e2a7c  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-2.cc
! 4511f7a4d6c92a950bc0b0e22dc6ce51  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-3.cc
! 2da44b700e4d5caca5ffa6ed2fc83d17  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-in.cc
! 70937406bd37d65a79455ad101eea75d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-io.cc
! 3b9ae1908298fee321f66c0e82589e5a  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-out.cc
! 4207727636d057feaedd378276d7c33a  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-1.cc
! d0f004ee6e3c0836bdd6c7e9428ba683  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-2.cc
! 38c453179c8bce83f5d9d2fe8d78502b  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-3.cc
! f8f3bbb8f47f40579c6456fc7a14a9e9  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-4.cc
! 7a9b1389cb7c2ae79f477df86041eba4  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-in.cc
! 9daa1df956b61e29cfc9b1e0c5e758b1  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-io.cc
! 91c704971747891d4f62d23c22ce694d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-out.cc
! 6ce66df6e8d0ad135bdb688a06192282  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-in.cc
! 52f0777b2cb9a220ff9a725582240f21  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc
! 7c11163d391cbcce9e456dd7b0666ad6  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-out.cc
! 6a1c6da229f9fffee06f51b8ab539882  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc
! eda1ecc2285d4ceebd155fe3513dc0cb  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc
! 1937779f24d3eaee7e60890cbb9188a9  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc
! 9a6eb195458c96c9cab02628de1c1664  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-3.cc
! aabd3dd82656c4deedaebd4afd71dec0  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc
! 5dd04a1c775e8a13b4c659d8471d6e38  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/9874.cc
! 7aaa59abef61987316ba57b557a98edb  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/9875_seekpos.cc
! 92bd0339cea2b5bfd714b5859aed6118  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/1.cc
! 3c90b55ceb70381eb7a70f0fc4f0f885  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/12875-1.cc
! b01534464aae9d89a5af334e973b80b7  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/12875-2.cc
! d35d43498c21e8333dd9424eb681122b  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/2.cc
! c748093cfd8d9f89d44d58d80218134e  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/3.cc
! c144c7b83b993815604a648804acf4f0  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-in.cc
! 85788d0185ef593602a7cb57efa8a43d  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-io.cc
! 0ce6e595cfc3f199a50c7371dd8e94f4  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-out.cc
! 1e6e4c015e996c2a64e6fbb5def31f86  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-in.cc
! 8e1ea5e2c6818336d69b3a032b5c71f1  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-io.cc
! 48eeb21479ffe39646890983298606a2  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-out.cc
! 5b1c25cbeb7b639c5be73255b8e9c93f  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc
! 182320bdf9001a14e221f3da63f5518f  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc
! 4d08b6d90b018430deef6786f96d3755  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-out.cc
! a47a1d8ef2fcfef5826189ad7b94e67e  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc
! db22f7a098f852f1580739774927640c  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc
! 5e19f88921d71f289006105ccf9e074f  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-out.cc
! 9c4e914eda53ec121c0825f3da21bdda  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/3.cc
! 675838022867267480a7617efffe35ab  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/81395.cc
! 16182080a4b0c569abc03c36b1493af7  libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc
! a2829343753e5e1cf7f687fb6693e5f1  libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-2.cc
! d52bf14a17d0c7ff4db88e95e5643918  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-in.cc
! 651609375fd2d41a0b49aca2bc626f89  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-io.cc
! 5f17543edcf718bcc2a387c0c0005722  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-out.cc
! cdc739cb2fcb9bab14bbeaa488fe3ade  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-in.cc
! 01aced444ab359450242623b6a8a1cc2  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-io.cc
! a9d0d7260f63230b50b8236a687a5fb6  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-out.cc
! 0e15bc8a0ac2ce767d443c87f4f60bcb  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-in.cc
! bb3a79430fee479d55881c180801e81c  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc
! 591314fab545c5697d44b31ca8708f82  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-out.cc
! 85175a4e2cac719de9477319a25b7e95  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-in.cc
! f707a712a8721a4be56b9a3f8c53227d  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc
! 70432c78d1f5aff0422e71b063e096f9  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-out.cc
! 7b43dce693f9e316222f185fb7048d60  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/9425.cc
! 34ab1db1ec61a5597820c05e4e09860d  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-in.cc
! 500cf63f6bd988f01e2377f14e4fdafa  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-io.cc
! a9fcf452812713c580915eb1bf269bf3  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-out.cc
! 385adfc5e56f5c7b47604777edfde6d0  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1057.cc
! 6b0b0cc7a6f952f64ffa0ac0c2804c7e  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-in.cc
! b7b33b00db7b2e02963a832b860b99d9  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-io.cc
! 65597ea877dd218c27c26a4e3a10e0c1  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-out.cc
! cd86dbfacecc63507fdc96eb141a36b2  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/59427.cc
! 42ef259e6c79b161aab63ad7412cd7eb  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/9701-2.cc
! 4d355e6b60f57971b6d7faa1ea429a8d  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-in.cc
! 7a99cd5d035ea0d66b49162136fda2f1  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-io.cc
! 30635ec7d838fb1bb3255e91cff4e2b9  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-out.cc
! 437f6986cd479c47e842d47941529db9  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1057.cc
! 42e75954d160e183489d05dadf5b57bc  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-in.cc
! 1d0769862a36c35c729c03795ee9f1c2  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-io.cc
! afaffe9e592e64deec690fe0541e2e01  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-out.cc
! d11dc697559b843152bb2aa50eefc8e2  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/59427.cc
! a151d1a63048795519a0c996e231e118  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/9339.cc
! 518e6995b735db98ae905e3d0587b4f2  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/9701-1.cc
! 73cc5bc5fdc80a4d94252848d6270011  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-in.cc
! 93f8d204ecd21a5ca46f23e011320faa  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-io.cc
! 367c99d4a71909e1fd006f6776846ddd  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-out.cc
! eb075d42ae8b3885d497af4ceb903a50  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-in.cc
! 1cae38e8dcd80cf1def1ba6ddc10ac5c  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-io.cc
! beef3618502f6dff657d5ab8f964ba31  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-out.cc
! 3d5fe514c5454a518e0272b184e8c46c  libstdc++-v3/testsuite/27_io/basic_filebuf/sync/char/1057.cc
! e73568258a2b8b122be799beb7e3ed09  libstdc++-v3/testsuite/27_io/basic_filebuf/sync/char/9182-1.cc
! 2c02404a0fd625e31eef52c447d46922  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/10096.cc
! 78bb20e12100aa5a013d69c4c95a2d0f  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/1.cc
! 1309263cbda3dbca604d8bf1972abef2  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc
! 67e4db6acc0834bf6d37bc4ad98ff531  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/2.cc
! eaf0df901129a557d285557439c817d9  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/3.cc
! d9bea6ea6bb18e08dacae3712be2365f  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/45841.cc
! 6028888bd34f3a939e1ddbc997806159  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/9027.cc
! 6fa3dde62a85777261434d5f869deb7c  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/1.cc
! 9a485db1519a3046a56b9141cd48c6ec  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-1.cc
! e203039c868273ecf1e02c8d4b7565ef  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-2.cc
! 18b1184d4f414daff1e7a618942ae9f6  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-3.cc
! f36a03822a78c85456a7c125585bb095  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-4.cc
! 6d8500641433f42a7ef10fa71cfa8928  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-1.cc
! c84ec32f081413e6a9827a57031e65e5  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-2.cc
! 2dbdd4f48d13bf38a8c99f4819dfb8d7  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc
! de25f737e5f5022b13c8279e8eb1eee2  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc
! c260c34033beab43bfdd40b61f4a554b  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc
! 278b8e69ba3c6a90005697099c000b3b  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/4.cc
! bae864205ed56d9ed5a452bab5ca0ff5  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/45841.cc
! a4bddc5ff7dfa59814f37c6ddb906e0b  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/5.cc
! dc74871f45d9bd89673ff26e2abf4b8d  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/9178.cc
! d7c9c17f836d55a45ad7296802dd7988  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/9520.cc
! 159c5515edcbe78feb35892e4d1894d5  libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc
! 541c36437f79db695f98f8032b21be44  libstdc++-v3/testsuite/27_io/basic_fstream/assign/1.cc
! c066f78b7a150904fe1be371923f6219  libstdc++-v3/testsuite/27_io/basic_fstream/cons/1.cc
! cc86e169bbf225f2a5e1762793460b3a  libstdc++-v3/testsuite/27_io/basic_fstream/cons/base.cc
! 98075f3e480a1fd423f821655dc2376a  libstdc++-v3/testsuite/27_io/basic_fstream/cons/char/1.cc
! 53648bf2618ecf71e68f74588f73c909  libstdc++-v3/testsuite/27_io/basic_fstream/cons/char/path.cc
! 739460d7de4a416b17ee59aa6a682182  libstdc++-v3/testsuite/27_io/basic_fstream/cons/move.cc
! 92c256f0f2912584a96dcd124100e813  libstdc++-v3/testsuite/27_io/basic_fstream/cons/wchar_t/1.cc
! c4d5b4ddf0eb395bafe5034ddb6cda1f  libstdc++-v3/testsuite/27_io/basic_fstream/open/char/1.cc
! e06861df8371d41da9114c6ef15c1a3d  libstdc++-v3/testsuite/27_io/basic_fstream/open/char/path.cc
! 562e2841d8c5f44f8b14fd093291da4f  libstdc++-v3/testsuite/27_io/basic_fstream/open/wchar_t/1.cc
! 0844c3d8b14d7fbb44afafa02f44ef10  libstdc++-v3/testsuite/27_io/basic_fstream/rdbuf/char/2832.cc
! 14f792b0c05041c11addeab307de1d60  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/base_classes.cc
! 284a8ed4ee787f4d2a3ca8b2914887c2  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/explicit_instantiation.cc
! 50f7e44f037fd717440bda8a0ba8f19f  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/typedefs.cc
! 38d1977b1d59ed429306414842ba266e  libstdc++-v3/testsuite/27_io/basic_ifstream/assign/1.cc
! fb77b0126646fc210b7bcb27b115148c  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/2020.cc
! c64d5b818b9579f436944e0a3e875336  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/1.cc
! 6ea9965c414a5f31e720c5933a1e3393  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/2.cc
! 0637d08197f86c504aa91bf237e36b96  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/path.cc
! 66fb168a5c38da817e785e5d824a6265  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/move.cc
! d0bdab78e73f8f26a222094b6c48663a  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc
! 4ed900017ca858c21a7cfb090cb40754  libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/1.cc
! ae1ecd1b891271dfcfe698df9bc2be54  libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/2.cc
! 43a591137bef174e5eb98b0c00ca8fe1  libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/path.cc
! a7da4b2325ad734c94ca37e8d774126b  libstdc++-v3/testsuite/27_io/basic_ifstream/open/wchar_t/1.cc
! cb5861cc00f6246901ea08ffaf17d942  libstdc++-v3/testsuite/27_io/basic_ifstream/rdbuf/char/2832.cc
! 0a66ec5c9c3c477cbbdcbe7a8f076149  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/base_classes.cc
! 3f19e90833a7a104a81d2c7734068dfd  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/explicit_instantiation.cc
! 26728678e56217ea9dffe675ccc4f755  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/typedefs.cc
! 8d19aa3b795853abbbbd7ea16ee76043  libstdc++-v3/testsuite/27_io/basic_ios/clear/char/1.cc
! aeef7476a6cbb39f4b80d932fa433675  libstdc++-v3/testsuite/27_io/basic_ios/cons/2020.cc
! 7154ce51b228ce3792c2042f7a695625  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/1.cc
! 87b8f818b06333b2f3a5a0320f6dc32c  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/2.cc
! d013fe90809caa8904104dd30ac88db1  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/3.cc
! 56063839290b008ef73ea8f4335a5a64  libstdc++-v3/testsuite/27_io/basic_ios/conv/bool.cc
! 7508b6b5b9f3edd597989b51c395d4d7  libstdc++-v3/testsuite/27_io/basic_ios/conv/bool_neg.cc
! eb8616c3e962cc750df84a9b515ddd33  libstdc++-v3/testsuite/27_io/basic_ios/conv/voidptr.cc
! 05bbafc67be6acb5e559b69e0c46505c  libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc
! 0b6a2af5c7730b731767794f7fee5ead  libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/2.cc
! 22dcff208d484669002b2f6367241a14  libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc
! 4ce2a24214914f9a35b437a4f58e0770  libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/2.cc
! 88e80b9b3dd8f8066f17127e9c9b825c  libstdc++-v3/testsuite/27_io/basic_ios/imbue/14072.cc
! dc399fe58d03e58411aa59d6bf3887ea  libstdc++-v3/testsuite/27_io/basic_ios/locales/char/1.cc
! ecccad76e662630259d712bdc254eec5  libstdc++-v3/testsuite/27_io/basic_ios/requirements/base_classes.cc
! d97594499fa3aa8782e82164431e6ae7  libstdc++-v3/testsuite/27_io/basic_ios/requirements/explicit_instantiation.cc
! 90aeeaba5cb0474fe5a75d0aa722c94b  libstdc++-v3/testsuite/27_io/basic_ios/requirements/typedefs.cc
! 9d445962bf21eb491457f29474a281ed  libstdc++-v3/testsuite/27_io/basic_iostream/cons/16251.C
! da777bad0a922f9a9101cf640d624130  libstdc++-v3/testsuite/27_io/basic_iostream/cons/2020.cc
! 17bf9e2c1fc426ba6f8c3481ac5760dd  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/base_classes.cc
! e1d17a42214509d8f97a5edd79d4c7d6  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/explicit_instantiation.cc
! c171bef8a6d51ed4893bc4f432fcb317  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/typedefs.cc
! 90ae17f834312e4862f2f05ec3f02f62  libstdc++-v3/testsuite/27_io/basic_istream/cons/3.cc
! 035b56a654b1567e0f858d1ca337d5ed  libstdc++-v3/testsuite/27_io/basic_istream/exceptions/char/9561.cc
! a8d23397154ac7f4c3f58ab33a526822  libstdc++-v3/testsuite/27_io/basic_istream/exceptions/wchar_t/9561.cc
! 4eb97d35b01b887b97bfadbc2f5b1908  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/01.cc
! 3d1041f5f7206794144e0fc74a7f69e5  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/02.cc
! e2bfe068b9658860409f2488a04f2328  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/03.cc
! 4b902b2fb0e3c5a6e4bfc4a706d276a7  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/06.cc
! 8f5a31b3838cd07c588e51d397df8b0e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/07.cc
! 08cd68583439bda4bc8af500651ce24b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/08.cc
! 6b7c7576cef5c2862b7ccc8e252864cd  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/09.cc
! 0bab162a538fb091774320544a0d0fb0  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/10.cc
! 70aa4972e9ade35cccc0844c4fb0f683  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/11.cc
! 3c588df599040a664cea3a221ec9b716  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc
! 07dad787f006deb7c2081193f0318447  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/13.cc
! 7141b62b58681f04d07e85b8828a3743  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/9555-ia.cc
! f09d23e45f24e30bafdd69616016c95d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/dr696.cc
! 77254fc79011fa2239ab1f51560a2d29  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_badbit_throw.cc
! 4fb45c5ecf3a189a6b744fd97ec00c50  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc
! f7a281145340af43f8d93752316c22e6  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit_throw.cc
! 61328baa534cc587e362434775840e0c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/pod/3983-1.cc
! 987012529039079503c580394f9db00f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/01.cc
! 26424e465bbb50a26dc3e3e253d5349e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/02.cc
! 7a31dd61ad85ff403432a469b372f4b6  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/03.cc
! cbaac32ac65cf611ae84e884faf4d550  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/06.cc
! 8fffe437f4d1b110286eb23cb43405c7  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/07.cc
! 08fb0a2bbcf45da48d7135ecf2ac74cf  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/08.cc
! fea7d40fe5a3c1041edacaa53a506e04  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/09.cc
! b4af7c46c541d37cd2ba9bf24e91f51d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/10.cc
! d5d7282b838e40f26336aaa8f328cd57  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/11.cc
! 0f8327666d11e895f4cedbdef2b8e8d1  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc
! 6af12681a4c698d250a052811f38135a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/13.cc
! 012c3ff9d33518ae4bcd236b851fc618  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/9555-ia.cc
! 4de1bad9a940c5c69baeb64241b8ae5a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/dr696.cc
! 9bbfcbecdc283b4d71c413175be5e2b7  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_badbit_throw.cc
! 580e462dc7b07bf935ccc7ad3fcc8565  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc
! 714c8e6c0d5fd7a74bb4ec8857252dd6  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit_throw.cc
! 11373915e184f832161866f698d3420a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/1.cc
! b886393f620a79e1fc5b4a8e10156c21  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/11095-i.cc
! f566a03ec3502f4fc943a56f292f2471  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/2.cc
! 55c217cb07f3e4a8f52221514f705e05  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/3.cc
! f191dd609aa20a71f7d40542c5786431  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/4.cc
! dce05a368c5bd55e6112afeef371c288  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc
! 92c97d607d595b8a3355e84bee3453df  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/9826.cc
! f6597b7360457c9d4cec90c6f837164c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/pod/3983-2.cc
! 6ebfe4c3b4458b4e42c410401ae0d944  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/1.cc
! 41a9c1d6990e4ab3b538edca417c1167  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/11095-i.cc
! 574e30f74385594f9a295b70b5033267  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/2.cc
! 6633d8ef35cd42b121e54e4fff17952a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/3.cc
! e6c1f4f6039ff04299ec6b3e04e2864b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc
! 7ded01605e2925c51519dfa61a7e12d6  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/9555-ic.cc
! 2ff6bd19a7daf16fbf4ad15e6f33c239  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/1.cc
! 3b68dcb39359a154dc9b6a4c86b0c122  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/2.cc
! 402c69e76919a0d730216fbe105f2553  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/26181.cc
! 6bde305656ee1a0b27a3ba07b5dfd326  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/3.cc
! f76b0f8fa7aa0a084317b13e80ea8c14  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/4.cc
! c8d07e6ee97491946343de5259626795  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9318-in.cc
! a99662a5603c86ff56a9c3bbd071120f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9424-in.cc
! 3eab581e6b49fa9b8df5aa310206da34  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9555-io.cc
! 6e46b65fb40f7450ce4d80770efe391a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/error_failbit.cc
! b73285da8834ea31afb9a053339c9cb4  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_badbit_throw.cc
! 82985e53244ca879d839dd5f126bceb6  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_failbit_throw.cc
! c6cd1d7c52b35d504944ffd99d62758a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc
! d3db0fd83c6f8098b3acd4b5b2eda1db  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/pod/3983-3.cc
! 6bd2d0f37fca38918286c07c5b2cba69  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/1.cc
! 481ea23c24c35620774d6fec18990237  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc
! 967f6bd7be4f5381aeeae1c120234ded  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/26181.cc
! 101d81a4354bd96a658a29c306fa3be2  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/3.cc
! fba12c3a5f542e6d8389e3100879de00  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/4.cc
! 1adebd50ac825d70e9acfab4f6ed5598  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9318-in.cc
! 874c8dc4c5954bf36a790e211c82fb02  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9424-in.cc
! 5ceab129e75a9601b81a409ed9b44558  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9555-io.cc
! b4925a3f4177df812925783ae65d9a16  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/error_failbit.cc
! 16d42db5fe3b6e80f353842d423460d2  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_badbit_throw.cc
! 023cf5e5c25b3146360929595bc00d6f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_failbit_throw.cc
! a5fe5f0ad827f250578fa0ad02bd62d0  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc
! 1caec0d9fd3fe80390289675fd312b2c  libstdc++-v3/testsuite/27_io/basic_istream/get/char/1.cc
! f326deaca24a432124dc780cd8148fe3  libstdc++-v3/testsuite/27_io/basic_istream/get/char/2.cc
! 06357fc81c4133a227d0c124217e0cfb  libstdc++-v3/testsuite/27_io/basic_istream/get/char/3.cc
! 371d2b9a578ed294c3290b332ca529dc  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/1.cc
! 044c0807367b3ccbfb71976b9fd8f20b  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/2.cc
! 216510026949f8cbb30ad20ef87de69d  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/3.cc
! 5d0dbe65de4301ab013289b1a55d90d3  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/1.cc
! bfd7d4352f86434ba9fadeea6ec2c700  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/2.cc
! b852be43741affb11349826549d0a41e  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/3.cc
! 25bd2c15db4ce11dbff8386a1eb47879  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/4.cc
! cafcabf8e98a4342b51ca5b5b231dc0f  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/5.cc
! 01f0317b049aabe8df9b00902ff2116e  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/6.cc
! 266f26841900c4d0bb9138a4e848d753  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/1.cc
! 2b0b5eb5957d0931899903ef6b1a5bc8  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/2.cc
! 16102c75ac14721c5278965af54d28d5  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/3.cc
! 90033a0ffc6224a71e93a38bece3795a  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/4.cc
! d0805b8eca84e7b9340a1a983b0c6f36  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/5.cc
! ee1f1ff075dabc80c671a9754c62b84d  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/6.cc
! 38789b28bb01ed40c41b5f0da0c1fb37  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/1.cc
! 3d8f7b5d4940af94010270a9f256f7b4  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/2.cc
! 38626e0c326f03e0c98bdbff8302e30d  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/3.cc
! 54273857bd31b93faba9355681e43365  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/6360.cc
! c3642729b1f1884da0241515a74a18b7  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/7220.cc
! 68e969ed10f60625ad2d2dbee38a14c7  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/1.cc
! 04e3a77e2f6d1db37a5d2f934f6008e5  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/2.cc
! 499edbb70ddd30ec28915695133ac72f  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/3.cc
! ace66aaf96126e3d1a499e5b26491fcc  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/6360.cc
! 35b23e85ae910ee31fc70024446b0d7c  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/7220.cc
! 3d2e8c9c73027b4f47edf6f8d58bafec  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/1.cc
! 15a22db0f059ada430b875db55bdd790  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/12296.cc
! c1038c28c335731ad9c2fe7b6adffeb3  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/6414.cc
! c9b860074dfd6a87944a7cf838cd4c6b  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/1.cc
! 0eb5528857f0fddc294fbfb4e2ea56c1  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/12296.cc
! ab08a92819e24a8a52523f87864965b6  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/6414.cc
! 6c5cb5c69d4d54d0e704eacf5d4651be  libstdc++-v3/testsuite/27_io/basic_istream/putback/char/1.cc
! dab9a35fa3da824aa4f10a007d3a2575  libstdc++-v3/testsuite/27_io/basic_istream/putback/wchar_t/1.cc
! b73b43a4dec561b9802a05a67dd57ec8  libstdc++-v3/testsuite/27_io/basic_istream/read/char/1.cc
! 955e3f2e83df4f41e8956ed803c55be0  libstdc++-v3/testsuite/27_io/basic_istream/read/char/2.cc
! 0b2e1e58c3e7d7f7ba79ba275239fea3  libstdc++-v3/testsuite/27_io/basic_istream/read/char/3.cc
! fa9ad8359df21bc0ac3fce410237aef8  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/1.cc
! bbcd71c260ec6c695bdda361506678ff  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/2.cc
! 78ce8887eb9ade952cad18da0cbcdeaa  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/3.cc
! f360da73d648cabdc7d457b5754c6a95  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-1.cc
! 796f445d63ab06d643425f65975dd494  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-2.cc
! 6b9d5a31bff674bb9fb143f36c4dd618  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/8258.cc
! f833ffdb9b3d8095d38752c10260b282  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-1.cc
! 59d0e2c2f73ea7aea7cb4231f7984868  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc
! b41e282df8cac4d7c0960aa98334eda7  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/8258.cc
! 0408180d7214985ab796d71a606a00e4  libstdc++-v3/testsuite/27_io/basic_istream/requirements/base_classes.cc
! 6c86fe3ad948f0168e01f503af4cf1ab  libstdc++-v3/testsuite/27_io/basic_istream/requirements/explicit_instantiation.cc
! b585ad61772eaf2c30cdfdc5e2ecae48  libstdc++-v3/testsuite/27_io/basic_istream/requirements/typedefs.cc
! 6babef84a7f37f4fe48de0f245dc05e0  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/2.cc
! 57934da5f3dd592acc7f71c98b30c170  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/26211.cc
! d0c8c47ea642ab36c37f676beceac579  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-1.cc
! 72655360c16fba0fc8b80437273871c5  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-2.cc
! b26a54ca814054dc986278621715b912  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/exceptions_badbit_throw.cc
! 2d53cb472752cf0530ae75265cd98010  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/fstream.cc
! 012a2b88cd974daa4c622726a3fdd485  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/sstream.cc
! 02dbef87c832ebc04e191586252e3a48  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/2.cc
! e3a677eae5b49d8a9e19edfedf139e1d  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/26211.cc
! d61282a61180e0b41fb27d28184a7515  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc
! 8e2260c5270ec5ae8176612fcd0b27ec  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-2.cc
! 6f7cb1cb5ce989a6106491533f2810b8  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/exceptions_badbit_throw.cc
! 08511ddd9b6ef94921c33e690fc48d7a  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/fstream.cc
! 7ae4c04948a27db5c9eb4283f52fbf86  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc
! 3a5d65772a50ffd4f2c4007a3174a36f  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/1.cc
! f9fe3f338961bde8ec8134e1b55ef7be  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc
! 1d5be3745e926ba6ec1e8ae1329fdbd1  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/2.cc
! c9fac175c18939d61f77b126e33d77b7  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/3.cc
! f7205d1a28d78ad42316562a0a436447  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/53984.cc
! b4410a546ad297914258b5f935e2f9fc  libstdc++-v3/testsuite/27_io/basic_istream/sentry/pod/1.cc
! 7b37abc3dc8111931d42795a81cf22fd  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/1.cc
! 2d838880a5897f46ec8e9e7330b6622a  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc
! 55d7dc3e0179bfb553ee2bcbe1f814ff  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/2.cc
! ea29d0555c82cda7fd8ffd5354cb8ece  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/3.cc
! 5e8340d8070b9970458498b923c02717  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/1.cc
! 8840acb979451d41dcc95b5534e9b3d3  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/2.cc
! 491bf1e9357d5742b8f806edebf358f1  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/26211.cc
! ab7db15e8be9fd9e6cd10e94a1d4235d  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/8348.cc
! 9c82d0b0477a166b6963fe0a0c087632  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/exceptions_badbit_throw.cc
! ad77d3262469a9686c2c30599f4612fa  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/fstream.cc
! 783d4e1f5346aef1e491d65059e9b46e  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/sstream.cc
! b3ccd9c9e341a6f68f1414e6fade9d90  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/1.cc
! 5f4be53225ba835a95223ec081de19f6  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/2.cc
! 2f978ded9539ef53369bab4647d131dc  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/26211.cc
! 678622636b4a88d7e94773c9d9c311e7  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc
! 24275c07928376e877d63c456124c2ce  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/exceptions_badbit_throw.cc
! 31c518c0fe956c2d89e0c86c32f0fdb2  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/fstream.cc
! 9bf8785e26d1098416c95d5f09a05dad  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/sstream.cc
! 7d7d7d6f25ef516d38e291229bc440e6  libstdc++-v3/testsuite/27_io/basic_istream/ws/char/1.cc
! 94eb086412ab492e700d09cfc80a79d7  libstdc++-v3/testsuite/27_io/basic_istream/ws/wchar_t/1.cc
! c0049ac8ad373cab3043cae0250a22ac  libstdc++-v3/testsuite/27_io/basic_istringstream/assign/1.cc
! 865ddea3ad99b7fae7f98c598d1d24b3  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/2020.cc
! e7af1eea884a4d3f596d5ac26580e5e5  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/default.cc
! 7ec83e5aae685680321bffafe5b65237  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/move.cc
! e3664ea30043d3b44cfdda528bdd1520  libstdc++-v3/testsuite/27_io/basic_istringstream/rdbuf/char/2832.cc
! ecb13214ef9bcc3383a0f6b7babf5929  libstdc++-v3/testsuite/27_io/basic_istringstream/rdbuf/wchar_t/2832.cc
! 9d9957965d52e87ca2f7877a9a99a2fa  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/base_classes.cc
! 6c361def3c6e363b379ee4b84c258f35  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/explicit_instantiation.cc
! 4396d8833ba888ed2ff08aae566d2a9b  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/typedefs.cc
! eec6b05e8ca6e359674de12d9acf3ef2  libstdc++-v3/testsuite/27_io/basic_istringstream/str/char/1.cc
! 218e6ae1816c4ea404a4d1a1b661e130  libstdc++-v3/testsuite/27_io/basic_istringstream/str/wchar_t/1.cc
! d950ab638acce60898c25a4c8bde128d  libstdc++-v3/testsuite/27_io/basic_ofstream/assign/1.cc
! 168fe29e2d3bd8bcb5b37ac4b9227daf  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/2020.cc
! f1599f64a38d75597b01b843d3619c21  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/1.cc
! eb6ae0667028f12771d0370d6e011e38  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/2.cc
! f60a44cc728aca4d3652c1f04f0c9f0b  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/path.cc
! 6a931759aec520b3f86e3c4ae5486b6d  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/move.cc
! 3b8097b1d575e8b38d6f82aeb92ee7ac  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc
! a92fb0f03c28979cb628dd4f9493478b  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/1.cc
! 61cbb38c530f88f154d31795e0513e68  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/2.cc
! a6e1d36cca24c2ffeca2006ee83be057  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/path.cc
! 63836e64926081e0fd1038f8662ed49f  libstdc++-v3/testsuite/27_io/basic_ofstream/open/wchar_t/1.cc
! 5b3ebd2f0c50051c3b2db997be8ba546  libstdc++-v3/testsuite/27_io/basic_ofstream/pthread2.cc
! a781f6f90c1d893eb3dd0605d3aad262  libstdc++-v3/testsuite/27_io/basic_ofstream/rdbuf/char/2832.cc
! 71b13777bb350b124041b6b909604d2f  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/base_classes.cc
! 8ca9cbe6901e4f06ab31f8b5a2636bca  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/explicit_instantiation.cc
! fc3fd7d93f6a61fd4e33603989295afa  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/typedefs.cc
! 1dafb1b61221a056bbce95fc9fededbd  libstdc++-v3/testsuite/27_io/basic_ostream/cons/2020.cc
! 4aaaf4d1673cb404c56d36c32938b109  libstdc++-v3/testsuite/27_io/basic_ostream/cons/char/9827.cc
! cbeced49e59602fe2bca5bf4b8f5fb70  libstdc++-v3/testsuite/27_io/basic_ostream/cons/char/null.cc
! a367de11034688acc79c6bace86c861f  libstdc++-v3/testsuite/27_io/basic_ostream/cons/wchar_t/9827.cc
! 11998ec76652e5116b30479e1b886110  libstdc++-v3/testsuite/27_io/basic_ostream/endl/char/1.cc
! 96e695244b78cda80f23e9be750bdecd  libstdc++-v3/testsuite/27_io/basic_ostream/endl/wchar_t/1.cc
! 152d3990c311660011ba5dcc5d39a437  libstdc++-v3/testsuite/27_io/basic_ostream/ends/char/1.cc
! b584b95598e8071c36a3cf862f23cdf1  libstdc++-v3/testsuite/27_io/basic_ostream/ends/char/2.cc
! 6af9dd8c0f99d994eaa208c9be1437e1  libstdc++-v3/testsuite/27_io/basic_ostream/ends/wchar_t/1.cc
! fe882ca9ab177d4f1ed9d5f97f8cbb9d  libstdc++-v3/testsuite/27_io/basic_ostream/ends/wchar_t/2.cc
! de01a44e47a926f94543613770add532  libstdc++-v3/testsuite/27_io/basic_ostream/exceptions/char/9561.cc
! 2fcf86b02e9e0ea6a141bcdd222bf522  libstdc++-v3/testsuite/27_io/basic_ostream/exceptions/wchar_t/9561.cc
! f7e7cb7efe12fa6587ec9d1f8e8ddb2e  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/1.cc
! dc6c117739f28e0a11890c0abf153ba7  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/2.cc
! 66409e314ac39a7973c41751487533ef  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/exceptions_badbit_throw.cc
! 923d6f8ccf35dd5bc53d15b4832dc4dc  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/1.cc
! f8dc2936ba42f0787eea687edcff3b69  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/2.cc
! 4f76bbcdb156412e29d5a6a8437f3f02  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/exceptions_badbit_throw.cc
! 61a2d18d043adc121a9bcefd98e4fe97  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/1.cc
! b657e25bc384db9203a62883e6065b49  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/2.cc
! e031575668238ae14c198fc5b54b1598  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/23871.cc
! adc1f68926e92a82b113a4828e8288ae  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/3.cc
! 2e2bbf3dea51a5fa7dbb4402d6983137  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/31031.cc
! 39634d04b9f6dfd65801d35283b5787a  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/4.cc
! 0974d171056ad5d3e9ec57331e98ad24  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/4402.cc
! 4f470f6f45c768007e52fb2d5667e683  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/5.cc
! da1304ba5820a9a93cff45a99f9a5ca2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/6.cc
! 53301acd351abad59620de6185bbcf8a  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/7.cc
! a4845dcc7352540ea5d3d05bada29c62  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/9555-oa.cc
! a1f8a6878970278da0f7ec02f26bbcf9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/exceptions_badbit_throw.cc
! 777a9853aaf92c4582666129ca908749  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/exceptions_failbit_throw.cc
! 4dbc4c17fed36cd9f89ad46def67c865  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc
! 6e1b8409ed6da5b32898638b128b3936  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/pod/23875.cc
! c9700ba636db7686c3375e6ba6c7ae0a  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/1.cc
! 71a537ccbee5f38361f04f6862a131ca  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/2.cc
! 8f1538d3ac0c50f40442bc3e8f875383  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/3.cc
! aa6ccae6062f0b50fab30d2289e256cd  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/31031.cc
! 5b31b6914d7deb399baaac2eafa56e12  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4.cc
! 61002fbc13431e6d7fb9464f39adb27d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc
! 502e2b736ea6563a1903408758a1fa00  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/5.cc
! 031b9e3b7256c7dfbda8ba876d3c8280  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/6.cc
! a0691af7368602b91d5743c64c04e470  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/7.cc
! bee82a676abfaaf0232d448c3f24e7d9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/9555-oa.cc
! 9cfc02507d8bac2001e5e1c30b33ad71  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/exceptions_badbit_throw.cc
! 24b111bb8eb219f5c499cdfbed97d49a  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/exceptions_failbit_throw.cc
! 6d132b08554bd24b5477290d1358d239  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/1.cc
! fc012cd8a3a886c5b96ba3b1867f84be  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-oa.cc
! 61498aa1699e416d508fcf0b640b63e2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-ob.cc
! 11629dbdc9c184f251cfa2136c6a1461  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-oc.cc
! 5dc894a79c445b2668daa944adff3678  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/2.cc
! 6e764ca24d3b1cdf4b571141fa45f637  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/28277-3.cc
! d3d7a948f3f7ce951d60d6e53e18f1a7  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/28277-4.cc
! f589b968ec8359fd9f99a4fd6b65ef1c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/3.cc
! 9a6e9cb63890980dc48327eb9f37782d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/4.cc
! 7583875618acdc46b1b6066047415aa8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/5.cc
! 76b01eb90b117e507bf2a035c86a273c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/6.cc
! bbe2574ce3fcaa29b54e381604a659e7  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/8.cc
! e09adce1077fef2cd464e74689899582  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/9555-oc.cc
! 0dfb6c4804c94d69595930632ae14b00  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/deleted.cc
! 0e6a672b82efcaddb07682cc27cbab4a  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/1.cc
! b8ffa99501120e3a52f2b17f38653237  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-od.cc
! 36d7d0d8efd607fad0de64c42558d0c7  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-oe.cc
! 0747f1c68b8d207081854145757edb33  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-of.cc
! c0c441a8c1ee4b6986f39aeeb71147e3  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/2.cc
! 7856497ad40fa9d2cf44a10abbe870d9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-1.cc
! fe9795faa8e229c622f6496c569e0ec9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-2.cc
! 5ced1eee5672b083d49dba7a2f6548d1  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-3.cc
! ba22c914bddd54fd4a299a069f817ac2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-4.cc
! b7e786f35ef979479adaab24e999073c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/3.cc
! 690ddd9217fb751949967990006db1d8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/4.cc
! 065e8c6b7a976469bf4a5fb1655111b8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/5.cc
! 0caf17c3bd3e77d80b7df699e8944adf  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/6.cc
! 6e413ef0bc87624b381c32c76c794f92  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/7.cc
! b90e83671bb377dcd3bfde9ad35dbd05  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/8.cc
! 503193cc2e412d869f61952c0f140a18  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/9555-oc.cc
! dd522e0814d491e6f9a1ba376b99ea3c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/deleted.cc
! 3a897e83c2162e750b44aa46c0ffcd13  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/1.cc
! b92337833e53c3fff6c03aeb982ca040  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/2.cc
! 77c06640fb7c5ca6674f771e9c2e88ca  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/3.cc
! 04b39cb325fd44ccb0bec92eb2160c12  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/4.cc
! 62ae8b9d0bb49984c9dd26b98485f947  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/5.cc
! 37a9ffe6e20118bbce6b7d35b125fa0b  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/6.cc
! c2439f903f8238a344e4138775f5edf6  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9318-out.cc
! 56a6a04e92baf7db02b9bde8e527b484  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9424-out.cc
! edfe8c73d1ead3a3424a88b4366f84fd  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9555-oo.cc
! 17e4b68ccee5ad4079e4d2974a5db704  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc
! 1d470916619dcb3120cc6f2108231d19  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_failbit.cc
! b4fd5f51f2e5c221ac7af1cf106aba07  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_badbit_throw.cc
! ab0abc457ef59bb96e1fabb0a24508a7  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_failbit_throw.cc
! fcd2fe1fc8b3d770e132ccc03cd29f8d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc
! 78fdff865cf255b1618f2666ac043ee7  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc
! 7bfee9d288500ff6da2b4cd7b75851c2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc
! ff20290e33a31afc587d249c8269212e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/2.cc
! 165496e7eb6108aae5951e3cf2b534ab  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/3.cc
! 06f6a2a8db5cfa49d22b81af59421210  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/4.cc
! 916727cdccb67b37ada75a3e898b0ee0  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/5.cc
! c787d4f9f8f611f2ec00376a664a3c41  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc
! 51bf51b6ce991d50a142c9e1f3f14a35  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9318-out.cc
! 30a03bf78ad0a3421a75804ce6011fef  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9424-out.cc
! 832d10fb56b2b8b7e11006dfc1738884  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9555-oo.cc
! e5b52c6a9e6e32cbbab48cd7d2ef28fc  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc
! 03247677c6870ae311e29a342b640b89  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_failbit.cc
! 5265f14f7e2d6decfe5dde91aee15718  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_badbit_throw.cc
! 08b0b63fd719cc41e9a7b1df5cb0eb9f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_failbit_throw.cc
! b62eeb687d16c0322205815b513499d7  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc
! 94131ee3d63383e56c35a70d6e1f5fe2  libstdc++-v3/testsuite/27_io/basic_ostream/put/char/1.cc
! 3a2212ca82619675843f0d262bbd3962  libstdc++-v3/testsuite/27_io/basic_ostream/put/wchar_t/1.cc
! 2ea58d8c10ba5c97d8e6de2bcaf99a80  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/base_classes.cc
! 81ba73f84b84644f3e0e6995dec58f96  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/explicit_instantiation.cc
! 09baebb0890eefb708806712f5d6d179  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/typedefs.cc
! 27b6bc1852d25631c3f6a6935a38d3b8  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/2346-fstream.cc
! 4612e879ff26905ed47877849ea84405  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/2346-sstream.cc
! 9ebb7735bb13c2538c5cf64a8e8636af  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc
! c89b98a4847f1e1fd29db7a2ec8cb8e7  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/2346-fstream.cc
! 824800913cb1b3ccc1c6b8c99564311e  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/2346-sstream.cc
! 6c0446820297c4b0e4bbe705153cf0ff  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/exceptions_badbit_throw.cc
! e6db20456539c11a611025dcf65b6329  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/char/1.cc
! c267470340d46619e99817dfa0d45ed7  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/char/2.cc
! 878cd9ddb93e2d36159f9f86fc79f293  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/pod/1.cc
! 910958d46ae2ff542ebb0d3a35df204a  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/wchar_t/1.cc
! aaff7a2d52850f45a2f01ce92ff52c33  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/wchar_t/2.cc
! dee39791aae65acaf00c3a3e18970b1b  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/1.cc
! 058ba8b8c4606b70c5884dd02a3b0254  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/2.cc
! de8c0162adc0bafa312a0eefedaf1671  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc
! 99545b5de456efc41d57d88273bc17a6  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/1.cc
! 984128520f0a431166fd6d8b31e28dc9  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/2.cc
! b71b0d72c030ece6883e320663c26d4c  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/exceptions_badbit_throw.cc
! 0d4458e0502dcd308a613d09b08d0cd3  libstdc++-v3/testsuite/27_io/basic_ostream/write/char/1.cc
! a233636d4c5c68544c008452f8a71a03  libstdc++-v3/testsuite/27_io/basic_ostream/write/wchar_t/1.cc
! db7f1f39303b9db7a5b4500083efd1ab  libstdc++-v3/testsuite/27_io/basic_ostringstream/assign/1.cc
! 4e81d8fe8f2c05f3c36b56d982d0288f  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/2020.cc
! 08c4ddbf6ede436f76092d63b2287c7b  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/3.cc
! d50b444f148ccd06ac2df7b05cf79140  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/default.cc
! d07e0510e7751bac0e8e49243a468396  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/move.cc
! f0e6b9d847fb70b0e5c8080766e8dd14  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/wchar_t/3.cc
! 4042765340bf9291c827adfc40bf545b  libstdc++-v3/testsuite/27_io/basic_ostringstream/pthread3.cc
! ba826fc073f58c544ed500a9f70869f8  libstdc++-v3/testsuite/27_io/basic_ostringstream/rdbuf/char/2832.cc
! 542dc81d87d42c2af83779780c021b46  libstdc++-v3/testsuite/27_io/basic_ostringstream/rdbuf/wchar_t/2832.cc
! ff170a2061c32ba6965006b4c9dbe09b  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/base_classes.cc
! 62a9f876e26769ab158d58a35efb2e04  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/explicit_instantiation.cc
! d14bebcf1a1f17eb9861e6721c795321  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/typedefs.cc
! 6eeabcd9078042b4eb929c97ce608cbf  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/char/1.cc
! 4a4af4cea4dd49bf2e92f964521d291f  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/char/2.cc
! 0bae8b2505d33ba53166e3a0689b614f  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/wchar_t/1.cc
! 2c8a9bf11947ca5b5047fd8af2ec51ef  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/wchar_t/2.cc
! b526d4d183dc7bb32623d7adf52999af  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/2020.cc
! dba4b76b99f4b0df54fe558ea89ba182  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/57394.cc
! 55cd76b48a7c4f89c439b36d246e9e7e  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/char/1.cc
! 8c6a4a60170d89064688c10c06f01b49  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/wchar_t/1.cc
! 8f97d272624345f0cdd5399b9e7e6cd8  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/1.cc
! dff8e1784abc01c781ed5cf4db7b0165  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/13007-1.cc
! 258b0361255a3bceabd3ad30402111af  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/13007-2.cc
! 21b3e68179d231da2234a47d6813de03  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/9322.cc
! d8d56d225aa807198cddaf250b1b1ae7  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/1.cc
! 9cbcc35dd51f3e3c7f7cc01ec2650a3d  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-1.cc
! bd57c625fb4f667def8c79d9c2784619  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-2.cc
! 4161faaeac80ca564d9c83299a3d6e29  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/9322.cc
! ca48d8dbe331bb06dc7d0686573f9822  libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/char/1.cc
! 230039bbf856ddd69c545dd83becb8df  libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc
! c2f4bf93a1abf44d47d1cd7d55d6dd01  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/1.cc
! 1596b1ca25f65341d20199307c5d716f  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/2.cc
! 4965782ededc8b6eeacd36ee7aa1efea  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/3599.cc
! 612c61ac98530504813b074c7403b34d  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/1.cc
! 16dd011bff489b7cbbac9902c2beb267  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/2.cc
! 967746ba092ee4a6b074865e4dfe84ce  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/3599.cc
! fd5d97bd9e06d500415044924535b5e8  libstdc++-v3/testsuite/27_io/basic_streambuf/requirements/base_classes.cc
! 5257204152b53063337c272ac8919e11  libstdc++-v3/testsuite/27_io/basic_streambuf/requirements/typedefs.cc
! cf23cbdca6d70f6e914f4e92eab05a2d  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/char/1.cc
! f7b998b7069295986937e91b3c4fd14a  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/char16_t/80624.cc
! 397377dc2677ea31de5f81479675ed8e  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/wchar_t/1.cc
! 339c91a9a419d6efd9c1d8780116d91b  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetn/char/1.cc
! 63e38d8af7053240cb5843627afb0c04  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetn/wchar_t/1.cc
! 18881447546e6433a0f11c471435cdf1  libstdc++-v3/testsuite/27_io/basic_streambuf/sputbackc/char/9538.cc
! 2448964d3eaba65e56595849253f3134  libstdc++-v3/testsuite/27_io/basic_streambuf/sputbackc/wchar_t/9538.cc
! 0c8d1c88febf3fa8c977598d319c8f45  libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/char/1057.cc
! bfca3a1fb71184df7b38f47185585f82  libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/char16_t/80624.cc
! 8c4856d7f3cffe91c69dc9d71621c912  libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/wchar_t/1057.cc
! b9bb61e3a51a4377752139e4f68ef20b  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/char/1.cc
! 457dc36583430e7548b5b9407581f604  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/char/1057.cc
! 0d59e4d682867ed92e15d02f59489e67  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/wchar_t/1.cc
! fb7762170c90d97724eeadba201fc277  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/wchar_t/1057.cc
! 1bc131776304235d68b863621235e77b  libstdc++-v3/testsuite/27_io/basic_streambuf/sync/char/1057.cc
! 245893ef5f620985541ff7914ac715cf  libstdc++-v3/testsuite/27_io/basic_streambuf/sync/wchar_t/1057.cc
! 00384bcbc250ee15d78669929b3d6d12  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/2020.cc
! a667c40fe62b04dbb3d7f7e8fcf7eb90  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/81381.cc
! c205990c4d17459556045bf6f1dace0f  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/1.cc
! 2e408cd8dc7c62fd3f2fc914358aa814  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/default.cc
! a0e3ccb1e22aee97548ba14814051602  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/1.cc
! fa41aac48026dd49d9a11f6a4e8d9c64  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc
! f61327470544a3fb1dc00ef2810005f7  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/char/1.cc
! 1ec40c6bd29c2a02c459a60ba7b867ff  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/char/9322.cc
! 3d309627ae57d080a1ef6950284b2238  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/wchar_t/1.cc
! b880289a4d6fdd28ee923cae7a147b38  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/wchar_t/9322.cc
! 0ff184a9a9bdb567725ef598d58d3a66  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/char/1.cc
! d6e0d01ffb67befcc09236ad153b0631  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/char/21955.cc
! 387307c11ddb282e4dd7754804f57f9d  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/wchar_t/1.cc
! 238afd93acad9ab670c4233e3cbdaeea  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/1.cc
! 4cde754b91371ce89ada568373c4600f  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/2.cc
! 26d2a1b81afd37b5b35bdee722fe1a87  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/26250.cc
! 5aab1a29fdfb4c5f3de2450b21e88e57  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/3599.cc
! 3d1b921b9722d401833826ad2a8e0ac4  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/9988.cc
! 66349b34e9add3b5dd319ba7f59dca4b  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/1.cc
! 4c85d254735b54c4c579c3f0cba3b172  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/2.cc
! ee0714df416080e391e80e088ded1f6c  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/26250.cc
! 9365fb4cd973aeb07bd2a56e3c750d0e  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/3599.cc
! c976fbe2bbd7bc5b0cf24dfba402b7b6  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/9988.cc
! 398789208face3435804da10e8047eec  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/char/1.cc
! 432e948ae31cfa0b218bbbe5f250150c  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/char/2.cc
! 5525400429032214a7db2e436d2ed1dc  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/wchar_t/1.cc
! a57664d67f22db82364c708766012dc7  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/wchar_t/2.cc
! 5a90c473a1e99ff47808203ca7cd650c  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/base_classes.cc
! 33e4af768810ff0ef90f8151c2aacfeb  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/2.cc
! 032e685c2ca803dac76880f293419135  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/4.cc
! 22084d394de524fbf4be7a860e571b15  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/typedefs.cc
! 539c92371790c2e7ad6ea3558e613cf6  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/char/1.cc
! 0f27b153370265946b4d9a65ac5df0d5  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/char/9825.cc
! 99a65db9fe60a3b36f831f2507de83b6  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/1.cc
! 7841972ec9850562ecea5277ef145c69  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/9825.cc
! 9e0e30bef474f628a521bdeab336764a  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/1.cc
! 967948273c5984583099b28dea39a36e  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/10975.cc
! 5fb704768a85551d5cf16620ea0d8422  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/16956.cc
! 2a6bb78b1b0a61cd78435e582b65e2f1  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/2.cc
! 995f6338262d0c17d2d4a2fd9291aff8  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/1.cc
! 18ca3fd2fbb196a7cc4ce6e77ae0ef15  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/10975.cc
! 33ae57c1baa87f2be8bb784b3416d2fc  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/16956.cc
! 7dc049182ff783b2257eb373bfb346d7  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/2.cc
! ffcc3503854a9610a0c29ecaa35b5be6  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/1.cc
! 759c37fa996bd08038ddcdc79510b119  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/2.cc
! 8a23342def808f50834f79283c4f0f63  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/29354.cc
! e542ddbb93d7cc45bc97403c32eabaf4  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/3.cc
! 02981d0cbcb08320475a8668ac60dd0f  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/1.cc
! c058bc493f7e8bda57ddb890fb33d5bc  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/2.cc
! 319abe7bdbdafc13ecb2518c69da78de  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/29354.cc
! b08001647e2b26a3c97dcd106426cb39  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/3.cc
! 6acacbc5be6b6576667e5a0dffb8896c  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/1.cc
! 3d57a84135672195f30080337a6eb643  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/2.cc
! 986828ae2b2d2972d024d9cc6b0e117d  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/3.cc
! 6441cd17dd2381076ee20ef861a4c91b  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/4.cc
! 94e63172d2fb0968c9535a76546cc1ba  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/1.cc
! 7b67a3f3141a6be3137845a10a1028ad  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/2.cc
! c8bcf1e86373e61319af00ca8925c5b9  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/3.cc
! b4ba9f68c3600873882b690f05a8d464  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/4.cc
! e2d3e17dbdd58c708b1ad7fdf7bdf244  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetc/char/1.cc
! 46cad0a43be415b8783ebfc7f5f5fa12  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetc/wchar_t/1.cc
! ee807f80edb951c1fb1d8c441439857d  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetn/char/1.cc
! c28acf156c93df16c2ef5b7740c9d6c3  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetn/wchar_t/1.cc
! 2d022a9f474b34aebdda3d0dc1fc6554  libstdc++-v3/testsuite/27_io/basic_stringbuf/snextc/char/1.cc
! 7035d2a09db04e601f9064df141dddd1  libstdc++-v3/testsuite/27_io/basic_stringbuf/snextc/wchar_t/1.cc
! 3a09a59bb329c5e71cb1531b05e3ec64  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/char/1.cc
! 6836971e013c355c710b4041c29c4dbf  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/char/9425.cc
! 7951dc7ccc723b737026fb02d4492b9f  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/1.cc
! 683ca3fd9f0aa7adb63b134ced696089  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/9425.cc
! 3ed9e9d708cb4d9972b8edba913d59fe  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/1.cc
! 7e311b25a35d88126c182e6dda4990c1  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/1057.cc
! c02e13cef552c44f78c6c0b58ace04d0  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/9404-1.cc
! 3e9498ec2abeb40755bc22e4540310ad  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/1.cc
! ddf7788525baece656ef3874bfd85880  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/1057.cc
! 68c1de932992398e45f0e9be15facf28  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/9404-1.cc
! dc6476a1d78071f04a2f0e2a240f0c22  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/1.cc
! 886e467be9e5f7d72c007f52a5a546e7  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/1057.cc
! 4b8b878e29b07370d95b1bb1672033fa  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/9404-2.cc
! eb09977d543e7200d50d159069e16ad8  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/1.cc
! 73f63db9b36e1ccd24b0302646f337fb  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/1057.cc
! 40e5de909b324ff43e2efeb004cbe27c  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/9404-2.cc
! ab831ef16e0b262903ea3a4c4dc74874  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/1.cc
! 4f3f9d0677ab4a2ae832b91c297c0821  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/2.cc
! 2651df87ee68b221fd9d23fae21ce5f9  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3.cc
! 3c730219c3cd0b5db015dfac9c84825b  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3955.cc
! 35895272ae16885adf3faa9670b0afda  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/1.cc
! b2726dfc4e3e1ab40bb43e743af69a1e  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/2.cc
! 386a43854a2efd455713d2515bd0c04a  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/3.cc
! 1b8cfd936035e430aa8429557df71bd8  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/3955.cc
! 246116f441d791349cbfb4b28e925b1e  libstdc++-v3/testsuite/27_io/basic_stringbuf/sungetc/char/1.cc
! 63a556f03fb19f83284bbe45ba388ec4  libstdc++-v3/testsuite/27_io/basic_stringbuf/sungetc/wchar_t/1.cc
! 1ce9bb675d25894559542856be0bb7d1  libstdc++-v3/testsuite/27_io/basic_stringbuf/sync/char/1057.cc
! fcd8510b73114c2ff9c81671d3edd465  libstdc++-v3/testsuite/27_io/basic_stringbuf/sync/wchar_t/1057.cc
! c60250b84c187f718aeb9aeddf1409dc  libstdc++-v3/testsuite/27_io/basic_stringstream/assign/1.cc
! 147cf7aeb907f0ae9656593ab05baf7d  libstdc++-v3/testsuite/27_io/basic_stringstream/assign/81338.cc
! 9286a2f8f456ac2930631beb5a9dd192  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/2020.cc
! 2662b49cdd2db5aac24d105c1e147e22  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/default.cc
! 636348351056536471bf401175c8f32f  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/move.cc
! 8bbae4a6f33c4e3e913c5120933db33e  libstdc++-v3/testsuite/27_io/basic_stringstream/rdbuf/char/2832.cc
! 631b2a321463b1ba5a7592c46dd842c0  libstdc++-v3/testsuite/27_io/basic_stringstream/rdbuf/wchar_t/2832.cc
! 2471455db086ccbb32ca9e15787a8f0d  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/base_classes.cc
! 380d618126a25e75a1e562eb96b320cf  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/explicit_instantiation.cc
! cc1cfcd143697548762d19edec826048  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/typedefs.cc
! 0c37ca20ff9486a82080206e719bae99  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/1.cc
! 93116a531b246813a6695ef658a99e17  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/2.cc
! c24efb9a153b3ea5fe6f98fc971b5b0f  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/3.cc
! 2f9505b4e11aba436341b1212c84e2b0  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/4.cc
! 4844087bcb327ffd6302c31bf777a58d  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/1.cc
! 3bf8c5afe1348fab63ef09a80889ada8  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/2.cc
! ecc80f0819ee86597c254252bfbe9e71  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/3.cc
! 7aab3430b4bb94563e0857f2267208af  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/4.cc
! 5323004db0cd3146a8ea46db43f937fe  libstdc++-v3/testsuite/27_io/filesystem/directory_entry/86597.cc
! 2f4f627c30ca31c683884ab4d6f3af6f  libstdc++-v3/testsuite/27_io/filesystem/directory_entry/lwg3171.cc
! 99f46887e22f5cf1f1f237b70044664f  libstdc++-v3/testsuite/27_io/filesystem/file_status/1.cc
! 5d4a3b5fc964462389b617f91fd63062  libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/cons.cc
! 3670ca6e162c38d4af11b9404bc9d02a  libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/copy.cc
! 001c00b3297a4ebc738a308a7aa64074  libstdc++-v3/testsuite/27_io/filesystem/iterators/91067.cc
! eb695e30955143bd59104f6d26f2a969  libstdc++-v3/testsuite/27_io/filesystem/iterators/caching.cc
! 84357c450e337710976a0b371a1f9ee0  libstdc++-v3/testsuite/27_io/filesystem/iterators/directory_iterator.cc
! 28a2bf942db858ae036ed958d73b7aba  libstdc++-v3/testsuite/27_io/filesystem/iterators/pop.cc
! 594b2f3e46615f78b2644614529411a3  libstdc++-v3/testsuite/27_io/filesystem/iterators/recursion_pending.cc
! 3008ff208d0a424b496175967a8d2494  libstdc++-v3/testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc
! ab0445ccb0de0781a9dc50a102adae26  libstdc++-v3/testsuite/27_io/filesystem/operations/absolute.cc
! 842987769340150e851d44940e51b52c  libstdc++-v3/testsuite/27_io/filesystem/operations/all.cc
! f48109fd33eb762a9b093a141904d06f  libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc
! fd49e9c9fa64e292f8428902b457beb8  libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
! 2dccc19d850c045d9f75edacc41d15f3  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc
! 9373c8ecad4cb389edef9a0ca2641510  libstdc++-v3/testsuite/27_io/filesystem/operations/create_directories.cc
! c41d229e530d033657d5d940f3cd9b08  libstdc++-v3/testsuite/27_io/filesystem/operations/create_directory.cc
! 47a77625d7c91519009042fe5f6d664f  libstdc++-v3/testsuite/27_io/filesystem/operations/create_symlink.cc
! 0b2fa3fe00b1b17b50e4fb51ed027a70  libstdc++-v3/testsuite/27_io/filesystem/operations/current_path.cc
! d2e381929539a0db3be25bf6d10c5f0f  libstdc++-v3/testsuite/27_io/filesystem/operations/equivalent.cc
! deed743ffb610b929c1ece297b9b3a54  libstdc++-v3/testsuite/27_io/filesystem/operations/exists.cc
! 27c0520a57acab3339000e4a5c852437  libstdc++-v3/testsuite/27_io/filesystem/operations/file_size.cc
! 9aefaa2510b6876a45f3efa9c688f3c0  libstdc++-v3/testsuite/27_io/filesystem/operations/is_empty.cc
! 1d8d442cea71e70c3f6179dc2de14b50  libstdc++-v3/testsuite/27_io/filesystem/operations/last_write_time.cc
! e83c53f3246ff01d3e64ea80fa59282f  libstdc++-v3/testsuite/27_io/filesystem/operations/permissions.cc
! 310d4a7344e3af1e1856f77d5d4c408e  libstdc++-v3/testsuite/27_io/filesystem/operations/proximate.cc
! aca9afc7b33749cc0e3c2f1427f3e7ec  libstdc++-v3/testsuite/27_io/filesystem/operations/read_symlink.cc
! 640135655cfe0c5f6b11d8d200016013  libstdc++-v3/testsuite/27_io/filesystem/operations/relative.cc
! 18e482bbd13db5e8f988957a0da3540d  libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
! 6ba780610ebed6b68cc30f3966f7dd2d  libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
  238203fc0b253cbcec3b6d77a9955ad5  libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc
! 356709d7f3d195a3b4aaa6401984d704  libstdc++-v3/testsuite/27_io/filesystem/operations/resize_file.cc
! f0758dcdc1238f2c8b5ef99a8e011e93  libstdc++-v3/testsuite/27_io/filesystem/operations/space.cc
! c7eb17bf0303e44a60c43c4bb251efc9  libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
! 492ba7247e6321e6da9163540c9b9a04  libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc
! 7d5aa8bd7ba7accfa9ff4144cd402de4  libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc
! a03eed977cf4ae9c04cecde7c11529bb  libstdc++-v3/testsuite/27_io/filesystem/operations/weakly_canonical.cc
! 6fb4260b01b570a6ba3aa218acb876bf  libstdc++-v3/testsuite/27_io/filesystem/path/append/path.cc
! 74da2255a2532220b114aac7b9b77455  libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc
! eeff032db1b1e8607861f00f13a58f01  libstdc++-v3/testsuite/27_io/filesystem/path/assign/assign.cc
! 4e8ef379fa04d0b44aeaa07a5b96a99f  libstdc++-v3/testsuite/27_io/filesystem/path/assign/copy.cc
! 06d4b5e7ff5100b709bef580109d73d2  libstdc++-v3/testsuite/27_io/filesystem/path/compare/compare.cc
! 4cc3560c368bd99f558a70042412f3dd  libstdc++-v3/testsuite/27_io/filesystem/path/compare/lwg2936.cc
! 2c7a9f5fbe8f9fbb3b0add64f54e882c  libstdc++-v3/testsuite/27_io/filesystem/path/compare/path.cc
! 4f80afc7a22647abb74e1d08b1781d7f  libstdc++-v3/testsuite/27_io/filesystem/path/compare/strings.cc
! 625ee5a86d2c05234c6b510874c9e010  libstdc++-v3/testsuite/27_io/filesystem/path/concat/92853.cc
! d86c948f1af72fc168b5fb5d57cde80d  libstdc++-v3/testsuite/27_io/filesystem/path/concat/94063.cc
! 4148374a870684ed634f47e7e4dce0aa  libstdc++-v3/testsuite/27_io/filesystem/path/concat/path.cc
! 482163fe2cb1610ad9eb43f76ec6dd9e  libstdc++-v3/testsuite/27_io/filesystem/path/concat/strings.cc
! 1259ce6c54f852c22cca02b1f1ea0981  libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc
! 3b1e73b855d52d5f96f51a490863a27e  libstdc++-v3/testsuite/27_io/filesystem/path/construct/90281.cc
! 3f24796befe8e068bda5f4634eb57e36  libstdc++-v3/testsuite/27_io/filesystem/path/construct/90634.cc
! 28445def079143664097db227235fe8b  libstdc++-v3/testsuite/27_io/filesystem/path/construct/copy.cc
! bb08460c448fbf7084c44c266f0bf754  libstdc++-v3/testsuite/27_io/filesystem/path/construct/default.cc
! 627a6b55c69745e497c030efdc1b66c1  libstdc++-v3/testsuite/27_io/filesystem/path/construct/format.cc
! 3b0df340f539c897d7df6f4e54e835ef  libstdc++-v3/testsuite/27_io/filesystem/path/construct/locale.cc
! db81a7bc793930f8c19936f6031b9f0b  libstdc++-v3/testsuite/27_io/filesystem/path/construct/range.cc
! ee9fc3b0fa54afbb5415ca7e90198da6  libstdc++-v3/testsuite/27_io/filesystem/path/construct/string_view.cc
! 07607f7a98129b09550d429fc3fe5620  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/extension.cc
! a8fc64e04747e3d45a0f94411277558f  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/filename.cc
! 33ce9ae71210537421b7e5b11692648f  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/parent_path.cc
! 38aea9457bba5a7930ff3f913d40d178  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/relative_path.cc
! 6537385a164b631b913552687fdd70a3  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_directory.cc
! 66fe6d6712ebfc713996ea68ffb12f6f  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_name.cc
! fbbe8c71a4c58376a8b3db2493430707  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_path.cc
! deb1a4e63aa0b600bc83f4e86731fe9d  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/stem.cc
! dfb31afa9d518f96c15527f0a3c05532  libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc
! e6cc17106c4d9810978c63fb968bd7ba  libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path.cc
! 4d332d3a02938bc7699b8e6c535ac731  libstdc++-v3/testsuite/27_io/filesystem/path/generation/normal.cc
! 00a667108142ab8d931350f1780ade4f  libstdc++-v3/testsuite/27_io/filesystem/path/generation/normal2.cc
! 21c310ca73b5b134f54dcfaa7cb3b570  libstdc++-v3/testsuite/27_io/filesystem/path/generation/proximate.cc
! e42462604c80042a0a2fad005d5d4bd3  libstdc++-v3/testsuite/27_io/filesystem/path/generation/relative.cc
! 748d8a19bd32384950be5fd26d65718a  libstdc++-v3/testsuite/27_io/filesystem/path/generic/94242.cc
! a3cba4cc1450ee44c042e270cc629ffe  libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc
! c8e4f52eac5d41a42b4f56f2d0853e43  libstdc++-v3/testsuite/27_io/filesystem/path/generic/utf.cc
! 9d20a466d3e0c383e778b45988683c10  libstdc++-v3/testsuite/27_io/filesystem/path/generic/wchar_t.cc
! d2d16286a59c88907725a7a5586ba115  libstdc++-v3/testsuite/27_io/filesystem/path/io/dr2989.cc
! 96c943c5315e5fa52ef9b77f52833769  libstdc++-v3/testsuite/27_io/filesystem/path/itr/components.cc
! a2ef2778cddd83777e6812ad75196b82  libstdc++-v3/testsuite/27_io/filesystem/path/itr/traversal.cc
! 60266d3cbf0497eccb823b8c2c626706  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/clear.cc
! 6ef39af872da3b79dded58609234c149  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/make_preferred.cc
! 7aa066cb3d7cf57ca07b924ccdd645fa  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/remove_filename.cc
! a795e3b236181c54583733a40836d709  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/replace_extension.cc
! d93455f484e2a32091256b5842c70ee1  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/replace_filename.cc
! 89cf9565f3c92997005db1e7c10c301b  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/swap.cc
! 596cd79aa6b2c4b9e306661e6780c845  libstdc++-v3/testsuite/27_io/filesystem/path/native/alloc.cc
! 4e858b44f2afcbf5d7b5278c4571d0e0  libstdc++-v3/testsuite/27_io/filesystem/path/native/string-char8_t.cc
! 87b11e76c2535a1a13fd1061f1ef1290  libstdc++-v3/testsuite/27_io/filesystem/path/native/string.cc
! 99f662315bdbc78121ae1b279c4d91f2  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/append.cc
! b0a40572e881c0e78d0b1bc0c6ebaa1a  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/cmp.cc
! 6cf6547544a85019196d442429cf83a4  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/cmp_c++20.cc
! 4a8fb7736dabd752f5888371ab69c99a  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/hash_value.cc
! a2452c12c13e54d1e8f231c884634f09  libstdc++-v3/testsuite/27_io/filesystem/path/query/empty.cc
! cfeaf680f7e064aca1b1c3f723f9b8d7  libstdc++-v3/testsuite/27_io/filesystem/path/query/empty_neg.cc
! 785d071d978b0d65613de50eddb2c78e  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_extension.cc
! 33fede771c26b777fa94f302c504f131  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_filename.cc
! 1ecef62dc5d70fbc7ddb8193b17f0781  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_parent_path.cc
! 7888a2a49baffb356e0e8bc1c7ac37d9  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_relative_path.cc
! 0ebe23f99255c2da213ea3772d419e98  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_root_directory.cc
! 20bd4c17db4f5e459ebffabdcdc99bea  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_root_name.cc
! 9724c848c91518e3c9af09bc340e1b55  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_root_path.cc
! 252c47de82ed413ec4d3ec58269b7262  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_stem.cc
! 9689b4c5aed3be86c40f6855da1eba56  libstdc++-v3/testsuite/27_io/filesystem/path/query/is_absolute.cc
! a9e6f6aade6c595d08978508d4b93604  libstdc++-v3/testsuite/27_io/filesystem/path/query/is_relative.cc
! 024f634c2a955a63c06b4ef2e3b4f2f0  libstdc++-v3/testsuite/27_io/fpos/11450.cc
! 8494ef24cfbba809aa05e84cc6dc0c89  libstdc++-v3/testsuite/27_io/fpos/14252.cc
! 5bdb594558780c10880d4b65c81c5c7f  libstdc++-v3/testsuite/27_io/fpos/14320-1.cc
! 4ad9d73fc690fb3781fd7e9cc0abc3f8  libstdc++-v3/testsuite/27_io/fpos/14320-2.cc
! fe2cecfac2cb0c3d9a766ec2ecb910f1  libstdc++-v3/testsuite/27_io/fpos/14320-3.cc
! 090ad64f36edf0011b9b38e8fb782a73  libstdc++-v3/testsuite/27_io/fpos/14320-4.cc
! 239535d35abf6b08764ac93d6bf350db  libstdc++-v3/testsuite/27_io/fpos/14320-5.cc
! 0f31ed708ca9e6dee29ca638370b754d  libstdc++-v3/testsuite/27_io/fpos/14775.cc
! 99f9d99afa55f88260aa19062328331b  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/1.cc
! 9766d5810c9b412d9704cf20b083abd4  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/12065.cc
! bf0030bee9fa384114174f02316f7251  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/2.cc
! f931f317dd36460c2934e803e4c87093  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/3.cc
! 2b4c11600a16f60fa1b73c697233312d  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/4_neg.cc
! 840a16d854a58e72cb6283c29784bb2f  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/5.cc
! b85aa437faa444e58287a3b4d5c227a3  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/6.cc
! ba41cd68da7ab73162ca39961bf5ff1e  libstdc++-v3/testsuite/27_io/fpos/requirements/explicit_instantiation.cc
! 684d854feb8298ecb621a1274620e82b  libstdc++-v3/testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc
! 9950e3911a1a8cc4432012b57030f74c  libstdc++-v3/testsuite/27_io/headers/cinttypes/types_std_c++0x.cc
! 76c44e7e8085dc4a1aae171759bdb454  libstdc++-v3/testsuite/27_io/headers/cstdio/functions_neg.cc
! 0381b98f45824511de66d2d9cc42c627  libstdc++-v3/testsuite/27_io/headers/cstdio/functions_std.cc
! 5f63e1f8cc5fc3c521eead4c3185dc91  libstdc++-v3/testsuite/27_io/headers/cstdio/macros.cc
! c57333e4315491d4f74658f83211b2eb  libstdc++-v3/testsuite/27_io/headers/cstdio/types_std.cc
! c8247492a1f44d0ede8d20912540b57a  libstdc++-v3/testsuite/27_io/headers/fstream/synopsis.cc
! 916c3a4bf787e5c984e6b5842cad44fc  libstdc++-v3/testsuite/27_io/headers/fstream/types_std.cc
! 5d8fd1894441223cab065407e4e77f9c  libstdc++-v3/testsuite/27_io/headers/iomanip/synopsis.cc
! 669391d74cb971662c930220359503c1  libstdc++-v3/testsuite/27_io/headers/ios/synopsis.cc
! 732a6c70d4d355145f287c2f40347fb3  libstdc++-v3/testsuite/27_io/headers/ios/types_std.cc
! aa3b92878f44c6e4991075470a2c8657  libstdc++-v3/testsuite/27_io/headers/iostream/synopsis.cc
! a9dcfe4ec9a37d1bfd1842b22d80a194  libstdc++-v3/testsuite/27_io/headers/iostream/types_std.cc
! ad771fe1576ff6f86c851d1f89cead0e  libstdc++-v3/testsuite/27_io/headers/istream/synopsis.cc
! 19b2d90e319e07379854e79209929b92  libstdc++-v3/testsuite/27_io/headers/istream/types_std.cc
! 5c8a9e884a2847e16f0a71fa7bc08d6a  libstdc++-v3/testsuite/27_io/headers/ostream/synopsis.cc
! 1bbf5ee2d8566f33468cceb63c0a8baf  libstdc++-v3/testsuite/27_io/headers/ostream/types_std.cc
! 289c336126cd70954d6e9506938c447c  libstdc++-v3/testsuite/27_io/headers/sstream/synopsis.cc
! 7edf0f5157efa591fdd0ecaa8a084bea  libstdc++-v3/testsuite/27_io/headers/sstream/types_std.cc
! a200a35e07b1d73b6ef33fb95f756156  libstdc++-v3/testsuite/27_io/headers/streambuf/synopsis.cc
! f315c80f8e214d55afff4c00440c5610  libstdc++-v3/testsuite/27_io/headers/streambuf/types_std.cc
! 00a5c96e2be730f99eea27c6a4e886d6  libstdc++-v3/testsuite/27_io/ios_base/callbacks/1.cc
! 07f32c2e6096a9fb7734fe40b5114b2a  libstdc++-v3/testsuite/27_io/ios_base/cons/assign_neg.cc
! 995a2b24e2bf3484c60fc45745e9d3ed  libstdc++-v3/testsuite/27_io/ios_base/cons/copy_neg.cc
! a3113479cefc43bf8fcfb777a1afde9d  libstdc++-v3/testsuite/27_io/ios_base/failure/cons_virtual_derivation.cc
! 26e6b43bcae9191045e454f173ba7ee6  libstdc++-v3/testsuite/27_io/ios_base/failure/cxx11.cc
! 6d2118f9611f09f35b5e88bd552dffd9  libstdc++-v3/testsuite/27_io/ios_base/failure/dual_abi.cc
! a35c9a7bc005a66c5fe9060adeeffb34  libstdc++-v3/testsuite/27_io/ios_base/failure/error_code.cc
! bc5c2cac1cbcf383984274d877b443ef  libstdc++-v3/testsuite/27_io/ios_base/failure/what-1.cc
! 88f19642a5376c3436a95d8ba7a8967b  libstdc++-v3/testsuite/27_io/ios_base/failure/what-2.cc
! bae5e70b9888487bf1271fee85fcecb4  libstdc++-v3/testsuite/27_io/ios_base/failure/what-3.cc
! df3d68efa2c8b0f605cf6cd99590d88e  libstdc++-v3/testsuite/27_io/ios_base/failure/what-big.cc
! b73766893ec9c939809b4e0dd0179601  libstdc++-v3/testsuite/27_io/ios_base/state/1.cc
! 4ca905274eba70fa053c8e66a326c2e5  libstdc++-v3/testsuite/27_io/ios_base/storage/1.cc
! 8eb3c2bdc491a7a9fd9c97c0abe786f6  libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
! 0bb85c0cc59b19395d48b8e84774d25f  libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc
! 0a3bd7dcf1ec86204ee32089d2a14470  libstdc++-v3/testsuite/27_io/ios_base/storage/3.cc
! ecfebd2d440ff653f61b52e4d6cc0839  libstdc++-v3/testsuite/27_io/ios_base/storage/68197.cc
! 8a8a9ce8dd6ba7ca9285dc22110c370b  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/1.cc
! d180af0747473ebba009b2432c1c65fc  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/16959.cc
! 5def2a99a2f5352caa39138f964a2fb1  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/2.cc
! 0dca662bb31b59aa72a51e2d0fb7aa64  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/9523.cc
! 3e685550af22b065ba6f41207fa1d237  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/bitmask_operators.cc
! 626cf08d4f46f2f6e93475216e08f525  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
! a33301a1467be3886a93c9c0715c7a10  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/constexpr_operators.cc
! ccb535979548c6186675370136e83f03  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/bitmask_operators.cc
! 5b7f483b3cecbb56384cc85a77f988d5  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
! 35d63660db35c8709c306d3450542bfe  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/constexpr_operators.cc
! f113d579b1ad1b29d7627142972d5b01  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/bitmask_operators.cc
! fffc65aa2488b5400f6b02d1356d5bef  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
! e54daf89caa93caa1b155dd94d42e5f4  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/constexpr_operators.cc
! 01b9f5c467601689aa31564a915c50af  libstdc++-v3/testsuite/27_io/ios_base/types/seekdir/case_label.cc
! 27a6022cb000788e7bb47574b9e54ea1  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/char/1.cc
! 7d387971bc95dbd6ab830c9a2b19ff8f  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/char/2.cc
! bb66416c7c51b145a8e4b0d1cb0331a9  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/wchar_t/1.cc
! 856170e30d3bd8dfc00cbd1ab5ad7878  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/wchar_t/2.cc
! 4cd8529f8730034c6195a5fdfbd78509  libstdc++-v3/testsuite/27_io/manipulators/basefield/char/1.cc
! aae545c760e4bb8e1f9941457e077bfc  libstdc++-v3/testsuite/27_io/manipulators/basefield/wchar_t/1.cc
! 21b23ea5d75f6eb81ee73147eaba851b  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/char/1.cc
! 2c7dbaa0fcbff28cd2037e746cb212da  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/char/51288.cc
! 4ac1bd57701401996bf35b6625ac6129  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/wchar_t/1.cc
! 09b94d5f4a4dbe11b6ece6f41f3a6856  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/wchar_t/51288.cc
! 86cc665e2644816e28fe3171e10940fd  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/1.cc
! 68479e6dfef261e12bcd23601e1830ec  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/2.cc
! 5ab24a3760bdf08bf07af2c168944751  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc
! c4c84dfdd8be73bd050ee58ff21e2be9  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/2.cc
! 5af78349d454c742bacede5fd51f0c68  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/char/1.cc
! 84800989cd018dc1d93c1b4acb88ec1d  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/char/51288.cc
! 3be90de7ba70afb731144d1b97b79ea3  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/wchar_t/1.cc
! dbf058c3c2bbca9ccf6d6119354b52df  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/wchar_t/51288.cc
! 6e069317db8b4f1dd2784b8818b33923  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/char/1.cc
! 4a86aa4d7b6aa045679bf48ef0a33a56  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/char/2.cc
! 3b35df9cb20120c04f4ba72517a28dc3  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/wchar_t/1.cc
! 982a6c602c8974de67b7f3440f7bc2b2  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/wchar_t/2.cc
! e4d1d6a37eef4edc9f6c029d0dfb1c13  libstdc++-v3/testsuite/27_io/manipulators/standard/char/1.cc
! 61f349de50224839b50a3c9424f73cf3  libstdc++-v3/testsuite/27_io/manipulators/standard/char/2.cc
! 71f6df701e7de9af9c195da4109feb69  libstdc++-v3/testsuite/27_io/manipulators/standard/char/60270.cc
! 2729c88ff7ad86cf55d6292a571d200d  libstdc++-v3/testsuite/27_io/manipulators/standard/char/dr2344.cc
! b48aab2db6c5d2df8e9175400ae144d0  libstdc++-v3/testsuite/27_io/manipulators/standard/char/quoted.cc
! f5d0e45d9618ea7fcf6cc51bfaf3441c  libstdc++-v3/testsuite/27_io/manipulators/standard/char/quoted_sv.cc
! 70c7e8a5b4a5cce3f4971792151f9c2b  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/1.cc
! 09e72388d8e1379f9f88e36a4b6188b7  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/2.cc
! 4611a7b99731e1c1db92cc9ee3e85a26  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/dr2344.cc
! 3af2e6b2ba9c40dd3ddc5652531674e7  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/quoted.cc
! d40dde8ef71e1039a974d41f387e6267  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/quoted_sv.cc
! de9d46b64eb565b4261eb4f3eafc19aa  libstdc++-v3/testsuite/27_io/objects/char/1.cc
! 0aaf6ab3208a4031ed9b18e8dd111082  libstdc++-v3/testsuite/27_io/objects/char/10.cc
! 76cc9d2d8bb414d2c14eb59c45da33d9  libstdc++-v3/testsuite/27_io/objects/char/12048-1.cc
! a5563655810723b7d5a5f83405f4c8f9  libstdc++-v3/testsuite/27_io/objects/char/12048-2.cc
! 9452be8b82913ce249ae1711a422eeb0  libstdc++-v3/testsuite/27_io/objects/char/12048-3.cc
! f3144f10a044e1475ae2972554c8e949  libstdc++-v3/testsuite/27_io/objects/char/12048-4.cc
! 8badf289257121ed0ad4a5640692b94e  libstdc++-v3/testsuite/27_io/objects/char/12048-5.cc
! da140c73788c1593006f764bbf1e6194  libstdc++-v3/testsuite/27_io/objects/char/2.cc
! 47c9285a686c890f61d31a39974da020  libstdc++-v3/testsuite/27_io/objects/char/2523-1_xin.cc
  8c1b578bb2722053c950f2cf943baf83  libstdc++-v3/testsuite/27_io/objects/char/2523-1_xin.in
! e5297ed43d800a38644922812f416f4b  libstdc++-v3/testsuite/27_io/objects/char/2523-2_xin.cc
  daa7a5fffcba8b5ec5ca1a8de7734416  libstdc++-v3/testsuite/27_io/objects/char/2523-2_xin.in
! f763bfe6cedefa357e1d8df1c9dc585e  libstdc++-v3/testsuite/27_io/objects/char/3045.cc
! 5505a17bace7778f3577ec5b9dc1a501  libstdc++-v3/testsuite/27_io/objects/char/3647.cc
! 8c0342cc8a57ed2211e65f6aee50f075  libstdc++-v3/testsuite/27_io/objects/char/3_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/char/3_xin.in
! 90e5c490bc19566283d323d997c3be73  libstdc++-v3/testsuite/27_io/objects/char/41037.cc
! a845b6821c22686eca20a66478fd8a15  libstdc++-v3/testsuite/27_io/objects/char/4_xin.cc
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/testsuite/27_io/objects/char/4_xin.in
! 71b6e2b0dd7db92fad52e4a23e097c9d  libstdc++-v3/testsuite/27_io/objects/char/5.cc
! aafdb8d6b9b5aa7752e4bf924ff52c95  libstdc++-v3/testsuite/27_io/objects/char/5268.cc
! 2f129094142b3d5deaa4a37e07476d96  libstdc++-v3/testsuite/27_io/objects/char/5280_xin.cc
  81dc9bdb52d04dc20036dbd8313ed055  libstdc++-v3/testsuite/27_io/objects/char/5280_xin.in
! 98f48eca96759bbe595e17911451da79  libstdc++-v3/testsuite/27_io/objects/char/6.cc
! 730ca0873aef275546f02fa8d80b23cf  libstdc++-v3/testsuite/27_io/objects/char/6548_xin.cc
  d8e8fca2dc0f896fd7cb4cb0031ba249  libstdc++-v3/testsuite/27_io/objects/char/6548_xin.in
! 9d040feba1c45978a857b7d99ffce853  libstdc++-v3/testsuite/27_io/objects/char/6648-1_xin.cc
  069d0b68d99275bb4412e90bd9d5c966  libstdc++-v3/testsuite/27_io/objects/char/6648-1_xin.in
! fbcdf9d86fbde1c911a31ebda9a2e4ec  libstdc++-v3/testsuite/27_io/objects/char/6648-2_xin.cc
  6b76e6feddcc145dc3499d8d123d9da7  libstdc++-v3/testsuite/27_io/objects/char/6648-2_xin.in
! 7aa44e876b20900795a138095f96280c  libstdc++-v3/testsuite/27_io/objects/char/7.cc
! c98cb45ffee6028ec62ca069c21f60b1  libstdc++-v3/testsuite/27_io/objects/char/7744_xin.cc
  0bee89b07a248e27c83fc3d5951213c1  libstdc++-v3/testsuite/27_io/objects/char/7744_xin.in
! cee0b2563c8b898e7c57d802d234c087  libstdc++-v3/testsuite/27_io/objects/char/8.cc
! 80e5bcb469ea0ced632934695511fadb  libstdc++-v3/testsuite/27_io/objects/char/9.cc
! 3fc93618068320f1c22ed8bca6bd0c87  libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc
! 084dfb9278be62eab5cb6655515414c9  libstdc++-v3/testsuite/27_io/objects/char/9661-2_xin.cc
  33ab658c3d687d1d73a0e92a596f725e  libstdc++-v3/testsuite/27_io/objects/char/9661-2_xin.in
! 81f1b686270c6a9bab74d7796c5908b4  libstdc++-v3/testsuite/27_io/objects/char/dr455.cc
! 7965aee368aa57f015ae3c87bdae2ebd  libstdc++-v3/testsuite/27_io/objects/wchar_t/1.cc
! 3f7941991f14214b2eda060e6aee5adc  libstdc++-v3/testsuite/27_io/objects/wchar_t/10.cc
! ea56220da21ffca89264c70cf1e9ee2a  libstdc++-v3/testsuite/27_io/objects/wchar_t/11.cc
! db30fbdda5c76aacb1c4dcca61b0f213  libstdc++-v3/testsuite/27_io/objects/wchar_t/12.cc
! dbbc952962effe5d32b323392d04b36c  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-1.cc
! 7ab4235ae86b58434d28de4860dec750  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-2.cc
! ac09b0098c286f7bef0ef44c452ce03e  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-3.cc
! eb20dcb90ef622b68df32de83366be9c  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-4.cc
! 5f14a576c7988a002a0f0f57149660c1  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-5.cc
! 59e63cea4daada51251a03c731b215ee  libstdc++-v3/testsuite/27_io/objects/wchar_t/13.cc
! af08e12a62b0de0553b7c1577d98c224  libstdc++-v3/testsuite/27_io/objects/wchar_t/13582-1_xin.cc
  d577273ff885c3f84dadb8578bb41399  libstdc++-v3/testsuite/27_io/objects/wchar_t/13582-1_xin.in
! 99a337b0f3a6fd6bd309834d23aed38e  libstdc++-v3/testsuite/27_io/objects/wchar_t/2.cc
! bce04b959d28cfdb9fa6108c5312d37c  libstdc++-v3/testsuite/27_io/objects/wchar_t/2523-1_xin.cc
  8c1b578bb2722053c950f2cf943baf83  libstdc++-v3/testsuite/27_io/objects/wchar_t/2523-1_xin.in
! d2c9376d7183f9d81b8dbc27e4254213  libstdc++-v3/testsuite/27_io/objects/wchar_t/2523-2_xin.cc
  daa7a5fffcba8b5ec5ca1a8de7734416  libstdc++-v3/testsuite/27_io/objects/wchar_t/2523-2_xin.in
! ac6e6ed3d8c37b193d6fb23695a2d9e9  libstdc++-v3/testsuite/27_io/objects/wchar_t/3045.cc
! 301e608d5cff3c5914ecc0a2ddf6a18c  libstdc++-v3/testsuite/27_io/objects/wchar_t/3647.cc
! fb4d641045eeffc3df5433496781a24c  libstdc++-v3/testsuite/27_io/objects/wchar_t/3_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/wchar_t/3_xin.in
! 74eb867de02a2bad26f670db03e774ab  libstdc++-v3/testsuite/27_io/objects/wchar_t/41037.cc
! b43a544a645357aa6b83772a3ac4651f  libstdc++-v3/testsuite/27_io/objects/wchar_t/4_xin.cc
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/testsuite/27_io/objects/wchar_t/4_xin.in
! 9c30f6657294be236850e0f1e4937eec  libstdc++-v3/testsuite/27_io/objects/wchar_t/5.cc
! f9e75af51b5232b89a085ec1d503780a  libstdc++-v3/testsuite/27_io/objects/wchar_t/5268.cc
! d0d533a8220babf398bd9e16e62a1604  libstdc++-v3/testsuite/27_io/objects/wchar_t/5280_xin.cc
  e7df7cd2ca07f4f1ab415d457a6e1c13  libstdc++-v3/testsuite/27_io/objects/wchar_t/5280_xin.in
! 3b491eebc11c6d50ce0cfc4bee35ef3e  libstdc++-v3/testsuite/27_io/objects/wchar_t/6.cc
! f2c27738a764acd385b96ff3fc0690eb  libstdc++-v3/testsuite/27_io/objects/wchar_t/6548_xin.cc
  d8e8fca2dc0f896fd7cb4cb0031ba249  libstdc++-v3/testsuite/27_io/objects/wchar_t/6548_xin.in
! 408ae5a05e5f62240581899d28539dbf  libstdc++-v3/testsuite/27_io/objects/wchar_t/6648-1_xin.cc
  069d0b68d99275bb4412e90bd9d5c966  libstdc++-v3/testsuite/27_io/objects/wchar_t/6648-1_xin.in
! 9a64208204a9d7ff105ac1fa65d49b1e  libstdc++-v3/testsuite/27_io/objects/wchar_t/6648-2_xin.cc
  6b76e6feddcc145dc3499d8d123d9da7  libstdc++-v3/testsuite/27_io/objects/wchar_t/6648-2_xin.in
! 0623b2cca5c8b7d9dbde8cab6c04dc07  libstdc++-v3/testsuite/27_io/objects/wchar_t/7.cc
! 51731c0a2e4c8a69b3c26eb1b6bcec70  libstdc++-v3/testsuite/27_io/objects/wchar_t/7744_xin.cc
  0bee89b07a248e27c83fc3d5951213c1  libstdc++-v3/testsuite/27_io/objects/wchar_t/7744_xin.in
! a058da8cc4145634996b1ce88fa36bd4  libstdc++-v3/testsuite/27_io/objects/wchar_t/8.cc
! 58f92a1e5288e485dc43816354c227a6  libstdc++-v3/testsuite/27_io/objects/wchar_t/9520.cc
! f496de128a6588545c8a3d2b013d6c0c  libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-1.cc
! 9847989394cc241b9932d502c91e5d75  libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-2_xin.cc
  33ab658c3d687d1d73a0e92a596f725e  libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-2_xin.in
! 79fa4dca0c49ebfae2959b4c45afd269  libstdc++-v3/testsuite/27_io/objects/wchar_t/9662.cc
! d29bdff185f8951bda8b930047836f57  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.in
! 9543dadaa8c5c965e1994efbee0bd561  libstdc++-v3/testsuite/27_io/objects/wchar_t/dr455.cc
! 9e8ed05ac0eed1fdd3d5f4cf50a2e4b2  libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc
! 9934e7889df5a2c6e651226db2c62e05  libstdc++-v3/testsuite/27_io/rvalue_streams.cc
! 5eb7ac5ff21f03039afe7f27eb4e827d  libstdc++-v3/testsuite/27_io/types/1.cc
! 4b0f90eb6e1e76ad326e05f588f91f72  libstdc++-v3/testsuite/27_io/types/2.cc
! c2c9c49259d7cbc70967aa0def986d47  libstdc++-v3/testsuite/27_io/types/3.cc
! 137fb16f280a82e2ee64a5bd5f0a37a3  libstdc++-v3/testsuite/27_io/types/4.cc
! a7f6c5c6d42fc724e816f0a6f81b0956  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/awk/cstring_01.cc
! 82f8192f4a6fbf3c813810dcf6c04af7  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/empty_range.cc
! 5b4b7e38097a2a17a24d46194b70c631  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_01.cc
! 7798f06f2baae27dd7cccb4e9dd1bc34  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_00_03.cc
! ca26e5ccbbeaab37ecfcc00462922d44  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc
! 96b0f61e9cf66850c48be2d450360191  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_02_03.cc
! 313ceb1f034d04f98a16a56fcb13fe8d  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc
! 44aa196cbe2393c1a9247e66c2f3e737  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/dr2329_neg.cc
! 6cfc2d7e68acfe2e75c13a43b6f5cd05  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/53622.cc
! 52ede5880ec0edb2f7e0753905868a79  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/57173.cc
! 75ee805abf971b33c762280fe2ae2b09  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/58576.cc
! 17f77f21ad4320bdfd35be8a0c91cc38  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/61601.cc
! f9389f151827558d26b406c284927e06  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/68863.cc
! 0b2a5c598233d5f993e5ddfdc4c02fe5  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/anymatcher.cc
! 9e96d81e03c2f56bb1345e294716142a  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/backref.cc
! e6ea9fd24af8e3ede4ae98f458ff013c  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/empty_range.cc
! 0e97ac08738c619128fb9a716bef0ddf  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/emptygroup.cc
! 0b8a10fc4f978b1c4ab422dc1e0aec67  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/hex.cc
! 573f9836cf638941d12a180410303b79  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/quoted_char.cc
! 6e674d9de5eae0d5c87a6f17eb05b369  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/ungreedy.cc
! 121a240adbf9a17186605bf02594f795  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/63199.cc
! 6d2f14fe29b8f205fd7e2bf8e94c470c  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/anymatcher.cc
! 36628be17bf0cb6cfcf58af63427a6c8  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/cjk_match.cc
! 7c15881c61d224e7b7a10948c68385c7  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/hex.cc
! d4e0094f07263fe6638d4d5111ac8099  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_plus.cc
! b442da843e5dc29d780b0e47080f876d  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_questionmark.cc
! edd7a992ad3734ea36534b838cc25208  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_range.cc
! 7ffc9599e0384776c1bf19476f5033f1  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_any.cc
! e2bd7fda5e0bfbf9e4428443108b54b4  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_00_03.cc
! 983995a04e275b5882b415656384c1e7  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_01_03.cc
! 7a18523c815a3106661acaafdb948419  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_02_03.cc
! bbd2683264a70b1d23273be7cb8128cd  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc
! b2c6bdb034ead3eacbcdbf5001c856a6  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/51711.cc
! a7401baeec76a127399e4fbd38a674fa  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/basic_replace.cc
! 9e0edefa83821a1d1bd68b202d2c91ca  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/dr2213.cc
! fb796732338455bc4d447532245201fa  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/pr83601.cc
! 8887bb790253450645181ee0928697de  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc
! e1483cdb6ebefa6a258c135bbf3e4805  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/pr83601.cc
! d43ec665ff2708edd0533d34ebe39924  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/61424.cc
! bf13a438aebdc93496f0b45942930d38  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/61720.cc
! 3d1688ed100748cbdb57e338cdae4ba3  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/basic/string_01.cc
! 8f4f1da175284a2de09434e30f2419b0  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/dr2332_neg.cc
! 8f8ac7d06802b4fa4166d8913abc2338  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc
! 7b3b9fad09f313d373cfe55dc5b3f027  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/flags.cc
! 9cc4271d5c4a71cd165955d89d2bc10f  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/greedy.cc
! e3e1e1ae2b895f50dfd5cbbe78b79e6e  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc
! fb6abbbc7c451636b6ccd343cea0e6cb  libstdc++-v3/testsuite/28_regex/basic_regex/85098.cc
! 8249857c5e3c1c506df6a82e8ba371ec  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc
! cfe999eee9edc9ca5b7d53df6db1cf2a  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring_op.cc
! e77b9f1e8947e7354e29923b19779a2c  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/lwg3296.cc
! 82c1777134b2de145827665904a1574a  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/moveable.cc
! fc3e9186764ea88f008e2e60beaa0438  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/pstring.cc
! a9491622101cccdd01acdf91b875db8c  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/range.cc
! e9410625836aebe5da5dd4b273ae7b1a  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string.cc
! 879fa3dea2dd84b518d672e1ebaf6e5b  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string_op.cc
! dd76c0c22820c516455077bb501cc4c7  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring.cc
! 9cc3caf2c10febd2b9451081109b24ed  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring_op.cc
! 880c3fde6b43e5b321e2c1fab80cb47a  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/lwg3296.cc
! f0015ebf0a5b7e044da918e70a90c4bb  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/pstring.cc
! 2b49a49ba061b6e3f020ebfa44718871  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/range.cc
! 7cb85bd5a385596283c7581061dfde0a  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string.cc
! 60d59276156fe0291aebc1920cc5fe2d  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string_op.cc
! 50397d9b155d39e6306e30b670ed4be7  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/47724.cc
! 1024b583a59042002b7e5ada392db15f  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/83598.cc
! 2a7aedb01cdb27de8106308018717405  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/cstring.cc
! 3cb261d32b41b4e38a190b35661460f8  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/default.cc
! ac886e8fa887234100d9605ab74bd0b6  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/iter.cc
! fea46f1192affa39df14315f5c343d63  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_char.cc
! 990dd6c2636ff72dec14047b82355a04  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_wchar_t.cc
! 05f8d89cfd18da163bdc0982ba18d2d1  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc
! 2d7658577bf6547d98152ec69bb5667a  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/string_range_01_02_03.cc
! dbdd384114ae389b58700d13ea8fa540  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring.cc
! 4b62d20d532a9602155e0f8861f6c266  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_awk.cc
! 9f622c2342ff86d42d5a0c99b78b363b  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_ecma.cc
! a017c77587ba8b0de3dc83db2619528c  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_egrep.cc
! cc955dcac675cc78bd58be0e740e6556  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_grep.cc
! 1eabf72fdb191b41e69033e00583d81a  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/default.cc
! 6922e56a08cff806a60027074cfc33d6  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/range.cc
! 5d7073a5b382a95ca7da33c9544883ac  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/copy_char.cc
! 47c3772ca93b01fa25e7be16778abd38  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/deduction.cc
! 437b3d22f8190e964f4615d211ab5b6f  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/cstring.cc
! 04efa12a03b043487d67d750b563691d  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/string_range_01_02_03.cc
! c9134d00af6a9ce17d264051b8cad3fb  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/move_char.cc
! 9ab99c10e4cec903186d94aa0e794be2  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_char.cc
! 7d9ece324ad6c087e95c8ef439a69080  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_wchar_t.cc
! 8902e9dc5a407aab8a089bf1e7d9cc5f  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/cstring.cc
! dda7d22c8726ca94098cd3710a676f69  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/default.cc
! 414253529f8ccbd60d3d142a379070d2  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/range.cc
! 755f6a071a92f268e0991573dd17fb64  libstdc++-v3/testsuite/28_regex/basic_regex/imbue/string.cc
! 2a9cad8231a9607341b371156980ca0f  libstdc++-v3/testsuite/28_regex/basic_regex/multiple_quantifiers.cc
! 939e9cf55c0da270c0e3611dab393eab  libstdc++-v3/testsuite/28_regex/basic_regex/requirements/constexpr_data.cc
! bd714c810cc46a4c5524b3b7d3b8c1e7  libstdc++-v3/testsuite/28_regex/constants/constexpr.cc
! e0564105edf90d1dc808f662dbf39edb  libstdc++-v3/testsuite/28_regex/constants/error_type.cc
! 7c100ec1cb16ff5b24e1984031957c46  libstdc++-v3/testsuite/28_regex/constants/match_flag_type.cc
! eb7b685daf87855dc85e1cd16a80f757  libstdc++-v3/testsuite/28_regex/constants/syntax_option_type.cc
! 6b2a51230d9593a89793423922c9f588  libstdc++-v3/testsuite/28_regex/headers/regex/std_c++0x_neg.cc
! 64201db7e946e70d656bc26b96de3e40  libstdc++-v3/testsuite/28_regex/init-list.cc
! f67c57f91f0d4bf5e2c3dcdbb8cd49cb  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/64140.cc
! 611bee8d5005380ae0d59e73a28f1eb3  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/string_01.cc
! c9bd7cc2921184f235382f1e0758c268  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/string_position_01.cc
! 17e3589da12243becc2a17e2f0914076  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/char/default.cc
! 4a0ea76de9d68443327f726ccb45564b  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/char/dr2332_neg.cc
! 58b942ef6eff4eb6c424cc0d59fec611  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/wchar_t/default.cc
! 35827e17052dbbf835c310b1b3b35acc  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/typedefs.cc
! d84f7d02d6e43581cb075f8ab675ed9d  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/wchar_t/string_01.cc
! c43dae1d8509f20dfebd256edf5014a3  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/wchar_t/string_02.cc
! bb43b15de0db855c3c1646db1cc0cf9c  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/64303.cc
! 620cafcc14e49596c1ce64b24f93a34b  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/char/string_01.cc
! 2f5652a55aa4898fb7f5ed7bd41dc656  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/char/default.cc
! f64d16c9e8747f521bbd04f70caa6f56  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/char/dr2332_neg.cc
! a3f01b1cbb4b7331e1672085927244d6  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/wchar_t/default.cc
! 9c27b34c9945bc8db206c29304658529  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/typedefs.cc
! 7e8b6408493cf8f3cbb890912f7d84a1  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/wchar_t/string_01.cc
! ba2a49e11551dc5e966cf5d482a9858b  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/wchar_t/wstring_02.cc
! e49695f0ed6768bcb724592bf75d06f5  libstdc++-v3/testsuite/28_regex/match_results/94627.cc
! 67cd819a7fba3d26b69f3055cfca66ea  libstdc++-v3/testsuite/28_regex/match_results/ctors/char/default.cc
! e3e593aa6d1da9a93d7df01eebd16b51  libstdc++-v3/testsuite/28_regex/match_results/ctors/wchar_t/default.cc
! 7ee900dd4c391eaeb6bfb2c9f712e05f  libstdc++-v3/testsuite/28_regex/match_results/format.cc
! 0edd13ec521073b74993a9c1b64e9c9a  libstdc++-v3/testsuite/28_regex/match_results/out_of_range_submatches.cc
! 5f6f10c689e941462f2af1b727fe73e2  libstdc++-v3/testsuite/28_regex/match_results/pmr_typedefs.cc
! 29dbed269b5101e427aeb1b6e71b4cb3  libstdc++-v3/testsuite/28_regex/match_results/swap.cc
! 803937a075b8ea4eb21e3f7d7a8b7334  libstdc++-v3/testsuite/28_regex/match_results/typedefs.cc
! 100ec528b2e888d3a2206d1964853c12  libstdc++-v3/testsuite/28_regex/range_access.cc
! 0965eb6623a19a05762a749898085cbf  libstdc++-v3/testsuite/28_regex/regex_error/base.cc
! a2fc99d6217820e9b284ee7fb62d7f5b  libstdc++-v3/testsuite/28_regex/regex_error/regex_error.cc
! 7f0f5a6ad72024666597496ad9b71356  libstdc++-v3/testsuite/28_regex/regression.cc
! a650572d4fed03b3731a3168f0a19acb  libstdc++-v3/testsuite/28_regex/requirements/typedefs.cc
! 3ffd1e8e5ac9b9f35778375d1eaa71a3  libstdc++-v3/testsuite/28_regex/simple_c++11.cc
! d0ae401f51c5343c775a8b37c76aa626  libstdc++-v3/testsuite/28_regex/sub_match/cast_char.cc
! 9f3f003b87b8612b0e4703a368695089  libstdc++-v3/testsuite/28_regex/sub_match/cast_wchar_t.cc
! 8c7d63af2c55564270b2f2eec88c5cd8  libstdc++-v3/testsuite/28_regex/sub_match/compare.cc
! 4c856f1369e78a0d6f0671c5f19a985d  libstdc++-v3/testsuite/28_regex/sub_match/compare_c++20.cc
! ce09e4c36acb7d72ef515ce2b22bff3b  libstdc++-v3/testsuite/28_regex/sub_match/embedded_zeros_cmp.cc
! 2814efe4d1ffafd851392232e79a7011  libstdc++-v3/testsuite/28_regex/sub_match/length.cc
! dc8a61c3872941cdf5cbfb6a331ba74d  libstdc++-v3/testsuite/28_regex/sub_match/typedefs.cc
! f589f516fa2f4f4c52fb6754fa026cb8  libstdc++-v3/testsuite/28_regex/traits/char/ctor.cc
! d8d12566e6e1db9ce1ac3877c50d30fc  libstdc++-v3/testsuite/28_regex/traits/char/icase.cc
! 9def81499e740c24d652374dcd24c4a0  libstdc++-v3/testsuite/28_regex/traits/char/isctype.cc
! a23a726e98bef24056584a081d463395  libstdc++-v3/testsuite/28_regex/traits/char/length.cc
! f6bb87177710aaedebe3f27d00d80a33  libstdc++-v3/testsuite/28_regex/traits/char/lookup_classname.cc
! e9dd6d2e3f187700427e6b3ca01d1f86  libstdc++-v3/testsuite/28_regex/traits/char/lookup_collatename.cc
! 32b2f69555234db15782a21d2730470b  libstdc++-v3/testsuite/28_regex/traits/char/transform.cc
! 903313549379c66f0a7a0698c3292af8  libstdc++-v3/testsuite/28_regex/traits/char/transform_primary.cc
! 6938a50285bf03419c56835eed7c2935  libstdc++-v3/testsuite/28_regex/traits/char/translate.cc
! 2694dbdb3cb7986ab61f1dc71c069bd4  libstdc++-v3/testsuite/28_regex/traits/char/translate_nocase.cc
! 6d94c36ec4a46b9e0949ffd845654ff3  libstdc++-v3/testsuite/28_regex/traits/char/user_defined.cc
! edb9c1a93fe4890046ad67f77904bad5  libstdc++-v3/testsuite/28_regex/traits/char/value.cc
! 7427a20513271eefdde6b114aa46ffb5  libstdc++-v3/testsuite/28_regex/traits/wchar_t/ctor.cc
! d15f51d0dbd9b3e605d982ec53a3260d  libstdc++-v3/testsuite/28_regex/traits/wchar_t/isctype.cc
! 358cbc0aa5e827ac938f5a58810d0e71  libstdc++-v3/testsuite/28_regex/traits/wchar_t/length.cc
! 84a7a1c9bf6abed265ec6912d1bdb930  libstdc++-v3/testsuite/28_regex/traits/wchar_t/lookup_classname.cc
! 53e9397d7a83d3d44f9796823be6c40a  libstdc++-v3/testsuite/28_regex/traits/wchar_t/lookup_collatename.cc
! ea0a74eec5fae0e75fbdab16770f8d25  libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform.cc
! 8555e6f7feb98b497da79f030d4ed774  libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform_primary.cc
! e7813a19f6ab30b40efc9c3cb9a310c8  libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate.cc
! a6f816cd8db5c602d5a90d0dc0967c57  libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate_nocase.cc
! 9d75a7bdf7b451960b8fcdf036e38eb7  libstdc++-v3/testsuite/28_regex/traits/wchar_t/user_defined.cc
! 8d01d65a838c9738184de77e04420aa2  libstdc++-v3/testsuite/28_regex/traits/wchar_t/value.cc
! b5e7adff64570ac63ca5292240a43ae0  libstdc++-v3/testsuite/29_atomics/atomic/60658.cc
! d20ec47178b64425bbb88b270066e307  libstdc++-v3/testsuite/29_atomics/atomic/60695.cc
! 6d6208e48eb3b864c3ff1333479379fe  libstdc++-v3/testsuite/29_atomics/atomic/62259.cc
! 5e27382a3c1e69bc1df424b29c846521  libstdc++-v3/testsuite/29_atomics/atomic/64658.cc
! c6607a382247d3ceb93684dee5c5c491  libstdc++-v3/testsuite/29_atomics/atomic/65147.cc
! 8d91bb9c0f376c08134e12ef32ee7804  libstdc++-v3/testsuite/29_atomics/atomic/65913.cc
! fdbab5f118906148e1069ceea36b741e  libstdc++-v3/testsuite/29_atomics/atomic/69301.cc
! f4134bba1893ccfa5ab98316883b8333  libstdc++-v3/testsuite/29_atomics/atomic/69769.cc
! 3295a15e1943dd12f36f793207ad11db  libstdc++-v3/testsuite/29_atomics/atomic/70766.cc
! 0fd7b39fb494fed16618ef47be463608  libstdc++-v3/testsuite/29_atomics/atomic/cons/49445.cc
! 81509c1bb8a5ea04bf7b82cddb661947  libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
! d3be01c8bf0522833bbfdfb100ac96bc  libstdc++-v3/testsuite/29_atomics/atomic/cons/constexpr.cc
! 9f1bbbe2076f5a64a5d2c0b7edeb111f  libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_list.cc
! 449346a4df8c301ca40cc83664793cb7  libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc
! 5839ad5db4008a7e90ef2952e3feeaaf  libstdc++-v3/testsuite/29_atomics/atomic/cons/default.cc
! e46ca96c876f4a082dfdf2ce359f2d8a  libstdc++-v3/testsuite/29_atomics/atomic/cons/direct_list.cc
! d50bc864a60e27f00a04b30c38c90be5  libstdc++-v3/testsuite/29_atomics/atomic/cons/single_value.cc
! 6f298f6019a215e9c412aeb09624bf5d  libstdc++-v3/testsuite/29_atomics/atomic/cons/user_pod.cc
! f36282dbbcdd3aa562e3a8ab002d9f80  libstdc++-v3/testsuite/29_atomics/atomic/cons/value_init.cc
! 282ef4b2ce3eae4b270771b214669fa2  libstdc++-v3/testsuite/29_atomics/atomic/is_always_lock_free.cc
! ca1c82d4f60877fb671deef1ba6ffbc1  libstdc++-v3/testsuite/29_atomics/atomic/nonmembers.cc
! 38c5f624e3a9e19f5694f9bc933a2cb8  libstdc++-v3/testsuite/29_atomics/atomic/operators/51811.cc
! a426bff014a351dc4cef9f872ade21db  libstdc++-v3/testsuite/29_atomics/atomic/operators/56011.cc
! af124909f7946ffb43cf4c920e6e1d78  libstdc++-v3/testsuite/29_atomics/atomic/operators/integral_assignment.cc
! 3ae350d8ca9f2a937f08d50b5c240788  libstdc++-v3/testsuite/29_atomics/atomic/operators/integral_conversion.cc
! 56f87b9656ebf90de90023c78cc68c1a  libstdc++-v3/testsuite/29_atomics/atomic/operators/pointer_partial_void.cc
! 95ec86aa1c4810015a162529765742e0  libstdc++-v3/testsuite/29_atomics/atomic/requirements/base_classes.cc
! 23d161e4c61ecaf726d1c52b4f9fdbba  libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc
! 876ab0dee0c96c05e0d18d8602e5538d  libstdc++-v3/testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc
! 80b6d9a8db3532e8f4ea2c53e067ad47  libstdc++-v3/testsuite/29_atomics/atomic/requirements/typedefs.cc
! 94ed8f2c1449da297089067d45957d3d  libstdc++-v3/testsuite/29_atomics/atomic/requirements/types_neg.cc
! 6548b07b81a7377f3688f100321247dd  libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc
! acf2f795d3224d46ee21f2d4cc385609  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc
! a3378a806ab7b45280e03e8f3842d8d2  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/56012.cc
! d77e1701603565d9d30f634622e11dfd  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/aggregate.cc
! 51bc1e546de722a724af9a82797550dc  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/assign_neg.cc
! 81475fadd7bbffc8b7aa03eb7d10f3d2  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/copy_neg.cc
! 82f41e7686462dbca5e9857dae4d50fa  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/default.cc
! 541a19fbb01a205e2293585c6e8f4995  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/value_init.cc
! 0ee089bfc59b37c98726b60da922c597  libstdc++-v3/testsuite/29_atomics/atomic_flag/requirements/standard_layout.cc
! 411d1b9e01e199bd9a2002e29ebb052c  libstdc++-v3/testsuite/29_atomics/atomic_flag/requirements/trivial.cc
! 2d1d99bdd5f9c6f0ab1a127dc40e2348  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
! 1688ccdda611c39e21b34193459705d8  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc
! ba2baea8a27aafa987f8be353357659a  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc
! a18dde5b480913fc9a6bc869ce734424  libstdc++-v3/testsuite/29_atomics/atomic_float/1.cc
! c4e0fca79e064f9a604a88fb93fb407a  libstdc++-v3/testsuite/29_atomics/atomic_float/95282.cc
! 31250df4a48b39675f2a313a994ef359  libstdc++-v3/testsuite/29_atomics/atomic_float/requirements.cc
! a7154f9531d48adb541f3cd8d28f0fd8  libstdc++-v3/testsuite/29_atomics/atomic_float/value_init.cc
! ba0dbb85733938042fa14f6cee881782  libstdc++-v3/testsuite/29_atomics/atomic_integral/60940.cc
! 5ac6633cce94baecea75c16c067e1a74  libstdc++-v3/testsuite/29_atomics/atomic_integral/65147.cc
! 60a514bb158158c6066a76d5deb04397  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/assign_neg.cc
! ff18ed4a9d3c3c00aa919e1c008f846a  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/constexpr.cc
! 0aa00cd0fbb016cee1ab657917225982  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_list.cc
! c18259bc8777e34f5744c9c20ddbd0f8  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_neg.cc
! 80ab4e0a6afca8d7cc8c3207528a7f8e  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/default.cc
! 96c90a9f64b54b37364aca049d45e520  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/direct_list.cc
! b84d61a452bcc4b981883029a1f61449  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/single_value.cc
! db6ccacd76ee060f76efe8e60a043933  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/value_init.cc
! 785999424b5bf46f4ccb47885738d5b6  libstdc++-v3/testsuite/29_atomics/atomic_integral/is_always_lock_free.cc
! 414c363364581267d679cb832409cba9  libstdc++-v3/testsuite/29_atomics/atomic_integral/nonmembers.cc
! c0fb1923dcd8193eed53c474c9a49c70  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise.cc
! 0829764ebad3a5247e0a3dd5b4d4edfa  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc
! df0a54978a6dcbed70ca1a51b057791e  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement.cc
! b5e3f31b48e2d9ebd4b199a244f721e3  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc
! c0718c5ce01bf2b26923c40abcf7942d  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment.cc
! e80a84336d76b0a8422d12b69bf63eb3  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment_neg.cc
! 35f86e818a187f980b51d22aec5787ec  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/integral_assignment.cc
! b6ddb62b80ac281468815f3e796f8019  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/integral_conversion.cc
! 5ad7a280fd92b48b1eb169be81725042  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/standard_layout.cc
! c8890c9ebf1013bfcb84bf6ef0dfd9aa  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/trivial.cc
! f766af88b885c19002523c1590ccf46e  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/typedefs.cc
! 107aedcd2d45e07cfa4797a998b4b74f  libstdc++-v3/testsuite/29_atomics/atomic_ref/deduction.cc
! 34bf434f675c695d0d411eea651b8aeb  libstdc++-v3/testsuite/29_atomics/atomic_ref/float.cc
! fd84aa01c04d27e0a59c445aa4a7231c  libstdc++-v3/testsuite/29_atomics/atomic_ref/generic.cc
! eb981085a6b2ce75e5123ff452f12e65  libstdc++-v3/testsuite/29_atomics/atomic_ref/integral.cc
! 4fafed74e18913b7a8319a9cb37d4698  libstdc++-v3/testsuite/29_atomics/atomic_ref/pointer.cc
! 8cc3213ca8ab823d2cff2d0e7b8b5541  libstdc++-v3/testsuite/29_atomics/atomic_ref/requirements.cc
! abc081c8fa2bb4f78a85d7055fc82d1a  libstdc++-v3/testsuite/29_atomics/headers/atomic/functions_std_c++0x.cc
! da605934efbe2f1bbd782120283623d5  libstdc++-v3/testsuite/29_atomics/headers/atomic/macros.cc
! f5ecf4a97d3e96c87f81c3e97a7326b6  libstdc++-v3/testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc
! a0a79dd958f2dccb6813c0efab157636  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
! 18effb823caac14991ffd3c7d3c305ac  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc
! 4e671ccc956bc74a55e432daf2cbc9d9  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++20.cc
! 83f77367396599e32a19d0bbad827869  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc
! 04a21bdad5bf86802c5c8bad7e3158ed  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++2a.cc
! 76e8e1b7f80f8325458850e8a935559b  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++2a_neg.cc
! d571a0c37420ed2307b3efd8c652d58e  libstdc++-v3/testsuite/30_threads/async/42819.cc
! 972fce0b7a198b042f4d5bc765513176  libstdc++-v3/testsuite/30_threads/async/49668.cc
! a6df61f4810b6f1db214eae1793e82a9  libstdc++-v3/testsuite/30_threads/async/54297.cc
! 156ceeb4e48af0e200dc6c007b218b1c  libstdc++-v3/testsuite/30_threads/async/84532.cc
! da1a1b26987f56d25ce4a96d3f8f89b0  libstdc++-v3/testsuite/30_threads/async/any.cc
! 0d1113c642e04085cedc55feea2ff9e1  libstdc++-v3/testsuite/30_threads/async/async.cc
! 16845cdea1ef29e814f03bf9b4fad185  libstdc++-v3/testsuite/30_threads/async/except.cc
! 410df2fb2efb0ee4c38200756f0dc629  libstdc++-v3/testsuite/30_threads/async/forced_unwind.cc
! e3d05c1c8fb3eacd6ded1e6b813afaf6  libstdc++-v3/testsuite/30_threads/async/launch.cc
! bfee9fa0e9a51010cd92c278aaab8480  libstdc++-v3/testsuite/30_threads/async/lwg2021.cc
! 7d2b8368d21e9e9bf8fa751f16c09927  libstdc++-v3/testsuite/30_threads/async/sync.cc
! 8aae290dc539d823b56d255bc60c088b  libstdc++-v3/testsuite/30_threads/call_once/39909.cc
! f5b3e5c166fcca13cdccee9a484037fd  libstdc++-v3/testsuite/30_threads/call_once/49668.cc
! 80be3c971cf3dd1952ec93d5b6d43a52  libstdc++-v3/testsuite/30_threads/call_once/60497.cc
! 4b7a61670ff761886075b28b96058079  libstdc++-v3/testsuite/30_threads/call_once/call_once1.cc
! ae7aec59ef486837c5300e82115ea73c  libstdc++-v3/testsuite/30_threads/call_once/constexpr.cc
! 140d9558c1e659f196c35dd187f39907  libstdc++-v3/testsuite/30_threads/call_once/dr2442.cc
! 29eac65a374e9201121ad39164bd8062  libstdc++-v3/testsuite/30_threads/call_once/once_flag.cc
! 2dc1d325664d070e28fbeefd0861febe  libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc
! dd59ff07114b17f2c4518d229ae7be8b  libstdc++-v3/testsuite/30_threads/condition_variable/cons/1.cc
! d3c3256a1ff367bc84a0beaf93d4fa8e  libstdc++-v3/testsuite/30_threads/condition_variable/cons/assign_neg.cc
! d97cbe599247c01d48755bdd261299e6  libstdc++-v3/testsuite/30_threads/condition_variable/cons/copy_neg.cc
! b67ad308fede21876b6734a2bbe4deff  libstdc++-v3/testsuite/30_threads/condition_variable/members/1.cc
! 5425a4c75965400af87749bca0d06cd2  libstdc++-v3/testsuite/30_threads/condition_variable/members/2.cc
! c73abecdb22ac9ee77485748cf0c9a61  libstdc++-v3/testsuite/30_threads/condition_variable/members/3.cc
! d6989ad6903383f0f4b8509cad6e57e2  libstdc++-v3/testsuite/30_threads/condition_variable/members/53841.cc
! 911987824f46f975f4df0a5d05794957  libstdc++-v3/testsuite/30_threads/condition_variable/members/68519.cc
! 39d5d536bb093f25f6bdb6123e386519  libstdc++-v3/testsuite/30_threads/condition_variable/members/clock_neg.cc
! 6c7ec5b670f178628c8fb2e3b166c615  libstdc++-v3/testsuite/30_threads/condition_variable/native_handle/typesizes.cc
! 9eb7fdf8e06eeb4a07ffe07c37d06344  libstdc++-v3/testsuite/30_threads/condition_variable/requirements/standard_layout.cc
! e3530d5e60bb74547a071f1e46f287b3  libstdc++-v3/testsuite/30_threads/condition_variable/requirements/typedefs.cc
! b37f192d56d3c9017da0e23983ce592b  libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc
! 1f5a05f96bcde9ea88b5b2a5eec534d3  libstdc++-v3/testsuite/30_threads/condition_variable_any/53830.cc
! a7197d990c1b1af1069dd255c64a731c  libstdc++-v3/testsuite/30_threads/condition_variable_any/cond.cc
! 297ec2afc1d78e888729e75edcf88a6b  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/1.cc
! 202e76aec4d96928e456a26288b49d9e  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/assign_neg.cc
! 127171cbb7ec5241189ec4ba1b1d03af  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/copy_neg.cc
! a28489323e841b4bf99aa1fc43b64dd1  libstdc++-v3/testsuite/30_threads/condition_variable_any/members/1.cc
! ab65d0702402729f91cc714254c63439  libstdc++-v3/testsuite/30_threads/condition_variable_any/members/2.cc
! 96e7f93834f3777e6fcbbf92407189e3  libstdc++-v3/testsuite/30_threads/condition_variable_any/members/clock_neg.cc
! d199cba2e867b07e689ae9b28251ead5  libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/1.cc
! 2bad094016530545999742a6588ba943  libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/2.cc
! a6b8adbbc6138446342259c0490d7a23  libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc
! 925048f0a188265d6a8d72eac9e79c9b  libstdc++-v3/testsuite/30_threads/future/cons/assign_neg.cc
! 60caf1f5451e35dcaeef17749e31e0cc  libstdc++-v3/testsuite/30_threads/future/cons/constexpr.cc
! 1707fb165a4569a6839e518e6dd299cc  libstdc++-v3/testsuite/30_threads/future/cons/copy_neg.cc
! 620134de2ad3930dd92bc21f04b7e837  libstdc++-v3/testsuite/30_threads/future/cons/default.cc
! 6a9ad0b5de44bbac2736f16001f1544d  libstdc++-v3/testsuite/30_threads/future/cons/move.cc
! 2080d7a4297d539c5a6089df558359d2  libstdc++-v3/testsuite/30_threads/future/cons/move_assign.cc
! d7c22e58de11cc75729b043fb08a23cb  libstdc++-v3/testsuite/30_threads/future/members/45133.cc
! 250b46e427dbc26b71b94be88cc10a5b  libstdc++-v3/testsuite/30_threads/future/members/93456.cc
! bd260bff64121bff0d1cdadf791d0d52  libstdc++-v3/testsuite/30_threads/future/members/clock_neg.cc
! bc194e8bd8564e0ac5acac7222f71130  libstdc++-v3/testsuite/30_threads/future/members/get.cc
! 44cf4b068a6c256cf724c36ee6778c69  libstdc++-v3/testsuite/30_threads/future/members/get2.cc
! b9745c70abfff1641c7044d870a34a86  libstdc++-v3/testsuite/30_threads/future/members/poll.cc
! ce51b40427b5175a1cb03de8e0bf03e8  libstdc++-v3/testsuite/30_threads/future/members/share.cc
! 341e5de67349d07ac4c451485e6c3f00  libstdc++-v3/testsuite/30_threads/future/members/valid.cc
! f55c6c408a752881f4558aebd0cf7bc6  libstdc++-v3/testsuite/30_threads/future/members/wait.cc
! 5b8dd21a166466c1ba223f87a594afa3  libstdc++-v3/testsuite/30_threads/future/members/wait_for.cc
! 314364eb698087a38a8c48f4510fc19f  libstdc++-v3/testsuite/30_threads/future/members/wait_until.cc
! b1848245a0862c56a0416a883c015a39  libstdc++-v3/testsuite/30_threads/future/requirements/explicit_instantiation.cc
! bb517cee197e71a2526ecbf274ca8d5d  libstdc++-v3/testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc
! 8425e2f1d41369f2d3aa732da6886520  libstdc++-v3/testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc
! fd1b9aeda087d8757a0099ae2c087c5f  libstdc++-v3/testsuite/30_threads/headers/future/std_c++0x_neg.cc
! 8cd0446515c32a85e5a77bee30963631  libstdc++-v3/testsuite/30_threads/headers/future/types_std_c++0x.cc
! 88743c66648db67bb3237adcd4d1a3df  libstdc++-v3/testsuite/30_threads/headers/mutex/std_c++0x_neg.cc
! 7edfc8cceafbb92d165c554769a61d18  libstdc++-v3/testsuite/30_threads/headers/mutex/types_std_c++0x.cc
! 3153f7d3493d9e1d1cbf72f7a63f2131  libstdc++-v3/testsuite/30_threads/headers/stop_token/synopsis.cc
! ae3b848186707ba565aa4405b4c37b99  libstdc++-v3/testsuite/30_threads/headers/thread/std_c++0x_neg.cc
! d454c6429efcadd6558c9211731a286b  libstdc++-v3/testsuite/30_threads/headers/thread/types_std_c++0x.cc
! 9bc775ae70f898bfedb7c228a360d49c  libstdc++-v3/testsuite/30_threads/headers/thread/types_std_c++20.cc
! 655171eaaea8d2fc4a01f8956a46ffb0  libstdc++-v3/testsuite/30_threads/jthread/1.cc
! 78d8be1360182a5678f6cd40308b2652  libstdc++-v3/testsuite/30_threads/jthread/2.cc
! afe770d25786f080ea429683cb1cad43  libstdc++-v3/testsuite/30_threads/jthread/3.cc
! f7d097fd635fb4f3e4dd4892093e8876  libstdc++-v3/testsuite/30_threads/jthread/95989.cc
! e7231005c55a082de8dcfb1f120f5b27  libstdc++-v3/testsuite/30_threads/jthread/jthread.cc
! 935d4657f7a4b6c66599439a910bbdbb  libstdc++-v3/testsuite/30_threads/lock/1.cc
! 4c2b5d9fc172fff58f548271259446a4  libstdc++-v3/testsuite/30_threads/lock/2.cc
! 88cdb5f194cf246ae6a714435bbe8f7c  libstdc++-v3/testsuite/30_threads/lock/3.cc
! 651d48f1fc363b037f66ec06946f79bb  libstdc++-v3/testsuite/30_threads/lock/4.cc
! 74e3f799a7225cfc1f8180f77c055ab4  libstdc++-v3/testsuite/30_threads/lock_guard/cons/1.cc
! 27cb4c0624b3a65296ad9f0e29ccd97d  libstdc++-v3/testsuite/30_threads/lock_guard/cons/deduction.cc
! 49436b278277f5690bb229e8d15ce67a  libstdc++-v3/testsuite/30_threads/lock_guard/requirements/explicit_instantiation.cc
! cd6738a49d186afab1f9201b86e566f0  libstdc++-v3/testsuite/30_threads/lock_guard/requirements/typedefs.cc
! 8dbe58c4e7d8b49dbc2be64664f66146  libstdc++-v3/testsuite/30_threads/mutex/cons/1.cc
! 385fccd7acb355ae46b40012cfcaef2e  libstdc++-v3/testsuite/30_threads/mutex/cons/assign_neg.cc
! ae7aec59ef486837c5300e82115ea73c  libstdc++-v3/testsuite/30_threads/mutex/cons/constexpr.cc
! 842499c3648a1a0a91baaf45b87355f9  libstdc++-v3/testsuite/30_threads/mutex/cons/copy_neg.cc
! 402859043f3fdae28b14db58387a5833  libstdc++-v3/testsuite/30_threads/mutex/dest/destructor_locked.cc
! 0074d4a1ee07423fa3d89e8b80b41726  libstdc++-v3/testsuite/30_threads/mutex/lock/1.cc
! ed3e24459a1447170ce706e129e9a224  libstdc++-v3/testsuite/30_threads/mutex/native_handle/1.cc
! a17c8407f85ba83e4ecb7653afd3d8a0  libstdc++-v3/testsuite/30_threads/mutex/native_handle/typesizes.cc
! 12a82336d2d0ff5041b8090189c741d8  libstdc++-v3/testsuite/30_threads/mutex/requirements/standard_layout.cc
! 3ca8e3722de0a012147be4a12f8da7f8  libstdc++-v3/testsuite/30_threads/mutex/requirements/typedefs.cc
! 079ce915c65d1d213873b2a1cde7fabd  libstdc++-v3/testsuite/30_threads/mutex/try_lock/1.cc
! fae9dbb706c5e1eed9379930b16ea9f3  libstdc++-v3/testsuite/30_threads/mutex/try_lock/2.cc
! d3ebc1220cdf0fcfabab2a368fd1099e  libstdc++-v3/testsuite/30_threads/mutex/unlock/1.cc
! 10877e15f8e650642b2b0c17bb797119  libstdc++-v3/testsuite/30_threads/mutex/unlock/2.cc
! 0a00b82344462c8e8a898984e69d2cb8  libstdc++-v3/testsuite/30_threads/once_flag/cons/constexpr.cc
! ffb4b08a8fa7eedaf68eeb7d6d3ce224  libstdc++-v3/testsuite/30_threads/packaged_task/49668.cc
! 7bd7ecdf53d3f46f06ea751bca3869ed  libstdc++-v3/testsuite/30_threads/packaged_task/60564.cc
! 86c24aff9fd59dede10b929380aa1e10  libstdc++-v3/testsuite/30_threads/packaged_task/79486.cc
! 62942642e578e6d925355ed2328278ad  libstdc++-v3/testsuite/30_threads/packaged_task/cons/1.cc
! 97b5ee91f26582af08368f574639a7cb  libstdc++-v3/testsuite/30_threads/packaged_task/cons/2.cc
! 4ee83081bc60b3efe68cdc453058018a  libstdc++-v3/testsuite/30_threads/packaged_task/cons/3.cc
! cfee13e91420e211dac0d0b6788f8592  libstdc++-v3/testsuite/30_threads/packaged_task/cons/56492.cc
! 845b4b9345b768d6aa460336891902f7  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc.cc
! edabb490f18b040daaa8147652552dfe  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc2.cc
! dc36535d3af367250636487da11ddd8a  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc_min.cc
! 16f2a36f790d8453848ffca54618d616  libstdc++-v3/testsuite/30_threads/packaged_task/cons/assign_neg.cc
! 7f05008a9419f32c60dd20f17576bec1  libstdc++-v3/testsuite/30_threads/packaged_task/cons/copy_neg.cc
! 84acc04eeeacad1ced724e3441580a77  libstdc++-v3/testsuite/30_threads/packaged_task/cons/move.cc
! 70078ce10ab28e780b24e576e964b88e  libstdc++-v3/testsuite/30_threads/packaged_task/cons/move_assign.cc
! ea5aefd5c128a4ba3894141138d1eff4  libstdc++-v3/testsuite/30_threads/packaged_task/forced_unwind.cc
! 440528a7485ad6847e270bf9c761f818  libstdc++-v3/testsuite/30_threads/packaged_task/members/at_thread_exit.cc
! 2a708ce1817d4848b095c4444cd1e3e0  libstdc++-v3/testsuite/30_threads/packaged_task/members/get_future.cc
! e8e21f79ce00db3dc13219e710519f30  libstdc++-v3/testsuite/30_threads/packaged_task/members/get_future2.cc
! 0e4b9b1c15414b81c63b1097ac98dbd9  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke.cc
! b58b9eedcb8d0ad8de50d3bd8cee1454  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke2.cc
! 49cade9497eaf931da15bde2dd88db1f  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke3.cc
! 80445e4e3f88d6adbd2114d1154fba0d  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke4.cc
! 660a6ada9eb129d607543dddf0f8b99c  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke5.cc
! d3803f15972d7df32d9bd993eafeb0f9  libstdc++-v3/testsuite/30_threads/packaged_task/members/reset.cc
! 68a9a322bcb6b35d0717baad1643ed6a  libstdc++-v3/testsuite/30_threads/packaged_task/members/reset2.cc
! 7458e347136201de339ce74a55e3bc54  libstdc++-v3/testsuite/30_threads/packaged_task/members/swap.cc
! c68c7c8a37b659e697648c25437f865a  libstdc++-v3/testsuite/30_threads/packaged_task/members/valid.cc
! df4a865211ecb04fa1e9a4b353a853ca  libstdc++-v3/testsuite/30_threads/packaged_task/requirements/explicit_instantiation.cc
! a6c7ea0d1f6dd73d1369054083b19c2d  libstdc++-v3/testsuite/30_threads/packaged_task/uses_allocator.cc
! 5f31d3e97080cd304099fe752567cbf5  libstdc++-v3/testsuite/30_threads/promise/60966.cc
! 92772069d2adcad41e745093701a6de0  libstdc++-v3/testsuite/30_threads/promise/69106.cc
! c9e7e99529e132f08608c6e69971166e  libstdc++-v3/testsuite/30_threads/promise/cons/1.cc
! 279f6026a4abe12fd01cba07b56ff0e3  libstdc++-v3/testsuite/30_threads/promise/cons/alloc.cc
! 2f9f0be07cf34702d2dd1cba1ece4934  libstdc++-v3/testsuite/30_threads/promise/cons/alloc2.cc
! 3e711bab312b8e166071174e21719eb6  libstdc++-v3/testsuite/30_threads/promise/cons/alloc_min.cc
! 91c3ddce6bfd3d30fd5f5a98fbb84ce8  libstdc++-v3/testsuite/30_threads/promise/cons/assign_neg.cc
! 7ce0437bb2adf9f0d0b8c6f6663fc633  libstdc++-v3/testsuite/30_threads/promise/cons/copy_neg.cc
! 773bbd2bea2713189cc01484907ce551  libstdc++-v3/testsuite/30_threads/promise/cons/move.cc
! 39bfb2e99d01cddc484af2f18bdc35f6  libstdc++-v3/testsuite/30_threads/promise/cons/move_assign.cc
! f30bc1fe64ed308a264ee83c625980de  libstdc++-v3/testsuite/30_threads/promise/members/at_thread_exit.cc
! c0ee304468e910b4bce96e67d6949cf8  libstdc++-v3/testsuite/30_threads/promise/members/at_thread_exit2.cc
! 17336607fe68b54ec7ce10d8fccffa43  libstdc++-v3/testsuite/30_threads/promise/members/get_future.cc
! ca14c819f0127cf9fedad83505f61467  libstdc++-v3/testsuite/30_threads/promise/members/get_future2.cc
! 3ece0fed881fb83f1a8680f7c9ebf145  libstdc++-v3/testsuite/30_threads/promise/members/set_exception.cc
! ae1c4261e41de542eed795eda721b790  libstdc++-v3/testsuite/30_threads/promise/members/set_exception2.cc
! 5f0a1bb2b6a517f41cb7c8647a56a9c8  libstdc++-v3/testsuite/30_threads/promise/members/set_value.cc
! cf88f876a7dcc77f63bdc32897f25eb9  libstdc++-v3/testsuite/30_threads/promise/members/set_value2.cc
! ac9078788a9eb7771809504e3f62fd93  libstdc++-v3/testsuite/30_threads/promise/members/set_value3.cc
! 900daeb9618c79edf3bf0330c135d344  libstdc++-v3/testsuite/30_threads/promise/members/swap.cc
! d2cae4b37228562d6e352ff957fb3cff  libstdc++-v3/testsuite/30_threads/promise/requirements/explicit_instantiation.cc
! e735a54d2b92d475ee8469dc497f11a1  libstdc++-v3/testsuite/30_threads/promise/uses_allocator.cc
! e85ae5706b5e599c46a0c7fc19bb8732  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/1.cc
! fc21a67a688f13516c6fbba7f984b8bf  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/assign_neg.cc
! 8c687ae8cf9261b08780546d2c621dda  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/copy_neg.cc
! eda59abff629ff1e01ef74d1dcada011  libstdc++-v3/testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc
! 2ef1c04fb719888939471b1757946c1b  libstdc++-v3/testsuite/30_threads/recursive_mutex/lock/1.cc
! 0c5dfc544697d149ec9f64bc0885049d  libstdc++-v3/testsuite/30_threads/recursive_mutex/native_handle/1.cc
! b3228e19469ed17ac732727bee4ad56a  libstdc++-v3/testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc
! 9146497ba9b003b9ba3e9e15d19e98ae  libstdc++-v3/testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc
! e115df1ea224c6c9bd42c49260f425d7  libstdc++-v3/testsuite/30_threads/recursive_mutex/requirements/typedefs.cc
! 11c6aa1089e99586a6a1b5ea7855fc1c  libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/1.cc
! 4ce4735fdd8dde51542c65f44ab18a96  libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/2.cc
! 7b614b9480237292c58c56b02c916904  libstdc++-v3/testsuite/30_threads/recursive_mutex/unlock/1.cc
! c2266d837d7b3049a24a7c949da4a874  libstdc++-v3/testsuite/30_threads/recursive_mutex/unlock/2.cc
! 3d18c3a9649c086a73434c143c471df8  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/1.cc
! 598bf538fa54f450bdfd5b7a106bb3d6  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc
! ad88cc3761bf2332397044d288e08bf9  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc
! 790f60d801c8783e35f04259222e809b  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc
! cb7194d60a1830407b1c934ea4954853  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/lock/1.cc
! 28d775802dcb33fc6044fb1124396c86  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/lock/2.cc
! e927db5884853c9fa4cc587c95f0d6fc  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc
! 4fad08eac7a333f65482a570f1a123d7  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/native_handle/typesizes.cc
! e0e4bcd0f49ea60cefc1be4718891659  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc
! 5b7294d342e7e28038de94726cf3697e  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc
! f3c14b3c2f51ae0dc10af4483ad6e3d9  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc
! 2158b4ce8dd4e3282e6324eb4da1025e  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc
! 0dd6fec71480e448221bfac4b6057b8d  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc
! 04c9c27690614a740cd62c0115dd5293  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc
! 5b7294d342e7e28038de94726cf3697e  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc
! 55aa0fcc1c0ef8e5642f3c4d50019222  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc
! 8aef8f1c9a8d1afeda8f0f1796593503  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc
! df52f1fd28542b07bceb5b6b3bdcf923  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/clock_neg.cc
! 3e150e5f0ba51cafcc4b1aa37931c8dc  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/1.cc
! 43ad8d6a9df946ca60e5e6e06ff9537a  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/2.cc
! 213c7eb3053fa1ea4dd29836d503bb8f  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/1.cc
! 4dd5556e9687b7a880a4ed9ec240aa81  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/deduction.cc
! 89be4fb6747d8267a7aeffee0b7d73da  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc
! 5e6b97a6f5a71cf23c009726853ba315  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
! 08432d927a5b2dad6a04371f2d0a6bb7  libstdc++-v3/testsuite/30_threads/shared_future/cons/assign.cc
! 80447149b5653383f11841499f5fb043  libstdc++-v3/testsuite/30_threads/shared_future/cons/constexpr.cc
! e7f1e384b0125fb4638decfca7c51529  libstdc++-v3/testsuite/30_threads/shared_future/cons/copy.cc
! 98dbdd4b9a4d0b98d9668c524e1b5e74  libstdc++-v3/testsuite/30_threads/shared_future/cons/default.cc
! e46188bdb80ce4cf32583751add725fa  libstdc++-v3/testsuite/30_threads/shared_future/cons/move.cc
! c9d2d64bf4ee961f8c5c09635daa654b  libstdc++-v3/testsuite/30_threads/shared_future/cons/move_assign.cc
! 6bf8e31ef528cb5e2a834c575f5679f3  libstdc++-v3/testsuite/30_threads/shared_future/members/45133.cc
! 19c917231ff8541241eaefad72d49a2f  libstdc++-v3/testsuite/30_threads/shared_future/members/clock_neg.cc
! 38d4d937120b1300bab12771e313406f  libstdc++-v3/testsuite/30_threads/shared_future/members/get.cc
! 33261871fee86aaf0543c2a30257a81f  libstdc++-v3/testsuite/30_threads/shared_future/members/get2.cc
! 2ee91c1c64ddd306618b5f86059eb968  libstdc++-v3/testsuite/30_threads/shared_future/members/valid.cc
! f5492ca62e618044a67b1f3841d4ddbf  libstdc++-v3/testsuite/30_threads/shared_future/members/wait.cc
! 96d75c593286f0977b837dfdbeba0193  libstdc++-v3/testsuite/30_threads/shared_future/members/wait_for.cc
! ca46e95d1bc6cdc619f7e7199d652174  libstdc++-v3/testsuite/30_threads/shared_future/members/wait_until.cc
! 8a99c3283cc4869f0c0c768f1a5d3832  libstdc++-v3/testsuite/30_threads/shared_future/requirements/explicit_instantiation.cc
! 55d3e6f6daf51d428dd668ac4c801343  libstdc++-v3/testsuite/30_threads/shared_lock/70766.cc
! 7adb539d839c1281b871cb4230aba395  libstdc++-v3/testsuite/30_threads/shared_lock/cons/1.cc
! e527325da409717b16c131a9e37a921f  libstdc++-v3/testsuite/30_threads/shared_lock/cons/2.cc
! b071a7f9034177a91fd46fa6ce4fba97  libstdc++-v3/testsuite/30_threads/shared_lock/cons/3.cc
! e0e1554e59ec9d666ce3e0775523f9a3  libstdc++-v3/testsuite/30_threads/shared_lock/cons/4.cc
! 9ed6a71a98c91f01adfbfd673c384fd9  libstdc++-v3/testsuite/30_threads/shared_lock/cons/5.cc
! 42dfc370f72991ecc769763ab5e81dcb  libstdc++-v3/testsuite/30_threads/shared_lock/cons/6.cc
! 204767ea5937ef374b291460cff28aca  libstdc++-v3/testsuite/30_threads/shared_lock/locking/1.cc
! cf87e686dcc36d535fa73022b819cfc6  libstdc++-v3/testsuite/30_threads/shared_lock/locking/2.cc
! 3bf20c6694b2be2a12cbc7f271fd7bc1  libstdc++-v3/testsuite/30_threads/shared_lock/locking/3.cc
! 017cc4a3c0456e297450ec425f8b7538  libstdc++-v3/testsuite/30_threads/shared_lock/locking/4.cc
! 4644e7beb94e398ff8bf9b11b9c36475  libstdc++-v3/testsuite/30_threads/shared_lock/locking/clock_neg.cc
! c527bb6bee203eb35d7a62fe52a6957b  libstdc++-v3/testsuite/30_threads/shared_lock/modifiers/1.cc
! bcf3a0ad5117462a2eb79ea0daee29c6  libstdc++-v3/testsuite/30_threads/shared_lock/requirements/explicit_instantiation.cc
! 919f7276ba194475e9eda67c602b6749  libstdc++-v3/testsuite/30_threads/shared_lock/requirements/typedefs.cc
! 07788157b87939937c7d33a88f27fe17  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/1.cc
! d5c89835efeba0de525ea3c2f8ab6710  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/assign_neg.cc
! 32ed5382b2a449595206c394437db173  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/copy_neg.cc
! 772b43a48f431ea892fc4ab3f4a7c3a6  libstdc++-v3/testsuite/30_threads/shared_mutex/requirements/standard_layout.cc
! 1c7ef3b5bf61536307ac29eb29a6ff82  libstdc++-v3/testsuite/30_threads/shared_mutex/try_lock/1.cc
! a8d86be53a83f30b19da40b6674da335  libstdc++-v3/testsuite/30_threads/shared_mutex/try_lock/2.cc
! fe872105487de8c87315c26c2a04c3d8  libstdc++-v3/testsuite/30_threads/shared_mutex/unlock/1.cc
! 9f9deaeeafc35ae4a0ded4bc99d859ca  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/94069.cc
! d34044c5138381f5bcc25eccc223500f  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/1.cc
! 6d2ebff6f3dab76404ae6d3dd0256081  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/assign_neg.cc
! e5e5a4c46c647c3b2a4d7bb958862961  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/copy_neg.cc
! 3d7018f7e1da2ad1558d6f99011a7447  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/requirements/standard_layout.cc
! 5a1e4141b74a314c2c7bb84adac14bed  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/1.cc
! 603589498fe4452eee76668a50611f1c  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/2.cc
! 8afd404f201b5c435bd99fb2624ffa2c  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/3.cc
! cc15714a1df0c0f7c4be1f8e7b828961  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc
! 480dda0b092e057f335406704387a519  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc
! 05a380e4479fca6dc2bb21d065ff9706  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc
! e3b5d0634152a3dc4f88d2839b553177  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/unlock/1.cc
! 3d48adaa811e98b68878f765d62490ff  libstdc++-v3/testsuite/30_threads/stop_token/1.cc
! 2bad094016530545999742a6588ba943  libstdc++-v3/testsuite/30_threads/stop_token/2.cc
! b202f2e7fa9b8754b39b61c6f14fcf90  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback.cc
! b8a4e5f919ed804cda7a4986515a39da  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc
! 015c4ef5af08373d0b3296d2d27e5559  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/deadlock.cc
! 4f451cf8524af377ddddf3ed118ba92d  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/destroy.cc
! 11f6d5d70e7fef421e1f469833e6cc7d  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc
! 651c42f2cb12777d659edfc11b2d5170  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc
! 2f204d1b97cbdb0691b6816df420840b  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/invoke.cc
! 00579450dfec5cff7bc5231e8598c327  libstdc++-v3/testsuite/30_threads/stop_token/stop_source.cc
! d9e016e3e4245c6ec694b9a67da438aa  libstdc++-v3/testsuite/30_threads/stop_token/stop_source/assign.cc
! b728d553c96f34b0749de82df7234e39  libstdc++-v3/testsuite/30_threads/stop_token/stop_token.cc
! 4ebadc0971e06ea119c402cc8685ec34  libstdc++-v3/testsuite/30_threads/stop_token/stop_token/stop_possible.cc
! 1adb163dc25af23485db182a5b897ff1  libstdc++-v3/testsuite/30_threads/this_thread/1.cc
! 4e92c40463b4bcf846f986f4dea18956  libstdc++-v3/testsuite/30_threads/this_thread/2.cc
! 630c12aa6f8d50cf98ea7f34766085f0  libstdc++-v3/testsuite/30_threads/this_thread/3.cc
! eae80220cd7257de6ce2703a443b36d2  libstdc++-v3/testsuite/30_threads/this_thread/4.cc
! 88f30baedc02c6d89be5822eef4d37d8  libstdc++-v3/testsuite/30_threads/this_thread/57060.cc
! 72dfe8727dd90a2a2f05f63e534a9b19  libstdc++-v3/testsuite/30_threads/this_thread/58038.cc
! 74847345b7fd65f8e06efbb2db9e14ec  libstdc++-v3/testsuite/30_threads/this_thread/60421.cc
! 6d0d9b269d00f14ba1d4b41cc794d181  libstdc++-v3/testsuite/30_threads/this_thread/95989.cc
! 024708180666400545392dfa117565b6  libstdc++-v3/testsuite/30_threads/thread/70503.cc
! 6d104837c3dba07373c5e29f717e79ca  libstdc++-v3/testsuite/30_threads/thread/84532.cc
! cdfd4df6a4f7b95c7c789a64a38f1f8f  libstdc++-v3/testsuite/30_threads/thread/adl.cc
! b5558a4996f36feab92ce436b0a61688  libstdc++-v3/testsuite/30_threads/thread/cons/1.cc
! 0ca010ab599e89cdfafc829c39a8063e  libstdc++-v3/testsuite/30_threads/thread/cons/2.cc
! a65d392a3016d0061d9fbfdc90bb9791  libstdc++-v3/testsuite/30_threads/thread/cons/3.cc
! 6b2bb749e8afe4fe9276375d7adc0356  libstdc++-v3/testsuite/30_threads/thread/cons/4.cc
! 742bb75de4e69b59d73627f12c88ea71  libstdc++-v3/testsuite/30_threads/thread/cons/49668.cc
! 7dc4e002d533f484fa5b6917ceb490b8  libstdc++-v3/testsuite/30_threads/thread/cons/5.cc
! c20d6862e6375c7d1c82a1c23a3d5de0  libstdc++-v3/testsuite/30_threads/thread/cons/6.cc
! b0dffa6e92284dcc36190bf9ff3ef032  libstdc++-v3/testsuite/30_threads/thread/cons/69724.cc
! 66cf74c52e8a400bb3ccac00cc282ef7  libstdc++-v3/testsuite/30_threads/thread/cons/7.cc
! d1e328a3d36ba38ea95cf8565b3bb7e1  libstdc++-v3/testsuite/30_threads/thread/cons/8.cc
! 0e34fc952986566886b39b1bf51b0307  libstdc++-v3/testsuite/30_threads/thread/cons/84535.cc
! f9759e67d06d866ea24f17d228ef00b6  libstdc++-v3/testsuite/30_threads/thread/cons/9.cc
! 1199d71a6b22b1ca58c9b95b90b099a1  libstdc++-v3/testsuite/30_threads/thread/cons/assign_neg.cc
! ff0ba78dc2d1cdf585683cd263da6f79  libstdc++-v3/testsuite/30_threads/thread/cons/copy_neg.cc
! 36463b5df1f61a8f027316c774e8c89e  libstdc++-v3/testsuite/30_threads/thread/cons/lwg2097.cc
! f6610754ef9a1d590607a064fa508117  libstdc++-v3/testsuite/30_threads/thread/cons/moveable.cc
! e92e5e60cb589444e5ee618ab4a8bc5f  libstdc++-v3/testsuite/30_threads/thread/cons/terminate.cc
! 2d4cc3dcc894e4bc3d80779a0bb5554d  libstdc++-v3/testsuite/30_threads/thread/id/70294.cc
! 6cd07534b566fb25f0fcf13c57e87f39  libstdc++-v3/testsuite/30_threads/thread/id/hash.cc
! 33308142c8f1909378d675b6ccfe64c5  libstdc++-v3/testsuite/30_threads/thread/id/operators.cc
! 2ab2a00cc10637bab08e5154bc8b0229  libstdc++-v3/testsuite/30_threads/thread/id/operators_c++20.cc
! 1b99394eb338280b29143f562f6ad1ca  libstdc++-v3/testsuite/30_threads/thread/members/1.cc
! 5368c9eb24e8d828e195c9fdf53b1fee  libstdc++-v3/testsuite/30_threads/thread/members/2.cc
! 0a666b75dbcf52d29c89a7d926ee3424  libstdc++-v3/testsuite/30_threads/thread/members/3.cc
! 58fdf99b85fa066aa73ed61a97d8495f  libstdc++-v3/testsuite/30_threads/thread/members/4.cc
! 1f4fb3baba213d5c6e9a3c5b2f71bc4a  libstdc++-v3/testsuite/30_threads/thread/members/5.cc
! cb877c85a87176c2ef5863241bbef4b3  libstdc++-v3/testsuite/30_threads/thread/members/hardware_concurrency.cc
! 2bc139cbeca009d988d599ec755c48b1  libstdc++-v3/testsuite/30_threads/thread/native_handle/cancel.cc
! 7fefcde44d096218ce827a2790c9ba4d  libstdc++-v3/testsuite/30_threads/thread/native_handle/typesizes.cc
! 1fc3e43d0c676b026f39a04752551698  libstdc++-v3/testsuite/30_threads/thread/swap/1.cc
! c7606fea42706689b5bb34a444cbd94c  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/1.cc
! 51be12bf1188ba1128a5f711dfcb6239  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/assign_neg.cc
! 12afa6167788a397f66ba79978fb2423  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/copy_neg.cc
! 1edde8740fe550c1be20d0715dedd71e  libstdc++-v3/testsuite/30_threads/timed_mutex/dest/destructor_locked.cc
! 027191a229727839204d89696a665ab0  libstdc++-v3/testsuite/30_threads/timed_mutex/lock/1.cc
! 663f2bb81e64e1d5feec210b55481dd4  libstdc++-v3/testsuite/30_threads/timed_mutex/native_handle/1.cc
! 13be454f27ce4c7652aae6d551b8e817  libstdc++-v3/testsuite/30_threads/timed_mutex/native_handle/typesizes.cc
! ba7215aa3f282c7407f0a1b6d5db033b  libstdc++-v3/testsuite/30_threads/timed_mutex/requirements/standard_layout.cc
! 118b25a6772306dbf6ff8b7b0b660fb7  libstdc++-v3/testsuite/30_threads/timed_mutex/requirements/typedefs.cc
! dde9d6cd3d1e42d784cd58fe70f1b2d2  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock/1.cc
! 858ee934ed9c255f2045294fe811a38f  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock/2.cc
! ecff6980348c082cef4add392c4a91af  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/1.cc
! e54c0141cd4396eb45ff47eac53e3438  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/2.cc
! f9468aff6becdd506b531f1e612e2db8  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/3.cc
! dde9d6cd3d1e42d784cd58fe70f1b2d2  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/1.cc
! 858ee934ed9c255f2045294fe811a38f  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/2.cc
! 7a6387ccafb690363b99590c4bba1c62  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/3.cc
! 097b882e65100df8124b5cf2bd741916  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/4.cc
! 1ac8e3e48555ebf220dc0d688bb13f01  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/57641.cc
! b13f3bd9cb6d226367292353f090a006  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc
! 09294ae5a8339ffbd2ee4546b11dc733  libstdc++-v3/testsuite/30_threads/timed_mutex/unlock/1.cc
! 105c2b302f9e344e7b1b8ca8ac6a6fc3  libstdc++-v3/testsuite/30_threads/timed_mutex/unlock/2.cc
! b9ee74443f8963e754e598fa1e815aad  libstdc++-v3/testsuite/30_threads/try_lock/1.cc
! 970e6b058352ad616ef70eee6dd4d063  libstdc++-v3/testsuite/30_threads/try_lock/2.cc
! 55368ab83010532be2ab32501751e47a  libstdc++-v3/testsuite/30_threads/try_lock/3.cc
! c3e9c6a6501fbf738b67484f26c72c62  libstdc++-v3/testsuite/30_threads/try_lock/4.cc
! f40549c84d6560460f16b344c7776229  libstdc++-v3/testsuite/30_threads/unique_lock/cons/1.cc
! 032f57901d1ec1a0ae46c19e14548270  libstdc++-v3/testsuite/30_threads/unique_lock/cons/2.cc
! 44c4851f5a414207aed4476ea383f6e3  libstdc++-v3/testsuite/30_threads/unique_lock/cons/3.cc
! 52016338818ea898ad4f1ab8647c79a1  libstdc++-v3/testsuite/30_threads/unique_lock/cons/4.cc
! d5be32fd0b90f4e7f8e246b2a70e9ca0  libstdc++-v3/testsuite/30_threads/unique_lock/cons/5.cc
! b8779e7166e4d380e6ac1bf78af088cd  libstdc++-v3/testsuite/30_threads/unique_lock/cons/6.cc
! a3788298e970cfa81bcec85ea6ceee77  libstdc++-v3/testsuite/30_threads/unique_lock/cons/60497.cc
! bc7714c6ed9991a68db0ebb6f8f2aa9f  libstdc++-v3/testsuite/30_threads/unique_lock/cons/deduction.cc
! c22eda86c51def9a370708cc7cfbb29a  libstdc++-v3/testsuite/30_threads/unique_lock/locking/1.cc
! 3113dc12c8745218530a4a02b3e8e486  libstdc++-v3/testsuite/30_threads/unique_lock/locking/2.cc
! b010845d56bb18b922dcd76e3920694e  libstdc++-v3/testsuite/30_threads/unique_lock/locking/3.cc
! ca22686bc09fccdc6b4ef09301259a6a  libstdc++-v3/testsuite/30_threads/unique_lock/locking/4.cc
! 23a96dc80f713ddced388dc348d18fd4  libstdc++-v3/testsuite/30_threads/unique_lock/locking/clock_neg.cc
! 311d36e025ca292b64895bde53b35122  libstdc++-v3/testsuite/30_threads/unique_lock/modifiers/1.cc
! d1977e0109da91e7d5c25f7ca08f9dd0  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/explicit_instantiation.cc
! e064c34ae58acd8fd97b6cc6ea0f2111  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/typedefs.cc
! 71b97c0132a8da3ca117912893e42481  libstdc++-v3/testsuite/Makefile.am
! 23179c0a172229cb399ddfda5f52db2e  libstdc++-v3/testsuite/Makefile.in
! f9a8eda494c0f4c9cecfc4db2fa672c2  libstdc++-v3/testsuite/abi/30586.cc
! 34b7fd159b08a5f3d185e978228681f3  libstdc++-v3/testsuite/abi/cxx_runtime_only_linkage.cc
! 95560dce4ba8ff20b15af0aba48b2360  libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc
! 3fe7af75ee27a85c5027930f8900905b  libstdc++-v3/testsuite/abi/demangle/abi_examples/02.cc
! 3b0903a15250ff30c8ac17b38d651fcd  libstdc++-v3/testsuite/abi/demangle/abi_examples/03.cc
! 3e3f360af65b04ec26e3fa51f0d0b2e6  libstdc++-v3/testsuite/abi/demangle/abi_examples/04.cc
! a105056e30aae43f11fff2d077b2b847  libstdc++-v3/testsuite/abi/demangle/abi_examples/05.cc
! bd4f41636ecb62034a65b06dc2297f41  libstdc++-v3/testsuite/abi/demangle/abi_examples/06.cc
! 841737d316fe1500ca4323e1b4bd0d8c  libstdc++-v3/testsuite/abi/demangle/abi_examples/07.cc
! ba4fecf5e111f9580be5fc6cf140da6c  libstdc++-v3/testsuite/abi/demangle/abi_examples/08.cc
! b2e12d1b5df176b7205b30b42e4ec651  libstdc++-v3/testsuite/abi/demangle/abi_examples/09.cc
! c61a07de22a5c43558a92cbbb6f94be2  libstdc++-v3/testsuite/abi/demangle/abi_examples/10.cc
! 673381826e99f85826f6016afe9a6598  libstdc++-v3/testsuite/abi/demangle/abi_examples/11.cc
! 4245a2a0768a3072b19e14623fa4d570  libstdc++-v3/testsuite/abi/demangle/abi_examples/12.cc
! 433ba62c0a60588d07e64a1306558945  libstdc++-v3/testsuite/abi/demangle/abi_examples/13.cc
! f70a74a80ab59b39cd866a68369a0074  libstdc++-v3/testsuite/abi/demangle/abi_examples/14.cc
! 150cfbe71f07254fc85a49c534d584f1  libstdc++-v3/testsuite/abi/demangle/abi_examples/15.cc
! a43e63a6d9909a5dadfce66203e23283  libstdc++-v3/testsuite/abi/demangle/abi_examples/16.cc
! 99fa8a9c9e890fe00a284d2461486c52  libstdc++-v3/testsuite/abi/demangle/abi_examples/17.cc
! ca8708e5c13a5b973aeabb71b695f9e1  libstdc++-v3/testsuite/abi/demangle/abi_examples/18.cc
! db2bf8725e9cc6b0675e055516278e8c  libstdc++-v3/testsuite/abi/demangle/abi_examples/19.cc
! ce0e5cef3f29509fd8fa42d0fb6ad9bc  libstdc++-v3/testsuite/abi/demangle/abi_examples/20.cc
! 12a8c83dc6c8e91f89a5ec70396f9025  libstdc++-v3/testsuite/abi/demangle/abi_examples/21.cc
! 12a8c83dc6c8e91f89a5ec70396f9025  libstdc++-v3/testsuite/abi/demangle/abi_examples/22.cc
! 7e0d5feceeed21949eab5c714c8d2178  libstdc++-v3/testsuite/abi/demangle/abi_examples/23.cc
! be7e88e7a14aa3b7c71e6cce777b8e4f  libstdc++-v3/testsuite/abi/demangle/abi_examples/24.cc
! 2b97c66d312b130a64dcc00d1cdbc065  libstdc++-v3/testsuite/abi/demangle/abi_examples/25.cc
! 8b642dca833013b641ef6cf5f08770a8  libstdc++-v3/testsuite/abi/demangle/abi_examples/26.cc
! 19f0d2d74be0b7ae8773feccd64e8de2  libstdc++-v3/testsuite/abi/demangle/abi_text/01.cc
! bab98a196ecd6639697e610cd77966e2  libstdc++-v3/testsuite/abi/demangle/abi_text/02.cc
! 7af75761c15fa3dd23327891dc4e1b4a  libstdc++-v3/testsuite/abi/demangle/abi_text/03.cc
! 1d5f6e88f4aca6fd0cfa0730aae475a2  libstdc++-v3/testsuite/abi/demangle/abi_text/04.cc
! c2e0457e5124b57707e3a82e1444780c  libstdc++-v3/testsuite/abi/demangle/abi_text/05.cc
! a048601b27dabf894e25bc88c5a2ae03  libstdc++-v3/testsuite/abi/demangle/abi_text/06.cc
! b726aff59719da0d39b9bf4e573db1c0  libstdc++-v3/testsuite/abi/demangle/abi_text/07.cc
! bc2f4242761c3a7a828a47dcddce7814  libstdc++-v3/testsuite/abi/demangle/abi_text/08.cc
! 32cd1e9b88a8376552dcb17a6d55bbdd  libstdc++-v3/testsuite/abi/demangle/abi_text/09.cc
! 2818b3ff72ed00ad01c4bf02bd5a8434  libstdc++-v3/testsuite/abi/demangle/abi_text/10.cc
! 03beb6a42800fa8ed652d412540702c6  libstdc++-v3/testsuite/abi/demangle/abi_text/11.cc
! b4087e8d9bcf2a2979f3ddde8845ace2  libstdc++-v3/testsuite/abi/demangle/abi_text/12.cc
! a451b070623a77534e565c65e1f36d5c  libstdc++-v3/testsuite/abi/demangle/abi_text/13.cc
! 712c269aadafaf7d5ba04ca701cf4958  libstdc++-v3/testsuite/abi/demangle/abi_text/14.cc
! 8c19f2a5c80fa2c171e47450833204b9  libstdc++-v3/testsuite/abi/demangle/cxx0x/rref.cc
! 5b299b0af3290995ac8f6dfcdaeb6a67  libstdc++-v3/testsuite/abi/demangle/regression/3111-1.cc
! 0911b995d27c6b642b5839d7eeb88e0c  libstdc++-v3/testsuite/abi/demangle/regression/3111-2.cc
! 038e98d67970e7ab72c695a6dc3290b1  libstdc++-v3/testsuite/abi/demangle/regression/7986-01.cc
! 22e0863a35e46b7406824c3f8512d5eb  libstdc++-v3/testsuite/abi/demangle/regression/7986-02.cc
! 4d9df817149e9f6b3380996dbea2b1b0  libstdc++-v3/testsuite/abi/demangle/regression/7986-03.cc
! e0d440cdd49ab1775c6f05599207dc78  libstdc++-v3/testsuite/abi/demangle/regression/7986-04.cc
! 31d67e4689666b8ab01c399c0b5c4192  libstdc++-v3/testsuite/abi/demangle/regression/7986-05.cc
! 74019bef07ae77f963fe77f610625562  libstdc++-v3/testsuite/abi/demangle/regression/7986-06.cc
! c83c7e0bce2da19321ba36733c0f8f73  libstdc++-v3/testsuite/abi/demangle/regression/7986-07.cc
! a840cf0e269aa041fc9571c438f64de0  libstdc++-v3/testsuite/abi/demangle/regression/7986-08.cc
! 68ddc711df76f46a89ad0c7e10551c5d  libstdc++-v3/testsuite/abi/demangle/regression/7986-09.cc
! 2996dd1b09a713a0389836d61eea97d8  libstdc++-v3/testsuite/abi/demangle/regression/7986-10.cc
! f09a3fcbf2d32b9be0d27b7e9e0e3028  libstdc++-v3/testsuite/abi/demangle/regression/7986-11.cc
! 837f87192e39a22f7e958c57ff7f6f8c  libstdc++-v3/testsuite/abi/demangle/regression/7986-12.cc
! d73e15e66c400a6ec4dd1d654b09c57d  libstdc++-v3/testsuite/abi/demangle/regression/7986.cc
! cd7f9efff53f0c2ee6aa9ebd64466edd  libstdc++-v3/testsuite/abi/demangle/regression/8897.cc
! 9014718be99807f743edd1678bf37e61  libstdc++-v3/testsuite/abi/demangle/regression/cw-01.cc
! ebe26cafc1544cb78d272dca12d05024  libstdc++-v3/testsuite/abi/demangle/regression/cw-02.cc
! 2312c6243af25ace67747c9c1b0e6188  libstdc++-v3/testsuite/abi/demangle/regression/cw-03.cc
! d8454c01e524783335e13074103218d5  libstdc++-v3/testsuite/abi/demangle/regression/cw-04.cc
! 022507f3b8fcfdf80b699e73e49e97d5  libstdc++-v3/testsuite/abi/demangle/regression/cw-05.cc
! 4cbfa7042123e7b963bf7875e750986d  libstdc++-v3/testsuite/abi/demangle/regression/cw-06.cc
! 6c49282e15a7ce91f167d2b5eef3a935  libstdc++-v3/testsuite/abi/demangle/regression/cw-07.cc
! cbfcf279e7570017be364ab1ed4baf94  libstdc++-v3/testsuite/abi/demangle/regression/cw-08.cc
! dd3f539addffe071d6d4e37afa4e5201  libstdc++-v3/testsuite/abi/demangle/regression/cw-09.cc
! a3a2791556a8cf2f71ee24fe7d91166f  libstdc++-v3/testsuite/abi/demangle/regression/cw-10.cc
! ff81711471eb315a36dd8c23b5eb22e5  libstdc++-v3/testsuite/abi/demangle/regression/cw-11.cc
! 80034451bff1424176dbf11afd56d245  libstdc++-v3/testsuite/abi/demangle/regression/cw-12.cc
! 2b51fe2efc0bced78ead1b8038ea2f65  libstdc++-v3/testsuite/abi/demangle/regression/cw-13.cc
! 8a97c11b3cc73808dd99afa683c2ce91  libstdc++-v3/testsuite/abi/demangle/regression/cw-14.cc
! 31b6befa469292ba0be034b1d52c0ed9  libstdc++-v3/testsuite/abi/demangle/regression/cw-15.cc
! afd77d10bd362897ea18e18f3f39db08  libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc
! f73d7239f27dd8e2f6076b6f161529ae  libstdc++-v3/testsuite/abi/demangle/regression/old.cc
! 738ec97deea6c3f19e6987c87713de20  libstdc++-v3/testsuite/abi/header_cxxabi.c
  ab0a5ca4ddac86490afd9342d4868589  libstdc++-v3/testsuite/abi/pr42230.cc
! 1cd3cb3c1099c1a86fd78d3f9276ef3d  libstdc++-v3/testsuite/backward/11460.cc
! 1b4c7d4297d04b9fa578d94609f9f85f  libstdc++-v3/testsuite/backward/hash_map/1.cc
! 762bcb2435e09ccd9a2143dd1e4cb1ef  libstdc++-v3/testsuite/backward/hash_map/14648.cc
! a59b63358856eab11b93cb8a5c8ea2d7  libstdc++-v3/testsuite/backward/hash_map/23528.cc
! 05c6ed79d3e813a18bc2f67bfa34bb3a  libstdc++-v3/testsuite/backward/hash_map/25896.cc
! afb6be1193433ee92afd291439acd255  libstdc++-v3/testsuite/backward/hash_map/requirements/explicit_instantiation.cc
! ec26199b69e97329f8bd007b681a9d2d  libstdc++-v3/testsuite/backward/hash_set/1.cc
! c5380b42f01ed16828e86bb4ef44ac6d  libstdc++-v3/testsuite/backward/hash_set/25896.cc
  2c091597008357e678007f407f299a24  libstdc++-v3/testsuite/backward/hash_set/49060.cc
! 7f091101fa0ed6244b4c4904760925f9  libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc
! 9c034ea7b079b9d2156d4149f0ecac79  libstdc++-v3/testsuite/backward/hash_set/requirements/explicit_instantiation.cc
! b115e72b26615f97748f6a01c9c6e452  libstdc++-v3/testsuite/backward/strstream_members.cc
! c846feacdbd08c21a3f267425fd8aadf  libstdc++-v3/testsuite/backward/strstream_move.cc
! 3e00969d6be2810bdcd80ad3506b7f86  libstdc++-v3/testsuite/config/default.exp
  e7df7cd2ca07f4f1ab415d457a6e1c13  libstdc++-v3/testsuite/data/cin_unget-1.txt
  d41d8cd98f00b204e9800998ecf8427e  libstdc++-v3/testsuite/data/filebuf_members-1.tst
  d41d8cd98f00b204e9800998ecf8427e  libstdc++-v3/testsuite/data/filebuf_members-1.txt
--- 103203,105720 ----
  b249e9c92416019fb04cda355da8f58b  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc
  6716b699a6dddb06f3fefd4fcb9fed85  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/set.cc
  e160587f287d7f1536f35ad3c122411c  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/sort.cc
! cdef66a7e2ecbc9ea27550394845590c  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-2.cc
! 6355aec935c98bba30abc83d10d9b5eb  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-3.cc
! 71210a4d047bed5715d045a344de5d07  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-4.cc
! 183fe0b0c57a533628acf58f1b3ce42b  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-5.cc
! acc2ee9211336ed60852227b68fb6a55  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test.cc
! aa2cf638123b45579f850ffcdb743434  libstdc++-v3/testsuite/25_algorithms/push_heap/complexity.cc
! e382c0a0b5541ec705fe24da12501806  libstdc++-v3/testsuite/25_algorithms/push_heap/constexpr.cc
! f9aa74af106760820e52e05e99f34142  libstdc++-v3/testsuite/25_algorithms/push_heap/requirements/explicit_instantiation/2.cc
! e5142ad0129d7618e10129920ecfa856  libstdc++-v3/testsuite/25_algorithms/push_heap/requirements/explicit_instantiation/pod.cc
! e703a2caf9a19697fb6b881519d02ddf  libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc
! a1aee581595c15caa9868408fd1c1e09  libstdc++-v3/testsuite/25_algorithms/random_shuffle/59603.cc
! 665b0c18f33f1ae73607838028e996d6  libstdc++-v3/testsuite/25_algorithms/random_shuffle/moveable.cc
! 357b7396d99f2341f62afecd98204f94  libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc
! 2c4dfd9d1290cc96219c45316139f4ff  libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc
! 51c273cc82d5c3bb41cbb3489cbc8b18  libstdc++-v3/testsuite/25_algorithms/remove/1.cc
! b746c740f51d7121ba4e3a6f6b0c537f  libstdc++-v3/testsuite/25_algorithms/remove/check_type.cc
! 5a1746f60e7e68220c1841555450bf31  libstdc++-v3/testsuite/25_algorithms/remove/constexpr.cc
! e645a1e9c9baf17380fb3f69fde1120d  libstdc++-v3/testsuite/25_algorithms/remove/constrained.cc
! 43b98b9ee3d474a073209e32646752ad  libstdc++-v3/testsuite/25_algorithms/remove/moveable.cc
! cc7eb0b5b6e412c7d70233918657ccb5  libstdc++-v3/testsuite/25_algorithms/remove/requirements/explicit_instantiation/2.cc
! c30e64dfee49711dcc00b8b2a50a8c21  libstdc++-v3/testsuite/25_algorithms/remove/requirements/explicit_instantiation/pod.cc
! 5c42bd9a9628f52053b8b47862718a59  libstdc++-v3/testsuite/25_algorithms/remove_copy/constexpr.cc
! 0825e6999c3b9acb9e4c8c04e68a3ca7  libstdc++-v3/testsuite/25_algorithms/remove_copy/constrained.cc
! c95f20c579fb1cbea6e458fea3cfb9b4  libstdc++-v3/testsuite/25_algorithms/remove_copy/requirements/explicit_instantiation/2.cc
! 2cc843322bd0c2caaa20f116a71fd28b  libstdc++-v3/testsuite/25_algorithms/remove_copy/requirements/explicit_instantiation/pod.cc
! 347454a404669a93beadf724fff746c5  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/check_type.cc
! 357a8b58d6dc49bb5588fcf535041619  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/constexpr.cc
! 6b9ac40ec502d82d4003eebfdce85a58  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/constrained.cc
! 78546e6e4d363dff682a040a54f888f6  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/2.cc
! 68ede50549ac3e0edd86fc67700c88d6  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/pod.cc
! 39990e433e6691e2c271a814874c0119  libstdc++-v3/testsuite/25_algorithms/remove_if/1.cc
! 85a604826f3cf96817c2d657248eaf79  libstdc++-v3/testsuite/25_algorithms/remove_if/check_type.cc
! f38b9597ae726c6f793bf16a192c67b0  libstdc++-v3/testsuite/25_algorithms/remove_if/constexpr.cc
! 140127ed096cfe963c4ca32e21a4b2d9  libstdc++-v3/testsuite/25_algorithms/remove_if/constrained.cc
! 261479190941c1dceb33c779ca629b5c  libstdc++-v3/testsuite/25_algorithms/remove_if/moveable.cc
! e63b444a156c9717f87c88880d6061fb  libstdc++-v3/testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/2.cc
! 4a8809368db0c85e29448fc589aafc38  libstdc++-v3/testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/pod.cc
! bc0c76817ef509c9b3853fb5e07b7d99  libstdc++-v3/testsuite/25_algorithms/replace/1.cc
! bdb98aefe29701c89745e13920078b5b  libstdc++-v3/testsuite/25_algorithms/replace/check_type.cc
! f53f6fed2f3487ab790f1c6b35ef4c68  libstdc++-v3/testsuite/25_algorithms/replace/constrained.cc
! e4f3562d2517f00d48c5f1903c49b118  libstdc++-v3/testsuite/25_algorithms/replace/requirements/explicit_instantiation/2.cc
! 5b4b48bd0b876e331a57f46abbeea485  libstdc++-v3/testsuite/25_algorithms/replace/requirements/explicit_instantiation/pod.cc
! 9b4f8e99a159ec7c363cc7cb76a6aea3  libstdc++-v3/testsuite/25_algorithms/replace_copy/1.cc
! 67368ae4beab11c62e4c4a4963f8294b  libstdc++-v3/testsuite/25_algorithms/replace_copy/check_type.cc
! 6cad4a32d56caf1a225d2682102169c8  libstdc++-v3/testsuite/25_algorithms/replace_copy/constexpr.cc
! 00ba77d52e66a23251b109303ab3f18e  libstdc++-v3/testsuite/25_algorithms/replace_copy/constrained.cc
! 88a69173e6736602422436a52ed3c9bd  libstdc++-v3/testsuite/25_algorithms/replace_copy/requirements/explicit_instantiation/2.cc
! 76c51c61c75ff7ace710358dd0d85cc0  libstdc++-v3/testsuite/25_algorithms/replace_copy/requirements/explicit_instantiation/pod.cc
! 10059a3fa065c36012c1b7255743ad14  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/1.cc
! 23ed782de8f9ceb58643a9e7de0cc4bf  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/check_type.cc
! 6d1d135134a47b4e7fdaf41c259eae3c  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/constexpr.cc
! 956c5c68e22456e7eb9bf028552409d5  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/constrained.cc
! 82eadbb1b3a0a5f6f0ccea3616bfa0b8  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/2.cc
! 3a111d1edd629d8401abc04ff9bf6792  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/pod.cc
! f4ceb67c59be4b369c8000315174bb11  libstdc++-v3/testsuite/25_algorithms/replace_if/1.cc
! cfc2f8ac927739646b1190fa312eff6c  libstdc++-v3/testsuite/25_algorithms/replace_if/check_type.cc
! 582bf2edd896df950e7e5f20a447a937  libstdc++-v3/testsuite/25_algorithms/replace_if/constexpr.cc
! 2d0a8c6ff47058b94cb0a8057cd51426  libstdc++-v3/testsuite/25_algorithms/replace_if/constrained.cc
! caac6aefddfbf76a24be5507370257d0  libstdc++-v3/testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/2.cc
! 8dbc1d843b0256c1a5d8190f85d887cc  libstdc++-v3/testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/pod.cc
  36f40bd4fda4eb8bb7b8c7178baddcb8  libstdc++-v3/testsuite/25_algorithms/reverse/constexpr.cc
! 5f4b6379bce7c1ecd821a72862cfac92  libstdc++-v3/testsuite/25_algorithms/reverse/constrained.cc
! 56909726754aad5cbd876aeee4b7f025  libstdc++-v3/testsuite/25_algorithms/reverse/moveable.cc
! 795bca5bb3ff2b937f5ec5fd2ff3e95c  libstdc++-v3/testsuite/25_algorithms/reverse/requirements/explicit_instantiation/2.cc
! 4cd0660489c92b95b0474b3dc1c568a1  libstdc++-v3/testsuite/25_algorithms/reverse/requirements/explicit_instantiation/pod.cc
! ad535923bfc460dcc3d29fcf19fa369b  libstdc++-v3/testsuite/25_algorithms/reverse_copy/constexpr.cc
! 1dedb721fc00d9f9d9ab9d671a974004  libstdc++-v3/testsuite/25_algorithms/reverse_copy/constrained.cc
! 4d8f694fee3cdad70f7fbf9a50e3d52b  libstdc++-v3/testsuite/25_algorithms/reverse_copy/explicit_instantiation/2.cc
! f9ea5604175eca20dce3f547ceb07d7b  libstdc++-v3/testsuite/25_algorithms/reverse_copy/explicit_instantiation/pod.cc
! 75c1d6a8139e19e43e96c9fd16bc4892  libstdc++-v3/testsuite/25_algorithms/rotate/1.cc
! 11cde29904c9a705eae6271345859cac  libstdc++-v3/testsuite/25_algorithms/rotate/90920.cc
! cc2589becfcab0788337afd8cd879875  libstdc++-v3/testsuite/25_algorithms/rotate/check_type.cc
  6e81a6e87bcee591a45269b5ef7edde0  libstdc++-v3/testsuite/25_algorithms/rotate/constexpr.cc
! 9b5ef7c907b2ead34984b92b5ba7a950  libstdc++-v3/testsuite/25_algorithms/rotate/constrained.cc
! 5134c7ddc207c04c0ffadfae67d22033  libstdc++-v3/testsuite/25_algorithms/rotate/dr488.cc
! 73e4a1a14c70144a5463a804ce7fd488  libstdc++-v3/testsuite/25_algorithms/rotate/moveable.cc
! 7da749f38b8bfd2b6f9e082b032282ca  libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc
! 6c2b4b455b27a3bf05d5ec38c7654f7b  libstdc++-v3/testsuite/25_algorithms/rotate/requirements/explicit_instantiation/2.cc
! 5cd04590e89e8bbbbaad9e1f8b9ac147  libstdc++-v3/testsuite/25_algorithms/rotate/requirements/explicit_instantiation/pod.cc
! e54c835a33470af85cb84370c50e3edf  libstdc++-v3/testsuite/25_algorithms/rotate/rotate.cc
! 469eafca52ffd828fb4df213f45d075b  libstdc++-v3/testsuite/25_algorithms/rotate_copy/constexpr.cc
! c02cd0714e2d67802df87b143a2b1633  libstdc++-v3/testsuite/25_algorithms/rotate_copy/constrained.cc
! 1f77dc10b1d9f21b15d60a7f2fef0b70  libstdc++-v3/testsuite/25_algorithms/rotate_copy/requirements/explicit_instantiation/2.cc
! 802ca63b6370912ff42b456c64ffcfc3  libstdc++-v3/testsuite/25_algorithms/rotate_copy/requirements/explicit_instantiation/pod.cc
! 22853b144e112bf166b3e09c91e9b846  libstdc++-v3/testsuite/25_algorithms/sample/1.cc
! f594c6b1543b4f77153333288d76212e  libstdc++-v3/testsuite/25_algorithms/sample/2.cc
! cc330b3f115a6678024e91b41fcb7498  libstdc++-v3/testsuite/25_algorithms/sample/3.cc
! d43b2e511d86a283de60f504393d488c  libstdc++-v3/testsuite/25_algorithms/sample/81221.cc
! 9659743c8c4ee8b3adb6dc579caba79c  libstdc++-v3/testsuite/25_algorithms/sample/constrained.cc
! 99b38e0d63f3c214fb34aabf92861ecf  libstdc++-v3/testsuite/25_algorithms/search/1.cc
! 5597f4d68765e49f6da0d42b81b87ada  libstdc++-v3/testsuite/25_algorithms/search/78346.cc
! d265d0614f1eaf077d24a5fbe8ff0428  libstdc++-v3/testsuite/25_algorithms/search/check_type.cc
! 14a11eaa0bf5ebbb0299ed46d93d237b  libstdc++-v3/testsuite/25_algorithms/search/constexpr.cc
! adb0f5c6244380fa9fa5bdcf26cf5d33  libstdc++-v3/testsuite/25_algorithms/search/constrained.cc
! 23fe34aad19d31ff7dd2bd3045545556  libstdc++-v3/testsuite/25_algorithms/search/requirements/explicit_instantiation/2.cc
! 1ad71461068c2504e4ed0402ee53fb85  libstdc++-v3/testsuite/25_algorithms/search/requirements/explicit_instantiation/pod.cc
! 3a7c61e665c3181ac2ec38f54819de61  libstdc++-v3/testsuite/25_algorithms/search/searcher.cc
! 8f08b4b091e322bc69fcc52693d8b8c2  libstdc++-v3/testsuite/25_algorithms/search_n/11400.cc
! caa7585bd5020e717f12c629310bed48  libstdc++-v3/testsuite/25_algorithms/search_n/58358.cc
! 3a5ac59c16cbd0ef0b6f742aa66e0934  libstdc++-v3/testsuite/25_algorithms/search_n/97828.cc
! 4920d335fdf43ff5b5208fb97c57f686  libstdc++-v3/testsuite/25_algorithms/search_n/check_type.cc
! 6248630a5363023e8a40415d1808a75b  libstdc++-v3/testsuite/25_algorithms/search_n/constexpr.cc
! 7cedcd42aaa4a61ffdeaa8f7e15ca26e  libstdc++-v3/testsuite/25_algorithms/search_n/constrained.cc
! c100de43165f7eab5a5b5c155ff8b14d  libstdc++-v3/testsuite/25_algorithms/search_n/iterator.cc
! 82017f480609a11d16eafbf77cdcbf86  libstdc++-v3/testsuite/25_algorithms/search_n/requirements/explicit_instantiation/2.cc
! 873c458232a8c54635b14a93139997d2  libstdc++-v3/testsuite/25_algorithms/search_n/requirements/explicit_instantiation/pod.cc
! c1e311dbf0d46f384acbe1f96416fa54  libstdc++-v3/testsuite/25_algorithms/set_difference/1.cc
! edf9decac09c76a82889809b01319ce0  libstdc++-v3/testsuite/25_algorithms/set_difference/35541.cc
! 3198757b33a199dff2f258480a40f511  libstdc++-v3/testsuite/25_algorithms/set_difference/check_type.cc
! da2c9a65e9343a3170649449448ac7bb  libstdc++-v3/testsuite/25_algorithms/set_difference/constexpr.cc
! fd86cf93bb973150eb1b2fce172f4536  libstdc++-v3/testsuite/25_algorithms/set_difference/constrained.cc
! 5eb1070cb0e9116e8f0d5b65e6b4cbbb  libstdc++-v3/testsuite/25_algorithms/set_difference/requirements/explicit_instantiation/2.cc
! 7bfc58f3235f00312644640a43b4225e  libstdc++-v3/testsuite/25_algorithms/set_difference/requirements/explicit_instantiation/pod.cc
! 29dc8941a9850fa48b8bdef36e783f15  libstdc++-v3/testsuite/25_algorithms/set_intersection/1.cc
! 47198eab960b42ab1801dc9b52f06d1c  libstdc++-v3/testsuite/25_algorithms/set_intersection/34730.cc
! 00b6d897bca97503d590cc5e5c975e97  libstdc++-v3/testsuite/25_algorithms/set_intersection/check_type.cc
! 4641a23a1e41a6477b6b40fafe2c2958  libstdc++-v3/testsuite/25_algorithms/set_intersection/constexpr.cc
! 6bc05b08540c1f612d9a0f7ba6731ed9  libstdc++-v3/testsuite/25_algorithms/set_intersection/constrained.cc
! 0d3dfe3de18c0fe73894bdd8df2105b9  libstdc++-v3/testsuite/25_algorithms/set_intersection/requirements/explicit_instantiation/2.cc
! 26a5d23b69aed1a4040c84817563d4d0  libstdc++-v3/testsuite/25_algorithms/set_intersection/requirements/explicit_instantiation/pod.cc
! cbafa2e0f97070151a4eecda2f543d96  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/1.cc
! bc713f928ff2d8b1317353b6fb819096  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/check_type.cc
! 712d166766ac4ba3e4a35703fca03971  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/constexpr.cc
! ae052c1e2f08553fb348da33b837c114  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/constrained.cc
! 2da9b1c3694185866caecd9453429a1c  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/requirements/explicit_instantiation/2.cc
! f39a043c02876f371ec2a8c15156d116  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/requirements/explicit_instantiation/pod.cc
! 789bc0df46b05d1a3dc7a639f3583cff  libstdc++-v3/testsuite/25_algorithms/set_union/1.cc
! 9963bdfca94fded59680d561cf1cc2fb  libstdc++-v3/testsuite/25_algorithms/set_union/check_type.cc
! 7ec62b3e0d5a60905caa358a19d9700b  libstdc++-v3/testsuite/25_algorithms/set_union/constexpr.cc
! 2eb03f24e2064a2aca59613523792198  libstdc++-v3/testsuite/25_algorithms/set_union/constrained.cc
! da8e31d4aa55b535b1e8509c7a1e0514  libstdc++-v3/testsuite/25_algorithms/set_union/requirements/explicit_instantiation/2.cc
! b37a0badbda8e413deb39fa54f57d5ef  libstdc++-v3/testsuite/25_algorithms/set_union/requirements/explicit_instantiation/pod.cc
! 6e06f945fa8aa71af89c0729799dac71  libstdc++-v3/testsuite/25_algorithms/shift_left/1.cc
! 05d6815440e412c608c9a30df354b104  libstdc++-v3/testsuite/25_algorithms/shift_right/1.cc
! b3f9544da1365363d641b719129e1bd5  libstdc++-v3/testsuite/25_algorithms/shuffle/1.cc
! df1a3bad9a0691c9ae12a47c932935ad  libstdc++-v3/testsuite/25_algorithms/shuffle/constrained.cc
! 343f6b02f6da8d03be6f45a18f84f52d  libstdc++-v3/testsuite/25_algorithms/shuffle/requirements/explicit_instantiation/2.cc
! 0ae67daa1204cdd35153cd686671df37  libstdc++-v3/testsuite/25_algorithms/shuffle/requirements/explicit_instantiation/pod.cc
! 469775c20fee30f974440efd4c2a07f7  libstdc++-v3/testsuite/25_algorithms/sort/1.cc
! 7deab4baa92f9ab41085cca207346917  libstdc++-v3/testsuite/25_algorithms/sort/34095.cc
! 57db5b77a58abcf890f0b6eaa54ee540  libstdc++-v3/testsuite/25_algorithms/sort/34636.cc
! 1d0ee0dcd6b03427d0a1f48bfe152b80  libstdc++-v3/testsuite/25_algorithms/sort/35588.cc
! 69ec945c713fe8f7977a9221ee48ffc7  libstdc++-v3/testsuite/25_algorithms/sort/78991.cc
! 80674306c9f2fd4bff954693ed4f27b2  libstdc++-v3/testsuite/25_algorithms/sort/check_compare_by_value.cc
! fea3374377491f62c1b6dbc7c673ef96  libstdc++-v3/testsuite/25_algorithms/sort/constexpr.cc
! 6cf5808eb858f419e269ecf099adf177  libstdc++-v3/testsuite/25_algorithms/sort/constrained.cc
! c640b084b0831ccc7dbbb3c2b839d53b  libstdc++-v3/testsuite/25_algorithms/sort/moveable.cc
! c96d0ea364a335c31e6df3b63341d8ce  libstdc++-v3/testsuite/25_algorithms/sort/random_test.cc
! 9705af90607b0f6eb1422d0c035c35c3  libstdc++-v3/testsuite/25_algorithms/sort/requirements/explicit_instantiation/2.cc
! 8d405e4828d47b2f00bef20713a1633c  libstdc++-v3/testsuite/25_algorithms/sort/requirements/explicit_instantiation/pod.cc
! 038bf1f4cff1ae07dec093b0e2390dcc  libstdc++-v3/testsuite/25_algorithms/sort/vectorbool.cc
! f5b01b1ff1913bbe2e0e604f5b745402  libstdc++-v3/testsuite/25_algorithms/sort_heap/check_compare_by_value.cc
! 5548a73c39db7075190757188689bcd2  libstdc++-v3/testsuite/25_algorithms/sort_heap/complexity.cc
! b4f8c3549075551540d619053d7c646b  libstdc++-v3/testsuite/25_algorithms/sort_heap/constexpr.cc
! 0eb3a120446ef24f7041b4115cd4f165  libstdc++-v3/testsuite/25_algorithms/sort_heap/requirements/explicit_instantiation/2.cc
! 1a36ca041029e9c214e0fb242067fbba  libstdc++-v3/testsuite/25_algorithms/sort_heap/requirements/explicit_instantiation/pod.cc
! 50eba0a0b55628bfe923787aebf21252  libstdc++-v3/testsuite/25_algorithms/stable_partition/1.cc
! 596599825a7251c8204eb54f6a2def34  libstdc++-v3/testsuite/25_algorithms/stable_partition/constrained.cc
! 8671f742f008dd469f166de643d92fbe  libstdc++-v3/testsuite/25_algorithms/stable_partition/mem_check.cc
! dc88ec1982cea64f4e05d44c1753513c  libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc
! 11485fcddbffe3722cf584573d0e3fa3  libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc
! c5ea9e65458e14cd2064eb1439934ccf  libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc
! d4df17815e9c69e380a1900f5bce114c  libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc
! 4f63c4a70a69dd9f0601efcb84e2e9ed  libstdc++-v3/testsuite/25_algorithms/stable_sort/1.cc
! 7a6bc484ef994a7fb14449fe8c9daedb  libstdc++-v3/testsuite/25_algorithms/stable_sort/2.cc
! 29e6ba84a32fd1b8326e7c4de1032321  libstdc++-v3/testsuite/25_algorithms/stable_sort/3.cc
! 1bc1997580d8ec3208983c6c7e1f4053  libstdc++-v3/testsuite/25_algorithms/stable_sort/49559.cc
! a1f0874767a0bb8f69c0485be9dc0d71  libstdc++-v3/testsuite/25_algorithms/stable_sort/check_compare_by_value.cc
! d5b4ad8da5e95de8f18cb6f2ce4b0ce7  libstdc++-v3/testsuite/25_algorithms/stable_sort/check_type.cc
! 5d8d485363c25e43e5b6066d1ed3a8f8  libstdc++-v3/testsuite/25_algorithms/stable_sort/constrained.cc
! 3a2237396fbd2f6056f6ce48dea50b79  libstdc++-v3/testsuite/25_algorithms/stable_sort/mem_check.cc
! 2e1f4a94175698f7f91bcf97c33f76c7  libstdc++-v3/testsuite/25_algorithms/stable_sort/moveable.cc
! 0c4d0cdc84602d5d67060762633e24fb  libstdc++-v3/testsuite/25_algorithms/stable_sort/moveable2.cc
! 9259f005be49b75f321d6e4a8b9e37e7  libstdc++-v3/testsuite/25_algorithms/stable_sort/requirements/explicit_instantiation/2.cc
! f858b467f71294f0a19d89e9f6b7ab7b  libstdc++-v3/testsuite/25_algorithms/stable_sort/requirements/explicit_instantiation/pod.cc
! c3c2314c43af555e86aab8e3d9465a14  libstdc++-v3/testsuite/25_algorithms/swap/68877.cc
! 71c3ab58546b1c9def1a43069ded5ff7  libstdc++-v3/testsuite/25_algorithms/swap/constexpr.cc
! 8d280fd846c4aaafc1c6f2dcc2e22fe0  libstdc++-v3/testsuite/25_algorithms/swap/dr809.cc
! d0abf19fbcb6ff2a728416f9e642b4b0  libstdc++-v3/testsuite/25_algorithms/swap/noexcept.cc
! 3e8c1bc54d2276815a02dd193835ad5e  libstdc++-v3/testsuite/25_algorithms/swap/requirements/explicit_instantiation/2.cc
! 1014474c50a89a1d2202ebd6d77ab82c  libstdc++-v3/testsuite/25_algorithms/swap/requirements/explicit_instantiation/pod.cc
! 3dde41466a721ee0d137ac4e7896da07  libstdc++-v3/testsuite/25_algorithms/swap_ranges/1.cc
! d4b2c2097d261c9f92dee6f91c3d4878  libstdc++-v3/testsuite/25_algorithms/swap_ranges/check_type.cc
! f8fbcd10464bab847eac8092eebb8d96  libstdc++-v3/testsuite/25_algorithms/swap_ranges/constexpr.cc
! c0798313ab44f09a0e0fa02dceafa946  libstdc++-v3/testsuite/25_algorithms/swap_ranges/constrained.cc
! 65b50f3a0c759d6a54ffc555e46a90fc  libstdc++-v3/testsuite/25_algorithms/swap_ranges/moveable.cc
! 0fafef2f8de3ad59b0f5fff6f08ee466  libstdc++-v3/testsuite/25_algorithms/swap_ranges/requirements/explicit_instantiation/2.cc
! 32a1f55b202e87b07190e76125fd1348  libstdc++-v3/testsuite/25_algorithms/swap_ranges/requirements/explicit_instantiation/pod.cc
! 697d33810735703bf2e81312be52e309  libstdc++-v3/testsuite/25_algorithms/transform/constexpr.cc
! 4f3e8073d8207bcef43a45d2a39f453a  libstdc++-v3/testsuite/25_algorithms/transform/constrained.cc
! b705d4abc1b87078700dd70965010e9d  libstdc++-v3/testsuite/25_algorithms/transform/requirements/explicit_instantiation/2.cc
! 1d5716c65d18e05a01c9e92638b53c30  libstdc++-v3/testsuite/25_algorithms/transform/requirements/explicit_instantiation/pod.cc
! 928699325b2bd55ef0c298e3d9f92ae0  libstdc++-v3/testsuite/25_algorithms/unique/1.cc
! 913c2ec8bf684108ebc93011b0d69659  libstdc++-v3/testsuite/25_algorithms/unique/11480.cc
! c0482ca7b5b1c84280a1d7b04bdf0fbb  libstdc++-v3/testsuite/25_algorithms/unique/2.cc
! 35cae0a55f85700f1d0dfe2dd9865988  libstdc++-v3/testsuite/25_algorithms/unique/constexpr.cc
! d784b392abf2cdd46be8022ccadec9a8  libstdc++-v3/testsuite/25_algorithms/unique/constrained.cc
! 8d5e0b3679525f0ded75995109adffca  libstdc++-v3/testsuite/25_algorithms/unique/moveable.cc
! d9bc2986ed64b3316776541dc9629909  libstdc++-v3/testsuite/25_algorithms/unique/requirements/explicit_instantiation/2.cc
! ffecebbd7e0d5a957d7ab2aae85ae091  libstdc++-v3/testsuite/25_algorithms/unique/requirements/explicit_instantiation/pod.cc
! 145f03abfbea2f2e8a571f99cf9440fd  libstdc++-v3/testsuite/25_algorithms/unique_copy/1.cc
! 0f90bcd4239043452f7ae672684edbcd  libstdc++-v3/testsuite/25_algorithms/unique_copy/2.cc
! 2259b0969ae1b3cb85af5d3da6ec86e8  libstdc++-v3/testsuite/25_algorithms/unique_copy/26133.cc
! 5b54dca7565bec736e81c2d5007bdce4  libstdc++-v3/testsuite/25_algorithms/unique_copy/check_type.cc
! 376b78f6e0563c999a99f2f9e3fda694  libstdc++-v3/testsuite/25_algorithms/unique_copy/constexpr.cc
! e712e0c0079a12fa2d846f1dfca77a97  libstdc++-v3/testsuite/25_algorithms/unique_copy/constrained.cc
! c58103192e14bec81afabe1caca71907  libstdc++-v3/testsuite/25_algorithms/unique_copy/requirements/explicit_instantiation/2.cc
! ee7deee5c9ecdb96ca24874d0555a9ac  libstdc++-v3/testsuite/25_algorithms/unique_copy/requirements/explicit_instantiation/pod.cc
! e85db6e1b9ba7ee762003c8e94210e7b  libstdc++-v3/testsuite/25_algorithms/upper_bound/1.cc
! 05ea8db44ff7e8118794f8b334deea6e  libstdc++-v3/testsuite/25_algorithms/upper_bound/2.cc
! 0db5f0e5d50ffb51f70b8a5f4a7609a9  libstdc++-v3/testsuite/25_algorithms/upper_bound/33613.cc
! d7bdfcbb7fb9422ba118c56646532402  libstdc++-v3/testsuite/25_algorithms/upper_bound/check_type.cc
! ce924d1376d30067305244b55908cada  libstdc++-v3/testsuite/25_algorithms/upper_bound/constexpr.cc
! 25cb4b21256439a1f9f69f1035d2afe3  libstdc++-v3/testsuite/25_algorithms/upper_bound/constrained.cc
! 1f2a32b941b742042b89ed135b6d5ba2  libstdc++-v3/testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_neg.cc
! 0db1a7276043d024954c03faabf53f9b  libstdc++-v3/testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_pred_neg.cc
! be9242e729b3363822a5b913efa35f61  libstdc++-v3/testsuite/25_algorithms/upper_bound/debug/constexpr_valid_range_neg.cc
! 9bdcc5ca358bf6b76376000dd224451e  libstdc++-v3/testsuite/25_algorithms/upper_bound/debug/partitioned_neg.cc
! 2d58a1a83f3d1c156c665e5f1d2a6e10  libstdc++-v3/testsuite/25_algorithms/upper_bound/debug/partitioned_pred_neg.cc
! 67a099578623b3f176c14e74c8e7a4e2  libstdc++-v3/testsuite/25_algorithms/upper_bound/partitioned.cc
! 13fbdc73d1ffe7268b45ea05eba82000  libstdc++-v3/testsuite/25_algorithms/upper_bound/requirements/explicit_instantiation/2.cc
! 383bdba66ad2331033b3196f9a2cc37a  libstdc++-v3/testsuite/25_algorithms/upper_bound/requirements/explicit_instantiation/pod.cc
! 55f0586d47c8ecf214f8dba3a386b2ea  libstdc++-v3/testsuite/26_numerics/accumulate/1.cc
! 5ffea021a2bbaa54e4fbf6ba0a3c8d89  libstdc++-v3/testsuite/26_numerics/accumulate/48750.cc
! 9bb9933a5706ccb9813b4484146759d1  libstdc++-v3/testsuite/26_numerics/accumulate/constexpr.cc
! 4219323701b9baff5b1db531e21f0e9d  libstdc++-v3/testsuite/26_numerics/accumulate/lwg2055.cc
! 62c3f39d5b4701f21f95ebab92084462  libstdc++-v3/testsuite/26_numerics/accumulate/requirements/explicit_instantiation/2.cc
! d200b438cd4449a09f9c02216d78484b  libstdc++-v3/testsuite/26_numerics/accumulate/requirements/explicit_instantiation/pod.cc
! 97affa4fae7be80ccde6056df1261966  libstdc++-v3/testsuite/26_numerics/adjacent_difference/1.cc
! 67003249a4fca90ef2bc18aa9ada9e45  libstdc++-v3/testsuite/26_numerics/adjacent_difference/constexpr.cc
! 11003c01e27377b73f31127d8c1f91c2  libstdc++-v3/testsuite/26_numerics/adjacent_difference/lwg2055.cc
! 10fb53473b1eeeb631daa9cc8ce75c65  libstdc++-v3/testsuite/26_numerics/adjacent_difference/requirements/explicit_instantiation/2.cc
! 4b1e392a30b9eedc03d724df3ea1406a  libstdc++-v3/testsuite/26_numerics/adjacent_difference/requirements/explicit_instantiation/pod.cc
! c3daf66505f49b366e5a847ad6209e69  libstdc++-v3/testsuite/26_numerics/bit/bit.cast/bit_cast.cc
! e422aeec9141fb37d000e3c098fa5e49  libstdc++-v3/testsuite/26_numerics/bit/bit.cast/version.cc
! 98b086bb90a37bda0608b0683df69f67  libstdc++-v3/testsuite/26_numerics/bit/bit.count/countl_one.cc
! 996b5eca0500e0c55752c387c6ad487d  libstdc++-v3/testsuite/26_numerics/bit/bit.count/countl_zero.cc
! 0d0d4823126d8ed3e48028217aeef44d  libstdc++-v3/testsuite/26_numerics/bit/bit.count/countr_one.cc
! 83fab5197bf85cfd3c444ba76a142f33  libstdc++-v3/testsuite/26_numerics/bit/bit.count/countr_zero.cc
! 244aafe9c64ce335db48a4684e094d7e  libstdc++-v3/testsuite/26_numerics/bit/bit.count/popcount.cc
! 0b71913549d3f7ea2cc277b926f65d5e  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc
! 6840dabda70faa7939159cd77e668e7d  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc
! f6224f4a61fce964dab597e336c4dd2e  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc
! 4f8961437fbc77e4ed799ec439d5403f  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/bit_width.cc
! bed78553e874a2ea42169bdf1d491044  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc
! 93b697fa6ce6c9e817ed1e74d3d7e4b2  libstdc++-v3/testsuite/26_numerics/bit/bit.rotate/rotl.cc
! 6b5de003c64db4e9c24d6c4ca4a1e029  libstdc++-v3/testsuite/26_numerics/bit/bit.rotate/rotr.cc
! 34e26fec7d2d016a76308514640bd5c2  libstdc++-v3/testsuite/26_numerics/bit/header-2.cc
! c0657bf36442d70dd5d0c3712718a34c  libstdc++-v3/testsuite/26_numerics/bit/header.cc
! a1c3327dbcb5f8a9e454370ce4bedf3d  libstdc++-v3/testsuite/26_numerics/complex/1.cc
! 9b94e9966f52e9d91d3c5791bae4387f  libstdc++-v3/testsuite/26_numerics/complex/13450.cc
! fb8d2e6d45d61ab72fd57d1d2502c31f  libstdc++-v3/testsuite/26_numerics/complex/2.cc
! 56356e8cd335d6e18dcae152c0f56c34  libstdc++-v3/testsuite/26_numerics/complex/50880.cc
! 663e5f1c1a0a0f33aafca3e828fc76fc  libstdc++-v3/testsuite/26_numerics/complex/51083.cc
! e908a32a571115c1659dbd7807127bb8  libstdc++-v3/testsuite/26_numerics/complex/56111.cc
! af7877b96aa74cdfc7f025c671e3d6c2  libstdc++-v3/testsuite/26_numerics/complex/abi_tag.cc
! 1a8538ec4fac700629ee6b7962414512  libstdc++-v3/testsuite/26_numerics/complex/buggy_complex.cc
! 04ca817f9a480211d406bf54ad5b10ac  libstdc++-v3/testsuite/26_numerics/complex/c99.cc
! 2322942fd111c0b9f41c506840cc82c4  libstdc++-v3/testsuite/26_numerics/complex/comparison_operators/constexpr.cc
! 2aef00910e870f64b1a536417ec41f45  libstdc++-v3/testsuite/26_numerics/complex/comparison_operators/more_constexpr.cc
! 0fbf470751323c93b405cd575f2d3728  libstdc++-v3/testsuite/26_numerics/complex/cons/48760.cc
! 327058dea3993932917c12715a644334  libstdc++-v3/testsuite/26_numerics/complex/cons/48760_c++0x.cc
! 32141ec59e504b49b65c8349ba9c9c51  libstdc++-v3/testsuite/26_numerics/complex/cons/constexpr.cc
! 05b122ba86eaf7d27f78382425d05fdb  libstdc++-v3/testsuite/26_numerics/complex/cons/constexpr_primary.cc
! 8aa9fbd6795bf290e15a5028d3e3d513  libstdc++-v3/testsuite/26_numerics/complex/dr387_2.cc
! d410af4f48b2457a4aba6d5572515aab  libstdc++-v3/testsuite/26_numerics/complex/dr781.cc
! 2ab785dfd278dad47998c0c8d1507bc8  libstdc++-v3/testsuite/26_numerics/complex/dr844.cc
! d158c4228b08ed5e48a6590f8421ecf1  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/char/1.cc
! 275764f999efee1cfa78260eb0aa5346  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/char/dr2714.cc
! 5cc4937a2121c9e55eda35b7f8ab6874  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/wchar_t/1.cc
! 2e674c9c446b7fb1a73e19aed4ff80e9  libstdc++-v3/testsuite/26_numerics/complex/literals/types.cc
! dc0497efe0b28751848dfa68db5e13bf  libstdc++-v3/testsuite/26_numerics/complex/literals/values.cc
! 8b3aaee70fab28cb5a300554b8ba96d8  libstdc++-v3/testsuite/26_numerics/complex/operators/more_constexpr.cc
  906619ecf0877a7ff5302dd409c34714  libstdc++-v3/testsuite/26_numerics/complex/pow.cc
! 4f8a9a17cc9f23534e1f541f80313120  libstdc++-v3/testsuite/26_numerics/complex/proj.cc
! 9668daf0094a7981ce7c8104fa738953  libstdc++-v3/testsuite/26_numerics/complex/requirements/constexpr_functions.cc
! 17d6359a9ab80b973499c5ecb679d7ea  libstdc++-v3/testsuite/26_numerics/complex/requirements/more_constexpr.cc
! 5668582f0e5f7262003ff03f3a26f317  libstdc++-v3/testsuite/26_numerics/complex/value_operations/1.cc
! 0bea13288691faad2d7e765f836096f2  libstdc++-v3/testsuite/26_numerics/complex/value_operations/constexpr.cc
! 88eedc07e7e79f144837bb58210c0962  libstdc++-v3/testsuite/26_numerics/complex/value_operations/constexpr2.cc
! f9158751478d4248fc484baa0492f29c  libstdc++-v3/testsuite/26_numerics/complex/value_operations/dr387.cc
! fba5c9b61da9b76f8b9ae08c56640200  libstdc++-v3/testsuite/26_numerics/complex/value_operations/more_constexpr.cc
! 81d9093e0ae12a352e97c388bbe2b44a  libstdc++-v3/testsuite/26_numerics/complex/value_operations/pr88341.cc
! 700cd1e568abb76249c9e8438b9481df  libstdc++-v3/testsuite/26_numerics/endian/1.cc
! d6d738daa2fb7536d325bbab3bb41381  libstdc++-v3/testsuite/26_numerics/endian/2.cc
! 55ad6388b071810a1bba70cef1028b70  libstdc++-v3/testsuite/26_numerics/endian/3.cc
! 47a8a5e12346f7d0e07e9ae5763f82e7  libstdc++-v3/testsuite/26_numerics/endian/4.cc
! c79ce2aa727d01cf189c0238f6111a5e  libstdc++-v3/testsuite/26_numerics/exclusive_scan/1.cc
! 18d6fd29ad28a49bce4185886e09e6b0  libstdc++-v3/testsuite/26_numerics/exclusive_scan/constexpr.cc
! 035f097a4cbac827b34920eee0ee8bf6  libstdc++-v3/testsuite/26_numerics/gcd/1.cc
! 8f690c236f5d680132daa280eab779da  libstdc++-v3/testsuite/26_numerics/gcd/2.cc
! e1eef8dcd54b6f8f7d0c889513032a89  libstdc++-v3/testsuite/26_numerics/gcd/92978.cc
! 329b7b92cde165db06cd85ad989c4aa2  libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc
! 78a1257e886c15e45707eb67714de1ea  libstdc++-v3/testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc
! 87fa325024fefcb4e09d2fc2dd6cd0e4  libstdc++-v3/testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc
! ee5cb68763f5316db942768de7f63885  libstdc++-v3/testsuite/26_numerics/headers/cfenv/types_std_c++0x.cc
! db871729fe555012cfc831b30f8ce38f  libstdc++-v3/testsuite/26_numerics/headers/cmath/14608.cc
! cdc5b7fd8de49b5fe64525e38d3ad862  libstdc++-v3/testsuite/26_numerics/headers/cmath/19322.cc
! 597d5ea9e149658d7c66eecc55f4383b  libstdc++-v3/testsuite/26_numerics/headers/cmath/25913.cc
! 7f80368a20d8512d6a06c825c1d78049  libstdc++-v3/testsuite/26_numerics/headers/cmath/37582.cc
! 05dfd0641bdfa485f76e7862ed70d3d5  libstdc++-v3/testsuite/26_numerics/headers/cmath/48891.cc
! f160db7b2050650cb5b44c77570ffdff  libstdc++-v3/testsuite/26_numerics/headers/cmath/51083.cc
! 6e1b2c8390272ca951cb082121cfa37a  libstdc++-v3/testsuite/26_numerics/headers/cmath/53503.cc
! 8bc4535cba7b37418d8d5ceac5ae7f77  libstdc++-v3/testsuite/26_numerics/headers/cmath/60401.cc
! 9df939f7b5cfd12879e7dfb9453a3782  libstdc++-v3/testsuite/26_numerics/headers/cmath/60637.cc
! 854d4c6195bd5b9902cdb6c6a91fc8a7  libstdc++-v3/testsuite/26_numerics/headers/cmath/82644.cc
! 1da105626ac42ce04647f2cee86ac80a  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++11.cc
! 8002edabda360bf7ba0e95611be63e64  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++98.cc
! b29d44c20b404be63e815a6c6db8bdf3  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc
! 6badb4cb6fca7c7a01b6ef23b35f37f2  libstdc++-v3/testsuite/26_numerics/headers/cmath/c_math.cc
! 8a024ec5b9cacac44475cdc609da79d1  libstdc++-v3/testsuite/26_numerics/headers/cmath/c_math_dynamic.cc
! 8294c9bd24374746c723b0f2ffcf1ff2  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr2192.cc
! ff29cf6bc85acfc3102831f925a8ce29  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr2192_neg.cc
! c620fc74f688e5171e72cf99eb792f09  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr550.cc
! 5a8871b417f26d56d75265e35c687010  libstdc++-v3/testsuite/26_numerics/headers/cmath/fabs_inline.cc
! 7ed7322c826dc93f18ff9c7e53359be6  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_global.cc
! dbc56f03fe16990fe4b0af0e534c6847  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std.cc
! 16c262b3c0871a7ddab2dd636d78f728  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std_c++17.cc
! 25a40164868bd1aca7439c6d66d1c307  libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc
! 1cb7dabb0ed79eb867d7e5c730adc752  libstdc++-v3/testsuite/26_numerics/headers/cmath/macros.cc
! 33c0e4115581ba6610e32a967781280a  libstdc++-v3/testsuite/26_numerics/headers/cmath/overloads.cc
! bcc0048b8b2fe100930139889c5d9f84  libstdc++-v3/testsuite/26_numerics/headers/cmath/overloads_c++0x_neg.cc
! d19d29a1f55c472d5044a8df7e122f81  libstdc++-v3/testsuite/26_numerics/headers/cmath/powi.cc
! 254f178876fe5c5369857bebe3410747  libstdc++-v3/testsuite/26_numerics/headers/cmath/special_functions_global.cc
! ded61177101ffdcee648e3b9dbe192c5  libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x.cc
! 2aa3665bf9f65119c324014efc7fafca  libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc
! c49f71197c25f633497899be9854a691  libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++11.h
! 25418acaa4da6a9a1fcce0c2aed169f5  libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++98.h
! 52d89b4645dd5859f0750f45caa44370  libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_gnu++11.h
! 0cf82a67ebe54d835bd9fc72f18e7b08  libstdc++-v3/testsuite/26_numerics/headers/complex/synopsis.cc
! 9a8b7b8501a729fda2e484143b9b319c  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc
! 81fc2ddf06da7a6b18bb1f6938e11e95  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/2190.cc
! b4fc0ee9f10238460c6b467bf28c338d  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/54686.cc
! e38de5fdf5be137bcad8615a801b1317  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/60401.cc
! 00187b25150c84335fffc2ba9359fc43  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192.cc
! d8c1665518f8f9a53a2e48d04b67acd2  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192_neg.cc
! 7e1943950ddceba81886e6f9d2395f33  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2735.cc
! 565f4b5042234425e350b418affdbd5e  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/functions_std.cc
! af0eb445e535ff820da155ad006af5fe  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/macros.cc
! 374df2e2be5edeeabca8ff1a01585d10  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std.cc
! 912f2eadbce52fc8306f8f11c881e217  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc
! f8e7aebd6c9125559e52eff0dd636890  libstdc++-v3/testsuite/26_numerics/headers/ctgmath/complex.cc
! 6e934e32b1491c0beaedce39fe173170  libstdc++-v3/testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc
! e9aceab437c7595c150ed85f8ca5e6ae  libstdc++-v3/testsuite/26_numerics/headers/numeric/numeric_parallel_mode.cc
! f2159025861693e0c5968d8dca92adab  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric.cc
! 31cff3183c0df4b0bcafc5618d5088a5  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed1.cc
! 3bf08f4938f38437527a3baa610853a4  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed2.cc
! 0cf1125182263df47ceeb9162e131f9a  libstdc++-v3/testsuite/26_numerics/headers/numeric/synopsis.cc
! c7bd0b25114ff3bb93262025c105a24f  libstdc++-v3/testsuite/26_numerics/headers/random/std_c++0x_neg.cc
! 92e84db65979b9b07440972dcc042d9b  libstdc++-v3/testsuite/26_numerics/headers/random/types_std_c++0x.cc
! ca5644e14832bff5062d34c311aabb2b  libstdc++-v3/testsuite/26_numerics/headers/valarray/synopsis.cc
! 87dbac69f23453cfcc93539f350ec367  libstdc++-v3/testsuite/26_numerics/headers/valarray/types_std.cc
! 972d75046fd9839549d7d505bd8d2b15  libstdc++-v3/testsuite/26_numerics/inclusive_scan/1.cc
! f3366198edcd6867c7b2b20c06b6bd2c  libstdc++-v3/testsuite/26_numerics/inclusive_scan/constexpr.cc
! da19b4fa74be848f3009f8768c385d32  libstdc++-v3/testsuite/26_numerics/inner_product/1.cc
! ca515eec6dcf95e4063fb3ab64a94bc5  libstdc++-v3/testsuite/26_numerics/inner_product/constexpr.cc
! 23d8053d576aed8aa9af2d18c129093d  libstdc++-v3/testsuite/26_numerics/inner_product/lwg2055.cc
! 849794f96a8711d5c0eb28a1e1447686  libstdc++-v3/testsuite/26_numerics/inner_product/requirements/explicit_instantiation/2.cc
! 6eb3f1df7a9f6eb01f614333026c1a1a  libstdc++-v3/testsuite/26_numerics/inner_product/requirements/explicit_instantiation/pod.cc
! 348fefa1acdcc3b911d6c1f25167eecb  libstdc++-v3/testsuite/26_numerics/iota/1.cc
! 8d6773f49818046e300da32e4fc51edc  libstdc++-v3/testsuite/26_numerics/iota/constexpr.cc
! 2b30c375f549fcebe2d9133babf8f1d3  libstdc++-v3/testsuite/26_numerics/iota/requirements/explicit_instantiation/2.cc
! 5e6025e1f61ad9a25692ba76600ad17e  libstdc++-v3/testsuite/26_numerics/iota/requirements/explicit_instantiation/pod.cc
! 43d1ed58e154d906949d13c0f4808b4b  libstdc++-v3/testsuite/26_numerics/lcm/1.cc
! cc14972137ac3671e8a0b1bb4ba78a70  libstdc++-v3/testsuite/26_numerics/lcm/92978.cc
! 06d04ffafd89d2c95c83067f7c94baad  libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc
! 7bed10ce7f1644a8746230d5d1b477e5  libstdc++-v3/testsuite/26_numerics/lerp.cc
! 5c3cb58399e2e5694d833ea872daa960  libstdc++-v3/testsuite/26_numerics/midpoint/floating.cc
! 613c27e02a60ed80a5000411bf309e88  libstdc++-v3/testsuite/26_numerics/midpoint/integral.cc
! 20db8d956c35f7266748984112c6968b  libstdc++-v3/testsuite/26_numerics/midpoint/pointer.cc
! 0f66686e0b973e3acbd9f2d32d2ff305  libstdc++-v3/testsuite/26_numerics/midpoint/pointer_neg.cc
! a4ea28018a78a0aec405c335ab73f104  libstdc++-v3/testsuite/26_numerics/numbers/1.cc
! 3a78b3683e9fb2211ea245504cae53da  libstdc++-v3/testsuite/26_numerics/numbers/2.cc
! bbd24252a671099ae6d72bcb96e0b6fa  libstdc++-v3/testsuite/26_numerics/numbers/3.cc
! a9356263e51ae40c27107f91f0a1b0cc  libstdc++-v3/testsuite/26_numerics/numbers/float128.cc
! c41e31fa25de02510bfd8fd93f0d96f3  libstdc++-v3/testsuite/26_numerics/numbers/nonfloat_neg.cc
! 6b5ee014af5c1d57864dd2d471300a5a  libstdc++-v3/testsuite/26_numerics/partial_sum/1.cc
! 7eacf37e881ab31ac0601830e1538697  libstdc++-v3/testsuite/26_numerics/partial_sum/constexpr.cc
! a474b8b76d8f487b682b02fbbda0492b  libstdc++-v3/testsuite/26_numerics/partial_sum/lwg2055.cc
! e347465faccc2aedaaf7f520f2606d93  libstdc++-v3/testsuite/26_numerics/partial_sum/requirements/explicit_instantiation/2.cc
! 5232a4d6f2b3c02549f99586a246bfa7  libstdc++-v3/testsuite/26_numerics/partial_sum/requirements/explicit_instantiation/pod.cc
  06f9a0eacab04d61b242252874d326a8  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc
  c7bf275d3e57ab4398c667478453b690  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/reduce.cc
  3b38ab0095f6c3e64a3aafc3953a3532  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/scan.cc
  be9f4cd42cf1d2640f0000739e67b4b0  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc
  ad6996fbdb2fc70e958aa203f8e720c3  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc
! 77f6edf00856a1dc730f644f41ce6eab  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc
! d61ad2a2a944506993b462d4ae5ba95b  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/cons/parms.cc
! eac34fcead0bbe6e2e5bd2f31a187624  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/equal.cc
! fb053325bdba5fd3897a12a237ab619d  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/inequal.cc
! 6d876d9d4707833c4588b6eba0bd6d0b  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/serialize.cc
! 5e55ec50c1ebced85b63e63c8bf18dc7  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/values.cc
! 3a2e9d979de3ce508413c8d578639cdd  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/requirements/typedefs.cc
! 9ae5b0a3e0ffed824e15b1c13b8a3a19  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/cons/default.cc
! 176594585b771a7c1c2a8a5f97a9d4d5  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/cons/parms.cc
! 5aba71c489efd6131a2772659d8880d5  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/equal.cc
! bb8e94d129b247288f858679e5eef788  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/inequal.cc
! 5f1691fde027d91c43634b9d892a1b22  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/serialize.cc
! 2ab9d80a3b158950cb26fe2fd64315b0  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values.cc
! 693e1d7f004e43e419d76825bbeb3916  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values2.cc
! cfc87da25a28225447e5f02737ec8544  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values3.cc
! 181f58793454a254642324fa9d5d1824  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values4.cc
! 557643c47138e4f65f370a88e6e8ed68  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values5.cc
! 59bf375c4476a0d579f1ab68bfc401e4  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/requirements/explicit_instantiation/1.cc
! 6e20d43bf75db1fd3bece747d9bd307c  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/requirements/typedefs.cc
! b7e8cb886ce829e59c1c431ab748f438  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/default.cc
! 081c93f3faa86ea23196a5d78e65559c  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc
! 41e0c2acf55e20cb8e1f9043f97393b4  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/equal.cc
! 9003e340219d3383124684f9db64b02e  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/inequal.cc
! 27502602ce95d6ecea9a6fdce4205296  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/serialize.cc
! dde6958d4acf3530cf8574f14d7a9800  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/requirements/explicit_instantiation/1.cc
! efc3730b1fc1d270977ef1ec0abc09ca  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/requirements/typedefs.cc
! 56235f2f814a68dc181eaeb4cc118027  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/83833.cc
! 73742fe56df65b18785ec61fcba8105c  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc
! 52c3293973238991b7640838b39d8d84  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/cons/parms.cc
! e86e60bc1c4b2912cb97babd4792b8c8  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/equal.cc
! 4130c4c512b9b0c91c027a02b51f9355  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/inequal.cc
! 851dfbed0931afd53211482842601039  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/serialize.cc
! 80be0611bd3ff27e399c3c8e9cafb6dc  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/requirements/explicit_instantiation/1.cc
! 366c3216f7cb94d8a5f9d8dd1a3be1b9  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/requirements/typedefs.cc
! 4647235f3ffc645c14edf599631d8e2a  libstdc++-v3/testsuite/26_numerics/random/concept.cc
! 9fc118666687265d101447099de38af6  libstdc++-v3/testsuite/26_numerics/random/default_random_engine.cc
! 1ab03a0e61302de32f26a7acacbcfc77  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/55215.cc
! a06908556a9318b8aac8c271fea424c1  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc
! a2882c426dcb714f9092fe69c2995c97  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc
! d205876063b002ce7a1d70cc9dd12661  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/copy.cc
! b6d76041afee3564deb67fba473ad5cc  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/default.cc
! 55c7ea102d745569e63ed92d9e133bf1  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed1.cc
! e773f22d3e51fe722ee54bab4b96f6d9  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed2.cc
! c5808c2b11bad8ce67d6c4d3fd9360a9  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed_seq.cc
! e34ef43db7607f7231e897492ed3b788  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc
! 1257175fde48089f2efa991092186a95  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/equal.cc
! 80f1417d56b720ec1ddb28ccca42823b  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/inequal.cc
! 090f6777fe0ca53f407cb106ee036648  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/serialize.cc
! 566830994b384a9e3c46b48162bc492d  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/constexpr_data.cc
! 96c763e863cf1be24b6febcc3dde7c7d  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/constexpr_functions.cc
! a0a58a53dba7a8cd07dc040e9851f2ae  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/typedefs.cc
! 7a389b9a1a10b680857e8e94f6676ee7  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/default.cc
! a1043ad8812b65aa0a1de0d0d51a3991  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/initlist.cc
! 3c67f74453e696deb6f4d2b88f843529  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/num_xbound_fun.cc
! dc3794807cd80e0aed99ad680e29bab4  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/range.cc
! 8c13f914c553da493756d073d6185807  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/call-default.cc
! 953cc82412ef8d9f2a2160c5f1f7ee53  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/equal.cc
! 6ae76e49a8a21cefe0afe10b30a082b9  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/inequal.cc
! 07d67aeff638d6c461ebfc6b7585feda  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/serialize.cc
! 8b9e29e3a0e1542a9147507722b7f5b6  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/values.cc
! 637982da00941ab0a69dc5177f5f9949  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/requirements/explicit_instantiation/1.cc
! 4d858137137bdcee3b7c41b3ac0f74aa  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/requirements/typedefs.cc
! 2de8645045f331e7d4dc077f929a278c  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/default.cc
! b9607bcf1c96ad1323327ef3952ad73b  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/parms.cc
! f30fdf3fd56ba3792420b60b74ba93b2  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/equal.cc
! 6109da840b843c6db2620e5080123bb7  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/inequal.cc
! e1fa6b30e4e0aab0026c01cf6478873b  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/serialize.cc
! afe26b92a8233ac6fcba9545e6ef223a  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/requirements/explicit_instantiation/1.cc
! 4c0aa5a73f205b4cc783b27a4a052bd9  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/requirements/typedefs.cc
! f01855a89f96079cd6aec135b545fb0f  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc
! 05f63dfc43a2807ebf539afef990edaf  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/parms.cc
! 337b3810359185b9f73161d4015fff2b  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/equal.cc
! 04a065d404afe2217b680083c0ba8d35  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/inequal.cc
! e820d2944787c4709f42b4e4956ff335  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/serialize.cc
! 7b3a6f097b49bfb0d2887bb9b47897dc  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/requirements/explicit_instantiation/1.cc
! 1137711c1cc300b1382e1605e9a253ab  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/requirements/typedefs.cc
! 524ede70503ec79e1cbf6e5292b5368e  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc
! 564f35469fb3b6e0ade1059d67f4d075  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/cons/parms.cc
! 64e553f0d91581709ac969b95bd9a65e  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/equal.cc
! 622e407c4da5d62eb679f9f2d1f434be  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/inequal.cc
! 306b3b9e884c2b5b65c51202bad8ef16  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/serialize.cc
! ac868f305d895d792e45b9d7125ffa9f  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/requirements/explicit_instantiation/1.cc
! ef2e12a536525b52f87de2ea650ffeac  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/requirements/typedefs.cc
! ac662f28c631de7c6ae21b4f5e9e5d9d  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/cons/default.cc
! 95e7ef9c2e34c940bbba9deee01bf70f  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/cons/parms.cc
! 62a26b5a009500c10fc6047dc6a4f4e5  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/equal.cc
! 0abe1e0c7ff72e4f2ebcea383cb874a5  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/inequal.cc
! b436617ec75fe42f324207c6cc7ba2cb  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/serialize.cc
! 1a95f4d88084b47ce89f239fc819e02f  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/requirements/explicit_instantiation/1.cc
! fb291c4129e2e5e313198f8245b8e7f5  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/requirements/typedefs.cc
! 66c5a9fe5838eaf134e5de42148cf1b1  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/cons/default.cc
! 216fb8b592929c8abd0e09b41f105115  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/cons/parms.cc
! 9194cb1f8d6eb3cfac214eccbfcc5dd2  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/equal.cc
! 82179febf08107c1f379dd2d39d4e420  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/inequal.cc
! d14fe64dde8f4452e9f29375cc5bb038  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/serialize.cc
! e0dfe56406172bd58c6d8b26c4224388  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/values.cc
! 31ba0dba936ea0c04bcad413eed9d0c6  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/requirements/explicit_instantiation/1.cc
! 49875288f45bab372ae31d21990184e0  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/requirements/typedefs.cc
! e654ca10a17b8fa84d8404d3e6171416  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/55215.cc
! 5848a72cc93ce1b95fab8e8d515c28f3  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/base_copy.cc
! 29d94466d46308b2489da8f0c7a2bfad  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/base_move.cc
! 022bbc0d78ae2f3d408d26a73c267ac5  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/copy.cc
! 3894a354503f7b45996472948ce9f47b  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/default.cc
! fa73310c785cb233a6492f2f1f60e624  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed1.cc
! 5a0231439e4df1558ba32a1bb968e710  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed2.cc
! e2222cc25925881bc3a69adf7d52c93a  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed_seq.cc
! 9173367522eebf36e2e282b87b67796a  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed_seq2.cc
! cd8ed6ea8ed1905c244d8196bb8cec4e  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/equal.cc
! 1a5311709615d0330520af809dd86b64  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/inequal.cc
! e4cc75f581a293b9d0fae6c5ffc7e96d  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/serialize.cc
! c576932cf132cc76b9fd3a847ead850f  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/requirements/constexpr_functions.cc
! 405bc6d6a49e172fce5031dd1cba71a7  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/requirements/typedefs.cc
! f795e97ad4e5af5fcc2bf82bc257a72a  libstdc++-v3/testsuite/26_numerics/random/knuth_b.cc
! 06b9f92b0fee6d5cc3004560f68ac83b  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/55215.cc
! 41d1f5faf0e8f7f426b05c9a5d4d4770  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/copy.cc
! f77cb4f7badb848298b0bc0564c08d11  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/default.cc
! 6c57d7b734608908b7b17959bb5a8a1d  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed1.cc
! 59fd40427b2fa76e8dc24c132ed9bca9  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed2.cc
! c1c5ac429a5b1a74d2731bd019d153b2  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed_seq.cc
! 5cf6718f3769e20b988b809a6573f7cf  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed_seq2.cc
! eae3465f462dd84099a832373942caae  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/51795.cc
! 2e9246a10d36854924886490793e8984  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc
! 51ce54b4d508749e774b2320f47baa7a  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/equal.cc
! a8f126481315ae5993940e1577cb9edb  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/inequal.cc
! e7da765b790579400b76e8642a52a9ae  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/serialize.cc
! b5e823239076ac834174eb5c2deff4ed  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constants.cc
! 8f7a47c3c12145520f4efe0c4af384a9  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_data.cc
! f4ebeaf4bf36f4598ca545e2ccbf84ec  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_functions.cc
! 008ff17e6629591e1020bb918abbae57  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
! 66e33fa045c1a04100e93017e115a2cd  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/typedefs.cc
! c6da37b5bd797f09067c572ab0fd3e2a  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/cons/default.cc
! f8b3ca7a7ea6d03869b1ff06ae7e6b86  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/cons/parms.cc
! 58cb1b67132b8ea1e51bf7896e0622d8  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/equal.cc
! 5f337919f99602cfb5d96866a80da730  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/inequal.cc
! fcfa6260a427ddf9efa111ea59685d81  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/serialize.cc
! 49cd3024fa11a2b2ea07f9f9567ed3d7  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/requirements/explicit_instantiation/1.cc
! 5fbbe2314c7b0ff5b5e669e6a6b05672  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/requirements/typedefs.cc
! b6cece301f662622174973d49c7e38e8  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/55215.cc
! 8275dbaf2995648635c18d25fbafc604  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/copy.cc
! b4170c12cc7e82f18e89fdd54fb4ad9b  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/default.cc
! 6008e19d55d6ebd55c01fe773f606206  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed1.cc
! dc904abf06c781cddaea069fe223402c  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed2.cc
! 22055d61047b9d13af48a2599968f4f1  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed_seq.cc
! 8919303a94aa535de4bbd5de9c85f390  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed_seq2.cc
! 4560be42e8a58de516fd3dcebd966aa8  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/equal.cc
! 7ca26142d78b5b434d3daf809a7c35bc  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/inequal.cc
! 6b92acaf5fa3d7ee00bc168c7688c690  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/serialize.cc
! c983435ae4d7be5946e25fa10d39c7ae  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constants.cc
! b975fd2a97aeb24b7f55585290cf906f  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constexpr_data.cc
! 54f159d9cc0cb28b3e7c1d130bade1a8  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constexpr_functions.cc
! 2f9f7486a69b3cf508223ad35c4947ec  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/typedefs.cc
! 9648aee322fccb176c296e0d98f36df6  libstdc++-v3/testsuite/26_numerics/random/minstd_rand.cc
! 33b01f9cc1b23533cefe3e3605b2a4fb  libstdc++-v3/testsuite/26_numerics/random/minstd_rand0.cc
! f4ea07f588cbdd567b00d505fe5fbd13  libstdc++-v3/testsuite/26_numerics/random/mt19937.cc
! 0b9c70b7b18435b9666df5b22e9f5cf4  libstdc++-v3/testsuite/26_numerics/random/mt19937_64.cc
! b16bd70993b207f5c9f1aa649db75308  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc
! 16dca638346cae9e53414e87f87f5e48  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/cons/parms.cc
! 4a9921e4bc758742d70485e54d0f7640  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/58302.cc
! 2d4b6eeb1c823d26a477decfdd57fb06  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/equal.cc
! 5adb014e9c6fe810952428ba5c6aa1f7  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/inequal.cc
! 54716ee37b08efac1b3abb330c2fe379  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/serialize.cc
! adb0f53c9750c0a92d17307b164124a0  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/values.cc
! 9c37bbd5c89630889f8779e3112ee1db  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/requirements/explicit_instantiation/1.cc
! a43b10f8eb0dc788d0db64136bf57cb9  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/requirements/typedefs.cc
! eaab8da52e90e6bed94b2407b5280e54  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/default.cc
! 11ff35cec63419439a1fa833e3e90484  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/parms.cc
! d0b1bdb8a940abd68cee45e678d7a03d  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/equal.cc
! d3822899f315bf452e87e8f0f76b5834  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/inequal.cc
! 6e4c6a254352409872aea8086bd3dda4  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/serialize.cc
! ece58a631cd3234ac4e27f65017c0235  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/requirements/explicit_instantiation/1.cc
! 6497a4d7ec2630e9fff27e5267299e74  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/requirements/typedefs.cc
! 40b72729a0e17d81cbefa6813ed07d79  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc
! 33a0f637d18bf9294b45687f4c2e76ff  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/initlist_fun.cc
! 9b1af20cc7bc078f433c6f5f6a5d8ad5  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/num_xbound_fun.cc
! 348b65a51a62ff0d662a83835b5a7a7d  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/range.cc
! d1f36ec89f72dc9abfd35924be1fdea0  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/call-default.cc
! 7f636ced1be112e0b3908689274281c9  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/equal.cc
! c67538df0e146a1b6bd9aeab6930171c  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/inequal.cc
! ef2cac2387502b0a3641b1bf38ac4317  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize.cc
! 15055f6c667e267ea7e067486bb9e074  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/explicit_instantiation/1.cc
! 349e1194de4d8ef80f9e8ec0cc8b7040  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/typedefs.cc
! fdce45f1b0005d12c02162fa9536c0cb  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc
! ed7308743961bef96b86c0b1a799b340  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/initlist_fun.cc
! 71b44e441f400d7c5db90f4fb6f8d744  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/num_xbound_fun.cc
! 217c35de0eaf7e121b2ed1a7972df46f  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/range.cc
! 78d89288a6db9eb74b0be0d747d10c6b  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/call-default.cc
! 0109e9bb8ed17fffef577da3b49a3f2f  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/equal.cc
! 511b2d6adf131e026d62643c8f380c4c  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/inequal.cc
! 44edd80481301ccd6df0a564f103bee4  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize.cc
! c83afb389bf08e6076fd3222982628db  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/requirements/explicit_instantiation/1.cc
! 99ca183c319a5906be42645fe53a0fba  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/requirements/typedefs.cc
! 2f8fa0e22dea332d3395de50da8bb863  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/cons/default.cc
! 07bc7de8468714aab2801eed4c55211d  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/cons/parms.cc
! 3667951ecf69f472fbd3d1e2849ac834  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/equal.cc
! 86330187c609e2f35e699c616414d08b  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/inequal.cc
! 189b5b35a25960895aa40f3230c3c4e7  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/serialize.cc
! 798a0ede1822385c5b3d02112b7d4ea9  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/values.cc
! 83745b677a502ede915e5d886ff56b68  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/explicit_instantiation/1.cc
! 39e65e9ba15daa128aa1ed83e355378b  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/typedefs.cc
! 817ced57426b53b40d2af74923781990  libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc
! 519076377db3532f5bb289e94d2b23f7  libstdc++-v3/testsuite/26_numerics/random/random_device/85494.cc
! 53f613d53dec98c0c3ea1b2c9bd23852  libstdc++-v3/testsuite/26_numerics/random/random_device/94087.cc
! 7617cf48983eaf0feeb5a976604fb817  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default-cow.cc
! 03dca1060007c62010df244ad646d221  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default.cc
! d11b485bf72887083a4c732d1cae2ee1  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/token.cc
! bdddbfad7bb717d0033a77400e031afb  libstdc++-v3/testsuite/26_numerics/random/random_device/requirements/typedefs.cc
! 9a99d76cf9b6ecbdb9689c72bf82d014  libstdc++-v3/testsuite/26_numerics/random/ranlux24.cc
! 07eacaf424acf875471501c88c953d1e  libstdc++-v3/testsuite/26_numerics/random/ranlux24_base.cc
! b9754b9aedfdb7aae949f8efdcb72f3d  libstdc++-v3/testsuite/26_numerics/random/ranlux48.cc
! dcbca3424cbe201b87c4585a4bc1418b  libstdc++-v3/testsuite/26_numerics/random/ranlux48_base.cc
! 0840114b85d9cd8e27fcaf3455a35e34  libstdc++-v3/testsuite/26_numerics/random/seed_seq/97311.cc
! b133b39d9342b4d84ee1e918eb58b9e7  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/65631.cc
! 3e7ebb9cca2e22c554a2d73fec5e1795  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/default.cc
! 6eba8c2641b3e0fb0806a1285240b3d6  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/initlist.cc
! 0b3792088ca2135f6a236be074b58c45  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/range.cc
! 9794b3c48fa11d56acba14c5c58dfc07  libstdc++-v3/testsuite/26_numerics/random/seed_seq/requirements/typedefs.cc
! cb6a7aac1a61e1650565a6ee78875b84  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/55215.cc
! f3495e4bc642cabd196b63c7b64dea95  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/base_copy.cc
! 70d3c75d2c434021b395cb801438b755  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/base_move.cc
! 650fcd190a3368b425954c147ac45eb3  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/copy.cc
! 0385efeca11274fa978859dff31a5371  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/default.cc
! d36cfe029f068d68e178b693670442ea  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed1.cc
! 6da00d06d96bba7edad4b348869550fa  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed2.cc
! 95c26b8ac2a0fa523ea159864f96a542  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq.cc
! 3d1533cf0a3191c208a511711c60aa21  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc
! 0b574a06c4637edb5e2c5a33f64d3edb  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/equal.cc
! bc2df7c251b37aca51ef56b278f4ea89  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/inequal.cc
! f8906d58897f0a9958a58031f60c7493  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/serialize.cc
! 4433baf96c706166e822225b1a8ffd20  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constants.cc
! dfd2df10523753123990361419d0dac8  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constexpr_data.cc
! f1f0055d67a95e5eb28124f8edd7803f  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constexpr_functions.cc
! 4c3e4fb080cc77f2b7921a676246852f  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/typedefs.cc
! 5831995b036a21be74e407e5e94842ec  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/default.cc
! 8f917310759508b5fd972a33f528db64  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/parms.cc
! 9ad5d4e28637b72bed421a17ebda9fc0  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/equal.cc
! 914ae1931e1d542b906043a983b217d2  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/inequal.cc
! 642d2d119a136a0412ec436ce9880285  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/serialize.cc
! 07a4da0df105b2a09bfe476bdd20e1ff  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/requirements/explicit_instantiation/1.cc
! ccb6d2f8d1288a7cae2c4126d48be9db  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/requirements/typedefs.cc
! c3aa17a487f3ee446abeb543095a2a8e  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/55215.cc
! b3bc025f1d65d79dd49ca78d29c17a93  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/copy.cc
! 3ffee4ef8d4c67e502e15449d62fbc5a  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/default.cc
! 3f823fed1387cf0dc45973682564d98d  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed1.cc
! f28187410b2d78e9ee0f14835bad97ee  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed2.cc
! 73fbf688666585ea369d11bbd9dfa5e3  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed_seq.cc
! f42c51aa5f2b100ed25f3aef5dbb05d2  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed_seq2.cc
! 3845833646cda1536457d7e4302458ce  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/equal.cc
! 2b945b1eed4c12c4dcf2342fd507e2b7  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/inequal.cc
! 270c04f7c4e48db1bd0fd109ded51663  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/serialize.cc
! 46bf598b59cf1c53697aaa354ddd5258  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constants.cc
! 5b2f155c6ae9dc00a36dcedd9a00e5d1  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constexpr_data.cc
! 2b50956320f5bc21e26c54e8a3534b5c  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constexpr_functions.cc
! 4b6e545a14380ab026648390e4c45a6e  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/typedefs.cc
! 3788e60b17e0b6492e48ff3e55fe5cf5  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc
! 99130d1af9e4adc5fb2d14fc2a125943  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/cons/parms.cc
! fd8c69abfbbd23aab665540e3b63ae34  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/equal.cc
! ab932d4eb799374bd4e7fee6bd899246  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/inequal.cc
! 3d966a05737d0dfd631ab909550b4030  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/serialize.cc
! e458ba5ec07e498ea309545b0cba9ff5  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc
! ffa98c0e5c4890130bb436502b3e4bca  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/requirements/explicit_instantiation/1.cc
! 188d1ce4465b1bf152d4dda7606c4c5d  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/requirements/typedefs.cc
! c3d3b87088892e6e335e1147ff58f01b  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc
! 60a16f7aeadf0dc72eb89a2b23f6a4e5  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/cons/parms.cc
! c6215e5c383b690a4427e1b77a9dacd2  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/64351.cc
! d98c03865f7d96933b57ffbbddd1bda7  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/equal.cc
! ee6ddb018e62f3666e3c7e9742c436ca  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/inequal.cc
! 29f2c5b50f8f08e51e4378d18df208a5  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/serialize.cc
! d8d92d3f7b6d20c31dfbb807ba784344  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/requirements/explicit_instantiation/1.cc
! d81694946d595ebb50eb05aa8c7bfdd4  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/requirements/typedefs.cc
! abd1b8a7c00cc09de700308407ec75a3  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/cons/default.cc
! 7ab826e1d6f855c475d3576b639309d0  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/cons/parms.cc
! cc3c2db68e4f74295d609efa140e2fe2  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/equal.cc
! e1db785ea5fa777ec6d1ee8873280c88  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/inequal.cc
! 6381f5fbf92e410b206664458bedb9ed  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/serialize.cc
! fb9b6f4529138b931b4a039dfc0542dc  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/requirements/explicit_instantiation/1.cc
! cca309708b1c1127b31353e0ae625300  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/requirements/typedefs.cc
! a5a5b59bdc8f389a078be660fd1981ca  libstdc++-v3/testsuite/26_numerics/reduce/1.cc
! 669449e41dbac2e8a02356cc429659c2  libstdc++-v3/testsuite/26_numerics/reduce/2.cc
! 9775188e4216fec0dda14f9eac730956  libstdc++-v3/testsuite/26_numerics/reduce/constexpr.cc
! 92d5e9f956886f9fba02c71f534b5d6b  libstdc++-v3/testsuite/26_numerics/slice/1.cc
! 0c538886d0667618963436ec12491661  libstdc++-v3/testsuite/26_numerics/slice/compare.cc
! 9cea59603806012c9ba1b35022afc3f9  libstdc++-v3/testsuite/26_numerics/slice_array/array_assignment.cc
! 8ad0bac15aa248d1e7758a7b018e7916  libstdc++-v3/testsuite/26_numerics/slice_array/requirements/explicit_instantiation.cc
! 62a05492656968005ab7f3440eebe457  libstdc++-v3/testsuite/26_numerics/slice_array/requirements/typedefs.cc
! d824d50db116395e82da1528df8dd40d  libstdc++-v3/testsuite/26_numerics/transform_exclusive_scan/1.cc
! f04d401170c90b5f8a09e4b2adedd5df  libstdc++-v3/testsuite/26_numerics/transform_exclusive_scan/constexpr.cc
! 256e171f86372ab977a7e0e455216dd7  libstdc++-v3/testsuite/26_numerics/transform_inclusive_scan/1.cc
! 77ae80b6ca89bbb01ec55713b0dfd1ef  libstdc++-v3/testsuite/26_numerics/transform_inclusive_scan/constexpr.cc
! db3c1ba530485f732f440f5beaeb1d2c  libstdc++-v3/testsuite/26_numerics/transform_reduce/1.cc
! e64b7ea27aa7d7003509f9a5058d7756  libstdc++-v3/testsuite/26_numerics/transform_reduce/constexpr.cc
! 17472e54bed8a869a86d354d386261f1  libstdc++-v3/testsuite/26_numerics/valarray/27867.cc
! 6be43ef40afef800eec38a9c0d3af475  libstdc++-v3/testsuite/26_numerics/valarray/28277.cc
! 629302ab3718b1667cf68b2e2c03a543  libstdc++-v3/testsuite/26_numerics/valarray/30416.cc
! 571dcbd1b6c651f3b222947b4d3ca5ba  libstdc++-v3/testsuite/26_numerics/valarray/33084.cc
! 96990c8a70908a4cbba33c1b8a0a05f7  libstdc++-v3/testsuite/26_numerics/valarray/40691.cc
! 06e6013171253921d2e67067ebad37cc  libstdc++-v3/testsuite/26_numerics/valarray/69116.cc
! a92871e20e904ca167eba8ec10d164d4  libstdc++-v3/testsuite/26_numerics/valarray/83860.cc
! 592e61791a81302e3ef7a54946ffdca1  libstdc++-v3/testsuite/26_numerics/valarray/87641.cc
! ff59b525a762e0ec0946e89c5e8382ad  libstdc++-v3/testsuite/26_numerics/valarray/95592.cc
! 517333ece3443a0eaf5f4c848d773918  libstdc++-v3/testsuite/26_numerics/valarray/algo.cc
  3e191d68e11822f58de5e4bd15365ca5  libstdc++-v3/testsuite/26_numerics/valarray/binary_closure.cc
! 1bd1cc94b0f1bb18a989a5a8451b7aa5  libstdc++-v3/testsuite/26_numerics/valarray/const_bracket.cc
! 92d3e49f0840a238fe50ab4b2ebf08c5  libstdc++-v3/testsuite/26_numerics/valarray/deduction.cc
! b639c93bc396efa0fd79057074fdbb3d  libstdc++-v3/testsuite/26_numerics/valarray/dr543.cc
! cf9a799688883d244898f9c13781775d  libstdc++-v3/testsuite/26_numerics/valarray/dr630-1.cc
! 2b7e67d87fc63933b3d6ae173e4a486a  libstdc++-v3/testsuite/26_numerics/valarray/dr630-2.cc
! 177b1d8aadf00d2f5d7bfb87d2c96974  libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.C
! cf93a6f65dd73b94bca78c5df440e9a4  libstdc++-v3/testsuite/26_numerics/valarray/init-list.cc
! f80244f8a99bbd30ee594052b1fcf705  libstdc++-v3/testsuite/26_numerics/valarray/moveable.cc
! 102dd42132d7f38a398f582933a20a68  libstdc++-v3/testsuite/26_numerics/valarray/name_lookup.cc
! f260f33a5cce7ab2c2c2ae71dc585cd6  libstdc++-v3/testsuite/26_numerics/valarray/noexcept_move_construct.cc
! 690fef110beb729488b0ce769e3e857f  libstdc++-v3/testsuite/26_numerics/valarray/operators.cc
! 17808ea0ea0f4112ec6e48dea6908cb1  libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc
! a42fc9f551fe46b39f9fd5058a4daff9  libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc
! 2c64a69255dbefcf3ef9f0b0dee7993a  libstdc++-v3/testsuite/26_numerics/valarray/requirements/explicit_instantiation.cc
! afb64b9faf6284dbc183031aa5e9f607  libstdc++-v3/testsuite/26_numerics/valarray/requirements/typedefs.cc
! d70f03fd601d2ae2cb8f58be9b54f030  libstdc++-v3/testsuite/26_numerics/valarray/subset_assignment.cc
! 911203830444a1ebf01100d8269b1515  libstdc++-v3/testsuite/26_numerics/valarray/swap.cc
! 2ca666f7c65e35487c9224dadcb18ee4  libstdc++-v3/testsuite/26_numerics/valarray/transcend.cc
! cb8d4bbac638420c6cee0cd45d91dfcd  libstdc++-v3/testsuite/27_io/basic_filebuf/close/12790-1.cc
! f6390c40bb6dce62163a20bc33f0a852  libstdc++-v3/testsuite/27_io/basic_filebuf/close/81256.cc
! bc9d7bf28b4e0eddd3dba928a5b350f2  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/1.cc
! 6165e65fb13572310bf622f5d34fc798  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-1.cc
! 9ec12a46bef757c5e7f5ef48c58b58fd  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-2.cc
! f6e43d1734b3e0993ddc753c7ff541a9  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-3.cc
! dc950938049d61d8eb82c603c4821b02  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-4.cc
! 603b35243c942879524d3be9e7957206  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/2.cc
! 6c1c2d89ee92e19a4511a877fe6707da  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/3.cc
! 8355288ced4f480798b0d9c8ec410a5d  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4.cc
! 12c769681e9da5f34f800d6542bc68e5  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4879.cc
! fa5e55296db31153b523a477dd67e4e0  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/5.cc
! 89cfe3288bcd919646f12f43e9a3d940  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc
! 4f84420c93224be01fa7256fa033cadd  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-1.cc
! ec92ddfd8cd00708d61adc6f753c7cf1  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-2.cc
! 457f7758089d45e26c99e20c045e6da6  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc
! fe05159a89409c595988aa81aa072eb8  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-4.cc
! 7c914b2fbc4d26cc1d7dfaa6ce261d97  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/2020.cc
! a5fa0ebe69484d5e978dac0a238ece23  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/char/1.cc
! a870f427841a033161ee9e3e5fe67469  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/char/copy_neg.cc
! bfcc7bf287efb954d3acbf34b70bc66a  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/wchar_t/1.cc
! 572918da29486e8561332c15093e92f0  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/wchar_t/10132-1.cc
! 1d4ad143fc553256b3946aafa441c288  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/12206.cc
! d3f316603a358c6ad01cb54dfc2f1e9e  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/1.cc
! d9be168fe1ebd31f4c270176637a6b7f  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13007.cc
! 5eb2a793b07cc5a9734abe73a9f0e6e9  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-1.cc
! a4739e47b6151e5861d801844efbf249  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc
! 2cc7a8d4d288150936a0630b9de4bb50  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-4.cc
! adca74825d09d094412c563a0d5b8a4c  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13582-2.cc
! ee786fc68f79cf31a3d655e8c5c37fcf  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/14975-1.cc
! edc937440bc5cadb9bc377e0ed8e2861  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/2.cc
! 5cdf6b9be6b84e3138fcea148b6b3e75  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/3.cc
! 18189c9ceaa1f3eefbe0217d7e3b7d0f  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/9322.cc
! 9784ab91acac3475e1be0dc70abe303e  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/1.cc
! 092898f8a8aebe082fe60df0474f620d  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/12868.cc
! 44e4ae7c375ce12e08b4834677fbd2a2  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13007.cc
! d2b4478d3a393edb741fa53fd239ae9d  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13171-3.cc
! c12ca1f2c929b73660bb6cf8367f8081  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-2.cc
! 6673820410513944e4f3b9946c27579c  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-3.cc
! 4738e6f968854f66a3d0c42199f2c96d  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc
! 2a29ad625074bef62e5ae8048322269a  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc
! 4aeafbe1115c8cd3a70ddde0f196e635  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/3.cc
! b0a558ea7067f37869dac84849ab5d3b  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/9322.cc
! 9795b8d7e7cbbf3dc25a5a043e500392  libstdc++-v3/testsuite/27_io/basic_filebuf/in_avail/char/1.cc
! ad0650bca52074fe264282a5cf25a122  libstdc++-v3/testsuite/27_io/basic_filebuf/in_avail/char/9701-3.cc
! f9215225b6799eebd862db15a3ae2e90  libstdc++-v3/testsuite/27_io/basic_filebuf/is_open/char/1.cc
! 5131f989329341c34ee34b346e2dd835  libstdc++-v3/testsuite/27_io/basic_filebuf/open/12790-1.cc
! faa483dae0094db273e0ed37bc0f9d30  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/1.cc
! 54e8d8a259d09620b35a106149d3a073  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/2.cc
! f33c47b4d3bd8b2160b1ad3cc20d7c38  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/3.cc
! a01dc292833ede20030de0c55f0e114c  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/4.cc
! 46f25a005f467fe43acdf463cf71035f  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/5.cc
! d49260e61a194d7ae33d01bc70f1cb3b  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/9507.cc
! 327153108053447747e824b9e168bbf8  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/path.cc
! d8d643b58f5e3b3df382a909019845cc  libstdc++-v3/testsuite/27_io/basic_filebuf/open/wchar_t/1.cc
! 7a212c34aca5b38c6145bd27606c0874  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/1.cc
! c5ddb4cbaf03345d893b41020a1dddf9  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/13858.cc
! e2f25d3623cbae3855b0b6dec0d25a1d  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/2-unbuf.cc
! 10e611fb5eb74779e951bc8f53f83c1a  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/2.cc
! e8af280833e4b31a480853be3245dfa4  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/3599.cc
! 9e98c65b224726e8f0a9c358fa378a11  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9169.cc
! 351deca7ddda286881d461561f03c219  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc
! 4fa53f6898ed8907cf0c0a937f163956  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9988.cc
! 882d3b063ec91c029bc7c99535598fb1  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1.cc
! d16daafc9a0eae5885e7b0d3cccdb4fe  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2.cc
! cffdef61bdaf2e3c377b34c894438b7e  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3.cc
! 71f86966bad40f41cf75e6692861e976  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4.cc
! a16587e6a7c12bbb889860e21779aef7  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/13858.cc
! 7fec5a680febe4918268ad307db3c033  libstdc++-v3/testsuite/27_io/basic_filebuf/pbackfail/char/9761.cc
! f024a803e04b35f97fb29fb15bf62e0a  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/base_classes.cc
! 90e7e586b74be8d41ec738bca31ea53b  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/explicit_instantiation.cc
! 991780161f1ea4c21e0791f8473e5a5e  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/typedefs.cc
! 50e3c7374e4657ec91ce417277a44b2b  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-in.cc
! 73e8de25b939e4aca9df453618f5f516  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-io.cc
! 1901dc664bdfcbd60f1bb463ec086d68  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-out.cc
! 288a642574e38cfa36f4f323fe18f06e  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-in.cc
! aedced389bbbb72d435338510c5930cb  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-io.cc
! 59304673b88690de83788c620139372f  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-out.cc
! f6d24490b1ebe8a86a20c759ecd89394  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/9825.cc
! ba30c53342f2fc311ff012935f991f54  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/10132-2.cc
! fea7fceabc4386c1620a2093a7f5c59a  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-1.cc
! 7801a64a04f10b66c78ea5767df4f911  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-2.cc
! 784ef610639c0783f0407666f0bce04c  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-3.cc
! b306394214f64f174849b973706dae94  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-4.cc
! 88e03a1d0a3dc9a28c0366aabc64d475  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/45628-2.cc
! 4ca759d644f1693b57f486156d0ef418  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-in.cc
! 479fe33ae27fbafb2bc5959b427f4f5a  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc
! 2c032b50e9c2329be48db09403046ffe  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-out.cc
! de3e0b1c5a209689ffced28c79d2ad2c  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/11543.cc
! 9b7a47f9f05e2ad765bf83cf93f499de  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12232.cc
! 62a84d80581b36b4824a3a11f5970993  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-1.cc
! 7a63c83bf9dbff373ce2733cef1c410a  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-2.cc
! 26dd85355bfe8f5fddaf1bd8cf05c13a  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-3.cc
! 9f59d2d92099c32a64172e33bbe8c077  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-4.cc
! 1d6d0ccc906eee6892f258e82eedb1c5  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-in.cc
! b9ba4c8e7293620afbbb8113eaa94b4b  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc
! 8e4640936c1bef89e8145da7bdc47000  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-out.cc
! 2c1ac282c094f7e9fd362529c5a8e0aa  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/26777.cc
! f64219efe21b2c0f2a3a1e0be00e8d12  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-in.cc
! d71ac2f2dc435d07778c9587d5f014e4  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc
! c7fa361f7c690f804dd4ee11e0b306c9  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-out.cc
! b3cef22338d47698d0ab3fc45533bf13  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/4.cc
! 1968b138d32917a1a8d42da1427be596  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/45628-1.cc
! 66aebccac12173e8f300125d759c12d7  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/1.cc
! fa0c2b34bcf3aa22dba34562cc743fe3  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/11543.cc
! 163ff432297caf51b26c3bf0acf4e426  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-1.cc
! fde79661862e92cde5bb8dd881d7c26e  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc
! 847de4acec299b5b380efa8240e3fda7  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc
! df89420effa5daac203f0b7578f8e52e  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc
! f42094a2b2dc12fa0d647c8efca692b1  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/2.cc
! 3a755e563b0f44861861fa53e15d2eef  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc
! 32b60066c471f9e0756c33dcecf6d4e9  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc
! 79dbafd92fdf7f11c0b55c1b76100b82  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/9875_seekoff.cc
! eb50844aa93e19678b4a29b8c8e91cad  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/10132-3.cc
! ad1b733c6605e2974ff9ebd9c3db1bab  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-1.cc
! 63488e9b02ff1c107d8614208eb769e2  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-2.cc
! 5e2ec01456dc8a0ae1acc9859f737b0f  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-3.cc
! 39892cd5fc8a0a5558e3b060be378001  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-in.cc
! f6f7117b4e92037ca814468c974c0e9d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-io.cc
! 40237faa251b79ab79c36d306e72629c  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-out.cc
! 627d30b77c3a4ed18f2800bf4ee1630d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-1.cc
! 7d8fb7507fef748fd587a368c47aeb8b  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-2.cc
! 7996f864a1c968128b6792e20f3a8549  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-3.cc
! 88dd9018298b2fbb62f93c3cd5bb5625  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-4.cc
! ea06ccfe2877f3b19640dc4503ef14b6  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-in.cc
! 7565efd80db555687fdb58e028c552a3  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-io.cc
! ae448ee6b478fcf2c6a1cb6263c5bf34  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-out.cc
! ada2fac1051e128e2343d3a6b2128ae4  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-in.cc
! c92302174c37ecf3c5468a863744a21b  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc
! 8af06329b97422f993f9157acad3a630  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-out.cc
! f65739007c5d68e5f5e24a18bdfdf365  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc
! cb20c36dd98b0e4ea7964e5752973e5b  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc
! b2c2da348aaa394fc096438e2c3cc6ff  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc
! f5da8813681fb5aaa0157559a5300088  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-3.cc
! 7bc3a7273dd4bbaa46ab639c5ff83ebf  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc
! 1d908954346c680a573aa0d5ab9a469f  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/9874.cc
! 7e83a473012cd534dca850ec4ddee57a  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/9875_seekpos.cc
! a5407781e2f89a387c9e39c29bc226bc  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/1.cc
! 35c8f320b0ed3f782b085cb195ef8051  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/12875-1.cc
! c6043a83e74f6726d9df96f51db73e1b  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/12875-2.cc
! 5f79600a23b43353bb85904e1074df9f  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/2.cc
! fb42d256fad62e865d34ae606f0fcbc6  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/3.cc
! 67d23f6a152416e6b1b253d647122640  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-in.cc
! 8185091635f97cf836c65d0fba984b18  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-io.cc
! 64fcf14c471accd6822a849870079960  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-out.cc
! 0b1ba008f4aa43f36963ecca1c32d577  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-in.cc
! ad3276b96e50a3cd7d44136f66f41955  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-io.cc
! adc1b5686a0191850936c2a8056905e7  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-out.cc
! 1d4cb477f739da53354ebbb45ed128b3  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc
! 940da68bfee3963cea79fa88eb4566be  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc
! 52aa0287d7637114eb6ec3df90561d10  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-out.cc
! e33a9abaa25a254c28137ea65fe55322  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc
! 0c80771fc968891e1179914ea4adc157  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc
! e22e1b597f9c665d81a2da47b39ff771  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-out.cc
! 56bb4d1b1d0d01cb1c83bbe7a7332314  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/3.cc
! b40a250c9a6798a76675f8486a7d0061  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/81395.cc
! 7f5352630a452248ea956caf4cbe7a8c  libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc
! f9a3ea9f076f1c09344c43872362b614  libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-2.cc
! b0c4c422797a027dab7aafbb71147b92  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-in.cc
! affdbe31253e67cfb1c7e6ff2755acb0  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-io.cc
! e62c2e65616122a782c553867308c0b6  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-out.cc
! a5f1e09ff26b71b3a48bd09f96cb518a  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-in.cc
! f7dabc5e10a9ab8120895a1e2ce48053  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-io.cc
! 733a683a36ccda4cb7591e5cd363387e  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-out.cc
! ec15f49ab24f5cdfdbcc6e9c04fe2c74  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-in.cc
! db6790bc9fb3a6b062316fd0e6581140  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc
! 627f83219227db0d87a1025e1d532904  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-out.cc
! 2139d757745d6c11c0a03135ab94f348  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-in.cc
! 9e815c0d7f93b1f78d331af38ee5b92f  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc
! 616c29416788f4deb142dcfd40cd98c1  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-out.cc
! e789e210fb370154b5fa3a1abf508539  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/9425.cc
! d496f8e809ce5d62d17a0d260f4b5345  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-in.cc
! e92ceb724bd048ca69f610f77a0e380b  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-io.cc
! 3a01b0c569c90e03e5f2e2ee627ceb0a  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-out.cc
! a57a25ad31d6184a96997a235b782e2c  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1057.cc
! 905d032e867c92977566e2bd9ae88bac  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-in.cc
! de87c75e7f692a7e8e0e28585421b0e8  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-io.cc
! c48a0a2ee9e35b1a0ed2eb37d9534c05  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-out.cc
! 35c6c3f706b657693db914130caab2da  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/59427.cc
! 96b7d1a36eeaf41ede5850a80488edcb  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/9701-2.cc
! 37b292d06c7a3cb90483bf3879f2c1fe  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-in.cc
! 153a5027c58885329b17eb1d2629cdb3  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-io.cc
! 83d6c8f99c52588e0d66dd62ac4e9b1c  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-out.cc
! 1a7210abe3466b8f36745ed4d1aa373d  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1057.cc
! cde90f7c2aea0a5be06dc20fa5726819  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-in.cc
! 4e61d96ca2d762d184b05f5806126d9b  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-io.cc
! c8fb9eb1ee67f88c42262980d7455735  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-out.cc
! 4c9602547da5368e2bc94084ec068464  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/59427.cc
! 6b458a8d147963ed3b84e450c7da7ee5  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/9339.cc
! 8d737cd0993d3599cc225ff2e27b390b  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/9701-1.cc
! 2c4b8d0a9defe6248b2076df9a0f9a2f  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-in.cc
! 2a9a05c59cc4ffa77c56b1b65e4ef9df  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-io.cc
! af92a1fc6c59dc18f02103edfb62a0b4  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-out.cc
! 9ab368948902b46bbd8fed0ad962bc91  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-in.cc
! 51c0a9ac6a594d7f26d9c5e55e3416d1  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-io.cc
! cf5643f95b4d777e80ce3b058f16cfbb  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-out.cc
! a1be27b547ab28198c89dacbfd538f26  libstdc++-v3/testsuite/27_io/basic_filebuf/sync/char/1057.cc
! 775f640c9deefacb6dc0da327e8b0aca  libstdc++-v3/testsuite/27_io/basic_filebuf/sync/char/9182-1.cc
! 20edf3a9e8abd42639cb06da9a6b43aa  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/10096.cc
! c6babf6ebbe8173117d0366fc6f56980  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/1.cc
! 9ed2b1699a03a90b44bebbc348bfc074  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc
! b9ed8eb3e9e2a3695d2469952e0a7f4c  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/2.cc
! fc8f09ed12e28acdecb0ee4bbd3f9fe7  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/3.cc
! 462e3dc6881b13f01cdabee12e775143  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/45841.cc
! ac9b7ac2ad0cd6da9d751975df2dacfb  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/9027.cc
! f60c9e43361990c2f54f9a9410a0ac79  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/1.cc
! e9e4ef5a28ee5df5216fb12ede252a6f  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-1.cc
! 32f44abf77772fc19dfaf39063e7022f  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-2.cc
! 76dd294381a88aee8b3413b86db3c33f  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-3.cc
! f659f04d17017f6c55701200f9229fa7  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-4.cc
! 318ce3841eefe7ceb4a6ba21c78e6512  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-1.cc
! 42245d77473a71a6a4f11a652432281f  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-2.cc
! 82bc74d59a0aeca542950654cc63dd82  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc
! 78830ac3c7d1c835ddebbe25cc61474a  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc
! 3ab7f17f3e607c015b8b997102c7f95f  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc
! 19b46c2bca3dd35094977193d28cd426  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/4.cc
! 5e88acb2c741d64033c8d5b988482f52  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/45841.cc
! 6cbf0e1f137e980243dcce4b2553fdfb  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/5.cc
! 1e687cc629c978d8b64e710ad585bdb2  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/9178.cc
! 178b8af5d27242da23e83d144a0d3120  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/9520.cc
! e99909f354fdf66bfc5db689c296689d  libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc
! d68dc1f036b33dfcf5027a5dde8ffd26  libstdc++-v3/testsuite/27_io/basic_fstream/assign/1.cc
! 4d0f99262c5fc7ca64fcbdcae111d127  libstdc++-v3/testsuite/27_io/basic_fstream/cons/1.cc
! 8cf33c6d7d6569d07e542e12f9ec38f5  libstdc++-v3/testsuite/27_io/basic_fstream/cons/base.cc
! 817f87ce5450569e38191edb1473a72a  libstdc++-v3/testsuite/27_io/basic_fstream/cons/char/1.cc
! a09a463b4807d7d9ef2a5dc53350e01e  libstdc++-v3/testsuite/27_io/basic_fstream/cons/char/path.cc
! 9f5d8d1e52bba1548588efd55c8b0b49  libstdc++-v3/testsuite/27_io/basic_fstream/cons/move.cc
! 016ad76732c99817db4176a7c72af3bb  libstdc++-v3/testsuite/27_io/basic_fstream/cons/wchar_t/1.cc
! 54c8c4566c9ebfc7f86d1a86ad89e8e1  libstdc++-v3/testsuite/27_io/basic_fstream/open/char/1.cc
! 625b14ae9159783a80cbb1001a5b9b48  libstdc++-v3/testsuite/27_io/basic_fstream/open/char/path.cc
! 6ad758380e05a5e465b96257adc3197f  libstdc++-v3/testsuite/27_io/basic_fstream/open/wchar_t/1.cc
! 61220082a4d937fa248cdbd130c76f03  libstdc++-v3/testsuite/27_io/basic_fstream/rdbuf/char/2832.cc
! 8911532cf4fbee7d823d88f353932ac5  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/base_classes.cc
! c5eded8fb78c5edc0fcaa645f9333875  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/explicit_instantiation.cc
! 1e5c6e50a431f50cba439fe55f449280  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/typedefs.cc
! 8c9478ee61b766a82d8e56c11407b1df  libstdc++-v3/testsuite/27_io/basic_ifstream/assign/1.cc
! 64a620ddccea80be29f7bf6a87946712  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/2020.cc
! 62e5ab1bb0d2809a82982374d412a1a1  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/1.cc
! 98a1bc0f075269c8110a3150da04d7f3  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/2.cc
! e83715c606d1a4faa5afe13708a3f28f  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/path.cc
! 912c4d5db6bcfc32433c79e361e70a13  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/move.cc
! f4518eeab7f2886a12097effb12771dd  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc
! d9490651d5947e458ee9116c2fd6306b  libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/1.cc
! c777b62103abcef44682a931976255de  libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/2.cc
! 47961104d51f317c8f42e03532b32c40  libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/path.cc
! 738b5f734cf7a2e30454e975d3053a00  libstdc++-v3/testsuite/27_io/basic_ifstream/open/wchar_t/1.cc
! 3d0e82a5aac7cc45f8b0922cde0871cc  libstdc++-v3/testsuite/27_io/basic_ifstream/rdbuf/char/2832.cc
! b01d9813b17919d647f538c6a1f01077  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/base_classes.cc
! c23409ad51158418dce5a246cc36f8cf  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/explicit_instantiation.cc
! 034f9e55fa9c3d45d3e07d3a45d6f8f0  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/typedefs.cc
! a83cf509414725e5c0411cff6c4b83b0  libstdc++-v3/testsuite/27_io/basic_ios/clear/char/1.cc
! 76d2bc13e8f01ae5bdcfe6037a849c33  libstdc++-v3/testsuite/27_io/basic_ios/cons/2020.cc
! ecdfd7913fa2d73e0ba802d2389f0bd0  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/1.cc
! 183e8fc21f248503558699c7cf3ec038  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/2.cc
! 372c86c19b2dad41362ed3cd8186b1aa  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/3.cc
! cf4dfb5a2edc148f9d2b6c0c13249aae  libstdc++-v3/testsuite/27_io/basic_ios/conv/bool.cc
! 0f2a62b356d10a2ab1fee6e071c1a8f8  libstdc++-v3/testsuite/27_io/basic_ios/conv/bool_neg.cc
! 51bd88e9977897814152b42036a85907  libstdc++-v3/testsuite/27_io/basic_ios/conv/voidptr.cc
! 6596fd2bc8e59b9e319a9620e5c6ae61  libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc
! 1f54a02e32d4143705299543b26239e1  libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/2.cc
! 4a3e8b6a7fbaa58a4cbbfe3ab3b4f8b7  libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc
! ca77dfca877593ef46b3e6f89cb2ef76  libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/2.cc
! 0011a0418983165d152dad9bbcf21e12  libstdc++-v3/testsuite/27_io/basic_ios/imbue/14072.cc
! 7e599ca6a637b04fa921c50159a2a452  libstdc++-v3/testsuite/27_io/basic_ios/locales/char/1.cc
! 4d69264655b2b2114b38fea8025eccce  libstdc++-v3/testsuite/27_io/basic_ios/requirements/base_classes.cc
! 1a16228459b9570280c3ddc18d439c90  libstdc++-v3/testsuite/27_io/basic_ios/requirements/explicit_instantiation.cc
! 3b1e2189c57b3e508b86d696a5480c31  libstdc++-v3/testsuite/27_io/basic_ios/requirements/typedefs.cc
! 0ce920d0ed5099fa350b4ae3915dde01  libstdc++-v3/testsuite/27_io/basic_iostream/cons/16251.C
! 5ad82a7b86b0d99b961ee9d9df23ba8b  libstdc++-v3/testsuite/27_io/basic_iostream/cons/2020.cc
! 0c7d2ad945ad5c4861af6f2dc69c245d  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/base_classes.cc
! 1068b1d604c2ab943511540eec4fb7f3  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/explicit_instantiation.cc
! ac54e4ca26ea073b37b2b7a5fb06c231  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/typedefs.cc
! 113198ae36aad80b46f2673c9d72a77b  libstdc++-v3/testsuite/27_io/basic_istream/cons/3.cc
! 1c7516edfd79f004c61d7dd2c076b3a8  libstdc++-v3/testsuite/27_io/basic_istream/exceptions/char/9561.cc
! 0542fb8417d9ea87de9c6634f4fca53b  libstdc++-v3/testsuite/27_io/basic_istream/exceptions/wchar_t/9561.cc
! e311ee1fd1f3078560a911cc98377df2  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/01.cc
! 344ca94fd218a72d421d10d510655a53  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/02.cc
! fc78f5223ffbfb24e1bec1ed8711d6d8  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/03.cc
! dbd0999c8bbdb22db9d4bdd0530ed7ee  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/06.cc
! e6d3a3c5aae6563a49429b1ade80423f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/07.cc
! a99651a7492b771de81b82558822efb2  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/08.cc
! 8c851b72e8521bc5a2f7284ffcf8b763  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/09.cc
! af141c909dc5bc8cd73af9e11e7d2476  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/10.cc
! 7a511d039f8e2b359cad6abd56851eb7  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/11.cc
! 47bad32262886fd96ac5a465da772e15  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc
! 1ea96146c0fe05ab9efb90cb75ae6a60  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/13.cc
! 7c89eeac7d143f73d922cb86aa4fcf26  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/9555-ia.cc
! 4c0c16830ed181e7566184d39f7b4d9b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/dr696.cc
! 477ff884212a9226561410b9e01ad037  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_badbit_throw.cc
! 2a796dcb75b7ff1c8a62047df7b732b9  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc
! afcbcaee9005ef11ff7162d44c8d4421  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit_throw.cc
! dc4f12fa1364204007c7286d6fb17023  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/pod/3983-1.cc
! d335045ef78a687200559bdff5e788cb  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/01.cc
! cf7ed0c3a380fa6fb9b10197628b36cd  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/02.cc
! b90527db5d063e53a3900aeb51dcd016  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/03.cc
! b307812787b6e99b220ac8143debee6c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/06.cc
! a93f5e1826cc7f4d3f7342a83d747f9a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/07.cc
! d7f620eee5b2d7e0baae7123e04118d7  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/08.cc
! 3829bc9168effb36f323102c09fc31b2  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/09.cc
! dc579eae24053fdbce423bd0bd325992  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/10.cc
! 29a36676630a18b95c53f7171105f3cf  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/11.cc
! 35771dd3c7ffc189638953a078321ddf  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc
! 4ae264391b596a02ee516bd900eeb705  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/13.cc
! aab4b7b828b773a0e58cc9f1b9601559  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/9555-ia.cc
! 6168f87ebb6d8e96648fc0b01b30484f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/dr696.cc
! 49943a2b9cc08d5a36a81ec1d192fb22  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_badbit_throw.cc
! 411c093559a6361dc97d80e4c5ac3391  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc
! 19cc94e59ba8a7457407b2afb2bfdd59  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit_throw.cc
! f4981696c12f409e4c975bb1300014ee  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/1.cc
! 3afced9e77e3a58c283155b08317d1b7  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/11095-i.cc
! 38cac111e9117a084017fb52bbabec55  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/2.cc
! 0c20566a8434134e436280a687b7e09c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/3.cc
! 30a452bd387cea93dd0d9e59e79536c9  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/4.cc
! 834a2a4f7a94b5a080eee5455022bfbc  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/5.cc
! 474cee7ab40c0ab88ae07eb15bf7f2a8  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc
! 53c9f9c583cf3ad793f2d32c932a7ef4  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/9826.cc
! 12ea92388dbac4a0d7571d73b909bc2e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/lwg2499.cc
! 98bdb7429cb20d7645f42dfe189734b3  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/lwg2499_neg.cc
! f281f4ecb3e7ee43b16a03d632881397  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/overflow.cc
! 35eb903d910dbaef5b68c41b0f7f5af2  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/pod/3983-2.cc
! dc789e8232354508689ebfde38eed89e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/1.cc
! 4bb4834804bab4ed5a4b44f94828436a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/11095-i.cc
! dbf0c4cc43383f02d3867387c97c3466  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/2.cc
! 57195bafa1d2591b0520b75724a9b27c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/3.cc
! 041d87cd5c839b1643eb833f813856f0  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc
! 8096b617180964173a49c25df21cc826  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/5.cc
! da9ebfbb4bdd82e8fba20813a5f22346  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/9555-ic.cc
! 87b9350a8e7241bbd67e34a312597cc4  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499.cc
! c36998c277aea0eae6740a0717097b0e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499_neg.cc
! a5b39100e3ef5d0b8229cac79538a976  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/overflow.cc
! 8b2e6695b44603c556ae9a9d546ea3ac  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/1.cc
! c1450feb66e172ffea2f025126b9ea42  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/2.cc
! 91395634320ab8fa7fb3a2b24ec13c19  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/26181.cc
! 735be119ae837ddb87b618b523ccaf08  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/3.cc
! 2db86eac92f674c7a16cc349989c85f9  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/4.cc
! 2854aaf2a63b6234aa16ce98106180cc  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9318-in.cc
! 2e278c9a2c2d673be289cbdcfffaa0ca  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9424-in.cc
! 089be149aebc1e3693b0147691676692  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9555-io.cc
! 0befe2ccad3966f044bcc05075d95613  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/error_failbit.cc
! 3bd9effbc3daad5206ce5acbd32e73af  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_badbit_throw.cc
! 4113a45b7a5de954a3421881009ac040  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_failbit_throw.cc
! a3d4f83910550ce883bdae949883408b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc
! c395fa0f0c03c7d5861315509ba48b9a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/pod/3983-3.cc
! 9cba4567eca73d6932aa9d22a86ae3ef  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/1.cc
! 4c6f2966cce347d285b73ca3c26c7a95  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc
! ee35303f1f559fdc431aa5ba1c1b567d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/26181.cc
! 80e6e5ba81d35da50a3b9aedeeba19f1  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/3.cc
! ee5b2c2813d372ffb043dfb2908c69b8  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/4.cc
! 517cdfaae6262735e385895129562de0  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9318-in.cc
! be79373bcc152f3c6dd806e6526f78ad  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9424-in.cc
! 59743e78828fc01171e2ed61e6b9f95c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9555-io.cc
! 32ade69323a901011ddd71db37a331e6  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/error_failbit.cc
! 0afd60baf4c905348cdd5fba58fa3f38  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_badbit_throw.cc
! 73b0884e6b9deaf0725ae1a1d66b9b35  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_failbit_throw.cc
! 3c7316a5da1399ffb0d25c9739df6f68  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc
! 019a93c1a3176971847704b57a44eca9  libstdc++-v3/testsuite/27_io/basic_istream/get/char/1.cc
! ba1b5274aa09142a12bad402d1e3f0f4  libstdc++-v3/testsuite/27_io/basic_istream/get/char/2.cc
! fa805408bb0b74a757f806dba867dd26  libstdc++-v3/testsuite/27_io/basic_istream/get/char/3.cc
! ec595c451a4dbdde7f08679ea30c2bcd  libstdc++-v3/testsuite/27_io/basic_istream/get/char/lwg3464.cc
! 3b69506e8bdaad12638d133c249465fe  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/1.cc
! 66573ae4d7c30fcb0c369519952fabe4  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/2.cc
! 1bac849e705f997e0a2fbc61cb861515  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/3.cc
! a8a64567b06d6368e4ee8b08ae3818be  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/lwg3464.cc
! 85da7c38fa6a88e5f9554f4d039360bf  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/1.cc
! 2f0ef79f88c0d1ce76ab7331c12e45a4  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/2.cc
! 9995c885e202dcaed035331ab0ce2abc  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/3.cc
! 567dbf6a890d484b90eba2588b0d8e1a  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/4.cc
! 33bd034c643e7810ed8b7f92d0ced4b3  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/5.cc
! 863533e08054b2c6d8a3339d2a794728  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/6.cc
! fe46f6e6835adca091bd6cf46ea67271  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/1.cc
! 1df70f2a81e89eba1a714477e837c55b  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/2.cc
! 7bf739cb3ecb794bb7679cc11fc84924  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/3.cc
! b1e70b96f303392e22a7ec267b5db813  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/4.cc
! 7e052bcedc5cd468d3f2e3ab39247c21  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/5.cc
! f0162ab128b14f2d25b912d8df9c90a1  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/6.cc
! 95c664e345da9e05389530605e1eb88b  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/1.cc
! cddd16714ccb83f2b4f0e1556dc41c75  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/2.cc
! 7c6764ced50aa6860a866aac145ec2d4  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/3.cc
! 8ca6af6ba457fb8c7573237389efb3c7  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/6360.cc
! 1a51039b17b876c9061e5280bb3e6b95  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/7220.cc
! 33412d33bdfdd6122e0a22ebd7a4fe97  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/94749.cc
! 9249bf9b16e58690fdd2ae54549a4dcb  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/96161.cc
! e42b24958defbbf38df5d3b4c6c9daae  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/1.cc
! 44e7de5754912979667de2c50f79811d  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/2.cc
! 990061c8d421500980cd08411f7ee951  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/3.cc
! 19eb900e45de6f12e362794aec9c8660  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/6360.cc
! 2a3cd1f412a9e2e0353010f909e7d1f6  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/7220.cc
! 57e9129a48629cf050e1a86c0f4ea3e6  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc
! ef19e12c4284417e3e3586cf481d0224  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/96161.cc
! 89fe2824d89b1dd687d5debd35a21750  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/1.cc
! 329409a3db014da23e4266f0dcb9583c  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/12296.cc
! 6ab4ece1eb04323f00b2d5e0b4ea838a  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/6414.cc
! 5517b6871bb9c530de539b99914d6f83  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/1.cc
! db7567725e1e2bf421239b1ccd1d46ca  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/12296.cc
! 0e2bb87a7400ba92b3c7ffbe74317760  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/6414.cc
! 242a3e98b99894f27263d467a9f5f065  libstdc++-v3/testsuite/27_io/basic_istream/putback/char/1.cc
! 766d098d06c5f4e22ff6c9c87bf625b8  libstdc++-v3/testsuite/27_io/basic_istream/putback/wchar_t/1.cc
! 0fef1042c89f5280b8b73d18976ef14b  libstdc++-v3/testsuite/27_io/basic_istream/read/char/1.cc
! 783511d7d8ee53a68bd37d7305a17acd  libstdc++-v3/testsuite/27_io/basic_istream/read/char/2.cc
! 639eb71534c7ded72cdc42bc1910e277  libstdc++-v3/testsuite/27_io/basic_istream/read/char/3.cc
! 6a1e204221d6a57b77f72dbe84c5e588  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/1.cc
! f648e4a2688f3a0d88c5005c4fad00fc  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/2.cc
! 0ac9ed86677652a4be520d283b3e4991  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/3.cc
! 85fb1dd12ab707b98272555fce97700f  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-1.cc
! 61d87a0c42484354eea143bbd912b1e3  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-2.cc
! 6bf13e823c927fc0e1295447696af41b  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/8258.cc
! b59220fb69ff77273d57111e5767cead  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-1.cc
! cee33b0038173da89fd43bb238a6a6c4  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc
! a216368c82c6733bd2412512e7865c6f  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/8258.cc
! d743689dfab19e1c41bd964a6dd68d4c  libstdc++-v3/testsuite/27_io/basic_istream/requirements/base_classes.cc
! 461ce5f75d50afef1eb4890f9b21e162  libstdc++-v3/testsuite/27_io/basic_istream/requirements/explicit_instantiation.cc
! 60f3aed78a16275ac3a44a706ffbb202  libstdc++-v3/testsuite/27_io/basic_istream/requirements/typedefs.cc
! 2e728ef6893e474e6d041b1b3b3dc1e1  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/2.cc
! 96027652cb091b0f805b4b7b6a1be6e1  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/26211.cc
! 43f8aea3ba6b1765ca05d5e184672196  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-1.cc
! 599173ab96d9d3290cd0059e57962fde  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-2.cc
! 409e6ec198221631035c78631b754817  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/exceptions_badbit_throw.cc
! 1e8fb8446e40d7d58182db4639eb10a9  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/fstream.cc
! 4757ec573efa257318f16c5cfe9062d3  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/sstream.cc
! 5d08666f67d2785385b228f6de003b5d  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/2.cc
! c1742625117104f24c8f2537286fc384  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/26211.cc
! 44d3f421e33a3db39893c60657eba022  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc
! 11f8027f5210297e264b764dc08b4c2d  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-2.cc
! 425734498894bda3544037811722dd00  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/exceptions_badbit_throw.cc
! 37cf4827786dbaed95d382d7bd858fd5  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/fstream.cc
! e20350ae537a07cb352179ac15954b3a  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc
! bd02daaa34d1a10eb5ae45b832b9fa7a  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/1.cc
! a6b915afd2c4d16520d5d4280fdb2cb8  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc
! a1cbd4393d4fd0254e79096a1c298172  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/2.cc
! a139746c9254da484de2f5068a1cd324  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/3.cc
! cf6f1e8aff27153822e3d4e3b36166c7  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/53984.cc
! 8d7a8dced19257af218f42ab9ea92aaa  libstdc++-v3/testsuite/27_io/basic_istream/sentry/pod/1.cc
! 3f58501938c682d44cb401e6274ffba1  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/1.cc
! 5209f4272678880d3e89d44fd6fca28a  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc
! 2f0be86384538ab81ea44bb3f63e9bc6  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/2.cc
! 49a0ec5cb51b528b48462303b7283079  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/3.cc
! f763fbbe7f27358485262a0a51ce0594  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/1.cc
! 8773a27209f8fa5f28020c42ab0006a5  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/2.cc
! c3d0dcc2649244a2be726b229dc096be  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/26211.cc
! 81707b669009e97cfb3f5cfabadd51b3  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/8348.cc
! fd4bf7eee750e574405ba745318dbb0f  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/exceptions_badbit_throw.cc
! 3fec8cb3d105eff1dbf8156865c4bafd  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/fstream.cc
! a526f042240cae66360ebecb3747a551  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/sstream.cc
! 271216eeae4e7b1576ec7332b56663a1  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/1.cc
! 87849b67c7c8df7932e468703a0ac6e1  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/2.cc
! a8f0e1d1fb66a7aa67931ed0aac93e0a  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/26211.cc
! e8682f70e34b67fdd0c5ae28fa8383c4  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc
! f2f2060341bb73a667745248ac2e5a6b  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/exceptions_badbit_throw.cc
! 84362f8f505b9232afc3c1de9b5551d5  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/fstream.cc
! 6af5c3a65f98fe7f40d867985c7076ea  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/sstream.cc
! 136bd07059922a796777eb2c3fb97897  libstdc++-v3/testsuite/27_io/basic_istream/ws/char/1.cc
! a1bd13a84f1e60f6370c3919f9ae4c41  libstdc++-v3/testsuite/27_io/basic_istream/ws/wchar_t/1.cc
! f75201df9be421060b9fb4bcefa0e38c  libstdc++-v3/testsuite/27_io/basic_istringstream/assign/1.cc
! 7618100ca2cb8eccf758968f9a28e2cd  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/2020.cc
! e02d9d47192893acecbfa1712ae77149  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/char/1.cc
! 099e74fd950a34b99ccfe3358531356c  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/default.cc
! 57409e90c20e37af300bf1db42c9b979  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/move.cc
! 3740c843aa256dc769c249cdc06aad37  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/wchar_t/1.cc
! 68d4f440ed797bac0a31d4d37c6119b2  libstdc++-v3/testsuite/27_io/basic_istringstream/rdbuf/char/2832.cc
! 32e435a50c30937e973f415f1e59fe13  libstdc++-v3/testsuite/27_io/basic_istringstream/rdbuf/wchar_t/2832.cc
! 2f33d2d565a081fbc73f4d7dd287fea9  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/base_classes.cc
! 28d8a921e0958ea36bce5b43a8048fa4  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/explicit_instantiation.cc
! b755c755ef5d45a7fabe5e1ba00962fe  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/typedefs.cc
! 40cadca5b4438436901d646e24b96cb0  libstdc++-v3/testsuite/27_io/basic_istringstream/str/char/1.cc
! 8eb07207aee5769b7f385224bba5fb05  libstdc++-v3/testsuite/27_io/basic_istringstream/str/char/2.cc
! a1406688188caf5c3f81b0ce3f87390c  libstdc++-v3/testsuite/27_io/basic_istringstream/str/wchar_t/1.cc
! 856238596c24ff077fc4f4c087d4ff30  libstdc++-v3/testsuite/27_io/basic_istringstream/str/wchar_t/2.cc
! a5bcecd970475ff03dc977eb56708039  libstdc++-v3/testsuite/27_io/basic_istringstream/view/char/1.cc
! bebc9955f12e49697b422aa740200b56  libstdc++-v3/testsuite/27_io/basic_istringstream/view/wchar_t/1.cc
! 40890d4d327687cc576590b23e286a18  libstdc++-v3/testsuite/27_io/basic_ofstream/assign/1.cc
! 6d8885d72951ecb11cd763529e26ee1c  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/2020.cc
! e9b0721266a1fb14e708188f7fa85afd  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/1.cc
! be7d740b0c7e3bc48db46059243ec200  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/2.cc
! 7b5f4daecd66f23fa871fcac6591a542  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/path.cc
! 84749ff69b5f6694b24758737392c3f1  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/move.cc
! 23e4216c965a8a983edf4bed95712fb0  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc
! 842b9740f3fdd45315767b87c699b2a4  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/1.cc
! 4349d4771068ef20b9abb40327817a59  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/2.cc
! 6476e4f9644f6fb162e07e12cbd40250  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/path.cc
! 26e67b0b05aad969cf3e94ab0583f12f  libstdc++-v3/testsuite/27_io/basic_ofstream/open/wchar_t/1.cc
! 8d583b43a920b2d9a898cbc1310e9594  libstdc++-v3/testsuite/27_io/basic_ofstream/pthread2.cc
! 4d3e74019ef223bba8dcaec152afb329  libstdc++-v3/testsuite/27_io/basic_ofstream/rdbuf/char/2832.cc
! 1d12fcdba762fe9592c9fbd6a66e251e  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/base_classes.cc
! 1f2d0fba602cfbea0d5439ea7840c419  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/explicit_instantiation.cc
! 05a1a2d4deddae00cf15183ec1778636  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/typedefs.cc
! 64e9311fa2bf5dd54a5b7d1f96eb2044  libstdc++-v3/testsuite/27_io/basic_ostream/cons/2020.cc
! 2aaaadf0bb5d781ce781a83b5ba47b00  libstdc++-v3/testsuite/27_io/basic_ostream/cons/char/9827.cc
! fbb4458eb2089a04cb17725bd806830f  libstdc++-v3/testsuite/27_io/basic_ostream/cons/char/null.cc
! 97df24306b2c68e45f249ff32d6acba4  libstdc++-v3/testsuite/27_io/basic_ostream/cons/wchar_t/9827.cc
! 9082dcc72a41c9167c51e53532c4db0d  libstdc++-v3/testsuite/27_io/basic_ostream/emit/1.cc
! fc4d7a6a0f785795af97af9cef16e503  libstdc++-v3/testsuite/27_io/basic_ostream/endl/char/1.cc
! c8fcff1fdffe008637085402e3c53f6a  libstdc++-v3/testsuite/27_io/basic_ostream/endl/wchar_t/1.cc
! 2b0f00a080bea546d2ed1f2bd8053c81  libstdc++-v3/testsuite/27_io/basic_ostream/ends/char/1.cc
! 7838df230804d51eafea39e5e2d8003f  libstdc++-v3/testsuite/27_io/basic_ostream/ends/char/2.cc
! a0d8d6949382fff443431abbd49cebd4  libstdc++-v3/testsuite/27_io/basic_ostream/ends/wchar_t/1.cc
! a73ed98f10155a59e6193dcb40f8fefa  libstdc++-v3/testsuite/27_io/basic_ostream/ends/wchar_t/2.cc
! 5405653ac67c81813bbeede31b7ba14e  libstdc++-v3/testsuite/27_io/basic_ostream/exceptions/char/9561.cc
! 3793da249b3cd8d64875450eb1e2f94b  libstdc++-v3/testsuite/27_io/basic_ostream/exceptions/wchar_t/9561.cc
! 37dc42dcfcc92cbdd277e4c9cee3d671  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/1.cc
! 9e5523fbbe2f7a20037fd1c3d08807e5  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/2.cc
! f20f0547c23e8de3b8fa9464c08de251  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/exceptions_badbit_throw.cc
! f226dda0d7f02208d86b315673af028f  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/1.cc
! 534de7963bbfdb51c4ec1b77777c167b  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/2.cc
! 4590320e85957a1c64a63cbfcd0428be  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/exceptions_badbit_throw.cc
! 57da29349ba447818056caf17b96c8c5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/1.cc
! 862af6898a5ba89d0a370b0e523c33be  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/2.cc
! ffdb1c216cc0a7205d16b7d15f035389  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/23871.cc
! 4b25200e481ad18b73fda63e7b7c68b3  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/3.cc
! 1085cbd81a8ab02bda7eea159b17aef5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/31031.cc
! af3be1a517c7d15198371a54567916c9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/4.cc
! 3c1925c009ba1ceeb84009ced76c6a09  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/4402.cc
! 8281136243bfc881287afba7ad0d7a6b  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/5.cc
! f65e56577dcfc733674e1ec15bf1b2c9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/6.cc
! 80e726992fc054c6ee9e7c5cfd28850c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/7.cc
! 34f94e10bf1a1e79c86dd2cbebd00d6d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/9555-oa.cc
! fb80c7f2dc3821724b4645650ff07156  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/exceptions_badbit_throw.cc
! f5229dba0e8afcc2a0a811966f1c76f1  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/exceptions_failbit_throw.cc
! 2b79d3f9d321f1944389003d24a91c0c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc
! c7a4e919c54c11e4cc432f87e2341d71  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/pod/23875.cc
! 36527234cf31c6844b3d4e35d40f3471  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/1.cc
! d1b0568b9b662e465b00060bb8356d5c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/2.cc
! 4f475744ac9af9f9221a1bf516491b72  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/3.cc
! ec511f46601048f5b09c9f71bea1abf4  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/31031.cc
! e5f835325f9555fd4d30c3f5af4de006  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4.cc
! 6236b12af5615fa9e84d619d7a0251b5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc
! c38b4dc7914d796c4a8efd833701a7c8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/5.cc
! 8d524929000b77660c3ac23f96415af3  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/6.cc
! ec6688327eace39b975a6635f234a0f2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/7.cc
! 3c90362447fd36920930da26bc092107  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/9555-oa.cc
! 37c577ec265f5df535f8467002ac61c2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/exceptions_badbit_throw.cc
! 7c2655df7a389a465dc97d3ab8549f49  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/exceptions_failbit_throw.cc
! 5a1dff4646f1cd5aa6215c45f449f8b9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/1.cc
! 2377bc5a190286f66db1825642e2bcc6  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-oa.cc
! f36ba222b790a8529f1dd761c4d3a7e0  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-ob.cc
! 697380bf1accaff9d868f5619419525e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-oc.cc
! ca53af546b938f6db1e8a29ab3beab7b  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/2.cc
! 6ac7cde331370bddbc0eeb50fed4527d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/28277-3.cc
! 06a2bb7bbb4689fc2fd3f119d02c85d5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/28277-4.cc
! 733e5d59220cab7f74a535287269ab44  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/3.cc
! f28a96eb0d9eadb0ec3d13e0f95477fe  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/4.cc
! a8b365a8e49439f49d21bb45017aefe5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/5.cc
! 9bc8c8b234e1470e8e3b0e42fc4efbd9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/6.cc
! ec161b93323942a3d4ae0153d46741a5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/8.cc
! 19acbefd17726a07e884f20fef8a0f4e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/9555-oc.cc
! bde0147cdf07b79b5f8ac8d46b311bc8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/deleted.cc
! be8c453a703320ac4487ac322710f6a4  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/1.cc
! 5a923be7b67eb7a2a75d018e052e7ec6  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-od.cc
! d535272e6a19e4c636076d6994c1d560  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-oe.cc
! 70e2e512274f180355df9ff84509c200  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-of.cc
! 6737b6ce3ef6715e85f4edea7e3c46bf  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/2.cc
! ade475d77052499b2467a3f2167e1f42  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-1.cc
! 8824bef953ae28bf2b8944a22189f8c2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-2.cc
! e6bf09b531f1acdc5cfe79635c305b87  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-3.cc
! 84bb9563dcd0a1c7ad848771e643fd91  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-4.cc
! 962c75eb9a9de90f337dddacaef4cb8c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/3.cc
! ff3ff2c74fcdd02a84085daeb89a44a7  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/4.cc
! 79f6f13cba64c08f7ae68c7c80196a12  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/5.cc
! d82d301c816d76f4ea4545911afea5a5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/6.cc
! 9475b07f4037522ae787b118ec825e48  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/7.cc
! 60699c43555f4079959c0427a9be4bc2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/8.cc
! b574778ae37b8439dacfadf6dbf1f30c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/9555-oc.cc
! 4f4ec628aaa55f106991d9094ef155dc  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/deleted.cc
! 7146d7730215c25eb293426ddc433d31  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/1.cc
! a95920567dde3aa4dc682940935c0fc0  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/2.cc
! 3975a64888e89d567856e4fb7c24f8a2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/3.cc
! 4881bca340a00949264adcea76214b1c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/4.cc
! 7618d315fc7d044d496d197040aff5f5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/5.cc
! 42d77992e171fdc78c475e857bae713c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/6.cc
! df6d60199d2ffe5942a8ee2c1db875a5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9318-out.cc
! 398cda3f699e095d7af9d5df27616b7d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9424-out.cc
! a4d6412950830a03b9c6b5e9fbdfa149  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9555-oo.cc
! 32ff465979f1f3f61afc3e998e6d55f1  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc
! 5e43d4e5a98aa1009e2a60883e1d11db  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_failbit.cc
! 93a113b78e49ba88c9c97bd63dd54746  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_badbit_throw.cc
! 57dfad422c43a74ace1c461b72742c7e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_failbit_throw.cc
! 5e242aa2f65920bb3d0835bb85735cad  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc
! 9ff00e871700f6c6a09fdcf1d61826e4  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc
! 786b69042a52dd688b8c3f7db7890245  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc
! 6f54824979f067e90bda62dd8f1c437f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/2.cc
! 18a9b4c68e503aec5d3a9226d25c1584  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/3.cc
! 9dcf61925212d0d1ac1947e610a5ece5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/4.cc
! 4d35a14b368b7d953d926ee1578fb55c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/5.cc
! e3fed4c248848f7b9b486d233ae5ff49  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc
! b9bfec08c33806843fc1f2f830656d2d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9318-out.cc
! b2c9630a49e894244fe4c8247d2e55e2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9424-out.cc
! 9c2b28605fbfdd158b735b44d8ec3050  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9555-oo.cc
! 4201a26e0c7030ad71b5453be8ae8a16  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc
! 1bf37e4299e9ca9ac64f5e965272ae53  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_failbit.cc
! cf82184db1b0ce24f703e43af695a0d7  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_badbit_throw.cc
! 36b8243008c7cc007710faf6b87da889  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_failbit_throw.cc
! 903bd425a938928e1c8393609f3ea21b  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc
! 1d08dbaba538795d77228ae4944fa513  libstdc++-v3/testsuite/27_io/basic_ostream/put/char/1.cc
! dd2dad15e333ec615a705cd5e326f849  libstdc++-v3/testsuite/27_io/basic_ostream/put/wchar_t/1.cc
! 6b600d5ed3181c88fb718be7055d2f05  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/base_classes.cc
! 2282a3f9ba86ed6bf8bab49158575bf1  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/explicit_instantiation.cc
! f39b4033b1d9d1a997bdbc8376424f4f  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/typedefs.cc
! 6e68c318cb763048d45c7d1e5b103ba0  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/2346-fstream.cc
! e6b6e214db6ac74560adaa777cf98a09  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/2346-sstream.cc
! 70441bb79cdad41aca2a92b753ad5921  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc
! 4ff072b3ab2f3918bb2e7b5c341a17c7  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/2346-fstream.cc
! 4f845d27f01efeb98bb82196cc557479  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/2346-sstream.cc
! d7289608eda3a4eb2e31a73ebd431c1f  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/exceptions_badbit_throw.cc
! 1a60abb33bb7df8944b39228684df66a  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/char/1.cc
! 8e1ada348bd4606ac1b4625f06f5fd79  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/char/2.cc
! 19b14795532d3c4f53db148889db6a9b  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/pod/1.cc
! 2c2af5edc2230104fbcd3ca9f546b517  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/wchar_t/1.cc
! d6bd8ba6e70e2ef4c5d81673c9ed7343  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/wchar_t/2.cc
! 0d075de5f288f55e26f16a6a396dce89  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/1.cc
! d769282716348adca50b58072a235bb6  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/2.cc
! ed0ec66e3aa1d7a56a95ff8a9c853197  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc
! cbe1fc8bee5767b39f78d8d01eba364b  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/1.cc
! 3a8d01204c7a60f9832ddc43f271eff0  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/2.cc
! 3f9bab283b68ae003d8020d563537716  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/exceptions_badbit_throw.cc
! 95647b4fb9f68c5ac7304469410f6581  libstdc++-v3/testsuite/27_io/basic_ostream/write/char/1.cc
! 5b70b3dab9699023f078cc605f739d40  libstdc++-v3/testsuite/27_io/basic_ostream/write/wchar_t/1.cc
! 06013bc89460d127162daa2a27bfbc5e  libstdc++-v3/testsuite/27_io/basic_ostringstream/assign/1.cc
! 62d4fe9555d560cd7207fbd77bdd8f14  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/2020.cc
! 7766e041f107dce95e7a6ece72858184  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/1.cc
! faf48f119bcbdc2e66bf408c2f3738f4  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/3.cc
! ca87f849b2d7cb932c5335eca71673bf  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/default.cc
! 6af14d345f40521870a42c51c32bc742  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/move.cc
! ae45ef1dc40ebdc098bb1fc1ba73ff44  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/wchar_t/1.cc
! c403e30debe966ebf33c6c3e2d4f6653  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/wchar_t/3.cc
! 0e64acc5d02b14bdd02bb1140dd98a9e  libstdc++-v3/testsuite/27_io/basic_ostringstream/pthread3.cc
! 93762c1319ccb31b192c7a45dbd341a3  libstdc++-v3/testsuite/27_io/basic_ostringstream/rdbuf/char/2832.cc
! dc602738dd45c71a6bb8a17a86e4de45  libstdc++-v3/testsuite/27_io/basic_ostringstream/rdbuf/wchar_t/2832.cc
! fb10c9992240dc2de31c3ed7442f8bee  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/base_classes.cc
! 22d2aeaacc948750c68b2e2c6edd83b6  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/explicit_instantiation.cc
! db74ceac28a530cdbb1e4a4035d80883  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/typedefs.cc
! 71dd0b4ecfe9b524d2388f13334c6275  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/char/1.cc
! cb3104a123a5f199047400309beedc5e  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/char/2.cc
! c7f4efa3b8ad36789f8160a966cd30ed  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/char/3.cc
! 5c2259731550db794f7de1e534c6f6f6  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/wchar_t/1.cc
! 59c74b7bae675f692586d88ed46ffd8f  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/wchar_t/2.cc
! 9848c6e1c1324bcce70f0279caf9d933  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/wchar_t/3.cc
! ff5e6242d5ef13bdfe090662717ab8da  libstdc++-v3/testsuite/27_io/basic_ostringstream/view/char/1.cc
! 37e18916a4c0e79ece8ba49278b32cab  libstdc++-v3/testsuite/27_io/basic_ostringstream/view/wchar_t/1.cc
! 195a7c8031b11bcd46e29fe90b0a48f5  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/2020.cc
! 973d0b2c439c26a8eb03d0d9526d4da2  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/57394.cc
! 5a7d8f8a57ff2fefc27f9266f936c14b  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/char/1.cc
! e7bb37a47985988850c45330a73c27dd  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/wchar_t/1.cc
! 87f64d3e3f4683592b92ae251b37cb8e  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/1.cc
! 393f2a2ca9a11e6e96018ba6bce4fe16  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/13007-1.cc
! f174eb810dd673e8ed0eee412234bd47  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/13007-2.cc
! 2f4822a2aa8beb8b3f6e90ce3c6eed35  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/9322.cc
! 4ed7f0b149bbd82bf09e19cfe8bd9144  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/1.cc
! 2184ab60afe73f4a555a6c04867547ca  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-1.cc
! 9aa856c1b732a86ed6a31ca40e45bd4f  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-2.cc
! 65a4cca0d431723ffa10eda5761605bc  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/9322.cc
! cbf2516727e8959191e532b4f4c34f3d  libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/char/1.cc
! 55c5c0cebf9cf4e51103c87dfb343fbb  libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc
! 5b8bef72b5b13d83ded777cce6101260  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/1.cc
! a79025513f81c75321fa4e1eabdb9623  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/2.cc
! 859c9f551b5ea94078cdf9fd65338892  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/3599.cc
! 86ac10813418362cccb8b8f24d57f4cb  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/1.cc
! af153535ffddbc878a4e719038763f50  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/2.cc
! 9e781dbe85ef65e2193f00274b015e69  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/3599.cc
! aa53080be277e2fe58aef13e004ce964  libstdc++-v3/testsuite/27_io/basic_streambuf/requirements/base_classes.cc
! 688c42edf03012db691630eb77819e2d  libstdc++-v3/testsuite/27_io/basic_streambuf/requirements/typedefs.cc
! 8266a0fd878f0b73febfa02ede6a414b  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/char/1.cc
! 09868c1b4467e03e2d156804e8bae527  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/char16_t/80624.cc
! fe1fa8fbe3fea8d45d3f11dbd463a182  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/wchar_t/1.cc
! 155b7e9c7cddcdb5e2b41be427405380  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetn/char/1.cc
! 6dfb5e1c7b2a94e3f6f951d793b08b87  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetn/wchar_t/1.cc
! c62a838a9e5988e45a89b049e643107c  libstdc++-v3/testsuite/27_io/basic_streambuf/sputbackc/char/9538.cc
! a1131b9bb2e749082167af3e8dcd76a4  libstdc++-v3/testsuite/27_io/basic_streambuf/sputbackc/wchar_t/9538.cc
! 421942568b5f4b0bc05a646936609b8b  libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/char/1057.cc
! 39153e93e0d619bc70aa482bef2bccb9  libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/char16_t/80624.cc
! a9c4f0333472875afaca0569d47cc31b  libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/wchar_t/1057.cc
! c8e1c964afae44f4e10fa7cd98efe85c  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/char/1.cc
! 528857b5f19111b3744b99cef08d4cbe  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/char/1057.cc
! 679ee8d42aec428495727a83c697d4be  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/wchar_t/1.cc
! 75b3e6525b911e197cbdfcd39f8e2913  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/wchar_t/1057.cc
! 74d746605023fc0c9b3cf84b8ca1eb1c  libstdc++-v3/testsuite/27_io/basic_streambuf/sync/char/1057.cc
! 8074cc5b89f14adf20073d9459cda9f4  libstdc++-v3/testsuite/27_io/basic_streambuf/sync/wchar_t/1057.cc
! fb7f10dae55dd2a3a297568a707946f7  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/2020.cc
! 228a5951c943a52e52cc12c2f6a95469  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/81381.cc
! 4cc3e5653db81be435900fc1e48215c6  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/1.cc
! efade0e13192771a8a2310e5df3f1e1d  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/2.cc
! 34821995653cd447fe4bd05edb315bb5  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/default.cc
! 86e35166a6b3cb79faf381812ede1c4a  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/1.cc
! 559016108e602870b7c55dfcad47dc05  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/2.cc
! 8d0c195fcc546a21ad573ee1ec1f2eb2  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc
! 73bfe98de60496e11bf9b096e3182ce6  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/char/1.cc
! 375f4e54dced1daf9a2ffa07390a6ca1  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/char/9322.cc
! 69fb1acd355d304849ad7c3381ee6265  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/wchar_t/1.cc
! cf8b9cc487965f3901620613d0520122  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/wchar_t/9322.cc
! d89b5c256245a778bc6e6679e9020da6  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/char/1.cc
! 3f1c87d6a36e21ec60640a4fe965d5f0  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/char/21955.cc
! 19c76a19d45144c45b58b9bdb9bcacc7  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/wchar_t/1.cc
! 5a192aaabd005ebe50f2f1976e46bfb2  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/1.cc
! eb1b267fdbaa4a01d07d92f54099113a  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/2.cc
! 6b3b7d92f7dbe43de296f8c8df2f9c47  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/26250.cc
! 6c08409227c467e91b8a2cd4865e775e  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/3599.cc
! 658f31ecc2953e0a2498f03ad662d414  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/9988.cc
! ab3a699e4f414beb6fe0581b5e6c93be  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/1.cc
! ea730f17cbd20e54831e8cecc9ddeaf3  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/2.cc
! f5c8ee827c03cc20fac787b045153423  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/26250.cc
! d89b357724aede6b98ded932ba813969  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/3599.cc
! 2ce85b32e1bd3c6d18e1d4f58067b801  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/9988.cc
! 4202ceac3a9a0714dffd5a6e58262976  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/char/1.cc
! f0f6e8b8c6387cb248a92b03a17f6ffe  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/char/2.cc
! 3a45cbdb6ab0b6ca9472c5e1144f2bb2  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/wchar_t/1.cc
! cc65ca901ff93af62c0e3d8c993a3b34  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/wchar_t/2.cc
! 51ec0b31da902aa0c4be323fe9d1d058  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/base_classes.cc
! 731787b9f6f6f3839c2806c84bb6a98a  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/2.cc
! e65ba071ebee5fea3e8c6318898f87bc  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/4.cc
! 41c5d1f090ae12f4cdabcb332a9e4f4a  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/typedefs.cc
! 83e65b526568512963fa42bf421cf7a8  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/char/1.cc
! 4e2fb218b2b73be2c2e18b6d5c16b9f8  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/char/9825.cc
! 4aa976a873d6418aaacc52e6d3b83826  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/1.cc
! dee415519d59db7f2447bfa0822823be  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/9825.cc
! f416ad0195cf3f25a0061f260387f28a  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/1.cc
! b45d17ee6b2f5709e49ee40a175caad0  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/10975.cc
! 117b8c67f0e76f4d630a0055fb54a8ff  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/16956.cc
! 89cd04d973b6b016fc25e10b7b2ac5c7  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/2.cc
! 0757faab59ac29f2d939c8f856c1ce72  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/1.cc
! fdb324627b9fd90afa87ac224d59c183  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/10975.cc
! 950f747c2669d48fedd562933ff97b14  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/16956.cc
! ae499394bb19e69132b3ca34f5df287c  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/2.cc
! d43ac9a0c7a50e8c000ce77c00f4c3bb  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/1.cc
! a69ff787f1efbe1928a57797a9232995  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/2.cc
! 6f1777f9adb768dc6cdd58b58db82431  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/29354.cc
! a17c37932ff7d5b5f83e6bf71b2fcf41  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/3.cc
! d9c6fa0f005b3df28cd13397f2a1c42b  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/1.cc
! 07888c29b0652a4f3c75cb246ccdcb30  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/2.cc
! 2d02c586218e714b4f33427d16fad70c  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/29354.cc
! 0787e7ec67c8645111ce3abbc8bfce51  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/3.cc
! e0e30a7057408a9d41a8cd70e385e6e2  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/1.cc
! ca5b9783329ec96f363aa62224d075fb  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/2.cc
! 65473cb0e6f898af8edf674f35a9afee  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/3.cc
! d2a7af8ba814610bb05a89e09099369c  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/4.cc
! 1a012b15712aaed48d1f0de693604b33  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/1.cc
! aaefc944d5b2e419ca0e79f9962a33d5  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/2.cc
! b55481101a5ac6be0831e6c4b195e54f  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/3.cc
! 1ca202eb7c3c29100ef232f436c959ba  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/4.cc
! 4843f034d951e657fbdd045e37482aa9  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetc/char/1.cc
! cf805a4c9ffad607c25edcb553a60ab9  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetc/wchar_t/1.cc
! 9a0dafc867041196a57118c647585d54  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetn/char/1.cc
! 007443e7fe99bee71c0740525e80ccc8  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetn/wchar_t/1.cc
! ca1eb1e5f868b1ec35d76bbb77ce8012  libstdc++-v3/testsuite/27_io/basic_stringbuf/snextc/char/1.cc
! 5295e340a015170b07a0f46d5aaadc7a  libstdc++-v3/testsuite/27_io/basic_stringbuf/snextc/wchar_t/1.cc
! 65d0c9fc776ef70ec67cea9c3174510d  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/char/1.cc
! 30b1e8444294e148a4258c8887305e16  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/char/9425.cc
! f9c79df7e63e93e75ba0d8f14d6b1cd4  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/1.cc
! 852cf9f9057ba5f62b32276b5e26dfbb  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/9425.cc
! 8e8f7dc03e63629f439adb5069c19af9  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/1.cc
! 7b55681529cf80d725d1dbeda103e913  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/1057.cc
! 927f324d168cc31c778877c6c5991882  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/9404-1.cc
! c166d065f2b68bf90414f699f0fba4d4  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/1.cc
! 1c1d675d73b894054c70c8d32f20ec5d  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/1057.cc
! 3da5dffb45b181fe6b3540774e6fe4b4  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/9404-1.cc
! dba4bdb2ecfc0d2db430684dbb3f5602  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/1.cc
! 9738127fdbe8147e7bf6ec8de43c7e4a  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/1057.cc
! 3faa40a572253528eb5ab5df810e7c55  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/9404-2.cc
! bb08d1e8e829bd8ee90fbbcd1db5d408  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/1.cc
! eb7fa59f91a75a6aa6554167e242ebec  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/1057.cc
! 288a804247ead36eb88861d9129f698f  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/9404-2.cc
! 0fe68c444a84f9b41450f460b64c0c02  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/1.cc
! 1bfa2157a2234e8f682d0c1b7f3fdf72  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/2.cc
! 25520c09cfe4c0336d0a3114794d3197  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3.cc
! a30c642f58508c4a136289e23310dca2  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3955.cc
! 0b7622d04b5f8d24edc7bf59d84080e0  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/4.cc
! 9691c910314a90b2d15ab3d0c1d10bb1  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/1.cc
! 7b8f2ac363e4983e800c705f2a127f8e  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/2.cc
! b3b237681faf5e8bb89f05f1892d54a8  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/3.cc
! 147d507adeff80cb2fe9af6623d6476a  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/3955.cc
! 4e80120bee344ddb2de70c451dc5782f  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/4.cc
! 0b9687236b93bf5ce96ceff39f7bf1ee  libstdc++-v3/testsuite/27_io/basic_stringbuf/sungetc/char/1.cc
! 9be6dd1ced5daa1139a398805d89c3e0  libstdc++-v3/testsuite/27_io/basic_stringbuf/sungetc/wchar_t/1.cc
! 894a9a3896e3249b58392a5bd4381dc6  libstdc++-v3/testsuite/27_io/basic_stringbuf/sync/char/1057.cc
! 1459380cd96dff048231c734c1103551  libstdc++-v3/testsuite/27_io/basic_stringbuf/sync/wchar_t/1057.cc
! fa0737f38866c8b00d5169f156963884  libstdc++-v3/testsuite/27_io/basic_stringbuf/view/char/1.cc
! 4a511c2f66598c1338960a4b260b9502  libstdc++-v3/testsuite/27_io/basic_stringbuf/view/wchar_t/1.cc
! 7ee8dea287d81c5fbcd63f7d288c1e5a  libstdc++-v3/testsuite/27_io/basic_stringstream/assign/1.cc
! ae2aab6049fc0fb74889c87578e34ee6  libstdc++-v3/testsuite/27_io/basic_stringstream/assign/81338.cc
! 493627d560d0c3407979586b696be486  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/2020.cc
! 90d024fd36d9dda4611fa7c2988eed9e  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/char/1.cc
! f869623b4789482f9f015374b51be26a  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/char/97719.cc
! d48edfda75651d6b0900e178427dbd0a  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/default.cc
! ff45fb4b1f644b62e923359ce45e138d  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/move.cc
! 3740c843aa256dc769c249cdc06aad37  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/wchar_t/1.cc
! 2a88671f08980a5443363269319ff3cd  libstdc++-v3/testsuite/27_io/basic_stringstream/rdbuf/char/2832.cc
! df282f58e6fc5b328a24ab5d5a1e6522  libstdc++-v3/testsuite/27_io/basic_stringstream/rdbuf/wchar_t/2832.cc
! eb27a6fd101db06099fe333a083c3389  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/base_classes.cc
! afcda5b61cb84b593bcba6cd9283ca27  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/explicit_instantiation.cc
! 9088e5561a69a369ae3fdd4f2d79b15d  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/typedefs.cc
! 55e762c8557ed40691bfccedabf1c3ca  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/1.cc
! 9f67ed99b0c5434605d10dadd47b8186  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/2.cc
! d8020e63ae19e74ec6ce551d10343472  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/3.cc
! 33b43019f9efab6ddb950b6ae620df48  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/4.cc
! 85d4015af5bc7d19a3b0de5d74e30171  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/5.cc
! caec1f8a27a5d98d04e3472266e8bd76  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/1.cc
! 6254aaaaacb288b104d397ff78e7c2ab  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/2.cc
! b05bde7e80a3bbd3dfcd138a847c6bf4  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/3.cc
! 951d2ef5e5bc7ff2051a73e347c2588f  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/4.cc
! cbf266f05df13045109693e31c018e1b  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/5.cc.cc
! 4b927993774cfad68475a18236ce3f70  libstdc++-v3/testsuite/27_io/basic_stringstream/view/char/1.cc
! c3e40e9f1dc5a8bb13d11d4ed37dda3f  libstdc++-v3/testsuite/27_io/basic_stringstream/view/wchar_t/1.cc
! 3344e8cb353599b6b38e46e785ec23d3  libstdc++-v3/testsuite/27_io/basic_syncbuf/1.cc
! c4d3b41912c7108f8969201742ac96a8  libstdc++-v3/testsuite/27_io/basic_syncbuf/2.cc
! 2c9cb1f9a2905f8456e0be1c52930fdc  libstdc++-v3/testsuite/27_io/basic_syncbuf/basic_ops/1.cc
! a96a03ad0dde0681ea2e72f93eae2178  libstdc++-v3/testsuite/27_io/basic_syncbuf/requirements/types.cc
! 6771c8361d8663ac8a6f043db2c4a1b0  libstdc++-v3/testsuite/27_io/basic_syncbuf/sync_ops/1.cc
! 3344e8cb353599b6b38e46e785ec23d3  libstdc++-v3/testsuite/27_io/basic_syncstream/1.cc
! c4d3b41912c7108f8969201742ac96a8  libstdc++-v3/testsuite/27_io/basic_syncstream/2.cc
! 8e86cce49785abaff946c1cdf54bbc93  libstdc++-v3/testsuite/27_io/basic_syncstream/basic_ops/1.cc
! f3c6a45561e134ab3a5f785fb5327a3b  libstdc++-v3/testsuite/27_io/basic_syncstream/requirements/types.cc
! 3fdaa3fc49fbc714478a0ac91806f9e5  libstdc++-v3/testsuite/27_io/filesystem/directory_entry/86597.cc
! adb3e28700593b76a1002d95c6147ff6  libstdc++-v3/testsuite/27_io/filesystem/directory_entry/lwg3171.cc
! 92f490ea5dbc18be42b7ec99862d414e  libstdc++-v3/testsuite/27_io/filesystem/file_status/1.cc
! e7a0052b8f4dbe85229708680039b409  libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/cons.cc
! 5b8f4d8567fd24441e57e57025980679  libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/copy.cc
! 4f0fad8a05d983f04025840a5831f23f  libstdc++-v3/testsuite/27_io/filesystem/iterators/91067.cc
! d3f6441f67756ae042215fef469cae55  libstdc++-v3/testsuite/27_io/filesystem/iterators/caching.cc
! e956ad211d6b53f0840e272d41472690  libstdc++-v3/testsuite/27_io/filesystem/iterators/directory_iterator.cc
! 1273bd49c4d47f47ade05fb7df32e39f  libstdc++-v3/testsuite/27_io/filesystem/iterators/pop.cc
! f28a69c518bb184963eee6d612be63d6  libstdc++-v3/testsuite/27_io/filesystem/iterators/recursion_pending.cc
! 9e9e0bd426078a33f654737262686a69  libstdc++-v3/testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc
! ad7ad0af2ec01fa9230231a9a4c0118d  libstdc++-v3/testsuite/27_io/filesystem/operations/absolute.cc
! 1241f83b15d670bde9c382ed64309e2c  libstdc++-v3/testsuite/27_io/filesystem/operations/all.cc
! ef52d949256cbcbf3efd52042b1781b4  libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc
! 9291023079baaf7200d85dc316dc6ede  libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
! 75bad110675700380d1964dfc51fa7ff  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc
! d328fb0d4c40b9161a94a0db1a7cbf2f  libstdc++-v3/testsuite/27_io/filesystem/operations/create_directories.cc
! 6d4d9730bd17b94cfec5a34fd9a1c3c7  libstdc++-v3/testsuite/27_io/filesystem/operations/create_directory.cc
! 3f07caf70a8e29ae2c50982c3c86ab63  libstdc++-v3/testsuite/27_io/filesystem/operations/create_symlink.cc
! 8390b441075677eb886deec0dd678f5b  libstdc++-v3/testsuite/27_io/filesystem/operations/current_path.cc
! 71f7f1c09c070d914eb6be92838b8682  libstdc++-v3/testsuite/27_io/filesystem/operations/equivalent.cc
! cd02e6cbcce3d6a4fb1510b7b3c2d9f2  libstdc++-v3/testsuite/27_io/filesystem/operations/exists.cc
! 8cbb9bc90bd08a0a108548bf76862d57  libstdc++-v3/testsuite/27_io/filesystem/operations/file_size.cc
! 752a0a3fb0aaeb074dbaaae3c132bb23  libstdc++-v3/testsuite/27_io/filesystem/operations/is_empty.cc
! 86e5ab934ab03127ebd4994e199b755b  libstdc++-v3/testsuite/27_io/filesystem/operations/last_write_time.cc
! ad476d743a0fcd45c5f90544cc7d468f  libstdc++-v3/testsuite/27_io/filesystem/operations/permissions.cc
! b2ea95e2fa0a03b97cb232bb948a151f  libstdc++-v3/testsuite/27_io/filesystem/operations/proximate.cc
! 9eac9e49af7ac2b14d28be5a93782668  libstdc++-v3/testsuite/27_io/filesystem/operations/read_symlink.cc
! 9245f6c3379659cb4bc9c676dd7069be  libstdc++-v3/testsuite/27_io/filesystem/operations/relative.cc
! e1cd431cd60187ee4ad1a37b9ac827a3  libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
! da9b9277667d9391500511aea4b725d2  libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
  238203fc0b253cbcec3b6d77a9955ad5  libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc
! aceb7d577d9a06e0540934d9f835478b  libstdc++-v3/testsuite/27_io/filesystem/operations/resize_file.cc
! f838ae2c3f24bbdebde087ac6b8fa3f9  libstdc++-v3/testsuite/27_io/filesystem/operations/space.cc
! 93babb8a0e0c0650233c9214d2f00467  libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
! 164f24052827ba8045d3150e20938c2a  libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc
! 201bf0fd663a516921b65821162627b2  libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc
! 0387e091bfa8440e67fb076b78e06d26  libstdc++-v3/testsuite/27_io/filesystem/operations/weakly_canonical.cc
! 89c60097db43072dd3249befc7a3c06f  libstdc++-v3/testsuite/27_io/filesystem/path/append/path.cc
! 2dfe224aaf90436b31be0409897cc25e  libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc
! 1b36ff9cb087e408ec4f2ed2aa48a725  libstdc++-v3/testsuite/27_io/filesystem/path/assign/assign.cc
! f42e1a5e6387b1fe9b29673b6b6c5662  libstdc++-v3/testsuite/27_io/filesystem/path/assign/copy.cc
! 56c5cadd576e6836ed12393ad0465613  libstdc++-v3/testsuite/27_io/filesystem/path/compare/compare.cc
! c0d9d51ba755fc90483b9d9efa777633  libstdc++-v3/testsuite/27_io/filesystem/path/compare/lwg2936.cc
! 71cf39136480493a79d94164d3112868  libstdc++-v3/testsuite/27_io/filesystem/path/compare/path.cc
! 1228ac17249f45c45427324254fccf22  libstdc++-v3/testsuite/27_io/filesystem/path/compare/strings.cc
! 54f76b3514924d80f32b8104f7530d1a  libstdc++-v3/testsuite/27_io/filesystem/path/concat/92853.cc
! 88db6b01b4640328e65c6ac4517c5edb  libstdc++-v3/testsuite/27_io/filesystem/path/concat/94063.cc
! dfbcb7804ec479bfca828c27bc100cda  libstdc++-v3/testsuite/27_io/filesystem/path/concat/path.cc
! d7b95573a71b8a56b9a9832e82542ba9  libstdc++-v3/testsuite/27_io/filesystem/path/concat/strings.cc
! c4f8abfff262e976f39e9aa0f39c38ae  libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc
! cf52cd458fe9fa583f29ec7c92511386  libstdc++-v3/testsuite/27_io/filesystem/path/construct/90281.cc
! 80e7f0eec042d3fbae5d0d7e9d727802  libstdc++-v3/testsuite/27_io/filesystem/path/construct/90634.cc
! 8bf74d45d6eaf90f6218fb943cd3bf2a  libstdc++-v3/testsuite/27_io/filesystem/path/construct/copy.cc
! 1fb672069f0cd124b85254f34d9102f7  libstdc++-v3/testsuite/27_io/filesystem/path/construct/default.cc
! a8def24fca69208d4ecaea8b91878a45  libstdc++-v3/testsuite/27_io/filesystem/path/construct/format.cc
! 54d016db51e08041d236311b8d2dd0a5  libstdc++-v3/testsuite/27_io/filesystem/path/construct/locale.cc
! b62fef0156418b5e5de9f4c473266a6a  libstdc++-v3/testsuite/27_io/filesystem/path/construct/range.cc
! ca79775a412b0c8b8d1af9baebc38d7d  libstdc++-v3/testsuite/27_io/filesystem/path/construct/string_view.cc
! 697cf302002efef347a56f07213ebcab  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/extension.cc
! b68147d60701269549f907247a65b154  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/filename.cc
! 01bf08c36e186cc27f4d623fbfc12389  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/parent_path.cc
! 681eba0bc63d79547e4073f60cce504b  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/relative_path.cc
! d1bdef194a88ad3e75a186705c9035fe  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_directory.cc
! b360a9eb32e448ed8d1bc43c76cbeaa2  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_name.cc
! cd29654f15c62cb3c652ab808cca9cb9  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_path.cc
! 31032168ab4053eae69fd71c3ef81107  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/stem.cc
! 1bd2f24afb4a1d3ff58bfb1749a498f3  libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc
! f7a482a1f51b85c3fc30e5b5d8085977  libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path.cc
! 207097346d83f61dd38621869deea618  libstdc++-v3/testsuite/27_io/filesystem/path/generation/normal.cc
! bc4154fa7bca9ad5e2e414278db5c7bf  libstdc++-v3/testsuite/27_io/filesystem/path/generation/normal2.cc
! fdef1177a2d83aa747cac1d869d69b27  libstdc++-v3/testsuite/27_io/filesystem/path/generation/proximate.cc
! 99aa205ed2026d1ec8f4fe90f66c5a11  libstdc++-v3/testsuite/27_io/filesystem/path/generation/relative.cc
! feffc2fa55bede41cee80ab5cde6fd6d  libstdc++-v3/testsuite/27_io/filesystem/path/generic/94242.cc
! 072109051516d00096602afc2da1d651  libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc
! 4471a3a44d5389109ed9600a8ab93ba1  libstdc++-v3/testsuite/27_io/filesystem/path/generic/utf.cc
! bbd45fafbd4b3131a6a92d864477c53f  libstdc++-v3/testsuite/27_io/filesystem/path/generic/wchar_t.cc
! e440d0057745dbc1bb731557fa433bb1  libstdc++-v3/testsuite/27_io/filesystem/path/io/dr2989.cc
! 389f7e98a52971b1323d33e932cc9739  libstdc++-v3/testsuite/27_io/filesystem/path/itr/components.cc
! 00a16829222f95f2eb2b8b09cf2c286b  libstdc++-v3/testsuite/27_io/filesystem/path/itr/traversal.cc
! e86377c405187b20eb76c9fa2bf139e3  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/clear.cc
! ecbd130b2d7f6455a8b6a91d1416165d  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/make_preferred.cc
! 205151b118593f31aaa17fa7ead3c7b2  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/remove_filename.cc
! 142f7f81c215af1e4c65a64a9c0ba67d  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/replace_extension.cc
! 4b2109eca79441d2faf7ba9ec0183e40  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/replace_filename.cc
! a80558423ece900239ee84752a1c1d65  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/swap.cc
! 9dd8fbe62a80a7862d857c5264ddddfc  libstdc++-v3/testsuite/27_io/filesystem/path/native/alloc.cc
! 799c8c3339fff4116f3206192f47270d  libstdc++-v3/testsuite/27_io/filesystem/path/native/string-char8_t.cc
! eb93ec371fb67b14c3059a0c2b6132e2  libstdc++-v3/testsuite/27_io/filesystem/path/native/string.cc
! 2deb67301d948719aac619d4881e2654  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/append.cc
! e85a62df36273ba02bc9282b1dfd5a31  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/cmp.cc
! dec8c79a5bc2399d1595c9f061708800  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/cmp_c++20.cc
! a90b384c32da696821ea7fa21b21bdac  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/hash_value.cc
! c35811d3e2a892e33d3ff14785cd712f  libstdc++-v3/testsuite/27_io/filesystem/path/query/empty.cc
! 0c975d762e7ab92ce58519ac88880e73  libstdc++-v3/testsuite/27_io/filesystem/path/query/empty_neg.cc
! fc39e85b84e9148c8cb32ef71bad0f3a  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_extension.cc
! 3fc75aef8accc01bfe85bf4f5f83f336  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_filename.cc
! 0a2c6ac6e751cf1c35d3fb878604deda  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_parent_path.cc
! 51744b224f365b41d162ae20378c69e9  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_relative_path.cc
! 9dd8ab7e57fd49c2633bec8b45acc905  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_root_directory.cc
! 52ec40cc0192be27b2e868901403c82d  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_root_name.cc
! a50508b3cab577f1d22601e66d2cdba8  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_root_path.cc
! 4d464605b0087fc2fa341a25d7ce0bdf  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_stem.cc
! 611a7bb6250400bd950dcc9a03c1d347  libstdc++-v3/testsuite/27_io/filesystem/path/query/is_absolute.cc
! a5e3a78bc0e2960cc4ca31bce4be6961  libstdc++-v3/testsuite/27_io/filesystem/path/query/is_relative.cc
! 880495c972b4d1e981767777e3483904  libstdc++-v3/testsuite/27_io/fpos/11450.cc
! 6f3a8e12d7eaa335c90a45ba009837e7  libstdc++-v3/testsuite/27_io/fpos/14252.cc
! 1a8c0730484fd79955669d0af34eeb7a  libstdc++-v3/testsuite/27_io/fpos/14320-1.cc
! c35ae92071f08aaabb88d9f4c852c758  libstdc++-v3/testsuite/27_io/fpos/14320-2.cc
! 83db5f07e64345278f2197b3c09511dd  libstdc++-v3/testsuite/27_io/fpos/14320-3.cc
! 853f148df8812998b2bf06383bb5da7f  libstdc++-v3/testsuite/27_io/fpos/14320-4.cc
! 74de413241769342365140a591555bf6  libstdc++-v3/testsuite/27_io/fpos/14320-5.cc
! 5dc360e0bf1967441eaf39f7caf9c3d6  libstdc++-v3/testsuite/27_io/fpos/14775.cc
! a57fcbc872b0bcb236db14608daa8c1d  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/1.cc
! c45f5c9e05e4807ee9aa7beafe7ae44f  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/12065.cc
! cdf26bf71700620217d193b452804851  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/2.cc
! 4bdf84ae39b33c714f2c13c4281c53bf  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/3.cc
! 90868ad18d9072907ab05497a6a8478e  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/4_neg.cc
! 97e85bccbdb6c070c4ac154fa0b45238  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/5.cc
! 77c3f847eb285685652961605dd3dbdd  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/6.cc
! 7ea956d0e414f47b0d56a062bdb6b2a7  libstdc++-v3/testsuite/27_io/fpos/requirements/explicit_instantiation.cc
! aa0df80e353128c7b357fcbc594a79bd  libstdc++-v3/testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc
! be33d4039cfa2cfc408e08a6a0421ef8  libstdc++-v3/testsuite/27_io/headers/cinttypes/types_std_c++0x.cc
! d3ed8d94f901ed90981053809a1fb678  libstdc++-v3/testsuite/27_io/headers/cstdio/functions_neg.cc
! 15d906a7c23eb746e352385449588545  libstdc++-v3/testsuite/27_io/headers/cstdio/functions_std.cc
! 2703504d9def4ebbf0853b10d40f08ab  libstdc++-v3/testsuite/27_io/headers/cstdio/macros.cc
! 167e4681701d68df2a25a53f90b46e2d  libstdc++-v3/testsuite/27_io/headers/cstdio/types_std.cc
! e8cc4dae77608ff4d667efe0f149fae0  libstdc++-v3/testsuite/27_io/headers/fstream/synopsis.cc
! bcd242b983b4c3e24ba8c01215ae68a3  libstdc++-v3/testsuite/27_io/headers/fstream/types_std.cc
! 2ae48016030e56632af746345c997ef6  libstdc++-v3/testsuite/27_io/headers/iomanip/synopsis.cc
! 24e616854fa5a99df5617964d8127773  libstdc++-v3/testsuite/27_io/headers/ios/synopsis.cc
! ee5b755d9b5f1badd148cdc44ae9b40d  libstdc++-v3/testsuite/27_io/headers/ios/types_std.cc
! cc423714502cc8b1d27d87b1a4f6f5fd  libstdc++-v3/testsuite/27_io/headers/iostream/synopsis.cc
! c00f679d7af39ec3ab7e04d771edb933  libstdc++-v3/testsuite/27_io/headers/iostream/types_std.cc
! c24a982bacd7d5216a5236223a64004b  libstdc++-v3/testsuite/27_io/headers/istream/synopsis.cc
! 68119ecbceaf399d19d0a949a76a899d  libstdc++-v3/testsuite/27_io/headers/istream/types_std.cc
! ea0f2fc59699ad75e9a051310ee63e3a  libstdc++-v3/testsuite/27_io/headers/ostream/synopsis.cc
! a09ff0c90377f134293db3a7f4f35d9e  libstdc++-v3/testsuite/27_io/headers/ostream/types_std.cc
! 4d86de8f28367eb07bd50796e0547397  libstdc++-v3/testsuite/27_io/headers/sstream/synopsis.cc
! aadc5245925c8fc945117ab89c53a664  libstdc++-v3/testsuite/27_io/headers/sstream/types_std.cc
! 30d43f3040c499716d77d1b370268fe5  libstdc++-v3/testsuite/27_io/headers/streambuf/synopsis.cc
! ade4c77fedf15034012cc8ef3c677eb0  libstdc++-v3/testsuite/27_io/headers/streambuf/types_std.cc
! 0e13b2fc2190317709d187b4a209ce66  libstdc++-v3/testsuite/27_io/ios_base/callbacks/1.cc
! f6efd48a63150972c519863161822428  libstdc++-v3/testsuite/27_io/ios_base/cons/assign_neg.cc
! 8723d83d6f5c9d91bea93af6dad05340  libstdc++-v3/testsuite/27_io/ios_base/cons/copy_neg.cc
! 6770fc435ea26ecc034945ad7add8b62  libstdc++-v3/testsuite/27_io/ios_base/failure/cons_virtual_derivation.cc
! 29f0108d4fbfc4ff0533974c074580b5  libstdc++-v3/testsuite/27_io/ios_base/failure/cxx11.cc
! 5005fde08f5b1e830d85fd819c40925f  libstdc++-v3/testsuite/27_io/ios_base/failure/dual_abi.cc
! dd958dbc11143c784bc37cc37b28f89c  libstdc++-v3/testsuite/27_io/ios_base/failure/error_code.cc
! ace689561d102e5cbde5cae96998dc33  libstdc++-v3/testsuite/27_io/ios_base/failure/what-1.cc
! 7307eb41a0104bc554a672db975e68f2  libstdc++-v3/testsuite/27_io/ios_base/failure/what-2.cc
! 594acf88d46cd27aef55dc2d4550d2ad  libstdc++-v3/testsuite/27_io/ios_base/failure/what-3.cc
! e8894be7a0ccc6eb27054069f36d38e7  libstdc++-v3/testsuite/27_io/ios_base/failure/what-big.cc
! e0f22e71eea4474db432e906669d6f38  libstdc++-v3/testsuite/27_io/ios_base/state/1.cc
! a651c689a134f0f677a80076efaf8043  libstdc++-v3/testsuite/27_io/ios_base/storage/1.cc
! dfa8136309071ceb1a0d1f11c35a75fb  libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
! 7fbd785519273963efc459d23fe9d895  libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc
! 4da7a303a27e7948f6d33211f5dd910f  libstdc++-v3/testsuite/27_io/ios_base/storage/3.cc
! 96a8389786eba9ccf6c8fc6a9eaa7b9d  libstdc++-v3/testsuite/27_io/ios_base/storage/68197.cc
! aa763d9078f5f2e4ef00ad8b844c9822  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/1.cc
! 88efd5e0b221575a928f90a70a2d87e5  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/16959.cc
! a727046c14073e16cd96e883de72c39c  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/2.cc
! 9576e25463c4eac78fd3ee08739956dd  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/9523.cc
! 989ce07afafe2cbdd30912eae0f845a4  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/bitmask_operators.cc
! 583487e7900db2d294a9b99327781b46  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
! 377979e7236d433e26d362bb75e47185  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/constexpr_operators.cc
! 6889b455caa130a1f8a9f887d8095766  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/bitmask_operators.cc
! 4b207cadf284f3471d169abfdd72671b  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
! 9652e9e48b7d857af91d10e412f91855  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/constexpr_operators.cc
! 05a75160a0a8ef11413a955487fb69e8  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/bitmask_operators.cc
! 07a464fc278e431b2b6ce6f51036d803  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
! 13093bef94a42d0307c42ef6c177763c  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/constexpr_operators.cc
! 4ab57087740e1454e237f1edf35c9bc3  libstdc++-v3/testsuite/27_io/ios_base/types/seekdir/case_label.cc
! b191e55114a6e6b0fd8d14ad13581829  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/char/1.cc
! ede0df7229151a59aecfd883f756c6e7  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/char/2.cc
! 37fc5d5d09b03b03cc14e294397faf3c  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/wchar_t/1.cc
! 75fcbca9940f5a04a196c935cf808688  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/wchar_t/2.cc
! ec11a1518f97db3befd837c6c0b006fb  libstdc++-v3/testsuite/27_io/manipulators/basefield/char/1.cc
! fd86a03ab21a2bcf20f06b87066627d7  libstdc++-v3/testsuite/27_io/manipulators/basefield/wchar_t/1.cc
! 6cc48c295ddea52b4939d2877f77cd0c  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/char/1.cc
! 9194db1d0a3dec2019c74bbb1b49a618  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/char/51288.cc
! 5f1bc36b519f3b2e321fbf49868360c9  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/wchar_t/1.cc
! 92d66fc58baeebd6aab81b9e8060fe4e  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/wchar_t/51288.cc
! 38564f02723d0956f83cf1e2c2e22f88  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/1.cc
! 019ff37b6c22596cfa5d4175c823b0f0  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/2.cc
! d3fed77e0d7ae8ccf10e8b13485366af  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc
! 6e1da77bfe4d4206c337d61c1a4c0efb  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/2.cc
! 55a9c49c8d0362e0a9bde13ebd95bf20  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/char/1.cc
! d70181c89a8f691bcd2b9d7e12567016  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/char/51288.cc
! 0e81d96a3b08b59390741e67f94793e8  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/wchar_t/1.cc
! a9c2b70a4f64be30ae89b93debaf8828  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/wchar_t/51288.cc
! 02d1a1826912e99d1d5f43f0c9efc878  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/char/1.cc
! 9622f13341311d8bac3797cecd42e2bb  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/char/2.cc
! a543c6792a636b881651164a97aa9351  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/wchar_t/1.cc
! 66d5b98c801b2487844af4f30406d780  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/wchar_t/2.cc
! 9ac1f2a9084cd60ae6296ede7d25871a  libstdc++-v3/testsuite/27_io/manipulators/standard/char/1.cc
! 36908fe099e3ac0d4d9abdb60d282eb1  libstdc++-v3/testsuite/27_io/manipulators/standard/char/2.cc
! 7eb35f21362288df56d21351e70feace  libstdc++-v3/testsuite/27_io/manipulators/standard/char/60270.cc
! d7c099ef4b24e8c6dd2ed78c37473972  libstdc++-v3/testsuite/27_io/manipulators/standard/char/dr2344.cc
! 0e322f3e3b30a68217812832aea5048f  libstdc++-v3/testsuite/27_io/manipulators/standard/char/quoted.cc
! f1aad36bc9a8fe9ca3695c8e372f6112  libstdc++-v3/testsuite/27_io/manipulators/standard/char/quoted_sv.cc
! e912e0fe686f71d46428d0685ed5e54d  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/1.cc
! 451048426f1fe68533aecec7c43af019  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/2.cc
! 29413c0fff6a1af9c09296dc3853981f  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/dr2344.cc
! 5298f8b01a7a54dc9c11fa30d2ef3248  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/quoted.cc
! 6de726d6ff6c278624ddeeff14722f4b  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/quoted_sv.cc
! 86afdc68bee7fdb1c8c6b9f431743e56  libstdc++-v3/testsuite/27_io/objects/char/1.cc
! 69622549e51884ba5976e19a54427a47  libstdc++-v3/testsuite/27_io/objects/char/10.cc
! 74b097d3c49b095c7ab529308e3863ac  libstdc++-v3/testsuite/27_io/objects/char/12048-1.cc
! bbb282fafe980ee35bf74f5f09d56945  libstdc++-v3/testsuite/27_io/objects/char/12048-2.cc
! bfe5218ead8462c862f243a61eed542f  libstdc++-v3/testsuite/27_io/objects/char/12048-3.cc
! ba5c5f2ab8da94f5d31e8c14fd00eacb  libstdc++-v3/testsuite/27_io/objects/char/12048-4.cc
! a3293baab345c693a93fc9af5bd35aa1  libstdc++-v3/testsuite/27_io/objects/char/12048-5.cc
! 9155b69e10cef2d9da4038d93eee37c2  libstdc++-v3/testsuite/27_io/objects/char/2.cc
! 55607f3da8ddbce044ce41b788f945bc  libstdc++-v3/testsuite/27_io/objects/char/2523-1_xin.cc
  8c1b578bb2722053c950f2cf943baf83  libstdc++-v3/testsuite/27_io/objects/char/2523-1_xin.in
! 736581b9814d7a09b56392dcf596b892  libstdc++-v3/testsuite/27_io/objects/char/2523-2_xin.cc
  daa7a5fffcba8b5ec5ca1a8de7734416  libstdc++-v3/testsuite/27_io/objects/char/2523-2_xin.in
! 0ab3fd2504f115867e81d5a716e6a9e3  libstdc++-v3/testsuite/27_io/objects/char/3045.cc
! c82c84c60ff8c310c6cdcec0be7a8ac6  libstdc++-v3/testsuite/27_io/objects/char/3647.cc
! 4d158f10995f3175c74871a24f12c3d8  libstdc++-v3/testsuite/27_io/objects/char/3_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/char/3_xin.in
! 99f47dfec856b01b91d50c0ea87fc8a3  libstdc++-v3/testsuite/27_io/objects/char/41037.cc
! 158fa71ff0cb40d89f6a21bfd3fa5b57  libstdc++-v3/testsuite/27_io/objects/char/4_xin.cc
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/testsuite/27_io/objects/char/4_xin.in
! 889c180530520d3b265340507cf9b219  libstdc++-v3/testsuite/27_io/objects/char/5.cc
! 0037b7c90917d2f02daae8f66e393099  libstdc++-v3/testsuite/27_io/objects/char/5268.cc
! 16b9049050a4d7e14dab8c838bfd1c42  libstdc++-v3/testsuite/27_io/objects/char/5280_xin.cc
  81dc9bdb52d04dc20036dbd8313ed055  libstdc++-v3/testsuite/27_io/objects/char/5280_xin.in
! 775c0295e74d52637dd7ce757d591739  libstdc++-v3/testsuite/27_io/objects/char/6.cc
! c9473f0a957752966f5364f1a50f9a68  libstdc++-v3/testsuite/27_io/objects/char/6548_xin.cc
  d8e8fca2dc0f896fd7cb4cb0031ba249  libstdc++-v3/testsuite/27_io/objects/char/6548_xin.in
! fce77b2aa96261ac95a052ed3e7c412c  libstdc++-v3/testsuite/27_io/objects/char/6648-1_xin.cc
  069d0b68d99275bb4412e90bd9d5c966  libstdc++-v3/testsuite/27_io/objects/char/6648-1_xin.in
! 8c97be82dbc3cd389e135cb539d4296f  libstdc++-v3/testsuite/27_io/objects/char/6648-2_xin.cc
  6b76e6feddcc145dc3499d8d123d9da7  libstdc++-v3/testsuite/27_io/objects/char/6648-2_xin.in
! 612450e0ddc8ea4480b49cdb9d4e7bfd  libstdc++-v3/testsuite/27_io/objects/char/7.cc
! 0dd6025f2105a800727aa6aa3a6d85ec  libstdc++-v3/testsuite/27_io/objects/char/7744_xin.cc
  0bee89b07a248e27c83fc3d5951213c1  libstdc++-v3/testsuite/27_io/objects/char/7744_xin.in
! c8e1187544f66355372bc60c335e82e7  libstdc++-v3/testsuite/27_io/objects/char/8.cc
! 700c65a31730f8a7c06a28c8284786ed  libstdc++-v3/testsuite/27_io/objects/char/9.cc
! 83b89a9626037450dce4b7b705b7c103  libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc
! c0ba14e87a9a8fe9321c17d0a4d1a7b5  libstdc++-v3/testsuite/27_io/objects/char/9661-2_xin.cc
  33ab658c3d687d1d73a0e92a596f725e  libstdc++-v3/testsuite/27_io/objects/char/9661-2_xin.in
! 216b1892344e688e28d0296f5dcd8fb3  libstdc++-v3/testsuite/27_io/objects/char/dr455.cc
! cce5e5fb02b37b324fc15b4aa3c78ff2  libstdc++-v3/testsuite/27_io/objects/wchar_t/1.cc
! d978a670d7b4cc658209d8d93717f4fd  libstdc++-v3/testsuite/27_io/objects/wchar_t/10.cc
! f7f00e9bfdddf0f569bb3d1dab219503  libstdc++-v3/testsuite/27_io/objects/wchar_t/11.cc
! cc20003b444caae79a044484952eadf5  libstdc++-v3/testsuite/27_io/objects/wchar_t/12.cc
! aca8a2589b4410aa282e9e8bd6f087df  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-1.cc
! af4b27e30e6d1c250c456d1033287aed  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-2.cc
! 2ac34302ce0310866d51a0452d64d1ae  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-3.cc
! fc87c8f195727eff4ab8194073f07d13  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-4.cc
! da6b267786e5e78fddf9b713c50805e6  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-5.cc
! dbcc2e1bfef93bcc81cba6c5151c7f04  libstdc++-v3/testsuite/27_io/objects/wchar_t/13.cc
! 68a808f77d86be6e3abb711e5e0a0fe0  libstdc++-v3/testsuite/27_io/objects/wchar_t/13582-1_xin.cc
  d577273ff885c3f84dadb8578bb41399  libstdc++-v3/testsuite/27_io/objects/wchar_t/13582-1_xin.in
! c7e471769ca043382c7bcffe8b673edf  libstdc++-v3/testsuite/27_io/objects/wchar_t/2.cc
! d6424d388fe8e1cb6ec37c05c304b0ac  libstdc++-v3/testsuite/27_io/objects/wchar_t/2523-1_xin.cc
  8c1b578bb2722053c950f2cf943baf83  libstdc++-v3/testsuite/27_io/objects/wchar_t/2523-1_xin.in
! c34d2d3228eb18b116c69ca9ac783250  libstdc++-v3/testsuite/27_io/objects/wchar_t/2523-2_xin.cc
  daa7a5fffcba8b5ec5ca1a8de7734416  libstdc++-v3/testsuite/27_io/objects/wchar_t/2523-2_xin.in
! 6454324c705ddd36df99168825198286  libstdc++-v3/testsuite/27_io/objects/wchar_t/3045.cc
! b588041c7999ac56f2f76ce0f8d807ad  libstdc++-v3/testsuite/27_io/objects/wchar_t/3647.cc
! 65cbcd3de61c2819c56e8b739b39580d  libstdc++-v3/testsuite/27_io/objects/wchar_t/3_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/wchar_t/3_xin.in
! dfb133a1baacfd90265bcd3a99c6e323  libstdc++-v3/testsuite/27_io/objects/wchar_t/41037.cc
! 4993f8691a364b64ad80fa6c9e0248bf  libstdc++-v3/testsuite/27_io/objects/wchar_t/4_xin.cc
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/testsuite/27_io/objects/wchar_t/4_xin.in
! d6ed50d9f2e6aaffd902fb556d325ea7  libstdc++-v3/testsuite/27_io/objects/wchar_t/5.cc
! 417af10e14c1b918e849f643e9049947  libstdc++-v3/testsuite/27_io/objects/wchar_t/5268.cc
! f7262965ccaed00a8ccbf3e08e8c8ae9  libstdc++-v3/testsuite/27_io/objects/wchar_t/5280_xin.cc
  e7df7cd2ca07f4f1ab415d457a6e1c13  libstdc++-v3/testsuite/27_io/objects/wchar_t/5280_xin.in
! f168b9cea481a5b2c1e782a134e4a73a  libstdc++-v3/testsuite/27_io/objects/wchar_t/6.cc
! dd827dfa4beab6f8115192c88dc9097f  libstdc++-v3/testsuite/27_io/objects/wchar_t/6548_xin.cc
  d8e8fca2dc0f896fd7cb4cb0031ba249  libstdc++-v3/testsuite/27_io/objects/wchar_t/6548_xin.in
! 678fb5cf7359f2799acb6e4663fb8e90  libstdc++-v3/testsuite/27_io/objects/wchar_t/6648-1_xin.cc
  069d0b68d99275bb4412e90bd9d5c966  libstdc++-v3/testsuite/27_io/objects/wchar_t/6648-1_xin.in
! 1734630799ea6ce7946e2982479717dd  libstdc++-v3/testsuite/27_io/objects/wchar_t/6648-2_xin.cc
  6b76e6feddcc145dc3499d8d123d9da7  libstdc++-v3/testsuite/27_io/objects/wchar_t/6648-2_xin.in
! 1faa132ac19b2887e21526274d25873e  libstdc++-v3/testsuite/27_io/objects/wchar_t/7.cc
! 0c433f5a0f9f09eeaa5b6f47b6504f24  libstdc++-v3/testsuite/27_io/objects/wchar_t/7744_xin.cc
  0bee89b07a248e27c83fc3d5951213c1  libstdc++-v3/testsuite/27_io/objects/wchar_t/7744_xin.in
! 9e4f81ef6c42a542848718705dde4e55  libstdc++-v3/testsuite/27_io/objects/wchar_t/8.cc
! e6e79168d665b8224885f4f977218a07  libstdc++-v3/testsuite/27_io/objects/wchar_t/9520.cc
! 4854dd6ce5de826cf2d057b4f8155f30  libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-1.cc
! 0aa9b02ea6b7c4114b7ce90fe3f5a0d0  libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-2_xin.cc
  33ab658c3d687d1d73a0e92a596f725e  libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-2_xin.in
! f1ac47904cb063280d770ede1e3e158a  libstdc++-v3/testsuite/27_io/objects/wchar_t/9662.cc
! 48bc9b65d207efa2e30f7296cfc2badb  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.in
! 804cf6932e98a0243903581f957a324b  libstdc++-v3/testsuite/27_io/objects/wchar_t/dr455.cc
! 5a17e83a360eeb6387ca8927b11e63c3  libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc
! 7946ca2718bffa42349cfc92b3fc769c  libstdc++-v3/testsuite/27_io/rvalue_streams.cc
! 906faf2e05db9c0940f5662441b252be  libstdc++-v3/testsuite/27_io/types/1.cc
! 1f329badccf6f7e0f24321ef5064fdca  libstdc++-v3/testsuite/27_io/types/2.cc
! 426d3904a1a61d854723734268b6cb46  libstdc++-v3/testsuite/27_io/types/3.cc
! e794fee9712c98a6ff17081271e93109  libstdc++-v3/testsuite/27_io/types/4.cc
! 27a6c5795bad5310f2b697972606dfa5  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/awk/cstring_01.cc
! 87793863d5523f9b727b0f745d52c16a  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/empty_range.cc
! e23926ff3ce8c8e5f63b0b0607735eb8  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_01.cc
! e48290eaf4730b6dfa0549c871907f51  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_00_03.cc
! 029c52ba7081721d4131a83aedcf864b  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc
! b48adc8a871e717a601f44ed994ad59b  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_02_03.cc
! 67b4bbc7c57e75164e1ca4630f93e03f  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc
! 603ffc3ff7281bd8f987155e80327817  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/dr2329_neg.cc
! ca3caca8ccf3ec184326c1f6110a2267  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/53622.cc
! 1fe83c47f1b08aa5b21645b4d2074273  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/57173.cc
! 90cfec004d65c181d4fff372caae2a3c  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/58576.cc
! 2bb441ae7dec10a189bdeb0d09da48ec  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/61601.cc
! a871d4b650271c21dcb861e123842352  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/68863.cc
! ff4cc42ce4c9a52dae6c458861926a09  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/anymatcher.cc
! 6510038a5e9c290d7bf59df8c7fa89d8  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/backref.cc
! 300b89ba6df2a13d56fb9a68fcf3275b  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/empty_range.cc
! a9e0a9c2e5877bd457c0610f9d0a4a84  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/emptygroup.cc
! a03e6a1ff6de0cda09d9537cc69f07fe  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/hex.cc
! e515abeb08d01499556d865c5cab7372  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/quoted_char.cc
! 4b05d6837df6bbe00c854428d4d2750b  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/ungreedy.cc
! 083d56c21772f416d3994d95ad9e8813  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/63199.cc
! f39df7cffbfa52a5d2d7bed8b768b83d  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/anymatcher.cc
! 17cadf3ac6a84289ffd5def65921afcc  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/cjk_match.cc
! a6ea373313f0636b266cea64c43a0c0a  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/hex.cc
! 147cc81f2db92d1f4fe4205abd4ba723  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_plus.cc
! 49f4c42333cfa7273a59d3254e1d40fa  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_questionmark.cc
! bff3011e0984d7370871a1c4c17b1744  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_range.cc
! e65813388418098d37bebdd83ad35e0c  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_any.cc
! a36db31d6ed097df55527d05b350dc07  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_00_03.cc
! 47e57eadf06286acd4053960605f2e8b  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_01_03.cc
! f315439939fc2e753fc01261bb617fae  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_02_03.cc
! 03a1097d9037440f69927caf24f35e1e  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc
! b9ddef6aca02b8171eb8e101802d88a1  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/51711.cc
! 3aba5539e381fd669c20b5df6fe03c80  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/basic_replace.cc
! ffffa6b84498fb75ac805ea386714767  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/dr2213.cc
! f17938aa8611a94c5965d42db91bcc03  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/pr83601.cc
! 4111231c816538fe9827ccb5cc385be9  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc
! 325fa5a55f7d9bcf82b2d4479bf6dfcf  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/pr83601.cc
! b83f7bb76920a69d2c72db2a474739a7  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/61424.cc
! 5f068b08a558f72de8c75d7d488393ae  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/61720.cc
! af4cab4848d07293dfe52fdd72f271c5  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/basic/string_01.cc
! 458daf871c2cf8d0b6a36dcb816afe84  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/dr2332_neg.cc
! d46d20e6ee1fbdfa35e83ebade887c8a  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc
! dceba1f156bfd90a9ac606de1f6f4321  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/flags.cc
! 0a5cfaaa97e508d606ffcd131b67256c  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/greedy.cc
! b4e38cc3b5a9fd64d5ffe9b9bdacbe6c  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc
! 82fbecca0f4aedc8a5a818619bc8bbc9  libstdc++-v3/testsuite/28_regex/basic_regex/85098.cc
! e0db0e1a4e3e3acb57279a005a712a48  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc
! 1af07bb16557f1660c4e11a52a380664  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring_op.cc
! 4c1aba70e80fa4a18bad61859d62ec30  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/lwg3296.cc
! 2d13620909f7f3a24c529ee26ec720e5  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/moveable.cc
! efd2028c9762d2ea264af3600222530c  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/pstring.cc
! 60e0c6d395e9484e3305621573a0cd59  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/range.cc
! d44630e1b57c57648d832647baa3e62d  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string.cc
! c80a3903527e42fc3636c63e6097124e  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string_op.cc
! 5cbf3e7bd512cb1977969cbafa1ac532  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring.cc
! 5fa5aa118f92c335e0243b24026b57c9  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring_op.cc
! 5e4929d573c4209033439995b5dbb44d  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/lwg3296.cc
! 5384081ed2fff4ead55e39a7902b630e  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/pstring.cc
! eff4ddf0d5253620431773b4a7e4f3fb  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/range.cc
! e29651e3207ab49acee6c6f611c9c3aa  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string.cc
! dc6486a338ed92c9d163913f89e9224c  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string_op.cc
! 6d2bab49c888fd1e37e32fb1c9c877fe  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/47724.cc
! 82c6755c338ef2364d98d59bcefeddea  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/83598.cc
! 99b56078ab65b87abad38cb96cc53ae0  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/cstring.cc
! b9a1e1964145bbd65ccd8a00c6a306a9  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/default.cc
! 790fa5d489f08e4674e6c07e190855f7  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/iter.cc
! 05b7a7a590e963a003f58dcbdf4af7b9  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_char.cc
! 5c1033abc8dbe8e4752ee390bf731117  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_wchar_t.cc
! c3d46daa8586e26d358c6bd3674b625d  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc
! 39c5dfe6fba1bd4aaba8f16389590c99  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/string_range_01_02_03.cc
! 849df45f956ed542f33eed7017f5d9f0  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring.cc
! 1c630814467c45dde1bf606df99714ff  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_awk.cc
! df74943b49b48855ebc9aafd22769ac7  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_ecma.cc
! e362b0a0f56c0344de6acc1ea2adf5af  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_egrep.cc
! 59951f798a5f068ec5775a849c2963a4  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_grep.cc
! a5821571f17550b3574573f5458d6bd1  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/default.cc
! f45d6c2e9d073e50576f4096d2440cea  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/range.cc
! 6bd64861481a628b37f218551789741a  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/copy_char.cc
! 0975d8998c16561cc75b845e7a7356c1  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/deduction.cc
! 0c50313b4bac3a5fc946d7f8f707db30  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/cstring.cc
! cadc60cd5bc0f9efc2dfacbf9a4b6bb4  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/string_range_01_02_03.cc
! 966067e7fd66c32ecb744b30b39f50d3  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/move_char.cc
! 71733dfea7bf6823b4247e68b8f3f6a2  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_char.cc
! adf8fed06001b5040fe0ab2f7bc6984c  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_wchar_t.cc
! a489d699a02ce606cab705201fc9cea6  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/cstring.cc
! a5bf1b81e5f8fe9e042114ef05d81ae1  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/default.cc
! d8121337fe298cc10d7199cf94068661  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/range.cc
! 3517a138133596765d5d49792f4c0a2d  libstdc++-v3/testsuite/28_regex/basic_regex/imbue/string.cc
! cb48cc3d864828da741e0c4564538b8b  libstdc++-v3/testsuite/28_regex/basic_regex/multiple_quantifiers.cc
! 8a7d35fb9fad9dc6ad7bd79f6847e2c0  libstdc++-v3/testsuite/28_regex/basic_regex/requirements/constexpr_data.cc
! 254d5e1af6bf061c815002f4e3269417  libstdc++-v3/testsuite/28_regex/constants/constexpr.cc
! 6981a6bdc543403136c772471a9844a6  libstdc++-v3/testsuite/28_regex/constants/error_type.cc
! a08c13a8d5e99007d70c9442632480df  libstdc++-v3/testsuite/28_regex/constants/match_flag_type.cc
! d156ae284beb29c972042a9e8dfedd3b  libstdc++-v3/testsuite/28_regex/constants/syntax_option_type.cc
! 90c4dd5cc08354f59a28035f82d6c07d  libstdc++-v3/testsuite/28_regex/headers/regex/std_c++0x_neg.cc
! f4f42f37e997aba9758a33ab6daec54f  libstdc++-v3/testsuite/28_regex/init-list.cc
! 262ce576d205c4863fb2df54604b6918  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/64140.cc
! dd4e567b817332bad9dbbf4a61480d6e  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/string_01.cc
! 3377a4f855b3aa0ce92a2269380f31ec  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/string_position_01.cc
! 686137c83db0493204468a10556e8e70  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/char/default.cc
! bb0f96b0bbe7f258e71915ee3ba53e45  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/char/dr2332_neg.cc
! 0e2395713a021c8db83163e3b518bdeb  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/wchar_t/default.cc
! 0608894f9a460dcc65b250cb47bbe254  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/typedefs.cc
! a456b8460d66510deeff03f155e17fef  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/wchar_t/string_01.cc
! bd2e2c2fd57ac565af6fbc715fed6435  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/wchar_t/string_02.cc
! e781afcc7944ac3bef0bc8812f1b341e  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/64303.cc
! 54799dccf71e2514a81186be287682b6  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/char/string_01.cc
! 1e43db82e9b0eca160a5c5801c393f8e  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/char/default.cc
! 3a633987f133ccf96c4cea667d56b26c  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/char/dr2332_neg.cc
! 1dc7ebda237bea76d3bd3fdc2b7f4ea4  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/wchar_t/default.cc
! 0cc80a403cad8e4e52104e8ccbba1576  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/typedefs.cc
! b57454612a4d974285bb908b705d9083  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/wchar_t/string_01.cc
! 6f1de6694bab4a2d8b193f1f1368d611  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/wchar_t/wstring_02.cc
! 406c6e3793a245ef4ac8ce8399728640  libstdc++-v3/testsuite/28_regex/match_results/94627.cc
! 80db37d9a637c75bf0912e558e1b431e  libstdc++-v3/testsuite/28_regex/match_results/ctors/char/default.cc
! 90fe7d75e0128796f3b434f31fb53cc6  libstdc++-v3/testsuite/28_regex/match_results/ctors/wchar_t/default.cc
! a2e33a5b5c0547c42c2071176860a8cb  libstdc++-v3/testsuite/28_regex/match_results/format.cc
! 5c8e6b3e23027bdb0dbc153ee05be0cc  libstdc++-v3/testsuite/28_regex/match_results/out_of_range_submatches.cc
! 6a3207a2f2f01d041b55cac021fb258e  libstdc++-v3/testsuite/28_regex/match_results/pmr_typedefs.cc
! 837624fb3c40b562dce48d84e686bc34  libstdc++-v3/testsuite/28_regex/match_results/swap.cc
! 9a30984569d68daeb00cd11d252156f4  libstdc++-v3/testsuite/28_regex/match_results/typedefs.cc
! 950f18b09b3e47d85261ea31de5ac57d  libstdc++-v3/testsuite/28_regex/range_access.cc
! 813a556618d54f48be1066daef89e76b  libstdc++-v3/testsuite/28_regex/regex_error/base.cc
! 176665a55bcf492532036261a1acd254  libstdc++-v3/testsuite/28_regex/regex_error/regex_error.cc
! 89c46d0eec1c94ef2840f382f94c97f7  libstdc++-v3/testsuite/28_regex/regression.cc
! 76c0323c9023727331732a91ccf8f5f8  libstdc++-v3/testsuite/28_regex/requirements/typedefs.cc
! 251cefaa0c073810d16fc5cfb1d51cb7  libstdc++-v3/testsuite/28_regex/simple_c++11.cc
! 6271689ccf829656995d335938016b4e  libstdc++-v3/testsuite/28_regex/sub_match/cast_char.cc
! c18aa3e22011fd8be41f09876a8a8af5  libstdc++-v3/testsuite/28_regex/sub_match/cast_wchar_t.cc
! f33750e67a9d164202d48e4a299d2448  libstdc++-v3/testsuite/28_regex/sub_match/compare.cc
! 16cbfa4433455dbf29aaa5d26d32595d  libstdc++-v3/testsuite/28_regex/sub_match/compare_c++20.cc
! d2ecb5bf473732da532891ac2bb0228a  libstdc++-v3/testsuite/28_regex/sub_match/embedded_zeros_cmp.cc
! 209c228c5612ff2876930730954c94f5  libstdc++-v3/testsuite/28_regex/sub_match/length.cc
! e96112ab94f9e037cdaae4f285951a78  libstdc++-v3/testsuite/28_regex/sub_match/typedefs.cc
! 31055959b4d6db7c1bd0d55759a8d921  libstdc++-v3/testsuite/28_regex/traits/char/ctor.cc
! c32264c98d5fdbb5648d9975aba0e76d  libstdc++-v3/testsuite/28_regex/traits/char/icase.cc
! d3b35afc099c8aad742258fdb99a5997  libstdc++-v3/testsuite/28_regex/traits/char/isctype.cc
! b82c0254f8f2ee2c9dae24ee52ebd461  libstdc++-v3/testsuite/28_regex/traits/char/length.cc
! 81ec8acfe077d142b136c53675c96be1  libstdc++-v3/testsuite/28_regex/traits/char/lookup_classname.cc
! e3de5df359507e23ac716dce9f8b526d  libstdc++-v3/testsuite/28_regex/traits/char/lookup_collatename.cc
! cf1a05b383c586dc2c401c5457edd119  libstdc++-v3/testsuite/28_regex/traits/char/transform.cc
! ebfbb349fa2eb616cd49a1f061e2e3fb  libstdc++-v3/testsuite/28_regex/traits/char/transform_primary.cc
! bbeaa0b330dad217e8c7cfc214571736  libstdc++-v3/testsuite/28_regex/traits/char/translate.cc
! 82404210b4a69a90ca644db380e08021  libstdc++-v3/testsuite/28_regex/traits/char/translate_nocase.cc
! 8163a05630bff2f021ea4e70967c86ab  libstdc++-v3/testsuite/28_regex/traits/char/user_defined.cc
! 3ce0b6e3d22d3ccc5d5804dbe0e7765a  libstdc++-v3/testsuite/28_regex/traits/char/value.cc
! 72962db069c1f364bf1829e46489f3d0  libstdc++-v3/testsuite/28_regex/traits/wchar_t/ctor.cc
! e3832d180beb58755727d3914388cc35  libstdc++-v3/testsuite/28_regex/traits/wchar_t/isctype.cc
! cea5ceccfda73bd7ea529886ac6a5884  libstdc++-v3/testsuite/28_regex/traits/wchar_t/length.cc
! a46cef6b194b4ef249b88f0993fe7221  libstdc++-v3/testsuite/28_regex/traits/wchar_t/lookup_classname.cc
! 5a4fb22e4284cc8f90bec6b5f019dfd9  libstdc++-v3/testsuite/28_regex/traits/wchar_t/lookup_collatename.cc
! cb4186f7b4932cc41c265536d46126a3  libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform.cc
! 6879d2e3fcebe9dd807cf9a5eccd0651  libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform_primary.cc
! 4856c3e74091140957dae48656486b82  libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate.cc
! 34a193b87fc5d4fdfcba2b417e4f080c  libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate_nocase.cc
! d8f6c3b4313b60d40aefa39c23fe415c  libstdc++-v3/testsuite/28_regex/traits/wchar_t/user_defined.cc
! de987a4835eeec0557a9e227feb16689  libstdc++-v3/testsuite/28_regex/traits/wchar_t/value.cc
! 8392a5490028e9799172a8a00b9512ad  libstdc++-v3/testsuite/29_atomics/atomic/60658.cc
! 3047feae3b6b56bd206d04c7000defc4  libstdc++-v3/testsuite/29_atomics/atomic/60695.cc
! 07a5ca9cb0dd555b0d6960e193791e9d  libstdc++-v3/testsuite/29_atomics/atomic/62259.cc
! c04757c8b42762e783ec6f67bb314893  libstdc++-v3/testsuite/29_atomics/atomic/64658.cc
! 774785e253c6135b1533bed7cf9053d0  libstdc++-v3/testsuite/29_atomics/atomic/65147.cc
! 20d19cc71a787ba05745c9a15a1f339c  libstdc++-v3/testsuite/29_atomics/atomic/65913.cc
! 3b3620321b82ac71a11fa50772a78ac6  libstdc++-v3/testsuite/29_atomics/atomic/69301.cc
! 7ed985a9efd040af290a5a63eba1523e  libstdc++-v3/testsuite/29_atomics/atomic/69769.cc
! 820f7b794467356a7d8ba9d9f9041e4f  libstdc++-v3/testsuite/29_atomics/atomic/70766.cc
! 175a9b138ad78b553627ccfbe6386c2d  libstdc++-v3/testsuite/29_atomics/atomic/cons/49445.cc
! ff05a4c9a82e47b1893d2ab7b41b7b10  libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
! 91e48eb733f835fd0a644a4b33982852  libstdc++-v3/testsuite/29_atomics/atomic/cons/constexpr.cc
! 3bb440d6a72cb3f79566a10c2a2262c3  libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_list.cc
! a6895903b2d7913e7b2a7aa4d157f098  libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc
! 1ddf69470009336d53bf56da545f26b1  libstdc++-v3/testsuite/29_atomics/atomic/cons/default.cc
! b3b3ee14ae71b79bd86c119de204abde  libstdc++-v3/testsuite/29_atomics/atomic/cons/direct_list.cc
! 45c1979f01455edb4abcf95c9ff6c21c  libstdc++-v3/testsuite/29_atomics/atomic/cons/single_value.cc
! ede3d84def5df840542541759477a876  libstdc++-v3/testsuite/29_atomics/atomic/cons/user_pod.cc
! 7be4b872919f03f9d67d9ce5b0379374  libstdc++-v3/testsuite/29_atomics/atomic/cons/value_init.cc
! 569d48d15cd642df9b89d904cd713e8f  libstdc++-v3/testsuite/29_atomics/atomic/is_always_lock_free.cc
! 47ac1850b97210b2ae79f021d61f689f  libstdc++-v3/testsuite/29_atomics/atomic/nonmembers.cc
! 02e3a139f4e373b95538e5626ecf6ba2  libstdc++-v3/testsuite/29_atomics/atomic/operators/51811.cc
! cb4b41e3959401ed6b34f896071925f9  libstdc++-v3/testsuite/29_atomics/atomic/operators/56011.cc
! ba979953d707da5018ee836824493b32  libstdc++-v3/testsuite/29_atomics/atomic/operators/integral_assignment.cc
! db479c67eca869e548fe48958b2ad4f1  libstdc++-v3/testsuite/29_atomics/atomic/operators/integral_conversion.cc
! ef708bd440b18e01aff76f4dc5e70b03  libstdc++-v3/testsuite/29_atomics/atomic/operators/pointer_partial_void.cc
! 2a96914c691e2348cf0980c499cc27d7  libstdc++-v3/testsuite/29_atomics/atomic/requirements/base_classes.cc
! 8bea3fc333a1ca3e04259c13dbb50422  libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc
! 771fa3515812bd0e48410441cfb5bbfe  libstdc++-v3/testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc
! ea95e691ca56a60649566bb8e102adcf  libstdc++-v3/testsuite/29_atomics/atomic/requirements/typedefs.cc
! e0f3d8128b70041b681f19ec11ab37ca  libstdc++-v3/testsuite/29_atomics/atomic/requirements/types_neg.cc
! 5aa0309b5d914737141c3abbfe367169  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/1.cc
! 87c1fa5601addba17bc52f62fa4d7397  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/2.cc
! 6861f8c4291859a3cc0ced46dd171977  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/bool.cc
! 169877172155fcd6f623a352404a6e62  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/generic.cc
! 37343949ee5abf4ebde723da5833422c  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/pointers.cc
! ee4caa61a7e8376bf720b39a3d0af9df  libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc
! 8eaa8a7f256a22812a21c5b3972ed399  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc
! 6a018ed93a7744dffa49a6c7a3bc7131  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/56012.cc
! f97c082fdfaea713256eaf09e88cbc5e  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/aggregate.cc
! 62f7c8365fb48361c37421088d403f4c  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/assign_neg.cc
! 7a0b6661373dff35b3bddadd7e504755  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/copy_neg.cc
! 09903f0eb6dd39f975cba0ebd32d57c0  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/default.cc
! 4c8fb3d10cffcaa9312931748f1e1eb0  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/value_init.cc
! f57c8545237b34be34586de3d6bae59d  libstdc++-v3/testsuite/29_atomics/atomic_flag/requirements/standard_layout.cc
! dc5f67fd77b0f3b9aa2b2b3f80d02e3d  libstdc++-v3/testsuite/29_atomics/atomic_flag/requirements/trivial.cc
! edebfae8d52ad3d4f38eccb1edfe8dde  libstdc++-v3/testsuite/29_atomics/atomic_flag/test/explicit.cc
! 7fe30fbb7f68e1ea4ced380c8b5216e9  libstdc++-v3/testsuite/29_atomics/atomic_flag/test/implicit.cc
! fef3c8d588032f89270c5a40aa7a119f  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
! 63a4be6ae0476ff336478c9173e1730e  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc
! 63a4be6ae0476ff336478c9173e1730e  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc
! a700626b7e5354bdbc2ed57b70402d3d  libstdc++-v3/testsuite/29_atomics/atomic_flag/wait_notify/1.cc
! ff494aa59732e939a02afd680cd26881  libstdc++-v3/testsuite/29_atomics/atomic_float/1.cc
! 3b8bf408367b67adf4db171ae7239402  libstdc++-v3/testsuite/29_atomics/atomic_float/95282.cc
! 955ca2fe3232f00ac0432b334101f316  libstdc++-v3/testsuite/29_atomics/atomic_float/requirements.cc
! d8dccec53f55b08eb9dc59685847fae7  libstdc++-v3/testsuite/29_atomics/atomic_float/value_init.cc
! b68218a626f5520609012af0502ac84b  libstdc++-v3/testsuite/29_atomics/atomic_float/wait_notify.cc
! d0205df879aaa9e0880eaa543b48593c  libstdc++-v3/testsuite/29_atomics/atomic_integral/60940.cc
! 7ef98b2543407f43470bc8cd4f9d0eb0  libstdc++-v3/testsuite/29_atomics/atomic_integral/65147.cc
! f40b9332a64fc3b065a0ba05606ff9d1  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/assign_neg.cc
! 14be6526f7225b46e4f1f6ebbcc1666b  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/constexpr.cc
! 6f80b6deeb029311570761358232d41a  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_list.cc
! 29cdb2750d0bc5771cc6af669cb8ad10  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_neg.cc
! 0f9a0afcc1895fdf6507df4681057d9a  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/default.cc
! c90813e39a8601202b16ef7fed13c23c  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/direct_list.cc
! 253463c9bd23de494888dd270f65e308  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/single_value.cc
! 27dab283d2df64c9eb062a977139436e  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/value_init.cc
! 5d2d3af6e956329f88167e9905ccf4e6  libstdc++-v3/testsuite/29_atomics/atomic_integral/is_always_lock_free.cc
! 46d1cb5bce112058a4b120bcbeb170df  libstdc++-v3/testsuite/29_atomics/atomic_integral/nonmembers.cc
! 0050e7c91033ff04952fd9939d7cb8f7  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise.cc
! 763e4523b472c3e24d1419f8cafc9b8b  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc
! 0049dabdcd8da79f4c24cdc019e60d0a  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement.cc
! 3e09dc3ad85ef0c77e9f9381db08da28  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc
! 9fdb45c3307b38787abe2a059b0c5e6b  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment.cc
! f65817f880cc3699af13dd63799329a8  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment_neg.cc
! e68bdc5a4c4e33b7345f7ca8f74b41d6  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/integral_assignment.cc
! 737819d2caf2e41016153af7983ffc8d  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/integral_conversion.cc
! 599465d639b9a338aeac6775cccca212  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/standard_layout.cc
! 2c2b30a962eacc9d77c811092e3f1e13  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/trivial.cc
! 50266fa73e97582d3b36dec8900ae897  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/typedefs.cc
! 2d521aa2602bc3d888108b22b1515053  libstdc++-v3/testsuite/29_atomics/atomic_integral/wait_notify.cc
! 055edfd4b125329629789b321fef6bea  libstdc++-v3/testsuite/29_atomics/atomic_ref/deduction.cc
! 805828ca302abcbb0da52c6b4542db43  libstdc++-v3/testsuite/29_atomics/atomic_ref/float.cc
! 88d7ffa660b1c8062917263d1256c991  libstdc++-v3/testsuite/29_atomics/atomic_ref/generic.cc
! 82170b332fdf2017a2eae95bbb2f9dbe  libstdc++-v3/testsuite/29_atomics/atomic_ref/integral.cc
! 5cf2221c85adc15c9965a6c729a3ff55  libstdc++-v3/testsuite/29_atomics/atomic_ref/pointer.cc
! 701e175b8aa3ae2100a48c8384bd11f1  libstdc++-v3/testsuite/29_atomics/atomic_ref/requirements.cc
! 2771e93e634020da7d3d17d9a85a1a1e  libstdc++-v3/testsuite/29_atomics/atomic_ref/wait_notify.cc
! aa1f06a23500403a7a1ba5db62bc9e1b  libstdc++-v3/testsuite/29_atomics/headers/atomic/functions_std_c++0x.cc
! 65dd1beb8215c9dd5eebe8d3e4609ee9  libstdc++-v3/testsuite/29_atomics/headers/atomic/macros.cc
! 26843023900e60251c2cf952a3562a6c  libstdc++-v3/testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc
! 98c7e8dcd98b6f397e3a3b1f90b1a15d  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
! 745d22e87f388e2ec3b2555134362ed8  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc
! 1e07ca6fed386311a2d4b57a95c40d49  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++20.cc
! cc1003e6bf23f4dc3c0b07de7f9de32c  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc
! 4dd53765013d344ab12c16eb49eeeb2e  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++2a.cc
! 0b9554d92746531f6352092073f9eed0  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++2a_neg.cc
! 2d869ecf21ea0185eacacd020b24228f  libstdc++-v3/testsuite/30_threads/async/42819.cc
! 3ea51df4c3cfccc42ff6a9b63ced1be6  libstdc++-v3/testsuite/30_threads/async/49668.cc
! 66d3331119a31123900cabf8cce73578  libstdc++-v3/testsuite/30_threads/async/54297.cc
! a89d46ff113669cfd1f19088d565caf7  libstdc++-v3/testsuite/30_threads/async/69724.cc
! 7f2456f66b07e1ef9fbb2d61d6a9bb0e  libstdc++-v3/testsuite/30_threads/async/84532.cc
! 46f72f28c6b814d2f4fd92194705bc7b  libstdc++-v3/testsuite/30_threads/async/any.cc
! 7fd548d046c16c18d6dda22d926e1471  libstdc++-v3/testsuite/30_threads/async/async.cc
! d4b27f478971972ad8474fef11ce4f48  libstdc++-v3/testsuite/30_threads/async/except.cc
! c6bb85887ceb6c8a984053f261504ab3  libstdc++-v3/testsuite/30_threads/async/forced_unwind.cc
! b5cea98f2a9f764273aa2d1b60b10ba9  libstdc++-v3/testsuite/30_threads/async/launch.cc
! 59c8d0b89ada2f2dd72263141046297d  libstdc++-v3/testsuite/30_threads/async/lwg2021.cc
! 9f675270ae1c337a93f476a4183ce0e6  libstdc++-v3/testsuite/30_threads/async/sync.cc
! 330fb60f9161432bae2a34a61799a930  libstdc++-v3/testsuite/30_threads/barrier/1.cc
! 0050cb5e6a188da702a03420d05c2990  libstdc++-v3/testsuite/30_threads/barrier/2.cc
! 120d0899928744349648c27f3e9e78c5  libstdc++-v3/testsuite/30_threads/barrier/arrive.cc
! 73c48ddc4cc8aac5307ea0e6cc662ee8  libstdc++-v3/testsuite/30_threads/barrier/arrive_and_drop.cc
! d3cfe86230868efec634a29ab8db7dca  libstdc++-v3/testsuite/30_threads/barrier/arrive_and_wait.cc
! f58537b42df4381c366fecf97a640249  libstdc++-v3/testsuite/30_threads/barrier/completion.cc
! 54fa35d0d951cf99290842c679bc3f19  libstdc++-v3/testsuite/30_threads/call_once/39909.cc
! 35eb2c377d3daf0d75f60a451844d990  libstdc++-v3/testsuite/30_threads/call_once/49668.cc
! 2dd5376818090a15b06a6969a643bf10  libstdc++-v3/testsuite/30_threads/call_once/60497.cc
! 0bab9e4f9f72ca74653a705bbea2fc66  libstdc++-v3/testsuite/30_threads/call_once/call_once1.cc
! 92d571ef5514ebe9a0777aa1a0689ee5  libstdc++-v3/testsuite/30_threads/call_once/dr2442.cc
! 9fb3abe4a50f180cba0c4eb7b4d15617  libstdc++-v3/testsuite/30_threads/call_once/once_flag.cc
! f0386e74058bca0b7bc1cbcb1a525353  libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc
! 9ea2777a8b8c5fd3bae272074343ae28  libstdc++-v3/testsuite/30_threads/condition_variable/cons/1.cc
! e1f1a3b425e7a04adcfdd340c8976a12  libstdc++-v3/testsuite/30_threads/condition_variable/cons/assign_neg.cc
! 41c680ee6fd0e7e5c990a7d8a00399aa  libstdc++-v3/testsuite/30_threads/condition_variable/cons/copy_neg.cc
! 344519a5a86296b7b53a82a55d921689  libstdc++-v3/testsuite/30_threads/condition_variable/members/1.cc
! 8b8b9a7e0b6443f77bdc227a125244b5  libstdc++-v3/testsuite/30_threads/condition_variable/members/2.cc
! d6ce7dd1f38f005c85a359cfbba06acb  libstdc++-v3/testsuite/30_threads/condition_variable/members/3.cc
! 3bb430172b28eb59144ec5c2fee37293  libstdc++-v3/testsuite/30_threads/condition_variable/members/53841.cc
! 921a74b9e18be7f4a87a908c87d30f67  libstdc++-v3/testsuite/30_threads/condition_variable/members/68519.cc
! 60251d0ad0287bd3ca6ff0b8b5fec55c  libstdc++-v3/testsuite/30_threads/condition_variable/members/clock_neg.cc
! 948407b6c5aedb4d146b2a15122887c8  libstdc++-v3/testsuite/30_threads/condition_variable/native_handle/typesizes.cc
! aec2f11d2d80fd5f569e0973996cef7f  libstdc++-v3/testsuite/30_threads/condition_variable/requirements/standard_layout.cc
! f475478ddf192243bec52837ef87be67  libstdc++-v3/testsuite/30_threads/condition_variable/requirements/typedefs.cc
! 27a4824d9373c1b46033e76fccdea6fb  libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc
! d3521ac78c5ddf658de288ec210f4987  libstdc++-v3/testsuite/30_threads/condition_variable_any/53830.cc
! 1ad8252d2a74e59252d04785e72ef435  libstdc++-v3/testsuite/30_threads/condition_variable_any/cond.cc
! a123ce97c10e580b25090bacc9ce5677  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/1.cc
! d09cbe2a62468d30eea0ca467f14de12  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/assign_neg.cc
! 1393c013fb241023ff945f25e8808724  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/copy_neg.cc
! cd8fd87be5567d03083606b613e9c07a  libstdc++-v3/testsuite/30_threads/condition_variable_any/members/1.cc
! 2f9d0606f9ebc507efc52dadacfcff6c  libstdc++-v3/testsuite/30_threads/condition_variable_any/members/2.cc
! 4bbc66bdb94cf1ff2d69734c3d4a3b4f  libstdc++-v3/testsuite/30_threads/condition_variable_any/members/clock_neg.cc
! 7e3d80e1dc193949277aba7b175bf753  libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/1.cc
! 90f6703498715aed309efdd1deb2038e  libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/2.cc
! 86b60f110ad98a582760d75c3a02934c  libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc
! ec2370f25c0b92b36971e7b108e11f50  libstdc++-v3/testsuite/30_threads/future/cons/assign_neg.cc
! 0aae26b65dba5a9e0d1e363b17c94062  libstdc++-v3/testsuite/30_threads/future/cons/constexpr.cc
! 34fb25ccd407192dfcf4c55015d3c30b  libstdc++-v3/testsuite/30_threads/future/cons/copy_neg.cc
! 1920db5bdc8665cced549c8b596e6a4d  libstdc++-v3/testsuite/30_threads/future/cons/default.cc
! f5dff5534ead01d336889bf54f10b745  libstdc++-v3/testsuite/30_threads/future/cons/move.cc
! ed8076a2ba1777c9260da958fcf2db8d  libstdc++-v3/testsuite/30_threads/future/cons/move_assign.cc
! c8675dcdbe47bff423d8d7638ca439b7  libstdc++-v3/testsuite/30_threads/future/members/45133.cc
! 5aa2501d2f0e1395543a82bfcf0df2ba  libstdc++-v3/testsuite/30_threads/future/members/93456.cc
! 3af1b8739052401df1a32ce2a2935c4b  libstdc++-v3/testsuite/30_threads/future/members/clock_neg.cc
! 4cdb081408865da441cf49af8c9411d4  libstdc++-v3/testsuite/30_threads/future/members/get.cc
! a2712fc938e1be225e52ea1925f7fe1f  libstdc++-v3/testsuite/30_threads/future/members/get2.cc
! 6e415321aa308264a679c9e69901707e  libstdc++-v3/testsuite/30_threads/future/members/poll.cc
! 90cf77f209fefdd0ae8cee2b98f29051  libstdc++-v3/testsuite/30_threads/future/members/share.cc
! 6b93a1a6d47c283b3bb72ecfda2cd4fe  libstdc++-v3/testsuite/30_threads/future/members/valid.cc
! 8a0bdc3f72e91542f5a06890cbcf6d6f  libstdc++-v3/testsuite/30_threads/future/members/wait.cc
! fb01e0a8ed4f112ad6f8966bafc6987b  libstdc++-v3/testsuite/30_threads/future/members/wait_for.cc
! b0035c3aa8e72e02498c59a8edd66576  libstdc++-v3/testsuite/30_threads/future/members/wait_until.cc
! 02205833fb3149d930610a6020794076  libstdc++-v3/testsuite/30_threads/future/requirements/explicit_instantiation.cc
! a57e5890b1510f90265a75870f5cfad8  libstdc++-v3/testsuite/30_threads/future/requirements/lwg3458.cc
! fc1342307522d021878ebe4d8e646311  libstdc++-v3/testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc
! bc615b27e79bc26362e845c985454408  libstdc++-v3/testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc
! f461a06417d46c96f28a406cb66bc15d  libstdc++-v3/testsuite/30_threads/headers/future/std_c++0x_neg.cc
! e7ad7693ab2c99f224ae6bafb13976af  libstdc++-v3/testsuite/30_threads/headers/future/types_std_c++0x.cc
! caa0a3f44b7d5382bd73269135d3bdea  libstdc++-v3/testsuite/30_threads/headers/mutex/std_c++0x_neg.cc
! a0c4df9445f31e2d46706d5512ccdc9e  libstdc++-v3/testsuite/30_threads/headers/mutex/types_std_c++0x.cc
! 2c6549f440c169fd98cebc7687976044  libstdc++-v3/testsuite/30_threads/headers/stop_token/synopsis.cc
! 474ce8072581779b1fe9460d6e3228b7  libstdc++-v3/testsuite/30_threads/headers/thread/std_c++0x_neg.cc
! df790c6555e5614b13f5b78410e62206  libstdc++-v3/testsuite/30_threads/headers/thread/types_std_c++0x.cc
! b5545bcc63db6280ef271128d4278f28  libstdc++-v3/testsuite/30_threads/headers/thread/types_std_c++20.cc
! e0ff88b27bd9df1b37b234dc508c1176  libstdc++-v3/testsuite/30_threads/jthread/1.cc
! 09517c25b4e747366e765547dca82531  libstdc++-v3/testsuite/30_threads/jthread/2.cc
! 2162ba96ad194c33b86e75408b55ff78  libstdc++-v3/testsuite/30_threads/jthread/3.cc
! 595e4a07f6f2f38c483aab4ea9ce7725  libstdc++-v3/testsuite/30_threads/jthread/95989.cc
! 3676ca6facedc8206b9562e7c02d2545  libstdc++-v3/testsuite/30_threads/jthread/jthread.cc
! 6014da560f8c212120ff3797e6fc2dc6  libstdc++-v3/testsuite/30_threads/latch/1.cc
! 72050f867f5737207717aac1c18eae40  libstdc++-v3/testsuite/30_threads/latch/2.cc
! a99ee3d1f9d0b8df08b5a6a20c99edf2  libstdc++-v3/testsuite/30_threads/latch/3.cc
! db4f3af5a39d025da0b286224415dc61  libstdc++-v3/testsuite/30_threads/lock/1.cc
! af966288504b651560724301eebe2a8e  libstdc++-v3/testsuite/30_threads/lock/2.cc
! e5ef638b849a375aafa5b20f6b91c770  libstdc++-v3/testsuite/30_threads/lock/3.cc
! 4021207c6041439779de77b6aeb076e3  libstdc++-v3/testsuite/30_threads/lock/4.cc
! 357382ebcc190fd5c8154229cd42c01b  libstdc++-v3/testsuite/30_threads/lock_guard/cons/1.cc
! 24148d63b8e15b45a2b52731753e3396  libstdc++-v3/testsuite/30_threads/lock_guard/cons/deduction.cc
! 4046e6f82fec395bab5d3a317baf56dd  libstdc++-v3/testsuite/30_threads/lock_guard/requirements/explicit_instantiation.cc
! 85a146ff3a0a7d5f50832ee01a5bbcd2  libstdc++-v3/testsuite/30_threads/lock_guard/requirements/typedefs.cc
! 147ddf39711f388926b51ff27acfa1c6  libstdc++-v3/testsuite/30_threads/mutex/cons/1.cc
! c96c1f7098293e309ff1cc8f197444c6  libstdc++-v3/testsuite/30_threads/mutex/cons/assign_neg.cc
! 23cdf647238333039606370c8eb6ebf0  libstdc++-v3/testsuite/30_threads/mutex/cons/constexpr.cc
! 880b0a910a7a467e14ca8ca6871318b5  libstdc++-v3/testsuite/30_threads/mutex/cons/copy_neg.cc
! 264985032ff3aed2b15c90db8572a8c8  libstdc++-v3/testsuite/30_threads/mutex/dest/destructor_locked.cc
! 5a220ccfbc74dbff281f6e98b6536402  libstdc++-v3/testsuite/30_threads/mutex/lock/1.cc
! 21899939ff86277938eabf09dea33f05  libstdc++-v3/testsuite/30_threads/mutex/native_handle/1.cc
! 389104be6cfbf66fbfbbcc9ca3edb922  libstdc++-v3/testsuite/30_threads/mutex/native_handle/typesizes.cc
! 02584ad55c104f061633d04662511049  libstdc++-v3/testsuite/30_threads/mutex/requirements/standard_layout.cc
! 9e91f84b1e23638b30a4c7831ac6c242  libstdc++-v3/testsuite/30_threads/mutex/requirements/typedefs.cc
! 2b69d0c1d9dc2ec259e947beec383950  libstdc++-v3/testsuite/30_threads/mutex/try_lock/1.cc
! 68b1f2b0b645d0adf5e9ace20d192d0b  libstdc++-v3/testsuite/30_threads/mutex/try_lock/2.cc
! 4dd1133b8a3e6975669688ac2e342497  libstdc++-v3/testsuite/30_threads/mutex/unlock/1.cc
! 1c1b0d4898ad79ebe169b58049fba13c  libstdc++-v3/testsuite/30_threads/mutex/unlock/2.cc
! 10d0655c2800099349d57b85175c8ea2  libstdc++-v3/testsuite/30_threads/packaged_task/49668.cc
! 6bc80af54b133010698e67dc0198c750  libstdc++-v3/testsuite/30_threads/packaged_task/60564.cc
! 7a51c8347e97573c669ea26bd39ba233  libstdc++-v3/testsuite/30_threads/packaged_task/79486.cc
! 7e70bf868cef061b1de4354ef7482777  libstdc++-v3/testsuite/30_threads/packaged_task/cons/1.cc
! 60a1ef4af6bf972a24bfb5a7c4143a91  libstdc++-v3/testsuite/30_threads/packaged_task/cons/2.cc
! 412ff16745f9e9926b1b746fe69d84af  libstdc++-v3/testsuite/30_threads/packaged_task/cons/3.cc
! 4f428e2b6c88d75e902d906345bb895b  libstdc++-v3/testsuite/30_threads/packaged_task/cons/56492.cc
! e3d5a64c59d8ac294a46db48f478907a  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc.cc
! 1cc7876bf9f4855dbae9bfcaeb1cc974  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc2.cc
! c9aede0180240302f0365cdb6f9c3642  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc_min.cc
! cc50eb6d42ef5dc2dea81fa3c8ee8e91  libstdc++-v3/testsuite/30_threads/packaged_task/cons/assign_neg.cc
! d5fbdab65ffa2863f03ff37984fb2dfb  libstdc++-v3/testsuite/30_threads/packaged_task/cons/copy_neg.cc
! 28c551b37db017eb02bdf1febc5d4feb  libstdc++-v3/testsuite/30_threads/packaged_task/cons/move.cc
! c56981c514cb7ac65fb8b15e6e318b3e  libstdc++-v3/testsuite/30_threads/packaged_task/cons/move_assign.cc
! 51eda418b9ac64743008bbd3fca9dc57  libstdc++-v3/testsuite/30_threads/packaged_task/forced_unwind.cc
! 558002bb124d08df5ff9dafd88cba690  libstdc++-v3/testsuite/30_threads/packaged_task/members/at_thread_exit.cc
! fce6713e5faf65734fa8748f38e5175b  libstdc++-v3/testsuite/30_threads/packaged_task/members/get_future.cc
! 5f6997dd48c77902fcc6148692f8620e  libstdc++-v3/testsuite/30_threads/packaged_task/members/get_future2.cc
! d7b552d1baed04db8378d8c19c09674c  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke.cc
! 9e118c8774d8999de85f4cd5a284c8d3  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke2.cc
! 78ef0e85f14b7f33fe5cff75f1982b8a  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke3.cc
! 3387f674a6e6e5c84758c160415b732f  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke4.cc
! 023190865f814be6f5ec4727aae93f96  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke5.cc
! bff042775949c3c99f4accf4d4702c0b  libstdc++-v3/testsuite/30_threads/packaged_task/members/reset.cc
! 0618472a97d2d456f599036e8a88f0fa  libstdc++-v3/testsuite/30_threads/packaged_task/members/reset2.cc
! ff8db859d7ea211f3005b7235d4e4a78  libstdc++-v3/testsuite/30_threads/packaged_task/members/swap.cc
! ef987eaa76e39953cf9500ad51bf5d12  libstdc++-v3/testsuite/30_threads/packaged_task/members/valid.cc
! db1fc70f2639a67415cef52e2a38a9fa  libstdc++-v3/testsuite/30_threads/packaged_task/requirements/explicit_instantiation.cc
! f5a859ec3a6dc85602f171e69bc7e4e8  libstdc++-v3/testsuite/30_threads/packaged_task/uses_allocator.cc
! 3d0003f643dc63de8764b08eea2f1cbe  libstdc++-v3/testsuite/30_threads/promise/60966.cc
! b4eb6d03e85538a9924a13ede8d8781f  libstdc++-v3/testsuite/30_threads/promise/69106.cc
! 60c50a048c2fede9d7200476083d02d1  libstdc++-v3/testsuite/30_threads/promise/cons/1.cc
! 9d79f1d86ffd0d8c9e5a819e5f3dba3f  libstdc++-v3/testsuite/30_threads/promise/cons/alloc.cc
! 6cf871ae008b7e4453628f06810812c8  libstdc++-v3/testsuite/30_threads/promise/cons/alloc2.cc
! 05addfe3d84a660c363a7f300a0b1193  libstdc++-v3/testsuite/30_threads/promise/cons/alloc_min.cc
! bbad48c787dddc152c20933db334b24f  libstdc++-v3/testsuite/30_threads/promise/cons/assign_neg.cc
! 045d27b7636a8801abdcdeaf06581343  libstdc++-v3/testsuite/30_threads/promise/cons/copy_neg.cc
! 6272c0cb8bafd2f2f8709f51b20644ec  libstdc++-v3/testsuite/30_threads/promise/cons/move.cc
! cec77978b216f11c6a1b34a10d3313ce  libstdc++-v3/testsuite/30_threads/promise/cons/move_assign.cc
! b2674dea3cbacb3830aeb16506227b38  libstdc++-v3/testsuite/30_threads/promise/members/at_thread_exit.cc
! 8e7e749f1dcb1a9ba02b94806766a4e0  libstdc++-v3/testsuite/30_threads/promise/members/at_thread_exit2.cc
! 99ccbeae4d47d75bafa7615db730f843  libstdc++-v3/testsuite/30_threads/promise/members/get_future.cc
! 72b976bc2c4356bbe1d3c578d4c8497a  libstdc++-v3/testsuite/30_threads/promise/members/get_future2.cc
! c23a4d633ef765da7322dc8bf9adfe81  libstdc++-v3/testsuite/30_threads/promise/members/set_exception.cc
! b0f749a73d11688b3eea330805f8215b  libstdc++-v3/testsuite/30_threads/promise/members/set_exception2.cc
! 9be3896980ebc86a223421fd6233549b  libstdc++-v3/testsuite/30_threads/promise/members/set_value.cc
! 811c3810beeff1fecebc7d41c975540b  libstdc++-v3/testsuite/30_threads/promise/members/set_value2.cc
! c2c4ed34d85793372d1222982cfc3e8b  libstdc++-v3/testsuite/30_threads/promise/members/set_value3.cc
! fcb599c6009bcef7fa2343b230a5f5bf  libstdc++-v3/testsuite/30_threads/promise/members/swap.cc
! 1cbe947f83da20bb1cb9e3a0e88b1914  libstdc++-v3/testsuite/30_threads/promise/requirements/explicit_instantiation.cc
! d1c42b5fae0429f02201b0aaef8a6046  libstdc++-v3/testsuite/30_threads/promise/requirements/lwg3466.cc
! d7c17f2ae085f472048e1db863e0a3d7  libstdc++-v3/testsuite/30_threads/promise/uses_allocator.cc
! e89b76f4e0e866475bb8b9d06dd026e9  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/1.cc
! 5dcf9ba25997bf6a071e7da0917f0b1c  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/assign_neg.cc
! cbd43fac6dfdda119e68fffecfac260d  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/copy_neg.cc
! f9e5ea2a22993d0f809124ed319a030a  libstdc++-v3/testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc
! f55559a3ea5497cc68296bfcc7106dd5  libstdc++-v3/testsuite/30_threads/recursive_mutex/lock/1.cc
! 39f6eb1a1ffb73fc89f9492e453af94e  libstdc++-v3/testsuite/30_threads/recursive_mutex/native_handle/1.cc
! fa32d7ba6655497c5c4ae8731690ad61  libstdc++-v3/testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc
! 5d81d368888b7449e2e74a517e49b3ad  libstdc++-v3/testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc
! 55cbdb50e5c05796fd10561e390d8907  libstdc++-v3/testsuite/30_threads/recursive_mutex/requirements/typedefs.cc
! e873e4d1dcf3477295ae1d3831a46c0e  libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/1.cc
! 38cfe39bd77185270a0477a60cc2c99f  libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/2.cc
! 825b0714bf9eb53e76a63809dc490cc0  libstdc++-v3/testsuite/30_threads/recursive_mutex/unlock/1.cc
! 6e821fdc4c002320bf426f6e362faade  libstdc++-v3/testsuite/30_threads/recursive_mutex/unlock/2.cc
! 980fb1fc8ae2d89badeffd1cb9d7ec47  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/1.cc
! a31efbf2bbdedd5c72c293a754b7b3d7  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc
! 3e7b70cb96e11ecfb07656a3407e82b4  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc
! a665a91d5937ecc8824ad4c4bad9280e  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc
! a2cb91aa66c5d8d6a3bffd41fd4f652b  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/lock/1.cc
! 7cd23a9d09f7e6bffa40c6c163606a0b  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/lock/2.cc
! e08ddfc1475936c28e88f01f05763944  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc
! 3d421d3c5c89fbc7333d5385ad59f54b  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/native_handle/typesizes.cc
! 356e9e974066784752769813bdf59c31  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc
! d2875490c412f2da4b85e0dc91cf4e62  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc
! 93c373d8297affe52bb85817201f909b  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc
! ad11eae6ba0bf1357fadb4853f5efd5e  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc
! 0362665728273d89e59fecd69e3678e5  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc
! 2c0740b4e2d56a4f91764ab1f3cf08b1  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc
! d2875490c412f2da4b85e0dc91cf4e62  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc
! 8c5d3afe868924984671c2b782522107  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc
! ca4720ef01605ade5fecb07d2fd958e8  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc
! 9de9c6cd54a025ef6e00a75cb2072a97  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/clock_neg.cc
! 37c0dbc999dbeb73b3af69d1c49a58fb  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/1.cc
! f354005c5041a727787cc472054497f3  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/2.cc
! 8930587017e4bf4ff304f1c4563cc5f9  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/1.cc
! 35ae576f30604996d85fb9f58083affe  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/deduction.cc
! 0e146fb373c37cda02bf2f12c92664b1  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc
! 1d74113bd39ae5f407b871509fc75bdb  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
! e1e345ef8ee0dbb75badba3b3a1e5838  libstdc++-v3/testsuite/30_threads/semaphore/1.cc
! b0d8a422821f56bc3b01bffcedab1ba6  libstdc++-v3/testsuite/30_threads/semaphore/2.cc
! 38eaaefe55716613bb8c037bd4d34653  libstdc++-v3/testsuite/30_threads/semaphore/least_max_value_neg.cc
! 7ef1affcfee69d908db4141b6a837bbe  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire.cc
! 836a04348ecf466570e51d20686d02c2  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_for.cc
! 3de9971eaf96687e388db718494cc42e  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_posix.cc
! f7db5dcf8f4b4f720686ecbb8c528d5b  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc
! b6fee1b6252fa92506353be907ab406f  libstdc++-v3/testsuite/30_threads/shared_future/cons/assign.cc
! d391e802d1f81fac67953bdc9a427ae2  libstdc++-v3/testsuite/30_threads/shared_future/cons/constexpr.cc
! fddbce53bff6e1c42ebd98f78ec24c27  libstdc++-v3/testsuite/30_threads/shared_future/cons/copy.cc
! dd0fd8809d84a14a2b33c458e5fee683  libstdc++-v3/testsuite/30_threads/shared_future/cons/default.cc
! 9d379d8a1efefbe113f43c5cc68d31b4  libstdc++-v3/testsuite/30_threads/shared_future/cons/move.cc
! adac0982e89c6a08b23771abb4cdee1e  libstdc++-v3/testsuite/30_threads/shared_future/cons/move_assign.cc
! 6b5a0ca32aa946373784176c31a70a9f  libstdc++-v3/testsuite/30_threads/shared_future/members/45133.cc
! f91f3c7f5210d356cfe17314ed31a331  libstdc++-v3/testsuite/30_threads/shared_future/members/clock_neg.cc
! e8a90bd57f12e8066e43f81333116d26  libstdc++-v3/testsuite/30_threads/shared_future/members/get.cc
! e4b6817951c8fa47f096c2ded43fea92  libstdc++-v3/testsuite/30_threads/shared_future/members/get2.cc
! 3f3fa9cdf115150b5d4b6a4d9f30f92a  libstdc++-v3/testsuite/30_threads/shared_future/members/valid.cc
! 4325f4318a36e838432b6262ed4c42bb  libstdc++-v3/testsuite/30_threads/shared_future/members/wait.cc
! da42a0da9f4778604c32077cd52cf6f8  libstdc++-v3/testsuite/30_threads/shared_future/members/wait_for.cc
! 7a96994052ef5b19b70b7e4f87f9d8ab  libstdc++-v3/testsuite/30_threads/shared_future/members/wait_until.cc
! afb59eb0ea06f27d506c264ecd3179d3  libstdc++-v3/testsuite/30_threads/shared_future/requirements/explicit_instantiation.cc
! 18e1d2983167ecb40989d51da8a11121  libstdc++-v3/testsuite/30_threads/shared_future/requirements/lwg3458.cc
! d4240178f753e75f09b4b152538ac1e1  libstdc++-v3/testsuite/30_threads/shared_lock/70766.cc
! 85d521b9a5fef1f150b2759afc645019  libstdc++-v3/testsuite/30_threads/shared_lock/cons/1.cc
! be86d57343644006816c7d999d918fd7  libstdc++-v3/testsuite/30_threads/shared_lock/cons/2.cc
! 1ff60d8e6140e36fd8cc4cc6eddb30b8  libstdc++-v3/testsuite/30_threads/shared_lock/cons/3.cc
! 3ab107b1c63237e635491f61d7ad2fb1  libstdc++-v3/testsuite/30_threads/shared_lock/cons/4.cc
! b3eec799be49107d427afc03bfcb1534  libstdc++-v3/testsuite/30_threads/shared_lock/cons/5.cc
! 85f96195b972f0ddc18117ede233ab28  libstdc++-v3/testsuite/30_threads/shared_lock/cons/6.cc
! 95a22755bb8296d4a9cb200952115971  libstdc++-v3/testsuite/30_threads/shared_lock/locking/1.cc
! b3e3bc8750f50df7da52f7e770d70a2d  libstdc++-v3/testsuite/30_threads/shared_lock/locking/2.cc
! b8bef1acf2dbe3a553f7801403a76e87  libstdc++-v3/testsuite/30_threads/shared_lock/locking/3.cc
! b740da8152b91351511302670929ee25  libstdc++-v3/testsuite/30_threads/shared_lock/locking/4.cc
! 7ab43f461e0920ffab052da48215a87b  libstdc++-v3/testsuite/30_threads/shared_lock/locking/clock_neg.cc
! a51b3a9a9f8c4055fb06776896b0fdae  libstdc++-v3/testsuite/30_threads/shared_lock/modifiers/1.cc
! a7951924532272702c16334a660ecf86  libstdc++-v3/testsuite/30_threads/shared_lock/requirements/explicit_instantiation.cc
! 331727d6dde0772b6a9b47eb641d2b07  libstdc++-v3/testsuite/30_threads/shared_lock/requirements/typedefs.cc
! 4e24d516cf789878274936293e8ee78f  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/1.cc
! 9e8678c5ffb15c5c278b183cfe18cbd4  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/assign_neg.cc
! 8b458b4dba83649fa3991fe96077ef95  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/copy_neg.cc
! de1e32a48c5c6cad898ac94f042db1d0  libstdc++-v3/testsuite/30_threads/shared_mutex/requirements/standard_layout.cc
! 63be70bd3c3e68a60d01ae190633b851  libstdc++-v3/testsuite/30_threads/shared_mutex/try_lock/1.cc
! 3385e0c7119a8197de35acdfad1e9849  libstdc++-v3/testsuite/30_threads/shared_mutex/try_lock/2.cc
! f728be5a8a7d225b81b201e78c324279  libstdc++-v3/testsuite/30_threads/shared_mutex/unlock/1.cc
! 6b6c320c195a67a38fa78626d85ed4e4  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/94069.cc
! 2c502fb045327d75d7210a9da03b999f  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/1.cc
! 80f842e02972de6c0a25038d90f51277  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/assign_neg.cc
! 1b3ca6c9df54fc9fba9050b638d7cfc9  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/copy_neg.cc
! 2b51572bea661b1de44d75b9396096ef  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/requirements/standard_layout.cc
! 0f31161a86317084bd6851afe09e4f0a  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/1.cc
! d5b3c30517b8a1b42e5ac008f173c3d4  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/2.cc
! e0a515194c4674364474cc30689700df  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/3.cc
! 2dac52a87faadddda19f429f2422eb2b  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc
! 0dd750ac1f4467c00296e09a04abf8a0  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc
! b0d5c16424ae92339daa83ba894a8b84  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc
! cec079e01aeb96af42a0a5ffc86fdf89  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/unlock/1.cc
! e37810835b436d0d2189c85e68fa7420  libstdc++-v3/testsuite/30_threads/stop_token/1.cc
! 90f6703498715aed309efdd1deb2038e  libstdc++-v3/testsuite/30_threads/stop_token/2.cc
! 12ae7867b6cb796e2bd0bde077de5449  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback.cc
! 392e5d89ae2528adc6a5ae37d56bb5c1  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc
! 1f1c92c70dd5eb6b5c6222d7e3871cb5  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/deadlock.cc
! 93a1ece309b2bcb683d0772bf3066a4f  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/destroy.cc
! da6399ffd7c583fedd8aa142b3c3b6d3  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc
! 6f890223eca99c441e1cb0746afa9db6  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc
! 3a07054493c89b956908d9b50194f314  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/invoke.cc
! b607c88a513c271a60499e4357d066f5  libstdc++-v3/testsuite/30_threads/stop_token/stop_source.cc
! 40dcd4a9cc933342dace69dffbabb3d6  libstdc++-v3/testsuite/30_threads/stop_token/stop_source/assign.cc
! a201d97248354a77efd110e688722c89  libstdc++-v3/testsuite/30_threads/stop_token/stop_token.cc
! 8536c2b7579f85278a88f21d86bf5a99  libstdc++-v3/testsuite/30_threads/stop_token/stop_token/stop_possible.cc
! 9312f7ac04962ce9d93561234eab0b1a  libstdc++-v3/testsuite/30_threads/this_thread/1.cc
! f2148ba8da566f15e08e5ade2695b01e  libstdc++-v3/testsuite/30_threads/this_thread/57060.cc
! dfe91faf82812b1de2b8e68122780b56  libstdc++-v3/testsuite/30_threads/this_thread/58038.cc
! 7c1b425426b124f1a7f635a906f0a8e9  libstdc++-v3/testsuite/30_threads/this_thread/60421.cc
! 1024cc87189b4a9e59f24d1fbea1f8bd  libstdc++-v3/testsuite/30_threads/this_thread/95989.cc
! 6d1c7bd616b291afd6ab0bc8ac7bccf1  libstdc++-v3/testsuite/30_threads/this_thread/sleep_for-mt.cc
! 9185b7798d94810dcfd7c22b90c079e3  libstdc++-v3/testsuite/30_threads/this_thread/sleep_for.cc
! 20c5fe5c87220e29d0c83c65537066d5  libstdc++-v3/testsuite/30_threads/this_thread/sleep_until-mt.cc
! 8922c40e0f88b50ae642cf610cad5fac  libstdc++-v3/testsuite/30_threads/this_thread/sleep_until.cc
! 18d644acadc3b71fa6b3f7fffd26f272  libstdc++-v3/testsuite/30_threads/this_thread/yield.cc
! f51fe4810d0958a58eba10dd8751f263  libstdc++-v3/testsuite/30_threads/thread/70503.cc
! 343a2e5db5d85100ad7e19722057e55b  libstdc++-v3/testsuite/30_threads/thread/84532.cc
! a3ad5b01386b626105129aa34109ef1d  libstdc++-v3/testsuite/30_threads/thread/adl.cc
! c1272ed18bddf397fc909390aa905c76  libstdc++-v3/testsuite/30_threads/thread/cons/1.cc
! 5e32fa3b7f9c88369790bfc0a4278d5c  libstdc++-v3/testsuite/30_threads/thread/cons/2.cc
! f57235e7f6b360edb671f564f6cf678d  libstdc++-v3/testsuite/30_threads/thread/cons/3.cc
! 184dcc92569179caac57dccd7139ecc4  libstdc++-v3/testsuite/30_threads/thread/cons/4.cc
! 24feb8adcc51ab3425412cac5f28710b  libstdc++-v3/testsuite/30_threads/thread/cons/49668.cc
! 983c04445d5d6408dc10386b99cf1a3b  libstdc++-v3/testsuite/30_threads/thread/cons/5.cc
! 9de6d5953a97bf608a903d7bbdd13255  libstdc++-v3/testsuite/30_threads/thread/cons/6.cc
! 240c8b57e45e5bce27d8cb8044167bb9  libstdc++-v3/testsuite/30_threads/thread/cons/69724.cc
! d4c755a53530cbf8e677e0d2cd444245  libstdc++-v3/testsuite/30_threads/thread/cons/7.cc
! 44849215a98b1cc1772a4901b65268ce  libstdc++-v3/testsuite/30_threads/thread/cons/8.cc
! d168a5d1d9fcedd7ca31bfe4471bdcc6  libstdc++-v3/testsuite/30_threads/thread/cons/84535.cc
! 30ddc71744e51f72a392861c606ef096  libstdc++-v3/testsuite/30_threads/thread/cons/9.cc
! f12932159ec3e0f89758cd4f44321105  libstdc++-v3/testsuite/30_threads/thread/cons/assign_neg.cc
! 15ae0c769fd5b7f890736e52e30df99d  libstdc++-v3/testsuite/30_threads/thread/cons/copy_neg.cc
! be5293239295379728a14f260639488a  libstdc++-v3/testsuite/30_threads/thread/cons/lwg2097.cc
! 91adfc5791d663e0a4aab5fe767c4dde  libstdc++-v3/testsuite/30_threads/thread/cons/moveable.cc
! 1da8f4c63697e94a50242441210119e8  libstdc++-v3/testsuite/30_threads/thread/cons/terminate.cc
! be13982a3dd9cd39d0a5bae36175b024  libstdc++-v3/testsuite/30_threads/thread/id/70294.cc
! 056ae5c40ac09ac823c3e2d6d56d810d  libstdc++-v3/testsuite/30_threads/thread/id/hash.cc
! 6bb551503f9a0600bc942e1a4ee4cb23  libstdc++-v3/testsuite/30_threads/thread/id/operators.cc
! ead960966995a912e5c106524db6757a  libstdc++-v3/testsuite/30_threads/thread/id/operators_c++20.cc
! 546cc72251cca2e0ff5f5d243d3ab8a2  libstdc++-v3/testsuite/30_threads/thread/members/1.cc
! 7a8de73547709a68444c1380922b8709  libstdc++-v3/testsuite/30_threads/thread/members/2.cc
! 2b8082eb4d41a7a1c39365c1337ccdca  libstdc++-v3/testsuite/30_threads/thread/members/3.cc
! fbfc11e519094b287efe66a2187cea1f  libstdc++-v3/testsuite/30_threads/thread/members/4.cc
! 4e02b94309bb46dd15baca6fd9c71181  libstdc++-v3/testsuite/30_threads/thread/members/5.cc
! 4aebb104a4ab60b34c54971f1b895520  libstdc++-v3/testsuite/30_threads/thread/members/hardware_concurrency.cc
! 2c8a95690001246804a4e204be5e1bb8  libstdc++-v3/testsuite/30_threads/thread/native_handle/cancel.cc
! 1df1949a00af4701c9fa9c9b1a274fc8  libstdc++-v3/testsuite/30_threads/thread/native_handle/typesizes.cc
! 9dcc58d6d3e3113a991337dfe875e663  libstdc++-v3/testsuite/30_threads/thread/swap/1.cc
! 6928bfdbec35462a8e299d607268a7f8  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/1.cc
! d40919de25579970b1ce24b26ef09eda  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/assign_neg.cc
! 3817e07f7fdb955517896f09483d46a9  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/copy_neg.cc
! efc126493dc9404c8cfd441ffd62457f  libstdc++-v3/testsuite/30_threads/timed_mutex/dest/destructor_locked.cc
! 853d9ab354611bfe9cffad5140dfb0a2  libstdc++-v3/testsuite/30_threads/timed_mutex/lock/1.cc
! 924b95b043f30590469c2b5b3f47124a  libstdc++-v3/testsuite/30_threads/timed_mutex/native_handle/1.cc
! 88c2732f1ff32f4fdb6d1fca7f253ed8  libstdc++-v3/testsuite/30_threads/timed_mutex/native_handle/typesizes.cc
! decb30f74d8f84e35469c35b6b1239e7  libstdc++-v3/testsuite/30_threads/timed_mutex/requirements/standard_layout.cc
! 2a54cdce9bc91984cc1c1830dc0c6606  libstdc++-v3/testsuite/30_threads/timed_mutex/requirements/typedefs.cc
! 464b2e4d2dcef5d8f54f4187c18af020  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock/1.cc
! e2bb6f2cbcbddcb9cdb73a153a7e2753  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock/2.cc
! eae7fb3a730587744a2a3287e0966cb0  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/1.cc
! 411d60ff6ec30bc8d2f9121e006c9ade  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/2.cc
! 2e8662826954bbccdfec474697f03e14  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/3.cc
! 464b2e4d2dcef5d8f54f4187c18af020  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/1.cc
! e2bb6f2cbcbddcb9cdb73a153a7e2753  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/2.cc
! 3acd3e65b59d1223dd3f92bc3586a16d  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/3.cc
! dba4ca3608322fc50b68a06630238d6b  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/4.cc
! 605c381f41c4657e547c68653b8563d3  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/57641.cc
! 4ec0347001aec69a18754de52efea431  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc
! 9ea8d6ee6e37db7563491cea2115f553  libstdc++-v3/testsuite/30_threads/timed_mutex/unlock/1.cc
! 01a37d94f551420ea20f571dc73e05b9  libstdc++-v3/testsuite/30_threads/timed_mutex/unlock/2.cc
! 553383dd4ea8dc05a07f9f2d2fcd62a0  libstdc++-v3/testsuite/30_threads/try_lock/1.cc
! c37c977429e14a718917ba05e6564de6  libstdc++-v3/testsuite/30_threads/try_lock/2.cc
! a6c8e0b48d45eef757ea87faec9de20c  libstdc++-v3/testsuite/30_threads/try_lock/3.cc
! 2dee4c7e3615c3f5de9d9dcfc286d08a  libstdc++-v3/testsuite/30_threads/try_lock/4.cc
! 651d67e5021fc97a576c5c29da195e11  libstdc++-v3/testsuite/30_threads/unique_lock/cons/1.cc
! 1c0123c869bcdc5119b9b6da48d414b2  libstdc++-v3/testsuite/30_threads/unique_lock/cons/2.cc
! e4b90f38b23be4e9d062d61fefc4a204  libstdc++-v3/testsuite/30_threads/unique_lock/cons/3.cc
! cc048b8d3e4792682ac4f68158b530a9  libstdc++-v3/testsuite/30_threads/unique_lock/cons/4.cc
! 175220ef2d2256975b5c46faaa662857  libstdc++-v3/testsuite/30_threads/unique_lock/cons/5.cc
! da747fca724fc57666a35add38e75594  libstdc++-v3/testsuite/30_threads/unique_lock/cons/6.cc
! 226bd4188f0b3fb1f38e8ed85f8869bd  libstdc++-v3/testsuite/30_threads/unique_lock/cons/60497.cc
! 0740dbefda9145b34e2a86dfd1888731  libstdc++-v3/testsuite/30_threads/unique_lock/cons/deduction.cc
! 9b8f2d37d8343fe95f86f883ed78b594  libstdc++-v3/testsuite/30_threads/unique_lock/locking/1.cc
! a6f3cf8d5367354cddd04db31a60296b  libstdc++-v3/testsuite/30_threads/unique_lock/locking/2.cc
! a60f446a0f4597f35e481c3c5c5a142d  libstdc++-v3/testsuite/30_threads/unique_lock/locking/3.cc
! 6a5328ebf770efdf17aee2fa806735a8  libstdc++-v3/testsuite/30_threads/unique_lock/locking/4.cc
! 3ebe308deaea0e815df91ac2cd26affb  libstdc++-v3/testsuite/30_threads/unique_lock/locking/clock_neg.cc
! 511ee3015ec03df220771117077e9105  libstdc++-v3/testsuite/30_threads/unique_lock/modifiers/1.cc
! 655ab2b56a1e0b0ba833dea4e1762c5b  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/explicit_instantiation.cc
! 55c871a26f021533dbe0e966ad551d71  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/typedefs.cc
! 3f99a3b0c92f031be7b4c1737d70728b  libstdc++-v3/testsuite/Makefile.am
! f3925e19d78cb581de7d6b60fecac7df  libstdc++-v3/testsuite/Makefile.in
! f39001cf8ea2b634da1b9350c09d9b72  libstdc++-v3/testsuite/abi/30586.cc
! 9ee6ff4de72f917289fc16b4d339d626  libstdc++-v3/testsuite/abi/cxx_runtime_only_linkage.cc
! 03081354776d529d3f91798dc4a26ebc  libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc
! 41004f5cb23f5a7a15d686cbfe59fcd0  libstdc++-v3/testsuite/abi/demangle/abi_examples/02.cc
! ef2a0933c9c4d368064bcd77b0264ec7  libstdc++-v3/testsuite/abi/demangle/abi_examples/03.cc
! 2f6b0095c6264a639b2eddf1a0fd01cb  libstdc++-v3/testsuite/abi/demangle/abi_examples/04.cc
! f789d7eaa7ee17e85a52f3bdbfa3550e  libstdc++-v3/testsuite/abi/demangle/abi_examples/05.cc
! 53dc1514ea3df905901916c4b87567c3  libstdc++-v3/testsuite/abi/demangle/abi_examples/06.cc
! 01ffe2b1696e9cfeedb75f111b72d7cc  libstdc++-v3/testsuite/abi/demangle/abi_examples/07.cc
! fdde23c4543b832b48549c0c9b5045eb  libstdc++-v3/testsuite/abi/demangle/abi_examples/08.cc
! 27b001b239cd98ab3a3d3068539f389d  libstdc++-v3/testsuite/abi/demangle/abi_examples/09.cc
! 5ab93e43993a770d4a8f87748b7b61d0  libstdc++-v3/testsuite/abi/demangle/abi_examples/10.cc
! c1bb0470aa24d8a55befc91f258d001a  libstdc++-v3/testsuite/abi/demangle/abi_examples/11.cc
! c0e433a7667c441390cdf3cea7dae604  libstdc++-v3/testsuite/abi/demangle/abi_examples/12.cc
! 558c7ffc0359bcf12020a83cc9f2e8cd  libstdc++-v3/testsuite/abi/demangle/abi_examples/13.cc
! 8019c974bf5144156e686310c4651e19  libstdc++-v3/testsuite/abi/demangle/abi_examples/14.cc
! 5ced014c8d4daed625d64d072a179de6  libstdc++-v3/testsuite/abi/demangle/abi_examples/15.cc
! 172b679ad4e2012d3ba49f9219697615  libstdc++-v3/testsuite/abi/demangle/abi_examples/16.cc
! 99ee07b8fc7b8a7d2627f605df5ad84e  libstdc++-v3/testsuite/abi/demangle/abi_examples/17.cc
! ac69b66317f21c1283c70ac6dba3e859  libstdc++-v3/testsuite/abi/demangle/abi_examples/18.cc
! 88954dc4349790b29cfaf15390670e71  libstdc++-v3/testsuite/abi/demangle/abi_examples/19.cc
! f80a73d2ad6f2d26df5417500267789f  libstdc++-v3/testsuite/abi/demangle/abi_examples/20.cc
! be34d75caec01aa992d668bc5c2e537c  libstdc++-v3/testsuite/abi/demangle/abi_examples/21.cc
! be34d75caec01aa992d668bc5c2e537c  libstdc++-v3/testsuite/abi/demangle/abi_examples/22.cc
! e3d583182d077ebed2bdbf4128f94a6d  libstdc++-v3/testsuite/abi/demangle/abi_examples/23.cc
! 1fbae9462577f2e20dd5e84e30dc3992  libstdc++-v3/testsuite/abi/demangle/abi_examples/24.cc
! d2fa0c50b3499fac2637a51fda2927fc  libstdc++-v3/testsuite/abi/demangle/abi_examples/25.cc
! 6deb1f471bbd394c5735d74e5a29d3d9  libstdc++-v3/testsuite/abi/demangle/abi_examples/26.cc
! 64bee34a40b8eb107778b9a91869cd7d  libstdc++-v3/testsuite/abi/demangle/abi_text/01.cc
! 816a2c752e41d4f1e00aea3935333e6e  libstdc++-v3/testsuite/abi/demangle/abi_text/02.cc
! 4841acd866689e16017f86ff186ac7e4  libstdc++-v3/testsuite/abi/demangle/abi_text/03.cc
! 5d345cabf574662e36561ce7684ac202  libstdc++-v3/testsuite/abi/demangle/abi_text/04.cc
! 6ad4833bbc2c85990962a84914ef00af  libstdc++-v3/testsuite/abi/demangle/abi_text/05.cc
! d65f7859f08e13aec560ad8fb9bf37d3  libstdc++-v3/testsuite/abi/demangle/abi_text/06.cc
! e84860ac17015c7e2078a168a81bde64  libstdc++-v3/testsuite/abi/demangle/abi_text/07.cc
! b80cd3a39942c5c5570a0db45ef80801  libstdc++-v3/testsuite/abi/demangle/abi_text/08.cc
! 47fa54dbfe0b04d2321dcff66bb6acd7  libstdc++-v3/testsuite/abi/demangle/abi_text/09.cc
! e6cc365c4b9af85a762ff6ed93262378  libstdc++-v3/testsuite/abi/demangle/abi_text/10.cc
! e5a76731ec0f48bc70c9cab5b6a5511a  libstdc++-v3/testsuite/abi/demangle/abi_text/11.cc
! 0eb5fbfc7f7ce2af406b439b914d14a5  libstdc++-v3/testsuite/abi/demangle/abi_text/12.cc
! f709bf3990d12268dcce24420227f802  libstdc++-v3/testsuite/abi/demangle/abi_text/13.cc
! db2212fe39852f8aa899a45b2ba07cb7  libstdc++-v3/testsuite/abi/demangle/abi_text/14.cc
! f70469b457cdc53d9b034497f1036dda  libstdc++-v3/testsuite/abi/demangle/cxx0x/rref.cc
! 96deb334cf3a6c93e98618f66b78cbb3  libstdc++-v3/testsuite/abi/demangle/regression/3111-1.cc
! f86cff84adbb33ea5e1f4960fc6a188c  libstdc++-v3/testsuite/abi/demangle/regression/3111-2.cc
! af6367b4b12e1f1ddf6d9c4d344fa64f  libstdc++-v3/testsuite/abi/demangle/regression/7986-01.cc
! d2f45d6380a11f4e4a56a8702f8cf70d  libstdc++-v3/testsuite/abi/demangle/regression/7986-02.cc
! 7762856bc629e6cedb0b746c19c500b3  libstdc++-v3/testsuite/abi/demangle/regression/7986-03.cc
! e08f5c7e04fc966a06607c8dccc731bd  libstdc++-v3/testsuite/abi/demangle/regression/7986-04.cc
! 21cfccda704b2a7480349470bf95e30c  libstdc++-v3/testsuite/abi/demangle/regression/7986-05.cc
! 42e82c03ac481401de1753ee567c5e5c  libstdc++-v3/testsuite/abi/demangle/regression/7986-06.cc
! 3067af5ada464a873bc6bcaeb84d66dc  libstdc++-v3/testsuite/abi/demangle/regression/7986-07.cc
! c15d864af337b32775032d9cb4ab0164  libstdc++-v3/testsuite/abi/demangle/regression/7986-08.cc
! b72910f87f6efea2b4dfe0ec543372a0  libstdc++-v3/testsuite/abi/demangle/regression/7986-09.cc
! 7e2c5e16633c26040becd80bba887240  libstdc++-v3/testsuite/abi/demangle/regression/7986-10.cc
! e88ee3076953e530b60c5700800129b0  libstdc++-v3/testsuite/abi/demangle/regression/7986-11.cc
! 65320d2b477fd2916ff42c618d693ce5  libstdc++-v3/testsuite/abi/demangle/regression/7986-12.cc
! f16da2302a49402aa5ca770058684825  libstdc++-v3/testsuite/abi/demangle/regression/7986.cc
! 1fb94c50826a53a3f452f8db4eee46ca  libstdc++-v3/testsuite/abi/demangle/regression/8897.cc
! bfab2e4839ced445ad2f36b5d137baac  libstdc++-v3/testsuite/abi/demangle/regression/cw-01.cc
! 27f655a490d6a96184ff4213d5372300  libstdc++-v3/testsuite/abi/demangle/regression/cw-02.cc
! d65d688cce53ca1cc0fabfbbd1fe354f  libstdc++-v3/testsuite/abi/demangle/regression/cw-03.cc
! b082e2b6654dcb5057dbd060d241433a  libstdc++-v3/testsuite/abi/demangle/regression/cw-04.cc
! 0e6337cb1da4968f2e0c80cda35b2096  libstdc++-v3/testsuite/abi/demangle/regression/cw-05.cc
! b0f89daac10098931b6a07e0fd2a15f2  libstdc++-v3/testsuite/abi/demangle/regression/cw-06.cc
! 3ff014678fdb80cd8a31dcb945652e4b  libstdc++-v3/testsuite/abi/demangle/regression/cw-07.cc
! 8ee4a91db497d6be4cdacfecd49e6c35  libstdc++-v3/testsuite/abi/demangle/regression/cw-08.cc
! 2ba511dc5d9c3dd65893bd586a903444  libstdc++-v3/testsuite/abi/demangle/regression/cw-09.cc
! 077e6440541818c15f899c7b591a5c14  libstdc++-v3/testsuite/abi/demangle/regression/cw-10.cc
! 938caf95d730b4e29e8cb1d621e79ebf  libstdc++-v3/testsuite/abi/demangle/regression/cw-11.cc
! cafb0596dcf76e108d4dfc17be217566  libstdc++-v3/testsuite/abi/demangle/regression/cw-12.cc
! 770db7f2432e0e42276454d3887614d4  libstdc++-v3/testsuite/abi/demangle/regression/cw-13.cc
! 153aa14cdc2da5c09e61e002fbb71353  libstdc++-v3/testsuite/abi/demangle/regression/cw-14.cc
! 665405aaadc9e30671679b8fe1f112ad  libstdc++-v3/testsuite/abi/demangle/regression/cw-15.cc
! 9841c3098271b478754ace905dcd7bc4  libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc
! 4184dd54b3856ce0a51c6db95656364e  libstdc++-v3/testsuite/abi/demangle/regression/old.cc
! b947484dbf3114c414361aaab6834320  libstdc++-v3/testsuite/abi/header_cxxabi.c
  ab0a5ca4ddac86490afd9342d4868589  libstdc++-v3/testsuite/abi/pr42230.cc
! f6f80c7b57aeb2501a8beb801566e15d  libstdc++-v3/testsuite/backward/11460.cc
! 30047aa93eccf2689e921ba76026aa6a  libstdc++-v3/testsuite/backward/hash_map/1.cc
! b6b41877e4ae60a822f4ee7331ebbcf7  libstdc++-v3/testsuite/backward/hash_map/14648.cc
! 906e7d462b46fa5b324bff4b95618f32  libstdc++-v3/testsuite/backward/hash_map/23528.cc
! 39a4eed4fc90eaa81e12ed4c1a262eae  libstdc++-v3/testsuite/backward/hash_map/25896.cc
! d77fcdacb0b0556d6a98fb60eeaf94ba  libstdc++-v3/testsuite/backward/hash_map/requirements/explicit_instantiation.cc
! cb4b9ae29a26854ff3ffb0f96ed6ed38  libstdc++-v3/testsuite/backward/hash_set/1.cc
! 9e3efbcc6a9dd30f2b536842dceaa638  libstdc++-v3/testsuite/backward/hash_set/25896.cc
  2c091597008357e678007f407f299a24  libstdc++-v3/testsuite/backward/hash_set/49060.cc
! 78754749a29dda56a56998b38d8edb13  libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc
! f2e66da0efbe57e3fafd3cc4a3fd962c  libstdc++-v3/testsuite/backward/hash_set/requirements/explicit_instantiation.cc
! 156f4ef7a51ee2dae0fffb4149d0202d  libstdc++-v3/testsuite/backward/strstream_members.cc
! 99f079fafcb565023c93181f025bc9d2  libstdc++-v3/testsuite/backward/strstream_move.cc
! e8ba4a29c286781e62254ac7fa472f39  libstdc++-v3/testsuite/config/default.exp
  e7df7cd2ca07f4f1ab415d457a6e1c13  libstdc++-v3/testsuite/data/cin_unget-1.txt
  d41d8cd98f00b204e9800998ecf8427e  libstdc++-v3/testsuite/data/filebuf_members-1.tst
  d41d8cd98f00b204e9800998ecf8427e  libstdc++-v3/testsuite/data/filebuf_members-1.txt
*************** c301fea40cf8411c67e670f55107c746  libstd
*** 99270,101041 ****
  ccd8d09610bb1187b124063e4b7d62b2  libstdc++-v3/testsuite/data/wostream_inserter_other-1.tst
  ccd8d09610bb1187b124063e4b7d62b2  libstdc++-v3/testsuite/data/wostream_inserter_other-2.tst
  d41d8cd98f00b204e9800998ecf8427e  libstdc++-v3/testsuite/data/wostream_seeks-1.tst
! 50da3bb7ddf43e0a72e8d645d5a600ee  libstdc++-v3/testsuite/decimal/binary-arith.cc
! 7fc4d8c38edd3f501f5b5572e1a0f2aa  libstdc++-v3/testsuite/decimal/cast_neg.cc
! bf53809af94888b535dfc00a9f66e874  libstdc++-v3/testsuite/decimal/comparison.cc
! b9b500f0f9274ad644ac1bac93a7a6a8  libstdc++-v3/testsuite/decimal/compound-assignment-memfunc.cc
! d92b3f9c26a1d6201aeb3e273b949e06  libstdc++-v3/testsuite/decimal/compound-assignment.cc
! f57b7acc8f72fa48d092d6e9ccf6abe1  libstdc++-v3/testsuite/decimal/conversion-from-float.cc
! 71a0c3e6a296bcd7663ee61b42921056  libstdc++-v3/testsuite/decimal/conversion-from-integral.cc
! e78f2a791a03a014ae62f9c5df212d76  libstdc++-v3/testsuite/decimal/conversion-to-generic-float.cc
! c29673a9cfcbe5a3d1e120c822cdff06  libstdc++-v3/testsuite/decimal/conversion-to-integral.cc
! 5966e62ddc65e2ef475b583615e32014  libstdc++-v3/testsuite/decimal/ctor.cc
! a77b787a3444bea77242efc2268f47a3  libstdc++-v3/testsuite/decimal/incdec-memfunc.cc
! 7d3025cd123bea9cfaed6b9b81f8a8b7  libstdc++-v3/testsuite/decimal/incdec.cc
! c32f9120e160c0796428c9f1f22d967a  libstdc++-v3/testsuite/decimal/make-decimal.cc
! b26bdcf716ff5b780e2edcb34ef0e509  libstdc++-v3/testsuite/decimal/mixed-mode-arith_neg.cc
! 59945e37801dacf68b4b214980bcb3b6  libstdc++-v3/testsuite/decimal/mixed-mode-cmp_neg.cc
! fd07f3710ecea5c8ff45fe04f33d4929  libstdc++-v3/testsuite/decimal/operator_neg.cc
! f7e238e5d1735edc445ab30cb3a03cc4  libstdc++-v3/testsuite/decimal/pr54036-1.cc
! dd28bf2b138fc277c2854964e532c75e  libstdc++-v3/testsuite/decimal/pr54036-2.cc
! e2694baae59a46fdc6932fd23e30a03b  libstdc++-v3/testsuite/decimal/pr54036-3.cc
! 62635380339aad09a7593c7f1784c94c  libstdc++-v3/testsuite/decimal/pr58815.cc
! 0095d9fc5384905be5bfe8d07489e661  libstdc++-v3/testsuite/decimal/unary-arith.cc
! 135a1f2eb4a5bc8118b6739b0383a944  libstdc++-v3/testsuite/experimental/algorithm/sample-2.cc
! 53ecd9ddbc452804754c471f1f1fa855  libstdc++-v3/testsuite/experimental/algorithm/sample.cc
! 8a39925ae4fc3a2f8b62214adc424515  libstdc++-v3/testsuite/experimental/algorithm/search.cc
! 7c776cd97a800e6a507e8d4c4379d9ee  libstdc++-v3/testsuite/experimental/algorithm/shuffle.cc
! 40425eeec8bf7d188da1347b6db11e98  libstdc++-v3/testsuite/experimental/any/assign/1.cc
! c25337aa1160732fe669cd935f343334  libstdc++-v3/testsuite/experimental/any/assign/2.cc
! c45eb71d72c38c9653afd022d3690c7a  libstdc++-v3/testsuite/experimental/any/assign/exception.cc
! 3f64deead5dbf50676383cac04869c03  libstdc++-v3/testsuite/experimental/any/assign/self.cc
! 2697a5c2a511723b5825335eb107e593  libstdc++-v3/testsuite/experimental/any/cons/1.cc
! a226df363b889e45a9974d62f1a2cba3  libstdc++-v3/testsuite/experimental/any/cons/2.cc
! 90f741727b7e02ee20a11550660cec40  libstdc++-v3/testsuite/experimental/any/cons/aligned.cc
! 476c50e037ddef93d2c7005eb149f2e7  libstdc++-v3/testsuite/experimental/any/cons/nontrivial.cc
! 49e54739cf196fd84b51f6bdd145c45f  libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc
! 35b506f5afdda1760a3360bbb85a1573  libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc
! ce5e2ac584ef2957006dc0be48d00b0a  libstdc++-v3/testsuite/experimental/any/misc/any_cast_no_rtti.cc
! ab149abc7af6360e2f39a15b4da6ec83  libstdc++-v3/testsuite/experimental/any/misc/swap.cc
! e8247577957384e12d2d3433e8018a05  libstdc++-v3/testsuite/experimental/any/modifiers/1.cc
! cf345b1f781f6b60d0513a7f556db931  libstdc++-v3/testsuite/experimental/any/observers/type.cc
! a3cc297ca85cecd60b4e5e6f6541bc98  libstdc++-v3/testsuite/experimental/any/typedefs.cc
! 14738784b352613c551afb6f6455f80c  libstdc++-v3/testsuite/experimental/array/make_array.cc
! 3fafd423cf3b4487288b67159fc8b90f  libstdc++-v3/testsuite/experimental/array/neg.cc
! 6799a31ce1ebed71316efc56e5e97152  libstdc++-v3/testsuite/experimental/chrono/value.cc
! d6ce7e2dc9ae1ec294b5e5463f8c570d  libstdc++-v3/testsuite/experimental/deque/erasure.cc
  486c6490ca99880768c8a8d443ad1c02  libstdc++-v3/testsuite/experimental/feat-char8_t.cc
  02455db47de7f16c8e2d1f2af4839fc7  libstdc++-v3/testsuite/experimental/feat-cxx14.cc
  f754118861b851f83334813d834cb200  libstdc++-v3/testsuite/experimental/feat-lib-fund.cc
! 9c8562b86d0e39d1d01cadb2ca7f23c8  libstdc++-v3/testsuite/experimental/filesystem/file_status/1.cc
! 84f30e82c651a89a906788a43f6ecab8  libstdc++-v3/testsuite/experimental/filesystem/filesystem_error/cons.cc
! d67c05d9075c1be29c5fc673624caf85  libstdc++-v3/testsuite/experimental/filesystem/iterators/97731.cc
! 9d513e77e33093b0bb139e1a2dd0174c  libstdc++-v3/testsuite/experimental/filesystem/iterators/directory_iterator.cc
! f0e03612f42cb31e388462b8dc7d39fe  libstdc++-v3/testsuite/experimental/filesystem/iterators/pop.cc
! c34fe468bd3425a3145a33cbece7102b  libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc
! 4f73aa6296f892370377563d55069b11  libstdc++-v3/testsuite/experimental/filesystem/operations/absolute.cc
! 3f39eb11e515c18f837562144adad8ab  libstdc++-v3/testsuite/experimental/filesystem/operations/canonical.cc
! f8b9bd8a12540462f1b2d35aca5e9fcf  libstdc++-v3/testsuite/experimental/filesystem/operations/copy.cc
! 966ff9676e822cf012c5e62e46be6c04  libstdc++-v3/testsuite/experimental/filesystem/operations/copy_file.cc
! b6422d37e2ba1e565fac27e0ff2b242d  libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc
! fbddb073375dd88f3d6a47406dd80060  libstdc++-v3/testsuite/experimental/filesystem/operations/create_directory.cc
! c6ab87177345e9ce79414dc8d0906a71  libstdc++-v3/testsuite/experimental/filesystem/operations/create_symlink.cc
! 6c488d69d8fb8bceeb1a37b4d8050273  libstdc++-v3/testsuite/experimental/filesystem/operations/current_path.cc
! 087fcdd4acd62d2430faf29ca542c0e8  libstdc++-v3/testsuite/experimental/filesystem/operations/equivalent.cc
! 7d4dfcf9c97ba57564aea58db4291ec7  libstdc++-v3/testsuite/experimental/filesystem/operations/exists.cc
! ff0a9ca2e19173d5ba1cbbd99484a440  libstdc++-v3/testsuite/experimental/filesystem/operations/file_size.cc
! eb6e25976d8cad347d4db75acd52cb8d  libstdc++-v3/testsuite/experimental/filesystem/operations/is_empty.cc
! b57374a842b1e4d187ca556b837d9d47  libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc
! da79eb5c93acd2281842f6f183f2e53b  libstdc++-v3/testsuite/experimental/filesystem/operations/permissions.cc
! a385675af2c481cd3cb60f2e20b09356  libstdc++-v3/testsuite/experimental/filesystem/operations/read_symlink.cc
! 7f3c03dc370fc552bbc7b2983e46cd4d  libstdc++-v3/testsuite/experimental/filesystem/operations/remove.cc
! 078ee2c7d543147baff269f7257ba2c8  libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc
  d032a966b5c68f5f7ee9cc78de2ab201  libstdc++-v3/testsuite/experimental/filesystem/operations/rename.cc
! bbdf924e0bb8d1bc773dac0bd4eabcb3  libstdc++-v3/testsuite/experimental/filesystem/operations/space.cc
! 095d525f09f3fb41b1b2dd6ba26d8482  libstdc++-v3/testsuite/experimental/filesystem/operations/status.cc
! ab3e2b66d02cadf826e183c6579620e3  libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc
! f2e526c3e08fe6ed733919a12d6de9cb  libstdc++-v3/testsuite/experimental/filesystem/path/append/path.cc
! d8716846e549e581bc5fee8b9bcb74ea  libstdc++-v3/testsuite/experimental/filesystem/path/assign/assign.cc
! 460be4f0745b49e3ed7dfc1f8c3f6e61  libstdc++-v3/testsuite/experimental/filesystem/path/assign/copy.cc
! f11058cb8c70aae03f06ae3cb2fa760a  libstdc++-v3/testsuite/experimental/filesystem/path/compare/compare.cc
! d0c5b6632e2c9aeb1fe7639688c02689  libstdc++-v3/testsuite/experimental/filesystem/path/compare/path.cc
! 32e252df40354b7cf73f78be2d752cf6  libstdc++-v3/testsuite/experimental/filesystem/path/compare/strings.cc
! de42b2f57081710c6c67f7c073a8ceb7  libstdc++-v3/testsuite/experimental/filesystem/path/concat/path.cc
! eed72d490252e261548f36173d6bf0d4  libstdc++-v3/testsuite/experimental/filesystem/path/concat/strings.cc
! e0cff4503e296be4097d91d574d400b6  libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc
! 3a56869964f477ea32043c41eec7365a  libstdc++-v3/testsuite/experimental/filesystem/path/construct/90281.cc
! 6eb619a14f1a007eda94788800f806a5  libstdc++-v3/testsuite/experimental/filesystem/path/construct/90634.cc
! ad52e5bcc50d1c6e798e04fc0f6d937d  libstdc++-v3/testsuite/experimental/filesystem/path/construct/copy.cc
! f164cd640ace44dd3588bb3cd6494b66  libstdc++-v3/testsuite/experimental/filesystem/path/construct/default.cc
! e20e9dcd40ffcc666a03320191890e4b  libstdc++-v3/testsuite/experimental/filesystem/path/construct/locale.cc
! 1eaef0a0f8ed1395a169c154978b03de  libstdc++-v3/testsuite/experimental/filesystem/path/construct/range.cc
! 4f83b0a4b1d58e33ae4d65f4fe00b761  libstdc++-v3/testsuite/experimental/filesystem/path/construct/string_view.cc
! 0b46ebc7006b7ee3f82e18e98d152845  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/extension.cc
! 02e84316a737b46569f4847d6ccc6a7f  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/filename.cc
! 4bb482d458c8ac2cddacab6aaf808562  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/parent_path.cc
! 605f93b2d1ee31fce2b0bd42451d533c  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/relative_path.cc
! ec2b87e730e861ec691740f2d448f9c7  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_directory.cc
! 59811f4fcb02fdd36d25c8ca6a476cb7  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_name.cc
! 45d3a606842e57e304e899393ff13827  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_path.cc
! f2bf230cad353d20a10c1335ceaaf9bf  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/stem.cc
! 713c034d64e33b95ae50f58413093443  libstdc++-v3/testsuite/experimental/filesystem/path/factory/u8path-char8_t.cc
! a5f4824c05d07d60f19a051918d6fd1f  libstdc++-v3/testsuite/experimental/filesystem/path/factory/u8path.cc
! b53d77f42cdb3acf36250fa27ee2e495  libstdc++-v3/testsuite/experimental/filesystem/path/generic/generic_string.cc
! c8ed3fffbed56ea2481d18a8da789b1c  libstdc++-v3/testsuite/experimental/filesystem/path/itr/traversal.cc
! f7548e9db682dca98ad49949addb7207  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/clear.cc
! 446da4fcbd693fda713f447ed1925d6f  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/make_preferred.cc
! e8288bf3326e7a257f310576c550b98d  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/remove_filename.cc
! 09d97ee2b43369927248bd119aa0b356  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/replace_extension.cc
! 5c594778422839c3f7d18e72666d9d92  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/replace_filename.cc
! b615e5611232d92e6c45769a16e183b9  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/swap.cc
! 170f450940fb770e13f73fb25bb1d83f  libstdc++-v3/testsuite/experimental/filesystem/path/native/alloc.cc
! 2bc1e22b87f314d385cb0b45e6cce7a5  libstdc++-v3/testsuite/experimental/filesystem/path/native/string-char8_t.cc
! 872a6a5c19dc41d90e2d953bfd3d6d18  libstdc++-v3/testsuite/experimental/filesystem/path/native/string.cc
! 70f21d88f7f1bfb67f94bdc29b368b32  libstdc++-v3/testsuite/experimental/filesystem/path/nonmember/hash_value.cc
! 7b5f5c5487ddf7db6e9478eaf8b6fb13  libstdc++-v3/testsuite/experimental/filesystem/path/preferred_separator.cc
! 045bf7b6c462afbf8e2ed33f81a82605  libstdc++-v3/testsuite/experimental/filesystem/path/query/empty.cc
! f0da02fbbb3fbe520d30925ddcc4df5a  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_extension.cc
! a6c31aae0dcdfc2f39e25ef5fd11c2e8  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_filename.cc
! 1e77e7fdde3194f16230c5dfe602da45  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_parent_path.cc
! bd6539e445b0bb62be204be5cd66b06b  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_relative_path.cc
! c5ccc7feb1f43f07ccb350d3051e79c4  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_directory.cc
! 36a554a7999e894c605bcdd0901edde4  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_name.cc
! 3e8e9955f63529ce0e21ec7685161dbf  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_path.cc
! b89ce5e3d622228932eccd0cc13cb7ac  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_stem.cc
! fabadb6054f4dac248524e5b566ab1a6  libstdc++-v3/testsuite/experimental/filesystem/path/query/is_absolute.cc
! d852ede171192d6909ed30ed8246e407  libstdc++-v3/testsuite/experimental/filesystem/path/query/is_relative.cc
! b591383ffa349b3bf9a8188a367a4939  libstdc++-v3/testsuite/experimental/forward_list/erasure.cc
! 3594dba4d3cc8fb72eb4b883d97d6bbf  libstdc++-v3/testsuite/experimental/functional/87538.cc
! 628153e7f5cf25b6041257d5695f44a6  libstdc++-v3/testsuite/experimental/functional/not_fn.cc
! aac3af1beac5cdc8f4c8d935d1bb3454  libstdc++-v3/testsuite/experimental/functional/searchers.cc
! 14a0c2a7d4ab356d644a69e1ab73e1b7  libstdc++-v3/testsuite/experimental/functional/value.cc
! 624524f0412982b15bb6582c94d8b729  libstdc++-v3/testsuite/experimental/iterator/make_ostream_joiner.cc
! b396cdaac7a80db0c0e6beeacb4d1633  libstdc++-v3/testsuite/experimental/iterator/ostream_joiner.cc
! 994a908563a36c598ebf4f7583458638  libstdc++-v3/testsuite/experimental/iterator/requirements.cc
! e1dbb017d467afe8d0b90eba99844568  libstdc++-v3/testsuite/experimental/list/erasure.cc
! 62f1ae2802b4f083ba6e6f65e37c0c3e  libstdc++-v3/testsuite/experimental/map/erasure.cc
! 56440887d147b57c9bd04baa24725a0c  libstdc++-v3/testsuite/experimental/memory/observer_ptr/assignment/assign.cc
! d851388816a67b9d71bb69c1cb859cfa  libstdc++-v3/testsuite/experimental/memory/observer_ptr/cons/cons.cc
! 80e667d7a23f5bbf7cd2880988412921  libstdc++-v3/testsuite/experimental/memory/observer_ptr/hash/hash.cc
! 0d78082eddfda1685b1160d6910defdd  libstdc++-v3/testsuite/experimental/memory/observer_ptr/make_observer.cc
! 10a25aff40ab79db6457e48a6dad903e  libstdc++-v3/testsuite/experimental/memory/observer_ptr/relops/relops.cc
! 2b9f2328ad732b2cb4b5c5deeb941631  libstdc++-v3/testsuite/experimental/memory/observer_ptr/requirements.cc
! e1ed8802f50cafcbd34f6c7e1d20fadd  libstdc++-v3/testsuite/experimental/memory/observer_ptr/swap/swap.cc
! baecae02e6af9f9a3dda25e912bf2755  libstdc++-v3/testsuite/experimental/memory/observer_ptr/typedefs.cc
! 1593d000312da7c9f7a49fbdd85138f5  libstdc++-v3/testsuite/experimental/memory/shared_ptr/assign/assign.cc
! 4a3fe30e77b9156cc9bfa3c1a558113e  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cast/cast.cc
! e61870d9e22f8172d436036129e3f9ad  libstdc++-v3/testsuite/experimental/memory/shared_ptr/comparison/comparison.cc
! 2f104456b700951d4fc1ebe5193254b2  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/alias_ctor.cc
! 7ad2b9b430e03df0d31e4da39cb8816f  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/alloc_ctor.cc
! 445caf28e7d8d5c7f74eabae276e01d6  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor.cc
! fda3b28e179f6847a0cbdec3eac3cc86  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor_neg.cc
! 60df765f5f2ee36809891e507e7e7d3a  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/default_ctor.cc
! cf25cf98dffd46bb74d41c8b5505f247  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/enable_shared_from_this.cc
! 79cee721397d9910b05bfb822a1b922b  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/move_ctor.cc
! 91c41226cfed10a9fe891fe2142a9c29  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/pointer_ctor.cc
! 3572f01fbbb37ddb7770c9255dfd15d2  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/pointer_ctor_neg.cc
! 2ad4cb3b47c7d297d7e3b3876651f12c  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/torture.cc
! f9df45734d740e54be52172366938816  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/unique_ptr_ctor.cc
! e894d91a3a6f91f0bdff16c7a57e3914  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/weak_ptr_ctor.cc
! d611abeeb615057d36d434a05a365fe1  libstdc++-v3/testsuite/experimental/memory/shared_ptr/dest/dest.cc
! 7316682a25c8784ef8961ccb4474d66b  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/reset.cc
! 57db4dbe7db6136089e348cbd4172822  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/reset_neg.cc
! 59f51371f7cd2f68970808d0e55b88d1  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/swap.cc
! 6fa3f11619357a3f28b321fb520789fe  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/bool_conv.cc
! 83d5e84ca038a67ba19deb706cf4d864  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/operators.cc
! 7486aece44cae926ed4d51c5d1c78dea  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/owner_before.cc
! f260bb39b8aeb73b6bd67b48fff115ca  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/use_count.cc
! 8ccd837b211c2b7f892de5363533f2d4  libstdc++-v3/testsuite/experimental/memory_resource/1.cc
! b25651dd540a945f6d450c6c18322707  libstdc++-v3/testsuite/experimental/memory_resource/70966.cc
! 2491542b7dce9853dfaf4475462f0a1b  libstdc++-v3/testsuite/experimental/memory_resource/new_delete_resource.cc
! 833cccb9f5c45f49e954d2a9297e3ec0  libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc
! 7775cbe2eec65291037950ff4f3aab84  libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc
! 1217804e2557be367bf9033e360196c2  libstdc++-v3/testsuite/experimental/names.cc
! 247777b6020dc6fe1967f0cf3fe50453  libstdc++-v3/testsuite/experimental/net/buffer/arithmetic.cc
! cbf58b89fca5bf1acee2e41326422617  libstdc++-v3/testsuite/experimental/net/buffer/const.cc
! 8f1b463c18b193b3ef880911136f6884  libstdc++-v3/testsuite/experimental/net/buffer/creation.cc
! 5bd27be445ab071fced199f698bb6605  libstdc++-v3/testsuite/experimental/net/buffer/mutable.cc
! 3e4e8fb09684112f0dc4e22c3c569b3a  libstdc++-v3/testsuite/experimental/net/buffer/size.cc
! ce44d60e63a1e8f40bbda425dfcfc6dd  libstdc++-v3/testsuite/experimental/net/buffer/traits.cc
! 1a438f1488e09afab22c1631679c8894  libstdc++-v3/testsuite/experimental/net/execution_context/make_service.cc
! c4e5d615401b2eb26d515c4e0ee2b308  libstdc++-v3/testsuite/experimental/net/execution_context/use_service.cc
! 5f8096d88657cf3d97d6bf4d52f6de1f  libstdc++-v3/testsuite/experimental/net/executor/1.cc
! d893639ed3a2c4cd05bc967ff8c2b42a  libstdc++-v3/testsuite/experimental/net/headers.cc
! ba6f73e1069ae0217ff591b616e7072e  libstdc++-v3/testsuite/experimental/net/internet/address/v4/comparisons.cc
! e754872deee73ee0d480e54a9ad41fe2  libstdc++-v3/testsuite/experimental/net/internet/address/v4/cons.cc
! 402619a29800a65d64fbb969bc42148e  libstdc++-v3/testsuite/experimental/net/internet/address/v4/creation.cc
! 2ee6b603877689c7901d1486d09ad1fb  libstdc++-v3/testsuite/experimental/net/internet/address/v4/members.cc
  52d5655db8f4d201df8c492943e61c92  libstdc++-v3/testsuite/experimental/net/internet/address/v6/members.cc
! e6e651d61bdd6ed15998ec4cc8ce3874  libstdc++-v3/testsuite/experimental/net/internet/resolver/base.cc
! f40ceebd891dcc3cce918005de625d99  libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc
! 3d1213effeb2f390af8f2d0f91b9151d  libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/reverse.cc
! 0516299bdba3bfa0496cb3b02b33c8ba  libstdc++-v3/testsuite/experimental/net/socket/basic_socket.cc
! 2d04e0eaf29cd21e095cb90ab077f721  libstdc++-v3/testsuite/experimental/net/system_context/1.cc
! 89a6046886f1498bdd6a71853559b480  libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc
! 269a3fd1bbf5911b317899c66527123b  libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc
! c158b68c4b80fd6f9a9dded30460952f  libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc
! b8e7243023add10b716c1f3fab277889  libstdc++-v3/testsuite/experimental/numeric/77801.cc
! 0f92e1c7133b677b7193af937593cb8e  libstdc++-v3/testsuite/experimental/numeric/92978.cc
! d55f15497ffec75bbef495342db21dfc  libstdc++-v3/testsuite/experimental/numeric/gcd.cc
! f2a04aa7731ff5af6f80c8ffdb74d595  libstdc++-v3/testsuite/experimental/numeric/lcm.cc
! 3553547cdcd1c73385856305d781c02b  libstdc++-v3/testsuite/experimental/optional/77288.cc
! e6fc4bfdaadf524c5bb86e76f83f320f  libstdc++-v3/testsuite/experimental/optional/assignment/1.cc
! bfd6fd192f74383733ac986d6a200051  libstdc++-v3/testsuite/experimental/optional/assignment/2.cc
! 79716cb37bc2c5c685f64188c302f8d3  libstdc++-v3/testsuite/experimental/optional/assignment/3.cc
! 0f4a740bec3ffd2c56cc7f500652d7e4  libstdc++-v3/testsuite/experimental/optional/assignment/4.cc
! 1c618b903a7575165a7b32abe83fdbda  libstdc++-v3/testsuite/experimental/optional/assignment/5.cc
! 47d26c0becd5c50eb740accd35f5884d  libstdc++-v3/testsuite/experimental/optional/assignment/6.cc
! 243daffefc33cca07a9a2bc00ec7ff10  libstdc++-v3/testsuite/experimental/optional/cons/77727.cc
! 361a85ebd347d5f3f4603b230550ab0a  libstdc++-v3/testsuite/experimental/optional/cons/copy.cc
! 3f9bfcb34102312bd108a0ec5600afec  libstdc++-v3/testsuite/experimental/optional/cons/default.cc
! 54be4453bb38f3317e4d6dab97e0347d  libstdc++-v3/testsuite/experimental/optional/cons/move.cc
! b21e700bbe85e3a1415c943b2f63b555  libstdc++-v3/testsuite/experimental/optional/cons/value.cc
! fd291cd31e71b9e31af91428b64a84d5  libstdc++-v3/testsuite/experimental/optional/cons/value_neg.cc
! bef6b7b41e18c603c7c91b951f5562dd  libstdc++-v3/testsuite/experimental/optional/constexpr/cons/default.cc
! c45ad90e006a434b2d80931224bda3e7  libstdc++-v3/testsuite/experimental/optional/constexpr/cons/value.cc
! 2dcb039791eefd3a75ffc0180b0360d6  libstdc++-v3/testsuite/experimental/optional/constexpr/in_place.cc
! 334b797cda81e0d792d08e45d6f6f736  libstdc++-v3/testsuite/experimental/optional/constexpr/make_optional.cc
! 4b28e45995e93b27d3f324e57f22af46  libstdc++-v3/testsuite/experimental/optional/constexpr/nullopt.cc
! e9dc6f77e4f689dc424ab9f4bc3b8caa  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/1.cc
! 6a436e938f7a446fc452b8d654292c90  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/2.cc
! 2de6f1014f764e98a59416070f3f41d9  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/3.cc
! e96447d46ed7828f76439961d3b15e01  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/4.cc
! c5f11c4e080d64acc34a1ad6051148ca  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/5.cc
! 1e83499fac3c996bc41a80a16e9920f6  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/1.cc
! 0fbd33eb3caa76aa913163b3250fbcda  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/2.cc
! 164934c148c7da166a25d7bd8b5ab949  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/3.cc
! 534ae3deb66296392b04e6e83a128244  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/4.cc
! 7f40c4c547367db3906234107db91fd0  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/5.cc
! 456988313e623dbdd558af85feadadd3  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/6.cc
! 7ff9569a70227b25ba2050f01fb975f1  libstdc++-v3/testsuite/experimental/optional/in_place.cc
! d98e9222333a4df9526acf66c8b3ef61  libstdc++-v3/testsuite/experimental/optional/make_optional.cc
! bf0bb27b9257bc3681b73aa6084654bc  libstdc++-v3/testsuite/experimental/optional/nullopt.cc
! 837cc551b940cd9a4870bb44fb37f8d4  libstdc++-v3/testsuite/experimental/optional/observers/1.cc
! 7067f5735dfd044961ed6cd6db3d2049  libstdc++-v3/testsuite/experimental/optional/observers/2.cc
! e7b955d6f50d992080c1a7398b2cdf03  libstdc++-v3/testsuite/experimental/optional/observers/3.cc
! a5452b6ec355f685be84df90727c5086  libstdc++-v3/testsuite/experimental/optional/observers/4.cc
! 528e4322aa16188ae052a3ee4dfcf9ca  libstdc++-v3/testsuite/experimental/optional/observers/5.cc
! ae916c863da724c4778814bc26fdf73b  libstdc++-v3/testsuite/experimental/optional/relops/1.cc
! 2d002f3cb296f8fec6b012ea79f10e68  libstdc++-v3/testsuite/experimental/optional/relops/2.cc
! ac009a5a6a218b0803468f3932a042ac  libstdc++-v3/testsuite/experimental/optional/relops/3.cc
! 07da401ecf0681acef282c0d5317e4a0  libstdc++-v3/testsuite/experimental/optional/relops/4.cc
! 7ac0f6c3e85065e2cf53a5967a77094a  libstdc++-v3/testsuite/experimental/optional/relops/5.cc
! 28d37d530f71c8f9f68d14d8a5c71621  libstdc++-v3/testsuite/experimental/optional/relops/6.cc
! 39d9caac188fc2aca46d78f59d1b4ee2  libstdc++-v3/testsuite/experimental/optional/requirements.cc
! 8253fe603b10875e015bbbdbd9179fdf  libstdc++-v3/testsuite/experimental/optional/swap/1.cc
! 5d1dd5081e04fb6bce0e5926eda1529c  libstdc++-v3/testsuite/experimental/optional/typedefs.cc
! 8ecbabdc7e1118d7da81f1e1703879c9  libstdc++-v3/testsuite/experimental/polymorphic_allocator/1.cc
! 6e27f724df4bbee44d0ff2aaa1a07e99  libstdc++-v3/testsuite/experimental/polymorphic_allocator/construct_pair.cc
! 3e0a947f3cd2a05cfe854823d71380d7  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc
! a43a234dddbab5f4a69ae79826af176c  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_forward_list.cc
! 2604ae2278fe285c359daaa2d06250fb  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc
! 1e26606b150daf2066dc1234d390a1c1  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc
! 0db22f758c67cd98648e3926de127ce9  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc
! 87014686f55921d0f46ad6680749d3c1  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multimap.cc
! c3df86eea26045e105aac1aa4fbd43e2  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multiset.cc
! 8047bba8e409ccba500d5c8901ff6b6e  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc
! f4c51f1b2d480287264bad1bf5adf6f9  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc
! 7e1a0d9a41662de4a372a5f88f838edd  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_map.cc
! 8946dcb6e1701a3800af0bb98e10c744  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multimap.cc
! 30aad9aac4259a1c969e72fb77dbd2bc  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multiset.cc
! b4057316dec38cf7281d2b90f96ca7bf  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_set.cc
! 915f38e8dceeb147ff80c60e57504bdc  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc
! fb7672806ead1cef5b891dc0b8b11170  libstdc++-v3/testsuite/experimental/propagate_const/assignment/copy.cc
! 942655095b44203ba152341e27a34629  libstdc++-v3/testsuite/experimental/propagate_const/assignment/move.cc
! 8411082952e86f70e153b5992f062787  libstdc++-v3/testsuite/experimental/propagate_const/assignment/move_neg.cc
! ccde70f053f017dc4ea55c369732db76  libstdc++-v3/testsuite/experimental/propagate_const/cons/copy.cc
! 16a410c2a249d91258c8236319012ef2  libstdc++-v3/testsuite/experimental/propagate_const/cons/default.cc
! 6b5b7157032b0121b0df97e841731e2a  libstdc++-v3/testsuite/experimental/propagate_const/cons/move.cc
! 858a066fe4e8bab4d19a9669b4bed0c3  libstdc++-v3/testsuite/experimental/propagate_const/cons/move_neg.cc
! 9b8f93b4d43453e51b174bd0e9df9559  libstdc++-v3/testsuite/experimental/propagate_const/hash/1.cc
! f4c019914a1f73916ae1b7e957c7f795  libstdc++-v3/testsuite/experimental/propagate_const/observers/1.cc
! f6a6e94b416e6236897a25f0cc0c37a9  libstdc++-v3/testsuite/experimental/propagate_const/relops/1.cc
! f2529c9f36bf05efdf91a5422d049e40  libstdc++-v3/testsuite/experimental/propagate_const/requirements1.cc
! a8d809e90ea6493735643d80223a8227  libstdc++-v3/testsuite/experimental/propagate_const/requirements2.cc
! 92ad200b273c0b6d65c06bf4d257628a  libstdc++-v3/testsuite/experimental/propagate_const/requirements3.cc
! 227a4294273768a0f02a20146e37086c  libstdc++-v3/testsuite/experimental/propagate_const/requirements4.cc
! 7576f675ef9376cc26deb7d1c81306ca  libstdc++-v3/testsuite/experimental/propagate_const/requirements5.cc
! 0d0a11e12d42a9b87aee2e36339dc97b  libstdc++-v3/testsuite/experimental/propagate_const/swap/1.cc
! d0bb976b11d82c96ee5a204303757542  libstdc++-v3/testsuite/experimental/propagate_const/typedefs.cc
! 3a627e7c4bcd4e1b5ce93fb20ee6d5a8  libstdc++-v3/testsuite/experimental/random/randint.cc
! cc2ea0c6602077df09982753ef5d1a1e  libstdc++-v3/testsuite/experimental/ratio/value.cc
! c28a69a33368307493b022fb8da8aeb9  libstdc++-v3/testsuite/experimental/set/erasure.cc
! af04a713a6e2af630a28ff9eb6803d48  libstdc++-v3/testsuite/experimental/source_location/1.cc
! 1d863e9b6578bfe30d9a5dad71ddbe20  libstdc++-v3/testsuite/experimental/string/erasure.cc
! eb08fd275a2a26119468d4b4d6a3c888  libstdc++-v3/testsuite/experimental/string_view/capacity/1.cc
! 0d2a569c2dd0a1a40d15e94ad17113ca  libstdc++-v3/testsuite/experimental/string_view/cons/char/1.cc
! 9c8dfd83dcbbedd24b9445a2aeaa210a  libstdc++-v3/testsuite/experimental/string_view/cons/char/2.cc
! 6d8a4fdbdba521869d3794197216c049  libstdc++-v3/testsuite/experimental/string_view/cons/char/3.cc
! adcabdc73b024aac2ef639ffa5ad5ffc  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/1.cc
! c3ac6da953f0a7a94e2c5853ca6c95dd  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/2.cc
! bc1c09701c4d5766ddf792c3b4697c2f  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/3.cc
! 69b993b0c348087cd984ca6428e5954e  libstdc++-v3/testsuite/experimental/string_view/element_access/char/1.cc
! d401863a2655c9be9673f71a30cda761  libstdc++-v3/testsuite/experimental/string_view/element_access/char/2.cc
! 06b4db551af5bd5b0a43c4bf029014ae  libstdc++-v3/testsuite/experimental/string_view/element_access/char/empty.cc
! 8d552bc9e9e48f9a72c0da651735bf6e  libstdc++-v3/testsuite/experimental/string_view/element_access/char/front_back.cc
! 671394b763326193e37e49d5c150b278  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/1.cc
! 2cb7c18376bdd6fe57d8a4e9dfbe7978  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/2.cc
! 18b157c6c963c9e71a0100050414ec63  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/empty.cc
! 42ab13bbf588065c46740803539c07c6  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/front_back.cc
! b9e82c4e7b7ae21f518ce93b1c10ba3d  libstdc++-v3/testsuite/experimental/string_view/include.cc
! cc5644a0a725e6d8aa1f1c25d9672488  libstdc++-v3/testsuite/experimental/string_view/inserters/char/1.cc
! 91394c5fb66ef82fda91b6af127ce1df  libstdc++-v3/testsuite/experimental/string_view/inserters/char/2.cc
! 32bbba021eea64b0781bd9e2bda332f3  libstdc++-v3/testsuite/experimental/string_view/inserters/char/3.cc
! 4ff7c036a27e586cf76de329d38b1b78  libstdc++-v3/testsuite/experimental/string_view/inserters/pod/10081-out.cc
! 01802ef5035ad0a727abee8785f5a9fb  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/1.cc
! 8d8b0e98c5ecf31d289acf27b2fdd220  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/2.cc
! f1d39812e0cb719a151c4c5fd7a7e685  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/3.cc
! 20b1b248148366d14e68e54963d7d7f9  libstdc++-v3/testsuite/experimental/string_view/literals/types-char8_t.cc
! 3e3fba611de93e21cf1b3a0141377664  libstdc++-v3/testsuite/experimental/string_view/literals/types.cc
! d234cf3adaf4bcf220ca7a475dc2620e  libstdc++-v3/testsuite/experimental/string_view/literals/values-char8_t.cc
! b5d15025d7d4613d9ccc910e28d570f9  libstdc++-v3/testsuite/experimental/string_view/literals/values.cc
! 858475f0a418ec5f21a2f231bc0f93f1  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_prefix/char/1.cc
! 9238d71ff54819929dec945fd4f62677  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_prefix/wchar_t/1.cc
! c81e70ffd390b528c610d3cc29b511c6  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_suffix/char/1.cc
! cb92af52926ab185da3b655d6067c98d  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_suffix/wchar_t/1.cc
! b56f3747cbe680f3e776447e9843f601  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/1.cc
! cf0710b445bbd3499a626a073f468810  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/13650.cc
! 1b541407352596ec1ea40eebe4c346ef  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/70483.cc
! 828957a9c652e53f8a922c3ee3a12295  libstdc++-v3/testsuite/experimental/string_view/operations/compare/wchar_t/1.cc
! 57ad5ae33f2592d8d355d5f9cc1e9e46  libstdc++-v3/testsuite/experimental/string_view/operations/compare/wchar_t/13650.cc
! c289f8a3d6938f659364d031c3bf8c42  libstdc++-v3/testsuite/experimental/string_view/operations/copy/char/1.cc
! 016994317556cc9b9805a4877328da29  libstdc++-v3/testsuite/experimental/string_view/operations/copy/wchar_t/1.cc
  672cb4f94c8a852e6bdb846e926365f9  libstdc++-v3/testsuite/experimental/string_view/operations/data/char/1.cc
  3500b68ff8c9b68295a6f4a0a348e9d8  libstdc++-v3/testsuite/experimental/string_view/operations/data/wchar_t/1.cc
! d67bc79d64aa1c5a2282c9a1e471fc11  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/1.cc
! e0d9b85cb57a610d3bf1702736f845c7  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/2.cc
! 93a489bc821769f55c3c3a26b3874ff3  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/3.cc
! 5b743ddb3ba18162be4684a3ab02d711  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/4.cc
! 3206d972157eae30e4ad049cc0a4a891  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/1.cc
! cede0a0bdbbdc8b0a7c8aa5aeab0b84e  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/2.cc
! c8eae5757264b6984d45fa7d41c253f5  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/3.cc
! fda1c7b05582ddc5fecf55dbf73b9393  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/4.cc
! c337131a3ea2d4dba81744dfd899d8be  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/1.cc
! 30eb0be9975bd5232ffe9d56103ea3fe  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/2.cc
! 62f15209e253437294e81134f2cf1bd7  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/3.cc
! 66df837220e1ce7a581cad5a811d5ec6  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/1.cc
! 89efa3dce42276f3a63b197dd14ccb29  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/2.cc
! c73f202a5c0e0e963f1376304610bd24  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/3.cc
! 7328499dabb50ab4b001faf0c1a6aff8  libstdc++-v3/testsuite/experimental/string_view/operations/substr/char/1.cc
! e3a0666ce4e328aeb3093dd6e63ea356  libstdc++-v3/testsuite/experimental/string_view/operations/substr/char/83511.cc
! abda0bcfb01a6e5d1f4274b1befa0e63  libstdc++-v3/testsuite/experimental/string_view/operations/substr/wchar_t/1.cc
! 3a0bf5874ec93b15b011022741d73c1c  libstdc++-v3/testsuite/experimental/string_view/operations/substr/wchar_t/83511.cc
! 825aa17f360dbe7c7cecdc756e2b0c62  libstdc++-v3/testsuite/experimental/string_view/operations/to_string/1.cc
! d10fab0337deec8c230439f7d162eb3a  libstdc++-v3/testsuite/experimental/string_view/operators/char/2.cc
! d3e99026ea412112c86ddd269cc6548c  libstdc++-v3/testsuite/experimental/string_view/operators/wchar_t/2.cc
! 9a8bd01248be78692a6a0e454991c80c  libstdc++-v3/testsuite/experimental/string_view/range_access/char/1.cc
! c2fb6756b29e966cfc61d64e17923bc5  libstdc++-v3/testsuite/experimental/string_view/range_access/wchar_t/1.cc
! f12182689887efc77f48de650af8190a  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/1.cc
! 8a03b9ae01e58785df1763151b9678fe  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char/1.cc
! e7b54db4dd8ae22936f7d57db5e75f29  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char16_t/1.cc
! 8b833956c2787149175b5a0b2e1d0f39  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char32_t/1.cc
! 834cd2d692f89bc17e438c1703c2e1bf  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char8_t/1.cc
! ec01948385868324d532e713d0382fda  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/wchar_t/1.cc
! ed7557deb480b578cd259f756bb2b018  libstdc++-v3/testsuite/experimental/string_view/requirements/typedefs.cc
! 2a08fd7cf7678359637f787e413f9125  libstdc++-v3/testsuite/experimental/string_view/typedefs.cc
! 76802314ee08c8b897518ce394ea070b  libstdc++-v3/testsuite/experimental/string_view/types/1.cc
! 08672d6add5a776be977a74e4c807fd0  libstdc++-v3/testsuite/experimental/system_error/value.cc
! 7d8a969f2204f0f1fed2b6f7858ebf3c  libstdc++-v3/testsuite/experimental/tuple/apply.cc
! 51dd406edf1b2af1fb75e613ac775287  libstdc++-v3/testsuite/experimental/tuple/tuple_size.cc
! d5b53c75376f6fc35a20580e112923d3  libstdc++-v3/testsuite/experimental/type_erased_allocator/2.cc
! 5a4764fedbc31a9e9a7d90b2f1d29cbf  libstdc++-v3/testsuite/experimental/type_erased_allocator/uses_allocator.cc
! d9e639638f617eecc49a53832ca6d999  libstdc++-v3/testsuite/experimental/type_traits/detection.cc
! 1c332d31b67466442f43e16440b3e375  libstdc++-v3/testsuite/experimental/type_traits/nonesuch.cc
! 116a1a24255331637577921c85108fb0  libstdc++-v3/testsuite/experimental/type_traits/value.cc
! 5da21e4eac2cbd5ce4e6078e77704bce  libstdc++-v3/testsuite/experimental/unordered_map/erasure.cc
! 21635fcceebb329b1500c25de880dcaf  libstdc++-v3/testsuite/experimental/unordered_set/erasure.cc
! 5ebe6d6c16ea38c0fdd90e4ebd3deee1  libstdc++-v3/testsuite/experimental/vector/erasure.cc
! cb994cef9a9b919c7a073e434dd40e61  libstdc++-v3/testsuite/ext/bitmap_allocator/check_allocate_max_size.cc
! 07536daf314f1ad18875045d02659a98  libstdc++-v3/testsuite/ext/bitmap_allocator/check_deallocate_null.cc
! fab32e21123a9da0be983a156c4a6ef5  libstdc++-v3/testsuite/ext/bitmap_allocator/check_delete.cc
! 1b48130c5a4dd6ef7cb7eb66a289938e  libstdc++-v3/testsuite/ext/bitmap_allocator/check_new.cc
! 7eaeac7e8cb8e6298c7a372cf7cd204d  libstdc++-v3/testsuite/ext/bitmap_allocator/overaligned.cc
! 2c69896c6c52bdaa0f49fe48bff4ee2b  libstdc++-v3/testsuite/ext/bitmap_allocator/variadic_construct.cc
  846dc8224edb857bb6953efa8b4cdb2d  libstdc++-v3/testsuite/ext/char8_t/atomic-1.cc
! dc2adbd055f78274730400cae36d9df3  libstdc++-v3/testsuite/ext/codecvt/1.cc
! e5cf898914ecb5b2f4267ce2e1da8e64  libstdc++-v3/testsuite/ext/codecvt/char-1.cc
! 7808ba99e91a807b17f4a22ead5d685b  libstdc++-v3/testsuite/ext/codecvt/char-2.cc
! e941f770a319c9781c0c0a9564daa2fb  libstdc++-v3/testsuite/ext/codecvt/wchar_t.cc
! 88a2389f6701250a5a9952176adc3b4b  libstdc++-v3/testsuite/ext/concept_checks.cc
! 900e6bc986a188072514dd244797e04e  libstdc++-v3/testsuite/ext/concurrence_lock_error/cons_virtual_derivation.cc
! 1c4a2998c8168802d3f24598a2c8def1  libstdc++-v3/testsuite/ext/concurrence_unlock_error/cons_virtual_derivation.cc
! 9973060a942be00b684061e115b52bcc  libstdc++-v3/testsuite/ext/debug_allocator/56170.cc
! 1e3d7c5b0e30c79d9151c6ff80de2117  libstdc++-v3/testsuite/ext/debug_allocator/check_deallocate_null.cc
! d228d842a80bd6b04a5db5573305bfb4  libstdc++-v3/testsuite/ext/debug_allocator/check_delete.cc
! 625f4e9dabd85628cd7dc37f015fc25c  libstdc++-v3/testsuite/ext/debug_allocator/check_new.cc
! d7c0ef47a123034598a2f3ce5e4345bc  libstdc++-v3/testsuite/ext/debug_allocator/eq.cc
! 52a8a398458520c8ae5344b21d02c37f  libstdc++-v3/testsuite/ext/debug_allocator/explicit_instantiation.cc
! fb27bd3affd2a619e1d7a605212aa4be  libstdc++-v3/testsuite/ext/enc_filebuf/char/13189.cc
! 6628ba974cbb4dd303013871bdf6d559  libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc
! fcf819ce62fbd0de27ee7d6ec81b7477  libstdc++-v3/testsuite/ext/enc_filebuf/wchar_t/13189.cc
! 4d030725321220e3fbf3ccc8f8c857db  libstdc++-v3/testsuite/ext/ext_pointer/1.cc
! b9adc43002b54bf28312f23697f03047  libstdc++-v3/testsuite/ext/ext_pointer/1_neg.cc
! cff1a2cb37adc52815fd7ace9f4a5b17  libstdc++-v3/testsuite/ext/ext_pointer/alloc_eq.cc
! c05b61e676c49d49b91d26a24eaa9655  libstdc++-v3/testsuite/ext/forced_error/cons_virtual_derivation.cc
! b7eb39ffceb98ff6f0529d424feb4c76  libstdc++-v3/testsuite/ext/headers.cc
! 96e9d581ec3d88c46130928b8b199053  libstdc++-v3/testsuite/ext/iota/cxx0x.cc
! 4d7e17e29d5043e4ecb7676164ac1b52  libstdc++-v3/testsuite/ext/is_heap/1.cc
! 231c33f2d6cbd982a5e7cf3acfc03447  libstdc++-v3/testsuite/ext/is_heap/47709.cc
! 40a57444db932013bacb542fe11a70d3  libstdc++-v3/testsuite/ext/is_heap/check_type.cc
! d49e502472f0419dfee982d71a69f7b9  libstdc++-v3/testsuite/ext/is_sorted/cxx0x.cc
! 03f6553833afda52f59eb4de188895f1  libstdc++-v3/testsuite/ext/malloc_allocator/89510.cc
! 40c2dc400ee7c5e99dafe610db18c1c2  libstdc++-v3/testsuite/ext/malloc_allocator/check_allocate_max_size.cc
! f9365bdc0c07626cc03d6dd6af3862e8  libstdc++-v3/testsuite/ext/malloc_allocator/check_deallocate_null.cc
! 7e7425adefb1e9beec3f69fcf6644ac9  libstdc++-v3/testsuite/ext/malloc_allocator/check_delete.cc
! 7ab905b3a9943056ea6da88c3cbc38d3  libstdc++-v3/testsuite/ext/malloc_allocator/check_new.cc
! 7ea0d63600ee58407c0a645d96efa915  libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_global.cc
! e49c7832d1fb4fdd61ce4852b93c4ca5  libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_local.cc
! 02bfeaec22c2988e9873de136c5e71f4  libstdc++-v3/testsuite/ext/malloc_allocator/eq.cc
! bb2267fb87b795f5506459c962466649  libstdc++-v3/testsuite/ext/malloc_allocator/explicit_instantiation.cc
! 8a516a5b4d4fa9730524b897b46f55d7  libstdc++-v3/testsuite/ext/malloc_allocator/overaligned.cc
! 52413c8248a6674736bb1cf80326b380  libstdc++-v3/testsuite/ext/malloc_allocator/sanity.cc
! 0177688ac69334a4fff155cee9f279d0  libstdc++-v3/testsuite/ext/malloc_allocator/variadic_construct.cc
! 7ecafbf97a8c84ea2ea3cb64b78e01b0  libstdc++-v3/testsuite/ext/median.cc
! 793adfe27cf2dc72b882e7d47c651cbb  libstdc++-v3/testsuite/ext/mt_allocator/22309_thread.cc
! e55b1090054588bfc13efc3d033366ae  libstdc++-v3/testsuite/ext/mt_allocator/check_allocate_big_per_type.cc
! 38d9df69a7b66b782aaa9de09e490333  libstdc++-v3/testsuite/ext/mt_allocator/check_allocate_max_size.cc
! 780124e9d6ebf4334b3d9f61929502ac  libstdc++-v3/testsuite/ext/mt_allocator/check_deallocate_null.cc
! 50b027e5ae9dd6d35374841e405f8e94  libstdc++-v3/testsuite/ext/mt_allocator/check_deallocate_null_thread.cc
! 14cf2432e64f4ffef0ae45e0cc070735  libstdc++-v3/testsuite/ext/mt_allocator/check_delete.cc
! 15f9378fc342b9b063b4f9e32d288464  libstdc++-v3/testsuite/ext/mt_allocator/check_new.cc
! 8f419543be8c90be13ced5c6ccbb6b10  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global-2.cc
! 3f8c58dc29ada838f89636a54929f36d  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global-4.cc
! 39badf5624a715d720d83ad3dcfa2ba7  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global_thread-1.cc
! 2b0671edbe956d4e364111554f6a1f28  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global_thread-3.cc
! a3332dbead6cd835a57b6601b053e5ce  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-2.cc
! 0f5daeffdb71441084ebf01c4319d85f  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-4.cc
! 9ef4b3e5b64d7dbc4aef08588cf61356  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-6.cc
! 80169d4c45d0d5375add5ac222117476  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-8.cc
! 96f075502b2f9d835fed013d6cc904cc  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-1.cc
! 43792ebee14b25719968b733a6e567b4  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-3.cc
! da231eff9485d55ebb4dc936ceeac87d  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-5.cc
! 8e51dbd5e9f569a4daae3ceb554dda35  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-7.cc
! 34539714106c705ab9dcff527e5db532  libstdc++-v3/testsuite/ext/mt_allocator/explicit_instantiation.cc
! c865136552a06aba96364722623c3a22  libstdc++-v3/testsuite/ext/mt_allocator/overaligned.cc
! ac446869f2b623f572e0dcc52881030a  libstdc++-v3/testsuite/ext/mt_allocator/tune-1.cc
! 83b0bafa025b50e91bde8c3c5c4bae5e  libstdc++-v3/testsuite/ext/mt_allocator/tune-2.cc
! a2a91d482cb32c83e7c9e517dceb348d  libstdc++-v3/testsuite/ext/mt_allocator/tune-3.cc
! 9a0f491a4610274beec013b429e79f02  libstdc++-v3/testsuite/ext/mt_allocator/tune-4.cc
! 719f9078d53ef047d6ac967a8e7000be  libstdc++-v3/testsuite/ext/mt_allocator/variadic_construct.cc
! 5932dc00381087cb9392743cddd7752d  libstdc++-v3/testsuite/ext/new_allocator/89510.cc
! c97530e69a35ec4357f01985c4df7716  libstdc++-v3/testsuite/ext/new_allocator/check_allocate_max_size.cc
! 5a8cc96f25a9c8d31e38ee90b9c04809  libstdc++-v3/testsuite/ext/new_allocator/check_deallocate_null.cc
! beb7ab37e769488db1a8a32dbd11e645  libstdc++-v3/testsuite/ext/new_allocator/check_delete.cc
! 7c5d1a313791f38f9f3a12e8f6adabb2  libstdc++-v3/testsuite/ext/new_allocator/check_new.cc
! b776d4c5e161602319a225b3fecfef23  libstdc++-v3/testsuite/ext/new_allocator/deallocate_global.cc
! c22c990039309e4d8d181c6d3f23ff34  libstdc++-v3/testsuite/ext/new_allocator/deallocate_local.cc
! e1468aadb05bc51e76923e0ab1943f47  libstdc++-v3/testsuite/ext/new_allocator/eq.cc
! 31ce0ddeef94d03cb204673b26dab4a7  libstdc++-v3/testsuite/ext/new_allocator/instantiate.cc
! a3eb6b65d9848bd6cbb81bf132c5f002  libstdc++-v3/testsuite/ext/new_allocator/overaligned.cc
! bafebdfc334a8e6ef2c7daf8ed8931f9  libstdc++-v3/testsuite/ext/new_allocator/variadic_construct.cc
! 7ad9a60afc29ddabae32fcbdbba1367c  libstdc++-v3/testsuite/ext/numeric_traits/numeric_traits.cc
! 49c0ccd9cec9983d59c76b35c54ed653  libstdc++-v3/testsuite/ext/pb_ds/example/assoc_container_traits.cc
! 1050f7430056eb7d84b1a6078e4b23af  libstdc++-v3/testsuite/ext/pb_ds/example/basic_map.cc
! f5db1793e0a31fdb1c75a42940ab56df  libstdc++-v3/testsuite/ext/pb_ds/example/basic_multimap.cc
! 8e67f415dc28c0ba329b496399a04dc3  libstdc++-v3/testsuite/ext/pb_ds/example/basic_multiset.cc
! 2fea47ecf12121047d7e5d7d66951a94  libstdc++-v3/testsuite/ext/pb_ds/example/basic_priority_queue.cc
! 378fd90e67b106589ae53b8032275263  libstdc++-v3/testsuite/ext/pb_ds/example/basic_set.cc
! a8d894ffd42789716b1e540b7b8d5fd0  libstdc++-v3/testsuite/ext/pb_ds/example/erase_if.cc
! 1c8713a0cc3167b9f1f3fd58c75854eb  libstdc++-v3/testsuite/ext/pb_ds/example/hash_find_neg.cc
! 580b3a134dfe17adfe3f01505e71ea05  libstdc++-v3/testsuite/ext/pb_ds/example/hash_illegal_resize.cc
! e9e04ad4ecdc977a7df54072742c486b  libstdc++-v3/testsuite/ext/pb_ds/example/hash_initial_size.cc
! 99db32b7335b1d7f88850c0ac73fa177  libstdc++-v3/testsuite/ext/pb_ds/example/hash_load_set_change.cc
! 67634c6650ea730debbe1a99d56cda09  libstdc++-v3/testsuite/ext/pb_ds/example/hash_mod.cc
! e7be5dcb2299a2a9430b88ebf3934266  libstdc++-v3/testsuite/ext/pb_ds/example/hash_resize.cc
! 659cb535d17d1d636e520ae7bed88c4f  libstdc++-v3/testsuite/ext/pb_ds/example/hash_resize_neg.cc
! 2049a61dcffc0ad46a2f7dce428db36d  libstdc++-v3/testsuite/ext/pb_ds/example/hash_shift_mask.cc
! c13cc05c00bb15166a25ef4c5670a4d6  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_container_traits.cc
! 26e6bffd0328a607c1b4d7e88421c760  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_dijkstra.cc
! daaf9d71e6cc2ad1713c9b1b8c85123b  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_erase_if.cc
! d4c9caf68f26ace968f38c366639137f  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_split_join.cc
! aaf818df5ab7fb096d9d1c5f6634ff42  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_xref.cc
! 874993da5d2f270ab11bf87f3e20ae66  libstdc++-v3/testsuite/ext/pb_ds/example/ranged_hash.cc
! 734438f67ba16c8f518884a99d5e7caa  libstdc++-v3/testsuite/ext/pb_ds/example/store_hash.cc
! 66fd5d9af5c8753441bed6eabebc5a05  libstdc++-v3/testsuite/ext/pb_ds/example/tree_intervals.cc
! d24642d315b7afd3443095255db89113  libstdc++-v3/testsuite/ext/pb_ds/example/tree_join.cc
! 005cca0dcc3a50267e58fa95c0c43dd9  libstdc++-v3/testsuite/ext/pb_ds/example/tree_order_statistics.cc
! 21c256706df6e4231e4957678ba258c7  libstdc++-v3/testsuite/ext/pb_ds/example/tree_order_statistics_join.cc
! d417bffce400c5e2753f92e0116e955e  libstdc++-v3/testsuite/ext/pb_ds/example/trie_dna.cc
! 004a1bd8c178a94cc3d5aba79de3fe48  libstdc++-v3/testsuite/ext/pb_ds/example/trie_prefix_search.cc
! 66e288bdb39e97b766d3ccf7fbaa81ea  libstdc++-v3/testsuite/ext/pb_ds/example/trie_split.cc
! ddc716a0309855b185cabcae4879a025  libstdc++-v3/testsuite/ext/pb_ds/regression/associative_containers.cc
! c6717225bf9e36534c65d8fbc4dafdfd  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand.cc
! 98c9a2ccb26aba2c8c5c1ceed1ab401b  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand_debug.cc
! 93a4de530516d6ede5a570ffe17ff674  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand.cc
! bc0d6e5759f62e2538991316eb8f2ea5  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand_debug.cc
! 3be9926ae07e22b81852ce68a6553ac6  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand.cc
! daf4e21e2e1b5f8c538278d2b38db727  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand_debug.cc
! b96aa9dd7709e343f0df2dc1cd20f0e0  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand.cc
! 34a2b2c86d4fd8b300abb3638a811d15  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand_debug.cc
! efa3d1822bbdd9c6ea3e40855d6593dc  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc
! 54c79ff8819fbc3490fd1b49d398d9cd  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand.cc
! 36f00c7146f7aa34a865f88b74f322ef  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand_debug.cc
! 9956fa12bc329973d0b4afa9895670f0  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queues.cc
! 67d58dd1920359c7afbcfcaf116f15f9  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand.cc
! 8ac263f74b3b7ebf349f0ab496aeae08  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand_debug.cc
! 566ebd58ae37f51d5435bf700a67fae5  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand.cc
! 4592cc9bbbe6ad48cb0e46d15d64ac0c  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand_debug.cc
! 217afc212faf1e2d0fe2a24c7a0434fc  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand.cc
! 552c34a0fd1fed2f2ba8b86da469a3e6  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand_debug.cc
! b5213beadbff3eb3f112e41c5e842d4f  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand.cc
! 94b1c32ac3261d892154f10286da99a8  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand_debug.cc
! ee5a9a0176160483963d9b7bac13c79a  libstdc++-v3/testsuite/ext/pod_char_traits.cc
! 02afc8a1379a0b493a1e7b6d45981aa0  libstdc++-v3/testsuite/ext/pool_allocator/allocate_chunk.cc
! 9548e519760d472ddd6f0fdf54828e5b  libstdc++-v3/testsuite/ext/pool_allocator/check_allocate_max_size.cc
! e64a2397093b263a1f98d6f66106037f  libstdc++-v3/testsuite/ext/pool_allocator/check_deallocate_null.cc
! 1211dabc6dfa126ef770d7ab275b5683  libstdc++-v3/testsuite/ext/pool_allocator/check_delete.cc
! d236fc3d952b3c3c0fc78d9dad06d7e2  libstdc++-v3/testsuite/ext/pool_allocator/check_new.cc
! a219978da800aef4f6f13981a8a260ec  libstdc++-v3/testsuite/ext/pool_allocator/explicit_instantiation.cc
! d84ca3fee026999e49d3cef0f26c2c34  libstdc++-v3/testsuite/ext/pool_allocator/overaligned.cc
! 1f6c4c5c4841052fbaad769e38f3239f  libstdc++-v3/testsuite/ext/pool_allocator/variadic_construct.cc
! d984582cb3b995280af706948576acda  libstdc++-v3/testsuite/ext/random/arcsine_distribution/cons/default.cc
! c6756241fbc87ab8959313eb6b7bc3db  libstdc++-v3/testsuite/ext/random/arcsine_distribution/cons/parms.cc
! 46c74c4d5667abedeee2988056d924f5  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/equal.cc
! e4abdc6561a1fd1db46530156659f567  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/inequal.cc
! efd42d8c3ad3eee3022c1644a84544e8  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/serialize.cc
! 9745fc27810da1e18c12fab48d13cf6d  libstdc++-v3/testsuite/ext/random/arcsine_distribution/requirements/explicit_instantiation/1.cc
! 80a39c190aef863bd7a005c5c9b18a09  libstdc++-v3/testsuite/ext/random/arcsine_distribution/requirements/typedefs.cc
! 31b2e51ad688da944349833588b8a8a2  libstdc++-v3/testsuite/ext/random/beta_distribution/cons/default.cc
! e956bdec8591da8e4f70a6e73f21407d  libstdc++-v3/testsuite/ext/random/beta_distribution/cons/parms.cc
! b444900fb4d27d265458293e5952c029  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/equal.cc
! 3d86a481463ec04f8afd6221c745cd2e  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/inequal.cc
! 45d37d3265d50dbe8e35cb9eaa43d135  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/serialize.cc
! ac7641a1144035294859bf78f3dc312a  libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/explicit_instantiation/1.cc
! 07a3e7702d237957d0144a819be8b4a1  libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/typedefs.cc
! be3c4b97aca59b96cc72050661790b1c  libstdc++-v3/testsuite/ext/random/hoyt_distribution/cons/default.cc
! 0e2c15381588f983653a2849f3413e00  libstdc++-v3/testsuite/ext/random/hoyt_distribution/cons/parms.cc
! ac2dd55f6cd0737fffb5c5acd4e6a463  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/equal.cc
! f255d144adb2a38f3afbebb9fb9810b8  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/inequal.cc
! 377c6a6dd7afd5e917cde0f98d7491bb  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/serialize.cc
! 3138610599ae90c329f6f095183108f6  libstdc++-v3/testsuite/ext/random/hoyt_distribution/requirements/explicit_instantiation/1.cc
! 3ada009c668406e46fe94ced865dbbe1  libstdc++-v3/testsuite/ext/random/hoyt_distribution/requirements/typedefs.cc
! 469175b264ebc64a263516f41337fc58  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/cons/default.cc
! 2b985f83fdfb1992beadb232bd1de60f  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/cons/parms.cc
! 2124c2320b2aaa600eee264e8ea4644f  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/equal.cc
! 20326d9026c6ce53fdad20ccbd43a8eb  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/inequal.cc
! d6e2007ae85561ef1a5a8526bea38037  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/serialize.cc
! 4b3cdad004b4e95fb8a819cabe131b10  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/values.cc
  5310d63384a16aab3ca0056f2cb3b3dc  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/pr60037.cc
! d7499a9d81c4cf2f65580f43960c401b  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/requirements/explicit_instantiation/1.cc
! 847f068cc601e7004da1e0fd35b62fea  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/requirements/typedefs.cc
! 34b8a918eee17c98fa000da27197369d  libstdc++-v3/testsuite/ext/random/k_distribution/cons/default.cc
! 5f038323844ec9766101e7141d3d0be0  libstdc++-v3/testsuite/ext/random/k_distribution/cons/parms.cc
! d35ede20d383f94dc7c64beb0dae9b3e  libstdc++-v3/testsuite/ext/random/k_distribution/operators/equal.cc
! 4ce2561322ccc0be0df53da9ca2cf4ae  libstdc++-v3/testsuite/ext/random/k_distribution/operators/inequal.cc
! f675dccd68adff0cd87ae8d559637ec7  libstdc++-v3/testsuite/ext/random/k_distribution/operators/serialize.cc
! ccb07cba5984c6a9dd97b8f453716cc3  libstdc++-v3/testsuite/ext/random/k_distribution/requirements/explicit_instantiation/1.cc
! 457e7e20e3e6e2e8d66b90b2f8d39eea  libstdc++-v3/testsuite/ext/random/k_distribution/requirements/typedefs.cc
! a8f931f2c7277ec67309d26ff0e2b84e  libstdc++-v3/testsuite/ext/random/logistic_distribution/cons/default.cc
! 47f70207737b811b231d3e009d82e94b  libstdc++-v3/testsuite/ext/random/logistic_distribution/cons/parms.cc
! a77b0397b54386df0a78a275a0cb1c17  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/equal.cc
! 89216d1c4d77d07492ddfdd30910b694  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/inequal.cc
! 47c69e16921abbf7ae42008ca92c6e7d  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/serialize.cc
! 092e55167f1eabe25f80a7678f9eae34  libstdc++-v3/testsuite/ext/random/logistic_distribution/requirements/typedefs.cc
! 755eb4445aac4b5da81e811dc11e52eb  libstdc++-v3/testsuite/ext/random/nakagami_distribution/cons/default.cc
! 5a49015b687838a1a3e0b6e3a14d1f2e  libstdc++-v3/testsuite/ext/random/nakagami_distribution/cons/parms.cc
! 2fbdf81067834f31a431cc71551ebc4e  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/equal.cc
! d301a57c9a61aaf643656e5b9949ba4a  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/inequal.cc
! bdc3f0a6bc083ddf3cd7a9c97d58236b  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/serialize.cc
! 907aff120bae17b2a5f4352197866de1  libstdc++-v3/testsuite/ext/random/nakagami_distribution/requirements/explicit_instantiation/1.cc
! 0a6c08e8429bdfc627ad559e18b2ed63  libstdc++-v3/testsuite/ext/random/nakagami_distribution/requirements/typedefs.cc
! ba9337b1745329d34cc86d620b9bc1f9  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/default.cc
! f43393d54f24c33d76846c8b8408161d  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/parms.cc
! 9443b5973d9d9cee2b2cd0bff93b3ef6  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/equal.cc
! d66db57c1ff16310ecb6e26dd22364dd  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/inequal.cc
! 646dbf114e5f5d6d2cc53cc3c2141acc  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/serialize.cc
! 596d233bc56bee56cebf128c5c7baf7b  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/explicit_instantiation/1.cc
! 4155bebe910f30609b7fe14070c5aec7  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/typedefs.cc
! 6d03dc0bed971a61b4b175a2e2a81b8e  libstdc++-v3/testsuite/ext/random/pareto_distribution/cons/default.cc
! a96ee1f066e4ca7a4396b400b7970fe1  libstdc++-v3/testsuite/ext/random/pareto_distribution/cons/parms.cc
! 307c247fdd9ef7f2dabafdf0695473ee  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/equal.cc
! da391712c30359a916a4291594e2d8a6  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/inequal.cc
! 7189f6118260d92709780733908e4b78  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/serialize.cc
! c67205fcb30e82278231a7aaee86013e  libstdc++-v3/testsuite/ext/random/pareto_distribution/requirements/explicit_instantiation/1.cc
! 56dd1f7a8c279be3353d087b3c50f3ea  libstdc++-v3/testsuite/ext/random/pareto_distribution/requirements/typedefs.cc
! b66024489fad22f7d0a73b0c20ff6340  libstdc++-v3/testsuite/ext/random/rice_distribution/cons/default.cc
! d2519ee341ac6460a62006883c69b340  libstdc++-v3/testsuite/ext/random/rice_distribution/cons/parms.cc
! cdf7eab202a88ffb3063cb37af00857b  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/equal.cc
! eaff3a1f5959ebb813fb1d8fd1785eea  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/inequal.cc
! 410f55a29385154b826cd747a7982523  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/serialize.cc
! a35758d63598596fb2aa1e15329a468b  libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/explicit_instantiation/1.cc
! a57e17f9d1d42870a8b9b560fe8bf62f  libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/typedefs.cc
! 9406c4e541f2b07bf5094656113f6982  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/copy.cc
! e16c41159274a4d2426550d5b691547a  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/default.cc
! b55085b7e6c953d4a988de8d1415d7a9  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed1.cc
! 643e8450b4e867f1635e9d832dc0ba6b  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed2.cc
! 054529e9570edbc5a17c30937c4b6dbb  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed_seq.cc
! fc4acc98ef2b15b742a01ac42b2b7318  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed_seq2.cc
! d54ccd4fd881af87dd6a617922b47365  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/equal.cc
! 4f0647f53f0936d9cbf7de78a989fbcf  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/inequal.cc
! f69614807fdf9346282c8f7f1758931f  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/serialize.cc
! 8d422e461898266b56cf80493b6be178  libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/default.cc
! eb935fb2ea6f1474a09bbff902a718ed  libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/parms.cc
! 76e67ae427e6e8fe047796f1ad67adc6  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/equal.cc
! aeb1f75e9b2f863cd94dc23167b00629  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/inequal.cc
! e0c24088ee730c4ab50636b6b1b7039f  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/serialize.cc
! 577e6ce6aec193974f5d62b243e74614  libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/explicit_instantiation/1.cc
! 5496b7331543fe6647e6282d5b60e0e8  libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/typedefs.cc
! 96c3df624324542986611afe5d8eab38  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc
! 711e4e81cbd0fc294d48a997ce995390  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/cons/parms.cc
! c506549281998d18962e905d96e5945a  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/equal.cc
! f8de75f78b1ce6ce8f0a8b3c8bce997d  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/generate.cc
! 6411bcf74935212337f35f342417c09d  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/inequal.cc
! b8f685b79eacd0540643c1ef2fbeb227  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/serialize.cc
! ae148798d7a49ba738773b670aec0871  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc
! 697c3683093ee4f9def325fe07dd0ab4  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/equal.cc
! 5636ef9acfc271a7f2d7beccefda18e0  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/generate.cc
! 4b26cc8395c69fcc5869838d0c159580  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/inequal.cc
! c79da8de500eb179267328cbbdbe363f  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/serialize.cc
! 0bef704030e88a7e78b05de8afb6391d  libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/default.cc
! 10609d4cb250192740e70cc896ac8569  libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/parms.cc
! 2b805407b7fcadbb7b10b892c0b4c66b  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/equal.cc
! 8e474cf43c07c9972fbeeba6d970428f  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/inequal.cc
! 8ce845a60172985286dff78e814ddd9c  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/serialize.cc
! 661b277af422c1647c5547ed5ac91ed0  libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/explicit_instantiation/1.cc
! aa6a98461f84bad2d0ad76a7521ca24a  libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/typedefs.cc
! 9bb4310219e34fef0ca69b5ef675297d  libstdc++-v3/testsuite/ext/rope/1.cc
! 92e965b3db3077ae85fd16a69c7c33c8  libstdc++-v3/testsuite/ext/rope/2.cc
! 354183141b475d9ca073acaedce030be  libstdc++-v3/testsuite/ext/rope/3.cc
! f53f6b3a99ea6cc208b1ec3d0d5d0f99  libstdc++-v3/testsuite/ext/rope/36832.cc
! 8b886a5deac888b7ba249d0a5c4211af  libstdc++-v3/testsuite/ext/rope/4.cc
! 2246aab64219670a8cc18a6d471f5db2  libstdc++-v3/testsuite/ext/rope/40299.cc
! 8e56330b27bf769b4d8f007d487fc95d  libstdc++-v3/testsuite/ext/rope/44708.cc
! f0f7dfc62f1eed17c7270ed4d8c8e44a  libstdc++-v3/testsuite/ext/rope/44963.cc
! 5a394cab170663df73644c847d8cfac4  libstdc++-v3/testsuite/ext/rope/5.cc
! b1f353e00d9c68204dc05370bd421763  libstdc++-v3/testsuite/ext/rope/6.cc
! d4bdaa5b4f28018e11317d992032958d  libstdc++-v3/testsuite/ext/rope/61946.cc
! 09a7291498057dc4d56b50b8b14f015f  libstdc++-v3/testsuite/ext/rope/7.cc
! 4c3d9b26159531d37d109eff09eab838  libstdc++-v3/testsuite/ext/rope/pthread7-rope.cc
! 069b5922d7e54238743965e65c9cee5d  libstdc++-v3/testsuite/ext/shared_ptr/1.cc
! acca908c5069a6aeed8e41f6de29648f  libstdc++-v3/testsuite/ext/slist/23781_neg.cc
! 325095fcb58b40359261fa504b79b438  libstdc++-v3/testsuite/ext/slist/check_construct_destroy.cc
! 644b3f1df74127077f9469fc2b35637c  libstdc++-v3/testsuite/ext/slist/requirements/explicit_instantiation.cc
! 5104e3ee25dbd62b27a89dad2324112f  libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_nan.cc
! 293c3cf4290318abcd6f58288072790a  libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_value.cc
! 9396acda5cebd49b65a2feb2f7258569  libstdc++-v3/testsuite/ext/special_functions/airy_ai/compile.cc
! 550df355de63a4c07bfe967582452be4  libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_nan.cc
! 6eb29b50c4d91e2803341f3a7f69da6d  libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_value.cc
! 6083048ac09f910afc463de1adf7962f  libstdc++-v3/testsuite/ext/special_functions/airy_bi/compile.cc
! a46ce6460d0851eca84cfc466907b7da  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc
! ffcc8d09d692760d7c2b5163c0de47cd  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc
! c130c4fe34da2fe4d04fadf22a8bfcf3  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc
! 2a6a870956cb98d351cdd4de5206e8dd  libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc
! 623592868b9ce112182161c2143ace39  libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc
! c3cbb6b8dc98e6013252ac89496a9d7b  libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc
! d4e4e94ead4f4a2ed9e33888f30cbb11  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-1.cc
! 894c62e0158ed0cf98d725bf5c00b6af  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc
! 5c8a9865a008b410cb8ff24d5a83d3f7  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-3.cc
! e4d771bdc51b7b24c4022b9d3ee42922  libstdc++-v3/testsuite/ext/stdio_filebuf/char/2.cc
! 950a25e93a747d961eae90e7743ccbdf  libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc
! b9a366e34ba4cb5ef340b6af17d9ce2a  libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc
! 56c52dd963d3c636e7c740641ae5010b  libstdc++-v3/testsuite/ext/stdio_filebuf/requirements/explicit_instantiation.cc
! a2abd3eab9b0df636dc90528392fbf3d  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/1.cc
! 4090a8703d71a6f45e65b83506e05317  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-1.cc
! 7bb905e79ddeb537abd8934f0e1d1199  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-2.cc
! 09319b8b77d079f885bc35188b4fb053  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-3.cc
! bfbf11f8c8f8a90dc4cb3ffdb51a1e11  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-4.cc
! 4fec1c161a7eb73c377a899394b09ec9  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/35209.cc
! 9416e77794b62246c378da105b620f01  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc
! ff841f3567823565414cbed337e00468  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12077.cc
! 10d3df51bc8469d080e83c38ac32aba3  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-1.cc
! bb3fa242519f8cb87321c00be2269e88  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-2.cc
! 68c4b48b5f4554e601aaae28d14bde44  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-3.cc
! 891f9e36aa25e456a8b43a60b8840d46  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-4.cc
! 8acdacf0c2ec839a0c67039ed4eca7f6  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/35209.cc
! f771622a6a97dc5b5580d593e17f719a  libstdc++-v3/testsuite/ext/throw_allocator/check_allocate_max_size.cc
! 82377ac5125f6c89af32d0fb0950d083  libstdc++-v3/testsuite/ext/throw_allocator/check_deallocate_null.cc
! c5b62e62e88375afda3ac025c7cdbb40  libstdc++-v3/testsuite/ext/throw_allocator/check_delete.cc
! 179023b6eb7ba3be6fb50347c04c6113  libstdc++-v3/testsuite/ext/throw_allocator/check_new.cc
! 3a6113d745533e1347d7dc2bc1dab50e  libstdc++-v3/testsuite/ext/throw_allocator/deallocate_global.cc
! 0ee252ea18afab7026ac5e22b1ad7a49  libstdc++-v3/testsuite/ext/throw_allocator/deallocate_local.cc
! da4ad6070edcab96c0c63b91de262ff2  libstdc++-v3/testsuite/ext/throw_allocator/explicit_instantiation.cc
! 7bb7538528a37d8ce74aa1193365a22c  libstdc++-v3/testsuite/ext/throw_allocator/variadic_construct.cc
! f75f46ff6a0c362505100003c962fae3  libstdc++-v3/testsuite/ext/throw_value/cons.cc
! eea8e4438168be64209c2ea24c4643bf  libstdc++-v3/testsuite/ext/type_traits/add_unsigned.cc
! 14911fbd1a02210c5b7f038b53a031b3  libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc
! 6e5d78ee82c308290008b10339b19c3c  libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc
! 1008e0fe36924326e7f519acc72f2e14  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned.cc
! 7154fbe6377bd7003e8dff13ff7a3add  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc
! 614dbd08bae95a1e58ab38ed60641c96  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc
! f679ede255020395b395f0f671c533a6  libstdc++-v3/testsuite/ext/vstring/capacity/29134.cc
! 94c5ab166b5873aeabfa3479e3986f8b  libstdc++-v3/testsuite/ext/vstring/capacity/shrink_to_fit.cc
! 976094f88ab55cc50429f858436fca14  libstdc++-v3/testsuite/ext/vstring/cons/58415-1.cc
! 2c4fc7bbc98378364ac7d0945c6a1954  libstdc++-v3/testsuite/ext/vstring/cons/58415-2.cc
! 3bbaf958fe074212ba3a92092edc009a  libstdc++-v3/testsuite/ext/vstring/cons/moveable.cc
! c9529f2ffbf3666252bbc7d7c07ea041  libstdc++-v3/testsuite/ext/vstring/cons/noexcept_move_construct.cc
! ae19053b7daf1856a14d0be4ec4919b1  libstdc++-v3/testsuite/ext/vstring/element_access/char/58163.cc
! bd495e00a4db0510dfe69c34775ae08f  libstdc++-v3/testsuite/ext/vstring/element_access/char/front_back.cc
! 3bb8bb38a2a07e94e118644ee7dd3035  libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/58163.cc
! 73efb44b6d6f3af675c8500cd04aaf2f  libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/front_back.cc
! e1dc00de614c97f1894535c7a186282e  libstdc++-v3/testsuite/ext/vstring/hash/char/1.cc
! 6884eda2a2cd2d62ce406807422cf59c  libstdc++-v3/testsuite/ext/vstring/hash/wchar_t/1.cc
! 0cabe4e2e3479689272680203c1a58ad  libstdc++-v3/testsuite/ext/vstring/init-list.cc
! c5f76359501a851e104270f0a19b9dd2  libstdc++-v3/testsuite/ext/vstring/inserters_extractors/char/28277.cc
! c000e8a05f1d113e89a9d4336a43f242  libstdc++-v3/testsuite/ext/vstring/inserters_extractors/wchar_t/28277.cc
! ca39c82046ccbe6d7a7d76a575f1274a  libstdc++-v3/testsuite/ext/vstring/modifiers/assign/move_assign.cc
! 55c1d3966819933a6f106bebfb81286b  libstdc++-v3/testsuite/ext/vstring/modifiers/clear/56166.cc
! d0ca7655d38f2ce7cf000a315dcc6227  libstdc++-v3/testsuite/ext/vstring/modifiers/erase/char/54577.cc
! a54e9ba3e4e152294c1af54f96f235b2  libstdc++-v3/testsuite/ext/vstring/modifiers/erase/wchar_t/54577.cc
! f6ccbae65f3cc5b86457a8400ace7b79  libstdc++-v3/testsuite/ext/vstring/modifiers/insert/char/const_iterator.cc
! e4935ac74425454afb3cb9d535fa5360  libstdc++-v3/testsuite/ext/vstring/modifiers/insert/wchar_t/const_iterator.cc
! 2a02bff1d3b4e0829479dc11594b96db  libstdc++-v3/testsuite/ext/vstring/modifiers/pop_back/char/1.cc
! de701ee4511b508e7e5c5d50baf8447d  libstdc++-v3/testsuite/ext/vstring/modifiers/pop_back/wchar_t/1.cc
! 49b66b6875d40a3d87477d2442288779  libstdc++-v3/testsuite/ext/vstring/modifiers/replace/char/const_iterator.cc
! 89ce4faa40916f60952620185a01f8e8  libstdc++-v3/testsuite/ext/vstring/modifiers/replace/wchar_t/const_iterator.cc
! 0b642cff3667e61c49694641497ed885  libstdc++-v3/testsuite/ext/vstring/operators/1.cc
! 002de3f3cfc8506cb850f709924011b5  libstdc++-v3/testsuite/ext/vstring/operators/2.cc
! 888d0a7d9d9457e2cb49eb6aa4dfa566  libstdc++-v3/testsuite/ext/vstring/range_access.cc
! 0975d1fcae5c3fe17dfb5fc2ac4e1744  libstdc++-v3/testsuite/ext/vstring/requirements/citerators.cc
! 0f4a824a88bea6cdc179a080f40750c0  libstdc++-v3/testsuite/ext/vstring/requirements/do_the_right_thing.cc
! 30c8ba109997fc62f08fc8a8ae75dd15  libstdc++-v3/testsuite/ext/vstring/requirements/dr438/constructor.cc
! 88b63700a3984185b716cce0b49052a8  libstdc++-v3/testsuite/ext/vstring/requirements/exception/basic.cc
! 384972913b711510be1ee91de2b23684  libstdc++-v3/testsuite/ext/vstring/requirements/exception/generation_prohibited.cc
! ef3d749a043b7b6ce06ff617706ddb0b  libstdc++-v3/testsuite/ext/vstring/requirements/exception/propagation_consistent.cc
! 0a046b1b2a2dfe570416f76563bf1e7c  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/1.cc
! fa681c7ccfca41edbc47f71b2ca92c9b  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/2.cc
! b4876ee48ff01727ba90ef64a636e4ab  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char/1.cc
! 54d8e93f4c3c1d56022d244a18e188b7  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/1.cc
! 6ffd2e99007ecc83817c2447ee9a7dc4  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/1.cc
! 6eed02681b9ae946f861ecf991e787a0  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/wchar_t/1.cc
! 3d155b0ea57a1ea519d785b79bf54d29  libstdc++-v3/testsuite/ext/vstring/requirements/typedefs.cc
! 6d296b6b8c72fc1f8c12d277b46a525e  libstdc++-v3/testsuite/ext/vstring/types/23767.cc
! 606f7983c787ca33e50b39fc37382554  libstdc++-v3/testsuite/lib/dg-options.exp
! 6d21fdbbc1e191b7f5b2bfed28c14c99  libstdc++-v3/testsuite/lib/gdb-test.exp
! 18541a1e904360cbde4f1c3a5e8370cb  libstdc++-v3/testsuite/lib/libstdc++.exp
! 018cc51826b0b322cc7687bf0bb00847  libstdc++-v3/testsuite/lib/prune.exp
! 451ec380a6bbe9f2d4bd438252ea5cd0  libstdc++-v3/testsuite/libstdc++-abi/abi.exp
! a4f7887f29adc19d2f7c4de5688231a5  libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
! 73296fb16abe056eee31004dcb01452e  libstdc++-v3/testsuite/libstdc++-prettyprinters/48362.cc
! 6676c287937e35a152af3657d57a30e5  libstdc++-v3/testsuite/libstdc++-prettyprinters/59161.cc
! 3d11be1030f2ddbdf9653d16c097e53d  libstdc++-v3/testsuite/libstdc++-prettyprinters/80276.cc
! e39911046de238e82f9dffedc4a45444  libstdc++-v3/testsuite/libstdc++-prettyprinters/91997.cc
! 459abfde30ab0b70acc37a5b1a0efd7d  libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc
! 60f062271c2c2725e3f8dab5fba4ac95  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc
! ae941391a77e4cfc96a0dcaa5f2a4dc5  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc
! 50ec9edb53e998b3c1b73b7cb42d4986  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx20.cc
! 58801248330c818e3392f997d399c77e  libstdc++-v3/testsuite/libstdc++-prettyprinters/debug.cc
! 7a277bd37f0b8d74b8e2df8a1a65910e  libstdc++-v3/testsuite/libstdc++-prettyprinters/debug_cxx11.cc
! 81b6f62154b2b4cf63a6801c9eb262f4  libstdc++-v3/testsuite/libstdc++-prettyprinters/filesystem-ts.cc
! bedd2936585a6a53c8f46d268dd9fa31  libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc
! 5583f661675abaeb3a4a66354537df71  libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp
! f2715b0f12a23f6ad08c3a4f26accda0  libstdc++-v3/testsuite/libstdc++-prettyprinters/shared_ptr.cc
! 772200831e7ffdf24e81bc6aee77d8c3  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
! 76cd6364eafb0d290657486d926b6ec2  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc
! e08f15e9851f9f8f95a36b4309f251f5  libstdc++-v3/testsuite/libstdc++-prettyprinters/tr1.cc
! a03e9b556e4c375a7d0043c41e1477a8  libstdc++-v3/testsuite/libstdc++-prettyprinters/whatis.cc
! 6295174ff4d21947d4de465755126a25  libstdc++-v3/testsuite/libstdc++-prettyprinters/whatis2.cc
! e631cc31fafc1a2fb997671378cb0128  libstdc++-v3/testsuite/libstdc++-xmethods/array.cc
! 4fc99f5a71774a36d8662c6cdcf39d86  libstdc++-v3/testsuite/libstdc++-xmethods/associative-containers.cc
! ae489ce2f8e4f19b9ad3a63328fdc48e  libstdc++-v3/testsuite/libstdc++-xmethods/deque.cc
! ddb3fcfdfe325dbf4ecdb92191c70722  libstdc++-v3/testsuite/libstdc++-xmethods/forwardlist.cc
! 8b979c7a5c4be942e0606e70ae008d0b  libstdc++-v3/testsuite/libstdc++-xmethods/list.cc
! 1d027dbd869684ca0cb61192b7cada37  libstdc++-v3/testsuite/libstdc++-xmethods/shared_ptr.cc
! 945c6057e20bbc4b97d5620191b23cc8  libstdc++-v3/testsuite/libstdc++-xmethods/unique_ptr.cc
! 5b7f0264150ad47c5ff834e86c6e81d1  libstdc++-v3/testsuite/libstdc++-xmethods/vector.cc
! 0913db5536c8cb3684a316c9a21cb531  libstdc++-v3/testsuite/libstdc++-xmethods/xmethods.exp
  af003639dee7c3edb68531616f1c3b8c  libstdc++-v3/testsuite/performance/20_util/memory_resource/pools.cc
! 4b751a0b8ba94d03b5bf497a97aa9157  libstdc++-v3/testsuite/performance/21_strings/append-1.cc
! e7512ae198fb771703d1246c85fbbe8d  libstdc++-v3/testsuite/performance/21_strings/append-2.cc
! 6f7b319214707a77e88841fd0c9ec243  libstdc++-v3/testsuite/performance/21_strings/cons_input_iterator.cc
! 2d5f4ca3dcffedfeb213a464905a5422  libstdc++-v3/testsuite/performance/21_strings/copy_cons_and_dest.cc
! 7eab1f0290b4cc3b1acc734fd4f60174  libstdc++-v3/testsuite/performance/21_strings/find.cc
  efa1608e1841a10bba94a6d4de361846  libstdc++-v3/testsuite/performance/21_strings/hash.cc
! 861a8da2c247cc8e0a3f91927acc54fe  libstdc++-v3/testsuite/performance/22_locale/is_wchar_t.cc
! f2f9ced787819a17cb1b2e2a6b7a9a21  libstdc++-v3/testsuite/performance/22_locale/narrow_widen_char.cc
! e51d113b1876ef120996faa1f34005d5  libstdc++-v3/testsuite/performance/22_locale/narrow_widen_wchar_t.cc
! 6c9f0ed30b1108c8ed5254b55ce0496e  libstdc++-v3/testsuite/performance/22_locale/wchar_t_in.cc
! 7b116010724238386f8cfe117a57c198  libstdc++-v3/testsuite/performance/22_locale/wchar_t_length.cc
! 93a70660214d82c2882ba91aba927e4d  libstdc++-v3/testsuite/performance/22_locale/wchar_t_out.cc
! 3ccb843ac0e12a9a84bda493e8419b68  libstdc++-v3/testsuite/performance/23_containers/copy_construct/unordered_set.cc
! 41efd92bd326c93d12bf0d46870f3abd  libstdc++-v3/testsuite/performance/23_containers/copy_construct/vector_bool.cc
! b3a2b8cbbe9dedd877fecb53478db3a8  libstdc++-v3/testsuite/performance/23_containers/create/map.cc
! 865e13863686feea54aad543bbc7db58  libstdc++-v3/testsuite/performance/23_containers/create_from_sorted/set.cc
! ef1c5106c1a6defa11a5e8594e751af7  libstdc++-v3/testsuite/performance/23_containers/create_sort/list.cc
! e6610f1fb80d358f693eb85c11b50219  libstdc++-v3/testsuite/performance/23_containers/find/map.cc
! a859b8dd19b0e645b5631789361e3d47  libstdc++-v3/testsuite/performance/23_containers/index/map.cc
! 33cf092cbeb0a0773c1fce7a05dd322b  libstdc++-v3/testsuite/performance/23_containers/insert/54075.cc
! ac67a5ddc2c9cd8d9d7fb39bab2e89be  libstdc++-v3/testsuite/performance/23_containers/insert/81476.cc
! e954943ab858506c96bf1df82dfade65  libstdc++-v3/testsuite/performance/23_containers/insert/associative.cc
! e3e88e4a7b6f066a80ea1a0df33f8a5f  libstdc++-v3/testsuite/performance/23_containers/insert/sequence.cc
! 96a184bd29ec93dc38353c543dfecddf  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_map_array.cc
! 80be5247c2c80b58398c01e2262017f9  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_multiset_hint.cc
! 416eb71cf6bb73ea7bc6a698d7ffe785  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_set.cc
! 165fe4483375e9167753f5ef87d55841  libstdc++-v3/testsuite/performance/23_containers/insert_erase/41975.cc
! 3dec4c3da16bca6e3067bebbc033392e  libstdc++-v3/testsuite/performance/23_containers/insert_erase/associative.cc
! 4ac23226d88193877cc2eed62ae74a3a  libstdc++-v3/testsuite/performance/23_containers/insert_from_sorted/set.cc
! 7e398fd80df2998c936ba9aa4b5f866b  libstdc++-v3/testsuite/performance/23_containers/producer_consumer/associative.cc
! 076c20c0451e9e46e274223026a54c0f  libstdc++-v3/testsuite/performance/23_containers/producer_consumer/sequence.cc
! da2e2a78c189b0a7e75d4c45215a3a19  libstdc++-v3/testsuite/performance/23_containers/range_construct/deque_construct.cc
! cb1951952295ac2b7c46d561805ce9fd  libstdc++-v3/testsuite/performance/23_containers/range_construct/list_construct1.cc
! e37b81e2033f36915f87b85496670866  libstdc++-v3/testsuite/performance/23_containers/range_construct/list_construct2.cc
! ad811777b73096f9e37d53dc329ad41e  libstdc++-v3/testsuite/performance/23_containers/range_construct/vector_construct.cc
! ac049900e30941c785c045eb4d612278  libstdc++-v3/testsuite/performance/23_containers/resize/vector_bool.cc
! 30ced49279ddda8f2b3b06bf5652f46e  libstdc++-v3/testsuite/performance/23_containers/sort_search/list.cc
  9d1d6439b2e93ebc48779237c0969b25  libstdc++-v3/testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc
  ab09b2da7335847dccf2fd63d8b8fd89  libstdc++-v3/testsuite/performance/25_algorithms/copy_deque_iterators.cc
! 5a4a77a3f92644bd6abfbbaf2189c636  libstdc++-v3/testsuite/performance/25_algorithms/copy_streambuf_iterators.cc
! 7de24be82f4612722f7541662209c82e  libstdc++-v3/testsuite/performance/25_algorithms/equal_deque_iterators.cc
! 71b55c24503df036c4a0dbcc52121198  libstdc++-v3/testsuite/performance/25_algorithms/find_istreambuf_iterators.cc
! 243519971ee0e9e6cf6196d7baa36a15  libstdc++-v3/testsuite/performance/25_algorithms/lexicographical_compare.cc
! afb084db896274013adc83e5faf0f3dc  libstdc++-v3/testsuite/performance/25_algorithms/nth_element_worst_case.cc
! 694180e1a059919e55a5870aea10ab41  libstdc++-v3/testsuite/performance/25_algorithms/search_n.cc
! ebbd9918fc1026aa7ced1e798662e4bc  libstdc++-v3/testsuite/performance/25_algorithms/sort.cc
! 9cec435b471f0693152b4e77d7e81ec9  libstdc++-v3/testsuite/performance/25_algorithms/sort_heap.cc
! b1c59a87d2d09307cc108b47e72694b5  libstdc++-v3/testsuite/performance/25_algorithms/stable_sort.cc
! 83a859d48536e5ac0ba1a20b48159b2f  libstdc++-v3/testsuite/performance/26_numerics/complex_norm.cc
! ecfe9d9804f6541df445373e9419d635  libstdc++-v3/testsuite/performance/26_numerics/valarray_gslice_to_index.cc
! 15dd810f5ecd7ebcf0d068cc84b60260  libstdc++-v3/testsuite/performance/27_io/cout_insert_int.cc
! a98bf1219be95648f361fdc448673248  libstdc++-v3/testsuite/performance/27_io/filebuf_copy.cc
! 3c122f291ee3447aeae4dd49c43983cf  libstdc++-v3/testsuite/performance/27_io/filebuf_sgetn_unbuf.cc
! a32406577d43c6b7507ec4e7e42336bb  libstdc++-v3/testsuite/performance/27_io/filebuf_sputc.cc
! c6d46b9c5e17d6b91c429ed0e7bb3c53  libstdc++-v3/testsuite/performance/27_io/filebuf_sputn_unbuf.cc
! 8fb23dd1e038147337f6a9b0e76eab7a  libstdc++-v3/testsuite/performance/27_io/fmtflags_manipulators.cc
! 6da40e5ede5205b5d2fe8b10dc6b8346  libstdc++-v3/testsuite/performance/27_io/fstream_seek_write.cc
! 95094c20fa96817278bc2b44deb0d969  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_chars.cc
! 644d8b3cd490185dbf77c5b9619f00f2  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_float.cc
! 3346b33a5d2b4c433fe9125849af8081  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_int.cc
! 7998c0696bc23de515dea4437c942fc4  libstdc++-v3/testsuite/performance/27_io/ifstream_getline-2.cc
! bc65901393b51940019cb3d02a29eb40  libstdc++-v3/testsuite/performance/27_io/ifstream_getline.cc
! f51c1d758926085065c3a7ff4b461cba  libstdc++-v3/testsuite/performance/27_io/ofstream_insert_float.cc
! 712c50e6099730088c8562b45180fe82  libstdc++-v3/testsuite/performance/27_io/ofstream_insert_int.cc
! 1bb886854ab90062b6dbdc8f775db1ce  libstdc++-v3/testsuite/performance/27_io/stringbuf_overflow.cc
! 38296718d49c6f1248fdd02938e8cfde  libstdc++-v3/testsuite/performance/28_regex/range.cc
! 79c0b231a99304b251d003918b75b35f  libstdc++-v3/testsuite/performance/28_regex/split.cc
! 3be060e068787a7cd7e673513ba46519  libstdc++-v3/testsuite/performance/28_regex/split.h
! 1aa422b47dfa0618dfed81aae6ccebde  libstdc++-v3/testsuite/performance/28_regex/split_bfs.cc
! 8eff211d36dfe85424d3d2040e100459  libstdc++-v3/testsuite/performance/30_threads/future/polling.cc
! c26d7524147049c8604cd0d6c072664e  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_find.cc
! 348140b566069948e6fc70c2d7b9baf8  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_subscript_find.cc
! 663a6dec8e970b7794bbd0ac25ebb244  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_subscript_insert.cc
! 41b12db91c27d0cb19e23cc43f8a96c0  libstdc++-v3/testsuite/performance/ext/pb_ds/all_text_find.cc
! 549fd8be37c9941ae4f4d0f8332c2117  libstdc++-v3/testsuite/performance/ext/pb_ds/hash_int_erase_mem.cc
! b09e545129618a02131603f552891c7a  libstdc++-v3/testsuite/performance/ext/pb_ds/hash_zlob_int_find.cc
! ab03ff5f580d645a9acddd2db3a147b2  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find.hpp
! 237803847bcd73744018479bf78d6f9b  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_large.cc
! 0703ca0d9e4180125a7f548edf58f33f  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_small.cc
! 0553aa108a9b1c08c08fc17aab6bf41f  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert.hpp
! 20832c1ad7d24d349453bac8cea99a2a  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_large.cc
! 0f5b2a823b92cc037fb776820dd84438  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem.hpp
! 6aa95591439c846266b74532506b8ff5  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_large.cc
! 32e4b906214b6ea4aa9629ee8864cfad  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_small.cc
! 63ec23930eeb426a5d41a291a1849a64  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_small.cc
! 723096e666250c789ba66038f119b9f1  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_int_push.cc
! 27215f753c228f192a9dab787e5c2f57  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_int_push_pop.cc
! e22c973ea8f70fe794989613b8123b78  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_join.cc
! 65e563d21b8263062ac57c657fc84b0d  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify.hpp
! fb5b79502b25e9a98522c67b0a89e2dc  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_down.cc
! 14d391dff6e0e03ad349d72a93409fea  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_up.cc
! 2baa46006899d0a4ecea2b84e80b8286  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_pop_mem.cc
! 3a2823905f519c800dde0ad060c3aa19  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push.cc
! 83e3912051ca5f32479f1dbbfe2ff88b  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_pop.cc
! ae887dfedd875335e98fd619a7768be9  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_order_statistics.cc
! 90ef2e6b418fb61dc3d167ba2ca9a4c4  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_split_join.cc
! ec545981e61406ea31958153068a416d  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_insert.cc
! c81e82ddc34d835a16709febdd777807  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_lor_find.cc
! 49d7f5aae027ecdbf6953d38c028575d  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc
! 6b839694705f33fba494b43f0c85c808  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc
! 5358947cd431f63e75370fa9b73934e1  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc
! b4edf2e56bff39421cac9657c330d55c  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc
! ca0a6719a05db89ef7f7e65035c74f75  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc
! 04c474de3178fae31d5efa2a074c04ff  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc
! cc20859a71a1a60c9a0f8811758ab5a6  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc
! 65b23d2caa3a6b1557a5e512adb91d22  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc
! 7152c47416a29f2f1c436d237dd2a3c1  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/pr86655.cc
! a3633979c24683f784d03870f8b1f02b  libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc
! 77cecd9b5a49e9aecc0861a20742214b  libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc
! efd1ff9fb6b58c410fdbe4d86c836595  libstdc++-v3/testsuite/special_functions/03_beta/compile.cc
! 36c2ce394695a1c46391fa0b8559931c  libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc
! c79695554f5e2313679424d68bede9e0  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc
! c0739522de6322ded16dab74702f7a94  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc
! 5f5d6e368bfdc4d9486f1a6280c35158  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc
! 8a82c44255124f9d0a6ceecb9121c27e  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc
! 297c6f9a30781823bf2726b4f0447c1f  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc
! 29249f4dd59a9ed9d7714335f59d0d5e  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc
! add1ce9e555f23b98dd437d9e55757cc  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc
! 71aa3b548f9642920d8e76c3a07b3c42  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc
! aa67d96742d21363aec8ace1c9f28741  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc
! 154480f8d740cf63297d6467153688bd  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
! c6a7fb9a8582c28c479984873bb625f8  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc
! 5220d0252d3b5bbc488f0d2f71d1cf62  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc
  d40969d8e7a8973cde9b227f9ce95961  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc
! de36c3a198df2d425b340b4e76d85fe9  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc
! 0a928d4a3db81b01ef2b29e317305120  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc
! 72a9605b83480f0a5eb35632561eef3a  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc
! df7cbc3f041286bcb05a1a4fd16c23ed  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc
! e1aae8539bb3e4c6eb585f0301a0cd10  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc
! 185f75e158f5f2fc7bd21476cc6953e8  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc
! e8173773947288fa0104f81a12d84be1  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc
! 514170b71092d307de18c7df1550b309  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc
! 0abc8b7f2b95ecf3c5431a390e881c75  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc
! b28bab5a8a99079ef396ef2c0000d1c7  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc
! 22b614b1bc4fff9d5844fb2f9ac01e81  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc
! ddb2217b1610d9153eccdcc3cb15ab74  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc
! 6c05edac615433a201e01c1c8c006c49  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc
! 037eb93e169b277e8a8cf29ef8e8fd84  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc
! c92153fc7caf7cd4febdbca113a7c353  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc
! bfa66a572ac6a62a7d6aaa91bd47ee56  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc
! 1a8c9279f957974fd85d438799931c02  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc
! 35bb794d112b4e7540b8ff49ffaf96d3  libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc
! b126f03e18a0abbaaafe914b3f89062a  libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc
! bd0e39a880b51ec389b5e8bfe7232533  libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc
! a69db591a7b37b0c8433031e74356075  libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc
! 5840861b5feb8b9efb458c4a9682f648  libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc
! 33b93423a3fcb492e3c51bd0cad8252f  libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc
! b8b8378ff541ead276f4126ea31187ac  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc
! 116781fdca8b6ca44fca4a8503d9619c  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc
! 3012c1b34674b96b7014cad21f9932b0  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc
! 4ce17cc1823a326440a42f2a1ee95750  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
! 927da9515bc0c51765fed07a63df4b54  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc
! 441835e761180dbb84aff1a807d0adc8  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc
  51586062b3eeaebd7af37c198695dc60  libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc
! 1c3c8db77483e001b271f63946338e04  libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc
! 852508ca7dc78c0419c02e6faef7c1a6  libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc
! 7b707d2b9b1073d61632050d499db4cb  libstdc++-v3/testsuite/special_functions/14_expint/compile.cc
! f7cb171826a569de6ef0e906671458e7  libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc
! d115636d43255788e5b1324d4e0e5beb  libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc
! f4ab673999f8ba0b7b6332a86c356e5f  libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc
! ca45071d719f1868b031f12209d51dcc  libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
! 07cdb9cd9426eb245413e65ecf72df44  libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc
! 73fb3306e1ba382717368ec8a0bd1e97  libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc
! 170de5f104c3d0c811847d20cee12455  libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc
! 7d32a6cf7c6fbac8f800c456b214a031  libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc
! 01c74b02c053fdaabc4616ae8989dcb7  libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc
! 2c2b07228c4845afc0abe954e3842e08  libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc
! 47a3e5113e4cbafbc9be7fbf4591a569  libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc
! 7e5090424bfa52d8099775d73b27454c  libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc
! 5a5a8a3a10fc7b1b2e123b920c4510e4  libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc
! 6c8f982e6c08aa95bcc367d56d3f2a89  libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc
! 33205c8957ac6f4281f81a47c1236a37  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc
! 85fdc3be381cc62f5fe87b6b83c57f60  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc
! 65e59f42843a7d3c5f4677398da4f03b  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc
! 7aeb91bd53a1368b78b34d29f4cd54a4  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc
! 37537fc313c22a6da63e4dcfff889d35  libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc
! f12f665fda5429a6329e2560e706d491  libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc
! e67e43a25feddb4eead5c5dfb245a634  libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc
! 7f88fb7c0d93083123b351a7a5d7d8a7  libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc
! 9f0c079bc4b342cf0c7ab54b891cbde3  libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc
! 3231947daa1b91cd8948dfe507796209  libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc
! 0474e4427255800bccfd6843ecdfe12c  libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc
! 07e436a12aadf355c88c13b852a89bb6  libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc
! 779ccec4b19a28d8a2fc14e04071e0f8  libstdc++-v3/testsuite/special_functions/20_sph_legendre/pr86655.cc
! 2bf2927acb6cf43cfbb9281e27eba79a  libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc
! ae713a144da57f823340c59225bf3a6a  libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc
! d678b222443aa211dcb9148528978e0e  libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc
! ac2a7bf5b3204e52820ae501b8a93ea0  libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc
! 8c04386d2c2fc5f9ea730fc4c99249c8  libstdc++-v3/testsuite/std/concepts/1.cc
! 274dba688b6d6650365cdf8f3d630ee7  libstdc++-v3/testsuite/std/concepts/2.cc
! 198c227ecb29d1502845a4f2ac2ba906  libstdc++-v3/testsuite/std/concepts/concepts.callable/invocable.cc
! 79700ee35a241596c4112ba70116879a  libstdc++-v3/testsuite/std/concepts/concepts.callable/regular_invocable.cc
! 4129d47270f8db529d9afb2cf9beae2f  libstdc++-v3/testsuite/std/concepts/concepts.callable/relation.cc
! 81e0fd657c0dd4c22f80a0babccc56aa  libstdc++-v3/testsuite/std/concepts/concepts.callable/strictweakorder.cc
! 0eadf4d820b669458202fb539f765fa7  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.arithmetic/floating_point.cc
! 7da30c19f2fec09f68a839836f40dccf  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.arithmetic/integral.cc
! 2897793bce709465e5d8dc8d3794ba6a  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.arithmetic/signed_integral.cc
! db137db80673077a27be8f21e32bdf23  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.arithmetic/unsigned_integral.cc
! 383b8402e616ada5a7462c0f0630d3e9  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.assignable/1.cc
! 476da3011d2bc938102ab05aa965b14c  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.common/1.cc
! 74548c631914c0d0e669258b06d03fc0  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.commonref/1.cc
! 2b1723e37dcf9b53b6a1dab33777a7e2  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.constructible/1.cc
! 5da8ba33f94340ee673698721db90913  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.convertible/1.cc
! 3767a595fb551e6c4a77bf43cf6a0f6c  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.copyconstructible/1.cc
! 5a9a53e09d8ed75f3528ffe43caf42c6  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.defaultinitializable/1.cc
! b4a097090c945e41406d69ab0e3c4af5  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.defaultinitializable/lwg3149.cc
! 5850d751bb9419c49eaf921786c804cd  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.derived/1.cc
! c01aa31ed14610517e2e2df6c2195579  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.destructible/1.cc
! 4ea58f361fdc6fdf2f8f34830584c80c  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.moveconstructible/1.cc
! 4d27bf9b77a4c235b2a7b7b700c824e5  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.same/1.cc
! 586cb6c2a4b622cd3ccef89f39aa9d2e  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.swappable/swap.cc
! 5de54d25f6dfaebd2f3aa637a7549efa  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.swappable/swappable.cc
! f10399a56a7080179588bfdfb39111ad  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.swappable/swappable_with.cc
! 4b39206fadfcf77ab68c6ddd601f074d  libstdc++-v3/testsuite/std/concepts/concepts.object/copyable.cc
! a757f776e3a7966e60b82fd64a6d589f  libstdc++-v3/testsuite/std/concepts/concepts.object/movable.cc
! e9176cf2a649d94a4c9335b88f1bf447  libstdc++-v3/testsuite/std/concepts/concepts.object/regular.cc
! d7e514b6d9b4dea86a4d67d41736b64c  libstdc++-v3/testsuite/std/concepts/concepts.object/semiregular.cc
! e669a5c413fc4e39c5a1f3b5c2acd755  libstdc++-v3/testsuite/std/ranges/access/begin.cc
! b914c0274ea838dbb02cdd4cede6c4f8  libstdc++-v3/testsuite/std/ranges/access/begin_neg.cc
! 1fbae645e2d800313e60d31aa96c7a93  libstdc++-v3/testsuite/std/ranges/access/cbegin.cc
! a064f286bb72c64d2f0b11bc19c4bd81  libstdc++-v3/testsuite/std/ranges/access/cdata.cc
! 7d9ed06a4a2c0bf86a18186ce5d5a097  libstdc++-v3/testsuite/std/ranges/access/cend.cc
! f36b28257e0ea1d2e828488bff1ef5db  libstdc++-v3/testsuite/std/ranges/access/crbegin.cc
! 08205a191038504dffd017290e9fb9bb  libstdc++-v3/testsuite/std/ranges/access/crend.cc
! 813f656d997c22d6a8ee2731a00e5a02  libstdc++-v3/testsuite/std/ranges/access/data.cc
! 096bf6c46a093ba6c1d311fd83aff0bf  libstdc++-v3/testsuite/std/ranges/access/empty.cc
! d78c22ddaea678f3b8b83f5fbf2d1bb0  libstdc++-v3/testsuite/std/ranges/access/end.cc
! 63fac7f7ac06457fbdd995032706d076  libstdc++-v3/testsuite/std/ranges/access/end_neg.cc
! 2b02ec5d467a580403dc30999945127a  libstdc++-v3/testsuite/std/ranges/access/rbegin.cc
! d58c653411f44e8e3d4bd567153f555b  libstdc++-v3/testsuite/std/ranges/access/rend.cc
! dc33fb00cd582c622d95d3649f125c88  libstdc++-v3/testsuite/std/ranges/access/size.cc
! 39b75522cec9ff968f0b51592db19594  libstdc++-v3/testsuite/std/ranges/access/size_neg.cc
! 3254d30a0de501c02bcf67fef8896772  libstdc++-v3/testsuite/std/ranges/access/ssize.cc
! 22e72e6e004dd20ee7b5dd1577e40777  libstdc++-v3/testsuite/std/ranges/adaptors/93978.cc
! ef52482617845b0ed21c64040e6b766e  libstdc++-v3/testsuite/std/ranges/adaptors/95322.cc
! 0482f0affa648b7334ca34ce0cc40466  libstdc++-v3/testsuite/std/ranges/adaptors/all.cc
! a4d1f3ed07ae3c4a627dba7f1d049d09  libstdc++-v3/testsuite/std/ranges/adaptors/common.cc
! 769bbc7cd224422519dce519249e703b  libstdc++-v3/testsuite/std/ranges/adaptors/conditionally_borrowed.cc
! a5eca59ad3a505db37a370a792c4b569  libstdc++-v3/testsuite/std/ranges/adaptors/counted.cc
! f34438af4cd4cb8233c9bc8e4ead8e98  libstdc++-v3/testsuite/std/ranges/adaptors/drop.cc
! 388c77d8d530897650c1d9b9c5e2f2e7  libstdc++-v3/testsuite/std/ranges/adaptors/drop_while.cc
! ec82a980a03da6ab01e26e95b6b8d22c  libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc
! 422b7c7dcad00cde0852203edf42aaa3  libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc
! 7ec52994a03c59698174c97fa78c66ac  libstdc++-v3/testsuite/std/ranges/adaptors/join.cc
! aa13eee6ba501f263a3160f55ab522db  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3286.cc
! b214eeca1323d25665dd69499f5b8bbc  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3313_neg.cc
! b4f233ae889b1a6c5cc26257b09ea2a7  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3325_neg.cc
! 26c244b6d33be18fb0ee1cec2c007184  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3406.cc
! 6c8925a436d06c920979a0b442d03bc8  libstdc++-v3/testsuite/std/ranges/adaptors/reverse.cc
! ffaa4cf8ed2d39a0b69860d866d41bad  libstdc++-v3/testsuite/std/ranges/adaptors/split.cc
! c529955e223cca2a1a094d892599c2c3  libstdc++-v3/testsuite/std/ranges/adaptors/split_neg.cc
! 47715759a956f9752c1a132d474acde9  libstdc++-v3/testsuite/std/ranges/adaptors/take.cc
! 3672331a4b65a1ec9658a7f9c10dd0df  libstdc++-v3/testsuite/std/ranges/adaptors/take_while.cc
! 20fafdd88a1a8eb9862e3c80db9b79e0  libstdc++-v3/testsuite/std/ranges/adaptors/transform.cc
! 60ec93e1146567f207bd2bb22fd68e82  libstdc++-v3/testsuite/std/ranges/empty_view.cc
! 8787306659e5f072a58219a2a5f9668c  libstdc++-v3/testsuite/std/ranges/headers/ranges/synopsis.cc
! 3f9b315b6bd0a3b4c9f85917ea036dfb  libstdc++-v3/testsuite/std/ranges/iota/93267.cc
! b05e7f4b424a4b81c290352301eaf078  libstdc++-v3/testsuite/std/ranges/iota/96042.cc
! dc5dad9ddcd47b0722c64fd6188c8895  libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc
! e29b189a9133430a1874afdc34808c26  libstdc++-v3/testsuite/std/ranges/iota/iterator.cc
! 7345a3dc8cb9da2b2e26d9edb44dbfa4  libstdc++-v3/testsuite/std/ranges/iota/lwg3292_neg.cc
! 8d8e3eb5f08d2b84159861294c9ec4b6  libstdc++-v3/testsuite/std/ranges/iota/size.cc
! 8811b14439d0019ac7ef728e6ad66faf  libstdc++-v3/testsuite/std/ranges/istream_view.cc
! 411f4f259b2815e49bcd31fac63fe020  libstdc++-v3/testsuite/std/ranges/range.cc
! 611f120f9b18a09ab8b2e78fa3ba9ef2  libstdc++-v3/testsuite/std/ranges/refinements.cc
! 8ef3ca45217d902b9162717de706dd0a  libstdc++-v3/testsuite/std/ranges/safe_range.cc
! 1dcec8b2ea1e45df2a64e0b539490fbe  libstdc++-v3/testsuite/std/ranges/safe_range_types.cc
! 0cfd518c1ea789b381babf48ba87bbdc  libstdc++-v3/testsuite/std/ranges/single_view.cc
! 8a3bc76ad2e10ea103445876cf99f0ea  libstdc++-v3/testsuite/std/ranges/sized.cc
! efaf2202d6b2d3f0be93e38c4b9f3cab  libstdc++-v3/testsuite/std/ranges/subrange/96042.cc
! c47bae36382ab6b2977bf7a7a89ad02e  libstdc++-v3/testsuite/std/ranges/subrange/lwg3282_neg.cc
! a001429cc75f99af68b5fb8d03a383cf  libstdc++-v3/testsuite/std/ranges/subrange/lwg3286.cc
! c5a935dae00aaf011e3dd35c5c3e93ed  libstdc++-v3/testsuite/std/ranges/subrange/lwg3433.cc
! 2f7779ae562486877e7bd9bef4cc5c2a  libstdc++-v3/testsuite/std/ranges/subrange/tuple_like.cc
! de0128e2668dcb49bb287b52062cf612  libstdc++-v3/testsuite/std/ranges/view.cc
! 3d0cd474f0f2100fefeb306ce125ab29  libstdc++-v3/testsuite/std/time/clock/file/members.cc
! 0681ec20cbabd3e58c9777e93c21512d  libstdc++-v3/testsuite/std/time/clock/file/overview.cc
! 96482484a5950a3ec9e7e984d4895c8e  libstdc++-v3/testsuite/std/time/syn_c++20.cc
! 37d897f36b32ed749a8f5cbb326bee94  libstdc++-v3/testsuite/std/time/traits/is_clock.cc
! 2448507b48c6bf3b9e624c70c6cc4198  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/1.cc
! 2a768b1d676196f25f2256130203ad56  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared.cc
! 517dc457ac04d3a03e5d6760416a94fe  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared2.cc
! 1bb9b3d95cc653f081946223c5a75c52  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared3.cc
! 76b16b63f570a0efee86e796b69531fe  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/requirements/explicit_instantiation/1.cc
! a1f3750867293a95fbbcfc917883dda6  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/shared.cc
! d7b4feff09254c6556fbf8ba49ff3d5e  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/still_shared.cc
! a360a7ad4b57a700b41a77a9ee7e8ac1  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/functional/synopsis.cc
! c93e74eb3377b3e716f51fdb0cd4823e  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/memory/synopsis.cc
! d47b74b91b365bd845b213b0410052ef  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/memory/types_std_tr1.cc
! 7b91365db11e6760bc9953e2f6d182d0  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/assign.cc
! 374c969b812d23b04c1af69460439a7f  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr.cc
! 9a6a405569146de667482f25f9b2ebb3  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr_neg.cc
! 2f14f60e009cb307d7275aedd5cbb48c  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr_rvalue_neg.cc
! 1ed41ef4c07a59973ffe75ffd6d6906f  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/dr541.cc
! ae22047802599fa286a4a93b4f677ee8  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/shared_ptr.cc
! 8f55d07d1df1cff4bb08c036e9781e99  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/shared_ptr_neg.cc
! 76d6cf8c51fc568d087cd23949f57245  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/casts/1.cc
! 95887e6e2ef348734adf65797f9e0a5e  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/comparison/cmp.cc
! e3a177e3b0f913eacf017e5f476312d3  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/39405.cc
! 9f72313c703f4e65c6919843fa97b345  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc
! 5fee78d263951d33f38c2047dac26ecf  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/auto_ptr.cc
! b80242f32996cba8efae88fa1004ab69  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/auto_ptr_neg.cc
! f2547f5cbbd176457b927633698acfcb  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/copy.cc
! a00e108bed39ec69d7aa50b86224e637  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/default.cc
! f692a116d7366e639ba0e3692f76aa0e  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/pointer.cc
! 962829831bca4b17c76ccef6b62b98b4  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/weak_ptr.cc
! 3091c94b65ce6cb52263ec6417eec456  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/weak_ptr_expired.cc
! dab50beda4749143594c3e2544ca2a6b  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/dest/dest.cc
! ece41ce06e7f471f88ea68f36d541cf4  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/24595.cc
! 2c4c50adac9a528d53dce47fe02fba31  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/42019.cc
! 9ea0f7290a6dd41e9387f7f2887d414b  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/io.cc
! 67a972ee244fcadec4fde89a17b41595  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/swap.cc
! 854a04052a54eed6ae65544f9b4d32a1  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/24805.cc
! c1ba8f2ceb4e73c38b2b1a9a85f9c8dd  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/reset.cc
! 5753faac2ef74af8bcb682dfa9fc5796  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/reset_neg.cc
! c2c666f4a9d403e2e8f4952c7a06214b  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/swap.cc
! 9cdcd4915961267b64120d32421b1ac1  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/swap_neg.cc
! 174b3ecd37be2e17148cb723294a2fb2  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/bool_conv.cc
! fba61d4831fb6ae22faedf046359c4ac  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/get.cc
! 9ac5c588cf78efe5ab67db9b8d4a45e5  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/unique.cc
! 4885cff617b54f40072199ed05673217  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/use_count.cc
! f427cac87f9dfd8b5339e909ff48aa27  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/requirements/explicit_instantiation/1.cc
! 7eb90b50b82a144c1b91c05779231e43  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/requirements/explicit_instantiation/2.cc
! 7376ff3807871710f4b722d2953d62a6  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/thread/default_weaktoshared.cc
! b318f0a63ca20c34b380906edcde3ddf  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/thread/mutex_weaktoshared.cc
! 4c0a664c0102362b7d800043017c1716  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/lock/1.cc
! c2333d36115cd039a0d49d7e7f853f5c  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/requirements/explicit_instantiation/1.cc
! 13e66031a07d8e39a7a48f947eae7a0d  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/requirements/explicit_instantiation/2.cc
! d3de425bb8e82f98772c99682b1719af  libstdc++-v3/testsuite/tr1/3_function_objects/bind/all_bound.cc
! 3266ebe839d9601662eede12a5f2e7ef  libstdc++-v3/testsuite/tr1/3_function_objects/bind/cv_quals.cc
! 0f7b1e6ae79390f12143f5f3ed0c3e82  libstdc++-v3/testsuite/tr1/3_function_objects/bind/mixed.cc
! acd06cb0ad41e371b8ed043b942c64ec  libstdc++-v3/testsuite/tr1/3_function_objects/bind/nested.cc
! 42567d2738dc71f8f56d7869eb270b65  libstdc++-v3/testsuite/tr1/3_function_objects/bind/placeholders.cc
! 7654f9436521a84b4f61d6a7852eb331  libstdc++-v3/testsuite/tr1/3_function_objects/bind/ref.cc
! 68171baaa0722ed53d7b6c0daf375038  libstdc++-v3/testsuite/tr1/3_function_objects/function/1.cc
! 52d640ba6a420da78e3199a8f43681c7  libstdc++-v3/testsuite/tr1/3_function_objects/function/10.cc
! 62ba48d82531021a21b389b1ee1dcc03  libstdc++-v3/testsuite/tr1/3_function_objects/function/2.cc
! 9118f7cb510556428d2d012c44c17d0e  libstdc++-v3/testsuite/tr1/3_function_objects/function/3.cc
! fc294d546fccd3046165b81aab952628  libstdc++-v3/testsuite/tr1/3_function_objects/function/4.cc
! 592b6acced4b5b2fc53ea4f054ad39f9  libstdc++-v3/testsuite/tr1/3_function_objects/function/5.cc
! b58544d12e6aa5a95b3fa8ee6b79a7b3  libstdc++-v3/testsuite/tr1/3_function_objects/function/6.cc
! 8da74a546ff4edae7f47493c34ff0201  libstdc++-v3/testsuite/tr1/3_function_objects/function/63840.cc
! 13cafcffa2bc81023cc958641ca83050  libstdc++-v3/testsuite/tr1/3_function_objects/function/7.cc
! 7dd45abeef7e9c836640098de82c2ecb  libstdc++-v3/testsuite/tr1/3_function_objects/function/8.cc
! 71c9d90e87ff5dedf74e6c688c859f5d  libstdc++-v3/testsuite/tr1/3_function_objects/function/9.cc
! b4fb2d1c585dd1c2b5f9b019bfdd5e8c  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/synopsis.cc
! 867df4cad8adb37eb46f24fb67024caa  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/types_std_tr1.cc
! e766ea3e3f3992e27bc387589d535adf  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/using_namespace_std_tr1_placeholders.cc
! 285abb0dc3650dcd4fffb086639feaad  libstdc++-v3/testsuite/tr1/3_function_objects/mem_fn.cc
! 0f46505fdd1265125476b21bb98bf01e  libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc
! 5612b8186fa1178cf45bdc5e7b04b4ef  libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc
! abef6fd383e0a0a991461066b67b27a8  libstdc++-v3/testsuite/tr1/3_function_objects/result_of.cc
! c19351a89c6e6a90ba692a54526f4265  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_const/requirements/explicit_instantiation.cc
! 4a7505160137b59d67d30814a1d39e47  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_const/value.cc
! 45990053684af714cbb2a5de45059f80  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_cv/requirements/explicit_instantiation.cc
! 009e2591b167fd44a2de3bae68434cb5  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_cv/value.cc
! ef26d79c1896c18a5c079c7740434d67  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_pointer/requirements/explicit_instantiation.cc
! a9b51318f6fbe7497346385901f9f49f  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_pointer/value.cc
! 08745b14ce4e4a1f54a5ba3863254d7c  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_reference/requirements/explicit_instantiation.cc
! da733a17c1aea02aea727bec8bc8c139  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_reference/value.cc
! 6e32b5d926c51141659c430d15caf195  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_volatile/requirements/explicit_instantiation.cc
! 743a6671c6f86e77d46ecfb3053ffbd0  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_volatile/value.cc
! 72ba85df77b59c4ff110a78d6d25e66f  libstdc++-v3/testsuite/tr1/4_metaprogramming/aligned_storage/requirements/explicit_instantiation.cc
! 08bfbdd212e3510edee8694f35f92020  libstdc++-v3/testsuite/tr1/4_metaprogramming/aligned_storage/value.cc
! dd9d10c9f3fca81a5f5ebbbb55aa423c  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/requirements/explicit_instantiation.cc
! 183935b074ace8122ec68996ed029922  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/requirements/typedefs.cc
! 03b85ca01836cb7407308b5242ee6a50  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/value.cc
! 360f4da2464169c0451e004c65d2ea77  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/requirements/explicit_instantiation.cc
! 8f8ea4f587d2fb7d6fdb0408355a62fb  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/requirements/typedefs.cc
! f428ace2ff498bac556b74b8447a3f5e  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/value.cc
! b6dfcd8e7d7cd887b93ba2ac1f3d1239  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/requirements/explicit_instantiation.cc
! cdb923e9e92679b17888f9296a1ac518  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/requirements/typedefs.cc
! 552420021862f61d7d61c78fc367e805  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/value.cc
! 52cdd1492cffa4a2dafdc0e68b3d46dc  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/requirements/explicit_instantiation.cc
! f85300b5c6b2ffe2a6b045b0cde3a743  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/requirements/typedefs.cc
! 7a9794d89feaeec7008d0cf99e4f7407  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/value.cc
! 2f52f93e13a9f9e2c3b067ec4e6c7470  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/requirements/explicit_instantiation.cc
! 78e4d7f851fa038e772745ff89988aad  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/requirements/typedefs.cc
! 6946c2fb08116bb146229d90dac9ba59  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/value.cc
! 902728a4961e4bb9da7e20ce45941d58  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/requirements/explicit_instantiation.cc
! 51aaaad142bb2939c5f241ad61454d8e  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/requirements/typedefs.cc
! 274fa2591475741f3820e7c7315651ad  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/value.cc
! f786a5b7102ce38bb63a94f3716279bf  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/requirements/explicit_instantiation.cc
! 7f3f980e638576f783861ea59ab0ae93  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/requirements/typedefs.cc
! 7aa77c72b802e70e98f9388c4772a672  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/value.cc
! 5f8e4ef6fb68fa836e2221363b92d845  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/requirements/explicit_instantiation.cc
! aec8d2fa8dfeac425e3e4a4278b55385  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/requirements/typedefs.cc
! a5039ab9020bdd1e7536e5a1bc497e6f  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/value.cc
! 3ccd7f46c647295cc63ef915baf714ed  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/requirements/explicit_instantiation.cc
! ec3b7a742d76b890b8777a97d246705f  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/requirements/typedefs.cc
! 500bc0b297e7f096c6e56391cd8d33a6  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/value.cc
! ca5eac53494b0b973d8ac39c07bd2f81  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/requirements/explicit_instantiation.cc
! a83a55d146634e0443801384960b3b36  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/requirements/typedefs.cc
! 1d18f007d83ddd11c68bc68f9efc81e8  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/value.cc
! a5d59e2d366a8b4e51ab62496cdbe69d  libstdc++-v3/testsuite/tr1/4_metaprogramming/headers/type_traits/synopsis.cc
! 6bc0e997cf1e84038680a630615963fb  libstdc++-v3/testsuite/tr1/4_metaprogramming/headers/type_traits/types_std_tr1.cc
! b92b37e69bce799cadb9beb1574dbb15  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/explicit_instantiation.cc
! 9b59ab4194b70435fb726c2782e1b33a  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/typedefs.cc
! eb4689425f686c6f0d6b6a4846efd719  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/static_definition.cc
! 2ac1195de116c2e50657f8a5e531e75d  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/true_false_type_typedefs.cc
! 42eef7dece677944ebd42334acc64273  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/true_false_value.cc
! 85db6e48520a43d84cc8445cbddfca9f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/requirements/explicit_instantiation.cc
! 791e88995effe007ac277ddc9fb5e3b8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/requirements/typedefs.cc
! 14d27676fc5834ff913f15ee81083d84  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/value.cc
! ec22bbe457927b8827c64df3938f62f8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/requirements/explicit_instantiation.cc
! afef4a0f18fa110e9ace74384ac9dbc8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/requirements/typedefs.cc
! 3892931c39baf10ce8595402fd71f260  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/value.cc
! 1f6508f1ea11f8af4f03dcf49b0a1943  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/requirements/explicit_instantiation.cc
! 7476e145d96b85646384720c74033037  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/requirements/typedefs.cc
! b8d00f58ff341c706e444cd6c22879fe  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/value.cc
! 424c227462caea1242d3b17084561543  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/requirements/explicit_instantiation.cc
! c6bb74dd2309a465ac0f534e02efd79b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/requirements/typedefs.cc
! a5cd0bca04e235e42ebe7fd35b29ab38  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/value.cc
! da40c208c5bda4c0be8e899760e67747  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/requirements/explicit_instantiation.cc
! aeac2055d011b0fbbd25b484cd1505d6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/requirements/typedefs.cc
! beff891ad396f13bffa035a0232b955a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/value.cc
! 0ee9fb7f3e2ca6ecfa4b18df8b26dc48  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/requirements/explicit_instantiation.cc
! 75bf7ba653422866025202dc25d1bccf  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/requirements/typedefs.cc
! 0ffe2e4ef37ae8bc03f1d5299b5bba11  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/value.cc
! c58e36690f4084fff74b7fad0fb8741d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/requirements/explicit_instantiation.cc
! 6c2c50a609f3307a8b0f3dfdbe3a2b9d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/requirements/typedefs.cc
! 4c44244e10db21e45eb26792f6275ded  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/value.cc
! 23c5bdf0946b71bcaa73a9e797e2bc0d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/requirements/explicit_instantiation.cc
! e6836faaa7d48a5dd94fa599ecaf470a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/requirements/typedefs.cc
! 343c51d5ef3fc8829e7d9dd14a65c468  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/value.cc
! 9a6d6e96fcc07ccd00e26eff20017021  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/requirements/explicit_instantiation.cc
! d8958e70cd34643300fe5b7347c45193  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/requirements/typedefs.cc
! 5dca3b22bd377805fdc2ead7e11e910a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/value.cc
! 7ac0207ac58a65af2b6b1602fec9636d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/24808.cc
! 99b8d10d46fb716958f169e42bc2dc9c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/requirements/explicit_instantiation.cc
! 11aec48a986137e1449e69d45db64e7f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/requirements/typedefs.cc
! 3e745740044fe7b702be5ba05849e730  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/value.cc
! 8197b1e2c1abad1a88f54924388f4bcb  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/requirements/explicit_instantiation.cc
! 2eba8cb023aa260ba76f531c561bccbd  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/requirements/typedefs.cc
! 4f2f76afcbd8879e2ffa9efbeb647d7b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/value.cc
! efbcd5a767a3778e455bc2d30dfa2f80  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/24808.cc
! e65ab600820019c7cb952e421d1c96c5  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/35637.cc
! 3c9f91a7ac23d061c8e5af9ab85f13d1  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/requirements/explicit_instantiation.cc
! c2f6de67fa04dade9d6aec7195d45091  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/requirements/typedefs.cc
! 0ae46adb73d6447a23367b4bb36d30bf  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/value.cc
! 99c0b1983f20011fd0f073a6b4b86852  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/requirements/explicit_instantiation.cc
! 7e8b9149544581ae9941d6cf17b9e683  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/requirements/typedefs.cc
! 387e3a3f0aa31a5950c8aef89917122c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/value.cc
! 539beb108b9bdac5a66787e08df6b39c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/requirements/explicit_instantiation.cc
! 20a52c444b1f63463e1240e478de30d3  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/requirements/typedefs.cc
! 4192bb8c2e070091cd0620c916422275  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/value.cc
! a3f51baef6dee397a56b417e647cabb8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/requirements/explicit_instantiation.cc
! 383a305e0bdcb1f2884d10aeb04630e2  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/requirements/typedefs.cc
! 323e9398766a22baf3418c0706832144  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/value.cc
! f14a1c06b4ecee7400f0ba7afef50474  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/requirements/explicit_instantiation.cc
! c4ed083d5ae1bc968b95a75493569504  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/requirements/typedefs.cc
! 0af5657e2eea81ab091cc59b7df34775  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/value.cc
! 057786f964e56054ccba964b45547fe6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/requirements/explicit_instantiation.cc
! 3cfadbc7ff680fce30500c7029e48457  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/requirements/typedefs.cc
! 510d768908bb110e09d4c27b40c69b34  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/value.cc
! 74dc2617ea239fcf111a6c1946716cee  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/24808.cc
! d67e50562139f267390fd8f6b1c3ed62  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/requirements/explicit_instantiation.cc
! 655350e4fb7cb916bf767bcb0a44d471  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/requirements/typedefs.cc
! 93f58375b7e92edfd3bb27c506867ed7  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/value.cc
! f8cd9e27a4531c82f1983ea33b94c0f8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/requirements/explicit_instantiation.cc
! 3849af13c6b19cfd6318740af716e071  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/requirements/typedefs.cc
! e35c5ab6da8abadbb693acba3d36f9d7  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/value.cc
! ffbea0fa6246be107a78fd6d8e871379  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/requirements/explicit_instantiation.cc
! f00d339efb1593797a6d953968c23422  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/requirements/typedefs.cc
! 655085088a9c9b563a3fff4d49093b46  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/value.cc
! 322b33c9c72a2dbadf12f6130195f51c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/24809.cc
! cde17a11a2f5b5fd277160c60834edf5  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/requirements/explicit_instantiation.cc
! 521f27a0dd0c874b3027c72976fb62ef  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/requirements/typedefs.cc
! 84bb204b62ca41fd70f030cc45428bca  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/value.cc
! 1439e6f6463454e991e61a233688088a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/requirements/explicit_instantiation.cc
! ee2a79f1c2adae303e62e5b107728da1  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/requirements/typedefs.cc
! a00a084cb6f0b6a8001bc74feb9890da  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/value.cc
! cdc4d12c58919d1fa3e337c3f7ef6670  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/requirements/explicit_instantiation.cc
! 84988b1abac2e1d6ae88e0790b721198  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/requirements/typedefs.cc
! 11444124cd1dbf33851dace2f4d0ffaa  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/value.cc
! f06d827f0f843dc5833882fe5c13a19c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/requirements/explicit_instantiation.cc
! 4c68dc3e93fcf682e6059aaad10db817  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/requirements/typedefs.cc
! 6a3c41fdf18a13b8f4ba43fbec1ecb76  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/value.cc
! 8ac5c9ce618ba2831d70206a6985992f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/requirements/explicit_instantiation.cc
! 619c3027461c72c37ff911ef22e0baf5  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/requirements/typedefs.cc
! 5f5f7c3e7a9e4755c3889794f582cc38  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/value.cc
! a85278c40a9cfb7e04aec003b64af255  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/requirements/explicit_instantiation.cc
! f51cf7b5b2990a3043cae3ab65378569  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/requirements/typedefs.cc
! 67c1c4b4d1cc8714dcdfe26f1f9c18d0  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/value.cc
! a356ab4d8d0d0c51fc5e57d742fb3611  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/requirements/explicit_instantiation.cc
! 9c038ebbda9761369b225e07b3a03fc7  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/requirements/typedefs.cc
! 273474c5f3bfd441223c374266dbd97d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/value.cc
! 5b66495408e9139d4f125f244d9ff735  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/requirements/explicit_instantiation.cc
! 8cdb27e14579c5f49123ce0d643acfcd  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/requirements/typedefs.cc
! fec0a9bc10659bda6bd09abd38e9154f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/value.cc
! 6bf4876ffc7b629a24715423e72fb5ff  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/requirements/explicit_instantiation.cc
! e777e38172c78d8d844c9962bd3ceece  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/requirements/typedefs.cc
! 87cee9c458e62af5a3eabf78c635e5b6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/value.cc
! 51a077b876ee6c9265fafffdf3b26823  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/requirements/explicit_instantiation.cc
! 2814c1bae00e77ae04ef53e428d2ebf1  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/requirements/typedefs.cc
! ba3e7ecb47e39c44dc3552d74d05f7b7  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/value.cc
! 5f763a3c3972d029ee4ee0d8b8235c17  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_all_extents/requirements/explicit_instantiation.cc
! a02558e776291a2067a22a8a116135b0  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_all_extents/value.cc
! e474b80b16194b35bddebacc31c44585  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_const/requirements/explicit_instantiation.cc
! c4eada74d2c98a2061afe30dde4ffe6c  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_const/value.cc
! bc49c508b2b627cd835057987bc180c7  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_cv/requirements/explicit_instantiation.cc
! 920e3e422baab43b9622fea4f89bfa97  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_cv/value.cc
! c43a3cd2d9d458125f91b45349e25b9f  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_extent/requirements/explicit_instantiation.cc
! 81e11e06a4780b4b6820ec1c6add63c3  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_extent/value.cc
! ba08a601dd1ecfdc2d892b544d67846e  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_pointer/requirements/explicit_instantiation.cc
! 56f7657033b9166b9924f98676ad2a5b  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_pointer/value.cc
! 34ab8e181fe063837cceb5025adb4b8c  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_reference/requirements/explicit_instantiation.cc
! 8137253108b4882caf35e6b2e2310c41  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_reference/value.cc
! 93980a63615680bb8b096aa6f6ca4b9e  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_volatile/requirements/explicit_instantiation.cc
! e031a5674563bebd6b5c1ec5775a9799  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_volatile/value.cc
! 01e02b37cc064b1e15c5456464605110  libstdc++-v3/testsuite/tr1/5_numerical_facilities/headers/random/synopsis.cc
! 3165602ae9936119de611d8ba7e00c4d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/headers/random/types_std_tr1.cc
! 3fab39a2ec67d04f3c7e2196bfb5628a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/bernoulli_distribution/requirements/typedefs.cc
! 4306265338e5ae2ed655cfd50cf681c3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/binomial_distribution/requirements/typedefs.cc
! 31f76543d3841904535b20a7f742dcf2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/equal.cc
! edd6ae9ff16deb0f3e3ed90fd1edc07d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/not_equal.cc
! 7e2b02b0ec64ec25ea6c7f31d4565537  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/serialize.cc
! 3e956d882f0acffde638bd4d7d58a12a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/requirements/constants.cc
! 015803c2f22994f3566056a639267b43  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/requirements/typedefs.cc
! 18d0fb91e1cbf2581868ae3b452d7524  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/exponential_distribution/requirements/typedefs.cc
! 234966b7b5a4100f832081f8907dee40  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/gamma_distribution/requirements/typedefs.cc
! 480767e5b5b2c1d3f8b35e269c164883  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/geometric_distribution/requirements/typedefs.cc
! afa8323b4b9159404263fe7b522e8375  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/default.cc
! 040e28c9fc651b6f6db4d405ad1d28fe  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/gen1.cc
! 8d7c480c4849afc56184988a23f717a0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/seed1.cc
! f49557d2b8ea1aa1043e9d0d21e7514c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/seed2.cc
! 04fa843ea84b94bc0b9c5d8a161c68cd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/equal.cc
! bb37c730d1715474f21205499cfd5103  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/not_equal.cc
! a76cdca0729a8e45260d7185b136b011  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/serialize.cc
! ff365a2c64f6e28f7102095ca56eca42  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/constants.cc
! 81c1f36cf67756b4b126622d7e293310  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc
! 231191a7c1be3113a98ec9c39760264c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/typedefs.cc
! 7c40f1fce08cd80d4863b45284b23875  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/default.cc
! 21f3f36090cbc05829d458d65f0e35ce  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/gen1.cc
! 2139014c8c04112fa933f7c88476a56c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/seed1.cc
! 744770b7f4a0600d36bfa024f5341b6f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/seed2.cc
! e650837df4abdee7bade5d269e6767b2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/equal.cc
! 0f9e052ed279f8973147cc15db7ea369  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/not_equal.cc
! bd53a4891ccded37cdcf8b0636b7a4ba  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/serialize.cc
! 95c3b43c704af3d728be6630cd870fd0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/requirements/constants.cc
! df31dd7068f095d625cf3fe76271ed4d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/requirements/typedefs.cc
! d637fc18a945fbabe95adff608272f75  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/minstd_rand.cc
! f6a75aa15ae5dc19c9d3771f0ba54b4c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/minstd_rand0.cc
! e098509dc2f93d9838df260b9c07f8c1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mt19937.cc
! 57e6149a4f85fc88b20b73490d50f5e3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/normal_distribution/requirements/typedefs.cc
! 8b37a192cfdbe8ab9920bceb95a3ebde  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/poisson_distribution/requirements/typedefs.cc
! 53e212c05487b19c5faccb7b92cb8b06  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/cons/default.cc
! c68f025035afb4bfd4e6274eab3d406c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/cons/token.cc
! 8e6322043d9dced9449171daf08cc39d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/requirements/typedefs.cc
! 0be69f5ac7da38aeb280a8ba8f2b075c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux3.cc
! aabe1afdb4e3421544ef58d5c7e00769  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux3_01.cc
! 3bf488abc166b82ee90c9a06649611b8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux4.cc
! aff4af5d549f5d80637b8abfc8ebf887  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux4_01.cc
! ad930c9e7a92d70b2dd0824d886f7ba4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/default.cc
! 564482f087ced0568759bc4a4729cfcb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/gen1.cc
! 51aa34b3a122e53ff4b33eac07ba4b63  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/seed1.cc
! f9ffd528e2d45ede0573f66d62aa162d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/seed2.cc
! bdc7ce7f5086c8885d776bcb36bcded1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/equal.cc
! e67406f5775f85b73f6b6ef3a1a28b5b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/not_equal.cc
! e005d3b3f171eebd3d88d1890cbf1def  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/serialize.cc
! 636be4f43cf9715fcdb5df3eeec641f1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/requirements/constants.cc
! b454412651c42e64345b1c982397183a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/requirements/typedefs.cc
! d8aee75316f97f0cd6465c53b437169c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/default.cc
! 739e0548a252516a1bf4d76656a20eaa  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/gen1.cc
! 1bb97ed3fbbde890e7468ce522d97149  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/seed1.cc
! 39a4799453711770caf105ff8fc25cb8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/seed2.cc
! 70651a792c7729884f0cbf7d72e112f4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/equal.cc
! d5906f97457ae250fbf9081330917d38  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/not_equal.cc
! 0ceb0fab513aa295b0c764c4ad1e7f12  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/serialize.cc
! 4713c19130c9ac58e75a2b757ed24686  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/requirements/constants.cc
! bc3a31ade0f427ebc4c566d16fdab71f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/requirements/typedefs.cc
! ae737f7c4aa10a02fb03672613f18ee3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/33128.cc
! bbf2841dc9bd5edd35564bc639dead34  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/cons/default.cc
! bce4cd7fc97a3d0ed42f331a48160234  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/cons/range.cc
! 1c37c0377c2a80a8a9b3941e87a223dc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/requirements/typedefs.cc
! 3e46d1b279ca48486b0d0a11b65d3820  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_real/requirements/typedefs.cc
! 2b69b58a8fffb9870a867e20ec565fb4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/variate_generator/37986.cc
! 93e2b6e6e1bc8079988b33423051d390  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/variate_generator/requirements/typedefs.cc
! 1730d961b6115f1a24949ed7865a3cb1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/cons/default.cc
! f5a07bf80d6e19d3c47694380c58618f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/equal.cc
! a75a988c1a81d5bb6a7fab652b6f889a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/not_equal.cc
! 170c18f6a46df8c17ad5b4d5738412aa  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/serialize.cc
! 95b3c84a03dd311b8beaf407b6fda69c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/requirements/constants.cc
! 8b312e5e70f205ea9ac7513630459d3a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/requirements/typedefs.cc
! 1ca87bbbbae2b57ed7c69d698aa4dba6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_nan.cc
! 695659e7761f84f11fcd3358953dd7ed  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc
! 25c1dfa53a252963ceb6682914915724  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile.cc
! b24c389d1c1d34f775fb89009679c79d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile_2.cc
! a4a49037e7ae2ef6397c38a4cb9f84c6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_nan.cc
! eeb2582a04802195b52092f4cb5598d1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_value.cc
! 0bf5c78a67a79951f3d069dd5307f86f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile.cc
! 98b89db3b7944685f45174ccf2ca8e36  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile_2.cc
! 4c99346f49e3fb4473256a64cf73f8aa  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/pr86655.cc
! 333b6826415789f1c82f3ca72f39d0b5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_nan.cc
! 8f559a73b00de65472202f5f1a26bb3a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_value.cc
! 9b8604abbc6e24d73f6873dd373e559f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile.cc
! 330806c1bfee1d6cd9b252a13019c435  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile_2.cc
! 981e39d9cb7c79f08d57b75d8f042531  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_nan.cc
! a6afd0921f8a4745e644b5aed29faeb7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_value.cc
! aa9726477cd231f7506818d5227faf9f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile.cc
! c4ed9b38b845e093bbe28b38971b1ad4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile_2.cc
! b2e0c613d584fbe1800d0211446b816f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_nan.cc
! 34bbaaf24efe695c0d07f5d001f8eede  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_value.cc
! e677023c576e5c7b06dff02a24ae1049  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile.cc
! 8bb8e7b8893e67e7b89fee35ee46a1f8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile_2.cc
! 7d5fb7fb53ecd03180efc8919844ab56  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_nan.cc
! bd31f305f9e1e503605facac7b8d4037  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc
! 56b86d4adf25c0a852fc69261d73fb3c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile.cc
! 73a6643edf01fce49d9e93b15431c1d5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile_2.cc
  4618aff82312f2efbcdba760637d68b5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/pr66689.cc
! c95608768afc2c41ac37ba01ed9ecd12  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_nan.cc
! 7b4bfea6e31236f8ee89b303eaebd4e6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc
! 5fe66e9f209ee540cfb4a89bd60be8fb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile.cc
! ce6a440289c27c18a6e5e31d14a2e1eb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile_2.cc
! 32679694a20e8810458680a2d66ece48  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile_cxx17.cc
! 86c4673e223c95eb3f0b71da59790c02  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_nan.cc
! 338053334157fe6b6f5f37a37505b2af  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc
! 0e2567c1955ca8a3e6633b5875820ce5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile.cc
! 711d8cb9e9bbf121ca80a2ab4557dd09  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile_2.cc
! 9bb8389f460fce517bb4b4e19943f384  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/pr56216.cc
! 46cdd24f6e6f350b20cc23058b4de11f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_nan.cc
! dedf331649644c96be8c003ec789192b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc
! a6ba6e17c9a6499146b43b53fee63cd1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile.cc
! 9d8210094b3533669954802dc372b48a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile_2.cc
! 2b51bb80cb126792378adf750d81aa35  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/airy.cc
! 2317fbbee4d589fcb724613ea9274299  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_nan.cc
! a87c22dc42b89c5e3d89ae23cb64628f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc
! bd316768a5275e51e54c61a47fdb8fb7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile.cc
! 5c8ae6b2702f89a7b76102598618cfbd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile_2.cc
! 2586edc8a3bbf6b36a56ca55ae8a7235  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_nan.cc
! a53326ade5019099c3a505564efef0f0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc
! 40a7a8bf4e5ca3d752ef9f4f9d86e2ae  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile.cc
! afc19b0459d2718b70d488c748849892  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile_2.cc
! 216c6d6986cd29e6f47213bed29460bd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_nan.cc
! 73f49a935bb7c56672a65c2a1cd45a3b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_value.cc
! 9e353f7e8a97d4f1491180aa1f0d8365  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile.cc
! a1a594098ae05c6464e36cc62d6f6ccf  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile_2.cc
! cf79f35eb7bda3c5bc57d284e217f8da  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_nan.cc
! e60a4977591b91d511d618ec16ea180a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_value.cc
! 66deeebf257df3ec8d5cca0485b3a3bc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile.cc
! eb0b119cf7ed4a57266a2851b7a67c29  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile_2.cc
! df1e85a74153397b6d92ddd374b4aa87  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_nan.cc
! c4f7f78b644f417189a9a3629d07c921  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc
! b465ce86a5e65957f8e3fbb6bcc4fe02  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile.cc
! cc31049f9532f5e53c1c6e01224b80b0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile_2.cc
  b780a349356e83ff98346ea066a7c8c7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/pr66689.cc
! e9a8521a8057f111cfd16dfe6054bb4f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_nan.cc
! 83245428dc8ac73d85800b05b1a6204e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc
! dbbed03bc52d3396f1706fac46a8066b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_pos.cc
! 0c0378052e2be775a4d31af8f7a167a1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile.cc
! 4810bfe6b1d38f0b8fc15d1b2a15aff6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile_2.cc
! 87b01123d5383af74363572f6513692e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc
! 1dc360c78fec10224567ffc2a970dfaa  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_nan.cc
! b7f344dff8545bb631ed74c5d4a37def  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc
! 3ea881dee56121ae1c42ba180a02f6b8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile.cc
! 62f054eae66d1c13acd859ffcfa03e25  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile_2.cc
! d7ce2d09c4ed75f80b6dea2200490a1e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_nan.cc
! 9e4deed5b388b5deda538308c61cb2dc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc
! 42e59e46690c5791036bad5629e4bf82  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile.cc
! da2428323a6ab77217d29eaef27db470  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile_2.cc
! 60af4705c88cb5ad8fbeac38565ce653  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile_cxx17.cc
! 92481098966d711ff97c39a149131e9e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_nan.cc
! 4f1e6c0d7cdf331e372678d3d9db0729  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc
! 9b8efc174cfd11c58b1264984ee2e386  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile.cc
! ca463f972edc44ec664bfb058ed74f33  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile_2.cc
! 282948dd2f5aa4696b704e715db6c6fd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_nan.cc
! 02cc7ee12f93649605154ca1bcd3b1fa  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_value.cc
! c505897395a6848704b9f11bc37d0663  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile.cc
! 0028bee67e32c08591343acfe354e070  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile_2.cc
! 80d09a61d4dd74415e3da587e2618abf  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_nan.cc
! fa96545cc36b40caf06c05e5f197b1cb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_neg.cc
! d994bbbcc628cbe741d4bb178ef7c5d7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_pos.cc
! 0506d9d65e7cb231f39a2f1877d4be54  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile.cc
! 2dc871e8d8e856ba798df828d3cfa821  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile_2.cc
! bdb89bc8f82972cf6c9a42ff66d9a1d3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_nan.cc
! f0f16dbbfb033ed400ed9893c55a714f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc
! d8ed453fbbba7dc1d90e716f21c7f470  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile.cc
! c5901a13b0ce39f5b5da01bee81ae9ad  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile_2.cc
! 7146545e34f9b04c7d4d87fb76b1094a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_nan.cc
! 5cd09b212eb76122ee1d1674ea5f2000  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc
! c0e085ebd0f278f7b89813bbe7078f96  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile.cc
! e823f327deaa90527cbe836f7f058648  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile_2.cc
! 4c166d78310cb811f1e158cc13de87b8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/pr86655.cc
! 7da32d1b9791916569c1895daf93860c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_nan.cc
! d2de8c6cf1fd232931e41ada022c7918  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc
! 991e282b1f3e6b98428e31256814a328  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile.cc
! bb1169f8412a2510025989ec2413a7f2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile_2.cc
! 23e146f8e094ffa226b68393a51e19ea  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/testcase.h
! 4f41d0a6ba2d8d3166246a1a1c10d78e  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/empty.cc
! ed9ffa8e74fc9d7a69a8a4d1755645b9  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/max_size.cc
! c9338a4b5c29aab48e756f383e098d40  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/size.cc
! 53f17696752be47d5760a6c7f714d034  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/equal.cc
! 3e57399d8e5d3949228a0c8a09c57c0f  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/greater.cc
! 51ee2cb137df4fd95aee5933aaf94ca7  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/greater_or_equal.cc
! 3740461bc9bdeb5d81aff174fb0a1bcc  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/less.cc
! d3a5b2fb914190d07e4ba70c560056eb  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/less_or_equal.cc
! df786b697c3e09958839dbd5dd3c9c97  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/not_equal.cc
! 5419ab49f70895aad72c74d7e4e50668  libstdc++-v3/testsuite/tr1/6_containers/array/cons/aggregate_initialization.cc
! a8243b7aa4f458be7f6ec87ab6fb03b1  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/at_out_of_range.cc
! c7e884c87e444d92f0ab8fe02d276837  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/back.cc
! b08c7af256fd8dc7919931a24620d1de  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/data.cc
! 7c79aa149041221f9134379960514dc9  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/front.cc
! c1eab092471c747e5b7b37739682f8e7  libstdc++-v3/testsuite/tr1/6_containers/array/iterators/end_is_one_past.cc
! 5eb9da4df93a2ef8db5cceca0679fcc7  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/assign.cc
! 9297d57bf3e1f345575c391b9ddab1ef  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/contiguous.cc
! ca30a9ffc89912ff26b8bba08049b2a0  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/explicit_instantiation.cc
! 660210e4f9b550d75a04455252e7a396  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/member_swap.cc
! 10ec5496c876225a05f132fb8f2db3b0  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/typedefs.cc
! bd46aaa4928e2a9ba39cc4d18f348aff  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/zero_sized_arrays.cc
! 4fb8f501010a4f13ab08d2b934b36822  libstdc++-v3/testsuite/tr1/6_containers/array/specialized_algorithms/swap.cc
! 7ee5054c833ff1bf43e1313df3398ad1  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/get.cc
! ea23572be4d65563b8cc381efbefbfb9  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/tuple_element.cc
! d056113421ea643cc5213b1bdcd31b31  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/tuple_size.cc
! 9a62a588c37df8d020932341652e29d4  libstdc++-v3/testsuite/tr1/6_containers/hash/24799.cc
! f633efa29b0128ee89f5af22f496839a  libstdc++-v3/testsuite/tr1/6_containers/hash/operators/size_t.cc
! b8aa6821c4b3c3fd7b2a5cd13d48eebb  libstdc++-v3/testsuite/tr1/6_containers/hash/requirements/base_classes.cc
! 5351d3ef0e05119e3bb5835157b7bb01  libstdc++-v3/testsuite/tr1/6_containers/hash/requirements/explicit_instantiation.cc
! 6952ceb06a8d240d14cf860463a95663  libstdc++-v3/testsuite/tr1/6_containers/headers/array/synopsis.cc
! d9460d33f854387c96c7a4e756e28c7f  libstdc++-v3/testsuite/tr1/6_containers/headers/functional/synopsis.cc
! 4b58bcbc35a4594bc96f200bbb59bd69  libstdc++-v3/testsuite/tr1/6_containers/headers/tuple/synopsis.cc
! c5ea886da14d581775d5bf81d7971d6b  libstdc++-v3/testsuite/tr1/6_containers/headers/tuple/types_std_tr1.cc
! 9cef8bc964ad722d59a2359bb3d1f992  libstdc++-v3/testsuite/tr1/6_containers/headers/unordered_map/synopsis.cc
! ca1e77ec313be9ce0247bf3140f9fbfc  libstdc++-v3/testsuite/tr1/6_containers/headers/unordered_set/synopsis.cc
! 43fe45a2263d9e35d1d6f5baf275f65f  libstdc++-v3/testsuite/tr1/6_containers/tuple/comparison_operators/35480_neg.cc
! 342d6327cc1de3905c5aa8ee1168f085  libstdc++-v3/testsuite/tr1/6_containers/tuple/comparison_operators/comparisons.cc
! 518cddc1283ae2987da8df33dd75bf52  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/assignment.cc
! d619657cbf5b0ea1be7336e851d72d78  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/big_tuples.cc
! 73053631a41f71730d94700b2cf1cf79  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/constructor.cc
! 78f6631814079351bafadc85dbe38283  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/23978.cc
! f350084ba0a3ced55a215307c631722b  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/make_tuple.cc
! 15ebabbb42b09dfc76fe986426404126  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/tie.cc
! 8cdbc58c50bfbe5b6e0d990b29eefd52  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/tie2.cc
! c5359a58ce44707b9310f0f6978b153a  libstdc++-v3/testsuite/tr1/6_containers/tuple/element_access/get.cc
! f9cf63c41234a1fdedd5b2e550910829  libstdc++-v3/testsuite/tr1/6_containers/tuple/requirements/explicit_instantiation.cc
! cb2e4d96c1db86c3da1ca8aad30e3563  libstdc++-v3/testsuite/tr1/6_containers/tuple/tuple_element.cc
! 8bc03aaad10aaca46476bfc1cf000a1f  libstdc++-v3/testsuite/tr1/6_containers/tuple/tuple_size.cc
! 6d8d79a485e65fd11b11221b6d398674  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/24064.cc
! f0979d146c58e82fb5bd7d667dfb0ad0  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/capacity/29134-map.cc
! c0b4ec127340ce249c2b916632c13adc  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/erase/1.cc
! 0704bba04033e48f57365008f7a4f84b  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/erase/24061-map.cc
! f78650773199484d37a47a0d1f541111  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/find/map1.cc
! e5ce3a731f5c75b85929be8197c94a19  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/24061-map.cc
! 938d9bff2b02cc63417407824757944f  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/array_syntax.cc
! 6b74e3673cbb606cde4bf3201cce89f7  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/map_range.cc
! 3bff0839a6c1f90f311cbcacec129a99  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/map_single.cc
! 9b843c144e60dfea01953a3d2e25e7d6  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/explicit_instantiation.cc
! b5f7f5e6d730e4d5465bd69065892e94  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/iterator_neg.cc
! b2d78225d0223163f0a237e0aa38fd97  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/iterator_null_neg.cc
! 6fe386cec9d6ea1bb7b52ba58aa156d1  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/typedefs.cc
! 1c09bca77255c67d301e1801d84d5862  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/swap/1.cc
! 8eb70cbbc1856d805261b90856ab03e1  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/swap/2.cc
! af65d2beff3f355cf1a13aeca280b38e  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/capacity/29134-multimap.cc
! 60e0dc9203902b473d12d7c8354d947a  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/erase/1.cc
! 1f63a57f366f4d2e0a7ccfe4549ffcb7  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/erase/24061-multimap.cc
! c8366df3a2ebc62a23f76472ac64d88d  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/find/multimap1.cc
! 0fe653283fa741ae6ee9ccde8688ee32  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/24061-multimap.cc
! 7f133d6d1717ed7dd0645bca4c3fed43  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/multimap_range.cc
! 59c8b79d54a7bb3991ce20ef0f1ac9e9  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/multimap_single.cc
! 17b03f67b2585cb6695c8dfda2b1ac04  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/explicit_instantiation.cc
! 54bf4ee2b1f22245bee5e1b031d677e3  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/iterator_neg.cc
! ccc839337971cf7beab6a5ca3d801a24  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/iterator_null_neg.cc
! a96ac20d324ea0f43ecc8b7f5c6eb14b  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/typedefs.cc
! 08ef37834d32cbe17dc77a62f7d14a3f  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/swap/1.cc
! 0133b7c2e625870222785c950d70ae8a  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/swap/2.cc
! dade3fd39d1469382e30d155564296a1  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/24054.cc
! fc90276707b15169b84ff7b0606f6924  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/capacity/29134-multiset.cc
! 818c3cd68c1dcf3bdb7900be7f0f1274  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/erase/1.cc
! 4f53206a91c6a75cb287899af45e1a10  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/erase/24061-multiset.cc
! 032262fa658eba1264af42bd06526394  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/find/multiset1.cc
! 5f056ce013caca30d1e47690bdf34eb9  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/24061-multiset.cc
! 6225fd4ec8d2711b5b1f0a8942d39e69  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/multiset_range.cc
! 2cf42022b997e2f446558c332b5f2833  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/multiset_single.cc
! 69a9575f0e69c714a95d83ac13bb4061  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/explicit_instantiation.cc
! df313ff60e0a4d8b6dd55324231af32c  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/iterator_neg.cc
! 2f154f7590f71f2c474384e0910effcb  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/iterator_null_neg.cc
! bc2e7fa395378f9698e1d2720881fb04  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/typedefs.cc
! b3cdb41b56fedf293f700f327e1fde40  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/swap/1.cc
! 78cdb8e23a77491a8046e5f9b5046f66  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/swap/2.cc
! 270e5036bb098630f0c99c42ce2e5fcf  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/23053.cc
! fe0074eca82629fb752227363ca6dc79  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/23465.cc
! ff476344372c5571345ea18477cbc2d0  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/26127.cc
! ee14121cd12f4efc7bab912784b59fc1  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/26132.cc
! 74b5cabe53da08fdf38e6df31ab83da8  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/capacity/29134-set.cc
! ad31182281c8077d50c614fcbb2bbfd4  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/erase/1.cc
! 9c1b48bf448d48b531cb87e5deccec47  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/erase/24061-set.cc
! 8f681080b0654810d3249c3f436568dc  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/find/set1.cc
! ecdf9927cba415416d3d053a2d717260  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/24061-set.cc
! d83d60dba50bdc479a79c1e3373638d0  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/set_range.cc
! d3fe429581e1f99740f61ebec02d0945  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/set_single.cc
! af07be20d8fd53e5c9cc3174aa29b8f5  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/explicit_instantiation.cc
! 99c679781359d02a2e16d67fe199438f  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterator_neg.cc
! cea44d6290da4b2a5d52cf4eb141ac58  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterator_null_neg.cc
! ea7a6ba1ee069a155dfa65707389421a  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterators_default_constructor.cc
! 2e6eb314e5210a42b027ba0a33f2e074  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/typedefs.cc
! 7184e499f4549485f98b6a4a8badd327  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/swap/1.cc
! e17539f5e6c4dae52b4edb321cd68807  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/swap/2.cc
! 4903cee4728e31f6b78e76e36f871ad2  libstdc++-v3/testsuite/tr1/6_containers/utility/19535.cc
! 77f5c295b3071d679779c45cd61ab55c  libstdc++-v3/testsuite/tr1/6_containers/utility/pair.cc
! f5022443e3ddad8ee5003170a1d79e8d  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/cstring.cc
! 091f7e730ae746e405e705206c47a41b  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/cstring_op.cc
! faf763525537ee52dec75c5a642c022a  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/pstring.cc
! 5a430ab15083b63fd35823f8d4425f00  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/range.cc
! 636237dfc529719455e4fa4eb28b95bc  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/string.cc
! b74ded8aa0bf66cd1731bb869103a5f6  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/string_op.cc
! 8cf4452afbc7759469ffc41d21204aea  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/cstring.cc
! e303fae1c27fe7d64c25b658ee4205be  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/cstring_op.cc
! 8b1b6de65f9fbbb0235ffc7fe7312cdc  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/pstring.cc
! 0db0cce3b1c42f4f6dbc313b1f1bc995  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/range.cc
! 4cb1dc21bdad1966f580f6e9063958e2  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/string.cc
! add4c8bce4d98752cbfb99e5ef871b6d  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/string_op.cc
! 645655cc96c09327721eb475dd34841a  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/cstring.cc
! fd5ce08d5126f4abac1b09d02b238919  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/default.cc
! fdad6dca0013c07a1a05793eeda104f0  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/pstring.cc
! 1a0a11a2cd8f6d4229ba8951d2644623  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/range.cc
! f59815a1057481d7ee5147fea83eb60b  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/string.cc
! f5f2ce55a8287dd1d1731c8540964998  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/cstring.cc
! 3aed75c44152ac3ab267188ed56586ac  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/default.cc
! ea101956d7da2fbb621c1942c1147fd6  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/pstring.cc
! 92988e20024b7f3f804e29c7813e91de  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/range.cc
! 80eb2bbe1cb0df0cc70dec4327cc02a7  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/string.cc
! cf88ed13d77b29fb7a6b0058a64247a1  libstdc++-v3/testsuite/tr1/7_regular_expressions/match_results/ctors/char/default.cc
! fa0950113294d26f1d33ae688542ef41  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_awk.cc
! c720591b84908a5330167fb1e19d573f  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_basic.cc
! 36d56a61650d760ac5b7010d3eb3568e  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_ecma.cc
! acc1fce5b8f017c8bd4f05761a1ac4fc  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_egrep.cc
! 2b875d22ce489029d7fb416ee701949c  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_grep.cc
! 6627898ab2f739312fc0652d1cd48aab  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/default.cc
! a7a2992fcded21353ba92f6c92220143  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/ctor.cc
! ca9393df4f844caa4a03ec34966032f3  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/translate_nocase.cc
! 0cc70f317cfed05801be6a8628314023  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/value.cc
! b8b3282660f06298aaf5a94eaa527ad9  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/ctor.cc
! 72dfbe75eec1d82a3db26d2fbfc97031  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/translate_nocase.cc
! 0cc70f317cfed05801be6a8628314023  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/value.cc
! 561429ea436087255fff16739c261a23  libstdc++-v3/testsuite/tr1/8_c_compatibility/cctype/functions.cc
! 5d63f5d3a3a27d3e0de862b90e0829d0  libstdc++-v3/testsuite/tr1/8_c_compatibility/cfenv/functions.cc
! 1a609a1c5312f8afb99d5b8821c47837  libstdc++-v3/testsuite/tr1/8_c_compatibility/cfenv/types_std_tr1.cc
! 1310d75aeeed78b7f5c010368b2dd9ac  libstdc++-v3/testsuite/tr1/8_c_compatibility/cinttypes/functions.cc
! 4de5739a4d1a50ace1f4f2f52d66185b  libstdc++-v3/testsuite/tr1/8_c_compatibility/cinttypes/types_std_tr1.cc
! 9b5027eb965e3724ca887330fabff867  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc
! 0a6bc5e22ea8b7158176b7b3790116f4  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/functions.cc
! bd73e8f109387f186a5a29f675260aff  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/overloads.cc
! d0346428a4e7bc1f126c11abefeef05b  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/overloads_neg.cc
! 1afcdbbdb3e6dc5a030f078992775398  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/pow_cmath.cc
! f632d189626629b58200082d98b22e11  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/templates.cc
! 0f0cb200ed8ccb422fd2021dcc64376c  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/types_std_tr1.cc
! 229c6a1b97578877d029f94326f8f323  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc
! 96111f18b889e84438b27f678ccd8b37  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc
! 3f38bf4235c8872e89ce38f2d8be082f  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/functions.cc
! 0cf9475f63e09261a498091aa5da60a3  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/overloads_float.cc
! 43db10d0d2c47b53f02a9e1454dd7536  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/overloads_int.cc
! e792fcd907015582444fc413fbcd953b  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdint/types_std_tr1.cc
! d6f78d17f0390c69f95cf888c252f189  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdio/functions.cc
! 53a54164083aa41a8e342b0c4a4e484f  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc
! c752bb8c7e8c3f7a1efe7f2e5c543f5e  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc
! f11e4accd8ae044af22cdf11adb9ef8f  libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc
! 38aa82be005d32adb47da62fa582cc06  libstdc++-v3/testsuite/tr1/8_c_compatibility/cwctype/functions.cc
! 33047b3d56876afb95d79b773ea1f53e  libstdc++-v3/testsuite/tr1/headers/all.cc
! 94693a3b7f4aa59ff79178b55bde21d7  libstdc++-v3/testsuite/tr1/headers/c++200x/complex.cc
! ce472e5c9bec2280b0a430287824fac9  libstdc++-v3/testsuite/tr1/headers/c++200x/math.cc
! b1bd6473e2a51a0acb835616159b9836  libstdc++-v3/testsuite/tr1/headers/c++200x/using_namespace_std_tr1.cc
! 540c42350b032043292d6a5b95b570c9  libstdc++-v3/testsuite/tr1/headers/using_namespace_std_tr1.cc
! 403999dbb9aba4f9d10f08e982924506  libstdc++-v3/testsuite/tr2/bases/requirements/explicit_instantiation.cc
! e46e14e816ac8c4495144e5778418ecf  libstdc++-v3/testsuite/tr2/bases/requirements/typedefs.cc
! 634643bbdc531f7cd9a920ce510136f0  libstdc++-v3/testsuite/tr2/bases/value.cc
! bdbd1d6156c4d1e3af69f2eff4e5bb26  libstdc++-v3/testsuite/tr2/direct_bases/requirements/explicit_instantiation.cc
! 5c19770a6ff38b0cd5bcffa02e1e7a10  libstdc++-v3/testsuite/tr2/direct_bases/requirements/typedefs.cc
! fa745b5ae2c80ed2ded8b884ba3774cf  libstdc++-v3/testsuite/tr2/direct_bases/value.cc
! 578bbc63e5113f5724f586f9787871e7  libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc
! 45ea8d008afc08017227bea62ab2f38b  libstdc++-v3/testsuite/tr2/dynamic_bitset/cons.cc
! cc03e1cfed992298edb8b84e07dab7c1  libstdc++-v3/testsuite/tr2/dynamic_bitset/copy.cc
! 903bdc740cba79188365ecb8bf7e7e92  libstdc++-v3/testsuite/tr2/dynamic_bitset/move.cc
! 48f422cbcfe465194a6e802c8d8363c4  libstdc++-v3/testsuite/tr2/dynamic_bitset/pr58729.cc
! ed758b163b7d3d1645f9bb3fdb7cb38c  libstdc++-v3/testsuite/tr2/dynamic_bitset/pr87784.cc
! d6c07d2da218e86c67c237f8d39f9c6c  libstdc++-v3/testsuite/tr2/dynamic_bitset/pr92059.cc
! 15a2237be4de2a25174c4655d5b66303  libstdc++-v3/testsuite/tr2/headers/all.cc
! 20a0fce6590dd166f54deca2261bc2e5  libstdc++-v3/testsuite/tr2/headers/using_namespace_std_tr2.cc
! 04624b04ad1868bf5c5d318f2cdf56f7  libstdc++-v3/testsuite/util/common_type/assoc/common_type.hpp
! ecb3cd10c8ac45c3a0ac5689328833cd  libstdc++-v3/testsuite/util/common_type/assoc/detail/comb_hash_fn_string_form.hpp
! 5601b865848c0e3359d2acdc3016b84d  libstdc++-v3/testsuite/util/common_type/assoc/detail/ds_string_form.hpp
! 491de70fbb41b9de3b609c9ae67346d5  libstdc++-v3/testsuite/util/common_type/assoc/detail/list_update_policy_string_form.hpp
! a1308c70a0e93ccdd9e7e5bb0b8ecfa0  libstdc++-v3/testsuite/util/common_type/assoc/detail/probe_fn_string_form.hpp
! 7fc9bc11231488545a27891048f0bec7  libstdc++-v3/testsuite/util/common_type/assoc/detail/resize_policy_string_form.hpp
! 594c3ace6a3c757dec05e558d223cbae  libstdc++-v3/testsuite/util/common_type/assoc/detail/size_policy_string_form.hpp
! 1b60f59c2f7914d12af678f5f936615f  libstdc++-v3/testsuite/util/common_type/assoc/detail/store_hash_string_form.hpp
! fb9aeb32c97a69d4bee93b3672519d92  libstdc++-v3/testsuite/util/common_type/assoc/detail/tree_supports_order_statistics.hpp
! 6f9c3c45f4d74df2ed9d2e2c054c2fd6  libstdc++-v3/testsuite/util/common_type/assoc/detail/trie_supports_order_statistics.hpp
! a007eb67db4044d723c67836ec625005  libstdc++-v3/testsuite/util/common_type/assoc/detail/trie_supports_prefix_search.hpp
! c34a68ac575efdb22f4b04dd7f3a46ca  libstdc++-v3/testsuite/util/common_type/assoc/detail/trigger_policy_string_form.hpp
! b93ea324ee0925c31b3bee6579129356  libstdc++-v3/testsuite/util/common_type/assoc/native_set.hpp
! 9e074a76dfbffec82ed769e48ac79fcb  libstdc++-v3/testsuite/util/common_type/assoc/string_form.hpp
! e026c0a8c2bbd3dd80f6ab4739ad637d  libstdc++-v3/testsuite/util/common_type/assoc/template_policy.hpp
! 45a73d0bc33c5bc95476954f356d9408  libstdc++-v3/testsuite/util/common_type/priority_queue/common_type.hpp
! 3e65f2afc6d963209195977e2a98623a  libstdc++-v3/testsuite/util/common_type/priority_queue/detail/ds_string_form.hpp
! b05146b1740f6f729949ae6c6dbc7abe  libstdc++-v3/testsuite/util/common_type/priority_queue/string_form.hpp
! a286c91fba2f4b4229113da45619aeb0  libstdc++-v3/testsuite/util/debug/checks.h
! 00753612d493ad98d068f965b47eba39  libstdc++-v3/testsuite/util/debug/unordered_checks.h
! 8d2b66a97fa9bd8e718fd075cc20429d  libstdc++-v3/testsuite/util/exception/safety.h
! a30324e7b16d055f0a8885dd794f582d  libstdc++-v3/testsuite/util/hash_fn/dna_str_limit.hpp
! ccb79e627f6f0430b130886ad123cadb  libstdc++-v3/testsuite/util/hash_fn/limit_string_hash_fn.hpp
! f306597f251a2f068625f185fd30ea3e  libstdc++-v3/testsuite/util/hash_fn/string_hash_fn.hpp
! 49e39c515999452b26d76bec80a59278  libstdc++-v3/testsuite/util/hash_fn/string_ranged_hash_fn.hpp
! f34eb65a66cf400bb83317d170863255  libstdc++-v3/testsuite/util/hash_fn/string_ranged_probe_fn.hpp
! a11f8d6a8635b8c56ee287ef75461073  libstdc++-v3/testsuite/util/io/illegal_input_error.hpp
! 0da57893e94dacef078edfba4c721a3b  libstdc++-v3/testsuite/util/io/prog_bar.cc
! 9a09b947c286f28a87a28890eac3a8d0  libstdc++-v3/testsuite/util/io/prog_bar.hpp
! 85f153ecc9e9c5455c1eeb516fa45768  libstdc++-v3/testsuite/util/io/text_populate.hpp
! 463c00307fa5f46101d133eaac8a36bb  libstdc++-v3/testsuite/util/io/verified_cmd_line_input.cc
! f640df871b01352740730b25e99f2c44  libstdc++-v3/testsuite/util/io/verified_cmd_line_input.hpp
! a6acd1312c38cd81ced0f41a56e95485  libstdc++-v3/testsuite/util/io/xml.hpp
! 950e14aa9faabef926dc7e5a6b0d94d8  libstdc++-v3/testsuite/util/io/xml_test_formatter.hpp
! 1ff749c2fb9b1b639ca3f5bbcaa400f8  libstdc++-v3/testsuite/util/native_type/native_hash_map.hpp
! ae710a8ba7ea457a7af6d84814dcbc89  libstdc++-v3/testsuite/util/native_type/native_hash_multimap.hpp
! e4f0c72d309d11af5c7a4796e8ffd800  libstdc++-v3/testsuite/util/native_type/native_hash_set.hpp
! 7c9ef410389c3a0fbe8d187f4b670321  libstdc++-v3/testsuite/util/native_type/native_hash_tag.hpp
! 285697963972ec094380ef4e8b66d650  libstdc++-v3/testsuite/util/native_type/native_map.hpp
! 970c5ea4705bb5b23755245e71587d60  libstdc++-v3/testsuite/util/native_type/native_multimap.hpp
! 131d768c1b3b98e7237b4cec7d7a1a90  libstdc++-v3/testsuite/util/native_type/native_priority_queue.hpp
! f66825229dbf68f8f829c2f466f10aff  libstdc++-v3/testsuite/util/native_type/native_set.hpp
! edb5b459b5e2b5483c5d507b30ea40fb  libstdc++-v3/testsuite/util/native_type/native_tree_tag.hpp
! 2dba2bd3e783771ff229327a0567e71b  libstdc++-v3/testsuite/util/performance/assoc/mem_usage/erase_test.hpp
! f8add64cd20dd7172e267bb33e966185  libstdc++-v3/testsuite/util/performance/assoc/mem_usage/multimap_insert_test.hpp
! fcd33a92c9aed3d349744bce90e70fdd  libstdc++-v3/testsuite/util/performance/assoc/multimap_common_type.hpp
! 4d622156cb5a026b25c8b7e3ba064bfc  libstdc++-v3/testsuite/util/performance/assoc/timing/common_type.hpp
! 877201d7feabede4e0d116fc0e67b441  libstdc++-v3/testsuite/util/performance/assoc/timing/find_test.hpp
! 7cdf2d23bf5cccce5eb6b93a3de778a6  libstdc++-v3/testsuite/util/performance/assoc/timing/insert_test.hpp
! d93b472b2cec04109bf602e8dfe9d09d  libstdc++-v3/testsuite/util/performance/assoc/timing/multimap_find_test.hpp
! a95f4b5dd7269837d13e5c6cbd4357fc  libstdc++-v3/testsuite/util/performance/assoc/timing/multimap_insert_test.hpp
! 4e25e288d2a570d1ff8dff862d8d2e18  libstdc++-v3/testsuite/util/performance/assoc/timing/subscript_find_test.hpp
! cdc29fc22754cfd7e46f0f7fd9764f51  libstdc++-v3/testsuite/util/performance/assoc/timing/subscript_insert_test.hpp
! 60387133a5d71f7102fa48fb614d8252  libstdc++-v3/testsuite/util/performance/assoc/timing/tree_order_statistics_test.hpp
! e338baa42487fd50febe1021b80f6266  libstdc++-v3/testsuite/util/performance/assoc/timing/tree_split_join_test.hpp
! b9cc49e3a6a610ae79f187cfa17651dc  libstdc++-v3/testsuite/util/performance/io/xml_formatter.hpp
! e3863aacf8b8ec733441630f7353c020  libstdc++-v3/testsuite/util/performance/priority_queue/mem_usage/pop_test.hpp
! 31f7b6d67b13bb8a75bb7fd7a54e4322  libstdc++-v3/testsuite/util/performance/priority_queue/timing/join_test.hpp
! 6a7157fe5635723a451b204c873fa03d  libstdc++-v3/testsuite/util/performance/priority_queue/timing/modify_test.hpp
! 1608243cc5bd67caad2ae0c61ffc4c32  libstdc++-v3/testsuite/util/performance/priority_queue/timing/push_pop_test.hpp
! 1bed07628e4c0d7b2fb9af66e50eef20  libstdc++-v3/testsuite/util/performance/priority_queue/timing/push_test.hpp
! 8485fe70de812b25956e03bf87e01078  libstdc++-v3/testsuite/util/performance/time/elapsed_timer.cc
! 59516f1d694489845b3a9f4dce21d3b4  libstdc++-v3/testsuite/util/performance/time/elapsed_timer.hpp
! 3debeddd6877eb785581e43c41e04f9d  libstdc++-v3/testsuite/util/performance/time/timing_test_base.hpp
  f229f005fb6b0edfab2a25224f4aa670  libstdc++-v3/testsuite/util/pstl/pstl_test_config.h
  bf077ecf7f82302a11843d7108c1be3c  libstdc++-v3/testsuite/util/pstl/test_utils.h
! 8da66b6b45a921d02aca1e9579e64b15  libstdc++-v3/testsuite/util/regression/basic_type.hpp
! 97d1cb88aa96ba50adc3adb910a1cb26  libstdc++-v3/testsuite/util/regression/common_type.hpp
! 15429fa4c99d038795101fca86fce630  libstdc++-v3/testsuite/util/regression/rand/assoc/container_rand_regression_test.h
! e60e9001135e8f1b981e40e24e20e815  libstdc++-v3/testsuite/util/regression/rand/assoc/container_rand_regression_test.tcc
! 4cb0107477649850d695e272e83636f2  libstdc++-v3/testsuite/util/regression/rand/assoc/rand_regression_test.hpp
! 739e54ceafac0083f89a7c238581af70  libstdc++-v3/testsuite/util/regression/rand/priority_queue/container_rand_regression_test.h
! 21a1e39ef6e349190dc912c31e97f753  libstdc++-v3/testsuite/util/regression/rand/priority_queue/container_rand_regression_test.tcc
! 42e8f1563b3e1c45a9f8d22c173f6ed5  libstdc++-v3/testsuite/util/regression/rand/priority_queue/rand_regression_test.hpp
! 0a8ae4b3fcc7a90b07c53e070340da77  libstdc++-v3/testsuite/util/regression/rand/xml_formatter.hpp
! 941b09f6299fb34e33dda5fd1f0bfec2  libstdc++-v3/testsuite/util/regression/trait/assoc/get_set_load_trait.hpp
! b7d82b3961a6978b2ea6ad7954849e55  libstdc++-v3/testsuite/util/regression/trait/assoc/get_set_loads_trait.hpp
! f5b51f352fca7059ae2a31a7cc49417e  libstdc++-v3/testsuite/util/regression/trait/assoc/native_type_trait.hpp
! df81bd1d6d9b384fbaffe5d56b8345ee  libstdc++-v3/testsuite/util/regression/trait/assoc/node_update_trait.hpp
! 2f1843c07665997ddfb58c6790711d1c  libstdc++-v3/testsuite/util/regression/trait/assoc/resize_trait.hpp
! d943056de40ebbcf9da15a23fbd897ce  libstdc++-v3/testsuite/util/regression/trait/assoc/to_string.hpp
! 2d4fc171bea4fea9f0c49a5b4a3c7ca3  libstdc++-v3/testsuite/util/regression/trait/assoc/trait.hpp
! 43fd455aa5df62ec37e53e059bd472ab  libstdc++-v3/testsuite/util/regression/trait/assoc/type_trait.hpp
! efbf720d2a6ce8aa5a80a21c251a9a18  libstdc++-v3/testsuite/util/regression/trait/erase_if_fn.hpp
! ddc3346b3d264466c74dc09e1644619c  libstdc++-v3/testsuite/util/regression/trait/priority_queue/trait.hpp
! 2866e53e1ec86684a3d00c069cf26726  libstdc++-v3/testsuite/util/replacement_memory_operators.h
! 48ff46bcccc511f6d1fb68856a44a8ef  libstdc++-v3/testsuite/util/slow_clock.h
! cbb836a4dce29cd00ba9a6c414240954  libstdc++-v3/testsuite/util/specfun_testcase.h
! ce914baaebf352cda7ee8943e4ee67f3  libstdc++-v3/testsuite/util/statistic/result_recorder.hpp
! 84559ad9992d018b802a532aa87cbdbb  libstdc++-v3/testsuite/util/statistic/sample_mean.hpp
! 795438d7c77b35ef2ac3938bb77033fa  libstdc++-v3/testsuite/util/statistic/sample_mean_confidence_checker.hpp
! cefdcb74d2f48746e0eb9760b1c3bdd4  libstdc++-v3/testsuite/util/statistic/sample_variance.hpp
! abd5e8d80e9d334fac20b0556b53af8a  libstdc++-v3/testsuite/util/testsuite_abi.cc
! 8ac34f80a8b58a108319ec8504701dda  libstdc++-v3/testsuite/util/testsuite_abi.h
! 0e152db39fee28ca74b6360bba507993  libstdc++-v3/testsuite/util/testsuite_abi_check.cc
! c0ea220143dd1c8b643a7a627cc0eb00  libstdc++-v3/testsuite/util/testsuite_allocator.cc
! 267565a2a762eb423d82edd781042a0e  libstdc++-v3/testsuite/util/testsuite_allocator.h
! fc7ab03b1a4ae3acdd6930b129d7180f  libstdc++-v3/testsuite/util/testsuite_api.h
! c8bd3d199ebb5d6a5d838437ab13a1f4  libstdc++-v3/testsuite/util/testsuite_character.cc
! bb4b480648b9498f3c0fd48fc1527c36  libstdc++-v3/testsuite/util/testsuite_character.h
! fd0baeb798b40dc92f684ece9ee85e25  libstdc++-v3/testsuite/util/testsuite_common_types.h
! 12dcf3928bc6f7afab91c6ed49cf8fab  libstdc++-v3/testsuite/util/testsuite_container_traits.h
! ea84b2b1448a9f5cee6c20ded4a6a7a7  libstdc++-v3/testsuite/util/testsuite_containergen.h
! b289122267b9b0599772e7808061bea9  libstdc++-v3/testsuite/util/testsuite_containers.h
! 255b28fe592f3e5a9f97d0632da0b132  libstdc++-v3/testsuite/util/testsuite_counter_type.h
! 504d7993d74efea96794b5109c416828  libstdc++-v3/testsuite/util/testsuite_error.h
! 50f6b0538d304917bb826251eab6b1b6  libstdc++-v3/testsuite/util/testsuite_fs.h
! 74bea6ebba8c18518ce0cefb93456eee  libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
! 353e782ca7d4dca1110e846782e0e17a  libstdc++-v3/testsuite/util/testsuite_hooks.cc
! fbe8e626dcd5af0498dd940f364cf0e6  libstdc++-v3/testsuite/util/testsuite_hooks.h
! 8feacd0e08553764c35a8641eb690c1b  libstdc++-v3/testsuite/util/testsuite_io.h
! d2b0207e3e21017cf2cab804b2ec589e  libstdc++-v3/testsuite/util/testsuite_iterators.h
! b404a6bee8484168d8f19bb4b37d730f  libstdc++-v3/testsuite/util/testsuite_new_operators.h
! 4cb4632e8ce29d0ad2d58ab87f26a5d4  libstdc++-v3/testsuite/util/testsuite_performance.h
! 1f094c9aa59f512d4386f1375943d013  libstdc++-v3/testsuite/util/testsuite_random.h
! 19e8ed0998f0f35e6965c9962755c535  libstdc++-v3/testsuite/util/testsuite_regex.h
! c979562480ca55caf49bc5d39c4e5ad0  libstdc++-v3/testsuite/util/testsuite_rng.h
! 66054821ed357278731918de995bbc6d  libstdc++-v3/testsuite/util/testsuite_rvalref.h
! eca1ca690da33da678ed911d9ae466cc  libstdc++-v3/testsuite/util/testsuite_shared.cc
! c836a90323b839246645b3db18ad61db  libstdc++-v3/testsuite/util/testsuite_tr1.h
! 831e968fad59c8fb2c29852e989b4933  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
! c91d7743f7070c79d86515441fc7e347  libtool.m4
! b82aaec7ec25527c0ca72fc2b70ee7fb  libvtv/ChangeLog
! 917a384819d8c88f932f05b9f8901a27  libvtv/Makefile.am
  b1170aae9472f26fdc8326737dc22aba  libvtv/Makefile.in
  3b765c4f4a0a0f606db1472bce2b8d29  libvtv/acinclude.m4
  84c8143a9310ea291315dcd0c276df5d  libvtv/aclocal.m4
! 87615f4b3cbdf2416a9c76445d5cb0b1  libvtv/configure
  cc9f6a09cf2db980b7d7119fd0748406  libvtv/configure.ac
! 181751850934437a6c1eff96aba5573a  libvtv/configure.tgt
  2caccd848c579fcddd2a8c8106cfaff9  libvtv/scripts/run-testsuite.sh
  09a6150d1619f2508d7844f860b3382c  libvtv/scripts/sum-vtv-counts.c
  4835ec70e1fbcd9acd3c280c0060afa4  libvtv/testsuite/Makefile.am
  fda4739e0005be93900b671246d786ff  libvtv/testsuite/Makefile.in
! 76111a54e591159d4e60db5cd1d2081a  libvtv/testsuite/config/default.exp
  c3135c06118981205f468524e15716be  libvtv/testsuite/lib/libvtv-dg.exp
  b01596489f4e825c77d9429f5bd51424  libvtv/testsuite/lib/libvtv.exp
  dc26824f08dd227e0cba7e7ebc8f4d3a  libvtv/testsuite/libvtv.cc/bb_tests.cc
--- 105767,107626 ----
  ccd8d09610bb1187b124063e4b7d62b2  libstdc++-v3/testsuite/data/wostream_inserter_other-1.tst
  ccd8d09610bb1187b124063e4b7d62b2  libstdc++-v3/testsuite/data/wostream_inserter_other-2.tst
  d41d8cd98f00b204e9800998ecf8427e  libstdc++-v3/testsuite/data/wostream_seeks-1.tst
! 7439d1c0718892471d63b53cbb1d38ad  libstdc++-v3/testsuite/decimal/binary-arith.cc
! 0bb37edfc124220ccea5f194fedf7cf9  libstdc++-v3/testsuite/decimal/cast_neg.cc
! 2b9d496d0ff178ec45de193fafaf7316  libstdc++-v3/testsuite/decimal/comparison.cc
! 2d6f3ac199c45bfc426c2e1d79ce66fd  libstdc++-v3/testsuite/decimal/compound-assignment-memfunc.cc
! 3330aed6abbe9cb074c7177d601eaf04  libstdc++-v3/testsuite/decimal/compound-assignment.cc
! 92d8f7b9463419e5f7f35bf300dfd100  libstdc++-v3/testsuite/decimal/conversion-from-float.cc
! c8b8f653eda9b6c38870737afbcb2787  libstdc++-v3/testsuite/decimal/conversion-from-integral.cc
! 27ecc7752dbc2b8d972105c8086a368c  libstdc++-v3/testsuite/decimal/conversion-to-generic-float.cc
! 8d57b847076187d8c077a1b7ec7c69a1  libstdc++-v3/testsuite/decimal/conversion-to-integral.cc
! 23b90650daf3bb6ede46c5402811a490  libstdc++-v3/testsuite/decimal/ctor.cc
! e2dcb2522b072f6d1ebe398d78064390  libstdc++-v3/testsuite/decimal/incdec-memfunc.cc
! 4430241d65761aa626f1ee75920cf042  libstdc++-v3/testsuite/decimal/incdec.cc
! c0b625cecc6e1e15f0b8bcfb4c762b3d  libstdc++-v3/testsuite/decimal/make-decimal.cc
! 2d677f1deeb3ac9f1df5d253827ace06  libstdc++-v3/testsuite/decimal/mixed-mode-arith_neg.cc
! 164ae6ef64829215541081aeac66bcb4  libstdc++-v3/testsuite/decimal/mixed-mode-cmp_neg.cc
! bfef39f98d925118930da5c52900fcf2  libstdc++-v3/testsuite/decimal/operator_neg.cc
! b308e9959c9d04b8fd8af64d6be157c8  libstdc++-v3/testsuite/decimal/pr54036-1.cc
! 953816bfd8830db3d759e059219c8ae9  libstdc++-v3/testsuite/decimal/pr54036-2.cc
! e815d33c577f09de55b9b838053ed8f9  libstdc++-v3/testsuite/decimal/pr54036-3.cc
! d65a09edd91e5a1e78db9856f309059e  libstdc++-v3/testsuite/decimal/pr58815.cc
! 0fee4e61aad9987c04ae4921b6dd14dd  libstdc++-v3/testsuite/decimal/unary-arith.cc
! 2615dd27306c48ff7b29a1ab8494a947  libstdc++-v3/testsuite/experimental/algorithm/sample-2.cc
! 3c9887c56a54a18b857b646ea0b7424f  libstdc++-v3/testsuite/experimental/algorithm/sample.cc
! 3d2dc801efc6b22124d648b688736740  libstdc++-v3/testsuite/experimental/algorithm/search.cc
! a88d659ffae0b344d7111b0498d6de98  libstdc++-v3/testsuite/experimental/algorithm/shuffle.cc
! d2bddf9d912574d9c57166803df0c8ab  libstdc++-v3/testsuite/experimental/any/assign/1.cc
! a1498b6914a843cf098e33a5f14d71ad  libstdc++-v3/testsuite/experimental/any/assign/2.cc
! d294cf4b33b5358aa3a5888924d429a6  libstdc++-v3/testsuite/experimental/any/assign/exception.cc
! ebaf1725a969a2efd07b432878ecf49f  libstdc++-v3/testsuite/experimental/any/assign/self.cc
! f5c6d6bdf878646aef4026d8f65542e5  libstdc++-v3/testsuite/experimental/any/cons/1.cc
! a5e9878ac91ffe7cbd98aa1e9820127f  libstdc++-v3/testsuite/experimental/any/cons/2.cc
! 074637c212498fc9a1540d566789e380  libstdc++-v3/testsuite/experimental/any/cons/aligned.cc
! e44302ba950cc69e8a4c00675eda1565  libstdc++-v3/testsuite/experimental/any/cons/nontrivial.cc
! a65233781279a8f5a9f14be0b2b2c787  libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc
! 53e5fa8986b1c19dc0a720f30fc67202  libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc
! ab3137bd77812ec068eb748cb7ac594f  libstdc++-v3/testsuite/experimental/any/misc/any_cast_no_rtti.cc
! 5264120235009064b9131b4c035df319  libstdc++-v3/testsuite/experimental/any/misc/swap.cc
! 9b37cda59db7349a240b89d734e364a6  libstdc++-v3/testsuite/experimental/any/modifiers/1.cc
! b2736d71a06f2b4f42dd731e1125f9b7  libstdc++-v3/testsuite/experimental/any/observers/type.cc
! 05cabb194b8d371abf0e68cfcb556efc  libstdc++-v3/testsuite/experimental/any/typedefs.cc
! 5c89ce7d372adbd039f7ea61c1e88242  libstdc++-v3/testsuite/experimental/array/make_array.cc
! 7551439cce01615dbce001749eefbf81  libstdc++-v3/testsuite/experimental/array/neg.cc
! 518e386018ba01a5c6c43515e3e17143  libstdc++-v3/testsuite/experimental/chrono/value.cc
! b91680a21d02e30436633347dcafb0b6  libstdc++-v3/testsuite/experimental/deque/erasure.cc
  486c6490ca99880768c8a8d443ad1c02  libstdc++-v3/testsuite/experimental/feat-char8_t.cc
  02455db47de7f16c8e2d1f2af4839fc7  libstdc++-v3/testsuite/experimental/feat-cxx14.cc
  f754118861b851f83334813d834cb200  libstdc++-v3/testsuite/experimental/feat-lib-fund.cc
! 287f51d03bdfe6565dc842447c669a69  libstdc++-v3/testsuite/experimental/filesystem/file_status/1.cc
! 0be28e8a597f5f3524b05d382977857a  libstdc++-v3/testsuite/experimental/filesystem/filesystem_error/cons.cc
! e38807857185bfa4fa204e43c8d76017  libstdc++-v3/testsuite/experimental/filesystem/iterators/97731.cc
! b2ddb53edb8745941cd567b4fbcbcfe8  libstdc++-v3/testsuite/experimental/filesystem/iterators/directory_iterator.cc
! 80bbc9f1b2ea6c7f500e8644d05570a3  libstdc++-v3/testsuite/experimental/filesystem/iterators/pop.cc
! aee72a897d77a43a671bf7ff1186552b  libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc
! 4bf5a178f6bbfd23a8d1f09e46377566  libstdc++-v3/testsuite/experimental/filesystem/operations/absolute.cc
! b6c97dcfa5875e35bd817ceef71106dc  libstdc++-v3/testsuite/experimental/filesystem/operations/canonical.cc
! c979d08bc61ab33d1c6cda360f40c791  libstdc++-v3/testsuite/experimental/filesystem/operations/copy.cc
! fef1c8651e0cbfb01549c5b72aadbc39  libstdc++-v3/testsuite/experimental/filesystem/operations/copy_file.cc
! a9f2e14d3fc9a632a4e32d3b0b49c8d1  libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc
! 9d72ff4fc8102c087dc897d553c62e0e  libstdc++-v3/testsuite/experimental/filesystem/operations/create_directory.cc
! 102afdecfff9639d959c908bf8ca4d24  libstdc++-v3/testsuite/experimental/filesystem/operations/create_symlink.cc
! f613a7a13aba7ff97f2dc5f334d5219d  libstdc++-v3/testsuite/experimental/filesystem/operations/current_path.cc
! b6f9f83cef2f2ba95a2192bcaf1f4864  libstdc++-v3/testsuite/experimental/filesystem/operations/equivalent.cc
! d64f8cbf2eac462ded9f076a12a3bfe2  libstdc++-v3/testsuite/experimental/filesystem/operations/exists.cc
! 22c3881333e194d83327843ef3822453  libstdc++-v3/testsuite/experimental/filesystem/operations/file_size.cc
! f7b779ba44e2cf39db92c01bdca4f5e6  libstdc++-v3/testsuite/experimental/filesystem/operations/is_empty.cc
! 2a9b90a7de6f905407da9ed34a374ed6  libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc
! 7ec5c0f902c789196ebec7b7878cf8d1  libstdc++-v3/testsuite/experimental/filesystem/operations/permissions.cc
! c212f31fe176502dcf5879b849cad120  libstdc++-v3/testsuite/experimental/filesystem/operations/read_symlink.cc
! 5aadbc47e3cc75a411b6f807891da1be  libstdc++-v3/testsuite/experimental/filesystem/operations/remove.cc
! e62b80c10ef4c69591d417eb49564dd3  libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc
  d032a966b5c68f5f7ee9cc78de2ab201  libstdc++-v3/testsuite/experimental/filesystem/operations/rename.cc
! 7f64a5cd007797c662010bef0a36d653  libstdc++-v3/testsuite/experimental/filesystem/operations/space.cc
! 99989ba6e2f0b58f00abcc249759b5f5  libstdc++-v3/testsuite/experimental/filesystem/operations/status.cc
! 5c9906ee9d01e6aebfa90cd2e6c564bb  libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc
! 45702a06c1f1ce65575cf3d643ec9778  libstdc++-v3/testsuite/experimental/filesystem/path/append/path.cc
! 57259422207ece8ba121629f54f87323  libstdc++-v3/testsuite/experimental/filesystem/path/assign/assign.cc
! acd11e30150439c609f7b3127f4e669e  libstdc++-v3/testsuite/experimental/filesystem/path/assign/copy.cc
! 460951c2785be93645976d01272dce88  libstdc++-v3/testsuite/experimental/filesystem/path/compare/compare.cc
! 13adfe82707eeb9adb44b8b46dbbce9f  libstdc++-v3/testsuite/experimental/filesystem/path/compare/path.cc
! bed818ebc5c4ca43e0b999b351ebc160  libstdc++-v3/testsuite/experimental/filesystem/path/compare/strings.cc
! 4790f977745da9cd73e1bdac04274e01  libstdc++-v3/testsuite/experimental/filesystem/path/concat/path.cc
! b3ceec9dd7e62b26e2fd26943afef5f9  libstdc++-v3/testsuite/experimental/filesystem/path/concat/strings.cc
! 666ce8536a1d012f2ee912f2bc7b75d4  libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc
! 1ed54cf5b1c47566d1d83d4e7de0a095  libstdc++-v3/testsuite/experimental/filesystem/path/construct/90281.cc
! b777506554ae3816bf36f62dee7df96e  libstdc++-v3/testsuite/experimental/filesystem/path/construct/90634.cc
! 0b30494068df58ea8b093ca0e48b8446  libstdc++-v3/testsuite/experimental/filesystem/path/construct/copy.cc
! fb7624577970bd78022accc91341a06b  libstdc++-v3/testsuite/experimental/filesystem/path/construct/default.cc
! 2125ab42c3b94c829ffea078d2ba2a81  libstdc++-v3/testsuite/experimental/filesystem/path/construct/locale.cc
! a3a6b6a414b365f9cf1d1eeba7e6ea9b  libstdc++-v3/testsuite/experimental/filesystem/path/construct/range.cc
! c842e19dccb0f7dc7f82e70bf0638963  libstdc++-v3/testsuite/experimental/filesystem/path/construct/string_view.cc
! 2d102bb97d5e8f347c372847026b1e07  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/extension.cc
! 20acf8e02f2d7bb62c0890d81fd910c4  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/filename.cc
! 1703702fbd062419beac1f473bf7547f  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/parent_path.cc
! 4fc19aa25b6afc1e531ad6ab3ccf31bc  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/relative_path.cc
! feefc832eb48194387f4126f8a791039  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_directory.cc
! bdca5b449a2866ee56b15878ca47b4d2  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_name.cc
! 62b38cbc32310db6e655939ec43d281c  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_path.cc
! 6fde203beaf28bdbe59e1f641cc9b14e  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/stem.cc
! 190335f80ebb2bf3fb729a09fd939d74  libstdc++-v3/testsuite/experimental/filesystem/path/factory/u8path-char8_t.cc
! f9492cf07e7026aaea955fa1e558f7f5  libstdc++-v3/testsuite/experimental/filesystem/path/factory/u8path.cc
! 59ec219899f528af6c94f8441065ed04  libstdc++-v3/testsuite/experimental/filesystem/path/generic/generic_string.cc
! ffce0d11824874837afc295ef67274f7  libstdc++-v3/testsuite/experimental/filesystem/path/itr/traversal.cc
! 54eab7f1d86169097b5f84e186744b59  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/clear.cc
! 5acb84c711c714b0edc23526d03967a4  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/make_preferred.cc
! 8e1438fa928c456e80aa9593eccfa721  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/remove_filename.cc
! d3a0993e01a866eee9daa4be4e2abf1a  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/replace_extension.cc
! 8c01898d27ed29437b8d2495915e1842  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/replace_filename.cc
! fd6f644d023cc2745afe68394005258d  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/swap.cc
! c0bb64e5410accf7d6f05f5c5911f55a  libstdc++-v3/testsuite/experimental/filesystem/path/native/alloc.cc
! 18a009bbb1dd2dbce0e598440967957c  libstdc++-v3/testsuite/experimental/filesystem/path/native/string-char8_t.cc
! 059f40241c938993d01d4a83c46d8d0e  libstdc++-v3/testsuite/experimental/filesystem/path/native/string.cc
! e0322e4af4639ba7782f71db9a36d5bf  libstdc++-v3/testsuite/experimental/filesystem/path/nonmember/hash_value.cc
! 59fca3faabd22effe0e0b5c627a50bc2  libstdc++-v3/testsuite/experimental/filesystem/path/preferred_separator.cc
! 16f3fd229dd6e05a61503c896964d850  libstdc++-v3/testsuite/experimental/filesystem/path/query/empty.cc
! fd869ba6c433a7d7f16ebaa5df54a314  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_extension.cc
! f0d2a80b3c338f5cf7e07b2196a28580  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_filename.cc
! 883c28f897ce4473b12211843ed162d2  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_parent_path.cc
! 5aac8e8aa5f40151c5ea2255a5e28cbc  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_relative_path.cc
! 8d08ce82f20730211731b13a6a02ad35  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_directory.cc
! 65945b7e5bfeef5eea303d6ee7ca2a0d  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_name.cc
! 895b5d822925fce1cacad66fd51466ac  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_path.cc
! 5ee0e62de35ab36fdcf653305c6cbe37  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_stem.cc
! 4f318541eda5c930acf928a90a36196e  libstdc++-v3/testsuite/experimental/filesystem/path/query/is_absolute.cc
! e0b9a39ccaafcd1cffb1f234dac3ae33  libstdc++-v3/testsuite/experimental/filesystem/path/query/is_relative.cc
! a6e7e800f733cc7d4500b9b59d5d3358  libstdc++-v3/testsuite/experimental/forward_list/erasure.cc
! 1907808faa1732a38f181eed317af860  libstdc++-v3/testsuite/experimental/functional/87538.cc
! 7e2351e04e256fb16aaa9e5b5a9361b4  libstdc++-v3/testsuite/experimental/functional/not_fn.cc
! d37401e3895457b1501eeaa41b1ebbc6  libstdc++-v3/testsuite/experimental/functional/searchers.cc
! 5ee9bffa3a7bbbd2e04f25faea4f7ce1  libstdc++-v3/testsuite/experimental/functional/value.cc
! 58813b96ae0a13cb3b6959d2d529e16e  libstdc++-v3/testsuite/experimental/iterator/make_ostream_joiner.cc
! 2410f283d3810b8ad67919b559cb93d9  libstdc++-v3/testsuite/experimental/iterator/ostream_joiner.cc
! c4bfd651c3da9f3dc171e453973b1b93  libstdc++-v3/testsuite/experimental/iterator/requirements.cc
! 525033b74697b609fade2dabab960af5  libstdc++-v3/testsuite/experimental/list/erasure.cc
! efe33f847c59f337d5126ecd3d799d44  libstdc++-v3/testsuite/experimental/map/erasure.cc
! c4e9c04412ffc5e4a8f1339bbe51f7a3  libstdc++-v3/testsuite/experimental/memory/observer_ptr/assignment/assign.cc
! 9882f549b826f2a31a56a1eae086918f  libstdc++-v3/testsuite/experimental/memory/observer_ptr/cons/cons.cc
! 0f5daa2be5c5da1fdab4e895d1d65deb  libstdc++-v3/testsuite/experimental/memory/observer_ptr/hash/hash.cc
! 682c6ac4b017e1bc76d598fac9bef48a  libstdc++-v3/testsuite/experimental/memory/observer_ptr/make_observer.cc
! f135d9527878be176b7231a20f2012b6  libstdc++-v3/testsuite/experimental/memory/observer_ptr/relops/relops.cc
! e51a5970c20851c5c3713a7fcb2a9957  libstdc++-v3/testsuite/experimental/memory/observer_ptr/requirements.cc
! 94bf2046bda5032eea88710c1eb4ab3d  libstdc++-v3/testsuite/experimental/memory/observer_ptr/swap/swap.cc
! 10263fb774c04794b0237bb7f1ddda80  libstdc++-v3/testsuite/experimental/memory/observer_ptr/typedefs.cc
! ca7baeb1fb5d1979545b95da23b67c0b  libstdc++-v3/testsuite/experimental/memory/shared_ptr/assign/assign.cc
! 5f1775d626102b78c5e739fa9638daf3  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cast/cast.cc
! cf41994c17f663671c82db2873494a19  libstdc++-v3/testsuite/experimental/memory/shared_ptr/comparison/comparison.cc
! 5c589d9b69a36dc60d6d7b74e8321cbe  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/alias_ctor.cc
! 7ac642b1dd7a02e6a6d595965985e51d  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/alloc_ctor.cc
! 7bfd5bfcf9dad1937aff27a635bd8e03  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor.cc
! 12539dacb32741d7e24f54aa68c0d0b8  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor_neg.cc
! 8b93baac620a07371c1d87d662ee693f  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/default_ctor.cc
! 1a0bfe93d32a7927b7c921b04c9e4d4d  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/enable_shared_from_this.cc
! aa8e0dd9d3eff91def1ef93d2e3bc274  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/move_ctor.cc
! 1ef580c9300e66d51cc4e7b63520a6d8  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/pointer_ctor.cc
! 60b203179193b87dade44037c9a1f907  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/pointer_ctor_neg.cc
! 6093716e2189c5d1cedc33cc82c566a0  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/torture.cc
! 4511a66d0909d070d98e14df02d4f02d  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/unique_ptr_ctor.cc
! 8e1864b8b927274fcae0baa35f97ff0c  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/weak_ptr_ctor.cc
! f9d8ff3bc5ab0ac702dcdca4f4de8df2  libstdc++-v3/testsuite/experimental/memory/shared_ptr/dest/dest.cc
! ad6d9c452d15e96c806a973ca406585a  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/reset.cc
! 5cd36bb6a219e39377d0933705816735  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/reset_neg.cc
! ae36186f759676d03b31dc5a0ba914b9  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/swap.cc
! eafdcaca80e253cfddfec106f75ee0c0  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/bool_conv.cc
! 4d173844794f3349b807f46593dd6fa9  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/operators.cc
! 0d2de2b939b6f58af78eb503b7fa26d6  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/owner_before.cc
! 5ea66c7280a0b814bef196c19f411052  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/use_count.cc
! 8342088a7fa292f18e86c9da245f70b3  libstdc++-v3/testsuite/experimental/memory_resource/1.cc
! 8bb5e7d0b66470d08502a3942fa7209f  libstdc++-v3/testsuite/experimental/memory_resource/70966.cc
! 92f5fd37e0568c1845b897dcda0bc5a3  libstdc++-v3/testsuite/experimental/memory_resource/new_delete_resource.cc
! 5583c17ad297723cae5c621e7078b426  libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc
! a422d5499edbc0b7825ece91e6fc9521  libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc
! f426666722c2827fcd67261ea6cc21d1  libstdc++-v3/testsuite/experimental/names.cc
! 3c13b06d979c6145ca03e4345e3abcd1  libstdc++-v3/testsuite/experimental/net/buffer/arithmetic.cc
! 787d7c0e6d275eae7a1bfe31fce4f0e5  libstdc++-v3/testsuite/experimental/net/buffer/const.cc
! 879641eeb91845567cc918f5989ac265  libstdc++-v3/testsuite/experimental/net/buffer/creation.cc
! 43eb5ffcf952381b012680b36bb1357b  libstdc++-v3/testsuite/experimental/net/buffer/mutable.cc
! ca4831e80f764df13adf47bf2ff3b91b  libstdc++-v3/testsuite/experimental/net/buffer/size.cc
! 46c96326a567ff09aba83e9ff975f7b7  libstdc++-v3/testsuite/experimental/net/buffer/traits.cc
! 9ac152b91b347dd07bee3790a9227467  libstdc++-v3/testsuite/experimental/net/execution_context/make_service.cc
! 91b3f28e60bda017cb352b8f41c6af40  libstdc++-v3/testsuite/experimental/net/execution_context/use_service.cc
! 7dce05799b0c077110c335764cd8c92c  libstdc++-v3/testsuite/experimental/net/executor/1.cc
! b52f1020d5742e07ec0e66664e3c647b  libstdc++-v3/testsuite/experimental/net/headers.cc
! 98e8f7797a78ef6dbdccf737f8d64e56  libstdc++-v3/testsuite/experimental/net/internet/address/v4/comparisons.cc
! f373999711c9ab4dd6f530ed68e38df5  libstdc++-v3/testsuite/experimental/net/internet/address/v4/cons.cc
! 56ffce6e6a9d361ceafc32cb95b189e6  libstdc++-v3/testsuite/experimental/net/internet/address/v4/creation.cc
! 7f134248d0814628d03377b7e3fe1537  libstdc++-v3/testsuite/experimental/net/internet/address/v4/members.cc
  52d5655db8f4d201df8c492943e61c92  libstdc++-v3/testsuite/experimental/net/internet/address/v6/members.cc
! b51d7b0f9dab91cbcc262ae70ec4e6e0  libstdc++-v3/testsuite/experimental/net/internet/resolver/base.cc
! 75a9bc3559f252e57b0b429b7e920140  libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc
! 1c81053c6189e47d8836daa386009f1d  libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/reverse.cc
! 648957bc8ebaa45e296fdf9a1fd109a9  libstdc++-v3/testsuite/experimental/net/socket/basic_socket.cc
! dff9f73f427973bef034446cd465c949  libstdc++-v3/testsuite/experimental/net/system_context/1.cc
! 58a298db4c46d09139a40339bfb676a7  libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc
! 1286e9bb26137b5a9ca36779262a518c  libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc
! 4c094e06668f50a9f6bdd77df290c20d  libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc
! 6a859691702df5d5252d0e231e444edf  libstdc++-v3/testsuite/experimental/numeric/77801.cc
! 980611c2b928256be62a3d53e42ca76a  libstdc++-v3/testsuite/experimental/numeric/92978.cc
! 6d94a0e8f7eb6bf360ee73b5b1d772a5  libstdc++-v3/testsuite/experimental/numeric/gcd.cc
! 8904db69c5d06442b0aae00306af1580  libstdc++-v3/testsuite/experimental/numeric/lcm.cc
! e29cd0b42e822b3c862200d2f41f39b9  libstdc++-v3/testsuite/experimental/optional/77288.cc
! ae4cbff3ede7d1374a12447b4e520a6f  libstdc++-v3/testsuite/experimental/optional/assignment/1.cc
! 3c8a9924cece001c8fb1613779973d4d  libstdc++-v3/testsuite/experimental/optional/assignment/2.cc
! e67374ab04039e6e011a5bac3f3b565b  libstdc++-v3/testsuite/experimental/optional/assignment/3.cc
! 1d14206f2fab09c73f87162ffda5c3b0  libstdc++-v3/testsuite/experimental/optional/assignment/4.cc
! 19db533aeace9fe7e9555c4efe8cd297  libstdc++-v3/testsuite/experimental/optional/assignment/5.cc
! 1f474bfc82387dcb88b1e1a7dc5c3c46  libstdc++-v3/testsuite/experimental/optional/assignment/6.cc
! 5e0eff31151cb8f4ab6e904cf6eccaf6  libstdc++-v3/testsuite/experimental/optional/cons/77727.cc
! 47227ebc663d22479f870756658eebb7  libstdc++-v3/testsuite/experimental/optional/cons/copy.cc
! 5406ef225d2e0367a892c0ab156b77c4  libstdc++-v3/testsuite/experimental/optional/cons/default.cc
! 0bac82402d6e2ad708db380f575db932  libstdc++-v3/testsuite/experimental/optional/cons/move.cc
! f227475b8bb49243700983350b28ea7a  libstdc++-v3/testsuite/experimental/optional/cons/value.cc
! 02954c776297d785eb516ff724d41991  libstdc++-v3/testsuite/experimental/optional/cons/value_neg.cc
! 9bb23167fc83be2f1215c55daf6b1a24  libstdc++-v3/testsuite/experimental/optional/constexpr/cons/default.cc
! 11a3c0a8b83a16044496066dc6411ef5  libstdc++-v3/testsuite/experimental/optional/constexpr/cons/value.cc
! 3f2cca36b4316513db36f732edd419fa  libstdc++-v3/testsuite/experimental/optional/constexpr/in_place.cc
! 8435ee56253c777062740a61052e3c76  libstdc++-v3/testsuite/experimental/optional/constexpr/make_optional.cc
! 60d7fb90435f2ccfc9ab1b0881fd2643  libstdc++-v3/testsuite/experimental/optional/constexpr/nullopt.cc
! 1069ff59c016aef3b8a6756bd03a12d6  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/1.cc
! c86ff528cb0cda687b01c1d01a4d8704  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/2.cc
! 40ed3188391d0082a06457fa8eaef33b  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/3.cc
! 9a9b9a0c16dbf624f0dbd34ee2acf1f5  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/4.cc
! 74c25f12e6a0996f4ac758bd1cefec0d  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/5.cc
! c494b6faed0b6dd249c47d77024193f8  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/1.cc
! 497e7da883de0c6c7f2c446cec803516  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/2.cc
! 5349d37336eb4849729180df7ab9b25f  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/3.cc
! 4b103dde5a4e6eba7553519e73e376ee  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/4.cc
! 6e53966456cee462cfb86c32046f4151  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/5.cc
! 137548a192fa6e7ec67d91904f715d81  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/6.cc
! 5fdb40b033c5f4e329fcb245965781b6  libstdc++-v3/testsuite/experimental/optional/in_place.cc
! 3d1183e34245c0eb8584eb72921696ab  libstdc++-v3/testsuite/experimental/optional/make_optional.cc
! 6c7d4b9bc7eb6f4fcead3cba20d76816  libstdc++-v3/testsuite/experimental/optional/nullopt.cc
! 2fae6df9217300e20273a28f9a7d7d44  libstdc++-v3/testsuite/experimental/optional/observers/1.cc
! 6ee1380ae46ad9b87068a0edf264528d  libstdc++-v3/testsuite/experimental/optional/observers/2.cc
! eb80716205216bb5035235a962722fa5  libstdc++-v3/testsuite/experimental/optional/observers/3.cc
! 0857f027f2843d9ac9631c328693b0e0  libstdc++-v3/testsuite/experimental/optional/observers/4.cc
! 2eeed11ac4d30c8989542ab9f7ad6a04  libstdc++-v3/testsuite/experimental/optional/observers/5.cc
! 82fec25c1cae16190a387dd2c9e50d47  libstdc++-v3/testsuite/experimental/optional/relops/1.cc
! 9894e4fc099269de11aee97e76ad327c  libstdc++-v3/testsuite/experimental/optional/relops/2.cc
! 3681da0b542393b4eef93fdbebbde430  libstdc++-v3/testsuite/experimental/optional/relops/3.cc
! 803c2efcefb4860c2dcf0582c8b0c8f1  libstdc++-v3/testsuite/experimental/optional/relops/4.cc
! 54b156456a81e0f9e85ee75715747b71  libstdc++-v3/testsuite/experimental/optional/relops/5.cc
! b91cd828d1cc4910274daa6096d5a9da  libstdc++-v3/testsuite/experimental/optional/relops/6.cc
! 5516bbb3649d16f03be72ec04b5beba0  libstdc++-v3/testsuite/experimental/optional/requirements.cc
! a76ac86073488048caf2f05afa12b0fa  libstdc++-v3/testsuite/experimental/optional/swap/1.cc
! 220556a8f037b652a4d586f242cd05c2  libstdc++-v3/testsuite/experimental/optional/typedefs.cc
! bcf7b763547a1691ef6a8a2530583e51  libstdc++-v3/testsuite/experimental/polymorphic_allocator/1.cc
! 6d14a45421cf83e06b7cb521ac75e5d7  libstdc++-v3/testsuite/experimental/polymorphic_allocator/construct_pair.cc
! 8960a3162dffcb25a3feefc1c22c9548  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc
! e39dbe15adff6a48709c015e1737f841  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_forward_list.cc
! 0fec1fef10a367ca49b10d7e819bf9d9  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc
! a65461dbdc0425a5a506050385b03262  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc
! b4e9fb079a163bb923b85da7640d6629  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc
! 6d4f8a8ee0c600a61a298560ecfc0a9b  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multimap.cc
! f769c26c7c36c1a7472da31ca6b46df4  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multiset.cc
! 106f348fb2e83f8297c640d33f8fa714  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc
! 355ac82a39b782f1035389a061725991  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc
! a5cfccccc9f55f58c1ca53fefe18bd46  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_map.cc
! ee192f2d5f243b44bd819644bc434165  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multimap.cc
! 06666f33bdf5d24d3cae3d7b7eaf2e1d  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multiset.cc
! cad42beb1392f03c62f4acce0ba4d836  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_set.cc
! ca33dd2376b9e086791121cff4de439f  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc
! fe915465f7dc88896f8d64f4bf6b3eec  libstdc++-v3/testsuite/experimental/propagate_const/assignment/copy.cc
! c80d1adf2bb1622b44e262f8e3aebad6  libstdc++-v3/testsuite/experimental/propagate_const/assignment/move.cc
! bc91c43523df8e3d2291e3dddc4d225f  libstdc++-v3/testsuite/experimental/propagate_const/assignment/move_neg.cc
! df66dcfb0e23f8c0161171a9c643035f  libstdc++-v3/testsuite/experimental/propagate_const/cons/copy.cc
! 247067d1c7c17a803a0d5e3542a31e7a  libstdc++-v3/testsuite/experimental/propagate_const/cons/default.cc
! da58de91c42d44da0940a05122c87cef  libstdc++-v3/testsuite/experimental/propagate_const/cons/move.cc
! 891cf580e7ec83f180732d2cfb4b9541  libstdc++-v3/testsuite/experimental/propagate_const/cons/move_neg.cc
! 828acf2158cd8ad689c8ed6fa95ec296  libstdc++-v3/testsuite/experimental/propagate_const/hash/1.cc
! 6445effc4bcbb3666bf89d21558dcf88  libstdc++-v3/testsuite/experimental/propagate_const/observers/1.cc
! e20c610a9c9701fba622e6a1555b9f79  libstdc++-v3/testsuite/experimental/propagate_const/relops/1.cc
! 2e297da3ca7f590c53476b6a8da8ef21  libstdc++-v3/testsuite/experimental/propagate_const/requirements1.cc
! d33849262494d8f9c5a099ae807f4d3b  libstdc++-v3/testsuite/experimental/propagate_const/requirements2.cc
! 2e87d6b8d660144af61f0f16a2591ada  libstdc++-v3/testsuite/experimental/propagate_const/requirements3.cc
! 1ec113aab8664cd00005583eeda998f1  libstdc++-v3/testsuite/experimental/propagate_const/requirements4.cc
! 47798fb9e37ef950335cde50041bb4d7  libstdc++-v3/testsuite/experimental/propagate_const/requirements5.cc
! 04b9e051ec2de1e077010713146435ac  libstdc++-v3/testsuite/experimental/propagate_const/swap/1.cc
! 97e54b4a473f5119fde9f19e8bc77013  libstdc++-v3/testsuite/experimental/propagate_const/typedefs.cc
! 141d539b96214b18c1db0041c7679e01  libstdc++-v3/testsuite/experimental/random/randint.cc
! d11b0cf5365cf27c6d9b1d7791b5032a  libstdc++-v3/testsuite/experimental/ratio/value.cc
! 6158ee68c53b1eb6668b2d3c43fb5fec  libstdc++-v3/testsuite/experimental/set/erasure.cc
! 95bdc242cfce24b906dbef7ece3f3c80  libstdc++-v3/testsuite/experimental/simd/driver.sh
! 81cb6163311a6d96c80beba0c32c1c2b  libstdc++-v3/testsuite/experimental/simd/generate_makefile.sh
! c9ff7f42a3440a4c43a3f282f1814dd9  libstdc++-v3/testsuite/experimental/simd/standard_abi_usable.cc
! 8456d329f682f25f869aac367480356e  libstdc++-v3/testsuite/experimental/simd/standard_abi_usable_2.cc
! 5a175cd78dfff9373203c96c10e3955c  libstdc++-v3/testsuite/experimental/simd/tests/abs.cc
! 051e64dc184f7b404524e615ce36cba2  libstdc++-v3/testsuite/experimental/simd/tests/algorithms.cc
! 3e44aff903358ff79a1dde997f6a359b  libstdc++-v3/testsuite/experimental/simd/tests/bits/conversions.h
! b068e594aa7ad392d7f76415314f7019  libstdc++-v3/testsuite/experimental/simd/tests/bits/make_vec.h
! a8f1a36186768b2ee7fbf3a8e4b04bce  libstdc++-v3/testsuite/experimental/simd/tests/bits/mathreference.h
! f3c5c39d1408e1d33dabcdf445e2c782  libstdc++-v3/testsuite/experimental/simd/tests/bits/metahelpers.h
! 74ad34d6973b64b38024a394a01f1161  libstdc++-v3/testsuite/experimental/simd/tests/bits/simd_view.h
! 8de2d2aeb91e62ba589ada0576abb058  libstdc++-v3/testsuite/experimental/simd/tests/bits/test_values.h
! 65a6dd497514ee32b17e005140e09fda  libstdc++-v3/testsuite/experimental/simd/tests/bits/ulp.h
! 2032e011aacfd34f2d6b4783e4fc473d  libstdc++-v3/testsuite/experimental/simd/tests/bits/verify.h
! 9399282958998d0c420735d9e8bff5cb  libstdc++-v3/testsuite/experimental/simd/tests/broadcast.cc
! 977e5f8160480e0d84e8af0cd0bdf830  libstdc++-v3/testsuite/experimental/simd/tests/casts.cc
! f4a6d8335e1aa0a66b0c967770d88d8e  libstdc++-v3/testsuite/experimental/simd/tests/fpclassify.cc
! c5b05eea9fbf7b71c19cfa2a846d0279  libstdc++-v3/testsuite/experimental/simd/tests/frexp.cc
! 81582e24f42794a07f49e599a516681e  libstdc++-v3/testsuite/experimental/simd/tests/generator.cc
! adbc631eadb5370098f35704939b6974  libstdc++-v3/testsuite/experimental/simd/tests/hypot3_fma.cc
! 7e0b9ff5db5e0afb69c263a26cfa6f4d  libstdc++-v3/testsuite/experimental/simd/tests/integer_operators.cc
! 44803853cac67bc3e991b95bc4bfa630  libstdc++-v3/testsuite/experimental/simd/tests/ldexp_scalbn_scalbln_modf.cc
! 81528b3b70b7e95113ebc427718f8cfa  libstdc++-v3/testsuite/experimental/simd/tests/loadstore.cc
! 78e03703072fd862da2609d16e285553  libstdc++-v3/testsuite/experimental/simd/tests/logarithm.cc
! 1567e8d6e3e1dc9e9d9628193a061cbc  libstdc++-v3/testsuite/experimental/simd/tests/mask_broadcast.cc
! ee32cb3dc270cd9c5b142d8474c6d16b  libstdc++-v3/testsuite/experimental/simd/tests/mask_conversions.cc
! ba9b7aac3934b84324828d733a449d61  libstdc++-v3/testsuite/experimental/simd/tests/mask_implicit_cvt.cc
! ace50ff6c3ff75c22a8d59c0109bc1ae  libstdc++-v3/testsuite/experimental/simd/tests/mask_loadstore.cc
! 0bb7627c0d2f9158fb82a8728a537884  libstdc++-v3/testsuite/experimental/simd/tests/mask_operator_cvt.cc
! a56eeb3150825c9a4db053388474786f  libstdc++-v3/testsuite/experimental/simd/tests/mask_operators.cc
! 2e951eede60753f8c47d4b6fad76899d  libstdc++-v3/testsuite/experimental/simd/tests/mask_reductions.cc
! 05e6aa776ac3dde07f0f2ce945c4a544  libstdc++-v3/testsuite/experimental/simd/tests/math_1arg.cc
! f37dc37a1f2deeadb0848d5805880a2a  libstdc++-v3/testsuite/experimental/simd/tests/math_2arg.cc
! 1ade40b68adc65e1bad2fdf759d3fc1e  libstdc++-v3/testsuite/experimental/simd/tests/operator_cvt.cc
! 11e4094b7fc8e4030355ae2cb1d6b658  libstdc++-v3/testsuite/experimental/simd/tests/operators.cc
! 1348140447e84634e81a90837eb270d9  libstdc++-v3/testsuite/experimental/simd/tests/reductions.cc
! 0341be10ab6e8b1246b259c04a1afa0c  libstdc++-v3/testsuite/experimental/simd/tests/remqo.cc
! ba101bb407815a6b8b49859dbaaa00bb  libstdc++-v3/testsuite/experimental/simd/tests/simd.cc
! 6b6dbb3d4d3b7a56bf3570ed20eb16c8  libstdc++-v3/testsuite/experimental/simd/tests/sincos.cc
! 61a90382bc83c25a753e1480a048aaaa  libstdc++-v3/testsuite/experimental/simd/tests/split_concat.cc
! a6db162d1694878802870f025bf0ec8d  libstdc++-v3/testsuite/experimental/simd/tests/splits.cc
! 72907251a60264f03456e984af6e7bf7  libstdc++-v3/testsuite/experimental/simd/tests/trigonometric.cc
! 9695bfa73d592ed767dc526955d838a0  libstdc++-v3/testsuite/experimental/simd/tests/trunc_ceil_floor.cc
! d438fe157e89bb1710a4139d869d3465  libstdc++-v3/testsuite/experimental/simd/tests/where.cc
! 86d9256ca573b52ba687b1af3bbce55b  libstdc++-v3/testsuite/experimental/source_location/1.cc
! 4088567100341bbbfcb9418037f955d4  libstdc++-v3/testsuite/experimental/string/erasure.cc
! 5a6b826151c745e2c52a59e334dbb694  libstdc++-v3/testsuite/experimental/string_view/capacity/1.cc
! fad69c42893af4d6621d70360d20833f  libstdc++-v3/testsuite/experimental/string_view/cons/char/1.cc
! 5c304b1283231aa530adc1b68e78fef3  libstdc++-v3/testsuite/experimental/string_view/cons/char/2.cc
! 00038f3cbc9b29a87ce8af34309aa6dd  libstdc++-v3/testsuite/experimental/string_view/cons/char/3.cc
! e04047343068da23c7f2dda8dc94dafd  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/1.cc
! a4f9062c2650dffd1f9e8a2bb3002e32  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/2.cc
! 1ac10dbf4419d5e4206dced585994dc1  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/3.cc
! 0cfbad95bad42550b456dfc47b370ec7  libstdc++-v3/testsuite/experimental/string_view/element_access/char/1.cc
! faab1d950d38f4cf18ebd2b2560f6796  libstdc++-v3/testsuite/experimental/string_view/element_access/char/2.cc
! 57f8169d2f4387a56d959e67e7e1bad8  libstdc++-v3/testsuite/experimental/string_view/element_access/char/empty.cc
! c93a89b980cd6f42d800f50efb8701a2  libstdc++-v3/testsuite/experimental/string_view/element_access/char/front_back.cc
! fabe7a9a44ff7e2bf9c902e433b7df20  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/1.cc
! 90e5e817f645f4fe8efe7c712114072a  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/2.cc
! ba5f1561fab78babf10cdcad2d1e7b45  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/empty.cc
! 026233a280780efcc2f3eb73f626007e  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/front_back.cc
! 1433b41ef8f9f912f44df3b6fae4f3c7  libstdc++-v3/testsuite/experimental/string_view/include.cc
! 161b7509408917e1a3716bdc4bf588f8  libstdc++-v3/testsuite/experimental/string_view/inserters/char/1.cc
! 314ba54d0de134f99f5a7ab2a64e8db5  libstdc++-v3/testsuite/experimental/string_view/inserters/char/2.cc
! 3039d29e467fceb4cffeee369aa5c154  libstdc++-v3/testsuite/experimental/string_view/inserters/char/3.cc
! c205cb53b0a440db7142164e54b0bb01  libstdc++-v3/testsuite/experimental/string_view/inserters/pod/10081-out.cc
! b7d7afba6a58905b126349f3d7d95230  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/1.cc
! 4b1ac61331f889d4ee953a0e6c47e0ae  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/2.cc
! d63bf4e9c4d4cba70039322d53b5854f  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/3.cc
! bbe8215453ffb0ec541a164cfff7aab6  libstdc++-v3/testsuite/experimental/string_view/literals/types-char8_t.cc
! fa4cca666d37f2ff69f812b333cc12ac  libstdc++-v3/testsuite/experimental/string_view/literals/types.cc
! 6f8d27d631b93c0a9dca78969d2d978d  libstdc++-v3/testsuite/experimental/string_view/literals/values-char8_t.cc
! f7bb3cff7827f1575fbdb98f967a2ab4  libstdc++-v3/testsuite/experimental/string_view/literals/values.cc
! 8d4433af068b8d423f800218e24df42e  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_prefix/char/1.cc
! 11635cb5ec657d33a9963a11148d0007  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_prefix/wchar_t/1.cc
! f27b100c73455c1b538621e7534b8867  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_suffix/char/1.cc
! 593cc4a87288cd6844e1d122c84ef3c8  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_suffix/wchar_t/1.cc
! 3cf9933194b837bfc68285243caf5480  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/1.cc
! 4bfc2e398a1af7fc8baa800ae3b77182  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/13650.cc
! 61bf9c835de89dcc49f8a8d3ee1ada9d  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/70483.cc
! 5fceb71e1f64e339d64542be185b1d93  libstdc++-v3/testsuite/experimental/string_view/operations/compare/wchar_t/1.cc
! f07f49be3fb63c60e70d9d0a0d7803f0  libstdc++-v3/testsuite/experimental/string_view/operations/compare/wchar_t/13650.cc
! 3312e625b8a0bc024b0b3452991d7cee  libstdc++-v3/testsuite/experimental/string_view/operations/copy/char/1.cc
! 4036d86c471ad16b144ae2b452d0d501  libstdc++-v3/testsuite/experimental/string_view/operations/copy/wchar_t/1.cc
  672cb4f94c8a852e6bdb846e926365f9  libstdc++-v3/testsuite/experimental/string_view/operations/data/char/1.cc
  3500b68ff8c9b68295a6f4a0a348e9d8  libstdc++-v3/testsuite/experimental/string_view/operations/data/wchar_t/1.cc
! 8d9e39f4a9aab8b97bafb07f944abe42  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/1.cc
! 132bbb2a78a3bdf4cc44ecdfc4aa7cf6  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/2.cc
! d1ad7c4ae1e2496c3797a64a6c1d9cb2  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/3.cc
! 1d6132d5c1bbe568321e96c891c25d36  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/4.cc
! 611e6ea27d07a661c24b4ac6995a6253  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/1.cc
! 9fac86322f6c3e273716e3bd23eb2fd2  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/2.cc
! b92ac87f19907f8c376bcbe11fd18344  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/3.cc
! 119ba2c8cd24f85f82c1ea8d3179a3d3  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/4.cc
! b45f47d4482e466adb159a9c5d59fcd7  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/1.cc
! ba1aacc018813daea1ad6abe4a2c495f  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/2.cc
! da0a60789128c17642a8f05400e8e354  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/3.cc
! 8f3b725c0ec700545777345661fc9b66  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/1.cc
! 4d1ac4e8f1979ef610be2952ffeff7f7  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/2.cc
! 711e76eaa19eb90241c9b26aacdfb3bf  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/3.cc
! 0ce855bc049a169bea87c15812e1b16e  libstdc++-v3/testsuite/experimental/string_view/operations/substr/char/1.cc
! 9eb712fff131d28fe652e5a8ce9e39dc  libstdc++-v3/testsuite/experimental/string_view/operations/substr/char/83511.cc
! 07061a979070f2f2aed5ea46fe3a35ae  libstdc++-v3/testsuite/experimental/string_view/operations/substr/wchar_t/1.cc
! ece91d35b2f77dee7dd115c575a303ef  libstdc++-v3/testsuite/experimental/string_view/operations/substr/wchar_t/83511.cc
! 85ccdbba2b343e89a783d03d8890c697  libstdc++-v3/testsuite/experimental/string_view/operations/to_string/1.cc
! 004b504f658bf92eadb0125484b2d7f8  libstdc++-v3/testsuite/experimental/string_view/operators/char/2.cc
! 2b79158cc58a4d4a99b8d2ee5e53c897  libstdc++-v3/testsuite/experimental/string_view/operators/wchar_t/2.cc
! f0d48a7387237b3e21144571c2582aea  libstdc++-v3/testsuite/experimental/string_view/range_access/char/1.cc
! 33dd9228606a1eb0a9fbe5af1518ad26  libstdc++-v3/testsuite/experimental/string_view/range_access/wchar_t/1.cc
! 28c923f3ae2700f11e9a023bce6d0de5  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/1.cc
! 3d70d01fe3bde6252d388e5373da4e05  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char/1.cc
! 5dbdf6f75c91b917173fbbd588274505  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char16_t/1.cc
! 640b01cd6f506871a8d4444749746b49  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char32_t/1.cc
! aa6a472316af650d9431966da6a18054  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char8_t/1.cc
! 0c062dcf96fa8f76640c80b3b1c2408b  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/wchar_t/1.cc
! 4a74af95d39122af3c15b9190a7bdac7  libstdc++-v3/testsuite/experimental/string_view/requirements/typedefs.cc
! dba5e9c88ebc96dedf2ff03a85d35ed9  libstdc++-v3/testsuite/experimental/string_view/typedefs.cc
! 6f16a76974f0dbe8077a867a3d617562  libstdc++-v3/testsuite/experimental/string_view/types/1.cc
! 8c594f51d79da30428193dd287bd935b  libstdc++-v3/testsuite/experimental/system_error/value.cc
! 3fe3ed02301f9021c7db5aab0270e017  libstdc++-v3/testsuite/experimental/tuple/apply.cc
! e46c56317abfd5b365b7c021a2fa616f  libstdc++-v3/testsuite/experimental/tuple/tuple_size.cc
! 382a9f6579ed8666d3099cedfdb0a374  libstdc++-v3/testsuite/experimental/type_erased_allocator/2.cc
! 6a05ca1b99a05767a4fbf692dfa24c86  libstdc++-v3/testsuite/experimental/type_erased_allocator/uses_allocator.cc
! 95750ce132d1dd8215741094345e0c2f  libstdc++-v3/testsuite/experimental/type_traits/detection.cc
! a76db81b8fc9423c86c1b0e63f4dee97  libstdc++-v3/testsuite/experimental/type_traits/nonesuch.cc
! 3c38de8340ae60871b28270346ebb7ed  libstdc++-v3/testsuite/experimental/type_traits/value.cc
! 847f1690a77208a1eee2e36d7d4d3007  libstdc++-v3/testsuite/experimental/unordered_map/erasure.cc
! 7dd03004f0ca28470cea5515f6461bd7  libstdc++-v3/testsuite/experimental/unordered_set/erasure.cc
! c134c2d15ac55bc08ee9f7da9635284a  libstdc++-v3/testsuite/experimental/vector/erasure.cc
! cfeb0932ebb0e0422e0ef27233190785  libstdc++-v3/testsuite/ext/bitmap_allocator/check_allocate_max_size.cc
! f74d6fce491d5bce589029cd1b8b4764  libstdc++-v3/testsuite/ext/bitmap_allocator/check_deallocate_null.cc
! 08ff4331855b787a8fac89345128e36e  libstdc++-v3/testsuite/ext/bitmap_allocator/check_delete.cc
! 84f92be2635c87d70cec59c6bc681b0e  libstdc++-v3/testsuite/ext/bitmap_allocator/check_new.cc
! 9b300b462cab372499d5610583043294  libstdc++-v3/testsuite/ext/bitmap_allocator/overaligned.cc
! aad50ac95276f866632b9560eb942758  libstdc++-v3/testsuite/ext/bitmap_allocator/variadic_construct.cc
  846dc8224edb857bb6953efa8b4cdb2d  libstdc++-v3/testsuite/ext/char8_t/atomic-1.cc
! 117362d3fad8e78aadc2be710c4092cd  libstdc++-v3/testsuite/ext/codecvt/1.cc
! 8ae1930174db4a7d7d32c853c208c119  libstdc++-v3/testsuite/ext/codecvt/char-1.cc
! 1997df58168bbbba6e118dde833f636f  libstdc++-v3/testsuite/ext/codecvt/char-2.cc
! ad5023fee26ba8283ccad93e5930cf36  libstdc++-v3/testsuite/ext/codecvt/wchar_t.cc
! a675c9b8e3f3ed4aa524486cbe310fb4  libstdc++-v3/testsuite/ext/concept_checks.cc
! b52b04a75e9cce3ee34553a2618efd60  libstdc++-v3/testsuite/ext/concurrence_lock_error/cons_virtual_derivation.cc
! f154241990e596b36a8dd2f19d91172c  libstdc++-v3/testsuite/ext/concurrence_unlock_error/cons_virtual_derivation.cc
! 926f7557f00c427e993a5c275584e507  libstdc++-v3/testsuite/ext/debug_allocator/56170.cc
! 98a0f9f168407630284a7a9599c3137f  libstdc++-v3/testsuite/ext/debug_allocator/check_deallocate_null.cc
! c968234b4a99d5418f10f4cee8760a98  libstdc++-v3/testsuite/ext/debug_allocator/check_delete.cc
! db3a2af4207f330ddfb3e89a5d8797e0  libstdc++-v3/testsuite/ext/debug_allocator/check_new.cc
! 042c19045513691347fe6b5bec8ea96f  libstdc++-v3/testsuite/ext/debug_allocator/eq.cc
! 12f6954c00c1166fbbfcf058fe9b153d  libstdc++-v3/testsuite/ext/debug_allocator/explicit_instantiation.cc
! 6ce65bad9513fa5657a31b44bc44b77a  libstdc++-v3/testsuite/ext/enc_filebuf/char/13189.cc
! e040f0b03001b940f2942fd8d4d97a6c  libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc
! 7c336caffd4f025da3b0bb9803d4d246  libstdc++-v3/testsuite/ext/enc_filebuf/wchar_t/13189.cc
! e065c66ca7c230125e71dc9c2943d641  libstdc++-v3/testsuite/ext/ext_pointer/1.cc
! ab16322360c115a3a39796c6c60f5e66  libstdc++-v3/testsuite/ext/ext_pointer/1_neg.cc
! e76673a059bac8977041f75985618ab4  libstdc++-v3/testsuite/ext/ext_pointer/alloc_eq.cc
! ca393ca360ce150a3532c319ff19ca7c  libstdc++-v3/testsuite/ext/forced_error/cons_virtual_derivation.cc
! 72758704c0605d83d27e7b117ce90585  libstdc++-v3/testsuite/ext/headers.cc
! 202e26dd93d409320bbb644b625b52cb  libstdc++-v3/testsuite/ext/iota/cxx0x.cc
! 1986f6bf79673423cddd8f81d9969e23  libstdc++-v3/testsuite/ext/is_heap/1.cc
! a7d61c277e8b1113df3e7bb9499d8f2c  libstdc++-v3/testsuite/ext/is_heap/47709.cc
! a59d7a927f10b55011ce2b5366655dfe  libstdc++-v3/testsuite/ext/is_heap/check_type.cc
! 9d7fdbb990433ad357590e0127edeb0b  libstdc++-v3/testsuite/ext/is_sorted/cxx0x.cc
! c9c4179265d4f6aa500562cdc362a2a4  libstdc++-v3/testsuite/ext/malloc_allocator/89510.cc
! a447fb9efab38122dfb280c4a40e94ec  libstdc++-v3/testsuite/ext/malloc_allocator/check_allocate_max_size.cc
! ca5eac0d02389b84c9b549b22632f32e  libstdc++-v3/testsuite/ext/malloc_allocator/check_deallocate_null.cc
! b2358a3bfd25d12d068981d243b88ec7  libstdc++-v3/testsuite/ext/malloc_allocator/check_delete.cc
! a665da7b6efb6b283ac5bb4023db2eea  libstdc++-v3/testsuite/ext/malloc_allocator/check_new.cc
! 0ff164f273843224dc7b34ccd1959a57  libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_global.cc
! 7c6ea6963163140d89ecd67d25ffe067  libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_local.cc
! e98d639fc2a3338a0192dff4d0906f88  libstdc++-v3/testsuite/ext/malloc_allocator/eq.cc
! 56209189fbaa14cd9863fe97a5e71d81  libstdc++-v3/testsuite/ext/malloc_allocator/explicit_instantiation.cc
! 4454f0d05cfcbb7eb602b9404061627b  libstdc++-v3/testsuite/ext/malloc_allocator/overaligned.cc
! 868d2fbf0b9aaae166632a344d1e2e79  libstdc++-v3/testsuite/ext/malloc_allocator/sanity.cc
! 5f1b093d8820495323d97a73c2760f9c  libstdc++-v3/testsuite/ext/malloc_allocator/variadic_construct.cc
! cd177ae796f5133fd283ddac02a197b4  libstdc++-v3/testsuite/ext/median.cc
! 6ff999ebff9bbc8ff67bd9c30923f34a  libstdc++-v3/testsuite/ext/mt_allocator/22309_thread.cc
! 5fbaf7e46700cf8feba1524061a13923  libstdc++-v3/testsuite/ext/mt_allocator/check_allocate_big_per_type.cc
! b7e796c87b77ecf4bc118f9858521c4a  libstdc++-v3/testsuite/ext/mt_allocator/check_allocate_max_size.cc
! f43e830a5269626d478bf3e342670cf3  libstdc++-v3/testsuite/ext/mt_allocator/check_deallocate_null.cc
! af87eab7c45bfcae78ea6ce803f34ed6  libstdc++-v3/testsuite/ext/mt_allocator/check_deallocate_null_thread.cc
! d4c13d8a8b0c68f80834cbb697806ebb  libstdc++-v3/testsuite/ext/mt_allocator/check_delete.cc
! 78c747b71133a9c98fde06c658fac8fc  libstdc++-v3/testsuite/ext/mt_allocator/check_new.cc
! 50aefcb3096d49fd48eaaa8395fc2b6c  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global-2.cc
! 787ee03565030e5c456f89166d165cd7  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global-4.cc
! f8f4e1345e83f9da7cba3ad2ff0cc052  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global_thread-1.cc
! 415e419671afd52457e64f150e0e83bd  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global_thread-3.cc
! fea3eb9ebc7d79d4bf1d8068d191b445  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-2.cc
! 9d7266aa6b98b40325b9cc06b34d756b  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-4.cc
! 811ebb2d60f7ff1b08a9d7d64c5ef607  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-6.cc
! 7b76321933a7a1973ace7f7b74466edc  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-8.cc
! c9caa13d1a3b51391ad5c08e5b58c8db  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-1.cc
! ec284375df940a3f39c050ad89d2601c  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-3.cc
! eabc5be3a94cb5b6fc90ae8ae96169c9  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-5.cc
! e7ea1bb2023f9c9948a7ea5427cb504c  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-7.cc
! faf7dd51c9c1e16edb01b2684070d24c  libstdc++-v3/testsuite/ext/mt_allocator/explicit_instantiation.cc
! a413feca9a7bc4cf02b3a5af780ace6c  libstdc++-v3/testsuite/ext/mt_allocator/overaligned.cc
! 9e0caa577f198993ec4881b4d704e95e  libstdc++-v3/testsuite/ext/mt_allocator/tune-1.cc
! 4de11944df95cfad7285c97eba449c23  libstdc++-v3/testsuite/ext/mt_allocator/tune-2.cc
! abc3057946cf4ad914fc4f0ea4b2d87f  libstdc++-v3/testsuite/ext/mt_allocator/tune-3.cc
! d0a2457402c1d7f9be6f1684ff66784a  libstdc++-v3/testsuite/ext/mt_allocator/tune-4.cc
! 079e37035160c108a833ee9e09c7b785  libstdc++-v3/testsuite/ext/mt_allocator/variadic_construct.cc
! 8de1e59e69db5b4be8a60cba3765208c  libstdc++-v3/testsuite/ext/new_allocator/89510.cc
! f6d130503ae6fb61b5aaecf828259457  libstdc++-v3/testsuite/ext/new_allocator/check_allocate_max_size.cc
! 178228266c958458ecfbeee2ac5b50ef  libstdc++-v3/testsuite/ext/new_allocator/check_deallocate_null.cc
! 3fa862dc99851bad576e0e8d37daf536  libstdc++-v3/testsuite/ext/new_allocator/check_delete.cc
! 425fc69637e6ca82daa9e46721cb5b32  libstdc++-v3/testsuite/ext/new_allocator/check_new.cc
! f29cca7d632f5d01c016dde0cdb1d030  libstdc++-v3/testsuite/ext/new_allocator/deallocate_global.cc
! 1b428e101e272ac47e694d4cce6bd24f  libstdc++-v3/testsuite/ext/new_allocator/deallocate_local.cc
! 48d5e5699df7cb469081e5197a529447  libstdc++-v3/testsuite/ext/new_allocator/eq.cc
! b2b72476a98313185b689a0814bf7b09  libstdc++-v3/testsuite/ext/new_allocator/instantiate.cc
! c6f09bffb0fe7b1a48d532cd7d795a01  libstdc++-v3/testsuite/ext/new_allocator/overaligned.cc
! 3380cf3801e6657a29ec34950bf6ae29  libstdc++-v3/testsuite/ext/new_allocator/variadic_construct.cc
! 1f281aa61fb51cd360c90d4dc0539a82  libstdc++-v3/testsuite/ext/numeric_traits/numeric_traits.cc
! 7cdd4422896f56834d4688f33b5ff9b7  libstdc++-v3/testsuite/ext/pb_ds/example/assoc_container_traits.cc
! 844a377ca5db06bb0080779a3827ca9e  libstdc++-v3/testsuite/ext/pb_ds/example/basic_map.cc
! 255726612564891e6361c4c27ca7caef  libstdc++-v3/testsuite/ext/pb_ds/example/basic_multimap.cc
! b340644a5a51819403ceeb785e086ff5  libstdc++-v3/testsuite/ext/pb_ds/example/basic_multiset.cc
! 7ab581fa11ad80aadf8b47c647ffe71a  libstdc++-v3/testsuite/ext/pb_ds/example/basic_priority_queue.cc
! 35f64fc149527d3199e4519f16716224  libstdc++-v3/testsuite/ext/pb_ds/example/basic_set.cc
! 153c5353b97c458934010ae3bf237520  libstdc++-v3/testsuite/ext/pb_ds/example/erase_if.cc
! 3eafe8fa9674e76cf9ff204e23c1e831  libstdc++-v3/testsuite/ext/pb_ds/example/hash_find_neg.cc
! d8b67ab69adf756bfb963ecb2d3e2944  libstdc++-v3/testsuite/ext/pb_ds/example/hash_illegal_resize.cc
! c573292c3eabd820a0b91a291b217539  libstdc++-v3/testsuite/ext/pb_ds/example/hash_initial_size.cc
! 6870323ec0360d52408448fd48b559ed  libstdc++-v3/testsuite/ext/pb_ds/example/hash_load_set_change.cc
! 03424a51032450d9a6604ee837b248e5  libstdc++-v3/testsuite/ext/pb_ds/example/hash_mod.cc
! 34885f605316b2eb7cfb5133c059ad6b  libstdc++-v3/testsuite/ext/pb_ds/example/hash_resize.cc
! 9476d571d61c3deae942afe6f27c237d  libstdc++-v3/testsuite/ext/pb_ds/example/hash_resize_neg.cc
! ed4b903491d9a796a36c16cbca1cc5c9  libstdc++-v3/testsuite/ext/pb_ds/example/hash_shift_mask.cc
! f80b2154758a38f23cc562045beabd03  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_container_traits.cc
! 7d8c9330b45ecc4c0125ad4f9128fd53  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_dijkstra.cc
! ff8ec3bf080e22f6bf30a53401fa44e1  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_erase_if.cc
! a5c2980ff56742e38a7cc97fefd4ca54  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_split_join.cc
! dd8b5c58e2a828313368f7b6c189e097  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_xref.cc
! 3948d7c4a8a7ac8704b59c7437621236  libstdc++-v3/testsuite/ext/pb_ds/example/ranged_hash.cc
! 7f033630886857fc1f72711a1e88e595  libstdc++-v3/testsuite/ext/pb_ds/example/store_hash.cc
! 97a09f2a062a0b432601c59117f34780  libstdc++-v3/testsuite/ext/pb_ds/example/tree_intervals.cc
! ca156de9b85fbeb6acf42c2fcc3fd255  libstdc++-v3/testsuite/ext/pb_ds/example/tree_join.cc
! 6bf712e95a34154006d673e175e40548  libstdc++-v3/testsuite/ext/pb_ds/example/tree_order_statistics.cc
! 77498d0ec7e8cc8b4907a453987197b8  libstdc++-v3/testsuite/ext/pb_ds/example/tree_order_statistics_join.cc
! eaf7097dbc0e933adc9be65a785ebc2f  libstdc++-v3/testsuite/ext/pb_ds/example/trie_dna.cc
! a41315c5bfb135cebb3962ca86003fe7  libstdc++-v3/testsuite/ext/pb_ds/example/trie_prefix_search.cc
! 9d88a177372102e87599c3fa1910ea55  libstdc++-v3/testsuite/ext/pb_ds/example/trie_split.cc
! eb71f40eae0a4d915e26beb28cf721c8  libstdc++-v3/testsuite/ext/pb_ds/regression/associative_containers.cc
! a22a39f5384031a7a64dfe35b860efeb  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand.cc
! 758cca94c18e62933e1642fdb297a9db  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand_debug.cc
! eb63f5d07f96bd2b8b0e654c61edf39a  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand.cc
! 438ab0a10228adb0e385b613977a2c89  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand_debug.cc
! 5d84523c21000d96b94336847f6815ff  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand.cc
! 7f5ca7001bc6b579ca70b973db13db6c  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand_debug.cc
! f2e2239c0dfb79aded689ef6b7ea2d07  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand.cc
! cca891e4a9efe99b6bd23ae018fb6914  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand_debug.cc
! b5efc4b38c8f2190b8f61a886116d79a  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc
! 1f7eb6ec26545d05b1674b6caa9b8dd0  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand.cc
! 5130dc89231934f31ade0471b22276e7  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand_debug.cc
! 29d186fc85521a546ad19ea75972ef80  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queues.cc
! 5cbf90d16dc8b5970580f1a87019c13c  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand.cc
! 25c43e5cd430bc00f69d4701ef3c0a9b  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand_debug.cc
! 10787592a35d277cbbbf04539f930d4c  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand.cc
! 2aeb750c8b10a971d156a3e8a2e2efab  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand_debug.cc
! 79577925be587154f35fc030892b516b  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand.cc
! 1c43c0db1844e40e7a4dfc83a7764bd5  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand_debug.cc
! 26964e147457388c0e4c107247de9b6a  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand.cc
! 72df96fe340afbdf0d129fa4f1936cde  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand_debug.cc
! 7ec3e3eac5c36cec9d9ea30d714b4a83  libstdc++-v3/testsuite/ext/pod_char_traits.cc
! eb330b24a05c6918cc8f3f28c4f98b23  libstdc++-v3/testsuite/ext/pool_allocator/allocate_chunk.cc
! 1659d6ce9e192a0d3e9d9984e3d4ed92  libstdc++-v3/testsuite/ext/pool_allocator/check_allocate_max_size.cc
! 59cb74ae32379f13ca14129c2acb4b56  libstdc++-v3/testsuite/ext/pool_allocator/check_deallocate_null.cc
! 29d924969a7a557f9dc19fc35d301d30  libstdc++-v3/testsuite/ext/pool_allocator/check_delete.cc
! 0ada942c0dde5a20f0ae4ffb5f4fb974  libstdc++-v3/testsuite/ext/pool_allocator/check_new.cc
! 2e2573d20feee8f133e3d3ead3a18c2c  libstdc++-v3/testsuite/ext/pool_allocator/explicit_instantiation.cc
! 10fcf971960e3ae9acfa158b2efc6e3d  libstdc++-v3/testsuite/ext/pool_allocator/overaligned.cc
! 7cb75682a90eb4b0aad20bcdc379e885  libstdc++-v3/testsuite/ext/pool_allocator/variadic_construct.cc
! 3c80ad4ef58be8f95479d8d60e161810  libstdc++-v3/testsuite/ext/random/arcsine_distribution/cons/default.cc
! 5bd29ee2acd58c86af0de2d1672e350e  libstdc++-v3/testsuite/ext/random/arcsine_distribution/cons/parms.cc
! e8eb191f69633b106d43e289edd30d31  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/equal.cc
! 7a1e67ccdd4799a4d7120d78ae86fd0d  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/inequal.cc
! 8c21a8157ae441adca37caaf2f9d4efc  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/serialize.cc
! dd71bb94d15f6619699493a4474ec9e0  libstdc++-v3/testsuite/ext/random/arcsine_distribution/requirements/explicit_instantiation/1.cc
! 0593b8e14e2bd0f6328ef2bc5f558208  libstdc++-v3/testsuite/ext/random/arcsine_distribution/requirements/typedefs.cc
! bf5642fc594d390f677778e4a34438fd  libstdc++-v3/testsuite/ext/random/beta_distribution/cons/default.cc
! 0462653956909833b0ca538423b3d096  libstdc++-v3/testsuite/ext/random/beta_distribution/cons/parms.cc
! 20e839f875a9a10618d2d93ddff5ce0c  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/equal.cc
! 0e89a8eee4072b55547a9ffb9e4331e2  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/inequal.cc
! 66e70c5934cac8464d8b84ee31737b1c  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/serialize.cc
! a73298cf3f1b2df542ceb30601bde608  libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/explicit_instantiation/1.cc
! c6ff1af969747dd24b0300a26ae4a055  libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/typedefs.cc
! 42064ef8e8bedfd90812db315a9199b3  libstdc++-v3/testsuite/ext/random/hoyt_distribution/cons/default.cc
! 529c7fed7ad0763d8ef6ac106a45ee42  libstdc++-v3/testsuite/ext/random/hoyt_distribution/cons/parms.cc
! 6b088cea1dcc8b8743dc274c4dcb2188  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/equal.cc
! 1fe0188146941137193a2942deba3c0e  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/inequal.cc
! ab221832c2ce1d40e580911e1e5b8c8e  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/serialize.cc
! 8f8243301dd0b438045164d087d43ca3  libstdc++-v3/testsuite/ext/random/hoyt_distribution/requirements/explicit_instantiation/1.cc
! a63c13ac15ce98b5125c5c22eaa56e3e  libstdc++-v3/testsuite/ext/random/hoyt_distribution/requirements/typedefs.cc
! 6a236b9dea6a4b36eae2ceb08d0e10c8  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/cons/default.cc
! a7c05f9c0c70b615faffeaa49aee27e0  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/cons/parms.cc
! 2f804462041be85078675c84c0f9d935  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/equal.cc
! e48d482bfddd892aeb048ee00f83b7d5  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/inequal.cc
! cc8f054bb44023b5e8d6d660c2e8479c  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/serialize.cc
! 551eff5a74acd05b7c9e820d4b9fb8c8  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/values.cc
  5310d63384a16aab3ca0056f2cb3b3dc  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/pr60037.cc
! 64dfcfdeea7364979fcaad48a14f306a  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/requirements/explicit_instantiation/1.cc
! fd3c13b47f96985f16cb856cb8a0af6c  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/requirements/typedefs.cc
! fc3350baf87d63241ab4212d5160a80c  libstdc++-v3/testsuite/ext/random/k_distribution/cons/default.cc
! 3cea5ad2813b42d316f0f3bb93fbd3b6  libstdc++-v3/testsuite/ext/random/k_distribution/cons/parms.cc
! 6d487575a06897ab8a9bd980e64e4766  libstdc++-v3/testsuite/ext/random/k_distribution/operators/equal.cc
! 4086c502c4e05cc57edc27d17eb14fc0  libstdc++-v3/testsuite/ext/random/k_distribution/operators/inequal.cc
! 3f8b2720a76970b77f6c49216b894d2a  libstdc++-v3/testsuite/ext/random/k_distribution/operators/serialize.cc
! 916a5459159a465aa74af1982e53612a  libstdc++-v3/testsuite/ext/random/k_distribution/requirements/explicit_instantiation/1.cc
! a4e5aa4f5dfefe17bd69472c416ef58e  libstdc++-v3/testsuite/ext/random/k_distribution/requirements/typedefs.cc
! cf25129a971cbc7e680f26ba2f68ae32  libstdc++-v3/testsuite/ext/random/logistic_distribution/cons/default.cc
! eb71ce72eb68041910ea193a6cdffcbf  libstdc++-v3/testsuite/ext/random/logistic_distribution/cons/parms.cc
! b8cbe9e3c71e7132aa3a9629b0ad84a8  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/equal.cc
! 818cc92bd562aae0487a5f837b015410  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/inequal.cc
! 60886f2fbb0226c64ea79195eeb019da  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/serialize.cc
! 2cb382bd15ce1f06a900e1f26bf526b4  libstdc++-v3/testsuite/ext/random/logistic_distribution/requirements/typedefs.cc
! 5fcebf7c1263794bde716e14c992ebb5  libstdc++-v3/testsuite/ext/random/nakagami_distribution/cons/default.cc
! 69e60f5333354a2aa73075ee532052e5  libstdc++-v3/testsuite/ext/random/nakagami_distribution/cons/parms.cc
! 8ffb263b7f97835c1135a8fe70127f8e  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/equal.cc
! 05fa913077c02f22415ff0836f8898e7  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/inequal.cc
! 8c358a60fa4902b688f79a45007c1cb5  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/serialize.cc
! de7065831e600028b5196c776a882656  libstdc++-v3/testsuite/ext/random/nakagami_distribution/requirements/explicit_instantiation/1.cc
! 14275a8afbb51950b8a1fa0a1d38d9c0  libstdc++-v3/testsuite/ext/random/nakagami_distribution/requirements/typedefs.cc
! c9db9be41537ae09870788a8e9edc1c9  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/default.cc
! ee27aa9499d3be9f8fc7a235b05b2637  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/parms.cc
! 9612d7925ad8ca7735e2ede6dc15b4e4  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/equal.cc
! c5c9c1ea6acb276889dd60686d6903c7  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/inequal.cc
! 8746ebeaf324b8dd72084e0150d8525a  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/serialize.cc
! a5800bff182cdba1d37d8e1526e783c5  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/explicit_instantiation/1.cc
! d30b83c79bb5f56bf1a6846110cd682a  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/typedefs.cc
! 033006ea3b727abbdb1880b541e1fd66  libstdc++-v3/testsuite/ext/random/pareto_distribution/cons/default.cc
! 7967b51a5611fc7c157a493b3543f3a9  libstdc++-v3/testsuite/ext/random/pareto_distribution/cons/parms.cc
! 551881b567ebf87ece2069013034e7dc  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/equal.cc
! e0fcaea446adf561eb124c6cb6cc6f32  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/inequal.cc
! 788b5e378069f587e612e7a389a17230  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/serialize.cc
! cbfa29c22d8fef65cf4498e0ed35a93d  libstdc++-v3/testsuite/ext/random/pareto_distribution/requirements/explicit_instantiation/1.cc
! e7f4b1daf2949eaabd01dad0c65bbc17  libstdc++-v3/testsuite/ext/random/pareto_distribution/requirements/typedefs.cc
! 186803d8f8f5a19fe01c81aa358615e7  libstdc++-v3/testsuite/ext/random/rice_distribution/cons/default.cc
! 423489e872aa65340958a895e898b3c2  libstdc++-v3/testsuite/ext/random/rice_distribution/cons/parms.cc
! 599815eaab3bdf34948dcaf424993fab  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/equal.cc
! c3e60e55dd5a08f6fad1dc47e7020318  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/inequal.cc
! 63effb99622340fadef14fd7bb9500c1  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/serialize.cc
! c139164abba796d298f61056b447cc84  libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/explicit_instantiation/1.cc
! eae60b678ae0111c668f7ccae0fca808  libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/typedefs.cc
! a634bc785e9a07ce139e0afec8c797d2  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/copy.cc
! 5693630abac45ed90ac2121236157547  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/default.cc
! 0597a80cb5af15b6f71ef26ac73573d3  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed1.cc
! d8718d1a2fcfb021ce180f3bf7465f88  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed2.cc
! 10c4c325c70d9b6af72190d4ee2564db  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed_seq.cc
! a5e63ae2ca7a5e89cc861252eda31fb8  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed_seq2.cc
! e0390d27a5978bd64f36d32bbb28911b  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/equal.cc
! e7b2d81e7bef10cae2527ec1a70d4da3  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/inequal.cc
! c4ab5e3750699208e0124fdae6143011  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/serialize.cc
! 6a85995ba3011fe9e512a30b1d6ca26c  libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/default.cc
! f69ac545f5e8b8e4f8424296292e0dc8  libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/parms.cc
! 5c300d7c392d1e1296639da686e40924  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/equal.cc
! 72ec7ef56d7178bece37f11f2708ab71  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/inequal.cc
! 9d8040414d91f4f35ea13d08e43be129  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/serialize.cc
! a82a8909b1ab88e85b10d05c88dfca40  libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/explicit_instantiation/1.cc
! 005c20ac3230932e326a901e36848f45  libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/typedefs.cc
! 6b5b50e8d12956b49e8a8e783886b9fa  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc
! add5aeba2f669b61de6e89d4889e6282  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/cons/parms.cc
! 0fdf8fd16f7abb001e85e7350b6910aa  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/equal.cc
! ff2d060a9818f239cd5acbd442a507ba  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/generate.cc
! aa744e45608e68227e57245f660ccf74  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/inequal.cc
! 9df7ca949c5f4daebec2a4e187f2119d  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/serialize.cc
! 08d61ceb37200d4fba5b8eac59bceba4  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc
! 80a3f1ae6116bb71f879916e26732c25  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/equal.cc
! c8cb99c18f1e95723445cd5375d0d819  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/generate.cc
! 4a27fad27f25d7b30a7af40c66fb488f  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/inequal.cc
! 68c5d29a514138795518204a00265dc4  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/serialize.cc
! 3103767e3c063d7d4f102b4f91560bd1  libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/default.cc
! b44c182a080d94c5bb7dff22e867df79  libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/parms.cc
! 63ac19e1b6da6459aac5aa80780ac5ab  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/equal.cc
! 37fa32b26929d2bce297cb6ee227993c  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/inequal.cc
! 528c0d0b2248c5daf9a456c2832fc799  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/serialize.cc
! d010e51f7aab1cef56a343cdd7479024  libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/explicit_instantiation/1.cc
! ef141363fac929705f7c1a1a94d4a3c6  libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/typedefs.cc
! 34ce5f1b5e63e7b524f59c197ec7cc8b  libstdc++-v3/testsuite/ext/rope/1.cc
! 44aaa4eab00581339f018e25f618f1f8  libstdc++-v3/testsuite/ext/rope/2.cc
! 94d16e916ea0632b499b42a28207f8d0  libstdc++-v3/testsuite/ext/rope/3.cc
! 8a33a6b5d64f5513e2db31319d7bc7a0  libstdc++-v3/testsuite/ext/rope/36832.cc
! 000b71133a0780a0853a3c4f2da4595e  libstdc++-v3/testsuite/ext/rope/4.cc
! c393632c4f69d969fe8c5f293c44ded1  libstdc++-v3/testsuite/ext/rope/40299.cc
! 1b2489f0436fc1f6993b833d43c5952e  libstdc++-v3/testsuite/ext/rope/44708.cc
! d058f63a57471b1bac13c7472d829dfb  libstdc++-v3/testsuite/ext/rope/44963.cc
! 109d47bfcac37d824479652cebff73cd  libstdc++-v3/testsuite/ext/rope/5.cc
! efab101dad1dc6fc3744ad9169ad0d87  libstdc++-v3/testsuite/ext/rope/6.cc
! 542a3aa925925ee8b4f95674533b93d7  libstdc++-v3/testsuite/ext/rope/61946.cc
! a90a14bfbb1a36e332973061db685f1b  libstdc++-v3/testsuite/ext/rope/7.cc
! 0f434048b4adfa472afa6584c50d9d32  libstdc++-v3/testsuite/ext/rope/pthread7-rope.cc
! 96c8b73b78b6f9b0e8b6a4f3e7861ac4  libstdc++-v3/testsuite/ext/shared_ptr/1.cc
! 854c4ad33c0c5b4ab1bd2daf3d63eb21  libstdc++-v3/testsuite/ext/slist/23781_neg.cc
! d08fb1c934171313d8d5caa0a16f501b  libstdc++-v3/testsuite/ext/slist/check_construct_destroy.cc
! d9e84f4e1f95caf436c3d1231b6d2721  libstdc++-v3/testsuite/ext/slist/requirements/explicit_instantiation.cc
! 2ccc0b67bb5bee754f2016c0267857f3  libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_nan.cc
! b8713b22ee8f62f3cfc27df9e1f5c781  libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_value.cc
! 0b5a578acec5e21b24a31d972db2527d  libstdc++-v3/testsuite/ext/special_functions/airy_ai/compile.cc
! 7b5077d7b5c01b07efa6cac7e92e109a  libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_nan.cc
! e69b26b2f1415d5e1a19a5c7f612a8af  libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_value.cc
! c21a8c80cda5ba826e12d82e60f284ee  libstdc++-v3/testsuite/ext/special_functions/airy_bi/compile.cc
! 6d6a9dc37a23adaadbb99acb6136ca37  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc
! deab37f4343f58e8f1ae1efd98bcb82e  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc
! 00a837cab213432b9816d94d5c1e343e  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc
! 88d0997713a5bba46d9185ded38abf5f  libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc
! ba50db8e24aa47889f23679f4dab5cd7  libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc
! 16f11988fe94237eca3f3c62a12decf7  libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc
! 987111abc34bee6dbbb2f6b33c112472  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-1.cc
! 8fb939ee3d70824f3503dcc595c21a2b  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc
! 902f5dc2d576d804f8dc6c127c458db4  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-3.cc
! c6b4944d77abcf9947f290c402785318  libstdc++-v3/testsuite/ext/stdio_filebuf/char/2.cc
! e21657dbec8c301a9ed2c9c68dd77293  libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc
! 7fd8ac65c145a03148097bd2d3254be7  libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc
! 074bc405e8c8f1c8c08fccc4805c4dd0  libstdc++-v3/testsuite/ext/stdio_filebuf/requirements/explicit_instantiation.cc
! 42d51016a3a09895ca26c244d6d30c48  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/1.cc
! 7ae307db2b2d8739770b6c50f0e76eee  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-1.cc
! a21f6cfa47571a7a06e71d81ae6e23a0  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-2.cc
! 728c9f88049fdfd9f4c6b5feefa8ea01  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-3.cc
! 968bb0587ced55a1a2032aec709ef546  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-4.cc
! 238f8762406ad175b077e46c4ecaae35  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/35209.cc
! e9dd2326c2d725b88cd14824bb6a94ba  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc
! 5a5c54675cacd0bdad4bf3f0a002080c  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12077.cc
! 9a23b6666a37b69fa5932b77602a0589  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-1.cc
! 3958d437489cdb0ad520aaf0e1faef89  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-2.cc
! df8a04690c51cf63a8ff3a5cbbe5e066  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-3.cc
! e33986a38239883618ea696b278a1468  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-4.cc
! b64bcdde7cbc1912728399c41fa414ff  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/35209.cc
! ccbabcf3de80a105438a84d13d03518e  libstdc++-v3/testsuite/ext/throw_allocator/check_allocate_max_size.cc
! efc65da8a56c28febefae140f2f676b2  libstdc++-v3/testsuite/ext/throw_allocator/check_deallocate_null.cc
! 41b2c95af5412964fd7d44ddd480bae8  libstdc++-v3/testsuite/ext/throw_allocator/check_delete.cc
! 0660107df31c01ae385ac36a7bd122b8  libstdc++-v3/testsuite/ext/throw_allocator/check_new.cc
! 3628b93e8c1682881f5eca98c15a28f0  libstdc++-v3/testsuite/ext/throw_allocator/deallocate_global.cc
! 26b95ef8112bd57198d748f256cd76c8  libstdc++-v3/testsuite/ext/throw_allocator/deallocate_local.cc
! 2a7114808344ac3d6aded822c947106f  libstdc++-v3/testsuite/ext/throw_allocator/explicit_instantiation.cc
! 5158bf52024989cc689bb16d9392cd72  libstdc++-v3/testsuite/ext/throw_allocator/variadic_construct.cc
! 577742ed34aa26c3ace62746cab53a79  libstdc++-v3/testsuite/ext/throw_value/cons.cc
! 3eaaaca8f8322e269200076c1eaeae4d  libstdc++-v3/testsuite/ext/type_traits/add_unsigned.cc
! 7c29e61aecd925f5db62e19743d88d24  libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc
! b93406faf2d3e24d4045d0995a38e5bc  libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc
! f985470869483266d549ebcd81adb7f3  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned.cc
! b613ba10063fe26ff9907072274ec30c  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc
! 16b523b740717a3c4856c70b9bca5eff  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc
! 64f55bfe0aa41b7edbf7878a468ebb96  libstdc++-v3/testsuite/ext/vstring/capacity/29134.cc
! 80d45bd96be8002977bcc78d84ef7a13  libstdc++-v3/testsuite/ext/vstring/capacity/shrink_to_fit.cc
! 1f16ac5aa704d76c1bfcee8e13f1407b  libstdc++-v3/testsuite/ext/vstring/cons/58415-1.cc
! 4566bd2b388420b17715676371edab3b  libstdc++-v3/testsuite/ext/vstring/cons/58415-2.cc
! acec4385349ce6d44e830466ae496f9f  libstdc++-v3/testsuite/ext/vstring/cons/moveable.cc
! 7e244794848aa7c4227bf28e235c9c2d  libstdc++-v3/testsuite/ext/vstring/cons/noexcept_move_construct.cc
! efdd01e9bb4af8b0edb75b9e8d820fac  libstdc++-v3/testsuite/ext/vstring/element_access/char/58163.cc
! e5b86701c3df316786f76d1c4df8bf05  libstdc++-v3/testsuite/ext/vstring/element_access/char/front_back.cc
! 4160e56b67cdd4370417a7a128d8de23  libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/58163.cc
! 3c1a0a0d508dad459de960618946a07c  libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/front_back.cc
! 084f8442f9fcc8e0177c3c23cb3fd7dc  libstdc++-v3/testsuite/ext/vstring/hash/char/1.cc
! 6b15b5312bb2185f075a5f1097e776c0  libstdc++-v3/testsuite/ext/vstring/hash/wchar_t/1.cc
! ac124b4f5d426c6c6a3ba1d7bb3547f6  libstdc++-v3/testsuite/ext/vstring/init-list.cc
! f1f07cf78ed1e6deb36269b121400cda  libstdc++-v3/testsuite/ext/vstring/inserters_extractors/char/28277.cc
! 3703d5a718160ca7935ea1f0f1712036  libstdc++-v3/testsuite/ext/vstring/inserters_extractors/wchar_t/28277.cc
! f44f2812f273caa9a7bbf47d85aa31ba  libstdc++-v3/testsuite/ext/vstring/modifiers/assign/move_assign.cc
! 8ca610e993285c3edf3e30483267e6e0  libstdc++-v3/testsuite/ext/vstring/modifiers/clear/56166.cc
! 2e60844b06af4f8f07a73e3cadc287d1  libstdc++-v3/testsuite/ext/vstring/modifiers/erase/char/54577.cc
! 884d6a82b5cdecb94485f1f152732791  libstdc++-v3/testsuite/ext/vstring/modifiers/erase/wchar_t/54577.cc
! 621affbea5410dc6dadd93fa3245d4e8  libstdc++-v3/testsuite/ext/vstring/modifiers/insert/char/const_iterator.cc
! 7ec7cdbb74ce949781be9fc91a67073c  libstdc++-v3/testsuite/ext/vstring/modifiers/insert/wchar_t/const_iterator.cc
! c565379f1a3d2701749cee1cc0655041  libstdc++-v3/testsuite/ext/vstring/modifiers/pop_back/char/1.cc
! 73eb2234479a15da6fba75cd52c7fcdc  libstdc++-v3/testsuite/ext/vstring/modifiers/pop_back/wchar_t/1.cc
! 691e4ab545095d1f497d484749d0b8e7  libstdc++-v3/testsuite/ext/vstring/modifiers/replace/char/const_iterator.cc
! 24310a4ab2b2300ca243a1581d056aae  libstdc++-v3/testsuite/ext/vstring/modifiers/replace/wchar_t/const_iterator.cc
! 51217bb0d14f360078d1d96b2eabcc48  libstdc++-v3/testsuite/ext/vstring/operators/1.cc
! 227f87f8b0324605a80c67ad590df0f1  libstdc++-v3/testsuite/ext/vstring/operators/2.cc
! 5c702d48e5474cc4549ec1e6f9e53709  libstdc++-v3/testsuite/ext/vstring/range_access.cc
! 43cd4a1bf8ec89db906efdcf96507cbe  libstdc++-v3/testsuite/ext/vstring/requirements/citerators.cc
! b94e75968d609b00f03815979e651d27  libstdc++-v3/testsuite/ext/vstring/requirements/do_the_right_thing.cc
! d07229e5c6e53230bcf9e5cee7b1e9f0  libstdc++-v3/testsuite/ext/vstring/requirements/dr438/constructor.cc
! 0aed4ee7d0c49219d278cdd9b0cb4804  libstdc++-v3/testsuite/ext/vstring/requirements/exception/basic.cc
! 860a2e1ed657df7b405b9f37350b3482  libstdc++-v3/testsuite/ext/vstring/requirements/exception/generation_prohibited.cc
! 19c439b35f589677ad2f3c625cefde81  libstdc++-v3/testsuite/ext/vstring/requirements/exception/propagation_consistent.cc
! 49543ec15eb8e3fd3521fa338b24fa6a  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/1.cc
! ffd4d328ed3db14dab111a3eddab2930  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/2.cc
! 0944c7597859c8e4c0469665d9be9225  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char/1.cc
! 83585afb4d8a3fdef4f59527e0d6e1ac  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/1.cc
! 0999a57bef4c7b1a2ca128fc11ab31c8  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/1.cc
! f94bea1910070856d4cae7efca4beca3  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/wchar_t/1.cc
! 1888ed86914a7f7d2120635c05a1203c  libstdc++-v3/testsuite/ext/vstring/requirements/typedefs.cc
! b32547780ab0170daaf7ba32e51255b3  libstdc++-v3/testsuite/ext/vstring/types/23767.cc
! 924eee2893b01df8be8132209d49e286  libstdc++-v3/testsuite/lib/dg-options.exp
! c5464cd19703c04d14fbb8d161e35be7  libstdc++-v3/testsuite/lib/gdb-test.exp
! 119ea02c7789706fa631d1a0e54bf29d  libstdc++-v3/testsuite/lib/libstdc++.exp
! fcd3449d872e7b23bfb6165aac9b9fd9  libstdc++-v3/testsuite/lib/prune.exp
! 6554148313affda6d0d8314d097b450d  libstdc++-v3/testsuite/libstdc++-abi/abi.exp
! 33cb7d617aef9ee6c04c69c0e91f20b6  libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
! 17358114f0793d43ab875182de659dde  libstdc++-v3/testsuite/libstdc++-prettyprinters/48362.cc
! 7a020d565ba8c8ed2f851550aef0e2b1  libstdc++-v3/testsuite/libstdc++-prettyprinters/59161.cc
! f19315bee57ac648f15842af63dc132d  libstdc++-v3/testsuite/libstdc++-prettyprinters/80276.cc
! 6a13a3001a2e2608ab81bb5d04f2eed6  libstdc++-v3/testsuite/libstdc++-prettyprinters/91997.cc
! 3681a82bbc6871b4ee9416dc9f079e9c  libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc
! 88968bdbac969080d58d376da96f633b  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc
! 9685154dcc12abf576e2f246d8bf11e4  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc
! de4863975b6ff3936ee27e239a50c3fc  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx20.cc
! 9db277893db6463f4a286e2e86d3ba23  libstdc++-v3/testsuite/libstdc++-prettyprinters/debug.cc
! 6ee25bfa5657675a8107bc8df6359203  libstdc++-v3/testsuite/libstdc++-prettyprinters/debug_cxx11.cc
! 89bc588d761a075ad9da5943c19c1174  libstdc++-v3/testsuite/libstdc++-prettyprinters/filesystem-ts.cc
! 7cbf6090dac51d3c96868d8dee34fbe2  libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc
! 4f118feae980fe79d39e02f7c3b32496  libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp
! 84dbf4276cdf8e8dc2259fc95a5804ba  libstdc++-v3/testsuite/libstdc++-prettyprinters/shared_ptr.cc
! f0d6fd71bb3e8a70748e302dc9102088  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
! c6fdaec294dc32af6281c38c83d9d891  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc
! 5fdc102918309dda0f2f514ff52850e1  libstdc++-v3/testsuite/libstdc++-prettyprinters/tr1.cc
! 4c9640c7acfd2400222f26a953489714  libstdc++-v3/testsuite/libstdc++-prettyprinters/whatis.cc
! cc762851bcdba119feec0f3235e4468c  libstdc++-v3/testsuite/libstdc++-prettyprinters/whatis2.cc
! 981266ed691c1072655ca68488588724  libstdc++-v3/testsuite/libstdc++-xmethods/array.cc
! 9b015a334512eb7b9cd10b23704d2064  libstdc++-v3/testsuite/libstdc++-xmethods/associative-containers.cc
! 2f1ee0a52144900994e38822ec0e06b5  libstdc++-v3/testsuite/libstdc++-xmethods/deque.cc
! 5727258a9a678c86a4dbb0202c47f702  libstdc++-v3/testsuite/libstdc++-xmethods/forwardlist.cc
! 00c6eeeddd7a873ee1bda17c477bcf4e  libstdc++-v3/testsuite/libstdc++-xmethods/list.cc
! 7783f7544a07c1bd618c4ea0a6defb19  libstdc++-v3/testsuite/libstdc++-xmethods/shared_ptr.cc
! 26407ff2a7db6873b71a3eb2107b6a56  libstdc++-v3/testsuite/libstdc++-xmethods/unique_ptr.cc
! 4e56f23a14a974605e4004e744b706d0  libstdc++-v3/testsuite/libstdc++-xmethods/vector.cc
! 98dc8dabc6d5bbb2cb89d6ed0664a043  libstdc++-v3/testsuite/libstdc++-xmethods/xmethods.exp
  af003639dee7c3edb68531616f1c3b8c  libstdc++-v3/testsuite/performance/20_util/memory_resource/pools.cc
! a3015c2fedfe5c0d21fe2e964c44df3a  libstdc++-v3/testsuite/performance/21_strings/append-1.cc
! 413645b123c9fb9ea29c99a307ce73b8  libstdc++-v3/testsuite/performance/21_strings/append-2.cc
! c7911c5fd49962fc6afe82248126a662  libstdc++-v3/testsuite/performance/21_strings/cons_input_iterator.cc
! b105ec8793fcc2922dc7ff765d7deb44  libstdc++-v3/testsuite/performance/21_strings/copy_cons_and_dest.cc
! ca89de509a18778419b9b8e5dbf1ae04  libstdc++-v3/testsuite/performance/21_strings/find.cc
  efa1608e1841a10bba94a6d4de361846  libstdc++-v3/testsuite/performance/21_strings/hash.cc
! 08a38be1f6a01f7ed2b13475256b3eb5  libstdc++-v3/testsuite/performance/22_locale/is_wchar_t.cc
! c2c2adfe56d8ea54ec7a15a2889e4adb  libstdc++-v3/testsuite/performance/22_locale/narrow_widen_char.cc
! 9f7d37e9743faa762cda18871022b05b  libstdc++-v3/testsuite/performance/22_locale/narrow_widen_wchar_t.cc
! 70471ed5198b08d9d027addbd830a1fd  libstdc++-v3/testsuite/performance/22_locale/wchar_t_in.cc
! e9e646c7f7f63b0a6fb671211d24d15b  libstdc++-v3/testsuite/performance/22_locale/wchar_t_length.cc
! 12a13155b0453b641f037b35d597f689  libstdc++-v3/testsuite/performance/22_locale/wchar_t_out.cc
! 69abbcdb5791ca310336552f0b2a7781  libstdc++-v3/testsuite/performance/23_containers/copy_construct/unordered_set.cc
! 8a5dd7f9229a845f821192aa81d69259  libstdc++-v3/testsuite/performance/23_containers/copy_construct/vector_bool.cc
! 3fc018c9392875e443da1e6bfb010cd1  libstdc++-v3/testsuite/performance/23_containers/create/map.cc
! e72277a99ed9ac77ed236acb5b8fe462  libstdc++-v3/testsuite/performance/23_containers/create_from_sorted/set.cc
! d40ef4e36601bba4a650d83152fa609b  libstdc++-v3/testsuite/performance/23_containers/create_sort/list.cc
! 1da4427535c280f9b400ca63608277cc  libstdc++-v3/testsuite/performance/23_containers/find/map.cc
! 269080f38f962553a16caf99893ad9ce  libstdc++-v3/testsuite/performance/23_containers/index/map.cc
! dfdd80c06d0a63dc58b866a8ec74c131  libstdc++-v3/testsuite/performance/23_containers/insert/54075.cc
! aea4d0338ac79855461c9df4e62c17cb  libstdc++-v3/testsuite/performance/23_containers/insert/81476.cc
! 45f96b0ff100067fe44e74ce2a97120b  libstdc++-v3/testsuite/performance/23_containers/insert/associative.cc
! 184f4e704095181a56171480411386a1  libstdc++-v3/testsuite/performance/23_containers/insert/sequence.cc
! 1433af3ac9ce1f5f2a7429f14ab83b8a  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_map_array.cc
! df5f68754c32eeeee6501998587794f5  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_multiset_hint.cc
! dfb8f9f657f7e8459349d398c7244802  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_set.cc
! e1370bf0fa76d0c64a018ae695ac6b75  libstdc++-v3/testsuite/performance/23_containers/insert_erase/41975.cc
! a883a33861fa29a638808ae637e8f6f5  libstdc++-v3/testsuite/performance/23_containers/insert_erase/associative.cc
! a0f59c19103cca6a3b927be0ccf59820  libstdc++-v3/testsuite/performance/23_containers/insert_from_sorted/set.cc
! 70f5c084a15380e8b5219a64329e2bcc  libstdc++-v3/testsuite/performance/23_containers/producer_consumer/associative.cc
! c101b004e7a9bca0e236dff5db99f0d2  libstdc++-v3/testsuite/performance/23_containers/producer_consumer/sequence.cc
! 2312954e9603359dccc179b662cafbe4  libstdc++-v3/testsuite/performance/23_containers/range_construct/deque_construct.cc
! f9b91693ca67cb945958004a93eb6dc3  libstdc++-v3/testsuite/performance/23_containers/range_construct/list_construct1.cc
! 6e997f821f7ed3012715d1d3126e9f10  libstdc++-v3/testsuite/performance/23_containers/range_construct/list_construct2.cc
! 23e88d3ce58e41412b96d5ad669a7b9f  libstdc++-v3/testsuite/performance/23_containers/range_construct/vector_construct.cc
! 66912a41fed5fb6acbf19cea13910cd0  libstdc++-v3/testsuite/performance/23_containers/resize/vector_bool.cc
! 74767342e8dfbe632544af7fe61feb4b  libstdc++-v3/testsuite/performance/23_containers/sort_search/list.cc
  9d1d6439b2e93ebc48779237c0969b25  libstdc++-v3/testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc
  ab09b2da7335847dccf2fd63d8b8fd89  libstdc++-v3/testsuite/performance/25_algorithms/copy_deque_iterators.cc
! 2a689c0558d9f0fb7caf236380ac86e5  libstdc++-v3/testsuite/performance/25_algorithms/copy_streambuf_iterators.cc
! 8d01b41354fe6478d746361f62685614  libstdc++-v3/testsuite/performance/25_algorithms/equal_deque_iterators.cc
! 73ab7cef0d2a3ecbd129da244b9cacd8  libstdc++-v3/testsuite/performance/25_algorithms/find_istreambuf_iterators.cc
! 45fcd99f82ae5aae15a5a23f65202a7b  libstdc++-v3/testsuite/performance/25_algorithms/inplace_merge.cc
! 3366ec5d08577945f60118bfe24db5c3  libstdc++-v3/testsuite/performance/25_algorithms/lexicographical_compare.cc
! 710f466d012ed4486db7573884e82502  libstdc++-v3/testsuite/performance/25_algorithms/nth_element_worst_case.cc
! 731c5f925c4a650da148f103c34bc3b5  libstdc++-v3/testsuite/performance/25_algorithms/search_n.cc
! a80e6c847aa3a616c8d4f4477e958618  libstdc++-v3/testsuite/performance/25_algorithms/sort.cc
! a3a8cd36fd149d701891954268950801  libstdc++-v3/testsuite/performance/25_algorithms/sort_heap.cc
! 8d1cf2183ec014bea842f15ad89f0822  libstdc++-v3/testsuite/performance/25_algorithms/stable_sort.cc
! 0abfceed783f6a4f128aadd785a16b0f  libstdc++-v3/testsuite/performance/26_numerics/complex_norm.cc
! 5fa04af34a8b93a3c4e4891d88b947c6  libstdc++-v3/testsuite/performance/26_numerics/random_dist.cc
! a742efc2a1843ba744bad8b4ac429dd1  libstdc++-v3/testsuite/performance/26_numerics/valarray_gslice_to_index.cc
! b9d582e24f279be2160e4d962a817e5a  libstdc++-v3/testsuite/performance/27_io/cout_insert_int.cc
! 4712508b0486d698cacbb026e41a2026  libstdc++-v3/testsuite/performance/27_io/filebuf_copy.cc
! c0b3993a2893662986034203df0a57c2  libstdc++-v3/testsuite/performance/27_io/filebuf_sgetn_unbuf.cc
! a7e81b92d5838d2bad5bd18977db091c  libstdc++-v3/testsuite/performance/27_io/filebuf_sputc.cc
! 3b207581b5bc15c8028d521ffcc2ba8c  libstdc++-v3/testsuite/performance/27_io/filebuf_sputn_unbuf.cc
! 21aa465b10796da2c47452008c7a3c7f  libstdc++-v3/testsuite/performance/27_io/fmtflags_manipulators.cc
! 9ef9dd3a502d6019553f113e219fd7e9  libstdc++-v3/testsuite/performance/27_io/fstream_seek_write.cc
! 051a5d97cd720f6b96e849813d396eff  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_chars.cc
! 622495f9da0efdc60877aaa7c6414012  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_float.cc
! 82894dce8b756ffaf116ef311d5a671c  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_int.cc
! d0fa460448cf849062b4e12322e0b7b1  libstdc++-v3/testsuite/performance/27_io/ifstream_getline-2.cc
! 694a7e6aaa6a9d01fe2c884c21fd1a00  libstdc++-v3/testsuite/performance/27_io/ifstream_getline.cc
! 015a27bb76744101e623763de55d1fc0  libstdc++-v3/testsuite/performance/27_io/ofstream_insert_float.cc
! 468e9972ab1943ed688fd9c2a701563d  libstdc++-v3/testsuite/performance/27_io/ofstream_insert_int.cc
! abcfa2d56496c7b0675a6aad58db784b  libstdc++-v3/testsuite/performance/27_io/stringbuf_overflow.cc
! 478a9509a9dcf15e5dbab7438519cdba  libstdc++-v3/testsuite/performance/28_regex/range.cc
! 5c0025725f46db325086f0ff777c5c37  libstdc++-v3/testsuite/performance/28_regex/split.cc
! f9828291df7ccf521a14021e8e79742d  libstdc++-v3/testsuite/performance/28_regex/split.h
! f16665237e786f74ee26cc78612dd599  libstdc++-v3/testsuite/performance/28_regex/split_bfs.cc
! 4d2503c7d6bac468e193718904bb8bc1  libstdc++-v3/testsuite/performance/29_atomics/atomic_flag.cc
! f5c10182f558453574592cebe103f8e4  libstdc++-v3/testsuite/performance/30_threads/future/polling.cc
! 82579f1484cfe7361a40e3fba185c398  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_find.cc
! 0492f116af2dadb43f56d405b1e1016a  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_subscript_find.cc
! 33672096ab9f0bd375cf2c13829295d9  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_subscript_insert.cc
! 9fa8069b721134a596bf7612ca154831  libstdc++-v3/testsuite/performance/ext/pb_ds/all_text_find.cc
! 3b586b1a131a67ce58b9f640b9c96609  libstdc++-v3/testsuite/performance/ext/pb_ds/hash_int_erase_mem.cc
! ca0caa09a4a6e14918f33097f291d068  libstdc++-v3/testsuite/performance/ext/pb_ds/hash_zlob_int_find.cc
! 076203b84cd4e7d17f6734a471d0135d  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find.hpp
! 63320c10f543666c84bf642e96e263e6  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_large.cc
! 5dbb06a3ddccdd6b0b7e64bb8c0cf67a  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_small.cc
! 3bc5b511d2f1aede3e0398247c510ac9  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert.hpp
! dece7627ed40f60eb3f77bb537137238  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_large.cc
! a2bd695b8e79699145576b597dbd3058  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem.hpp
! db48135b2f749afa166093695089820b  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_large.cc
! be10e96eed2bf4b37cc3e481b90da7db  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_small.cc
! dbf8dce19a78966ea7fc166ba8292b94  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_small.cc
! da48f56c36c4de83c2a6e3c83c541c71  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_int_push.cc
! 9f57eccae9d213a4fd2138271ac45749  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_int_push_pop.cc
! 7e4b181511561d45e46cb890dac4213f  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_join.cc
! 57b87079177d4ca583ef07a8d9dc5069  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify.hpp
! 2ebe3078d821eba1dd268988798a6586  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_down.cc
! 4cb088f361932c45b6aea07eae3a83a2  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_up.cc
! f90830c0a79b700c2ce1d5b1a3a62081  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_pop_mem.cc
! 19dea0156a84a22a144a14b22cb13cd0  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push.cc
! 0b79e79d70a351f7be433d6d19783e8b  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_pop.cc
! 5748cf85056d39df98b0e4fc6e62cc2f  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_order_statistics.cc
! 62df851c556fdf0dc179581b822e362d  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_split_join.cc
! 4165c874077b0e8d95c1f335edfb53d0  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_insert.cc
! cd7e1bbc2394e1a426cbdd2ce1be5571  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_lor_find.cc
! f259817570c5d9e08019312efbc6a98a  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc
! ff539426c4992251ac0b33281463ab13  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc
! 75e893f860323e4fd6a423ba37adfcea  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc
! edda30bc37f7d6e3b1b7fe5a7bbdb56e  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc
! 2b613ab046f48f865479d9a2e94dd4d1  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc
! ade317fb9891609b52ca5e784e2c39d4  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc
! 703e2c5c8c9db5e8ecbc4a71836f0bee  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc
! 2fade8d5c26135999718e8a335eca5c3  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc
! 12f41103949b8200c23234da40a5abeb  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/pr86655.cc
! ae2b5a661508a6a70d41e8ba9955f8fc  libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc
! 405d9f0b386bf3b8ae4ce166e2c510b4  libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc
! 9fe652df995f443170c7f87365f5905f  libstdc++-v3/testsuite/special_functions/03_beta/compile.cc
! 52aff8f3d36cd8231decee87a2d88ab5  libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc
! c5811f120b2f656885d8b73b4aad411a  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc
! 9f46c25b7b46277eb37deacb7b0f2928  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc
! 7356e6b3509a11db3651124852487001  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc
! 9c9b4be5c123de5b2827e35a1142b0db  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc
! 8443e879f1569a0d9b4c7d0b3315593a  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc
! 1ecf83948a1ca2ae4b4e3bfc2256cc12  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc
! 491fcb59c3a729b0747cf2cc989b50f1  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc
! 13f8c5621c6f515436de06e510bdee8d  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc
! bac9e58ce3f7704653d5ad3828597a66  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc
! aa6193dddc5ef4950a4ff92f2bafd0d2  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
! c576868e74dd9810dda468524e577fba  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc
! 34e86986efb285b0c1fccf22db23d460  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc
  d40969d8e7a8973cde9b227f9ce95961  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc
! d347362cea1485a8837d1a0fa26e2507  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc
! 4f372e5f01e646bbfabc481ec05167aa  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc
! 7dc5ff1f103c6dee93edb6622d10d07f  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc
! 8927d07ad302b4d7dd4fb64ea56965bf  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc
! 48d14394ec85f3e9d23a7535750cf1f7  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc
! 9bc1bd88b63dfa3fc14987b438e38b52  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc
! 31db5a5318bfc18a5b2218a06526014c  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc
! a175a9255920bb127e34f6c7b23978c9  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc
! b3021851e32624ee595f1e22911f919f  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc
! f0311348e1260dc09d4b688fcaf6d074  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc
! 0034dae9afa056a8f2779f5a25650e5a  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc
! 12d97a5f1b0ed7b813c35e15b175a095  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc
! 14fcb1be1d438b6e078084dcaa496c70  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc
! ab47eb40fcd5774929cacba90e3e255d  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc
! 48bb6704561f368d3393ee04748cff42  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc
! b18b7378d29d86f57a1d6828b2e9326d  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc
! 41e52d10d7f3e224f791c04bdac129eb  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc
! 13f02a98aa1fd5ff64df8b4ea10ecd80  libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc
! b5746c9754f32c5237e95a0ceddb8688  libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc
! 9c550f621e9ac5c52949f064281831ec  libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc
! c682809a56686e9c79b9858e69236e4c  libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc
! 345668540617a19731d5692a394b9cec  libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc
! 870cae888df5da1e15f41c02d43bc74a  libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc
! d12240acfc7e1bf4eb18ed73b52ce045  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc
! 519e124c31c1acceae89bfe5d02505b0  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc
! 23f9161af4655365ef0fdf8a974f36dc  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc
! a9ef0ce485705954ed1c1d2416d0b907  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
! 7919383b85cb9a9f6fd1d4bffe21697c  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc
! 49ca87e19ff141c2cde3fa885d9c3309  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc
  51586062b3eeaebd7af37c198695dc60  libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc
! c5e457a8f0e388f4a3d345c5b0e909e8  libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc
! 1a20def4b5295fb99476d98685268cad  libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc
! b77f7eaaf114449fa891a6e9600bbdf0  libstdc++-v3/testsuite/special_functions/14_expint/compile.cc
! ce52c0f0104dbb505ef65eb979e566d6  libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc
! 4b3554e76624cdd357d7405b957bef1c  libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc
! 2d7f0ed0728e977bf3a16c9d5dd37f30  libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc
! 140d67a2c0986a6a61c36acfe1c37e3c  libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
! 459f8558ed966eee9eb9f2bac3442f7d  libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc
! ea563ba4fbf74ff41bf563b6d59504d5  libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc
! dc06c5941fe4ac96d83f8bccdc0e0947  libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc
! b5c8b22da20548c7e12f29006594a3b4  libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc
! 5907d4043bfd735ae41d46d661eaa3c9  libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc
! 4c1ac9a174d36cbf38940309d40acf4a  libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc
! 20f2cbeb6a88590f44f5580ae6d5e7db  libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc
! c717c60a6b3226964da0cf69d23a490a  libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc
! 3a7c6b4ec87069038c3db64563099d7b  libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc
! 99bf72f490d45e59b795ecae5ef996c8  libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc
! 8fe116a72527e14499b7a46fa1114002  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc
! f54a18bbe60db2e2d404bb9ccb93fab6  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc
! 066077f42e03a0e12cefbfc0e2f94af3  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc
! 23c63d77f182e7e9df1a8411d114147e  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc
! ef43ddb9d8c764d8ab57283c9655da29  libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc
! eae7e632c961dd37772c95b83329fb6b  libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc
! 6946de3a708745bbc2e0463743b514a5  libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc
! 55f66d1d62f8ad4293a2aaf6f6457318  libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc
! 4f196889c4ce7d3785d369153f35e1c6  libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc
! ce4cf0b7b3bb5152df35c02e23a21e12  libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc
! 84a6f9729c7d643321ad6fe05a57f6d7  libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc
! 510dacd33b7818dc8a894e08df6403ff  libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc
! 8c99de1b86d9456241e0437230560528  libstdc++-v3/testsuite/special_functions/20_sph_legendre/pr86655.cc
! 7863b227915ec19e8da759ec9b164f66  libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc
! 440d74e4e526c886ebc1017985a5cecc  libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc
! c00431ca2194e37ebee1dd19cd4e42cb  libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc
! 6a46a0522d03d67aad878553d7ec3493  libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc
! e6ff7c66282e5df640690dfacd11b1dc  libstdc++-v3/testsuite/std/concepts/1.cc
! 954fb245f00bfe4b5daa9e88bb2221b7  libstdc++-v3/testsuite/std/concepts/2.cc
! 9b9b0a3ecb5dc7130e6919f28a057b84  libstdc++-v3/testsuite/std/concepts/concepts.callable/invocable.cc
! ddd9437ebeabe06fcc4ea0eee4627f29  libstdc++-v3/testsuite/std/concepts/concepts.callable/regular_invocable.cc
! 9d4b70dd8e2b6e3d4e04c494ec6b09d5  libstdc++-v3/testsuite/std/concepts/concepts.callable/relation.cc
! 23a55556a1a2466d437337f8bdfd6b98  libstdc++-v3/testsuite/std/concepts/concepts.callable/strictweakorder.cc
! d7b681b743d359309ce9454316c77d83  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.arithmetic/floating_point.cc
! 56cd00db34cfc75f68b88aacb987b37d  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.arithmetic/integral.cc
! c80d7c7a95f276266870c2b1dc3a79fe  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.arithmetic/signed_integral.cc
! 2da3a73a5b291ad9822b8069473e5844  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.arithmetic/unsigned_integral.cc
! a6eb6d58c672edef911451c3e4ba7a02  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.assignable/1.cc
! a976c675e6416000478b749c99482efc  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.common/1.cc
! 2357c5058ea214fbf40ea45baeec2b30  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.commonref/1.cc
! 26f7ff3a6d24b85ce952bc5254ba8a19  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.constructible/1.cc
! 88617dce4213a135c221c5449a391a4a  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.convertible/1.cc
! 64fad3599e665204949b2738853564a4  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.copyconstructible/1.cc
! 5b5aac0945e92588f742be5728d89b7c  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.defaultinitializable/1.cc
! 4e6b5615ef465b1c584143b7dd24fa04  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.defaultinitializable/lwg3149.cc
! e30b6b1eedb1119d37c97d61b59bfe40  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.derived/1.cc
! b95bcbe27865fa3b574b1be5e7f8381c  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.destructible/1.cc
! 9e79d86403ce083289b326e5c01eef36  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.moveconstructible/1.cc
! d89847c5ed98cf6dc5319eba2e06b51a  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.same/1.cc
! 3961e877ce4db124d330c22d95277cae  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.swappable/swap.cc
! d9303842b16503f09f41ed89dff9f6b2  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.swappable/swappable.cc
! 76f6a0f9fbf952db96440b5ec567af44  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.swappable/swappable_with.cc
! 05ba2122be233137a6c4b43cf41b591a  libstdc++-v3/testsuite/std/concepts/concepts.object/copyable.cc
! 729260af8e9d6b7641c61aacf1f06293  libstdc++-v3/testsuite/std/concepts/concepts.object/movable.cc
! edabfb3fdf4f334dc2aae1c5e88617cf  libstdc++-v3/testsuite/std/concepts/concepts.object/regular.cc
! d6a47138aa2bcd1389e0a2bc2cb9a916  libstdc++-v3/testsuite/std/concepts/concepts.object/semiregular.cc
! 73c89b1d1ffa6497af6738d0a10b09a4  libstdc++-v3/testsuite/std/ranges/97600.cc
! f6a29465f455b7a57593ae8a66caea26  libstdc++-v3/testsuite/std/ranges/access/begin.cc
! 5c19387e773a874288219ba90a36a8a4  libstdc++-v3/testsuite/std/ranges/access/begin_neg.cc
! 184149146b77a85ded94b8b7c5a64ff7  libstdc++-v3/testsuite/std/ranges/access/cbegin.cc
! 42cb81c47daed4e17571e91c1130fbb9  libstdc++-v3/testsuite/std/ranges/access/cdata.cc
! 3f1a8f331a6b3763ca3a9960b9e843e0  libstdc++-v3/testsuite/std/ranges/access/cend.cc
! 56280017abf58c62b9c687eb8bc28689  libstdc++-v3/testsuite/std/ranges/access/crbegin.cc
! a6ad3007f5ce9824e90cfe812d1af68f  libstdc++-v3/testsuite/std/ranges/access/crend.cc
! 2a3f5fa9d07bf9e9aa50ab6bc2628a8c  libstdc++-v3/testsuite/std/ranges/access/data.cc
! dde1820de9932f21dfee1d33e7e70490  libstdc++-v3/testsuite/std/ranges/access/empty.cc
! e3d33360513687ab0dd3751b8de5a5a1  libstdc++-v3/testsuite/std/ranges/access/end.cc
! 135bbc0eb03e557ab88875ace9ee0980  libstdc++-v3/testsuite/std/ranges/access/end_neg.cc
! 53ebbeefa5ac21f1e668c4e6393441bb  libstdc++-v3/testsuite/std/ranges/access/lwg3467.cc
! 28d776d0c6464cb2f9bdea975133ab66  libstdc++-v3/testsuite/std/ranges/access/rbegin.cc
! b3cf9d2edb6c3e710065fa8dad5b03b7  libstdc++-v3/testsuite/std/ranges/access/rend.cc
! e4592ea1a260b0ced4b6d3f61793460a  libstdc++-v3/testsuite/std/ranges/access/size.cc
! e4e886ed5e6b5c520951928e09843313  libstdc++-v3/testsuite/std/ranges/access/size_neg.cc
! 86d59149f5273bbf5a9af7a25f1d0ba8  libstdc++-v3/testsuite/std/ranges/access/ssize.cc
! 18db2c80e9edd807d8e894df57bfa625  libstdc++-v3/testsuite/std/ranges/adaptors/93978.cc
! 551333c56748ecbac1d26b7e4cccc989  libstdc++-v3/testsuite/std/ranges/adaptors/95322.cc
! fd10cb8fed0aa319ece5db612f3e92f4  libstdc++-v3/testsuite/std/ranges/adaptors/99433.cc
! b043773576d00674dce74ddbf28129e7  libstdc++-v3/testsuite/std/ranges/adaptors/all.cc
! 70645e37b88d307dc15771cd6a6e26b8  libstdc++-v3/testsuite/std/ranges/adaptors/common.cc
! 81c8f862a1084443f4afec002edd9cfe  libstdc++-v3/testsuite/std/ranges/adaptors/conditionally_borrowed.cc
! bd219a8b5c7920e7e3d2276351044dac  libstdc++-v3/testsuite/std/ranges/adaptors/counted.cc
! c2ed5910800faa41ce27383bcfbaf6b4  libstdc++-v3/testsuite/std/ranges/adaptors/detail/semiregular_box.cc
! 1f9c75d0ff4dcf1f0a325584c9a2c4f5  libstdc++-v3/testsuite/std/ranges/adaptors/drop.cc
! 93a1ae3dea7b82345420d2bdaa1de02a  libstdc++-v3/testsuite/std/ranges/adaptors/drop_while.cc
! 8258f2f1ebe86a3ceaca6402e384e578  libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc
! 34c74de0566311054836144ea4703423  libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc
! 617855f59be8e525bffc8ffd46f6239a  libstdc++-v3/testsuite/std/ranges/adaptors/join.cc
! e3185f7254676a8043d2594eb1e4500f  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3286.cc
! b6253cd90778666795033228ba19116e  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3313_neg.cc
! 2045ce6f1792467ba47ef569ef1c18e2  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3325_neg.cc
! 0adff8eb311fb217892db3c3b5af480e  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3406.cc
! 5ecca3a492a20bd850a7d8d2ad515ba4  libstdc++-v3/testsuite/std/ranges/adaptors/p2281.cc
! ae2bf74b1c32b08281f621e042ce7282  libstdc++-v3/testsuite/std/ranges/adaptors/reverse.cc
! 9a3c66716d72856eb1b47891d66c6ec4  libstdc++-v3/testsuite/std/ranges/adaptors/sizeof.cc
! bcb1ec843cd81e5a86c13c7bf22d25da  libstdc++-v3/testsuite/std/ranges/adaptors/split.cc
! bd71e7bb235819e22086d8d4d339e23f  libstdc++-v3/testsuite/std/ranges/adaptors/split_neg.cc
! e0b2e6329f5a12a3bf25bb0e21723217  libstdc++-v3/testsuite/std/ranges/adaptors/take.cc
! b324814505dd6ba965f51745e6aa5722  libstdc++-v3/testsuite/std/ranges/adaptors/take_while.cc
! 7e2cf5df2fc95571165ec1b801f5c8cd  libstdc++-v3/testsuite/std/ranges/adaptors/transform.cc
! 2aad27e8e6dc8644876c7dcdaef7fa60  libstdc++-v3/testsuite/std/ranges/empty_view.cc
! abee4ec65cefb3600f85cec4913c7946  libstdc++-v3/testsuite/std/ranges/headers/ranges/synopsis.cc
! 121587a18e4c39b7ac2b978758f72268  libstdc++-v3/testsuite/std/ranges/iota/93267.cc
! 3832ba93e310422cc36e6a8a2484ddef  libstdc++-v3/testsuite/std/ranges/iota/96042.cc
! ccdc4ae1b41638162b9e60936a7f2e0e  libstdc++-v3/testsuite/std/ranges/iota/difference_type.cc
! c6cc61826c5bffaac9fce6391c26cb9f  libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc
! e75edf80cec13e421cd663c039d2ca93  libstdc++-v3/testsuite/std/ranges/iota/iterator.cc
! bd95f0058da01ae7c3f9a944b0cb2fba  libstdc++-v3/testsuite/std/ranges/iota/lwg3292_neg.cc
! f6414f7f1cce883d75748248ec104110  libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
! cfd013ee643ff8cc3c5e2e2b102bd24b  libstdc++-v3/testsuite/std/ranges/iota/size.cc
! cf8478cbd47743744301d44850e03ae1  libstdc++-v3/testsuite/std/ranges/istream_view.cc
! 39a74ff1ef561d51b687d686060239c1  libstdc++-v3/testsuite/std/ranges/p2259.cc
! 649e10f03ff9c43b7d6abcc248b0f350  libstdc++-v3/testsuite/std/ranges/range.cc
! 64b49ff9679c02a817d8b8e1c304a977  libstdc++-v3/testsuite/std/ranges/refinements.cc
! 0f79f9d63bf7c793e2205c828bfc36c7  libstdc++-v3/testsuite/std/ranges/safe_range.cc
! 20083272df7fb4c144b0ed56e5f4d15a  libstdc++-v3/testsuite/std/ranges/safe_range_types.cc
! 0277853f169f070409e2d54a19448313  libstdc++-v3/testsuite/std/ranges/single_view.cc
! e0aeb07435374f4671b8db98e1211c94  libstdc++-v3/testsuite/std/ranges/sized.cc
! a4e967aec4cc7a9ebd4c6debdbfd3cfd  libstdc++-v3/testsuite/std/ranges/subrange/96042.cc
! e8752b4f410857257c4def237d482bf7  libstdc++-v3/testsuite/std/ranges/subrange/97512.cc
! 72281201d29af7ace58d34efec40a22b  libstdc++-v3/testsuite/std/ranges/subrange/lwg3282_neg.cc
! 43946355b6933b31f7ca8df72fde5637  libstdc++-v3/testsuite/std/ranges/subrange/lwg3286.cc
! e289d02d97c864fdb013f2ae524cb77e  libstdc++-v3/testsuite/std/ranges/subrange/lwg3433.cc
! 81e267db1008e9c4480743002c9c5984  libstdc++-v3/testsuite/std/ranges/subrange/sizeof.cc
! 8f00f7d4ee3127deef32cd3ebddbbdf4  libstdc++-v3/testsuite/std/ranges/subrange/tuple_like.cc
! 3427787c3eef660f1144e24f635d6314  libstdc++-v3/testsuite/std/ranges/view.cc
! ad173933fa56d91facb69d926ba4ed5b  libstdc++-v3/testsuite/std/time/clock/file/members.cc
! 582848e36bfa4eb0511742a823ef559b  libstdc++-v3/testsuite/std/time/clock/file/overview.cc
! 226feb67cc460aea99599c9f43c14726  libstdc++-v3/testsuite/std/time/day/1.cc
! 70a8581910f4aec7b4a69838e7e9b1fa  libstdc++-v3/testsuite/std/time/hh_mm_ss/1.cc
! fe183257d7a31933cdc3fb8c8bb5c957  libstdc++-v3/testsuite/std/time/is_am/1.cc
! 780a27d714b7130cce61c069e0c89cd4  libstdc++-v3/testsuite/std/time/is_pm/1.cc
! 9428d1f5fa2a4b0191dbbfce2d115137  libstdc++-v3/testsuite/std/time/make12/1.cc
! 1f249c0e31da727a260da951689e2063  libstdc++-v3/testsuite/std/time/make24/1.cc
! 6be903b3f3134eed76ad70b5835ac565  libstdc++-v3/testsuite/std/time/month/1.cc
! 7cfb8f66154b3ff83d5cce7572998891  libstdc++-v3/testsuite/std/time/month_day/1.cc
! 8d4aa89f218b2a8915b81774a72a5607  libstdc++-v3/testsuite/std/time/month_day_last/1.cc
! b60d5f696fd5b3575a7332882d6884cd  libstdc++-v3/testsuite/std/time/month_weekday/1.cc
! 235e6393f8bebe8f740ca5b5ab8acb73  libstdc++-v3/testsuite/std/time/month_weekday_last/1.cc
! c6e0c094056db16806a0cfdf2c18476b  libstdc++-v3/testsuite/std/time/syn_c++20.cc
! fea83aff8ac17db243a2ad96b4e573c2  libstdc++-v3/testsuite/std/time/traits/is_clock.cc
! b13fa8805225f3faea7254ea035b3658  libstdc++-v3/testsuite/std/time/weekday/1.cc
! d18d1148dec77296a2a4558ac5ada709  libstdc++-v3/testsuite/std/time/weekday_indexed/1.cc
! c499214ed2ec4ceb4f75cef342659f9d  libstdc++-v3/testsuite/std/time/weekday_last/1.cc
! 36073e542bc0abf497c7bba8748b2a74  libstdc++-v3/testsuite/std/time/year/1.cc
! 623bdcedbff400122b76282f0830218e  libstdc++-v3/testsuite/std/time/year/2.cc
! 602d41ce4d1d0c22bd2ed62023df4bb7  libstdc++-v3/testsuite/std/time/year_month/1.cc
! 31980bac28fc6fc21593e4a24d782bd6  libstdc++-v3/testsuite/std/time/year_month/2.cc
! 58c4b5bdf7738209234bdf15a54fb50f  libstdc++-v3/testsuite/std/time/year_month_day/1.cc
! 969e0a530499b344038f4970312429e1  libstdc++-v3/testsuite/std/time/year_month_day/2.cc
! 79a52720c1fbde13103fb1fd2a2965ad  libstdc++-v3/testsuite/std/time/year_month_day/3.cc
! bc65bcbad0889e08692a4831beb209e3  libstdc++-v3/testsuite/std/time/year_month_day/4.cc
! 88a6e3cd04cb131dca3f0271675f8e05  libstdc++-v3/testsuite/std/time/year_month_day_last/1.cc
! 0cfca3a3b11be5d419a8227d350415ae  libstdc++-v3/testsuite/std/time/year_month_day_last/2.cc
! 00c6bf3fe5f47ba81791c05969022c5f  libstdc++-v3/testsuite/std/time/year_month_weekday/1.cc
! ca49063a48e1d4b379aaa2276a736c9e  libstdc++-v3/testsuite/std/time/year_month_weekday/2.cc
! 4b0aef84fb2aa19d688321713947b9e4  libstdc++-v3/testsuite/std/time/year_month_weekday/3.cc
! 3f1f5131a80ec57a969fe4f2230318d4  libstdc++-v3/testsuite/std/time/year_month_weekday_last/1.cc
! f45acf2e04a4c542f6fc42daedebd4a6  libstdc++-v3/testsuite/std/time/year_month_weekday_last/2.cc
! 700c415478af6b75c92a2caf0b5456ed  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/1.cc
! 4774db37a492806f06a07c94eed67093  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared.cc
! dde4496e27b5f283507e0fb5e4d5685a  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared2.cc
! 9f4fdfedf03ed21b19017afeaefe9471  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared3.cc
! c3267ccc5be5c6eed9ac622be7e3c61e  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/requirements/explicit_instantiation/1.cc
! 6ec4f40c20d13e61c21bd999d993e4e7  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/shared.cc
! 663ab9fff3098bb35d08a2547c6038fb  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/still_shared.cc
! 3ce0f8b6ad14e3b5071cd779551ec78e  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/functional/synopsis.cc
! 92a62ae64dd3f2caf3ff3b532bb711cb  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/memory/synopsis.cc
! 9e1eb6a0baf7328e583c0522f3acb457  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/memory/types_std_tr1.cc
! 7fd652675ed97c36009770f8eec167f9  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/assign.cc
! 02ccff60048256a58836ac5e4d92fdf8  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr.cc
! 3a88e9b1219ab379c28968b48e4323ca  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr_neg.cc
! 531fb958e02d258ad493526b72013cc9  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr_rvalue_neg.cc
! 51ab8dd5eb9cb56689d0dc859798f643  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/dr541.cc
! ad2de5edad973dce2ffbc4297d30736b  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/shared_ptr.cc
! 0b92409b66f6d3ac9d0cee3893d4353d  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/shared_ptr_neg.cc
! 33a7374a6893410804bf89407309d264  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/casts/1.cc
! 96fd4fd04c273a4fd28e13df3cffd96f  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/comparison/cmp.cc
! 442a2dbf42a920b150e234800b6bc371  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/39405.cc
! f3588f22990a11f1164248637bbe5e97  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc
! 684e225e8e790a635b385a579635e690  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/auto_ptr.cc
! 3385c6a5d4fa68aaa9a38b7c2db2ef66  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/auto_ptr_neg.cc
! 2e5deeeba0107bc890b92bf2e7d4d7ae  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/copy.cc
! 4de7d22a83907819b979d138b06d8416  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/default.cc
! aed7b18ee46129466b945f2a80e86305  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/pointer.cc
! 72d536e704d1badc7e16274e715393f6  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/weak_ptr.cc
! 147922ffd1b477bf3871ed70080c1426  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/weak_ptr_expired.cc
! 570ea1cf3975b256a7a132f97fa2e7a5  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/dest/dest.cc
! d0fc8c34319e3ea01fdc66dc51c8551b  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/24595.cc
! 2d94a2c96a31ee21de331aa687f831d9  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/42019.cc
! f0aba61d2816f1854a089d65d164b6ed  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/io.cc
! af4ba590f512dbdd87e22bde688c1437  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/swap.cc
! 0cbc3fa2cded9e0c255003efcde0acab  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/24805.cc
! ddd60fe888e706d937055bbe22649355  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/reset.cc
! 54b5d34c18383369749af637fefe69cc  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/reset_neg.cc
! 2f4d2ae8917f824ac17f63594f687096  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/swap.cc
! 66bca453eefa9dc676a4c1e85e77fd98  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/swap_neg.cc
! 0e9408e09afb38f3a92630eeec7cbded  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/bool_conv.cc
! 76698f785624a95fde081b7e8730e968  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/get.cc
! a0754e87702dcb1647684390082ee10c  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/unique.cc
! 3fdddfa5944e4fb9b6da08bbe1b0bf74  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/use_count.cc
! 0a6527c3e89ab906e2d3123a10f2f122  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/requirements/explicit_instantiation/1.cc
! 781f969ca4e4f95f768c1937c538cd2f  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/requirements/explicit_instantiation/2.cc
! 1105e3d53988e17e96f4abeeb03c1b11  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/thread/default_weaktoshared.cc
! 78e1124db28773c07a809e556f083193  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/thread/mutex_weaktoshared.cc
! 1cea9cf6255186b29bf8aecbbb4fcadf  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/lock/1.cc
! c5b290a7922d2244d8b8c94e6aed47c0  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/requirements/explicit_instantiation/1.cc
! ba13ae65b918d1bc2555677c5906fdf7  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/requirements/explicit_instantiation/2.cc
! c37625ad6886076a0ec4a74361dc94c2  libstdc++-v3/testsuite/tr1/3_function_objects/bind/all_bound.cc
! aa01607d04badf05347a2bf582df4983  libstdc++-v3/testsuite/tr1/3_function_objects/bind/cv_quals.cc
! f27b0d2ad47e6727c3caae403349e587  libstdc++-v3/testsuite/tr1/3_function_objects/bind/mixed.cc
! 11a151ad549d6ec9ed5c30618a4cbb60  libstdc++-v3/testsuite/tr1/3_function_objects/bind/nested.cc
! f024de75777b302e04e2ea803ed4295b  libstdc++-v3/testsuite/tr1/3_function_objects/bind/placeholders.cc
! e1007cadaaaad1a4053884629f60a04d  libstdc++-v3/testsuite/tr1/3_function_objects/bind/ref.cc
! 6a129578603877691b00413c86808e1f  libstdc++-v3/testsuite/tr1/3_function_objects/function/1.cc
! 57370d24ec30558ae79460d8baa20fa4  libstdc++-v3/testsuite/tr1/3_function_objects/function/10.cc
! 8e3b9b305600faad06444a707d5328fe  libstdc++-v3/testsuite/tr1/3_function_objects/function/2.cc
! 2eec310004e2a576aff0cc15f8964fa6  libstdc++-v3/testsuite/tr1/3_function_objects/function/3.cc
! 085d2d80169370ad0667bc6821136e61  libstdc++-v3/testsuite/tr1/3_function_objects/function/4.cc
! 2dfc943449ad0ed690ec690e3a642edc  libstdc++-v3/testsuite/tr1/3_function_objects/function/5.cc
! 2c8d32d726bbc2e9fae111769c04c8d2  libstdc++-v3/testsuite/tr1/3_function_objects/function/6.cc
! 581beb132e4445260198d4ca0f2b2e3e  libstdc++-v3/testsuite/tr1/3_function_objects/function/63840.cc
! 806c7816d592fdb1700fed435e827ee7  libstdc++-v3/testsuite/tr1/3_function_objects/function/7.cc
! 6ec856c2eb55bef030357615442a4ca1  libstdc++-v3/testsuite/tr1/3_function_objects/function/8.cc
! c4e6dfec26c9f19f02cdfda0fbcca71d  libstdc++-v3/testsuite/tr1/3_function_objects/function/9.cc
! dc616d1cacf6e4be84c54687139a9382  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/synopsis.cc
! 54805ddcf0b4304ebca88ccfe60c0e80  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/types_std_tr1.cc
! 64416d2db302856d1969fae09d15d04d  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/using_namespace_std_tr1_placeholders.cc
! 1e594eba76d840db67e61cee0be95723  libstdc++-v3/testsuite/tr1/3_function_objects/mem_fn.cc
! 0b649d9e09ff2b7a15899bbda925909d  libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc
! 49ec5984d292e0e84cbc4b943962f470  libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc
! 40df13cfd427a01d77c964819d1af9d1  libstdc++-v3/testsuite/tr1/3_function_objects/result_of.cc
! 04fc71b4313e0b925d4e9fef19b6ec01  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_const/requirements/explicit_instantiation.cc
! ad7cc197973bf93d2d46befb7f8ceb60  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_const/value.cc
! bffe6fc236870b917057132c54821969  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_cv/requirements/explicit_instantiation.cc
! 1338f5cc16902c064a104d8980b14364  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_cv/value.cc
! d014286d3ed33da069d761cde15d36ac  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_pointer/requirements/explicit_instantiation.cc
! 677548759fe0727541bc51a9a1dcb371  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_pointer/value.cc
! ec2a47cfbd3a06c95fb7ef07287326fe  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_reference/requirements/explicit_instantiation.cc
! 753e293473ced831dceb8a88c98cf3cd  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_reference/value.cc
! 03abdf0b46e5406b3558a5879c5e3ecb  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_volatile/requirements/explicit_instantiation.cc
! a8cbe143d819acd2448842aef4551a3e  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_volatile/value.cc
! b6a5542b0dd9675c070ea852550a1d2d  libstdc++-v3/testsuite/tr1/4_metaprogramming/aligned_storage/requirements/explicit_instantiation.cc
! d1e7fee267780a4b4cc34b55e5c251df  libstdc++-v3/testsuite/tr1/4_metaprogramming/aligned_storage/value.cc
! 41b9bc71e0123d01a10c405d0d95747c  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/requirements/explicit_instantiation.cc
! b4f12d45edaf05491ee058def9173253  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/requirements/typedefs.cc
! cc82aa6e894d14b0a843c63420261a5d  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/value.cc
! be6c53bd8b76231318a24bbafe6eed9a  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/requirements/explicit_instantiation.cc
! 80509948af9d2a7269e3aafdeae3de8f  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/requirements/typedefs.cc
! e2687da8695195438b8088d38b6c9108  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/value.cc
! 28a2c50e6b267cf5e45db0f1499ccdb4  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/requirements/explicit_instantiation.cc
! 1a9ff679c6d59dd626e977c1733ca60d  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/requirements/typedefs.cc
! 2276c9d86287431c73302643ad01438e  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/value.cc
! 417cac02d6417984c24eb6f889eb997a  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/requirements/explicit_instantiation.cc
! 79b69d2c8dff6cac5aa240377faaa349  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/requirements/typedefs.cc
! e7f68151d05813c25bbfd20ec534bd35  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/value.cc
! 2b497df8c495ea3773222fe2e44b4fe8  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/requirements/explicit_instantiation.cc
! f82905d620d414684877bb22fed0bcb8  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/requirements/typedefs.cc
! 3bff8e067ca22c772af9b4bfe848a8ef  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/value.cc
! 29d9f0a6c1a4efd6e0c377a764e8b24e  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/requirements/explicit_instantiation.cc
! 1ff3b6b5c9ffb4499331705c0f0dd68d  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/requirements/typedefs.cc
! e6faa533b48afe1821dd237d4eaada8c  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/value.cc
! 3dc7a9c7c5fa34d0a5209a401af726df  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/requirements/explicit_instantiation.cc
! 52564f4db2a0089503ec81dfdf5326c1  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/requirements/typedefs.cc
! f32ae7e42c39b42d7f40f8efc6743736  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/value.cc
! 3c8ee542ab30cbc2957c4d6e5016c9dc  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/requirements/explicit_instantiation.cc
! 66cb759ceff2a0dd7695b9be001364f5  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/requirements/typedefs.cc
! 68245037a9a9ae47d0645ed0ef90b4dd  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/value.cc
! fa732ea74a881abc34ed9fe398412f73  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/requirements/explicit_instantiation.cc
! 19479ab963ad8413cf748dd2c5d2bf0c  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/requirements/typedefs.cc
! 2e3759ebca02103b3f654c3bc566b21f  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/value.cc
! 8f48f0d41d35b0d1cdf0d9b3299d5e0d  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/requirements/explicit_instantiation.cc
! 60b229513a970316219663c25e8ae3ba  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/requirements/typedefs.cc
! c3014a85b259a8da779f205614c31600  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/value.cc
! ae847544d50ff1c7b4a690838e2012a7  libstdc++-v3/testsuite/tr1/4_metaprogramming/headers/type_traits/synopsis.cc
! 578ce12755e372664422b8572cd7a432  libstdc++-v3/testsuite/tr1/4_metaprogramming/headers/type_traits/types_std_tr1.cc
! 823fd3d332746bf5e03b5029a526a99a  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/explicit_instantiation.cc
! 19718150bd0fa990eb60adf8c079421c  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/typedefs.cc
! 9881e9a33f88515800676394f09b1765  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/static_definition.cc
! 3134b9a18b8d5b3d8ab6fb85bfd54377  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/true_false_type_typedefs.cc
! 09e223243fd743733c74756fc109681b  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/true_false_value.cc
! dd56b4c6b51af0a111b15e7f485946d5  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/requirements/explicit_instantiation.cc
! fe4b45d9db058b3db8c56efdbdf03820  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/requirements/typedefs.cc
! 85ba0a87fb9137f11e1b2539abb0cf9e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/value.cc
! bb0440289b262869dfa2ec2c6cd38bce  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/requirements/explicit_instantiation.cc
! 27d541965765437592873fa012d888f1  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/requirements/typedefs.cc
! dc253552d8e50f859cb0daa774867c72  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/value.cc
! fbd53c640163ab7757098300ddeb0432  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/requirements/explicit_instantiation.cc
! caae1cbdb8cf64aef843f43e9d4cad11  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/requirements/typedefs.cc
! 2eb0a5d4663739c481b5be567d9f8d04  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/value.cc
! d0a69eca018d4a3b80d7b80c93c6f38c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/requirements/explicit_instantiation.cc
! 08e237d9b1de43263847226ccbe22cd9  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/requirements/typedefs.cc
! 702421cc8867aad0a0569facb20845ae  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/value.cc
! 5f788700f3cf5c96447dea17e2191187  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/requirements/explicit_instantiation.cc
! 2516b5cc9ca4028a2c946c5696c7028f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/requirements/typedefs.cc
! e3145002845185e26391c33dfbc40153  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/value.cc
! 1d9d7107d30c6029399fa6f31c52261e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/requirements/explicit_instantiation.cc
! 52375a8866120b091df834e8993039a1  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/requirements/typedefs.cc
! e477ca48e8dd3ff9642d70011865c6ef  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/value.cc
! 62756588fa98ffa70f569f20d3d3c508  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/requirements/explicit_instantiation.cc
! e61aaac7ed537b35091b32e9e7a67c9a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/requirements/typedefs.cc
! 43f6154f595d09141d1aaacdec08ef43  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/value.cc
! 7ecbffb2f08740cf55fac6e3fca89102  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/requirements/explicit_instantiation.cc
! 571dd38b00eabcc54b8bda6a6d7da709  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/requirements/typedefs.cc
! caf45b61c1a038c77d0b6afcf90190c2  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/value.cc
! 3fca4f47c9bd26471748d307d9dd5e3c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/requirements/explicit_instantiation.cc
! 83ec3f5961c135c8a41a57cfb400284c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/requirements/typedefs.cc
! 613bc493ec2d208497d0042d1e5dd373  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/value.cc
! 759927223ca3245f8e8feb3d2d9eb035  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/24808.cc
! e79c0cdea6a5acc53c3be5d0af3f7a6a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/requirements/explicit_instantiation.cc
! 79f06ad4ff8281b50c9ecccabee7e44e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/requirements/typedefs.cc
! 262e41e22d7bb6522973bce7e05f307c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/value.cc
! ee36adc7fbbe69698e2466f52b21200b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/requirements/explicit_instantiation.cc
! 891f9297cace0aa75444ecd54a9eed5a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/requirements/typedefs.cc
! b5177a3423545c645576aa1275ce13e6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/value.cc
! 36cd657567c8bfc2df65e84c6b6edb5e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/24808.cc
! db4f31b1de197fccd3e94223693ba96a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/35637.cc
! cceec4c973838e97223548381b236559  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/requirements/explicit_instantiation.cc
! ee4c8526d0057943c75177e6294f3887  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/requirements/typedefs.cc
! f64acabf6863a0514351e6675f41bd2f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/value.cc
! 43cccb7bacfe2651a1b0c3a8514729e6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/requirements/explicit_instantiation.cc
! b5e768c302f0b7d2f3544ac62a480a78  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/requirements/typedefs.cc
! c554d67b721e10dec5e5498efbac6128  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/value.cc
! 55f6626796009f787cc73abb4304c345  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/requirements/explicit_instantiation.cc
! 2763a1cd43c0002e38efc5b7e1ddd49c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/requirements/typedefs.cc
! d15370662cc94c66864a0d67f3dc0932  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/value.cc
! 0b5e1b21cf53606063c231d16117ed37  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/requirements/explicit_instantiation.cc
! 47afcd6ebaa2f35b888954365c5bd90f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/requirements/typedefs.cc
! 9224edc58d130146a5d850261b0b4983  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/value.cc
! a2878aaa6d099c91e38d984e14147653  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/requirements/explicit_instantiation.cc
! 4008756072aadd77fb7be17d8e5f76e3  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/requirements/typedefs.cc
! 10cd90a057be78f9327ce0ca452fa940  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/value.cc
! 36f30281917cc9dcf2b0b5cd9ed15a46  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/requirements/explicit_instantiation.cc
! 5bd84bb65f1c48d5b41245173bff199d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/requirements/typedefs.cc
! f6f0d34afa26debf8f95831f0eaac66e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/value.cc
! 49724d16caed2d3dcbd1bb0cbb74cf8f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/24808.cc
! 1a57f857a9f8311aef77e4e6ce3761a4  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/requirements/explicit_instantiation.cc
! ed5824841c3624f37e2435a3117f8c6a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/requirements/typedefs.cc
! d55424a16a11f9b72bb10cf6d18dac5e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/value.cc
! 1ae50100d1f3ff20f45f0f44d808c9cf  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/requirements/explicit_instantiation.cc
! 764b99ddb2a616817b783ed767ea1aee  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/requirements/typedefs.cc
! 196e441d188817bba4834e0c705d1018  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/value.cc
! ef52601228dc2d4964784ee2af65c184  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/requirements/explicit_instantiation.cc
! 2899db0fc6ce6ab5b13854acab413150  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/requirements/typedefs.cc
! e5c1e91864f2e097b76dabe1865b0034  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/value.cc
! 68258ace10a73f2fd29fbc089093b9ea  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/24809.cc
! 85b2ef4a9dad0a51e93134428f050f72  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/requirements/explicit_instantiation.cc
! ee9e35d6195f3e799a2dd2fe0a504bab  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/requirements/typedefs.cc
! 714279393340f1f956fb6c7ee51bfb73  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/value.cc
! a9093c0745100d2700241e9e75e7888d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/requirements/explicit_instantiation.cc
! 870db0e5fe90fa787430f971e3f14c46  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/requirements/typedefs.cc
! 95145aa748e94df6b5d22d58c7edb60e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/value.cc
! 3683b9bb5b98fbed858f4cb59ff102c3  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/requirements/explicit_instantiation.cc
! 5cf236e5a469a4fdd8eb7ed84a3f03c9  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/requirements/typedefs.cc
! 84b595709bcc9d9a44e6fc9039896d3d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/value.cc
! cffc67a918cf4a4fee94f00cf013bdef  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/requirements/explicit_instantiation.cc
! 005213a705f28c922f32e13a2b5ef03e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/requirements/typedefs.cc
! 4e99e45158fd32828f95a82808d1ee49  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/value.cc
! 15c95f04022e4efba6178056d874cab3  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/requirements/explicit_instantiation.cc
! 22e088286b1ba8969dff6601ccf87d39  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/requirements/typedefs.cc
! 4899c893b02b7a5da843dddf359a8b5a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/value.cc
! da94c7730ba77df13d3f1727a06bbc39  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/requirements/explicit_instantiation.cc
! 20c4411e271818ff79f89a209fa8bddc  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/requirements/typedefs.cc
! 2012096cb78ba2fe780193c1b2fc536a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/value.cc
! d9246afda58ab9c60bf3f166eeef2681  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/requirements/explicit_instantiation.cc
! cfbcd90058f2a06190121625d37ea088  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/requirements/typedefs.cc
! 65bd4c4858d50a2aa17f1c1dfe51114a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/value.cc
! a208f12123b79f9779c441764546a7f7  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/requirements/explicit_instantiation.cc
! 5e1f2d30821c58b970af6254e99a6564  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/requirements/typedefs.cc
! 9daedfb55a6a60ef4fea495c667e809b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/value.cc
! 496e674cf1176028cba84773c0eb8d31  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/requirements/explicit_instantiation.cc
! 075596c1cba4085d3270e88f8e83a41c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/requirements/typedefs.cc
! 2b3e2994ab1cb9858241e18225b0162f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/value.cc
! b83d0d9812ced1dc20863bea3f1b06c7  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/requirements/explicit_instantiation.cc
! 3259b16d0419b8153678f04518d6f44c  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/requirements/typedefs.cc
! 5fe7292fc3e859b36c239e5972b89065  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/value.cc
! 3d7d02c6f317f68e8270a30ba7991c31  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_all_extents/requirements/explicit_instantiation.cc
! dea3bec66a3f91fec6d497fcd18f3126  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_all_extents/value.cc
! 41e8de2b5a875ccef99ce44260075c70  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_const/requirements/explicit_instantiation.cc
! e3e6aedffe1033192d82a4e335973c9d  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_const/value.cc
! 8021517af5e5f90a767e44507c66ad23  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_cv/requirements/explicit_instantiation.cc
! 49cda3ef005d95ba7aaf3e3aef38ed3f  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_cv/value.cc
! ef1078838b362fb792abc3bccb41ec35  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_extent/requirements/explicit_instantiation.cc
! 70b594a4ce631fce8094a0ad6de1f54e  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_extent/value.cc
! 197f0476363211313123b38cbf0cadc4  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_pointer/requirements/explicit_instantiation.cc
! 3c548b75734df86ce7b503cb3e43cca7  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_pointer/value.cc
! 4270a410365460f42c0e365b8ff597c8  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_reference/requirements/explicit_instantiation.cc
! fa347c9154b38f7b1112f489d829ff10  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_reference/value.cc
! 3cbc36879689fdc3f60ff07ef32504b9  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_volatile/requirements/explicit_instantiation.cc
! 7830339a6c54b84da3db255cfe8d96cd  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_volatile/value.cc
! cf86127e677a0d3d895077ed1de4cc3b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/headers/random/synopsis.cc
! f9fc8f9435c593711bbf850a616aa091  libstdc++-v3/testsuite/tr1/5_numerical_facilities/headers/random/types_std_tr1.cc
! 61dbf0f65a7d8abfce586e8ef4d9aae1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/bernoulli_distribution/requirements/typedefs.cc
! 53c7b6b7650999ac3f2c4b6bab70eac8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/binomial_distribution/requirements/typedefs.cc
! 3d0d572a45d55d4834f5c2c91cc838ba  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/equal.cc
! 18a227ee6c3f62c8d6768748b137a217  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/not_equal.cc
! d617f002d48ae1629e8e23836a6dbbc5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/serialize.cc
! c22ea2217a119c39b1c6707a255922e1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/requirements/constants.cc
! 43836d6c5fe318c516f1089df825c93f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/requirements/typedefs.cc
! 6c4df6910d9778a734443188a84cefa8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/exponential_distribution/requirements/typedefs.cc
! b994fcbfe304c674a342087574f72e89  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/gamma_distribution/requirements/typedefs.cc
! ba4f2dcbcda926a8ef7bbad8a71d504f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/geometric_distribution/requirements/typedefs.cc
! bc02236f24d3ab7833aa0352f0f8fdeb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/default.cc
! 487fa3acdde76faddacf46eda55b9319  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/gen1.cc
! 403c328f5d0f722c8501c65e372cb680  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/seed1.cc
! c8c916bc16906f436d06d3a853750b03  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/seed2.cc
! 46b11d76bfa5bb8549ba58d0f5c24ece  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/equal.cc
! 92320aca3ad5ac3f8927249641d31541  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/not_equal.cc
! 86c870cdd322b6b27fae0196f2776946  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/serialize.cc
! ee282932de07c67339031c7ffce201ea  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/constants.cc
! 8b5dda2655f9d6d843a6a611ceffd769  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc
! a785c92dbdf130de1fd8dec5ed2a3145  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/typedefs.cc
! cd195a052d38b0fbd59daa3cc907abee  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/default.cc
! 8e8ad638d3dbef81c5fb3fdefb14e50a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/gen1.cc
! 683b44a735b0221cbdbdb0f3f774e168  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/seed1.cc
! 1760c0bdba188096968a3b014b7f51e0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/seed2.cc
! 9141c84ffb350bee745d796695f7df20  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/equal.cc
! 827b3aff88caa51ee4eced6c752aae45  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/not_equal.cc
! 0e844d8dcc6ea92adac427732497a9e8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/serialize.cc
! 4c1bfb8885c0cd8f55966aeb0623aeb3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/requirements/constants.cc
! f48e446d5b0f4445d3c50a9b7191be7e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/requirements/typedefs.cc
! c2b2670738371ff8fe1d3c2b680b3d9f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/minstd_rand.cc
! ed79316916b037cd67b62b4da9177be4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/minstd_rand0.cc
! 391ff19dd3dcfcfb258326429298c194  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mt19937.cc
! 594230141eae6e37b282aa5adc8812b5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/normal_distribution/requirements/typedefs.cc
! e2f7fd2cf58aa9c58e93cf881ad8f57b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/poisson_distribution/requirements/typedefs.cc
! 261008f457d01b215e80a9a59dbe8162  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/cons/default.cc
! 904a82fb0eed59717b5130b439127908  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/cons/token.cc
! 321985c653f45c3cae2dd470fd809440  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/requirements/typedefs.cc
! c46053923d7f88a647d97460c705f8f8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux3.cc
! 88f9e54cd768b3d2c6d0878dce2576b1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux3_01.cc
! b205f5a88c0141d48d5886edd48d2871  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux4.cc
! 30c2260b6f7ef789dbca00748433f746  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux4_01.cc
! fa0793122ba7d52ff18d2d74f0665e78  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/default.cc
! 0043b8b1918cd5c473290d41ddfa1aa1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/gen1.cc
! 15ea86bea2ee60721ef13dc092444803  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/seed1.cc
! 3a23951647501366e0c615338d8cbc0c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/seed2.cc
! c6a308ee56aeae2fac82f105235ddf14  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/equal.cc
! 014bb384fa5749ffc4d02f5e8b45805b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/not_equal.cc
! bba92ba4d24754994159aaf538546fc9  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/serialize.cc
! 1c07e744c3636008fd75e42fe3f39cdd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/requirements/constants.cc
! 83b4431a5a20d41e806ebd50e1991f0e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/requirements/typedefs.cc
! 61f39e0c56c6ada7bc5dcb575586449a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/default.cc
! b8f7df0c2010030eebf7b2d14ad49e15  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/gen1.cc
! 8531b0125729a5dd09b74c7d6a7997f3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/seed1.cc
! f3c24039f035897a2755a7d2a2c018ed  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/seed2.cc
! 0e48dadbb64a874db80b48643e9d1e50  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/equal.cc
! 11319b2c817b977bc36f66b39229e17f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/not_equal.cc
! 8072c4a684ed0ded432d76682ee0f20b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/serialize.cc
! c6e43d944ca6be7e52a50892a2c46a97  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/requirements/constants.cc
! 4072f44d7029eedc6594b3f885e3cf69  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/requirements/typedefs.cc
! 89d2c2a6c0562845f632e1e2e397ad4e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/33128.cc
! 0752af21ff0673777271fde918c41127  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/cons/default.cc
! 000c0c693e19b670cd3a923d72a9955d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/cons/range.cc
! 4412cb4a797f4fd5e76ea5ad72e635d8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/requirements/typedefs.cc
! ea875d669f66ea5858b7c13582234627  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_real/requirements/typedefs.cc
! af09902743f81d3e588201f478898774  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/variate_generator/37986.cc
! 08ec5a1d4db354bfc82530a1857440cf  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/variate_generator/requirements/typedefs.cc
! 664c0e07e2a46d8c71ff95b3580945d2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/cons/default.cc
! ae1350243c0275b8495ea5c7c7e284ac  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/equal.cc
! a09daaf9ac32f77304f832d004a1eeee  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/not_equal.cc
! 79d6da3ea696290da373c29a9cf371d1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/serialize.cc
! 81a9c189ddd05495e2ef5cb1fab05f9b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/requirements/constants.cc
! f89e1caab36b540ecf7610ffc4019c4d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/requirements/typedefs.cc
! 073071b942d7e8ac17119fd3e4de5928  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_nan.cc
! 472c221b6058ca25e0927de74f0a7507  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc
! fdfc1f7a5a31639baecab294a7ac62ea  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile.cc
! 1206ec3dd4d990b041d213aec5a717fa  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile_2.cc
! 7619113199f712c4bf136731af1da8dc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_nan.cc
! 6734fa7fb4c21e3ee5def189c00f6e5f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_value.cc
! 4b102bbb560a748487bae3f3f7263553  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile.cc
! 57eb59ee2334beda7872d8c9c1beb475  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile_2.cc
! 37f6df1328b2b251dca38c04855a6c28  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/pr86655.cc
! a77ddfebdc880d3f8ba671171c3facfa  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_nan.cc
! 0f210bbca67ae853d2a924b2ad9eb747  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_value.cc
! 8c439c8e54815a2e64ac9d9e2f6d3c7d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile.cc
! 039ca61dd17c78327baa09a57c89ade8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile_2.cc
! 413bf9188ffdbdce71052833a1dc121e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_nan.cc
! ea3901ccb39a5fe83c388e9b2ea8cd2c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_value.cc
! b8af522acc4cb0af20efa8befe582cbe  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile.cc
! e48c45db09402f83892cd905ebe0a72e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile_2.cc
! a658098ce0ad7b4101ad45a2a4c8b6b1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_nan.cc
! cf44b1c953919bb8e7c77e0810f1a015  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_value.cc
! 7de3851be7c5ce08e68f984fe22b0020  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile.cc
! 8e489f8ee2c080589f2d77f5425f6620  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile_2.cc
! bbbd17c9a95ad0c45bf803feb4c8b4a8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_nan.cc
! 217c29e9e0c06818f287da247133d067  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc
! fac157172a5c1771285c696f689e5b8f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile.cc
! c2467bf3b05e62b7bd8a194d87ebf0b2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile_2.cc
  4618aff82312f2efbcdba760637d68b5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/pr66689.cc
! bca141eb958b0ee3c2bcd2ad254d0ecf  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_nan.cc
! 86fdb216a60a2af9110b0f22695d2d47  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc
! a4779ac133f1a097569ca64f04ce89d8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile.cc
! 7b4600593baef42c07e1d33c96c0543e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile_2.cc
! 1bf2ad58161e3cf3e2171f49a22ccd66  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile_cxx17.cc
! 9734a8553f6f33391b17dd35cd25646a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_nan.cc
! 415a69a0704830d2e8c097ab73516a09  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc
! b420377eaa51ecd9f54e946934d25f6b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile.cc
! dea6f78cac0f81dd3c775702134289fd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile_2.cc
! bf139fa8f37043c542ab99974cd316fd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/pr56216.cc
! ee30815cc23c5ffa49ca4f24f19a40c5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_nan.cc
! bf25f0f9e83d3ec439ca875686ecf8df  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc
! 8fdaefa869f87922febaec31096eb133  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile.cc
! e15b369b1821abf78a71bd327634007f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile_2.cc
! 30911df4d38cd398f515e0229750d316  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/airy.cc
! 7a0e2485cf5b5deb68770d020ebb4d90  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_nan.cc
! 74f7b39c8c1974a7c8fd862310c2e887  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc
! 9425d2a006d795fd4d168a59efca7977  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile.cc
! b5cb6157a5a85b30b62a91f5b9309cf6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile_2.cc
! 84857b689b93ff3ba5d7468b79ff4ba4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_nan.cc
! ef3af80ab385cf0e1932016f0ddc70be  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc
! c4fbe4688c2db7a383966c049f97121a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile.cc
! a547ddeb48b61902cc806f6a85aeb379  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile_2.cc
! 21839fac9918d82946c60c9ad9959e3e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_nan.cc
! f12844d2c0f16293e226300140d8ca67  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_value.cc
! 4e4c858499a5c983aacf23d73a599e20  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile.cc
! c4997a9f9b510e31325b098125edd024  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile_2.cc
! e99cb5640807427b0bad61489e6383e8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_nan.cc
! c6405f1a433153804631b83e732c9bfc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_value.cc
! 309ed1d7514a87e23ae1c1d15f3b5ae0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile.cc
! 134d238e5ef8513f0c5d225008405810  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile_2.cc
! 890fdadda2cccbcfb5b6799c728d27a1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_nan.cc
! 5010b744c78a5314e084940268ea5277  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc
! e038f70aa5ffa9658b7732cac4dea9af  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile.cc
! fbb71f6479c051ba77d46d24f6b886e2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile_2.cc
  b780a349356e83ff98346ea066a7c8c7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/pr66689.cc
! 880cd3456727b13a95543ae5517ce8c7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_nan.cc
! c628815a455d418259d04e13363d2d8d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc
! 3d09d8db8dc75f179ecf79441fc0e73e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_pos.cc
! e16169e8c0dd818be227fd34d022c0bb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile.cc
! 83273d5ed4682546ce1780a8ddaa89f3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile_2.cc
! 00c8cdfb10a0a4a008664af648e38b22  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc
! bdbb1825fae6e8bd18eae1da6f30f089  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_nan.cc
! 6853d664a945dff6f2a7b9d35400b0d4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc
! 972e61c5bdd527d95270410d6a9a309e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile.cc
! 84dac87c2849aeeae8a1e4b89db8b1df  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile_2.cc
! 8861d33900226b76c7498961b13eb141  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_nan.cc
! 2e058fde3fb3c6e73290f9ed88066f5b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc
! 7d9dd4cbb9d06a5729749b2e4e012b30  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile.cc
! 142ccb979ebf7c1877b7d01bf59becef  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile_2.cc
! f0fb959f5c7a04c34b3ea702896881bb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile_cxx17.cc
! 21cd60bc697a46a65f8b0e4c5d35687d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_nan.cc
! 4088c7710537db084d40a2999e71f1be  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc
! 476c6141ffe8cad422247163ad165fb5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile.cc
! f70e7852db993b0ab27f52f6d90faac7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile_2.cc
! 1392dbb0beca079e12b5fd6e24d9dadd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_nan.cc
! b3dba2bf7fbe7805831d092ac74c86e9  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_value.cc
! 87f482899a082993300b4b25a98ecd1d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile.cc
! d50a9f02138a90f1a4cc2d81198e45f2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile_2.cc
! b40b090b3b7beb35386b96683c78558d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_nan.cc
! fb358fabfd972698fd4d703a962e1b9b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_neg.cc
! c83b5a8145a2f215b3bf164a824379a2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_pos.cc
! 9579ba0c1349f5e6bef5fecb6b639997  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile.cc
! 456632c8b830aa18a546d202a0497037  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile_2.cc
! 9c3882308157089454e3fea71be70a97  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_nan.cc
! b6e723626fd10ca422ccc9ca289b59ac  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc
! 5445cccff47ec8f28ac7b60c08e37527  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile.cc
! ec1a238e903cc9e0350f024871e2c2c9  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile_2.cc
! 55a2ddf1d1e262c0d2718d5b7bc29cac  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_nan.cc
! 70d7878dfe72a8c804564db71dcc35b6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc
! 14334776ac634fbc211cfe8a452d799a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile.cc
! 4b1bdc58e18d107c6900aa8fcdfab4ca  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile_2.cc
! e1ea0652d09f51ba788cc476030b5360  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/pr86655.cc
! 3bc108b237690ed110cb980615d14819  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_nan.cc
! 60e4eee4228b33da63d0b14676e97ecb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc
! b0043f17354a31a1923ea1a0db0ccf1b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile.cc
! 74d77bbc6ae1ed0f634362c1a78c4c54  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile_2.cc
! e4f46afd8301c90b412d655547a48067  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/testcase.h
! 5b8efa8053866a86631a7b2da67554db  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/empty.cc
! bdbb80fe01ac252a580bf394cc582b58  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/max_size.cc
! 00acf663e772f9b4e0ae21df5bb0b7fa  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/size.cc
! 1e3bd5d3999d54edbbba93e5f88c6c45  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/equal.cc
! 7fccf0d6fd324728122493914aefd63d  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/greater.cc
! 0057ac48244bdcd3e4b827189b853491  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/greater_or_equal.cc
! 82449fdd18c86c81cd68f37d3abe5b69  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/less.cc
! bbba376cb0805a39b204932e81ef3cd1  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/less_or_equal.cc
! f6ff1570155fc1f714373979f49ef3e0  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/not_equal.cc
! 650b0bea25e160cd236abf2e224a29a9  libstdc++-v3/testsuite/tr1/6_containers/array/cons/aggregate_initialization.cc
! d404ecedc2f363417719b77869db803e  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/at_out_of_range.cc
! 09f096ad5a00bbdd608c45a60a3f4ab6  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/back.cc
! bc931747ba3684726ebd47a01f73f74c  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/data.cc
! 01524e84fe5a166f7b6d92eebf0ced38  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/front.cc
! 34038ba5d84039329804a10fd3fd2031  libstdc++-v3/testsuite/tr1/6_containers/array/iterators/end_is_one_past.cc
! 69d6c0253ff361d07424ad267f2414bc  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/assign.cc
! 3020fd91ca942fc11fb8a255b1f60db0  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/contiguous.cc
! 19baccbbc98ce5871ec5831d7f909f63  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/explicit_instantiation.cc
! 4d7f5558894671ea9ed3113e5415acef  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/member_swap.cc
! 238479f2fcaa9cba3aa2dcf3d0040d9b  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/typedefs.cc
! fc5a183b553611d2d564610348585148  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/zero_sized_arrays.cc
! 15bde2576e0afac76f87bc937b1c9243  libstdc++-v3/testsuite/tr1/6_containers/array/specialized_algorithms/swap.cc
! 4d8d6487ff1765ed0c151cef46090b7a  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/get.cc
! 3c514be49ef9dd91acc9db28d68f5ae2  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/tuple_element.cc
! 1a3f033851cc97378483700d7c6d4dd5  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/tuple_size.cc
! 2330a4ae3a927d7710dc7c3c628c4e9f  libstdc++-v3/testsuite/tr1/6_containers/hash/24799.cc
! e8d29e94a831ddd41ede9c66bb2b19db  libstdc++-v3/testsuite/tr1/6_containers/hash/operators/size_t.cc
! bcb0f8691d7502f9225a6f969e31ad95  libstdc++-v3/testsuite/tr1/6_containers/hash/requirements/base_classes.cc
! fba7238bdf74860300d0ba645c647aaf  libstdc++-v3/testsuite/tr1/6_containers/hash/requirements/explicit_instantiation.cc
! 05ff0dbf2702689ebcef54d691914424  libstdc++-v3/testsuite/tr1/6_containers/headers/array/synopsis.cc
! 0f3f758382184d47998ebccefe032729  libstdc++-v3/testsuite/tr1/6_containers/headers/functional/synopsis.cc
! ec474227048f890f15e5cd1e8a5b83b0  libstdc++-v3/testsuite/tr1/6_containers/headers/tuple/synopsis.cc
! 5ebeac0392f042ed40e60c74e214d176  libstdc++-v3/testsuite/tr1/6_containers/headers/tuple/types_std_tr1.cc
! 6eed2bcebe950ae5bb4f8ffbc729f36b  libstdc++-v3/testsuite/tr1/6_containers/headers/unordered_map/synopsis.cc
! feaef726bc1f73d06cdd49d6dcb8e88e  libstdc++-v3/testsuite/tr1/6_containers/headers/unordered_set/synopsis.cc
! c5cb242c5293532c569c34fe8d53e980  libstdc++-v3/testsuite/tr1/6_containers/tuple/comparison_operators/35480_neg.cc
! d0a530a7dcaf3c69cbd274f2fddf217c  libstdc++-v3/testsuite/tr1/6_containers/tuple/comparison_operators/comparisons.cc
! 22e41072715e60ec8c50c5142d447a14  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/assignment.cc
! 992c071fa69b237ee565e8081e27ffc4  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/big_tuples.cc
! 48261dc6d245ab8fe0e5a12cc023be08  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/constructor.cc
! 7bbdb973eb43824a810dac4db9ee3cf1  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/23978.cc
! a431d772d740ab89647cb5626f2c72ba  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/make_tuple.cc
! 2d9d5e87205dd18a277ba4ffd5fe1304  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/tie.cc
! 7396edf302a814892bf6a445d2b5b1ab  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/tie2.cc
! e2e161e4e554398f1c5f15a6a496ad5b  libstdc++-v3/testsuite/tr1/6_containers/tuple/element_access/get.cc
! 56f677229f2b848b74544acd517b741f  libstdc++-v3/testsuite/tr1/6_containers/tuple/requirements/explicit_instantiation.cc
! 4bd2fe7be88ed9ca2ae8a9d19c90d377  libstdc++-v3/testsuite/tr1/6_containers/tuple/tuple_element.cc
! 69ec40f990e95627ebe57af91f64d858  libstdc++-v3/testsuite/tr1/6_containers/tuple/tuple_size.cc
! 958663fedf53aca0b40857603722caad  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/24064.cc
! d751bc9d4cacbec4f39f1742a8fcb3a2  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/capacity/29134-map.cc
! ab5e29f01dc4d550d26ea1ca1d7d2eea  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/erase/1.cc
! b93122cfb5d42b26335a1749bea60f52  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/erase/24061-map.cc
! 335b42934e3b35b21959ee891c8db7a3  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/find/map1.cc
! 9c61ceb598142157f608dddba0acefaf  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/24061-map.cc
! 0bdd60186cde1d36e3cb6dd13b6aaf11  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/array_syntax.cc
! cca11c092f2731292e12ccbba1a0fd6a  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/map_range.cc
! 530de8627c2649b0b7f415586e908b90  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/map_single.cc
! ca5d64e85279df49d6a18a9ba14e869d  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/explicit_instantiation.cc
! b4d5c55d39aec5032ab18b7fb89a1b67  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/iterator_neg.cc
! fa1c5d5db8d3b246abe8b69905959404  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/iterator_null_neg.cc
! dd824f8ea0f0d6d4e8367c0689b1bfbb  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/typedefs.cc
! 7e8c0be3157118056ffa298f2dbb754c  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/swap/1.cc
! bf972c1e5b9114892dee542ae57288e9  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/swap/2.cc
! cef8789cea0d9bc3be9196a7f34c66a4  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/capacity/29134-multimap.cc
! 7b9dd3b42d51bb0063b699384b1b4d06  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/erase/1.cc
! ddf702856dfadf5faae7cb45b392ba4b  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/erase/24061-multimap.cc
! b3c10d94a919f17c50136d523bee9fe8  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/find/multimap1.cc
! a1b57f6a6fe9a02bf89e80d7799cb194  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/24061-multimap.cc
! 6fa7f1a7beebdcec90c14a99994d8011  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/multimap_range.cc
! f29141c63213a5f6095094d4a58059ec  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/multimap_single.cc
! bf726ee0bac8b947dd394112ad286e7c  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/explicit_instantiation.cc
! 5443bbdeca34109a057b8a4f6838b3e1  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/iterator_neg.cc
! 2cedf8dd5bb7e5d49f3efb191e943ea2  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/iterator_null_neg.cc
! 8c503031b1b290ebe6a7150c0325c1b0  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/typedefs.cc
! ebc2a11c137fece99187a59dbdfa480e  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/swap/1.cc
! 05533720d82e6d4c3b70de338f88d735  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/swap/2.cc
! 217bdffab55945a6b4e517fece9502a9  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/24054.cc
! 32a9e6425756f5bd82dbab34cc11f955  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/capacity/29134-multiset.cc
! 6cff91ecee643be4bcb8685720ab1685  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/erase/1.cc
! 70f1578fa4bd7dfc93d007ad5bbcb1cd  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/erase/24061-multiset.cc
! 5a96ccebd7cefb67f0294df6dfbbc3c3  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/find/multiset1.cc
! 3d8238e1e8ff107103b50ee6c380de8b  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/24061-multiset.cc
! 30fc0bde3e177fa922510dc31be19315  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/multiset_range.cc
! 8c028950c91b37d91e9c278618bcd002  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/multiset_single.cc
! 662d30b7c46780b18e6328da0a8eb174  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/explicit_instantiation.cc
! e6d2fef22d29e79b63fe5091a61ee911  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/iterator_neg.cc
! 1b0ac2ab1008eb98ea79750aedbddbca  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/iterator_null_neg.cc
! f2df5673f6775ad630086f142d1e4655  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/typedefs.cc
! b8ebc7b8c6a69522ad70e2f4ad2727ea  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/swap/1.cc
! 5a865718e3aaff21e018d764cfb8ce40  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/swap/2.cc
! 61c3f375ef586c26838758f22e79cec4  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/23053.cc
! c2d9ed65c9651ff56d8789a94ef43d7e  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/23465.cc
! 3f9eadbfa4fbc58a7f5502ecb2ce3ad6  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/26127.cc
! 3af6b35283ea246cccea47d08f8539bd  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/26132.cc
! 9a7c2b993573fdfe8e3b72e77c05b8d6  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/capacity/29134-set.cc
! af8b990acdea4f357cf5daeaccdec9d8  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/erase/1.cc
! cfb6b81d6e551c992eb9b1b5a5b526e7  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/erase/24061-set.cc
! 696fd5480a46361d23c7ef721b670ce1  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/find/set1.cc
! f6e22f27f17b0f7e4e1b91b9708e1261  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/24061-set.cc
! cbeec6e86ae3d0e44d68c3e367c6d319  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/set_range.cc
! 0a249483a512bc0d8f6390cd7d7352f5  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/set_single.cc
! c82b915c1924c7c21e6f4f3ca0d12909  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/explicit_instantiation.cc
! 4212e867f4cefd96965eb600e5bc07fe  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterator_neg.cc
! 462c6d8a1326d30a75477421fb796a0b  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterator_null_neg.cc
! 684da9da155afeb9407bfba2094ac2b7  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterators_default_constructor.cc
! 89a839f408c666e34116a6480d08f3d3  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/typedefs.cc
! b0b6ed1d19e16d37c07d642976d4ba67  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/swap/1.cc
! d9a79105cd4c637e8dbabade3ee78215  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/swap/2.cc
! 70e90a1f1a24d2c99cf2f13c464371d3  libstdc++-v3/testsuite/tr1/6_containers/utility/19535.cc
! 3508afae24267bb72a9db65c775669ae  libstdc++-v3/testsuite/tr1/6_containers/utility/pair.cc
! ef6f71b3a80203880bd5c4792725c291  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/cstring.cc
! ebec773894985d9c0b44a171316a6345  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/cstring_op.cc
! 7426f639bab9000b37735abca68020ba  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/pstring.cc
! 0f379b6feccc5492a291d443933da8b5  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/range.cc
! fb3c05403b4b8eb186dbcd0a0cab87ec  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/string.cc
! a42fa0adb46d2abcb4d79ac3d4ad13d7  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/string_op.cc
! fcbe3dcdae4c56740c4774837144bc30  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/cstring.cc
! b1e15e0a6eb36b03b21fe60f30ec95cd  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/cstring_op.cc
! eb8091efa62dbcd00813d51f2972f43d  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/pstring.cc
! 954b95cb5fc8842210d3982d800ff73b  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/range.cc
! 085f6697db80f9f9962c68a681c7ce6f  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/string.cc
! d51ea56a64bac466f749df12fc6796de  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/string_op.cc
! b1a49bc4fca85363b7dffb953f37b3ec  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/cstring.cc
! 1f4045b842205e9011ea1d311910e88b  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/default.cc
! 5e5c9fdfbc5f67fdf6b93376daa06163  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/pstring.cc
! 6cbbeff22e26dab608c5c14abdc9aec4  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/range.cc
! 35424c83e4d1a7dac09282abd22fda4f  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/string.cc
! 9ed04f8c85f9dc72baa871b56f1a5122  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/cstring.cc
! 682d7055a30b2db0ce879f79f30a23cd  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/default.cc
! 47ada8514bb4543f7cf1b5eb03dd109f  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/pstring.cc
! c51aba7bf65a09b2e32a2bd22e834615  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/range.cc
! 21bef6eefa557b776ac55b0de2722f5f  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/string.cc
! 773e0964792c7bc00d555b05e7ea6129  libstdc++-v3/testsuite/tr1/7_regular_expressions/match_results/ctors/char/default.cc
! 73e214a5f63926622262aad3d5f266d3  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_awk.cc
! 6772a81147ba1baf28787426b0265783  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_basic.cc
! 20a84a76b64b85d1b688d58e5373e49f  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_ecma.cc
! 3120fe00f5f88eaf40f1adbc3adc4cbc  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_egrep.cc
! c5a4a78e41a01d6926284a551d8277ba  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_grep.cc
! 4d6fdbb629ea15e0a55261e7c109203d  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/default.cc
! cc408db6ed5e6f2a0c28f1125da119f3  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/ctor.cc
! 72e85a1641ea572f211d1abb9626d1d7  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/translate_nocase.cc
! 3d95125e38913b7e3ec2d40b5eb71a89  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/value.cc
! 7f40f7c1bea0e137bd9173221a2840e9  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/ctor.cc
! a99deb18941dfedcc753d227520aca94  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/translate_nocase.cc
! 3d95125e38913b7e3ec2d40b5eb71a89  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/value.cc
! 02ab8d9a89fd881d9598fb39a38b510d  libstdc++-v3/testsuite/tr1/8_c_compatibility/cctype/functions.cc
! 68ecf0aa587c4ac6ac4125bb61425bb7  libstdc++-v3/testsuite/tr1/8_c_compatibility/cfenv/functions.cc
! 7369c4fe17d672fa54ebc9df858ce76d  libstdc++-v3/testsuite/tr1/8_c_compatibility/cfenv/types_std_tr1.cc
! c6ad42ddc3636a6b97c396dce861d061  libstdc++-v3/testsuite/tr1/8_c_compatibility/cinttypes/functions.cc
! 2a5b2657594a4fd2985740af538eaa1c  libstdc++-v3/testsuite/tr1/8_c_compatibility/cinttypes/types_std_tr1.cc
! 73324f761e5acbecf9ce64e890278a28  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc
! 6e82d908cab4395b7a94d2684517fe18  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/functions.cc
! cf3e21e6c73107c1e9f760462552b969  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/overloads.cc
! 7e83583fb1a62dcf253fc21a8f9f82d3  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/overloads_neg.cc
! 91b7375b7d25b4b98c81cf54908cf8b8  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/pow_cmath.cc
! 72ef99c03b3f3f16487b82c5e6445a0a  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/templates.cc
! 16957bbb897266d08b1fe23afb5f72ba  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/types_std_tr1.cc
! 357091e5811820e61447a50a513965e5  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc
! 77aa6f964f7647194a7f85858392192a  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc
! 32f9c562dec4fd2c38301ed475e4563c  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/functions.cc
! b472697eb58bc5dbe9e42aa65a798d67  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/overloads_float.cc
! 5398ea792bd9bef6d57ad7fed966cecd  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/overloads_int.cc
! 7e3377b516687f6ca4655aed371dce1a  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdint/types_std_tr1.cc
! c943779acbb4064d671fe13195ea6150  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdio/functions.cc
! 71e169ce1f7d106c8624b8734ebad5b4  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc
! 09f7e1882b87989ab4d101f3cf8cbcf8  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc
! 52b3346039ee2164851f22da08b7721f  libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc
! c8a0c4dceadd15c4d6af6a728d25b350  libstdc++-v3/testsuite/tr1/8_c_compatibility/cwctype/functions.cc
! 61fa289d03c65bb4f0cda9d11caf090a  libstdc++-v3/testsuite/tr1/headers/all.cc
! 9ad6bcd8b44d87756069dac2dbca6e09  libstdc++-v3/testsuite/tr1/headers/c++200x/complex.cc
! 4caa91cd778db6272c9db25f1acb7916  libstdc++-v3/testsuite/tr1/headers/c++200x/math.cc
! 72620fa20222ca1409da29ae4206337e  libstdc++-v3/testsuite/tr1/headers/c++200x/using_namespace_std_tr1.cc
! fec8c25bb9edc90d022d262f9cb944b4  libstdc++-v3/testsuite/tr1/headers/using_namespace_std_tr1.cc
! eddcfd8d466e8f2fc2a89c50a27b159e  libstdc++-v3/testsuite/tr2/bases/requirements/explicit_instantiation.cc
! cf56baefbb90d5f81f0232b35ddd3ee2  libstdc++-v3/testsuite/tr2/bases/requirements/typedefs.cc
! b28a610276f7bca034f16cb6f00614f7  libstdc++-v3/testsuite/tr2/bases/value.cc
! 96461b031c43120004a5bd6b7d6a1b81  libstdc++-v3/testsuite/tr2/direct_bases/requirements/explicit_instantiation.cc
! d4e7157f0151be141fed1e3b70cefb2a  libstdc++-v3/testsuite/tr2/direct_bases/requirements/typedefs.cc
! 664a7a94eddb84271a0bf978f85762ba  libstdc++-v3/testsuite/tr2/direct_bases/value.cc
! 5a92e2e2697869bbcd3df257a29d2ea8  libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc
! dee858defcf51ee106ccac8f3fa3e9c4  libstdc++-v3/testsuite/tr2/dynamic_bitset/cons.cc
! 0eccfabb41ba4ef89c61b1716b174e37  libstdc++-v3/testsuite/tr2/dynamic_bitset/copy.cc
! e1cedf6b7d107e90aae14078e03b262e  libstdc++-v3/testsuite/tr2/dynamic_bitset/move.cc
! a498f81c4b62e962bb1156a0655d1fa6  libstdc++-v3/testsuite/tr2/dynamic_bitset/pr58729.cc
! ed55eb2c0d2a05e9509a2c465df1c374  libstdc++-v3/testsuite/tr2/dynamic_bitset/pr87784.cc
! 2ba595b67c85d57a4b4162fc6aac3654  libstdc++-v3/testsuite/tr2/dynamic_bitset/pr92059.cc
! 79cc1559296f786ea07a08f9f179f961  libstdc++-v3/testsuite/tr2/headers/all.cc
! 005b293236848da3df596a77df9e492d  libstdc++-v3/testsuite/tr2/headers/using_namespace_std_tr2.cc
! d975b498bc68d906c7c58d6e243db771  libstdc++-v3/testsuite/util/atomic/wait_notify_util.h
! c5ce4d0fb5756a0c085561a0661ff5fb  libstdc++-v3/testsuite/util/common_type/assoc/common_type.hpp
! 803bedea5dda87fff6b07a6062fe94c0  libstdc++-v3/testsuite/util/common_type/assoc/detail/comb_hash_fn_string_form.hpp
! e47d1b378e9fd3594b3d2ccde88a297b  libstdc++-v3/testsuite/util/common_type/assoc/detail/ds_string_form.hpp
! 29887265b225b0fac95e9ff375228ac6  libstdc++-v3/testsuite/util/common_type/assoc/detail/list_update_policy_string_form.hpp
! 077ddd19117bc989ae391855af3f227c  libstdc++-v3/testsuite/util/common_type/assoc/detail/probe_fn_string_form.hpp
! c93538e0511c74e3cbc77edc9e05bbbb  libstdc++-v3/testsuite/util/common_type/assoc/detail/resize_policy_string_form.hpp
! 9fc519051c36a9a58665d011975cb371  libstdc++-v3/testsuite/util/common_type/assoc/detail/size_policy_string_form.hpp
! 2ece31fce3fe23bf24091228f95058a5  libstdc++-v3/testsuite/util/common_type/assoc/detail/store_hash_string_form.hpp
! cfd14e8c81bdb6751f5e7f254c378137  libstdc++-v3/testsuite/util/common_type/assoc/detail/tree_supports_order_statistics.hpp
! 1990be8db967b1ec8515fd6bd1e04fda  libstdc++-v3/testsuite/util/common_type/assoc/detail/trie_supports_order_statistics.hpp
! cd146a451970eb1339af5352d00e7d3b  libstdc++-v3/testsuite/util/common_type/assoc/detail/trie_supports_prefix_search.hpp
! fca62e9113202819f26f5f8309c9bfaa  libstdc++-v3/testsuite/util/common_type/assoc/detail/trigger_policy_string_form.hpp
! 93e4e8f007ce5aa2488e3307352b20a7  libstdc++-v3/testsuite/util/common_type/assoc/native_set.hpp
! 825ccdaeb0efb4c3fd1f581823077bbb  libstdc++-v3/testsuite/util/common_type/assoc/string_form.hpp
! 635d1543fd90516137bd933b34b175dc  libstdc++-v3/testsuite/util/common_type/assoc/template_policy.hpp
! 5c291cfff88cab78ef372efa5b4c154e  libstdc++-v3/testsuite/util/common_type/priority_queue/common_type.hpp
! fdcbcf3cd09a96d1fc4259873993120c  libstdc++-v3/testsuite/util/common_type/priority_queue/detail/ds_string_form.hpp
! bf8e90d26c3c70a1b440ff8a2f606d6d  libstdc++-v3/testsuite/util/common_type/priority_queue/string_form.hpp
! e1db4521020eb6ad98661a6384ac05c9  libstdc++-v3/testsuite/util/debug/checks.h
! 4b75dd043ada615b09a7f9d1410df3d3  libstdc++-v3/testsuite/util/debug/unordered_checks.h
! 224482b0241c44e8d17c84a80d27cdf4  libstdc++-v3/testsuite/util/exception/safety.h
! 332a48d45589bffd014e504368ec9271  libstdc++-v3/testsuite/util/hash_fn/dna_str_limit.hpp
! e3c561e0b288d93e77ff4ffb9e0569ef  libstdc++-v3/testsuite/util/hash_fn/limit_string_hash_fn.hpp
! ab8c59c5ca46b53c648c3483be9275fa  libstdc++-v3/testsuite/util/hash_fn/string_hash_fn.hpp
! f1b00867ea02277a8a99374e0046189e  libstdc++-v3/testsuite/util/hash_fn/string_ranged_hash_fn.hpp
! 167fe553598c0aa1a8f0bcc69d379c47  libstdc++-v3/testsuite/util/hash_fn/string_ranged_probe_fn.hpp
! cfab9ffe4b47c3d388a06acbd6b08388  libstdc++-v3/testsuite/util/io/illegal_input_error.hpp
! c2cf90f977dfecc834733bbdf149eb1b  libstdc++-v3/testsuite/util/io/prog_bar.cc
! 63d6de09da47191c6425db4941cdea64  libstdc++-v3/testsuite/util/io/prog_bar.hpp
! 0b1372b3e6f9b87d872e98ca342515aa  libstdc++-v3/testsuite/util/io/text_populate.hpp
! 6cb4b8bec4a2954dbef59b80c5fc326d  libstdc++-v3/testsuite/util/io/verified_cmd_line_input.cc
! 5d9d9d0a370beb0d43bacdcf7cf2ef76  libstdc++-v3/testsuite/util/io/verified_cmd_line_input.hpp
! e1934a501bc6eb29bfe692b966265193  libstdc++-v3/testsuite/util/io/xml.hpp
! 42ad9dec65e80f57d5d0b9941f09069b  libstdc++-v3/testsuite/util/io/xml_test_formatter.hpp
! a08724c5d6e4b4365391a7d3e43c2201  libstdc++-v3/testsuite/util/native_type/native_hash_map.hpp
! b6ad925869d77c4a8a04f4b407cf0893  libstdc++-v3/testsuite/util/native_type/native_hash_multimap.hpp
! ba221ad4ceec75242d2e55b32f077fd4  libstdc++-v3/testsuite/util/native_type/native_hash_set.hpp
! b6fc35db46b338b7251e922225f119f4  libstdc++-v3/testsuite/util/native_type/native_hash_tag.hpp
! 96acced94d3406b22b7da1fac1f6014d  libstdc++-v3/testsuite/util/native_type/native_map.hpp
! ab09df4736c1ffa6200e95f318f695f7  libstdc++-v3/testsuite/util/native_type/native_multimap.hpp
! cedef0c52e2fc001b7c70f2b4274f989  libstdc++-v3/testsuite/util/native_type/native_priority_queue.hpp
! 098b791d84c69f255666caf4d774f970  libstdc++-v3/testsuite/util/native_type/native_set.hpp
! 708d298594f245ba9e6ee78b38cf977e  libstdc++-v3/testsuite/util/native_type/native_tree_tag.hpp
! 0a3a082a82f5a979b7f9a22edfeeca0f  libstdc++-v3/testsuite/util/performance/assoc/mem_usage/erase_test.hpp
! 38319db6ba9b5c2c15fc555ce3947d8f  libstdc++-v3/testsuite/util/performance/assoc/mem_usage/multimap_insert_test.hpp
! 6195a14c516614f6545860a9a748b631  libstdc++-v3/testsuite/util/performance/assoc/multimap_common_type.hpp
! e8693af8bbf4b8037da1196bf2fea935  libstdc++-v3/testsuite/util/performance/assoc/timing/common_type.hpp
! ff3b6535718fcdee9aed6e3d495957ec  libstdc++-v3/testsuite/util/performance/assoc/timing/find_test.hpp
! e400d5d306ca5ff59fe11b44af20d0b1  libstdc++-v3/testsuite/util/performance/assoc/timing/insert_test.hpp
! 5c8e7eea83632851ce253f35a0541500  libstdc++-v3/testsuite/util/performance/assoc/timing/multimap_find_test.hpp
! 1d001d280644b137df52a672ceca7193  libstdc++-v3/testsuite/util/performance/assoc/timing/multimap_insert_test.hpp
! 9589378723527924e776a5445c77ade2  libstdc++-v3/testsuite/util/performance/assoc/timing/subscript_find_test.hpp
! 435dc6defad5fc5967013187b0032265  libstdc++-v3/testsuite/util/performance/assoc/timing/subscript_insert_test.hpp
! 2489d36d18c66c76a1ad7368d736784e  libstdc++-v3/testsuite/util/performance/assoc/timing/tree_order_statistics_test.hpp
! ca3f05473a8d97620e5c7396f7b8d124  libstdc++-v3/testsuite/util/performance/assoc/timing/tree_split_join_test.hpp
! 1917a409db6dda9d9f3576350f5d5b0e  libstdc++-v3/testsuite/util/performance/io/xml_formatter.hpp
! 552e189668f5fd98c7d35ed0c7398214  libstdc++-v3/testsuite/util/performance/priority_queue/mem_usage/pop_test.hpp
! ebc9bcbd0e6d5815a4a52964d236c135  libstdc++-v3/testsuite/util/performance/priority_queue/timing/join_test.hpp
! 394c09e7d6b474523e27c8e2cf08cc52  libstdc++-v3/testsuite/util/performance/priority_queue/timing/modify_test.hpp
! 6c6713b531b1d4acc629fef1e1495e73  libstdc++-v3/testsuite/util/performance/priority_queue/timing/push_pop_test.hpp
! 2898b73b579af95720810cba3b5e83d4  libstdc++-v3/testsuite/util/performance/priority_queue/timing/push_test.hpp
! 90e856db31989d3508e6bd6cdf55cddf  libstdc++-v3/testsuite/util/performance/time/elapsed_timer.cc
! 1ff0d74b48711bc77748d0b909800982  libstdc++-v3/testsuite/util/performance/time/elapsed_timer.hpp
! 3190c7174f6a02208176bbc5675fcc77  libstdc++-v3/testsuite/util/performance/time/timing_test_base.hpp
  f229f005fb6b0edfab2a25224f4aa670  libstdc++-v3/testsuite/util/pstl/pstl_test_config.h
  bf077ecf7f82302a11843d7108c1be3c  libstdc++-v3/testsuite/util/pstl/test_utils.h
! 9ada98f8a1b102bb143bacf9cc3a8c7f  libstdc++-v3/testsuite/util/regression/basic_type.hpp
! c73349323ee0def05a3e98e9c56ad654  libstdc++-v3/testsuite/util/regression/common_type.hpp
! 71573e5f500982c301d54fe932412bc6  libstdc++-v3/testsuite/util/regression/rand/assoc/container_rand_regression_test.h
! 7d14115816421091068c920230c0c2e6  libstdc++-v3/testsuite/util/regression/rand/assoc/container_rand_regression_test.tcc
! de6c07bb4ec2e74430cc172025587872  libstdc++-v3/testsuite/util/regression/rand/assoc/rand_regression_test.hpp
! 07b676056467de1ff07267b6af1f5144  libstdc++-v3/testsuite/util/regression/rand/priority_queue/container_rand_regression_test.h
! af9845a28f0233407cc4601fd54d7728  libstdc++-v3/testsuite/util/regression/rand/priority_queue/container_rand_regression_test.tcc
! 722aea15e859e7f9a94f1dc875e7363d  libstdc++-v3/testsuite/util/regression/rand/priority_queue/rand_regression_test.hpp
! ba08767a5589b3dbf4b5b501aa098837  libstdc++-v3/testsuite/util/regression/rand/xml_formatter.hpp
! ca6d2947e096ab49a1c6356640ac5b3c  libstdc++-v3/testsuite/util/regression/trait/assoc/get_set_load_trait.hpp
! 5675935e7666a36077cfd83c9a2ce119  libstdc++-v3/testsuite/util/regression/trait/assoc/get_set_loads_trait.hpp
! 92656ebdd0d0b2fea5e5c0ca45fd3e87  libstdc++-v3/testsuite/util/regression/trait/assoc/native_type_trait.hpp
! 1b55372cf8df4394eb71ca803b1962ee  libstdc++-v3/testsuite/util/regression/trait/assoc/node_update_trait.hpp
! 36a38f2deff666e29999919737762bb1  libstdc++-v3/testsuite/util/regression/trait/assoc/resize_trait.hpp
! ccf6c77f1bc6b0c70182cd63b5ed842c  libstdc++-v3/testsuite/util/regression/trait/assoc/to_string.hpp
! bb1e810f78384f7f6da90c3dce63f341  libstdc++-v3/testsuite/util/regression/trait/assoc/trait.hpp
! f3fde6bb9b546237057b02fe8d9a90a2  libstdc++-v3/testsuite/util/regression/trait/assoc/type_trait.hpp
! 18712c28dc2a9d6c31ce3070ec5d69bb  libstdc++-v3/testsuite/util/regression/trait/erase_if_fn.hpp
! 10b6ecfbd8c13ea0393282648bd97534  libstdc++-v3/testsuite/util/regression/trait/priority_queue/trait.hpp
! 5fbf959b85b032a0b9a4962e8ef76503  libstdc++-v3/testsuite/util/replacement_memory_operators.h
! 708bbbe17ae49e47c0341a01a7e4cecf  libstdc++-v3/testsuite/util/slow_clock.h
! 0a01d60f83a38392e8e003a6eef7c85a  libstdc++-v3/testsuite/util/specfun_testcase.h
! 78d59ed52eae96cf183b987a4e100373  libstdc++-v3/testsuite/util/statistic/result_recorder.hpp
! 4d2b9acae8e7e8b6f93e915daf4d60d4  libstdc++-v3/testsuite/util/statistic/sample_mean.hpp
! 0be600a4c8597b5b2b92a4a43ab244c1  libstdc++-v3/testsuite/util/statistic/sample_mean_confidence_checker.hpp
! cc2f599df6e692aa861e62c443181317  libstdc++-v3/testsuite/util/statistic/sample_variance.hpp
! c19ea7d2b81b325fb60d02b8d489372a  libstdc++-v3/testsuite/util/testsuite_abi.cc
! 5f5f98f71fe68eb622af78e692168fe5  libstdc++-v3/testsuite/util/testsuite_abi.h
! 8e1f4e43f1dd4359c02159b94339b136  libstdc++-v3/testsuite/util/testsuite_abi_check.cc
! e961644701157db73d4cf2cc9171e468  libstdc++-v3/testsuite/util/testsuite_allocator.cc
! cae089f7cf4ef661e9c1546049aa8cca  libstdc++-v3/testsuite/util/testsuite_allocator.h
! a2f6445ffcf9d0cfe166fbc9acb26232  libstdc++-v3/testsuite/util/testsuite_api.h
! 695fd3a6c85e6721e0e1856cb391e5b0  libstdc++-v3/testsuite/util/testsuite_character.cc
! 45083d6138499a97076b79c8648b7cf4  libstdc++-v3/testsuite/util/testsuite_character.h
! fa074c686301b5105ab18a96c2100955  libstdc++-v3/testsuite/util/testsuite_common_types.h
! 984197a9cc97d5843e07b08a9a1fc171  libstdc++-v3/testsuite/util/testsuite_container_traits.h
! 90db88e42f244f42ad35a897a9461b03  libstdc++-v3/testsuite/util/testsuite_containergen.h
! cadd3d87197d959d51e840cf34ad2697  libstdc++-v3/testsuite/util/testsuite_containers.h
! aeb39a2190eb48653793a7d8905eaae8  libstdc++-v3/testsuite/util/testsuite_counter_type.h
! ee607caf7aa5fd0472cd17cbad7b0bbc  libstdc++-v3/testsuite/util/testsuite_error.h
! ddae07af68e759bf8222f8d402a5aa0d  libstdc++-v3/testsuite/util/testsuite_fs.h
! 107919fef8e90c0d358a971b89f16155  libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
! 10f68fa333343c768f46d38ea805b39f  libstdc++-v3/testsuite/util/testsuite_hooks.cc
! 4f0f4d2b90ba61df04bae848fe2a33c7  libstdc++-v3/testsuite/util/testsuite_hooks.h
! 1a76def38110431282b928a61ec6119a  libstdc++-v3/testsuite/util/testsuite_io.h
! 4e7866f8e786ba4690bdba7f06c84aac  libstdc++-v3/testsuite/util/testsuite_iterators.h
! 4ddebfe4cc094998e91f7fa0549cc59f  libstdc++-v3/testsuite/util/testsuite_new_operators.h
! ea911a831eeefa2e82c77ba84035d7c9  libstdc++-v3/testsuite/util/testsuite_performance.h
! a1640714fc4e3657cefdedd4db899838  libstdc++-v3/testsuite/util/testsuite_random.h
! 21750d2170aee6105ae28fc56a930fcd  libstdc++-v3/testsuite/util/testsuite_regex.h
! 063428f11af85289791b3fa97259d0ae  libstdc++-v3/testsuite/util/testsuite_rng.h
! 146a9ce05621e17b50494bb3f4feecd0  libstdc++-v3/testsuite/util/testsuite_rvalref.h
! 52647b951ba3aa06558c24c2dd00a0f4  libstdc++-v3/testsuite/util/testsuite_shared.cc
! 3f43da4f3a13e674d6e64e19ebecd413  libstdc++-v3/testsuite/util/testsuite_tr1.h
! d7927f85e40de3823114f01b93b3bf21  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
! 1936a81f2a04a996ff99c7ebdebc5003  libtool.m4
! c3ec532c70c218912f2e1315ec570421  libvtv/ChangeLog
! 7ad6a0c753c219e31237f212c5854dd8  libvtv/Makefile.am
  b1170aae9472f26fdc8326737dc22aba  libvtv/Makefile.in
  3b765c4f4a0a0f606db1472bce2b8d29  libvtv/acinclude.m4
  84c8143a9310ea291315dcd0c276df5d  libvtv/aclocal.m4
! 428060c62738810622a8865de9f9d1b0  libvtv/configure
  cc9f6a09cf2db980b7d7119fd0748406  libvtv/configure.ac
! e0985bd4dd2c46ce20d72dc14110055b  libvtv/configure.tgt
  2caccd848c579fcddd2a8c8106cfaff9  libvtv/scripts/run-testsuite.sh
  09a6150d1619f2508d7844f860b3382c  libvtv/scripts/sum-vtv-counts.c
  4835ec70e1fbcd9acd3c280c0060afa4  libvtv/testsuite/Makefile.am
  fda4739e0005be93900b671246d786ff  libvtv/testsuite/Makefile.in
! a0ef71c1583562599c6231db13e917a8  libvtv/testsuite/config/default.exp
  c3135c06118981205f468524e15716be  libvtv/testsuite/lib/libvtv-dg.exp
  b01596489f4e825c77d9429f5bd51424  libvtv/testsuite/lib/libvtv.exp
  dc26824f08dd227e0cba7e7ebc8f4d3a  libvtv/testsuite/libvtv.cc/bb_tests.cc
*************** e18c427700b2de867318b8dfb4ccdc4e  libvtv
*** 101071,101077 ****
  1af090cb318f05dcac1de1af35049bf3  libvtv/testsuite/libvtv.cc/thunk.cc
  4342d1f35d7a127cbf072aea14c40ca4  libvtv/testsuite/libvtv.cc/thunk_vtable_map_attack.cc
  af622745e9d1ebd1a80806c6a477adda  libvtv/testsuite/libvtv.cc/v8-test-2.cc
! c4e631e29a53fe986188426c2287221f  libvtv/testsuite/libvtv.cc/virtfunc-test.cc
  02687d81e25b3d8b61f75737f0a618a9  libvtv/testsuite/libvtv.cc/virtual_inheritance.cc
  85e4bee8e57399ebf8c098da2a829dd0  libvtv/testsuite/libvtv.cc/vtv.exp
  85942493419912cb30bceeaf62d53da8  libvtv/testsuite/libvtv.cc/xlan-test.cc
--- 107656,107662 ----
  1af090cb318f05dcac1de1af35049bf3  libvtv/testsuite/libvtv.cc/thunk.cc
  4342d1f35d7a127cbf072aea14c40ca4  libvtv/testsuite/libvtv.cc/thunk_vtable_map_attack.cc
  af622745e9d1ebd1a80806c6a477adda  libvtv/testsuite/libvtv.cc/v8-test-2.cc
! 162e3fc8dffcce7a1f8a3b2511922976  libvtv/testsuite/libvtv.cc/virtfunc-test.cc
  02687d81e25b3d8b61f75737f0a618a9  libvtv/testsuite/libvtv.cc/virtual_inheritance.cc
  85e4bee8e57399ebf8c098da2a829dd0  libvtv/testsuite/libvtv.cc/vtv.exp
  85942493419912cb30bceeaf62d53da8  libvtv/testsuite/libvtv.cc/xlan-test.cc
*************** dc2332c7582cf3d236d0ee930f63eca3  libvtv
*** 101081,101087 ****
  8ef0aa7efe1764eeb6f68dbd51e6d4b5  libvtv/testsuite/libvtv.mt.cc/mt.exp
  bb4ece037690dc6ecdd0c04662562123  libvtv/testsuite/libvtv.mt.cc/register_set_pair_inserts_mt.cc
  4028191848aead5f1025ef6d51d6460e  libvtv/testsuite/libvtv.mt.cc/register_set_pair_mt.cc
! e073eb22d2508bce8c8d2b863c7c9a6b  libvtv/testsuite/other-tests/Makefile.am
  481aa959d973aa72ca282a2b6db129e3  libvtv/testsuite/other-tests/Makefile.in
  ed7bc4ea169d6384a32fd76063d7af7f  libvtv/testsuite/other-tests/README
  32bbdc8e2683c298b41d8d68281dd6ea  libvtv/testsuite/other-tests/dlopen.cc
--- 107666,107672 ----
  8ef0aa7efe1764eeb6f68dbd51e6d4b5  libvtv/testsuite/libvtv.mt.cc/mt.exp
  bb4ece037690dc6ecdd0c04662562123  libvtv/testsuite/libvtv.mt.cc/register_set_pair_inserts_mt.cc
  4028191848aead5f1025ef6d51d6460e  libvtv/testsuite/libvtv.mt.cc/register_set_pair_mt.cc
! baf7fc71c95661906995119aa74b27a4  libvtv/testsuite/other-tests/Makefile.am
  481aa959d973aa72ca282a2b6db129e3  libvtv/testsuite/other-tests/Makefile.in
  ed7bc4ea169d6384a32fd76063d7af7f  libvtv/testsuite/other-tests/README
  32bbdc8e2683c298b41d8d68281dd6ea  libvtv/testsuite/other-tests/dlopen.cc
*************** a39c1926ca0a1bac2ffa3e5389fe2eb2  libvtv
*** 101094,101132 ****
  fd1ee5c194e5759320643df81103775d  libvtv/testsuite/other-tests/temp_deriv.cc
  a28f0d44162e9d978de21ea4c82b411e  libvtv/testsuite/other-tests/temp_deriv2.cc
  fd44dfd4ba421163f0a14a74988ea97a  libvtv/testsuite/other-tests/temp_deriv3.cc
! 0aba91225d7dee651d64e984016debfa  libvtv/vtv_fail.cc
! 6c571fa3c4c337c1d398b0f740a4f3cf  libvtv/vtv_fail.h
! 82a7d51fef33fff5f3aa15e7f3d5663b  libvtv/vtv_malloc.cc
! 4af5fc628525a6de293034484c0d5abf  libvtv/vtv_malloc.h
! 9b48afb11e9e44388a31a53584b58459  libvtv/vtv_map.h
! 90a1672a9f63f6c22b651b23afe76d73  libvtv/vtv_rts.cc
! 70999a0ec1f5ac82e966be6b96e17a3b  libvtv/vtv_rts.h
! a82059e4cf6d1733664ef9a8ac817f42  libvtv/vtv_set.h
! 1602ba13934ec1d95d37bb6203bdacdf  libvtv/vtv_utils.cc
! f1ea2b13357bfe01c43d3b6fbf31fd48  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  06c2854f9cfe5864b2885e0d0e9c512f  ltmain.sh
! 63d0e70de3edcfb195ccd272a4248e3b  lto-plugin/ChangeLog
! 48ea87886a6a768ab6024edccc8e1e31  lto-plugin/Makefile.am
! 9113360bfd397d09dc99413406c60ad4  lto-plugin/Makefile.in
  75fc65b35d0a47ac098f7a278d37060b  lto-plugin/aclocal.m4
  de4c999b99ec1e3d1bcb8a340bd8d5fd  lto-plugin/config.h.in
! dd8f907ddd55cac63218d17a616e1c3f  lto-plugin/configure
  94b1550691bec5ce21db143723d02984  lto-plugin/configure.ac
! 5370a057d68fcd139671cbd0de540c3e  lto-plugin/lto-plugin.c
  dee72a6a60e99528b0d17bf3ff9a1e15  ltoptions.m4
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  lt~obsolete.m4
! 3f6a8a8edd82adb54c340d3e555ce934  maintainer-scripts/ChangeLog
  33c7bc2d2c55956dfac85a05d8a80eff  maintainer-scripts/README
! e70ffb6559f8817db41ee1e69bc60287  maintainer-scripts/branch_changer.py
! 1c3f2c7d87d076b4209a2a03844292e5  maintainer-scripts/bugzilla-close-candidate.py
! 5ff187bd37be8a647a82b6a2d1ac321a  maintainer-scripts/crontab
  1777fbf3e6a3232bd6898ce857cdf2fd  maintainer-scripts/gcc_release
! 4b085aa82b5f2fe789828063eed76560  maintainer-scripts/generate_libstdcxx_web_docs
  33d97164a8610c7abf67eff7d28f47ff  maintainer-scripts/maintainer-addresses
! e310820d0266ff02d41632dca1290258  maintainer-scripts/update_version_git
  4c0406d5444d6d2dc128b2d342d9e0ad  maintainer-scripts/update_web_docs_git
  89960da3ee98bea76c62bf0bf235d1f9  maintainer-scripts/update_web_docs_libstdcxx_git
  5f2a276ee7b8decec541391229d03591  missing
--- 107679,107718 ----
  fd1ee5c194e5759320643df81103775d  libvtv/testsuite/other-tests/temp_deriv.cc
  a28f0d44162e9d978de21ea4c82b411e  libvtv/testsuite/other-tests/temp_deriv2.cc
  fd44dfd4ba421163f0a14a74988ea97a  libvtv/testsuite/other-tests/temp_deriv3.cc
! ecdefc62cb0184c7c041b48dd96090d6  libvtv/vtv_fail.cc
! 7f46dbdf4c734b0bb0d805294a165f55  libvtv/vtv_fail.h
! f26a766617283a0b973649a93d352c03  libvtv/vtv_malloc.cc
! 3a3d96cdd1296fc9284d4df01beea848  libvtv/vtv_malloc.h
! 2b674fa79440c0dd1732a540d471f607  libvtv/vtv_map.h
! d1ed87927171e03c12de5a77660c86c2  libvtv/vtv_rts.cc
! a0b60ab66c6f30687976addf58306c30  libvtv/vtv_rts.h
! fd301005dc07375a9b1b26c1df04e576  libvtv/vtv_set.h
! 16d5bd4299ad6f7905764e7c3dc63e28  libvtv/vtv_utils.cc
! 4a2d91c71136af55b12e42fa84195778  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  06c2854f9cfe5864b2885e0d0e9c512f  ltmain.sh
! 78e35fdc3295355d0035c210f6ea6e02  lto-plugin/ChangeLog
! b4172d0962c2ec3a954d98e768b4995e  lto-plugin/Makefile.am
! 93fe746c6f1d54ade83e13d65096fe9f  lto-plugin/Makefile.in
  75fc65b35d0a47ac098f7a278d37060b  lto-plugin/aclocal.m4
  de4c999b99ec1e3d1bcb8a340bd8d5fd  lto-plugin/config.h.in
! 7e3bb792a40841dadcac04d9301acb6e  lto-plugin/configure
  94b1550691bec5ce21db143723d02984  lto-plugin/configure.ac
! ee8b920dbb30b7045bd72613cdce99e8  lto-plugin/lto-plugin.c
  dee72a6a60e99528b0d17bf3ff9a1e15  ltoptions.m4
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  lt~obsolete.m4
! 28b8df5fa19deb3f94f81fa69d28e3ee  maintainer-scripts/ChangeLog
  33c7bc2d2c55956dfac85a05d8a80eff  maintainer-scripts/README
! 507e832af5f2d63b8a78eef217c807a7  maintainer-scripts/branch_changer.py
! c819510f0d438149c1518bda7b165ac4  maintainer-scripts/bugzilla-close-candidate.py
! 4e68221d8bed06d740127a5f6e7519a4  maintainer-scripts/crontab
  1777fbf3e6a3232bd6898ce857cdf2fd  maintainer-scripts/gcc_release
! 262d529ab10d5bd398f14fc1ec9fed1a  maintainer-scripts/generate_libstdcxx_web_docs
  33d97164a8610c7abf67eff7d28f47ff  maintainer-scripts/maintainer-addresses
! 1fcc4f18e9f9043eaea6c3c990d96d9b  maintainer-scripts/setup.cfg
! 1012437849cecda6e54b3948f279ae93  maintainer-scripts/update_version_git
  4c0406d5444d6d2dc128b2d342d9e0ad  maintainer-scripts/update_web_docs_git
  89960da3ee98bea76c62bf0bf235d1f9  maintainer-scripts/update_web_docs_libstdcxx_git
  5f2a276ee7b8decec541391229d03591  missing
*************** cf2baa0854f564a7785307e79f155efc  symlin
*** 101138,101159 ****
  40bb1f4ce4a60a36d1ec50d66aeed4d1  test-driver
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  03bf3ba8089f4bf475ef4035cf316a47  zlib/CMakeLists.txt
! 412b3484f5008a5e1c0d6f1607d979ae  zlib/ChangeLog
! 25f33f86e95b8478cd142323485efc71  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
  3b6b6f9e88f2319b75e6ccb8c2823b13  zlib/INDEX
! 25047d2620ec967dac4c119856046247  zlib/Makefile.am
! a1afc9bc4fa1a74bc70e7e21cab261c7  zlib/Makefile.in
  26a915e4bc7d8d65872c524a4716e51e  zlib/README
  004a8c34eba1b805f836a09dd4759f34  zlib/acinclude.m4
! 289526b193c827263e64831c2e0a9e59  zlib/aclocal.m4
  088f835e49176d2c289162fe277f1433  zlib/adler32.c
  f16cd4621f5561cf147b5e56a8af1946  zlib/amiga/Makefile.pup
  315c9e3e7dd1d24aeb9d6bc55b7de5fd  zlib/amiga/Makefile.sas
  68c4c1f6c737d307d372130351b123a6  zlib/compress.c
! 9556d7da2491be904d96080a59a30dba  zlib/configure
! d49a63cde18e27f7df4064042988efe2  zlib/configure.ac
  417c6b266549b949b958733f95d075ef  zlib/contrib/README.contrib
  cd14a97dd8a0613bb1244a68c0c764d6  zlib/contrib/ada/buffer_demo.adb
  20f2b8d64f3507ea0eb67bf4be048599  zlib/contrib/ada/mtest.adb
--- 107724,107745 ----
  40bb1f4ce4a60a36d1ec50d66aeed4d1  test-driver
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  03bf3ba8089f4bf475ef4035cf316a47  zlib/CMakeLists.txt
! 464164d839eb572aae9d6bc039949a92  zlib/ChangeLog
! f10e5e9394787b288e91fed29533720a  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
  3b6b6f9e88f2319b75e6ccb8c2823b13  zlib/INDEX
! 9e808ecd2d75fc797d09e47f0982c345  zlib/Makefile.am
! 389276a3490f1041d8979296ec0dc597  zlib/Makefile.in
  26a915e4bc7d8d65872c524a4716e51e  zlib/README
  004a8c34eba1b805f836a09dd4759f34  zlib/acinclude.m4
! 5560350998c7f1171b2e343d788f5355  zlib/aclocal.m4
  088f835e49176d2c289162fe277f1433  zlib/adler32.c
  f16cd4621f5561cf147b5e56a8af1946  zlib/amiga/Makefile.pup
  315c9e3e7dd1d24aeb9d6bc55b7de5fd  zlib/amiga/Makefile.sas
  68c4c1f6c737d307d372130351b123a6  zlib/compress.c
! 1475919e85dc69847ca481f2978c5dc6  zlib/configure
! 490e6b2cbb61562488945b0807a88053  zlib/configure.ac
  417c6b266549b949b958733f95d075ef  zlib/contrib/README.contrib
  cd14a97dd8a0613bb1244a68c0c764d6  zlib/contrib/ada/buffer_demo.adb
  20f2b8d64f3507ea0eb67bf4be048599  zlib/contrib/ada/mtest.adb
diff -Nrcpad gcc-10.3.0/Makefile.def gcc-11.1.0/Makefile.def
*** gcc-10.3.0/Makefile.def	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/Makefile.def	Tue Apr 27 10:00:12 2021
*************** host_modules= { module= itcl; };
*** 81,86 ****
--- 81,95 ----
  host_modules= { module= ld; bootstrap=true; };
  host_modules= { module= libbacktrace; bootstrap=true; };
  host_modules= { module= libcpp; bootstrap=true; };
+ // As with libiconv, don't install any of libcody
+ host_modules= { module= libcody; bootstrap=true;
+ 		no_install= true;
+ 		missing= pdf;
+ 		missing= html;
+ 		missing= info;
+ 		missing= install-pdf;
+ 		missing= install-html;
+ 		missing= install-info; };
  host_modules= { module= libdecnumber; bootstrap=true; };
  host_modules= { module= libgui; };
  host_modules= { module= libiberty; bootstrap=true;
*************** host_modules= { module= libtermcap; no_c
*** 125,138 ****
                  missing=distclean;
                  missing=maintainer-clean; };
  host_modules= { module= utils; no_check=true; };
  host_modules= { module= gnattools; };
  host_modules= { module= lto-plugin; bootstrap=true;
  		extra_configure_flags='--enable-shared @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@';
  		extra_make_flags='@extra_linker_plugin_flags@'; };
  host_modules= { module= libcc1; extra_configure_flags=--enable-shared; };
  host_modules= { module= gotools; };
! host_modules= { module= libctf; no_install=true; no_check=true;
! 		bootstrap=true; };
  
  target_modules = { module= libstdc++-v3;
  		   bootstrap=true;
--- 134,147 ----
                  missing=distclean;
                  missing=maintainer-clean; };
  host_modules= { module= utils; no_check=true; };
+ host_modules= { module= c++tools; };
  host_modules= { module= gnattools; };
  host_modules= { module= lto-plugin; bootstrap=true;
  		extra_configure_flags='--enable-shared @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@';
  		extra_make_flags='@extra_linker_plugin_flags@'; };
  host_modules= { module= libcc1; extra_configure_flags=--enable-shared; };
  host_modules= { module= gotools; };
! host_modules= { module= libctf; bootstrap=true; };
  
  target_modules = { module= libstdc++-v3;
  		   bootstrap=true;
*************** dependencies = { module=all-gcc; on=all-
*** 347,352 ****
--- 356,362 ----
  dependencies = { module=all-gcc; on=all-zlib; };
  dependencies = { module=all-gcc; on=all-libbacktrace; hard=true; };
  dependencies = { module=all-gcc; on=all-libcpp; hard=true; };
+ dependencies = { module=all-gcc; on=all-libcody; hard=true; };
  dependencies = { module=all-gcc; on=all-libdecnumber; hard=true; };
  dependencies = { module=all-gcc; on=all-libiberty; };
  dependencies = { module=all-gcc; on=all-fixincludes; };
*************** dependencies = { module=all-lto-plugin;
*** 381,386 ****
--- 391,398 ----
  dependencies = { module=configure-libcc1; on=configure-gcc; };
  dependencies = { module=all-libcc1; on=all-gcc; };
  
+ // we want version.o from gcc, and implicitly depend on libcody
+ dependencies = { module=all-c++tools; on=all-gcc; };
  dependencies = { module=all-gotools; on=all-target-libgo; };
  
  dependencies = { module=all-utils; on=all-libiberty; };
*************** dependencies = { module=all-binutils; on
*** 450,455 ****
--- 462,468 ----
  dependencies = { module=all-binutils; on=all-intl; };
  dependencies = { module=all-binutils; on=all-gas; };
  dependencies = { module=all-binutils; on=all-libctf; };
+ dependencies = { module=all-ld; on=all-libctf; };
  
  // We put install-opcodes before install-binutils because the installed
  // binutils might be on PATH, and they might need the shared opcodes
*************** dependencies = { module=all-sim; on=all-
*** 534,540 ****
  dependencies = { module=all-sim; on=all-bfd; };
  dependencies = { module=all-sim; on=all-opcodes; };
  dependencies = { module=all-sim; on=all-readline; };
- dependencies = { module=all-sim; on=configure-gdb; };
  
  // Other host modules.
  dependencies = { module=all-fastjar; on=all-zlib; };
--- 547,552 ----
*************** dependencies = { module=configure-libctf
*** 548,553 ****
--- 560,566 ----
  dependencies = { module=configure-libctf; on=all-intl; };
  dependencies = { module=configure-libctf; on=all-zlib; };
  dependencies = { module=configure-libctf; on=all-libiconv; };
+ dependencies = { module=check-libctf; on=all-ld; };
  
  // Warning, these are not well tested.
  dependencies = { module=all-bison; on=all-intl; };
diff -Nrcpad gcc-10.3.0/Makefile.in gcc-11.1.0/Makefile.in
*** gcc-10.3.0/Makefile.in	Thu Apr  8 11:57:03 2021
--- gcc-11.1.0/Makefile.in	Tue Apr 27 10:00:33 2021
*************** STAGEprofile_TFLAGS = $(STAGE2_TFLAGS)
*** 565,571 ****
  STAGEtrain_CFLAGS = $(filter-out -fchecking=1,$(STAGE3_CFLAGS))
  STAGEtrain_TFLAGS = $(filter-out -fchecking=1,$(STAGE3_TFLAGS))
  
! STAGEfeedback_CFLAGS = $(STAGE4_CFLAGS) -fprofile-use
  STAGEfeedback_TFLAGS = $(STAGE4_TFLAGS)
  
  STAGEautoprofile_CFLAGS = $(STAGE2_CFLAGS) -g
--- 565,571 ----
  STAGEtrain_CFLAGS = $(filter-out -fchecking=1,$(STAGE3_CFLAGS))
  STAGEtrain_TFLAGS = $(filter-out -fchecking=1,$(STAGE3_TFLAGS))
  
! STAGEfeedback_CFLAGS = $(STAGE4_CFLAGS) -fprofile-use -fprofile-reproducible=parallel-runs
  STAGEfeedback_TFLAGS = $(STAGE4_TFLAGS)
  
  STAGEautoprofile_CFLAGS = $(STAGE2_CFLAGS) -g
*************** configure-host:  \
*** 1017,1022 ****
--- 1017,1023 ----
      maybe-configure-ld \
      maybe-configure-libbacktrace \
      maybe-configure-libcpp \
+     maybe-configure-libcody \
      maybe-configure-libdecnumber \
      maybe-configure-libgui \
      maybe-configure-libiberty \
*************** configure-host:  \
*** 1037,1042 ****
--- 1038,1044 ----
      maybe-configure-tk \
      maybe-configure-libtermcap \
      maybe-configure-utils \
+     maybe-configure-c++tools \
      maybe-configure-gnattools \
      maybe-configure-lto-plugin \
      maybe-configure-libcc1 \
*************** all-host: maybe-all-libbacktrace
*** 1163,1168 ****
--- 1165,1173 ----
  @if libcpp-no-bootstrap
  all-host: maybe-all-libcpp
  @endif libcpp-no-bootstrap
+ @if libcody-no-bootstrap
+ all-host: maybe-all-libcody
+ @endif libcody-no-bootstrap
  @if libdecnumber-no-bootstrap
  all-host: maybe-all-libdecnumber
  @endif libdecnumber-no-bootstrap
*************** all-host: maybe-all-guile
*** 1193,1198 ****
--- 1198,1204 ----
  all-host: maybe-all-tk
  all-host: maybe-all-libtermcap
  all-host: maybe-all-utils
+ all-host: maybe-all-c++tools
  all-host: maybe-all-gnattools
  @if lto-plugin-no-bootstrap
  all-host: maybe-all-lto-plugin
*************** info-host: maybe-info-itcl
*** 1281,1286 ****
--- 1287,1293 ----
  info-host: maybe-info-ld
  info-host: maybe-info-libbacktrace
  info-host: maybe-info-libcpp
+ info-host: maybe-info-libcody
  info-host: maybe-info-libdecnumber
  info-host: maybe-info-libgui
  info-host: maybe-info-libiberty
*************** info-host: maybe-info-guile
*** 1301,1306 ****
--- 1308,1314 ----
  info-host: maybe-info-tk
  info-host: maybe-info-libtermcap
  info-host: maybe-info-utils
+ info-host: maybe-info-c++tools
  info-host: maybe-info-gnattools
  info-host: maybe-info-lto-plugin
  info-host: maybe-info-libcc1
*************** dvi-host: maybe-dvi-itcl
*** 1370,1375 ****
--- 1378,1384 ----
  dvi-host: maybe-dvi-ld
  dvi-host: maybe-dvi-libbacktrace
  dvi-host: maybe-dvi-libcpp
+ dvi-host: maybe-dvi-libcody
  dvi-host: maybe-dvi-libdecnumber
  dvi-host: maybe-dvi-libgui
  dvi-host: maybe-dvi-libiberty
*************** dvi-host: maybe-dvi-guile
*** 1390,1395 ****
--- 1399,1405 ----
  dvi-host: maybe-dvi-tk
  dvi-host: maybe-dvi-libtermcap
  dvi-host: maybe-dvi-utils
+ dvi-host: maybe-dvi-c++tools
  dvi-host: maybe-dvi-gnattools
  dvi-host: maybe-dvi-lto-plugin
  dvi-host: maybe-dvi-libcc1
*************** pdf-host: maybe-pdf-itcl
*** 1459,1464 ****
--- 1469,1475 ----
  pdf-host: maybe-pdf-ld
  pdf-host: maybe-pdf-libbacktrace
  pdf-host: maybe-pdf-libcpp
+ pdf-host: maybe-pdf-libcody
  pdf-host: maybe-pdf-libdecnumber
  pdf-host: maybe-pdf-libgui
  pdf-host: maybe-pdf-libiberty
*************** pdf-host: maybe-pdf-guile
*** 1479,1484 ****
--- 1490,1496 ----
  pdf-host: maybe-pdf-tk
  pdf-host: maybe-pdf-libtermcap
  pdf-host: maybe-pdf-utils
+ pdf-host: maybe-pdf-c++tools
  pdf-host: maybe-pdf-gnattools
  pdf-host: maybe-pdf-lto-plugin
  pdf-host: maybe-pdf-libcc1
*************** html-host: maybe-html-itcl
*** 1548,1553 ****
--- 1560,1566 ----
  html-host: maybe-html-ld
  html-host: maybe-html-libbacktrace
  html-host: maybe-html-libcpp
+ html-host: maybe-html-libcody
  html-host: maybe-html-libdecnumber
  html-host: maybe-html-libgui
  html-host: maybe-html-libiberty
*************** html-host: maybe-html-guile
*** 1568,1573 ****
--- 1581,1587 ----
  html-host: maybe-html-tk
  html-host: maybe-html-libtermcap
  html-host: maybe-html-utils
+ html-host: maybe-html-c++tools
  html-host: maybe-html-gnattools
  html-host: maybe-html-lto-plugin
  html-host: maybe-html-libcc1
*************** TAGS-host: maybe-TAGS-itcl
*** 1637,1642 ****
--- 1651,1657 ----
  TAGS-host: maybe-TAGS-ld
  TAGS-host: maybe-TAGS-libbacktrace
  TAGS-host: maybe-TAGS-libcpp
+ TAGS-host: maybe-TAGS-libcody
  TAGS-host: maybe-TAGS-libdecnumber
  TAGS-host: maybe-TAGS-libgui
  TAGS-host: maybe-TAGS-libiberty
*************** TAGS-host: maybe-TAGS-guile
*** 1657,1662 ****
--- 1672,1678 ----
  TAGS-host: maybe-TAGS-tk
  TAGS-host: maybe-TAGS-libtermcap
  TAGS-host: maybe-TAGS-utils
+ TAGS-host: maybe-TAGS-c++tools
  TAGS-host: maybe-TAGS-gnattools
  TAGS-host: maybe-TAGS-lto-plugin
  TAGS-host: maybe-TAGS-libcc1
*************** install-info-host: maybe-install-info-it
*** 1726,1731 ****
--- 1742,1748 ----
  install-info-host: maybe-install-info-ld
  install-info-host: maybe-install-info-libbacktrace
  install-info-host: maybe-install-info-libcpp
+ install-info-host: maybe-install-info-libcody
  install-info-host: maybe-install-info-libdecnumber
  install-info-host: maybe-install-info-libgui
  install-info-host: maybe-install-info-libiberty
*************** install-info-host: maybe-install-info-gu
*** 1746,1751 ****
--- 1763,1769 ----
  install-info-host: maybe-install-info-tk
  install-info-host: maybe-install-info-libtermcap
  install-info-host: maybe-install-info-utils
+ install-info-host: maybe-install-info-c++tools
  install-info-host: maybe-install-info-gnattools
  install-info-host: maybe-install-info-lto-plugin
  install-info-host: maybe-install-info-libcc1
*************** install-pdf-host: maybe-install-pdf-itcl
*** 1815,1820 ****
--- 1833,1839 ----
  install-pdf-host: maybe-install-pdf-ld
  install-pdf-host: maybe-install-pdf-libbacktrace
  install-pdf-host: maybe-install-pdf-libcpp
+ install-pdf-host: maybe-install-pdf-libcody
  install-pdf-host: maybe-install-pdf-libdecnumber
  install-pdf-host: maybe-install-pdf-libgui
  install-pdf-host: maybe-install-pdf-libiberty
*************** install-pdf-host: maybe-install-pdf-guil
*** 1835,1840 ****
--- 1854,1860 ----
  install-pdf-host: maybe-install-pdf-tk
  install-pdf-host: maybe-install-pdf-libtermcap
  install-pdf-host: maybe-install-pdf-utils
+ install-pdf-host: maybe-install-pdf-c++tools
  install-pdf-host: maybe-install-pdf-gnattools
  install-pdf-host: maybe-install-pdf-lto-plugin
  install-pdf-host: maybe-install-pdf-libcc1
*************** install-html-host: maybe-install-html-it
*** 1904,1909 ****
--- 1924,1930 ----
  install-html-host: maybe-install-html-ld
  install-html-host: maybe-install-html-libbacktrace
  install-html-host: maybe-install-html-libcpp
+ install-html-host: maybe-install-html-libcody
  install-html-host: maybe-install-html-libdecnumber
  install-html-host: maybe-install-html-libgui
  install-html-host: maybe-install-html-libiberty
*************** install-html-host: maybe-install-html-gu
*** 1924,1929 ****
--- 1945,1951 ----
  install-html-host: maybe-install-html-tk
  install-html-host: maybe-install-html-libtermcap
  install-html-host: maybe-install-html-utils
+ install-html-host: maybe-install-html-c++tools
  install-html-host: maybe-install-html-gnattools
  install-html-host: maybe-install-html-lto-plugin
  install-html-host: maybe-install-html-libcc1
*************** installcheck-host: maybe-installcheck-it
*** 1993,1998 ****
--- 2015,2021 ----
  installcheck-host: maybe-installcheck-ld
  installcheck-host: maybe-installcheck-libbacktrace
  installcheck-host: maybe-installcheck-libcpp
+ installcheck-host: maybe-installcheck-libcody
  installcheck-host: maybe-installcheck-libdecnumber
  installcheck-host: maybe-installcheck-libgui
  installcheck-host: maybe-installcheck-libiberty
*************** installcheck-host: maybe-installcheck-gu
*** 2013,2018 ****
--- 2036,2042 ----
  installcheck-host: maybe-installcheck-tk
  installcheck-host: maybe-installcheck-libtermcap
  installcheck-host: maybe-installcheck-utils
+ installcheck-host: maybe-installcheck-c++tools
  installcheck-host: maybe-installcheck-gnattools
  installcheck-host: maybe-installcheck-lto-plugin
  installcheck-host: maybe-installcheck-libcc1
*************** mostlyclean-host: maybe-mostlyclean-itcl
*** 2082,2087 ****
--- 2106,2112 ----
  mostlyclean-host: maybe-mostlyclean-ld
  mostlyclean-host: maybe-mostlyclean-libbacktrace
  mostlyclean-host: maybe-mostlyclean-libcpp
+ mostlyclean-host: maybe-mostlyclean-libcody
  mostlyclean-host: maybe-mostlyclean-libdecnumber
  mostlyclean-host: maybe-mostlyclean-libgui
  mostlyclean-host: maybe-mostlyclean-libiberty
*************** mostlyclean-host: maybe-mostlyclean-guil
*** 2102,2107 ****
--- 2127,2133 ----
  mostlyclean-host: maybe-mostlyclean-tk
  mostlyclean-host: maybe-mostlyclean-libtermcap
  mostlyclean-host: maybe-mostlyclean-utils
+ mostlyclean-host: maybe-mostlyclean-c++tools
  mostlyclean-host: maybe-mostlyclean-gnattools
  mostlyclean-host: maybe-mostlyclean-lto-plugin
  mostlyclean-host: maybe-mostlyclean-libcc1
*************** clean-host: maybe-clean-itcl
*** 2171,2176 ****
--- 2197,2203 ----
  clean-host: maybe-clean-ld
  clean-host: maybe-clean-libbacktrace
  clean-host: maybe-clean-libcpp
+ clean-host: maybe-clean-libcody
  clean-host: maybe-clean-libdecnumber
  clean-host: maybe-clean-libgui
  clean-host: maybe-clean-libiberty
*************** clean-host: maybe-clean-guile
*** 2191,2196 ****
--- 2218,2224 ----
  clean-host: maybe-clean-tk
  clean-host: maybe-clean-libtermcap
  clean-host: maybe-clean-utils
+ clean-host: maybe-clean-c++tools
  clean-host: maybe-clean-gnattools
  clean-host: maybe-clean-lto-plugin
  clean-host: maybe-clean-libcc1
*************** distclean-host: maybe-distclean-itcl
*** 2260,2265 ****
--- 2288,2294 ----
  distclean-host: maybe-distclean-ld
  distclean-host: maybe-distclean-libbacktrace
  distclean-host: maybe-distclean-libcpp
+ distclean-host: maybe-distclean-libcody
  distclean-host: maybe-distclean-libdecnumber
  distclean-host: maybe-distclean-libgui
  distclean-host: maybe-distclean-libiberty
*************** distclean-host: maybe-distclean-guile
*** 2280,2285 ****
--- 2309,2315 ----
  distclean-host: maybe-distclean-tk
  distclean-host: maybe-distclean-libtermcap
  distclean-host: maybe-distclean-utils
+ distclean-host: maybe-distclean-c++tools
  distclean-host: maybe-distclean-gnattools
  distclean-host: maybe-distclean-lto-plugin
  distclean-host: maybe-distclean-libcc1
*************** maintainer-clean-host: maybe-maintainer-
*** 2349,2354 ****
--- 2379,2385 ----
  maintainer-clean-host: maybe-maintainer-clean-ld
  maintainer-clean-host: maybe-maintainer-clean-libbacktrace
  maintainer-clean-host: maybe-maintainer-clean-libcpp
+ maintainer-clean-host: maybe-maintainer-clean-libcody
  maintainer-clean-host: maybe-maintainer-clean-libdecnumber
  maintainer-clean-host: maybe-maintainer-clean-libgui
  maintainer-clean-host: maybe-maintainer-clean-libiberty
*************** maintainer-clean-host: maybe-maintainer-
*** 2369,2374 ****
--- 2400,2406 ----
  maintainer-clean-host: maybe-maintainer-clean-tk
  maintainer-clean-host: maybe-maintainer-clean-libtermcap
  maintainer-clean-host: maybe-maintainer-clean-utils
+ maintainer-clean-host: maybe-maintainer-clean-c++tools
  maintainer-clean-host: maybe-maintainer-clean-gnattools
  maintainer-clean-host: maybe-maintainer-clean-lto-plugin
  maintainer-clean-host: maybe-maintainer-clean-libcc1
*************** local-distclean:
*** 2446,2453 ****
  	-rm -f texinfo/doc/Makefile texinfo/po/POTFILES
  	-rmdir texinfo/doc texinfo/info texinfo/intl texinfo/lib 2>/dev/null
  	-rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null
! 	-rmdir fastjar gcc gnattools gotools libcc1 libiberty 2>/dev/null
! 	-rmdir texinfo zlib 2>/dev/null
  	-find . -name config.cache -exec rm -f {} \; \; 2>/dev/null
  
  local-maintainer-clean:
--- 2478,2485 ----
  	-rm -f texinfo/doc/Makefile texinfo/po/POTFILES
  	-rmdir texinfo/doc texinfo/info texinfo/intl texinfo/lib 2>/dev/null
  	-rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null
! 	-rmdir c++tools fastjar gcc gnattools gotools 2>/dev/null
! 	-rmdir libcc1 libiberty texinfo zlib 2>/dev/null
  	-find . -name config.cache -exec rm -f {} \; \; 2>/dev/null
  
  local-maintainer-clean:
*************** check-host:  \
*** 2494,2499 ****
--- 2526,2532 ----
      maybe-check-ld \
      maybe-check-libbacktrace \
      maybe-check-libcpp \
+     maybe-check-libcody \
      maybe-check-libdecnumber \
      maybe-check-libgui \
      maybe-check-libiberty \
*************** check-host:  \
*** 2514,2519 ****
--- 2547,2553 ----
      maybe-check-tk \
      maybe-check-libtermcap \
      maybe-check-utils \
+     maybe-check-c++tools \
      maybe-check-gnattools \
      maybe-check-lto-plugin \
      maybe-check-libcc1 \
*************** install-host-nogcc:  \
*** 2630,2635 ****
--- 2664,2670 ----
      maybe-install-ld \
      maybe-install-libbacktrace \
      maybe-install-libcpp \
+     maybe-install-libcody \
      maybe-install-libdecnumber \
      maybe-install-libgui \
      maybe-install-libiberty \
*************** install-host-nogcc:  \
*** 2650,2655 ****
--- 2685,2691 ----
      maybe-install-tk \
      maybe-install-libtermcap \
      maybe-install-utils \
+     maybe-install-c++tools \
      maybe-install-gnattools \
      maybe-install-lto-plugin \
      maybe-install-libcc1 \
*************** install-host:  \
*** 2683,2688 ****
--- 2719,2725 ----
      maybe-install-ld \
      maybe-install-libbacktrace \
      maybe-install-libcpp \
+     maybe-install-libcody \
      maybe-install-libdecnumber \
      maybe-install-libgui \
      maybe-install-libiberty \
*************** install-host:  \
*** 2703,2708 ****
--- 2740,2746 ----
      maybe-install-tk \
      maybe-install-libtermcap \
      maybe-install-utils \
+     maybe-install-c++tools \
      maybe-install-gnattools \
      maybe-install-lto-plugin \
      maybe-install-libcc1 \
*************** install-strip-host:  \
*** 2792,2797 ****
--- 2830,2836 ----
      maybe-install-strip-ld \
      maybe-install-strip-libbacktrace \
      maybe-install-strip-libcpp \
+     maybe-install-strip-libcody \
      maybe-install-strip-libdecnumber \
      maybe-install-strip-libgui \
      maybe-install-strip-libiberty \
*************** install-strip-host:  \
*** 2812,2817 ****
--- 2851,2857 ----
      maybe-install-strip-tk \
      maybe-install-strip-libtermcap \
      maybe-install-strip-utils \
+     maybe-install-strip-c++tools \
      maybe-install-strip-gnattools \
      maybe-install-strip-lto-plugin \
      maybe-install-strip-libcc1 \
*************** maintainer-clean-libcpp:
*** 25050,25055 ****
--- 25090,26104 ----
  
  
  
+ .PHONY: configure-libcody maybe-configure-libcody
+ maybe-configure-libcody:
+ @if gcc-bootstrap
+ configure-libcody: stage_current
+ @endif gcc-bootstrap
+ @if libcody
+ maybe-configure-libcody: configure-libcody
+ configure-libcody: 
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	test ! -f $(HOST_SUBDIR)/libcody/Makefile || exit 0; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody; \
+ 	$(HOST_EXPORTS)  \
+ 	echo Configuring in $(HOST_SUBDIR)/libcody; \
+ 	cd "$(HOST_SUBDIR)/libcody" || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libcody/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libcody; \
+ 	$(SHELL) \
+ 	  $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias}  \
+ 	  || exit 1
+ @endif libcody
+ 
+ 
+ 
+ .PHONY: configure-stage1-libcody maybe-configure-stage1-libcody
+ maybe-configure-stage1-libcody:
+ @if libcody-bootstrap
+ maybe-configure-stage1-libcody: configure-stage1-libcody
+ configure-stage1-libcody:
+ 	@[ $(current_stage) = stage1 ] || $(MAKE) stage1-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGE1_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libcody/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage 1 in $(HOST_SUBDIR)/libcody; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody; \
+ 	cd $(HOST_SUBDIR)/libcody || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libcody/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libcody; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	   \
+ 	  $(STAGE1_CONFIGURE_FLAGS)
+ @endif libcody-bootstrap
+ 
+ .PHONY: configure-stage2-libcody maybe-configure-stage2-libcody
+ maybe-configure-stage2-libcody:
+ @if libcody-bootstrap
+ maybe-configure-stage2-libcody: configure-stage2-libcody
+ configure-stage2-libcody:
+ 	@[ $(current_stage) = stage2 ] || $(MAKE) stage2-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGE2_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libcody/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS) \
+ 	CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage 2 in $(HOST_SUBDIR)/libcody; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody; \
+ 	cd $(HOST_SUBDIR)/libcody || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libcody/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libcody; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE2_CONFIGURE_FLAGS)
+ @endif libcody-bootstrap
+ 
+ .PHONY: configure-stage3-libcody maybe-configure-stage3-libcody
+ maybe-configure-stage3-libcody:
+ @if libcody-bootstrap
+ maybe-configure-stage3-libcody: configure-stage3-libcody
+ configure-stage3-libcody:
+ 	@[ $(current_stage) = stage3 ] || $(MAKE) stage3-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGE3_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libcody/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS) \
+ 	CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage 3 in $(HOST_SUBDIR)/libcody; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody; \
+ 	cd $(HOST_SUBDIR)/libcody || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libcody/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libcody; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE3_CONFIGURE_FLAGS)
+ @endif libcody-bootstrap
+ 
+ .PHONY: configure-stage4-libcody maybe-configure-stage4-libcody
+ maybe-configure-stage4-libcody:
+ @if libcody-bootstrap
+ maybe-configure-stage4-libcody: configure-stage4-libcody
+ configure-stage4-libcody:
+ 	@[ $(current_stage) = stage4 ] || $(MAKE) stage4-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGE4_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libcody/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS) \
+ 	CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage 4 in $(HOST_SUBDIR)/libcody; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody; \
+ 	cd $(HOST_SUBDIR)/libcody || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libcody/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libcody; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE4_CONFIGURE_FLAGS)
+ @endif libcody-bootstrap
+ 
+ .PHONY: configure-stageprofile-libcody maybe-configure-stageprofile-libcody
+ maybe-configure-stageprofile-libcody:
+ @if libcody-bootstrap
+ maybe-configure-stageprofile-libcody: configure-stageprofile-libcody
+ configure-stageprofile-libcody:
+ 	@[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEprofile_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libcody/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS) \
+ 	CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage profile in $(HOST_SUBDIR)/libcody; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody; \
+ 	cd $(HOST_SUBDIR)/libcody || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libcody/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libcody; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEprofile_CONFIGURE_FLAGS)
+ @endif libcody-bootstrap
+ 
+ .PHONY: configure-stagetrain-libcody maybe-configure-stagetrain-libcody
+ maybe-configure-stagetrain-libcody:
+ @if libcody-bootstrap
+ maybe-configure-stagetrain-libcody: configure-stagetrain-libcody
+ configure-stagetrain-libcody:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libcody/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS) \
+ 	CFLAGS="$(STAGEtrain_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGEtrain_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(STAGEtrain_CFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage train in $(HOST_SUBDIR)/libcody; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody; \
+ 	cd $(HOST_SUBDIR)/libcody || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libcody/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libcody; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEtrain_CONFIGURE_FLAGS)
+ @endif libcody-bootstrap
+ 
+ .PHONY: configure-stagefeedback-libcody maybe-configure-stagefeedback-libcody
+ maybe-configure-stagefeedback-libcody:
+ @if libcody-bootstrap
+ maybe-configure-stagefeedback-libcody: configure-stagefeedback-libcody
+ configure-stagefeedback-libcody:
+ 	@[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEfeedback_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libcody/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS) \
+ 	CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage feedback in $(HOST_SUBDIR)/libcody; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody; \
+ 	cd $(HOST_SUBDIR)/libcody || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libcody/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libcody; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEfeedback_CONFIGURE_FLAGS)
+ @endif libcody-bootstrap
+ 
+ .PHONY: configure-stageautoprofile-libcody maybe-configure-stageautoprofile-libcody
+ maybe-configure-stageautoprofile-libcody:
+ @if libcody-bootstrap
+ maybe-configure-stageautoprofile-libcody: configure-stageautoprofile-libcody
+ configure-stageautoprofile-libcody:
+ 	@[ $(current_stage) = stageautoprofile ] || $(MAKE) stageautoprofile-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEautoprofile_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libcody/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS) \
+ 	CFLAGS="$(STAGEautoprofile_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGEautoprofile_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(STAGEautoprofile_CFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage autoprofile in $(HOST_SUBDIR)/libcody; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody; \
+ 	cd $(HOST_SUBDIR)/libcody || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libcody/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libcody; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEautoprofile_CONFIGURE_FLAGS)
+ @endif libcody-bootstrap
+ 
+ .PHONY: configure-stageautofeedback-libcody maybe-configure-stageautofeedback-libcody
+ maybe-configure-stageautofeedback-libcody:
+ @if libcody-bootstrap
+ maybe-configure-stageautofeedback-libcody: configure-stageautofeedback-libcody
+ configure-stageautofeedback-libcody:
+ 	@[ $(current_stage) = stageautofeedback ] || $(MAKE) stageautofeedback-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEautofeedback_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libcody/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS) \
+ 	CFLAGS="$(STAGEautofeedback_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGEautofeedback_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(STAGEautofeedback_CFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage autofeedback in $(HOST_SUBDIR)/libcody; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcody; \
+ 	cd $(HOST_SUBDIR)/libcody || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libcody/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libcody; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEautofeedback_CONFIGURE_FLAGS)
+ @endif libcody-bootstrap
+ 
+ 
+ 
+ 
+ 
+ .PHONY: all-libcody maybe-all-libcody
+ maybe-all-libcody:
+ @if gcc-bootstrap
+ all-libcody: stage_current
+ @endif gcc-bootstrap
+ @if libcody
+ TARGET-libcody=all
+ maybe-all-libcody: all-libcody
+ all-libcody: configure-libcody
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS)  \
+ 	(cd $(HOST_SUBDIR)/libcody && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS)  \
+ 		$(TARGET-libcody))
+ @endif libcody
+ 
+ 
+ 
+ .PHONY: all-stage1-libcody maybe-all-stage1-libcody
+ .PHONY: clean-stage1-libcody maybe-clean-stage1-libcody
+ maybe-all-stage1-libcody:
+ maybe-clean-stage1-libcody:
+ @if libcody-bootstrap
+ maybe-all-stage1-libcody: all-stage1-libcody
+ all-stage1: all-stage1-libcody
+ TARGET-stage1-libcody = $(TARGET-libcody)
+ all-stage1-libcody: configure-stage1-libcody
+ 	@[ $(current_stage) = stage1 ] || $(MAKE) stage1-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGE1_TFLAGS)"; \
+ 	$(HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGE1_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGE1_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGE1_CXXFLAGS)" \
+ 		LIBCFLAGS="$(LIBCFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS)  \
+ 		$(STAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGE1_TFLAGS)"  \
+ 		$(TARGET-stage1-libcody)
+ 
+ maybe-clean-stage1-libcody: clean-stage1-libcody
+ clean-stage1: clean-stage1-libcody
+ clean-stage1-libcody:
+ 	@if [ $(current_stage) = stage1 ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libcody/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stage1-libcody/Makefile ] || exit 0; \
+ 	  $(MAKE) stage1-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS)  \
+ 	$(STAGE1_FLAGS_TO_PASS)  clean
+ @endif libcody-bootstrap
+ 
+ 
+ .PHONY: all-stage2-libcody maybe-all-stage2-libcody
+ .PHONY: clean-stage2-libcody maybe-clean-stage2-libcody
+ maybe-all-stage2-libcody:
+ maybe-clean-stage2-libcody:
+ @if libcody-bootstrap
+ maybe-all-stage2-libcody: all-stage2-libcody
+ all-stage2: all-stage2-libcody
+ TARGET-stage2-libcody = $(TARGET-libcody)
+ all-stage2-libcody: configure-stage2-libcody
+ 	@[ $(current_stage) = stage2 ] || $(MAKE) stage2-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGE2_TFLAGS)"; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGE2_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGE2_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGE2_CXXFLAGS)" \
+ 		LIBCFLAGS="$(STAGE2_CFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGE2_TFLAGS)"  \
+ 		$(TARGET-stage2-libcody)
+ 
+ maybe-clean-stage2-libcody: clean-stage2-libcody
+ clean-stage2: clean-stage2-libcody
+ clean-stage2-libcody:
+ 	@if [ $(current_stage) = stage2 ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libcody/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stage2-libcody/Makefile ] || exit 0; \
+ 	  $(MAKE) stage2-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libcody-bootstrap
+ 
+ 
+ .PHONY: all-stage3-libcody maybe-all-stage3-libcody
+ .PHONY: clean-stage3-libcody maybe-clean-stage3-libcody
+ maybe-all-stage3-libcody:
+ maybe-clean-stage3-libcody:
+ @if libcody-bootstrap
+ maybe-all-stage3-libcody: all-stage3-libcody
+ all-stage3: all-stage3-libcody
+ TARGET-stage3-libcody = $(TARGET-libcody)
+ all-stage3-libcody: configure-stage3-libcody
+ 	@[ $(current_stage) = stage3 ] || $(MAKE) stage3-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGE3_TFLAGS)"; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGE3_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGE3_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGE3_CXXFLAGS)" \
+ 		LIBCFLAGS="$(STAGE3_CFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGE3_TFLAGS)"  \
+ 		$(TARGET-stage3-libcody)
+ 
+ maybe-clean-stage3-libcody: clean-stage3-libcody
+ clean-stage3: clean-stage3-libcody
+ clean-stage3-libcody:
+ 	@if [ $(current_stage) = stage3 ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libcody/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stage3-libcody/Makefile ] || exit 0; \
+ 	  $(MAKE) stage3-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libcody-bootstrap
+ 
+ 
+ .PHONY: all-stage4-libcody maybe-all-stage4-libcody
+ .PHONY: clean-stage4-libcody maybe-clean-stage4-libcody
+ maybe-all-stage4-libcody:
+ maybe-clean-stage4-libcody:
+ @if libcody-bootstrap
+ maybe-all-stage4-libcody: all-stage4-libcody
+ all-stage4: all-stage4-libcody
+ TARGET-stage4-libcody = $(TARGET-libcody)
+ all-stage4-libcody: configure-stage4-libcody
+ 	@[ $(current_stage) = stage4 ] || $(MAKE) stage4-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGE4_TFLAGS)"; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGE4_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGE4_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGE4_CXXFLAGS)" \
+ 		LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGE4_TFLAGS)"  \
+ 		$(TARGET-stage4-libcody)
+ 
+ maybe-clean-stage4-libcody: clean-stage4-libcody
+ clean-stage4: clean-stage4-libcody
+ clean-stage4-libcody:
+ 	@if [ $(current_stage) = stage4 ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libcody/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stage4-libcody/Makefile ] || exit 0; \
+ 	  $(MAKE) stage4-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libcody-bootstrap
+ 
+ 
+ .PHONY: all-stageprofile-libcody maybe-all-stageprofile-libcody
+ .PHONY: clean-stageprofile-libcody maybe-clean-stageprofile-libcody
+ maybe-all-stageprofile-libcody:
+ maybe-clean-stageprofile-libcody:
+ @if libcody-bootstrap
+ maybe-all-stageprofile-libcody: all-stageprofile-libcody
+ all-stageprofile: all-stageprofile-libcody
+ TARGET-stageprofile-libcody = $(TARGET-libcody)
+ all-stageprofile-libcody: configure-stageprofile-libcody
+ 	@[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEprofile_TFLAGS)"; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEprofile_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGEprofile_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \
+ 		LIBCFLAGS="$(STAGEprofile_CFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGEprofile_TFLAGS)"  \
+ 		$(TARGET-stageprofile-libcody)
+ 
+ maybe-clean-stageprofile-libcody: clean-stageprofile-libcody
+ clean-stageprofile: clean-stageprofile-libcody
+ clean-stageprofile-libcody:
+ 	@if [ $(current_stage) = stageprofile ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libcody/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stageprofile-libcody/Makefile ] || exit 0; \
+ 	  $(MAKE) stageprofile-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libcody-bootstrap
+ 
+ 
+ .PHONY: all-stagetrain-libcody maybe-all-stagetrain-libcody
+ .PHONY: clean-stagetrain-libcody maybe-clean-stagetrain-libcody
+ maybe-all-stagetrain-libcody:
+ maybe-clean-stagetrain-libcody:
+ @if libcody-bootstrap
+ maybe-all-stagetrain-libcody: all-stagetrain-libcody
+ all-stagetrain: all-stagetrain-libcody
+ TARGET-stagetrain-libcody = $(TARGET-libcody)
+ all-stagetrain-libcody: configure-stagetrain-libcody
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGEtrain_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGEtrain_CXXFLAGS)" \
+ 		LIBCFLAGS="$(STAGEtrain_CFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGEtrain_TFLAGS)"  \
+ 		$(TARGET-stagetrain-libcody)
+ 
+ maybe-clean-stagetrain-libcody: clean-stagetrain-libcody
+ clean-stagetrain: clean-stagetrain-libcody
+ clean-stagetrain-libcody:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libcody/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-libcody/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libcody-bootstrap
+ 
+ 
+ .PHONY: all-stagefeedback-libcody maybe-all-stagefeedback-libcody
+ .PHONY: clean-stagefeedback-libcody maybe-clean-stagefeedback-libcody
+ maybe-all-stagefeedback-libcody:
+ maybe-clean-stagefeedback-libcody:
+ @if libcody-bootstrap
+ maybe-all-stagefeedback-libcody: all-stagefeedback-libcody
+ all-stagefeedback: all-stagefeedback-libcody
+ TARGET-stagefeedback-libcody = $(TARGET-libcody)
+ all-stagefeedback-libcody: configure-stagefeedback-libcody
+ 	@[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEfeedback_TFLAGS)"; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEfeedback_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGEfeedback_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \
+ 		LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGEfeedback_TFLAGS)"  \
+ 		$(TARGET-stagefeedback-libcody)
+ 
+ maybe-clean-stagefeedback-libcody: clean-stagefeedback-libcody
+ clean-stagefeedback: clean-stagefeedback-libcody
+ clean-stagefeedback-libcody:
+ 	@if [ $(current_stage) = stagefeedback ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libcody/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagefeedback-libcody/Makefile ] || exit 0; \
+ 	  $(MAKE) stagefeedback-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libcody-bootstrap
+ 
+ 
+ .PHONY: all-stageautoprofile-libcody maybe-all-stageautoprofile-libcody
+ .PHONY: clean-stageautoprofile-libcody maybe-clean-stageautoprofile-libcody
+ maybe-all-stageautoprofile-libcody:
+ maybe-clean-stageautoprofile-libcody:
+ @if libcody-bootstrap
+ maybe-all-stageautoprofile-libcody: all-stageautoprofile-libcody
+ all-stageautoprofile: all-stageautoprofile-libcody
+ TARGET-stageautoprofile-libcody = $(TARGET-libcody)
+ all-stageautoprofile-libcody: configure-stageautoprofile-libcody
+ 	@[ $(current_stage) = stageautoprofile ] || $(MAKE) stageautoprofile-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEautoprofile_TFLAGS)"; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	$$s/gcc/config/i386/$(AUTO_PROFILE) \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEautoprofile_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGEautoprofile_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGEautoprofile_CXXFLAGS)" \
+ 		LIBCFLAGS="$(STAGEautoprofile_CFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGEautoprofile_TFLAGS)"  \
+ 		$(TARGET-stageautoprofile-libcody)
+ 
+ maybe-clean-stageautoprofile-libcody: clean-stageautoprofile-libcody
+ clean-stageautoprofile: clean-stageautoprofile-libcody
+ clean-stageautoprofile-libcody:
+ 	@if [ $(current_stage) = stageautoprofile ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libcody/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stageautoprofile-libcody/Makefile ] || exit 0; \
+ 	  $(MAKE) stageautoprofile-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libcody-bootstrap
+ 
+ 
+ .PHONY: all-stageautofeedback-libcody maybe-all-stageautofeedback-libcody
+ .PHONY: clean-stageautofeedback-libcody maybe-clean-stageautofeedback-libcody
+ maybe-all-stageautofeedback-libcody:
+ maybe-clean-stageautofeedback-libcody:
+ @if libcody-bootstrap
+ maybe-all-stageautofeedback-libcody: all-stageautofeedback-libcody
+ all-stageautofeedback: all-stageautofeedback-libcody
+ TARGET-stageautofeedback-libcody = $(TARGET-libcody)
+ all-stageautofeedback-libcody: configure-stageautofeedback-libcody
+ 	@[ $(current_stage) = stageautofeedback ] || $(MAKE) stageautofeedback-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEautofeedback_TFLAGS)"; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEautofeedback_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGEautofeedback_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGEautofeedback_CXXFLAGS)" \
+ 		LIBCFLAGS="$(STAGEautofeedback_CFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGEautofeedback_TFLAGS)" PERF_DATA=perf.data \
+ 		$(TARGET-stageautofeedback-libcody)
+ 
+ maybe-clean-stageautofeedback-libcody: clean-stageautofeedback-libcody
+ clean-stageautofeedback: clean-stageautofeedback-libcody
+ clean-stageautofeedback-libcody:
+ 	@if [ $(current_stage) = stageautofeedback ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libcody/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stageautofeedback-libcody/Makefile ] || exit 0; \
+ 	  $(MAKE) stageautofeedback-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libcody && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libcody-bootstrap
+ 
+ 
+ 
+ 
+ 
+ .PHONY: check-libcody maybe-check-libcody
+ maybe-check-libcody:
+ @if libcody
+ maybe-check-libcody: check-libcody
+ 
+ check-libcody:
+ 	@: $(MAKE); $(unstage)
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \
+ 	(cd $(HOST_SUBDIR)/libcody && \
+ 	  $(MAKE) $(FLAGS_TO_PASS)  $(EXTRA_BOOTSTRAP_FLAGS) check)
+ 
+ @endif libcody
+ 
+ .PHONY: install-libcody maybe-install-libcody
+ maybe-install-libcody:
+ @if libcody
+ maybe-install-libcody: install-libcody
+ 
+ install-libcody:
+ 
+ @endif libcody
+ 
+ .PHONY: install-strip-libcody maybe-install-strip-libcody
+ maybe-install-strip-libcody:
+ @if libcody
+ maybe-install-strip-libcody: install-strip-libcody
+ 
+ install-strip-libcody:
+ 
+ @endif libcody
+ 
+ # Other targets (info, dvi, pdf, etc.)
+ 
+ .PHONY: maybe-info-libcody info-libcody
+ maybe-info-libcody:
+ @if libcody
+ maybe-info-libcody: info-libcody
+ 
+ # libcody doesn't support info.
+ info-libcody:
+ 
+ @endif libcody
+ 
+ .PHONY: maybe-dvi-libcody dvi-libcody
+ maybe-dvi-libcody:
+ @if libcody
+ maybe-dvi-libcody: dvi-libcody
+ 
+ dvi-libcody: \
+     configure-libcody 
+ 	@[ -f ./libcody/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing dvi in libcody"; \
+ 	(cd $(HOST_SUBDIR)/libcody && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          dvi) \
+ 	  || exit 1
+ 
+ @endif libcody
+ 
+ .PHONY: maybe-pdf-libcody pdf-libcody
+ maybe-pdf-libcody:
+ @if libcody
+ maybe-pdf-libcody: pdf-libcody
+ 
+ # libcody doesn't support pdf.
+ pdf-libcody:
+ 
+ @endif libcody
+ 
+ .PHONY: maybe-html-libcody html-libcody
+ maybe-html-libcody:
+ @if libcody
+ maybe-html-libcody: html-libcody
+ 
+ # libcody doesn't support html.
+ html-libcody:
+ 
+ @endif libcody
+ 
+ .PHONY: maybe-TAGS-libcody TAGS-libcody
+ maybe-TAGS-libcody:
+ @if libcody
+ maybe-TAGS-libcody: TAGS-libcody
+ 
+ TAGS-libcody: \
+     configure-libcody 
+ 	@[ -f ./libcody/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing TAGS in libcody"; \
+ 	(cd $(HOST_SUBDIR)/libcody && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          TAGS) \
+ 	  || exit 1
+ 
+ @endif libcody
+ 
+ .PHONY: maybe-install-info-libcody install-info-libcody
+ maybe-install-info-libcody:
+ @if libcody
+ maybe-install-info-libcody: install-info-libcody
+ 
+ # libcody doesn't support install-info.
+ install-info-libcody:
+ 
+ @endif libcody
+ 
+ .PHONY: maybe-install-pdf-libcody install-pdf-libcody
+ maybe-install-pdf-libcody:
+ @if libcody
+ maybe-install-pdf-libcody: install-pdf-libcody
+ 
+ # libcody doesn't support install-pdf.
+ install-pdf-libcody:
+ 
+ @endif libcody
+ 
+ .PHONY: maybe-install-html-libcody install-html-libcody
+ maybe-install-html-libcody:
+ @if libcody
+ maybe-install-html-libcody: install-html-libcody
+ 
+ # libcody doesn't support install-html.
+ install-html-libcody:
+ 
+ @endif libcody
+ 
+ .PHONY: maybe-installcheck-libcody installcheck-libcody
+ maybe-installcheck-libcody:
+ @if libcody
+ maybe-installcheck-libcody: installcheck-libcody
+ 
+ installcheck-libcody: \
+     configure-libcody 
+ 	@[ -f ./libcody/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing installcheck in libcody"; \
+ 	(cd $(HOST_SUBDIR)/libcody && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          installcheck) \
+ 	  || exit 1
+ 
+ @endif libcody
+ 
+ .PHONY: maybe-mostlyclean-libcody mostlyclean-libcody
+ maybe-mostlyclean-libcody:
+ @if libcody
+ maybe-mostlyclean-libcody: mostlyclean-libcody
+ 
+ mostlyclean-libcody: 
+ 	@[ -f ./libcody/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing mostlyclean in libcody"; \
+ 	(cd $(HOST_SUBDIR)/libcody && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          mostlyclean) \
+ 	  || exit 1
+ 
+ @endif libcody
+ 
+ .PHONY: maybe-clean-libcody clean-libcody
+ maybe-clean-libcody:
+ @if libcody
+ maybe-clean-libcody: clean-libcody
+ 
+ clean-libcody: 
+ 	@[ -f ./libcody/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing clean in libcody"; \
+ 	(cd $(HOST_SUBDIR)/libcody && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          clean) \
+ 	  || exit 1
+ 
+ @endif libcody
+ 
+ .PHONY: maybe-distclean-libcody distclean-libcody
+ maybe-distclean-libcody:
+ @if libcody
+ maybe-distclean-libcody: distclean-libcody
+ 
+ distclean-libcody: 
+ 	@[ -f ./libcody/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing distclean in libcody"; \
+ 	(cd $(HOST_SUBDIR)/libcody && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          distclean) \
+ 	  || exit 1
+ 
+ @endif libcody
+ 
+ .PHONY: maybe-maintainer-clean-libcody maintainer-clean-libcody
+ maybe-maintainer-clean-libcody:
+ @if libcody
+ maybe-maintainer-clean-libcody: maintainer-clean-libcody
+ 
+ maintainer-clean-libcody: 
+ 	@[ -f ./libcody/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing maintainer-clean in libcody"; \
+ 	(cd $(HOST_SUBDIR)/libcody && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          maintainer-clean) \
+ 	  || exit 1
+ 
+ @endif libcody
+ 
+ 
+ 
  .PHONY: configure-libdecnumber maybe-configure-libdecnumber
  maybe-configure-libdecnumber:
  @if gcc-bootstrap
*************** maintainer-clean-utils:
*** 37064,37069 ****
--- 38113,38559 ----
  
  
  
+ .PHONY: configure-c++tools maybe-configure-c++tools
+ maybe-configure-c++tools:
+ @if gcc-bootstrap
+ configure-c++tools: stage_current
+ @endif gcc-bootstrap
+ @if c++tools
+ maybe-configure-c++tools: configure-c++tools
+ configure-c++tools: 
+ 	@: $(MAKE); $(unstage)
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	test ! -f $(HOST_SUBDIR)/c++tools/Makefile || exit 0; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/c++tools; \
+ 	$(HOST_EXPORTS)  \
+ 	echo Configuring in $(HOST_SUBDIR)/c++tools; \
+ 	cd "$(HOST_SUBDIR)/c++tools" || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/c++tools/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=c++tools; \
+ 	$(SHELL) \
+ 	  $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias}  \
+ 	  || exit 1
+ @endif c++tools
+ 
+ 
+ 
+ 
+ 
+ .PHONY: all-c++tools maybe-all-c++tools
+ maybe-all-c++tools:
+ @if gcc-bootstrap
+ all-c++tools: stage_current
+ @endif gcc-bootstrap
+ @if c++tools
+ TARGET-c++tools=all
+ maybe-all-c++tools: all-c++tools
+ all-c++tools: configure-c++tools
+ 	@: $(MAKE); $(unstage)
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS)  \
+ 	(cd $(HOST_SUBDIR)/c++tools && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS)  \
+ 		$(TARGET-c++tools))
+ @endif c++tools
+ 
+ 
+ 
+ 
+ .PHONY: check-c++tools maybe-check-c++tools
+ maybe-check-c++tools:
+ @if c++tools
+ maybe-check-c++tools: check-c++tools
+ 
+ check-c++tools:
+ 	@: $(MAKE); $(unstage)
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS)  \
+ 	(cd $(HOST_SUBDIR)/c++tools && \
+ 	  $(MAKE) $(FLAGS_TO_PASS)  check)
+ 
+ @endif c++tools
+ 
+ .PHONY: install-c++tools maybe-install-c++tools
+ maybe-install-c++tools:
+ @if c++tools
+ maybe-install-c++tools: install-c++tools
+ 
+ install-c++tools: installdirs
+ 	@: $(MAKE); $(unstage)
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	(cd $(HOST_SUBDIR)/c++tools && \
+ 	  $(MAKE) $(FLAGS_TO_PASS)  install)
+ 
+ @endif c++tools
+ 
+ .PHONY: install-strip-c++tools maybe-install-strip-c++tools
+ maybe-install-strip-c++tools:
+ @if c++tools
+ maybe-install-strip-c++tools: install-strip-c++tools
+ 
+ install-strip-c++tools: installdirs
+ 	@: $(MAKE); $(unstage)
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	(cd $(HOST_SUBDIR)/c++tools && \
+ 	  $(MAKE) $(FLAGS_TO_PASS)  install-strip)
+ 
+ @endif c++tools
+ 
+ # Other targets (info, dvi, pdf, etc.)
+ 
+ .PHONY: maybe-info-c++tools info-c++tools
+ maybe-info-c++tools:
+ @if c++tools
+ maybe-info-c++tools: info-c++tools
+ 
+ info-c++tools: \
+     configure-c++tools 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f ./c++tools/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing info in c++tools"; \
+ 	(cd $(HOST_SUBDIR)/c++tools && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          info) \
+ 	  || exit 1
+ 
+ @endif c++tools
+ 
+ .PHONY: maybe-dvi-c++tools dvi-c++tools
+ maybe-dvi-c++tools:
+ @if c++tools
+ maybe-dvi-c++tools: dvi-c++tools
+ 
+ dvi-c++tools: \
+     configure-c++tools 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f ./c++tools/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing dvi in c++tools"; \
+ 	(cd $(HOST_SUBDIR)/c++tools && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          dvi) \
+ 	  || exit 1
+ 
+ @endif c++tools
+ 
+ .PHONY: maybe-pdf-c++tools pdf-c++tools
+ maybe-pdf-c++tools:
+ @if c++tools
+ maybe-pdf-c++tools: pdf-c++tools
+ 
+ pdf-c++tools: \
+     configure-c++tools 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f ./c++tools/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing pdf in c++tools"; \
+ 	(cd $(HOST_SUBDIR)/c++tools && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          pdf) \
+ 	  || exit 1
+ 
+ @endif c++tools
+ 
+ .PHONY: maybe-html-c++tools html-c++tools
+ maybe-html-c++tools:
+ @if c++tools
+ maybe-html-c++tools: html-c++tools
+ 
+ html-c++tools: \
+     configure-c++tools 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f ./c++tools/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing html in c++tools"; \
+ 	(cd $(HOST_SUBDIR)/c++tools && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          html) \
+ 	  || exit 1
+ 
+ @endif c++tools
+ 
+ .PHONY: maybe-TAGS-c++tools TAGS-c++tools
+ maybe-TAGS-c++tools:
+ @if c++tools
+ maybe-TAGS-c++tools: TAGS-c++tools
+ 
+ TAGS-c++tools: \
+     configure-c++tools 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f ./c++tools/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing TAGS in c++tools"; \
+ 	(cd $(HOST_SUBDIR)/c++tools && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          TAGS) \
+ 	  || exit 1
+ 
+ @endif c++tools
+ 
+ .PHONY: maybe-install-info-c++tools install-info-c++tools
+ maybe-install-info-c++tools:
+ @if c++tools
+ maybe-install-info-c++tools: install-info-c++tools
+ 
+ install-info-c++tools: \
+     configure-c++tools \
+     info-c++tools 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f ./c++tools/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing install-info in c++tools"; \
+ 	(cd $(HOST_SUBDIR)/c++tools && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          install-info) \
+ 	  || exit 1
+ 
+ @endif c++tools
+ 
+ .PHONY: maybe-install-pdf-c++tools install-pdf-c++tools
+ maybe-install-pdf-c++tools:
+ @if c++tools
+ maybe-install-pdf-c++tools: install-pdf-c++tools
+ 
+ install-pdf-c++tools: \
+     configure-c++tools \
+     pdf-c++tools 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f ./c++tools/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing install-pdf in c++tools"; \
+ 	(cd $(HOST_SUBDIR)/c++tools && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          install-pdf) \
+ 	  || exit 1
+ 
+ @endif c++tools
+ 
+ .PHONY: maybe-install-html-c++tools install-html-c++tools
+ maybe-install-html-c++tools:
+ @if c++tools
+ maybe-install-html-c++tools: install-html-c++tools
+ 
+ install-html-c++tools: \
+     configure-c++tools \
+     html-c++tools 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f ./c++tools/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing install-html in c++tools"; \
+ 	(cd $(HOST_SUBDIR)/c++tools && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          install-html) \
+ 	  || exit 1
+ 
+ @endif c++tools
+ 
+ .PHONY: maybe-installcheck-c++tools installcheck-c++tools
+ maybe-installcheck-c++tools:
+ @if c++tools
+ maybe-installcheck-c++tools: installcheck-c++tools
+ 
+ installcheck-c++tools: \
+     configure-c++tools 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f ./c++tools/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing installcheck in c++tools"; \
+ 	(cd $(HOST_SUBDIR)/c++tools && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          installcheck) \
+ 	  || exit 1
+ 
+ @endif c++tools
+ 
+ .PHONY: maybe-mostlyclean-c++tools mostlyclean-c++tools
+ maybe-mostlyclean-c++tools:
+ @if c++tools
+ maybe-mostlyclean-c++tools: mostlyclean-c++tools
+ 
+ mostlyclean-c++tools: 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f ./c++tools/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing mostlyclean in c++tools"; \
+ 	(cd $(HOST_SUBDIR)/c++tools && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          mostlyclean) \
+ 	  || exit 1
+ 
+ @endif c++tools
+ 
+ .PHONY: maybe-clean-c++tools clean-c++tools
+ maybe-clean-c++tools:
+ @if c++tools
+ maybe-clean-c++tools: clean-c++tools
+ 
+ clean-c++tools: 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f ./c++tools/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing clean in c++tools"; \
+ 	(cd $(HOST_SUBDIR)/c++tools && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          clean) \
+ 	  || exit 1
+ 
+ @endif c++tools
+ 
+ .PHONY: maybe-distclean-c++tools distclean-c++tools
+ maybe-distclean-c++tools:
+ @if c++tools
+ maybe-distclean-c++tools: distclean-c++tools
+ 
+ distclean-c++tools: 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f ./c++tools/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing distclean in c++tools"; \
+ 	(cd $(HOST_SUBDIR)/c++tools && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          distclean) \
+ 	  || exit 1
+ 
+ @endif c++tools
+ 
+ .PHONY: maybe-maintainer-clean-c++tools maintainer-clean-c++tools
+ maybe-maintainer-clean-c++tools:
+ @if c++tools
+ maybe-maintainer-clean-c++tools: maintainer-clean-c++tools
+ 
+ maintainer-clean-c++tools: 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f ./c++tools/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing maintainer-clean in c++tools"; \
+ 	(cd $(HOST_SUBDIR)/c++tools && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          maintainer-clean) \
+ 	  || exit 1
+ 
+ @endif c++tools
+ 
+ 
+ 
  .PHONY: configure-gnattools maybe-configure-gnattools
  maybe-configure-gnattools:
  @if gcc-bootstrap
*************** maybe-check-libctf:
*** 40257,40262 ****
--- 41747,41758 ----
  maybe-check-libctf: check-libctf
  
  check-libctf:
+ 	@: $(MAKE); $(unstage)
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \
+ 	(cd $(HOST_SUBDIR)/libctf && \
+ 	  $(MAKE) $(FLAGS_TO_PASS)  $(EXTRA_BOOTSTRAP_FLAGS) check)
  
  @endif libctf
  
*************** maybe-install-libctf:
*** 40265,40271 ****
  @if libctf
  maybe-install-libctf: install-libctf
  
! install-libctf:
  
  @endif libctf
  
--- 41761,41773 ----
  @if libctf
  maybe-install-libctf: install-libctf
  
! install-libctf: installdirs
! 	@: $(MAKE); $(unstage)
! 	@r=`${PWD_COMMAND}`; export r; \
! 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
! 	$(HOST_EXPORTS) \
! 	(cd $(HOST_SUBDIR)/libctf && \
! 	  $(MAKE) $(FLAGS_TO_PASS)  install)
  
  @endif libctf
  
*************** maybe-install-strip-libctf:
*** 40274,40280 ****
  @if libctf
  maybe-install-strip-libctf: install-strip-libctf
  
! install-strip-libctf:
  
  @endif libctf
  
--- 41776,41788 ----
  @if libctf
  maybe-install-strip-libctf: install-strip-libctf
  
! install-strip-libctf: installdirs
! 	@: $(MAKE); $(unstage)
! 	@r=`${PWD_COMMAND}`; export r; \
! 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
! 	$(HOST_EXPORTS) \
! 	(cd $(HOST_SUBDIR)/libctf && \
! 	  $(MAKE) $(FLAGS_TO_PASS)  install-strip)
  
  @endif libctf
  
*************** stage1-start::
*** 55705,55710 ****
--- 57213,57223 ----
  	  mkdir stage1-libcpp; \
  	mv stage1-libcpp libcpp
  @endif libcpp
+ @if libcody
+ 	@cd $(HOST_SUBDIR); [ -d stage1-libcody ] || \
+ 	  mkdir stage1-libcody; \
+ 	mv stage1-libcody libcody
+ @endif libcody
  @if libdecnumber
  	@cd $(HOST_SUBDIR); [ -d stage1-libdecnumber ] || \
  	  mkdir stage1-libdecnumber; \
*************** stage1-end::
*** 55825,55830 ****
--- 57338,57348 ----
  	  cd $(HOST_SUBDIR); mv libcpp stage1-libcpp; \
  	fi
  @endif libcpp
+ @if libcody
+ 	@if test -d $(HOST_SUBDIR)/libcody; then \
+ 	  cd $(HOST_SUBDIR); mv libcody stage1-libcody; \
+ 	fi
+ @endif libcody
  @if libdecnumber
  	@if test -d $(HOST_SUBDIR)/libdecnumber; then \
  	  cd $(HOST_SUBDIR); mv libdecnumber stage1-libdecnumber; \
*************** stage2-start::
*** 56004,56009 ****
--- 57522,57533 ----
  	mv stage2-libcpp libcpp; \
  	mv stage1-libcpp prev-libcpp || test -f stage1-lean 
  @endif libcpp
+ @if libcody
+ 	@cd $(HOST_SUBDIR); [ -d stage2-libcody ] || \
+ 	  mkdir stage2-libcody; \
+ 	mv stage2-libcody libcody; \
+ 	mv stage1-libcody prev-libcody || test -f stage1-lean 
+ @endif libcody
  @if libdecnumber
  	@cd $(HOST_SUBDIR); [ -d stage2-libdecnumber ] || \
  	  mkdir stage2-libdecnumber; \
*************** stage2-end::
*** 56148,56153 ****
--- 57672,57683 ----
  	  mv prev-libcpp stage1-libcpp; : ; \
  	fi
  @endif libcpp
+ @if libcody
+ 	@if test -d $(HOST_SUBDIR)/libcody; then \
+ 	  cd $(HOST_SUBDIR); mv libcody stage2-libcody; \
+ 	  mv prev-libcody stage1-libcody; : ; \
+ 	fi
+ @endif libcody
  @if libdecnumber
  	@if test -d $(HOST_SUBDIR)/libdecnumber; then \
  	  cd $(HOST_SUBDIR); mv libdecnumber stage2-libdecnumber; \
*************** stage3-start::
*** 56358,56363 ****
--- 57888,57899 ----
  	mv stage3-libcpp libcpp; \
  	mv stage2-libcpp prev-libcpp || test -f stage2-lean 
  @endif libcpp
+ @if libcody
+ 	@cd $(HOST_SUBDIR); [ -d stage3-libcody ] || \
+ 	  mkdir stage3-libcody; \
+ 	mv stage3-libcody libcody; \
+ 	mv stage2-libcody prev-libcody || test -f stage2-lean 
+ @endif libcody
  @if libdecnumber
  	@cd $(HOST_SUBDIR); [ -d stage3-libdecnumber ] || \
  	  mkdir stage3-libdecnumber; \
*************** stage3-end::
*** 56502,56507 ****
--- 58038,58049 ----
  	  mv prev-libcpp stage2-libcpp; : ; \
  	fi
  @endif libcpp
+ @if libcody
+ 	@if test -d $(HOST_SUBDIR)/libcody; then \
+ 	  cd $(HOST_SUBDIR); mv libcody stage3-libcody; \
+ 	  mv prev-libcody stage2-libcody; : ; \
+ 	fi
+ @endif libcody
  @if libdecnumber
  	@if test -d $(HOST_SUBDIR)/libdecnumber; then \
  	  cd $(HOST_SUBDIR); mv libdecnumber stage3-libdecnumber; \
*************** stage4-start::
*** 56768,56773 ****
--- 58310,58321 ----
  	mv stage4-libcpp libcpp; \
  	mv stage3-libcpp prev-libcpp || test -f stage3-lean 
  @endif libcpp
+ @if libcody
+ 	@cd $(HOST_SUBDIR); [ -d stage4-libcody ] || \
+ 	  mkdir stage4-libcody; \
+ 	mv stage4-libcody libcody; \
+ 	mv stage3-libcody prev-libcody || test -f stage3-lean 
+ @endif libcody
  @if libdecnumber
  	@cd $(HOST_SUBDIR); [ -d stage4-libdecnumber ] || \
  	  mkdir stage4-libdecnumber; \
*************** stage4-end::
*** 56912,56917 ****
--- 58460,58471 ----
  	  mv prev-libcpp stage3-libcpp; : ; \
  	fi
  @endif libcpp
+ @if libcody
+ 	@if test -d $(HOST_SUBDIR)/libcody; then \
+ 	  cd $(HOST_SUBDIR); mv libcody stage4-libcody; \
+ 	  mv prev-libcody stage3-libcody; : ; \
+ 	fi
+ @endif libcody
  @if libdecnumber
  	@if test -d $(HOST_SUBDIR)/libdecnumber; then \
  	  cd $(HOST_SUBDIR); mv libdecnumber stage4-libdecnumber; \
*************** stageprofile-start::
*** 57166,57171 ****
--- 58720,58731 ----
  	mv stageprofile-libcpp libcpp; \
  	mv stage1-libcpp prev-libcpp || test -f stage1-lean 
  @endif libcpp
+ @if libcody
+ 	@cd $(HOST_SUBDIR); [ -d stageprofile-libcody ] || \
+ 	  mkdir stageprofile-libcody; \
+ 	mv stageprofile-libcody libcody; \
+ 	mv stage1-libcody prev-libcody || test -f stage1-lean 
+ @endif libcody
  @if libdecnumber
  	@cd $(HOST_SUBDIR); [ -d stageprofile-libdecnumber ] || \
  	  mkdir stageprofile-libdecnumber; \
*************** stageprofile-end::
*** 57310,57315 ****
--- 58870,58881 ----
  	  mv prev-libcpp stage1-libcpp; : ; \
  	fi
  @endif libcpp
+ @if libcody
+ 	@if test -d $(HOST_SUBDIR)/libcody; then \
+ 	  cd $(HOST_SUBDIR); mv libcody stageprofile-libcody; \
+ 	  mv prev-libcody stage1-libcody; : ; \
+ 	fi
+ @endif libcody
  @if libdecnumber
  	@if test -d $(HOST_SUBDIR)/libdecnumber; then \
  	  cd $(HOST_SUBDIR); mv libdecnumber stageprofile-libdecnumber; \
*************** stagetrain-start::
*** 57497,57502 ****
--- 59063,59074 ----
  	mv stagetrain-libcpp libcpp; \
  	mv stageprofile-libcpp prev-libcpp || test -f stageprofile-lean 
  @endif libcpp
+ @if libcody
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-libcody ] || \
+ 	  mkdir stagetrain-libcody; \
+ 	mv stagetrain-libcody libcody; \
+ 	mv stageprofile-libcody prev-libcody || test -f stageprofile-lean 
+ @endif libcody
  @if libdecnumber
  	@cd $(HOST_SUBDIR); [ -d stagetrain-libdecnumber ] || \
  	  mkdir stagetrain-libdecnumber; \
*************** stagetrain-end::
*** 57641,57646 ****
--- 59213,59224 ----
  	  mv prev-libcpp stageprofile-libcpp; : ; \
  	fi
  @endif libcpp
+ @if libcody
+ 	@if test -d $(HOST_SUBDIR)/libcody; then \
+ 	  cd $(HOST_SUBDIR); mv libcody stagetrain-libcody; \
+ 	  mv prev-libcody stageprofile-libcody; : ; \
+ 	fi
+ @endif libcody
  @if libdecnumber
  	@if test -d $(HOST_SUBDIR)/libdecnumber; then \
  	  cd $(HOST_SUBDIR); mv libdecnumber stagetrain-libdecnumber; \
*************** stagefeedback-start::
*** 57828,57833 ****
--- 59406,59417 ----
  	mv stagefeedback-libcpp libcpp; \
  	mv stagetrain-libcpp prev-libcpp || test -f stagetrain-lean 
  @endif libcpp
+ @if libcody
+ 	@cd $(HOST_SUBDIR); [ -d stagefeedback-libcody ] || \
+ 	  mkdir stagefeedback-libcody; \
+ 	mv stagefeedback-libcody libcody; \
+ 	mv stagetrain-libcody prev-libcody || test -f stagetrain-lean 
+ @endif libcody
  @if libdecnumber
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-libdecnumber ] || \
  	  mkdir stagefeedback-libdecnumber; \
*************** stagefeedback-end::
*** 57972,57977 ****
--- 59556,59567 ----
  	  mv prev-libcpp stagetrain-libcpp; : ; \
  	fi
  @endif libcpp
+ @if libcody
+ 	@if test -d $(HOST_SUBDIR)/libcody; then \
+ 	  cd $(HOST_SUBDIR); mv libcody stagefeedback-libcody; \
+ 	  mv prev-libcody stagetrain-libcody; : ; \
+ 	fi
+ @endif libcody
  @if libdecnumber
  	@if test -d $(HOST_SUBDIR)/libdecnumber; then \
  	  cd $(HOST_SUBDIR); mv libdecnumber stagefeedback-libdecnumber; \
*************** stageautoprofile-start::
*** 58182,58187 ****
--- 59772,59783 ----
  	mv stageautoprofile-libcpp libcpp; \
  	mv stage1-libcpp prev-libcpp || test -f stage1-lean 
  @endif libcpp
+ @if libcody
+ 	@cd $(HOST_SUBDIR); [ -d stageautoprofile-libcody ] || \
+ 	  mkdir stageautoprofile-libcody; \
+ 	mv stageautoprofile-libcody libcody; \
+ 	mv stage1-libcody prev-libcody || test -f stage1-lean 
+ @endif libcody
  @if libdecnumber
  	@cd $(HOST_SUBDIR); [ -d stageautoprofile-libdecnumber ] || \
  	  mkdir stageautoprofile-libdecnumber; \
*************** stageautoprofile-end::
*** 58326,58331 ****
--- 59922,59933 ----
  	  mv prev-libcpp stage1-libcpp; : ; \
  	fi
  @endif libcpp
+ @if libcody
+ 	@if test -d $(HOST_SUBDIR)/libcody; then \
+ 	  cd $(HOST_SUBDIR); mv libcody stageautoprofile-libcody; \
+ 	  mv prev-libcody stage1-libcody; : ; \
+ 	fi
+ @endif libcody
  @if libdecnumber
  	@if test -d $(HOST_SUBDIR)/libdecnumber; then \
  	  cd $(HOST_SUBDIR); mv libdecnumber stageautoprofile-libdecnumber; \
*************** stageautofeedback-start::
*** 58513,58518 ****
--- 60115,60126 ----
  	mv stageautofeedback-libcpp libcpp; \
  	mv stageautoprofile-libcpp prev-libcpp || test -f stageautoprofile-lean 
  @endif libcpp
+ @if libcody
+ 	@cd $(HOST_SUBDIR); [ -d stageautofeedback-libcody ] || \
+ 	  mkdir stageautofeedback-libcody; \
+ 	mv stageautofeedback-libcody libcody; \
+ 	mv stageautoprofile-libcody prev-libcody || test -f stageautoprofile-lean 
+ @endif libcody
  @if libdecnumber
  	@cd $(HOST_SUBDIR); [ -d stageautofeedback-libdecnumber ] || \
  	  mkdir stageautofeedback-libdecnumber; \
*************** stageautofeedback-end::
*** 58657,58662 ****
--- 60265,60276 ----
  	  mv prev-libcpp stageautoprofile-libcpp; : ; \
  	fi
  @endif libcpp
+ @if libcody
+ 	@if test -d $(HOST_SUBDIR)/libcody; then \
+ 	  cd $(HOST_SUBDIR); mv libcody stageautofeedback-libcody; \
+ 	  mv prev-libcody stageautoprofile-libcody; : ; \
+ 	fi
+ @endif libcody
  @if libdecnumber
  	@if test -d $(HOST_SUBDIR)/libdecnumber; then \
  	  cd $(HOST_SUBDIR); mv libdecnumber stageautofeedback-libdecnumber; \
*************** all-stagetrain-gcc: all-stagetrain-libcp
*** 59185,59190 ****
--- 60799,60814 ----
  all-stagefeedback-gcc: all-stagefeedback-libcpp
  all-stageautoprofile-gcc: all-stageautoprofile-libcpp
  all-stageautofeedback-gcc: all-stageautofeedback-libcpp
+ all-gcc: all-libcody
+ all-stage1-gcc: all-stage1-libcody
+ all-stage2-gcc: all-stage2-libcody
+ all-stage3-gcc: all-stage3-libcody
+ all-stage4-gcc: all-stage4-libcody
+ all-stageprofile-gcc: all-stageprofile-libcody
+ all-stagetrain-gcc: all-stagetrain-libcody
+ all-stagefeedback-gcc: all-stagefeedback-libcody
+ all-stageautoprofile-gcc: all-stageautoprofile-libcody
+ all-stageautofeedback-gcc: all-stageautofeedback-libcody
  all-gcc: all-libdecnumber
  all-stage1-gcc: all-stage1-libdecnumber
  all-stage2-gcc: all-stage2-libdecnumber
*************** all-stagetrain-binutils: maybe-all-stage
*** 59600,59605 ****
--- 61224,61239 ----
  all-stagefeedback-binutils: maybe-all-stagefeedback-libctf
  all-stageautoprofile-binutils: maybe-all-stageautoprofile-libctf
  all-stageautofeedback-binutils: maybe-all-stageautofeedback-libctf
+ all-ld: maybe-all-libctf
+ all-stage1-ld: maybe-all-stage1-libctf
+ all-stage2-ld: maybe-all-stage2-libctf
+ all-stage3-ld: maybe-all-stage3-libctf
+ all-stage4-ld: maybe-all-stage4-libctf
+ all-stageprofile-ld: maybe-all-stageprofile-libctf
+ all-stagetrain-ld: maybe-all-stagetrain-libctf
+ all-stagefeedback-ld: maybe-all-stagefeedback-libctf
+ all-stageautoprofile-ld: maybe-all-stageautoprofile-libctf
+ all-stageautofeedback-ld: maybe-all-stageautofeedback-libctf
  install-binutils: maybe-install-opcodes
  install-strip-binutils: maybe-install-strip-opcodes
  install-opcodes: maybe-install-bfd
*************** install-strip-sid: maybe-install-strip-t
*** 59888,59894 ****
  install-sid: maybe-install-tk
  install-strip-sid: maybe-install-strip-tk
  all-sim: maybe-all-readline
- all-sim: maybe-configure-gdb
  all-fastjar: maybe-all-build-texinfo
  all-libctf: all-libiberty
  all-stage1-libctf: all-stage1-libiberty
--- 61522,61527 ----
*************** configure-stagetrain-libctf: maybe-all-s
*** 59960,59965 ****
--- 61593,61608 ----
  configure-stagefeedback-libctf: maybe-all-stagefeedback-libiconv
  configure-stageautoprofile-libctf: maybe-all-stageautoprofile-libiconv
  configure-stageautofeedback-libctf: maybe-all-stageautofeedback-libiconv
+ check-libctf: maybe-all-ld
+ check-stage1-libctf: maybe-all-stage1-ld
+ check-stage2-libctf: maybe-all-stage2-ld
+ check-stage3-libctf: maybe-all-stage3-ld
+ check-stage4-libctf: maybe-all-stage4-ld
+ check-stageprofile-libctf: maybe-all-stageprofile-ld
+ check-stagetrain-libctf: maybe-all-stagetrain-ld
+ check-stagefeedback-libctf: maybe-all-stagefeedback-ld
+ check-stageautoprofile-libctf: maybe-all-stageautoprofile-ld
+ check-stageautofeedback-libctf: maybe-all-stageautofeedback-ld
  all-bison: maybe-all-build-texinfo
  all-flex: maybe-all-build-bison
  all-flex: maybe-all-m4
*************** configure-target-libgfortran: maybe-all-
*** 60038,60043 ****
--- 61681,61687 ----
  @if gcc-bootstrap
  configure-gnattools: stage_last
  configure-libcc1: stage_last
+ configure-c++tools: stage_last
  configure-utils: stage_last
  configure-gdb: stage_last
  configure-gdbserver: stage_last
*************** configure-m4: stage_last
*** 60055,60060 ****
--- 61699,61705 ----
  all-gnattools: maybe-all-target-libstdc++-v3
  configure-libcc1: maybe-configure-gcc
  all-libcc1: maybe-all-gcc
+ all-c++tools: maybe-all-gcc
  all-utils: maybe-all-libiberty
  configure-gdb: maybe-all-intl
  configure-gdb: maybe-all-bfd
diff -Nrcpad gcc-10.3.0/Makefile.tpl gcc-11.1.0/Makefile.tpl
*** gcc-10.3.0/Makefile.tpl	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/Makefile.tpl	Tue Apr 27 10:00:12 2021
*************** STAGEprofile_TFLAGS = $(STAGE2_TFLAGS)
*** 488,494 ****
  STAGEtrain_CFLAGS = $(filter-out -fchecking=1,$(STAGE3_CFLAGS))
  STAGEtrain_TFLAGS = $(filter-out -fchecking=1,$(STAGE3_TFLAGS))
  
! STAGEfeedback_CFLAGS = $(STAGE4_CFLAGS) -fprofile-use
  STAGEfeedback_TFLAGS = $(STAGE4_TFLAGS)
  
  STAGEautoprofile_CFLAGS = $(STAGE2_CFLAGS) -g
--- 488,494 ----
  STAGEtrain_CFLAGS = $(filter-out -fchecking=1,$(STAGE3_CFLAGS))
  STAGEtrain_TFLAGS = $(filter-out -fchecking=1,$(STAGE3_TFLAGS))
  
! STAGEfeedback_CFLAGS = $(STAGE4_CFLAGS) -fprofile-use -fprofile-reproducible=parallel-runs
  STAGEfeedback_TFLAGS = $(STAGE4_TFLAGS)
  
  STAGEautoprofile_CFLAGS = $(STAGE2_CFLAGS) -g
*************** local-distclean:
*** 864,871 ****
  	-rm -f texinfo/doc/Makefile texinfo/po/POTFILES
  	-rmdir texinfo/doc texinfo/info texinfo/intl texinfo/lib 2>/dev/null
  	-rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null
! 	-rmdir fastjar gcc gnattools gotools libcc1 libiberty 2>/dev/null
! 	-rmdir texinfo zlib 2>/dev/null
  	-find . -name config.cache -exec rm -f {} \; \; 2>/dev/null
  
  local-maintainer-clean:
--- 864,871 ----
  	-rm -f texinfo/doc/Makefile texinfo/po/POTFILES
  	-rmdir texinfo/doc texinfo/info texinfo/intl texinfo/lib 2>/dev/null
  	-rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null
! 	-rmdir c++tools fastjar gcc gnattools gotools 2>/dev/null
! 	-rmdir libcc1 libiberty texinfo zlib 2>/dev/null
  	-find . -name config.cache -exec rm -f {} \; \; 2>/dev/null
  
  local-maintainer-clean:
diff -Nrcpad gcc-10.3.0/NEWS gcc-11.1.0/NEWS
*** gcc-10.3.0/NEWS	Thu Apr  8 11:57:23 2021
--- gcc-11.1.0/NEWS	Tue Apr 27 10:00:53 2021
*************** that led to GCC 3. For information on GC
*** 5,12 ****
  see ONEWS.
  
  ======================================================================
! http://gcc.gnu.org/gcc-10/index.html
  
                               GCC 10 Release Series
  
     April 8, 2021
--- 5,726 ----
  see ONEWS.
  
  ======================================================================
! http://gcc.gnu.org/gcc-11/index.html
!                              GCC 11 Release Series
! 
!    April 27, 2021
! 
!    The GCC developers are pleased to announce the release of GCC 11.1.
! 
!    This release is a major release, containing new features (as well as
!    many other improvements) relative to GCC 10.x.
! 
! Release History
! 
!    GCC 11.1
!           April 27, 2021 ([1]changes, [2]documentation)
! 
! References and Acknowledgements
! 
!    GCC used to stand for the GNU C Compiler, but since the compiler
!    supports several other languages aside from C, it now stands for the
!    GNU Compiler Collection.
! 
!    A list of [3]successful builds is updated as new information becomes
!    available.
! 
!    The GCC developers would like to thank the numerous people that have
!    contributed new features, improvements, bug fixes, and other changes as
!    well as test results to GCC. This [4]amazing group of volunteers is
!    what makes GCC successful.
! 
!    For additional information about GCC please refer to the [5]GCC project
!    web site or contact the [6]GCC development mailing list.
! 
!    To obtain GCC please use [7]our mirror sites or [8]our version control
!    system.
! 
! 
!     For questions related to the use of GCC, please consult these web
!     pages and the [9]GCC manuals. If that fails, the
!     [10]gcc-help@gcc.gnu.org mailing list might help. Comments on these
!     web pages and the development of GCC are welcome on our developer
!     list at [11]gcc@gcc.gnu.org. All of [12]our lists have public
!     archives.
! 
!    Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and
!    distribution of this entire article is permitted in any medium,
!    provided this notice is preserved.
! 
!    These pages are [14]maintained by the GCC team. Last modified
!    2021-04-27[15].
! 
! References
! 
!    1. http://gcc.gnu.org/gcc-11/changes.html
!    2. http://gcc.gnu.org/onlinedocs/11.1.0/
!    3. http://gcc.gnu.org/gcc-11/buildstat.html
!    4. http://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Contributors.html
!    5. http://gcc.gnu.org/index.html
!    6. mailto:gcc@gcc.gnu.org
!    7. http://gcc.gnu.org/mirrors.html
!    8. http://gcc.gnu.org/git.html
!    9. https://gcc.gnu.org/onlinedocs/
!   10. mailto:gcc-help@gcc.gnu.org
!   11. mailto:gcc@gcc.gnu.org
!   12. https://gcc.gnu.org/lists.html
!   13. https://www.fsf.org/
!   14. https://gcc.gnu.org/about.html
!   15. http://validator.w3.org/check/referer
! ======================================================================
! http://gcc.gnu.org/gcc-11/changes.html
!                              GCC 11 Release Series
!                         Changes, New Features, and Fixes
! 
!    This page is a "brief" summary of some of the huge number of
!    improvements in GCC 11. You may also want to check out our [1]Porting
!    to GCC 11 page and the [2]full GCC documentation.
! 
! Caveats
! 
!      * The default mode for C++ is now -std=gnu++17 instead of
!        -std=gnu++14. Note that [3]C++17 changes to template template
!        parameter matching can be disabled independently of other features
!        with -fno-new-ttp-matching.
!      * When building GCC itself, the host compiler must now support C++11,
!        rather than C++98. In particular bootstrapping GCC 11 using an
!        older version of GCC requires a binary of GCC 4.8 or later, rather
!        than of GCC 3.4 or later as was the case for bootstrapping GCC 10.
!      * Naming and location of auxiliary and dump output files changed. If
!        you compile multiple input files in a single command, if you enable
!        Link Time Optimization, or if you use -dumpbase, -dumpdir,
!        -save-temps=*, and you expect any file other than the primary
!        output file(s) to be created as a side effect, watch out for
!        improvements and a few surprises. See [4]the patch, particularly
!        its textual description, for more details about the changes.
!      * -gsplit-dwarf no longer enables debug info generation on its own
!        but requires a separate -g for this.
!      * The libstdc++ configure option --enable-cheaders=c_std is
!        deprecated and will be removed in a future release. It should be
!        possible to use --enable-cheaders=c_global (the default) with no
!        change in behaviour.
!      * The front end for compiling BRIG format of Heterogeneous System
!        Architecture Intermediate Language (HSAIL) has been deprecated and
!        will likely be removed in a future release.
! 
! General Improvements
! 
!      * [5]ThreadSanitizer improvements to support alternative runtimes and
!        environments. The [6]Linux Kernel Concurrency Sanitizer (KCSAN) is
!        now supported.
!           + Add --param tsan-distinguish-volatile to optionally emit
!             instrumentation distinguishing volatile accesses.
!           + Add --param tsan-instrument-func-entry-exit to optionally
!             control if function entries and exits should be instrumented.
!      * In previous releases of GCC, the "column numbers" emitted in
!        diagnostics were actually a count of bytes from the start of the
!        source line. This could be problematic, both because of:
!           + multibyte characters (requiring more than one byte to encode),
!             and
!           + multicolumn characters (requiring more than one column to
!             display in a monospace font)
!        For example, the character π ("GREEK SMALL LETTER PI (U+03C0)")
!        occupies one column, and its UTF-8 encoding requires two bytes; the
!        character 🙂 ("SLIGHTLY SMILING FACE (U+1F642)") occupies two
!        columns, and its UTF-8 encoding requires four bytes.
!        In GCC 11 the column numbers default to being column numbers,
!        respecting multi-column characters. The old behavior can be
!        restored using a new option [7]-fdiagnostics-column-unit=byte.
!        There is also a new option [8]-fdiagnostics-column-origin=,
!        allowing the pre-existing default of the left-hand column being
!        column 1 to be overridden if desired (e.g. for 0-based columns).
!        The output of [9]-fdiagnostics-format=json has been extended to
!        supply both byte counts and column numbers for all source
!        locations.
!        Additionally, in previous releases of GCC, tab characters in the
!        source would be emitted verbatim when quoting source code, but be
!        prefixed with whitespace or line number information, leading to
!        misalignments in the resulting output when compared with the actual
!        source. Tab characters are now printed as an appropriate number of
!        spaces, using the [10]-ftabstop option (which defaults to 8 spaces
!        per tab stop).
!      * Introduce [11]Hardware-assisted AddressSanitizer support. This
!        sanitizer currently only works for the AArch64 target. It helps
!        debug address problems similarly to [12]AddressSanitizer but is
!        based on partial hardware assistance and provides probabilistic
!        protection to use less RAM at run time. [13]Hardware-assisted
!        AddressSanitizer is not production-ready for user space, and is
!        provided mainly for use compiling the Linux Kernel.
!        To use this sanitizer the command line arguments are:
!           + -fsanitize=hwaddress to instrument userspace code.
!           + -fsanitize=kernel-hwaddress to instrument kernel code.
!      * For targets that produce DWARF debugging information GCC now
!        defaults to [14]DWARF version 5 (with the exception of VxWorks and
!        Darwin/Mac OS X which default to version 2 and AIX which defaults
!        to version 4). This can produce up to 25% more compact debug
!        information compared to earlier versions.
!        To take full advantage of DWARF version 5 GCC needs to be build
!        against binutils version 2.35.2 or higher. When GCC is build
!        against earlier versions of binutils GCC will still emit DWARF
!        version 5 for most debuginfo data, but will generate version 4
!        debug line tables (even when explicitly given -gdwarf-5).
!        The following debug information consumers can process DWARF version
!        5:
!           + GDB 8.0, or higher
!           + valgrind 3.17.0
!           + elfutils 0.172, or higher (for use with systemtap,
!             dwarves/pahole, perf and libabigail)
!           + dwz 0.14
!        Programs embedding libbacktrace are urged to upgrade to the version
!        shipping with GCC 11.
!        To make GCC 11 generate an older DWARF version use -g together with
!        -gdwarf-2, -gdwarf-3 or -gdwarf-4.
!      * Vectorizer improvements:
!           + The straight-line code vectorizer now considers the whole
!             function when vectorizing and can handle opportunities
!             crossing CFG merges and backedges.
!      * Inter-procedural optimization improvements:
!           + A new IPA-modref pass was added to track side effects of
!             function calls and improve precision of points-to-analysis.
!             The pass can be controlled by the [15]-fipa-modref option.
!           + The identical code folding pass (controlled by [16]-fipa-icf)
!             was significantly improved to increase the number of unified
!             functions and to reduce compile-time memory use.
!           + IPA-CP (Interprocedural constant propagation) heuristics
!             improved its estimation of potential usefulness of known loop
!             bounds and strides by taking the estimated frequency of these
!             loops into account.
!      * Link-time optimization improvements:
!           + The LTO bytecode format was optimized for smaller object files
!             and faster streaming.
!           + Memory allocation of the linking stage was improved to reduce
!             peak memory use.
!      * Profile driven optimization improvements:
!           + Using [17]-fprofile-values, was improved by tracking more
!             target values for e.g. indirect calls.
! 
! New Languages and Language specific improvements
! 
!      * GCC 11 adds support for non-rectangular loop nests in OpenMP
!        constructs and the allocator routines of [18]OpenMP 5.0, including
!        initial allocate clause support in C/C++. The OMP_TARGET_OFFLOAD
!        environment variable and the active-levels routines are now
!        supported. For C/C++, the declare variant and map support has been
!        extended. For Fortran, OpenMP 4.5 is now fully supported and OpenMP
!        5.0 support has been extended, including the following features
!        which were before only available in C and C++: order(concurrent),
!        device_type, memorder-clauses for flush, lastprivate with
!        conditional modifier, atomic construct and reduction clause
!        extensions of OpenMP 5.0, if clause with simd and cancel modifiers,
!        target data without map clause, and limited support for the
!        requires construct.
!      * Version 2.6 of the [19]OpenACC specification continues to be
!        maintained and improved in the C, C++ and Fortran compilers. See
!        the [20]implementation status section on the OpenACC wiki page and
!        the [21]run-time library documentation for further information.
! 
!   C family
! 
!      * New attributes:
!           + The [22]no_stack_protector attribute has been added to mark
!             functions which should not be instrumented with stack
!             protection (-fstack-protector).
!           + The existing [23]malloc attribute has been extended so that it
!             can be used to identify allocator/deallocator API pairs. A
!             pair of new [24]-Wmismatched-dealloc and
!             [25]-Wmismatched-new-delete warnings will complain about
!             mismatched calls, and [26]-Wfree-nonheap-object about
!             deallocation calls with pointers not obtained from allocation
!             functions. Additionally, the static analyzer will use these
!             attributes when checking for leaks, double-frees,
!             use-after-frees, and similar issues.
!      * New warnings:
!           + [27]-Wmismatched-dealloc, enabled by default, warns about
!             calls to deallocation functions with pointers returned from
!             mismatched allocation functions.
!           + [28]-Wsizeof-array-div, enabled by -Wall, warns about
!             divisions of two sizeof operators when the first one is
!             applied to an array and the divisor does not equal the size of
!             the array element.
!           + [29]-Wstringop-overread, enabled by default, warns about calls
!             to string functions reading past the end of the arrays passed
!             to them as arguments. In prior GCC releases most instances of
!             his warning are diagnosed by -Wstringop-overflow.
!           + [30]-Wtsan, enabled by default, warns about unsupported
!             features in ThreadSanitizer (currently
!             std::atomic_thread_fence).
!      * Enhancements to existing warnings:
!           + [31]-Wfree-nonheap-object detects many more instances of calls
!             to deallocation functions with pointers not returned from a
!             dynamic memory allocation function.
!           + [32]-Wmaybe-uninitialized diagnoses passing pointers or
!             references to uninitialized memory to functions taking
!             const-qualified arguments.
!           + [33]-Wuninitialized detects reads from uninitialized
!             dynamically allocated memory.
!      * For ELF targets that support the GNU or FreeBSD OSABIs, the used
!        attribute will now save the symbol declaration it is applied to
!        from linker garbage collection.
!        To support this behavior, used symbols that have not been placed in
!        specific sections (e.g. with the section attribute, or the
!        -f{function,data}-sections options) will be placed in new, unique
!        sections.
!        This functionality requires Binutils version 2.36 or later.
!      * A series of conditional expressions that compare the same variable
!        can be transformed into a switch statement if each of them contains
!        a comparison expression. Example:
!         int IsHTMLWhitespace(int aChar) {
!           return aChar == 0x0009 || aChar == 0x000A ||
!                  aChar == 0x000C || aChar == 0x000D ||
!                  aChar == 0x0020;
!         }
! 
!        This statement can be transformed into a switch statement and then
!        expanded into a bit-test.
!      * New command-line options:
!           + [34]-fbit-tests, enabled by default, can be used to enable or
!             disable switch expansion using bit-tests.
!      * GCOV data file format outputs smaller files by representing zero
!        counters in a more compact way.
!      * Some short options of the gcov tool have been renamed: -i to -j and
!        -j to -H.
! 
!   C
! 
!      * Several new features from the upcoming C2X revision of the ISO C
!        standard are supported with -std=c2x and -std=gnu2x. Some of these
!        features are also supported as extensions when compiling for older
!        language versions. In addition to the features listed, some
!        features previously supported as extensions and now added to the C
!        standard are enabled by default in C2X mode and not diagnosed with
!        -std=c2x -Wpedantic.
!           + The BOOL_MAX and BOOL_WIDTH macros are provided in <limits.h>.
!           + As in C++, function definitions no longer need to give names
!             for unused function parameters.
!           + The expansions of the true and false macros in <stdbool.h>
!             have changed so that they have type bool.
!           + The [[nodiscard]] standard attribute is now supported.
!           + The __has_c_attribute preprocessor operator is now supported.
!           + Macros INFINITY, NAN, FLT_SNAN, DBL_SNAN, LDBL_SNAN,
!             DEC_INFINITY, DEC_NAN, and corresponding signaling NaN macros
!             for _FloatN, _FloatNx and _DecimalN types, are provided in
!             <float.h>. There are also corresponding built-in functions
!             __builtin_nansdN for decimal signaling NaNs.
!           + Macros FLT_IS_IEC_60559, DBL_IS_IEC_60559 and
!             LDBL_IS_IEC_60559 are provided in <float.h>.
!           + The feature test macro __STDC_WANT_IEC_60559_EXT__ is
!             supported by <float.h>.
!           + Labels may appear before declarations and at the end of a
!             compound statement.
!      * New warnings:
!           + [35]-Warray-parameter, enabled by -Wall, warns about
!             redeclarations of functions with ordinary array arguments
!             declared using inconsistent forms. The warning also enables
!             the detection of the likely out of bounds accesses in calls to
!             such functions with smaller arrays.
!           + [36]-Wvla-parameter, enabled by -Wall, warns redeclarations of
!             functions with variable length array arguments declared using
!             inconsistent forms or with mismatched bounds. The warning also
!             enables the detection of the likely out of bounds accesses in
!             calls to such functions with smaller arrays.
! 
!   C++
! 
!      * The default mode has been changed to -std=gnu++17.
!      * Several C++20 features have been implemented:
!           + the compiler now supports consteval virtual functions
!           + P2082R1, Fixing CTAD for aggregates
!           + P0593R6, Pseudo-destructors end object lifetimes
!           + P1907R1, Inconsistencies with non-type template parameters
!             (complete implementation)
!           + P1975R0, Fixing the wording of parenthesized
!             aggregate-initialization
!           + P1009R2, Array size deduction in new-expressions
!           + P1099R5, using enum
!           + Modules, Requires -fmodules-ts and some aspects are
!             incomplete. Refer to [37]C++ 20 Status
!      * The C++ front end has experimental support for some of the upcoming
!        C++23 draft features with the -std=c++23, -std=gnu++23, -std=c++2b
!        or -std=gnu++2b flags, including
!           + P0330R8, Literal Suffix for (signed) size_t.
!        For a full list of new features, see [38]the C++ status page.
!      * Several C++ Defect Reports have been resolved, e.g.:
!           + DR 625, Use of auto as a template-argument
!           + DR 1512, Pointer comparison vs qualification conversions
!           + DR 1722, Should lambda to function pointer conversion function
!             be noexcept?
!           + DR 1914, Duplicate standard attributes
!           + DR 2032, Default template-arguments of variable templates
!           + DR 2289, Uniqueness of decomposition declaration names
!           + DR 2237, Can a template-id name a constructor?
!           + DR 2303, Partial ordering and recursive variadic inheritance
!           + DR 2369, Ordering between constraints and substitution
!           + DR 2450, braced-init-list as a template-argument
!      * G++ now performs better access checking in templates ([39]PR41437).
!      * reinterpret_casts in constexpr evaluation are now checked more
!        completely ([40]PR95307).
!      * The diagnostic for static_assert has been improved: the compiler
!        now shows the expression including its template arguments (if there
!        were any), and can point to the failing clause if the condition
!        comprised of any logical AND operators ([41]PR97518).
!      * New warnings:
!           + [42]-Wctad-maybe-unsupported, disabled by default, warns about
!             performing class template argument deduction on a type with no
!             deduction guides.
!           + [43]-Wrange-loop-construct, enabled by -Wall, warns when a
!             range-based for-loop is creating unnecessary and expensive
!             copies.
!           + [44]-Wdeprecated-enum-enum-conversion, enabled by default in
!             C++20, warns about deprecated arithmetic conversions on
!             operands of enumeration types, as outlined in
!             [depr.arith.conv.enum].
!           + [45]-Wdeprecated-enum-float-conversion, enabled by default in
!             C++20, warns about deprecated arithmetic conversions on
!             operands where one is of enumeration type and the other is of
!             a floating-point type, as outlined in [depr.arith.conv.enum].
!           + [46]-Wmismatched-new-delete, enabled by -Wall, warns about
!             calls to C++ operator delete with pointers returned from
!             mismatched forms of operator new or from other mismatched
!             allocation functions.
!           + [47]-Wvexing-parse, enabled by default, warns about the most
!             vexing parse rule: the cases when a declaration looks like a
!             variable definition, but the C++ language requires it to be
!             interpreted as a function declaration.
!      * Enhancements to existing warnings:
!           + [48]-Wnonnull considers the implicit this argument of every
!             C++ nonstatic member function to have been implicitly declared
!             with attribute nonnull and triggers warnings for calls where
!             the pointer is null.
! 
!     Runtime Library (libstdc++)
! 
!      * Improved C++17 support, including:
!           + std::from_chars and std::to_chars for floating-point types.
!      * Improved experimental C++20 support, including:
!           + Calendar additions to <chrono>. Thanks to Cassio Neri for
!             optimizations.
!           + std::bit_cast
!           + std::source_location
!           + Atomic wait and notify operations.
!           + <barrier>, <latch>, and <semaphore>
!           + <syncstream>
!           + Efficient access to basic_stringbuf's buffer.
!      * Experimental C++23 support, including:
!           + contains member functions for strings, thanks to Paul Fee.
!           + std::to_underlying, std::is_scoped_enum
!      * Experimental support for Data-Parallel Types (simd) from the
!        Parallelism 2 TS, thanks to Matthias Kretz.
!      * Faster std::uniform_int_distribution, thanks to Daniel Lemire.
! 
!   Fortran
! 
!      * Added DEPRECATED to !GCC$'s attributes directive.
! 
! libgccjit
! 
!      * libgccjit was marked as merely "Alpha" quality when [49]originally
!        added in GCC 5. Given that we have maintained [50]API and ABI
!        compatibility since then and it is in use by various projects, we
!        have removed that caveat.
!      * libgccjit can now be built for MinGW
!      * The libgccjit API gained 10 new entry points:
!           + [51]gcc_jit_global_set_initializer
!           + 9 entrypoints for [52]directly embedding asm statements into a
!             compile, analogous to inline asm in the C front end
! 
! New Targets and Target Specific Improvements
! 
!   AArch64 & arm
! 
!      * A number of new CPUs are supported through arguments to the -mcpu
!        and -mtune options in both the arm and aarch64 backends (GCC
!        identifiers in parentheses):
!           + Arm Cortex-A78 (cortex-a78).
!           + Arm Cortex-A78AE (cortex-a78ae).
!           + Arm Cortex-A78C (cortex-a78c).
!           + Arm Cortex-X1 (cortex-x1).
!           + Arm Neoverse V1 (neoverse-v1).
!           + Arm Neoverse N2 (neoverse-n2).
!      * GCC can now auto-vectorize operations performing addition,
!        subtraction, multiplication and the accumulate/subtract variants on
!        complex numbers, taking advantage of the Advanced SIMD instructions
!        in the Armv8.3-a (AArch64/AArch32), SVE (AArch64), SVE2 (AArch64)
!        and MVE (AArch32 M-profile) instruction sets.
! 
!   AArch64
! 
!      * In addition to the above, the following AArch64-only CPUs are now
!        supported:
!           + Fujitsu A64FX (a64fx).
!           + Arm Cortex-R82 (cortex-r82).
!      * The AArch64 Armv8-R architecture is now supported through the
!        -march=armv8-r option.
!      * Mitigation against the [53]Straight-line Speculation vulnerability
!        is supported with the -mharden-sls= option. Please refer to the
!        documentation for usage instructions.
!      * The availability of Advanced SIMD intrinsics available through the
!        arm_neon.h header is improved and GCC 11 supports the full set of
!        intrinsics defined by ACLE Q3 2020.
! 
!   AMD Radeon (GCN)
! 
!      * Initial support for gfx908 GPUs has been added.
  
+   arm
+ 
+      * Initial auto-vectorization is now available when targeting the MVE
+        instruction set.
+      * GCC can now make use of the Low Overhead Branch instruction in
+        Armv8.1-M to optimize loop counters and checks.
+      * The -mcpu=cortex-m55 option now supports the extensions +nomve and
+        +nomve.fp to control generation of MVE and MVE floating-point
+        instructions.
+ 
+   IA-32/x86-64
+ 
+      * New ISA extension support for Intel TSXLDTRK was added to GCC.
+        TSXLDTRK intrinsics are available via the -mtsxldtrk compiler
+        switch.
+      * New ISA extension support for Intel SERIALIZE was added to GCC.
+        SERIALIZE intrinsics are available via the -mserialize compiler
+        switch.
+      * New ISA extension support for Intel HRESET was added to GCC. HRESET
+        intrinsics are available via the -mhreset compiler switch.
+      * New ISA extension support for Intel UINTR was added to GCC. UINTR
+        intrinsics are available via the -muintr compiler switch.
+      * New ISA extension support for Intel KEYLOCKER was added to GCC.
+        KEYLOCKER intrinsics are available via the -mkeylocker compiler
+        switch.
+      * New ISA extension support for Intel AMX-TILE, AMX-INT8, AMX-BF16
+        was added to GCC. AMX-TILE, AMX-INT8, AMX-BF16 intrinsics are
+        available via the -mamx-tile, -mamx-int8, -mamx-bf16 compiler
+        switches.
+      * New ISA extension support for Intel AVX-VNNI was added to GCC.
+        AVX-VNNI intrinsics are available via the -mavxvnni compiler
+        switch.
+      * GCC now supports the Intel CPU named Sapphire Rapids through
+        -march=sapphirerapids. The switch enables the MOVDIRI, MOVDIR64B,
+        AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, SERIALIZE, PTWRITE, WAITPKG,
+        TSXLDTRK, AMT-TILE, AMX-INT8, AMX-BF16, and AVX-VNNI ISA
+        extensions.
+      * GCC now supports the Intel CPU named Alderlake through
+        -march=alderlake. The switch enables the CLDEMOTE, PTWRITE,
+        WAITPKG, SERIALIZE, KEYLOCKER, AVX-VNNI, and HRESET ISA extensions.
+      * GCC now supports the Intel CPU named Rocketlake through
+        -march=rocketlake. Rocket Lake is based on Icelake client and minus
+        SGX.
+      * GCC now supports AMD CPUs based on the znver3 core via
+        -march=znver3.
+ 
+   Nios II
+ 
+      * The options -mcustom-insn=N no longer produce compiler warnings if
+        the custom instruction is not generated due to missing optimization
+        options such as -fno-math-errno, -ffinite-math-only, or
+        -funsafe-math-optimizations. These warnings were not consistently
+        emitted for all custom instructions.
+      * The -mcustom-fpu-cfg=fph2 option has been added to enable the
+        custom instructions supported by the Nios II Floating Point
+        Hardware 2 Component.
+ 
+   NVPTX
+ 
+      * The -misa default has changed from sm_30 to sm_35.
+      * The -m32 compiler switch has been removed.
+      * The -msoft-stack-reserve-local format has been fixed. Previously,
+        it accepted -msoft-stack-reserve-local<n>. It now accepts
+        -msoft-stack-reserve-local=<n>.
+ 
+   S/390, System z, IBM Z Systems
+ 
+      * The behavior when compiling with -fexcess-precision=standard (e.g.,
+        implied by -std=c99) on s390(x) targets can now be controlled at
+        configure time with the flag --enable-s390-excess-float-precision.
+        When enabled, GCC will maintain previous behavior and evaluate
+        float expressions in double precision, which aligns with the
+        definition of float_t as double. With the flag disabled, GCC will
+        always evaluate float expressions in single precision. In native
+        builds and cross compiles that have target libc headers, GCC will
+        by default match the definition of float_t in the installed glibc.
+ 
+   RISC-V
+ 
+      * Support address sanitizer for RISC-V.
+      * Support big-endian for RISC-V, thanks to Marcus Comstedt.
+      * Implement new style of architecture extension test macros, each
+        architecture extension has corresponding feature test macro, which
+        could use to test its existence and version information.
+      * Legacy architecture extension test macro like __riscv_atomic, are
+        deprecated, but it will still supported for at least 2 release
+        cycles.
+      * Support IFUNC for riscv*-*-linux*.
+      * Add new option -misa-spec=* to control ISA spec version, default is
+        2.2, this option could control the default version of each
+        extensions.
+      * Introduce --with-multilib-generator to configure time option, this
+        option could flexible config multi-lib settings, syntax is same as
+        RISC-V's multilib-generator.
+      * Extend the sytax for multilib-generator, support expansion operator
+        * to reduce the complexity of complicated multi-lib re-use rule.
+      * Support -mcpu=* option, the behavior is aligned to RISC-V
+        clang/LLVM, it will set pipeline model and architecture extension,
+        like -mtune=* plus -march=*.
+      * Support for TLS stack protector canary access, thanks to Cooper Qu.
+      * Support __builtin_thread_pointer for RISC-V.
+      * Introduce shorten_memrefs optimization, which could reduce the code
+        size for memory access, thanks to Craig Blackmore.
+ 
+ Operating Systems
+ 
+   AIX
+ 
+      * GCC for AIX can be built as a 64 bit application and the runtime is
+        built as FAT libraries containing both 32 bit and 64 bit objects.
+      * Support AIX Vector Extended ABI with -mabi=vec-extabi.
+      * Thread-Local uninitiated data placed in local common section.
+      * Use thread-safe access in ctype.
+      * Link with libc128.a when long-double-128 enabled.
+ 
+ Improvements to Static Analyzer
+ 
+      * The implementation of how program state is tracked within
+        [54]-fanalyzer has been completely rewritten for GCC 11, fixing
+        numerous bugs, and allowing for the analyzer to scale to larger C
+        source files.
+      * The analysis of allocations and deallocations has been generalized
+        beyond malloc and free.
+           + As preliminary work towards eventually supporting C++, the
+             malloc/free checking will also check new/delete and
+             new[]/delete[]. However, C++ is not yet properly supported by
+             [55]-fanalyzer (for example, exception-handling is
+             unimplemented).
+           + As noted above, the existing [56]malloc attribute has been
+             extended so that it can be used to identify
+             allocator/deallocator API pairs. The analyzer will use these
+             attributes when checking for leaks, double-frees,
+             use-after-frees, and similar issues.
+           + A new [57]-Wanalyzer-mismatching-deallocation warning has been
+             added, covering such mismatches as using scalar delete rather
+             vector delete[].
+      * The analyzer has gained warnings
+        [58]-Wanalyzer-shift-count-negative,
+        [59]-Wanalyzer-shift-count-overflow, [60]-Wanalyzer-write-to-const,
+        and [61]-Wanalyzer-write-to-string-literal, all enabled by default
+        when [62]-fanalyzer is enabled.
+      * The analyzer can now be extended by GCC plugins, allowing for
+        domain-specific path-sensitive warnings. An example of using a
+        [63]GCC plugin to check for misuses of CPython's global interpreter
+        lock can be seen in the test suite
+      * The analyzer has gained new debugging options
+        [64]-fdump-analyzer-json and [65]-fno-analyzer-feasibility.
+ 
+ Other significant improvements
+ 
+      * GCC has gained a new environment variable
+        [66]GCC_EXTRA_DIAGNOSTIC_OUTPUT which can be used by IDEs to
+        request machine-readable fix-it hints without needing to adjust
+        build flags.
+ 
+ GCC 11.1
+ 
+    This is the [67]list of problem reports (PRs) from GCC's bug tracking
+    system that are known to be fixed in the 11.1 release. This list might
+    not be complete (that is, it is possible that some PRs that have been
+    fixed are not listed here).
+ 
+ 
+     For questions related to the use of GCC, please consult these web
+     pages and the [68]GCC manuals. If that fails, the
+     [69]gcc-help@gcc.gnu.org mailing list might help. Comments on these
+     web pages and the development of GCC are welcome on our developer
+     list at [70]gcc@gcc.gnu.org. All of [71]our lists have public
+     archives.
+ 
+    Copyright (C) [72]Free Software Foundation, Inc. Verbatim copying and
+    distribution of this entire article is permitted in any medium,
+    provided this notice is preserved.
+ 
+    These pages are [73]maintained by the GCC team. Last modified
+    2021-04-27[74].
+ 
+ References
+ 
+    1. http://gcc.gnu.org/gcc-11/porting_to.html
+    2. http://gcc.gnu.org/onlinedocs/index.html#current
+    3. https://wg21.link/p0522r0
+    4. https://gcc.gnu.org/pipermail/gcc-patches/2020-May/546494.html
+    5. https://github.com/google/sanitizers/wiki/ThreadSanitizerCppManual
+    6. https://www.kernel.org/doc/html/latest/dev-tools/kcsan.html
+    7. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-column-unit
+    8. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-column-origin
+    9. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-format
+   10. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Preprocessor-Options.html#index-ftabstop
+   11. https://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html
+   12. https://github.com/google/sanitizers/wiki/AddressSanitizer
+   13. https://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html
+   14. http://dwarfstd.org/doc/DWARF5.pdf
+   15. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Optimize-Options.html#index-fipa-modref
+   16. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Optimize-Options.html#index-fipa-ocf
+   17. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Optimize-Options.html#index-fprofile-values
+   18. https://www.openmp.org/specifications/
+   19. https://www.openacc.org/
+   20. https://gcc.gnu.org/wiki/OpenACC/Implementation Status#status-11
+   21. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/libgomp/Enabling-OpenACC.html
+   22. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Common-Function-Attributes.html#index-no_005fstack_005fprotector-function-attribute
+   23. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Common-Function-Attributes.html#index-malloc-function-attribute
+   24. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Warning-Options.html#index-Wmismatched-dealloc
+   25. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-new-delete
+   26. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Warning-Options.html#index-Wfree-nonheap-object
+   27. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Warning-Options.html#index-Wmismatched-dealloc
+   28. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Warning-Options.html#index-Wsizeof-array-div
+   29. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Warning-Options.html#index-Wstringop-overread
+   30. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Warning-Options.html#index-Wtsan
+   31. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Warning-Options.html#index-Wfree-nonheap-object
+   32. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Warning-Options.html#index-Wmaybe-uninitialized
+   33. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Warning-Options.html#index-Wuninitialized
+   34. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Code-Gen-Options.html#index-fno-bit-tests
+   35. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Warning-Options.html#index-Warray-parameter
+   36. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Warning-Options.html#index-Wvla-parameter
+   37. http://gcc.gnu.org/projects/cxx-status.html#cxx20
+   38. http://gcc.gnu.org/projects/cxx-status.html#cxx23
+   39. https://gcc.gnu.org/PR41437
+   40. https://gcc.gnu.org/PR95307
+   41. https://gcc.gnu.org/PR97518
+   42. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wctad-maybe-unsupported
+   43. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wrange-loop-construct
+   44. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-enum-enum-conversion
+   45. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-enum-float-conversion
+   46. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-new-delete
+   47. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wvexing-parse
+   48. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Warning-Options.html#index-Wnonnull
+   49. http://gcc.gnu.org/gcc-5/changes.html#jit
+   50. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/jit/topics/compatibility.html
+   51. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/jit/topics/expressions.html#c.gcc_jit_global_set_initializer
+   52. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/jit/topics/asm.html
+   53. https://developer.arm.com/support/arm-security-updates/speculative-processor-vulnerability/downloads/straight-line-speculation
+   54. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Static-Analyzer-Options.html
+   55. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Static-Analyzer-Options.html
+   56. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Common-Function-Attributes.html#index-malloc-function-attribute
+   57. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-mismatching-deallocation
+   58. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-shift-count-negative
+   59. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-shift-count-overflow
+   60. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-write-to-const
+   61. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-write-to-string-literal
+   62. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Static-Analyzer-Options.html
+   63. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=66dde7bc64b75d4a338266333c9c490b12d49825
+   64. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Static-Analyzer-Options.html#index-fdump-analyzer-json
+   65. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Static-Analyzer-Options.html#index-fno-analyzer-feasibility
+   66. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Environment-Variables.html#index-GCC_005fEXTRA_005fDIAGNOSTIC_005fOUTPUT
+   67. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=11.0
+   68. https://gcc.gnu.org/onlinedocs/
+   69. mailto:gcc-help@gcc.gnu.org
+   70. mailto:gcc@gcc.gnu.org
+   71. https://gcc.gnu.org/lists.html
+   72. https://www.fsf.org/
+   73. https://gcc.gnu.org/about.html
+   74. http://validator.w3.org/check/referer
+ ======================================================================
+ http://gcc.gnu.org/gcc-10/index.html
                               GCC 10 Release Series
  
     April 8, 2021
*************** References
*** 87,93 ****
    20. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-10/changes.html
- 
                               GCC 10 Release Series
                          Changes, New Features, and Fixes
  
--- 801,806 ----
*************** New Languages and Language-Specific Impr
*** 255,263 ****
         the input encoding (UTF-8, by default), in addition to the UCN
         syntax (\uNNNN or \UNNNNNNNN) that is already supported:
  
! static const int p = 3;
! int get_na�ve_pi() {
!   return p;
  }
  
    C
--- 968,976 ----
         the input encoding (UTF-8, by default), in addition to the UCN
         syntax (\uNNNN or \UNNNNNNNN) that is already supported:
  
! static const int π = 3;
! int get_naïve_pi() {
!   return π;
  }
  
    C
*************** typedef svbool_t pred512 __attribute__((
*** 532,538 ****
              one. Previously it would always use SVE if possible.
            + If a vector loop uses Advanced SIMD rather than SVE, the
              vectorizer now considers using SVE to vectorize the left-over
!             elements (the "scalar tail" or "epilog").
            + Besides these specific points, there have been many general
              improvements to the way that the vectorizer uses SVE.
       * The -mbranch-protection=pac-ret option now accepts the optional
--- 1245,1251 ----
              one. Previously it would always use SVE if possible.
            + If a vector loop uses Advanced SIMD rather than SVE, the
              vectorizer now considers using SVE to vectorize the left-over
!             elements (the “scalar tail” or “epilog”).
            + Besides these specific points, there have been many general
              improvements to the way that the vectorizer uses SVE.
       * The -mbranch-protection=pac-ret option now accepts the optional
*************** GCC 10.3
*** 800,805 ****
--- 1513,1523 ----
         for all SVE implementations. Adding -msve-vector-bits=512 makes the
         code specific to 512-bit SVE.
  
+   x86-64
+ 
+      * GCC 10.3 supports AMD CPUs based on the znver3 core via
+        -march=znver3.
+ 
  
      For questions related to the use of GCC, please consult these web
      pages and the [60]GCC manuals. If that fails, the
*************** GCC 10.3
*** 813,819 ****
     provided this notice is preserved.
  
     These pages are [65]maintained by the GCC team. Last modified
!    2021-04-08[66].
  
  References
  
--- 1531,1537 ----
     provided this notice is preserved.
  
     These pages are [65]maintained by the GCC team. Last modified
!    2021-04-21[66].
  
  References
  
*************** References
*** 834,840 ****
    15. https://facebook.github.io/zstd/
    16. https://gcc.gnu.org/onlinedocs/gcc-10.1.0/gcc/Optimize-Options.html#index-fprofile-values
    17. https://www.openacc.org/
!   18. https://gcc.gnu.org/wiki/OpenACC#status-10
    19. https://gcc.gnu.org/onlinedocs/gcc-10.1.0/libgomp/#toc-Enabling-OpenACC-1
    20. https://www.openmp.org/specifications/
    21. https://gcc.gnu.org/wiki/Offloading
--- 1552,1558 ----
    15. https://facebook.github.io/zstd/
    16. https://gcc.gnu.org/onlinedocs/gcc-10.1.0/gcc/Optimize-Options.html#index-fprofile-values
    17. https://www.openacc.org/
!   18. https://gcc.gnu.org/wiki/OpenACC/Implementation Status#status-10
    19. https://gcc.gnu.org/onlinedocs/gcc-10.1.0/libgomp/#toc-Enabling-OpenACC-1
    20. https://www.openmp.org/specifications/
    21. https://gcc.gnu.org/wiki/Offloading
*************** References
*** 885,891 ****
    66. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-9/index.html
- 
                                GCC 9 Release Series
  
     Mar 12, 2020
--- 1603,1608 ----
*************** References
*** 966,972 ****
    20. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-9/changes.html
- 
                                GCC 9 Release Series
                          Changes, New Features, and Fixes
  
--- 1683,1688 ----
*************** GCC 9.4
*** 1732,1738 ****
     provided this notice is preserved.
  
     These pages are [73]maintained by the GCC team. Last modified
!    2021-03-28[74].
  
  References
  
--- 2448,2454 ----
     provided this notice is preserved.
  
     These pages are [73]maintained by the GCC team. Last modified
!    2021-04-19[74].
  
  References
  
*************** References
*** 1771,1777 ****
    33. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Optimize-Options.html#index-ftree-loop-distribution
    34. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Invoking-Gcov.html#Invoking-Gcov
    35. https://www.openacc.org/
!   36. https://gcc.gnu.org/wiki/OpenACC#status-9
    37. https://www.openmp.org/specifications/
    38. https://gcc.gnu.org/ml/gcc-patches/2018-11/msg00628.html
    39. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Vector-Extensions.html#index-_005f_005fbuiltin_005fconvertvector
--- 2487,2493 ----
    33. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Optimize-Options.html#index-ftree-loop-distribution
    34. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Invoking-Gcov.html#Invoking-Gcov
    35. https://www.openacc.org/
!   36. https://gcc.gnu.org/wiki/OpenACC/Implementation Status#status-9
    37. https://www.openmp.org/specifications/
    38. https://gcc.gnu.org/ml/gcc-patches/2018-11/msg00628.html
    39. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Vector-Extensions.html#index-_005f_005fbuiltin_005fconvertvector
*************** References
*** 1812,1818 ****
    74. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-8/index.html
- 
                                GCC 8 Release Series
  
     Mar 4, 2020
--- 2528,2533 ----
*************** References
*** 1898,1904 ****
    22. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-8/changes.html
- 
                                GCC 8 Release Series
                          Changes, New Features, and Fixes
  
--- 2613,2618 ----
*************** void copy (const char *s)
*** 2183,2189 ****
  {
      char buf[80];
      strncpy (buf, s, sizeof buf);
!     ...
  }
  warning: 'strncpy' specified bound 80 equals destination size [-Wstringop-trunca
  tion]
--- 2897,2903 ----
  {
      char buf[80];
      strncpy (buf, s, sizeof buf);
!     …
  }
  warning: 'strncpy' specified bound 80 equals destination size [-Wstringop-trunca
  tion]
*************** void f (void)
*** 2256,2262 ****
  {
      char a[] = "abcd1234";
      strcpy (a, a + 4);
!     ...
  }
  warning: 'strcpy' accessing 5 bytes at offsets 0 and 4 overlaps 1 byte at offset
   4 [-Wrestrict]
--- 2970,2976 ----
  {
      char a[] = "abcd1234";
      strcpy (a, a + 4);
!     …
  }
  warning: 'strcpy' accessing 5 bytes at offsets 0 and 4 overlaps 1 byte at offset
   4 [-Wrestrict]
*************** References
*** 3023,3029 ****
    44. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-7/index.html
- 
                                GCC 7 Release Series
  
     Nov 14, 2019
--- 3737,3742 ----
*************** References
*** 3114,3120 ****
    24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-7/changes.html
- 
                                GCC 7 Release Series
                          Changes, New Features, and Fixes
  
--- 3827,3832 ----
*************** void f (int n)
*** 3483,3489 ****
      d = alloca (n);
    else
      d = malloc (n);
!   ...
  }
  
  warning: argument to 'alloca may be too large due to conversion from 'int' to 'l
--- 4195,4201 ----
      d = alloca (n);
    else
      d = malloc (n);
!   …
  }
  
  warning: argument to 'alloca may be too large due to conversion from 'int' to 'l
*************** ong unsigned int' [-Walloca-larger-than=
*** 3496,3502 ****
  void f (size_t n)
  {
    char *d = alloca (n);
!   ...
  }
  
  warning: unbounded use of 'alloca' [-Walloca-larger-than=]
--- 4208,4214 ----
  void f (size_t n)
  {
    char *d = alloca (n);
!   …
  }
  
  warning: unbounded use of 'alloca' [-Walloca-larger-than=]
*************** void f (unsigned x)
*** 3544,3550 ****
  {
    char d[4];
    snprintf (d, sizeof d, "%#02x", x & 0xff);
!   ...
  }
  
  warning: 'snprintf' output may be truncated before the last format character [-W
--- 4256,4262 ----
  {
    char d[4];
    snprintf (d, sizeof d, "%#02x", x & 0xff);
!   …
  }
  
  warning: 'snprintf' output may be truncated before the last format character [-W
*************** void f (const char *fname)
*** 3572,3578 ****
    char d[8];
    strncpy (d, "/tmp/", sizeof d);
    strncat (d, fname, sizeof d);
!   ...
  }
  
  warning: specified bound 8 equals the size of the destination [-Wstringop-overfl
--- 4284,4290 ----
    char d[8];
    strncpy (d, "/tmp/", sizeof d);
    strncat (d, fname, sizeof d);
!   …
  }
  
  warning: specified bound 8 equals the size of the destination [-Wstringop-overfl
*************** test.cc:4:11: error: expected ';' after
*** 3710,3719 ****
            + std::as_const, std::not_fn,
              std::has_unique_object_representations, constexpr
              std::addressof.
!        Thanks to Daniel Kr�gler, Tim Shen, Edward Smith-Rowland, and Ville
         Voutilainen for work on the C++17 support.
       * A new power-of-two rehashing policy for use with the _Hashtable
!        internals, thanks to Fran�ois Dumont.
  
    Fortran
  
--- 4422,4431 ----
            + std::as_const, std::not_fn,
              std::has_unique_object_representations, constexpr
              std::addressof.
!        Thanks to Daniel Krügler, Tim Shen, Edward Smith-Rowland, and Ville
         Voutilainen for work on the C++17 support.
       * A new power-of-two rehashing policy for use with the _Hashtable
!        internals, thanks to François Dumont.
  
    Fortran
  
*************** const int* get_address (unsigned idx)
*** 3883,3889 ****
  }
  
       * A new command-line option -Wmisspelled-isr has been added. It turns
!        off -- or turns into errors -- warnings that are reported for
         interrupt service routines (ISRs) which don't follow AVR-LibC's
         naming convention of prefixing ISR names with __vector.
       * __builtin_avr_nops(n) is a new [18]built-in function that inserts n
--- 4595,4601 ----
  }
  
       * A new command-line option -Wmisspelled-isr has been added. It turns
!        off — or turns into errors — warnings that are reported for
         interrupt service routines (ISRs) which don't follow AVR-LibC's
         naming convention of prefixing ISR names with __vector.
       * __builtin_avr_nops(n) is a new [18]built-in function that inserts n
*************** References
*** 4223,4229 ****
    35. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-6/index.html
- 
                                GCC 6 Release Series
  
     (This release series is no longer supported.)
--- 4935,4940 ----
*************** References
*** 4316,4322 ****
    24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-6/changes.html
- 
                                GCC 6 Release Series
                          Changes, New Features, and Fixes
  
--- 5027,5032 ----
*************** References
*** 5064,5070 ****
    33. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-5/index.html
- 
                                GCC 5 Release Series
  
     (This release series is no longer supported.)
--- 5774,5779 ----
*************** References
*** 5157,5163 ****
    24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-5/changes.html
- 
                                GCC 5 Release Series
                          Changes, New Features, and Fixes
  
--- 5866,5871 ----
*************** References
*** 6045,6051 ****
     1. http://gcc.gnu.org/gcc-5/changes.html#libstdcxx
     2. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
     3. https://savannah.nongnu.org/bugs/?44574
!    4. https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler
     5. https://www.openmp.org/wp-content/uploads/OpenMP4.0.0.pdf
     6. https://www.openmp.org/wp-content/uploads/OpenMP4.0.0.Examples.pdf
     7. https://gcc.gnu.org/wiki/OpenACC
--- 6753,6759 ----
     1. http://gcc.gnu.org/gcc-5/changes.html#libstdcxx
     2. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
     3. https://savannah.nongnu.org/bugs/?44574
!    4. https://gcc.gnu.org/wiki/Intel MPX support in the GCC compiler
     5. https://www.openmp.org/wp-content/uploads/OpenMP4.0.0.pdf
     6. https://www.openmp.org/wp-content/uploads/OpenMP4.0.0.Examples.pdf
     7. https://gcc.gnu.org/wiki/OpenACC
*************** References
*** 6096,6102 ****
    52. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.9/index.html
- 
                               GCC 4.9 Release Series
  
     (This release series is no longer supported.)
--- 6804,6809 ----
*************** References
*** 6189,6195 ****
    24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.9/changes.html
- 
                               GCC 4.9 Release Series
                          Changes, New Features, and Fixes
  
--- 6896,6901 ----
*************** New Languages and Language specific impr
*** 6303,6323 ****
         -fdiagnostics-color=never.
         Sample diagnostics output:
      $ g++ -fdiagnostics-color=always -S -Wall test.C
!     test.C: In function `int foo()':
      test.C:1:14: warning: no return statement in function returning non-void [-W
  return-type]
       int foo () { }
                    ^
      test.C:2:46: error: template instantiation depth exceeds maximum of 900 (use
!  -ftemplate-depth= to increase the maximum) instantiating `struct X<100>'
       template <int N> struct X { static const int value = X<N-1>::value; }; temp
  late struct X<1000>;
                                                    ^
!     test.C:2:46:   recursively required from `const int X<999>::value'
!     test.C:2:46:   required from `const int X<1000>::value'
      test.C:2:88:   required from here
  
!     test.C:2:46: error: incomplete type `X<100>' used in nested name specifier
  
       * With the new [7]#pragma GCC ivdep, the user can assert that there
         are no loop-carried dependencies which would prevent concurrent
--- 7009,7029 ----
         -fdiagnostics-color=never.
         Sample diagnostics output:
      $ g++ -fdiagnostics-color=always -S -Wall test.C
!     test.C: In function ‘int foo()’:
      test.C:1:14: warning: no return statement in function returning non-void [-W
  return-type]
       int foo () { }
                    ^
      test.C:2:46: error: template instantiation depth exceeds maximum of 900 (use
!  -ftemplate-depth= to increase the maximum) instantiating ‘struct X<100>’
       template <int N> struct X { static const int value = X<N-1>::value; }; temp
  late struct X<1000>;
                                                    ^
!     test.C:2:46:   recursively required from ‘const int X<999>::value’
!     test.C:2:46:   required from ‘const int X<1000>::value’
      test.C:2:88:   required from here
  
!     test.C:2:46: error: incomplete type ‘X<100>’ used in nested name specifier
  
       * With the new [7]#pragma GCC ivdep, the user can assert that there
         are no loop-carried dependencies which would prevent concurrent
*************** auto incr = [](auto x) { return x++; };
*** 6422,6429 ****
  // a functional object that will add two like-type objects
  auto add = [] <typename T> (T a, T b) { return a + b; };
  
!      * G++ supports unconstrained generic functions as specified by �4.1.2
!        and �5.1.1 of [15]N3889: Concepts Lite Specification. Briefly, auto
         may be used as a type-specifier in a parameter declaration of any
         function declarator in order to introduce an implicit function
         template parameter, akin to generic lambdas.
--- 7128,7135 ----
  // a functional object that will add two like-type objects
  auto add = [] <typename T> (T a, T b) { return a + b; };
  
!      * G++ supports unconstrained generic functions as specified by §4.1.2
!        and §5.1.1 of [15]N3889: Concepts Lite Specification. Briefly, auto
         may be used as a type-specifier in a parameter declaration of any
         function declarator in order to introduce an implicit function
         template parameter, akin to generic lambdas.
*************** auto incr(T x) { return x++; }
*** 6516,6522 ****
         be used as argument to ISO_C_BINDING's C_LOC and as actual argument
         to another NO_ARG_CHECK dummy argument; also the other constraints
         of TYPE(*) apply. The dummy arguments should be declared as scalar
!        or assumed-size variable of type type(*) (recommended) - or of type
         integer, real, complex or logical. With NO_ARG_CHECK, a pointer to
         the data without further type or shape information is passed,
         similar to C's void*. Note that also TS 29113's
--- 7222,7228 ----
         be used as argument to ISO_C_BINDING's C_LOC and as actual argument
         to another NO_ARG_CHECK dummy argument; also the other constraints
         of TYPE(*) apply. The dummy arguments should be declared as scalar
!        or assumed-size variable of type type(*) (recommended) – or of type
         integer, real, complex or logical. With NO_ARG_CHECK, a pointer to
         the data without further type or shape information is passed,
         similar to C's void*. Note that also TS 29113's
*************** References
*** 6839,6845 ****
    34. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.8/index.html
- 
                               GCC 4.8 Release Series
  
     (This release series is no longer supported.)
--- 7545,7550 ----
*************** References
*** 6937,6943 ****
    26. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.8/changes.html
- 
                               GCC 4.8 Release Series
                          Changes, New Features, and Fixes
  
--- 7642,7647 ----
*************** New Languages and Language specific impr
*** 7066,7073 ****
         diagnostics. Combined with the caret information, an example
         diagnostic showing these two features is:
  
! t.c:1:94: error: invalid operands to binary < (have `struct mystruct' and `float
! ')
   #define MYMAX(A,B)    __extension__ ({ __typeof__(A) __a = (A); __typeof__(B) _
  _b = (B); __a < __b ? __b : __a; })
  
--- 7770,7777 ----
         diagnostics. Combined with the caret information, an example
         diagnostic showing these two features is:
  
! t.c:1:94: error: invalid operands to binary < (have ‘struct mystruct’ and ‘float
! ’)
   #define MYMAX(A,B)    __extension__ ({ __typeof__(A) __a = (A); __typeof__(B) _
  _b = (B); __a < __b ? __b : __a; })
  
*************** int i = A().f();  // error, f() requires
*** 7191,7198 ****
              older versions except as noted below.
            + ABI: Some internal names (used in the assembler/object file)
              have changed for symbols declared in the specification part of
!             a module. If an affected module - or a file using it via use
!             association - is recompiled, the module and all files which
              directly use such symbols have to be recompiled as well. This
              change only affects the following kind of module symbols:
                 o Procedure pointers. Note: C-interoperable function
--- 7895,7902 ----
              older versions except as noted below.
            + ABI: Some internal names (used in the assembler/object file)
              have changed for symbols declared in the specification part of
!             a module. If an affected module – or a file using it via use
!             association – is recompiled, the module and all files which
              directly use such symbols have to be recompiled as well. This
              change only affects the following kind of module symbols:
                 o Procedure pointers. Note: C-interoperable function
*************** int i = A().f();  // error, f() requires
*** 7219,7225 ****
       * The [21]-Wcompare-reals command-line option has been added. When
         this is set, warnings are issued when comparing REAL or COMPLEX
         types for equality and inequality; consider replacing a == b by
!        abs(a-b) < eps with a suitable eps. -Wcompare-reals is enabled by
         -Wextra.
       * The [22]-Wtarget-lifetime command-line option has been added
         (enabled with -Wall), which warns if the pointer in a pointer
--- 7923,7929 ----
       * The [21]-Wcompare-reals command-line option has been added. When
         this is set, warnings are issued when comparing REAL or COMPLEX
         types for equality and inequality; consider replacing a == b by
!        abs(a−b) < eps with a suitable eps. -Wcompare-reals is enabled by
         -Wextra.
       * The [22]-Wtarget-lifetime command-line option has been added
         (enabled with -Wall), which warns if the pointer in a pointer
*************** int i = A().f();  // error, f() requires
*** 7231,7237 ****
         4.0e0).
         (For Fortran source code, consider replacing the "q" in
         floating-point literals by a kind parameter (e.g. 4.0e0_qp with a
!        suitable qp). Note that - in Fortran source code - replacing "q" by
         a simple "e" is not equivalent.)
       * The GFORTRAN_TMPDIR environment variable for specifying a
         non-default directory for files opened with STATUS="SCRATCH", is
--- 7935,7941 ----
         4.0e0).
         (For Fortran source code, consider replacing the "q" in
         floating-point literals by a kind parameter (e.g. 4.0e0_qp with a
!        suitable qp). Note that – in Fortran source code – replacing "q" by
         a simple "e" is not equivalent.)
       * The GFORTRAN_TMPDIR environment variable for specifying a
         non-default directory for files opened with STATUS="SCRATCH", is
*************** New Targets and Target Specific Improvem
*** 7326,7333 ****
      }
         The inline assembler in this example will generate code like
      mov r24, 8+7
!        provided c is allocated to R24 and val is allocated to R8...R15.
!        This works because the GNU assembler accepts plain register numbers
         without register prefix.
       * Static initializers with 3-byte symbols are supported now:
      extern const __memx char foo;
--- 8030,8037 ----
      }
         The inline assembler in this example will generate code like
      mov r24, 8+7
!        provided c is allocated to R24 and val is allocated to R8…R15. This
!        works because the GNU assembler accepts plain register numbers
         without register prefix.
       * Static initializers with 3-byte symbols are supported now:
      extern const __memx char foo;
*************** References
*** 7711,7717 ****
    44. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.7/index.html
- 
                               GCC 4.7 Release Series
  
     (This release series is no longer supported.)
--- 8415,8420 ----
*************** References
*** 7804,7810 ****
    24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.7/changes.html
- 
                               GCC 4.7 Release Series
                          Changes, New Features, and Fixes
  
--- 8507,8512 ----
*************** long double pi = 180.0_degrees;
*** 8135,8141 ****
  template <class T> using Ptr = T*;
  Ptr<int> ip;  // decltype(ip) is int*
  
!      * Thanks to Ville Voutilainen and Pedro Lamar�o, G++ now implements
         [12]C++11 delegating constructors.
  
  struct A {
--- 8837,8843 ----
  template <class T> using Ptr = T*;
  Ptr<int> ip;  // decltype(ip) is int*
  
!      * Thanks to Ville Voutilainen and Pedro Lamarão, G++ now implements
         [12]C++11 delegating constructors.
  
  struct A {
*************** New Targets and Target Specific Improvem
*** 8329,8335 ****
  
       * GCC now supports the XMEGA architecture. This requires GNU binutils
         2.22 or later.
!      * Support for the [35]named address spaces __flash, __flash1, ...,
         __flash5 and __memx has been added. These address spaces locate
         read-only data in flash memory and allow reading from flash memory
         by means of ordinary C code, i.e. without the need of (inline)
--- 9031,9037 ----
  
       * GCC now supports the XMEGA architecture. This requires GNU binutils
         2.22 or later.
!      * Support for the [35]named address spaces __flash, __flash1, …,
         __flash5 and __memx has been added. These address spaces locate
         read-only data in flash memory and allow reading from flash memory
         by means of ordinary C code, i.e. without the need of (inline)
*************** void set_portb (uint8_t value)
*** 8373,8379 ****
         suitable to be used as operand in an I/O command. The address must
         be a constant integer known at compile time.
       * The inline assembler constraint "R" to represent integers in the
!        range -6 ... 5 has been removed without replacement.
       * Many optimizations to:
            + 64-bit integer arithmetic
            + Widening multiplication
--- 9075,9081 ----
         suitable to be used as operand in an I/O command. The address must
         be a constant integer known at compile time.
       * The inline assembler constraint "R" to represent integers in the
!        range −6 … 5 has been removed without replacement.
       * Many optimizations to:
            + 64-bit integer arithmetic
            + Widening multiplication
*************** void set_portb (uint8_t value)
*** 8385,8391 ****
            + If-else decision trees generated by switch instructions
            + Merging of data located in flash memory
            + New libgcc variants for devices with 8-bit wide stack pointer
!           + ...
       * Better documentation:
            + Handling of EIND and indirect jumps on devices with more than
              128 KiB of program memory.
--- 9087,9093 ----
            + If-else decision trees generated by switch instructions
            + Merging of data located in flash memory
            + New libgcc variants for devices with 8-bit wide stack pointer
!           + …
       * Better documentation:
            + Handling of EIND and indirect jumps on devices with more than
              128 KiB of program memory.
*************** References
*** 8637,8643 ****
    35. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html
    36. http://nongnu.org/avr-libc/
    37. https://gcc.gnu.org/PR54461
!   38. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built%5f002din-Functions.html
    39. https://sites.google.com/site/x32abi/
    40. http://www.dwarfstd.org/ShowIssue.php?issue=100909.1
    41. http://www.dwarfstd.org/ShowIssue.php?issue=100909.2
--- 9339,9345 ----
    35. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html
    36. http://nongnu.org/avr-libc/
    37. https://gcc.gnu.org/PR54461
!   38. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built_002din-Functions.html
    39. https://sites.google.com/site/x32abi/
    40. http://www.dwarfstd.org/ShowIssue.php?issue=100909.1
    41. http://www.dwarfstd.org/ShowIssue.php?issue=100909.2
*************** References
*** 8657,8663 ****
    55. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.6/index.html
- 
                               GCC 4.6 Release Series
  
     (This release series is no longer supported.)
--- 9359,9364 ----
*************** References
*** 8750,8756 ****
    24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.6/changes.html
- 
                               GCC 4.6 Release Series
                          Changes, New Features, and Fixes
  
--- 9451,9456 ----
*************** New Languages and Language specific impr
*** 9090,9096 ****
  
       * [12]Improved experimental support for the upcoming ISO C++
         standard, C++0x, including using constexpr and nullptr.
!      * Performance improvements to the [13]Debug Mode, thanks to Fran�ois
         Dumont.
       * Atomic operations used for reference-counting are annotated so that
         they can be understood by race detectors such as Helgrind, see
--- 9790,9796 ----
  
       * [12]Improved experimental support for the upcoming ISO C++
         standard, C++0x, including using constexpr and nullptr.
!      * Performance improvements to the [13]Debug Mode, thanks to François
         Dumont.
       * Atomic operations used for reference-counting are annotated so that
         they can be understood by race detectors such as Helgrind, see
*************** New Languages and Language specific impr
*** 9145,9151 ****
              allocated (if unallocated) or reallocated (if the shape or
              type parameter is different). To avoid the small performance
              penalty, you can use a(:) = ... instead of a = ... for arrays
!             and character strings - or disable the feature using -std=f95
              or -fno-realloc-lhs.
            + Deferred type parameter: For scalar allocatable and pointer
              variables the character length can be deferred.
--- 9845,9851 ----
              allocated (if unallocated) or reallocated (if the shape or
              type parameter is different). To avoid the small performance
              penalty, you can use a(:) = ... instead of a = ... for arrays
!             and character strings – or disable the feature using -std=f95
              or -fno-realloc-lhs.
            + Deferred type parameter: For scalar allocatable and pointer
              variables the character length can be deferred.
*************** New Languages and Language specific impr
*** 9200,9206 ****
              be declared in a single PROCEDURE statement; implied-shape
              arrays are supported for named constants (PARAMETER). The
              transformational, three argument versions of BESSEL_JN and
!             BESSEL_YN were added - the elemental, two-argument version had
              been added in GCC 4.4; note that the transformational
              functions use a recurrence algorithm.
  
--- 9900,9906 ----
              be declared in a single PROCEDURE statement; implied-shape
              arrays are supported for named constants (PARAMETER). The
              transformational, three argument versions of BESSEL_JN and
!             BESSEL_YN were added – the elemental, two-argument version had
              been added in GCC 4.4; note that the transformational
              functions use a recurrence algorithm.
  
*************** References
*** 9681,9687 ****
    30. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.5/index.html
- 
                               GCC 4.5 Release Series
  
     (This release series is no longer supported.)
--- 10381,10386 ----
*************** References
*** 9769,9775 ****
    19. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.5/changes.html
- 
                               GCC 4.5 Release Series
                          Changes, New Features, and Fixes
  
--- 10468,10473 ----
*************** New Languages and Language specific impr
*** 10006,10012 ****
         defined ([12]DR 757).
       * Labels may now have attributes, as has been permitted for a while
         in C. This is only permitted when the label definition and the
!        attribute specifier is followed by a semicolon--i.e., the label
         applies to an empty statement. The only useful attribute for a
         label is unused.
       * G++ now implements [13]DR 176. Previously G++ did not support using
--- 10704,10710 ----
         defined ([12]DR 757).
       * Labels may now have attributes, as has been permitted for a while
         in C. This is only permitted when the label definition and the
!        attribute specifier is followed by a semicolon—i.e., the label
         applies to an empty statement. The only useful attribute for a
         label is unused.
       * G++ now implements [13]DR 176. Previously G++ did not support using
*************** vector-size: improvement = 3: call stack
*** 10088,10094 ****
  
    Fortran
  
!      * The COMMON default padding has been changed - instead of adding the
         padding before a variable it is now added afterwards, which
         increases the compatibility with other vendors and helps to obtain
         the correct output in some cases. Cf. also the -falign-commons
--- 10786,10792 ----
  
    Fortran
  
!      * The COMMON default padding has been changed – instead of adding the
         padding before a variable it is now added afterwards, which
         increases the compatibility with other vendors and helps to obtain
         the correct output in some cases. Cf. also the -falign-commons
*************** References
*** 10456,10462 ****
    33. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.4/index.html
- 
                               GCC 4.4 Release Series
  
     This release series is no longer maintained.
--- 11154,11159 ----
*************** References
*** 10556,10562 ****
    22. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.4/changes.html
- 
                               GCC 4.4 Release Series
                          Changes, New Features, and Fixes
  
--- 11253,11258 ----
*************** References
*** 11189,11195 ****
    24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.3/index.html
- 
                               GCC 4.3 Release Series
  
     (This release series is no longer supported.)
--- 11885,11890 ----
*************** References
*** 11285,11291 ****
    21. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.3/changes.html
- 
                               GCC 4.3 Release Series
                          Changes, New Features, and Fixes
  
--- 11980,11985 ----
*************** References
*** 12101,12107 ****
    31. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.2/index.html
- 
                               GCC 4.2 Release Series
  
     (This release series is no longer supported.)
--- 12795,12800 ----
*************** References
*** 12189,12195 ****
    19. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.2/changes.html
- 
                               GCC 4.2 Release Series
                          Changes, New Features, and Fixes
  
--- 12882,12887 ----
*************** References
*** 12511,12517 ****
    12. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.1/index.html
- 
                               GCC 4.1 Release Series
  
     (This release series is no longer supported.)
--- 13203,13208 ----
*************** References
*** 12591,12597 ****
    17. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.1/changes.html
- 
                               GCC 4.1 Release Series
                          Changes, New Features, and Fixes
  
--- 13282,13287 ----
*************** References
*** 13151,13157 ****
    13. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.0/index.html
- 
                               GCC 4.0 Release Series
  
     (This release series is no longer supported.)
--- 13841,13846 ----
*************** References
*** 13239,13245 ****
    19. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.0/changes.html
- 
                               GCC 4.0 Release Series
                          Changes, New Features, and Fixes
  
--- 13928,13933 ----
*************** References
*** 13769,13775 ****
    22. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.4/index.html
- 
                               GCC 3.4 Release Series
  
     (This release series is no longer supported.)
--- 14457,14462 ----
*************** References
*** 13872,13878 ****
    23. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.4/changes.html
- 
                               GCC 3.4 Release Series
                          Changes, New Features, and Fixes
  
--- 14559,14564 ----
*************** References
*** 15645,15651 ****
     7. https://www.boost.org/
     8. https://gcc.gnu.org/PR11953
     9. https://gcc.gnu.org/PR8361
!   10. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other%20Builtins
    11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#209
    12. http://gcc.gnu.org/bugs/#cxx_rvalbind
    13. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
--- 16331,16337 ----
     7. https://www.boost.org/
     8. https://gcc.gnu.org/PR11953
     9. https://gcc.gnu.org/PR8361
!   10. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other Builtins
    11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#209
    12. http://gcc.gnu.org/bugs/#cxx_rvalbind
    13. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
*************** References
*** 15661,15667 ****
    23. http://gcc.gnu.org/gcc-3.4/mips-abi.html
    24. http://gcc.gnu.org/gcc-3.4/powerpc-abi.html
    25. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
!   26. https://gcc.gnu.org/bugzilla/buglist.cgi?short_desc_type=notregexp&short_desc=%5C%5B3%5C.4.*%5BRr%5Degression&target_milestone=3.4.0&bug_status=RESOLVED&resolution=FIXED
    27. https://gcc.gnu.org/PR10129
    28. https://gcc.gnu.org/PR14576
    29. https://gcc.gnu.org/PR14760
--- 16347,16353 ----
    23. http://gcc.gnu.org/gcc-3.4/mips-abi.html
    24. http://gcc.gnu.org/gcc-3.4/powerpc-abi.html
    25. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
!   26. https://gcc.gnu.org/bugzilla/buglist.cgi?short_desc_type=notregexp&short_desc=\[3\.4.*[Rr]egression&target_milestone=3.4.0&bug_status=RESOLVED&resolution=FIXED
    27. https://gcc.gnu.org/PR10129
    28. https://gcc.gnu.org/PR14576
    29. https://gcc.gnu.org/PR14760
*************** References
*** 16055,16061 ****
   417. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.3/index.html
- 
                               GCC 3.3 Release Series
  
     (This release series is no longer supported.)
--- 16741,16746 ----
*************** References
*** 16157,16163 ****
    22. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.3/changes.html
- 
                               GCC 3.3 Release Series
                          Changes, New Features, and Fixes
  
--- 16842,16847 ----
*************** References
*** 18068,18074 ****
   557. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.2/index.html
- 
                               GCC 3.2 Release Series
  
     (This release series is no longer supported.)
--- 18752,18757 ----
*************** References
*** 18160,18166 ****
    18. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.2/changes.html
- 
                               GCC 3.2 Release Series
                          Changes, New Features, and Fixes
  
--- 18843,18848 ----
*************** References
*** 19018,19024 ****
   252. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.1/index.html
- 
                                      GCC 3.1
  
     (This release series is no longer supported.)
--- 19700,19705 ----
*************** References
*** 19087,19093 ****
    15. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.1/changes.html
- 
                               GCC 3.1 Release Series
                          Changes, New Features, and Fixes
  
--- 19768,19773 ----
*************** New Targets and Target Specific Improvem
*** 19305,19311 ****
            + For those targets that support it, -mfpmath=sse will cause the
              compiler to generate SSE/SSE2 instructions for floating point
              math instead of x87 instructions. Usually, this will lead to
!             quicker code -- especially on the Pentium 4. Note that only
              scalar floating point instructions are used and GCC does not
              exploit SIMD features yet.
            + Prefetch support has been added to the Pentium III, Pentium 4,
--- 19985,19991 ----
            + For those targets that support it, -mfpmath=sse will cause the
              compiler to generate SSE/SSE2 instructions for floating point
              math instead of x87 instructions. Usually, this will lead to
!             quicker code — especially on the Pentium 4. Note that only
              scalar floating point instructions are used and GCC does not
              exploit SIMD features yet.
            + Prefetch support has been added to the Pentium III, Pentium 4,
*************** References
*** 19441,19447 ****
    14. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.0/index.html
- 
                                     GCC 3.0.4
  
     (This release series is no longer supported.)
--- 20121,20126 ----
*************** References
*** 19517,19523 ****
    15. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.0/features.html
- 
                                GCC 3.0 New Features
  
  Additional changes in GCC 3.0.4
--- 20196,20201 ----
*************** References
*** 19713,19719 ****
    19. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.0/caveats.html
- 
                                  GCC 3.0 Caveats
  
       * -fstrict-aliasing is now part of -O2 and higher optimization
--- 20391,20396 ----
*************** References
*** 19774,19780 ****
     8. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-2.95/index.html
- 
                                      GCC 2.95
  
     (This release series is no longer supported.)
--- 20451,20456 ----
*************** References
*** 19865,19871 ****
    16. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-2.95/features.html
- 
                               GCC 2.95 New Features
  
       * General Optimizer Improvements:
--- 20541,20546 ----
*************** References
*** 20138,20144 ****
    23. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-2.95/caveats.html
- 
                                  GCC 2.95 Caveats
  
       * GCC 2.95 will issue an error for invalid asm statements that had
--- 20813,20818 ----
*************** References
*** 20207,20213 ****
     8. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.1/index.html
- 
                                      EGCS 1.1
  
     September 3, 1998: We are pleased to announce the release of EGCS 1.1.
--- 20881,20886 ----
*************** References
*** 20437,20443 ****
    16. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.1/features.html
- 
                               EGCS 1.1 new features
  
       * Integrated GNU Fortran (g77) compiler and runtime library with
--- 21110,21115 ----
*************** References
*** 20532,20538 ****
    11. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.1/caveats.html
- 
                                  EGCS 1.1 Caveats
  
       * EGCS has an integrated libstdc++, but does not have an integrated
--- 21204,21209 ----
*************** References
*** 20583,20589 ****
     7. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.0/index.html
- 
                                      EGCS 1.0
  
     December 3, 1997: We are pleased to announce the release of EGCS 1.0.
--- 21254,21259 ----
*************** References
*** 20784,20790 ****
    11. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.0/features.html
- 
                                 EGCS 1.0 features
  
       * Core compiler is based on the gcc2 development tree from Aug 2,
--- 21454,21459 ----
*************** References
*** 20849,20855 ****
     9. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.0/caveats.html
- 
                                  EGCS 1.0 Caveats
  
       * EGCS has an integrated libstdc++, but does not have an integrated
--- 21518,21523 ----
diff -Nrcpad gcc-10.3.0/c++tools/ChangeLog gcc-11.1.0/c++tools/ChangeLog
*** gcc-10.3.0/c++tools/ChangeLog	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/c++tools/ChangeLog	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,92 ----
+ 2021-04-27  Release Manager
+ 
+ 	* GCC 11.1.0 released.
+ 
+ 2021-04-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* resolver.h: Do not include std headers directly when
+ 	building in GCC.
+ 
+ 2021-02-25  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* server.cc: Use #if NETWORKING not #ifdef, to be consistent
+ 	with elsewhere.
+ 
+ 2021-01-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR c++/98316
+ 	* configure.ac: Include ../config/ax_lib_socket_nsl.m4.
+ 	(NETLIBS): Determine using AX_LIB_SOCKET_NSL.
+ 	* configure: Regenerate.
+ 	* Makefile.in (NETLIBS): Define.
+ 	(g++-mapper-server$(exeext)): Add $(NETLIBS).
+ 
+ 2021-01-04  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* resolver.cc (module_resolver::cmi_response): Remove
+ 	std::move of temporary.
+ 
+ 2020-12-23  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	PR bootstrap/98324
+ 	* Makefile.in: Add FLAGPIE.
+ 	* configure.ac: Add --enable-default-pie support.
+ 	* configure: Rebuilt.
+ 
+ 2020-12-21  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	PR other/98409
+ 	* Makefile.in: Fix exeext variable case.
+ 
+ 2020-12-17  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* server.cc (crash_signal): Don't use strsignal.
+ 
+ 2020-12-17  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	PR bootstrap/98300
+ 	* configure.ac: Check for sys/mman.h.
+ 	* resolver.cc: Don't assume mmap, O_CLOEXEC are available.  Use
+ 	xmalloc.
+ 	* config.h.in: Regenerated.
+ 	* configure: Regenerated.
+ 
+ 2020-12-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* configure.ac: Add GCC_BASE_VER.
+ 	* Makefile.in (version): Remove variable.
+ 	(gcc_version): New variable.
+ 	(libexecsubdir): Use $(gcc_version) instead of $(version).
+ 	* configure: Regenerated.
+ 
+ 2020-12-16  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* Makefile.in (INSTALL): Replace with ...
+ 	(INSTALL_PROGRAM): ... this.
+ 	(INSTALL_STRIP_PROGRAM): New.
+ 	(install-strip): New target.
+ 	(install): Use INSTALL_PROGRAM.
+ 	* configure.ac: Add INSTALL_PROGRAM.
+ 	* configure: Regenerated.
+ 
+ 2020-12-16  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* Makefile.in (install): Do not use -p, use mkinstalldirs.
+ 	(clean): Fix typo.
+ 
+ 2020-12-15  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* Makefile.in: New.
+ 	* config.h.in: New.
+ 	* configure: New.
+ 	* configure.ac: New.
+ 	* resolver.cc: New.
+ 	* resolver.h: New.
+ 	* server.cc: New.
+ 
+ 
+ Copyright (C) 2020-2021 Free Software Foundation, Inc.
+ 
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved.
diff -Nrcpad gcc-10.3.0/c++tools/Makefile.in gcc-11.1.0/c++tools/Makefile.in
*** gcc-10.3.0/c++tools/Makefile.in	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/c++tools/Makefile.in	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,136 ----
+ # Makefile for c++tools
+ #   Copyright 2020 Free Software Foundation, Inc.
+ #
+ # This file 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 of the License, or
+ # (at your option) any later version.
+ # 
+ # This program 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 this program; see the file COPYING3.  If not see
+ # <http://www.gnu.org/licenses/>.
+ 
+ srcdir := @srcdir@
+ prefix := @prefix@
+ bindir := @bindir@
+ libexecdir := @libexecdir@
+ target_noncanonical := @target_noncanonical@
+ gcc_version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER)
+ libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
+ INSTALL_PROGRAM := @INSTALL_PROGRAM@
+ INSTALL_STRIP_PROGRAM := $(srcdir)/../install-sh -c -s
+ AUTOCONF := @AUTOCONF@
+ AUTOHEADER := @AUTOHEADER@
+ CXX := @CXX@
+ CXXFLAGS := @CXXFLAGS@
+ PIEFLAG := @PIEFLAG@
+ CXXOPTS := $(CXXFLAGS) $(PIEFLAG) -fno-exceptions -fno-rtti
+ LDFLAGS := @LDFLAGS@
+ exeext := @EXEEXT@
+ LIBIBERTY := ../libiberty/libiberty.a
+ NETLIBS := @NETLIBS@
+ VERSION.O := ../gcc/version.o
+ 
+ all::
+ 
+ mostlyclean::
+ 	rm -f $(MAPPER.O)
+ 
+ clean::
+ 	rm -f g++-mapper-server$(exeext)
+ 
+ distclean::
+ 	rm -f config.log config.status config.h
+ 
+ maintainer-clean::
+ 
+ install::
+ 
+ check::
+ installcheck::
+ dvi::
+ pdf::
+ html::
+ info::
+ install-info::
+ install-pdf::
+ install-man::
+ install-html::
+ 
+ install-strip: override INSTALL_PROGRAM = $(INSTALL_STRIP_PROGRAM)
+ ifneq ($(STRIP),)
+ install-strip: STRIPPROG = $(STRIP)
+ export STRIPPROG
+ endif
+ install-strip: install
+ 
+ vpath %.cc $(srcdir)
+ vpath %.in $(srcdir)
+ .SUFFIXES:
+ .SUFFIXES: .cc .o
+ 
+ # Per-source & per-directory compile flags (warning: recursive)
+ SRC_CXXFLAGS = $(CXXFLAGS$(patsubst $(srcdir)%,%,$1)) \
+ 	$(if $(filter-out $(srcdir)/,$1),\
+ 	  $(call $0,$(dir $(patsubst %/,%,$1))))
+ 
+ %.o: %.cc
+ 	$(CXX) $(strip $(CXXOPTS) $(call SRC_CXXFLAGS,$<) $(CXXINC)) \
+ 	  -MMD -MP -MF ${@:.o=.d} -c -o $@ $<
+ 
+ ifeq (@CXX_AUX_TOOLS@,yes)
+ 
+ all::g++-mapper-server$(exeext)
+ 
+ MAPPER.O := server.o resolver.o
+ CODYLIB = ../libcody/libcody.a
+ CXXINC += -I$(srcdir)/../libcody -I$(srcdir)/../include -I$(srcdir)/../gcc -I.
+ g++-mapper-server$(exeext): $(MAPPER.O) $(CODYLIB)
+ 	+$(CXX) $(LDFLAGS) $(PIEFLAG) -o $@ $^ $(VERSION.O) $(LIBIBERTY) $(NETLIBS)
+ 
+ # copy to gcc dir so tests there can run
+ all::../gcc/g++-mapper-server$(exeext)
+ 
+ ../gcc/g++-mapper-server$(exeext): g++-mapper-server$(exeext)
+ 	$(INSTALL) $< $@
+ 
+ install::
+ 	$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(libexecsubdir)
+ 	$(INSTALL_PROGRAM) g++-mapper-server$(exeext) $(DESTDIR)$(libexecsubdir)
+ endif
+ 
+ ifneq ($(MAINTAINER),)
+ override MAINTAINER += $1
+ endif
+ ifeq (@MAINTAINER@,yes)
+ MAINTAINER = $2
+ else
+ MAINTAINER = \# --enable-maintainer-mode to rebuild $1, or make MAINTAINER=touch
+ endif
+ 
+ all:: Makefile
+ 
+ Makefile: $(srcdir)/Makefile.in config.status
+ 	$(SHELL) ./config.status Makefile
+ 
+ $(srcdir)/configure: $(srcdir)/configure.ac
+ 	$(call MAINTAINER,$@,cd $(@D) && $(AUTOCONF) -W all,error)
+ 
+ $(srcdir)/config.h.in: $(srcdir)/configure.ac
+ 	$(call MAINTAINER,$@,cd $(@D) && $(AUTOHEADER) -f -W all,error)
+ 
+ config.h: config.status config.h.in
+ 	./$< --header=$@
+ 	touch $@
+ 
+ config.status: $(srcdir)/configure $(srcdir)/config.h.in
+ 	if test -x $@; then ./$@ -recheck; else $< @configure_args@; fi
+ 
+ .PHONY: all check clean distclean maintainer-clean
+ 
+ -include $(MAPPER.O:.o=.d)
diff -Nrcpad gcc-10.3.0/c++tools/config.h.in gcc-11.1.0/c++tools/config.h.in
*** gcc-10.3.0/c++tools/config.h.in	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/c++tools/config.h.in	Tue Apr 27 10:00:33 2021
***************
*** 0 ****
--- 1,76 ----
+ /* config.h.in.  Generated from configure.ac by autoheader.  */
+ 
+ /* Define if accept4 provided. */
+ #undef HAVE_ACCEPT4
+ 
+ /* Define if AF_INET6 supported. */
+ #undef HAVE_AF_INET6
+ 
+ /* Define if AF_UNIX supported. */
+ #undef HAVE_AF_UNIX
+ 
+ /* Define if epoll_create, epoll_ctl, epoll_pwait provided. */
+ #undef HAVE_EPOLL
+ 
+ /* Define if inet_ntop provided. */
+ #undef HAVE_INET_NTOP
+ 
+ /* Define to 1 if you have the <inttypes.h> header file. */
+ #undef HAVE_INTTYPES_H
+ 
+ /* Define to 1 if you have the <memory.h> header file. */
+ #undef HAVE_MEMORY_H
+ 
+ /* Define if pselect provided. */
+ #undef HAVE_PSELECT
+ 
+ /* Define if select provided. */
+ #undef HAVE_SELECT
+ 
+ /* Define to 1 if you have the <stdint.h> header file. */
+ #undef HAVE_STDINT_H
+ 
+ /* Define to 1 if you have the <stdlib.h> header file. */
+ #undef HAVE_STDLIB_H
+ 
+ /* Define to 1 if you have the <strings.h> header file. */
+ #undef HAVE_STRINGS_H
+ 
+ /* Define to 1 if you have the <string.h> header file. */
+ #undef HAVE_STRING_H
+ 
+ /* Define to 1 if you have the <sys/mman.h> header file. */
+ #undef HAVE_SYS_MMAN_H
+ 
+ /* Define to 1 if you have the <sys/stat.h> header file. */
+ #undef HAVE_SYS_STAT_H
+ 
+ /* Define to 1 if you have the <sys/types.h> header file. */
+ #undef HAVE_SYS_TYPES_H
+ 
+ /* Define to 1 if you have the <unistd.h> header file. */
+ #undef HAVE_UNISTD_H
+ 
+ /* Define if O_CLOEXEC supported by fcntl. */
+ #undef HOST_HAS_O_CLOEXEC
+ 
+ /* Define to the address where bug reports for this package should be sent. */
+ #undef PACKAGE_BUGREPORT
+ 
+ /* Define to the full name of this package. */
+ #undef PACKAGE_NAME
+ 
+ /* Define to the full name and version of this package. */
+ #undef PACKAGE_STRING
+ 
+ /* Define to the one symbol short name of this package. */
+ #undef PACKAGE_TARNAME
+ 
+ /* Define to the home page for this package. */
+ #undef PACKAGE_URL
+ 
+ /* Define to the version of this package. */
+ #undef PACKAGE_VERSION
+ 
+ /* Define to 1 if you have the ANSI C header files. */
+ #undef STDC_HEADERS
diff -Nrcpad gcc-10.3.0/c++tools/configure gcc-11.1.0/c++tools/configure
*** gcc-10.3.0/c++tools/configure	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/c++tools/configure	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,5738 ----
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+ # Generated by GNU Autoconf 2.69.
+ #
+ #
+ # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+ #
+ #
+ # This configure script is free software; the Free Software Foundation
+ # gives unlimited permission to copy, distribute and modify it.
+ ## -------------------- ##
+ ## M4sh Initialization. ##
+ ## -------------------- ##
+ 
+ # Be more Bourne compatible
+ DUALCASE=1; export DUALCASE # for MKS sh
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+   emulate sh
+   NULLCMD=:
+   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+   # is contrary to our usage.  Disable this feature.
+   alias -g '${1+"$@"}'='"$@"'
+   setopt NO_GLOB_SUBST
+ else
+   case `(set -o) 2>/dev/null` in #(
+   *posix*) :
+     set -o posix ;; #(
+   *) :
+      ;;
+ esac
+ fi
+ 
+ 
+ as_nl='
+ '
+ export as_nl
+ # Printing a long string crashes Solaris 7 /usr/bin/printf.
+ as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+ as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+ # Prefer a ksh shell builtin over an external printf program on Solaris,
+ # but without wasting forks for bash or zsh.
+ if test -z "$BASH_VERSION$ZSH_VERSION" \
+     && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+   as_echo='print -r --'
+   as_echo_n='print -rn --'
+ elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+   as_echo='printf %s\n'
+   as_echo_n='printf %s'
+ else
+   if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+     as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+     as_echo_n='/usr/ucb/echo -n'
+   else
+     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+     as_echo_n_body='eval
+       arg=$1;
+       case $arg in #(
+       *"$as_nl"*)
+ 	expr "X$arg" : "X\\(.*\\)$as_nl";
+ 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+       esac;
+       expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+     '
+     export as_echo_n_body
+     as_echo_n='sh -c $as_echo_n_body as_echo'
+   fi
+   export as_echo_body
+   as_echo='sh -c $as_echo_body as_echo'
+ fi
+ 
+ # The user is always right.
+ if test "${PATH_SEPARATOR+set}" != set; then
+   PATH_SEPARATOR=:
+   (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+     (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+       PATH_SEPARATOR=';'
+   }
+ fi
+ 
+ 
+ # IFS
+ # We need space, tab and new line, in precisely that order.  Quoting is
+ # there to prevent editors from complaining about space-tab.
+ # (If _AS_PATH_WALK were called with IFS unset, it would disable word
+ # splitting by setting IFS to empty value.)
+ IFS=" ""	$as_nl"
+ 
+ # Find who we are.  Look in the path if we contain no directory separator.
+ as_myself=
+ case $0 in #((
+   *[\\/]* ) as_myself=$0 ;;
+   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+   done
+ IFS=$as_save_IFS
+ 
+      ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+   as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+   $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+   exit 1
+ fi
+ 
+ # Unset variables that we do not need and which cause bugs (e.g. in
+ # pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+ # suppresses any "Segmentation fault" message there.  '((' could
+ # trigger a bug in pdksh 5.2.14.
+ for as_var in BASH_ENV ENV MAIL MAILPATH
+ do eval test x\${$as_var+set} = xset \
+   && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+ done
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+ 
+ # NLS nuisances.
+ LC_ALL=C
+ export LC_ALL
+ LANGUAGE=C
+ export LANGUAGE
+ 
+ # CDPATH.
+ (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+ 
+ # Use a proper internal environment variable to ensure we don't fall
+   # into an infinite loop, continuously re-executing ourselves.
+   if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+     _as_can_reexec=no; export _as_can_reexec;
+     # We cannot yet assume a decent shell, so we have to provide a
+ # neutralization value for shells without unset; and this also
+ # works around shells that cannot unset nonexistent variables.
+ # Preserve -v and -x to the replacement shell.
+ BASH_ENV=/dev/null
+ ENV=/dev/null
+ (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+ case $- in # ((((
+   *v*x* | *x*v* ) as_opts=-vx ;;
+   *v* ) as_opts=-v ;;
+   *x* ) as_opts=-x ;;
+   * ) as_opts= ;;
+ esac
+ exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+ # Admittedly, this is quite paranoid, since all the known shells bail
+ # out after a failed `exec'.
+ $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+ as_fn_exit 255
+   fi
+   # We don't want this to propagate to other subprocesses.
+           { _as_can_reexec=; unset _as_can_reexec;}
+ if test "x$CONFIG_SHELL" = x; then
+   as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+   emulate sh
+   NULLCMD=:
+   # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+   # is contrary to our usage.  Disable this feature.
+   alias -g '\${1+\"\$@\"}'='\"\$@\"'
+   setopt NO_GLOB_SUBST
+ else
+   case \`(set -o) 2>/dev/null\` in #(
+   *posix*) :
+     set -o posix ;; #(
+   *) :
+      ;;
+ esac
+ fi
+ "
+   as_required="as_fn_return () { (exit \$1); }
+ as_fn_success () { as_fn_return 0; }
+ as_fn_failure () { as_fn_return 1; }
+ as_fn_ret_success () { return 0; }
+ as_fn_ret_failure () { return 1; }
+ 
+ exitcode=0
+ as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+ as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+ as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+ as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+ 
+ else
+   exitcode=1; echo positional parameters were not saved.
+ fi
+ test x\$exitcode = x0 || exit 1
+ test -x / || exit 1"
+   as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+   test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+ test \$(( 1 + 1 )) = 2 || exit 1"
+   if (eval "$as_required") 2>/dev/null; then :
+   as_have_required=yes
+ else
+   as_have_required=no
+ fi
+   if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+ 
+ else
+   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ as_found=false
+ for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+   as_found=:
+   case $as_dir in #(
+ 	 /*)
+ 	   for as_base in sh bash ksh sh5; do
+ 	     # Try only shells that exist, to save several forks.
+ 	     as_shell=$as_dir/$as_base
+ 	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ 		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+   CONFIG_SHELL=$as_shell as_have_required=yes
+ 		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+   break 2
+ fi
+ fi
+ 	   done;;
+        esac
+   as_found=false
+ done
+ $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ 	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+   CONFIG_SHELL=$SHELL as_have_required=yes
+ fi; }
+ IFS=$as_save_IFS
+ 
+ 
+       if test "x$CONFIG_SHELL" != x; then :
+   export CONFIG_SHELL
+              # We cannot yet assume a decent shell, so we have to provide a
+ # neutralization value for shells without unset; and this also
+ # works around shells that cannot unset nonexistent variables.
+ # Preserve -v and -x to the replacement shell.
+ BASH_ENV=/dev/null
+ ENV=/dev/null
+ (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+ case $- in # ((((
+   *v*x* | *x*v* ) as_opts=-vx ;;
+   *v* ) as_opts=-v ;;
+   *x* ) as_opts=-x ;;
+   * ) as_opts= ;;
+ esac
+ exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+ # Admittedly, this is quite paranoid, since all the known shells bail
+ # out after a failed `exec'.
+ $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+ exit 255
+ fi
+ 
+     if test x$as_have_required = xno; then :
+   $as_echo "$0: This script requires a shell more modern than all"
+   $as_echo "$0: the shells that I found on your system."
+   if test x${ZSH_VERSION+set} = xset ; then
+     $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+     $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+   else
+     $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+ $0: including any error possibly output before this
+ $0: message. Then install a modern shell, or manually run
+ $0: the script under such a shell if you do have one."
+   fi
+   exit 1
+ fi
+ fi
+ fi
+ SHELL=${CONFIG_SHELL-/bin/sh}
+ export SHELL
+ # Unset more variables known to interfere with behavior of common tools.
+ CLICOLOR_FORCE= GREP_OPTIONS=
+ unset CLICOLOR_FORCE GREP_OPTIONS
+ 
+ ## --------------------- ##
+ ## M4sh Shell Functions. ##
+ ## --------------------- ##
+ # as_fn_unset VAR
+ # ---------------
+ # Portably unset VAR.
+ as_fn_unset ()
+ {
+   { eval $1=; unset $1;}
+ }
+ as_unset=as_fn_unset
+ 
+ # as_fn_set_status STATUS
+ # -----------------------
+ # Set $? to STATUS, without forking.
+ as_fn_set_status ()
+ {
+   return $1
+ } # as_fn_set_status
+ 
+ # as_fn_exit STATUS
+ # -----------------
+ # Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+ as_fn_exit ()
+ {
+   set +e
+   as_fn_set_status $1
+   exit $1
+ } # as_fn_exit
+ 
+ # as_fn_mkdir_p
+ # -------------
+ # Create "$as_dir" as a directory, including parents if necessary.
+ as_fn_mkdir_p ()
+ {
+ 
+   case $as_dir in #(
+   -*) as_dir=./$as_dir;;
+   esac
+   test -d "$as_dir" || eval $as_mkdir_p || {
+     as_dirs=
+     while :; do
+       case $as_dir in #(
+       *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+       *) as_qdir=$as_dir;;
+       esac
+       as_dirs="'$as_qdir' $as_dirs"
+       as_dir=`$as_dirname -- "$as_dir" ||
+ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ 	 X"$as_dir" : 'X\(//\)[^/]' \| \
+ 	 X"$as_dir" : 'X\(//\)$' \| \
+ 	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+ $as_echo X"$as_dir" |
+     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  /^X\(\/\/\)[^/].*/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  /^X\(\/\/\)$/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  /^X\(\/\).*/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  s/.*/./; q'`
+       test -d "$as_dir" && break
+     done
+     test -z "$as_dirs" || eval "mkdir $as_dirs"
+   } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+ 
+ 
+ } # as_fn_mkdir_p
+ 
+ # as_fn_executable_p FILE
+ # -----------------------
+ # Test if FILE is an executable regular file.
+ as_fn_executable_p ()
+ {
+   test -f "$1" && test -x "$1"
+ } # as_fn_executable_p
+ # as_fn_append VAR VALUE
+ # ----------------------
+ # Append the text in VALUE to the end of the definition contained in VAR. Take
+ # advantage of any shell optimizations that allow amortized linear growth over
+ # repeated appends, instead of the typical quadratic growth present in naive
+ # implementations.
+ if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+   eval 'as_fn_append ()
+   {
+     eval $1+=\$2
+   }'
+ else
+   as_fn_append ()
+   {
+     eval $1=\$$1\$2
+   }
+ fi # as_fn_append
+ 
+ # as_fn_arith ARG...
+ # ------------------
+ # Perform arithmetic evaluation on the ARGs, and store the result in the
+ # global $as_val. Take advantage of shells that can avoid forks. The arguments
+ # must be portable across $(()) and expr.
+ if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+   eval 'as_fn_arith ()
+   {
+     as_val=$(( $* ))
+   }'
+ else
+   as_fn_arith ()
+   {
+     as_val=`expr "$@" || test $? -eq 1`
+   }
+ fi # as_fn_arith
+ 
+ 
+ # as_fn_error STATUS ERROR [LINENO LOG_FD]
+ # ----------------------------------------
+ # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+ # provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+ # script with STATUS, using 1 if that was 0.
+ as_fn_error ()
+ {
+   as_status=$1; test $as_status -eq 0 && as_status=1
+   if test "$4"; then
+     as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+     $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+   fi
+   $as_echo "$as_me: error: $2" >&2
+   as_fn_exit $as_status
+ } # as_fn_error
+ 
+ if expr a : '\(a\)' >/dev/null 2>&1 &&
+    test "X`expr 00001 : '.*\(...\)'`" = X001; then
+   as_expr=expr
+ else
+   as_expr=false
+ fi
+ 
+ if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+   as_basename=basename
+ else
+   as_basename=false
+ fi
+ 
+ if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+   as_dirname=dirname
+ else
+   as_dirname=false
+ fi
+ 
+ as_me=`$as_basename -- "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ 	 X"$0" : 'X\(//\)$' \| \
+ 	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ $as_echo X/"$0" |
+     sed '/^.*\/\([^/][^/]*\)\/*$/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  /^X\/\(\/\/\)$/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  /^X\/\(\/\).*/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  s/.*/./; q'`
+ 
+ # Avoid depending upon Character Ranges.
+ as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+ as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+ as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+ as_cr_digits='0123456789'
+ as_cr_alnum=$as_cr_Letters$as_cr_digits
+ 
+ 
+   as_lineno_1=$LINENO as_lineno_1a=$LINENO
+   as_lineno_2=$LINENO as_lineno_2a=$LINENO
+   eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+   test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+   # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+   sed -n '
+     p
+     /[$]LINENO/=
+   ' <$as_myself |
+     sed '
+       s/[$]LINENO.*/&-/
+       t lineno
+       b
+       :lineno
+       N
+       :loop
+       s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+       t loop
+       s/-\n.*//
+     ' >$as_me.lineno &&
+   chmod +x "$as_me.lineno" ||
+     { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ 
+   # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+   # already done that, so ensure we don't try to do so again and fall
+   # in an infinite loop.  This has already happened in practice.
+   _as_can_reexec=no; export _as_can_reexec
+   # Don't try to exec as it changes $[0], causing all sort of problems
+   # (the dirname of $[0] is not the place where we might find the
+   # original and so on.  Autoconf is especially sensitive to this).
+   . "./$as_me.lineno"
+   # Exit status is that of the last command.
+   exit
+ }
+ 
+ ECHO_C= ECHO_N= ECHO_T=
+ case `echo -n x` in #(((((
+ -n*)
+   case `echo 'xy\c'` in
+   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+   xy)  ECHO_C='\c';;
+   *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+        ECHO_T='	';;
+   esac;;
+ *)
+   ECHO_N='-n';;
+ esac
+ 
+ rm -f conf$$ conf$$.exe conf$$.file
+ if test -d conf$$.dir; then
+   rm -f conf$$.dir/conf$$.file
+ else
+   rm -f conf$$.dir
+   mkdir conf$$.dir 2>/dev/null
+ fi
+ if (echo >conf$$.file) 2>/dev/null; then
+   if ln -s conf$$.file conf$$ 2>/dev/null; then
+     as_ln_s='ln -s'
+     # ... but there are two gotchas:
+     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+     # In both cases, we have to default to `cp -pR'.
+     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+       as_ln_s='cp -pR'
+   elif ln conf$$.file conf$$ 2>/dev/null; then
+     as_ln_s=ln
+   else
+     as_ln_s='cp -pR'
+   fi
+ else
+   as_ln_s='cp -pR'
+ fi
+ rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+ rmdir conf$$.dir 2>/dev/null
+ 
+ if mkdir -p . 2>/dev/null; then
+   as_mkdir_p='mkdir -p "$as_dir"'
+ else
+   test -d ./-p && rmdir ./-p
+   as_mkdir_p=false
+ fi
+ 
+ as_test_x='test -x'
+ as_executable_p=as_fn_executable_p
+ 
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+ 
+ # Sed expression to map a string onto a valid variable name.
+ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+ 
+ 
+ test -n "$DJDIR" || exec 7<&0 </dev/null
+ exec 6>&1
+ 
+ # Name of the host.
+ # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+ # so uname gets run too.
+ ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+ 
+ #
+ # Initializations.
+ #
+ ac_default_prefix=/usr/local
+ ac_clean_files=
+ ac_config_libobj_dir=.
+ LIBOBJS=
+ cross_compiling=no
+ subdirs=
+ MFLAGS=
+ MAKEFLAGS=
+ 
+ # Identity of this package.
+ PACKAGE_NAME=
+ PACKAGE_TARNAME=
+ PACKAGE_VERSION=
+ PACKAGE_STRING=
+ PACKAGE_BUGREPORT=
+ PACKAGE_URL=
+ 
+ ac_unique_file="c++tools"
+ ac_unique_file="server.cc"
+ # Factoring default headers for most tests.
+ ac_includes_default="\
+ #include <stdio.h>
+ #ifdef HAVE_SYS_TYPES_H
+ # include <sys/types.h>
+ #endif
+ #ifdef HAVE_SYS_STAT_H
+ # include <sys/stat.h>
+ #endif
+ #ifdef STDC_HEADERS
+ # include <stdlib.h>
+ # include <stddef.h>
+ #else
+ # ifdef HAVE_STDLIB_H
+ #  include <stdlib.h>
+ # endif
+ #endif
+ #ifdef HAVE_STRING_H
+ # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+ #  include <memory.h>
+ # endif
+ # include <string.h>
+ #endif
+ #ifdef HAVE_STRINGS_H
+ # include <strings.h>
+ #endif
+ #ifdef HAVE_INTTYPES_H
+ # include <inttypes.h>
+ #endif
+ #ifdef HAVE_STDINT_H
+ # include <stdint.h>
+ #endif
+ #ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+ #endif"
+ 
+ ac_subst_vars='LTLIBOBJS
+ LIBOBJS
+ NETLIBS
+ get_gcc_base_ver
+ EGREP
+ GREP
+ CPP
+ ac_ct_CC
+ CFLAGS
+ CC
+ PIEFLAG
+ MAINTAINER
+ CXX_AUX_TOOLS
+ AUTOHEADER
+ AUTOCONF
+ OBJEXT
+ EXEEXT
+ ac_ct_CXX
+ CPPFLAGS
+ LDFLAGS
+ CXXFLAGS
+ CXX
+ INSTALL_DATA
+ INSTALL_SCRIPT
+ INSTALL_PROGRAM
+ target_os
+ target_vendor
+ target_cpu
+ target
+ host_os
+ host_vendor
+ host_cpu
+ host
+ target_noncanonical
+ build_os
+ build_vendor
+ build_cpu
+ build
+ target_alias
+ host_alias
+ build_alias
+ LIBS
+ ECHO_T
+ ECHO_N
+ ECHO_C
+ DEFS
+ mandir
+ localedir
+ libdir
+ psdir
+ pdfdir
+ dvidir
+ htmldir
+ infodir
+ docdir
+ oldincludedir
+ includedir
+ localstatedir
+ sharedstatedir
+ sysconfdir
+ datadir
+ datarootdir
+ libexecdir
+ sbindir
+ bindir
+ program_transform_name
+ prefix
+ exec_prefix
+ PACKAGE_URL
+ PACKAGE_BUGREPORT
+ PACKAGE_STRING
+ PACKAGE_VERSION
+ PACKAGE_TARNAME
+ PACKAGE_NAME
+ PATH_SEPARATOR
+ SHELL'
+ ac_subst_files=''
+ ac_user_opts='
+ enable_option_checking
+ enable_c___tools
+ enable_maintainer_mode
+ enable_default_pie
+ with_gcc_major_version_only
+ '
+       ac_precious_vars='build_alias
+ host_alias
+ target_alias
+ CXX
+ CXXFLAGS
+ LDFLAGS
+ LIBS
+ CPPFLAGS
+ CCC
+ CC
+ CFLAGS
+ CPP'
+ 
+ 
+ # Initialize some variables set by options.
+ ac_init_help=
+ ac_init_version=false
+ ac_unrecognized_opts=
+ ac_unrecognized_sep=
+ # The variables have the same names as the options, with
+ # dashes changed to underlines.
+ cache_file=/dev/null
+ exec_prefix=NONE
+ no_create=
+ no_recursion=
+ prefix=NONE
+ program_prefix=NONE
+ program_suffix=NONE
+ program_transform_name=s,x,x,
+ silent=
+ site=
+ srcdir=
+ verbose=
+ x_includes=NONE
+ x_libraries=NONE
+ 
+ # Installation directory options.
+ # These are left unexpanded so users can "make install exec_prefix=/foo"
+ # and all the variables that are supposed to be based on exec_prefix
+ # by default will actually change.
+ # Use braces instead of parens because sh, perl, etc. also accept them.
+ # (The list follows the same order as the GNU Coding Standards.)
+ bindir='${exec_prefix}/bin'
+ sbindir='${exec_prefix}/sbin'
+ libexecdir='${exec_prefix}/libexec'
+ datarootdir='${prefix}/share'
+ datadir='${datarootdir}'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+ docdir='${datarootdir}/doc/${PACKAGE}'
+ infodir='${datarootdir}/info'
+ htmldir='${docdir}'
+ dvidir='${docdir}'
+ pdfdir='${docdir}'
+ psdir='${docdir}'
+ libdir='${exec_prefix}/lib'
+ localedir='${datarootdir}/locale'
+ mandir='${datarootdir}/man'
+ 
+ ac_prev=
+ ac_dashdash=
+ for ac_option
+ do
+   # If the previous option needs an argument, assign it.
+   if test -n "$ac_prev"; then
+     eval $ac_prev=\$ac_option
+     ac_prev=
+     continue
+   fi
+ 
+   case $ac_option in
+   *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+   *=)   ac_optarg= ;;
+   *)    ac_optarg=yes ;;
+   esac
+ 
+   # Accept the important Cygnus configure options, so we can diagnose typos.
+ 
+   case $ac_dashdash$ac_option in
+   --)
+     ac_dashdash=yes ;;
+ 
+   -bindir | --bindir | --bindi | --bind | --bin | --bi)
+     ac_prev=bindir ;;
+   -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+     bindir=$ac_optarg ;;
+ 
+   -build | --build | --buil | --bui | --bu)
+     ac_prev=build_alias ;;
+   -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+     build_alias=$ac_optarg ;;
+ 
+   -cache-file | --cache-file | --cache-fil | --cache-fi \
+   | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+     ac_prev=cache_file ;;
+   -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+   | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+     cache_file=$ac_optarg ;;
+ 
+   --config-cache | -C)
+     cache_file=config.cache ;;
+ 
+   -datadir | --datadir | --datadi | --datad)
+     ac_prev=datadir ;;
+   -datadir=* | --datadir=* | --datadi=* | --datad=*)
+     datadir=$ac_optarg ;;
+ 
+   -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+   | --dataroo | --dataro | --datar)
+     ac_prev=datarootdir ;;
+   -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+   | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+     datarootdir=$ac_optarg ;;
+ 
+   -disable-* | --disable-*)
+     ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+     # Reject names that are not valid shell variable names.
+     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+       as_fn_error $? "invalid feature name: $ac_useropt"
+     ac_useropt_orig=$ac_useropt
+     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+     case $ac_user_opts in
+       *"
+ "enable_$ac_useropt"
+ "*) ;;
+       *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ 	 ac_unrecognized_sep=', ';;
+     esac
+     eval enable_$ac_useropt=no ;;
+ 
+   -docdir | --docdir | --docdi | --doc | --do)
+     ac_prev=docdir ;;
+   -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+     docdir=$ac_optarg ;;
+ 
+   -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+     ac_prev=dvidir ;;
+   -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+     dvidir=$ac_optarg ;;
+ 
+   -enable-* | --enable-*)
+     ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+     # Reject names that are not valid shell variable names.
+     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+       as_fn_error $? "invalid feature name: $ac_useropt"
+     ac_useropt_orig=$ac_useropt
+     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+     case $ac_user_opts in
+       *"
+ "enable_$ac_useropt"
+ "*) ;;
+       *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ 	 ac_unrecognized_sep=', ';;
+     esac
+     eval enable_$ac_useropt=\$ac_optarg ;;
+ 
+   -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+   | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+   | --exec | --exe | --ex)
+     ac_prev=exec_prefix ;;
+   -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+   | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+   | --exec=* | --exe=* | --ex=*)
+     exec_prefix=$ac_optarg ;;
+ 
+   -gas | --gas | --ga | --g)
+     # Obsolete; use --with-gas.
+     with_gas=yes ;;
+ 
+   -help | --help | --hel | --he | -h)
+     ac_init_help=long ;;
+   -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+     ac_init_help=recursive ;;
+   -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+     ac_init_help=short ;;
+ 
+   -host | --host | --hos | --ho)
+     ac_prev=host_alias ;;
+   -host=* | --host=* | --hos=* | --ho=*)
+     host_alias=$ac_optarg ;;
+ 
+   -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+     ac_prev=htmldir ;;
+   -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+   | --ht=*)
+     htmldir=$ac_optarg ;;
+ 
+   -includedir | --includedir | --includedi | --included | --include \
+   | --includ | --inclu | --incl | --inc)
+     ac_prev=includedir ;;
+   -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+   | --includ=* | --inclu=* | --incl=* | --inc=*)
+     includedir=$ac_optarg ;;
+ 
+   -infodir | --infodir | --infodi | --infod | --info | --inf)
+     ac_prev=infodir ;;
+   -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+     infodir=$ac_optarg ;;
+ 
+   -libdir | --libdir | --libdi | --libd)
+     ac_prev=libdir ;;
+   -libdir=* | --libdir=* | --libdi=* | --libd=*)
+     libdir=$ac_optarg ;;
+ 
+   -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+   | --libexe | --libex | --libe)
+     ac_prev=libexecdir ;;
+   -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+   | --libexe=* | --libex=* | --libe=*)
+     libexecdir=$ac_optarg ;;
+ 
+   -localedir | --localedir | --localedi | --localed | --locale)
+     ac_prev=localedir ;;
+   -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+     localedir=$ac_optarg ;;
+ 
+   -localstatedir | --localstatedir | --localstatedi | --localstated \
+   | --localstate | --localstat | --localsta | --localst | --locals)
+     ac_prev=localstatedir ;;
+   -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+   | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+     localstatedir=$ac_optarg ;;
+ 
+   -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+     ac_prev=mandir ;;
+   -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+     mandir=$ac_optarg ;;
+ 
+   -nfp | --nfp | --nf)
+     # Obsolete; use --without-fp.
+     with_fp=no ;;
+ 
+   -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+   | --no-cr | --no-c | -n)
+     no_create=yes ;;
+ 
+   -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+   | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+     no_recursion=yes ;;
+ 
+   -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+   | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+   | --oldin | --oldi | --old | --ol | --o)
+     ac_prev=oldincludedir ;;
+   -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+   | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+   | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+     oldincludedir=$ac_optarg ;;
+ 
+   -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+     ac_prev=prefix ;;
+   -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+     prefix=$ac_optarg ;;
+ 
+   -program-prefix | --program-prefix | --program-prefi | --program-pref \
+   | --program-pre | --program-pr | --program-p)
+     ac_prev=program_prefix ;;
+   -program-prefix=* | --program-prefix=* | --program-prefi=* \
+   | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+     program_prefix=$ac_optarg ;;
+ 
+   -program-suffix | --program-suffix | --program-suffi | --program-suff \
+   | --program-suf | --program-su | --program-s)
+     ac_prev=program_suffix ;;
+   -program-suffix=* | --program-suffix=* | --program-suffi=* \
+   | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+     program_suffix=$ac_optarg ;;
+ 
+   -program-transform-name | --program-transform-name \
+   | --program-transform-nam | --program-transform-na \
+   | --program-transform-n | --program-transform- \
+   | --program-transform | --program-transfor \
+   | --program-transfo | --program-transf \
+   | --program-trans | --program-tran \
+   | --progr-tra | --program-tr | --program-t)
+     ac_prev=program_transform_name ;;
+   -program-transform-name=* | --program-transform-name=* \
+   | --program-transform-nam=* | --program-transform-na=* \
+   | --program-transform-n=* | --program-transform-=* \
+   | --program-transform=* | --program-transfor=* \
+   | --program-transfo=* | --program-transf=* \
+   | --program-trans=* | --program-tran=* \
+   | --progr-tra=* | --program-tr=* | --program-t=*)
+     program_transform_name=$ac_optarg ;;
+ 
+   -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+     ac_prev=pdfdir ;;
+   -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+     pdfdir=$ac_optarg ;;
+ 
+   -psdir | --psdir | --psdi | --psd | --ps)
+     ac_prev=psdir ;;
+   -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+     psdir=$ac_optarg ;;
+ 
+   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+   | -silent | --silent | --silen | --sile | --sil)
+     silent=yes ;;
+ 
+   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+     ac_prev=sbindir ;;
+   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+   | --sbi=* | --sb=*)
+     sbindir=$ac_optarg ;;
+ 
+   -sharedstatedir | --sharedstatedir | --sharedstatedi \
+   | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+   | --sharedst | --shareds | --shared | --share | --shar \
+   | --sha | --sh)
+     ac_prev=sharedstatedir ;;
+   -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+   | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+   | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+   | --sha=* | --sh=*)
+     sharedstatedir=$ac_optarg ;;
+ 
+   -site | --site | --sit)
+     ac_prev=site ;;
+   -site=* | --site=* | --sit=*)
+     site=$ac_optarg ;;
+ 
+   -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+     ac_prev=srcdir ;;
+   -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+     srcdir=$ac_optarg ;;
+ 
+   -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+   | --syscon | --sysco | --sysc | --sys | --sy)
+     ac_prev=sysconfdir ;;
+   -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+   | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+     sysconfdir=$ac_optarg ;;
+ 
+   -target | --target | --targe | --targ | --tar | --ta | --t)
+     ac_prev=target_alias ;;
+   -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+     target_alias=$ac_optarg ;;
+ 
+   -v | -verbose | --verbose | --verbos | --verbo | --verb)
+     verbose=yes ;;
+ 
+   -version | --version | --versio | --versi | --vers | -V)
+     ac_init_version=: ;;
+ 
+   -with-* | --with-*)
+     ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+     # Reject names that are not valid shell variable names.
+     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+       as_fn_error $? "invalid package name: $ac_useropt"
+     ac_useropt_orig=$ac_useropt
+     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+     case $ac_user_opts in
+       *"
+ "with_$ac_useropt"
+ "*) ;;
+       *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ 	 ac_unrecognized_sep=', ';;
+     esac
+     eval with_$ac_useropt=\$ac_optarg ;;
+ 
+   -without-* | --without-*)
+     ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+     # Reject names that are not valid shell variable names.
+     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+       as_fn_error $? "invalid package name: $ac_useropt"
+     ac_useropt_orig=$ac_useropt
+     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+     case $ac_user_opts in
+       *"
+ "with_$ac_useropt"
+ "*) ;;
+       *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ 	 ac_unrecognized_sep=', ';;
+     esac
+     eval with_$ac_useropt=no ;;
+ 
+   --x)
+     # Obsolete; use --with-x.
+     with_x=yes ;;
+ 
+   -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+   | --x-incl | --x-inc | --x-in | --x-i)
+     ac_prev=x_includes ;;
+   -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+   | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+     x_includes=$ac_optarg ;;
+ 
+   -x-libraries | --x-libraries | --x-librarie | --x-librari \
+   | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+     ac_prev=x_libraries ;;
+   -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+     x_libraries=$ac_optarg ;;
+ 
+   -*) as_fn_error $? "unrecognized option: \`$ac_option'
+ Try \`$0 --help' for more information"
+     ;;
+ 
+   *=*)
+     ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+     # Reject names that are not valid shell variable names.
+     case $ac_envvar in #(
+       '' | [0-9]* | *[!_$as_cr_alnum]* )
+       as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+     esac
+     eval $ac_envvar=\$ac_optarg
+     export $ac_envvar ;;
+ 
+   *)
+     # FIXME: should be removed in autoconf 3.0.
+     $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+       $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+     : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+     ;;
+ 
+   esac
+ done
+ 
+ if test -n "$ac_prev"; then
+   ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+   as_fn_error $? "missing argument to $ac_option"
+ fi
+ 
+ if test -n "$ac_unrecognized_opts"; then
+   case $enable_option_checking in
+     no) ;;
+     fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+     *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+   esac
+ fi
+ 
+ # Check all directory arguments for consistency.
+ for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ 		datadir sysconfdir sharedstatedir localstatedir includedir \
+ 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ 		libdir localedir mandir
+ do
+   eval ac_val=\$$ac_var
+   # Remove trailing slashes.
+   case $ac_val in
+     */ )
+       ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+       eval $ac_var=\$ac_val;;
+   esac
+   # Be sure to have absolute directory names.
+   case $ac_val in
+     [\\/$]* | ?:[\\/]* )  continue;;
+     NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+   esac
+   as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+ done
+ 
+ # There might be people who depend on the old broken behavior: `$host'
+ # used to hold the argument of --host etc.
+ # FIXME: To remove some day.
+ build=$build_alias
+ host=$host_alias
+ target=$target_alias
+ 
+ # FIXME: To remove some day.
+ if test "x$host_alias" != x; then
+   if test "x$build_alias" = x; then
+     cross_compiling=maybe
+   elif test "x$build_alias" != "x$host_alias"; then
+     cross_compiling=yes
+   fi
+ fi
+ 
+ ac_tool_prefix=
+ test -n "$host_alias" && ac_tool_prefix=$host_alias-
+ 
+ test "$silent" = yes && exec 6>/dev/null
+ 
+ 
+ ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ ac_ls_di=`ls -di .` &&
+ ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+   as_fn_error $? "working directory cannot be determined"
+ test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+   as_fn_error $? "pwd does not report name of working directory"
+ 
+ 
+ # Find the source files, if location was not specified.
+ if test -z "$srcdir"; then
+   ac_srcdir_defaulted=yes
+   # Try the directory containing this script, then the parent directory.
+   ac_confdir=`$as_dirname -- "$as_myself" ||
+ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ 	 X"$as_myself" : 'X\(//\)[^/]' \| \
+ 	 X"$as_myself" : 'X\(//\)$' \| \
+ 	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+ $as_echo X"$as_myself" |
+     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  /^X\(\/\/\)[^/].*/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  /^X\(\/\/\)$/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  /^X\(\/\).*/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  s/.*/./; q'`
+   srcdir=$ac_confdir
+   if test ! -r "$srcdir/$ac_unique_file"; then
+     srcdir=..
+   fi
+ else
+   ac_srcdir_defaulted=no
+ fi
+ if test ! -r "$srcdir/$ac_unique_file"; then
+   test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+   as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+ fi
+ ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ ac_abs_confdir=`(
+ 	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+ 	pwd)`
+ # When building in place, set srcdir=.
+ if test "$ac_abs_confdir" = "$ac_pwd"; then
+   srcdir=.
+ fi
+ # Remove unnecessary trailing slashes from srcdir.
+ # Double slashes in file names in object file debugging info
+ # mess up M-x gdb in Emacs.
+ case $srcdir in
+ */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+ esac
+ for ac_var in $ac_precious_vars; do
+   eval ac_env_${ac_var}_set=\${${ac_var}+set}
+   eval ac_env_${ac_var}_value=\$${ac_var}
+   eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+   eval ac_cv_env_${ac_var}_value=\$${ac_var}
+ done
+ 
+ #
+ # Report the --help message.
+ #
+ if test "$ac_init_help" = "long"; then
+   # Omit some internal or obsolete options to make the list less imposing.
+   # This message is too long to be a string in the A/UX 3.1 sh.
+   cat <<_ACEOF
+ \`configure' configures this package to adapt to many kinds of systems.
+ 
+ Usage: $0 [OPTION]... [VAR=VALUE]...
+ 
+ To assign environment variables (e.g., CC, CFLAGS...), specify them as
+ VAR=VALUE.  See below for descriptions of some of the useful variables.
+ 
+ Defaults for the options are specified in brackets.
+ 
+ Configuration:
+   -h, --help              display this help and exit
+       --help=short        display options specific to this package
+       --help=recursive    display the short help of all the included packages
+   -V, --version           display version information and exit
+   -q, --quiet, --silent   do not print \`checking ...' messages
+       --cache-file=FILE   cache test results in FILE [disabled]
+   -C, --config-cache      alias for \`--cache-file=config.cache'
+   -n, --no-create         do not create output files
+       --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+ 
+ Installation directories:
+   --prefix=PREFIX         install architecture-independent files in PREFIX
+                           [$ac_default_prefix]
+   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                           [PREFIX]
+ 
+ By default, \`make install' will install all the files in
+ \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+ an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+ for instance \`--prefix=\$HOME'.
+ 
+ For better control, use the options below.
+ 
+ Fine tuning of the installation directories:
+   --bindir=DIR            user executables [EPREFIX/bin]
+   --sbindir=DIR           system admin executables [EPREFIX/sbin]
+   --libexecdir=DIR        program executables [EPREFIX/libexec]
+   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+   --libdir=DIR            object code libraries [EPREFIX/lib]
+   --includedir=DIR        C header files [PREFIX/include]
+   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+   --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+   --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+   --infodir=DIR           info documentation [DATAROOTDIR/info]
+   --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+   --mandir=DIR            man documentation [DATAROOTDIR/man]
+   --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
+   --htmldir=DIR           html documentation [DOCDIR]
+   --dvidir=DIR            dvi documentation [DOCDIR]
+   --pdfdir=DIR            pdf documentation [DOCDIR]
+   --psdir=DIR             ps documentation [DOCDIR]
+ _ACEOF
+ 
+   cat <<\_ACEOF
+ 
+ System types:
+   --build=BUILD     configure for building on BUILD [guessed]
+   --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+   --target=TARGET   configure for building compilers for TARGET [HOST]
+ _ACEOF
+ fi
+ 
+ if test -n "$ac_init_help"; then
+ 
+   cat <<\_ACEOF
+ 
+ Optional Features:
+   --disable-option-checking  ignore unrecognized --enable/--with options
+   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+   --enable-c++-tools      build auxiliary c++ tools
+   --enable-maintainer-mode
+                           enable maintainer mode. Add rules to rebuild
+                           configurey bits
+   --enable-default-pie    enable Position Independent Executable as default
+ 
+ Optional Packages:
+   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+   --with-gcc-major-version-only
+                           use only GCC major number in filesystem paths
+ 
+ Some influential environment variables:
+   CXX         C++ compiler command
+   CXXFLAGS    C++ compiler flags
+   LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+               nonstandard directory <lib dir>
+   LIBS        libraries to pass to the linker, e.g. -l<library>
+   CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+               you have headers in a nonstandard directory <include dir>
+   CC          C compiler command
+   CFLAGS      C compiler flags
+   CPP         C preprocessor
+ 
+ Use these variables to override the choices made by `configure' or to help
+ it to find libraries and programs with nonstandard names/locations.
+ 
+ Report bugs to the package provider.
+ _ACEOF
+ ac_status=$?
+ fi
+ 
+ if test "$ac_init_help" = "recursive"; then
+   # If there are subdirs, report their specific --help.
+   for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+     test -d "$ac_dir" ||
+       { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+       continue
+     ac_builddir=.
+ 
+ case "$ac_dir" in
+ .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *)
+   ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+   # A ".." for each directory in $ac_dir_suffix.
+   ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+   case $ac_top_builddir_sub in
+   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+   esac ;;
+ esac
+ ac_abs_top_builddir=$ac_pwd
+ ac_abs_builddir=$ac_pwd$ac_dir_suffix
+ # for backward compatibility:
+ ac_top_builddir=$ac_top_build_prefix
+ 
+ case $srcdir in
+   .)  # We are building in place.
+     ac_srcdir=.
+     ac_top_srcdir=$ac_top_builddir_sub
+     ac_abs_top_srcdir=$ac_pwd ;;
+   [\\/]* | ?:[\\/]* )  # Absolute name.
+     ac_srcdir=$srcdir$ac_dir_suffix;
+     ac_top_srcdir=$srcdir
+     ac_abs_top_srcdir=$srcdir ;;
+   *) # Relative name.
+     ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+     ac_top_srcdir=$ac_top_build_prefix$srcdir
+     ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+ esac
+ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+ 
+     cd "$ac_dir" || { ac_status=$?; continue; }
+     # Check for guested configure.
+     if test -f "$ac_srcdir/configure.gnu"; then
+       echo &&
+       $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+     elif test -f "$ac_srcdir/configure"; then
+       echo &&
+       $SHELL "$ac_srcdir/configure" --help=recursive
+     else
+       $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+     fi || ac_status=$?
+     cd "$ac_pwd" || { ac_status=$?; break; }
+   done
+ fi
+ 
+ test -n "$ac_init_help" && exit $ac_status
+ if $ac_init_version; then
+   cat <<\_ACEOF
+ configure
+ generated by GNU Autoconf 2.69
+ 
+ Copyright (C) 2012 Free Software Foundation, Inc.
+ This configure script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it.
+ _ACEOF
+   exit
+ fi
+ 
+ ## ------------------------ ##
+ ## Autoconf initialization. ##
+ ## ------------------------ ##
+ 
+ # ac_fn_cxx_try_compile LINENO
+ # ----------------------------
+ # Try to compile conftest.$ac_ext, and return whether this succeeded.
+ ac_fn_cxx_try_compile ()
+ {
+   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+   rm -f conftest.$ac_objext
+   if { { ac_try="$ac_compile"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+ $as_echo "$ac_try_echo"; } >&5
+   (eval "$ac_compile") 2>conftest.err
+   ac_status=$?
+   if test -s conftest.err; then
+     grep -v '^ *+' conftest.err >conftest.er1
+     cat conftest.er1 >&5
+     mv -f conftest.er1 conftest.err
+   fi
+   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+   test $ac_status = 0; } && {
+ 	 test -z "$ac_cxx_werror_flag" ||
+ 	 test ! -s conftest.err
+        } && test -s conftest.$ac_objext; then :
+   ac_retval=0
+ else
+   $as_echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+ 
+ 	ac_retval=1
+ fi
+   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+   as_fn_set_status $ac_retval
+ 
+ } # ac_fn_cxx_try_compile
+ 
+ # ac_fn_c_try_compile LINENO
+ # --------------------------
+ # Try to compile conftest.$ac_ext, and return whether this succeeded.
+ ac_fn_c_try_compile ()
+ {
+   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+   rm -f conftest.$ac_objext
+   if { { ac_try="$ac_compile"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+ $as_echo "$ac_try_echo"; } >&5
+   (eval "$ac_compile") 2>conftest.err
+   ac_status=$?
+   if test -s conftest.err; then
+     grep -v '^ *+' conftest.err >conftest.er1
+     cat conftest.er1 >&5
+     mv -f conftest.er1 conftest.err
+   fi
+   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+   test $ac_status = 0; } && {
+ 	 test -z "$ac_c_werror_flag" ||
+ 	 test ! -s conftest.err
+        } && test -s conftest.$ac_objext; then :
+   ac_retval=0
+ else
+   $as_echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+ 
+ 	ac_retval=1
+ fi
+   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+   as_fn_set_status $ac_retval
+ 
+ } # ac_fn_c_try_compile
+ 
+ # ac_fn_c_try_cpp LINENO
+ # ----------------------
+ # Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ ac_fn_c_try_cpp ()
+ {
+   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+   if { { ac_try="$ac_cpp conftest.$ac_ext"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+ $as_echo "$ac_try_echo"; } >&5
+   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+   ac_status=$?
+   if test -s conftest.err; then
+     grep -v '^ *+' conftest.err >conftest.er1
+     cat conftest.er1 >&5
+     mv -f conftest.er1 conftest.err
+   fi
+   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+   test $ac_status = 0; } > conftest.i && {
+ 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ 	 test ! -s conftest.err
+        }; then :
+   ac_retval=0
+ else
+   $as_echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+ 
+     ac_retval=1
+ fi
+   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+   as_fn_set_status $ac_retval
+ 
+ } # ac_fn_c_try_cpp
+ 
+ # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+ # -------------------------------------------------------
+ # Tests whether HEADER exists, giving a warning if it cannot be compiled using
+ # the include files in INCLUDES and setting the cache variable VAR
+ # accordingly.
+ ac_fn_c_check_header_mongrel ()
+ {
+   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+   if eval \${$3+:} false; then :
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+ $as_echo_n "checking for $2... " >&6; }
+ if eval \${$3+:} false; then :
+   $as_echo_n "(cached) " >&6
+ fi
+ eval ac_res=\$$3
+ 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+ else
+   # Is the header compilable?
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+ $as_echo_n "checking $2 usability... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ $4
+ #include <$2>
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   ac_header_compiler=yes
+ else
+   ac_header_compiler=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+ $as_echo "$ac_header_compiler" >&6; }
+ 
+ # Is the header present?
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+ $as_echo_n "checking $2 presence... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ #include <$2>
+ _ACEOF
+ if ac_fn_c_try_cpp "$LINENO"; then :
+   ac_header_preproc=yes
+ else
+   ac_header_preproc=no
+ fi
+ rm -f conftest.err conftest.i conftest.$ac_ext
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+ $as_echo "$ac_header_preproc" >&6; }
+ 
+ # So?  What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+   yes:no: )
+     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+ $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+ $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+     ;;
+   no:yes:* )
+     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+ $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+ $as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+ $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+ $as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+ $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+     ;;
+ esac
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+ $as_echo_n "checking for $2... " >&6; }
+ if eval \${$3+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   eval "$3=\$ac_header_compiler"
+ fi
+ eval ac_res=\$$3
+ 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+ fi
+   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ 
+ } # ac_fn_c_check_header_mongrel
+ 
+ # ac_fn_c_try_run LINENO
+ # ----------------------
+ # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+ # that executables *can* be run.
+ ac_fn_c_try_run ()
+ {
+   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+   if { { ac_try="$ac_link"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+ $as_echo "$ac_try_echo"; } >&5
+   (eval "$ac_link") 2>&5
+   ac_status=$?
+   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+   test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+   { { case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+ $as_echo "$ac_try_echo"; } >&5
+   (eval "$ac_try") 2>&5
+   ac_status=$?
+   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+   test $ac_status = 0; }; }; then :
+   ac_retval=0
+ else
+   $as_echo "$as_me: program exited with status $ac_status" >&5
+        $as_echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+ 
+        ac_retval=$ac_status
+ fi
+   rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+   as_fn_set_status $ac_retval
+ 
+ } # ac_fn_c_try_run
+ 
+ # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+ # -------------------------------------------------------
+ # Tests whether HEADER exists and can be compiled using the include files in
+ # INCLUDES, setting the cache variable VAR accordingly.
+ ac_fn_c_check_header_compile ()
+ {
+   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+ $as_echo_n "checking for $2... " >&6; }
+ if eval \${$3+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ $4
+ #include <$2>
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   eval "$3=yes"
+ else
+   eval "$3=no"
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ eval ac_res=\$$3
+ 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ 
+ } # ac_fn_c_check_header_compile
+ 
+ # ac_fn_c_try_link LINENO
+ # -----------------------
+ # Try to link conftest.$ac_ext, and return whether this succeeded.
+ ac_fn_c_try_link ()
+ {
+   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+   rm -f conftest.$ac_objext conftest$ac_exeext
+   if { { ac_try="$ac_link"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+ $as_echo "$ac_try_echo"; } >&5
+   (eval "$ac_link") 2>conftest.err
+   ac_status=$?
+   if test -s conftest.err; then
+     grep -v '^ *+' conftest.err >conftest.er1
+     cat conftest.er1 >&5
+     mv -f conftest.er1 conftest.err
+   fi
+   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+   test $ac_status = 0; } && {
+ 	 test -z "$ac_c_werror_flag" ||
+ 	 test ! -s conftest.err
+        } && test -s conftest$ac_exeext && {
+ 	 test "$cross_compiling" = yes ||
+ 	 test -x conftest$ac_exeext
+        }; then :
+   ac_retval=0
+ else
+   $as_echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+ 
+ 	ac_retval=1
+ fi
+   # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+   # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+   # interfere with the next link command; also delete a directory that is
+   # left behind by Apple's compiler.  We do this before executing the actions.
+   rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+   as_fn_set_status $ac_retval
+ 
+ } # ac_fn_c_try_link
+ cat >config.log <<_ACEOF
+ This file contains any messages produced by compilers while
+ running configure, to aid debugging if configure makes a mistake.
+ 
+ It was created by $as_me, which was
+ generated by GNU Autoconf 2.69.  Invocation command line was
+ 
+   $ $0 $@
+ 
+ _ACEOF
+ exec 5>>config.log
+ {
+ cat <<_ASUNAME
+ ## --------- ##
+ ## Platform. ##
+ ## --------- ##
+ 
+ hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+ uname -m = `(uname -m) 2>/dev/null || echo unknown`
+ uname -r = `(uname -r) 2>/dev/null || echo unknown`
+ uname -s = `(uname -s) 2>/dev/null || echo unknown`
+ uname -v = `(uname -v) 2>/dev/null || echo unknown`
+ 
+ /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+ /bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+ 
+ /bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+ /usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+ /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+ /usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+ /bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+ /usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+ /bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+ 
+ _ASUNAME
+ 
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     $as_echo "PATH: $as_dir"
+   done
+ IFS=$as_save_IFS
+ 
+ } >&5
+ 
+ cat >&5 <<_ACEOF
+ 
+ 
+ ## ----------- ##
+ ## Core tests. ##
+ ## ----------- ##
+ 
+ _ACEOF
+ 
+ 
+ # Keep a trace of the command line.
+ # Strip out --no-create and --no-recursion so they do not pile up.
+ # Strip out --silent because we don't want to record it for future runs.
+ # Also quote any args containing shell meta-characters.
+ # Make two passes to allow for proper duplicate-argument suppression.
+ ac_configure_args=
+ ac_configure_args0=
+ ac_configure_args1=
+ ac_must_keep_next=false
+ for ac_pass in 1 2
+ do
+   for ac_arg
+   do
+     case $ac_arg in
+     -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+     -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+     | -silent | --silent | --silen | --sile | --sil)
+       continue ;;
+     *\'*)
+       ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+     esac
+     case $ac_pass in
+     1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+     2)
+       as_fn_append ac_configure_args1 " '$ac_arg'"
+       if test $ac_must_keep_next = true; then
+ 	ac_must_keep_next=false # Got value, back to normal.
+       else
+ 	case $ac_arg in
+ 	  *=* | --config-cache | -C | -disable-* | --disable-* \
+ 	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ 	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ 	  | -with-* | --with-* | -without-* | --without-* | --x)
+ 	    case "$ac_configure_args0 " in
+ 	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ 	    esac
+ 	    ;;
+ 	  -* ) ac_must_keep_next=true ;;
+ 	esac
+       fi
+       as_fn_append ac_configure_args " '$ac_arg'"
+       ;;
+     esac
+   done
+ done
+ { ac_configure_args0=; unset ac_configure_args0;}
+ { ac_configure_args1=; unset ac_configure_args1;}
+ 
+ # When interrupted or exit'd, cleanup temporary files, and complete
+ # config.log.  We remove comments because anyway the quotes in there
+ # would cause problems or look ugly.
+ # WARNING: Use '\'' to represent an apostrophe within the trap.
+ # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+ trap 'exit_status=$?
+   # Save into config.log some information that might help in debugging.
+   {
+     echo
+ 
+     $as_echo "## ---------------- ##
+ ## Cache variables. ##
+ ## ---------------- ##"
+     echo
+     # The following way of writing the cache mishandles newlines in values,
+ (
+   for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+     eval ac_val=\$$ac_var
+     case $ac_val in #(
+     *${as_nl}*)
+       case $ac_var in #(
+       *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+       esac
+       case $ac_var in #(
+       _ | IFS | as_nl) ;; #(
+       BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+       *) { eval $ac_var=; unset $ac_var;} ;;
+       esac ;;
+     esac
+   done
+   (set) 2>&1 |
+     case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+     *${as_nl}ac_space=\ *)
+       sed -n \
+ 	"s/'\''/'\''\\\\'\'''\''/g;
+ 	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+       ;; #(
+     *)
+       sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+       ;;
+     esac |
+     sort
+ )
+     echo
+ 
+     $as_echo "## ----------------- ##
+ ## Output variables. ##
+ ## ----------------- ##"
+     echo
+     for ac_var in $ac_subst_vars
+     do
+       eval ac_val=\$$ac_var
+       case $ac_val in
+       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+       esac
+       $as_echo "$ac_var='\''$ac_val'\''"
+     done | sort
+     echo
+ 
+     if test -n "$ac_subst_files"; then
+       $as_echo "## ------------------- ##
+ ## File substitutions. ##
+ ## ------------------- ##"
+       echo
+       for ac_var in $ac_subst_files
+       do
+ 	eval ac_val=\$$ac_var
+ 	case $ac_val in
+ 	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ 	esac
+ 	$as_echo "$ac_var='\''$ac_val'\''"
+       done | sort
+       echo
+     fi
+ 
+     if test -s confdefs.h; then
+       $as_echo "## ----------- ##
+ ## confdefs.h. ##
+ ## ----------- ##"
+       echo
+       cat confdefs.h
+       echo
+     fi
+     test "$ac_signal" != 0 &&
+       $as_echo "$as_me: caught signal $ac_signal"
+     $as_echo "$as_me: exit $exit_status"
+   } >&5
+   rm -f core *.core core.conftest.* &&
+     rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+     exit $exit_status
+ ' 0
+ for ac_signal in 1 2 13 15; do
+   trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+ done
+ ac_signal=0
+ 
+ # confdefs.h avoids OS command line length limits that DEFS can exceed.
+ rm -f -r conftest* confdefs.h
+ 
+ $as_echo "/* confdefs.h */" > confdefs.h
+ 
+ # Predefined preprocessor variables.
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define PACKAGE_NAME "$PACKAGE_NAME"
+ _ACEOF
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+ _ACEOF
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define PACKAGE_VERSION "$PACKAGE_VERSION"
+ _ACEOF
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define PACKAGE_STRING "$PACKAGE_STRING"
+ _ACEOF
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+ _ACEOF
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define PACKAGE_URL "$PACKAGE_URL"
+ _ACEOF
+ 
+ 
+ # Let the site file select an alternate cache file if it wants to.
+ # Prefer an explicitly selected file to automatically selected ones.
+ ac_site_file1=NONE
+ ac_site_file2=NONE
+ if test -n "$CONFIG_SITE"; then
+   # We do not want a PATH search for config.site.
+   case $CONFIG_SITE in #((
+     -*)  ac_site_file1=./$CONFIG_SITE;;
+     */*) ac_site_file1=$CONFIG_SITE;;
+     *)   ac_site_file1=./$CONFIG_SITE;;
+   esac
+ elif test "x$prefix" != xNONE; then
+   ac_site_file1=$prefix/share/config.site
+   ac_site_file2=$prefix/etc/config.site
+ else
+   ac_site_file1=$ac_default_prefix/share/config.site
+   ac_site_file2=$ac_default_prefix/etc/config.site
+ fi
+ for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+ do
+   test "x$ac_site_file" = xNONE && continue
+   if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+ $as_echo "$as_me: loading site script $ac_site_file" >&6;}
+     sed 's/^/| /' "$ac_site_file" >&5
+     . "$ac_site_file" \
+       || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ as_fn_error $? "failed to load site script $ac_site_file
+ See \`config.log' for more details" "$LINENO" 5; }
+   fi
+ done
+ 
+ if test -r "$cache_file"; then
+   # Some versions of bash will fail to source /dev/null (special files
+   # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+   if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+ $as_echo "$as_me: loading cache $cache_file" >&6;}
+     case $cache_file in
+       [\\/]* | ?:[\\/]* ) . "$cache_file";;
+       *)                      . "./$cache_file";;
+     esac
+   fi
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+ $as_echo "$as_me: creating cache $cache_file" >&6;}
+   >$cache_file
+ fi
+ 
+ # Check that the precious variables saved in the cache have kept the same
+ # value.
+ ac_cache_corrupted=false
+ for ac_var in $ac_precious_vars; do
+   eval ac_old_set=\$ac_cv_env_${ac_var}_set
+   eval ac_new_set=\$ac_env_${ac_var}_set
+   eval ac_old_val=\$ac_cv_env_${ac_var}_value
+   eval ac_new_val=\$ac_env_${ac_var}_value
+   case $ac_old_set,$ac_new_set in
+     set,)
+       { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+ $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+       ac_cache_corrupted=: ;;
+     ,set)
+       { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+       ac_cache_corrupted=: ;;
+     ,);;
+     *)
+       if test "x$ac_old_val" != "x$ac_new_val"; then
+ 	# differences in whitespace do not lead to failure.
+ 	ac_old_val_w=`echo x $ac_old_val`
+ 	ac_new_val_w=`echo x $ac_new_val`
+ 	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ 	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+ $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ 	  ac_cache_corrupted=:
+ 	else
+ 	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+ $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ 	  eval $ac_var=\$ac_old_val
+ 	fi
+ 	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+ $as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+ 	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+ $as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+       fi;;
+   esac
+   # Pass precious variables to config.status.
+   if test "$ac_new_set" = set; then
+     case $ac_new_val in
+     *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+     *) ac_arg=$ac_var=$ac_new_val ;;
+     esac
+     case " $ac_configure_args " in
+       *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+       *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+     esac
+   fi
+ done
+ if $ac_cache_corrupted; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+ $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+   as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+ fi
+ ## -------------------- ##
+ ## Main body of script. ##
+ ## -------------------- ##
+ 
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ 
+ 
+ 
+ 
+ 
+ # Determine the noncanonical names used for directories.
+ ac_aux_dir=
+ for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+   if test -f "$ac_dir/install-sh"; then
+     ac_aux_dir=$ac_dir
+     ac_install_sh="$ac_aux_dir/install-sh -c"
+     break
+   elif test -f "$ac_dir/install.sh"; then
+     ac_aux_dir=$ac_dir
+     ac_install_sh="$ac_aux_dir/install.sh -c"
+     break
+   elif test -f "$ac_dir/shtool"; then
+     ac_aux_dir=$ac_dir
+     ac_install_sh="$ac_aux_dir/shtool install -c"
+     break
+   fi
+ done
+ if test -z "$ac_aux_dir"; then
+   as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+ fi
+ 
+ # These three variables are undocumented and unsupported,
+ # and are intended to be withdrawn in a future Autoconf release.
+ # They can cause serious problems if a builder's source tree is in a directory
+ # whose full name contains unusual characters.
+ ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+ 
+ 
+ # Make sure we can run config.sub.
+ $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+   as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+ $as_echo_n "checking build system type... " >&6; }
+ if ${ac_cv_build+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   ac_build_alias=$build_alias
+ test "x$ac_build_alias" = x &&
+   ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+ test "x$ac_build_alias" = x &&
+   as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+   as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+ 
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+ $as_echo "$ac_cv_build" >&6; }
+ case $ac_cv_build in
+ *-*-*) ;;
+ *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+ esac
+ build=$ac_cv_build
+ ac_save_IFS=$IFS; IFS='-'
+ set x $ac_cv_build
+ shift
+ build_cpu=$1
+ build_vendor=$2
+ shift; shift
+ # Remember, the first character of IFS is used to create $*,
+ # except with old shells:
+ build_os=$*
+ IFS=$ac_save_IFS
+ case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+ 
+ 
+  case ${build_alias} in
+   "") build_noncanonical=${build} ;;
+   *) build_noncanonical=${build_alias} ;;
+ esac
+ 
+  case ${host_alias} in
+   "") host_noncanonical=${build_noncanonical} ;;
+   *) host_noncanonical=${host_alias} ;;
+ esac
+ 
+  case ${target_alias} in
+   "") target_noncanonical=${host_noncanonical} ;;
+   *) target_noncanonical=${target_alias} ;;
+ esac
+ 
+ 
+ 
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+ $as_echo_n "checking host system type... " >&6; }
+ if ${ac_cv_host+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test "x$host_alias" = x; then
+   ac_cv_host=$ac_cv_build
+ else
+   ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+     as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+ fi
+ 
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+ $as_echo "$ac_cv_host" >&6; }
+ case $ac_cv_host in
+ *-*-*) ;;
+ *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+ esac
+ host=$ac_cv_host
+ ac_save_IFS=$IFS; IFS='-'
+ set x $ac_cv_host
+ shift
+ host_cpu=$1
+ host_vendor=$2
+ shift; shift
+ # Remember, the first character of IFS is used to create $*,
+ # except with old shells:
+ host_os=$*
+ IFS=$ac_save_IFS
+ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+ 
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+ $as_echo_n "checking target system type... " >&6; }
+ if ${ac_cv_target+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test "x$target_alias" = x; then
+   ac_cv_target=$ac_cv_host
+ else
+   ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+     as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+ fi
+ 
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+ $as_echo "$ac_cv_target" >&6; }
+ case $ac_cv_target in
+ *-*-*) ;;
+ *) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
+ esac
+ target=$ac_cv_target
+ ac_save_IFS=$IFS; IFS='-'
+ set x $ac_cv_target
+ shift
+ target_cpu=$1
+ target_vendor=$2
+ shift; shift
+ # Remember, the first character of IFS is used to create $*,
+ # except with old shells:
+ target_os=$*
+ IFS=$ac_save_IFS
+ case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+ 
+ 
+ # The aliases save the names the user supplied, while $host etc.
+ # will get canonicalized.
+ test -n "$target_alias" &&
+   test "$program_prefix$program_suffix$program_transform_name" = \
+     NONENONEs,x,x, &&
+   program_prefix=${target_alias}-
+ 
+ # Find a good install program.  We prefer a C program (faster),
+ # so one script is as good as another.  But avoid the broken or
+ # incompatible versions:
+ # SysV /etc/install, /usr/sbin/install
+ # SunOS /usr/etc/install
+ # IRIX /sbin/install
+ # AIX /bin/install
+ # AmigaOS /C/install, which installs bootblocks on floppy discs
+ # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+ # AFS /usr/afsws/bin/install, which mishandles nonexistent args
+ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+ # OS/2's system install, which has a completely different semantic
+ # ./install, which can be erroneously created by make from ./install.sh.
+ # Reject install programs that cannot install multiple files.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+ $as_echo_n "checking for a BSD-compatible install... " >&6; }
+ if test -z "$INSTALL"; then
+ if ${ac_cv_path_install+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     # Account for people who put trailing slashes in PATH elements.
+ case $as_dir/ in #((
+   ./ | .// | /[cC]/* | \
+   /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+   ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+   /usr/ucb/* ) ;;
+   *)
+     # OSF1 and SCO ODT 3.0 have their own names for install.
+     # Don't use installbsd from OSF since it installs stuff as root
+     # by default.
+     for ac_prog in ginstall scoinst install; do
+       for ac_exec_ext in '' $ac_executable_extensions; do
+ 	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ 	  if test $ac_prog = install &&
+ 	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ 	    # AIX install.  It has an incompatible calling convention.
+ 	    :
+ 	  elif test $ac_prog = install &&
+ 	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ 	    # program-specific install script used by HP pwplus--don't use.
+ 	    :
+ 	  else
+ 	    rm -rf conftest.one conftest.two conftest.dir
+ 	    echo one > conftest.one
+ 	    echo two > conftest.two
+ 	    mkdir conftest.dir
+ 	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ 	      test -s conftest.one && test -s conftest.two &&
+ 	      test -s conftest.dir/conftest.one &&
+ 	      test -s conftest.dir/conftest.two
+ 	    then
+ 	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ 	      break 3
+ 	    fi
+ 	  fi
+ 	fi
+       done
+     done
+     ;;
+ esac
+ 
+   done
+ IFS=$as_save_IFS
+ 
+ rm -rf conftest.one conftest.two conftest.dir
+ 
+ fi
+   if test "${ac_cv_path_install+set}" = set; then
+     INSTALL=$ac_cv_path_install
+   else
+     # As a last resort, use the slow shell script.  Don't cache a
+     # value for INSTALL within a source directory, because that will
+     # break other packages using the cache if that directory is
+     # removed, or if the value is a relative name.
+     INSTALL=$ac_install_sh
+   fi
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+ $as_echo "$INSTALL" >&6; }
+ 
+ # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+ # It thinks the first close brace ends the variable substitution.
+ test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+ 
+ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+ 
+ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+ 
+ test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+ 
+ 
+ ac_ext=cpp
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+ if test -z "$CXX"; then
+   if test -n "$CCC"; then
+     CXX=$CCC
+   else
+     if test -n "$ac_tool_prefix"; then
+   for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+   do
+     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+ set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_CXX+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$CXX"; then
+   ac_cv_prog_CXX="$CXX" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+     ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+ done
+   done
+ IFS=$as_save_IFS
+ 
+ fi
+ fi
+ CXX=$ac_cv_prog_CXX
+ if test -n "$CXX"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+ $as_echo "$CXX" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+     test -n "$CXX" && break
+   done
+ fi
+ if test -z "$CXX"; then
+   ac_ct_CXX=$CXX
+   for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+ do
+   # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$ac_ct_CXX"; then
+   ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+     ac_cv_prog_ac_ct_CXX="$ac_prog"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+ done
+   done
+ IFS=$as_save_IFS
+ 
+ fi
+ fi
+ ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+ if test -n "$ac_ct_CXX"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+ $as_echo "$ac_ct_CXX" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+   test -n "$ac_ct_CXX" && break
+ done
+ 
+   if test "x$ac_ct_CXX" = x; then
+     CXX="g++"
+   else
+     case $cross_compiling:$ac_tool_warned in
+ yes:)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+ $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ ac_tool_warned=yes ;;
+ esac
+     CXX=$ac_ct_CXX
+   fi
+ fi
+ 
+   fi
+ fi
+ # Provide some information about the compiler.
+ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+ set X $ac_compile
+ ac_compiler=$2
+ for ac_option in --version -v -V -qversion; do
+   { { ac_try="$ac_compiler $ac_option >&5"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+ $as_echo "$ac_try_echo"; } >&5
+   (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+   ac_status=$?
+   if test -s conftest.err; then
+     sed '10a\
+ ... rest of stderr output deleted ...
+          10q' conftest.err >conftest.er1
+     cat conftest.er1 >&5
+   fi
+   rm -f conftest.er1 conftest.err
+   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+   test $ac_status = 0; }
+ done
+ 
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ int
+ main ()
+ {
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ ac_clean_files_save=$ac_clean_files
+ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+ # Try to create an executable without -o first, disregard a.out.
+ # It will help us diagnose broken compilers, and finding out an intuition
+ # of exeext.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5
+ $as_echo_n "checking whether the C++ compiler works... " >&6; }
+ ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+ 
+ # The possible output files:
+ ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+ 
+ ac_rmfiles=
+ for ac_file in $ac_files
+ do
+   case $ac_file in
+     *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+     * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+   esac
+ done
+ rm -f $ac_rmfiles
+ 
+ if { { ac_try="$ac_link_default"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+ $as_echo "$ac_try_echo"; } >&5
+   (eval "$ac_link_default") 2>&5
+   ac_status=$?
+   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+   test $ac_status = 0; }; then :
+   # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+ # So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+ # in a Makefile.  We should not override ac_cv_exeext if it was cached,
+ # so that the user can short-circuit this test for compilers unknown to
+ # Autoconf.
+ for ac_file in $ac_files ''
+ do
+   test -f "$ac_file" || continue
+   case $ac_file in
+     *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ 	;;
+     [ab].out )
+ 	# We found the default executable, but exeext='' is most
+ 	# certainly right.
+ 	break;;
+     *.* )
+ 	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ 	then :; else
+ 	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ 	fi
+ 	# We set ac_cv_exeext here because the later test for it is not
+ 	# safe: cross compilers may not add the suffix if given an `-o'
+ 	# argument, so we may need to know it at that point already.
+ 	# Even if this section looks crufty: it has the advantage of
+ 	# actually working.
+ 	break;;
+     * )
+ 	break;;
+   esac
+ done
+ test "$ac_cv_exeext" = no && ac_cv_exeext=
+ 
+ else
+   ac_file=''
+ fi
+ if test -z "$ac_file"; then :
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ $as_echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+ 
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ as_fn_error 77 "C++ compiler cannot create executables
+ See \`config.log' for more details" "$LINENO" 5; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ $as_echo "yes" >&6; }
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5
+ $as_echo_n "checking for C++ compiler default output file name... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+ $as_echo "$ac_file" >&6; }
+ ac_exeext=$ac_cv_exeext
+ 
+ rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ ac_clean_files=$ac_clean_files_save
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+ $as_echo_n "checking for suffix of executables... " >&6; }
+ if { { ac_try="$ac_link"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+ $as_echo "$ac_try_echo"; } >&5
+   (eval "$ac_link") 2>&5
+   ac_status=$?
+   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+   test $ac_status = 0; }; then :
+   # If both `conftest.exe' and `conftest' are `present' (well, observable)
+ # catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+ # work properly (i.e., refer to `conftest.exe'), while it won't with
+ # `rm'.
+ for ac_file in conftest.exe conftest conftest.*; do
+   test -f "$ac_file" || continue
+   case $ac_file in
+     *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+     *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ 	  break;;
+     * ) break;;
+   esac
+ done
+ else
+   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+ See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ rm -f conftest conftest$ac_cv_exeext
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+ $as_echo "$ac_cv_exeext" >&6; }
+ 
+ rm -f conftest.$ac_ext
+ EXEEXT=$ac_cv_exeext
+ ac_exeext=$EXEEXT
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ #include <stdio.h>
+ int
+ main ()
+ {
+ FILE *f = fopen ("conftest.out", "w");
+  return ferror (f) || fclose (f) != 0;
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ ac_clean_files="$ac_clean_files conftest.out"
+ # Check that the compiler produces executables we can run.  If not, either
+ # the compiler is broken, or we cross compile.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+ $as_echo_n "checking whether we are cross compiling... " >&6; }
+ if test "$cross_compiling" != yes; then
+   { { ac_try="$ac_link"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+ $as_echo "$ac_try_echo"; } >&5
+   (eval "$ac_link") 2>&5
+   ac_status=$?
+   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+   test $ac_status = 0; }
+   if { ac_try='./conftest$ac_cv_exeext'
+   { { case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+ $as_echo "$ac_try_echo"; } >&5
+   (eval "$ac_try") 2>&5
+   ac_status=$?
+   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+   test $ac_status = 0; }; }; then
+     cross_compiling=no
+   else
+     if test "$cross_compiling" = maybe; then
+ 	cross_compiling=yes
+     else
+ 	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ as_fn_error $? "cannot run C++ compiled programs.
+ If you meant to cross compile, use \`--host'.
+ See \`config.log' for more details" "$LINENO" 5; }
+     fi
+   fi
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+ $as_echo "$cross_compiling" >&6; }
+ 
+ rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ ac_clean_files=$ac_clean_files_save
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+ $as_echo_n "checking for suffix of object files... " >&6; }
+ if ${ac_cv_objext+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ int
+ main ()
+ {
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ rm -f conftest.o conftest.obj
+ if { { ac_try="$ac_compile"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+ $as_echo "$ac_try_echo"; } >&5
+   (eval "$ac_compile") 2>&5
+   ac_status=$?
+   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+   test $ac_status = 0; }; then :
+   for ac_file in conftest.o conftest.obj conftest.*; do
+   test -f "$ac_file" || continue;
+   case $ac_file in
+     *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+     *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+        break;;
+   esac
+ done
+ else
+   $as_echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+ 
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ as_fn_error $? "cannot compute suffix of object files: cannot compile
+ See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ rm -f conftest.$ac_cv_objext conftest.$ac_ext
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+ $as_echo "$ac_cv_objext" >&6; }
+ OBJEXT=$ac_cv_objext
+ ac_objext=$OBJEXT
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+ $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+ if ${ac_cv_cxx_compiler_gnu+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ int
+ main ()
+ {
+ #ifndef __GNUC__
+        choke me
+ #endif
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_cxx_try_compile "$LINENO"; then :
+   ac_compiler_gnu=yes
+ else
+   ac_compiler_gnu=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+ 
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+ $as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+ if test $ac_compiler_gnu = yes; then
+   GXX=yes
+ else
+   GXX=
+ fi
+ ac_test_CXXFLAGS=${CXXFLAGS+set}
+ ac_save_CXXFLAGS=$CXXFLAGS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+ $as_echo_n "checking whether $CXX accepts -g... " >&6; }
+ if ${ac_cv_prog_cxx_g+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+    ac_cxx_werror_flag=yes
+    ac_cv_prog_cxx_g=no
+    CXXFLAGS="-g"
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ int
+ main ()
+ {
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_cxx_try_compile "$LINENO"; then :
+   ac_cv_prog_cxx_g=yes
+ else
+   CXXFLAGS=""
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ int
+ main ()
+ {
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_cxx_try_compile "$LINENO"; then :
+ 
+ else
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+ 	 CXXFLAGS="-g"
+ 	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ int
+ main ()
+ {
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_cxx_try_compile "$LINENO"; then :
+   ac_cv_prog_cxx_g=yes
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+ $as_echo "$ac_cv_prog_cxx_g" >&6; }
+ if test "$ac_test_CXXFLAGS" = set; then
+   CXXFLAGS=$ac_save_CXXFLAGS
+ elif test $ac_cv_prog_cxx_g = yes; then
+   if test "$GXX" = yes; then
+     CXXFLAGS="-g -O2"
+   else
+     CXXFLAGS="-g"
+   fi
+ else
+   if test "$GXX" = yes; then
+     CXXFLAGS="-O2"
+   else
+     CXXFLAGS=
+   fi
+ fi
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ 
+ MISSING=`cd $ac_aux_dir && ${PWDCMD-pwd}`/missing
+ for ac_prog in autoconf
+ do
+   # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_AUTOCONF+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$AUTOCONF"; then
+   ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+     ac_cv_prog_AUTOCONF="$ac_prog"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+ done
+   done
+ IFS=$as_save_IFS
+ 
+ fi
+ fi
+ AUTOCONF=$ac_cv_prog_AUTOCONF
+ if test -n "$AUTOCONF"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AUTOCONF" >&5
+ $as_echo "$AUTOCONF" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+   test -n "$AUTOCONF" && break
+ done
+ test -n "$AUTOCONF" || AUTOCONF="$MISSING autoconf"
+ 
+ for ac_prog in autoheader
+ do
+   # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_AUTOHEADER+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$AUTOHEADER"; then
+   ac_cv_prog_AUTOHEADER="$AUTOHEADER" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+     ac_cv_prog_AUTOHEADER="$ac_prog"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+ done
+   done
+ IFS=$as_save_IFS
+ 
+ fi
+ fi
+ AUTOHEADER=$ac_cv_prog_AUTOHEADER
+ if test -n "$AUTOHEADER"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AUTOHEADER" >&5
+ $as_echo "$AUTOHEADER" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+   test -n "$AUTOHEADER" && break
+ done
+ test -n "$AUTOHEADER" || AUTOHEADER="$MISSING autoheader"
+ 
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build C++ tools" >&5
+ $as_echo_n "checking whether to build C++ tools... " >&6; }
+   # Check whether --enable-c++-tools was given.
+ if test "${enable_c___tools+set}" = set; then :
+   enableval=$enable_c___tools; cxx_aux_tools=$enableval
+ else
+   cxx_aux_tools=yes
+ fi
+ 
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cxx_aux_tools" >&5
+ $as_echo "$cxx_aux_tools" >&6; }
+ CXX_AUX_TOOLS="$cxx_aux_tools"
+ 
+ 
+ # Check whether --enable-maintainer-mode was given.
+ if test "${enable_maintainer_mode+set}" = set; then :
+   enableval=$enable_maintainer_mode;
+ else
+   enable_maintainer_mode=no
+ fi
+ 
+ case "$enable_maintainer_mode" in
+   ("yes") maintainer_mode=yes ;;
+   ("no") maintainer=no ;;
+   (*) as_fn_error $? "unknown maintainer mode $enable_maintainer_mode" "$LINENO" 5 ;;
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking maintainer-mode" >&5
+ $as_echo_n "checking maintainer-mode... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $maintainer_mode" >&5
+ $as_echo "$maintainer_mode" >&6; }
+ test "$maintainer_mode" = yes && MAINTAINER=yes
+ 
+ 
+ # Check whether --enable-default-pie was given.
+ # Check whether --enable-default-pie was given.
+ if test "${enable_default_pie+set}" = set; then :
+   enableval=$enable_default_pie; PIEFLAG=-fPIE
+ else
+   PIEFLAG=
+ fi
+ 
+ 
+ 
+ # Check if O_CLOEXEC is defined by fcntl
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ if test -n "$ac_tool_prefix"; then
+   # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}gcc; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_CC+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$CC"; then
+   ac_cv_prog_CC="$CC" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+     ac_cv_prog_CC="${ac_tool_prefix}gcc"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+ done
+   done
+ IFS=$as_save_IFS
+ 
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+ $as_echo "$CC" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+ fi
+ if test -z "$ac_cv_prog_CC"; then
+   ac_ct_CC=$CC
+   # Extract the first word of "gcc", so it can be a program name with args.
+ set dummy gcc; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_ac_ct_CC+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$ac_ct_CC"; then
+   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+     ac_cv_prog_ac_ct_CC="gcc"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+ done
+   done
+ IFS=$as_save_IFS
+ 
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+ $as_echo "$ac_ct_CC" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+   if test "x$ac_ct_CC" = x; then
+     CC=""
+   else
+     case $cross_compiling:$ac_tool_warned in
+ yes:)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+ $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ ac_tool_warned=yes ;;
+ esac
+     CC=$ac_ct_CC
+   fi
+ else
+   CC="$ac_cv_prog_CC"
+ fi
+ 
+ if test -z "$CC"; then
+           if test -n "$ac_tool_prefix"; then
+     # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}cc; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_CC+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$CC"; then
+   ac_cv_prog_CC="$CC" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+     ac_cv_prog_CC="${ac_tool_prefix}cc"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+ done
+   done
+ IFS=$as_save_IFS
+ 
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+ $as_echo "$CC" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+   fi
+ fi
+ if test -z "$CC"; then
+   # Extract the first word of "cc", so it can be a program name with args.
+ set dummy cc; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_CC+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$CC"; then
+   ac_cv_prog_CC="$CC" # Let the user override the test.
+ else
+   ac_prog_rejected=no
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+        ac_prog_rejected=yes
+        continue
+      fi
+     ac_cv_prog_CC="cc"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+ done
+   done
+ IFS=$as_save_IFS
+ 
+ if test $ac_prog_rejected = yes; then
+   # We found a bogon in the path, so make sure we never use it.
+   set dummy $ac_cv_prog_CC
+   shift
+   if test $# != 0; then
+     # We chose a different compiler from the bogus one.
+     # However, it has the same basename, so the bogon will be chosen
+     # first if we set CC to just the basename; use the full file name.
+     shift
+     ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+   fi
+ fi
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+ $as_echo "$CC" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+ fi
+ if test -z "$CC"; then
+   if test -n "$ac_tool_prefix"; then
+   for ac_prog in cl.exe
+   do
+     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+ set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_CC+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$CC"; then
+   ac_cv_prog_CC="$CC" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+ done
+   done
+ IFS=$as_save_IFS
+ 
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+ $as_echo "$CC" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+     test -n "$CC" && break
+   done
+ fi
+ if test -z "$CC"; then
+   ac_ct_CC=$CC
+   for ac_prog in cl.exe
+ do
+   # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_ac_ct_CC+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$ac_ct_CC"; then
+   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+     ac_cv_prog_ac_ct_CC="$ac_prog"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+ done
+   done
+ IFS=$as_save_IFS
+ 
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+ $as_echo "$ac_ct_CC" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+   test -n "$ac_ct_CC" && break
+ done
+ 
+   if test "x$ac_ct_CC" = x; then
+     CC=""
+   else
+     case $cross_compiling:$ac_tool_warned in
+ yes:)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+ $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ ac_tool_warned=yes ;;
+ esac
+     CC=$ac_ct_CC
+   fi
+ fi
+ 
+ fi
+ 
+ 
+ test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ as_fn_error $? "no acceptable C compiler found in \$PATH
+ See \`config.log' for more details" "$LINENO" 5; }
+ 
+ # Provide some information about the compiler.
+ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+ set X $ac_compile
+ ac_compiler=$2
+ for ac_option in --version -v -V -qversion; do
+   { { ac_try="$ac_compiler $ac_option >&5"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+ $as_echo "$ac_try_echo"; } >&5
+   (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+   ac_status=$?
+   if test -s conftest.err; then
+     sed '10a\
+ ... rest of stderr output deleted ...
+          10q' conftest.err >conftest.er1
+     cat conftest.er1 >&5
+   fi
+   rm -f conftest.er1 conftest.err
+   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+   test $ac_status = 0; }
+ done
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+ $as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+ if ${ac_cv_c_compiler_gnu+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ int
+ main ()
+ {
+ #ifndef __GNUC__
+        choke me
+ #endif
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   ac_compiler_gnu=yes
+ else
+   ac_compiler_gnu=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_c_compiler_gnu=$ac_compiler_gnu
+ 
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+ $as_echo "$ac_cv_c_compiler_gnu" >&6; }
+ if test $ac_compiler_gnu = yes; then
+   GCC=yes
+ else
+   GCC=
+ fi
+ ac_test_CFLAGS=${CFLAGS+set}
+ ac_save_CFLAGS=$CFLAGS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+ $as_echo_n "checking whether $CC accepts -g... " >&6; }
+ if ${ac_cv_prog_cc_g+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   ac_save_c_werror_flag=$ac_c_werror_flag
+    ac_c_werror_flag=yes
+    ac_cv_prog_cc_g=no
+    CFLAGS="-g"
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ int
+ main ()
+ {
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_prog_cc_g=yes
+ else
+   CFLAGS=""
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ int
+ main ()
+ {
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+ 
+ else
+   ac_c_werror_flag=$ac_save_c_werror_flag
+ 	 CFLAGS="-g"
+ 	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ int
+ main ()
+ {
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_prog_cc_g=yes
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_c_werror_flag=$ac_save_c_werror_flag
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+ $as_echo "$ac_cv_prog_cc_g" >&6; }
+ if test "$ac_test_CFLAGS" = set; then
+   CFLAGS=$ac_save_CFLAGS
+ elif test $ac_cv_prog_cc_g = yes; then
+   if test "$GCC" = yes; then
+     CFLAGS="-g -O2"
+   else
+     CFLAGS="-g"
+   fi
+ else
+   if test "$GCC" = yes; then
+     CFLAGS="-O2"
+   else
+     CFLAGS=
+   fi
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+ $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+ if ${ac_cv_prog_cc_c89+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   ac_cv_prog_cc_c89=no
+ ac_save_CC=$CC
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ #include <stdarg.h>
+ #include <stdio.h>
+ struct stat;
+ /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+ struct buf { int x; };
+ FILE * (*rcsopen) (struct buf *, struct stat *, int);
+ static char *e (p, i)
+      char **p;
+      int i;
+ {
+   return p[i];
+ }
+ static char *f (char * (*g) (char **, int), char **p, ...)
+ {
+   char *s;
+   va_list v;
+   va_start (v,p);
+   s = g (p, va_arg (v,int));
+   va_end (v);
+   return s;
+ }
+ 
+ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+    function prototypes and stuff, but not '\xHH' hex character constants.
+    These don't provoke an error unfortunately, instead are silently treated
+    as 'x'.  The following induces an error, until -std is added to get
+    proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+    array size at least.  It's necessary to write '\x00'==0 to get something
+    that's true only with -std.  */
+ int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+ 
+ /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+    inside strings and character constants.  */
+ #define FOO(x) 'x'
+ int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+ 
+ int test (int i, double x);
+ struct s1 {int (*f) (int a);};
+ struct s2 {int (*f) (double a);};
+ int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+ int argc;
+ char **argv;
+ int
+ main ()
+ {
+ return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+   ;
+   return 0;
+ }
+ _ACEOF
+ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ 	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+ do
+   CC="$ac_save_CC $ac_arg"
+   if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_prog_cc_c89=$ac_arg
+ fi
+ rm -f core conftest.err conftest.$ac_objext
+   test "x$ac_cv_prog_cc_c89" != "xno" && break
+ done
+ rm -f conftest.$ac_ext
+ CC=$ac_save_CC
+ 
+ fi
+ # AC_CACHE_VAL
+ case "x$ac_cv_prog_cc_c89" in
+   x)
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+ $as_echo "none needed" >&6; } ;;
+   xno)
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+ $as_echo "unsupported" >&6; } ;;
+   *)
+     CC="$CC $ac_cv_prog_cc_c89"
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+ $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+ esac
+ if test "x$ac_cv_prog_cc_c89" != xno; then :
+ 
+ fi
+ 
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ 
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for O_CLOEXEC" >&5
+ $as_echo_n "checking for O_CLOEXEC... " >&6; }
+ if ${ac_cv_o_cloexec+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+ 
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ #include <fcntl.h>
+ int
+ main ()
+ {
+ 
+ return open ("/dev/null", O_RDONLY | O_CLOEXEC);
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_o_cloexec=yes
+ else
+   ac_cv_o_cloexec=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_o_cloexec" >&5
+ $as_echo "$ac_cv_o_cloexec" >&6; }
+ if test $ac_cv_o_cloexec = yes; then
+ 
+ $as_echo "#define HOST_HAS_O_CLOEXEC 1" >>confdefs.h
+ 
+ fi
+ 
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+ $as_echo_n "checking how to run the C preprocessor... " >&6; }
+ # On Suns, sometimes $CPP names a directory.
+ if test -n "$CPP" && test -d "$CPP"; then
+   CPP=
+ fi
+ if test -z "$CPP"; then
+   if ${ac_cv_prog_CPP+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+       # Double quotes because CPP needs to be expanded
+     for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+     do
+       ac_preproc_ok=false
+ for ac_c_preproc_warn_flag in '' yes
+ do
+   # Use a header file that comes with gcc, so configuring glibc
+   # with a fresh cross-compiler works.
+   # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+   # <limits.h> exists even on freestanding compilers.
+   # On the NeXT, cc -E runs the code through the compiler's parser,
+   # not just through cpp. "Syntax error" is here to catch this case.
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ #ifdef __STDC__
+ # include <limits.h>
+ #else
+ # include <assert.h>
+ #endif
+ 		     Syntax error
+ _ACEOF
+ if ac_fn_c_try_cpp "$LINENO"; then :
+ 
+ else
+   # Broken: fails on valid input.
+ continue
+ fi
+ rm -f conftest.err conftest.i conftest.$ac_ext
+ 
+   # OK, works on sane cases.  Now check whether nonexistent headers
+   # can be detected and how.
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ #include <ac_nonexistent.h>
+ _ACEOF
+ if ac_fn_c_try_cpp "$LINENO"; then :
+   # Broken: success on invalid input.
+ continue
+ else
+   # Passes both tests.
+ ac_preproc_ok=:
+ break
+ fi
+ rm -f conftest.err conftest.i conftest.$ac_ext
+ 
+ done
+ # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+ rm -f conftest.i conftest.err conftest.$ac_ext
+ if $ac_preproc_ok; then :
+   break
+ fi
+ 
+     done
+     ac_cv_prog_CPP=$CPP
+ 
+ fi
+   CPP=$ac_cv_prog_CPP
+ else
+   ac_cv_prog_CPP=$CPP
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+ $as_echo "$CPP" >&6; }
+ ac_preproc_ok=false
+ for ac_c_preproc_warn_flag in '' yes
+ do
+   # Use a header file that comes with gcc, so configuring glibc
+   # with a fresh cross-compiler works.
+   # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+   # <limits.h> exists even on freestanding compilers.
+   # On the NeXT, cc -E runs the code through the compiler's parser,
+   # not just through cpp. "Syntax error" is here to catch this case.
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ #ifdef __STDC__
+ # include <limits.h>
+ #else
+ # include <assert.h>
+ #endif
+ 		     Syntax error
+ _ACEOF
+ if ac_fn_c_try_cpp "$LINENO"; then :
+ 
+ else
+   # Broken: fails on valid input.
+ continue
+ fi
+ rm -f conftest.err conftest.i conftest.$ac_ext
+ 
+   # OK, works on sane cases.  Now check whether nonexistent headers
+   # can be detected and how.
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ #include <ac_nonexistent.h>
+ _ACEOF
+ if ac_fn_c_try_cpp "$LINENO"; then :
+   # Broken: success on invalid input.
+ continue
+ else
+   # Passes both tests.
+ ac_preproc_ok=:
+ break
+ fi
+ rm -f conftest.err conftest.i conftest.$ac_ext
+ 
+ done
+ # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+ rm -f conftest.i conftest.err conftest.$ac_ext
+ if $ac_preproc_ok; then :
+ 
+ else
+   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+ See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ 
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ 
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+ $as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+ if ${ac_cv_path_GREP+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -z "$GREP"; then
+   ac_path_GREP_found=false
+   # Loop through the user's path and test for each of PROGNAME-LIST
+   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_prog in grep ggrep; do
+     for ac_exec_ext in '' $ac_executable_extensions; do
+       ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+       as_fn_executable_p "$ac_path_GREP" || continue
+ # Check for GNU ac_path_GREP and select it if it is found.
+   # Check for GNU $ac_path_GREP
+ case `"$ac_path_GREP" --version 2>&1` in
+ *GNU*)
+   ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+ *)
+   ac_count=0
+   $as_echo_n 0123456789 >"conftest.in"
+   while :
+   do
+     cat "conftest.in" "conftest.in" >"conftest.tmp"
+     mv "conftest.tmp" "conftest.in"
+     cp "conftest.in" "conftest.nl"
+     $as_echo 'GREP' >> "conftest.nl"
+     "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+     as_fn_arith $ac_count + 1 && ac_count=$as_val
+     if test $ac_count -gt ${ac_path_GREP_max-0}; then
+       # Best one so far, save it but keep looking for a better one
+       ac_cv_path_GREP="$ac_path_GREP"
+       ac_path_GREP_max=$ac_count
+     fi
+     # 10*(2^10) chars as input seems more than enough
+     test $ac_count -gt 10 && break
+   done
+   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+ esac
+ 
+       $ac_path_GREP_found && break 3
+     done
+   done
+   done
+ IFS=$as_save_IFS
+   if test -z "$ac_cv_path_GREP"; then
+     as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+   fi
+ else
+   ac_cv_path_GREP=$GREP
+ fi
+ 
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+ $as_echo "$ac_cv_path_GREP" >&6; }
+  GREP="$ac_cv_path_GREP"
+ 
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+ $as_echo_n "checking for egrep... " >&6; }
+ if ${ac_cv_path_EGREP+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+    then ac_cv_path_EGREP="$GREP -E"
+    else
+      if test -z "$EGREP"; then
+   ac_path_EGREP_found=false
+   # Loop through the user's path and test for each of PROGNAME-LIST
+   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_prog in egrep; do
+     for ac_exec_ext in '' $ac_executable_extensions; do
+       ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+       as_fn_executable_p "$ac_path_EGREP" || continue
+ # Check for GNU ac_path_EGREP and select it if it is found.
+   # Check for GNU $ac_path_EGREP
+ case `"$ac_path_EGREP" --version 2>&1` in
+ *GNU*)
+   ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+ *)
+   ac_count=0
+   $as_echo_n 0123456789 >"conftest.in"
+   while :
+   do
+     cat "conftest.in" "conftest.in" >"conftest.tmp"
+     mv "conftest.tmp" "conftest.in"
+     cp "conftest.in" "conftest.nl"
+     $as_echo 'EGREP' >> "conftest.nl"
+     "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+     as_fn_arith $ac_count + 1 && ac_count=$as_val
+     if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+       # Best one so far, save it but keep looking for a better one
+       ac_cv_path_EGREP="$ac_path_EGREP"
+       ac_path_EGREP_max=$ac_count
+     fi
+     # 10*(2^10) chars as input seems more than enough
+     test $ac_count -gt 10 && break
+   done
+   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+ esac
+ 
+       $ac_path_EGREP_found && break 3
+     done
+   done
+   done
+ IFS=$as_save_IFS
+   if test -z "$ac_cv_path_EGREP"; then
+     as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+   fi
+ else
+   ac_cv_path_EGREP=$EGREP
+ fi
+ 
+    fi
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+ $as_echo "$ac_cv_path_EGREP" >&6; }
+  EGREP="$ac_cv_path_EGREP"
+ 
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+ $as_echo_n "checking for ANSI C header files... " >&6; }
+ if ${ac_cv_header_stdc+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ #include <stdlib.h>
+ #include <stdarg.h>
+ #include <string.h>
+ #include <float.h>
+ 
+ int
+ main ()
+ {
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_header_stdc=yes
+ else
+   ac_cv_header_stdc=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ 
+ if test $ac_cv_header_stdc = yes; then
+   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ #include <string.h>
+ 
+ _ACEOF
+ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+   $EGREP "memchr" >/dev/null 2>&1; then :
+ 
+ else
+   ac_cv_header_stdc=no
+ fi
+ rm -f conftest*
+ 
+ fi
+ 
+ if test $ac_cv_header_stdc = yes; then
+   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ #include <stdlib.h>
+ 
+ _ACEOF
+ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+   $EGREP "free" >/dev/null 2>&1; then :
+ 
+ else
+   ac_cv_header_stdc=no
+ fi
+ rm -f conftest*
+ 
+ fi
+ 
+ if test $ac_cv_header_stdc = yes; then
+   # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+   if test "$cross_compiling" = yes; then :
+   :
+ else
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ #include <ctype.h>
+ #include <stdlib.h>
+ #if ((' ' & 0x0FF) == 0x020)
+ # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+ # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+ #else
+ # define ISLOWER(c) \
+ 		   (('a' <= (c) && (c) <= 'i') \
+ 		     || ('j' <= (c) && (c) <= 'r') \
+ 		     || ('s' <= (c) && (c) <= 'z'))
+ # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+ #endif
+ 
+ #define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+ int
+ main ()
+ {
+   int i;
+   for (i = 0; i < 256; i++)
+     if (XOR (islower (i), ISLOWER (i))
+ 	|| toupper (i) != TOUPPER (i))
+       return 2;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+ 
+ else
+   ac_cv_header_stdc=no
+ fi
+ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+   conftest.$ac_objext conftest.beam conftest.$ac_ext
+ fi
+ 
+ fi
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+ $as_echo "$ac_cv_header_stdc" >&6; }
+ if test $ac_cv_header_stdc = yes; then
+ 
+ $as_echo "#define STDC_HEADERS 1" >>confdefs.h
+ 
+ fi
+ 
+ # On IRIX 5.3, sys/types and inttypes.h are conflicting.
+ for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ 		  inttypes.h stdint.h unistd.h
+ do :
+   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+ "
+ if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+   cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+ 
+ fi
+ 
+ done
+ 
+ 
+ for ac_header in sys/mman.h
+ do :
+   ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
+ if test "x$ac_cv_header_sys_mman_h" = xyes; then :
+   cat >>confdefs.h <<_ACEOF
+ #define HAVE_SYS_MMAN_H 1
+ _ACEOF
+ 
+ fi
+ 
+ done
+ 
+ 
+ # C++ Modules would like some networking features to provide the mapping
+ # server.  You can still use modules without them though.
+ # The following network-related checks could probably do with some
+ # Windows and other non-linux defenses and checking.
+ 
+ # Local socket connectivity wants AF_UNIX networking
+ # Check for AF_UNIX networking
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AF_UNIX" >&5
+ $as_echo_n "checking for AF_UNIX... " >&6; }
+ if ${ac_cv_af_unix+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+ 
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <sys/un.h>
+ #include <netinet/in.h>
+ int
+ main ()
+ {
+ 
+ sockaddr_un un;
+ un.sun_family = AF_UNSPEC;
+ int fd = socket (AF_UNIX, SOCK_STREAM, 0);
+ connect (fd, (sockaddr *)&un, sizeof (un));
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_af_unix=yes
+ else
+   ac_cv_af_unix=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_af_unix" >&5
+ $as_echo "$ac_cv_af_unix" >&6; }
+ if test $ac_cv_af_unix = yes; then
+ 
+ $as_echo "#define HAVE_AF_UNIX 1" >>confdefs.h
+ 
+ fi
+ 
+ # Remote socket connectivity wants AF_INET6 networking
+ # Check for AF_INET6 networking
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AF_INET6" >&5
+ $as_echo_n "checking for AF_INET6... " >&6; }
+ if ${ac_cv_af_inet6+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+ 
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+ #include <netdb.h>
+ int
+ main ()
+ {
+ 
+ sockaddr_in6 in6;
+ in6.sin6_family = AF_UNSPEC;
+ struct addrinfo *addrs = 0;
+ struct addrinfo hints;
+ hints.ai_flags = 0;
+ hints.ai_family = AF_INET6;
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_protocol = 0;
+ hints.ai_canonname = 0;
+ hints.ai_addr = 0;
+ hints.ai_next = 0;
+ int e = getaddrinfo ("localhost", 0, &hints, &addrs);
+ const char *str = gai_strerror (e);
+ freeaddrinfo (addrs);
+ int fd = socket (AF_INET6, SOCK_STREAM, 0);
+ connect (fd, (sockaddr *)&in6, sizeof (in6));
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_af_inet6=yes
+ else
+   ac_cv_af_inet6=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_af_inet6" >&5
+ $as_echo "$ac_cv_af_inet6" >&6; }
+ if test $ac_cv_af_inet6 = yes; then
+ 
+ $as_echo "#define HAVE_AF_INET6 1" >>confdefs.h
+ 
+ fi
+ 
+ # Efficient server response wants epoll
+ # Check for epoll_create, epoll_ctl, epoll_pwait
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for epoll" >&5
+ $as_echo_n "checking for epoll... " >&6; }
+ if ${ac_cv_epoll+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+ 
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ #include <sys/epoll.h>
+ int
+ main ()
+ {
+ 
+ int fd = epoll_create (1);
+ epoll_event ev;
+ ev.events = EPOLLIN;
+ ev.data.fd = 0;
+ epoll_ctl (fd, EPOLL_CTL_ADD, 0, &ev);
+ epoll_pwait (fd, 0, 0, -1, 0);
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_epoll=yes
+ else
+   ac_cv_epoll=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_epoll" >&5
+ $as_echo "$ac_cv_epoll" >&6; }
+ if test $ac_cv_epoll = yes; then
+ 
+ $as_echo "#define HAVE_EPOLL 1" >>confdefs.h
+ 
+ fi
+ 
+ # If we can't use epoll, try pselect.
+ # Check for pselect
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pselect" >&5
+ $as_echo_n "checking for pselect... " >&6; }
+ if ${ac_cv_pselect+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+ 
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ #include <sys/select.h>
+ int
+ main ()
+ {
+ 
+ pselect (0, 0, 0, 0, 0, 0);
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_pselect=yes
+ else
+   ac_cv_pselect=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pselect" >&5
+ $as_echo "$ac_cv_pselect" >&6; }
+ if test $ac_cv_pselect = yes; then
+ 
+ $as_echo "#define HAVE_PSELECT 1" >>confdefs.h
+ 
+ fi
+ 
+ # And failing that, use good old select.
+ # If we can't even use this, the server is serialized.
+ # Check for select
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for select" >&5
+ $as_echo_n "checking for select... " >&6; }
+ if ${ac_cv_select+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+ 
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ #include <sys/select.h>
+ int
+ main ()
+ {
+ 
+ select (0, 0, 0, 0, 0);
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_select=yes
+ else
+   ac_cv_select=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_select" >&5
+ $as_echo "$ac_cv_select" >&6; }
+ if test $ac_cv_select = yes; then
+ 
+ $as_echo "#define HAVE_SELECT 1" >>confdefs.h
+ 
+ fi
+ 
+ # Avoid some fnctl calls by using accept4, when available.
+ # Check for accept4
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for accept4" >&5
+ $as_echo_n "checking for accept4... " >&6; }
+ if ${ac_cv_accept4+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+ 
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ #include <sys/socket.h>
+ int
+ main ()
+ {
+ 
+ int err = accept4 (1, 0, 0, SOCK_NONBLOCK);
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_accept4=yes
+ else
+   ac_cv_accept4=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_accept4" >&5
+ $as_echo "$ac_cv_accept4" >&6; }
+ if test $ac_cv_accept4 = yes; then
+ 
+ $as_echo "#define HAVE_ACCEPT4 1" >>confdefs.h
+ 
+ fi
+ 
+ # For better server messages, look for a way to stringize network addresses
+ # Check for inet_ntop
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_ntop" >&5
+ $as_echo_n "checking for inet_ntop... " >&6; }
+ if ${ac_cv_inet_ntop+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+ 
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ #include <arpa/inet.h>
+ #include <netinet/in.h>
+ int
+ main ()
+ {
+ 
+ sockaddr_in6 in6;
+ char buf[INET6_ADDRSTRLEN];
+ const char *str = inet_ntop (AF_INET6, &in6, buf, sizeof (buf));
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_inet_ntop=yes
+ else
+   ac_cv_inet_ntop=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_inet_ntop" >&5
+ $as_echo "$ac_cv_inet_ntop" >&6; }
+ if test $ac_cv_inet_ntop = yes; then
+ 
+ $as_echo "#define HAVE_INET_NTOP 1" >>confdefs.h
+ 
+ fi
+ 
+ # Determine what GCC version number to use in filesystem paths.
+ 
+   get_gcc_base_ver="cat"
+ 
+ # Check whether --with-gcc-major-version-only was given.
+ if test "${with_gcc_major_version_only+set}" = set; then :
+   withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
+         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
+       fi
+ 
+ fi
+ 
+ 
+ 
+ 
+ # Solaris needs libsocket and libnsl for socket functions before 11.4.
+ # libcody uses those.
+ save_LIBS="$LIBS"
+ LIBS=
+ 
+ 	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
+ $as_echo_n "checking for library containing gethostbyname... " >&6; }
+ if ${ac_cv_search_gethostbyname+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   ac_func_search_save_LIBS=$LIBS
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ /* Override any GCC internal prototype to avoid an error.
+    Use char because int might match the return type of a GCC
+    builtin and then its argument prototype would still apply.  */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+ char gethostbyname ();
+ int
+ main ()
+ {
+ return gethostbyname ();
+   ;
+   return 0;
+ }
+ _ACEOF
+ for ac_lib in '' nsl; do
+   if test -z "$ac_lib"; then
+     ac_res="none required"
+   else
+     ac_res=-l$ac_lib
+     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+   fi
+   if ac_fn_c_try_link "$LINENO"; then :
+   ac_cv_search_gethostbyname=$ac_res
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+     conftest$ac_exeext
+   if ${ac_cv_search_gethostbyname+:} false; then :
+   break
+ fi
+ done
+ if ${ac_cv_search_gethostbyname+:} false; then :
+ 
+ else
+   ac_cv_search_gethostbyname=no
+ fi
+ rm conftest.$ac_ext
+ LIBS=$ac_func_search_save_LIBS
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5
+ $as_echo "$ac_cv_search_gethostbyname" >&6; }
+ ac_res=$ac_cv_search_gethostbyname
+ if test "$ac_res" != no; then :
+   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+ 
+ fi
+ 
+ 	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
+ $as_echo_n "checking for library containing socket... " >&6; }
+ if ${ac_cv_search_socket+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   ac_func_search_save_LIBS=$LIBS
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ /* Override any GCC internal prototype to avoid an error.
+    Use char because int might match the return type of a GCC
+    builtin and then its argument prototype would still apply.  */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+ char socket ();
+ int
+ main ()
+ {
+ return socket ();
+   ;
+   return 0;
+ }
+ _ACEOF
+ for ac_lib in '' socket; do
+   if test -z "$ac_lib"; then
+     ac_res="none required"
+   else
+     ac_res=-l$ac_lib
+     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+   fi
+   if ac_fn_c_try_link "$LINENO"; then :
+   ac_cv_search_socket=$ac_res
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+     conftest$ac_exeext
+   if ${ac_cv_search_socket+:} false; then :
+   break
+ fi
+ done
+ if ${ac_cv_search_socket+:} false; then :
+ 
+ else
+   ac_cv_search_socket=no
+ fi
+ rm conftest.$ac_ext
+ LIBS=$ac_func_search_save_LIBS
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5
+ $as_echo "$ac_cv_search_socket" >&6; }
+ ac_res=$ac_cv_search_socket
+ if test "$ac_res" != no; then :
+   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+ 
+ else
+ 
+ 		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5
+ $as_echo_n "checking for socket in -lsocket... " >&6; }
+ if ${ac_cv_lib_socket_socket+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   ac_check_lib_save_LIBS=$LIBS
+ LIBS="-lsocket -lnsl $LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ /* Override any GCC internal prototype to avoid an error.
+    Use char because int might match the return type of a GCC
+    builtin and then its argument prototype would still apply.  */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+ char socket ();
+ int
+ main ()
+ {
+ return socket ();
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+   ac_cv_lib_socket_socket=yes
+ else
+   ac_cv_lib_socket_socket=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+     conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5
+ $as_echo "$ac_cv_lib_socket_socket" >&6; }
+ if test "x$ac_cv_lib_socket_socket" = xyes; then :
+   LIBS="-lsocket -lnsl $LIBS"
+ fi
+ 
+ fi
+ 
+ 
+ NETLIBS="$LIBS"
+ LIBS="$save_LIBS"
+ 
+ 
+ ac_config_headers="$ac_config_headers config.h"
+ 
+ ac_config_files="$ac_config_files Makefile"
+ 
+ 
+ cat >confcache <<\_ACEOF
+ # This file is a shell script that caches the results of configure
+ # tests run on this system so they can be shared between configure
+ # scripts and configure runs, see configure's option --config-cache.
+ # It is not useful on other systems.  If it contains results you don't
+ # want to keep, you may remove or edit it.
+ #
+ # config.status only pays attention to the cache file if you give it
+ # the --recheck option to rerun configure.
+ #
+ # `ac_cv_env_foo' variables (set or unset) will be overridden when
+ # loading this file, other *unset* `ac_cv_foo' will be assigned the
+ # following values.
+ 
+ _ACEOF
+ 
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+ # So, we kill variables containing newlines.
+ # Ultrix sh set writes to stderr and can't be redirected directly,
+ # and sets the high bit in the cache file unless we assign to the vars.
+ (
+   for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+     eval ac_val=\$$ac_var
+     case $ac_val in #(
+     *${as_nl}*)
+       case $ac_var in #(
+       *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+       esac
+       case $ac_var in #(
+       _ | IFS | as_nl) ;; #(
+       BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+       *) { eval $ac_var=; unset $ac_var;} ;;
+       esac ;;
+     esac
+   done
+ 
+   (set) 2>&1 |
+     case $as_nl`(ac_space=' '; set) 2>&1` in #(
+     *${as_nl}ac_space=\ *)
+       # `set' does not quote correctly, so add quotes: double-quote
+       # substitution turns \\\\ into \\, and sed turns \\ into \.
+       sed -n \
+ 	"s/'/'\\\\''/g;
+ 	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+       ;; #(
+     *)
+       # `set' quotes correctly as required by POSIX, so do not add quotes.
+       sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+       ;;
+     esac |
+     sort
+ ) |
+   sed '
+      /^ac_cv_env_/b end
+      t clear
+      :clear
+      s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+      t end
+      s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+      :end' >>confcache
+ if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+   if test -w "$cache_file"; then
+     if test "x$cache_file" != "x/dev/null"; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+ $as_echo "$as_me: updating cache $cache_file" >&6;}
+       if test ! -f "$cache_file" || test -h "$cache_file"; then
+ 	cat confcache >"$cache_file"
+       else
+         case $cache_file in #(
+         */* | ?:*)
+ 	  mv -f confcache "$cache_file"$$ &&
+ 	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+         *)
+ 	  mv -f confcache "$cache_file" ;;
+ 	esac
+       fi
+     fi
+   else
+     { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+ $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+   fi
+ fi
+ rm -f confcache
+ 
+ test "x$prefix" = xNONE && prefix=$ac_default_prefix
+ # Let make expand exec_prefix.
+ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+ 
+ DEFS=-DHAVE_CONFIG_H
+ 
+ ac_libobjs=
+ ac_ltlibobjs=
+ U=
+ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+   # 1. Remove the extension, and $U if already installed.
+   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+   ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+   # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+   #    will be set to the directory where LIBOBJS objects are built.
+   as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+   as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+ done
+ LIBOBJS=$ac_libobjs
+ 
+ LTLIBOBJS=$ac_ltlibobjs
+ 
+ 
+ 
+ : "${CONFIG_STATUS=./config.status}"
+ ac_write_fail=0
+ ac_clean_files_save=$ac_clean_files
+ ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+ $as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+ as_write_fail=0
+ cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+ #! $SHELL
+ # Generated by $as_me.
+ # Run this file to recreate the current configuration.
+ # Compiler output produced by configure, useful for debugging
+ # configure, is in config.log if it exists.
+ 
+ debug=false
+ ac_cs_recheck=false
+ ac_cs_silent=false
+ 
+ SHELL=\${CONFIG_SHELL-$SHELL}
+ export SHELL
+ _ASEOF
+ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+ ## -------------------- ##
+ ## M4sh Initialization. ##
+ ## -------------------- ##
+ 
+ # Be more Bourne compatible
+ DUALCASE=1; export DUALCASE # for MKS sh
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+   emulate sh
+   NULLCMD=:
+   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+   # is contrary to our usage.  Disable this feature.
+   alias -g '${1+"$@"}'='"$@"'
+   setopt NO_GLOB_SUBST
+ else
+   case `(set -o) 2>/dev/null` in #(
+   *posix*) :
+     set -o posix ;; #(
+   *) :
+      ;;
+ esac
+ fi
+ 
+ 
+ as_nl='
+ '
+ export as_nl
+ # Printing a long string crashes Solaris 7 /usr/bin/printf.
+ as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+ as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+ # Prefer a ksh shell builtin over an external printf program on Solaris,
+ # but without wasting forks for bash or zsh.
+ if test -z "$BASH_VERSION$ZSH_VERSION" \
+     && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+   as_echo='print -r --'
+   as_echo_n='print -rn --'
+ elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+   as_echo='printf %s\n'
+   as_echo_n='printf %s'
+ else
+   if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+     as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+     as_echo_n='/usr/ucb/echo -n'
+   else
+     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+     as_echo_n_body='eval
+       arg=$1;
+       case $arg in #(
+       *"$as_nl"*)
+ 	expr "X$arg" : "X\\(.*\\)$as_nl";
+ 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+       esac;
+       expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+     '
+     export as_echo_n_body
+     as_echo_n='sh -c $as_echo_n_body as_echo'
+   fi
+   export as_echo_body
+   as_echo='sh -c $as_echo_body as_echo'
+ fi
+ 
+ # The user is always right.
+ if test "${PATH_SEPARATOR+set}" != set; then
+   PATH_SEPARATOR=:
+   (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+     (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+       PATH_SEPARATOR=';'
+   }
+ fi
+ 
+ 
+ # IFS
+ # We need space, tab and new line, in precisely that order.  Quoting is
+ # there to prevent editors from complaining about space-tab.
+ # (If _AS_PATH_WALK were called with IFS unset, it would disable word
+ # splitting by setting IFS to empty value.)
+ IFS=" ""	$as_nl"
+ 
+ # Find who we are.  Look in the path if we contain no directory separator.
+ as_myself=
+ case $0 in #((
+   *[\\/]* ) as_myself=$0 ;;
+   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+   done
+ IFS=$as_save_IFS
+ 
+      ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+   as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+   $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+   exit 1
+ fi
+ 
+ # Unset variables that we do not need and which cause bugs (e.g. in
+ # pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+ # suppresses any "Segmentation fault" message there.  '((' could
+ # trigger a bug in pdksh 5.2.14.
+ for as_var in BASH_ENV ENV MAIL MAILPATH
+ do eval test x\${$as_var+set} = xset \
+   && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+ done
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+ 
+ # NLS nuisances.
+ LC_ALL=C
+ export LC_ALL
+ LANGUAGE=C
+ export LANGUAGE
+ 
+ # CDPATH.
+ (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+ 
+ 
+ # as_fn_error STATUS ERROR [LINENO LOG_FD]
+ # ----------------------------------------
+ # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+ # provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+ # script with STATUS, using 1 if that was 0.
+ as_fn_error ()
+ {
+   as_status=$1; test $as_status -eq 0 && as_status=1
+   if test "$4"; then
+     as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+     $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+   fi
+   $as_echo "$as_me: error: $2" >&2
+   as_fn_exit $as_status
+ } # as_fn_error
+ 
+ 
+ # as_fn_set_status STATUS
+ # -----------------------
+ # Set $? to STATUS, without forking.
+ as_fn_set_status ()
+ {
+   return $1
+ } # as_fn_set_status
+ 
+ # as_fn_exit STATUS
+ # -----------------
+ # Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+ as_fn_exit ()
+ {
+   set +e
+   as_fn_set_status $1
+   exit $1
+ } # as_fn_exit
+ 
+ # as_fn_unset VAR
+ # ---------------
+ # Portably unset VAR.
+ as_fn_unset ()
+ {
+   { eval $1=; unset $1;}
+ }
+ as_unset=as_fn_unset
+ # as_fn_append VAR VALUE
+ # ----------------------
+ # Append the text in VALUE to the end of the definition contained in VAR. Take
+ # advantage of any shell optimizations that allow amortized linear growth over
+ # repeated appends, instead of the typical quadratic growth present in naive
+ # implementations.
+ if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+   eval 'as_fn_append ()
+   {
+     eval $1+=\$2
+   }'
+ else
+   as_fn_append ()
+   {
+     eval $1=\$$1\$2
+   }
+ fi # as_fn_append
+ 
+ # as_fn_arith ARG...
+ # ------------------
+ # Perform arithmetic evaluation on the ARGs, and store the result in the
+ # global $as_val. Take advantage of shells that can avoid forks. The arguments
+ # must be portable across $(()) and expr.
+ if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+   eval 'as_fn_arith ()
+   {
+     as_val=$(( $* ))
+   }'
+ else
+   as_fn_arith ()
+   {
+     as_val=`expr "$@" || test $? -eq 1`
+   }
+ fi # as_fn_arith
+ 
+ 
+ if expr a : '\(a\)' >/dev/null 2>&1 &&
+    test "X`expr 00001 : '.*\(...\)'`" = X001; then
+   as_expr=expr
+ else
+   as_expr=false
+ fi
+ 
+ if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+   as_basename=basename
+ else
+   as_basename=false
+ fi
+ 
+ if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+   as_dirname=dirname
+ else
+   as_dirname=false
+ fi
+ 
+ as_me=`$as_basename -- "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ 	 X"$0" : 'X\(//\)$' \| \
+ 	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ $as_echo X/"$0" |
+     sed '/^.*\/\([^/][^/]*\)\/*$/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  /^X\/\(\/\/\)$/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  /^X\/\(\/\).*/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  s/.*/./; q'`
+ 
+ # Avoid depending upon Character Ranges.
+ as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+ as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+ as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+ as_cr_digits='0123456789'
+ as_cr_alnum=$as_cr_Letters$as_cr_digits
+ 
+ ECHO_C= ECHO_N= ECHO_T=
+ case `echo -n x` in #(((((
+ -n*)
+   case `echo 'xy\c'` in
+   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+   xy)  ECHO_C='\c';;
+   *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+        ECHO_T='	';;
+   esac;;
+ *)
+   ECHO_N='-n';;
+ esac
+ 
+ rm -f conf$$ conf$$.exe conf$$.file
+ if test -d conf$$.dir; then
+   rm -f conf$$.dir/conf$$.file
+ else
+   rm -f conf$$.dir
+   mkdir conf$$.dir 2>/dev/null
+ fi
+ if (echo >conf$$.file) 2>/dev/null; then
+   if ln -s conf$$.file conf$$ 2>/dev/null; then
+     as_ln_s='ln -s'
+     # ... but there are two gotchas:
+     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+     # In both cases, we have to default to `cp -pR'.
+     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+       as_ln_s='cp -pR'
+   elif ln conf$$.file conf$$ 2>/dev/null; then
+     as_ln_s=ln
+   else
+     as_ln_s='cp -pR'
+   fi
+ else
+   as_ln_s='cp -pR'
+ fi
+ rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+ rmdir conf$$.dir 2>/dev/null
+ 
+ 
+ # as_fn_mkdir_p
+ # -------------
+ # Create "$as_dir" as a directory, including parents if necessary.
+ as_fn_mkdir_p ()
+ {
+ 
+   case $as_dir in #(
+   -*) as_dir=./$as_dir;;
+   esac
+   test -d "$as_dir" || eval $as_mkdir_p || {
+     as_dirs=
+     while :; do
+       case $as_dir in #(
+       *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+       *) as_qdir=$as_dir;;
+       esac
+       as_dirs="'$as_qdir' $as_dirs"
+       as_dir=`$as_dirname -- "$as_dir" ||
+ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ 	 X"$as_dir" : 'X\(//\)[^/]' \| \
+ 	 X"$as_dir" : 'X\(//\)$' \| \
+ 	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+ $as_echo X"$as_dir" |
+     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  /^X\(\/\/\)[^/].*/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  /^X\(\/\/\)$/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  /^X\(\/\).*/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  s/.*/./; q'`
+       test -d "$as_dir" && break
+     done
+     test -z "$as_dirs" || eval "mkdir $as_dirs"
+   } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+ 
+ 
+ } # as_fn_mkdir_p
+ if mkdir -p . 2>/dev/null; then
+   as_mkdir_p='mkdir -p "$as_dir"'
+ else
+   test -d ./-p && rmdir ./-p
+   as_mkdir_p=false
+ fi
+ 
+ 
+ # as_fn_executable_p FILE
+ # -----------------------
+ # Test if FILE is an executable regular file.
+ as_fn_executable_p ()
+ {
+   test -f "$1" && test -x "$1"
+ } # as_fn_executable_p
+ as_test_x='test -x'
+ as_executable_p=as_fn_executable_p
+ 
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+ 
+ # Sed expression to map a string onto a valid variable name.
+ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+ 
+ 
+ exec 6>&1
+ ## ----------------------------------- ##
+ ## Main body of $CONFIG_STATUS script. ##
+ ## ----------------------------------- ##
+ _ASEOF
+ test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+ 
+ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ # Save the log message, to keep $0 and so on meaningful, and to
+ # report actual input values of CONFIG_FILES etc. instead of their
+ # values after options handling.
+ ac_log="
+ This file was extended by $as_me, which was
+ generated by GNU Autoconf 2.69.  Invocation command line was
+ 
+   CONFIG_FILES    = $CONFIG_FILES
+   CONFIG_HEADERS  = $CONFIG_HEADERS
+   CONFIG_LINKS    = $CONFIG_LINKS
+   CONFIG_COMMANDS = $CONFIG_COMMANDS
+   $ $0 $@
+ 
+ on `(hostname || uname -n) 2>/dev/null | sed 1q`
+ "
+ 
+ _ACEOF
+ 
+ case $ac_config_files in *"
+ "*) set x $ac_config_files; shift; ac_config_files=$*;;
+ esac
+ 
+ case $ac_config_headers in *"
+ "*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+ esac
+ 
+ 
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ # Files that config.status was made for.
+ config_files="$ac_config_files"
+ config_headers="$ac_config_headers"
+ 
+ _ACEOF
+ 
+ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ ac_cs_usage="\
+ \`$as_me' instantiates files and other configuration actions
+ from templates according to the current configuration.  Unless the files
+ and actions are specified as TAGs, all are instantiated by default.
+ 
+ Usage: $0 [OPTION]... [TAG]...
+ 
+   -h, --help       print this help, then exit
+   -V, --version    print version number and configuration settings, then exit
+       --config     print configuration, then exit
+   -q, --quiet, --silent
+                    do not print progress messages
+   -d, --debug      don't remove temporary files
+       --recheck    update $as_me by reconfiguring in the same conditions
+       --file=FILE[:TEMPLATE]
+                    instantiate the configuration file FILE
+       --header=FILE[:TEMPLATE]
+                    instantiate the configuration header FILE
+ 
+ Configuration files:
+ $config_files
+ 
+ Configuration headers:
+ $config_headers
+ 
+ Report bugs to the package provider."
+ 
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ ac_cs_version="\\
+ config.status
+ configured by $0, generated by GNU Autoconf 2.69,
+   with options \\"\$ac_cs_config\\"
+ 
+ Copyright (C) 2012 Free Software Foundation, Inc.
+ This config.status script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it."
+ 
+ ac_pwd='$ac_pwd'
+ srcdir='$srcdir'
+ INSTALL='$INSTALL'
+ test -n "\$AWK" || AWK=awk
+ _ACEOF
+ 
+ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ # The default lists apply if the user does not specify any file.
+ ac_need_defaults=:
+ while test $# != 0
+ do
+   case $1 in
+   --*=?*)
+     ac_option=`expr "X$1" : 'X\([^=]*\)='`
+     ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+     ac_shift=:
+     ;;
+   --*=)
+     ac_option=`expr "X$1" : 'X\([^=]*\)='`
+     ac_optarg=
+     ac_shift=:
+     ;;
+   *)
+     ac_option=$1
+     ac_optarg=$2
+     ac_shift=shift
+     ;;
+   esac
+ 
+   case $ac_option in
+   # Handling of the options.
+   -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+     ac_cs_recheck=: ;;
+   --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+     $as_echo "$ac_cs_version"; exit ;;
+   --config | --confi | --conf | --con | --co | --c )
+     $as_echo "$ac_cs_config"; exit ;;
+   --debug | --debu | --deb | --de | --d | -d )
+     debug=: ;;
+   --file | --fil | --fi | --f )
+     $ac_shift
+     case $ac_optarg in
+     *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+     '') as_fn_error $? "missing file argument" ;;
+     esac
+     as_fn_append CONFIG_FILES " '$ac_optarg'"
+     ac_need_defaults=false;;
+   --header | --heade | --head | --hea )
+     $ac_shift
+     case $ac_optarg in
+     *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+     esac
+     as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+     ac_need_defaults=false;;
+   --he | --h)
+     # Conflict between --help and --header
+     as_fn_error $? "ambiguous option: \`$1'
+ Try \`$0 --help' for more information.";;
+   --help | --hel | -h )
+     $as_echo "$ac_cs_usage"; exit ;;
+   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+   | -silent | --silent | --silen | --sile | --sil | --si | --s)
+     ac_cs_silent=: ;;
+ 
+   # This is an error.
+   -*) as_fn_error $? "unrecognized option: \`$1'
+ Try \`$0 --help' for more information." ;;
+ 
+   *) as_fn_append ac_config_targets " $1"
+      ac_need_defaults=false ;;
+ 
+   esac
+   shift
+ done
+ 
+ ac_configure_extra_args=
+ 
+ if $ac_cs_silent; then
+   exec 6>/dev/null
+   ac_configure_extra_args="$ac_configure_extra_args --silent"
+ fi
+ 
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ if \$ac_cs_recheck; then
+   set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+   shift
+   \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+   CONFIG_SHELL='$SHELL'
+   export CONFIG_SHELL
+   exec "\$@"
+ fi
+ 
+ _ACEOF
+ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ exec 5>>config.log
+ {
+   echo
+   sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+ ## Running $as_me. ##
+ _ASBOX
+   $as_echo "$ac_log"
+ } >&5
+ 
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ _ACEOF
+ 
+ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ 
+ # Handling of arguments.
+ for ac_config_target in $ac_config_targets
+ do
+   case $ac_config_target in
+     "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ 
+   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+   esac
+ done
+ 
+ 
+ # If the user did not use the arguments to specify the items to instantiate,
+ # then the envvar interface is used.  Set only those that are not.
+ # We use the long form for the default assignment because of an extremely
+ # bizarre bug on SunOS 4.1.3.
+ if $ac_need_defaults; then
+   test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+   test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ fi
+ 
+ # Have a temporary directory for convenience.  Make it in the build tree
+ # simply because there is no reason against having it here, and in addition,
+ # creating and moving files from /tmp can sometimes cause problems.
+ # Hook for its removal unless debugging.
+ # Note that there is a small window in which the directory will not be cleaned:
+ # after its creation but before its name has been assigned to `$tmp'.
+ $debug ||
+ {
+   tmp= ac_tmp=
+   trap 'exit_status=$?
+   : "${ac_tmp:=$tmp}"
+   { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+ ' 0
+   trap 'as_fn_exit 1' 1 2 13 15
+ }
+ # Create a (secure) tmp directory for tmp files.
+ 
+ {
+   tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+   test -d "$tmp"
+ }  ||
+ {
+   tmp=./conf$$-$RANDOM
+   (umask 077 && mkdir "$tmp")
+ } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ ac_tmp=$tmp
+ 
+ # Set up the scripts for CONFIG_FILES section.
+ # No need to generate them if there are no CONFIG_FILES.
+ # This happens for instance with `./config.status config.h'.
+ if test -n "$CONFIG_FILES"; then
+ 
+ 
+ ac_cr=`echo X | tr X '\015'`
+ # On cygwin, bash can eat \r inside `` if the user requested igncr.
+ # But we know of no other shell where ac_cr would be empty at this
+ # point, so we can use a bashism as a fallback.
+ if test "x$ac_cr" = x; then
+   eval ac_cr=\$\'\\r\'
+ fi
+ ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+ if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+   ac_cs_awk_cr='\\r'
+ else
+   ac_cs_awk_cr=$ac_cr
+ fi
+ 
+ echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+ _ACEOF
+ 
+ 
+ {
+   echo "cat >conf$$subs.awk <<_ACEOF" &&
+   echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+   echo "_ACEOF"
+ } >conf$$subs.sh ||
+   as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ ac_delim='%!_!# '
+ for ac_last_try in false false false false false :; do
+   . ./conf$$subs.sh ||
+     as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ 
+   ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+   if test $ac_delim_n = $ac_delim_num; then
+     break
+   elif $ac_last_try; then
+     as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+   else
+     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+   fi
+ done
+ rm -f conf$$subs.sh
+ 
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+ _ACEOF
+ sed -n '
+ h
+ s/^/S["/; s/!.*/"]=/
+ p
+ g
+ s/^[^!]*!//
+ :repl
+ t repl
+ s/'"$ac_delim"'$//
+ t delim
+ :nl
+ h
+ s/\(.\{148\}\)..*/\1/
+ t more1
+ s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+ p
+ n
+ b repl
+ :more1
+ s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+ p
+ g
+ s/.\{148\}//
+ t nl
+ :delim
+ h
+ s/\(.\{148\}\)..*/\1/
+ t more2
+ s/["\\]/\\&/g; s/^/"/; s/$/"/
+ p
+ b
+ :more2
+ s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+ p
+ g
+ s/.\{148\}//
+ t delim
+ ' <conf$$subs.awk | sed '
+ /^[^""]/{
+   N
+   s/\n//
+ }
+ ' >>$CONFIG_STATUS || ac_write_fail=1
+ rm -f conf$$subs.awk
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ _ACAWK
+ cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+   for (key in S) S_is_set[key] = 1
+   FS = ""
+ 
+ }
+ {
+   line = $ 0
+   nfields = split(line, field, "@")
+   substed = 0
+   len = length(field[1])
+   for (i = 2; i < nfields; i++) {
+     key = field[i]
+     keylen = length(key)
+     if (S_is_set[key]) {
+       value = S[key]
+       line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+       len += length(value) + length(field[++i])
+       substed = 1
+     } else
+       len += 1 + keylen
+   }
+ 
+   print line
+ }
+ 
+ _ACAWK
+ _ACEOF
+ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+   sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+ else
+   cat
+ fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+   || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+ _ACEOF
+ 
+ # VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+ # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+ # trailing colons and then remove the whole line if VPATH becomes empty
+ # (actually we leave an empty line to preserve line numbers).
+ if test "x$srcdir" = x.; then
+   ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+ h
+ s///
+ s/^/:/
+ s/[	 ]*$/:/
+ s/:\$(srcdir):/:/g
+ s/:\${srcdir}:/:/g
+ s/:@srcdir@:/:/g
+ s/^:*//
+ s/:*$//
+ x
+ s/\(=[	 ]*\).*/\1/
+ G
+ s/\n//
+ s/^[^=]*=[	 ]*$//
+ }'
+ fi
+ 
+ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ fi # test -n "$CONFIG_FILES"
+ 
+ # Set up the scripts for CONFIG_HEADERS section.
+ # No need to generate them if there are no CONFIG_HEADERS.
+ # This happens for instance with `./config.status Makefile'.
+ if test -n "$CONFIG_HEADERS"; then
+ cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+ BEGIN {
+ _ACEOF
+ 
+ # Transform confdefs.h into an awk script `defines.awk', embedded as
+ # here-document in config.status, that substitutes the proper values into
+ # config.h.in to produce config.h.
+ 
+ # Create a delimiter string that does not exist in confdefs.h, to ease
+ # handling of long lines.
+ ac_delim='%!_!# '
+ for ac_last_try in false false :; do
+   ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+   if test -z "$ac_tt"; then
+     break
+   elif $ac_last_try; then
+     as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+   else
+     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+   fi
+ done
+ 
+ # For the awk script, D is an array of macro values keyed by name,
+ # likewise P contains macro parameters if any.  Preserve backslash
+ # newline sequences.
+ 
+ ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+ sed -n '
+ s/.\{148\}/&'"$ac_delim"'/g
+ t rset
+ :rset
+ s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
+ t def
+ d
+ :def
+ s/\\$//
+ t bsnl
+ s/["\\]/\\&/g
+ s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+ D["\1"]=" \3"/p
+ s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
+ d
+ :bsnl
+ s/["\\]/\\&/g
+ s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+ D["\1"]=" \3\\\\\\n"\\/p
+ t cont
+ s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+ t cont
+ d
+ :cont
+ n
+ s/.\{148\}/&'"$ac_delim"'/g
+ t clear
+ :clear
+ s/\\$//
+ t bsnlc
+ s/["\\]/\\&/g; s/^/"/; s/$/"/p
+ d
+ :bsnlc
+ s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+ b cont
+ ' <confdefs.h | sed '
+ s/'"$ac_delim"'/"\\\
+ "/g' >>$CONFIG_STATUS || ac_write_fail=1
+ 
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+   for (key in D) D_is_set[key] = 1
+   FS = ""
+ }
+ /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+   line = \$ 0
+   split(line, arg, " ")
+   if (arg[1] == "#") {
+     defundef = arg[2]
+     mac1 = arg[3]
+   } else {
+     defundef = substr(arg[1], 2)
+     mac1 = arg[2]
+   }
+   split(mac1, mac2, "(") #)
+   macro = mac2[1]
+   prefix = substr(line, 1, index(line, defundef) - 1)
+   if (D_is_set[macro]) {
+     # Preserve the white space surrounding the "#".
+     print prefix "define", macro P[macro] D[macro]
+     next
+   } else {
+     # Replace #undef with comments.  This is necessary, for example,
+     # in the case of _POSIX_SOURCE, which is predefined and required
+     # on some systems where configure will not decide to define it.
+     if (defundef == "undef") {
+       print "/*", prefix defundef, macro, "*/"
+       next
+     }
+   }
+ }
+ { print }
+ _ACAWK
+ _ACEOF
+ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+   as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+ fi # test -n "$CONFIG_HEADERS"
+ 
+ 
+ eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    "
+ shift
+ for ac_tag
+ do
+   case $ac_tag in
+   :[FHLC]) ac_mode=$ac_tag; continue;;
+   esac
+   case $ac_mode$ac_tag in
+   :[FHL]*:*);;
+   :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+   :[FH]-) ac_tag=-:-;;
+   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+   esac
+   ac_save_IFS=$IFS
+   IFS=:
+   set x $ac_tag
+   IFS=$ac_save_IFS
+   shift
+   ac_file=$1
+   shift
+ 
+   case $ac_mode in
+   :L) ac_source=$1;;
+   :[FH])
+     ac_file_inputs=
+     for ac_f
+     do
+       case $ac_f in
+       -) ac_f="$ac_tmp/stdin";;
+       *) # Look for the file first in the build tree, then in the source tree
+ 	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+ 	 # because $ac_f cannot contain `:'.
+ 	 test -f "$ac_f" ||
+ 	   case $ac_f in
+ 	   [\\/$]*) false;;
+ 	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ 	   esac ||
+ 	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+       esac
+       case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+       as_fn_append ac_file_inputs " '$ac_f'"
+     done
+ 
+     # Let's still pretend it is `configure' which instantiates (i.e., don't
+     # use $as_me), people would be surprised to read:
+     #    /* config.h.  Generated by config.status.  */
+     configure_input='Generated from '`
+ 	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ 	`' by configure.'
+     if test x"$ac_file" != x-; then
+       configure_input="$ac_file.  $configure_input"
+       { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+ $as_echo "$as_me: creating $ac_file" >&6;}
+     fi
+     # Neutralize special characters interpreted by sed in replacement strings.
+     case $configure_input in #(
+     *\&* | *\|* | *\\* )
+        ac_sed_conf_input=`$as_echo "$configure_input" |
+        sed 's/[\\\\&|]/\\\\&/g'`;; #(
+     *) ac_sed_conf_input=$configure_input;;
+     esac
+ 
+     case $ac_tag in
+     *:-:* | *:-) cat >"$ac_tmp/stdin" \
+       || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+     esac
+     ;;
+   esac
+ 
+   ac_dir=`$as_dirname -- "$ac_file" ||
+ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ 	 X"$ac_file" : 'X\(//\)[^/]' \| \
+ 	 X"$ac_file" : 'X\(//\)$' \| \
+ 	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+ $as_echo X"$ac_file" |
+     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  /^X\(\/\/\)[^/].*/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  /^X\(\/\/\)$/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  /^X\(\/\).*/{
+ 	    s//\1/
+ 	    q
+ 	  }
+ 	  s/.*/./; q'`
+   as_dir="$ac_dir"; as_fn_mkdir_p
+   ac_builddir=.
+ 
+ case "$ac_dir" in
+ .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *)
+   ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+   # A ".." for each directory in $ac_dir_suffix.
+   ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+   case $ac_top_builddir_sub in
+   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+   esac ;;
+ esac
+ ac_abs_top_builddir=$ac_pwd
+ ac_abs_builddir=$ac_pwd$ac_dir_suffix
+ # for backward compatibility:
+ ac_top_builddir=$ac_top_build_prefix
+ 
+ case $srcdir in
+   .)  # We are building in place.
+     ac_srcdir=.
+     ac_top_srcdir=$ac_top_builddir_sub
+     ac_abs_top_srcdir=$ac_pwd ;;
+   [\\/]* | ?:[\\/]* )  # Absolute name.
+     ac_srcdir=$srcdir$ac_dir_suffix;
+     ac_top_srcdir=$srcdir
+     ac_abs_top_srcdir=$srcdir ;;
+   *) # Relative name.
+     ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+     ac_top_srcdir=$ac_top_build_prefix$srcdir
+     ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+ esac
+ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+ 
+ 
+   case $ac_mode in
+   :F)
+   #
+   # CONFIG_FILE
+   #
+ 
+   case $INSTALL in
+   [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+   *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+   esac
+ _ACEOF
+ 
+ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ # If the template does not know about datarootdir, expand it.
+ # FIXME: This hack should be removed a few years after 2.60.
+ ac_datarootdir_hack=; ac_datarootdir_seen=
+ ac_sed_dataroot='
+ /datarootdir/ {
+   p
+   q
+ }
+ /@datadir@/p
+ /@docdir@/p
+ /@infodir@/p
+ /@localedir@/p
+ /@mandir@/p'
+ case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+ *datarootdir*) ac_datarootdir_seen=yes;;
+ *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+ $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+   ac_datarootdir_hack='
+   s&@datadir@&$datadir&g
+   s&@docdir@&$docdir&g
+   s&@infodir@&$infodir&g
+   s&@localedir@&$localedir&g
+   s&@mandir@&$mandir&g
+   s&\\\${datarootdir}&$datarootdir&g' ;;
+ esac
+ _ACEOF
+ 
+ # Neutralize VPATH when `$srcdir' = `.'.
+ # Shell code in configure.ac might set extrasub.
+ # FIXME: do we really want to maintain this feature?
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_sed_extra="$ac_vpsub
+ $extrasub
+ _ACEOF
+ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ :t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+ s|@configure_input@|$ac_sed_conf_input|;t t
+ s&@top_builddir@&$ac_top_builddir_sub&;t t
+ s&@top_build_prefix@&$ac_top_build_prefix&;t t
+ s&@srcdir@&$ac_srcdir&;t t
+ s&@abs_srcdir@&$ac_abs_srcdir&;t t
+ s&@top_srcdir@&$ac_top_srcdir&;t t
+ s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+ s&@builddir@&$ac_builddir&;t t
+ s&@abs_builddir@&$ac_abs_builddir&;t t
+ s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+ s&@INSTALL@&$ac_INSTALL&;t t
+ $ac_datarootdir_hack
+ "
+ eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+   >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ 
+ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+   { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+   { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+       "$ac_tmp/out"`; test -z "$ac_out"; } &&
+   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+ which seems to be undefined.  Please make sure it is defined" >&5
+ $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+ which seems to be undefined.  Please make sure it is defined" >&2;}
+ 
+   rm -f "$ac_tmp/stdin"
+   case $ac_file in
+   -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+   *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+   esac \
+   || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+  ;;
+   :H)
+   #
+   # CONFIG_HEADER
+   #
+   if test x"$ac_file" != x-; then
+     {
+       $as_echo "/* $configure_input  */" \
+       && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+     } >"$ac_tmp/config.h" \
+       || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+     if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+ $as_echo "$as_me: $ac_file is unchanged" >&6;}
+     else
+       rm -f "$ac_file"
+       mv "$ac_tmp/config.h" "$ac_file" \
+ 	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
+     fi
+   else
+     $as_echo "/* $configure_input  */" \
+       && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+       || as_fn_error $? "could not create -" "$LINENO" 5
+   fi
+  ;;
+ 
+ 
+   esac
+ 
+ done # for ac_tag
+ 
+ 
+ as_fn_exit 0
+ _ACEOF
+ ac_clean_files=$ac_clean_files_save
+ 
+ test $ac_write_fail = 0 ||
+   as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+ 
+ 
+ # configure is writing to config.log, and then calls config.status.
+ # config.status does its own redirection, appending to config.log.
+ # Unfortunately, on DOS this fails, as config.log is still kept open
+ # by configure, so config.status won't be able to write to it; its
+ # output is simply discarded.  So we exec the FD to /dev/null,
+ # effectively closing config.log, so it can be properly (re)opened and
+ # appended to by config.status.  When coming back to configure, we
+ # need to make the FD available again.
+ if test "$no_create" != yes; then
+   ac_cs_success=:
+   ac_config_status_args=
+   test "$silent" = yes &&
+     ac_config_status_args="$ac_config_status_args --quiet"
+   exec 5>/dev/null
+   $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+   exec 5>>config.log
+   # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+   # would make configure fail if this is the last instruction.
+   $ac_cs_success || as_fn_exit 1
+ fi
+ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+ $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+ fi
+ 
diff -Nrcpad gcc-10.3.0/c++tools/configure.ac gcc-11.1.0/c++tools/configure.ac
*** gcc-10.3.0/c++tools/configure.ac	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/c++tools/configure.ac	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,234 ----
+ # Configure script for c++tools
+ #   Copyright (C) 2020 Free Software Foundation, Inc.
+ #   Written by Nathan Sidwell <nathan@acm.org> while at FaceBook
+ #
+ # This file 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 of the License, or
+ # (at your option) any later version.
+ #
+ # This program 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 this program; see the file COPYING3.  If not see
+ # <http://www.gnu.org/licenses/>.
+ 
+ # C++ has grown a C++20 mapper server.  This may be used to provide
+ # and/or learn and/or build required modules.  This sample server
+ # shows how the protocol introduced by wg21.link/p1184 may be used.
+ # By default g++ uses an in-process mapper.
+ 
+ sinclude(../config/acx.m4)
+ sinclude(../config/ax_lib_socket_nsl.m4)
+ 
+ AC_INIT(c++tools)
+ 
+ AC_CONFIG_SRCDIR([server.cc])
+ 
+ # Determine the noncanonical names used for directories.
+ ACX_NONCANONICAL_TARGET
+ 
+ AC_CANONICAL_SYSTEM
+ AC_PROG_INSTALL
+ test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+ AC_SUBST(INSTALL_PROGRAM)
+ 
+ AC_PROG_CXX
+ MISSING=`cd $ac_aux_dir && ${PWDCMD-pwd}`/missing
+ AC_CHECK_PROGS([AUTOCONF], [autoconf], [$MISSING autoconf])
+ AC_CHECK_PROGS([AUTOHEADER], [autoheader], [$MISSING autoheader])
+ 
+ dnl Enabled by default
+ AC_MSG_CHECKING([whether to build C++ tools])
+   AC_ARG_ENABLE(c++-tools, 
+     [AS_HELP_STRING([--enable-c++-tools],
+ 		    [build auxiliary c++ tools])],
+       cxx_aux_tools=$enableval,
+       cxx_aux_tools=yes)
+ 
+ AC_MSG_RESULT($cxx_aux_tools)
+ CXX_AUX_TOOLS="$cxx_aux_tools"
+ AC_SUBST(CXX_AUX_TOOLS)
+ 
+ AC_ARG_ENABLE([maintainer-mode],
+ AS_HELP_STRING([--enable-maintainer-mode],
+ [enable maintainer mode.  Add rules to rebuild configurey bits]),,
+ [enable_maintainer_mode=no])
+ case "$enable_maintainer_mode" in
+   ("yes") maintainer_mode=yes ;;
+   ("no") maintainer=no ;;
+   (*) AC_MSG_ERROR([unknown maintainer mode $enable_maintainer_mode]) ;;
+ esac
+ AC_MSG_CHECKING([maintainer-mode])
+ AC_MSG_RESULT([$maintainer_mode])
+ test "$maintainer_mode" = yes && MAINTAINER=yes
+ AC_SUBST(MAINTAINER)
+ 
+ # Check whether --enable-default-pie was given.
+ AC_ARG_ENABLE(default-pie,
+ [AS_HELP_STRING([--enable-default-pie],
+ 		  [enable Position Independent Executable as default])],
+ [PIEFLAG=-fPIE], [PIEFLAG=])
+ AC_SUBST([PIEFLAG])
+ 
+ # Check if O_CLOEXEC is defined by fcntl
+ AC_CACHE_CHECK(for O_CLOEXEC, ac_cv_o_cloexec, [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #include <fcntl.h>]], [[
+ return open ("/dev/null", O_RDONLY | O_CLOEXEC);]])],
+ [ac_cv_o_cloexec=yes],[ac_cv_o_cloexec=no])])
+ if test $ac_cv_o_cloexec = yes; then
+   AC_DEFINE(HOST_HAS_O_CLOEXEC, 1,
+   [Define if O_CLOEXEC supported by fcntl.])
+ fi
+ 
+ AC_CHECK_HEADERS(sys/mman.h)
+ 
+ # C++ Modules would like some networking features to provide the mapping
+ # server.  You can still use modules without them though.
+ # The following network-related checks could probably do with some
+ # Windows and other non-linux defenses and checking.
+ 
+ # Local socket connectivity wants AF_UNIX networking
+ # Check for AF_UNIX networking
+ AC_CACHE_CHECK(for AF_UNIX, ac_cv_af_unix, [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <sys/un.h>
+ #include <netinet/in.h>]],[[
+ sockaddr_un un;
+ un.sun_family = AF_UNSPEC;
+ int fd = socket (AF_UNIX, SOCK_STREAM, 0);
+ connect (fd, (sockaddr *)&un, sizeof (un));]])],
+ [ac_cv_af_unix=yes],
+ [ac_cv_af_unix=no])])
+ if test $ac_cv_af_unix = yes; then
+   AC_DEFINE(HAVE_AF_UNIX, 1,
+   [Define if AF_UNIX supported.])
+ fi
+ 
+ # Remote socket connectivity wants AF_INET6 networking
+ # Check for AF_INET6 networking
+ AC_CACHE_CHECK(for AF_INET6, ac_cv_af_inet6, [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+ #include <netdb.h>]],[[
+ sockaddr_in6 in6;
+ in6.sin6_family = AF_UNSPEC;
+ struct addrinfo *addrs = 0;
+ struct addrinfo hints;
+ hints.ai_flags = 0;
+ hints.ai_family = AF_INET6;
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_protocol = 0;
+ hints.ai_canonname = 0;
+ hints.ai_addr = 0;
+ hints.ai_next = 0;
+ int e = getaddrinfo ("localhost", 0, &hints, &addrs);
+ const char *str = gai_strerror (e);
+ freeaddrinfo (addrs);
+ int fd = socket (AF_INET6, SOCK_STREAM, 0);
+ connect (fd, (sockaddr *)&in6, sizeof (in6));]])],
+ [ac_cv_af_inet6=yes],
+ [ac_cv_af_inet6=no])])
+ if test $ac_cv_af_inet6 = yes; then
+   AC_DEFINE(HAVE_AF_INET6, 1,
+   [Define if AF_INET6 supported.])
+ fi
+ 
+ # Efficient server response wants epoll
+ # Check for epoll_create, epoll_ctl, epoll_pwait
+ AC_CACHE_CHECK(for epoll, ac_cv_epoll, [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #include <sys/epoll.h>]],[[
+ int fd = epoll_create (1);
+ epoll_event ev;
+ ev.events = EPOLLIN;
+ ev.data.fd = 0;
+ epoll_ctl (fd, EPOLL_CTL_ADD, 0, &ev);
+ epoll_pwait (fd, 0, 0, -1, 0);]])],
+ [ac_cv_epoll=yes],
+ [ac_cv_epoll=no])])
+ if test $ac_cv_epoll = yes; then
+   AC_DEFINE(HAVE_EPOLL, 1,
+   [Define if epoll_create, epoll_ctl, epoll_pwait provided.])
+ fi
+ 
+ # If we can't use epoll, try pselect.
+ # Check for pselect
+ AC_CACHE_CHECK(for pselect, ac_cv_pselect, [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #include <sys/select.h>]],[[
+ pselect (0, 0, 0, 0, 0, 0);]])],
+ [ac_cv_pselect=yes],
+ [ac_cv_pselect=no])])
+ if test $ac_cv_pselect = yes; then
+   AC_DEFINE(HAVE_PSELECT, 1,
+   [Define if pselect provided.])
+ fi
+ 
+ # And failing that, use good old select.
+ # If we can't even use this, the server is serialized.
+ # Check for select
+ AC_CACHE_CHECK(for select, ac_cv_select, [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #include <sys/select.h>]],[[
+ select (0, 0, 0, 0, 0);]])],
+ [ac_cv_select=yes],
+ [ac_cv_select=no])])
+ if test $ac_cv_select = yes; then
+   AC_DEFINE(HAVE_SELECT, 1,
+   [Define if select provided.])
+ fi
+ 
+ # Avoid some fnctl calls by using accept4, when available.
+ # Check for accept4
+ AC_CACHE_CHECK(for accept4, ac_cv_accept4, [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #include <sys/socket.h>]],[[
+ int err = accept4 (1, 0, 0, SOCK_NONBLOCK);]])],
+ [ac_cv_accept4=yes],
+ [ac_cv_accept4=no])])
+ if test $ac_cv_accept4 = yes; then
+   AC_DEFINE(HAVE_ACCEPT4, 1,
+   [Define if accept4 provided.])
+ fi
+ 
+ # For better server messages, look for a way to stringize network addresses
+ # Check for inet_ntop
+ AC_CACHE_CHECK(for inet_ntop, ac_cv_inet_ntop, [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #include <arpa/inet.h>
+ #include <netinet/in.h>]],[[
+ sockaddr_in6 in6;
+ char buf[INET6_ADDRSTRLEN];
+ const char *str = inet_ntop (AF_INET6, &in6, buf, sizeof (buf));]])],
+ [ac_cv_inet_ntop=yes],
+ [ac_cv_inet_ntop=no])])
+ if test $ac_cv_inet_ntop = yes; then
+   AC_DEFINE(HAVE_INET_NTOP, 1,
+   [Define if inet_ntop provided.])
+ fi
+ 
+ # Determine what GCC version number to use in filesystem paths.
+ GCC_BASE_VER
+ 
+ # Solaris needs libsocket and libnsl for socket functions before 11.4.
+ # libcody uses those.
+ save_LIBS="$LIBS"
+ LIBS=
+ AX_LIB_SOCKET_NSL
+ NETLIBS="$LIBS"
+ LIBS="$save_LIBS"
+ AC_SUBST(NETLIBS)
+ 
+ AC_CONFIG_HEADERS([config.h])
+ AC_CONFIG_FILES([Makefile])
+ 
+ AC_OUTPUT
diff -Nrcpad gcc-10.3.0/c++tools/resolver.cc gcc-11.1.0/c++tools/resolver.cc
*** gcc-10.3.0/c++tools/resolver.cc	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/c++tools/resolver.cc	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,309 ----
+ /* C++ modules.  Experimental!	-*- c++ -*-
+    Copyright (C) 2017-2020 Free Software Foundation, Inc.
+    Written by Nathan Sidwell <nathan@acm.org> while at FaceBook
+ 
+    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 "config.h"
+ 
+ #include "resolver.h"
+ // C++
+ #include <algorithm>
+ // C
+ #include <cstring>
+ // OS
+ #include <fcntl.h>
+ #include <unistd.h>
+ #if 0 // 1 for testing no mmap
+ #define MAPPED_READING 0
+ #else
+ #ifdef IN_GCC
+ #if HAVE_MMAP_FILE && _POSIX_MAPPED_FILES > 0
+ #define MAPPED_READING 1
+ #else
+ #define MAPPED_READING 0
+ #endif
+ #else
+ #ifdef HAVE_SYS_MMAN_H
+ #include <sys/mman.h>
+ #define MAPPED_READING 1
+ #else
+ #define MAPPED_READING 0
+ #endif
+ #endif
+ #endif
+ 
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ 
+ #if !defined (IN_GCC) && !MAPPED_READING
+ #define xmalloc(X) malloc(X)
+ #endif
+ 
+ #if !HOST_HAS_O_CLOEXEC
+ #define O_CLOEXEC 0
+ #endif
+ 
+ #ifndef DIR_SEPARATOR
+ #define DIR_SEPARATOR '/'
+ #endif
+ 
+ module_resolver::module_resolver (bool map, bool xlate)
+   : default_map (map), default_translate (xlate)
+ {
+ }
+ 
+ module_resolver::~module_resolver ()
+ {
+   if (fd_repo >= 0)
+     close (fd_repo);
+ }
+ 
+ bool
+ module_resolver::set_repo (std::string &&r, bool force)
+ {
+   if (force || repo.empty ())
+     {
+       repo = std::move (r);
+       force = true;
+     }
+   return force;
+ }
+ 
+ bool
+ module_resolver::add_mapping (std::string &&module, std::string &&file,
+ 			      bool force)
+ {
+   auto res = map.emplace (std::move (module), std::move (file));
+   if (res.second)
+     force = true;
+   else if (force)
+     res.first->second = std::move (file);
+ 
+   return force;
+ }
+ 
+ int
+ module_resolver::read_tuple_file (int fd, char const *prefix, bool force)
+ {
+   struct stat stat;
+   if (fstat (fd, &stat) < 0)
+     return -errno;
+ 
+   if (!stat.st_size)
+     return 0;
+ 
+   void *buffer = nullptr;
+ #if MAPPED_READING
+   // Just map the file, we're gonna read all of it, so no need for
+   // line buffering
+   buffer = mmap (nullptr, stat.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
+   if (buffer == MAP_FAILED)
+     return -errno;
+ #else
+   buffer = xmalloc (stat.st_size);
+   if (!buffer)
+     return -errno;
+   if (read (fd, buffer, stat.st_size) != stat.st_size)
+     return -errno;
+ #endif
+ 
+   size_t prefix_len = prefix ? strlen (prefix) : 0;
+   unsigned lineno = 0;
+ 
+   for (char const *begin = reinterpret_cast <char const *> (buffer),
+ 	 *end = begin + stat.st_size, *eol;
+        begin != end; begin = eol + 1)
+     {
+       lineno++;
+       eol = std::find (begin, end, '\n');
+       if (eol == end)
+ 	// last line has no \n, ignore the line, you lose
+ 	break;
+ 
+       auto *pos = begin;
+       bool pfx_search = prefix_len != 0;
+ 
+     pfx_search:
+       while (*pos == ' ' || *pos == '\t')
+ 	pos++;
+ 
+       auto *space = pos;
+       while (*space != '\n' && *space != ' ' && *space != '\t')
+ 	space++;
+ 
+       if (pos == space)
+ 	// at end of line, nothing here	
+ 	continue;
+ 
+       if (pfx_search)
+ 	{
+ 	  if (size_t (space - pos) == prefix_len
+ 	      && std::equal (pos, space, prefix))
+ 	    pfx_search = false;
+ 	  pos = space;
+ 	  goto pfx_search;
+ 	}
+ 
+       std::string module (pos, space);
+       while (*space == ' ' || *space == '\t')
+ 	space++;
+       std::string file (space, eol);
+ 
+       if (module[0] == '$')
+ 	{
+ 	  if (module == "$root")
+ 	    set_repo (std::move (file));
+ 	  else
+ 	    return lineno;
+ 	}
+       else
+ 	{
+ 	  if (file.empty ())
+ 	    file = GetCMIName (module);
+ 	  add_mapping (std::move (module), std::move (file), force);
+ 	}
+     }
+ 
+ #if MAPPED_READING
+   munmap (buffer, stat.st_size);
+ #else
+   free (buffer);
+ #endif
+ 
+   return 0;
+ }
+ 
+ char const *
+ module_resolver::GetCMISuffix ()
+ {
+   return "gcm";
+ }
+ 
+ module_resolver *
+ module_resolver::ConnectRequest (Cody::Server *s, unsigned version,
+ 				 std::string &a, std::string &i)
+ {
+   if (!version || version > Cody::Version)
+     s->ErrorResponse ("version mismatch");
+   else if (a != "GCC")
+     // Refuse anything but GCC
+     ErrorResponse (s, std::string ("only GCC supported"));
+   else if (!ident.empty () && ident != i)
+     // Failed ident check
+     ErrorResponse (s, std::string ("bad ident"));
+   else
+     // Success!
+     s->ConnectResponse ("gcc");
+ 
+   return this;
+ }
+ 
+ int
+ module_resolver::ModuleRepoRequest (Cody::Server *s)
+ {
+   s->PathnameResponse (repo);
+   return 0;
+ }
+ 
+ int
+ module_resolver::cmi_response (Cody::Server *s, std::string &module)
+ {
+   auto iter = map.find (module);
+   if (iter == map.end ())
+     {
+       std::string file = default_map ? GetCMIName (module) : std::string ();
+       auto res = map.emplace (module, file);
+       iter = res.first;
+     }
+ 
+   if (iter->second.empty ())
+     s->ErrorResponse ("no such module");
+   else
+     s->PathnameResponse (iter->second);
+ 
+   return 0;
+ }
+ 
+ int
+ module_resolver::ModuleExportRequest (Cody::Server *s, Cody::Flags,
+ 				      std::string &module)
+ {
+   return cmi_response (s, module);
+ }
+ 
+ int
+ module_resolver::ModuleImportRequest (Cody::Server *s, Cody::Flags,
+ 				      std::string &module)
+ {
+   return cmi_response (s, module);
+ }
+ 
+ int
+ module_resolver::IncludeTranslateRequest (Cody::Server *s, Cody::Flags,
+ 					  std::string &include)
+ {
+   auto iter = map.find (include);
+   if (iter == map.end () && default_translate)
+     {
+       // Not found, look for it
+       auto file = GetCMIName (include);
+       struct stat statbuf;
+       bool ok = true;
+ 
+ #if HAVE_FSTATAT
+       int fd_dir = AT_FDCWD;
+       if (!repo.empty ())
+ 	{
+ 	  if (fd_repo == -1)
+ 	    {
+ 	      fd_repo = open (repo.c_str (),
+ 			      O_RDONLY | O_CLOEXEC | O_DIRECTORY);
+ 	      if (fd_repo < 0)
+ 		fd_repo = -2;
+ 	    }
+ 	  fd_dir = fd_repo;
+ 	}
+ 
+       if (!repo.empty () && fd_repo < 0)
+ 	ok = false;
+       else if (fstatat (fd_dir, file.c_str (), &statbuf, 0) < 0
+ 	       || !S_ISREG (statbuf.st_mode))
+ 	ok = false;
+ #else
+       auto append = repo;
+       append.push_back (DIR_SEPARATOR);
+       append.append (file);
+       if (stat (append.c_str (), &statbuf) < 0
+ 	  || !S_ISREG (statbuf.st_mode))
+ 	ok = false;
+ #endif
+       if (!ok)
+ 	// Mark as not present
+ 	file.clear ();
+       auto res = map.emplace (include, file);
+       iter = res.first;
+     }
+ 
+   if (iter == map.end () || iter->second.empty ())
+     s->BoolResponse (false);
+   else
+     s->PathnameResponse (iter->second);
+ 
+   return 0;
+ }
+ 
diff -Nrcpad gcc-10.3.0/c++tools/resolver.h gcc-11.1.0/c++tools/resolver.h
*** gcc-10.3.0/c++tools/resolver.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/c++tools/resolver.h	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,107 ----
+ /* C++ modules.  Experimental!	-*- c++ -*-
+    Copyright (C) 2017-2020 Free Software Foundation, Inc.
+    Written by Nathan Sidwell <nathan@acm.org> while at FaceBook
+ 
+    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/>.  */
+ 
+ #ifndef GXX_RESOLVER_H
+ #define GXX_RESOLVER_H 1
+ 
+ // Mapper interface for client and server bits
+ #include "cody.hh"
+ // C++
+ #if !IN_GCC
+ #include <string>
+ #include <map>
+ #endif
+ 
+ // This is a GCC class, so GCC coding conventions on new bits.  
+ class module_resolver : public Cody::Resolver
+ {
+ public:
+   using parent = Cody::Resolver;
+   using module_map = std::map<std::string, std::string>;
+ 
+ private:
+   std::string repo;
+   std::string ident;
+   module_map map;
+   int fd_repo = -1;
+   bool default_map = true;
+   bool default_translate = true;
+ 
+ public:
+   module_resolver (bool map = true, bool xlate = false);
+   virtual ~module_resolver () override;
+ 
+ public:
+   void set_default_map (bool d)
+   {
+     default_map = d;
+   }
+   void set_default_translate (bool d)
+   {
+     default_translate = d;
+   }
+   void set_ident (char const *i)
+   {
+     ident = i;
+   }
+   bool set_repo (std::string &&repo, bool force = false);
+   bool add_mapping (std::string &&module, std::string &&file,
+ 		    bool force = false);
+ 
+   // Return +ve line number of error, or -ve errno
+   int read_tuple_file (int fd, char const *prefix, bool force = false);
+   int read_tuple_file (int fd, std::string const &prefix,
+ 			    bool force = false)
+   {
+     return read_tuple_file (fd, prefix.empty () ? nullptr : prefix.c_str (),
+ 			    force);
+   }
+ 
+ public:
+   // Virtual overriders, names are controlled by Cody::Resolver
+   using parent::ConnectRequest;
+   virtual module_resolver *ConnectRequest (Cody::Server *, unsigned version,
+ 					   std::string &agent,
+ 					   std::string &ident)
+     override;
+   using parent::ModuleRepoRequest;
+   virtual int ModuleRepoRequest (Cody::Server *) override;
+   using parent::ModuleExportRequest;
+   virtual int ModuleExportRequest (Cody::Server *s, Cody::Flags,
+ 				   std::string &module)
+     override;
+   using parent::ModuleImportRequest;
+   virtual int ModuleImportRequest (Cody::Server *s, Cody::Flags,
+ 				   std::string &module)
+     override;
+   using parent::IncludeTranslateRequest;
+   virtual int IncludeTranslateRequest (Cody::Server *s, Cody::Flags,
+ 				       std::string &include)
+     override;
+ 
+ private:
+   using parent::GetCMISuffix;
+   virtual char const *GetCMISuffix () override;
+ 
+ private:
+   int cmi_response (Cody::Server *s, std::string &module);
+ };
+ 
+ #endif
diff -Nrcpad gcc-10.3.0/c++tools/server.cc gcc-11.1.0/c++tools/server.cc
*** gcc-10.3.0/c++tools/server.cc	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/c++tools/server.cc	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,977 ----
+ /* C++ modules.  Experimental!
+    Copyright (C) 2018-2020 Free Software Foundation, Inc.
+    Written by Nathan Sidwell <nathan@acm.org> while at FaceBook
+ 
+    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 "config.h"
+ #include "resolver.h"
+ 
+ // C++
+ #include <set>
+ #include <vector>
+ #include <map>
+ // C
+ #include <csignal>
+ #include <cstring>
+ #include <cstdarg>
+ // OS
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ 
+ // Network
+ /* Include network stuff first.  Excitingly OSX10.14 uses bcmp here, which
+    we poison later!  */
+ #if defined (HAVE_AF_UNIX) || defined (HAVE_AF_INET6)
+ /* socket, bind, listen, accept{4}  */
+ # define NETWORKING 1
+ # include <sys/socket.h>
+ # ifdef HAVE_AF_UNIX
+ /* sockaddr_un  */
+ #  include <sys/un.h>
+ # endif
+ # include <netinet/in.h>
+ # ifdef HAVE_AF_INET6
+ /* sockaddr_in6, getaddrinfo, freeaddrinfo, gai_sterror, ntohs, htons.  */
+ #  include <netdb.h>
+ # endif
+ #ifdef HAVE_INET_NTOP
+ /* inet_ntop.  */
+ #include <arpa/inet.h>
+ #endif
+ #endif
+ #ifndef HAVE_AF_INET6
+ # define gai_strerror(X) ""
+ #endif
+ 
+ #include <getopt.h>
+ 
+ // Select or epoll
+ #if NETWORKING
+ #ifdef HAVE_EPOLL
+ /* epoll_create, epoll_ctl, epoll_pwait  */
+ #include <sys/epoll.h>
+ #endif
+ #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
+ /* pselect or select  */
+ #include <sys/select.h>
+ #endif
+ #endif
+ 
+ // GCC
+ #include "version.h"
+ #include "ansidecl.h"
+ #define HAVE_DECL_BASENAME 1 /* See comment in gcc/configure.ac.  */
+ #include "libiberty.h"
+ 
+ #if !HOST_HAS_O_CLOEXEC
+ #define O_CLOEXEC 0
+ #endif
+ 
+ #ifndef IS_DIR_SEPARATOR
+ #define IS_DIR_SEPARATOR(C) ((C) == '/')
+ #endif
+ #ifndef DIR_SEPARATOR
+ #define DIR_SEPARATOR '/'
+ #endif
+ 
+ #if NETWORKING
+ struct netmask {
+   in6_addr addr;
+   unsigned bits;
+ 
+   netmask (const in6_addr &a, unsigned b)
+   {
+     if (b > sizeof (in6_addr) * 8)
+       b = sizeof (in6_addr) * 8;
+     bits = b;
+     unsigned byte = (b + 7) / 8;
+     unsigned ix = 0;
+     for (ix = 0; ix < byte; ix++)
+       addr.s6_addr[ix] = a.s6_addr[ix];
+     for (; ix != sizeof (in6_addr); ix++)
+       addr.s6_addr[ix] = 0;
+     if (b & 3)
+       addr.s6_addr[b/7] &= (255 << 8) >> (b & 3);
+   }
+ 
+   bool includes (const in6_addr &a) const
+   {
+     unsigned byte = bits / 8;
+     for (unsigned ix = 0; ix != byte; ix++)
+       if (addr.s6_addr[ix] != a.s6_addr[ix])
+ 	return false;
+     if (bits & 3)
+       if ((addr.s6_addr[byte] ^ a.s6_addr[byte]) >> (8 - (bits & 3)))
+ 	return false;
+     return true;
+   }
+ };
+ 
+ /* Netmask comparison.  */
+ struct netmask_cmp {
+   bool operator() (const netmask &a, const netmask &b) const
+   {
+     if (a.bits != b.bits)
+       return a.bits < b.bits;
+     for (unsigned ix = 0; ix != sizeof (in6_addr); ix++)
+       if (a.addr.s6_addr[ix] != b.addr.s6_addr[ix])
+ 	return a.addr.s6_addr[ix] < b.addr.s6_addr[ix];
+     return false;
+   }
+ };
+ 
+ typedef std::set<netmask, netmask_cmp> netmask_set_t;
+ typedef std::vector<netmask> netmask_vec_t;
+ #endif
+ 
+ const char *progname;
+ 
+ /* Speak thoughts out loud.  */
+ static bool flag_noisy = false;
+ 
+ /* One and done.  */
+ static bool flag_one = false;
+ 
+ /* Serialize connections.  */
+ static bool flag_sequential = false;
+ 
+ /* Fallback to default if map file is unrewarding.  */
+ static bool flag_map = false;
+ 
+ /* Fallback to xlate if map file is unrewarding.  */
+ static bool flag_xlate = false;
+ 
+ /* Root binary directory.  */
+ static const char *flag_root = "gcm.cache";
+ 
+ #if NETWORKING
+ static netmask_set_t netmask_set;
+ 
+ static netmask_vec_t accept_addrs;
+ #endif
+ 
+ /* Strip out the source directory from FILE.  */
+ 
+ static const char *
+ trim_src_file (const char *file)
+ {
+   static const char me[] = __FILE__;
+   unsigned pos = 0;
+ 
+   while (file[pos] == me[pos] && me[pos])
+     pos++;
+   while (pos && !IS_DIR_SEPARATOR (me[pos-1]))
+     pos--;
+ 
+   return file + pos;
+ }
+ 
+ /* Die screaming.  */
+ 
+ void ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF_1 ATTRIBUTE_COLD
+ internal_error (const char *fmt, ...)
+ {
+   fprintf (stderr, "%s:Internal error ", progname);
+   va_list args;
+ 
+   va_start (args, fmt);
+   vfprintf (stderr, fmt, args);
+   va_end (args);
+   fprintf (stderr, "\n");
+ 
+   exit (2);
+ }
+ 
+ /* Hooked to from gcc_assert & gcc_unreachable.  */
+ 
+ void ATTRIBUTE_NORETURN ATTRIBUTE_COLD
+ fancy_abort (const char *file, int line, const char *func)
+ {
+   internal_error ("in %s, at %s:%d", func, trim_src_file (file), line);
+ }
+ 
+ /* Exploded on a signal.  */
+ 
+ static void ATTRIBUTE_NORETURN ATTRIBUTE_COLD
+ crash_signal (int sig)
+ {
+   signal (sig, SIG_DFL);
+   // strsignal is not portable :(
+   internal_error ("signal %d", sig);
+ }
+ 
+ /* A fatal error of some kind.  */
+ 
+ static void ATTRIBUTE_NORETURN ATTRIBUTE_COLD ATTRIBUTE_PRINTF_1
+ error (const char *msg, ...)
+ {
+   fprintf (stderr, "%s:error: ", progname);
+   va_list args;
+ 
+   va_start (args, msg);
+   vfprintf (stderr, msg, args);
+   va_end (args);
+   fprintf (stderr, "\n");
+ 
+   exit (1);
+ }
+ 
+ #if NETWORKING
+ /* Progress messages to the user.  */
+ static bool ATTRIBUTE_PRINTF_1 ATTRIBUTE_COLD
+ noisy (const char *fmt, ...)
+ {
+   fprintf (stderr, "%s:", progname);
+   va_list args;
+   va_start (args, fmt);
+   vfprintf (stderr, fmt, args);
+   va_end (args);
+   fprintf (stderr, "\n");
+ 
+   return false;
+ }
+ #endif
+ 
+ /* More messages to the user.  */
+ 
+ static void ATTRIBUTE_PRINTF_2
+ fnotice (FILE *file, const char *fmt, ...)
+ {
+   va_list args;
+ 
+   va_start (args, fmt);
+   vfprintf (file, fmt, args);
+   va_end (args);
+ }
+ 
+ static void ATTRIBUTE_NORETURN
+ print_usage (int error_p)
+ {
+   FILE *file = error_p ? stderr : stdout;
+   int status = error_p ? 1 : 0;
+ 
+   fnotice (file, "Usage: %s [OPTION...] [CONNECTION] [MAPPINGS...] \n\n",
+ 	   progname);
+   fnotice (file, "C++ Module Mapper.\n\n");
+   fnotice (file, "  -a, --accept     Netmask to accept from\n");
+   fnotice (file, "  -f, --fallback   Use fallback for missing mappings\n");
+   fnotice (file, "  -h, --help       Print this help, then exit\n");
+   fnotice (file, "  -n, --noisy      Print progress messages\n");
+   fnotice (file, "  -1, --one        One connection and then exit\n");
+   fnotice (file, "  -r, --root DIR   Root compiled module directory\n");
+   fnotice (file, "  -s, --sequential Process connections sequentially\n");
+   fnotice (file, "  -v, --version    Print version number, then exit\n");
+   fnotice (file, "Send SIGTERM(%d) to terminate\n", SIGTERM);
+   fnotice (file, "\nFor bug reporting instructions, please see:\n%s.\n",
+ 	   bug_report_url);
+   exit (status);
+ }
+ 
+ /* Print version information and exit.  */
+ 
+ static void ATTRIBUTE_NORETURN
+ print_version (void)
+ {
+   fnotice (stdout, "%s %s%s\n", progname, pkgversion_string, version_string);
+   fprintf (stdout, "Copyright %s 2018-2020 Free Software Foundation, Inc.\n",
+ 	   ("(C)"));
+   fnotice (stdout,
+ 	   ("This is free software; see the source for copying conditions.\n"
+ 	    "There is NO warranty; not even for MERCHANTABILITY or \n"
+ 	    "FITNESS FOR A PARTICULAR PURPOSE.\n\n"));
+   exit (0);
+ }
+ 
+ /* ARG is a netmask to accept from.  Add it to the table.  Return
+    false if we fail to resolve it.  */
+ 
+ static bool
+ accept_from (char *arg ATTRIBUTE_UNUSED)
+ {
+   bool ok = true;
+ #if HAVE_AF_INET6
+   unsigned bits = sizeof (in6_addr) * 8;
+   char *slash = strrchr (arg, '/');
+   if (slash)
+     {
+       *slash = 0;
+       if (slash[1])
+ 	{
+ 	  char *endp;
+ 	  bits = strtoul (slash + 1, &endp, 0);
+ 	}
+     }
+ 
+   addrinfo hints;
+ 
+   hints.ai_flags = AI_NUMERICSERV;
+   hints.ai_family = AF_INET6;
+   hints.ai_socktype = SOCK_STREAM;
+   hints.ai_protocol = 0;
+   hints.ai_addrlen = 0;
+   hints.ai_addr = NULL;
+   hints.ai_canonname = NULL;
+   hints.ai_next = NULL;
+ 
+   struct addrinfo *addrs = NULL;
+   if (int e = getaddrinfo (slash == arg ? NULL : arg, "0", &hints, &addrs))
+     {
+       noisy ("cannot resolve '%s': %s", arg, gai_strerror (e));
+       ok = false;
+     }
+   else
+     for (addrinfo *next = addrs; next; next = next->ai_next)
+       if (next->ai_family == AF_INET6)
+ 	{
+ 	  netmask mask (((const sockaddr_in6 *)next->ai_addr)->sin6_addr, bits);
+ 	  netmask_set.insert (mask);
+ 	}
+   freeaddrinfo (addrs);
+ #endif
+   return ok;
+ }
+ 
+ /* Process args, return index to first non-arg.  */
+ 
+ static int
+ process_args (int argc, char **argv)
+ {
+   static const struct option options[] =
+     {
+      { "accept", required_argument, NULL, 'a' },
+      { "help",	no_argument,	NULL, 'h' },
+      { "map",   no_argument,	NULL, 'm' },
+      { "noisy",	no_argument,	NULL, 'n' },
+      { "one",	no_argument,	NULL, '1' },
+      { "root",	required_argument, NULL, 'r' },
+      { "sequential", no_argument, NULL, 's' },
+      { "translate",no_argument,	NULL, 't' },
+      { "version", no_argument,	NULL, 'v' },
+      { 0, 0, 0, 0 }
+     };
+   int opt;
+   bool bad_accept = false;
+   const char *opts = "a:fhmn1r:stv";
+   while ((opt = getopt_long (argc, argv, opts, options, NULL)) != -1)
+     {
+       switch (opt)
+ 	{
+ 	case 'a':
+ 	  if (!accept_from (optarg))
+ 	    bad_accept = true;
+ 	  break;
+ 	case 'h':
+ 	  print_usage (false);
+ 	  /* print_usage will exit.  */
+ 	case 'f': // deprecated alias
+ 	case 'm':
+ 	  flag_map = true;
+ 	  break;
+ 	case 'n':
+ 	  flag_noisy = true;
+ 	  break;
+ 	case '1':
+ 	  flag_one = true;
+ 	  break;
+ 	case 'r':
+ 	  flag_root = optarg;
+ 	  break;
+ 	case 's':
+ 	  flag_sequential = true;
+ 	  break;
+ 	case 't':
+ 	  flag_xlate = true;
+ 	  break;
+ 	case 'v':
+ 	  print_version ();
+ 	  /* print_version will exit.  */
+ 	default:
+ 	  print_usage (true);
+ 	  /* print_usage will exit.  */
+ 	}
+     }
+ 
+   if (bad_accept)
+     error ("failed to resolve all accept addresses");
+ 
+   return optind;
+ }
+ 
+ #if NETWORKING
+ 
+ /* Manipulate the EPOLL state, or do nothing, if there is epoll.  */
+ 
+ #ifdef HAVE_EPOLL
+ static inline void
+ do_epoll_ctl (int epoll_fd, int code, int event, int fd, unsigned data)
+ {
+   epoll_event ev;
+   ev.events = event;
+   ev.data.u32 = data;
+   if (epoll_ctl (epoll_fd, code, fd, &ev))
+     {
+       noisy ("epoll_ctl error:%s", xstrerror (errno));
+       gcc_unreachable ();
+     }
+ }
+ #define my_epoll_ctl(EFD,C,EV,FD,CL) \
+   ((EFD) >= 0 ? do_epoll_ctl (EFD,C,EV,FD,CL) : (void)0)
+ #else
+ #define my_epoll_ctl(EFD,C,EV,FD,CL) ((void)(EFD), (void)(FD), (void)(CL))
+ #endif
+ 
+ /* We increment this to tell the server to shut down.  */
+ static volatile int term = false;
+ static volatile int kill_sock_fd = -1;
+ #if !defined (HAVE_PSELECT) && defined (HAVE_SELECT)
+ static int term_pipe[2] = {-1, -1};
+ #else
+ #define term_pipe ((int *)NULL)
+ #endif
+ 
+ /* A terminate signal.  Shutdown gracefully.  */
+ 
+ static void
+ term_signal (int sig)
+ {
+   signal (sig, term_signal);
+   term = term + 1;
+   if (term_pipe && term_pipe[1] >= 0)
+     write (term_pipe[1], &term_pipe[1], 1);
+ }
+ 
+ /* A kill signal.  Shutdown immediately.  */
+ 
+ static void
+ kill_signal (int sig)
+ {
+   signal (sig, SIG_DFL);
+   int sock_fd = kill_sock_fd;
+   if (sock_fd >= 0)
+     close (sock_fd);
+   exit (2);
+ }
+ 
+ bool process_server (Cody::Server *server, unsigned slot, int epoll_fd)
+ {
+   switch (server->GetDirection ())
+     {
+     case Cody::Server::READING:
+       if (int err = server->Read ())
+ 	return !(err == EINTR || err == EAGAIN);
+       server->ProcessRequests ();
+       server->PrepareToWrite ();
+       break;
+ 
+     case Cody::Server::WRITING:
+       if (int err = server->Write ())
+ 	return !(err == EINTR || err == EAGAIN);
+       server->PrepareToRead ();
+       break;
+ 
+     default:
+       // We should never get here
+       return true;
+     }
+ 
+   // We've changed direction, so update epoll
+   gcc_assert (server->GetFDRead () == server->GetFDWrite ());
+   my_epoll_ctl (epoll_fd, EPOLL_CTL_MOD,
+ 		server->GetDirection () == Cody::Server::READING
+ 		? EPOLLIN : EPOLLOUT, server->GetFDRead (), slot + 1);
+ 
+   return false;
+ }
+ 
+ void close_server (Cody::Server *server, int epoll_fd)
+ {
+   my_epoll_ctl (epoll_fd, EPOLL_CTL_DEL, EPOLLIN, server->GetFDRead (), 0);
+ 
+   close (server->GetFDRead ());
+   
+   delete server;
+ }
+ 
+ int open_server (bool ip6, int sock_fd)
+ {
+   sockaddr_in6 addr;
+   socklen_t addr_len = sizeof (addr);
+ 
+ #ifdef HAVE_ACCEPT4
+   int client_fd = accept4 (sock_fd, ip6 ? (sockaddr *)&addr : nullptr,
+ 			   &addr_len, SOCK_NONBLOCK);
+ #else
+   int client_fd = accept (sock_fd, ip6 ? (sockaddr *)&addr : nullptr, &addr_len);
+ #endif
+   if (client_fd < 0)
+     {
+       error ("cannot accept: %s", xstrerror (errno));
+       flag_one = true;
+     }
+   else if (ip6)
+     {
+       const char *str = NULL;
+ #if HAVE_INET_NTOP
+       char name[INET6_ADDRSTRLEN];
+       str = inet_ntop (addr.sin6_family, &addr.sin6_addr, name, sizeof (name));
+ #endif
+       if (!accept_addrs.empty ())
+ 	{
+ 	  netmask_vec_t::iterator e = accept_addrs.end ();
+ 	  for (netmask_vec_t::iterator i = accept_addrs.begin ();
+ 	       i != e; ++i)
+ 	    if (i->includes (addr.sin6_addr))
+ 	      goto present;
+ 	  close (client_fd);
+ 	  client_fd = -1;
+ 	  noisy ("Rejecting connection from disallowed source '%s'",
+ 		 str ? str : "");
+ 	present:;
+ 	}
+       if (client_fd >= 0)
+ 	flag_noisy && noisy ("Accepting connection from '%s'", str ? str : "");
+     }
+ 
+   return client_fd;
+ }
+ 
+ /* A server listening on bound socket SOCK_FD.  */
+ 
+ static void
+ server (bool ipv6, int sock_fd, module_resolver *resolver)
+ {
+   int epoll_fd = -1;
+ 
+   signal (SIGTERM, term_signal);
+ #ifdef HAVE_EPOLL
+   epoll_fd = epoll_create (1);
+ #endif
+   if (epoll_fd >= 0)
+     my_epoll_ctl (epoll_fd, EPOLL_CTL_ADD, EPOLLIN, sock_fd, 0);
+ 
+ #if defined (HAVE_EPOLL) || defined (HAVE_PSELECT) || defined (HAVE_SELECT)
+   sigset_t mask;
+   {
+     sigset_t block;
+     sigemptyset (&block);
+     sigaddset (&block, SIGTERM);
+     sigprocmask (SIG_BLOCK, &block, &mask);
+   }
+ #endif
+ 
+ #ifdef HAVE_EPOLL
+   const unsigned max_events = 20;
+   epoll_event events[max_events];
+ #endif
+ #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
+   fd_set readers, writers;
+ #endif
+   if (term_pipe)
+     pipe (term_pipe);
+ 
+   // We need stable references to servers, so this array can contain nulls
+   std::vector<Cody::Server *> connections;
+   unsigned live = 0;
+   while (sock_fd >= 0 || live)
+     {
+       /* Wait for one or more events.  */
+       bool eintr = false;
+       int event_count;
+ 
+       if (epoll_fd >= 0)
+ 	{
+ #ifdef HAVE_EPOLL
+ 	  event_count = epoll_pwait (epoll_fd, events, max_events, -1, &mask);
+ #endif
+ 	}
+       else
+ 	{
+ #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
+ 	  FD_ZERO (&readers);
+ 	  FD_ZERO (&writers);
+ 
+ 	  unsigned limit = 0;
+ 	  if (sock_fd >= 0
+ 	      && !(term || (live && (flag_one || flag_sequential))))
+ 	    {
+ 	      FD_SET (sock_fd, &readers);
+ 	      limit = sock_fd + 1;
+ 	    }
+ 
+ 	  if (term_pipe && term_pipe[0] >= 0)
+ 	    {
+ 	      FD_SET (term_pipe[0], &readers);
+ 	      if (unsigned (term_pipe[0]) >= limit)
+ 		limit = term_pipe[0] + 1;
+ 	    }
+ 
+ 	  for (auto iter = connections.begin ();
+ 	       iter != connections.end (); ++iter)
+ 	    if (auto *server = *iter)
+ 	      {
+ 		int fd = -1;
+ 		switch (server->GetDirection ())
+ 		  {
+ 		  case Cody::Server::READING:
+ 		    fd = server->GetFDRead ();
+ 		    FD_SET (fd, &readers);
+ 		    break;
+ 		  case Cody::Server::WRITING:
+ 		    fd = server->GetFDWrite ();
+ 		    FD_SET (fd, &writers);
+ 		    break;
+ 		  default:
+ 		    break;
+ 		  }
+ 
+ 		if (fd >= 0 && limit <= unsigned (fd))
+ 		  limit = fd + 1;
+ 	      }
+ 
+ #ifdef HAVE_PSELECT
+ 	  event_count = pselect (limit, &readers, &writers, NULL, NULL, &mask);
+ #else
+ 	  event_count = select (limit, &readers, &writers, NULL, NULL);
+ #endif
+ 	  if (term_pipe && FD_ISSET (term_pipe[0], &readers))
+ 	    {
+ 	      /* Fake up an interrupted system call.  */
+ 	      event_count = -1;
+ 	      errno = EINTR;
+ 	    }
+ #endif
+ 	}
+ 
+       if (event_count < 0)
+ 	{
+ 	  // Error in waiting
+ 	  if (errno == EINTR)
+ 	    {
+ 	      flag_noisy && noisy ("Interrupted wait");
+ 	      eintr = true;
+ 	    }
+ 	  else
+ 	    error ("cannot %s: %s", epoll_fd >= 0 ? "epoll_wait"
+ #ifdef HAVE_PSELECT
+ 		   : "pselect",
+ #else
+ 		   : "select",
+ #endif
+ 		   xstrerror (errno));
+ 	  event_count = 0;
+ 	}
+ 
+       auto iter = connections.begin ();
+       while (event_count--)
+ 	{
+ 	  // Process an event
+ 	  int active = -2;
+ 
+ 	  if (epoll_fd >= 0)
+ 	    {
+ #ifdef HAVE_EPOLL
+ 	      /* See PR c++/88664 for why a temporary is used.  */
+ 	      unsigned data = events[event_count].data.u32;
+ 	      active = int (data) - 1;
+ #endif
+ 	    }
+ 	  else
+ 	    {
+ 	      for (; iter != connections.end (); ++iter)
+ 		if (auto *server = *iter)
+ 		  {
+ 		    bool found = false;
+ 		    switch (server->GetDirection ())
+ 		      {
+ #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
+ 		      case Cody::Server::READING:
+ 			found = FD_ISSET (server->GetFDRead (), &readers);
+ 			break;
+ 		      case Cody::Server::WRITING:
+ 			found = FD_ISSET (server->GetFDWrite (), &writers);
+ 			break;
+ #endif
+ 		      default:
+ 			break;
+ 		      }
+ 
+ 		    if (found)
+ 		      {
+ 			active = iter - connections.begin ();
+ 			++iter;
+ 			break;
+ 		      }
+ 		  }
+ 
+ 	      if (active < 0 && sock_fd >= 0 && FD_ISSET (sock_fd, &readers))
+ 		active = -1;
+ 	    }
+ 
+ 	  if (active >= 0)
+ 	    {
+ 	      // Do the action
+ 	      auto *server = connections[active];
+ 	      if (process_server (server, active, epoll_fd))
+ 		{
+ 		  connections[active] = nullptr;
+ 		  close_server (server, epoll_fd);
+ 		  live--;
+ 		  if (flag_sequential)
+ 		    my_epoll_ctl (epoll_fd, EPOLL_CTL_ADD, EPOLLIN, sock_fd, 0);
+ 		}
+ 	    }
+ 	  else if (active == -1 && !eintr)
+ 	    {
+ 	      // New connection
+ 	      int fd = open_server (ipv6, sock_fd);
+ 	      if (fd >= 0)
+ 		{
+ #if !defined (HAVE_ACCEPT4) \
+   && (defined (HAVE_EPOLL) || defined (HAVE_PSELECT) || defined (HAVE_SELECT))
+ 		  int flags = fcntl (fd, F_GETFL, 0);
+ 		  fcntl (fd, F_SETFL, flags | O_NONBLOCK);
+ #endif
+ 		  auto *server = new Cody::Server (resolver, fd);
+ 
+ 		  unsigned slot = connections.size ();
+ 		  if (live == slot)
+ 		    connections.push_back (server);
+ 		  else
+ 		    for (auto iter = connections.begin (); ; ++iter)
+ 		      if (!*iter)
+ 			{
+ 			  *iter = server;
+ 			  slot = iter - connections.begin ();
+ 			  break;
+ 			}
+ 		  live++;
+ 		  my_epoll_ctl (epoll_fd, EPOLL_CTL_ADD, EPOLLIN, fd, slot + 1);
+ 		}
+ 	    }
+ 
+ 	  if (sock_fd >= 0
+ 	      && (term || (live && (flag_one || flag_sequential))))
+ 	    {
+ 	      /* Stop paying attention to sock_fd.  */
+ 	      my_epoll_ctl (epoll_fd, EPOLL_CTL_DEL, EPOLLIN, sock_fd, 0);
+ 	      if (flag_one || term)
+ 		{
+ 		  close (sock_fd);
+ 		  sock_fd = -1;
+ 		}
+ 	    }
+ 	}
+     }
+ #if defined (HAVE_EPOLL) || defined (HAVE_PSELECT) || defined (HAVE_SELECT)
+   /* Restore the signal mask.  */
+   sigprocmask (SIG_SETMASK, &mask, NULL);
+ #endif
+ 
+   gcc_assert (sock_fd < 0);
+   if (epoll_fd >= 0)
+     close (epoll_fd);
+ 
+   if (term_pipe && term_pipe[0] >= 0)
+     {
+       close (term_pipe[0]);
+       close (term_pipe[1]);
+     }
+ }
+ 
+ #endif
+ 
+ static int maybe_parse_socket (std::string &option, module_resolver *r)
+ {
+   /* Local or ipv6 address.  */
+   auto last = option.find_last_of ('?');
+   if (last != option.npos)
+     {
+       r->set_ident (option.c_str () + last + 1);
+       option.erase (last);
+     }
+   int fd = -2;
+   char const *errmsg = nullptr;
+ 
+   /* Does it look like a socket?  */
+   if (option[0] == '=')
+     {
+       /* A local socket.  */
+ #if CODY_NETWORKING
+       fd = Cody::ListenLocal (&errmsg, option.c_str () + 1);
+ #endif
+     }
+   else
+     {
+       auto colon = option.find_last_of (':');
+       if (colon != option.npos)
+ 	{
+ 	  /* Try a hostname:port address.  */
+ 	  char const *cptr = option.c_str () + colon;
+ 	  char *endp;
+ 	  unsigned port = strtoul (cptr + 1, &endp, 10);
+ 
+ 	  if (port && endp != cptr + 1 && !*endp)
+ 	    {
+ 	      /* Ends in ':number', treat as ipv6 domain socket.  */
+ 	      option.erase (colon);
+ #if CODY_NETWORKING
+ 	      fd = Cody::ListenInet6 (&errmsg, option.c_str (), port);
+ #endif
+ 	    }
+ 	}
+     }
+ 
+   if (errmsg)
+     error ("failed to open socket: %s", errmsg);
+ 
+   return fd;
+ }
+ 
+ int
+ main (int argc, char *argv[])
+ {
+   const char *p = argv[0] + strlen (argv[0]);
+   while (p != argv[0] && !IS_DIR_SEPARATOR (p[-1]))
+     --p;
+   progname = p;
+ 
+ #ifdef SIGSEGV
+   signal (SIGSEGV, crash_signal);
+ #endif
+ #ifdef SIGILL
+   signal (SIGILL, crash_signal);
+ #endif
+ #ifdef SIGBUS
+   signal (SIGBUS, crash_signal);
+ #endif
+ #ifdef SIGABRT
+   signal (SIGABRT, crash_signal);
+ #endif
+ #ifdef SIGFPE
+   signal (SIGFPE, crash_signal);
+ #endif
+ #ifdef SIGPIPE
+   /* Ignore sigpipe, so read/write get an error.  */
+   signal (SIGPIPE, SIG_IGN);
+ #endif
+ #if NETWORKING
+ #ifdef SIGINT
+   signal (SIGINT, kill_signal);
+ #endif
+ #endif
+ 
+   int argno = process_args (argc, argv);
+ 
+   std::string name;
+   int sock_fd = -1; /* Socket fd, otherwise stdin/stdout.  */
+   module_resolver r (flag_map, flag_xlate);
+ 
+   if (argno != argc)
+     {
+       name = argv[argno];
+       sock_fd = maybe_parse_socket (name, &r);
+       if (!name.empty ())
+ 	argno++;
+     }
+ 
+   if (argno != argc)
+     for (; argno != argc; argno++)
+       {
+ 	std::string option = argv[argno];
+ 	char const *prefix = nullptr;
+ 	auto ident = option.find_last_of ('?');
+ 	if (ident != option.npos)
+ 	  {
+ 	    prefix = option.c_str () + ident + 1;
+ 	    option[ident] = 0;
+ 	  }
+ 	int fd = open (option.c_str (), O_RDONLY | O_CLOEXEC);
+ 	int err = 0;
+ 	if (fd < 0)
+ 	  err = errno;
+ 	else
+ 	  {
+ 	    err = r.read_tuple_file (fd, prefix, false);
+ 	    close (fd);
+ 	  }
+ 
+ 	if (err)
+ 	  error ("failed reading '%s': %s", option.c_str (), xstrerror (err));
+       }
+   else
+     r.set_default_map (true);
+ 
+   if (flag_root)
+     r.set_repo (flag_root);
+ 
+ #ifdef HAVE_AF_INET6
+   netmask_set_t::iterator end = netmask_set.end ();
+   for (netmask_set_t::iterator iter = netmask_set.begin ();
+        iter != end; ++iter)
+     {
+       netmask_vec_t::iterator e = accept_addrs.end ();
+       for (netmask_vec_t::iterator i = accept_addrs.begin (); i != e; ++i)
+ 	if (i->includes (iter->addr))
+ 	  goto present;
+       accept_addrs.push_back (*iter);
+     present:;
+     }
+ #endif
+ 
+ #if NETWORKING
+   if (sock_fd >= 0)
+     {
+       server (name[0] != '=', sock_fd, &r);
+       if (name[0] == '=')
+ 	unlink (name.c_str () + 1);
+     }
+   else
+ #endif
+     {
+       auto server = Cody::Server (&r, 0, 1);
+ 
+       int err = 0;
+       for (;;)
+ 	{
+ 	  server.PrepareToRead ();
+ 	  while ((err = server.Read ()))
+ 	    {
+ 	      if (err == EINTR || err == EAGAIN)
+ 		continue;
+ 	      goto done;
+ 	    }
+ 
+ 	  server.ProcessRequests ();
+ 
+ 	  server.PrepareToWrite ();
+ 	  while ((err = server.Write ()))
+ 	    {
+ 	      if (err == EINTR || err == EAGAIN)
+ 		continue;
+ 	      goto done;
+ 	    }
+ 	}
+     done:;
+       if (err > 0)
+ 	error ("communication error:%s", xstrerror (err));
+     }
+ 
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/config/ChangeLog gcc-11.1.0/config/ChangeLog
*** gcc-10.3.0/config/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-11.1.0/config/ChangeLog	Tue Apr 27 10:00:12 2021
***************
*** 1,24 ****
! 2021-04-08  Release Manager
  
! 	* GCC 10.3.0 released.
  
! 2020-07-23  Release Manager
  
! 	* GCC 10.2.0 released.
  
! 2020-06-22  H.J. Lu  <hjl.tools@gmail.com>
  
! 	Backported from master:
! 	2020-05-12  H.J. Lu  <hjl.tools@gmail.com>
  
  	PR bootstrap/94998
  	* cet.m4 (GCC_CET_HOST_FLAGS): Enable CET in cross compiler if
  	possible.
  
- 2020-05-07  Release Manager
- 
- 	* GCC 10.1.0 released.
- 
  2020-04-28  H.J. Lu  <hongjiu.lu@intel.com>
  
  	PR bootstrap/94739
--- 1,80 ----
! 2021-04-27  Release Manager
  
! 	* GCC 11.1.0 released.
  
! 2021-04-13  Martin Storsjö  <martin@martin.st>
  
! 	* mh-mingw: Set __USE_MINGW_ACCESS in missed C++ flags
! 	variables
  
! 2021-01-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	PR c++/98316
! 	* ax_lib_socket_nsl.m4: Import from autoconf-archive.
! 
! 2021-01-03  Mike Frysinger  <vapier@gentoo.org>
! 
! 	* pkg.m4: New file from pkg-config-0.29.2.
! 
! 2020-11-25  Matthew Malcomson  <matthew.malcomson@arm.com>
! 
! 	* bootstrap-hwasan.mk: Disable random frame tags for stack-tagging
! 	during bootstrap.
! 
! 2020-11-25  Matthew Malcomson  <matthew.malcomson@arm.com>
! 
! 	* bootstrap-hwasan.mk: New file.
! 
! 2020-09-09  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
! 
! 	Sync from binutils-gdb.
! 	2020-07-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
! 
! 	* largefile.m4 (ACX_LARGEFILE) <sparc-*-solaris*|i?86-*-solaris*>:
! 	Check for <sys/procfs.h> incompatilibity with large-file support
! 	on Solaris.
! 	Only disable large-file support and perhaps plugins if needed.
! 	Set, substitute LARGEFILE_CPPFLAGS if so.
! 
! 2020-08-20  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	PR bootstrap/96612
! 	* ax_cxx_compile_stdcxx.m4: Add fourth argument to check also
! 	the CXX_FOR_BUILD compiler.
! 
! 2020-07-30  H.J. Lu  <hjl.tools@gmail.com>
! 
! 	PR bootstrap/96202
! 	* cet.m4 (GCC_CET_HOST_FLAGS): Don't enable CET without CET
! 	support in stage1 nor for build support.
! 
! 2020-05-29  H.J. Lu  <hjl.tools@gmail.com>
! 
! 	PR bootstrap/95413
! 	* cet.m4: Replace save_CFLAGS and save_LDFLAGS with
! 	cet_save_CFLAGS and cet_save_LDFLAGS.
! 
! 2020-05-18  Jason Merrill  <jason@redhat.com>
! 
! 	* ax_cxx_compile_stdcxx.m4: Import from autoconf archive with
! 	an adjustment to try the default mode.
! 
! 2020-05-15  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	PR bootstrap/95147
! 	* cet.m4 (GCC_CET_FLAGS): Also check if -fcf-protection works
! 	when defaulting to auto.
! 
! 2020-05-14  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	* cet.m4 (GCC_CET_FLAGS): Change default to auto.
! 
! 2020-05-12  H.J. Lu  <hongjiu.lu@intel.com>
  
  	PR bootstrap/94998
  	* cet.m4 (GCC_CET_HOST_FLAGS): Enable CET in cross compiler if
  	possible.
  
  2020-04-28  H.J. Lu  <hongjiu.lu@intel.com>
  
  	PR bootstrap/94739
diff -Nrcpad gcc-10.3.0/config/ax_cxx_compile_stdcxx.m4 gcc-11.1.0/config/ax_cxx_compile_stdcxx.m4
*** gcc-10.3.0/config/ax_cxx_compile_stdcxx.m4	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/config/ax_cxx_compile_stdcxx.m4	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,979 ----
+ # ===========================================================================
+ #  https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
+ # ===========================================================================
+ #
+ # SYNOPSIS
+ #
+ #   AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
+ #
+ # DESCRIPTION
+ #
+ #   Check for baseline language coverage in the compiler for the specified
+ #   version of the C++ standard.  If necessary, add switches to CXX and
+ #   CXXCPP to enable support.  VERSION may be '11' (for the C++11 standard)
+ #   or '14' (for the C++14 standard).
+ #
+ #   The second argument, if specified, indicates whether you insist on an
+ #   extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
+ #   -std=c++11).  If neither is specified, you get whatever works, with
+ #   preference for no added switch, and then for an extended mode.
+ #
+ #   The third argument, if specified 'mandatory' or if left unspecified,
+ #   indicates that baseline support for the specified C++ standard is
+ #   required and that the macro should error out if no mode with that
+ #   support is found.  If specified 'optional', then configuration proceeds
+ #   regardless, after defining HAVE_CXX${VERSION} if and only if a
+ #   supporting mode is found.
+ #
+ #   If the fourth argument is an optional CXX/CXXFLAG/CPPFLAG suffix, e.g.
+ #   "_FOR_BUILD" or "_FOR_TARGET".
+ #
+ #
+ # LICENSE
+ #
+ #   Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
+ #   Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
+ #   Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
+ #   Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
+ #   Copyright (c) 2015 Paul Norman <penorman@mac.com>
+ #   Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
+ #   Copyright (c) 2016, 2018 Krzesimir Nowak <qdlacz@gmail.com>
+ #   Copyright (c) 2019 Enji Cooper <yaneurabeya@gmail.com>
+ #   Copyright (c) 2020 Jason Merrill <jason@redhat.com>
+ #
+ #   Copying and distribution of this file, with or without modification, are
+ #   permitted in any medium without royalty provided the copyright notice
+ #   and this notice are preserved.  This file is offered as-is, without any
+ #   warranty.
+ 
+ #serial 12
+ 
+ dnl  This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
+ dnl  (serial version number 13).
+ 
+ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
+   m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"],
+         [$1], [14], [ax_cxx_compile_alternatives="14 1y"],
+         [$1], [17], [ax_cxx_compile_alternatives="17 1z"],
+         [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
+   m4_if([$2], [], [],
+         [$2], [ext], [],
+         [$2], [noext], [],
+         [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl
+   m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true],
+         [$3], [mandatory], [ax_cxx_compile_cxx$1_required=true],
+         [$3], [optional], [ax_cxx_compile_cxx$1_required=false],
+         [m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
+   AC_LANG_PUSH([C++])dnl
+   ac_success=no
+   m4_ifnblank([$4], [dnl
+     ax_cv_cxx_compile_cxx$1_orig_cxx="$CXX"
+     ax_cv_cxx_compile_cxx$1_orig_cxxflags="$CXXFLAGS"
+     ax_cv_cxx_compile_cxx$1_orig_cppflags="$CPPFLAGS"
+     CXX="$CXX$4"
+     CXXFLAGS="$CXXFLAGS$4"
+     CPPFLAGS="$CPPFLAGS$4"])
+   m4_if([$2], [], [dnl
+     AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
+ 		   ax_cv_cxx_compile_cxx$1$4,
+       [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+         [ax_cv_cxx_compile_cxx$1$4=yes],
+         [ax_cv_cxx_compile_cxx$1$4=no])])
+     if test x$ax_cv_cxx_compile_cxx$1$4 = xyes; then
+       ac_success=yes
+     fi])
+ 
+   m4_if([$2], [noext], [], [dnl
+   if test x$ac_success = xno; then
+     for alternative in ${ax_cxx_compile_alternatives}; do
+       switch="-std=gnu++${alternative}"
+       cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1$4_$switch])
+       AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
+                      $cachevar,
+         [ac_save_CXX="$CXX"
+          CXX="$CXX $switch"
+          AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+           [eval $cachevar=yes],
+           [eval $cachevar=no])
+          CXX="$ac_save_CXX"])
+       if eval test x\$$cachevar = xyes; then
+         CXX="$CXX $switch"
+         if test -n "$CXXCPP" ; then
+           CXXCPP="$CXXCPP $switch"
+         fi
+         ac_success=yes
+         break
+       fi
+     done
+   fi])
+ 
+   m4_if([$2], [ext], [], [dnl
+   if test x$ac_success = xno; then
+     dnl HP's aCC needs +std=c++11 according to:
+     dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
+     dnl Cray's crayCC needs "-h std=c++11"
+     for alternative in ${ax_cxx_compile_alternatives}; do
+       for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
+         cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1$4_$switch])
+         AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
+                        $cachevar,
+           [ac_save_CXX="$CXX"
+            CXX="$CXX $switch"
+            AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+             [eval $cachevar=yes],
+             [eval $cachevar=no])
+            CXX="$ac_save_CXX"])
+         if eval test x\$$cachevar = xyes; then
+           CXX="$CXX $switch"
+           if test -n "$CXXCPP" ; then
+             CXXCPP="$CXXCPP $switch"
+           fi
+           ac_success=yes
+           break
+         fi
+       done
+       if test x$ac_success = xyes; then
+         break
+       fi
+     done
+   fi])
+   m4_ifnblank([$4], [dnl
+     CXX$4="$CXX"
+     CXXFLAGS$4="$CXXFLAGS"
+     CPPFLAGS$4="$CPPFLAGS"
+     CXX="$ax_cv_cxx_compile_cxx$1_orig_cxx"
+     CXXFLAGS="$ax_cv_cxx_compile_cxx$1_orig_cxxflags"
+     CPPFLAGS="$ax_cv_cxx_compile_cxx$1_orig_cppflags"])
+   AC_LANG_POP([C++])
+   if test x$ax_cxx_compile_cxx$1_required = xtrue; then
+     if test x$ac_success = xno; then
+       AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.])
+     fi
+   fi
+   if test x$ac_success = xno; then
+     HAVE_CXX$1$4=0
+     AC_MSG_NOTICE([No compiler with C++$1 support was found])
+   else
+     HAVE_CXX$1$4=1
+     AC_DEFINE(HAVE_CXX$1$4,1,
+               [define if the compiler supports basic C++$1 syntax])
+   fi
+   AC_SUBST(HAVE_CXX$1$4)
+ ])
+ 
+ 
+ dnl  Test body for checking C++11 support
+ 
+ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
+   _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+ )
+ 
+ 
+ dnl  Test body for checking C++14 support
+ 
+ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
+   _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+   _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
+ )
+ 
+ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17],
+   _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+   _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
+   _AX_CXX_COMPILE_STDCXX_testbody_new_in_17
+ )
+ 
+ dnl  Tests for new features in C++11
+ 
+ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
+ 
+ // If the compiler admits that it is not ready for C++11, why torture it?
+ // Hopefully, this will speed up the test.
+ 
+ #ifndef __cplusplus
+ 
+ #error "This is not a C++ compiler"
+ 
+ #elif __cplusplus < 201103L
+ 
+ #error "This is not a C++11 compiler"
+ 
+ #else
+ 
+ namespace cxx11
+ {
+ 
+   namespace test_static_assert
+   {
+ 
+     template <typename T>
+     struct check
+     {
+       static_assert(sizeof(int) <= sizeof(T), "not big enough");
+     };
+ 
+   }
+ 
+   namespace test_final_override
+   {
+ 
+     struct Base
+     {
+       virtual ~Base() {}
+       virtual void f() {}
+     };
+ 
+     struct Derived : public Base
+     {
+       virtual ~Derived() override {}
+       virtual void f() override {}
+     };
+ 
+   }
+ 
+   namespace test_double_right_angle_brackets
+   {
+ 
+     template < typename T >
+     struct check {};
+ 
+     typedef check<void> single_type;
+     typedef check<check<void>> double_type;
+     typedef check<check<check<void>>> triple_type;
+     typedef check<check<check<check<void>>>> quadruple_type;
+ 
+   }
+ 
+   namespace test_decltype
+   {
+ 
+     int
+     f()
+     {
+       int a = 1;
+       decltype(a) b = 2;
+       return a + b;
+     }
+ 
+   }
+ 
+   namespace test_type_deduction
+   {
+ 
+     template < typename T1, typename T2 >
+     struct is_same
+     {
+       static const bool value = false;
+     };
+ 
+     template < typename T >
+     struct is_same<T, T>
+     {
+       static const bool value = true;
+     };
+ 
+     template < typename T1, typename T2 >
+     auto
+     add(T1 a1, T2 a2) -> decltype(a1 + a2)
+     {
+       return a1 + a2;
+     }
+ 
+     int
+     test(const int c, volatile int v)
+     {
+       static_assert(is_same<int, decltype(0)>::value == true, "");
+       static_assert(is_same<int, decltype(c)>::value == false, "");
+       static_assert(is_same<int, decltype(v)>::value == false, "");
+       auto ac = c;
+       auto av = v;
+       auto sumi = ac + av + 'x';
+       auto sumf = ac + av + 1.0;
+       static_assert(is_same<int, decltype(ac)>::value == true, "");
+       static_assert(is_same<int, decltype(av)>::value == true, "");
+       static_assert(is_same<int, decltype(sumi)>::value == true, "");
+       static_assert(is_same<int, decltype(sumf)>::value == false, "");
+       static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+       return (sumf > 0.0) ? sumi : add(c, v);
+     }
+ 
+   }
+ 
+   namespace test_noexcept
+   {
+ 
+     int f() { return 0; }
+     int g() noexcept { return 0; }
+ 
+     static_assert(noexcept(f()) == false, "");
+     static_assert(noexcept(g()) == true, "");
+ 
+   }
+ 
+   namespace test_constexpr
+   {
+ 
+     template < typename CharT >
+     unsigned long constexpr
+     strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+     {
+       return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+     }
+ 
+     template < typename CharT >
+     unsigned long constexpr
+     strlen_c(const CharT *const s) noexcept
+     {
+       return strlen_c_r(s, 0UL);
+     }
+ 
+     static_assert(strlen_c("") == 0UL, "");
+     static_assert(strlen_c("1") == 1UL, "");
+     static_assert(strlen_c("example") == 7UL, "");
+     static_assert(strlen_c("another\0example") == 7UL, "");
+ 
+   }
+ 
+   namespace test_rvalue_references
+   {
+ 
+     template < int N >
+     struct answer
+     {
+       static constexpr int value = N;
+     };
+ 
+     answer<1> f(int&)       { return answer<1>(); }
+     answer<2> f(const int&) { return answer<2>(); }
+     answer<3> f(int&&)      { return answer<3>(); }
+ 
+     void
+     test()
+     {
+       int i = 0;
+       const int c = 0;
+       static_assert(decltype(f(i))::value == 1, "");
+       static_assert(decltype(f(c))::value == 2, "");
+       static_assert(decltype(f(0))::value == 3, "");
+     }
+ 
+   }
+ 
+   namespace test_uniform_initialization
+   {
+ 
+     struct test
+     {
+       static const int zero {};
+       static const int one {1};
+     };
+ 
+     static_assert(test::zero == 0, "");
+     static_assert(test::one == 1, "");
+ 
+   }
+ 
+   namespace test_lambdas
+   {
+ 
+     void
+     test1()
+     {
+       auto lambda1 = [](){};
+       auto lambda2 = lambda1;
+       lambda1();
+       lambda2();
+     }
+ 
+     int
+     test2()
+     {
+       auto a = [](int i, int j){ return i + j; }(1, 2);
+       auto b = []() -> int { return '0'; }();
+       auto c = [=](){ return a + b; }();
+       auto d = [&](){ return c; }();
+       auto e = [a, &b](int x) mutable {
+         const auto identity = [](int y){ return y; };
+         for (auto i = 0; i < a; ++i)
+           a += b--;
+         return x + identity(a + b);
+       }(0);
+       return a + b + c + d + e;
+     }
+ 
+     int
+     test3()
+     {
+       const auto nullary = [](){ return 0; };
+       const auto unary = [](int x){ return x; };
+       using nullary_t = decltype(nullary);
+       using unary_t = decltype(unary);
+       const auto higher1st = [](nullary_t f){ return f(); };
+       const auto higher2nd = [unary](nullary_t f1){
+         return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+       };
+       return higher1st(nullary) + higher2nd(nullary)(unary);
+     }
+ 
+   }
+ 
+   namespace test_variadic_templates
+   {
+ 
+     template <int...>
+     struct sum;
+ 
+     template <int N0, int... N1toN>
+     struct sum<N0, N1toN...>
+     {
+       static constexpr auto value = N0 + sum<N1toN...>::value;
+     };
+ 
+     template <>
+     struct sum<>
+     {
+       static constexpr auto value = 0;
+     };
+ 
+     static_assert(sum<>::value == 0, "");
+     static_assert(sum<1>::value == 1, "");
+     static_assert(sum<23>::value == 23, "");
+     static_assert(sum<1, 2>::value == 3, "");
+     static_assert(sum<5, 5, 11>::value == 21, "");
+     static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
+ 
+   }
+ 
+   // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+   // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+   // because of this.
+   namespace test_template_alias_sfinae
+   {
+ 
+     struct foo {};
+ 
+     template<typename T>
+     using member = typename T::member_type;
+ 
+     template<typename T>
+     void func(...) {}
+ 
+     template<typename T>
+     void func(member<T>*) {}
+ 
+     void test();
+ 
+     void test() { func<foo>(0); }
+ 
+   }
+ 
+ }  // namespace cxx11
+ 
+ #endif  // __cplusplus >= 201103L
+ 
+ ]])
+ 
+ 
+ dnl  Tests for new features in C++14
+ 
+ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[
+ 
+ // If the compiler admits that it is not ready for C++14, why torture it?
+ // Hopefully, this will speed up the test.
+ 
+ #ifndef __cplusplus
+ 
+ #error "This is not a C++ compiler"
+ 
+ #elif __cplusplus < 201402L
+ 
+ #error "This is not a C++14 compiler"
+ 
+ #else
+ 
+ namespace cxx14
+ {
+ 
+   namespace test_polymorphic_lambdas
+   {
+ 
+     int
+     test()
+     {
+       const auto lambda = [](auto&&... args){
+         const auto istiny = [](auto x){
+           return (sizeof(x) == 1UL) ? 1 : 0;
+         };
+         const int aretiny[] = { istiny(args)... };
+         return aretiny[0];
+       };
+       return lambda(1, 1L, 1.0f, '1');
+     }
+ 
+   }
+ 
+   namespace test_binary_literals
+   {
+ 
+     constexpr auto ivii = 0b0000000000101010;
+     static_assert(ivii == 42, "wrong value");
+ 
+   }
+ 
+   namespace test_generalized_constexpr
+   {
+ 
+     template < typename CharT >
+     constexpr unsigned long
+     strlen_c(const CharT *const s) noexcept
+     {
+       auto length = 0UL;
+       for (auto p = s; *p; ++p)
+         ++length;
+       return length;
+     }
+ 
+     static_assert(strlen_c("") == 0UL, "");
+     static_assert(strlen_c("x") == 1UL, "");
+     static_assert(strlen_c("test") == 4UL, "");
+     static_assert(strlen_c("another\0test") == 7UL, "");
+ 
+   }
+ 
+   namespace test_lambda_init_capture
+   {
+ 
+     int
+     test()
+     {
+       auto x = 0;
+       const auto lambda1 = [a = x](int b){ return a + b; };
+       const auto lambda2 = [a = lambda1(x)](){ return a; };
+       return lambda2();
+     }
+ 
+   }
+ 
+   namespace test_digit_separators
+   {
+ 
+     constexpr auto ten_million = 100'000'000;
+     static_assert(ten_million == 100000000, "");
+ 
+   }
+ 
+   namespace test_return_type_deduction
+   {
+ 
+     auto f(int& x) { return x; }
+     decltype(auto) g(int& x) { return x; }
+ 
+     template < typename T1, typename T2 >
+     struct is_same
+     {
+       static constexpr auto value = false;
+     };
+ 
+     template < typename T >
+     struct is_same<T, T>
+     {
+       static constexpr auto value = true;
+     };
+ 
+     int
+     test()
+     {
+       auto x = 0;
+       static_assert(is_same<int, decltype(f(x))>::value, "");
+       static_assert(is_same<int&, decltype(g(x))>::value, "");
+       return x;
+     }
+ 
+   }
+ 
+ }  // namespace cxx14
+ 
+ #endif  // __cplusplus >= 201402L
+ 
+ ]])
+ 
+ 
+ dnl  Tests for new features in C++17
+ 
+ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_17], [[
+ 
+ // If the compiler admits that it is not ready for C++17, why torture it?
+ // Hopefully, this will speed up the test.
+ 
+ #ifndef __cplusplus
+ 
+ #error "This is not a C++ compiler"
+ 
+ #elif __cplusplus < 201703L
+ 
+ #error "This is not a C++17 compiler"
+ 
+ #else
+ 
+ #include <initializer_list>
+ #include <utility>
+ #include <type_traits>
+ 
+ namespace cxx17
+ {
+ 
+   namespace test_constexpr_lambdas
+   {
+ 
+     constexpr int foo = [](){return 42;}();
+ 
+   }
+ 
+   namespace test::nested_namespace::definitions
+   {
+ 
+   }
+ 
+   namespace test_fold_expression
+   {
+ 
+     template<typename... Args>
+     int multiply(Args... args)
+     {
+       return (args * ... * 1);
+     }
+ 
+     template<typename... Args>
+     bool all(Args... args)
+     {
+       return (args && ...);
+     }
+ 
+   }
+ 
+   namespace test_extended_static_assert
+   {
+ 
+     static_assert (true);
+ 
+   }
+ 
+   namespace test_auto_brace_init_list
+   {
+ 
+     auto foo = {5};
+     auto bar {5};
+ 
+     static_assert(std::is_same<std::initializer_list<int>, decltype(foo)>::value);
+     static_assert(std::is_same<int, decltype(bar)>::value);
+   }
+ 
+   namespace test_typename_in_template_template_parameter
+   {
+ 
+     template<template<typename> typename X> struct D;
+ 
+   }
+ 
+   namespace test_fallthrough_nodiscard_maybe_unused_attributes
+   {
+ 
+     int f1()
+     {
+       return 42;
+     }
+ 
+     [[nodiscard]] int f2()
+     {
+       [[maybe_unused]] auto unused = f1();
+ 
+       switch (f1())
+       {
+       case 17:
+         f1();
+         [[fallthrough]];
+       case 42:
+         f1();
+       }
+       return f1();
+     }
+ 
+   }
+ 
+   namespace test_extended_aggregate_initialization
+   {
+ 
+     struct base1
+     {
+       int b1, b2 = 42;
+     };
+ 
+     struct base2
+     {
+       base2() {
+         b3 = 42;
+       }
+       int b3;
+     };
+ 
+     struct derived : base1, base2
+     {
+         int d;
+     };
+ 
+     derived d1 {{1, 2}, {}, 4};  // full initialization
+     derived d2 {{}, {}, 4};      // value-initialized bases
+ 
+   }
+ 
+   namespace test_general_range_based_for_loop
+   {
+ 
+     struct iter
+     {
+       int i;
+ 
+       int& operator* ()
+       {
+         return i;
+       }
+ 
+       const int& operator* () const
+       {
+         return i;
+       }
+ 
+       iter& operator++()
+       {
+         ++i;
+         return *this;
+       }
+     };
+ 
+     struct sentinel
+     {
+       int i;
+     };
+ 
+     bool operator== (const iter& i, const sentinel& s)
+     {
+       return i.i == s.i;
+     }
+ 
+     bool operator!= (const iter& i, const sentinel& s)
+     {
+       return !(i == s);
+     }
+ 
+     struct range
+     {
+       iter begin() const
+       {
+         return {0};
+       }
+ 
+       sentinel end() const
+       {
+         return {5};
+       }
+     };
+ 
+     void f()
+     {
+       range r {};
+ 
+       for (auto i : r)
+       {
+         [[maybe_unused]] auto v = i;
+       }
+     }
+ 
+   }
+ 
+   namespace test_lambda_capture_asterisk_this_by_value
+   {
+ 
+     struct t
+     {
+       int i;
+       int foo()
+       {
+         return [*this]()
+         {
+           return i;
+         }();
+       }
+     };
+ 
+   }
+ 
+   namespace test_enum_class_construction
+   {
+ 
+     enum class byte : unsigned char
+     {};
+ 
+     byte foo {42};
+ 
+   }
+ 
+   namespace test_constexpr_if
+   {
+ 
+     template <bool cond>
+     int f ()
+     {
+       if constexpr(cond)
+       {
+         return 13;
+       }
+       else
+       {
+         return 42;
+       }
+     }
+ 
+   }
+ 
+   namespace test_selection_statement_with_initializer
+   {
+ 
+     int f()
+     {
+       return 13;
+     }
+ 
+     int f2()
+     {
+       if (auto i = f(); i > 0)
+       {
+         return 3;
+       }
+ 
+       switch (auto i = f(); i + 4)
+       {
+       case 17:
+         return 2;
+ 
+       default:
+         return 1;
+       }
+     }
+ 
+   }
+ 
+   namespace test_template_argument_deduction_for_class_templates
+   {
+ 
+     template <typename T1, typename T2>
+     struct pair
+     {
+       pair (T1 p1, T2 p2)
+         : m1 {p1},
+           m2 {p2}
+       {}
+ 
+       T1 m1;
+       T2 m2;
+     };
+ 
+     void f()
+     {
+       [[maybe_unused]] auto p = pair{13, 42u};
+     }
+ 
+   }
+ 
+   namespace test_non_type_auto_template_parameters
+   {
+ 
+     template <auto n>
+     struct B
+     {};
+ 
+     B<5> b1;
+     B<'a'> b2;
+ 
+   }
+ 
+   namespace test_structured_bindings
+   {
+ 
+     int arr[2] = { 1, 2 };
+     std::pair<int, int> pr = { 1, 2 };
+ 
+     auto f1() -> int(&)[2]
+     {
+       return arr;
+     }
+ 
+     auto f2() -> std::pair<int, int>&
+     {
+       return pr;
+     }
+ 
+     struct S
+     {
+       int x1 : 2;
+       volatile double y1;
+     };
+ 
+     S f3()
+     {
+       return {};
+     }
+ 
+     auto [ x1, y1 ] = f1();
+     auto& [ xr1, yr1 ] = f1();
+     auto [ x2, y2 ] = f2();
+     auto& [ xr2, yr2 ] = f2();
+     const auto [ x3, y3 ] = f3();
+ 
+   }
+ 
+   namespace test_exception_spec_type_system
+   {
+ 
+     struct Good {};
+     struct Bad {};
+ 
+     void g1() noexcept;
+     void g2();
+ 
+     template<typename T>
+     Bad
+     f(T*, T*);
+ 
+     template<typename T1, typename T2>
+     Good
+     f(T1*, T2*);
+ 
+     static_assert (std::is_same_v<Good, decltype(f(g1, g2))>);
+ 
+   }
+ 
+   namespace test_inline_variables
+   {
+ 
+     template<class T> void f(T)
+     {}
+ 
+     template<class T> inline T g(T)
+     {
+       return T{};
+     }
+ 
+     template<> inline void f<>(int)
+     {}
+ 
+     template<> int g<>(int)
+     {
+       return 5;
+     }
+ 
+   }
+ 
+ }  // namespace cxx17
+ 
+ #endif  // __cplusplus < 201703L
+ 
+ ]])
diff -Nrcpad gcc-10.3.0/config/ax_lib_socket_nsl.m4 gcc-11.1.0/config/ax_lib_socket_nsl.m4
*** gcc-10.3.0/config/ax_lib_socket_nsl.m4	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/config/ax_lib_socket_nsl.m4	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,40 ----
+ # ===========================================================================
+ #    https://www.gnu.org/software/autoconf-archive/ax_lib_socket_nsl.html
+ # ===========================================================================
+ #
+ # SYNOPSIS
+ #
+ #   AX_LIB_SOCKET_NSL
+ #
+ # DESCRIPTION
+ #
+ #   This macro figures out what libraries are required on this platform to
+ #   link sockets programs.
+ #
+ #   The common cases are not to need any extra libraries, or to need
+ #   -lsocket and -lnsl. We need to avoid linking with libnsl unless we need
+ #   it, though, since on some OSes where it isn't necessary it will totally
+ #   break networking. Unisys also includes gethostbyname() in libsocket but
+ #   needs libnsl for socket().
+ #
+ # LICENSE
+ #
+ #   Copyright (c) 2008 Russ Allbery <rra@stanford.edu>
+ #   Copyright (c) 2008 Stepan Kasal <kasal@ucw.cz>
+ #   Copyright (c) 2008 Warren Young <warren@etr-usa.com>
+ #
+ #   Copying and distribution of this file, with or without modification, are
+ #   permitted in any medium without royalty provided the copyright notice
+ #   and this notice are preserved. This file is offered as-is, without any
+ #   warranty.
+ 
+ #serial 7
+ 
+ AU_ALIAS([LIB_SOCKET_NSL], [AX_LIB_SOCKET_NSL])
+ AC_DEFUN([AX_LIB_SOCKET_NSL],
+ [
+ 	AC_SEARCH_LIBS([gethostbyname], [nsl])
+ 	AC_SEARCH_LIBS([socket], [socket], [], [
+ 		AC_CHECK_LIB([socket], [socket], [LIBS="-lsocket -lnsl $LIBS"],
+ 		[], [-lnsl])])
+ ])
diff -Nrcpad gcc-10.3.0/config/bootstrap-hwasan.mk gcc-11.1.0/config/bootstrap-hwasan.mk
*** gcc-10.3.0/config/bootstrap-hwasan.mk	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/config/bootstrap-hwasan.mk	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,12 ----
+ # This option enables -fsanitize=hwaddress for stage2 and stage3.
+ # We need to disable random frame tags for bootstrap since the autoconf check
+ # for which direction the stack is growing has UB that a random frame tag
+ # breaks.  Running with a random frame tag gives approx. 50% chance of
+ # bootstrap comparison diff in libiberty/alloca.c.
+ 
+ STAGE2_CFLAGS += -fsanitize=hwaddress --param hwasan-random-frame-tag=0
+ STAGE3_CFLAGS += -fsanitize=hwaddress --param hwasan-random-frame-tag=0
+ POSTSTAGE1_LDFLAGS += -fsanitize=hwaddress -static-libhwasan \
+ 		      -B$$r/prev-$(TARGET_SUBDIR)/libsanitizer/ \
+ 		      -B$$r/prev-$(TARGET_SUBDIR)/libsanitizer/hwasan/ \
+ 		      -B$$r/prev-$(TARGET_SUBDIR)/libsanitizer/hwasan/.libs
diff -Nrcpad gcc-10.3.0/config/cet.m4 gcc-11.1.0/config/cet.m4
*** gcc-10.3.0/config/cet.m4	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/config/cet.m4	Tue Apr 27 10:00:12 2021
*************** dnl GCC_CET_FLAGS
*** 3,18 ****
  dnl    (SHELL-CODE_HANDLER)
  dnl
  AC_DEFUN([GCC_CET_FLAGS],[dnl
! GCC_ENABLE(cet, no, ,[enable Intel CET in target libraries],
  	   permit yes|no|auto)
  AC_MSG_CHECKING([for CET support])
  
  case "$host" in
    i[[34567]]86-*-linux* | x86_64-*-linux*)
      case "$enable_cet" in
        auto)
  	# Check if target supports multi-byte NOPs
! 	# and if assembler supports CET insn.
  	AC_COMPILE_IFELSE(
  	 [AC_LANG_PROGRAM(
  	  [],
--- 3,21 ----
  dnl    (SHELL-CODE_HANDLER)
  dnl
  AC_DEFUN([GCC_CET_FLAGS],[dnl
! GCC_ENABLE(cet, auto, ,[enable Intel CET in target libraries],
  	   permit yes|no|auto)
  AC_MSG_CHECKING([for CET support])
  
+ # NB: Avoid nested save_CFLAGS and save_LDFLAGS.
  case "$host" in
    i[[34567]]86-*-linux* | x86_64-*-linux*)
      case "$enable_cet" in
        auto)
  	# Check if target supports multi-byte NOPs
! 	# and if compiler and assembler support CET insn.
! 	cet_save_CFLAGS="$CFLAGS"
! 	CFLAGS="$CFLAGS -fcf-protection"
  	AC_COMPILE_IFELSE(
  	 [AC_LANG_PROGRAM(
  	  [],
*************** asm ("setssbsy");
*** 25,30 ****
--- 28,34 ----
  	  ])],
  	 [enable_cet=yes],
  	 [enable_cet=no])
+ 	CFLAGS="$cet_save_CFLAGS"
  	;;
        yes)
  	# Check if assembler supports CET.
*************** AC_MSG_CHECKING([for CET support])
*** 61,72 ****
  case "$host" in
    i[[34567]]86-*-linux* | x86_64-*-linux*)
      may_have_cet=yes
!     save_CFLAGS="$CFLAGS"
      CFLAGS="$CFLAGS -fcf-protection"
      case "$enable_cet" in
        auto)
  	# Check if target supports multi-byte NOPs
! 	# and if assembler supports CET insn.
  	AC_COMPILE_IFELSE(
  	 [AC_LANG_PROGRAM(
  	  [],
--- 65,76 ----
  case "$host" in
    i[[34567]]86-*-linux* | x86_64-*-linux*)
      may_have_cet=yes
!     cet_save_CFLAGS="$CFLAGS"
      CFLAGS="$CFLAGS -fcf-protection"
      case "$enable_cet" in
        auto)
  	# Check if target supports multi-byte NOPs
! 	# and if compiler and assembler support CET.
  	AC_COMPILE_IFELSE(
  	 [AC_LANG_PROGRAM(
  	  [],
*************** asm ("setssbsy");
*** 81,96 ****
  	 [enable_cet=no])
  	;;
        yes)
! 	# Check if assembler supports CET.
  	AC_COMPILE_IFELSE(
  	 [AC_LANG_PROGRAM(
  	  [],
  	  [asm ("setssbsy");])],
! 	 [],
! 	 [AC_MSG_ERROR([assembler with CET support is required for --enable-cet])])
  	;;
      esac
!     CFLAGS="$save_CFLAGS"
      ;;
    *)
      may_have_cet=no
--- 85,113 ----
  	 [enable_cet=no])
  	;;
        yes)
! 	# Check if compiler and assembler support CET.
  	AC_COMPILE_IFELSE(
  	 [AC_LANG_PROGRAM(
  	  [],
  	  [asm ("setssbsy");])],
! 	 [support_cet=yes],
! 	 [support_cet=no])
! 	if test $support_cet = "no"; then
! 	  if test x$enable_bootstrap != xno \
! 	     && test -z "${with_build_subdir}" \
! 	     && (test ! -f ../stage_current \
! 	         || test `cat ../stage_current` != "stage1"); then
! 	    # Require CET support only for the final GCC build.
! 	    AC_MSG_ERROR([compiler and assembler with CET support are required for --enable-cet])
! 	  else
! 	    # Don't enable CET without CET support for non-bootstrap
! 	    # build, in stage1 nor for build support.
! 	    enable_cet=no
! 	  fi
! 	fi
  	;;
      esac
!     CFLAGS="$cet_save_CFLAGS"
      ;;
    *)
      may_have_cet=no
*************** asm ("setssbsy");
*** 98,106 ****
      ;;
  esac
  
! save_CFLAGS="$CFLAGS"
  CFLAGS="$CFLAGS -fcf-protection=none"
! save_LDFLAGS="$LDFLAGS"
  LDFLAGS="$LDFLAGS -Wl,-z,ibt,-z,shstk"
  if test x$may_have_cet = xyes; then
    # Check whether -fcf-protection=none -Wl,-z,ibt,-z,shstk work.
--- 115,123 ----
      ;;
  esac
  
! cet_save_CFLAGS="$CFLAGS"
  CFLAGS="$CFLAGS -fcf-protection=none"
! cet_save_LDFLAGS="$LDFLAGS"
  LDFLAGS="$LDFLAGS -Wl,-z,ibt,-z,shstk"
  if test x$may_have_cet = xyes; then
    # Check whether -fcf-protection=none -Wl,-z,ibt,-z,shstk work.
*************** if test x$enable_cet = xyes; then
*** 156,161 ****
  else
    AC_MSG_RESULT([no])
  fi
! CFLAGS="$save_CFLAGS"
! LDFLAGS="$save_LDFLAGS"
  ])
--- 173,178 ----
  else
    AC_MSG_RESULT([no])
  fi
! CFLAGS="$cet_save_CFLAGS"
! LDFLAGS="$cet_save_LDFLAGS"
  ])
diff -Nrcpad gcc-10.3.0/config/largefile.m4 gcc-11.1.0/config/largefile.m4
*** gcc-10.3.0/config/largefile.m4	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/config/largefile.m4	Tue Apr 27 10:00:12 2021
***************
*** 1,5 ****
  # This macro wraps AC_SYS_LARGEFILE with one exception for Solaris.
! # PR 9992/binutils: We have to replicate everywhere the behaviour of
  # bfd's configure script so that all the directories agree on the size
  # of structures used to describe files.
  
--- 1,5 ----
  # This macro wraps AC_SYS_LARGEFILE with one exception for Solaris.
! # PR binutils/9992: We have to replicate everywhere the behaviour of
  # bfd's configure script so that all the directories agree on the size
  # of structures used to describe files.
  
*************** AC_REQUIRE([AC_CANONICAL_TARGET])
*** 16,32 ****
  AC_PLUGINS
  
  case "${host}" in
! changequote(,)dnl
!   sparc-*-solaris*|i[3-7]86-*-solaris*)
! changequote([,])dnl
!     # On native 32bit sparc and ia32 solaris, large-file and procfs support
!     # are mutually exclusive; and without procfs support, the bfd/ elf module
!     # cannot provide certain routines such as elfcore_write_prpsinfo
!     # or elfcore_write_prstatus.  So unless the user explicitly requested
!     # large-file support through the --enable-largefile switch, disable
!     # large-file support in favor of procfs support.
!     test "${target}" = "${host}" -a "x$plugins" = xno \
!       && : ${enable_largefile="no"}
      ;;
  esac
  
--- 16,53 ----
  AC_PLUGINS
  
  case "${host}" in
!   sparc-*-solaris*|i?86-*-solaris*)
!     # On native 32-bit Solaris/SPARC and x86, large-file and procfs support
!     # were mutually exclusive until Solaris 11.3.  Without procfs support,
!     # the bfd/ elf module cannot provide certain routines such as
!     # elfcore_write_prpsinfo or elfcore_write_prstatus.  So unless the user
!     # explicitly requested large-file support through the
!     # --enable-largefile switch, disable large-file support in favor of
!     # procfs support.
!     #
!     # Check if <sys/procfs.h> is incompatible with large-file support.
!     AC_TRY_COMPILE([#define _FILE_OFFSET_BITS 64
! #define _STRUCTURED_PROC 1
! #include <sys/procfs.h>], , acx_cv_procfs_lfs=yes, acx_cv_procfs_lfs=no)
!     #
!     # Forcefully disable large-file support only if necessary, gdb is in
!     # tree and enabled.
!     if test "${target}" = "${host}" -a "$acx_cv_procfs_lfs" = no \
!          -a -d $srcdir/../gdb -a "$enable_gdb" != no; then
!       : ${enable_largefile="no"}
!       if test "$plugins" = yes; then
! 	AC_MSG_WARN([
! plugin support disabled; require large-file support which is incompatible with GDB.])
! 	plugins=no
!       fi
!     fi
!     #
!     # Explicitly undef _FILE_OFFSET_BITS if enable_largefile=no for the
!     # benefit of g++ 9+ which predefines it on Solaris.
!     if test "$enable_largefile" = no; then
!       LARGEFILE_CPPFLAGS="-U_FILE_OFFSET_BITS"
!       AC_SUBST(LARGEFILE_CPPFLAGS)
!     fi
      ;;
  esac
  
diff -Nrcpad gcc-10.3.0/config/mh-mingw gcc-11.1.0/config/mh-mingw
*** gcc-10.3.0/config/mh-mingw	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/config/mh-mingw	Tue Apr 27 10:00:12 2021
***************
*** 1,7 ****
--- 1,9 ----
  # Add -D__USE_MINGW_ACCESS to enable the built compiler to work on Windows
  # Vista (see PR33281 for details).
  BOOT_CFLAGS += -D__USE_MINGW_ACCESS -Wno-pedantic-ms-format
+ BOOT_CXXFLAGS += -D__USE_MINGW_ACCESS -Wno-pedantic-ms-format
  CFLAGS += -D__USE_MINGW_ACCESS
+ CXXFLAGS += -D__USE_MINGW_ACCESS
  STAGE1_CXXFLAGS += -D__USE_MINGW_ACCESS
  STAGE2_CXXFLAGS += -D__USE_MINGW_ACCESS
  STAGE3_CXXFLAGS += -D__USE_MINGW_ACCESS
diff -Nrcpad gcc-10.3.0/config/pkg.m4 gcc-11.1.0/config/pkg.m4
*** gcc-10.3.0/config/pkg.m4	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/config/pkg.m4	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,275 ----
+ # pkg.m4 - Macros to locate and utilise pkg-config.   -*- Autoconf -*-
+ # serial 12 (pkg-config-0.29.2)
+ 
+ dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+ dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
+ dnl
+ dnl This program is free software; you can redistribute it and/or modify
+ dnl it under the terms of the GNU General Public License as published by
+ dnl the Free Software Foundation; either version 2 of the License, or
+ dnl (at your option) any later version.
+ dnl
+ dnl This program is distributed in the hope that it will be useful, but
+ dnl WITHOUT ANY WARRANTY; without even the implied warranty of
+ dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ dnl General Public License for more details.
+ dnl
+ dnl You should have received a copy of the GNU General Public License
+ dnl along with this program; if not, write to the Free Software
+ dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ dnl 02111-1307, USA.
+ dnl
+ dnl As a special exception to the GNU General Public License, if you
+ dnl distribute this file as part of a program that contains a
+ dnl configuration script generated by Autoconf, you may include it under
+ dnl the same distribution terms that you use for the rest of that
+ dnl program.
+ 
+ dnl PKG_PREREQ(MIN-VERSION)
+ dnl -----------------------
+ dnl Since: 0.29
+ dnl
+ dnl Verify that the version of the pkg-config macros are at least
+ dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
+ dnl installed version of pkg-config, this checks the developer's version
+ dnl of pkg.m4 when generating configure.
+ dnl
+ dnl To ensure that this macro is defined, also add:
+ dnl m4_ifndef([PKG_PREREQ],
+ dnl     [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
+ dnl
+ dnl See the "Since" comment for each macro you use to see what version
+ dnl of the macros you require.
+ m4_defun([PKG_PREREQ],
+ [m4_define([PKG_MACROS_VERSION], [0.29.2])
+ m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
+     [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
+ ])dnl PKG_PREREQ
+ 
+ dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
+ dnl ----------------------------------
+ dnl Since: 0.16
+ dnl
+ dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
+ dnl first found in the path. Checks that the version of pkg-config found
+ dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
+ dnl used since that's the first version where most current features of
+ dnl pkg-config existed.
+ AC_DEFUN([PKG_PROG_PKG_CONFIG],
+ [m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+ m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+ m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
+ AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+ AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+ AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+ 
+ if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ 	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+ fi
+ if test -n "$PKG_CONFIG"; then
+ 	_pkg_min_version=m4_default([$1], [0.9.0])
+ 	AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+ 	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ 		AC_MSG_RESULT([yes])
+ 	else
+ 		AC_MSG_RESULT([no])
+ 		PKG_CONFIG=""
+ 	fi
+ fi[]dnl
+ ])dnl PKG_PROG_PKG_CONFIG
+ 
+ dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+ dnl -------------------------------------------------------------------
+ dnl Since: 0.18
+ dnl
+ dnl Check to see whether a particular set of modules exists. Similar to
+ dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
+ dnl
+ dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+ dnl only at the first occurence in configure.ac, so if the first place
+ dnl it's called might be skipped (such as if it is within an "if", you
+ dnl have to call PKG_CHECK_EXISTS manually
+ AC_DEFUN([PKG_CHECK_EXISTS],
+ [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+ if test -n "$PKG_CONFIG" && \
+     AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+   m4_default([$2], [:])
+ m4_ifvaln([$3], [else
+   $3])dnl
+ fi])
+ 
+ dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+ dnl ---------------------------------------------
+ dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
+ dnl pkg_failed based on the result.
+ m4_define([_PKG_CONFIG],
+ [if test -n "$$1"; then
+     pkg_cv_[]$1="$$1"
+  elif test -n "$PKG_CONFIG"; then
+     PKG_CHECK_EXISTS([$3],
+                      [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+ 		      test "x$?" != "x0" && pkg_failed=yes ],
+ 		     [pkg_failed=yes])
+  else
+     pkg_failed=untried
+ fi[]dnl
+ ])dnl _PKG_CONFIG
+ 
+ dnl _PKG_SHORT_ERRORS_SUPPORTED
+ dnl ---------------------------
+ dnl Internal check to see if pkg-config supports short errors.
+ AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+ [AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+ if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+         _pkg_short_errors_supported=yes
+ else
+         _pkg_short_errors_supported=no
+ fi[]dnl
+ ])dnl _PKG_SHORT_ERRORS_SUPPORTED
+ 
+ 
+ dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+ dnl   [ACTION-IF-NOT-FOUND])
+ dnl --------------------------------------------------------------
+ dnl Since: 0.4.0
+ dnl
+ dnl Note that if there is a possibility the first call to
+ dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
+ dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+ AC_DEFUN([PKG_CHECK_MODULES],
+ [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+ AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+ AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+ 
+ pkg_failed=no
+ AC_MSG_CHECKING([for $2])
+ 
+ _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+ _PKG_CONFIG([$1][_LIBS], [libs], [$2])
+ 
+ m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+ and $1[]_LIBS to avoid the need to call pkg-config.
+ See the pkg-config man page for more details.])
+ 
+ if test $pkg_failed = yes; then
+         AC_MSG_RESULT([no])
+         _PKG_SHORT_ERRORS_SUPPORTED
+         if test $_pkg_short_errors_supported = yes; then
+ 	        $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
+         else
+ 	        $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
+         fi
+ 	# Put the nasty error message in config.log where it belongs
+ 	echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+ 
+ 	m4_default([$4], [AC_MSG_ERROR(
+ [Package requirements ($2) were not met:
+ 
+ $$1_PKG_ERRORS
+ 
+ Consider adjusting the PKG_CONFIG_PATH environment variable if you
+ installed software in a non-standard prefix.
+ 
+ _PKG_TEXT])[]dnl
+         ])
+ elif test $pkg_failed = untried; then
+         AC_MSG_RESULT([no])
+ 	m4_default([$4], [AC_MSG_FAILURE(
+ [The pkg-config script could not be found or is too old.  Make sure it
+ is in your PATH or set the PKG_CONFIG environment variable to the full
+ path to pkg-config.
+ 
+ _PKG_TEXT
+ 
+ To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
+         ])
+ else
+ 	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+ 	$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+         AC_MSG_RESULT([yes])
+ 	$3
+ fi[]dnl
+ ])dnl PKG_CHECK_MODULES
+ 
+ 
+ dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+ dnl   [ACTION-IF-NOT-FOUND])
+ dnl ---------------------------------------------------------------------
+ dnl Since: 0.29
+ dnl
+ dnl Checks for existence of MODULES and gathers its build flags with
+ dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
+ dnl and VARIABLE-PREFIX_LIBS from --libs.
+ dnl
+ dnl Note that if there is a possibility the first call to
+ dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
+ dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
+ dnl configure.ac.
+ AC_DEFUN([PKG_CHECK_MODULES_STATIC],
+ [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+ _save_PKG_CONFIG=$PKG_CONFIG
+ PKG_CONFIG="$PKG_CONFIG --static"
+ PKG_CHECK_MODULES($@)
+ PKG_CONFIG=$_save_PKG_CONFIG[]dnl
+ ])dnl PKG_CHECK_MODULES_STATIC
+ 
+ 
+ dnl PKG_INSTALLDIR([DIRECTORY])
+ dnl -------------------------
+ dnl Since: 0.27
+ dnl
+ dnl Substitutes the variable pkgconfigdir as the location where a module
+ dnl should install pkg-config .pc files. By default the directory is
+ dnl $libdir/pkgconfig, but the default can be changed by passing
+ dnl DIRECTORY. The user can override through the --with-pkgconfigdir
+ dnl parameter.
+ AC_DEFUN([PKG_INSTALLDIR],
+ [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
+ m4_pushdef([pkg_description],
+     [pkg-config installation directory @<:@]pkg_default[@:>@])
+ AC_ARG_WITH([pkgconfigdir],
+     [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
+     [with_pkgconfigdir=]pkg_default)
+ AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
+ m4_popdef([pkg_default])
+ m4_popdef([pkg_description])
+ ])dnl PKG_INSTALLDIR
+ 
+ 
+ dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
+ dnl --------------------------------
+ dnl Since: 0.27
+ dnl
+ dnl Substitutes the variable noarch_pkgconfigdir as the location where a
+ dnl module should install arch-independent pkg-config .pc files. By
+ dnl default the directory is $datadir/pkgconfig, but the default can be
+ dnl changed by passing DIRECTORY. The user can override through the
+ dnl --with-noarch-pkgconfigdir parameter.
+ AC_DEFUN([PKG_NOARCH_INSTALLDIR],
+ [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
+ m4_pushdef([pkg_description],
+     [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
+ AC_ARG_WITH([noarch-pkgconfigdir],
+     [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
+     [with_noarch_pkgconfigdir=]pkg_default)
+ AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
+ m4_popdef([pkg_default])
+ m4_popdef([pkg_description])
+ ])dnl PKG_NOARCH_INSTALLDIR
+ 
+ 
+ dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
+ dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+ dnl -------------------------------------------
+ dnl Since: 0.28
+ dnl
+ dnl Retrieves the value of the pkg-config variable for the given module.
+ AC_DEFUN([PKG_CHECK_VAR],
+ [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+ AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
+ 
+ _PKG_CONFIG([$1], [variable="][$3]["], [$2])
+ AS_VAR_COPY([$1], [pkg_cv_][$1])
+ 
+ AS_VAR_IF([$1], [""], [$5], [$4])dnl
+ ])dnl PKG_CHECK_VAR
diff -Nrcpad gcc-10.3.0/config-ml.in gcc-11.1.0/config-ml.in
*** gcc-10.3.0/config-ml.in	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/config-ml.in	Tue Apr 27 10:00:12 2021
*************** cat > Multi.tem <<\EOF
*** 499,508 ****
  
  PWD_COMMAND=$${PWDCMD-pwd}
  
- # FIXME: There should be an @-sign in front of the `if'.
- # Leave out until this is tested a bit more.
  multi-do:
! 	if [ -z "$(MULTIDIRS)" ]; then \
  	  true; \
  	else \
  	  rootpre=`${PWD_COMMAND}`/; export rootpre; \
--- 499,506 ----
  
  PWD_COMMAND=$${PWDCMD-pwd}
  
  multi-do:
! 	@if [ -z "$(MULTIDIRS)" ]; then \
  	  true; \
  	else \
  	  rootpre=`${PWD_COMMAND}`/; export rootpre; \
*************** multi-do:
*** 547,556 ****
  	  done; \
  	fi
  
- # FIXME: There should be an @-sign in front of the `if'.
- # Leave out until this is tested a bit more.
  multi-clean:
! 	if [ -z "$(MULTIDIRS)" ]; then \
  	  true; \
  	else \
  	  lib=`${PWD_COMMAND} | sed -e 's,^.*/\([^/][^/]*\)$$,\1,'`; \
--- 545,552 ----
  	  done; \
  	fi
  
  multi-clean:
! 	@if [ -z "$(MULTIDIRS)" ]; then \
  	  true; \
  	else \
  	  lib=`${PWD_COMMAND} | sed -e 's,^.*/\([^/][^/]*\)$$,\1,'`; \
diff -Nrcpad gcc-10.3.0/config.guess gcc-11.1.0/config.guess
*** gcc-10.3.0/config.guess	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/config.guess	Tue Apr 27 10:00:12 2021
***************
*** 1,8 ****
  #! /bin/sh
  # Attempt to guess a canonical system name.
! #   Copyright 1992-2019 Free Software Foundation, Inc.
  
! timestamp='2019-07-24'
  
  # This file is free software; you can redistribute it and/or modify it
  # under the terms of the GNU General Public License as published by
--- 1,8 ----
  #! /bin/sh
  # Attempt to guess a canonical system name.
! #   Copyright 1992-2021 Free Software Foundation, Inc.
  
! timestamp='2021-01-25'
  
  # This file is free software; you can redistribute it and/or modify it
  # under the terms of the GNU General Public License as published by
*************** timestamp='2019-07-24'
*** 27,38 ****
  # Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
  #
  # You can get the latest version of this script from:
! # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
  #
  # Please send patches to <config-patches@gnu.org>.
  
  
! me=`echo "$0" | sed -e 's,.*/,,'`
  
  usage="\
  Usage: $0 [OPTION]
--- 27,38 ----
  # Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
  #
  # You can get the latest version of this script from:
! # https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
  #
  # Please send patches to <config-patches@gnu.org>.
  
  
! me=$(echo "$0" | sed -e 's,.*/,,')
  
  usage="\
  Usage: $0 [OPTION]
*************** version="\
*** 50,56 ****
  GNU config.guess ($timestamp)
  
  Originally written by Per Bothner.
! Copyright 1992-2019 Free Software Foundation, Inc.
  
  This is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
--- 50,56 ----
  GNU config.guess ($timestamp)
  
  Originally written by Per Bothner.
! Copyright 1992-2021 Free Software Foundation, Inc.
  
  This is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
*************** tmp=
*** 99,107 ****
  trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
  
  set_cc_for_build() {
      : "${TMPDIR=/tmp}"
      # shellcheck disable=SC2039
!     { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
  	{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
  	{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
  	{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
--- 99,109 ----
  trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
  
  set_cc_for_build() {
+     # prevent multiple calls if $tmp is already set
+     test "$tmp" && return 0
      : "${TMPDIR=/tmp}"
      # shellcheck disable=SC2039
!     { tmp=$( (umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null) && test -n "$tmp" && test -d "$tmp" ; } ||
  	{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
  	{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
  	{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
*************** if test -f /.attbin/uname ; then
*** 129,144 ****
  	PATH=$PATH:/.attbin ; export PATH
  fi
  
! UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
! UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
! UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
! UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
  
  case "$UNAME_SYSTEM" in
  Linux|GNU|GNU/*)
! 	# If the system lacks a compiler, then just pick glibc.
! 	# We could probably try harder.
! 	LIBC=gnu
  
  	set_cc_for_build
  	cat <<-EOF > "$dummy.c"
--- 131,144 ----
  	PATH=$PATH:/.attbin ; export PATH
  fi
  
! UNAME_MACHINE=$( (uname -m) 2>/dev/null) || UNAME_MACHINE=unknown
! UNAME_RELEASE=$( (uname -r) 2>/dev/null) || UNAME_RELEASE=unknown
! UNAME_SYSTEM=$( (uname -s) 2>/dev/null) || UNAME_SYSTEM=unknown
! UNAME_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown
  
  case "$UNAME_SYSTEM" in
  Linux|GNU|GNU/*)
! 	LIBC=unknown
  
  	set_cc_for_build
  	cat <<-EOF > "$dummy.c"
*************** Linux|GNU|GNU/*)
*** 147,163 ****
  	LIBC=uclibc
  	#elif defined(__dietlibc__)
  	LIBC=dietlibc
! 	#else
  	LIBC=gnu
  	#endif
  	EOF
! 	eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
  
! 	# If ldd exists, use it to detect musl libc.
! 	if command -v ldd >/dev/null && \
! 		ldd --version 2>&1 | grep -q ^musl
! 	then
! 	    LIBC=musl
  	fi
  	;;
  esac
--- 147,175 ----
  	LIBC=uclibc
  	#elif defined(__dietlibc__)
  	LIBC=dietlibc
! 	#elif defined(__GLIBC__)
  	LIBC=gnu
+ 	#else
+ 	#include <stdarg.h>
+ 	/* First heuristic to detect musl libc.  */
+ 	#ifdef __DEFINED_va_list
+ 	LIBC=musl
+ 	#endif
  	#endif
  	EOF
! 	eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g')"
  
! 	# Second heuristic to detect musl libc.
! 	if [ "$LIBC" = unknown ] &&
! 	   command -v ldd >/dev/null &&
! 	   ldd --version 2>&1 | grep -q ^musl; then
! 		LIBC=musl
! 	fi
! 
! 	# If the system lacks a compiler, then just pick glibc.
! 	# We could probably try harder.
! 	if [ "$LIBC" = unknown ]; then
! 		LIBC=gnu
  	fi
  	;;
  esac
*************** case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
*** 176,195 ****
  	#
  	# Note: NetBSD doesn't particularly care about the vendor
  	# portion of the name.  We always set it to "unknown".
! 	sysctl="sysctl -n hw.machine_arch"
! 	UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
! 	    "/sbin/$sysctl" 2>/dev/null || \
! 	    "/usr/sbin/$sysctl" 2>/dev/null || \
! 	    echo unknown)`
  	case "$UNAME_MACHINE_ARCH" in
  	    armeb) machine=armeb-unknown ;;
  	    arm*) machine=arm-unknown ;;
  	    sh3el) machine=shl-unknown ;;
  	    sh3eb) machine=sh-unknown ;;
  	    sh5el) machine=sh5le-unknown ;;
  	    earmv*)
! 		arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
! 		endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
  		machine="${arch}${endian}"-unknown
  		;;
  	    *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
--- 188,207 ----
  	#
  	# Note: NetBSD doesn't particularly care about the vendor
  	# portion of the name.  We always set it to "unknown".
! 	UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \
! 	    /sbin/sysctl -n hw.machine_arch 2>/dev/null || \
! 	    /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
! 	    echo unknown))
  	case "$UNAME_MACHINE_ARCH" in
+ 	    aarch64eb) machine=aarch64_be-unknown ;;
  	    armeb) machine=armeb-unknown ;;
  	    arm*) machine=arm-unknown ;;
  	    sh3el) machine=shl-unknown ;;
  	    sh3eb) machine=sh-unknown ;;
  	    sh5el) machine=sh5le-unknown ;;
  	    earmv*)
! 		arch=$(echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,')
! 		endian=$(echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p')
  		machine="${arch}${endian}"-unknown
  		;;
  	    *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
*************** case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
*** 220,226 ****
  	case "$UNAME_MACHINE_ARCH" in
  	    earm*)
  		expr='s/^earmv[0-9]/-eabi/;s/eb$//'
! 		abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
  		;;
  	esac
  	# The OS release
--- 232,238 ----
  	case "$UNAME_MACHINE_ARCH" in
  	    earm*)
  		expr='s/^earmv[0-9]/-eabi/;s/eb$//'
! 		abi=$(echo "$UNAME_MACHINE_ARCH" | sed -e "$expr")
  		;;
  	esac
  	# The OS release
*************** case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
*** 233,239 ****
  		release='-gnu'
  		;;
  	    *)
! 		release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
  		;;
  	esac
  	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
--- 245,251 ----
  		release='-gnu'
  		;;
  	    *)
! 		release=$(echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2)
  		;;
  	esac
  	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
*************** case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
*** 242,256 ****
  	echo "$machine-${os}${release}${abi-}"
  	exit ;;
      *:Bitrig:*:*)
! 	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
  	echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
  	exit ;;
      *:OpenBSD:*:*)
! 	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
  	echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
  	exit ;;
      *:LibertyBSD:*:*)
! 	UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
  	echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
  	exit ;;
      *:MidnightBSD:*:*)
--- 254,268 ----
  	echo "$machine-${os}${release}${abi-}"
  	exit ;;
      *:Bitrig:*:*)
! 	UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//')
  	echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
  	exit ;;
      *:OpenBSD:*:*)
! 	UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//')
  	echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
  	exit ;;
      *:LibertyBSD:*:*)
! 	UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//')
  	echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
  	exit ;;
      *:MidnightBSD:*:*)
*************** case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
*** 274,279 ****
--- 286,294 ----
      *:Sortix:*:*)
  	echo "$UNAME_MACHINE"-unknown-sortix
  	exit ;;
+     *:Twizzler:*:*)
+ 	echo "$UNAME_MACHINE"-unknown-twizzler
+ 	exit ;;
      *:Redox:*:*)
  	echo "$UNAME_MACHINE"-unknown-redox
  	exit ;;
*************** case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
*** 283,299 ****
      alpha:OSF1:*:*)
  	case $UNAME_RELEASE in
  	*4.0)
! 		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
  		;;
  	*5.*)
! 		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
  		;;
  	esac
  	# According to Compaq, /usr/sbin/psrinfo has been available on
  	# OSF/1 and Tru64 systems produced since 1995.  I hope that
  	# covers most systems running today.  This code pipes the CPU
  	# types through head -n 1, so we only detect the type of CPU 0.
! 	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
  	case "$ALPHA_CPU_TYPE" in
  	    "EV4 (21064)")
  		UNAME_MACHINE=alpha ;;
--- 298,314 ----
      alpha:OSF1:*:*)
  	case $UNAME_RELEASE in
  	*4.0)
! 		UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}')
  		;;
  	*5.*)
! 		UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}')
  		;;
  	esac
  	# According to Compaq, /usr/sbin/psrinfo has been available on
  	# OSF/1 and Tru64 systems produced since 1995.  I hope that
  	# covers most systems running today.  This code pipes the CPU
  	# types through head -n 1, so we only detect the type of CPU 0.
! 	ALPHA_CPU_TYPE=$(/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1)
  	case "$ALPHA_CPU_TYPE" in
  	    "EV4 (21064)")
  		UNAME_MACHINE=alpha ;;
*************** case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
*** 331,337 ****
  	# A Tn.n version is a released field test version.
  	# A Xn.n version is an unreleased experimental baselevel.
  	# 1.2 uses "1.2" for uname -r.
! 	echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
  	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
  	exitcode=$?
  	trap '' 0
--- 346,352 ----
  	# A Tn.n version is a released field test version.
  	# A Xn.n version is an unreleased experimental baselevel.
  	# 1.2 uses "1.2" for uname -r.
! 	echo "$UNAME_MACHINE"-dec-osf"$(echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)"
  	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
  	exitcode=$?
  	trap '' 0
*************** case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
*** 365,371 ****
  	exit ;;
      Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
  	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
! 	if test "`(/bin/universe) 2>/dev/null`" = att ; then
  		echo pyramid-pyramid-sysv3
  	else
  		echo pyramid-pyramid-bsd
--- 380,386 ----
  	exit ;;
      Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
  	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
! 	if test "$( (/bin/universe) 2>/dev/null)" = att ; then
  		echo pyramid-pyramid-sysv3
  	else
  		echo pyramid-pyramid-bsd
*************** case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
*** 378,394 ****
  	echo sparc-icl-nx6
  	exit ;;
      DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
! 	case `/usr/bin/uname -p` in
  	    sparc) echo sparc-icl-nx7; exit ;;
  	esac ;;
      s390x:SunOS:*:*)
! 	echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
  	exit ;;
      sun4H:SunOS:5.*:*)
! 	echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
  	exit ;;
      sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
! 	echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
  	exit ;;
      i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
  	echo i386-pc-auroraux"$UNAME_RELEASE"
--- 393,409 ----
  	echo sparc-icl-nx6
  	exit ;;
      DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
! 	case $(/usr/bin/uname -p) in
  	    sparc) echo sparc-icl-nx7; exit ;;
  	esac ;;
      s390x:SunOS:*:*)
! 	echo "$UNAME_MACHINE"-ibm-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
  	exit ;;
      sun4H:SunOS:5.*:*)
! 	echo sparc-hal-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
  	exit ;;
      sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
! 	echo sparc-sun-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
  	exit ;;
      i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
  	echo i386-pc-auroraux"$UNAME_RELEASE"
*************** case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
*** 399,405 ****
  	# If there is a compiler, see if it is configured for 64-bit objects.
  	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
  	# This test works for both compilers.
! 	if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
  	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
  		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
  		grep IS_64BIT_ARCH >/dev/null
--- 414,420 ----
  	# If there is a compiler, see if it is configured for 64-bit objects.
  	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
  	# This test works for both compilers.
! 	if test "$CC_FOR_BUILD" != no_compiler_found; then
  	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
  		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
  		grep IS_64BIT_ARCH >/dev/null
*************** case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
*** 407,436 ****
  		SUN_ARCH=x86_64
  	    fi
  	fi
! 	echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
  	exit ;;
      sun4*:SunOS:6*:*)
  	# According to config.sub, this is the proper way to canonicalize
  	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
  	# it's likely to be more like Solaris than SunOS4.
! 	echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
  	exit ;;
      sun4*:SunOS:*:*)
! 	case "`/usr/bin/arch -k`" in
  	    Series*|S4*)
! 		UNAME_RELEASE=`uname -v`
  		;;
  	esac
  	# Japanese Language versions have a version number like `4.1.3-JL'.
! 	echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
  	exit ;;
      sun3*:SunOS:*:*)
  	echo m68k-sun-sunos"$UNAME_RELEASE"
  	exit ;;
      sun*:*:4.2BSD:*)
! 	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
  	test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
! 	case "`/bin/arch`" in
  	    sun3)
  		echo m68k-sun-sunos"$UNAME_RELEASE"
  		;;
--- 422,451 ----
  		SUN_ARCH=x86_64
  	    fi
  	fi
! 	echo "$SUN_ARCH"-pc-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
  	exit ;;
      sun4*:SunOS:6*:*)
  	# According to config.sub, this is the proper way to canonicalize
  	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
  	# it's likely to be more like Solaris than SunOS4.
! 	echo sparc-sun-solaris3"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
  	exit ;;
      sun4*:SunOS:*:*)
! 	case "$(/usr/bin/arch -k)" in
  	    Series*|S4*)
! 		UNAME_RELEASE=$(uname -v)
  		;;
  	esac
  	# Japanese Language versions have a version number like `4.1.3-JL'.
! 	echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')"
  	exit ;;
      sun3*:SunOS:*:*)
  	echo m68k-sun-sunos"$UNAME_RELEASE"
  	exit ;;
      sun*:*:4.2BSD:*)
! 	UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null)
  	test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
! 	case "$(/bin/arch)" in
  	    sun3)
  		echo m68k-sun-sunos"$UNAME_RELEASE"
  		;;
*************** case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
*** 510,517 ****
  	}
  EOF
  	$CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
! 	  dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
! 	  SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
  	    { echo "$SYSTEM_NAME"; exit; }
  	echo mips-mips-riscos"$UNAME_RELEASE"
  	exit ;;
--- 525,532 ----
  	}
  EOF
  	$CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
! 	  dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') &&
! 	  SYSTEM_NAME=$("$dummy" "$dummyarg") &&
  	    { echo "$SYSTEM_NAME"; exit; }
  	echo mips-mips-riscos"$UNAME_RELEASE"
  	exit ;;
*************** EOF
*** 538,548 ****
  	exit ;;
      AViiON:dgux:*:*)
  	# DG/UX returns AViiON for all architectures
! 	UNAME_PROCESSOR=`/usr/bin/uname -p`
! 	if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
  	then
! 	    if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
! 	       [ "$TARGET_BINARY_INTERFACE"x = x ]
  	    then
  		echo m88k-dg-dgux"$UNAME_RELEASE"
  	    else
--- 553,563 ----
  	exit ;;
      AViiON:dgux:*:*)
  	# DG/UX returns AViiON for all architectures
! 	UNAME_PROCESSOR=$(/usr/bin/uname -p)
! 	if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
  	then
! 	    if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
! 	       test "$TARGET_BINARY_INTERFACE"x = x
  	    then
  		echo m88k-dg-dgux"$UNAME_RELEASE"
  	    else
*************** EOF
*** 566,582 ****
  	echo m68k-tektronix-bsd
  	exit ;;
      *:IRIX*:*:*)
! 	echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
  	exit ;;
      ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
  	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
! 	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
      i*86:AIX:*:*)
  	echo i386-ibm-aix
  	exit ;;
      ia64:AIX:*:*)
! 	if [ -x /usr/bin/oslevel ] ; then
! 		IBM_REV=`/usr/bin/oslevel`
  	else
  		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
  	fi
--- 581,597 ----
  	echo m68k-tektronix-bsd
  	exit ;;
      *:IRIX*:*:*)
! 	echo mips-sgi-irix"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/g')"
  	exit ;;
      ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
  	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
! 	exit ;;               # Note that: echo "'$(uname -s)'" gives 'AIX '
      i*86:AIX:*:*)
  	echo i386-ibm-aix
  	exit ;;
      ia64:AIX:*:*)
! 	if test -x /usr/bin/oslevel ; then
! 		IBM_REV=$(/usr/bin/oslevel)
  	else
  		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
  	fi
*************** EOF
*** 596,602 ****
  			exit(0);
  			}
  EOF
! 		if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
  		then
  			echo "$SYSTEM_NAME"
  		else
--- 611,617 ----
  			exit(0);
  			}
  EOF
! 		if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy")
  		then
  			echo "$SYSTEM_NAME"
  		else
*************** EOF
*** 609,623 ****
  	fi
  	exit ;;
      *:AIX:*:[4567])
! 	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
  	if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
  		IBM_ARCH=rs6000
  	else
  		IBM_ARCH=powerpc
  	fi
! 	if [ -x /usr/bin/lslpp ] ; then
! 		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
! 			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
  	else
  		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
  	fi
--- 624,638 ----
  	fi
  	exit ;;
      *:AIX:*:[4567])
! 	IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }')
  	if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
  		IBM_ARCH=rs6000
  	else
  		IBM_ARCH=powerpc
  	fi
! 	if test -x /usr/bin/lslpp ; then
! 		IBM_REV=$(/usr/bin/lslpp -Lqc bos.rte.libc |
! 			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/)
  	else
  		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
  	fi
*************** EOF
*** 645,658 ****
  	echo m68k-hp-bsd4.4
  	exit ;;
      9000/[34678]??:HP-UX:*:*)
! 	HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
  	case "$UNAME_MACHINE" in
  	    9000/31?)            HP_ARCH=m68000 ;;
  	    9000/[34]??)         HP_ARCH=m68k ;;
  	    9000/[678][0-9][0-9])
! 		if [ -x /usr/bin/getconf ]; then
! 		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
! 		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
  		    case "$sc_cpu_version" in
  		      523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
  		      528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
--- 660,673 ----
  	echo m68k-hp-bsd4.4
  	exit ;;
      9000/[34678]??:HP-UX:*:*)
! 	HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
  	case "$UNAME_MACHINE" in
  	    9000/31?)            HP_ARCH=m68000 ;;
  	    9000/[34]??)         HP_ARCH=m68k ;;
  	    9000/[678][0-9][0-9])
! 		if test -x /usr/bin/getconf; then
! 		    sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null)
! 		    sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null)
  		    case "$sc_cpu_version" in
  		      523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
  		      528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
*************** EOF
*** 664,670 ****
  			esac ;;
  		    esac
  		fi
! 		if [ "$HP_ARCH" = "" ]; then
  		    set_cc_for_build
  		    sed 's/^		//' << EOF > "$dummy.c"
  
--- 679,685 ----
  			esac ;;
  		    esac
  		fi
! 		if test "$HP_ARCH" = ""; then
  		    set_cc_for_build
  		    sed 's/^		//' << EOF > "$dummy.c"
  
*************** EOF
*** 699,709 ****
  		    exit (0);
  		}
  EOF
! 		    (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
  		    test -z "$HP_ARCH" && HP_ARCH=hppa
  		fi ;;
  	esac
! 	if [ "$HP_ARCH" = hppa2.0w ]
  	then
  	    set_cc_for_build
  
--- 714,724 ----
  		    exit (0);
  		}
  EOF
! 		    (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=$("$dummy")
  		    test -z "$HP_ARCH" && HP_ARCH=hppa
  		fi ;;
  	esac
! 	if test "$HP_ARCH" = hppa2.0w
  	then
  	    set_cc_for_build
  
*************** EOF
*** 727,733 ****
  	echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
  	exit ;;
      ia64:HP-UX:*:*)
! 	HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
  	echo ia64-hp-hpux"$HPUX_REV"
  	exit ;;
      3050*:HI-UX:*:*)
--- 742,748 ----
  	echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
  	exit ;;
      ia64:HP-UX:*:*)
! 	HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
  	echo ia64-hp-hpux"$HPUX_REV"
  	exit ;;
      3050*:HI-UX:*:*)
*************** EOF
*** 757,763 ****
  	  exit (0);
  	}
  EOF
! 	$CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
  		{ echo "$SYSTEM_NAME"; exit; }
  	echo unknown-hitachi-hiuxwe2
  	exit ;;
--- 772,778 ----
  	  exit (0);
  	}
  EOF
! 	$CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") &&
  		{ echo "$SYSTEM_NAME"; exit; }
  	echo unknown-hitachi-hiuxwe2
  	exit ;;
*************** EOF
*** 777,783 ****
  	echo hppa1.0-hp-osf
  	exit ;;
      i*86:OSF1:*:*)
! 	if [ -x /usr/sbin/sysversion ] ; then
  	    echo "$UNAME_MACHINE"-unknown-osf1mk
  	else
  	    echo "$UNAME_MACHINE"-unknown-osf1
--- 792,798 ----
  	echo hppa1.0-hp-osf
  	exit ;;
      i*86:OSF1:*:*)
! 	if test -x /usr/sbin/sysversion ; then
  	    echo "$UNAME_MACHINE"-unknown-osf1mk
  	else
  	    echo "$UNAME_MACHINE"-unknown-osf1
*************** EOF
*** 826,839 ****
  	echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
  	exit ;;
      F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
! 	FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
! 	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
! 	FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
  	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
  	exit ;;
      5000:UNIX_System_V:4.*:*)
! 	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
! 	FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
  	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
  	exit ;;
      i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
--- 841,854 ----
  	echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
  	exit ;;
      F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
! 	FUJITSU_PROC=$(uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)
! 	FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
! 	FUJITSU_REL=$(echo "$UNAME_RELEASE" | sed -e 's/ /_/')
  	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
  	exit ;;
      5000:UNIX_System_V:4.*:*)
! 	FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
! 	FUJITSU_REL=$(echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/')
  	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
  	exit ;;
      i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
*************** EOF
*** 846,870 ****
  	echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
  	exit ;;
      arm:FreeBSD:*:*)
! 	UNAME_PROCESSOR=`uname -p`
  	set_cc_for_build
  	if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
  	    | grep -q __ARM_PCS_VFP
  	then
! 	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
  	else
! 	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
  	fi
  	exit ;;
      *:FreeBSD:*:*)
! 	UNAME_PROCESSOR=`/usr/bin/uname -p`
  	case "$UNAME_PROCESSOR" in
  	    amd64)
  		UNAME_PROCESSOR=x86_64 ;;
  	    i386)
  		UNAME_PROCESSOR=i586 ;;
  	esac
! 	echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
  	exit ;;
      i*:CYGWIN*:*)
  	echo "$UNAME_MACHINE"-pc-cygwin
--- 861,885 ----
  	echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
  	exit ;;
      arm:FreeBSD:*:*)
! 	UNAME_PROCESSOR=$(uname -p)
  	set_cc_for_build
  	if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
  	    | grep -q __ARM_PCS_VFP
  	then
! 	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi
  	else
! 	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf
  	fi
  	exit ;;
      *:FreeBSD:*:*)
! 	UNAME_PROCESSOR=$(/usr/bin/uname -p)
  	case "$UNAME_PROCESSOR" in
  	    amd64)
  		UNAME_PROCESSOR=x86_64 ;;
  	    i386)
  		UNAME_PROCESSOR=i586 ;;
  	esac
! 	echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
  	exit ;;
      i*:CYGWIN*:*)
  	echo "$UNAME_MACHINE"-pc-cygwin
*************** EOF
*** 900,914 ****
  	echo x86_64-pc-cygwin
  	exit ;;
      prep*:SunOS:5.*:*)
! 	echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
  	exit ;;
      *:GNU:*:*)
  	# the GNU system
! 	echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
  	exit ;;
      *:GNU/*:*:*)
  	# other systems with GNU libc and userland
! 	echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
  	exit ;;
      *:Minix:*:*)
  	echo "$UNAME_MACHINE"-unknown-minix
--- 915,929 ----
  	echo x86_64-pc-cygwin
  	exit ;;
      prep*:SunOS:5.*:*)
! 	echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
  	exit ;;
      *:GNU:*:*)
  	# the GNU system
! 	echo "$(echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,')-unknown-$LIBC$(echo "$UNAME_RELEASE"|sed -e 's,/.*$,,')"
  	exit ;;
      *:GNU/*:*:*)
  	# other systems with GNU libc and userland
! 	echo "$UNAME_MACHINE-unknown-$(echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]")$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')-$LIBC"
  	exit ;;
      *:Minix:*:*)
  	echo "$UNAME_MACHINE"-unknown-minix
*************** EOF
*** 921,927 ****
  	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
  	exit ;;
      alpha:Linux:*:*)
! 	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
  	  EV5)   UNAME_MACHINE=alphaev5 ;;
  	  EV56)  UNAME_MACHINE=alphaev56 ;;
  	  PCA56) UNAME_MACHINE=alphapca56 ;;
--- 936,942 ----
  	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
  	exit ;;
      alpha:Linux:*:*)
! 	case $(sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null) in
  	  EV5)   UNAME_MACHINE=alphaev5 ;;
  	  EV56)  UNAME_MACHINE=alphaev56 ;;
  	  PCA56) UNAME_MACHINE=alphapca56 ;;
*************** EOF
*** 980,985 ****
--- 995,1003 ----
      k1om:Linux:*:*)
  	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
  	exit ;;
+     loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
+ 	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ 	exit ;;
      m32r*:Linux:*:*)
  	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
  	exit ;;
*************** EOF
*** 1030,1036 ****
  	#endif
  	#endif
  EOF
! 	eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`"
  	test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
  	;;
      mips64el:Linux:*:*)
--- 1048,1054 ----
  	#endif
  	#endif
  EOF
! 	eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI')"
  	test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
  	;;
      mips64el:Linux:*:*)
*************** EOF
*** 1050,1056 ****
  	exit ;;
      parisc:Linux:*:* | hppa:Linux:*:*)
  	# Look for CPU level
! 	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
  	  PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
  	  PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
  	  *)    echo hppa-unknown-linux-"$LIBC" ;;
--- 1068,1074 ----
  	exit ;;
      parisc:Linux:*:* | hppa:Linux:*:*)
  	# Look for CPU level
! 	case $(grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2) in
  	  PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
  	  PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
  	  *)    echo hppa-unknown-linux-"$LIBC" ;;
*************** EOF
*** 1068,1074 ****
      ppcle:Linux:*:*)
  	echo powerpcle-unknown-linux-"$LIBC"
  	exit ;;
!     riscv32:Linux:*:* | riscv64:Linux:*:*)
  	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
  	exit ;;
      s390:Linux:*:* | s390x:Linux:*:*)
--- 1086,1092 ----
      ppcle:Linux:*:*)
  	echo powerpcle-unknown-linux-"$LIBC"
  	exit ;;
!     riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
  	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
  	exit ;;
      s390:Linux:*:* | s390x:Linux:*:*)
*************** EOF
*** 1090,1096 ****
  	echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
  	exit ;;
      x86_64:Linux:*:*)
! 	echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
  	exit ;;
      xtensa*:Linux:*:*)
  	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
--- 1108,1124 ----
  	echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
  	exit ;;
      x86_64:Linux:*:*)
! 	set_cc_for_build
! 	LIBCABI=$LIBC
! 	if test "$CC_FOR_BUILD" != no_compiler_found; then
! 	    if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
! 		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
! 		grep IS_X32 >/dev/null
! 	    then
! 		LIBCABI="$LIBC"x32
! 	    fi
! 	fi
! 	echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI"
  	exit ;;
      xtensa*:Linux:*:*)
  	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
*************** EOF
*** 1130,1136 ****
  	echo "$UNAME_MACHINE"-pc-msdosdjgpp
  	exit ;;
      i*86:*:4.*:*)
! 	UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
  	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
  		echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
  	else
--- 1158,1164 ----
  	echo "$UNAME_MACHINE"-pc-msdosdjgpp
  	exit ;;
      i*86:*:4.*:*)
! 	UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//')
  	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
  		echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
  	else
*************** EOF
*** 1139,1145 ****
  	exit ;;
      i*86:*:5:[678]*)
  	# UnixWare 7.x, OpenUNIX and OpenServer 6.
! 	case `/bin/uname -X | grep "^Machine"` in
  	    *486*)	     UNAME_MACHINE=i486 ;;
  	    *Pentium)	     UNAME_MACHINE=i586 ;;
  	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
--- 1167,1173 ----
  	exit ;;
      i*86:*:5:[678]*)
  	# UnixWare 7.x, OpenUNIX and OpenServer 6.
! 	case $(/bin/uname -X | grep "^Machine") in
  	    *486*)	     UNAME_MACHINE=i486 ;;
  	    *Pentium)	     UNAME_MACHINE=i586 ;;
  	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
*************** EOF
*** 1148,1157 ****
  	exit ;;
      i*86:*:3.2:*)
  	if test -f /usr/options/cb.name; then
! 		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
  		echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
  	elif /bin/uname -X 2>/dev/null >/dev/null ; then
! 		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
  		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
  		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
  			&& UNAME_MACHINE=i586
--- 1176,1185 ----
  	exit ;;
      i*86:*:3.2:*)
  	if test -f /usr/options/cb.name; then
! 		UNAME_REL=$(sed -n 's/.*Version //p' </usr/options/cb.name)
  		echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
  	elif /bin/uname -X 2>/dev/null >/dev/null ; then
! 		UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //'))
  		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
  		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
  			&& UNAME_MACHINE=i586
*************** EOF
*** 1201,1207 ****
      3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
  	OS_REL=''
  	test -r /etc/.relid \
! 	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
  	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
  	  && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
  	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
--- 1229,1235 ----
      3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
  	OS_REL=''
  	test -r /etc/.relid \
! 	&& OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
  	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
  	  && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
  	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
*************** EOF
*** 1212,1218 ****
      NCR*:*:4.2:* | MPRAS*:*:4.2:*)
  	OS_REL='.3'
  	test -r /etc/.relid \
! 	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
  	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
  	    && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
  	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
--- 1240,1246 ----
      NCR*:*:4.2:* | MPRAS*:*:4.2:*)
  	OS_REL='.3'
  	test -r /etc/.relid \
! 	    && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
  	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
  	    && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
  	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
*************** EOF
*** 1245,1251 ****
  	exit ;;
      *:SINIX-*:*:*)
  	if uname -p 2>/dev/null >/dev/null ; then
! 		UNAME_MACHINE=`(uname -p) 2>/dev/null`
  		echo "$UNAME_MACHINE"-sni-sysv4
  	else
  		echo ns32k-sni-sysv
--- 1273,1279 ----
  	exit ;;
      *:SINIX-*:*:*)
  	if uname -p 2>/dev/null >/dev/null ; then
! 		UNAME_MACHINE=$( (uname -p) 2>/dev/null)
  		echo "$UNAME_MACHINE"-sni-sysv4
  	else
  		echo ns32k-sni-sysv
*************** EOF
*** 1279,1285 ****
  	echo mips-sony-newsos6
  	exit ;;
      R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
! 	if [ -d /usr/nec ]; then
  		echo mips-nec-sysv"$UNAME_RELEASE"
  	else
  		echo mips-unknown-sysv"$UNAME_RELEASE"
--- 1307,1313 ----
  	echo mips-sony-newsos6
  	exit ;;
      R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
! 	if test -d /usr/nec; then
  		echo mips-nec-sysv"$UNAME_RELEASE"
  	else
  		echo mips-unknown-sysv"$UNAME_RELEASE"
*************** EOF
*** 1327,1334 ****
      *:Rhapsody:*:*)
  	echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
  	exit ;;
      *:Darwin:*:*)
! 	UNAME_PROCESSOR=`uname -p`
  	case $UNAME_PROCESSOR in
  	    unknown) UNAME_PROCESSOR=powerpc ;;
  	esac
--- 1355,1365 ----
      *:Rhapsody:*:*)
  	echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
  	exit ;;
+     arm64:Darwin:*:*)
+ 	echo aarch64-apple-darwin"$UNAME_RELEASE"
+ 	exit ;;
      *:Darwin:*:*)
! 	UNAME_PROCESSOR=$(uname -p)
  	case $UNAME_PROCESSOR in
  	    unknown) UNAME_PROCESSOR=powerpc ;;
  	esac
*************** EOF
*** 1341,1347 ****
  	else
  	    set_cc_for_build
  	fi
! 	if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
  	    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
  		   (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
  		   grep IS_64BIT_ARCH >/dev/null
--- 1372,1378 ----
  	else
  	    set_cc_for_build
  	fi
! 	if test "$CC_FOR_BUILD" != no_compiler_found; then
  	    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
  		   (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
  		   grep IS_64BIT_ARCH >/dev/null
*************** EOF
*** 1365,1371 ****
  	echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
  	exit ;;
      *:procnto*:*:* | *:QNX:[0123456789]*:*)
! 	UNAME_PROCESSOR=`uname -p`
  	if test "$UNAME_PROCESSOR" = x86; then
  		UNAME_PROCESSOR=i386
  		UNAME_MACHINE=pc
--- 1396,1402 ----
  	echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
  	exit ;;
      *:procnto*:*:* | *:QNX:[0123456789]*:*)
! 	UNAME_PROCESSOR=$(uname -p)
  	if test "$UNAME_PROCESSOR" = x86; then
  		UNAME_PROCESSOR=i386
  		UNAME_MACHINE=pc
*************** EOF
*** 1433,1442 ****
  	echo mips-sei-seiux"$UNAME_RELEASE"
  	exit ;;
      *:DragonFly:*:*)
! 	echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
  	exit ;;
      *:*VMS:*:*)
! 	UNAME_MACHINE=`(uname -p) 2>/dev/null`
  	case "$UNAME_MACHINE" in
  	    A*) echo alpha-dec-vms ; exit ;;
  	    I*) echo ia64-dec-vms ; exit ;;
--- 1464,1473 ----
  	echo mips-sei-seiux"$UNAME_RELEASE"
  	exit ;;
      *:DragonFly:*:*)
! 	echo "$UNAME_MACHINE"-unknown-dragonfly"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
  	exit ;;
      *:*VMS:*:*)
! 	UNAME_MACHINE=$( (uname -p) 2>/dev/null)
  	case "$UNAME_MACHINE" in
  	    A*) echo alpha-dec-vms ; exit ;;
  	    I*) echo ia64-dec-vms ; exit ;;
*************** EOF
*** 1446,1458 ****
  	echo i386-pc-xenix
  	exit ;;
      i*86:skyos:*:*)
! 	echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
  	exit ;;
      i*86:rdos:*:*)
  	echo "$UNAME_MACHINE"-pc-rdos
  	exit ;;
!     i*86:AROS:*:*)
! 	echo "$UNAME_MACHINE"-pc-aros
  	exit ;;
      x86_64:VMkernel:*:*)
  	echo "$UNAME_MACHINE"-unknown-esx
--- 1477,1489 ----
  	echo i386-pc-xenix
  	exit ;;
      i*86:skyos:*:*)
! 	echo "$UNAME_MACHINE"-pc-skyos"$(echo "$UNAME_RELEASE" | sed -e 's/ .*$//')"
  	exit ;;
      i*86:rdos:*:*)
  	echo "$UNAME_MACHINE"-pc-rdos
  	exit ;;
!     *:AROS:*:*)
! 	echo "$UNAME_MACHINE"-unknown-aros
  	exit ;;
      x86_64:VMkernel:*:*)
  	echo "$UNAME_MACHINE"-unknown-esx
*************** main ()
*** 1504,1510 ****
  #define __ARCHITECTURE__ "m68k"
  #endif
    int version;
!   version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
    if (version < 4)
      printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
    else
--- 1535,1541 ----
  #define __ARCHITECTURE__ "m68k"
  #endif
    int version;
!   version=$( (hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null);
    if (version < 4)
      printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
    else
*************** main ()
*** 1596,1602 ****
  }
  EOF
  
! $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` &&
  	{ echo "$SYSTEM_NAME"; exit; }
  
  # Apollos put the system type in the environment.
--- 1627,1633 ----
  }
  EOF
  
! $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=$($dummy) &&
  	{ echo "$SYSTEM_NAME"; exit; }
  
  # Apollos put the system type in the environment.
*************** This script (version $timestamp), has fa
*** 1621,1629 ****
  operating system you are using. If your script is old, overwrite *all*
  copies of config.guess and config.sub with the latest versions from:
  
!   https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
  and
!   https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
  
  If $0 has already been updated, send the following data and any
  information you think might be pertinent to config-patches@gnu.org to
--- 1652,1666 ----
  operating system you are using. If your script is old, overwrite *all*
  copies of config.guess and config.sub with the latest versions from:
  
!   https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
  and
!   https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
! EOF
! 
! year=$(echo $timestamp | sed 's,-.*,,')
! # shellcheck disable=SC2003
! if test "$(expr "$(date +%Y)" - "$year")" -lt 3 ; then
!    cat >&2 <<EOF
  
  If $0 has already been updated, send the following data and any
  information you think might be pertinent to config-patches@gnu.org to
*************** provide the necessary information to han
*** 1631,1656 ****
  
  config.guess timestamp = $timestamp
  
! uname -m = `(uname -m) 2>/dev/null || echo unknown`
! uname -r = `(uname -r) 2>/dev/null || echo unknown`
! uname -s = `(uname -s) 2>/dev/null || echo unknown`
! uname -v = `(uname -v) 2>/dev/null || echo unknown`
  
! /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
! /bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
  
! hostinfo               = `(hostinfo) 2>/dev/null`
! /bin/universe          = `(/bin/universe) 2>/dev/null`
! /usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
! /bin/arch              = `(/bin/arch) 2>/dev/null`
! /usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
! /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
  
  UNAME_MACHINE = "$UNAME_MACHINE"
  UNAME_RELEASE = "$UNAME_RELEASE"
  UNAME_SYSTEM  = "$UNAME_SYSTEM"
  UNAME_VERSION = "$UNAME_VERSION"
  EOF
  
  exit 1
  
--- 1668,1694 ----
  
  config.guess timestamp = $timestamp
  
! uname -m = $( (uname -m) 2>/dev/null || echo unknown)
! uname -r = $( (uname -r) 2>/dev/null || echo unknown)
! uname -s = $( (uname -s) 2>/dev/null || echo unknown)
! uname -v = $( (uname -v) 2>/dev/null || echo unknown)
  
! /usr/bin/uname -p = $( (/usr/bin/uname -p) 2>/dev/null)
! /bin/uname -X     = $( (/bin/uname -X) 2>/dev/null)
  
! hostinfo               = $( (hostinfo) 2>/dev/null)
! /bin/universe          = $( (/bin/universe) 2>/dev/null)
! /usr/bin/arch -k       = $( (/usr/bin/arch -k) 2>/dev/null)
! /bin/arch              = $( (/bin/arch) 2>/dev/null)
! /usr/bin/oslevel       = $( (/usr/bin/oslevel) 2>/dev/null)
! /usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null)
  
  UNAME_MACHINE = "$UNAME_MACHINE"
  UNAME_RELEASE = "$UNAME_RELEASE"
  UNAME_SYSTEM  = "$UNAME_SYSTEM"
  UNAME_VERSION = "$UNAME_VERSION"
  EOF
+ fi
  
  exit 1
  
diff -Nrcpad gcc-10.3.0/config.sub gcc-11.1.0/config.sub
*** gcc-10.3.0/config.sub	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/config.sub	Tue Apr 27 10:00:12 2021
***************
*** 1,8 ****
  #! /bin/sh
  # Configuration validation subroutine script.
! #   Copyright 1992-2019 Free Software Foundation, Inc.
  
! timestamp='2019-06-30'
  
  # This file is free software; you can redistribute it and/or modify it
  # under the terms of the GNU General Public License as published by
--- 1,8 ----
  #! /bin/sh
  # Configuration validation subroutine script.
! #   Copyright 1992-2021 Free Software Foundation, Inc.
  
! timestamp='2021-01-08'
  
  # This file is free software; you can redistribute it and/or modify it
  # under the terms of the GNU General Public License as published by
*************** timestamp='2019-06-30'
*** 33,39 ****
  # Otherwise, we print the canonical config type on stdout and succeed.
  
  # You can get the latest version of this script from:
! # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
  
  # This file is supposed to be the same for all GNU packages
  # and recognize all the CPU types, system types and aliases
--- 33,39 ----
  # Otherwise, we print the canonical config type on stdout and succeed.
  
  # You can get the latest version of this script from:
! # https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
  
  # This file is supposed to be the same for all GNU packages
  # and recognize all the CPU types, system types and aliases
*************** timestamp='2019-06-30'
*** 50,56 ****
  #	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
  # It is wrong to echo any other type of specification.
  
! me=`echo "$0" | sed -e 's,.*/,,'`
  
  usage="\
  Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
--- 50,56 ----
  #	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
  # It is wrong to echo any other type of specification.
  
! me=$(echo "$0" | sed -e 's,.*/,,')
  
  usage="\
  Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
*************** Report bugs and patches to <config-patch
*** 67,73 ****
  version="\
  GNU config.sub ($timestamp)
  
! Copyright 1992-2019 Free Software Foundation, Inc.
  
  This is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
--- 67,73 ----
  version="\
  GNU config.sub ($timestamp)
  
! Copyright 1992-2021 Free Software Foundation, Inc.
  
  This is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
*************** case $1 in
*** 124,151 ****
  		;;
  	*-*-*-*)
  		basic_machine=$field1-$field2
! 		os=$field3-$field4
  		;;
  	*-*-*)
  		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
  		# parts
  		maybe_os=$field2-$field3
  		case $maybe_os in
! 			nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
! 			| linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
  			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
  			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
  			| storm-chaos* | os2-emx* | rtmk-nova*)
  				basic_machine=$field1
! 				os=$maybe_os
  				;;
  			android-linux)
  				basic_machine=$field1-unknown
! 				os=linux-android
  				;;
  			*)
  				basic_machine=$field1-$field2
! 				os=$field3
  				;;
  		esac
  		;;
--- 124,150 ----
  		;;
  	*-*-*-*)
  		basic_machine=$field1-$field2
! 		basic_os=$field3-$field4
  		;;
  	*-*-*)
  		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
  		# parts
  		maybe_os=$field2-$field3
  		case $maybe_os in
! 			nto-qnx* | linux-* | uclinux-uclibc* \
  			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
  			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
  			| storm-chaos* | os2-emx* | rtmk-nova*)
  				basic_machine=$field1
! 				basic_os=$maybe_os
  				;;
  			android-linux)
  				basic_machine=$field1-unknown
! 				basic_os=linux-android
  				;;
  			*)
  				basic_machine=$field1-$field2
! 				basic_os=$field3
  				;;
  		esac
  		;;
*************** case $1 in
*** 154,160 ****
  		case $field1-$field2 in
  			decstation-3100)
  				basic_machine=mips-dec
! 				os=
  				;;
  			*-*)
  				# Second component is usually, but not always the OS
--- 153,159 ----
  		case $field1-$field2 in
  			decstation-3100)
  				basic_machine=mips-dec
! 				basic_os=
  				;;
  			*-*)
  				# Second component is usually, but not always the OS
*************** case $1 in
*** 162,168 ****
  					# Prevent following clause from handling this valid os
  					sun*os*)
  						basic_machine=$field1
! 						os=$field2
  						;;
  					# Manufacturers
  					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
--- 161,167 ----
  					# Prevent following clause from handling this valid os
  					sun*os*)
  						basic_machine=$field1
! 						basic_os=$field2
  						;;
  					# Manufacturers
  					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
*************** case $1 in
*** 175,185 ****
  					| microblaze* | sim | cisco \
  					| oki | wec | wrs | winbond)
  						basic_machine=$field1-$field2
! 						os=
  						;;
  					*)
  						basic_machine=$field1
! 						os=$field2
  						;;
  				esac
  			;;
--- 174,184 ----
  					| microblaze* | sim | cisco \
  					| oki | wec | wrs | winbond)
  						basic_machine=$field1-$field2
! 						basic_os=
  						;;
  					*)
  						basic_machine=$field1
! 						basic_os=$field2
  						;;
  				esac
  			;;
*************** case $1 in
*** 191,637 ****
  		case $field1 in
  			386bsd)
  				basic_machine=i386-pc
! 				os=bsd
  				;;
  			a29khif)
  				basic_machine=a29k-amd
! 				os=udi
  				;;
  			adobe68k)
  				basic_machine=m68010-adobe
! 				os=scout
  				;;
  			alliant)
  				basic_machine=fx80-alliant
! 				os=
  				;;
  			altos | altos3068)
  				basic_machine=m68k-altos
! 				os=
  				;;
  			am29k)
  				basic_machine=a29k-none
! 				os=bsd
  				;;
  			amdahl)
  				basic_machine=580-amdahl
! 				os=sysv
  				;;
  			amiga)
  				basic_machine=m68k-unknown
! 				os=
  				;;
  			amigaos | amigados)
  				basic_machine=m68k-unknown
! 				os=amigaos
  				;;
  			amigaunix | amix)
  				basic_machine=m68k-unknown
! 				os=sysv4
  				;;
  			apollo68)
  				basic_machine=m68k-apollo
! 				os=sysv
  				;;
  			apollo68bsd)
  				basic_machine=m68k-apollo
! 				os=bsd
  				;;
  			aros)
  				basic_machine=i386-pc
! 				os=aros
  				;;
  			aux)
  				basic_machine=m68k-apple
! 				os=aux
  				;;
  			balance)
  				basic_machine=ns32k-sequent
! 				os=dynix
  				;;
  			blackfin)
  				basic_machine=bfin-unknown
! 				os=linux
  				;;
  			cegcc)
  				basic_machine=arm-unknown
! 				os=cegcc
  				;;
  			convex-c1)
  				basic_machine=c1-convex
! 				os=bsd
  				;;
  			convex-c2)
  				basic_machine=c2-convex
! 				os=bsd
  				;;
  			convex-c32)
  				basic_machine=c32-convex
! 				os=bsd
  				;;
  			convex-c34)
  				basic_machine=c34-convex
! 				os=bsd
  				;;
  			convex-c38)
  				basic_machine=c38-convex
! 				os=bsd
  				;;
  			cray)
  				basic_machine=j90-cray
! 				os=unicos
  				;;
  			crds | unos)
  				basic_machine=m68k-crds
! 				os=
  				;;
  			da30)
  				basic_machine=m68k-da30
! 				os=
  				;;
  			decstation | pmax | pmin | dec3100 | decstatn)
  				basic_machine=mips-dec
! 				os=
  				;;
  			delta88)
  				basic_machine=m88k-motorola
! 				os=sysv3
  				;;
  			dicos)
  				basic_machine=i686-pc
! 				os=dicos
  				;;
  			djgpp)
  				basic_machine=i586-pc
! 				os=msdosdjgpp
  				;;
  			ebmon29k)
  				basic_machine=a29k-amd
! 				os=ebmon
  				;;
  			es1800 | OSE68k | ose68k | ose | OSE)
  				basic_machine=m68k-ericsson
! 				os=ose
  				;;
  			gmicro)
  				basic_machine=tron-gmicro
! 				os=sysv
  				;;
  			go32)
  				basic_machine=i386-pc
! 				os=go32
  				;;
  			h8300hms)
  				basic_machine=h8300-hitachi
! 				os=hms
  				;;
  			h8300xray)
  				basic_machine=h8300-hitachi
! 				os=xray
  				;;
  			h8500hms)
  				basic_machine=h8500-hitachi
! 				os=hms
  				;;
  			harris)
  				basic_machine=m88k-harris
! 				os=sysv3
  				;;
  			hp300 | hp300hpux)
  				basic_machine=m68k-hp
! 				os=hpux
  				;;
  			hp300bsd)
  				basic_machine=m68k-hp
! 				os=bsd
  				;;
  			hppaosf)
  				basic_machine=hppa1.1-hp
! 				os=osf
  				;;
  			hppro)
  				basic_machine=hppa1.1-hp
! 				os=proelf
  				;;
  			i386mach)
  				basic_machine=i386-mach
! 				os=mach
  				;;
  			isi68 | isi)
  				basic_machine=m68k-isi
! 				os=sysv
  				;;
  			m68knommu)
  				basic_machine=m68k-unknown
! 				os=linux
  				;;
  			magnum | m3230)
  				basic_machine=mips-mips
! 				os=sysv
  				;;
  			merlin)
  				basic_machine=ns32k-utek
! 				os=sysv
  				;;
  			mingw64)
  				basic_machine=x86_64-pc
! 				os=mingw64
  				;;
  			mingw32)
  				basic_machine=i686-pc
! 				os=mingw32
  				;;
  			mingw32ce)
  				basic_machine=arm-unknown
! 				os=mingw32ce
  				;;
  			monitor)
  				basic_machine=m68k-rom68k
! 				os=coff
  				;;
  			morphos)
  				basic_machine=powerpc-unknown
! 				os=morphos
  				;;
  			moxiebox)
  				basic_machine=moxie-unknown
! 				os=moxiebox
  				;;
  			msdos)
  				basic_machine=i386-pc
! 				os=msdos
  				;;
  			msys)
  				basic_machine=i686-pc
! 				os=msys
  				;;
  			mvs)
  				basic_machine=i370-ibm
! 				os=mvs
  				;;
  			nacl)
  				basic_machine=le32-unknown
! 				os=nacl
  				;;
  			ncr3000)
  				basic_machine=i486-ncr
! 				os=sysv4
  				;;
  			netbsd386)
  				basic_machine=i386-pc
! 				os=netbsd
  				;;
  			netwinder)
  				basic_machine=armv4l-rebel
! 				os=linux
  				;;
  			news | news700 | news800 | news900)
  				basic_machine=m68k-sony
! 				os=newsos
  				;;
  			news1000)
  				basic_machine=m68030-sony
! 				os=newsos
  				;;
  			necv70)
  				basic_machine=v70-nec
! 				os=sysv
  				;;
  			nh3000)
  				basic_machine=m68k-harris
! 				os=cxux
  				;;
  			nh[45]000)
  				basic_machine=m88k-harris
! 				os=cxux
  				;;
  			nindy960)
  				basic_machine=i960-intel
! 				os=nindy
  				;;
  			mon960)
  				basic_machine=i960-intel
! 				os=mon960
  				;;
  			nonstopux)
  				basic_machine=mips-compaq
! 				os=nonstopux
  				;;
  			os400)
  				basic_machine=powerpc-ibm
! 				os=os400
  				;;
  			OSE68000 | ose68000)
  				basic_machine=m68000-ericsson
! 				os=ose
  				;;
  			os68k)
  				basic_machine=m68k-none
! 				os=os68k
  				;;
  			paragon)
  				basic_machine=i860-intel
! 				os=osf
  				;;
  			parisc)
  				basic_machine=hppa-unknown
! 				os=linux
  				;;
  			pw32)
  				basic_machine=i586-unknown
! 				os=pw32
  				;;
  			rdos | rdos64)
  				basic_machine=x86_64-pc
! 				os=rdos
  				;;
  			rdos32)
  				basic_machine=i386-pc
! 				os=rdos
  				;;
  			rom68k)
  				basic_machine=m68k-rom68k
! 				os=coff
  				;;
  			sa29200)
  				basic_machine=a29k-amd
! 				os=udi
  				;;
  			sei)
  				basic_machine=mips-sei
! 				os=seiux
  				;;
  			sequent)
  				basic_machine=i386-sequent
! 				os=
  				;;
  			sps7)
  				basic_machine=m68k-bull
! 				os=sysv2
  				;;
  			st2000)
  				basic_machine=m68k-tandem
! 				os=
  				;;
  			stratus)
  				basic_machine=i860-stratus
! 				os=sysv4
  				;;
  			sun2)
  				basic_machine=m68000-sun
! 				os=
  				;;
  			sun2os3)
  				basic_machine=m68000-sun
! 				os=sunos3
  				;;
  			sun2os4)
  				basic_machine=m68000-sun
! 				os=sunos4
  				;;
  			sun3)
  				basic_machine=m68k-sun
! 				os=
  				;;
  			sun3os3)
  				basic_machine=m68k-sun
! 				os=sunos3
  				;;
  			sun3os4)
  				basic_machine=m68k-sun
! 				os=sunos4
  				;;
  			sun4)
  				basic_machine=sparc-sun
! 				os=
  				;;
  			sun4os3)
  				basic_machine=sparc-sun
! 				os=sunos3
  				;;
  			sun4os4)
  				basic_machine=sparc-sun
! 				os=sunos4
  				;;
  			sun4sol2)
  				basic_machine=sparc-sun
! 				os=solaris2
  				;;
  			sun386 | sun386i | roadrunner)
  				basic_machine=i386-sun
! 				os=
  				;;
  			sv1)
  				basic_machine=sv1-cray
! 				os=unicos
  				;;
  			symmetry)
  				basic_machine=i386-sequent
! 				os=dynix
  				;;
  			t3e)
  				basic_machine=alphaev5-cray
! 				os=unicos
  				;;
  			t90)
  				basic_machine=t90-cray
! 				os=unicos
  				;;
  			toad1)
  				basic_machine=pdp10-xkl
! 				os=tops20
  				;;
  			tpf)
  				basic_machine=s390x-ibm
! 				os=tpf
  				;;
  			udi29k)
  				basic_machine=a29k-amd
! 				os=udi
  				;;
  			ultra3)
  				basic_machine=a29k-nyu
! 				os=sym1
  				;;
  			v810 | necv810)
  				basic_machine=v810-nec
! 				os=none
  				;;
  			vaxv)
  				basic_machine=vax-dec
! 				os=sysv
  				;;
  			vms)
  				basic_machine=vax-dec
! 				os=vms
  				;;
  			vsta)
  				basic_machine=i386-pc
! 				os=vsta
  				;;
  			vxworks960)
  				basic_machine=i960-wrs
! 				os=vxworks
  				;;
  			vxworks68)
  				basic_machine=m68k-wrs
! 				os=vxworks
  				;;
  			vxworks29k)
  				basic_machine=a29k-wrs
! 				os=vxworks
  				;;
  			xbox)
  				basic_machine=i686-pc
! 				os=mingw32
  				;;
  			ymp)
  				basic_machine=ymp-cray
! 				os=unicos
  				;;
  			*)
  				basic_machine=$1
! 				os=
  				;;
  		esac
  		;;
--- 190,640 ----
  		case $field1 in
  			386bsd)
  				basic_machine=i386-pc
! 				basic_os=bsd
  				;;
  			a29khif)
  				basic_machine=a29k-amd
! 				basic_os=udi
  				;;
  			adobe68k)
  				basic_machine=m68010-adobe
! 				basic_os=scout
  				;;
  			alliant)
  				basic_machine=fx80-alliant
! 				basic_os=
  				;;
  			altos | altos3068)
  				basic_machine=m68k-altos
! 				basic_os=
  				;;
  			am29k)
  				basic_machine=a29k-none
! 				basic_os=bsd
  				;;
  			amdahl)
  				basic_machine=580-amdahl
! 				basic_os=sysv
  				;;
  			amiga)
  				basic_machine=m68k-unknown
! 				basic_os=
  				;;
  			amigaos | amigados)
  				basic_machine=m68k-unknown
! 				basic_os=amigaos
  				;;
  			amigaunix | amix)
  				basic_machine=m68k-unknown
! 				basic_os=sysv4
  				;;
  			apollo68)
  				basic_machine=m68k-apollo
! 				basic_os=sysv
  				;;
  			apollo68bsd)
  				basic_machine=m68k-apollo
! 				basic_os=bsd
  				;;
  			aros)
  				basic_machine=i386-pc
! 				basic_os=aros
  				;;
  			aux)
  				basic_machine=m68k-apple
! 				basic_os=aux
  				;;
  			balance)
  				basic_machine=ns32k-sequent
! 				basic_os=dynix
  				;;
  			blackfin)
  				basic_machine=bfin-unknown
! 				basic_os=linux
  				;;
  			cegcc)
  				basic_machine=arm-unknown
! 				basic_os=cegcc
  				;;
  			convex-c1)
  				basic_machine=c1-convex
! 				basic_os=bsd
  				;;
  			convex-c2)
  				basic_machine=c2-convex
! 				basic_os=bsd
  				;;
  			convex-c32)
  				basic_machine=c32-convex
! 				basic_os=bsd
  				;;
  			convex-c34)
  				basic_machine=c34-convex
! 				basic_os=bsd
  				;;
  			convex-c38)
  				basic_machine=c38-convex
! 				basic_os=bsd
  				;;
  			cray)
  				basic_machine=j90-cray
! 				basic_os=unicos
  				;;
  			crds | unos)
  				basic_machine=m68k-crds
! 				basic_os=
  				;;
  			da30)
  				basic_machine=m68k-da30
! 				basic_os=
  				;;
  			decstation | pmax | pmin | dec3100 | decstatn)
  				basic_machine=mips-dec
! 				basic_os=
  				;;
  			delta88)
  				basic_machine=m88k-motorola
! 				basic_os=sysv3
  				;;
  			dicos)
  				basic_machine=i686-pc
! 				basic_os=dicos
  				;;
  			djgpp)
  				basic_machine=i586-pc
! 				basic_os=msdosdjgpp
  				;;
  			ebmon29k)
  				basic_machine=a29k-amd
! 				basic_os=ebmon
  				;;
  			es1800 | OSE68k | ose68k | ose | OSE)
  				basic_machine=m68k-ericsson
! 				basic_os=ose
  				;;
  			gmicro)
  				basic_machine=tron-gmicro
! 				basic_os=sysv
  				;;
  			go32)
  				basic_machine=i386-pc
! 				basic_os=go32
  				;;
  			h8300hms)
  				basic_machine=h8300-hitachi
! 				basic_os=hms
  				;;
  			h8300xray)
  				basic_machine=h8300-hitachi
! 				basic_os=xray
  				;;
  			h8500hms)
  				basic_machine=h8500-hitachi
! 				basic_os=hms
  				;;
  			harris)
  				basic_machine=m88k-harris
! 				basic_os=sysv3
  				;;
  			hp300 | hp300hpux)
  				basic_machine=m68k-hp
! 				basic_os=hpux
  				;;
  			hp300bsd)
  				basic_machine=m68k-hp
! 				basic_os=bsd
  				;;
  			hppaosf)
  				basic_machine=hppa1.1-hp
! 				basic_os=osf
  				;;
  			hppro)
  				basic_machine=hppa1.1-hp
! 				basic_os=proelf
  				;;
  			i386mach)
  				basic_machine=i386-mach
! 				basic_os=mach
  				;;
  			isi68 | isi)
  				basic_machine=m68k-isi
! 				basic_os=sysv
  				;;
  			m68knommu)
  				basic_machine=m68k-unknown
! 				basic_os=linux
  				;;
  			magnum | m3230)
  				basic_machine=mips-mips
! 				basic_os=sysv
  				;;
  			merlin)
  				basic_machine=ns32k-utek
! 				basic_os=sysv
  				;;
  			mingw64)
  				basic_machine=x86_64-pc
! 				basic_os=mingw64
  				;;
  			mingw32)
  				basic_machine=i686-pc
! 				basic_os=mingw32
  				;;
  			mingw32ce)
  				basic_machine=arm-unknown
! 				basic_os=mingw32ce
  				;;
  			monitor)
  				basic_machine=m68k-rom68k
! 				basic_os=coff
  				;;
  			morphos)
  				basic_machine=powerpc-unknown
! 				basic_os=morphos
  				;;
  			moxiebox)
  				basic_machine=moxie-unknown
! 				basic_os=moxiebox
  				;;
  			msdos)
  				basic_machine=i386-pc
! 				basic_os=msdos
  				;;
  			msys)
  				basic_machine=i686-pc
! 				basic_os=msys
  				;;
  			mvs)
  				basic_machine=i370-ibm
! 				basic_os=mvs
  				;;
  			nacl)
  				basic_machine=le32-unknown
! 				basic_os=nacl
  				;;
  			ncr3000)
  				basic_machine=i486-ncr
! 				basic_os=sysv4
  				;;
  			netbsd386)
  				basic_machine=i386-pc
! 				basic_os=netbsd
  				;;
  			netwinder)
  				basic_machine=armv4l-rebel
! 				basic_os=linux
  				;;
  			news | news700 | news800 | news900)
  				basic_machine=m68k-sony
! 				basic_os=newsos
  				;;
  			news1000)
  				basic_machine=m68030-sony
! 				basic_os=newsos
  				;;
  			necv70)
  				basic_machine=v70-nec
! 				basic_os=sysv
  				;;
  			nh3000)
  				basic_machine=m68k-harris
! 				basic_os=cxux
  				;;
  			nh[45]000)
  				basic_machine=m88k-harris
! 				basic_os=cxux
  				;;
  			nindy960)
  				basic_machine=i960-intel
! 				basic_os=nindy
  				;;
  			mon960)
  				basic_machine=i960-intel
! 				basic_os=mon960
  				;;
  			nonstopux)
  				basic_machine=mips-compaq
! 				basic_os=nonstopux
  				;;
  			os400)
  				basic_machine=powerpc-ibm
! 				basic_os=os400
  				;;
  			OSE68000 | ose68000)
  				basic_machine=m68000-ericsson
! 				basic_os=ose
  				;;
  			os68k)
  				basic_machine=m68k-none
! 				basic_os=os68k
  				;;
  			paragon)
  				basic_machine=i860-intel
! 				basic_os=osf
  				;;
  			parisc)
  				basic_machine=hppa-unknown
! 				basic_os=linux
! 				;;
! 			psp)
! 				basic_machine=mipsallegrexel-sony
! 				basic_os=psp
  				;;
  			pw32)
  				basic_machine=i586-unknown
! 				basic_os=pw32
  				;;
  			rdos | rdos64)
  				basic_machine=x86_64-pc
! 				basic_os=rdos
  				;;
  			rdos32)
  				basic_machine=i386-pc
! 				basic_os=rdos
  				;;
  			rom68k)
  				basic_machine=m68k-rom68k
! 				basic_os=coff
  				;;
  			sa29200)
  				basic_machine=a29k-amd
! 				basic_os=udi
  				;;
  			sei)
  				basic_machine=mips-sei
! 				basic_os=seiux
  				;;
  			sequent)
  				basic_machine=i386-sequent
! 				basic_os=
  				;;
  			sps7)
  				basic_machine=m68k-bull
! 				basic_os=sysv2
  				;;
  			st2000)
  				basic_machine=m68k-tandem
! 				basic_os=
  				;;
  			stratus)
  				basic_machine=i860-stratus
! 				basic_os=sysv4
  				;;
  			sun2)
  				basic_machine=m68000-sun
! 				basic_os=
  				;;
  			sun2os3)
  				basic_machine=m68000-sun
! 				basic_os=sunos3
  				;;
  			sun2os4)
  				basic_machine=m68000-sun
! 				basic_os=sunos4
  				;;
  			sun3)
  				basic_machine=m68k-sun
! 				basic_os=
  				;;
  			sun3os3)
  				basic_machine=m68k-sun
! 				basic_os=sunos3
  				;;
  			sun3os4)
  				basic_machine=m68k-sun
! 				basic_os=sunos4
  				;;
  			sun4)
  				basic_machine=sparc-sun
! 				basic_os=
  				;;
  			sun4os3)
  				basic_machine=sparc-sun
! 				basic_os=sunos3
  				;;
  			sun4os4)
  				basic_machine=sparc-sun
! 				basic_os=sunos4
  				;;
  			sun4sol2)
  				basic_machine=sparc-sun
! 				basic_os=solaris2
  				;;
  			sun386 | sun386i | roadrunner)
  				basic_machine=i386-sun
! 				basic_os=
  				;;
  			sv1)
  				basic_machine=sv1-cray
! 				basic_os=unicos
  				;;
  			symmetry)
  				basic_machine=i386-sequent
! 				basic_os=dynix
  				;;
  			t3e)
  				basic_machine=alphaev5-cray
! 				basic_os=unicos
  				;;
  			t90)
  				basic_machine=t90-cray
! 				basic_os=unicos
  				;;
  			toad1)
  				basic_machine=pdp10-xkl
! 				basic_os=tops20
  				;;
  			tpf)
  				basic_machine=s390x-ibm
! 				basic_os=tpf
  				;;
  			udi29k)
  				basic_machine=a29k-amd
! 				basic_os=udi
  				;;
  			ultra3)
  				basic_machine=a29k-nyu
! 				basic_os=sym1
  				;;
  			v810 | necv810)
  				basic_machine=v810-nec
! 				basic_os=none
  				;;
  			vaxv)
  				basic_machine=vax-dec
! 				basic_os=sysv
  				;;
  			vms)
  				basic_machine=vax-dec
! 				basic_os=vms
  				;;
  			vsta)
  				basic_machine=i386-pc
! 				basic_os=vsta
  				;;
  			vxworks960)
  				basic_machine=i960-wrs
! 				basic_os=vxworks
  				;;
  			vxworks68)
  				basic_machine=m68k-wrs
! 				basic_os=vxworks
  				;;
  			vxworks29k)
  				basic_machine=a29k-wrs
! 				basic_os=vxworks
  				;;
  			xbox)
  				basic_machine=i686-pc
! 				basic_os=mingw32
  				;;
  			ymp)
  				basic_machine=ymp-cray
! 				basic_os=unicos
  				;;
  			*)
  				basic_machine=$1
! 				basic_os=
  				;;
  		esac
  		;;
*************** case $basic_machine in
*** 683,699 ****
  	bluegene*)
  		cpu=powerpc
  		vendor=ibm
! 		os=cnk
  		;;
  	decsystem10* | dec10*)
  		cpu=pdp10
  		vendor=dec
! 		os=tops10
  		;;
  	decsystem20* | dec20*)
  		cpu=pdp10
  		vendor=dec
! 		os=tops20
  		;;
  	delta | 3300 | motorola-3300 | motorola-delta \
  	      | 3300-motorola | delta-motorola)
--- 686,702 ----
  	bluegene*)
  		cpu=powerpc
  		vendor=ibm
! 		basic_os=cnk
  		;;
  	decsystem10* | dec10*)
  		cpu=pdp10
  		vendor=dec
! 		basic_os=tops10
  		;;
  	decsystem20* | dec20*)
  		cpu=pdp10
  		vendor=dec
! 		basic_os=tops20
  		;;
  	delta | 3300 | motorola-3300 | motorola-delta \
  	      | 3300-motorola | delta-motorola)
*************** case $basic_machine in
*** 703,709 ****
  	dpx2*)
  		cpu=m68k
  		vendor=bull
! 		os=sysv3
  		;;
  	encore | umax | mmax)
  		cpu=ns32k
--- 706,712 ----
  	dpx2*)
  		cpu=m68k
  		vendor=bull
! 		basic_os=sysv3
  		;;
  	encore | umax | mmax)
  		cpu=ns32k
*************** case $basic_machine in
*** 712,718 ****
  	elxsi)
  		cpu=elxsi
  		vendor=elxsi
! 		os=${os:-bsd}
  		;;
  	fx2800)
  		cpu=i860
--- 715,721 ----
  	elxsi)
  		cpu=elxsi
  		vendor=elxsi
! 		basic_os=${basic_os:-bsd}
  		;;
  	fx2800)
  		cpu=i860
*************** case $basic_machine in
*** 725,731 ****
  	h3050r* | hiux*)
  		cpu=hppa1.1
  		vendor=hitachi
! 		os=hiuxwe2
  		;;
  	hp3k9[0-9][0-9] | hp9[0-9][0-9])
  		cpu=hppa1.0
--- 728,734 ----
  	h3050r* | hiux*)
  		cpu=hppa1.1
  		vendor=hitachi
! 		basic_os=hiuxwe2
  		;;
  	hp3k9[0-9][0-9] | hp9[0-9][0-9])
  		cpu=hppa1.0
*************** case $basic_machine in
*** 766,803 ****
  		vendor=hp
  		;;
  	i*86v32)
! 		cpu=`echo "$1" | sed -e 's/86.*/86/'`
  		vendor=pc
! 		os=sysv32
  		;;
  	i*86v4*)
! 		cpu=`echo "$1" | sed -e 's/86.*/86/'`
  		vendor=pc
! 		os=sysv4
  		;;
  	i*86v)
! 		cpu=`echo "$1" | sed -e 's/86.*/86/'`
  		vendor=pc
! 		os=sysv
  		;;
  	i*86sol2)
! 		cpu=`echo "$1" | sed -e 's/86.*/86/'`
  		vendor=pc
! 		os=solaris2
  		;;
  	j90 | j90-cray)
  		cpu=j90
  		vendor=cray
! 		os=${os:-unicos}
  		;;
  	iris | iris4d)
  		cpu=mips
  		vendor=sgi
! 		case $os in
  		    irix*)
  			;;
  		    *)
! 			os=irix4
  			;;
  		esac
  		;;
--- 769,806 ----
  		vendor=hp
  		;;
  	i*86v32)
! 		cpu=$(echo "$1" | sed -e 's/86.*/86/')
  		vendor=pc
! 		basic_os=sysv32
  		;;
  	i*86v4*)
! 		cpu=$(echo "$1" | sed -e 's/86.*/86/')
  		vendor=pc
! 		basic_os=sysv4
  		;;
  	i*86v)
! 		cpu=$(echo "$1" | sed -e 's/86.*/86/')
  		vendor=pc
! 		basic_os=sysv
  		;;
  	i*86sol2)
! 		cpu=$(echo "$1" | sed -e 's/86.*/86/')
  		vendor=pc
! 		basic_os=solaris2
  		;;
  	j90 | j90-cray)
  		cpu=j90
  		vendor=cray
! 		basic_os=${basic_os:-unicos}
  		;;
  	iris | iris4d)
  		cpu=mips
  		vendor=sgi
! 		case $basic_os in
  		    irix*)
  			;;
  		    *)
! 			basic_os=irix4
  			;;
  		esac
  		;;
*************** case $basic_machine in
*** 808,833 ****
  	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
  		cpu=m68k
  		vendor=atari
! 		os=mint
  		;;
  	news-3600 | risc-news)
  		cpu=mips
  		vendor=sony
! 		os=newsos
  		;;
  	next | m*-next)
  		cpu=m68k
  		vendor=next
! 		case $os in
  		    openstep*)
  		        ;;
  		    nextstep*)
  			;;
  		    ns2*)
! 		      os=nextstep2
  			;;
  		    *)
! 		      os=nextstep3
  			;;
  		esac
  		;;
--- 811,836 ----
  	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
  		cpu=m68k
  		vendor=atari
! 		basic_os=mint
  		;;
  	news-3600 | risc-news)
  		cpu=mips
  		vendor=sony
! 		basic_os=newsos
  		;;
  	next | m*-next)
  		cpu=m68k
  		vendor=next
! 		case $basic_os in
  		    openstep*)
  		        ;;
  		    nextstep*)
  			;;
  		    ns2*)
! 		      basic_os=nextstep2
  			;;
  		    *)
! 		      basic_os=nextstep3
  			;;
  		esac
  		;;
*************** case $basic_machine in
*** 838,849 ****
  	op50n-* | op60c-*)
  		cpu=hppa1.1
  		vendor=oki
! 		os=proelf
  		;;
  	pa-hitachi)
  		cpu=hppa1.1
  		vendor=hitachi
! 		os=hiuxwe2
  		;;
  	pbd)
  		cpu=sparc
--- 841,852 ----
  	op50n-* | op60c-*)
  		cpu=hppa1.1
  		vendor=oki
! 		basic_os=proelf
  		;;
  	pa-hitachi)
  		cpu=hppa1.1
  		vendor=hitachi
! 		basic_os=hiuxwe2
  		;;
  	pbd)
  		cpu=sparc
*************** case $basic_machine in
*** 880,891 ****
  	sde)
  		cpu=mipsisa32
  		vendor=sde
! 		os=${os:-elf}
  		;;
  	simso-wrs)
  		cpu=sparclite
  		vendor=wrs
! 		os=vxworks
  		;;
  	tower | tower-32)
  		cpu=m68k
--- 883,894 ----
  	sde)
  		cpu=mipsisa32
  		vendor=sde
! 		basic_os=${basic_os:-elf}
  		;;
  	simso-wrs)
  		cpu=sparclite
  		vendor=wrs
! 		basic_os=vxworks
  		;;
  	tower | tower-32)
  		cpu=m68k
*************** case $basic_machine in
*** 902,908 ****
  	w89k-*)
  		cpu=hppa1.1
  		vendor=winbond
! 		os=proelf
  		;;
  	none)
  		cpu=none
--- 905,911 ----
  	w89k-*)
  		cpu=hppa1.1
  		vendor=winbond
! 		basic_os=proelf
  		;;
  	none)
  		cpu=none
*************** case $basic_machine in
*** 914,920 ****
  		;;
  	leon-*|leon[3-9]-*)
  		cpu=sparc
! 		vendor=`echo "$basic_machine" | sed 's/-.*//'`
  		;;
  
  	*-*)
--- 917,923 ----
  		;;
  	leon-*|leon[3-9]-*)
  		cpu=sparc
! 		vendor=$(echo "$basic_machine" | sed 's/-.*//')
  		;;
  
  	*-*)
*************** case $cpu-$vendor in
*** 955,965 ****
  	# some cases the only manufacturer, in others, it is the most popular.
  	craynv-unknown)
  		vendor=cray
! 		os=${os:-unicosmp}
  		;;
  	c90-unknown | c90-cray)
  		vendor=cray
! 		os=${os:-unicos}
  		;;
  	fx80-unknown)
  		vendor=alliant
--- 958,968 ----
  	# some cases the only manufacturer, in others, it is the most popular.
  	craynv-unknown)
  		vendor=cray
! 		basic_os=${basic_os:-unicosmp}
  		;;
  	c90-unknown | c90-cray)
  		vendor=cray
! 		basic_os=${Basic_os:-unicos}
  		;;
  	fx80-unknown)
  		vendor=alliant
*************** case $cpu-$vendor in
*** 1003,1009 ****
  	dpx20-unknown | dpx20-bull)
  		cpu=rs6000
  		vendor=bull
! 		os=${os:-bosx}
  		;;
  
  	# Here we normalize CPU types irrespective of the vendor
--- 1006,1012 ----
  	dpx20-unknown | dpx20-bull)
  		cpu=rs6000
  		vendor=bull
! 		basic_os=${basic_os:-bosx}
  		;;
  
  	# Here we normalize CPU types irrespective of the vendor
*************** case $cpu-$vendor in
*** 1012,1018 ****
  		;;
  	blackfin-*)
  		cpu=bfin
! 		os=linux
  		;;
  	c54x-*)
  		cpu=tic54x
--- 1015,1021 ----
  		;;
  	blackfin-*)
  		cpu=bfin
! 		basic_os=linux
  		;;
  	c54x-*)
  		cpu=tic54x
*************** case $cpu-$vendor in
*** 1025,1031 ****
  		;;
  	e500v[12]-*)
  		cpu=powerpc
! 		os=$os"spe"
  		;;
  	mips3*-*)
  		cpu=mips64
--- 1028,1034 ----
  		;;
  	e500v[12]-*)
  		cpu=powerpc
! 		basic_os=${basic_os}"spe"
  		;;
  	mips3*-*)
  		cpu=mips64
*************** case $cpu-$vendor in
*** 1035,1041 ****
  		;;
  	m68knommu-*)
  		cpu=m68k
! 		os=linux
  		;;
  	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
  		cpu=s12z
--- 1038,1044 ----
  		;;
  	m68knommu-*)
  		cpu=m68k
! 		basic_os=linux
  		;;
  	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
  		cpu=s12z
*************** case $cpu-$vendor in
*** 1045,1051 ****
  		;;
  	parisc-*)
  		cpu=hppa
! 		os=linux
  		;;
  	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
  		cpu=i586
--- 1048,1054 ----
  		;;
  	parisc-*)
  		cpu=hppa
! 		basic_os=linux
  		;;
  	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
  		cpu=i586
*************** case $cpu-$vendor in
*** 1081,1087 ****
  		cpu=mipsisa64sb1el
  		;;
  	sh5e[lb]-*)
! 		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
  		;;
  	spur-*)
  		cpu=spur
--- 1084,1090 ----
  		cpu=mipsisa64sb1el
  		;;
  	sh5e[lb]-*)
! 		cpu=$(echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/')
  		;;
  	spur-*)
  		cpu=spur
*************** case $cpu-$vendor in
*** 1099,1111 ****
  		cpu=x86_64
  		;;
  	xscale-* | xscalee[bl]-*)
! 		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
  		;;
  
  	# Recognize the canonical CPU Types that limit and/or modify the
  	# company names they are paired with.
  	cr16-*)
! 		os=${os:-elf}
  		;;
  	crisv32-* | etraxfs*-*)
  		cpu=crisv32
--- 1102,1117 ----
  		cpu=x86_64
  		;;
  	xscale-* | xscalee[bl]-*)
! 		cpu=$(echo "$cpu" | sed 's/^xscale/arm/')
! 		;;
! 	arm64-*)
! 		cpu=aarch64
  		;;
  
  	# Recognize the canonical CPU Types that limit and/or modify the
  	# company names they are paired with.
  	cr16-*)
! 		basic_os=${basic_os:-elf}
  		;;
  	crisv32-* | etraxfs*-*)
  		cpu=crisv32
*************** case $cpu-$vendor in
*** 1116,1122 ****
  		vendor=axis
  		;;
  	crx-*)
! 		os=${os:-elf}
  		;;
  	neo-tandem)
  		cpu=neo
--- 1122,1128 ----
  		vendor=axis
  		;;
  	crx-*)
! 		basic_os=${basic_os:-elf}
  		;;
  	neo-tandem)
  		cpu=neo
*************** case $cpu-$vendor in
*** 1138,1153 ****
  		cpu=nsx
  		vendor=tandem
  		;;
! 	s390-*)
! 		cpu=s390
! 		vendor=ibm
! 		;;
! 	s390x-*)
! 		cpu=s390x
! 		vendor=ibm
  		;;
  	tile*-*)
! 		os=${os:-linux-gnu}
  		;;
  
  	*)
--- 1144,1155 ----
  		cpu=nsx
  		vendor=tandem
  		;;
! 	mipsallegrexel-sony)
! 		cpu=mipsallegrexel
! 		vendor=sony
  		;;
  	tile*-*)
! 		basic_os=${basic_os:-linux-gnu}
  		;;
  
  	*)
*************** case $cpu-$vendor in
*** 1164,1170 ****
  			| am33_2.0 \
  			| amdgcn \
  			| arc | arceb \
! 			| arm  | arm[lb]e | arme[lb] | armv* \
  			| avr | avr32 \
  			| asmjs \
  			| ba \
--- 1166,1172 ----
  			| am33_2.0 \
  			| amdgcn \
  			| arc | arceb \
! 			| arm | arm[lb]e | arme[lb] | armv* \
  			| avr | avr32 \
  			| asmjs \
  			| ba \
*************** case $cpu-$vendor in
*** 1183,1188 ****
--- 1185,1191 ----
  			| k1om \
  			| le32 | le64 \
  			| lm32 \
+ 			| loongarch32 | loongarch64 | loongarchx32 \
  			| m32c | m32r | m32rle \
  			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
  			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
*************** case $cpu-$vendor in
*** 1227,1234 ****
  			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
  			| pru \
  			| pyramid \
! 			| riscv | riscv32 | riscv64 \
  			| rl78 | romp | rs6000 | rx \
  			| score \
  			| sh | shl \
  			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
--- 1230,1238 ----
  			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
  			| pru \
  			| pyramid \
! 			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
  			| rl78 | romp | rs6000 | rx \
+ 			| s390 | s390x \
  			| score \
  			| sh | shl \
  			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
*************** case $cpu-$vendor in
*** 1238,1243 ****
--- 1242,1248 ----
  			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
  			| spu \
  			| tahoe \
+ 			| thumbv7* \
  			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
  			| tron \
  			| ubicom32 \
*************** esac
*** 1275,1282 ****
  
  # Decode manufacturer-specific aliases for certain operating systems.
  
! if [ x$os != x ]
  then
  case $os in
  	# First match some system type aliases that might get confused
  	# with valid system types.
--- 1280,1326 ----
  
  # Decode manufacturer-specific aliases for certain operating systems.
  
! if test x$basic_os != x
  then
+ 
+ # First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
+ # set os.
+ case $basic_os in
+ 	gnu/linux*)
+ 		kernel=linux
+ 		os=$(echo $basic_os | sed -e 's|gnu/linux|gnu|')
+ 		;;
+ 	os2-emx)
+ 		kernel=os2
+ 		os=$(echo $basic_os | sed -e 's|os2-emx|emx|')
+ 		;;
+ 	nto-qnx*)
+ 		kernel=nto
+ 		os=$(echo $basic_os | sed -e 's|nto-qnx|qnx|')
+ 		;;
+ 	*-*)
+ 		# shellcheck disable=SC2162
+ 		IFS="-" read kernel os <<EOF
+ $basic_os
+ EOF
+ 		;;
+ 	# Default OS when just kernel was specified
+ 	nto*)
+ 		kernel=nto
+ 		os=$(echo $basic_os | sed -e 's|nto|qnx|')
+ 		;;
+ 	linux*)
+ 		kernel=linux
+ 		os=$(echo $basic_os | sed -e 's|linux|gnu|')
+ 		;;
+ 	*)
+ 		kernel=
+ 		os=$basic_os
+ 		;;
+ esac
+ 
+ # Now, normalize the OS (knowing we just have one component, it's not a kernel,
+ # etc.)
  case $os in
  	# First match some system type aliases that might get confused
  	# with valid system types.
*************** case $os in
*** 1288,1294 ****
  		os=cnk
  		;;
  	solaris1 | solaris1.*)
! 		os=`echo $os | sed -e 's|solaris1|sunos4|'`
  		;;
  	solaris)
  		os=solaris2
--- 1332,1338 ----
  		os=cnk
  		;;
  	solaris1 | solaris1.*)
! 		os=$(echo $os | sed -e 's|solaris1|sunos4|')
  		;;
  	solaris)
  		os=solaris2
*************** case $os in
*** 1296,1304 ****
  	unixware*)
  		os=sysv4.2uw
  		;;
- 	gnu/linux*)
- 		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- 		;;
  	# es1800 is here to avoid being matched by es* (a different OS)
  	es1800*)
  		os=ose
--- 1340,1345 ----
*************** case $os in
*** 1320,1331 ****
  		os=sco3.2v4
  		;;
  	sco3.2.[4-9]*)
! 		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
! 		;;
! 	sco3.2v[4-9]* | sco5v6*)
! 		# Don't forget version if it is 3.2v4 or newer.
  		;;
! 	scout)
  		# Don't match below
  		;;
  	sco*)
--- 1361,1369 ----
  		os=sco3.2v4
  		;;
  	sco3.2.[4-9]*)
! 		os=$(echo $os | sed -e 's/sco3.2./sco3.2v/')
  		;;
! 	sco*v* | scout)
  		# Don't match below
  		;;
  	sco*)
*************** case $os in
*** 1334,1412 ****
  	psos*)
  		os=psos
  		;;
- 	# Now accept the basic system types.
- 	# The portable systems comes first.
- 	# Each alternative MUST end in a * to match a version number.
- 	# sysv* is not here because it comes later, after sysvr4.
- 	gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
- 	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
- 	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
- 	     | sym* | kopensolaris* | plan9* \
- 	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
- 	     | aos* | aros* | cloudabi* | sortix* \
- 	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
- 	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
- 	     | knetbsd* | mirbsd* | netbsd* \
- 	     | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
- 	     | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
- 	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
- 	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
- 	     | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
- 	     | chorusrdb* | cegcc* | glidix* \
- 	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
- 	     | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
- 	     | linux-newlib* | linux-musl* | linux-uclibc* \
- 	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
- 	     | interix* | uwin* | mks* | rhapsody* | darwin* \
- 	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
- 	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
- 	     | os2* | vos* | palmos* | uclinux* | nucleus* \
- 	     | morphos* | superux* | rtmk* | windiss* \
- 	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
- 	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
- 	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
- 	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
- 	     | nsk* | powerunix)
- 	# Remember, each alternative MUST END IN *, to match a version number.
- 		;;
  	qnx*)
! 		case $cpu in
! 		    x86 | i*86)
! 			;;
! 		    *)
! 			os=nto-$os
! 			;;
! 		esac
  		;;
  	hiux*)
  		os=hiuxwe2
  		;;
- 	nto-qnx*)
- 		;;
- 	nto*)
- 		os=`echo $os | sed -e 's|nto|nto-qnx|'`
- 		;;
- 	sim | xray | os68k* | v88r* \
- 	    | windows* | osx | abug | netware* | os9* \
- 	    | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
- 		;;
- 	linux-dietlibc)
- 		os=linux-dietlibc
- 		;;
- 	linux*)
- 		os=`echo $os | sed -e 's|linux|linux-gnu|'`
- 		;;
  	lynx*178)
  		os=lynxos178
  		;;
  	lynx*5)
  		os=lynxos5
  		;;
  	lynx*)
  		os=lynxos
  		;;
! 	mac*)
! 		os=`echo "$os" | sed -e 's|mac|macos|'`
  		;;
  	opened*)
  		os=openedition
--- 1372,1397 ----
  	psos*)
  		os=psos
  		;;
  	qnx*)
! 		os=qnx
  		;;
  	hiux*)
  		os=hiuxwe2
  		;;
  	lynx*178)
  		os=lynxos178
  		;;
  	lynx*5)
  		os=lynxos5
  		;;
+ 	lynxos*)
+ 		# don't get caught up in next wildcard
+ 		;;
  	lynx*)
  		os=lynxos
  		;;
! 	mac[0-9]*)
! 		os=$(echo "$os" | sed -e 's|mac|macos|')
  		;;
  	opened*)
  		os=openedition
*************** case $os in
*** 1415,1424 ****
  		os=os400
  		;;
  	sunos5*)
! 		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
  		;;
  	sunos6*)
! 		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
  		;;
  	wince*)
  		os=wince
--- 1400,1409 ----
  		os=os400
  		;;
  	sunos5*)
! 		os=$(echo "$os" | sed -e 's|sunos5|solaris2|')
  		;;
  	sunos6*)
! 		os=$(echo "$os" | sed -e 's|sunos6|solaris3|')
  		;;
  	wince*)
  		os=wince
*************** case $os in
*** 1452,1458 ****
  		;;
  	# Preserve the version number of sinix5.
  	sinix5.*)
! 		os=`echo $os | sed -e 's|sinix|sysv|'`
  		;;
  	sinix*)
  		os=sysv4
--- 1437,1443 ----
  		;;
  	# Preserve the version number of sinix5.
  	sinix5.*)
! 		os=$(echo $os | sed -e 's|sinix|sysv|')
  		;;
  	sinix*)
  		os=sysv4
*************** case $os in
*** 1475,1492 ****
  	sysvr4)
  		os=sysv4
  		;;
- 	# This must come after sysvr4.
- 	sysv*)
- 		;;
  	ose*)
  		os=ose
  		;;
  	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
  		os=mint
  		;;
- 	zvmoe)
- 		os=zvmoe
- 		;;
  	dicos*)
  		os=dicos
  		;;
--- 1460,1471 ----
*************** case $os in
*** 1503,1521 ****
  			;;
  		esac
  		;;
- 	nacl*)
- 		;;
- 	ios)
- 		;;
- 	none)
- 		;;
- 	*-eabi)
- 		;;
  	*)
! 		echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
! 		exit 1
  		;;
  esac
  else
  
  # Here we handle the default operating systems that come with various machines.
--- 1482,1492 ----
  			;;
  		esac
  		;;
  	*)
! 		# No normalization, but not necessarily accepted, that comes below.
  		;;
  esac
+ 
  else
  
  # Here we handle the default operating systems that come with various machines.
*************** else
*** 1528,1533 ****
--- 1499,1505 ----
  # will signal an error saying that MANUFACTURER isn't an operating
  # system, and we'll never get to this point.
  
+ kernel=
  case $cpu-$vendor in
  	score-*)
  		os=elf
*************** case $cpu-$vendor in
*** 1539,1545 ****
  		os=riscix1.2
  		;;
  	arm*-rebel)
! 		os=linux
  		;;
  	arm*-semi)
  		os=aout
--- 1511,1518 ----
  		os=riscix1.2
  		;;
  	arm*-rebel)
! 		kernel=linux
! 		os=gnu
  		;;
  	arm*-semi)
  		os=aout
*************** case $cpu-$vendor in
*** 1705,1788 ****
  		os=none
  		;;
  esac
  fi
  
  # Here we handle the case where we know the os, and the CPU type, but not the
  # manufacturer.  We pick the logical manufacturer.
  case $vendor in
  	unknown)
! 		case $os in
! 			riscix*)
  				vendor=acorn
  				;;
! 			sunos*)
  				vendor=sun
  				;;
! 			cnk*|-aix*)
  				vendor=ibm
  				;;
! 			beos*)
  				vendor=be
  				;;
! 			hpux*)
  				vendor=hp
  				;;
! 			mpeix*)
  				vendor=hp
  				;;
! 			hiux*)
  				vendor=hitachi
  				;;
! 			unos*)
  				vendor=crds
  				;;
! 			dgux*)
  				vendor=dg
  				;;
! 			luna*)
  				vendor=omron
  				;;
! 			genix*)
  				vendor=ns
  				;;
! 			clix*)
  				vendor=intergraph
  				;;
! 			mvs* | opened*)
  				vendor=ibm
  				;;
! 			os400*)
  				vendor=ibm
  				;;
! 			ptx*)
  				vendor=sequent
  				;;
! 			tpf*)
  				vendor=ibm
  				;;
! 			vxsim* | vxworks* | windiss*)
  				vendor=wrs
  				;;
! 			aux*)
  				vendor=apple
  				;;
! 			hms*)
  				vendor=hitachi
  				;;
! 			mpw* | macos*)
  				vendor=apple
  				;;
! 			*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
  				vendor=atari
  				;;
! 			vos*)
  				vendor=stratus
  				;;
  		esac
  		;;
  esac
  
! echo "$cpu-$vendor-$os"
  exit
  
  # Local variables:
--- 1678,1855 ----
  		os=none
  		;;
  esac
+ 
  fi
  
+ # Now, validate our (potentially fixed-up) OS.
+ case $os in
+ 	# Sometimes we do "kernel-libc", so those need to count as OSes.
+ 	musl* | newlib* | uclibc*)
+ 		;;
+ 	# Likewise for "kernel-abi"
+ 	eabi* | gnueabi*)
+ 		;;
+ 	# VxWorks passes extra cpu info in the 4th filed.
+ 	simlinux | simwindows | spe)
+ 		;;
+ 	# Now accept the basic system types.
+ 	# The portable systems comes first.
+ 	# Each alternative MUST end in a * to match a version number.
+ 	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+ 	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
+ 	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+ 	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
+ 	     | hiux* | abug | nacl* | netware* | windows* \
+ 	     | os9* | macos* | osx* | ios* \
+ 	     | mpw* | magic* | mmixware* | mon960* | lnews* \
+ 	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+ 	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
+ 	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+ 	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+ 	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
+ 	     | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
+ 	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
+ 	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+ 	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+ 	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
+ 	     | chorusrdb* | cegcc* | glidix* \
+ 	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+ 	     | midipix* | mingw32* | mingw64* | mint* \
+ 	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
+ 	     | interix* | uwin* | mks* | rhapsody* | darwin* \
+ 	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
+ 	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
+ 	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
+ 	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
+ 	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
+ 	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
+ 	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
+ 	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
+ 	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*)
+ 		;;
+ 	# This one is extra strict with allowed versions
+ 	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
+ 		# Don't forget version if it is 3.2v4 or newer.
+ 		;;
+ 	none)
+ 		;;
+ 	*)
+ 		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
+ 		exit 1
+ 		;;
+ esac
+ 
+ # As a final step for OS-related things, validate the OS-kernel combination
+ # (given a valid OS), if there is a kernel.
+ case $kernel-$os in
+ 	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
+ 		;;
+ 	uclinux-uclibc* )
+ 		;;
+ 	-dietlibc* | -newlib* | -musl* | -uclibc* )
+ 		# These are just libc implementations, not actual OSes, and thus
+ 		# require a kernel.
+ 		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
+ 		exit 1
+ 		;;
+ 	kfreebsd*-gnu* | kopensolaris*-gnu*)
+ 		;;
+ 	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
+ 		;;
+ 	nto-qnx*)
+ 		;;
+ 	os2-emx)
+ 		;;
+ 	*-eabi* | *-gnueabi*)
+ 		;;
+ 	-*)
+ 		# Blank kernel with real OS is always fine.
+ 		;;
+ 	*-*)
+ 		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
+ 		exit 1
+ 		;;
+ esac
+ 
  # Here we handle the case where we know the os, and the CPU type, but not the
  # manufacturer.  We pick the logical manufacturer.
  case $vendor in
  	unknown)
! 		case $cpu-$os in
! 			*-riscix*)
  				vendor=acorn
  				;;
! 			*-sunos*)
  				vendor=sun
  				;;
! 			*-cnk* | *-aix*)
  				vendor=ibm
  				;;
! 			*-beos*)
  				vendor=be
  				;;
! 			*-hpux*)
  				vendor=hp
  				;;
! 			*-mpeix*)
  				vendor=hp
  				;;
! 			*-hiux*)
  				vendor=hitachi
  				;;
! 			*-unos*)
  				vendor=crds
  				;;
! 			*-dgux*)
  				vendor=dg
  				;;
! 			*-luna*)
  				vendor=omron
  				;;
! 			*-genix*)
  				vendor=ns
  				;;
! 			*-clix*)
  				vendor=intergraph
  				;;
! 			*-mvs* | *-opened*)
  				vendor=ibm
  				;;
! 			*-os400*)
  				vendor=ibm
  				;;
! 			s390-* | s390x-*)
! 				vendor=ibm
! 				;;
! 			*-ptx*)
  				vendor=sequent
  				;;
! 			*-tpf*)
  				vendor=ibm
  				;;
! 			*-vxsim* | *-vxworks* | *-windiss*)
  				vendor=wrs
  				;;
! 			*-aux*)
  				vendor=apple
  				;;
! 			*-hms*)
  				vendor=hitachi
  				;;
! 			*-mpw* | *-macos*)
  				vendor=apple
  				;;
! 			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
  				vendor=atari
  				;;
! 			*-vos*)
  				vendor=stratus
  				;;
  		esac
  		;;
  esac
  
! echo "$cpu-$vendor-${kernel:+$kernel-}$os"
  exit
  
  # Local variables:
diff -Nrcpad gcc-10.3.0/configure gcc-11.1.0/configure
*** gcc-10.3.0/configure	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/configure	Tue Apr 27 10:00:12 2021
*************** extra_mpc_gmp_configure_flags
*** 694,699 ****
--- 694,701 ----
  extra_mpfr_configure_flags
  gmpinc
  gmplibs
+ HAVE_CXX11_FOR_BUILD
+ HAVE_CXX11
  do_compare
  GNATMAKE
  GNATBIND
*************** build_tools="build-texinfo build-flex bu
*** 2785,2791 ****
  
  # these libraries are used by various programs built for the host environment
  #f
! host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libdecnumber gmp mpfr mpc isl libelf libiconv libctf"
  
  # these tools are built for the host environment
  # Note, the powerpc-eabi build depends on sim occurring before gdb in order to
--- 2787,2793 ----
  
  # these libraries are used by various programs built for the host environment
  #f
! host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libcody libdecnumber gmp mpfr mpc isl libelf libiconv libctf"
  
  # these tools are built for the host environment
  # Note, the powerpc-eabi build depends on sim occurring before gdb in order to
*************** host_libs="intl libiberty opcodes bfd re
*** 2793,2799 ****
  # binutils, gas and ld appear in that order because it makes sense to run
  # "make check" in that particular order.
  # If --enable-gold is used, "gold" may replace "ld".
! host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gotools"
  
  # these libraries are built for the target environment, and are built after
  # the host libraries and the host tools (which may be a cross compiler)
--- 2795,2801 ----
  # binutils, gas and ld appear in that order because it makes sense to run
  # "make check" in that particular order.
  # If --enable-gold is used, "gold" may replace "ld".
! host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gotools c++tools"
  
  # these libraries are built for the target environment, and are built after
  # the host libraries and the host tools (which may be a cross compiler)
*************** case ,${enable_languages}, in
*** 3442,3450 ****
      ;;
    *)
      case "${target}" in
-       *-*-darwin*)
- 	unsupported_languages="$unsupported_languages d"
-         ;;
        bpf-*-*)
  	unsupported_languages="$unsupported_languages d"
  	;;
--- 3444,3449 ----
*************** $as_echo "$as_me: WARNING: trying to boo
*** 5524,5533 ****
      ;;
  esac
  
! # When bootstrapping with GCC, build stage 1 in C++98 mode to ensure that a
! # C++98 compiler can still start the bootstrap.
  if test "$enable_bootstrap:$GXX" = "yes:yes"; then
!   CXX="$CXX -std=gnu++98"
  fi
  
  # Used for setting $lt_cv_objdir
--- 5523,7531 ----
      ;;
  esac
  
! # When bootstrapping with GCC, build stage 1 in C++11 mode to ensure that a
! # C++11 compiler can still start the bootstrap.  Otherwise, if building GCC,
! # require C++11 (or higher).
  if test "$enable_bootstrap:$GXX" = "yes:yes"; then
!   CXX="$CXX -std=c++11"
! elif test "$have_compiler" = yes; then
!     ax_cxx_compile_alternatives="11 0x"    ax_cxx_compile_cxx11_required=true
!   ac_ext=cpp
! ac_cpp='$CXXCPP $CPPFLAGS'
! ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
! ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
! ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
!   ac_success=no
! 
!       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5
! $as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; }
! if ${ax_cv_cxx_compile_cxx11+:} false; then :
!   $as_echo_n "(cached) " >&6
! else
!   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
! /* end confdefs.h.  */
! 
! 
! // If the compiler admits that it is not ready for C++11, why torture it?
! // Hopefully, this will speed up the test.
! 
! #ifndef __cplusplus
! 
! #error "This is not a C++ compiler"
! 
! #elif __cplusplus < 201103L
! 
! #error "This is not a C++11 compiler"
! 
! #else
! 
! namespace cxx11
! {
! 
!   namespace test_static_assert
!   {
! 
!     template <typename T>
!     struct check
!     {
!       static_assert(sizeof(int) <= sizeof(T), "not big enough");
!     };
! 
!   }
! 
!   namespace test_final_override
!   {
! 
!     struct Base
!     {
!       virtual ~Base() {}
!       virtual void f() {}
!     };
! 
!     struct Derived : public Base
!     {
!       virtual ~Derived() override {}
!       virtual void f() override {}
!     };
! 
!   }
! 
!   namespace test_double_right_angle_brackets
!   {
! 
!     template < typename T >
!     struct check {};
! 
!     typedef check<void> single_type;
!     typedef check<check<void>> double_type;
!     typedef check<check<check<void>>> triple_type;
!     typedef check<check<check<check<void>>>> quadruple_type;
! 
!   }
! 
!   namespace test_decltype
!   {
! 
!     int
!     f()
!     {
!       int a = 1;
!       decltype(a) b = 2;
!       return a + b;
!     }
! 
!   }
! 
!   namespace test_type_deduction
!   {
! 
!     template < typename T1, typename T2 >
!     struct is_same
!     {
!       static const bool value = false;
!     };
! 
!     template < typename T >
!     struct is_same<T, T>
!     {
!       static const bool value = true;
!     };
! 
!     template < typename T1, typename T2 >
!     auto
!     add(T1 a1, T2 a2) -> decltype(a1 + a2)
!     {
!       return a1 + a2;
!     }
! 
!     int
!     test(const int c, volatile int v)
!     {
!       static_assert(is_same<int, decltype(0)>::value == true, "");
!       static_assert(is_same<int, decltype(c)>::value == false, "");
!       static_assert(is_same<int, decltype(v)>::value == false, "");
!       auto ac = c;
!       auto av = v;
!       auto sumi = ac + av + 'x';
!       auto sumf = ac + av + 1.0;
!       static_assert(is_same<int, decltype(ac)>::value == true, "");
!       static_assert(is_same<int, decltype(av)>::value == true, "");
!       static_assert(is_same<int, decltype(sumi)>::value == true, "");
!       static_assert(is_same<int, decltype(sumf)>::value == false, "");
!       static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
!       return (sumf > 0.0) ? sumi : add(c, v);
!     }
! 
!   }
! 
!   namespace test_noexcept
!   {
! 
!     int f() { return 0; }
!     int g() noexcept { return 0; }
! 
!     static_assert(noexcept(f()) == false, "");
!     static_assert(noexcept(g()) == true, "");
! 
!   }
! 
!   namespace test_constexpr
!   {
! 
!     template < typename CharT >
!     unsigned long constexpr
!     strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
!     {
!       return *s ? strlen_c_r(s + 1, acc + 1) : acc;
!     }
! 
!     template < typename CharT >
!     unsigned long constexpr
!     strlen_c(const CharT *const s) noexcept
!     {
!       return strlen_c_r(s, 0UL);
!     }
! 
!     static_assert(strlen_c("") == 0UL, "");
!     static_assert(strlen_c("1") == 1UL, "");
!     static_assert(strlen_c("example") == 7UL, "");
!     static_assert(strlen_c("another\0example") == 7UL, "");
! 
!   }
! 
!   namespace test_rvalue_references
!   {
! 
!     template < int N >
!     struct answer
!     {
!       static constexpr int value = N;
!     };
! 
!     answer<1> f(int&)       { return answer<1>(); }
!     answer<2> f(const int&) { return answer<2>(); }
!     answer<3> f(int&&)      { return answer<3>(); }
! 
!     void
!     test()
!     {
!       int i = 0;
!       const int c = 0;
!       static_assert(decltype(f(i))::value == 1, "");
!       static_assert(decltype(f(c))::value == 2, "");
!       static_assert(decltype(f(0))::value == 3, "");
!     }
! 
!   }
! 
!   namespace test_uniform_initialization
!   {
! 
!     struct test
!     {
!       static const int zero {};
!       static const int one {1};
!     };
! 
!     static_assert(test::zero == 0, "");
!     static_assert(test::one == 1, "");
! 
!   }
! 
!   namespace test_lambdas
!   {
! 
!     void
!     test1()
!     {
!       auto lambda1 = [](){};
!       auto lambda2 = lambda1;
!       lambda1();
!       lambda2();
!     }
! 
!     int
!     test2()
!     {
!       auto a = [](int i, int j){ return i + j; }(1, 2);
!       auto b = []() -> int { return '0'; }();
!       auto c = [=](){ return a + b; }();
!       auto d = [&](){ return c; }();
!       auto e = [a, &b](int x) mutable {
!         const auto identity = [](int y){ return y; };
!         for (auto i = 0; i < a; ++i)
!           a += b--;
!         return x + identity(a + b);
!       }(0);
!       return a + b + c + d + e;
!     }
! 
!     int
!     test3()
!     {
!       const auto nullary = [](){ return 0; };
!       const auto unary = [](int x){ return x; };
!       using nullary_t = decltype(nullary);
!       using unary_t = decltype(unary);
!       const auto higher1st = [](nullary_t f){ return f(); };
!       const auto higher2nd = [unary](nullary_t f1){
!         return [unary, f1](unary_t f2){ return f2(unary(f1())); };
!       };
!       return higher1st(nullary) + higher2nd(nullary)(unary);
!     }
! 
!   }
! 
!   namespace test_variadic_templates
!   {
! 
!     template <int...>
!     struct sum;
! 
!     template <int N0, int... N1toN>
!     struct sum<N0, N1toN...>
!     {
!       static constexpr auto value = N0 + sum<N1toN...>::value;
!     };
! 
!     template <>
!     struct sum<>
!     {
!       static constexpr auto value = 0;
!     };
! 
!     static_assert(sum<>::value == 0, "");
!     static_assert(sum<1>::value == 1, "");
!     static_assert(sum<23>::value == 23, "");
!     static_assert(sum<1, 2>::value == 3, "");
!     static_assert(sum<5, 5, 11>::value == 21, "");
!     static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
! 
!   }
! 
!   // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
!   // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
!   // because of this.
!   namespace test_template_alias_sfinae
!   {
! 
!     struct foo {};
! 
!     template<typename T>
!     using member = typename T::member_type;
! 
!     template<typename T>
!     void func(...) {}
! 
!     template<typename T>
!     void func(member<T>*) {}
! 
!     void test();
! 
!     void test() { func<foo>(0); }
! 
!   }
! 
! }  // namespace cxx11
! 
! #endif  // __cplusplus >= 201103L
! 
! 
! 
! _ACEOF
! if ac_fn_cxx_try_compile "$LINENO"; then :
!   ax_cv_cxx_compile_cxx11=yes
! else
!   ax_cv_cxx_compile_cxx11=no
! fi
! rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
! fi
! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5
! $as_echo "$ax_cv_cxx_compile_cxx11" >&6; }
!     if test x$ax_cv_cxx_compile_cxx11 = xyes; then
!       ac_success=yes
!     fi
! 
!     if test x$ac_success = xno; then
!     for alternative in ${ax_cxx_compile_alternatives}; do
!       switch="-std=gnu++${alternative}"
!       cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh`
!       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
! $as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; }
! if eval \${$cachevar+:} false; then :
!   $as_echo_n "(cached) " >&6
! else
!   ac_save_CXX="$CXX"
!          CXX="$CXX $switch"
!          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
! /* end confdefs.h.  */
! 
! 
! // If the compiler admits that it is not ready for C++11, why torture it?
! // Hopefully, this will speed up the test.
! 
! #ifndef __cplusplus
! 
! #error "This is not a C++ compiler"
! 
! #elif __cplusplus < 201103L
! 
! #error "This is not a C++11 compiler"
! 
! #else
! 
! namespace cxx11
! {
! 
!   namespace test_static_assert
!   {
! 
!     template <typename T>
!     struct check
!     {
!       static_assert(sizeof(int) <= sizeof(T), "not big enough");
!     };
! 
!   }
! 
!   namespace test_final_override
!   {
! 
!     struct Base
!     {
!       virtual ~Base() {}
!       virtual void f() {}
!     };
! 
!     struct Derived : public Base
!     {
!       virtual ~Derived() override {}
!       virtual void f() override {}
!     };
! 
!   }
! 
!   namespace test_double_right_angle_brackets
!   {
! 
!     template < typename T >
!     struct check {};
! 
!     typedef check<void> single_type;
!     typedef check<check<void>> double_type;
!     typedef check<check<check<void>>> triple_type;
!     typedef check<check<check<check<void>>>> quadruple_type;
! 
!   }
! 
!   namespace test_decltype
!   {
! 
!     int
!     f()
!     {
!       int a = 1;
!       decltype(a) b = 2;
!       return a + b;
!     }
! 
!   }
! 
!   namespace test_type_deduction
!   {
! 
!     template < typename T1, typename T2 >
!     struct is_same
!     {
!       static const bool value = false;
!     };
! 
!     template < typename T >
!     struct is_same<T, T>
!     {
!       static const bool value = true;
!     };
! 
!     template < typename T1, typename T2 >
!     auto
!     add(T1 a1, T2 a2) -> decltype(a1 + a2)
!     {
!       return a1 + a2;
!     }
! 
!     int
!     test(const int c, volatile int v)
!     {
!       static_assert(is_same<int, decltype(0)>::value == true, "");
!       static_assert(is_same<int, decltype(c)>::value == false, "");
!       static_assert(is_same<int, decltype(v)>::value == false, "");
!       auto ac = c;
!       auto av = v;
!       auto sumi = ac + av + 'x';
!       auto sumf = ac + av + 1.0;
!       static_assert(is_same<int, decltype(ac)>::value == true, "");
!       static_assert(is_same<int, decltype(av)>::value == true, "");
!       static_assert(is_same<int, decltype(sumi)>::value == true, "");
!       static_assert(is_same<int, decltype(sumf)>::value == false, "");
!       static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
!       return (sumf > 0.0) ? sumi : add(c, v);
!     }
! 
!   }
! 
!   namespace test_noexcept
!   {
! 
!     int f() { return 0; }
!     int g() noexcept { return 0; }
! 
!     static_assert(noexcept(f()) == false, "");
!     static_assert(noexcept(g()) == true, "");
! 
!   }
! 
!   namespace test_constexpr
!   {
! 
!     template < typename CharT >
!     unsigned long constexpr
!     strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
!     {
!       return *s ? strlen_c_r(s + 1, acc + 1) : acc;
!     }
! 
!     template < typename CharT >
!     unsigned long constexpr
!     strlen_c(const CharT *const s) noexcept
!     {
!       return strlen_c_r(s, 0UL);
!     }
! 
!     static_assert(strlen_c("") == 0UL, "");
!     static_assert(strlen_c("1") == 1UL, "");
!     static_assert(strlen_c("example") == 7UL, "");
!     static_assert(strlen_c("another\0example") == 7UL, "");
! 
!   }
! 
!   namespace test_rvalue_references
!   {
! 
!     template < int N >
!     struct answer
!     {
!       static constexpr int value = N;
!     };
! 
!     answer<1> f(int&)       { return answer<1>(); }
!     answer<2> f(const int&) { return answer<2>(); }
!     answer<3> f(int&&)      { return answer<3>(); }
! 
!     void
!     test()
!     {
!       int i = 0;
!       const int c = 0;
!       static_assert(decltype(f(i))::value == 1, "");
!       static_assert(decltype(f(c))::value == 2, "");
!       static_assert(decltype(f(0))::value == 3, "");
!     }
! 
!   }
! 
!   namespace test_uniform_initialization
!   {
! 
!     struct test
!     {
!       static const int zero {};
!       static const int one {1};
!     };
! 
!     static_assert(test::zero == 0, "");
!     static_assert(test::one == 1, "");
! 
!   }
! 
!   namespace test_lambdas
!   {
! 
!     void
!     test1()
!     {
!       auto lambda1 = [](){};
!       auto lambda2 = lambda1;
!       lambda1();
!       lambda2();
!     }
! 
!     int
!     test2()
!     {
!       auto a = [](int i, int j){ return i + j; }(1, 2);
!       auto b = []() -> int { return '0'; }();
!       auto c = [=](){ return a + b; }();
!       auto d = [&](){ return c; }();
!       auto e = [a, &b](int x) mutable {
!         const auto identity = [](int y){ return y; };
!         for (auto i = 0; i < a; ++i)
!           a += b--;
!         return x + identity(a + b);
!       }(0);
!       return a + b + c + d + e;
!     }
! 
!     int
!     test3()
!     {
!       const auto nullary = [](){ return 0; };
!       const auto unary = [](int x){ return x; };
!       using nullary_t = decltype(nullary);
!       using unary_t = decltype(unary);
!       const auto higher1st = [](nullary_t f){ return f(); };
!       const auto higher2nd = [unary](nullary_t f1){
!         return [unary, f1](unary_t f2){ return f2(unary(f1())); };
!       };
!       return higher1st(nullary) + higher2nd(nullary)(unary);
!     }
! 
!   }
! 
!   namespace test_variadic_templates
!   {
! 
!     template <int...>
!     struct sum;
! 
!     template <int N0, int... N1toN>
!     struct sum<N0, N1toN...>
!     {
!       static constexpr auto value = N0 + sum<N1toN...>::value;
!     };
! 
!     template <>
!     struct sum<>
!     {
!       static constexpr auto value = 0;
!     };
! 
!     static_assert(sum<>::value == 0, "");
!     static_assert(sum<1>::value == 1, "");
!     static_assert(sum<23>::value == 23, "");
!     static_assert(sum<1, 2>::value == 3, "");
!     static_assert(sum<5, 5, 11>::value == 21, "");
!     static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
! 
!   }
! 
!   // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
!   // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
!   // because of this.
!   namespace test_template_alias_sfinae
!   {
! 
!     struct foo {};
! 
!     template<typename T>
!     using member = typename T::member_type;
! 
!     template<typename T>
!     void func(...) {}
! 
!     template<typename T>
!     void func(member<T>*) {}
! 
!     void test();
! 
!     void test() { func<foo>(0); }
! 
!   }
! 
! }  // namespace cxx11
! 
! #endif  // __cplusplus >= 201103L
! 
! 
! 
! _ACEOF
! if ac_fn_cxx_try_compile "$LINENO"; then :
!   eval $cachevar=yes
! else
!   eval $cachevar=no
! fi
! rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
!          CXX="$ac_save_CXX"
! fi
! eval ac_res=\$$cachevar
! 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
! $as_echo "$ac_res" >&6; }
!       if eval test x\$$cachevar = xyes; then
!         CXX="$CXX $switch"
!         if test -n "$CXXCPP" ; then
!           CXXCPP="$CXXCPP $switch"
!         fi
!         ac_success=yes
!         break
!       fi
!     done
!   fi
! 
!     if test x$ac_success = xno; then
!                 for alternative in ${ax_cxx_compile_alternatives}; do
!       for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
!         cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh`
!         { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
! $as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; }
! if eval \${$cachevar+:} false; then :
!   $as_echo_n "(cached) " >&6
! else
!   ac_save_CXX="$CXX"
!            CXX="$CXX $switch"
!            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
! /* end confdefs.h.  */
! 
! 
! // If the compiler admits that it is not ready for C++11, why torture it?
! // Hopefully, this will speed up the test.
! 
! #ifndef __cplusplus
! 
! #error "This is not a C++ compiler"
! 
! #elif __cplusplus < 201103L
! 
! #error "This is not a C++11 compiler"
! 
! #else
! 
! namespace cxx11
! {
! 
!   namespace test_static_assert
!   {
! 
!     template <typename T>
!     struct check
!     {
!       static_assert(sizeof(int) <= sizeof(T), "not big enough");
!     };
! 
!   }
! 
!   namespace test_final_override
!   {
! 
!     struct Base
!     {
!       virtual ~Base() {}
!       virtual void f() {}
!     };
! 
!     struct Derived : public Base
!     {
!       virtual ~Derived() override {}
!       virtual void f() override {}
!     };
! 
!   }
! 
!   namespace test_double_right_angle_brackets
!   {
! 
!     template < typename T >
!     struct check {};
! 
!     typedef check<void> single_type;
!     typedef check<check<void>> double_type;
!     typedef check<check<check<void>>> triple_type;
!     typedef check<check<check<check<void>>>> quadruple_type;
! 
!   }
! 
!   namespace test_decltype
!   {
! 
!     int
!     f()
!     {
!       int a = 1;
!       decltype(a) b = 2;
!       return a + b;
!     }
! 
!   }
! 
!   namespace test_type_deduction
!   {
! 
!     template < typename T1, typename T2 >
!     struct is_same
!     {
!       static const bool value = false;
!     };
! 
!     template < typename T >
!     struct is_same<T, T>
!     {
!       static const bool value = true;
!     };
! 
!     template < typename T1, typename T2 >
!     auto
!     add(T1 a1, T2 a2) -> decltype(a1 + a2)
!     {
!       return a1 + a2;
!     }
! 
!     int
!     test(const int c, volatile int v)
!     {
!       static_assert(is_same<int, decltype(0)>::value == true, "");
!       static_assert(is_same<int, decltype(c)>::value == false, "");
!       static_assert(is_same<int, decltype(v)>::value == false, "");
!       auto ac = c;
!       auto av = v;
!       auto sumi = ac + av + 'x';
!       auto sumf = ac + av + 1.0;
!       static_assert(is_same<int, decltype(ac)>::value == true, "");
!       static_assert(is_same<int, decltype(av)>::value == true, "");
!       static_assert(is_same<int, decltype(sumi)>::value == true, "");
!       static_assert(is_same<int, decltype(sumf)>::value == false, "");
!       static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
!       return (sumf > 0.0) ? sumi : add(c, v);
!     }
! 
!   }
! 
!   namespace test_noexcept
!   {
! 
!     int f() { return 0; }
!     int g() noexcept { return 0; }
! 
!     static_assert(noexcept(f()) == false, "");
!     static_assert(noexcept(g()) == true, "");
! 
!   }
! 
!   namespace test_constexpr
!   {
! 
!     template < typename CharT >
!     unsigned long constexpr
!     strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
!     {
!       return *s ? strlen_c_r(s + 1, acc + 1) : acc;
!     }
! 
!     template < typename CharT >
!     unsigned long constexpr
!     strlen_c(const CharT *const s) noexcept
!     {
!       return strlen_c_r(s, 0UL);
!     }
! 
!     static_assert(strlen_c("") == 0UL, "");
!     static_assert(strlen_c("1") == 1UL, "");
!     static_assert(strlen_c("example") == 7UL, "");
!     static_assert(strlen_c("another\0example") == 7UL, "");
! 
!   }
! 
!   namespace test_rvalue_references
!   {
! 
!     template < int N >
!     struct answer
!     {
!       static constexpr int value = N;
!     };
! 
!     answer<1> f(int&)       { return answer<1>(); }
!     answer<2> f(const int&) { return answer<2>(); }
!     answer<3> f(int&&)      { return answer<3>(); }
! 
!     void
!     test()
!     {
!       int i = 0;
!       const int c = 0;
!       static_assert(decltype(f(i))::value == 1, "");
!       static_assert(decltype(f(c))::value == 2, "");
!       static_assert(decltype(f(0))::value == 3, "");
!     }
! 
!   }
! 
!   namespace test_uniform_initialization
!   {
! 
!     struct test
!     {
!       static const int zero {};
!       static const int one {1};
!     };
! 
!     static_assert(test::zero == 0, "");
!     static_assert(test::one == 1, "");
! 
!   }
! 
!   namespace test_lambdas
!   {
! 
!     void
!     test1()
!     {
!       auto lambda1 = [](){};
!       auto lambda2 = lambda1;
!       lambda1();
!       lambda2();
!     }
! 
!     int
!     test2()
!     {
!       auto a = [](int i, int j){ return i + j; }(1, 2);
!       auto b = []() -> int { return '0'; }();
!       auto c = [=](){ return a + b; }();
!       auto d = [&](){ return c; }();
!       auto e = [a, &b](int x) mutable {
!         const auto identity = [](int y){ return y; };
!         for (auto i = 0; i < a; ++i)
!           a += b--;
!         return x + identity(a + b);
!       }(0);
!       return a + b + c + d + e;
!     }
! 
!     int
!     test3()
!     {
!       const auto nullary = [](){ return 0; };
!       const auto unary = [](int x){ return x; };
!       using nullary_t = decltype(nullary);
!       using unary_t = decltype(unary);
!       const auto higher1st = [](nullary_t f){ return f(); };
!       const auto higher2nd = [unary](nullary_t f1){
!         return [unary, f1](unary_t f2){ return f2(unary(f1())); };
!       };
!       return higher1st(nullary) + higher2nd(nullary)(unary);
!     }
! 
!   }
! 
!   namespace test_variadic_templates
!   {
! 
!     template <int...>
!     struct sum;
! 
!     template <int N0, int... N1toN>
!     struct sum<N0, N1toN...>
!     {
!       static constexpr auto value = N0 + sum<N1toN...>::value;
!     };
! 
!     template <>
!     struct sum<>
!     {
!       static constexpr auto value = 0;
!     };
! 
!     static_assert(sum<>::value == 0, "");
!     static_assert(sum<1>::value == 1, "");
!     static_assert(sum<23>::value == 23, "");
!     static_assert(sum<1, 2>::value == 3, "");
!     static_assert(sum<5, 5, 11>::value == 21, "");
!     static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
! 
!   }
! 
!   // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
!   // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
!   // because of this.
!   namespace test_template_alias_sfinae
!   {
! 
!     struct foo {};
! 
!     template<typename T>
!     using member = typename T::member_type;
! 
!     template<typename T>
!     void func(...) {}
! 
!     template<typename T>
!     void func(member<T>*) {}
! 
!     void test();
! 
!     void test() { func<foo>(0); }
! 
!   }
! 
! }  // namespace cxx11
! 
! #endif  // __cplusplus >= 201103L
! 
! 
! 
! _ACEOF
! if ac_fn_cxx_try_compile "$LINENO"; then :
!   eval $cachevar=yes
! else
!   eval $cachevar=no
! fi
! rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
!            CXX="$ac_save_CXX"
! fi
! eval ac_res=\$$cachevar
! 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
! $as_echo "$ac_res" >&6; }
!         if eval test x\$$cachevar = xyes; then
!           CXX="$CXX $switch"
!           if test -n "$CXXCPP" ; then
!             CXXCPP="$CXXCPP $switch"
!           fi
!           ac_success=yes
!           break
!         fi
!       done
!       if test x$ac_success = xyes; then
!         break
!       fi
!     done
!   fi
! 
!   ac_ext=c
! ac_cpp='$CPP $CPPFLAGS'
! ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
! ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
! ac_compiler_gnu=$ac_cv_c_compiler_gnu
! 
!   if test x$ax_cxx_compile_cxx11_required = xtrue; then
!     if test x$ac_success = xno; then
!       as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5
!     fi
!   fi
!   if test x$ac_success = xno; then
!     HAVE_CXX11=0
!     { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5
! $as_echo "$as_me: No compiler with C++11 support was found" >&6;}
!   else
!     HAVE_CXX11=1
! 
! $as_echo "#define HAVE_CXX11 1" >>confdefs.h
! 
!   fi
! 
! 
! 
!   if test "${build}" != "${host}"; then
!       ax_cxx_compile_alternatives="11 0x"    ax_cxx_compile_cxx11_required=true
!   ac_ext=cpp
! ac_cpp='$CXXCPP $CPPFLAGS'
! ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
! ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
! ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
!   ac_success=no
!       ax_cv_cxx_compile_cxx11_orig_cxx="$CXX"
!     ax_cv_cxx_compile_cxx11_orig_cxxflags="$CXXFLAGS"
!     ax_cv_cxx_compile_cxx11_orig_cppflags="$CPPFLAGS"
!     CXX="$CXX_FOR_BUILD"
!     CXXFLAGS="$CXXFLAGS_FOR_BUILD"
!     CPPFLAGS="$CPPFLAGS_FOR_BUILD"
!       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5
! $as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; }
! if ${ax_cv_cxx_compile_cxx11_FOR_BUILD+:} false; then :
!   $as_echo_n "(cached) " >&6
! else
!   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
! /* end confdefs.h.  */
! 
! 
! // If the compiler admits that it is not ready for C++11, why torture it?
! // Hopefully, this will speed up the test.
! 
! #ifndef __cplusplus
! 
! #error "This is not a C++ compiler"
! 
! #elif __cplusplus < 201103L
! 
! #error "This is not a C++11 compiler"
! 
! #else
! 
! namespace cxx11
! {
! 
!   namespace test_static_assert
!   {
! 
!     template <typename T>
!     struct check
!     {
!       static_assert(sizeof(int) <= sizeof(T), "not big enough");
!     };
! 
!   }
! 
!   namespace test_final_override
!   {
! 
!     struct Base
!     {
!       virtual ~Base() {}
!       virtual void f() {}
!     };
! 
!     struct Derived : public Base
!     {
!       virtual ~Derived() override {}
!       virtual void f() override {}
!     };
! 
!   }
! 
!   namespace test_double_right_angle_brackets
!   {
! 
!     template < typename T >
!     struct check {};
! 
!     typedef check<void> single_type;
!     typedef check<check<void>> double_type;
!     typedef check<check<check<void>>> triple_type;
!     typedef check<check<check<check<void>>>> quadruple_type;
! 
!   }
! 
!   namespace test_decltype
!   {
! 
!     int
!     f()
!     {
!       int a = 1;
!       decltype(a) b = 2;
!       return a + b;
!     }
! 
!   }
! 
!   namespace test_type_deduction
!   {
! 
!     template < typename T1, typename T2 >
!     struct is_same
!     {
!       static const bool value = false;
!     };
! 
!     template < typename T >
!     struct is_same<T, T>
!     {
!       static const bool value = true;
!     };
! 
!     template < typename T1, typename T2 >
!     auto
!     add(T1 a1, T2 a2) -> decltype(a1 + a2)
!     {
!       return a1 + a2;
!     }
! 
!     int
!     test(const int c, volatile int v)
!     {
!       static_assert(is_same<int, decltype(0)>::value == true, "");
!       static_assert(is_same<int, decltype(c)>::value == false, "");
!       static_assert(is_same<int, decltype(v)>::value == false, "");
!       auto ac = c;
!       auto av = v;
!       auto sumi = ac + av + 'x';
!       auto sumf = ac + av + 1.0;
!       static_assert(is_same<int, decltype(ac)>::value == true, "");
!       static_assert(is_same<int, decltype(av)>::value == true, "");
!       static_assert(is_same<int, decltype(sumi)>::value == true, "");
!       static_assert(is_same<int, decltype(sumf)>::value == false, "");
!       static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
!       return (sumf > 0.0) ? sumi : add(c, v);
!     }
! 
!   }
! 
!   namespace test_noexcept
!   {
! 
!     int f() { return 0; }
!     int g() noexcept { return 0; }
! 
!     static_assert(noexcept(f()) == false, "");
!     static_assert(noexcept(g()) == true, "");
! 
!   }
! 
!   namespace test_constexpr
!   {
! 
!     template < typename CharT >
!     unsigned long constexpr
!     strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
!     {
!       return *s ? strlen_c_r(s + 1, acc + 1) : acc;
!     }
! 
!     template < typename CharT >
!     unsigned long constexpr
!     strlen_c(const CharT *const s) noexcept
!     {
!       return strlen_c_r(s, 0UL);
!     }
! 
!     static_assert(strlen_c("") == 0UL, "");
!     static_assert(strlen_c("1") == 1UL, "");
!     static_assert(strlen_c("example") == 7UL, "");
!     static_assert(strlen_c("another\0example") == 7UL, "");
! 
!   }
! 
!   namespace test_rvalue_references
!   {
! 
!     template < int N >
!     struct answer
!     {
!       static constexpr int value = N;
!     };
! 
!     answer<1> f(int&)       { return answer<1>(); }
!     answer<2> f(const int&) { return answer<2>(); }
!     answer<3> f(int&&)      { return answer<3>(); }
! 
!     void
!     test()
!     {
!       int i = 0;
!       const int c = 0;
!       static_assert(decltype(f(i))::value == 1, "");
!       static_assert(decltype(f(c))::value == 2, "");
!       static_assert(decltype(f(0))::value == 3, "");
!     }
! 
!   }
! 
!   namespace test_uniform_initialization
!   {
! 
!     struct test
!     {
!       static const int zero {};
!       static const int one {1};
!     };
! 
!     static_assert(test::zero == 0, "");
!     static_assert(test::one == 1, "");
! 
!   }
! 
!   namespace test_lambdas
!   {
! 
!     void
!     test1()
!     {
!       auto lambda1 = [](){};
!       auto lambda2 = lambda1;
!       lambda1();
!       lambda2();
!     }
! 
!     int
!     test2()
!     {
!       auto a = [](int i, int j){ return i + j; }(1, 2);
!       auto b = []() -> int { return '0'; }();
!       auto c = [=](){ return a + b; }();
!       auto d = [&](){ return c; }();
!       auto e = [a, &b](int x) mutable {
!         const auto identity = [](int y){ return y; };
!         for (auto i = 0; i < a; ++i)
!           a += b--;
!         return x + identity(a + b);
!       }(0);
!       return a + b + c + d + e;
!     }
! 
!     int
!     test3()
!     {
!       const auto nullary = [](){ return 0; };
!       const auto unary = [](int x){ return x; };
!       using nullary_t = decltype(nullary);
!       using unary_t = decltype(unary);
!       const auto higher1st = [](nullary_t f){ return f(); };
!       const auto higher2nd = [unary](nullary_t f1){
!         return [unary, f1](unary_t f2){ return f2(unary(f1())); };
!       };
!       return higher1st(nullary) + higher2nd(nullary)(unary);
!     }
! 
!   }
! 
!   namespace test_variadic_templates
!   {
! 
!     template <int...>
!     struct sum;
! 
!     template <int N0, int... N1toN>
!     struct sum<N0, N1toN...>
!     {
!       static constexpr auto value = N0 + sum<N1toN...>::value;
!     };
! 
!     template <>
!     struct sum<>
!     {
!       static constexpr auto value = 0;
!     };
! 
!     static_assert(sum<>::value == 0, "");
!     static_assert(sum<1>::value == 1, "");
!     static_assert(sum<23>::value == 23, "");
!     static_assert(sum<1, 2>::value == 3, "");
!     static_assert(sum<5, 5, 11>::value == 21, "");
!     static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
! 
!   }
! 
!   // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
!   // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
!   // because of this.
!   namespace test_template_alias_sfinae
!   {
! 
!     struct foo {};
! 
!     template<typename T>
!     using member = typename T::member_type;
! 
!     template<typename T>
!     void func(...) {}
! 
!     template<typename T>
!     void func(member<T>*) {}
! 
!     void test();
! 
!     void test() { func<foo>(0); }
! 
!   }
! 
! }  // namespace cxx11
! 
! #endif  // __cplusplus >= 201103L
! 
! 
! 
! _ACEOF
! if ac_fn_cxx_try_compile "$LINENO"; then :
!   ax_cv_cxx_compile_cxx11_FOR_BUILD=yes
! else
!   ax_cv_cxx_compile_cxx11_FOR_BUILD=no
! fi
! rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
! fi
! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11_FOR_BUILD" >&5
! $as_echo "$ax_cv_cxx_compile_cxx11_FOR_BUILD" >&6; }
!     if test x$ax_cv_cxx_compile_cxx11_FOR_BUILD = xyes; then
!       ac_success=yes
!     fi
! 
!     if test x$ac_success = xno; then
!     for alternative in ${ax_cxx_compile_alternatives}; do
!       switch="-std=gnu++${alternative}"
!       cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_FOR_BUILD_$switch" | $as_tr_sh`
!       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
! $as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; }
! if eval \${$cachevar+:} false; then :
!   $as_echo_n "(cached) " >&6
! else
!   ac_save_CXX="$CXX"
!          CXX="$CXX $switch"
!          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
! /* end confdefs.h.  */
! 
! 
! // If the compiler admits that it is not ready for C++11, why torture it?
! // Hopefully, this will speed up the test.
! 
! #ifndef __cplusplus
! 
! #error "This is not a C++ compiler"
! 
! #elif __cplusplus < 201103L
! 
! #error "This is not a C++11 compiler"
! 
! #else
! 
! namespace cxx11
! {
! 
!   namespace test_static_assert
!   {
! 
!     template <typename T>
!     struct check
!     {
!       static_assert(sizeof(int) <= sizeof(T), "not big enough");
!     };
! 
!   }
! 
!   namespace test_final_override
!   {
! 
!     struct Base
!     {
!       virtual ~Base() {}
!       virtual void f() {}
!     };
! 
!     struct Derived : public Base
!     {
!       virtual ~Derived() override {}
!       virtual void f() override {}
!     };
! 
!   }
! 
!   namespace test_double_right_angle_brackets
!   {
! 
!     template < typename T >
!     struct check {};
! 
!     typedef check<void> single_type;
!     typedef check<check<void>> double_type;
!     typedef check<check<check<void>>> triple_type;
!     typedef check<check<check<check<void>>>> quadruple_type;
! 
!   }
! 
!   namespace test_decltype
!   {
! 
!     int
!     f()
!     {
!       int a = 1;
!       decltype(a) b = 2;
!       return a + b;
!     }
! 
!   }
! 
!   namespace test_type_deduction
!   {
! 
!     template < typename T1, typename T2 >
!     struct is_same
!     {
!       static const bool value = false;
!     };
! 
!     template < typename T >
!     struct is_same<T, T>
!     {
!       static const bool value = true;
!     };
! 
!     template < typename T1, typename T2 >
!     auto
!     add(T1 a1, T2 a2) -> decltype(a1 + a2)
!     {
!       return a1 + a2;
!     }
! 
!     int
!     test(const int c, volatile int v)
!     {
!       static_assert(is_same<int, decltype(0)>::value == true, "");
!       static_assert(is_same<int, decltype(c)>::value == false, "");
!       static_assert(is_same<int, decltype(v)>::value == false, "");
!       auto ac = c;
!       auto av = v;
!       auto sumi = ac + av + 'x';
!       auto sumf = ac + av + 1.0;
!       static_assert(is_same<int, decltype(ac)>::value == true, "");
!       static_assert(is_same<int, decltype(av)>::value == true, "");
!       static_assert(is_same<int, decltype(sumi)>::value == true, "");
!       static_assert(is_same<int, decltype(sumf)>::value == false, "");
!       static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
!       return (sumf > 0.0) ? sumi : add(c, v);
!     }
! 
!   }
! 
!   namespace test_noexcept
!   {
! 
!     int f() { return 0; }
!     int g() noexcept { return 0; }
! 
!     static_assert(noexcept(f()) == false, "");
!     static_assert(noexcept(g()) == true, "");
! 
!   }
! 
!   namespace test_constexpr
!   {
! 
!     template < typename CharT >
!     unsigned long constexpr
!     strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
!     {
!       return *s ? strlen_c_r(s + 1, acc + 1) : acc;
!     }
! 
!     template < typename CharT >
!     unsigned long constexpr
!     strlen_c(const CharT *const s) noexcept
!     {
!       return strlen_c_r(s, 0UL);
!     }
! 
!     static_assert(strlen_c("") == 0UL, "");
!     static_assert(strlen_c("1") == 1UL, "");
!     static_assert(strlen_c("example") == 7UL, "");
!     static_assert(strlen_c("another\0example") == 7UL, "");
! 
!   }
! 
!   namespace test_rvalue_references
!   {
! 
!     template < int N >
!     struct answer
!     {
!       static constexpr int value = N;
!     };
! 
!     answer<1> f(int&)       { return answer<1>(); }
!     answer<2> f(const int&) { return answer<2>(); }
!     answer<3> f(int&&)      { return answer<3>(); }
! 
!     void
!     test()
!     {
!       int i = 0;
!       const int c = 0;
!       static_assert(decltype(f(i))::value == 1, "");
!       static_assert(decltype(f(c))::value == 2, "");
!       static_assert(decltype(f(0))::value == 3, "");
!     }
! 
!   }
! 
!   namespace test_uniform_initialization
!   {
! 
!     struct test
!     {
!       static const int zero {};
!       static const int one {1};
!     };
! 
!     static_assert(test::zero == 0, "");
!     static_assert(test::one == 1, "");
! 
!   }
! 
!   namespace test_lambdas
!   {
! 
!     void
!     test1()
!     {
!       auto lambda1 = [](){};
!       auto lambda2 = lambda1;
!       lambda1();
!       lambda2();
!     }
! 
!     int
!     test2()
!     {
!       auto a = [](int i, int j){ return i + j; }(1, 2);
!       auto b = []() -> int { return '0'; }();
!       auto c = [=](){ return a + b; }();
!       auto d = [&](){ return c; }();
!       auto e = [a, &b](int x) mutable {
!         const auto identity = [](int y){ return y; };
!         for (auto i = 0; i < a; ++i)
!           a += b--;
!         return x + identity(a + b);
!       }(0);
!       return a + b + c + d + e;
!     }
! 
!     int
!     test3()
!     {
!       const auto nullary = [](){ return 0; };
!       const auto unary = [](int x){ return x; };
!       using nullary_t = decltype(nullary);
!       using unary_t = decltype(unary);
!       const auto higher1st = [](nullary_t f){ return f(); };
!       const auto higher2nd = [unary](nullary_t f1){
!         return [unary, f1](unary_t f2){ return f2(unary(f1())); };
!       };
!       return higher1st(nullary) + higher2nd(nullary)(unary);
!     }
! 
!   }
! 
!   namespace test_variadic_templates
!   {
! 
!     template <int...>
!     struct sum;
! 
!     template <int N0, int... N1toN>
!     struct sum<N0, N1toN...>
!     {
!       static constexpr auto value = N0 + sum<N1toN...>::value;
!     };
! 
!     template <>
!     struct sum<>
!     {
!       static constexpr auto value = 0;
!     };
! 
!     static_assert(sum<>::value == 0, "");
!     static_assert(sum<1>::value == 1, "");
!     static_assert(sum<23>::value == 23, "");
!     static_assert(sum<1, 2>::value == 3, "");
!     static_assert(sum<5, 5, 11>::value == 21, "");
!     static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
! 
!   }
! 
!   // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
!   // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
!   // because of this.
!   namespace test_template_alias_sfinae
!   {
! 
!     struct foo {};
! 
!     template<typename T>
!     using member = typename T::member_type;
! 
!     template<typename T>
!     void func(...) {}
! 
!     template<typename T>
!     void func(member<T>*) {}
! 
!     void test();
! 
!     void test() { func<foo>(0); }
! 
!   }
! 
! }  // namespace cxx11
! 
! #endif  // __cplusplus >= 201103L
! 
! 
! 
! _ACEOF
! if ac_fn_cxx_try_compile "$LINENO"; then :
!   eval $cachevar=yes
! else
!   eval $cachevar=no
! fi
! rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
!          CXX="$ac_save_CXX"
! fi
! eval ac_res=\$$cachevar
! 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
! $as_echo "$ac_res" >&6; }
!       if eval test x\$$cachevar = xyes; then
!         CXX="$CXX $switch"
!         if test -n "$CXXCPP" ; then
!           CXXCPP="$CXXCPP $switch"
!         fi
!         ac_success=yes
!         break
!       fi
!     done
!   fi
! 
!     if test x$ac_success = xno; then
!                 for alternative in ${ax_cxx_compile_alternatives}; do
!       for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
!         cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_FOR_BUILD_$switch" | $as_tr_sh`
!         { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
! $as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; }
! if eval \${$cachevar+:} false; then :
!   $as_echo_n "(cached) " >&6
! else
!   ac_save_CXX="$CXX"
!            CXX="$CXX $switch"
!            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
! /* end confdefs.h.  */
! 
! 
! // If the compiler admits that it is not ready for C++11, why torture it?
! // Hopefully, this will speed up the test.
! 
! #ifndef __cplusplus
! 
! #error "This is not a C++ compiler"
! 
! #elif __cplusplus < 201103L
! 
! #error "This is not a C++11 compiler"
! 
! #else
! 
! namespace cxx11
! {
! 
!   namespace test_static_assert
!   {
! 
!     template <typename T>
!     struct check
!     {
!       static_assert(sizeof(int) <= sizeof(T), "not big enough");
!     };
! 
!   }
! 
!   namespace test_final_override
!   {
! 
!     struct Base
!     {
!       virtual ~Base() {}
!       virtual void f() {}
!     };
! 
!     struct Derived : public Base
!     {
!       virtual ~Derived() override {}
!       virtual void f() override {}
!     };
! 
!   }
! 
!   namespace test_double_right_angle_brackets
!   {
! 
!     template < typename T >
!     struct check {};
! 
!     typedef check<void> single_type;
!     typedef check<check<void>> double_type;
!     typedef check<check<check<void>>> triple_type;
!     typedef check<check<check<check<void>>>> quadruple_type;
! 
!   }
! 
!   namespace test_decltype
!   {
! 
!     int
!     f()
!     {
!       int a = 1;
!       decltype(a) b = 2;
!       return a + b;
!     }
! 
!   }
! 
!   namespace test_type_deduction
!   {
! 
!     template < typename T1, typename T2 >
!     struct is_same
!     {
!       static const bool value = false;
!     };
! 
!     template < typename T >
!     struct is_same<T, T>
!     {
!       static const bool value = true;
!     };
! 
!     template < typename T1, typename T2 >
!     auto
!     add(T1 a1, T2 a2) -> decltype(a1 + a2)
!     {
!       return a1 + a2;
!     }
! 
!     int
!     test(const int c, volatile int v)
!     {
!       static_assert(is_same<int, decltype(0)>::value == true, "");
!       static_assert(is_same<int, decltype(c)>::value == false, "");
!       static_assert(is_same<int, decltype(v)>::value == false, "");
!       auto ac = c;
!       auto av = v;
!       auto sumi = ac + av + 'x';
!       auto sumf = ac + av + 1.0;
!       static_assert(is_same<int, decltype(ac)>::value == true, "");
!       static_assert(is_same<int, decltype(av)>::value == true, "");
!       static_assert(is_same<int, decltype(sumi)>::value == true, "");
!       static_assert(is_same<int, decltype(sumf)>::value == false, "");
!       static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
!       return (sumf > 0.0) ? sumi : add(c, v);
!     }
! 
!   }
! 
!   namespace test_noexcept
!   {
! 
!     int f() { return 0; }
!     int g() noexcept { return 0; }
! 
!     static_assert(noexcept(f()) == false, "");
!     static_assert(noexcept(g()) == true, "");
! 
!   }
! 
!   namespace test_constexpr
!   {
! 
!     template < typename CharT >
!     unsigned long constexpr
!     strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
!     {
!       return *s ? strlen_c_r(s + 1, acc + 1) : acc;
!     }
! 
!     template < typename CharT >
!     unsigned long constexpr
!     strlen_c(const CharT *const s) noexcept
!     {
!       return strlen_c_r(s, 0UL);
!     }
! 
!     static_assert(strlen_c("") == 0UL, "");
!     static_assert(strlen_c("1") == 1UL, "");
!     static_assert(strlen_c("example") == 7UL, "");
!     static_assert(strlen_c("another\0example") == 7UL, "");
! 
!   }
! 
!   namespace test_rvalue_references
!   {
! 
!     template < int N >
!     struct answer
!     {
!       static constexpr int value = N;
!     };
! 
!     answer<1> f(int&)       { return answer<1>(); }
!     answer<2> f(const int&) { return answer<2>(); }
!     answer<3> f(int&&)      { return answer<3>(); }
! 
!     void
!     test()
!     {
!       int i = 0;
!       const int c = 0;
!       static_assert(decltype(f(i))::value == 1, "");
!       static_assert(decltype(f(c))::value == 2, "");
!       static_assert(decltype(f(0))::value == 3, "");
!     }
! 
!   }
! 
!   namespace test_uniform_initialization
!   {
! 
!     struct test
!     {
!       static const int zero {};
!       static const int one {1};
!     };
! 
!     static_assert(test::zero == 0, "");
!     static_assert(test::one == 1, "");
! 
!   }
! 
!   namespace test_lambdas
!   {
! 
!     void
!     test1()
!     {
!       auto lambda1 = [](){};
!       auto lambda2 = lambda1;
!       lambda1();
!       lambda2();
!     }
! 
!     int
!     test2()
!     {
!       auto a = [](int i, int j){ return i + j; }(1, 2);
!       auto b = []() -> int { return '0'; }();
!       auto c = [=](){ return a + b; }();
!       auto d = [&](){ return c; }();
!       auto e = [a, &b](int x) mutable {
!         const auto identity = [](int y){ return y; };
!         for (auto i = 0; i < a; ++i)
!           a += b--;
!         return x + identity(a + b);
!       }(0);
!       return a + b + c + d + e;
!     }
! 
!     int
!     test3()
!     {
!       const auto nullary = [](){ return 0; };
!       const auto unary = [](int x){ return x; };
!       using nullary_t = decltype(nullary);
!       using unary_t = decltype(unary);
!       const auto higher1st = [](nullary_t f){ return f(); };
!       const auto higher2nd = [unary](nullary_t f1){
!         return [unary, f1](unary_t f2){ return f2(unary(f1())); };
!       };
!       return higher1st(nullary) + higher2nd(nullary)(unary);
!     }
! 
!   }
! 
!   namespace test_variadic_templates
!   {
! 
!     template <int...>
!     struct sum;
! 
!     template <int N0, int... N1toN>
!     struct sum<N0, N1toN...>
!     {
!       static constexpr auto value = N0 + sum<N1toN...>::value;
!     };
! 
!     template <>
!     struct sum<>
!     {
!       static constexpr auto value = 0;
!     };
! 
!     static_assert(sum<>::value == 0, "");
!     static_assert(sum<1>::value == 1, "");
!     static_assert(sum<23>::value == 23, "");
!     static_assert(sum<1, 2>::value == 3, "");
!     static_assert(sum<5, 5, 11>::value == 21, "");
!     static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
! 
!   }
! 
!   // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
!   // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
!   // because of this.
!   namespace test_template_alias_sfinae
!   {
! 
!     struct foo {};
! 
!     template<typename T>
!     using member = typename T::member_type;
! 
!     template<typename T>
!     void func(...) {}
! 
!     template<typename T>
!     void func(member<T>*) {}
! 
!     void test();
! 
!     void test() { func<foo>(0); }
! 
!   }
! 
! }  // namespace cxx11
! 
! #endif  // __cplusplus >= 201103L
! 
! 
! 
! _ACEOF
! if ac_fn_cxx_try_compile "$LINENO"; then :
!   eval $cachevar=yes
! else
!   eval $cachevar=no
! fi
! rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
!            CXX="$ac_save_CXX"
! fi
! eval ac_res=\$$cachevar
! 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
! $as_echo "$ac_res" >&6; }
!         if eval test x\$$cachevar = xyes; then
!           CXX="$CXX $switch"
!           if test -n "$CXXCPP" ; then
!             CXXCPP="$CXXCPP $switch"
!           fi
!           ac_success=yes
!           break
!         fi
!       done
!       if test x$ac_success = xyes; then
!         break
!       fi
!     done
!   fi
!       CXX_FOR_BUILD="$CXX"
!     CXXFLAGS_FOR_BUILD="$CXXFLAGS"
!     CPPFLAGS_FOR_BUILD="$CPPFLAGS"
!     CXX="$ax_cv_cxx_compile_cxx11_orig_cxx"
!     CXXFLAGS="$ax_cv_cxx_compile_cxx11_orig_cxxflags"
!     CPPFLAGS="$ax_cv_cxx_compile_cxx11_orig_cppflags"
!   ac_ext=c
! ac_cpp='$CPP $CPPFLAGS'
! ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
! ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
! ac_compiler_gnu=$ac_cv_c_compiler_gnu
! 
!   if test x$ax_cxx_compile_cxx11_required = xtrue; then
!     if test x$ac_success = xno; then
!       as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5
!     fi
!   fi
!   if test x$ac_success = xno; then
!     HAVE_CXX11_FOR_BUILD=0
!     { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5
! $as_echo "$as_me: No compiler with C++11 support was found" >&6;}
!   else
!     HAVE_CXX11_FOR_BUILD=1
! 
! $as_echo "#define HAVE_CXX11_FOR_BUILD 1" >>confdefs.h
! 
!   fi
! 
! 
!   fi
  fi
  
  # Used for setting $lt_cv_objdir
*************** $as_echo "$as_me: WARNING: GNAT is requi
*** 6490,6498 ****
          esac
  
          # Disable jit if -enable-host-shared not specified
!         case ${add_this_lang}:${language}:${host_shared} in
!           yes:jit:no)
! 	    # PR jit/64780: explicitly specify --enable-host-shared
  	    as_fn_error $? "
  Enabling language \"jit\" requires --enable-host-shared.
  
--- 8488,8501 ----
          esac
  
          # Disable jit if -enable-host-shared not specified
!         # but not if building for Mingw. All code in Windows
!         # is position independent code (PIC).
!         case $target in
!           *mingw*) ;;
!           *)
!           case ${add_this_lang}:${language}:${host_shared} in
!             yes:jit:no)
! 	           # PR jit/64780: explicitly specify --enable-host-shared
  	    as_fn_error $? "
  Enabling language \"jit\" requires --enable-host-shared.
  
*************** If you want to build both the jit and th
*** 6503,6519 ****
  best to do this via two separate configure/builds, in separate
  directories, to avoid imposing the performance cost of
  --enable-host-shared on the regular compiler." "$LINENO" 5
! 	    ;;
!           all:jit:no)
! 	    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-host-shared required to build $language" >&5
  $as_echo "$as_me: WARNING: --enable-host-shared required to build $language" >&2;}
!             add_this_lang=unsupported
!             ;;
!           *:jit:no)
!             # Silently disable.
!             add_this_lang=unsupported
!             ;;
! 	esac
  
          # Disable a language that is unsupported by the target.
  	case "${add_this_lang}: $unsupported_languages " in
--- 8506,8524 ----
  best to do this via two separate configure/builds, in separate
  directories, to avoid imposing the performance cost of
  --enable-host-shared on the regular compiler." "$LINENO" 5
! 	            ;;
!             all:jit:no)
! 	      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-host-shared required to build $language" >&5
  $as_echo "$as_me: WARNING: --enable-host-shared required to build $language" >&2;}
!               add_this_lang=unsupported
!               ;;
!             *:jit:no)
!               # Silently disable.
!               add_this_lang=unsupported
!               ;;
! 	        esac
!           ;;
!         esac
  
          # Disable a language that is unsupported by the target.
  	case "${add_this_lang}: $unsupported_languages " in
*************** fi
*** 7297,7303 ****
  # or bootstrap-ubsan, bootstrap it.
  if echo " ${target_configdirs} " | grep " libsanitizer " > /dev/null 2>&1; then
    case "$BUILD_CONFIG" in
!     *bootstrap-asan* | *bootstrap-ubsan* )
        bootstrap_target_libs=${bootstrap_target_libs}target-libsanitizer,
        bootstrap_fixincludes=yes
        ;;
--- 9302,9308 ----
  # or bootstrap-ubsan, bootstrap it.
  if echo " ${target_configdirs} " | grep " libsanitizer " > /dev/null 2>&1; then
    case "$BUILD_CONFIG" in
!     *bootstrap-hwasan* | *bootstrap-asan* | *bootstrap-ubsan* )
        bootstrap_target_libs=${bootstrap_target_libs}target-libsanitizer,
        bootstrap_fixincludes=yes
        ;;
diff -Nrcpad gcc-10.3.0/configure.ac gcc-11.1.0/configure.ac
*** gcc-10.3.0/configure.ac	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/configure.ac	Tue Apr 27 10:00:12 2021
*************** m4_include(config/acx.m4)
*** 23,28 ****
--- 23,29 ----
  m4_include(config/override.m4)
  m4_include(config/proginstall.m4)
  m4_include(config/elf.m4)
+ m4_include(config/ax_cxx_compile_stdcxx.m4)
  m4_include([libtool.m4])
  m4_include([ltoptions.m4])
  m4_include([ltsugar.m4])
*************** build_tools="build-texinfo build-flex bu
*** 131,137 ****
  
  # these libraries are used by various programs built for the host environment
  #f
! host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libdecnumber gmp mpfr mpc isl libelf libiconv libctf"
  
  # these tools are built for the host environment
  # Note, the powerpc-eabi build depends on sim occurring before gdb in order to
--- 132,138 ----
  
  # these libraries are used by various programs built for the host environment
  #f
! host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libcody libdecnumber gmp mpfr mpc isl libelf libiconv libctf"
  
  # these tools are built for the host environment
  # Note, the powerpc-eabi build depends on sim occurring before gdb in order to
*************** host_libs="intl libiberty opcodes bfd re
*** 139,145 ****
  # binutils, gas and ld appear in that order because it makes sense to run
  # "make check" in that particular order.
  # If --enable-gold is used, "gold" may replace "ld".
! host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gotools"
  
  # these libraries are built for the target environment, and are built after
  # the host libraries and the host tools (which may be a cross compiler)
--- 140,146 ----
  # binutils, gas and ld appear in that order because it makes sense to run
  # "make check" in that particular order.
  # If --enable-gold is used, "gold" may replace "ld".
! host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gotools c++tools"
  
  # these libraries are built for the target environment, and are built after
  # the host libraries and the host tools (which may be a cross compiler)
*************** case ,${enable_languages}, in
*** 723,731 ****
      ;;
    *)
      case "${target}" in
-       *-*-darwin*)
- 	unsupported_languages="$unsupported_languages d"
-         ;;
        bpf-*-*)
  	unsupported_languages="$unsupported_languages d"
  	;;
--- 724,729 ----
*************** case "$have_compiler:$host:$target:$enab
*** 1463,1472 ****
      ;;
  esac
  
! # When bootstrapping with GCC, build stage 1 in C++98 mode to ensure that a
! # C++98 compiler can still start the bootstrap.
  if test "$enable_bootstrap:$GXX" = "yes:yes"; then
!   CXX="$CXX -std=gnu++98"
  fi
  
  # Used for setting $lt_cv_objdir
--- 1461,1477 ----
      ;;
  esac
  
! # When bootstrapping with GCC, build stage 1 in C++11 mode to ensure that a
! # C++11 compiler can still start the bootstrap.  Otherwise, if building GCC,
! # require C++11 (or higher).
  if test "$enable_bootstrap:$GXX" = "yes:yes"; then
!   CXX="$CXX -std=c++11"
! elif test "$have_compiler" = yes; then
!   AX_CXX_COMPILE_STDCXX(11)
! 
!   if test "${build}" != "${host}"; then
!     AX_CXX_COMPILE_STDCXX(11, [], [], [_FOR_BUILD])
!   fi
  fi
  
  # Used for setting $lt_cv_objdir
*************** if test -d ${srcdir}/gcc; then
*** 2080,2088 ****
          esac
  
          # Disable jit if -enable-host-shared not specified
!         case ${add_this_lang}:${language}:${host_shared} in
!           yes:jit:no)
! 	    # PR jit/64780: explicitly specify --enable-host-shared
  	    AC_MSG_ERROR([
  Enabling language "jit" requires --enable-host-shared.
  
--- 2085,2098 ----
          esac
  
          # Disable jit if -enable-host-shared not specified
!         # but not if building for Mingw. All code in Windows
!         # is position independent code (PIC).
!         case $target in
!           *mingw*) ;;
!           *)
!           case ${add_this_lang}:${language}:${host_shared} in
!             yes:jit:no)
! 	           # PR jit/64780: explicitly specify --enable-host-shared
  	    AC_MSG_ERROR([
  Enabling language "jit" requires --enable-host-shared.
  
*************** If you want to build both the jit and th
*** 2093,2108 ****
  best to do this via two separate configure/builds, in separate
  directories, to avoid imposing the performance cost of
  --enable-host-shared on the regular compiler.])
! 	    ;;
!           all:jit:no)
! 	    AC_MSG_WARN([--enable-host-shared required to build $language])
!             add_this_lang=unsupported
!             ;;
!           *:jit:no)
!             # Silently disable.
!             add_this_lang=unsupported
!             ;;
! 	esac
  
          # Disable a language that is unsupported by the target.
  	case "${add_this_lang}: $unsupported_languages " in
--- 2103,2120 ----
  best to do this via two separate configure/builds, in separate
  directories, to avoid imposing the performance cost of
  --enable-host-shared on the regular compiler.])
! 	            ;;
!             all:jit:no)
! 	      AC_MSG_WARN([--enable-host-shared required to build $language])
!               add_this_lang=unsupported
!               ;;
!             *:jit:no)
!               # Silently disable.
!               add_this_lang=unsupported
!               ;;
! 	        esac
!           ;;
!         esac
  
          # Disable a language that is unsupported by the target.
  	case "${add_this_lang}: $unsupported_languages " in
*************** fi
*** 2799,2805 ****
  # or bootstrap-ubsan, bootstrap it.
  if echo " ${target_configdirs} " | grep " libsanitizer " > /dev/null 2>&1; then
    case "$BUILD_CONFIG" in
!     *bootstrap-asan* | *bootstrap-ubsan* )
        bootstrap_target_libs=${bootstrap_target_libs}target-libsanitizer,
        bootstrap_fixincludes=yes
        ;;
--- 2811,2817 ----
  # or bootstrap-ubsan, bootstrap it.
  if echo " ${target_configdirs} " | grep " libsanitizer " > /dev/null 2>&1; then
    case "$BUILD_CONFIG" in
!     *bootstrap-hwasan* | *bootstrap-asan* | *bootstrap-ubsan* )
        bootstrap_target_libs=${bootstrap_target_libs}target-libsanitizer,
        bootstrap_fixincludes=yes
        ;;
diff -Nrcpad gcc-10.3.0/contrib/ChangeLog gcc-11.1.0/contrib/ChangeLog
*** gcc-10.3.0/contrib/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-11.1.0/contrib/ChangeLog	Tue Apr 27 10:00:12 2021
***************
*** 1,25 ****
! 2021-04-08  Release Manager
  
! 	* GCC 10.3.0 released.
  
! 2021-03-19  Matthias Klose  <doko@ubuntu.com>
  
! 	Backported from master:
! 	2021-03-19  Matthias Klose  <doko@ubuntu.com>
  
  	* texi2pod.pl: Substitute @tie{} with a space for the man pages.
  
  2021-01-28  Eric Botcazou  <ebotcazou@adacore.com>
  
  	PR lto/85574
  	* compare-lto: Deal with PE-COFF executables specifically.
  
! 2021-01-07  Martin Liska  <mliska@suse.cz>
  
! 	* gcc-changelog/git_commit.py: Sync from master.
! 	* gcc-changelog/git_email.py: Likewise.
  	* gcc-changelog/git_repository.py: Likewise.
! 	* gcc-changelog/test_email.py: Likewise.
  	* gcc-changelog/test_patches.txt: Likewise.
  
  2020-11-25  Martin Liska  <mliska@suse.cz>
--- 1,186 ----
! 2021-04-27  Release Manager
  
! 	* GCC 11.1.0 released.
  
! 2021-04-12  Martin Liska  <mliska@suse.cz>
  
! 	* gcc-changelog/git_commit.py: Do not allow space in long lines.
! 
! 2021-04-12  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Support long filenames
! 	in entries.
! 	* gcc-changelog/test_email.py: Test it.
! 	* gcc-changelog/test_patches.txt: Likewise.
! 
! 2021-03-23  Martin Liska  <mliska@suse.cz>
! 
! 	* mklog.py: Fix broken tests.
! 
! 2021-03-22  Martin Liska  <mliska@suse.cz>
! 
! 	* mklog.py: Add --directory argument.
! 
! 2021-03-19  Matthias Klose  <doko@ubuntu.com>
  
  	* texi2pod.pl: Substitute @tie{} with a space for the man pages.
  
+ 2021-03-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcc-changelog/git_update_version.py: Skip one problematic
+ 	commit.
+ 
+ 2021-03-12  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcc-changelog/git_commit.py: Allow deletion of ChangeLog
+ 	files.
+ 	* gcc-changelog/setup.cfg: Set line limit to 120 characters.
+ 	* gcc-changelog/test_email.py: Add test.
+ 	* gcc-changelog/test_patches.txt: Likewise.
+ 	* gcc-changelog/git_email.py: Fix parsing of deleted files.
+ 
+ 2021-02-08  Mike Frysinger  <vapier@gentoo.org>
+ 
+ 	* mklog.py (generated_files): New set.
+ 	(generate_changelog): Add entries based on generated_files.
+ 
+ 2021-02-03  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	* gcc_update (files_and_dependencies): Add dependency for
+ 	gcc/config/rs6000/fusion.md on gcc/config/rs6000/genfusion.md.
+ 
  2021-01-28  Eric Botcazou  <ebotcazou@adacore.com>
  
  	PR lto/85574
  	* compare-lto: Deal with PE-COFF executables specifically.
  
! 2021-01-14  Martin Liska  <mliska@suse.cz>
  
! 	* mklog.py: Fix infinite loop for unsupported files.
! 
! 2021-01-13  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Support wrapping of functions
! 	in parentheses that can take multiple lines.
! 	* gcc-changelog/test_email.py: Add tests for it.
! 	* gcc-changelog/test_patches.txt: Add 2 patches.
! 
! 2021-01-13  Martin Liska  <mliska@suse.cz>
! 
! 	* mklog.py: Parse also define_insn_and_split and similar
! 	directives in .md files.
! 	* test_mklog.py: Test.
! 
! 2021-01-13  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Allow modifications of older
! 	ChangeLog (or specific) files without need to make a ChangeLog
! 	entry.
! 	* gcc-changelog/test_email.py: Test it.
! 	* gcc-changelog/test_patches.txt: Add new patch.
! 
! 2021-01-11  Martin Liska  <mliska@suse.cz>
! 
! 	* update-copyright.py: Port to python3 by guessing encoding
! 	(first utf8, then iso8859). Add 2 more ignores: .png and .pyc.
! 
! 2021-01-06  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Add decode_path function.
! 	* gcc-changelog/git_email.py: Use it in order to solve
! 	utf8 encoding filename issues.
  	* gcc-changelog/git_repository.py: Likewise.
! 	* gcc-changelog/test_email.py: Test it.
! 
! 2021-01-04  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* update-copyright.py: Add AMD and Ulf Adams as external authors.
! 
! 2021-01-04  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* update-copyright.py: Use 8 spaces instead of tab to indent.
! 
! 2021-01-04  Martin Liska  <mliska@suse.cz>
! 
! 	* mklog.py: Add --update-copyright option which adds:
! 	"Update copyright years." to ChangeLog files belonging
! 	to a modified file.
! 
! 2021-01-04  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Skip Update copyright
! 	years commits.
! 
! 2020-12-21  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Add new error for quoted
! 	filenames.
! 	* gcc-changelog/test_email.py: Test it.
! 	* gcc-changelog/test_patches.txt: Test it.
! 
! 2020-12-21  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/test_email.py: New test.
! 	* gcc-changelog/test_patches.txt: Likewise.
! 
! 2020-12-17  Nathan Sidwell  <nathan@acm.org>
! 
! 	PR bootstrap/98300
! 	* gcc_update: Add c++tools/config.h.in.
! 
! 2020-12-15  Nathan Sidwell  <nathan@acm.org>
! 
! 	* gcc_update: Add c++tools & libcody.
! 
! 2020-12-15  Nathan Sidwell  <nathan@acm.org>
! 
! 	* gcc-changelog/git_commit.py (changelog_locations): Add
! 	libcody, c++tools.
! 
! 2020-12-08  Martin Liska  <mliska@suse.cz>
! 
! 	* filter-clang-warnings.py: Filter more cases.
! 
! 2020-12-08  Martin Liska  <mliska@suse.cz>
! 
! 	* filter-clang-warnings.py: Modernize and filter 2 more
! 	patterns.
! 
! 2020-12-04  Martin Liska  <mliska@suse.cz>
! 
! 	* check-params-in-docs.py: use flake8 and add some
! 	tweaks to ignore aarch64 params.
! 
! 2020-12-02  Jason Merrill  <jason@redhat.com>
! 
! 	* gcc-git-customization.sh: Configure sendemail.to.
! 
! 2020-11-30  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Suggest close file for
! 	'unchanged file mentioned in a ChangeLog' error.
! 	* gcc-changelog/test_email.py: Test it.
! 
! 2020-11-30  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Allow sub-directory wildcard
! 	changelog entry. Fix a typo caused by apostrophe escaping.
! 	* gcc-changelog/test_email.py: Test it.
! 	* gcc-changelog/test_patches.txt: Likewise.
! 
! 2020-11-30  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	* gcc-changelog/git_commit.py (wildcard_prefixes): Add libstdc++
! 	testsuite directory.
! 
! 2020-11-30  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Allow wildcard pattern only.
! 
! 2020-11-27  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Use regex for cherry pick prefix.
! 	* gcc-changelog/test_email.py: Test it.
  	* gcc-changelog/test_patches.txt: Likewise.
  
  2020-11-25  Martin Liska  <mliska@suse.cz>
***************
*** 27,83 ****
  	* gcc-changelog/git_commit.py: Use revert_regex instead
  	of string prefix.  Convert sets to literals.
  
  2020-11-06  Martin Liska  <mliska@suse.cz>
  
! 	* gcc-changelog/git_commit.py: Sync.
! 	* gcc-changelog/git_email.py: Likewise.
! 	* gcc-changelog/git_repository.py: Likewise.
! 	* gcc-changelog/test_email.py: Likewise.
! 	* gcc-changelog/test_patches.txt: Likewise.
  	* gcc-changelog/setup.cfg: New file.
  
  2020-07-29  Martin Liska  <mliska@suse.cz>
  
  	* git-backport.py: fix how are ChangeLog paths combined.
  
! 2020-07-23  Martin Liska  <mliska@suse.cz>
  
! 	Backported from master:
! 	2020-07-23  Martin Liska  <mliska@suse.cz>
  
  	* gcc-changelog/git_commit.py: When reverting a backport,
  	we should print only Revert header.
  
! 2020-07-23  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	Backported from master:
! 	2020-07-17  Jonathan Wakely  <jwakely@redhat.com>
  
  	* gcc-changelog/git_update_version.py: Fix typo.
  
! 2020-07-23  Release Manager
! 
! 	* GCC 10.2.0 released.
  
! 2020-07-08  Alexandre Oliva  <oliva@adacore.com>
  
! 	Backported from master:
! 	2020-07-07  Alexandre Oliva  <oliva@adacore.com>
! 		    Martin Liska  <mliska@suse.cz>
  
  	* gcc-changelog/git_commit.py: Support CASE and COND.
  	* gcc-changelog/test_patches.txt: Add test.
  	* gcc-changelog/test_email.py: Add test.
  
! 2020-07-02  Martin Liska  <mliska@suse.cz>
  
! 	* gcc-changelog/git_check_commit.py: New file.
! 	* gcc-changelog/git_commit.py: New file.
! 	* gcc-changelog/git_email.py: New file.
! 	* gcc-changelog/git_repository.py: New file.
! 	* gcc-changelog/git_update_version.py: New file.
! 	* gcc-changelog/test_email.py: New file.
! 	* gcc-changelog/test_patches.txt: New file.
  
  2020-05-29  Martin Liska  <mliska@suse.cz>
  
--- 188,448 ----
  	* gcc-changelog/git_commit.py: Use revert_regex instead
  	of string prefix.  Convert sets to literals.
  
+ 2020-11-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* mklog.py: Do not call read on an input stream.
+ 	Fix some flake8 issues.
+ 
+ 2020-11-07  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	* unicode/EastAsianWidth.txt: Update to Unicode 13.0.0.
+ 	* unicode/PropList.txt: Likewise.
+ 	* unicode/README: Likewise.
+ 	* unicode/UnicodeData.txt: Likewise.
+ 	* unicode/from_glibc/unicode_utils.py: Update to latest glibc version.
+ 	* unicode/from_glibc/utf8_gen.py: Likewise.
+ 
  2020-11-06  Martin Liska  <mliska@suse.cz>
  
! 	* gcc-changelog/git_commit.py: Add new check.
! 	* gcc-changelog/test_email.py: Test it.
! 	* gcc-changelog/test_patches.txt: Add new patch.
! 
! 2020-11-04  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_repository.py: Set strict=True
! 	for parse_git_revisions as a default.
! 
! 2020-11-04  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	* gcc-changelog/git_commit.py (item_parenthesis_empty_regex,
! 	item_parenthesis_regex): Add.
! 	(check_for_empty_description): Use them.
! 	* gcc-changelog/test_email.py (test_emptry_entry_desc,
! 	test_emptry_entry_desc_2): Add.
! 	* gcc-changelog/test_patches.txt: Add two testcases for it.
! 
! 2020-11-03  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	* gcc-changelog/git_email.py: Add unidiff_supports_renaming check.
! 
! 2020-11-03  Martin Liska  <mliska@suse.cz>
! 
  	* gcc-changelog/setup.cfg: New file.
  
+ 2020-10-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcc-changelog/git_commit.py: Handle empty groups in
+ 	file description.
+ 	* gcc-changelog/test_email.py: New test.
+ 	* gcc-changelog/test_patches.txt: Likewise.
+ 
+ 2020-09-21  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* mklog.py: Parse first 10 lines for PR/DR number
+ 	not only the first line.
+ 
+ 2020-09-17  Dimitrij Mojoski  <dmjpp@hotmail.com>
+ 
+ 	* clang-format: Autodetect C++ standard in use rather than
+ 	forcing C++03.
+ 
+ 2020-08-26  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* config-list.mk (LIST): Add OPT-enable-obsolete to tilegx-linux-gnu,
+ 	tilegxbe-linux-gnu, and tilepro-linux-gnu.
+ 
  2020-07-29  Martin Liska  <mliska@suse.cz>
  
  	* git-backport.py: fix how are ChangeLog paths combined.
  
! 2020-07-23  Patrick Palka  <ppalka@redhat.com>
  
! 	* vimrc (SetStyle): Also inspect &filetype to determine whether
! 	a file is C-like.
! 
! 2020-07-23  Martin Liska  <mliska@suse.cz>
  
  	* gcc-changelog/git_commit.py: When reverting a backport,
  	we should print only Revert header.
  
! 2020-07-17  Jonathan Wakely  <jwakely@redhat.com>
  
  	* gcc-changelog/git_update_version.py: Fix typo.
  
! 2020-07-10  Mike Nolta  <mike@nolta.net>
  
! 	* download_prerequisites: Don't pass wget options to curl.
  
! 2020-07-07  Alexandre Oliva  <oliva@adacore.com>
! 	    Martin Liska  <mliska@suse.cz>
  
  	* gcc-changelog/git_commit.py: Support CASE and COND.
  	* gcc-changelog/test_patches.txt: Add test.
  	* gcc-changelog/test_email.py: Add test.
  
! 2020-06-30  Martin Liska  <mliska@suse.cz>
  
! 	* gcc-changelog/git_repository.py: Support older releases of
! 	GitPython when renamed_file was named renamed.
! 
! 2020-06-30  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_check_commit.py: Print revision
! 	of original_info.
! 	* gcc-changelog/git_commit.py: Support Revert commits.
! 
! 2020-06-30  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_check_commit.py: Use GitInfo
! 	* gcc-changelog/git_commit.py: Add GitInfo class.
! 	* gcc-changelog/git_email.py: Use GitInfo class.
! 	* gcc-changelog/git_repository.py: Likewise.
! 
! 2020-06-24  Ilya Leoshkevich  <iii@linux.ibm.com>
! 
! 	* download_prerequisites: Support AIX and OpenBSD unames.
! 	Pipe `{gzip,bzip2} -d` to `tar -xf -`.
! 
! 2020-06-18  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_update_version.py: First checkout and then
! 	run git pull ---rebase.
! 
! 2020-06-18  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_update_version.py: Support merge commits
! 	and walk only on the branch that is being merged and generate
! 	missing ChangeLog entries.
! 
! 2020-06-18  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Fix Backported from timestamp when
! 	use_commit_ts=True is used.
! 
! 2020-06-17  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Print 'Backported from master'
! 	heading to backported commits.
! 	* gcc-changelog/test_email.py: Test it.
! 	* gcc-changelog/test_patches.txt: Add new patch.
! 	* gcc-changelog/git_repository.py: Add commit_to_date hook.
! 	* gcc-changelog/git_email.py: Add fuzzy implementation
! 	of commit_to_date_hook.
! 
! 2020-06-11  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	* prepare-commit-msg: Use the gcc-config.mklog-hook-type Git
! 	config key instead of the GCC_FORCE_MKLOG environment variable.
! 	Optionally disable generating a new ChangeLog template for
! 	amended commits when the existing log is still OK.
! 
! 2020-06-11  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_update_version.py: Add --curent argument.
! 
! 2020-06-11  Martin Liska  <mliska@suse.cz>
! 
! 	* prepare-commit-msg: Replace ENV variable with a git config
! 	value.
! 
! 2020-06-11  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	* prepare-commit-msg: Use 'tee' to save the diff to a file
! 	instead of running 'git diff' twice.
! 
! 2020-06-10  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Fix renamed files in
! 	parse_git_name_status.
! 	* gcc-changelog/test_email.py: Add test for it.
! 
! 2020-06-10  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Add more supported prefixes.
! 	* gcc-changelog/test_email.py: Fix one flake8 error.
! 	* gcc-changelog/test_patches.txt: Add tested for newly
! 	supported prefixes.
! 
! 2020-06-10  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	* gcc-changelog/git_commit.py (GitCommit.parse_changelog):
! 	Improve error strings.
! 	* gcc-changelog/test_email.py: Update expected errors.
! 
! 2020-06-09  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	* gcc-changelog/git_email.py: Set exit status on error.
! 
! 2020-06-09  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Fix ChangeLog regex in order to
! 	match the top-level ChangeLog.
! 	* gcc-changelog/test_email.py: Add test.
! 	* gcc-changelog/test_patches.txt: Likewise.
! 
! 2020-06-02  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Support foo/bar/*: patterns in
! 	wildcard_prefixes locations.
! 	* gcc-changelog/test_email.py: Test it.
! 	* gcc-changelog/test_patches.txt: Add 3 new patches.
! 
! 2020-06-02  Iain Buclaw  <ibuclaw@gdcproject.org>
! 
! 	* gcc-changelog/git_commit.py (ignored_prefixes): Add
! 	gcc/testsuite/gdc.test/.
! 
! 2020-06-02  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	* gcc-changelog/test_email.py (TestGccChangelog.test_long_lines):
! 	Update expected error message.
! 
! 2020-06-02  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	* gcc-changelog/git_commit.py (GitCommit.parse_changelog): Fix
! 	grammar.
! 
! 2020-06-02  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	* prepare-commit-msg: Do nothing if the mklog.py script isn't
! 	present.
! 
! 2020-06-02  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	* gcc-changelog/git_commit.py (GitCommit.check_mentioned_files):
! 	Improve error text.
! 
! 2020-05-31  Iain Buclaw  <ibuclaw@gdcproject.org>
! 
! 	* config-list.mk (LIST): Add v850e1-elf.
! 
! 2020-05-31  Iain Buclaw  <ibuclaw@gdcproject.org>
! 
! 	* config-list.mk (LIST): Add or1k-elf, or1k-linux-*, and or1k-rtems.
! 
! 2020-05-31  Iain Buclaw  <ibuclaw@gdcproject.org>
! 
! 	* config-list.mk (LIST): Remove arm-wrs-vxworks.
! 
! 2020-05-31  Iain Buclaw  <ibuclaw@gdcproject.org>
! 
! 	* config-list.mk (LIST): Remove cris-linux, crisv32-elf, and
! 	crisv32-linux.
! 
! 2020-05-31  Iain Buclaw  <ibuclaw@gdcproject.org>
! 
! 	* config-list.mk (LIST): Add pru-elf.
! 
! 2020-05-29  Iain Buclaw  <ibuclaw@gdcproject.org>
! 
! 	* config-list.mk (LIST): Remove rs6000-ibm-aix5.3.0.
! 
! 2020-05-29  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Find empty change descriptions.
! 	* gcc-changelog/test_email.py: New test.
! 	* gcc-changelog/test_patches.txt: New patch that tests that.
  
  2020-05-29  Martin Liska  <mliska@suse.cz>
  
***************
*** 86,102 ****
  	git cherry pick.
  	Run cherry-pick --continue without editor.
  
  2020-05-27  Martin Liska  <mliska@suse.cz>
  
  	* git-backport.py: New file.
  
! 2020-05-07  Release Manager
  
! 	* GCC 10.1.0 released.
  
! 2020-05-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	* gennews (files): Add files for GCC 10.
  
  2020-04-17  Martin Liska  <mliska@suse.cz>
  
--- 451,676 ----
  	git cherry pick.
  	Run cherry-pick --continue without editor.
  
+ 2020-05-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcc-changelog/git_commit.py: Properly
+ 	handle duplicite authors.
+ 	* gcc-changelog/test_email.py: New test.
+ 	* gcc-changelog/test_patches.txt: New patch.
+ 
+ 2020-05-28  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* gcc-changelog/git_email.py (GitEmail.__init__): Interpret file
+ 	renamings as a file deletion plus a file addition.
+ 	* gcc-changelog/git_repository.py (parse_git_revisions):
+ 	Likewise.
+ 	* gcc-changelog/test_email.py: New testcase.
+ 	* gcc-changelog/test_patches.txt: New testcase.
+ 
+ 2020-05-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	* check-params-in-docs.py: Update to new format
+ 	of help.  Apply flake8 corrections.
+ 
+ 2020-05-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	* mklog.py: Support renaming of files.
+ 	One needs unidiff 0.6.0+.
+ 	* test_mklog.py: Test it.
+ 
  2020-05-27  Martin Liska  <mliska@suse.cz>
  
+ 	* gcc-git-customization.sh: Use git-backport.py to drop
+ 	all changes for ChangeLog files.
  	* git-backport.py: New file.
  
! 2020-05-27  Martin Liska  <mliska@suse.cz>
  
! 	* gcc-git-customization.sh: Rename
! 	commit-mklog to gcc-commit-mklog.
  
! 2020-05-27  Martin Liska  <mliska@suse.cz>
  
! 	* prepare-commit-msg: Save diff to a file if
! 	the GCC_GIT_DIFF_FILE variable is set.
! 
! 2020-05-26  Pierre-Marie de Rodat  <derodat@adacore.com>
! 
! 	* gcc-changelog/git_commit.py (ChangeLogEntry): Handle entries
! 	with multi-line file lists.
! 	* gcc-changelog/test_email.py: New testcase.
! 	* gcc-changelog/test_patches.txt: Likewise.
! 
! 2020-05-26  Pierre-Marie de Rodat  <derodat@adacore.com>
! 
! 	* gcc-changelog/git_update_version.py: Close file objects after
! 	use.
! 	* gcc-changelog/git_email.py: Likewise.
! 	* gcc-changelog/test_email.py: Likewise.
! 
! 2020-05-26  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_update_version.py: Add 2 new options.
! 
! 2020-05-26  Alexandre Oliva  <oliva@gnu.org>
! 
! 	* gcc-changelog/git_commit.py (changelog_regex): Accept optional
! 	'for' prefix.
! 
! 2020-05-26  Alexandre Oliva  <oliva@adacore.com>
! 
! 	* compare-debug: Adjust for .gkd files named as dump files,
! 	with the source suffix rather than the object suffix.
! 
! 2020-05-26  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Parse changelog entries for
! 	ignored locations.
! 	* gcc-changelog/test_email.py: Add new test for it.
! 	* gcc-changelog/test_patches.txt: Likewise.
! 
! 2020-05-26  Jason Merrill  <jason@redhat.com>
! 
! 	* prepare-commit-msg: New file.
! 	* gcc-git-customization.sh: Install it.  Add commit-mklog alias.
! 	* mklog.py: Add new option -c which appends
! 	to a ChangeLog file.
! 
! 2020-05-25  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Add trailing '/'
! 	for libdruntime.  Allow empty changelog for
! 	only ignored files.
! 	* gcc-changelog/test_email.py: New test for go
! 	patch in ignored location.
! 	* gcc-changelog/test_patches.txt: Add test.
! 
! 2020-05-22  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* gcc-changelog/git_commit.py: Add trailing / to
! 	gcc/testsuite/go.test/test and replace gcc/go/frontend/
! 	with gcc/go/gofrontend/ in ignored locations.
! 
! 2020-05-22  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Add gcc/testsuite/go.test/test
! 	to ignored locations.
! 
! 2020-05-21  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_update_version.py: Prepare the script, the
! 	only missing piece is pushing of the updated branches.
! 
! 2020-05-21  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Support DR entries/
! 	* gcc-changelog/test_email.py: New test for it.
! 	* gcc-changelog/test_patches.txt: New patch for it.
! 
! 2020-05-21  Martin Liska  <mliska@suse.cz>
! 
! 	* mklog.py: Support DR parsing.
! 	* test_mklog.py: New test for DR parsing.
! 
! 2020-05-20  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Add author_tuple
! 	only if not present in author_lines.
! 	* gcc-changelog/test_email.py: New test.
! 	* gcc-changelog/test_patches.txt: Add new patch.
! 
! 2020-05-20  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Refactor to make flake8 happy.
! 	* gcc-changelog/test_email.py: Add new test.
! 	* gcc-changelog/test_patches.txt: Add new patch.
! 
! 2020-05-20  Frederik Harwath  <frederik@codesourcery.com>
! 
! 	* gcc-changelog/git_commit.py: Skip over lines starting
! 	with "Reviewed-by: ", "Reviewed-on: ", or "Signed-off-by: "
! 
! 2020-05-20  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_check_commit.py: Change
! 	--allow-non-strict-mode to --non-strict-mode.
! 
! 2020-05-20  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Support cherry pick
! 	prefix.
! 	* gcc-changelog/test_email.py: Test it.
! 	* gcc-changelog/test_patches.txt: Add new patch.
! 	* gcc-git-customization.sh: Add gcc-backport.
! 
! 2020-05-19  Martin Liska  <mliska@suse.cz>
! 
! 	* mklog.py: Use REST API for bug title downloading.
! 
! 2020-05-19  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Add param use_commit_ts
! 	for to_changelog_entries.
! 	* gcc-changelog/git_update_version.py: Se use_commit_ts to True.
! 
! 2020-05-19  Martin Liska  <mliska@suse.cz>
! 
! 	* mklog.py: Skip GTY for struct names.  Make flake8 happy.
! 	* test_mklog.py: Add test for GTY.
! 
! 2020-05-19  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_update_version.py:
! 	Fill up entries in reverse order.
! 
! 2020-05-19  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-git-customization.sh: Add
! 	alias.gcc-mklog new hook.
! 	* mklog.py: New file.
! 	* test_mklog.py: New file.
! 
! 2020-05-19  Martin Liska  <mliska@suse.cz>
! 
! 	* legacy/mklog: Moved from mklog.
! 	* legacy/mklog.pl: Moved from mklog.pl.
! 
! 2020-05-19  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-git-customization.sh: Add gcc-verify alias
! 	that uses contrib/gcc-changelog/git_check_commit.py.
! 
! 2020-05-15  Andrew Burgess  <andrew.burgess@embecosm.com>
! 
! 	* dg-extract-results.py: Handle GDB specific test types.
! 	* dg-extract-results.sh: Likewise.
! 
! 2020-05-14  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/test_email.py: New file.
! 	* gcc-changelog/test_patches.txt: New file.
! 
! 2020-05-13  Patrick Palka  <ppalka@redhat.com>
! 
! 	* vimrc: Reduce textwidth to 72 for Git commit messages.
! 
! 2020-05-13  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_check_commit.py: Add default argument HEAD
! 	for revisions and improve error message output.
! 
! 2020-05-13  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Restore print_output syntax
! 	in git_commit.py.
! 
! 2020-05-13  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_check_commit.py: New file.
! 	* gcc-changelog/git_commit.py: New file.
! 	* gcc-changelog/git_email.py: New file.
! 	* gcc-changelog/git_repository.py: New file.
! 	* gcc-changelog/git_update_version.py: New file.
  
  2020-04-17  Martin Liska  <mliska@suse.cz>
  
diff -Nrcpad gcc-10.3.0/contrib/check-params-in-docs.py gcc-11.1.0/contrib/check-params-in-docs.py
*** gcc-10.3.0/contrib/check-params-in-docs.py	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/check-params-in-docs.py	Tue Apr 27 10:00:12 2021
***************
*** 22,37 ****
  #
  #
  
- import sys
- import json
  import argparse
  
- from itertools import *
  
  def get_param_tuple(line):
!     line = line.strip()
      i = line.find(' ')
!     return (line[:i], line[i:].strip())
  
  parser = argparse.ArgumentParser()
  parser.add_argument('texi_file')
--- 22,41 ----
  #
  #
  
  import argparse
+ import sys
+ from itertools import dropwhile, takewhile
  
  
  def get_param_tuple(line):
!     line = line.strip().replace('--param=', '')
      i = line.find(' ')
!     name = line[:i]
!     if '=' in name:
!         name = name[:name.find('=')]
!     description = line[i:].strip()
!     return (name, description)
! 
  
  parser = argparse.ArgumentParser()
  parser.add_argument('texi_file')
*************** parser.add_argument('params_output')
*** 39,45 ****
  
  args = parser.parse_args()
  
! ignored = set(['logical-op-non-short-circuit'])
  params = {}
  
  for line in open(args.params_output).readlines():
--- 43,49 ----
  
  args = parser.parse_args()
  
! ignored = {'logical-op-non-short-circuit'}
  params = {}
  
  for line in open(args.params_output).readlines():
*************** for line in open(args.params_output).rea
*** 49,69 ****
  
  # Find section in .texi manual with parameters
  texi = ([x.strip() for x in open(args.texi_file).readlines()])
! texi = dropwhile(lambda x: not 'item --param' in x, texi)
! texi = takewhile(lambda x: not '@node Instrumentation Options' in x, texi)
  texi = list(texi)[1:]
  
  token = '@item '
  texi = [x[len(token):] for x in texi if x.startswith(token)]
  sorted_texi = sorted(texi)
  
  texi_set = set(texi) - ignored
  params_set = set(params.keys()) - ignored
  
  extra = texi_set - params_set
  if len(extra):
      print('Extra:')
      print(extra)
  
  missing = params_set - texi_set
  if len(missing):
--- 53,79 ----
  
  # Find section in .texi manual with parameters
  texi = ([x.strip() for x in open(args.texi_file).readlines()])
! texi = dropwhile(lambda x: 'item --param' not in x, texi)
! texi = takewhile(lambda x: '@node Instrumentation Options' not in x, texi)
  texi = list(texi)[1:]
  
  token = '@item '
  texi = [x[len(token):] for x in texi if x.startswith(token)]
+ # skip digits
+ texi = [x for x in texi if not x[0].isdigit()]
+ # skip aarch64 params
+ texi = [x for x in texi if not x.startswith('aarch64')]
  sorted_texi = sorted(texi)
  
  texi_set = set(texi) - ignored
  params_set = set(params.keys()) - ignored
  
+ success = True
  extra = texi_set - params_set
  if len(extra):
      print('Extra:')
      print(extra)
+     success = False
  
  missing = params_set - texi_set
  if len(missing):
*************** if len(missing):
*** 72,77 ****
--- 82,90 ----
          print('@item ' + m)
          print(params[m])
          print()
+     success = False
  
  if texi != sorted_texi:
      print('WARNING: not sorted alphabetically!')
+ 
+ sys.exit(0 if success else 1)
diff -Nrcpad gcc-10.3.0/contrib/clang-format gcc-11.1.0/contrib/clang-format
*** gcc-10.3.0/contrib/clang-format	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/clang-format	Tue Apr 27 10:00:12 2021
*************** AlignTrailingComments: true
*** 147,150 ****
  AllowShortFunctionsOnASingleLine: All
  AlwaysBreakTemplateDeclarations: MultiLine
  KeepEmptyLinesAtTheStartOfBlocks: false
! Standard: Cpp03
--- 147,150 ----
  AllowShortFunctionsOnASingleLine: All
  AlwaysBreakTemplateDeclarations: MultiLine
  KeepEmptyLinesAtTheStartOfBlocks: false
! Standard: Auto
diff -Nrcpad gcc-10.3.0/contrib/compare-debug gcc-11.1.0/contrib/compare-debug
*** gcc-10.3.0/contrib/compare-debug	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/compare-debug	Tue Apr 27 10:00:12 2021
***************
*** 2,8 ****
  
  # Compare stripped copies of two given object files.
  
! # Copyright (C) 2007, 2008, 2009, 2010, 2012 Free Software Foundation
  # Originally by Alexandre Oliva <aoliva@redhat.com>
  
  # This file is part of GCC.
--- 2,8 ----
  
  # Compare stripped copies of two given object files.
  
! # Copyright (C) 2007, 2008, 2009, 2010, 2012, 2020 Free Software Foundation
  # Originally by Alexandre Oliva <aoliva@redhat.com>
  
  # This file is part of GCC.
*************** $rm "$1.$suf1" "$2.$suf2"
*** 183,190 ****
  
  trap "exit $status; exit" 0 1 2 15
  
! if test -f "$1".gkd || test -f "$2".gkd; then
!   if cmp "$1".gkd "$2".gkd; then
      :
    else
      status=$?
--- 183,210 ----
  
  trap "exit $status; exit" 0 1 2 15
  
! # Replace the suffix in $1 and $2 with .*.gkd, compare them if a
! # single file is found by the globbing.
! base1=`echo "$1" | sed '$s,\.[^.]*$,,'` gkd1=
! for f in "$base1".*.gkd; do
!   if test "x$gkd1" != x; then
!     gkd1=
!     break
!   elif test -f "$f"; then
!     gkd1=$f
!   fi
! done
! base2=`echo "$2" | sed '$s,\.[^.]*$,,'` gkd2=
! for f in "$base2".*.gkd; do
!   if test "x$gkd2" != x; then
!     gkd2=
!     break
!   elif test -f "$f"; then
!     gkd2=$f
!   fi
! done
! if test "x$gkd1" != x || test "x$gkd2" != x; then
!   if cmp "${gkd1-/dev/null}" "${gkd2-/dev/null}"; then
      :
    else
      status=$?
diff -Nrcpad gcc-10.3.0/contrib/config-list.mk gcc-11.1.0/contrib/config-list.mk
*** gcc-10.3.0/contrib/config-list.mk	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/config-list.mk	Tue Apr 27 10:00:12 2021
*************** GCC_SRC_DIR=../../gcc
*** 29,47 ****
  #     > make.out 2>&1 &
  #
  
- # v850e1-elf is rejected by config.sub
  LIST = aarch64-elf aarch64-linux-gnu aarch64-rtems \
    alpha-linux-gnu alpha-netbsd alpha-openbsd \
    alpha64-dec-vms alpha-dec-vms \
    amdgcn-amdhsa \
    arc-elf32OPT-with-cpu=arc600 arc-elf32OPT-with-cpu=arc700 \
    arc-linux-uclibcOPT-with-cpu=arc700 arceb-linux-uclibcOPT-with-cpu=arc700 \
!   arm-wrs-vxworks arm-netbsdelf \
    arm-linux-androideabi arm-uclinux_eabi arm-eabi arm-rtems \
    arm-symbianelf avr-elf \
    bfin-elf bfin-uclinux bfin-linux-uclibc bfin-rtems bfin-openbsd \
    bpf-unknown-none \
!   c6x-elf c6x-uclinux cr16-elf cris-elf cris-linux crisv32-elf crisv32-linux \
    csky-elf csky-linux-gnu \
    epiphany-elf epiphany-elfOPT-with-stack-offset=16 fido-elf \
    fr30-elf frv-elf frv-linux ft32-elf h8300-elf hppa-linux-gnu \
--- 29,46 ----
  #     > make.out 2>&1 &
  #
  
  LIST = aarch64-elf aarch64-linux-gnu aarch64-rtems \
    alpha-linux-gnu alpha-netbsd alpha-openbsd \
    alpha64-dec-vms alpha-dec-vms \
    amdgcn-amdhsa \
    arc-elf32OPT-with-cpu=arc600 arc-elf32OPT-with-cpu=arc700 \
    arc-linux-uclibcOPT-with-cpu=arc700 arceb-linux-uclibcOPT-with-cpu=arc700 \
!   arm-netbsdelf \
    arm-linux-androideabi arm-uclinux_eabi arm-eabi arm-rtems \
    arm-symbianelf avr-elf \
    bfin-elf bfin-uclinux bfin-linux-uclibc bfin-rtems bfin-openbsd \
    bpf-unknown-none \
!   c6x-elf c6x-uclinux cr16-elf cris-elf \
    csky-elf csky-linux-gnu \
    epiphany-elf epiphany-elfOPT-with-stack-offset=16 fido-elf \
    fr30-elf frv-elf frv-linux ft32-elf h8300-elf hppa-linux-gnu \
*************** LIST = aarch64-elf aarch64-linux-gnu aar
*** 72,77 ****
--- 71,77 ----
    nds32le-elf nds32be-elf \
    nios2-elf nios2-linux-gnu nios2-rtems \
    nvptx-none \
+   or1k-elf or1k-linux-uclibc or1k-linux-musl or1k-rtems \
    pdp11-aout \
    powerpc-darwin8 \
    powerpc-darwin7 powerpc64-darwin powerpc-freebsd6 powerpc-netbsd \
*************** LIST = aarch64-elf aarch64-linux-gnu aar
*** 82,89 ****
    powerpc-wrs-vxworks powerpc-wrs-vxworksae powerpc-wrs-vxworksmils \
    powerpc-lynxos powerpcle-elf \
    powerpcle-eabisim powerpcle-eabi \
    riscv32-unknown-linux-gnu riscv64-unknown-linux-gnu \
!   rs6000-ibm-aix5.3.0 rs6000-ibm-aix6.1 rs6000-ibm-aix7.1 \
    rl78-elf rx-elf s390-linux-gnu s390x-linux-gnu s390x-ibm-tpf sh-elf \
    shle-linux sh-netbsdelf sh-superh-elf \
    sh-rtems sh-wrs-vxworks sparc-elf \
--- 82,90 ----
    powerpc-wrs-vxworks powerpc-wrs-vxworksae powerpc-wrs-vxworksmils \
    powerpc-lynxos powerpcle-elf \
    powerpcle-eabisim powerpcle-eabi \
+   pru-elf \
    riscv32-unknown-linux-gnu riscv64-unknown-linux-gnu \
!   rs6000-ibm-aix6.1 rs6000-ibm-aix7.1 \
    rl78-elf rx-elf s390-linux-gnu s390x-linux-gnu s390x-ibm-tpf sh-elf \
    shle-linux sh-netbsdelf sh-superh-elf \
    sh-rtems sh-wrs-vxworks sparc-elf \
*************** LIST = aarch64-elf aarch64-linux-gnu aar
*** 92,99 ****
    sparc64-sun-solaris2.11OPT-with-gnu-ldOPT-with-gnu-asOPT-enable-threads=posix \
    sparc-wrs-vxworks sparc64-elf sparc64-rtems sparc64-linux sparc64-freebsd6 \
    sparc64-netbsd sparc64-openbsd \
!   tilegx-linux-gnu tilegxbe-linux-gnu tilepro-linux-gnu \
!   v850e-elf v850-elf v850-rtems vax-linux-gnu \
    vax-netbsdelf vax-openbsd visium-elf x86_64-apple-darwin \
    x86_64-pc-linux-gnuOPT-with-fpmath=avx \
    x86_64-elfOPT-with-fpmath=sse x86_64-freebsd6 x86_64-netbsd \
--- 93,101 ----
    sparc64-sun-solaris2.11OPT-with-gnu-ldOPT-with-gnu-asOPT-enable-threads=posix \
    sparc-wrs-vxworks sparc64-elf sparc64-rtems sparc64-linux sparc64-freebsd6 \
    sparc64-netbsd sparc64-openbsd \
!   tilegx-linux-gnuOPT-enable-obsolete tilegxbe-linux-gnuOPT-enable-obsolete \
!   tilepro-linux-gnuOPT-enable-obsolete \
!   v850e1-elf v850e-elf v850-elf v850-rtems vax-linux-gnu \
    vax-netbsdelf vax-openbsd visium-elf x86_64-apple-darwin \
    x86_64-pc-linux-gnuOPT-with-fpmath=avx \
    x86_64-elfOPT-with-fpmath=sse x86_64-freebsd6 x86_64-netbsd \
diff -Nrcpad gcc-10.3.0/contrib/dg-extract-results.py gcc-11.1.0/contrib/dg-extract-results.py
*** gcc-10.3.0/contrib/dg-extract-results.py	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/dg-extract-results.py	Tue Apr 27 10:00:12 2021
*************** class Prog:
*** 117,123 ****
          self.tool_re = re.compile (r'^\t\t=== (.*) tests ===$')
          self.result_re = re.compile (r'^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED'
                                       r'|WARNING|ERROR|UNSUPPORTED|UNTESTED'
!                                      r'|KFAIL|KPASS):\s*(.+)')
          self.completed_re = re.compile (r'.* completed at (.*)')
          # Pieces of text to write at the head of the output.
          # start_line is a pair in which the first element is a datetime
--- 117,123 ----
          self.tool_re = re.compile (r'^\t\t=== (.*) tests ===$')
          self.result_re = re.compile (r'^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED'
                                       r'|WARNING|ERROR|UNSUPPORTED|UNTESTED'
!                                      r'|KFAIL|KPASS|PATH|DUPLICATE):\s*(.+)')
          self.completed_re = re.compile (r'.* completed at (.*)')
          # Pieces of text to write at the head of the output.
          # start_line is a pair in which the first element is a datetime
*************** class Prog:
*** 143,149 ****
              '# of known failures\t\t',
              '# of untested testcases\t\t',
              '# of unresolved testcases\t',
!             '# of unsupported tests\t\t'
          ]
          self.runs = dict()
  
--- 143,151 ----
              '# of known failures\t\t',
              '# of untested testcases\t\t',
              '# of unresolved testcases\t',
!             '# of unsupported tests\t\t',
!             '# of paths in test names\t',
!             '# of duplicate test names\t'
          ]
          self.runs = dict()
  
diff -Nrcpad gcc-10.3.0/contrib/dg-extract-results.sh gcc-11.1.0/contrib/dg-extract-results.sh
*** gcc-10.3.0/contrib/dg-extract-results.sh	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/dg-extract-results.sh	Tue Apr 27 10:00:12 2021
*************** BEGIN {
*** 326,332 ****
    }
  }
  /^\t\t=== .* ===$/ { curvar = ""; next }
! /^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED|WARNING|ERROR|UNSUPPORTED|UNTESTED|KFAIL|KPASS):/ {
    testname=\$2
    # Ugly hack for gfortran.dg/dg.exp
    if ("$TOOL" == "gfortran" && testname ~ /^gfortran.dg\/g77\//)
--- 326,332 ----
    }
  }
  /^\t\t=== .* ===$/ { curvar = ""; next }
! /^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED|WARNING|ERROR|UNSUPPORTED|UNTESTED|KFAIL|KPASS|PATH|DUPLICATE):/ {
    testname=\$2
    # Ugly hack for gfortran.dg/dg.exp
    if ("$TOOL" == "gfortran" && testname ~ /^gfortran.dg\/g77\//)
*************** BEGIN {
*** 400,405 ****
--- 400,406 ----
    variant="$VAR"
    tool="$TOOL"
    passcnt=0; failcnt=0; untstcnt=0; xpasscnt=0; xfailcnt=0; kpasscnt=0; kfailcnt=0; unsupcnt=0; unrescnt=0; dgerrorcnt=0;
+   pathcnt=0; dupcnt=0
    curvar=""; insummary=0
  }
  /^Running target /		{ curvar = \$3; next }
*************** BEGIN {
*** 414,419 ****
--- 415,422 ----
  /^# of untested testcases/	{ if (insummary == 1) untstcnt += \$5; next; }
  /^# of unresolved testcases/	{ if (insummary == 1) unrescnt += \$5; next; }
  /^# of unsupported tests/	{ if (insummary == 1) unsupcnt += \$5; next; }
+ /^# of paths in test names/	{ if (insummary == 1) pathcnt += \$7; next; }
+ /^# of duplicate test names/	{ if (insummary == 1) dupcnt += \$6; next; }
  /^$/				{ if (insummary == 1)
  				    { insummary = 0; curvar = "" }
  				  next
*************** END {
*** 431,436 ****
--- 434,441 ----
    if (untstcnt != 0) printf ("# of untested testcases\t\t%d\n", untstcnt)
    if (unrescnt != 0) printf ("# of unresolved testcases\t%d\n", unrescnt)
    if (unsupcnt != 0) printf ("# of unsupported tests\t\t%d\n", unsupcnt)
+   if (pathcnt != 0) printf ("# of paths in test names\t%d\n", pathcnt)
+   if (dupcnt != 0) printf ("# of duplicate test names\t%d\n", dupcnt)
  }
  EOF
  
*************** cat << EOF > $TOTAL_AWK
*** 452,457 ****
--- 457,463 ----
  BEGIN {
    tool="$TOOL"
    passcnt=0; failcnt=0; untstcnt=0; xpasscnt=0; xfailcnt=0; kfailcnt=0; unsupcnt=0; unrescnt=0; dgerrorcnt=0
+   pathcnt=0; dupcnt=0
  }
  /^# of DejaGnu errors/		{ dgerrorcnt += \$5 }
  /^# of expected passes/		{ passcnt += \$5 }
*************** BEGIN {
*** 463,468 ****
--- 469,476 ----
  /^# of untested testcases/	{ untstcnt += \$5 }
  /^# of unresolved testcases/	{ unrescnt += \$5 }
  /^# of unsupported tests/	{ unsupcnt += \$5 }
+ /^# of paths in test names/	{ pathcnt += \$7 }
+ /^# of duplicate test names/	{ dupcnt += \$6 }
  END {
    printf ("\n\t\t=== %s Summary ===\n\n", tool)
    if (dgerrorcnt != 0) printf ("# of DejaGnu errors\t\t%d\n", dgerrorcnt)
*************** END {
*** 475,480 ****
--- 483,490 ----
    if (untstcnt != 0) printf ("# of untested testcases\t\t%d\n", untstcnt)
    if (unrescnt != 0) printf ("# of unresolved testcases\t%d\n", unrescnt)
    if (unsupcnt != 0) printf ("# of unsupported tests\t\t%d\n", unsupcnt)
+   if (pathcnt != 0) printf ("# of paths in test names\t%d\n", pathcnt)
+   if (dupcnt != 0) printf ("# of duplicate test names\t%d\n", dupcnt)
  }
  EOF
  
diff -Nrcpad gcc-10.3.0/contrib/download_prerequisites gcc-11.1.0/contrib/download_prerequisites
*** gcc-10.3.0/contrib/download_prerequisites	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/download_prerequisites	Tue Apr 27 10:00:12 2021
*************** force=0
*** 47,55 ****
  OS=$(uname)
  
  case $OS in
!   "Darwin"|"FreeBSD"|"DragonFly")
      chksum='shasum -a 512 --check'
    ;;
    *)
      chksum='sha512sum -c'
    ;;
--- 47,58 ----
  OS=$(uname)
  
  case $OS in
!   "Darwin"|"FreeBSD"|"DragonFly"|"AIX")
      chksum='shasum -a 512 --check'
    ;;
+   "OpenBSD")
+     chksum='sha512 -c'
+   ;;
    *)
      chksum='sha512sum -c'
    ;;
*************** for ar in $(echo_archives)
*** 219,225 ****
  do
      if [ ${force} -gt 0 ]; then rm -f "${directory}/${ar}"; fi
      [ -e "${directory}/${ar}" ]                                               \
!         || ${fetch} --no-verbose -O "${directory}/${ar}" "${base_url}${ar}"       \
          || die "Cannot download ${ar} from ${base_url}"
  done
  unset ar
--- 222,228 ----
  do
      if [ ${force} -gt 0 ]; then rm -f "${directory}/${ar}"; fi
      [ -e "${directory}/${ar}" ]                                               \
!         || ( cd "${directory}" && ${fetch} --no-verbose "${base_url}${ar}" )  \
          || die "Cannot download ${ar} from ${base_url}"
  done
  unset ar
*************** for ar in $(echo_archives)
*** 242,249 ****
  do
      package="${ar%.tar*}"
      if [ ${force} -gt 0 ]; then rm -rf "${directory}/${package}"; fi
      [ -e "${directory}/${package}" ]                                          \
!         || ( cd "${directory}" && tar -xf "${ar}" )                           \
          || die "Cannot extract package from ${ar}"
      unset package
  done
--- 245,263 ----
  do
      package="${ar%.tar*}"
      if [ ${force} -gt 0 ]; then rm -rf "${directory}/${package}"; fi
+     case $ar in
+     *.gz)
+ 	uncompress='gzip -d'
+ 	;;
+     *.bz2)
+ 	uncompress='bzip2 -d'
+ 	;;
+     *)
+ 	uncompress='cat'
+ 	;;
+     esac
      [ -e "${directory}/${package}" ]                                          \
!         || ( cd "${directory}" && $uncompress <"${ar}" | tar -xf - )          \
          || die "Cannot extract package from ${ar}"
      unset package
  done
diff -Nrcpad gcc-10.3.0/contrib/filter-clang-warnings.py gcc-11.1.0/contrib/filter-clang-warnings.py
*** gcc-10.3.0/contrib/filter-clang-warnings.py	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/filter-clang-warnings.py	Tue Apr 27 10:00:12 2021
***************
*** 21,72 ****
  #
  #
  
- import sys
  import argparse
  
  def skip_warning(filename, message):
      ignores = {
!             '': ['-Warray-bounds', '-Wmismatched-tags', 'gcc_gfc: -Wignored-attributes', '-Wchar-subscripts',
!                 'string literal (potentially insecure): -Wformat-security', '-Wdeprecated-register',
!                 '-Wvarargs', 'keyword is hidden by macro definition', "but the argument has type 'char *': -Wformat-pedantic",
!                 '-Wnested-anon-types', 'qualifier in explicit instantiation of', 'attribute argument not supported: asm_fprintf',
!                 'when in C++ mode, this behavior is deprecated', '-Wignored-attributes', '-Wgnu-zero-variadic-macro-arguments',
!                 '-Wformat-security'],
              'insn-modes.c': ['-Wshift-count-overflow'],
              'insn-emit.c': ['-Wtautological-compare'],
              'insn-attrtab.c': ['-Wparentheses-equality'],
              'gimple-match.c': ['-Wunused-', '-Wtautological-compare'],
              'generic-match.c': ['-Wunused-', '-Wtautological-compare'],
!             'i386.md': ['-Wparentheses-equality', '-Wtautological-compare'],
              'sse.md': ['-Wparentheses-equality', '-Wtautological-compare'],
!             'genautomata.c': ['-Wstring-plus-int']
! 
      }
  
      for name, ignores in ignores.items():
          for i in ignores:
              if name in filename and i in message:
                  return True
- 
      return False
  
  parser = argparse.ArgumentParser()
! parser.add_argument('log', help = 'Log file with clang warnings')
  args = parser.parse_args()
  
! lines = [l.strip() for l in open(args.log)]
  total = 0
  messages = []
! for l in lines:
      token = ': warning: '
!     i = l.find(token)
      if i != -1:
!         location = l[:i]
!         message = l[i + len(token):]
          if not skip_warning(location, message):
              total += 1
!             messages.append(l)
  
! for l in sorted(messages):
!     print(l)
  print('\nTotal warnings: %d' % total)
--- 21,81 ----
  #
  #
  
  import argparse
  
+ 
  def skip_warning(filename, message):
      ignores = {
!             '': ['-Warray-bounds', '-Wmismatched-tags',
!                  'gcc_gfc: -Wignored-attributes', '-Wchar-subscripts',
!                  'string literal (potentially insecure): -Wformat-security',
!                  '-Wdeprecated-register',
!                  '-Wvarargs', 'keyword is hidden by macro definition',
!                  "but the argument has type 'char *': -Wformat-pedantic",
!                  '-Wnested-anon-types',
!                  'qualifier in explicit instantiation of',
!                  'attribute argument not supported: asm_fprintf',
!                  'when in C++ mode, this behavior is deprecated',
!                  '-Wignored-attributes', '-Wgnu-zero-variadic-macro-arguments',
!                  '-Wformat-security', '-Wundefined-internal',
!                  '-Wunknown-warning-option'],
              'insn-modes.c': ['-Wshift-count-overflow'],
              'insn-emit.c': ['-Wtautological-compare'],
              'insn-attrtab.c': ['-Wparentheses-equality'],
              'gimple-match.c': ['-Wunused-', '-Wtautological-compare'],
              'generic-match.c': ['-Wunused-', '-Wtautological-compare'],
!             'i386.md': ['-Wparentheses-equality', '-Wtautological-compare',
!                         '-Wtautological-overlap-compare'],
              'sse.md': ['-Wparentheses-equality', '-Wtautological-compare'],
!             'genautomata.c': ['-Wstring-plus-int'],
!             'gfortran.texi': [''],
!             'libtool': ['']
      }
  
      for name, ignores in ignores.items():
          for i in ignores:
              if name in filename and i in message:
                  return True
      return False
  
+ 
  parser = argparse.ArgumentParser()
! parser.add_argument('log', help='Log file with clang warnings')
  args = parser.parse_args()
  
! lines = [line.strip() for line in open(args.log)]
  total = 0
  messages = []
! for line in lines:
      token = ': warning: '
!     i = line.find(token)
      if i != -1:
!         location = line[:i]
!         message = line[i + len(token):]
          if not skip_warning(location, message):
              total += 1
!             messages.append(line)
  
! for line in sorted(messages):
!     print(line)
  print('\nTotal warnings: %d' % total)
diff -Nrcpad gcc-10.3.0/contrib/gcc-changelog/git_commit.py gcc-11.1.0/contrib/gcc-changelog/git_commit.py
*** gcc-10.3.0/contrib/gcc-changelog/git_commit.py	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/gcc-changelog/git_commit.py	Tue Apr 27 10:00:12 2021
*************** class ChangeLogEntry:
*** 214,219 ****
--- 214,220 ----
          self.lines = []
          self.files = []
          self.file_patterns = []
+         self.opened_parentheses = 0
  
      def parse_file_names(self):
          # Whether the content currently processed is between a star prefix the
*************** class ChangeLogEntry:
*** 223,230 ****
          for line in self.lines:
              # If this line matches the star prefix, start the location
              # processing on the information that follows the star.
              m = star_prefix_regex.match(line)
!             if m:
                  in_location = True
                  line = m.group('content')
  
--- 224,237 ----
          for line in self.lines:
              # If this line matches the star prefix, start the location
              # processing on the information that follows the star.
+             # Note that we need to skip macro names that can be in form of:
+             #
+             # * config/i386/i386.md (*fix_trunc<mode>_i387_1,
+             # *add<mode>3_ne, *add<mode>3_eq_0, *add<mode>3_ne_0,
+             # *fist<mode>2_<rounding>_1, *<code><mode>3_1):
+             #
              m = star_prefix_regex.match(line)
!             if m and len(m.group('spaces')) == 1:
                  in_location = True
                  line = m.group('content')
  
*************** class GitCommit:
*** 307,314 ****
          if self.revert_commit:
              self.info = self.commit_to_info_hook(self.revert_commit)
  
          project_files = [f for f in self.info.modified_files
!                          if self.is_changelog_filename(f[0])
                           or f[0] in misc_files]
          ignored_files = [f for f in self.info.modified_files
                           if self.in_ignored_location(f[0])]
--- 314,322 ----
          if self.revert_commit:
              self.info = self.commit_to_info_hook(self.revert_commit)
  
+         # Allow complete deletion of ChangeLog files in a commit
          project_files = [f for f in self.info.modified_files
!                          if (self.is_changelog_filename(f[0], allow_suffix=True) and f[1] != 'D')
                           or f[0] in misc_files]
          ignored_files = [f for f in self.info.modified_files
                           if self.in_ignored_location(f[0])]
*************** class GitCommit:
*** 328,333 ****
--- 336,342 ----
              self.parse_changelog()
              self.parse_file_names()
              self.check_for_empty_description()
+             self.check_for_broken_parentheses()
              self.deduce_changelog_locations()
              self.check_file_patterns()
              if not self.errors:
*************** class GitCommit:
*** 343,350 ****
          return [x[0] for x in self.info.modified_files if x[1] == 'A']
  
      @classmethod
!     def is_changelog_filename(cls, path):
!         return path.endswith('/ChangeLog') or path == 'ChangeLog'
  
      @classmethod
      def find_changelog_location(cls, name):
--- 352,365 ----
          return [x[0] for x in self.info.modified_files if x[1] == 'A']
  
      @classmethod
!     def is_changelog_filename(cls, path, allow_suffix=False):
!         basename = os.path.basename(path)
!         if basename == 'ChangeLog':
!             return True
!         elif allow_suffix and basename.startswith('ChangeLog'):
!             return True
!         else:
!             return False
  
      @classmethod
      def find_changelog_location(cls, name):
*************** class GitCommit:
*** 400,407 ****
              if line != line.rstrip():
                  self.errors.append(Error('trailing whitespace', line))
              if len(line.replace('\t', ' ' * TAB_WIDTH)) > LINE_LIMIT:
!                 self.errors.append(Error('line exceeds %d character limit'
!                                          % LINE_LIMIT, line))
              m = changelog_regex.match(line)
              if m:
                  last_entry = ChangeLogEntry(m.group(1).rstrip('/'),
--- 415,424 ----
              if line != line.rstrip():
                  self.errors.append(Error('trailing whitespace', line))
              if len(line.replace('\t', ' ' * TAB_WIDTH)) > LINE_LIMIT:
!                 # support long filenames
!                 if not line.startswith('\t* ') or not line.endswith(':') or ' ' in line[3:-1]:
!                     self.errors.append(Error('line exceeds %d character limit'
!                                              % LINE_LIMIT, line))
              m = changelog_regex.match(line)
              if m:
                  last_entry = ChangeLogEntry(m.group(1).rstrip('/'),
*************** class GitCommit:
*** 490,496 ****
                  else:
                      m = star_prefix_regex.match(line)
                      if m:
!                         if len(m.group('spaces')) != 1:
                              msg = 'one space should follow asterisk'
                              self.errors.append(Error(msg, line))
                          else:
--- 507,514 ----
                  else:
                      m = star_prefix_regex.match(line)
                      if m:
!                         if (len(m.group('spaces')) != 1 and
!                                 last_entry.opened_parentheses == 0):
                              msg = 'one space should follow asterisk'
                              self.errors.append(Error(msg, line))
                          else:
*************** class GitCommit:
*** 502,507 ****
--- 520,526 ----
                                          msg = f'empty group "{needle}" found'
                                          self.errors.append(Error(msg, line))
                              last_entry.lines.append(line)
+                             self.process_parentheses(last_entry, line)
                      else:
                          if last_entry.is_empty:
                              msg = 'first line should start with a tab, ' \
*************** class GitCommit:
*** 509,514 ****
--- 528,545 ----
                              self.errors.append(Error(msg, line))
                          else:
                              last_entry.lines.append(line)
+                             self.process_parentheses(last_entry, line)
+ 
+     def process_parentheses(self, last_entry, line):
+         for c in line:
+             if c == '(':
+                 last_entry.opened_parentheses += 1
+             elif c == ')':
+                 if last_entry.opened_parentheses == 0:
+                     msg = 'bad wrapping of parenthesis'
+                     self.errors.append(Error(msg, line))
+                 else:
+                     last_entry.opened_parentheses -= 1
  
      def parse_file_names(self):
          for entry in self.changelog_entries:
*************** class GitCommit:
*** 532,537 ****
--- 563,574 ----
                      msg = 'missing description of a change'
                      self.errors.append(Error(msg, line))
  
+     def check_for_broken_parentheses(self):
+         for entry in self.changelog_entries:
+             if entry.opened_parentheses != 0:
+                 msg = 'bad parentheses wrapping'
+                 self.errors.append(Error(msg, entry.lines[0]))
+ 
      def get_file_changelog_location(self, changelog_file):
          for file in self.info.modified_files:
              if file[0] == changelog_file:
diff -Nrcpad gcc-10.3.0/contrib/gcc-changelog/git_email.py gcc-11.1.0/contrib/gcc-changelog/git_email.py
*** gcc-10.3.0/contrib/gcc-changelog/git_email.py	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/gcc-changelog/git_email.py	Tue Apr 27 10:00:12 2021
*************** class GitEmail(GitCommit):
*** 66,72 ****
                  t = 'A'
              else:
                  t = 'M'
!             modified_files.append((target, t))
          git_info = GitInfo(None, date, author, body, modified_files)
          super().__init__(git_info, strict=strict,
                           commit_to_info_hook=lambda x: None)
--- 66,72 ----
                  t = 'A'
              else:
                  t = 'M'
!             modified_files.append((target if t != 'D' else source, t))
          git_info = GitInfo(None, date, author, body, modified_files)
          super().__init__(git_info, strict=strict,
                           commit_to_info_hook=lambda x: None)
diff -Nrcpad gcc-10.3.0/contrib/gcc-changelog/git_update_version.py gcc-11.1.0/contrib/gcc-changelog/git_update_version.py
*** gcc-10.3.0/contrib/gcc-changelog/git_update_version.py	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/gcc-changelog/git_update_version.py	Tue Apr 27 10:00:12 2021
*************** from git_repository import parse_git_rev
*** 26,31 ****
--- 26,34 ----
  
  current_timestamp = datetime.datetime.now().strftime('%Y%m%d\n')
  
+ # Skip the following commits, they cannot be correctly processed
+ IGNORED_COMMITS = ('c2be82058fb40f3ae891c68d185ff53e07f14f45')
+ 
  
  def read_timestamp(path):
      with open(path) as f:
*************** def update_current_branch():
*** 98,103 ****
--- 101,107 ----
              head = head.parents[1]
          commits = parse_git_revisions(args.git_path, '%s..%s'
                                        % (commit.hexsha, head.hexsha))
+         commits = [c for c in commits if c.info.hexsha not in IGNORED_COMMITS]
          for git_commit in reversed(commits):
              prepend_to_changelog_files(repo, args.git_path, git_commit,
                                         not args.dry_mode)
diff -Nrcpad gcc-10.3.0/contrib/gcc-changelog/setup.cfg gcc-11.1.0/contrib/gcc-changelog/setup.cfg
*** gcc-10.3.0/contrib/gcc-changelog/setup.cfg	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/gcc-changelog/setup.cfg	Tue Apr 27 10:00:12 2021
***************
*** 1,2 ****
--- 1,5 ----
+ [flake8]
+ max-line-length = 120
+ 
  [tool:pytest]
  addopts = -vv --flake8
diff -Nrcpad gcc-10.3.0/contrib/gcc-changelog/test_email.py gcc-11.1.0/contrib/gcc-changelog/test_email.py
*** gcc-10.3.0/contrib/gcc-changelog/test_email.py	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/gcc-changelog/test_email.py	Tue Apr 27 10:00:12 2021
*************** class TestGccChangelog(unittest.TestCase
*** 404,406 ****
--- 404,426 ----
          email = self.from_patch_glob('0001-Add-horse2.patch')
          assert not email.errors
          assert email.changelog_entries[0].files == ['koníček.txt']
+ 
+     def test_modification_of_old_changelog(self):
+         email = self.from_patch_glob('0001-fix-old-ChangeLog.patch')
+         assert not email.errors
+ 
+     def test_multiline_parentheses(self):
+         email = self.from_patch_glob('0001-Add-macro.patch')
+         assert not email.errors
+ 
+     def test_multiline_bad_parentheses(self):
+         email = self.from_patch_glob('0002-Wrong-macro-changelog.patch')
+         assert email.errors[0].message == 'bad parentheses wrapping'
+ 
+     def test_changelog_removal(self):
+         email = self.from_patch_glob('0001-ChangeLog-removal.patch', strict=True)
+         assert not email.errors
+ 
+     def test_long_filenames(self):
+         email = self.from_patch_glob('0001-long-filenames')
+         assert not email.errors
diff -Nrcpad gcc-10.3.0/contrib/gcc-changelog/test_patches.txt gcc-11.1.0/contrib/gcc-changelog/test_patches.txt
*** gcc-10.3.0/contrib/gcc-changelog/test_patches.txt	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/gcc-changelog/test_patches.txt	Tue Apr 27 10:00:12 2021
*************** index 00000000000..56c67f58752
*** 3398,3401 ****
--- 3398,3548 ----
  -- 
  2.29.2
  
+ === 0001-fix-old-ChangeLog.patch ===
+ From fd498465b2801203089616be9a0e3c1f4fc065a0 Mon Sep 17 00:00:00 2001
+ From: Martin Liska <mliska@suse.cz>
+ Date: Wed, 13 Jan 2021 11:45:37 +0100
+ Subject: [PATCH] Fix a changelog.
+ 
+ ---
+  gcc/ChangeLog-2020 | 1 +
+  1 file changed, 1 insertion(+)
+ 
+ diff --git a/gcc/ChangeLog-2020 b/gcc/ChangeLog-2020
+ index 6553720acad..2c170ef014a 100644
+ --- a/gcc/ChangeLog-2020
+ +++ b/gcc/ChangeLog-2020
+ @@ -1 +1,2 @@
+  
+ +
+  
+ -- 
+ 2.29.2
+ === 0001-Add-macro.patch ===
+ From 9b7eedc932fe594547fb060b36dfd9e4178c4f9b Mon Sep 17 00:00:00 2001
+ From: Martin Liska <mliska@suse.cz>
+ Date: Wed, 13 Jan 2021 16:26:45 +0100
+ Subject: [PATCH 1/2] Add macro.
+ 
+ gcc/ChangeLog:
+ 
+ 	* config/i386/i386.md (*fix_trunc<mode>_i387_1, *add<mode>3_eq,
+ 	*add<mode>3_ne, *add<mode>3_eq_0, *add<mode>3_ne_0, *add<mode>3_eq,
+ 	*fist<mode>2_<rounding>_1, *<code><mode>3_1, *<code>di3_doubleword):
+ 	Use ix86_pre_reload_split instead of can_create_pseudo_p in condition.
+ 	* config/i386/sse.md
+ 	(*fix_trunc<mode>_i387_1, *add<mode>3_eq,
+ 	*add<mode>3_ne, *add<mode>3_eq_0, *add<mode>3_ne_0, *add<mode>3_eq,
+ 	*fist<mode>2_<rounding>_1): This should also work.
+ ---
+  gcc/config/i386/i386.md | 1 +
+  gcc/config/i386/sse.md  | 1 +
+  2 files changed, 2 insertions(+)
+ 
+ diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
+ index b60784a2908..ac63591b33f 100644
+ --- a/gcc/config/i386/i386.md
+ +++ b/gcc/config/i386/i386.md
+ @@ -1 +1,2 @@
+  
+ +
+ 
+ diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
+ index 7f03fc491c3..0e17997db26 100644
+ --- a/gcc/config/i386/sse.md
+ +++ b/gcc/config/i386/sse.md
+ @@ -1 +1,2 @@
+  
+ +
  
+ -- 
+ 2.29.2
+ 
+ === 0002-Wrong-macro-changelog.patch ===
+ From 3542802111d4c6752ac7233ef96655b7fb78aae4 Mon Sep 17 00:00:00 2001
+ From: Martin Liska <mliska@suse.cz>
+ Date: Wed, 13 Jan 2021 16:54:58 +0100
+ Subject: [PATCH 2/2] Wrong macro changelog
+ 
+ gcc/ChangeLog:
+ 
+ 	* config/i386/i386.md (*fix_trunc<mode>_i387_1,
+ 	(foo): Change it.
+ ---
+  gcc/config/i386/i386.md | 1 +
+  1 file changed, 1 insertion(+)
+ 
+ diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
+ index ac63591b33f..ff4d61764e7 100644
+ --- a/gcc/config/i386/i386.md
+ +++ b/gcc/config/i386/i386.md
+ @@ -1 +1,2 @@
+  
+ +
+ -- 
+ 2.29.2
+ 
+ === 0001-ChangeLog-removal.patch ===
+ From b39fadf9df1a9510afcab0a391182da7dc68de24 Mon Sep 17 00:00:00 2001
+ From: Martin Liska <mliska@suse.cz>
+ Date: Fri, 12 Mar 2021 09:10:55 +0100
+ Subject: [PATCH] Test ChangeLog removal.
+ 
+ gcc/ChangeLog:
+ 
+ 	* ipa-icf.c (make_pass_ipa_icf): Add line.
+ ---
+ diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog
+ deleted file mode 100644
+ index 94e87f6bcde..00000000000
+ --- a/gcc/analyzer/ChangeLog
+ +++ /dev/null
+ @@ -1,1 +0,0 @@
+ - foo
+ diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c
+ index 5dd33a75c3a..c4ce432cb98 100644
+ --- a/gcc/ipa-icf.c
+ +++ b/gcc/ipa-icf.c
+ @@ -3655,3 +3655,4 @@ make_pass_ipa_icf (gcc::context *ctxt)
+  {
+    return new ipa_icf::pass_ipa_icf (ctxt);
+  }
+ +
+ -- 
+ 2.30.1
+ 
+ === 0001-long-filenames ===
+ From 0a5b3f87bdac5e61f9a626c795d30f9e93198585 Mon Sep 17 00:00:00 2001
+ From: Martin Liska <mliska@suse.cz>
+ Date: Mon, 12 Apr 2021 13:10:14 +0200
+ Subject: [PATCH] libstdc++: Fix some tests that fail in C++20 mode
+ 
+ The linear_congruential_engine negative tests fail with a different
+ error in C++20 mode, because double is no longer an invalid type for
+ NTTP. Adjust the expected errors.
+ 
+ libstdc++-v3/ChangeLog:
+ 
+ 	* testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc:
+ 	Adjust expected error for C++20 mode.
+ 	* testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc:
+ 	Likewise.
+ ---
+  .../linear_congruential_engine/requirements/non_uint_neg.cc   | 4 +++-
+  .../random/linear_congruential/requirements/non_uint_neg.cc   | 3 ++-
+  2 files changed, 5 insertions(+), 2 deletions(-)
+ 
+ diff --git a/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc b/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
+ index e04e8ca6972..a36d63c6c7b 100644
+ --- a/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
+ +++ b/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
+ @@ -1 +1,2 @@
+  
+ +
+ diff --git a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc
+ index 5ad82db1def..53b15f32516 100644
+ --- a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc
+ +++ b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc
+ @@ -1 +1,2 @@
+  
+ +
diff -Nrcpad gcc-10.3.0/contrib/gcc-git-customization.sh gcc-11.1.0/contrib/gcc-git-customization.sh
*** gcc-10.3.0/contrib/gcc-git-customization.sh	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/gcc-git-customization.sh	Tue Apr 27 10:00:12 2021
*************** git config alias.svn-rev '!f() { rev=$1;
*** 25,35 ****
--- 25,44 ----
  git config alias.gcc-descr \!"f() { if test \${1:-no} = --full; then c=\${2:-master}; r=\$(git describe --all --abbrev=40 --match 'basepoints/gcc-[0-9]*' \$c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-,r,p'); expr match \${r:-no} '^r[0-9]\\+\$' >/dev/null && r=\${r}-0-g\$(git rev-parse \${2:-master}); else c=\${1:-master}; r=\$(git describe --all --match 'basepoints/gcc-[0-9]*' \$c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-\\([0-9]\\+\\)-\\([0-9]\\+\\)-g[0-9a-f]*\$,r\\2-\\3,p;s,^\\(tags/\\)\\?basepoints/gcc-\\([0-9]\\+\\)\$,r\\2-0,p'); fi; if test -n \$r; then o=\$(git config --get gcc-config.upstream); rr=\$(echo \$r | sed -n 's,^r\\([0-9]\\+\\)-[0-9]\\+\\(-g[0-9a-f]\\+\\)\\?\$,\\1,p'); if git rev-parse --verify --quiet \${o:-origin}/releases/gcc-\$rr >/dev/null; then m=releases/gcc-\$rr; else m=master; fi; git merge-base --is-ancestor \$c \${o:-origin}/\$m && \echo \${r}; fi; }; f"
  git config alias.gcc-undescr \!"f() { o=\$(git config --get gcc-config.upstream); r=\$(echo \$1 | sed -n 's,^r\\([0-9]\\+\\)-[0-9]\\+\$,\\1,p'); n=\$(echo \$1 | sed -n 's,^r[0-9]\\+-\\([0-9]\\+\\)\$,\\1,p'); test -z \$r && echo Invalid id \$1 && exit 1; h=\$(git rev-parse --verify --quiet \${o:-origin}/releases/gcc-\$r); test -z \$h && h=\$(git rev-parse --verify --quiet \${o:-origin}/master); p=\$(git describe --all --match 'basepoints/gcc-'\$r \$h | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-[0-9]\\+-\\([0-9]\\+\\)-g[0-9a-f]*\$,\\2,p;s,^\\(tags/\\)\\?basepoints/gcc-[0-9]\\+\$,0,p'); git rev-parse --verify \$h~\$(expr \$p - \$n); }; f"
  
+ git config alias.gcc-verify '!f() { "`git rev-parse --show-toplevel`/contrib/gcc-changelog/git_check_commit.py" $@; } ; f'
+ git config alias.gcc-backport '!f() { "`git rev-parse --show-toplevel`/contrib/git-backport.py" $@; } ; f'
+ git config alias.gcc-mklog '!f() { "`git rev-parse --show-toplevel`/contrib/mklog.py" $@; } ; f'
+ git config alias.gcc-commit-mklog '!f() { GCC_FORCE_MKLOG=1 git commit "$@"; }; f'
+ 
  # Make diff on MD files use "(define" as a function marker.
  # Use this in conjunction with a .gitattributes file containing
  # *.md    diff=md
  git config diff.md.xfuncname '^\(define.*$'
  
+ # Tell git send-email where patches go.
+ # ??? Maybe also set sendemail.tocmd to guess from MAINTAINERS?
+ git config sendemail.to 'gcc-patches@gcc.gnu.org'
+ 
  set_user=$(git config --get "user.name")
  set_email=$(git config --get "user.email")
  
*************** echo "(local branches starting <prefix>/
*** 122,127 ****
--- 131,147 ----
  ask "personal area on the gcc server)" $old_pfx new_pfx
  git config "gcc-config.userpfx" "$new_pfx"
  
+ echo
+ ask "Install prepare-commit-msg git hook for 'git commit-mklog' alias" yes dohook
+ if [ "x$dohook" = xyes ]; then
+     hookdir=`git rev-parse --git-path hooks`
+     if [ -f "$hookdir/prepare-commit-msg" ]; then
+ 	echo " Moving existing prepare-commit-msg hook to prepare-commit-msg.bak"
+ 	mv "$hookdir/prepare-commit-msg" "$hookdir/prepare-commit-msg.bak"
+     fi
+     install -c "`git rev-parse --show-toplevel`/contrib/prepare-commit-msg" "$hookdir"
+ fi
+ 
  # Scan the existing settings to see if there are any we need to rewrite.
  vendors=$(git config --get-all "remote.${upstream}.fetch" "refs/vendors/" | sed -r "s:.*refs/vendors/([^/]+)/.*:\1:" | sort | uniq)
  url=$(git config --get "remote.${upstream}.url")
diff -Nrcpad gcc-10.3.0/contrib/gcc_update gcc-11.1.0/contrib/gcc_update
*** gcc-10.3.0/contrib/gcc_update	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/gcc_update	Tue Apr 27 10:00:12 2021
*************** gcc/config/c6x/c6x-mult.md: gcc/config/c
*** 89,94 ****
--- 89,95 ----
  gcc/config/m68k/m68k-tables.opt: gcc/config/m68k/m68k-devices.def gcc/config/m68k/m68k-isas.def gcc/config/m68k/m68k-microarchs.def gcc/config/m68k/genopt.sh
  gcc/config/mips/mips-tables.opt: gcc/config/mips/mips-cpus.def gcc/config/mips/genopt.sh
  gcc/config/rs6000/rs6000-tables.opt: gcc/config/rs6000/rs6000-cpus.def gcc/config/rs6000/genopt.sh
+ gcc/config/rs6000/fusion.md: gcc/config/rs6000/genfusion.pl
  gcc/config/tilegx/mul-tables.c: gcc/config/tilepro/gen-mul-tables.cc
  gcc/config/tilepro/mul-tables.c: gcc/config/tilepro/gen-mul-tables.cc
  # And then, language-specific files
*************** gcc/testsuite/gcc.dg/cpp/direct2s.c: gcc
*** 102,107 ****
--- 103,111 ----
  # lto-plugin
  lto-plugin/configure: lto-plugin/configure.ac lto-plugin/aclocal.m4
  lto-plugin/Makefile.in: lto-plugin/Makefile.am lto-plugin/aclocal.m4
+ # tools
+ c++tools/configure: c++tools/configure.ac
+ c++tools/config.h.in: c++tools/configure.ac
  # And libraries, at last
  libbanshee/configure: libbanshee/configure.ac
  libmudflap/configure: libmudflap/configure.ac
*************** libquadmath/configure: libquadmath/confi
*** 126,131 ****
--- 130,136 ----
  libquadmath/aclocal.m4: libquadmath/configure.ac libquadmath/acinclude.m4
  libquadmath/Makefile.in: libquadmath/Makefile.am libquadmath/configure.ac libgfortran/aclocal.m4
  libgfortran/configure: libgfortran/configure.ac libgfortran/aclocal.m4
+ libcody/configure: libcody/configure.ac libcody/config.m4
  libcpp/aclocal.m4: libcpp/configure.ac
  libcpp/Makefile.in: libcpp/configure.ac libcpp/aclocal.m4
  libcpp/configure: libcpp/configure.ac libcpp/aclocal.m4
diff -Nrcpad gcc-10.3.0/contrib/gennews gcc-11.1.0/contrib/gennews
*** gcc-10.3.0/contrib/gennews	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/gennews	Tue Apr 27 10:00:12 2021
***************
*** 3,9 ****
  # Script to generate the NEWS file from online release notes.
  # Contributed by Joseph Myers <jsm28@cam.ac.uk>.
  #
! # Copyright (C) 2000-2020 Free Software Foundation, Inc.
  # This file is part of GCC.
  #
  # GCC is free software; you can redistribute it and/or modify
--- 3,9 ----
  # Script to generate the NEWS file from online release notes.
  # Contributed by Joseph Myers <jsm28@cam.ac.uk>.
  #
! # Copyright (C) 2000-2021 Free Software Foundation, Inc.
  # This file is part of GCC.
  #
  # GCC is free software; you can redistribute it and/or modify
***************
*** 23,28 ****
--- 23,29 ----
  
  website=http://gcc.gnu.org/
  files="
+     gcc-11/index.html gcc-11/changes.html
      gcc-10/index.html gcc-10/changes.html
      gcc-9/index.html gcc-9/changes.html
      gcc-8/index.html gcc-8/changes.html
diff -Nrcpad gcc-10.3.0/contrib/header-tools/ChangeLog gcc-11.1.0/contrib/header-tools/ChangeLog
*** gcc-10.3.0/contrib/header-tools/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-11.1.0/contrib/header-tools/ChangeLog	Tue Apr 27 10:00:12 2021
***************
*** 1,14 ****
! 2021-04-08  Release Manager
! 
! 	* GCC 10.3.0 released.
! 
! 2020-07-23  Release Manager
! 
! 	* GCC 10.2.0 released.
! 
! 2020-05-07  Release Manager
  
! 	* GCC 10.1.0 released.
  
  2019-09-03  Ulrich Weigand  <uweigand@de.ibm.com>
  
--- 1,6 ----
! 2021-04-27  Release Manager
  
! 	* GCC 11.1.0 released.
  
  2019-09-03  Ulrich Weigand  <uweigand@de.ibm.com>
  
diff -Nrcpad gcc-10.3.0/contrib/legacy/mklog gcc-11.1.0/contrib/legacy/mklog
*** gcc-10.3.0/contrib/legacy/mklog	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/contrib/legacy/mklog	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,466 ----
+ #!/usr/bin/env python3
+ 
+ # Copyright (C) 2017-2019 Free Software Foundation, Inc.
+ #
+ # This file is part of GCC.
+ #
+ # GCC is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 3, or (at your option)
+ # any later version.
+ #
+ # GCC is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # GNU General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with GCC; see the file COPYING.  If not, write to
+ # the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+ # Boston, MA 02110-1301, USA.
+ 
+ # This script parses a .diff file generated with 'diff -up' or 'diff -cp'
+ # and adds a skeleton ChangeLog file to the file. It does not try to be
+ # too smart when parsing function names, but it produces a reasonable
+ # approximation.
+ #
+ # This is a straightforward adaptation of original Perl script.
+ #
+ # Author: Yury Gribov <tetra2005@gmail.com>
+ 
+ import argparse
+ import sys
+ import re
+ import os.path
+ import os
+ import tempfile
+ import time
+ import shutil
+ from subprocess import Popen, PIPE
+ 
+ me = os.path.basename(sys.argv[0])
+ 
+ pr_regex = re.compile('\+(\/(\/|\*)|[Cc*!])\s+(PR [a-z+-]+\/[0-9]+)')
+ 
+ def error(msg):
+   sys.stderr.write("%s: error: %s\n" % (me, msg))
+   sys.exit(1)
+ 
+ def warn(msg):
+   sys.stderr.write("%s: warning: %s\n" % (me, msg))
+ 
+ class RegexCache(object):
+   """Simple trick to Perl-like combined match-and-bind."""
+ 
+   def __init__(self):
+     self.last_match = None
+ 
+   def match(self, p, s):
+     self.last_match = re.match(p, s) if isinstance(p, str) else p.match(s)
+     return self.last_match
+ 
+   def search(self, p, s):
+     self.last_match = re.search(p, s) if isinstance(p, str) else p.search(s)
+     return self.last_match
+ 
+   def group(self, n):
+     return self.last_match.group(n)
+ 
+ cache = RegexCache()
+ 
+ def run(cmd, die_on_error):
+   """Simple wrapper for Popen."""
+   proc = Popen(cmd.split(' '), stderr = PIPE, stdout = PIPE)
+   (out, err) = proc.communicate()
+   if die_on_error and proc.returncode != 0:
+     error("`%s` failed:\n" % (cmd, proc.stderr))
+   return proc.returncode, out.decode(), err
+ 
+ def read_user_info():
+   dot_mklog_format_msg = """\
+ The .mklog format is:
+ NAME = ...
+ EMAIL = ...
+ """
+ 
+   # First try to read .mklog config
+   mklog_conf = os.path.expanduser('~/.mklog')
+   if os.path.exists(mklog_conf):
+     attrs = {}
+     f = open(mklog_conf)
+     for s in f:
+       if cache.match(r'^\s*([a-zA-Z0-9_]+)\s*=\s*(.*?)\s*$', s):
+         attrs[cache.group(1)] = cache.group(2)
+     f.close()
+     if 'NAME' not in attrs:
+       error("'NAME' not present in .mklog")
+     if 'EMAIL' not in attrs:
+       error("'EMAIL' not present in .mklog")
+     return attrs['NAME'], attrs['EMAIL']
+ 
+   # Otherwise go with git
+ 
+   rc1, name, _ = run('git config user.name', False)
+   name = name.rstrip()
+   rc2, email, _ = run('git config user.email', False)
+   email = email.rstrip()
+ 
+   if rc1 != 0 or rc2 != 0:
+     error("""\
+ Could not read git user.name and user.email settings.
+ Please add missing git settings, or create a %s.
+ """ % mklog_conf)
+ 
+   return name, email
+ 
+ def get_parent_changelog (s):
+   """See which ChangeLog this file change should go to."""
+ 
+   if s.find('\\') == -1 and s.find('/') == -1:
+     return "ChangeLog", s
+ 
+   gcc_root = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
+ 
+   d = s
+   while d:
+     clname = d + "/ChangeLog"
+     if os.path.exists(gcc_root + '/' + clname) or os.path.exists(clname):
+       relname = s[len(d)+1:]
+       return clname, relname
+     d, _ = os.path.split(d)
+ 
+   return "Unknown ChangeLog", s
+ 
+ class FileDiff:
+   """Class to represent changes in a single file."""
+ 
+   def __init__(self, filename):
+     self.filename = filename
+     self.hunks = []
+     self.clname, self.relname = get_parent_changelog(filename);
+ 
+   def dump(self):
+     print("Diff for %s:\n  ChangeLog = %s\n  rel name = %s\n" % (self.filename, self.clname, self.relname))
+     for i, h in enumerate(self.hunks):
+       print("Next hunk %d:" % i)
+       h.dump()
+ 
+ class Hunk:
+   """Class to represent a single hunk of changes."""
+ 
+   def __init__(self, hdr):
+     self.hdr = hdr
+     self.lines = []
+     self.ctx_diff = is_ctx_hunk_start(hdr)
+ 
+   def dump(self):
+     print('%s' % self.hdr)
+     print('%s' % '\n'.join(self.lines))
+ 
+   def is_file_addition(self):
+     """Does hunk describe addition of file?"""
+     if self.ctx_diff:
+       for line in self.lines:
+         if re.match(r'^\*\*\* 0 \*\*\*\*', line):
+           return True
+     else:
+       return re.match(r'^@@ -0,0 \+1.* @@', self.hdr)
+ 
+   def is_file_removal(self):
+     """Does hunk describe removal of file?"""
+     if self.ctx_diff:
+       for line in self.lines:
+         if re.match(r'^--- 0 ----', line):
+           return True
+     else:
+       return re.match(r'^@@ -1.* \+0,0 @@', self.hdr)
+ 
+ def is_file_diff_start(s):
+   # Don't be fooled by context diff line markers:
+   #   *** 385,391 ****
+   return ((s.startswith('*** ') and not s.endswith('***'))
+           or (s.startswith('--- ') and not s.endswith('---')))
+ 
+ def is_ctx_hunk_start(s):
+   return re.match(r'^\*\*\*\*\*\**', s)
+ 
+ def is_uni_hunk_start(s):
+   return re.match(r'^@@ .* @@', s)
+ 
+ def is_hunk_start(s):
+   return is_ctx_hunk_start(s) or is_uni_hunk_start(s)
+ 
+ def remove_suffixes(s):
+   if s.startswith('a/') or s.startswith('b/'):
+     s = s[2:]
+   if s.endswith('.jj'):
+     s = s[:-3]
+   return s
+ 
+ def find_changed_funs(hunk):
+   """Find all functions touched by hunk.  We don't try too hard
+      to find good matches.  This should return a superset
+      of the actual set of functions in the .diff file.
+   """
+ 
+   fns = []
+   fn = None
+ 
+   if (cache.match(r'^\*\*\*\*\*\** ([a-zA-Z0-9_].*)', hunk.hdr)
+       or cache.match(r'^@@ .* @@ ([a-zA-Z0-9_].*)', hunk.hdr)):
+     fn = cache.group(1)
+ 
+   for i, line in enumerate(hunk.lines):
+     # Context diffs have extra whitespace after first char;
+     # remove it to make matching easier.
+     if hunk.ctx_diff:
+       line = re.sub(r'^([-+! ]) ', r'\1', line)
+ 
+     # Remember most recent identifier in hunk
+     # that might be a function name.
+     if cache.match(r'^[-+! ]([a-zA-Z0-9_#].*)', line):
+       fn = cache.group(1)
+ 
+     change = line and re.match(r'^[-+!][^-]', line)
+ 
+     # Top-level comment cannot belong to function
+     if re.match(r'^[-+! ]\/\*', line):
+       fn = None
+ 
+     if change and fn:
+       if cache.match(r'^((class|struct|union|enum)\s+[a-zA-Z0-9_]+)', fn):
+         # Struct declaration
+         fn = cache.group(1)
+       elif cache.search(r'#\s*define\s+([a-zA-Z0-9_]+)', fn):
+         # Macro definition
+         fn = cache.group(1)
+       elif cache.match('^DEF[A-Z0-9_]+\s*\(([a-zA-Z0-9_]+)', fn):
+         # Supermacro
+         fn = cache.group(1)
+       elif cache.search(r'([a-zA-Z_][^()\s]*)\s*\([^*]', fn):
+         # Discard template and function parameters.
+         fn = cache.group(1)
+         fn = re.sub(r'<[^<>]*>', '', fn)
+         fn = fn.rstrip()
+       else:
+         fn = None
+ 
+       if fn and fn not in fns:  # Avoid dups
+         fns.append(fn)
+ 
+       fn = None
+ 
+   return fns
+ 
+ def parse_patch(contents):
+   """Parse patch contents to a sequence of FileDiffs."""
+ 
+   diffs = []
+ 
+   lines = contents.split('\n')
+ 
+   i = 0
+   while i < len(lines):
+     line = lines[i]
+ 
+     # Diff headers look like
+     #   --- a/gcc/tree.c
+     #   +++ b/gcc/tree.c
+     # or
+     #   *** gcc/cfgexpand.c     2013-12-25 20:07:24.800350058 +0400
+     #   --- gcc/cfgexpand.c     2013-12-25 20:06:30.612350178 +0400
+ 
+     if is_file_diff_start(line):
+       left = re.split(r'\s+', line)[1]
+     else:
+       i += 1
+       continue
+ 
+     left = remove_suffixes(left);
+ 
+     i += 1
+     line = lines[i]
+ 
+     if not cache.match(r'^[+-][+-][+-] +(\S+)', line):
+       error("expected filename in line %d" % i)
+     right = remove_suffixes(cache.group(1));
+ 
+     # Extract real file name from left and right names.
+     filename = None
+     if left == right:
+       filename = left
+     elif left == '/dev/null':
+       filename = right;
+     elif right == '/dev/null':
+       filename = left;
+     else:
+       comps = []
+       while left and right:
+         left, l = os.path.split(left)
+         right, r = os.path.split(right)
+         if l != r:
+           break
+         comps.append(l)
+ 
+       if not comps:
+         error("failed to extract common name for %s and %s" % (left, right))
+ 
+       comps.reverse()
+       filename = '/'.join(comps)
+ 
+     d = FileDiff(filename)
+     diffs.append(d)
+ 
+     # Collect hunks for current file.
+     hunk = None
+     i += 1
+     while i < len(lines):
+       line = lines[i]
+ 
+       # Create new hunk when we see hunk header
+       if is_hunk_start(line):
+         if hunk is not None:
+           d.hunks.append(hunk)
+         hunk = Hunk(line)
+         i += 1
+         continue
+ 
+       # Stop when we reach next diff
+       if (is_file_diff_start(line)
+           or line.startswith('diff ')
+           or line.startswith('Index: ')):
+         i -= 1
+         break
+ 
+       if hunk is not None:
+         hunk.lines.append(line)
+       i += 1
+ 
+     d.hunks.append(hunk)
+ 
+   return diffs
+ 
+ 
+ def get_pr_from_testcase(line):
+     r = pr_regex.search(line)
+     if r != None:
+         return r.group(3)
+     else:
+         return None
+ 
+ def main():
+   name, email = read_user_info()
+ 
+   help_message =  """\
+ Generate ChangeLog template for PATCH.
+ PATCH must be generated using diff(1)'s -up or -cp options
+ (or their equivalent in Subversion/git).
+ """
+ 
+   inline_message = """\
+ Prepends ChangeLog to PATCH.
+ If PATCH is not stdin, modifies PATCH in-place,
+ otherwise writes to stdout.'
+ """
+ 
+   parser = argparse.ArgumentParser(description = help_message)
+   parser.add_argument('-v', '--verbose', action = 'store_true', help = 'Verbose messages')
+   parser.add_argument('-i', '--inline', action = 'store_true', help = inline_message)
+   parser.add_argument('input', nargs = '?', help = 'Patch file (or missing, read standard input)')
+   args = parser.parse_args()
+   if args.input == '-':
+       args.input = None
+   input = open(args.input) if args.input else sys.stdin
+   contents = input.read()
+   diffs = parse_patch(contents)
+ 
+   if args.verbose:
+     print("Parse results:")
+     for d in diffs:
+       d.dump()
+ 
+   # Generate template ChangeLog.
+ 
+   logs = {}
+   prs = []
+   for d in diffs:
+     log_name = d.clname
+ 
+     logs.setdefault(log_name, '')
+     logs[log_name] += '\t* %s' % d.relname
+ 
+     change_msg = ''
+ 
+     # Check if file was removed or added.
+     # Two patterns for context and unified diff.
+     if len(d.hunks) == 1:
+       hunk0 = d.hunks[0]
+       if hunk0.is_file_addition():
+         if re.search(r'testsuite.*(?<!\.exp)$', d.filename):
+           change_msg = ': New test.\n'
+           pr = get_pr_from_testcase(hunk0.lines[0])
+           if pr and pr not in prs:
+               prs.append(pr)
+         else:
+           change_msg = ": New file.\n"
+       elif hunk0.is_file_removal():
+         change_msg = ": Remove.\n"
+ 
+     _, ext = os.path.splitext(d.filename)
+     if (not change_msg and ext in ['.c', '.cpp', '.C', '.cc', '.h', '.inc', '.def']
+         and not 'testsuite' in d.filename):
+       fns = []
+       for hunk in d.hunks:
+         for fn in find_changed_funs(hunk):
+           if fn not in fns:
+             fns.append(fn)
+ 
+       for fn in fns:
+         if change_msg:
+           change_msg += "\t(%s):\n" % fn
+         else:
+           change_msg = " (%s):\n" % fn
+ 
+     logs[log_name] += change_msg if change_msg else ":\n"
+ 
+   if args.inline and args.input:
+     # Get a temp filename, rather than an open filehandle, because we use
+     # the open to truncate.
+     fd, tmp = tempfile.mkstemp("tmp.XXXXXXXX")
+     os.close(fd)
+ 
+     # Copy permissions to temp file
+     # (old Pythons do not support shutil.copymode)
+     shutil.copymode(args.input, tmp)
+ 
+     # Open the temp file, clearing contents.
+     out = open(tmp, 'w')
+   else:
+     tmp = None
+     out = sys.stdout
+ 
+   # Print log
+   date = time.strftime('%Y-%m-%d')
+   bugmsg = ''
+   if len(prs):
+     bugmsg = '\n'.join(['\t' + pr for pr in prs]) + '\n'
+ 
+   for log_name, msg in sorted(logs.items()):
+     out.write("""\
+ %s:
+ 
+ %s  %s  <%s>
+ 
+ %s%s\n""" % (log_name, date, name, email, bugmsg, msg))
+ 
+   if args.inline:
+     # Append patch body
+     out.write(contents)
+ 
+     if args.input:
+       # Write new contents atomically
+       out.close()
+       shutil.move(tmp, args.input)
+ 
+ if __name__ == '__main__':
+     main()
diff -Nrcpad gcc-10.3.0/contrib/legacy/mklog.pl gcc-11.1.0/contrib/legacy/mklog.pl
*** gcc-10.3.0/contrib/legacy/mklog.pl	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/contrib/legacy/mklog.pl	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,362 ----
+ #!/usr/bin/perl
+ # Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ #
+ # This file is part of GCC.
+ #
+ # GCC is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 3, or (at your option)
+ # any later version.
+ #
+ # GCC is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # GNU General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with GCC; see the file COPYING.  If not, write to
+ # the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+ # Boston, MA 02110-1301, USA.
+ 
+ # This script parses a .diff file generated with 'diff -up' or 'diff -cp'
+ # and adds a skeleton ChangeLog file to the file. It does not try to be
+ # very smart when parsing function names, but it produces a reasonable
+ # approximation.
+ #
+ # Author: Diego Novillo <dnovillo@google.com> and
+ #         Cary Coutant <ccoutant@google.com>
+ 
+ use File::Temp;
+ use File::Copy qw(cp mv);
+ 
+ $date = `date +%Y-%m-%d`; chop ($date);
+ 
+ $dot_mklog_format_msg =
+     "The .mklog format is:\n"
+     . "NAME = ...\n"
+     . "EMAIL = ...\n";
+ 
+ # Create a .mklog to reflect your profile, if necessary.
+ my $conf = "$ENV{HOME}/.mklog";
+ if (-f "$conf") {
+     open (CONF, "$conf")
+ 	or die "Could not open file '$conf' for reading: $!\n";
+     while (<CONF>) {
+ 	if (m/^\s*NAME\s*=\s*(.*?)\s*$/) {
+ 	    $name = $1;
+ 	} elsif (m/^\s*EMAIL\s*=\s*(.*?)\s*$/) {
+ 	    $addr = $1;
+ 	}
+     }
+     if (!($name && $addr)) {
+ 	die "Could not read .mklog settings.\n"
+ 	    . $dot_mklog_format_msg;
+     }
+ } else {
+     $name = `git config user.name`;
+     chomp($name);
+     $addr = `git config user.email`;
+     chomp($addr);
+ 
+     if (!($name && $addr)) {
+ 	die "Could not read git user.name and user.email settings.\n"
+ 	    . "Please add missing git settings, or create a .mklog file in"
+ 	    . " $ENV{HOME}.\n"
+ 	    . $dot_mklog_format_msg;
+     }
+ }
+ 
+ $gcc_root = $0;
+ $gcc_root =~ s/[^\\\/]+$/../;
+ 
+ #-----------------------------------------------------------------------------
+ # Program starts here. You should not need to edit anything below this
+ # line.
+ #-----------------------------------------------------------------------------
+ $inline = 0;
+ if ($#ARGV == 1 && ("$ARGV[0]" eq "-i" || "$ARGV[0]" eq "--inline")) {
+ 	shift;
+ 	$inline = 1;
+ } elsif ($#ARGV != 0) {
+     $prog = `basename $0`; chop ($prog);
+     print <<EOF;
+ usage: $prog [ -i | --inline ] file.diff
+ 
+ Generate ChangeLog template for file.diff.
+ It assumes that patch has been created with -up or -cp.
+ When -i is used, the ChangeLog template is followed by the contents of
+ file.diff.
+ When file.diff is -, read standard input.
+ When -i is used and file.diff is not -, it writes to file.diff, otherwise it
+ writes to stdout.
+ EOF
+     exit 1;
+ }
+ 
+ $diff = $ARGV[0];
+ $dir = `dirname $diff`; chop ($dir);
+ $basename = `basename $diff`; chop ($basename);
+ $hdrline = "$date  $name  <$addr>";
+ 
+ sub get_clname ($) {
+ 	return ('ChangeLog', $_[0]) if ($_[0] !~ /[\/\\]/);
+ 
+ 	my $dirname = $_[0];
+ 	while ($dirname) {
+ 		my $clname = "$dirname/ChangeLog";
+ 		if (-f "$gcc_root/$clname" || -f "$clname") {
+ 			my $relname = substr ($_[0], length ($dirname) + 1);
+ 			return ($clname, $relname);
+ 		} else {
+ 			$dirname =~ s/[\/\\]?[^\/\\]*$//;
+ 		} 
+ 	}
+ 
+ 	return ('Unknown ChangeLog', $_[0]);
+ }
+ 
+ sub remove_suffixes ($) {
+ 	my $filename = $_[0];
+ 	$filename =~ s/^[ab]\///;
+ 	$filename =~ s/\.jj$//;
+ 	return $filename;
+ }
+ 
+ sub is_context_hunk_start {
+ 	return @_[0] =~ /^\*\*\*\*\*\** ([a-zA-Z0-9_].*)/;
+ }
+ 
+ sub is_unified_hunk_start {
+ 	return @_[0] =~ /^@@ .* @@ ([a-zA-Z0-9_].*)/;
+ }
+ 
+ # Check if line is a top-level declaration.
+ sub is_top_level {
+ 	my ($function, $is_context_diff) = (@_);
+ 	if (is_unified_hunk_start ($function)
+ 	    || is_context_hunk_start ($function)) {
+ 	    return 1;
+ 	}
+ 	if ($is_context_diff) {
+ 		$function =~ s/^..//;
+ 	} else {
+ 		$function =~ s/^.//;
+ 	}
+ 	return $function && $function !~ /^[\s{#]/;
+ }
+ 
+ # Read contents of .diff file
+ open (DFILE, $diff) or die "Could not open file $diff for reading";
+ chomp (my @diff_lines = <DFILE>);
+ close (DFILE);
+ 
+ # Array diff_lines is modified by the log generation, so save a copy in
+ # orig_diff_lines if needed.
+ if ($inline) {
+     @orig_diff_lines = @diff_lines;
+ }
+ 
+ # For every file in the .diff print all the function names in ChangeLog
+ # format.
+ %cl_entries = ();
+ $change_msg = undef;
+ $look_for_funs = 0;
+ $clname = get_clname('');
+ $line_idx = 0;
+ foreach (@diff_lines) {
+     # Stop processing functions if we found a new file.
+ 	# Remember both left and right names because one may be /dev/null.
+     # Don't be fooled by line markers in case of context diff.
+     if (!/\*\*\*$/ && /^[+*][+*][+*] +(\S+)/) {
+ 		$left = remove_suffixes ($1);
+ 		$look_for_funs = 0;
+ 	}
+     if (!/---$/ && /^--- +(\S+)?/) {
+ 		$right = remove_suffixes ($1);
+ 		$look_for_funs = 0;
+ 	}
+ 
+ 	# Check if the body of diff started.
+ 	# We should now have both left and right name,
+ 	# so we can decide filename.
+ 
+     if ($left && (/^\*{15}/ || /^@@ /)) {
+ 	# If we have not seen any function names in the previous file (ie,
+ 	# $change_msg is empty), we just write out a ':' before starting the next
+ 	# file.
+ 	if ($clname) {
+ 		$cl_entries{$clname} .= $change_msg ? "$change_msg" : ":\n";
+ 	}
+ 
+ 	if ($left eq $right) {
+ 		$filename = $left;
+ 	} elsif($left eq '/dev/null') {
+ 		$filename = $right;
+ 	} elsif($right eq '/dev/null') {
+ 		$filename = $left;
+ 	} else {
+ 		my @ldirs = split /[\/\\]/, $left;
+ 		my @rdirs = split /[\/\\]/, $right;
+ 
+ 		$filename = '';
+ 		while ((my $l = pop @ldirs) && (my $r = pop @rdirs)) {
+ 			last if ($l ne $r);
+ 			$filename = "$l/$filename";
+ 		}
+ 		$filename =~ s/\/$//;
+ 
+ 		if (!$filename) {
+ 			print STDERR "Error: failed to parse diff for $left and $right\n";
+ 			exit 1;
+ 		}
+ 	}
+ 	$left = $right = undef;
+ 	($clname, $relname) = get_clname ($filename);
+ 	$cl_entries{$clname} .= "\t* $relname";
+ 	$change_msg = '';
+ 	$look_for_funs = $filename =~ '\.(c|cpp|C|cc|h|inc|def)$';
+     }
+ 
+     # Context diffs have extra whitespace after first char;
+     # remove it to make matching easier.
+     if ($is_context_diff) {
+       s/^([-+! ]) /\1/;
+     }
+ 
+     # Remember the last line in a diff block that might start
+     # a new function.
+     if (/^[-+! ]([a-zA-Z0-9_].*)/) {
+         $save_fn = $1;
+     }
+ 
+     # Check if file is newly added.
+     # Two patterns: for context and unified diff.
+     if (/^\*\*\* 0 \*\*\*\*/
+         || /^@@ -0,0 \+1.* @@/) {
+         $change_msg = $filename =~ /testsuite.*(?<!\.exp)$/ ? ": New test.\n" : ": New file.\n";
+         $look_for_funs = 0;
+     }
+ 
+     # Check if file was removed.
+     # Two patterns: for context and unified diff.
+     if (/^--- 0 ----/
+         || /^@@ -1.* \+0,0 @@/) {
+         $change_msg = ": Remove.\n";
+         $look_for_funs = 0;
+     }
+ 
+     if (is_unified_hunk_start ($diff_lines[$line_idx])) {
+         $is_context_diff = 0;
+     }
+     elsif (is_context_hunk_start ($diff_lines[$line_idx])) {
+ 	    $is_context_diff = 1;
+     }
+ 
+     # If we find a new function, print it in brackets.  Special case if
+     # this is the first function in a file.  
+     #
+     # Note that we don't try too hard to find good matches.  This should
+     # return a superset of the actual set of functions in the .diff file.
+     #
+     # The first pattern works with context diff files (diff -c). The
+     # second pattern works with unified diff files (diff -u).
+     #
+     # The third pattern looks for the starts of functions or classes
+     # within a diff block both for context and unified diff files.
+     if ($look_for_funs
+         && (/^\*\*\*\*\*\** ([a-zA-Z0-9_].*)/
+ 	|| /^@@ .* @@ ([a-zA-Z0-9_].*)/
+ 	|| /^[-+! ](\{)/))
+       {
+ 	$_ = $1;
+ 	my $fn;
+ 	if (/^\{/) {
+ 	    # Beginning of a new function.
+ 	    $_ = $save_fn;
+ 	} else {
+ 	    $save_fn = "";
+ 	}
+ 	if (/;$/) {
+ 	    # No usable function name found.
+ 	} elsif (/^((class|struct|union|enum) [a-zA-Z0-9_]+)/) {
+ 	    # Discard stuff after the class/struct/etc. tag.
+ 	    $fn = $1;
+ 	} elsif (/([a-zA-Z0-9_][^(]*)\(/) {
+ 	    # Discard template and function parameters.
+ 	    $fn = $1;
+ 	    1 while ($fn =~ s/<[^<>]*>//);
+ 	    $fn =~ s/[ \t]*$//;
+ 	}
+ 	# Check is function really modified
+ 	$no_real_change = 0;
+ 	$idx = $line_idx;
+ 	# Skip line info in context diffs.
+ 	while ($idx <= $#diff_lines && $is_context_diff
+                && $diff_lines[$idx + 1] =~ /^[-\*]{3} [0-9]/) {
+ 		++$idx;
+ 	}
+ 	# Check all lines till the first change
+ 	# for the presence of really changed function
+ 	do {
+ 		++$idx;
+ 		$no_real_change = $idx > $#diff_lines
+ 				  || is_top_level ($diff_lines[$idx], $is_context_diff);
+ 	} while (!$no_real_change && ($diff_lines[$idx] !~ /^[-+!]/));
+ 	if ($fn && !$seen_names{$fn} && !$no_real_change) {
+ 	    # If this is the first function in the file, we display it next
+ 	    # to the filename, so we need an extra space before the opening
+ 	    # brace.
+ 	    if (!$change_msg) {
+ 		$change_msg .= " ";
+ 	    } else {
+ 		$change_msg .= "\t";
+ 	    }
+ 
+ 		$change_msg .= "($fn):\n";
+ 	    $seen_names{$fn} = 1;
+ 	}
+     }
+ 	$line_idx++;
+ }
+ 
+ # If we have not seen any function names (ie, $change_msg is empty), we just
+ # write out a ':'. This happens when there is only one file with no
+ # functions.
+ $cl_entries{$clname} .= $change_msg ? "$change_msg\n" : ":\n";
+ 
+ if ($inline && $diff ne "-") {
+ 	# Get a temp filename, rather than an open filehandle, because we use
+ 	# the open to truncate.
+ 	$tmp = mktemp("tmp.XXXXXXXX") or die "Could not create temp file: $!";
+ 
+ 	# Copy the permissions to the temp file (in File::Copy module version
+ 	# 2.15 and later).
+ 	cp $diff, $tmp or die "Could not copy patch file to temp file: $!";
+ 
+ 	# Open the temp file, clearing contents.
+ 	open (OUTPUTFILE, '>', $tmp) or die "Could not open temp file: $!";
+ } else {
+ 	*OUTPUTFILE = STDOUT;
+ }
+ 
+ # Print the log
+ foreach my $clname (keys %cl_entries) {
+ 	print OUTPUTFILE "$clname:\n\n$hdrline\n\n$cl_entries{$clname}\n";
+ }
+ 
+ if ($inline) {
+ 	# Append the patch to the log
+ 	foreach (@orig_diff_lines) {
+ 		print OUTPUTFILE "$_\n";
+ 	}
+ }
+ 
+ if ($inline && $diff ne "-") {
+ 	# Close $tmp
+ 	close(OUTPUTFILE);
+ 
+ 	# Write new contents to $diff atomically
+ 	mv $tmp, $diff or die "Could not move temp file to patch file: $!";
+ }
+ 
+ exit 0;
diff -Nrcpad gcc-10.3.0/contrib/mklog gcc-11.1.0/contrib/mklog
*** gcc-10.3.0/contrib/mklog	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/mklog	Thu Jan  1 00:00:00 1970
***************
*** 1,466 ****
- #!/usr/bin/env python3
- 
- # Copyright (C) 2017-2019 Free Software Foundation, Inc.
- #
- # This file is part of GCC.
- #
- # GCC is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 3, or (at your option)
- # any later version.
- #
- # GCC is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with GCC; see the file COPYING.  If not, write to
- # the Free Software Foundation, 51 Franklin Street, Fifth Floor,
- # Boston, MA 02110-1301, USA.
- 
- # This script parses a .diff file generated with 'diff -up' or 'diff -cp'
- # and adds a skeleton ChangeLog file to the file. It does not try to be
- # too smart when parsing function names, but it produces a reasonable
- # approximation.
- #
- # This is a straightforward adaptation of original Perl script.
- #
- # Author: Yury Gribov <tetra2005@gmail.com>
- 
- import argparse
- import sys
- import re
- import os.path
- import os
- import tempfile
- import time
- import shutil
- from subprocess import Popen, PIPE
- 
- me = os.path.basename(sys.argv[0])
- 
- pr_regex = re.compile('\+(\/(\/|\*)|[Cc*!])\s+(PR [a-z+-]+\/[0-9]+)')
- 
- def error(msg):
-   sys.stderr.write("%s: error: %s\n" % (me, msg))
-   sys.exit(1)
- 
- def warn(msg):
-   sys.stderr.write("%s: warning: %s\n" % (me, msg))
- 
- class RegexCache(object):
-   """Simple trick to Perl-like combined match-and-bind."""
- 
-   def __init__(self):
-     self.last_match = None
- 
-   def match(self, p, s):
-     self.last_match = re.match(p, s) if isinstance(p, str) else p.match(s)
-     return self.last_match
- 
-   def search(self, p, s):
-     self.last_match = re.search(p, s) if isinstance(p, str) else p.search(s)
-     return self.last_match
- 
-   def group(self, n):
-     return self.last_match.group(n)
- 
- cache = RegexCache()
- 
- def run(cmd, die_on_error):
-   """Simple wrapper for Popen."""
-   proc = Popen(cmd.split(' '), stderr = PIPE, stdout = PIPE)
-   (out, err) = proc.communicate()
-   if die_on_error and proc.returncode != 0:
-     error("`%s` failed:\n" % (cmd, proc.stderr))
-   return proc.returncode, out.decode(), err
- 
- def read_user_info():
-   dot_mklog_format_msg = """\
- The .mklog format is:
- NAME = ...
- EMAIL = ...
- """
- 
-   # First try to read .mklog config
-   mklog_conf = os.path.expanduser('~/.mklog')
-   if os.path.exists(mklog_conf):
-     attrs = {}
-     f = open(mklog_conf)
-     for s in f:
-       if cache.match(r'^\s*([a-zA-Z0-9_]+)\s*=\s*(.*?)\s*$', s):
-         attrs[cache.group(1)] = cache.group(2)
-     f.close()
-     if 'NAME' not in attrs:
-       error("'NAME' not present in .mklog")
-     if 'EMAIL' not in attrs:
-       error("'EMAIL' not present in .mklog")
-     return attrs['NAME'], attrs['EMAIL']
- 
-   # Otherwise go with git
- 
-   rc1, name, _ = run('git config user.name', False)
-   name = name.rstrip()
-   rc2, email, _ = run('git config user.email', False)
-   email = email.rstrip()
- 
-   if rc1 != 0 or rc2 != 0:
-     error("""\
- Could not read git user.name and user.email settings.
- Please add missing git settings, or create a %s.
- """ % mklog_conf)
- 
-   return name, email
- 
- def get_parent_changelog (s):
-   """See which ChangeLog this file change should go to."""
- 
-   if s.find('\\') == -1 and s.find('/') == -1:
-     return "ChangeLog", s
- 
-   gcc_root = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
- 
-   d = s
-   while d:
-     clname = d + "/ChangeLog"
-     if os.path.exists(gcc_root + '/' + clname) or os.path.exists(clname):
-       relname = s[len(d)+1:]
-       return clname, relname
-     d, _ = os.path.split(d)
- 
-   return "Unknown ChangeLog", s
- 
- class FileDiff:
-   """Class to represent changes in a single file."""
- 
-   def __init__(self, filename):
-     self.filename = filename
-     self.hunks = []
-     self.clname, self.relname = get_parent_changelog(filename);
- 
-   def dump(self):
-     print("Diff for %s:\n  ChangeLog = %s\n  rel name = %s\n" % (self.filename, self.clname, self.relname))
-     for i, h in enumerate(self.hunks):
-       print("Next hunk %d:" % i)
-       h.dump()
- 
- class Hunk:
-   """Class to represent a single hunk of changes."""
- 
-   def __init__(self, hdr):
-     self.hdr = hdr
-     self.lines = []
-     self.ctx_diff = is_ctx_hunk_start(hdr)
- 
-   def dump(self):
-     print('%s' % self.hdr)
-     print('%s' % '\n'.join(self.lines))
- 
-   def is_file_addition(self):
-     """Does hunk describe addition of file?"""
-     if self.ctx_diff:
-       for line in self.lines:
-         if re.match(r'^\*\*\* 0 \*\*\*\*', line):
-           return True
-     else:
-       return re.match(r'^@@ -0,0 \+1.* @@', self.hdr)
- 
-   def is_file_removal(self):
-     """Does hunk describe removal of file?"""
-     if self.ctx_diff:
-       for line in self.lines:
-         if re.match(r'^--- 0 ----', line):
-           return True
-     else:
-       return re.match(r'^@@ -1.* \+0,0 @@', self.hdr)
- 
- def is_file_diff_start(s):
-   # Don't be fooled by context diff line markers:
-   #   *** 385,391 ****
-   return ((s.startswith('*** ') and not s.endswith('***'))
-           or (s.startswith('--- ') and not s.endswith('---')))
- 
- def is_ctx_hunk_start(s):
-   return re.match(r'^\*\*\*\*\*\**', s)
- 
- def is_uni_hunk_start(s):
-   return re.match(r'^@@ .* @@', s)
- 
- def is_hunk_start(s):
-   return is_ctx_hunk_start(s) or is_uni_hunk_start(s)
- 
- def remove_suffixes(s):
-   if s.startswith('a/') or s.startswith('b/'):
-     s = s[2:]
-   if s.endswith('.jj'):
-     s = s[:-3]
-   return s
- 
- def find_changed_funs(hunk):
-   """Find all functions touched by hunk.  We don't try too hard
-      to find good matches.  This should return a superset
-      of the actual set of functions in the .diff file.
-   """
- 
-   fns = []
-   fn = None
- 
-   if (cache.match(r'^\*\*\*\*\*\** ([a-zA-Z0-9_].*)', hunk.hdr)
-       or cache.match(r'^@@ .* @@ ([a-zA-Z0-9_].*)', hunk.hdr)):
-     fn = cache.group(1)
- 
-   for i, line in enumerate(hunk.lines):
-     # Context diffs have extra whitespace after first char;
-     # remove it to make matching easier.
-     if hunk.ctx_diff:
-       line = re.sub(r'^([-+! ]) ', r'\1', line)
- 
-     # Remember most recent identifier in hunk
-     # that might be a function name.
-     if cache.match(r'^[-+! ]([a-zA-Z0-9_#].*)', line):
-       fn = cache.group(1)
- 
-     change = line and re.match(r'^[-+!][^-]', line)
- 
-     # Top-level comment cannot belong to function
-     if re.match(r'^[-+! ]\/\*', line):
-       fn = None
- 
-     if change and fn:
-       if cache.match(r'^((class|struct|union|enum)\s+[a-zA-Z0-9_]+)', fn):
-         # Struct declaration
-         fn = cache.group(1)
-       elif cache.search(r'#\s*define\s+([a-zA-Z0-9_]+)', fn):
-         # Macro definition
-         fn = cache.group(1)
-       elif cache.match('^DEF[A-Z0-9_]+\s*\(([a-zA-Z0-9_]+)', fn):
-         # Supermacro
-         fn = cache.group(1)
-       elif cache.search(r'([a-zA-Z_][^()\s]*)\s*\([^*]', fn):
-         # Discard template and function parameters.
-         fn = cache.group(1)
-         fn = re.sub(r'<[^<>]*>', '', fn)
-         fn = fn.rstrip()
-       else:
-         fn = None
- 
-       if fn and fn not in fns:  # Avoid dups
-         fns.append(fn)
- 
-       fn = None
- 
-   return fns
- 
- def parse_patch(contents):
-   """Parse patch contents to a sequence of FileDiffs."""
- 
-   diffs = []
- 
-   lines = contents.split('\n')
- 
-   i = 0
-   while i < len(lines):
-     line = lines[i]
- 
-     # Diff headers look like
-     #   --- a/gcc/tree.c
-     #   +++ b/gcc/tree.c
-     # or
-     #   *** gcc/cfgexpand.c     2013-12-25 20:07:24.800350058 +0400
-     #   --- gcc/cfgexpand.c     2013-12-25 20:06:30.612350178 +0400
- 
-     if is_file_diff_start(line):
-       left = re.split(r'\s+', line)[1]
-     else:
-       i += 1
-       continue
- 
-     left = remove_suffixes(left);
- 
-     i += 1
-     line = lines[i]
- 
-     if not cache.match(r'^[+-][+-][+-] +(\S+)', line):
-       error("expected filename in line %d" % i)
-     right = remove_suffixes(cache.group(1));
- 
-     # Extract real file name from left and right names.
-     filename = None
-     if left == right:
-       filename = left
-     elif left == '/dev/null':
-       filename = right;
-     elif right == '/dev/null':
-       filename = left;
-     else:
-       comps = []
-       while left and right:
-         left, l = os.path.split(left)
-         right, r = os.path.split(right)
-         if l != r:
-           break
-         comps.append(l)
- 
-       if not comps:
-         error("failed to extract common name for %s and %s" % (left, right))
- 
-       comps.reverse()
-       filename = '/'.join(comps)
- 
-     d = FileDiff(filename)
-     diffs.append(d)
- 
-     # Collect hunks for current file.
-     hunk = None
-     i += 1
-     while i < len(lines):
-       line = lines[i]
- 
-       # Create new hunk when we see hunk header
-       if is_hunk_start(line):
-         if hunk is not None:
-           d.hunks.append(hunk)
-         hunk = Hunk(line)
-         i += 1
-         continue
- 
-       # Stop when we reach next diff
-       if (is_file_diff_start(line)
-           or line.startswith('diff ')
-           or line.startswith('Index: ')):
-         i -= 1
-         break
- 
-       if hunk is not None:
-         hunk.lines.append(line)
-       i += 1
- 
-     d.hunks.append(hunk)
- 
-   return diffs
- 
- 
- def get_pr_from_testcase(line):
-     r = pr_regex.search(line)
-     if r != None:
-         return r.group(3)
-     else:
-         return None
- 
- def main():
-   name, email = read_user_info()
- 
-   help_message =  """\
- Generate ChangeLog template for PATCH.
- PATCH must be generated using diff(1)'s -up or -cp options
- (or their equivalent in Subversion/git).
- """
- 
-   inline_message = """\
- Prepends ChangeLog to PATCH.
- If PATCH is not stdin, modifies PATCH in-place,
- otherwise writes to stdout.'
- """
- 
-   parser = argparse.ArgumentParser(description = help_message)
-   parser.add_argument('-v', '--verbose', action = 'store_true', help = 'Verbose messages')
-   parser.add_argument('-i', '--inline', action = 'store_true', help = inline_message)
-   parser.add_argument('input', nargs = '?', help = 'Patch file (or missing, read standard input)')
-   args = parser.parse_args()
-   if args.input == '-':
-       args.input = None
-   input = open(args.input) if args.input else sys.stdin
-   contents = input.read()
-   diffs = parse_patch(contents)
- 
-   if args.verbose:
-     print("Parse results:")
-     for d in diffs:
-       d.dump()
- 
-   # Generate template ChangeLog.
- 
-   logs = {}
-   prs = []
-   for d in diffs:
-     log_name = d.clname
- 
-     logs.setdefault(log_name, '')
-     logs[log_name] += '\t* %s' % d.relname
- 
-     change_msg = ''
- 
-     # Check if file was removed or added.
-     # Two patterns for context and unified diff.
-     if len(d.hunks) == 1:
-       hunk0 = d.hunks[0]
-       if hunk0.is_file_addition():
-         if re.search(r'testsuite.*(?<!\.exp)$', d.filename):
-           change_msg = ': New test.\n'
-           pr = get_pr_from_testcase(hunk0.lines[0])
-           if pr and pr not in prs:
-               prs.append(pr)
-         else:
-           change_msg = ": New file.\n"
-       elif hunk0.is_file_removal():
-         change_msg = ": Remove.\n"
- 
-     _, ext = os.path.splitext(d.filename)
-     if (not change_msg and ext in ['.c', '.cpp', '.C', '.cc', '.h', '.inc', '.def']
-         and not 'testsuite' in d.filename):
-       fns = []
-       for hunk in d.hunks:
-         for fn in find_changed_funs(hunk):
-           if fn not in fns:
-             fns.append(fn)
- 
-       for fn in fns:
-         if change_msg:
-           change_msg += "\t(%s):\n" % fn
-         else:
-           change_msg = " (%s):\n" % fn
- 
-     logs[log_name] += change_msg if change_msg else ":\n"
- 
-   if args.inline and args.input:
-     # Get a temp filename, rather than an open filehandle, because we use
-     # the open to truncate.
-     fd, tmp = tempfile.mkstemp("tmp.XXXXXXXX")
-     os.close(fd)
- 
-     # Copy permissions to temp file
-     # (old Pythons do not support shutil.copymode)
-     shutil.copymode(args.input, tmp)
- 
-     # Open the temp file, clearing contents.
-     out = open(tmp, 'w')
-   else:
-     tmp = None
-     out = sys.stdout
- 
-   # Print log
-   date = time.strftime('%Y-%m-%d')
-   bugmsg = ''
-   if len(prs):
-     bugmsg = '\n'.join(['\t' + pr for pr in prs]) + '\n'
- 
-   for log_name, msg in sorted(logs.items()):
-     out.write("""\
- %s:
- 
- %s  %s  <%s>
- 
- %s%s\n""" % (log_name, date, name, email, bugmsg, msg))
- 
-   if args.inline:
-     # Append patch body
-     out.write(contents)
- 
-     if args.input:
-       # Write new contents atomically
-       out.close()
-       shutil.move(tmp, args.input)
- 
- if __name__ == '__main__':
-     main()
--- 0 ----
diff -Nrcpad gcc-10.3.0/contrib/mklog.pl gcc-11.1.0/contrib/mklog.pl
*** gcc-10.3.0/contrib/mklog.pl	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/mklog.pl	Thu Jan  1 00:00:00 1970
***************
*** 1,362 ****
- #!/usr/bin/perl
- # Copyright (C) 2012-2017 Free Software Foundation, Inc.
- #
- # This file is part of GCC.
- #
- # GCC is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 3, or (at your option)
- # any later version.
- #
- # GCC is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with GCC; see the file COPYING.  If not, write to
- # the Free Software Foundation, 51 Franklin Street, Fifth Floor,
- # Boston, MA 02110-1301, USA.
- 
- # This script parses a .diff file generated with 'diff -up' or 'diff -cp'
- # and adds a skeleton ChangeLog file to the file. It does not try to be
- # very smart when parsing function names, but it produces a reasonable
- # approximation.
- #
- # Author: Diego Novillo <dnovillo@google.com> and
- #         Cary Coutant <ccoutant@google.com>
- 
- use File::Temp;
- use File::Copy qw(cp mv);
- 
- $date = `date +%Y-%m-%d`; chop ($date);
- 
- $dot_mklog_format_msg =
-     "The .mklog format is:\n"
-     . "NAME = ...\n"
-     . "EMAIL = ...\n";
- 
- # Create a .mklog to reflect your profile, if necessary.
- my $conf = "$ENV{HOME}/.mklog";
- if (-f "$conf") {
-     open (CONF, "$conf")
- 	or die "Could not open file '$conf' for reading: $!\n";
-     while (<CONF>) {
- 	if (m/^\s*NAME\s*=\s*(.*?)\s*$/) {
- 	    $name = $1;
- 	} elsif (m/^\s*EMAIL\s*=\s*(.*?)\s*$/) {
- 	    $addr = $1;
- 	}
-     }
-     if (!($name && $addr)) {
- 	die "Could not read .mklog settings.\n"
- 	    . $dot_mklog_format_msg;
-     }
- } else {
-     $name = `git config user.name`;
-     chomp($name);
-     $addr = `git config user.email`;
-     chomp($addr);
- 
-     if (!($name && $addr)) {
- 	die "Could not read git user.name and user.email settings.\n"
- 	    . "Please add missing git settings, or create a .mklog file in"
- 	    . " $ENV{HOME}.\n"
- 	    . $dot_mklog_format_msg;
-     }
- }
- 
- $gcc_root = $0;
- $gcc_root =~ s/[^\\\/]+$/../;
- 
- #-----------------------------------------------------------------------------
- # Program starts here. You should not need to edit anything below this
- # line.
- #-----------------------------------------------------------------------------
- $inline = 0;
- if ($#ARGV == 1 && ("$ARGV[0]" eq "-i" || "$ARGV[0]" eq "--inline")) {
- 	shift;
- 	$inline = 1;
- } elsif ($#ARGV != 0) {
-     $prog = `basename $0`; chop ($prog);
-     print <<EOF;
- usage: $prog [ -i | --inline ] file.diff
- 
- Generate ChangeLog template for file.diff.
- It assumes that patch has been created with -up or -cp.
- When -i is used, the ChangeLog template is followed by the contents of
- file.diff.
- When file.diff is -, read standard input.
- When -i is used and file.diff is not -, it writes to file.diff, otherwise it
- writes to stdout.
- EOF
-     exit 1;
- }
- 
- $diff = $ARGV[0];
- $dir = `dirname $diff`; chop ($dir);
- $basename = `basename $diff`; chop ($basename);
- $hdrline = "$date  $name  <$addr>";
- 
- sub get_clname ($) {
- 	return ('ChangeLog', $_[0]) if ($_[0] !~ /[\/\\]/);
- 
- 	my $dirname = $_[0];
- 	while ($dirname) {
- 		my $clname = "$dirname/ChangeLog";
- 		if (-f "$gcc_root/$clname" || -f "$clname") {
- 			my $relname = substr ($_[0], length ($dirname) + 1);
- 			return ($clname, $relname);
- 		} else {
- 			$dirname =~ s/[\/\\]?[^\/\\]*$//;
- 		} 
- 	}
- 
- 	return ('Unknown ChangeLog', $_[0]);
- }
- 
- sub remove_suffixes ($) {
- 	my $filename = $_[0];
- 	$filename =~ s/^[ab]\///;
- 	$filename =~ s/\.jj$//;
- 	return $filename;
- }
- 
- sub is_context_hunk_start {
- 	return @_[0] =~ /^\*\*\*\*\*\** ([a-zA-Z0-9_].*)/;
- }
- 
- sub is_unified_hunk_start {
- 	return @_[0] =~ /^@@ .* @@ ([a-zA-Z0-9_].*)/;
- }
- 
- # Check if line is a top-level declaration.
- sub is_top_level {
- 	my ($function, $is_context_diff) = (@_);
- 	if (is_unified_hunk_start ($function)
- 	    || is_context_hunk_start ($function)) {
- 	    return 1;
- 	}
- 	if ($is_context_diff) {
- 		$function =~ s/^..//;
- 	} else {
- 		$function =~ s/^.//;
- 	}
- 	return $function && $function !~ /^[\s{#]/;
- }
- 
- # Read contents of .diff file
- open (DFILE, $diff) or die "Could not open file $diff for reading";
- chomp (my @diff_lines = <DFILE>);
- close (DFILE);
- 
- # Array diff_lines is modified by the log generation, so save a copy in
- # orig_diff_lines if needed.
- if ($inline) {
-     @orig_diff_lines = @diff_lines;
- }
- 
- # For every file in the .diff print all the function names in ChangeLog
- # format.
- %cl_entries = ();
- $change_msg = undef;
- $look_for_funs = 0;
- $clname = get_clname('');
- $line_idx = 0;
- foreach (@diff_lines) {
-     # Stop processing functions if we found a new file.
- 	# Remember both left and right names because one may be /dev/null.
-     # Don't be fooled by line markers in case of context diff.
-     if (!/\*\*\*$/ && /^[+*][+*][+*] +(\S+)/) {
- 		$left = remove_suffixes ($1);
- 		$look_for_funs = 0;
- 	}
-     if (!/---$/ && /^--- +(\S+)?/) {
- 		$right = remove_suffixes ($1);
- 		$look_for_funs = 0;
- 	}
- 
- 	# Check if the body of diff started.
- 	# We should now have both left and right name,
- 	# so we can decide filename.
- 
-     if ($left && (/^\*{15}/ || /^@@ /)) {
- 	# If we have not seen any function names in the previous file (ie,
- 	# $change_msg is empty), we just write out a ':' before starting the next
- 	# file.
- 	if ($clname) {
- 		$cl_entries{$clname} .= $change_msg ? "$change_msg" : ":\n";
- 	}
- 
- 	if ($left eq $right) {
- 		$filename = $left;
- 	} elsif($left eq '/dev/null') {
- 		$filename = $right;
- 	} elsif($right eq '/dev/null') {
- 		$filename = $left;
- 	} else {
- 		my @ldirs = split /[\/\\]/, $left;
- 		my @rdirs = split /[\/\\]/, $right;
- 
- 		$filename = '';
- 		while ((my $l = pop @ldirs) && (my $r = pop @rdirs)) {
- 			last if ($l ne $r);
- 			$filename = "$l/$filename";
- 		}
- 		$filename =~ s/\/$//;
- 
- 		if (!$filename) {
- 			print STDERR "Error: failed to parse diff for $left and $right\n";
- 			exit 1;
- 		}
- 	}
- 	$left = $right = undef;
- 	($clname, $relname) = get_clname ($filename);
- 	$cl_entries{$clname} .= "\t* $relname";
- 	$change_msg = '';
- 	$look_for_funs = $filename =~ '\.(c|cpp|C|cc|h|inc|def)$';
-     }
- 
-     # Context diffs have extra whitespace after first char;
-     # remove it to make matching easier.
-     if ($is_context_diff) {
-       s/^([-+! ]) /\1/;
-     }
- 
-     # Remember the last line in a diff block that might start
-     # a new function.
-     if (/^[-+! ]([a-zA-Z0-9_].*)/) {
-         $save_fn = $1;
-     }
- 
-     # Check if file is newly added.
-     # Two patterns: for context and unified diff.
-     if (/^\*\*\* 0 \*\*\*\*/
-         || /^@@ -0,0 \+1.* @@/) {
-         $change_msg = $filename =~ /testsuite.*(?<!\.exp)$/ ? ": New test.\n" : ": New file.\n";
-         $look_for_funs = 0;
-     }
- 
-     # Check if file was removed.
-     # Two patterns: for context and unified diff.
-     if (/^--- 0 ----/
-         || /^@@ -1.* \+0,0 @@/) {
-         $change_msg = ": Remove.\n";
-         $look_for_funs = 0;
-     }
- 
-     if (is_unified_hunk_start ($diff_lines[$line_idx])) {
-         $is_context_diff = 0;
-     }
-     elsif (is_context_hunk_start ($diff_lines[$line_idx])) {
- 	    $is_context_diff = 1;
-     }
- 
-     # If we find a new function, print it in brackets.  Special case if
-     # this is the first function in a file.  
-     #
-     # Note that we don't try too hard to find good matches.  This should
-     # return a superset of the actual set of functions in the .diff file.
-     #
-     # The first pattern works with context diff files (diff -c). The
-     # second pattern works with unified diff files (diff -u).
-     #
-     # The third pattern looks for the starts of functions or classes
-     # within a diff block both for context and unified diff files.
-     if ($look_for_funs
-         && (/^\*\*\*\*\*\** ([a-zA-Z0-9_].*)/
- 	|| /^@@ .* @@ ([a-zA-Z0-9_].*)/
- 	|| /^[-+! ](\{)/))
-       {
- 	$_ = $1;
- 	my $fn;
- 	if (/^\{/) {
- 	    # Beginning of a new function.
- 	    $_ = $save_fn;
- 	} else {
- 	    $save_fn = "";
- 	}
- 	if (/;$/) {
- 	    # No usable function name found.
- 	} elsif (/^((class|struct|union|enum) [a-zA-Z0-9_]+)/) {
- 	    # Discard stuff after the class/struct/etc. tag.
- 	    $fn = $1;
- 	} elsif (/([a-zA-Z0-9_][^(]*)\(/) {
- 	    # Discard template and function parameters.
- 	    $fn = $1;
- 	    1 while ($fn =~ s/<[^<>]*>//);
- 	    $fn =~ s/[ \t]*$//;
- 	}
- 	# Check is function really modified
- 	$no_real_change = 0;
- 	$idx = $line_idx;
- 	# Skip line info in context diffs.
- 	while ($idx <= $#diff_lines && $is_context_diff
-                && $diff_lines[$idx + 1] =~ /^[-\*]{3} [0-9]/) {
- 		++$idx;
- 	}
- 	# Check all lines till the first change
- 	# for the presence of really changed function
- 	do {
- 		++$idx;
- 		$no_real_change = $idx > $#diff_lines
- 				  || is_top_level ($diff_lines[$idx], $is_context_diff);
- 	} while (!$no_real_change && ($diff_lines[$idx] !~ /^[-+!]/));
- 	if ($fn && !$seen_names{$fn} && !$no_real_change) {
- 	    # If this is the first function in the file, we display it next
- 	    # to the filename, so we need an extra space before the opening
- 	    # brace.
- 	    if (!$change_msg) {
- 		$change_msg .= " ";
- 	    } else {
- 		$change_msg .= "\t";
- 	    }
- 
- 		$change_msg .= "($fn):\n";
- 	    $seen_names{$fn} = 1;
- 	}
-     }
- 	$line_idx++;
- }
- 
- # If we have not seen any function names (ie, $change_msg is empty), we just
- # write out a ':'. This happens when there is only one file with no
- # functions.
- $cl_entries{$clname} .= $change_msg ? "$change_msg\n" : ":\n";
- 
- if ($inline && $diff ne "-") {
- 	# Get a temp filename, rather than an open filehandle, because we use
- 	# the open to truncate.
- 	$tmp = mktemp("tmp.XXXXXXXX") or die "Could not create temp file: $!";
- 
- 	# Copy the permissions to the temp file (in File::Copy module version
- 	# 2.15 and later).
- 	cp $diff, $tmp or die "Could not copy patch file to temp file: $!";
- 
- 	# Open the temp file, clearing contents.
- 	open (OUTPUTFILE, '>', $tmp) or die "Could not open temp file: $!";
- } else {
- 	*OUTPUTFILE = STDOUT;
- }
- 
- # Print the log
- foreach my $clname (keys %cl_entries) {
- 	print OUTPUTFILE "$clname:\n\n$hdrline\n\n$cl_entries{$clname}\n";
- }
- 
- if ($inline) {
- 	# Append the patch to the log
- 	foreach (@orig_diff_lines) {
- 		print OUTPUTFILE "$_\n";
- 	}
- }
- 
- if ($inline && $diff ne "-") {
- 	# Close $tmp
- 	close(OUTPUTFILE);
- 
- 	# Write new contents to $diff atomically
- 	mv $tmp, $diff or die "Could not move temp file to patch file: $!";
- }
- 
- exit 0;
--- 0 ----
diff -Nrcpad gcc-10.3.0/contrib/mklog.py gcc-11.1.0/contrib/mklog.py
*** gcc-10.3.0/contrib/mklog.py	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/contrib/mklog.py	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,317 ----
+ #!/usr/bin/env python3
+ 
+ # Copyright (C) 2020 Free Software Foundation, Inc.
+ #
+ # This file is part of GCC.
+ #
+ # GCC is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 3, or (at your option)
+ # any later version.
+ #
+ # GCC is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # GNU General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with GCC; see the file COPYING.  If not, write to
+ # the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+ # Boston, MA 02110-1301, USA.
+ 
+ # This script parses a .diff file generated with 'diff -up' or 'diff -cp'
+ # and adds a skeleton ChangeLog file to the file. It does not try to be
+ # too smart when parsing function names, but it produces a reasonable
+ # approximation.
+ #
+ # Author: Martin Liska <mliska@suse.cz>
+ 
+ import argparse
+ import datetime
+ import os
+ import re
+ import subprocess
+ import sys
+ from itertools import takewhile
+ 
+ import requests
+ 
+ from unidiff import PatchSet
+ 
+ pr_regex = re.compile(r'(\/(\/|\*)|[Cc*!])\s+(?P<pr>PR [a-z+-]+\/[0-9]+)')
+ dr_regex = re.compile(r'(\/(\/|\*)|[Cc*!])\s+(?P<dr>DR [0-9]+)')
+ dg_regex = re.compile(r'{\s+dg-(error|warning)')
+ identifier_regex = re.compile(r'^([a-zA-Z0-9_#].*)')
+ comment_regex = re.compile(r'^\/\*')
+ struct_regex = re.compile(r'^(class|struct|union|enum)\s+'
+                           r'(GTY\(.*\)\s+)?([a-zA-Z0-9_]+)')
+ macro_regex = re.compile(r'#\s*(define|undef)\s+([a-zA-Z0-9_]+)')
+ super_macro_regex = re.compile(r'^DEF[A-Z0-9_]+\s*\(([a-zA-Z0-9_]+)')
+ fn_regex = re.compile(r'([a-zA-Z_][^()\s]*)\s*\([^*]')
+ template_and_param_regex = re.compile(r'<[^<>]*>')
+ md_def_regex = re.compile(r'\(define.*\s+"(.*)"')
+ bugzilla_url = 'https://gcc.gnu.org/bugzilla/rest.cgi/bug?id=%s&' \
+                'include_fields=summary'
+ 
+ function_extensions = {'.c', '.cpp', '.C', '.cc', '.h', '.inc', '.def', '.md'}
+ 
+ # NB: Makefile.in isn't listed as it's not always generated.
+ generated_files = {'aclocal.m4', 'config.h.in', 'configure'}
+ 
+ help_message = """\
+ Generate ChangeLog template for PATCH.
+ PATCH must be generated using diff(1)'s -up or -cp options
+ (or their equivalent in git).
+ """
+ 
+ script_folder = os.path.realpath(__file__)
+ root = os.path.dirname(os.path.dirname(script_folder))
+ 
+ 
+ def find_changelog(path):
+     folder = os.path.split(path)[0]
+     while True:
+         if os.path.exists(os.path.join(root, folder, 'ChangeLog')):
+             return folder
+         folder = os.path.dirname(folder)
+         if folder == '':
+             return folder
+     raise AssertionError()
+ 
+ 
+ def extract_function_name(line):
+     if comment_regex.match(line):
+         return None
+     m = struct_regex.search(line)
+     if m:
+         # Struct declaration
+         return m.group(1) + ' ' + m.group(3)
+     m = macro_regex.search(line)
+     if m:
+         # Macro definition
+         return m.group(2)
+     m = super_macro_regex.search(line)
+     if m:
+         # Supermacro
+         return m.group(1)
+     m = fn_regex.search(line)
+     if m:
+         # Discard template and function parameters.
+         fn = m.group(1)
+         fn = re.sub(template_and_param_regex, '', fn)
+         return fn.rstrip()
+     return None
+ 
+ 
+ def try_add_function(functions, line):
+     fn = extract_function_name(line)
+     if fn and fn not in functions:
+         functions.append(fn)
+     return bool(fn)
+ 
+ 
+ def sort_changelog_files(changed_file):
+     return (changed_file.is_added_file, changed_file.is_removed_file)
+ 
+ 
+ def get_pr_titles(prs):
+     output = ''
+     for pr in prs:
+         pr_id = pr.split('/')[-1]
+         r = requests.get(bugzilla_url % pr_id)
+         bugs = r.json()['bugs']
+         if len(bugs) == 1:
+             output += '%s - %s\n' % (pr, bugs[0]['summary'])
+             print(output)
+     if output:
+         output += '\n'
+     return output
+ 
+ 
+ def generate_changelog(data, no_functions=False, fill_pr_titles=False):
+     changelogs = {}
+     changelog_list = []
+     prs = []
+     out = ''
+     diff = PatchSet(data)
+ 
+     for file in diff:
+         # skip files that can't be parsed
+         if file.path == '/dev/null':
+             continue
+         changelog = find_changelog(file.path)
+         if changelog not in changelogs:
+             changelogs[changelog] = []
+             changelog_list.append(changelog)
+         changelogs[changelog].append(file)
+ 
+         # Extract PR entries from newly added tests
+         if 'testsuite' in file.path and file.is_added_file:
+             # Only search first ten lines as later lines may
+             # contains commented code which a note that it
+             # has not been tested due to a certain PR or DR.
+             for line in list(file)[0][0:10]:
+                 m = pr_regex.search(line.value)
+                 if m:
+                     pr = m.group('pr')
+                     if pr not in prs:
+                         prs.append(pr)
+                 else:
+                     m = dr_regex.search(line.value)
+                     if m:
+                         dr = m.group('dr')
+                         if dr not in prs:
+                             prs.append(dr)
+                     elif dg_regex.search(line.value):
+                         # Found dg-warning/dg-error line
+                         break
+ 
+     if fill_pr_titles:
+         out += get_pr_titles(prs)
+ 
+     # sort ChangeLog so that 'testsuite' is at the end
+     for changelog in sorted(changelog_list, key=lambda x: 'testsuite' in x):
+         files = changelogs[changelog]
+         out += '%s:\n' % os.path.join(changelog, 'ChangeLog')
+         out += '\n'
+         for pr in prs:
+             out += '\t%s\n' % pr
+         # new and deleted files should be at the end
+         for file in sorted(files, key=sort_changelog_files):
+             assert file.path.startswith(changelog)
+             in_tests = 'testsuite' in changelog or 'testsuite' in file.path
+             relative_path = file.path[len(changelog):].lstrip('/')
+             functions = []
+             if file.is_added_file:
+                 msg = 'New test' if in_tests else 'New file'
+                 out += '\t* %s: %s.\n' % (relative_path, msg)
+             elif file.is_removed_file:
+                 out += '\t* %s: Removed.\n' % (relative_path)
+             elif hasattr(file, 'is_rename') and file.is_rename:
+                 out += '\t* %s: Moved to...\n' % (relative_path)
+                 new_path = file.target_file[2:]
+                 # A file can be theoretically moved to a location that
+                 # belongs to a different ChangeLog.  Let user fix it.
+                 if new_path.startswith(changelog):
+                     new_path = new_path[len(changelog):].lstrip('/')
+                 out += '\t* %s: ...here.\n' % (new_path)
+             elif os.path.basename(file.path) in generated_files:
+                 out += '\t* %s: Regenerate.\n' % (relative_path)
+             else:
+                 if not no_functions:
+                     for hunk in file:
+                         # Do not add function names for testsuite files
+                         extension = os.path.splitext(relative_path)[1]
+                         if not in_tests and extension in function_extensions:
+                             last_fn = None
+                             modified_visited = False
+                             success = False
+                             for line in hunk:
+                                 m = identifier_regex.match(line.value)
+                                 if line.is_added or line.is_removed:
+                                     # special-case definition in .md files
+                                     m2 = md_def_regex.match(line.value)
+                                     if extension == '.md' and m2:
+                                         fn = m2.group(1)
+                                         if fn not in functions:
+                                             functions.append(fn)
+                                             last_fn = None
+                                             success = True
+ 
+                                     if not line.value.strip():
+                                         continue
+                                     modified_visited = True
+                                     if m and try_add_function(functions,
+                                                               m.group(1)):
+                                         last_fn = None
+                                         success = True
+                                 elif line.is_context:
+                                     if last_fn and modified_visited:
+                                         try_add_function(functions, last_fn)
+                                         last_fn = None
+                                         modified_visited = False
+                                         success = True
+                                     elif m:
+                                         last_fn = m.group(1)
+                                         modified_visited = False
+                             if not success:
+                                 try_add_function(functions,
+                                                  hunk.section_header)
+                 if functions:
+                     out += '\t* %s (%s):\n' % (relative_path, functions[0])
+                     for fn in functions[1:]:
+                         out += '\t(%s):\n' % fn
+                 else:
+                     out += '\t* %s:\n' % relative_path
+         out += '\n'
+     return out
+ 
+ 
+ def update_copyright(data):
+     current_timestamp = datetime.datetime.now().strftime('%Y-%m-%d')
+     username = subprocess.check_output('git config user.name', shell=True,
+                                        encoding='utf8').strip()
+     email = subprocess.check_output('git config user.email', shell=True,
+                                     encoding='utf8').strip()
+ 
+     changelogs = set()
+     diff = PatchSet(data)
+ 
+     for file in diff:
+         changelog = os.path.join(find_changelog(file.path), 'ChangeLog')
+         if changelog not in changelogs:
+             changelogs.add(changelog)
+             with open(changelog) as f:
+                 content = f.read()
+             with open(changelog, 'w+') as f:
+                 f.write(f'{current_timestamp}  {username}  <{email}>\n\n')
+                 f.write('\tUpdate copyright years.\n\n')
+                 f.write(content)
+ 
+ 
+ if __name__ == '__main__':
+     parser = argparse.ArgumentParser(description=help_message)
+     parser.add_argument('input', nargs='?',
+                         help='Patch file (or missing, read standard input)')
+     parser.add_argument('-s', '--no-functions', action='store_true',
+                         help='Do not generate function names in ChangeLogs')
+     parser.add_argument('-p', '--fill-up-bug-titles', action='store_true',
+                         help='Download title of mentioned PRs')
+     parser.add_argument('-d', '--directory',
+                         help='Root directory where to search for ChangeLog '
+                         'files')
+     parser.add_argument('-c', '--changelog',
+                         help='Append the ChangeLog to a git commit message '
+                              'file')
+     parser.add_argument('--update-copyright', action='store_true',
+                         help='Update copyright in ChangeLog files')
+     args = parser.parse_args()
+     if args.input == '-':
+         args.input = None
+     if args.directory:
+         root = args.directory
+ 
+     data = open(args.input) if args.input else sys.stdin
+     if args.update_copyright:
+         update_copyright(data)
+     else:
+         output = generate_changelog(data, args.no_functions,
+                                     args.fill_up_bug_titles)
+         if args.changelog:
+             lines = open(args.changelog).read().split('\n')
+             start = list(takewhile(lambda l: not l.startswith('#'), lines))
+             end = lines[len(start):]
+             with open(args.changelog, 'w') as f:
+                 if start:
+                     # appent empty line
+                     if start[-1] != '':
+                         start.append('')
+                 else:
+                     # append 2 empty lines
+                     start = 2 * ['']
+                 f.write('\n'.join(start))
+                 f.write('\n')
+                 f.write(output)
+                 f.write('\n'.join(end))
+         else:
+             print(output, end='')
diff -Nrcpad gcc-10.3.0/contrib/prepare-commit-msg gcc-11.1.0/contrib/prepare-commit-msg
*** gcc-10.3.0/contrib/prepare-commit-msg	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/contrib/prepare-commit-msg	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,81 ----
+ #!/bin/sh
+ 
+ # Copyright (C) 2020 Free Software Foundation, Inc.
+ #
+ # This file is part of GCC.
+ #
+ # GCC is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 3, or (at your option)
+ # any later version.
+ #
+ # GCC is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # GNU General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with GCC; see the file COPYING.  If not, write to
+ # the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+ # Boston, MA 02110-1301, USA.
+ 
+ COMMIT_MSG_FILE=$1
+ COMMIT_SOURCE=$2
+ SHA1=$3
+ 
+ # We might be on a branch before the file was added.
+ if ! [ -x contrib/mklog.py ]; then exit 0; fi
+ 
+ # Can't do anything if $COMMIT_MSG_FILE isn't a file.
+ if ! [ -f "$COMMIT_MSG_FILE" ]; then exit 0; fi
+ 
+ # Don't do anything unless requested to.
+ if [ -z "$GCC_FORCE_MKLOG" ]; then exit 0; fi
+ 
+ if [ -z "$COMMIT_SOURCE" ] || [ $COMMIT_SOURCE = template ]; then
+     # No source or "template" means new commit.
+     cmd="diff --cached"
+ 
+ elif [ $COMMIT_SOURCE = message ]; then
+     # "message" means -m; assume a new commit if there are any changes staged.
+     if ! git diff --cached --quiet; then
+ 	cmd="diff --cached"
+     else
+ 	cmd="diff --cached HEAD^"
+     fi
+ 
+ elif [ $COMMIT_SOURCE = commit ]; then
+     # The message of an existing commit.  If it's HEAD, assume --amend;
+     # otherwise, assume a new commit with -C.
+     if [ $SHA1 = HEAD ]; then
+ 	cmd="diff --cached HEAD^"
+ 	if [ "$(git config gcc-config.mklog-hook-type)" = "smart-amend" ]; then
+ 	    # Check if the existing message still describes the staged changes.
+ 	    f=$(mktemp /tmp/git-commit.XXXXXX) || exit 1
+ 	    git log -1 --pretty=email HEAD > $f
+ 	    printf '\n---\n\n' >> $f
+ 	    git $cmd >> $f
+ 	    if contrib/gcc-changelog/git_email.py "$f" >/dev/null 2>&1; then
+ 		# Existing commit message is still OK for amended commit.
+ 		rm $f
+ 		exit 0
+ 	    fi
+ 	    rm $f
+ 	fi
+     else
+ 	cmd="diff --cached"
+     fi
+ else
+     # Do nothing for merge or squash.
+     exit 0
+ fi
+ 
+ # Save diff to a file if requested.
+ DIFF_FILE=$(git config gcc-config.diff-file)
+ if ! [ -z "$DIFF_FILE" ]; then
+     tee="tee $DIFF_FILE"
+ else
+     tee="cat"
+ fi
+ 
+ git $cmd | $tee | git gcc-mklog -c "$COMMIT_MSG_FILE"
diff -Nrcpad gcc-10.3.0/contrib/reghunt/ChangeLog gcc-11.1.0/contrib/reghunt/ChangeLog
*** gcc-10.3.0/contrib/reghunt/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-11.1.0/contrib/reghunt/ChangeLog	Tue Apr 27 10:00:12 2021
***************
*** 1,14 ****
! 2021-04-08  Release Manager
! 
! 	* GCC 10.3.0 released.
! 
! 2020-07-23  Release Manager
! 
! 	* GCC 10.2.0 released.
! 
! 2020-05-07  Release Manager
  
! 	* GCC 10.1.0 released.
  
  2010-06-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
  
--- 1,6 ----
! 2021-04-27  Release Manager
  
! 	* GCC 11.1.0 released.
  
  2010-06-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
  
diff -Nrcpad gcc-10.3.0/contrib/regression/ChangeLog gcc-11.1.0/contrib/regression/ChangeLog
*** gcc-10.3.0/contrib/regression/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-11.1.0/contrib/regression/ChangeLog	Tue Apr 27 10:00:12 2021
***************
*** 1,14 ****
! 2021-04-08  Release Manager
! 
! 	* GCC 10.3.0 released.
! 
! 2020-07-23  Release Manager
! 
! 	* GCC 10.2.0 released.
! 
! 2020-05-07  Release Manager
  
! 	* GCC 10.1.0 released.
  
  2012-08-26  Hans-Peter Nilsson  <hp@axis.com>
  
--- 1,6 ----
! 2021-04-27  Release Manager
  
! 	* GCC 11.1.0 released.
  
  2012-08-26  Hans-Peter Nilsson  <hp@axis.com>
  
diff -Nrcpad gcc-10.3.0/contrib/test_mklog.py gcc-11.1.0/contrib/test_mklog.py
*** gcc-10.3.0/contrib/test_mklog.py	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/contrib/test_mklog.py	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,481 ----
+ #!/usr/bin/env python3
+ 
+ # Copyright (C) 2020 Free Software Foundation, Inc.
+ #
+ # This file is part of GCC.
+ #
+ # GCC is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 3, or (at your option)
+ # any later version.
+ #
+ # GCC is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # GNU General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with GCC; see the file COPYING.  If not, write to
+ # the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+ # Boston, MA 02110-1301, USA.
+ 
+ # This script parses a .diff file generated with 'diff -up' or 'diff -cp'
+ # and adds a skeleton ChangeLog file to the file. It does not try to be
+ # too smart when parsing function names, but it produces a reasonable
+ # approximation.
+ #
+ # Author: Martin Liska <mliska@suse.cz>
+ 
+ import unittest
+ 
+ from mklog import generate_changelog
+ 
+ import unidiff
+ 
+ unidiff_supports_renaming = hasattr(unidiff.PatchedFile(), 'is_rename')
+ 
+ 
+ PATCH1 = '''\
+ diff --git a/gcc/config/riscv/riscv.h b/gcc/config/riscv/riscv.h
+ index 567c23380fe..e6209ede9d6 100644
+ --- a/gcc/config/riscv/riscv.h
+ +++ b/gcc/config/riscv/riscv.h
+ @@ -920,6 +920,7 @@ extern unsigned riscv_stack_boundary;
+  #define SHIFT_RS1 15
+  #define SHIFT_IMM 20
+  #define IMM_BITS 12
+ +#define C_S_BITS 5
+  #define C_SxSP_BITS 6
+  
+  #define IMM_REACH (1LL << IMM_BITS)
+ @@ -929,6 +930,10 @@ extern unsigned riscv_stack_boundary;
+  #define SWSP_REACH (4LL << C_SxSP_BITS)
+  #define SDSP_REACH (8LL << C_SxSP_BITS)
+  
+ +/* This is the maximum value that can be represented in a compressed load/store
+ +   offset (an unsigned 5-bit value scaled by 4).  */
+ +#define CSW_MAX_OFFSET ((4LL << C_S_BITS) - 1) & ~3
+ +
+  /* Called from RISCV_REORG, this is defined in riscv-sr.c.  */
+  
+  extern void riscv_remove_unneeded_save_restore_calls (void);
+ 
+ '''
+ 
+ EXPECTED1 = '''\
+ gcc/ChangeLog:
+ 
+ 	* config/riscv/riscv.h (C_S_BITS):
+ 	(CSW_MAX_OFFSET):
+ 
+ '''
+ 
+ PATCH2 = '''\
+ diff --git a/gcc/targhooks.h b/gcc/targhooks.h
+ index 9704d23f1db..b572a36e8cf 100644
+ --- a/gcc/targhooks.h
+ +++ b/gcc/targhooks.h
+ @@ -120,7 +120,7 @@ extern bool default_empty_mask_is_expensive (unsigned);
+  extern void *default_init_cost (class loop *);
+  extern unsigned default_add_stmt_cost (class vec_info *, void *, int,
+  				       enum vect_cost_for_stmt,
+ -				       class _stmt_vec_info *, int,
+ +				       class _stmt_vec_info *, tree, int,
+  				       enum vect_cost_model_location);
+  extern void default_finish_cost (void *, unsigned *, unsigned *, unsigned *);
+  extern void default_destroy_cost_data (void *);
+ @@ -186,6 +186,7 @@ extern tree default_emutls_var_init (tree, tree, tree);
+  extern unsigned int default_hard_regno_nregs (unsigned int, machine_mode);
+  extern bool default_hard_regno_scratch_ok (unsigned int);
+  extern bool default_mode_dependent_address_p (const_rtx, addr_space_t);
+ +extern bool default_new_address_profitable_p (rtx, rtx_insn *, rtx);
+  extern bool default_target_option_valid_attribute_p (tree, tree, tree, int);
+  extern bool default_target_option_pragma_parse (tree, tree);
+  extern bool default_target_can_inline_p (tree, tree);
+ 
+ '''
+ 
+ EXPECTED2 = '''\
+ gcc/ChangeLog:
+ 
+ 	* targhooks.h (default_add_stmt_cost):
+ 	(default_new_address_profitable_p):
+ 
+ '''
+ 
+ PATCH3 = '''\
+ diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
+ index 2b1e33f94ae..7f47402f9b9 100644
+ --- a/libcpp/include/cpplib.h
+ +++ b/libcpp/include/cpplib.h
+ @@ -173,7 +173,7 @@ enum c_lang {CLK_GNUC89 = 0, CLK_GNUC99, CLK_GNUC11, CLK_GNUC17, CLK_GNUC2X,
+  	     CLK_STDC2X,
+  	     CLK_GNUCXX, CLK_CXX98, CLK_GNUCXX11, CLK_CXX11,
+  	     CLK_GNUCXX14, CLK_CXX14, CLK_GNUCXX17, CLK_CXX17,
+ -	     CLK_GNUCXX2A, CLK_CXX2A, CLK_ASM};
+ +	     CLK_GNUCXX20, CLK_CXX20, CLK_ASM};
+  
+  /* Payload of a NUMBER, STRING, CHAR or COMMENT token.  */
+  struct GTY(()) cpp_string {
+ @@ -484,7 +484,7 @@ struct cpp_options
+    /* Nonzero for C2X decimal floating-point constants.  */
+    unsigned char dfp_constants;
+  
+ -  /* Nonzero for C++2a __VA_OPT__ feature.  */
+ +  /* Nonzero for C++20 __VA_OPT__ feature.  */
+    unsigned char va_opt;
+  
+    /* Nonzero for the '::' token.  */
+ 
+ '''
+ 
+ EXPECTED3 = '''\
+ libcpp/ChangeLog:
+ 
+ 	* include/cpplib.h (enum c_lang):
+ 	(struct cpp_options):
+ 
+ '''
+ 
+ EXPECTED3B = '''\
+ libcpp/ChangeLog:
+ 
+ 	* include/cpplib.h:
+ 
+ '''
+ 
+ PATCH4 = '''\
+ diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c
+ index aab79492357..f0df1002488 100644
+ --- a/gcc/ipa-icf.c
+ +++ b/gcc/ipa-icf.c
+ @@ -1,5 +1,7 @@
+  
+  
+ +
+ +
+  /* Interprocedural Identical Code Folding pass
+     Copyright (C) 2014-2020 Free Software Foundation, Inc.
+  
+ diff --git a/gcc/testsuite/gcc.dg/pr32374.c b/gcc/testsuite/gcc.dg/pr32374.c
+ deleted file mode 100644
+ index de15d559f5b..00000000000
+ --- a/gcc/testsuite/gcc.dg/pr32374.c
+ +++ /dev/null
+ @@ -1,20 +0,0 @@
+ -/* { dg-do compile } */
+ -/* { dg-options "-O2" } */
+ -
+ -extern int *stderr;
+ -
+ -void f (int *, const char *, ...);
+ -
+ -void g (const char *conf_name)
+ -{
+ -  typedef struct
+ -  {
+ -    const char *label;
+ -    const int value;
+ -  } Section;
+ -
+ -  const Section sections[2] = { {"", 0}, {"", 1} };
+ -
+ -  f (stderr, "", "", conf_name, 0, sections[0]);
+ -  f (stderr, "", "", conf_name, 0, sections[0]);
+ -}
+ diff --git a/gcc/testsuite/gcc.dg/pr40209.c b/gcc/testsuite/gcc.dg/pr40209.c
+ index 4e77df5c2e6..c23d69d1f1b 100644
+ --- a/gcc/testsuite/gcc.dg/pr40209.c
+ +++ b/gcc/testsuite/gcc.dg/pr40209.c
+ @@ -1,6 +1,8 @@
+  /* { dg-do compile } */
+  /* { dg-options "-O2 -fprofile-use -fopt-info -Wno-missing-profile" } */
+  
+ +
+ +
+  void process(const char *s);
+  
+  struct BaseHolder {
+ diff --git a/gcc/testsuite/gcc.dg/pr50209.c b/gcc/testsuite/gcc.dg/pr50209.c
+ new file mode 100644
+ index 00000000000..b28b04f6431
+ --- /dev/null
+ +++ b/gcc/testsuite/gcc.dg/pr50209.c
+ @@ -0,0 +1,3 @@
+ +
+ +
+ +
+ diff --git a/gcc/testsuite/gcc.dg/pr63567-1.c b/gcc/testsuite/gcc.dg/pr63567-1.c
+ index 97da171563e..00c5ecc11fa 100644
+ --- a/gcc/testsuite/gcc.dg/pr63567-1.c
+ +++ b/gcc/testsuite/gcc.dg/pr63567-1.c
+ @@ -1,3 +1,4 @@
+ +
+  /* PR c/63567 */
+  /* { dg-do compile } */
+  /* { dg-options "" } */
+ diff --git a/gcc/varasm.c b/gcc/varasm.c
+ index f062e48071f..fd3c7ca8cf3 100644
+ --- a/gcc/varasm.c
+ +++ b/gcc/varasm.c
+ @@ -1,3 +1,5 @@
+ +
+ +
+  /* Output variables, constants and external declarations, for GNU compiler.
+     Copyright (C) 1987-2020 Free Software Foundation, Inc.
+  
+ diff --git a/libssp/gets-chk.c b/libssp/gets-chk.c
+ index 4ad78c1f77b..6687b368038 100644
+ --- a/libssp/gets-chk.c
+ +++ b/libssp/gets-chk.c
+ @@ -32,6 +32,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+  <http://www.gnu.org/licenses/>.  */
+  
+  
+ +
+ +
+  #include "config.h"
+  #include <ssp/ssp.h>
+  #include <stdarg.h>
+ '''
+ 
+ EXPECTED4 = '''\
+ gcc/ChangeLog:
+ 
+ 	* ipa-icf.c:
+ 	* varasm.c:
+ 
+ libssp/ChangeLog:
+ 
+ 	* gets-chk.c:
+ 
+ gcc/testsuite/ChangeLog:
+ 
+ 	* gcc.dg/pr40209.c:
+ 	* gcc.dg/pr63567-1.c:
+ 	* gcc.dg/pr32374.c: Removed.
+ 	* gcc.dg/pr50209.c: New test.
+ 
+ '''
+ 
+ PATCH5 = '''\
+ diff --git a/gcc/testsuite/gcc.target/i386/pr95046-6.c b/gcc/testsuite/gcc.target/i386/pr95046-6.c
+ new file mode 100644
+ index 00000000000..dcc8999c446
+ --- /dev/null
+ +++ b/gcc/testsuite/gcc.target/i386/pr95046-6.c
+ @@ -0,0 +1,44 @@
+ +/* PR target/95046 */
+ +/* { dg-do compile { target { ! ia32 } } } */
+ +/* { dg-options "-O3 -mavx512vl" } */
+ +
+ +
+ +double r[2];
+ +int s[2];
+ +unsigned int u[2];
+ +
+ +void
+ +test_float (void)
+ +{
+ +  for (int i = 0; i < 2; i++)
+ +    r[i] = s[i];
+ +}
+ +
+ +/* { dg-final { scan-assembler "\tvcvtdq2pd" } } */
+ +
+ +void
+ +test_ufloat (void)
+ +{
+ +  for (int i = 0; i < 2; i++)
+ +    r[i] = u[i];
+ +}
+ +
+ +/* { dg-final { scan-assembler "\tvcvtudq2pd" } } */
+ +
+ +void
+ +test_fix (void)
+ +{
+ +  for (int i = 0; i < 2; i++)
+ +    s[i] = r[i];
+ +}
+ +
+ +/* { dg-final { scan-assembler "\tvcvttpd2dqx" } } */
+ +
+ +void
+ +test_ufix (void)
+ +{
+ +  for (int i = 0; i < 2; i++)
+ +    u[i] = r[i];
+ +}
+ +
+ +/* { dg-final { scan-assembler "\tvcvttpd2udqx" } } */
+ -- 
+ 2.26.2
+ 
+ '''
+ 
+ EXPECTED5 = '''\
+ PR target/95046 - Vectorize V2SFmode operations
+ 
+ gcc/testsuite/ChangeLog:
+ 
+ 	PR target/95046
+ 	* gcc.target/i386/pr95046-6.c: New test.
+ 
+ '''
+ 
+ PATCH6 = '''\
+ diff --git a/gcc/cgraph.h b/gcc/cgraph.h
+ index 5ddeb65269b..cfae6e91da9 100644
+ --- a/gcc/cgraph.h
+ +++ b/gcc/cgraph.h
+ @@ -937,7 +937,8 @@ struct GTY((tag ("SYMTAB_FUNCTION"))) cgraph_node : public symtab_node
+        split_part (false), indirect_call_target (false), local (false),
+        versionable (false), can_change_signature (false),
+        redefined_extern_inline (false), tm_may_enter_irr (false),
+ -      ipcp_clone (false), m_uid (uid), m_summary_id (-1)
+ +      ipcp_clone (false), declare_variant_alt (false),
+ +      calls_declare_variant_alt (false), m_uid (uid), m_summary_id (-1)
+    {}
+  
+    /* Remove the node from cgraph and all inline clones inlined into it.
+ 
+ '''
+ 
+ EXPECTED6 = '''\
+ gcc/ChangeLog:
+ 
+ 	* cgraph.h (struct cgraph_node):
+ 
+ '''
+ 
+ PATCH7 = '''\
+ diff --git a/gcc/testsuite/g++.dg/DRs/dr2237.C b/gcc/testsuite/g++.dg/DRs/dr2237.C
+ new file mode 100644
+ index 00000000000..f3d6d11e61e
+ --- /dev/null
+ +++ b/gcc/testsuite/g++.dg/DRs/dr2237.C
+ @@ -0,0 +1,18 @@
+ +// DR 2237 - Can a template-id name a constructor?
+ +
+ +template<class T>
+ +struct X {
+ +  X<T>(); // { dg-error "expected" "" { target c++20 } }
+ +  X(int); // OK, injected-class-name used
+ +  ~X<T>(); // { dg-error "template-id not allowed for destructor" "" { target c++20 } }
+ +};
+ +
+ +// ill-formed since DR1435
+ +template<typename T> X<T>::X<T>() {} // { dg-error "names the constructor|as no template constructors" }
+ +template<typename T> X<T>::~X<T>() {} // { dg-error "template-id not allowed for destructor" "" { target c++20 } }
+ +
+ +struct Q {
+ +  // ill-formed since DR1435
+ +  template<typename T> friend X<T>::X<T>(); // { dg-error "names the constructor|as no template constructors" }
+ +  template<typename T> friend X<T>::~X<T>(); // { dg-error "template-id not allowed for destructor" "" { target c++20 } }
+ +};
+ '''
+ 
+ EXPECTED7 = '''\
+ gcc/testsuite/ChangeLog:
+ 
+ 	DR 2237
+ 	* g++.dg/DRs/dr2237.C: New test.
+ 
+ '''
+ 
+ PATCH8 = '''\
+ diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf2.c
+ similarity index 100%
+ rename from gcc/ipa-icf.c
+ rename to gcc/ipa-icf2.c
+ '''
+ 
+ EXPECTED8 = '''\
+ gcc/ChangeLog:
+ 
+ 	* ipa-icf.c: Moved to...
+ 	* ipa-icf2.c: ...here.
+ 
+ '''
+ 
+ PATCH9 = '''\
+ diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
+ index 2a260c1cfbd..7f03fc491c3 100644
+ --- a/gcc/config/i386/sse.md
+ +++ b/gcc/config/i386/sse.md
+ @@ -17611,6 +17611,23 @@ (define_insn "avx2_<code>v16qiv16hi2<mask_name>"
+     (set_attr "prefix" "maybe_evex")
+     (set_attr "mode" "OI")])
+  
+ +(define_insn_and_split "*avx2_zero_extendv16qiv16hi2_1"
+ +  [(set (match_operand:V32QI 0 "register_operand" "=v")
+ +	(vec_select:V32QI
+ +	  (vec_concat:V64QI
+ +	    (match_operand:V32QI 1 "nonimmediate_operand" "vm")
+ +	    (match_operand:V32QI 2 "const0_operand" "C"))
+ +	  (match_parallel 3 "pmovzx_parallel"
+ +	    [(match_operand 4 "const_int_operand" "n")])))]
+ +  "TARGET_AVX2"
+ +  "#"
+ +  "&& reload_completed"
+ +  [(set (match_dup 0) (zero_extend:V16HI (match_dup 1)))]
+ +{
+ +  operands[0] = lowpart_subreg (V16HImode, operands[0], V32QImode);
+ +  operands[1] = lowpart_subreg (V16QImode, operands[1], V32QImode);
+ +})
+ +
+  (define_expand "<insn>v16qiv16hi2"
+    [(set (match_operand:V16HI 0 "register_operand")
+  	(any_extend:V16HI
+ '''
+ 
+ EXPECTED9 = '''\
+ gcc/ChangeLog:
+ 
+ 	* config/i386/sse.md (*avx2_zero_extendv16qiv16hi2_1):
+ 
+ '''
+ 
+ class TestMklog(unittest.TestCase):
+     def test_macro_definition(self):
+         changelog = generate_changelog(PATCH1)
+         assert changelog == EXPECTED1
+ 
+     def test_changed_argument(self):
+         changelog = generate_changelog(PATCH2)
+         assert changelog == EXPECTED2
+ 
+     def test_enum_and_struct(self):
+         changelog = generate_changelog(PATCH3)
+         assert changelog == EXPECTED3
+ 
+     def test_no_function(self):
+         changelog = generate_changelog(PATCH3, True)
+         assert changelog == EXPECTED3B
+ 
+     def test_sorting(self):
+         changelog = generate_changelog(PATCH4)
+         assert changelog == EXPECTED4
+ 
+     def test_pr_bugzilla_download(self):
+         changelog = generate_changelog(PATCH5, fill_pr_titles=True)
+         assert changelog == EXPECTED5
+ 
+     def test_gty_in_struct(self):
+         changelog = generate_changelog(PATCH6, fill_pr_titles=True)
+         assert changelog == EXPECTED6
+ 
+     def test_dr_detection_in_test_case(self):
+         changelog = generate_changelog(PATCH7)
+         assert changelog == EXPECTED7
+ 
+     @unittest.skipIf(not unidiff_supports_renaming,
+                      'Newer version of unidiff is needed (0.6.0+)')
+     def test_renaming(self):
+         changelog = generate_changelog(PATCH8)
+         assert changelog == EXPECTED8
+ 
+     def test_define_macro_parsing(self):
+         changelog = generate_changelog(PATCH9)
+         assert changelog == EXPECTED9
diff -Nrcpad gcc-10.3.0/contrib/unicode/EastAsianWidth.txt gcc-11.1.0/contrib/unicode/EastAsianWidth.txt
*** gcc-10.3.0/contrib/unicode/EastAsianWidth.txt	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/unicode/EastAsianWidth.txt	Tue Apr 27 10:00:12 2021
***************
*** 1,6 ****
! # EastAsianWidth-12.1.0.txt
! # Date: 2019-03-31, 22:01:58 GMT [KW, LI]
! # © 2019 Unicode®, Inc.
  # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
  # For terms of use, see http://www.unicode.org/terms_of_use.html
  #
--- 1,6 ----
! # EastAsianWidth-13.0.0.txt
! # Date: 2029-01-21, 18:14:00 GMT [KW, LI]
! # © 2020 Unicode®, Inc.
  # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
  # For terms of use, see http://www.unicode.org/terms_of_use.html
  #
***************
*** 9,15 ****
  #
  # East_Asian_Width Property
  #
! # This file is an informative contributory data file in the
  # Unicode Character Database.
  #
  # The format is two fields separated by a semicolon.
--- 9,15 ----
  #
  # East_Asian_Width Property
  #
! # This file is a normative contributory data file in the
  # Unicode Character Database.
  #
  # The format is two fields separated by a semicolon.
***************
*** 332,338 ****
  085E;N           # Po         MANDAIC PUNCTUATION
  0860..086A;N     # Lo    [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA
  08A0..08B4;N     # Lo    [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
! 08B6..08BD;N     # Lo     [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
  08D3..08E1;N     # Mn    [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA
  08E2;N           # Cf         ARABIC DISPUTED END OF AYAH
  08E3..08FF;N     # Mn    [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA
--- 332,338 ----
  085E;N           # Po         MANDAIC PUNCTUATION
  0860..086A;N     # Lo    [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA
  08A0..08B4;N     # Lo    [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
! 08B6..08C7;N     # Lo    [18] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE
  08D3..08E1;N     # Mn    [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA
  08E2;N           # Cf         ARABIC DISPUTED END OF AYAH
  08E3..08FF;N     # Mn    [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA
***************
*** 450,456 ****
  0B47..0B48;N     # Mc     [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
  0B4B..0B4C;N     # Mc     [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
  0B4D;N           # Mn         ORIYA SIGN VIRAMA
! 0B56;N           # Mn         ORIYA AI LENGTH MARK
  0B57;N           # Mc         ORIYA AU LENGTH MARK
  0B5C..0B5D;N     # Lo     [2] ORIYA LETTER RRA..ORIYA LETTER RHA
  0B5F..0B61;N     # Lo     [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
--- 450,456 ----
  0B47..0B48;N     # Mc     [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
  0B4B..0B4C;N     # Mc     [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
  0B4D;N           # Mn         ORIYA SIGN VIRAMA
! 0B55..0B56;N     # Mn     [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK
  0B57;N           # Mc         ORIYA AU LENGTH MARK
  0B5C..0B5D;N     # Lo     [2] ORIYA LETTER RRA..ORIYA LETTER RHA
  0B5F..0B61;N     # Lo     [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
***************
*** 529,535 ****
  0CF1..0CF2;N     # Lo     [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
  0D00..0D01;N     # Mn     [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
  0D02..0D03;N     # Mc     [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
! 0D05..0D0C;N     # Lo     [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L
  0D0E..0D10;N     # Lo     [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
  0D12..0D3A;N     # Lo    [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA
  0D3B..0D3C;N     # Mn     [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
--- 529,535 ----
  0CF1..0CF2;N     # Lo     [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
  0D00..0D01;N     # Mn     [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
  0D02..0D03;N     # Mc     [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
! 0D04..0D0C;N     # Lo     [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L
  0D0E..0D10;N     # Lo     [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
  0D12..0D3A;N     # Lo    [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA
  0D3B..0D3C;N     # Mn     [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
***************
*** 550,555 ****
--- 550,556 ----
  0D70..0D78;N     # No     [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS
  0D79;N           # So         MALAYALAM DATE MARK
  0D7A..0D7F;N     # Lo     [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
+ 0D81;N           # Mn         SINHALA SIGN CANDRABINDU
  0D82..0D83;N     # Mc     [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
  0D85..0D96;N     # Lo    [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
  0D9A..0DB1;N     # Lo    [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
***************
*** 795,800 ****
--- 796,802 ----
  1AA8..1AAD;N     # Po     [6] TAI THAM SIGN KAAN..TAI THAM SIGN CAANG
  1AB0..1ABD;N     # Mn    [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
  1ABE;N           # Me         COMBINING PARENTHESES OVERLAY
+ 1ABF..1AC0;N     # Mn     [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW
  1B00..1B03;N     # Mn     [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
  1B04;N           # Mc         BALINESE SIGN BISAH
  1B05..1B33;N     # Lo    [47] BALINESE LETTER AKARA..BALINESE LETTER HA
***************
*** 1335,1341 ****
  2B56..2B59;A     # So     [4] HEAVY OVAL WITH OVAL INSIDE..HEAVY CIRCLED SALTIRE
  2B5A..2B73;N     # So    [26] SLANTED NORTH ARROW WITH HOOKED HEAD..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR
  2B76..2B95;N     # So    [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
! 2B98..2BFF;N     # So   [104] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..HELLSCHREIBER PAUSE SYMBOL
  2C00..2C2E;N     # Lu    [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
  2C30..2C5E;N     # Ll    [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE
  2C60..2C7B;N     # L&    [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E
--- 1337,1343 ----
  2B56..2B59;A     # So     [4] HEAVY OVAL WITH OVAL INSIDE..HEAVY CIRCLED SALTIRE
  2B5A..2B73;N     # So    [26] SLANTED NORTH ARROW WITH HOOKED HEAD..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR
  2B76..2B95;N     # So    [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
! 2B97..2BFF;N     # So   [105] SYMBOL FOR TYPE A ELECTRONICS..HELLSCHREIBER PAUSE SYMBOL
  2C00..2C2E;N     # Lu    [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
  2C30..2C5E;N     # Ll    [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE
  2C60..2C7B;N     # L&    [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E
***************
*** 1404,1409 ****
--- 1406,1413 ----
  2E41;N           # Po         REVERSED COMMA
  2E42;N           # Ps         DOUBLE LOW-REVERSED-9 QUOTATION MARK
  2E43..2E4F;N     # Po    [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER
+ 2E50..2E51;N     # So     [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR
+ 2E52;N           # Po         TIRONIAN SIGN CAPITAL ET
  2E80..2E99;W     # So    [26] CJK RADICAL REPEAT..CJK RADICAL RAP
  2E9B..2EF3;W     # So    [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
  2F00..2FD5;W     # So   [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
***************
*** 1464,1470 ****
  3190..3191;W     # So     [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
  3192..3195;W     # No     [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
  3196..319F;W     # So    [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
! 31A0..31BA;W     # Lo    [27] BOPOMOFO LETTER BU..BOPOMOFO LETTER ZY
  31C0..31E3;W     # So    [36] CJK STROKE T..CJK STROKE Q
  31F0..31FF;W     # Lo    [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
  3200..321E;W     # So    [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
--- 1468,1474 ----
  3190..3191;W     # So     [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
  3192..3195;W     # No     [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
  3196..319F;W     # So    [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
! 31A0..31BF;W     # Lo    [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH
  31C0..31E3;W     # So    [36] CJK STROKE T..CJK STROKE Q
  31F0..31FF;W     # Lo    [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
  3200..321E;W     # So    [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
***************
*** 1479,1489 ****
  32B1..32BF;W     # No    [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
  32C0..32FF;W     # So    [64] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..SQUARE ERA NAME REIWA
  3300..33FF;W     # So   [256] SQUARE APAATO..SQUARE GAL
! 3400..4DB5;W     # Lo  [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
! 4DB6..4DBF;W     # Cn    [10] <reserved-4DB6>..<reserved-4DBF>
  4DC0..4DFF;N     # So    [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
! 4E00..9FEF;W     # Lo [20976] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEF
! 9FF0..9FFF;W     # Cn    [16] <reserved-9FF0>..<reserved-9FFF>
  A000..A014;W     # Lo    [21] YI SYLLABLE IT..YI SYLLABLE E
  A015;W           # Lm         YI SYLLABLE WU
  A016..A48C;W     # Lo  [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
--- 1483,1492 ----
  32B1..32BF;W     # No    [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
  32C0..32FF;W     # So    [64] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..SQUARE ERA NAME REIWA
  3300..33FF;W     # So   [256] SQUARE APAATO..SQUARE GAL
! 3400..4DBF;W     # Lo  [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
  4DC0..4DFF;N     # So    [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
! 4E00..9FFC;W     # Lo [20989] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFC
! 9FFD..9FFF;W     # Cn     [3] <reserved-9FFD>..<reserved-9FFF>
  A000..A014;W     # Lo    [21] YI SYLLABLE IT..YI SYLLABLE E
  A015;W           # Lm         YI SYLLABLE WU
  A016..A48C;W     # Lo  [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
*************** A789..A78A;N     # Sk     [2] MODIFIER L
*** 1523,1529 ****
  A78B..A78E;N     # L&     [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
  A78F;N           # Lo         LATIN LETTER SINOLOGICAL DOT
  A790..A7BF;N     # L&    [48] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER GLOTTAL U
! A7C2..A7C6;N     # L&     [5] LATIN CAPITAL LETTER ANGLICANA W..LATIN CAPITAL LETTER Z WITH PALATAL HOOK
  A7F7;N           # Lo         LATIN EPIGRAPHIC LETTER SIDEWAYS I
  A7F8..A7F9;N     # Lm     [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
  A7FA;N           # Ll         LATIN LETTER SMALL CAPITAL TURNED M
--- 1526,1533 ----
  A78B..A78E;N     # L&     [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
  A78F;N           # Lo         LATIN LETTER SINOLOGICAL DOT
  A790..A7BF;N     # L&    [48] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER GLOTTAL U
! A7C2..A7CA;N     # L&     [9] LATIN CAPITAL LETTER ANGLICANA W..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
! A7F5..A7F6;N     # L&     [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
  A7F7;N           # Lo         LATIN EPIGRAPHIC LETTER SIDEWAYS I
  A7F8..A7F9;N     # Lm     [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
  A7FA;N           # Ll         LATIN LETTER SMALL CAPITAL TURNED M
*************** A823..A824;N     # Mc     [2] SYLOTI NAG
*** 1539,1544 ****
--- 1543,1549 ----
  A825..A826;N     # Mn     [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
  A827;N           # Mc         SYLOTI NAGRI VOWEL SIGN OO
  A828..A82B;N     # So     [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4
+ A82C;N           # Mn         SYLOTI NAGRI SIGN ALTERNATE HASANTA
  A830..A835;N     # No     [6] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE SIXTEENTHS
  A836..A837;N     # So     [2] NORTH INDIC QUARTER MARK..NORTH INDIC PLACEHOLDER MARK
  A838;N           # Sc         NORTH INDIC RUPEE MARK
*************** AB28..AB2E;N     # Lo     [7] ETHIOPIC S
*** 1639,1645 ****
  AB30..AB5A;N     # Ll    [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
  AB5B;N           # Sk         MODIFIER BREVE WITH INVERTED BREVE
  AB5C..AB5F;N     # Lm     [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
! AB60..AB67;N     # Ll     [8] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK
  AB70..ABBF;N     # Ll    [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
  ABC0..ABE2;N     # Lo    [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM
  ABE3..ABE4;N     # Mc     [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP
--- 1644,1652 ----
  AB30..AB5A;N     # Ll    [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
  AB5B;N           # Sk         MODIFIER BREVE WITH INVERTED BREVE
  AB5C..AB5F;N     # Lm     [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
! AB60..AB68;N     # Ll     [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE
! AB69;N           # Lm         MODIFIER LETTER SMALL TURNED W
! AB6A..AB6B;N     # Sk     [2] MODIFIER LETTER LEFT TACK..MODIFIER LETTER RIGHT TACK
  AB70..ABBF;N     # Ll    [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
  ABC0..ABE2;N     # Lo    [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM
  ABE3..ABE4;N     # Mc     [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP
*************** FFFD;A           # So         REPLACEMEN
*** 1800,1806 ****
  10179..10189;N   # So    [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
  1018A..1018B;N   # No     [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN
  1018C..1018E;N   # So     [3] GREEK SINUSOID SIGN..NOMISMA SIGN
! 10190..1019B;N   # So    [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN
  101A0;N          # So         GREEK SYMBOL TAU RHO
  101D0..101FC;N   # So    [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
  101FD;N          # Mn         PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
--- 1807,1813 ----
  10179..10189;N   # So    [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
  1018A..1018B;N   # No     [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN
  1018C..1018E;N   # So     [3] GREEK SINUSOID SIGN..NOMISMA SIGN
! 10190..1019C;N   # So    [13] ROMAN SEXTANS SIGN..ASCIA SYMBOL
  101A0;N          # So         GREEK SYMBOL TAU RHO
  101D0..101FC;N   # So    [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
  101FD;N          # Mn         PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
*************** FFFD;A           # So         REPLACEMEN
*** 1902,1907 ****
--- 1909,1918 ----
  10D24..10D27;N   # Mn     [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
  10D30..10D39;N   # Nd    [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE
  10E60..10E7E;N   # No    [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS
+ 10E80..10EA9;N   # Lo    [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
+ 10EAB..10EAC;N   # Mn     [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
+ 10EAD;N          # Pd         YEZIDI HYPHENATION MARK
+ 10EB0..10EB1;N   # Lo     [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
  10F00..10F1C;N   # Lo    [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
  10F1D..10F26;N   # No    [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF
  10F27;N          # Lo         OLD SOGDIAN LIGATURE AYIN-DALETH
*************** FFFD;A           # So         REPLACEMEN
*** 1909,1914 ****
--- 1920,1927 ----
  10F46..10F50;N   # Mn    [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
  10F51..10F54;N   # No     [4] SOGDIAN NUMBER ONE..SOGDIAN NUMBER ONE HUNDRED
  10F55..10F59;N   # Po     [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
+ 10FB0..10FC4;N   # Lo    [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW
+ 10FC5..10FCB;N   # No     [7] CHORASMIAN NUMBER ONE..CHORASMIAN NUMBER ONE HUNDRED
  10FE0..10FF6;N   # Lo    [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH
  11000;N          # Mc         BRAHMI SIGN CANDRABINDU
  11001;N          # Mn         BRAHMI SIGN ANUSVARA
*************** FFFD;A           # So         REPLACEMEN
*** 1941,1946 ****
--- 1954,1960 ----
  11140..11143;N   # Po     [4] CHAKMA SECTION MARK..CHAKMA QUESTION MARK
  11144;N          # Lo         CHAKMA LETTER LHAA
  11145..11146;N   # Mc     [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI
+ 11147;N          # Lo         CHAKMA LETTER VAA
  11150..11172;N   # Lo    [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA
  11173;N          # Mn         MAHAJANI SIGN NUKTA
  11174..11175;N   # Po     [2] MAHAJANI ABBREVIATION SIGN..MAHAJANI SECTION MARK
*************** FFFD;A           # So         REPLACEMEN
*** 1955,1960 ****
--- 1969,1976 ----
  111C5..111C8;N   # Po     [4] SHARADA DANDA..SHARADA SEPARATOR
  111C9..111CC;N   # Mn     [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK
  111CD;N          # Po         SHARADA SUTRA MARK
+ 111CE;N          # Mc         SHARADA VOWEL SIGN PRISHTHAMATRA E
+ 111CF;N          # Mn         SHARADA SIGN INVERTED CANDRABINDU
  111D0..111D9;N   # Nd    [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE
  111DA;N          # Lo         SHARADA EKAM
  111DB;N          # Po         SHARADA SIGN SIDDHAM
*************** FFFD;A           # So         REPLACEMEN
*** 2013,2022 ****
  11447..1144A;N   # Lo     [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
  1144B..1144F;N   # Po     [5] NEWA DANDA..NEWA ABBREVIATION SIGN
  11450..11459;N   # Nd    [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
! 1145B;N          # Po         NEWA PLACEHOLDER MARK
  1145D;N          # Po         NEWA INSERTION SIGN
  1145E;N          # Mn         NEWA SANDHI MARK
! 1145F;N          # Lo         NEWA LETTER VEDIC ANUSVARA
  11480..114AF;N   # Lo    [48] TIRHUTA ANJI..TIRHUTA LETTER HA
  114B0..114B2;N   # Mc     [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
  114B3..114B8;N   # Mn     [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
--- 2029,2038 ----
  11447..1144A;N   # Lo     [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
  1144B..1144F;N   # Po     [5] NEWA DANDA..NEWA ABBREVIATION SIGN
  11450..11459;N   # Nd    [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
! 1145A..1145B;N   # Po     [2] NEWA DOUBLE COMMA..NEWA PLACEHOLDER MARK
  1145D;N          # Po         NEWA INSERTION SIGN
  1145E;N          # Mn         NEWA SANDHI MARK
! 1145F..11461;N   # Lo     [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA
  11480..114AF;N   # Lo    [48] TIRHUTA ANJI..TIRHUTA LETTER HA
  114B0..114B2;N   # Mc     [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
  114B3..114B8;N   # Mn     [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
*************** FFFD;A           # So         REPLACEMEN
*** 2081,2086 ****
--- 2097,2119 ----
  118E0..118E9;N   # Nd    [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE
  118EA..118F2;N   # No     [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY
  118FF;N          # Lo         WARANG CITI OM
+ 11900..11906;N   # Lo     [7] DIVES AKURU LETTER A..DIVES AKURU LETTER E
+ 11909;N          # Lo         DIVES AKURU LETTER O
+ 1190C..11913;N   # Lo     [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA
+ 11915..11916;N   # Lo     [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA
+ 11918..1192F;N   # Lo    [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA
+ 11930..11935;N   # Mc     [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E
+ 11937..11938;N   # Mc     [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O
+ 1193B..1193C;N   # Mn     [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU
+ 1193D;N          # Mc         DIVES AKURU SIGN HALANTA
+ 1193E;N          # Mn         DIVES AKURU VIRAMA
+ 1193F;N          # Lo         DIVES AKURU PREFIXED NASAL SIGN
+ 11940;N          # Mc         DIVES AKURU MEDIAL YA
+ 11941;N          # Lo         DIVES AKURU INITIAL RA
+ 11942;N          # Mc         DIVES AKURU MEDIAL RA
+ 11943;N          # Mn         DIVES AKURU SIGN NUKTA
+ 11944..11946;N   # Po     [3] DIVES AKURU DOUBLE DANDA..DIVES AKURU END OF TEXT MARK
+ 11950..11959;N   # Nd    [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE
  119A0..119A7;N   # Lo     [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR
  119AA..119D0;N   # Lo    [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA
  119D1..119D3;N   # Mc     [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II
*************** FFFD;A           # So         REPLACEMEN
*** 2158,2163 ****
--- 2191,2197 ----
  11EF3..11EF4;N   # Mn     [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
  11EF5..11EF6;N   # Mc     [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O
  11EF7..11EF8;N   # Po     [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION
+ 11FB0;N          # Lo         LISU LETTER YHA
  11FC0..11FD4;N   # No    [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH
  11FD5..11FDC;N   # So     [8] TAMIL SIGN NEL..TAMIL SIGN MUKKURUNI
  11FDD..11FE0;N   # Sc     [4] TAMIL SIGN KAACU..TAMIL SIGN VARAAKAN
*************** FFFD;A           # So         REPLACEMEN
*** 2200,2207 ****
  16FE0..16FE1;W   # Lm     [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK
  16FE2;W          # Po         OLD CHINESE HOOK MARK
  16FE3;W          # Lm         OLD CHINESE ITERATION MARK
  17000..187F7;W   # Lo  [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
! 18800..18AF2;W   # Lo   [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
  1B000..1B0FF;W   # Lo   [256] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER RE-2
  1B100..1B11E;W   # Lo    [31] HENTAIGANA LETTER RE-3..HENTAIGANA LETTER N-MU-MO-2
  1B150..1B152;W   # Lo     [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO
--- 2234,2245 ----
  16FE0..16FE1;W   # Lm     [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK
  16FE2;W          # Po         OLD CHINESE HOOK MARK
  16FE3;W          # Lm         OLD CHINESE ITERATION MARK
+ 16FE4;W          # Mn         KHITAN SMALL SCRIPT FILLER
+ 16FF0..16FF1;W   # Mc     [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
  17000..187F7;W   # Lo  [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
! 18800..18AFF;W   # Lo   [768] TANGUT COMPONENT-001..TANGUT COMPONENT-768
! 18B00..18CD5;W   # Lo   [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5
! 18D00..18D08;W   # Lo     [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
  1B000..1B0FF;W   # Lo   [256] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER RE-2
  1B100..1B11E;W   # Lo    [31] HENTAIGANA LETTER RE-3..HENTAIGANA LETTER N-MU-MO-2
  1B150..1B152;W   # Lo     [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO
*************** FFFD;A           # So         REPLACEMEN
*** 2364,2378 ****
  1F0D1..1F0F5;N   # So    [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21
  1F100..1F10A;A   # No    [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA
  1F10B..1F10C;N   # No     [2] DINGBAT CIRCLED SANS-SERIF DIGIT ZERO..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
  1F110..1F12D;A   # So    [30] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED CD
  1F12E..1F12F;N   # So     [2] CIRCLED WZ..COPYLEFT SYMBOL
  1F130..1F169;A   # So    [58] SQUARED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
! 1F16A..1F16C;N   # So     [3] RAISED MC SIGN..RAISED MR SIGN
  1F170..1F18D;A   # So    [30] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED SA
  1F18E;W          # So         NEGATIVE SQUARED AB
  1F18F..1F190;A   # So     [2] NEGATIVE SQUARED WC..SQUARE DJ
  1F191..1F19A;W   # So    [10] SQUARED CL..SQUARED VS
  1F19B..1F1AC;A   # So    [18] SQUARED THREE D..SQUARED VOD
  1F1E6..1F1FF;N   # So    [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
  1F200..1F202;W   # So     [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA
  1F210..1F23B;W   # So    [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
--- 2402,2418 ----
  1F0D1..1F0F5;N   # So    [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21
  1F100..1F10A;A   # No    [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA
  1F10B..1F10C;N   # No     [2] DINGBAT CIRCLED SANS-SERIF DIGIT ZERO..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
+ 1F10D..1F10F;N   # So     [3] CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH
  1F110..1F12D;A   # So    [30] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED CD
  1F12E..1F12F;N   # So     [2] CIRCLED WZ..COPYLEFT SYMBOL
  1F130..1F169;A   # So    [58] SQUARED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
! 1F16A..1F16F;N   # So     [6] RAISED MC SIGN..CIRCLED HUMAN FIGURE
  1F170..1F18D;A   # So    [30] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED SA
  1F18E;W          # So         NEGATIVE SQUARED AB
  1F18F..1F190;A   # So     [2] NEGATIVE SQUARED WC..SQUARE DJ
  1F191..1F19A;W   # So    [10] SQUARED CL..SQUARED VS
  1F19B..1F1AC;A   # So    [18] SQUARED THREE D..SQUARED VOD
+ 1F1AD;N          # So         MASK WORK SYMBOL
  1F1E6..1F1FF;N   # So    [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
  1F200..1F202;W   # So     [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA
  1F210..1F23B;W   # So    [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
*************** FFFD;A           # So         REPLACEMEN
*** 2424,2434 ****
  1F6CD..1F6CF;N   # So     [3] SHOPPING BAGS..BED
  1F6D0..1F6D2;W   # So     [3] PLACE OF WORSHIP..SHOPPING TROLLEY
  1F6D3..1F6D4;N   # So     [2] STUPA..PAGODA
! 1F6D5;W          # So         HINDU TEMPLE
  1F6E0..1F6EA;N   # So    [11] HAMMER AND WRENCH..NORTHEAST-POINTING AIRPLANE
  1F6EB..1F6EC;W   # So     [2] AIRPLANE DEPARTURE..AIRPLANE ARRIVING
  1F6F0..1F6F3;N   # So     [4] SATELLITE..PASSENGER SHIP
! 1F6F4..1F6FA;W   # So     [7] SCOOTER..AUTO RICKSHAW
  1F700..1F773;N   # So   [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
  1F780..1F7D8;N   # So    [89] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..NEGATIVE CIRCLED SQUARE
  1F7E0..1F7EB;W   # So    [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE
--- 2464,2474 ----
  1F6CD..1F6CF;N   # So     [3] SHOPPING BAGS..BED
  1F6D0..1F6D2;W   # So     [3] PLACE OF WORSHIP..SHOPPING TROLLEY
  1F6D3..1F6D4;N   # So     [2] STUPA..PAGODA
! 1F6D5..1F6D7;W   # So     [3] HINDU TEMPLE..ELEVATOR
  1F6E0..1F6EA;N   # So    [11] HAMMER AND WRENCH..NORTHEAST-POINTING AIRPLANE
  1F6EB..1F6EC;W   # So     [2] AIRPLANE DEPARTURE..AIRPLANE ARRIVING
  1F6F0..1F6F3;N   # So     [4] SATELLITE..PASSENGER SHIP
! 1F6F4..1F6FC;W   # So     [9] SCOOTER..ROLLER SKATE
  1F700..1F773;N   # So   [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
  1F780..1F7D8;N   # So    [89] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..NEGATIVE CIRCLED SQUARE
  1F7E0..1F7EB;W   # So    [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE
*************** FFFD;A           # So         REPLACEMEN
*** 2437,2457 ****
  1F850..1F859;N   # So    [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
  1F860..1F887;N   # So    [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
  1F890..1F8AD;N   # So    [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
  1F900..1F90B;N   # So    [12] CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT
! 1F90D..1F971;W   # So   [101] WHITE HEART..YAWNING FACE
! 1F973..1F976;W   # So     [4] FACE WITH PARTY HORN AND PARTY HAT..FREEZING FACE
! 1F97A..1F9A2;W   # So    [41] FACE WITH PLEADING EYES..SWAN
! 1F9A5..1F9AA;W   # So     [6] SLOTH..OYSTER
! 1F9AE..1F9CA;W   # So    [29] GUIDE DOG..ICE CUBE
  1F9CD..1F9FF;W   # So    [51] STANDING PERSON..NAZAR AMULET
  1FA00..1FA53;N   # So    [84] NEUTRAL CHESS KING..BLACK CHESS KNIGHT-BISHOP
  1FA60..1FA6D;N   # So    [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER
! 1FA70..1FA73;W   # So     [4] BALLET SHOES..SHORTS
  1FA78..1FA7A;W   # So     [3] DROP OF BLOOD..STETHOSCOPE
! 1FA80..1FA82;W   # So     [3] YO-YO..PARACHUTE
! 1FA90..1FA95;W   # So     [6] RINGED PLANET..BANJO
! 20000..2A6D6;W   # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
! 2A6D7..2A6FF;W   # Cn    [41] <reserved-2A6D7>..<reserved-2A6FF>
  2A700..2B734;W   # Lo  [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
  2B735..2B73F;W   # Cn    [11] <reserved-2B735>..<reserved-2B73F>
  2B740..2B81D;W   # Lo   [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
--- 2477,2505 ----
  1F850..1F859;N   # So    [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
  1F860..1F887;N   # So    [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
  1F890..1F8AD;N   # So    [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
+ 1F8B0..1F8B1;N   # So     [2] ARROW POINTING UPWARDS THEN NORTH WEST..ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST
  1F900..1F90B;N   # So    [12] CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT
! 1F90C..1F93A;W   # So    [47] PINCHED FINGERS..FENCER
! 1F93B;N          # So         MODERN PENTATHLON
! 1F93C..1F945;W   # So    [10] WRESTLERS..GOAL NET
! 1F946;N          # So         RIFLE
! 1F947..1F978;W   # So    [50] FIRST PLACE MEDAL..DISGUISED FACE
! 1F97A..1F9CB;W   # So    [82] FACE WITH PLEADING EYES..BUBBLE TEA
  1F9CD..1F9FF;W   # So    [51] STANDING PERSON..NAZAR AMULET
  1FA00..1FA53;N   # So    [84] NEUTRAL CHESS KING..BLACK CHESS KNIGHT-BISHOP
  1FA60..1FA6D;N   # So    [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER
! 1FA70..1FA74;W   # So     [5] BALLET SHOES..THONG SANDAL
  1FA78..1FA7A;W   # So     [3] DROP OF BLOOD..STETHOSCOPE
! 1FA80..1FA86;W   # So     [7] YO-YO..NESTING DOLLS
! 1FA90..1FAA8;W   # So    [25] RINGED PLANET..ROCK
! 1FAB0..1FAB6;W   # So     [7] FLY..FEATHER
! 1FAC0..1FAC2;W   # So     [3] ANATOMICAL HEART..PEOPLE HUGGING
! 1FAD0..1FAD6;W   # So     [7] BLUEBERRIES..TEAPOT
! 1FB00..1FB92;N   # So   [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK
! 1FB94..1FBCA;N   # So    [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON
! 1FBF0..1FBF9;N   # Nd    [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
! 20000..2A6DD;W   # Lo [42718] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DD
! 2A6DE..2A6FF;W   # Cn    [34] <reserved-2A6DE>..<reserved-2A6FF>
  2A700..2B734;W   # Lo  [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
  2B735..2B73F;W   # Cn    [11] <reserved-2B735>..<reserved-2B73F>
  2B740..2B81D;W   # Lo   [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
*************** FFFD;A           # So         REPLACEMEN
*** 2463,2469 ****
  2F800..2FA1D;W   # Lo   [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
  2FA1E..2FA1F;W   # Cn     [2] <reserved-2FA1E>..<reserved-2FA1F>
  2FA20..2FFFD;W   # Cn  [1502] <reserved-2FA20>..<reserved-2FFFD>
! 30000..3FFFD;W   # Cn [65534] <reserved-30000>..<reserved-3FFFD>
  E0001;N          # Cf         LANGUAGE TAG
  E0020..E007F;N   # Cf    [96] TAG SPACE..CANCEL TAG
  E0100..E01EF;A   # Mn   [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
--- 2511,2518 ----
  2F800..2FA1D;W   # Lo   [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
  2FA1E..2FA1F;W   # Cn     [2] <reserved-2FA1E>..<reserved-2FA1F>
  2FA20..2FFFD;W   # Cn  [1502] <reserved-2FA20>..<reserved-2FFFD>
! 30000..3134A;W   # Lo  [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
! 3134B..3FFFD;W   # Cn [60595] <reserved-3134B>..<reserved-3FFFD>
  E0001;N          # Cf         LANGUAGE TAG
  E0020..E007F;N   # Cf    [96] TAG SPACE..CANCEL TAG
  E0100..E01EF;A   # Mn   [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
diff -Nrcpad gcc-10.3.0/contrib/unicode/PropList.txt gcc-11.1.0/contrib/unicode/PropList.txt
*** gcc-10.3.0/contrib/unicode/PropList.txt	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/unicode/PropList.txt	Tue Apr 27 10:00:12 2021
***************
*** 1,5 ****
! # PropList-12.1.0.txt
! # Date: 2019-03-10, 10:53:16 GMT
  # © 2019 Unicode®, Inc.
  # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
  # For terms of use, see http://www.unicode.org/terms_of_use.html
--- 1,5 ----
! # PropList-13.0.0.txt
! # Date: 2019-11-27, 03:13:28 GMT
  # © 2019 Unicode®, Inc.
  # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
  # For terms of use, see http://www.unicode.org/terms_of_use.html
*************** FE31..FE32    ; Dash # Pd   [2] PRESENTA
*** 61,68 ****
  FE58          ; Dash # Pd       SMALL EM DASH
  FE63          ; Dash # Pd       SMALL HYPHEN-MINUS
  FF0D          ; Dash # Pd       FULLWIDTH HYPHEN-MINUS
  
! # Total code points: 28
  
  # ================================================
  
--- 61,69 ----
  FE58          ; Dash # Pd       SMALL EM DASH
  FE63          ; Dash # Pd       SMALL HYPHEN-MINUS
  FF0D          ; Dash # Pd       FULLWIDTH HYPHEN-MINUS
+ 10EAD         ; Dash # Pd       YEZIDI HYPHENATION MARK
  
! # Total code points: 29
  
  # ================================================
  
*************** FF64          ; Terminal_Punctuation # P
*** 197,207 ****
  11238..1123C  ; Terminal_Punctuation # Po   [5] KHOJKI DANDA..KHOJKI DOUBLE SECTION MARK
  112A9         ; Terminal_Punctuation # Po       MULTANI SECTION MARK
  1144B..1144D  ; Terminal_Punctuation # Po   [3] NEWA DANDA..NEWA COMMA
! 1145B         ; Terminal_Punctuation # Po       NEWA PLACEHOLDER MARK
  115C2..115C5  ; Terminal_Punctuation # Po   [4] SIDDHAM DANDA..SIDDHAM SEPARATOR BAR
  115C9..115D7  ; Terminal_Punctuation # Po  [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
  11641..11642  ; Terminal_Punctuation # Po   [2] MODI DANDA..MODI DOUBLE DANDA
  1173C..1173E  ; Terminal_Punctuation # Po   [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
  11A42..11A43  ; Terminal_Punctuation # Po   [2] ZANABAZAR SQUARE MARK SHAD..ZANABAZAR SQUARE MARK DOUBLE SHAD
  11A9B..11A9C  ; Terminal_Punctuation # Po   [2] SOYOMBO MARK SHAD..SOYOMBO MARK DOUBLE SHAD
  11AA1..11AA2  ; Terminal_Punctuation # Po   [2] SOYOMBO TERMINAL MARK-1..SOYOMBO TERMINAL MARK-2
--- 198,210 ----
  11238..1123C  ; Terminal_Punctuation # Po   [5] KHOJKI DANDA..KHOJKI DOUBLE SECTION MARK
  112A9         ; Terminal_Punctuation # Po       MULTANI SECTION MARK
  1144B..1144D  ; Terminal_Punctuation # Po   [3] NEWA DANDA..NEWA COMMA
! 1145A..1145B  ; Terminal_Punctuation # Po   [2] NEWA DOUBLE COMMA..NEWA PLACEHOLDER MARK
  115C2..115C5  ; Terminal_Punctuation # Po   [4] SIDDHAM DANDA..SIDDHAM SEPARATOR BAR
  115C9..115D7  ; Terminal_Punctuation # Po  [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
  11641..11642  ; Terminal_Punctuation # Po   [2] MODI DANDA..MODI DOUBLE DANDA
  1173C..1173E  ; Terminal_Punctuation # Po   [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
+ 11944         ; Terminal_Punctuation # Po       DIVES AKURU DOUBLE DANDA
+ 11946         ; Terminal_Punctuation # Po       DIVES AKURU END OF TEXT MARK
  11A42..11A43  ; Terminal_Punctuation # Po   [2] ZANABAZAR SQUARE MARK SHAD..ZANABAZAR SQUARE MARK DOUBLE SHAD
  11A9B..11A9C  ; Terminal_Punctuation # Po   [2] SOYOMBO MARK SHAD..SOYOMBO MARK DOUBLE SHAD
  11AA1..11AA2  ; Terminal_Punctuation # Po   [2] SOYOMBO TERMINAL MARK-1..SOYOMBO TERMINAL MARK-2
*************** FF64          ; Terminal_Punctuation # P
*** 217,223 ****
  1BC9F         ; Terminal_Punctuation # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
  1DA87..1DA8A  ; Terminal_Punctuation # Po   [4] SIGNWRITING COMMA..SIGNWRITING COLON
  
! # Total code points: 264
  
  # ================================================
  
--- 220,226 ----
  1BC9F         ; Terminal_Punctuation # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
  1DA87..1DA8A  ; Terminal_Punctuation # Po   [4] SIGNWRITING COMMA..SIGNWRITING COLON
  
! # Total code points: 267
  
  # ================================================
  
*************** FF41..FF46    ; Hex_Digit # L&   [6] FUL
*** 525,530 ****
--- 528,534 ----
  0D4A..0D4C    ; Other_Alphabetic # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
  0D57          ; Other_Alphabetic # Mc       MALAYALAM AU LENGTH MARK
  0D62..0D63    ; Other_Alphabetic # Mn   [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
+ 0D81          ; Other_Alphabetic # Mn       SINHALA SIGN CANDRABINDU
  0D82..0D83    ; Other_Alphabetic # Mc   [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
  0DCF..0DD1    ; Other_Alphabetic # Mc   [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
  0DD2..0DD4    ; Other_Alphabetic # Mn   [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
*************** FF41..FF46    ; Hex_Digit # L&   [6] FUL
*** 595,600 ****
--- 599,605 ----
  1A65..1A6C    ; Other_Alphabetic # Mn   [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW
  1A6D..1A72    ; Other_Alphabetic # Mc   [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI
  1A73..1A74    ; Other_Alphabetic # Mn   [2] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN MAI KANG
+ 1ABF..1AC0    ; Other_Alphabetic # Mn   [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW
  1B00..1B03    ; Other_Alphabetic # Mn   [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
  1B04          ; Other_Alphabetic # Mc       BALINESE SIGN BISAH
  1B35          ; Other_Alphabetic # Mc       BALINESE VOWEL SIGN TEDUNG
*************** FB1E          ; Other_Alphabetic # Mn
*** 676,681 ****
--- 681,687 ----
  10A05..10A06  ; Other_Alphabetic # Mn   [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
  10A0C..10A0F  ; Other_Alphabetic # Mn   [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
  10D24..10D27  ; Other_Alphabetic # Mn   [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+ 10EAB..10EAC  ; Other_Alphabetic # Mn   [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
  11000         ; Other_Alphabetic # Mc       BRAHMI SIGN CANDRABINDU
  11001         ; Other_Alphabetic # Mn       BRAHMI SIGN ANUSVARA
  11002         ; Other_Alphabetic # Mc       BRAHMI SIGN VISARGA
*************** FB1E          ; Other_Alphabetic # Mn
*** 694,699 ****
--- 700,707 ----
  111B3..111B5  ; Other_Alphabetic # Mc   [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II
  111B6..111BE  ; Other_Alphabetic # Mn   [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
  111BF         ; Other_Alphabetic # Mc       SHARADA VOWEL SIGN AU
+ 111CE         ; Other_Alphabetic # Mc       SHARADA VOWEL SIGN PRISHTHAMATRA E
+ 111CF         ; Other_Alphabetic # Mn       SHARADA SIGN INVERTED CANDRABINDU
  1122C..1122E  ; Other_Alphabetic # Mc   [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II
  1122F..11231  ; Other_Alphabetic # Mn   [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
  11232..11233  ; Other_Alphabetic # Mc   [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU
*************** FB1E          ; Other_Alphabetic # Mn
*** 749,754 ****
--- 757,767 ----
  1182C..1182E  ; Other_Alphabetic # Mc   [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
  1182F..11837  ; Other_Alphabetic # Mn   [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
  11838         ; Other_Alphabetic # Mc       DOGRA SIGN VISARGA
+ 11930..11935  ; Other_Alphabetic # Mc   [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E
+ 11937..11938  ; Other_Alphabetic # Mc   [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O
+ 1193B..1193C  ; Other_Alphabetic # Mn   [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU
+ 11940         ; Other_Alphabetic # Mc       DIVES AKURU MEDIAL YA
+ 11942         ; Other_Alphabetic # Mc       DIVES AKURU MEDIAL RA
  119D1..119D3  ; Other_Alphabetic # Mc   [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II
  119D4..119D7  ; Other_Alphabetic # Mn   [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
  119DA..119DB  ; Other_Alphabetic # Mn   [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI
*************** FB1E          ; Other_Alphabetic # Mn
*** 790,795 ****
--- 803,809 ----
  16F4F         ; Other_Alphabetic # Mn       MIAO SIGN CONSONANT MODIFIER BAR
  16F51..16F87  ; Other_Alphabetic # Mc  [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
  16F8F..16F92  ; Other_Alphabetic # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
+ 16FF0..16FF1  ; Other_Alphabetic # Mc   [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
  1BC9E         ; Other_Alphabetic # Mn       DUPLOYAN DOUBLE MARK
  1E000..1E006  ; Other_Alphabetic # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
  1E008..1E018  ; Other_Alphabetic # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
*************** FB1E          ; Other_Alphabetic # Mn
*** 801,807 ****
  1F150..1F169  ; Other_Alphabetic # So  [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
  1F170..1F189  ; Other_Alphabetic # So  [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
  
! # Total code points: 1377
  
  # ================================================
  
--- 815,821 ----
  1F150..1F169  ; Other_Alphabetic # So  [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
  1F170..1F189  ; Other_Alphabetic # So  [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
  
! # Total code points: 1398
  
  # ================================================
  
*************** FB1E          ; Other_Alphabetic # Mn
*** 809,829 ****
  3007          ; Ideographic # Nl       IDEOGRAPHIC NUMBER ZERO
  3021..3029    ; Ideographic # Nl   [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
  3038..303A    ; Ideographic # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
! 3400..4DB5    ; Ideographic # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
! 4E00..9FEF    ; Ideographic # Lo [20976] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEF
  F900..FA6D    ; Ideographic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
  FA70..FAD9    ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
  17000..187F7  ; Ideographic # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
! 18800..18AF2  ; Ideographic # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
  1B170..1B2FB  ; Ideographic # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
! 20000..2A6D6  ; Ideographic # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
  2A700..2B734  ; Ideographic # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
  2B740..2B81D  ; Ideographic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
  2B820..2CEA1  ; Ideographic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
  2CEB0..2EBE0  ; Ideographic # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
  2F800..2FA1D  ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
  
! # Total code points: 96190
  
  # ================================================
  
--- 823,846 ----
  3007          ; Ideographic # Nl       IDEOGRAPHIC NUMBER ZERO
  3021..3029    ; Ideographic # Nl   [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
  3038..303A    ; Ideographic # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
! 3400..4DBF    ; Ideographic # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
! 4E00..9FFC    ; Ideographic # Lo [20989] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFC
  F900..FA6D    ; Ideographic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
  FA70..FAD9    ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+ 16FE4         ; Ideographic # Mn       KHITAN SMALL SCRIPT FILLER
  17000..187F7  ; Ideographic # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
! 18800..18CD5  ; Ideographic # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
! 18D00..18D08  ; Ideographic # Lo   [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
  1B170..1B2FB  ; Ideographic # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
! 20000..2A6DD  ; Ideographic # Lo [42718] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DD
  2A700..2B734  ; Ideographic # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
  2B740..2B81D  ; Ideographic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
  2B820..2CEA1  ; Ideographic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
  2CEB0..2EBE0  ; Ideographic # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
  2F800..2FA1D  ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+ 30000..3134A  ; Ideographic # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
  
! # Total code points: 101652
  
  # ================================================
  
*************** FA70..FAD9    ; Ideographic # Lo [106] C
*** 882,887 ****
--- 899,905 ----
  0AFD..0AFF    ; Diacritic # Mn   [3] GUJARATI SIGN THREE-DOT NUKTA ABOVE..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE
  0B3C          ; Diacritic # Mn       ORIYA SIGN NUKTA
  0B4D          ; Diacritic # Mn       ORIYA SIGN VIRAMA
+ 0B55          ; Diacritic # Mn       ORIYA SIGN OVERLINE
  0BCD          ; Diacritic # Mn       TAMIL SIGN VIRAMA
  0C4D          ; Diacritic # Mn       TELUGU SIGN VIRAMA
  0CBC          ; Diacritic # Mn       KANNADA SIGN NUKTA
*************** AAC2          ; Diacritic # Lo       TAI
*** 978,983 ****
--- 996,1003 ----
  AAF6          ; Diacritic # Mn       MEETEI MAYEK VIRAMA
  AB5B          ; Diacritic # Sk       MODIFIER BREVE WITH INVERTED BREVE
  AB5C..AB5F    ; Diacritic # Lm   [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
+ AB69          ; Diacritic # Lm       MODIFIER LETTER SMALL TURNED W
+ AB6A..AB6B    ; Diacritic # Sk   [2] MODIFIER LETTER LEFT TACK..MODIFIER LETTER RIGHT TACK
  ABEC          ; Diacritic # Mc       MEETEI MAYEK LUM IYEK
  ABED          ; Diacritic # Mn       MEETEI MAYEK APUN IYEK
  FB1E          ; Diacritic # Mn       HEBREW POINT JUDEO-SPANISH VARIKA
*************** FFE3          ; Diacritic # Sk       FUL
*** 1013,1018 ****
--- 1033,1041 ----
  116B7         ; Diacritic # Mn       TAKRI SIGN NUKTA
  1172B         ; Diacritic # Mn       AHOM SIGN KILLER
  11839..1183A  ; Diacritic # Mn   [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
+ 1193D         ; Diacritic # Mc       DIVES AKURU SIGN HALANTA
+ 1193E         ; Diacritic # Mn       DIVES AKURU VIRAMA
+ 11943         ; Diacritic # Mn       DIVES AKURU SIGN NUKTA
  119E0         ; Diacritic # Mn       NANDINAGARI SIGN VIRAMA
  11A34         ; Diacritic # Mn       ZANABAZAR SQUARE SIGN VIRAMA
  11A47         ; Diacritic # Mn       ZANABAZAR SQUARE SUBJOINER
*************** FFE3          ; Diacritic # Sk       FUL
*** 1025,1030 ****
--- 1048,1054 ----
  16B30..16B36  ; Diacritic # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
  16F8F..16F92  ; Diacritic # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
  16F93..16F9F  ; Diacritic # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+ 16FF0..16FF1  ; Diacritic # Mc   [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
  1D167..1D169  ; Diacritic # Mn   [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
  1D16D..1D172  ; Diacritic # Mc   [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
  1D17B..1D182  ; Diacritic # Mn   [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
*************** FFE3          ; Diacritic # Sk       FUL
*** 1036,1042 ****
  1E944..1E946  ; Diacritic # Mn   [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
  1E948..1E94A  ; Diacritic # Mn   [3] ADLAM CONSONANT MODIFIER..ADLAM NUKTA
  
! # Total code points: 873
  
  # ================================================
  
--- 1060,1066 ----
  1E944..1E946  ; Diacritic # Mn   [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
  1E948..1E94A  ; Diacritic # Mn   [3] ADLAM CONSONANT MODIFIER..ADLAM NUKTA
  
! # Total code points: 882
  
  # ================================================
  
*************** FFE3          ; Diacritic # Sk       FUL
*** 1044,1049 ****
--- 1068,1074 ----
  02D0..02D1    ; Extender # Lm   [2] MODIFIER LETTER TRIANGULAR COLON..MODIFIER LETTER HALF TRIANGULAR COLON
  0640          ; Extender # Lm       ARABIC TATWEEL
  07FA          ; Extender # Lm       NKO LAJANYALAN
+ 0B55          ; Extender # Mn       ORIYA SIGN OVERLINE
  0E46          ; Extender # Lm       THAI CHARACTER MAIYAMOK
  0EC6          ; Extender # Lm       LAO KO LA
  180A          ; Extender # Po       MONGOLIAN NIRUGU
*************** FF70          ; Extender # Lm       HALF
*** 1072,1078 ****
  1E13C..1E13D  ; Extender # Lm   [2] NYIAKENG PUACHUE HMONG SIGN XW XW..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
  1E944..1E946  ; Extender # Mn   [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
  
! # Total code points: 47
  
  # ================================================
  
--- 1097,1103 ----
  1E13C..1E13D  ; Extender # Lm   [2] NYIAKENG PUACHUE HMONG SIGN XW XW..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
  1E944..1E946  ; Extender # Mn   [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
  
! # Total code points: 48
  
  # ================================================
  
*************** FF9E..FF9F    ; Other_Grapheme_Extend #
*** 1155,1165 ****
  114B0         ; Other_Grapheme_Extend # Mc       TIRHUTA VOWEL SIGN AA
  114BD         ; Other_Grapheme_Extend # Mc       TIRHUTA VOWEL SIGN SHORT O
  115AF         ; Other_Grapheme_Extend # Mc       SIDDHAM VOWEL SIGN AA
  1D165         ; Other_Grapheme_Extend # Mc       MUSICAL SYMBOL COMBINING STEM
  1D16E..1D172  ; Other_Grapheme_Extend # Mc   [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
  E0020..E007F  ; Other_Grapheme_Extend # Cf  [96] TAG SPACE..CANCEL TAG
  
! # Total code points: 126
  
  # ================================================
  
--- 1180,1191 ----
  114B0         ; Other_Grapheme_Extend # Mc       TIRHUTA VOWEL SIGN AA
  114BD         ; Other_Grapheme_Extend # Mc       TIRHUTA VOWEL SIGN SHORT O
  115AF         ; Other_Grapheme_Extend # Mc       SIDDHAM VOWEL SIGN AA
+ 11930         ; Other_Grapheme_Extend # Mc       DIVES AKURU VOWEL SIGN AA
  1D165         ; Other_Grapheme_Extend # Mc       MUSICAL SYMBOL COMBINING STEM
  1D16E..1D172  ; Other_Grapheme_Extend # Mc   [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
  E0020..E007F  ; Other_Grapheme_Extend # Cf  [96] TAG SPACE..CANCEL TAG
  
! # Total code points: 127
  
  # ================================================
  
*************** E0020..E007F  ; Other_Grapheme_Extend #
*** 1184,1191 ****
  
  # ================================================
  
! 3400..4DB5    ; Unified_Ideograph # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
! 4E00..9FEF    ; Unified_Ideograph # Lo [20976] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEF
  FA0E..FA0F    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F
  FA11          ; Unified_Ideograph # Lo       CJK COMPATIBILITY IDEOGRAPH-FA11
  FA13..FA14    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14
--- 1210,1217 ----
  
  # ================================================
  
! 3400..4DBF    ; Unified_Ideograph # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
! 4E00..9FFC    ; Unified_Ideograph # Lo [20989] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFC
  FA0E..FA0F    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F
  FA11          ; Unified_Ideograph # Lo       CJK COMPATIBILITY IDEOGRAPH-FA11
  FA13..FA14    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14
*************** FA1F          ; Unified_Ideograph # Lo
*** 1193,1205 ****
  FA21          ; Unified_Ideograph # Lo       CJK COMPATIBILITY IDEOGRAPH-FA21
  FA23..FA24    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA23..CJK COMPATIBILITY IDEOGRAPH-FA24
  FA27..FA29    ; Unified_Ideograph # Lo   [3] CJK COMPATIBILITY IDEOGRAPH-FA27..CJK COMPATIBILITY IDEOGRAPH-FA29
! 20000..2A6D6  ; Unified_Ideograph # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
  2A700..2B734  ; Unified_Ideograph # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
  2B740..2B81D  ; Unified_Ideograph # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
  2B820..2CEA1  ; Unified_Ideograph # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
  2CEB0..2EBE0  ; Unified_Ideograph # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
  
! # Total code points: 87887
  
  # ================================================
  
--- 1219,1232 ----
  FA21          ; Unified_Ideograph # Lo       CJK COMPATIBILITY IDEOGRAPH-FA21
  FA23..FA24    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA23..CJK COMPATIBILITY IDEOGRAPH-FA24
  FA27..FA29    ; Unified_Ideograph # Lo   [3] CJK COMPATIBILITY IDEOGRAPH-FA27..CJK COMPATIBILITY IDEOGRAPH-FA29
! 20000..2A6DD  ; Unified_Ideograph # Lo [42718] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DD
  2A700..2B734  ; Unified_Ideograph # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
  2B740..2B81D  ; Unified_Ideograph # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
  2B820..2CEA1  ; Unified_Ideograph # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
  2CEB0..2EBE0  ; Unified_Ideograph # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
+ 30000..3134A  ; Unified_Ideograph # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
  
! # Total code points: 92856
  
  # ================================================
  
*************** FF61          ; Sentence_Terminal # Po
*** 1362,1367 ****
--- 1389,1396 ----
  115C9..115D7  ; Sentence_Terminal # Po  [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
  11641..11642  ; Sentence_Terminal # Po   [2] MODI DANDA..MODI DOUBLE DANDA
  1173C..1173E  ; Sentence_Terminal # Po   [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
+ 11944         ; Sentence_Terminal # Po       DIVES AKURU DOUBLE DANDA
+ 11946         ; Sentence_Terminal # Po       DIVES AKURU END OF TEXT MARK
  11A42..11A43  ; Sentence_Terminal # Po   [2] ZANABAZAR SQUARE MARK SHAD..ZANABAZAR SQUARE MARK DOUBLE SHAD
  11A9B..11A9C  ; Sentence_Terminal # Po   [2] SOYOMBO MARK SHAD..SOYOMBO MARK DOUBLE SHAD
  11C41..11C42  ; Sentence_Terminal # Po   [2] BHAIKSUKI DANDA..BHAIKSUKI DOUBLE DANDA
*************** FF61          ; Sentence_Terminal # Po
*** 1374,1380 ****
  1BC9F         ; Sentence_Terminal # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
  1DA88         ; Sentence_Terminal # Po       SIGNWRITING FULL STOP
  
! # Total code points: 141
  
  # ================================================
  
--- 1403,1409 ----
  1BC9F         ; Sentence_Terminal # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
  1DA88         ; Sentence_Terminal # Po       SIGNWRITING FULL STOP
  
! # Total code points: 143
  
  # ================================================
  
*************** E0100..E01EF  ; Variation_Selector # Mn
*** 1574,1581 ****
  2B4D..2B73    ; Pattern_Syntax # So  [39] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR
  2B74..2B75    ; Pattern_Syntax # Cn   [2] <reserved-2B74>..<reserved-2B75>
  2B76..2B95    ; Pattern_Syntax # So  [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
! 2B96..2B97    ; Pattern_Syntax # Cn   [2] <reserved-2B96>..<reserved-2B97>
! 2B98..2BFF    ; Pattern_Syntax # So [104] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..HELLSCHREIBER PAUSE SYMBOL
  2E00..2E01    ; Pattern_Syntax # Po   [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
  2E02          ; Pattern_Syntax # Pi       LEFT SUBSTITUTION BRACKET
  2E03          ; Pattern_Syntax # Pf       RIGHT SUBSTITUTION BRACKET
--- 1603,1610 ----
  2B4D..2B73    ; Pattern_Syntax # So  [39] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR
  2B74..2B75    ; Pattern_Syntax # Cn   [2] <reserved-2B74>..<reserved-2B75>
  2B76..2B95    ; Pattern_Syntax # So  [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
! 2B96          ; Pattern_Syntax # Cn       <reserved-2B96>
! 2B97..2BFF    ; Pattern_Syntax # So [105] SYMBOL FOR TYPE A ELECTRONICS..HELLSCHREIBER PAUSE SYMBOL
  2E00..2E01    ; Pattern_Syntax # Po   [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
  2E02          ; Pattern_Syntax # Pi       LEFT SUBSTITUTION BRACKET
  2E03          ; Pattern_Syntax # Pf       RIGHT SUBSTITUTION BRACKET
*************** E0100..E01EF  ; Variation_Selector # Mn
*** 1614,1620 ****
  2E41          ; Pattern_Syntax # Po       REVERSED COMMA
  2E42          ; Pattern_Syntax # Ps       DOUBLE LOW-REVERSED-9 QUOTATION MARK
  2E43..2E4F    ; Pattern_Syntax # Po  [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER
! 2E50..2E7F    ; Pattern_Syntax # Cn  [48] <reserved-2E50>..<reserved-2E7F>
  3001..3003    ; Pattern_Syntax # Po   [3] IDEOGRAPHIC COMMA..DITTO MARK
  3008          ; Pattern_Syntax # Ps       LEFT ANGLE BRACKET
  3009          ; Pattern_Syntax # Pe       RIGHT ANGLE BRACKET
--- 1643,1651 ----
  2E41          ; Pattern_Syntax # Po       REVERSED COMMA
  2E42          ; Pattern_Syntax # Ps       DOUBLE LOW-REVERSED-9 QUOTATION MARK
  2E43..2E4F    ; Pattern_Syntax # Po  [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER
! 2E50..2E51    ; Pattern_Syntax # So   [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR
! 2E52          ; Pattern_Syntax # Po       TIRONIAN SIGN CAPITAL ET
! 2E53..2E7F    ; Pattern_Syntax # Cn  [45] <reserved-2E53>..<reserved-2E7F>
  3001..3003    ; Pattern_Syntax # Po   [3] IDEOGRAPHIC COMMA..DITTO MARK
  3008          ; Pattern_Syntax # Ps       LEFT ANGLE BRACKET
  3009          ; Pattern_Syntax # Pe       RIGHT ANGLE BRACKET
diff -Nrcpad gcc-10.3.0/contrib/unicode/README gcc-11.1.0/contrib/unicode/README
*** gcc-10.3.0/contrib/unicode/README	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/unicode/README	Tue Apr 27 10:00:12 2021
*************** localedata/unicode-gen/unicode_utils.py
*** 23,29 ****
  localedata/unicode-gen/utf8_gen.py
  
  And the most recent versions added to GCC are from glibc git commit:
! 2a764c6ee848dfe92cb2921ed3b14085f15d9e79
  
  Finally, the script gen_wcwidth.py found here contains the GCC-specific code to
  map glibc's output to the lookup tables we require.  This script should not need
--- 23,29 ----
  localedata/unicode-gen/utf8_gen.py
  
  And the most recent versions added to GCC are from glibc git commit:
! f6032247061fb37d59565f2e9667e242c8a98e76
  
  Finally, the script gen_wcwidth.py found here contains the GCC-specific code to
  map glibc's output to the lookup tables we require.  This script should not need
*************** The procedure to update GCC's wcwidth ta
*** 39,44 ****
  
  3.  Run ./gen_wcwidth.py X.Y > ../../libcpp/generated_cpp_wcwidth.h
      (where X.Y is the version of the Unicode standard corresponding to the
!     Unicode data files being used, most recently, 12.1).
  
  After that, GCC's wcwidth will match the most recent glibc.
--- 39,44 ----
  
  3.  Run ./gen_wcwidth.py X.Y > ../../libcpp/generated_cpp_wcwidth.h
      (where X.Y is the version of the Unicode standard corresponding to the
!     Unicode data files being used, most recently, 13.0.0).
  
  After that, GCC's wcwidth will match the most recent glibc.
diff -Nrcpad gcc-10.3.0/contrib/unicode/UnicodeData.txt gcc-11.1.0/contrib/unicode/UnicodeData.txt
*** gcc-10.3.0/contrib/unicode/UnicodeData.txt	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/unicode/UnicodeData.txt	Tue Apr 27 10:00:12 2021
***************
*** 2118,2123 ****
--- 2118,2133 ----
  08BB;ARABIC LETTER AFRICAN FEH;Lo;0;AL;;;;;N;;;;;
  08BC;ARABIC LETTER AFRICAN QAF;Lo;0;AL;;;;;N;;;;;
  08BD;ARABIC LETTER AFRICAN NOON;Lo;0;AL;;;;;N;;;;;
+ 08BE;ARABIC LETTER PEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+ 08BF;ARABIC LETTER TEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+ 08C0;ARABIC LETTER TTEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+ 08C1;ARABIC LETTER TCHEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+ 08C2;ARABIC LETTER KEHEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+ 08C3;ARABIC LETTER GHAIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+ 08C4;ARABIC LETTER AFRICAN QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+ 08C5;ARABIC LETTER JEEM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+ 08C6;ARABIC LETTER JEEM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+ 08C7;ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;;
  08D3;ARABIC SMALL LOW WAW;Mn;220;NSM;;;;;N;;;;;
  08D4;ARABIC SMALL HIGH WORD AR-RUB;Mn;230;NSM;;;;;N;;;;;
  08D5;ARABIC SMALL HIGH SAD;Mn;230;NSM;;;;;N;;;;;
***************
*** 2621,2626 ****
--- 2631,2637 ----
  0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
  0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
  0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+ 0B55;ORIYA SIGN OVERLINE;Mn;0;NSM;;;;;N;;;;;
  0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
  0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
  0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
***************
*** 2911,2916 ****
--- 2922,2928 ----
  0D01;MALAYALAM SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
  0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
  0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+ 0D04;MALAYALAM LETTER VEDIC ANUSVARA;Lo;0;L;;;;;N;;;;;
  0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
  0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
  0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
***************
*** 3024,3029 ****
--- 3036,3042 ----
  0D7D;MALAYALAM LETTER CHILLU L;Lo;0;L;;;;;N;;;;;
  0D7E;MALAYALAM LETTER CHILLU LL;Lo;0;L;;;;;N;;;;;
  0D7F;MALAYALAM LETTER CHILLU K;Lo;0;L;;;;;N;;;;;
+ 0D81;SINHALA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
  0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;
  0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;
  0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;
***************
*** 6044,6049 ****
--- 6057,6064 ----
  1ABC;COMBINING DOUBLE PARENTHESES ABOVE;Mn;230;NSM;;;;;N;;;;;
  1ABD;COMBINING PARENTHESES BELOW;Mn;220;NSM;;;;;N;;;;;
  1ABE;COMBINING PARENTHESES OVERLAY;Me;0;NSM;;;;;N;;;;;
+ 1ABF;COMBINING LATIN SMALL LETTER W BELOW;Mn;220;NSM;;;;;N;;;;;
+ 1AC0;COMBINING LATIN SMALL LETTER TURNED W BELOW;Mn;220;NSM;;;;;N;;;;;
  1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;;;;
  1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;;;;
  1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;;;;
***************
*** 10133,10138 ****
--- 10148,10154 ----
  2B93;NEWLINE RIGHT;So;0;ON;;;;;N;;;;;
  2B94;FOUR CORNER ARROWS CIRCLING ANTICLOCKWISE;So;0;ON;;;;;N;;;;;
  2B95;RIGHTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
+ 2B97;SYMBOL FOR TYPE A ELECTRONICS;So;0;ON;;;;;N;;;;;
  2B98;THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;
  2B99;THREE-D RIGHT-LIGHTED UPWARDS EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;
  2B9A;THREE-D TOP-LIGHTED RIGHTWARDS EQUILATERAL ARROWHEAD;So;0;ON;;;;;N;;;;;
***************
*** 10776,10781 ****
--- 10792,10800 ----
  2E4D;PARAGRAPHUS MARK;Po;0;ON;;;;;N;;;;;
  2E4E;PUNCTUS ELEVATUS MARK;Po;0;ON;;;;;N;;;;;
  2E4F;CORNISH VERSE DIVIDER;Po;0;ON;;;;;N;;;;;
+ 2E50;CROSS PATTY WITH RIGHT CROSSBAR;So;0;ON;;;;;N;;;;;
+ 2E51;CROSS PATTY WITH LEFT CROSSBAR;So;0;ON;;;;;N;;;;;
+ 2E52;TIRONIAN SIGN CAPITAL ET;Po;0;ON;;;;;N;;;;;
  2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
  2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
  2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
***************
*** 11550,11555 ****
--- 11569,11579 ----
  31B8;BOPOMOFO LETTER GH;Lo;0;L;;;;;N;;;;;
  31B9;BOPOMOFO LETTER LH;Lo;0;L;;;;;N;;;;;
  31BA;BOPOMOFO LETTER ZY;Lo;0;L;;;;;N;;;;;
+ 31BB;BOPOMOFO FINAL LETTER G;Lo;0;L;;;;;N;;;;;
+ 31BC;BOPOMOFO LETTER GW;Lo;0;L;;;;;N;;;;;
+ 31BD;BOPOMOFO LETTER KW;Lo;0;L;;;;;N;;;;;
+ 31BE;BOPOMOFO LETTER OE;Lo;0;L;;;;;N;;;;;
+ 31BF;BOPOMOFO LETTER AH;Lo;0;L;;;;;N;;;;;
  31C0;CJK STROKE T;So;0;ON;;;;;N;;;;;
  31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;;
  31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;;
***************
*** 12114,12120 ****
  33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
  33FF;SQUARE GAL;So;0;ON;<square> 0067 0061 006C;;;;N;;;;;
  3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
! 4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
  4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;;
  4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;;
  4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;;
--- 12138,12144 ----
  33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
  33FF;SQUARE GAL;So;0;ON;<square> 0067 0061 006C;;;;N;;;;;
  3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
! 4DBF;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
  4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;;
  4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;;
  4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;;
***************
*** 12180,12186 ****
  4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;;
  4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;;
  4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
! 9FEF;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
  A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
  A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
  A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
--- 12204,12210 ----
  4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;;
  4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;;
  4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
! 9FFC;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
  A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
  A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
  A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
*************** A7C3;LATIN SMALL LETTER ANGLICANA W;Ll;0
*** 14130,14135 ****
--- 14154,14165 ----
  A7C4;LATIN CAPITAL LETTER C WITH PALATAL HOOK;Lu;0;L;;;;;N;;;;A794;
  A7C5;LATIN CAPITAL LETTER S WITH HOOK;Lu;0;L;;;;;N;;;;0282;
  A7C6;LATIN CAPITAL LETTER Z WITH PALATAL HOOK;Lu;0;L;;;;;N;;;;1D8E;
+ A7C7;LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7C8;
+ A7C8;LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C7;;A7C7
+ A7C9;LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7CA;
+ A7CA;LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C9;;A7C9
+ A7F5;LATIN CAPITAL LETTER REVERSED HALF H;Lu;0;L;;;;;N;;;;A7F6;
+ A7F6;LATIN SMALL LETTER REVERSED HALF H;Ll;0;L;;;;;N;;;A7F5;;A7F5
  A7F7;LATIN EPIGRAPHIC LETTER SIDEWAYS I;Lo;0;L;;;;;N;;;;;
  A7F8;MODIFIER LETTER CAPITAL H WITH STROKE;Lm;0;L;<super> 0126;;;;N;;;;;
  A7F9;MODIFIER LETTER SMALL LIGATURE OE;Lm;0;L;<super> 0153;;;;N;;;;;
*************** A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;
*** 14183,14188 ****
--- 14213,14219 ----
  A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;;
  A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;;
  A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;;
+ A82C;SYLOTI NAGRI SIGN ALTERNATE HASANTA;Mn;9;NSM;;;;;N;;;;;
  A830;NORTH INDIC FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;;
  A831;NORTH INDIC FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;;
  A832;NORTH INDIC FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;;
*************** AB64;LATIN SMALL LETTER INVERTED ALPHA;L
*** 14897,14902 ****
--- 14928,14937 ----
  AB65;GREEK LETTER SMALL CAPITAL OMEGA;Ll;0;L;;;;;N;;;;;
  AB66;LATIN SMALL LETTER DZ DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
  AB67;LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+ AB68;LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+ AB69;MODIFIER LETTER SMALL TURNED W;Lm;0;L;<super> 028D;;;;N;;;;;
+ AB6A;MODIFIER LETTER LEFT TACK;Sk;0;ON;;;;;N;;;;;
+ AB6B;MODIFIER LETTER RIGHT TACK;Sk;0;ON;;;;;N;;;;;
  AB70;CHEROKEE SMALL LETTER A;Ll;0;L;;;;;N;;;13A0;;13A0
  AB71;CHEROKEE SMALL LETTER E;Ll;0;L;;;;;N;;;13A1;;13A1
  AB72;CHEROKEE SMALL LETTER I;Ll;0;L;;;;;N;;;13A2;;13A2
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 17086,17091 ****
--- 17121,17127 ----
  10199;ROMAN DUPONDIUS SIGN;So;0;ON;;;;;N;;;;;
  1019A;ROMAN AS SIGN;So;0;ON;;;;;N;;;;;
  1019B;ROMAN CENTURIAL SIGN;So;0;ON;;;;;N;;;;;
+ 1019C;ASCIA SYMBOL;So;0;ON;;;;;N;;;;;
  101A0;GREEK SYMBOL TAU RHO;So;0;ON;;;;;N;;;;;
  101D0;PHAISTOS DISC SIGN PEDESTRIAN;So;0;L;;;;;N;;;;;
  101D1;PHAISTOS DISC SIGN PLUMED HEAD;So;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 19057,19062 ****
--- 19093,19145 ----
  10E7C;RUMI FRACTION ONE QUARTER;No;0;AN;;;;1/4;N;;;;;
  10E7D;RUMI FRACTION ONE THIRD;No;0;AN;;;;1/3;N;;;;;
  10E7E;RUMI FRACTION TWO THIRDS;No;0;AN;;;;2/3;N;;;;;
+ 10E80;YEZIDI LETTER ELIF;Lo;0;R;;;;;N;;;;;
+ 10E81;YEZIDI LETTER BE;Lo;0;R;;;;;N;;;;;
+ 10E82;YEZIDI LETTER PE;Lo;0;R;;;;;N;;;;;
+ 10E83;YEZIDI LETTER PHE;Lo;0;R;;;;;N;;;;;
+ 10E84;YEZIDI LETTER THE;Lo;0;R;;;;;N;;;;;
+ 10E85;YEZIDI LETTER SE;Lo;0;R;;;;;N;;;;;
+ 10E86;YEZIDI LETTER CIM;Lo;0;R;;;;;N;;;;;
+ 10E87;YEZIDI LETTER CHIM;Lo;0;R;;;;;N;;;;;
+ 10E88;YEZIDI LETTER CHHIM;Lo;0;R;;;;;N;;;;;
+ 10E89;YEZIDI LETTER HHA;Lo;0;R;;;;;N;;;;;
+ 10E8A;YEZIDI LETTER XA;Lo;0;R;;;;;N;;;;;
+ 10E8B;YEZIDI LETTER DAL;Lo;0;R;;;;;N;;;;;
+ 10E8C;YEZIDI LETTER ZAL;Lo;0;R;;;;;N;;;;;
+ 10E8D;YEZIDI LETTER RA;Lo;0;R;;;;;N;;;;;
+ 10E8E;YEZIDI LETTER RHA;Lo;0;R;;;;;N;;;;;
+ 10E8F;YEZIDI LETTER ZA;Lo;0;R;;;;;N;;;;;
+ 10E90;YEZIDI LETTER JA;Lo;0;R;;;;;N;;;;;
+ 10E91;YEZIDI LETTER SIN;Lo;0;R;;;;;N;;;;;
+ 10E92;YEZIDI LETTER SHIN;Lo;0;R;;;;;N;;;;;
+ 10E93;YEZIDI LETTER SAD;Lo;0;R;;;;;N;;;;;
+ 10E94;YEZIDI LETTER DAD;Lo;0;R;;;;;N;;;;;
+ 10E95;YEZIDI LETTER TA;Lo;0;R;;;;;N;;;;;
+ 10E96;YEZIDI LETTER ZE;Lo;0;R;;;;;N;;;;;
+ 10E97;YEZIDI LETTER EYN;Lo;0;R;;;;;N;;;;;
+ 10E98;YEZIDI LETTER XHEYN;Lo;0;R;;;;;N;;;;;
+ 10E99;YEZIDI LETTER FA;Lo;0;R;;;;;N;;;;;
+ 10E9A;YEZIDI LETTER VA;Lo;0;R;;;;;N;;;;;
+ 10E9B;YEZIDI LETTER VA ALTERNATE FORM;Lo;0;R;;;;;N;;;;;
+ 10E9C;YEZIDI LETTER QAF;Lo;0;R;;;;;N;;;;;
+ 10E9D;YEZIDI LETTER KAF;Lo;0;R;;;;;N;;;;;
+ 10E9E;YEZIDI LETTER KHAF;Lo;0;R;;;;;N;;;;;
+ 10E9F;YEZIDI LETTER GAF;Lo;0;R;;;;;N;;;;;
+ 10EA0;YEZIDI LETTER LAM;Lo;0;R;;;;;N;;;;;
+ 10EA1;YEZIDI LETTER MIM;Lo;0;R;;;;;N;;;;;
+ 10EA2;YEZIDI LETTER NUN;Lo;0;R;;;;;N;;;;;
+ 10EA3;YEZIDI LETTER UM;Lo;0;R;;;;;N;;;;;
+ 10EA4;YEZIDI LETTER WAW;Lo;0;R;;;;;N;;;;;
+ 10EA5;YEZIDI LETTER OW;Lo;0;R;;;;;N;;;;;
+ 10EA6;YEZIDI LETTER EW;Lo;0;R;;;;;N;;;;;
+ 10EA7;YEZIDI LETTER HAY;Lo;0;R;;;;;N;;;;;
+ 10EA8;YEZIDI LETTER YOT;Lo;0;R;;;;;N;;;;;
+ 10EA9;YEZIDI LETTER ET;Lo;0;R;;;;;N;;;;;
+ 10EAB;YEZIDI COMBINING HAMZA MARK;Mn;230;NSM;;;;;N;;;;;
+ 10EAC;YEZIDI COMBINING MADDA MARK;Mn;230;NSM;;;;;N;;;;;
+ 10EAD;YEZIDI HYPHENATION MARK;Pd;0;R;;;;;N;;;;;
+ 10EB0;YEZIDI LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
+ 10EB1;YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE;Lo;0;R;;;;;N;;;;;
  10F00;OLD SOGDIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;
  10F01;OLD SOGDIAN LETTER FINAL ALEPH;Lo;0;R;;;;;N;;;;;
  10F02;OLD SOGDIAN LETTER BETH;Lo;0;R;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 19139,19144 ****
--- 19222,19255 ----
  10F57;SOGDIAN PUNCTUATION CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;;
  10F58;SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS;Po;0;AL;;;;;N;;;;;
  10F59;SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;;
+ 10FB0;CHORASMIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;
+ 10FB1;CHORASMIAN LETTER SMALL ALEPH;Lo;0;R;;;;;N;;;;;
+ 10FB2;CHORASMIAN LETTER BETH;Lo;0;R;;;;;N;;;;;
+ 10FB3;CHORASMIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+ 10FB4;CHORASMIAN LETTER DALETH;Lo;0;R;;;;;N;;;;;
+ 10FB5;CHORASMIAN LETTER HE;Lo;0;R;;;;;N;;;;;
+ 10FB6;CHORASMIAN LETTER WAW;Lo;0;R;;;;;N;;;;;
+ 10FB7;CHORASMIAN LETTER CURLED WAW;Lo;0;R;;;;;N;;;;;
+ 10FB8;CHORASMIAN LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+ 10FB9;CHORASMIAN LETTER HETH;Lo;0;R;;;;;N;;;;;
+ 10FBA;CHORASMIAN LETTER YODH;Lo;0;R;;;;;N;;;;;
+ 10FBB;CHORASMIAN LETTER KAPH;Lo;0;R;;;;;N;;;;;
+ 10FBC;CHORASMIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
+ 10FBD;CHORASMIAN LETTER MEM;Lo;0;R;;;;;N;;;;;
+ 10FBE;CHORASMIAN LETTER NUN;Lo;0;R;;;;;N;;;;;
+ 10FBF;CHORASMIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+ 10FC0;CHORASMIAN LETTER AYIN;Lo;0;R;;;;;N;;;;;
+ 10FC1;CHORASMIAN LETTER PE;Lo;0;R;;;;;N;;;;;
+ 10FC2;CHORASMIAN LETTER RESH;Lo;0;R;;;;;N;;;;;
+ 10FC3;CHORASMIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;
+ 10FC4;CHORASMIAN LETTER TAW;Lo;0;R;;;;;N;;;;;
+ 10FC5;CHORASMIAN NUMBER ONE;No;0;R;;;;1;N;;;;;
+ 10FC6;CHORASMIAN NUMBER TWO;No;0;R;;;;2;N;;;;;
+ 10FC7;CHORASMIAN NUMBER THREE;No;0;R;;;;3;N;;;;;
+ 10FC8;CHORASMIAN NUMBER FOUR;No;0;R;;;;4;N;;;;;
+ 10FC9;CHORASMIAN NUMBER TEN;No;0;R;;;;10;N;;;;;
+ 10FCA;CHORASMIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;
+ 10FCB;CHORASMIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
  10FE0;ELYMAIC LETTER ALEPH;Lo;0;R;;;;;N;;;;;
  10FE1;ELYMAIC LETTER BETH;Lo;0;R;;;;;N;;;;;
  10FE2;ELYMAIC LETTER GIMEL;Lo;0;R;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 19443,19448 ****
--- 19554,19560 ----
  11144;CHAKMA LETTER LHAA;Lo;0;L;;;;;N;;;;;
  11145;CHAKMA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
  11146;CHAKMA VOWEL SIGN EI;Mc;0;L;;;;;N;;;;;
+ 11147;CHAKMA LETTER VAA;Lo;0;L;;;;;N;;;;;
  11150;MAHAJANI LETTER A;Lo;0;L;;;;;N;;;;;
  11151;MAHAJANI LETTER I;Lo;0;L;;;;;N;;;;;
  11152;MAHAJANI LETTER U;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 19560,19565 ****
--- 19672,19679 ----
  111CB;SHARADA VOWEL MODIFIER MARK;Mn;0;NSM;;;;;N;;;;;
  111CC;SHARADA EXTRA SHORT VOWEL MARK;Mn;0;NSM;;;;;N;;;;;
  111CD;SHARADA SUTRA MARK;Po;0;L;;;;;N;;;;;
+ 111CE;SHARADA VOWEL SIGN PRISHTHAMATRA E;Mc;0;L;;;;;N;;;;;
+ 111CF;SHARADA SIGN INVERTED CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
  111D0;SHARADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
  111D1;SHARADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
  111D2;SHARADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 19941,19950 ****
--- 20055,20067 ----
  11457;NEWA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
  11458;NEWA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
  11459;NEWA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+ 1145A;NEWA DOUBLE COMMA;Po;0;L;;;;;N;;;;;
  1145B;NEWA PLACEHOLDER MARK;Po;0;L;;;;;N;;;;;
  1145D;NEWA INSERTION SIGN;Po;0;L;;;;;N;;;;;
  1145E;NEWA SANDHI MARK;Mn;230;NSM;;;;;N;;;;;
  1145F;NEWA LETTER VEDIC ANUSVARA;Lo;0;L;;;;;N;;;;;
+ 11460;NEWA SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;;
+ 11461;NEWA SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;;
  11480;TIRHUTA ANJI;Lo;0;L;;;;;N;;;;;
  11481;TIRHUTA LETTER A;Lo;0;L;;;;;N;;;;;
  11482;TIRHUTA LETTER AA;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 20480,20485 ****
--- 20597,20674 ----
  118F1;WARANG CITI NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
  118F2;WARANG CITI NUMBER NINETY;No;0;L;;;;90;N;;;;;
  118FF;WARANG CITI OM;Lo;0;L;;;;;N;;;;;
+ 11900;DIVES AKURU LETTER A;Lo;0;L;;;;;N;;;;;
+ 11901;DIVES AKURU LETTER AA;Lo;0;L;;;;;N;;;;;
+ 11902;DIVES AKURU LETTER I;Lo;0;L;;;;;N;;;;;
+ 11903;DIVES AKURU LETTER II;Lo;0;L;;;;;N;;;;;
+ 11904;DIVES AKURU LETTER U;Lo;0;L;;;;;N;;;;;
+ 11905;DIVES AKURU LETTER UU;Lo;0;L;;;;;N;;;;;
+ 11906;DIVES AKURU LETTER E;Lo;0;L;;;;;N;;;;;
+ 11909;DIVES AKURU LETTER O;Lo;0;L;;;;;N;;;;;
+ 1190C;DIVES AKURU LETTER KA;Lo;0;L;;;;;N;;;;;
+ 1190D;DIVES AKURU LETTER KHA;Lo;0;L;;;;;N;;;;;
+ 1190E;DIVES AKURU LETTER GA;Lo;0;L;;;;;N;;;;;
+ 1190F;DIVES AKURU LETTER GHA;Lo;0;L;;;;;N;;;;;
+ 11910;DIVES AKURU LETTER NGA;Lo;0;L;;;;;N;;;;;
+ 11911;DIVES AKURU LETTER CA;Lo;0;L;;;;;N;;;;;
+ 11912;DIVES AKURU LETTER CHA;Lo;0;L;;;;;N;;;;;
+ 11913;DIVES AKURU LETTER JA;Lo;0;L;;;;;N;;;;;
+ 11915;DIVES AKURU LETTER NYA;Lo;0;L;;;;;N;;;;;
+ 11916;DIVES AKURU LETTER TTA;Lo;0;L;;;;;N;;;;;
+ 11918;DIVES AKURU LETTER DDA;Lo;0;L;;;;;N;;;;;
+ 11919;DIVES AKURU LETTER DDHA;Lo;0;L;;;;;N;;;;;
+ 1191A;DIVES AKURU LETTER NNA;Lo;0;L;;;;;N;;;;;
+ 1191B;DIVES AKURU LETTER TA;Lo;0;L;;;;;N;;;;;
+ 1191C;DIVES AKURU LETTER THA;Lo;0;L;;;;;N;;;;;
+ 1191D;DIVES AKURU LETTER DA;Lo;0;L;;;;;N;;;;;
+ 1191E;DIVES AKURU LETTER DHA;Lo;0;L;;;;;N;;;;;
+ 1191F;DIVES AKURU LETTER NA;Lo;0;L;;;;;N;;;;;
+ 11920;DIVES AKURU LETTER PA;Lo;0;L;;;;;N;;;;;
+ 11921;DIVES AKURU LETTER PHA;Lo;0;L;;;;;N;;;;;
+ 11922;DIVES AKURU LETTER BA;Lo;0;L;;;;;N;;;;;
+ 11923;DIVES AKURU LETTER BHA;Lo;0;L;;;;;N;;;;;
+ 11924;DIVES AKURU LETTER MA;Lo;0;L;;;;;N;;;;;
+ 11925;DIVES AKURU LETTER YA;Lo;0;L;;;;;N;;;;;
+ 11926;DIVES AKURU LETTER YYA;Lo;0;L;;;;;N;;;;;
+ 11927;DIVES AKURU LETTER RA;Lo;0;L;;;;;N;;;;;
+ 11928;DIVES AKURU LETTER LA;Lo;0;L;;;;;N;;;;;
+ 11929;DIVES AKURU LETTER VA;Lo;0;L;;;;;N;;;;;
+ 1192A;DIVES AKURU LETTER SHA;Lo;0;L;;;;;N;;;;;
+ 1192B;DIVES AKURU LETTER SSA;Lo;0;L;;;;;N;;;;;
+ 1192C;DIVES AKURU LETTER SA;Lo;0;L;;;;;N;;;;;
+ 1192D;DIVES AKURU LETTER HA;Lo;0;L;;;;;N;;;;;
+ 1192E;DIVES AKURU LETTER LLA;Lo;0;L;;;;;N;;;;;
+ 1192F;DIVES AKURU LETTER ZA;Lo;0;L;;;;;N;;;;;
+ 11930;DIVES AKURU VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+ 11931;DIVES AKURU VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+ 11932;DIVES AKURU VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+ 11933;DIVES AKURU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+ 11934;DIVES AKURU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+ 11935;DIVES AKURU VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+ 11937;DIVES AKURU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+ 11938;DIVES AKURU VOWEL SIGN O;Mc;0;L;11935 11930;;;;N;;;;;
+ 1193B;DIVES AKURU SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+ 1193C;DIVES AKURU SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+ 1193D;DIVES AKURU SIGN HALANTA;Mc;9;L;;;;;N;;;;;
+ 1193E;DIVES AKURU VIRAMA;Mn;9;NSM;;;;;N;;;;;
+ 1193F;DIVES AKURU PREFIXED NASAL SIGN;Lo;0;L;;;;;N;;;;;
+ 11940;DIVES AKURU MEDIAL YA;Mc;0;L;;;;;N;;;;;
+ 11941;DIVES AKURU INITIAL RA;Lo;0;L;;;;;N;;;;;
+ 11942;DIVES AKURU MEDIAL RA;Mc;0;L;;;;;N;;;;;
+ 11943;DIVES AKURU SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+ 11944;DIVES AKURU DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+ 11945;DIVES AKURU GAP FILLER;Po;0;L;;;;;N;;;;;
+ 11946;DIVES AKURU END OF TEXT MARK;Po;0;L;;;;;N;;;;;
+ 11950;DIVES AKURU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+ 11951;DIVES AKURU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+ 11952;DIVES AKURU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+ 11953;DIVES AKURU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+ 11954;DIVES AKURU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+ 11955;DIVES AKURU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+ 11956;DIVES AKURU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+ 11957;DIVES AKURU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+ 11958;DIVES AKURU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+ 11959;DIVES AKURU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
  119A0;NANDINAGARI LETTER A;Lo;0;L;;;;;N;;;;;
  119A1;NANDINAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
  119A2;NANDINAGARI LETTER I;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 21085,21090 ****
--- 21274,21280 ----
  11EF6;MAKASAR VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
  11EF7;MAKASAR PASSIMBANG;Po;0;L;;;;;N;;;;;
  11EF8;MAKASAR END OF SECTION;Po;0;L;;;;;N;;;;;
+ 11FB0;LISU LETTER YHA;Lo;0;L;;;;;N;;;;;
  11FC0;TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH;No;0;L;;;;1/320;N;;;;;
  11FC1;TAMIL FRACTION ONE ONE-HUNDRED-AND-SIXTIETH;No;0;L;;;;1/160;N;;;;;
  11FC2;TAMIL FRACTION ONE EIGHTIETH;No;0;L;;;;1/80;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 25052,25057 ****
--- 25242,25250 ----
  16FE1;NUSHU ITERATION MARK;Lm;0;L;;;;;N;;;;;
  16FE2;OLD CHINESE HOOK MARK;Po;0;ON;;;;;N;;;;;
  16FE3;OLD CHINESE ITERATION MARK;Lm;0;L;;;;;N;;;;;
+ 16FE4;KHITAN SMALL SCRIPT FILLER;Mn;0;NSM;;;;;N;;;;;
+ 16FF0;VIETNAMESE ALTERNATE READING MARK CA;Mc;6;L;;;;;N;;;;;
+ 16FF1;VIETNAMESE ALTERNATE READING MARK NHAY;Mc;6;L;;;;;N;;;;;
  17000;<Tangut Ideograph, First>;Lo;0;L;;;;;N;;;;;
  187F7;<Tangut Ideograph, Last>;Lo;0;L;;;;;N;;;;;
  18800;TANGUT COMPONENT-001;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 25809,25814 ****
--- 26002,26492 ----
  18AF0;TANGUT COMPONENT-753;Lo;0;L;;;;;N;;;;;
  18AF1;TANGUT COMPONENT-754;Lo;0;L;;;;;N;;;;;
  18AF2;TANGUT COMPONENT-755;Lo;0;L;;;;;N;;;;;
+ 18AF3;TANGUT COMPONENT-756;Lo;0;L;;;;;N;;;;;
+ 18AF4;TANGUT COMPONENT-757;Lo;0;L;;;;;N;;;;;
+ 18AF5;TANGUT COMPONENT-758;Lo;0;L;;;;;N;;;;;
+ 18AF6;TANGUT COMPONENT-759;Lo;0;L;;;;;N;;;;;
+ 18AF7;TANGUT COMPONENT-760;Lo;0;L;;;;;N;;;;;
+ 18AF8;TANGUT COMPONENT-761;Lo;0;L;;;;;N;;;;;
+ 18AF9;TANGUT COMPONENT-762;Lo;0;L;;;;;N;;;;;
+ 18AFA;TANGUT COMPONENT-763;Lo;0;L;;;;;N;;;;;
+ 18AFB;TANGUT COMPONENT-764;Lo;0;L;;;;;N;;;;;
+ 18AFC;TANGUT COMPONENT-765;Lo;0;L;;;;;N;;;;;
+ 18AFD;TANGUT COMPONENT-766;Lo;0;L;;;;;N;;;;;
+ 18AFE;TANGUT COMPONENT-767;Lo;0;L;;;;;N;;;;;
+ 18AFF;TANGUT COMPONENT-768;Lo;0;L;;;;;N;;;;;
+ 18B00;KHITAN SMALL SCRIPT CHARACTER-18B00;Lo;0;L;;;;;N;;;;;
+ 18B01;KHITAN SMALL SCRIPT CHARACTER-18B01;Lo;0;L;;;;;N;;;;;
+ 18B02;KHITAN SMALL SCRIPT CHARACTER-18B02;Lo;0;L;;;;;N;;;;;
+ 18B03;KHITAN SMALL SCRIPT CHARACTER-18B03;Lo;0;L;;;;;N;;;;;
+ 18B04;KHITAN SMALL SCRIPT CHARACTER-18B04;Lo;0;L;;;;;N;;;;;
+ 18B05;KHITAN SMALL SCRIPT CHARACTER-18B05;Lo;0;L;;;;;N;;;;;
+ 18B06;KHITAN SMALL SCRIPT CHARACTER-18B06;Lo;0;L;;;;;N;;;;;
+ 18B07;KHITAN SMALL SCRIPT CHARACTER-18B07;Lo;0;L;;;;;N;;;;;
+ 18B08;KHITAN SMALL SCRIPT CHARACTER-18B08;Lo;0;L;;;;;N;;;;;
+ 18B09;KHITAN SMALL SCRIPT CHARACTER-18B09;Lo;0;L;;;;;N;;;;;
+ 18B0A;KHITAN SMALL SCRIPT CHARACTER-18B0A;Lo;0;L;;;;;N;;;;;
+ 18B0B;KHITAN SMALL SCRIPT CHARACTER-18B0B;Lo;0;L;;;;;N;;;;;
+ 18B0C;KHITAN SMALL SCRIPT CHARACTER-18B0C;Lo;0;L;;;;;N;;;;;
+ 18B0D;KHITAN SMALL SCRIPT CHARACTER-18B0D;Lo;0;L;;;;;N;;;;;
+ 18B0E;KHITAN SMALL SCRIPT CHARACTER-18B0E;Lo;0;L;;;;;N;;;;;
+ 18B0F;KHITAN SMALL SCRIPT CHARACTER-18B0F;Lo;0;L;;;;;N;;;;;
+ 18B10;KHITAN SMALL SCRIPT CHARACTER-18B10;Lo;0;L;;;;;N;;;;;
+ 18B11;KHITAN SMALL SCRIPT CHARACTER-18B11;Lo;0;L;;;;;N;;;;;
+ 18B12;KHITAN SMALL SCRIPT CHARACTER-18B12;Lo;0;L;;;;;N;;;;;
+ 18B13;KHITAN SMALL SCRIPT CHARACTER-18B13;Lo;0;L;;;;;N;;;;;
+ 18B14;KHITAN SMALL SCRIPT CHARACTER-18B14;Lo;0;L;;;;;N;;;;;
+ 18B15;KHITAN SMALL SCRIPT CHARACTER-18B15;Lo;0;L;;;;;N;;;;;
+ 18B16;KHITAN SMALL SCRIPT CHARACTER-18B16;Lo;0;L;;;;;N;;;;;
+ 18B17;KHITAN SMALL SCRIPT CHARACTER-18B17;Lo;0;L;;;;;N;;;;;
+ 18B18;KHITAN SMALL SCRIPT CHARACTER-18B18;Lo;0;L;;;;;N;;;;;
+ 18B19;KHITAN SMALL SCRIPT CHARACTER-18B19;Lo;0;L;;;;;N;;;;;
+ 18B1A;KHITAN SMALL SCRIPT CHARACTER-18B1A;Lo;0;L;;;;;N;;;;;
+ 18B1B;KHITAN SMALL SCRIPT CHARACTER-18B1B;Lo;0;L;;;;;N;;;;;
+ 18B1C;KHITAN SMALL SCRIPT CHARACTER-18B1C;Lo;0;L;;;;;N;;;;;
+ 18B1D;KHITAN SMALL SCRIPT CHARACTER-18B1D;Lo;0;L;;;;;N;;;;;
+ 18B1E;KHITAN SMALL SCRIPT CHARACTER-18B1E;Lo;0;L;;;;;N;;;;;
+ 18B1F;KHITAN SMALL SCRIPT CHARACTER-18B1F;Lo;0;L;;;;;N;;;;;
+ 18B20;KHITAN SMALL SCRIPT CHARACTER-18B20;Lo;0;L;;;;;N;;;;;
+ 18B21;KHITAN SMALL SCRIPT CHARACTER-18B21;Lo;0;L;;;;;N;;;;;
+ 18B22;KHITAN SMALL SCRIPT CHARACTER-18B22;Lo;0;L;;;;;N;;;;;
+ 18B23;KHITAN SMALL SCRIPT CHARACTER-18B23;Lo;0;L;;;;;N;;;;;
+ 18B24;KHITAN SMALL SCRIPT CHARACTER-18B24;Lo;0;L;;;;;N;;;;;
+ 18B25;KHITAN SMALL SCRIPT CHARACTER-18B25;Lo;0;L;;;;;N;;;;;
+ 18B26;KHITAN SMALL SCRIPT CHARACTER-18B26;Lo;0;L;;;;;N;;;;;
+ 18B27;KHITAN SMALL SCRIPT CHARACTER-18B27;Lo;0;L;;;;;N;;;;;
+ 18B28;KHITAN SMALL SCRIPT CHARACTER-18B28;Lo;0;L;;;;;N;;;;;
+ 18B29;KHITAN SMALL SCRIPT CHARACTER-18B29;Lo;0;L;;;;;N;;;;;
+ 18B2A;KHITAN SMALL SCRIPT CHARACTER-18B2A;Lo;0;L;;;;;N;;;;;
+ 18B2B;KHITAN SMALL SCRIPT CHARACTER-18B2B;Lo;0;L;;;;;N;;;;;
+ 18B2C;KHITAN SMALL SCRIPT CHARACTER-18B2C;Lo;0;L;;;;;N;;;;;
+ 18B2D;KHITAN SMALL SCRIPT CHARACTER-18B2D;Lo;0;L;;;;;N;;;;;
+ 18B2E;KHITAN SMALL SCRIPT CHARACTER-18B2E;Lo;0;L;;;;;N;;;;;
+ 18B2F;KHITAN SMALL SCRIPT CHARACTER-18B2F;Lo;0;L;;;;;N;;;;;
+ 18B30;KHITAN SMALL SCRIPT CHARACTER-18B30;Lo;0;L;;;;;N;;;;;
+ 18B31;KHITAN SMALL SCRIPT CHARACTER-18B31;Lo;0;L;;;;;N;;;;;
+ 18B32;KHITAN SMALL SCRIPT CHARACTER-18B32;Lo;0;L;;;;;N;;;;;
+ 18B33;KHITAN SMALL SCRIPT CHARACTER-18B33;Lo;0;L;;;;;N;;;;;
+ 18B34;KHITAN SMALL SCRIPT CHARACTER-18B34;Lo;0;L;;;;;N;;;;;
+ 18B35;KHITAN SMALL SCRIPT CHARACTER-18B35;Lo;0;L;;;;;N;;;;;
+ 18B36;KHITAN SMALL SCRIPT CHARACTER-18B36;Lo;0;L;;;;;N;;;;;
+ 18B37;KHITAN SMALL SCRIPT CHARACTER-18B37;Lo;0;L;;;;;N;;;;;
+ 18B38;KHITAN SMALL SCRIPT CHARACTER-18B38;Lo;0;L;;;;;N;;;;;
+ 18B39;KHITAN SMALL SCRIPT CHARACTER-18B39;Lo;0;L;;;;;N;;;;;
+ 18B3A;KHITAN SMALL SCRIPT CHARACTER-18B3A;Lo;0;L;;;;;N;;;;;
+ 18B3B;KHITAN SMALL SCRIPT CHARACTER-18B3B;Lo;0;L;;;;;N;;;;;
+ 18B3C;KHITAN SMALL SCRIPT CHARACTER-18B3C;Lo;0;L;;;;;N;;;;;
+ 18B3D;KHITAN SMALL SCRIPT CHARACTER-18B3D;Lo;0;L;;;;;N;;;;;
+ 18B3E;KHITAN SMALL SCRIPT CHARACTER-18B3E;Lo;0;L;;;;;N;;;;;
+ 18B3F;KHITAN SMALL SCRIPT CHARACTER-18B3F;Lo;0;L;;;;;N;;;;;
+ 18B40;KHITAN SMALL SCRIPT CHARACTER-18B40;Lo;0;L;;;;;N;;;;;
+ 18B41;KHITAN SMALL SCRIPT CHARACTER-18B41;Lo;0;L;;;;;N;;;;;
+ 18B42;KHITAN SMALL SCRIPT CHARACTER-18B42;Lo;0;L;;;;;N;;;;;
+ 18B43;KHITAN SMALL SCRIPT CHARACTER-18B43;Lo;0;L;;;;;N;;;;;
+ 18B44;KHITAN SMALL SCRIPT CHARACTER-18B44;Lo;0;L;;;;;N;;;;;
+ 18B45;KHITAN SMALL SCRIPT CHARACTER-18B45;Lo;0;L;;;;;N;;;;;
+ 18B46;KHITAN SMALL SCRIPT CHARACTER-18B46;Lo;0;L;;;;;N;;;;;
+ 18B47;KHITAN SMALL SCRIPT CHARACTER-18B47;Lo;0;L;;;;;N;;;;;
+ 18B48;KHITAN SMALL SCRIPT CHARACTER-18B48;Lo;0;L;;;;;N;;;;;
+ 18B49;KHITAN SMALL SCRIPT CHARACTER-18B49;Lo;0;L;;;;;N;;;;;
+ 18B4A;KHITAN SMALL SCRIPT CHARACTER-18B4A;Lo;0;L;;;;;N;;;;;
+ 18B4B;KHITAN SMALL SCRIPT CHARACTER-18B4B;Lo;0;L;;;;;N;;;;;
+ 18B4C;KHITAN SMALL SCRIPT CHARACTER-18B4C;Lo;0;L;;;;;N;;;;;
+ 18B4D;KHITAN SMALL SCRIPT CHARACTER-18B4D;Lo;0;L;;;;;N;;;;;
+ 18B4E;KHITAN SMALL SCRIPT CHARACTER-18B4E;Lo;0;L;;;;;N;;;;;
+ 18B4F;KHITAN SMALL SCRIPT CHARACTER-18B4F;Lo;0;L;;;;;N;;;;;
+ 18B50;KHITAN SMALL SCRIPT CHARACTER-18B50;Lo;0;L;;;;;N;;;;;
+ 18B51;KHITAN SMALL SCRIPT CHARACTER-18B51;Lo;0;L;;;;;N;;;;;
+ 18B52;KHITAN SMALL SCRIPT CHARACTER-18B52;Lo;0;L;;;;;N;;;;;
+ 18B53;KHITAN SMALL SCRIPT CHARACTER-18B53;Lo;0;L;;;;;N;;;;;
+ 18B54;KHITAN SMALL SCRIPT CHARACTER-18B54;Lo;0;L;;;;;N;;;;;
+ 18B55;KHITAN SMALL SCRIPT CHARACTER-18B55;Lo;0;L;;;;;N;;;;;
+ 18B56;KHITAN SMALL SCRIPT CHARACTER-18B56;Lo;0;L;;;;;N;;;;;
+ 18B57;KHITAN SMALL SCRIPT CHARACTER-18B57;Lo;0;L;;;;;N;;;;;
+ 18B58;KHITAN SMALL SCRIPT CHARACTER-18B58;Lo;0;L;;;;;N;;;;;
+ 18B59;KHITAN SMALL SCRIPT CHARACTER-18B59;Lo;0;L;;;;;N;;;;;
+ 18B5A;KHITAN SMALL SCRIPT CHARACTER-18B5A;Lo;0;L;;;;;N;;;;;
+ 18B5B;KHITAN SMALL SCRIPT CHARACTER-18B5B;Lo;0;L;;;;;N;;;;;
+ 18B5C;KHITAN SMALL SCRIPT CHARACTER-18B5C;Lo;0;L;;;;;N;;;;;
+ 18B5D;KHITAN SMALL SCRIPT CHARACTER-18B5D;Lo;0;L;;;;;N;;;;;
+ 18B5E;KHITAN SMALL SCRIPT CHARACTER-18B5E;Lo;0;L;;;;;N;;;;;
+ 18B5F;KHITAN SMALL SCRIPT CHARACTER-18B5F;Lo;0;L;;;;;N;;;;;
+ 18B60;KHITAN SMALL SCRIPT CHARACTER-18B60;Lo;0;L;;;;;N;;;;;
+ 18B61;KHITAN SMALL SCRIPT CHARACTER-18B61;Lo;0;L;;;;;N;;;;;
+ 18B62;KHITAN SMALL SCRIPT CHARACTER-18B62;Lo;0;L;;;;;N;;;;;
+ 18B63;KHITAN SMALL SCRIPT CHARACTER-18B63;Lo;0;L;;;;;N;;;;;
+ 18B64;KHITAN SMALL SCRIPT CHARACTER-18B64;Lo;0;L;;;;;N;;;;;
+ 18B65;KHITAN SMALL SCRIPT CHARACTER-18B65;Lo;0;L;;;;;N;;;;;
+ 18B66;KHITAN SMALL SCRIPT CHARACTER-18B66;Lo;0;L;;;;;N;;;;;
+ 18B67;KHITAN SMALL SCRIPT CHARACTER-18B67;Lo;0;L;;;;;N;;;;;
+ 18B68;KHITAN SMALL SCRIPT CHARACTER-18B68;Lo;0;L;;;;;N;;;;;
+ 18B69;KHITAN SMALL SCRIPT CHARACTER-18B69;Lo;0;L;;;;;N;;;;;
+ 18B6A;KHITAN SMALL SCRIPT CHARACTER-18B6A;Lo;0;L;;;;;N;;;;;
+ 18B6B;KHITAN SMALL SCRIPT CHARACTER-18B6B;Lo;0;L;;;;;N;;;;;
+ 18B6C;KHITAN SMALL SCRIPT CHARACTER-18B6C;Lo;0;L;;;;;N;;;;;
+ 18B6D;KHITAN SMALL SCRIPT CHARACTER-18B6D;Lo;0;L;;;;;N;;;;;
+ 18B6E;KHITAN SMALL SCRIPT CHARACTER-18B6E;Lo;0;L;;;;;N;;;;;
+ 18B6F;KHITAN SMALL SCRIPT CHARACTER-18B6F;Lo;0;L;;;;;N;;;;;
+ 18B70;KHITAN SMALL SCRIPT CHARACTER-18B70;Lo;0;L;;;;;N;;;;;
+ 18B71;KHITAN SMALL SCRIPT CHARACTER-18B71;Lo;0;L;;;;;N;;;;;
+ 18B72;KHITAN SMALL SCRIPT CHARACTER-18B72;Lo;0;L;;;;;N;;;;;
+ 18B73;KHITAN SMALL SCRIPT CHARACTER-18B73;Lo;0;L;;;;;N;;;;;
+ 18B74;KHITAN SMALL SCRIPT CHARACTER-18B74;Lo;0;L;;;;;N;;;;;
+ 18B75;KHITAN SMALL SCRIPT CHARACTER-18B75;Lo;0;L;;;;;N;;;;;
+ 18B76;KHITAN SMALL SCRIPT CHARACTER-18B76;Lo;0;L;;;;;N;;;;;
+ 18B77;KHITAN SMALL SCRIPT CHARACTER-18B77;Lo;0;L;;;;;N;;;;;
+ 18B78;KHITAN SMALL SCRIPT CHARACTER-18B78;Lo;0;L;;;;;N;;;;;
+ 18B79;KHITAN SMALL SCRIPT CHARACTER-18B79;Lo;0;L;;;;;N;;;;;
+ 18B7A;KHITAN SMALL SCRIPT CHARACTER-18B7A;Lo;0;L;;;;;N;;;;;
+ 18B7B;KHITAN SMALL SCRIPT CHARACTER-18B7B;Lo;0;L;;;;;N;;;;;
+ 18B7C;KHITAN SMALL SCRIPT CHARACTER-18B7C;Lo;0;L;;;;;N;;;;;
+ 18B7D;KHITAN SMALL SCRIPT CHARACTER-18B7D;Lo;0;L;;;;;N;;;;;
+ 18B7E;KHITAN SMALL SCRIPT CHARACTER-18B7E;Lo;0;L;;;;;N;;;;;
+ 18B7F;KHITAN SMALL SCRIPT CHARACTER-18B7F;Lo;0;L;;;;;N;;;;;
+ 18B80;KHITAN SMALL SCRIPT CHARACTER-18B80;Lo;0;L;;;;;N;;;;;
+ 18B81;KHITAN SMALL SCRIPT CHARACTER-18B81;Lo;0;L;;;;;N;;;;;
+ 18B82;KHITAN SMALL SCRIPT CHARACTER-18B82;Lo;0;L;;;;;N;;;;;
+ 18B83;KHITAN SMALL SCRIPT CHARACTER-18B83;Lo;0;L;;;;;N;;;;;
+ 18B84;KHITAN SMALL SCRIPT CHARACTER-18B84;Lo;0;L;;;;;N;;;;;
+ 18B85;KHITAN SMALL SCRIPT CHARACTER-18B85;Lo;0;L;;;;;N;;;;;
+ 18B86;KHITAN SMALL SCRIPT CHARACTER-18B86;Lo;0;L;;;;;N;;;;;
+ 18B87;KHITAN SMALL SCRIPT CHARACTER-18B87;Lo;0;L;;;;;N;;;;;
+ 18B88;KHITAN SMALL SCRIPT CHARACTER-18B88;Lo;0;L;;;;;N;;;;;
+ 18B89;KHITAN SMALL SCRIPT CHARACTER-18B89;Lo;0;L;;;;;N;;;;;
+ 18B8A;KHITAN SMALL SCRIPT CHARACTER-18B8A;Lo;0;L;;;;;N;;;;;
+ 18B8B;KHITAN SMALL SCRIPT CHARACTER-18B8B;Lo;0;L;;;;;N;;;;;
+ 18B8C;KHITAN SMALL SCRIPT CHARACTER-18B8C;Lo;0;L;;;;;N;;;;;
+ 18B8D;KHITAN SMALL SCRIPT CHARACTER-18B8D;Lo;0;L;;;;;N;;;;;
+ 18B8E;KHITAN SMALL SCRIPT CHARACTER-18B8E;Lo;0;L;;;;;N;;;;;
+ 18B8F;KHITAN SMALL SCRIPT CHARACTER-18B8F;Lo;0;L;;;;;N;;;;;
+ 18B90;KHITAN SMALL SCRIPT CHARACTER-18B90;Lo;0;L;;;;;N;;;;;
+ 18B91;KHITAN SMALL SCRIPT CHARACTER-18B91;Lo;0;L;;;;;N;;;;;
+ 18B92;KHITAN SMALL SCRIPT CHARACTER-18B92;Lo;0;L;;;;;N;;;;;
+ 18B93;KHITAN SMALL SCRIPT CHARACTER-18B93;Lo;0;L;;;;;N;;;;;
+ 18B94;KHITAN SMALL SCRIPT CHARACTER-18B94;Lo;0;L;;;;;N;;;;;
+ 18B95;KHITAN SMALL SCRIPT CHARACTER-18B95;Lo;0;L;;;;;N;;;;;
+ 18B96;KHITAN SMALL SCRIPT CHARACTER-18B96;Lo;0;L;;;;;N;;;;;
+ 18B97;KHITAN SMALL SCRIPT CHARACTER-18B97;Lo;0;L;;;;;N;;;;;
+ 18B98;KHITAN SMALL SCRIPT CHARACTER-18B98;Lo;0;L;;;;;N;;;;;
+ 18B99;KHITAN SMALL SCRIPT CHARACTER-18B99;Lo;0;L;;;;;N;;;;;
+ 18B9A;KHITAN SMALL SCRIPT CHARACTER-18B9A;Lo;0;L;;;;;N;;;;;
+ 18B9B;KHITAN SMALL SCRIPT CHARACTER-18B9B;Lo;0;L;;;;;N;;;;;
+ 18B9C;KHITAN SMALL SCRIPT CHARACTER-18B9C;Lo;0;L;;;;;N;;;;;
+ 18B9D;KHITAN SMALL SCRIPT CHARACTER-18B9D;Lo;0;L;;;;;N;;;;;
+ 18B9E;KHITAN SMALL SCRIPT CHARACTER-18B9E;Lo;0;L;;;;;N;;;;;
+ 18B9F;KHITAN SMALL SCRIPT CHARACTER-18B9F;Lo;0;L;;;;;N;;;;;
+ 18BA0;KHITAN SMALL SCRIPT CHARACTER-18BA0;Lo;0;L;;;;;N;;;;;
+ 18BA1;KHITAN SMALL SCRIPT CHARACTER-18BA1;Lo;0;L;;;;;N;;;;;
+ 18BA2;KHITAN SMALL SCRIPT CHARACTER-18BA2;Lo;0;L;;;;;N;;;;;
+ 18BA3;KHITAN SMALL SCRIPT CHARACTER-18BA3;Lo;0;L;;;;;N;;;;;
+ 18BA4;KHITAN SMALL SCRIPT CHARACTER-18BA4;Lo;0;L;;;;;N;;;;;
+ 18BA5;KHITAN SMALL SCRIPT CHARACTER-18BA5;Lo;0;L;;;;;N;;;;;
+ 18BA6;KHITAN SMALL SCRIPT CHARACTER-18BA6;Lo;0;L;;;;;N;;;;;
+ 18BA7;KHITAN SMALL SCRIPT CHARACTER-18BA7;Lo;0;L;;;;;N;;;;;
+ 18BA8;KHITAN SMALL SCRIPT CHARACTER-18BA8;Lo;0;L;;;;;N;;;;;
+ 18BA9;KHITAN SMALL SCRIPT CHARACTER-18BA9;Lo;0;L;;;;;N;;;;;
+ 18BAA;KHITAN SMALL SCRIPT CHARACTER-18BAA;Lo;0;L;;;;;N;;;;;
+ 18BAB;KHITAN SMALL SCRIPT CHARACTER-18BAB;Lo;0;L;;;;;N;;;;;
+ 18BAC;KHITAN SMALL SCRIPT CHARACTER-18BAC;Lo;0;L;;;;;N;;;;;
+ 18BAD;KHITAN SMALL SCRIPT CHARACTER-18BAD;Lo;0;L;;;;;N;;;;;
+ 18BAE;KHITAN SMALL SCRIPT CHARACTER-18BAE;Lo;0;L;;;;;N;;;;;
+ 18BAF;KHITAN SMALL SCRIPT CHARACTER-18BAF;Lo;0;L;;;;;N;;;;;
+ 18BB0;KHITAN SMALL SCRIPT CHARACTER-18BB0;Lo;0;L;;;;;N;;;;;
+ 18BB1;KHITAN SMALL SCRIPT CHARACTER-18BB1;Lo;0;L;;;;;N;;;;;
+ 18BB2;KHITAN SMALL SCRIPT CHARACTER-18BB2;Lo;0;L;;;;;N;;;;;
+ 18BB3;KHITAN SMALL SCRIPT CHARACTER-18BB3;Lo;0;L;;;;;N;;;;;
+ 18BB4;KHITAN SMALL SCRIPT CHARACTER-18BB4;Lo;0;L;;;;;N;;;;;
+ 18BB5;KHITAN SMALL SCRIPT CHARACTER-18BB5;Lo;0;L;;;;;N;;;;;
+ 18BB6;KHITAN SMALL SCRIPT CHARACTER-18BB6;Lo;0;L;;;;;N;;;;;
+ 18BB7;KHITAN SMALL SCRIPT CHARACTER-18BB7;Lo;0;L;;;;;N;;;;;
+ 18BB8;KHITAN SMALL SCRIPT CHARACTER-18BB8;Lo;0;L;;;;;N;;;;;
+ 18BB9;KHITAN SMALL SCRIPT CHARACTER-18BB9;Lo;0;L;;;;;N;;;;;
+ 18BBA;KHITAN SMALL SCRIPT CHARACTER-18BBA;Lo;0;L;;;;;N;;;;;
+ 18BBB;KHITAN SMALL SCRIPT CHARACTER-18BBB;Lo;0;L;;;;;N;;;;;
+ 18BBC;KHITAN SMALL SCRIPT CHARACTER-18BBC;Lo;0;L;;;;;N;;;;;
+ 18BBD;KHITAN SMALL SCRIPT CHARACTER-18BBD;Lo;0;L;;;;;N;;;;;
+ 18BBE;KHITAN SMALL SCRIPT CHARACTER-18BBE;Lo;0;L;;;;;N;;;;;
+ 18BBF;KHITAN SMALL SCRIPT CHARACTER-18BBF;Lo;0;L;;;;;N;;;;;
+ 18BC0;KHITAN SMALL SCRIPT CHARACTER-18BC0;Lo;0;L;;;;;N;;;;;
+ 18BC1;KHITAN SMALL SCRIPT CHARACTER-18BC1;Lo;0;L;;;;;N;;;;;
+ 18BC2;KHITAN SMALL SCRIPT CHARACTER-18BC2;Lo;0;L;;;;;N;;;;;
+ 18BC3;KHITAN SMALL SCRIPT CHARACTER-18BC3;Lo;0;L;;;;;N;;;;;
+ 18BC4;KHITAN SMALL SCRIPT CHARACTER-18BC4;Lo;0;L;;;;;N;;;;;
+ 18BC5;KHITAN SMALL SCRIPT CHARACTER-18BC5;Lo;0;L;;;;;N;;;;;
+ 18BC6;KHITAN SMALL SCRIPT CHARACTER-18BC6;Lo;0;L;;;;;N;;;;;
+ 18BC7;KHITAN SMALL SCRIPT CHARACTER-18BC7;Lo;0;L;;;;;N;;;;;
+ 18BC8;KHITAN SMALL SCRIPT CHARACTER-18BC8;Lo;0;L;;;;;N;;;;;
+ 18BC9;KHITAN SMALL SCRIPT CHARACTER-18BC9;Lo;0;L;;;;;N;;;;;
+ 18BCA;KHITAN SMALL SCRIPT CHARACTER-18BCA;Lo;0;L;;;;;N;;;;;
+ 18BCB;KHITAN SMALL SCRIPT CHARACTER-18BCB;Lo;0;L;;;;;N;;;;;
+ 18BCC;KHITAN SMALL SCRIPT CHARACTER-18BCC;Lo;0;L;;;;;N;;;;;
+ 18BCD;KHITAN SMALL SCRIPT CHARACTER-18BCD;Lo;0;L;;;;;N;;;;;
+ 18BCE;KHITAN SMALL SCRIPT CHARACTER-18BCE;Lo;0;L;;;;;N;;;;;
+ 18BCF;KHITAN SMALL SCRIPT CHARACTER-18BCF;Lo;0;L;;;;;N;;;;;
+ 18BD0;KHITAN SMALL SCRIPT CHARACTER-18BD0;Lo;0;L;;;;;N;;;;;
+ 18BD1;KHITAN SMALL SCRIPT CHARACTER-18BD1;Lo;0;L;;;;;N;;;;;
+ 18BD2;KHITAN SMALL SCRIPT CHARACTER-18BD2;Lo;0;L;;;;;N;;;;;
+ 18BD3;KHITAN SMALL SCRIPT CHARACTER-18BD3;Lo;0;L;;;;;N;;;;;
+ 18BD4;KHITAN SMALL SCRIPT CHARACTER-18BD4;Lo;0;L;;;;;N;;;;;
+ 18BD5;KHITAN SMALL SCRIPT CHARACTER-18BD5;Lo;0;L;;;;;N;;;;;
+ 18BD6;KHITAN SMALL SCRIPT CHARACTER-18BD6;Lo;0;L;;;;;N;;;;;
+ 18BD7;KHITAN SMALL SCRIPT CHARACTER-18BD7;Lo;0;L;;;;;N;;;;;
+ 18BD8;KHITAN SMALL SCRIPT CHARACTER-18BD8;Lo;0;L;;;;;N;;;;;
+ 18BD9;KHITAN SMALL SCRIPT CHARACTER-18BD9;Lo;0;L;;;;;N;;;;;
+ 18BDA;KHITAN SMALL SCRIPT CHARACTER-18BDA;Lo;0;L;;;;;N;;;;;
+ 18BDB;KHITAN SMALL SCRIPT CHARACTER-18BDB;Lo;0;L;;;;;N;;;;;
+ 18BDC;KHITAN SMALL SCRIPT CHARACTER-18BDC;Lo;0;L;;;;;N;;;;;
+ 18BDD;KHITAN SMALL SCRIPT CHARACTER-18BDD;Lo;0;L;;;;;N;;;;;
+ 18BDE;KHITAN SMALL SCRIPT CHARACTER-18BDE;Lo;0;L;;;;;N;;;;;
+ 18BDF;KHITAN SMALL SCRIPT CHARACTER-18BDF;Lo;0;L;;;;;N;;;;;
+ 18BE0;KHITAN SMALL SCRIPT CHARACTER-18BE0;Lo;0;L;;;;;N;;;;;
+ 18BE1;KHITAN SMALL SCRIPT CHARACTER-18BE1;Lo;0;L;;;;;N;;;;;
+ 18BE2;KHITAN SMALL SCRIPT CHARACTER-18BE2;Lo;0;L;;;;;N;;;;;
+ 18BE3;KHITAN SMALL SCRIPT CHARACTER-18BE3;Lo;0;L;;;;;N;;;;;
+ 18BE4;KHITAN SMALL SCRIPT CHARACTER-18BE4;Lo;0;L;;;;;N;;;;;
+ 18BE5;KHITAN SMALL SCRIPT CHARACTER-18BE5;Lo;0;L;;;;;N;;;;;
+ 18BE6;KHITAN SMALL SCRIPT CHARACTER-18BE6;Lo;0;L;;;;;N;;;;;
+ 18BE7;KHITAN SMALL SCRIPT CHARACTER-18BE7;Lo;0;L;;;;;N;;;;;
+ 18BE8;KHITAN SMALL SCRIPT CHARACTER-18BE8;Lo;0;L;;;;;N;;;;;
+ 18BE9;KHITAN SMALL SCRIPT CHARACTER-18BE9;Lo;0;L;;;;;N;;;;;
+ 18BEA;KHITAN SMALL SCRIPT CHARACTER-18BEA;Lo;0;L;;;;;N;;;;;
+ 18BEB;KHITAN SMALL SCRIPT CHARACTER-18BEB;Lo;0;L;;;;;N;;;;;
+ 18BEC;KHITAN SMALL SCRIPT CHARACTER-18BEC;Lo;0;L;;;;;N;;;;;
+ 18BED;KHITAN SMALL SCRIPT CHARACTER-18BED;Lo;0;L;;;;;N;;;;;
+ 18BEE;KHITAN SMALL SCRIPT CHARACTER-18BEE;Lo;0;L;;;;;N;;;;;
+ 18BEF;KHITAN SMALL SCRIPT CHARACTER-18BEF;Lo;0;L;;;;;N;;;;;
+ 18BF0;KHITAN SMALL SCRIPT CHARACTER-18BF0;Lo;0;L;;;;;N;;;;;
+ 18BF1;KHITAN SMALL SCRIPT CHARACTER-18BF1;Lo;0;L;;;;;N;;;;;
+ 18BF2;KHITAN SMALL SCRIPT CHARACTER-18BF2;Lo;0;L;;;;;N;;;;;
+ 18BF3;KHITAN SMALL SCRIPT CHARACTER-18BF3;Lo;0;L;;;;;N;;;;;
+ 18BF4;KHITAN SMALL SCRIPT CHARACTER-18BF4;Lo;0;L;;;;;N;;;;;
+ 18BF5;KHITAN SMALL SCRIPT CHARACTER-18BF5;Lo;0;L;;;;;N;;;;;
+ 18BF6;KHITAN SMALL SCRIPT CHARACTER-18BF6;Lo;0;L;;;;;N;;;;;
+ 18BF7;KHITAN SMALL SCRIPT CHARACTER-18BF7;Lo;0;L;;;;;N;;;;;
+ 18BF8;KHITAN SMALL SCRIPT CHARACTER-18BF8;Lo;0;L;;;;;N;;;;;
+ 18BF9;KHITAN SMALL SCRIPT CHARACTER-18BF9;Lo;0;L;;;;;N;;;;;
+ 18BFA;KHITAN SMALL SCRIPT CHARACTER-18BFA;Lo;0;L;;;;;N;;;;;
+ 18BFB;KHITAN SMALL SCRIPT CHARACTER-18BFB;Lo;0;L;;;;;N;;;;;
+ 18BFC;KHITAN SMALL SCRIPT CHARACTER-18BFC;Lo;0;L;;;;;N;;;;;
+ 18BFD;KHITAN SMALL SCRIPT CHARACTER-18BFD;Lo;0;L;;;;;N;;;;;
+ 18BFE;KHITAN SMALL SCRIPT CHARACTER-18BFE;Lo;0;L;;;;;N;;;;;
+ 18BFF;KHITAN SMALL SCRIPT CHARACTER-18BFF;Lo;0;L;;;;;N;;;;;
+ 18C00;KHITAN SMALL SCRIPT CHARACTER-18C00;Lo;0;L;;;;;N;;;;;
+ 18C01;KHITAN SMALL SCRIPT CHARACTER-18C01;Lo;0;L;;;;;N;;;;;
+ 18C02;KHITAN SMALL SCRIPT CHARACTER-18C02;Lo;0;L;;;;;N;;;;;
+ 18C03;KHITAN SMALL SCRIPT CHARACTER-18C03;Lo;0;L;;;;;N;;;;;
+ 18C04;KHITAN SMALL SCRIPT CHARACTER-18C04;Lo;0;L;;;;;N;;;;;
+ 18C05;KHITAN SMALL SCRIPT CHARACTER-18C05;Lo;0;L;;;;;N;;;;;
+ 18C06;KHITAN SMALL SCRIPT CHARACTER-18C06;Lo;0;L;;;;;N;;;;;
+ 18C07;KHITAN SMALL SCRIPT CHARACTER-18C07;Lo;0;L;;;;;N;;;;;
+ 18C08;KHITAN SMALL SCRIPT CHARACTER-18C08;Lo;0;L;;;;;N;;;;;
+ 18C09;KHITAN SMALL SCRIPT CHARACTER-18C09;Lo;0;L;;;;;N;;;;;
+ 18C0A;KHITAN SMALL SCRIPT CHARACTER-18C0A;Lo;0;L;;;;;N;;;;;
+ 18C0B;KHITAN SMALL SCRIPT CHARACTER-18C0B;Lo;0;L;;;;;N;;;;;
+ 18C0C;KHITAN SMALL SCRIPT CHARACTER-18C0C;Lo;0;L;;;;;N;;;;;
+ 18C0D;KHITAN SMALL SCRIPT CHARACTER-18C0D;Lo;0;L;;;;;N;;;;;
+ 18C0E;KHITAN SMALL SCRIPT CHARACTER-18C0E;Lo;0;L;;;;;N;;;;;
+ 18C0F;KHITAN SMALL SCRIPT CHARACTER-18C0F;Lo;0;L;;;;;N;;;;;
+ 18C10;KHITAN SMALL SCRIPT CHARACTER-18C10;Lo;0;L;;;;;N;;;;;
+ 18C11;KHITAN SMALL SCRIPT CHARACTER-18C11;Lo;0;L;;;;;N;;;;;
+ 18C12;KHITAN SMALL SCRIPT CHARACTER-18C12;Lo;0;L;;;;;N;;;;;
+ 18C13;KHITAN SMALL SCRIPT CHARACTER-18C13;Lo;0;L;;;;;N;;;;;
+ 18C14;KHITAN SMALL SCRIPT CHARACTER-18C14;Lo;0;L;;;;;N;;;;;
+ 18C15;KHITAN SMALL SCRIPT CHARACTER-18C15;Lo;0;L;;;;;N;;;;;
+ 18C16;KHITAN SMALL SCRIPT CHARACTER-18C16;Lo;0;L;;;;;N;;;;;
+ 18C17;KHITAN SMALL SCRIPT CHARACTER-18C17;Lo;0;L;;;;;N;;;;;
+ 18C18;KHITAN SMALL SCRIPT CHARACTER-18C18;Lo;0;L;;;;;N;;;;;
+ 18C19;KHITAN SMALL SCRIPT CHARACTER-18C19;Lo;0;L;;;;;N;;;;;
+ 18C1A;KHITAN SMALL SCRIPT CHARACTER-18C1A;Lo;0;L;;;;;N;;;;;
+ 18C1B;KHITAN SMALL SCRIPT CHARACTER-18C1B;Lo;0;L;;;;;N;;;;;
+ 18C1C;KHITAN SMALL SCRIPT CHARACTER-18C1C;Lo;0;L;;;;;N;;;;;
+ 18C1D;KHITAN SMALL SCRIPT CHARACTER-18C1D;Lo;0;L;;;;;N;;;;;
+ 18C1E;KHITAN SMALL SCRIPT CHARACTER-18C1E;Lo;0;L;;;;;N;;;;;
+ 18C1F;KHITAN SMALL SCRIPT CHARACTER-18C1F;Lo;0;L;;;;;N;;;;;
+ 18C20;KHITAN SMALL SCRIPT CHARACTER-18C20;Lo;0;L;;;;;N;;;;;
+ 18C21;KHITAN SMALL SCRIPT CHARACTER-18C21;Lo;0;L;;;;;N;;;;;
+ 18C22;KHITAN SMALL SCRIPT CHARACTER-18C22;Lo;0;L;;;;;N;;;;;
+ 18C23;KHITAN SMALL SCRIPT CHARACTER-18C23;Lo;0;L;;;;;N;;;;;
+ 18C24;KHITAN SMALL SCRIPT CHARACTER-18C24;Lo;0;L;;;;;N;;;;;
+ 18C25;KHITAN SMALL SCRIPT CHARACTER-18C25;Lo;0;L;;;;;N;;;;;
+ 18C26;KHITAN SMALL SCRIPT CHARACTER-18C26;Lo;0;L;;;;;N;;;;;
+ 18C27;KHITAN SMALL SCRIPT CHARACTER-18C27;Lo;0;L;;;;;N;;;;;
+ 18C28;KHITAN SMALL SCRIPT CHARACTER-18C28;Lo;0;L;;;;;N;;;;;
+ 18C29;KHITAN SMALL SCRIPT CHARACTER-18C29;Lo;0;L;;;;;N;;;;;
+ 18C2A;KHITAN SMALL SCRIPT CHARACTER-18C2A;Lo;0;L;;;;;N;;;;;
+ 18C2B;KHITAN SMALL SCRIPT CHARACTER-18C2B;Lo;0;L;;;;;N;;;;;
+ 18C2C;KHITAN SMALL SCRIPT CHARACTER-18C2C;Lo;0;L;;;;;N;;;;;
+ 18C2D;KHITAN SMALL SCRIPT CHARACTER-18C2D;Lo;0;L;;;;;N;;;;;
+ 18C2E;KHITAN SMALL SCRIPT CHARACTER-18C2E;Lo;0;L;;;;;N;;;;;
+ 18C2F;KHITAN SMALL SCRIPT CHARACTER-18C2F;Lo;0;L;;;;;N;;;;;
+ 18C30;KHITAN SMALL SCRIPT CHARACTER-18C30;Lo;0;L;;;;;N;;;;;
+ 18C31;KHITAN SMALL SCRIPT CHARACTER-18C31;Lo;0;L;;;;;N;;;;;
+ 18C32;KHITAN SMALL SCRIPT CHARACTER-18C32;Lo;0;L;;;;;N;;;;;
+ 18C33;KHITAN SMALL SCRIPT CHARACTER-18C33;Lo;0;L;;;;;N;;;;;
+ 18C34;KHITAN SMALL SCRIPT CHARACTER-18C34;Lo;0;L;;;;;N;;;;;
+ 18C35;KHITAN SMALL SCRIPT CHARACTER-18C35;Lo;0;L;;;;;N;;;;;
+ 18C36;KHITAN SMALL SCRIPT CHARACTER-18C36;Lo;0;L;;;;;N;;;;;
+ 18C37;KHITAN SMALL SCRIPT CHARACTER-18C37;Lo;0;L;;;;;N;;;;;
+ 18C38;KHITAN SMALL SCRIPT CHARACTER-18C38;Lo;0;L;;;;;N;;;;;
+ 18C39;KHITAN SMALL SCRIPT CHARACTER-18C39;Lo;0;L;;;;;N;;;;;
+ 18C3A;KHITAN SMALL SCRIPT CHARACTER-18C3A;Lo;0;L;;;;;N;;;;;
+ 18C3B;KHITAN SMALL SCRIPT CHARACTER-18C3B;Lo;0;L;;;;;N;;;;;
+ 18C3C;KHITAN SMALL SCRIPT CHARACTER-18C3C;Lo;0;L;;;;;N;;;;;
+ 18C3D;KHITAN SMALL SCRIPT CHARACTER-18C3D;Lo;0;L;;;;;N;;;;;
+ 18C3E;KHITAN SMALL SCRIPT CHARACTER-18C3E;Lo;0;L;;;;;N;;;;;
+ 18C3F;KHITAN SMALL SCRIPT CHARACTER-18C3F;Lo;0;L;;;;;N;;;;;
+ 18C40;KHITAN SMALL SCRIPT CHARACTER-18C40;Lo;0;L;;;;;N;;;;;
+ 18C41;KHITAN SMALL SCRIPT CHARACTER-18C41;Lo;0;L;;;;;N;;;;;
+ 18C42;KHITAN SMALL SCRIPT CHARACTER-18C42;Lo;0;L;;;;;N;;;;;
+ 18C43;KHITAN SMALL SCRIPT CHARACTER-18C43;Lo;0;L;;;;;N;;;;;
+ 18C44;KHITAN SMALL SCRIPT CHARACTER-18C44;Lo;0;L;;;;;N;;;;;
+ 18C45;KHITAN SMALL SCRIPT CHARACTER-18C45;Lo;0;L;;;;;N;;;;;
+ 18C46;KHITAN SMALL SCRIPT CHARACTER-18C46;Lo;0;L;;;;;N;;;;;
+ 18C47;KHITAN SMALL SCRIPT CHARACTER-18C47;Lo;0;L;;;;;N;;;;;
+ 18C48;KHITAN SMALL SCRIPT CHARACTER-18C48;Lo;0;L;;;;;N;;;;;
+ 18C49;KHITAN SMALL SCRIPT CHARACTER-18C49;Lo;0;L;;;;;N;;;;;
+ 18C4A;KHITAN SMALL SCRIPT CHARACTER-18C4A;Lo;0;L;;;;;N;;;;;
+ 18C4B;KHITAN SMALL SCRIPT CHARACTER-18C4B;Lo;0;L;;;;;N;;;;;
+ 18C4C;KHITAN SMALL SCRIPT CHARACTER-18C4C;Lo;0;L;;;;;N;;;;;
+ 18C4D;KHITAN SMALL SCRIPT CHARACTER-18C4D;Lo;0;L;;;;;N;;;;;
+ 18C4E;KHITAN SMALL SCRIPT CHARACTER-18C4E;Lo;0;L;;;;;N;;;;;
+ 18C4F;KHITAN SMALL SCRIPT CHARACTER-18C4F;Lo;0;L;;;;;N;;;;;
+ 18C50;KHITAN SMALL SCRIPT CHARACTER-18C50;Lo;0;L;;;;;N;;;;;
+ 18C51;KHITAN SMALL SCRIPT CHARACTER-18C51;Lo;0;L;;;;;N;;;;;
+ 18C52;KHITAN SMALL SCRIPT CHARACTER-18C52;Lo;0;L;;;;;N;;;;;
+ 18C53;KHITAN SMALL SCRIPT CHARACTER-18C53;Lo;0;L;;;;;N;;;;;
+ 18C54;KHITAN SMALL SCRIPT CHARACTER-18C54;Lo;0;L;;;;;N;;;;;
+ 18C55;KHITAN SMALL SCRIPT CHARACTER-18C55;Lo;0;L;;;;;N;;;;;
+ 18C56;KHITAN SMALL SCRIPT CHARACTER-18C56;Lo;0;L;;;;;N;;;;;
+ 18C57;KHITAN SMALL SCRIPT CHARACTER-18C57;Lo;0;L;;;;;N;;;;;
+ 18C58;KHITAN SMALL SCRIPT CHARACTER-18C58;Lo;0;L;;;;;N;;;;;
+ 18C59;KHITAN SMALL SCRIPT CHARACTER-18C59;Lo;0;L;;;;;N;;;;;
+ 18C5A;KHITAN SMALL SCRIPT CHARACTER-18C5A;Lo;0;L;;;;;N;;;;;
+ 18C5B;KHITAN SMALL SCRIPT CHARACTER-18C5B;Lo;0;L;;;;;N;;;;;
+ 18C5C;KHITAN SMALL SCRIPT CHARACTER-18C5C;Lo;0;L;;;;;N;;;;;
+ 18C5D;KHITAN SMALL SCRIPT CHARACTER-18C5D;Lo;0;L;;;;;N;;;;;
+ 18C5E;KHITAN SMALL SCRIPT CHARACTER-18C5E;Lo;0;L;;;;;N;;;;;
+ 18C5F;KHITAN SMALL SCRIPT CHARACTER-18C5F;Lo;0;L;;;;;N;;;;;
+ 18C60;KHITAN SMALL SCRIPT CHARACTER-18C60;Lo;0;L;;;;;N;;;;;
+ 18C61;KHITAN SMALL SCRIPT CHARACTER-18C61;Lo;0;L;;;;;N;;;;;
+ 18C62;KHITAN SMALL SCRIPT CHARACTER-18C62;Lo;0;L;;;;;N;;;;;
+ 18C63;KHITAN SMALL SCRIPT CHARACTER-18C63;Lo;0;L;;;;;N;;;;;
+ 18C64;KHITAN SMALL SCRIPT CHARACTER-18C64;Lo;0;L;;;;;N;;;;;
+ 18C65;KHITAN SMALL SCRIPT CHARACTER-18C65;Lo;0;L;;;;;N;;;;;
+ 18C66;KHITAN SMALL SCRIPT CHARACTER-18C66;Lo;0;L;;;;;N;;;;;
+ 18C67;KHITAN SMALL SCRIPT CHARACTER-18C67;Lo;0;L;;;;;N;;;;;
+ 18C68;KHITAN SMALL SCRIPT CHARACTER-18C68;Lo;0;L;;;;;N;;;;;
+ 18C69;KHITAN SMALL SCRIPT CHARACTER-18C69;Lo;0;L;;;;;N;;;;;
+ 18C6A;KHITAN SMALL SCRIPT CHARACTER-18C6A;Lo;0;L;;;;;N;;;;;
+ 18C6B;KHITAN SMALL SCRIPT CHARACTER-18C6B;Lo;0;L;;;;;N;;;;;
+ 18C6C;KHITAN SMALL SCRIPT CHARACTER-18C6C;Lo;0;L;;;;;N;;;;;
+ 18C6D;KHITAN SMALL SCRIPT CHARACTER-18C6D;Lo;0;L;;;;;N;;;;;
+ 18C6E;KHITAN SMALL SCRIPT CHARACTER-18C6E;Lo;0;L;;;;;N;;;;;
+ 18C6F;KHITAN SMALL SCRIPT CHARACTER-18C6F;Lo;0;L;;;;;N;;;;;
+ 18C70;KHITAN SMALL SCRIPT CHARACTER-18C70;Lo;0;L;;;;;N;;;;;
+ 18C71;KHITAN SMALL SCRIPT CHARACTER-18C71;Lo;0;L;;;;;N;;;;;
+ 18C72;KHITAN SMALL SCRIPT CHARACTER-18C72;Lo;0;L;;;;;N;;;;;
+ 18C73;KHITAN SMALL SCRIPT CHARACTER-18C73;Lo;0;L;;;;;N;;;;;
+ 18C74;KHITAN SMALL SCRIPT CHARACTER-18C74;Lo;0;L;;;;;N;;;;;
+ 18C75;KHITAN SMALL SCRIPT CHARACTER-18C75;Lo;0;L;;;;;N;;;;;
+ 18C76;KHITAN SMALL SCRIPT CHARACTER-18C76;Lo;0;L;;;;;N;;;;;
+ 18C77;KHITAN SMALL SCRIPT CHARACTER-18C77;Lo;0;L;;;;;N;;;;;
+ 18C78;KHITAN SMALL SCRIPT CHARACTER-18C78;Lo;0;L;;;;;N;;;;;
+ 18C79;KHITAN SMALL SCRIPT CHARACTER-18C79;Lo;0;L;;;;;N;;;;;
+ 18C7A;KHITAN SMALL SCRIPT CHARACTER-18C7A;Lo;0;L;;;;;N;;;;;
+ 18C7B;KHITAN SMALL SCRIPT CHARACTER-18C7B;Lo;0;L;;;;;N;;;;;
+ 18C7C;KHITAN SMALL SCRIPT CHARACTER-18C7C;Lo;0;L;;;;;N;;;;;
+ 18C7D;KHITAN SMALL SCRIPT CHARACTER-18C7D;Lo;0;L;;;;;N;;;;;
+ 18C7E;KHITAN SMALL SCRIPT CHARACTER-18C7E;Lo;0;L;;;;;N;;;;;
+ 18C7F;KHITAN SMALL SCRIPT CHARACTER-18C7F;Lo;0;L;;;;;N;;;;;
+ 18C80;KHITAN SMALL SCRIPT CHARACTER-18C80;Lo;0;L;;;;;N;;;;;
+ 18C81;KHITAN SMALL SCRIPT CHARACTER-18C81;Lo;0;L;;;;;N;;;;;
+ 18C82;KHITAN SMALL SCRIPT CHARACTER-18C82;Lo;0;L;;;;;N;;;;;
+ 18C83;KHITAN SMALL SCRIPT CHARACTER-18C83;Lo;0;L;;;;;N;;;;;
+ 18C84;KHITAN SMALL SCRIPT CHARACTER-18C84;Lo;0;L;;;;;N;;;;;
+ 18C85;KHITAN SMALL SCRIPT CHARACTER-18C85;Lo;0;L;;;;;N;;;;;
+ 18C86;KHITAN SMALL SCRIPT CHARACTER-18C86;Lo;0;L;;;;;N;;;;;
+ 18C87;KHITAN SMALL SCRIPT CHARACTER-18C87;Lo;0;L;;;;;N;;;;;
+ 18C88;KHITAN SMALL SCRIPT CHARACTER-18C88;Lo;0;L;;;;;N;;;;;
+ 18C89;KHITAN SMALL SCRIPT CHARACTER-18C89;Lo;0;L;;;;;N;;;;;
+ 18C8A;KHITAN SMALL SCRIPT CHARACTER-18C8A;Lo;0;L;;;;;N;;;;;
+ 18C8B;KHITAN SMALL SCRIPT CHARACTER-18C8B;Lo;0;L;;;;;N;;;;;
+ 18C8C;KHITAN SMALL SCRIPT CHARACTER-18C8C;Lo;0;L;;;;;N;;;;;
+ 18C8D;KHITAN SMALL SCRIPT CHARACTER-18C8D;Lo;0;L;;;;;N;;;;;
+ 18C8E;KHITAN SMALL SCRIPT CHARACTER-18C8E;Lo;0;L;;;;;N;;;;;
+ 18C8F;KHITAN SMALL SCRIPT CHARACTER-18C8F;Lo;0;L;;;;;N;;;;;
+ 18C90;KHITAN SMALL SCRIPT CHARACTER-18C90;Lo;0;L;;;;;N;;;;;
+ 18C91;KHITAN SMALL SCRIPT CHARACTER-18C91;Lo;0;L;;;;;N;;;;;
+ 18C92;KHITAN SMALL SCRIPT CHARACTER-18C92;Lo;0;L;;;;;N;;;;;
+ 18C93;KHITAN SMALL SCRIPT CHARACTER-18C93;Lo;0;L;;;;;N;;;;;
+ 18C94;KHITAN SMALL SCRIPT CHARACTER-18C94;Lo;0;L;;;;;N;;;;;
+ 18C95;KHITAN SMALL SCRIPT CHARACTER-18C95;Lo;0;L;;;;;N;;;;;
+ 18C96;KHITAN SMALL SCRIPT CHARACTER-18C96;Lo;0;L;;;;;N;;;;;
+ 18C97;KHITAN SMALL SCRIPT CHARACTER-18C97;Lo;0;L;;;;;N;;;;;
+ 18C98;KHITAN SMALL SCRIPT CHARACTER-18C98;Lo;0;L;;;;;N;;;;;
+ 18C99;KHITAN SMALL SCRIPT CHARACTER-18C99;Lo;0;L;;;;;N;;;;;
+ 18C9A;KHITAN SMALL SCRIPT CHARACTER-18C9A;Lo;0;L;;;;;N;;;;;
+ 18C9B;KHITAN SMALL SCRIPT CHARACTER-18C9B;Lo;0;L;;;;;N;;;;;
+ 18C9C;KHITAN SMALL SCRIPT CHARACTER-18C9C;Lo;0;L;;;;;N;;;;;
+ 18C9D;KHITAN SMALL SCRIPT CHARACTER-18C9D;Lo;0;L;;;;;N;;;;;
+ 18C9E;KHITAN SMALL SCRIPT CHARACTER-18C9E;Lo;0;L;;;;;N;;;;;
+ 18C9F;KHITAN SMALL SCRIPT CHARACTER-18C9F;Lo;0;L;;;;;N;;;;;
+ 18CA0;KHITAN SMALL SCRIPT CHARACTER-18CA0;Lo;0;L;;;;;N;;;;;
+ 18CA1;KHITAN SMALL SCRIPT CHARACTER-18CA1;Lo;0;L;;;;;N;;;;;
+ 18CA2;KHITAN SMALL SCRIPT CHARACTER-18CA2;Lo;0;L;;;;;N;;;;;
+ 18CA3;KHITAN SMALL SCRIPT CHARACTER-18CA3;Lo;0;L;;;;;N;;;;;
+ 18CA4;KHITAN SMALL SCRIPT CHARACTER-18CA4;Lo;0;L;;;;;N;;;;;
+ 18CA5;KHITAN SMALL SCRIPT CHARACTER-18CA5;Lo;0;L;;;;;N;;;;;
+ 18CA6;KHITAN SMALL SCRIPT CHARACTER-18CA6;Lo;0;L;;;;;N;;;;;
+ 18CA7;KHITAN SMALL SCRIPT CHARACTER-18CA7;Lo;0;L;;;;;N;;;;;
+ 18CA8;KHITAN SMALL SCRIPT CHARACTER-18CA8;Lo;0;L;;;;;N;;;;;
+ 18CA9;KHITAN SMALL SCRIPT CHARACTER-18CA9;Lo;0;L;;;;;N;;;;;
+ 18CAA;KHITAN SMALL SCRIPT CHARACTER-18CAA;Lo;0;L;;;;;N;;;;;
+ 18CAB;KHITAN SMALL SCRIPT CHARACTER-18CAB;Lo;0;L;;;;;N;;;;;
+ 18CAC;KHITAN SMALL SCRIPT CHARACTER-18CAC;Lo;0;L;;;;;N;;;;;
+ 18CAD;KHITAN SMALL SCRIPT CHARACTER-18CAD;Lo;0;L;;;;;N;;;;;
+ 18CAE;KHITAN SMALL SCRIPT CHARACTER-18CAE;Lo;0;L;;;;;N;;;;;
+ 18CAF;KHITAN SMALL SCRIPT CHARACTER-18CAF;Lo;0;L;;;;;N;;;;;
+ 18CB0;KHITAN SMALL SCRIPT CHARACTER-18CB0;Lo;0;L;;;;;N;;;;;
+ 18CB1;KHITAN SMALL SCRIPT CHARACTER-18CB1;Lo;0;L;;;;;N;;;;;
+ 18CB2;KHITAN SMALL SCRIPT CHARACTER-18CB2;Lo;0;L;;;;;N;;;;;
+ 18CB3;KHITAN SMALL SCRIPT CHARACTER-18CB3;Lo;0;L;;;;;N;;;;;
+ 18CB4;KHITAN SMALL SCRIPT CHARACTER-18CB4;Lo;0;L;;;;;N;;;;;
+ 18CB5;KHITAN SMALL SCRIPT CHARACTER-18CB5;Lo;0;L;;;;;N;;;;;
+ 18CB6;KHITAN SMALL SCRIPT CHARACTER-18CB6;Lo;0;L;;;;;N;;;;;
+ 18CB7;KHITAN SMALL SCRIPT CHARACTER-18CB7;Lo;0;L;;;;;N;;;;;
+ 18CB8;KHITAN SMALL SCRIPT CHARACTER-18CB8;Lo;0;L;;;;;N;;;;;
+ 18CB9;KHITAN SMALL SCRIPT CHARACTER-18CB9;Lo;0;L;;;;;N;;;;;
+ 18CBA;KHITAN SMALL SCRIPT CHARACTER-18CBA;Lo;0;L;;;;;N;;;;;
+ 18CBB;KHITAN SMALL SCRIPT CHARACTER-18CBB;Lo;0;L;;;;;N;;;;;
+ 18CBC;KHITAN SMALL SCRIPT CHARACTER-18CBC;Lo;0;L;;;;;N;;;;;
+ 18CBD;KHITAN SMALL SCRIPT CHARACTER-18CBD;Lo;0;L;;;;;N;;;;;
+ 18CBE;KHITAN SMALL SCRIPT CHARACTER-18CBE;Lo;0;L;;;;;N;;;;;
+ 18CBF;KHITAN SMALL SCRIPT CHARACTER-18CBF;Lo;0;L;;;;;N;;;;;
+ 18CC0;KHITAN SMALL SCRIPT CHARACTER-18CC0;Lo;0;L;;;;;N;;;;;
+ 18CC1;KHITAN SMALL SCRIPT CHARACTER-18CC1;Lo;0;L;;;;;N;;;;;
+ 18CC2;KHITAN SMALL SCRIPT CHARACTER-18CC2;Lo;0;L;;;;;N;;;;;
+ 18CC3;KHITAN SMALL SCRIPT CHARACTER-18CC3;Lo;0;L;;;;;N;;;;;
+ 18CC4;KHITAN SMALL SCRIPT CHARACTER-18CC4;Lo;0;L;;;;;N;;;;;
+ 18CC5;KHITAN SMALL SCRIPT CHARACTER-18CC5;Lo;0;L;;;;;N;;;;;
+ 18CC6;KHITAN SMALL SCRIPT CHARACTER-18CC6;Lo;0;L;;;;;N;;;;;
+ 18CC7;KHITAN SMALL SCRIPT CHARACTER-18CC7;Lo;0;L;;;;;N;;;;;
+ 18CC8;KHITAN SMALL SCRIPT CHARACTER-18CC8;Lo;0;L;;;;;N;;;;;
+ 18CC9;KHITAN SMALL SCRIPT CHARACTER-18CC9;Lo;0;L;;;;;N;;;;;
+ 18CCA;KHITAN SMALL SCRIPT CHARACTER-18CCA;Lo;0;L;;;;;N;;;;;
+ 18CCB;KHITAN SMALL SCRIPT CHARACTER-18CCB;Lo;0;L;;;;;N;;;;;
+ 18CCC;KHITAN SMALL SCRIPT CHARACTER-18CCC;Lo;0;L;;;;;N;;;;;
+ 18CCD;KHITAN SMALL SCRIPT CHARACTER-18CCD;Lo;0;L;;;;;N;;;;;
+ 18CCE;KHITAN SMALL SCRIPT CHARACTER-18CCE;Lo;0;L;;;;;N;;;;;
+ 18CCF;KHITAN SMALL SCRIPT CHARACTER-18CCF;Lo;0;L;;;;;N;;;;;
+ 18CD0;KHITAN SMALL SCRIPT CHARACTER-18CD0;Lo;0;L;;;;;N;;;;;
+ 18CD1;KHITAN SMALL SCRIPT CHARACTER-18CD1;Lo;0;L;;;;;N;;;;;
+ 18CD2;KHITAN SMALL SCRIPT CHARACTER-18CD2;Lo;0;L;;;;;N;;;;;
+ 18CD3;KHITAN SMALL SCRIPT CHARACTER-18CD3;Lo;0;L;;;;;N;;;;;
+ 18CD4;KHITAN SMALL SCRIPT CHARACTER-18CD4;Lo;0;L;;;;;N;;;;;
+ 18CD5;KHITAN SMALL SCRIPT CHARACTER-18CD5;Lo;0;L;;;;;N;;;;;
+ 18D00;<Tangut Ideograph Supplement, First>;Lo;0;L;;;;;N;;;;;
+ 18D08;<Tangut Ideograph Supplement, Last>;Lo;0;L;;;;;N;;;;;
  1B000;KATAKANA LETTER ARCHAIC E;Lo;0;L;;;;;N;;;;;
  1B001;HIRAGANA LETTER ARCHAIC YE;Lo;0;L;;;;;N;;;;;
  1B002;HENTAIGANA LETTER A-1;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 29973,29978 ****
--- 30651,30659 ----
  1F10A;DIGIT NINE COMMA;No;0;EN;<compat> 0039 002C;;9;9;N;;;;;
  1F10B;DINGBAT CIRCLED SANS-SERIF DIGIT ZERO;No;0;ON;;;;0;N;;;;;
  1F10C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO;No;0;ON;;;;0;N;;;;;
+ 1F10D;CIRCLED ZERO WITH SLASH;So;0;ON;;;;;N;;;;;
+ 1F10E;CIRCLED ANTICLOCKWISE ARROW;So;0;ON;;;;;N;;;;;
+ 1F10F;CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH;So;0;ON;;;;;N;;;;;
  1F110;PARENTHESIZED LATIN CAPITAL LETTER A;So;0;L;<compat> 0028 0041 0029;;;;N;;;;;
  1F111;PARENTHESIZED LATIN CAPITAL LETTER B;So;0;L;<compat> 0028 0042 0029;;;;N;;;;;
  1F112;PARENTHESIZED LATIN CAPITAL LETTER C;So;0;L;<compat> 0028 0043 0029;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 30066,30071 ****
--- 30747,30755 ----
  1F16A;RAISED MC SIGN;So;0;ON;<super> 004D 0043;;;;N;;;;;
  1F16B;RAISED MD SIGN;So;0;ON;<super> 004D 0044;;;;N;;;;;
  1F16C;RAISED MR SIGN;So;0;ON;<super> 004D 0052;;;;N;;;;;
+ 1F16D;CIRCLED CC;So;0;ON;;;;;N;;;;;
+ 1F16E;CIRCLED C WITH OVERLAID BACKSLASH;So;0;ON;;;;;N;;;;;
+ 1F16F;CIRCLED HUMAN FIGURE;So;0;ON;;;;;N;;;;;
  1F170;NEGATIVE SQUARED LATIN CAPITAL LETTER A;So;0;L;;;;;N;;;;;
  1F171;NEGATIVE SQUARED LATIN CAPITAL LETTER B;So;0;L;;;;;N;;;;;
  1F172;NEGATIVE SQUARED LATIN CAPITAL LETTER C;So;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 30127,30132 ****
--- 30811,30817 ----
  1F1AA;SQUARED SHV;So;0;L;;;;;N;;;;;
  1F1AB;SQUARED UHD;So;0;L;;;;;N;;;;;
  1F1AC;SQUARED VOD;So;0;L;;;;;N;;;;;
+ 1F1AD;MASK WORK SYMBOL;So;0;ON;;;;;N;;;;;
  1F1E6;REGIONAL INDICATOR SYMBOL LETTER A;So;0;L;;;;;N;;;;;
  1F1E7;REGIONAL INDICATOR SYMBOL LETTER B;So;0;L;;;;;N;;;;;
  1F1E8;REGIONAL INDICATOR SYMBOL LETTER C;So;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 31199,31204 ****
--- 31884,31891 ----
  1F6D3;STUPA;So;0;ON;;;;;N;;;;;
  1F6D4;PAGODA;So;0;ON;;;;;N;;;;;
  1F6D5;HINDU TEMPLE;So;0;ON;;;;;N;;;;;
+ 1F6D6;HUT;So;0;ON;;;;;N;;;;;
+ 1F6D7;ELEVATOR;So;0;ON;;;;;N;;;;;
  1F6E0;HAMMER AND WRENCH;So;0;ON;;;;;N;;;;;
  1F6E1;SHIELD;So;0;ON;;;;;N;;;;;
  1F6E2;OIL DRUM;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 31223,31228 ****
--- 31910,31917 ----
  1F6F8;FLYING SAUCER;So;0;ON;;;;;N;;;;;
  1F6F9;SKATEBOARD;So;0;ON;;;;;N;;;;;
  1F6FA;AUTO RICKSHAW;So;0;ON;;;;;N;;;;;
+ 1F6FB;PICKUP TRUCK;So;0;ON;;;;;N;;;;;
+ 1F6FC;ROLLER SKATE;So;0;ON;;;;;N;;;;;
  1F700;ALCHEMICAL SYMBOL FOR QUINTESSENCE;So;0;ON;;;;;N;;;;;
  1F701;ALCHEMICAL SYMBOL FOR AIR;So;0;ON;;;;;N;;;;;
  1F702;ALCHEMICAL SYMBOL FOR FIRE;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 31588,31593 ****
--- 32277,32284 ----
  1F8AB;RIGHTWARDS FRONT-TILTED SHADOWED WHITE ARROW;So;0;ON;;;;;N;;;;;
  1F8AC;WHITE ARROW SHAFT WIDTH ONE;So;0;ON;;;;;N;;;;;
  1F8AD;WHITE ARROW SHAFT WIDTH TWO THIRDS;So;0;ON;;;;;N;;;;;
+ 1F8B0;ARROW POINTING UPWARDS THEN NORTH WEST;So;0;ON;;;;;N;;;;;
+ 1F8B1;ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST;So;0;ON;;;;;N;;;;;
  1F900;CIRCLED CROSS FORMEE WITH FOUR DOTS;So;0;ON;;;;;N;;;;;
  1F901;CIRCLED CROSS FORMEE WITH TWO DOTS;So;0;ON;;;;;N;;;;;
  1F902;CIRCLED CROSS FORMEE;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 31600,31605 ****
--- 32291,32297 ----
  1F909;DOWNWARD FACING NOTCHED HOOK;So;0;ON;;;;;N;;;;;
  1F90A;DOWNWARD FACING HOOK WITH DOT;So;0;ON;;;;;N;;;;;
  1F90B;DOWNWARD FACING NOTCHED HOOK WITH DOT;So;0;ON;;;;;N;;;;;
+ 1F90C;PINCHED FINGERS;So;0;ON;;;;;N;;;;;
  1F90D;WHITE HEART;So;0;ON;;;;;N;;;;;
  1F90E;BROWN HEART;So;0;ON;;;;;N;;;;;
  1F90F;PINCHING HAND;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 31701,31710 ****
--- 32393,32405 ----
  1F96F;BAGEL;So;0;ON;;;;;N;;;;;
  1F970;SMILING FACE WITH SMILING EYES AND THREE HEARTS;So;0;ON;;;;;N;;;;;
  1F971;YAWNING FACE;So;0;ON;;;;;N;;;;;
+ 1F972;SMILING FACE WITH TEAR;So;0;ON;;;;;N;;;;;
  1F973;FACE WITH PARTY HORN AND PARTY HAT;So;0;ON;;;;;N;;;;;
  1F974;FACE WITH UNEVEN EYES AND WAVY MOUTH;So;0;ON;;;;;N;;;;;
  1F975;OVERHEATED FACE;So;0;ON;;;;;N;;;;;
  1F976;FREEZING FACE;So;0;ON;;;;;N;;;;;
+ 1F977;NINJA;So;0;ON;;;;;N;;;;;
+ 1F978;DISGUISED FACE;So;0;ON;;;;;N;;;;;
  1F97A;FACE WITH PLEADING EYES;So;0;ON;;;;;N;;;;;
  1F97B;SARI;So;0;ON;;;;;N;;;;;
  1F97C;LAB COAT;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 31746,31757 ****
--- 32441,32457 ----
  1F9A0;MICROBE;So;0;ON;;;;;N;;;;;
  1F9A1;BADGER;So;0;ON;;;;;N;;;;;
  1F9A2;SWAN;So;0;ON;;;;;N;;;;;
+ 1F9A3;MAMMOTH;So;0;ON;;;;;N;;;;;
+ 1F9A4;DODO;So;0;ON;;;;;N;;;;;
  1F9A5;SLOTH;So;0;ON;;;;;N;;;;;
  1F9A6;OTTER;So;0;ON;;;;;N;;;;;
  1F9A7;ORANGUTAN;So;0;ON;;;;;N;;;;;
  1F9A8;SKUNK;So;0;ON;;;;;N;;;;;
  1F9A9;FLAMINGO;So;0;ON;;;;;N;;;;;
  1F9AA;OYSTER;So;0;ON;;;;;N;;;;;
+ 1F9AB;BEAVER;So;0;ON;;;;;N;;;;;
+ 1F9AC;BISON;So;0;ON;;;;;N;;;;;
+ 1F9AD;SEAL;So;0;ON;;;;;N;;;;;
  1F9AE;GUIDE DOG;So;0;ON;;;;;N;;;;;
  1F9AF;PROBING CANE;So;0;ON;;;;;N;;;;;
  1F9B0;EMOJI COMPONENT RED HAIR;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 31781,31786 ****
--- 32481,32487 ----
  1F9C8;BUTTER;So;0;ON;;;;;N;;;;;
  1F9C9;MATE DRINK;So;0;ON;;;;;N;;;;;
  1F9CA;ICE CUBE;So;0;ON;;;;;N;;;;;
+ 1F9CB;BUBBLE TEA;So;0;ON;;;;;N;;;;;
  1F9CD;STANDING PERSON;So;0;ON;;;;;N;;;;;
  1F9CE;KNEELING PERSON;So;0;ON;;;;;N;;;;;
  1F9CF;DEAF PERSON;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 31934,31953 ****
  1FA71;ONE-PIECE SWIMSUIT;So;0;ON;;;;;N;;;;;
  1FA72;BRIEFS;So;0;ON;;;;;N;;;;;
  1FA73;SHORTS;So;0;ON;;;;;N;;;;;
  1FA78;DROP OF BLOOD;So;0;ON;;;;;N;;;;;
  1FA79;ADHESIVE BANDAGE;So;0;ON;;;;;N;;;;;
  1FA7A;STETHOSCOPE;So;0;ON;;;;;N;;;;;
  1FA80;YO-YO;So;0;ON;;;;;N;;;;;
  1FA81;KITE;So;0;ON;;;;;N;;;;;
  1FA82;PARACHUTE;So;0;ON;;;;;N;;;;;
  1FA90;RINGED PLANET;So;0;ON;;;;;N;;;;;
  1FA91;CHAIR;So;0;ON;;;;;N;;;;;
  1FA92;RAZOR;So;0;ON;;;;;N;;;;;
  1FA93;AXE;So;0;ON;;;;;N;;;;;
  1FA94;DIYA LAMP;So;0;ON;;;;;N;;;;;
  1FA95;BANJO;So;0;ON;;;;;N;;;;;
  20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
! 2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
  2A700;<CJK Ideograph Extension C, First>;Lo;0;L;;;;;N;;;;;
  2B734;<CJK Ideograph Extension C, Last>;Lo;0;L;;;;;N;;;;;
  2B740;<CJK Ideograph Extension D, First>;Lo;0;L;;;;;N;;;;;
--- 32635,32907 ----
  1FA71;ONE-PIECE SWIMSUIT;So;0;ON;;;;;N;;;;;
  1FA72;BRIEFS;So;0;ON;;;;;N;;;;;
  1FA73;SHORTS;So;0;ON;;;;;N;;;;;
+ 1FA74;THONG SANDAL;So;0;ON;;;;;N;;;;;
  1FA78;DROP OF BLOOD;So;0;ON;;;;;N;;;;;
  1FA79;ADHESIVE BANDAGE;So;0;ON;;;;;N;;;;;
  1FA7A;STETHOSCOPE;So;0;ON;;;;;N;;;;;
  1FA80;YO-YO;So;0;ON;;;;;N;;;;;
  1FA81;KITE;So;0;ON;;;;;N;;;;;
  1FA82;PARACHUTE;So;0;ON;;;;;N;;;;;
+ 1FA83;BOOMERANG;So;0;ON;;;;;N;;;;;
+ 1FA84;MAGIC WAND;So;0;ON;;;;;N;;;;;
+ 1FA85;PINATA;So;0;ON;;;;;N;;;;;
+ 1FA86;NESTING DOLLS;So;0;ON;;;;;N;;;;;
  1FA90;RINGED PLANET;So;0;ON;;;;;N;;;;;
  1FA91;CHAIR;So;0;ON;;;;;N;;;;;
  1FA92;RAZOR;So;0;ON;;;;;N;;;;;
  1FA93;AXE;So;0;ON;;;;;N;;;;;
  1FA94;DIYA LAMP;So;0;ON;;;;;N;;;;;
  1FA95;BANJO;So;0;ON;;;;;N;;;;;
+ 1FA96;MILITARY HELMET;So;0;ON;;;;;N;;;;;
+ 1FA97;ACCORDION;So;0;ON;;;;;N;;;;;
+ 1FA98;LONG DRUM;So;0;ON;;;;;N;;;;;
+ 1FA99;COIN;So;0;ON;;;;;N;;;;;
+ 1FA9A;CARPENTRY SAW;So;0;ON;;;;;N;;;;;
+ 1FA9B;SCREWDRIVER;So;0;ON;;;;;N;;;;;
+ 1FA9C;LADDER;So;0;ON;;;;;N;;;;;
+ 1FA9D;HOOK;So;0;ON;;;;;N;;;;;
+ 1FA9E;MIRROR;So;0;ON;;;;;N;;;;;
+ 1FA9F;WINDOW;So;0;ON;;;;;N;;;;;
+ 1FAA0;PLUNGER;So;0;ON;;;;;N;;;;;
+ 1FAA1;SEWING NEEDLE;So;0;ON;;;;;N;;;;;
+ 1FAA2;KNOT;So;0;ON;;;;;N;;;;;
+ 1FAA3;BUCKET;So;0;ON;;;;;N;;;;;
+ 1FAA4;MOUSE TRAP;So;0;ON;;;;;N;;;;;
+ 1FAA5;TOOTHBRUSH;So;0;ON;;;;;N;;;;;
+ 1FAA6;HEADSTONE;So;0;ON;;;;;N;;;;;
+ 1FAA7;PLACARD;So;0;ON;;;;;N;;;;;
+ 1FAA8;ROCK;So;0;ON;;;;;N;;;;;
+ 1FAB0;FLY;So;0;ON;;;;;N;;;;;
+ 1FAB1;WORM;So;0;ON;;;;;N;;;;;
+ 1FAB2;BEETLE;So;0;ON;;;;;N;;;;;
+ 1FAB3;COCKROACH;So;0;ON;;;;;N;;;;;
+ 1FAB4;POTTED PLANT;So;0;ON;;;;;N;;;;;
+ 1FAB5;WOOD;So;0;ON;;;;;N;;;;;
+ 1FAB6;FEATHER;So;0;ON;;;;;N;;;;;
+ 1FAC0;ANATOMICAL HEART;So;0;ON;;;;;N;;;;;
+ 1FAC1;LUNGS;So;0;ON;;;;;N;;;;;
+ 1FAC2;PEOPLE HUGGING;So;0;ON;;;;;N;;;;;
+ 1FAD0;BLUEBERRIES;So;0;ON;;;;;N;;;;;
+ 1FAD1;BELL PEPPER;So;0;ON;;;;;N;;;;;
+ 1FAD2;OLIVE;So;0;ON;;;;;N;;;;;
+ 1FAD3;FLATBREAD;So;0;ON;;;;;N;;;;;
+ 1FAD4;TAMALE;So;0;ON;;;;;N;;;;;
+ 1FAD5;FONDUE;So;0;ON;;;;;N;;;;;
+ 1FAD6;TEAPOT;So;0;ON;;;;;N;;;;;
+ 1FB00;BLOCK SEXTANT-1;So;0;ON;;;;;N;;;;;
+ 1FB01;BLOCK SEXTANT-2;So;0;ON;;;;;N;;;;;
+ 1FB02;BLOCK SEXTANT-12;So;0;ON;;;;;N;;;;;
+ 1FB03;BLOCK SEXTANT-3;So;0;ON;;;;;N;;;;;
+ 1FB04;BLOCK SEXTANT-13;So;0;ON;;;;;N;;;;;
+ 1FB05;BLOCK SEXTANT-23;So;0;ON;;;;;N;;;;;
+ 1FB06;BLOCK SEXTANT-123;So;0;ON;;;;;N;;;;;
+ 1FB07;BLOCK SEXTANT-4;So;0;ON;;;;;N;;;;;
+ 1FB08;BLOCK SEXTANT-14;So;0;ON;;;;;N;;;;;
+ 1FB09;BLOCK SEXTANT-24;So;0;ON;;;;;N;;;;;
+ 1FB0A;BLOCK SEXTANT-124;So;0;ON;;;;;N;;;;;
+ 1FB0B;BLOCK SEXTANT-34;So;0;ON;;;;;N;;;;;
+ 1FB0C;BLOCK SEXTANT-134;So;0;ON;;;;;N;;;;;
+ 1FB0D;BLOCK SEXTANT-234;So;0;ON;;;;;N;;;;;
+ 1FB0E;BLOCK SEXTANT-1234;So;0;ON;;;;;N;;;;;
+ 1FB0F;BLOCK SEXTANT-5;So;0;ON;;;;;N;;;;;
+ 1FB10;BLOCK SEXTANT-15;So;0;ON;;;;;N;;;;;
+ 1FB11;BLOCK SEXTANT-25;So;0;ON;;;;;N;;;;;
+ 1FB12;BLOCK SEXTANT-125;So;0;ON;;;;;N;;;;;
+ 1FB13;BLOCK SEXTANT-35;So;0;ON;;;;;N;;;;;
+ 1FB14;BLOCK SEXTANT-235;So;0;ON;;;;;N;;;;;
+ 1FB15;BLOCK SEXTANT-1235;So;0;ON;;;;;N;;;;;
+ 1FB16;BLOCK SEXTANT-45;So;0;ON;;;;;N;;;;;
+ 1FB17;BLOCK SEXTANT-145;So;0;ON;;;;;N;;;;;
+ 1FB18;BLOCK SEXTANT-245;So;0;ON;;;;;N;;;;;
+ 1FB19;BLOCK SEXTANT-1245;So;0;ON;;;;;N;;;;;
+ 1FB1A;BLOCK SEXTANT-345;So;0;ON;;;;;N;;;;;
+ 1FB1B;BLOCK SEXTANT-1345;So;0;ON;;;;;N;;;;;
+ 1FB1C;BLOCK SEXTANT-2345;So;0;ON;;;;;N;;;;;
+ 1FB1D;BLOCK SEXTANT-12345;So;0;ON;;;;;N;;;;;
+ 1FB1E;BLOCK SEXTANT-6;So;0;ON;;;;;N;;;;;
+ 1FB1F;BLOCK SEXTANT-16;So;0;ON;;;;;N;;;;;
+ 1FB20;BLOCK SEXTANT-26;So;0;ON;;;;;N;;;;;
+ 1FB21;BLOCK SEXTANT-126;So;0;ON;;;;;N;;;;;
+ 1FB22;BLOCK SEXTANT-36;So;0;ON;;;;;N;;;;;
+ 1FB23;BLOCK SEXTANT-136;So;0;ON;;;;;N;;;;;
+ 1FB24;BLOCK SEXTANT-236;So;0;ON;;;;;N;;;;;
+ 1FB25;BLOCK SEXTANT-1236;So;0;ON;;;;;N;;;;;
+ 1FB26;BLOCK SEXTANT-46;So;0;ON;;;;;N;;;;;
+ 1FB27;BLOCK SEXTANT-146;So;0;ON;;;;;N;;;;;
+ 1FB28;BLOCK SEXTANT-1246;So;0;ON;;;;;N;;;;;
+ 1FB29;BLOCK SEXTANT-346;So;0;ON;;;;;N;;;;;
+ 1FB2A;BLOCK SEXTANT-1346;So;0;ON;;;;;N;;;;;
+ 1FB2B;BLOCK SEXTANT-2346;So;0;ON;;;;;N;;;;;
+ 1FB2C;BLOCK SEXTANT-12346;So;0;ON;;;;;N;;;;;
+ 1FB2D;BLOCK SEXTANT-56;So;0;ON;;;;;N;;;;;
+ 1FB2E;BLOCK SEXTANT-156;So;0;ON;;;;;N;;;;;
+ 1FB2F;BLOCK SEXTANT-256;So;0;ON;;;;;N;;;;;
+ 1FB30;BLOCK SEXTANT-1256;So;0;ON;;;;;N;;;;;
+ 1FB31;BLOCK SEXTANT-356;So;0;ON;;;;;N;;;;;
+ 1FB32;BLOCK SEXTANT-1356;So;0;ON;;;;;N;;;;;
+ 1FB33;BLOCK SEXTANT-2356;So;0;ON;;;;;N;;;;;
+ 1FB34;BLOCK SEXTANT-12356;So;0;ON;;;;;N;;;;;
+ 1FB35;BLOCK SEXTANT-456;So;0;ON;;;;;N;;;;;
+ 1FB36;BLOCK SEXTANT-1456;So;0;ON;;;;;N;;;;;
+ 1FB37;BLOCK SEXTANT-2456;So;0;ON;;;;;N;;;;;
+ 1FB38;BLOCK SEXTANT-12456;So;0;ON;;;;;N;;;;;
+ 1FB39;BLOCK SEXTANT-3456;So;0;ON;;;;;N;;;;;
+ 1FB3A;BLOCK SEXTANT-13456;So;0;ON;;;;;N;;;;;
+ 1FB3B;BLOCK SEXTANT-23456;So;0;ON;;;;;N;;;;;
+ 1FB3C;LOWER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FB3D;LOWER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB3E;LOWER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FB3F;LOWER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB40;LOWER LEFT BLOCK DIAGONAL UPPER LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FB41;LOWER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FB42;LOWER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB43;LOWER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FB44;LOWER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB45;LOWER RIGHT BLOCK DIAGONAL LOWER LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FB46;LOWER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB47;LOWER RIGHT BLOCK DIAGONAL LOWER CENTRE TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB48;LOWER RIGHT BLOCK DIAGONAL LOWER LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB49;LOWER RIGHT BLOCK DIAGONAL LOWER CENTRE TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB4A;LOWER RIGHT BLOCK DIAGONAL LOWER LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB4B;LOWER RIGHT BLOCK DIAGONAL LOWER CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB4C;LOWER LEFT BLOCK DIAGONAL UPPER CENTRE TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB4D;LOWER LEFT BLOCK DIAGONAL UPPER LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB4E;LOWER LEFT BLOCK DIAGONAL UPPER CENTRE TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB4F;LOWER LEFT BLOCK DIAGONAL UPPER LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB50;LOWER LEFT BLOCK DIAGONAL UPPER CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB51;LOWER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB52;UPPER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FB53;UPPER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB54;UPPER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FB55;UPPER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB56;UPPER RIGHT BLOCK DIAGONAL UPPER LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FB57;UPPER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FB58;UPPER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB59;UPPER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FB5A;UPPER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB5B;UPPER LEFT BLOCK DIAGONAL LOWER LEFT TO UPPER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FB5C;UPPER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB5D;UPPER LEFT BLOCK DIAGONAL LOWER CENTRE TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB5E;UPPER LEFT BLOCK DIAGONAL LOWER LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB5F;UPPER LEFT BLOCK DIAGONAL LOWER CENTRE TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB60;UPPER LEFT BLOCK DIAGONAL LOWER LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB61;UPPER LEFT BLOCK DIAGONAL LOWER CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB62;UPPER RIGHT BLOCK DIAGONAL UPPER CENTRE TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB63;UPPER RIGHT BLOCK DIAGONAL UPPER LEFT TO UPPER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB64;UPPER RIGHT BLOCK DIAGONAL UPPER CENTRE TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB65;UPPER RIGHT BLOCK DIAGONAL UPPER LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB66;UPPER RIGHT BLOCK DIAGONAL UPPER CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB67;UPPER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FB68;UPPER AND RIGHT AND LOWER TRIANGULAR THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB69;LEFT AND LOWER AND RIGHT TRIANGULAR THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB6A;UPPER AND LEFT AND LOWER TRIANGULAR THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB6B;LEFT AND UPPER AND RIGHT TRIANGULAR THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB6C;LEFT TRIANGULAR ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB6D;UPPER TRIANGULAR ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB6E;RIGHT TRIANGULAR ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB6F;LOWER TRIANGULAR ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB70;VERTICAL ONE EIGHTH BLOCK-2;So;0;ON;;;;;N;;;;;
+ 1FB71;VERTICAL ONE EIGHTH BLOCK-3;So;0;ON;;;;;N;;;;;
+ 1FB72;VERTICAL ONE EIGHTH BLOCK-4;So;0;ON;;;;;N;;;;;
+ 1FB73;VERTICAL ONE EIGHTH BLOCK-5;So;0;ON;;;;;N;;;;;
+ 1FB74;VERTICAL ONE EIGHTH BLOCK-6;So;0;ON;;;;;N;;;;;
+ 1FB75;VERTICAL ONE EIGHTH BLOCK-7;So;0;ON;;;;;N;;;;;
+ 1FB76;HORIZONTAL ONE EIGHTH BLOCK-2;So;0;ON;;;;;N;;;;;
+ 1FB77;HORIZONTAL ONE EIGHTH BLOCK-3;So;0;ON;;;;;N;;;;;
+ 1FB78;HORIZONTAL ONE EIGHTH BLOCK-4;So;0;ON;;;;;N;;;;;
+ 1FB79;HORIZONTAL ONE EIGHTH BLOCK-5;So;0;ON;;;;;N;;;;;
+ 1FB7A;HORIZONTAL ONE EIGHTH BLOCK-6;So;0;ON;;;;;N;;;;;
+ 1FB7B;HORIZONTAL ONE EIGHTH BLOCK-7;So;0;ON;;;;;N;;;;;
+ 1FB7C;LEFT AND LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB7D;LEFT AND UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB7E;RIGHT AND UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB7F;RIGHT AND LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB80;UPPER AND LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB81;HORIZONTAL ONE EIGHTH BLOCK-1358;So;0;ON;;;;;N;;;;;
+ 1FB82;UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB83;UPPER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB84;UPPER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB85;UPPER THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB86;UPPER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB87;RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB88;RIGHT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB89;RIGHT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB8A;RIGHT THREE QUARTERS BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB8B;RIGHT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB8C;LEFT HALF MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+ 1FB8D;RIGHT HALF MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+ 1FB8E;UPPER HALF MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+ 1FB8F;LOWER HALF MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+ 1FB90;INVERSE MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+ 1FB91;UPPER HALF BLOCK AND LOWER HALF INVERSE MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+ 1FB92;UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB94;LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB95;CHECKER BOARD FILL;So;0;ON;;;;;N;;;;;
+ 1FB96;INVERSE CHECKER BOARD FILL;So;0;ON;;;;;N;;;;;
+ 1FB97;HEAVY HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+ 1FB98;UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
+ 1FB99;UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
+ 1FB9A;UPPER AND LOWER TRIANGULAR HALF BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB9B;LEFT AND RIGHT TRIANGULAR HALF BLOCK;So;0;ON;;;;;N;;;;;
+ 1FB9C;UPPER LEFT TRIANGULAR MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+ 1FB9D;UPPER RIGHT TRIANGULAR MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+ 1FB9E;LOWER RIGHT TRIANGULAR MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+ 1FB9F;LOWER LEFT TRIANGULAR MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+ 1FBA0;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT;So;0;ON;;;;;N;;;;;
+ 1FBA1;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FBA2;BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FBA3;BOX DRAWINGS LIGHT DIAGONAL MIDDLE RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FBA4;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FBA5;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FBA6;BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO LOWER CENTRE TO MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FBA7;BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO UPPER CENTRE TO MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FBA8;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT AND MIDDLE RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FBA9;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT AND MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FBAA;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT TO LOWER CENTRE TO MIDDLE LEFT;So;0;ON;;;;;N;;;;;
+ 1FBAB;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT TO LOWER CENTRE TO MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+ 1FBAC;BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO UPPER CENTRE TO MIDDLE RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FBAD;BOX DRAWINGS LIGHT DIAGONAL MIDDLE RIGHT TO UPPER CENTRE TO MIDDLE LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FBAE;BOX DRAWINGS LIGHT DIAGONAL DIAMOND;So;0;ON;;;;;N;;;;;
+ 1FBAF;BOX DRAWINGS LIGHT HORIZONTAL WITH VERTICAL STROKE;So;0;ON;;;;;N;;;;;
+ 1FBB0;ARROWHEAD-SHAPED POINTER;So;0;ON;;;;;N;;;;;
+ 1FBB1;INVERSE CHECK MARK;So;0;ON;;;;;N;;;;;
+ 1FBB2;LEFT HALF RUNNING MAN;So;0;ON;;;;;N;;;;;
+ 1FBB3;RIGHT HALF RUNNING MAN;So;0;ON;;;;;N;;;;;
+ 1FBB4;INVERSE DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;;;;;
+ 1FBB5;LEFTWARDS ARROW AND UPPER AND LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+ 1FBB6;RIGHTWARDS ARROW AND UPPER AND LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+ 1FBB7;DOWNWARDS ARROW AND RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+ 1FBB8;UPWARDS ARROW AND RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+ 1FBB9;LEFT HALF FOLDER;So;0;ON;;;;;N;;;;;
+ 1FBBA;RIGHT HALF FOLDER;So;0;ON;;;;;N;;;;;
+ 1FBBB;VOIDED GREEK CROSS;So;0;ON;;;;;N;;;;;
+ 1FBBC;RIGHT OPEN SQUARED DOT;So;0;ON;;;;;N;;;;;
+ 1FBBD;NEGATIVE DIAGONAL CROSS;So;0;ON;;;;;N;;;;;
+ 1FBBE;NEGATIVE DIAGONAL MIDDLE RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+ 1FBBF;NEGATIVE DIAGONAL DIAMOND;So;0;ON;;;;;N;;;;;
+ 1FBC0;WHITE HEAVY SALTIRE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
+ 1FBC1;LEFT THIRD WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+ 1FBC2;MIDDLE THIRD WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+ 1FBC3;RIGHT THIRD WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+ 1FBC4;NEGATIVE SQUARED QUESTION MARK;So;0;ON;;;;;N;;;;;
+ 1FBC5;STICK FIGURE;So;0;ON;;;;;N;;;;;
+ 1FBC6;STICK FIGURE WITH ARMS RAISED;So;0;ON;;;;;N;;;;;
+ 1FBC7;STICK FIGURE LEANING LEFT;So;0;ON;;;;;N;;;;;
+ 1FBC8;STICK FIGURE LEANING RIGHT;So;0;ON;;;;;N;;;;;
+ 1FBC9;STICK FIGURE WITH DRESS;So;0;ON;;;;;N;;;;;
+ 1FBCA;WHITE UP-POINTING CHEVRON;So;0;ON;;;;;N;;;;;
+ 1FBF0;SEGMENTED DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+ 1FBF1;SEGMENTED DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+ 1FBF2;SEGMENTED DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+ 1FBF3;SEGMENTED DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+ 1FBF4;SEGMENTED DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+ 1FBF5;SEGMENTED DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+ 1FBF6;SEGMENTED DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+ 1FBF7;SEGMENTED DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+ 1FBF8;SEGMENTED DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+ 1FBF9;SEGMENTED DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
  20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
! 2A6DD;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
  2A700;<CJK Ideograph Extension C, First>;Lo;0;L;;;;;N;;;;;
  2B734;<CJK Ideograph Extension C, Last>;Lo;0;L;;;;;N;;;;;
  2B740;<CJK Ideograph Extension D, First>;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 32498,32503 ****
--- 33452,33459 ----
  2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;;
  2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;;
  2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;;
+ 30000;<CJK Ideograph Extension G, First>;Lo;0;L;;;;;N;;;;;
+ 3134A;<CJK Ideograph Extension G, Last>;Lo;0;L;;;;;N;;;;;
  E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;;
  E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;;
  E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;;
diff -Nrcpad gcc-10.3.0/contrib/unicode/from_glibc/unicode_utils.py gcc-11.1.0/contrib/unicode/from_glibc/unicode_utils.py
*** gcc-10.3.0/contrib/unicode/from_glibc/unicode_utils.py	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/unicode/from_glibc/unicode_utils.py	Tue Apr 27 10:00:12 2021
***************
*** 1,6 ****
  # Utilities to generate Unicode data for glibc from upstream Unicode data.
  #
! # Copyright (C) 2014-2019 Free Software Foundation, Inc.
  # This file is part of the GNU C Library.
  #
  # The GNU C Library is free software; you can redistribute it and/or
--- 1,6 ----
  # Utilities to generate Unicode data for glibc from upstream Unicode data.
  #
! # Copyright (C) 2014-2020 Free Software Foundation, Inc.
  # This file is part of the GNU C Library.
  #
  # The GNU C Library is free software; you can redistribute it and/or
diff -Nrcpad gcc-10.3.0/contrib/unicode/from_glibc/utf8_gen.py gcc-11.1.0/contrib/unicode/from_glibc/utf8_gen.py
*** gcc-10.3.0/contrib/unicode/from_glibc/utf8_gen.py	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/unicode/from_glibc/utf8_gen.py	Tue Apr 27 10:00:12 2021
***************
*** 1,6 ****
  #!/usr/bin/python3
  # -*- coding: utf-8 -*-
! # Copyright (C) 2014-2019 Free Software Foundation, Inc.
  # This file is part of the GNU C Library.
  #
  # The GNU C Library is free software; you can redistribute it and/or
--- 1,6 ----
  #!/usr/bin/python3
  # -*- coding: utf-8 -*-
! # Copyright (C) 2014-2020 Free Software Foundation, Inc.
  # This file is part of the GNU C Library.
  #
  # The GNU C Library is free software; you can redistribute it and/or
*************** def process_width(outfile, ulines, eline
*** 258,264 ****
          if key in width_dict:
              del width_dict[key] # default width is 1
      for key in list(range(0x1160, 0x1200)):
!         width_dict[key] = 0
      for key in list(range(0x3248, 0x3250)):
          # These are “A” which means we can decide whether to treat them
          # as “W” or “N” based on context:
--- 258,270 ----
          if key in width_dict:
              del width_dict[key] # default width is 1
      for key in list(range(0x1160, 0x1200)):
!         # Hangul jungseong and jongseong:
!         if key in unicode_utils.UNICODE_ATTRIBUTES:
!             width_dict[key] = 0
!     for key in list(range(0xD7B0, 0xD800)):
!         # Hangul jungseong and jongseong:
!         if key in unicode_utils.UNICODE_ATTRIBUTES:
!             width_dict[key] = 0
      for key in list(range(0x3248, 0x3250)):
          # These are “A” which means we can decide whether to treat them
          # as “W” or “N” based on context:
*************** if __name__ == "__main__":
*** 327,332 ****
--- 333,339 ----
          help='The Unicode version of the input files used.')
      ARGS = PARSER.parse_args()
  
+     unicode_utils.fill_attributes(ARGS.unicode_data_file)
      with open(ARGS.unicode_data_file, mode='r') as UNIDATA_FILE:
          UNICODE_DATA_LINES = UNIDATA_FILE.readlines()
      with open(ARGS.east_asian_with_file, mode='r') as EAST_ASIAN_WIDTH_FILE:
diff -Nrcpad gcc-10.3.0/contrib/update-copyright.py gcc-11.1.0/contrib/update-copyright.py
*** gcc-10.3.0/contrib/update-copyright.py	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/update-copyright.py	Tue Apr 27 10:00:12 2021
***************
*** 1,4 ****
! #!/usr/bin/python
  #
  # Copyright (C) 2013-2020 Free Software Foundation, Inc.
  #
--- 1,4 ----
! #!/usr/bin/env python3
  #
  # Copyright (C) 2013-2020 Free Software Foundation, Inc.
  #
*************** class GenericFilter:
*** 64,70 ****
      def __init__ (self):
          self.skip_files = set()
          self.skip_dirs = set()
!         self.skip_extensions = set()
          self.fossilised_files = set()
          self.own_files = set()
  
--- 64,73 ----
      def __init__ (self):
          self.skip_files = set()
          self.skip_dirs = set()
!         self.skip_extensions = set([
!                 '.png',
!                 '.pyc',
!                 ])
          self.fossilised_files = set()
          self.own_files = set()
  
*************** class Copyright:
*** 307,313 ****
              # If it looks like the copyright is incomplete, add the next line.
              while not self.is_complete (match):
                  try:
!                     next_line = file.next()
                  except StopIteration:
                      break
  
--- 310,316 ----
              # If it looks like the copyright is incomplete, add the next line.
              while not self.is_complete (match):
                  try:
!                     next_line = file.readline()
                  except StopIteration:
                      break
  
*************** class Copyright:
*** 381,386 ****
--- 384,398 ----
  
          return (line != orig_line, line, next_line)
  
+     def guess_encoding (self, pathname):
+         for encoding in ('utf8', 'iso8859'):
+             try:
+                 open(pathname, 'r', encoding=encoding).read()
+                 return encoding
+             except UnicodeDecodeError:
+                 pass
+         return None
+ 
      def process_file (self, dir, filename, filter):
          pathname = os.path.join (dir, filename)
          if filename.endswith ('.tmp'):
*************** class Copyright:
*** 395,401 ****
          changed = False
          line_filter = filter.get_line_filter (dir, filename)
          mode = None
!         with open (pathname, 'r') as file:
              prev = None
              mode = os.fstat (file.fileno()).st_mode
              for line in file:
--- 407,414 ----
          changed = False
          line_filter = filter.get_line_filter (dir, filename)
          mode = None
!         encoding = self.guess_encoding(pathname)
!         with open (pathname, 'r', encoding=encoding) as file:
              prev = None
              mode = os.fstat (file.fileno()).st_mode
              for line in file:
*************** class Copyright:
*** 421,427 ****
          # If something changed, write the new file out.
          if changed and self.errors.ok():
              tmp_pathname = pathname + '.tmp'
!             with open (tmp_pathname, 'w') as file:
                  for line in lines:
                      file.write (line)
                  os.fchmod (file.fileno(), mode)
--- 434,440 ----
          # If something changed, write the new file out.
          if changed and self.errors.ok():
              tmp_pathname = pathname + '.tmp'
!             with open (tmp_pathname, 'w', encoding=encoding) as file:
                  for line in lines:
                      file.write (line)
                  os.fchmod (file.fileno(), mode)
*************** class Copyright:
*** 432,438 ****
      def process_tree (self, tree, filter):
          for (dir, subdirs, filenames) in os.walk (tree):
              # Don't recurse through directories that should be skipped.
!             for i in xrange (len (subdirs) - 1, -1, -1):
                  if filter.skip_dir (dir, subdirs[i]):
                      del subdirs[i]
  
--- 445,451 ----
      def process_tree (self, tree, filter):
          for (dir, subdirs, filenames) in os.walk (tree):
              # Don't recurse through directories that should be skipped.
!             for i in range (len (subdirs) - 1, -1, -1):
                  if filter.skip_dir (dir, subdirs[i]):
                      del subdirs[i]
  
*************** class TestsuiteFilter (GenericFilter):
*** 594,600 ****
          if filename == 'README' and os.path.basename (dir) == 'params':
              return True
          if filename == 'pdt_5.f03' and os.path.basename (dir) == 'gfortran.dg':
! 	    return True
          return GenericFilter.skip_file (self, dir, filename)
  
  class LibCppFilter (GenericFilter):
--- 607,613 ----
          if filename == 'README' and os.path.basename (dir) == 'params':
              return True
          if filename == 'pdt_5.f03' and os.path.basename (dir) == 'gfortran.dg':
!             return True
          return GenericFilter.skip_file (self, dir, filename)
  
  class LibCppFilter (GenericFilter):
*************** class GCCCopyright (Copyright):
*** 683,688 ****
--- 696,702 ----
  
          self.add_external_author ('ARM')
          self.add_external_author ('AdaCore')
+         self.add_external_author ('Advanced Micro Devices Inc.')
          self.add_external_author ('Ami Tavory and Vladimir Dreizin, IBM-HRL.')
          self.add_external_author ('Cavium Networks.')
          self.add_external_author ('Faraday Technology Corp.')
*************** class GCCCopyright (Copyright):
*** 710,715 ****
--- 724,730 ----
          self.add_external_author ('The Go Authors. All rights reserved.')
          self.add_external_author ('The Go Authors.')
          self.add_external_author ('The Regents of the University of California.')
+         self.add_external_author ('Ulf Adams')
          self.add_external_author ('Unicode, Inc.')
          self.add_external_author ('University of Toronto.')
          self.add_external_author ('Yoshinori Sato')
diff -Nrcpad gcc-10.3.0/contrib/vimrc gcc-11.1.0/contrib/vimrc
*** gcc-10.3.0/contrib/vimrc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/contrib/vimrc	Tue Apr 27 10:00:12 2021
*************** function! SetStyle()
*** 39,47 ****
      setlocal shiftwidth=2
      setlocal noexpandtab
    endif
!   setlocal textwidth=80
    setlocal formatoptions-=ro formatoptions+=cqlt
!   if index(l:c_exts, l:ext) != -1
      setlocal cindent
      setlocal cinoptions=>4,n-2,{2,^-2,:2,=2,g0,f0,h2,p4,t0,+2,(0,u0,w1,m0
    endif
--- 39,51 ----
      setlocal shiftwidth=2
      setlocal noexpandtab
    endif
!   if &filetype == "gitcommit"
!     setlocal textwidth=72
!   else
!     setlocal textwidth=80
!   endif
    setlocal formatoptions-=ro formatoptions+=cqlt
!   if index(l:c_exts, l:ext) != -1 || &filetype == "c" || &filetype == "cpp"
      setlocal cindent
      setlocal cinoptions=>4,n-2,{2,^-2,:2,=2,g0,f0,h2,p4,t0,+2,(0,u0,w1,m0
    endif
diff -Nrcpad gcc-10.3.0/fixincludes/ChangeLog gcc-11.1.0/fixincludes/ChangeLog
*** gcc-10.3.0/fixincludes/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-11.1.0/fixincludes/ChangeLog	Tue Apr 27 10:00:12 2021
***************
*** 1,14 ****
! 2021-04-08  Release Manager
  
! 	* GCC 10.3.0 released.
  
! 2020-07-23  Release Manager
  
! 	* GCC 10.2.0 released.
  
! 2020-05-07  Release Manager
  
! 	* GCC 10.1.0 released.
  
  2020-02-20  Alexandre Oliva <oliva@adacore.com>
  
--- 1,44 ----
! 2021-04-27  Release Manager
  
! 	* GCC 11.1.0 released.
  
! 2020-12-14  Ilya Leoshkevich  <iii@linux.ibm.com>
  
! 	* fixincl.x: Rerun genfixes.
! 	* inclhack.def(aix_physadr_t): Change test_text to something
! 	that needs to be replaced.
! 	* tests/base/sys/types.h(aix_physadr_t): Add expectation.
  
! 2020-11-18  Nathan Sidwell  <nathan@acm.org>
  
! 	* inclhack.def (aix_physaddr_t): New.
! 	* fixincl.x: Regenerated.
! 
! 2020-10-03  Clément Chigot  <clement.chigot@atos.net>
! 
! 	* inclhack.def (aix_malloc): Add more context to select.
! 	* fixincl.x: Regenerate.
! 	* tests/base/malloc.h: Update expected results.
! 
! 2020-09-26  David Edelsohn  <dje.gcc@gmail.com>
! 
! 	PR target/97044
! 	* inclhack.def (aix_inttypes): New fix.
! 	* fixincl.x: Regenerate.
! 	* tests/base/sys/inttypes.h: New file.
! 
! 2020-09-17  David Edelsohn  <dje.gcc@gmail.com>
! 
! 	* inclhack.def (aix_externcpp1): Add more context to select.
! 	(aix_externcpp2): Same.
! 	* fixincl.x: Regenerate.
! 	* tests/base/sys/socket.h: Update expected results.
! 
! 2020-09-17  Torbjörn SVENSSON  <torbjorn.svensson@st.com>
! 	    Christophe Lyon  <christophe.lyon@linaro.org>
! 
! 	* fixfixes.c (pz_tmp_base, pz_tmp_dot): Define only with
! 	_PC_NAME_MAX.
  
  2020-02-20  Alexandre Oliva <oliva@adacore.com>
  
diff -Nrcpad gcc-10.3.0/fixincludes/fixfixes.c gcc-11.1.0/fixincludes/fixfixes.c
*** gcc-10.3.0/fixincludes/fixfixes.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/fixincludes/fixfixes.c	Tue Apr 27 10:00:12 2021
*************** main( int argc, char** argv )
*** 738,745 ****
--- 738,747 ----
  {
    tFixDesc* pFix;
    char* pz_tmptmp;
+ #ifdef _PC_NAME_MAX
    char* pz_tmp_base;
    char* pz_tmp_dot;
+ #endif
  
    if (argc != 5)
      {
*************** main( int argc, char** argv )
*** 772,783 ****
    pz_tmptmp = XNEWVEC (char, strlen (argv[4]) + 5);
    strcpy( pz_tmptmp, argv[4] );
  
    /* Don't lose because "12345678" and "12345678X" map to the same
       file under DOS restricted 8+3 file namespace.  Note that DOS
       doesn't allow more than one dot in the trunk of a file name.  */
    pz_tmp_base = basename( pz_tmptmp );
    pz_tmp_dot = strchr( pz_tmp_base, '.' );
- #ifdef _PC_NAME_MAX
    if (pathconf( pz_tmptmp, _PC_NAME_MAX ) <= 12	/* is this DOS or Windows9X? */
        && pz_tmp_dot != (char*)NULL)
      strcpy (pz_tmp_dot+1, "X"); /* nuke the original extension */
--- 774,785 ----
    pz_tmptmp = XNEWVEC (char, strlen (argv[4]) + 5);
    strcpy( pz_tmptmp, argv[4] );
  
+ #ifdef _PC_NAME_MAX
    /* Don't lose because "12345678" and "12345678X" map to the same
       file under DOS restricted 8+3 file namespace.  Note that DOS
       doesn't allow more than one dot in the trunk of a file name.  */
    pz_tmp_base = basename( pz_tmptmp );
    pz_tmp_dot = strchr( pz_tmp_base, '.' );
    if (pathconf( pz_tmptmp, _PC_NAME_MAX ) <= 12	/* is this DOS or Windows9X? */
        && pz_tmp_dot != (char*)NULL)
      strcpy (pz_tmp_dot+1, "X"); /* nuke the original extension */
diff -Nrcpad gcc-10.3.0/fixincludes/fixincl.x gcc-11.1.0/fixincludes/fixincl.x
*** gcc-10.3.0/fixincludes/fixincl.x	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/fixincludes/fixincl.x	Tue Apr 27 10:00:12 2021
***************
*** 2,12 ****
   *
   * DO NOT EDIT THIS FILE   (fixincl.x)
   *
!  * It has been AutoGen-ed  January 25, 2020 at 12:15:43 PM by AutoGen 5.18.16
   * From the definitions    inclhack.def
   * and the template file   fixincl
   */
! /* DO NOT SVN-MERGE THIS FILE, EITHER Sat Jan 25 12:15:43 EST 2020
   *
   * You must regenerate it.  Use the ./genfixes script.
   *
--- 2,12 ----
   *
   * DO NOT EDIT THIS FILE   (fixincl.x)
   *
!  * It has been AutoGen-ed  December  9, 2020 at 11:16:08 AM by AutoGen 5.18.16
   * From the definitions    inclhack.def
   * and the template file   fixincl
   */
! /* DO NOT SVN-MERGE THIS FILE, EITHER Wed Dec  9 11:16:08 EST 2020
   *
   * You must regenerate it.  Use the ./genfixes script.
   *
***************
*** 15,21 ****
   * certain ANSI-incompatible system header files which are fixed to work
   * correctly with ANSI C and placed in a directory that GNU C will search.
   *
!  * This file contains 258 fixup descriptions.
   *
   * See README for more information.
   *
--- 15,21 ----
   * certain ANSI-incompatible system header files which are fixed to work
   * correctly with ANSI C and placed in a directory that GNU C will search.
   *
!  * This file contains 260 fixup descriptions.
   *
   * See README for more information.
   *
*************** tSCC* apzAix_Externcpp1Machs[] = {
*** 826,832 ****
   *  content selection pattern - do fix if pattern found
   */
  tSCC zAix_Externcpp1Select0[] =
!        "#ifdef __cplusplus";
  
  #define    AIX_EXTERNCPP1_TEST_CT  1
  static tTestDesc aAix_Externcpp1Tests[] = {
--- 826,833 ----
   *  content selection pattern - do fix if pattern found
   */
  tSCC zAix_Externcpp1Select0[] =
!        "#ifndef _KERNEL\n\
! #ifdef __cplusplus";
  
  #define    AIX_EXTERNCPP1_TEST_CT  1
  static tTestDesc aAix_Externcpp1Tests[] = {
*************** static tTestDesc aAix_Externcpp1Tests[]
*** 837,843 ****
   */
  static const char* apzAix_Externcpp1Patch[] = {
      "format",
!     "#ifdef __cplusplus\n\
  extern \"C++\" {",
      (char*)NULL };
  
--- 838,845 ----
   */
  static const char* apzAix_Externcpp1Patch[] = {
      "format",
!     "#ifndef _KERNEL\n\
! #ifdef __cplusplus\n\
  extern \"C++\" {",
      (char*)NULL };
  
*************** tSCC* apzAix_Externcpp2Machs[] = {
*** 864,870 ****
   *  content selection pattern - do fix if pattern found
   */
  tSCC zAix_Externcpp2Select0[] =
!        "#else  /\\* __cplusplus \\*/";
  
  #define    AIX_EXTERNCPP2_TEST_CT  1
  static tTestDesc aAix_Externcpp2Tests[] = {
--- 866,873 ----
   *  content selection pattern - do fix if pattern found
   */
  tSCC zAix_Externcpp2Select0[] =
!        "#endif /\\* COMPAT_43 \\*/\n\
! #else  /\\* __cplusplus \\*/";
  
  #define    AIX_EXTERNCPP2_TEST_CT  1
  static tTestDesc aAix_Externcpp2Tests[] = {
*************** static tTestDesc aAix_Externcpp2Tests[]
*** 875,886 ****
   */
  static const char* apzAix_Externcpp2Patch[] = {
      "format",
!     "} /* extern \"C++\" */\n\
  #else  /* __cplusplus */",
      (char*)NULL };
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
   *  Description of Aix_Malloc fix
   */
  tSCC zAix_MallocName[] =
--- 878,927 ----
   */
  static const char* apzAix_Externcpp2Patch[] = {
      "format",
!     "#endif /* COMPAT_43 */\n\
! } /* extern \"C++\" */\n\
  #else  /* __cplusplus */",
      (char*)NULL };
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
+  *  Description of Aix_Inttypes fix
+  */
+ tSCC zAix_InttypesName[] =
+      "aix_inttypes";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zAix_InttypesList[] =
+   "sys/inttypes.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzAix_InttypesMachs[] = {
+         "*-*-aix*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zAix_InttypesSelect0[] =
+        "#if !defined\\(__cplusplus\\) \\|\\| defined\\(__STDC_FORMAT_MACROS\\)";
+ 
+ #define    AIX_INTTYPES_TEST_CT  1
+ static tTestDesc aAix_InttypesTests[] = {
+   { TT_EGREP,    zAix_InttypesSelect0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Aix_Inttypes
+  */
+ static const char* apzAix_InttypesPatch[] = {
+     "format",
+     "#if 1",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
   *  Description of Aix_Malloc fix
   */
  tSCC zAix_MallocName[] =
*************** tSCC* apzAix_MallocMachs[] = {
*** 902,908 ****
   *  content selection pattern - do fix if pattern found
   */
  tSCC zAix_MallocSelect0[] =
!        "#ifdef __cplusplus";
  
  #define    AIX_MALLOC_TEST_CT  1
  static tTestDesc aAix_MallocTests[] = {
--- 943,951 ----
   *  content selection pattern - do fix if pattern found
   */
  tSCC zAix_MallocSelect0[] =
!        "#ifdef __cplusplus\n\
! extern \"C\" \\{\n\
! [ \t]extern \"builtin\" char \\*__alloca \\(size_t\\);";
  
  #define    AIX_MALLOC_TEST_CT  1
  static tTestDesc aAix_MallocTests[] = {
*************** static tTestDesc aAix_MallocTests[] = {
*** 913,919 ****
   */
  static const char* apzAix_MallocPatch[] = {
      "format",
!     "#if (defined(__cplusplus) && defined(__IBMCPP__))",
      (char*)NULL };
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
--- 956,964 ----
   */
  static const char* apzAix_MallocPatch[] = {
      "format",
!     "#if (defined(__cplusplus) && defined(__IBMCPP__))\n\
! extern \"C\" {\n\
! \textern \"builtin\" char *__alloca (size_t);",
      (char*)NULL };
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
*************** static const char* apzAix_Rwlock_Initial
*** 1204,1209 ****
--- 1249,1291 ----
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
+  *  Description of Aix_Physadr_T fix
+  */
+ tSCC zAix_Physadr_TName[] =
+      "aix_physadr_t";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zAix_Physadr_TList[] =
+   "sys/types.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzAix_Physadr_TMachs[] = {
+         "*-*-aix*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zAix_Physadr_TSelect0[] =
+        "typedef[ \t]*struct[ \t]*([{][^}]*[}][ \t]*\\*[ \t]*physadr_t;)";
+ 
+ #define    AIX_PHYSADR_T_TEST_CT  1
+ static tTestDesc aAix_Physadr_TTests[] = {
+   { TT_EGREP,    zAix_Physadr_TSelect0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Aix_Physadr_T
+  */
+ static const char* apzAix_Physadr_TPatch[] = {
+     "format",
+     "typedef struct __physadr_s %1",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
   *  Description of Aix_Pthread fix
   */
  tSCC zAix_PthreadName[] =
*************** static const char* apzX11_SprintfPatch[]
*** 10476,10484 ****
   *
   *  List of all fixes
   */
! #define REGEX_COUNT          296
  #define MACH_LIST_SIZE_LIMIT 187
! #define FIX_COUNT            258
  
  /*
   *  Enumerate the fixes
--- 10558,10566 ----
   *
   *  List of all fixes
   */
! #define REGEX_COUNT          298
  #define MACH_LIST_SIZE_LIMIT 187
! #define FIX_COUNT            260
  
  /*
   *  Enumerate the fixes
*************** typedef enum {
*** 10501,10506 ****
--- 10583,10589 ----
      AIX_EXTERNC_FIXIDX,
      AIX_EXTERNCPP1_FIXIDX,
      AIX_EXTERNCPP2_FIXIDX,
+     AIX_INTTYPES_FIXIDX,
      AIX_MALLOC_FIXIDX,
      AIX_NET_IF_ARP_FIXIDX,
      AIX_NULL_FIXIDX,
*************** typedef enum {
*** 10509,10514 ****
--- 10592,10598 ----
      AIX_MUTEX_INITIALIZER_1_FIXIDX,
      AIX_COND_INITIALIZER_1_FIXIDX,
      AIX_RWLOCK_INITIALIZER_1_FIXIDX,
+     AIX_PHYSADR_T_FIXIDX,
      AIX_PTHREAD_FIXIDX,
      AIX_STDINT_1_FIXIDX,
      AIX_STDINT_2_FIXIDX,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 10830,10835 ****
--- 10914,10924 ----
       AIX_EXTERNCPP2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
       aAix_Externcpp2Tests,   apzAix_Externcpp2Patch, 0 },
  
+   {  zAix_InttypesName,    zAix_InttypesList,
+      apzAix_InttypesMachs,
+      AIX_INTTYPES_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aAix_InttypesTests,   apzAix_InttypesPatch, 0 },
+ 
    {  zAix_MallocName,    zAix_MallocList,
       apzAix_MallocMachs,
       AIX_MALLOC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 10870,10875 ****
--- 10959,10969 ----
       AIX_RWLOCK_INITIALIZER_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
       aAix_Rwlock_Initializer_1Tests,   apzAix_Rwlock_Initializer_1Patch, 0 },
  
+   {  zAix_Physadr_TName,    zAix_Physadr_TList,
+      apzAix_Physadr_TMachs,
+      AIX_PHYSADR_T_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aAix_Physadr_TTests,   apzAix_Physadr_TPatch, 0 },
+ 
    {  zAix_PthreadName,    zAix_PthreadList,
       apzAix_PthreadMachs,
       AIX_PTHREAD_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
diff -Nrcpad gcc-10.3.0/fixincludes/inclhack.def gcc-11.1.0/fixincludes/inclhack.def
*** gcc-10.3.0/fixincludes/inclhack.def	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/fixincludes/inclhack.def	Tue Apr 27 10:00:12 2021
*************** fix = {
*** 553,576 ****
    hackname  = aix_externcpp1;
    mach      = "*-*-aix*";
    files     = "sys/socket.h";
!   select    = "#ifdef __cplusplus";
    c_fix     = format;
!   c_fix_arg = "#ifdef __cplusplus\n"
                "extern \"C++\" {";
!   test_text = "#ifdef __cplusplus";
! 
  };
  
  fix = {
    hackname  = aix_externcpp2;
    mach      = "*-*-aix*";
    files     = "sys/socket.h";
!   select    = "#else  /\\* __cplusplus \\*/";
    c_fix     = format;
!   c_fix_arg = "} /* extern \"C++\" */\n"
                "#else  /* __cplusplus */";
!   test_text = "#else  /* __cplusplus */";
  
  };
  
  /*
--- 553,593 ----
    hackname  = aix_externcpp1;
    mach      = "*-*-aix*";
    files     = "sys/socket.h";
!   select    = "#ifndef _KERNEL\n"
! 	      "#ifdef __cplusplus";
    c_fix     = format;
!   c_fix_arg = "#ifndef _KERNEL\n"
! 	      "#ifdef __cplusplus\n"
                "extern \"C++\" {";
!   test_text = "#ifndef _KERNEL\n"
! 	      "#ifdef __cplusplus";
  };
  
  fix = {
    hackname  = aix_externcpp2;
    mach      = "*-*-aix*";
    files     = "sys/socket.h";
!   select    = "#endif /\\* COMPAT_43 \\*/\n"
! 	      "#else  /\\* __cplusplus \\*/";
    c_fix     = format;
!   c_fix_arg = "#endif /* COMPAT_43 */\n"
! 	      "} /* extern \"C++\" */\n"
                "#else  /* __cplusplus */";
!   test_text = "#endif /* COMPAT_43 */\n"
! 	      "#else  /* __cplusplus */";
! };
  
+ /*
+  *  inttypes.h STDC_FORMAT_MACROS
+  */
+ fix = {
+     hackname  = aix_inttypes;
+     mach      = "*-*-aix*";
+     files     = "sys/inttypes.h";
+     select    = "#if !defined\\(__cplusplus\\) \\|\\| defined\\(__STDC_FORMAT_MACROS\\)";
+     c_fix     = format;
+     c_fix_arg = "#if 1";
+     test_text = "#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS)";
  };
  
  /*
*************** fix = {
*** 580,589 ****
      hackname  = aix_malloc;
      mach      = "*-*-aix*";
      files     = "malloc.h";
!     select    = "#ifdef __cplusplus";
      c_fix     = format;
!     c_fix_arg = "#if (defined(__cplusplus) && defined(__IBMCPP__))";
!     test_text = "#ifdef __cplusplus";
  };
  
  /*
--- 597,612 ----
      hackname  = aix_malloc;
      mach      = "*-*-aix*";
      files     = "malloc.h";
!     select    = "#ifdef __cplusplus\n"
!                 "extern \"C\" \\{\n"
!                 "[ \t]extern \"builtin\" char \\*__alloca \\(size_t\\);";
      c_fix     = format;
!     c_fix_arg = "#if (defined(__cplusplus) && defined(__IBMCPP__))\n"
!                 "extern \"C\" {\n"
! 	"\textern \"builtin\" char *__alloca (size_t);";
!     test_text = "#ifdef __cplusplus\n"
!                 "extern \"C\" {\n"
! 	"\textern \"builtin\" char *__alloca (size_t);";
  };
  
  /*
*************** fix = {
*** 697,702 ****
--- 720,739 ----
  		"{ \\\\\n";
  };
  
+ 
+ /* On AIX 'typedef struct {<stuff>} * physadr_t;' needs to give the struct a
+    name for linkage purposes.  Fortunately it is on exactly one
+    line.  */
+ fix = {
+     hackname  = aix_physadr_t;
+     mach      = "*-*-aix*";
+     files     = sys/types.h;
+     select    = "typedef[ \t]*struct[ \t]*([{][^}]*[}][ \t]*\\*[ \t]*physadr_t;)";
+     c_fix     = format;
+     c_fix_arg = "typedef struct __physadr_s %1";
+     test_text = "typedef	struct { random stuff } *	physadr_t;";
+ };
+ 
  /*
   *  pthread.h on AIX 4.3.3 tries to define a macro without whitspace
   *  which violates a requirement of ISO C.
diff -Nrcpad gcc-10.3.0/fixincludes/tests/base/malloc.h gcc-11.1.0/fixincludes/tests/base/malloc.h
*** gcc-10.3.0/fixincludes/tests/base/malloc.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/fixincludes/tests/base/malloc.h	Tue Apr 27 10:00:12 2021
***************
*** 11,16 ****
--- 11,18 ----
  
  #if defined( AIX_MALLOC_CHECK )
  #if (defined(__cplusplus) && defined(__IBMCPP__))
+ extern "C" {
+ 	extern "builtin" char *__alloca (size_t);
  #endif  /* AIX_MALLOC_CHECK */
  
  
diff -Nrcpad gcc-10.3.0/fixincludes/tests/base/sys/inttypes.h gcc-11.1.0/fixincludes/tests/base/sys/inttypes.h
*** gcc-10.3.0/fixincludes/tests/base/sys/inttypes.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/fixincludes/tests/base/sys/inttypes.h	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,14 ----
+ /*  DO NOT EDIT THIS FILE.
+ 
+     It has been auto-edited by fixincludes from:
+ 
+ 	"fixinc/tests/inc/sys/inttypes.h"
+ 
+     This had to be done to correct non-standard usages in the
+     original, manufacturer supplied header file.  */
+ 
+ 
+ 
+ #if defined( AIX_INTTYPES_CHECK )
+ #if 1
+ #endif  /* AIX_INTTYPES_CHECK */
diff -Nrcpad gcc-10.3.0/fixincludes/tests/base/sys/socket.h gcc-11.1.0/fixincludes/tests/base/sys/socket.h
*** gcc-10.3.0/fixincludes/tests/base/sys/socket.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/fixincludes/tests/base/sys/socket.h	Tue Apr 27 10:00:12 2021
***************
*** 10,21 ****
--- 10,23 ----
  
  
  #if defined( AIX_EXTERNCPP1_CHECK )
+ #ifndef _KERNEL
  #ifdef __cplusplus
  extern "C++" {
  #endif  /* AIX_EXTERNCPP1_CHECK */
  
  
  #if defined( AIX_EXTERNCPP2_CHECK )
+ #endif /* COMPAT_43 */
  } /* extern "C++" */
  #else  /* __cplusplus */
  #endif  /* AIX_EXTERNCPP2_CHECK */
diff -Nrcpad gcc-10.3.0/fixincludes/tests/base/sys/types.h gcc-11.1.0/fixincludes/tests/base/sys/types.h
*** gcc-10.3.0/fixincludes/tests/base/sys/types.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/fixincludes/tests/base/sys/types.h	Tue Apr 27 10:00:12 2021
***************
*** 9,14 ****
--- 9,19 ----
  
  
  
+ #if defined( AIX_PHYSADR_T_CHECK )
+ typedef struct __physadr_s { random stuff } *	physadr_t;
+ #endif  /* AIX_PHYSADR_T_CHECK */
+ 
+ 
  #if defined( GNU_TYPES_CHECK )
  #if !defined(_GCC_PTRDIFF_T)
  #define _GCC_PTRDIFF_T
diff -Nrcpad gcc-10.3.0/gcc/ABOUT-GCC-NLS gcc-11.1.0/gcc/ABOUT-GCC-NLS
*** gcc-10.3.0/gcc/ABOUT-GCC-NLS	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ABOUT-GCC-NLS	Tue Apr 27 10:00:12 2021
*************** configure GCC with --enable-maintainer-m
*** 49,55 ****
  rebuilt.
  
  
! Copyright (C) 1998-2020 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 49,55 ----
  rebuilt.
  
  
! Copyright (C) 1998-2021 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-10.3.0/gcc/BASE-VER gcc-11.1.0/gcc/BASE-VER
*** gcc-10.3.0/gcc/BASE-VER	Thu Apr  8 11:56:48 2021
--- gcc-11.1.0/gcc/BASE-VER	Tue Apr 27 10:00:12 2021
***************
*** 1 ****
! 10.3.0
--- 1 ----
! 11.1.0
diff -Nrcpad gcc-10.3.0/gcc/ChangeLog gcc-11.1.0/gcc/ChangeLog
*** gcc-10.3.0/gcc/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-11.1.0/gcc/ChangeLog	Tue Apr 27 10:00:12 2021
***************
*** 1,21986 ****
! 2021-04-08  Release Manager
! 
! 	* GCC 10.3.0 released.
! 
! 2021-04-04  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	Backported from master:
! 	2021-04-03  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* config/darwin.c (machopic_legitimize_pic_address): Check
! 	that the current pic register is one of the hard reg set
! 	before setting liveness.
! 
! 2021-04-02  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-10-23  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* Makefile.in (PLUGIN_HEADERS): Add gomp-constants.h and $(EXPR_H).
! 	(s-header-vars): Accept not just spaces but also tabs between *_H name
! 	and =.  Handle common/config/ headers similarly to config.  Don't
! 	throw away everything from first ... to last / on the remaining
! 	string, instead skip just ... to corresponding last / without
! 	intervening spaces and tabs.
! 	(install-plugin): Treat common/config headers like config headers.
! 	* config/i386/t-i386 (TM_H): Add
! 	$(srcdir)/common/config/i386/i386-cpuinfo.h.
! 
! 2021-04-01  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/98481
! 	* common.opt (fabi-version): Default to 14.
! 
! 2021-04-01  Martin Jambor  <mjambor@suse.cz>
! 
! 	Backported from master:
! 	2021-04-01  Martin Jambor  <mjambor@suse.cz>
! 
! 	PR tree-optimization/97009
! 	* tree-sra.c (access_or_its_child_written): New function.
! 	(propagate_subaccesses_from_rhs): Use it instead of a simple grp_write
! 	test.
! 
! 2021-04-01  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/99856
! 	* tree-vect-patterns.c (vect_recog_over_widening_pattern): Promote
! 	precision to vector element precision.
! 
! 2021-03-31  Jan Hubicka  <jh@suse.cz>
! 
! 	Backported from master:
! 	2021-03-31  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	PR ipa/98265
! 	* cif-code.def (USES_COMDAT_LOCAL): Make CIF_FINAL_NORMAL.
! 
! 2021-03-31  Vladimir N. Makarov  <vmakarov@redhat.com>
! 
! 	PR rtl-optimization/96264
! 	* lra-remat.c (reg_overlap_for_remat_p): Check also output insn
! 	hard regs.
! 
! 2021-03-31  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
! 
! 	PR tree-optimization/97849
! 	* tree-if-conv.c (tree_if_conversion): Move ssa_name
! 	replacement code from ifcvt_local_dce to this function
! 	before calling do_rpo_vn.
! 
! 2021-03-31  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2021-03-31  Jakub Jelinek  <jakub@redhat.com>
! 		    Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR target/99813
! 	* config/aarch64/aarch64.md (*add<mode>3_poly_1): Swap Uai and Uav
! 	constraints on operands[2] and similarly 0 and rk constraints
! 	on operands[1] corresponding to that.
! 
! 2021-03-31  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	* common/config/i386/i386-common.c (ARRAY_SIZE): Make pta_size signed.
! 
! 2021-03-31  Martin Liska  <mliska@suse.cz>
! 
! 	Backported from master:
! 	2021-03-24  Martin Liska  <mliska@suse.cz>
! 
! 	PR target/99753
! 	* common/config/i386/i386-common.c (ARRAY_SIZE): Fix off-by-one
! 	error.
! 	* config/i386/i386-options.c (ix86_option_override_internal):
! 	Add run-time assert.
! 
! 2021-03-31  Jan Hubicka  <jh@suse.cz>
! 
! 	Backported from master:
! 	2021-03-18  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	* config/i386/x86-tune-costs.h (struct processor_costs): Fix costs of
! 	integer divides1.
! 
! 2021-03-31  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	* config/i386/x86-tune-costs.h (struct processor_costs): Remove
! 	mask register costs.
! 
! 2021-03-31  Jan Hubicka  <jh@suse.cz>
! 
! 	Backported from master:
! 	2021-03-15  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	* config/i386/i386-options.c (processor_cost_table): Add znver3_cost.
! 	* config/i386/x86-tune-costs.h (znver3_cost): New gobal variable; copy
! 	of znver2_cost.
! 
! 2021-03-31  Jan Hubicka  <jh@suse.cz>
! 
! 	* common/config/i386/i386-common.c: Add znver3.
! 	* common/config/i386/i386-cpuinfo.h (enum processor_types): Add
! 	AMDFAM19H
! 	(enum processor_subtypes): Add AMDFAM19H_ZNVER3.
! 	(processor_alias_table): Add znver3 and AMDFAM19H entry.
! 	* common/config/i386/i386-cpuinfo.h (processor_types): Add
! 	AMDFAM19H.
! 	(processor_subtypes): AMDFAM19H_ZNVER3.
! 	* config.gcc (i[34567]86-*-linux* | ...): Likewise.
! 	* config/i386/driver-i386.c: (host_detect_local_cpu): Let
! 	-march=native recognize znver3 processors.
! 	* config/i386/i386-c.c (ix86_target_macros_internal): Add
! 	znver3.
! 	* config/i386/i386-options.c (m_znver3): New definition.
! 	(m_ZNVER): Include m_znver3.
! 	(processor_cost_table): Add znver3.
! 	* config/i386/i386.c (ix86_reassociation_width): Likewise.
! 	* config/i386/i386.h (TARGET_znver3): New definition.
! 	(enum processor_type): Add PROCESSOR_ZNVER3.
! 	* config/i386/i386.md (define_attr "cpu"): Add znver3.
! 	* config/i386/x86-tune-sched.c: (ix86_issue_rate): Likewise.
! 	(ix86_adjust_cost): Likewise.
! 	* config/i386/x86-tune.def (X86_TUNE_AVOID_256FMA_CHAINS):
! 	Likewise.
! 	* config/i386/znver1.md: Add new reservations for znver3.
! 	* doc/extend.texi: Add details about znver3.
! 	* doc/invoke.texi: Likewise.
! 
! 2021-03-31  H.J. Lu  <hjl.tools@gmail.com>
! 
! 	Backported from master:
! 	2020-06-24  H.J. Lu  <hjl.tools@gmail.com>
! 
! 	PR target/95842
! 	* common/config/i386/i386-common.c (processor_alias_table): Add
! 	processor model and priority to each entry.
! 	(pta_size): Updated with -6.
! 	(num_arch_names): New.
! 	* common/config/i386/i386-cpuinfo.h: New file.
! 	* config/i386/i386-builtins.c (feature_priority): Removed.
! 	(processor_model): Likewise.
! 	(_arch_names_table): Likewise.
! 	(arch_names_table): Likewise.
! 	(_isa_names_table): Replace P_ZERO with P_NONE.
! 	(get_builtin_code_for_version): Replace P_ZERO with P_NONE.  Use
! 	processor_alias_table.
! 	(fold_builtin_cpu): Replace arch_names_table with
! 	processor_alias_table.
! 	* config/i386/i386.h: Include "common/config/i386/i386-cpuinfo.h".
! 	(pta): Add model and priority.
! 	(num_arch_names): New.
! 
! 2021-03-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	PR target/99037
! 	* config/aarch64/aarch64-simd.md (move_lo_quad_internal_<mode>): Use
! 	aarch64_simd_or_scalar_imm_zero to match zeroes.  Remove pattern
! 	matching const_int 0.
! 	(move_lo_quad_internal_be_<mode>): Likewise.
! 	(move_lo_quad_<mode>): Update for the above.
! 	* config/aarch64/iterators.md (VQ_2E): Delete.
! 
! 2021-03-30  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/99777
! 	* fold-const.c (extract_muldiv_1): For conversions, punt on casts from
! 	types other than scalar integral types.
! 
! 2021-03-30  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR debug/99334
! 	* dwarf2out.h (struct dw_fde_node): Add rule18 member.
! 	* dwarf2cfi.c (dwarf2out_frame_debug_expr): When handling (set hfp sp)
! 	assignment with drap_reg active, queue reg save for hfp with offset 0
! 	and flush queued reg saves.  When handling a push with rule18,
! 	defer queueing reg save for hfp and just assert the offset is 0.
! 	(scan_trace): Assert that fde->rule18 is false.
! 
! 2021-03-30  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR debug/99388
! 	* dwarf2out.c (insert_float): Change return type from void to
! 	unsigned, handle GET_MODE_SIZE (mode) == 2 and return element size.
! 	(mem_loc_descriptor, loc_descriptor, add_const_value_attribute):
! 	Adjust callers.
! 
! 2021-03-30  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/99824
! 	* stor-layout.c (set_min_and_max_values_for_integral_type):
! 	Assert the precision is within the bounds of
! 	WIDE_INT_MAX_PRECISION.
! 	* tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Use
! 	the outermost component ref only to lower the access size
! 	and initialize that from the access type.
! 
! 2021-03-29  Alex Coplan  <alex.coplan@arm.com>
! 
! 	Backported from master:
! 	2021-03-22  Alex Coplan  <alex.coplan@arm.com>
! 
! 	PR target/97252
! 	* config/arm/arm-protos.h (neon_make_constant): Add generate
! 	argument to guard emitting insns, default to true.
! 	* config/arm/arm.c (arm_legitimate_constant_p_1): Reject
! 	CONST_VECTORs which neon_make_constant can't handle.
! 	(neon_vdup_constant): Add generate argument, avoid emitting
! 	insns if it's not set.
! 	(neon_make_constant): Plumb new generate argument through.
! 	* config/arm/constraints.md (Ui): New. Use it...
! 	* config/arm/mve.md (*mve_mov<mode>): ... here.
! 	* config/arm/vec-common.md (movv8hf): Use neon_make_constant to
! 	synthesize constants.
! 
! 2021-03-28  David Edelsohn  <dje.gcc@gmail.com>
! 
! 	Backported from master:
! 	2021-03-28  David Edelsohn  <dje.gcc@gmail.com>
! 
! 	* config/rs6000/rs6000.c (rs6000_output_dwarf_dtprel): Do not add
! 	XCOFF TLS reloc decorations.
! 
! 2021-03-26  Iain Buclaw  <ibuclaw@gdcproject.org>
! 
! 	Backported from master:
! 	2021-03-26  Iain Buclaw  <ibuclaw@gdcproject.org>
! 
! 	PR ipa/99466
! 	* tree-emutls.c (get_emutls_init_templ_addr): Mark initializer of weak
! 	TLS declarations as public.
! 
! 2021-03-25  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
! 
! 	PR tree-optimization/96974
! 	* tree-vect-stmts.c (vect_get_vector_types_for_stmt): Replace assert
! 	with graceful exit.
! 
! 2021-03-25  Xionghu Luo  <luoxhu@linux.ibm.com>
! 
! 	Backported from master:
! 	2021-03-25  Xionghu Luo  <luoxhu@linux.ibm.com>
! 
! 	PR target/97329
! 	* config/rs6000/rs6000.c (power8_costs): Change l2 cache
! 	from 256 to 512.
! 
! 2021-03-24  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* config/darwin.c (output_objc_section_asm_op): Avoid extra
! 	objective-c section switches unless the linker needs them.
! 	* config/darwin.c (darwin_objc2_section): Allow for
! 	values > 1 to represent the next runtime.
! 	(darwin_objc1_section): Likewise.
! 	* config/darwin.c (darwin_globalize_label): Add protocol
! 	meta-data labels to the set that are global. Make a subset of
! 	metadate symbols global.
! 	(darwin_label_is_anonymous_local_objc_name): Make a subset of
! 	metadata symbols linker-visible.
! 	(darwin_override_options): Track more target OS versions, make
! 	the next_runtime version track this (unless it's set to 0 for
! 	GNU runtime).
! 	* config/darwin.h (NEXT_OBJC_RUNTIME): Set the default
! 	next runtime value to be 10.5.8.
! 
! 2021-03-24  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/99540
! 	* config/aarch64/aarch64.c (aarch64_add_offset): Tell
! 	expand_mult to perform an unsigned rather than a signed
! 	multiplication.
! 
! 2021-03-24  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2021-03-15  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/98834
! 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Handle missing
! 	subsetting by truncating the access size.
! 
! 2021-03-24  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2021-02-08  Richard Biener  <rguenther@suse.de>
! 
! 	PR lto/96591
! 	* tree.c (walk_tree_1): Walk VECTOR_CST elements.
! 
! 2021-03-24  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2021-03-22  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/99694
! 	* tree-ssa-sccvn.c (visit_phi): Ignore edges with the
! 	PHI result.
! 
! 2021-03-23  H.J. Lu  <hjl.tools@gmail.com>
! 
! 	Backported from master:
! 	2021-03-23  H.J. Lu  <hjl.tools@gmail.com>
! 
! 	PR target/99704
! 	* config/i386/cpuid.h (__cpuid): Add __volatile__.
! 	(__cpuid_count): Likewise.
! 
! 2021-03-22  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	Backported from master:
! 	2020-10-10  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* config/darwin-sections.def (objc2_data_section): New.
! 	(objc2_ivar_section): New.
! 	* config/darwin.c (darwin_objc2_section): Act on Protocol and
! 	ivar refs.
! 
! 2021-03-22  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	Backported from master:
! 	2020-10-10  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* config/darwin-sections.def (objc2_class_names_section,
! 	objc2_method_names_section, objc2_method_types_section): New
! 	* config/darwin.c (output_objc_section_asm_op): Output new
! 	sections.  (darwin_objc2_section): Select new sections where
! 	used.
! 
! 2021-03-22  David Edelsohn  <dje.gcc@gmail.com>
! 
! 	Backported from master:
! 	2021-01-30  David Edelsohn  <dje.gcc@gmail.com>
! 
! 	* config/rs6000/rs6000.opt (mabi=vec-extabi): New.
! 	(mabi=vec-default): New.
! 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
! 	__EXTABI__ for AIX Vector extended ABI.
! 	* config/rs6000/rs6000.c (rs6000_debug_reg_global): Print AIX Vector
! 	extabi info.
! 	(conditional_register_usage): If AIX vec_extabi enabled, vs20-vs31
! 	are non-volatile.
! 	* doc/invoke.texi (PowerPC mabi): Add AIX vec-extabi and vec-default.
! 
! 2021-03-22  Kito Cheng  <kito.cheng@sifive.com>
! 
! 	Backported from master:
! 	2021-03-22  Kito Cheng  <kito.cheng@sifive.com>
! 
! 	PR target/99702
! 	* config/riscv/riscv.c (riscv_expand_block_move): Get RTL value
! 	after type checking.
! 
! 2021-03-21  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	Backported from master:
! 	2021-03-01  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	PR target/44107
! 	PR target/48097
! 	* config/darwin-protos.h (darwin_should_restore_cfa_state): New.
! 	* config/darwin.c (darwin_should_restore_cfa_state): New.
! 	* config/darwin.h (TARGET_ASM_SHOULD_RESTORE_CFA_STATE): New.
! 	* doc/tm.texi: Regenerated.
! 	* doc/tm.texi.in: Document TARGET_ASM_SHOULD_RESTORE_CFA_STATE.
! 	* dwarf2cfi.c (connect_traces): If the target requests, restore
! 	the CFA expression after a DW_CFA_restore.
! 	* target.def (TARGET_ASM_SHOULD_RESTORE_CFA_STATE): New hook.
! 
! 2021-03-21  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Move the spec
! 	for the Darwin10 unwinder stub from here ..
! 	* config/darwin.h (LINK_COMMAND_SPEC_A): ... to here.
! 	here...
! 	* config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Move from here..
! 	* config/darwin.h (LINK_GCC_C_SEQUENCE_SPEC): ... to here.
! 	* config/darwin9.h (STACK_CHECK_STATIC_BUILTIN): Move from here..
! 	* config/darwin.h (STACK_CHECK_STATIC_BUILTIN): .. to here.
! 	* config.gcc: Compute default version information
! 	from the configured target.  Likewise defaults for
! 	ld64. Delete reference to the now removed darwin8.h
! 	* config/darwin10.h: Removed.
! 	* config/darwin12.h: Removed.
! 	* config/darwin9.h: Removed.
! 	* config/rs6000/darwin8.h: Removed.
! 
! 2021-03-21  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	Backported from master:
! 	2021-01-02  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* config/darwin.h (DSYMUTIL_SPEC): Default to DWARF
! 	(ASM_DEBUG_SPEC):Only define if the assembler supports
! 	stabs.
! 	(PREFERRED_DEBUGGING_TYPE): Default to DWARF.
! 	(DARWIN_PREFER_DWARF): Define.
! 	* config/darwin9.h (PREFERRED_DEBUGGING_TYPE): Remove.
! 	(DARWIN_PREFER_DWARF): Likewise
! 	(DSYMUTIL_SPEC): Likewise.
! 	(COLLECT_RUN_DSYMUTIL): Likewise.
! 	(ASM_DEBUG_SPEC): Likewise.
! 	(ASM_DEBUG_OPTION_SPEC): Likewise.
! 
! 2021-03-21  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	Backported from master:
! 	2020-08-03  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* config/darwin.h (ASM_DECLARE_FUNCTION_NAME): UNDEF before
! 	use.
! 	(DEF_MIN_OSX_VERSION): Only define if there's no existing
! 	def.
! 
! 2021-03-21  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	Backported from master:
! 	2020-11-22  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* config/darwin-c.c (struct f_align_stack): Rename
! 	to type from align_stack to f_align_stack.
! 	(push_field_alignment): Likewise.
! 	(pop_field_alignment): Likewise.
! 
! 2021-03-21  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	Backported from master:
! 	2020-10-10  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* config/darwin.c (darwin_emit_local_bss): Amend section names to
! 	match system tools. (darwin_output_aligned_bss): Likewise.
! 
! 2021-03-21  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	Backported from master:
! 	2020-09-07  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* config/darwin.c (darwin_libc_has_function): Report sincos
! 	available from 10.9.
! 
! 2021-03-21  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	Backported from master:
! 	2020-08-03  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* config/darwin.c (IN_TARGET_CODE): Remove.
! 	(darwin_mergeable_constant_section): Handle poly-int machine modes.
! 	(machopic_select_rtx_section): Likewise.
! 
! 2021-03-20  John David Anglin  <danglin@gcc.gnu.org>
! 
! 	* config/pa/pa.c (import_milli): Use memcpy instead of strncpy.
! 
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2021-03-16  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/99563
! 	* config/i386/i386.h (struct machine_function): Add
! 	has_explicit_vzeroupper bitfield.
! 	* config/i386/i386-expand.c (ix86_expand_builtin): Set
! 	cfun->machine->has_explicit_vzeroupper when expanding
! 	IX86_BUILTIN_VZEROUPPER.
! 	* config/i386/i386-features.c (rest_of_handle_insert_vzeroupper):
! 	Do the mode switching only when TARGET_VZEROUPPER, expensive
! 	optimizations turned on and not optimizing for size.
! 	(pass_insert_vzeroupper::gate): Enable even when
! 	cfun->machine->has_explicit_vzeroupper is set.
! 
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2021-03-16  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/99542
! 	* config/aarch64/aarch64.c
! 	(aarch64_simd_clone_compute_vecsize_and_simdlen): If not a function
! 	definition, walk TYPE_ARG_TYPES list if non-NULL for argument types
! 	instead of DECL_ARGUMENTS.  Ignore types for uniform arguments.
! 
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2021-03-11  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR ipa/99517
! 	* ipa-icf-gimple.c (func_checker::compare_gimple_call): For internal
! 	function calls with lhs fail if the lhs don't have compatible types.
! 
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2021-03-04  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/93235
! 	* expmed.c (store_bit_field_using_insv): Return false of xop0 is a
! 	SUBREG and a SUBREG to op_mode can't be created.
! 
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2021-03-03  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/99085
! 	* cfgrtl.c (fixup_partitions): When changing some bbs from hot to cold
! 	partitions, if in non-layout mode after reorder_blocks also move
! 	affected blocks to ensure a single partition transition.
! 
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2021-02-24  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/99225
! 	* fold-const.c (fold_binary_loc) <case NE_EXPR>: In (x & (1 << y)) != 0
! 	to ((x >> y) & 1) != 0 simplifications use build_one_cst instead of
! 	build_int_cst (..., 1).  Formatting fixes.
! 
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2021-02-23  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/99204
! 	* fold-const.c (fold_read_from_constant_string): Check that
! 	tree_fits_uhwi_p (index) rather than just that index is INTEGER_CST.
! 
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2021-02-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR ipa/99034
! 	* tree-cfg.c (gimple_merge_blocks): If bb a starts with eh landing
! 	pad or non-local label, put FORCED_LABELs from bb b after that label
! 	rather than before it.
  
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
! 	2021-02-15  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/99079
! 	* match.pd (A % (pow2pcst << N) -> A & ((pow2pcst << N) - 1)): Remove
! 	useless tree_nop_conversion_p (type, TREE_TYPE (@3)) check.  Instead
! 	require both type and TREE_TYPE (@1) to be integral types and either
! 	type having smaller or equal precision, or TREE_TYPE (@1) being
! 	unsigned type, or type being signed type.  If TREE_TYPE (@1)
! 	doesn't have wrapping overflow, perform the subtraction of one in
! 	unsigned type.
  
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2021-02-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/99035
! 	* varasm.c (declare_weak): For -fsyntax-only, allow even
! 	TREE_ASM_WRITTEN function decls.
  
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
! 	2021-02-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/99007
! 	* gimplify.c (gimplify_scan_omp_clauses): For MEM_REF on reductions,
! 	temporarily disable gimplify_ctxp->into_ssa around gimplify_expr
! 	calls.
  
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
! 	2021-02-03  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/97487
! 	* ifcvt.c (noce_can_force_operand): New function.
! 	(noce_emit_move_insn): Use it.
! 	(noce_try_sign_mask): Likewise.  Formatting fix.
  
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2021-02-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/97971
! 	* lra-constraints.c (process_alt_operands): For inline asm, don't call
! 	fatal_insn, but instead return false.
  
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2021-02-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/98287
! 	* config/i386/mmx.md (<insn><mode>3): For shifts don't enable expander
! 	for V1DImode.
  
! 2021-03-19  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR middle-end/99641
! 	* fold-const.c (native_encode_initializer) <CONSTRUCTOR>: For an
! 	array type, do the computation of the current position in sizetype.
  
! 2021-03-18  Sinan Lin  <sinan@isrc.iscas.ac.cn>
  
! 	Backported from master:
! 	2021-03-18  Sinan Lin  <sinan@isrc.iscas.ac.cn>
! 		    Kito Cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/riscv.c (riscv_block_move_straight): Change type
! 	to unsigned HOST_WIDE_INT for parameter and local variable with
! 	HOST_WIDE_INT type.
! 	(riscv_adjust_block_mem): Ditto.
! 	(riscv_block_move_loop): Ditto.
! 	(riscv_expand_block_move): Ditto.
  
! 2021-03-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	Backported from master:
! 	2021-03-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_adjust_generic_arch_tuning): Define.
! 	(aarch64_override_options_internal): Use it.
! 	(generic_tunings): Add AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS to
! 	tune_flags.
  
! 2021-03-17  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	Backported from master:
! 	2021-03-17  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-builtins.c (aarch64_expand_rng_builtin): Use EQ
! 	to compare against CC_REG rather than NE.
  
! 2021-03-17  Peter Bergner  <bergner@linux.ibm.com>
  
! 	* config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Handle
! 	disassembling a vector pair vector by vector in little-endian mode.
  
! 2021-03-16  Martin Jambor  <mjambor@suse.cz>
  
! 	Backported from master:
! 	2021-03-05  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/98078
! 	* cgraph.c (cgraph_edge::set_call_stmt): Do not update all
! 	corresponding speculative edges if we are about to resolve
! 	sepculation.  Make edge direct (and so resolve speculations) before
! 	removing it from call_site_hash.
! 	(cgraph_edge::make_direct): Relax the initial assert to allow calling
! 	the function on speculative direct edges.
  
! 2021-03-16  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2021-02-24  Richard Biener  <rguenther@suse.de>
  
! 	PR c/99224
! 	* builtins.c (fold_builtin_next_arg): Avoid NULL arg.
  
! 2021-03-16  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2021-02-25  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99253
! 	* tree-vect-loop.c (check_reduction_path): First compute
! 	code, then verify out-of-loop uses.
  
! 2021-03-15  Tobias Burnus  <tobias@codesourcery.com>
  
! 	Backported from master:
! 	2021-03-08  Tobias Burnus  <tobias@codesourcery.com>
  
! 	PR fortran/97927
! 	* tree-nested.c (convert_local_reference_stmt): Avoid calling
! 	lookup_field_for_decl for Fortran module (= namespace context).
  
! 2021-03-15  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	Backported from master:
! 	2021-02-22  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	PR rtl-optimization/98791
! 	* ira-conflicts.c (process_regs_for_copy): Don't create allocno copies
! 	for unordered modes.
  
! 2021-03-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64.c (neoversen2_tunings): Set
! 	AARCH64_EXTRA_TUNE_PREFER_ADVSIMD_AUTOVEC tune_flags.
  
! 2021-03-11  Alex Coplan  <alex.coplan@arm.com>
  
! 	Backported from master:
! 	2021-03-04  Alex Coplan  <alex.coplan@arm.com>
  
! 	PR target/99381
! 	* config/aarch64/aarch64-sve-builtins.cc
! 	(function_resolver::require_vector_type): Handle error_mark_node.
  
! 2021-03-10  Peter Bergner  <bergner@linux.ibm.com>
  
! 	Backported from master:
! 	2021-03-08  Peter Bergner  <bergner@linux.ibm.com>
  
! 	PR target/98959
! 	* config/rs6000/rs6000.c (rs6000_emit_le_vsx_permute): Add an assert
! 	to ensure we do not have an Altivec style address.
! 	* config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): Disable if passed
! 	an Altivec style address.
! 	(*vsx_le_perm_store_<mode>): Likewise.
! 	(splitters after *vsx_le_perm_store_<mode>): Likewise.
! 	(vsx_load_<mode>): Disable special expander if passed an Altivec
! 	style address.
! 	(vsx_store_<mode>): Likewise.
  
! 2021-03-10  Peter Bergner  <bergner@linux.ibm.com>
  
! 	Backported from master:
! 	2021-02-26  Peter Bergner  <bergner@linux.ibm.com>
  
! 	PR target/99279
! 	* config/rs6000/rs6000-call.c (rs6000_init_builtins): Replace assert
! 	with an "if" test.
  
! 2021-03-10  Peter Bergner  <bergner@linux.ibm.com>
  
! 	Backported from master:
! 	2021-02-23  Peter Bergner  <bergner@linux.ibm.com>
  
! 	* config/rs6000/mma.md (mma_assemble_pair): Rename from this...
! 	(vsx_assemble_pair): ...to this.
! 	* config/rs6000/rs6000-builtin.def (BU_MMA_V2, BU_MMA_V3,
! 	BU_COMPAT): New macros.
! 	(mma_assemble_pair): Rename from this...
! 	(vsx_assemble_pair): ...to this.
! 	(mma_disassemble_pair): Rename from this...
! 	(vsx_disassemble_pair): ...to this.
! 	(mma_assemble_pair): New compatibility built-in.
! 	(mma_disassemble_pair): Likewise.
! 	* config/rs6000/rs6000-call.c (struct builtin_compatibility): New.
! 	(RS6000_BUILTIN_COMPAT): Define.
! 	(bdesc_compat): New.
! 	(rs6000_gimple_fold_mma_builtin): Use VSX_BUILTIN_ASSEMBLE_PAIR.
! 	(rs6000_init_builtins): Register compatibility built-ins.
! 	(mma_init_builtins): Use VSX_BUILTIN_ASSEMBLE_PAIR,
! 	and VSX_BUILTIN_DISASSEMBLE_PAIR.
! 	* doc/extend.texi (__builtin_mma_assemble_pair): Rename from this...
! 	(__builtin_vsx_assemble_pair): ...to this.
! 	(__builtin_mma_disassemble_pair): Rename from this...
! 	(__builtin_vsx_disassemble_pair): ...to this.
  
! 2021-03-10  Peter Bergner  <bergner@linux.ibm.com>
  
! 	Backported from master:
! 	2021-02-11  Peter Bergner  <bergner@linux.ibm.com>
  
! 	PR target/99041
! 	* config/rs6000/predicates.md (mma_assemble_input_operand): Restrict
! 	memory addresses that are legal for quad word accesses.
  
! 2021-03-09  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR c++/90448
! 	* calls.c (initialize_argument_information): When the argument
! 	is passed by reference, do not make a copy in a thunk only if
! 	the argument is already in memory.  Remove redundant test for
! 	the case of callee copy.
  
! 2021-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-tuning-flags.def (cse_sve_vl_constants):
  	Define.
! 	* config/aarch64/aarch64.md (add<mode>3): Force CONST_POLY_INT immediates
! 	into a register when the above is enabled.
! 	* config/aarch64/aarch64.c (neoversev1_tunings):
! 	AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS.
! 	(aarch64_rtx_costs): Use AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS.
! 
! 2021-03-04  Jason Merrill  <jason@redhat.com>
! 
! 	PR c++/96078
! 	* cgraphunit.c (process_function_and_variable_attributes): Don't
! 	warn about flatten on an alias if the target also has it.
! 	* cgraph.h (symtab_node::get_alias_target_tree): New.
! 
! 2021-03-03  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	PR target/99234
! 	* config/i386/i386.c (ix86_compute_frame_layout): For a SEH target,
! 	point back the hard frame pointer to its default location when the
! 	frame is larger than SEH_MAX_FRAME_SIZE.
! 
! 2021-03-03  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2021-01-20  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/98758
! 	* tree-data-ref.c (int_divides_p): Use lambda_int arguments.
! 	(lambda_matrix_right_hermite): Avoid undefinedness with
! 	signed integer abs and multiplication.
! 	(analyze_subscript_affine_affine): Use lambda_int.
! 
! 2021-03-03  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2021-01-13  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/98640
! 	* tree-ssa-sccvn.c (visit_nary_op): Do not try to
! 	handle plus or minus from a truncated operand to be
! 	sign-extended.
! 
! 2021-03-03  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2021-01-11  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/98526
! 	* tree-vect-loop.c (vect_model_reduction_cost): Remove costing
! 	of the actual reduction op for the regular case.
! 	(vectorizable_reduction): Cost the stmts
! 	vect_transform_reduction produces here.
! 
! 2021-03-03  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/97897
! 	* tree-complex.c (complex_propagate::visit_stmt): Make sure
! 	abnormally used SSA names are VARYING.
! 	(complex_propagate::visit_phi): Likewise.
! 
! 2021-03-03  Tom de Vries  <tdevries@suse.de>
! 
! 	Backported from master:
! 	2021-02-05  Tom de Vries  <tdevries@suse.de>
! 
! 	PR debug/98656
! 	* tree-switch-conversion.c (jump_table_cluster::emit): Add loc
! 	argument.
! 	(bit_test_cluster::emit): Reuse location_t for newly created
! 	gswitch statement.
! 	(switch_decision_tree::try_switch_expansion): Preserve
! 	location_t.
! 	* tree-switch-conversion.h: Change function signatures.
! 
! 2021-03-02  Jan Hubicka  <jh@suse.cz>
! 
! 	Backported from master:
! 	2021-03-01  Jan Hubicka  <jh@suse.cz>
! 
! 	PR ipa/98338
! 	* ipa-fnsummary.c (compute_fn_summary): Fix sanity check.
! 
! 2021-03-02  Kito Cheng  <kito.cheng@sifive.com>
! 
! 	Backported from master:
! 	2020-07-09  Kito Cheng  <kito.cheng@sifive.com>
! 
! 	* config/riscv/riscv.md (get_thread_pointer<mode>): New.
! 	(TP_REGNUM): Ditto.
! 	* doc/extend.texi (Target Builtins): Add RISC-V built-in section.
! 	Document __builtin_thread_pointer.
! 
! 2021-03-01  Richard Earnshaw  <rearnsha@arm.com>
! 
! 	PR target/99271
! 	* config/arm/thumb2.md (nonsecure_call_reg_thumb2_fpcxt): New pattern.
! 	(nonsecure_call_value_reg_thumb2_fpcxt): Likewise.
! 	(nonsecure_call_reg_thumb2): Restrict to using r4 for the callee
! 	address and disable when the FPCXT is not available.
! 	(nonsecure_call_value_reg_thumb2): Likewise.
! 
! 2021-03-01  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	PR target/99234
! 	* config/i386/i386.c (ix86_compute_frame_layout): For a SEH target,
! 	point the hard frame pointer to the SSE register save area instead
! 	of the general register save area.  Perform only minimal adjustment
! 	for small frames if it is initially not correctly aligned.
! 	(ix86_expand_prologue): Remove early saves for a SEH target.
! 	* config/i386/winnt.c (struct seh_frame_state): Document constraint.
! 
! 2021-02-23  Qian Jianhua  <qianjh@cn.fujitsu.com>
! 
! 	* config/aarch64/aarch64-cost-tables.h (a64fx_extra_costs): New.
! 	* config/aarch64/aarch64.c (a64fx_addrcost_table): New.
! 	(a64fx_regmove_cost, a64fx_vector_cost): New.
! 	(a64fx_tunings): Use the new added cost tables.
! 
! 2021-02-22  John David Anglin  <danglin@gcc.gnu.org>
! 
! 	PR target/85074
! 	* config/pa/pa.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Define as
! 	hook_bool_const_tree_hwi_hwi_const_tree_true.
! 	(pa_asm_output_mi_thunk): Add support for nonzero vcall_offset.
! 
! 2021-02-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	* config/aarch64/aarch64-tuning-flags.def (prefer_advsimd_autovec): Define.
! 	* config/aarch64/aarch64.c (neoversev1_tunings): Use it.
! 	(aarch64_override_options_internal): Adjust aarch64_autovec_preference
! 	param when prefer_advsimd_autovec is enabled.
! 
! 2021-02-15  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* df-core.c (df_worklist_dataflow_doublequeue): Use proper cast.
! 
! 2021-02-11  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* config/i386/winnt.c (i386_pe_seh_unwind_emit): When switching to
! 	the cold section, emit a nop before the directive if the previous
! 	active instruction can throw.
! 
! 2021-02-09  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	PR rtl-optimization/96015
! 	* reorg.c (skip_consecutive_labels): Minor comment tweaks.
! 	(relax_delay_slots): When deleting a jump to the next active
! 	instruction over a barrier, first delete the barrier if the
! 	jump is the only way to reach the target label.
! 
! 2021-02-04  Vladimir N. Makarov  <vmakarov@redhat.com>
! 
! 	PR target/97701
! 	* lra-constraints.c (in_class_p): Don't narrow class only for REG
! 	or MEM.
! 
! 2021-02-03  Richard Biener  <rguenther@suse.de>
! 	    Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR rtl-optimization/98863
! 	* config/i386/i386-features.c (remove_partial_avx_dependency):
! 	Do not perform DF analysis.
! 	(pass_data_remove_partial_avx_dependency): Remove
! 	TODO_df_finish.
! 
! 2021-02-03  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2021-02-01  Richard Biener  <rguenther@suse.de>
! 
! 	PR rtl-optimization/98863
! 	* config/i386/i386-features.c (convert_scalars_to_vector):
! 	Set DF_RD_PRUNE_DEAD_DEFS.
! 
! 2021-02-03  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2021-01-29  Richard Biener  <rguenther@suse.de>
! 
! 	PR rtl-optimization/98144
! 	* df.h (df_mir_bb_info): Add con_visited member.
! 	* df-problems.c (df_mir_alloc): Initialize con_visited,
! 	do not fully populate IN and OUT.
! 	(df_mir_reset): Likewise.
! 	(df_mir_confluence_0): Set con_visited.
! 	(df_mir_confluence_n): Properly handle implicitely
! 	fully populated IN and OUT as designated by con_visited
! 	and update con_visited accordingly.
! 
! 2021-02-01  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2021-01-29  Richard Biener  <rguenther@suse.de>
! 
! 	PR rtl-optimization/98863
! 	* gcse.c (gcse_or_cprop_is_too_expensive): Use unsigned
! 	HOST_WIDE_INT for the memory estimate.
! 
! 2021-02-01  Kito Cheng  <kito.cheng@sifive.com>
! 
! 	Backported from master:
! 	2020-11-06  Kito Cheng  <kito.cheng@sifive.com>
! 
! 	PR target/96307
! 	* toplev.c (process_options): Remove param_asan_stack checking for kasan
! 	option checking.
! 
! 2021-01-31  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* system.h (SIZE_MAX): Define if not already defined.
! 
! 2021-01-29  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR debug/98331
! 	* cfgbuild.c (find_bb_boundaries): Reset debug_insn when seeing
! 	a BARRIER.
! 
! 2021-01-29  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/98853
! 	* config/aarch64/aarch64.md (*aarch64_bfxilsi_uxtw): Use
! 	%w0, %w1 and %2 instead of %0, %1 and %2.
! 
! 2021-01-29  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/98681
! 	* config/aarch64/aarch64.c (aarch64_mask_and_shift_for_ubfiz_p):
! 	Use UINTVAL (shft_amnt) and UINTVAL (mask) instead of INTVAL (shft_amnt)
! 	and INTVAL (mask).  Add && INTVAL (mask) > 0 condition.
! 
! 2021-01-29  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR testsuite/98771
! 	* fold-const-call.c (host_size_t_cst_p): Renamed to ...
! 	(size_t_cst_p): ... this.  Check and store unsigned HOST_WIDE_INT
! 	value rather than host size_t.
! 	(fold_const_call): Change type of s2 from size_t to
! 	unsigned HOST_WIDE_INT.  Use size_t_cst_p instead of
! 	host_size_t_cst_p.  For strncmp calls, pass MIN (s2, SIZE_MAX)
! 	instead of s2 as last argument.
! 
! 2021-01-29  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR testsuite/97301
! 	* config/rs6000/mmintrin.h (__m64): Add __may_alias__ attribute.
! 
! 2021-01-29  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/90248
! 	* match.pd (X cmp 0.0 ? 1.0 : -1.0 -> copysign(1, +-X),
! 	X cmp 0.0 ? -1.0 : +1.0 -> copysign(1, -+X)): Remove
! 	simplifications.
! 	(X * (X cmp 0.0 ? 1.0 : -1.0) -> +-abs(X),
! 	X * (X cmp 0.0 ? -1.0 : 1.0) -> +-abs(X)): New simplifications.
! 
! 2021-01-29  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/98255
! 	* tree-dfa.c (get_ref_base_and_extent): For ARRAY_REFs, sign
! 	extend index - low_bound from sizetype's precision rather than index
! 	precision.
! 	(get_addr_base_and_unit_offset_1): Likewise.
! 	* tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Likewise.
! 	* gimple-fold.c (fold_const_aggregate_ref_1): Likewise.
! 
! 2021-01-29  Bin Cheng  <bin.cheng@linux.alibaba.com>
! 	    Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/97627
! 	* tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
! 	Do not analyze fake edges.
! 
! 2021-01-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	Backported from master:
! 	2021-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	PR tree-optimization/98766
! 	* tree-ssa-math-opts.c (convert_mult_to_fma): Use maybe_le when
! 	comparing against type size with param_avoid_fma_max_bits.
! 
! 2021-01-26  Martin Liska  <mliska@suse.cz>
! 
! 	PR gcov-profile/98739
! 	* common.opt: Add missing equal symbol.
! 
! 2021-01-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
! 
! 	Backported from master:
! 	2021-01-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
! 
! 	* config/rtems.h (STARTFILE_SPEC): Remove qnolinkcmds.
! 	(ENDFILE_SPEC): Evaluate qnolinkcmds.
! 
! 2021-01-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
! 
! 	Backported from master:
! 	2021-01-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
! 
! 	* config/rtems.h (STARTFILE_SPEC): Remove nostdlib and
! 	nostartfiles handling since this is already done by
! 	LINK_COMMAND_SPEC.  Evaluate qnolinkcmds.
! 	(ENDFILE_SPEC): Remove nostdlib and nostartfiles handling since this
! 	is already done by LINK_COMMAND_SPEC.
! 	(LIB_SPECS): Remove nostdlib and nodefaultlibs handling since
! 	this is already done by LINK_COMMAND_SPEC.  Remove qnolinkcmds
! 	evaluation.
! 
! 2021-01-25  Claudiu Zissulescu  <claziss@gmail.com>
! 
! 	Backported from master:
! 	2020-12-11  Claudiu Zissulescu  <claziss@synopsys.com>
! 
! 	* config/arc/arc.md (mpyd<su_optab>_arcv2hs): New template
! 	pattern.
! 	(*pmpyd<su_optab>_arcv2hs): Likewise.
! 	(*pmpyd<su_optab>_imm_arcv2hs): Likewise.
! 	(mpyd_arcv2hs): Moved into above template.
! 	(mpyd_imm_arcv2hs): Moved into above template.
! 	(mpydu_arcv2hs): Likewise.
! 	(mpydu_imm_arcv2hs): Likewise.
! 	(su_optab): New optab prefix for sign/zero-extending operations.
! 
! 2021-01-22  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2021-01-20  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR tree-optimization/98535
! 	* tree-vect-slp.c (duplicate_and_interleave): Use quick_grow_cleared.
! 	If the high and low permutes are the same, remove the high permutes
! 	from the working set and only continue with the low ones.
! 
! 2021-01-21  Christophe Lyon  <christophe.lyon@linaro.org>
! 
! 	* config/arm/arm_mve.h (__arm_vcmpneq_s8): Fix return type.
! 
! 2021-01-19  Martin Jambor  <mjambor@suse.cz>
! 
! 	Backported from master:
! 	2021-01-19  Martin Jambor  <mjambor@suse.cz>
! 
! 	PR ipa/98690
! 	* ipa-sra.c (ssa_name_only_returned_p): New parameter fun.  Check
! 	whether non-call exceptions allow removal of a statement.
! 	(isra_analyze_call): Pass the appropriate function to
! 	ssa_name_only_returned_p.
! 
! 2021-01-19  Daniel Hellstrom  <daniel@gaisler.com>
! 
! 	Backported from master:
! 	2021-01-19  Daniel Hellstrom  <daniel@gaisler.com>
! 
! 	* config/sparc/rtemself.h (TARGET_OS_CPP_BUILTINS): Add
! 	built-in define __FIX_LEON3FT_TN0018.
! 
! 2021-01-14  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	Backported from master:
! 	2021-01-14  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* config/gcn/mkoffload.c (main): Create an offload image only in
! 	64-bit configurations.
! 
! 2021-01-13  Samuel Thibault  <samuel.thibault@ens-lyon.org>
! 
! 	Backported from master:
! 	2021-01-13  Samuel Thibault  <samuel.thibault@ens-lyon.org>
! 
! 	* config.gcc [$target == *-*-gnu*]: Enable
! 	'default_gnu_indirect_function'.
! 
! 2021-01-12  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2021-01-06  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/98513
! 	* value-range.cc (intersect_ranges): Compare the upper bounds
! 	for the expected relation.
! 
! 2021-01-12  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2021-01-04  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/98282
! 	* tree-ssa-sccvn.c (vn_get_stmt_kind): Classify tcc_reference on
! 	invariants as VN_NARY.
! 
! 2021-01-12  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-12-31  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR tree-optimization/94994
! 	* tree-vect-data-refs.c (vect_vfa_align): Use dr_alignment.
! 
! 2021-01-12  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2021-01-04  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR tree-optimization/95401
! 	* config/aarch64/aarch64-sve-builtins.cc
! 	(gimple_folder::load_store_cookie): Use bits rather than bytes
! 	for the alignment argument to IFN_MASK_LOAD and IFN_MASK_STORE.
! 	* gimple-fold.c (gimple_fold_mask_load_store_mem_ref): Likewise.
! 	* tree-vect-stmts.c (vectorizable_store): Likewise.
! 	(vectorizable_load): Likewise.
! 
! 2021-01-12  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2021-01-05  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR rtl-optimization/97144
! 	* recog.c (constrain_operands): Initialize matching_operand
! 	for each alternative, rather than only doing it once.
! 
! 2021-01-12  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-12-31  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR rtl-optimization/98214
! 	* genmodes.c (emit_insn_modes_h): Emit a definition of CONST_MODE_MASK.
! 	(emit_mode_mask): Treat mode_mask_array as non-constant if adj_nunits.
! 	(emit_mode_adjustments): Update GET_MODE_MASK when updating
! 	GET_MODE_NUNITS.
! 	* machmode.h (mode_mask_array): Use CONST_MODE_MASK.
! 
! 2021-01-12  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-12-31  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR tree-optimization/98302
! 	* tree-vect-patterns.c (vect_determine_precisions_from_users): Make
! 	sure that the precision remains greater than the shift count.
! 
! 2021-01-12  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2021-01-05  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR tree-optimization/98371
! 	* tree-vect-loop.c (vect_reanalyze_as_main_loop): New function.
! 	(vect_analyze_loop): If an epilogue loop appears to be cheaper
! 	than the main loop, re-analyze it as a main loop before adopting
! 	it as a main loop.
! 
! 2021-01-12  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2021-01-04  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR target/89057
! 	* config/aarch64/aarch64-simd.md (aarch64_combine<mode>): Accept
! 	aarch64_simd_reg_or_zero for operand 2.  Use the combinez patterns
! 	to handle zero operands.
! 
! 2021-01-12  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-12-18  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/aarch64.c (aarch64_preferred_simd_mode): Use
! 	aarch64_full_sve_mode and aarch64_vq_mode directly, instead of
! 	going via aarch64_simd_container_mode.
! 
! 2021-01-12  Andreas Krebbel  <krebbel@gcc.gnu.org>
! 
! 	Backported from master:
! 	2021-01-11  Andreas Krebbel  <krebbel@linux.ibm.com>
! 
! 	PR tree-optimization/98221
! 	* tree-ssa-forwprop.c (simplify_vector_constructor): For
! 	big-endian, use UNPACK[_FLOAT]_HI.
! 
! 2021-01-11  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2020-12-07  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/98117
! 	* tree-vect-loop-manip.c (vect_gen_vector_loop_niters):
! 	Properly handle degenerate niter when setting the vector
! 	loop IV range.
! 
! 2021-01-11  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/97623
! 	* tree-ssa-pre.c (insert): Move hoist insertion after PRE
! 	insertion iteration and do not iterate it.
! 	(create_expression_by_pieces): Guard NEW_SETS access.
! 	(insert_into_preds_of_block): Likewise.
! 
! 2021-01-11  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2020-10-30  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/97623
! 	* tree-ssa-pre.c (insert): First do hoist insertion in
! 	a backward walk.
! 
! 2021-01-09  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2021-01-09  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/98556
! 	* tree-cfg.c (verify_gimple_assign_binary): Allow lhs of
! 	POINTER_DIFF_EXPR to be any integral type.
! 
! 2021-01-07  Claudiu Zissulescu  <claziss@synopsys.com>
! 
! 	Backported from master:
! 	2020-12-11  Claudiu Zissulescu  <claziss@synopsys.com>
! 
! 	* config/arc/arc-protos.h (arc_scheduling_not_expected): Remove
! 	it.
! 	(arc_sets_cc_p): Likewise.
! 	(arc_need_delay): Likewise.
! 	* config/arc/arc.c (arc_sets_cc_p): Likewise.
! 	(arc_need_delay): Likewise.
! 	(arc_scheduling_not_expected): Likewise.
! 	* config/arc/arc.md: Convert adc/sbc patterns to simple
! 	instruction definitions.
! 
! 2021-01-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2021-01-05  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/98514
! 	* tree-ssa-reassoc.c (bb_rank): Change type from long * to
! 	int64_t *.
! 	(operand_rank): Change type from hash_map<tree, long> to
! 	hash_map<tree, int64_t>.
! 	(phi_rank): Change return type from long to int64_t.
! 	(loop_carried_phi): Change block_rank variable type from long to
! 	int64_t.
! 	(propagate_rank): Change return type, rank parameter type and
! 	op_rank variable type from long to int64_t.
! 	(find_operand_rank): Change return type from long to int64_t
! 	and change slot variable type from long * to int64_t *.
! 	(insert_operand_rank): Change rank parameter type from long to
! 	int64_t.
! 	(get_rank): Change return type and rank variable type from long to
! 	int64_t.  Use PRId64 instead of ld to print the rank.
! 	(init_reassoc): Change rank variable type from long to int64_t
! 	and adjust correspondingly bb_rank and operand_rank initialization.
! 
! 2021-01-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-12-31  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/98474
! 	* wide-int.cc (wi::to_mpz): If wide_int has MSB set, but type
! 	is unsigned and excess negative, append set bits after len until
! 	precision.
! 
! 2021-01-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-12-21  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/98353
! 	* gimplify.c (gimplify_init_ctor_eval_range): Gimplify value before
! 	storing it into cref.
! 
! 2021-01-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-12-21  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/98383
! 	* gimplify.c (struct gimplify_omp_ctx): Add in_for_exprs flag.
! 	(gimple_add_tmp_var): For addressable temporaries appearing in
! 	simd lb, b or incr expressions, don't add a private clause unless
! 	it is seen also outside of those expressions in the simd body.
! 	(omp_notice_variable): Likewise.
! 	(gimplify_omp_for): Set and reset in_for_exprs around gimplification
! 	of lb, b or incr expressions.
! 
! 2021-01-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-12-18  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* gimplify.c (struct gimplify_omp_ctx): Add has_depend member.
! 	(gimplify_scan_omp_clauses): Set it to true if OMP_CLAUSE_DEPEND
! 	appears on OMP_TASK.
! 	(gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses): Force
! 	GOVD_WRITTEN on shared variables if task construct has depend clause.
! 
! 2021-01-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-12-12  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/98183
! 	* omp-low.c (lower_omp_target): Don't add OMP_RETURN for
! 	data regions.
! 	* omp-expand.c (expand_omp_target): Don't try to remove
! 	OMP_RETURN for data regions.
! 	(build_omp_regions_1, omp_make_gimple_edges): Don't expect
! 	OMP_RETURN for data regions.
! 
! 2021-01-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-12-10  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/98205
! 	* omp-expand.c (expand_omp_for_generic): Fix up broken_loop handling.
! 
! 2021-01-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-12-08  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/94440
! 	* config/i386/i386.opt (ix86_excess_precision,
! 	ix86_unsafe_math_optimizations): New TargetVariables.
! 	* config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): Use
! 	ix86_unsafe_math_optimizations instead of
! 	flag_unsafe_math_optimizations and ix86_excess_precision instead of
! 	flag_excess_precision.
! 	* config/i386/i386.c (ix86_excess_precision): Rename to ...
! 	(ix86_get_excess_precision): ... this.
! 	(TARGET_C_EXCESS_PRECISION): Define to ix86_get_excess_precision.
! 	* config/i386/i386-options.c (ix86_valid_target_attribute_tree,
! 	ix86_option_override_internal): Update ix86_unsafe_math_optimization
! 	from flag_unsafe_math_optimizations and ix86_excess_precision
! 	from flag_excess_precision when constructing target option nodes.
! 	(ix86_set_current_function): If flag_unsafe_math_optimizations
! 	or flag_excess_precision is different from the one recorded
! 	in TARGET_OPTION_NODE, create a new target option node for the
! 	current function and switch to that.
! 
! 2021-01-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-12-04  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/98100
! 	* cfgexpand.c (expand_gimple_basic_block): For vars with
! 	vector type, use TYPE_MODE rather than DECL_MODE.
! 
! 2021-01-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-12-02  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* dwarf2out.c (add_scalar_info): Only use add_AT_wide for 128-bit
! 	constants and only in dwarf-5 or later, where DW_FORM_data16 is
! 	available.  Otherwise use DW_FORM_block*/DW_FORM_exprloc with
! 	DW_OP_implicit_value to describe the constant.
! 
! 2021-01-06  Scott Snyder  <sss@li-snyder.org>
! 
! 	Backported from master:
! 	2020-12-02  Scott Snyder  <sss@li-snyder.org>
! 
! 	PR plugins/98059
! 	* vec.h (auto_delete_vec): Use
! 	DISABLE_COPY_AND_ASSIGN(auto_delete_vec) instead of
! 	DISABLE_COPY_AND_ASSIGN(auto_delete_vec<T>) to make it valid C++20
! 	after DR2237.
! 
! 2021-01-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-12-01  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/98063
! 	* config/i386/i386-expand.c (ix86_expand_call): Handle non-plt
! 	CM_LARGE_PIC calls.
! 
! 2021-01-05  Uroš Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/98522
! 	* config/i386/sse.md (sse_cvtps2pi): Redefine as define_insn_and_split.
! 	Clear the top 64 bytes of the input XMM register.
! 	(sse_cvttps2pi): Ditto.
! 
! 2021-01-05  Uroš Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/98521
! 	* config/i386/xopintrin.h (_mm256_cmov_si256): New.
! 
! 2021-01-03  Iain Sandoe  <iain@sandoe.co.uk>
! 	    Jakub Jelinek   <jakub@redhat.com>
! 
! 	PR target/97865
! 	* configure: Regenerate.
! 
! 2021-01-01  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* config/darwin-driver.c (validate_macosx_version_min): Allow
! 	MACOSX_DEPLOYMENT_TARGET=11.
! 	(darwin_default_min_version): Adjust warning spelling to avoid
! 	an apostrophe.
! 
! 2021-01-01  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* config/darwin-driver.c (darwin_find_version_from_kernel):
! 	Compute the minor OS version from the minor kernel version.
! 
! 2021-01-01  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	Backported from master:
! 	2020-11-06  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* config/darwin-c.c: Allow for Darwin20 to correspond to macOS 11.
! 	* config/darwin-driver.c: Likewise.
! 
! 2021-01-01  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	Backported from master:
! 	2020-11-01  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* config/host-darwin.c: Align pch_address_space to 16384.
! 
! 2021-01-01  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
! 
! 	* config/aarch64/aarch64-builtins.c
! 	(aarch64_init_memtag_builtins): Manually initialize instead
! 	of using a C++11 brace-init-list.
! 
! 2021-01-01  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
! 
! 	* config/aarch64/driver-aarch64.c
! 	(aarch64_get_extension_string_for_isa_flags): Adjust signature.
! 
! 2020-12-28  Uroš Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/96793
! 	* config/i386/i386-expand.c (ix86_expand_rint):
! 	Remove the sign of the intermediate value for flag_rounding_math.
! 
! 2020-12-28  Piotr Kubaj  <pkubaj@FreeBSD.org>
! 
! 	Backported from master:
! 	2020-12-16  Piotr Kubaj  <pkubaj@FreeBSD.org>
! 
! 	* config.gcc (powerpc*le-*-freebsd*): Add.
! 	* configure.ac (powerpc*le-*-freebsd*): Ditto.
! 	* configure: Regenerate.
! 	* config/rs6000/freebsd64.h (ASM_SPEC_COMMON): Use ENDIAN_SELECT.
! 	(DEFAULT_ASM_ENDIAN): Add little endian support.
! 	(LINK_OS_FREEBSD_SPEC64): Ditto.
! 
! 2020-12-24  Roman Zhuykov  <zhroma@ispras.ru>
! 
! 	Backported from master:
! 	2020-12-05  Roman Zhuykov  <zhroma@ispras.ru>
! 
! 	PR rtl-optimization/97421
! 	* modulo-sched.c (generate_prolog_epilog): Remove forward
! 	declaration, adjust last argument name and type.
! 	(const_iteration_count): Add bool pointer parameter to return
! 	whether count register is read in pre-header after its
! 	initialization.
! 	(sms_schedule): Fix count register initialization adjustment
! 	procedure according to what const_iteration_count said.
! 
! 2020-12-23  Piotr Kubaj  <pkubaj@FreeBSD.org>
! 	    Gerald Pfeifer  <gerald@pfeifer.com>
! 
! 	* config/rs6000/freebsd64.h (PROCESSOR_DEFAULT): Update
! 	to PROCESSOR_PPC7450.
! 	(PROCESSOR_DEFAULT64): Update to PROCESSOR_POWER8.
! 
! 2020-12-23  Uroš Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/96793
! 	* config/i386/i386-expand.c (ix86_expand_truncdf_32):
! 	Remove the sign of the intermediate value for flag_rounding_math.
! 
! 2020-12-22  Uroš Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/96793
! 	* config/i386/i386-expand.c (ix86_expand_floorceil):
! 	Remove the sign of the intermediate value for flag_rounding_math.
! 	(ix86_expand_floorceildf_32): Ditto.
! 
! 2020-12-15  Andrea Corallo  <andrea.corallo@arm.com>
! 
! 	PR rtl-optimization/97092
! 	* ira-color.c (update_costs_from_allocno): Do not carry over mode
! 	between subsequent iterations.
! 
! 2020-12-14  Wilco Dijkstra  <wdijkstr@arm.com>
! 
! 	* config.gcc (aarch64*-*-*): Add --with-tune. Support --with-cpu=native.
! 	* config/aarch64/aarch64.h (OPTION_DEFAULT_SPECS): Add --with-tune.
! 
! 2020-12-14  Sebastian Pop  <spop@amazon.com>
! 
! 	* config.gcc (aarch64*-*-*): Remove --with-{cpu,arch,tune}-32 flags.
! 
! 2020-12-11  Dennis Zhang  <dennis.zhang@arm.com>
! 
! 	Backported from master:
! 	2020-11-03  Dennis Zhang  <dennis.zhang@arm.com>
! 
! 	* config/aarch64/aarch64-simd-builtins.def (vget_lo_half): New entry.
! 	(vget_hi_half): Likewise.
! 	* config/aarch64/aarch64-simd.md (aarch64_vget_lo_halfv8bf): New entry.
! 	(aarch64_vget_hi_halfv8bf): Likewise.
! 	* config/aarch64/arm_neon.h (vget_low_bf16): New intrinsic.
! 	(vget_high_bf16): Likewise.
! 
! 2020-12-11  Dennis Zhang  <denzha01@e124712.cambridge.arm.com>
! 
! 	Backported from master:
! 	2020-11-03  Dennis Zhang  <denzha01@e124712.cambridge.arm.com>
! 
! 	* config/aarch64/aarch64-simd-builtins.def(vbfcvt): New entry.
! 	(vbfcvt_high, bfcvt): Likewise.
! 	* config/aarch64/aarch64-simd.md(aarch64_vbfcvt<mode>): New entry.
! 	(aarch64_vbfcvt_highv8bf, aarch64_bfcvtsf): Likewise.
! 	* config/aarch64/arm_bf16.h (vcvtah_f32_bf16): New intrinsic.
! 	* config/aarch64/arm_neon.h (vcvt_f32_bf16): Likewise.
! 	(vcvtq_low_f32_bf16, vcvtq_high_f32_bf16): Likewise.
! 
! 2020-12-11  Andrea Corallo  <andrea.corallo@arm.com>
! 
! 	* config/arm/arm_neon.h (vst2_lane_bf16, vst2q_lane_bf16)
! 	(vst3_lane_bf16, vst3q_lane_bf16, vst4_lane_bf16)
! 	(vst4q_lane_bf16): New intrinsics.
! 	* config/arm/arm_neon_builtins.def: Touch it for:
! 	__builtin_neon_vst2_lanev4bf, __builtin_neon_vst2_lanev8bf,
! 	__builtin_neon_vst3_lanev4bf, __builtin_neon_vst3_lanev8bf,
! 	__builtin_neon_vst4_lanev4bf,__builtin_neon_vst4_lanev8bf.
! 
! 2020-12-11  Andrea Corallo  <andrea.corallo@arm.com>
! 
! 	* config/arm/arm_neon.h (vld2_lane_bf16, vld2q_lane_bf16)
! 	(vld3_lane_bf16, vld3q_lane_bf16, vld4_lane_bf16)
! 	(vld4q_lane_bf16): Add intrinsics.
! 	* config/arm/arm_neon_builtins.def: Touch for:
! 	__builtin_neon_vld2_lanev4bf, __builtin_neon_vld2_lanev8bf,
! 	__builtin_neon_vld3_lanev4bf, __builtin_neon_vld3_lanev8bf,
! 	__builtin_neon_vld4_lanev4bf, __builtin_neon_vld4_lanev8bf.
! 	* config/arm/iterators.md (VQ_HS): Add V8BF to the iterator.
! 
! 2020-12-11  Andrea Corallo  <andrea.corallo@arm.com>
! 
! 	* config/arm/arm_neon.h (vst1_bf16, vst1q_bf16): Add intrinsics.
! 	* config/arm/arm_neon_builtins.def : Touch for:
! 	__builtin_neon_vst1v4bf, __builtin_neon_vst1v8bf.
! 
! 2020-12-11  Andrea Corallo  <andrea.corallo@arm.com>
! 
! 	* config/arm/arm-builtins.c (VAR14): Define macro.
! 	* config/arm/arm_neon_builtins.def: Touch for:
! 	__builtin_neon_vld1v4bf, __builtin_neon_vld1v8bf.
! 	* config/arm/arm_neon.h (vld1_bf16, vld1q_bf16): Add intrinsics.
! 
! 2020-12-11  Andrea Corallo  <andrea.corallo@arm.com>
! 
! 	* config/arm/arm_neon.h (vst1_lane_bf16, vst1q_lane_bf16): Add
! 	intrinsics.
! 	* config/arm/arm_neon_builtins.def (STORE1LANE): Add v4bf, v8bf.
! 
! 2020-12-11  Andrea Corallo  <andrea.corallo@arm.com>
! 
! 	* config/arm/arm_neon_builtins.def: Add to LOAD1LANE v4bf, v8bf.
! 	* config/arm/arm_neon.h (vld1_lane_bf16, vld1q_lane_bf16): Add
! 	intrinsics.
! 
! 2020-12-09  Kewen Lin  <linkw@linux.ibm.com>
! 
! 	Backported from master:
! 	2020-08-19  Kewen Lin  <linkw@linux.ibm.com>
! 
! 	* opts-global.c (decode_options): Call target_option_override_hook
! 	before it prints for --help=*.
! 
! 2020-12-08  Andrea Corallo  <andrea.corallo@arm.com>
! 
! 	* config/arm/arm.c (mve_vector_mem_operand): Fix unwanted
! 	fall-throughs.
! 
! 2020-12-04  Hans-Peter Nilsson  <hp@axis.com>
! 
! 	Backported from master:
! 	2020-12-04  Hans-Peter Nilsson  <hp@axis.com>
! 		    Martin Sebor  <msebor@redhat.com>
! 
! 	PR middle-end/94600
! 	* doc/implement-c.texi (Qualifiers implementation): Add blurb
! 	about access to the whole of a volatile aggregate object, only for
! 	same-size as a scalar object.
! 
! 2020-12-04  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* ipa-sra.c (verify_access_tree_1): Relax assertion on the size.
! 
! 2020-12-03  Uros Bizjak  <ubizjak@gmail.com>
! 
! 	Backported from master:
! 	2020-12-03  Uroš Bizjak  <ubizjak@gmail.com>
! 		    Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/98086
! 	* config/i386/i386.c (ix86_md_asm_adjustmd): Rewrite
! 	zero-extension part to use convert_to_mode.
! 
! 2020-12-03  Sebastian Huber  <sebastian.huber@embedded-brains.de>
! 
! 	Backported from master:
! 	2020-12-03  Sebastian Huber  <sebastian.huber@embedded-brains.de>
! 
! 	* config/arm/t-rtems: Add "-mthumb -mcpu=cortex-r52
! 	-mfloat-abi=hard" multilib.
! 
! 2020-12-03  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-07-08  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR middle-end/95694
! 	* expr.c (expand_expr_real_2): Get the mode from the type rather
! 	than the rtx, and assert that it is consistent with the mode of
! 	the rtx (where known).  Optimize all constant integers, not just
! 	those that can be represented in poly_int64.
! 
! 2020-12-02  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-10-28  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR tree-optimization/97457
! 	* value-range.cc (irange::set): Don't decay POLY_INT_CST ranges
! 	to integer ranges.
! 
! 2020-12-02  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-10-02  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/aarch64-protos.h (aarch64_sve_pred_dominates_p):
! 	Delete.
! 	* config/aarch64/aarch64.c (aarch64_sve_pred_dominates_p): Likewise.
! 	* config/aarch64/aarch64-sve.md: Add banner comment describing
! 	how merging predicated FP operations are represented.
! 	(*cond_<SVE_COND_FP_UNARY:optab><mode>_2): Split into...
! 	(*cond_<SVE_COND_FP_UNARY:optab><mode>_2_relaxed): ...this and...
! 	(*cond_<SVE_COND_FP_UNARY:optab><mode>_2_strict): ...this.
! 	(*cond_<SVE_COND_FP_UNARY:optab><mode>_any): Split into...
! 	(*cond_<SVE_COND_FP_UNARY:optab><mode>_any_relaxed): ...this and...
! 	(*cond_<SVE_COND_FP_UNARY:optab><mode>_any_strict): ...this.
! 	(*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_2): Split into...
! 	(*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_2_relaxed): ...this and...
! 	(*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_2_strict): ...this.
! 	(*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_any): Split into...
! 	(*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_any_relaxed): ...this
! 	and...
! 	(*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_any_strict): ...this.
! 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_2): Split into...
! 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_2_relaxed): ...this and...
! 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_2_strict): ...this.
! 	(*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_2_const): Split into...
! 	(*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_2_const_relaxed): ...this
! 	and...
! 	(*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_2_const_strict): ...this.
! 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_3): Split into...
! 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_3_relaxed): ...this and...
! 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_3_strict): ...this.
! 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_any): Split into...
! 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_any_relaxed): ...this and...
! 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_any_strict): ...this.
! 	(*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_any_const): Split into...
! 	(*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_any_const_relaxed): ...this
! 	and...
! 	(*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_any_const_strict): ...this.
! 	(*cond_add<mode>_2_const): Split into...
! 	(*cond_add<mode>_2_const_relaxed): ...this and...
! 	(*cond_add<mode>_2_const_strict): ...this.
! 	(*cond_add<mode>_any_const): Split into...
! 	(*cond_add<mode>_any_const_relaxed): ...this and...
! 	(*cond_add<mode>_any_const_strict): ...this.
! 	(*cond_<SVE_COND_FCADD:optab><mode>_2): Split into...
! 	(*cond_<SVE_COND_FCADD:optab><mode>_2_relaxed): ...this and...
! 	(*cond_<SVE_COND_FCADD:optab><mode>_2_strict): ...this.
! 	(*cond_<SVE_COND_FCADD:optab><mode>_any): Split into...
! 	(*cond_<SVE_COND_FCADD:optab><mode>_any_relaxed): ...this and...
! 	(*cond_<SVE_COND_FCADD:optab><mode>_any_strict): ...this.
! 	(*cond_sub<mode>_3_const): Split into...
! 	(*cond_sub<mode>_3_const_relaxed): ...this and...
! 	(*cond_sub<mode>_3_const_strict): ...this.
! 	(*aarch64_pred_abd<mode>): Split into...
! 	(*aarch64_pred_abd<mode>_relaxed): ...this and...
! 	(*aarch64_pred_abd<mode>_strict): ...this.
! 	(*aarch64_cond_abd<mode>_2): Split into...
! 	(*aarch64_cond_abd<mode>_2_relaxed): ...this and...
! 	(*aarch64_cond_abd<mode>_2_strict): ...this.
! 	(*aarch64_cond_abd<mode>_3): Split into...
! 	(*aarch64_cond_abd<mode>_3_relaxed): ...this and...
! 	(*aarch64_cond_abd<mode>_3_strict): ...this.
! 	(*aarch64_cond_abd<mode>_any): Split into...
! 	(*aarch64_cond_abd<mode>_any_relaxed): ...this and...
! 	(*aarch64_cond_abd<mode>_any_strict): ...this.
! 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_2): Split into...
! 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_2_relaxed): ...this and...
! 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_2_strict): ...this.
! 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_4): Split into...
! 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_4_relaxed): ...this and...
! 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_4_strict): ...this.
! 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_any): Split into...
! 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_any_relaxed): ...this and...
! 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_any_strict): ...this.
! 	(*cond_<SVE_COND_FCMLA:optab><mode>_4): Split into...
! 	(*cond_<SVE_COND_FCMLA:optab><mode>_4_relaxed): ...this and...
! 	(*cond_<SVE_COND_FCMLA:optab><mode>_4_strict): ...this.
! 	(*cond_<SVE_COND_FCMLA:optab><mode>_any): Split into...
! 	(*cond_<SVE_COND_FCMLA:optab><mode>_any_relaxed): ...this and...
! 	(*cond_<SVE_COND_FCMLA:optab><mode>_any_strict): ...this.
! 	(*aarch64_pred_fac<cmp_op><mode>): Split into...
! 	(*aarch64_pred_fac<cmp_op><mode>_relaxed): ...this and...
! 	(*aarch64_pred_fac<cmp_op><mode>_strict): ...this.
! 	(*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>): Split
! 	into...
! 	(*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_relaxed):
! 	...this and...
! 	(*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_strict):
! 	...this.
! 	(*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>): Split
! 	into...
! 	(*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_relaxed):
! 	...this and...
! 	(*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_strict):
! 	...this.
! 	* config/aarch64/aarch64-sve2.md
! 	(*cond_<SVE2_COND_FP_UNARY_LONG:optab><mode>): Split into...
! 	(*cond_<SVE2_COND_FP_UNARY_LONG:optab><mode>_relaxed): ...this and...
! 	(*cond_<SVE2_COND_FP_UNARY_LONG:optab><mode>_strict): ...this.
! 	(*cond_<SVE2_COND_FP_UNARY_NARROWB:optab><mode>_any): Split into...
! 	(*cond_<SVE2_COND_FP_UNARY_NARROWB:optab><mode>_any_relaxed): ...this
! 	and...
! 	(*cond_<SVE2_COND_FP_UNARY_NARROWB:optab><mode>_any_strict): ...this.
! 	(*cond_<SVE2_COND_INT_UNARY_FP:optab><mode>): Split into...
! 	(*cond_<SVE2_COND_INT_UNARY_FP:optab><mode>_relaxed): ...this and...
! 	(*cond_<SVE2_COND_INT_UNARY_FP:optab><mode>_strict): ...this.
! 
! 2020-12-02  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-11-25  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
! 	Do not optimize LRA subregs.
! 	* config/aarch64/aarch64-sve.md
! 	(@aarch64_pred_<SVE_INT_UNARY:optab><mode>): Tie the input to the
! 	output.
! 	(@aarch64_sve_revbhw_<SVE_ALL:mode><PRED_HSD:mode>): Likewise.
! 	(*<ANY_EXTEND:optab><SVE_PARTIAL_I:mode><SVE_HSDI:mode>2): Likewise.
! 	(@aarch64_pred_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>): Likewise.
! 	(*cnot<mode>): Likewise.
! 	(@aarch64_pred_<SVE_COND_FP_UNARY:optab><mode>): Likewise.
! 	(@aarch64_sve_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>):
! 	Likewise.
! 	(@aarch64_sve_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>):
! 	Likewise.
! 	(@aarch64_sve_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>):
! 	Likewise.
! 	(@aarch64_sve_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>):
! 	Likewise.
! 	(@aarch64_sve_<optab>_trunc<SVE_FULL_SDF:mode><SVE_FULL_HSF:mode>):
! 	Likewise.
! 	(@aarch64_sve_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>):
! 	Likewise.
! 	(@aarch64_sve_<optab>_nontrunc<SVE_FULL_HSF:mode><SVE_FULL_SDF:mode>):
! 	Likewise.
! 	* config/aarch64/aarch64-sve2.md
! 	(@aarch64_pred_<SVE2_COND_FP_UNARY_LONG:sve_fp_op><mode>): Likewise.
! 	(@aarch64_pred_<SVE2_COND_FP_UNARY_NARROWB:sve_fp_op><mode>): Likewise.
! 	(@aarch64_pred_<SVE2_U32_UNARY:sve_int_op><mode>): Likewise.
! 	(@aarch64_pred_<SVE2_COND_INT_UNARY_FP:sve_fp_op><mode>): Likewise.
! 
! 2020-12-02  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-11-30  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR rtl-optimization/98037
! 	* dse.c (find_shift_sequence): Iterate over all integers and
! 	skip modes that are too small.
! 
! 2020-12-02  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2020-09-04  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/96698
! 	PR tree-optimization/96920
! 	* tree-vectorizer.h (loop_vec_info::reduc_latch_defs): Remove.
! 	(loop_vec_info::reduc_latch_slp_defs): Likewise.
! 	* tree-vect-stmts.c (vect_transform_stmt): Remove vectorized
! 	cycle PHI latch code.
! 	* tree-vect-loop.c (maybe_set_vectorized_backedge_value): New
! 	helper to set vectorized cycle PHI latch values.
! 	(vect_transform_loop): Walk over all PHIs again after
! 	vectorizing them, calling maybe_set_vectorized_backedge_value.
! 	Call maybe_set_vectorized_backedge_value for each vectorized
! 	stmt.  Remove delayed update code.
! 	* tree-vect-slp.c (vect_analyze_slp_instance): Initialize
! 	SLP instance reduc_phis member.
! 	(vect_schedule_slp): Set vectorized cycle PHI latch values.
! 
! 2020-12-02  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2020-08-26  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/96698
! 	* tree-vectorizer.h (loop_vec_info::reduc_latch_defs): New.
! 	(loop_vec_info::reduc_latch_slp_defs): Likewise.
! 	* tree-vect-stmts.c (vect_transform_stmt): Only record
! 	stmts to update PHI latches from, perform the update ...
! 	* tree-vect-loop.c (vect_transform_loop): ... here after
! 	vectorizing those PHIs.
! 	(info_for_reduction): Properly handle non-reduction PHIs.
! 
! 2020-12-01  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2020-11-13  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/97812
! 	* tree-vrp.c (register_edge_assert_for_2): Extend the range
! 	according to its sign before seeing whether it fits.
! 
! 2020-12-01  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2020-11-10  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/97760
! 	* tree-vect-loop.c (check_reduction_path): Reject
! 	reduction paths we do not handle in epilogue generation.
! 
! 2020-12-01  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2020-10-26  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/97539
! 	* tree-vect-loop-manip.c (vect_do_peeling): Reset out-of-loop
! 	debug uses before peeling.
! 
! 2020-12-01  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2020-05-18  Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/95171
! 	* tree-inline.c (remap_gimple_stmt): Split out trapping compares
! 	when inlining into a non-call EH function.
! 
! 2020-12-01  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2020-10-26  Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/97554
! 	* sbitmap.c (sbitmap_vector_alloc): Use size_t for byte
! 	quantities to avoid overflow.
! 
! 2020-11-28  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	PR target/97939
! 	* config/sparc/predicates.md (arith_double_add_operand): Comment.
! 	* config/sparc/sparc.md (uaddvdi4): Use arith_double_operand.
! 	(addvdi4): Use arith_double_add_operand.
! 	(addsi3): Remove useless attributes.
! 	(addvsi4): Use arith_add_operand.
! 	(*cmp_ccv_plus): Likewise and add second alternative accordingly.
! 	(*cmp_ccxv_plus): Likewise.
! 	(*cmp_ccv_plus_set): Likewise.
! 	(*cmp_ccxv_plus_set): Likewise.
! 	(*cmp_ccv_plus_sltu_set): Likewise.
! 	(usubvdi4): Use arith_double_operand.
! 	(subvdi4): Use arith_double_add_operand.
! 	(subsi3): Remove useless attributes.
! 	(subvsi4): Use arith_add_operand.
! 	(*cmp_ccv_minus): Likewise and add second alternative accordingly.
! 	(*cmp_ccxv_minus): Likewise.
! 	(*cmp_ccv_minus_set): Likewise.
! 	(*cmp_ccxv_minus_set): Likewise.
! 	(*cmp_ccv_minus_sltu_set): Likewise.
! 	(negsi2): Use register_operand.
! 	(unegvsi3): Likewise.
! 	(negvsi3) Likewise.
! 	(*cmp_ccnz_neg): Likewise.
! 	(*cmp_ccxnz_neg): Likewise.
! 	(*cmp_ccnz_neg_set): Likewise.
! 	(*cmp_ccxnz_neg_set): Likewise.
! 	(*cmp_ccc_neg_set): Likewise.
! 	(*cmp_ccxc_neg_set): Likewise.
! 	(*cmp_ccc_neg_sltu_set): Likewise.
! 	(*cmp_ccv_neg): Likewise.
! 	(*cmp_ccxv_neg): Likewise.
! 	(*cmp_ccv_neg_set): Likewise.
! 	(*cmp_ccxv_neg_set): Likewise.
! 	(*cmp_ccv_neg_sltu_set): Likewise.
! 
! 2020-11-28  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	PR target/96607
! 	* config/sparc/sparc-protos.h (eligible_for_call_delay): Delete.
! 	* config/sparc/sparc.c (eligible_for_call_delay): Likewise.
! 	* config/sparc/sparc.md (in_call_delay): Likewise.
! 	(tls_delay_slot): New attribute.
! 	(define_delay [call]): Use in_branch_delay.
! 	(tgd_call<P:mode>): Set type to call_no_delay_slot when
! 	tls_delay_slot is false.
! 	(tldm_call<P:mode>): Likewise.
! 
! 2020-11-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	Backported from master:
! 	2020-11-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	* config/aarch64/aarch64.opt
! 	(-param=aarch64-autovec-preference): Define.
! 	* config/aarch64/aarch64.c (aarch64_override_options_internal):
! 	Set aarch64_sve_compare_costs to 0 when preferring only Advanced
! 	SIMD.
! 	(aarch64_cmp_autovec_modes): Define.
! 	(aarch64_preferred_simd_mode): Adjust to use the above.
! 	(aarch64_autovectorize_vector_modes): Likewise.
! 	* doc/invoke.texi: Document aarch64-autovec-preference param.
! 
! 2020-11-25  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-11-20  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/97528
! 	* config/arm/arm.c (neon_vector_mem_operand): For POST_MODIFY, require
! 	first POST_MODIFY operand is a REG and is equal to the first operand
! 	of PLUS.
! 
! 2020-11-25  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-11-14  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR debug/97599
! 	* dwarf2out.c (gen_subprogram_die): Call
! 	gen_unspecified_parameters_die even if not early dwarf, but only
! 	if subr_die is a newly created DIE.
! 
! 2020-11-24  Jason Merrill  <jason@redhat.com>
! 
! 	PR c++/97918
! 	* dwarf2out.c (dwarf2out_early_finish): flush_limbo_die_list
! 	after gen_scheduled_generic_parms_dies.
! 
! 2020-11-24  Jason Merrill  <jason@redhat.com>
! 
! 	PR debug/97060
! 	* dwarf2out.c (gen_subprogram_die): It's a declaration
! 	if DECL_INITIAL isn't set.
! 
! 2020-11-24  Richard Earnshaw  <rearnsha@arm.com>
! 
! 	PR target/97534
! 	* config/arm/arm.c (arm_split_atomic_op): Use gen_int_mode when
! 	negating a const_int.
! 
! 2020-11-24  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	Backported from master:
! 	2020-11-24  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* omp-expand.c (expand_oacc_for): More explicit checking of which
! 	OMP constructs we're expecting.
! 
! 2020-11-23  Matthew Malcomson  <matthew.malcomson@arm.com>
! 
! 	* doc/install.texi: Document bootstrap-asan option.
! 
! 2020-11-19  Alex Coplan  <alex.coplan@arm.com>
! 
! 	Backported from master:
! 	2020-11-12  Alex Coplan  <alex.coplan@arm.com>
! 
! 	PR target/97730
! 	* config/aarch64/aarch64-sve2.md (@aarch64_sve2_bcax<mode>):
! 	Change to define_expand, add missing (trivially-predicated) not
! 	rtx to fix wrong code bug.
! 	(*aarch64_sve2_bcax<mode>): New.
! 
! 2020-11-19  Uroš Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/97887
! 	* config/i386/i386.md (*<absneg:code><mode>2_i387_1):
! 	Disable for TARGET_SSE_MATH modes.
! 
! 2020-11-17  Sebastian Pop  <spop@amazon.com>
! 
! 	Backported from master:
! 	2020-11-17  Sebastian Pop  <spop@amazon.com>
! 
! 	* config.gcc: add configure flags --with-{cpu,arch,tune}-{32,64}
! 	as alias flags for --with-{cpu,arch,tune} on AArch64.
! 	* doc/install.texi: Document new flags for aarch64.
! 
! 2020-11-17  Sebastian Pop  <spop@amazon.com>
! 
! 	Backported from master:
! 	2020-11-17  Sebastian Pop  <spop@amazon.com>
! 
! 	* config.gcc: Add --with-tune to AArch64 configure flags.
! 
! 2020-11-17  Tamar Christina  <tamar.christina@arm.com>
! 
! 	PR target/97535
! 	* config/aarch64/aarch64.c (aarch64_expand_cpymem): Use unsigned
! 	arithmetic in check.
! 
! 2020-11-17  Monk Chiang  <monk.chiang@sifive.com>
! 
! 	Backported from master:
! 	2020-11-14  Monk Chiang  <monk.chiang@sifive.com>
! 
! 	PR target/97682
! 	* config/riscv/riscv.h (RISCV_PROLOGUE_TEMP_REGNUM): Change register
! 	to t0.
! 	(RISCV_CALL_ADDRESS_TEMP_REGNUM): New Marco, define t1 register.
! 	(RISCV_CALL_ADDRESS_TEMP): Use it for call instructions.
! 	* config/riscv/riscv.c (riscv_legitimize_call_address): Use
! 	RISCV_CALL_ADDRESS_TEMP.
! 	(riscv_compute_frame_info): Change temporary register to t0 form t1.
! 	(riscv_trampoline_init): Adjust comment.
! 
! 2020-11-16  Cui,Lili  <lili.cui@intel.com>
! 
! 	* config/i386/i386.h: Add PREFETCHW to march=broadwell.
! 	* doc/invoke.texi: Put PREFETCHW back to relation arch.
! 
! 2020-11-13  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	Backported from master:
! 	2020-11-13  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* omp-low.c (scan_sharing_clauses, scan_omp_for)
! 	(lower_oacc_reductions, lower_omp_target): More explicit checking
! 	of which OMP constructs we're expecting.
! 
! 2020-11-13  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	Backported from master:
! 	2020-11-13  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* omp-expand.c (expand_omp_target): Attach an attribute to all
! 	outlined OpenACC compute regions.
! 	* omp-offload.c (execute_oacc_device_lower): Adjust.
! 
! 2020-11-12  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	Backported from master:
! 	2020-11-06  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	* config/rs6000/rs6000.h (BIGGEST_ALIGNMENT): Revert previous commit
! 	so as not to break the ABI.
! 	* config/rs6000/rs6000-call.c (rs6000_init_builtins): Set the ABI
! 	mandated alignment for __vector_pair and __vector_quad types.
! 
! 2020-11-11  liuhongt  <hongtao.liu@intel.com>
! 
! 	* config/i386/i386-options.c (ix86_option_override_internal):
! 	Handle PTA_CLDEMOTE.
! 	* config/i386/i386.h (PTA_CLDEMOTE): Define.
! 
! 2020-11-10  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/97764
! 	* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): For
! 	little-endian stores with negative pd.offset, subtract
! 	BITS_PER_UNIT - amnt from size if amnt is non-zero.
! 
! 2020-11-09  Sudakshina Das  <sudi.das@arm.com>
! 
! 	Backported from master:
! 	2020-11-02  Sudakshina Das  <sudi.das@arm.com>
! 
! 	PR target/97638
! 	* config/aarch64/aarch64-bti-insert.c (aarch64_pac_insn_p): Update
! 	return value on INSN_P check.
! 
! 2020-11-09  Lili Cui  <lili.cui@intel.com>
! 
! 	PR target/97685
! 	* config/i386/i386.h:
! 	(PTA_BROADWELL): Delete PTA_PRFCHW.
! 	(PTA_SILVERMONT): Add PTA_PRFCHW.
! 	(PTA_KNL): Add PTA_PREFETCHWT1.
! 	(PTA_TREMONT): Add PTA_MOVDIRI, PTA_MOVDIR64B, PTA_CLDEMOTE and PTA_WAITPKG.
! 	* doc/invoke.texi: Delete PREFETCHW for broadwell, skylake, knl, knm,
! 	skylake-avx512, cannonlake, icelake-client, icelake-server, cascadelake,
! 	cooperlake, tigerlake and sapphirerapids.
! 	Add PREFETCHW for silvermont, goldmont, goldmont-plus and tremont.
! 	Add XSAVEC and XSAVES for goldmont, goldmont-plus and tremont.
! 	Add MOVDIRI, MOVDIR64B, CLDEMOTE and WAITPKG for tremont.
! 	Add KEYLOCKER and HREST for alderlake.
! 	Add AMX-BF16, AMX-TILE, AMX-INT8 and UINTR for sapphirerapids.
! 	Add KEYLOCKER for tigerlake.
! 
! 2020-11-07  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2020-10-21  Richard Biener  <rguenther@suse.de>
! 		    Andrew MacLeod  <amacleod@redhat.com>
! 		    Martin Liska  <mliska@suse.cz>
! 
! 	PR target/97360
! 	* config/rs6000/rs6000-call.c (rs6000_init_builtins): Remove call to
! 	build_distinct_type_copy().
! 
! 2020-11-04  Andrea Corallo  <andrea.corallo@arm.com>
! 
! 	* config/aarch64/arm_neon.h (__ST2_LANE_FUNC, __ST3_LANE_FUNC)
! 	(__ST4_LANE_FUNC): Rename the macro generating the 'q' variants
! 	into __ST2Q_LANE_FUNC, __ST2Q_LANE_FUNC, __ST2Q_LANE_FUNC so they
! 	all can be undefed at the and of the file.
! 	(vst2_lane_bf16, vst2q_lane_bf16, vst3_lane_bf16, vst3q_lane_bf16)
! 	(vst4_lane_bf16, vst4q_lane_bf16): Add new intrinsics.
! 
! 2020-11-04  Andrea Corallo  <andrea.corallo@arm.com>
! 
! 	* config/aarch64/arm_neon.h (__LD2_LANE_FUNC, __LD3_LANE_FUNC)
! 	(__LD4_LANE_FUNC): Rename the macro geneating the 'q' variants
! 	into __LD2Q_LANE_FUNC, __LD2Q_LANE_FUNC, __LD2Q_LANE_FUNC so they
! 	all can be undefed at the and of the file.
! 	(vld2_lane_bf16, vld2q_lane_bf16, vld3_lane_bf16, vld3q_lane_bf16)
! 	(vld4_lane_bf16, vld4q_lane_bf16): Add new intrinsics.
! 
! 2020-11-04  Andrea Corallo  <andrea.corallo@arm.com>
! 
! 	* config/aarch64/arm_neon.h (vcopy_lane_bf16, vcopyq_lane_bf16)
! 	(vcopyq_laneq_bf16, vcopy_laneq_bf16): New intrinsics.
! 
! 2020-11-03  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	Backported from master:
! 	2020-11-03  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* omp-low.c (scan_omp_for) <OpenACC>: Use proper location to
! 	'inform' of enclosing parent compute construct.
! 
! 2020-11-03  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	Backported from master:
! 	2020-11-03  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* omp-low.c (scan_omp_for) <OpenACC>: Move earlier inconsistent
! 	nested 'reduction' clauses checking.
! 
! 2020-11-03  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	Backported from master:
! 	2020-11-03  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* omp-low.c (scan_omp_for) <OpenACC>: More precise diagnostics for
! 	'gang', 'worker', 'vector' clauses with arguments only allowed in
! 	'kernels' regions.
! 
! 2020-11-02  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* wide-int.cc (wi::set_bit_large): Call canonize unless setting
! 	msb bit and clearing bits above it.
! 
! 2020-10-29  Martin Liska  <mliska@suse.cz>
! 
! 	Backported from master:
! 	2020-10-29  Martin Liska  <mliska@suse.cz>
! 
! 	PR lto/97508
! 	* langhooks.c (lhd_begin_section): Call get_section with
! 	not_existing = true.
! 	* output.h (get_section): Add new argument.
! 	* varasm.c (get_section): Fail when NOT_EXISTING is true
! 	and a section already exists.
! 	* ipa-cp.c (ipcp_write_summary): Remove.
! 	(ipcp_read_summary): Likewise.
! 	* ipa-fnsummary.c (ipa_fn_summary_read): Always read jump
! 	functions summary.
! 	(ipa_fn_summary_write): Always stream it.
! 
! 2020-10-28  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2020-09-18  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/97081
! 	* tree-vect-patterns.c (vect_recog_rotate_pattern): Use the
! 	precision of the shifted operand to determine the mask.
! 
! 2020-10-26  Martin Jambor  <mjambor@suse.cz>
! 
! 	Backported from master:
! 	2020-10-19  Martin Jambor  <mjambor@suse.cz>
! 
! 	PR tree-optimization/97456
! 	* tree-complex.c (set_component_ssa_name): Do not replace ignored decl
! 	default definitions with new component vars.  Reorder if conditions.
! 
! 2020-10-22  Andreas Krebbel  <krebbel@linux.ibm.com>
! 
! 	Backported from master:
! 	2020-10-22  Andreas Krebbel  <krebbel@linux.ibm.com>
! 
! 	PR rtl-optimization/97439
! 	* dfp.c (decimal_real_maxval): Set the sign flag in the
! 	generated number.
! 
! 2020-10-22  Kito Cheng  <kito.cheng@sifive.com>
! 
! 	Backported from master:
! 	2020-10-14  Kito Cheng  <kito.cheng@sifive.com>
! 
! 	PR target/96759
! 	* expr.c (expand_assignment): Handle misaligned stores with PARALLEL
! 	value.
! 
! 2020-10-21  liuhongt  <hongtao.liu@intel.com>
! 
! 	PR target/97506
! 	* config/i386/i386-expand.c (ix86_expand_sse_movcc): Move
! 	op_true to dest directly when op_true equals op_false.
! 
! 2020-10-19  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	Backported from master:
! 	2020-10-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	PR target/97327
! 	* config/arm/arm.c (fp_bitlist): Add isa_bit_mve_float to FP bits array.
! 
! 2020-10-16  Christophe Lyon  <christophe.lyon@linaro.org>
! 
! 	Backported from master:
! 	2020-10-08  Christophe Lyon  <christophe.lyon@linaro.org>
! 
! 	PR target/96914
! 	* config/arm/arm_mve.h (__arm_vcvtnq_u32_f32): New.
! 
! 2020-10-16  Christophe Lyon  <christophe.lyon@linaro.org>
! 
! 	Backported from master:
! 	2020-10-08  Christophe Lyon  <christophe.lyon@linaro.org>
! 
! 	PR target/96914
! 	* config/arm/arm_mve.h (vqrdmlashq_n_u8, vqrdmlashq_n_u16)
! 	(vqrdmlashq_n_u32, vqrdmlahq_n_u8, vqrdmlahq_n_u16)
! 	(vqrdmlahq_n_u32, vqdmlahq_n_u8, vqdmlahq_n_u16, vqdmlahq_n_u32)
! 	(vmlaldavaxq_p_u16, vmlaldavaxq_p_u32): Remove.
! 	* config/arm/arm_mve_builtins.def (vqrdmlashq_n_u, vqrdmlahq_n_u)
! 	(vqdmlahq_n_u, vmlaldavaxq_p_u): Remove.
! 	* config/arm/unspecs.md (VQDMLAHQ_N_U, VQRDMLAHQ_N_U)
! 	(VQRDMLASHQ_N_U)
! 	(VMLALDAVAXQ_P_U): Remove unspecs.
! 	* config/arm/iterators.md (VQDMLAHQ_N_U, VQRDMLAHQ_N_U)
! 	(VQRDMLASHQ_N_U, VMLALDAVAXQ_P_U): Remove attributes.
! 	(VQDMLAHQ_N, VQRDMLAHQ_N, VQRDMLASHQ_N, VMLALDAVAXQ_P): Remove
! 	unsigned variants from iterators.
! 	* config/arm/mve.md (mve_vqdmlahq_n_<supf><mode>)
! 	(mve_vqrdmlahq_n_<supf><mode>)
! 	(mve_vqrdmlashq_n_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>):
! 	Update comment.
! 
! 2020-10-16  Christophe Lyon  <christophe.lyon@linaro.org>
! 
! 	Backported from master:
! 	2020-10-08  Christophe Lyon  <christophe.lyon@linaro.org>
! 
! 	PR target/96914
! 	* config/arm/arm_mve.h (vqdmlashq, vqdmlashq_m): Define.
! 	* config/arm/arm_mve_builtins.def (vqdmlashq_n_s)
! 	(vqdmlashq_m_n_s,): New.
! 	* config/arm/unspecs.md (VQDMLASHQ_N_S, VQDMLASHQ_M_N_S): New
! 	unspecs.
! 	* config/arm/iterators.md (VQDMLASHQ_N_S, VQDMLASHQ_M_N_S): New
! 	attributes.
! 	(VQDMLASHQ_N): New iterator.
! 	* config/arm/mve.md (mve_vqdmlashq_n_, mve_vqdmlashq_m_n_s): New
! 	patterns.
! 
! 2020-10-16  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-10-13  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR rtl-optimization/97386
! 	* combine.c (simplify_shift_const_1): Don't optimize nested ROTATEs if
! 	they have different modes.
! 
! 2020-10-16  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-10-08  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR sanitizer/97294
! 	* tree-cfg.c (move_block_to_fn): Call notice_special_calls on
! 	call stmts being moved into dest_cfun.
! 	* omp-low.c (lower_rec_input_clauses): Set cfun->calls_alloca when
! 	adding __builtin_alloca_with_align call without gimplification.
! 
! 2020-10-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	Backported from master:
! 	2020-10-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	PR target/97291
! 	* config/arm/arm-builtins.c (arm_strsbwbs_qualifiers): Modify array.
! 	(arm_strsbwbu_qualifiers): Likewise.
! 	(arm_strsbwbs_p_qualifiers): Likewise.
! 	(arm_strsbwbu_p_qualifiers): Likewise.
! 	* config/arm/arm_mve.h (__arm_vstrdq_scatter_base_wb_s64): Modify
! 	function definition.
! 	(__arm_vstrdq_scatter_base_wb_u64): Likewise.
! 	(__arm_vstrdq_scatter_base_wb_p_s64): Likewise.
! 	(__arm_vstrdq_scatter_base_wb_p_u64): Likewise.
! 	(__arm_vstrwq_scatter_base_wb_p_s32): Likewise.
! 	(__arm_vstrwq_scatter_base_wb_p_u32): Likewise.
! 	(__arm_vstrwq_scatter_base_wb_s32): Likewise.
! 	(__arm_vstrwq_scatter_base_wb_u32): Likewise.
! 	(__arm_vstrwq_scatter_base_wb_f32): Likewise.
! 	(__arm_vstrwq_scatter_base_wb_p_f32): Likewise.
! 	* config/arm/arm_mve_builtins.def (vstrwq_scatter_base_wb_add_u): Remove
! 	expansion for the builtin.
! 	(vstrwq_scatter_base_wb_add_s): Likewise.
! 	(vstrwq_scatter_base_wb_add_f): Likewise.
! 	(vstrdq_scatter_base_wb_add_u): Likewise.
! 	(vstrdq_scatter_base_wb_add_s): Likewise.
! 	(vstrwq_scatter_base_wb_p_add_u): Likewise.
! 	(vstrwq_scatter_base_wb_p_add_s): Likewise.
! 	(vstrwq_scatter_base_wb_p_add_f): Likewise.
! 	(vstrdq_scatter_base_wb_p_add_u): Likewise.
! 	(vstrdq_scatter_base_wb_p_add_s): Likewise.
! 	* config/arm/mve.md (mve_vstrwq_scatter_base_wb_<supf>v4si): Remove
! 	expand.
! 	(mve_vstrwq_scatter_base_wb_add_<supf>v4si): Likewise.
! 	(mve_vstrwq_scatter_base_wb_<supf>v4si_insn): Rename pattern to ...
! 	(mve_vstrwq_scatter_base_wb_<supf>v4si): This.
! 	(mve_vstrwq_scatter_base_wb_p_<supf>v4si): Remove expand.
! 	(mve_vstrwq_scatter_base_wb_p_add_<supf>v4si): Likewise.
! 	(mve_vstrwq_scatter_base_wb_p_<supf>v4si_insn): Rename pattern to ...
! 	(mve_vstrwq_scatter_base_wb_p_<supf>v4si): This.
! 	(mve_vstrwq_scatter_base_wb_fv4sf): Remove expand.
! 	(mve_vstrwq_scatter_base_wb_add_fv4sf): Likewise.
! 	(mve_vstrwq_scatter_base_wb_fv4sf_insn): Rename pattern to ...
! 	(mve_vstrwq_scatter_base_wb_fv4sf): This.
! 	(mve_vstrwq_scatter_base_wb_p_fv4sf): Remove expand.
! 	(mve_vstrwq_scatter_base_wb_p_add_fv4sf): Likewise.
! 	(mve_vstrwq_scatter_base_wb_p_fv4sf_insn): Rename pattern to ...
! 	(mve_vstrwq_scatter_base_wb_p_fv4sf): This.
! 	(mve_vstrdq_scatter_base_wb_<supf>v2di): Remove expand.
! 	(mve_vstrdq_scatter_base_wb_add_<supf>v2di): Likewise.
! 	(mve_vstrdq_scatter_base_wb_<supf>v2di_insn): Rename pattern to ...
! 	(mve_vstrdq_scatter_base_wb_<supf>v2di): This.
! 	(mve_vstrdq_scatter_base_wb_p_<supf>v2di): Remove expand.
! 	(mve_vstrdq_scatter_base_wb_p_add_<supf>v2di): Likewise.
! 	(mve_vstrdq_scatter_base_wb_p_<supf>v2di_insn): Rename pattern to ...
! 	(mve_vstrdq_scatter_base_wb_p_<supf>v2di): This.
! 
! 2020-10-16  Joe Ramsay  <Joe.Ramsay@arm.com>
! 
! 	Backported from master:
! 	2020-10-06  Joe Ramsay  <joe.ramsay@arm.com>
! 
! 	* config/arm/arm-cpus.in:
! 	(ALL_FPU_INTERNAL): Remove vfp_base.
! 	(VFPv2): Remove vfp_base.
! 	(MVE): Remove vfp_base.
! 	(vfp_base): Redefine as implied bit dependent on MVE or FP
! 	(cortex-m55): Add flags to disable MVE, MVE FP, FP and DSP extensions.
! 	* config/arm/arm.c (arm_configure_build_target): Add implied bits to ISA.
! 	* config/arm/parsecpu.awk:
! 	(gen_isa): Print implied bits and their dependencies to ISA header.
! 	(gen_data): Add parsing for implied feature bits.
! 
! 2020-10-16  Martin Jambor  <mjambor@suse.cz>
! 
! 	Backported from master:
! 	2020-10-07  Martin Jambor  <mjambor@suse.cz>
! 
! 	PR ipa/96394
! 	* ipa-prop.c (update_indirect_edges_after_inlining): Do not add
! 	resolved speculation edges to vector of new direct edges even in
! 	presence of multiple speculative direct edges for a single call.
! 
! 2020-10-16  Martin Liska  <mliska@suse.cz>
! 
! 	Backported from master:
! 	2020-10-16  Martin Liska  <mliska@suse.cz>
! 
! 	PR ipa/97404
! 	* ipa-prop.c (struct ipa_vr_ggc_hash_traits):
! 	Compare types of VRP as we can merge ranges of different types.
! 
! 2020-10-15  Martin Liska  <mliska@suse.cz>
! 
! 	Backported from master:
! 	2020-10-15  Martin Liska  <mliska@suse.cz>
! 
! 	PR ipa/97295
! 	* profile-count.c (profile_count::to_frequency): Move part of
! 	gcc_assert to STATIC_ASSERT.
! 	* regs.h (REG_FREQ_FROM_BB): Do not use count.to_frequency for
! 	a function that does not have count_max initialized.
! 
! 2020-10-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	* config/aarch64/aarch64.c (neoversen2_tunings): Define.
! 	* config/aarch64/aarch64-cores.def (neoverse-n2): Use it.
! 
! 2020-10-13  Alex Coplan  <alex.coplan@arm.com>
! 
! 	Backported from master:
! 	2020-09-30  Alex Coplan  <alex.coplan@arm.com>
! 
! 	PR target/97251
! 	* config/arm/arm.md (movsf): Relax TARGET_HARD_FLOAT to
! 	TARGET_VFP_BASE.
! 	(movdf): Likewise.
! 	* config/arm/vfp.md (no_literal_pool_df_immediate): Likewise.
! 	(no_literal_pool_sf_immediate): Likewise.
! 
! 2020-10-13  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-09-25  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/arm/arm-protos.h (arm_mve_mode_and_operands_type_check):
! 	Delete.
! 	* config/arm/arm.c (arm_coproc_mem_operand_wb): Use a scale factor
! 	of 2 rather than 4 for 16-bit modes.
! 	(arm_mve_mode_and_operands_type_check): Delete.
! 	* config/arm/constraints.md (Uj): Allow writeback for Neon,
! 	but continue to disallow it for MVE.
! 	* config/arm/arm.md (*arm32_mov<HFBF:mode>): Add !TARGET_HAVE_MVE.
! 	* config/arm/vfp.md (*mov_load_vfp_hf16, *mov_store_vfp_hf16): Fold
! 	back into...
! 	(*mov<mode>_vfp_<mode>16): ...here but use Uj for the FPR memory
! 	constraints.  Use for base MVE too.
! 
! 2020-10-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	Backported from master:
! 	2020-10-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	PR target/97349
! 	* config/aarch64/arm_neon.h (vdupq_n_p8, vdupq_n_p16,
! 	vdupq_n_p64, vdupq_n_s8, vdupq_n_s16, vdupq_n_u8, vdupq_n_u16):
! 	Fix argument type.
! 
! 2020-10-12  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/97357
! 	* tree-ssa-loop-split.c (ssa_semi_invariant_p): Abnormal
! 	SSA names are not semi invariant.
! 
! 2020-10-12  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/97255
! 	* tree-vect-patterns.c (vect_recog_bool_pattern): Also handle
! 	VIEW_CONVERT_EXPR.
! 
! 2020-10-09  Vladimir Makarov  <vmakarov@redhat.com>
! 
! 	PR rtl-optimization/97313
! 	* lra-constraints.c (match_reload): Don't keep strict_low_part in
! 	reloads for non-registers.
! 
! 2020-10-08  Martin Sebor  <msebor@redhat.com>
! 
! 	PR middle-end/95189
! 	PR middle-end/95886
! 	* builtins.c (inline_expand_builtin_string_cmp): Rename...
! 	(inline_expand_builtin_bytecmp): ...to this.
! 	(builtin_memcpy_read_str): Don't expect data to be nul-terminated.
! 	(expand_builtin_memory_copy_args): Handle object representations
! 	with embedded nul bytes.
! 	(expand_builtin_memcmp): Same.
! 	(expand_builtin_strcmp): Adjust call to naming change.
! 	(expand_builtin_strncmp): Same.
! 	* expr.c (string_constant): Create empty strings with nonzero size.
! 	* fold-const.c (c_getstr): Rename locals and update comments.
! 	* tree.c (build_string): Accept null pointer argument.
! 	(build_string_literal): Same.
! 	* tree.h (build_string): Provide a default.
! 	(build_string_literal): Same.
! 
! 2020-10-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	Backported from master:
! 	2020-09-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	PR target/97150
! 	* config/aarch64/arm_neon.h (vqrshlb_u8): Make second argument
! 	signed.
! 	(vqrshlh_u16): Likewise.
! 	(vqrshls_u32): Likewise.
! 	(vqrshld_u64): Likewise.
! 	(vqshlb_u8): Likewise.
! 	(vqshlh_u16): Likewise.
! 	(vqshls_u32): Likewise.
! 	(vqshld_u64): Likewise.
! 	(vshld_u64): Likewise.
! 
! 2020-10-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	Backported from master:
! 	2020-09-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	PR target/96313
! 	* config/aarch64/aarch64-simd-builtins.def (sqmovun): Use UNOPUS
! 	qualifiers.
! 	* config/aarch64/arm_neon.h (vqmovun_s16): Adjust builtin call.
! 	Remove unnecessary result cast.
! 	(vqmovun_s32): Likewise.
! 	(vqmovun_s64): Likewise.
! 	(vqmovunh_s16): Likewise.  Fix return type.
! 	(vqmovuns_s32): Likewise.
! 	(vqmovund_s64): Likewise.
! 
! 2020-10-08  Alan Modra  <amodra@gmail.com>
! 
! 	Backported from master:
! 	2020-10-01  Alan Modra  <amodra@gmail.com>
! 
! 	* config/rs6000/rs6000.c (rs6000_legitimize_address): Use
! 	gen_int_mode for high part of address constant.
! 
! 2020-10-06  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	Backported from master:
! 	2020-10-06  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/iterators.md (MVE_types): Move mode iterator from mve.md to
! 	iterators.md.
! 	(MVE_VLD_ST): Likewise.
! 	(MVE_0): Likewise.
! 	(MVE_1): Likewise.
! 	(MVE_3): Likewise.
! 	(MVE_2): Likewise.
! 	(MVE_5): Likewise.
! 	(MVE_6): Likewise.
! 	(MVE_CNVT): Move mode attribute iterator from mve.md to iterators.md.
! 	(MVE_LANES): Likewise.
! 	(MVE_constraint): Likewise.
! 	(MVE_constraint1): Likewise.
! 	(MVE_constraint2): Likewise.
! 	(MVE_constraint3): Likewise.
! 	(MVE_pred): Likewise.
! 	(MVE_pred1): Likewise.
! 	(MVE_pred2): Likewise.
! 	(MVE_pred3): Likewise.
! 	(MVE_B_ELEM): Likewise.
! 	(MVE_H_ELEM): Likewise.
! 	(V_sz_elem1): Likewise.
! 	(V_extr_elem): Likewise.
! 	(earlyclobber_32): Likewise.
! 	(supf): Move int attribute from mve.md to iterators.md.
! 	(mode1): Likewise.
! 	(VCVTQ_TO_F): Move int iterator from mve.md to iterators.md.
! 	(VMVNQ_N): Likewise.
! 	(VREV64Q): Likewise.
! 	(VCVTQ_FROM_F): Likewise.
! 	(VREV16Q): Likewise.
! 	(VCVTAQ): Likewise.
! 	(VMVNQ): Likewise.
! 	(VDUPQ_N): Likewise.
! 	(VCLZQ): Likewise.
! 	(VADDVQ): Likewise.
! 	(VREV32Q): Likewise.
! 	(VMOVLBQ): Likewise.
! 	(VMOVLTQ): Likewise.
! 	(VCVTPQ): Likewise.
! 	(VCVTNQ): Likewise.
! 	(VCVTMQ): Likewise.
! 	(VADDLVQ): Likewise.
! 	(VCTPQ): Likewise.
! 	(VCTPQ_M): Likewise.
! 	(VCVTQ_N_TO_F): Likewise.
! 	(VCREATEQ): Likewise.
! 	(VSHRQ_N): Likewise.
! 	(VCVTQ_N_FROM_F): Likewise.
! 	(VADDLVQ_P): Likewise.
! 	(VCMPNEQ): Likewise.
! 	(VSHLQ): Likewise.
! 	(VABDQ): Likewise.
! 	(VADDQ_N): Likewise.
! 	(VADDVAQ): Likewise.
! 	(VADDVQ_P): Likewise.
! 	(VANDQ): Likewise.
! 	(VBICQ): Likewise.
! 	(VBRSRQ_N): Likewise.
! 	(VCADDQ_ROT270): Likewise.
! 	(VCADDQ_ROT90): Likewise.
! 	(VCMPEQQ): Likewise.
! 	(VCMPEQQ_N): Likewise.
! 	(VCMPNEQ_N): Likewise.
! 	(VEORQ): Likewise.
! 	(VHADDQ): Likewise.
! 	(VHADDQ_N): Likewise.
! 	(VHSUBQ): Likewise.
! 	(VHSUBQ_N): Likewise.
! 	(VMAXQ): Likewise.
! 	(VMAXVQ): Likewise.
! 	(VMINQ): Likewise.
! 	(VMINVQ): Likewise.
! 	(VMLADAVQ): Likewise.
! 	(VMULHQ): Likewise.
! 	(VMULLBQ_INT): Likewise.
! 	(VMULLTQ_INT): Likewise.
! 	(VMULQ): Likewise.
! 	(VMULQ_N): Likewise.
! 	(VORNQ): Likewise.
! 	(VORRQ): Likewise.
! 	(VQADDQ): Likewise.
! 	(VQADDQ_N): Likewise.
! 	(VQRSHLQ): Likewise.
! 	(VQRSHLQ_N): Likewise.
! 	(VQSHLQ): Likewise.
! 	(VQSHLQ_N): Likewise.
! 	(VQSHLQ_R): Likewise.
! 	(VQSUBQ): Likewise.
! 	(VQSUBQ_N): Likewise.
! 	(VRHADDQ): Likewise.
! 	(VRMULHQ): Likewise.
! 	(VRSHLQ): Likewise.
! 	(VRSHLQ_N): Likewise.
! 	(VRSHRQ_N): Likewise.
! 	(VSHLQ_N): Likewise.
! 	(VSHLQ_R): Likewise.
! 	(VSUBQ): Likewise.
! 	(VSUBQ_N): Likewise.
! 	(VADDLVAQ): Likewise.
! 	(VBICQ_N): Likewise.
! 	(VMLALDAVQ): Likewise.
! 	(VMLALDAVXQ): Likewise.
! 	(VMOVNBQ): Likewise.
! 	(VMOVNTQ): Likewise.
! 	(VORRQ_N): Likewise.
! 	(VQMOVNBQ): Likewise.
! 	(VQMOVNTQ): Likewise.
! 	(VSHLLBQ_N): Likewise.
! 	(VSHLLTQ_N): Likewise.
! 	(VRMLALDAVHQ): Likewise.
! 	(VBICQ_M_N): Likewise.
! 	(VCVTAQ_M): Likewise.
! 	(VCVTQ_M_TO_F): Likewise.
! 	(VQRSHRNBQ_N): Likewise.
! 	(VABAVQ): Likewise.
! 	(VSHLCQ): Likewise.
! 	(VRMLALDAVHAQ): Likewise.
! 	(VADDVAQ_P): Likewise.
! 	(VCLZQ_M): Likewise.
! 	(VCMPEQQ_M_N): Likewise.
! 	(VCMPEQQ_M): Likewise.
! 	(VCMPNEQ_M_N): Likewise.
! 	(VCMPNEQ_M): Likewise.
! 	(VDUPQ_M_N): Likewise.
! 	(VMAXVQ_P): Likewise.
! 	(VMINVQ_P): Likewise.
! 	(VMLADAVAQ): Likewise.
! 	(VMLADAVQ_P): Likewise.
! 	(VMLAQ_N): Likewise.
! 	(VMLASQ_N): Likewise.
! 	(VMVNQ_M): Likewise.
! 	(VPSELQ): Likewise.
! 	(VQDMLAHQ_N): Likewise.
! 	(VQRDMLAHQ_N): Likewise.
! 	(VQRDMLASHQ_N): Likewise.
! 	(VQRSHLQ_M_N): Likewise.
! 	(VQSHLQ_M_R): Likewise.
! 	(VREV64Q_M): Likewise.
! 	(VRSHLQ_M_N): Likewise.
! 	(VSHLQ_M_R): Likewise.
! 	(VSLIQ_N): Likewise.
! 	(VSRIQ_N): Likewise.
! 	(VMLALDAVQ_P): Likewise.
! 	(VQMOVNBQ_M): Likewise.
! 	(VMOVLTQ_M): Likewise.
! 	(VMOVNBQ_M): Likewise.
! 	(VRSHRNTQ_N): Likewise.
! 	(VORRQ_M_N): Likewise.
! 	(VREV32Q_M): Likewise.
! 	(VREV16Q_M): Likewise.
! 	(VQRSHRNTQ_N): Likewise.
! 	(VMOVNTQ_M): Likewise.
! 	(VMOVLBQ_M): Likewise.
! 	(VMLALDAVAQ): Likewise.
! 	(VQSHRNBQ_N): Likewise.
! 	(VSHRNBQ_N): Likewise.
! 	(VRSHRNBQ_N): Likewise.
! 	(VMLALDAVXQ_P): Likewise.
! 	(VQMOVNTQ_M): Likewise.
! 	(VMVNQ_M_N): Likewise.
! 	(VQSHRNTQ_N): Likewise.
! 	(VMLALDAVAXQ): Likewise.
! 	(VSHRNTQ_N): Likewise.
! 	(VCVTMQ_M): Likewise.
! 	(VCVTNQ_M): Likewise.
! 	(VCVTPQ_M): Likewise.
! 	(VCVTQ_M_N_FROM_F): Likewise.
! 	(VCVTQ_M_FROM_F): Likewise.
! 	(VRMLALDAVHQ_P): Likewise.
! 	(VADDLVAQ_P): Likewise.
! 	(VABAVQ_P): Likewise.
! 	(VSHLQ_M): Likewise.
! 	(VSRIQ_M_N): Likewise.
! 	(VSUBQ_M): Likewise.
! 	(VCVTQ_M_N_TO_F): Likewise.
! 	(VHSUBQ_M): Likewise.
! 	(VSLIQ_M_N): Likewise.
! 	(VRSHLQ_M): Likewise.
! 	(VMINQ_M): Likewise.
! 	(VMULLBQ_INT_M): Likewise.
! 	(VMULHQ_M): Likewise.
! 	(VMULQ_M): Likewise.
! 	(VHSUBQ_M_N): Likewise.
! 	(VHADDQ_M_N): Likewise.
! 	(VORRQ_M): Likewise.
! 	(VRMULHQ_M): Likewise.
! 	(VQADDQ_M): Likewise.
! 	(VRSHRQ_M_N): Likewise.
! 	(VQSUBQ_M_N): Likewise.
! 	(VADDQ_M): Likewise.
! 	(VORNQ_M): Likewise.
! 	(VRHADDQ_M): Likewise.
! 	(VQSHLQ_M): Likewise.
! 	(VANDQ_M): Likewise.
! 	(VBICQ_M): Likewise.
! 	(VSHLQ_M_N): Likewise.
! 	(VCADDQ_ROT270_M): Likewise.
! 	(VQRSHLQ_M): Likewise.
! 	(VQADDQ_M_N): Likewise.
! 	(VADDQ_M_N): Likewise.
! 	(VMAXQ_M): Likewise.
! 	(VQSUBQ_M): Likewise.
! 	(VMLASQ_M_N): Likewise.
! 	(VMLADAVAQ_P): Likewise.
! 	(VBRSRQ_M_N): Likewise.
! 	(VMULQ_M_N): Likewise.
! 	(VCADDQ_ROT90_M): Likewise.
! 	(VMULLTQ_INT_M): Likewise.
! 	(VEORQ_M): Likewise.
! 	(VSHRQ_M_N): Likewise.
! 	(VSUBQ_M_N): Likewise.
! 	(VHADDQ_M): Likewise.
! 	(VABDQ_M): Likewise.
! 	(VMLAQ_M_N): Likewise.
! 	(VQSHLQ_M_N): Likewise.
! 	(VMLALDAVAQ_P): Likewise.
! 	(VMLALDAVAXQ_P): Likewise.
! 	(VQRSHRNBQ_M_N): Likewise.
! 	(VQRSHRNTQ_M_N): Likewise.
! 	(VQSHRNBQ_M_N): Likewise.
! 	(VQSHRNTQ_M_N): Likewise.
! 	(VRSHRNBQ_M_N): Likewise.
! 	(VRSHRNTQ_M_N): Likewise.
! 	(VSHLLBQ_M_N): Likewise.
! 	(VSHLLTQ_M_N): Likewise.
! 	(VSHRNBQ_M_N): Likewise.
! 	(VSHRNTQ_M_N): Likewise.
! 	(VSTRWSBQ): Likewise.
! 	(VSTRBSOQ): Likewise.
! 	(VSTRBQ): Likewise.
! 	(VLDRBGOQ): Likewise.
! 	(VLDRBQ): Likewise.
! 	(VLDRWGBQ): Likewise.
! 	(VLD1Q): Likewise.
! 	(VLDRHGOQ): Likewise.
! 	(VLDRHGSOQ): Likewise.
! 	(VLDRHQ): Likewise.
! 	(VLDRWQ): Likewise.
! 	(VLDRDGBQ): Likewise.
! 	(VLDRDGOQ): Likewise.
! 	(VLDRDGSOQ): Likewise.
! 	(VLDRWGOQ): Likewise.
! 	(VLDRWGSOQ): Likewise.
! 	(VST1Q): Likewise.
! 	(VSTRHSOQ): Likewise.
! 	(VSTRHSSOQ): Likewise.
! 	(VSTRHQ): Likewise.
! 	(VSTRWQ): Likewise.
! 	(VSTRDSBQ): Likewise.
! 	(VSTRDSOQ): Likewise.
! 	(VSTRDSSOQ): Likewise.
! 	(VSTRWSOQ): Likewise.
! 	(VSTRWSSOQ): Likewise.
! 	(VSTRWSBWBQ): Likewise.
! 	(VLDRWGBWBQ): Likewise.
! 	(VSTRDSBWBQ): Likewise.
! 	(VLDRDGBWBQ): Likewise.
! 	(VADCIQ): Likewise.
! 	(VADCIQ_M): Likewise.
! 	(VSBCQ): Likewise.
! 	(VSBCQ_M): Likewise.
! 	(VSBCIQ): Likewise.
! 	(VSBCIQ_M): Likewise.
! 	(VADCQ): Likewise.
! 	(VADCQ_M): Likewise.
! 	(UQRSHLLQ): Likewise.
! 	(SQRSHRLQ): Likewise.
! 	(VSHLCQ_M): Likewise.
! 	* config/arm/mve.md (MVE_types): Move mode iterator to iterators.md from mve.md.
! 	(MVE_VLD_ST): Likewise.
! 	(MVE_0): Likewise.
! 	(MVE_1): Likewise.
! 	(MVE_3): Likewise.
! 	(MVE_2): Likewise.
! 	(MVE_5): Likewise.
! 	(MVE_6): Likewise.
! 	(MVE_CNVT): Move mode attribute iterator to iterators.md from mve.md.
! 	(MVE_LANES): Likewise.
! 	(MVE_constraint): Likewise.
! 	(MVE_constraint1): Likewise.
! 	(MVE_constraint2): Likewise.
! 	(MVE_constraint3): Likewise.
! 	(MVE_pred): Likewise.
! 	(MVE_pred1): Likewise.
! 	(MVE_pred2): Likewise.
! 	(MVE_pred3): Likewise.
! 	(MVE_B_ELEM): Likewise.
! 	(MVE_H_ELEM): Likewise.
! 	(V_sz_elem1): Likewise.
! 	(V_extr_elem): Likewise.
! 	(earlyclobber_32): Likewise.
! 	(supf): Move int attribute to iterators.md from mve.md.
! 	(mode1): Likewise.
! 	(VCVTQ_TO_F): Move int iterator to iterators.md from mve.md.
! 	(VMVNQ_N): Likewise.
! 	(VREV64Q): Likewise.
! 	(VCVTQ_FROM_F): Likewise.
! 	(VREV16Q): Likewise.
! 	(VCVTAQ): Likewise.
! 	(VMVNQ): Likewise.
! 	(VDUPQ_N): Likewise.
! 	(VCLZQ): Likewise.
! 	(VADDVQ): Likewise.
! 	(VREV32Q): Likewise.
! 	(VMOVLBQ): Likewise.
! 	(VMOVLTQ): Likewise.
! 	(VCVTPQ): Likewise.
! 	(VCVTNQ): Likewise.
! 	(VCVTMQ): Likewise.
! 	(VADDLVQ): Likewise.
! 	(VCTPQ): Likewise.
! 	(VCTPQ_M): Likewise.
! 	(VCVTQ_N_TO_F): Likewise.
! 	(VCREATEQ): Likewise.
! 	(VSHRQ_N): Likewise.
! 	(VCVTQ_N_FROM_F): Likewise.
! 	(VADDLVQ_P): Likewise.
! 	(VCMPNEQ): Likewise.
! 	(VSHLQ): Likewise.
! 	(VABDQ): Likewise.
! 	(VADDQ_N): Likewise.
! 	(VADDVAQ): Likewise.
! 	(VADDVQ_P): Likewise.
! 	(VANDQ): Likewise.
! 	(VBICQ): Likewise.
! 	(VBRSRQ_N): Likewise.
! 	(VCADDQ_ROT270): Likewise.
! 	(VCADDQ_ROT90): Likewise.
! 	(VCMPEQQ): Likewise.
! 	(VCMPEQQ_N): Likewise.
! 	(VCMPNEQ_N): Likewise.
! 	(VEORQ): Likewise.
! 	(VHADDQ): Likewise.
! 	(VHADDQ_N): Likewise.
! 	(VHSUBQ): Likewise.
! 	(VHSUBQ_N): Likewise.
! 	(VMAXQ): Likewise.
! 	(VMAXVQ): Likewise.
! 	(VMINQ): Likewise.
! 	(VMINVQ): Likewise.
! 	(VMLADAVQ): Likewise.
! 	(VMULHQ): Likewise.
! 	(VMULLBQ_INT): Likewise.
! 	(VMULLTQ_INT): Likewise.
! 	(VMULQ): Likewise.
! 	(VMULQ_N): Likewise.
! 	(VORNQ): Likewise.
! 	(VORRQ): Likewise.
! 	(VQADDQ): Likewise.
! 	(VQADDQ_N): Likewise.
! 	(VQRSHLQ): Likewise.
! 	(VQRSHLQ_N): Likewise.
! 	(VQSHLQ): Likewise.
! 	(VQSHLQ_N): Likewise.
! 	(VQSHLQ_R): Likewise.
! 	(VQSUBQ): Likewise.
! 	(VQSUBQ_N): Likewise.
! 	(VRHADDQ): Likewise.
! 	(VRMULHQ): Likewise.
! 	(VRSHLQ): Likewise.
! 	(VRSHLQ_N): Likewise.
! 	(VRSHRQ_N): Likewise.
! 	(VSHLQ_N): Likewise.
! 	(VSHLQ_R): Likewise.
! 	(VSUBQ): Likewise.
! 	(VSUBQ_N): Likewise.
! 	(VADDLVAQ): Likewise.
! 	(VBICQ_N): Likewise.
! 	(VMLALDAVQ): Likewise.
! 	(VMLALDAVXQ): Likewise.
! 	(VMOVNBQ): Likewise.
! 	(VMOVNTQ): Likewise.
! 	(VORRQ_N): Likewise.
! 	(VQMOVNBQ): Likewise.
! 	(VQMOVNTQ): Likewise.
! 	(VSHLLBQ_N): Likewise.
! 	(VSHLLTQ_N): Likewise.
! 	(VRMLALDAVHQ): Likewise.
! 	(VBICQ_M_N): Likewise.
! 	(VCVTAQ_M): Likewise.
! 	(VCVTQ_M_TO_F): Likewise.
! 	(VQRSHRNBQ_N): Likewise.
! 	(VABAVQ): Likewise.
! 	(VSHLCQ): Likewise.
! 	(VRMLALDAVHAQ): Likewise.
! 	(VADDVAQ_P): Likewise.
! 	(VCLZQ_M): Likewise.
! 	(VCMPEQQ_M_N): Likewise.
! 	(VCMPEQQ_M): Likewise.
! 	(VCMPNEQ_M_N): Likewise.
! 	(VCMPNEQ_M): Likewise.
! 	(VDUPQ_M_N): Likewise.
! 	(VMAXVQ_P): Likewise.
! 	(VMINVQ_P): Likewise.
! 	(VMLADAVAQ): Likewise.
! 	(VMLADAVQ_P): Likewise.
! 	(VMLAQ_N): Likewise.
! 	(VMLASQ_N): Likewise.
! 	(VMVNQ_M): Likewise.
! 	(VPSELQ): Likewise.
! 	(VQDMLAHQ_N): Likewise.
! 	(VQRDMLAHQ_N): Likewise.
! 	(VQRDMLASHQ_N): Likewise.
! 	(VQRSHLQ_M_N): Likewise.
! 	(VQSHLQ_M_R): Likewise.
! 	(VREV64Q_M): Likewise.
! 	(VRSHLQ_M_N): Likewise.
! 	(VSHLQ_M_R): Likewise.
! 	(VSLIQ_N): Likewise.
! 	(VSRIQ_N): Likewise.
! 	(VMLALDAVQ_P): Likewise.
! 	(VQMOVNBQ_M): Likewise.
! 	(VMOVLTQ_M): Likewise.
! 	(VMOVNBQ_M): Likewise.
! 	(VRSHRNTQ_N): Likewise.
! 	(VORRQ_M_N): Likewise.
! 	(VREV32Q_M): Likewise.
! 	(VREV16Q_M): Likewise.
! 	(VQRSHRNTQ_N): Likewise.
! 	(VMOVNTQ_M): Likewise.
! 	(VMOVLBQ_M): Likewise.
! 	(VMLALDAVAQ): Likewise.
! 	(VQSHRNBQ_N): Likewise.
! 	(VSHRNBQ_N): Likewise.
! 	(VRSHRNBQ_N): Likewise.
! 	(VMLALDAVXQ_P): Likewise.
! 	(VQMOVNTQ_M): Likewise.
! 	(VMVNQ_M_N): Likewise.
! 	(VQSHRNTQ_N): Likewise.
! 	(VMLALDAVAXQ): Likewise.
! 	(VSHRNTQ_N): Likewise.
! 	(VCVTMQ_M): Likewise.
! 	(VCVTNQ_M): Likewise.
! 	(VCVTPQ_M): Likewise.
! 	(VCVTQ_M_N_FROM_F): Likewise.
! 	(VCVTQ_M_FROM_F): Likewise.
! 	(VRMLALDAVHQ_P): Likewise.
! 	(VADDLVAQ_P): Likewise.
! 	(VABAVQ_P): Likewise.
! 	(VSHLQ_M): Likewise.
! 	(VSRIQ_M_N): Likewise.
! 	(VSUBQ_M): Likewise.
! 	(VCVTQ_M_N_TO_F): Likewise.
! 	(VHSUBQ_M): Likewise.
! 	(VSLIQ_M_N): Likewise.
! 	(VRSHLQ_M): Likewise.
! 	(VMINQ_M): Likewise.
! 	(VMULLBQ_INT_M): Likewise.
! 	(VMULHQ_M): Likewise.
! 	(VMULQ_M): Likewise.
! 	(VHSUBQ_M_N): Likewise.
! 	(VHADDQ_M_N): Likewise.
! 	(VORRQ_M): Likewise.
! 	(VRMULHQ_M): Likewise.
! 	(VQADDQ_M): Likewise.
! 	(VRSHRQ_M_N): Likewise.
! 	(VQSUBQ_M_N): Likewise.
! 	(VADDQ_M): Likewise.
! 	(VORNQ_M): Likewise.
! 	(VRHADDQ_M): Likewise.
! 	(VQSHLQ_M): Likewise.
! 	(VANDQ_M): Likewise.
! 	(VBICQ_M): Likewise.
! 	(VSHLQ_M_N): Likewise.
! 	(VCADDQ_ROT270_M): Likewise.
! 	(VQRSHLQ_M): Likewise.
! 	(VQADDQ_M_N): Likewise.
! 	(VADDQ_M_N): Likewise.
! 	(VMAXQ_M): Likewise.
! 	(VQSUBQ_M): Likewise.
! 	(VMLASQ_M_N): Likewise.
! 	(VMLADAVAQ_P): Likewise.
! 	(VBRSRQ_M_N): Likewise.
! 	(VMULQ_M_N): Likewise.
! 	(VCADDQ_ROT90_M): Likewise.
! 	(VMULLTQ_INT_M): Likewise.
! 	(VEORQ_M): Likewise.
! 	(VSHRQ_M_N): Likewise.
! 	(VSUBQ_M_N): Likewise.
! 	(VHADDQ_M): Likewise.
! 	(VABDQ_M): Likewise.
! 	(VMLAQ_M_N): Likewise.
! 	(VQSHLQ_M_N): Likewise.
! 	(VMLALDAVAQ_P): Likewise.
! 	(VMLALDAVAXQ_P): Likewise.
! 	(VQRSHRNBQ_M_N): Likewise.
! 	(VQRSHRNTQ_M_N): Likewise.
! 	(VQSHRNBQ_M_N): Likewise.
! 	(VQSHRNTQ_M_N): Likewise.
! 	(VRSHRNBQ_M_N): Likewise.
! 	(VRSHRNTQ_M_N): Likewise.
! 	(VSHLLBQ_M_N): Likewise.
! 	(VSHLLTQ_M_N): Likewise.
! 	(VSHRNBQ_M_N): Likewise.
! 	(VSHRNTQ_M_N): Likewise.
! 	(VSTRWSBQ): Likewise.
! 	(VSTRBSOQ): Likewise.
! 	(VSTRBQ): Likewise.
! 	(VLDRBGOQ): Likewise.
! 	(VLDRBQ): Likewise.
! 	(VLDRWGBQ): Likewise.
! 	(VLD1Q): Likewise.
! 	(VLDRHGOQ): Likewise.
! 	(VLDRHGSOQ): Likewise.
! 	(VLDRHQ): Likewise.
! 	(VLDRWQ): Likewise.
! 	(VLDRDGBQ): Likewise.
! 	(VLDRDGOQ): Likewise.
! 	(VLDRDGSOQ): Likewise.
! 	(VLDRWGOQ): Likewise.
! 	(VLDRWGSOQ): Likewise.
! 	(VST1Q): Likewise.
! 	(VSTRHSOQ): Likewise.
! 	(VSTRHSSOQ): Likewise.
! 	(VSTRHQ): Likewise.
! 	(VSTRWQ): Likewise.
! 	(VSTRDSBQ): Likewise.
! 	(VSTRDSOQ): Likewise.
! 	(VSTRDSSOQ): Likewise.
! 	(VSTRWSOQ): Likewise.
! 	(VSTRWSSOQ): Likewise.
! 	(VSTRWSBWBQ): Likewise.
! 	(VLDRWGBWBQ): Likewise.
! 	(VSTRDSBWBQ): Likewise.
! 	(VLDRDGBWBQ): Likewise.
! 	(VADCIQ): Likewise.
! 	(VADCIQ_M): Likewise.
! 	(VSBCQ): Likewise.
! 	(VSBCQ_M): Likewise.
! 	(VSBCIQ): Likewise.
! 	(VSBCIQ_M): Likewise.
! 	(VADCQ): Likewise.
! 	(VADCQ_M): Likewise.
! 	(UQRSHLLQ): Likewise.
! 	(SQRSHRLQ): Likewise.
! 	(VSHLCQ_M): Likewise.
! 	(define_c_enum "unspec"): Move MVE enumerator to unspecs.md from mve.md.
! 	* config/arm/unspecs.md (define_c_enum "unspec"): Move MVE enumerator from
! 	mve.md to unspecs.md.
! 
! 2020-10-06  Joe Ramsay  <Joe.Ramsay@arm.com>
! 
! 	Backported from master:
! 	2020-10-02  Joe Ramsay  <joe.ramsay@arm.com>
! 
! 	* config/arm/arm_mve.h (__arm_vmaxnmavq): Remove coercion of scalar
! 	argument.
! 	(__arm_vmaxnmvq): Likewise.
! 	(__arm_vminnmavq): Likewise.
! 	(__arm_vminnmvq): Likewise.
! 	(__arm_vmaxnmavq_p): Likewise.
! 	(__arm_vmaxnmvq_p): Likewise (and delete duplicate definition).
! 	(__arm_vminnmavq_p): Likewise.
! 	(__arm_vminnmvq_p): Likewise.
! 	(__arm_vmaxavq): Likewise.
! 	(__arm_vmaxavq_p): Likewise.
! 	(__arm_vmaxvq): Likewise.
! 	(__arm_vmaxvq_p): Likewise.
! 	(__arm_vminavq): Likewise.
! 	(__arm_vminavq_p): Likewise.
! 	(__arm_vminvq): Likewise.
! 	(__arm_vminvq_p): Likewise.
! 
! 2020-10-06  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/97236
! 	* tree-vect-stmts.c (get_group_load_store_type): Keep
! 	VMAT_ELEMENTWISE for single-element vectors.
! 
! 2020-10-06  Andreas Krebbel  <krebbel@linux.ibm.com>
! 
! 	Backported from master:
! 	2020-10-06  Andreas Krebbel  <krebbel@linux.ibm.com>
! 
! 	* doc/invoke.texi: Add z15/arch13 to the list of documented
! 	-march/-mtune options.
! 
! 2020-10-06  Andreas Krebbel  <krebbel@linux.ibm.com>
! 
! 	Backported from master:
! 	2020-08-12  Andreas Krebbel  <krebbel@linux.ibm.com>
! 
! 	PR target/96456
! 	* config/s390/s390.h (TARGET_NONSIGNALING_VECTOR_COMPARE_OK): New
! 	macro.
! 	* config/s390/vector.md (vcond_comparison_operator): Use new macro
! 	for the check.
! 
! 2020-10-05  Alex Coplan  <alex.coplan@arm.com>
! 
! 	* config/arm/arm-cpus.in (neoverse-v1): Add missing vendor and
! 	part numbers.
! 
! 2020-10-02  Alex Coplan  <alex.coplan@arm.com>
! 
! 	* config/arm/arm-cpus.in (neoverse-n2): New.
! 	* config/arm/arm-tables.opt: Regenerate.
! 	* config/arm/arm-tune.md: Regenerate.
! 	* doc/invoke.texi: Document support for Neoverse N2.
! 
! 2020-10-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	Backported from master:
! 	2020-10-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	* config/aarch64/aarch64.c (neoversev1_tunings): Define.
! 	* config/aarch64/aarch64-cores.def (zeus): Use it.
! 	(neoverse-v1): Likewise.
! 
! 2020-10-02  Martin Liska  <mliska@suse.cz>
! 
! 	Backported from master:
! 	2020-10-02  Martin Liska  <mliska@suse.cz>
! 
! 	PR gcov-profile/97193
! 	* coverage.c (coverage_init): GCDA note files should not be
! 	mangled and should end in output directory.
! 
! 2020-10-01  Martin Liska  <mliska@suse.cz>
! 
! 	Backported from master:
! 	2020-09-25  Martin Liska  <mliska@suse.cz>
! 
! 	PR gcov-profile/64636
! 	* value-prof.c (stream_out_histogram_value): Allow negative
! 	values for HIST_TYPE_IOR.
! 
! 2020-10-01  Martin Liska  <mliska@suse.cz>
! 
! 	Backported from master:
! 	2020-09-29  Martin Liska  <mliska@suse.cz>
! 
! 	PR tree-optimization/96979
! 	* tree-switch-conversion.c (jump_table_cluster::can_be_handled):
! 	Make a fast bail out.
! 	(bit_test_cluster::can_be_handled): Likewise here.
! 	* tree-switch-conversion.h (get_range): Use wi::to_wide instead
! 	of a folding.
! 
! 2020-10-01  Martin Liska  <mliska@suse.cz>
! 
! 	Backported from master:
! 	2020-09-23  Martin Liska  <mliska@suse.cz>
! 
! 	PR gcov-profile/97069
! 	* profile.c (branch_prob): Line number must be at least 1.
! 
! 2020-10-01  Michael Davidsaver  <mdavidsaver@gmail.com>
! 
! 	* config/i386/t-rtems: Change from mtune to march when building
! 	multilibs.  The mtune argument tunes or optimizes for a specific
! 	CPU model but does not ensure the generated code is appropriate
! 	for the CPU model. Prior to this patch, i386 compatible code
! 	was always generated but tuned for later models.
! 
! 2020-10-01  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	Backported from master:
! 	2020-09-30  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	PR target/96795
! 	* config/arm/arm_mve.h (__ARM_mve_coerce2): Define.
! 	(__arm_vaddq): Correct the scalar argument.
! 	(__arm_vaddq_m): Likewise.
! 	(__arm_vaddq_x): Likewise.
! 	(__arm_vcmpeqq_m): Likewise.
! 	(__arm_vcmpeqq): Likewise.
! 	(__arm_vcmpgeq_m): Likewise.
! 	(__arm_vcmpgeq): Likewise.
! 	(__arm_vcmpgtq_m): Likewise.
! 	(__arm_vcmpgtq): Likewise.
! 	(__arm_vcmpleq_m): Likewise.
! 	(__arm_vcmpleq): Likewise.
! 	(__arm_vcmpltq_m): Likewise.
! 	(__arm_vcmpltq): Likewise.
! 	(__arm_vcmpneq_m): Likewise.
! 	(__arm_vcmpneq): Likewise.
! 	(__arm_vfmaq_m): Likewise.
! 	(__arm_vfmaq): Likewise.
! 	(__arm_vfmasq_m): Likewise.
! 	(__arm_vfmasq): Likewise.
! 	(__arm_vmaxnmavq): Likewise.
! 	(__arm_vmaxnmavq_p): Likewise.
! 	(__arm_vmaxnmvq): Likewise.
! 	(__arm_vmaxnmvq_p): Likewise.
! 	(__arm_vminnmavq): Likewise.
! 	(__arm_vminnmavq_p): Likewise.
! 	(__arm_vminnmvq): Likewise.
! 	(__arm_vminnmvq_p): Likewise.
! 	(__arm_vmulq_m): Likewise.
! 	(__arm_vmulq): Likewise.
! 	(__arm_vmulq_x): Likewise.
! 	(__arm_vsetq_lane): Likewise.
! 	(__arm_vsubq_m): Likewise.
! 	(__arm_vsubq): Likewise.
! 	(__arm_vsubq_x): Likewise.
! 
! 2020-10-01  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-10-01  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* config/s390/s390.c (s390_atomic_assign_expand_fenv): Use
! 	TARGET_EXPR instead of MODIFY_EXPR for the first assignments to
! 	fenv_var and old_fpc.  Formatting fixes.
! 
! 2020-10-01  Joel Hutton  <joel.hutton@arm.com>
! 
! 	Backported from master:
! 	2020-09-30  Joel Hutton  <joel.hutton@arm.com>
! 
! 	PR target/96827
! 	* tree-vect-slp.c (vect_analyze_slp): Do not call
! 	vect_attempt_slp_rearrange_stmts for vector constructors.
! 
! 2020-09-30  Jim Wilson  <jimw@sifive.com>
! 
! 	PR bootstrap/97183
! 	* configure.ac (gcc_cv_header_zstd_h): Check ZSTD_VERISON_NUMBER.
! 	* configure: Regenerated.
! 
! 2020-09-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	Backported from master:
! 	2020-09-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	* config/aarch64/aarch64-option-extensions.def (rng): Add
! 	cpuinfo string.
! 
! 2020-09-30  H.J. Lu  <hjl.tools@gmail.com>
! 
! 	Backported from master:
! 	2020-09-30  H.J. Lu  <hjl.tools@gmail.com>
! 
! 	PR target/97184
! 	* config/i386/i386.md (UNSPECV_MOVDIRI): Renamed to ...
! 	(UNSPEC_MOVDIRI): This.
! 	(UNSPECV_MOVDIR64B): Renamed to ...
! 	(UNSPEC_MOVDIR64B): This.
! 	(movdiri<mode>): Use SET operation.
! 	(@movdir64b_<mode>): Likewise.
! 
! 2020-09-29  H.J. Lu  <hjl.tools@gmail.com>
! 
! 	Backported from master:
! 	2020-09-29  H.J. Lu  <hjl.tools@gmail.com>
! 
! 	PR target/97247
! 	* config/i386/enqcmdintrin.h: Replace <enqcmdntrin.h> with
! 	<enqcmdintrin.h>.  Replace _ENQCMDNTRIN_H_INCLUDED with
! 	_ENQCMDINTRIN_H_INCLUDED.
! 
! 2020-09-29  Hongyu Wang  <hongyu.wang@intel.com>
! 
! 	Backported from master:
! 	2020-09-29  Hongyu Wang  <hongyu.wang@intel.com>
! 
! 	PR target/97231
! 	* config/i386/avx512vp2intersectintrin.h: Add FSF copyright notes.
! 	* config/i386/avx512vp2intersectvlintrin.h: Ditto.
! 	* config/i386/pconfigintrin.h: Ditto.
! 	* config/i386/wbnoinvdintrin.h: Ditto.
! 
! 2020-09-29  Alex Coplan  <alex.coplan@arm.com>
! 
! 	* config/aarch64/aarch64-cores.def: Add Neoverse N2.
! 	* config/aarch64/aarch64-tune.md: Regenerate.
! 	* doc/invoke.texi: Document AArch64 support for Neoverse N2.
! 
! 2020-09-29  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-09-18  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR middle-end/97054
! 	* ira.c (ira_setup_eliminable_regset): Skip the special elimination
! 	handling of the hard frame pointer if the hard frame pointer is fixed.
! 
! 2020-09-29  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-09-24  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/arm/arm.md (*stack_protect_combined_set_insn): For non-PIC,
! 	load the address of the canary rather than the address of the
! 	constant pool entry that points to it.
! 	(*stack_protect_combined_test_insn): Likewise.
! 
! 2020-09-29  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-09-23  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/aarch64-protos.h (aarch64_salt_type): New enum.
! 	(aarch64_stack_protect_canary_mem): Declare.
! 	* config/aarch64/aarch64.md (UNSPEC_SALT_ADDR): New unspec.
! 	(stack_protect_set): Forward to stack_protect_combined_set.
! 	(stack_protect_combined_set): New pattern.  Use
! 	aarch64_stack_protect_canary_mem.
! 	(reg_stack_protect_address_<mode>): Add a salt operand.
! 	(stack_protect_test): Forward to stack_protect_combined_test.
! 	(stack_protect_combined_test): New pattern.  Use
! 	aarch64_stack_protect_canary_mem.
! 	* config/aarch64/aarch64.c (strip_salt): New function.
! 	(strip_offset_and_salt): Likewise.
! 	(tls_symbolic_operand_type): Use strip_offset_and_salt.
! 	(aarch64_stack_protect_canary_mem): New function.
! 	(aarch64_cannot_force_const_mem): Use strip_offset_and_salt.
! 	(aarch64_classify_address): Likewise.
! 	(aarch64_symbolic_address_p): Likewise.
! 	(aarch64_print_operand): Likewise.
! 	(aarch64_output_addr_const_extra): New function.
! 	(aarch64_tls_symbol_p): Use strip_salt.
! 	(aarch64_classify_symbol): Likewise.
! 	(aarch64_legitimate_pic_operand_p): Use strip_offset_and_salt.
! 	(aarch64_legitimate_constant_p): Likewise.
! 	(aarch64_mov_operand_p): Use strip_salt.
! 	(TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Override.
! 
! 2020-09-29  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-08-25  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Rename
! 	__ARM_FEATURE_SVE_VECTOR_OPERATIONS to
! 	__ARM_FEATURE_SVE_VECTOR_OPERATORS.
! 
! 2020-09-29  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-08-25  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/aarch64-sve-builtins.cc (add_sve_type_attribute):
! 	Take the ACLE name of the type as a parameter and add it as fourth
! 	argument to the "SVE type" attribute.
! 	(register_builtin_types): Update call accordingly.
! 	(register_tuple_type): Likewise.  Construct the name of the type
! 	earlier in order to do this.
! 	(get_arm_sve_vector_bits_attributes): New function.
! 	(handle_arm_sve_vector_bits_attribute): Report a more sensible
! 	error message if the attribute is applied to an SVE tuple type.
! 	Don't allow the attribute to be applied to an existing fixed-length
! 	SVE type.  Mangle the new type as __SVE_VLS<type, vector-bits>.
! 	Add a dummy TYPE_DECL to the new type.
! 
! 2020-09-29  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-08-25  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/aarch64-sve-builtins.cc (DEF_SVE_TYPE): Add a
! 	leading "u" to each mangled name.
! 
! 2020-09-29  Alex Coplan  <alex.coplan@arm.com>
! 
! 	* config/arm/arm-cpus.in (neoverse-v1): New.
! 	* config/arm/arm-tables.opt: Regenerate.
! 	* config/arm/arm-tune.md: Regenerate.
! 	* doc/invoke.texi: Document AArch32 support for Neoverse V1.
! 
! 2020-09-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	Backported from master:
! 	2020-09-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	PR target/71233
! 	* config/aarch64/arm_neon.h (vreinterpretq_f64_p128,
! 	vreinterpretq_p128_f64): Define.
! 
! 2020-09-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	Backported from master:
! 	2020-09-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	PR target/71233
! 	* config/aarch64/aarch64-simd-builtins.def (frintn): Use BUILTIN_VHSDF_HSDF
! 	for modes.  Remove explicit hf instantiation.
! 	* config/aarch64/arm_neon.h (vrndns_f32): Define.
! 
! 2020-09-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	Backported from master:
! 	2020-09-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	PR target/71233
! 	* config/aarch64/arm_neon.h (vtrn1q_p64, vtrn2q_p64, vuzp1q_p64,
! 	vuzp2q_p64, vzip1q_p64, vzip2q_p64): Define.
! 
! 2020-09-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	Backported from master:
! 	2020-09-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	PR target/71233
! 	* config/aarch64/arm_neon.h (vldrq_p128): Define.
! 
! 2020-09-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	Backported from master:
! 	2020-09-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	PR target/71233
! 	* config/aarch64/arm_neon.h (vstrq_p128): Define.
! 
! 2020-09-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	Backported from master:
! 	2020-09-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	PR target/71233
! 	* config/aarch64/arm_neon.h (vcls_u8, vcls_u16, vcls_u32,
! 	vclsq_u8, vclsq_u16, vclsq_u32): Define.
! 
! 2020-09-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	Backported from master:
! 	2020-09-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	PR target/71233
! 	* config/aarch64/arm_neon.h (vceqq_p64, vceqz_p64, vceqzq_p64): Define.
! 
! 2020-09-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	Backported from master:
! 	2020-09-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	PR target/71233
! 	* config/aarch64/arm_neon.h (vadd_p8, vadd_p16, vadd_p64, vaddq_p8,
! 	vaddq_p16, vaddq_p64, vaddq_p128): Define.
! 
! 2020-09-27  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-09-27  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/97073
! 	* optabs.c (expand_binop, expand_absneg_bit, expand_unop,
! 	expand_copysign_bit): Check reg_overlap_mentioned_p between target
! 	and operand(s) and if it returns true, force a pseudo as target.
! 
! 2020-09-25  Vladimir N. Makarov  <vmakarov@redhat.com>
! 
! 	Backported from master:
! 	2020-06-04  Vladimir Makarov  <vmakarov@redhat.com>
! 
! 	PR middle-end/95464
! 	* lra.c (lra_emit_move): Add processing STRICT_LOW_PART.
! 	* lra-constraints.c (match_reload): Use STRICT_LOW_PART in output
! 	reload if the original insn has it too.
! 
! 2020-09-25  Joe Ramsay  <Joe.Ramsay@arm.com>
! 
! 	Backported from master:
! 	2020-08-20  Joe Ramsay  <Joe.Ramsay@arm.com>
! 
! 	PR target/96683
! 	* config/arm/mve.md (mve_vst1q_f<mode>): Require MVE memory operand for
! 	destination.
! 	(mve_vst1q_<supf><mode>): Likewise.
! 
! 2020-09-24  H.J. Lu  <hjl.tools@gmail.com>
! 
! 	Backported from master:
! 	2020-09-16  H.J. Lu  <hjl.tools@gmail.com>
! 
! 	PR target/97032
! 	* cfgexpand.c (asm_clobber_reg_kind): Set sp_is_clobbered_by_asm
! 	to true if the stack pointer is clobbered by asm statement.
! 	* emit-rtl.h (rtl_data): Add sp_is_clobbered_by_asm.
! 	* config/i386/i386.c (ix86_get_drap_rtx): Set need_drap to true
! 	if the stack pointer is clobbered by asm statement.
! 
! 2020-09-24  Alan Modra  <amodra@gmail.com>
! 
! 	Backported from master:
! 	2020-09-24  Alan Modra  <amodra@gmail.com>
! 
! 	PR target/97166
! 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros):
! 	Conditionally define __PCREL__.
! 
! 2020-09-24  Andrea Corallo  <andrea.corallo@arm.com>
! 
! 	Backported from master:
! 	2020-09-21  Andrea Corallo  <andrea.corallo@arm.com>
! 
! 	* config/aarch64/aarch64-builtins.c
! 	(aarch64_general_expand_builtin): Use expand machinery not to
! 	alter the value of an rtx returned by force_reg.
! 
! 2020-09-24  Alex Coplan  <alex.coplan@arm.com>
! 
! 	* config/aarch64/aarch64-cores.def: Add Neoverse V1.
! 	* config/aarch64/aarch64-tune.md: Regenerate.
! 	* doc/invoke.texi: Document support for Neoverse V1.
! 
! 2020-09-22  David Faust  <david.faust@oracle.com>
! 
! 	Backported from master:
! 	2020-09-22  David Faust  <david.faust@oracle.com>
! 
! 	* config/bpf/bpf.md: Add defines for signed div and mod operators.
! 
! 2020-09-20  John David Anglin  < danglin@gcc.gnu.org>
! 
! 	* config/pa/pa-hpux11.h (LINK_GCC_C_SEQUENCE_SPEC): Delete.
! 	* config/pa/pa64-hpux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
! 	(ENDFILE_SPEC): Link with libgcc_stub.a and mill.a.
! 	* config/pa/pa32-linux.h (ENDFILE_SPEC): Link with libgcc.a.
! 
! 2020-09-17  Marek Polacek  <polacek@redhat.com>
! 
! 	Backported from master:
! 	2020-09-16  Marek Polacek  <polacek@redhat.com>
! 
! 	PR preprocessor/96935
! 	* input.c (get_substring_ranges_for_loc): Return if start.column
! 	is less than 1.
! 
! 2020-09-17  liuhongt  <hongtao.liu@intel.com>
! 
! 	* common/config/i386/i386-common.c
! 	(OPTION_MASK_ISA_AVX_UNSET): Remove OPTION_MASK_ISA_XSAVE_UNSET.
! 	(OPTION_MASK_ISA_XSAVE_UNSET): Add OPTION_MASK_ISA_AVX_UNSET.
  
! 2020-09-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-09-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/97053
! 	* gimple-ssa-store-merging.c (check_no_overlap): Add FIRST_ORDER,
! 	START, FIRST_EARLIER and LAST_EARLIER arguments.  Return false if
! 	any stores between FIRST_EARLIER inclusive and LAST_EARLIER exclusive
! 	has order in between FIRST_ORDER and LAST_ORDER and overlaps the to
! 	be merged store.
! 	(imm_store_chain_info::try_coalesce_bswap): Add FIRST_EARLIER argument.
! 	Adjust check_no_overlap caller.
! 	(imm_store_chain_info::coalesce_immediate_stores): Add first_earlier
! 	and last_earlier variables, adjust them during iterations.  Adjust
! 	check_no_overlap callers, call check_no_overlap even when extending
! 	overlapping stores by extra INTEGER_CST stores.
  
! 2020-09-15  Will Schmidt  <will_schmidt@vnet.ibm.com>
  
! 	Backported from master:
! 	2020-09-03  Will Schmidt  <will_schmidt@vnet.ibm.com>
  
! 	* config/rs6000/rs6000-call.c (rs6000_init_builtin): Update V2DI_type_node
! 	and unsigned_V2DI_type_node definitions.
  
! 2020-09-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-09-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/97028
! 	* config/i386/sse.md (mul<mode>3<mask_name>_bcs,
! 	<avx512>_div<mode>3<mask_name>_bcst): Use <avx512bcst> instead of
! 	<<avx512bcst>>.
  
! 2020-09-15  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2020-08-25  Richard Biener  <rguenther@suse.de>
  
! 	PR debug/96690
! 	* dwarf2out.c (reference_to_unused): Make FUNCTION_DECL
! 	processing more consistent with respect to
! 	symtab->global_info_ready.
! 	(tree_add_const_value_attribute): Unconditionally call
! 	rtl_for_decl_init to do all mangling early but throw
! 	away the result if early_dwarf.
  
! 2020-09-14  Sergei Trofimovich  <siarheit@google.com>
  
! 	Backported from master:
! 	2020-09-14  Sergei Trofimovich  <siarheit@google.com>
  
! 	* doc/invoke.texi: fix '-fprofile-reproducibility' option
! 	spelling in manual.
  
! 2020-09-14  Jose E. Marchesi  <jose.marchesi@oracle.com>
  
! 	Backported from master:
! 	2020-09-14  Jose E. Marchesi  <jose.marchesi@oracle.com>
  
! 	* config/bpf/bpf.md ("nop"): Re-define as `ja 0'.
  
! 2020-09-14  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2020-08-27  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/96522
! 	* tree-ssa-address.c (copy_ref_info): Reset flow-sensitive
! 	info of the copied points-to.  Transfer bigger alignment
! 	via the access type.
! 	* tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt):
! 	Reset all flow-sensitive info.
  
! 2020-09-14  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/97043
! 	* tree-vect-slp.c (vect_analyze_slp_instance): Do not
! 	elide a load permutation if the current vectorization
! 	factor is one.
  
! 2020-09-14  Nathan Sidwell  <nathan@acm.org>
  
! 	* config/i386/sse.md (mov<mode>): Fix operand indices.
  
! 2020-09-13  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	* config/pa/pa.c (hppa_rtx_costs) [ASHIFT, ASHIFTRT, LSHIFTRT]:
! 	Provide accurate costs for DImode shifts of integer constants.
  
! 2020-09-12  Roger Sayle  <roger@nextmovesoftware.com>
! 	    John David Anglin  <danglin@gcc.gnu.org>
  
! 	* config/pa/pa.md (shrpsi4_1, shrpsi4_2): New define_insns split
! 	out from previous shrpsi4 providing two commutitive variants using
! 	plus_xor_ior_operator as a predicate.
! 	(shrpdi4_1, shrpdi4_2, shrpdi_3, shrpdi_4): Likewise DImode versions
! 	where _1 and _2 take register shifts, and _3 and _4 for integers.
! 	(rotlsi3_internal): Name this anonymous instruction.
! 	(rotrdi3): New DImode insn copied from rotrsi3.
! 	(rotldi3): New DImode expander copied from rotlsi3.
! 	(rotldi4_internal): New DImode insn copied from rotsi3_internal.
  
! 2020-09-11  Andrew Stubbs  <ams@codesourcery.com>
  
! 	Backported from master:
! 	2020-09-11  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn.c (gcn_hard_regno_mode_ok): Align TImode registers.
! 	* config/gcn/gcn.md: Assert that TImode registers do not early clobber.
  
! 2020-09-11  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2020-08-27  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/96579
! 	* tree-ssa-reassoc.c (linearize_expr_tree): If we expand
! 	rhs via special ops make sure to swap operands.
  
! 2020-09-11  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2020-07-30  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/96370
! 	* tree-ssa-reassoc.c (rewrite_expr_tree): Add operation
! 	code parameter and use it instead of picking it up from
! 	the stmt that is being rewritten.
! 	(reassociate_bb): Pass down the operation code.
  
! 2020-09-11  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2020-08-07  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/96514
! 	* tree-if-conv.c (if_convertible_bb_p): If the last stmt
! 	is a call that is control-altering, fail.
  
! 2020-09-11  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2020-07-31  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/96369
! 	* fold-const.c (fold_range_test): Special-case constant
! 	LHS for short-circuiting operations.
  
! 2020-09-11  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2020-07-29  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/96349
! 	* tree-ssa-loop-split.c (stmt_semi_invariant_p_1): When the
! 	condition runs into a loop PHI with an abnormal entry value give up.
  
! 2020-09-11  Matthias Klose  <doko@ubuntu.com>
  
! 	Backported from master:
! 	2020-07-27  Matthias Klose  <doko@ubuntu.com>
  
! 	PR bootstrap/96203
! 	* common.opt: Add -fcf-protection=check.
! 	* flag-types.h (cf_protection_level): Add CF_CHECK.
! 	* lto-wrapper.c (merge_and_complain): Issue an error for
! 	mismatching -fcf-protection values with -fcf-protection=check.
! 	Otherwise, merge -fcf-protection values.
! 	* doc/invoke.texi: Document -fcf-protection=check.
  
! 2020-09-11  Matthias Klose  <doko@ubuntu.com>
  
! 	Backported from master:
! 	2020-07-14  Matthias Klose  <doko@ubuntu.com>
  
! 	PR lto/95604
! 	* lto-wrapper.c (merge_and_complain): Add decoded options as parameter,
! 	error on different values for -fcf-protection.
! 	(append_compiler_options): Pass -fcf-protection option.
! 	(find_and_merge_options): Add decoded options as parameter,
! 	pass decoded_options to merge_and_complain.
! 	(run_gcc): Pass decoded options to find_and_merge_options.
! 	* lto-opts.c (lto_write_options): Pass -fcf-protection option.
  
! 2020-09-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-09-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	* lto-streamer-out.c (collect_block_tree_leafs): Recurse on
! 	root rather than BLOCK_SUBBLOCKS (root).
  
! 2020-09-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	* lto-streamer.h (LTO_minor_version): Bump.
  
! 2020-09-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-09-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/93865
! 	* lto-streamer.h (struct output_block): Add emit_pwd member.
! 	* lto-streamer-out.c: Include toplev.h.
! 	(clear_line_info): Set emit_pwd.
! 	(lto_output_location_1): Encode the ob->current_file != xloc.file
! 	bit directly into the location number.  If changing file, emit
! 	additionally a bit whether pwd is emitted and emit it before the
! 	first relative pathname since clear_line_info.
! 	(output_function, output_constructor): Don't call clear_line_info
! 	here.
! 	* lto-streamer-in.c (struct string_pair_map): New type.
! 	(struct string_pair_map_hasher): New type.
! 	(string_pair_map_hasher::hash): New method.
! 	(string_pair_map_hasher::equal): New method.
! 	(path_name_pair_hash_table, string_pair_map_allocator): New variables.
! 	(relative_path_prefix, canon_relative_path_prefix,
! 	canon_relative_file_name): New functions.
! 	(canon_file_name): Add relative_prefix argument, if non-NULL
! 	and string is a relative path, return canon_relative_file_name.
! 	(lto_location_cache::input_location_and_block): Decode file change
! 	bit from the location number.  If changing file, unpack bit whether
! 	pwd is streamed and stream in pwd.  Adjust canon_file_name caller.
! 	(lto_free_file_name_hash): Delete path_name_pair_hash_table
! 	and string_pair_map_allocator.
  
! 2020-09-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-09-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/94235
! 	* lto-streamer-out.c (output_cfg): Also stream goto_locus for edges.
! 	Use bp_pack_var_len_unsigned instead of streamer_write_uhwi to stream
! 	e->dest->index and e->flags.
! 	(output_function): Call output_cfg before output_ssa_name, rather than
! 	after streaming all bbs.
! 	* lto-streamer-in.c (input_cfg): Stream in goto_locus for edges.
! 	Use bp_unpack_var_len_unsigned instead of streamer_read_uhwi to stream
! 	in dest_index and edge_flags.
  
! 2020-09-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-09-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	* lto-streamer.h (stream_input_location_now): Remove declaration.
! 	* lto-streamer-in.c (stream_input_location_now): Remove.
! 	(input_eh_region, input_struct_function_base): Use
! 	stream_input_location instead of stream_input_location_now.
  
! 2020-09-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-09-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	* lto-streamer.h (struct output_block): Add reset_locus member.
! 	* lto-streamer-out.c (clear_line_info): Set reset_locus to true.
! 	(lto_output_location_1): If reset_locus, clear it and ensure
! 	current_{file,line,col} is different from xloc members.
  
! 2020-09-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-09-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/96901
! 	* tree.h (struct decl_tree_traits): New type.
! 	(decl_tree_map): New typedef.
  
! 2020-09-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-09-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR lto/94311
! 	* gimple.h (gimple_location_ptr, gimple_phi_arg_location_ptr): New
  	functions.
! 	* streamer-hooks.h (struct streamer_hooks): Add
! 	output_location_and_block callback.  Fix up formatting for
! 	output_location.
! 	(stream_output_location_and_block): Define.
! 	* lto-streamer.h (class lto_location_cache): Fix comment typo.  Add
! 	current_block member.
! 	(lto_location_cache::input_location_and_block): New method.
! 	(lto_location_cache::lto_location_cache): Initialize current_block.
! 	(lto_location_cache::cached_location): Add block member.
! 	(struct output_block): Add current_block member.
! 	(lto_output_location): Formatting fix.
! 	(lto_output_location_and_block): Declare.
! 	* lto-streamer.c (lto_streamer_hooks_init): Initialize
! 	streamer_hooks.output_location_and_block.
! 	* lto-streamer-in.c (lto_location_cache::cmp_loc): Also compare
! 	block members.
! 	(lto_location_cache::apply_location_cache): Handle blocks.
! 	(lto_location_cache::accept_location_cache,
! 	lto_location_cache::revert_location_cache): Fix up function comments.
! 	(lto_location_cache::input_location_and_block): New method.
! 	(lto_location_cache::input_location): Implement using
! 	input_location_and_block.
! 	(input_function): Invoke apply_location_cache after streaming in all
! 	bbs.
! 	* lto-streamer-out.c (clear_line_info): Set current_block.
! 	(lto_output_location_1): New function, moved from lto_output_location,
! 	added block handling.
! 	(lto_output_location): Implement using lto_output_location_1.
! 	(lto_output_location_and_block): New function.
! 	* gimple-streamer-in.c (input_phi): Use input_location_and_block
! 	to input and cache both location and block.
! 	(input_gimple_stmt): Likewise.
! 	* gimple-streamer-out.c (output_phi): Use
! 	stream_output_location_and_block.
! 	(output_gimple_stmt): Likewise.
! 
! 2020-09-11  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-08-26  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR debug/96729
! 	* dwarf2out.c (dwarf2out_next_real_insn): Adjust function comment.
! 	(dwarf2out_var_location): Look for next_note only if next_real is
! 	non-NULL, in that case look for the first non-deleted
! 	NOTE_INSN_VAR_LOCATION between loc_note and next_real, if any.
! 
! 2020-09-09  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
! 
! 	PR target/96357
! 	* config/aarch64/aarch64-sve.md
! 	(cond_sub<mode>_relaxed_const): Updated and renamed from
! 	cond_sub<mode>_any_const pattern.
! 	(cond_sub<mode>_strict_const): New pattern.
! 
! 2020-09-04  Carl Love  <cel@us.ibm.com>
! 
! 	PR target/85830
! 	* config/rs6000/altivec.h (vec_popcntb, vec_popcnth, vec_popcntw,
! 	vec_popcntd): Remove defines.
! 
! 2020-09-04  Martin Jambor  <mjambor@suse.cz>
! 
! 	Backported from master:
! 	2020-09-03  Martin Jambor  <mjambor@suse.cz>
! 
! 	PR tree-optimization/96820
! 	* tree-sra.c (create_access): Disqualify candidates with accesses
! 	beyond the end of the original aggregate.
! 	(maybe_add_sra_candidate): Check that candidate type size fits
! 	signed uhwi for the sake of consistency.
! 
! 2020-09-04  David Faust  <david.faust@oracle.com>
! 
! 	Backported from master:
! 	2020-09-04  David Faust  <david.faust@oracle.com>
! 
! 	* config/bpf/bpf.h (ASM_SPEC): Pass -mxbpf to gas, if specified.
! 	* config/bpf/bpf.c (bpf_output_call): Support indirect calls in xBPF.
! 
! 2020-09-03  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	Backported from master:
! 	2020-09-01  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	PR target/96808
! 	* config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Do not
! 	reuse accumulator memory reference for source and destination accesses.
! 
! 2020-09-02  Jose E. Marchesi  <jose.marchesi@oracle.com>
! 
! 	Backported from master:
! 	2020-09-02  Jose E. Marchesi  <jose.marchesi@oracle.com>
! 
! 	* config/bpf/bpf.c (bpf_asm_named_section): Delete.
! 	(TARGET_ASM_NAMED_SECTION): Likewise.
! 
! 2020-09-02  Jose E. Marchesi  <jose.marchesi@oracle.com>
! 
! 	Backported from master:
! 	2020-09-02  Jose E. Marchesi  <jemarch@gnu.org>
! 
! 	* config.gcc: Use elfos.h in bpf-*-* targets.
! 	* config/bpf/bpf.h (MAX_OFILE_ALIGNMENT): Remove definition.
! 	(COMMON_ASM_OP): Likewise.
! 	(INIT_SECTION_ASM_OP): Likewise.
! 	(FINI_SECTION_ASM_OP): Likewise.
! 	(ASM_OUTPUT_SKIP): Likewise.
! 	(ASM_OUTPUT_ALIGNED_COMMON): Likewise.
! 	(ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
! 
! 2020-09-01  Martin Liska  <mliska@suse.cz>
! 
! 	Backported from master:
! 	2020-08-24  Martin Liska  <mliska@suse.cz>
! 
! 	PR tree-optimization/96597
! 	* tree-ssa-sccvn.c (vn_reference_lookup_call): Add missing
! 	initialization of ::punned.
! 	(vn_reference_insert): Use consistently false instead of 0.
! 	(vn_reference_insert_pieces): Likewise.
! 
! 2020-09-01  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2020-08-04  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/88240
! 	* tree-ssa-sccvn.h (vn_reference_s::punned): New flag.
! 	* tree-ssa-sccvn.c (vn_reference_insert): Initialize punned.
! 	(vn_reference_insert_pieces): Likewise.
! 	(visit_reference_op_call): Likewise.
! 	(visit_reference_op_load): Track whether a ref was punned.
! 	* tree-ssa-pre.c (do_hoist_insertion): Refuse to perform hoist
! 	insertion on punned floating point loads.
! 
! 2020-08-31  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/96854
! 	* tree-vect-loop.c (vectorizable_live_operation): Disallow
! 	SLP_TREE_TWO_OPERATORS nodes.
! 
! 2020-08-31  liuhongt  <hongtao.liu@intel.com>
! 
! 	PR target/96551
! 	* config/i386/sse.md (vec_unpacku_float_hi_v16si): For vector
! 	compare to integer mask, don't use gen_rtx_LT, use
! 	ix86_expand_mask_vec_cmp instead.
! 	(vec_unpacku_float_hi_v16si): Ditto.
! 
! 2020-08-28  Uros Bizjak    <ubizjak@gmail.com>
! 
! 	PR target/96744
! 	* config/i386/i386-expand.c (split_double_mode): Also handle
! 	E_P2HImode and E_P2QImode.
! 	* config/i386/sse.md (MASK_DWI): New define_mode_iterator.
! 	(mov<mode>): New expander for P2HI,P2QI.
! 	(*mov<mode>_internal): New define_insn_and_split to split
! 	movement of P2QI/P2HI to 2 movqi/movhi patterns after reload.
! 
! 2020-08-28  liuhongt  <hongtao.liu@intel.com>
! 
! 	* common/config/i386/i386-common.c (ix86_handle_option): Set
! 	AVX512DQ when AVX512VP2INTERSECT exists.
! 
! 2020-08-27  Carl Love  <cel@us.ibm.com>
  
! 	* config/rs6000/rs6000-builtin.def: (BU_P10V_VSX_1) New builtin
! 	macro expansion.
! 	(XVCVBF16SPN, XVCVSPBF16): Replace macro expansion BU_VSX_1 with
! 	BU_P10V_VSX_1.
! 	* config/rs6000/rs6000-call.c: (VSX_BUILTIN_XVCVSPBF16,
! 	VSX_BUILTIN_XVCVBF16SPN): Replace with P10V_BUILTIN_XVCVSPBF16,
! 	P10V_BUILTIN_XVCVBF16SPN respectively.
  
! 2020-08-27  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	Backported from master:
! 	2020-08-24  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	PR target/94538
! 	PR target/94538
! 	* config/arm/thumb1.md: Disable set-constant splitter when
! 	TARGET_HAVE_MOVT.
! 	(thumb1_movsi_insn): Fix -mpure-code
! 	alternative.
  
! 2020-08-26  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	PR middle-end/87256
! 	* config/pa/pa.c (hppa_rtx_costs_shadd_p): New helper function
! 	to check for coefficients supported by shNadd and shladd,l.
! 	(hppa_rtx_costs):  Rewrite to avoid using estimates based upon
! 	FACTOR and enable recursing deeper into RTL expressions.
! 	* config/pa/pa.md (shd_internal): Fix define_expand to provide
! 	gen_shd_internal.
  
! 2020-08-26  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	* config/pa/pa.md (ashldi3): Additionally, on !TARGET_64BIT
! 	generate a two instruction shd/zdep sequence when shifting
! 	registers by suitable constants.
! 	(shd_internal): New define_expand to provide gen_shd_internal.
  
! 2020-08-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-08-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/96722
! 	* gimple.c (infer_nonnull_range): Formatting fix.
! 	(infer_nonnull_range_by_dereference): Return false for clobber stmts.
  
! 2020-08-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-08-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/96758
! 	* tree-ssa-strlen.c (handle_builtin_string_cmp): If both cstlen1
! 	and cstlen2 are set, set cmpsiz to their minimum, otherwise use the
! 	one that is set.  If bound is used and smaller than cmpsiz, set cmpsiz
! 	to bound.  If both cstlen1 and cstlen2 are set, perform the optimization.
  
! 2020-08-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-08-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/95450
! 	* fold-const.c (native_interpret_real): For MODE_COMPOSITE_P modes
! 	punt if the to be returned REAL_CST does not encode to the bitwise
! 	same representation.
  
! 2020-08-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-08-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/96535
! 	* toplev.c (process_options): Move flag_unroll_loops and
! 	flag_cunroll_grow_size handling from here to ...
! 	* opts.c (finish_options): ... here.  For flag_cunroll_grow_size,
! 	don't check for AUTODETECT_VALUE, but instead check
! 	opts_set->x_flag_cunroll_grow_size.
! 	* common.opt (funroll-completely-grow-size): Default to 0.
! 	* config/rs6000/rs6000.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE):
  	Redefine.
! 	(rs6000_override_options_after_change): New function.
! 	(rs6000_option_override_internal): Call it.  Move there the
! 	flag_cunroll_grow_size, unroll_only_small_loops and
! 	flag_rename_registers handling.
! 
! 2020-08-25  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-08-11  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/96549
! 	* tree.c (get_narrower): Use TREE_TYPE (ret) instead of
! 	TREE_TYPE (win) for COMPOUND_EXPRs.
! 
! 2020-08-25  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-08-08  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR fortran/93553
! 	* tree-nested.c (convert_nonlocal_omp_clauses): For
! 	OMP_CLAUSE_REDUCTION, OMP_CLAUSE_LASTPRIVATE and OMP_CLAUSE_LINEAR
! 	save info->new_local_var_chain around walks of the clause gimple
! 	sequences and declare_vars if needed into the sequence.
! 
! 2020-08-25  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-08-05  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/96459
! 	* omp-low.c (lower_omp_taskreg): Call lower_reduction_clauses even in
! 	for host teams.
! 
! 2020-08-25  Martin Jambor  <mjambor@suse.cz>
! 
! 	Backported from master:
! 	2020-08-25  Martin Jambor  <mjambor@suse.cz>
! 
! 	PR tree-optimization/96730
! 	* tree-sra.c (create_access): Disqualify any aggregate with negative
! 	offset access.
! 	(build_ref_for_model): Add assert that offset is non-negative.
! 
! 2020-08-21  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-08-21  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* doc/extend.texi: Update links to Arm docs.
! 	* doc/invoke.texi: Likewise.
! 
! 2020-08-21  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	Backported from master:
! 	2020-05-26  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	PR ipa/95320
! 	* ipa-utils.h (odr_type_p): Also permit calls with
! 	only flag_generate_offload set.
! 
! 2020-08-19  Joe Ramsay  <joe.ramsay@arm.com>
! 
! 	Backported from master:
! 	2020-07-29  Joe Ramsay  <joe.ramsay@arm.com>
! 
! 	PR target/96682
! 	* config/arm/arm-protos.h (arm_coproc_mem_operand_no_writeback):
! 	Declare prototype.
! 	(arm_mve_mode_and_operands_type_check): Declare prototype.
! 	* config/arm/arm.c (arm_coproc_mem_operand): Refactor to use
! 	_arm_coproc_mem_operand.
! 	(arm_coproc_mem_operand_wb): New function to cover full, limited
! 	and no writeback.
! 	(arm_coproc_mem_operand_no_writeback): New constraint for memory
! 	operand with no writeback.
! 	(arm_print_operand): Extend 'E' specifier for memory operand
! 	that does not support writeback.
! 	(arm_mve_mode_and_operands_type_check): New constraint check for
! 	MVE memory operands.
! 	* config/arm/constraints.md: Add Uj constraint for VFP vldr.16
! 	and vstr.16.
! 	* config/arm/vfp.md (*mov_load_vfp_hf16): New pattern for
! 	vldr.16.
! 	(*mov_store_vfp_hf16): New pattern for vstr.16.
! 	(*mov<mode>_vfp_<mode>16): Remove MVE moves.
! 
! 2020-08-19  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	Backported from master:
! 	2020-08-18  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	* config/rs6000/rs6000-builtin.def (BU_VSX_1): Rename xvcvbf16sp to
! 	xvcvbf16spn.
! 	* config/rs6000/rs6000-call.c (builtin_function_type): Likewise.
! 	* config/rs6000/vsx.md: Likewise.
! 	* doc/extend.texi: Likewise.
  
! 2020-08-19  Peter Bergner  <bergner@linux.ibm.com>
  
! 	Backported from master:
! 	2020-08-13  Peter Bergner  <bergner@linux.ibm.com>
  
! 	PR target/96506
! 	* config/rs6000/rs6000-call.c (rs6000_promote_function_mode): Disallow
! 	MMA types as return values.
! 	(rs6000_function_arg): Disallow MMA types as function arguments.
  
! 2020-08-18  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/96536
! 	* config/i386/i386.md (restore_stack_nonlocal):
! 	Add missing compare RTX.
  
! 2020-08-18  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/96562
! 	PR target/93897
! 	* config/i386/i386-expand.c (ix86_expand_pinsr): Don't use
! 	pinsr for TImode.
! 	(ix86_expand_pextr): Don't use pextr for TImode.
  
! 2020-08-14  Jan Hubicka  <jh@suse.cz>
  
! 	Backported from master:
! 	2020-05-29  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR lto/95362
! 	* lto-streamer-out.c (lto_output_tree): Disable redundant streaming.
  
! 2020-08-13  Jan Hubicka  <jh@suse.cz>
  
! 	* lto-streamer.h (LTO_minor_version): Bump version.
  
! 2020-08-13  Jan Hubicka  <jh@suse.cz>
  
! 	Backported from master:
! 	2020-06-06  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR lto/95548
! 	* ipa-devirt.c (struct odr_enum_val): Turn values to wide_int.
! 	(ipa_odr_summary_write): Update streaming.
! 	(ipa_odr_read_section): Update streaming.
  
! 2020-08-13  Jan Hubicka  <jh@suse.cz>
  
! 	Backported from master:
! 	2020-06-03  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* ipa-devirt.c: Include data-streamer.h, lto-streamer.h and
! 	streamer-hooks.h.
! 	(odr_enums): New static var.
! 	(struct odr_enum_val): New struct.
! 	(class odr_enum): New struct.
! 	(odr_enum_map): New hashtable.
! 	(odr_types_equivalent_p): Drop code testing TYPE_VALUES.
! 	(add_type_duplicate): Likewise.
! 	(free_odr_warning_data): Do not free TYPE_VALUES.
! 	(register_odr_enum): New function.
! 	(ipa_odr_summary_write): New function.
! 	(ipa_odr_read_section): New function.
! 	(ipa_odr_summary_read): New function.
! 	(class pass_ipa_odr): New pass.
! 	(make_pass_ipa_odr): New function.
! 	* ipa-utils.h (register_odr_enum): Declare.
! 	* lto-section-in.c: (lto_section_name): Add odr_types section.
! 	* lto-streamer.h (enum lto_section_type): Add odr_types section.
! 	* passes.def: Add odr_types pass.
! 	* lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream
! 	TYPE_VALUES.
! 	(hash_tree): Likewise.
! 	* tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
! 	Likewise.
! 	* tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
  	Likewise.
! 	* timevar.def (TV_IPA_ODR): New timervar.
! 	* tree-pass.h (make_pass_ipa_odr): Declare.
! 	* tree.c (free_lang_data_in_type): Regiser ODR types.
! 
! 2020-08-13  Jan Hubicka  <jh@suse.cz>
! 
! 	Backported from master:
! 	2020-08-13  Jan Hubicka  <jh@suse.cz>
! 
! 	* lto-streamer-out.c (lto_output_tree): Add streamer_debugging check.
! 	* lto-streamer.h (streamer_debugging): New constant
! 	* tree-streamer-in.c (streamer_read_tree_bitfields): Add
! 	streamer_debugging check.
! 	(streamer_get_pickled_tree): Likewise.
! 	* tree-streamer-out.c (pack_ts_base_value_fields): Likewise.
! 
! 2020-08-13  Jan Hubicka  <jh@suse.cz>
! 
! 	Backported from master:
! 	2020-08-13  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	* lto-streamer-out.c (lto_output_tree): Do not stream final ref if
! 	it is not needed.
! 
! 2020-08-13  Jan Hubicka  <jh@suse.cz>
! 
! 	Backported from master:
! 	2020-08-13  Jan Hubicka  <jh@suse.cz>
! 
! 	* tree-streamer.c (record_common_node): Fix hash value of pre-streamed
! 	nodes.
! 
! 2020-08-13  Jan Hubicka  <jh@suse.cz>
! 
! 	Backported from master:
! 	2020-08-13  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	* lto-streamer-in.c (lto_read_tree): Do not stream end markers.
! 	(lto_input_scc): Optimize streaming of entry lengths.
! 	* lto-streamer-out.c (lto_write_tree): Do not stream end markers
! 	(DFS::DFS): Optimize stremaing of entry lengths
! 
! 2020-08-13  Jan Hubicka  <jh@suse.cz>
! 
! 	Backported from master:
! 	2020-08-13  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	* lto-streamer-in.c (lto_input_scc): Add SHARED_SCC parameter.
! 	(lto_input_tree_1): Strenghten sanity check.
! 	(lto_input_tree): Update call of lto_input_scc.
! 	* lto-streamer-out.c: Include ipa-utils.h
! 	(create_output_block): Initialize local_trees if merigng is going
! 	to happen.
! 	(destroy_output_block): Destroy local_trees.
! 	(DFS): Add max_local_entry.
! 	(local_tree_p): New function.
! 	(DFS::DFS): Initialize and maintain it.
! 	(DFS::DFS_write_tree): Decide on streaming format.
! 	(lto_output_tree): Stream inline singleton SCCs
! 	* lto-streamer.h (enum LTO_tags): Add LTO_trees.
! 	(struct output_block): Add local_trees.
! 	(lto_input_scc): Update prototype.
! 
! 2020-08-13  Martin Liska  <mliska@suse.cz>
! 
! 	Backported from master:
! 	2020-08-13  Martin Liska  <mliska@suse.cz>
! 
! 	PR ipa/96482
! 	* ipa-cp.c (ipcp_bits_lattice::meet_with_1): Mask m_value
! 	with m_mask.
! 
! 2020-08-12  Alan Modra  <amodra@gmail.com>
! 
! 	Backported from master:
! 	2020-08-07  Alan Modra  <amodra@gmail.com>
! 
! 	PR target/96493
! 	* config/rs6000/predicates.md (current_file_function_operand): Don't
! 	accept functions that differ in r2 usage.
! 
! 2020-08-12  Martin Liska  <mliska@suse.cz>
! 
! 	Backported from master:
! 	2020-08-12  Martin Liska  <mliska@suse.cz>
! 
! 	PR ipa/96482
! 	* ipa-cp.c (ipcp_bits_lattice::meet_with_1): Drop value bits
! 	for bits that are unknown.
! 	(ipcp_bits_lattice::set_to_constant): Likewise.
! 	* tree-ssa-ccp.c (get_default_value): Add sanity check that
! 	IPA CP bit info has all bits set to zero in bits that
! 	are unknown.
! 
! 2020-08-12  Sergei Trofimovich  <siarheit@google.com>
! 
! 	Backported from master:
! 	2020-07-28  Sergei Trofimovich  <siarheit@google.com>
! 
! 	PR ipa/96291
! 	* ipa-cp.c (has_undead_caller_from_outside_scc_p): Consider
! 	unoptimized callers as undead.
! 
! 2020-08-12  Jose E. Marchesi  <jose.marchesi@oracle.com>
! 
! 	* config/bpf/bpf.md: Remove trailing whitespaces.
! 	* config/bpf/constraints.md: Likewise.
! 	* config/bpf/predicates.md: Likewise.
! 
! 2020-08-12  Jose E. Marchesi  <jose.marchesi@oracle.com>
! 
! 	* config/bpf/bpf-helpers.h (KERNEL_HELPER): Define.
! 	(KERNEL_VERSION): Remove.
! 	* config/bpf/bpf-helpers.def: Delete.
! 	* config/bpf/bpf.c (bpf_handle_fndecl_attribute): New function.
! 	(bpf_attribute_table): Define.
! 	(bpf_helper_names): Delete.
! 	(bpf_helper_code): Likewise.
! 	(enum bpf_builtins): Adjust to new helpers mechanism.
! 	(bpf_output_call): Likewise.
! 	(bpf_init_builtins): Likewise.
! 	(bpf_init_builtins): Likewise.
! 	* doc/extend.texi (BPF Function Attributes): New section.
! 	(BPF Kernel Helpers): Delete section.
! 
! 2020-08-12  Jose E. Marchesi  <jose.marchesi@oracle.com>
! 
! 	* config/bpf/bpf.c (bpf_compute_frame_layout): Include space for
! 	callee saved registers only in xBPF.
! 	(bpf_expand_prologue): Save callee saved registers only in xBPF.
! 	(bpf_expand_epilogue): Likewise for restoring.
! 	* doc/invoke.texi (eBPF Options): Document this is activated by
! 	-mxbpf.
! 
! 2020-08-12  Jose E. Marchesi  <jose.marchesi@oracle.com>
! 
! 	* config/bpf/bpf.opt (mxbpf): New option.
! 	* doc/invoke.texi (Option Summary): Add -mxbpf.
! 	(eBPF Options): Document -mxbbpf.
! 
! 2020-08-10  Hongtao Liu  <hongtao.liu@intel.com>
! 
! 	PR target/96243
! 	* config/i386/i386-expand.c (ix86_expand_sse_cmp): Refine for
! 	maskcmp.
! 	(ix86_expand_mask_vec_cmp): Change prototype.
! 	* config/i386/i386-protos.h (ix86_expand_mask_vec_cmp): Change prototype.
! 	* config/i386/i386.c (ix86_print_operand): Remove operand
! 	modifier 'I'.
! 	* config/i386/sse.md
! 	(*<avx512>_cmp<mode>3<mask_scalar_merge_name><round_saeonly_name>): Deleted.
! 	(*<avx512>_cmp<mode>3<mask_scalar_merge_name>): Ditto.
! 	(*<avx512>_ucmp<mode>3<mask_scalar_merge_name>): Ditto.
! 	(*<avx512>_ucmp<mode>3<mask_scalar_merge_name>,
! 	avx512f_maskcmp<mode>3): Ditto.
! 
! 2020-08-10  Martin Liska  <mliska@suse.cz>
! 
! 	Backported from master:
! 	2020-05-20  Martin Liska  <mliska@suse.cz>
! 
! 	* lto-compress.c (lto_compression_zstd): Fill up
! 	num_compressed_il_bytes.
! 	(lto_uncompression_zstd): Likewise for num_uncompressed_il_bytes here.
! 
! 2020-08-10  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	Backported from master:
! 	2020-08-08  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	PR target/96530
! 	* config/rs6000/rs6000.c (rs6000_invalid_conversion): Use canonical
! 	types for type comparisons.  Refactor code to simplify it.
! 
! 2020-08-08  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	Backported from master:
! 	2020-08-06  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	PR target/96446
! 	* config/rs6000/mma.md (*movpxi): Add xxsetaccz generation.
! 	Disable split for zero constant source operand.
! 	(mma_xxsetaccz): Change to define_expand.  Call gen_movpxi.
! 
! 2020-08-07  Tamar Christina  <tamar.christina@arm.com>
! 
! 	Backported from master:
! 	2020-08-03  Tamar Christina  <tamar.christina@arm.com>
! 
! 	* config/aarch64/driver-aarch64.c (readline): Check return value fgets.
! 
! 2020-08-07  Tamar Christina  <tamar.christina@arm.com>
! 
! 	Backported from master:
! 	2020-07-17  Tamar Christina  <tamar.christina@arm.com>
! 
! 	* doc/sourcebuild.texi (dg-set-compiler-env-var,
! 	dg-set-target-env-var): Document.
! 
! 2020-08-07  Tamar Christina  <tamar.christina@arm.com>
! 
! 	Backported from master:
! 	2020-07-17  Tamar Christina  <tamar.christina@arm.com>
! 
! 	* config/arm/driver-arm.c (host_detect_local_cpu): Add GCC_CPUINFO.
! 
! 2020-08-07  Tamar Christina  <tamar.christina@arm.com>
! 
! 	Backported from master:
! 	2020-07-17  Tamar Christina  <tamar.christina@arm.com>
! 
! 	* config/aarch64/driver-aarch64.c (host_detect_local_cpu):
! 	Add GCC_CPUINFO.
! 
! 2020-08-07  Tamar Christina  <tamar.christina@arm.com>
! 
! 	Backported from master:
! 	2020-07-17  Tamar Christina  <tamar.christina@arm.com>
! 
! 	* config/aarch64/driver-aarch64.c (INCLUDE_SET): New.
! 	(parse_field): Use std::string.
! 	(split_words, readline, find_field): New.
! 	(host_detect_local_cpu): Fix truncation issues.
! 
! 2020-08-07  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-08-06  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR target/96191
! 	* config/arm/arm.md (arm_stack_protect_test_insn): Zero out
! 	operand 2 after use.
! 	* config/arm/thumb1.md (thumb1_stack_protect_test_insn): Likewise.
! 
! 2020-08-07  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	Backported from master:
! 	2020-08-05  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/96191
! 	* config/aarch64/aarch64.md (stack_protect_test_<mode>): Set the
! 	CC register directly, instead of a GPR.  Replace the original GPR
! 	destination with an extra scratch register.  Zero out operand 3
! 	after use.
! 	(stack_protect_test): Update accordingly.
  
! 2020-08-06  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2020-08-06  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/96483
! 	* tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
! 	POLY_INT_CST.
  
! 2020-08-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-08-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	* doc/extend.texi (symver): Add @cindex for symver function attribute.
  
! 2020-08-04  Matthew Malcomson  <matthew.malcomson@arm.com>
  
! 	* config/aarch64/aarch64-protos.h (aarch64_indirect_call_asm):
! 	New declaration.
! 	* config/aarch64/aarch64.c (aarch64_regno_regclass): Handle new
! 	stub registers class.
! 	(aarch64_class_max_nregs): Likewise.
! 	(aarch64_register_move_cost): Likewise.
! 	(aarch64_sls_shared_thunks): Global array to store stub labels.
! 	(aarch64_sls_emit_function_stub): New.
! 	(aarch64_create_blr_label): New.
! 	(aarch64_sls_emit_blr_function_thunks): New.
! 	(aarch64_sls_emit_shared_blr_thunks): New.
! 	(aarch64_asm_file_end): New.
! 	(aarch64_indirect_call_asm): New.
! 	(TARGET_ASM_FILE_END): Use aarch64_asm_file_end.
! 	(TARGET_ASM_FUNCTION_EPILOGUE): Use
! 	aarch64_sls_emit_blr_function_thunks.
! 	* config/aarch64/aarch64.h (STB_REGNUM_P): New.
! 	(enum reg_class): Add STUB_REGS class.
! 	(machine_function): Introduce `call_via` array for
! 	function-local stub labels.
! 	* config/aarch64/aarch64.md (*call_insn, *call_value_insn): Use
! 	aarch64_indirect_call_asm to emit code when hardening BLR
! 	instructions.
! 	* config/aarch64/constraints.md (Ucr): New constraint
! 	representing registers for indirect calls.  Is GENERAL_REGS
! 	usually, and STUB_REGS when hardening BLR instruction against
! 	SLS.
! 	* config/aarch64/predicates.md (aarch64_general_reg): STUB_REGS class
! 	is also a general register.
  
! 2020-08-04  Matthew Malcomson  <matthew.malcomson@arm.com>
  
! 	* config/aarch64/aarch64-protos.h (aarch64_sls_barrier): New.
! 	* config/aarch64/aarch64.c (aarch64_output_casesi): Emit
! 	speculation barrier after BR instruction if needs be.
! 	(aarch64_trampoline_init): Handle ptr_mode value & adjust size
! 	of code copied.
! 	(aarch64_sls_barrier): New.
! 	(aarch64_asm_trampoline_template): Add needed barriers.
! 	* config/aarch64/aarch64.h (AARCH64_ISA_SB): New.
! 	(TARGET_SB): New.
! 	(TRAMPOLINE_SIZE): Account for barrier.
! 	* config/aarch64/aarch64.md (indirect_jump, *casesi_dispatch,
! 	simple_return, *do_return, *sibcall_insn, *sibcall_value_insn):
! 	Emit barrier if needs be, also account for possible barrier using
! 	"sls_length" attribute.
! 	(sls_length): New attribute.
! 	(length): Determine default using any non-default sls_length
! 	value.
  
! 2020-08-04  Matthew Malcomson  <matthew.malcomson@arm.com>
  
! 	* config/aarch64/aarch64-protos.h (aarch64_harden_sls_retbr_p):
! 	New.
! 	(aarch64_harden_sls_blr_p): New.
! 	* config/aarch64/aarch64.c (enum aarch64_sls_hardening_type):
  	New.
- 	(aarch64_harden_sls_retbr_p): New.
- 	(aarch64_harden_sls_blr_p): New.
- 	(aarch64_validate_sls_mitigation): New.
- 	(aarch64_override_options): Parse options for SLS mitigation.
- 	* config/aarch64/aarch64.opt (-mharden-sls): New option.
- 	* doc/invoke.texi: Document new option.
- 
- 2020-08-04  Andrea Corallo  <andrea.corallo@arm.com>
- 
- 	Backported from master:
- 	2020-08-04  Andrea Corallo  <andrea.corallo@arm.com>
- 
- 	* config/aarch64/aarch64.md (aarch64_fjcvtzs): Add missing
- 	clobber.
- 	* doc/sourcebuild.texi (aarch64_fjcvtzs_hw) Document new
- 	target supports option.
- 
- 2020-08-04  Jakub Jelinek  <jakub@redhat.com>
- 
- 	Backported from master:
- 	2020-08-04  Jakub Jelinek  <jakub@redhat.com>
- 
- 	PR middle-end/96426
- 	* tree-vect-generic.c (expand_vector_conversion): Replace .VEC_CONVERT
- 	call with GIMPLE_NOP if there is no lhs.
- 
- 2020-08-04  Jakub Jelinek  <jakub@redhat.com>
- 
- 	Backported from master:
- 	2020-08-04  Jakub Jelinek  <jakub@redhat.com>
- 
- 	PR debug/96354
- 	* gimple-fold.c (maybe_canonicalize_mem_ref_addr): Add IS_DEBUG
- 	argument.  Return false instead of gcc_unreachable if it is true and
- 	get_addr_base_and_unit_offset returns NULL.
- 	(fold_stmt_1) <case GIMPLE_DEBUG>: Adjust caller.
- 
- 2020-08-03  Jonathan Wakely  <jwakely@redhat.com>
- 
- 	Backported from master:
- 	2020-08-03  Jonathan Wakely  <jwakely@redhat.com>
- 
- 	* doc/cpp.texi (Variadic Macros): Use the exact ... token in
- 	code examples.
- 
- 2020-08-03  Richard Sandiford  <richard.sandiford@arm.com>
- 
- 	Backported from master:
- 	2020-08-03  Richard Sandiford  <richard.sandiford@arm.com>
- 
- 	* doc/invoke.texi: Add missing comma after octeontx2f95mm entry.
- 
- 2020-08-03  Qian Jianhua  <qianjh@cn.fujitsu.com>
- 
- 	Backported from master:
- 	2020-08-03  Qian jianhua  <qianjh@cn.fujitsu.com>
- 
- 	* config/aarch64/aarch64-cores.def (a64fx): New core.
- 	* config/aarch64/aarch64-tune.md: Regenerated.
- 	* config/aarch64/aarch64.c (a64fx_prefetch_tune, a64fx_tunings): New.
- 	* doc/invoke.texi: Add a64fx to the list.
- 
- 2020-07-31  Martin Liska  <mliska@suse.cz>
- 
- 	Backported from master:
- 	2020-07-31  Martin Liska  <mliska@suse.cz>
  
! 	* cgraph.h: Remove leading empty lines.
! 	* cgraphunit.c (enum cgraph_order_sort_kind): Remove
! 	ORDER_UNDEFINED.
! 	(struct cgraph_order_sort): Add constructors.
! 	(cgraph_order_sort::process): New.
! 	(cgraph_order_cmp): New.
! 	(output_in_order): Simplify and push nodes to vector.
! 
! 2020-07-30  Martin Liska  <mliska@suse.cz>
! 
! 	Backported from master:
! 	2020-07-30  Martin Liska  <mliska@suse.cz>
! 
! 	PR target/95435
! 	* config/i386/x86-tune-costs.h: Use libcall for large sizes for
! 	-m32. Start using libcall from 128+ bytes.
! 
! 2020-07-30  Martin Liska  <mliska@suse.cz>
! 
! 	Backported from master:
! 	2020-07-30  Martin Liska  <mliska@suse.cz>
! 
! 	* config/i386/x86-tune-costs.h: Change code formatting.
! 
! 2020-07-28  Martin Liska  <mliska@suse.cz>
! 
! 	Backported from master:
! 	2020-07-27  Martin Liska  <mliska@suse.cz>
! 
! 	PR tree-optimization/96058
! 	* expr.c (string_constant): Build string_constant only
! 	for a type that has same precision as char_type_node
! 	and is an integral type.
! 
! 2020-07-28  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-07-28  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/96335
! 	* calls.c (maybe_warn_rdwr_sizes): Add FNDECL and FNTYPE arguments,
! 	instead of trying to rediscover them in the body.
! 	(initialize_argument_information): Adjust caller.
! 
! 2020-07-27  Aaron Sawdey  <acsawdey@linux.ibm.com>
! 
! 	Backported from master:
! 	2020-06-23  Aaron Sawdey  <acsawdey@linux.ibm.com>
! 
! 	* config.gcc: Identify power10 as a 64-bit processor and as valid
! 	for --with-cpu and --with-tune.
! 
! 2020-07-27  Martin Liska  <mliska@suse.cz>
! 
! 	Backported from master:
! 	2020-07-27  Martin Liska  <mliska@suse.cz>
! 
! 	PR lto/45375
! 	* symbol-summary.h: Call vec_safe_reserve before grow is called
! 	in order to grow to a reasonable size.
! 	* vec.h (vec_safe_reserve): Add missing function for vl_ptr
! 	type.
! 
! 2020-07-23  Sergei Trofimovich  <siarheit@google.com>
! 
! 	Backported from master:
! 	2020-07-20  Sergei Trofimovich  <siarheit@google.com>
! 
! 	PR target/96190
! 	* config/sparc/linux.h (ENDFILE_SPEC): Use GNU_USER_TARGET_ENDFILE_SPEC
! 	to get crtendS.o for !no-pie mode.
! 	* config/sparc/linux64.h (ENDFILE_SPEC): Ditto.
! 
! 2020-07-23  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	Backported from master:
! 	2020-07-22  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	PR target/96236
! 	* config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Handle
! 	little-endian memory ordering.
! 
! 2020-07-23  Kito Cheng  <kito.cheng@sifive.com>
! 
! 	Backported from master:
! 	2020-07-23  Kito Cheng  <kito.cheng@sifive.com>
! 
! 	PR target/96260
! 	* asan.c (asan_shadow_offset_set_p): New.
! 	* asan.h (asan_shadow_offset_set_p): Ditto.
! 	* toplev.c (process_options): Allow -fsanitize=kernel-address
! 	even TARGET_ASAN_SHADOW_OFFSET not implemented, only check when
! 	asan stack protection is enabled.
! 
! 2020-07-23  Release Manager
! 
! 	* GCC 10.2.0 released.
! 
! 2020-07-21  Uroš Bizjak  <ubizjak@gmail.com>
! 
! 	* config/i386/i386.h (TARGET_AVOID_MFENCE):
! 	Rename from TARGET_USE_XCHG_FOR_ATOMIC_STORE.
! 	* config/i386/sync.md (atomic_store<mode>): Update for rename.
! 	* config/i386/x86-tune.def (X86_TUNE_AVOID_MFENCE):
! 	Rename from X86_TUNE_USE_XCHG_FOR_ATOMIC_STORE.
! 
! 2020-07-17  Romain Naour  <romain.naour@gmail.com>
! 
! 	Backported from master:
! 	2020-06-03  Romain Naour  <romain.naour@gmail.com>
! 
! 	* Makefile.in (SELFTEST_DEPS): Move before including language makefile
! 	fragments.
! 
! 2020-07-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
! 
! 	Backported from master:
! 	2020-06-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
! 
! 	* config.in: Regenerate.
! 	* config/s390/s390.c (print_operand): Emit vector alignment hints
! 	for target z13, if AS accepts them.  For other targets the logic
! 	stays the same.
! 	* config/s390/s390.h (TARGET_VECTOR_LOADSTORE_ALIGNMENT_HINTS): Define
! 	macro.
! 	* configure: Regenerate.
! 	* configure.ac: Check HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS_ON_Z13.
! 
! 2020-07-15  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR target/95726
! 	* config/aarch64/aarch64.c (aarch64_attribute_table): Add
! 	"Advanced SIMD type".
! 	* config/aarch64/aarch64-builtins.c: Include stringpool.h and
! 	attribs.h.
! 	(aarch64_init_simd_builtin_types): Add an "Advanced SIMD type"
! 	attribute to each Advanced SIMD type.
! 	* config/arm/arm.c (arm_attribute_table): Add "Advanced SIMD type".
! 	* config/arm/arm-builtins.c: Include stringpool.h and attribs.h.
! 	(arm_init_simd_builtin_types): Add an "Advanced SIMD type"
! 	attribute to each Advanced SIMD type.
! 
! 2020-07-15  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-07-15  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/96174
! 	* config/i386/avx512fintrin.h (_mm512_cmpeq_pd_mask,
! 	_mm512_mask_cmpeq_pd_mask, _mm512_cmplt_pd_mask,
! 	_mm512_mask_cmplt_pd_mask, _mm512_cmple_pd_mask,
! 	_mm512_mask_cmple_pd_mask, _mm512_cmpunord_pd_mask,
! 	_mm512_mask_cmpunord_pd_mask, _mm512_cmpneq_pd_mask,
! 	_mm512_mask_cmpneq_pd_mask, _mm512_cmpnlt_pd_mask,
! 	_mm512_mask_cmpnlt_pd_mask, _mm512_cmpnle_pd_mask,
! 	_mm512_mask_cmpnle_pd_mask, _mm512_cmpord_pd_mask,
! 	_mm512_mask_cmpord_pd_mask, _mm512_cmpeq_ps_mask,
! 	_mm512_mask_cmpeq_ps_mask, _mm512_cmplt_ps_mask,
! 	_mm512_mask_cmplt_ps_mask, _mm512_cmple_ps_mask,
! 	_mm512_mask_cmple_ps_mask, _mm512_cmpunord_ps_mask,
! 	_mm512_mask_cmpunord_ps_mask, _mm512_cmpneq_ps_mask,
! 	_mm512_mask_cmpneq_ps_mask, _mm512_cmpnlt_ps_mask,
! 	_mm512_mask_cmpnlt_ps_mask, _mm512_cmpnle_ps_mask,
! 	_mm512_mask_cmpnle_ps_mask, _mm512_cmpord_ps_mask,
! 	_mm512_mask_cmpord_ps_mask): Move outside of __OPTIMIZE__ guarded
! 	section.
! 
! 2020-07-15  Richard Biener  <rguenther@suse.de>
! 
! 	Revert:
! 	2020-07-14  Matthias Klose  <doko@ubuntu.com>
! 
! 	PR lto/95604
! 	* lto-wrapper.c (merge_and_complain): Add decoded options as parameter,
! 	error on different values for -fcf-protection.
! 	(append_compiler_options): Pass -fcf-protection option.
! 	(find_and_merge_options): Add decoded options as parameter,
! 	pass decoded_options to merge_and_complain.
! 	(run_gcc): Pass decoded options to find_and_merge_options.
! 	* lto-opts.c (lto_write_options): Pass -fcf-protection option.
! 
! 2020-07-14  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR middle-end/95114
! 	* tree.h (virtual_method_call_p): Add a default-false parameter
! 	that indicates whether the function is being called from dump
! 	routines.
! 	(obj_type_ref_class): Likewise.
! 	* tree.c (virtual_method_call_p): Likewise.
! 	* ipa-devirt.c (obj_type_ref_class): Likewise.  Lazily add ODR
! 	type information for the type when the parameter is false.
! 	* tree-pretty-print.c (dump_generic_node): Update calls to
! 	virtual_method_call_p and obj_type_ref_class accordingly.
! 
! 2020-07-14  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR tree-optimization/96146
! 	* value-range.cc (value_range::set): Only decompose POLY_INT_CST
! 	bounds to integers for VR_RANGE.  Decay to VR_VARYING for anti-ranges
! 	involving POLY_INT_CSTs.
! 
! 2020-07-14  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-07-14  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/96194
! 	* expr.c (expand_constructor): Don't create temporary for store to
! 	volatile MEM if exp has an addressable type.
! 
! 2020-07-14  Matthias Klose  <doko@ubuntu.com>
! 
! 	Backported from master:
! 	2020-07-14  Matthias Klose  <doko@ubuntu.com>
! 
! 	PR lto/95604
! 	* lto-wrapper.c (merge_and_complain): Add decoded options as parameter,
! 	error on different values for -fcf-protection.
! 	(append_compiler_options): Pass -fcf-protection option.
! 	(find_and_merge_options): Add decoded options as parameter,
! 	pass decoded_options to merge_and_complain.
! 	(run_gcc): Pass decoded options to find_and_merge_options.
! 	* lto-opts.c (lto_write_options): Pass -fcf-protection option.
! 
! 2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
! 
! 	Backported from master:
! 	2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
! 
! 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Add
! 	__ARM_FEATURE_PAC_DEFAULT support.
! 
! 2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
! 
! 	Backported from master:
! 	2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
! 
! 	PR target/94891
! 	* doc/extend.texi: Update the text for  __builtin_return_address.
! 
! 2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
! 
! 	Backported from master:
! 	2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
! 
! 	PR target/94891
! 	* config/aarch64/aarch64.c (aarch64_return_address_signing_enabled):
! 	Disable return address signing if __builtin_eh_return is used.
! 
! 2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
! 
! 	Backported from master:
! 	2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
! 
! 	PR target/94891
! 	PR target/94791
! 	* config/aarch64/aarch64-protos.h (aarch64_return_addr_rtx): Declare.
! 	* config/aarch64/aarch64.c (aarch64_return_addr_rtx): New.
! 	(aarch64_return_addr): Use aarch64_return_addr_rtx.
! 	* config/aarch64/aarch64.h (PROFILE_HOOK): Likewise.
! 
! 2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
! 
! 	Backported from master:
! 	2020-07-09  Szabolcs Nagy  <szabolcs.nagy@arm.com>
! 
! 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Add
! 	__ARM_FEATURE_BTI_DEFAULT support.
! 
! 2020-07-13  Julian Brown  <julian@codesourcery.com>
! 
! 	Backported from master:
! 	2020-07-13  Julian Brown  <julian@codesourcery.com>
! 		    Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* gimplify.c (gimplify_scan_omp_clauses): Do not strip
! 	GOMP_MAP_TO_PSET/GOMP_MAP_POINTER for OpenACC enter/exit data
! 	directives (see also PR92929).
! 
! 2020-07-13  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-07-13  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR ipa/96130
! 	* ipa-fnsummary.c (analyze_function_body): Treat NULL bb->aux
! 	as false predicate.
! 
! 2020-07-13  Hans-Peter Nilsson  <hp@axis.com>
! 
! 	Backported from master:
! 	2020-07-13  Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/94600
! 	* expr.c (expand_constructor): Make a temporary also if we're
! 	storing to volatile memory.
! 
! 2020-07-12  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2020-07-02  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/95857
! 	* tree-cfg.c (group_case_labels_stmt): When removing an unreachable
! 	base_bb, remember all forced and non-local labels on it and later
! 	treat those as if they have NULL label_to_block.  Formatting fix.
! 	Fix a comment typo.
! 
! 2020-07-10  Bill Seurer  <seurer@linux.vnet.ibm.com>
! 
! 	Backported from master:
! 	2020-07-10  Bill Seurer  <seurer@linux.vnet.ibm.com>
! 
! 	PR target/95581
! 	* config/rs6000/rs6000-call.c: Add new type v16qi_ftype_pcvoid.
! 	(altivec_init_builtins) Change __builtin_altivec_mask_for_load to use
! 	v16qi_ftype_pcvoid with correct number of parameters.
! 
! 2020-07-10  Anton Youdkevitch  <anton.youdkevitch@bell-sw.com>
! 
! 	* config/aarch64/aarch64.c (thunderx2t99_regmove_cost,
! 	thunderx2t99_vector_cost): Likewise.
! 
! 2020-07-10  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	Backported from master:
! 	2020-07-09  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	PR target/96125
! 	* config/rs6000/rs6000-call.c (rs6000_init_builtins): Define the MMA
! 	specific types __vector_quad and __vector_pair, and initialize the
! 	MMA built-ins if TARGET_EXTRA_BUILTINS is set.
! 	(mma_init_builtins): Don't test for mask set in rs6000_builtin_mask.
! 	Remove now unneeded mask variable.
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Add the
! 	OPTION_MASK_MMA flag for power10 if not already set.
! 
! 2020-07-10  Will Schmidt  <will_schmidt@vnet.ibm.com>
! 
! 	Backported from master:
! 	2020-07-08  Will Schmidt  <will_schmidt@vnet.ibm.com>
! 
! 	* config/rs6000/altivec.h (vec_vmsumudm): New define.
! 	* config/rs6000/altivec.md (UNSPEC_VMSUMUDM): New unspec.
! 	  (altivec_vmsumudm): New define_insn.
! 	* config/rs6000/rs6000-builtin.def (altivec_vmsumudm): New BU_ALTIVEC_3
! 	  entry. (vmsumudm): New BU_ALTIVEC_OVERLOAD_3 entry.
! 	* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add entries for
! 	  ALTIVEC_BUILTIN_VMSUMUDM variants of vec_msum.
! 	* doc/extend.texi: Add document for vmsumudm behind vmsum.
! 
! 2020-07-10  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2020-07-10  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/96133
! 	* gimple-fold.c (fold_array_ctor_reference): Do not
! 	recurse to folding a CTOR that does not fully cover the
! 	asked for object.
  
! 2020-07-10  Bin Cheng  <bin.cheng@linux.alibaba.com>
  
! 	Backported from master:
! 	2020-07-09  Bin Cheng  <bin.cheng@linux.alibaba.com>
  
! 	PR tree-optimization/95804
! 	* tree-loop-distribution.c (break_alias_scc_partitions): Force
! 	negative post order to reduction partition.
  
! 2020-07-10  Bin Cheng  <bin.cheng@linux.alibaba.com>
  
! 	Backported from master:
! 	2020-06-20  Bin Cheng  <bin.cheng@linux.alibaba.com>
  
! 	PR tree-optimization/95638
! 	* tree-loop-distribution.c (pg_edge_callback_data): New field.
! 	(loop_distribution::break_alias_scc_partitions): Record and restore
! 	postorder information.  Fix memory leak.
  
! 2020-07-09  Kito Cheng  <kito.cheng@sifive.com>
  
! 	Backported from master:
! 	2020-07-09  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/riscv-sr.c (riscv_remove_unneeded_save_restore_calls):
! 	Abort if any arguments on stack.
  
! 2020-07-09  Kito Cheng  <kito.cheng@sifive.com>
  
! 	Backported from master:
! 	2020-06-22  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/riscv-builtins.c (RISCV_FTYPE_NAME0): New.
! 	(RISCV_FTYPE_ATYPES0): New.
! 	(riscv_builtins): Using RISCV_USI_FTYPE for frflags.
! 	* config/riscv/riscv-ftypes.def: Remove VOID argument.
  
! 2020-07-09  Kito Cheng  <kito.cheng@sifive.com>
  
! 	Backported from master:
! 	2020-06-16  Kito Cheng  <kito.cheng@sifive.com>
  
! 	PR target/95683
! 	* config/riscv/riscv.c (riscv_gpr_save_operation_p): Remove
! 	assertion and turn it into a early exit check.
  
! 2020-07-09  Kito Cheng  <kito.cheng@sifive.com>
  
! 	Backported from master:
! 	2020-06-15  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/riscv.c (riscv_gen_gpr_save_insn): Change type to
! 	unsigned for i.
! 	(riscv_gpr_save_operation_p): Change type to unsigned for i and
! 	len.
  
! 2020-07-09  Kito Cheng  <kito.cheng@sifive.com>
  
! 	Backported from master:
! 	2020-06-11  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/riscv-protos.h (riscv_output_gpr_save): Remove.
! 	* config/riscv/riscv-sr.c (riscv_sr_match_prologue): Update
! 	value.
! 	* config/riscv/riscv.c (riscv_output_gpr_save): Remove.
! 	* config/riscv/riscv.md (gpr_save): Update output asm pattern.
  
! 2020-07-09  Kito Cheng  <kito.cheng@sifive.com>
  
! 	Backported from master:
! 	2020-06-11  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/predicates.md (gpr_save_operation): New.
! 	* config/riscv/riscv-protos.h (riscv_gen_gpr_save_insn): New.
! 	(riscv_gpr_save_operation_p): Ditto.
! 	* config/riscv/riscv-sr.c (riscv_remove_unneeded_save_restore_calls):
! 	Ignore USEs for gpr_save patter.
! 	* config/riscv/riscv.c (gpr_save_reg_order): New.
! 	(riscv_expand_prologue): Use riscv_gen_gpr_save_insn to gen gpr_save.
! 	(riscv_gen_gpr_save_insn): New.
! 	(riscv_gpr_save_operation_p): Ditto.
! 	* config/riscv/riscv.md (S3_REGNUM): New.
! 	(S4_REGNUM): Ditto.
! 	(S5_REGNUM): Ditto.
! 	(S6_REGNUM): Ditto.
! 	(S7_REGNUM): Ditto.
! 	(S8_REGNUM): Ditto.
! 	(S9_REGNUM): Ditto.
! 	(S10_REGNUM): Ditto.
! 	(S11_REGNUM): Ditto.
! 	(gpr_save): Model USEs correctly.
  
! 2020-07-09  Keith Packard  <keithp@keithp.com>
  
! 	Backported from master:
! 	2020-05-12  Keith Packard  <keithp@keithp.com>
  
! 	* config/riscv/riscv.c (riscv_unique_section): New.
! 	(TARGET_ASM_UNIQUE_SECTION): New.
  
! 2020-07-08  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/95105
  	* config/aarch64/aarch64-sve-builtins.cc
! 	(handle_arm_sve_vector_bits_attribute): Create a copy of the
! 	original type's TYPE_MAIN_VARIANT, then reapply all the differences
! 	between the original type and its main variant.
! 
! 2020-07-07  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2020-07-06  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/96075
! 	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
! 	TYPE_SIZE_UNIT of the vector component type instead of DR_STEP
! 	for the misalignment calculation for negative step.
  
! 2020-07-07  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2020-07-07  Richard Biener  <rguenther@suse.de>
  
! 	* lto-streamer-out.c (cmp_symbol_files): Use the computed
! 	order map to sort symbols from the same sub-file together.
! 	(lto_output): Compute a map of sub-file to an order number
! 	it appears in the symbol output array.
  
! 2020-07-06  Will Schmidt  <will_schmidt@vnet.ibm.com>
  
! 	* config/rs6000/altivec.h (vec_pack_to_short_fp32): Update.
! 	* config/rs6000/altivec.md (UNSPEC_CONVERT_4F32_8F16): New unspec.
! 	(convert_4f32_8f16): New define_expand
! 	* config/rs6000/rs6000-builtin.def (convert_4f32_8f16): New builtin define
! 	and overload.
! 	* config/rs6000/rs6000-call.c (P9V_BUILTIN_VEC_CONVERT_4F32_8F16): New
! 	overloaded builtin entry.
! 	* config/rs6000/vsx.md (UNSPEC_VSX_XVCVSPHP): New unspec.
! 	(vsx_xvcvsphp): New define_insn.
  
! 2020-07-04  Martin Jambor  <mjambor@suse.cz>
  
! 	Backported from master:
! 	2020-07-03  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/96040
! 	* ipa-sra.c (all_callee_accesses_present_p): Do not accept type
! 	mismatched accesses.
  
! 2020-07-03  Martin Jambor  <mjambor@suse.cz>
  
! 	Backported from master:
! 	2020-07-02  Martin Jambor  <mjambor@suse.cz>
  
! 	PR debug/95343
! 	* ipa-param-manipulation.c (ipa_param_adjustments::modify_call): Adjust
! 	argument index if necessary.
  
! 2020-07-02  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
! 	_ARCH_PWR10 when appropriate.
  
! 2020-07-02  Peter Bergner  <bergner@linux.ibm.com>
  
! 	Backported from master:
! 	2020-06-26  Peter Bergner  <bergner@linux.ibm.com>
  
! 	* config/rs6000/rs6000-call.c (cpu_is_info) <power10>: New.
! 	* doc/extend.texi (PowerPC Built-in Functions): Document power10,
! 	arch_3_1 and mma.
  
! 2020-07-02  Michael Meissner  <meissner@linux.ibm.com>
  
! 	Backported from master:
! 	2020-06-09  Michael Meissner  <meissner@linux.ibm.com>
  
! 	* config/rs6000/ppc-auxv.h (PPC_PLATFORM_POWER10): Allocate
! 	'power10' PowerPC platform.
! 	(PPC_FEATURE2_ARCH_3_1): New HWCAP2 bit for ARCH 3.1.
! 	(PPC_FEATURE2_MMA): New HWCAP2 bit for MMA.
! 	* config/rs6000/rs6000-call.c (cpu_supports_info): Add ARCH 3.1 and
! 	MMA HWCAP2 bits.
  
! 2020-07-01  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	Backported from master:
! 	2020-06-22  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* doc/sourcebuild.texi (arm_v8_1m_mve_fp_ok): Add item.
! 	(arm_mve_hw): Likewise.
  
! 2020-06-30  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/rs6000.md (isa): Rename "fut" to "p10".
  
! 2020-06-30  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/driver-rs6000.c (asm_names): Use -mpwr10 for power10
! 	on AIX, and -mpower10 elsewhere.
! 	* config/rs6000/future.md: Delete.
! 	* config/rs6000/linux64.h: Update comments.  Use TARGET_POWER10, not
! 	TARGET_FUTURE.
! 	* config/rs6000/power10.md: New file.
! 	* config/rs6000/rs6000-builtin.def: Update comments.
! 	* config/rs6000/rs6000-call.c: Use P10_BUILTIN_*, not FUTURE_BUILTIN_*.
! 	Update compiler messages.
! 	* config/rs6000/rs6000-cpus.def: Update comments.  Use ISA_3_1_*, not
! 	ISA_FUTURE_*.  Use OPTION_MASK_POWER10, not OPTION_MASK_FUTURE.
! 	* config/rs6000/rs6000-opts.h: Use PROCESSOR_POWER10, not
! 	PROCESSOR_FUTURE.
! 	* config/rs6000/rs6000-string.c: Ditto.
! 	* config/rs6000/rs6000-tables.opt (rs6000_cpu_opt_value): Use "power10"
! 	instead of "future", reorder it to right after "power9".
! 	* config/rs6000/rs6000.c: Update comments.  Use OPTION_MASK_POWER10,
! 	not OPTION_MASK_FUTURE.  Use TARGET_POWER10, not TARGET_FUTURE.  Use
! 	RS6000_BTM_P10, not RS6000_BTM_FUTURE.  Update compiler messages.
! 	Use PROCESSOR_POWER10, not PROCESSOR_FUTURE.  Use ISA_3_1_MASKS_SERVER,
! 	not ISA_FUTURE_MASKS_SERVER.
! 	(rs6000_opt_masks): Use "power10" instead of "future".
! 	(rs6000_builtin_mask_names): Ditto.
! 	(rs6000_disable_incompatible_switches): Ditto.
! 	* config/rs6000/rs6000.h: Use -mpower10, not -mfuture.  Use
! 	-mcpu=power10, not -mcpu=future.  Use MASK_POWER10, not MASK_FUTURE.
! 	Use OPTION_MASK_POWER10, not OPTION_MASK_FUTURE.  Use RS6000_BTM_P10,
! 	not RS6000_BTM_FUTURE.
! 	* config/rs6000/rs6000.md: Use "power10", not "future".  Use
! 	TARGET_POWER10, not TARGET_FUTURE.  Include "power10.md", not
! 	"future.md".
! 	* config/rs6000/rs6000.opt (mfuture): Delete.
! 	(mpower10): New.
! 	* config/rs6000/t-rs6000: Use "power10.md", not "future.md".
! 	* config/rs6000/vsx.md: Use TARGET_POWER10, not TARGET_FUTURE.
  
! 2020-06-30  Alex Coplan  <alex.coplan@arm.com>
  
! 	Backported from master:
! 	2020-05-18  Alex Coplan  <alex.coplan@arm.com>
  
! 	* config/arm/arm.c (output_move_double): Fix codegen when loading into
! 	a register pair with an odd base register.
  
! 2020-06-29  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-06-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/95810
! 	* fold-const.c (fold_cond_expr_with_comparison): Optimize
! 	A <= 0 ? A : -A into (type)-absu(A) rather than -abs(A).
  
! 2020-06-25  H.J. Lu  <hjl.tools@gmail.com>
  
! 	Backported from master:
! 	2020-06-25  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/95874
! 	* config/i386/i386.h (PTA_ICELAKE_CLIENT): Remove PTA_CLWB.
! 	(PTA_ICELAKE_SERVER): Add PTA_CLWB.
! 	(PTA_TIGERLAKE): Add PTA_CLWB.
  
! 2020-06-24  Peter Bergner  <bergner@linux.ibm.com>
  
! 	Backported from master:
! 	2020-06-21  Peter Bergner  <bergner@linux.ibm.com>
  
! 	* config/rs6000/predicates.md (mma_assemble_input_operand): New.
! 	* config/rs6000/rs6000-builtin.def (BU_MMA_1, BU_MMA_V2, BU_MMA_3,
! 	BU_MMA_5, BU_MMA_6, BU_VSX_1): Add support macros for defining MMA
! 	built-in functions.
! 	(ASSEMBLE_ACC, ASSEMBLE_PAIR, DISASSEMBLE_ACC, DISASSEMBLE_PAIR,
! 	PMXVBF16GER2, PMXVBF16GER2NN, PMXVBF16GER2NP, PMXVBF16GER2PN,
! 	PMXVBF16GER2PP, PMXVF16GER2, PMXVF16GER2NN, PMXVF16GER2NP,
! 	PMXVF16GER2PN, PMXVF16GER2PP, PMXVF32GER, PMXVF32GERNN,
! 	PMXVF32GERNP, PMXVF32GERPN, PMXVF32GERPP, PMXVF64GER, PMXVF64GERNN,
! 	PMXVF64GERNP, PMXVF64GERPN, PMXVF64GERPP, PMXVI16GER2, PMXVI16GER2PP,
! 	PMXVI16GER2S, PMXVI16GER2SPP, PMXVI4GER8, PMXVI4GER8PP, PMXVI8GER4,
! 	PMXVI8GER4PP, PMXVI8GER4SPP, XVBF16GER2, XVBF16GER2NN, XVBF16GER2NP,
! 	XVBF16GER2PN, XVBF16GER2PP, XVCVBF16SP, XVCVSPBF16, XVF16GER2,
! 	XVF16GER2NN, XVF16GER2NP, XVF16GER2PN, XVF16GER2PP, XVF32GER,
! 	XVF32GERNN, XVF32GERNP, XVF32GERPN, XVF32GERPP, XVF64GER, XVF64GERNN,
! 	XVF64GERNP, XVF64GERPN, XVF64GERPP, XVI16GER2, XVI16GER2PP, XVI16GER2S,
! 	XVI16GER2SPP, XVI4GER8, XVI4GER8PP, XVI8GER4, XVI8GER4PP, XVI8GER4SPP,
! 	XXMFACC, XXMTACC, XXSETACCZ): Add MMA built-ins.
! 	* config/rs6000/rs6000.c (rs6000_emit_move): Use CONST_INT_P.
! 	Allow zero constants.
! 	(print_operand) <case 'A'>: New output modifier.
! 	(rs6000_split_multireg_move): Add support for inserting accumulator
! 	priming and depriming instructions.  Add support for splitting an
! 	assemble accumulator pattern.
! 	* config/rs6000/rs6000-call.c (mma_init_builtins, mma_expand_builtin,
! 	rs6000_gimple_fold_mma_builtin): New functions.
! 	(RS6000_BUILTIN_M): New macro.
! 	(def_builtin): Handle RS6000_BTC_QUAD and RS6000_BTC_PAIR attributes.
! 	(bdesc_mma): Add new MMA built-in support.
! 	(htm_expand_builtin): Use RS6000_BTC_OPND_MASK.
! 	(rs6000_invalid_builtin): Add handling of RS6000_BTM_FUTURE and
! 	RS6000_BTM_MMA.
! 	(rs6000_builtin_valid_without_lhs): Handle RS6000_BTC_VOID attribute.
! 	(rs6000_gimple_fold_builtin): Call rs6000_builtin_is_supported_p
! 	and rs6000_gimple_fold_mma_builtin.
! 	(rs6000_expand_builtin): Call mma_expand_builtin.
! 	Use RS6000_BTC_OPND_MASK.
! 	(rs6000_init_builtins): Adjust comment.  Call mma_init_builtins.
! 	(htm_init_builtins): Use RS6000_BTC_OPND_MASK.
! 	(builtin_function_type): Handle VSX_BUILTIN_XVCVSPBF16 and
! 	VSX_BUILTIN_XVCVBF16SP.
! 	* config/rs6000/rs6000.h (RS6000_BTC_QUINARY, RS6000_BTC_SENARY,
! 	RS6000_BTC_OPND_MASK, RS6000_BTC_QUAD, RS6000_BTC_PAIR,
! 	RS6000_BTC_QUADPAIR, RS6000_BTC_GIMPLE): New defines.
! 	(RS6000_BTC_PREDICATE, RS6000_BTC_ABS, RS6000_BTC_DST,
! 	RS6000_BTC_TYPE_MASK, RS6000_BTC_ATTR_MASK): Adjust values.
! 	* config/rs6000/mma.md (MAX_MMA_OPERANDS): New define_constant.
! 	(UNSPEC_MMA_ASSEMBLE_ACC, UNSPEC_MMA_PMXVBF16GER2,
! 	UNSPEC_MMA_PMXVBF16GER2NN, UNSPEC_MMA_PMXVBF16GER2NP,
! 	UNSPEC_MMA_PMXVBF16GER2PN, UNSPEC_MMA_PMXVBF16GER2PP,
! 	UNSPEC_MMA_PMXVF16GER2, UNSPEC_MMA_PMXVF16GER2NN,
! 	UNSPEC_MMA_PMXVF16GER2NP, UNSPEC_MMA_PMXVF16GER2PN,
! 	UNSPEC_MMA_PMXVF16GER2PP, UNSPEC_MMA_PMXVF32GER,
! 	UNSPEC_MMA_PMXVF32GERNN, UNSPEC_MMA_PMXVF32GERNP,
! 	UNSPEC_MMA_PMXVF32GERPN, UNSPEC_MMA_PMXVF32GERPP,
! 	UNSPEC_MMA_PMXVF64GER, UNSPEC_MMA_PMXVF64GERNN,
! 	UNSPEC_MMA_PMXVF64GERNP, UNSPEC_MMA_PMXVF64GERPN,
! 	UNSPEC_MMA_PMXVF64GERPP, UNSPEC_MMA_PMXVI16GER2,
! 	UNSPEC_MMA_PMXVI16GER2PP, UNSPEC_MMA_PMXVI16GER2S,
! 	UNSPEC_MMA_PMXVI16GER2SPP, UNSPEC_MMA_PMXVI4GER8,
! 	UNSPEC_MMA_PMXVI4GER8PP, UNSPEC_MMA_PMXVI8GER4,
! 	UNSPEC_MMA_PMXVI8GER4PP, UNSPEC_MMA_PMXVI8GER4SPP,
! 	UNSPEC_MMA_XVBF16GER2, UNSPEC_MMA_XVBF16GER2NN,
! 	UNSPEC_MMA_XVBF16GER2NP, UNSPEC_MMA_XVBF16GER2PN,
! 	UNSPEC_MMA_XVBF16GER2PP, UNSPEC_MMA_XVF16GER2, UNSPEC_MMA_XVF16GER2NN,
! 	UNSPEC_MMA_XVF16GER2NP, UNSPEC_MMA_XVF16GER2PN, UNSPEC_MMA_XVF16GER2PP,
! 	UNSPEC_MMA_XVF32GER, UNSPEC_MMA_XVF32GERNN, UNSPEC_MMA_XVF32GERNP,
! 	UNSPEC_MMA_XVF32GERPN, UNSPEC_MMA_XVF32GERPP, UNSPEC_MMA_XVF64GER,
! 	UNSPEC_MMA_XVF64GERNN, UNSPEC_MMA_XVF64GERNP, UNSPEC_MMA_XVF64GERPN,
! 	UNSPEC_MMA_XVF64GERPP, UNSPEC_MMA_XVI16GER2, UNSPEC_MMA_XVI16GER2PP,
! 	UNSPEC_MMA_XVI16GER2S, UNSPEC_MMA_XVI16GER2SPP, UNSPEC_MMA_XVI4GER8,
! 	UNSPEC_MMA_XVI4GER8PP, UNSPEC_MMA_XVI8GER4, UNSPEC_MMA_XVI8GER4PP,
! 	UNSPEC_MMA_XVI8GER4SPP, UNSPEC_MMA_XXMFACC, UNSPEC_MMA_XXMTACC): New.
! 	(MMA_ACC, MMA_VV, MMA_AVV, MMA_PV, MMA_APV, MMA_VVI4I4I8,
! 	MMA_AVVI4I4I8, MMA_VVI4I4I2, MMA_AVVI4I4I2, MMA_VVI4I4,
! 	MMA_AVVI4I4, MMA_PVI4I2, MMA_APVI4I2, MMA_VVI4I4I4,
! 	MMA_AVVI4I4I4): New define_int_iterator.
! 	(acc, vv, avv, pv, apv, vvi4i4i8, avvi4i4i8, vvi4i4i2,
! 	avvi4i4i2, vvi4i4, avvi4i4, pvi4i2, apvi4i2, vvi4i4i4,
! 	avvi4i4i4): New define_int_attr.
! 	(*movpxi): Add zero constant alternative.
! 	(mma_assemble_pair, mma_assemble_acc): New define_expand.
! 	(*mma_assemble_acc): New define_insn_and_split.
! 	(mma_<acc>, mma_xxsetaccz, mma_<vv>, mma_<avv>, mma_<pv>, mma_<apv>,
! 	mma_<vvi4i4i8>, mma_<avvi4i4i8>, mma_<vvi4i4i2>, mma_<avvi4i4i2>,
! 	mma_<vvi4i4>, mma_<avvi4i4>, mma_<pvi4i2>, mma_<apvi4i2>,
! 	mma_<vvi4i4i4>, mma_<avvi4i4i4>): New define_insn.
! 	* config/rs6000/rs6000.md (define_attr "type"): New type mma.
! 	* config/rs6000/vsx.md (UNSPEC_VSX_XVCVBF16SP): New.
! 	(UNSPEC_VSX_XVCVSPBF16): Likewise.
! 	(XVCVBF16): New define_int_iterator.
! 	(xvcvbf16): New define_int_attr.
! 	(vsx_<xvcvbf16>): New define_insn.
! 	* doc/extend.texi: Document the mma built-ins.
  
! 2020-06-24  Kelvin Nilsen  <wschmidt@linux.ibm.com>
  
! 	* config/rs6000/predicates.md (u8bit_cint_operand): New predicate.
  
! 2020-06-24  Peter Bergner  <bergner@linux.ibm.com>
  
! 	Backported from master:
! 	2020-06-21  Peter Bergner  <bergner@linux.ibm.com>
! 		    Michael Meissner  <meissner@linux.ibm.com>
  
! 	* config/rs6000/mma.md: New file.
! 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
! 	__MMA__ for mma.
! 	* config/rs6000/rs6000-call.c (rs6000_init_builtins): Add support
! 	for __vector_pair and __vector_quad types.
! 	* config/rs6000/rs6000-cpus.def (OTHER_FUTURE_MASKS): Add
! 	OPTION_MASK_MMA.
! 	(POWERPC_MASKS): Likewise.
! 	* config/rs6000/rs6000-modes.def (OI, XI): New integer modes.
! 	(POI, PXI): New partial integer modes.
! 	* config/rs6000/rs6000.c (TARGET_INVALID_CONVERSION): Define.
! 	(rs6000_hard_regno_nregs_internal): Use VECTOR_ALIGNMENT_P.
! 	(rs6000_hard_regno_mode_ok_uncached): Likewise.
! 	Add support for POImode being allowed in VSX registers and PXImode
! 	being allowed in FP registers.
! 	(rs6000_modes_tieable_p): Adjust comment.
! 	Add support for POImode and PXImode.
! 	(rs6000_debug_reg_global) <print_tieable_modes>: Add OImode, POImode
! 	XImode, PXImode, V2SImode, V2SFmode and CCFPmode..
! 	(rs6000_setup_reg_addr_masks): Use VECTOR_ALIGNMENT_P.
! 	Set up appropriate addr_masks for vector pair and vector quad addresses.
! 	(rs6000_init_hard_regno_mode_ok): Add support for vector pair and
! 	vector quad registers.  Setup reload handlers for POImode and PXImode.
! 	(rs6000_builtin_mask_calculate): Add support for RS6000_BTM_MMA.
! 	(rs6000_option_override_internal): Error if -mmma is specified
! 	without -mcpu=future.
! 	(rs6000_slow_unaligned_access): Use VECTOR_ALIGNMENT_P.
! 	(quad_address_p): Change size test to less than 16 bytes.
! 	(reg_offset_addressing_ok_p): Add support for ISA 3.1 vector pair
! 	and vector quad instructions.
! 	(avoiding_indexed_address_p): Likewise.
! 	(rs6000_emit_move): Disallow POImode and PXImode moves involving
! 	constants.
! 	(rs6000_preferred_reload_class): Prefer VSX registers for POImode
! 	and FP registers for PXImode.
! 	(rs6000_split_multireg_move): Support splitting POImode and PXImode
! 	move instructions.
! 	(rs6000_mangle_type): Adjust comment.  Add support for mangling
! 	__vector_pair and __vector_quad types.
! 	(rs6000_opt_masks): Add entry for mma.
! 	(rs6000_builtin_mask_names): Add RS6000_BTM_MMA and RS6000_BTM_FUTURE.
! 	(rs6000_function_value): Use VECTOR_ALIGNMENT_P.
! 	(address_to_insn_form): Likewise.
! 	(reg_to_non_prefixed): Likewise.
! 	(rs6000_invalid_conversion): New function.
! 	* config/rs6000/rs6000.h (MASK_MMA): Define.
! 	(BIGGEST_ALIGNMENT): Set to 512 if MMA support is enabled.
! 	(VECTOR_ALIGNMENT_P): New helper macro.
! 	(ALTIVEC_VECTOR_MODE): Use VECTOR_ALIGNMENT_P.
! 	(RS6000_BTM_MMA): Define.
! 	(RS6000_BTM_COMMON): Add RS6000_BTM_MMA and RS6000_BTM_FUTURE.
! 	(rs6000_builtin_type_index): Add RS6000_BTI_vector_pair and
! 	RS6000_BTI_vector_quad.
! 	(vector_pair_type_node): New.
! 	(vector_quad_type_node): New.
! 	* config/rs6000/rs6000.md: Include mma.md.
! 	(define_mode_iterator RELOAD): Add POI and PXI.
! 	* config/rs6000/t-rs6000 (MD_INCLUDES): Add mma.md.
! 	* config/rs6000/rs6000.opt (-mmma): New.
! 	* doc/invoke.texi: Document -mmma.
  
! 2020-06-24  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2020-06-17  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/95717
! 	* tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg):
! 	Move BB SSA updating before exit/latch PHI current def copying.
  
! 2020-06-23  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/95493
! 	PR middle-end/95690
! 	* cfgexpand.c (expand_debug_expr): Avoid calling
! 	set_mem_attributes_minus_bitpos when we were expanding
! 	an SSA name.
! 	* emit-rtl.c (set_mem_attributes_minus_bitpos): Remove
! 	ARRAY_REF special-casing, add CONSTRUCTOR to the set of
! 	special-cases we do not want MEM_EXPRs for.  Assert
! 	we end up with reasonable MEM_EXPRs.
! 	* varasm.c (build_constant_desc): Remove set_mem_attributes call.
  
! 2020-06-23  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/95487
! 	* tree-vect-stmts.c (vectorizable_store): Use a truth type
! 	for the scatter mask.
  
! 2020-06-23  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/95308
! 	* tree-ssa-forwprop.c (pass_forwprop::execute): Generalize
! 	test for TARGET_MEM_REFs.
  
! 2020-06-23  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/95133
! 	* gimple-ssa-split-paths.c
! 	(find_block_to_duplicate_for_splitting_paths): Check for
! 	normal edges.
  
! 2020-06-23  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/95118
! 	* real.c (real_to_decimal_for_mode): Make sure we handle
! 	a zero with nonzero exponent.
  
! 2020-06-23  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/95049
! 	* tree-ssa-sccvn.c (set_ssa_val_to): Reject lattice transition
! 	between different constants.
  
! 2020-06-23  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/94964
! 	* cfgloopmanip.c (create_preheader): Require non-complex
! 	preheader edge for CP_SIMPLE_PREHEADERS.
  
! 2020-06-20  Bin Cheng  <bin.cheng@linux.alibaba.com>
  
! 	PR tree-optimization/94969
! 	* tree-data-ref.c (constant_access_functions): Rename to...
! 	(invariant_access_functions): ...this.  Add parameter.  Check for
! 	invariant access function, rather than constant.
! 	(build_classic_dist_vector): Call above function.
! 	* tree-loop-distribution.c (pg_add_dependence_edges): Add comment.
  
! 2020-06-19  Jiufu Guo  <guojiufu@linux.ibm.com>
  
! 	PR target/95018
! 	* common.opt (flag_cunroll_grow_size): New flag.
! 	* toplev.c (process_options): Set flag_cunroll_grow_size.
! 	* tree-ssa-loop-ivcanon.c (pass_complete_unroll::execute):
! 	Use flag_cunroll_grow_size.
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
! 	Override flag_cunroll_grow_size.
  
! 2020-06-18  Aaron Sawdey  <acsawdey@linux.ibm.com>
  
! 	PR target/95347
! 	* config/rs6000/rs6000.c (is_stfs_insn): Rename to
! 	is_lfs_stfs_insn and make it recognize lfs as well.
! 	(prefixed_store_p): Use is_lfs_stfs_insn().
! 	(prefixed_load_p): Use is_lfs_stfs_insn() to recognize lfs.
  
! 2020-06-18  Aaron Sawdey  <acsawdey@linux.ibm.com>
  
! 	PR target/95347
! 	* config/rs6000/rs6000.c (prefixed_store_p): Add special case
! 	for stfs.
! 	(is_stfs_insn): New helper function.
  
! 2020-06-18  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-06-18  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/95713
! 	* tree-ssa-forwprop.c (simplify_vector_constructor): Don't allow
! 	scalar mode halfvectype other than vector boolean for
! 	VEC_PACK_TRUNC_EXPR.
  
! 2020-06-18  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	Backported from master:
! 	2020-06-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* config/arm/arm_mve.h (__arm_vaddq_m_n_s8): Correct the intrinsic
! 	arguments.
! 	(__arm_vaddq_m_n_s32): Likewise.
! 	(__arm_vaddq_m_n_s16): Likewise.
! 	(__arm_vaddq_m_n_u8): Likewise.
! 	(__arm_vaddq_m_n_u32): Likewise.
! 	(__arm_vaddq_m_n_u16): Likewise.
! 	(__arm_vaddq_m): Modify polymorphic variant.
  
! 2020-06-18  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	Backported from master:
! 	2020-06-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* config/arm/mve.md (mve_uqrshll_sat<supf>_di): Correct the predicate
! 	and constraint of all the operands.
! 	(mve_sqrshrl_sat<supf>_di): Likewise.
! 	(mve_uqrshl_si): Likewise.
! 	(mve_sqrshr_si): Likewise.
! 	(mve_uqshll_di): Likewise.
! 	(mve_urshrl_di): Likewise.
! 	(mve_uqshl_si): Likewise.
! 	(mve_urshr_si): Likewise.
! 	(mve_sqshl_si): Likewise.
! 	(mve_srshr_si): Likewise.
! 	(mve_srshrl_di): Likewise.
! 	(mve_sqshll_di): Likewise.
! 	* config/arm/predicates.md (arm_low_register_operand): Define.
  
! 2020-06-17  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	Backported from master:
! 	2020-06-17  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	* hsa-gen.c (gen_hsa_insns_for_call): Move 'function_decl ==
! 	NULL_TREE' check earlier.
  
! 2020-06-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* config/arm/arm_mve.h (__arm_vbicq_n_u16): Correct the intrinsic
! 	arguments.
! 	(__arm_vbicq_n_s16): Likewise.
! 	(__arm_vbicq_n_u32): Likewise.
! 	(__arm_vbicq_n_s32): Likewise.
! 	(__arm_vbicq): Modify polymorphic variant.
  
! 2020-06-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	PR target/94735
! 	* config/arm/predicates.md (mve_scatter_memory): Define to
! 	match (mem (reg)) for scatter store memory.
! 	* config/arm/mve.md (mve_vstrbq_scatter_offset_<supf><mode>): Modify
! 	define_insn to define_expand.
! 	(mve_vstrbq_scatter_offset_p_<supf><mode>): Likewise.
! 	(mve_vstrhq_scatter_offset_<supf><mode>): Likewise.
! 	(mve_vstrhq_scatter_shifted_offset_p_<supf><mode>): Likewise.
! 	(mve_vstrhq_scatter_shifted_offset_<supf><mode>): Likewise.
! 	(mve_vstrdq_scatter_offset_p_<supf>v2di): Likewise.
! 	(mve_vstrdq_scatter_offset_<supf>v2di): Likewise.
! 	(mve_vstrdq_scatter_shifted_offset_p_<supf>v2di): Likewise.
! 	(mve_vstrdq_scatter_shifted_offset_<supf>v2di): Likewise.
! 	(mve_vstrhq_scatter_offset_fv8hf): Likewise.
! 	(mve_vstrhq_scatter_offset_p_fv8hf): Likewise.
! 	(mve_vstrhq_scatter_shifted_offset_fv8hf): Likewise.
! 	(mve_vstrhq_scatter_shifted_offset_p_fv8hf): Likewise.
! 	(mve_vstrwq_scatter_offset_fv4sf): Likewise.
! 	(mve_vstrwq_scatter_offset_p_fv4sf): Likewise.
! 	(mve_vstrwq_scatter_offset_p_<supf>v4si): Likewise.
! 	(mve_vstrwq_scatter_offset_<supf>v4si): Likewise.
! 	(mve_vstrwq_scatter_shifted_offset_fv4sf): Likewise.
! 	(mve_vstrwq_scatter_shifted_offset_p_fv4sf): Likewise.
! 	(mve_vstrwq_scatter_shifted_offset_p_<supf>v4si): Likewise.
! 	(mve_vstrwq_scatter_shifted_offset_<supf>v4si): Likewise.
! 	(mve_vstrbq_scatter_offset_<supf><mode>_insn): Define insn for scatter
! 	stores.
! 	(mve_vstrbq_scatter_offset_p_<supf><mode>_insn): Likewise.
! 	(mve_vstrhq_scatter_offset_<supf><mode>_insn): Likewise.
! 	(mve_vstrhq_scatter_shifted_offset_p_<supf><mode>_insn): Likewise.
! 	(mve_vstrhq_scatter_shifted_offset_<supf><mode>_insn): Likewise.
! 	(mve_vstrdq_scatter_offset_p_<supf>v2di_insn): Likewise.
! 	(mve_vstrdq_scatter_offset_<supf>v2di_insn): Likewise.
! 	(mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn): Likewise.
! 	(mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn): Likewise.
! 	(mve_vstrhq_scatter_offset_fv8hf_insn): Likewise.
! 	(mve_vstrhq_scatter_offset_p_fv8hf_insn): Likewise.
! 	(mve_vstrhq_scatter_shifted_offset_fv8hf_insn): Likewise.
! 	(mve_vstrhq_scatter_shifted_offset_p_fv8hf_insn): Likewise.
! 	(mve_vstrwq_scatter_offset_fv4sf_insn): Likewise.
! 	(mve_vstrwq_scatter_offset_p_fv4sf_insn): Likewise.
! 	(mve_vstrwq_scatter_offset_p_<supf>v4si_insn): Likewise.
! 	(mve_vstrwq_scatter_offset_<supf>v4si_insn): Likewise.
! 	(mve_vstrwq_scatter_shifted_offset_fv4sf_insn): Likewise.
! 	(mve_vstrwq_scatter_shifted_offset_p_fv4sf_insn): Likewise.
! 	(mve_vstrwq_scatter_shifted_offset_p_<supf>v4si_insn): Likewise.
! 	(mve_vstrwq_scatter_shifted_offset_<supf>v4si_insn): Likewise.
  
! 2020-06-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* config/arm/arm.c (mve_vector_mem_operand): Fix unwanted
! 	fall-throughs.
  
! 2020-06-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 	    Andre Vieira   <andre.simoesdiasvieira@arm.com>
  
! 	PR target/94959
! 	* config/arm/arm-protos.h (arm_mode_base_reg_class): Function
! 	declaration.
! 	(mve_vector_mem_operand): Likewise.
! 	* config/arm/arm.c (thumb2_legitimate_address_p): For MVE target check
! 	the load from memory to a core register is legitimate for give mode.
! 	(mve_vector_mem_operand): Define function.
! 	(arm_print_operand): Modify comment.
! 	(arm_mode_base_reg_class): Define.
! 	* config/arm/arm.h (MODE_BASE_REG_CLASS): Modify to add check for
! 	TARGET_HAVE_MVE and expand to arm_mode_base_reg_class on TRUE.
! 	* config/arm/constraints.md (Ux): Likewise.
! 	(Ul): Likewise.
! 	* config/arm/mve.md (mve_mov): Replace constraint Us with Ux and also
! 	add support for missing Vector Store Register and Vector Load Register.
! 	Add a new alternative to support load from memory to PC (or label) in
! 	vector store/load.
! 	(mve_vstrbq_<supf><mode>): Modify constraint Us to Ux.
! 	(mve_vldrbq_<supf><mode>): Modify constriant Us to Ux, predicate to
! 	mve_memory_operand and also modify the MVE instructions to emit.
! 	(mve_vldrbq_z_<supf><mode>): Modify constraint Us to Ux.
! 	(mve_vldrhq_fv8hf): Modify constriant Us to Ux, predicate to
! 	mve_memory_operand and also modify the MVE instructions to emit.
! 	(mve_vldrhq_<supf><mode>): Modify constriant Us to Ux, predicate to
! 	mve_memory_operand and also modify the MVE instructions to emit.
! 	(mve_vldrhq_z_fv8hf): Likewise.
! 	(mve_vldrhq_z_<supf><mode>): Likewise.
! 	(mve_vldrwq_fv4sf): Likewise.
! 	(mve_vldrwq_<supf>v4si): Likewise.
! 	(mve_vldrwq_z_fv4sf): Likewise.
! 	(mve_vldrwq_z_<supf>v4si): Likewise.
! 	(mve_vld1q_f<mode>): Modify constriant Us to Ux.
! 	(mve_vld1q_<supf><mode>): Likewise.
! 	(mve_vstrhq_fv8hf): Modify constriant Us to Ux, predicate to
! 	mve_memory_operand.
! 	(mve_vstrhq_p_fv8hf): Modify constriant Us to Ux, predicate to
! 	mve_memory_operand and also modify the MVE instructions to emit.
! 	(mve_vstrhq_p_<supf><mode>): Likewise.
! 	(mve_vstrhq_<supf><mode>): Modify constriant Us to Ux, predicate to
! 	mve_memory_operand.
! 	(mve_vstrwq_fv4sf): Modify constriant Us to Ux.
! 	(mve_vstrwq_p_fv4sf): Modify constriant Us to Ux and also modify the MVE
! 	instructions to emit.
! 	(mve_vstrwq_p_<supf>v4si): Likewise.
! 	(mve_vstrwq_<supf>v4si): Likewise.Modify constriant Us to Ux.
! 	* config/arm/predicates.md (mve_memory_operand): Define.
  
! 2020-06-15  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn-valu.md (v<expander><mode>3): Fix unsignedp.
  
! 2020-06-15  Tobias Burnus  <tobias@codesourcery.com>
  
! 	* omp-offload.c (add_decls_addresses_to_decl_constructor,
! 	omp_finish_file): With in_lto_p, stream out all offload-table
! 	items even if the symtab_node does not exist.
  
! 2020-06-15  Tobias Burnus  <tobias@codesourcery.com>
  
! 	PR lto/94848
! 	PR middle-end/95551
! 	* omp-offload.c (add_decls_addresses_to_decl_constructor,
! 	omp_finish_file): Skip removed items.
! 	* lto-cgraph.c (output_offload_tables): Likewise; set force_output
! 	to this node for variables and functions.
  
! 2020-06-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/95528
! 	* tree-ssa-forwprop.c (simplify_vector_constructor): Don't use
! 	VEC_UNPACK*_EXPR or VEC_PACK_TRUNC_EXPR with scalar modes unless the
! 	type is vector boolean.
  
! 2020-06-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/95197
! 	* gimplify.c (find_combined_omp_for): Move to omp-general.c.
! 	* omp-general.h (find_combined_omp_for): Declare.
! 	* omp-general.c: Include tree-iterator.h.
! 	(find_combined_omp_for): New function, moved from gimplify.c.
  
! 2020-06-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/95108
! 	* omp-simd-clone.c (struct modify_stmt_info): Add after_stmt member.
! 	(ipa_simd_modify_stmt_ops): For PHIs, only add before first stmt in
! 	entry block if info->after_stmt is NULL, otherwise add after that stmt
! 	and update it after adding each stmt.
! 	(ipa_simd_modify_function_body): Initialize info.after_stmt.
  
! 2020-06-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/95080
! 	* cfgrtl.c (purge_dead_edges): Skip over debug and note insns even
! 	if the last insn is a note.
  
! 2020-06-12  Martin Liska  <mliska@suse.cz>
! 	    Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/95634
! 	* asan.c (asan_emit_stack_protection): Fix emission for ilp32
! 	by using Pmode instead of ptr_mode.
  
! 2020-06-12  Martin Liska  <mliska@suse.cz>
  
! 	PR sanitizer/94910
! 	* asan.c (asan_emit_stack_protection): Emit
! 	also **SavedFlagPtr(FakeStack, class_id) = 0 in order to release
! 	a stack frame.
  
! 2020-06-08  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/95113
! 	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Move non-call
! 	exceptions check to...
! 	* tree-eh.c (stmt_unremovable_because_of_non_call_eh_p): ...this
! 	new function.
! 	* tree-eh.h (stmt_unremovable_because_of_non_call_eh_p): Declare it.
! 	* ipa-sra.c (isra_track_scalar_value_uses): Use it.  New parameter
! 	fun.
  
! 2020-06-05  Thomas Schwinge  <thomas@codesourcery.com>
! 	    Julian Brown  <julian@codesourcery.com>
  
! 	* gimplify.c (gimplify_adjust_omp_clauses): Remove
! 	'GOMP_MAP_STRUCT' mapping from OpenACC 'exit data' directives.
  
! 2020-06-05  H.J. Lu  <hjl.tools@gmail.com>
  
! 	* config/i386/driver-i386.c (host_detect_local_cpu): Support
! 	Intel Airmont, Tremont, Comet Lake, Ice Lake and Tiger Lake
! 	processor families.
  
! 2020-06-05  Lili Cui  <lili.cui@intel.com>
  
! 	PR target/95525
! 	* config/i386/i386.h (PTA_WAITPKG): Change bitmask value.
  
! 2020-06-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-cores.def (zeus): Define.
! 	* config/aarch64/aarch64-tune.md: Regenerate.
! 	* doc/invoke.texi (AArch64 Options): Document zeus -mcpu option.
  
! 2020-06-02  Iain Buclaw  <ibuclaw@gdcproject.org>
  
! 	PR target/95420
! 	* config.gcc (arm-wrs-vxworks7*): Set default cpu to generic-armv7-a.
  
! 2020-05-29  Alex Coplan  <alex.coplan@arm.com>
  
! 	PR target/94591
! 	* config/aarch64/aarch64.c (aarch64_evpc_rev_local): Don't match
! 	identity permutation.
  
! 2020-05-29  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn-valu.md (add<mode>3_zext_dup): Change to a
! 	define_expand, and rename the original to ...
! 	(add<mode>3_vcc_zext_dup): ... this, and add a custom VCC operand.
! 	(add<mode>3_zext_dup_exec): Likewise, with ...
! 	(add<mode>3_vcc_zext_dup_exec): ... this.
! 	(add<mode>3_zext_dup2): Likewise, with ...
! 	(add<mode>3_zext_dup_exec): ... this.
! 	(add<mode>3_zext_dup2_exec): Likewise, with ...
! 	(add<mode>3_zext_dup2): ... this.
! 	* config/gcn/gcn.c (gcn_expand_scalar_to_vector_address): Switch
! 	addv64di3_zext* calls to use addv64di3_vcc_zext*.
  
! 2020-05-29  Dong JianQiang  <dongjianqiang2@huawei.com>
  
! 	PR gcov-profile/95332
! 	* gcov-io.c (gcov_var::endian): Move field.
! 	(from_file): Add IN_GCOV_TOOL check.
! 	* gcov-io.h (gcov_magic): Ditto.
  
! 2020-05-28  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR testsuite/95361
! 	* config/aarch64/aarch64.c (aarch64_expand_epilogue): Only
! 	redefine the CFA if we have CFI operations.
  
! 2020-05-28  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/mmx.md (mmx_haddsubv2sf3): Correct
! 	RTL template to model horizontal subtraction and addition.
  
! 2020-05-28  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/95355
! 	* config/i386/sse.md
! 	(<mask_codefor>avx512f_<code>v16qiv16si2<mask_name>):
! 	Remove %q operand modifier from insn template.
! 	(avx512f_<code>v8hiv8di2<mask_name>): Ditto.
  
! 2020-05-28  Martin Liska  <mliska@suse.cz>
  
! 	PR web/95380
! 	* doc/invoke.texi: Add missing params, remove max-once-peeled-insns and
! 	rename ipcp-unit-growth to ipa-cp-unit-growth.
  
! 2020-05-24  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/95255
! 	* config/i386/i386.md (<rounding_insn><mode>2): Do not try to
! 	expand non-sse4 ROUND_ROUNDEVEN rounding via SSE support routines.
  
! 2020-05-24  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	Backported from master.
! 	2020-05-22  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* config/darwin.h (ASM_GENERATE_INTERNAL_LABEL):
! 	Make ubsan_{data,type},ASAN linker-visible.
  
! 2020-05-24  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/95258
! 	* config/i386/driver-i386.c (host_detect_local_cpu): Detect
! 	AVX512VPOPCNTDQ.
  
! 2020-05-22  Richard Biener  <rguenther@suse.de>
  
! 	PR lto/95190
! 	* doc/invoke.texi (flto): Document behavior of diagnostic
! 	options.
  
! 2020-05-21  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/95169
! 	* config/i386/i386-expand.c (ix86_expand_int_movcc):
! 	 Avoid reversing a non-trapping comparison to a trapping one.
  
! 2020-05-21  Martin Liska  <mliska@suse.cz>
  
! 	* common/config/aarch64/aarch64-common.c (aarch64_handle_option):
! 	Handle OPT_moutline_atomics.
! 	* config/aarch64/aarch64.c: Add outline-atomics to
! 	aarch64_attributes.
! 	* doc/extend.texi: Document the newly added target attribute.
  
! 2020-05-21  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	Backport from master
! 	2020-05-21  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/95212
! 	* config/i386/i386-builtins.c (processor_features): Move
! 	F_AVX512VP2INTERSECT after F_AVX512BF16.
! 	(isa_names_table): Likewise.
  
! 2020-05-19  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	Backport from mainline
! 	2020-05-10  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* config/i386/i386-c.c (ix86_target_macros): Define _ILP32 and
! 	__ILP32__ for 32-bit targets.
  
! 2020-05-19  Tobias Burnus  <tobias@codesourcery.com>
  
! 	Backport from mainline
! 	2020-05-15  Tobias Burnus  <tobias@codesourcery.com>
  
! 	PR middle-end/94635
! 	* gimplify.c (gimplify_scan_omp_clauses): For MAP_TO_PSET with
! 	OMP_TARGET_EXIT_DATA, use 'release:' unless the associated
! 	item is 'delete:'.
  
! 2020-05-18  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/94940
! 	* tree-vrp.c (vrp_prop::check_mem_ref): Remove unreachable code.
! 	* tree.c (component_ref_size): Correct the handling or array members
! 	of unions.
! 	Drop a pointless test.
! 	Rename a local variable.
  
! 2020-05-12  Richard Biener  <rguenther@suse.de>
  
! 	Backport from mainline
! 	2020-05-07  Richard Biener  <rguenther@suse.de>
  
! 	PR ipa/94947
! 	* tree-ssa-structalias.c (refered_from_nonlocal_fn): Use
! 	DECL_EXTERNAL || TREE_PUBLIC instead of externally_visible.
! 	(refered_from_nonlocal_var): Likewise.
! 	(ipa_pta_execute): Likewise.
  
! 	2020-05-05  Richard Biener  <rguenther@suse.de>
  
! 	PR ipa/94947
! 	* tree-ssa-structalias.c (ipa_pta_execute): Use
! 	varpool_node::externally_visible_p ().
! 	(refered_from_nonlocal_var): Likewise.
  
! 2020-05-12  David Edelsohn  <dje.gcc@gmail.com>
  
! 	Backport from mainline
! 	2020-05-04  Clement Chigot  <clement.chigot@atos.net>
! 		    David Edelsohn  <dje.gcc@gmail.com>
  
! 	* config/rs6000/rs6000-call.c (rs6000_init_builtins): Override explicit
! 	for fmodl, frexpl, ldexpl and modfl builtins.
  
! 2020-05-11  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	Backport from mainline
! 	2020-05-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* config/rtems.h (RTEMS_STARTFILE_SPEC): Define if undefined.
! 	(RTEMS_ENDFILE_SPEC): Likewise.
! 	(STARTFILE_SPEC): Update comment.  Add RTEMS_STARTFILE_SPEC.
! 	(ENDFILE_SPEC): Add RTEMS_ENDFILE_SPEC.
! 	(LIB_SPECS): Support -nodefaultlibs option.
! 	* config/or1k/rtems.h (RTEMS_STARTFILE_SPEC): Define.
! 	(RTEMS_ENDFILE_SPEC): Likewise.
! 	* config/rs6000/rtems.h (RTEMS_STARTFILE_SPEC): Likewise.
! 	(RTEMS_ENDFILE_SPEC): Likewise.
! 	* config/v850/rtems.h (RTEMS_STARTFILE_SPEC): Likewise.
! 	(RTEMS_ENDFILE_SPEC): Likewise.
  
! 2020-05-11  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2020-05-11  Martin Liska  <mliska@suse.cz>
  
! 	PR c/95040
! 	* common.opt: Fix typo in option description.
  
! 2020-05-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/94724
! 	* tree.c (get_narrower): Reuse the op temporary instead of
! 	shadowing it.
  
! 2020-05-07  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* config/alpha/alpha.c (alpha_atomic_assign_expand_fenv): Use
! 	TARGET_EXPR instead of MODIFY_EXPR for the first assignments to
! 	fenv_var and new_fenv_var.
  
! 2020-05-07  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2020-05-07  Martin Liska  <mliska@suse.cz>
  
! 	* doc/invoke.texi: Fix 2 optindex entries.
  
! 2020-05-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from mainline
! 	2020-05-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94950
! 	* config/riscv/riscv-builtins.c (riscv_atomic_assign_expand_fenv): Use
! 	TARGET_EXPR instead of MODIFY_EXPR for first assignment to old_flags.
  
! 	PR rtl-optimization/94873
! 	* combine.c (combine_instructions): Don't optimize using REG_EQUAL
! 	note if SET_SRC (set) has side-effects.
  
! 	2020-05-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94942
! 	* config/i386/mmx.md (*vec_dupv4hi): Use xYw constraints instead of Yv.
  
! 	2020-05-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	* opts.c (get_option_html_page): Instead of hardcoding a list of
! 	options common between C/C++ and Fortran only use gfortran/
! 	documentation for warnings that have CL_Fortran set but not
! 	CL_C or CL_CXX.
  
! 2020-05-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	* BASE-VER: Set to 10.1.1.
  
! 2020-05-07  Release Manager
  
! 	* GCC 10.1.0 released.
  
! 2020-05-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	* doc/install.texi: Replace Sun with Solaris as appropriate.
! 	(Tools/packages necessary for building GCC, Perl version between
! 	5.6.1 and 5.6.24): Remove Solaris 8 reference.
! 	(Installing GCC: Binaries, Solaris 2 (SPARC, Intel)): Remove
! 	TGCware reference.
! 	(Specific, i?86-*-solaris2*): Update version references for
! 	Solaris 11.3 and later.  Remove gas 2.26 caveat.
! 	(Specific, *-*-solaris2*): Update version references for
! 	Solaris 11.3 and later.  Remove boehm-gc reference.
! 	Document GMP, MPFR caveats on Solaris 11.3.
! 	(Specific, sparc-sun-solaris2*): Update Solaris 9 references.
! 	(Specific, sparc64-*-solaris2*): Likewise.
! 	Document --build requirement.
  
! 2020-05-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	* configure.ac <i[34567]86-*-*>: Add --32 to tls_as_opt on Solaris.
! 	* configure: Regenerate.
  
! 2020-05-04  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR middle-end/94941
! 	* internal-fn.c (expand_load_lanes_optab_fn): Emit a move if the
! 	chosen lhs is different from the gcall lhs.
! 	(expand_mask_load_optab_fn): Likewise.
! 	(expand_gather_load_optab_fn): Likewise.
  
! 2020-05-04  Marek Polacek  <polacek@redhat.com>
  
! 	Revert:
! 	2020-04-30  Marek Polacek  <polacek@redhat.com>
  
! 	PR c++/94775
! 	* tree.c (check_base_type): Return true only if TYPE_USER_ALIGN match.
! 	(check_aligned_type): Check if TYPE_USER_ALIGN match.
  
! 2020-05-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	* config/tilegx/tilegx.md
! 	(insn_stnt<I124MODE:n>_add<I48MODE:bitsuffix>): Use <I124MODE:n>
! 	rather than just <n>.
  
! 2020-04-30  Alexandre Oliva <oliva@adacore.com>
  
! 	* doc/sourcebuild.texi (Effective-Target Keywords): Document
! 	the newly-introduced fileio effective target.
  
! 2020-04-30  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/94740
! 	* cse.c (cse_process_notes_1): Replace with...
! 	(cse_process_note_1): ...this new function, acting as a
! 	simplify_replace_fn_rtx callback to process_note.  Handle only
! 	REGs and MEMs directly.  Validate the MEM if cse_process_note
! 	changes its address.
! 	(cse_process_notes): Replace with...
! 	(cse_process_note): ...this new function.
! 	(cse_extended_basic_block): Update accordingly, iterating over
! 	the register notes and passing individual notes to cse_process_note.
  
! 2020-04-30  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/94856
! 	* cgraph.c (clone_of_p): Also consider thunks whih had their bodies
! 	saved by the inliner and thunks which had their call inlined.
! 	* ipa-inline-transform.c (save_inline_function_body): Fill in
! 	former_clone_of of new body holders.
  
! 2020-04-30  Jakub Jelinek  <jakub@redhat.com>
  
! 	* DEV-PHASE: Set to prerelease.
  
! 2020-04-30  Jonathan Wakely  <jwakely@redhat.com>
  
! 	* pretty-print.c (pp_take_prefix): Fix spelling in comment.
  
! 2020-04-30  Marek Polacek  <polacek@redhat.com>
  
! 	PR c++/94775
! 	* tree.c (check_base_type): Return true only if TYPE_USER_ALIGN match.
! 	(check_aligned_type): Check if TYPE_USER_ALIGN match.
  
! 2020-04-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64.h (TARGET_OUTLINE_ATOMICS): Define.
! 	* config/aarch64/aarch64.opt (moutline-atomics): Change to Int variable.
! 	* doc/invoke.texi (moutline-atomics): Document as on by default.
  
! 2020-04-30  Szabolcs Nagy  <szabolcs.nagy@arm.com>
  
! 	PR target/94748
! 	* config/aarch64/aarch64-bti-insert.c (rest_of_insert_bti): Remove
! 	the check for NOTE_INSN_DELETED_LABEL.
  
! 2020-04-30  Jakub Jelinek  <jakub@redhat.com>
  
! 	* configure.ac (--with-documentation-root-url,
! 	--with-changes-root-url): Diagnose URL not ending with /,
! 	use AC_DEFINE_UNQUOTED instead of AC_SUBST.
! 	* opts.h (get_changes_url): Remove.
! 	* opts.c (get_changes_url): Remove.
! 	* Makefile.in (CFLAGS-opts.o): Don't add -DDOCUMENTATION_ROOT_URL
! 	or -DCHANGES_ROOT_URL.
! 	* doc/install.texi (--with-documentation-root-url,
! 	--with-changes-root-url): Document.
! 	* config/arm/arm.c (aapcs_vfp_is_call_or_return_candidate): Don't call
! 	get_changes_url and free, change url variable type to const char * and
! 	set it to CHANGES_ROOT_URL "gcc-10/changes.html#empty_base".
! 	* config/s390/s390.c (s390_function_arg_vector,
! 	s390_function_arg_float): Likewise.
! 	* config/aarch64/aarch64.c (aarch64_vfp_is_call_or_return_candidate):
! 	Likewise.
! 	* config/rs6000/rs6000-call.c (rs6000_discover_homogeneous_aggregate):
! 	Likewise.
! 	* config.in: Regenerate.
! 	* configure: Regenerate.
  
! 2020-04-30  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	PR target/57002
! 	* config/arm/arm.c (isr_attribute_args): Remove duplicate entries.
  
! 2020-04-30  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	* config/s390/constraints.md ("j>f", "jb4"): New constraints.
! 	* config/s390/vecintrin.h (vec_load_len_r, vec_store_len_r): Fix
! 	macro definitions.
! 	* config/s390/vx-builtins.md ("vlrlrv16qi", "vstrlrv16qi"): Add a
! 	separate expander.
! 	("*vlrlrv16qi", "*vstrlrv16qi"): Add alternative for vl/vst.
! 	Change constraint for vlrl/vstrl to jb4.
  
! 2020-04-30  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
  
! 	* var-tracking.c (vt_initialize): Move variables pre and post
! 	into inner block and initialize both in order to fix warning
! 	about uninitialized use.  Remove unnecessary checks for
! 	frame_pointer_needed.
  
! 2020-04-30  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
  
! 	* toplev.c (output_stack_usage_1): Ensure that first
! 	argument to fprintf is not null.
  
! 2020-04-29  Jakub Jelinek  <jakub@redhat.com>
  
- 	* configure.ac (-with-changes-root-url): New configure option,
- 	defaulting to https://gcc.gnu.org/.
- 	* Makefile.in (CFLAGS-opts.o): Define CHANGES_ROOT_URL for
- 	opts.c.
- 	* pretty-print.c (get_end_url_string): New function.
- 	(pp_format): Handle %{ and %} for URLs.
- 	(pp_begin_url): Use pp_string instead of pp_printf.
- 	(pp_end_url): Use get_end_url_string.
- 	* opts.h (get_changes_url): Declare.
- 	* opts.c (get_changes_url): New function.
- 	* config/rs6000/rs6000-call.c: Include opts.h.
- 	(rs6000_discover_homogeneous_aggregate): Use %{in GCC 10.1%} instead
- 	of just in GCC 10.1 in diagnostics and add URL.
- 	* config/arm/arm.c (aapcs_vfp_is_call_or_return_candidate): Likewise.
  	* config/aarch64/aarch64.c (aarch64_vfp_is_call_or_return_candidate):
! 	Likewise.
! 	* config/s390/s390.c (s390_function_arg_vector,
! 	s390_function_arg_float): Likewise.
! 	* configure: Regenerated.
! 
! 	PR target/94704
! 	* config/s390/s390.c (s390_function_arg_vector,
! 	s390_function_arg_float): Use DECL_FIELD_ABI_IGNORED instead of
! 	cxx17_empty_base_field_p.  In -Wpsabi diagnostics use the type
! 	passed to the function rather than the type of the single element.
! 	Rename cxx17_empty_base_seen variable to empty_base_seen, change
! 	type to int, and adjust diagnostics depending on if the field
! 	has [[no_unique_attribute]] or not.
! 
! 	PR target/94832
! 	* config/i386/avx512bwintrin.h (_mm512_alignr_epi8,
! 	_mm512_mask_alignr_epi8, _mm512_maskz_alignr_epi8): Wrap macro operands
! 	used in casts into parens.
! 	* config/i386/avx512fintrin.h (_mm512_cvt_roundps_ph, _mm512_cvtps_ph,
! 	_mm512_mask_cvt_roundps_ph, _mm512_mask_cvtps_ph,
! 	_mm512_maskz_cvt_roundps_ph, _mm512_maskz_cvtps_ph,
! 	_mm512_mask_cmp_epi64_mask, _mm512_mask_cmp_epi32_mask,
! 	_mm512_mask_cmp_epu64_mask, _mm512_mask_cmp_epu32_mask,
! 	_mm512_mask_cmp_round_pd_mask, _mm512_mask_cmp_round_ps_mask,
! 	_mm512_mask_cmp_pd_mask, _mm512_mask_cmp_ps_mask): Likewise.
! 	* config/i386/avx512vlbwintrin.h (_mm256_mask_alignr_epi8,
! 	_mm256_maskz_alignr_epi8, _mm_mask_alignr_epi8, _mm_maskz_alignr_epi8,
! 	_mm256_mask_cmp_epu8_mask): Likewise.
! 	* config/i386/avx512vlintrin.h (_mm_mask_cvtps_ph, _mm_maskz_cvtps_ph,
! 	_mm256_mask_cvtps_ph, _mm256_maskz_cvtps_ph): Likewise.
! 	* config/i386/f16cintrin.h (_mm_cvtps_ph, _mm256_cvtps_ph): Likewise.
! 	* config/i386/shaintrin.h (_mm_sha1rnds4_epu32): Likewise.
! 
! 	PR target/94832
! 	* config/i386/avx2intrin.h (_mm_mask_i32gather_pd,
! 	_mm256_mask_i32gather_pd, _mm_mask_i64gather_pd,
! 	_mm256_mask_i64gather_pd, _mm_mask_i32gather_ps,
! 	_mm256_mask_i32gather_ps, _mm_mask_i64gather_ps,
! 	_mm256_mask_i64gather_ps, _mm_i32gather_epi64,
! 	_mm_mask_i32gather_epi64, _mm256_i32gather_epi64,
! 	_mm256_mask_i32gather_epi64, _mm_i64gather_epi64,
! 	_mm_mask_i64gather_epi64, _mm256_i64gather_epi64,
! 	_mm256_mask_i64gather_epi64, _mm_i32gather_epi32,
! 	_mm_mask_i32gather_epi32, _mm256_i32gather_epi32,
! 	_mm256_mask_i32gather_epi32, _mm_i64gather_epi32,
! 	_mm_mask_i64gather_epi32, _mm256_i64gather_epi32,
! 	_mm256_mask_i64gather_epi32): Surround macro parameter uses with
! 	parens.
! 	(_mm_i32gather_pd, _mm256_i32gather_pd, _mm_i64gather_pd,
! 	_mm256_i64gather_pd, _mm_i32gather_ps, _mm256_i32gather_ps,
! 	_mm_i64gather_ps, _mm256_i64gather_ps): Likewise.  Don't use
! 	as mask vector containing -1.0 or -1.0f elts, but instead vector
! 	with all bits set using _mm*_cmpeq_p? with zero operands.
! 	* config/i386/avx512fintrin.h (_mm512_i32gather_ps,
! 	_mm512_mask_i32gather_ps, _mm512_i32gather_pd,
! 	_mm512_mask_i32gather_pd, _mm512_i64gather_ps,
! 	_mm512_mask_i64gather_ps, _mm512_i64gather_pd,
! 	_mm512_mask_i64gather_pd, _mm512_i32gather_epi32,
! 	_mm512_mask_i32gather_epi32, _mm512_i32gather_epi64,
! 	_mm512_mask_i32gather_epi64, _mm512_i64gather_epi32,
! 	_mm512_mask_i64gather_epi32, _mm512_i64gather_epi64,
! 	_mm512_mask_i64gather_epi64, _mm512_i32scatter_ps,
! 	_mm512_mask_i32scatter_ps, _mm512_i32scatter_pd,
! 	_mm512_mask_i32scatter_pd, _mm512_i64scatter_ps,
! 	_mm512_mask_i64scatter_ps, _mm512_i64scatter_pd,
! 	_mm512_mask_i64scatter_pd, _mm512_i32scatter_epi32,
! 	_mm512_mask_i32scatter_epi32, _mm512_i32scatter_epi64,
! 	_mm512_mask_i32scatter_epi64, _mm512_i64scatter_epi32,
! 	_mm512_mask_i64scatter_epi32, _mm512_i64scatter_epi64,
! 	_mm512_mask_i64scatter_epi64): Surround macro parameter uses with
! 	parens.
! 	* config/i386/avx512pfintrin.h (_mm512_prefetch_i32gather_pd,
! 	_mm512_prefetch_i32gather_ps, _mm512_mask_prefetch_i32gather_pd,
! 	_mm512_mask_prefetch_i32gather_ps, _mm512_prefetch_i64gather_pd,
! 	_mm512_prefetch_i64gather_ps, _mm512_mask_prefetch_i64gather_pd,
! 	_mm512_mask_prefetch_i64gather_ps, _mm512_prefetch_i32scatter_pd,
! 	_mm512_prefetch_i32scatter_ps, _mm512_mask_prefetch_i32scatter_pd,
! 	_mm512_mask_prefetch_i32scatter_ps, _mm512_prefetch_i64scatter_pd,
! 	_mm512_prefetch_i64scatter_ps, _mm512_mask_prefetch_i64scatter_pd,
! 	_mm512_mask_prefetch_i64scatter_ps): Likewise.
! 	* config/i386/avx512vlintrin.h (_mm256_mmask_i32gather_ps,
! 	_mm_mmask_i32gather_ps, _mm256_mmask_i32gather_pd,
! 	_mm_mmask_i32gather_pd, _mm256_mmask_i64gather_ps,
! 	_mm_mmask_i64gather_ps, _mm256_mmask_i64gather_pd,
! 	_mm_mmask_i64gather_pd, _mm256_mmask_i32gather_epi32,
! 	_mm_mmask_i32gather_epi32, _mm256_mmask_i32gather_epi64,
! 	_mm_mmask_i32gather_epi64, _mm256_mmask_i64gather_epi32,
! 	_mm_mmask_i64gather_epi32, _mm256_mmask_i64gather_epi64,
! 	_mm_mmask_i64gather_epi64, _mm256_i32scatter_ps,
! 	_mm256_mask_i32scatter_ps, _mm_i32scatter_ps, _mm_mask_i32scatter_ps,
! 	_mm256_i32scatter_pd, _mm256_mask_i32scatter_pd, _mm_i32scatter_pd,
! 	_mm_mask_i32scatter_pd, _mm256_i64scatter_ps,
! 	_mm256_mask_i64scatter_ps, _mm_i64scatter_ps, _mm_mask_i64scatter_ps,
! 	_mm256_i64scatter_pd, _mm256_mask_i64scatter_pd, _mm_i64scatter_pd,
! 	_mm_mask_i64scatter_pd, _mm256_i32scatter_epi32,
! 	_mm256_mask_i32scatter_epi32, _mm_i32scatter_epi32,
! 	_mm_mask_i32scatter_epi32, _mm256_i32scatter_epi64,
! 	_mm256_mask_i32scatter_epi64, _mm_i32scatter_epi64,
! 	_mm_mask_i32scatter_epi64, _mm256_i64scatter_epi32,
! 	_mm256_mask_i64scatter_epi32, _mm_i64scatter_epi32,
! 	_mm_mask_i64scatter_epi32, _mm256_i64scatter_epi64,
! 	_mm256_mask_i64scatter_epi64, _mm_i64scatter_epi64,
! 	_mm_mask_i64scatter_epi64): Likewise.
! 
! 2020-04-29  Jeff Law  <law@redhat.com>
! 
! 	* config/h8300/h8300.md (H8/SX div patterns): All H8/SX specific
! 	division instructions are 4 bytes long.
! 
! 2020-04-29  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/94826
! 	* config/rs6000/rs6000.c (rs6000_atomic_assign_expand_fenv): Use
! 	TARGET_EXPR instead of MODIFY_EXPR for first assignment to
! 	fenv_var, fenv_clear and old_fenv variables.  For fenv_addr
! 	take address of TARGET_EXPR of fenv_var with void_node initializer.
! 	Formatting fixes.
! 
! 2020-04-29  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
! 
! 	PR tree-optimization/94774
! 	* gimple-ssa-sprintf.c (try_substitute_return_value): Initialize
! 	variable retval.
! 
! 2020-04-29  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* calls.h (cxx17_empty_base_field_p): Turn into a function declaration.
! 	* calls.c (cxx17_empty_base_field_p): New function.  Check
! 	DECL_ARTIFICIAL and RECORD_OR_UNION_TYPE_P in addition to the
! 	previous checks.
! 
! 2020-04-29  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	PR target/93654
! 	* config/i386/i386-options.c (ix86_set_indirect_branch_type):
! 	Allow -fcf-protection with -mindirect-branch=thunk-extern and
! 	-mfunction-return=thunk-extern.
! 	* doc/invoke.texi: Update notes for -fcf-protection=branch with
! 	-mindirect-branch=thunk-extern and -mindirect-return=thunk-extern.
! 
! 2020-04-29  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* doc/sourcebuild.texi: Add missing arm_arch_v8a_hard_ok anchor.
! 
! 2020-04-29  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/arm/arm-builtins.c (arm_atomic_assign_expand_fenv): Use
! 	TARGET_EXPR instead of MODIFY_EXPR for the first assignments to
! 	fenv_var and new_fenv_var.
! 
! 2020-04-29  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* doc/sourcebuild.texi (arm_arch_v8a_hard_ok): Document new
! 	effective-target keyword.
! 	(arm_arch_v8a_hard_multilib): Likewise.
! 	(arm_arch_v8a_hard): Document new dg-add-options keyword.
! 	* config/arm/arm.c (arm_return_in_memory): Note that the APCS
! 	code is deprecated and has not been updated to handle
! 	DECL_FIELD_ABI_IGNORED.
! 	(WARN_PSABI_EMPTY_CXX17_BASE): New constant.
! 	(WARN_PSABI_NO_UNIQUE_ADDRESS): Likewise.
! 	(aapcs_vfp_sub_candidate): Replace the boolean pointer parameter
! 	avoid_cxx17_empty_base with a pointer to a bitmask.  Ignore fields
! 	whose DECL_FIELD_ABI_IGNORED bit is set when determining whether
! 	something actually is a HFA or HVA.  Record whether we see a
! 	[[no_unique_address]] field that previous GCCs would not have
! 	ignored in this way.
! 	(aapcs_vfp_is_call_or_return_candidate): Update the calls to
! 	aapcs_vfp_sub_candidate and report a -Wpsabi warning for the
! 	[[no_unique_address]] case.  Use TYPE_MAIN_VARIANT in the
! 	diagnostic messages.
! 	(arm_needs_doubleword_align): Add a comment explaining why we
! 	consider even zero-sized fields.
! 
! 2020-04-29  Richard Biener  <rguenther@suse.de>
! 	    Li Zekun  <lizekun1@huawei.com>
! 
! 	PR lto/94822
! 	* tree.c (component_ref_size): Guard against error_mark_node
! 	DECL_INITIAL as it happens with LTO.
! 
! 2020-04-29  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/aarch64.c (aarch64_function_arg_alignment): Add a
! 	comment explaining why we consider even zero-sized fields.
! 	(WARN_PSABI_EMPTY_CXX17_BASE): New constant.
! 	(WARN_PSABI_NO_UNIQUE_ADDRESS): Likewise.
! 	(aapcs_vfp_sub_candidate): Replace the boolean pointer parameter
! 	avoid_cxx17_empty_base with a pointer to a bitmask.  Ignore fields
! 	whose DECL_FIELD_ABI_IGNORED bit is set when determining whether
! 	something actually is a HFA or HVA.  Record whether we see a
! 	[[no_unique_address]] field that previous GCCs would not have
! 	ignored in this way.
! 	(aarch64_vfp_is_call_or_return_candidate): Add a parameter to say
! 	whether diagnostics should be suppressed.  Update the calls to
! 	aapcs_vfp_sub_candidate and report a -Wpsabi warning for the
! 	[[no_unique_address]] case.
! 	(aarch64_return_in_msb): Update call accordingly, never silencing
! 	diagnostics.
! 	(aarch64_function_value): Likewise.
! 	(aarch64_return_in_memory_1): Likewise.
! 	(aarch64_init_cumulative_args): Likewise.
! 	(aarch64_gimplify_va_arg_expr): Likewise.
! 	(aarch64_pass_by_reference_1): Take a CUMULATIVE_ARGS pointer and
! 	use it to decide whether arch64_vfp_is_call_or_return_candidate
! 	should be silent.
! 	(aarch64_pass_by_reference): Update calls accordingly.
! 	(aarch64_vfp_is_call_candidate): Use the CUMULATIVE_ARGS argument
! 	to decide whether arch64_vfp_is_call_or_return_candidate should be
! 	silent.
! 
! 2020-04-29  Haijian Zhang  <z.zhanghaijian@huawei.com>
! 
! 	PR target/94820
! 	* config/aarch64/aarch64-builtins.c
! 	(aarch64_atomic_assign_expand_fenv): Use TARGET_EXPR instead of
! 	MODIFY_EXPR for first assignment to fenv_cr, fenv_sr and
! 	new_fenv_var.
! 
! 2020-04-29  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* configure.ac <$enable_offload_targets>: Do parsing as done
! 	elsewhere.
! 	* configure: Regenerate.
! 
! 	* configure.ac <$enable_offload_targets>: 'amdgcn' is 'gcn'.
! 	* configure: Regenerate.
! 
! 	PR target/94279
! 	* rtlanal.c (set_noop_p): Handle non-constant selectors.
! 
! 	PR target/94282
! 	* common/config/gcn/gcn-common.c (gcn_except_unwind_info): New
! 	function.
! 	(TARGET_EXCEPT_UNWIND_INFO): Define.
! 
! 2020-04-29  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/94248
! 	* config/gcn/gcn.md (*mov<mode>_insn): Use
! 	'reg_overlap_mentioned_p' to check for overlap.
  
! 	PR target/94706
! 	* config/ia64/ia64.c (hfa_element_mode): Use DECL_FIELD_ABI_IGNORED
! 	instead of cxx17_empty_base_field_p.
  
! 	PR target/94707
! 	* tree-core.h (tree_decl_common): Note decl_flag_0 used for
! 	DECL_FIELD_ABI_IGNORED.
! 	* tree.h (DECL_FIELD_ABI_IGNORED): Define.
! 	* calls.h (cxx17_empty_base_field_p): Change into a temporary
! 	macro, check DECL_FIELD_ABI_IGNORED flag with no "no_unique_address"
! 	attribute.
! 	* calls.c (cxx17_empty_base_field_p): Remove.
! 	* tree-streamer-out.c (pack_ts_decl_common_value_fields): Handle
! 	DECL_FIELD_ABI_IGNORED.
! 	* tree-streamer-in.c (unpack_ts_decl_common_value_fields): Likewise.
! 	* lto-streamer-out.c (hash_tree): Likewise.
! 	* config/rs6000/rs6000-call.c (rs6000_aggregate_candidate): Rename
! 	cxx17_empty_base_seen to empty_base_seen, change type to int *,
! 	adjust recursive calls, use DECL_FIELD_ABI_IGNORED instead of
! 	cxx17_empty_base_field_p, if "no_unique_address" attribute is
! 	present, propagate that to the caller too.
! 	(rs6000_discover_homogeneous_aggregate): Adjust
! 	rs6000_aggregate_candidate caller, emit different diagnostics
! 	when c++17 empty base fields are present and when empty
! 	[[no_unique_address]] fields are present.
! 	* config/rs6000/rs6000.c (rs6000_special_round_type_align,
! 	darwin_rs6000_special_round_type_align): Skip DECL_FIELD_ABI_IGNORED
! 	fields.
  
! 2020-04-29  Richard Biener  <rguenther@suse.de>
  
! 	* tree-ssa-loop-im.c (ref_always_accessed::operator ()):
! 	Just check whether the stmt stores.
  
! 2020-04-28  Alexandre Oliva <oliva@adacore.com>
  
! 	PR target/94812
! 	* gcc/config/rs6000/rs6000.md (rs6000_mffsl): Copy result to
! 	output operand in emulation.  Don't overwrite pseudos.
  
! 2020-04-28  Jeff Law  <law@redhat.com>
  
! 	* config/h8300/h8300.md (H8/SX mult patterns): All H8/SX specific
! 	multiply patterns are 4 bytes long.
  
! 2020-04-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/arm/arm-cpus.in (cortex-m55): Remove +nofp option.
! 	* doc/invoke.texi (Arm Options): Remove -mcpu=cortex-m55 from +nofp option.
  
! 2020-04-28  Matthew Malcomson  <matthew.malcomson@arm.com>
! 	    Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94711
! 	* config/arm/arm.c (aapcs_vfp_sub_candidate): Account for C++17 empty
! 	base class artificial fields.
! 	(aapcs_vfp_is_call_or_return_candidate): Warn when PCS ABI
! 	decision is different after this fix.
  
! 2020-04-28  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR analyzer/94447
! 	PR analyzer/94639
! 	PR analyzer/94732
! 	PR analyzer/94754
! 	* doc/invoke.texi (Static Analyzer Options): Remove
! 	-Wanalyzer-use-of-uninitialized-value.
! 	(-Wno-analyzer-use-of-uninitialized-value): Remove item.
  
! 2020-04-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/94809
! 	* tree.c (build_call_expr_internal_loc_array): Call
! 	process_call_operands.
  
! 2020-04-27  Anton Youdkevitch  <anton.youdkevitch@bell-sw.com>
  
! 	* config/aarch64/aarch64-cores.def (thunderx3t110): Add the chip name.
! 	* config/aarch64/aarch64-tune.md: Regenerate.
! 	* config/aarch64/aarch64.c (thunderx3t110_addrcost_table): Define.
! 	(thunderx3t110_regmove_cost): Likewise.
! 	(thunderx3t110_vector_cost): Likewise.
! 	(thunderx3t110_prefetch_tune): Likewise.
! 	(thunderx3t110_tunings): Likewise.
! 	* config/aarch64/aarch64-cost-tables.h (thunderx3t110_extra_costs):
! 	Define.
! 	* config/aarch64/thunderx3t110.md: New file.
! 	* config/aarch64/aarch64.md: Include thunderx3t110.md.
! 	* doc/invoke.texi (AArch64 options): Add thunderx3t110.
  
! 2020-04-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94704
! 	* config/s390/s390.c (s390_function_arg_vector,
! 	s390_function_arg_float): Emit -Wpsabi diagnostics if the ABI changed.
  
! 2020-04-28  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/94727
! 	* tree-vect-stmts.c (vect_is_simple_cond): If both comparison
! 	operands are invariant booleans, use the mask type associated with the
! 	STMT_VINFO_VECTYPE.  Use !slp_node instead of !vectype to exclude SLP.
! 	(vectorizable_condition): Pass vectype unconditionally to
! 	vect_is_simple_cond.
  
! 2020-04-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94780
! 	* config/i386/i386.c (ix86_atomic_assign_expand_fenv): Use
! 	TARGET_EXPR instead of MODIFY_EXPR for first assignment to
! 	sw_var, exceptions_var, mxcsr_orig_var and mxcsr_mod_var.
  
! 2020-04-27  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR 92830
! 	* configure.ac (DOCUMENTATION_ROOT_URL): Drop trailing "gcc/" from
! 	default value, so that it can by supplied by get_option_html_page.
! 	* configure: Regenerate.
! 	* opts.c: Include "selftest.h".
! 	(get_option_html_page): New function.
! 	(get_option_url): Use it.  Reformat to place comments next to the
! 	expressions they refer to.
! 	(selftest::test_get_option_html_page): New.
! 	(selftest::opts_c_tests): New.
! 	* selftest-run-tests.c (selftest::run_tests): Call
! 	selftest::opts_c_tests.
! 	* selftest.h (selftest::opts_c_tests): New decl.
  
! 2020-04-27  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/arm/arm-builtins.c (arm_expand_builtin_args): Only apply
! 	UINTVAL to CONST_INTs.
  
! 2020-04-27  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* config/arm/constraints.md (e): Remove constraint.
! 	(Te): Define constraint.
! 	* config/arm/mve.md (vaddvq_<supf><mode>): Modify constraint in
! 	operand 0 from "e" to "Te".
! 	(vaddvaq_<supf><mode>): Likewise.
! 	(vaddvq_p_<supf><mode>): Likewise.
! 	(vmladavq_<supf><mode>): Likewise.
! 	(vmladavxq_s<mode>): Likewise.
! 	(vmlsdavq_s<mode>): Likewise.
! 	(vmlsdavxq_s<mode>): Likewise.
! 	(vaddvaq_p_<supf><mode>): Likewise.
! 	(vmladavaq_<supf><mode>): Likewise.
! 	(vmladavq_p_<supf><mode>): Likewise.
! 	(vmladavxq_p_s<mode>): Likewise.
! 	(vmlsdavq_p_s<mode>): Likewise.
! 	(vmlsdavxq_p_s<mode>): Likewise.
! 	(vmlsdavaxq_s<mode>): Likewise.
! 	(vmlsdavaq_s<mode>): Likewise.
! 	(vmladavaxq_s<mode>): Likewise.
! 	(vmladavaq_p_<supf><mode>): Likewise.
! 	(vmladavaxq_p_s<mode>): Likewise.
! 	(vmlsdavaq_p_s<mode>): Likewise.
! 	(vmlsdavaxq_p_s<mode>): Likewise.
  
! 2020-04-27  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm.c (output_move_neon): Only get the first operand if
! 	addr is PLUS.
  
! 2020-04-27  Felix Yang  <felix.yang@huawei.com>
  
! 	PR tree-optimization/94784
! 	* tree-ssa-forwprop.c (simplify_vector_constructor): Flip the
! 	assert around so that it checks that the two vectors have equal
! 	TYPE_VECTOR_SUBPARTS and that converting the corresponding element
! 	types is a useless_type_conversion_p.
  
! 2020-04-27  Szabolcs Nagy  <szabolcs.nagy@arm.com>
  
! 	PR target/94515
! 	* dwarf2cfi.c (struct GTY): Add ra_mangled.
! 	(cfi_row_equal_p): Check ra_mangled.
! 	(dwarf2out_frame_debug_cfa_window_save): Remove the argument,
! 	this only handles the sparc logic now.
! 	(dwarf2out_frame_debug_cfa_toggle_ra_mangle): New function for
! 	the aarch64 specific logic.
! 	(dwarf2out_frame_debug): Update to use the new subroutines.
! 	(change_cfi_row): Check ra_mangled.
  
! 2020-04-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94704
! 	* config/s390/s390.c (s390_function_arg_vector,
! 	s390_function_arg_float): Ignore cxx17_empty_base_field_p fields.
  
! 2020-04-27  Jiufu Guo   <guojiufu@cn.ibm.com>
  
! 	* common/config/rs6000/rs6000-common.c
! 	(rs6000_option_optimization_table) [OPT_LEVELS_ALL]: Remove turn off
! 	-fweb.
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Avoid to
! 	set flag_web.
  
! 2020-04-27  Martin Liska  <mliska@suse.cz>
  
! 	PR lto/94659
! 	* cgraph.h (cgraph_node::can_remove_if_no_direct_calls_and_refs_p):
! 	Do not remove ifunc_resolvers in remove unreachable nodes in LTO.
  
! 2020-04-27  Xiong Hu Luo  <luoxhu@linux.ibm.com>
  
! 	PR target/91518
! 	* config/rs6000/rs6000-logue.c (frame_pointer_needed_indeed):
! 	New variable.
! 	(rs6000_emit_prologue_components):
! 	Check with frame_pointer_needed_indeed.
! 	(rs6000_emit_epilogue_components): Likewise.
! 	(rs6000_emit_prologue): Likewise.
! 	(rs6000_emit_epilogue): Set frame_pointer_needed_indeed.
  
! 2020-04-25  David Edelsohn  <dje.gcc@gmail.com>
  
! 	* config/rs6000/rs6000-logue.c (rs6000_stack_info): Don't push a
! 	stack frame when debugging and flag_compare_debug is enabled.
  
! 2020-04-25  Michael Meissner  <meissner@linux.ibm.com>
  
! 	* config/rs6000/linux64.h (PCREL_SUPPORTED_BY_OS): Define to
! 	enable PC-relative addressing for -mcpu=future.
! 	* config/rs6000/rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): Move
! 	after OTHER_FUTURE_MASKS.  Use OTHER_FUTURE_MASKS.
! 	* config/rs6000/rs6000.c (PCREL_SUPPORTED_BY_OS): If not defined,
! 	suppress PC-relative addressing.
! 	(rs6000_option_override_internal): Split up error messages
! 	checking for -mprefixed and -mpcrel.  Enable -mpcrel if the target
! 	system supports it.
  
! 2020-04-25  Jakub Jelinek  <jakub@redhat.com>
! 	    Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/94734
! 	PR tree-optimization/89430
! 	* tree-ssa-phiopt.c: Include tree-eh.h.
! 	(cond_store_replacement): Return false if an automatic variable
! 	access could trap.  If -fstore-data-races, don't return false
! 	just because an automatic variable is addressable.
  
! 2020-04-24  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn-valu.md (add<mode>_zext_dup2_exec): Fix merge
! 	of high-part.
! 	(add<mode>_sext_dup2_exec): Likewise.
  
! 2020-04-24  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/94710
! 	* config/rs6000/vector.md (vec_shr_<mode> for VEC_L): Correct little
! 	endian byteshift_val calculation.
  
! 2020-04-24  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn.md (*mov<mode>_insn): Only split post-reload.
  
! 2020-04-24  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/arm_sve.h: Add a comment.
  
! 2020-04-24  Haijian Zhang <z.zhanghaijian@huawei.com>
  
! 	PR rtl-optimization/94708
! 	* combine.c (simplify_if_then_else): Add check for
! 	!HONOR_NANS (mode) && !HONOR_SIGNED_ZEROS (mode).
  
! 2020-04-23  Martin Sebor  <msebor@redhat.com>
  
! 	PR driver/90983
! 	* common.opt (-Wno-frame-larger-than): New option.
! 	(-Wno-larger-than, -Wno-stack-usage): Same.
  
! 2020-04-23  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn-valu.md (mov<mode>_exec): Swap the numbers on operands
! 	2 and 3.
! 	(mov<mode>_exec): Likewise.
! 	(trunc<vndi><mode>2_exec): Swap parameters to gen_mov<mode>_exec.
! 	(<convop><mode><vndi>2_exec): Likewise.
  
! 2019-04-23  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR tree-optimization/94717
! 	* gimple-ssa-store-merging.c (try_coalesce_bswap): Return false if one
! 	of the stores doesn't have the same landing pad number as the first.
! 	(coalesce_immediate_stores): Do not try to coalesce the store using
! 	bswap if it doesn't have the same landing pad number as the first.
  
! 2020-04-23  Bill Schmidt  <wschmidt@linux.ibm.com>
  
! 	* gcc/doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions):
! 	Replace outdated link to ELFv2 ABI.
  
! 2020-04-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94710
! 	* optabs.c (expand_vec_perm_const): For shift_amt const0_rtx
! 	just return v2.
  
! 	PR middle-end/94724
! 	* tree.c (get_narrower): Instead of creating COMPOUND_EXPRs
! 	temporarily with non-final second operand and updating it later,
! 	push COMPOUND_EXPRs into a vector and process it in reverse,
! 	creating COMPOUND_EXPRs with the final operands.
  
! 2020-04-23  Szabolcs Nagy  <szabolcs.nagy@arm.com>
  
! 	PR target/94697
! 	* config/aarch64/aarch64-bti-insert.c (rest_of_insert_bti): Swap
! 	bti c and bti j handling.
  
! 2020-04-23  Andrew Stubbs  <ams@codesourcery.com>
! 	    Thomas Schwinge  <thomas@codesourcery.com>
  
! 	PR middle-end/93488
  
! 	* omp-expand.c (expand_omp_target): Use force_gimple_operand_gsi on
! 	t_async and the wait arguments.
  
! 2020-04-23  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/94727
! 	* tree-vect-stmts.c (vectorizable_comparison): Use mask_type when
! 	comparing invariant scalar booleans.
  
! 2020-04-23  Matthew Malcomson  <matthew.malcomson@arm.com>
! 	    Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94383
! 	* config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Account for C++17
! 	empty base class artificial fields.
! 	(aarch64_vfp_is_call_or_return_candidate): Warn when ABI PCS decision is
! 	different after this fix.
  
! 2020-04-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94707
! 	* config/rs6000/rs6000-call.c (rs6000_discover_homogeneous_aggregate):
! 	Use TYPE_UID (TYPE_MAIN_VARIANT (type)) instead of type to check
! 	if the same type has been diagnosed most recently already.
  
! 2020-04-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* config/arm/arm_mve.h (__arm_vbicq_n_u16): Modify function parameter's
! 	datatype.
! 	(__arm_vbicq_n_s16): Likewise.
! 	(__arm_vbicq_n_u32): Likewise.
! 	(__arm_vbicq_n_s32): Likewise.
! 	(__arm_vbicq): Likewise.
! 	(__arm_vbicq_n_s16): Modify MVE polymorphic variant argument's datatype.
! 	(__arm_vbicq_n_s32): Likewise.
! 	(__arm_vbicq_n_u16): Likewise.
! 	(__arm_vbicq_n_u32): Likewise.
! 	(__arm_vdupq_m_n_s8): Likewise.
! 	(__arm_vdupq_m_n_s16): Likewise.
! 	(__arm_vdupq_m_n_s32): Likewise.
! 	(__arm_vdupq_m_n_u8): Likewise.
! 	(__arm_vdupq_m_n_u16): Likewise.
! 	(__arm_vdupq_m_n_u32): Likewise.
! 	(__arm_vdupq_m_n_f16): Likewise.
! 	(__arm_vdupq_m_n_f32): Likewise.
! 	(__arm_vldrhq_gather_offset_s16): Likewise.
! 	(__arm_vldrhq_gather_offset_s32): Likewise.
! 	(__arm_vldrhq_gather_offset_u16): Likewise.
! 	(__arm_vldrhq_gather_offset_u32): Likewise.
! 	(__arm_vldrhq_gather_offset_f16): Likewise.
! 	(__arm_vldrhq_gather_offset_z_s16): Likewise.
! 	(__arm_vldrhq_gather_offset_z_s32): Likewise.
! 	(__arm_vldrhq_gather_offset_z_u16): Likewise.
! 	(__arm_vldrhq_gather_offset_z_u32): Likewise.
! 	(__arm_vldrhq_gather_offset_z_f16): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_s16): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_s32): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_u16): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_u32): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_f16): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_z_s16): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_z_s32): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_z_u16): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_z_u32): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_z_f16): Likewise.
! 	(__arm_vldrwq_gather_offset_s32): Likewise.
! 	(__arm_vldrwq_gather_offset_u32): Likewise.
! 	(__arm_vldrwq_gather_offset_f32): Likewise.
! 	(__arm_vldrwq_gather_offset_z_s32): Likewise.
! 	(__arm_vldrwq_gather_offset_z_u32): Likewise.
! 	(__arm_vldrwq_gather_offset_z_f32): Likewise.
! 	(__arm_vldrwq_gather_shifted_offset_s32): Likewise.
! 	(__arm_vldrwq_gather_shifted_offset_u32): Likewise.
! 	(__arm_vldrwq_gather_shifted_offset_f32): Likewise.
! 	(__arm_vldrwq_gather_shifted_offset_z_s32): Likewise.
! 	(__arm_vldrwq_gather_shifted_offset_z_u32): Likewise.
! 	(__arm_vldrwq_gather_shifted_offset_z_f32): Likewise.
! 	(__arm_vdwdupq_x_n_u8): Likewise.
! 	(__arm_vdwdupq_x_n_u16): Likewise.
! 	(__arm_vdwdupq_x_n_u32): Likewise.
! 	(__arm_viwdupq_x_n_u8): Likewise.
! 	(__arm_viwdupq_x_n_u16): Likewise.
! 	(__arm_viwdupq_x_n_u32): Likewise.
! 	(__arm_vidupq_x_n_u8): Likewise.
! 	(__arm_vddupq_x_n_u8): Likewise.
! 	(__arm_vidupq_x_n_u16): Likewise.
! 	(__arm_vddupq_x_n_u16): Likewise.
! 	(__arm_vidupq_x_n_u32): Likewise.
! 	(__arm_vddupq_x_n_u32): Likewise.
! 	(__arm_vldrdq_gather_offset_s64): Likewise.
! 	(__arm_vldrdq_gather_offset_u64): Likewise.
! 	(__arm_vldrdq_gather_offset_z_s64): Likewise.
! 	(__arm_vldrdq_gather_offset_z_u64): Likewise.
! 	(__arm_vldrdq_gather_shifted_offset_s64): Likewise.
! 	(__arm_vldrdq_gather_shifted_offset_u64): Likewise.
! 	(__arm_vldrdq_gather_shifted_offset_z_s64): Likewise.
! 	(__arm_vldrdq_gather_shifted_offset_z_u64): Likewise.
! 	(__arm_vidupq_m_n_u8): Likewise.
! 	(__arm_vidupq_m_n_u16): Likewise.
! 	(__arm_vidupq_m_n_u32): Likewise.
! 	(__arm_vddupq_m_n_u8): Likewise.
! 	(__arm_vddupq_m_n_u16): Likewise.
! 	(__arm_vddupq_m_n_u32): Likewise.
! 	(__arm_vidupq_n_u16): Likewise.
! 	(__arm_vidupq_n_u32): Likewise.
! 	(__arm_vidupq_n_u8): Likewise.
! 	(__arm_vddupq_n_u16): Likewise.
! 	(__arm_vddupq_n_u32): Likewise.
! 	(__arm_vddupq_n_u8): Likewise.
  
! 2020-04-23  Iain Buclaw  <ibuclaw@gdcproject.org>
  
! 	* doc/install.texi (D-Specific Options): Document
! 	--enable-libphobos-checking and --with-libphobos-druntime-only.
  
! 2020-04-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94707
! 	* config/rs6000/rs6000-call.c (rs6000_aggregate_candidate): Add
! 	cxx17_empty_base_seen argument.  Pass it to recursive calls.
! 	Ignore cxx17_empty_base_field_p fields after setting
! 	*cxx17_empty_base_seen to true.
! 	(rs6000_discover_homogeneous_aggregate): Adjust
! 	rs6000_aggregate_candidate caller.  With -Wpsabi, diagnose homogeneous
! 	aggregates with C++17 empty base fields.
  
! 	PR c/94705
! 	* attribs.c (decl_attribute): Don't diagnose attribute exclusions
! 	if last_decl is error_mark_node or has such a TREE_TYPE.
  
! 	PR c/94705
! 	* attribs.c (decl_attribute): Don't diagnose attribute exclusions
! 	if last_decl is error_mark_node or has such a TREE_TYPE.
  
! 2020-04-22  Felix Yang  <felix.yang@huawei.com>
  
! 	PR target/94678
! 	* config/aarch64/aarch64.h (TARGET_SVE):
! 	Add && !TARGET_GENERAL_REGS_ONLY.
! 	(TARGET_SVE2): Add && TARGET_SVE.
! 	(TARGET_SVE2_AES, TARGET_SVE2_BITPERM, TARGET_SVE2_SHA3,
! 	TARGET_SVE2_SM4): Add && TARGET_SVE2.
! 	* config/aarch64/aarch64-sve-builtins.h
! 	(sve_switcher::m_old_general_regs_only): New member.
! 	* config/aarch64/aarch64-sve-builtins.cc (check_required_registers):
! 	New function.
! 	(reported_missing_registers_p): New variable.
! 	(check_required_extensions): Call check_required_registers before
! 	return if all required extenstions are present.
! 	(sve_switcher::sve_switcher): Save TARGET_GENERAL_REGS_ONLY in
! 	m_old_general_regs_only and clear MASK_GENERAL_REGS_ONLY in
! 	global_options.x_target_flags.
! 	(sve_switcher::~sve_switcher): Set MASK_GENERAL_REGS_ONLY in
! 	global_options.x_target_flags if m_old_general_regs_only is true.
  
! 2020-04-22  Zackery Spytz  <zspytz@gmail.com>
  
! 	* doc/extend.exi: Add "free" to list of other builtin functions
! 	supported by GCC.
  
! 2020-04-20  Aaron Sawdey  <acsawdey@linux.ibm.com>
  
! 	PR target/94622
! 	* config/rs6000/sync.md (load_quadpti): Add attr "prefixed"
! 	if TARGET_PREFIXED.
! 	(store_quadpti): Ditto.
! 	(atomic_load<mode>): Do not swap doublewords if TARGET_PREFIXED as
! 	plq will be used and doesn't need it.
! 	(atomic_store<mode>): Ditto, for pstq.
  
! 2020-04-22  Erick Ochoa  <erick.ochoa@theobroma-systems.com>
  
! 	* doc/invoke.texi: Update flags turned on by -O3.
  
! 2020-04-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94706
! 	* config/ia64/ia64.c (hfa_element_mode): Ignore
! 	cxx17_empty_base_field_p fields.
  
! 	PR target/94383
! 	* calls.h (cxx17_empty_base_field_p): Declare.
! 	* calls.c (cxx17_empty_base_field_p): Define.
  
! 2020-04-22  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	* doc/sourcebuild.texi (arm_softfp_ok, arm_hard_ok): Document.
  
! 2020-04-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
!             Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
  
! 	* config/arm/arm.c (arm_file_start): Handle isa_bit_quirk_no_asmcpu.
! 	* config/arm/arm-cpus.in (quirk_no_asmcpu): Define.
! 	(ALL_QUIRKS): Add quirk_no_asmcpu.
! 	(cortex-m55): Define new cpu.
! 	* config/arm/arm-tables.opt: Regenerate.
! 	* config/arm/arm-tune.md: Likewise.
! 	* doc/invoke.texi (Arm Options): Document -mcpu=cortex-m55.
  
! 2020-04-22  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/94700
! 	* tree-ssa-forwprop.c (simplify_vector_constructor): When processing
! 	an identity constructor, use a VIEW_CONVERT_EXPR to handle mixtures
! 	of similarly-structured but distinct vector types.
  
! 2020-04-21  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/94647
! 	* gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Correct
! 	the computation of the lower bound of the source access size.
! 	(builtin_access::generic_overlap): Remove a hack for setting ranges
! 	of overlap offsets.
  
! 2020-04-21  John David Anglin  <danglin@gcc.gnu.org>
  
! 	* config/pa/som.h (ASM_WEAKEN_LABEL): Delete.
! 	(ASM_WEAKEN_DECL): New define.
! 	(HAVE_GAS_WEAKREF): Undefine.
  
! 2020-04-21  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/94683
! 	* tree-ssa-forwprop.c (simplify_vector_constructor): Use a
! 	VIEW_CONVERT_EXPR to handle mixtures of similarly-structured
! 	but distinct vector types.
  
! 2020-04-21  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/94641
! 	* stor-layout.c (place_field, finalize_record_size): Don't emit
! 	-Wpadded warning on TYPE_ARTIFICIAL rli->t.
! 	* ubsan.c (ubsan_get_type_descriptor_type,
! 	ubsan_get_source_location_type, ubsan_create_data): Set
! 	TYPE_ARTIFICIAL.
! 	* asan.c (asan_global_struct): Likewise.
  
! 2020-04-21  Duan bo  <duanbo3@huawei.com>
  
! 	PR target/94577
! 	* config/aarch64/aarch64.c: Add an error message for option conflict.
! 	* doc/invoke.texi (-mcmodel=large): Mention that -mcmodel=large is
! 	incompatible with -fpic, -fPIC and -mabi=ilp32.
  
! 2020-04-21  Frederik Harwath  <frederik@codesourcery.com>
  
! 	PR other/94629
! 	* omp-low.c (new_omp_context): Remove assignments to
! 	ctx->outer_reduction_clauses and ctx->local_reduction_clauses.
  
! 2020-04-20  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	* config/s390/vector.md ("popcountv8hi2_vx", "popcountv4si2_vx")
! 	("popcountv2di2_vx"): Use simplify_gen_subreg.
  
! 2020-04-20  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	PR target/94613
! 	* config/s390/s390-builtin-types.def: Add 3 new function modes.
! 	* config/s390/s390-builtins.def: Add mode dependent low-level
! 	builtin and map the overloaded builtins to these.
! 	* config/s390/vx-builtins.md ("vec_selV_HW"): Rename to ...
! 	("vsel<V_HW"): ... this and rewrite the pattern with bitops.
  
! 2020-04-20  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* tree-vect-loop.c (vect_better_loop_vinfo_p): If old_loop_vinfo
! 	has a variable VF, prefer new_loop_vinfo if it is cheaper for the
! 	estimated VF and is no worse at double the estimated VF.
  
! 2020-04-20  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/94668
! 	* config/aarch64/aarch64.c (aarch64_sve_expand_vector_init): Fix
! 	order of arguments to rtx_vector_builder.
! 	(aarch64_sve_expand_vector_init_handle_trailing_constants): Likewise.
! 	When extending the trailing constants to a full vector, replace any
! 	variables with zeros.
  
! 2020-04-20  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR ipa/94582
! 	* tree-inline.c (optimize_inline_calls): Recompute calls_comdat_local
! 	flag.
  
! 2020-04-20  Martin Liska  <mliska@suse.cz>
  
! 	* symtab.c (symtab_node::dump_references): Add space after
! 	one entry.
! 	(symtab_node::dump_referring): Likewise.
  
! 2020-04-18  Jeff Law  <law@redhat.com>
  
! 	PR debug/94439
! 	* regrename.c (check_new_reg_p): Ignore DEBUG_INSNs when walking
! 	the chain.
  
! 2020-04-18  Iain Buclaw  <ibuclaw@gdcproject.org>
  
! 	* doc/sourcebuild.texi (Effective-Target Keywords, Environment
! 	attributes): Document d_runtime_has_std_library.
  
! 2020-04-17  Jeff Law  <law@redhat.com>
  
! 	PR rtl-optimization/90275
! 	* cse.c (cse_insn): Avoid recording nop sets in multi-set parallels
! 	when the destination has a REG_UNUSED note.
  
! 2020-04-17  Tobias Burnus  <tobias@codesourcery.com>
  
! 	PR middle-end/94635
! 	* gimplify.c (gimplify_scan_omp_clauses): Turn MAP_TO_PSET to
! 	MAP_DELETE.
  
! 2020-04-17  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_advsimd_ldp_stp_p): New function.
! 	(aarch64_sve_adjust_stmt_cost): Add a vectype parameter.  Double the
! 	cost of load and store insns if one loop iteration has enough scalar
! 	elements to use an Advanced SIMD LDP or STP.
! 	(aarch64_add_stmt_cost): Update call accordingly.
  
! 2020-04-17  Jakub Jelinek  <jakub@redhat.com>
! 	    Jeff Law  <law@redhat.com>
  
! 	PR target/94567
! 	* config/i386/i386.md (*testqi_ext_3): Use CCZmode rather than
! 	CCNOmode in ix86_match_ccmode if len is equal to <MODE>mode precision,
! 	or pos + len >= 32, or pos + len is equal to operands[2] precision
! 	and operands[2] is not a register operand.  During splitting perform
! 	SImode AND if operands[0] doesn't have CCZmode and pos + len is
! 	equal to mode precision.
  
! 2020-04-17  Richard Biener  <rguenther@suse.de>
  
! 	PR other/94629
! 	* cgraphclones.c (cgraph_node::create_clone): Remove duplicate
! 	initialization.
! 	* dwarf2out.c (dw_val_equal_p): Fix pasto in
! 	dw_val_class_vms_delta comparison.
! 	* optabs.c (expand_binop_directly): Fix pasto in commutation
! 	check.
! 	* tree-ssa-sccvn.c (vn_reference_lookup_pieces): Fix pasto in
! 	initialization.
  
! 2020-04-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/94618
! 	* cfgrtl.c (delete_insn_and_edges): Set purge not just when
! 	insn is the BB_END of its block, but also when it is only followed
! 	by DEBUG_INSNs in its block.
  
! 	PR tree-optimization/94621
! 	* tree-inline.c (remap_type_1): Don't dereference NULL TYPE_DOMAIN.
! 	Move id->adjust_array_error_bounds check first in the condition.
  
! 2020-04-17  Martin Liska  <mliska@suse.cz>
! 	    Jonathan Yong <10walls@gmail.com>
  
! 	PR gcov-profile/94570
! 	* coverage.c (coverage_init): Use separator properly.
  
! 2020-04-16  Peter Bergner  <bergner@linux.ibm.com>
  
! 	PR rtl-optimization/93974
! 	* config/rs6000/rs6000.c (TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P): Define.
! 	(rs6000_cannot_substitute_mem_equiv_p): New function.
  
! 2020-04-16  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/93621
! 	* ipa-inline.h (ipa_saved_clone_sources): Declare.
! 	* ipa-inline-transform.c (ipa_saved_clone_sources): New variable.
! 	(save_inline_function_body): Link the new body holder with the
! 	previous one.
! 	* cgraph.c: Include ipa-inline.h.
! 	(cgraph_edge::redirect_call_stmt_to_callee): Try to find the decl from
! 	the statement in ipa_saved_clone_sources.
! 	* cgraphunit.c: Include ipa-inline.h.
! 	(expand_all_functions): Free ipa_saved_clone_sources.
  
! 2020-04-16  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/94606
! 	* config/aarch64/aarch64.c (aarch64_expand_sve_const_pred_eor): Take
! 	the VNx16BI lowpart of the recursively-generated constant.
  
! 2020-04-16  Martin Liska  <mliska@suse.cz>
! 	    Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/94314
! 	* cgraphclones.c (set_new_clone_decl_and_node_flags): Drop
! 	DECL_IS_REPLACEABLE_OPERATOR during cloning.
! 	* tree-ssa-dce.c (valid_new_delete_pair_p): New function.
! 	(propagate_necessity): Check operator names.
  
! 2020-04-16  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/94605
! 	* early-remat.c (early_remat::process_block): Handle insns that
! 	set multiple candidate registers.
! 2020-04-16  Jan Hubicka  <hubicka@ucw.cz>
! 	
! 	PR gcov-profile/93401
! 	* common.opt (profile-prefix-path): New option.
! 	* coverae.c: Include diagnostics.h.
! 	(coverage_init): Strip profile prefix path.
! 	* doc/invoke.texi (-fprofile-prefix-path): Document.
  
! 2020-04-16  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/94614
! 	* expr.c (emit_move_multi_word): Do not generate code when
! 	the destination part is undefined_operand_subword_p.
! 	* lower-subreg.c (resolve_clobber): Look through a paradoxica
! 	subreg.
  
! 2020-04-16  Martin Jambor  <mjambor@suse.cz>
  
! 	PR tree-optimization/94598
! 	* tree-sra.c (verify_sra_access_forest): Fix verification of total
! 	scalarization accesses under access to one-element arrays.
  
! 2020-04-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR bootstrap/89494
! 	* function.c (assign_parm_find_data_types): Add workaround for
! 	BROKEN_VALUE_INITIALIZATION compilers.
  
! 2020-04-16  Richard Biener  <rguenther@suse.de>
  
! 	* gdbhooks.py (TreePrinter): Print SSA_NAME_VERSION of SSA_NAME
! 	nodes.
  
! 2020-04-15  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/94603
! 	* config/i386/i386-builtin.def (__builtin_ia32_movq128):
! 	Require OPTION_MASK_ISA_SSE2.
  
! 2020-04-15  Gustavo Romero  <gromero@linux.ibm.com>
  
! 	PR bootstrap/89494
! 	* dumpfile.c (selftest::temp_dump_context::temp_dump_context):
! 	Don't construct a dump_context temporary to call static method.
  
! 2020-04-15  Andrea Corallo  <andrea.corallo@arm.com>
  
! 	* config/aarch64/falkor-tag-collision-avoidance.c
! 	(valid_src_p): Check for aarch64_address_info type before
! 	accessing base field.
  
! 2020-04-15  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/mve.md (mve_vec_duplicate<mode>): New pattern.
! 	(V_sz_elem2): Remove unused mode attribute.
  
! 2020-04-15  Matthew Malcomson  <matthew.malcomson@arm.com>
  
! 	* config/arm/arm.md (arm_movdi): Disallow for MVE.
  
! 2020-04-15  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/94539
! 	* tree-ssa-alias.c (same_type_for_tbaa): Defer to
! 	alias_sets_conflict_p for pointers.
  
! 2020-04-14  Max Filippov  <jcmvbkbc@gmail.com>
  
! 	PR target/94584
! 	* config/xtensa/xtensa.md (zero_extendhisi2, zero_extendqisi2)
! 	(extendhisi2_internal): Add %v1 before the load instructions.
  
! 2020-04-14  Aaron Sawdey  <acsawdey@linux.ibm.com>
  
! 	PR target/94542
! 	* config/rs6000/rs6000.c (address_to_insn_form): Do not attempt to
! 	use PC-relative addressing for TLS references.
  
! 2020-04-14  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/94434
! 	* ipa-sra.c: Include internal-fn.h.
! 	(enum isra_scan_context): Update comment.
! 	(scan_function): Treat calls to internal_functions like loads or stores.
  
! 2020-04-14  Yang Yang <yangyang305@huawei.com>
  
! 	PR tree-optimization/94574
! 	* tree-ssa.c (non_rewritable_lvalue_p): Add size check when analyzing
! 	whether a vector-insert is rewritable using a BIT_INSERT_EXPR.
  
! 2020-04-14  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/94561
! 	* config/i386/i386.c (ix86_get_ssemov): Remove mode size check.
  
! 2020-04-13  Martin Sebor  <msebor@redhat.com>
  
! 	* doc/extend.texi (-Wall): Mention -Wformat-overflow and
! 	-Wformat-truncation.  Move -Wzero-length-bounds last.
! 	(-Wrestrict): Document positive form of option enabled by -Wall.
  
! 2020-04-13 Zachary Spytz  <zspytz@gmail.com>
  
! 	* doc/extend.texi: Add realloc to list of built-in functions
! 	are recognized by the compiler.
  
! 2020-04-13  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/94556
! 	* config/i386/i386.c (ix86_expand_epilogue): Restore the frame
! 	pointer in word_mode for eh_return epilogues.
  
! 2020-04-13  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
  
! 	* config/msp430/msp430.c (msp430_print_operand): Don't add offsets to
! 	memory references in %B, %C and %D operand selectors when the inner
! 	operand is a post increment address.
  
! 2020-04-13  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
  
! 	* config/msp430/msp430.c (msp430_print_operand): Offset a %C memory
! 	reference by 4 bytes, and %D memory reference by 6 bytes.
  
! 2020-04-11  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/94494
! 	* config/i386/sse.md (REDUC_SSE_SMINMAX_MODE): Use TARGET_SSE2
! 	condition for V4SI, V8HI and V16QI modes.
  
! 2020-04-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/94495
! 	PR target/94551
! 	* cselib.c (cselib_record_sp_cfa_base_equiv): Set PRESERVED_VALUE_P on
! 	val->val_rtx.
  
! 2020-04-10  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	PR middle-end/89433
! 	PR middle-end/93465
! 	* omp-general.c (oacc_verify_routine_clauses): Diagnose if
! 	"#pragma omp declare target" has also been applied.
  
! 2020-04-09  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
  
! 	* config/msp430/msp430.c (msp430_expand_epilogue): Use emit_jump_insn
! 	when to emit the epilogue_helper insn.
! 	* config/msp430/msp430.md (epilogue_helper): Add a return insn to the
! 	RTL pattern.
  
! 2020-04-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/94495
! 	* cselib.h (cselib_record_sp_cfa_base_equiv,
! 	cselib_sp_derived_value_p): Declare.
! 	* cselib.c (cselib_record_sp_cfa_base_equiv,
! 	cselib_sp_derived_value_p): New functions.
! 	* var-tracking.c (add_stores): Don't record MO_VAL_SET for
! 	cselib_sp_derived_value_p values.
! 	(vt_initialize): Call cselib_record_sp_cfa_base_equiv at the
! 	start of extended basic blocks other than the first one
! 	for !frame_pointer_needed functions.
  
! 2020-04-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* doc/sourcebuild.texi (aarch64_sve_hw, aarch64_sve128_hw)
! 	(aarch64_sve256_hw, aarch64_sve512_hw, aarch64_sve1024_hw)
! 	(aarch64_sve2048_hw): Document.
! 	* config/aarch64/aarch64-protos.h
! 	(aarch64_sve::handle_arm_sve_vector_bits_attribute): Declare.
! 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
! 	__ARM_FEATURE_SVE_VECTOR_OPERATIONS when SVE is enabled.
! 	* config/aarch64/aarch64-sve-builtins.cc (matches_type_p): New
! 	function.
! 	(find_type_suffix_for_scalar_type): Use it instead of comparing
! 	TYPE_MAIN_VARIANTs.
! 	(function_resolver::infer_vector_or_tuple_type): Likewise.
! 	(function_resolver::require_vector_type): Likewise.
! 	(handle_arm_sve_vector_bits_attribute): New function.
! 	* config/aarch64/aarch64.c (pure_scalable_type_info): New class.
! 	(aarch64_attribute_table): Add arm_sve_vector_bits.
! 	(aarch64_return_in_memory_1):
! 	(pure_scalable_type_info::piece::get_rtx): New function.
! 	(pure_scalable_type_info::num_zr): Likewise.
! 	(pure_scalable_type_info::num_pr): Likewise.
! 	(pure_scalable_type_info::get_rtx): Likewise.
! 	(pure_scalable_type_info::analyze): Likewise.
! 	(pure_scalable_type_info::analyze_registers): Likewise.
! 	(pure_scalable_type_info::analyze_array): Likewise.
! 	(pure_scalable_type_info::analyze_record): Likewise.
! 	(pure_scalable_type_info::add_piece): Likewise.
! 	(aarch64_some_values_include_pst_objects_p): Likewise.
! 	(aarch64_returns_value_in_sve_regs_p): Use pure_scalable_type_info
! 	to analyze whether the type is returned in SVE registers.
! 	(aarch64_takes_arguments_in_sve_regs_p): Likwise whether the type
! 	is passed in SVE registers.
! 	(aarch64_pass_by_reference_1): New function, extracted from...
! 	(aarch64_pass_by_reference): ...here.  Use pure_scalable_type_info
! 	to analyze whether the type is a pure scalable type and, if so,
! 	whether it should be passed by reference.
! 	(aarch64_return_in_msb): Return false for pure scalable types.
! 	(aarch64_function_value_1): Fold back into...
! 	(aarch64_function_value): ...this function.  Use
! 	pure_scalable_type_info to analyze whether the type is a pure
! 	scalable type and, if so, which registers it should use.  Handle
! 	types that include pure scalable types but are not themselves
! 	pure scalable types.
! 	(aarch64_return_in_memory_1): New function, split out from...
! 	(aarch64_return_in_memory): ...here.  Use pure_scalable_type_info
! 	to analyze whether the type is a pure scalable type and, if so,
! 	whether it should be returned by reference.
! 	(aarch64_layout_arg): Remove orig_mode argument.  Use
! 	pure_scalable_type_info to analyze whether the type is a pure
! 	scalable type and, if so, which registers it should use.  Handle
! 	types that include pure scalable types but are not themselves
! 	pure scalable types.
! 	(aarch64_function_arg): Update call accordingly.
! 	(aarch64_function_arg_advance): Likewise.
! 	(aarch64_pad_reg_upward): On big-endian targets, return false for
! 	pure scalable types that are smaller than 16 bytes.
! 	(aarch64_member_type_forces_blk): New function.
! 	(aapcs_vfp_sub_candidate): Exit early for built-in SVE types.
! 	(aarch64_short_vector_p): Return false for VECTOR_TYPEs that
! 	correspond to built-in SVE types.  Do not rely on a vector mode
! 	if the type includes an pure scalable type.  When returning true,
! 	assert that the mode is not an SVE mode.
! 	(aarch64_vfp_is_call_or_return_candidate): Do not check for SVE
! 	built-in types here.  When returning true, assert that the type
! 	does not have an SVE mode.
! 	(aarch64_can_change_mode_class): Don't allow anything to change
! 	between a predicate mode and a non-predicate mode.  Also don't
! 	allow changes between SVE vector modes and other modes that
! 	might be bigger than 128 bits.
! 	(aarch64_invalid_binary_op): Reject binary operations that mix
! 	SVE and GNU vector types.
! 	(TARGET_MEMBER_TYPE_FORCES_BLK): Define.
  
! 2020-04-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_attribute_table): Add
! 	"SVE sizeless type".
! 	* config/aarch64/aarch64-sve-builtins.cc (make_type_sizeless)
! 	(sizeless_type_p): New functions.
! 	(register_builtin_types): Apply make_type_sizeless to the type.
! 	(register_tuple_type): Likewise.
! 	(verify_type_context): Use sizeless_type_p instead of builin_type_p.
  
! 2020-04-09  Matthew Malcomson  <matthew.malcomson@arm.com>
  
! 	* config/arm/arm_cde.h: Remove `extern "C"` when compiling for
! 	C++.
  
! 2020-04-09  Martin Jambor  <mjambor@suse.cz>
! 	    Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/94482
! 	* tree-sra.c (create_access_replacement): Dump new replacement with
! 	TDF_UID.
! 	(sra_modify_expr): Fix handling of cases when the original EXPR writes
! 	to only part of the replacement.
! 	* tree-ssa-forwprop.c (pass_forwprop::execute): Properly verify
! 	the first operand of combinations into REAL/IMAGPART_EXPR and
! 	BIT_FIELD_REF.
  
! 2020-04-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* doc/sourcebuild.texi (check-function-bodies): Treat the third
! 	parameter as a list of option regexps and require each regexp
! 	to match.
  
! 2020-04-09  Andrea Corallo  <andrea.corallo@arm.com>
  
! 	PR target/94530
! 	* config/aarch64/falkor-tag-collision-avoidance.c
! 	(valid_src_p): Fix missing rtx type check.
  
! 2020-04-09  Bin Cheng  <bin.cheng@linux.alibaba.com>
! 	    Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/93674
! 	* tree-ssa-loop-ivopts.c (langhooks.h): New include.
! 	(add_iv_candidate_for_use): For iv_use of non integer or pointer type,
! 	or non-mode precision type, add candidate in unsigned type with the
! 	same precision.
  
! 2020-04-08  Clement Chigot  <clement.chigot@atos.net>
  
! 	* config/rs6000/aix61.h (LIB_SPEC): Add -lc128 with -mlong-double-128.
! 	* config/rs6000/aix71.h (LIB_SPEC): Likewise.
! 	* config/rs6000/aix72.h (LIB_SPEC): Likewise.
  
! 2020-04-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/94526
! 	* cselib.c (autoinc_split): Handle e->val_rtx being SP_DERIVED_VALUE_P
! 	with zero offset.
! 	* reload1.c (eliminate_regs_1): Avoid creating
! 	(plus (reg) (const_int 0)) in DEBUG_INSNs.
  
! 	PR tree-optimization/94524
! 	* tree-vect-generic.c (expand_vector_divmod): If any elt of op1 is
! 	negative for signed TRUNC_MOD_EXPR, multiply with absolute value of
! 	op1 rather than op1 itself at the end.  Punt for signed modulo by
! 	most negative constant.
! 	* tree-vect-patterns.c (vect_recog_divmod_pattern): Punt for signed
! 	modulo by most negative constant.
  
! 2020-04-08  Richard Biener  <rguenther@suse.de>
  
! 	PR rtl-optimization/93946
! 	* cse.c (cse_insn): Record the tabled expression in
! 	src_related.  Verify a redundant store removal is valid.
  
! 2020-04-08  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/94417
! 	* config/i386/i386-features.c (rest_of_insert_endbranch): Insert
! 	ENDBR at function entry if function will be called indirectly.
  
! 2020-04-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94438
! 	* config/i386/i386.c (ix86_get_mask_mode): Only use int mask for elem_size
! 	1, 2, 4 and 8.
  
! 2020-04-08  Martin Liska  <mliska@suse.cz>
  
! 	PR c++/94314
! 	* gimple.c (gimple_call_operator_delete_p): Rename to...
! 	(gimple_call_replaceable_operator_delete_p): ... this.
! 	Use DECL_IS_REPLACEABLE_OPERATOR_DELETE_P.
! 	* gimple.h (gimple_call_operator_delete_p): Rename to ...
! 	(gimple_call_replaceable_operator_delete_p): ... this.
! 	* tree-core.h (tree_function_decl): Add replaceable_operator
! 	flag.
! 	* tree-ssa-dce.c (mark_all_reaching_defs_necessary_1):
! 	Use DECL_IS_REPLACEABLE_OPERATOR_DELETE_P.
! 	(propagate_necessity): Use gimple_call_replaceable_operator_delete_p.
! 	(eliminate_unnecessary_stmts): Likewise.
! 	* tree-streamer-in.c (unpack_ts_function_decl_value_fields):
! 	Pack DECL_IS_REPLACEABLE_OPERATOR.
! 	* tree-streamer-out.c (pack_ts_function_decl_value_fields):
! 	Unpack the field here.
! 	* tree.h (DECL_IS_REPLACEABLE_OPERATOR): New.
! 	(DECL_IS_REPLACEABLE_OPERATOR_NEW_P): New.
! 	(DECL_IS_REPLACEABLE_OPERATOR_DELETE_P): New.
! 	* cgraph.c (cgraph_node::dump): Dump if an operator is replaceable.
! 	* ipa-icf.c (sem_item::compare_referenced_symbol_properties): Compare
! 	replaceable operator flags.
  
! 2020-04-08  Dennis Zhang  <dennis.zhang@arm.com>
! 	    Matthew Malcomson  <matthew.malcomson@arm.com>
  
! 	* config/arm/arm-builtins.c (CX_IMM_QUALIFIERS): New macro.
! 	(CX_UNARY_QUALIFIERS, CX_BINARY_QUALIFIERS): Likewise.
! 	(CX_TERNARY_QUALIFIERS): Likewise.
! 	(ARM_BUILTIN_CDE_PATTERN_START): Likewise.
! 	(ARM_BUILTIN_CDE_PATTERN_END): Likewise.
! 	(arm_init_acle_builtins): Initialize CDE builtins.
! 	(arm_expand_acle_builtin): Check CDE constant operands.
! 	* config/arm/arm.h (ARM_CDE_CONST_COPROC): New macro to set the range
! 	of CDE constant operand.
! 	* config/arm/arm.c (arm_hard_regno_mode_ok): Support DImode for
! 	TARGET_VFP_BASE.
! 	(ARM_VCDE_CONST_1, ARM_VCDE_CONST_2, ARM_VCDE_CONST_3): Likewise.
! 	* config/arm/arm_cde.h (__arm_vcx1_u32): New macro of ACLE interface.
! 	(__arm_vcx1a_u32, __arm_vcx2_u32, __arm_vcx2a_u32): Likewise.
! 	(__arm_vcx3_u32, __arm_vcx3a_u32, __arm_vcx1d_u64): Likewise.
! 	(__arm_vcx1da_u64, __arm_vcx2d_u64, __arm_vcx2da_u64): Likewise.
! 	(__arm_vcx3d_u64, __arm_vcx3da_u64): Likewise.
! 	* config/arm/arm_cde_builtins.def: New file.
! 	* config/arm/iterators.md (V_reg): New attribute of SI.
! 	* config/arm/predicates.md (const_int_coproc_operand): New.
! 	(const_int_vcde1_operand, const_int_vcde2_operand): New.
! 	(const_int_vcde3_operand): New.
! 	* config/arm/unspecs.md (UNSPEC_VCDE, UNSPEC_VCDEA): New.
! 	* config/arm/vfp.md (arm_vcx1<mode>): New entry.
! 	(arm_vcx1a<mode>, arm_vcx2<mode>, arm_vcx2a<mode>): Likewise.
! 	(arm_vcx3<mode>, arm_vcx3a<mode>): Likewise.
  
! 2020-04-08  Dennis Zhang  <dennis.zhang@arm.com>
  
! 	* config.gcc: Add arm_cde.h.
! 	* config/arm/arm-c.c (arm_cpu_builtins): Define or undefine
! 	__ARM_FEATURE_CDE and __ARM_FEATURE_CDE_COPROC.
! 	* config/arm/arm-cpus.in (cdecp0, cdecp1, ..., cdecp7): New options.
! 	* config/arm/arm.c (arm_option_reconfigure_globals): Configure
! 	arm_arch_cde and arm_arch_cde_coproc to store the feature bits.
! 	* config/arm/arm.h (TARGET_CDE): New macro.
! 	* config/arm/arm_cde.h: New file.
! 	* doc/invoke.texi: Document CDE options +cdecp[0-7].
! 	* doc/sourcebuild.texi (arm_v8m_main_cde_ok): Document new target
! 	supports option.
! 	(arm_v8m_main_cde_fp, arm_v8_1m_main_cde_mve): Likewise.
  
! 2020-04-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/94516
! 	* postreload.c: Include rtl-iter.h.
! 	(reload_cse_move2add): Handle SP autoinc here by FOR_EACH_SUBRTX_VAR
! 	looking for all MEMs with RTX_AUTOINC operand.
! 	(move2add_note_store): Remove {PRE,POST}_{INC,DEC} handling.
  
! 2020-04-08  Tobias Burnus  <tobias@codesourcery.com>
  
! 	* omp-grid.c (grid_eliminate_combined_simd_part): Use
! 	OMP_CLAUSE_CODE to access the omp clause code.
  
! 2020-04-07  Jeff Law  <law@redhat.com>
  
! 	PR rtl-optimization/92264
! 	* config/h8300/h8300.md (mov;add peephole2): Avoid applying when
! 	the destination is the stack pointer.
  
! 2020-04-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/94291
! 	PR rtl-optimization/84169
! 	* combine.c (try_combine): For split_i2i3, don't assume SET_DEST
! 	must be a REG or SUBREG of REG; if it is not one of these, don't
! 	update LOG_LINKs.
  
! 2020-04-07  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/94479
! 	* gimplify.c (gimplify_addr_expr): Also consider generated
! 	MEM_REFs.
  
! 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm_mve.h: Add C++ polymorphism and fix preserve MACROs.
  
! 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm_mve.h: Cast some pointers to expected types.
  
! 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm_mve.h: Replace all uses of vuninitializedq_* with the
! 	same with '__arm_' prefix.
  
! 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/mve.md (mve_vec_extract*): Allow memory operands in set.
  
! 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm.c (arm_mve_immediate_check): Removed.
! 	* config/arm/mve.md (MVE_pred2, MVE_constraint2): Added FP types.
! 	(mve_vcvtq_n_to_f_*, mve_vcvtq_n_from_f_*, mve_vqshrnbq_n_*,
! 	 mve_vqshrntq_n_*, mve_vqshrunbq_n_s*, mve_vqshruntq_n_s*,
! 	 mve_vcvtq_m_n_from_f_*, mve_vcvtq_m_n_to_f_*, mve_vqshrnbq_m_n_*,
! 	 mve_vqrshruntq_m_n_s*, mve_vqshrunbq_m_n_s*,
! 	 mve_vqshruntq_m_n_s*): Fixed immediate constraints.
  
! 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm.d (ashldi3): Don't use lsll for constant 32-bit shifts.
  
! 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm_mve.h: Fix v[id]wdup intrinsics.
! 	* config/arm/mve/md: Fix v[id]wdup patterns.
  
! 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm.c (output_move_neon): Deal with label + offset cases.
! 	* config/arm/mve.md (*mve_mov<mode>): Handle const vectors.
  
! 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm_mve.h: Remove use of typeof for addr pointer parameters
! 	and remove const_ptr enums.
  
! 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm_mve.h (vsubq_n): Merge with...
! 	(vsubq): ... this.
! 	(vmulq_n): Merge with...
! 	(vmulq): ... this.
! 	(__ARM_mve_typeid): Simplify scalar and constant detection.
  
! 2020-04-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94509
! 	* config/i386/i386-expand.c (expand_vec_perm_pshufb): Fix the check
! 	for inter-lane permutation for 64-byte modes.
  
! 	PR target/94488
! 	* config/aarch64/aarch64-simd.md (ashl<mode>3, lshr<mode>3,
! 	ashr<mode>3): Force operands[2] into reg whenever it is not CONST_INT.
! 	Assume it is a REG after that instead of testing it and doing FAIL
! 	otherwise.  Formatting fix.
  
! 2020-04-07  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* config/rs6000/t-rtems: Delete mcpu=8540 multilib.
  
! 2020-04-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94500
! 	* config/i386/i386-expand.c (emit_reduc_half): For V{64QI,32HI}mode
! 	handle i < 64 using avx512bw_lshrv4ti3.  Formatting fixes.
  
! 2020-04-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	* cselib.c (cselib_subst_to_values): For SP_DERIVED_VALUE_P
! 	+ const0_rtx return the SP_DERIVED_VALUE_P.
  
! 2020-04-06  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/92989
! 	* lra-lives.c (process_bb_lives): Do not treat eh_return data
! 	registers as being live at the beginning of the EH receiver.
  
! 2020-04-05 Zachary Spytz  <zspytz@gmail.com>
  
! 	* extend.texi: Add free to list of ISO C90 functions that
! 	are recognized by the compiler.
  
! 2020-04-05 Nagaraju Mekala <nmekala@xilix.com>
  
! 	* config/microblaze/microblaze.c (microblaze_must_save_register): Check
! 	for fast_interrupt.
!  
! 	* config/microblaze/microblaze.md (trap): Update output pattern.
  
! 2020-04-04  Hannes Domani  <ssbssa@yahoo.de>
! 	    Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/94459
! 	* dwarf2out.c (gen_subprogram_die): Look through references, pointers,
! 	arrays, pointer-to-members, function types and qualifiers when
! 	checking if in-class DIE had an 'auto' or 'decltype(auto)' return type
! 	to emit type again on definition.
  
! 2020-04-04  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR ipa/93940
! 	* ipa-fnsummary.c (vrp_will_run_p): New function.
! 	(fre_will_run_p): New function.
! 	(evaluate_properties_for_edge): Use it.
! 	* ipa-inline.c (can_inline_edge_by_limits_p): Do not inline
! 	!optimize_debug to optimize_debug.
  
! 2020-04-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/94468
! 	* cselib.c (references_value_p): Formatting fix.
! 	(cselib_useless_value_p): New function.
! 	(discard_useless_locs, discard_useless_values,
! 	cselib_invalidate_regno_val, cselib_invalidate_mem,
! 	cselib_record_set): Use it instead of
! 	v->locs == 0 && !PRESERVED_VALUE_P (v->val_rtx).
  
! 	PR debug/94441
! 	* tree-iterator.h (expr_single): Declare.
! 	* tree-iterator.c (expr_single): New function.
! 	* tree.h (protected_set_expr_location_if_unset): Declare.
! 	* tree.c (protected_set_expr_location): Use expr_single.
! 	(protected_set_expr_location_if_unset): New function.
  
! 2020-04-03  Jeff Law  <law@redhat.com>
  
! 	PR rtl-optimization/92264
! 	* config/stormy16/stormy16.c (xstormy16_preferred_reload_class): Handle
! 	reloading of auto-increment addressing modes.
  
! 2020-04-03  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/94467
! 	* config/i386/sse.md (ssse3_pshufbv8qi3): Mark scratch operand
! 	as earlyclobber.
  
! 2020-04-03  Jeff Law  <law@redhat.com>
  
! 	PR rtl-optimization/92264
! 	* config/m32r/m32r.c (m32r_output_block_move): Properly account for
! 	post-increment addressing of source operands as well as residuals
! 	when computing any adjustments to the input pointer.
  
! 2020-04-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94460
! 	* config/i386/sse.md (avx2_ph<plusminus_mnemonic>wv16hi3,
! 	avx2_ph<plusminus_mnemonic>dv8si3): Fix up RTL pattern to do
! 	second half of first lane from first lane of second operand and
! 	first half of second lane from second lane of first operand.
  
! 2020-04-03  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm_mve.h: Condition the header file on __ARM_FEATURE_MVE.
  
! 2020-04-03  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR target/94396
! 	* common/config/aarch64/aarch64-common.c
! 	(aarch64_get_extension_string_for_isa_flags): Handle default flags.
  
! 2020-04-03  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/94465
! 	* tree.c (array_ref_low_bound): Deal with released SSA names
! 	in index position.
  
! 2020-04-03  Kwok Cheung Yeung  <kcy@codesourcery.com>
  
! 	* config/gcn/gcn.c (print_operand): Handle unordered comparison
! 	operators.
! 	* config/gcn/predicates.md (gcn_fp_compare_operator): Add unordered
! 	comparison operators.
  
! 2020-04-03  Kewen Lin  <linkw@gcc.gnu.org>
  
! 	PR tree-optimization/94443
! 	* tree-vect-loop.c (vectorizable_live_operation): Use
! 	gsi_insert_seq_before to replace gsi_insert_before.
  
! 2020-04-03  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/94445
! 	* ipa-icf-gimple.c (func_checker::compare_gimple_call):
! 	  Compare type attributes for gimple_call_fntypes.
  
! 2020-04-02  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* alias.c (get_alias_set): Fix comment typos.
  
! 2020-04-02  Fritz Reese  <foreese@gcc.gnu.org>
  
! 	PR fortran/85982
! 	* fortran/decl.c (match_attr_spec): Lump COMP_STRUCTURE/COMP_MAP into
! 	attribute checking used by TYPE.
  
! 2020-04-02  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/92676
! 	* ipa-sra.c (struct caller_issues): New fields candidate and
! 	call_from_outside_comdat.
! 	(check_for_caller_issues): Check for calls from outsied of
! 	candidate's same_comdat_group.
! 	(check_all_callers_for_issues): Set up issues.candidate, check result
! 	of the new check.
! 	(mark_callers_calls_comdat_local): New function.
! 	(process_isra_node_results): Set calls_comdat_local of callers if
! 	appropriate.
  
! 2020-04-02  Richard Biener  <rguenther@suse.de>
  
! 	PR c/94392
! 	* common.opt (ffinite-loops): Initialize to zero.
! 	* opts.c (default_options_table): Remove OPT_ffinite_loops
! 	entry.
! 	* cfgloop.h (loop::finite_p): New member.
! 	* cfgloopmanip.c (copy_loop_info): Copy finite_p.
! 	* ipa-icf-gimple.c (func_checker::compare_loops): Compare
! 	finite_p.
! 	* lto-streamer-in.c (input_cfg): Stream finite_p.
! 	* lto-streamer-out.c (output_cfg): Likewise.
! 	* tree-cfg.c (replace_loop_annotate): Initialize finite_p
! 	from flag_finite_loops at CFG build time.
! 	* tree-ssa-loop-niter.c (finite_loop_p): Check the loops
! 	finite_p flag instead of flag_finite_loops.
! 	* doc/invoke.texi (ffinite-loops): Adjust documentation of
! 	default setting.
  
! 2020-04-02  Richard Biener  <rguenther@suse.de>
  
! 	PR debug/94450
! 	* dwarf2out.c (dwarf2out_early_finish): Remove code emitting
! 	DW_TAG_imported_unit.
  
! 2020-04-02  Maciej W. Rozycki  <macro@wdc.com>
  
! 	* doc/install.texi (Specific) <riscv32-*-elf, riscv32-*-linux>
! 	<riscv64-*-elf, riscv64-*-linux>: Update binutils requirement to
! 	2.30.
  
! 2020-04-02  Kewen Lin  <linkw@gcc.gnu.org>
  
! 	PR tree-optimization/94401
! 	* tree-vect-loop.c (vectorizable_load): Handle VMAT_CONTIGUOUS_REVERSE
! 	access type when loading halves of vector to avoid peeling for gaps.
  
! 2020-04-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	* config/mips/mti-linux.h (SYSROOT_SUFFIX_SPEC): Add a space in
! 	between a string literal and MIPS_SYSVERSION_SPEC macro.
  
! 2020-04-02  Martin Jambor  <mjambor@suse.cz>
  
! 	* doc/invoke.texi (Optimize Options): Document sra-max-propagations.
  
! 2020-04-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/92264
! 	* params.opt (-param=max-find-base-term-values=): Decrease default
! 	from 2000 to 200.
  
! 	PR rtl-optimization/92264
! 	* rtl.h (struct rtx_def): Mention that call bit is used as
! 	SP_DERIVED_VALUE_P in cselib.c.
! 	* cselib.c (SP_DERIVED_VALUE_P): Define.
! 	(PRESERVED_VALUE_P, SP_BASED_VALUE_P): Move definitions earlier.
! 	(cselib_hasher::equal): Handle equality between SP_DERIVED_VALUE_P
! 	val_rtx and sp based expression where offsets cancel each other.
! 	(preserve_constants_and_equivs): Formatting fix.
! 	(cselib_reset_table): Add reverse op loc to SP_DERIVED_VALUE_P
! 	locs list for cfa_base_preserved_val if needed.  Formatting fix.
! 	(autoinc_split): If the to be returned value is a REG, MEM or
! 	VALUE which has SP_DERIVED_VALUE_P + CONST_INT as one of its
! 	locs, return the SP_DERIVED_VALUE_P VALUE and adjust *off.
! 	(rtx_equal_for_cselib_1): Call autoinc_split even if both
! 	expressions are PLUS in Pmode with CONST_INT second operands.
! 	Handle SP_DERIVED_VALUE_P cases.
! 	(cselib_hash_plus_const_int): New function.
! 	(cselib_hash_rtx): Use it for PLUS in Pmode with CONST_INT
! 	second operand, as well as for PRE_DEC etc. that ought to be
! 	hashed the same way.
! 	(cselib_subst_to_values): Substitute PLUS with Pmode and
! 	CONST_INT operand if the first operand is a VALUE which has
! 	SP_DERIVED_VALUE_P + CONST_INT as one of its locs for the
! 	SP_DERIVED_VALUE_P + adjusted offset.
! 	(cselib_lookup_1): When creating a new VALUE for stack_pointer_rtx,
! 	set SP_DERIVED_VALUE_P on it.  Set PRESERVED_VALUE_P when adding
! 	SP_DERIVED_VALUE_P PRESERVED_VALUE_P subseted VALUE location.
! 	* var-tracking.c (vt_initialize): Call cselib_add_permanent_equiv
! 	on the sp value before calling cselib_add_permanent_equiv on the
! 	cfa_base value.
! 	* dse.c (check_for_inc_dec_1, check_for_inc_dec): Punt on RTX_AUTOINC
! 	in the insn without REG_INC note.
! 	(replace_read): Punt on RTX_AUTOINC in the *loc being replaced.
! 	Punt on invalid insns added by copy_to_mode_reg.  Formatting fixes.
  
! 	PR target/94435
! 	* config/aarch64/aarch64.c (aarch64_gen_compare_reg_maybe_ze): For
! 	y_mode E_[QH]Imode and y being a CONST_INT, change y_mode to SImode.
  
! 2020-04-02  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	PR target/94317
! 	* config/arm/arm-builtins.c (LDRGBWBXU_QUALIFIERS): Define.
! 	(LDRGBWBXU_Z_QUALIFIERS): Likewise.
! 	* config/arm/arm_mve.h (__arm_vldrdq_gather_base_wb_s64): Modify
! 	intrinsic defintion by adding a new builtin call to writeback into base
! 	address.
! 	(__arm_vldrdq_gather_base_wb_u64): Likewise.
! 	(__arm_vldrdq_gather_base_wb_z_s64): Likewise.
! 	(__arm_vldrdq_gather_base_wb_z_u64): Likewise.
! 	(__arm_vldrwq_gather_base_wb_s32): Likewise.
! 	(__arm_vldrwq_gather_base_wb_u32): Likewise.
! 	(__arm_vldrwq_gather_base_wb_z_s32): Likewise.
! 	(__arm_vldrwq_gather_base_wb_z_u32): Likewise.
! 	(__arm_vldrwq_gather_base_wb_f32): Likewise.
! 	(__arm_vldrwq_gather_base_wb_z_f32): Likewise.
! 	* config/arm/arm_mve_builtins.def (vldrwq_gather_base_wb_z_u): Modify
! 	builtin's qualifier.
! 	(vldrdq_gather_base_wb_z_u): Likewise.
! 	(vldrwq_gather_base_wb_u): Likewise.
! 	(vldrdq_gather_base_wb_u): Likewise.
! 	(vldrwq_gather_base_wb_z_s): Likewise.
! 	(vldrwq_gather_base_wb_z_f): Likewise.
! 	(vldrdq_gather_base_wb_z_s): Likewise.
! 	(vldrwq_gather_base_wb_s): Likewise.
! 	(vldrwq_gather_base_wb_f): Likewise.
! 	(vldrdq_gather_base_wb_s): Likewise.
! 	(vldrwq_gather_base_nowb_z_u): Define builtin.
! 	(vldrdq_gather_base_nowb_z_u): Likewise.
! 	(vldrwq_gather_base_nowb_u): Likewise.
! 	(vldrdq_gather_base_nowb_u): Likewise.
! 	(vldrwq_gather_base_nowb_z_s): Likewise.
! 	(vldrwq_gather_base_nowb_z_f): Likewise.
! 	(vldrdq_gather_base_nowb_z_s): Likewise.
! 	(vldrwq_gather_base_nowb_s): Likewise.
! 	(vldrwq_gather_base_nowb_f): Likewise.
! 	(vldrdq_gather_base_nowb_s): Likewise.
! 	* config/arm/mve.md (mve_vldrwq_gather_base_nowb_<supf>v4si): Define RTL
! 	pattern.
! 	(mve_vldrwq_gather_base_wb_<supf>v4si): Modify RTL pattern.
! 	(mve_vldrwq_gather_base_nowb_z_<supf>v4si): Define RTL pattern.
! 	(mve_vldrwq_gather_base_wb_z_<supf>v4si): Modify RTL pattern.
! 	(mve_vldrwq_gather_base_wb_fv4sf): Modify RTL pattern.
! 	(mve_vldrwq_gather_base_nowb_fv4sf): Define RTL pattern.
! 	(mve_vldrwq_gather_base_wb_z_fv4sf): Modify RTL pattern.
! 	(mve_vldrwq_gather_base_nowb_z_fv4sf): Define RTL pattern.
! 	(mve_vldrdq_gather_base_nowb_<supf>v4di): Define RTL pattern.
! 	(mve_vldrdq_gather_base_wb_<supf>v4di):  Modify RTL pattern.
! 	(mve_vldrdq_gather_base_nowb_z_<supf>v4di): Define RTL pattern.
! 	(mve_vldrdq_gather_base_wb_z_<supf>v4di):  Modify RTL pattern.
  
! 2020-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	* config/s390/vector.md ("<ti*>add<mode>3", "mul<mode>3")
! 	("and<mode>3", "notand<mode>3", "ior<mode>3", "ior_not<mode>3")
! 	("xor<mode>3", "notxor<mode>3", "smin<mode>3", "smax<mode>3")
! 	("umin<mode>3", "umax<mode>3", "vec_widen_smult_even_<mode>")
! 	("vec_widen_umult_even_<mode>", "vec_widen_smult_odd_<mode>")
! 	("vec_widen_umult_odd_<mode>", "add<mode>3", "sub<mode>3")
! 	("mul<mode>3", "fma<mode>4", "fms<mode>4", "neg_fma<mode>4")
! 	("neg_fms<mode>4", "*smax<mode>3_vxe", "*smaxv2df3_vx")
! 	("*smin<mode>3_vxe", "*sminv2df3_vx"): Remove % constraint
! 	modifier.
! 	("vec_widen_umult_lo_<mode>", "vec_widen_umult_hi_<mode>")
! 	("vec_widen_smult_lo_<mode>", "vec_widen_smult_hi_<mode>"):
! 	Remove constraints from expander.
! 	* config/s390/vx-builtins.md ("vacc<bhfgq>_<mode>", "vacq")
! 	("vacccq", "vec_avg<mode>", "vec_avgu<mode>", "vec_vmal<mode>")
! 	("vec_vmah<mode>", "vec_vmalh<mode>", "vec_vmae<mode>")
! 	("vec_vmale<mode>", "vec_vmao<mode>", "vec_vmalo<mode>")
! 	("vec_smulh<mode>", "vec_umulh<mode>", "vec_nor<mode>3")
! 	("vfmin<mode>", "vfmax<mode>"): Remove % constraint modifier.
  
! 2020-04-01  Peter Bergner  <bergner@linux.ibm.com>
  
! 	PR rtl-optimization/94123
! 	* lower-subreg.c (pass_lower_subreg3::gate): Remove test for
! 	flag_split_wide_types_early.
  
! 2020-04-01  Joerg Sonnenberger  <joerg@bec.de>
  
! 	* doc/extend.texi (Common Function Attributes): Fix typo.
  
! 2020-04-01  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/94420
! 	* config/rs6000/rs6000.md (*tocref<mode> for P): Add insn condition
! 	on operands[1].
  
! 2020-04-01  Zackery Spytz  <zspytz@gmail.com>
  
! 	* doc/extend.texi: Fix a typo in the documentation of the
! 	copy function attribute.
  
! 2020-04-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/94423
! 	* tree-object-size.c (pass_object_sizes::execute): Don't call
! 	replace_uses_by for SSA_NAME_OCCURS_IN_ABNORMAL_PHI lhs, instead
! 	call replace_call_with_value.
  
! 2020-04-01  Kewen Lin  <linkw@gcc.gnu.org>
  
! 	PR tree-optimization/94043
! 	* tree-vect-loop.c (vectorizable_live_operation): Generate loop-closed
! 	phi for vec_lhs and use it for lane extraction.
  
! 2020-03-31  Felix Yang  <felix.yang@huawei.com>
  
! 	PR tree-optimization/94398
! 	* tree-vect-stmts.c (vectorizable_store): Instead of calling
! 	vect_supportable_dr_alignment, set alignment_support_scheme to
! 	dr_unaligned_supported for gather-scatter accesses.
! 	(vectorizable_load): Likewise.
  
! 2020-03-31  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn-valu.md (V_QI, V_HI, V_HF, V_SI, V_SF, V_DI, V_DF):
! 	New mode iterators.
! 	(vnsi, VnSI, vndi, VnDI): New mode attributes.
! 	(mov<mode>): Use <VnDI> in place of V64DI.
! 	(mov<mode>_exec): Likewise.
! 	(mov<mode>_sgprbase): Likewise.
! 	(reload_out<mode>): Likewise.
! 	(*vec_set<mode>_1): Use GET_MODE_NUNITS instead of constant 64.
! 	(gather_load<mode>v64si): Rename to ...
! 	(gather_load<mode><vnsi>): ... this, and use <VnSI> in place of V64SI,
! 	and <VnDI> in place of V64DI.
! 	(gather<mode>_insn_1offset<exec>): Use <VnDI> in place of V64DI.
! 	(gather<mode>_insn_1offset_ds<exec>): Use <VnSI> in place of V64SI.
! 	(gather<mode>_insn_2offsets<exec>): Use <VnSI> and <VnDI>.
! 	(scatter_store<mode>v64si): Rename to ...
! 	(scatter_store<mode><vnsi>): ... this, and use <VnSI> and <VnDI>.
! 	(scatter<mode>_expr<exec_scatter>): Use <VnSI> and <VnDI>.
! 	(scatter<mode>_insn_1offset<exec_scatter>): Likewise.
! 	(scatter<mode>_insn_1offset_ds<exec_scatter>): Likewise.
! 	(scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
! 	(ds_bpermute<mode>): Use <VnSI>.
! 	(addv64si3_vcc<exec_vcc>): Rename to ...
! 	(add<mode>3_vcc<exec_vcc>): ... this, and use V_SI.
! 	(addv64si3_vcc_dup<exec_vcc>): Rename to ...
! 	(add<mode>3_vcc_dup<exec_vcc>): ... this, and use V_SI.
! 	(addcv64si3<exec_vcc>): Rename to ...
! 	(addc<mode>3<exec_vcc>): ... this, and use V_SI.
! 	(subv64si3_vcc<exec_vcc>): Rename to ...
! 	(sub<mode>3_vcc<exec_vcc>): ... this, and use V_SI.
! 	(subcv64si3<exec_vcc>): Rename to ...
! 	(subc<mode>3<exec_vcc>): ... this, and use V_SI.
! 	(addv64di3): Rename to ...
! 	(add<mode>3): ... this, and use V_DI.
! 	(addv64di3_exec): Rename to ...
! 	(add<mode>3_exec): ... this, and use V_DI.
! 	(subv64di3): Rename to ...
! 	(sub<mode>3): ... this, and use V_DI.
! 	(subv64di3_exec): Rename to ...
! 	(sub<mode>3_exec): ... this, and use V_DI.
! 	(addv64di3_zext): Rename to ...
! 	(add<mode>3_zext): ... this, and use V_DI and <VnSI>.
! 	(addv64di3_zext_exec): Rename to ...
! 	(add<mode>3_zext_exec): ... this, and use V_DI and <VnSI>.
! 	(addv64di3_zext_dup): Rename to ...
! 	(add<mode>3_zext_dup): ... this, and use V_DI and <VnSI>.
! 	(addv64di3_zext_dup_exec): Rename to ...
! 	(add<mode>3_zext_dup_exec): ... this, and use V_DI and <VnSI>.
! 	(addv64di3_zext_dup2): Rename to ...
! 	(add<mode>3_zext_dup2): ... this, and use V_DI and <VnSI>.
! 	(addv64di3_zext_dup2_exec): Rename to ...
! 	(add<mode>3_zext_dup2_exec): ... this, and use V_DI and <VnSI>.
! 	(addv64di3_sext_dup2): Rename to ...
! 	(add<mode>3_sext_dup2): ... this, and use V_DI and <VnSI>.
! 	(addv64di3_sext_dup2_exec): Rename to ...
! 	(add<mode>3_sext_dup2_exec): ... this, and use V_DI and <VnSI>.
! 	(<su>mulv64si3_highpart<exec>): Rename to ...
! 	(<su>mul<mode>3_highpart<exec>): ... this and use V_SI and <VnDI>.
! 	(mulv64di3): Rename to ...
! 	(mul<mode>3): ... this, and use V_DI and <VnSI>.
! 	(mulv64di3_exec): Rename to ...
! 	(mul<mode>3_exec): ... this, and use V_DI and <VnSI>.
! 	(mulv64di3_zext): Rename to ...
! 	(mul<mode>3_zext): ... this, and use V_DI and <VnSI>.
! 	(mulv64di3_zext_exec): Rename to ...
! 	(mul<mode>3_zext_exec): ... this, and use V_DI and <VnSI>.
! 	(mulv64di3_zext_dup2): Rename to ...
! 	(mul<mode>3_zext_dup2): ... this, and use V_DI and <VnSI>.
! 	(mulv64di3_zext_dup2_exec): Rename to ...
! 	(mul<mode>3_zext_dup2_exec): ... this, and use V_DI and <VnSI>.
! 	(<expander>v64di3): Rename to ...
! 	(<expander><mode>3): ... this, and use V_DI and <VnSI>.
! 	(<expander>v64di3_exec): Rename to ...
! 	(<expander><mode>3_exec): ... this, and use V_DI and <VnSI>.
! 	(<expander>v64si3<exec>): Rename to ...
! 	(<expander><mode>3<exec>): ... this, and use V_SI and <VnSI>.
! 	(v<expander>v64si3<exec>): Rename to ...
! 	(v<expander><mode>3<exec>): ... this, and use V_SI and <VnSI>.
! 	(<expander>v64si3<exec>): Rename to ...
! 	(<expander><vnsi>3<exec>): ... this, and use V_SI.
! 	(subv64df3<exec>): Rename to ...
! 	(sub<mode>3<exec>): ... this, and use V_DF.
! 	(truncv64di<mode>2): Rename to ...
! 	(trunc<vndi><mode>2): ... this, and use <VnDI>.
! 	(truncv64di<mode>2_exec): Rename to ...
! 	(trunc<vndi><mode>2_exec): ... this, and use <VnDI>.
! 	(<convop><mode>v64di2): Rename to ...
! 	(<convop><mode><vndi>2): ... this, and use <VnDI>.
! 	(<convop><mode>v64di2_exec): Rename to ...
! 	(<convop><mode><vndi>2_exec): ... this, and use <VnDI>.
! 	(vec_cmp<u>v64qidi): Rename to ...
! 	(vec_cmp<u><mode>di): ... this, and use <VnSI>.
! 	(vec_cmp<u>v64qidi_exec): Rename to ...
! 	(vec_cmp<u><mode>di_exec): ... this, and use <VnSI>.
! 	(vcond_mask_<mode>di): Use <VnDI>.
! 	(maskload<mode>di): Likewise.
! 	(maskstore<mode>di): Likewise.
! 	(mask_gather_load<mode>v64si): Rename to ...
! 	(mask_gather_load<mode><vnsi>): ... this, and use <VnSI> and <VnDI>.
! 	(mask_scatter_store<mode>v64si): Rename to ...
! 	(mask_scatter_store<mode><vnsi>): ... this, and use <VnSI> and <VnDI>.
! 	(*<reduc_op>_dpp_shr_v64di): Rename to ...
! 	(*<reduc_op>_dpp_shr_<mode>): ... this, and use V_DI and <VnSI>.
! 	(*plus_carry_in_dpp_shr_v64si): Rename to ...
! 	(*plus_carry_in_dpp_shr_<mode>): ... this, and use V_SI.
! 	(*plus_carry_dpp_shr_v64di): Rename to ...
! 	(*plus_carry_dpp_shr_<mode>): ... this, and use V_DI and <VnSI>.
! 	(vec_seriesv64si): Rename to ...
! 	(vec_series<mode>): ... this, and use V_SI.
! 	(vec_seriesv64di): Rename to ...
! 	(vec_series<mode>): ... this, and use V_DI.
  
! 2020-03-31  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc.c (arc_print_operand): Use
! 	HOST_WIDE_INT_PRINT_DEC macro.
  
! 2020-03-31  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc.h (ASM_FORMAT_PRIVATE_NAME): Fix it.
  
! 2020-03-31  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* config/arm/arm_mve.h (vbicq): Define MVE intrinsic polymorphic
! 	variant.
! 	(__arm_vbicq): Likewise.
  
! 2020-03-31  Vineet Gupta <vgupta@synopsys.com>
  
! 	* config/arc/linux.h: GLIBC_DYNAMIC_LINKER support BE/arc700.
  
! 2020-03-31  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* config/arm/arm_mve.h (vaddlvq): Move the polymorphic variant to the
! 	common section of both MVE Integer and MVE Floating Point.
! 	(vaddvq): Likewise.
! 	(vaddlvq_p): Likewise.
! 	(vaddvaq): Likewise.
! 	(vaddvq_p): Likewise.
! 	(vcmpcsq): Likewise.
! 	(vmlsdavxq): Likewise.
! 	(vmlsdavq): Likewise.
! 	(vmladavxq): Likewise.
! 	(vmladavq): Likewise.
! 	(vminvq): Likewise.
! 	(vminavq): Likewise.
! 	(vmaxvq): Likewise.
! 	(vmaxavq): Likewise.
! 	(vmlaldavq): Likewise.
! 	(vcmphiq): Likewise.
! 	(vaddlvaq): Likewise.
! 	(vrmlaldavhq): Likewise.
! 	(vrmlaldavhxq): Likewise.
! 	(vrmlsldavhq): Likewise.
! 	(vrmlsldavhxq): Likewise.
! 	(vmlsldavxq): Likewise.
! 	(vmlsldavq): Likewise.
! 	(vabavq): Likewise.
! 	(vrmlaldavhaq): Likewise.
! 	(vcmpgeq_m_n): Likewise.
! 	(vmlsdavxq_p): Likewise.
! 	(vmlsdavq_p): Likewise.
! 	(vmlsdavaxq): Likewise.
! 	(vmlsdavaq): Likewise.
! 	(vaddvaq_p): Likewise.
! 	(vcmpcsq_m_n): Likewise.
! 	(vcmpcsq_m): Likewise.
! 	(vmladavxq_p): Likewise.
! 	(vmladavq_p): Likewise.
! 	(vmladavaxq): Likewise.
! 	(vmladavaq): Likewise.
! 	(vminvq_p): Likewise.
! 	(vminavq_p): Likewise.
! 	(vmaxvq_p): Likewise.
! 	(vmaxavq_p): Likewise.
! 	(vcmphiq_m): Likewise.
! 	(vaddlvaq_p): Likewise.
! 	(vmlaldavaq): Likewise.
! 	(vmlaldavaxq): Likewise.
! 	(vmlaldavq_p): Likewise.
! 	(vmlaldavxq_p): Likewise.
! 	(vmlsldavaq): Likewise.
! 	(vmlsldavaxq): Likewise.
! 	(vmlsldavq_p): Likewise.
! 	(vmlsldavxq_p): Likewise.
! 	(vrmlaldavhaxq): Likewise.
! 	(vrmlaldavhq_p): Likewise.
! 	(vrmlaldavhxq_p): Likewise.
! 	(vrmlsldavhaq): Likewise.
! 	(vrmlsldavhaxq): Likewise.
! 	(vrmlsldavhq_p): Likewise.
! 	(vrmlsldavhxq_p): Likewise.
! 	(vabavq_p): Likewise.
! 	(vmladavaq_p): Likewise.
! 	(vstrbq_scatter_offset): Likewise.
! 	(vstrbq_p): Likewise.
! 	(vstrbq_scatter_offset_p): Likewise.
! 	(vstrdq_scatter_base_p): Likewise.
! 	(vstrdq_scatter_base): Likewise.
! 	(vstrdq_scatter_offset_p): Likewise.
! 	(vstrdq_scatter_offset): Likewise.
! 	(vstrdq_scatter_shifted_offset_p): Likewise.
! 	(vstrdq_scatter_shifted_offset): Likewise.
! 	(vmaxq_x): Likewise.
! 	(vminq_x): Likewise.
! 	(vmovlbq_x): Likewise.
! 	(vmovltq_x): Likewise.
! 	(vmulhq_x): Likewise.
! 	(vmullbq_int_x): Likewise.
! 	(vmullbq_poly_x): Likewise.
! 	(vmulltq_int_x): Likewise.
! 	(vmulltq_poly_x): Likewise.
! 	(vstrbq): Likewise.
  
! 2020-03-31  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94368
! 	* config/aarch64/constraints.md (Uph): New constraint.
! 	* config/aarch64/atomics.md (cas_short_expected_imm): New mode attr.
! 	(@aarch64_compare_and_swap<mode>): Use it instead of n in operand 2's
! 	constraint.
  
! 2020-03-31  Marc Glisse  <marc.glisse@inria.fr>
! 	    Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/94412
! 	* fold-const.c (fold_binary_loc) <case TRUNC_DIV_EXPR>: Use
! 	ANY_INTEGRAL_TYPE_P instead of INTEGRAL_TYPE_P.
  
! 2020-03-31  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/94403
! 	* gimple-ssa-store-merging.c (verify_symbolic_number_p): Allow also
! 	ENUMERAL_TYPE lhs_type.
  
! 	PR rtl-optimization/94344
! 	* tree-ssa-forwprop.c (simplify_rotate): Handle also same precision
! 	conversions, either on both operands of |^+ or just one.  Handle
! 	also extra same precision conversion on RSHIFT_EXPR first operand
! 	provided RSHIFT_EXPR is performed in unsigned type.
  
! 2020-03-30  David Malcolm  <dmalcolm@redhat.com>
  
! 	* lra.c (finish_insn_code_data_once): Set the array elements
! 	to NULL after freeing them.
  
! 2020-03-30  Andreas Schwab  <schwab@suse.de>
  
! 	* config/host-linux.c (TRY_EMPTY_VM_SPACE) [__riscv && __LP64__]:
  	Define.
  
! 2020-03-30  Will Schmidt  <will_schmidt@vnet.ibm.com>
! 
! 	* config/rs6000/rs6000-call.c altivec_init_builtins(): Remove code
! 	to skip defining builtins based on builtin_mask.
! 
! 2020-03-30  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/94343
! 	* config/i386/sse.md (<mask_codefor>one_cmpl<mode>2<mask_name>): If
! 	!TARGET_AVX512VL, use 512-bit vpternlog and make sure the input
! 	operand is a register.  Don't enable masked variants for V*[QH]Imode.
! 
! 	PR target/93069
! 	* config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Use
! 	<store_mask_constraint> instead of m in output operand constraint.
! 	(vec_extract_hi_<mode><mask_name>): Use <mask_operand2> instead of
! 	%{%3%}.
! 
! 2020-03-30  Alan Modra  <amodra@gmail.com>
! 
! 	* config/rs6000/rs6000.c (rs6000_call_aix): Emit cookie to pattern.
! 	(rs6000_indirect_call_template_1): Adjust to suit.
! 	* config/rs6000/rs6000.md (call_local): Merge call_local32,
! 	call_local64, and call_local_aix.
! 	(call_value_local): Simlarly.
! 	(call_nonlocal_aix, call_value_nonlocal_aix): Adjust rtl to suit,
! 	and disable pattern when CALL_LONG.
! 	(call_indirect_aix, call_value_indirect_aix): Adjust rtl.
! 	(call_indirect_elfv2, call_indirect_pcrel): Likewise.
! 	(call_value_indirect_elfv2, call_value_indirect_pcrel): Likewise.
! 
! 2020-03-29  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	PR driver/94381
! 	* doc/invoke.texi: Update -falign-functions, -falign-loops and
! 	-falign-jumps documentation.
! 
! 2020-03-29  Martin Liska  <mliska@suse.cz>
! 
! 	PR ipa/94363
! 	* cgraphunit.c (process_function_and_variable_attributes): Remove
! 	double 'attribute' words.
! 
! 2020-03-29  John David Anglin  <dave.anglin@bell.net>
! 
! 	* gcc/config/pa/pa.c (pa_asm_output_aligned_bss): Delete duplicate
! 	.align output.
! 
! 2020-03-28  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/93573
! 	* c-decl.c (grokdeclarator): After issuing errors, set size_int_const
! 	to true after setting size to integer_one_node.
! 
! 	PR tree-optimization/94329
! 	* tree-ssa-reassoc.c (reassociate_bb): When calling reassoc_remove_stmt
! 	on the last stmt in a bb, make sure gsi_prev isn't done immediately
! 	after gsi_last_bb.
! 
! 2020-03-27  Alan Modra  <amodra@gmail.com>
! 
! 	PR target/94145
! 	* config/rs6000/rs6000.c (rs6000_longcall_ref): Use unspec_volatile
! 	for PLT16_LO and PLT_PCREL.
! 	* config/rs6000/rs6000.md (UNSPEC_PLT16_LO, UNSPEC_PLT_PCREL): Remove.
! 	(UNSPECV_PLT16_LO, UNSPECV_PLT_PCREL): Define.
! 	(pltseq_plt16_lo_, pltseq_plt_pcrel): Use unspec_volatile.
! 
! 2020-03-27  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c++/94098
! 	* calls.c (init_attr_rdwr_indices): Iterate over all access attributes.
! 
! 2020-03-27  Andrew Stubbs  <ams@codesourcery.com>
! 
! 	* config/gcn/gcn-valu.md:
! 	(VEC_SUBDWORD_MODE): Rename to V_QIHI throughout.
! 	(VEC_1REG_MODE): Delete.
! 	(VEC_1REG_ALT): Delete.
! 	(VEC_ALL1REG_MODE): Rename to V_1REG throughout.
! 	(VEC_1REG_INT_MODE): Delete.
! 	(VEC_ALL1REG_INT_MODE): Rename to V_INT_1REG throughout.
! 	(VEC_ALL1REG_INT_ALT): Rename to V_INT_1REG_ALT throughout.
! 	(VEC_2REG_MODE): Rename to V_2REG throughout.
! 	(VEC_REG_MODE): Rename to V_noHI throughout.
! 	(VEC_ALLREG_MODE): Rename to V_ALL throughout.
! 	(VEC_ALLREG_ALT):  Rename to V_ALL_ALT throughout.
! 	(VEC_ALLREG_INT_MODE): Rename to V_INT throughout.
! 	(VEC_INT_MODE): Delete.
! 	(VEC_FP_MODE): Rename to V_FP throughout and move to top.
! 	(VEC_FP_1REG_MODE): Rename to V_FP_1REG throughout and move to top.
! 	(FP_MODE): Delete and replace with FP throughout.
! 	(FP_1REG_MODE): Delete and replace with FP_1REG throughout.
! 	(VCMP_MODE): Rename to V_noQI throughout and move to top.
! 	(VCMP_MODE_INT): Rename to V_INT_noQI throughout and move to top.
! 	* config/gcn/gcn.md (FP): New mode iterator.
! 	(FP_1REG): New mode iterator.
! 
! 2020-03-27  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* doc/invoke.texi (-fdump-analyzer-supergraph): Document that this
! 	now emits two .dot files.
! 	* graphviz.cc (graphviz_out::begin_tr): Only emit a TR, not a TD.
! 	(graphviz_out::end_tr): Only close a TR, not a TD.
! 	(graphviz_out::begin_td): New.
! 	(graphviz_out::end_td): New.
! 	(graphviz_out::begin_trtd): New, replacing the old implementation
! 	of graphviz_out::begin_tr.
! 	(graphviz_out::end_tdtr): New, replacing the old implementation
! 	of graphviz_out::end_tr.
! 	* graphviz.h (graphviz_out::begin_td): New decl.
! 	(graphviz_out::end_td): New decl.
! 	(graphviz_out::begin_trtd): New decl.
! 	(graphviz_out::end_tdtr): New decl.
! 
! 2020-03-27  Richard Biener  <rguenther@suse.de>
! 
! 	PR debug/94273
! 	* dwarf2out.c (should_emit_struct_debug): Return false for
! 	DINFO_LEVEL_TERSE.
! 
! 2020-03-27  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/94352
! 	* tree-ssa-propagate.c (ssa_prop_init): Move seeding of the
! 	worklist ...
! 	(ssa_propagation_engine::ssa_propagate): ... here after
! 	initializing curr_order.
! 
! 2020-03-27  Kewen Lin  <linkw@gcc.gnu.org>
! 
! 	PR tree-optimization/90332
! 	* tree-vect-stmts.c (vector_vector_composition_type): New function.
! 	(get_group_load_store_type): Adjust to call
! 	vector_vector_composition_type, extend it to construct with scalar
! 	types.
! 	(vectorizable_load): Likewise.
! 
! 2020-03-27  Roman Zhuykov  <zhroma@ispras.ru>
! 
! 	* ddg.c (create_ddg_dep_from_intra_loop_link): Remove assertions.
! 	(create_ddg_dep_no_link): Likewise.
! 	(add_cross_iteration_register_deps): Move debug instruction check.
! 	Other minor refactoring.
! 	(add_intra_loop_mem_dep): Do not check for debug instructions.
! 	(add_inter_loop_mem_dep): Likewise.
! 	(build_intra_loop_deps): Likewise.
! 	(create_ddg): Do not include debug insns into the graph.
! 	* ddg.h (struct ddg): Remove num_debug field.
! 	* modulo-sched.c (doloop_register_get): Adjust condition.
! 	(res_MII): Remove DDG num_debug field usage.
! 	(sms_schedule_by_order): Use assertion against debug insns.
! 	(ps_has_conflicts): Drop debug insn check.
! 
! 2020-03-26  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR debug/94323
! 	* tree.c (protected_set_expr_location): Recurse on STATEMENT_LIST
! 	that contains exactly one non-DEBUG_BEGIN_STMT statement.
! 
! 	PR debug/94281
! 	* gimple.h (gimple_seq_first_nondebug_stmt): New function.
! 	(gimple_seq_last_nondebug_stmt): Don't return NULL if seq contains
! 	a single non-debug stmt followed by one or more debug stmts.
! 	* gimplify.c (gimplify_body): Use gimple_seq_first_nondebug_stmt
! 	instead of gimple_seq_first_stmt, use gimple_seq_first_nondebug_stmt
! 	and gimple_seq_last_nondebug_stmt instead of gimple_seq_first and
! 	gimple_seq_last to check if outer_stmt gbind could be reused and
! 	if yes and it is surrounded by any debug stmts, move them into the
! 	gbind body.
! 
! 	PR rtl-optimization/92264
! 	* var-tracking.c (add_stores): Call cselib_set_value_sp_based even
! 	for sp based values in !frame_pointer_needed
! 	&& !ACCUMULATE_OUTGOING_ARGS functions.
  
! 2020-03-26  Felix Yang  <felix.yang@huawei.com>
  
! 	PR tree-optimization/94269
! 	* tree-ssa-math-opts.c (convert_plusminus_to_widen): Restrict
! 	this
! 	operation to single basic block.
  
! 2020-03-25  Jeff Law  <law@redhat.com>
  
! 	PR rtl-optimization/90275
! 	* config/sh/sh.md (mov_neg_si_t): Clobber the T register in the
! 	pattern.
  
! 2020-03-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94292
! 	* config/arm/arm.c (arm_gen_dicompare_reg): Set mode of COMPARE to
! 	mode rather than VOIDmode.
  
! 2020-03-25  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/94004
! 	* gimple-ssa-warn-alloca.c (pass_walloca::execute): Issue warnings
! 	even for alloca calls resulting from system macro expansion.
! 	Include inlining context in all warnings.
  
! 2020-03-25  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/94254
! 	* config/rs6000/rs6000.c (rs6000_can_change_mode_class): Allow
! 	FPRs to change between SDmode and DDmode.
  
! 2020-03-25  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/94131
! 	* gimple-fold.c (get_range_strlen_tree): Fail for variable-length
! 	types and decls.
! 	* tree-ssa-strlen.c (get_range_strlen_dynamic): Avoid assuming
! 	types have constant sizes.
  
! 2020-03-25  Martin Liska  <mliska@suse.cz>
  
! 	PR lto/94259
! 	* configure.ac: Report error only when --with-zstd
! 	is used.
! 	* configure: Regenerate.
  
! 2020-03-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94308
! 	* config/i386/i386-features.c (ix86_add_reg_usage_to_vzeroupper): Set
! 	INSN_CODE (insn) to -1 when changing the pattern.
  
! 2020-03-25  Martin Liska  <mliska@suse.cz>
  
! 	PR target/93274
! 	PR ipa/94271
! 	* config/i386/i386-features.c (make_resolver_func): Drop
! 	public flag for resolver.
! 	* config/rs6000/rs6000.c (make_resolver_func): Add comdat
! 	group for resolver and drop public flag if possible.
! 	* multiple_target.c (create_dispatcher_calls): Drop unique_name
! 	and resolution as we want to enable LTO privatization of the default
! 	symbol.
  
! 2020-03-25  Martin Liska  <mliska@suse.cz>
  
! 	PR lto/94259
! 	* configure.ac: Respect --without-zstd and report
! 	error when we can't find header file with --with-zstd.
! 	* configure: Regenerate.
  
! 2020-03-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/94303
! 	* varasm.c (output_constructor_array_range): If local->index
! 	RANGE_EXPR doesn't start at the current location in the constructor,
! 	skip needed number of bytes using assemble_zeros or assert we don't
! 	go backwards.
  
! 	PR c++/94223
! 	* langhooks.c (lhd_set_decl_assembler_name): Use a static ulong
! 	counter instead of DECL_UID.
  
! 	PR tree-optimization/94300
! 	* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): If pd.offset
! 	is positive, make sure that off + size isn't larger than needed_len.
  
! 2020-03-25  Richard Biener  <rguenther@suse.de>
! 	    Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/94283
! 	* tree-if-conv.c (ifcvt_local_dce): Delete dead statements backwards.
  
! 2020-03-24  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	* doc/sourcebuild.texi (ARM-specific attributes): Add
! 	arm_fp_dp_ok.
! 	(Features for dg-add-options): Add arm_fp_dp.
  
! 2020-03-24  John David Anglin  <danglin@gcc.gnu.org>
  
! 	PR lto/94249
! 	* config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Define __BIG_ENDIAN__.
  
! 2020-03-24  Tobias Burnus  <tobias@codesourcery.com>
  
! 	PR libgomp/81689
! 	* omp-offload.c (omp_finish_file): Fix target-link handling if
! 	targetm_common.have_named_sections is false.
  
! 2020-03-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/94286
! 	* config/arm/arm.md (subvdi4, usubvsi4, usubvdi4): Use gen_int_mode
! 	instead of GEN_INT.
  
! 	PR debug/94285
! 	* tree-ssa-loop-manip.c (create_iv): If after, set stmt location to
! 	e->goto_locus even if gsi_bb (*incr_pos) contains only debug stmts.
! 	If not after and at *incr_pos is a debug stmt, set stmt location to
! 	location of next non-debug stmt after it if any.
  
! 	PR debug/94283
! 	* tree-if-conv.c (ifcvt_local_dce): For gimple debug stmts, just set
! 	GF_PLF_2, but don't add them to worklist.  Don't add an assigment to
! 	worklist or set GF_PLF_2 just because it is used in a debug stmt in
! 	another bb.  Formatting improvements.
  
! 	PR debug/94277
! 	* cgraphunit.c (check_global_declaration): For DECL_EXTERNAL and
! 	non-TREE_PUBLIC non-DECL_ARTIFICIAL FUNCTION_DECLs, set TREE_PUBLIC
! 	regardless of whether TREE_NO_WARNING is set on it or whether
! 	warn_unused_function is true or not.
  
! 2020-03-23  Jeff Law  <law@redhat.com>
  
! 	PR rtl-optimization/90275
! 	PR target/94238
! 	PR target/94144
! 	* simplify-rtx.c (comparison_code_valid_for_mode): New function.
! 	(simplify_logical_relational_operation): Use it.
  
! 2020-03-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/91993
! 	* tree.c (get_narrower): Handle COMPOUND_EXPR by recursing on
! 	ultimate rhs and if returned something different, reconstructing
! 	the COMPOUND_EXPRs.
  
! 2020-03-23  Lewis Hyatt  <lhyatt@gmail.com>
  
! 	* opts.c (print_filtered_help): Improve the help text for alias options.
  
! 2020-03-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
!             Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
  
! 	* config/arm/arm_mve.h (vshlcq_m_s8): Define macro.
! 	(vshlcq_m_u8): Likewise.
! 	(vshlcq_m_s16): Likewise.
! 	(vshlcq_m_u16): Likewise.
! 	(vshlcq_m_s32): Likewise.
! 	(vshlcq_m_u32): Likewise.
! 	(__arm_vshlcq_m_s8): Define intrinsic.
! 	(__arm_vshlcq_m_u8): Likewise.
! 	(__arm_vshlcq_m_s16): Likewise.
! 	(__arm_vshlcq_m_u16): Likewise.
! 	(__arm_vshlcq_m_s32): Likewise.
! 	(__arm_vshlcq_m_u32): Likewise.
! 	(vshlcq_m): Define polymorphic variant.
! 	* config/arm/arm_mve_builtins.def (QUADOP_NONE_NONE_UNONE_IMM_UNONE):
! 	Use builtin qualifier.
! 	(QUADOP_UNONE_UNONE_UNONE_IMM_UNONE): Likewise.
! 	* config/arm/mve.md (mve_vshlcq_m_vec_<supf><mode>): Define RTL pattern.
! 	(mve_vshlcq_m_carry_<supf><mode>): Likewise.
! 	(mve_vshlcq_m_<supf><mode>): Likewise.
  
! 2020-03-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* config/arm/arm-builtins.c (LSLL_QUALIFIERS): Define builtin qualifier.
! 	(UQSHL_QUALIFIERS): Likewise.
! 	(ASRL_QUALIFIERS): Likewise.
! 	(SQSHL_QUALIFIERS): Likewise.
! 	* config/arm/arm_mve.h (__ARM_BIG_ENDIAN): Check to not support MVE in
! 	Big-Endian Mode.
! 	(sqrshr): Define macro.
! 	(sqrshrl): Likewise.
! 	(sqrshrl_sat48): Likewise.
! 	(sqshl): Likewise.
! 	(sqshll): Likewise.
! 	(srshr): Likewise.
! 	(srshrl): Likewise.
! 	(uqrshl): Likewise.
! 	(uqrshll): Likewise.
! 	(uqrshll_sat48): Likewise.
! 	(uqshl): Likewise.
! 	(uqshll): Likewise.
! 	(urshr): Likewise.
! 	(urshrl): Likewise.
! 	(lsll): Likewise.
! 	(asrl): Likewise.
! 	(__arm_lsll): Define intrinsic.
! 	(__arm_asrl): Likewise.
! 	(__arm_uqrshll): Likewise.
! 	(__arm_uqrshll_sat48): Likewise.
! 	(__arm_sqrshrl): Likewise.
! 	(__arm_sqrshrl_sat48): Likewise.
! 	(__arm_uqshll): Likewise.
! 	(__arm_urshrl): Likewise.
! 	(__arm_srshrl): Likewise.
! 	(__arm_sqshll): Likewise.
! 	(__arm_uqrshl): Likewise.
! 	(__arm_sqrshr): Likewise.
! 	(__arm_uqshl): Likewise.
! 	(__arm_urshr): Likewise.
! 	(__arm_sqshl): Likewise.
! 	(__arm_srshr): Likewise.
! 	* config/arm/arm_mve_builtins.def (LSLL_QUALIFIERS): Use builtin
! 	qualifier.
! 	(UQSHL_QUALIFIERS): Likewise.
! 	(ASRL_QUALIFIERS): Likewise.
! 	(SQSHL_QUALIFIERS): Likewise.
! 	* config/arm/mve.md (mve_uqrshll_sat<supf>_di): Define RTL pattern.
! 	(mve_sqrshrl_sat<supf>_di): Likewise.
! 	(mve_uqrshl_si): Likewise.
! 	(mve_sqrshr_si): Likewise.
! 	(mve_uqshll_di): Likewise.
! 	(mve_urshrl_di): Likewise.
! 	(mve_uqshl_si): Likewise.
! 	(mve_urshr_si): Likewise.
! 	(mve_sqshl_si): Likewise.
! 	(mve_srshr_si): Likewise.
! 	(mve_srshrl_di): Likewise.
! 	(mve_sqshll_di): Likewise.
  
! 2020-03-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
!             Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
  
! 	* config/arm/arm_mve.h (vsetq_lane_f16): Define macro.
! 	(vsetq_lane_f32): Likewise.
! 	(vsetq_lane_s16): Likewise.
! 	(vsetq_lane_s32): Likewise.
! 	(vsetq_lane_s8): Likewise.
! 	(vsetq_lane_s64): Likewise.
! 	(vsetq_lane_u8): Likewise.
! 	(vsetq_lane_u16): Likewise.
! 	(vsetq_lane_u32): Likewise.
! 	(vsetq_lane_u64): Likewise.
! 	(vgetq_lane_f16): Likewise.
! 	(vgetq_lane_f32): Likewise.
! 	(vgetq_lane_s16): Likewise.
! 	(vgetq_lane_s32): Likewise.
! 	(vgetq_lane_s8): Likewise.
! 	(vgetq_lane_s64): Likewise.
! 	(vgetq_lane_u8): Likewise.
! 	(vgetq_lane_u16): Likewise.
! 	(vgetq_lane_u32): Likewise.
! 	(vgetq_lane_u64): Likewise.
! 	(__ARM_NUM_LANES): Likewise.
! 	(__ARM_LANEQ): Likewise.
! 	(__ARM_CHECK_LANEQ): Likewise.
! 	(__arm_vsetq_lane_s16): Define intrinsic.
! 	(__arm_vsetq_lane_s32): Likewise.
! 	(__arm_vsetq_lane_s8): Likewise.
! 	(__arm_vsetq_lane_s64): Likewise.
! 	(__arm_vsetq_lane_u8): Likewise.
! 	(__arm_vsetq_lane_u16): Likewise.
! 	(__arm_vsetq_lane_u32): Likewise.
! 	(__arm_vsetq_lane_u64): Likewise.
! 	(__arm_vgetq_lane_s16): Likewise.
! 	(__arm_vgetq_lane_s32): Likewise.
! 	(__arm_vgetq_lane_s8): Likewise.
! 	(__arm_vgetq_lane_s64): Likewise.
! 	(__arm_vgetq_lane_u8): Likewise.
! 	(__arm_vgetq_lane_u16): Likewise.
! 	(__arm_vgetq_lane_u32): Likewise.
! 	(__arm_vgetq_lane_u64): Likewise.
! 	(__arm_vsetq_lane_f16): Likewise.
! 	(__arm_vsetq_lane_f32): Likewise.
! 	(__arm_vgetq_lane_f16): Likewise.
! 	(__arm_vgetq_lane_f32): Likewise.
! 	(vgetq_lane): Define polymorphic variant.
! 	(vsetq_lane): Likewise.
! 	* config/arm/mve.md (mve_vec_extract<mode><V_elem_l>): Define RTL
  	pattern.
! 	(mve_vec_extractv2didi): Likewise.
! 	(mve_vec_extract_sext_internal<mode>): Likewise.
! 	(mve_vec_extract_zext_internal<mode>): Likewise.
! 	(mve_vec_set<mode>_internal): Likewise.
! 	(mve_vec_setv2di_internal): Likewise.
! 	* config/arm/neon.md (vec_set<mode>): Move RTL pattern to vec-common.md
! 	file.
! 	(vec_extract<mode><V_elem_l>): Rename to
! 	"neon_vec_extract<mode><V_elem_l>".
! 	(vec_extractv2didi): Rename to "neon_vec_extractv2didi".
! 	* config/arm/vec-common.md (vec_extract<mode><V_elem_l>): Define RTL
! 	pattern common for MVE and NEON.
! 	(vec_set<mode>): Move RTL pattern from neon.md and modify to accept both
! 	MVE and NEON.
! 
! 2020-03-23  Andre Vieira  <andre.simoesdiasvieira@arm.com>
! 
! 	* config/arm/mve.md (earlyclobber_32): New mode attribute.
! 	(mve_vrev64q_*, mve_vcaddq*, mve_vhcaddq_*, mve_vcmulq_*,
! 	 mve_vmull[bt]q_*, mve_vqdmull[bt]q_*): Add appropriate early clobbers.
! 
! 2020-03-23  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/94261
! 	* tree-vect-slp.c (vect_get_and_check_slp_defs): Remove
! 	IL operand swapping code.
! 	(vect_slp_rearrange_stmts): Do not arrange isomorphic
! 	nodes that would need operation code adjustments.
  
! 2020-03-23  Tobias Burnus  <tobias@codesourcery.com>
  
! 	* doc/install.texi (amdgcn-*-amdhsa): Renamed
! 	from amdgcn-unknown-amdhsa; change
! 	amdgcn-unknown-amdhsa to amdgcn-amdhsa.
  
! 2020-03-23  Richard Biener  <rguenther@suse.de>
  
! 	PR ipa/94245
! 	* ipa-prop.c (ipa_read_jump_function): Build the ADDR_EXRP
! 	directly rather than also folding it via build_fold_addr_expr.
  
! 2020-03-23  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/94266
! 	* tree-ssa-forwprop.c (pass_forwprop::execute): Do not propagate
! 	addresses of TARGET_MEM_REFs.
  
! 2020-03-23  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/94250
! 	* symtab.c (symtab_node::clone_references): Save speculative_id
! 	as ref may be overwritten by create_reference.
! 	(symtab_node::clone_referring): Likewise.
! 	(symtab_node::clone_reference): Likewise.
  
! 2020-03-22  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* config/i386/darwin.h (JUMP_TABLES_IN_TEXT_SECTION): Remove
! 	references to Darwin.
! 	* config/i386/i386.h (JUMP_TABLES_IN_TEXT_SECTION): Define this
! 	unconditionally and comment on why.
  
! 2020-03-21 Iain Sandoe <iain@sandoe.co.uk>
  
! 	* config/darwin.c (darwin_mergeable_constant_section): Collect
! 	section anchor checks into the caller.
! 	(machopic_select_section): Collect section anchor checks into
! 	the determination of 'effective zero-size' objects. When the
! 	size is unknown, assume it is non-zero, and thus return the
! 	'generic' section for the DECL.
  
! 2020-03-21 Iain Sandoe <iain@sandoe.co.uk>
  
! 	PR target/93694
! 	* gcc/config/darwin.opt: Amend options descriptions.
  
! 2020-03-21  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/94052
! 	* lra-constraints.c (simplify_operand_subreg): Reload the inner
! 	register of a paradoxical subreg if simplify_subreg_regno fails
! 	to give a valid hard register for the outer mode.
  
! 2020-03-20  Martin Jambor  <mjambor@suse.cz>
  
! 	PR tree-optimization/93435
! 	* params.opt (sra-max-propagations): New parameter.
! 	* tree-sra.c (propagation_budget): New variable.
! 	(budget_for_propagation_access): New function.
! 	(propagate_subaccesses_from_rhs): Use it.
! 	(propagate_subaccesses_from_lhs): Likewise.
! 	(propagate_all_subaccesses): Set up and destroy propagation_budget.
  
! 2020-03-20  Carl Love  <cel@us.ibm.com>
  
! 	PR/target 87583
! 	* gcc/config/rs6000/rs6000.c (rs6000_option_override_internal):
! 	Add check for TARGET_FPRND for Power 7 or newer.
  
! 2020-03-20  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR ipa/93347
! 	* cgraph.c (symbol_table::create_edge): Update calls_comdat_local flag.
! 	(cgraph_edge::redirect_callee): Move here; likewise.
! 	(cgraph_node::remove_callees): Update calls_comdat_local flag.
! 	(cgraph_node::verify_node): Verify that calls_comdat_local flag match
! 	reality.
! 	(cgraph_node::check_calls_comdat_local_p): New member function.
! 	* cgraph.h (cgraph_node::check_calls_comdat_local_p): Declare.
! 	(cgraph_edge::redirect_callee): Move offline.
! 	* ipa-fnsummary.c (compute_fn_summary): Do not compute
! 	calls_comdat_local flag here.
! 	* ipa-inline-transform.c (inline_call): Fix updating of
! 	calls_comdat_local flag.
! 	* ipa-split.c (split_function): Use true instead of 1 to set the flag.
! 	* symtab.c (symtab_node::add_to_same_comdat_group): Update
! 	calls_comdat_local flag.
  
! 2020-03-20  Richard Biener  <rguenther@suse.de>
  
! 	* tree-vect-slp.c (vect_analyze_slp_instance): Dump SLP tree
! 	from the possibly modified root.
  
! 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
!             Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
  
! 	* config/arm/arm_mve.h (vst1q_p_u8): Define macro.
! 	(vst1q_p_s8): Likewise.
! 	(vst2q_s8): Likewise.
! 	(vst2q_u8): Likewise.
! 	(vld1q_z_u8): Likewise.
! 	(vld1q_z_s8): Likewise.
! 	(vld2q_s8): Likewise.
! 	(vld2q_u8): Likewise.
! 	(vld4q_s8): Likewise.
! 	(vld4q_u8): Likewise.
! 	(vst1q_p_u16): Likewise.
! 	(vst1q_p_s16): Likewise.
! 	(vst2q_s16): Likewise.
! 	(vst2q_u16): Likewise.
! 	(vld1q_z_u16): Likewise.
! 	(vld1q_z_s16): Likewise.
! 	(vld2q_s16): Likewise.
! 	(vld2q_u16): Likewise.
! 	(vld4q_s16): Likewise.
! 	(vld4q_u16): Likewise.
! 	(vst1q_p_u32): Likewise.
! 	(vst1q_p_s32): Likewise.
! 	(vst2q_s32): Likewise.
! 	(vst2q_u32): Likewise.
! 	(vld1q_z_u32): Likewise.
! 	(vld1q_z_s32): Likewise.
! 	(vld2q_s32): Likewise.
! 	(vld2q_u32): Likewise.
! 	(vld4q_s32): Likewise.
! 	(vld4q_u32): Likewise.
! 	(vld4q_f16): Likewise.
! 	(vld2q_f16): Likewise.
! 	(vld1q_z_f16): Likewise.
! 	(vst2q_f16): Likewise.
! 	(vst1q_p_f16): Likewise.
! 	(vld4q_f32): Likewise.
! 	(vld2q_f32): Likewise.
! 	(vld1q_z_f32): Likewise.
! 	(vst2q_f32): Likewise.
! 	(vst1q_p_f32): Likewise.
! 	(__arm_vst1q_p_u8): Define intrinsic.
! 	(__arm_vst1q_p_s8): Likewise.
! 	(__arm_vst2q_s8): Likewise.
! 	(__arm_vst2q_u8): Likewise.
! 	(__arm_vld1q_z_u8): Likewise.
! 	(__arm_vld1q_z_s8): Likewise.
! 	(__arm_vld2q_s8): Likewise.
! 	(__arm_vld2q_u8): Likewise.
! 	(__arm_vld4q_s8): Likewise.
! 	(__arm_vld4q_u8): Likewise.
! 	(__arm_vst1q_p_u16): Likewise.
! 	(__arm_vst1q_p_s16): Likewise.
! 	(__arm_vst2q_s16): Likewise.
! 	(__arm_vst2q_u16): Likewise.
! 	(__arm_vld1q_z_u16): Likewise.
! 	(__arm_vld1q_z_s16): Likewise.
! 	(__arm_vld2q_s16): Likewise.
! 	(__arm_vld2q_u16): Likewise.
! 	(__arm_vld4q_s16): Likewise.
! 	(__arm_vld4q_u16): Likewise.
! 	(__arm_vst1q_p_u32): Likewise.
! 	(__arm_vst1q_p_s32): Likewise.
! 	(__arm_vst2q_s32): Likewise.
! 	(__arm_vst2q_u32): Likewise.
! 	(__arm_vld1q_z_u32): Likewise.
! 	(__arm_vld1q_z_s32): Likewise.
! 	(__arm_vld2q_s32): Likewise.
! 	(__arm_vld2q_u32): Likewise.
! 	(__arm_vld4q_s32): Likewise.
! 	(__arm_vld4q_u32): Likewise.
! 	(__arm_vld4q_f16): Likewise.
! 	(__arm_vld2q_f16): Likewise.
! 	(__arm_vld1q_z_f16): Likewise.
! 	(__arm_vst2q_f16): Likewise.
! 	(__arm_vst1q_p_f16): Likewise.
! 	(__arm_vld4q_f32): Likewise.
! 	(__arm_vld2q_f32): Likewise.
! 	(__arm_vld1q_z_f32): Likewise.
! 	(__arm_vst2q_f32): Likewise.
! 	(__arm_vst1q_p_f32): Likewise.
! 	(vld1q_z): Define polymorphic variant.
! 	(vld2q): Likewise.
! 	(vld4q): Likewise.
! 	(vst1q_p): Likewise.
! 	(vst2q): Likewise.
! 	* config/arm/arm_mve_builtins.def (STORE1): Use builtin qualifier.
! 	(LOAD1): Likewise.
! 	* config/arm/mve.md (mve_vst2q<mode>): Define RTL pattern.
! 	(mve_vld2q<mode>): Likewise.
! 	(mve_vld4q<mode>): Likewise.
  
! 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
!             Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
  
! 	* config/arm/arm-builtins.c (ARM_BUILTIN_GET_FPSCR_NZCVQC): Define.
! 	(ARM_BUILTIN_SET_FPSCR_NZCVQC): Likewise.	
! 	(arm_init_mve_builtins): Add "__builtin_arm_get_fpscr_nzcvqc" and
! 	"__builtin_arm_set_fpscr_nzcvqc" to arm_builtin_decls array. 
! 	(arm_expand_builtin): Define case ARM_BUILTIN_GET_FPSCR_NZCVQC
! 	and ARM_BUILTIN_SET_FPSCR_NZCVQC.
! 	* config/arm/arm_mve.h (vadciq_s32): Define macro.
! 	(vadciq_u32): Likewise.
! 	(vadciq_m_s32): Likewise.
! 	(vadciq_m_u32): Likewise.
! 	(vadcq_s32): Likewise.
! 	(vadcq_u32): Likewise.
! 	(vadcq_m_s32): Likewise.
! 	(vadcq_m_u32): Likewise.
! 	(vsbciq_s32): Likewise.
! 	(vsbciq_u32): Likewise.
! 	(vsbciq_m_s32): Likewise.
! 	(vsbciq_m_u32): Likewise.
! 	(vsbcq_s32): Likewise.
! 	(vsbcq_u32): Likewise.
! 	(vsbcq_m_s32): Likewise.
! 	(vsbcq_m_u32): Likewise.
! 	(__arm_vadciq_s32): Define intrinsic.
! 	(__arm_vadciq_u32): Likewise.
! 	(__arm_vadciq_m_s32): Likewise.
! 	(__arm_vadciq_m_u32): Likewise.
! 	(__arm_vadcq_s32): Likewise.
! 	(__arm_vadcq_u32): Likewise.
! 	(__arm_vadcq_m_s32): Likewise.
! 	(__arm_vadcq_m_u32): Likewise.
! 	(__arm_vsbciq_s32): Likewise.
! 	(__arm_vsbciq_u32): Likewise.
! 	(__arm_vsbciq_m_s32): Likewise.
! 	(__arm_vsbciq_m_u32): Likewise.
! 	(__arm_vsbcq_s32): Likewise.
! 	(__arm_vsbcq_u32): Likewise.
! 	(__arm_vsbcq_m_s32): Likewise.
! 	(__arm_vsbcq_m_u32): Likewise.
! 	(vadciq_m): Define polymorphic variant.
! 	(vadciq): Likewise.
! 	(vadcq_m): Likewise.
! 	(vadcq): Likewise.
! 	(vsbciq_m): Likewise.
! 	(vsbciq): Likewise.
! 	(vsbcq_m): Likewise.
! 	(vsbcq): Likewise.
! 	* config/arm/arm_mve_builtins.def (BINOP_NONE_NONE_NONE): Use builtin
! 	qualifier.
! 	(BINOP_UNONE_UNONE_UNONE): Likewise.
! 	(QUADOP_NONE_NONE_NONE_NONE_UNONE): Likewise.
! 	(QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE): Likewise.
! 	* config/arm/mve.md (VADCIQ): Define iterator.
! 	(VADCIQ_M): Likewise.
! 	(VSBCQ): Likewise.
! 	(VSBCQ_M): Likewise.
! 	(VSBCIQ): Likewise.
! 	(VSBCIQ_M): Likewise.
! 	(VADCQ): Likewise.
! 	(VADCQ_M): Likewise.
! 	(mve_vadciq_m_<supf>v4si): Define RTL pattern.
! 	(mve_vadciq_<supf>v4si): Likewise.
! 	(mve_vadcq_m_<supf>v4si): Likewise.
! 	(mve_vadcq_<supf>v4si): Likewise.
! 	(mve_vsbciq_m_<supf>v4si): Likewise.
! 	(mve_vsbciq_<supf>v4si): Likewise.
! 	(mve_vsbcq_m_<supf>v4si): Likewise.
! 	(mve_vsbcq_<supf>v4si): Likewise.
! 	(get_fpscr_nzcvqc): Define isns.
! 	(set_fpscr_nzcvqc): Define isns.
! 	* config/arm/unspecs.md (UNSPEC_GET_FPSCR_NZCVQC): Define.
! 	(UNSPEC_SET_FPSCR_NZCVQC): Define.
  
! 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* config/arm/arm_mve.h (vddupq_x_n_u8): Define macro.
! 	(vddupq_x_n_u16): Likewise.
! 	(vddupq_x_n_u32): Likewise.
! 	(vddupq_x_wb_u8): Likewise.
! 	(vddupq_x_wb_u16): Likewise.
! 	(vddupq_x_wb_u32): Likewise.
! 	(vdwdupq_x_n_u8): Likewise.
! 	(vdwdupq_x_n_u16): Likewise.
! 	(vdwdupq_x_n_u32): Likewise.
! 	(vdwdupq_x_wb_u8): Likewise.
! 	(vdwdupq_x_wb_u16): Likewise.
! 	(vdwdupq_x_wb_u32): Likewise.
! 	(vidupq_x_n_u8): Likewise.
! 	(vidupq_x_n_u16): Likewise.
! 	(vidupq_x_n_u32): Likewise.
! 	(vidupq_x_wb_u8): Likewise.
! 	(vidupq_x_wb_u16): Likewise.
! 	(vidupq_x_wb_u32): Likewise.
! 	(viwdupq_x_n_u8): Likewise.
! 	(viwdupq_x_n_u16): Likewise.
! 	(viwdupq_x_n_u32): Likewise.
! 	(viwdupq_x_wb_u8): Likewise.
! 	(viwdupq_x_wb_u16): Likewise.
! 	(viwdupq_x_wb_u32): Likewise.
! 	(vdupq_x_n_s8): Likewise.
! 	(vdupq_x_n_s16): Likewise.
! 	(vdupq_x_n_s32): Likewise.
! 	(vdupq_x_n_u8): Likewise.
! 	(vdupq_x_n_u16): Likewise.
! 	(vdupq_x_n_u32): Likewise.
! 	(vminq_x_s8): Likewise.
! 	(vminq_x_s16): Likewise.
! 	(vminq_x_s32): Likewise.
! 	(vminq_x_u8): Likewise.
! 	(vminq_x_u16): Likewise.
! 	(vminq_x_u32): Likewise.
! 	(vmaxq_x_s8): Likewise.
! 	(vmaxq_x_s16): Likewise.
! 	(vmaxq_x_s32): Likewise.
! 	(vmaxq_x_u8): Likewise.
! 	(vmaxq_x_u16): Likewise.
! 	(vmaxq_x_u32): Likewise.
! 	(vabdq_x_s8): Likewise.
! 	(vabdq_x_s16): Likewise.
! 	(vabdq_x_s32): Likewise.
! 	(vabdq_x_u8): Likewise.
! 	(vabdq_x_u16): Likewise.
! 	(vabdq_x_u32): Likewise.
! 	(vabsq_x_s8): Likewise.
! 	(vabsq_x_s16): Likewise.
! 	(vabsq_x_s32): Likewise.
! 	(vaddq_x_s8): Likewise.
! 	(vaddq_x_s16): Likewise.
! 	(vaddq_x_s32): Likewise.
! 	(vaddq_x_n_s8): Likewise.
! 	(vaddq_x_n_s16): Likewise.
! 	(vaddq_x_n_s32): Likewise.
! 	(vaddq_x_u8): Likewise.
! 	(vaddq_x_u16): Likewise.
! 	(vaddq_x_u32): Likewise.
! 	(vaddq_x_n_u8): Likewise.
! 	(vaddq_x_n_u16): Likewise.
! 	(vaddq_x_n_u32): Likewise.
! 	(vclsq_x_s8): Likewise.
! 	(vclsq_x_s16): Likewise.
! 	(vclsq_x_s32): Likewise.
! 	(vclzq_x_s8): Likewise.
! 	(vclzq_x_s16): Likewise.
! 	(vclzq_x_s32): Likewise.
! 	(vclzq_x_u8): Likewise.
! 	(vclzq_x_u16): Likewise.
! 	(vclzq_x_u32): Likewise.
! 	(vnegq_x_s8): Likewise.
! 	(vnegq_x_s16): Likewise.
! 	(vnegq_x_s32): Likewise.
! 	(vmulhq_x_s8): Likewise.
! 	(vmulhq_x_s16): Likewise.
! 	(vmulhq_x_s32): Likewise.
! 	(vmulhq_x_u8): Likewise.
! 	(vmulhq_x_u16): Likewise.
! 	(vmulhq_x_u32): Likewise.
! 	(vmullbq_poly_x_p8): Likewise.
! 	(vmullbq_poly_x_p16): Likewise.
! 	(vmullbq_int_x_s8): Likewise.
! 	(vmullbq_int_x_s16): Likewise.
! 	(vmullbq_int_x_s32): Likewise.
! 	(vmullbq_int_x_u8): Likewise.
! 	(vmullbq_int_x_u16): Likewise.
! 	(vmullbq_int_x_u32): Likewise.
! 	(vmulltq_poly_x_p8): Likewise.
! 	(vmulltq_poly_x_p16): Likewise.
! 	(vmulltq_int_x_s8): Likewise.
! 	(vmulltq_int_x_s16): Likewise.
! 	(vmulltq_int_x_s32): Likewise.
! 	(vmulltq_int_x_u8): Likewise.
! 	(vmulltq_int_x_u16): Likewise.
! 	(vmulltq_int_x_u32): Likewise.
! 	(vmulq_x_s8): Likewise.
! 	(vmulq_x_s16): Likewise.
! 	(vmulq_x_s32): Likewise.
! 	(vmulq_x_n_s8): Likewise.
! 	(vmulq_x_n_s16): Likewise.
! 	(vmulq_x_n_s32): Likewise.
! 	(vmulq_x_u8): Likewise.
! 	(vmulq_x_u16): Likewise.
! 	(vmulq_x_u32): Likewise.
! 	(vmulq_x_n_u8): Likewise.
! 	(vmulq_x_n_u16): Likewise.
! 	(vmulq_x_n_u32): Likewise.
! 	(vsubq_x_s8): Likewise.
! 	(vsubq_x_s16): Likewise.
! 	(vsubq_x_s32): Likewise.
! 	(vsubq_x_n_s8): Likewise.
! 	(vsubq_x_n_s16): Likewise.
! 	(vsubq_x_n_s32): Likewise.
! 	(vsubq_x_u8): Likewise.
! 	(vsubq_x_u16): Likewise.
! 	(vsubq_x_u32): Likewise.
! 	(vsubq_x_n_u8): Likewise.
! 	(vsubq_x_n_u16): Likewise.
! 	(vsubq_x_n_u32): Likewise.
! 	(vcaddq_rot90_x_s8): Likewise.
! 	(vcaddq_rot90_x_s16): Likewise.
! 	(vcaddq_rot90_x_s32): Likewise.
! 	(vcaddq_rot90_x_u8): Likewise.
! 	(vcaddq_rot90_x_u16): Likewise.
! 	(vcaddq_rot90_x_u32): Likewise.
! 	(vcaddq_rot270_x_s8): Likewise.
! 	(vcaddq_rot270_x_s16): Likewise.
! 	(vcaddq_rot270_x_s32): Likewise.
! 	(vcaddq_rot270_x_u8): Likewise.
! 	(vcaddq_rot270_x_u16): Likewise.
! 	(vcaddq_rot270_x_u32): Likewise.
! 	(vhaddq_x_n_s8): Likewise.
! 	(vhaddq_x_n_s16): Likewise.
! 	(vhaddq_x_n_s32): Likewise.
! 	(vhaddq_x_n_u8): Likewise.
! 	(vhaddq_x_n_u16): Likewise.
! 	(vhaddq_x_n_u32): Likewise.
! 	(vhaddq_x_s8): Likewise.
! 	(vhaddq_x_s16): Likewise.
! 	(vhaddq_x_s32): Likewise.
! 	(vhaddq_x_u8): Likewise.
! 	(vhaddq_x_u16): Likewise.
! 	(vhaddq_x_u32): Likewise.
! 	(vhcaddq_rot90_x_s8): Likewise.
! 	(vhcaddq_rot90_x_s16): Likewise.
! 	(vhcaddq_rot90_x_s32): Likewise.
! 	(vhcaddq_rot270_x_s8): Likewise.
! 	(vhcaddq_rot270_x_s16): Likewise.
! 	(vhcaddq_rot270_x_s32): Likewise.
! 	(vhsubq_x_n_s8): Likewise.
! 	(vhsubq_x_n_s16): Likewise.
! 	(vhsubq_x_n_s32): Likewise.
! 	(vhsubq_x_n_u8): Likewise.
! 	(vhsubq_x_n_u16): Likewise.
! 	(vhsubq_x_n_u32): Likewise.
! 	(vhsubq_x_s8): Likewise.
! 	(vhsubq_x_s16): Likewise.
! 	(vhsubq_x_s32): Likewise.
! 	(vhsubq_x_u8): Likewise.
! 	(vhsubq_x_u16): Likewise.
! 	(vhsubq_x_u32): Likewise.
! 	(vrhaddq_x_s8): Likewise.
! 	(vrhaddq_x_s16): Likewise.
! 	(vrhaddq_x_s32): Likewise.
! 	(vrhaddq_x_u8): Likewise.
! 	(vrhaddq_x_u16): Likewise.
! 	(vrhaddq_x_u32): Likewise.
! 	(vrmulhq_x_s8): Likewise.
! 	(vrmulhq_x_s16): Likewise.
! 	(vrmulhq_x_s32): Likewise.
! 	(vrmulhq_x_u8): Likewise.
! 	(vrmulhq_x_u16): Likewise.
! 	(vrmulhq_x_u32): Likewise.
! 	(vandq_x_s8): Likewise.
! 	(vandq_x_s16): Likewise.
! 	(vandq_x_s32): Likewise.
! 	(vandq_x_u8): Likewise.
! 	(vandq_x_u16): Likewise.
! 	(vandq_x_u32): Likewise.
! 	(vbicq_x_s8): Likewise.
! 	(vbicq_x_s16): Likewise.
! 	(vbicq_x_s32): Likewise.
! 	(vbicq_x_u8): Likewise.
! 	(vbicq_x_u16): Likewise.
! 	(vbicq_x_u32): Likewise.
! 	(vbrsrq_x_n_s8): Likewise.
! 	(vbrsrq_x_n_s16): Likewise.
! 	(vbrsrq_x_n_s32): Likewise.
! 	(vbrsrq_x_n_u8): Likewise.
! 	(vbrsrq_x_n_u16): Likewise.
! 	(vbrsrq_x_n_u32): Likewise.
! 	(veorq_x_s8): Likewise.
! 	(veorq_x_s16): Likewise.
! 	(veorq_x_s32): Likewise.
! 	(veorq_x_u8): Likewise.
! 	(veorq_x_u16): Likewise.
! 	(veorq_x_u32): Likewise.
! 	(vmovlbq_x_s8): Likewise.
! 	(vmovlbq_x_s16): Likewise.
! 	(vmovlbq_x_u8): Likewise.
! 	(vmovlbq_x_u16): Likewise.
! 	(vmovltq_x_s8): Likewise.
! 	(vmovltq_x_s16): Likewise.
! 	(vmovltq_x_u8): Likewise.
! 	(vmovltq_x_u16): Likewise.
! 	(vmvnq_x_s8): Likewise.
! 	(vmvnq_x_s16): Likewise.
! 	(vmvnq_x_s32): Likewise.
! 	(vmvnq_x_u8): Likewise.
! 	(vmvnq_x_u16): Likewise.
! 	(vmvnq_x_u32): Likewise.
! 	(vmvnq_x_n_s16): Likewise.
! 	(vmvnq_x_n_s32): Likewise.
! 	(vmvnq_x_n_u16): Likewise.
! 	(vmvnq_x_n_u32): Likewise.
! 	(vornq_x_s8): Likewise.
! 	(vornq_x_s16): Likewise.
! 	(vornq_x_s32): Likewise.
! 	(vornq_x_u8): Likewise.
! 	(vornq_x_u16): Likewise.
! 	(vornq_x_u32): Likewise.
! 	(vorrq_x_s8): Likewise.
! 	(vorrq_x_s16): Likewise.
! 	(vorrq_x_s32): Likewise.
! 	(vorrq_x_u8): Likewise.
! 	(vorrq_x_u16): Likewise.
! 	(vorrq_x_u32): Likewise.
! 	(vrev16q_x_s8): Likewise.
! 	(vrev16q_x_u8): Likewise.
! 	(vrev32q_x_s8): Likewise.
! 	(vrev32q_x_s16): Likewise.
! 	(vrev32q_x_u8): Likewise.
! 	(vrev32q_x_u16): Likewise.
! 	(vrev64q_x_s8): Likewise.
! 	(vrev64q_x_s16): Likewise.
! 	(vrev64q_x_s32): Likewise.
! 	(vrev64q_x_u8): Likewise.
! 	(vrev64q_x_u16): Likewise.
! 	(vrev64q_x_u32): Likewise.
! 	(vrshlq_x_s8): Likewise.
! 	(vrshlq_x_s16): Likewise.
! 	(vrshlq_x_s32): Likewise.
! 	(vrshlq_x_u8): Likewise.
! 	(vrshlq_x_u16): Likewise.
! 	(vrshlq_x_u32): Likewise.
! 	(vshllbq_x_n_s8): Likewise.
! 	(vshllbq_x_n_s16): Likewise.
! 	(vshllbq_x_n_u8): Likewise.
! 	(vshllbq_x_n_u16): Likewise.
! 	(vshlltq_x_n_s8): Likewise.
! 	(vshlltq_x_n_s16): Likewise.
! 	(vshlltq_x_n_u8): Likewise.
! 	(vshlltq_x_n_u16): Likewise.
! 	(vshlq_x_s8): Likewise.
! 	(vshlq_x_s16): Likewise.
! 	(vshlq_x_s32): Likewise.
! 	(vshlq_x_u8): Likewise.
! 	(vshlq_x_u16): Likewise.
! 	(vshlq_x_u32): Likewise.
! 	(vshlq_x_n_s8): Likewise.
! 	(vshlq_x_n_s16): Likewise.
! 	(vshlq_x_n_s32): Likewise.
! 	(vshlq_x_n_u8): Likewise.
! 	(vshlq_x_n_u16): Likewise.
! 	(vshlq_x_n_u32): Likewise.
! 	(vrshrq_x_n_s8): Likewise.
! 	(vrshrq_x_n_s16): Likewise.
! 	(vrshrq_x_n_s32): Likewise.
! 	(vrshrq_x_n_u8): Likewise.
! 	(vrshrq_x_n_u16): Likewise.
! 	(vrshrq_x_n_u32): Likewise.
! 	(vshrq_x_n_s8): Likewise.
! 	(vshrq_x_n_s16): Likewise.
! 	(vshrq_x_n_s32): Likewise.
! 	(vshrq_x_n_u8): Likewise.
! 	(vshrq_x_n_u16): Likewise.
! 	(vshrq_x_n_u32): Likewise.
! 	(vdupq_x_n_f16): Likewise.
! 	(vdupq_x_n_f32): Likewise.
! 	(vminnmq_x_f16): Likewise.
! 	(vminnmq_x_f32): Likewise.
! 	(vmaxnmq_x_f16): Likewise.
! 	(vmaxnmq_x_f32): Likewise.
! 	(vabdq_x_f16): Likewise.
! 	(vabdq_x_f32): Likewise.
! 	(vabsq_x_f16): Likewise.
! 	(vabsq_x_f32): Likewise.
! 	(vaddq_x_f16): Likewise.
! 	(vaddq_x_f32): Likewise.
! 	(vaddq_x_n_f16): Likewise.
! 	(vaddq_x_n_f32): Likewise.
! 	(vnegq_x_f16): Likewise.
! 	(vnegq_x_f32): Likewise.
! 	(vmulq_x_f16): Likewise.
! 	(vmulq_x_f32): Likewise.
! 	(vmulq_x_n_f16): Likewise.
! 	(vmulq_x_n_f32): Likewise.
! 	(vsubq_x_f16): Likewise.
! 	(vsubq_x_f32): Likewise.
! 	(vsubq_x_n_f16): Likewise.
! 	(vsubq_x_n_f32): Likewise.
! 	(vcaddq_rot90_x_f16): Likewise.
! 	(vcaddq_rot90_x_f32): Likewise.
! 	(vcaddq_rot270_x_f16): Likewise.
! 	(vcaddq_rot270_x_f32): Likewise.
! 	(vcmulq_x_f16): Likewise.
! 	(vcmulq_x_f32): Likewise.
! 	(vcmulq_rot90_x_f16): Likewise.
! 	(vcmulq_rot90_x_f32): Likewise.
! 	(vcmulq_rot180_x_f16): Likewise.
! 	(vcmulq_rot180_x_f32): Likewise.
! 	(vcmulq_rot270_x_f16): Likewise.
! 	(vcmulq_rot270_x_f32): Likewise.
! 	(vcvtaq_x_s16_f16): Likewise.
! 	(vcvtaq_x_s32_f32): Likewise.
! 	(vcvtaq_x_u16_f16): Likewise.
! 	(vcvtaq_x_u32_f32): Likewise.
! 	(vcvtnq_x_s16_f16): Likewise.
! 	(vcvtnq_x_s32_f32): Likewise.
! 	(vcvtnq_x_u16_f16): Likewise.
! 	(vcvtnq_x_u32_f32): Likewise.
! 	(vcvtpq_x_s16_f16): Likewise.
! 	(vcvtpq_x_s32_f32): Likewise.
! 	(vcvtpq_x_u16_f16): Likewise.
! 	(vcvtpq_x_u32_f32): Likewise.
! 	(vcvtmq_x_s16_f16): Likewise.
! 	(vcvtmq_x_s32_f32): Likewise.
! 	(vcvtmq_x_u16_f16): Likewise.
! 	(vcvtmq_x_u32_f32): Likewise.
! 	(vcvtbq_x_f32_f16): Likewise.
! 	(vcvttq_x_f32_f16): Likewise.
! 	(vcvtq_x_f16_u16): Likewise.
! 	(vcvtq_x_f16_s16): Likewise.
! 	(vcvtq_x_f32_s32): Likewise.
! 	(vcvtq_x_f32_u32): Likewise.
! 	(vcvtq_x_n_f16_s16): Likewise.
! 	(vcvtq_x_n_f16_u16): Likewise.
! 	(vcvtq_x_n_f32_s32): Likewise.
! 	(vcvtq_x_n_f32_u32): Likewise.
! 	(vcvtq_x_s16_f16): Likewise.
! 	(vcvtq_x_s32_f32): Likewise.
! 	(vcvtq_x_u16_f16): Likewise.
! 	(vcvtq_x_u32_f32): Likewise.
! 	(vcvtq_x_n_s16_f16): Likewise.
! 	(vcvtq_x_n_s32_f32): Likewise.
! 	(vcvtq_x_n_u16_f16): Likewise.
! 	(vcvtq_x_n_u32_f32): Likewise.
! 	(vrndq_x_f16): Likewise.
! 	(vrndq_x_f32): Likewise.
! 	(vrndnq_x_f16): Likewise.
! 	(vrndnq_x_f32): Likewise.
! 	(vrndmq_x_f16): Likewise.
! 	(vrndmq_x_f32): Likewise.
! 	(vrndpq_x_f16): Likewise.
! 	(vrndpq_x_f32): Likewise.
! 	(vrndaq_x_f16): Likewise.
! 	(vrndaq_x_f32): Likewise.
! 	(vrndxq_x_f16): Likewise.
! 	(vrndxq_x_f32): Likewise.
! 	(vandq_x_f16): Likewise.
! 	(vandq_x_f32): Likewise.
! 	(vbicq_x_f16): Likewise.
! 	(vbicq_x_f32): Likewise.
! 	(vbrsrq_x_n_f16): Likewise.
! 	(vbrsrq_x_n_f32): Likewise.
! 	(veorq_x_f16): Likewise.
! 	(veorq_x_f32): Likewise.
! 	(vornq_x_f16): Likewise.
! 	(vornq_x_f32): Likewise.
! 	(vorrq_x_f16): Likewise.
! 	(vorrq_x_f32): Likewise.
! 	(vrev32q_x_f16): Likewise.
! 	(vrev64q_x_f16): Likewise.
! 	(vrev64q_x_f32): Likewise.
! 	(__arm_vddupq_x_n_u8): Define intrinsic.
! 	(__arm_vddupq_x_n_u16): Likewise.
! 	(__arm_vddupq_x_n_u32): Likewise.
! 	(__arm_vddupq_x_wb_u8): Likewise.
! 	(__arm_vddupq_x_wb_u16): Likewise.
! 	(__arm_vddupq_x_wb_u32): Likewise.
! 	(__arm_vdwdupq_x_n_u8): Likewise.
! 	(__arm_vdwdupq_x_n_u16): Likewise.
! 	(__arm_vdwdupq_x_n_u32): Likewise.
! 	(__arm_vdwdupq_x_wb_u8): Likewise.
! 	(__arm_vdwdupq_x_wb_u16): Likewise.
! 	(__arm_vdwdupq_x_wb_u32): Likewise.
! 	(__arm_vidupq_x_n_u8): Likewise.
! 	(__arm_vidupq_x_n_u16): Likewise.
! 	(__arm_vidupq_x_n_u32): Likewise.
! 	(__arm_vidupq_x_wb_u8): Likewise.
! 	(__arm_vidupq_x_wb_u16): Likewise.
! 	(__arm_vidupq_x_wb_u32): Likewise.
! 	(__arm_viwdupq_x_n_u8): Likewise.
! 	(__arm_viwdupq_x_n_u16): Likewise.
! 	(__arm_viwdupq_x_n_u32): Likewise.
! 	(__arm_viwdupq_x_wb_u8): Likewise.
! 	(__arm_viwdupq_x_wb_u16): Likewise.
! 	(__arm_viwdupq_x_wb_u32): Likewise.
! 	(__arm_vdupq_x_n_s8): Likewise.
! 	(__arm_vdupq_x_n_s16): Likewise.
! 	(__arm_vdupq_x_n_s32): Likewise.
! 	(__arm_vdupq_x_n_u8): Likewise.
! 	(__arm_vdupq_x_n_u16): Likewise.
! 	(__arm_vdupq_x_n_u32): Likewise.
! 	(__arm_vminq_x_s8): Likewise.
! 	(__arm_vminq_x_s16): Likewise.
! 	(__arm_vminq_x_s32): Likewise.
! 	(__arm_vminq_x_u8): Likewise.
! 	(__arm_vminq_x_u16): Likewise.
! 	(__arm_vminq_x_u32): Likewise.
! 	(__arm_vmaxq_x_s8): Likewise.
! 	(__arm_vmaxq_x_s16): Likewise.
! 	(__arm_vmaxq_x_s32): Likewise.
! 	(__arm_vmaxq_x_u8): Likewise.
! 	(__arm_vmaxq_x_u16): Likewise.
! 	(__arm_vmaxq_x_u32): Likewise.
! 	(__arm_vabdq_x_s8): Likewise.
! 	(__arm_vabdq_x_s16): Likewise.
! 	(__arm_vabdq_x_s32): Likewise.
! 	(__arm_vabdq_x_u8): Likewise.
! 	(__arm_vabdq_x_u16): Likewise.
! 	(__arm_vabdq_x_u32): Likewise.
! 	(__arm_vabsq_x_s8): Likewise.
! 	(__arm_vabsq_x_s16): Likewise.
! 	(__arm_vabsq_x_s32): Likewise.
! 	(__arm_vaddq_x_s8): Likewise.
! 	(__arm_vaddq_x_s16): Likewise.
! 	(__arm_vaddq_x_s32): Likewise.
! 	(__arm_vaddq_x_n_s8): Likewise.
! 	(__arm_vaddq_x_n_s16): Likewise.
! 	(__arm_vaddq_x_n_s32): Likewise.
! 	(__arm_vaddq_x_u8): Likewise.
! 	(__arm_vaddq_x_u16): Likewise.
! 	(__arm_vaddq_x_u32): Likewise.
! 	(__arm_vaddq_x_n_u8): Likewise.
! 	(__arm_vaddq_x_n_u16): Likewise.
! 	(__arm_vaddq_x_n_u32): Likewise.
! 	(__arm_vclsq_x_s8): Likewise.
! 	(__arm_vclsq_x_s16): Likewise.
! 	(__arm_vclsq_x_s32): Likewise.
! 	(__arm_vclzq_x_s8): Likewise.
! 	(__arm_vclzq_x_s16): Likewise.
! 	(__arm_vclzq_x_s32): Likewise.
! 	(__arm_vclzq_x_u8): Likewise.
! 	(__arm_vclzq_x_u16): Likewise.
! 	(__arm_vclzq_x_u32): Likewise.
! 	(__arm_vnegq_x_s8): Likewise.
! 	(__arm_vnegq_x_s16): Likewise.
! 	(__arm_vnegq_x_s32): Likewise.
! 	(__arm_vmulhq_x_s8): Likewise.
! 	(__arm_vmulhq_x_s16): Likewise.
! 	(__arm_vmulhq_x_s32): Likewise.
! 	(__arm_vmulhq_x_u8): Likewise.
! 	(__arm_vmulhq_x_u16): Likewise.
! 	(__arm_vmulhq_x_u32): Likewise.
! 	(__arm_vmullbq_poly_x_p8): Likewise.
! 	(__arm_vmullbq_poly_x_p16): Likewise.
! 	(__arm_vmullbq_int_x_s8): Likewise.
! 	(__arm_vmullbq_int_x_s16): Likewise.
! 	(__arm_vmullbq_int_x_s32): Likewise.
! 	(__arm_vmullbq_int_x_u8): Likewise.
! 	(__arm_vmullbq_int_x_u16): Likewise.
! 	(__arm_vmullbq_int_x_u32): Likewise.
! 	(__arm_vmulltq_poly_x_p8): Likewise.
! 	(__arm_vmulltq_poly_x_p16): Likewise.
! 	(__arm_vmulltq_int_x_s8): Likewise.
! 	(__arm_vmulltq_int_x_s16): Likewise.
! 	(__arm_vmulltq_int_x_s32): Likewise.
! 	(__arm_vmulltq_int_x_u8): Likewise.
! 	(__arm_vmulltq_int_x_u16): Likewise.
! 	(__arm_vmulltq_int_x_u32): Likewise.
! 	(__arm_vmulq_x_s8): Likewise.
! 	(__arm_vmulq_x_s16): Likewise.
! 	(__arm_vmulq_x_s32): Likewise.
! 	(__arm_vmulq_x_n_s8): Likewise.
! 	(__arm_vmulq_x_n_s16): Likewise.
! 	(__arm_vmulq_x_n_s32): Likewise.
! 	(__arm_vmulq_x_u8): Likewise.
! 	(__arm_vmulq_x_u16): Likewise.
! 	(__arm_vmulq_x_u32): Likewise.
! 	(__arm_vmulq_x_n_u8): Likewise.
! 	(__arm_vmulq_x_n_u16): Likewise.
! 	(__arm_vmulq_x_n_u32): Likewise.
! 	(__arm_vsubq_x_s8): Likewise.
! 	(__arm_vsubq_x_s16): Likewise.
! 	(__arm_vsubq_x_s32): Likewise.
! 	(__arm_vsubq_x_n_s8): Likewise.
! 	(__arm_vsubq_x_n_s16): Likewise.
! 	(__arm_vsubq_x_n_s32): Likewise.
! 	(__arm_vsubq_x_u8): Likewise.
! 	(__arm_vsubq_x_u16): Likewise.
! 	(__arm_vsubq_x_u32): Likewise.
! 	(__arm_vsubq_x_n_u8): Likewise.
! 	(__arm_vsubq_x_n_u16): Likewise.
! 	(__arm_vsubq_x_n_u32): Likewise.
! 	(__arm_vcaddq_rot90_x_s8): Likewise.
! 	(__arm_vcaddq_rot90_x_s16): Likewise.
! 	(__arm_vcaddq_rot90_x_s32): Likewise.
! 	(__arm_vcaddq_rot90_x_u8): Likewise.
! 	(__arm_vcaddq_rot90_x_u16): Likewise.
! 	(__arm_vcaddq_rot90_x_u32): Likewise.
! 	(__arm_vcaddq_rot270_x_s8): Likewise.
! 	(__arm_vcaddq_rot270_x_s16): Likewise.
! 	(__arm_vcaddq_rot270_x_s32): Likewise.
! 	(__arm_vcaddq_rot270_x_u8): Likewise.
! 	(__arm_vcaddq_rot270_x_u16): Likewise.
! 	(__arm_vcaddq_rot270_x_u32): Likewise.
! 	(__arm_vhaddq_x_n_s8): Likewise.
! 	(__arm_vhaddq_x_n_s16): Likewise.
! 	(__arm_vhaddq_x_n_s32): Likewise.
! 	(__arm_vhaddq_x_n_u8): Likewise.
! 	(__arm_vhaddq_x_n_u16): Likewise.
! 	(__arm_vhaddq_x_n_u32): Likewise.
! 	(__arm_vhaddq_x_s8): Likewise.
! 	(__arm_vhaddq_x_s16): Likewise.
! 	(__arm_vhaddq_x_s32): Likewise.
! 	(__arm_vhaddq_x_u8): Likewise.
! 	(__arm_vhaddq_x_u16): Likewise.
! 	(__arm_vhaddq_x_u32): Likewise.
! 	(__arm_vhcaddq_rot90_x_s8): Likewise.
! 	(__arm_vhcaddq_rot90_x_s16): Likewise.
! 	(__arm_vhcaddq_rot90_x_s32): Likewise.
! 	(__arm_vhcaddq_rot270_x_s8): Likewise.
! 	(__arm_vhcaddq_rot270_x_s16): Likewise.
! 	(__arm_vhcaddq_rot270_x_s32): Likewise.
! 	(__arm_vhsubq_x_n_s8): Likewise.
! 	(__arm_vhsubq_x_n_s16): Likewise.
! 	(__arm_vhsubq_x_n_s32): Likewise.
! 	(__arm_vhsubq_x_n_u8): Likewise.
! 	(__arm_vhsubq_x_n_u16): Likewise.
! 	(__arm_vhsubq_x_n_u32): Likewise.
! 	(__arm_vhsubq_x_s8): Likewise.
! 	(__arm_vhsubq_x_s16): Likewise.
! 	(__arm_vhsubq_x_s32): Likewise.
! 	(__arm_vhsubq_x_u8): Likewise.
! 	(__arm_vhsubq_x_u16): Likewise.
! 	(__arm_vhsubq_x_u32): Likewise.
! 	(__arm_vrhaddq_x_s8): Likewise.
! 	(__arm_vrhaddq_x_s16): Likewise.
! 	(__arm_vrhaddq_x_s32): Likewise.
! 	(__arm_vrhaddq_x_u8): Likewise.
! 	(__arm_vrhaddq_x_u16): Likewise.
! 	(__arm_vrhaddq_x_u32): Likewise.
! 	(__arm_vrmulhq_x_s8): Likewise.
! 	(__arm_vrmulhq_x_s16): Likewise.
! 	(__arm_vrmulhq_x_s32): Likewise.
! 	(__arm_vrmulhq_x_u8): Likewise.
! 	(__arm_vrmulhq_x_u16): Likewise.
! 	(__arm_vrmulhq_x_u32): Likewise.
! 	(__arm_vandq_x_s8): Likewise.
! 	(__arm_vandq_x_s16): Likewise.
! 	(__arm_vandq_x_s32): Likewise.
! 	(__arm_vandq_x_u8): Likewise.
! 	(__arm_vandq_x_u16): Likewise.
! 	(__arm_vandq_x_u32): Likewise.
! 	(__arm_vbicq_x_s8): Likewise.
! 	(__arm_vbicq_x_s16): Likewise.
! 	(__arm_vbicq_x_s32): Likewise.
! 	(__arm_vbicq_x_u8): Likewise.
! 	(__arm_vbicq_x_u16): Likewise.
! 	(__arm_vbicq_x_u32): Likewise.
! 	(__arm_vbrsrq_x_n_s8): Likewise.
! 	(__arm_vbrsrq_x_n_s16): Likewise.
! 	(__arm_vbrsrq_x_n_s32): Likewise.
! 	(__arm_vbrsrq_x_n_u8): Likewise.
! 	(__arm_vbrsrq_x_n_u16): Likewise.
! 	(__arm_vbrsrq_x_n_u32): Likewise.
! 	(__arm_veorq_x_s8): Likewise.
! 	(__arm_veorq_x_s16): Likewise.
! 	(__arm_veorq_x_s32): Likewise.
! 	(__arm_veorq_x_u8): Likewise.
! 	(__arm_veorq_x_u16): Likewise.
! 	(__arm_veorq_x_u32): Likewise.
! 	(__arm_vmovlbq_x_s8): Likewise.
! 	(__arm_vmovlbq_x_s16): Likewise.
! 	(__arm_vmovlbq_x_u8): Likewise.
! 	(__arm_vmovlbq_x_u16): Likewise.
! 	(__arm_vmovltq_x_s8): Likewise.
! 	(__arm_vmovltq_x_s16): Likewise.
! 	(__arm_vmovltq_x_u8): Likewise.
! 	(__arm_vmovltq_x_u16): Likewise.
! 	(__arm_vmvnq_x_s8): Likewise.
! 	(__arm_vmvnq_x_s16): Likewise.
! 	(__arm_vmvnq_x_s32): Likewise.
! 	(__arm_vmvnq_x_u8): Likewise.
! 	(__arm_vmvnq_x_u16): Likewise.
! 	(__arm_vmvnq_x_u32): Likewise.
! 	(__arm_vmvnq_x_n_s16): Likewise.
! 	(__arm_vmvnq_x_n_s32): Likewise.
! 	(__arm_vmvnq_x_n_u16): Likewise.
! 	(__arm_vmvnq_x_n_u32): Likewise.
! 	(__arm_vornq_x_s8): Likewise.
! 	(__arm_vornq_x_s16): Likewise.
! 	(__arm_vornq_x_s32): Likewise.
! 	(__arm_vornq_x_u8): Likewise.
! 	(__arm_vornq_x_u16): Likewise.
! 	(__arm_vornq_x_u32): Likewise.
! 	(__arm_vorrq_x_s8): Likewise.
! 	(__arm_vorrq_x_s16): Likewise.
! 	(__arm_vorrq_x_s32): Likewise.
! 	(__arm_vorrq_x_u8): Likewise.
! 	(__arm_vorrq_x_u16): Likewise.
! 	(__arm_vorrq_x_u32): Likewise.
! 	(__arm_vrev16q_x_s8): Likewise.
! 	(__arm_vrev16q_x_u8): Likewise.
! 	(__arm_vrev32q_x_s8): Likewise.
! 	(__arm_vrev32q_x_s16): Likewise.
! 	(__arm_vrev32q_x_u8): Likewise.
! 	(__arm_vrev32q_x_u16): Likewise.
! 	(__arm_vrev64q_x_s8): Likewise.
! 	(__arm_vrev64q_x_s16): Likewise.
! 	(__arm_vrev64q_x_s32): Likewise.
! 	(__arm_vrev64q_x_u8): Likewise.
! 	(__arm_vrev64q_x_u16): Likewise.
! 	(__arm_vrev64q_x_u32): Likewise.
! 	(__arm_vrshlq_x_s8): Likewise.
! 	(__arm_vrshlq_x_s16): Likewise.
! 	(__arm_vrshlq_x_s32): Likewise.
! 	(__arm_vrshlq_x_u8): Likewise.
! 	(__arm_vrshlq_x_u16): Likewise.
! 	(__arm_vrshlq_x_u32): Likewise.
! 	(__arm_vshllbq_x_n_s8): Likewise.
! 	(__arm_vshllbq_x_n_s16): Likewise.
! 	(__arm_vshllbq_x_n_u8): Likewise.
! 	(__arm_vshllbq_x_n_u16): Likewise.
! 	(__arm_vshlltq_x_n_s8): Likewise.
! 	(__arm_vshlltq_x_n_s16): Likewise.
! 	(__arm_vshlltq_x_n_u8): Likewise.
! 	(__arm_vshlltq_x_n_u16): Likewise.
! 	(__arm_vshlq_x_s8): Likewise.
! 	(__arm_vshlq_x_s16): Likewise.
! 	(__arm_vshlq_x_s32): Likewise.
! 	(__arm_vshlq_x_u8): Likewise.
! 	(__arm_vshlq_x_u16): Likewise.
! 	(__arm_vshlq_x_u32): Likewise.
! 	(__arm_vshlq_x_n_s8): Likewise.
! 	(__arm_vshlq_x_n_s16): Likewise.
! 	(__arm_vshlq_x_n_s32): Likewise.
! 	(__arm_vshlq_x_n_u8): Likewise.
! 	(__arm_vshlq_x_n_u16): Likewise.
! 	(__arm_vshlq_x_n_u32): Likewise.
! 	(__arm_vrshrq_x_n_s8): Likewise.
! 	(__arm_vrshrq_x_n_s16): Likewise.
! 	(__arm_vrshrq_x_n_s32): Likewise.
! 	(__arm_vrshrq_x_n_u8): Likewise.
! 	(__arm_vrshrq_x_n_u16): Likewise.
! 	(__arm_vrshrq_x_n_u32): Likewise.
! 	(__arm_vshrq_x_n_s8): Likewise.
! 	(__arm_vshrq_x_n_s16): Likewise.
! 	(__arm_vshrq_x_n_s32): Likewise.
! 	(__arm_vshrq_x_n_u8): Likewise.
! 	(__arm_vshrq_x_n_u16): Likewise.
! 	(__arm_vshrq_x_n_u32): Likewise.
! 	(__arm_vdupq_x_n_f16): Likewise.
! 	(__arm_vdupq_x_n_f32): Likewise.
! 	(__arm_vminnmq_x_f16): Likewise.
! 	(__arm_vminnmq_x_f32): Likewise.
! 	(__arm_vmaxnmq_x_f16): Likewise.
! 	(__arm_vmaxnmq_x_f32): Likewise.
! 	(__arm_vabdq_x_f16): Likewise.
! 	(__arm_vabdq_x_f32): Likewise.
! 	(__arm_vabsq_x_f16): Likewise.
! 	(__arm_vabsq_x_f32): Likewise.
! 	(__arm_vaddq_x_f16): Likewise.
! 	(__arm_vaddq_x_f32): Likewise.
! 	(__arm_vaddq_x_n_f16): Likewise.
! 	(__arm_vaddq_x_n_f32): Likewise.
! 	(__arm_vnegq_x_f16): Likewise.
! 	(__arm_vnegq_x_f32): Likewise.
! 	(__arm_vmulq_x_f16): Likewise.
! 	(__arm_vmulq_x_f32): Likewise.
! 	(__arm_vmulq_x_n_f16): Likewise.
! 	(__arm_vmulq_x_n_f32): Likewise.
! 	(__arm_vsubq_x_f16): Likewise.
! 	(__arm_vsubq_x_f32): Likewise.
! 	(__arm_vsubq_x_n_f16): Likewise.
! 	(__arm_vsubq_x_n_f32): Likewise.
! 	(__arm_vcaddq_rot90_x_f16): Likewise.
! 	(__arm_vcaddq_rot90_x_f32): Likewise.
! 	(__arm_vcaddq_rot270_x_f16): Likewise.
! 	(__arm_vcaddq_rot270_x_f32): Likewise.
! 	(__arm_vcmulq_x_f16): Likewise.
! 	(__arm_vcmulq_x_f32): Likewise.
! 	(__arm_vcmulq_rot90_x_f16): Likewise.
! 	(__arm_vcmulq_rot90_x_f32): Likewise.
! 	(__arm_vcmulq_rot180_x_f16): Likewise.
! 	(__arm_vcmulq_rot180_x_f32): Likewise.
! 	(__arm_vcmulq_rot270_x_f16): Likewise.
! 	(__arm_vcmulq_rot270_x_f32): Likewise.
! 	(__arm_vcvtaq_x_s16_f16): Likewise.
! 	(__arm_vcvtaq_x_s32_f32): Likewise.
! 	(__arm_vcvtaq_x_u16_f16): Likewise.
! 	(__arm_vcvtaq_x_u32_f32): Likewise.
! 	(__arm_vcvtnq_x_s16_f16): Likewise.
! 	(__arm_vcvtnq_x_s32_f32): Likewise.
! 	(__arm_vcvtnq_x_u16_f16): Likewise.
! 	(__arm_vcvtnq_x_u32_f32): Likewise.
! 	(__arm_vcvtpq_x_s16_f16): Likewise.
! 	(__arm_vcvtpq_x_s32_f32): Likewise.
! 	(__arm_vcvtpq_x_u16_f16): Likewise.
! 	(__arm_vcvtpq_x_u32_f32): Likewise.
! 	(__arm_vcvtmq_x_s16_f16): Likewise.
! 	(__arm_vcvtmq_x_s32_f32): Likewise.
! 	(__arm_vcvtmq_x_u16_f16): Likewise.
! 	(__arm_vcvtmq_x_u32_f32): Likewise.
! 	(__arm_vcvtbq_x_f32_f16): Likewise.
! 	(__arm_vcvttq_x_f32_f16): Likewise.
! 	(__arm_vcvtq_x_f16_u16): Likewise.
! 	(__arm_vcvtq_x_f16_s16): Likewise.
! 	(__arm_vcvtq_x_f32_s32): Likewise.
! 	(__arm_vcvtq_x_f32_u32): Likewise.
! 	(__arm_vcvtq_x_n_f16_s16): Likewise.
! 	(__arm_vcvtq_x_n_f16_u16): Likewise.
! 	(__arm_vcvtq_x_n_f32_s32): Likewise.
! 	(__arm_vcvtq_x_n_f32_u32): Likewise.
! 	(__arm_vcvtq_x_s16_f16): Likewise.
! 	(__arm_vcvtq_x_s32_f32): Likewise.
! 	(__arm_vcvtq_x_u16_f16): Likewise.
! 	(__arm_vcvtq_x_u32_f32): Likewise.
! 	(__arm_vcvtq_x_n_s16_f16): Likewise.
! 	(__arm_vcvtq_x_n_s32_f32): Likewise.
! 	(__arm_vcvtq_x_n_u16_f16): Likewise.
! 	(__arm_vcvtq_x_n_u32_f32): Likewise.
! 	(__arm_vrndq_x_f16): Likewise.
! 	(__arm_vrndq_x_f32): Likewise.
! 	(__arm_vrndnq_x_f16): Likewise.
! 	(__arm_vrndnq_x_f32): Likewise.
! 	(__arm_vrndmq_x_f16): Likewise.
! 	(__arm_vrndmq_x_f32): Likewise.
! 	(__arm_vrndpq_x_f16): Likewise.
! 	(__arm_vrndpq_x_f32): Likewise.
! 	(__arm_vrndaq_x_f16): Likewise.
! 	(__arm_vrndaq_x_f32): Likewise.
! 	(__arm_vrndxq_x_f16): Likewise.
! 	(__arm_vrndxq_x_f32): Likewise.
! 	(__arm_vandq_x_f16): Likewise.
! 	(__arm_vandq_x_f32): Likewise.
! 	(__arm_vbicq_x_f16): Likewise.
! 	(__arm_vbicq_x_f32): Likewise.
! 	(__arm_vbrsrq_x_n_f16): Likewise.
! 	(__arm_vbrsrq_x_n_f32): Likewise.
! 	(__arm_veorq_x_f16): Likewise.
! 	(__arm_veorq_x_f32): Likewise.
! 	(__arm_vornq_x_f16): Likewise.
! 	(__arm_vornq_x_f32): Likewise.
! 	(__arm_vorrq_x_f16): Likewise.
! 	(__arm_vorrq_x_f32): Likewise.
! 	(__arm_vrev32q_x_f16): Likewise.
! 	(__arm_vrev64q_x_f16): Likewise.
! 	(__arm_vrev64q_x_f32): Likewise.
! 	(vabdq_x): Define polymorphic variant.
! 	(vabsq_x): Likewise.
! 	(vaddq_x): Likewise.
! 	(vandq_x): Likewise.
! 	(vbicq_x): Likewise.
! 	(vbrsrq_x): Likewise.
! 	(vcaddq_rot270_x): Likewise.
! 	(vcaddq_rot90_x): Likewise.
! 	(vcmulq_rot180_x): Likewise.
! 	(vcmulq_rot270_x): Likewise.
! 	(vcmulq_x): Likewise.
! 	(vcvtq_x): Likewise.
! 	(vcvtq_x_n): Likewise.
! 	(vcvtnq_m): Likewise.
! 	(veorq_x): Likewise.
! 	(vmaxnmq_x): Likewise.
! 	(vminnmq_x): Likewise.
! 	(vmulq_x): Likewise.
! 	(vnegq_x): Likewise.
! 	(vornq_x): Likewise.
! 	(vorrq_x): Likewise.
! 	(vrev32q_x): Likewise.
! 	(vrev64q_x): Likewise.
! 	(vrndaq_x): Likewise.
! 	(vrndmq_x): Likewise.
! 	(vrndnq_x): Likewise.
! 	(vrndpq_x): Likewise.
! 	(vrndq_x): Likewise.
! 	(vrndxq_x): Likewise.
! 	(vsubq_x): Likewise.
! 	(vcmulq_rot90_x): Likewise.
! 	(vadciq): Likewise.
! 	(vclsq_x): Likewise.
! 	(vclzq_x): Likewise.
! 	(vhaddq_x): Likewise.
! 	(vhcaddq_rot270_x): Likewise.
! 	(vhcaddq_rot90_x): Likewise.
! 	(vhsubq_x): Likewise.
! 	(vmaxq_x): Likewise.
! 	(vminq_x): Likewise.
! 	(vmovlbq_x): Likewise.
! 	(vmovltq_x): Likewise.
! 	(vmulhq_x): Likewise.
! 	(vmullbq_int_x): Likewise.
! 	(vmullbq_poly_x): Likewise.
! 	(vmulltq_int_x): Likewise.
! 	(vmulltq_poly_x): Likewise.
! 	(vmvnq_x): Likewise.
! 	(vrev16q_x): Likewise.
! 	(vrhaddq_x): Likewise.
! 	(vrmulhq_x): Likewise.
! 	(vrshlq_x): Likewise.
! 	(vrshrq_x): Likewise.
! 	(vshllbq_x): Likewise.
! 	(vshlltq_x): Likewise.
! 	(vshlq_x_n): Likewise.
! 	(vshlq_x): Likewise.
! 	(vdwdupq_x_u8): Likewise.
! 	(vdwdupq_x_u16): Likewise.
! 	(vdwdupq_x_u32): Likewise.
! 	(viwdupq_x_u8): Likewise.
! 	(viwdupq_x_u16): Likewise.
! 	(viwdupq_x_u32): Likewise.
! 	(vidupq_x_u8): Likewise.
! 	(vddupq_x_u8): Likewise.
! 	(vidupq_x_u16): Likewise.
! 	(vddupq_x_u16): Likewise.
! 	(vidupq_x_u32): Likewise.
! 	(vddupq_x_u32): Likewise.
! 	(vshrq_x): Likewise.
  
! 2020-03-20  Richard Biener  <rguenther@suse.de>
  
! 	* tree-vect-slp.c (vect_analyze_slp_instance): Push the stmts
! 	to vectorize for CTOR defs.
  
! 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
!             Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
  
! 	* config/arm/arm-builtins.c (LDRGBWBS_QUALIFIERS): Define builtin
! 	qualifier.
! 	(LDRGBWBU_QUALIFIERS): Likewise.
! 	(LDRGBWBS_Z_QUALIFIERS): Likewise.
! 	(LDRGBWBU_Z_QUALIFIERS): Likewise.
! 	(STRSBWBS_QUALIFIERS): Likewise.
! 	(STRSBWBU_QUALIFIERS): Likewise.
! 	(STRSBWBS_P_QUALIFIERS): Likewise.
! 	(STRSBWBU_P_QUALIFIERS): Likewise.
! 	* config/arm/arm_mve.h (vldrdq_gather_base_wb_s64): Define macro.
! 	(vldrdq_gather_base_wb_u64): Likewise.
! 	(vldrdq_gather_base_wb_z_s64): Likewise.
! 	(vldrdq_gather_base_wb_z_u64): Likewise.
! 	(vldrwq_gather_base_wb_f32): Likewise.
! 	(vldrwq_gather_base_wb_s32): Likewise.
! 	(vldrwq_gather_base_wb_u32): Likewise.
! 	(vldrwq_gather_base_wb_z_f32): Likewise.
! 	(vldrwq_gather_base_wb_z_s32): Likewise.
! 	(vldrwq_gather_base_wb_z_u32): Likewise.
! 	(vstrdq_scatter_base_wb_p_s64): Likewise.
! 	(vstrdq_scatter_base_wb_p_u64): Likewise.
! 	(vstrdq_scatter_base_wb_s64): Likewise.
! 	(vstrdq_scatter_base_wb_u64): Likewise.
! 	(vstrwq_scatter_base_wb_p_s32): Likewise.
! 	(vstrwq_scatter_base_wb_p_f32): Likewise.
! 	(vstrwq_scatter_base_wb_p_u32): Likewise.
! 	(vstrwq_scatter_base_wb_s32): Likewise.
! 	(vstrwq_scatter_base_wb_u32): Likewise.
! 	(vstrwq_scatter_base_wb_f32): Likewise.
! 	(__arm_vldrdq_gather_base_wb_s64): Define intrinsic.
! 	(__arm_vldrdq_gather_base_wb_u64): Likewise.
! 	(__arm_vldrdq_gather_base_wb_z_s64): Likewise.
! 	(__arm_vldrdq_gather_base_wb_z_u64): Likewise.
! 	(__arm_vldrwq_gather_base_wb_s32): Likewise.
! 	(__arm_vldrwq_gather_base_wb_u32): Likewise.
! 	(__arm_vldrwq_gather_base_wb_z_s32): Likewise.
! 	(__arm_vldrwq_gather_base_wb_z_u32): Likewise.
! 	(__arm_vstrdq_scatter_base_wb_s64): Likewise.
! 	(__arm_vstrdq_scatter_base_wb_u64): Likewise.
! 	(__arm_vstrdq_scatter_base_wb_p_s64): Likewise.
! 	(__arm_vstrdq_scatter_base_wb_p_u64): Likewise.
! 	(__arm_vstrwq_scatter_base_wb_p_s32): Likewise.
! 	(__arm_vstrwq_scatter_base_wb_p_u32): Likewise.
! 	(__arm_vstrwq_scatter_base_wb_s32): Likewise.
! 	(__arm_vstrwq_scatter_base_wb_u32): Likewise.
! 	(__arm_vldrwq_gather_base_wb_f32): Likewise.
! 	(__arm_vldrwq_gather_base_wb_z_f32): Likewise.
! 	(__arm_vstrwq_scatter_base_wb_f32): Likewise.
! 	(__arm_vstrwq_scatter_base_wb_p_f32): Likewise.
! 	(vstrwq_scatter_base_wb): Define polymorphic variant.
! 	(vstrwq_scatter_base_wb_p): Likewise.
! 	(vstrdq_scatter_base_wb_p): Likewise.
! 	(vstrdq_scatter_base_wb): Likewise.
! 	* config/arm/arm_mve_builtins.def (LDRGBWBS_QUALIFIERS): Use builtin
! 	qualifier.
! 	* config/arm/mve.md (mve_vstrwq_scatter_base_wb_<supf>v4si): Define RTL
  	pattern.
! 	(mve_vstrwq_scatter_base_wb_add_<supf>v4si): Likewise.
! 	(mve_vstrwq_scatter_base_wb_<supf>v4si_insn): Likewise.
! 	(mve_vstrwq_scatter_base_wb_p_<supf>v4si): Likewise.
! 	(mve_vstrwq_scatter_base_wb_p_add_<supf>v4si): Likewise.
! 	(mve_vstrwq_scatter_base_wb_p_<supf>v4si_insn): Likewise.
! 	(mve_vstrwq_scatter_base_wb_fv4sf): Likewise.
! 	(mve_vstrwq_scatter_base_wb_add_fv4sf): Likewise.
! 	(mve_vstrwq_scatter_base_wb_fv4sf_insn): Likewise.
! 	(mve_vstrwq_scatter_base_wb_p_fv4sf): Likewise.
! 	(mve_vstrwq_scatter_base_wb_p_add_fv4sf): Likewise.
! 	(mve_vstrwq_scatter_base_wb_p_fv4sf_insn): Likewise.
! 	(mve_vstrdq_scatter_base_wb_<supf>v2di): Likewise.
! 	(mve_vstrdq_scatter_base_wb_add_<supf>v2di): Likewise.
! 	(mve_vstrdq_scatter_base_wb_<supf>v2di_insn): Likewise.
! 	(mve_vstrdq_scatter_base_wb_p_<supf>v2di): Likewise.
! 	(mve_vstrdq_scatter_base_wb_p_add_<supf>v2di): Likewise.
! 	(mve_vstrdq_scatter_base_wb_p_<supf>v2di_insn): Likewise.
! 	(mve_vldrwq_gather_base_wb_<supf>v4si): Likewise.
! 	(mve_vldrwq_gather_base_wb_<supf>v4si_insn): Likewise.
! 	(mve_vldrwq_gather_base_wb_z_<supf>v4si): Likewise.
! 	(mve_vldrwq_gather_base_wb_z_<supf>v4si_insn): Likewise.
! 	(mve_vldrwq_gather_base_wb_fv4sf): Likewise.
! 	(mve_vldrwq_gather_base_wb_fv4sf_insn): Likewise.
! 	(mve_vldrwq_gather_base_wb_z_fv4sf): Likewise.
! 	(mve_vldrwq_gather_base_wb_z_fv4sf_insn): Likewise.
! 	(mve_vldrdq_gather_base_wb_<supf>v2di): Likewise.
! 	(mve_vldrdq_gather_base_wb_<supf>v2di_insn): Likewise.
! 	(mve_vldrdq_gather_base_wb_z_<supf>v2di): Likewise.
! 	(mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Likewise.
! 
! 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
!             Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
! 
! 	* config/arm/arm-builtins.c
! 	(QUINOP_UNONE_UNONE_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Define quinary
! 	builtin qualifier.
! 	* config/arm/arm_mve.h (vddupq_m_n_u8): Define macro.
! 	(vddupq_m_n_u32): Likewise.
! 	(vddupq_m_n_u16): Likewise.
! 	(vddupq_m_wb_u8): Likewise.
! 	(vddupq_m_wb_u16): Likewise.
! 	(vddupq_m_wb_u32): Likewise.
! 	(vddupq_n_u8): Likewise.
! 	(vddupq_n_u32): Likewise.
! 	(vddupq_n_u16): Likewise.
! 	(vddupq_wb_u8): Likewise.
! 	(vddupq_wb_u16): Likewise.
! 	(vddupq_wb_u32): Likewise.
! 	(vdwdupq_m_n_u8): Likewise.
! 	(vdwdupq_m_n_u32): Likewise.
! 	(vdwdupq_m_n_u16): Likewise.
! 	(vdwdupq_m_wb_u8): Likewise.
! 	(vdwdupq_m_wb_u32): Likewise.
! 	(vdwdupq_m_wb_u16): Likewise.
! 	(vdwdupq_n_u8): Likewise.
! 	(vdwdupq_n_u32): Likewise.
! 	(vdwdupq_n_u16): Likewise.
! 	(vdwdupq_wb_u8): Likewise.
! 	(vdwdupq_wb_u32): Likewise.
! 	(vdwdupq_wb_u16): Likewise.
! 	(vidupq_m_n_u8): Likewise.
! 	(vidupq_m_n_u32): Likewise.
! 	(vidupq_m_n_u16): Likewise.
! 	(vidupq_m_wb_u8): Likewise.
! 	(vidupq_m_wb_u16): Likewise.
! 	(vidupq_m_wb_u32): Likewise.
! 	(vidupq_n_u8): Likewise.
! 	(vidupq_n_u32): Likewise.
! 	(vidupq_n_u16): Likewise.
! 	(vidupq_wb_u8): Likewise.
! 	(vidupq_wb_u16): Likewise.
! 	(vidupq_wb_u32): Likewise.
! 	(viwdupq_m_n_u8): Likewise.
! 	(viwdupq_m_n_u32): Likewise.
! 	(viwdupq_m_n_u16): Likewise.
! 	(viwdupq_m_wb_u8): Likewise.
! 	(viwdupq_m_wb_u32): Likewise.
! 	(viwdupq_m_wb_u16): Likewise.
! 	(viwdupq_n_u8): Likewise.
! 	(viwdupq_n_u32): Likewise.
! 	(viwdupq_n_u16): Likewise.
! 	(viwdupq_wb_u8): Likewise.
! 	(viwdupq_wb_u32): Likewise.
! 	(viwdupq_wb_u16): Likewise.
! 	(__arm_vddupq_m_n_u8): Define intrinsic.
! 	(__arm_vddupq_m_n_u32): Likewise.
! 	(__arm_vddupq_m_n_u16): Likewise.
! 	(__arm_vddupq_m_wb_u8): Likewise.
! 	(__arm_vddupq_m_wb_u16): Likewise.
! 	(__arm_vddupq_m_wb_u32): Likewise.
! 	(__arm_vddupq_n_u8): Likewise.
! 	(__arm_vddupq_n_u32): Likewise.
! 	(__arm_vddupq_n_u16): Likewise.
! 	(__arm_vdwdupq_m_n_u8): Likewise.
! 	(__arm_vdwdupq_m_n_u32): Likewise.
! 	(__arm_vdwdupq_m_n_u16): Likewise.
! 	(__arm_vdwdupq_m_wb_u8): Likewise.
! 	(__arm_vdwdupq_m_wb_u32): Likewise.
! 	(__arm_vdwdupq_m_wb_u16): Likewise.
! 	(__arm_vdwdupq_n_u8): Likewise.
! 	(__arm_vdwdupq_n_u32): Likewise.
! 	(__arm_vdwdupq_n_u16): Likewise.
! 	(__arm_vdwdupq_wb_u8): Likewise.
! 	(__arm_vdwdupq_wb_u32): Likewise.
! 	(__arm_vdwdupq_wb_u16): Likewise.
! 	(__arm_vidupq_m_n_u8): Likewise.
! 	(__arm_vidupq_m_n_u32): Likewise.
! 	(__arm_vidupq_m_n_u16): Likewise.
! 	(__arm_vidupq_n_u8): Likewise.
! 	(__arm_vidupq_m_wb_u8): Likewise.
! 	(__arm_vidupq_m_wb_u16): Likewise.
! 	(__arm_vidupq_m_wb_u32): Likewise.
! 	(__arm_vidupq_n_u32): Likewise.
! 	(__arm_vidupq_n_u16): Likewise.
! 	(__arm_vidupq_wb_u8): Likewise.
! 	(__arm_vidupq_wb_u16): Likewise.
! 	(__arm_vidupq_wb_u32): Likewise.
! 	(__arm_vddupq_wb_u8): Likewise.
! 	(__arm_vddupq_wb_u16): Likewise.
! 	(__arm_vddupq_wb_u32): Likewise.
! 	(__arm_viwdupq_m_n_u8): Likewise.
! 	(__arm_viwdupq_m_n_u32): Likewise.
! 	(__arm_viwdupq_m_n_u16): Likewise.
! 	(__arm_viwdupq_m_wb_u8): Likewise.
! 	(__arm_viwdupq_m_wb_u32): Likewise.
! 	(__arm_viwdupq_m_wb_u16): Likewise.
! 	(__arm_viwdupq_n_u8): Likewise.
! 	(__arm_viwdupq_n_u32): Likewise.
! 	(__arm_viwdupq_n_u16): Likewise.
! 	(__arm_viwdupq_wb_u8): Likewise.
! 	(__arm_viwdupq_wb_u32): Likewise.
! 	(__arm_viwdupq_wb_u16): Likewise.
! 	(vidupq_m): Define polymorphic variant.
! 	(vddupq_m): Likewise.
! 	(vidupq_u16): Likewise.
! 	(vidupq_u32): Likewise.
! 	(vidupq_u8): Likewise.
! 	(vddupq_u16): Likewise.
! 	(vddupq_u32): Likewise.
! 	(vddupq_u8): Likewise.
! 	(viwdupq_m): Likewise.
! 	(viwdupq_u16): Likewise.
! 	(viwdupq_u32): Likewise.
! 	(viwdupq_u8): Likewise.
! 	(vdwdupq_m): Likewise.
! 	(vdwdupq_u16): Likewise.
! 	(vdwdupq_u32): Likewise.
! 	(vdwdupq_u8): Likewise.
! 	* config/arm/arm_mve_builtins.def
! 	(QUINOP_UNONE_UNONE_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Use builtin
! 	qualifier.
! 	* config/arm/mve.md (mve_vidupq_n_u<mode>): Define RTL pattern.
! 	(mve_vidupq_u<mode>_insn): Likewise.
! 	(mve_vidupq_m_n_u<mode>): Likewise.
! 	(mve_vidupq_m_wb_u<mode>_insn): Likewise.
! 	(mve_vddupq_n_u<mode>): Likewise.
! 	(mve_vddupq_u<mode>_insn): Likewise.
! 	(mve_vddupq_m_n_u<mode>): Likewise.
! 	(mve_vddupq_m_wb_u<mode>_insn): Likewise.
! 	(mve_vdwdupq_n_u<mode>): Likewise.
! 	(mve_vdwdupq_wb_u<mode>): Likewise.
! 	(mve_vdwdupq_wb_u<mode>_insn): Likewise.
! 	(mve_vdwdupq_m_n_u<mode>): Likewise.
! 	(mve_vdwdupq_m_wb_u<mode>): Likewise.
! 	(mve_vdwdupq_m_wb_u<mode>_insn): Likewise.
! 	(mve_viwdupq_n_u<mode>): Likewise.
! 	(mve_viwdupq_wb_u<mode>): Likewise.
! 	(mve_viwdupq_wb_u<mode>_insn): Likewise.
! 	(mve_viwdupq_m_n_u<mode>): Likewise.
! 	(mve_viwdupq_m_wb_u<mode>): Likewise.
! 	(mve_viwdupq_m_wb_u<mode>_insn): Likewise.
! 
! 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm_mve.h (vreinterpretq_s16_s32): Define macro.
! 	(vreinterpretq_s16_s64): Likewise.
! 	(vreinterpretq_s16_s8): Likewise.
! 	(vreinterpretq_s16_u16): Likewise.
! 	(vreinterpretq_s16_u32): Likewise.
! 	(vreinterpretq_s16_u64): Likewise.
! 	(vreinterpretq_s16_u8): Likewise.
! 	(vreinterpretq_s32_s16): Likewise.
! 	(vreinterpretq_s32_s64): Likewise.
! 	(vreinterpretq_s32_s8): Likewise.
! 	(vreinterpretq_s32_u16): Likewise.
! 	(vreinterpretq_s32_u32): Likewise.
! 	(vreinterpretq_s32_u64): Likewise.
! 	(vreinterpretq_s32_u8): Likewise.
! 	(vreinterpretq_s64_s16): Likewise.
! 	(vreinterpretq_s64_s32): Likewise.
! 	(vreinterpretq_s64_s8): Likewise.
! 	(vreinterpretq_s64_u16): Likewise.
! 	(vreinterpretq_s64_u32): Likewise.
! 	(vreinterpretq_s64_u64): Likewise.
! 	(vreinterpretq_s64_u8): Likewise.
! 	(vreinterpretq_s8_s16): Likewise.
! 	(vreinterpretq_s8_s32): Likewise.
! 	(vreinterpretq_s8_s64): Likewise.
! 	(vreinterpretq_s8_u16): Likewise.
! 	(vreinterpretq_s8_u32): Likewise.
! 	(vreinterpretq_s8_u64): Likewise.
! 	(vreinterpretq_s8_u8): Likewise.
! 	(vreinterpretq_u16_s16): Likewise.
! 	(vreinterpretq_u16_s32): Likewise.
! 	(vreinterpretq_u16_s64): Likewise.
! 	(vreinterpretq_u16_s8): Likewise.
! 	(vreinterpretq_u16_u32): Likewise.
! 	(vreinterpretq_u16_u64): Likewise.
! 	(vreinterpretq_u16_u8): Likewise.
! 	(vreinterpretq_u32_s16): Likewise.
! 	(vreinterpretq_u32_s32): Likewise.
! 	(vreinterpretq_u32_s64): Likewise.
! 	(vreinterpretq_u32_s8): Likewise.
! 	(vreinterpretq_u32_u16): Likewise.
! 	(vreinterpretq_u32_u64): Likewise.
! 	(vreinterpretq_u32_u8): Likewise.
! 	(vreinterpretq_u64_s16): Likewise.
! 	(vreinterpretq_u64_s32): Likewise.
! 	(vreinterpretq_u64_s64): Likewise.
! 	(vreinterpretq_u64_s8): Likewise.
! 	(vreinterpretq_u64_u16): Likewise.
! 	(vreinterpretq_u64_u32): Likewise.
! 	(vreinterpretq_u64_u8): Likewise.
! 	(vreinterpretq_u8_s16): Likewise.
! 	(vreinterpretq_u8_s32): Likewise.
! 	(vreinterpretq_u8_s64): Likewise.
! 	(vreinterpretq_u8_s8): Likewise.
! 	(vreinterpretq_u8_u16): Likewise.
! 	(vreinterpretq_u8_u32): Likewise.
! 	(vreinterpretq_u8_u64): Likewise.
! 	(vreinterpretq_s32_f16): Likewise.
! 	(vreinterpretq_s32_f32): Likewise.
! 	(vreinterpretq_u16_f16): Likewise.
! 	(vreinterpretq_u16_f32): Likewise.
! 	(vreinterpretq_u32_f16): Likewise.
! 	(vreinterpretq_u32_f32): Likewise.
! 	(vreinterpretq_u64_f16): Likewise.
! 	(vreinterpretq_u64_f32): Likewise.
! 	(vreinterpretq_u8_f16): Likewise.
! 	(vreinterpretq_u8_f32): Likewise.
! 	(vreinterpretq_f16_f32): Likewise.
! 	(vreinterpretq_f16_s16): Likewise.
! 	(vreinterpretq_f16_s32): Likewise.
! 	(vreinterpretq_f16_s64): Likewise.
! 	(vreinterpretq_f16_s8): Likewise.
! 	(vreinterpretq_f16_u16): Likewise.
! 	(vreinterpretq_f16_u32): Likewise.
! 	(vreinterpretq_f16_u64): Likewise.
! 	(vreinterpretq_f16_u8): Likewise.
! 	(vreinterpretq_f32_f16): Likewise.
! 	(vreinterpretq_f32_s16): Likewise.
! 	(vreinterpretq_f32_s32): Likewise.
! 	(vreinterpretq_f32_s64): Likewise.
! 	(vreinterpretq_f32_s8): Likewise.
! 	(vreinterpretq_f32_u16): Likewise.
! 	(vreinterpretq_f32_u32): Likewise.
! 	(vreinterpretq_f32_u64): Likewise.
! 	(vreinterpretq_f32_u8): Likewise.
! 	(vreinterpretq_s16_f16): Likewise.
! 	(vreinterpretq_s16_f32): Likewise.
! 	(vreinterpretq_s64_f16): Likewise.
! 	(vreinterpretq_s64_f32): Likewise.
! 	(vreinterpretq_s8_f16): Likewise.
! 	(vreinterpretq_s8_f32): Likewise.
! 	(vuninitializedq_u8): Likewise.
! 	(vuninitializedq_u16): Likewise.
! 	(vuninitializedq_u32): Likewise.
! 	(vuninitializedq_u64): Likewise.
! 	(vuninitializedq_s8): Likewise.
! 	(vuninitializedq_s16): Likewise.
! 	(vuninitializedq_s32): Likewise.
! 	(vuninitializedq_s64): Likewise.
! 	(vuninitializedq_f16): Likewise.
! 	(vuninitializedq_f32): Likewise.
! 	(__arm_vuninitializedq_u8): Define intrinsic.
! 	(__arm_vuninitializedq_u16): Likewise.
! 	(__arm_vuninitializedq_u32): Likewise.
! 	(__arm_vuninitializedq_u64): Likewise.
! 	(__arm_vuninitializedq_s8): Likewise.
! 	(__arm_vuninitializedq_s16): Likewise.
! 	(__arm_vuninitializedq_s32): Likewise.
! 	(__arm_vuninitializedq_s64): Likewise.
! 	(__arm_vreinterpretq_s16_s32): Likewise.
! 	(__arm_vreinterpretq_s16_s64): Likewise.
! 	(__arm_vreinterpretq_s16_s8): Likewise.
! 	(__arm_vreinterpretq_s16_u16): Likewise.
! 	(__arm_vreinterpretq_s16_u32): Likewise.
! 	(__arm_vreinterpretq_s16_u64): Likewise.
! 	(__arm_vreinterpretq_s16_u8): Likewise.
! 	(__arm_vreinterpretq_s32_s16): Likewise.
! 	(__arm_vreinterpretq_s32_s64): Likewise.
! 	(__arm_vreinterpretq_s32_s8): Likewise.
! 	(__arm_vreinterpretq_s32_u16): Likewise.
! 	(__arm_vreinterpretq_s32_u32): Likewise.
! 	(__arm_vreinterpretq_s32_u64): Likewise.
! 	(__arm_vreinterpretq_s32_u8): Likewise.
! 	(__arm_vreinterpretq_s64_s16): Likewise.
! 	(__arm_vreinterpretq_s64_s32): Likewise.
! 	(__arm_vreinterpretq_s64_s8): Likewise.
! 	(__arm_vreinterpretq_s64_u16): Likewise.
! 	(__arm_vreinterpretq_s64_u32): Likewise.
! 	(__arm_vreinterpretq_s64_u64): Likewise.
! 	(__arm_vreinterpretq_s64_u8): Likewise.
! 	(__arm_vreinterpretq_s8_s16): Likewise.
! 	(__arm_vreinterpretq_s8_s32): Likewise.
! 	(__arm_vreinterpretq_s8_s64): Likewise.
! 	(__arm_vreinterpretq_s8_u16): Likewise.
! 	(__arm_vreinterpretq_s8_u32): Likewise.
! 	(__arm_vreinterpretq_s8_u64): Likewise.
! 	(__arm_vreinterpretq_s8_u8): Likewise.
! 	(__arm_vreinterpretq_u16_s16): Likewise.
! 	(__arm_vreinterpretq_u16_s32): Likewise.
! 	(__arm_vreinterpretq_u16_s64): Likewise.
! 	(__arm_vreinterpretq_u16_s8): Likewise.
! 	(__arm_vreinterpretq_u16_u32): Likewise.
! 	(__arm_vreinterpretq_u16_u64): Likewise.
! 	(__arm_vreinterpretq_u16_u8): Likewise.
! 	(__arm_vreinterpretq_u32_s16): Likewise.
! 	(__arm_vreinterpretq_u32_s32): Likewise.
! 	(__arm_vreinterpretq_u32_s64): Likewise.
! 	(__arm_vreinterpretq_u32_s8): Likewise.
! 	(__arm_vreinterpretq_u32_u16): Likewise.
! 	(__arm_vreinterpretq_u32_u64): Likewise.
! 	(__arm_vreinterpretq_u32_u8): Likewise.
! 	(__arm_vreinterpretq_u64_s16): Likewise.
! 	(__arm_vreinterpretq_u64_s32): Likewise.
! 	(__arm_vreinterpretq_u64_s64): Likewise.
! 	(__arm_vreinterpretq_u64_s8): Likewise.
! 	(__arm_vreinterpretq_u64_u16): Likewise.
! 	(__arm_vreinterpretq_u64_u32): Likewise.
! 	(__arm_vreinterpretq_u64_u8): Likewise.
! 	(__arm_vreinterpretq_u8_s16): Likewise.
! 	(__arm_vreinterpretq_u8_s32): Likewise.
! 	(__arm_vreinterpretq_u8_s64): Likewise.
! 	(__arm_vreinterpretq_u8_s8): Likewise.
! 	(__arm_vreinterpretq_u8_u16): Likewise.
! 	(__arm_vreinterpretq_u8_u32): Likewise.
! 	(__arm_vreinterpretq_u8_u64): Likewise.
! 	(__arm_vuninitializedq_f16): Likewise.
! 	(__arm_vuninitializedq_f32): Likewise.
! 	(__arm_vreinterpretq_s32_f16): Likewise.
! 	(__arm_vreinterpretq_s32_f32): Likewise.
! 	(__arm_vreinterpretq_s16_f16): Likewise.
! 	(__arm_vreinterpretq_s16_f32): Likewise.
! 	(__arm_vreinterpretq_s64_f16): Likewise.
! 	(__arm_vreinterpretq_s64_f32): Likewise.
! 	(__arm_vreinterpretq_s8_f16): Likewise.
! 	(__arm_vreinterpretq_s8_f32): Likewise.
! 	(__arm_vreinterpretq_u16_f16): Likewise.
! 	(__arm_vreinterpretq_u16_f32): Likewise.
! 	(__arm_vreinterpretq_u32_f16): Likewise.
! 	(__arm_vreinterpretq_u32_f32): Likewise.
! 	(__arm_vreinterpretq_u64_f16): Likewise.
! 	(__arm_vreinterpretq_u64_f32): Likewise.
! 	(__arm_vreinterpretq_u8_f16): Likewise.
! 	(__arm_vreinterpretq_u8_f32): Likewise.
! 	(__arm_vreinterpretq_f16_f32): Likewise.
! 	(__arm_vreinterpretq_f16_s16): Likewise.
! 	(__arm_vreinterpretq_f16_s32): Likewise.
! 	(__arm_vreinterpretq_f16_s64): Likewise.
! 	(__arm_vreinterpretq_f16_s8): Likewise.
! 	(__arm_vreinterpretq_f16_u16): Likewise.
! 	(__arm_vreinterpretq_f16_u32): Likewise.
! 	(__arm_vreinterpretq_f16_u64): Likewise.
! 	(__arm_vreinterpretq_f16_u8): Likewise.
! 	(__arm_vreinterpretq_f32_f16): Likewise.
! 	(__arm_vreinterpretq_f32_s16): Likewise.
! 	(__arm_vreinterpretq_f32_s32): Likewise.
! 	(__arm_vreinterpretq_f32_s64): Likewise.
! 	(__arm_vreinterpretq_f32_s8): Likewise.
! 	(__arm_vreinterpretq_f32_u16): Likewise.
! 	(__arm_vreinterpretq_f32_u32): Likewise.
! 	(__arm_vreinterpretq_f32_u64): Likewise.
! 	(__arm_vreinterpretq_f32_u8): Likewise.
! 	(vuninitializedq): Define polymorphic variant.
! 	(vreinterpretq_f16): Likewise.
! 	(vreinterpretq_f32): Likewise.
! 	(vreinterpretq_s16): Likewise.
! 	(vreinterpretq_s32): Likewise.
! 	(vreinterpretq_s64): Likewise.
! 	(vreinterpretq_s8): Likewise.
! 	(vreinterpretq_u16): Likewise.
! 	(vreinterpretq_u32): Likewise.
! 	(vreinterpretq_u64): Likewise.
! 	(vreinterpretq_u8): Likewise.
! 
! 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
!             Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
! 
! 	* config/arm/arm_mve.h (vaddq_s8): Define macro.
! 	(vaddq_s16): Likewise.
! 	(vaddq_s32): Likewise.
! 	(vaddq_u8): Likewise.
! 	(vaddq_u16): Likewise.
! 	(vaddq_u32): Likewise.
! 	(vaddq_f16): Likewise.
! 	(vaddq_f32): Likewise.
! 	(__arm_vaddq_s8): Define intrinsic.
! 	(__arm_vaddq_s16): Likewise.
! 	(__arm_vaddq_s32): Likewise.
! 	(__arm_vaddq_u8): Likewise.
! 	(__arm_vaddq_u16): Likewise.
! 	(__arm_vaddq_u32): Likewise.
! 	(__arm_vaddq_f16): Likewise.
! 	(__arm_vaddq_f32): Likewise.
! 	(vaddq): Define polymorphic variant.
! 	* config/arm/iterators.md (VNIM): Define mode iterator for common types
! 	Neon, IWMMXT and MVE.
! 	(VNINOTM): Likewise.
! 	* config/arm/mve.md (mve_vaddq<mode>): Define RTL pattern.
! 	(mve_vaddq_f<mode>): Define RTL pattern.
! 	* config/arm/neon.md (add<mode>3): Rename to addv4hf3 RTL pattern.
! 	(addv8hf3_neon): Define RTL pattern.
! 	* config/arm/vec-common.md (add<mode>3): Modify standard add RTL pattern
! 	to support MVE.
! 	(addv8hf3): Define standard RTL pattern for MVE and Neon.
! 	(add<mode>3): Modify existing standard add RTL pattern for Neon and IWMMXT.
! 
! 2020-03-20  Martin Liska  <mliska@suse.cz>
! 
! 	PR ipa/94232
! 	* ipa-cp.c (ipa_get_jf_ancestor_result): Use offset in bytes. Previously
! 	build_ref_for_offset function was used and it transforms off to bytes
! 	from bits.
! 
! 2020-03-20  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/94266
! 	* gimple-ssa-sprintf.c (get_origin_and_offset): Use the
! 	type of the underlying object to adjust for the containing
! 	field if available.
! 
! 2020-03-20  Andre Vieira  <andre.simoesdiasvieira@arm.com>
! 
! 	* config/arm/unspecs.md (UNSPEC_GET_FPSCR): Rename this to ...
! 	(VUNSPEC_GET_FPSCR): ... this, and move it to vunspec.
! 	* config/arm/vfp.md: (get_fpscr, set_fpscr): Revert to old patterns.
! 
! 2020-03-20  Andre Vieira  <andre.simoesdiasvieira@arm.com>
! 
! 	* config/arm/mve.md (mve_mov<mode>): Fix R->R case.
! 
! 2020-03-20  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/94224
! 	* gimple-ssa-store-merging.c
! 	(imm_store_chain_info::coalesce_immediate): Don't consider overlapping
! 	or adjacent INTEGER_CST rhs_code stores as mergeable if they have
! 	different lp_nr.
! 
! 2020-03-20  Andre Vieira  <andre.simoesdiasvieira@arm.com>
! 
! 	* config/arm/arm.md (define_attr "conds"): Fix logic for neon and mve.
! 
! 2020-03-19  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	PR ipa/94202
! 	* cgraph.c (cgraph_node::function_symbol): Fix availability computation.
! 	(cgraph_node::function_or_virtual_thunk_symbol): Likewise.
! 
! 2020-03-19  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	PR ipa/92372
! 	* cgraphunit.c (process_function_and_variable_attributes): warn
! 	for flatten attribute on alias.
! 	* ipa-inline.c (ipa_inline): Do not ICE on flatten attribute on alias.
! 
! 2020-03-19  Martin Liska  <mliska@suse.cz>
! 
! 	* lto-section-in.c: Add ext_symtab.
! 	* lto-streamer-out.c (write_symbol_extension_info): New.
! 	(produce_symtab_extension): New.
! 	(produce_asm_for_decls): Stream also produce_symtab_extension.
! 	* lto-streamer.h (enum lto_section_type): New section.
! 
! 2020-03-19  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/94211
! 	* tree-ssa-phiopt.c (value_replacement): Use estimate_num_insns_seq
! 	instead of estimate_num_insns for bb_seq (middle_bb).  Rename
! 	emtpy_or_with_defined_p variable to empty_or_with_defined_p, adjust
! 	all uses.
! 
! 2020-03-19  Richard Biener  <rguenther@suse.de>
! 
! 	PR ipa/94217
! 	* ipa-cp.c (ipa_get_jf_ancestor_result): Avoid build_fold_addr_expr
! 	and build_ref_for_offset.
! 
! 2020-03-19  Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/94216
! 	* fold-const.c (fold_binary_loc): Avoid using
! 	build_fold_addr_expr when we really want an ADDR_EXPR.
! 
! 2020-03-18  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	* config/rs6000/constraints.md (wd, wf, wi, ws, ww): New undocumented
! 	aliases for "wa".
! 
! 2020-03-12  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR rtl-optimization/90275
! 	* cse.c (cse_insn): Delete no-op register moves too.
! 
! 2020-03-18  Martin Sebor  <msebor@redhat.com>
! 
! 	PR ipa/92799
! 	* cgraphunit.c (process_function_and_variable_attributes): Also
! 	complain about weakref function definitions and drop all effects
! 	of the attribute.
! 
! 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm_mve.h (vstrdq_scatter_base_p_s64): Define macro.
! 	(vstrdq_scatter_base_p_u64): Likewise.
! 	(vstrdq_scatter_base_s64): Likewise.
! 	(vstrdq_scatter_base_u64): Likewise.
! 	(vstrdq_scatter_offset_p_s64): Likewise.
! 	(vstrdq_scatter_offset_p_u64): Likewise.
! 	(vstrdq_scatter_offset_s64): Likewise.
! 	(vstrdq_scatter_offset_u64): Likewise.
! 	(vstrdq_scatter_shifted_offset_p_s64): Likewise.
! 	(vstrdq_scatter_shifted_offset_p_u64): Likewise.
! 	(vstrdq_scatter_shifted_offset_s64): Likewise.
! 	(vstrdq_scatter_shifted_offset_u64): Likewise.
! 	(vstrhq_scatter_offset_f16): Likewise.
! 	(vstrhq_scatter_offset_p_f16): Likewise.
! 	(vstrhq_scatter_shifted_offset_f16): Likewise.
! 	(vstrhq_scatter_shifted_offset_p_f16): Likewise.
! 	(vstrwq_scatter_base_f32): Likewise.
! 	(vstrwq_scatter_base_p_f32): Likewise.
! 	(vstrwq_scatter_offset_f32): Likewise.
! 	(vstrwq_scatter_offset_p_f32): Likewise.
! 	(vstrwq_scatter_offset_p_s32): Likewise.
! 	(vstrwq_scatter_offset_p_u32): Likewise.
! 	(vstrwq_scatter_offset_s32): Likewise.
! 	(vstrwq_scatter_offset_u32): Likewise.
! 	(vstrwq_scatter_shifted_offset_f32): Likewise.
! 	(vstrwq_scatter_shifted_offset_p_f32): Likewise.
! 	(vstrwq_scatter_shifted_offset_p_s32): Likewise.
! 	(vstrwq_scatter_shifted_offset_p_u32): Likewise.
! 	(vstrwq_scatter_shifted_offset_s32): Likewise.
! 	(vstrwq_scatter_shifted_offset_u32): Likewise.
! 	(__arm_vstrdq_scatter_base_p_s64): Define intrinsic.
! 	(__arm_vstrdq_scatter_base_p_u64): Likewise.
! 	(__arm_vstrdq_scatter_base_s64): Likewise.
! 	(__arm_vstrdq_scatter_base_u64): Likewise.
! 	(__arm_vstrdq_scatter_offset_p_s64): Likewise.
! 	(__arm_vstrdq_scatter_offset_p_u64): Likewise.
! 	(__arm_vstrdq_scatter_offset_s64): Likewise.
! 	(__arm_vstrdq_scatter_offset_u64): Likewise.
! 	(__arm_vstrdq_scatter_shifted_offset_p_s64): Likewise.
! 	(__arm_vstrdq_scatter_shifted_offset_p_u64): Likewise.
! 	(__arm_vstrdq_scatter_shifted_offset_s64): Likewise.
! 	(__arm_vstrdq_scatter_shifted_offset_u64): Likewise.
! 	(__arm_vstrwq_scatter_offset_p_s32): Likewise.
! 	(__arm_vstrwq_scatter_offset_p_u32): Likewise.
! 	(__arm_vstrwq_scatter_offset_s32): Likewise.
! 	(__arm_vstrwq_scatter_offset_u32): Likewise.
! 	(__arm_vstrwq_scatter_shifted_offset_p_s32): Likewise.
! 	(__arm_vstrwq_scatter_shifted_offset_p_u32): Likewise.
! 	(__arm_vstrwq_scatter_shifted_offset_s32): Likewise.
! 	(__arm_vstrwq_scatter_shifted_offset_u32): Likewise.
! 	(__arm_vstrhq_scatter_offset_f16): Likewise.
! 	(__arm_vstrhq_scatter_offset_p_f16): Likewise.
! 	(__arm_vstrhq_scatter_shifted_offset_f16): Likewise.
! 	(__arm_vstrhq_scatter_shifted_offset_p_f16): Likewise.
! 	(__arm_vstrwq_scatter_base_f32): Likewise.
! 	(__arm_vstrwq_scatter_base_p_f32): Likewise.
! 	(__arm_vstrwq_scatter_offset_f32): Likewise.
! 	(__arm_vstrwq_scatter_offset_p_f32): Likewise.
! 	(__arm_vstrwq_scatter_shifted_offset_f32): Likewise.
! 	(__arm_vstrwq_scatter_shifted_offset_p_f32): Likewise.
! 	(vstrhq_scatter_offset): Define polymorphic variant.
! 	(vstrhq_scatter_offset_p): Likewise.
! 	(vstrhq_scatter_shifted_offset): Likewise.
! 	(vstrhq_scatter_shifted_offset_p): Likewise.
! 	(vstrwq_scatter_base): Likewise.
! 	(vstrwq_scatter_base_p): Likewise.
! 	(vstrwq_scatter_offset): Likewise.
! 	(vstrwq_scatter_offset_p): Likewise.
! 	(vstrwq_scatter_shifted_offset): Likewise.
! 	(vstrwq_scatter_shifted_offset_p): Likewise.
! 	(vstrdq_scatter_base_p): Likewise.
! 	(vstrdq_scatter_base): Likewise.
! 	(vstrdq_scatter_offset_p): Likewise.
! 	(vstrdq_scatter_offset): Likewise.
! 	(vstrdq_scatter_shifted_offset_p): Likewise.
! 	(vstrdq_scatter_shifted_offset): Likewise.
! 	* config/arm/arm_mve_builtins.def (STRSBS): Use builtin qualifier.
! 	(STRSBS_P): Likewise.
! 	(STRSBU): Likewise.
! 	(STRSBU_P): Likewise.
! 	(STRSS): Likewise.
! 	(STRSS_P): Likewise.
! 	(STRSU): Likewise.
! 	(STRSU_P): Likewise.
! 	* config/arm/constraints.md (Ri): Define.
! 	* config/arm/mve.md (VSTRDSBQ): Define iterator.
! 	(VSTRDSOQ): Likewise.
! 	(VSTRDSSOQ): Likewise.
! 	(VSTRWSOQ): Likewise.
! 	(VSTRWSSOQ): Likewise.
! 	(mve_vstrdq_scatter_base_p_<supf>v2di): Define RTL pattern.
! 	(mve_vstrdq_scatter_base_<supf>v2di): Likewise.
! 	(mve_vstrdq_scatter_offset_p_<supf>v2di): Likewise.
! 	(mve_vstrdq_scatter_offset_<supf>v2di): Likewise.
! 	(mve_vstrdq_scatter_shifted_offset_p_<supf>v2di): Likewise.
! 	(mve_vstrdq_scatter_shifted_offset_<supf>v2di): Likewise.
! 	(mve_vstrhq_scatter_offset_fv8hf): Likewise.
! 	(mve_vstrhq_scatter_offset_p_fv8hf): Likewise.
! 	(mve_vstrhq_scatter_shifted_offset_fv8hf): Likewise.
! 	(mve_vstrhq_scatter_shifted_offset_p_fv8hf): Likewise.
! 	(mve_vstrwq_scatter_base_fv4sf): Likewise.
! 	(mve_vstrwq_scatter_base_p_fv4sf): Likewise.
! 	(mve_vstrwq_scatter_offset_fv4sf): Likewise.
! 	(mve_vstrwq_scatter_offset_p_fv4sf): Likewise.
! 	(mve_vstrwq_scatter_offset_p_<supf>v4si): Likewise.
! 	(mve_vstrwq_scatter_offset_<supf>v4si): Likewise.
! 	(mve_vstrwq_scatter_shifted_offset_fv4sf): Likewise.
! 	(mve_vstrwq_scatter_shifted_offset_p_fv4sf): Likewise.
! 	(mve_vstrwq_scatter_shifted_offset_p_<supf>v4si): Likewise.
! 	(mve_vstrwq_scatter_shifted_offset_<supf>v4si): Likewise.
! 	* config/arm/predicates.md (Ri): Define predicate to check immediate
! 	is the range +/-1016 and multiple of 8.
! 
! 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm_mve.h (vst1q_f32): Define macro.
! 	(vst1q_f16): Likewise.
! 	(vst1q_s8): Likewise.
! 	(vst1q_s32): Likewise.
! 	(vst1q_s16): Likewise.
! 	(vst1q_u8): Likewise.
! 	(vst1q_u32): Likewise.
! 	(vst1q_u16): Likewise.
! 	(vstrhq_f16): Likewise.
! 	(vstrhq_scatter_offset_s32): Likewise.
! 	(vstrhq_scatter_offset_s16): Likewise.
! 	(vstrhq_scatter_offset_u32): Likewise.
! 	(vstrhq_scatter_offset_u16): Likewise.
! 	(vstrhq_scatter_offset_p_s32): Likewise.
! 	(vstrhq_scatter_offset_p_s16): Likewise.
! 	(vstrhq_scatter_offset_p_u32): Likewise.
! 	(vstrhq_scatter_offset_p_u16): Likewise.
! 	(vstrhq_scatter_shifted_offset_s32): Likewise.
! 	(vstrhq_scatter_shifted_offset_s16): Likewise.
! 	(vstrhq_scatter_shifted_offset_u32): Likewise.
! 	(vstrhq_scatter_shifted_offset_u16): Likewise.
! 	(vstrhq_scatter_shifted_offset_p_s32): Likewise.
! 	(vstrhq_scatter_shifted_offset_p_s16): Likewise.
! 	(vstrhq_scatter_shifted_offset_p_u32): Likewise.
! 	(vstrhq_scatter_shifted_offset_p_u16): Likewise.
! 	(vstrhq_s32): Likewise.
! 	(vstrhq_s16): Likewise.
! 	(vstrhq_u32): Likewise.
! 	(vstrhq_u16): Likewise.
! 	(vstrhq_p_f16): Likewise.
! 	(vstrhq_p_s32): Likewise.
! 	(vstrhq_p_s16): Likewise.
! 	(vstrhq_p_u32): Likewise.
! 	(vstrhq_p_u16): Likewise.
! 	(vstrwq_f32): Likewise.
! 	(vstrwq_s32): Likewise.
! 	(vstrwq_u32): Likewise.
! 	(vstrwq_p_f32): Likewise.
! 	(vstrwq_p_s32): Likewise.
! 	(vstrwq_p_u32): Likewise.
! 	(__arm_vst1q_s8): Define intrinsic.
! 	(__arm_vst1q_s32): Likewise.
! 	(__arm_vst1q_s16): Likewise.
! 	(__arm_vst1q_u8): Likewise.
! 	(__arm_vst1q_u32): Likewise.
! 	(__arm_vst1q_u16): Likewise.
! 	(__arm_vstrhq_scatter_offset_s32): Likewise.
! 	(__arm_vstrhq_scatter_offset_s16): Likewise.
! 	(__arm_vstrhq_scatter_offset_u32): Likewise.
! 	(__arm_vstrhq_scatter_offset_u16): Likewise.
! 	(__arm_vstrhq_scatter_offset_p_s32): Likewise.
! 	(__arm_vstrhq_scatter_offset_p_s16): Likewise.
! 	(__arm_vstrhq_scatter_offset_p_u32): Likewise.
! 	(__arm_vstrhq_scatter_offset_p_u16): Likewise.
! 	(__arm_vstrhq_scatter_shifted_offset_s32): Likewise.
! 	(__arm_vstrhq_scatter_shifted_offset_s16): Likewise.
! 	(__arm_vstrhq_scatter_shifted_offset_u32): Likewise.
! 	(__arm_vstrhq_scatter_shifted_offset_u16): Likewise.
! 	(__arm_vstrhq_scatter_shifted_offset_p_s32): Likewise.
! 	(__arm_vstrhq_scatter_shifted_offset_p_s16): Likewise.
! 	(__arm_vstrhq_scatter_shifted_offset_p_u32): Likewise.
! 	(__arm_vstrhq_scatter_shifted_offset_p_u16): Likewise.
! 	(__arm_vstrhq_s32): Likewise.
! 	(__arm_vstrhq_s16): Likewise.
! 	(__arm_vstrhq_u32): Likewise.
! 	(__arm_vstrhq_u16): Likewise.
! 	(__arm_vstrhq_p_s32): Likewise.
! 	(__arm_vstrhq_p_s16): Likewise.
! 	(__arm_vstrhq_p_u32): Likewise.
! 	(__arm_vstrhq_p_u16): Likewise.
! 	(__arm_vstrwq_s32): Likewise.
! 	(__arm_vstrwq_u32): Likewise.
! 	(__arm_vstrwq_p_s32): Likewise.
! 	(__arm_vstrwq_p_u32): Likewise.
! 	(__arm_vstrwq_p_f32): Likewise.
! 	(__arm_vstrwq_f32): Likewise.
! 	(__arm_vst1q_f32): Likewise.
! 	(__arm_vst1q_f16): Likewise.
! 	(__arm_vstrhq_f16): Likewise.
! 	(__arm_vstrhq_p_f16): Likewise.
! 	(vst1q): Define polymorphic variant.
! 	(vstrhq): Likewise.
! 	(vstrhq_p): Likewise.
! 	(vstrhq_scatter_offset_p): Likewise.
! 	(vstrhq_scatter_offset): Likewise.
! 	(vstrhq_scatter_shifted_offset_p): Likewise.
! 	(vstrhq_scatter_shifted_offset): Likewise.
! 	(vstrwq_p): Likewise.
! 	(vstrwq): Likewise.
! 	* config/arm/arm_mve_builtins.def (STRS): Use builtin qualifier.
! 	(STRS_P): Likewise.
! 	(STRSS): Likewise.
! 	(STRSS_P): Likewise.
! 	(STRSU): Likewise.
! 	(STRSU_P): Likewise.
! 	(STRU): Likewise.
! 	(STRU_P): Likewise.
! 	* config/arm/mve.md (VST1Q): Define iterator.
! 	(VSTRHSOQ): Likewise.
! 	(VSTRHSSOQ): Likewise.
! 	(VSTRHQ): Likewise.
! 	(VSTRWQ): Likewise.
! 	(mve_vstrhq_fv8hf): Define RTL pattern.
! 	(mve_vstrhq_p_fv8hf): Likewise.
! 	(mve_vstrhq_p_<supf><mode>): Likewise.
! 	(mve_vstrhq_scatter_offset_p_<supf><mode>): Likewise.
! 	(mve_vstrhq_scatter_offset_<supf><mode>): Likewise.
! 	(mve_vstrhq_scatter_shifted_offset_p_<supf><mode>): Likewise.
! 	(mve_vstrhq_scatter_shifted_offset_<supf><mode>): Likewise.
! 	(mve_vstrhq_<supf><mode>): Likewise.
! 	(mve_vstrwq_fv4sf): Likewise.
! 	(mve_vstrwq_p_fv4sf): Likewise.
! 	(mve_vstrwq_p_<supf>v4si): Likewise.
! 	(mve_vstrwq_<supf>v4si): Likewise.
! 	(mve_vst1q_f<mode>): Define expand.
! 	(mve_vst1q_<supf><mode>): Likewise.
! 
! 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm_mve.h (vld1q_s8): Define macro.
! 	(vld1q_s32): Likewise.
! 	(vld1q_s16): Likewise.
! 	(vld1q_u8): Likewise.
! 	(vld1q_u32): Likewise.
! 	(vld1q_u16): Likewise.
! 	(vldrhq_gather_offset_s32): Likewise.
! 	(vldrhq_gather_offset_s16): Likewise.
! 	(vldrhq_gather_offset_u32): Likewise.
! 	(vldrhq_gather_offset_u16): Likewise.
! 	(vldrhq_gather_offset_z_s32): Likewise.
! 	(vldrhq_gather_offset_z_s16): Likewise.
! 	(vldrhq_gather_offset_z_u32): Likewise.
! 	(vldrhq_gather_offset_z_u16): Likewise.
! 	(vldrhq_gather_shifted_offset_s32): Likewise.
! 	(vldrhq_gather_shifted_offset_s16): Likewise.
! 	(vldrhq_gather_shifted_offset_u32): Likewise.
! 	(vldrhq_gather_shifted_offset_u16): Likewise.
! 	(vldrhq_gather_shifted_offset_z_s32): Likewise.
! 	(vldrhq_gather_shifted_offset_z_s16): Likewise.
! 	(vldrhq_gather_shifted_offset_z_u32): Likewise.
! 	(vldrhq_gather_shifted_offset_z_u16): Likewise.
! 	(vldrhq_s32): Likewise.
! 	(vldrhq_s16): Likewise.
! 	(vldrhq_u32): Likewise.
! 	(vldrhq_u16): Likewise.
! 	(vldrhq_z_s32): Likewise.
! 	(vldrhq_z_s16): Likewise.
! 	(vldrhq_z_u32): Likewise.
! 	(vldrhq_z_u16): Likewise.
! 	(vldrwq_s32): Likewise.
! 	(vldrwq_u32): Likewise.
! 	(vldrwq_z_s32): Likewise.
! 	(vldrwq_z_u32): Likewise.
! 	(vld1q_f32): Likewise.
! 	(vld1q_f16): Likewise.
! 	(vldrhq_f16): Likewise.
! 	(vldrhq_z_f16): Likewise.
! 	(vldrwq_f32): Likewise.
! 	(vldrwq_z_f32): Likewise.
! 	(__arm_vld1q_s8): Define intrinsic.
! 	(__arm_vld1q_s32): Likewise.
! 	(__arm_vld1q_s16): Likewise.
! 	(__arm_vld1q_u8): Likewise.
! 	(__arm_vld1q_u32): Likewise.
! 	(__arm_vld1q_u16): Likewise.
! 	(__arm_vldrhq_gather_offset_s32): Likewise.
! 	(__arm_vldrhq_gather_offset_s16): Likewise.
! 	(__arm_vldrhq_gather_offset_u32): Likewise.
! 	(__arm_vldrhq_gather_offset_u16): Likewise.
! 	(__arm_vldrhq_gather_offset_z_s32): Likewise.
! 	(__arm_vldrhq_gather_offset_z_s16): Likewise.
! 	(__arm_vldrhq_gather_offset_z_u32): Likewise.
! 	(__arm_vldrhq_gather_offset_z_u16): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_s32): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_s16): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_u32): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_u16): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_z_s32): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_z_s16): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_z_u32): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_z_u16): Likewise.
! 	(__arm_vldrhq_s32): Likewise.
! 	(__arm_vldrhq_s16): Likewise.
! 	(__arm_vldrhq_u32): Likewise.
! 	(__arm_vldrhq_u16): Likewise.
! 	(__arm_vldrhq_z_s32): Likewise.
! 	(__arm_vldrhq_z_s16): Likewise.
! 	(__arm_vldrhq_z_u32): Likewise.
! 	(__arm_vldrhq_z_u16): Likewise.
! 	(__arm_vldrwq_s32): Likewise.
! 	(__arm_vldrwq_u32): Likewise.
! 	(__arm_vldrwq_z_s32): Likewise.
! 	(__arm_vldrwq_z_u32): Likewise.
! 	(__arm_vld1q_f32): Likewise.
! 	(__arm_vld1q_f16): Likewise.
! 	(__arm_vldrwq_f32): Likewise.
! 	(__arm_vldrwq_z_f32): Likewise.
! 	(__arm_vldrhq_z_f16): Likewise.
! 	(__arm_vldrhq_f16): Likewise.
! 	(vld1q): Define polymorphic variant.
! 	(vldrhq_gather_offset): Likewise.
! 	(vldrhq_gather_offset_z): Likewise.
! 	(vldrhq_gather_shifted_offset): Likewise.
! 	(vldrhq_gather_shifted_offset_z): Likewise.
! 	* config/arm/arm_mve_builtins.def (LDRU): Use builtin qualifier.
! 	(LDRS): Likewise.
! 	(LDRU_Z): Likewise.
! 	(LDRS_Z): Likewise.
! 	(LDRGU_Z): Likewise.
! 	(LDRGU): Likewise.
! 	(LDRGS_Z): Likewise.
! 	(LDRGS): Likewise.
! 	* config/arm/mve.md (MVE_H_ELEM): Define mode iterator.
! 	(V_sz_elem1): Likewise.
! 	(VLD1Q): Define iterator.
! 	(VLDRHGOQ): Likewise.
! 	(VLDRHGSOQ): Likewise.
! 	(VLDRHQ): Likewise.
! 	(VLDRWQ): Likewise.
! 	(mve_vldrhq_fv8hf): Define RTL pattern.
! 	(mve_vldrhq_gather_offset_<supf><mode>): Likewise.
! 	(mve_vldrhq_gather_offset_z_<supf><mode>): Likewise.
! 	(mve_vldrhq_gather_shifted_offset_<supf><mode>): Likewise.
! 	(mve_vldrhq_gather_shifted_offset_z_<supf><mode>): Likewise.
! 	(mve_vldrhq_<supf><mode>): Likewise.
! 	(mve_vldrhq_z_fv8hf): Likewise.
! 	(mve_vldrhq_z_<supf><mode>): Likewise.
! 	(mve_vldrwq_fv4sf): Likewise.
! 	(mve_vldrwq_<supf>v4si): Likewise.
! 	(mve_vldrwq_z_fv4sf): Likewise.
! 	(mve_vldrwq_z_<supf>v4si): Likewise.
! 	(mve_vld1q_f<mode>): Define RTL expand pattern.
! 	(mve_vld1q_<supf><mode>): Likewise.
! 
! 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm_mve.h (vld1q_s8): Define macro.
! 	(vld1q_s32): Likewise.
! 	(vld1q_s16): Likewise.
! 	(vld1q_u8): Likewise.
! 	(vld1q_u32): Likewise.
! 	(vld1q_u16): Likewise.
! 	(vldrhq_gather_offset_s32): Likewise.
! 	(vldrhq_gather_offset_s16): Likewise.
! 	(vldrhq_gather_offset_u32): Likewise.
! 	(vldrhq_gather_offset_u16): Likewise.
! 	(vldrhq_gather_offset_z_s32): Likewise.
! 	(vldrhq_gather_offset_z_s16): Likewise.
! 	(vldrhq_gather_offset_z_u32): Likewise.
! 	(vldrhq_gather_offset_z_u16): Likewise.
! 	(vldrhq_gather_shifted_offset_s32): Likewise.
! 	(vldrhq_gather_shifted_offset_s16): Likewise.
! 	(vldrhq_gather_shifted_offset_u32): Likewise.
! 	(vldrhq_gather_shifted_offset_u16): Likewise.
! 	(vldrhq_gather_shifted_offset_z_s32): Likewise.
! 	(vldrhq_gather_shifted_offset_z_s16): Likewise.
! 	(vldrhq_gather_shifted_offset_z_u32): Likewise.
! 	(vldrhq_gather_shifted_offset_z_u16): Likewise.
! 	(vldrhq_s32): Likewise.
! 	(vldrhq_s16): Likewise.
! 	(vldrhq_u32): Likewise.
! 	(vldrhq_u16): Likewise.
! 	(vldrhq_z_s32): Likewise.
! 	(vldrhq_z_s16): Likewise.
! 	(vldrhq_z_u32): Likewise.
! 	(vldrhq_z_u16): Likewise.
! 	(vldrwq_s32): Likewise.
! 	(vldrwq_u32): Likewise.
! 	(vldrwq_z_s32): Likewise.
! 	(vldrwq_z_u32): Likewise.
! 	(vld1q_f32): Likewise.
! 	(vld1q_f16): Likewise.
! 	(vldrhq_f16): Likewise.
! 	(vldrhq_z_f16): Likewise.
! 	(vldrwq_f32): Likewise.
! 	(vldrwq_z_f32): Likewise.
! 	(__arm_vld1q_s8): Define intrinsic.
! 	(__arm_vld1q_s32): Likewise.
! 	(__arm_vld1q_s16): Likewise.
! 	(__arm_vld1q_u8): Likewise.
! 	(__arm_vld1q_u32): Likewise.
! 	(__arm_vld1q_u16): Likewise.
! 	(__arm_vldrhq_gather_offset_s32): Likewise.
! 	(__arm_vldrhq_gather_offset_s16): Likewise.
! 	(__arm_vldrhq_gather_offset_u32): Likewise.
! 	(__arm_vldrhq_gather_offset_u16): Likewise.
! 	(__arm_vldrhq_gather_offset_z_s32): Likewise.
! 	(__arm_vldrhq_gather_offset_z_s16): Likewise.
! 	(__arm_vldrhq_gather_offset_z_u32): Likewise.
! 	(__arm_vldrhq_gather_offset_z_u16): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_s32): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_s16): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_u32): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_u16): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_z_s32): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_z_s16): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_z_u32): Likewise.
! 	(__arm_vldrhq_gather_shifted_offset_z_u16): Likewise.
! 	(__arm_vldrhq_s32): Likewise.
! 	(__arm_vldrhq_s16): Likewise.
! 	(__arm_vldrhq_u32): Likewise.
! 	(__arm_vldrhq_u16): Likewise.
! 	(__arm_vldrhq_z_s32): Likewise.
! 	(__arm_vldrhq_z_s16): Likewise.
! 	(__arm_vldrhq_z_u32): Likewise.
! 	(__arm_vldrhq_z_u16): Likewise.
! 	(__arm_vldrwq_s32): Likewise.
! 	(__arm_vldrwq_u32): Likewise.
! 	(__arm_vldrwq_z_s32): Likewise.
! 	(__arm_vldrwq_z_u32): Likewise.
! 	(__arm_vld1q_f32): Likewise.
! 	(__arm_vld1q_f16): Likewise.
! 	(__arm_vldrwq_f32): Likewise.
! 	(__arm_vldrwq_z_f32): Likewise.
! 	(__arm_vldrhq_z_f16): Likewise.
! 	(__arm_vldrhq_f16): Likewise.
! 	(vld1q): Define polymorphic variant.
! 	(vldrhq_gather_offset): Likewise.
! 	(vldrhq_gather_offset_z): Likewise.
! 	(vldrhq_gather_shifted_offset): Likewise.
! 	(vldrhq_gather_shifted_offset_z): Likewise.
! 	* config/arm/arm_mve_builtins.def (LDRU): Use builtin qualifier.
! 	(LDRS): Likewise.
! 	(LDRU_Z): Likewise.
! 	(LDRS_Z): Likewise.
! 	(LDRGU_Z): Likewise.
! 	(LDRGU): Likewise.
! 	(LDRGS_Z): Likewise.
! 	(LDRGS): Likewise.
! 	* config/arm/mve.md (MVE_H_ELEM): Define mode iterator.
! 	(V_sz_elem1): Likewise.
! 	(VLD1Q): Define iterator.
! 	(VLDRHGOQ): Likewise.
! 	(VLDRHGSOQ): Likewise.
! 	(VLDRHQ): Likewise.
! 	(VLDRWQ): Likewise.
! 	(mve_vldrhq_fv8hf): Define RTL pattern.
! 	(mve_vldrhq_gather_offset_<supf><mode>): Likewise.
! 	(mve_vldrhq_gather_offset_z_<supf><mode>): Likewise.
! 	(mve_vldrhq_gather_shifted_offset_<supf><mode>): Likewise.
! 	(mve_vldrhq_gather_shifted_offset_z_<supf><mode>): Likewise.
! 	(mve_vldrhq_<supf><mode>): Likewise.
! 	(mve_vldrhq_z_fv8hf): Likewise.
! 	(mve_vldrhq_z_<supf><mode>): Likewise.
! 	(mve_vldrwq_fv4sf): Likewise.
! 	(mve_vldrwq_<supf>v4si): Likewise.
! 	(mve_vldrwq_z_fv4sf): Likewise.
! 	(mve_vldrwq_z_<supf>v4si): Likewise.
! 	(mve_vld1q_f<mode>): Define RTL expand pattern.
! 	(mve_vld1q_<supf><mode>): Likewise.
! 
! 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm-builtins.c (LDRGBS_Z_QUALIFIERS): Define builtin
! 	qualifier.
! 	(LDRGBU_Z_QUALIFIERS): Likewise.
! 	(LDRGS_Z_QUALIFIERS): Likewise.
! 	(LDRGU_Z_QUALIFIERS): Likewise.
! 	(LDRS_Z_QUALIFIERS): Likewise.
! 	(LDRU_Z_QUALIFIERS): Likewise.
! 	* config/arm/arm_mve.h (vldrbq_gather_offset_z_s16): Define macro.
! 	(vldrbq_gather_offset_z_u8): Likewise.
! 	(vldrbq_gather_offset_z_s32): Likewise.
! 	(vldrbq_gather_offset_z_u16): Likewise.
! 	(vldrbq_gather_offset_z_u32): Likewise.
! 	(vldrbq_gather_offset_z_s8): Likewise.
! 	(vldrbq_z_s16): Likewise.
! 	(vldrbq_z_u8): Likewise.
! 	(vldrbq_z_s8): Likewise.
! 	(vldrbq_z_s32): Likewise.
! 	(vldrbq_z_u16): Likewise.
! 	(vldrbq_z_u32): Likewise.
! 	(vldrwq_gather_base_z_u32): Likewise.
! 	(vldrwq_gather_base_z_s32): Likewise.
! 	(__arm_vldrbq_gather_offset_z_s8): Define intrinsic.
! 	(__arm_vldrbq_gather_offset_z_s32): Likewise.
! 	(__arm_vldrbq_gather_offset_z_s16): Likewise.
! 	(__arm_vldrbq_gather_offset_z_u8): Likewise.
! 	(__arm_vldrbq_gather_offset_z_u32): Likewise.
! 	(__arm_vldrbq_gather_offset_z_u16): Likewise.
! 	(__arm_vldrbq_z_s8): Likewise.
! 	(__arm_vldrbq_z_s32): Likewise.
! 	(__arm_vldrbq_z_s16): Likewise.
! 	(__arm_vldrbq_z_u8): Likewise.
! 	(__arm_vldrbq_z_u32): Likewise.
! 	(__arm_vldrbq_z_u16): Likewise.
! 	(__arm_vldrwq_gather_base_z_s32): Likewise.
! 	(__arm_vldrwq_gather_base_z_u32): Likewise.
! 	(vldrbq_gather_offset_z): Define polymorphic variant.
! 	* config/arm/arm_mve_builtins.def (LDRGBS_Z_QUALIFIERS): Use builtin
! 	qualifier.
! 	(LDRGBU_Z_QUALIFIERS): Likewise.
! 	(LDRGS_Z_QUALIFIERS): Likewise.
! 	(LDRGU_Z_QUALIFIERS): Likewise.
! 	(LDRS_Z_QUALIFIERS): Likewise.
! 	(LDRU_Z_QUALIFIERS): Likewise.
! 	* config/arm/mve.md (mve_vldrbq_gather_offset_z_<supf><mode>): Define
! 	RTL pattern.
! 	(mve_vldrbq_z_<supf><mode>): Likewise.
! 	(mve_vldrwq_gather_base_z_<supf>v4si): Likewise.
! 
! 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm-builtins.c (STRS_P_QUALIFIERS): Define builtin
! 	qualifier.
! 	(STRU_P_QUALIFIERS): Likewise.
! 	(STRSU_P_QUALIFIERS): Likewise.
! 	(STRSS_P_QUALIFIERS): Likewise.
! 	(STRSBS_P_QUALIFIERS): Likewise.
! 	(STRSBU_P_QUALIFIERS): Likewise.
! 	* config/arm/arm_mve.h (vstrbq_p_s8): Define macro.
! 	(vstrbq_p_s32): Likewise.
! 	(vstrbq_p_s16): Likewise.
! 	(vstrbq_p_u8): Likewise.
! 	(vstrbq_p_u32): Likewise.
! 	(vstrbq_p_u16): Likewise.
! 	(vstrbq_scatter_offset_p_s8): Likewise.
! 	(vstrbq_scatter_offset_p_s32): Likewise.
! 	(vstrbq_scatter_offset_p_s16): Likewise.
! 	(vstrbq_scatter_offset_p_u8): Likewise.
! 	(vstrbq_scatter_offset_p_u32): Likewise.
! 	(vstrbq_scatter_offset_p_u16): Likewise.
! 	(vstrwq_scatter_base_p_s32): Likewise.
! 	(vstrwq_scatter_base_p_u32): Likewise.
! 	(__arm_vstrbq_p_s8): Define intrinsic.
! 	(__arm_vstrbq_p_s32): Likewise.
! 	(__arm_vstrbq_p_s16): Likewise.
! 	(__arm_vstrbq_p_u8): Likewise.
! 	(__arm_vstrbq_p_u32): Likewise.
! 	(__arm_vstrbq_p_u16): Likewise.
! 	(__arm_vstrbq_scatter_offset_p_s8): Likewise.
! 	(__arm_vstrbq_scatter_offset_p_s32): Likewise.
! 	(__arm_vstrbq_scatter_offset_p_s16): Likewise.
! 	(__arm_vstrbq_scatter_offset_p_u8): Likewise.
! 	(__arm_vstrbq_scatter_offset_p_u32): Likewise.
! 	(__arm_vstrbq_scatter_offset_p_u16): Likewise.
! 	(__arm_vstrwq_scatter_base_p_s32): Likewise.
! 	(__arm_vstrwq_scatter_base_p_u32): Likewise.
! 	(vstrbq_p): Define polymorphic variant.
! 	(vstrbq_scatter_offset_p): Likewise.
! 	(vstrwq_scatter_base_p): Likewise.
! 	* config/arm/arm_mve_builtins.def (STRS_P_QUALIFIERS): Use builtin
! 	qualifier.
! 	(STRU_P_QUALIFIERS): Likewise.
! 	(STRSU_P_QUALIFIERS): Likewise.
! 	(STRSS_P_QUALIFIERS): Likewise.
! 	(STRSBS_P_QUALIFIERS): Likewise.
! 	(STRSBU_P_QUALIFIERS): Likewise.
! 	* config/arm/mve.md (mve_vstrbq_scatter_offset_p_<supf><mode>): Define
! 	RTL pattern.
! 	(mve_vstrwq_scatter_base_p_<supf>v4si): Likewise.
! 	(mve_vstrbq_p_<supf><mode>): Likewise.
! 
! 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm-builtins.c (LDRGU_QUALIFIERS): Define builtin
! 	qualifier.
! 	(LDRGS_QUALIFIERS): Likewise.
! 	(LDRS_QUALIFIERS): Likewise.
! 	(LDRU_QUALIFIERS): Likewise.
! 	(LDRGBS_QUALIFIERS): Likewise.
! 	(LDRGBU_QUALIFIERS): Likewise.
! 	* config/arm/arm_mve.h (vldrbq_gather_offset_u8): Define macro.
! 	(vldrbq_gather_offset_s8): Likewise.
! 	(vldrbq_s8): Likewise.
! 	(vldrbq_u8): Likewise.
! 	(vldrbq_gather_offset_u16): Likewise.
! 	(vldrbq_gather_offset_s16): Likewise.
! 	(vldrbq_s16): Likewise.
! 	(vldrbq_u16): Likewise.
! 	(vldrbq_gather_offset_u32): Likewise.
! 	(vldrbq_gather_offset_s32): Likewise.
! 	(vldrbq_s32): Likewise.
! 	(vldrbq_u32): Likewise.
! 	(vldrwq_gather_base_s32): Likewise.
! 	(vldrwq_gather_base_u32): Likewise.
! 	(__arm_vldrbq_gather_offset_u8): Define intrinsic.
! 	(__arm_vldrbq_gather_offset_s8): Likewise.
! 	(__arm_vldrbq_s8): Likewise.
! 	(__arm_vldrbq_u8): Likewise.
! 	(__arm_vldrbq_gather_offset_u16): Likewise.
! 	(__arm_vldrbq_gather_offset_s16): Likewise.
! 	(__arm_vldrbq_s16): Likewise.
! 	(__arm_vldrbq_u16): Likewise.
! 	(__arm_vldrbq_gather_offset_u32): Likewise.
! 	(__arm_vldrbq_gather_offset_s32): Likewise.
! 	(__arm_vldrbq_s32): Likewise.
! 	(__arm_vldrbq_u32): Likewise.
! 	(__arm_vldrwq_gather_base_s32): Likewise.
! 	(__arm_vldrwq_gather_base_u32): Likewise.
! 	(vldrbq_gather_offset): Define polymorphic variant.
! 	* config/arm/arm_mve_builtins.def (LDRGU_QUALIFIERS): Use builtin
! 	qualifier.
! 	(LDRGS_QUALIFIERS): Likewise.
! 	(LDRS_QUALIFIERS): Likewise.
! 	(LDRU_QUALIFIERS): Likewise.
! 	(LDRGBS_QUALIFIERS): Likewise.
! 	(LDRGBU_QUALIFIERS): Likewise.
! 	* config/arm/mve.md (VLDRBGOQ): Define iterator.
! 	(VLDRBQ): Likewise. 
! 	(VLDRWGBQ): Likewise.
! 	(mve_vldrbq_gather_offset_<supf><mode>): Define RTL pattern.
! 	(mve_vldrbq_<supf><mode>): Likewise.
! 	(mve_vldrwq_gather_base_<supf>v4si): Likewise.
! 
! 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm-builtins.c (STRS_QUALIFIERS): Define builtin qualifier.
! 	(STRU_QUALIFIERS): Likewise.
! 	(STRSS_QUALIFIERS): Likewise.
! 	(STRSU_QUALIFIERS): Likewise.
! 	(STRSBS_QUALIFIERS): Likewise.
! 	(STRSBU_QUALIFIERS): Likewise.
! 	* config/arm/arm_mve.h (vstrbq_s8): Define macro.
! 	(vstrbq_u8): Likewise.
! 	(vstrbq_u16): Likewise.
! 	(vstrbq_scatter_offset_s8): Likewise.
! 	(vstrbq_scatter_offset_u8): Likewise.
! 	(vstrbq_scatter_offset_u16): Likewise.
! 	(vstrbq_s16): Likewise.
! 	(vstrbq_u32): Likewise.
! 	(vstrbq_scatter_offset_s16): Likewise.
! 	(vstrbq_scatter_offset_u32): Likewise.
! 	(vstrbq_s32): Likewise.
! 	(vstrbq_scatter_offset_s32): Likewise.
! 	(vstrwq_scatter_base_s32): Likewise.
! 	(vstrwq_scatter_base_u32): Likewise.
! 	(__arm_vstrbq_scatter_offset_s8): Define intrinsic.
! 	(__arm_vstrbq_scatter_offset_s32): Likewise.
! 	(__arm_vstrbq_scatter_offset_s16): Likewise.
! 	(__arm_vstrbq_scatter_offset_u8): Likewise.
! 	(__arm_vstrbq_scatter_offset_u32): Likewise.
! 	(__arm_vstrbq_scatter_offset_u16): Likewise.
! 	(__arm_vstrbq_s8): Likewise.
! 	(__arm_vstrbq_s32): Likewise.
! 	(__arm_vstrbq_s16): Likewise.
! 	(__arm_vstrbq_u8): Likewise.
! 	(__arm_vstrbq_u32): Likewise.
! 	(__arm_vstrbq_u16): Likewise.
! 	(__arm_vstrwq_scatter_base_s32): Likewise.
! 	(__arm_vstrwq_scatter_base_u32): Likewise.
! 	(vstrbq): Define polymorphic variant.
! 	(vstrbq_scatter_offset): Likewise.
! 	(vstrwq_scatter_base): Likewise.
! 	* config/arm/arm_mve_builtins.def (STRS_QUALIFIERS): Use builtin
! 	qualifier.
! 	(STRU_QUALIFIERS): Likewise.
! 	(STRSS_QUALIFIERS): Likewise.
! 	(STRSU_QUALIFIERS): Likewise.
! 	(STRSBS_QUALIFIERS): Likewise.
! 	(STRSBU_QUALIFIERS): Likewise.
! 	* config/arm/mve.md (MVE_B_ELEM): Define mode attribute iterator.
! 	(VSTRWSBQ): Define iterators.
! 	(VSTRBSOQ): Likewise. 
! 	(VSTRBQ): Likewise.
! 	(mve_vstrbq_<supf><mode>): Define RTL pattern.
! 	(mve_vstrbq_scatter_offset_<supf><mode>): Likewise.
! 	(mve_vstrwq_scatter_base_<supf>v4si): Likewise.
! 
! 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm_mve.h (vabdq_m_f32): Define macro.
! 	(vabdq_m_f16): Likewise.
! 	(vaddq_m_f32): Likewise.
! 	(vaddq_m_f16): Likewise.
! 	(vaddq_m_n_f32): Likewise.
! 	(vaddq_m_n_f16): Likewise.
! 	(vandq_m_f32): Likewise.
! 	(vandq_m_f16): Likewise.
! 	(vbicq_m_f32): Likewise.
! 	(vbicq_m_f16): Likewise.
! 	(vbrsrq_m_n_f32): Likewise.
! 	(vbrsrq_m_n_f16): Likewise.
! 	(vcaddq_rot270_m_f32): Likewise.
! 	(vcaddq_rot270_m_f16): Likewise.
! 	(vcaddq_rot90_m_f32): Likewise.
! 	(vcaddq_rot90_m_f16): Likewise.
! 	(vcmlaq_m_f32): Likewise.
! 	(vcmlaq_m_f16): Likewise.
! 	(vcmlaq_rot180_m_f32): Likewise.
! 	(vcmlaq_rot180_m_f16): Likewise.
! 	(vcmlaq_rot270_m_f32): Likewise.
! 	(vcmlaq_rot270_m_f16): Likewise.
! 	(vcmlaq_rot90_m_f32): Likewise.
! 	(vcmlaq_rot90_m_f16): Likewise.
! 	(vcmulq_m_f32): Likewise.
! 	(vcmulq_m_f16): Likewise.
! 	(vcmulq_rot180_m_f32): Likewise.
! 	(vcmulq_rot180_m_f16): Likewise.
! 	(vcmulq_rot270_m_f32): Likewise.
! 	(vcmulq_rot270_m_f16): Likewise.
! 	(vcmulq_rot90_m_f32): Likewise.
! 	(vcmulq_rot90_m_f16): Likewise.
! 	(vcvtq_m_n_s32_f32): Likewise.
! 	(vcvtq_m_n_s16_f16): Likewise.
! 	(vcvtq_m_n_u32_f32): Likewise.
! 	(vcvtq_m_n_u16_f16): Likewise.
! 	(veorq_m_f32): Likewise.
! 	(veorq_m_f16): Likewise.
! 	(vfmaq_m_f32): Likewise.
! 	(vfmaq_m_f16): Likewise.
! 	(vfmaq_m_n_f32): Likewise.
! 	(vfmaq_m_n_f16): Likewise.
! 	(vfmasq_m_n_f32): Likewise.
! 	(vfmasq_m_n_f16): Likewise.
! 	(vfmsq_m_f32): Likewise.
! 	(vfmsq_m_f16): Likewise.
! 	(vmaxnmq_m_f32): Likewise.
! 	(vmaxnmq_m_f16): Likewise.
! 	(vminnmq_m_f32): Likewise.
! 	(vminnmq_m_f16): Likewise.
! 	(vmulq_m_f32): Likewise.
! 	(vmulq_m_f16): Likewise.
! 	(vmulq_m_n_f32): Likewise.
! 	(vmulq_m_n_f16): Likewise.
! 	(vornq_m_f32): Likewise.
! 	(vornq_m_f16): Likewise.
! 	(vorrq_m_f32): Likewise.
! 	(vorrq_m_f16): Likewise.
! 	(vsubq_m_f32): Likewise.
! 	(vsubq_m_f16): Likewise.
! 	(vsubq_m_n_f32): Likewise.
! 	(vsubq_m_n_f16): Likewise.
! 	(__attribute__): Likewise.
! 	(__arm_vabdq_m_f32): Likewise.
! 	(__arm_vabdq_m_f16): Likewise.
! 	(__arm_vaddq_m_f32): Likewise.
! 	(__arm_vaddq_m_f16): Likewise.
! 	(__arm_vaddq_m_n_f32): Likewise.
! 	(__arm_vaddq_m_n_f16): Likewise.
! 	(__arm_vandq_m_f32): Likewise.
! 	(__arm_vandq_m_f16): Likewise.
! 	(__arm_vbicq_m_f32): Likewise.
! 	(__arm_vbicq_m_f16): Likewise.
! 	(__arm_vbrsrq_m_n_f32): Likewise.
! 	(__arm_vbrsrq_m_n_f16): Likewise.
! 	(__arm_vcaddq_rot270_m_f32): Likewise.
! 	(__arm_vcaddq_rot270_m_f16): Likewise.
! 	(__arm_vcaddq_rot90_m_f32): Likewise.
! 	(__arm_vcaddq_rot90_m_f16): Likewise.
! 	(__arm_vcmlaq_m_f32): Likewise.
! 	(__arm_vcmlaq_m_f16): Likewise.
! 	(__arm_vcmlaq_rot180_m_f32): Likewise.
! 	(__arm_vcmlaq_rot180_m_f16): Likewise.
! 	(__arm_vcmlaq_rot270_m_f32): Likewise.
! 	(__arm_vcmlaq_rot270_m_f16): Likewise.
! 	(__arm_vcmlaq_rot90_m_f32): Likewise.
! 	(__arm_vcmlaq_rot90_m_f16): Likewise.
! 	(__arm_vcmulq_m_f32): Likewise.
! 	(__arm_vcmulq_m_f16): Likewise.
! 	(__arm_vcmulq_rot180_m_f32): Define intrinsic.
! 	(__arm_vcmulq_rot180_m_f16): Likewise.
! 	(__arm_vcmulq_rot270_m_f32): Likewise.
! 	(__arm_vcmulq_rot270_m_f16): Likewise.
! 	(__arm_vcmulq_rot90_m_f32): Likewise.
! 	(__arm_vcmulq_rot90_m_f16): Likewise.
! 	(__arm_vcvtq_m_n_s32_f32): Likewise.
! 	(__arm_vcvtq_m_n_s16_f16): Likewise.
! 	(__arm_vcvtq_m_n_u32_f32): Likewise.
! 	(__arm_vcvtq_m_n_u16_f16): Likewise.
! 	(__arm_veorq_m_f32): Likewise.
! 	(__arm_veorq_m_f16): Likewise.
! 	(__arm_vfmaq_m_f32): Likewise.
! 	(__arm_vfmaq_m_f16): Likewise.
! 	(__arm_vfmaq_m_n_f32): Likewise.
! 	(__arm_vfmaq_m_n_f16): Likewise.
! 	(__arm_vfmasq_m_n_f32): Likewise.
! 	(__arm_vfmasq_m_n_f16): Likewise.
! 	(__arm_vfmsq_m_f32): Likewise.
! 	(__arm_vfmsq_m_f16): Likewise.
! 	(__arm_vmaxnmq_m_f32): Likewise.
! 	(__arm_vmaxnmq_m_f16): Likewise.
! 	(__arm_vminnmq_m_f32): Likewise.
! 	(__arm_vminnmq_m_f16): Likewise.
! 	(__arm_vmulq_m_f32): Likewise.
! 	(__arm_vmulq_m_f16): Likewise.
! 	(__arm_vmulq_m_n_f32): Likewise.
! 	(__arm_vmulq_m_n_f16): Likewise.
! 	(__arm_vornq_m_f32): Likewise.
! 	(__arm_vornq_m_f16): Likewise.
! 	(__arm_vorrq_m_f32): Likewise.
! 	(__arm_vorrq_m_f16): Likewise.
! 	(__arm_vsubq_m_f32): Likewise.
! 	(__arm_vsubq_m_f16): Likewise.
! 	(__arm_vsubq_m_n_f32): Likewise.
! 	(__arm_vsubq_m_n_f16): Likewise.
! 	(vabdq_m): Define polymorphic variant.
! 	(vaddq_m): Likewise.
! 	(vaddq_m_n): Likewise.
! 	(vandq_m): Likewise.
! 	(vbicq_m): Likewise.
! 	(vbrsrq_m_n): Likewise.
! 	(vcaddq_rot270_m): Likewise.
! 	(vcaddq_rot90_m): Likewise.
! 	(vcmlaq_m): Likewise.
! 	(vcmlaq_rot180_m): Likewise.
! 	(vcmlaq_rot270_m): Likewise.
! 	(vcmlaq_rot90_m): Likewise.
! 	(vcmulq_m): Likewise.
! 	(vcmulq_rot180_m): Likewise.
! 	(vcmulq_rot270_m): Likewise.
! 	(vcmulq_rot90_m): Likewise.
! 	(veorq_m): Likewise.
! 	(vfmaq_m): Likewise.
! 	(vfmaq_m_n): Likewise.
! 	(vfmasq_m_n): Likewise.
! 	(vfmsq_m): Likewise.
! 	(vmaxnmq_m): Likewise.
! 	(vminnmq_m): Likewise.
! 	(vmulq_m): Likewise.
! 	(vmulq_m_n): Likewise.
! 	(vornq_m): Likewise.
! 	(vsubq_m): Likewise.
! 	(vsubq_m_n): Likewise.
! 	(vorrq_m): Likewise.
! 	* config/arm/arm_mve_builtins.def (QUADOP_NONE_NONE_NONE_IMM_UNONE): Use
! 	builtin qualifier.
! 	(QUADOP_NONE_NONE_NONE_NONE_UNONE): Likewise.
! 	(QUADOP_UNONE_UNONE_NONE_IMM_UNONE): Likewise.
! 	* config/arm/mve.md (mve_vabdq_m_f<mode>): Define RTL pattern.
! 	(mve_vaddq_m_f<mode>): Likewise.
! 	(mve_vaddq_m_n_f<mode>): Likewise.
! 	(mve_vandq_m_f<mode>): Likewise.
! 	(mve_vbicq_m_f<mode>): Likewise.
! 	(mve_vbrsrq_m_n_f<mode>): Likewise.
! 	(mve_vcaddq_rot270_m_f<mode>): Likewise.
! 	(mve_vcaddq_rot90_m_f<mode>): Likewise.
! 	(mve_vcmlaq_m_f<mode>): Likewise.
! 	(mve_vcmlaq_rot180_m_f<mode>): Likewise.
! 	(mve_vcmlaq_rot270_m_f<mode>): Likewise.
! 	(mve_vcmlaq_rot90_m_f<mode>): Likewise.
! 	(mve_vcmulq_m_f<mode>): Likewise.
! 	(mve_vcmulq_rot180_m_f<mode>): Likewise.
! 	(mve_vcmulq_rot270_m_f<mode>): Likewise.
! 	(mve_vcmulq_rot90_m_f<mode>): Likewise.
! 	(mve_veorq_m_f<mode>): Likewise.
! 	(mve_vfmaq_m_f<mode>): Likewise.
! 	(mve_vfmaq_m_n_f<mode>): Likewise.
! 	(mve_vfmasq_m_n_f<mode>): Likewise.
! 	(mve_vfmsq_m_f<mode>): Likewise.
! 	(mve_vmaxnmq_m_f<mode>): Likewise.
! 	(mve_vminnmq_m_f<mode>): Likewise.
! 	(mve_vmulq_m_f<mode>): Likewise.
! 	(mve_vmulq_m_n_f<mode>): Likewise.
! 	(mve_vornq_m_f<mode>): Likewise.
! 	(mve_vorrq_m_f<mode>): Likewise.
! 	(mve_vsubq_m_f<mode>): Likewise.
! 	(mve_vsubq_m_n_f<mode>): Likewise.
! 
! 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm-protos.h (arm_mve_immediate_check): 
! 	* config/arm/arm.c (arm_mve_immediate_check): Define fuction to	check
! 	mode and interger value.
! 	* config/arm/arm_mve.h (vmlaldavaq_p_s32): Define macro.
! 	(vmlaldavaq_p_s16): Likewise.
! 	(vmlaldavaq_p_u32): Likewise.
! 	(vmlaldavaq_p_u16): Likewise.
! 	(vmlaldavaxq_p_s32): Likewise.
! 	(vmlaldavaxq_p_s16): Likewise.
! 	(vmlaldavaxq_p_u32): Likewise.
! 	(vmlaldavaxq_p_u16): Likewise.
! 	(vmlsldavaq_p_s32): Likewise.
! 	(vmlsldavaq_p_s16): Likewise.
! 	(vmlsldavaxq_p_s32): Likewise.
! 	(vmlsldavaxq_p_s16): Likewise.
! 	(vmullbq_poly_m_p8): Likewise.
! 	(vmullbq_poly_m_p16): Likewise.
! 	(vmulltq_poly_m_p8): Likewise.
! 	(vmulltq_poly_m_p16): Likewise.
! 	(vqdmullbq_m_n_s32): Likewise.
! 	(vqdmullbq_m_n_s16): Likewise.
! 	(vqdmullbq_m_s32): Likewise.
! 	(vqdmullbq_m_s16): Likewise.
! 	(vqdmulltq_m_n_s32): Likewise.
! 	(vqdmulltq_m_n_s16): Likewise.
! 	(vqdmulltq_m_s32): Likewise.
! 	(vqdmulltq_m_s16): Likewise.
! 	(vqrshrnbq_m_n_s32): Likewise.
! 	(vqrshrnbq_m_n_s16): Likewise.
! 	(vqrshrnbq_m_n_u32): Likewise.
! 	(vqrshrnbq_m_n_u16): Likewise.
! 	(vqrshrntq_m_n_s32): Likewise.
! 	(vqrshrntq_m_n_s16): Likewise.
! 	(vqrshrntq_m_n_u32): Likewise.
! 	(vqrshrntq_m_n_u16): Likewise.
! 	(vqrshrunbq_m_n_s32): Likewise.
! 	(vqrshrunbq_m_n_s16): Likewise.
! 	(vqrshruntq_m_n_s32): Likewise.
! 	(vqrshruntq_m_n_s16): Likewise.
! 	(vqshrnbq_m_n_s32): Likewise.
! 	(vqshrnbq_m_n_s16): Likewise.
! 	(vqshrnbq_m_n_u32): Likewise.
! 	(vqshrnbq_m_n_u16): Likewise.
! 	(vqshrntq_m_n_s32): Likewise.
! 	(vqshrntq_m_n_s16): Likewise.
! 	(vqshrntq_m_n_u32): Likewise.
! 	(vqshrntq_m_n_u16): Likewise.
! 	(vqshrunbq_m_n_s32): Likewise.
! 	(vqshrunbq_m_n_s16): Likewise.
! 	(vqshruntq_m_n_s32): Likewise.
! 	(vqshruntq_m_n_s16): Likewise.
! 	(vrmlaldavhaq_p_s32): Likewise.
! 	(vrmlaldavhaq_p_u32): Likewise.
! 	(vrmlaldavhaxq_p_s32): Likewise.
! 	(vrmlsldavhaq_p_s32): Likewise.
! 	(vrmlsldavhaxq_p_s32): Likewise.
! 	(vrshrnbq_m_n_s32): Likewise.
! 	(vrshrnbq_m_n_s16): Likewise.
! 	(vrshrnbq_m_n_u32): Likewise.
! 	(vrshrnbq_m_n_u16): Likewise.
! 	(vrshrntq_m_n_s32): Likewise.
! 	(vrshrntq_m_n_s16): Likewise.
! 	(vrshrntq_m_n_u32): Likewise.
! 	(vrshrntq_m_n_u16): Likewise.
! 	(vshllbq_m_n_s8): Likewise.
! 	(vshllbq_m_n_s16): Likewise.
! 	(vshllbq_m_n_u8): Likewise.
! 	(vshllbq_m_n_u16): Likewise.
! 	(vshlltq_m_n_s8): Likewise.
! 	(vshlltq_m_n_s16): Likewise.
! 	(vshlltq_m_n_u8): Likewise.
! 	(vshlltq_m_n_u16): Likewise.
! 	(vshrnbq_m_n_s32): Likewise.
! 	(vshrnbq_m_n_s16): Likewise.
! 	(vshrnbq_m_n_u32): Likewise.
! 	(vshrnbq_m_n_u16): Likewise.
! 	(vshrntq_m_n_s32): Likewise.
! 	(vshrntq_m_n_s16): Likewise.
! 	(vshrntq_m_n_u32): Likewise.
! 	(vshrntq_m_n_u16): Likewise.
! 	(__arm_vmlaldavaq_p_s32): Define intrinsic.
! 	(__arm_vmlaldavaq_p_s16): Likewise.
! 	(__arm_vmlaldavaq_p_u32): Likewise.
! 	(__arm_vmlaldavaq_p_u16): Likewise.
! 	(__arm_vmlaldavaxq_p_s32): Likewise.
! 	(__arm_vmlaldavaxq_p_s16): Likewise.
! 	(__arm_vmlaldavaxq_p_u32): Likewise.
! 	(__arm_vmlaldavaxq_p_u16): Likewise.
! 	(__arm_vmlsldavaq_p_s32): Likewise.
! 	(__arm_vmlsldavaq_p_s16): Likewise.
! 	(__arm_vmlsldavaxq_p_s32): Likewise.
! 	(__arm_vmlsldavaxq_p_s16): Likewise.
! 	(__arm_vmullbq_poly_m_p8): Likewise.
! 	(__arm_vmullbq_poly_m_p16): Likewise.
! 	(__arm_vmulltq_poly_m_p8): Likewise.
! 	(__arm_vmulltq_poly_m_p16): Likewise.
! 	(__arm_vqdmullbq_m_n_s32): Likewise.
! 	(__arm_vqdmullbq_m_n_s16): Likewise.
! 	(__arm_vqdmullbq_m_s32): Likewise.
! 	(__arm_vqdmullbq_m_s16): Likewise.
! 	(__arm_vqdmulltq_m_n_s32): Likewise.
! 	(__arm_vqdmulltq_m_n_s16): Likewise.
! 	(__arm_vqdmulltq_m_s32): Likewise.
! 	(__arm_vqdmulltq_m_s16): Likewise.
! 	(__arm_vqrshrnbq_m_n_s32): Likewise.
! 	(__arm_vqrshrnbq_m_n_s16): Likewise.
! 	(__arm_vqrshrnbq_m_n_u32): Likewise.
! 	(__arm_vqrshrnbq_m_n_u16): Likewise.
! 	(__arm_vqrshrntq_m_n_s32): Likewise.
! 	(__arm_vqrshrntq_m_n_s16): Likewise.
! 	(__arm_vqrshrntq_m_n_u32): Likewise.
! 	(__arm_vqrshrntq_m_n_u16): Likewise.
! 	(__arm_vqrshrunbq_m_n_s32): Likewise.
! 	(__arm_vqrshrunbq_m_n_s16): Likewise.
! 	(__arm_vqrshruntq_m_n_s32): Likewise.
! 	(__arm_vqrshruntq_m_n_s16): Likewise.
! 	(__arm_vqshrnbq_m_n_s32): Likewise.
! 	(__arm_vqshrnbq_m_n_s16): Likewise.
! 	(__arm_vqshrnbq_m_n_u32): Likewise.
! 	(__arm_vqshrnbq_m_n_u16): Likewise.
! 	(__arm_vqshrntq_m_n_s32): Likewise.
! 	(__arm_vqshrntq_m_n_s16): Likewise.
! 	(__arm_vqshrntq_m_n_u32): Likewise.
! 	(__arm_vqshrntq_m_n_u16): Likewise.
! 	(__arm_vqshrunbq_m_n_s32): Likewise.
! 	(__arm_vqshrunbq_m_n_s16): Likewise.
! 	(__arm_vqshruntq_m_n_s32): Likewise.
! 	(__arm_vqshruntq_m_n_s16): Likewise.
! 	(__arm_vrmlaldavhaq_p_s32): Likewise.
! 	(__arm_vrmlaldavhaq_p_u32): Likewise.
! 	(__arm_vrmlaldavhaxq_p_s32): Likewise.
! 	(__arm_vrmlsldavhaq_p_s32): Likewise.
! 	(__arm_vrmlsldavhaxq_p_s32): Likewise.
! 	(__arm_vrshrnbq_m_n_s32): Likewise.
! 	(__arm_vrshrnbq_m_n_s16): Likewise.
! 	(__arm_vrshrnbq_m_n_u32): Likewise.
! 	(__arm_vrshrnbq_m_n_u16): Likewise.
! 	(__arm_vrshrntq_m_n_s32): Likewise.
! 	(__arm_vrshrntq_m_n_s16): Likewise.
! 	(__arm_vrshrntq_m_n_u32): Likewise.
! 	(__arm_vrshrntq_m_n_u16): Likewise.
! 	(__arm_vshllbq_m_n_s8): Likewise.
! 	(__arm_vshllbq_m_n_s16): Likewise.
! 	(__arm_vshllbq_m_n_u8): Likewise.
! 	(__arm_vshllbq_m_n_u16): Likewise.
! 	(__arm_vshlltq_m_n_s8): Likewise.
! 	(__arm_vshlltq_m_n_s16): Likewise.
! 	(__arm_vshlltq_m_n_u8): Likewise.
! 	(__arm_vshlltq_m_n_u16): Likewise.
! 	(__arm_vshrnbq_m_n_s32): Likewise.
! 	(__arm_vshrnbq_m_n_s16): Likewise.
! 	(__arm_vshrnbq_m_n_u32): Likewise.
! 	(__arm_vshrnbq_m_n_u16): Likewise.
! 	(__arm_vshrntq_m_n_s32): Likewise.
! 	(__arm_vshrntq_m_n_s16): Likewise.
! 	(__arm_vshrntq_m_n_u32): Likewise.
! 	(__arm_vshrntq_m_n_u16): Likewise.
! 	(vmullbq_poly_m): Define polymorphic variant.
! 	(vmulltq_poly_m): Likewise.
! 	(vshllbq_m): Likewise.
! 	(vshrntq_m_n): Likewise.
! 	(vshrnbq_m_n): Likewise.
! 	(vshlltq_m_n): Likewise.
! 	(vshllbq_m_n): Likewise.
! 	(vrshrntq_m_n): Likewise.
! 	(vrshrnbq_m_n): Likewise.
! 	(vqshruntq_m_n): Likewise.
! 	(vqshrunbq_m_n): Likewise.
! 	(vqdmullbq_m_n): Likewise.
! 	(vqdmullbq_m): Likewise.
! 	(vqdmulltq_m_n): Likewise.
! 	(vqdmulltq_m): Likewise.
! 	(vqrshrnbq_m_n): Likewise.
! 	(vqrshrntq_m_n): Likewise.
! 	(vqrshrunbq_m_n): Likewise.
! 	(vqrshruntq_m_n): Likewise.
! 	(vqshrnbq_m_n): Likewise.
! 	(vqshrntq_m_n): Likewise.
! 	* config/arm/arm_mve_builtins.def (QUADOP_NONE_NONE_NONE_IMM_UNONE): Use
! 	builtin qualifiers.
! 	(QUADOP_NONE_NONE_NONE_NONE_UNONE): Likewise.
! 	(QUADOP_UNONE_UNONE_NONE_IMM_UNONE): Likewise.
! 	(QUADOP_UNONE_UNONE_UNONE_IMM_UNONE): Likewise.
! 	(QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE): Likewise.
! 	* config/arm/mve.md (VMLALDAVAQ_P): Define iterator.
! 	(VMLALDAVAXQ_P): Likewise.
! 	(VQRSHRNBQ_M_N): Likewise.
! 	(VQRSHRNTQ_M_N): Likewise.
! 	(VQSHRNBQ_M_N): Likewise.
! 	(VQSHRNTQ_M_N): Likewise.
! 	(VRSHRNBQ_M_N): Likewise.
! 	(VRSHRNTQ_M_N): Likewise.
! 	(VSHLLBQ_M_N): Likewise.
! 	(VSHLLTQ_M_N): Likewise.
! 	(VSHRNBQ_M_N): Likewise.
! 	(VSHRNTQ_M_N): Likewise.
! 	(mve_vmlaldavaq_p_<supf><mode>): Define RTL pattern.
! 	(mve_vmlaldavaxq_p_<supf><mode>): Likewise.
! 	(mve_vqrshrnbq_m_n_<supf><mode>): Likewise.
! 	(mve_vqrshrntq_m_n_<supf><mode>): Likewise.
! 	(mve_vqshrnbq_m_n_<supf><mode>): Likewise.
! 	(mve_vqshrntq_m_n_<supf><mode>): Likewise.
! 	(mve_vrmlaldavhaq_p_sv4si): Likewise.
! 	(mve_vrshrnbq_m_n_<supf><mode>): Likewise.
! 	(mve_vrshrntq_m_n_<supf><mode>): Likewise.
! 	(mve_vshllbq_m_n_<supf><mode>): Likewise.
! 	(mve_vshlltq_m_n_<supf><mode>): Likewise.
! 	(mve_vshrnbq_m_n_<supf><mode>): Likewise.
! 	(mve_vshrntq_m_n_<supf><mode>): Likewise.
! 	(mve_vmlsldavaq_p_s<mode>): Likewise.
! 	(mve_vmlsldavaxq_p_s<mode>): Likewise.
! 	(mve_vmullbq_poly_m_p<mode>): Likewise.
! 	(mve_vmulltq_poly_m_p<mode>): Likewise.
! 	(mve_vqdmullbq_m_n_s<mode>): Likewise.
! 	(mve_vqdmullbq_m_s<mode>): Likewise.
! 	(mve_vqdmulltq_m_n_s<mode>): Likewise.
! 	(mve_vqdmulltq_m_s<mode>): Likewise.
! 	(mve_vqrshrunbq_m_n_s<mode>): Likewise.
! 	(mve_vqrshruntq_m_n_s<mode>): Likewise.
! 	(mve_vqshrunbq_m_n_s<mode>): Likewise.
! 	(mve_vqshruntq_m_n_s<mode>): Likewise.
! 	(mve_vrmlaldavhaq_p_uv4si): Likewise.
! 	(mve_vrmlaldavhaxq_p_sv4si): Likewise.
! 	(mve_vrmlsldavhaq_p_sv4si): Likewise.
! 	(mve_vrmlsldavhaxq_p_sv4si): Likewise.
! 
! 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 	
! 	* config/arm/arm_mve.h (vabdq_m_s8): Define macro.
! 	(vabdq_m_s32): Likewise.
! 	(vabdq_m_s16): Likewise.
! 	(vabdq_m_u8): Likewise.
! 	(vabdq_m_u32): Likewise.
! 	(vabdq_m_u16): Likewise.
! 	(vaddq_m_n_s8): Likewise.
! 	(vaddq_m_n_s32): Likewise.
! 	(vaddq_m_n_s16): Likewise.
! 	(vaddq_m_n_u8): Likewise.
! 	(vaddq_m_n_u32): Likewise.
! 	(vaddq_m_n_u16): Likewise.
! 	(vaddq_m_s8): Likewise.
! 	(vaddq_m_s32): Likewise.
! 	(vaddq_m_s16): Likewise.
! 	(vaddq_m_u8): Likewise.
! 	(vaddq_m_u32): Likewise.
! 	(vaddq_m_u16): Likewise.
! 	(vandq_m_s8): Likewise.
! 	(vandq_m_s32): Likewise.
! 	(vandq_m_s16): Likewise.
! 	(vandq_m_u8): Likewise.
! 	(vandq_m_u32): Likewise.
! 	(vandq_m_u16): Likewise.
! 	(vbicq_m_s8): Likewise.
! 	(vbicq_m_s32): Likewise.
! 	(vbicq_m_s16): Likewise.
! 	(vbicq_m_u8): Likewise.
! 	(vbicq_m_u32): Likewise.
! 	(vbicq_m_u16): Likewise.
! 	(vbrsrq_m_n_s8): Likewise.
! 	(vbrsrq_m_n_s32): Likewise.
! 	(vbrsrq_m_n_s16): Likewise.
! 	(vbrsrq_m_n_u8): Likewise.
! 	(vbrsrq_m_n_u32): Likewise.
! 	(vbrsrq_m_n_u16): Likewise.
! 	(vcaddq_rot270_m_s8): Likewise.
! 	(vcaddq_rot270_m_s32): Likewise.
! 	(vcaddq_rot270_m_s16): Likewise.
! 	(vcaddq_rot270_m_u8): Likewise.
! 	(vcaddq_rot270_m_u32): Likewise.
! 	(vcaddq_rot270_m_u16): Likewise.
! 	(vcaddq_rot90_m_s8): Likewise.
! 	(vcaddq_rot90_m_s32): Likewise.
! 	(vcaddq_rot90_m_s16): Likewise.
! 	(vcaddq_rot90_m_u8): Likewise.
! 	(vcaddq_rot90_m_u32): Likewise.
! 	(vcaddq_rot90_m_u16): Likewise.
! 	(veorq_m_s8): Likewise.
! 	(veorq_m_s32): Likewise.
! 	(veorq_m_s16): Likewise.
! 	(veorq_m_u8): Likewise.
! 	(veorq_m_u32): Likewise.
! 	(veorq_m_u16): Likewise.
! 	(vhaddq_m_n_s8): Likewise.
! 	(vhaddq_m_n_s32): Likewise.
! 	(vhaddq_m_n_s16): Likewise.
! 	(vhaddq_m_n_u8): Likewise.
! 	(vhaddq_m_n_u32): Likewise.
! 	(vhaddq_m_n_u16): Likewise.
! 	(vhaddq_m_s8): Likewise.
! 	(vhaddq_m_s32): Likewise.
! 	(vhaddq_m_s16): Likewise.
! 	(vhaddq_m_u8): Likewise.
! 	(vhaddq_m_u32): Likewise.
! 	(vhaddq_m_u16): Likewise.
! 	(vhcaddq_rot270_m_s8): Likewise.
! 	(vhcaddq_rot270_m_s32): Likewise.
! 	(vhcaddq_rot270_m_s16): Likewise.
! 	(vhcaddq_rot90_m_s8): Likewise.
! 	(vhcaddq_rot90_m_s32): Likewise.
! 	(vhcaddq_rot90_m_s16): Likewise.
! 	(vhsubq_m_n_s8): Likewise.
! 	(vhsubq_m_n_s32): Likewise.
! 	(vhsubq_m_n_s16): Likewise.
! 	(vhsubq_m_n_u8): Likewise.
! 	(vhsubq_m_n_u32): Likewise.
! 	(vhsubq_m_n_u16): Likewise.
! 	(vhsubq_m_s8): Likewise.
! 	(vhsubq_m_s32): Likewise.
! 	(vhsubq_m_s16): Likewise.
! 	(vhsubq_m_u8): Likewise.
! 	(vhsubq_m_u32): Likewise.
! 	(vhsubq_m_u16): Likewise.
! 	(vmaxq_m_s8): Likewise.
! 	(vmaxq_m_s32): Likewise.
! 	(vmaxq_m_s16): Likewise.
! 	(vmaxq_m_u8): Likewise.
! 	(vmaxq_m_u32): Likewise.
! 	(vmaxq_m_u16): Likewise.
! 	(vminq_m_s8): Likewise.
! 	(vminq_m_s32): Likewise.
! 	(vminq_m_s16): Likewise.
! 	(vminq_m_u8): Likewise.
! 	(vminq_m_u32): Likewise.
! 	(vminq_m_u16): Likewise.
! 	(vmladavaq_p_s8): Likewise.
! 	(vmladavaq_p_s32): Likewise.
! 	(vmladavaq_p_s16): Likewise.
! 	(vmladavaq_p_u8): Likewise.
! 	(vmladavaq_p_u32): Likewise.
! 	(vmladavaq_p_u16): Likewise.
! 	(vmladavaxq_p_s8): Likewise.
! 	(vmladavaxq_p_s32): Likewise.
! 	(vmladavaxq_p_s16): Likewise.
! 	(vmlaq_m_n_s8): Likewise.
! 	(vmlaq_m_n_s32): Likewise.
! 	(vmlaq_m_n_s16): Likewise.
! 	(vmlaq_m_n_u8): Likewise.
! 	(vmlaq_m_n_u32): Likewise.
! 	(vmlaq_m_n_u16): Likewise.
! 	(vmlasq_m_n_s8): Likewise.
! 	(vmlasq_m_n_s32): Likewise.
! 	(vmlasq_m_n_s16): Likewise.
! 	(vmlasq_m_n_u8): Likewise.
! 	(vmlasq_m_n_u32): Likewise.
! 	(vmlasq_m_n_u16): Likewise.
! 	(vmlsdavaq_p_s8): Likewise.
! 	(vmlsdavaq_p_s32): Likewise.
! 	(vmlsdavaq_p_s16): Likewise.
! 	(vmlsdavaxq_p_s8): Likewise.
! 	(vmlsdavaxq_p_s32): Likewise.
! 	(vmlsdavaxq_p_s16): Likewise.
! 	(vmulhq_m_s8): Likewise.
! 	(vmulhq_m_s32): Likewise.
! 	(vmulhq_m_s16): Likewise.
! 	(vmulhq_m_u8): Likewise.
! 	(vmulhq_m_u32): Likewise.
! 	(vmulhq_m_u16): Likewise.
! 	(vmullbq_int_m_s8): Likewise.
! 	(vmullbq_int_m_s32): Likewise.
! 	(vmullbq_int_m_s16): Likewise.
! 	(vmullbq_int_m_u8): Likewise.
! 	(vmullbq_int_m_u32): Likewise.
! 	(vmullbq_int_m_u16): Likewise.
! 	(vmulltq_int_m_s8): Likewise.
! 	(vmulltq_int_m_s32): Likewise.
! 	(vmulltq_int_m_s16): Likewise.
! 	(vmulltq_int_m_u8): Likewise.
! 	(vmulltq_int_m_u32): Likewise.
! 	(vmulltq_int_m_u16): Likewise.
! 	(vmulq_m_n_s8): Likewise.
! 	(vmulq_m_n_s32): Likewise.
! 	(vmulq_m_n_s16): Likewise.
! 	(vmulq_m_n_u8): Likewise.
! 	(vmulq_m_n_u32): Likewise.
! 	(vmulq_m_n_u16): Likewise.
! 	(vmulq_m_s8): Likewise.
! 	(vmulq_m_s32): Likewise.
! 	(vmulq_m_s16): Likewise.
! 	(vmulq_m_u8): Likewise.
! 	(vmulq_m_u32): Likewise.
! 	(vmulq_m_u16): Likewise.
! 	(vornq_m_s8): Likewise.
! 	(vornq_m_s32): Likewise.
! 	(vornq_m_s16): Likewise.
! 	(vornq_m_u8): Likewise.
! 	(vornq_m_u32): Likewise.
! 	(vornq_m_u16): Likewise.
! 	(vorrq_m_s8): Likewise.
! 	(vorrq_m_s32): Likewise.
! 	(vorrq_m_s16): Likewise.
! 	(vorrq_m_u8): Likewise.
! 	(vorrq_m_u32): Likewise.
! 	(vorrq_m_u16): Likewise.
! 	(vqaddq_m_n_s8): Likewise.
! 	(vqaddq_m_n_s32): Likewise.
! 	(vqaddq_m_n_s16): Likewise.
! 	(vqaddq_m_n_u8): Likewise.
! 	(vqaddq_m_n_u32): Likewise.
! 	(vqaddq_m_n_u16): Likewise.
! 	(vqaddq_m_s8): Likewise.
! 	(vqaddq_m_s32): Likewise.
! 	(vqaddq_m_s16): Likewise.
! 	(vqaddq_m_u8): Likewise.
! 	(vqaddq_m_u32): Likewise.
! 	(vqaddq_m_u16): Likewise.
! 	(vqdmladhq_m_s8): Likewise.
! 	(vqdmladhq_m_s32): Likewise.
! 	(vqdmladhq_m_s16): Likewise.
! 	(vqdmladhxq_m_s8): Likewise.
! 	(vqdmladhxq_m_s32): Likewise.
! 	(vqdmladhxq_m_s16): Likewise.
! 	(vqdmlahq_m_n_s8): Likewise.
! 	(vqdmlahq_m_n_s32): Likewise.
! 	(vqdmlahq_m_n_s16): Likewise.
! 	(vqdmlahq_m_n_u8): Likewise.
! 	(vqdmlahq_m_n_u32): Likewise.
! 	(vqdmlahq_m_n_u16): Likewise.
! 	(vqdmlsdhq_m_s8): Likewise.
! 	(vqdmlsdhq_m_s32): Likewise.
! 	(vqdmlsdhq_m_s16): Likewise.
! 	(vqdmlsdhxq_m_s8): Likewise.
! 	(vqdmlsdhxq_m_s32): Likewise.
! 	(vqdmlsdhxq_m_s16): Likewise.
! 	(vqdmulhq_m_n_s8): Likewise.
! 	(vqdmulhq_m_n_s32): Likewise.
! 	(vqdmulhq_m_n_s16): Likewise.
! 	(vqdmulhq_m_s8): Likewise.
! 	(vqdmulhq_m_s32): Likewise.
! 	(vqdmulhq_m_s16): Likewise.
! 	(vqrdmladhq_m_s8): Likewise.
! 	(vqrdmladhq_m_s32): Likewise.
! 	(vqrdmladhq_m_s16): Likewise.
! 	(vqrdmladhxq_m_s8): Likewise.
! 	(vqrdmladhxq_m_s32): Likewise.
! 	(vqrdmladhxq_m_s16): Likewise.
! 	(vqrdmlahq_m_n_s8): Likewise.
! 	(vqrdmlahq_m_n_s32): Likewise.
! 	(vqrdmlahq_m_n_s16): Likewise.
! 	(vqrdmlahq_m_n_u8): Likewise.
! 	(vqrdmlahq_m_n_u32): Likewise.
! 	(vqrdmlahq_m_n_u16): Likewise.
! 	(vqrdmlashq_m_n_s8): Likewise.
! 	(vqrdmlashq_m_n_s32): Likewise.
! 	(vqrdmlashq_m_n_s16): Likewise.
! 	(vqrdmlashq_m_n_u8): Likewise.
! 	(vqrdmlashq_m_n_u32): Likewise.
! 	(vqrdmlashq_m_n_u16): Likewise.
! 	(vqrdmlsdhq_m_s8): Likewise.
! 	(vqrdmlsdhq_m_s32): Likewise.
! 	(vqrdmlsdhq_m_s16): Likewise.
! 	(vqrdmlsdhxq_m_s8): Likewise.
! 	(vqrdmlsdhxq_m_s32): Likewise.
! 	(vqrdmlsdhxq_m_s16): Likewise.
! 	(vqrdmulhq_m_n_s8): Likewise.
! 	(vqrdmulhq_m_n_s32): Likewise.
! 	(vqrdmulhq_m_n_s16): Likewise.
! 	(vqrdmulhq_m_s8): Likewise.
! 	(vqrdmulhq_m_s32): Likewise.
! 	(vqrdmulhq_m_s16): Likewise.
! 	(vqrshlq_m_s8): Likewise.
! 	(vqrshlq_m_s32): Likewise.
! 	(vqrshlq_m_s16): Likewise.
! 	(vqrshlq_m_u8): Likewise.
! 	(vqrshlq_m_u32): Likewise.
! 	(vqrshlq_m_u16): Likewise.
! 	(vqshlq_m_n_s8): Likewise.
! 	(vqshlq_m_n_s32): Likewise.
! 	(vqshlq_m_n_s16): Likewise.
! 	(vqshlq_m_n_u8): Likewise.
! 	(vqshlq_m_n_u32): Likewise.
! 	(vqshlq_m_n_u16): Likewise.
! 	(vqshlq_m_s8): Likewise.
! 	(vqshlq_m_s32): Likewise.
! 	(vqshlq_m_s16): Likewise.
! 	(vqshlq_m_u8): Likewise.
! 	(vqshlq_m_u32): Likewise.
! 	(vqshlq_m_u16): Likewise.
! 	(vqsubq_m_n_s8): Likewise.
! 	(vqsubq_m_n_s32): Likewise.
! 	(vqsubq_m_n_s16): Likewise.
! 	(vqsubq_m_n_u8): Likewise.
! 	(vqsubq_m_n_u32): Likewise.
! 	(vqsubq_m_n_u16): Likewise.
! 	(vqsubq_m_s8): Likewise.
! 	(vqsubq_m_s32): Likewise.
! 	(vqsubq_m_s16): Likewise.
! 	(vqsubq_m_u8): Likewise.
! 	(vqsubq_m_u32): Likewise.
! 	(vqsubq_m_u16): Likewise.
! 	(vrhaddq_m_s8): Likewise.
! 	(vrhaddq_m_s32): Likewise.
! 	(vrhaddq_m_s16): Likewise.
! 	(vrhaddq_m_u8): Likewise.
! 	(vrhaddq_m_u32): Likewise.
! 	(vrhaddq_m_u16): Likewise.
! 	(vrmulhq_m_s8): Likewise.
! 	(vrmulhq_m_s32): Likewise.
! 	(vrmulhq_m_s16): Likewise.
! 	(vrmulhq_m_u8): Likewise.
! 	(vrmulhq_m_u32): Likewise.
! 	(vrmulhq_m_u16): Likewise.
! 	(vrshlq_m_s8): Likewise.
! 	(vrshlq_m_s32): Likewise.
! 	(vrshlq_m_s16): Likewise.
! 	(vrshlq_m_u8): Likewise.
! 	(vrshlq_m_u32): Likewise.
! 	(vrshlq_m_u16): Likewise.
! 	(vrshrq_m_n_s8): Likewise.
! 	(vrshrq_m_n_s32): Likewise.
! 	(vrshrq_m_n_s16): Likewise.
! 	(vrshrq_m_n_u8): Likewise.
! 	(vrshrq_m_n_u32): Likewise.
! 	(vrshrq_m_n_u16): Likewise.
! 	(vshlq_m_n_s8): Likewise.
! 	(vshlq_m_n_s32): Likewise.
! 	(vshlq_m_n_s16): Likewise.
! 	(vshlq_m_n_u8): Likewise.
! 	(vshlq_m_n_u32): Likewise.
! 	(vshlq_m_n_u16): Likewise.
! 	(vshrq_m_n_s8): Likewise.
! 	(vshrq_m_n_s32): Likewise.
! 	(vshrq_m_n_s16): Likewise.
! 	(vshrq_m_n_u8): Likewise.
! 	(vshrq_m_n_u32): Likewise.
! 	(vshrq_m_n_u16): Likewise.
! 	(vsliq_m_n_s8): Likewise.
! 	(vsliq_m_n_s32): Likewise.
! 	(vsliq_m_n_s16): Likewise.
! 	(vsliq_m_n_u8): Likewise.
! 	(vsliq_m_n_u32): Likewise.
! 	(vsliq_m_n_u16): Likewise.
! 	(vsubq_m_n_s8): Likewise.
! 	(vsubq_m_n_s32): Likewise.
! 	(vsubq_m_n_s16): Likewise.
! 	(vsubq_m_n_u8): Likewise.
! 	(vsubq_m_n_u32): Likewise.
! 	(vsubq_m_n_u16): Likewise.
! 	(__arm_vabdq_m_s8): Define intrinsic.
! 	(__arm_vabdq_m_s32): Likewise.
! 	(__arm_vabdq_m_s16): Likewise.
! 	(__arm_vabdq_m_u8): Likewise.
! 	(__arm_vabdq_m_u32): Likewise.
! 	(__arm_vabdq_m_u16): Likewise.
! 	(__arm_vaddq_m_n_s8): Likewise.
! 	(__arm_vaddq_m_n_s32): Likewise.
! 	(__arm_vaddq_m_n_s16): Likewise.
! 	(__arm_vaddq_m_n_u8): Likewise.
! 	(__arm_vaddq_m_n_u32): Likewise.
! 	(__arm_vaddq_m_n_u16): Likewise.
! 	(__arm_vaddq_m_s8): Likewise.
! 	(__arm_vaddq_m_s32): Likewise.
! 	(__arm_vaddq_m_s16): Likewise.
! 	(__arm_vaddq_m_u8): Likewise.
! 	(__arm_vaddq_m_u32): Likewise.
! 	(__arm_vaddq_m_u16): Likewise.
! 	(__arm_vandq_m_s8): Likewise.
! 	(__arm_vandq_m_s32): Likewise.
! 	(__arm_vandq_m_s16): Likewise.
! 	(__arm_vandq_m_u8): Likewise.
! 	(__arm_vandq_m_u32): Likewise.
! 	(__arm_vandq_m_u16): Likewise.
! 	(__arm_vbicq_m_s8): Likewise.
! 	(__arm_vbicq_m_s32): Likewise.
! 	(__arm_vbicq_m_s16): Likewise.
! 	(__arm_vbicq_m_u8): Likewise.
! 	(__arm_vbicq_m_u32): Likewise.
! 	(__arm_vbicq_m_u16): Likewise.
! 	(__arm_vbrsrq_m_n_s8): Likewise.
! 	(__arm_vbrsrq_m_n_s32): Likewise.
! 	(__arm_vbrsrq_m_n_s16): Likewise.
! 	(__arm_vbrsrq_m_n_u8): Likewise.
! 	(__arm_vbrsrq_m_n_u32): Likewise.
! 	(__arm_vbrsrq_m_n_u16): Likewise.
! 	(__arm_vcaddq_rot270_m_s8): Likewise.
! 	(__arm_vcaddq_rot270_m_s32): Likewise.
! 	(__arm_vcaddq_rot270_m_s16): Likewise.
! 	(__arm_vcaddq_rot270_m_u8): Likewise.
! 	(__arm_vcaddq_rot270_m_u32): Likewise.
! 	(__arm_vcaddq_rot270_m_u16): Likewise.
! 	(__arm_vcaddq_rot90_m_s8): Likewise.
! 	(__arm_vcaddq_rot90_m_s32): Likewise.
! 	(__arm_vcaddq_rot90_m_s16): Likewise.
! 	(__arm_vcaddq_rot90_m_u8): Likewise.
! 	(__arm_vcaddq_rot90_m_u32): Likewise.
! 	(__arm_vcaddq_rot90_m_u16): Likewise.
! 	(__arm_veorq_m_s8): Likewise.
! 	(__arm_veorq_m_s32): Likewise.
! 	(__arm_veorq_m_s16): Likewise.
! 	(__arm_veorq_m_u8): Likewise.
! 	(__arm_veorq_m_u32): Likewise.
! 	(__arm_veorq_m_u16): Likewise.
! 	(__arm_vhaddq_m_n_s8): Likewise.
! 	(__arm_vhaddq_m_n_s32): Likewise.
! 	(__arm_vhaddq_m_n_s16): Likewise.
! 	(__arm_vhaddq_m_n_u8): Likewise.
! 	(__arm_vhaddq_m_n_u32): Likewise.
! 	(__arm_vhaddq_m_n_u16): Likewise.
! 	(__arm_vhaddq_m_s8): Likewise.
! 	(__arm_vhaddq_m_s32): Likewise.
! 	(__arm_vhaddq_m_s16): Likewise.
! 	(__arm_vhaddq_m_u8): Likewise.
! 	(__arm_vhaddq_m_u32): Likewise.
! 	(__arm_vhaddq_m_u16): Likewise.
! 	(__arm_vhcaddq_rot270_m_s8): Likewise.
! 	(__arm_vhcaddq_rot270_m_s32): Likewise.
! 	(__arm_vhcaddq_rot270_m_s16): Likewise.
! 	(__arm_vhcaddq_rot90_m_s8): Likewise.
! 	(__arm_vhcaddq_rot90_m_s32): Likewise.
! 	(__arm_vhcaddq_rot90_m_s16): Likewise.
! 	(__arm_vhsubq_m_n_s8): Likewise.
! 	(__arm_vhsubq_m_n_s32): Likewise.
! 	(__arm_vhsubq_m_n_s16): Likewise.
! 	(__arm_vhsubq_m_n_u8): Likewise.
! 	(__arm_vhsubq_m_n_u32): Likewise.
! 	(__arm_vhsubq_m_n_u16): Likewise.
! 	(__arm_vhsubq_m_s8): Likewise.
! 	(__arm_vhsubq_m_s32): Likewise.
! 	(__arm_vhsubq_m_s16): Likewise.
! 	(__arm_vhsubq_m_u8): Likewise.
! 	(__arm_vhsubq_m_u32): Likewise.
! 	(__arm_vhsubq_m_u16): Likewise.
! 	(__arm_vmaxq_m_s8): Likewise.
! 	(__arm_vmaxq_m_s32): Likewise.
! 	(__arm_vmaxq_m_s16): Likewise.
! 	(__arm_vmaxq_m_u8): Likewise.
! 	(__arm_vmaxq_m_u32): Likewise.
! 	(__arm_vmaxq_m_u16): Likewise.
! 	(__arm_vminq_m_s8): Likewise.
! 	(__arm_vminq_m_s32): Likewise.
! 	(__arm_vminq_m_s16): Likewise.
! 	(__arm_vminq_m_u8): Likewise.
! 	(__arm_vminq_m_u32): Likewise.
! 	(__arm_vminq_m_u16): Likewise.
! 	(__arm_vmladavaq_p_s8): Likewise.
! 	(__arm_vmladavaq_p_s32): Likewise.
! 	(__arm_vmladavaq_p_s16): Likewise.
! 	(__arm_vmladavaq_p_u8): Likewise.
! 	(__arm_vmladavaq_p_u32): Likewise.
! 	(__arm_vmladavaq_p_u16): Likewise.
! 	(__arm_vmladavaxq_p_s8): Likewise.
! 	(__arm_vmladavaxq_p_s32): Likewise.
! 	(__arm_vmladavaxq_p_s16): Likewise.
! 	(__arm_vmlaq_m_n_s8): Likewise.
! 	(__arm_vmlaq_m_n_s32): Likewise.
! 	(__arm_vmlaq_m_n_s16): Likewise.
! 	(__arm_vmlaq_m_n_u8): Likewise.
! 	(__arm_vmlaq_m_n_u32): Likewise.
! 	(__arm_vmlaq_m_n_u16): Likewise.
! 	(__arm_vmlasq_m_n_s8): Likewise.
! 	(__arm_vmlasq_m_n_s32): Likewise.
! 	(__arm_vmlasq_m_n_s16): Likewise.
! 	(__arm_vmlasq_m_n_u8): Likewise.
! 	(__arm_vmlasq_m_n_u32): Likewise.
! 	(__arm_vmlasq_m_n_u16): Likewise.
! 	(__arm_vmlsdavaq_p_s8): Likewise.
! 	(__arm_vmlsdavaq_p_s32): Likewise.
! 	(__arm_vmlsdavaq_p_s16): Likewise.
! 	(__arm_vmlsdavaxq_p_s8): Likewise.
! 	(__arm_vmlsdavaxq_p_s32): Likewise.
! 	(__arm_vmlsdavaxq_p_s16): Likewise.
! 	(__arm_vmulhq_m_s8): Likewise.
! 	(__arm_vmulhq_m_s32): Likewise.
! 	(__arm_vmulhq_m_s16): Likewise.
! 	(__arm_vmulhq_m_u8): Likewise.
! 	(__arm_vmulhq_m_u32): Likewise.
! 	(__arm_vmulhq_m_u16): Likewise.
! 	(__arm_vmullbq_int_m_s8): Likewise.
! 	(__arm_vmullbq_int_m_s32): Likewise.
! 	(__arm_vmullbq_int_m_s16): Likewise.
! 	(__arm_vmullbq_int_m_u8): Likewise.
! 	(__arm_vmullbq_int_m_u32): Likewise.
! 	(__arm_vmullbq_int_m_u16): Likewise.
! 	(__arm_vmulltq_int_m_s8): Likewise.
! 	(__arm_vmulltq_int_m_s32): Likewise.
! 	(__arm_vmulltq_int_m_s16): Likewise.
! 	(__arm_vmulltq_int_m_u8): Likewise.
! 	(__arm_vmulltq_int_m_u32): Likewise.
! 	(__arm_vmulltq_int_m_u16): Likewise.
! 	(__arm_vmulq_m_n_s8): Likewise.
! 	(__arm_vmulq_m_n_s32): Likewise.
! 	(__arm_vmulq_m_n_s16): Likewise.
! 	(__arm_vmulq_m_n_u8): Likewise.
! 	(__arm_vmulq_m_n_u32): Likewise.
! 	(__arm_vmulq_m_n_u16): Likewise.
! 	(__arm_vmulq_m_s8): Likewise.
! 	(__arm_vmulq_m_s32): Likewise.
! 	(__arm_vmulq_m_s16): Likewise.
! 	(__arm_vmulq_m_u8): Likewise.
! 	(__arm_vmulq_m_u32): Likewise.
! 	(__arm_vmulq_m_u16): Likewise.
! 	(__arm_vornq_m_s8): Likewise.
! 	(__arm_vornq_m_s32): Likewise.
! 	(__arm_vornq_m_s16): Likewise.
! 	(__arm_vornq_m_u8): Likewise.
! 	(__arm_vornq_m_u32): Likewise.
! 	(__arm_vornq_m_u16): Likewise.
! 	(__arm_vorrq_m_s8): Likewise.
! 	(__arm_vorrq_m_s32): Likewise.
! 	(__arm_vorrq_m_s16): Likewise.
! 	(__arm_vorrq_m_u8): Likewise.
! 	(__arm_vorrq_m_u32): Likewise.
! 	(__arm_vorrq_m_u16): Likewise.
! 	(__arm_vqaddq_m_n_s8): Likewise.
! 	(__arm_vqaddq_m_n_s32): Likewise.
! 	(__arm_vqaddq_m_n_s16): Likewise.
! 	(__arm_vqaddq_m_n_u8): Likewise.
! 	(__arm_vqaddq_m_n_u32): Likewise.
! 	(__arm_vqaddq_m_n_u16): Likewise.
! 	(__arm_vqaddq_m_s8): Likewise.
! 	(__arm_vqaddq_m_s32): Likewise.
! 	(__arm_vqaddq_m_s16): Likewise.
! 	(__arm_vqaddq_m_u8): Likewise.
! 	(__arm_vqaddq_m_u32): Likewise.
! 	(__arm_vqaddq_m_u16): Likewise.
! 	(__arm_vqdmladhq_m_s8): Likewise.
! 	(__arm_vqdmladhq_m_s32): Likewise.
! 	(__arm_vqdmladhq_m_s16): Likewise.
! 	(__arm_vqdmladhxq_m_s8): Likewise.
! 	(__arm_vqdmladhxq_m_s32): Likewise.
! 	(__arm_vqdmladhxq_m_s16): Likewise.
! 	(__arm_vqdmlahq_m_n_s8): Likewise.
! 	(__arm_vqdmlahq_m_n_s32): Likewise.
! 	(__arm_vqdmlahq_m_n_s16): Likewise.
! 	(__arm_vqdmlahq_m_n_u8): Likewise.
! 	(__arm_vqdmlahq_m_n_u32): Likewise.
! 	(__arm_vqdmlahq_m_n_u16): Likewise.
! 	(__arm_vqdmlsdhq_m_s8): Likewise.
! 	(__arm_vqdmlsdhq_m_s32): Likewise.
! 	(__arm_vqdmlsdhq_m_s16): Likewise.
! 	(__arm_vqdmlsdhxq_m_s8): Likewise.
! 	(__arm_vqdmlsdhxq_m_s32): Likewise.
! 	(__arm_vqdmlsdhxq_m_s16): Likewise.
! 	(__arm_vqdmulhq_m_n_s8): Likewise.
! 	(__arm_vqdmulhq_m_n_s32): Likewise.
! 	(__arm_vqdmulhq_m_n_s16): Likewise.
! 	(__arm_vqdmulhq_m_s8): Likewise.
! 	(__arm_vqdmulhq_m_s32): Likewise.
! 	(__arm_vqdmulhq_m_s16): Likewise.
! 	(__arm_vqrdmladhq_m_s8): Likewise.
! 	(__arm_vqrdmladhq_m_s32): Likewise.
! 	(__arm_vqrdmladhq_m_s16): Likewise.
! 	(__arm_vqrdmladhxq_m_s8): Likewise.
! 	(__arm_vqrdmladhxq_m_s32): Likewise.
! 	(__arm_vqrdmladhxq_m_s16): Likewise.
! 	(__arm_vqrdmlahq_m_n_s8): Likewise.
! 	(__arm_vqrdmlahq_m_n_s32): Likewise.
! 	(__arm_vqrdmlahq_m_n_s16): Likewise.
! 	(__arm_vqrdmlahq_m_n_u8): Likewise.
! 	(__arm_vqrdmlahq_m_n_u32): Likewise.
! 	(__arm_vqrdmlahq_m_n_u16): Likewise.
! 	(__arm_vqrdmlashq_m_n_s8): Likewise.
! 	(__arm_vqrdmlashq_m_n_s32): Likewise.
! 	(__arm_vqrdmlashq_m_n_s16): Likewise.
! 	(__arm_vqrdmlashq_m_n_u8): Likewise.
! 	(__arm_vqrdmlashq_m_n_u32): Likewise.
! 	(__arm_vqrdmlashq_m_n_u16): Likewise.
! 	(__arm_vqrdmlsdhq_m_s8): Likewise.
! 	(__arm_vqrdmlsdhq_m_s32): Likewise.
! 	(__arm_vqrdmlsdhq_m_s16): Likewise.
! 	(__arm_vqrdmlsdhxq_m_s8): Likewise.
! 	(__arm_vqrdmlsdhxq_m_s32): Likewise.
! 	(__arm_vqrdmlsdhxq_m_s16): Likewise.
! 	(__arm_vqrdmulhq_m_n_s8): Likewise.
! 	(__arm_vqrdmulhq_m_n_s32): Likewise.
! 	(__arm_vqrdmulhq_m_n_s16): Likewise.
! 	(__arm_vqrdmulhq_m_s8): Likewise.
! 	(__arm_vqrdmulhq_m_s32): Likewise.
! 	(__arm_vqrdmulhq_m_s16): Likewise.
! 	(__arm_vqrshlq_m_s8): Likewise.
! 	(__arm_vqrshlq_m_s32): Likewise.
! 	(__arm_vqrshlq_m_s16): Likewise.
! 	(__arm_vqrshlq_m_u8): Likewise.
! 	(__arm_vqrshlq_m_u32): Likewise.
! 	(__arm_vqrshlq_m_u16): Likewise.
! 	(__arm_vqshlq_m_n_s8): Likewise.
! 	(__arm_vqshlq_m_n_s32): Likewise.
! 	(__arm_vqshlq_m_n_s16): Likewise.
! 	(__arm_vqshlq_m_n_u8): Likewise.
! 	(__arm_vqshlq_m_n_u32): Likewise.
! 	(__arm_vqshlq_m_n_u16): Likewise.
! 	(__arm_vqshlq_m_s8): Likewise.
! 	(__arm_vqshlq_m_s32): Likewise.
! 	(__arm_vqshlq_m_s16): Likewise.
! 	(__arm_vqshlq_m_u8): Likewise.
! 	(__arm_vqshlq_m_u32): Likewise.
! 	(__arm_vqshlq_m_u16): Likewise.
! 	(__arm_vqsubq_m_n_s8): Likewise.
! 	(__arm_vqsubq_m_n_s32): Likewise.
! 	(__arm_vqsubq_m_n_s16): Likewise.
! 	(__arm_vqsubq_m_n_u8): Likewise.
! 	(__arm_vqsubq_m_n_u32): Likewise.
! 	(__arm_vqsubq_m_n_u16): Likewise.
! 	(__arm_vqsubq_m_s8): Likewise.
! 	(__arm_vqsubq_m_s32): Likewise.
! 	(__arm_vqsubq_m_s16): Likewise.
! 	(__arm_vqsubq_m_u8): Likewise.
! 	(__arm_vqsubq_m_u32): Likewise.
! 	(__arm_vqsubq_m_u16): Likewise.
! 	(__arm_vrhaddq_m_s8): Likewise.
! 	(__arm_vrhaddq_m_s32): Likewise.
! 	(__arm_vrhaddq_m_s16): Likewise.
! 	(__arm_vrhaddq_m_u8): Likewise.
! 	(__arm_vrhaddq_m_u32): Likewise.
! 	(__arm_vrhaddq_m_u16): Likewise.
! 	(__arm_vrmulhq_m_s8): Likewise.
! 	(__arm_vrmulhq_m_s32): Likewise.
! 	(__arm_vrmulhq_m_s16): Likewise.
! 	(__arm_vrmulhq_m_u8): Likewise.
! 	(__arm_vrmulhq_m_u32): Likewise.
! 	(__arm_vrmulhq_m_u16): Likewise.
! 	(__arm_vrshlq_m_s8): Likewise.
! 	(__arm_vrshlq_m_s32): Likewise.
! 	(__arm_vrshlq_m_s16): Likewise.
! 	(__arm_vrshlq_m_u8): Likewise.
! 	(__arm_vrshlq_m_u32): Likewise.
! 	(__arm_vrshlq_m_u16): Likewise.
! 	(__arm_vrshrq_m_n_s8): Likewise.
! 	(__arm_vrshrq_m_n_s32): Likewise.
! 	(__arm_vrshrq_m_n_s16): Likewise.
! 	(__arm_vrshrq_m_n_u8): Likewise.
! 	(__arm_vrshrq_m_n_u32): Likewise.
! 	(__arm_vrshrq_m_n_u16): Likewise.
! 	(__arm_vshlq_m_n_s8): Likewise.
! 	(__arm_vshlq_m_n_s32): Likewise.
! 	(__arm_vshlq_m_n_s16): Likewise.
! 	(__arm_vshlq_m_n_u8): Likewise.
! 	(__arm_vshlq_m_n_u32): Likewise.
! 	(__arm_vshlq_m_n_u16): Likewise.
! 	(__arm_vshrq_m_n_s8): Likewise.
! 	(__arm_vshrq_m_n_s32): Likewise.
! 	(__arm_vshrq_m_n_s16): Likewise.
! 	(__arm_vshrq_m_n_u8): Likewise.
! 	(__arm_vshrq_m_n_u32): Likewise.
! 	(__arm_vshrq_m_n_u16): Likewise.
! 	(__arm_vsliq_m_n_s8): Likewise.
! 	(__arm_vsliq_m_n_s32): Likewise.
! 	(__arm_vsliq_m_n_s16): Likewise.
! 	(__arm_vsliq_m_n_u8): Likewise.
! 	(__arm_vsliq_m_n_u32): Likewise.
! 	(__arm_vsliq_m_n_u16): Likewise.
! 	(__arm_vsubq_m_n_s8): Likewise.
! 	(__arm_vsubq_m_n_s32): Likewise.
! 	(__arm_vsubq_m_n_s16): Likewise.
! 	(__arm_vsubq_m_n_u8): Likewise.
! 	(__arm_vsubq_m_n_u32): Likewise.
! 	(__arm_vsubq_m_n_u16): Likewise.
! 	(vqdmladhq_m): Define polymorphic variant.
! 	(vqdmladhxq_m): Likewise.
! 	(vqdmlsdhq_m): Likewise.
! 	(vqdmlsdhxq_m): Likewise.
! 	(vabdq_m): Likewise.
! 	(vandq_m): Likewise.
! 	(vbicq_m): Likewise.
! 	(vbrsrq_m_n): Likewise.
! 	(vcaddq_rot270_m): Likewise.
! 	(vcaddq_rot90_m): Likewise.
! 	(veorq_m): Likewise.
! 	(vmaxq_m): Likewise.
! 	(vminq_m): Likewise.
! 	(vmladavaq_p): Likewise.
! 	(vmlaq_m_n): Likewise.
! 	(vmlasq_m_n): Likewise.
! 	(vmulhq_m): Likewise.
! 	(vmullbq_int_m): Likewise.
! 	(vmulltq_int_m): Likewise.
! 	(vornq_m): Likewise.
! 	(vorrq_m): Likewise.
! 	(vqdmlahq_m_n): Likewise.
! 	(vqrdmlahq_m_n): Likewise.
! 	(vqrdmlashq_m_n): Likewise.
! 	(vqrshlq_m): Likewise.
! 	(vqshlq_m_n): Likewise.
! 	(vqshlq_m): Likewise.
! 	(vrhaddq_m): Likewise.
! 	(vrmulhq_m): Likewise.
! 	(vrshlq_m): Likewise.
! 	(vrshrq_m_n): Likewise.
! 	(vshlq_m_n): Likewise.
! 	(vshrq_m_n): Likewise.
! 	(vsliq_m): Likewise.
! 	(vaddq_m_n): Likewise.
! 	(vaddq_m): Likewise.
! 	(vhaddq_m_n): Likewise.
! 	(vhaddq_m): Likewise.
! 	(vhcaddq_rot270_m): Likewise.
! 	(vhcaddq_rot90_m): Likewise.
! 	(vhsubq_m): Likewise.
! 	(vhsubq_m_n): Likewise.
! 	(vmulq_m_n): Likewise.
! 	(vmulq_m): Likewise.
! 	(vqaddq_m_n): Likewise.
! 	(vqaddq_m): Likewise.
! 	(vqdmulhq_m_n): Likewise.
! 	(vqdmulhq_m): Likewise.
! 	(vsubq_m_n): Likewise.
! 	(vsliq_m_n): Likewise.
! 	(vqsubq_m_n): Likewise.
! 	(vqsubq_m): Likewise.
! 	(vqrdmulhq_m): Likewise.
! 	(vqrdmulhq_m_n): Likewise.
! 	(vqrdmlsdhxq_m): Likewise.
! 	(vqrdmlsdhq_m): Likewise.
! 	(vqrdmladhq_m): Likewise.
! 	(vqrdmladhxq_m): Likewise.
! 	(vmlsdavaxq_p): Likewise.
! 	(vmlsdavaq_p): Likewise.
! 	(vmladavaxq_p): Likewise.
! 	* config/arm/arm_mve_builtins.def (QUADOP_NONE_NONE_NONE_IMM_UNONE): Use
! 	builtin qualifier.
! 	(QUADOP_NONE_NONE_NONE_NONE_UNONE): Likewise.
! 	(QUADOP_UNONE_UNONE_UNONE_IMM_UNONE): Likewise.
! 	(QUADOP_UNONE_UNONE_UNONE_NONE_UNONE): Likewise.
! 	(QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE): Likewise.
! 	* config/arm/mve.md (VHSUBQ_M): Define iterators.
! 	(VSLIQ_M_N): Likewise.
! 	(VQRDMLAHQ_M_N): Likewise.
! 	(VRSHLQ_M): Likewise.
! 	(VMINQ_M): Likewise.
! 	(VMULLBQ_INT_M): Likewise.
! 	(VMULHQ_M): Likewise.
! 	(VMULQ_M): Likewise.
! 	(VHSUBQ_M_N): Likewise.
! 	(VHADDQ_M_N): Likewise.
! 	(VORRQ_M): Likewise.
! 	(VRMULHQ_M): Likewise.
! 	(VQADDQ_M): Likewise.
! 	(VRSHRQ_M_N): Likewise.
! 	(VQSUBQ_M_N): Likewise.
! 	(VADDQ_M): Likewise.
! 	(VORNQ_M): Likewise.
! 	(VQDMLAHQ_M_N): Likewise.
! 	(VRHADDQ_M): Likewise.
! 	(VQSHLQ_M): Likewise.
! 	(VANDQ_M): Likewise.
! 	(VBICQ_M): Likewise.
! 	(VSHLQ_M_N): Likewise.
! 	(VCADDQ_ROT270_M): Likewise.
! 	(VQRSHLQ_M): Likewise.
! 	(VQADDQ_M_N): Likewise.
! 	(VADDQ_M_N): Likewise.
! 	(VMAXQ_M): Likewise.
! 	(VQSUBQ_M): Likewise.
! 	(VMLASQ_M_N): Likewise.
! 	(VMLADAVAQ_P): Likewise.
! 	(VBRSRQ_M_N): Likewise.
! 	(VMULQ_M_N): Likewise.
! 	(VCADDQ_ROT90_M): Likewise.
! 	(VMULLTQ_INT_M): Likewise.
! 	(VEORQ_M): Likewise.
! 	(VSHRQ_M_N): Likewise.
! 	(VSUBQ_M_N): Likewise.
! 	(VHADDQ_M): Likewise.
! 	(VABDQ_M): Likewise.
! 	(VQRDMLASHQ_M_N): Likewise.
! 	(VMLAQ_M_N): Likewise.
! 	(VQSHLQ_M_N): Likewise.
! 	(mve_vabdq_m_<supf><mode>): Define RTL pattern.
! 	(mve_vaddq_m_n_<supf><mode>): Likewise.
! 	(mve_vaddq_m_<supf><mode>): Likewise.
! 	(mve_vandq_m_<supf><mode>): Likewise.
! 	(mve_vbicq_m_<supf><mode>): Likewise.
! 	(mve_vbrsrq_m_n_<supf><mode>): Likewise.
! 	(mve_vcaddq_rot270_m_<supf><mode>): Likewise.
! 	(mve_vcaddq_rot90_m_<supf><mode>): Likewise.
! 	(mve_veorq_m_<supf><mode>): Likewise.
! 	(mve_vhaddq_m_n_<supf><mode>): Likewise.
! 	(mve_vhaddq_m_<supf><mode>): Likewise.
! 	(mve_vhsubq_m_n_<supf><mode>): Likewise.
! 	(mve_vhsubq_m_<supf><mode>): Likewise.
! 	(mve_vmaxq_m_<supf><mode>): Likewise.
! 	(mve_vminq_m_<supf><mode>): Likewise.
! 	(mve_vmladavaq_p_<supf><mode>): Likewise.
! 	(mve_vmlaq_m_n_<supf><mode>): Likewise.
! 	(mve_vmlasq_m_n_<supf><mode>): Likewise.
! 	(mve_vmulhq_m_<supf><mode>): Likewise.
! 	(mve_vmullbq_int_m_<supf><mode>): Likewise.
! 	(mve_vmulltq_int_m_<supf><mode>): Likewise.
! 	(mve_vmulq_m_n_<supf><mode>): Likewise.
! 	(mve_vmulq_m_<supf><mode>): Likewise.
! 	(mve_vornq_m_<supf><mode>): Likewise.
! 	(mve_vorrq_m_<supf><mode>): Likewise.
! 	(mve_vqaddq_m_n_<supf><mode>): Likewise.
! 	(mve_vqaddq_m_<supf><mode>): Likewise.
! 	(mve_vqdmlahq_m_n_<supf><mode>): Likewise.
! 	(mve_vqrdmlahq_m_n_<supf><mode>): Likewise.
! 	(mve_vqrdmlashq_m_n_<supf><mode>): Likewise.
! 	(mve_vqrshlq_m_<supf><mode>): Likewise.
! 	(mve_vqshlq_m_n_<supf><mode>): Likewise.
! 	(mve_vqshlq_m_<supf><mode>): Likewise.
! 	(mve_vqsubq_m_n_<supf><mode>): Likewise.
! 	(mve_vqsubq_m_<supf><mode>): Likewise.
! 	(mve_vrhaddq_m_<supf><mode>): Likewise.
! 	(mve_vrmulhq_m_<supf><mode>): Likewise.
! 	(mve_vrshlq_m_<supf><mode>): Likewise.
! 	(mve_vrshrq_m_n_<supf><mode>): Likewise.
! 	(mve_vshlq_m_n_<supf><mode>): Likewise.
! 	(mve_vshrq_m_n_<supf><mode>): Likewise.
! 	(mve_vsliq_m_n_<supf><mode>): Likewise.
! 	(mve_vsubq_m_n_<supf><mode>): Likewise.
! 	(mve_vhcaddq_rot270_m_s<mode>): Likewise.
! 	(mve_vhcaddq_rot90_m_s<mode>): Likewise.
! 	(mve_vmladavaxq_p_s<mode>): Likewise.
! 	(mve_vmlsdavaq_p_s<mode>): Likewise.
! 	(mve_vmlsdavaxq_p_s<mode>): Likewise.
! 	(mve_vqdmladhq_m_s<mode>): Likewise.
! 	(mve_vqdmladhxq_m_s<mode>): Likewise.
! 	(mve_vqdmlsdhq_m_s<mode>): Likewise.
! 	(mve_vqdmlsdhxq_m_s<mode>): Likewise.
! 	(mve_vqdmulhq_m_n_s<mode>): Likewise.
! 	(mve_vqdmulhq_m_s<mode>): Likewise.
! 	(mve_vqrdmladhq_m_s<mode>): Likewise.
! 	(mve_vqrdmladhxq_m_s<mode>): Likewise.
! 	(mve_vqrdmlsdhq_m_s<mode>): Likewise.
! 	(mve_vqrdmlsdhxq_m_s<mode>): Likewise.
! 	(mve_vqrdmulhq_m_n_s<mode>): Likewise.
! 	(mve_vqrdmulhq_m_s<mode>): Likewise.
! 
! 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm-builtins.c (QUADOP_UNONE_UNONE_NONE_NONE_UNONE_QUALIFIERS):
! 	Define builtin qualifier.
! 	(QUADOP_NONE_NONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
! 	(QUADOP_NONE_NONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
! 	(QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
! 	(QUADOP_UNONE_UNONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
! 	(QUADOP_NONE_NONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
! 	(QUADOP_UNONE_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
! 	(QUADOP_UNONE_UNONE_UNONE_NONE_UNONE_QUALIFIERS): Likewise.
! 	* config/arm/arm_mve.h (vsriq_m_n_s8): Define macro.
! 	(vsubq_m_s8): Likewise.
! 	(vcvtq_m_n_f16_u16): Likewise.
! 	(vqshluq_m_n_s8): Likewise.
! 	(vabavq_p_s8): Likewise.
! 	(vsriq_m_n_u8): Likewise.
! 	(vshlq_m_u8): Likewise.
! 	(vsubq_m_u8): Likewise.
! 	(vabavq_p_u8): Likewise.
! 	(vshlq_m_s8): Likewise.
! 	(vcvtq_m_n_f16_s16): Likewise.
! 	(vsriq_m_n_s16): Likewise.
! 	(vsubq_m_s16): Likewise.
! 	(vcvtq_m_n_f32_u32): Likewise.
! 	(vqshluq_m_n_s16): Likewise.
! 	(vabavq_p_s16): Likewise.
! 	(vsriq_m_n_u16): Likewise.
! 	(vshlq_m_u16): Likewise.
! 	(vsubq_m_u16): Likewise.
! 	(vabavq_p_u16): Likewise.
! 	(vshlq_m_s16): Likewise.
! 	(vcvtq_m_n_f32_s32): Likewise.
! 	(vsriq_m_n_s32): Likewise.
! 	(vsubq_m_s32): Likewise.
! 	(vqshluq_m_n_s32): Likewise.
! 	(vabavq_p_s32): Likewise.
! 	(vsriq_m_n_u32): Likewise.
! 	(vshlq_m_u32): Likewise.
! 	(vsubq_m_u32): Likewise.
! 	(vabavq_p_u32): Likewise.
! 	(vshlq_m_s32): Likewise.
! 	(__arm_vsriq_m_n_s8): Define intrinsic.
! 	(__arm_vsubq_m_s8): Likewise.
! 	(__arm_vqshluq_m_n_s8): Likewise.
! 	(__arm_vabavq_p_s8): Likewise.
! 	(__arm_vsriq_m_n_u8): Likewise.
! 	(__arm_vshlq_m_u8): Likewise.
! 	(__arm_vsubq_m_u8): Likewise.
! 	(__arm_vabavq_p_u8): Likewise.
! 	(__arm_vshlq_m_s8): Likewise.
! 	(__arm_vsriq_m_n_s16): Likewise.
! 	(__arm_vsubq_m_s16): Likewise.
! 	(__arm_vqshluq_m_n_s16): Likewise.
! 	(__arm_vabavq_p_s16): Likewise.
! 	(__arm_vsriq_m_n_u16): Likewise.
! 	(__arm_vshlq_m_u16): Likewise.
! 	(__arm_vsubq_m_u16): Likewise.
! 	(__arm_vabavq_p_u16): Likewise.
! 	(__arm_vshlq_m_s16): Likewise.
! 	(__arm_vsriq_m_n_s32): Likewise.
! 	(__arm_vsubq_m_s32): Likewise.
! 	(__arm_vqshluq_m_n_s32): Likewise.
! 	(__arm_vabavq_p_s32): Likewise.
! 	(__arm_vsriq_m_n_u32): Likewise.
! 	(__arm_vshlq_m_u32): Likewise.
! 	(__arm_vsubq_m_u32): Likewise.
! 	(__arm_vabavq_p_u32): Likewise.
! 	(__arm_vshlq_m_s32): Likewise.
! 	(__arm_vcvtq_m_n_f16_u16): Likewise.
! 	(__arm_vcvtq_m_n_f16_s16): Likewise.
! 	(__arm_vcvtq_m_n_f32_u32): Likewise.
! 	(__arm_vcvtq_m_n_f32_s32): Likewise.
! 	(vcvtq_m_n): Define polymorphic variant.
! 	(vqshluq_m_n): Likewise.
! 	(vshlq_m): Likewise.
! 	(vsriq_m_n): Likewise.
! 	(vsubq_m): Likewise.
! 	(vabavq_p): Likewise.
! 	* config/arm/arm_mve_builtins.def
! 	(QUADOP_UNONE_UNONE_NONE_NONE_UNONE_QUALIFIERS): Use builtin qualifier.
! 	(QUADOP_NONE_NONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
! 	(QUADOP_NONE_NONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
! 	(QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
! 	(QUADOP_UNONE_UNONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
! 	(QUADOP_NONE_NONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
! 	(QUADOP_UNONE_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
! 	(QUADOP_UNONE_UNONE_UNONE_NONE_UNONE_QUALIFIERS): Likewise.
! 	* config/arm/mve.md (VABAVQ_P): Define iterator.
! 	(VSHLQ_M): Likewise.
! 	(VSRIQ_M_N): Likewise.
! 	(VSUBQ_M): Likewise.
! 	(VCVTQ_M_N_TO_F): Likewise.
! 	(mve_vabavq_p_<supf><mode>): Define RTL pattern.
! 	(mve_vqshluq_m_n_s<mode>): Likewise.
! 	(mve_vshlq_m_<supf><mode>): Likewise.
! 	(mve_vsriq_m_n_<supf><mode>): Likewise.
! 	(mve_vsubq_m_<supf><mode>): Likewise.
! 	(mve_vcvtq_m_n_to_f_<supf><mode>): Likewise.
! 
! 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm_mve.h (vrmlaldavhaxq_s32): Define macro.
! 	(vrmlsldavhaq_s32): Likewise.
! 	(vrmlsldavhaxq_s32): Likewise.
! 	(vaddlvaq_p_s32): Likewise.
! 	(vcvtbq_m_f16_f32): Likewise.
! 	(vcvtbq_m_f32_f16): Likewise.
! 	(vcvttq_m_f16_f32): Likewise.
! 	(vcvttq_m_f32_f16): Likewise.
! 	(vrev16q_m_s8): Likewise.
! 	(vrev32q_m_f16): Likewise.
! 	(vrmlaldavhq_p_s32): Likewise.
! 	(vrmlaldavhxq_p_s32): Likewise.
! 	(vrmlsldavhq_p_s32): Likewise.
! 	(vrmlsldavhxq_p_s32): Likewise.
! 	(vaddlvaq_p_u32): Likewise.
! 	(vrev16q_m_u8): Likewise.
! 	(vrmlaldavhq_p_u32): Likewise.
! 	(vmvnq_m_n_s16): Likewise.
! 	(vorrq_m_n_s16): Likewise.
! 	(vqrshrntq_n_s16): Likewise.
! 	(vqshrnbq_n_s16): Likewise.
! 	(vqshrntq_n_s16): Likewise.
! 	(vrshrnbq_n_s16): Likewise.
! 	(vrshrntq_n_s16): Likewise.
! 	(vshrnbq_n_s16): Likewise.
! 	(vshrntq_n_s16): Likewise.
! 	(vcmlaq_f16): Likewise.
! 	(vcmlaq_rot180_f16): Likewise.
! 	(vcmlaq_rot270_f16): Likewise.
! 	(vcmlaq_rot90_f16): Likewise.
! 	(vfmaq_f16): Likewise.
! 	(vfmaq_n_f16): Likewise.
! 	(vfmasq_n_f16): Likewise.
! 	(vfmsq_f16): Likewise.
! 	(vmlaldavaq_s16): Likewise.
! 	(vmlaldavaxq_s16): Likewise.
! 	(vmlsldavaq_s16): Likewise.
! 	(vmlsldavaxq_s16): Likewise.
! 	(vabsq_m_f16): Likewise.
! 	(vcvtmq_m_s16_f16): Likewise.
! 	(vcvtnq_m_s16_f16): Likewise.
! 	(vcvtpq_m_s16_f16): Likewise.
! 	(vcvtq_m_s16_f16): Likewise.
! 	(vdupq_m_n_f16): Likewise.
! 	(vmaxnmaq_m_f16): Likewise.
! 	(vmaxnmavq_p_f16): Likewise.
! 	(vmaxnmvq_p_f16): Likewise.
! 	(vminnmaq_m_f16): Likewise.
! 	(vminnmavq_p_f16): Likewise.
! 	(vminnmvq_p_f16): Likewise.
! 	(vmlaldavq_p_s16): Likewise.
! 	(vmlaldavxq_p_s16): Likewise.
! 	(vmlsldavq_p_s16): Likewise.
! 	(vmlsldavxq_p_s16): Likewise.
! 	(vmovlbq_m_s8): Likewise.
! 	(vmovltq_m_s8): Likewise.
! 	(vmovnbq_m_s16): Likewise.
! 	(vmovntq_m_s16): Likewise.
! 	(vnegq_m_f16): Likewise.
! 	(vpselq_f16): Likewise.
! 	(vqmovnbq_m_s16): Likewise.
! 	(vqmovntq_m_s16): Likewise.
! 	(vrev32q_m_s8): Likewise.
! 	(vrev64q_m_f16): Likewise.
! 	(vrndaq_m_f16): Likewise.
! 	(vrndmq_m_f16): Likewise.
! 	(vrndnq_m_f16): Likewise.
! 	(vrndpq_m_f16): Likewise.
! 	(vrndq_m_f16): Likewise.
! 	(vrndxq_m_f16): Likewise.
! 	(vcmpeqq_m_n_f16): Likewise.
! 	(vcmpgeq_m_f16): Likewise.
! 	(vcmpgeq_m_n_f16): Likewise.
! 	(vcmpgtq_m_f16): Likewise.
! 	(vcmpgtq_m_n_f16): Likewise.
! 	(vcmpleq_m_f16): Likewise.
! 	(vcmpleq_m_n_f16): Likewise.
! 	(vcmpltq_m_f16): Likewise.
! 	(vcmpltq_m_n_f16): Likewise.
! 	(vcmpneq_m_f16): Likewise.
! 	(vcmpneq_m_n_f16): Likewise.
! 	(vmvnq_m_n_u16): Likewise.
! 	(vorrq_m_n_u16): Likewise.
! 	(vqrshruntq_n_s16): Likewise.
! 	(vqshrunbq_n_s16): Likewise.
! 	(vqshruntq_n_s16): Likewise.
! 	(vcvtmq_m_u16_f16): Likewise.
! 	(vcvtnq_m_u16_f16): Likewise.
! 	(vcvtpq_m_u16_f16): Likewise.
! 	(vcvtq_m_u16_f16): Likewise.
! 	(vqmovunbq_m_s16): Likewise.
! 	(vqmovuntq_m_s16): Likewise.
! 	(vqrshrntq_n_u16): Likewise.
! 	(vqshrnbq_n_u16): Likewise.
! 	(vqshrntq_n_u16): Likewise.
! 	(vrshrnbq_n_u16): Likewise.
! 	(vrshrntq_n_u16): Likewise.
! 	(vshrnbq_n_u16): Likewise.
! 	(vshrntq_n_u16): Likewise.
! 	(vmlaldavaq_u16): Likewise.
! 	(vmlaldavaxq_u16): Likewise.
! 	(vmlaldavq_p_u16): Likewise.
! 	(vmlaldavxq_p_u16): Likewise.
! 	(vmovlbq_m_u8): Likewise.
! 	(vmovltq_m_u8): Likewise.
! 	(vmovnbq_m_u16): Likewise.
! 	(vmovntq_m_u16): Likewise.
! 	(vqmovnbq_m_u16): Likewise.
! 	(vqmovntq_m_u16): Likewise.
! 	(vrev32q_m_u8): Likewise.
! 	(vmvnq_m_n_s32): Likewise.
! 	(vorrq_m_n_s32): Likewise.
! 	(vqrshrntq_n_s32): Likewise.
! 	(vqshrnbq_n_s32): Likewise.
! 	(vqshrntq_n_s32): Likewise.
! 	(vrshrnbq_n_s32): Likewise.
! 	(vrshrntq_n_s32): Likewise.
! 	(vshrnbq_n_s32): Likewise.
! 	(vshrntq_n_s32): Likewise.
! 	(vcmlaq_f32): Likewise.
! 	(vcmlaq_rot180_f32): Likewise.
! 	(vcmlaq_rot270_f32): Likewise.
! 	(vcmlaq_rot90_f32): Likewise.
! 	(vfmaq_f32): Likewise.
! 	(vfmaq_n_f32): Likewise.
! 	(vfmasq_n_f32): Likewise.
! 	(vfmsq_f32): Likewise.
! 	(vmlaldavaq_s32): Likewise.
! 	(vmlaldavaxq_s32): Likewise.
! 	(vmlsldavaq_s32): Likewise.
! 	(vmlsldavaxq_s32): Likewise.
! 	(vabsq_m_f32): Likewise.
! 	(vcvtmq_m_s32_f32): Likewise.
! 	(vcvtnq_m_s32_f32): Likewise.
! 	(vcvtpq_m_s32_f32): Likewise.
! 	(vcvtq_m_s32_f32): Likewise.
! 	(vdupq_m_n_f32): Likewise.
! 	(vmaxnmaq_m_f32): Likewise.
! 	(vmaxnmavq_p_f32): Likewise.
! 	(vmaxnmvq_p_f32): Likewise.
! 	(vminnmaq_m_f32): Likewise.
! 	(vminnmavq_p_f32): Likewise.
! 	(vminnmvq_p_f32): Likewise.
! 	(vmlaldavq_p_s32): Likewise.
! 	(vmlaldavxq_p_s32): Likewise.
! 	(vmlsldavq_p_s32): Likewise.
! 	(vmlsldavxq_p_s32): Likewise.
! 	(vmovlbq_m_s16): Likewise.
! 	(vmovltq_m_s16): Likewise.
! 	(vmovnbq_m_s32): Likewise.
! 	(vmovntq_m_s32): Likewise.
! 	(vnegq_m_f32): Likewise.
! 	(vpselq_f32): Likewise.
! 	(vqmovnbq_m_s32): Likewise.
! 	(vqmovntq_m_s32): Likewise.
! 	(vrev32q_m_s16): Likewise.
! 	(vrev64q_m_f32): Likewise.
! 	(vrndaq_m_f32): Likewise.
! 	(vrndmq_m_f32): Likewise.
! 	(vrndnq_m_f32): Likewise.
! 	(vrndpq_m_f32): Likewise.
! 	(vrndq_m_f32): Likewise.
! 	(vrndxq_m_f32): Likewise.
! 	(vcmpeqq_m_n_f32): Likewise.
! 	(vcmpgeq_m_f32): Likewise.
! 	(vcmpgeq_m_n_f32): Likewise.
! 	(vcmpgtq_m_f32): Likewise.
! 	(vcmpgtq_m_n_f32): Likewise.
! 	(vcmpleq_m_f32): Likewise.
! 	(vcmpleq_m_n_f32): Likewise.
! 	(vcmpltq_m_f32): Likewise.
! 	(vcmpltq_m_n_f32): Likewise.
! 	(vcmpneq_m_f32): Likewise.
! 	(vcmpneq_m_n_f32): Likewise.
! 	(vmvnq_m_n_u32): Likewise.
! 	(vorrq_m_n_u32): Likewise.
! 	(vqrshruntq_n_s32): Likewise.
! 	(vqshrunbq_n_s32): Likewise.
! 	(vqshruntq_n_s32): Likewise.
! 	(vcvtmq_m_u32_f32): Likewise.
! 	(vcvtnq_m_u32_f32): Likewise.
! 	(vcvtpq_m_u32_f32): Likewise.
! 	(vcvtq_m_u32_f32): Likewise.
! 	(vqmovunbq_m_s32): Likewise.
! 	(vqmovuntq_m_s32): Likewise.
! 	(vqrshrntq_n_u32): Likewise.
! 	(vqshrnbq_n_u32): Likewise.
! 	(vqshrntq_n_u32): Likewise.
! 	(vrshrnbq_n_u32): Likewise.
! 	(vrshrntq_n_u32): Likewise.
! 	(vshrnbq_n_u32): Likewise.
! 	(vshrntq_n_u32): Likewise.
! 	(vmlaldavaq_u32): Likewise.
! 	(vmlaldavaxq_u32): Likewise.
! 	(vmlaldavq_p_u32): Likewise.
! 	(vmlaldavxq_p_u32): Likewise.
! 	(vmovlbq_m_u16): Likewise.
! 	(vmovltq_m_u16): Likewise.
! 	(vmovnbq_m_u32): Likewise.
! 	(vmovntq_m_u32): Likewise.
! 	(vqmovnbq_m_u32): Likewise.
! 	(vqmovntq_m_u32): Likewise.
! 	(vrev32q_m_u16): Likewise.
! 	(__arm_vrmlaldavhaxq_s32): Define intrinsic.
! 	(__arm_vrmlsldavhaq_s32): Likewise.
! 	(__arm_vrmlsldavhaxq_s32): Likewise.
! 	(__arm_vaddlvaq_p_s32): Likewise.
! 	(__arm_vrev16q_m_s8): Likewise.
! 	(__arm_vrmlaldavhq_p_s32): Likewise.
! 	(__arm_vrmlaldavhxq_p_s32): Likewise.
! 	(__arm_vrmlsldavhq_p_s32): Likewise.
! 	(__arm_vrmlsldavhxq_p_s32): Likewise.
! 	(__arm_vaddlvaq_p_u32): Likewise.
! 	(__arm_vrev16q_m_u8): Likewise.
! 	(__arm_vrmlaldavhq_p_u32): Likewise.
! 	(__arm_vmvnq_m_n_s16): Likewise.
! 	(__arm_vorrq_m_n_s16): Likewise.
! 	(__arm_vqrshrntq_n_s16): Likewise.
! 	(__arm_vqshrnbq_n_s16): Likewise.
! 	(__arm_vqshrntq_n_s16): Likewise.
! 	(__arm_vrshrnbq_n_s16): Likewise.
! 	(__arm_vrshrntq_n_s16): Likewise.
! 	(__arm_vshrnbq_n_s16): Likewise.
! 	(__arm_vshrntq_n_s16): Likewise.
! 	(__arm_vmlaldavaq_s16): Likewise.
! 	(__arm_vmlaldavaxq_s16): Likewise.
! 	(__arm_vmlsldavaq_s16): Likewise.
! 	(__arm_vmlsldavaxq_s16): Likewise.
! 	(__arm_vmlaldavq_p_s16): Likewise.
! 	(__arm_vmlaldavxq_p_s16): Likewise.
! 	(__arm_vmlsldavq_p_s16): Likewise.
! 	(__arm_vmlsldavxq_p_s16): Likewise.
! 	(__arm_vmovlbq_m_s8): Likewise.
! 	(__arm_vmovltq_m_s8): Likewise.
! 	(__arm_vmovnbq_m_s16): Likewise.
! 	(__arm_vmovntq_m_s16): Likewise.
! 	(__arm_vqmovnbq_m_s16): Likewise.
! 	(__arm_vqmovntq_m_s16): Likewise.
! 	(__arm_vrev32q_m_s8): Likewise.
! 	(__arm_vmvnq_m_n_u16): Likewise.
! 	(__arm_vorrq_m_n_u16): Likewise.
! 	(__arm_vqrshruntq_n_s16): Likewise.
! 	(__arm_vqshrunbq_n_s16): Likewise.
! 	(__arm_vqshruntq_n_s16): Likewise.
! 	(__arm_vqmovunbq_m_s16): Likewise.
! 	(__arm_vqmovuntq_m_s16): Likewise.
! 	(__arm_vqrshrntq_n_u16): Likewise.
! 	(__arm_vqshrnbq_n_u16): Likewise.
! 	(__arm_vqshrntq_n_u16): Likewise.
! 	(__arm_vrshrnbq_n_u16): Likewise.
! 	(__arm_vrshrntq_n_u16): Likewise.
! 	(__arm_vshrnbq_n_u16): Likewise.
! 	(__arm_vshrntq_n_u16): Likewise.
! 	(__arm_vmlaldavaq_u16): Likewise.
! 	(__arm_vmlaldavaxq_u16): Likewise.
! 	(__arm_vmlaldavq_p_u16): Likewise.
! 	(__arm_vmlaldavxq_p_u16): Likewise.
! 	(__arm_vmovlbq_m_u8): Likewise.
! 	(__arm_vmovltq_m_u8): Likewise.
! 	(__arm_vmovnbq_m_u16): Likewise.
! 	(__arm_vmovntq_m_u16): Likewise.
! 	(__arm_vqmovnbq_m_u16): Likewise.
! 	(__arm_vqmovntq_m_u16): Likewise.
! 	(__arm_vrev32q_m_u8): Likewise.
! 	(__arm_vmvnq_m_n_s32): Likewise.
! 	(__arm_vorrq_m_n_s32): Likewise.
! 	(__arm_vqrshrntq_n_s32): Likewise.
! 	(__arm_vqshrnbq_n_s32): Likewise.
! 	(__arm_vqshrntq_n_s32): Likewise.
! 	(__arm_vrshrnbq_n_s32): Likewise.
! 	(__arm_vrshrntq_n_s32): Likewise.
! 	(__arm_vshrnbq_n_s32): Likewise.
! 	(__arm_vshrntq_n_s32): Likewise.
! 	(__arm_vmlaldavaq_s32): Likewise.
! 	(__arm_vmlaldavaxq_s32): Likewise.
! 	(__arm_vmlsldavaq_s32): Likewise.
! 	(__arm_vmlsldavaxq_s32): Likewise.
! 	(__arm_vmlaldavq_p_s32): Likewise.
! 	(__arm_vmlaldavxq_p_s32): Likewise.
! 	(__arm_vmlsldavq_p_s32): Likewise.
! 	(__arm_vmlsldavxq_p_s32): Likewise.
! 	(__arm_vmovlbq_m_s16): Likewise.
! 	(__arm_vmovltq_m_s16): Likewise.
! 	(__arm_vmovnbq_m_s32): Likewise.
! 	(__arm_vmovntq_m_s32): Likewise.
! 	(__arm_vqmovnbq_m_s32): Likewise.
! 	(__arm_vqmovntq_m_s32): Likewise.
! 	(__arm_vrev32q_m_s16): Likewise.
! 	(__arm_vmvnq_m_n_u32): Likewise.
! 	(__arm_vorrq_m_n_u32): Likewise.
! 	(__arm_vqrshruntq_n_s32): Likewise.
! 	(__arm_vqshrunbq_n_s32): Likewise.
! 	(__arm_vqshruntq_n_s32): Likewise.
! 	(__arm_vqmovunbq_m_s32): Likewise.
! 	(__arm_vqmovuntq_m_s32): Likewise.
! 	(__arm_vqrshrntq_n_u32): Likewise.
! 	(__arm_vqshrnbq_n_u32): Likewise.
! 	(__arm_vqshrntq_n_u32): Likewise.
! 	(__arm_vrshrnbq_n_u32): Likewise.
! 	(__arm_vrshrntq_n_u32): Likewise.
! 	(__arm_vshrnbq_n_u32): Likewise.
! 	(__arm_vshrntq_n_u32): Likewise.
! 	(__arm_vmlaldavaq_u32): Likewise.
! 	(__arm_vmlaldavaxq_u32): Likewise.
! 	(__arm_vmlaldavq_p_u32): Likewise.
! 	(__arm_vmlaldavxq_p_u32): Likewise.
! 	(__arm_vmovlbq_m_u16): Likewise.
! 	(__arm_vmovltq_m_u16): Likewise.
! 	(__arm_vmovnbq_m_u32): Likewise.
! 	(__arm_vmovntq_m_u32): Likewise.
! 	(__arm_vqmovnbq_m_u32): Likewise.
! 	(__arm_vqmovntq_m_u32): Likewise.
! 	(__arm_vrev32q_m_u16): Likewise.
! 	(__arm_vcvtbq_m_f16_f32): Likewise.
! 	(__arm_vcvtbq_m_f32_f16): Likewise.
! 	(__arm_vcvttq_m_f16_f32): Likewise.
! 	(__arm_vcvttq_m_f32_f16): Likewise.
! 	(__arm_vrev32q_m_f16): Likewise.
! 	(__arm_vcmlaq_f16): Likewise.
! 	(__arm_vcmlaq_rot180_f16): Likewise.
! 	(__arm_vcmlaq_rot270_f16): Likewise.
! 	(__arm_vcmlaq_rot90_f16): Likewise.
! 	(__arm_vfmaq_f16): Likewise.
! 	(__arm_vfmaq_n_f16): Likewise.
! 	(__arm_vfmasq_n_f16): Likewise.
! 	(__arm_vfmsq_f16): Likewise.
! 	(__arm_vabsq_m_f16): Likewise.
! 	(__arm_vcvtmq_m_s16_f16): Likewise.
! 	(__arm_vcvtnq_m_s16_f16): Likewise.
! 	(__arm_vcvtpq_m_s16_f16): Likewise.
! 	(__arm_vcvtq_m_s16_f16): Likewise.
! 	(__arm_vdupq_m_n_f16): Likewise.
! 	(__arm_vmaxnmaq_m_f16): Likewise.
! 	(__arm_vmaxnmavq_p_f16): Likewise.
! 	(__arm_vmaxnmvq_p_f16): Likewise.
! 	(__arm_vminnmaq_m_f16): Likewise.
! 	(__arm_vminnmavq_p_f16): Likewise.
! 	(__arm_vminnmvq_p_f16): Likewise.
! 	(__arm_vnegq_m_f16): Likewise.
! 	(__arm_vpselq_f16): Likewise.
! 	(__arm_vrev64q_m_f16): Likewise.
! 	(__arm_vrndaq_m_f16): Likewise.
! 	(__arm_vrndmq_m_f16): Likewise.
! 	(__arm_vrndnq_m_f16): Likewise.
! 	(__arm_vrndpq_m_f16): Likewise.
! 	(__arm_vrndq_m_f16): Likewise.
! 	(__arm_vrndxq_m_f16): Likewise.
! 	(__arm_vcmpeqq_m_n_f16): Likewise.
! 	(__arm_vcmpgeq_m_f16): Likewise.
! 	(__arm_vcmpgeq_m_n_f16): Likewise.
! 	(__arm_vcmpgtq_m_f16): Likewise.
! 	(__arm_vcmpgtq_m_n_f16): Likewise.
! 	(__arm_vcmpleq_m_f16): Likewise.
! 	(__arm_vcmpleq_m_n_f16): Likewise.
! 	(__arm_vcmpltq_m_f16): Likewise.
! 	(__arm_vcmpltq_m_n_f16): Likewise.
! 	(__arm_vcmpneq_m_f16): Likewise.
! 	(__arm_vcmpneq_m_n_f16): Likewise.
! 	(__arm_vcvtmq_m_u16_f16): Likewise.
! 	(__arm_vcvtnq_m_u16_f16): Likewise.
! 	(__arm_vcvtpq_m_u16_f16): Likewise.
! 	(__arm_vcvtq_m_u16_f16): Likewise.
! 	(__arm_vcmlaq_f32): Likewise.
! 	(__arm_vcmlaq_rot180_f32): Likewise.
! 	(__arm_vcmlaq_rot270_f32): Likewise.
! 	(__arm_vcmlaq_rot90_f32): Likewise.
! 	(__arm_vfmaq_f32): Likewise.
! 	(__arm_vfmaq_n_f32): Likewise.
! 	(__arm_vfmasq_n_f32): Likewise.
! 	(__arm_vfmsq_f32): Likewise.
! 	(__arm_vabsq_m_f32): Likewise.
! 	(__arm_vcvtmq_m_s32_f32): Likewise.
! 	(__arm_vcvtnq_m_s32_f32): Likewise.
! 	(__arm_vcvtpq_m_s32_f32): Likewise.
! 	(__arm_vcvtq_m_s32_f32): Likewise.
! 	(__arm_vdupq_m_n_f32): Likewise.
! 	(__arm_vmaxnmaq_m_f32): Likewise.
! 	(__arm_vmaxnmavq_p_f32): Likewise.
! 	(__arm_vmaxnmvq_p_f32): Likewise.
! 	(__arm_vminnmaq_m_f32): Likewise.
! 	(__arm_vminnmavq_p_f32): Likewise.
! 	(__arm_vminnmvq_p_f32): Likewise.
! 	(__arm_vnegq_m_f32): Likewise.
! 	(__arm_vpselq_f32): Likewise.
! 	(__arm_vrev64q_m_f32): Likewise.
! 	(__arm_vrndaq_m_f32): Likewise.
! 	(__arm_vrndmq_m_f32): Likewise.
! 	(__arm_vrndnq_m_f32): Likewise.
! 	(__arm_vrndpq_m_f32): Likewise.
! 	(__arm_vrndq_m_f32): Likewise.
! 	(__arm_vrndxq_m_f32): Likewise.
! 	(__arm_vcmpeqq_m_n_f32): Likewise.
! 	(__arm_vcmpgeq_m_f32): Likewise.
! 	(__arm_vcmpgeq_m_n_f32): Likewise.
! 	(__arm_vcmpgtq_m_f32): Likewise.
! 	(__arm_vcmpgtq_m_n_f32): Likewise.
! 	(__arm_vcmpleq_m_f32): Likewise.
! 	(__arm_vcmpleq_m_n_f32): Likewise.
! 	(__arm_vcmpltq_m_f32): Likewise.
! 	(__arm_vcmpltq_m_n_f32): Likewise.
! 	(__arm_vcmpneq_m_f32): Likewise.
! 	(__arm_vcmpneq_m_n_f32): Likewise.
! 	(__arm_vcvtmq_m_u32_f32): Likewise.
! 	(__arm_vcvtnq_m_u32_f32): Likewise.
! 	(__arm_vcvtpq_m_u32_f32): Likewise.
! 	(__arm_vcvtq_m_u32_f32): Likewise.
! 	(vcvtq_m): Define polymorphic variant.
! 	(vabsq_m): Likewise.
! 	(vcmlaq): Likewise.
! 	(vcmlaq_rot180): Likewise.
! 	(vcmlaq_rot270): Likewise.
! 	(vcmlaq_rot90): Likewise.
! 	(vcmpeqq_m_n): Likewise.
! 	(vcmpgeq_m_n): Likewise.
! 	(vrndxq_m): Likewise.
! 	(vrndq_m): Likewise.
! 	(vrndpq_m): Likewise.
! 	(vcmpgtq_m_n): Likewise.
! 	(vcmpgtq_m): Likewise.
! 	(vcmpleq_m): Likewise.
! 	(vcmpleq_m_n): Likewise.
! 	(vcmpltq_m_n): Likewise.
! 	(vcmpltq_m): Likewise.
! 	(vcmpneq_m): Likewise.
! 	(vcmpneq_m_n): Likewise.
! 	(vcvtbq_m): Likewise.
! 	(vcvttq_m): Likewise.
! 	(vcvtmq_m): Likewise.
! 	(vcvtnq_m): Likewise.
! 	(vcvtpq_m): Likewise.
! 	(vdupq_m_n): Likewise.
! 	(vfmaq_n): Likewise.
! 	(vfmaq): Likewise.
! 	(vfmasq_n): Likewise.
! 	(vfmsq): Likewise.
! 	(vmaxnmaq_m): Likewise.
! 	(vmaxnmavq_m): Likewise.
! 	(vmaxnmvq_m): Likewise.
! 	(vmaxnmavq_p): Likewise.
! 	(vmaxnmvq_p): Likewise.
! 	(vminnmaq_m): Likewise.
! 	(vminnmavq_p): Likewise.
! 	(vminnmvq_p): Likewise.
! 	(vrndnq_m): Likewise.
! 	(vrndaq_m): Likewise.
! 	(vrndmq_m): Likewise.
! 	(vrev64q_m): Likewise.
! 	(vrev32q_m): Likewise.
! 	(vpselq): Likewise.
! 	(vnegq_m): Likewise.
! 	(vcmpgeq_m): Likewise.
! 	(vshrntq_n): Likewise.
! 	(vrshrntq_n): Likewise.
! 	(vmovlbq_m): Likewise.
! 	(vmovnbq_m): Likewise.
! 	(vmovntq_m): Likewise.
! 	(vmvnq_m_n): Likewise.
! 	(vmvnq_m): Likewise.
! 	(vshrnbq_n): Likewise.
! 	(vrshrnbq_n): Likewise.
! 	(vqshruntq_n): Likewise.
! 	(vrev16q_m): Likewise.
! 	(vqshrunbq_n): Likewise.
! 	(vqshrntq_n): Likewise.
! 	(vqrshruntq_n): Likewise.
! 	(vqrshrntq_n): Likewise.
! 	(vqshrnbq_n): Likewise.
! 	(vqmovuntq_m): Likewise.
! 	(vqmovntq_m): Likewise.
! 	(vqmovnbq_m): Likewise.
! 	(vorrq_m_n): Likewise.
! 	(vmovltq_m): Likewise.
! 	(vqmovunbq_m): Likewise.
! 	(vaddlvaq_p): Likewise.
! 	(vmlaldavaq): Likewise.
! 	(vmlaldavaxq): Likewise.
! 	(vmlaldavq_p): Likewise.
! 	(vmlaldavxq_p): Likewise.
! 	(vmlsldavaq): Likewise.
! 	(vmlsldavaxq): Likewise.
! 	(vmlsldavq_p): Likewise.
! 	(vmlsldavxq_p): Likewise.
! 	(vrmlaldavhaxq): Likewise.
! 	(vrmlaldavhq_p): Likewise.
! 	(vrmlaldavhxq_p): Likewise.
! 	(vrmlsldavhaq): Likewise.
! 	(vrmlsldavhaxq): Likewise.
! 	(vrmlsldavhq_p): Likewise.
! 	(vrmlsldavhxq_p): Likewise.
! 	* config/arm/arm_mve_builtins.def (TERNOP_NONE_NONE_IMM_UNONE): Use
! 	builtin qualifier.
! 	(TERNOP_NONE_NONE_NONE_IMM): Likewise.
! 	(TERNOP_NONE_NONE_NONE_NONE): Likewise.
! 	(TERNOP_NONE_NONE_NONE_UNONE): Likewise.
! 	(TERNOP_UNONE_NONE_NONE_UNONE): Likewise.
! 	(TERNOP_UNONE_UNONE_IMM_UNONE): Likewise.
! 	(TERNOP_UNONE_UNONE_NONE_IMM): Likewise.
! 	(TERNOP_UNONE_UNONE_NONE_UNONE): Likewise.
! 	(TERNOP_UNONE_UNONE_UNONE_IMM): Likewise.
! 	(TERNOP_UNONE_UNONE_UNONE_UNONE): Likewise.
! 	* config/arm/mve.md (MVE_constraint3): Define mode attribute iterator.
! 	(MVE_pred3): Likewise.
! 	(MVE_constraint1): Likewise.
! 	(MVE_pred1): Likewise.
! 	(VMLALDAVQ_P): Define iterator.
! 	(VQMOVNBQ_M): Likewise.
! 	(VMOVLTQ_M): Likewise.
! 	(VMOVNBQ_M): Likewise.
! 	(VRSHRNTQ_N): Likewise.
! 	(VORRQ_M_N): Likewise.
! 	(VREV32Q_M): Likewise.
! 	(VREV16Q_M): Likewise.
! 	(VQRSHRNTQ_N): Likewise.
! 	(VMOVNTQ_M): Likewise.
! 	(VMOVLBQ_M): Likewise.
! 	(VMLALDAVAQ): Likewise.
! 	(VQSHRNBQ_N): Likewise.
! 	(VSHRNBQ_N): Likewise.
! 	(VRSHRNBQ_N): Likewise.
! 	(VMLALDAVXQ_P): Likewise.
! 	(VQMOVNTQ_M): Likewise.
! 	(VMVNQ_M_N): Likewise.
! 	(VQSHRNTQ_N): Likewise.
! 	(VMLALDAVAXQ): Likewise.
! 	(VSHRNTQ_N): Likewise.
! 	(VCVTMQ_M): Likewise.
! 	(VCVTNQ_M): Likewise.
! 	(VCVTPQ_M): Likewise.
! 	(VCVTQ_M_N_FROM_F): Likewise.
! 	(VCVTQ_M_FROM_F): Likewise.
! 	(VRMLALDAVHQ_P): Likewise.
! 	(VADDLVAQ_P): Likewise.
! 	(mve_vrndq_m_f<mode>): Define RTL pattern.
! 	(mve_vabsq_m_f<mode>): Likewise.
! 	(mve_vaddlvaq_p_<supf>v4si): Likewise.
! 	(mve_vcmlaq_f<mode>): Likewise.
! 	(mve_vcmlaq_rot180_f<mode>): Likewise.
! 	(mve_vcmlaq_rot270_f<mode>): Likewise.
! 	(mve_vcmlaq_rot90_f<mode>): Likewise.
! 	(mve_vcmpeqq_m_n_f<mode>): Likewise.
! 	(mve_vcmpgeq_m_f<mode>): Likewise.
! 	(mve_vcmpgeq_m_n_f<mode>): Likewise.
! 	(mve_vcmpgtq_m_f<mode>): Likewise.
! 	(mve_vcmpgtq_m_n_f<mode>): Likewise.
! 	(mve_vcmpleq_m_f<mode>): Likewise.
! 	(mve_vcmpleq_m_n_f<mode>): Likewise.
! 	(mve_vcmpltq_m_f<mode>): Likewise.
! 	(mve_vcmpltq_m_n_f<mode>): Likewise.
! 	(mve_vcmpneq_m_f<mode>): Likewise.
! 	(mve_vcmpneq_m_n_f<mode>): Likewise.
! 	(mve_vcvtbq_m_f16_f32v8hf): Likewise.
! 	(mve_vcvtbq_m_f32_f16v4sf): Likewise.
! 	(mve_vcvttq_m_f16_f32v8hf): Likewise.
! 	(mve_vcvttq_m_f32_f16v4sf): Likewise.
! 	(mve_vdupq_m_n_f<mode>): Likewise.
! 	(mve_vfmaq_f<mode>): Likewise.
! 	(mve_vfmaq_n_f<mode>): Likewise.
! 	(mve_vfmasq_n_f<mode>): Likewise.
! 	(mve_vfmsq_f<mode>): Likewise.
! 	(mve_vmaxnmaq_m_f<mode>): Likewise.
! 	(mve_vmaxnmavq_p_f<mode>): Likewise.
! 	(mve_vmaxnmvq_p_f<mode>): Likewise.
! 	(mve_vminnmaq_m_f<mode>): Likewise.
! 	(mve_vminnmavq_p_f<mode>): Likewise.
! 	(mve_vminnmvq_p_f<mode>): Likewise.
! 	(mve_vmlaldavaq_<supf><mode>): Likewise.
! 	(mve_vmlaldavaxq_<supf><mode>): Likewise.
! 	(mve_vmlaldavq_p_<supf><mode>): Likewise.
! 	(mve_vmlaldavxq_p_<supf><mode>): Likewise.
! 	(mve_vmlsldavaq_s<mode>): Likewise.
! 	(mve_vmlsldavaxq_s<mode>): Likewise.
! 	(mve_vmlsldavq_p_s<mode>): Likewise.
! 	(mve_vmlsldavxq_p_s<mode>): Likewise.
! 	(mve_vmovlbq_m_<supf><mode>): Likewise.
! 	(mve_vmovltq_m_<supf><mode>): Likewise.
! 	(mve_vmovnbq_m_<supf><mode>): Likewise.
! 	(mve_vmovntq_m_<supf><mode>): Likewise.
! 	(mve_vmvnq_m_n_<supf><mode>): Likewise.
! 	(mve_vnegq_m_f<mode>): Likewise.
! 	(mve_vorrq_m_n_<supf><mode>): Likewise.
! 	(mve_vpselq_f<mode>): Likewise.
! 	(mve_vqmovnbq_m_<supf><mode>): Likewise.
! 	(mve_vqmovntq_m_<supf><mode>): Likewise.
! 	(mve_vqmovunbq_m_s<mode>): Likewise.
! 	(mve_vqmovuntq_m_s<mode>): Likewise.
! 	(mve_vqrshrntq_n_<supf><mode>): Likewise.
! 	(mve_vqrshruntq_n_s<mode>): Likewise.
! 	(mve_vqshrnbq_n_<supf><mode>): Likewise.
! 	(mve_vqshrntq_n_<supf><mode>): Likewise.
! 	(mve_vqshrunbq_n_s<mode>): Likewise.
! 	(mve_vqshruntq_n_s<mode>): Likewise.
! 	(mve_vrev32q_m_fv8hf): Likewise.
! 	(mve_vrev32q_m_<supf><mode>): Likewise.
! 	(mve_vrev64q_m_f<mode>): Likewise.
! 	(mve_vrmlaldavhaxq_sv4si): Likewise.
! 	(mve_vrmlaldavhxq_p_sv4si): Likewise.
! 	(mve_vrmlsldavhaxq_sv4si): Likewise.
! 	(mve_vrmlsldavhq_p_sv4si): Likewise.
! 	(mve_vrmlsldavhxq_p_sv4si): Likewise.
! 	(mve_vrndaq_m_f<mode>): Likewise.
! 	(mve_vrndmq_m_f<mode>): Likewise.
! 	(mve_vrndnq_m_f<mode>): Likewise.
! 	(mve_vrndpq_m_f<mode>): Likewise.
! 	(mve_vrndxq_m_f<mode>): Likewise.
! 	(mve_vrshrnbq_n_<supf><mode>): Likewise.
! 	(mve_vrshrntq_n_<supf><mode>): Likewise.
! 	(mve_vshrnbq_n_<supf><mode>): Likewise.
! 	(mve_vshrntq_n_<supf><mode>): Likewise.
! 	(mve_vcvtmq_m_<supf><mode>): Likewise.
! 	(mve_vcvtpq_m_<supf><mode>): Likewise.
! 	(mve_vcvtnq_m_<supf><mode>): Likewise.
! 	(mve_vcvtq_m_n_from_f_<supf><mode>): Likewise.
! 	(mve_vrev16q_m_<supf>v16qi): Likewise.
! 	(mve_vcvtq_m_from_f_<supf><mode>): Likewise.
! 	(mve_vrmlaldavhq_p_<supf>v4si): Likewise.
! 	(mve_vrmlsldavhaq_sv4si): Likewise.
! 
! 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm_mve.h (vpselq_u8): Define macro.
! 	(vpselq_s8): Likewise.
! 	(vrev64q_m_u8): Likewise.
! 	(vqrdmlashq_n_u8): Likewise.
! 	(vqrdmlahq_n_u8): Likewise.
! 	(vqdmlahq_n_u8): Likewise.
! 	(vmvnq_m_u8): Likewise.
! 	(vmlasq_n_u8): Likewise.
! 	(vmlaq_n_u8): Likewise.
! 	(vmladavq_p_u8): Likewise.
! 	(vmladavaq_u8): Likewise.
! 	(vminvq_p_u8): Likewise.
! 	(vmaxvq_p_u8): Likewise.
! 	(vdupq_m_n_u8): Likewise.
! 	(vcmpneq_m_u8): Likewise.
! 	(vcmpneq_m_n_u8): Likewise.
! 	(vcmphiq_m_u8): Likewise.
! 	(vcmphiq_m_n_u8): Likewise.
! 	(vcmpeqq_m_u8): Likewise.
! 	(vcmpeqq_m_n_u8): Likewise.
! 	(vcmpcsq_m_u8): Likewise.
! 	(vcmpcsq_m_n_u8): Likewise.
! 	(vclzq_m_u8): Likewise.
! 	(vaddvaq_p_u8): Likewise.
! 	(vsriq_n_u8): Likewise.
! 	(vsliq_n_u8): Likewise.
! 	(vshlq_m_r_u8): Likewise.
! 	(vrshlq_m_n_u8): Likewise.
! 	(vqshlq_m_r_u8): Likewise.
! 	(vqrshlq_m_n_u8): Likewise.
! 	(vminavq_p_s8): Likewise.
! 	(vminaq_m_s8): Likewise.
! 	(vmaxavq_p_s8): Likewise.
! 	(vmaxaq_m_s8): Likewise.
! 	(vcmpneq_m_s8): Likewise.
! 	(vcmpneq_m_n_s8): Likewise.
! 	(vcmpltq_m_s8): Likewise.
! 	(vcmpltq_m_n_s8): Likewise.
! 	(vcmpleq_m_s8): Likewise.
! 	(vcmpleq_m_n_s8): Likewise.
! 	(vcmpgtq_m_s8): Likewise.
! 	(vcmpgtq_m_n_s8): Likewise.
! 	(vcmpgeq_m_s8): Likewise.
! 	(vcmpgeq_m_n_s8): Likewise.
! 	(vcmpeqq_m_s8): Likewise.
! 	(vcmpeqq_m_n_s8): Likewise.
! 	(vshlq_m_r_s8): Likewise.
! 	(vrshlq_m_n_s8): Likewise.
! 	(vrev64q_m_s8): Likewise.
! 	(vqshlq_m_r_s8): Likewise.
! 	(vqrshlq_m_n_s8): Likewise.
! 	(vqnegq_m_s8): Likewise.
! 	(vqabsq_m_s8): Likewise.
! 	(vnegq_m_s8): Likewise.
! 	(vmvnq_m_s8): Likewise.
! 	(vmlsdavxq_p_s8): Likewise.
! 	(vmlsdavq_p_s8): Likewise.
! 	(vmladavxq_p_s8): Likewise.
! 	(vmladavq_p_s8): Likewise.
! 	(vminvq_p_s8): Likewise.
! 	(vmaxvq_p_s8): Likewise.
! 	(vdupq_m_n_s8): Likewise.
! 	(vclzq_m_s8): Likewise.
! 	(vclsq_m_s8): Likewise.
! 	(vaddvaq_p_s8): Likewise.
! 	(vabsq_m_s8): Likewise.
! 	(vqrdmlsdhxq_s8): Likewise.
! 	(vqrdmlsdhq_s8): Likewise.
! 	(vqrdmlashq_n_s8): Likewise.
! 	(vqrdmlahq_n_s8): Likewise.
! 	(vqrdmladhxq_s8): Likewise.
! 	(vqrdmladhq_s8): Likewise.
! 	(vqdmlsdhxq_s8): Likewise.
! 	(vqdmlsdhq_s8): Likewise.
! 	(vqdmlahq_n_s8): Likewise.
! 	(vqdmladhxq_s8): Likewise.
! 	(vqdmladhq_s8): Likewise.
! 	(vmlsdavaxq_s8): Likewise.
! 	(vmlsdavaq_s8): Likewise.
! 	(vmlasq_n_s8): Likewise.
! 	(vmlaq_n_s8): Likewise.
! 	(vmladavaxq_s8): Likewise.
! 	(vmladavaq_s8): Likewise.
! 	(vsriq_n_s8): Likewise.
! 	(vsliq_n_s8): Likewise.
! 	(vpselq_u16): Likewise.
! 	(vpselq_s16): Likewise.
! 	(vrev64q_m_u16): Likewise.
! 	(vqrdmlashq_n_u16): Likewise.
! 	(vqrdmlahq_n_u16): Likewise.
! 	(vqdmlahq_n_u16): Likewise.
! 	(vmvnq_m_u16): Likewise.
! 	(vmlasq_n_u16): Likewise.
! 	(vmlaq_n_u16): Likewise.
! 	(vmladavq_p_u16): Likewise.
! 	(vmladavaq_u16): Likewise.
! 	(vminvq_p_u16): Likewise.
! 	(vmaxvq_p_u16): Likewise.
! 	(vdupq_m_n_u16): Likewise.
! 	(vcmpneq_m_u16): Likewise.
! 	(vcmpneq_m_n_u16): Likewise.
! 	(vcmphiq_m_u16): Likewise.
! 	(vcmphiq_m_n_u16): Likewise.
! 	(vcmpeqq_m_u16): Likewise.
! 	(vcmpeqq_m_n_u16): Likewise.
! 	(vcmpcsq_m_u16): Likewise.
! 	(vcmpcsq_m_n_u16): Likewise.
! 	(vclzq_m_u16): Likewise.
! 	(vaddvaq_p_u16): Likewise.
! 	(vsriq_n_u16): Likewise.
! 	(vsliq_n_u16): Likewise.
! 	(vshlq_m_r_u16): Likewise.
! 	(vrshlq_m_n_u16): Likewise.
! 	(vqshlq_m_r_u16): Likewise.
! 	(vqrshlq_m_n_u16): Likewise.
! 	(vminavq_p_s16): Likewise.
! 	(vminaq_m_s16): Likewise.
! 	(vmaxavq_p_s16): Likewise.
! 	(vmaxaq_m_s16): Likewise.
! 	(vcmpneq_m_s16): Likewise.
! 	(vcmpneq_m_n_s16): Likewise.
! 	(vcmpltq_m_s16): Likewise.
! 	(vcmpltq_m_n_s16): Likewise.
! 	(vcmpleq_m_s16): Likewise.
! 	(vcmpleq_m_n_s16): Likewise.
! 	(vcmpgtq_m_s16): Likewise.
! 	(vcmpgtq_m_n_s16): Likewise.
! 	(vcmpgeq_m_s16): Likewise.
! 	(vcmpgeq_m_n_s16): Likewise.
! 	(vcmpeqq_m_s16): Likewise.
! 	(vcmpeqq_m_n_s16): Likewise.
! 	(vshlq_m_r_s16): Likewise.
! 	(vrshlq_m_n_s16): Likewise.
! 	(vrev64q_m_s16): Likewise.
! 	(vqshlq_m_r_s16): Likewise.
! 	(vqrshlq_m_n_s16): Likewise.
! 	(vqnegq_m_s16): Likewise.
! 	(vqabsq_m_s16): Likewise.
! 	(vnegq_m_s16): Likewise.
! 	(vmvnq_m_s16): Likewise.
! 	(vmlsdavxq_p_s16): Likewise.
! 	(vmlsdavq_p_s16): Likewise.
! 	(vmladavxq_p_s16): Likewise.
! 	(vmladavq_p_s16): Likewise.
! 	(vminvq_p_s16): Likewise.
! 	(vmaxvq_p_s16): Likewise.
! 	(vdupq_m_n_s16): Likewise.
! 	(vclzq_m_s16): Likewise.
! 	(vclsq_m_s16): Likewise.
! 	(vaddvaq_p_s16): Likewise.
! 	(vabsq_m_s16): Likewise.
! 	(vqrdmlsdhxq_s16): Likewise.
! 	(vqrdmlsdhq_s16): Likewise.
! 	(vqrdmlashq_n_s16): Likewise.
! 	(vqrdmlahq_n_s16): Likewise.
! 	(vqrdmladhxq_s16): Likewise.
! 	(vqrdmladhq_s16): Likewise.
! 	(vqdmlsdhxq_s16): Likewise.
! 	(vqdmlsdhq_s16): Likewise.
! 	(vqdmlahq_n_s16): Likewise.
! 	(vqdmladhxq_s16): Likewise.
! 	(vqdmladhq_s16): Likewise.
! 	(vmlsdavaxq_s16): Likewise.
! 	(vmlsdavaq_s16): Likewise.
! 	(vmlasq_n_s16): Likewise.
! 	(vmlaq_n_s16): Likewise.
! 	(vmladavaxq_s16): Likewise.
! 	(vmladavaq_s16): Likewise.
! 	(vsriq_n_s16): Likewise.
! 	(vsliq_n_s16): Likewise.
! 	(vpselq_u32): Likewise.
! 	(vpselq_s32): Likewise.
! 	(vrev64q_m_u32): Likewise.
! 	(vqrdmlashq_n_u32): Likewise.
! 	(vqrdmlahq_n_u32): Likewise.
! 	(vqdmlahq_n_u32): Likewise.
! 	(vmvnq_m_u32): Likewise.
! 	(vmlasq_n_u32): Likewise.
! 	(vmlaq_n_u32): Likewise.
! 	(vmladavq_p_u32): Likewise.
! 	(vmladavaq_u32): Likewise.
! 	(vminvq_p_u32): Likewise.
! 	(vmaxvq_p_u32): Likewise.
! 	(vdupq_m_n_u32): Likewise.
! 	(vcmpneq_m_u32): Likewise.
! 	(vcmpneq_m_n_u32): Likewise.
! 	(vcmphiq_m_u32): Likewise.
! 	(vcmphiq_m_n_u32): Likewise.
! 	(vcmpeqq_m_u32): Likewise.
! 	(vcmpeqq_m_n_u32): Likewise.
! 	(vcmpcsq_m_u32): Likewise.
! 	(vcmpcsq_m_n_u32): Likewise.
! 	(vclzq_m_u32): Likewise.
! 	(vaddvaq_p_u32): Likewise.
! 	(vsriq_n_u32): Likewise.
! 	(vsliq_n_u32): Likewise.
! 	(vshlq_m_r_u32): Likewise.
! 	(vrshlq_m_n_u32): Likewise.
! 	(vqshlq_m_r_u32): Likewise.
! 	(vqrshlq_m_n_u32): Likewise.
! 	(vminavq_p_s32): Likewise.
! 	(vminaq_m_s32): Likewise.
! 	(vmaxavq_p_s32): Likewise.
! 	(vmaxaq_m_s32): Likewise.
! 	(vcmpneq_m_s32): Likewise.
! 	(vcmpneq_m_n_s32): Likewise.
! 	(vcmpltq_m_s32): Likewise.
! 	(vcmpltq_m_n_s32): Likewise.
! 	(vcmpleq_m_s32): Likewise.
! 	(vcmpleq_m_n_s32): Likewise.
! 	(vcmpgtq_m_s32): Likewise.
! 	(vcmpgtq_m_n_s32): Likewise.
! 	(vcmpgeq_m_s32): Likewise.
! 	(vcmpgeq_m_n_s32): Likewise.
! 	(vcmpeqq_m_s32): Likewise.
! 	(vcmpeqq_m_n_s32): Likewise.
! 	(vshlq_m_r_s32): Likewise.
! 	(vrshlq_m_n_s32): Likewise.
! 	(vrev64q_m_s32): Likewise.
! 	(vqshlq_m_r_s32): Likewise.
! 	(vqrshlq_m_n_s32): Likewise.
! 	(vqnegq_m_s32): Likewise.
! 	(vqabsq_m_s32): Likewise.
! 	(vnegq_m_s32): Likewise.
! 	(vmvnq_m_s32): Likewise.
! 	(vmlsdavxq_p_s32): Likewise.
! 	(vmlsdavq_p_s32): Likewise.
! 	(vmladavxq_p_s32): Likewise.
! 	(vmladavq_p_s32): Likewise.
! 	(vminvq_p_s32): Likewise.
! 	(vmaxvq_p_s32): Likewise.
! 	(vdupq_m_n_s32): Likewise.
! 	(vclzq_m_s32): Likewise.
! 	(vclsq_m_s32): Likewise.
! 	(vaddvaq_p_s32): Likewise.
! 	(vabsq_m_s32): Likewise.
! 	(vqrdmlsdhxq_s32): Likewise.
! 	(vqrdmlsdhq_s32): Likewise.
! 	(vqrdmlashq_n_s32): Likewise.
! 	(vqrdmlahq_n_s32): Likewise.
! 	(vqrdmladhxq_s32): Likewise.
! 	(vqrdmladhq_s32): Likewise.
! 	(vqdmlsdhxq_s32): Likewise.
! 	(vqdmlsdhq_s32): Likewise.
! 	(vqdmlahq_n_s32): Likewise.
! 	(vqdmladhxq_s32): Likewise.
! 	(vqdmladhq_s32): Likewise.
! 	(vmlsdavaxq_s32): Likewise.
! 	(vmlsdavaq_s32): Likewise.
! 	(vmlasq_n_s32): Likewise.
! 	(vmlaq_n_s32): Likewise.
! 	(vmladavaxq_s32): Likewise.
! 	(vmladavaq_s32): Likewise.
! 	(vsriq_n_s32): Likewise.
! 	(vsliq_n_s32): Likewise.
! 	(vpselq_u64): Likewise.
! 	(vpselq_s64): Likewise.
! 	(__arm_vpselq_u8): Define intrinsic.
! 	(__arm_vpselq_s8): Likewise.
! 	(__arm_vrev64q_m_u8): Likewise.
! 	(__arm_vqrdmlashq_n_u8): Likewise.
! 	(__arm_vqrdmlahq_n_u8): Likewise.
! 	(__arm_vqdmlahq_n_u8): Likewise.
! 	(__arm_vmvnq_m_u8): Likewise.
! 	(__arm_vmlasq_n_u8): Likewise.
! 	(__arm_vmlaq_n_u8): Likewise.
! 	(__arm_vmladavq_p_u8): Likewise.
! 	(__arm_vmladavaq_u8): Likewise.
! 	(__arm_vminvq_p_u8): Likewise.
! 	(__arm_vmaxvq_p_u8): Likewise.
! 	(__arm_vdupq_m_n_u8): Likewise.
! 	(__arm_vcmpneq_m_u8): Likewise.
! 	(__arm_vcmpneq_m_n_u8): Likewise.
! 	(__arm_vcmphiq_m_u8): Likewise.
! 	(__arm_vcmphiq_m_n_u8): Likewise.
! 	(__arm_vcmpeqq_m_u8): Likewise.
! 	(__arm_vcmpeqq_m_n_u8): Likewise.
! 	(__arm_vcmpcsq_m_u8): Likewise.
! 	(__arm_vcmpcsq_m_n_u8): Likewise.
! 	(__arm_vclzq_m_u8): Likewise.
! 	(__arm_vaddvaq_p_u8): Likewise.
! 	(__arm_vsriq_n_u8): Likewise.
! 	(__arm_vsliq_n_u8): Likewise.
! 	(__arm_vshlq_m_r_u8): Likewise.
! 	(__arm_vrshlq_m_n_u8): Likewise.
! 	(__arm_vqshlq_m_r_u8): Likewise.
! 	(__arm_vqrshlq_m_n_u8): Likewise.
! 	(__arm_vminavq_p_s8): Likewise.
! 	(__arm_vminaq_m_s8): Likewise.
! 	(__arm_vmaxavq_p_s8): Likewise.
! 	(__arm_vmaxaq_m_s8): Likewise.
! 	(__arm_vcmpneq_m_s8): Likewise.
! 	(__arm_vcmpneq_m_n_s8): Likewise.
! 	(__arm_vcmpltq_m_s8): Likewise.
! 	(__arm_vcmpltq_m_n_s8): Likewise.
! 	(__arm_vcmpleq_m_s8): Likewise.
! 	(__arm_vcmpleq_m_n_s8): Likewise.
! 	(__arm_vcmpgtq_m_s8): Likewise.
! 	(__arm_vcmpgtq_m_n_s8): Likewise.
! 	(__arm_vcmpgeq_m_s8): Likewise.
! 	(__arm_vcmpgeq_m_n_s8): Likewise.
! 	(__arm_vcmpeqq_m_s8): Likewise.
! 	(__arm_vcmpeqq_m_n_s8): Likewise.
! 	(__arm_vshlq_m_r_s8): Likewise.
! 	(__arm_vrshlq_m_n_s8): Likewise.
! 	(__arm_vrev64q_m_s8): Likewise.
! 	(__arm_vqshlq_m_r_s8): Likewise.
! 	(__arm_vqrshlq_m_n_s8): Likewise.
! 	(__arm_vqnegq_m_s8): Likewise.
! 	(__arm_vqabsq_m_s8): Likewise.
! 	(__arm_vnegq_m_s8): Likewise.
! 	(__arm_vmvnq_m_s8): Likewise.
! 	(__arm_vmlsdavxq_p_s8): Likewise.
! 	(__arm_vmlsdavq_p_s8): Likewise.
! 	(__arm_vmladavxq_p_s8): Likewise.
! 	(__arm_vmladavq_p_s8): Likewise.
! 	(__arm_vminvq_p_s8): Likewise.
! 	(__arm_vmaxvq_p_s8): Likewise.
! 	(__arm_vdupq_m_n_s8): Likewise.
! 	(__arm_vclzq_m_s8): Likewise.
! 	(__arm_vclsq_m_s8): Likewise.
! 	(__arm_vaddvaq_p_s8): Likewise.
! 	(__arm_vabsq_m_s8): Likewise.
! 	(__arm_vqrdmlsdhxq_s8): Likewise.
! 	(__arm_vqrdmlsdhq_s8): Likewise.
! 	(__arm_vqrdmlashq_n_s8): Likewise.
! 	(__arm_vqrdmlahq_n_s8): Likewise.
! 	(__arm_vqrdmladhxq_s8): Likewise.
! 	(__arm_vqrdmladhq_s8): Likewise.
! 	(__arm_vqdmlsdhxq_s8): Likewise.
! 	(__arm_vqdmlsdhq_s8): Likewise.
! 	(__arm_vqdmlahq_n_s8): Likewise.
! 	(__arm_vqdmladhxq_s8): Likewise.
! 	(__arm_vqdmladhq_s8): Likewise.
! 	(__arm_vmlsdavaxq_s8): Likewise.
! 	(__arm_vmlsdavaq_s8): Likewise.
! 	(__arm_vmlasq_n_s8): Likewise.
! 	(__arm_vmlaq_n_s8): Likewise.
! 	(__arm_vmladavaxq_s8): Likewise.
! 	(__arm_vmladavaq_s8): Likewise.
! 	(__arm_vsriq_n_s8): Likewise.
! 	(__arm_vsliq_n_s8): Likewise.
! 	(__arm_vpselq_u16): Likewise.
! 	(__arm_vpselq_s16): Likewise.
! 	(__arm_vrev64q_m_u16): Likewise.
! 	(__arm_vqrdmlashq_n_u16): Likewise.
! 	(__arm_vqrdmlahq_n_u16): Likewise.
! 	(__arm_vqdmlahq_n_u16): Likewise.
! 	(__arm_vmvnq_m_u16): Likewise.
! 	(__arm_vmlasq_n_u16): Likewise.
! 	(__arm_vmlaq_n_u16): Likewise.
! 	(__arm_vmladavq_p_u16): Likewise.
! 	(__arm_vmladavaq_u16): Likewise.
! 	(__arm_vminvq_p_u16): Likewise.
! 	(__arm_vmaxvq_p_u16): Likewise.
! 	(__arm_vdupq_m_n_u16): Likewise.
! 	(__arm_vcmpneq_m_u16): Likewise.
! 	(__arm_vcmpneq_m_n_u16): Likewise.
! 	(__arm_vcmphiq_m_u16): Likewise.
! 	(__arm_vcmphiq_m_n_u16): Likewise.
! 	(__arm_vcmpeqq_m_u16): Likewise.
! 	(__arm_vcmpeqq_m_n_u16): Likewise.
! 	(__arm_vcmpcsq_m_u16): Likewise.
! 	(__arm_vcmpcsq_m_n_u16): Likewise.
! 	(__arm_vclzq_m_u16): Likewise.
! 	(__arm_vaddvaq_p_u16): Likewise.
! 	(__arm_vsriq_n_u16): Likewise.
! 	(__arm_vsliq_n_u16): Likewise.
! 	(__arm_vshlq_m_r_u16): Likewise.
! 	(__arm_vrshlq_m_n_u16): Likewise.
! 	(__arm_vqshlq_m_r_u16): Likewise.
! 	(__arm_vqrshlq_m_n_u16): Likewise.
! 	(__arm_vminavq_p_s16): Likewise.
! 	(__arm_vminaq_m_s16): Likewise.
! 	(__arm_vmaxavq_p_s16): Likewise.
! 	(__arm_vmaxaq_m_s16): Likewise.
! 	(__arm_vcmpneq_m_s16): Likewise.
! 	(__arm_vcmpneq_m_n_s16): Likewise.
! 	(__arm_vcmpltq_m_s16): Likewise.
! 	(__arm_vcmpltq_m_n_s16): Likewise.
! 	(__arm_vcmpleq_m_s16): Likewise.
! 	(__arm_vcmpleq_m_n_s16): Likewise.
! 	(__arm_vcmpgtq_m_s16): Likewise.
! 	(__arm_vcmpgtq_m_n_s16): Likewise.
! 	(__arm_vcmpgeq_m_s16): Likewise.
! 	(__arm_vcmpgeq_m_n_s16): Likewise.
! 	(__arm_vcmpeqq_m_s16): Likewise.
! 	(__arm_vcmpeqq_m_n_s16): Likewise.
! 	(__arm_vshlq_m_r_s16): Likewise.
! 	(__arm_vrshlq_m_n_s16): Likewise.
! 	(__arm_vrev64q_m_s16): Likewise.
! 	(__arm_vqshlq_m_r_s16): Likewise.
! 	(__arm_vqrshlq_m_n_s16): Likewise.
! 	(__arm_vqnegq_m_s16): Likewise.
! 	(__arm_vqabsq_m_s16): Likewise.
! 	(__arm_vnegq_m_s16): Likewise.
! 	(__arm_vmvnq_m_s16): Likewise.
! 	(__arm_vmlsdavxq_p_s16): Likewise.
! 	(__arm_vmlsdavq_p_s16): Likewise.
! 	(__arm_vmladavxq_p_s16): Likewise.
! 	(__arm_vmladavq_p_s16): Likewise.
! 	(__arm_vminvq_p_s16): Likewise.
! 	(__arm_vmaxvq_p_s16): Likewise.
! 	(__arm_vdupq_m_n_s16): Likewise.
! 	(__arm_vclzq_m_s16): Likewise.
! 	(__arm_vclsq_m_s16): Likewise.
! 	(__arm_vaddvaq_p_s16): Likewise.
! 	(__arm_vabsq_m_s16): Likewise.
! 	(__arm_vqrdmlsdhxq_s16): Likewise.
! 	(__arm_vqrdmlsdhq_s16): Likewise.
! 	(__arm_vqrdmlashq_n_s16): Likewise.
! 	(__arm_vqrdmlahq_n_s16): Likewise.
! 	(__arm_vqrdmladhxq_s16): Likewise.
! 	(__arm_vqrdmladhq_s16): Likewise.
! 	(__arm_vqdmlsdhxq_s16): Likewise.
! 	(__arm_vqdmlsdhq_s16): Likewise.
! 	(__arm_vqdmlahq_n_s16): Likewise.
! 	(__arm_vqdmladhxq_s16): Likewise.
! 	(__arm_vqdmladhq_s16): Likewise.
! 	(__arm_vmlsdavaxq_s16): Likewise.
! 	(__arm_vmlsdavaq_s16): Likewise.
! 	(__arm_vmlasq_n_s16): Likewise.
! 	(__arm_vmlaq_n_s16): Likewise.
! 	(__arm_vmladavaxq_s16): Likewise.
! 	(__arm_vmladavaq_s16): Likewise.
! 	(__arm_vsriq_n_s16): Likewise.
! 	(__arm_vsliq_n_s16): Likewise.
! 	(__arm_vpselq_u32): Likewise.
! 	(__arm_vpselq_s32): Likewise.
! 	(__arm_vrev64q_m_u32): Likewise.
! 	(__arm_vqrdmlashq_n_u32): Likewise.
! 	(__arm_vqrdmlahq_n_u32): Likewise.
! 	(__arm_vqdmlahq_n_u32): Likewise.
! 	(__arm_vmvnq_m_u32): Likewise.
! 	(__arm_vmlasq_n_u32): Likewise.
! 	(__arm_vmlaq_n_u32): Likewise.
! 	(__arm_vmladavq_p_u32): Likewise.
! 	(__arm_vmladavaq_u32): Likewise.
! 	(__arm_vminvq_p_u32): Likewise.
! 	(__arm_vmaxvq_p_u32): Likewise.
! 	(__arm_vdupq_m_n_u32): Likewise.
! 	(__arm_vcmpneq_m_u32): Likewise.
! 	(__arm_vcmpneq_m_n_u32): Likewise.
! 	(__arm_vcmphiq_m_u32): Likewise.
! 	(__arm_vcmphiq_m_n_u32): Likewise.
! 	(__arm_vcmpeqq_m_u32): Likewise.
! 	(__arm_vcmpeqq_m_n_u32): Likewise.
! 	(__arm_vcmpcsq_m_u32): Likewise.
! 	(__arm_vcmpcsq_m_n_u32): Likewise.
! 	(__arm_vclzq_m_u32): Likewise.
! 	(__arm_vaddvaq_p_u32): Likewise.
! 	(__arm_vsriq_n_u32): Likewise.
! 	(__arm_vsliq_n_u32): Likewise.
! 	(__arm_vshlq_m_r_u32): Likewise.
! 	(__arm_vrshlq_m_n_u32): Likewise.
! 	(__arm_vqshlq_m_r_u32): Likewise.
! 	(__arm_vqrshlq_m_n_u32): Likewise.
! 	(__arm_vminavq_p_s32): Likewise.
! 	(__arm_vminaq_m_s32): Likewise.
! 	(__arm_vmaxavq_p_s32): Likewise.
! 	(__arm_vmaxaq_m_s32): Likewise.
! 	(__arm_vcmpneq_m_s32): Likewise.
! 	(__arm_vcmpneq_m_n_s32): Likewise.
! 	(__arm_vcmpltq_m_s32): Likewise.
! 	(__arm_vcmpltq_m_n_s32): Likewise.
! 	(__arm_vcmpleq_m_s32): Likewise.
! 	(__arm_vcmpleq_m_n_s32): Likewise.
! 	(__arm_vcmpgtq_m_s32): Likewise.
! 	(__arm_vcmpgtq_m_n_s32): Likewise.
! 	(__arm_vcmpgeq_m_s32): Likewise.
! 	(__arm_vcmpgeq_m_n_s32): Likewise.
! 	(__arm_vcmpeqq_m_s32): Likewise.
! 	(__arm_vcmpeqq_m_n_s32): Likewise.
! 	(__arm_vshlq_m_r_s32): Likewise.
! 	(__arm_vrshlq_m_n_s32): Likewise.
! 	(__arm_vrev64q_m_s32): Likewise.
! 	(__arm_vqshlq_m_r_s32): Likewise.
! 	(__arm_vqrshlq_m_n_s32): Likewise.
! 	(__arm_vqnegq_m_s32): Likewise.
! 	(__arm_vqabsq_m_s32): Likewise.
! 	(__arm_vnegq_m_s32): Likewise.
! 	(__arm_vmvnq_m_s32): Likewise.
! 	(__arm_vmlsdavxq_p_s32): Likewise.
! 	(__arm_vmlsdavq_p_s32): Likewise.
! 	(__arm_vmladavxq_p_s32): Likewise.
! 	(__arm_vmladavq_p_s32): Likewise.
! 	(__arm_vminvq_p_s32): Likewise.
! 	(__arm_vmaxvq_p_s32): Likewise.
! 	(__arm_vdupq_m_n_s32): Likewise.
! 	(__arm_vclzq_m_s32): Likewise.
! 	(__arm_vclsq_m_s32): Likewise.
! 	(__arm_vaddvaq_p_s32): Likewise.
! 	(__arm_vabsq_m_s32): Likewise.
! 	(__arm_vqrdmlsdhxq_s32): Likewise.
! 	(__arm_vqrdmlsdhq_s32): Likewise.
! 	(__arm_vqrdmlashq_n_s32): Likewise.
! 	(__arm_vqrdmlahq_n_s32): Likewise.
! 	(__arm_vqrdmladhxq_s32): Likewise.
! 	(__arm_vqrdmladhq_s32): Likewise.
! 	(__arm_vqdmlsdhxq_s32): Likewise.
! 	(__arm_vqdmlsdhq_s32): Likewise.
! 	(__arm_vqdmlahq_n_s32): Likewise.
! 	(__arm_vqdmladhxq_s32): Likewise.
! 	(__arm_vqdmladhq_s32): Likewise.
! 	(__arm_vmlsdavaxq_s32): Likewise.
! 	(__arm_vmlsdavaq_s32): Likewise.
! 	(__arm_vmlasq_n_s32): Likewise.
! 	(__arm_vmlaq_n_s32): Likewise.
! 	(__arm_vmladavaxq_s32): Likewise.
! 	(__arm_vmladavaq_s32): Likewise.
! 	(__arm_vsriq_n_s32): Likewise.
! 	(__arm_vsliq_n_s32): Likewise.
! 	(__arm_vpselq_u64): Likewise.
! 	(__arm_vpselq_s64): Likewise.
! 	(vcmpneq_m_n): Define polymorphic variant.
! 	(vcmpneq_m): Likewise.
! 	(vqrdmlsdhq): Likewise.
! 	(vqrdmlsdhxq): Likewise.
! 	(vqrshlq_m_n): Likewise.
! 	(vqshlq_m_r): Likewise.
! 	(vrev64q_m): Likewise.
! 	(vrshlq_m_n): Likewise.
! 	(vshlq_m_r): Likewise.
! 	(vsliq_n): Likewise.
! 	(vsriq_n): Likewise.
! 	(vqrdmlashq_n): Likewise.
! 	(vqrdmlahq): Likewise.
! 	(vqrdmladhxq): Likewise.
! 	(vqrdmladhq): Likewise.
! 	(vqnegq_m): Likewise.
! 	(vqdmlsdhxq): Likewise.
! 	(vabsq_m): Likewise.
! 	(vclsq_m): Likewise.
! 	(vclzq_m): Likewise.
! 	(vcmpgeq_m): Likewise.
! 	(vcmpgeq_m_n): Likewise.
! 	(vdupq_m_n): Likewise.
! 	(vmaxaq_m): Likewise.
! 	(vmlaq_n): Likewise.
! 	(vmlasq_n): Likewise.
! 	(vmvnq_m): Likewise.
! 	(vnegq_m): Likewise.
! 	(vpselq): Likewise.
! 	(vqdmlahq_n): Likewise.
! 	(vqrdmlahq_n): Likewise.
! 	(vqdmlsdhq): Likewise.
! 	(vqdmladhq): Likewise.
! 	(vqabsq_m): Likewise.
! 	(vminaq_m): Likewise.
! 	(vrmlaldavhaq): Likewise.
! 	(vmlsdavxq_p): Likewise.
! 	(vmlsdavq_p): Likewise.	
! 	(vmlsdavaxq): Likewise.	
! 	(vmlsdavaq): Likewise.	
! 	(vaddvaq_p): Likewise.	
! 	(vcmpcsq_m_n): Likewise.	
! 	(vcmpcsq_m): Likewise.	
! 	(vcmpeqq_m_n): Likewise.	
! 	(vcmpeqq_m): Likewise.	
! 	(vmladavxq_p): Likewise.	
! 	(vmladavq_p): Likewise.	
! 	(vmladavaxq): Likewise.	
! 	(vmladavaq): Likewise.	
! 	(vminvq_p): Likewise.	
! 	(vminavq_p): Likewise.	
! 	(vmaxvq_p): Likewise.	
! 	(vmaxavq_p): Likewise.	
! 	(vcmpltq_m_n): Likewise.	
! 	(vcmpltq_m): Likewise.	
! 	(vcmpleq_m): Likewise.	
! 	(vcmpleq_m_n): Likewise.	
! 	(vcmphiq_m_n): Likewise.	
! 	(vcmphiq_m): Likewise.	
! 	(vcmpgtq_m_n): Likewise.	
! 	(vcmpgtq_m): Likewise.	
! 	* config/arm/arm_mve_builtins.def (TERNOP_NONE_NONE_NONE_IMM): Use
! 	builtin qualifier.
! 	(TERNOP_NONE_NONE_NONE_NONE): Likewise.
! 	(TERNOP_NONE_NONE_NONE_UNONE): Likewise.
! 	(TERNOP_UNONE_NONE_NONE_UNONE): Likewise.
! 	(TERNOP_UNONE_UNONE_NONE_UNONE): Likewise.
! 	(TERNOP_UNONE_UNONE_UNONE_IMM): Likewise.
! 	(TERNOP_UNONE_UNONE_UNONE_UNONE): Likewise.
! 	* config/arm/constraints.md (Rc): Define constraint to check constant is
! 	in the range of 0 to 15.
! 	(Re): Define constraint to check constant is in the range of 0 to 31.
! 	* config/arm/mve.md (VADDVAQ_P): Define iterator.
! 	(VCLZQ_M): Likewise.
! 	(VCMPEQQ_M_N): Likewise.
! 	(VCMPEQQ_M): Likewise.
! 	(VCMPNEQ_M_N): Likewise.
! 	(VCMPNEQ_M): Likewise.
! 	(VDUPQ_M_N): Likewise.
! 	(VMAXVQ_P): Likewise.
! 	(VMINVQ_P): Likewise.
! 	(VMLADAVAQ): Likewise.
! 	(VMLADAVQ_P): Likewise.
! 	(VMLAQ_N): Likewise.
! 	(VMLASQ_N): Likewise.
! 	(VMVNQ_M): Likewise.
! 	(VPSELQ): Likewise.
! 	(VQDMLAHQ_N): Likewise.
! 	(VQRDMLAHQ_N): Likewise.
! 	(VQRDMLASHQ_N): Likewise.
! 	(VQRSHLQ_M_N): Likewise.
! 	(VQSHLQ_M_R): Likewise.
! 	(VREV64Q_M): Likewise.
! 	(VRSHLQ_M_N): Likewise.
! 	(VSHLQ_M_R): Likewise.
! 	(VSLIQ_N): Likewise.
! 	(VSRIQ_N): Likewise.
! 	(mve_vabsq_m_s<mode>): Define RTL pattern.
! 	(mve_vaddvaq_p_<supf><mode>): Likewise.
! 	(mve_vclsq_m_s<mode>): Likewise.
! 	(mve_vclzq_m_<supf><mode>): Likewise.
! 	(mve_vcmpcsq_m_n_u<mode>): Likewise.
! 	(mve_vcmpcsq_m_u<mode>): Likewise.
! 	(mve_vcmpeqq_m_n_<supf><mode>): Likewise.
! 	(mve_vcmpeqq_m_<supf><mode>): Likewise.
! 	(mve_vcmpgeq_m_n_s<mode>): Likewise.
! 	(mve_vcmpgeq_m_s<mode>): Likewise.
! 	(mve_vcmpgtq_m_n_s<mode>): Likewise.
! 	(mve_vcmpgtq_m_s<mode>): Likewise.
! 	(mve_vcmphiq_m_n_u<mode>): Likewise.
! 	(mve_vcmphiq_m_u<mode>): Likewise.
! 	(mve_vcmpleq_m_n_s<mode>): Likewise.
! 	(mve_vcmpleq_m_s<mode>): Likewise.
! 	(mve_vcmpltq_m_n_s<mode>): Likewise.
! 	(mve_vcmpltq_m_s<mode>): Likewise.
! 	(mve_vcmpneq_m_n_<supf><mode>): Likewise.
! 	(mve_vcmpneq_m_<supf><mode>): Likewise.
! 	(mve_vdupq_m_n_<supf><mode>): Likewise.
! 	(mve_vmaxaq_m_s<mode>): Likewise.
! 	(mve_vmaxavq_p_s<mode>): Likewise.
! 	(mve_vmaxvq_p_<supf><mode>): Likewise.
! 	(mve_vminaq_m_s<mode>): Likewise.
! 	(mve_vminavq_p_s<mode>): Likewise.
! 	(mve_vminvq_p_<supf><mode>): Likewise.
! 	(mve_vmladavaq_<supf><mode>): Likewise.
! 	(mve_vmladavq_p_<supf><mode>): Likewise.
! 	(mve_vmladavxq_p_s<mode>): Likewise.
! 	(mve_vmlaq_n_<supf><mode>): Likewise.
! 	(mve_vmlasq_n_<supf><mode>): Likewise.
! 	(mve_vmlsdavq_p_s<mode>): Likewise.
! 	(mve_vmlsdavxq_p_s<mode>): Likewise.
! 	(mve_vmvnq_m_<supf><mode>): Likewise.
! 	(mve_vnegq_m_s<mode>): Likewise.
! 	(mve_vpselq_<supf><mode>): Likewise.
! 	(mve_vqabsq_m_s<mode>): Likewise.
! 	(mve_vqdmlahq_n_<supf><mode>): Likewise.
! 	(mve_vqnegq_m_s<mode>): Likewise.
! 	(mve_vqrdmladhq_s<mode>): Likewise.
! 	(mve_vqrdmladhxq_s<mode>): Likewise.
! 	(mve_vqrdmlahq_n_<supf><mode>): Likewise.
! 	(mve_vqrdmlashq_n_<supf><mode>): Likewise.
! 	(mve_vqrdmlsdhq_s<mode>): Likewise.
! 	(mve_vqrdmlsdhxq_s<mode>): Likewise.
! 	(mve_vqrshlq_m_n_<supf><mode>): Likewise.
! 	(mve_vqshlq_m_r_<supf><mode>): Likewise.
! 	(mve_vrev64q_m_<supf><mode>): Likewise.
! 	(mve_vrshlq_m_n_<supf><mode>): Likewise.
! 	(mve_vshlq_m_r_<supf><mode>): Likewise.
! 	(mve_vsliq_n_<supf><mode>): Likewise.
! 	(mve_vsriq_n_<supf><mode>): Likewise.
! 	(mve_vqdmlsdhxq_s<mode>): Likewise.
! 	(mve_vqdmlsdhq_s<mode>): Likewise.
! 	(mve_vqdmladhxq_s<mode>): Likewise.
! 	(mve_vqdmladhq_s<mode>): Likewise.
! 	(mve_vmlsdavaxq_s<mode>): Likewise.
! 	(mve_vmlsdavaq_s<mode>): Likewise.
! 	(mve_vmladavaxq_s<mode>): Likewise.
! 	* config/arm/predicates.md (mve_imm_15):Define predicate to check the
! 	matching constraint Rc.
! 	(mve_imm_31): Define predicate to check	the matching constraint Re.
! 
! 2020-03-18  Andrew Stubbs  <ams@codesourcery.com>
! 
! 	* config/gcn/gcn-valu.md (vec_cmp<mode>di): Set operand 1 to DImode.
! 	(vec_cmp<mode>di_dup): Likewise.
! 	* config/gcn/gcn.h (STORE_FLAG_VALUE): Set to -1.
! 
! 2020-03-18  Andrew Stubbs  <ams@codesourcery.com>
! 
! 	* config/gcn/gcn-valu.md (COND_MODE): Delete.
! 	(COND_INT_MODE): Delete.
! 	(cond_op): Add "mult".
! 	(cond_<expander><mode>): Use VEC_ALLREG_MODE.
! 	(cond_<expander><mode>): Use VEC_ALLREG_INT_MODE.
! 
! 2020-03-18   Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/94206
! 	* gimple-fold.c (gimple_fold_builtin_memset): Avoid using
! 	partial int modes or not mode-precision integer types for
! 	the store.
! 
! 2020-03-18  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* asan.c (get_mem_refs_of_builtin_call): Fix up duplicated word issue
! 	in a comment.
! 	* config/arc/arc.c (frame_stack_add): Likewise.
! 	* gimple-loop-versioning.cc (loop_versioning::analyze_arbitrary_term):
! 	Likewise.
! 	* ipa-predicate.c (predicate::remap_after_inlining): Likewise.
! 	* tree-ssa-strlen.h (handle_printf_call): Likewise.
! 	* tree-ssa-strlen.c (is_strlen_related_p): Likewise.
! 	* optinfo-emit-json.cc (optrecord_json_writer::add_record): Likewise.
! 
! 2020-03-18  Duan bo  <duanbo3@huawei.com>
! 
! 	PR target/94201
! 	* config/aarch64/aarch64.md (ldr_got_tiny): Delete.
! 	(@ldr_got_tiny_<mode>): New pattern.
! 	(ldr_got_tiny_sidi): Likewise.
! 	* config/aarch64/aarch64.c (aarch64_load_symref_appropriately): Use
! 	them to handle SYMBOL_TINY_GOT for ILP32.
! 
! 2020-03-18  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/aarch64.c (aarch64_sve_abi): Treat p12-p15 as
! 	call-preserved for SVE PCS functions.
! 	(aarch64_layout_frame): Cope with up to 12 predicate save slots.
! 	Optimize the case in which there are no following vector save slots.
! 
! 2020-03-18  Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/94188
! 	* fold-const.c (build_fold_addr_expr): Convert address to
! 	correct type.
! 	* asan.c (maybe_create_ssa_name): Strip useless type conversions.
! 	* gimple-fold.c (gimple_fold_stmt_to_constant_1): Use build1
! 	to build the ADDR_EXPR which we don't really want to simplify.
! 	* tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
! 	* tree-ssa-loop-im.c (gather_mem_refs_stmt): Likewise.
! 	* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
! 	(simplify_builtin_call): Strip useless type conversions.
! 	* tree-ssa-strlen.c (new_strinfo): Likewise.
! 
! 2020-03-17  Alexey Neyman  <stilor@att.net>
! 
! 	PR debug/93751
! 	* dwarf2out.c (gen_decl_die): Proceed to generating the DIE if
! 	the debug level is terse and the declaration is public. Do not
! 	generate type info.
! 	(dwarf2out_decl): Same.
! 	(add_type_attribute): Return immediately if debug level is
! 	terse.
! 
! 2020-03-17  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/iterators.md (Vmtype): Handle V4BF and V8BF.
! 
! 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm-builtins.c (TERNOP_UNONE_UNONE_UNONE_IMM_QUALIFIERS):
! 	Define qualifier for ternary operands.
! 	(TERNOP_UNONE_UNONE_NONE_NONE_QUALIFIERS): Likewise.
! 	(TERNOP_UNONE_NONE_UNONE_IMM_QUALIFIERS): Likewise.
! 	(TERNOP_NONE_NONE_UNONE_IMM_QUALIFIERS): Likewise.
! 	(TERNOP_UNONE_UNONE_NONE_IMM_QUALIFIERS): Likewise.
! 	(TERNOP_UNONE_UNONE_NONE_UNONE_QUALIFIERS): Likewise.
! 	(TERNOP_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
! 	(TERNOP_UNONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
! 	(TERNOP_NONE_NONE_NONE_IMM_QUALIFIERS): Likewise.
! 	(TERNOP_NONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
! 	(TERNOP_NONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
! 	(TERNOP_NONE_NONE_UNONE_UNONE_QUALIFIERS): Likewise.
! 	(TERNOP_UNONE_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
! 	(TERNOP_NONE_NONE_NONE_NONE_QUALIFIERS): Likewise.
! 	* config/arm/arm_mve.h (vabavq_s8): Define macro.
! 	(vabavq_s16): Likewise.
! 	(vabavq_s32): Likewise.
! 	(vbicq_m_n_s16): Likewise.
! 	(vbicq_m_n_s32): Likewise.
! 	(vbicq_m_n_u16): Likewise.
! 	(vbicq_m_n_u32): Likewise.
! 	(vcmpeqq_m_f16): Likewise.
! 	(vcmpeqq_m_f32): Likewise.
! 	(vcvtaq_m_s16_f16): Likewise.
! 	(vcvtaq_m_u16_f16): Likewise.
! 	(vcvtaq_m_s32_f32): Likewise.
! 	(vcvtaq_m_u32_f32): Likewise.
! 	(vcvtq_m_f16_s16): Likewise.
! 	(vcvtq_m_f16_u16): Likewise.
! 	(vcvtq_m_f32_s32): Likewise.
! 	(vcvtq_m_f32_u32): Likewise.
! 	(vqrshrnbq_n_s16): Likewise.
! 	(vqrshrnbq_n_u16): Likewise.
! 	(vqrshrnbq_n_s32): Likewise.
! 	(vqrshrnbq_n_u32): Likewise.
! 	(vqrshrunbq_n_s16): Likewise.
! 	(vqrshrunbq_n_s32): Likewise.
! 	(vrmlaldavhaq_s32): Likewise.
! 	(vrmlaldavhaq_u32): Likewise.
! 	(vshlcq_s8): Likewise.
! 	(vshlcq_u8): Likewise.
! 	(vshlcq_s16): Likewise.
! 	(vshlcq_u16): Likewise.
! 	(vshlcq_s32): Likewise.
! 	(vshlcq_u32): Likewise.
! 	(vabavq_u8): Likewise.
! 	(vabavq_u16): Likewise.
! 	(vabavq_u32): Likewise.
! 	(__arm_vabavq_s8): Define intrinsic.
! 	(__arm_vabavq_s16): Likewise.
! 	(__arm_vabavq_s32): Likewise.
! 	(__arm_vabavq_u8): Likewise.
! 	(__arm_vabavq_u16): Likewise.
! 	(__arm_vabavq_u32): Likewise.
! 	(__arm_vbicq_m_n_s16): Likewise.
! 	(__arm_vbicq_m_n_s32): Likewise.
! 	(__arm_vbicq_m_n_u16): Likewise.
! 	(__arm_vbicq_m_n_u32): Likewise.
! 	(__arm_vqrshrnbq_n_s16): Likewise.
! 	(__arm_vqrshrnbq_n_u16): Likewise.
! 	(__arm_vqrshrnbq_n_s32): Likewise.
! 	(__arm_vqrshrnbq_n_u32): Likewise.
! 	(__arm_vqrshrunbq_n_s16): Likewise.
! 	(__arm_vqrshrunbq_n_s32): Likewise.
! 	(__arm_vrmlaldavhaq_s32): Likewise.
! 	(__arm_vrmlaldavhaq_u32): Likewise.
! 	(__arm_vshlcq_s8): Likewise.
! 	(__arm_vshlcq_u8): Likewise.
! 	(__arm_vshlcq_s16): Likewise.
! 	(__arm_vshlcq_u16): Likewise.
! 	(__arm_vshlcq_s32): Likewise.
! 	(__arm_vshlcq_u32): Likewise.
! 	(__arm_vcmpeqq_m_f16): Likewise.
! 	(__arm_vcmpeqq_m_f32): Likewise.
! 	(__arm_vcvtaq_m_s16_f16): Likewise.
! 	(__arm_vcvtaq_m_u16_f16): Likewise.
! 	(__arm_vcvtaq_m_s32_f32): Likewise.
! 	(__arm_vcvtaq_m_u32_f32): Likewise.
! 	(__arm_vcvtq_m_f16_s16): Likewise.
! 	(__arm_vcvtq_m_f16_u16): Likewise.
! 	(__arm_vcvtq_m_f32_s32): Likewise.
! 	(__arm_vcvtq_m_f32_u32): Likewise.
! 	(vcvtaq_m): Define polymorphic variant.
! 	(vcvtq_m): Likewise.
! 	(vabavq): Likewise.
! 	(vshlcq): Likewise.
! 	(vbicq_m_n): Likewise.
! 	(vqrshrnbq_n): Likewise.
! 	(vqrshrunbq_n): Likewise.
! 	* config/arm/arm_mve_builtins.def
! 	(TERNOP_UNONE_UNONE_UNONE_IMM_QUALIFIERS): Use the builtin qualifer.
! 	(TERNOP_UNONE_UNONE_NONE_NONE_QUALIFIERS): Likewise.
! 	(TERNOP_UNONE_NONE_UNONE_IMM_QUALIFIERS): Likewise.
! 	(TERNOP_NONE_NONE_UNONE_IMM_QUALIFIERS): Likewise.
! 	(TERNOP_UNONE_UNONE_NONE_IMM_QUALIFIERS): Likewise.
! 	(TERNOP_UNONE_UNONE_NONE_UNONE_QUALIFIERS): Likewise.
! 	(TERNOP_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
! 	(TERNOP_UNONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
! 	(TERNOP_NONE_NONE_NONE_IMM_QUALIFIERS): Likewise.
! 	(TERNOP_NONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
! 	(TERNOP_NONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
! 	(TERNOP_NONE_NONE_UNONE_UNONE_QUALIFIERS): Likewise.
! 	(TERNOP_UNONE_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
! 	(TERNOP_NONE_NONE_NONE_NONE_QUALIFIERS): Likewise.
! 	* config/arm/mve.md (VBICQ_M_N): Define iterator.
! 	(VCVTAQ_M): Likewise.
! 	(VCVTQ_M_TO_F): Likewise.
! 	(VQRSHRNBQ_N): Likewise.
! 	(VABAVQ): Likewise.
! 	(VSHLCQ): Likewise.
! 	(VRMLALDAVHAQ): Likewise.
! 	(mve_vbicq_m_n_<supf><mode>): Define RTL pattern.
! 	(mve_vcmpeqq_m_f<mode>): Likewise.
! 	(mve_vcvtaq_m_<supf><mode>): Likewise.
! 	(mve_vcvtq_m_to_f_<supf><mode>): Likewise.
! 	(mve_vqrshrnbq_n_<supf><mode>): Likewise.
! 	(mve_vqrshrunbq_n_s<mode>): Likewise.
! 	(mve_vrmlaldavhaq_<supf>v4si): Likewise.
! 	(mve_vabavq_<supf><mode>): Likewise.
! 	(mve_vshlcq_<supf><mode>): Likewise.
! 	(mve_vshlcq_<supf><mode>): Likewise.
! 	(mve_vshlcq_vec_<supf><mode>): Define RTL expand.
! 	(mve_vshlcq_carry_<supf><mode>): Likewise.
! 
! 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm_mve.h (vqmovntq_u16): Define macro.
! 	(vqmovnbq_u16): Likewise.
! 	(vmulltq_poly_p8): Likewise.
! 	(vmullbq_poly_p8): Likewise.
! 	(vmovntq_u16): Likewise.
! 	(vmovnbq_u16): Likewise.
! 	(vmlaldavxq_u16): Likewise.
! 	(vmlaldavq_u16): Likewise.
! 	(vqmovuntq_s16): Likewise.
! 	(vqmovunbq_s16): Likewise.
! 	(vshlltq_n_u8): Likewise.
! 	(vshllbq_n_u8): Likewise.
! 	(vorrq_n_u16): Likewise.
! 	(vbicq_n_u16): Likewise.
! 	(vcmpneq_n_f16): Likewise.
! 	(vcmpneq_f16): Likewise.
! 	(vcmpltq_n_f16): Likewise.
! 	(vcmpltq_f16): Likewise.
! 	(vcmpleq_n_f16): Likewise.
! 	(vcmpleq_f16): Likewise.
! 	(vcmpgtq_n_f16): Likewise.
! 	(vcmpgtq_f16): Likewise.
! 	(vcmpgeq_n_f16): Likewise.
! 	(vcmpgeq_f16): Likewise.
! 	(vcmpeqq_n_f16): Likewise.
! 	(vcmpeqq_f16): Likewise.
! 	(vsubq_f16): Likewise.
! 	(vqmovntq_s16): Likewise.
! 	(vqmovnbq_s16): Likewise.
! 	(vqdmulltq_s16): Likewise.
! 	(vqdmulltq_n_s16): Likewise.
! 	(vqdmullbq_s16): Likewise.
! 	(vqdmullbq_n_s16): Likewise.
! 	(vorrq_f16): Likewise.
! 	(vornq_f16): Likewise.
! 	(vmulq_n_f16): Likewise.
! 	(vmulq_f16): Likewise.
! 	(vmovntq_s16): Likewise.
! 	(vmovnbq_s16): Likewise.
! 	(vmlsldavxq_s16): Likewise.
! 	(vmlsldavq_s16): Likewise.
! 	(vmlaldavxq_s16): Likewise.
! 	(vmlaldavq_s16): Likewise.
! 	(vminnmvq_f16): Likewise.
! 	(vminnmq_f16): Likewise.
! 	(vminnmavq_f16): Likewise.
! 	(vminnmaq_f16): Likewise.
! 	(vmaxnmvq_f16): Likewise.
! 	(vmaxnmq_f16): Likewise.
! 	(vmaxnmavq_f16): Likewise.
! 	(vmaxnmaq_f16): Likewise.
! 	(veorq_f16): Likewise.
! 	(vcmulq_rot90_f16): Likewise.
! 	(vcmulq_rot270_f16): Likewise.
! 	(vcmulq_rot180_f16): Likewise.
! 	(vcmulq_f16): Likewise.
! 	(vcaddq_rot90_f16): Likewise.
! 	(vcaddq_rot270_f16): Likewise.
! 	(vbicq_f16): Likewise.
! 	(vandq_f16): Likewise.
! 	(vaddq_n_f16): Likewise.
! 	(vabdq_f16): Likewise.
! 	(vshlltq_n_s8): Likewise.
! 	(vshllbq_n_s8): Likewise.
! 	(vorrq_n_s16): Likewise.
! 	(vbicq_n_s16): Likewise.
! 	(vqmovntq_u32): Likewise.
! 	(vqmovnbq_u32): Likewise.
! 	(vmulltq_poly_p16): Likewise.
! 	(vmullbq_poly_p16): Likewise.
! 	(vmovntq_u32): Likewise.
! 	(vmovnbq_u32): Likewise.
! 	(vmlaldavxq_u32): Likewise.
! 	(vmlaldavq_u32): Likewise.
! 	(vqmovuntq_s32): Likewise.
! 	(vqmovunbq_s32): Likewise.
! 	(vshlltq_n_u16): Likewise.
! 	(vshllbq_n_u16): Likewise.
! 	(vorrq_n_u32): Likewise.
! 	(vbicq_n_u32): Likewise.
! 	(vcmpneq_n_f32): Likewise.
! 	(vcmpneq_f32): Likewise.
! 	(vcmpltq_n_f32): Likewise.
! 	(vcmpltq_f32): Likewise.
! 	(vcmpleq_n_f32): Likewise.
! 	(vcmpleq_f32): Likewise.
! 	(vcmpgtq_n_f32): Likewise.
! 	(vcmpgtq_f32): Likewise.
! 	(vcmpgeq_n_f32): Likewise.
! 	(vcmpgeq_f32): Likewise.
! 	(vcmpeqq_n_f32): Likewise.
! 	(vcmpeqq_f32): Likewise.
! 	(vsubq_f32): Likewise.
! 	(vqmovntq_s32): Likewise.
! 	(vqmovnbq_s32): Likewise.
! 	(vqdmulltq_s32): Likewise.
! 	(vqdmulltq_n_s32): Likewise.
! 	(vqdmullbq_s32): Likewise.
! 	(vqdmullbq_n_s32): Likewise.
! 	(vorrq_f32): Likewise.
! 	(vornq_f32): Likewise.
! 	(vmulq_n_f32): Likewise.
! 	(vmulq_f32): Likewise.
! 	(vmovntq_s32): Likewise.
! 	(vmovnbq_s32): Likewise.
! 	(vmlsldavxq_s32): Likewise.
! 	(vmlsldavq_s32): Likewise.
! 	(vmlaldavxq_s32): Likewise.
! 	(vmlaldavq_s32): Likewise.
! 	(vminnmvq_f32): Likewise.
! 	(vminnmq_f32): Likewise.
! 	(vminnmavq_f32): Likewise.
! 	(vminnmaq_f32): Likewise.
! 	(vmaxnmvq_f32): Likewise.
! 	(vmaxnmq_f32): Likewise.
! 	(vmaxnmavq_f32): Likewise.
! 	(vmaxnmaq_f32): Likewise.
! 	(veorq_f32): Likewise.
! 	(vcmulq_rot90_f32): Likewise.
! 	(vcmulq_rot270_f32): Likewise.
! 	(vcmulq_rot180_f32): Likewise.
! 	(vcmulq_f32): Likewise.
! 	(vcaddq_rot90_f32): Likewise.
! 	(vcaddq_rot270_f32): Likewise.
! 	(vbicq_f32): Likewise.
! 	(vandq_f32): Likewise.
! 	(vaddq_n_f32): Likewise.
! 	(vabdq_f32): Likewise.
! 	(vshlltq_n_s16): Likewise.
! 	(vshllbq_n_s16): Likewise.
! 	(vorrq_n_s32): Likewise.
! 	(vbicq_n_s32): Likewise.
! 	(vrmlaldavhq_u32): Likewise.
! 	(vctp8q_m): Likewise.
! 	(vctp64q_m): Likewise.
! 	(vctp32q_m): Likewise.
! 	(vctp16q_m): Likewise.
! 	(vaddlvaq_u32): Likewise.
! 	(vrmlsldavhxq_s32): Likewise.
! 	(vrmlsldavhq_s32): Likewise.
! 	(vrmlaldavhxq_s32): Likewise.
! 	(vrmlaldavhq_s32): Likewise.
! 	(vcvttq_f16_f32): Likewise.
! 	(vcvtbq_f16_f32): Likewise.
! 	(vaddlvaq_s32): Likewise.
! 	(__arm_vqmovntq_u16): Define intrinsic.
! 	(__arm_vqmovnbq_u16): Likewise.
! 	(__arm_vmulltq_poly_p8): Likewise.
! 	(__arm_vmullbq_poly_p8): Likewise.
! 	(__arm_vmovntq_u16): Likewise.
! 	(__arm_vmovnbq_u16): Likewise.
! 	(__arm_vmlaldavxq_u16): Likewise.
! 	(__arm_vmlaldavq_u16): Likewise.
! 	(__arm_vqmovuntq_s16): Likewise.
! 	(__arm_vqmovunbq_s16): Likewise.
! 	(__arm_vshlltq_n_u8): Likewise.
! 	(__arm_vshllbq_n_u8): Likewise.
! 	(__arm_vorrq_n_u16): Likewise.
! 	(__arm_vbicq_n_u16): Likewise.
! 	(__arm_vcmpneq_n_f16): Likewise.
! 	(__arm_vcmpneq_f16): Likewise.
! 	(__arm_vcmpltq_n_f16): Likewise.
! 	(__arm_vcmpltq_f16): Likewise.
! 	(__arm_vcmpleq_n_f16): Likewise.
! 	(__arm_vcmpleq_f16): Likewise.
! 	(__arm_vcmpgtq_n_f16): Likewise.
! 	(__arm_vcmpgtq_f16): Likewise.
! 	(__arm_vcmpgeq_n_f16): Likewise.
! 	(__arm_vcmpgeq_f16): Likewise.
! 	(__arm_vcmpeqq_n_f16): Likewise.
! 	(__arm_vcmpeqq_f16): Likewise.
! 	(__arm_vsubq_f16): Likewise.
! 	(__arm_vqmovntq_s16): Likewise.
! 	(__arm_vqmovnbq_s16): Likewise.
! 	(__arm_vqdmulltq_s16): Likewise.
! 	(__arm_vqdmulltq_n_s16): Likewise.
! 	(__arm_vqdmullbq_s16): Likewise.
! 	(__arm_vqdmullbq_n_s16): Likewise.
! 	(__arm_vorrq_f16): Likewise.
! 	(__arm_vornq_f16): Likewise.
! 	(__arm_vmulq_n_f16): Likewise.
! 	(__arm_vmulq_f16): Likewise.
! 	(__arm_vmovntq_s16): Likewise.
! 	(__arm_vmovnbq_s16): Likewise.
! 	(__arm_vmlsldavxq_s16): Likewise.
! 	(__arm_vmlsldavq_s16): Likewise.
! 	(__arm_vmlaldavxq_s16): Likewise.
! 	(__arm_vmlaldavq_s16): Likewise.
! 	(__arm_vminnmvq_f16): Likewise.
! 	(__arm_vminnmq_f16): Likewise.
! 	(__arm_vminnmavq_f16): Likewise.
! 	(__arm_vminnmaq_f16): Likewise.
! 	(__arm_vmaxnmvq_f16): Likewise.
! 	(__arm_vmaxnmq_f16): Likewise.
! 	(__arm_vmaxnmavq_f16): Likewise.
! 	(__arm_vmaxnmaq_f16): Likewise.
! 	(__arm_veorq_f16): Likewise.
! 	(__arm_vcmulq_rot90_f16): Likewise.
! 	(__arm_vcmulq_rot270_f16): Likewise.
! 	(__arm_vcmulq_rot180_f16): Likewise.
! 	(__arm_vcmulq_f16): Likewise.
! 	(__arm_vcaddq_rot90_f16): Likewise.
! 	(__arm_vcaddq_rot270_f16): Likewise.
! 	(__arm_vbicq_f16): Likewise.
! 	(__arm_vandq_f16): Likewise.
! 	(__arm_vaddq_n_f16): Likewise.
! 	(__arm_vabdq_f16): Likewise.
! 	(__arm_vshlltq_n_s8): Likewise.
! 	(__arm_vshllbq_n_s8): Likewise.
! 	(__arm_vorrq_n_s16): Likewise.
! 	(__arm_vbicq_n_s16): Likewise.
! 	(__arm_vqmovntq_u32): Likewise.
! 	(__arm_vqmovnbq_u32): Likewise.
! 	(__arm_vmulltq_poly_p16): Likewise.
! 	(__arm_vmullbq_poly_p16): Likewise.
! 	(__arm_vmovntq_u32): Likewise.
! 	(__arm_vmovnbq_u32): Likewise.
! 	(__arm_vmlaldavxq_u32): Likewise.
! 	(__arm_vmlaldavq_u32): Likewise.
! 	(__arm_vqmovuntq_s32): Likewise.
! 	(__arm_vqmovunbq_s32): Likewise.
! 	(__arm_vshlltq_n_u16): Likewise.
! 	(__arm_vshllbq_n_u16): Likewise.
! 	(__arm_vorrq_n_u32): Likewise.
! 	(__arm_vbicq_n_u32): Likewise.
! 	(__arm_vcmpneq_n_f32): Likewise.
! 	(__arm_vcmpneq_f32): Likewise.
! 	(__arm_vcmpltq_n_f32): Likewise.
! 	(__arm_vcmpltq_f32): Likewise.
! 	(__arm_vcmpleq_n_f32): Likewise.
! 	(__arm_vcmpleq_f32): Likewise.
! 	(__arm_vcmpgtq_n_f32): Likewise.
! 	(__arm_vcmpgtq_f32): Likewise.
! 	(__arm_vcmpgeq_n_f32): Likewise.
! 	(__arm_vcmpgeq_f32): Likewise.
! 	(__arm_vcmpeqq_n_f32): Likewise.
! 	(__arm_vcmpeqq_f32): Likewise.
! 	(__arm_vsubq_f32): Likewise.
! 	(__arm_vqmovntq_s32): Likewise.
! 	(__arm_vqmovnbq_s32): Likewise.
! 	(__arm_vqdmulltq_s32): Likewise.
! 	(__arm_vqdmulltq_n_s32): Likewise.
! 	(__arm_vqdmullbq_s32): Likewise.
! 	(__arm_vqdmullbq_n_s32): Likewise.
! 	(__arm_vorrq_f32): Likewise.
! 	(__arm_vornq_f32): Likewise.
! 	(__arm_vmulq_n_f32): Likewise.
! 	(__arm_vmulq_f32): Likewise.
! 	(__arm_vmovntq_s32): Likewise.
! 	(__arm_vmovnbq_s32): Likewise.
! 	(__arm_vmlsldavxq_s32): Likewise.
! 	(__arm_vmlsldavq_s32): Likewise.
! 	(__arm_vmlaldavxq_s32): Likewise.
! 	(__arm_vmlaldavq_s32): Likewise.
! 	(__arm_vminnmvq_f32): Likewise.
! 	(__arm_vminnmq_f32): Likewise.
! 	(__arm_vminnmavq_f32): Likewise.
! 	(__arm_vminnmaq_f32): Likewise.
! 	(__arm_vmaxnmvq_f32): Likewise.
! 	(__arm_vmaxnmq_f32): Likewise.
! 	(__arm_vmaxnmavq_f32): Likewise.
! 	(__arm_vmaxnmaq_f32): Likewise.
! 	(__arm_veorq_f32): Likewise.
! 	(__arm_vcmulq_rot90_f32): Likewise.
! 	(__arm_vcmulq_rot270_f32): Likewise.
! 	(__arm_vcmulq_rot180_f32): Likewise.
! 	(__arm_vcmulq_f32): Likewise.
! 	(__arm_vcaddq_rot90_f32): Likewise.
! 	(__arm_vcaddq_rot270_f32): Likewise.
! 	(__arm_vbicq_f32): Likewise.
! 	(__arm_vandq_f32): Likewise.
! 	(__arm_vaddq_n_f32): Likewise.
! 	(__arm_vabdq_f32): Likewise.
! 	(__arm_vshlltq_n_s16): Likewise.
! 	(__arm_vshllbq_n_s16): Likewise.
! 	(__arm_vorrq_n_s32): Likewise.
! 	(__arm_vbicq_n_s32): Likewise.
! 	(__arm_vrmlaldavhq_u32): Likewise.
! 	(__arm_vctp8q_m): Likewise.
! 	(__arm_vctp64q_m): Likewise.
! 	(__arm_vctp32q_m): Likewise.
! 	(__arm_vctp16q_m): Likewise.
! 	(__arm_vaddlvaq_u32): Likewise.
! 	(__arm_vrmlsldavhxq_s32): Likewise.
! 	(__arm_vrmlsldavhq_s32): Likewise.
! 	(__arm_vrmlaldavhxq_s32): Likewise.
! 	(__arm_vrmlaldavhq_s32): Likewise.
! 	(__arm_vcvttq_f16_f32): Likewise.
! 	(__arm_vcvtbq_f16_f32): Likewise.
! 	(__arm_vaddlvaq_s32): Likewise.
! 	(vst4q): Define polymorphic variant.
! 	(vrndxq): Likewise.
! 	(vrndq): Likewise.
! 	(vrndpq): Likewise.
! 	(vrndnq): Likewise.
! 	(vrndmq): Likewise.
! 	(vrndaq): Likewise.
! 	(vrev64q): Likewise.
! 	(vnegq): Likewise.
! 	(vdupq_n): Likewise.
! 	(vabsq): Likewise.
! 	(vrev32q): Likewise.
! 	(vcvtbq_f32): Likewise.
! 	(vcvttq_f32): Likewise.
! 	(vcvtq): Likewise.
! 	(vsubq_n): Likewise.
! 	(vbrsrq_n): Likewise.
! 	(vcvtq_n): Likewise.
! 	(vsubq): Likewise.
! 	(vorrq): Likewise.
! 	(vabdq): Likewise.
! 	(vaddq_n): Likewise.
! 	(vandq): Likewise.
! 	(vbicq): Likewise.
! 	(vornq): Likewise.
! 	(vmulq_n): Likewise.
! 	(vmulq): Likewise.
! 	(vcaddq_rot270): Likewise.
! 	(vcmpeqq_n): Likewise.
! 	(vcmpeqq): Likewise.
! 	(vcaddq_rot90): Likewise.
! 	(vcmpgeq_n): Likewise.
! 	(vcmpgeq): Likewise.
! 	(vcmpgtq_n): Likewise.
! 	(vcmpgtq): Likewise.
! 	(vcmpgtq): Likewise.
! 	(vcmpleq_n): Likewise.
! 	(vcmpleq_n): Likewise.
! 	(vcmpleq): Likewise.
! 	(vcmpleq): Likewise.
! 	(vcmpltq_n): Likewise.
! 	(vcmpltq_n): Likewise.
! 	(vcmpltq): Likewise.
! 	(vcmpltq): Likewise.
! 	(vcmpneq_n): Likewise.
! 	(vcmpneq_n): Likewise.
! 	(vcmpneq): Likewise.
! 	(vcmpneq): Likewise.
! 	(vcmulq): Likewise.
! 	(vcmulq): Likewise.
! 	(vcmulq_rot180): Likewise.
! 	(vcmulq_rot180): Likewise.
! 	(vcmulq_rot270): Likewise.
! 	(vcmulq_rot270): Likewise.
! 	(vcmulq_rot90): Likewise.
! 	(vcmulq_rot90): Likewise.
! 	(veorq): Likewise.
! 	(veorq): Likewise.
! 	(vmaxnmaq): Likewise.
! 	(vmaxnmaq): Likewise.
! 	(vmaxnmavq): Likewise.
! 	(vmaxnmavq): Likewise.
! 	(vmaxnmq): Likewise.
! 	(vmaxnmq): Likewise.
! 	(vmaxnmvq): Likewise.
! 	(vmaxnmvq): Likewise.
! 	(vminnmaq): Likewise.
! 	(vminnmaq): Likewise.
! 	(vminnmavq): Likewise.
! 	(vminnmavq): Likewise.
! 	(vminnmq): Likewise.
! 	(vminnmq): Likewise.
! 	(vminnmvq): Likewise.
! 	(vminnmvq): Likewise.
! 	(vbicq_n): Likewise.
! 	(vqmovntq): Likewise.
! 	(vqmovntq): Likewise.
! 	(vqmovnbq): Likewise.
! 	(vqmovnbq): Likewise.
! 	(vmulltq_poly): Likewise.
! 	(vmulltq_poly): Likewise.
! 	(vmullbq_poly): Likewise.
! 	(vmullbq_poly): Likewise.
! 	(vmovntq): Likewise.
! 	(vmovntq): Likewise.
! 	(vmovnbq): Likewise.
! 	(vmovnbq): Likewise.
! 	(vmlaldavxq): Likewise.
! 	(vmlaldavxq): Likewise.
! 	(vqmovuntq): Likewise.
! 	(vqmovuntq): Likewise.
! 	(vshlltq_n): Likewise.
! 	(vshlltq_n): Likewise.
! 	(vshllbq_n): Likewise.
! 	(vshllbq_n): Likewise.
! 	(vorrq_n): Likewise.
! 	(vorrq_n): Likewise.
! 	(vmlaldavq): Likewise.
! 	(vmlaldavq): Likewise.
! 	(vqmovunbq): Likewise.
! 	(vqmovunbq): Likewise.
! 	(vqdmulltq_n): Likewise.
! 	(vqdmulltq_n): Likewise.
! 	(vqdmulltq): Likewise.
! 	(vqdmulltq): Likewise.
! 	(vqdmullbq_n): Likewise.
! 	(vqdmullbq_n): Likewise.
! 	(vqdmullbq): Likewise.
! 	(vqdmullbq): Likewise.
! 	(vaddlvaq): Likewise.
! 	(vaddlvaq): Likewise.
! 	(vrmlaldavhq): Likewise.
! 	(vrmlaldavhq): Likewise.
! 	(vrmlaldavhxq): Likewise.
! 	(vrmlaldavhxq): Likewise.
! 	(vrmlsldavhq): Likewise.
! 	(vrmlsldavhq): Likewise.
! 	(vrmlsldavhxq): Likewise.
! 	(vrmlsldavhxq): Likewise.
! 	(vmlsldavxq): Likewise.
! 	(vmlsldavxq): Likewise.
! 	(vmlsldavq): Likewise.
! 	(vmlsldavq): Likewise.
! 	* config/arm/arm_mve_builtins.def (BINOP_NONE_NONE_IMM): Use it.
! 	(BINOP_NONE_NONE_NONE): Likewise.
! 	(BINOP_UNONE_NONE_NONE): Likewise.
! 	(BINOP_UNONE_UNONE_IMM): Likewise.
! 	(BINOP_UNONE_UNONE_NONE): Likewise.
! 	(BINOP_UNONE_UNONE_UNONE): Likewise.
! 	* config/arm/mve.md (mve_vabdq_f<mode>): Define RTL pattern.
! 	(mve_vaddlvaq_<supf>v4si): Likewise.
! 	(mve_vaddq_n_f<mode>): Likewise.
! 	(mve_vandq_f<mode>): Likewise.
! 	(mve_vbicq_f<mode>): Likewise.
! 	(mve_vbicq_n_<supf><mode>): Likewise.
! 	(mve_vcaddq_rot270_f<mode>): Likewise.
! 	(mve_vcaddq_rot90_f<mode>): Likewise.
! 	(mve_vcmpeqq_f<mode>): Likewise.
! 	(mve_vcmpeqq_n_f<mode>): Likewise.
! 	(mve_vcmpgeq_f<mode>): Likewise.
! 	(mve_vcmpgeq_n_f<mode>): Likewise.
! 	(mve_vcmpgtq_f<mode>): Likewise.
! 	(mve_vcmpgtq_n_f<mode>): Likewise.
! 	(mve_vcmpleq_f<mode>): Likewise.
! 	(mve_vcmpleq_n_f<mode>): Likewise.
! 	(mve_vcmpltq_f<mode>): Likewise.
! 	(mve_vcmpltq_n_f<mode>): Likewise.
! 	(mve_vcmpneq_f<mode>): Likewise.
! 	(mve_vcmpneq_n_f<mode>): Likewise.
! 	(mve_vcmulq_f<mode>): Likewise.
! 	(mve_vcmulq_rot180_f<mode>): Likewise.
! 	(mve_vcmulq_rot270_f<mode>): Likewise.
! 	(mve_vcmulq_rot90_f<mode>): Likewise.
! 	(mve_vctp<mode1>q_mhi): Likewise.
! 	(mve_vcvtbq_f16_f32v8hf): Likewise.
! 	(mve_vcvttq_f16_f32v8hf): Likewise.
! 	(mve_veorq_f<mode>): Likewise.
! 	(mve_vmaxnmaq_f<mode>): Likewise.
! 	(mve_vmaxnmavq_f<mode>): Likewise.
! 	(mve_vmaxnmq_f<mode>): Likewise.
! 	(mve_vmaxnmvq_f<mode>): Likewise.
! 	(mve_vminnmaq_f<mode>): Likewise.
! 	(mve_vminnmavq_f<mode>): Likewise.
! 	(mve_vminnmq_f<mode>): Likewise.
! 	(mve_vminnmvq_f<mode>): Likewise.
! 	(mve_vmlaldavq_<supf><mode>): Likewise.
! 	(mve_vmlaldavxq_<supf><mode>): Likewise.
! 	(mve_vmlsldavq_s<mode>): Likewise.
! 	(mve_vmlsldavxq_s<mode>): Likewise.
! 	(mve_vmovnbq_<supf><mode>): Likewise.
! 	(mve_vmovntq_<supf><mode>): Likewise.
! 	(mve_vmulq_f<mode>): Likewise.
! 	(mve_vmulq_n_f<mode>): Likewise.
! 	(mve_vornq_f<mode>): Likewise.
! 	(mve_vorrq_f<mode>): Likewise.
! 	(mve_vorrq_n_<supf><mode>): Likewise.
! 	(mve_vqdmullbq_n_s<mode>): Likewise.
! 	(mve_vqdmullbq_s<mode>): Likewise.
! 	(mve_vqdmulltq_n_s<mode>): Likewise.
! 	(mve_vqdmulltq_s<mode>): Likewise.
! 	(mve_vqmovnbq_<supf><mode>): Likewise.
! 	(mve_vqmovntq_<supf><mode>): Likewise.
! 	(mve_vqmovunbq_s<mode>): Likewise.
! 	(mve_vqmovuntq_s<mode>): Likewise.
! 	(mve_vrmlaldavhxq_sv4si): Likewise.
! 	(mve_vrmlsldavhq_sv4si): Likewise.
! 	(mve_vrmlsldavhxq_sv4si): Likewise.
! 	(mve_vshllbq_n_<supf><mode>): Likewise.
! 	(mve_vshlltq_n_<supf><mode>): Likewise.
! 	(mve_vsubq_f<mode>): Likewise.
! 	(mve_vmulltq_poly_p<mode>): Likewise.
! 	(mve_vmullbq_poly_p<mode>): Likewise.
! 	(mve_vrmlaldavhq_<supf>v4si): Likewise.
! 
! 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm_mve.h (vsubq_u8): Define macro.
! 	(vsubq_n_u8): Likewise.
! 	(vrmulhq_u8): Likewise.
! 	(vrhaddq_u8): Likewise.
! 	(vqsubq_u8): Likewise.
! 	(vqsubq_n_u8): Likewise.
! 	(vqaddq_u8): Likewise.
! 	(vqaddq_n_u8): Likewise.
! 	(vorrq_u8): Likewise.
! 	(vornq_u8): Likewise.
! 	(vmulq_u8): Likewise.
! 	(vmulq_n_u8): Likewise.
! 	(vmulltq_int_u8): Likewise.
! 	(vmullbq_int_u8): Likewise.
! 	(vmulhq_u8): Likewise.
! 	(vmladavq_u8): Likewise.
! 	(vminvq_u8): Likewise.
! 	(vminq_u8): Likewise.
! 	(vmaxvq_u8): Likewise.
! 	(vmaxq_u8): Likewise.
! 	(vhsubq_u8): Likewise.
! 	(vhsubq_n_u8): Likewise.
! 	(vhaddq_u8): Likewise.
! 	(vhaddq_n_u8): Likewise.
! 	(veorq_u8): Likewise.
! 	(vcmpneq_n_u8): Likewise.
! 	(vcmphiq_u8): Likewise.
! 	(vcmphiq_n_u8): Likewise.
! 	(vcmpeqq_u8): Likewise.
! 	(vcmpeqq_n_u8): Likewise.
! 	(vcmpcsq_u8): Likewise.
! 	(vcmpcsq_n_u8): Likewise.
! 	(vcaddq_rot90_u8): Likewise.
! 	(vcaddq_rot270_u8): Likewise.
! 	(vbicq_u8): Likewise.
! 	(vandq_u8): Likewise.
! 	(vaddvq_p_u8): Likewise.
! 	(vaddvaq_u8): Likewise.
! 	(vaddq_n_u8): Likewise.
! 	(vabdq_u8): Likewise.
! 	(vshlq_r_u8): Likewise.
! 	(vrshlq_u8): Likewise.
! 	(vrshlq_n_u8): Likewise.
! 	(vqshlq_u8): Likewise.
! 	(vqshlq_r_u8): Likewise.
! 	(vqrshlq_u8): Likewise.
! 	(vqrshlq_n_u8): Likewise.
! 	(vminavq_s8): Likewise.
! 	(vminaq_s8): Likewise.
! 	(vmaxavq_s8): Likewise.
! 	(vmaxaq_s8): Likewise.
! 	(vbrsrq_n_u8): Likewise.
! 	(vshlq_n_u8): Likewise.
! 	(vrshrq_n_u8): Likewise.
! 	(vqshlq_n_u8): Likewise.
! 	(vcmpneq_n_s8): Likewise.
! 	(vcmpltq_s8): Likewise.
! 	(vcmpltq_n_s8): Likewise.
! 	(vcmpleq_s8): Likewise.
! 	(vcmpleq_n_s8): Likewise.
! 	(vcmpgtq_s8): Likewise.
! 	(vcmpgtq_n_s8): Likewise.
! 	(vcmpgeq_s8): Likewise.
! 	(vcmpgeq_n_s8): Likewise.
! 	(vcmpeqq_s8): Likewise.
! 	(vcmpeqq_n_s8): Likewise.
! 	(vqshluq_n_s8): Likewise.
! 	(vaddvq_p_s8): Likewise.
! 	(vsubq_s8): Likewise.
! 	(vsubq_n_s8): Likewise.
! 	(vshlq_r_s8): Likewise.
! 	(vrshlq_s8): Likewise.
! 	(vrshlq_n_s8): Likewise.
! 	(vrmulhq_s8): Likewise.
! 	(vrhaddq_s8): Likewise.
! 	(vqsubq_s8): Likewise.
! 	(vqsubq_n_s8): Likewise.
! 	(vqshlq_s8): Likewise.
! 	(vqshlq_r_s8): Likewise.
! 	(vqrshlq_s8): Likewise.
! 	(vqrshlq_n_s8): Likewise.
! 	(vqrdmulhq_s8): Likewise.
! 	(vqrdmulhq_n_s8): Likewise.
! 	(vqdmulhq_s8): Likewise.
! 	(vqdmulhq_n_s8): Likewise.
! 	(vqaddq_s8): Likewise.
! 	(vqaddq_n_s8): Likewise.
! 	(vorrq_s8): Likewise.
! 	(vornq_s8): Likewise.
! 	(vmulq_s8): Likewise.
! 	(vmulq_n_s8): Likewise.
! 	(vmulltq_int_s8): Likewise.
! 	(vmullbq_int_s8): Likewise.
! 	(vmulhq_s8): Likewise.
! 	(vmlsdavxq_s8): Likewise.
! 	(vmlsdavq_s8): Likewise.
! 	(vmladavxq_s8): Likewise.
! 	(vmladavq_s8): Likewise.
! 	(vminvq_s8): Likewise.
! 	(vminq_s8): Likewise.
! 	(vmaxvq_s8): Likewise.
! 	(vmaxq_s8): Likewise.
! 	(vhsubq_s8): Likewise.
! 	(vhsubq_n_s8): Likewise.
! 	(vhcaddq_rot90_s8): Likewise.
! 	(vhcaddq_rot270_s8): Likewise.
! 	(vhaddq_s8): Likewise.
! 	(vhaddq_n_s8): Likewise.
! 	(veorq_s8): Likewise.
! 	(vcaddq_rot90_s8): Likewise.
! 	(vcaddq_rot270_s8): Likewise.
! 	(vbrsrq_n_s8): Likewise.
! 	(vbicq_s8): Likewise.
! 	(vandq_s8): Likewise.
! 	(vaddvaq_s8): Likewise.
! 	(vaddq_n_s8): Likewise.
! 	(vabdq_s8): Likewise.
! 	(vshlq_n_s8): Likewise.
! 	(vrshrq_n_s8): Likewise.
! 	(vqshlq_n_s8): Likewise.
! 	(vsubq_u16): Likewise.
! 	(vsubq_n_u16): Likewise.
! 	(vrmulhq_u16): Likewise.
! 	(vrhaddq_u16): Likewise.
! 	(vqsubq_u16): Likewise.
! 	(vqsubq_n_u16): Likewise.
! 	(vqaddq_u16): Likewise.
! 	(vqaddq_n_u16): Likewise.
! 	(vorrq_u16): Likewise.
! 	(vornq_u16): Likewise.
! 	(vmulq_u16): Likewise.
! 	(vmulq_n_u16): Likewise.
! 	(vmulltq_int_u16): Likewise.
! 	(vmullbq_int_u16): Likewise.
! 	(vmulhq_u16): Likewise.
! 	(vmladavq_u16): Likewise.
! 	(vminvq_u16): Likewise.
! 	(vminq_u16): Likewise.
! 	(vmaxvq_u16): Likewise.
! 	(vmaxq_u16): Likewise.
! 	(vhsubq_u16): Likewise.
! 	(vhsubq_n_u16): Likewise.
! 	(vhaddq_u16): Likewise.
! 	(vhaddq_n_u16): Likewise.
! 	(veorq_u16): Likewise.
! 	(vcmpneq_n_u16): Likewise.
! 	(vcmphiq_u16): Likewise.
! 	(vcmphiq_n_u16): Likewise.
! 	(vcmpeqq_u16): Likewise.
! 	(vcmpeqq_n_u16): Likewise.
! 	(vcmpcsq_u16): Likewise.
! 	(vcmpcsq_n_u16): Likewise.
! 	(vcaddq_rot90_u16): Likewise.
! 	(vcaddq_rot270_u16): Likewise.
! 	(vbicq_u16): Likewise.
! 	(vandq_u16): Likewise.
! 	(vaddvq_p_u16): Likewise.
! 	(vaddvaq_u16): Likewise.
! 	(vaddq_n_u16): Likewise.
! 	(vabdq_u16): Likewise.
! 	(vshlq_r_u16): Likewise.
! 	(vrshlq_u16): Likewise.
! 	(vrshlq_n_u16): Likewise.
! 	(vqshlq_u16): Likewise.
! 	(vqshlq_r_u16): Likewise.
! 	(vqrshlq_u16): Likewise.
! 	(vqrshlq_n_u16): Likewise.
! 	(vminavq_s16): Likewise.
! 	(vminaq_s16): Likewise.
! 	(vmaxavq_s16): Likewise.
! 	(vmaxaq_s16): Likewise.
! 	(vbrsrq_n_u16): Likewise.
! 	(vshlq_n_u16): Likewise.
! 	(vrshrq_n_u16): Likewise.
! 	(vqshlq_n_u16): Likewise.
! 	(vcmpneq_n_s16): Likewise.
! 	(vcmpltq_s16): Likewise.
! 	(vcmpltq_n_s16): Likewise.
! 	(vcmpleq_s16): Likewise.
! 	(vcmpleq_n_s16): Likewise.
! 	(vcmpgtq_s16): Likewise.
! 	(vcmpgtq_n_s16): Likewise.
! 	(vcmpgeq_s16): Likewise.
! 	(vcmpgeq_n_s16): Likewise.
! 	(vcmpeqq_s16): Likewise.
! 	(vcmpeqq_n_s16): Likewise.
! 	(vqshluq_n_s16): Likewise.
! 	(vaddvq_p_s16): Likewise.
! 	(vsubq_s16): Likewise.
! 	(vsubq_n_s16): Likewise.
! 	(vshlq_r_s16): Likewise.
! 	(vrshlq_s16): Likewise.
! 	(vrshlq_n_s16): Likewise.
! 	(vrmulhq_s16): Likewise.
! 	(vrhaddq_s16): Likewise.
! 	(vqsubq_s16): Likewise.
! 	(vqsubq_n_s16): Likewise.
! 	(vqshlq_s16): Likewise.
! 	(vqshlq_r_s16): Likewise.
! 	(vqrshlq_s16): Likewise.
! 	(vqrshlq_n_s16): Likewise.
! 	(vqrdmulhq_s16): Likewise.
! 	(vqrdmulhq_n_s16): Likewise.
! 	(vqdmulhq_s16): Likewise.
! 	(vqdmulhq_n_s16): Likewise.
! 	(vqaddq_s16): Likewise.
! 	(vqaddq_n_s16): Likewise.
! 	(vorrq_s16): Likewise.
! 	(vornq_s16): Likewise.
! 	(vmulq_s16): Likewise.
! 	(vmulq_n_s16): Likewise.
! 	(vmulltq_int_s16): Likewise.
! 	(vmullbq_int_s16): Likewise.
! 	(vmulhq_s16): Likewise.
! 	(vmlsdavxq_s16): Likewise.
! 	(vmlsdavq_s16): Likewise.
! 	(vmladavxq_s16): Likewise.
! 	(vmladavq_s16): Likewise.
! 	(vminvq_s16): Likewise.
! 	(vminq_s16): Likewise.
! 	(vmaxvq_s16): Likewise.
! 	(vmaxq_s16): Likewise.
! 	(vhsubq_s16): Likewise.
! 	(vhsubq_n_s16): Likewise.
! 	(vhcaddq_rot90_s16): Likewise.
! 	(vhcaddq_rot270_s16): Likewise.
! 	(vhaddq_s16): Likewise.
! 	(vhaddq_n_s16): Likewise.
! 	(veorq_s16): Likewise.
! 	(vcaddq_rot90_s16): Likewise.
! 	(vcaddq_rot270_s16): Likewise.
! 	(vbrsrq_n_s16): Likewise.
! 	(vbicq_s16): Likewise.
! 	(vandq_s16): Likewise.
! 	(vaddvaq_s16): Likewise.
! 	(vaddq_n_s16): Likewise.
! 	(vabdq_s16): Likewise.
! 	(vshlq_n_s16): Likewise.
! 	(vrshrq_n_s16): Likewise.
! 	(vqshlq_n_s16): Likewise.
! 	(vsubq_u32): Likewise.
! 	(vsubq_n_u32): Likewise.
! 	(vrmulhq_u32): Likewise.
! 	(vrhaddq_u32): Likewise.
! 	(vqsubq_u32): Likewise.
! 	(vqsubq_n_u32): Likewise.
! 	(vqaddq_u32): Likewise.
! 	(vqaddq_n_u32): Likewise.
! 	(vorrq_u32): Likewise.
! 	(vornq_u32): Likewise.
! 	(vmulq_u32): Likewise.
! 	(vmulq_n_u32): Likewise.
! 	(vmulltq_int_u32): Likewise.
! 	(vmullbq_int_u32): Likewise.
! 	(vmulhq_u32): Likewise.
! 	(vmladavq_u32): Likewise.
! 	(vminvq_u32): Likewise.
! 	(vminq_u32): Likewise.
! 	(vmaxvq_u32): Likewise.
! 	(vmaxq_u32): Likewise.
! 	(vhsubq_u32): Likewise.
! 	(vhsubq_n_u32): Likewise.
! 	(vhaddq_u32): Likewise.
! 	(vhaddq_n_u32): Likewise.
! 	(veorq_u32): Likewise.
! 	(vcmpneq_n_u32): Likewise.
! 	(vcmphiq_u32): Likewise.
! 	(vcmphiq_n_u32): Likewise.
! 	(vcmpeqq_u32): Likewise.
! 	(vcmpeqq_n_u32): Likewise.
! 	(vcmpcsq_u32): Likewise.
! 	(vcmpcsq_n_u32): Likewise.
! 	(vcaddq_rot90_u32): Likewise.
! 	(vcaddq_rot270_u32): Likewise.
! 	(vbicq_u32): Likewise.
! 	(vandq_u32): Likewise.
! 	(vaddvq_p_u32): Likewise.
! 	(vaddvaq_u32): Likewise.
! 	(vaddq_n_u32): Likewise.
! 	(vabdq_u32): Likewise.
! 	(vshlq_r_u32): Likewise.
! 	(vrshlq_u32): Likewise.
! 	(vrshlq_n_u32): Likewise.
! 	(vqshlq_u32): Likewise.
! 	(vqshlq_r_u32): Likewise.
! 	(vqrshlq_u32): Likewise.
! 	(vqrshlq_n_u32): Likewise.
! 	(vminavq_s32): Likewise.
! 	(vminaq_s32): Likewise.
! 	(vmaxavq_s32): Likewise.
! 	(vmaxaq_s32): Likewise.
! 	(vbrsrq_n_u32): Likewise.
! 	(vshlq_n_u32): Likewise.
! 	(vrshrq_n_u32): Likewise.
! 	(vqshlq_n_u32): Likewise.
! 	(vcmpneq_n_s32): Likewise.
! 	(vcmpltq_s32): Likewise.
! 	(vcmpltq_n_s32): Likewise.
! 	(vcmpleq_s32): Likewise.
! 	(vcmpleq_n_s32): Likewise.
! 	(vcmpgtq_s32): Likewise.
! 	(vcmpgtq_n_s32): Likewise.
! 	(vcmpgeq_s32): Likewise.
! 	(vcmpgeq_n_s32): Likewise.
! 	(vcmpeqq_s32): Likewise.
! 	(vcmpeqq_n_s32): Likewise.
! 	(vqshluq_n_s32): Likewise.
! 	(vaddvq_p_s32): Likewise.
! 	(vsubq_s32): Likewise.
! 	(vsubq_n_s32): Likewise.
! 	(vshlq_r_s32): Likewise.
! 	(vrshlq_s32): Likewise.
! 	(vrshlq_n_s32): Likewise.
! 	(vrmulhq_s32): Likewise.
! 	(vrhaddq_s32): Likewise.
! 	(vqsubq_s32): Likewise.
! 	(vqsubq_n_s32): Likewise.
! 	(vqshlq_s32): Likewise.
! 	(vqshlq_r_s32): Likewise.
! 	(vqrshlq_s32): Likewise.
! 	(vqrshlq_n_s32): Likewise.
! 	(vqrdmulhq_s32): Likewise.
! 	(vqrdmulhq_n_s32): Likewise.
! 	(vqdmulhq_s32): Likewise.
! 	(vqdmulhq_n_s32): Likewise.
! 	(vqaddq_s32): Likewise.
! 	(vqaddq_n_s32): Likewise.
! 	(vorrq_s32): Likewise.
! 	(vornq_s32): Likewise.
! 	(vmulq_s32): Likewise.
! 	(vmulq_n_s32): Likewise.
! 	(vmulltq_int_s32): Likewise.
! 	(vmullbq_int_s32): Likewise.
! 	(vmulhq_s32): Likewise.
! 	(vmlsdavxq_s32): Likewise.
! 	(vmlsdavq_s32): Likewise.
! 	(vmladavxq_s32): Likewise.
! 	(vmladavq_s32): Likewise.
! 	(vminvq_s32): Likewise.
! 	(vminq_s32): Likewise.
! 	(vmaxvq_s32): Likewise.
! 	(vmaxq_s32): Likewise.
! 	(vhsubq_s32): Likewise.
! 	(vhsubq_n_s32): Likewise.
! 	(vhcaddq_rot90_s32): Likewise.
! 	(vhcaddq_rot270_s32): Likewise.
! 	(vhaddq_s32): Likewise.
! 	(vhaddq_n_s32): Likewise.
! 	(veorq_s32): Likewise.
! 	(vcaddq_rot90_s32): Likewise.
! 	(vcaddq_rot270_s32): Likewise.
! 	(vbrsrq_n_s32): Likewise.
! 	(vbicq_s32): Likewise.
! 	(vandq_s32): Likewise.
! 	(vaddvaq_s32): Likewise.
! 	(vaddq_n_s32): Likewise.
! 	(vabdq_s32): Likewise.
! 	(vshlq_n_s32): Likewise.
! 	(vrshrq_n_s32): Likewise.
! 	(vqshlq_n_s32): Likewise.
! 	(__arm_vsubq_u8): Define intrinsic.
! 	(__arm_vsubq_n_u8): Likewise.
! 	(__arm_vrmulhq_u8): Likewise.
! 	(__arm_vrhaddq_u8): Likewise.
! 	(__arm_vqsubq_u8): Likewise.
! 	(__arm_vqsubq_n_u8): Likewise.
! 	(__arm_vqaddq_u8): Likewise.
! 	(__arm_vqaddq_n_u8): Likewise.
! 	(__arm_vorrq_u8): Likewise.
! 	(__arm_vornq_u8): Likewise.
! 	(__arm_vmulq_u8): Likewise.
! 	(__arm_vmulq_n_u8): Likewise.
! 	(__arm_vmulltq_int_u8): Likewise.
! 	(__arm_vmullbq_int_u8): Likewise.
! 	(__arm_vmulhq_u8): Likewise.
! 	(__arm_vmladavq_u8): Likewise.
! 	(__arm_vminvq_u8): Likewise.
! 	(__arm_vminq_u8): Likewise.
! 	(__arm_vmaxvq_u8): Likewise.
! 	(__arm_vmaxq_u8): Likewise.
! 	(__arm_vhsubq_u8): Likewise.
! 	(__arm_vhsubq_n_u8): Likewise.
! 	(__arm_vhaddq_u8): Likewise.
! 	(__arm_vhaddq_n_u8): Likewise.
! 	(__arm_veorq_u8): Likewise.
! 	(__arm_vcmpneq_n_u8): Likewise.
! 	(__arm_vcmphiq_u8): Likewise.
! 	(__arm_vcmphiq_n_u8): Likewise.
! 	(__arm_vcmpeqq_u8): Likewise.
! 	(__arm_vcmpeqq_n_u8): Likewise.
! 	(__arm_vcmpcsq_u8): Likewise.
! 	(__arm_vcmpcsq_n_u8): Likewise.
! 	(__arm_vcaddq_rot90_u8): Likewise.
! 	(__arm_vcaddq_rot270_u8): Likewise.
! 	(__arm_vbicq_u8): Likewise.
! 	(__arm_vandq_u8): Likewise.
! 	(__arm_vaddvq_p_u8): Likewise.
! 	(__arm_vaddvaq_u8): Likewise.
! 	(__arm_vaddq_n_u8): Likewise.
! 	(__arm_vabdq_u8): Likewise.
! 	(__arm_vshlq_r_u8): Likewise.
! 	(__arm_vrshlq_u8): Likewise.
! 	(__arm_vrshlq_n_u8): Likewise.
! 	(__arm_vqshlq_u8): Likewise.
! 	(__arm_vqshlq_r_u8): Likewise.
! 	(__arm_vqrshlq_u8): Likewise.
! 	(__arm_vqrshlq_n_u8): Likewise.
! 	(__arm_vminavq_s8): Likewise.
! 	(__arm_vminaq_s8): Likewise.
! 	(__arm_vmaxavq_s8): Likewise.
! 	(__arm_vmaxaq_s8): Likewise.
! 	(__arm_vbrsrq_n_u8): Likewise.
! 	(__arm_vshlq_n_u8): Likewise.
! 	(__arm_vrshrq_n_u8): Likewise.
! 	(__arm_vqshlq_n_u8): Likewise.
! 	(__arm_vcmpneq_n_s8): Likewise.
! 	(__arm_vcmpltq_s8): Likewise.
! 	(__arm_vcmpltq_n_s8): Likewise.
! 	(__arm_vcmpleq_s8): Likewise.
! 	(__arm_vcmpleq_n_s8): Likewise.
! 	(__arm_vcmpgtq_s8): Likewise.
! 	(__arm_vcmpgtq_n_s8): Likewise.
! 	(__arm_vcmpgeq_s8): Likewise.
! 	(__arm_vcmpgeq_n_s8): Likewise.
! 	(__arm_vcmpeqq_s8): Likewise.
! 	(__arm_vcmpeqq_n_s8): Likewise.
! 	(__arm_vqshluq_n_s8): Likewise.
! 	(__arm_vaddvq_p_s8): Likewise.
! 	(__arm_vsubq_s8): Likewise.
! 	(__arm_vsubq_n_s8): Likewise.
! 	(__arm_vshlq_r_s8): Likewise.
! 	(__arm_vrshlq_s8): Likewise.
! 	(__arm_vrshlq_n_s8): Likewise.
! 	(__arm_vrmulhq_s8): Likewise.
! 	(__arm_vrhaddq_s8): Likewise.
! 	(__arm_vqsubq_s8): Likewise.
! 	(__arm_vqsubq_n_s8): Likewise.
! 	(__arm_vqshlq_s8): Likewise.
! 	(__arm_vqshlq_r_s8): Likewise.
! 	(__arm_vqrshlq_s8): Likewise.
! 	(__arm_vqrshlq_n_s8): Likewise.
! 	(__arm_vqrdmulhq_s8): Likewise.
! 	(__arm_vqrdmulhq_n_s8): Likewise.
! 	(__arm_vqdmulhq_s8): Likewise.
! 	(__arm_vqdmulhq_n_s8): Likewise.
! 	(__arm_vqaddq_s8): Likewise.
! 	(__arm_vqaddq_n_s8): Likewise.
! 	(__arm_vorrq_s8): Likewise.
! 	(__arm_vornq_s8): Likewise.
! 	(__arm_vmulq_s8): Likewise.
! 	(__arm_vmulq_n_s8): Likewise.
! 	(__arm_vmulltq_int_s8): Likewise.
! 	(__arm_vmullbq_int_s8): Likewise.
! 	(__arm_vmulhq_s8): Likewise.
! 	(__arm_vmlsdavxq_s8): Likewise.
! 	(__arm_vmlsdavq_s8): Likewise.
! 	(__arm_vmladavxq_s8): Likewise.
! 	(__arm_vmladavq_s8): Likewise.
! 	(__arm_vminvq_s8): Likewise.
! 	(__arm_vminq_s8): Likewise.
! 	(__arm_vmaxvq_s8): Likewise.
! 	(__arm_vmaxq_s8): Likewise.
! 	(__arm_vhsubq_s8): Likewise.
! 	(__arm_vhsubq_n_s8): Likewise.
! 	(__arm_vhcaddq_rot90_s8): Likewise.
! 	(__arm_vhcaddq_rot270_s8): Likewise.
! 	(__arm_vhaddq_s8): Likewise.
! 	(__arm_vhaddq_n_s8): Likewise.
! 	(__arm_veorq_s8): Likewise.
! 	(__arm_vcaddq_rot90_s8): Likewise.
! 	(__arm_vcaddq_rot270_s8): Likewise.
! 	(__arm_vbrsrq_n_s8): Likewise.
! 	(__arm_vbicq_s8): Likewise.
! 	(__arm_vandq_s8): Likewise.
! 	(__arm_vaddvaq_s8): Likewise.
! 	(__arm_vaddq_n_s8): Likewise.
! 	(__arm_vabdq_s8): Likewise.
! 	(__arm_vshlq_n_s8): Likewise.
! 	(__arm_vrshrq_n_s8): Likewise.
! 	(__arm_vqshlq_n_s8): Likewise.
! 	(__arm_vsubq_u16): Likewise.
! 	(__arm_vsubq_n_u16): Likewise.
! 	(__arm_vrmulhq_u16): Likewise.
! 	(__arm_vrhaddq_u16): Likewise.
! 	(__arm_vqsubq_u16): Likewise.
! 	(__arm_vqsubq_n_u16): Likewise.
! 	(__arm_vqaddq_u16): Likewise.
! 	(__arm_vqaddq_n_u16): Likewise.
! 	(__arm_vorrq_u16): Likewise.
! 	(__arm_vornq_u16): Likewise.
! 	(__arm_vmulq_u16): Likewise.
! 	(__arm_vmulq_n_u16): Likewise.
! 	(__arm_vmulltq_int_u16): Likewise.
! 	(__arm_vmullbq_int_u16): Likewise.
! 	(__arm_vmulhq_u16): Likewise.
! 	(__arm_vmladavq_u16): Likewise.
! 	(__arm_vminvq_u16): Likewise.
! 	(__arm_vminq_u16): Likewise.
! 	(__arm_vmaxvq_u16): Likewise.
! 	(__arm_vmaxq_u16): Likewise.
! 	(__arm_vhsubq_u16): Likewise.
! 	(__arm_vhsubq_n_u16): Likewise.
! 	(__arm_vhaddq_u16): Likewise.
! 	(__arm_vhaddq_n_u16): Likewise.
! 	(__arm_veorq_u16): Likewise.
! 	(__arm_vcmpneq_n_u16): Likewise.
! 	(__arm_vcmphiq_u16): Likewise.
! 	(__arm_vcmphiq_n_u16): Likewise.
! 	(__arm_vcmpeqq_u16): Likewise.
! 	(__arm_vcmpeqq_n_u16): Likewise.
! 	(__arm_vcmpcsq_u16): Likewise.
! 	(__arm_vcmpcsq_n_u16): Likewise.
! 	(__arm_vcaddq_rot90_u16): Likewise.
! 	(__arm_vcaddq_rot270_u16): Likewise.
! 	(__arm_vbicq_u16): Likewise.
! 	(__arm_vandq_u16): Likewise.
! 	(__arm_vaddvq_p_u16): Likewise.
! 	(__arm_vaddvaq_u16): Likewise.
! 	(__arm_vaddq_n_u16): Likewise.
! 	(__arm_vabdq_u16): Likewise.
! 	(__arm_vshlq_r_u16): Likewise.
! 	(__arm_vrshlq_u16): Likewise.
! 	(__arm_vrshlq_n_u16): Likewise.
! 	(__arm_vqshlq_u16): Likewise.
! 	(__arm_vqshlq_r_u16): Likewise.
! 	(__arm_vqrshlq_u16): Likewise.
! 	(__arm_vqrshlq_n_u16): Likewise.
! 	(__arm_vminavq_s16): Likewise.
! 	(__arm_vminaq_s16): Likewise.
! 	(__arm_vmaxavq_s16): Likewise.
! 	(__arm_vmaxaq_s16): Likewise.
! 	(__arm_vbrsrq_n_u16): Likewise.
! 	(__arm_vshlq_n_u16): Likewise.
! 	(__arm_vrshrq_n_u16): Likewise.
! 	(__arm_vqshlq_n_u16): Likewise.
! 	(__arm_vcmpneq_n_s16): Likewise.
! 	(__arm_vcmpltq_s16): Likewise.
! 	(__arm_vcmpltq_n_s16): Likewise.
! 	(__arm_vcmpleq_s16): Likewise.
! 	(__arm_vcmpleq_n_s16): Likewise.
! 	(__arm_vcmpgtq_s16): Likewise.
! 	(__arm_vcmpgtq_n_s16): Likewise.
! 	(__arm_vcmpgeq_s16): Likewise.
! 	(__arm_vcmpgeq_n_s16): Likewise.
! 	(__arm_vcmpeqq_s16): Likewise.
! 	(__arm_vcmpeqq_n_s16): Likewise.
! 	(__arm_vqshluq_n_s16): Likewise.
! 	(__arm_vaddvq_p_s16): Likewise.
! 	(__arm_vsubq_s16): Likewise.
! 	(__arm_vsubq_n_s16): Likewise.
! 	(__arm_vshlq_r_s16): Likewise.
! 	(__arm_vrshlq_s16): Likewise.
! 	(__arm_vrshlq_n_s16): Likewise.
! 	(__arm_vrmulhq_s16): Likewise.
! 	(__arm_vrhaddq_s16): Likewise.
! 	(__arm_vqsubq_s16): Likewise.
! 	(__arm_vqsubq_n_s16): Likewise.
! 	(__arm_vqshlq_s16): Likewise.
! 	(__arm_vqshlq_r_s16): Likewise.
! 	(__arm_vqrshlq_s16): Likewise.
! 	(__arm_vqrshlq_n_s16): Likewise.
! 	(__arm_vqrdmulhq_s16): Likewise.
! 	(__arm_vqrdmulhq_n_s16): Likewise.
! 	(__arm_vqdmulhq_s16): Likewise.
! 	(__arm_vqdmulhq_n_s16): Likewise.
! 	(__arm_vqaddq_s16): Likewise.
! 	(__arm_vqaddq_n_s16): Likewise.
! 	(__arm_vorrq_s16): Likewise.
! 	(__arm_vornq_s16): Likewise.
! 	(__arm_vmulq_s16): Likewise.
! 	(__arm_vmulq_n_s16): Likewise.
! 	(__arm_vmulltq_int_s16): Likewise.
! 	(__arm_vmullbq_int_s16): Likewise.
! 	(__arm_vmulhq_s16): Likewise.
! 	(__arm_vmlsdavxq_s16): Likewise.
! 	(__arm_vmlsdavq_s16): Likewise.
! 	(__arm_vmladavxq_s16): Likewise.
! 	(__arm_vmladavq_s16): Likewise.
! 	(__arm_vminvq_s16): Likewise.
! 	(__arm_vminq_s16): Likewise.
! 	(__arm_vmaxvq_s16): Likewise.
! 	(__arm_vmaxq_s16): Likewise.
! 	(__arm_vhsubq_s16): Likewise.
! 	(__arm_vhsubq_n_s16): Likewise.
! 	(__arm_vhcaddq_rot90_s16): Likewise.
! 	(__arm_vhcaddq_rot270_s16): Likewise.
! 	(__arm_vhaddq_s16): Likewise.
! 	(__arm_vhaddq_n_s16): Likewise.
! 	(__arm_veorq_s16): Likewise.
! 	(__arm_vcaddq_rot90_s16): Likewise.
! 	(__arm_vcaddq_rot270_s16): Likewise.
! 	(__arm_vbrsrq_n_s16): Likewise.
! 	(__arm_vbicq_s16): Likewise.
! 	(__arm_vandq_s16): Likewise.
! 	(__arm_vaddvaq_s16): Likewise.
! 	(__arm_vaddq_n_s16): Likewise.
! 	(__arm_vabdq_s16): Likewise.
! 	(__arm_vshlq_n_s16): Likewise.
! 	(__arm_vrshrq_n_s16): Likewise.
! 	(__arm_vqshlq_n_s16): Likewise.
! 	(__arm_vsubq_u32): Likewise.
! 	(__arm_vsubq_n_u32): Likewise.
! 	(__arm_vrmulhq_u32): Likewise.
! 	(__arm_vrhaddq_u32): Likewise.
! 	(__arm_vqsubq_u32): Likewise.
! 	(__arm_vqsubq_n_u32): Likewise.
! 	(__arm_vqaddq_u32): Likewise.
! 	(__arm_vqaddq_n_u32): Likewise.
! 	(__arm_vorrq_u32): Likewise.
! 	(__arm_vornq_u32): Likewise.
! 	(__arm_vmulq_u32): Likewise.
! 	(__arm_vmulq_n_u32): Likewise.
! 	(__arm_vmulltq_int_u32): Likewise.
! 	(__arm_vmullbq_int_u32): Likewise.
! 	(__arm_vmulhq_u32): Likewise.
! 	(__arm_vmladavq_u32): Likewise.
! 	(__arm_vminvq_u32): Likewise.
! 	(__arm_vminq_u32): Likewise.
! 	(__arm_vmaxvq_u32): Likewise.
! 	(__arm_vmaxq_u32): Likewise.
! 	(__arm_vhsubq_u32): Likewise.
! 	(__arm_vhsubq_n_u32): Likewise.
! 	(__arm_vhaddq_u32): Likewise.
! 	(__arm_vhaddq_n_u32): Likewise.
! 	(__arm_veorq_u32): Likewise.
! 	(__arm_vcmpneq_n_u32): Likewise.
! 	(__arm_vcmphiq_u32): Likewise.
! 	(__arm_vcmphiq_n_u32): Likewise.
! 	(__arm_vcmpeqq_u32): Likewise.
! 	(__arm_vcmpeqq_n_u32): Likewise.
! 	(__arm_vcmpcsq_u32): Likewise.
! 	(__arm_vcmpcsq_n_u32): Likewise.
! 	(__arm_vcaddq_rot90_u32): Likewise.
! 	(__arm_vcaddq_rot270_u32): Likewise.
! 	(__arm_vbicq_u32): Likewise.
! 	(__arm_vandq_u32): Likewise.
! 	(__arm_vaddvq_p_u32): Likewise.
! 	(__arm_vaddvaq_u32): Likewise.
! 	(__arm_vaddq_n_u32): Likewise.
! 	(__arm_vabdq_u32): Likewise.
! 	(__arm_vshlq_r_u32): Likewise.
! 	(__arm_vrshlq_u32): Likewise.
! 	(__arm_vrshlq_n_u32): Likewise.
! 	(__arm_vqshlq_u32): Likewise.
! 	(__arm_vqshlq_r_u32): Likewise.
! 	(__arm_vqrshlq_u32): Likewise.
! 	(__arm_vqrshlq_n_u32): Likewise.
! 	(__arm_vminavq_s32): Likewise.
! 	(__arm_vminaq_s32): Likewise.
! 	(__arm_vmaxavq_s32): Likewise.
! 	(__arm_vmaxaq_s32): Likewise.
! 	(__arm_vbrsrq_n_u32): Likewise.
! 	(__arm_vshlq_n_u32): Likewise.
! 	(__arm_vrshrq_n_u32): Likewise.
! 	(__arm_vqshlq_n_u32): Likewise.
! 	(__arm_vcmpneq_n_s32): Likewise.
! 	(__arm_vcmpltq_s32): Likewise.
! 	(__arm_vcmpltq_n_s32): Likewise.
! 	(__arm_vcmpleq_s32): Likewise.
! 	(__arm_vcmpleq_n_s32): Likewise.
! 	(__arm_vcmpgtq_s32): Likewise.
! 	(__arm_vcmpgtq_n_s32): Likewise.
! 	(__arm_vcmpgeq_s32): Likewise.
! 	(__arm_vcmpgeq_n_s32): Likewise.
! 	(__arm_vcmpeqq_s32): Likewise.
! 	(__arm_vcmpeqq_n_s32): Likewise.
! 	(__arm_vqshluq_n_s32): Likewise.
! 	(__arm_vaddvq_p_s32): Likewise.
! 	(__arm_vsubq_s32): Likewise.
! 	(__arm_vsubq_n_s32): Likewise.
! 	(__arm_vshlq_r_s32): Likewise.
! 	(__arm_vrshlq_s32): Likewise.
! 	(__arm_vrshlq_n_s32): Likewise.
! 	(__arm_vrmulhq_s32): Likewise.
! 	(__arm_vrhaddq_s32): Likewise.
! 	(__arm_vqsubq_s32): Likewise.
! 	(__arm_vqsubq_n_s32): Likewise.
! 	(__arm_vqshlq_s32): Likewise.
! 	(__arm_vqshlq_r_s32): Likewise.
! 	(__arm_vqrshlq_s32): Likewise.
! 	(__arm_vqrshlq_n_s32): Likewise.
! 	(__arm_vqrdmulhq_s32): Likewise.
! 	(__arm_vqrdmulhq_n_s32): Likewise.
! 	(__arm_vqdmulhq_s32): Likewise.
! 	(__arm_vqdmulhq_n_s32): Likewise.
! 	(__arm_vqaddq_s32): Likewise.
! 	(__arm_vqaddq_n_s32): Likewise.
! 	(__arm_vorrq_s32): Likewise.
! 	(__arm_vornq_s32): Likewise.
! 	(__arm_vmulq_s32): Likewise.
! 	(__arm_vmulq_n_s32): Likewise.
! 	(__arm_vmulltq_int_s32): Likewise.
! 	(__arm_vmullbq_int_s32): Likewise.
! 	(__arm_vmulhq_s32): Likewise.
! 	(__arm_vmlsdavxq_s32): Likewise.
! 	(__arm_vmlsdavq_s32): Likewise.
! 	(__arm_vmladavxq_s32): Likewise.
! 	(__arm_vmladavq_s32): Likewise.
! 	(__arm_vminvq_s32): Likewise.
! 	(__arm_vminq_s32): Likewise.
! 	(__arm_vmaxvq_s32): Likewise.
! 	(__arm_vmaxq_s32): Likewise.
! 	(__arm_vhsubq_s32): Likewise.
! 	(__arm_vhsubq_n_s32): Likewise.
! 	(__arm_vhcaddq_rot90_s32): Likewise.
! 	(__arm_vhcaddq_rot270_s32): Likewise.
! 	(__arm_vhaddq_s32): Likewise.
! 	(__arm_vhaddq_n_s32): Likewise.
! 	(__arm_veorq_s32): Likewise.
! 	(__arm_vcaddq_rot90_s32): Likewise.
! 	(__arm_vcaddq_rot270_s32): Likewise.
! 	(__arm_vbrsrq_n_s32): Likewise.
! 	(__arm_vbicq_s32): Likewise.
! 	(__arm_vandq_s32): Likewise.
! 	(__arm_vaddvaq_s32): Likewise.
! 	(__arm_vaddq_n_s32): Likewise.
! 	(__arm_vabdq_s32): Likewise.
! 	(__arm_vshlq_n_s32): Likewise.
! 	(__arm_vrshrq_n_s32): Likewise.
! 	(__arm_vqshlq_n_s32): Likewise.
! 	(vsubq): Define polymorphic variant.
! 	(vsubq_n): Likewise.
! 	(vshlq_r): Likewise.
! 	(vrshlq_n): Likewise.
! 	(vrshlq): Likewise.
! 	(vrmulhq): Likewise.
! 	(vrhaddq): Likewise.
! 	(vqsubq_n): Likewise.
! 	(vqsubq): Likewise.
! 	(vqshlq): Likewise.
! 	(vqshlq_r): Likewise.
! 	(vqshluq): Likewise.
! 	(vrshrq_n): Likewise.
! 	(vshlq_n): Likewise.
! 	(vqshluq_n): Likewise.
! 	(vqshlq_n): Likewise.
! 	(vqrshlq_n): Likewise.
! 	(vqrshlq): Likewise.
! 	(vqrdmulhq_n): Likewise.
! 	(vqrdmulhq): Likewise.
! 	(vqdmulhq_n): Likewise.
! 	(vqdmulhq): Likewise.
! 	(vqaddq_n): Likewise.
! 	(vqaddq): Likewise.
! 	(vorrq_n): Likewise.
! 	(vorrq): Likewise.
! 	(vornq): Likewise.
! 	(vmulq_n): Likewise.
! 	(vmulq): Likewise.
! 	(vmulltq_int): Likewise.
! 	(vmullbq_int): Likewise.
! 	(vmulhq): Likewise.
! 	(vminq): Likewise.
! 	(vminaq): Likewise.
! 	(vmaxq): Likewise.
! 	(vmaxaq): Likewise.
! 	(vhsubq_n): Likewise.
! 	(vhsubq): Likewise.
! 	(vhcaddq_rot90): Likewise.
! 	(vhcaddq_rot270): Likewise.
! 	(vhaddq_n): Likewise.
! 	(vhaddq): Likewise.
! 	(veorq): Likewise.
! 	(vcaddq_rot90): Likewise.
! 	(vcaddq_rot270): Likewise.
! 	(vbrsrq_n): Likewise.
! 	(vbicq_n): Likewise.
! 	(vbicq): Likewise.
! 	(vaddq): Likewise.
! 	(vaddq_n): Likewise.
! 	(vandq): Likewise.
! 	(vabdq): Likewise.
! 	* config/arm/arm_mve_builtins.def (BINOP_NONE_NONE_IMM): Use it.
! 	(BINOP_NONE_NONE_NONE): Likewise.
! 	(BINOP_NONE_NONE_UNONE): Likewise.
! 	(BINOP_UNONE_NONE_IMM): Likewise.
! 	(BINOP_UNONE_NONE_NONE): Likewise.
! 	(BINOP_UNONE_UNONE_IMM): Likewise.
! 	(BINOP_UNONE_UNONE_NONE): Likewise.
! 	(BINOP_UNONE_UNONE_UNONE): Likewise.
! 	* config/arm/constraints.md (Ra): Define constraint to check constant is
! 	in the range of 0 to 7.
! 	(Rg): Define constriant to check the constant is one among 1, 2, 4
! 	and 8.
! 	* config/arm/mve.md (mve_vabdq_<supf>): Define RTL pattern.
! 	(mve_vaddq_n_<supf>): Likewise.
! 	(mve_vaddvaq_<supf>): Likewise.
! 	(mve_vaddvq_p_<supf>): Likewise.
! 	(mve_vandq_<supf>): Likewise.
! 	(mve_vbicq_<supf>): Likewise.
! 	(mve_vbrsrq_n_<supf>): Likewise.
! 	(mve_vcaddq_rot270_<supf>): Likewise.
! 	(mve_vcaddq_rot90_<supf>): Likewise.
! 	(mve_vcmpcsq_n_u): Likewise.
! 	(mve_vcmpcsq_u): Likewise.
! 	(mve_vcmpeqq_n_<supf>): Likewise.
! 	(mve_vcmpeqq_<supf>): Likewise.
! 	(mve_vcmpgeq_n_s): Likewise.
! 	(mve_vcmpgeq_s): Likewise.
! 	(mve_vcmpgtq_n_s): Likewise.
! 	(mve_vcmpgtq_s): Likewise.
! 	(mve_vcmphiq_n_u): Likewise.
! 	(mve_vcmphiq_u): Likewise.
! 	(mve_vcmpleq_n_s): Likewise.
! 	(mve_vcmpleq_s): Likewise.
! 	(mve_vcmpltq_n_s): Likewise.
! 	(mve_vcmpltq_s): Likewise.
! 	(mve_vcmpneq_n_<supf>): Likewise.
! 	(mve_vddupq_n_u): Likewise.
! 	(mve_veorq_<supf>): Likewise.
! 	(mve_vhaddq_n_<supf>): Likewise.
! 	(mve_vhaddq_<supf>): Likewise.
! 	(mve_vhcaddq_rot270_s): Likewise.
! 	(mve_vhcaddq_rot90_s): Likewise.
! 	(mve_vhsubq_n_<supf>): Likewise.
! 	(mve_vhsubq_<supf>): Likewise.
! 	(mve_vidupq_n_u): Likewise.
! 	(mve_vmaxaq_s): Likewise.
! 	(mve_vmaxavq_s): Likewise.
! 	(mve_vmaxq_<supf>): Likewise.
! 	(mve_vmaxvq_<supf>): Likewise.
! 	(mve_vminaq_s): Likewise.
! 	(mve_vminavq_s): Likewise.
! 	(mve_vminq_<supf>): Likewise.
! 	(mve_vminvq_<supf>): Likewise.
! 	(mve_vmladavq_<supf>): Likewise.
! 	(mve_vmladavxq_s): Likewise.
! 	(mve_vmlsdavq_s): Likewise.
! 	(mve_vmlsdavxq_s): Likewise.
! 	(mve_vmulhq_<supf>): Likewise.
! 	(mve_vmullbq_int_<supf>): Likewise.
! 	(mve_vmulltq_int_<supf>): Likewise.
! 	(mve_vmulq_n_<supf>): Likewise.
! 	(mve_vmulq_<supf>): Likewise.
! 	(mve_vornq_<supf>): Likewise.
! 	(mve_vorrq_<supf>): Likewise.
! 	(mve_vqaddq_n_<supf>): Likewise.
! 	(mve_vqaddq_<supf>): Likewise.
! 	(mve_vqdmulhq_n_s): Likewise.
! 	(mve_vqdmulhq_s): Likewise.
! 	(mve_vqrdmulhq_n_s): Likewise.
! 	(mve_vqrdmulhq_s): Likewise.
! 	(mve_vqrshlq_n_<supf>): Likewise.
! 	(mve_vqrshlq_<supf>): Likewise.
! 	(mve_vqshlq_n_<supf>): Likewise.
! 	(mve_vqshlq_r_<supf>): Likewise.
! 	(mve_vqshlq_<supf>): Likewise.
! 	(mve_vqshluq_n_s): Likewise.
! 	(mve_vqsubq_n_<supf>): Likewise.
! 	(mve_vqsubq_<supf>): Likewise.
! 	(mve_vrhaddq_<supf>): Likewise.
! 	(mve_vrmulhq_<supf>): Likewise.
! 	(mve_vrshlq_n_<supf>): Likewise.
! 	(mve_vrshlq_<supf>): Likewise.
! 	(mve_vrshrq_n_<supf>): Likewise.
! 	(mve_vshlq_n_<supf>): Likewise.
! 	(mve_vshlq_r_<supf>): Likewise.
! 	(mve_vsubq_n_<supf>): Likewise.
! 	(mve_vsubq_<supf>): Likewise.
! 	* config/arm/predicates.md (mve_imm_7): Define predicate to check
! 	the matching constraint Ra.
! 	(mve_imm_selective_upto_8): Define predicate to check the matching
! 	constraint Rg.
! 
! 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm-builtins.c (BINOP_NONE_NONE_UNONE_QUALIFIERS): Define
! 	qualifier for binary operands.
! 	(BINOP_UNONE_NONE_NONE_QUALIFIERS): Likewise.
! 	(BINOP_UNONE_UNONE_NONE_QUALIFIERS): Likewise.
! 	* config/arm/arm_mve.h (vaddlvq_p_s32): Define macro.
! 	(vaddlvq_p_u32): Likewise.
! 	(vcmpneq_s8): Likewise.
! 	(vcmpneq_s16): Likewise.
! 	(vcmpneq_s32): Likewise.
! 	(vcmpneq_u8): Likewise.
! 	(vcmpneq_u16): Likewise.
! 	(vcmpneq_u32): Likewise.
! 	(vshlq_s8): Likewise.
! 	(vshlq_s16): Likewise.
! 	(vshlq_s32): Likewise.
! 	(vshlq_u8): Likewise.
! 	(vshlq_u16): Likewise.
! 	(vshlq_u32): Likewise.
! 	(__arm_vaddlvq_p_s32): Define intrinsic.
! 	(__arm_vaddlvq_p_u32): Likewise.
! 	(__arm_vcmpneq_s8): Likewise.
! 	(__arm_vcmpneq_s16): Likewise.
! 	(__arm_vcmpneq_s32): Likewise.
! 	(__arm_vcmpneq_u8): Likewise.
! 	(__arm_vcmpneq_u16): Likewise.
! 	(__arm_vcmpneq_u32): Likewise.
! 	(__arm_vshlq_s8): Likewise.
! 	(__arm_vshlq_s16): Likewise.
! 	(__arm_vshlq_s32): Likewise.
! 	(__arm_vshlq_u8): Likewise.
! 	(__arm_vshlq_u16): Likewise.
! 	(__arm_vshlq_u32): Likewise.
! 	(vaddlvq_p): Define polymorphic variant.
! 	(vcmpneq): Likewise.
! 	(vshlq): Likewise.
! 	* config/arm/arm_mve_builtins.def (BINOP_NONE_NONE_UNONE_QUALIFIERS):
! 	Use it.
! 	(BINOP_UNONE_NONE_NONE_QUALIFIERS): Likewise.
! 	(BINOP_UNONE_UNONE_NONE_QUALIFIERS): Likewise.
! 	* config/arm/mve.md (mve_vaddlvq_p_<supf>v4si): Define RTL pattern.
! 	(mve_vcmpneq_<supf><mode>): Likewise.
! 	(mve_vshlq_<supf><mode>): Likewise.
! 
! 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm-builtins.c (BINOP_UNONE_UNONE_IMM_QUALIFIERS): Define
! 	qualifier for binary operands.
! 	(BINOP_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
! 	(BINOP_UNONE_NONE_IMM_QUALIFIERS): Likewise.
! 	* config/arm/arm_mve.h (vcvtq_n_s16_f16): Define macro.
! 	(vcvtq_n_s32_f32): Likewise.
! 	(vcvtq_n_u16_f16): Likewise.
! 	(vcvtq_n_u32_f32): Likewise.
! 	(vcreateq_u8): Likewise.
! 	(vcreateq_u16): Likewise.
! 	(vcreateq_u32): Likewise.
! 	(vcreateq_u64): Likewise.
! 	(vcreateq_s8): Likewise.
! 	(vcreateq_s16): Likewise.
! 	(vcreateq_s32): Likewise.
! 	(vcreateq_s64): Likewise.
! 	(vshrq_n_s8): Likewise.
! 	(vshrq_n_s16): Likewise.
! 	(vshrq_n_s32): Likewise.
! 	(vshrq_n_u8): Likewise.
! 	(vshrq_n_u16): Likewise.
! 	(vshrq_n_u32): Likewise.
! 	(__arm_vcreateq_u8): Define intrinsic.
! 	(__arm_vcreateq_u16): Likewise.
! 	(__arm_vcreateq_u32): Likewise.
! 	(__arm_vcreateq_u64): Likewise.
! 	(__arm_vcreateq_s8): Likewise.
! 	(__arm_vcreateq_s16): Likewise.
! 	(__arm_vcreateq_s32): Likewise.
! 	(__arm_vcreateq_s64): Likewise.
! 	(__arm_vshrq_n_s8): Likewise.
! 	(__arm_vshrq_n_s16): Likewise.
! 	(__arm_vshrq_n_s32): Likewise.
! 	(__arm_vshrq_n_u8): Likewise.
! 	(__arm_vshrq_n_u16): Likewise.
! 	(__arm_vshrq_n_u32): Likewise.
! 	(__arm_vcvtq_n_s16_f16): Likewise.
! 	(__arm_vcvtq_n_s32_f32): Likewise.
! 	(__arm_vcvtq_n_u16_f16): Likewise.
! 	(__arm_vcvtq_n_u32_f32): Likewise.
! 	(vshrq_n): Define polymorphic variant.
! 	* config/arm/arm_mve_builtins.def (BINOP_UNONE_UNONE_IMM_QUALIFIERS):
! 	Use it.
! 	(BINOP_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
! 	(BINOP_UNONE_NONE_IMM_QUALIFIERS): Likewise.
! 	* config/arm/constraints.md (Rb): Define constraint to check constant is
! 	in the range of 1 to 8.
! 	(Rf): Define constraint to check constant is in the range of 1 to 32.
! 	* config/arm/mve.md (mve_vcreateq_<supf><mode>): Define RTL pattern.
! 	(mve_vshrq_n_<supf><mode>): Likewise.
! 	(mve_vcvtq_n_from_f_<supf><mode>): Likewise.
! 	* config/arm/predicates.md (mve_imm_8): Define predicate to check
! 	the matching constraint Rb.
! 	(mve_imm_32): Define predicate to check the matching constraint Rf.
! 
! 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm-builtins.c (BINOP_NONE_NONE_NONE_QUALIFIERS): Define
! 	qualifier for binary operands.
! 	(BINOP_NONE_NONE_IMM_QUALIFIERS): Likewise.
! 	(BINOP_NONE_UNONE_IMM_QUALIFIERS): Likewise.
! 	(BINOP_NONE_UNONE_UNONE_QUALIFIERS): Likewise.
! 	* config/arm/arm_mve.h (vsubq_n_f16): Define macro.
! 	(vsubq_n_f32): Likewise.
! 	(vbrsrq_n_f16): Likewise.
! 	(vbrsrq_n_f32): Likewise.
! 	(vcvtq_n_f16_s16): Likewise.
! 	(vcvtq_n_f32_s32): Likewise.
! 	(vcvtq_n_f16_u16): Likewise.
! 	(vcvtq_n_f32_u32): Likewise.
! 	(vcreateq_f16): Likewise.
! 	(vcreateq_f32): Likewise.
! 	(__arm_vsubq_n_f16): Define intrinsic.
! 	(__arm_vsubq_n_f32): Likewise.
! 	(__arm_vbrsrq_n_f16): Likewise.
! 	(__arm_vbrsrq_n_f32): Likewise.
! 	(__arm_vcvtq_n_f16_s16): Likewise.
! 	(__arm_vcvtq_n_f32_s32): Likewise.
! 	(__arm_vcvtq_n_f16_u16): Likewise.
! 	(__arm_vcvtq_n_f32_u32): Likewise.
! 	(__arm_vcreateq_f16): Likewise.
! 	(__arm_vcreateq_f32): Likewise.
! 	(vsubq): Define polymorphic variant.
! 	(vbrsrq): Likewise.
! 	(vcvtq_n): Likewise.
! 	* config/arm/arm_mve_builtins.def (BINOP_NONE_NONE_NONE_QUALIFIERS): Use
! 	it.
! 	(BINOP_NONE_NONE_IMM_QUALIFIERS): Likewise.
! 	(BINOP_NONE_UNONE_IMM_QUALIFIERS): Likewise.
! 	(BINOP_NONE_UNONE_UNONE_QUALIFIERS): Likewise.
! 	* config/arm/constraints.md (Rd): Define constraint to check constant is
! 	in the range of 1 to 16.
! 	* config/arm/mve.md (mve_vsubq_n_f<mode>): Define RTL pattern.
! 	mve_vbrsrq_n_f<mode>: Likewise.
! 	mve_vcvtq_n_to_f_<supf><mode>: Likewise.
! 	mve_vcreateq_f<mode>: Likewise.
! 	* config/arm/predicates.md (mve_imm_16): Define predicate to check
! 	the matching constraint Rd.
  
! 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* config/arm/arm-builtins.c (hi_UP): Define mode.
! 	* config/arm/arm.h (IS_VPR_REGNUM): Move.
! 	* config/arm/arm.md (VPR_REGNUM): Define before APSRQ_REGNUM.
! 	(APSRQ_REGNUM): Modify.
! 	(APSRGE_REGNUM): Modify.
! 	* config/arm/arm_mve.h (vctp16q): Define macro.
! 	(vctp32q): Likewise.
! 	(vctp64q): Likewise.
! 	(vctp8q): Likewise.
! 	(vpnot): Likewise.
! 	(__arm_vctp16q): Define intrinsic.
! 	(__arm_vctp32q): Likewise.
! 	(__arm_vctp64q): Likewise.
! 	(__arm_vctp8q): Likewise.
! 	(__arm_vpnot): Likewise.
! 	* config/arm/arm_mve_builtins.def (UNOP_UNONE_UNONE): Use builtin
! 	qualifier.
! 	* config/arm/mve.md (mve_vctp<mode1>qhi): Define RTL pattern.
! 	(mve_vpnothi): Likewise.
  
! 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* config/arm/arm.h (enum reg_class): Define new class EVEN_REGS.
! 	* config/arm/arm_mve.h (vdupq_n_s8): Define macro.
! 	(vdupq_n_s16): Likewise.
! 	(vdupq_n_s32): Likewise.
! 	(vabsq_s8): Likewise.
! 	(vabsq_s16): Likewise.
! 	(vabsq_s32): Likewise.
! 	(vclsq_s8): Likewise.
! 	(vclsq_s16): Likewise.
! 	(vclsq_s32): Likewise.
! 	(vclzq_s8): Likewise.
! 	(vclzq_s16): Likewise.
! 	(vclzq_s32): Likewise.
! 	(vnegq_s8): Likewise.
! 	(vnegq_s16): Likewise.
! 	(vnegq_s32): Likewise.
  	(vaddlvq_s32): Likewise.
! 	(vaddvq_s8): Likewise.
! 	(vaddvq_s16): Likewise.
! 	(vaddvq_s32): Likewise.
! 	(vmovlbq_s8): Likewise.
! 	(vmovlbq_s16): Likewise.
! 	(vmovltq_s8): Likewise.
! 	(vmovltq_s16): Likewise.
! 	(vmvnq_s8): Likewise.
! 	(vmvnq_s16): Likewise.
! 	(vmvnq_s32): Likewise.
! 	(vrev16q_s8): Likewise.
! 	(vrev32q_s8): Likewise.
! 	(vrev32q_s16): Likewise.
! 	(vqabsq_s8): Likewise.
! 	(vqabsq_s16): Likewise.
! 	(vqabsq_s32): Likewise.
! 	(vqnegq_s8): Likewise.
! 	(vqnegq_s16): Likewise.
! 	(vqnegq_s32): Likewise.
! 	(vcvtaq_s16_f16): Likewise.
! 	(vcvtaq_s32_f32): Likewise.
! 	(vcvtnq_s16_f16): Likewise.
! 	(vcvtnq_s32_f32): Likewise.
! 	(vcvtpq_s16_f16): Likewise.
! 	(vcvtpq_s32_f32): Likewise.
! 	(vcvtmq_s16_f16): Likewise.
! 	(vcvtmq_s32_f32): Likewise.
! 	(vmvnq_u8): Likewise.
! 	(vmvnq_u16): Likewise.
! 	(vmvnq_u32): Likewise.
! 	(vdupq_n_u8): Likewise.
! 	(vdupq_n_u16): Likewise.
! 	(vdupq_n_u32): Likewise.
! 	(vclzq_u8): Likewise.
! 	(vclzq_u16): Likewise.
! 	(vclzq_u32): Likewise.
! 	(vaddvq_u8): Likewise.
! 	(vaddvq_u16): Likewise.
! 	(vaddvq_u32): Likewise.
! 	(vrev32q_u8): Likewise.
! 	(vrev32q_u16): Likewise.
! 	(vmovltq_u8): Likewise.
! 	(vmovltq_u16): Likewise.
! 	(vmovlbq_u8): Likewise.
! 	(vmovlbq_u16): Likewise.
! 	(vrev16q_u8): Likewise.
  	(vaddlvq_u32): Likewise.
! 	(vcvtpq_u16_f16): Likewise.
! 	(vcvtpq_u32_f32): Likewise.
! 	(vcvtnq_u16_f16): Likewise.
! 	(vcvtmq_u16_f16): Likewise.
! 	(vcvtmq_u32_f32): Likewise.
! 	(vcvtaq_u16_f16): Likewise.
! 	(vcvtaq_u32_f32): Likewise.
! 	(__arm_vdupq_n_s8): Define intrinsic.
! 	(__arm_vdupq_n_s16): Likewise.
! 	(__arm_vdupq_n_s32): Likewise.
! 	(__arm_vabsq_s8): Likewise.
! 	(__arm_vabsq_s16): Likewise.
! 	(__arm_vabsq_s32): Likewise.
! 	(__arm_vclsq_s8): Likewise.
! 	(__arm_vclsq_s16): Likewise.
! 	(__arm_vclsq_s32): Likewise.
! 	(__arm_vclzq_s8): Likewise.
! 	(__arm_vclzq_s16): Likewise.
! 	(__arm_vclzq_s32): Likewise.
! 	(__arm_vnegq_s8): Likewise.
! 	(__arm_vnegq_s16): Likewise.
! 	(__arm_vnegq_s32): Likewise.
! 	(__arm_vaddlvq_s32): Likewise.
! 	(__arm_vaddvq_s8): Likewise.
! 	(__arm_vaddvq_s16): Likewise.
! 	(__arm_vaddvq_s32): Likewise.
! 	(__arm_vmovlbq_s8): Likewise.
! 	(__arm_vmovlbq_s16): Likewise.
! 	(__arm_vmovltq_s8): Likewise.
! 	(__arm_vmovltq_s16): Likewise.
! 	(__arm_vmvnq_s8): Likewise.
! 	(__arm_vmvnq_s16): Likewise.
! 	(__arm_vmvnq_s32): Likewise.
! 	(__arm_vrev16q_s8): Likewise.
! 	(__arm_vrev32q_s8): Likewise.
! 	(__arm_vrev32q_s16): Likewise.
! 	(__arm_vqabsq_s8): Likewise.
! 	(__arm_vqabsq_s16): Likewise.
! 	(__arm_vqabsq_s32): Likewise.
! 	(__arm_vqnegq_s8): Likewise.
! 	(__arm_vqnegq_s16): Likewise.
! 	(__arm_vqnegq_s32): Likewise.
! 	(__arm_vmvnq_u8): Likewise.
! 	(__arm_vmvnq_u16): Likewise.
! 	(__arm_vmvnq_u32): Likewise.
! 	(__arm_vdupq_n_u8): Likewise.
! 	(__arm_vdupq_n_u16): Likewise.
! 	(__arm_vdupq_n_u32): Likewise.
! 	(__arm_vclzq_u8): Likewise.
! 	(__arm_vclzq_u16): Likewise.
! 	(__arm_vclzq_u32): Likewise.
! 	(__arm_vaddvq_u8): Likewise.
! 	(__arm_vaddvq_u16): Likewise.
! 	(__arm_vaddvq_u32): Likewise.
! 	(__arm_vrev32q_u8): Likewise.
! 	(__arm_vrev32q_u16): Likewise.
! 	(__arm_vmovltq_u8): Likewise.
! 	(__arm_vmovltq_u16): Likewise.
! 	(__arm_vmovlbq_u8): Likewise.
! 	(__arm_vmovlbq_u16): Likewise.
! 	(__arm_vrev16q_u8): Likewise.
! 	(__arm_vaddlvq_u32): Likewise.
! 	(__arm_vcvtpq_u16_f16): Likewise.
! 	(__arm_vcvtpq_u32_f32): Likewise.
! 	(__arm_vcvtnq_u16_f16): Likewise.
! 	(__arm_vcvtmq_u16_f16): Likewise.
! 	(__arm_vcvtmq_u32_f32): Likewise.
! 	(__arm_vcvtaq_u16_f16): Likewise.
! 	(__arm_vcvtaq_u32_f32): Likewise.
! 	(__arm_vcvtaq_s16_f16): Likewise.
! 	(__arm_vcvtaq_s32_f32): Likewise.
! 	(__arm_vcvtnq_s16_f16): Likewise.
! 	(__arm_vcvtnq_s32_f32): Likewise.
! 	(__arm_vcvtpq_s16_f16): Likewise.
! 	(__arm_vcvtpq_s32_f32): Likewise.
! 	(__arm_vcvtmq_s16_f16): Likewise.
! 	(__arm_vcvtmq_s32_f32): Likewise.
! 	(vdupq_n): Define polymorphic variant.
! 	(vabsq): Likewise.
! 	(vclsq): Likewise.
! 	(vclzq): Likewise.
! 	(vnegq): Likewise.
! 	(vaddlvq): Likewise.
! 	(vaddvq): Likewise.
! 	(vmovlbq): Likewise.
! 	(vmovltq): Likewise.
! 	(vmvnq): Likewise.
! 	(vrev16q): Likewise.
! 	(vrev32q): Likewise.
! 	(vqabsq): Likewise.
! 	(vqnegq): Likewise.
! 	* config/arm/arm_mve_builtins.def (UNOP_SNONE_SNONE): Use it.
! 	(UNOP_SNONE_NONE): Likewise.
! 	(UNOP_UNONE_UNONE): Likewise.
! 	(UNOP_UNONE_NONE): Likewise.
! 	* config/arm/constraints.md (e): Define new constriant to allow only
! 	even registers.
! 	* config/arm/mve.md (mve_vqabsq_s<mode>): Define RTL pattern.
! 	(mve_vnegq_s<mode>): Likewise.
! 	(mve_vmvnq_<supf><mode>): Likewise.
! 	(mve_vdupq_n_<supf><mode>): Likewise.
! 	(mve_vclzq_<supf><mode>): Likewise.
! 	(mve_vclsq_s<mode>): Likewise.
! 	(mve_vaddvq_<supf><mode>): Likewise.
! 	(mve_vabsq_s<mode>): Likewise.
! 	(mve_vrev32q_<supf><mode>): Likewise.
! 	(mve_vmovltq_<supf><mode>): Likewise.
! 	(mve_vmovlbq_<supf><mode>): Likewise.
! 	(mve_vcvtpq_<supf><mode>): Likewise.
! 	(mve_vcvtnq_<supf><mode>): Likewise.
! 	(mve_vcvtmq_<supf><mode>): Likewise.
! 	(mve_vcvtaq_<supf><mode>): Likewise.
! 	(mve_vrev16q_<supf>v16qi): Likewise.
! 	(mve_vaddlvq_<supf>v4si): Likewise.
! 
! 2020-03-17  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* lra-spills.c (remove_pseudos): Fix up duplicated word issue in
! 	a dump message.
! 	* tree-sra.c (create_access_replacement): Fix up duplicated word issue
! 	in a comment.
! 	* read-rtl-function.c (find_param_by_name,
! 	function_reader::parse_enum_value, function_reader::get_insn_by_uid):
! 	Likewise.
! 	* spellcheck.c (get_edit_distance_cutoff): Likewise.
! 	* tree-data-ref.c (create_ifn_alias_checks): Likewise.
! 	* tree.def (SWITCH_EXPR): Likewise.
! 	* selftest.c (assert_str_contains): Likewise.
! 	* ipa-param-manipulation.h (class ipa_param_body_adjustments):
! 	Likewise.
! 	* tree-ssa-math-opts.c (convert_expand_mult_copysign): Likewise.
! 	* tree-ssa-loop-split.c (find_vdef_in_loop): Likewise.
! 	* langhooks.h (struct lang_hooks_for_decls): Likewise.
! 	* ipa-prop.h (struct ipa_param_descriptor): Likewise.
! 	* tree-ssa-strlen.c (handle_builtin_string_cmp, handle_store):
! 	Likewise.
! 	* tree-ssa-dom.c (simplify_stmt_for_jump_threading): Likewise.
! 	* tree-ssa-reassoc.c (reassociate_bb): Likewise.
! 	* tree.c (component_ref_size): Likewise.
! 	* hsa-common.c (hsa_init_compilation_unit_data): Likewise.
! 	* gimple-ssa-sprintf.c (get_string_length, format_string,
! 	format_directive): Likewise.
! 	* omp-grid.c (grid_process_kernel_body_copy): Likewise.
! 	* input.c (string_concat_db::get_string_concatenation,
! 	test_lexer_string_locations_ucn4): Likewise.
! 	* cfgexpand.c (pass_expand::execute): Likewise.
! 	* gimple-ssa-warn-restrict.c (builtin_memref::offset_out_of_bounds,
! 	maybe_diag_overlap): Likewise.
! 	* rtl.c (RTX_CODE_HWINT_P_1): Likewise.
! 	* shrink-wrap.c (spread_components): Likewise.
! 	* tree-ssa-dse.c (initialize_ao_ref_for_dse, valid_ao_ref_for_dse):
! 	Likewise.
! 	* tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
! 	Likewise.
! 	* dwarf2out.c (dwarf2out_early_finish): Likewise.
! 	* gimple-ssa-store-merging.c: Likewise.
! 	* ira-costs.c (record_operand_costs): Likewise.
! 	* tree-vect-loop.c (vectorizable_reduction): Likewise.
! 	* target.def (dispatch): Likewise.
! 	(validate_dims, gen_ccmp_first): Fix up duplicated word issue
! 	in documentation text.
! 	* doc/tm.texi: Regenerated.
! 	* config/i386/x86-tune.def (X86_TUNE_PARTIAL_FLAG_REG_STALL): Fix up
! 	duplicated word issue in a comment.
! 	* config/i386/i386.c (ix86_test_loading_unspec): Likewise.
! 	* config/i386/i386-features.c (remove_partial_avx_dependency):
! 	Likewise.
! 	* config/msp430/msp430.c (msp430_select_section): Likewise.
! 	* config/gcn/gcn-run.c (load_image): Likewise.
! 	* config/aarch64/aarch64-sve.md (sve_ld1r<mode>): Likewise.
! 	* config/aarch64/aarch64.c (aarch64_gen_adjusted_ldpstp): Likewise.
! 	* config/aarch64/falkor-tag-collision-avoidance.c
! 	(single_dest_per_chain): Likewise.
! 	* config/nvptx/nvptx.c (nvptx_record_fndecl): Likewise.
! 	* config/fr30/fr30.c (fr30_arg_partial_bytes): Likewise.
! 	* config/rs6000/rs6000-string.c (expand_cmp_vec_sequence): Likewise.
! 	* config/rs6000/rs6000-p8swap.c (replace_swapped_load_constant):
! 	Likewise.
! 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Likewise.
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Likewise.
! 	* config/rs6000/rs6000-logue.c
! 	(rs6000_emit_probe_stack_range_stack_clash): Likewise.
! 	* config/nds32/nds32-md-auxiliary.c (nds32_split_ashiftdi3): Likewise.
! 	Fix various other issues in the comment.
! 
! 2020-03-17  Mihail Ionescu  <mihail.ionescu@arm.com>
! 
! 	* config/arm/t-rmprofile: create new multilib for
! 	armv8.1-m.main+mve hard float and reuse v8-m.main ones for
! 	v8.1-m.main+mve.
! 
! 2020-03-17  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/94015
! 	* tree-ssa-strlen.c (count_nonzero_bytes): Split portions of the
! 	function where EXP is address of the bytes being stored rather than
! 	the bytes themselves into count_nonzero_bytes_addr.  Punt on zero
! 	sized MEM_REF.  Use VAR_P macro and handle CONST_DECL like VAR_DECLs.
! 	Use ctor_for_folding instead of looking at DECL_INITIAL.  Punt before
! 	calling native_encode_expr if host or target doesn't have 8-bit
! 	chars.  Formatting fixes.
! 	(count_nonzero_bytes_addr): New function.
! 
! 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm-builtins.c (UNOP_SNONE_SNONE_QUALIFIERS): Define.
! 	(UNOP_SNONE_NONE_QUALIFIERS): Likewise.
! 	(UNOP_SNONE_IMM_QUALIFIERS): Likewise.
! 	(UNOP_UNONE_NONE_QUALIFIERS): Likewise.
! 	(UNOP_UNONE_UNONE_QUALIFIERS): Likewise.
! 	(UNOP_UNONE_IMM_QUALIFIERS): Likewise.
! 	* config/arm/arm_mve.h (vmvnq_n_s16): Define macro.
! 	(vmvnq_n_s32): Likewise.
! 	(vrev64q_s8): Likewise.
! 	(vrev64q_s16): Likewise.
! 	(vrev64q_s32): Likewise.
! 	(vcvtq_s16_f16): Likewise.
! 	(vcvtq_s32_f32): Likewise.
! 	(vrev64q_u8): Likewise.
! 	(vrev64q_u16): Likewise.
! 	(vrev64q_u32): Likewise.
! 	(vmvnq_n_u16): Likewise.
! 	(vmvnq_n_u32): Likewise.
! 	(vcvtq_u16_f16): Likewise.
! 	(vcvtq_u32_f32): Likewise.
! 	(__arm_vmvnq_n_s16): Define intrinsic.
! 	(__arm_vmvnq_n_s32): Likewise.
! 	(__arm_vrev64q_s8): Likewise.
! 	(__arm_vrev64q_s16): Likewise.
! 	(__arm_vrev64q_s32): Likewise.
! 	(__arm_vrev64q_u8): Likewise.
! 	(__arm_vrev64q_u16): Likewise.
! 	(__arm_vrev64q_u32): Likewise.
! 	(__arm_vmvnq_n_u16): Likewise.
! 	(__arm_vmvnq_n_u32): Likewise.
! 	(__arm_vcvtq_s16_f16): Likewise.
! 	(__arm_vcvtq_s32_f32): Likewise.
! 	(__arm_vcvtq_u16_f16): Likewise.
! 	(__arm_vcvtq_u32_f32): Likewise.
! 	(vrev64q): Define polymorphic variant.
! 	* config/arm/arm_mve_builtins.def (UNOP_SNONE_SNONE): Use it.
! 	(UNOP_SNONE_NONE): Likewise.
! 	(UNOP_SNONE_IMM): Likewise.
! 	(UNOP_UNONE_UNONE): Likewise.
! 	(UNOP_UNONE_NONE): Likewise.
! 	(UNOP_UNONE_IMM): Likewise.
! 	* config/arm/mve.md (mve_vrev64q_<supf><mode>): Define RTL pattern.
! 	(mve_vcvtq_from_f_<supf><mode>): Likewise.
! 	(mve_vmvnq_n_<supf><mode>): Likewise.
! 
! 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm-builtins.c (UNOP_NONE_NONE_QUALIFIERS): Define macro.
! 	(UNOP_NONE_SNONE_QUALIFIERS): Likewise.
! 	(UNOP_NONE_UNONE_QUALIFIERS): Likewise.
! 	* config/arm/arm_mve.h (vrndxq_f16): Define macro.
! 	(vrndxq_f32): Likewise.
! 	(vrndq_f16) Likewise.
! 	(vrndq_f32): Likewise.
! 	(vrndpq_f16): Likewise.
! 	(vrndpq_f32): Likewise.
! 	(vrndnq_f16): Likewise.
! 	(vrndnq_f32): Likewise.
! 	(vrndmq_f16): Likewise.
! 	(vrndmq_f32): Likewise. 
! 	(vrndaq_f16): Likewise.
! 	(vrndaq_f32): Likewise.
! 	(vrev64q_f16): Likewise.
! 	(vrev64q_f32): Likewise.
! 	(vnegq_f16): Likewise.
! 	(vnegq_f32): Likewise.
! 	(vdupq_n_f16): Likewise.
! 	(vdupq_n_f32): Likewise.
! 	(vabsq_f16): Likewise.
! 	(vabsq_f32): Likewise.
! 	(vrev32q_f16): Likewise.
! 	(vcvttq_f32_f16): Likewise.
! 	(vcvtbq_f32_f16): Likewise.
! 	(vcvtq_f16_s16): Likewise.
! 	(vcvtq_f32_s32): Likewise.
! 	(vcvtq_f16_u16): Likewise.
! 	(vcvtq_f32_u32): Likewise.
! 	(__arm_vrndxq_f16): Define intrinsic.
! 	(__arm_vrndxq_f32): Likewise.
! 	(__arm_vrndq_f16): Likewise.
! 	(__arm_vrndq_f32): Likewise.
! 	(__arm_vrndpq_f16): Likewise.
! 	(__arm_vrndpq_f32): Likewise.
! 	(__arm_vrndnq_f16): Likewise.
! 	(__arm_vrndnq_f32): Likewise.
! 	(__arm_vrndmq_f16): Likewise.
! 	(__arm_vrndmq_f32): Likewise.
! 	(__arm_vrndaq_f16): Likewise.
! 	(__arm_vrndaq_f32): Likewise.
! 	(__arm_vrev64q_f16): Likewise.
! 	(__arm_vrev64q_f32): Likewise.
! 	(__arm_vnegq_f16): Likewise.
! 	(__arm_vnegq_f32): Likewise.
! 	(__arm_vdupq_n_f16): Likewise.
! 	(__arm_vdupq_n_f32): Likewise.
! 	(__arm_vabsq_f16): Likewise.
! 	(__arm_vabsq_f32): Likewise.
! 	(__arm_vrev32q_f16): Likewise.
! 	(__arm_vcvttq_f32_f16): Likewise.
! 	(__arm_vcvtbq_f32_f16): Likewise.
! 	(__arm_vcvtq_f16_s16): Likewise.
! 	(__arm_vcvtq_f32_s32): Likewise.
! 	(__arm_vcvtq_f16_u16): Likewise.
! 	(__arm_vcvtq_f32_u32): Likewise.
! 	(vrndxq): Define polymorphic variants.
! 	(vrndq): Likewise.
! 	(vrndpq): Likewise.
! 	(vrndnq): Likewise.
! 	(vrndmq): Likewise.
! 	(vrndaq): Likewise.
! 	(vrev64q): Likewise.
! 	(vnegq): Likewise.
! 	(vabsq): Likewise.
! 	(vrev32q): Likewise.
! 	(vcvtbq_f32): Likewise.
! 	(vcvttq_f32): Likewise.
! 	(vcvtq): Likewise.
! 	* config/arm/arm_mve_builtins.def (VAR2): Define.
! 	(VAR1): Define.
! 	* config/arm/mve.md (mve_vrndxq_f<mode>): Add RTL pattern.
! 	(mve_vrndq_f<mode>): Likewise.
! 	(mve_vrndpq_f<mode>): Likewise.
! 	(mve_vrndnq_f<mode>): Likewise.
! 	(mve_vrndmq_f<mode>): Likewise.
! 	(mve_vrndaq_f<mode>): Likewise.
! 	(mve_vrev64q_f<mode>): Likewise.
! 	(mve_vnegq_f<mode>): Likewise.
! 	(mve_vdupq_n_f<mode>): Likewise.
! 	(mve_vabsq_f<mode>): Likewise.
! 	(mve_vrev32q_fv8hf): Likewise.
! 	(mve_vcvttq_f32_f16v4sf): Likewise.
! 	(mve_vcvtbq_f32_f16v4sf): Likewise.
! 	(mve_vcvtq_to_f_<supf><mode>): Likewise.
! 
! 2020-03-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm-builtins.c (CF): Define mve_builtin_data.
! 	(VAR1): Define.
! 	(ARM_BUILTIN_MVE_PATTERN_START): Define.
! 	(arm_init_mve_builtins): Define function.
! 	(arm_init_builtins): Add TARGET_HAVE_MVE check.
! 	(arm_expand_builtin_1): Check the range of fcode.
! 	(arm_expand_mve_builtin): Define function to expand MVE builtins.
! 	(arm_expand_builtin): Check the range of fcode.
! 	* config/arm/arm_mve.h (__ARM_FEATURE_MVE): Define MVE floating point
! 	types.
! 	(__ARM_MVE_PRESERVE_USER_NAMESPACE): Define to protect user namespace.
! 	(vst4q_s8): Define macro.
! 	(vst4q_s16): Likewise.
! 	(vst4q_s32): Likewise.
! 	(vst4q_u8): Likewise.
! 	(vst4q_u16): Likewise.
! 	(vst4q_u32): Likewise.
! 	(vst4q_f16): Likewise.
! 	(vst4q_f32): Likewise.
! 	(__arm_vst4q_s8): Define inline builtin.
! 	(__arm_vst4q_s16): Likewise.
! 	(__arm_vst4q_s32): Likewise.
! 	(__arm_vst4q_u8): Likewise.
! 	(__arm_vst4q_u16): Likewise.
! 	(__arm_vst4q_u32): Likewise.
! 	(__arm_vst4q_f16): Likewise.
! 	(__arm_vst4q_f32): Likewise.
! 	(__ARM_mve_typeid): Define macro with MVE types.
! 	(__ARM_mve_coerce): Define macro with _Generic feature.
! 	(vst4q): Define polymorphic variant for different vst4q builtins.
! 	* config/arm/arm_mve_builtins.def: New file.
! 	* config/arm/iterators.md (VSTRUCT): Modify to allow XI and OI
! 	modes in MVE.
! 	* config/arm/mve.md (MVE_VLD_ST): Define iterator.
! 	(unspec): Define unspec.
! 	(mve_vst4q<mode>): Define RTL pattern.
! 	* config/arm/neon.md (mov<mode>): Modify expand to allow XI and OI
! 	modes in MVE.
! 	(neon_mov<mode>): Modify RTL define_insn to allow XI and OI modes
! 	in MVE.
! 	(define_split): Allow OI mode split for MVE after reload.
! 	(define_split): Allow XI mode split for MVE after reload.
! 	* config/arm/t-arm (arm.o): Add entry for arm_mve_builtins.def.
! 	(arm-builtins.o): Likewise.
! 
! 2020-03-17  Christophe Lyon  <christophe.lyon@linaro.org>
! 
! 	* c-typeck.c (process_init_element): Handle constructor_type with
! 	type size represented by POLY_INT_CST.
! 
! 2020-03-17  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/94187
! 	* tree-ssa-strlen.c (count_nonzero_bytes): Punt if
! 	nchars - offset < nbytes.
! 
! 	PR middle-end/94189
! 	* builtins.c (expand_builtin_strnlen): Do return NULL_RTX if we would
! 	emit a warning if it was enabled and don't depend on TREE_NO_WARNING
! 	for code-generation.
! 
! 2020-03-16  Vladimir Makarov  <vmakarov@redhat.com>
! 
! 	PR target/94185
! 	* lra-spills.c (remove_pseudos): Do not reuse insn alternative
! 	after changing memory subreg.
! 
! 2020-03-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config/arm/arm.c (arm_libcall_uses_aapcs_base): Modify function to add
! 	emulator calls for dobule precision arithmetic operations for MVE.
! 
! 2020-03-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* common/config/arm/arm-common.c (arm_asm_auto_mfpu): When vfp_base
! 	feature bit is on and -mfpu=auto is passed as compiler option, do not
! 	generate error on not finding any matching fpu. Because in this case
! 	fpu is not required.
! 	* config/arm/arm-cpus.in (vfp_base): Define feature bit, this bit is
! 	enabled for MVE and also for all VFP extensions.
! 	(VFPv2): Modify fgroup to enable vfp_base feature bit when ever VFPv2
! 	is enabled.
! 	(MVE): Define fgroup to enable feature bits mve, vfp_base and armv7em.
! 	(MVE_FP): Define fgroup to enable feature bits is fgroup MVE and FPv5
! 	along with feature bits mve_float.
! 	(mve): Modify add options in armv8.1-m.main arch for MVE.
! 	(mve.fp): Modify add options in armv8.1-m.main arch for MVE with
! 	floating point.
! 	* config/arm/arm.c (use_return_insn): Replace the
! 	check with TARGET_VFP_BASE.
! 	(thumb2_legitimate_index_p): Replace TARGET_HARD_FLOAT with
! 	TARGET_VFP_BASE.
! 	(arm_rtx_costs_internal): Replace "TARGET_HARD_FLOAT || TARGET_HAVE_MVE"
! 	with TARGET_VFP_BASE, to allow cost calculations for copies in MVE as
! 	well.
! 	(arm_get_vfp_saved_size): Replace TARGET_HARD_FLOAT with
! 	TARGET_VFP_BASE, to allow space calculation for VFP registers in MVE
! 	as well.
! 	(arm_compute_frame_layout): Likewise.
! 	(arm_save_coproc_regs): Likewise.
! 	(arm_fixed_condition_code_regs): Modify to enable using VFPCC_REGNUM
! 	in MVE as well.
! 	(arm_hard_regno_mode_ok): Replace "TARGET_HARD_FLOAT || TARGET_HAVE_MVE"
! 	with equivalent macro TARGET_VFP_BASE.
! 	(arm_expand_epilogue_apcs_frame): Likewise.
! 	(arm_expand_epilogue): Likewise.
! 	(arm_conditional_register_usage): Likewise.
! 	(arm_declare_function_name): Add check to skip printing .fpu directive
! 	in assembly file when TARGET_VFP_BASE is enabled and fpu_to_print is
! 	"softvfp".
! 	* config/arm/arm.h (TARGET_VFP_BASE): Define.
! 	* config/arm/arm.md (arch): Add "mve" to arch.
! 	(eq_attr "arch" "mve"): Enable on TARGET_HAVE_MVE is true.
! 	(vfp_pop_multiple_with_writeback): Replace "TARGET_HARD_FLOAT
! 	|| TARGET_HAVE_MVE" with equivalent macro TARGET_VFP_BASE.
! 	* config/arm/constraints.md (Uf): Define to allow modification to FPCCR
! 	in MVE.
! 	* config/arm/thumb2.md (thumb2_movsfcc_soft_insn): Modify target guard
! 	to not allow for MVE.
! 	* config/arm/unspecs.md (UNSPEC_GET_FPSCR): Move to volatile unspecs
! 	enum.
! 	(VUNSPEC_GET_FPSCR): Define.
! 	* config/arm/vfp.md (thumb2_movhi_vfp): Add support for VMSR and VMRS
! 	instructions which move to general-purpose Register from Floating-point
! 	Special register and vice-versa.
! 	(thumb2_movhi_fp16): Likewise.
! 	(thumb2_movsi_vfp): Add support for VMSR and VMRS instructions along
! 	with MCR and MRC instructions which set and get Floating-point Status
! 	and Control Register (FPSCR).
! 	(movdi_vfp): Modify pattern to enable Single-precision scalar float move
! 	in MVE.
! 	(thumb2_movdf_vfp): Modify pattern to enable Double-precision scalar
! 	float move patterns in MVE.
! 	(thumb2_movsfcc_vfp): Modify pattern to enable single float conditional
! 	code move patterns of VFP also in MVE by adding TARGET_VFP_BASE check.
! 	(thumb2_movdfcc_vfp): Modify pattern to enable double float conditional
! 	code move patterns of VFP also in MVE by adding TARGET_VFP_BASE check.
! 	(push_multi_vfp): Add support to use VFP VPUSH pattern for MVE by adding
! 	TARGET_VFP_BASE check.
! 	(set_fpscr): Add support to set FPSCR register for MVE. Modify pattern
! 	using VFPCC_REGNUM as few MVE intrinsics use carry bit of FPSCR
! 	register.
! 	(get_fpscr): Add support to get FPSCR register for MVE. Modify pattern
! 	using VFPCC_REGNUM as few MVE intrinsics use carry bit of FPSCR
! 	register.
! 
! 
! 2020-03-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
!             Mihail Ionescu  <mihail.ionescu@arm.com>
!             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
! 
! 	* config.gcc (arm_mve.h): Include mve intrinsics header file.
! 	* config/arm/aout.h (p0): Add new register name for MVE predicated
! 	cases.
! 	* config/arm-builtins.c (ARM_BUILTIN_SIMD_LANE_CHECK): Define macro
! 	common to Neon and MVE.
! 	(ARM_BUILTIN_NEON_LANE_CHECK): Renamed to ARM_BUILTIN_SIMD_LANE_CHECK.
! 	(arm_init_simd_builtin_types): Disable poly types for MVE.
! 	(arm_init_neon_builtins): Move a check to arm_init_builtins function.
! 	(arm_init_builtins): Use ARM_BUILTIN_SIMD_LANE_CHECK instead of
! 	ARM_BUILTIN_NEON_LANE_CHECK.
! 	(mve_dereference_pointer): Add function.
! 	(arm_expand_builtin_args): Call to mve_dereference_pointer when MVE is
! 	enabled.
! 	(arm_expand_neon_builtin): Moved to arm_expand_builtin function.
! 	(arm_expand_builtin): Moved from arm_expand_neon_builtin function.
! 	* config/arm/arm-c.c (__ARM_FEATURE_MVE): Define macro for MVE and MVE
! 	with floating point enabled.
! 	* config/arm/arm-protos.h (neon_immediate_valid_for_move): Renamed to
! 	simd_immediate_valid_for_move.
! 	(simd_immediate_valid_for_move): Renamed from
! 	neon_immediate_valid_for_move function.
! 	* config/arm/arm.c (arm_options_perform_arch_sanity_checks): Generate
! 	error if vfpv2 feature bit is disabled and mve feature bit is also
! 	disabled for HARD_FLOAT_ABI.
! 	(use_return_insn): Check to not push VFP regs for MVE.
! 	(aapcs_vfp_allocate): Add MVE check to have same Procedure Call Standard
! 	as Neon.
! 	(aapcs_vfp_allocate_return_reg): Likewise.
! 	(thumb2_legitimate_address_p): Check to return 0 on valid Thumb-2
! 	address operand for MVE.
! 	(arm_rtx_costs_internal): MVE check to determine cost of rtx.
! 	(neon_valid_immediate): Rename to simd_valid_immediate.
! 	(simd_valid_immediate): Rename from neon_valid_immediate.
! 	(simd_valid_immediate): MVE check on size of vector is 128 bits.
! 	(neon_immediate_valid_for_move): Rename to
! 	simd_immediate_valid_for_move.
! 	(simd_immediate_valid_for_move): Rename from
! 	neon_immediate_valid_for_move.
! 	(neon_immediate_valid_for_logic): Modify call to neon_valid_immediate
! 	function.
! 	(neon_make_constant): Modify call to neon_valid_immediate function.
! 	(neon_vector_mem_operand): Return VFP register for POST_INC or PRE_DEC
! 	for MVE.
! 	(output_move_neon): Add MVE check to generate vldm/vstm instrcutions.
! 	(arm_compute_frame_layout): Calculate space for saved VFP registers for
! 	MVE.
! 	(arm_save_coproc_regs): Save coproc registers for MVE.
! 	(arm_print_operand): Add case 'E' to print memory operands for MVE.
! 	(arm_print_operand_address): Check to print register number for MVE.
! 	(arm_hard_regno_mode_ok): Check for arm hard regno mode ok for MVE.
! 	(arm_modes_tieable_p): Check to allow structure mode for MVE.
! 	(arm_regno_class): Add VPR_REGNUM check.
! 	(arm_expand_epilogue_apcs_frame): MVE check to calculate epilogue code
! 	for APCS frame.
! 	(arm_expand_epilogue): MVE check for enabling pop instructions in
! 	epilogue.
! 	(arm_print_asm_arch_directives): Modify function to disable print of
! 	.arch_extension "mve" and "fp" for cases where MVE is enabled with
! 	"SOFT FLOAT ABI".
! 	(arm_vector_mode_supported_p): Check for modes available in MVE interger
! 	and MVE floating point.
! 	(arm_array_mode_supported_p): Add TARGET_HAVE_MVE check for array mode
! 	pointer support.
! 	(arm_conditional_register_usage): Enable usage of conditional regsiter
! 	for MVE.
! 	(fixed_regs[VPR_REGNUM]): Enable VPR_REG for MVE.
! 	(arm_declare_function_name): Modify function to disable print of
! 	.arch_extension "mve" and "fp" for cases where MVE is enabled with
! 	"SOFT FLOAT ABI".
! 	* config/arm/arm.h (TARGET_HAVE_MVE): Disable for soft float abi and
! 	when target general registers are required.
! 	(TARGET_HAVE_MVE_FLOAT): Likewise.
! 	(FIXED_REGISTERS): Add bit for VFP_REG class which is enabled in arm.c
! 	for MVE.
! 	(CALL_USED_REGISTERS): Set bit for VFP_REG class in CALL_USED_REGISTERS
! 	which indicate this is not available for across function calls.
! 	(FIRST_PSEUDO_REGISTER): Modify.
! 	(VALID_MVE_MODE): Define valid MVE mode.
! 	(VALID_MVE_SI_MODE): Define valid MVE SI mode.
! 	(VALID_MVE_SF_MODE): Define valid MVE SF mode.
! 	(VALID_MVE_STRUCT_MODE): Define valid MVE struct mode.
! 	(VPR_REGNUM): Add Vector Predication Register in arm_regs_in_sequence
! 	for MVE.
! 	(IS_VPR_REGNUM): Macro to check for VPR_REG register.
! 	(REG_ALLOC_ORDER): Add VPR_REGNUM entry.
! 	(enum reg_class): Add VPR_REG entry.
! 	(REG_CLASS_NAMES): Add VPR_REG entry.
! 	* config/arm/arm.md (VPR_REGNUM): Define.
! 	(conds): Check is_mve_type attrbiute to differentiate "conditional" and
! 	"unconditional" instructions.
! 	(arm_movsf_soft_insn): Modify RTL to not allow for MVE.
! 	(movdf_soft_insn): Modify RTL to not allow for MVE.
! 	(vfp_pop_multiple_with_writeback): Enable for MVE.
! 	(include "mve.md"): Include mve.md file.
! 	* config/arm/arm_mve.h: Add MVE intrinsics head file.
! 	* config/arm/constraints.md (Up): Constraint to enable "p0" register in MVE
! 	for vector predicated operands.
! 	* config/arm/iterators.md (VNIM1): Define.
! 	(VNINOTM1): Define.
! 	(VHFBF_split): Define
! 	* config/arm/mve.md: New file.
! 	(mve_mov<mode>): Define RTL for move, store and load in MVE.
! 	(mve_mov<mode>): Define move RTL pattern with vec_duplicate operator for
! 	second operand.
! 	* config/arm/neon.md (neon_immediate_valid_for_move): Rename with
! 	simd_immediate_valid_for_move.
! 	(neon_mov<mode>): Split pattern and move expand pattern "movv8hf" which
! 	is common to MVE and  NEON to vec-common.md file.
! 	(vec_init<mode><V_elem_l>): Add TARGET_HAVE_MVE check.
! 	* config/arm/predicates.md (vpr_register_operand): Define.
! 	* config/arm/t-arm: Add mve.md file.
! 	* config/arm/types.md (mve_move): Add MVE instructions mve_move to
! 	attribute "type".
! 	(mve_store): Add MVE instructions mve_store to attribute "type".
! 	(mve_load): Add MVE instructions mve_load to attribute "type".
! 	(is_mve_type): Define attribute.
! 	* config/arm/vec-common.md (mov<mode>): Modify RTL expand to support
! 	standard move patterns in MVE along with NEON and IWMMXT with mode
! 	iterator VNIM1.
! 	(mov<mode>): Modify RTL expand to support standard move patterns in NEON
! 	and IWMMXT with mode iterator V8HF.
! 	(movv8hf): Define RTL expand to support standard "movv8hf" pattern in
! 	NEON and MVE.
! 	* config/arm/vfp.md (neon_immediate_valid_for_move): Rename to
! 	simd_immediate_valid_for_move.
! 
! 
! 2020-03-16  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	PR target/89229
! 	* config/i386/i386.md (*movsi_internal): Call ix86_output_ssemov
! 	for TYPE_SSEMOV.  Remove ext_sse_reg_operand and TARGET_AVX512VL
! 	check.
! 	* config/i386/predicates.md (ext_sse_reg_operand): Removed.
! 
! 2020-03-16  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR debug/94167
! 	* tree-inline.c (insert_init_stmt): Don't gimple_regimplify_operands
! 	DEBUG_STMTs.
! 
! 	PR tree-optimization/94166
! 	* tree-ssa-reassoc.c (sort_by_mach_mode): Use SSA_NAME_VERSION
! 	as secondary comparison key.
! 
! 2020-03-16  Bin Cheng  <bin.cheng@linux.alibaba.com>
! 
! 	PR tree-optimization/94125
! 	* tree-loop-distribution.c
! 	(loop_distribution::break_alias_scc_partitions): Update post order
! 	number for merged scc.
! 
! 2020-03-15  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	PR target/89229
! 	* config/i386/i386.c (ix86_output_ssemov): Handle MODE_SI and
! 	MODE_SF.
! 	* config/i386/i386.md (*movsf_internal): Call ix86_output_ssemov
! 	for TYPE_SSEMOV.  Remove TARGET_PREFER_AVX256, TARGET_AVX512VL
! 	and ext_sse_reg_operand check.
! 
! 2020-03-15  Lewis Hyatt  <lhyatt@gmail.com>
! 
! 	* common.opt: Avoid redundancy in the help text.
! 	* config/arc/arc.opt: Likewise.
! 	* config/cr16/cr16.opt: Likewise.
! 
! 2020-03-14  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/93566
! 	* tree-nested.c (convert_nonlocal_omp_clauses,
! 	convert_local_omp_clauses): Handle {,in_,task_}reduction clauses
! 	with C/C++ array sections.
! 
! 2020-03-14  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	PR target/89229
! 	* config/i386/i386.md (*movdi_internal): Call ix86_output_ssemov
! 	for TYPE_SSEMOV.  Remove ext_sse_reg_operand and TARGET_AVX512VL
! 	check.
! 
! 2020-03-14  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* gimple-fold.c (gimple_fold_builtin_strncpy): Change
! 	"a an" to "an" in a comment.
! 	* hsa-common.h (is_a_helper): Likewise.
! 	* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Likewise.
! 	* config/arc/arc.c (arc600_corereg_hazard): Likewise.
! 	* config/s390/s390.c (s390_indirect_branch_via_thunk): Likewise.
! 
! 2020-03-13  Aaron Sawdey  <acsawdey@linux.ibm.com>
! 
! 	PR target/92379
! 	* config/rs6000/rs6000.c (num_insns_constant_multi): Don't shift a
! 	64-bit value by 64 bits (UB).
! 
! 2020-03-13  Vladimir Makarov  <vmakarov@redhat.com>
! 
! 	PR rtl-optimization/92303
! 	* lra-spills.c (remove_pseudos): Try to simplify memory subreg.
! 
! 2020-03-13  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	PR rtl-optimization/94148
! 	PR rtl-optimization/94042
! 	* df-core.c (BB_LAST_CHANGE_AGE): Delete.
! 	(df_worklist_propagate_forward): New parameter last_change_age, use
! 	that instead of bb->aux.
! 	(df_worklist_propagate_backward): Ditto.
! 	(df_worklist_dataflow_doublequeue): Use a local array last_change_age.
! 
! 2020-03-13  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/94163
! 	* tree-ssa-pre.c (create_expression_by_pieces): Check
! 	whether alignment would be zero.
! 
! 2020-03-13  Martin Liska  <mliska@suse.cz>
! 
! 	PR lto/94157
! 	* lto-wrapper.c (run_gcc): Use concat for appending
! 	to collect_gcc_options.
! 
! 2020-03-13  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/94121
! 	* config/aarch64/aarch64.c (aarch64_add_offset_1): Use gen_int_mode
! 	instead of GEN_INT.
! 
! 2020-03-13  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	PR target/89229
! 	* config/i386/i386.c (ix86_output_ssemov): Handle MODE_DF.
! 	* config/i386/i386.md (*movdf_internal): Call ix86_output_ssemov
! 	for TYPE_SSEMOV.  Remove TARGET_AVX512F, TARGET_PREFER_AVX256,
! 	TARGET_AVX512VL and ext_sse_reg_operand check.
! 
! 2020-03-13  Bu Le  <bule1@huawei.com>
! 
! 	PR target/94154
! 	* config/aarch64/aarch64.opt (-param=aarch64-float-recp-precision=)
! 	(-param=aarch64-double-recp-precision=): New options.
! 	* doc/invoke.texi: Document them.
! 	* config/aarch64/aarch64.c (aarch64_emit_approx_div): Use them
! 	instead of hard-coding the choice of 1 for float and 2 for double.
! 
! 2020-03-13  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	PR rtl-optimization/94119
! 	* resource.h (clear_hashed_info_until_next_barrier): Declare.
! 	* resource.c (clear_hashed_info_until_next_barrier): New function.
! 	* reorg.c (add_to_delay_list): Fix formatting.
! 	(relax_delay_slots): Call clear_hashed_info_until_next_barrier on
! 	the next instruction after removing a BARRIER.
! 
! 2020-03-13  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	PR middle-end/92071
! 	* expmed.c (store_integral_bit_field): For fields larger than a word,
! 	call extract_bit_field on the value if the mode is BLKmode.  Remove
! 	specific path for big-endian targets and tidy things up a little bit.
! 
! 2020-03-12  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR rtl-optimization/90275
! 	* cse.c (cse_insn): Delete no-op register moves too.
! 
! 2020-03-12  Darius Galis  <darius.galis@cyberthorstudios.com>
! 
! 	* config/rx/rx.md (CTRLREG_CPEN): Remove.
! 	* config/rx/rx.c (rx_print_operand): Remove CTRLREG_CPEN support.
! 
! 2020-03-12  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/94103
! 	* tree-ssa-sccvn.c (visit_reference_op_load): Avoid type
! 	punning when the mode precision is not sufficient.
! 
! 2020-03-12  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	PR target/89229
! 	* config/i386/i386.c (ix86_output_ssemov): Handle MODE_DI,
! 	MODE_V1DF and MODE_V2SF.
! 	* config/i386/mmx.md (MMXMODE:*mov<mode>_internal): Call
! 	ix86_output_ssemov for TYPE_SSEMOV.  Remove ext_sse_reg_operand
! 	check.
! 
! 2020-03-12  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* doc/tm.texi.in (ASM_OUTPUT_ALIGNED_DECL_LOCAL): Change
! 	ASM_OUTPUT_ALIGNED_DECL in description to ASM_OUTPUT_ALIGNED_LOCAL
! 	and ASM_OUTPUT_DECL to ASM_OUTPUT_LOCAL.
! 	* doc/tm.texi: Regenerated.
! 
! 	PR tree-optimization/94130
! 	* tree-ssa-dse.c: Include gimplify.h.
! 	(increment_start_addr): If stmt has lhs, drop the lhs from call and
! 	set it after the call to the original value of the first argument.
! 	Formatting fixes.
! 	(decrement_count): Formatting fix.
! 
! 2020-03-11  Delia Burduv  <delia.burduv@arm.com>
! 
! 	* config/arm/arm-builtins.c
! 	(arm_init_simd_builtin_scalar_types): New.
! 	* config/arm/arm_neon.h (vld2_bf16): Used new builtin type.
! 	(vld2q_bf16): Used new builtin type.
! 	(vld3_bf16): Used new builtin type.
! 	(vld3q_bf16): Used new builtin type.
! 	(vld4_bf16): Used new builtin type.
! 	(vld4q_bf16): Used new builtin type.
! 	(vld2_dup_bf16): Used new builtin type.
! 	(vld2q_dup_bf16): Used new builtin type.
! 	(vld3_dup_bf16): Used new builtin type.
! 	(vld3q_dup_bf16): Used new builtin type.
! 	(vld4_dup_bf16): Used new builtin type.
! 	(vld4q_dup_bf16): Used new builtin type.
! 
! 2020-03-11  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/94134
! 	* config/pdp11/pdp11.c (pdp11_asm_output_var): Call switch_to_section
! 	at the start to switch to data section.  Don't print extra newline if
! 	.globl directive has not been emitted.
! 
! 2020-03-11  Richard Biener  <rguenther@suse.de>
! 
! 	* match.pd ((T *)(ptr - ptr-cst) -> &MEM[ptr + -ptr-cst]):
! 	New pattern.
! 
! 2020-03-11  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	PR middle-end/93961
! 	* tree.c (variably_modified_type_p) <RECORD_TYPE>: Recurse into fields
! 	whose type is a qualified union.
! 
! 2020-03-11  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/94121
! 	* config/aarch64/aarch64.c (aarch64_add_offset_1): Use absu_hwi
! 	instead of abs_hwi, change moffset type to unsigned HOST_WIDE_INT.
! 
! 	PR bootstrap/93962
! 	* value-prof.c (dump_histogram_value): Use abs_hwi instead of
! 	std::abs.
! 	(get_nth_most_common_value): Use abs_hwi instead of abs.
! 
! 	PR middle-end/94111
! 	* dfp.c (decimal_to_binary): Only use decimal128ToString if from->cl
! 	is rvc_normal, otherwise use real_to_decimal to print the number to
! 	string.
! 
! 	PR tree-optimization/94114
! 	* tree-loop-distribution.c (generate_memset_builtin): Call
! 	rewrite_to_non_trapping_overflow even on mem.
! 	(generate_memcpy_builtin): Call rewrite_to_non_trapping_overflow even
! 	on dest and src.
! 
! 2020-03-10  Jeff Law  <law@redhat.com>
! 
! 	* config/bfin/bfin.md (movsi_insv): Add length attribute.
! 
! 2020-03-10  Jiufu Guo  <guojiufu@linux.ibm.com>
! 
! 	PR target/93709
! 	* gcc/config/rs6000/rs6000.c (rs6000_emit_p9_fp_minmax): Check
! 	NAN and SIGNED_ZEROR for smax/smin.
! 
! 2020-03-10  Will Schmidt  <will_schmidt@vnet.ibm.com>
! 
! 	PR target/90763
! 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add
! 	clause to handle P9V_BUILTIN_VEC_LXVL with const arguments.
! 
! 2020-03-10  Roman Zhuykov  <zhroma@ispras.ru>
! 
! 	* loop-iv.c (find_simple_exit): Make it static.
! 	* cfgloop.h: Remove the corresponding prototype.
! 
! 2020-03-10  Roman Zhuykov  <zhroma@ispras.ru>
! 
! 	* ddg.c (create_ddg): Fix intendation.
! 	(set_recurrence_length): Likewise.
! 	(create_ddg_all_sccs): Likewise.
! 
! 2020-03-10  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/94088
! 	* config/i386/i386.md (*testqi_ext_3): Call ix86_match_ccmode with
! 	CCZmode instead of CCNOmode if operands[2] has DImode and pos + len
! 	is 32.
! 
! 2020-03-09  Jason Merrill  <jason@redhat.com>
! 
! 	* gdbinit.in (pgs): Fix typo in documentation.
! 
! 2020-03-09  Vladimir Makarov  <vmakarov@redhat.com>
! 
! 	Revert:
! 
! 	2020-02-28  Vladimir Makarov  <vmakarov@redhat.com>
! 
! 	PR rtl-optimization/93564
! 	* ira-color.c (assign_hard_reg): Prefer smaller hard regno when we
! 	do not honor reg alloc order.
! 
! 2020-03-09  Andrew Pinski  <apinski@marvell.com>
! 
! 	PR inline-asm/94095
! 	* doc/extend.texi (x86 Operand Modifiers): Fix column
! 	for 'A' modifier.
! 
! 2020-03-09  Martin Liska  <mliska@suse.cz>
! 
! 	PR target/93800
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
! 	Remove set of str_align_loops and str_align_jumps as these
! 	should be set in previous 2 conditions in the function.
! 
! 2020-03-09  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR rtl-optimization/94045
! 	* params.opt (-param=max-find-base-term-values=): New option.
! 	* alias.c (find_base_term): Add cut-off for number of visited VALUEs
! 	in a single toplevel find_base_term call.
! 
! 2020-03-06  Wilco Dijkstra  <wdijkstr@arm.com>
! 
! 	PR target/91598
! 	* config/aarch64/aarch64-builtins.c (TYPES_TERNOPU_LANE): Add define.
! 	* config/aarch64/aarch64-simd.md
! 	(aarch64_vec_<su>mult_lane<Qlane>): Add new insn for widening lane mul.
! 	(aarch64_vec_<su>mlal_lane<Qlane>): Likewise.
! 	* config/aarch64/aarch64-simd-builtins.def: Add intrinsics.
! 	* config/aarch64/arm_neon.h:
! 	(vmlal_lane_s16): Expand using intrinsics rather than inline asm.
! 	(vmlal_lane_u16): Likewise.
! 	(vmlal_lane_s32): Likewise.
! 	(vmlal_lane_u32): Likewise.
! 	(vmlal_laneq_s16): Likewise.
! 	(vmlal_laneq_u16): Likewise.
! 	(vmlal_laneq_s32): Likewise.
! 	(vmlal_laneq_u32): Likewise.
! 	(vmull_lane_s16): Likewise.
! 	(vmull_lane_u16): Likewise.
! 	(vmull_lane_s32): Likewise.
! 	(vmull_lane_u32): Likewise.
! 	(vmull_laneq_s16): Likewise.
! 	(vmull_laneq_u16): Likewise.
! 	(vmull_laneq_s32): Likewise.
! 	(vmull_laneq_u32): Likewise.
! 	* config/aarch64/iterators.md (Vcondtype): New iterator for lane mul.
! 	(Qlane): Likewise.
! 
! 2020-03-06  Wilco Dijkstra  <wdijkstr@arm.com>
! 
! 	* aarch64/aarch64-simd.md (aarch64_mla_elt<mode>): Correct lane syntax.
! 	(aarch64_mla_elt_<vswap_width_name><mode>): Likewise.
! 	(aarch64_mls_elt<mode>): Likewise.
! 	(aarch64_mls_elt_<vswap_width_name><mode>): Likewise.
! 	(aarch64_fma4_elt<mode>): Likewise.
! 	(aarch64_fma4_elt_<vswap_width_name><mode>): Likewise.
! 	(aarch64_fma4_elt_to_64v2df): Likewise.
! 	(aarch64_fnma4_elt<mode>): Likewise.
! 	(aarch64_fnma4_elt_<vswap_width_name><mode>): Likewise.
! 	(aarch64_fnma4_elt_to_64v2df): Likewise.
! 
! 2020-03-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	* config/aarch64/aarch64-sve2.md (@aarch64_sve_<sve_int_op><mode>:
! 	Specify movprfx attribute.
! 	(@aarch64_sve_<sve_int_op>_lane_<mode>): Likewise.
! 
! 2020-03-06  David Edelsohn  <dje.gcc@gmail.com>
! 
! 	PR target/94065
! 	* config/rs6000/aix61.h (TARGET_NO_SUM_IN_TOC): Set to 1 for
! 	cmodel=large.
! 	(TARGET_NO_FP_IN_TOC): Same.
! 	* config/rs6000/aix71.h: Same.
! 	* config/rs6000/aix72.h: Same.
! 
! 2020-03-06  Andrew Pinski  <apinski@marvell.com>
! 	    Jeff Law  <law@redhat.com>
! 
! 	PR rtl-optimization/93996
! 	* haifa-sched.c (remove_notes): Be more careful when adding
! 	REG_SAVE_NOTE.
! 
! 2020-03-06  Delia Burduv  <delia.burduv@arm.com>
! 
! 	* config/arm/arm_neon.h (vld2_bf16): New.
! 	(vld2q_bf16): New.
! 	(vld3_bf16): New.
! 	(vld3q_bf16): New.
! 	(vld4_bf16): New.
! 	(vld4q_bf16): New.
! 	(vld2_dup_bf16): New.
! 	(vld2q_dup_bf16): New.
! 	(vld3_dup_bf16): New.
! 	(vld3q_dup_bf16): New.
! 	(vld4_dup_bf16): New.
! 	(vld4q_dup_bf16): New.
! 	* config/arm/arm_neon_builtins.def
! 	(vld2): Changed to VAR13 and added v4bf, v8bf
! 	(vld2_dup): Changed to VAR8 and added v4bf, v8bf
! 	(vld3): Changed to VAR13 and added v4bf, v8bf
! 	(vld3_dup): Changed to VAR8 and added v4bf, v8bf
! 	(vld4): Changed to VAR13 and added v4bf, v8bf
! 	(vld4_dup): Changed to VAR8 and added v4bf, v8bf
! 	* config/arm/iterators.md (VDXBF2): New iterator.
! 	*config/arm/neon.md (neon_vld2): Use new iterators.
! 	(neon_vld2_dup<mode): Use new iterators.
! 	(neon_vld3<mode>): Likewise.
! 	(neon_vld3qa<mode>): Likewise.
! 	(neon_vld3qb<mode>): Likewise.
! 	(neon_vld3_dup<mode>): Likewise.
! 	(neon_vld4<mode>): Likewise.
! 	(neon_vld4qa<mode>): Likewise.
! 	(neon_vld4qb<mode>): Likewise.
! 	(neon_vld4_dup<mode>): Likewise.
! 	(neon_vld2_dupv8bf): New.
! 	(neon_vld3_dupv8bf): Likewise.
! 	(neon_vld4_dupv8bf): Likewise.
! 
! 2020-03-06  Delia Burduv  <delia.burduv@arm.com>
! 
! 	* config/arm/arm_neon.h (bfloat16x4x2_t): New typedef.
! 	(bfloat16x8x2_t): New typedef.
! 	(bfloat16x4x3_t): New typedef.
! 	(bfloat16x8x3_t): New typedef.
! 	(bfloat16x4x4_t): New typedef.
! 	(bfloat16x8x4_t): New typedef.
! 	(vst2_bf16): New.
! 	(vst2q_bf16): New.
! 	(vst3_bf16): New.
! 	(vst3q_bf16): New.
! 	(vst4_bf16): New.
! 	(vst4q_bf16): New.
! 	* config/arm/arm-builtins.c (v2bf_UP): Define.
! 	(VAR13): New.
! 	(arm_init_simd_builtin_types): Init Bfloat16x2_t eltype.
! 	* config/arm/arm-modes.def (V2BF): New mode.
! 	* config/arm/arm-simd-builtin-types.def
! 	(Bfloat16x2_t): New entry.
! 	* config/arm/arm_neon_builtins.def
! 	(vst2): Changed to VAR13 and added v4bf, v8bf
! 	(vst3): Changed to VAR13 and added v4bf, v8bf
! 	(vst4): Changed to VAR13 and added v4bf, v8bf
! 	* config/arm/iterators.md (VDXBF): New iterator.
! 	(VQ2BF): New iterator.
! 	*config/arm/neon.md (neon_vst2<mode>): Used new iterators.
! 	(neon_vst2<mode>): Used new iterators.
! 	(neon_vst3<mode>): Used new iterators.
! 	(neon_vst3<mode>): Used new iterators.
! 	(neon_vst3qa<mode>): Used new iterators.
! 	(neon_vst3qb<mode>): Used new iterators.
! 	(neon_vst4<mode>): Used new iterators.
! 	(neon_vst4<mode>): Used new iterators.
! 	(neon_vst4qa<mode>): Used new iterators.
! 	(neon_vst4qb<mode>): Used new iterators.
! 
! 2020-03-06  Delia Burduv  <delia.burduv@arm.com>
! 
! 	* config/aarch64/aarch64-simd-builtins.def
! 	(bfcvtn): New built-in function.
! 	(bfcvtn_q): New built-in function.
! 	(bfcvtn2): New built-in function.
! 	(bfcvt): New built-in function.
! 	* config/aarch64/aarch64-simd.md
! 	(aarch64_bfcvtn<q><mode>): New pattern.
! 	(aarch64_bfcvtn2v8bf): New pattern.
! 	(aarch64_bfcvtbf): New pattern.
! 	* config/aarch64/arm_bf16.h (float32_t): New typedef.
! 	(vcvth_bf16_f32): New intrinsic.
! 	* config/aarch64/arm_bf16.h (vcvt_bf16_f32): New intrinsic.
! 	(vcvtq_low_bf16_f32): New intrinsic.
! 	(vcvtq_high_bf16_f32): New intrinsic.
! 	* config/aarch64/iterators.md (V4SF_TO_BF): New mode iterator.
! 	(UNSPEC_BFCVTN): New UNSPEC.
! 	(UNSPEC_BFCVTN2): New UNSPEC.
! 	(UNSPEC_BFCVT): New UNSPEC.
! 	* config/arm/types.md (bf_cvt): New type.
! 
! 2020-03-06  Andreas Krebbel  <krebbel@linux.ibm.com>
! 
! 	* config/s390/s390.md ("tabort"): Get rid of two consecutive
! 	blanks in format string.
! 
! 2020-03-05  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	PR target/89229
! 	PR target/89346
! 	* config/i386/i386-protos.h (ix86_output_ssemov): New prototype.
! 	* config/i386/i386.c (ix86_get_ssemov): New function.
! 	(ix86_output_ssemov): Likewise.
! 	* config/i386/sse.md (VMOVE:mov<mode>_internal): Call
! 	ix86_output_ssemov for TYPE_SSEMOV.  Remove TARGET_AVX512VL
! 	check.
! 	(*movxi_internal_avx512f): Call ix86_output_ssemov for TYPE_SSEMOV.
! 	(*movoi_internal_avx): Call ix86_output_ssemov for TYPE_SSEMOV.
! 	Remove ext_sse_reg_operand and TARGET_AVX512VL check.
! 	(*movti_internal): Likewise.
! 	(*movtf_internal): Call ix86_output_ssemov for TYPE_SSEMOV.
! 
! 2020-03-05  Jeff Law  <law@redhat.com>
! 
! 	PR tree-optimization/91890
! 	* gimple-ssa-warn-restrict.c (maybe_diag_overlap): Remove LOC argument.
! 	Use gimple_or_expr_nonartificial_location.
! 	(check_bounds_overlap): Drop LOC argument to maybe_diag_access_bounds.
! 	Use gimple_or_expr_nonartificial_location.
! 	* gimple.c (gimple_or_expr_nonartificial_location): New function.
! 	* gimple.h (gimple_or_expr_nonartificial_location): Declare it.
! 	* tree-ssa-strlen.c (maybe_warn_overflow): Use
! 	gimple_or_expr_nonartificial_location.
! 	(maybe_diag_stxncpy_trunc, handle_builtin_stxncpy_strncat): Likewise.
! 	(maybe_warn_pointless_strcmp): Likewise.
! 
! 2020-03-05  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/94046
! 	* config/i386/avx2intrin.h (_mm_mask_i32gather_ps): Fix first cast of
! 	SRC and MASK arguments to __m128 from __m128d.
! 	(_mm256_mask_i32gather_ps): Fix first cast of MASK argument to __m256
! 	from __m256d.
! 	(_mm_mask_i64gather_ps): Fix first cast of MASK argument to __m128
! 	from __m128d.
! 	* config/i386/xopintrin.h (_mm_permute2_pd): Fix first cast of C
! 	argument to __m128i from __m128d.
! 	(_mm256_permute2_pd): Fix first cast of C argument to __m256i from
! 	__m256d.
! 	(_mm_permute2_ps): Fix first cast of C argument to __m128i from __m128.
! 	(_mm256_permute2_ps): Fix first cast of C argument to __m256i from
! 	__m256.
! 
! 2020-03-05  Delia Burduv  <delia.burduv@arm.com>
! 
! 	* config/arm/arm_neon.h (vbfmmlaq_f32): New.
! 	(vbfmlalbq_f32): New.
! 	(vbfmlaltq_f32): New.
! 	(vbfmlalbq_lane_f32): New.
! 	(vbfmlaltq_lane_f32): New.
! 	(vbfmlalbq_laneq_f32): New.
! 	(vbfmlaltq_laneq_f32): New.
! 	* config/arm/arm_neon_builtins.def (vmmla): New.
! 	(vfmab): New.
! 	(vfmat): New.
! 	(vfmab_lane): New.
! 	(vfmat_lane): New.
! 	(vfmab_laneq): New.
! 	(vfmat_laneq): New.
! 	* config/arm/iterators.md (BF_MA): New int iterator.
! 	(bt): New int attribute.
! 	(VQXBF): Copy of VQX with V8BF.
! 	* config/arm/neon.md (neon_vmmlav8bf): New insn.
! 	(neon_vfma<bt>v8bf): New insn.
! 	(neon_vfma<bt>_lanev8bf): New insn.
! 	(neon_vfma<bt>_laneqv8bf): New expand.
! 	(neon_vget_high<mode>): Changed iterator to VQXBF.
! 	* config/arm/unspecs.md (UNSPEC_BFMMLA): New UNSPEC.
! 	(UNSPEC_BFMAB): New UNSPEC.
! 	(UNSPEC_BFMAT): New UNSPEC.
! 
! 2020-03-05  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/93399
! 	* tree-pretty-print.h (pretty_print_string): Declare.
! 	* tree-pretty-print.c (pretty_print_string): Remove forward
! 	declaration, no longer static.  Change nbytes parameter type
! 	from unsigned to size_t.
! 	* print-rtl.c (print_value) <case CONST_STRING>: Use
! 	pretty_print_string and for shrink way too long strings.
! 
! 2020-03-05  Richard Biener  <rguenther@suse.de>
! 	    Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/93582
! 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Treat POINTER_PLUS_EXPR
! 	last operand as signed when looking for memset offset.  Formatting
! 	fix.
! 
! 2020-03-04  Andrew Pinski  <apinski@marvell.com>
! 
! 	PR bootstrap/93962
! 	* value-prof.c (dump_histogram_value): Use std::abs.
! 
! 2020-03-04  Martin Sebor  <msebor@redhat.com>
! 
! 	PR tree-optimization/93986
! 	* tree-ssa-strlen.c (maybe_warn_overflow): Convert all wide_int
! 	operands to the same precision widest_int to avoid ICEs.
! 
! 2020-03-04  Bill Schmidt  <wschmidt@linux.ibm.com>
! 
! 	PR target/87560
! 	* rs6000-cpus.def (OTHER_ALTIVEC_MASKS): New #define.
! 	* rs6000.c (rs6000_disable_incompatible_switches): Add table entry
! 	for OPTION_MASK_ALTIVEC.
! 
! 2020-03-04  Andreas Krebbel  <krebbel@linux.ibm.com>
! 
! 	* config.gcc: Include the glibc-stdint.h header for zTPF.
! 
! 2020-03-04  Andreas Krebbel  <krebbel@linux.ibm.com>
! 
! 	* config/s390/s390.c (s390_secondary_memory_needed): Disallow
! 	direct FPR-GPR copies.
! 	(s390_register_info_gprtofpr): Disallow GPR content to be saved in
! 	FPRs.
! 
! 2020-03-04  Andreas Krebbel  <krebbel@linux.ibm.com>
! 
! 	* config/s390/s390.c (s390_emit_prologue): Specify the 2 new
! 	operands to the prologue_tpf expander.
! 	(s390_emit_epilogue): Likewise.
! 	(s390_option_override_internal): Do error checking and setup for
! 	the new options.
! 	* config/s390/tpf.h (TPF_TRACE_PROLOGUE_CHECK)
! 	(TPF_TRACE_EPILOGUE_CHECK, TPF_TRACE_PROLOGUE_TARGET)
! 	(TPF_TRACE_EPILOGUE_TARGET, TPF_TRACE_PROLOGUE_SKIP_TARGET)
! 	(TPF_TRACE_EPILOGUE_SKIP_TARGET): New macro definitions.
! 	* config/s390/tpf.md ("prologue_tpf", "epilogue_tpf"): Add two new
! 	operands for the check flag and the branch target.
! 	* config/s390/tpf.opt ("mtpf-trace-hook-prologue-check")
! 	("mtpf-trace-hook-prologue-target")
! 	("mtpf-trace-hook-epilogue-check")
! 	("mtpf-trace-hook-epilogue-target", "mtpf-trace-skip"): New
! 	options.
! 	* doc/invoke.texi: Document -mtpf-trace-skip option. The other
! 	options are for debugging purposes and will not be documented
! 	here.
! 
! 2020-03-04  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR debug/93888
! 	* tree-inline.c (copy_decl_to_var): Copy DECL_BY_REFERENCE flag.
! 
! 	* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Add offseti
! 	argument.  Change pd argument so that it can be modified.  Turn
! 	constant non-CONSTRUCTOR store into non-constant if it is too large.
! 	Adjust offset and size of CONSTRUCTOR or non-constant store to avoid
! 	overflows.
! 	(vn_walk_cb_data::vn_walk_cb_data, vn_reference_lookup_3): Adjust
! 	callers.
! 
! 2020-02-04  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/93964
! 	* graphite-isl-ast-to-gimple.c
! 	(gcc_expression_from_isl_ast_expr_id): Add intermediate
! 	conversion for pointer to integer converts.
! 	* graphite-scop-detection.c (assign_parameter_index_in_region):
! 	Relax assert.
! 
! 2020-03-04  Martin Liska  <mliska@suse.cz>
! 
! 	PR c/93886
! 	PR c/93887
! 	* doc/invoke.texi: Clarify --help=language and --help=common
! 	interaction.
! 
! 2020-03-04  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/94001
! 	* tree-tailcall.c (process_assignment): Before comparing op1 to
! 	*ass_var, verify *ass_var is non-NULL.
! 
! 2020-03-04  Kito Cheng  <kito.cheng@sifive.com>
! 
! 	PR target/93995
! 	* config/riscv/riscv.c (riscv_emit_float_compare): Using NE to compare
! 	the result of IOR.
! 
! 2020-03-03  Dennis Zhang  <dennis.zhang@arm.com>
! 
! 	* config/arm/arm_bf16.h (vcvtah_f32_bf16, vcvth_bf16_f32): New.
! 	* config/arm/arm_neon.h (vcvt_f32_bf16, vcvtq_low_f32_bf16): New.
! 	(vcvtq_high_f32_bf16, vcvt_bf16_f32): New.
! 	(vcvtq_low_bf16_f32, vcvtq_high_bf16_f32): New.
! 	* config/arm/arm_neon_builtins.def (vbfcvt, vbfcvt_high): New entries.
! 	(vbfcvtv4sf, vbfcvtv4sf_high): Likewise.
! 	* config/arm/iterators.md (VBFCVT, VBFCVTM): New mode iterators.
! 	(V_bf_low, V_bf_cvt_m): New mode attributes.
! 	* config/arm/neon.md (neon_vbfcvtv4sf<VBFCVT:mode>): New.
! 	(neon_vbfcvtv4sf_highv8bf, neon_vbfcvtsf): New.
! 	(neon_vbfcvt<VBFCVT:mode>, neon_vbfcvt_highv8bf): New.
! 	(neon_vbfcvtbf_cvtmode<mode>, neon_vbfcvtbf): New
! 	* config/arm/unspecs.md (UNSPEC_BFCVT, UNSPEC_BFCVT_HIG): New.
! 
! 2020-03-03  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/93582
! 	* tree-ssa-sccvn.h (vn_reference_lookup): Add mask argument.
! 	* tree-ssa-sccvn.c (struct vn_walk_cb_data): Add mask and masked_result
! 	members, initialize them in the constructor and if mask is non-NULL,
! 	artificially push_partial_def {} for the portions of the mask that
! 	contain zeros.
! 	(vn_walk_cb_data::finish): If mask is non-NULL, set masked_result to
! 	val and return (void *)-1.  Formatting fix.
! 	(vn_reference_lookup_pieces): Adjust vn_walk_cb_data initialization.
! 	Formatting fix.
! 	(vn_reference_lookup): Add mask argument.  If non-NULL, don't call
! 	fully_constant_vn_reference_p nor vn_reference_lookup_1 and return
! 	data.mask_result.
! 	(visit_nary_op): Handle BIT_AND_EXPR of a memory load and INTEGER_CST
! 	mask.
! 	(visit_stmt): Formatting fix.
! 
! 2020-03-03  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/93946
! 	* alias.h (refs_same_for_tbaa_p): Declare.
! 	* alias.c (refs_same_for_tbaa_p): New function.
! 	* tree-ssa-alias.c (ao_ref_alias_set): For a NULL ref return
! 	zero.
! 	* tree-ssa-scopedtables.h
! 	(avail_exprs_stack::lookup_avail_expr): Add output argument
! 	giving access to the hashtable entry.
! 	* tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
! 	Likewise.
! 	* tree-ssa-dom.c: Include alias.h.
! 	(dom_opt_dom_walker::optimize_stmt): Validate TBAA state before
! 	removing redundant store.
! 	* tree-ssa-sccvn.h (vn_reference_s::base_set): New member.
! 	(ao_ref_init_from_vn_reference): Adjust prototype.
! 	(vn_reference_lookup_pieces): Likewise.
! 	(vn_reference_insert_pieces): Likewise.
! 	* tree-ssa-sccvn.c: Track base alias set in addition to alias
! 	set everywhere.
! 	(eliminate_dom_walker::eliminate_stmt): Also check base alias
! 	set when removing redundant stores.
! 	(visit_reference_op_store): Likewise.
! 	* dse.c (record_store): Adjust valdity check for redundant
! 	store removal.
! 
! 2020-03-03  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/26877
! 	* config/s390/s390.h (OPTION_DEFAULT_SPECS): Reorder.
! 
! 	PR rtl-optimization/94002
! 	* explow.c (plus_constant): Punt if cst has VOIDmode and
! 	get_pool_mode is different from mode.
! 
! 2020-03-03  Claudiu Zissulescu  <claziss@synopsys.com>
! 
! 	* config/arc/arc.c (leigitimate_small_data_address_p): Check if an
! 	address has an offset which fits the scalling constraint for a
! 	load/store operation.
! 	(legitimate_scaled_address_p): Update use
! 	leigitimate_small_data_address_p.
! 	(arc_print_operand): Likewise.
! 	(arc_legitimate_address_p): Likewise.
! 	(legitimate_small_data_address_p): Likewise.
! 
! 2020-03-03  Claudiu Zissulescu  <claziss@synopsys.com>
! 
! 	* config/arc/arc.md (fmasf4_fpu): Use accl_operand predicate.
! 	(fnmasf4_fpu): Likewise.
! 
! 2020-03-03  Claudiu Zissulescu  <claziss@synopsys.com>
! 
! 	* config/arc/arc.md (adddi3): Early expand the 64bit operation into
! 	32bit ops.
! 	(subdi3): Likewise.
! 	(adddi3_i): Remove pattern.
! 	(subdi3_i): Likewise.
! 
! 2020-03-03  Claudiu Zissulescu  <claziss@synopsys.com>
! 
! 	* config/arc/arc.md (eh_return): Add length info.
! 
! 2020-03-02  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* doc/invoke.texi (-fanalyzer-show-duplicate-count): New.
! 
! 2020-03-02  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* doc/invoke.texi (Static Analyzer Options): Add
! 	-Wanalyzer-stale-setjmp-buffer to the list of options enabled
! 	by -fanalyzer.
! 
! 2020-03-02  Uroš Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/93997
! 	* config/i386/i386.md (movstrict<mode>): Allow only
! 	registers with VALID_INT_MODE_P modes.
! 
! 2020-03-02  Andrew Stubbs  <ams@codesourcery.com>
! 
! 	* config/gcn/gcn-valu.md (dpp_move<mode>): New.
! 	(reduc_insn): Use 'U' and 'B' operand codes.
! 	(reduc_<reduc_op>_scal_<mode>): Allow all types.
! 	(reduc_<reduc_op>_scal_v64di): Delete.
! 	(*<reduc_op>_dpp_shr_<mode>): Allow all 1reg types.
! 	(*plus_carry_dpp_shr_v64si): Change to ...
! 	(*plus_carry_dpp_shr_<mode>): ... this and allow all 1reg int types.
! 	(mov_from_lane63_v64di): Change to ...
! 	(mov_from_lane63_<mode>): ... this, and allow all 64-bit modes.
! 	* config/gcn/gcn.c (gcn_expand_dpp_shr_insn): Increase buffer size.
! 	Support UNSPEC_MOV_DPP_SHR output formats.
! 	(gcn_expand_reduc_scalar): Add "use_moves" reductions.
! 	Add "use_extends" reductions.
! 	(print_operand_address): Add 'I' and 'U' codes.
! 	* config/gcn/gcn.md (unspec): Add UNSPEC_MOV_DPP_SHR.
! 
! 2020-03-02  Martin Liska  <mliska@suse.cz>
! 
! 	* lto-wrapper.c: Fix typo in comment about
! 	C++ standard version.
! 
! 2020-03-01  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c++/92721
! 	* calls.c (init_attr_rdwr_indices): Correctly handle attribute.
! 
! 2020-03-01  Martin Sebor  <msebor@redhat.com>
! 
! 	PR middle-end/93829
! 	* tree-ssa-strlen.c (count_nonzero_bytes): Set the size to that
! 	  of a pointer in the outermost ADDR_EXPRs.
! 
! 2020-02-28  Jeff Law  <law@redhat.com>
! 
! 	* config/v850/v850.h (STATIC_CHAIN_REGNUM): Change to r19.
! 	* config/v850/v850.c (v850_asm_trampoline_template): Update
! 	accordingly.
! 
! 2020-02-28  Michael Meissner  <meissner@linux.ibm.com>
! 
! 	PR target/93937
! 	* config/rs6000/vsx.md (vsx_extract_<mode>_<VS_scalar>mode_var):
! 	Delete insn.
! 
! 2020-02-28  Martin Liska  <mliska@suse.cz>
! 
! 	PR other/93965
! 	* configure.ac: Improve detection of ld_date by requiring
! 	either two dashes or none.
! 	* configure: Regenerate.
! 
! 2020-02-28  Vladimir Makarov  <vmakarov@redhat.com>
! 
! 	PR rtl-optimization/93564
! 	* ira-color.c (assign_hard_reg): Prefer smaller hard regno when we
! 	do not honor reg alloc order.
! 
! 2020-02-27  Joel Hutton  <Joel.Hutton@arm.com>
! 
! 	PR target/87612
! 	* config/aarch64/aarch64.c (aarch64_override_options): Fix
! 	misleading warning string.
! 
! 2020-02-27  Martin Sebor  <msebor@redhat.com>
! 
! 	* doc/invoke.texi (-Wbuiltin-declaration-mismatch): Fix a typo.
! 
! 2020-02-27  Michael Meissner  <meissner@linux.ibm.com>
! 
! 	PR target/93932
! 	* config/rs6000/vsx.md (vsx_extract_<mode>_var, VSX_D iterator):
! 	Split the insn into two parts.  This insn only does variable
! 	extract from a register.
! 	(vsx_extract_<mode>_var_load, VSX_D iterator): New insn, do
! 	variable extract from memory.
! 	(vsx_extract_v4sf_var): Split the insn into two parts.  This insn
! 	only does variable extract from a register.
! 	(vsx_extract_v4sf_var_load): New insn, do variable extract from
! 	memory.
! 	(vsx_extract_<mode>_var, VSX_EXTRACT_I iterator): Split the insn
! 	into two parts.  This insn only does variable extract from a
! 	register.
! 	(vsx_extract_<mode>_var_load, VSX_EXTRACT_I iterator): New insn,
! 	do variable extract from memory.
! 
! 2020-02-27  Martin Jambor  <mjambor@suse.cz>
! 	    Feng Xue  <fxue@os.amperecomputing.com>
! 
! 	PR ipa/93707
! 	* ipa-cp.c (same_node_or_its_all_contexts_clone_p): Replaced with
! 	new function calls_same_node_or_its_all_contexts_clone_p.
! 	(cgraph_edge_brings_value_p): Use it.
! 	(cgraph_edge_brings_value_p): Likewise.
! 	(self_recursive_pass_through_p): Return false if caller is a clone.
! 	(self_recursive_agg_pass_through_p): Likewise.
! 
! 2020-02-27  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	PR middle-end/92152
! 	* alias.c (ends_tbaa_access_path_p): Break out from ...
! 	(component_uses_parent_alias_set_from): ... here.
! 	* alias.h (ends_tbaa_access_path_p): Declare.
! 	* tree-ssa-alias.c (access_path_may_continue_p): Break out from ...;
! 	handle trailing arrays past end of tbaa access path.
! 	(aliasing_component_refs_p): ... here; likewise.
! 	(nonoverlapping_refs_since_match_p): Track TBAA segment of the access
! 	path; disambiguate also past end of it.
! 	(nonoverlapping_component_refs_p): Use only TBAA segment of the access
! 	path.
! 
! 2020-02-27  Mihail Ionescu  <mihail.ionescu@arm.com>
! 
! 	* (__ARM_NUM_LANES, __arm_lane, __arm_lane_q): Move to the
! 	beginning of the file.
! 	(vcreate_bf16, vcombine_bf16): New.
! 	(vdup_n_bf16, vdupq_n_bf16): New.
! 	(vdup_lane_bf16, vdup_laneq_bf16): New.
! 	(vdupq_lane_bf16, vdupq_laneq_bf16): New.
! 	(vduph_lane_bf16, vduph_laneq_bf16): New.
! 	(vset_lane_bf16, vsetq_lane_bf16): New.
! 	(vget_lane_bf16, vgetq_lane_bf16): New.
! 	(vget_high_bf16, vget_low_bf16): New.
! 	(vreinterpret_bf16_u8, vreinterpretq_bf16_u8): New.
! 	(vreinterpret_bf16_u16, vreinterpretq_bf16_u16): New.
! 	(vreinterpret_bf16_u32, vreinterpretq_bf16_u32): New.
! 	(vreinterpret_bf16_u64, vreinterpretq_bf16_u64): New.
! 	(vreinterpret_bf16_s8, vreinterpretq_bf16_s8): New.
! 	(vreinterpret_bf16_s16, vreinterpretq_bf16_s16): New.
! 	(vreinterpret_bf16_s32, vreinterpretq_bf16_s32): New.
! 	(vreinterpret_bf16_s64, vreinterpretq_bf16_s64): New.
! 	(vreinterpret_bf16_p8, vreinterpretq_bf16_p8): New.
! 	(vreinterpret_bf16_p16, vreinterpretq_bf16_p16): New.
! 	(vreinterpret_bf16_p64, vreinterpretq_bf16_p64): New.
! 	(vreinterpret_bf16_f32, vreinterpretq_bf16_f32): New.
! 	(vreinterpret_bf16_f64, vreinterpretq_bf16_f64): New.
! 	(vreinterpretq_bf16_p128): New.
! 	(vreinterpret_s8_bf16, vreinterpretq_s8_bf16): New.
! 	(vreinterpret_s16_bf16, vreinterpretq_s16_bf16): New.
! 	(vreinterpret_s32_bf16, vreinterpretq_s32_bf16): New.
! 	(vreinterpret_s64_bf16, vreinterpretq_s64_bf16): New.
! 	(vreinterpret_u8_bf16, vreinterpretq_u8_bf16): New.
! 	(vreinterpret_u16_bf16, vreinterpretq_u16_bf16): New.
! 	(vreinterpret_u32_bf16, vreinterpretq_u32_bf16): New.
! 	(vreinterpret_u64_bf16, vreinterpretq_u64_bf16): New.
! 	(vreinterpret_p8_bf16, vreinterpretq_p8_bf16): New.
! 	(vreinterpret_p16_bf16, vreinterpretq_p16_bf16): New.
! 	(vreinterpret_p64_bf16, vreinterpretq_p64_bf16): New.
! 	(vreinterpret_f32_bf16, vreinterpretq_f32_bf16): New.
! 	(vreinterpretq_p128_bf16): New.
! 	* config/arm/arm_neon_builtins.def (VDX): Add V4BF.
! 	(V_elem): Likewise.
! 	(V_elem_l): Likewise.
! 	(VD_LANE): Likewise.
! 	(VQX) Add V8BF.
! 	(V_DOUBLE): Likewise.
! 	(VDQX): Add V4BF and V8BF.
! 	(V_two_elem, V_three_elem, V_four_elem): Likewise.
! 	(V_reg): Likewise.
! 	(V_HALF): Likewise.
! 	(V_double_vector_mode): Likewise.
! 	(V_cmp_result): Likewise.
! 	(V_uf_sclr): Likewise.
! 	(V_sz_elem): Likewise.
! 	(Is_d_reg): Likewise.
! 	(V_mode_nunits): Likewise.
! 	* config/arm/neon.md (neon_vdup_lane): Enable for BFloat16.
! 
! 2020-02-27  Andrew Stubbs  <ams@codesourcery.com>
! 
! 	* config/gcn/gcn-valu.md (VEC_SUBDWORD_MODE): New mode iterator.
! 	(<expander><mode>2<exec>): Change modes to VEC_ALL1REG_INT_MODE.
! 	(<expander><mode>3<exec>): Likewise.
! 	(<expander><mode>3): New.
! 	(v<expander><mode>3): New.
! 	(<expander><mode>3): New.
! 	(<expander><mode>3<exec>): Rename to ...
! 	(<expander>v64si3<exec>): ... this, and change modes to V64SI.
! 	* config/gcn/gcn.md (mnemonic): Use '%B' for not.
! 
! 2020-02-27  Alexandre Oliva <oliva@adacore.com>
! 
! 	* config/vx-common.h (NO_DOLLAR_IN_LABEL, NO_DOT_IN_LABEL): Leave
! 	them alone on vx7.
! 
! 2020-02-27  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/93508
! 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Handle _CHK like
! 	non-_CHK variants.  Valueize their length arguments.
! 
! 2020-02-27  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/93953
! 	* tree-vect-slp.c (slp_copy_subtree): Avoid keeping a reference
! 	to the hash-map entry.
! 
! 2020-02-27  Andrew Stubbs  <ams@codesourcery.com>
! 
! 	* config/gcn/gcn.md (mov<mode>): Add transformations for BI subregs.
! 
! 2020-02-27  Mark Williams  <mwilliams@fb.com>
! 
! 	* dwarf2out.c (file_name_acquire): Call remap_debug_filename.
! 	* lto-opts.c (lto_write_options): Drop -fdebug-prefix-map,
! 	-ffile-prefix-map and -fmacro-prefix-map.
! 	* lto-streamer-out.c: Include file-prefix-map.h.
! 	(lto_output_location): Remap the file part of locations.
! 
! 2020-02-27  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/93949
! 	* gimplify.c (gimplify_init_constructor): Don't promote readonly
! 	DECL_REGISTER variables to TREE_STATIC.
! 
! 	PR tree-optimization/93582
! 	PR tree-optimization/93945
! 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Handle memset with
! 	non-zero INTEGER_CST second argument and ref->offset or ref->size
! 	not a multiple of BITS_PER_UNIT.
! 
! 2020-02-27  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	* doc/install.texi (Binaries): Update description of BullFreeware.
! 
! 2020-02-26  Sandra Loosemore  <sandra@codesourcery.com>
! 
! 	PR c++/90467
! 
! 	* doc/invoke.texi (Option Summary): Re-alphabetize warnings in
! 	C++ Language Options, Warning Options, and Static Analyzer
! 	Options lists.  Document negative form of options enabled by
! 	default.  Move some things around to more accurately sort
! 	warnings by category.
! 	(C++ Dialect Options, Warning Options, Static Analyzer
! 	Options): Document negative form of options when enabled by
! 	default.  Move some things around to more accurately sort
! 	warnings by category.  Add some missing index entries.
! 	Light copy-editing.
! 
! 2020-02-26  Carl Love  <cel@us.ibm.com>
! 
! 	PR target/91276
! 	* doc/extend.texi (PowerPC AltiVec Built-in Functions available on
! 	ISA 2.07): The builtin-function name __builtin_crypto_vpmsumb is only
! 	for the vector unsigned short arguments.  It is also listed as the
! 	name of the built-in for arguments vector unsigned short,
! 	vector unsigned int and vector unsigned long long built-ins.  The
! 	name of the builtins for these arguments should be:
! 	__builtin_crypto_vpmsumh, __builtin_crypto_vpmsumw and
! 	__builtin_crypto_vpmsumd respectively.
! 
! 2020-02-26  Richard Biener  <rguenther@suse.de>
! 
! 	* tree-vect-slp.c (vect_print_slp_tree): Also dump ref count
! 	and load permutation.
! 
! 2020-02-26  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR middle-end/93843
! 	* optabs-tree.c (supportable_convert_operation): Reject types with
! 	scalar modes.
! 
! 2020-02-26  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* Makefile.in (ANALYZER_OBJS): Add analyzer/bar-chart.o.
! 
! 2020-02-26  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/93820
! 	* gimple-ssa-store-merging.c (check_no_overlap): Change RHS_CODE
! 	argument to ALL_INTEGER_CST_P boolean.
! 	(imm_store_chain_info::try_coalesce_bswap): Adjust caller.
! 	(imm_store_chain_info::coalesce_immediate_stores): Likewise.  Handle
! 	adjacent INTEGER_CST store into merged_store->only_constants like
! 	overlapping one.
! 
! 2020-02-25  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR other/93912
! 	* config/sh/sh.c (expand_cbranchdi4): Fix comment typo, probablity
! 	-> probability.
! 	* cfghooks.c (verify_flow_info): Likewise.
! 	* predict.c (combine_predictions_for_bb): Likewise.
! 	* bb-reorder.c (connect_better_edge_p): Likewise.  Fix comment typo,
! 	sucessor -> successor.
! 	(find_traces_1_round): Fix comment typo, destinarion -> destination.
! 	* omp-expand.c (expand_oacc_for): Fix comment typo, sucessors ->
! 	successors.
! 	* tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Fix dump
! 	message typo, sucessors -> successors.
! 
! 2020-02-25  Martin Sebor  <msebor@redhat.com>
! 
! 	* doc/extend.texi (attribute access): Correct an example.
! 
! 2020-02-25  Mihail Ionescu  <mihail.ionescu@arm.com>
! 
! 	* config/aarch64/aarch64-builtins.c (aarch64_scalar_builtin_types):
! 	Add simd_bf.
! 	(aarch64_init_simd_builtin_scalar_types): Register simd_bf.
! 	(VAR15, VAR16): New.
! 	* config/aarch64/iterators.md (VALLDIF): Enable for V4BF and V8BF.
! 	(VD): Enable for V4BF.
! 	(VDC): Likewise.
! 	(VQ): Enable for V8BF.
! 	(VQ2): Likewise.
! 	(VQ_NO2E): Likewise.
! 	(VDBL, Vdbl): Add V4BF.
! 	(V_INT_EQUIV, v_int_equiv): Add V4BF and V8BF.
! 	* config/aarch64/arm_neon.h (bfloat16x4x2_t): New typedef.
! 	(bfloat16x8x2_t): Likewise.
! 	(bfloat16x4x3_t): Likewise.
! 	(bfloat16x8x3_t): Likewise.
! 	(bfloat16x4x4_t): Likewise.
! 	(bfloat16x8x4_t): Likewise.
! 	(vcombine_bf16): New.
! 	(vld1_bf16, vld1_bf16_x2): New.
! 	(vld1_bf16_x3, vld1_bf16_x4): New.
! 	(vld1q_bf16, vld1q_bf16_x2): New.
! 	(vld1q_bf16_x3, vld1q_bf16_x4): New.
! 	(vld1_lane_bf16): New.
! 	(vld1q_lane_bf16): New.
! 	(vld1_dup_bf16): New.
! 	(vld1q_dup_bf16): New.
! 	(vld2_bf16): New.
! 	(vld2q_bf16): New.
! 	(vld2_dup_bf16): New.
! 	(vld2q_dup_bf16): New.
! 	(vld3_bf16): New.
! 	(vld3q_bf16): New.
! 	(vld3_dup_bf16): New.
! 	(vld3q_dup_bf16): New.
! 	(vld4_bf16): New.
! 	(vld4q_bf16): New.
! 	(vld4_dup_bf16): New.
! 	(vld4q_dup_bf16): New.
! 	(vst1_bf16, vst1_bf16_x2): New.
! 	(vst1_bf16_x3, vst1_bf16_x4): New.
! 	(vst1q_bf16, vst1q_bf16_x2): New.
! 	(vst1q_bf16_x3, vst1q_bf16_x4): New.
! 	(vst1_lane_bf16): New.
! 	(vst1q_lane_bf16): New.
! 	(vst2_bf16): New.
! 	(vst2q_bf16): New.
! 	(vst3_bf16): New.
! 	(vst3q_bf16): New.
! 	(vst4_bf16): New.
! 	(vst4q_bf16): New.
! 
! 2020-02-25  Mihail Ionescu  <mihail.ionescu@arm.com>
! 
! 	* config/aarch64/iterators.md (VDQF_F16) Add V4BF and V8BF.
! 	(VALL_F16): Likewise.
! 	(VALLDI_F16): Likewise.
! 	(Vtype): Likewise.
! 	(Vetype): Likewise.
! 	(vswap_width_name): Likewise.
! 	(VSWAP_WIDTH): Likewise.
! 	(Vel): Likewise.
! 	(VEL): Likewise.
! 	(q): Likewise.
! 	* config/aarch64/arm_neon.h (vset_lane_bf16, vsetq_lane_bf16): New.
! 	(vget_lane_bf16, vgetq_lane_bf16): New.
! 	(vcreate_bf16): New.
! 	(vdup_n_bf16, vdupq_n_bf16): New.
! 	(vdup_lane_bf16, vdup_laneq_bf16): New.
! 	(vdupq_lane_bf16, vdupq_laneq_bf16): New.
! 	(vduph_lane_bf16, vduph_laneq_bf16): New.
! 	(vreinterpret_bf16_u8, vreinterpretq_bf16_u8): New.
! 	(vreinterpret_bf16_u16, vreinterpretq_bf16_u16): New.
! 	(vreinterpret_bf16_u32, vreinterpretq_bf16_u32): New.
! 	(vreinterpret_bf16_u64, vreinterpretq_bf16_u64): New.
! 	(vreinterpret_bf16_s8, vreinterpretq_bf16_s8): New.
! 	(vreinterpret_bf16_s16, vreinterpretq_bf16_s16): New.
! 	(vreinterpret_bf16_s32, vreinterpretq_bf16_s32): New.
! 	(vreinterpret_bf16_s64, vreinterpretq_bf16_s64): New.
! 	(vreinterpret_bf16_p8, vreinterpretq_bf16_p8): New.
! 	(vreinterpret_bf16_p16, vreinterpretq_bf16_p16): New.
! 	(vreinterpret_bf16_p64, vreinterpretq_bf16_p64): New
! 	(vreinterpret_bf16_f16, vreinterpretq_bf16_f16): New
! 	(vreinterpret_bf16_f32, vreinterpretq_bf16_f32): New.
! 	(vreinterpret_bf16_f64, vreinterpretq_bf16_f64): New.
! 	(vreinterpretq_bf16_p128): New.
! 	(vreinterpret_s8_bf16, vreinterpretq_s8_bf16): New.
! 	(vreinterpret_s16_bf16, vreinterpretq_s16_bf16): New.
! 	(vreinterpret_s32_bf16, vreinterpretq_s32_bf16): New.
! 	(vreinterpret_s64_bf16, vreinterpretq_s64_bf16): New.
! 	(vreinterpret_u8_bf16, vreinterpretq_u8_bf16): New.
! 	(vreinterpret_u16_bf16, vreinterpretq_u16_bf16): New.
! 	(vreinterpret_u32_bf16, vreinterpretq_u32_bf16): New.
! 	(vreinterpret_u64_bf16, vreinterpretq_u64_bf16): New.
! 	(vreinterpret_p8_bf16, vreinterpretq_p8_bf16): New.
! 	(vreinterpret_p16_bf16, vreinterpretq_p16_bf16): New.
! 	(vreinterpret_p64_bf16, vreinterpretq_p64_bf16): New.
! 	(vreinterpret_f32_bf16, vreinterpretq_f32_bf16): New.
! 	(vreinterpret_f64_bf16,vreinterpretq_f64_bf16): New.
! 	(vreinterpret_f16_bf16,vreinterpretq_f16_bf16): New.
! 	(vreinterpretq_p128_bf16): New.
! 
! 2020-02-25  Dennis Zhang  <dennis.zhang@arm.com>
! 
! 	* config/arm/arm_neon.h (vbfdot_f32, vbfdotq_f32): New
! 	(vbfdot_lane_f32, vbfdotq_laneq_f32): New.
! 	(vbfdot_laneq_f32, vbfdotq_lane_f32): New.
! 	* config/arm/arm_neon_builtins.def (vbfdot): New entry.
! 	(vbfdot_lanev4bf, vbfdot_lanev8bf): Likewise.
! 	* config/arm/iterators.md (VSF2BF): New attribute.
! 	* config/arm/neon.md (neon_vbfdot<VCVTF:mode>): New entry.
! 	(neon_vbfdot_lanev4bf<VCVTF:mode>): Likewise.
! 	(neon_vbfdot_lanev8bf<VCVTF:mode>): Likewise.
! 
! 2020-02-25  Christophe Lyon  <christophe.lyon@linaro.org>
! 
! 	* config/arm/arm.md (required_for_purecode): New attribute.
! 	(enabled): Handle required_for_purecode.
! 	* config/arm/thumb1.md (thumb1_movsi_insn): Add alternative to
! 	work with -mpure-code.
! 
! 2020-02-25  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR rtl-optimization/93908
! 	* combine.c (find_split_point): For store into ZERO_EXTRACT, and src
! 	with mask.
! 
! 2019-02-25  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* dwarf2out.c (dwarf2out_size_function): Run in early-DWARF mode.
! 
! 2020-02-25  Roman Zhuykov  <zhroma@ispras.ru>
! 
! 	* doc/install.texi (--enable-checking): Adjust wording.
! 
! 2020-02-25  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/93868
! 	* tree-vect-slp.c (slp_copy_subtree): New function.
! 	(vect_attempt_slp_rearrange_stmts): Copy the SLP tree before
! 	re-arranging stmts in it.
! 
! 2020-02-25  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/93874
! 	* passes.c (pass_manager::dump_passes): Create a cgraph node for the
! 	dummy function and remove it at the end.
! 
! 	PR translation/93864
! 	* config/lm32/lm32.c (lm32_setup_incoming_varargs): Fix comment typo
! 	paramter -> parameter.
! 	* config/aarch64/aarch64.c (aarch64_is_extend_from_extract): Likewise.
! 	* ipa-prop.h (struct ipa_agg_replacement_value): Likewise.
! 
! 2020-02-24  Roman Zhuykov  <zhroma@ispras.ru>
! 
! 	* doc/install.texi (--enable-checking): Properly document current
! 	behavior.
! 	(--enable-stage1-checking): Minor clarification about bootstrap.
! 
! 2020-02-24  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/93032
! 	* doc/invoke.texi (-Wnanalyzer-tainted-array-index): Note that
! 	-fanalyzer-checker=taint is also required.
! 	(-fanalyzer-checker=): Note that providing this option enables the
! 	given checker, and doing so may be required for checkers that are
! 	disabled by default.
! 
! 2020-02-24  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* doc/invoke.texi (-fanalyzer-verbosity=): "2" only shows
! 	significant control flow events; add a "3" which shows all
! 	control flow events; the old "3" becomes "4".
! 
! 2020-02-24  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/93582
! 	* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Consider
! 	pd.offset and pd.size to be counted in bits rather than bytes, add
! 	support for maxsizei that is not a multiple of BITS_PER_UNIT and
! 	handle bitfield stores and loads.
! 	(vn_reference_lookup_3): Don't call ranges_known_overlap_p with
! 	uncomparable quantities - bytes vs. bits.  Allow push_partial_def
! 	on offsets/sizes that aren't multiple of BITS_PER_UNIT and adjust
! 	pd.offset/pd.size to be counted in bits rather than bytes.
! 	Formatting fix.  Rename shadowed len variable to buflen.
! 
! 2020-02-24  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
! 	    Kugan Vivekandarajah  <kugan.vivekanandarajah@linaro.org>
! 
! 	PR driver/47785
! 	* gcc.c (putenv_COLLECT_AS_OPTIONS): New function.
! 	(driver::main): Call putenv_COLLECT_AS_OPTIONS.
! 	* opts-common.c (parse_options_from_collect_gcc_options): New function.
! 	(prepend_xassembler_to_collect_as_options): Likewise.
! 	* opts.h (parse_options_from_collect_gcc_options): Declare prototype.
! 	(prepend_xassembler_to_collect_as_options): Likewise.
! 	* lto-opts.c (lto_write_options): Stream assembler options
! 	in COLLECT_AS_OPTIONS.
! 	* lto-wrapper.c (xassembler_options_error): New static variable.
! 	(get_options_from_collect_gcc_options): Move parsing options code to
! 	parse_options_from_collect_gcc_options and call it.
! 	(merge_and_complain): Validate -Xassembler options.
! 	(append_compiler_options): Handle OPT_Xassembler.
! 	(run_gcc): Append command line -Xassembler options to
! 	collect_gcc_options.
! 	* doc/invoke.texi: Add documentation about using Xassembler
! 	options with LTO.
! 
! 2020-02-24  Kito Cheng  <kito.cheng@sifive.com>
! 
! 	* config/riscv/riscv.c (riscv_emit_float_compare): Change the code gen
! 	for LTGT.
! 	(riscv_rtx_costs): Update cost model for LTGT.
! 
! 2020-02-23  Vladimir Makarov  <vmakarov@redhat.com>
! 
! 	PR rtl-optimization/93564
! 	* ira-color.c (struct update_cost_queue_elem): New member start.
! 	(queue_update_cost, get_next_update_cost): Add new arg start.
! 	(allocnos_conflict_p): New function.
! 	(update_costs_from_allocno): Add new arg conflict_cost_update_p.
! 	Add checking conflicts with allocnos_conflict_p.
! 	(update_costs_from_prefs, restore_costs_from_copies): Adjust
! 	update_costs_from_allocno calls.
! 	(update_conflict_hard_regno_costs): Add checking conflicts with
! 	allocnos_conflict_p.  Adjust calls of queue_update_cost and
! 	get_next_update_cost.
! 	(assign_hard_reg): Adjust calls of queue_update_cost.  Add
! 	debugging print.
! 	(bucket_allocno_compare_func): Restore previous version.
! 
! 2020-02-21  John David Anglin  <danglin@gcc.gnu.org>
! 
! 	* gcc/config/pa/pa.c (pa_function_value): Fix check for word and
! 	double-word size when handling aggregate return values.
! 	* gcc/config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Fix to indicate
! 	that homogeneous SFmode and DFmode aggregates are passed and returned
! 	in general registers.
! 
! 2020-02-21  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR translation/93759
! 	* opts.c (print_filtered_help): Translate help before appending
! 	messages to it rather than after that.
! 
! 2020-02-19  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR rtl-optimization/PR92989
! 	* lra-lives.c (process_bb_lives): Restore the original order
! 	of the bb liveness update.  Call make_hard_regno_dead for each
! 	register clobbered at the start of an EH receiver.
! 
! 2020-02-18  Feng Xue  <fxue@os.amperecomputing.com>
! 
! 	PR ipa/93763
! 	* ipa-cp.c (self_recursively_generated_p): Mark self-dependent value as
! 	self-recursively generated.
! 
! 2020-02-21  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	PR target/93860
! 	* config/darwin-c.c (pop_field_alignment): Adjust quoting of
! 	error string.
  
! 2020-02-21  Mihail Ionescu  <mihail.ionescu@arm.com>
  
! 	* doc/sourcebuild.texi (arm_v8_1m_mve_ok):
! 	Document new target supports option.
  
! 2020-02-21  Dennis Zhang  <dennis.zhang@arm.com>
  
! 	* config/arm/arm_neon.h (vmmlaq_s32, vmmlaq_u32, vusmmlaq_s32): New.
! 	* config/arm/arm_neon_builtins.def (smmla, ummla, usmmla): New.
! 	* config/arm/iterators.md (MATMUL): New iterator.
! 	(sup): Add UNSPEC_MATMUL_S, UNSPEC_MATMUL_U, and UNSPEC_MATMUL_US.
! 	(mmla_sfx): New attribute.
! 	* config/arm/neon.md (neon_<sup>mmlav16qi): New.
! 	* config/arm/unspecs.md (UNSPEC_MATMUL_S, UNSPEC_MATMUL_U): New.
! 	(UNSPEC_MATMUL_US): New.
  
! 2020-02-21  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
  
! 	* config/arm/arm.md: Prevent scalar shifts from being used when big
! 	endian is enabled.
  
! 2020-02-21  Jan Hubicka  <hubicka@ucw.cz>
  	    Richard Biener  <rguenther@suse.de>
  
!   	PR tree-optimization/93586
! 	* tree-ssa-alias.c (nonoverlapping_array_refs_p): Finish array walk
! 	after mismatched array refs; do not sure type size information to
! 	recover from unmatched referneces with !flag_strict_aliasing_p.
! 
! 2020-02-21  Andrew Stubbs  <ams@codesourcery.com>
! 
! 	* config/gcn/gcn-valu.md (gather_load<mode>): Rename to ...
! 	(gather_load<mode>v64si): ... this and set operand 2 to V64SI.
! 	(scatter_store<mode>): Rename to ...
! 	(scatter_store<mode>v64si): ... this and set operand 1 to V64SI.
! 	(scatter<mode>_exec): Delete. Move contents ...
! 	(mask_scatter_store<mode>): ... here, and rename that to ...
! 	(mask_gather_load<mode>v64si): ... this. Set operand 2 to V64SI.
! 	Remove mode conversion.
! 	(mask_gather_load<mode>): Rename to ...
! 	(mask_scatter_store<mode>v64si): ... this. Set operand 1 to V64SI.
! 	Remove mode conversion.
! 	* config/gcn/gcn.c (gcn_expand_scaled_offsets): Remove mode conversion.
! 
! 2020-02-21  Martin Jambor  <mjambor@suse.cz>
! 
! 	PR tree-optimization/93845
! 	* tree-sra.c (verify_sra_access_forest): Only test access size of
! 	scalar types.
! 
! 2020-02-21  Andrew Stubbs  <ams@codesourcery.com>
! 
! 	* config/gcn/gcn.c (gcn_hard_regno_mode_ok): Align VGPR pairs.
! 	* config/gcn/gcn-valu.md (addv64di3): Remove early-clobber.
! 	(addv64di3_exec): Likewise.
! 	(subv64di3): Likewise.
! 	(subv64di3_exec): Likewise.
! 	(addv64di3_zext): Likewise.
! 	(addv64di3_zext_exec): Likewise.
! 	(addv64di3_zext_dup): Likewise.
! 	(addv64di3_zext_dup_exec): Likewise.
! 	(addv64di3_zext_dup2): Likewise.
! 	(addv64di3_zext_dup2_exec): Likewise.
! 	(addv64di3_sext_dup2): Likewise.
! 	(addv64di3_sext_dup2_exec): Likewise.
! 	(<expander>v64di3): Likewise.
! 	(<expander>v64di3_exec): Likewise.
! 	(*<reduc_op>_dpp_shr_v64di): Likewise.
! 	(*plus_carry_dpp_shr_v64di): Likewise.
! 	* config/gcn/gcn.md (adddi3): Likewise.
! 	(addptrdi3): Likewise.
! 	(<expander>di3): Likewise.
! 
! 2020-02-21  Andrew Stubbs  <ams@codesourcery.com>
! 
! 	* config/gcn/gcn-valu.md (vec_seriesv64di): Use gen_vec_duplicatev64di.
! 
! 2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Add SVE
! 	support.  Use aarch64_emit_mult instead of emitting multiplication
! 	instructions directly.
! 	* config/aarch64/aarch64-sve.md (sqrt<mode>2, rsqrt<mode>2)
! 	(@aarch64_rsqrte<mode>, @aarch64_rsqrts<mode>): New expanders.
! 
! 2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/aarch64.c (aarch64_emit_mult): New function.
! 	(aarch64_emit_approx_div): Add SVE support.  Use aarch64_emit_mult
! 	instead of emitting multiplication instructions directly.
! 	* config/aarch64/iterators.md (SVE_COND_FP_BINARY_OPTAB): New iterator.
! 	* config/aarch64/aarch64-sve.md (div<mode>3, @aarch64_frecpe<mode>)
! 	(@aarch64_frecps<mode>): New expanders.
! 
! 2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/aarch64-protos.h (AARCH64_APPROX_MODE): Operate
! 	on and produce uint64_ts rather than ints.
! 	(AARCH64_APPROX_NONE, AARCH64_APPROX_ALL): Change to uint64_ts.
! 	(cpu_approx_modes): Change the fields from unsigned int to uint64_t.
! 
! 2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Don't create
! 	an unused xmsk register when handling approximate rsqrt.
! 
! 2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Fix inverted
! 	flag_finite_math_only condition.
! 
! 2020-02-20  Uroš Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/93828
! 	* config/i386/mmx.md (*vec_extractv2sf_1): Match source operand
! 	to destination operand for shufps alternative.
! 	(*vec_extractv2si_1): Ditto.
! 
! 2020-02-20  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	PR target/93658
! 	* config/rs6000/rs6000.c (rs6000_legitimate_address_p): Handle VSX
! 	vector modes.
! 
! 2020-02-20  Martin Liska  <mliska@suse.cz>
! 
! 	PR translation/93831
! 	* config/darwin.c (darwin_override_options): Change 64b to 64-bit mode.
! 
! 2020-02-20  Martin Liska  <mliska@suse.cz>
! 
! 	PR translation/93830
! 	* common/config/avr/avr-common.c: Remote trailing "|".
! 
! 2020-02-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
! 
! 	* collect2.c (maybe_run_lto_and_relink): Fix typo in
! 	comment.
  
! 2020-02-19  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/93767
! 	* tree-vect-data-refs.c (vect_compile_time_alias): Remove the
! 	access-size bias from the offset calculations for negative strides.
  
! 2020-02-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
  
! 	* collect2.c (c_file, o_file): Make const again.
! 	(ldout,lderrout, dump_ld_file): Remove.
! 	(tool_cleanup): Avoid calling not signal-safe functions.
! 	(maybe_run_lto_and_relink): Avoid possible signal handler
! 	access to unintialzed memory (lto_o_files).
! 	(main): Avoid leaking temp files in $TMPDIR.
! 	Initialize c_file/o_file with concat, which avoids exposing
! 	uninitialized memory to signal handler, which calls unlink(!).
! 	Avoid calling maybe_unlink when the main function returns,
! 	since the atexit handler is already doing this.
! 	* collect2.h (dump_ld_file, ldout, lderrout): Remove.
  
! 2020-02-19  Martin Jambor  <mjambor@suse.cz>
  
! 	PR tree-optimization/93776
! 	* tree-sra.c (create_access): Do not create zero size accesses.
! 	(get_access_for_expr): Do not search for zero sized accesses.
  
! 2020-02-19  Martin Jambor  <mjambor@suse.cz>
  
! 	PR tree-optimization/93667
! 	* tree-sra.c (scalarizable_type_p): Return false if record fields
! 	do not follow wach other.
  
! 2020-01-21  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/riscv.c (riscv_output_move) Using fmv.x.w/fmv.w.x
! 	rather than fmv.x.s/fmv.s.x.
  
! 2020-02-18  James Greenhalgh  <james.greenhalgh@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def
! 	(intrinsic_vec_smult_lo_): New.
! 	(intrinsic_vec_umult_lo_): Likewise.
! 	(vec_widen_smult_hi_): Likewise.
! 	(vec_widen_umult_hi_): Likewise.
! 	* config/aarch64/aarch64-simd.md
! 	(aarch64_intrinsic_vec_<su>mult_lo_<mode>): New.
! 	* config/aarch64/arm_neon.h (vmull_high_s8): Use intrinsics.
! 	(vmull_high_s16): Likewise.
! 	(vmull_high_s32): Likewise.
! 	(vmull_high_u8): Likewise.
! 	(vmull_high_u16): Likewise.
! 	(vmull_high_u32): Likewise.
! 	(vmull_s8): Likewise.
! 	(vmull_s16): Likewise.
! 	(vmull_s32): Likewise.
! 	(vmull_u8): Likewise.
! 	(vmull_u16): Likewise.
! 	(vmull_u32): Likewise.
  
! 2020-02-18  Martin Liska  <mliska@suse.cz>
  
! 	* value-prof.c (stream_out_histogram_value): Restore LTO PGO
! 	bootstrap by missing removal of invalid sanity check.
  
! 2020-02-18  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/92518
! 	* ipa-icf-gimple.c (func_checker::compare_gimple_assign):
! 	Always compare LHS of gimple_assign.
  
! 2020-02-18  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/93583
! 	* cgraph.c (cgraph_node::verify_node): Verify MALLOC attribute
! 	and return type of functions.
! 	* ipa-param-manipulation.c (ipa_param_adjustments::adjust_decl):
! 	Drop MALLOC attribute for void functions.
! 	* ipa-pure-const.c (funct_state_summary_t::duplicate): Drop
! 	malloc_state for a new VOID clone.
  
! 2020-02-18  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/92924
! 	* common.opt: Add -fprofile-reproducibility.
! 	* doc/invoke.texi: Document it.
! 	* value-prof.c (dump_histogram_value):
! 	Document and support behavior for counters[0]
! 	being a negative value.
! 	(get_nth_most_common_value): Handle negative
! 	counters[0] in respect to flag_profile_reproducible.
  
! 2020-02-18  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR ipa/93797
! 	* cgraph.c (verify_speculative_call): Use speculative_id instead of
! 	speculative_uid in messages.  Remove trailing whitespace from error
! 	message.  Use num_speculative_call_targets instead of
! 	num_speculative_targets in a message.
! 	(cgraph_node::verify_node): Use call_stmt instead of cal_stmt in
! 	edge messages and stmt instead of cal_stmt in reference message.
  
! 	PR tree-optimization/93780
! 	* tree-ssa.c (non_rewritable_lvalue_p): Check valid_vector_subparts_p
! 	before calling build_vector_type.
! 	(execute_update_addresses_taken): Likewise.
  
! 	PR driver/93796
! 	* params.opt (-param=ipa-max-switch-predicate-bounds=): Fix help
! 	typo, functoin -> function.
! 	* tree.c (free_lang_data_in_decl): Fix comment typo,
! 	functoin -> function.
! 	* ipa-visibility.c (cgraph_externally_visible_p): Likewise.
  
! 2020-02-17  David Malcolm  <dmalcolm@redhat.com>
  
! 	* diagnostic.c (print_any_cwe): Don't call get_cwe_url if URLs
! 	won't be printed.
! 	(print_option_information): Don't call get_option_url if URLs
! 	won't be printed.
  
! 2020-02-17  Alexandre Oliva  <oliva@adacore.com>
  
! 	* tree-emutls.c (new_emutls_decl, emutls_common_1): Complete
! 	handling of register_common-less targets.
  
! 2020-02-17  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/93760
! 	* ipa-devirt.c (odr_types_equivalent_p): Fix grammar.
  
! 2020-02-17  Martin Liska  <mliska@suse.cz>
  
! 	PR translation/93755
  	* config/rs6000/rs6000.c (rs6000_option_override_internal):
! 	Fix double quotes.
! 
! 2020-02-17  Martin Liska  <mliska@suse.cz>
! 
! 	PR other/93756
! 	* config/rx/elf.opt: Fix typo.
! 
! 2020-02-17  Richard Biener  <rguenther@suse.de>
! 
! 	PR c/86134
! 	* opts-global.c (print_ignored_options): Use inform and
! 	amend message.
! 
! 2020-02-17  Jiufu Guo  <guojiufu@linux.ibm.com>
! 
! 	PR target/93047
! 	* config/rs6000/rs6000.md (untyped_call): Add emit_clobber.
! 
! 2020-02-16  Uroš Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/93743
! 	* config/i386/i386.md (atan2xf3): Swap operands 1 and 2.
! 	(atan2<mode>3): Update operand order in the call to gen_atan2xf3.
! 
! 2020-02-15  Jason Merrill  <jason@redhat.com>
! 
! 	* doc/invoke.texi (C Dialect Options): Add -std=c++20.
! 
! 2020-02-15  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/93744
! 	* match.pd (((m1 >/</>=/<= m2) * d -> (m1 >/</>=/<= m2) ? d : 0,
! 	A - ((A - B) & -(C cmp D)) -> (C cmp D) ? B : A,
! 	A + ((B - A) & -(C cmp D)) -> (C cmp D) ? B : A): For GENERIC, make
! 	sure @2 in the first and @1 in the other patterns has no side-effects.
! 
! 2020-02-15  David Malcolm  <dmalcolm@redhat.com>
! 	    Bernd Edlinger  <bernd.edlinger@hotmail.de>
! 
! 	PR 87488
! 	PR other/93168
! 	* config.in (DIAGNOSTICS_URLS_DEFAULT): New define.
! 	* configure.ac (--with-diagnostics-urls): New configuration
! 	option, based on --with-diagnostics-color.
! 	(DIAGNOSTICS_URLS_DEFAULT): New define.
! 	* config.h: Regenerate.
! 	* configure: Regenerate.
! 	* diagnostic.c (diagnostic_urls_init): Handle -1 for
! 	DIAGNOSTICS_URLS_DEFAULT from configure-time
! 	--with-diagnostics-urls=auto-if-env by querying for a GCC_URLS
! 	and TERM_URLS environment variable.
! 	* diagnostic-url.h (diagnostic_url_format): New enum type.
! 	(diagnostic_urls_enabled_p): rename to...
! 	(determine_url_format): ... this, and change return type.
! 	* diagnostic-color.c (parse_env_vars_for_urls): New helper function.
! 	(auto_enable_urls): Disable URLs on xfce4-terminal, gnome-terminal,
! 	the linux console, and mingw.
! 	(diagnostic_urls_enabled_p): rename to...
! 	(determine_url_format): ... this, and adjust.
! 	* pretty-print.h (pretty_printer::show_urls): rename to...
! 	(pretty_printer::url_format): ... this, and change to enum.
! 	* pretty-print.c (pretty_printer::pretty_printer,
! 	pp_begin_url, pp_end_url, test_urls): Adjust.
! 	* doc/install.texi (--with-diagnostics-urls): Document the new
! 	configuration option.
! 	(--with-diagnostics-color): Document the existing interaction
! 	with GCC_COLORS better.
! 	* doc/invoke.texi (-fdiagnostics-urls): Add GCC_URLS and TERM_URLS
! 	vindex reference.  Update description of defaults based on the above.
! 	(-fdiagnostics-color): Update description of how -fdiagnostics-color
! 	interacts with GCC_COLORS.
! 
! 2020-02-14  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	PR target/93704
! 	* config/sparc/sparc.c (eligible_for_call_delay): Test HAVE_GNU_LD in
! 	conjunction with TARGET_GNU_TLS in early return.
! 
! 2020-02-14  Alexander Monakov  <amonakov@ispras.ru>
! 
! 	* rtlanal.c (rtx_cost): Handle a SET up front. Avoid division if
! 	the mode is not wider than UNITS_PER_WORD.
! 
! 2020-02-14  Martin Jambor  <mjambor@suse.cz>
! 
! 	PR tree-optimization/93516
! 	* tree-sra.c (propagate_subaccesses_from_rhs): Do not create
! 	access of the same type as the parent.
! 	(propagate_subaccesses_from_lhs): Likewise.
! 
! 2020-02-14 Hongtao Liu  <hongtao.liu@intel.com>
! 
! 	PR target/93724
! 	* config/i386/avx512vbmi2intrin.h
! 	(_mm512_shrdi_epi16, _mm512_mask_shrdi_epi16,
! 	_mm512_maskz_shrdi_epi16, _mm512_shrdi_epi32,
! 	_mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32,
! 	_m512_shrdi_epi64, _m512_mask_shrdi_epi64,
! 	_m512_maskz_shrdi_epi64, _mm512_shldi_epi16,
! 	_mm512_mask_shldi_epi16, _mm512_maskz_shldi_epi16,
! 	_mm512_shldi_epi32, _mm512_mask_shldi_epi32,
! 	_mm512_maskz_shldi_epi32, _mm512_shldi_epi64,
! 	_mm512_mask_shldi_epi64, _mm512_maskz_shldi_epi64): Fix typo
! 	of lacking a closing parenthesis.
! 	* config/i386/avx512vbmi2vlintrin.h
! 	(_mm256_shrdi_epi16, _mm256_mask_shrdi_epi16,
! 	_mm256_maskz_shrdi_epi16, _mm256_shrdi_epi32,
! 	_mm256_mask_shrdi_epi32, _mm256_maskz_shrdi_epi32,
! 	_m256_shrdi_epi64, _m256_mask_shrdi_epi64,
! 	_m256_maskz_shrdi_epi64, _mm256_shldi_epi16,
! 	_mm256_mask_shldi_epi16, _mm256_maskz_shldi_epi16,
! 	_mm256_shldi_epi32, _mm256_mask_shldi_epi32,
! 	_mm256_maskz_shldi_epi32, _mm256_shldi_epi64,
! 	_mm256_mask_shldi_epi64, _mm256_maskz_shldi_epi64,
! 	_mm_shrdi_epi16, _mm_mask_shrdi_epi16,
! 	_mm_maskz_shrdi_epi16, _mm_shrdi_epi32,
! 	_mm_mask_shrdi_epi32, _mm_maskz_shrdi_epi32,
! 	_mm_shrdi_epi64, _mm_mask_shrdi_epi64,
! 	_m_maskz_shrdi_epi64, _mm_shldi_epi16,
! 	_mm_mask_shldi_epi16, _mm_maskz_shldi_epi16,
! 	_mm_shldi_epi32, _mm_mask_shldi_epi32,
! 	_mm_maskz_shldi_epi32, _mm_shldi_epi64,
! 	_mm_mask_shldi_epi64, _mm_maskz_shldi_epi64): Ditto.
! 
! 2020-02-13  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	PR target/93656
! 	* config/i386/i386.c (ix86_trampoline_init): Skip ENDBR32 at
! 	the target function entry.
! 
! 2020-02-13  Claudiu Zissulescu  <claziss@synopsys.com>
! 
! 	* common/config/arc/arc-common.c (arc_option_optimization_table):
! 	Disable if-conversion step when optimized for size.
! 
! 2020-02-13  Claudiu Zissulescu  <claziss@synopsys.com>
! 
! 	* config/arc/arc.c (arc_conditional_register_usage): R0-R3 and
! 	R12-R15 are always in ARCOMPACT16_REGS register class.
! 	* config/arc/arc.opt (mq-class): Deprecate.
! 	* config/arc/constraint.md ("q"): Remove dependency on mq-class
! 	option.
! 	* doc/invoke.texi (mq-class): Update text.
! 	* common/config/arc/arc-common.c (arc_option_optimization_table):
! 	Update list.
! 
! 2020-02-13  Claudiu Zissulescu  <claziss@synopsys.com>
! 
! 	* config/arc/arc.c (arc_insn_cost): New function.
! 	(TARGET_INSN_COST): Define.
! 	* config/arc/arc.md (cost): New attribute.
! 	(add_n): Use arc_nonmemory_operand.
! 	(ashlsi3_insn): Likewise, also update constraints.
! 	(ashrsi3_insn): Likewise.
! 	(rotrsi3): Likewise.
! 	(add_shift): Likewise.
! 	* config/arc/predicates.md (arc_nonmemory_operand): New predicate.
! 
! 2020-02-13  Claudiu Zissulescu  <claziss@synopsys.com>
! 
! 	* config/arc/arc.md (mulsidi_600): Correctly select mlo/mhi
! 	registers.
! 	(umulsidi_600): Likewise.
! 
! 2020-02-13  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/93696
! 	* config/i386/avx512bitalgintrin.h (_mm512_mask_popcnt_epi8,
! 	_mm512_mask_popcnt_epi16, _mm256_mask_popcnt_epi8,
! 	_mm256_mask_popcnt_epi16, _mm_mask_popcnt_epi8,
! 	_mm_mask_popcnt_epi16): Rename __B argument to __A and __A to __W,
! 	pass __A to the builtin followed by __W instead of __A followed by
! 	__B.
! 	* config/i386/avx512vpopcntdqintrin.h (_mm512_mask_popcnt_epi32,
! 	_mm512_mask_popcnt_epi64): Likewise.
! 	* config/i386/avx512vpopcntdqvlintrin.h (_mm_mask_popcnt_epi32,
! 	_mm256_mask_popcnt_epi32, _mm_mask_popcnt_epi64,
! 	_mm256_mask_popcnt_epi64): Likewise.
! 
! 	PR tree-optimization/93582
! 	* fold-const.h (shift_bytes_in_array_left,
! 	shift_bytes_in_array_right): Declare.
! 	* fold-const.c (shift_bytes_in_array_left,
! 	shift_bytes_in_array_right): New function, moved from
! 	gimple-ssa-store-merging.c, no longer static.
! 	* gimple-ssa-store-merging.c (shift_bytes_in_array): Move
! 	to gimple-ssa-store-merging.c and rename to shift_bytes_in_array_left.
! 	(shift_bytes_in_array_right): Move to gimple-ssa-store-merging.c.
! 	(encode_tree_to_bitpos): Use shift_bytes_in_array_left instead of
! 	shift_bytes_in_array.
! 	(verify_shift_bytes_in_array): Rename to ...
! 	(verify_shift_bytes_in_array_left): ... this.  Use
! 	shift_bytes_in_array_left instead of shift_bytes_in_array.
! 	(store_merging_c_tests): Call verify_shift_bytes_in_array_left
! 	instead of verify_shift_bytes_in_array.
! 	* tree-ssa-sccvn.c (vn_reference_lookup_3): For native_encode_expr
! 	/ native_interpret_expr where the store covers all needed bits,
! 	punt on PDP-endian, otherwise allow all involved offsets and sizes
! 	not to be byte-aligned.
! 
! 	PR target/93673
! 	* config/i386/sse.md (k<code><mode>): Drop mode from last operand and
! 	use const_0_to_255_operand predicate instead of immediate_operand.
! 	(avx512dq_fpclass<mode><mask_scalar_merge_name>,
! 	avx512dq_vmfpclass<mode><mask_scalar_merge_name>,
! 	vgf2p8affineinvqb_<mode><mask_name>,
! 	vgf2p8affineqb_<mode><mask_name>): Drop mode from
! 	const_0_to_255_operand predicated operands.
! 
! 2020-02-12  Jeff Law  <law@redhat.com>
! 
! 	* config/h8300/h8300.md (comparison shortening peepholes): Use
! 	a mode iterator to merge the HImode and SImode peepholes.
! 
! 2020-02-12  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/93663
! 	* real.c (is_even): Make static.  Function comment fix.
! 	(is_halfway_below): Make static, don't assert R is not inf/nan,
! 	instead return false for those.  Small formatting fixes.
  
! 2020-02-12  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/93646
! 	* tree-ssa-strlen.c (handle_builtin_stxncpy): Rename...
! 	(handle_builtin_stxncpy_strncat): ...to this.  Change first argument.
! 	Issue only -Wstringop-overflow strncat, never -Wstringop-truncation.
! 	(strlen_check_and_optimize_call): Adjust callee name.
  
! 2020-02-12  Jeff Law  <law@redhat.com>
  
! 	* config/h8300/h8300.md (comparison shortening peepholes): Drop
! 	(and (xor)) variant.  Combine other two into single peephole.
  
! 2020-02-12  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	PR rtl-optimization/93565
! 	* config/aarch64/aarch64.c (aarch64_rtx_costs): Add CTZ costs.
  
! 2020-02-12  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	* config/aarch64/aarch64-simd.md
! 	(aarch64_zero_extend<GPI:mode>_reduc_plus_<VDQV_E:mode>): New pattern.
! 	* config/aarch64/aarch64.md (popcount<mode>2): Use it instead of
! 	generating separate ADDV and zero_extend patterns.
! 	* config/aarch64/iterators.md (VDQV_E): New iterator.
  
! 2020-02-12  Jeff Law  <law@redhat.com>
  
! 	* config/h8300/h8300.md (cpymemsi, movmd): Remove dead patterns,
! 	expanders, splits, etc.
! 	(movmd_internal_<mode>, movmd splitter, movstr, movsd): Likewise.
! 	(stpcpy_internal_<mode>, stpcpy splitter): Likewise.
! 	(peepholes to convert QI/HI mode pushes to SI mode pushes): Likewise.
! 	* config/h8300/h8300.c (h8300_swap_into_er6): Remove unused function.
! 	(h8300_swap_out_of_er6, h8sx_emit_movmd): Likewise
! 	* config/h8300/h8300-protos.h (h8300_swap_into_er6): Remove unused
! 	function prototype.
! 	(h8300_swap_out_of_er6, h8sx_emit_movmd): Likewise.
  
! 2020-02-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/93670
! 	* config/i386/sse.md (VI48F_256_DQ): New mode iterator.
! 	(avx512vl_vextractf128<mode>): Use it instead of VI48F_256.  Remove
! 	TARGET_AVX512DQ from condition.
! 	(vec_extract_lo_<mode><mask_name>): Use <mask_avx512dq_condition>
! 	instead of <mask_mode512bit_condition> in condition.  If
! 	TARGET_AVX512DQ is false, emit vextract*64x4 instead of
! 	vextract*32x8.
! 	(vec_extract_lo_<mode><mask_name>): Drop <mask_avx512dq_condition>
! 	from condition.
  
! 2020-02-12  Kewen Lin  <linkw@gcc.gnu.org>
  
! 	PR target/91052
! 	* ira.c (combine_and_move_insns): Skip multiple_sets def_insn.
  
! 2020-02-12  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/rs6000.c (rs6000_debug_print_mode): Don't use sizeof
! 	where strlen is more legible.
! 	(rs6000_builtin_vectorized_libmass): Ditto.
! 	(rs6000_print_options_internal): Ditto.
  
! 2020-02-11  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/93683
! 	* tree-ssa-alias.c (stmt_kills_ref_p): Avoid using LHS when not set.
  
! 2020-02-11  Michael Meissner  <meissner@linux.ibm.com>
  
! 	* config/rs6000/predicates.md (cint34_operand): Rename the
! 	-mprefixed-addr option to be -mprefixed.
! 	* config/rs6000/rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): Rename
! 	the -mprefixed-addr option to be -mprefixed.
! 	(OTHER_FUTURE_MASKS): Likewise.
! 	(POWERPC_MASKS): Likewise.
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Rename
! 	the -mprefixed-addr option to be -mprefixed.  Change error
! 	messages to refer to -mprefixed.
! 	(num_insns_constant_gpr): Rename the -mprefixed-addr option to be
! 	-mprefixed.
! 	(rs6000_legitimate_offset_address_p): Likewise.
! 	(rs6000_mode_dependent_address): Likewise.
! 	(rs6000_opt_masks): Change the spelling of "-mprefixed-addr" to be
! 	"-mprefixed" for target attributes and pragmas.
! 	(address_to_insn_form): Rename the -mprefixed-addr option to be
! 	-mprefixed.
! 	(rs6000_adjust_insn_length): Likewise.
! 	* config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Rename the
! 	-mprefixed-addr option to be -mprefixed.
! 	(ASM_OUTPUT_OPCODE): Likewise.
! 	* config/rs6000/rs6000.md (prefixed insn attribute): Rename the
! 	-mprefixed-addr option to be -mprefixed.
! 	* config/rs6000/rs6000.opt (-mprefixed): Rename the
! 	-mprefixed-addr option to be prefixed.  Change the option from
! 	being undocumented to being documented.
! 	* doc/invoke.texi (RS/6000 and PowerPC Options): Document the
! 	-mprefixed option.  Update the -mpcrel documentation to mention
! 	-mprefixed.
  
! 2020-02-11  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* ira-conflicts.c (print_hard_reg_set): Correct output for sets
! 	including FIRST_PSEUDO_REGISTER - 1.
! 	* ira-color.c (print_hard_reg_set): Ditto.
  
! 2020-02-11  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
  
! 	* config/arm/arm-builtins.c (enum arm_type_qualifiers): 
! 	(USTERNOP_QUALIFIERS): New define.
! 	(USMAC_LANE_QUADTUP_QUALIFIERS): New define.
! 	(SUMAC_LANE_QUADTUP_QUALIFIERS): New define.
! 	(arm_expand_builtin_args): Add case ARG_BUILTIN_LANE_QUADTUP_INDEX.
! 	(arm_expand_builtin_1): Add qualifier_lane_quadtup_index.
! 	* config/arm/arm_neon.h (vusdot_s32): New.
! 	(vusdot_lane_s32): New.
! 	(vusdotq_lane_s32): New.
! 	(vsudot_lane_s32): New.
! 	(vsudotq_lane_s32): New.
! 	* config/arm/arm_neon_builtins.def (usdot, usdot_lane,sudot_lane): New.
! 	* config/arm/iterators.md (DOTPROD_I8MM): New.
! 	(sup, opsuffix): Add <us/su>.
! 	* config/arm/neon.md (neon_usdot, <us/su>dot_lane: New.
! 	* config/arm/unspecs.md (UNSPEC_DOT_US, UNSPEC_DOT_SU): New.
  
! 2020-02-11  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/93661
! 	PR tree-optimization/93662
! 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Properly guard
! 	tree_to_poly_int64.
! 	* tree-sra.c (get_access_for_expr): Likewise.
  
! 2020-02-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/93637
! 	* config/i386/sse.md (VI_256_AVX2): New mode iterator.
! 	(vcond_mask_<mode><sseintvecmodelower>): Use it instead of VI_256.
! 	Change condition from TARGET_AVX2 to TARGET_AVX.
  
! 2020-02-10  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	PR other/93641
! 	* config/darwin-c.c (darwin_cfstring_ref_p): Fix up last
! 	argument of strncmp.
  
! 2020-02-10  Hans-Peter Nilsson  <hp@axis.com>
  
! 	Try to generate zero-based comparisons.
! 	* config/cris/cris.c (cris_reduce_compare): New function.
! 	* config/cris/cris-protos.h  (cris_reduce_compare): Add prototype.
! 	* config/cris/cris.md ("cbranch<mode>4", "cbranchdi4", "cstoredi4")
! 	(cstore<mode>4"): Apply cris_reduce_compare in expanders.
  
! 2020-02-10  Richard Earnshaw  <rearnsha@arm.com>
  
! 	PR target/91913
! 	* config/arm/arm.md (movsi_compare0): Allow SP as a source register
! 	in Thumb state and also as a destination in Arm state.  Add T16
! 	variants.
  
! 2020-02-10  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* md.texi (Define Subst): Match closing paren in example.
  
! 2020-02-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/58218
! 	PR other/93641
! 	* config/i386/i386.c (x86_64_elf_section_type_flags): Fix up last
! 	arguments of strncmp.
  
! 2020-02-10  Feng Xue  <fxue@os.amperecomputing.com>
  
! 	PR ipa/93203
! 	* ipa-cp.c (ipcp_lattice::add_value): Add source with same call edge
! 	but different source value.
! 	(adjust_callers_for_value_intersection): New function.
! 	(gather_edges_for_value): Adjust order of callers to let a
! 	non-self-recursive caller be the first element.
! 	(self_recursive_pass_through_p): Add a new parameter "simple", and
! 	check generalized self-recursive pass-through jump function.
! 	(self_recursive_agg_pass_through_p): Likewise.
! 	(find_more_scalar_values_for_callers_subset): Compute value from
! 	pass-through jump function for self-recursive.
! 	(intersect_with_plats): Cleanup previous implementation code for value
! 	itersection with self-recursive call edge.
! 	(intersect_with_agg_replacements): Likewise.
! 	(intersect_aggregates_with_edge): Deduce value from pass-through jump
! 	function for self-recursive call edge.  Cleanup previous implementation
! 	code for value intersection with self-recursive call edge.
! 	(decide_whether_version_node): Remove dead callers and adjust order
! 	to let a non-self-recursive caller be the first element.
  
! 2020-02-09  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* recog.c: Move pass_split_before_sched2 code in front of
! 	pass_split_before_regstack.
! 	(pass_data_split_before_sched2): Rename pass to split3 from split4.
! 	(pass_data_split_before_regstack): Rename pass to split4 from split3.
! 	(rest_of_handle_split_before_sched2): Remove.
! 	(pass_split_before_sched2::execute): Unconditionally call
! 	split_all_insns.
! 	(enable_split_before_sched2): New function.
! 	(pass_split_before_sched2::gate): Use enable_split_before_sched2.
! 	(pass_split_before_regstack::gate): Ditto.
! 	* config/nds32/nds32.c (nds32_split_double_word_load_store_p):
! 	Update name check for renamed split4 pass.
! 	* config/sh/sh.c (register_sh_passes): Update pass insertion
! 	point for renamed split4 pass.
  
! 2020-02-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	* gimplify.c (gimplify_adjust_omp_clauses_1): Promote
! 	DECL_IN_CONSTANT_POOL variables into "omp declare target" to avoid
! 	copying them around between host and target.
  
! 2020-02-08  Andrew Pinski  <apinski@marvell.com>
  
! 	PR target/91927
! 	* config/aarch64/aarch64-simd.md (movmisalign<mode>): Check
! 	STRICT_ALIGNMENT also.
  
! 2020-02-08  Jim Wilson  <jimw@sifive.com>
  
! 	PR target/93532
! 	* config/riscv/riscv.h (HARD_REGNO_CALLER_SAVE_MODE): Define.
  
! 2020-02-08  Uroš Bizjak  <ubizjak@gmail.com>
! 	    Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/65782
! 	* config/i386/i386.h (CALL_USED_REGISTERS): Make
! 	xmm16-xmm31 call-used even in 64-bit ms-abi.
  
! 2020-02-07  Dennis Zhang  <dennis.zhang@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (simd_smmla): New entry.
! 	(simd_ummla, simd_usmmla): Likewise.
! 	* config/aarch64/aarch64-simd.md (aarch64_simd_<sur>mmlav16qi): New.
! 	* config/aarch64/arm_neon.h (vmmlaq_s32, vmmlaq_u32): New.
! 	(vusmmlaq_s32): New.
  
! 2020-02-07  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/93519
! 	* tree-inline.c (fold_marked_statements): Do a PRE walk,
! 	skipping unreachable regions.
! 	(optimize_inline_calls): Skip folding stmts when we didn't
! 	inline.
  
! 2020-02-07  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/85667
! 	* config/i386/i386.c (function_arg_ms_64): Add a type argument.
! 	Don't return aggregates with only SFmode and DFmode in SSE
! 	register.
! 	(ix86_function_arg): Pass arg.type to function_arg_ms_64.
  
! 2020-02-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/93122
! 	* config/rs6000/rs6000-logue.c
! 	(rs6000_emit_probe_stack_range_stack_clash): Always use gen_add3_insn,
! 	if it fails, move rs into end_addr and retry.  Add
! 	REG_FRAME_RELATED_EXPR note whenever it returns more than one insn or
! 	the insn pattern doesn't describe well what exactly happens to
! 	dwarf2cfi.c.
  
! 	PR target/93594
! 	* config/i386/predicates.md (avx_identity_operand): Remove.
! 	* config/i386/sse.md (*avx_vec_concat<mode>_1): Remove.
! 	(avx_<castmode><avxsizesuffix>_<castmode>,
! 	avx512f_<castmode><avxsizesuffix>_256<castmode>): Change patterns to
! 	a VEC_CONCAT of the operand and UNSPEC_CAST.
! 	(avx512f_<castmode><avxsizesuffix>_<castmode>): Change pattern to
! 	a VEC_CONCAT of VEC_CONCAT of the operand and UNSPEC_CAST with
! 	UNSPEC_CAST.
  
! 	PR target/93611
! 	* config/i386/i386.c (ix86_lea_outperforms): Make sure to clear
! 	recog_data.insn if distance_non_agu_define changed it.
  
! 2020-02-06  Michael Meissner  <meissner@linux.ibm.com>
  
! 	PR target/93569
! 	* config/rs6000/rs6000.c (reg_to_non_prefixed): Before ISA 3.0
! 	we only had X-FORM (reg+reg) addressing for vectors.  Also before
! 	ISA 3.0, we only had X-FORM addressing for scalars in the
! 	traditional Altivec registers.
  
! 2020-02-06  <zhongyunde@huawei.com>
!   	    Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/93561
! 	* lra-assigns.c (spill_for): Check that tested hard regno is not out of
! 	hard register range.
  
! 2020-02-06  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.md (aarch64_movk<mode>): Add a type
! 	attribute.
  
! 2020-02-06  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/rs6000.c (rs6000_emit_set_long_const): Handle the case
! 	where the low and the high 32 bits are equal to each other specially,
! 	with an rldimi instruction.
  
! 2020-02-06  Mihail Ionescu  <mihail.ionescu@arm.com>
  
! 	* config/arm/arm-cpus.in: Set profile M for armv8.1-m.main.
  
! 2020-02-06  Mihail Ionescu  <mihail.ionescu@arm.com>
  
! 	* config/arm/arm-tables.opt: Regenerate.
  
! 2020-02-06  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/87763
! 	* config/aarch64/aarch64-protos.h (aarch64_movk_shift): Declare.
! 	* config/aarch64/aarch64.c (aarch64_movk_shift): New function.
! 	* config/aarch64/aarch64.md (aarch64_movk<mode>): New pattern.
  
! 2020-02-06  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/87763
! 	* config/aarch64/aarch64.md (*ashiftsi_extvdi_bfiz): New pattern.
  
! 2020-02-06  Delia Burduv  <delia.burduv@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def
! 	(bfmlaq): New built-in function.
! 	(bfmlalb): New built-in function.
! 	(bfmlalt): New built-in function.
! 	(bfmlalb_lane): New built-in function.
! 	(bfmlalt_lane): New built-in function.
! 	* config/aarch64/aarch64-simd.md
! 	(aarch64_bfmmlaqv4sf): New pattern.
! 	(aarch64_bfmlal<bt>v4sf): New pattern.
! 	(aarch64_bfmlal<bt>_lane<q>v4sf): New pattern.
! 	* config/aarch64/arm_neon.h (vbfmmlaq_f32): New intrinsic.
! 	(vbfmlalbq_f32): New intrinsic.
! 	(vbfmlaltq_f32): New intrinsic.
! 	(vbfmlalbq_lane_f32): New intrinsic.
! 	(vbfmlaltq_lane_f32): New intrinsic.
! 	(vbfmlalbq_laneq_f32): New intrinsic.
! 	(vbfmlaltq_laneq_f32): New intrinsic.
! 	* config/aarch64/iterators.md (BF_MLA): New int iterator.
! 	(bt): New int attribute.
  
! 2020-02-06  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.md (*pushtf): Emit "#" instead of
! 	calling gcc_unreachable in insn output.
! 	(*pushxf): Ditto.
! 	(*pushdf): Ditto.
! 	(*pushsf_rex64): Ditto for alternatives other than 1.
! 	(*pushsf): Ditto for alternatives other than 1.
  
! 2020-02-06  Martin Liska  <mliska@suse.cz>
  
! 	PR gcov-profile/91971
! 	PR gcov-profile/93466
! 	* coverage.c (coverage_init): Revert mangling of
! 	path into filename.  It can lead to huge filename length.
! 	Creation of subfolders seem more natural.
  
! 2020-02-06  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
  
! 	PR target/93300
! 	* config/arm/arm.c (arm_block_arith_comp_libfuncs_for_mode): New.
! 	(arm_init_libfuncs): Add BFmode support to block spurious BF libfuncs.
! 	Use arm_block_arith_comp_libfuncs_for_mode for HFmode.
  
! 2020-02-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/93594
! 	* config/i386/predicates.md (avx_identity_operand): New predicate.
! 	* config/i386/sse.md (*avx_vec_concat<mode>_1): New
! 	define_insn_and_split.
  
! 	PR libgomp/93515
! 	* omp-low.c (use_pointer_for_field): For nested constructs, also
! 	look for map clauses on target construct.
! 	(scan_omp_1_stmt) <case GIMPLE_OMP_TARGET>: Bump temporarily
! 	taskreg_nesting_level.
  
! 	PR libgomp/93515
! 	* gimplify.c (gimplify_scan_omp_clauses) <do_notice>: If adding
! 	shared clause, call omp_notice_variable on outer context if any.
  
! 2020-02-05  Jason Merrill  <jason@redhat.com>
  
! 	PR c++/92003
! 	* symtab.c (symtab_node::nonzero_address): A DECL_COMDAT decl has
! 	non-zero address even if weak and not yet defined.
  
! 2020-02-05  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/92765
! 	* gimple-fold.c (get_range_strlen_tree): Handle MEM_REF and PARM_DECL.
! 	* tree-ssa-strlen.c (compute_string_length): Remove.
! 	(determine_min_objsize): Remove.
! 	(get_len_or_size): Add an argument.  Call get_range_strlen_dynamic.
! 	Avoid using type size as the upper bound on string length.
! 	(handle_builtin_string_cmp): Add an argument.  Adjust.
! 	(strlen_check_and_optimize_call): Pass additional argument to
! 	handle_builtin_string_cmp.
  
! 2020-02-05  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.md (*pushdi2_rex64 peephole2): Remove.
! 	(*pushdi2_rex64 peephole2): Unconditionally split after
! 	epilogue_completed.
! 	(*ashl<mode>3_doubleword): Ditto.
! 	(*<shift_insn><mode>3_doubleword): Ditto.
  
! 2020-02-05  Michael Meissner  <meissner@linux.ibm.com>
  
! 	PR target/93568
! 	* config/rs6000/rs6000.c (get_vector_offset): Fix
  
! 2020-02-05  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/t-gcn-hsa (MULTILIB_OPTIONS): Use / not space.
  
! 2020-02-05  David Malcolm  <dmalcolm@redhat.com>
  
! 	* doc/analyzer.texi
! 	(Special Functions for Debugging the Analyzer): Update description
! 	of __analyzer_dump_exploded_nodes.
  
! 2020-02-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/92190
! 	* config/i386/i386-features.c (ix86_add_reg_usage_to_vzeroupper): Only
! 	include sets and not clobbers in the vzeroupper pattern.
! 	* config/i386/sse.md (*avx_vzeroupper): Require in insn condition that
! 	the parallel has 17 (64-bit) or 9 (32-bit) elts.
! 	(*avx_vzeroupper_1): New define_insn_and_split.
  
! 	PR target/92190
! 	* recog.c (pass_split_after_reload::gate): For STACK_REGS targets,
! 	don't run when !optimize.
! 	(pass_split_before_regstack::gate): For STACK_REGS targets, run even
! 	when !optimize.
  
! 2020-02-05  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/90648
! 	* genmatch.c (dt_node::gen_kids_1): Emit number of argument
! 	checks before matching calls.
  
! 2020-02-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	* tree-ssa-alias.c (aliasing_matching_component_refs_p): Fix up
! 	function comment typo.
  
! 	PR middle-end/93555
! 	* omp-simd-clone.c (expand_simd_clones): If simd_clone_mangle or
! 	simd_clone_create failed when i == 0, adjust clone->nargs by
! 	clone->inbranch.
  
! 2020-02-05  Martin Liska  <mliska@suse.cz>
  
! 	PR c++/92717
! 	* doc/invoke.texi: Document that one should
! 	not combine ASLR and -fpch.
  
! 2020-02-04  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/93538
! 	* match.pd (addr EQ/NE ptr): Amend to handle &ptr->x EQ/NE ptr.
  
! 2020-02-04  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/91123
! 	* tree-ssa-sccvn.c (vn_walk_cb_data::finish): New method.
! 	(vn_walk_cb_data::last_vuse): New member.
! 	(vn_walk_cb_data::saved_operands): Likewsie.
! 	(vn_walk_cb_data::~vn_walk_cb_data): Release saved_operands.
! 	(vn_walk_cb_data::push_partial_def): Use finish.
! 	(vn_reference_lookup_2): Update last_vuse and use finish if
! 	we've saved operands.
! 	(vn_reference_lookup_3): Use finish and update calls to
! 	push_partial_defs everywhere.  When translating through
! 	memcpy or aggregate copies save off operands and alias-set.
! 	(eliminate_dom_walker::eliminate_stmt): Restore VN_WALKREWRITE
! 	operation for redundant store removal.
  
! 2020-02-04  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/92819
! 	* tree-ssa-forwprop.c (simplify_vector_constructor): Avoid
! 	generating more stmts than before.
  
! 2020-02-04  Martin Liska  <mliska@suse.cz>
  
! 	* config/arm/arm.c (arm_gen_far_branch): Move the function
! 	outside of selftests.
  
! 2020-02-03  Michael Meissner  <meissner@linux.ibm.com>
  
! 	* config/rs6000/rs6000.c (adjust_vec_address_pcrel): New helper
! 	function to adjust PC-relative vector addresses.
! 	(rs6000_adjust_vec_address): Call adjust_vec_address_pcrel to
! 	handle vectors with PC-relative addresses.
  
! 2020-02-03  Michael Meissner  <meissner@linux.ibm.com>
  
! 	* config/rs6000/rs6000.c (reg_to_non_prefixed): Add forward
! 	reference.
! 	(hard_reg_and_mode_to_addr_mask): Delete.
! 	(rs6000_adjust_vec_address): If the original vector address
! 	was REG+REG or REG+OFFSET and the element is not zero, do the add
! 	of the elements in the original address before adding the offset
! 	for the vector element.  Use address_to_insn_form to validate the
! 	address using the register being loaded, rather than guessing
! 	whether the address is a DS-FORM or DQ-FORM address.
  
! 2020-02-03  Michael Meissner  <meissner@linux.ibm.com>
  
! 	* config/rs6000/rs6000.c (get_vector_offset): New helper function
! 	to calculate the offset in memory from the start of a vector of a
! 	particular element.  Add code to keep the element number in
! 	bounds if the element number is variable.
! 	(rs6000_adjust_vec_address): Move calculation of offset of the
! 	vector element to get_vector_offset.
! 	(rs6000_split_vec_extract_var): Do not do the initial AND of
! 	element here, move the code to get_vector_offset.
  
! 2020-02-03  Michael Meissner  <meissner@linux.ibm.com>
  
! 	* config/rs6000/rs6000.c (rs6000_adjust_vec_address): Add some
! 	gcc_asserts.
  
! 2020-02-03  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/constraints.md: Improve documentation.
  
! 2020-02-03  Richard Earnshaw  <rearnsha@arm.com>
  
! 	PR target/93548
! 	* config/arm/t-arm: ($(srcdir)/config/arm/arm-tune.md)
! 	($(srcdir)/config/arm/arm-tables.opt): Use move-if-change.
  
! 2020-02-03  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config.gcc: Remove "carrizo" support.
! 	* config/gcn/gcn-opts.h (processor_type): Likewise.
! 	* config/gcn/gcn.c (gcn_omp_device_kind_arch_isa): Likewise.
! 	* config/gcn/gcn.opt (gpu_type): Likewise.
! 	* config/gcn/t-omp-device: Likewise.
  
! 2020-02-03  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
  
! 	PR target/91816
! 	* config/arm/arm-protos.h: New function arm_gen_far_branch prototype.
! 	* config/arm/arm.c (arm_gen_far_branch): New function
! 	arm_gen_far_branch.
! 	* config/arm/arm.md: Update b<cond> for Thumb2 range checks.
  
! 2020-02-03  Julian Brown  <julian@codesourcery.com>
! 	    Tobias Burnus  <tobias@codesourcery.com>
  
! 	* doc/invoke.texi: Update mention of OpenACC version to 2.6.
  
! 2020-02-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/93533
! 	* config/s390/s390.md (popcounthi2_z196): Fix up expander to emit
! 	valid RTL to sum up the lowest and second lowest bytes of the popcnt
! 	result.
  
! 2020-02-02  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/91333
! 	* ira-color.c (struct allocno_color_data): Add member
! 	hard_reg_prefs.
! 	(init_allocno_threads): Set the member up.
! 	(bucket_allocno_compare_func): Add compare hard reg
! 	prefs.
  
! 2020-01-31  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	nios2: Support for GOT-relative DW_EH_PE_datarel encoding.
  
! 	* configure.ac [nios2-*-*]: Check HAVE_AS_NIOS2_GOTOFF_RELOCATION.
! 	* config.in: Regenerated.
! 	* configure: Regenerated.
! 	* config/nios2/nios2.h (ASM_PREFERRED_EH_DATA_FORMAT): Fix handling
! 	for PIC when HAVE_AS_NIOS2_GOTOFF_RELOCATION.
! 	(ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): New.
  
! 2020-02-01  Andrew Burgess  <andrew.burgess@embecosm.com>
  
! 	* configure: Regenerate.
  
! 2020-01-31  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/91333
! 	* ira-color.c (bucket_allocno_compare_func): Move conflict hard
! 	reg preferences comparison up.
  
! 2020-01-31  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.h (TARGET_SVE_BF16): New macro.
! 	* config/aarch64/aarch64-sve-builtins-sve2.h (svcvtnt): Move to
! 	aarch64-sve-builtins-base.h.
! 	* config/aarch64/aarch64-sve-builtins-sve2.cc (svcvtnt): Move to
! 	aarch64-sve-builtins-base.cc.
! 	* config/aarch64/aarch64-sve-builtins-base.h (svbfdot, svbfdot_lane)
! 	(svbfmlalb, svbfmlalb_lane, svbfmlalt, svbfmlalt_lane, svbfmmla)
! 	(svcvtnt): Declare.
! 	* config/aarch64/aarch64-sve-builtins-base.cc (svbfdot, svbfdot_lane)
! 	(svbfmlalb, svbfmlalb_lane, svbfmlalt, svbfmlalt_lane, svbfmmla)
! 	(svcvtnt): New functions.
! 	* config/aarch64/aarch64-sve-builtins-base.def (svbfdot, svbfdot_lane)
! 	(svbfmlalb, svbfmlalb_lane, svbfmlalt, svbfmlalt_lane, svbfmmla)
! 	(svcvtnt): New functions.
! 	(svcvt): Add a form that converts f32 to bf16.
! 	* config/aarch64/aarch64-sve-builtins-shapes.h (ternary_bfloat)
! 	(ternary_bfloat_lane, ternary_bfloat_lanex2, ternary_bfloat_opt_n):
! 	Declare.
! 	* config/aarch64/aarch64-sve-builtins-shapes.cc (parse_element_type):
! 	Treat B as bfloat16_t.
! 	(ternary_bfloat_lane_base): New class.
! 	(ternary_bfloat_def): Likewise.
! 	(ternary_bfloat): New shape.
! 	(ternary_bfloat_lane_def): New class.
! 	(ternary_bfloat_lane): New shape.
! 	(ternary_bfloat_lanex2_def): New class.
! 	(ternary_bfloat_lanex2): New shape.
! 	(ternary_bfloat_opt_n_def): New class.
! 	(ternary_bfloat_opt_n): New shape.
! 	* config/aarch64/aarch64-sve-builtins.cc (TYPES_cvt_bfloat): New macro.
! 	* config/aarch64/aarch64-sve.md (@aarch64_sve_<sve_fp_op>vnx4sf)
! 	(@aarch64_sve_<sve_fp_op>_lanevnx4sf): New patterns.
! 	(@aarch64_sve_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>)
! 	(@cond_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>): Likewise.
! 	(*cond_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>): Likewise.
! 	(@aarch64_sve_cvtnt<VNx8BF_ONLY:mode>): Likewise.
! 	* config/aarch64/aarch64-sve2.md (@aarch64_sve2_cvtnt<mode>): Key
! 	the pattern off the narrow mode instead of the wider one.
! 	* config/aarch64/iterators.md (VNx8BF_ONLY): New mode iterator.
! 	(UNSPEC_BFMLALB, UNSPEC_BFMLALT, UNSPEC_BFMMLA): New unspecs.
! 	(sve_fp_op): Handle them.
! 	(SVE_BFLOAT_TERNARY_LONG): New int itertor.
! 	(SVE_BFLOAT_TERNARY_LONG_LANE): Likewise.
  
! 2020-01-31  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/arm_sve.h: Include arm_bf16.h.
! 	* config/aarch64/aarch64-modes.def (BF): Move definition before
! 	VECTOR_MODES.  Remove separate VECTOR_MODES for V4BF and V8BF.
! 	(SVE_MODES): Handle BF modes.
! 	* config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
! 	BF modes.
! 	(aarch64_full_sve_mode): Likewise.
! 	* config/aarch64/iterators.md (SVE_STRUCT): Add VNx16BF, VNx24BF
! 	and VNx32BF.
! 	(SVE_FULL, SVE_FULL_HSD, SVE_ALL): Add VNx8BF.
! 	(Vetype, Vesize, Vctype, VEL, Vel, VEL_INT, V128, v128, vwcore)
! 	(V_INT_EQUIV, v_int_equiv, V_FP_EQUIV, v_fp_equiv, vector_count)
! 	(insn_length, VSINGLE, vsingle, VPRED, vpred, VDOUBLE): Handle the
! 	new SVE BF modes.
! 	* config/aarch64/aarch64-sve-builtins.h (TYPE_bfloat): New
! 	type_class_index.
! 	* config/aarch64/aarch64-sve-builtins.cc (TYPES_all_arith): New macro.
! 	(TYPES_all_data): Add bf16.
! 	(TYPES_reinterpret1, TYPES_reinterpret): Likewise.
! 	(register_tuple_type): Increase buffer size.
! 	* config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): New type.
! 	(bf16): New type suffix.
! 	* config/aarch64/aarch64-sve-builtins-base.def (svabd, svadd, svaddv)
! 	(svcmpeq, svcmpge, svcmpgt, svcmple, svcmplt, svcmpne, svmad, svmax)
! 	(svmaxv, svmin, svminv, svmla, svmls, svmsb, svmul, svsub, svsubr):
! 	Change type from all_data to all_arith.
! 	* config/aarch64/aarch64-sve-builtins-sve2.def (svaddp, svmaxp)
! 	(svminp): Likewise.
  
! 2020-01-31  Dennis Zhang  <dennis.zhang@arm.com>
! 	    Matthew Malcomson  <matthew.malcomson@arm.com>
! 	    Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* doc/invoke.texi (f32mm): Document new AArch64 -march= extension.
! 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
! 	__ARM_FEATURE_SVE_MATMUL_INT8, __ARM_FEATURE_SVE_MATMUL_FP32 and
! 	__ARM_FEATURE_SVE_MATMUL_FP64 as appropriate.  Don't define
! 	__ARM_FEATURE_MATMUL_FP64.
! 	* config/aarch64/aarch64-option-extensions.def (fp, simd, fp16)
! 	(sve): Add AARCH64_FL_F32MM to the list of extensions that should
! 	be disabled at the same time.
! 	(f32mm): New extension.
! 	* config/aarch64/aarch64.h (AARCH64_FL_F32MM): New macro.
! 	(AARCH64_FL_F64MM): Bump to the next bit up.
! 	(AARCH64_ISA_F32MM, TARGET_SVE_I8MM, TARGET_F32MM, TARGET_SVE_F32MM)
! 	(TARGET_SVE_F64MM): New macros.
! 	* config/aarch64/iterators.md (SVE_MATMULF): New mode iterator.
! 	(UNSPEC_FMMLA, UNSPEC_SMATMUL, UNSPEC_UMATMUL, UNSPEC_USMATMUL)
! 	(UNSPEC_TRN1Q, UNSPEC_TRN2Q, UNSPEC_UZP1Q, UNSPEC_UZP2Q, UNSPEC_ZIP1Q)
! 	(UNSPEC_ZIP2Q): New unspeccs.
! 	(DOTPROD_US_ONLY, PERMUTEQ, MATMUL, FMMLA): New int iterators.
! 	(optab, sur, perm_insn): Handle the new unspecs.
! 	(sve_fp_op): Handle UNSPEC_FMMLA.  Resort.
! 	* config/aarch64/aarch64-sve.md (@aarch64_sve_ld1ro<mode>): Use
! 	TARGET_SVE_F64MM instead of separate tests.
! 	(@aarch64_<DOTPROD_US_ONLY:sur>dot_prod<vsi2qi>): New pattern.
! 	(@aarch64_<DOTPROD_US_ONLY:sur>dot_prod_lane<vsi2qi>): Likewise.
! 	(@aarch64_sve_add_<MATMUL:optab><vsi2qi>): Likewise.
! 	(@aarch64_sve_<FMMLA:sve_fp_op><mode>): Likewise.
! 	(@aarch64_sve_<PERMUTEQ:optab><mode>): Likewise.
! 	* config/aarch64/aarch64-sve-builtins.cc (TYPES_s_float): New macro.
! 	(TYPES_s_float_hsd_integer, TYPES_s_float_sd_integer): Use it.
! 	(TYPES_s_signed): New macro.
! 	(TYPES_s_integer): Use it.
! 	(TYPES_d_float): New macro.
! 	(TYPES_d_data): Use it.
! 	* config/aarch64/aarch64-sve-builtins-shapes.h (mmla): Declare.
! 	(ternary_intq_uintq_lane, ternary_intq_uintq_opt_n, ternary_uintq_intq)
! 	(ternary_uintq_intq_lane, ternary_uintq_intq_opt_n): Likewise.
! 	* config/aarch64/aarch64-sve-builtins-shapes.cc (mmla_def): New class.
! 	(svmmla): New shape.
! 	(ternary_resize2_opt_n_base): Add TYPE_CLASS2 and TYPE_CLASS3
! 	template parameters.
! 	(ternary_resize2_lane_base): Likewise.
! 	(ternary_resize2_base): New class.
! 	(ternary_qq_lane_base): Likewise.
! 	(ternary_intq_uintq_lane_def): Likewise.
! 	(ternary_intq_uintq_lane): New shape.
! 	(ternary_intq_uintq_opt_n_def): New class
! 	(ternary_intq_uintq_opt_n): New shape.
! 	(ternary_qq_lane_def): Inherit from ternary_qq_lane_base.
! 	(ternary_uintq_intq_def): New class.
! 	(ternary_uintq_intq): New shape.
! 	(ternary_uintq_intq_lane_def): New class.
! 	(ternary_uintq_intq_lane): New shape.
! 	(ternary_uintq_intq_opt_n_def): New class.
! 	(ternary_uintq_intq_opt_n): New shape.
! 	* config/aarch64/aarch64-sve-builtins-base.h (svmmla, svsudot)
! 	(svsudot_lane, svtrn1q, svtrn2q, svusdot, svusdot_lane, svusmmla)
! 	(svuzp1q, svuzp2q, svzip1q, svzip2q): Declare.
! 	* config/aarch64/aarch64-sve-builtins-base.cc (svdot_lane_impl):
! 	Generalize to...
! 	(svdotprod_lane_impl): ...this new class.
! 	(svmmla_impl, svusdot_impl): New classes.
! 	(svdot_lane): Update to use svdotprod_lane_impl.
! 	(svmmla, svsudot, svsudot_lane, svtrn1q, svtrn2q, svusdot)
! 	(svusdot_lane, svusmmla, svuzp1q, svuzp2q, svzip1q, svzip2q): New
! 	functions.
! 	* config/aarch64/aarch64-sve-builtins-base.def (svmmla): New base
! 	function, with no types defined.
! 	(svmmla, svusmmla, svsudot, svsudot_lane, svusdot, svusdot_lane): New
! 	AARCH64_FL_I8MM functions.
! 	(svmmla): New AARCH64_FL_F32MM function.
! 	(svld1ro): Depend only on AARCH64_FL_F64MM, not on AARCH64_FL_V8_6.
! 	(svmmla, svtrn1q, svtrn2q, svuz1q, svuz2q, svzip1q, svzip2q): New
! 	AARCH64_FL_F64MM function.
! 	(REQUIRED_EXTENSIONS):
  
! 2020-01-31  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn-valu.md (addv64di3_exec): Allow one '0' in each
! 	alternative only.
  
! 2020-01-31  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.md (*movoi_internal_avx): Do not check for
! 	TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL.  Remove MODE_V8SF handling.
! 	(*movti_internal): Do not check for
! 	TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL.
! 	(*movtf_internal): Move check for TARGET_SSE2 and size optimization
! 	just after check for TARGET_AVX.
! 	(*movdf_internal): Ditto.
! 	* config/i386/mmx.md (*mov<mode>_internal): Do not check for
! 	TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL.
! 	* config/i386/sse.md (mov<mode>_internal): Only check
! 	TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL with V2DFmode.  Move check
! 	for TARGET_SSE2 and size optimization just after check for TARGET_AVX.
! 	(<sse>_andnot<mode>3<mask_name>): Move check for
! 	TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL after check for TARGET_AVX.
! 	(<code><mode>3<mask_name>): Ditto.
! 	(*andnot<mode>3): Ditto.
! 	(*andnottf3): Ditto.
! 	(*<code><mode>3): Ditto.
! 	(*<code>tf3): Ditto.
! 	(*andnot<VI:mode>3): Remove
! 	TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL handling.
! 	(<mask_codefor><code><VI48_AVX_AVX512F:mode>3<mask_name>): Ditto.
! 	(*<code><VI12_AVX_AVX512F:mode>3): Ditto.
! 	(sse4_1_blendv<ssemodesuffix>): Ditto.
! 	* config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL):
! 	Explain that tune applies to 128bit instructions only.
  
! 2020-01-31  Kwok Cheung Yeung  <kcy@codesourcery.com>
  
! 	* config/gcn/mkoffload.c (process_asm): Add sgpr_count and vgpr_count
! 	to definition of hsa_kernel_description.  Parse assembly to find SGPR
! 	and VGPR count of kernel and store in hsa_kernel_description.
  
! 2020-01-31  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR rtl-optimization/91838
! 	* simplify-rtx.c (simplify_binary_operation_1): Update LSHIFTRT case
! 	to truncate if allowed or reject combination.
  
! 2020-01-31  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* tree-ssa-loop-ivopts.c (get_iv): Use sizetype for zero-step.
! 	(find_inv_vars_cb): Likewise.
  
! 2020-01-31  David Malcolm  <dmalcolm@redhat.com>
  
! 	* calls.c (special_function_p): Split out the check for DECL_NAME
! 	being non-NULL and fndecl being extern at file scope into a
! 	new maybe_special_function_p and call it.  Drop check for fndecl
! 	being non-NULL that was after a usage of DECL_NAME (fndecl).
! 	* tree.h (maybe_special_function_p): New inline function.
  
! 2020-01-30  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn-valu.md (gather<mode>_exec): Move contents ...
! 	(mask_gather_load<mode>): ... here, and zero-initialize the
! 	destination.
! 	(maskload<mode>di): Zero-initialize the destination.
! 	* config/gcn/gcn.c:
  
! 2020-01-30  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR analyzer/93356
! 	* doc/analyzer.texi (Limitations): Note that constraints on
! 	floating-point values are currently ignored.
  
! 2020-01-30  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR lto/93384
! 	* symtab.c (symtab_node::noninterposable_alias): If localalias
! 	already exists, but is not usable, append numbers after it until
! 	a unique name is found.  Formatting fix.
  
! 	PR middle-end/93505
! 	* combine.c (simplify_comparison) <case ROTATE>: Punt on out of range
! 	rotate counts.
  
! 2020-01-30  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn.c (print_operand): Handle LTGT.
! 	* config/gcn/predicates.md (gcn_fp_compare_operator): Allow ltgt.
  
! 2020-01-30  Richard Biener  <rguenther@suse.de>
  
! 	* tree-pretty-print.c (dump_generic_node): Wrap VECTOR_CST
! 	and CONSTRUCTOR in _Literal (type) with TDF_GIMPLE.
  
! 2020-01-30  John David Anglin  <danglin@gcc.gnu.org>
  
! 	* config/pa/pa.c (pa_elf_select_rtx_section): Place function pointers
! 	without a DECL in .data.rel.ro.local.
  
! 2020-01-30  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/93494
! 	* config/arm/arm.md (uaddvdi4): Actually emit what gen_uaddvsi4
! 	returned.
  
! 	PR target/91824
! 	* config/i386/sse.md
! 	(*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_zext): Renamed to ...
! 	(*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext): ... this.  Use
! 	any_extend code iterator instead of always zero_extend.
! 	(*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_zext_lt): Renamed to ...
! 	(*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_lt): ... this.
! 	Use any_extend code iterator instead of always zero_extend.
! 	(*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_zext_shift): Renamed to ...
! 	(*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_shift): ... this.
! 	Use any_extend code iterator instead of always zero_extend.
! 	(*sse2_pmovmskb_ext): New define_insn.
! 	(*sse2_pmovmskb_ext_lt): New define_insn_and_split.
  
! 	PR target/91824
! 	* config/i386/i386.md (*popcountsi2_zext): New define_insn_and_split.
! 	(*popcountsi2_zext_falsedep): New define_insn.
  
! 2020-01-30  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
  
! 	* config.in: Regenerated.
! 	* configure: Regenerated.
  
! 2020-01-29  Tobias Burnus  <tobias@codesourcery.com>
  
! 	PR bootstrap/93409
! 	* config/gcn/gcn-hsa.h (ASM_SPEC): Add -mattr=-code-object-v3 as
! 	LLVM's assembler changed the default in version 9.
  
! 2020-01-24  Jeff Law  <law@redhat.com>
  
! 	PR tree-optimization/89689
! 	* builtins.def (BUILT_IN_OBJECT_SIZE): Make it const rather than pure.
  
! 2020-01-29  Richard Sandiford  <richard.sandiford@arm.com>
  
  	Revert:
  
! 	2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR rtl-optimization/87763
! 	* simplify-rtx.c (simplify_truncation): Extend sign/zero_extract
! 	simplification to handle subregs as well as bare regs.
! 	* config/i386/i386.md (*testqi_ext_3): Match QI extracts too.
! 
! 2020-01-29  Joel Hutton  <Joel.Hutton@arm.com>
! 
! 	PR target/93221
! 	* ira.c (ira): Revert use of simplified LRA algorithm.
! 
! 2020-01-29  Martin Jambor  <mjambor@suse.cz>
! 
! 	PR tree-optimization/92706
! 	* tree-sra.c (struct access): Fields first_link, last_link,
! 	next_queued and grp_queued renamed to first_rhs_link, last_rhs_link,
! 	next_rhs_queued and grp_rhs_queued respectively, new fields
! 	first_lhs_link, last_lhs_link, next_lhs_queued and grp_lhs_queued.
! 	(struct assign_link): Field next renamed to next_rhs, new field
! 	next_lhs.  Updated comment.
! 	(work_queue_head): Renamed to rhs_work_queue_head.
! 	(lhs_work_queue_head): New variable.
! 	(add_link_to_lhs): New function.
! 	(relink_to_new_repr): Also relink LHS lists.
! 	(add_access_to_work_queue): Renamed to add_access_to_rhs_work_queue.
! 	(add_access_to_lhs_work_queue): New function.
! 	(pop_access_from_work_queue): Renamed to
! 	pop_access_from_rhs_work_queue.
! 	(pop_access_from_lhs_work_queue): New function.
! 	(build_accesses_from_assign): Also add links to LHS lists and to LHS
! 	work_queue.
! 	(child_would_conflict_in_lacc): Renamed to
! 	child_would_conflict_in_acc.  Adjusted parameter names.
! 	(create_artificial_child_access): New parameter set_grp_read, use it.
! 	(subtree_mark_written_and_enqueue): Renamed to
! 	subtree_mark_written_and_rhs_enqueue.
! 	(propagate_subaccesses_across_link): Renamed to
! 	propagate_subaccesses_from_rhs.
! 	(propagate_subaccesses_from_lhs): New function.
! 	(propagate_all_subaccesses): Also propagate subaccesses from LHSs to
! 	RHSs.
! 
! 2020-01-29  Martin Jambor  <mjambor@suse.cz>
! 
! 	PR tree-optimization/92706
! 	* tree-sra.c (struct access): Adjust comment of
! 	grp_total_scalarization.
! 	(find_access_in_subtree): Look for single children spanning an entire
! 	access.
! 	(scalarizable_type_p): Allow register accesses, adjust callers.
! 	(completely_scalarize): Remove function.
! 	(scalarize_elem): Likewise.
! 	(create_total_scalarization_access): Likewise.
! 	(sort_and_splice_var_accesses): Do not track total scalarization
! 	flags.
! 	(analyze_access_subtree): New parameter totally, adjust to new meaning
! 	of grp_total_scalarization.
! 	(analyze_access_trees): Pass new parameter to analyze_access_subtree.
! 	(can_totally_scalarize_forest_p): New function.
! 	(create_total_scalarization_access): Likewise.
! 	(create_total_access_and_reshape): Likewise.
! 	(total_should_skip_creating_access): Likewise.
! 	(totally_scalarize_subtree): Likewise.
! 	(analyze_all_variable_accesses): Perform total scalarization after
! 	subaccess propagation using the new functions above.
! 	(initialize_constant_pool_replacements): Output initializers by
! 	traversing the access tree.
! 
! 2020-01-29  Martin Jambor  <mjambor@suse.cz>
! 
! 	* tree-sra.c (verify_sra_access_forest): New function.
! 	(verify_all_sra_access_forests): Likewise.
! 	(create_artificial_child_access): Set parent.
! 	(analyze_all_variable_accesses): Call the verifier.
! 
! 2020-01-28  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	* cgraph.c (cgraph_edge::resolve_speculation): Only lookup direct edge
! 	if called on indirect edge.
! 	(cgraph_edge::redirect_call_stmt_to_callee): Lookup indirect edge of
! 	speculative call if needed.
! 
! 2020-01-29  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/93428
! 	* tree-vect-slp.c (vect_build_slp_tree_2): Compute the load
! 	permutation when the load node is created.
! 	(vect_analyze_slp_instance): Re-use it here.
! 
! 2020-01-28  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	* ipa-prop.c (update_indirect_edges_after_inlining): Fix warning.
! 
! 2020-01-28  Vladimir Makarov  <vmakarov@redhat.com>
! 
! 	PR rtl-optimization/93272
! 	* ira-lives.c (process_out_of_region_eh_regs): New function.
! 	(process_bb_node_lives): Call it.
! 
! 2020-01-28  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	* coverage.c (read_counts_file): Make error message lowercase.
! 
! 2020-01-28  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	* profile-count.c (profile_quality_display_names): Fix ordering.
! 
! 2020-01-28  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	PR lto/93318	
! 	* cgraph.c (cgraph_add_edge_to_call_site_hash): Update call site
! 	hash only when edge is first within the sequence.
! 	(cgraph_edge::set_call_stmt): Update handling of speculative calls.
! 	(symbol_table::create_edge): Do not set target_prob.
! 	(cgraph_edge::remove_caller): Watch for speculative calls when updating
! 	the call site hash.
! 	(cgraph_edge::make_speculative): Drop target_prob parameter.
! 	(cgraph_edge::speculative_call_info): Remove.
! 	(cgraph_edge::first_speculative_call_target): New member function.
! 	(update_call_stmt_hash_for_removing_direct_edge): New function.
! 	(cgraph_edge::resolve_speculation): Rewrite to new API.
! 	(cgraph_edge::speculative_call_for_target): New member function.
! 	(cgraph_edge::make_direct): Rewrite to new API; fix handling of
! 	multiple speculation targets.
! 	(cgraph_edge::redirect_call_stmt_to_callee): Likewise; fix updating
! 	of profile.
! 	(verify_speculative_call): Verify that targets form an interval.
! 	* cgraph.h (cgraph_edge::speculative_call_info): Remove.
! 	(cgraph_edge::first_speculative_call_target): New member function.
! 	(cgraph_edge::next_speculative_call_target): New member function.
! 	(cgraph_edge::speculative_call_target_ref): New member function.
! 	(cgraph_edge;:speculative_call_indirect_edge): New member funtion.
! 	(cgraph_edge): Remove target_prob.
! 	* cgraphclones.c (cgraph_node::set_call_stmt_including_clones):
! 	Fix handling of speculative calls.
! 	* ipa-devirt.c (ipa_devirt): Fix handling of speculative cals.
! 	* ipa-fnsummary.c (analyze_function_body): Likewise.
! 	* ipa-inline.c (speculation_useful_p): Use new speculative call API.
! 	* ipa-profile.c (dump_histogram): Fix formating.
! 	(ipa_profile_generate_summary): Watch for overflows.
! 	(ipa_profile): Do not require probablity to be 1/2; update to new API.
! 	* ipa-prop.c (ipa_make_edge_direct_to_target): Update to new API.
! 	(update_indirect_edges_after_inlining): Update to new API.
! 	* ipa-utils.c (ipa_merge_profiles): Rewrite merging of speculative call
! 	profiles.
! 	* profile-count.h: (profile_probability::adjusted): New.
! 	* tree-inline.c (copy_bb): Update to new speculative call API; fix
! 	updating of profile.
! 	* value-prof.c (gimple_ic_transform): Rename to ...
! 	(dump_ic_profile): ... this one; update dumping.
! 	(stream_in_histogram_value): Fix formating.
! 	(gimple_value_profile_transformations): Update.
! 
! 2020-01-28  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	PR target/91461
! 	* config/i386/i386.md (*movoi_internal_avx): Remove
! 	TARGET_SSE_TYPELESS_STORES check.
! 	(*movti_internal): Prefer TARGET_AVX over
! 	TARGET_SSE_TYPELESS_STORES.
! 	(*movtf_internal): Likewise.
! 	* config/i386/sse.md (mov<mode>_internal): Prefer TARGET_AVX over
! 	TARGET_SSE_TYPELESS_STORES.  Remove "<MODE_SIZE> == 16" check
! 	from TARGET_SSE_TYPELESS_STORES.
! 
! 2020-01-28  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* diagnostic-core.h (warning_at): Rename overload to...
! 	(warning_meta): ...this.
! 	(emit_diagnostic_valist): Delete decl of overload taking
! 	diagnostic_metadata.
! 	* diagnostic.c (emit_diagnostic_valist): Likewise for defn.
! 	(warning_at): Rename overload taking diagnostic_metadata to...
! 	(warning_meta): ...this.
! 
! 2020-01-28  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/93439
! 	* tree-parloops.c (create_loop_fn): Move clique bookkeeping...
! 	* tree-cfg.c (move_sese_region_to_fn): ... here.
! 	(verify_types_in_gimple_reference): Verify used cliques are
! 	tracked.
! 
! 2020-01-28  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	PR target/91399
! 	* config/i386/i386-options.c (set_ix86_tune_features): Add an
! 	argument of a pointer to struct gcc_options and pass it to
! 	parse_mtune_ctrl_str.
! 	(ix86_function_specific_restore): Pass opts to
! 	set_ix86_tune_features.
! 	(ix86_option_override_internal): Likewise.
! 	(parse_mtune_ctrl_str): Add an argument of a pointer to struct
! 	gcc_options and use it for x_ix86_tune_ctrl_string.
! 
! 2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR rtl-optimization/87763
! 	* simplify-rtx.c (simplify_truncation): Extend sign/zero_extract
! 	simplification to handle subregs as well as bare regs.
! 	* config/i386/i386.md (*testqi_ext_3): Match QI extracts too.
! 
! 2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* tree-vect-loop.c (vectorizable_reduction): Fail gracefully
! 	for reduction chains that (now) include a call.
! 
! 2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR tree-optimization/92822
! 	* tree-ssa-forwprop.c (simplify_vector_constructor): When filling
! 	out the don't-care elements of a vector whose significant elements
! 	are duplicates, make the don't-care elements duplicates too.
! 
! 2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR tree-optimization/93434
! 	* tree-predcom.c (split_data_refs_to_components): Record which
! 	components have had aliasing loads removed.  Prevent store-store
! 	commoning for all such components.
! 
! 2020-01-28  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/93418
! 	* config/i386/i386.c (ix86_fold_builtin) <do_shift>: If mask is not
! 	-1 or is_vshift is true, use new_vector with number of elts npatterns
! 	rather than new_unary_operation.
! 
! 	PR tree-optimization/93454
! 	* gimple-fold.c (fold_array_ctor_reference): Perform
! 	elt_size.to_uhwi () just once, instead of calling it in every
! 	iteration.  Punt if that value is above size of the temporary
! 	buffer.  Decrease third native_encode_expr argument when
! 	bufoff + elt_sz is above size of buf.
! 
! 2020-01-27  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* config/mips/mips.c (mips_declare_object_name)
! 	[USE_GNU_UNIQUE_OBJECT]: Support use of gnu_unique_object.
! 
! 2020-01-27  Martin Liska  <mliska@suse.cz>
! 
! 	PR gcov-profile/93403
! 	* tree-profile.c (gimple_init_gcov_profiler): Generate
! 	both __gcov_indirect_call_profiler_v4 and
! 	__gcov_indirect_call_profiler_v4_atomic.
! 
! 2020-01-27  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR target/92822
! 	* config/aarch64/aarch64-simd.md (aarch64_get_half<mode>): New
! 	expander.
! 	(@aarch64_split_simd_mov<mode>): Use it.
! 	(aarch64_simd_mov_from_<mode>low): Add a GPR alternative.
! 	Leave the vec_extract patterns to handle 2-element vectors.
! 	(aarch64_simd_mov_from_<mode>high): Likewise.
! 	(vec_extract<VQMOV_NO2E:mode><Vhalf>): New expander.
! 	(vec_extractv2dfv1df): Likewise.
  
! 2020-01-27  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_if_then_else_costs): Match
! 	jump conditions for *compare_condjump<GPI:mode>.
  
! 2020-01-27  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR analyzer/93276
! 	* digraph.cc (test_edge::test_edge): Specify template for base
! 	class initializer.
  
! 2020-01-27  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc.c (arc_rtx_costs): Update mul64 cost.
  
! 2020-01-27  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc-protos.h (gen_mlo): Remove.
! 	(gen_mhi): Likewise.
! 	* config/arc/arc.c (AUX_MULHI): Define.
! 	(arc_must_save_reister): Special handling for r58/59.
! 	(arc_compute_frame_size): Consider mlo/mhi registers.
! 	(arc_save_callee_saves): Emit fp/sp move only when emit_move
! 	paramter is true.
! 	(arc_conditional_register_usage): Remove TARGET_BIG_ENDIAN from
! 	mlo/mhi name selection.
! 	(arc_restore_callee_saves): Don't early restore blink when ISR.
! 	(arc_expand_prologue): Add mlo/mhi saving.
! 	(arc_expand_epilogue): Add mlo/mhi restoring.
! 	(gen_mlo): Remove.
! 	(gen_mhi): Remove.
! 	* config/arc/arc.h (DBX_REGISTER_NUMBER): Correct register
! 	numbering when MUL64 option is used.
! 	(DWARF2_FRAME_REG_OUT): Define.
! 	* config/arc/arc.md (arc600_stall): New pattern.
! 	(VUNSPEC_ARC_ARC600_STALL): Define.
! 	(mulsi64): Use correct mlo/mhi registers.
! 	(mulsi_600): Clean it up.
! 	* config/arc/predicates.md (mlo_operand): Remove any dependency on
! 	TARGET_BIG_ENDIAN.
! 	(mhi_operand): Likewise.
  
! 2020-01-27  Claudiu Zissulescu  <claziss@synopsys.com>
! 	    Petro Karashchenko  <petro.karashchenko@ring.com>
  
! 	* config/arc/arc.c (arc_is_uncached_mem_p): Check struct
! 	attributes if needed.
! 	(prepare_move_operands): Generate special unspec instruction for
! 	direct access.
! 	(arc_isuncached_mem_p): Propagate uncached attribute to each
! 	structure member.
! 	* config/arc/arc.md (VUNSPEC_ARC_LDDI): Define.
! 	(VUNSPEC_ARC_STDI): Likewise.
! 	(ALLI): New mode iterator.
! 	(mALLI): New mode attribute.
! 	(lddi): New instruction pattern.
! 	(stdi): Likewise.
! 	(stdidi_split): Split instruction for architectures which are not
! 	supporting ll64 option.
! 	(lddidi_split): Likewise.
  
! 2020-01-27  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/92989
! 	* lra-lives.c (process_bb_lives): Update the live-in set before
! 	processing additional clobbers.
  
! 2020-01-27  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/93170
! 	* cselib.c (cselib_invalidate_regno_val): New function, split out
  	from...
! 	(cselib_invalidate_regno): ...here.
! 	(cselib_invalidated_by_call_p): New function.
! 	(cselib_process_insn): Iterate over all the hard-register entries in
! 	REG_VALUES and invalidate any that cross call-clobbered registers.
! 
! 2020-01-27  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* dojump.c (split_comparison): Use HONOR_NANS rather than
! 	HONOR_SNANS when splitting LTGT.
! 
! 2020-01-27  Martin Liska  <mliska@suse.cz>
! 
! 	PR driver/91220
! 	* opts.c (print_filtered_help): Exclude language-specific
! 	options from --help=common unless enabled in all FEs.
! 
! 2020-01-27  Martin Liska  <mliska@suse.cz>
! 
! 	* opts.c (print_help): Exclude params from
! 	all except --help=param.
! 
! 2020-01-27  Martin Liska  <mliska@suse.cz>
! 
! 	PR target/93274
! 	* config/i386/i386-features.c (make_resolver_func):
! 	Align the code with ppc64 target implementation.
! 	Do not generate a unique name for resolver function.
! 
! 2020-01-27  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/93397
! 	* tree-vect-slp.c (vect_analyze_slp_instance): Delay
! 	converted reduction chain SLP graph adjustment.
! 
! 2020-01-26  Marek Polacek  <polacek@redhat.com>
! 
! 	PR sanitizer/93436
! 	* sanopt.c (sanitize_rewrite_addressable_params): Avoid crash on
! 	null DECL_NAME.
! 
! 2020-01-26  Jason Merrill  <jason@redhat.com>
! 
! 	PR c++/92601
! 	* tree.c (verify_type_variant): Only verify TYPE_NEEDS_CONSTRUCTING
! 	of complete types.
! 
! 2020-01-26  Darius Galis  <darius.galis@cyberthorstudios.com>
! 
! 	* config/rx/rx.md (setmemsi): Added rx_allow_string_insns constraint
! 	(rx_setmem): Likewise.
! 
! 2020-01-26  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/93412
! 	* config/i386/i386.md (*addv<dwi>4_doubleword, *subv<dwi>4_doubleword):
! 	Use nonimmediate_operand instead of x86_64_hilo_general_operand and
! 	drop <di> from constraint of last operand.
! 
! 	PR target/93430
! 	* config/i386/sse.md (*avx_vperm_broadcast_<mode>): Disallow for
! 	TARGET_AVX2 and V4DFmode not in the split condition, but in the
! 	pattern condition, though allow { 0, 0, 0, 0 } broadcast always.
! 
! 2020-01-25  Feng Xue  <fxue@os.amperecomputing.com>
! 
! 	PR ipa/93166
! 	* ipa-cp.c (get_info_about_necessary_edges): Remove value
! 	check assertion.
! 
! 2020-01-24  Jeff Law  <law@redhat.com>
! 
! 	PR tree-optimization/92788
! 	* tree-ssa-threadedge.c (thread_across_edge): Check EDGE_COMPLEX
! 	not EDGE_ABNORMAL.
! 
! 2020-01-24  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/93395
! 	* config/i386/sse.md (*avx_vperm_broadcast_v4sf,
! 	*avx_vperm_broadcast_<mode>,
! 	<sse2_avx_avx512f>_vpermil<mode><mask_name>,
! 	*<sse2_avx_avx512f>_vpermilp<mode><mask_name>):
! 	Move before avx2_perm<mode>/avx512f_perm<mode>.
! 
! 	PR target/93376
! 	* simplify-rtx.c (simplify_const_unary_operation,
! 	simplify_const_binary_operation): Punt for mode precision above
! 	MAX_BITSIZE_MODE_ANY_INT.
! 
! 2020-01-24  Andrew Pinski  <apinski@marvell.com>
! 
! 	* config/arm/aarch-cost-tables.h (cortexa57_extra_costs): Change
! 	alu.shift_reg to 0.
! 
! 2020-01-24  Jeff Law  <law@redhat.com>
! 
! 	PR target/13721
! 	* config/h8300/h8300.c (h8300_print_operand): Only call byte_reg
! 	for REGs.  Call output_operand_lossage to get more reasonable
! 	diagnostics.
! 
! 2020-01-24  Andrew Stubbs  <ams@codesourcery.com>
! 
! 	* config/gcn/gcn-valu.md (vec_cmp<mode>di): Use
! 	gcn_fp_compare_operator.
! 	(vec_cmpu<mode>di): Use gcn_compare_operator.
! 	(vec_cmp<u>v64qidi): Use gcn_compare_operator.
! 	(vec_cmp<mode>di_exec): Use gcn_fp_compare_operator.
! 	(vec_cmpu<mode>di_exec): Use gcn_compare_operator.
! 	(vec_cmp<u>v64qidi_exec): Use gcn_compare_operator.
! 	(vec_cmp<mode>di_dup): Use gcn_fp_compare_operator.
! 	(vec_cmp<mode>di_dup_exec): Use gcn_fp_compare_operator.
! 	(vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>): Use
! 	gcn_fp_compare_operator.
! 	(vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>_exec): Use
! 	gcn_fp_compare_operator.
! 	(vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>): Use
! 	gcn_fp_compare_operator.
! 	(vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>_exec): Use
! 	gcn_fp_compare_operator.
! 
! 2020-01-24  Maciej W. Rozycki  <macro@wdc.com>
! 
! 	* doc/install.texi (Cross-Compiler-Specific Options): Document
! 	`--with-toolexeclibdir' option.
! 
! 2020-01-24  Hans-Peter Nilsson  <hp@axis.com>
! 
! 	* target.def (flags_regnum): Also mention effect on delay slot filling.
! 	* doc/tm.texi: Regenerate.
! 
! 2020-01-23  Jeff Law  <law@redhat.com>
! 
! 	PR translation/90162
! 	* config/h8300/h8300.c (h8300_option_override): Fix diagnostic text.
! 
! 2020-01-23  Mikael Tillenius  <mti-1@tillenius.com>
! 
! 	PR target/92269
! 	* config/h8300/h8300.h (FUNCTION_PROFILER): Fix emission of
! 	profiling label
! 
! 2020-01-23  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR rtl-optimization/93402
! 	* postreload.c (reload_combine_recognize_pattern): Don't try to adjust
! 	USE insns.
! 
! 2020-01-23  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
! 
! 	* config.in: Regenerated.
! 	* config/mips/linux.h (NEED_INDICATE_EXEC_STACK): Define to 1
! 	for TARGET_LIBC_GNUSTACK.
! 	* configure: Regenerated.
! 	* configure.ac: Define TARGET_LIBC_GNUSTACK if glibc version is
! 	found to be 2.31 or greater.
! 
! 2020-01-23  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
! 
! 	* config/mips/linux.h (NEED_INDICATE_EXEC_STACK): Define to
! 	TARGET_SOFT_FLOAT.
! 	* config/mips/mips.c (TARGET_ASM_FILE_END): Define to ...
! 	(mips_asm_file_end): New function. Delegate to
! 	file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK is true.
! 	* config/mips/mips.h (NEED_INDICATE_EXEC_STACK): Define to 0.
! 
! 2020-01-23  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/93376
! 	* config/i386/i386-modes.def (POImode): New mode.
! 	(MAX_BITSIZE_MODE_ANY_INT): Change from 128 to 160.
! 	* config/i386/i386.md (DPWI): New mode attribute.
! 	(addv<mode>4, subv<mode>4): Use <DPWI> instead of <DWI>.
! 	(QWI): Rename to...
! 	(QPWI): ... this.  Use POI instead of OI for TImode.
! 	(*addv<dwi>4_doubleword, *addv<dwi>4_doubleword_1,
! 	*subv<dwi>4_doubleword, *subv<dwi>4_doubleword_1): Use <QPWI>
! 	instead of <QWI>.
! 
! 2020-01-23  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR target/93341
! 	* config/aarch64/aarch64.md (UNSPEC_SPECULATION_TRACKER_REV): New
! 	unspec.
! 	(speculation_tracker_rev): New pattern.
! 	* config/aarch64/aarch64-speculation.cc (aarch64_do_track_speculation):
! 	Use speculation_tracker_rev to track the inverse condition.
! 
! 2020-01-23  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/93381
! 	* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Take
! 	alias-set of the def as argument and record the first one.
! 	(vn_walk_cb_data::first_set): New member.
! 	(vn_reference_lookup_3): Pass the alias-set of the current def
! 	to push_partial_def.  Fix alias-set used in the aggregate copy
! 	case.
! 	(vn_reference_lookup): Consistently set *last_vuse_ptr.
! 	* real.c (clear_significand_below): Fix out-of-bound access.
! 
! 2020-01-23  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/93346
! 	* config/i386/i386.md (*bmi2_bzhi_<mode>3_2, *bmi2_bzhi_<mode>3_3):
! 	New define_insn patterns.
! 
! 2020-01-23  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* doc/sourcebuild.texi (check-function-bodies): Add an
! 	optional target/xfail selector.
! 
! 2020-01-23  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR rtl-optimization/93124
! 	* auto-inc-dec.c (merge_in_block): Don't add auto inc/decs to
! 	bare USE and CLOBBER insns.
! 
! 2020-01-22  Andrew Pinski  <apinski@marvell.com>
! 
! 	* config/arc/arc.c (output_short_suffix): Check insn for nullness.
! 
! 2020-01-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/93307
! 	* gdbinit.in (break-on-saved-diagnostic): Update for move of
! 	diagnostic_manager into "ana" namespace.
! 	* selftest-run-tests.c (selftest::run_tests): Update for move of
! 	selftest::run_analyzer_selftests to
! 	ana::selftest::run_analyzer_selftests.
! 
! 2020-01-22  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* cfgexpand.c (union_stack_vars): Update the size.
! 
! 2020-01-22  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/93381
! 	* tree-ssa-structalias.c (find_func_aliases): Assume offsetting
! 	throughout, handle all conversions the same.
! 
! 2020-01-22  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/93335
! 	* config/aarch64/aarch64.c (aarch64_expand_subvti): Only use
! 	gen_subdi3_compare1_imm if low_in2 satisfies aarch64_plus_immediate
! 	predicate, not whenever it is CONST_INT.  Otherwise, force_reg it.
! 	Call force_reg on high_in2 unconditionally.
! 
! 2020-01-22  Martin Liska  <mliska@suse.cz>
! 
! 	PR tree-optimization/92924
! 	* profile.c (compute_value_histograms): Divide
! 	all counter values.
! 
! 2020-01-22  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/91298
! 	* output.h (assemble_name_resolve): Declare.
! 	* varasm.c (assemble_name_resolve): New function.
! 	(assemble_name): Use it.
! 	* config/i386/i386.h (ASM_OUTPUT_SYMBOL_REF): Define.
! 
! 2020-01-22  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* doc/sourcebuild.texi (Texinfo Manuals, Front End): Refer to
! 	update_web_docs_git instead of update_web_docs_svn.
! 
! 2020-01-21  Andrew Pinski  <apinski@marvell.com>
! 
! 	PR target/9311
! 	* config/aarch64/aarch64.md (tlsgd_small_<mode>): Have operand 0
! 	as PTR mode. Have operand 1 as being modeless, it can be P mode.
! 	(*tlsgd_small_<mode>): Likewise.
! 	* config/aarch64/aarch64.c (aarch64_load_symref_appropriately)
! 	<case SYMBOL_SMALL_TLSGD>: Call gen_tlsgd_small_* with a ptr_mode
! 	register.  Convert that register back to dest using convert_mode.
! 
! 2020-01-21  Jim Wilson  <jimw@sifive.com>
! 
! 	* config/riscv/riscv-sr.c (riscv_sr_match_prologue): Use INTVAL
! 	instead of XINT.
! 
! 2020-01-21  H.J. Lu  <hongjiu.lu@intel.com>
! 	    Uros Bizjak    <ubizjak@gmail.com>
! 
! 	PR target/93319
! 	* config/i386/i386.c (ix86_tls_module_base): Replace Pmode
! 	with ptr_mode.
! 	(legitimize_tls_address): Do GNU2 TLS address computation in
! 	ptr_mode and zero-extend result to Pmode.
! 	*  config/i386/i386.md (@tls_dynamic_gnu2_64_<mode>): Replace
! 	:P with :PTR and Pmode with ptr_mode.
! 	(*tls_dynamic_gnu2_lea_64_<mode>): Likewise.
! 	(*tls_dynamic_gnu2_call_64_<mode>): Likewise.
! 	(*tls_dynamic_gnu2_combine_64_<mode>): Likewise.
! 
! 2020-01-21  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/93333
! 	* config/riscv/riscv.c (riscv_rtx_costs) <case ZERO_EXTRACT>: Verify
! 	the last two operands are CONST_INT_P before using them as such.
! 
! 2020-01-21  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/aarch64-sve-builtins.def: Use get_typenode_from_name
! 	to get the integer element types.
! 
! 2020-01-21  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/aarch64-sve-builtins.h
! 	(function_expander::convert_to_pmode): Declare.
! 	* config/aarch64/aarch64-sve-builtins.cc
! 	(function_expander::convert_to_pmode): New function.
! 	(function_expander::get_contiguous_base): Use it.
! 	(function_expander::prepare_gather_address_operands): Likewise.
! 	* config/aarch64/aarch64-sve-builtins-sve2.cc
! 	(svwhilerw_svwhilewr_impl::expand): Likewise.
! 
! 2020-01-21  Szabolcs Nagy  <szabolcs.nagy@arm.com>
  
! 	PR target/92424
! 	* config/aarch64/aarch64.c (aarch64_declare_function_name): Set
! 	cfun->machine->label_is_assembled.
! 	(aarch64_print_patchable_function_entry): New.
! 	(TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY): Define.
! 	* config/aarch64/aarch64.h (struct machine_function): New field,
! 	label_is_assembled.
  
! 2020-01-21  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR ipa/93315
! 	* ipa-profile.c (ipa_profile): Delete call_sums and set it to
! 	NULL on exit.
  
! 2020-01-18  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR lto/93318	
! 	* cgraph.c (cgraph_edge::resolve_speculation,
! 	cgraph_edge::redirect_call_stmt_to_callee): Fix update of
! 	call_stmt_site_hash.
  
! 2020-01-21  Martin Liska  <mliska@suse.cz>
  
! 	* config/rs6000/rs6000.c (common_mode_defined): Remove
! 	unused variable.
  
! 2020-01-21  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/92328
! 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Preserve
! 	type when value-numbering same-sized store by inserting a
! 	VIEW_CONVERT_EXPR.
! 	(eliminate_dom_walker::eliminate_stmt): When eliminating
! 	a redundant store handle bit-reinterpretation of the same value.
  
! 2020-01-21  Andrew Pinski  <apinski@marvel.com>
  
! 	PR tree-opt/93321
! 	* tree-into-ssa.c (prepare_block_for_update_1): Split out
! 	from ...
! 	(prepare_block_for_update): This.  Use a worklist instead of
! 	recursing.
  
! 2020-01-21  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
  
! 	* gcc/config/arm/arm.c (clear_operation_p):
! 	Initialise last_regno, skip first iteration
! 	based on the first_set value and use ints instead
! 	of the unnecessary HOST_WIDE_INTs.
  
! 2020-01-21  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/93073
! 	* config/rs6000/rs6000.c (rs6000_emit_cmove): If using fsel, punt for
! 	compare_mode other than SFmode or DFmode.
  
! 2020-01-21  Kito Cheng  <kito.cheng@sifive.com>
  
! 	PR target/93304
! 	* config/riscv/riscv-protos.h (riscv_hard_regno_rename_ok): New.
! 	* config/riscv/riscv.c (riscv_hard_regno_rename_ok): New.
! 	* config/riscv/riscv.h (HARD_REGNO_RENAME_OK): Defined.
  
! 2020-01-20  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	* config/aarch64/aarch64.c (neoversen1_tunings): Set jump_align to 4.
  
! 2020-01-20  Andrew Pinski  <apinski@marvell.com>
  
! 	PR middle-end/93242
! 	* targhooks.c (default_print_patchable_function_entry): Use
! 	output_asm_insn to emit the nop instruction.
  
! 2020-01-20  Fangrui Song  <maskray@google.com>
  
! 	PR middle-end/93194
! 	* targhooks.c (default_print_patchable_function_entry): Align to
! 	POINTER_SIZE.
  
! 2020-01-20  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/93319
! 	* config/i386/i386.c (legitimize_tls_address): Pass Pmode to
! 	gen_tls_dynamic_gnu2_64.  Compute GNU2 TLS address in ptr_mode.
! 	* config/i386/i386.md (tls_dynamic_gnu2_64): Renamed to ...
! 	(@tls_dynamic_gnu2_64_<mode>): This.  Replace DI with P.
! 	(*tls_dynamic_gnu2_lea_64): Renamed to ...
! 	(*tls_dynamic_gnu2_lea_64_<mode>): This.  Replace DI with P.
! 	Remove the {q} suffix from lea.
! 	(*tls_dynamic_gnu2_call_64): Renamed to ...
! 	(*tls_dynamic_gnu2_call_64_<mode>): This.  Replace DI with P.
! 	(*tls_dynamic_gnu2_combine_64): Renamed to ...
! 	(*tls_dynamic_gnu2_combine_64_<mode>): This.  Replace DI with P.
! 	Pass Pmode to gen_tls_dynamic_gnu2_64.
  
! 2020-01-20  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	* config/aarch64/aarch64.h (SLOW_BYTE_ACCESS): Set to 1.
  
! 2020-01-20  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-sve-builtins-base.cc
! 	(svld1ro_impl::memory_vector_mode): Remove parameter name.
  
! 2020-01-20  Richard Biener  <rguenther@suse.de>
  
! 	PR debug/92763
! 	* dwarf2out.c (prune_unused_types): Unconditionally mark
! 	called function DIEs.
  
! 2020-01-20  Martin Liska  <mliska@suse.cz>
  
! 	PR tree-optimization/93199
! 	* tree-eh.c (struct leh_state): Add
! 	new field outer_non_cleanup.
! 	(cleanup_is_dead_in): Pass leh_state instead
! 	of eh_region.  Add a checking that state->outer_non_cleanup
! 	points to outer non-clean up region.
! 	(lower_try_finally): Record outer_non_cleanup
! 	for this_state.
! 	(lower_catch): Likewise.
! 	(lower_eh_filter): Likewise.
! 	(lower_eh_must_not_throw): Likewise.
! 	(lower_cleanup): Likewise.
  
! 2020-01-20  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/93094
! 	* tree-vectorizer.h (vect_loop_versioning): Adjust.
! 	(vect_transform_loop): Likewise.
! 	* tree-vectorizer.c (try_vectorize_loop_1): Pass down
! 	loop_vectorized_call to vect_transform_loop.
! 	* tree-vect-loop.c (vect_transform_loop): Pass down
! 	loop_vectorized_call to vect_loop_versioning.
! 	* tree-vect-loop-manip.c (vect_loop_versioning): Use
! 	the earlier discovered loop_vectorized_call.
  
! 2020-01-19  Eric S. Raymond <esr@thyrsus.com>
  
! 	* doc/contribute.texi: Update for SVN -> Git transition.
! 	* doc/install.texi: Likewise.
  
! 2020-01-18  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR lto/93318
! 	* cgraph.c (cgraph_edge::make_speculative): Increase number of
! 	speculative targets.
! 	(verify_speculative_call): New function
! 	(cgraph_node::verify_node): Use it.
! 	* ipa-profile.c (ipa_profile): Fix formating; do not set number of
! 	speculations.
  
! 2020-01-18  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR lto/93318
! 	* cgraph.c (cgraph_edge::resolve_speculation): Fix foramting.
! 	(cgraph_edge::make_direct): Remove all indirect targets.
! 	(cgraph_edge::redirect_call_stmt_to_callee): Use make_direct..
! 	(cgraph_node::verify_node): Verify that only one call_stmt or
! 	lto_stmt_uid is set.
! 	* cgraphclones.c (cgraph_edge::clone): Set only one call_stmt or
! 	lto_stmt_uid.
! 	* lto-cgraph.c (lto_output_edge): Simplify streaming of stmt.
! 	(lto_output_ref): Simplify streaming of stmt.
! 	* lto-streamer-in.c (fixup_call_stmt_edges_1): Clear lto_stmt_uid.
  
! 2020-01-18  Tamar Christina  <tamar.christina@arm.com>
  
! 	* config/aarch64/aarch64-sve-builtins-base.cc (memory_vector_mode):
! 	Mark parameter unused.
  
! 2020-01-18  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* config.gcc <obsolete targets>: Add crisv32-*-* and cris-*-linux*
  
! 2019-01-18  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* varpool.c (ctor_useable_for_folding_p): Fix grammar.
  
! 2020-01-18  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* Makefile.in: Add coroutine-passes.o.
! 	* builtin-types.def (BT_CONST_SIZE): New.
! 	(BT_FN_BOOL_PTR): New.
! 	(BT_FN_PTR_PTR_CONST_SIZE_BOOL): New.
! 	* builtins.def (DEF_COROUTINE_BUILTIN): New.
! 	* coroutine-builtins.def: New file.
! 	* coroutine-passes.cc: New file.
! 	* function.h (struct GTY function): Add a bit to indicate that the
! 	function is a coroutine component.
! 	* internal-fn.c (expand_CO_FRAME): New.
! 	(expand_CO_YIELD): New.
! 	(expand_CO_SUSPN): New.
! 	(expand_CO_ACTOR): New.
! 	* internal-fn.def (CO_ACTOR): New.
! 	(CO_YIELD): New.
! 	(CO_SUSPN): New.
! 	(CO_FRAME): New.
! 	* passes.def: Add pass_coroutine_lower_builtins,
! 	pass_coroutine_early_expand_ifns.
! 	* tree-pass.h (make_pass_coroutine_lower_builtins): New.
! 	(make_pass_coroutine_early_expand_ifns): New.
! 	* doc/invoke.texi: Document the fcoroutines command line
! 	switch.
  
! 2020-01-18  Jakub Jelinek  <jakub@redhat.com>
  
! 	* config/arm/vfp.md (*clear_vfp_multiple): Remove unused variable.
  
! 	PR target/93312
! 	* config/arm/arm.c (clear_operation_p): Don't use REGNO until
! 	after checking the argument is a REG.  Don't use REGNO (reg)
! 	again to set last_regno, reuse regno variable instead.
  
! 2020-01-17  David Malcolm  <dmalcolm@redhat.com>
  
! 	* doc/analyzer.texi (Limitations): Add note about NaN.
  
! 2020-01-17  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
! 	    Sudakshina Das  <sudi.das@arm.com>
  
! 	* config/arm/arm.md (ashldi3): Generate thumb2_lsll for both reg
! 	and valid immediate.
! 	(ashrdi3): Generate thumb2_asrl for both reg and valid immediate.
! 	(lshrdi3): Generate thumb2_lsrl for valid immediates.
! 	* config/arm/constraints.md (Pg): New.
! 	* config/arm/predicates.md (long_shift_imm): New.
! 	(arm_reg_or_long_shift_imm): Likewise.
! 	* config/arm/thumb2.md (thumb2_asrl): New immediate alternative.
! 	(thumb2_lsll): Likewise.
! 	(thumb2_lsrl): New.
  
! 2020-01-17  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
! 	    Sudakshina Das  <sudi.das@arm.com>
  
! 	* config/arm/arm.md (ashldi3): Generate thumb2_lsll for TARGET_HAVE_MVE.
! 	(ashrdi3): Generate thumb2_asrl for TARGET_HAVE_MVE.
! 	* config/arm/arm.c (arm_hard_regno_mode_ok): Allocate even odd
! 	register pairs for doubleword quantities for ARMv8.1M-Mainline.
! 	* config/arm/thumb2.md (thumb2_asrl): New.
! 	(thumb2_lsll): Likewise.
  
! 2020-01-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	* config/arm/arm.c (cmse_nonsecure_call_inline_register_clear): Remove
! 	unused variable.
  
! 2020-01-17  Alexander Monakov  <amonakov@ispras.ru>
  
! 	* gdbinit.in (help-gcc-hooks): New command.
! 	(pp, pr, prl, pt, pct, pgg, pgq, pgs, pge, pmz, ptc, pdn, ptn, pdd, prc,
! 	pi, pbm, pel, trt): Take $arg0 instead of $ if supplied. Update
! 	documentation.
  
! 2020-01-17  Matthew Malcomson  <matthew.malcomson@arm.com>
  
! 	* config/aarch64/aarch64-sve.md (@aarch64_sve_ld1ro<mode>): Use the
! 	correct target macro.
  
! 2020-01-17  Matthew Malcomson  <matthew.malcomson@arm.com>
  
! 	* config/aarch64/aarch64-protos.h
! 	(aarch64_sve_ld1ro_operand_p): New.
! 	* config/aarch64/aarch64-sve-builtins-base.cc
! 	(class load_replicate): New.
! 	(class svld1ro_impl): New.
! 	(class svld1rq_impl): Change to inherit from load_replicate.
! 	(svld1ro): New sve intrinsic function base.
! 	* config/aarch64/aarch64-sve-builtins-base.def (svld1ro):
! 	New DEF_SVE_FUNCTION.
! 	* config/aarch64/aarch64-sve-builtins-base.h
! 	(svld1ro): New decl.
! 	* config/aarch64/aarch64-sve-builtins.cc
! 	(function_expander::add_mem_operand): Modify assert to allow
! 	OImode.
! 	* config/aarch64/aarch64-sve.md (@aarch64_sve_ld1ro<mode>): New
! 	pattern.
! 	* config/aarch64/aarch64.c
! 	(aarch64_sve_ld1rq_operand_p): Implement in terms of ...
! 	(aarch64_sve_ld1rq_ld1ro_operand_p): This.
! 	(aarch64_sve_ld1ro_operand_p): New.
! 	* config/aarch64/aarch64.md (UNSPEC_LD1RO): New unspec.
! 	* config/aarch64/constraints.md (UOb,UOh,UOw,UOd): New.
! 	* config/aarch64/predicates.md
! 	(aarch64_sve_ld1ro_operand_{b,h,w,d}): New.
  
! 2020-01-17  Matthew Malcomson  <matthew.malcomson@arm.com>
  
! 	* config/aarch64/aarch64-c.c (_ARM_FEATURE_MATMUL_FLOAT64):
! 	Introduce this ACLE specified predefined macro.
! 	* config/aarch64/aarch64-option-extensions.def (f64mm): New.
! 	(fp): Disabling this disables f64mm.
! 	(simd): Disabling this disables f64mm.
! 	(fp16): Disabling this disables f64mm.
! 	(sve): Disabling this disables f64mm.
! 	* config/aarch64/aarch64.h (AARCH64_FL_F64MM): New.
! 	(AARCH64_ISA_F64MM): New.
! 	(TARGET_F64MM): New.
! 	* doc/invoke.texi (f64mm): Document new option.
  
! 2020-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	* config/aarch64/aarch64.c (generic_tunings): Add branch fusion.
! 	(neoversen1_tunings): Likewise.
  
! 2020-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	PR target/92692
! 	* config/aarch64/aarch64.c (aarch64_split_compare_and_swap)
! 	Add assert to ensure prolog has been emitted.
! 	(aarch64_split_atomic_op): Likewise.
! 	* config/aarch64/atomics.md (aarch64_compare_and_swap<mode>)
! 	Use epilogue_completed rather than reload_completed.
! 	(aarch64_atomic_exchange<mode>): Likewise.
! 	(aarch64_atomic_<atomic_optab><mode>): Likewise.
! 	(atomic_nand<mode>): Likewise.
! 	(aarch64_atomic_fetch_<atomic_optab><mode>): Likewise.
! 	(atomic_fetch_nand<mode>): Likewise.
! 	(aarch64_atomic_<atomic_optab>_fetch<mode>): Likewise.
! 	(atomic_nand_fetch<mode>): Likewise.
  
! 2020-01-17  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/93133
! 	* config/aarch64/aarch64.h (REVERSIBLE_CC_MODE): Return false
! 	for FP modes.
! 	(REVERSE_CONDITION): Delete.
! 	* config/aarch64/iterators.md (CC_ONLY): New mode iterator.
! 	(CCFP_CCFPE): Likewise.
! 	(e): New mode attribute.
! 	* config/aarch64/aarch64.md (ccmp<GPI:mode>): Rename to...
! 	(@ccmp<CC_ONLY:mode><GPI:mode>): ...this, using CC_ONLY instead of CC.
! 	(fccmp<GPF:mode>, fccmpe<GPF:mode>): Merge into...
! 	(@ccmp<CCFP_CCFPE:mode><GPF:mode>): ...this combined pattern.
! 	(@ccmp<CC_ONLY:mode><GPI:mode>_rev): New pattern.
! 	(@ccmp<CCFP_CCFPE:mode><GPF:mode>_rev): Likewise.
! 	* config/aarch64/aarch64.c (aarch64_gen_compare_reg): Update
! 	name of generator from gen_ccmpdi to gen_ccmpccdi.
! 	(aarch64_gen_ccmp_next): Use code_for_ccmp.  If we want to reverse
! 	the previous comparison but aren't able to, use the new ccmp_rev
! 	patterns instead.
  
! 2020-01-17  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* gimplify.c (gimplify_return_expr): Use poly_int_tree_p rather
! 	than testing directly for INTEGER_CST.
! 	(gimplify_target_expr, gimplify_omp_depend): Likewise.
  
! 2020-01-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/93292
! 	* tree-vect-stmts.c (vectorizable_comparison): Punt also if
! 	get_vectype_for_scalar_type returns NULL.
  
! 2020-01-16  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* params.opt (-param=max-predicted-iterations): Increase range from 0.
! 	* predict.c (estimate_loops): Add 1 to param_max_predicted_iterations.
  
! 2020-01-16  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* ipa-fnsummary.c (estimate_calls_size_and_time): Fix formating of
! 	dump.
! 	* params.opt: (max-predicted-iterations): Set bounds.
! 	* predict.c (real_almost_one, real_br_prob_base,
! 	real_inv_br_prob_base, real_one_half, real_bb_freq_max): Remove.
! 	(propagate_freq): Add max_cyclic_prob parameter; cap cyclic
! 	probabilities; do not truncate to reg_br_prob_bases.
! 	(estimate_loops_at_level): Pass max_cyclic_prob.
! 	(estimate_loops): Compute max_cyclic_prob.
! 	(estimate_bb_frequencies): Do not initialize real_*; update calculation
! 	of back edge prob.
! 	* profile-count.c (profile_probability::to_sreal): New.
! 	* profile-count.h (class sreal): Move up in file.
! 	(profile_probability::to_sreal): Declare.
  
! 2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
  
! 	* config/arm/arm.c
! 	(arm_invalid_conversion): New function for target hook.
! 	(arm_invalid_unary_op): New function for target hook.
! 	(arm_invalid_binary_op): New function for target hook.
  
! 2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
  
! 	* config.gcc: Add arm_bf16.h.
! 	* config/arm/arm-builtins.c (arm_mangle_builtin_type): Fix comment.
! 	(arm_simd_builtin_std_type): Add BFmode.
! 	(arm_init_simd_builtin_types): Define element types for vector types.
! 	(arm_init_bf16_types): New function.
! 	(arm_init_builtins): Add arm_init_bf16_types function call.
! 	* config/arm/arm-modes.def: Add BFmode and V4BF, V8BF vector modes.
! 	* config/arm/arm-simd-builtin-types.def: Add V4BF, V8BF.
! 	* config/arm/arm.c (aapcs_vfp_sub_candidate):  Add BFmode.
! 	(arm_hard_regno_mode_ok): Add BFmode and tidy up statements.
! 	(arm_vector_mode_supported_p): Add V4BF, V8BF.
! 	(arm_mangle_type):  Add __bf16.
! 	* config/arm/arm.h: Add V4BF, V8BF to VALID_NEON_DREG_MODE, 
! 	VALID_NEON_QREG_MODE respectively. Add export arm_bf16_type_node,
! 	arm_bf16_ptr_type_node.
! 	* config/arm/arm.md: Add BFmode to movhf expand, mov pattern and
! 	define_split between ARM registers.
! 	* config/arm/arm_bf16.h: New file.
! 	* config/arm/arm_neon.h: Add arm_bf16.h and Bfloat vector types.
! 	* config/arm/iterators.md: (ANY64_BF, VDXMOV, VHFBF, HFBF, fporbf): New.
! 	(VQXMOV): Add V8BF.
! 	* config/arm/neon.md: Add BF vector types to movhf NEON move patterns.
! 	* config/arm/vfp.md: Add BFmode to movhf patterns.
  
! 2020-01-16  Mihail Ionescu  <mihail.ionescu@arm.com>
! 	    Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm-cpus.in (mve, mve_float): New features.
! 	(dsp, mve, mve.fp): New options.
! 	* config/arm/arm.h (TARGET_HAVE_MVE, TARGET_HAVE_MVE_FLOAT): Define.
! 	* config/arm/t-rmprofile: Map v8.1-M multilibs to v8-M.
! 	* doc/invoke.texi: Document the armv8.1-m mve and dps options.
  
! 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
! 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
  
! 	* config/arm/arm-cpus.in (ARMv8_1m_main): Redefine as an extension to
! 	Armv8-M Mainline.
! 	* config/arm/arm.c (arm_options_perform_arch_sanity_checks): Remove
! 	error for using -mcmse when targeting Armv8.1-M Mainline.
  
! 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
! 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
  
! 	* config/arm/arm.md (nonsecure_call_internal): Do not force memory
! 	address in r4 when targeting Armv8.1-M Mainline.
! 	(nonsecure_call_value_internal): Likewise.
! 	* config/arm/thumb2.md (nonsecure_call_reg_thumb2): Make memory address
! 	a register match_operand again.  Emit BLXNS when targeting
! 	Armv8.1-M Mainline.
! 	(nonsecure_call_value_reg_thumb2): Likewise.
  
! 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
! 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
  
! 	* config/arm/arm.c (arm_add_cfa_adjust_cfa_note): Declare early.
! 	(cmse_nonsecure_call_inline_register_clear): Define new lazy_fpclear
! 	variable as true when floating-point ABI is not hard.  Replace
! 	check against TARGET_HARD_FLOAT_ABI by checks against lazy_fpclear.
! 	Generate VLSTM and VLLDM instruction respectively before and
! 	after a function call to cmse_nonsecure_call function.
! 	* config/arm/unspecs.md (VUNSPEC_VLSTM): Define unspec.
! 	(VUNSPEC_VLLDM): Likewise.
! 	* config/arm/vfp.md (lazy_store_multiple_insn): New define_insn.
! 	(lazy_load_multiple_insn): Likewise.
  
! 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
! 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
  
! 	* config/arm/arm.c (vfp_emit_fstmd): Declare early.
! 	(arm_emit_vfp_multi_reg_pop): Likewise.
! 	(cmse_nonsecure_call_inline_register_clear): Abstract number of VFP
! 	registers to clear in max_fp_regno.  Emit VPUSH and VPOP to save and
! 	restore callee-saved VFP registers.
  
! 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
! 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
  
! 	* config/arm/arm.c (arm_emit_multi_reg_pop): Declare early.
! 	(cmse_nonsecure_call_clear_caller_saved): Rename into ...
! 	(cmse_nonsecure_call_inline_register_clear): This.  Save and clear
! 	callee-saved GPRs as well as clear ip register before doing a nonsecure
! 	call then restore callee-saved GPRs after it when targeting
! 	Armv8.1-M Mainline.
! 	(arm_reorg): Adapt to function rename.
  
! 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
! 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
  
! 	* config/arm/arm-protos.h (clear_operation_p): Adapt prototype.
! 	* config/arm/arm.c (clear_operation_p): Extend to be able to check a
! 	clear_vfp_multiple pattern based on a new vfp parameter.
! 	(cmse_clear_registers): Generate VSCCLRM to clear VFP registers when
! 	targeting Armv8.1-M Mainline.
! 	(cmse_nonsecure_entry_clear_before_return): Clear VFP registers
! 	unconditionally when targeting Armv8.1-M Mainline architecture.  Check
! 	whether VFP registers are available before looking call_used_regs for a
! 	VFP register.
! 	* config/arm/predicates.md (clear_multiple_operation): Adapt to change
! 	of prototype of clear_operation_p.
! 	(clear_vfp_multiple_operation): New predicate.
! 	* config/arm/unspecs.md (VUNSPEC_VSCCLRM_VPR): New volatile unspec.
! 	* config/arm/vfp.md (clear_vfp_multiple): New define_insn.
  
! 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
! 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
  
! 	* config/arm/arm-protos.h (clear_operation_p): Declare.
! 	* config/arm/arm.c (clear_operation_p): New function.
! 	(cmse_clear_registers): Generate clear_multiple instruction pattern if
! 	targeting Armv8.1-M Mainline or successor.
! 	(output_return_instruction): Only output APSR register clearing if
! 	Armv8.1-M Mainline instructions not available.
! 	(thumb_exit): Likewise.
! 	* config/arm/predicates.md (clear_multiple_operation): New predicate.
! 	* config/arm/thumb2.md (clear_apsr): New define_insn.
! 	(clear_multiple): Likewise.
! 	* config/arm/unspecs.md (VUNSPEC_CLRM_APSR): New volatile unspec.
  
! 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
! 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
  
! 	* config/arm/arm.c (fp_sysreg_names): Declare and define.
! 	(use_return_insn): Also return false for Armv8.1-M Mainline.
! 	(output_return_instruction): Skip FPSCR clearing if Armv8.1-M
! 	Mainline instructions are available.
! 	(arm_compute_frame_layout): Allocate space in frame for FPCXTNS
! 	when targeting Armv8.1-M Mainline Security Extensions.
! 	(arm_expand_prologue): Save FPCXTNS if this is an Armv8.1-M
! 	Mainline entry function.
! 	(cmse_nonsecure_entry_clear_before_return): Clear IP and r4 if
! 	targeting Armv8.1-M Mainline or successor.
! 	(arm_expand_epilogue): Fix indentation of caller-saved register
! 	clearing.  Restore FPCXTNS if this is an Armv8.1-M Mainline
! 	entry function.
! 	* config/arm/arm.h (TARGET_HAVE_FP_CMSE): New macro.
! 	(FP_SYSREGS): Likewise.
! 	(enum vfp_sysregs_encoding): Define enum.
! 	(fp_sysreg_names): Declare.
! 	* config/arm/unspecs.md (VUNSPEC_VSTR_VLDR): New volatile unspec.
! 	* config/arm/vfp.md (push_fpsysreg_insn): New define_insn.
! 	(pop_fpsysreg_insn): Likewise.
  
! 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
! 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
  
! 	* config/arm/arm-cpus.in (armv8_1m_main): New feature.
! 	(ARMv4, ARMv4t, ARMv5t, ARMv5te, ARMv5tej, ARMv6, ARMv6j, ARMv6k,
! 	ARMv6z, ARMv6kz, ARMv6zk, ARMv6t2, ARMv6m, ARMv7, ARMv7a, ARMv7ve,
! 	ARMv7r, ARMv7m, ARMv7em, ARMv8a, ARMv8_1a, ARMv8_2a, ARMv8_3a,
! 	ARMv8_4a, ARMv8_5a, ARMv8m_base, ARMv8m_main, ARMv8r): Reindent.
! 	(ARMv8_1m_main): New feature group.
! 	(armv8.1-m.main): New architecture.
! 	* config/arm/arm-tables.opt: Regenerate.
! 	* config/arm/arm.c (arm_arch8_1m_main): Define and default initialize.
! 	(arm_option_reconfigure_globals): Initialize arm_arch8_1m_main.
! 	(arm_options_perform_arch_sanity_checks): Error out when targeting
! 	Armv8.1-M Mainline Security Extensions.
! 	* config/arm/arm.h (arm_arch8_1m_main): Declare.
  
! 2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (aarch64_bfdot,
! 	aarch64_bfdot_lane, aarch64_bfdot_laneq): New.
! 	* config/aarch64/aarch64-simd.md (aarch64_bfdot, aarch64_bfdot_lane,
! 	aarch64_bfdot_laneq): New.
! 	* config/aarch64/arm_bf16.h (vbfdot_f32, vbfdotq_f32,
! 	vbfdot_lane_f32, vbfdotq_lane_f32, vbfdot_laneq_f32,
! 	vbfdotq_laneq_f32): New.
! 	* config/aarch64/iterators.md (UNSPEC_BFDOT, Vbfdottype,
! 	VBFMLA_W, VBF): New.
! 	(isquadop): Add V4BF, V8BF.
  
! 2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
  
! 	* config/aarch64/aarch64-builtins.c: (enum aarch64_type_qualifiers):
! 	New qualifier_lane_quadtup_index, TYPES_TERNOP_SSUS,
! 	TYPES_QUADOPSSUS_LANE_QUADTUP, TYPES_QUADOPSSSU_LANE_QUADTUP.
! 	(aarch64_simd_expand_args): Add case SIMD_ARG_LANE_QUADTUP_INDEX.
! 	(aarch64_simd_expand_builtin): Add qualifier_lane_quadtup_index.
! 	* config/aarch64/aarch64-simd-builtins.def (usdot, usdot_lane,
! 	usdot_laneq, sudot_lane,sudot_laneq): New.
! 	* config/aarch64/aarch64-simd.md (aarch64_usdot): New.
! 	(aarch64_<sur>dot_lane): New.
! 	* config/aarch64/arm_neon.h (vusdot_s32): New.
! 	(vusdotq_s32): New.
! 	(vusdot_lane_s32): New.
! 	(vsudot_lane_s32): New.
! 	* config/aarch64/iterators.md (DOTPROD_I8MM): New iterator.
! 	(UNSPEC_USDOT, UNSPEC_SUDOT): New unspecs.
  
! 2020-01-16  Martin Liska  <mliska@suse.cz>
  
! 	* value-prof.c (dump_histogram_value): Fix
! 	obvious spacing issue.
  
! 2020-01-16  Andrew Pinski  <apinski@marvell.com>
  
! 	* tree-ssa-sccvn.c(vn_reference_lookup_3): Check lhs for
! 	!storage_order_barrier_p.
  
! 2020-01-16  Andrew Pinski  <apinski@marvell.com>
  
! 	* sched-int.h (_dep): Add unused bit-field field for the padding.
! 	* sched-deps.c (init_dep_1): Init unused field.
  
! 2020-01-16  Andrew Pinski  <apinski@marvell.com>
  
! 	* optabs.h (create_expand_operand): Initialize target field also.
  
! 2020-01-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	PR tree-optimization/92429
! 	* tree-ssa-loop-niter.h (simplify_replace_tree): Add parameter.
! 	* tree-ssa-loop-niter.c (simplify_replace_tree): Add parameter to
! 	control folding.
! 	* tree-vect-loop.c (update_epilogue_vinfo): Do not fold when replacing
! 	tree.
  
! 2020-01-16  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_split_sve_subreg_move): Apply
! 	aarch64_sve_int_mode to each mode.
  
! 2020-01-15  David Malcolm  <dmalcolm@redhat.com>
  
! 	* doc/analyzer.texi (Overview): Add note about
! 	-fdump-ipa-analyzer.
  
! 2020-01-15  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	PR tree-optimization/93231
! 	* tree-ssa-forwprop.c (optimize_count_trailing_zeroes): Check
! 	input_type is unsigned.  Use tree_to_shwi for shift constant.
! 	Check CST_STRING element size is CHAR_TYPE_SIZE bits.
! 	(simplify_count_trailing_zeroes): Add test to handle known non-zero
! 	inputs more efficiently.
  
! 2020-01-15  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.md (*movsf_internal): Do not require
! 	SSE2 ISA for alternatives 14 and 15.
  
! 2020-01-15  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/93273
! 	* tree-eh.c (sink_clobbers): If we already visited the destination
! 	block do not defer insertion.
! 	(pass_lower_eh_dispatch::execute): Maintain BB_VISITED for
! 	the purpose of defered insertion.
  
! 2020-01-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	* BASE-VER: Bump to 10.0.1.
  
! 2020-01-15  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/93247
! 	* tree-vect-loop.c (update_epilogue_loop_vinfo): Check the access
! 	type of the stmt that we're going to vectorize.
  
! 2020-01-15  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* tree-vect-slp.c (vectorize_slp_instance_root_stmt): Use a
! 	VIEW_CONVERT_EXPR if the vectorized constructor has a diffeent
! 	type from the lhs.
  
! 2020-01-15  Martin Liska  <mliska@suse.cz>
  
! 	* ipa-profile.c (ipa_profile_read_edge_summary): Do not allow
! 	2 calls of streamer_read_hwi in a function call.
  
! 2020-01-15  Richard Biener  <rguenther@suse.de>
  
! 	* alias.c (record_alias_subset): Avoid redundant work when
! 	subset is already recorded.
  
! 2020-01-14  David Malcolm  <dmalcolm@redhat.com>
  
! 	* doc/invoke.texi (-fdiagnostics-show-cwe): Add note that some of
! 	the analyzer options provide CWE identifiers.
  
! 2020-01-14  David Malcolm  <dmalcolm@redhat.com>
  
! 	* tree-diagnostic-path.cc (path_summary::event_range::print):
! 	When testing for UNKNOWN_LOCATION, look through ad-hoc wrappers
! 	using get_pure_location.
  
! 2020-01-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/93262
! 	* tree-ssa-dse.c (maybe_trim_memstar_call): For *_chk builtins,
! 	perform head trimming only if the last argument is constant,
! 	either all ones, or larger or equal to head trim, in the latter
! 	case decrease the last argument by head_trim.
  
! 	PR tree-optimization/93249
! 	* tree-ssa-dse.c: Include builtins.h and gimple-fold.h.
! 	(maybe_trim_memstar_call): Move head_trim and tail_trim vars to
! 	function body scope, reindent.  For BUILTIN_IN_STRNCPY*, don't
! 	perform head trim unless we can prove there are no '\0' chars
! 	from the source among the first head_trim chars.
  
! 2020-01-14  David Malcolm  <dmalcolm@redhat.com>
  
! 	* Makefile.in (ANALYZER_OBJS): Add analyzer/function-set.o.
  
! 2020-01-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/93009
! 	* config/i386/sse.md
! 	(*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_1,
! 	*<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_1,
! 	*<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_1,
! 	*<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_1): Use
! 	just a single alternative instead of two, make operands 1 and 2
! 	commutative.
  
! 2020-01-14  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR lto/91576
! 	* ipa-devirt.c (odr_types_equivalent_p): Compare TREE_ADDRESSABLE and
! 	TYPE_MODE.
  
! 2020-01-14  David Malcolm  <dmalcolm@redhat.com>
  
! 	* Makefile.in (lang_opt_files): Add analyzer.opt.
! 	(ANALYZER_OBJS): New.
! 	(OBJS): Add digraph.o, graphviz.o, ordered-hash-map-tests.o,
! 	tristate.o and ANALYZER_OBJS.
! 	(TEXI_GCCINT_FILES): Add analyzer.texi.
! 	* common.opt (-fanalyzer): New driver option.
! 	* config.in: Regenerate.
! 	* configure: Regenerate.
! 	* configure.ac (--disable-analyzer, ENABLE_ANALYZER): New option.
! 	(gccdepdir): Also create depdir for "analyzer" subdir.
! 	* digraph.cc: New file.
! 	* digraph.h: New file.
! 	* doc/analyzer.texi: New file.
! 	* doc/gccint.texi ("Static Analyzer") New menu item.
! 	(analyzer.texi): Include it.
! 	* doc/invoke.texi ("Static Analyzer Options"): New list and new section.
! 	("Warning Options"): Add static analysis warnings to the list.
! 	(-Wno-analyzer-double-fclose): New option.
! 	(-Wno-analyzer-double-free): New option.
! 	(-Wno-analyzer-exposure-through-output-file): New option.
! 	(-Wno-analyzer-file-leak): New option.
! 	(-Wno-analyzer-free-of-non-heap): New option.
! 	(-Wno-analyzer-malloc-leak): New option.
! 	(-Wno-analyzer-possible-null-argument): New option.
! 	(-Wno-analyzer-possible-null-dereference): New option.
! 	(-Wno-analyzer-null-argument): New option.
! 	(-Wno-analyzer-null-dereference): New option.
! 	(-Wno-analyzer-stale-setjmp-buffer): New option.
! 	(-Wno-analyzer-tainted-array-index): New option.
! 	(-Wno-analyzer-use-after-free): New option.
! 	(-Wno-analyzer-use-of-pointer-in-stale-stack-frame): New option.
! 	(-Wno-analyzer-use-of-uninitialized-value): New option.
! 	(-Wanalyzer-too-complex): New option.
! 	(-fanalyzer-call-summaries): New warning.
! 	(-fanalyzer-checker=): New warning.
! 	(-fanalyzer-fine-grained): New warning.
! 	(-fno-analyzer-state-merge): New warning.
! 	(-fno-analyzer-state-purge): New warning.
! 	(-fanalyzer-transitivity): New warning.
! 	(-fanalyzer-verbose-edges): New warning.
! 	(-fanalyzer-verbose-state-changes): New warning.
! 	(-fanalyzer-verbosity=): New warning.
! 	(-fdump-analyzer): New warning.
! 	(-fdump-analyzer-callgraph): New warning.
! 	(-fdump-analyzer-exploded-graph): New warning.
! 	(-fdump-analyzer-exploded-nodes): New warning.
! 	(-fdump-analyzer-exploded-nodes-2): New warning.
! 	(-fdump-analyzer-exploded-nodes-3): New warning.
! 	(-fdump-analyzer-supergraph): New warning.
! 	* doc/sourcebuild.texi (dg-require-dot): New.
! 	(dg-check-dot): New.
! 	* gdbinit.in (break-on-saved-diagnostic): New command.
! 	* graphviz.cc: New file.
! 	* graphviz.h: New file.
! 	* ordered-hash-map-tests.cc: New file.
! 	* ordered-hash-map.h: New file.
! 	* passes.def (pass_analyzer): Add before
! 	pass_ipa_whole_program_visibility.
! 	* selftest-run-tests.c (selftest::run_tests): Call
! 	selftest::ordered_hash_map_tests_cc_tests.
! 	* selftest.h (selftest::ordered_hash_map_tests_cc_tests): New
! 	decl.
! 	* shortest-paths.h: New file.
! 	* timevar.def (TV_ANALYZER): New timevar.
! 	(TV_ANALYZER_SUPERGRAPH): Likewise.
! 	(TV_ANALYZER_STATE_PURGE): Likewise.
! 	(TV_ANALYZER_PLAN): Likewise.
! 	(TV_ANALYZER_SCC): Likewise.
! 	(TV_ANALYZER_WORKLIST): Likewise.
! 	(TV_ANALYZER_DUMP): Likewise.
! 	(TV_ANALYZER_DIAGNOSTICS): Likewise.
! 	(TV_ANALYZER_SHORTEST_PATHS): Likewise.
! 	* tree-pass.h (make_pass_analyzer): New decl.
! 	* tristate.cc: New file.
! 	* tristate.h: New file.
  
! 2020-01-14  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/93254
! 	* config/i386/i386.md (*movsf_internal): Require SSE2 ISA for
! 	alternatives 9 and 10.
  
! 2020-01-14  David Malcolm  <dmalcolm@redhat.com>
  
! 	* attribs.c (excl_hash_traits::empty_zero_p): New static constant.
! 	* gcov.c (function_start_pair_hash::empty_zero_p): Likewise.
! 	* graphite.c (struct sese_scev_hash::empty_zero_p): Likewise.
! 	* hash-map-tests.c (selftest::test_nonzero_empty_key): New selftest.
! 	(selftest::hash_map_tests_c_tests): Call it.
! 	* hash-map-traits.h (simple_hashmap_traits::empty_zero_p):
! 	New static constant, using the value of = H::empty_zero_p.
! 	(unbounded_hashmap_traits::empty_zero_p): Likewise, using the value
! 	from default_hash_traits <Value>.
! 	* hash-map.h (hash_map::empty_zero_p): Likewise, using the value
! 	from Traits.
! 	* hash-set-tests.c (value_hash_traits::empty_zero_p): Likewise.
! 	* hash-table.h (hash_table::alloc_entries): Guard the loop of
! 	calls to mark_empty with !Descriptor::empty_zero_p.
! 	(hash_table::empty_slow): Conditionalize the memset call with a
! 	check that Descriptor::empty_zero_p; otherwise, loop through the
! 	entries calling mark_empty on them.
! 	* hash-traits.h (int_hash::empty_zero_p): New static constant.
! 	(pointer_hash::empty_zero_p): Likewise.
! 	(pair_hash::empty_zero_p): Likewise.
! 	* ipa-devirt.c (default_hash_traits <type_pair>::empty_zero_p):
! 	Likewise.
! 	* ipa-prop.c (ipa_bit_ggc_hash_traits::empty_zero_p): Likewise.
! 	(ipa_vr_ggc_hash_traits::empty_zero_p): Likewise.
! 	* profile.c (location_triplet_hash::empty_zero_p): Likewise.
! 	* sanopt.c (sanopt_tree_triplet_hash::empty_zero_p): Likewise.
! 	(sanopt_tree_couple_hash::empty_zero_p): Likewise.
! 	* tree-hasher.h (int_tree_hasher::empty_zero_p): Likewise.
! 	* tree-ssa-sccvn.c (vn_ssa_aux_hasher::empty_zero_p): Likewise.
! 	* tree-vect-slp.c (bst_traits::empty_zero_p): Likewise.
! 	* tree-vectorizer.h
! 	(default_hash_traits<scalar_cond_masked_key>::empty_zero_p):
! 	Likewise.
  
! 2020-01-14  Kewen Lin  <linkw@gcc.gnu.org>
  
! 	* cfgloopanal.c (average_num_loop_insns): Free bbs when early return,
! 	fix typo on return value.
  
! 2020-01-14  Xiong Hu Luo  <luoxhu@linux.ibm.com>
  
! 	PR ipa/69678
! 	* cgraph.c (symbol_table::create_edge): Init speculative_id and
! 	target_prob.
! 	(cgraph_edge::make_speculative): Add param for setting speculative_id
! 	and target_prob.
! 	(cgraph_edge::speculative_call_info): Update comments and find reference
! 	by speculative_id for multiple indirect targets.
! 	(cgraph_edge::resolve_speculation): Decrease the speculations
! 	for indirect edge, drop it's speculative if not direct target
! 	left. Update comments.
! 	(cgraph_edge::redirect_call_stmt_to_callee): Likewise.
! 	(cgraph_node::dump): Print num_speculative_call_targets.
! 	(cgraph_node::verify_node): Don't report error if speculative
! 	edge not include statement.
! 	(cgraph_edge::num_speculative_call_targets_p): New function.
! 	* cgraph.h (int common_target_id): Remove.
! 	(int common_target_probability): Remove.
! 	(num_speculative_call_targets): New variable.
! 	(make_speculative): Add param for setting speculative_id.
! 	(cgraph_edge::num_speculative_call_targets_p): New declare.
! 	(target_prob): New variable.
! 	(speculative_id): New variable.
! 	* ipa-fnsummary.c (analyze_function_body): Create and duplicate
! 	  call summaries for multiple speculative call targets.
! 	* cgraphclones.c (cgraph_node::create_clone): Clone speculative_id.
! 	* ipa-profile.c (struct speculative_call_target): New struct.
! 	(class speculative_call_summary): New class.
! 	(class speculative_call_summaries): New class.
! 	(call_sums): New variable.
! 	(ipa_profile_generate_summary): Generate indirect multiple targets summaries.
! 	(ipa_profile_write_edge_summary): New function.
! 	(ipa_profile_write_summary): Stream out indirect multiple targets summaries.
! 	(ipa_profile_dump_all_summaries): New function.
! 	(ipa_profile_read_edge_summary): New function.
! 	(ipa_profile_read_summary_section): New function.
! 	(ipa_profile_read_summary): Stream in indirect multiple targets summaries.
! 	(ipa_profile): Generate num_speculative_call_targets from
! 	profile summaries.
! 	* ipa-ref.h (speculative_id): New variable.
! 	* ipa-utils.c (ipa_merge_profiles): Update with target_prob.
! 	* lto-cgraph.c (lto_output_edge): Remove indirect common_target_id and
! 	common_target_probability.   Stream out speculative_id and
! 	num_speculative_call_targets.
! 	(input_edge): Likewise.
! 	* predict.c (dump_prediction): Remove edges count assert to be
! 	precise.
! 	* symtab.c (symtab_node::create_reference): Init speculative_id.
! 	(symtab_node::clone_references): Clone speculative_id.
! 	(symtab_node::clone_referring): Clone speculative_id.
! 	(symtab_node::clone_reference): Clone speculative_id.
! 	(symtab_node::clear_stmts_in_references): Clear speculative_id.
! 	* tree-inline.c (copy_bb): Duplicate all the speculative edges
! 	if indirect call contains multiple speculative targets.
! 	* value-prof.h  (check_ic_target): Remove.
! 	* value-prof.c  (gimple_value_profile_transformations):
! 	Use void function gimple_ic_transform.
! 	* value-prof.c  (gimple_ic_transform): Handle topn case.
! 	Fix comment typos.  Change it to a void function.
  
! 2020-01-13  Andrew Pinski  <apinski@marvell.com>
  
! 	* config/aarch64/aarch64-cores.def (octeontx2): New define.
! 	(octeontx2t98): New define.
! 	(octeontx2t96): New define.
! 	(octeontx2t93): New define.
! 	(octeontx2f95): New define.
! 	(octeontx2f95n): New define.
! 	(octeontx2f95mm): New define.
! 	* config/aarch64/aarch64-tune.md: Regenerate.
! 	* doc/invoke.texi (-mcpu=): Document the new cpu types.
  
! 2020-01-13  Jason Merrill  <jason@redhat.com>
  
! 	PR c++/33799 - destroy return value if local cleanup throws.
! 	* gimplify.c (gimplify_return_expr): Handle COMPOUND_EXPR.
  
! 2020-01-13  Martin Liska  <mliska@suse.cz>
  
! 	* ipa-cp.c (get_max_overall_size): Use newly
! 	renamed param param_ipa_cp_unit_growth.
! 	* params.opt: Remove legacy param name.
  
! 2020-01-13  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/93213
! 	* tree-ssa-strlen.c (handle_store): Only allow single-byte nul-over-nul
! 	stores to be eliminated.
  
! 2020-01-13  Martin Liska  <mliska@suse.cz>
  
! 	* opts.c (print_help): Do not print CL_PARAM
! 	and CL_WARNING for CL_OPTIMIZATION.
  
! 2020-01-13  Jonathan Wakely  <jwakely@redhat.com>
  
! 	PR driver/92757
! 	* doc/invoke.texi (Warning Options): Add caveat about some warnings
! 	depending on optimization settings.
  
! 2020-01-13  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/90838
! 	* tree-ssa-forwprop.c (simplify_count_trailing_zeroes): Use
! 	SCALAR_INT_TYPE_MODE directly in CTZ_DEFINED_VALUE_AT_ZERO macro
! 	argument rather than to initialize temporary for targets that
! 	don't use the mode argument at all.  Initialize ctzval to avoid
! 	warning at -O0.
  
! 2020-01-10  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	* tree.h (OMP_CLAUSE_USE_DEVICE_PTR_IF_PRESENT): New definition.
! 	* tree-core.h: Document it.
! 	* gimplify.c (gimplify_omp_workshare): Set it.
! 	* omp-low.c (lower_omp_target): Use it.
! 	* tree-pretty-print.c (dump_omp_clause): Print it.
  
! 	* omp-low.c (lower_omp_target) <OMP_CLAUSE_USE_DEVICE_PTR etc.>:
! 	Assert that for OpenACC we always have 'GOMP_MAP_USE_DEVICE_PTR'.
  
! 2020-01-10  David Malcolm  <dmalcolm@redhat.com>
  
! 	* Makefile.in (OBJS): Add tree-diagnostic-path.o.
! 	* common.opt (fdiagnostics-path-format=): New option.
! 	(diagnostic_path_format): New enum.
! 	(fdiagnostics-show-path-depths): New option.
! 	* coretypes.h (diagnostic_event_id_t): New forward decl.
! 	* diagnostic-color.c (color_dict): Add "path".
! 	* diagnostic-event-id.h: New file.
! 	* diagnostic-format-json.cc (json_from_expanded_location): Make
! 	non-static.
! 	(json_end_diagnostic): Call context->make_json_for_path if it
! 	exists and the diagnostic has a path.
! 	(diagnostic_output_format_init): Clear context->print_path.
! 	* diagnostic-path.h: New file.
! 	* diagnostic-show-locus.c (colorizer::set_range): Special-case
! 	when printing a run of events in a diagnostic_path so that they
! 	all get the same color.
! 	(layout::m_diagnostic_path_p): New field.
! 	(layout::layout): Initialize it.
! 	(layout::print_any_labels): Don't colorize the label text for an
! 	event in a diagnostic_path.
! 	(gcc_rich_location::add_location_if_nearby): Add
! 	"restrict_to_current_line_spans" and "label" params.  Pass the
! 	former to layout.maybe_add_location_range; pass the latter
! 	when calling add_range.
! 	* diagnostic.c: Include "diagnostic-path.h".
! 	(diagnostic_initialize): Initialize context->path_format and
! 	context->show_path_depths.
! 	(diagnostic_show_any_path): New function.
! 	(diagnostic_path::interprocedural_p): New function.
! 	(diagnostic_report_diagnostic): Call diagnostic_show_any_path.
! 	(simple_diagnostic_path::num_events): New function.
! 	(simple_diagnostic_path::get_event): New function.
! 	(simple_diagnostic_path::add_event): New function.
! 	(simple_diagnostic_event::simple_diagnostic_event): New ctor.
! 	(simple_diagnostic_event::~simple_diagnostic_event): New dtor.
! 	(debug): New overload taking a diagnostic_path *.
! 	* diagnostic.def (DK_DIAGNOSTIC_PATH): New.
! 	* diagnostic.h (enum diagnostic_path_format): New enum.
! 	(json::value): New forward decl.
! 	(diagnostic_context::path_format): New field.
! 	(diagnostic_context::show_path_depths): New field.
! 	(diagnostic_context::print_path): New callback field.
! 	(diagnostic_context::make_json_for_path): New callback field.
! 	(diagnostic_show_any_path): New decl.
! 	(json_from_expanded_location): New decl.
! 	* doc/invoke.texi (-fdiagnostics-path-format=): New option.
! 	(-fdiagnostics-show-path-depths): New option.
! 	(-fdiagnostics-color): Add "path" to description of default
! 	GCC_COLORS; describe it.
! 	(-fdiagnostics-format=json): Document how diagnostic paths are
! 	represented in the JSON output format.
! 	* gcc-rich-location.h (gcc_rich_location::add_location_if_nearby):
! 	Add optional params "restrict_to_current_line_spans" and "label".
! 	* opts.c (common_handle_option): Handle
! 	OPT_fdiagnostics_path_format_ and
! 	OPT_fdiagnostics_show_path_depths.
! 	* pretty-print.c: Include "diagnostic-event-id.h".
! 	(pp_format): Implement "%@" format code for printing
! 	diagnostic_event_id_t *.
! 	(selftest::test_pp_format): Add tests for "%@".
! 	* selftest-run-tests.c (selftest::run_tests): Call
! 	selftest::tree_diagnostic_path_cc_tests.
! 	* selftest.h (selftest::tree_diagnostic_path_cc_tests): New decl.
! 	* toplev.c (general_init): Initialize global_dc->path_format and
! 	global_dc->show_path_depths.
! 	* tree-diagnostic-path.cc: New file.
! 	* tree-diagnostic.c (maybe_unwind_expanded_macro_loc): Make
! 	non-static.  Drop "diagnostic" param in favor of storing the
! 	original value of "where" and re-using it.
! 	(virt_loc_aware_diagnostic_finalizer): Update for dropped param of
! 	maybe_unwind_expanded_macro_loc.
! 	(tree_diagnostics_defaults): Initialize context->print_path and
! 	context->make_json_for_path.
! 	* tree-diagnostic.h (default_tree_diagnostic_path_printer): New
! 	decl.
! 	(default_tree_make_json_for_path): New decl.
! 	(maybe_unwind_expanded_macro_loc): New decl.
  
! 2020-01-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/93210
! 	* fold-const.h (native_encode_initializer,
! 	can_native_interpret_type_p): Declare.
! 	* fold-const.c (native_encode_string): Fix up handling with off != -1,
! 	simplify.
! 	(native_encode_initializer): New function, moved from dwarf2out.c.
! 	Adjust to native_encode_expr compatible arguments, including dry-run
! 	and partial extraction modes.  Don't handle STRING_CST.
! 	(can_native_interpret_type_p): No longer static.
! 	* gimple-fold.c (fold_ctor_reference): For native_encode_expr, verify
! 	offset / BITS_PER_UNIT fits into int and don't call it if
! 	can_native_interpret_type_p fails.  If suboff is NULL and for
! 	CONSTRUCTOR fold_{,non}array_ctor_reference returns NULL, retry with
! 	native_encode_initializer.
! 	(fold_const_aggregate_ref_1): Formatting fix.
! 	* dwarf2out.c (native_encode_initializer): Moved to fold-const.c.
! 	(tree_add_const_value_attribute): Adjust caller.
  
! 	PR tree-optimization/90838
! 	* tree-ssa-forwprop.c (simplify_count_trailing_zeroes): Use
! 	SCALAR_INT_TYPE_MODE instead of TYPE_MODE as operand of
! 	CTZ_DEFINED_VALUE_AT_ZERO.
  
! 2020-01-10  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR inline-asm/93027
! 	* lra-constraints.c (match_reload): Permit input operands have the
! 	same mode as output while other input operands have a different
! 	mode.
  
! 2020-01-10  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	PR tree-optimization/90838
! 	* tree-ssa-forwprop.c (check_ctz_array): Add new function.
! 	(check_ctz_string): Likewise.
! 	(optimize_count_trailing_zeroes): Likewise.
! 	(simplify_count_trailing_zeroes): Likewise.
! 	(pass_forwprop::execute): Try ctz simplification.
! 	* match.pd: Add matching for ctz idioms.
  
! 2020-01-10  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_invalid_conversion): New function
! 	for target hook.
! 	(aarch64_invalid_unary_op): New function for target hook.
! 	(aarch64_invalid_binary_op): New function for target hook.
  
! 2020-01-10  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
  
! 	* config.gcc: Add arm_bf16.h.
! 	* config/aarch64/aarch64-builtins.c
! 	(aarch64_simd_builtin_std_type): Add BFmode.
! 	(aarch64_init_simd_builtin_types): Define element types for vector
! 	types.
! 	(aarch64_init_bf16_types): New function.
! 	(aarch64_general_init_builtins): Add arm_init_bf16_types function call.
! 	* config/aarch64/aarch64-modes.def: Add BFmode and V4BF, V8BF vector
! 	modes.
! 	* config/aarch64/aarch64-simd-builtin-types.def: Add BF SIMD types.
! 	* config/aarch64/aarch64-simd.md: Add BF vector types to NEON move
! 	patterns.
! 	* config/aarch64/aarch64.h (AARCH64_VALID_SIMD_DREG_MODE): Add V4BF.
! 	(AARCH64_VALID_SIMD_QREG_MODE): Add V8BF.
! 	* config/aarch64/aarch64.c
! 	(aarch64_classify_vector_mode): Add support for BF types.
! 	(aarch64_gimplify_va_arg_expr): Add support for BF types.
! 	(aarch64_vq_mode): Add support for BF types.
! 	(aarch64_simd_container_mode): Add support for BF types.
! 	(aarch64_mangle_type): Add support for BF scalar type.
! 	* config/aarch64/aarch64.md: Add BFmode to movhf pattern.
! 	* config/aarch64/arm_bf16.h: New file.
! 	* config/aarch64/arm_neon.h: Add arm_bf16.h and Bfloat vector types.
! 	* config/aarch64/iterators.md: Add BF types to mode attributes.
! 	(HFBF, GPF_TF_F16_MOV, VDMOV, VQMOV, VQMOV_NO2Em VALL_F16MOV): New.
  
! 2020-01-10  Jason Merrill  <jason@redhat.com>
  
! 	PR c++/93173 - incorrect tree sharing.
! 	* gimplify.c (copy_if_shared): No longer static.
! 	* gimplify.h: Declare it.
  
! 2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* doc/invoke.texi (-msve-vector-bits=): Document that
! 	-msve-vector-bits=128 now generates VL-specific code for
! 	little-endian targets.
! 	* config/aarch64/aarch64-sve-builtins.cc (register_builtin_types): Use
! 	build_vector_type_for_mode to construct the data vector types.
! 	* config/aarch64/aarch64.c (aarch64_convert_sve_vector_bits): Generate
! 	VL-specific code for -msve-vector-bits=128 on little-endian targets.
! 	(aarch64_simd_container_mode): Always prefer Advanced SIMD modes
! 	for 128-bit vectors.
  
! 2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_evpc_sel): Fix gen_vcond_mask
! 	invocation.
  
! 2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-builtins.c
! 	(aarch64_builtin_vectorized_function): Check for specific vector modes,
! 	rather than checking the number of elements and the element mode.
  
! 2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* tree-vect-loop.c (vect_create_epilog_for_reduction): Use
! 	get_related_vectype_for_scalar_type rather than build_vector_type
! 	to create the index type for a conditional reduction.
  
! 2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* tree-vect-loop.c (update_epilogue_loop_vinfo): Update DR_REF
! 	for any type of gather or scatter, including strided accesses.
  
! 2020-01-10  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* tree-vectorizer.h (get_dr_vinfo_offset): Add missing function
! 	 comment.
  
! 2020-01-10  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* tree-vect-data-refs.c (vect_create_addr_base_for_vector_ref): Use
! 	get_dr_vinfo_offset
! 	* tree-vect-loop.c (update_epilogue_loop_vinfo):  Remove orig_drs_init
! 	parameter and its use to reset DR_OFFSET's.
! 	(vect_transform_loop): Remove orig_drs_init argument.
! 	* tree-vect-loop-manip.c (vect_update_init_of_dr): Update the offset
! 	member of dr_vec_info rather than the offset of the associated
! 	data_reference's innermost_loop_behavior.
! 	(vect_update_init_of_dr): Pass dr_vec_info instead of data_reference.
! 	(vect_do_peeling): Remove orig_drs_init parameter and its construction.
! 	* tree-vect-stmts.c (check_scan_store): Replace use of DR_OFFSET with
! 	get_dr_vinfo_offset.
! 	(vectorizable_store): Likewise.
! 	(vectorizable_load): Likewise.
  
! 2020-01-10  Richard Biener  <rguenther@suse.de>
  
! 	* gimple-ssa-store-merging
! 	(pass_store_merging::terminate_all_aliasing_chains): Cache alias info.
  
! 2020-01-10  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/93217
! 	* ipa-inline-analysis.c (offline_size): Make proper parenthesis
! 	encapsulation that was there before r280040.
  
! 2020-01-10  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/93199
! 	* tree-eh.c (sink_clobbers): Move clobbers to out-of-IL
! 	sequences to avoid walking them again for secondary opportunities.
! 	(pass_lower_eh_dispatch::execute): Instead actually insert
! 	them here.
  
! 2020-01-10  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/93199
! 	* tree-eh.c (redirect_eh_edge_1): Avoid some work if possible.
! 	(cleanup_all_empty_eh): Walk landing pads in reverse order to
! 	avoid quadraticness.
  
! 2020-01-10  Martin Jambor  <mjambor@suse.cz>
  
! 	* params.opt (param_ipa_sra_max_replacements): Mark as Optimization.
! 	* ipa-sra.c (pull_accesses_from_callee): New parameter caller, use it
! 	to get param_ipa_sra_max_replacements.
! 	(param_splitting_across_edge): Pass the caller to
! 	pull_accesses_from_callee.
  
! 2020-01-10  Martin Jambor  <mjambor@suse.cz>
  
! 	* params.opt (param_ipcp_unit_growth): Mark as Optimization.
! 	* ipa-cp.c (max_new_size): Removed.
! 	(orig_overall_size): New variable.
! 	(get_max_overall_size): New function.
! 	(estimate_local_effects): Use it.  Adjust dump.
! 	(decide_about_value): Likewise.
! 	(ipcp_propagate_stage): Do not calculate max_new_size, just store
! 	orig_overall_size.  Adjust dump.
! 	(ipa_cp_c_finalize): Clear orig_overall_size instead of max_new_size.
  
! 2020-01-10  Martin Jambor  <mjambor@suse.cz>
  
! 	* params.opt (param_ipa_max_agg_items): Mark as Optimization
! 	* ipa-cp.c (merge_agg_lats_step): New parameter max_agg_items, use
! 	instead of param_ipa_max_agg_items.
! 	(merge_aggregate_lattices): Extract param_ipa_max_agg_items from
! 	optimization info for the callee.
  
! 2020-01-09  Kwok Cheung Yeung  <kcy@codesourcery.com>
  
! 	* lto-streamer-in.c (input_function): Remove streamed-in inline debug
! 	markers	if debug_inline_points is false.
  
! 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config.gcc (aarch64*-*-*): Add aarch64-sve-builtins-sve2.o to
! 	extra_objs.
! 	* config/aarch64/t-aarch64 (aarch64-sve-builtins.o): Depend on
! 	aarch64-sve-builtins-base.def, aarch64-sve-builtins-sve2.def and
! 	aarch64-sve-builtins-sve2.h.
! 	(aarch64-sve-builtins-sve2.o): New rule.
! 	* config/aarch64/aarch64.h (AARCH64_ISA_SVE2_AES): New macro.
! 	(AARCH64_ISA_SVE2_BITPERM, AARCH64_ISA_SVE2_SHA3): Likewise.
! 	(AARCH64_ISA_SVE2_SM4, TARGET_SVE2_AES, TARGET_SVE2_BITPERM): Likewise.
! 	(TARGET_SVE2_SHA, TARGET_SVE2_SM4): Likewise.
! 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
! 	TARGET_SVE2_AES, TARGET_SVE2_BITPERM, TARGET_SVE2_SHA3 and
! 	TARGET_SVE2_SM4.
! 	* config/aarch64/aarch64-sve.md: Update comments with SVE2
! 	instructions that are handled here.
! 	(@cond_asrd<mode>): Generalize to...
! 	(@cond_<SVE_INT_SHIFT_IMM:sve_int_op><mode>): ...this.
! 	(*cond_asrd<mode>_2): Generalize to...
! 	(*cond_<SVE_INT_SHIFT_IMM:sve_int_op><mode>_2): ...this.
! 	(*cond_asrd<mode>_z): Generalize to...
! 	(*cond_<SVE_INT_SHIFT_IMM:sve_int_op><mode>_z): ...this.
! 	* config/aarch64/aarch64.md (UNSPEC_LDNT1_GATHER): New unspec.
! 	(UNSPEC_STNT1_SCATTER, UNSPEC_WHILEGE, UNSPEC_WHILEGT): Likewise.
! 	(UNSPEC_WHILEHI, UNSPEC_WHILEHS): Likewise.
! 	* config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): New
! 	pattern.
! 	(@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode><SVE_PARTIAL_I:mode>)
! 	(@aarch64_scatter_stnt<mode>): Likewise.
! 	(@aarch64_scatter_stnt_<SVE_FULL_SDI:mode><SVE_PARTIAL_I:mode>)
! 	(@aarch64_mul_lane_<mode>): Likewise.
! 	(@aarch64_sve_suqadd<mode>_const): Likewise.
! 	(*<sur>h<addsub><mode>): Generalize to...
! 	(@aarch64_pred_<SVE2_COND_INT_BINARY_REV:sve_int_op><mode>): ...this
! 	new pattern.
! 	(@cond_<SVE2_COND_INT_BINARY:sve_int_op><mode>): New expander.
! 	(*cond_<SVE2_COND_INT_BINARY:sve_int_op><mode>_2): New pattern.
! 	(*cond_<SVE2_COND_INT_BINARY:sve_int_op><mode>_3): Likewise.
! 	(*cond_<SVE2_COND_INT_BINARY:sve_int_op><mode>_any): Likewise.
! 	(*cond_<SVE2_COND_INT_BINARY_NOREV:sve_int_op><mode>_z): Likewise.
! 	(@aarch64_sve_<SVE2_INT_BINARY:sve_int_op><mode>):: Likewise.
! 	(@aarch64_sve_<SVE2_INT_BINARY:sve_int_op>_lane_<mode>): Likewise.
! 	(@aarch64_pred_<SVE2_COND_INT_SHIFT:sve_int_op><mode>): Likewise.
! 	(@cond_<SVE2_COND_INT_SHIFT:sve_int_op><mode>): New expander.
! 	(*cond_<SVE2_COND_INT_SHIFT:sve_int_op><mode>_2): New pattern.
! 	(*cond_<SVE2_COND_INT_SHIFT:sve_int_op><mode>_3): Likewise.
! 	(*cond_<SVE2_COND_INT_SHIFT:sve_int_op><mode>_any): Likewise.
! 	(@aarch64_sve_<SVE2_INT_TERNARY:sve_int_op><mode>): Likewise.
! 	(@aarch64_sve_<SVE2_INT_TERNARY_LANE:sve_int_op>_lane_<mode>)
! 	(@aarch64_sve_add_mul_lane_<mode>): Likewise.
! 	(@aarch64_sve_sub_mul_lane_<mode>): Likewise.
! 	(@aarch64_sve2_xar<mode>): Likewise.
! 	(@aarch64_sve2_bcax<mode>): Likewise.
! 	(*aarch64_sve2_eor3<mode>): Rename to...
! 	(@aarch64_sve2_eor3<mode>): ...this.
! 	(@aarch64_sve2_bsl<mode>): New expander.
! 	(@aarch64_sve2_nbsl<mode>): Likewise.
! 	(@aarch64_sve2_bsl1n<mode>): Likewise.
! 	(@aarch64_sve2_bsl2n<mode>): Likewise.
! 	(@aarch64_sve_add_<SHIFTRT:sve_int_op><mode>): Likewise.
! 	(*aarch64_sve2_sra<mode>): Add MOVPRFX support.
! 	(@aarch64_sve_add_<VRSHR_N:sve_int_op><mode>): New pattern.
! 	(@aarch64_sve_<SVE2_INT_SHIFT_INSERT:sve_int_op><mode>): Likewise.
! 	(@aarch64_sve2_<USMAX:su>aba<mode>): New expander.
! 	(*aarch64_sve2_<USMAX:su>aba<mode>): New pattern.
! 	(@aarch64_sve_<SVE2_INT_BINARY_WIDE:sve_int_op><mode>): Likewise.
! 	(<su>mull<bt><Vwide>): Generalize to...
! 	(@aarch64_sve_<SVE2_INT_BINARY_LONG:sve_int_op><mode>): ...this new
! 	pattern.
! 	(@aarch64_sve_<SVE2_INT_BINARY_LONG_lANE:sve_int_op>_lane_<mode>)
! 	(@aarch64_sve_<SVE2_INT_SHIFT_IMM_LONG:sve_int_op><mode>)
! 	(@aarch64_sve_add_<SVE2_INT_ADD_BINARY_LONG:sve_int_op><mode>)
! 	(@aarch64_sve_add_<SVE2_INT_ADD_BINARY_LONG_LANE:sve_int_op>_lane_<mode>)
! 	(@aarch64_sve_qadd_<SVE2_INT_QADD_BINARY_LONG:sve_int_op><mode>)
! 	(@aarch64_sve_qadd_<SVE2_INT_QADD_BINARY_LONG_LANE:sve_int_op>_lane_<mode>)
! 	(@aarch64_sve_sub_<SVE2_INT_SUB_BINARY_LONG:sve_int_op><mode>)
! 	(@aarch64_sve_sub_<SVE2_INT_SUB_BINARY_LONG_LANE:sve_int_op>_lane_<mode>)
! 	(@aarch64_sve_qsub_<SVE2_INT_QSUB_BINARY_LONG:sve_int_op><mode>)
! 	(@aarch64_sve_qsub_<SVE2_INT_QSUB_BINARY_LONG_LANE:sve_int_op>_lane_<mode>)
! 	(@aarch64_sve_<SVE2_FP_TERNARY_LONG:sve_fp_op><mode>): New patterns.
! 	(@aarch64_<SVE2_FP_TERNARY_LONG_LANE:sve_fp_op>_lane_<mode>)
! 	(@aarch64_sve_<SVE2_INT_UNARY_NARROWB:sve_int_op><mode>): Likewise.
! 	(@aarch64_sve_<SVE2_INT_UNARY_NARROWT:sve_int_op><mode>): Likewise.
! 	(@aarch64_sve_<SVE2_INT_BINARY_NARROWB:sve_int_op><mode>): Likewise.
! 	(@aarch64_sve_<SVE2_INT_BINARY_NARROWT:sve_int_op><mode>): Likewise.
! 	(<SHRNB:r>shrnb<mode>): Generalize to...
! 	(@aarch64_sve_<SVE2_INT_SHIFT_IMM_NARROWB:sve_int_op><mode>): ...this
! 	new pattern.
! 	(<SHRNT:r>shrnt<mode>): Generalize to...
! 	(@aarch64_sve_<SVE2_INT_SHIFT_IMM_NARROWT:sve_int_op><mode>): ...this
! 	new pattern.
! 	(@aarch64_pred_<SVE2_INT_BINARY_PAIR:sve_int_op><mode>): New pattern.
! 	(@aarch64_pred_<SVE2_FP_BINARY_PAIR:sve_fp_op><mode>): Likewise.
! 	(@cond_<SVE2_INT_BINARY_PAIR_LONG:sve_int_op><mode>): New expander.
! 	(*cond_<SVE2_INT_BINARY_PAIR_LONG:sve_int_op><mode>_2): New pattern.
! 	(*cond_<SVE2_INT_BINARY_PAIR_LONG:sve_int_op><mode>_z): Likewise.
! 	(@aarch64_sve_<SVE2_INT_CADD:optab><mode>): Likewise.
! 	(@aarch64_sve_<SVE2_INT_CMLA:optab><mode>): Likewise.
! 	(@aarch64_<SVE2_INT_CMLA:optab>_lane_<mode>): Likewise.
! 	(@aarch64_sve_<SVE2_INT_CDOT:optab><mode>): Likewise.
! 	(@aarch64_<SVE2_INT_CDOT:optab>_lane_<mode>): Likewise.
! 	(@aarch64_pred_<SVE2_COND_FP_UNARY_LONG:sve_fp_op><mode>): Likewise.
! 	(@cond_<SVE2_COND_FP_UNARY_LONG:sve_fp_op><mode>): New expander.
! 	(*cond_<SVE2_COND_FP_UNARY_LONG:sve_fp_op><mode>): New pattern.
! 	(@aarch64_sve2_cvtnt<mode>): Likewise.
! 	(@aarch64_pred_<SVE2_COND_FP_UNARY_NARROWB:sve_fp_op><mode>): Likewise.
! 	(@cond_<SVE2_COND_FP_UNARY_NARROWB:sve_fp_op><mode>): New expander.
! 	(*cond_<SVE2_COND_FP_UNARY_NARROWB:sve_fp_op><mode>_any): New pattern.
! 	(@aarch64_sve2_cvtxnt<mode>): Likewise.
! 	(@aarch64_pred_<SVE2_U32_UNARY:sve_int_op><mode>): Likewise.
! 	(@cond_<SVE2_U32_UNARY:sve_int_op><mode>): New expander.
! 	(*cond_<SVE2_U32_UNARY:sve_int_op><mode>): New pattern.
! 	(@aarch64_pred_<SVE2_COND_INT_UNARY_FP:sve_fp_op><mode>): Likewise.
! 	(@cond_<SVE2_COND_INT_UNARY_FP:sve_fp_op><mode>): New expander.
! 	(*cond_<SVE2_COND_INT_UNARY_FP:sve_fp_op><mode>): New pattern.
! 	(@aarch64_sve2_pmul<mode>): Likewise.
! 	(@aarch64_sve_<SVE2_PMULL:optab><mode>): Likewise.
! 	(@aarch64_sve_<SVE2_PMULL_PAIR:optab><mode>): Likewise.
! 	(@aarch64_sve2_tbl2<mode>): Likewise.
! 	(@aarch64_sve2_tbx<mode>): Likewise.
! 	(@aarch64_sve_<SVE2_INT_BITPERM:sve_int_op><mode>): Likewise.
! 	(@aarch64_sve2_histcnt<mode>): Likewise.
! 	(@aarch64_sve2_histseg<mode>): Likewise.
! 	(@aarch64_pred_<SVE2_MATCH:sve_int_op><mode>): Likewise.
! 	(*aarch64_pred_<SVE2_MATCH:sve_int_op><mode>_cc): Likewise.
! 	(*aarch64_pred_<SVE2_MATCH:sve_int_op><mode>_ptest): Likewise.
! 	(aarch64_sve2_aes<CRYPTO_AES:aes_op>): Likewise.
! 	(aarch64_sve2_aes<CRYPTO_AESMC:aesmc_op>): Likewise.
! 	(*aarch64_sve2_aese_fused, *aarch64_sve2_aesd_fused): Likewise.
! 	(aarch64_sve2_rax1, aarch64_sve2_sm4e, aarch64_sve2_sm4ekey): Likewise.
! 	(<su>mulh<r>s<mode>3): Update after above pattern name changes.
! 	* config/aarch64/iterators.md (VNx16QI_ONLY, VNx4SF_ONLY)
! 	(SVE_STRUCT2, SVE_FULL_BHI, SVE_FULL_HSI, SVE_FULL_HDI)
! 	(SVE2_PMULL_PAIR_I): New mode iterators.
! 	(UNSPEC_ADCLB, UNSPEC_ADCLT, UNSPEC_ADDHNB, UNSPEC_ADDHNT, UNSPEC_BDEP)
! 	(UNSPEC_BEXT, UNSPEC_BGRP, UNSPEC_CADD90, UNSPEC_CADD270, UNSPEC_CDOT)
! 	(UNSPEC_CDOT90, UNSPEC_CDOT180, UNSPEC_CDOT270, UNSPEC_CMLA)
! 	(UNSPEC_CMLA90, UNSPEC_CMLA180, UNSPEC_CMLA270, UNSPEC_COND_FCVTLT)
! 	(UNSPEC_COND_FCVTNT, UNSPEC_COND_FCVTX, UNSPEC_COND_FCVTXNT)
! 	(UNSPEC_COND_FLOGB, UNSPEC_EORBT, UNSPEC_EORTB, UNSPEC_FADDP)
! 	(UNSPEC_FMAXP, UNSPEC_FMAXNMP, UNSPEC_FMLALB, UNSPEC_FMLALT)
! 	(UNSPEC_FMLSLB, UNSPEC_FMLSLT, UNSPEC_FMINP, UNSPEC_FMINNMP)
! 	(UNSPEC_HISTCNT, UNSPEC_HISTSEG, UNSPEC_MATCH, UNSPEC_NMATCH)
! 	(UNSPEC_PMULLB, UNSPEC_PMULLB_PAIR, UNSPEC_PMULLT, UNSPEC_PMULLT_PAIR)
! 	(UNSPEC_RADDHNB, UNSPEC_RADDHNT, UNSPEC_RSUBHNB, UNSPEC_RSUBHNT)
! 	(UNSPEC_SLI, UNSPEC_SRI, UNSPEC_SABDLB, UNSPEC_SABDLT, UNSPEC_SADDLB)
! 	(UNSPEC_SADDLBT, UNSPEC_SADDLT, UNSPEC_SADDWB, UNSPEC_SADDWT)
! 	(UNSPEC_SBCLB, UNSPEC_SBCLT, UNSPEC_SMAXP, UNSPEC_SMINP)
! 	(UNSPEC_SQCADD90, UNSPEC_SQCADD270, UNSPEC_SQDMULLB, UNSPEC_SQDMULLBT)
! 	(UNSPEC_SQDMULLT, UNSPEC_SQRDCMLAH, UNSPEC_SQRDCMLAH90)
! 	(UNSPEC_SQRDCMLAH180, UNSPEC_SQRDCMLAH270, UNSPEC_SQRSHRNB)
! 	(UNSPEC_SQRSHRNT, UNSPEC_SQRSHRUNB, UNSPEC_SQRSHRUNT, UNSPEC_SQSHRNB)
! 	(UNSPEC_SQSHRNT, UNSPEC_SQSHRUNB, UNSPEC_SQSHRUNT, UNSPEC_SQXTNB)
! 	(UNSPEC_SQXTNT, UNSPEC_SQXTUNB, UNSPEC_SQXTUNT, UNSPEC_SSHLLB)
! 	(UNSPEC_SSHLLT, UNSPEC_SSUBLB, UNSPEC_SSUBLBT, UNSPEC_SSUBLT)
! 	(UNSPEC_SSUBLTB, UNSPEC_SSUBWB, UNSPEC_SSUBWT, UNSPEC_SUBHNB)
! 	(UNSPEC_SUBHNT, UNSPEC_TBL2, UNSPEC_UABDLB, UNSPEC_UABDLT)
! 	(UNSPEC_UADDLB, UNSPEC_UADDLT, UNSPEC_UADDWB, UNSPEC_UADDWT)
! 	(UNSPEC_UMAXP, UNSPEC_UMINP, UNSPEC_UQRSHRNB, UNSPEC_UQRSHRNT)
! 	(UNSPEC_UQSHRNB, UNSPEC_UQSHRNT, UNSPEC_UQXTNB, UNSPEC_UQXTNT)
! 	(UNSPEC_USHLLB, UNSPEC_USHLLT, UNSPEC_USUBLB, UNSPEC_USUBLT)
! 	(UNSPEC_USUBWB, UNSPEC_USUBWT): New unspecs.
! 	(UNSPEC_SMULLB, UNSPEC_SMULLT, UNSPEC_UMULLB, UNSPEC_UMULLT)
! 	(UNSPEC_SMULHS, UNSPEC_SMULHRS, UNSPEC_UMULHS, UNSPEC_UMULHRS)
! 	(UNSPEC_RSHRNB, UNSPEC_RSHRNT, UNSPEC_SHRNB, UNSPEC_SHRNT): Move
! 	further down file.
! 	(VNARROW, Ventype): New mode attributes.
! 	(Vewtype): Handle VNx2DI.  Fix typo in comment.
! 	(VDOUBLE): New mode attribute.
! 	(sve_lane_con): Handle VNx8HI.
! 	(SVE_INT_UNARY): Include ss_abs and ss_neg for TARGET_SVE2.
! 	(SVE_INT_BINARY): Likewise ss_plus, us_plus, ss_minus and us_minus.
! 	(sve_int_op, sve_int_op_rev): Handle the above codes.
! 	(sve_pred_int_rhs2_operand): Likewise.
! 	(MULLBT, SHRNB, SHRNT): Delete.
! 	(SVE_INT_SHIFT_IMM): New int iterator.
! 	(SVE_WHILE): Add UNSPEC_WHILEGE, UNSPEC_WHILEGT, UNSPEC_WHILEHI
! 	and UNSPEC_WHILEHS for TARGET_SVE2.
! 	(SVE2_U32_UNARY, SVE2_INT_UNARY_NARROWB, SVE2_INT_UNARY_NARROWT)
! 	(SVE2_INT_BINARY, SVE2_INT_BINARY_LANE, SVE2_INT_BINARY_LONG)
! 	(SVE2_INT_BINARY_LONG_LANE, SVE2_INT_BINARY_NARROWB)
! 	(SVE2_INT_BINARY_NARROWT, SVE2_INT_BINARY_PAIR, SVE2_FP_BINARY_PAIR)
! 	(SVE2_INT_BINARY_PAIR_LONG, SVE2_INT_BINARY_WIDE): New int iterators.
! 	(SVE2_INT_SHIFT_IMM_LONG, SVE2_INT_SHIFT_IMM_NARROWB): Likewise.
! 	(SVE2_INT_SHIFT_IMM_NARROWT, SVE2_INT_SHIFT_INSERT, SVE2_INT_CADD)
! 	(SVE2_INT_BITPERM, SVE2_INT_TERNARY, SVE2_INT_TERNARY_LANE): Likewise.
! 	(SVE2_FP_TERNARY_LONG, SVE2_FP_TERNARY_LONG_LANE, SVE2_INT_CMLA)
! 	(SVE2_INT_CDOT, SVE2_INT_ADD_BINARY_LONG, SVE2_INT_QADD_BINARY_LONG)
! 	(SVE2_INT_SUB_BINARY_LONG, SVE2_INT_QSUB_BINARY_LONG): Likewise.
! 	(SVE2_INT_ADD_BINARY_LONG_LANE, SVE2_INT_QADD_BINARY_LONG_LANE)
! 	(SVE2_INT_SUB_BINARY_LONG_LANE, SVE2_INT_QSUB_BINARY_LONG_LANE)
! 	(SVE2_COND_INT_UNARY_FP, SVE2_COND_FP_UNARY_LONG): Likewise.
! 	(SVE2_COND_FP_UNARY_NARROWB, SVE2_COND_INT_BINARY): Likewise.
! 	(SVE2_COND_INT_BINARY_NOREV, SVE2_COND_INT_BINARY_REV): Likewise.
! 	(SVE2_COND_INT_SHIFT, SVE2_MATCH, SVE2_PMULL): Likewise.
! 	(optab): Handle the new unspecs.
! 	(su, r): Remove entries for UNSPEC_SHRNB, UNSPEC_SHRNT, UNSPEC_RSHRNB
! 	and UNSPEC_RSHRNT.
! 	(lr): Handle the new unspecs.
! 	(bt): Delete.
! 	(cmp_op, while_optab_cmp, sve_int_op): Handle the new unspecs.
! 	(sve_int_op_rev, sve_int_add_op, sve_int_qadd_op, sve_int_sub_op)
! 	(sve_int_qsub_op): New int attributes.
! 	(sve_fp_op, rot): Handle the new unspecs.
! 	* config/aarch64/aarch64-sve-builtins.h
! 	(function_resolver::require_matching_pointer_type): Declare.
! 	(function_resolver::resolve_unary): Add an optional boolean argument.
! 	(function_resolver::finish_opt_n_resolution): Add an optional
! 	type_suffix_index argument.
! 	(gimple_folder::redirect_call): Declare.
! 	(gimple_expander::prepare_gather_address_operands): Add an optional
! 	bool parameter.
! 	* config/aarch64/aarch64-sve-builtins.cc: Include
! 	aarch64-sve-builtins-sve2.h.
! 	(TYPES_b_unsigned, TYPES_b_integer, TYPES_bh_integer): New macros.
! 	(TYPES_bs_unsigned, TYPES_hs_signed, TYPES_hs_integer): Likewise.
! 	(TYPES_hd_unsigned, TYPES_hsd_signed): Likewise.
! 	(TYPES_hsd_integer): Use TYPES_hsd_signed.
! 	(TYPES_s_float_hsd_integer, TYPES_s_float_sd_integer): New macros.
! 	(TYPES_s_unsigned): Likewise.
! 	(TYPES_s_integer): Use TYPES_s_unsigned.
! 	(TYPES_sd_signed, TYPES_sd_unsigned): New macros.
! 	(TYPES_sd_integer): Use them.
! 	(TYPES_d_unsigned): New macro.
! 	(TYPES_d_integer): Use it.
! 	(TYPES_d_data, TYPES_cvt_long, TYPES_cvt_narrow_s): New macros.
! 	(TYPES_cvt_narrow): Likewise.
! 	(DEF_SVE_TYPES_ARRAY): Include the new types macros above.
! 	(preds_mx): New variable.
! 	(function_builder::add_overloaded_function): Allow the new feature
! 	set to be more restrictive than the original one.
! 	(function_resolver::infer_pointer_type): Remove qualifiers from
! 	the pointer type before printing it.
! 	(function_resolver::require_matching_pointer_type): New function.
! 	(function_resolver::resolve_sv_displacement): Handle functions
! 	that don't support 32-bit vector indices or svint32_t vector offsets.
! 	(function_resolver::finish_opt_n_resolution): Take the inferred type
! 	as a separate argument.
! 	(function_resolver::resolve_unary): Optionally treat all forms in
! 	the same way as normal merging functions.
! 	(gimple_folder::redirect_call): New function.
! 	(function_expander::prepare_gather_address_operands): Add an argument
! 	that says whether scaled forms are available.  If they aren't,
! 	handle scaling of vector indices and don't add the extension and
! 	scaling operands.
! 	(function_expander::map_to_unspecs): If aarch64_sve isn't available,
! 	fall back to using cond_* instead.
! 	* config/aarch64/aarch64-sve-builtins-functions.h (rtx_code_function):
! 	Split out the member variables into...
! 	(rtx_code_function_base): ...this new base class.
! 	(rtx_code_function_rotated): Inherit rtx_code_function_base.
! 	(unspec_based_function): Split out the member variables into...
! 	(unspec_based_function_base): ...this new base class.
! 	(unspec_based_function_rotated): Inherit unspec_based_function_base.
! 	(unspec_based_function_exact_insn): New class.
! 	(unspec_based_add_function, unspec_based_add_lane_function)
! 	(unspec_based_lane_function, unspec_based_pred_function)
! 	(unspec_based_qadd_function, unspec_based_qadd_lane_function)
! 	(unspec_based_qsub_function, unspec_based_qsub_lane_function)
! 	(unspec_based_sub_function, unspec_based_sub_lane_function): New
! 	typedefs.
! 	(unspec_based_fused_function): New class.
! 	(unspec_based_mla_function, unspec_based_mls_function): New typedefs.
! 	(unspec_based_fused_lane_function): New class.
! 	(unspec_based_mla_lane_function, unspec_based_mls_lane_function): New
! 	typedefs.
! 	(CODE_FOR_MODE1): New macro.
! 	(fixed_insn_function): New class.
! 	(while_comparison): Likewise.
! 	* config/aarch64/aarch64-sve-builtins-shapes.h (binary_long_lane)
! 	(binary_long_opt_n, binary_narrowb_opt_n, binary_narrowt_opt_n)
! 	(binary_to_uint, binary_wide, binary_wide_opt_n, compare, compare_ptr)
! 	(load_ext_gather_index_restricted, load_ext_gather_offset_restricted)
! 	(load_gather_sv_restricted, shift_left_imm_long): Declare.
! 	(shift_left_imm_to_uint, shift_right_imm_narrowb): Likewise.
! 	(shift_right_imm_narrowt, shift_right_imm_narrowb_to_uint): Likewise.
! 	(shift_right_imm_narrowt_to_uint, store_scatter_index_restricted)
! 	(store_scatter_offset_restricted, tbl_tuple, ternary_long_lane)
! 	(ternary_long_opt_n, ternary_qq_lane_rotate, ternary_qq_rotate)
! 	(ternary_shift_left_imm, ternary_shift_right_imm, ternary_uint)
! 	(unary_convert_narrowt, unary_long, unary_narrowb, unary_narrowt)
! 	(unary_narrowb_to_uint, unary_narrowt_to_uint, unary_to_int): Likewise.
! 	* config/aarch64/aarch64-sve-builtins-shapes.cc (apply_predication):
! 	Also add an initial argument for unary_convert_narrowt, regardless
! 	of the predication type.
! 	(build_32_64): Allow loads and stores to specify MODE_none.
! 	(build_sv_index64, build_sv_uint_offset): New functions.
! 	(long_type_suffix): New function.
! 	(binary_imm_narrowb_base, binary_imm_narrowt_base): New classes.
! 	(binary_imm_long_base, load_gather_sv_base): Likewise.
! 	(shift_right_imm_narrow_wrapper, ternary_shift_imm_base): Likewise.
! 	(ternary_resize2_opt_n_base, ternary_resize2_lane_base): Likewise.
! 	(unary_narrowb_base, unary_narrowt_base): Likewise.
! 	(binary_long_lane_def, binary_long_lane): New shape.
! 	(binary_long_opt_n_def, binary_long_opt_n): Likewise.
! 	(binary_narrowb_opt_n_def, binary_narrowb_opt_n): Likewise.
! 	(binary_narrowt_opt_n_def, binary_narrowt_opt_n): Likewise.
! 	(binary_to_uint_def, binary_to_uint): Likewise.
! 	(binary_wide_def, binary_wide): Likewise.
! 	(binary_wide_opt_n_def, binary_wide_opt_n): Likewise.
! 	(compare_def, compare): Likewise.
! 	(compare_ptr_def, compare_ptr): Likewise.
! 	(load_ext_gather_index_restricted_def,
! 	load_ext_gather_index_restricted): Likewise.
! 	(load_ext_gather_offset_restricted_def,
! 	load_ext_gather_offset_restricted): Likewise.
! 	(load_gather_sv_def): Inherit from load_gather_sv_base.
! 	(load_gather_sv_restricted_def, load_gather_sv_restricted): New shape.
! 	(shift_left_imm_def, shift_left_imm): Likewise.
! 	(shift_left_imm_long_def, shift_left_imm_long): Likewise.
! 	(shift_left_imm_to_uint_def, shift_left_imm_to_uint): Likewise.
! 	(store_scatter_index_restricted_def,
! 	store_scatter_index_restricted): Likewise.
! 	(store_scatter_offset_restricted_def,
! 	store_scatter_offset_restricted): Likewise.
! 	(tbl_tuple_def, tbl_tuple): Likewise.
! 	(ternary_long_lane_def, ternary_long_lane): Likewise.
! 	(ternary_long_opt_n_def, ternary_long_opt_n): Likewise.
! 	(ternary_qq_lane_def): Inherit from ternary_resize2_lane_base.
! 	(ternary_qq_lane_rotate_def, ternary_qq_lane_rotate): New shape
! 	(ternary_qq_opt_n_def): Inherit from ternary_resize2_opt_n_base.
! 	(ternary_qq_rotate_def, ternary_qq_rotate): New shape.
! 	(ternary_shift_left_imm_def, ternary_shift_left_imm): Likewise.
! 	(ternary_shift_right_imm_def, ternary_shift_right_imm): Likewise.
! 	(ternary_uint_def, ternary_uint): Likewise.
! 	(unary_convert): Fix typo in comment.
! 	(unary_convert_narrowt_def, unary_convert_narrowt): New shape.
! 	(unary_long_def, unary_long): Likewise.
! 	(unary_narrowb_def, unary_narrowb): Likewise.
! 	(unary_narrowt_def, unary_narrowt): Likewise.
! 	(unary_narrowb_to_uint_def, unary_narrowb_to_uint): Likewise.
! 	(unary_narrowt_to_uint_def, unary_narrowt_to_uint): Likewise.
! 	(unary_to_int_def, unary_to_int): Likewise.
! 	* config/aarch64/aarch64-sve-builtins-base.cc (unspec_cmla)
! 	(unspec_fcmla, unspec_cond_fcmla, expand_mla_mls_lane): New functions.
! 	(svasrd_impl): Delete.
! 	(svcadd_impl::expand): Handle integer operations too.
! 	(svcmla_impl::expand, svcmla_lane::expand): Likewise, using the
! 	new functions to derive the unspec numbers.
! 	(svmla_svmls_lane_impl): Replace with...
! 	(svmla_lane_impl, svmls_lane_impl): ...these new classes.  Handle
! 	integer operations too.
! 	(svwhile_impl): Rename to...
! 	(svwhilelx_impl): ...this and inherit from while_comparison.
! 	(svasrd): Use unspec_based_function.
! 	(svmla_lane): Use svmla_lane_impl.
! 	(svmls_lane): Use svmls_lane_impl.
! 	(svrecpe, svrsqrte): Handle unsigned integer operations too.
! 	(svwhilele, svwhilelt): Use svwhilelx_impl.
! 	* config/aarch64/aarch64-sve-builtins-sve2.h: New file.
! 	* config/aarch64/aarch64-sve-builtins-sve2.cc: Likewise.
! 	* config/aarch64/aarch64-sve-builtins-sve2.def: Likewise.
! 	* config/aarch64/aarch64-sve-builtins.def: Include
! 	aarch64-sve-builtins-sve2.def.
  
! 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-protos.h (aarch64_sve_arith_immediate_p)
! 	(aarch64_sve_sqadd_sqsub_immediate_p): Add a machine_mode argument.
! 	* config/aarch64/aarch64.c (aarch64_sve_arith_immediate_p)
! 	(aarch64_sve_sqadd_sqsub_immediate_p): Likewise.  Handle scalar
! 	immediates as well as vector ones.
! 	* config/aarch64/predicates.md (aarch64_sve_arith_immediate)
! 	(aarch64_sve_sub_arith_immediate, aarch64_sve_qadd_immediate)
! 	(aarch64_sve_qsub_immediate): Update calls accordingly.
  
! 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-sve2.md: Add banner comments.
! 	(<su>mulh<r>s<mode>3): Move further up file.
! 	(<su>mull<bt><Vwide>, <r>shrnb<mode>, <r>shrnt<mode>)
! 	(*aarch64_sve2_sra<mode>): Move further down file.
! 	* config/aarch64/t-aarch64 (s-check-sve-md): Check aarch64-sve2.md too.
  
! 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/iterators.md (SVE_WHILE): Add UNSPEC_WHILERW
! 	and UNSPEC_WHILEWR.
! 	(while_optab_cmp): Handle them.
! 	* config/aarch64/aarch64-sve.md
! 	(*while_<while_optab_cmp><GPI:mode><PRED_ALL:mode>_ptest): Make public
! 	and add a "@" marker.
! 	* config/aarch64/aarch64-sve2.md (check_<raw_war>_ptrs<mode>): Use it
! 	instead of gen_aarch64_sve2_while_ptest.
! 	(@aarch64_sve2_while<cmp_op><GPI:mode><PRED_ALL:mode>_ptest): Delete.
  
! 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.md (UNSPEC_WHILE_LE): Rename to...
! 	(UNSPEC_WHILELE): ...this.
! 	(UNSPEC_WHILE_LO): Rename to...
! 	(UNSPEC_WHILELO): ...this.
! 	(UNSPEC_WHILE_LS): Rename to...
! 	(UNSPEC_WHILELS): ...this.
! 	(UNSPEC_WHILE_LT): Rename to...
! 	(UNSPEC_WHILELT): ...this.
! 	* config/aarch64/iterators.md (SVE_WHILE): Update accordingly.
! 	(cmp_op, while_optab_cmp): Likewise.
! 	* config/aarch64/aarch64.c (aarch64_sve_move_pred_via_while): Likewise.
! 	* config/aarch64/aarch64-sve-builtins-base.cc (svwhilele): Likewise.
! 	(svwhilelt): Likewise.
  
! 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-sve-builtins-shapes.h (unary_count): Delete.
! 	(unary_to_uint): Define.
! 	* config/aarch64/aarch64-sve-builtins-shapes.cc (unary_count_def)
! 	(unary_count): Rename to...
! 	(unary_to_uint_def, unary_to_uint): ...this.
! 	* config/aarch64/aarch64-sve-builtins-base.def: Update accordingly.
  
! 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-sve-builtins-functions.h
! 	(code_for_mode_function): New class.
! 	(CODE_FOR_MODE0, QUIET_CODE_FOR_MODE0): New macros.
! 	* config/aarch64/aarch64-sve-builtins-base.cc (svcompact_impl)
! 	(svext_impl, svmul_lane_impl, svsplice_impl, svtmad_impl): Delete.
! 	(svcompact, svext, svsplice): Use QUIET_CODE_FOR_MODE0.
! 	(svmul_lane, svtmad): Use CODE_FOR_MODE0.
  
! 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/iterators.md (addsub): New code attribute.
! 	* config/aarch64/aarch64-simd.md (aarch64_<su_optab><optab><mode>):
! 	Re-express as...
! 	(aarch64_<su_optab>q<addsub><mode>): ...this, making the same change
! 	in the asm string and attributes.  Fix indentation.
! 	* config/aarch64/aarch64-sve.md (@aarch64_<su_optab><optab><mode>):
! 	Re-express as...
! 	(@aarch64_sve_<optab><mode>): ...this.
! 	* config/aarch64/aarch64-sve-builtins.h
! 	(function_expander::expand_signed_unpred_op): Delete.
! 	* config/aarch64/aarch64-sve-builtins.cc
! 	(function_expander::expand_signed_unpred_op): Likewise.
! 	(function_expander::map_to_rtx_codes): If the optab isn't defined,
! 	try using code_for_aarch64_sve instead.
! 	* config/aarch64/aarch64-sve-builtins-base.cc (svqadd_impl): Delete.
! 	(svqsub_impl): Likewise.
! 	(svqadd, svqsub): Use rtx_code_function instead.
  
! 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/iterators.md (SRHSUB, URHSUB): Delete.
! 	(HADDSUB, sur, addsub): Remove them.
  
! 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* tree-nrv.c (pass_return_slot::execute): Handle all internal
! 	functions the same way, rather than singling out those that
! 	aren't mapped directly to optabs.
  
! 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* target.def (compatible_vector_types_p): New target hook.
! 	* hooks.h (hook_bool_const_tree_const_tree_true): Declare.
! 	* hooks.c (hook_bool_const_tree_const_tree_true): New function.
! 	* doc/tm.texi.in (TARGET_COMPATIBLE_VECTOR_TYPES_P): New hook.
! 	* doc/tm.texi: Regenerate.
! 	* gimple-expr.c: Include target.h.
! 	(useless_type_conversion_p): Use targetm.compatible_vector_types_p.
! 	* config/aarch64/aarch64.c (aarch64_compatible_vector_types_p): New
  	function.
! 	(TARGET_COMPATIBLE_VECTOR_TYPES_P): Define.
! 	* config/aarch64/aarch64-sve-builtins.cc (gimple_folder::convert_pred):
! 	Use the original predicate if it already has a suitable type.
! 
! 2020-01-09  Martin Jambor  <mjambor@suse.cz>
! 
! 	* cgraph.h (cgraph_edge): Make remove, set_call_stmt, make_direct,
! 	resolve_speculation and redirect_call_stmt_to_callee static.  Change
! 	return type of set_call_stmt to cgraph_edge *.
! 	* auto-profile.c (afdo_indirect_call): Adjust call to
! 	redirect_call_stmt_to_callee.
! 	* cgraph.c (cgraph_edge::set_call_stmt): Make return cgraph-edge *,
! 	make the this pointer explicit, adjust self-recursive calls and the
! 	call top make_direct.  Return the resulting edge.
! 	(cgraph_edge::remove): Make this pointer explicit.
! 	(cgraph_edge::resolve_speculation): Likewise, adjust call to remove.
! 	(cgraph_edge::make_direct): Likewise, adjust call to
! 	resolve_speculation.
! 	(cgraph_edge::redirect_call_stmt_to_callee): Likewise, also adjust
! 	call to set_call_stmt.
! 	(cgraph_update_edges_for_call_stmt_node): Update call to
! 	set_call_stmt and remove.
! 	* cgraphclones.c (cgraph_node::set_call_stmt_including_clones):
! 	Renamed edge to master_edge.  Adjusted calls to set_call_stmt.
! 	(cgraph_node::create_edge_including_clones): Moved "first" definition
! 	of edge to the block where it was used.  Adjusted calls to
! 	set_call_stmt.
! 	(cgraph_node::remove_symbol_and_inline_clones): Adjust call to
! 	cgraph_edge::remove.
! 	* cgraphunit.c (walk_polymorphic_call_targets): Adjusted calls to
! 	make_direct and redirect_call_stmt_to_callee.
! 	* ipa-fnsummary.c (redirect_to_unreachable): Adjust calls to
! 	resolve_speculation and make_direct.
! 	* ipa-inline-transform.c (inline_transform): Adjust call to
! 	redirect_call_stmt_to_callee.
! 	(check_speculations_1):: Adjust call to resolve_speculation.
! 	* ipa-inline.c (resolve_noninline_speculation): Adjust call to
! 	resolve-speculation.
! 	(inline_small_functions): Adjust call to resolve_speculation.
! 	(ipa_inline): Likewise.
! 	* ipa-prop.c (ipa_make_edge_direct_to_target): Adjust call to
! 	make_direct.
! 	* ipa-visibility.c (function_and_variable_visibility): Make iteration
! 	safe with regards to edge removal, adjust calls to
! 	redirect_call_stmt_to_callee.
! 	* ipa.c (walk_polymorphic_call_targets): Adjust calls to make_direct
! 	and redirect_call_stmt_to_callee.
! 	* multiple_target.c (create_dispatcher_calls): Adjust call to
! 	redirect_call_stmt_to_callee
! 	(redirect_to_specific_clone): Likewise.
! 	* tree-cfgcleanup.c (delete_unreachable_blocks_update_callgraph):
! 	Adjust calls to cgraph_edge::remove.
! 	* tree-inline.c (copy_bb): Adjust call to set_call_stmt.
! 	(redirect_all_calls): Adjust call to redirect_call_stmt_to_callee.
! 	(expand_call_inline): Adjust call to cgraph_edge::remove.
! 
! 2020-01-09  Martin Liska  <mliska@suse.cz>
! 
! 	* params.opt: Set Optimization for
! 	param_max_speculative_devirt_maydefs.
! 
! 2020-01-09  Martin Sebor  <msebor@redhat.com>
! 
! 	PR middle-end/93200
! 	PR fortran/92956
! 	* builtins.c (compute_objsize): Avoid handling MEM_REFs of vector type.
! 
! 2020-01-09  Martin Liska  <mliska@suse.cz>
! 
! 	* auto-profile.c (auto_profile): Use opt_for_fn
! 	for a parameter.
! 	* ipa-cp.c (ipcp_lattice::add_value): Likewise.
! 	(propagate_vals_across_arith_jfunc): Likewise.
! 	(hint_time_bonus): Likewise.
! 	(incorporate_penalties): Likewise.
! 	(good_cloning_opportunity_p): Likewise.
! 	(perform_estimation_of_a_value): Likewise.
! 	(estimate_local_effects): Likewise.
! 	(ipcp_propagate_stage): Likewise.
! 	* ipa-fnsummary.c (decompose_param_expr): Likewise.
! 	(set_switch_stmt_execution_predicate): Likewise.
! 	(analyze_function_body): Likewise.
! 	* ipa-inline-analysis.c (offline_size): Likewise.
! 	* ipa-inline.c (early_inliner): Likewise.
! 	* ipa-prop.c (ipa_analyze_node): Likewise.
! 	(ipcp_transform_function): Likewise.
! 	* ipa-sra.c (process_scan_results): Likewise.
! 	(ipa_sra_summarize_function): Likewise.
! 	* params.opt: Rename ipcp-unit-growth to
! 	ipa-cp-unit-growth.  Add Optimization for various
! 	IPA-related parameters.
! 
! 2020-01-09  Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/93054
! 	* gimplify.c (gimplify_expr): Deal with NOP definitions.
! 
! 2020-01-09  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/93040
! 	* gimple-ssa-store-merging.c (find_bswap_or_nop): Raise search limit.
! 
! 2020-01-09  Georg-Johann Lay  <avr@gjlay.de>
! 
! 	* common/config/avr/avr-common.c (avr_option_optimization_table)
! 	[OPT_LEVELS_1_PLUS]: Set -fsplit-wide-types-early.
! 
! 2020-01-09  Martin Liska  <mliska@suse.cz>
! 
! 	* cgraphclones.c (symbol_table::materialize_all_clones):
! 	Use cgraph_node::dump_name.
! 
! 2020-01-09  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR inline-asm/93202
! 	* config/riscv/riscv.c (riscv_print_operand_reloc): Use
! 	output_operand_lossage instead of gcc_unreachable.
! 	* doc/md.texi (riscv f constraint): Fix typo.
! 
! 	PR target/93141
! 	* config/i386/i386.md (subv<mode>4): Use SWIDWI iterator instead of
! 	SWI.  Use <general_hilo_operand> instead of <general_operand>.  Use
! 	CONST_SCALAR_INT_P instead of CONST_INT_P.
! 	(*subv<mode>4_1): Rename to ...
! 	(subv<mode>4_1): ... this.
! 	(*subv<dwi>4_doubleword, *addv<dwi>4_doubleword_1): New
! 	define_insn_and_split patterns.
! 	(*subv<mode>4_overflow_1, *addv<mode>4_overflow_2): New define_insn
! 	patterns.
! 
! 2020-01-08  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* vec.c (class selftest::count_dtor): New class.
! 	(selftest::test_auto_delete_vec): New test.
! 	(selftest::vec_c_tests): Call it.
! 	* vec.h (class auto_delete_vec): New class template.
! 	(auto_delete_vec<T>::~auto_delete_vec): New dtor.
! 
! 2020-01-08  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* sbitmap.h (auto_sbitmap): Add operator const_sbitmap.
! 
! 2020-01-08  Jim Wilson  <jimw@sifive.com>
! 
! 	* config/riscv/riscv.c (riscv_legitimize_tls_address): Ifdef out
! 	use of TLS_MODEL_LOCAL_EXEC when not pic.
! 
! 2020-01-08  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* hash-map-tests.c (selftest::test_map_of_strings_to_int): Fix
! 	memory leak.
! 
! 2020-01-08  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/93187
! 	* config/i386/i386.md (*stack_protect_set_2_<mode> peephole2,
! 	*stack_protect_set_3 peephole2): Also check that the second
! 	insns source is general_operand.
! 
! 	PR target/93174
! 	* config/i386/i386.md (addcarry<mode>_0): Use nonimmediate_operand
! 	predicate for output operand instead of register_operand.
! 	(addcarry<mode>, addcarry<mode>_1): Likewise.  Add alternative with
! 	memory destination and non-memory operands[2].
! 
! 2020-01-08  Martin Liska  <mliska@suse.cz>
! 
! 	* cgraph.c (cgraph_node::dump): Use ::dump_name or
! 	::dump_asm_name instead of (::name or ::asm_name).
! 	* cgraphclones.c (symbol_table::materialize_all_clones): Likewise.
! 	* cgraphunit.c (walk_polymorphic_call_targets): Likewise.
! 	(analyze_functions): Likewise.
! 	(expand_all_functions): Likewise.
! 	* ipa-cp.c (ipcp_cloning_candidate_p): Likewise.
! 	(propagate_bits_across_jump_function): Likewise.
! 	(dump_profile_updates): Likewise.
! 	(ipcp_store_bits_results): Likewise.
! 	(ipcp_store_vr_results): Likewise.
! 	* ipa-devirt.c (dump_targets): Likewise.
! 	* ipa-fnsummary.c (analyze_function_body): Likewise.
! 	* ipa-hsa.c (check_warn_node_versionable): Likewise.
! 	(process_hsa_functions): Likewise.
! 	* ipa-icf.c (sem_item_optimizer::merge_classes): Likewise.
! 	(set_alias_uids): Likewise.
! 	* ipa-inline-transform.c (save_inline_function_body): Likewise.
! 	* ipa-inline.c (recursive_inlining): Likewise.
! 	(inline_to_all_callers_1): Likewise.
! 	(ipa_inline): Likewise.
! 	* ipa-profile.c (ipa_propagate_frequency_1): Likewise.
! 	(ipa_propagate_frequency): Likewise.
! 	* ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
! 	(remove_described_reference): Likewise.
! 	* ipa-pure-const.c (worse_state): Likewise.
! 	(check_retval_uses): Likewise.
! 	(analyze_function): Likewise.
! 	(propagate_pure_const): Likewise.
! 	(propagate_nothrow): Likewise.
! 	(dump_malloc_lattice): Likewise.
! 	(propagate_malloc): Likewise.
! 	(pass_local_pure_const::execute): Likewise.
! 	* ipa-visibility.c (optimize_weakref): Likewise.
! 	(function_and_variable_visibility): Likewise.
! 	* ipa.c (symbol_table::remove_unreachable_nodes): Likewise.
! 	(ipa_discover_variable_flags): Likewise.
! 	* lto-streamer-out.c (output_function): Likewise.
! 	(output_constructor): Likewise.
! 	* tree-inline.c (copy_bb): Likewise.
! 	* tree-ssa-structalias.c (ipa_pta_execute): Likewise.
! 	* varpool.c (symbol_table::remove_unreferenced_decls): Likewise.
! 
! 2020-01-08  Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/93199
! 	* tree-eh.c (sink_clobbers): Update virtual operands for
! 	the first and last stmt only.  Add a dry-run capability.
! 	(pass_lower_eh_dispatch::execute): Perform clobber sinking
! 	after CFG manipulations and in RPO order to catch all
! 	secondary opportunities reliably.
! 
! 2020-01-08  Georg-Johann Lay  <avr@gjlay.de>
! 
! 	PR target/93182
! 	* doc/invoke.texi (AVR Options) <-nodevicespecs>: Document.
! 
! 2019-01-08  Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/93199
! 	* gimple-fold.c (rewrite_to_defined_overflow): Mark stmt modified.
! 	* tree-ssa-loop-im.c (move_computations_worker): Properly adjust
! 	virtual operand, also updating SSA use.
! 	* gimple-loop-interchange.cc (loop_cand::undo_simple_reduction):
! 	Update stmt after resetting virtual operand.
! 	(tree_loop_interchange::move_code_to_inner_loop): Likewise.
! 	* gimple-iterator.c (gsi_remove): When not removing the stmt
! 	permanently do not delink immediate uses or mark the stmt modified.
! 
! 2020-01-08  Martin Liska  <mliska@suse.cz>
! 
! 	* ipa-fnsummary.c (dump_ipa_call_summary): Use symtab_node::dump_name.
! 	(ipa_call_context::estimate_size_and_time): Likewise.
! 	(inline_analyze_function): Likewise.
! 
! 2020-01-08  Martin Liska  <mliska@suse.cz>
! 
! 	* cgraph.c (cgraph_node::dump): Use systematically
! 	dump_asm_name.
! 
! 2020-01-08  Georg-Johann Lay  <avr@gjlay.de>
! 
! 	Add -nodevicespecs option for avr.
! 
! 	PR target/93182
! 	* config/avr/avr.opt (-nodevicespecs): New driver option.
! 	* config/avr/driver-avr.c (avr_devicespecs_file): Only issue
! 	"-specs=device-specs/..." if that option is not set.
! 	* doc/invoke.texi (AVR Options) <-nodevicespecs>: Document.
! 
! 2020-01-08  Georg-Johann Lay  <avr@gjlay.de>
! 
! 	Implement 64-bit double functions for avr.
! 
! 	PR target/92055
! 	* config.gcc (tm_defines) [target=avr]: Support --with-libf7,
! 	--with-double-comparison.
! 	* doc/install.texi: Document them.
! 	* config/avr/avr-c.c (avr_cpu_cpp_builtins)
! 	<WITH_LIBF7_LIBGCC, WITH_LIBF7_MATH, WITH_LIBF7_MATH_SYMBOLS>
! 	<WITH_DOUBLE_COMPARISON>: New built-in defines.
! 	* doc/invoke.texi (AVR Built-in Macros): Document them.
! 	* config/avr/avr-protos.h (avr_float_lib_compare_returns_bool): New.
! 	* config/avr/avr.c (avr_float_lib_compare_returns_bool): New function.
! 	* config/avr/avr.h (FLOAT_LIB_COMPARE_RETURNS_BOOL): New macro.
! 
! 2020-01-08  Richard Earnshaw  <rearnsha@arm.com>
! 
! 	PR target/93188
! 	* config/arm/t-multilib (MULTILIB_MATCHES): Add rules to match
! 	armv7-a{+mp,+sec,+mp+sec} to appropriate armv7 multilib variants
! 	when only building rm-profile multilibs.
! 
! 2020-01-08  Feng Xue  <fxue@os.amperecomputing.com>
! 
! 	PR ipa/93084
! 	* ipa-cp.c (self_recursively_generated_p): Find matched aggregate
! 	lattice for a value to check.
! 	(propagate_vals_across_arith_jfunc): Add an assertion to ensure
! 	finite propagation in self-recursive scc.
! 
! 2020-01-08  Luo Xiong Hu  <luoxhu@linux.ibm.com>
! 
! 	* ipa-inline.c (caller_growth_limits): Restore the AND.
! 
! 2020-01-07  Andrew Stubbs  <ams@codesourcery.com>
! 
! 	* config/gcn/gcn-valu.md (VEC_1REG_INT_ALT): Delete iterator.
! 	(VEC_ALLREG_ALT): New iterator.
! 	(VEC_ALLREG_INT_MODE): New iterator.
! 	(VCMP_MODE): New iterator.
! 	(VCMP_MODE_INT): New iterator.
! 	(vec_cmpu<mode>di): Use VCMP_MODE_INT.
! 	(vec_cmp<u>v64qidi): New define_expand.
! 	(vec_cmp<mode>di_exec): Use VCMP_MODE.
! 	(vec_cmpu<mode>di_exec): New define_expand.
! 	(vec_cmp<u>v64qidi_exec): New define_expand.
! 	(vec_cmp<mode>di_dup): Use VCMP_MODE.
! 	(vec_cmp<mode>di_dup_exec): Use VCMP_MODE.
! 	(vcond<VEC_ALL1REG_MODE:mode><VEC_1REG_ALT:mode>): Rename ...
! 	(vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>): ... to this.
! 	(vcond<VEC_ALL1REG_MODE:mode><VEC_1REG_ALT:mode>_exec): Rename ...
! 	(vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>_exec): ... to this.
! 	(vcondu<VEC_ALL1REG_MODE:mode><VEC_1REG_INT_ALT:mode>): Rename ...
! 	(vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>): ... to this.
! 	(vcondu<VEC_ALL1REG_MODE:mode><VEC_1REG_INT_ALT:mode>_exec): Rename ...
! 	(vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>_exec): ... to
! 	this.
! 	* config/gcn/gcn.c (print_operand): Fix 8 and 16 bit suffixes.
! 	* config/gcn/gcn.md (expander): Add sign_extend and zero_extend.
! 
! 2020-01-07  Andrew Stubbs  <ams@codesourcery.com>
! 
! 	* config/gcn/constraints.md (DA): Update description and match.
! 	(DB): Likewise.
! 	(Db): New constraint.
! 	* config/gcn/gcn-protos.h (gcn_inline_constant64_p): Add second
! 	parameter.
! 	* config/gcn/gcn.c (gcn_inline_constant64_p): Add 'mixed' parameter.
! 	Implement 'Db' mixed immediate type.
! 	* config/gcn/gcn-valu.md (addcv64si3<exec_vcc>): Rework constraints.
! 	(addcv64si3_dup<exec_vcc>): Delete.
! 	(subcv64si3<exec_vcc>): Rework constraints.
! 	(addv64di3): Rework constraints.
! 	(addv64di3_exec): Rework constraints.
! 	(subv64di3): Rework constraints.
! 	(addv64di3_dup): Delete.
! 	(addv64di3_dup_exec): Delete.
! 	(addv64di3_zext): Rework constraints.
! 	(addv64di3_zext_exec): Rework constraints.
! 	(addv64di3_zext_dup): Rework constraints.
! 	(addv64di3_zext_dup_exec): Rework constraints.
! 	(addv64di3_zext_dup2): Rework constraints.
! 	(addv64di3_zext_dup2_exec): Rework constraints.
! 	(addv64di3_sext_dup2): Rework constraints.
! 	(addv64di3_sext_dup2_exec): Rework constraints.
! 
! 2020-01-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* doc/sourcebuild.texi (arm_little_endian, arm_nothumb): Documented
! 	existing target checks.
  
! 2020-01-07  Richard Biener  <rguenther@suse.de>
  
! 	* doc/install.texi: Bump minimal supported MPC version.
  
! 2020-01-07  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* langhooks-def.h (lhd_simulate_enum_decl): Declare.
! 	(LANG_HOOKS_SIMULATE_ENUM_DECL): Use it.
! 	* langhooks.c: Include stor-layout.h.
! 	(lhd_simulate_enum_decl): New function.
! 	* config/aarch64/aarch64-sve-builtins.cc (init_builtins): Call
! 	handle_arm_sve_h for the LTO frontend.
! 	(register_vector_type): Cope with null returns from pushdecl.
  
! 2020-01-07  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-protos.h (aarch64_sve::svbool_type_p)
! 	(aarch64_sve::nvectors_if_data_type): Replace with...
! 	(aarch64_sve::builtin_type_p): ...this.
! 	* config/aarch64/aarch64-sve-builtins.cc: Include attribs.h.
! 	(find_vector_type): Delete.
! 	(add_sve_type_attribute): New function.
! 	(lookup_sve_type_attribute): Likewise.
! 	(register_builtin_types): Add an "SVE type" attribute to each type.
! 	(register_tuple_type): Likewise.
! 	(svbool_type_p, nvectors_if_data_type): Delete.
! 	(mangle_builtin_type): Use lookup_sve_type_attribute.
! 	(builtin_type_p): Likewise.  Add an overload that returns the
! 	number of constituent vector and predicate registers.
! 	* config/aarch64/aarch64.c (aarch64_sve_argument_p): Delete.
! 	(aarch64_returns_value_in_sve_regs_p): Use aarch64_sve::builtin_type_p
! 	instead of aarch64_sve_argument_p.
! 	(aarch64_takes_arguments_in_sve_regs_p): Likewise.
! 	(aarch64_pass_by_reference): Likewise.
! 	(aarch64_function_value_1): Likewise.
! 	(aarch64_return_in_memory): Likewise.
! 	(aarch64_layout_arg): Likewise.
  
! 2020-01-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/93156
! 	* tree-ssa-ccp.c (bit_value_binop): For x * x note that the second
! 	least significant bit is always clear.
  
! 	PR tree-optimization/93118
! 	* match.pd ((x >> c) << c -> x & (-1<<c)): Add nop_convert?.  Add new
! 	simplifier with two intermediate conversions.
  
! 2020-01-07  Martin Liska  <mliska@suse.cz>
  
! 	* params.opt: Add Optimization for various parameters.
  
! 2020-01-07  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/83411
! 	* doc/extend.texi: Explain cloning for target_clone
! 	attribute.
  
! 2020-01-07  Martin Liska  <mliska@suse.cz>
  
! 	PR tree-optimization/92860
! 	* common.opt: Make in Optimization option
! 	as it is affected by -O0, which is an Optimization
! 	option.
! 	* tree-inline.c (tree_inlinable_function_p):
! 	Use opt_for_fn for warn_inline.
! 	(expand_call_inline): Likewise.
  
! 2020-01-07  Martin Liska  <mliska@suse.cz>
  
! 	PR tree-optimization/92860
! 	* common.opt: Make flag_ree as optimization
! 	attribute. 
  
! 2020-01-07  Martin Liska  <mliska@suse.cz>
  
! 	PR optimization/92860
! 	* params.opt: Mark param_min_crossjump_insns with Optimization
! 	keyword.
  
! 2020-01-07  Luo Xiong Hu  <luoxhu@linux.ibm.com>
  
! 	* ipa-inline-analysis.c (estimate_growth): Fix typo.
! 	* ipa-inline.c (caller_growth_limits): Use OR instead of AND.
  
! 2020-01-06  Michael Meissner  <meissner@linux.ibm.com>
  
! 	* config/rs6000/rs6000.c (hard_reg_and_mode_to_addr_mask): New
! 	helper function to return the valid addressing formats for a given
! 	hard register and mode.
! 	(rs6000_adjust_vec_address): Call hard_reg_and_mode_to_addr_mask.
  
! 	* config/rs6000/constraints.md (Q constraint): Update
! 	documentation.
! 	* doc/md.texi (RS/6000 constraints): Update 'Q' cosntraint
! 	documentation.
  
! 	* config/rs6000/vsx.md (vsx_extract_<mode>_var, VSX_D iterator):
! 	Use 'Q' for doing vector extract from memory.
! 	(vsx_extract_v4sf_var): Use 'Q' for doing vector extract from
! 	memory.
! 	(vsx_extract_<mode>_var, VSX_EXTRACT_I iterator): Use 'Q' for
! 	doing vector extract from memory.
! 	(vsx_extract_<mode>_<VS_scalar>mode_var): Use 'Q' for doing vector
! 	extract from memory.
  
! 	* config/rs6000/rs6000.c (rs6000_adjust_vec_address): Add support
! 	for the offset being 34-bits when -mcpu=future is used.
  
! 2020-01-06  John David Anglin  <danglin@gcc.gnu.org>
  
! 	* config/pa/pa.md: Revert change to use ordered_comparison_operator
! 	instead of cmpib_comparison_operator in cmpib patterns.
! 	* config/pa/predicates.md (cmpib_comparison_operator): Revert removal
! 	of cmpib_comparison_operator.  Revise comment.
  
! 2020-01-06  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* tree-vect-slp.c (vect_build_slp_tree_1): Require all shifts
! 	in an IFN_DIV_POW2 node to be equal.
  
! 2020-01-06  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* tree-vect-stmts.c (vect_check_load_store_mask): Rename to...
! 	(vect_check_scalar_mask): ...this.
! 	(vectorizable_store, vectorizable_load): Update call accordingly.
! 	(vectorizable_call): Use vect_check_scalar_mask to check the mask
! 	argument in calls to conditional internal functions.
  
! 2020-01-06  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn-valu.md (subv64di3): Use separate alternatives for
! 	'0' matching inputs.
! 	(subv64di3_exec): Likewise.
  
! 2020-01-06  Bryan Stenson  <bryan@siliconvortex.com>
  
! 	* config/mips/mips.c (vr4130_align_insns): Fix typo.
! 	* doc/md.texi (movstr): Likewise.
  
! 2020-01-06  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn-valu.md (vec_extract<mode><scalar_mode>): Add early
! 	clobber.
  
! 2020-01-06  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/t-aarch64 ($(srcdir)/config/aarch64/aarch64-tune.md):
! 	Depend on...
! 	(s-aarch64-tune-md): ...this new stamp file.  Pipe the new contents
! 	to a temporary file and use move-if-change to update the real
! 	file where necessary.
  
! 2020-01-06  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-sve.md (@aarch64_sel_dup<mode>): Use Upl
! 	rather than Upa for CPY /M.
  
! 2020-01-06  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn.c (gcn_inline_constant_p): Allow 64 as an inline
! 	immediate.
  
! 2020-01-06  Martin Liska  <mliska@suse.cz>
  
!     PR tree-optimization/92860
!     * params.opt: Mark param_max_combine_insns with Optimization
!     keyword. 
  
! 2020-01-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/93141
! 	* config/i386/i386.md (SWIDWI): New mode iterator.
! 	(DWI, dwi): Add TImode variants.
! 	(addv<mode>4): Use SWIDWI iterator instead of SWI.  Use
! 	<general_hilo_operand> instead of <general_operand>.  Use
! 	CONST_SCALAR_INT_P instead of CONST_INT_P.
! 	(*addv<mode>4_1): Rename to ...
! 	(addv<mode>4_1): ... this.
! 	(QWI): New mode attribute.
! 	(*addv<dwi>4_doubleword, *addv<dwi>4_doubleword_1): New
! 	define_insn_and_split patterns.
! 	(*addv<mode>4_overflow_1, *addv<mode>4_overflow_2): New define_insn
! 	patterns.
! 	(uaddv<mode>4): Use SWIDWI iterator instead of SWI.  Use
! 	<general_hilo_operand> instead of <general_operand>.
! 	(*addcarry<mode>_1): New define_insn.
! 	(*add<dwi>3_doubleword_cc_overflow_1): New define_insn_and_split.
  
! 2020-01-03  Konstantin Kharlamov  <Hi-Angel@yandex.ru>
  
! 	* gdbinit.in (pr, prl, pt, pct, pgg, pgq, pgs, pge, pmz, pdd, pbs, pbm):
! 	Use "call" instead of "set".
  
! 2020-01-03  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/92917
! 	* ipa-cp.c (print_all_lattices): Skip functions without info.
  
! 2020-01-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/93089
! 	* config/i386/i386-options.c (ix86_simd_clone_adjust): If
! 	TARGET_PREFER_AVX128, use prefer-vector-width=256 for 'c' and 'd'
! 	simd clones.  If TARGET_PREFER_AVX256, use prefer-vector-width=512
! 	for 'e' simd clones.
  
! 	PR target/93089
! 	* config/i386/i386.opt (x_prefer_vector_width_type): Remove TargetSave
! 	entry.
! 	(mprefer-vector-width=): Add Save.
! 	* config/i386/i386-options.c (ix86_target_string): Add PVW argument, print
! 	-mprefer-vector-width= if non-zero.  Fix up -mfpmath= comment.
! 	(ix86_debug_options, ix86_function_specific_print): Adjust
! 	ix86_target_string callers.
! 	(ix86_valid_target_attribute_inner_p): Handle prefer-vector-width=.
! 	(ix86_valid_target_attribute_tree): Likewise.
! 	* config/i386/i386-options.h (ix86_target_string): Add PVW argument.
! 	* config/i386/i386-expand.c (ix86_expand_builtin): Adjust
! 	ix86_target_string caller.
  
! 	PR target/93110
! 	* config/i386/i386.md (abs<mode>2): Use expand_simple_binop instead of
! 	emitting ASHIFTRT, XOR and MINUS by hand.  Use gen_int_mode with QImode
! 	instead of gen_int_shift_amount + convert_modes.
  
! 	PR rtl-optimization/93088
! 	* loop-iv.c (find_single_def_src): Punt after looking through
! 	128 reg copies for regs with single definitions.  Move definitions
! 	to first uses.
  
! 2020-01-02  Dennis Zhang  <dennis.zhang@arm.com>
  
! 	* config/arm/arm-c.c (arm_cpu_builtins): Define
! 	__ARM_FEATURE_MATMUL_INT8, __ARM_FEATURE_BF16_VECTOR_ARITHMETIC,
! 	__ARM_FEATURE_BF16_SCALAR_ARITHMETIC, and
! 	__ARM_BF16_FORMAT_ALTERNATIVE when enabled.
! 	* config/arm/arm-cpus.in (armv8_6, i8mm, bf16): New features.
! 	* config/arm/arm-tables.opt: Regenerated.
! 	* config/arm/arm.c (arm_option_reconfigure_globals): Initialize
! 	arm_arch_i8mm and arm_arch_bf16 when enabled.
! 	* config/arm/arm.h (TARGET_I8MM): New macro.
! 	(TARGET_BF16_FP, TARGET_BF16_SIMD): Likewise.
! 	* config/arm/t-aprofile: Add matching rules for -march=armv8.6-a.
! 	* config/arm/t-arm-elf (all_v8_archs): Add armv8.6-a.
! 	* config/arm/t-multilib: Add matching rules for -march=armv8.6-a.
! 	(v8_6_a_simd_variants): New.
! 	(v8_*_a_simd_variants): Add i8mm and bf16.
! 	* doc/invoke.texi (armv8.6-a, i8mm, bf16): Document new options.
  
! 2020-01-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR ipa/93087
! 	* predict.c (compute_function_frequency): Don't call
! 	warn_function_cold on functions that already have cold attribute.
  
! 2020-01-01  John David Anglin  <danglin@gcc.gnu.org>
  
! 	PR target/67834
! 	* config/pa/pa.c (pa_elf_select_rtx_section): New.  Put references to
! 	COMDAT group function labels in .data.rel.ro.local section.
! 	* config/pa/pa32-linux.h (TARGET_ASM_SELECT_RTX_SECTION): Define.
  
! 	PR target/93111
! 	* config/pa/pa.md (scc): Use ordered_comparison_operator instead of
! 	comparison_operator in B and S integer comparisons.  Likewise, use
! 	ordered_comparison_operator instead of cmpib_comparison_operator in
! 	cmpib patterns.
! 	* config/pa/predicates.md (cmpib_comparison_operator): Remove.
  
! 2020-01-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	Update copyright years.
  
  	* gcc.c (process_command): Update copyright notice dates.
  	* gcov-dump.c (print_version): Ditto.
--- 1,6401 ----
! 2021-04-27  Release Manager
  
! 	* GCC 11.1.0 released.
  
! 2021-04-20  Segher Boessenkool  <segher@kernel.crashing.org>
  
  	Backported from master:
! 	2021-04-20  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/100108
! 	* config/rs6000/rs6000.c (rs6000_machine_from_flags): Do not consider
! 	OPTION_MASK_ISEL.
  
! 2021-04-20  Martin Liska  <mliska@suse.cz>
  
! 	* lto-streamer.h (LTO_major_version): Bump to 11.
  
! 2021-04-20  Martin Liska  <mliska@suse.cz>
  
  	Backported from master:
! 	2021-04-20  Martin Liska  <mliska@suse.cz>
  
! 	* doc/invoke.texi: Fix typo.
! 	* params.opt: Likewise.
  
! 2021-04-20  Martin Liska  <mliska@suse.cz>
  
  	Backported from master:
! 	2021-04-20  Martin Liska  <mliska@suse.cz>
  
! 	* doc/invoke.texi: Document new param.
  
! 2021-04-19  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/100081
! 	* gimple-range-cache.h (ranger_cache): Inherit from gori_compute
! 	rather than gori_compute_cache.
! 	* gimple-range-gori.cc (is_gimple_logical_p): Move to top of file.
! 	(range_def_chain::m_logical_depth): New member.
! 	(range_def_chain::range_def_chain): Initialize m_logical_depth.
! 	(range_def_chain::get_def_chain): Don't build defchains through more
! 	than LOGICAL_LIMIT logical expressions.
! 	* params.opt (param_ranger_logical_depth): New.
  
! 2021-04-19  Richard Earnshaw  <rearnsha@arm.com>
  
! 	PR target/100067
! 	* config/arm/arm.c (arm_configure_build_target): Do not strip
! 	extended FPU/SIMD feature bits from the target ISA when -mfpu
! 	is specified (partial revert of r11-8168).
  
! 2021-04-19  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	* params.opt (-param=openacc-kernels=): Add.
! 	* omp-oacc-kernels-decompose.cc
! 	(pass_omp_oacc_kernels_decompose::gate): Use it.
! 	* doc/invoke.texi (-fopenacc-kernels=@var{mode}): Move...
! 	(--param): ... here, 'openacc-kernels'.
  
! 2021-04-19  Martin Liska  <mliska@suse.cz>
  
! 	PR c/100143
! 	* gengtype.c (finish_root_table): Align function arguments
! 	in between declaration and definition.
  
! 2021-04-19  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* config/i386/winnt.c (i386_pe_seh_cold_init): Properly deal with
! 	frames larger than the SEH maximum frame size.
  
! 2021-04-18  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR rtl-optimization/99927
! 	* combine.c (distribute_notes) [REG_UNUSED]: If the register already
! 	is dead, just drop it.
  
! 2021-04-17  Iain Buclaw  <ibuclaw@gdcproject.org>
  
! 	PR d/99914
! 	* config/i386/winnt-d.c (TARGET_D_TEMPLATES_ALWAYS_COMDAT): Define.
! 	* doc/tm.texi: Regenerate.
! 	* doc/tm.texi.in (D language and ABI): Add @hook for
! 	TARGET_D_TEMPLATES_ALWAYS_COMDAT.
  
! 2021-04-17  Iain Buclaw  <ibuclaw@gdcproject.org>
  
! 	* config/darwin-d.c (darwin_d_handle_target_object_format): New
! 	function.
! 	(darwin_d_register_target_info): New function.
! 	(TARGET_D_REGISTER_OS_TARGET_INFO): Define.
! 	* config/dragonfly-d.c (dragonfly_d_handle_target_object_format): New
! 	function.
! 	(dragonfly_d_register_target_info): New function.
! 	(TARGET_D_REGISTER_OS_TARGET_INFO): Define.
! 	* config/freebsd-d.c (freebsd_d_handle_target_object_format): New
! 	function.
! 	(freebsd_d_register_target_info): New function.
! 	(TARGET_D_REGISTER_OS_TARGET_INFO): Define.
! 	* config/glibc-d.c (glibc_d_handle_target_object_format): New
! 	function.
! 	(glibc_d_register_target_info): New function.
! 	(TARGET_D_REGISTER_OS_TARGET_INFO): Define.
! 	* config/i386/i386-d.c (ix86_d_handle_target_object_format): New
! 	function.
! 	(ix86_d_register_target_info): Add ix86_d_handle_target_object_format
! 	as handler for objectFormat key.
! 	* config/i386/winnt-d.c (winnt_d_handle_target_object_format): New
! 	function.
! 	(winnt_d_register_target_info): New function.
! 	(TARGET_D_REGISTER_OS_TARGET_INFO): Define.
! 	* config/netbsd-d.c (netbsd_d_handle_target_object_format): New
! 	function.
! 	(netbsd_d_register_target_info): New function.
! 	(TARGET_D_REGISTER_OS_TARGET_INFO): Define.
! 	* config/openbsd-d.c (openbsd_d_handle_target_object_format): New
! 	function.
! 	(openbsd_d_register_target_info): New function.
! 	(TARGET_D_REGISTER_OS_TARGET_INFO): Define.
! 	* config/pa/pa-d.c (pa_d_handle_target_object_format): New function.
! 	(pa_d_register_target_info): Add pa_d_handle_target_object_format as
! 	handler for objectFormat key.
! 	* config/rs6000/rs6000-d.c (rs6000_d_handle_target_object_format): New
! 	function.
! 	(rs6000_d_register_target_info): Add
! 	rs6000_d_handle_target_object_format as handler for objectFormat key.
! 	* config/sol2-d.c (solaris_d_handle_target_object_format): New
! 	function.
! 	(solaris_d_register_target_info): New function.
! 	(TARGET_D_REGISTER_OS_TARGET_INFO): Define.
  
! 2021-04-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/91710
! 	* config/aarch64/aarch64.c (aarch64_function_arg_alignment): Change
! 	abi_break argument from bool * to unsigned *, store there the pre-GCC 9
! 	alignment.
! 	(aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Adjust callers.
! 	(aarch64_function_arg_regno_p): Likewise.  Only emit -Wpsabi note if
! 	the old and new alignment after applying MIN/MAX to it is different.
  
! 2021-04-16  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR target/100048
! 	* config/aarch64/aarch64-sve.md (@aarch64_sve_trn1_conv<mode>): New.
! 	* config/aarch64/aarch64.c (aarch64_expand_sve_const_pred_trn): Use new
! 	TRN optab.
! 	* config/aarch64/iterators.md (UNSPEC_TRN1_CONV): New.
  
! 2021-04-16  Bill Schmidt  <wschmidt@linux.ibm.com>
  
! 	* doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions): Revise
! 	this section and its subsections.
  
! 2021-04-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/100075
! 	* config/aarch64/aarch64.md (*neg_asr_si2_extr, *extrsi5_insn_di): New
! 	define_insn patterns.
  
! 2021-04-16  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/98689
! 	* reg-notes.def (UNTYPED_CALL): New note.
! 	* combine.c (distribute_notes): Handle it.
! 	* emit-rtl.c (try_split): Likewise.
! 	* rtlanal.c (rtx_properties::try_to_add_insn): Likewise.  Assume
! 	that calls with the note implicitly set all return value registers.
! 	* builtins.c (expand_builtin_apply): Add a REG_UNTYPED_CALL
! 	to untyped_calls.
  
! 2021-04-16  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/99596
! 	* rtlanal.c (rtx_properties::try_to_add_insn): Don't add global
! 	register accesses for const calls.  Assume that pure functions
! 	can only read from global registers.  Ignore cases in which
! 	the stack pointer has been marked global.
  
! 2021-04-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99767
! 	* tree-vect-loop.c (vect_transform_loop): Don't remove just
! 	dead scalar .MASK_LOAD calls, but also dead .COND_* calls - replace
! 	them by their last argument.
  
! 2021-04-15  Martin Liska  <mliska@suse.cz>
  
! 	* doc/invoke.texi: Other params don't use it, remove it.
  
! 2021-04-15  Richard Biener  <rguenther@suse.de>
  
! 	* gimple-builder.h: Add deprecation note.
  
! 2021-04-15  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR c++/98852
! 	* attribs.h (restrict_type_identity_attributes_to): Declare.
! 	* attribs.c (restrict_type_identity_attributes_to): New function.
  
! 2021-04-15  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR c/98852
! 	* attribs.h (affects_type_identity_attributes): Declare.
! 	* attribs.c (remove_attributes_matching): New function.
! 	(affects_type_identity_attributes): Likewise.
  
! 2021-04-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/100056
! 	* config/aarch64/aarch64.md (*<LOGICAL:optab>_<SHIFT:optab><mode>3):
! 	Add combine splitters for *<LOGICAL:optab>_ashl<mode>3 with
! 	ZERO_EXTEND, SIGN_EXTEND or AND.
  
! 2021-04-14  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/99929
! 	* rtl.h (same_vector_encodings_p): New function.
! 	* cse.c (exp_equiv_p): Check that CONST_VECTORs have the same encoding.
! 	* cselib.c (rtx_equal_for_cselib_1): Likewise.
! 	* jump.c (rtx_renumbered_equal_p): Likewise.
! 	* lra-constraints.c (operands_match_p): Likewise.
! 	* reload.c (operands_match_p): Likewise.
! 	* rtl.c (rtx_equal_p_cb, rtx_equal_p): Likewise.
  
! 2021-04-14  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* print-rtl.c (rtx_writer::print_rtx_operand_codes_E_and_V): Print
! 	more information about variable-length CONST_VECTORs.
  
! 2021-04-14  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/100066
! 	* lra-constraints.c (split_reg): Check paradoxical_subreg_p for
! 	ordered modes when choosing splitting mode for hard reg.
  
! 2021-04-14  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/99246
! 	* config/aarch64/aarch64.c (aarch64_expand_sve_const_vector_sel):
! 	New function.
! 	(aarch64_expand_sve_const_vector): Use it for nelts_per_pattern==2.
  
! 2021-04-14  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	* config/s390/s390-builtins.def (O_M5, O_M12, ...): Add new macros
! 	for mask operand types.
! 	(s390_vec_permi_s64, s390_vec_permi_b64, s390_vec_permi_u64)
! 	(s390_vec_permi_dbl, s390_vpdi): Use the M5 type for the immediate
! 	operand.
! 	(s390_vec_msum_u128, s390_vmslg): Use the M12 type for the
! 	immediate operand.
! 	* config/s390/s390.c (s390_const_operand_ok): Check the new
! 	operand types and generate a list of valid values.
  
! 2021-04-14  Iain Buclaw  <ibuclaw@gdcproject.org>
  
! 	* doc/tm.texi: Regenerate.
! 	* doc/tm.texi.in (D language and ABI): Add @hook for
! 	TARGET_D_REGISTER_OS_TARGET_INFO.
  
! 2021-04-14  Iain Buclaw  <ibuclaw@gdcproject.org>
  
! 	* config/aarch64/aarch64-d.c (aarch64_d_handle_target_float_abi): New
! 	function.
! 	(aarch64_d_register_target_info): New function.
! 	* config/aarch64/aarch64-protos.h (aarch64_d_register_target_info):
! 	Declare.
! 	* config/aarch64/aarch64.h (TARGET_D_REGISTER_CPU_TARGET_INFO):
  	Define.
! 	* config/arm/arm-d.c (arm_d_handle_target_float_abi): New function.
! 	(arm_d_register_target_info): New function.
! 	* config/arm/arm-protos.h (arm_d_register_target_info): Declare.
! 	* config/arm/arm.h (TARGET_D_REGISTER_CPU_TARGET_INFO): Define.
! 	* config/i386/i386-d.c (ix86_d_handle_target_float_abi): New function.
! 	(ix86_d_register_target_info): New function.
! 	* config/i386/i386-protos.h (ix86_d_register_target_info): Declare.
! 	* config/i386/i386.h (TARGET_D_REGISTER_CPU_TARGET_INFO): Define.
! 	* config/mips/mips-d.c (mips_d_handle_target_float_abi): New function.
! 	(mips_d_register_target_info): New function.
! 	* config/mips/mips-protos.h (mips_d_register_target_info): Declare.
! 	* config/mips/mips.h (TARGET_D_REGISTER_CPU_TARGET_INFO): Define.
! 	* config/pa/pa-d.c (pa_d_handle_target_float_abi): New function.
! 	(pa_d_register_target_info): New function.
! 	* config/pa/pa-protos.h (pa_d_register_target_info): Declare.
! 	* config/pa/pa.h (TARGET_D_REGISTER_CPU_TARGET_INFO): Define.
! 	* config/riscv/riscv-d.c (riscv_d_handle_target_float_abi): New
! 	function.
! 	(riscv_d_register_target_info): New function.
! 	* config/riscv/riscv-protos.h (riscv_d_register_target_info): Declare.
! 	* config/riscv/riscv.h (TARGET_D_REGISTER_CPU_TARGET_INFO): Define.
! 	* config/rs6000/rs6000-d.c (rs6000_d_handle_target_float_abi): New
! 	function.
! 	(rs6000_d_register_target_info): New function.
! 	* config/rs6000/rs6000-protos.h (rs6000_d_register_target_info):
! 	Declare.
! 	* config/rs6000/rs6000.h (TARGET_D_REGISTER_CPU_TARGET_INFO): Define.
! 	* config/s390/s390-d.c (s390_d_handle_target_float_abi): New function.
! 	(s390_d_register_target_info): New function.
! 	* config/s390/s390-protos.h (s390_d_register_target_info): Declare.
! 	* config/s390/s390.h (TARGET_D_REGISTER_CPU_TARGET_INFO): Define.
! 	* config/sparc/sparc-d.c (sparc_d_handle_target_float_abi): New
! 	function.
! 	(sparc_d_register_target_info): New function.
! 	* config/sparc/sparc-protos.h (sparc_d_register_target_info): Declare.
! 	* config/sparc/sparc.h (TARGET_D_REGISTER_CPU_TARGET_INFO): Define.
! 	* doc/tm.texi: Regenerate.
! 	* doc/tm.texi.in (D language and ABI): Add @hook for
! 	TARGET_D_REGISTER_CPU_TARGET_INFO.
  
! 2021-04-14  Iain Buclaw  <ibuclaw@gdcproject.org>
  
! 	* config/i386/i386-d.c (ix86_d_has_stdcall_convention): New function.
! 	* config/i386/i386-protos.h (ix86_d_has_stdcall_convention): Declare.
! 	* config/i386/i386.h (TARGET_D_HAS_STDCALL_CONVENTION): Define.
! 	* doc/tm.texi: Regenerate.
! 	* doc/tm.texi.in (D language and ABI): Add @hook for
! 	TARGET_D_HAS_STDCALL_CONVENTION.
  
! 2021-04-14  Richard Biener  <rguenther@suse.de>
  
! 	* tree-cfg.c (verify_gimple_assign_ternary): Verify that
! 	VEC_COND_EXPRs have a gimple_val condition.
! 	* tree-ssa-propagate.c (valid_gimple_rhs_p): VEC_COND_EXPR
! 	can no longer have a GENERIC condition.
  
! 2021-04-14  Richard Earnshaw  <rearnsha@arm.com>
  
! 	PR target/100067
! 	* config/arm/arm.c (arm_configure_build_target): Strip isa_all_fpbits
! 	from the isa_delta when -mfpu has been used.
! 	(arm_options_perform_arch_sanity_checks): It's the architecture that
! 	lacks an FPU not the processor.
  
! 2021-04-13  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/100053
! 	* tree-ssa-sccvn.c (vn_nary_op_get_predicated_value): Do
! 	not use optimistic dominance queries for backedges to validate
! 	predicated values.
! 	(dominated_by_p_w_unex): Add parameter to ignore executable
! 	state on backedges.
! 	(rpo_elim::eliminate_avail): Adjust.
  
! 2021-04-13  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/100028
! 	* config/aarch64/aarch64.md (*aarch64_bfxil<mode>_extr,
! 	*aarch64_bfxilsi_extrdi): New define_insn patterns.
  
! 2021-04-13  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99648
! 	* simplify-rtx.c (simplify_immed_subreg): For MODE_COMPOSITE_P
! 	outermode, return NULL if the result doesn't encode back to the
! 	original byte sequence.
! 	(simplify_gen_subreg): Don't create SUBREGs from constants to
! 	MODE_COMPOSITE_P outermode.
  
! 2021-04-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/99905
! 	* combine.c (expand_compound_operation): If pos + len > modewidth,
! 	perform the right shift by pos in inner_mode and then convert to mode,
! 	instead of trying to simplify a shift of rtx with inner_mode by pos
! 	as if it was a shift in mode.
  
! 2021-04-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/99830
! 	* combine.c (simplify_and_const_int_1): Don't optimize varop
! 	away if it has side-effects.
  
! 2021-04-12  Martin Liska  <mliska@suse.cz>
  
! 	* doc/extend.texi: Escape @smallexample content.
  
! 2021-04-12  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
  
! 	* config/s390/s390.md ("*movdi_31", "*movdi_64"): Add
! 	  alternative in order to load a DFP zero.
  
! 2021-04-12  Martin Liska  <mliska@suse.cz>
  
! 	* doc/extend.texi: Be more precise in documentation
! 	of symver attribute.
  
! 2021-04-12  Martin Liska  <mliska@suse.cz>
  
! 	PR sanitizer/99877
! 	* gimplify.c (gimplify_expr): Right now, we unpoison all
! 	variables before a goto <dest>. We should not do it if we are
! 	in a omp context.
  
! 2021-04-12  Cui,Lili  <lili.cui@intel.com>
  
! 	* common/config/i386/cpuinfo.h (get_intel_cpu): Handle
! 	rocketlake.
! 	* common/config/i386/i386-common.c (processor_names): Add
! 	rocketlake.
! 	(processor_alias_table): Add rocketlake.
! 	* common/config/i386/i386-cpuinfo.h (processor_subtypes): Add
! 	INTEL_COREI7_ROCKETLAKE.
! 	* config.gcc: Add -march=rocketlake.
! 	* config/i386/i386-c.c (ix86_target_macros_internal): Handle
! 	rocketlake.
! 	* config/i386/i386-options.c (m_ROCKETLAKE)  : Define.
! 	(processor_cost_table): Add rocketlake cost.
! 	* config/i386/i386.h (ix86_size_cost) : Define
! 	TARGET_ROCKETLAKE.
! 	(processor_type) : Add PROCESSOR_ROCKETLAKE.
! 	(PTA_ROCKETLAKE): Ditto.
! 	* doc/extend.texi: Add rocketlake.
! 	* doc/invoke.texi: Add rocketlake.
  
! 2021-04-12  Cui,Lili  <lili.cui@intel.com>
  
! 	* config/i386/i386.h (PTA_ALDERLAKE): Change alderlake ISA list.
! 	* config/i386/i386-options.c (m_CORE_AVX2): Add m_ALDERLAKE.
! 	* common/config/i386/cpuinfo.h (get_intel_cpu): Add AlderLake model.
! 	* doc/invoke.texi: Change alderlake ISA list.
  
! 2021-04-11  Hafiz Abid Qadeer  <abidh@codesourcery.com>
  
! 	PR middle-end/98088
! 	* omp-expand.c (expand_oacc_collapse_init): Update condition in
! 	a gcc_assert.
  
! 2021-04-10  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/99744
! 	* config/i386/serializeintrin.h (_serialize): Defined as macro.
  
! 2021-04-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR lto/99849
! 	* expr.c (expand_expr_addr_expr_1): Test is_global_var rather than
! 	just TREE_STATIC on COMPOUND_LITERAL_EXPR_DECLs.
  
! 2021-04-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/99989
! 	* gimple-ssa-warn-alloca.c
! 	(alloca_type_and_limit::alloca_type_and_limit): Initialize limit to
! 	0 with integer precision unconditionally.
  
! 2021-04-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/98601
! 	* rtlanal.c (rtx_addr_can_trap_p_1): Allow in assert unknown size
! 	not just for BLKmode, but also for VOIDmode.  For STRICT_ALIGNMENT
! 	unaligned_mems handle VOIDmode like BLKmode.
  
! 2021-04-10  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR lto/99857
! 	* tree.c (free_lang_data_in_decl): Do not release body of
! 	declare_variant_alt.
  
! 2021-04-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_option_restore): If the
! 	architecture was specified explicitly and the tuning wasn't,
! 	tune for the architecture rather than the configured default CPU.
  
! 2021-04-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.md (tlsdesc_small_sve_<mode>): Use X30
! 	as the temporary register.
  
! 2021-04-09  Martin Liska  <mliska@suse.cz>
  
! 	* doc/extend.texi: Move non-target attributes on the top level.
  
! 2021-04-09  Martin Liska  <mliska@suse.cz>
  
! 	* doc/invoke.texi: Document minimum and maximum value of the
! 	argument for both supported compression algorithms.
  
! 2021-04-08  David Edelsohn  <dje.gcc@gmail.com>
  
! 	* config/rs6000/rs6000.c (rs6000_xcoff_select_section): Select
! 	TLS BSS before TLS data.
! 	* config/rs6000/xcoff.h (ASM_OUTPUT_TLS_COMMON): Use .comm.
  
! 2021-04-08  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* doc/sourcebuild.texi (stdint_types_mbig_endian): Document.
  
! 2021-04-08  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* match.pd: Extend vec_cond folds to handle shifts.
  
! 2021-04-08  Maciej W. Rozycki  <macro@orcam.me.uk>
  
! 	* config/vax/vax.md: Fix comment for `*bit<mode>' pattern's
! 	peephole.
  
! 2021-04-08  Alex Coplan  <alex.coplan@arm.com>
  
! 	PR target/99647
! 	* config/arm/iterators.md (MVE_vecs): New.
! 	(V_elem): Also handle V2DF.
! 	* config/arm/mve.md (*mve_mov<mode>): Rename to ...
! 	(*mve_vdup<mode>): ... this. Remove second alternative since
! 	vec_duplicate of const_int is not canonical RTL, and we don't
! 	want to match symbol_refs.
! 	(*mve_vec_duplicate<mode>): Delete (pattern is redundant).
  
! 2021-04-08  Xionghu Luo  <luoxhu@linux.ibm.com>
  
! 	* fold-const.c (fold_single_bit_test): Fix typo.
! 	* print-rtl.c (print_rtx_insn_vec): Call print_rtl_single
! 	instead.
  
! 2021-04-07  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/97513
! 	* tree-vect-slp.c (vect_add_slp_permutation): New function,
! 	split out from...
! 	(vectorizable_slp_permutation): ...here.  Detect cases in which
! 	all VEC_PERM_EXPRs are guaranteed to have the same stepped
! 	permute vector and only generate one permute vector for that case.
! 	Extend that case to handle variable-length vectors.
  
! 2021-04-07  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/99873
! 	* tree-vect-slp.c (vect_slp_prefer_store_lanes_p): New function.
! 	(vect_build_slp_instance): Don't split store groups that could
! 	use IFN_STORE_LANES.
  
! 2021-04-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99872
! 	* varasm.c (output_constant_pool_contents): Don't strip name encoding
! 	from XSTR (desc->sym, 0) or from label before passing those to
! 	ASM_OUTPUT_DEF.
  
! 2021-04-07  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99954
! 	* tree-loop-distribution.c: Include tree-affine.h.
! 	(generate_memcpy_builtin): Try using tree-affine to prove
! 	non-overlap.
! 	(loop_distribution::classify_builtin_ldst): Always classify
! 	as PKIND_MEMMOVE.
  
! 2021-04-07  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99947
! 	* tree-vect-loop.c (vectorizable_induction): Pre-allocate
! 	steps vector to avoid pushing elements from the reallocated
! 	vector.
  
! 2021-04-07  Richard Biener  <rguenther@suse.de>
  
! 	* tree-ssa-sccvn.h (print_vn_reference_ops): Declare.
! 	* tree-ssa-pre.c (print_pre_expr): Factor out VN reference operand
! 	printing...
! 	* tree-ssa-sccvn.c (print_vn_reference_ops): ... into this new
! 	function.
! 	(debug_vn_reference_ops): New.
  
! 2021-04-07  Bin Cheng  <bin.cheng@linux.alibaba.com>
  
! 	PR tree-optimization/98736
! 	* tree-loop-distribution.c
! 	* (loop_distribution::bb_top_order_init):
! 	Compute RPO with programing order preserved by calling function
! 	rev_post_order_and_mark_dfs_back_seme.
  
! 2021-04-06  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR target/99781
! 	* lra-constraints.c (split_reg): Don't check paradoxical_subreg_p.
! 	* lra-lives.c (clear_sparseset_regnos, regnos_in_sparseset_p): New
  	functions.
! 	(process_bb_lives): Don't update biggest mode of hard reg for
! 	implicit in multi-register group.  Use the new functions for
! 	updating dead_set and unused_set by register notes.
  
! 2021-04-06  Xianmiao Qu  <xianmiao_qu@c-sky.com>
  
! 	* config/csky/csky_pipeline_ck802.md : Use insn reservation name
! 	instead of *.
  
! 2021-04-06  H.J. Lu  <hjl.tools@gmail.com>
  
! 	* config/i386/x86-tune-costs.h (skylake_memcpy): Updated.
! 	(skylake_memset): Likewise.
! 	(skylake_cost): Change CLEAR_RATIO to 17.
! 	* config/i386/x86-tune.def (X86_TUNE_PREFER_KNOWN_REP_MOVSB_STOSB):
! 	Replace m_CANNONLAKE, m_ICELAKE_CLIENT, m_ICELAKE_SERVER,
! 	m_TIGERLAKE and m_SAPPHIRERAPIDS with m_SKYLAKE and m_CORE_AVX512.
  
! 2021-04-06  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99880
! 	* tree-vect-loop.c (maybe_set_vectorized_backedge_value): Only
! 	set vectorized defs of relevant PHIs.
  
! 2021-04-06  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99924
! 	* tree-vect-slp.c (vect_bb_partition_graph_r): Do not mark
! 	nodes w/o scalar stmts as visited.
  
! 2021-04-06  Alex Coplan  <alex.coplan@arm.com>
  
! 	PR target/99748
! 	* config/arm/arm.c (arm_libcall_uses_aapcs_base): Also use base
! 	PCS for [su]fix_optab.
  
! 2021-04-03  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* config/darwin.c (machopic_legitimize_pic_address): Check
! 	that the current pic register is one of the hard reg set
! 	before setting liveness.
  
! 2021-04-03  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* config/darwin.c (machopic_legitimize_pic_address): Fix
! 	whitespace, remove unused code.
  
! 2021-04-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/99882
! 	* gimple-ssa-store-merging.c (bswap_view_convert): Handle val with
! 	pointer type.
  
! 2021-04-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/99863
! 	* dse.c (replace_read): Drop regs_live argument.  Instead of
! 	regs_live, use store_insn->fixed_regs_live if non-NULL,
! 	otherwise punt if insns sequence clobbers or sets any hard
! 	registers.
  
! 2021-04-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR testsuite/98125
! 	* targhooks.h (default_print_patchable_function_entry_1): Declare.
! 	* targhooks.c (default_print_patchable_function_entry_1): New function,
! 	copied from default_print_patchable_function_entry with an added flags
! 	argument.
! 	(default_print_patchable_function_entry): Rewritten into a small
! 	wrapper around default_print_patchable_function_entry_1.
! 	* config/rs6000/rs6000.c (TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY):
  	Redefine.
! 	(rs6000_print_patchable_function_entry): New function.
  
! 2021-04-02  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* doc/invoke.texi (fdelete-dead-exceptions): Minor tweak.
  
! 2021-04-01  Jason Merrill  <jason@redhat.com>
  
! 	PR c++/98481
! 	* common.opt: Document v15 and v16.
  
! 2021-04-01  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99863
! 	* gimplify.c (gimplify_init_constructor): Recompute vector
! 	constructor flags.
  
! 2021-04-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	* doc/extend.texi (symver attribute): Fix up syntax errors
! 	in the examples.
  
! 2021-04-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/96573
! 	* gimple-ssa-store-merging.c (init_symbolic_number): Handle
! 	also pointer types.
  
! 2021-04-01  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99856
! 	* tree-vect-patterns.c (vect_recog_over_widening_pattern): Promote
! 	precision to vector element precision.
  
! 2021-04-01  Martin Jambor  <mjambor@suse.cz>
  
! 	PR tree-optimization/97009
! 	* tree-sra.c (access_or_its_child_written): New function.
! 	(propagate_subaccesses_from_rhs): Use it instead of a simple grp_write
! 	test.
  
! 2021-03-31  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR ipa/98265
! 	* cif-code.def (USES_COMDAT_LOCAL): Make CIF_FINAL_NORMAL.
  
! 2021-03-31  Pat Haugen  <pthaugen@linux.ibm.com>
  
! 	PR target/99133
! 	* config/rs6000/altivec.md (xxspltiw_v4si, xxspltiw_v4sf_inst,
! 	xxspltidp_v2df_inst, xxsplti32dx_v4si_inst, xxsplti32dx_v4sf_inst,
! 	xxblend_<mode>, xxpermx_inst, xxeval): Mark prefixed.
! 	* config/rs6000/mma.md (mma_<vvi4i4i8>, mma_<avvi4i4i8>,
! 	mma_<vvi4i4i2>, mma_<avvi4i4i2>, mma_<vvi4i4>, mma_<avvi4i4>,
! 	mma_<pvi4i2>, mma_<apvi4i2>, mma_<vvi4i4i4>, mma_<avvi4i4i4>):
  	Likewise.
! 	* config/rs6000/rs6000.c (rs6000_final_prescan_insn): Adjust test.
! 	* config/rs6000/rs6000.md (define_attr "maybe_prefixed"): New.
! 	(define_attr "prefixed"): Update initializer.
  
! 2021-03-31  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/99490
! 	* dwarf2out.c (debug_ranges_dwo_section): New variable.
! 	(DW_RANGES_IDX_SKELETON): Define.
! 	(struct dw_ranges): Add begin_entry and end_entry members.
! 	(DEBUG_DWO_RNGLISTS_SECTION): Define.
! 	(add_ranges_num): Adjust r initializer for addition of *_entry
! 	members.
! 	(add_ranges_by_labels): For -gsplit-dwarf and force_direct,
! 	set idx to DW_RANGES_IDX_SKELETON.
! 	(use_distinct_base_address_for_range): New function.
! 	(index_rnglists): Don't set r->idx if it is equal to
! 	DW_RANGES_IDX_SKELETON.  Initialize r->begin_entry and
! 	r->end_entry for -gsplit-dwarf if those will be needed by
! 	output_rnglists.
! 	(output_rnglists): Add DWO argument.  If true, switch to
! 	debug_ranges_dwo_section rather than debug_ranges_section.
! 	Adjust l1/l2 label indexes.  Only output the offset table when
! 	dwo is true and don't include in there the skeleton range
! 	entry if present.  For -gsplit-dwarf, skip ranges that belong
! 	to the other rnglists section.  Change return type from void
! 	to bool and return true if there are any range entries for
! 	the other section.  For dwarf_split_debug_info use
! 	DW_RLE_startx_endx, DW_RLE_startx_length and DW_RLE_base_addressx
! 	entries instead of DW_RLE_start_end, DW_RLE_start_length and
! 	DW_RLE_base_address.  Use use_distinct_base_address_for_range.
! 	(init_sections_and_labels): Initialize debug_ranges_dwo_section
! 	if -gsplit-dwarf and DWARF >= 5.  Adjust ranges_section_label
! 	and range_base_label indexes.
! 	(dwarf2out_finish): Call index_rnglists earlier before finalizing
! 	.debug_addr.  Never emit DW_AT_rnglists_base attribute.  For
! 	-gsplit-dwarf and DWARF >= 5 call output_rnglists up to twice
! 	with different dwo arguments.
! 	(dwarf2out_c_finalize): Clear debug_ranges_dwo_section.
  
! 2021-03-31  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/98268
! 	* gimple-fold.c (maybe_canonicalize_mem_ref_addr): Call
! 	recompute_tree_invariant_for_addr_expr after successfully
! 	folding a TARGET_MEM_REF that occurs inside an ADDR_EXPR.
  
! 2021-03-31  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/99726
! 	* tree-data-ref.c (create_intersect_range_checks_index): Bail
! 	out if there is more than one access function SCEV for the loop
! 	being versioned.
  
! 2021-03-31  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/97141
! 	PR rtl-optimization/98726
! 	* emit-rtl.c (valid_for_const_vector_p): Return true for
! 	CONST_POLY_INT_P.
! 	* rtx-vector-builder.h (rtx_vector_builder::step): Return a
! 	poly_wide_int instead of a wide_int.
! 	(rtx_vector_builder::apply_set): Take a poly_wide_int instead
! 	of a wide_int.
! 	* rtx-vector-builder.c (rtx_vector_builder::apply_set): Likewise.
! 	* config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Return
! 	false for CONST_VECTORs that cannot be forced to memory.
! 	* config/aarch64/aarch64-simd.md (mov<mode>): If a CONST_VECTOR
! 	is too complex to force to memory, build it up from individual
! 	elements instead.
  
! 2021-03-31  Jan Hubicka  <jh@suse.cz>
  
! 	PR lto/99447
! 	* cgraph.c (cgraph_node::release_body): Fix overactive check.
  
! 2021-03-31  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	PR target/99786
! 	* config/arm/vec-common.md (mul<mode>3): Disable on iwMMXT, expect
! 	for V4HI and V2SI.
  
! 2021-03-31  H.J. Lu  <hjl.tools@gmail.com>
  
! 	* config/i386/i386-expand.c (expand_set_or_cpymem_via_rep):
! 	For TARGET_PREFER_KNOWN_REP_MOVSB_STOSB, don't convert QImode
! 	to SImode.
! 	(decide_alg): For TARGET_PREFER_KNOWN_REP_MOVSB_STOSB, use
! 	"rep movsb/stosb" only for known sizes.
! 	* config/i386/i386-options.c (processor_cost_table): Use Ice
! 	Lake cost for Cannon Lake, Ice Lake, Tiger Lake, Sapphire
! 	Rapids and Alder Lake.
! 	* config/i386/i386.h (TARGET_PREFER_KNOWN_REP_MOVSB_STOSB): New.
! 	* config/i386/x86-tune-costs.h (icelake_memcpy): New.
! 	(icelake_memset): Likewise.
! 	(icelake_cost): Likewise.
! 	* config/i386/x86-tune.def (X86_TUNE_PREFER_KNOWN_REP_MOVSB_STOSB):
  	New.
  
! 2021-03-31  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/98119
! 	* config/aarch64/aarch64.c
! 	(aarch64_vectorize_preferred_vector_alignment): Query the size
! 	of the provided SVE vector; do not assume that all SVE vectors
! 	have the same size.
  
! 2021-03-31  Jan Hubicka  <jh@suse.cz>
  
! 	PR lto/99447
! 	* cgraph.c (cgraph_node::release_body): Remove all callers and
! 	references.
! 	* cgraphclones.c (cgraph_node::materialize_clone): Do not do it here.
! 	* cgraphunit.c (cgraph_node::expand): And here.
  
! 2021-03-31  Martin Liska  <mliska@suse.cz>
  
! 	* ipa-modref.c (analyze_ssa_name_flags): Fix coding style
! 	and one negated condition.
  
! 2021-03-31  Jakub Jelinek  <jakub@redhat.com>
! 	    Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/99813
! 	* config/aarch64/aarch64.md (*add<mode>3_poly_1): Swap Uai and Uav
! 	constraints on operands[2] and similarly 0 and rk constraints
! 	on operands[1] corresponding to that.
  
! 2021-03-31  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR bootstrap/98860
! 	* configure.ac (HAVE_LD_BROKEN_PE_DWARF5): New AC_DEFINE if PECOFF
! 	linker doesn't support DWARF sections new in DWARF5.
! 	* config/i386/i386-options.c (ix86_option_override_internal): Default
! 	to dwarf_version 4 if HAVE_LD_BROKEN_PE_DWARF5 for TARGET_PECOFF
! 	targets.
! 	* config.in: Regenerated.
! 	* configure: Regenerated.
  
! 2021-03-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR target/99820
! 	* config/aarch64/aarch64.c (aarch64_analyze_loop_vinfo): Check for
! 	available issue_info before using it.
  
! 2021-03-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR target/99822
! 	* config/aarch64/aarch64.md (sub<mode>3_compare1_imm): Do not allow zero
! 	in operand 1.
  
! 2021-03-30  Xionghu Luo  <luoxhu@linux.ibm.com>
  
! 	PR target/99718
! 	* config/rs6000/altivec.md (altivec_lvsl_reg): Change to ...
! 	(altivec_lvsl_reg_<mode>): ... this.
! 	(altivec_lvsr_reg): Change to ...
! 	(altivec_lvsr_reg_<mode>): ... this.
! 	* config/rs6000/predicates.md (vec_set_index_operand): New.
! 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
! 	Enable 32bit variable vec_insert for all TARGET_VSX.
! 	* config/rs6000/rs6000.c (rs6000_expand_vector_set_var_p9):
! 	Enable 32bit variable vec_insert for p9 and above.
! 	(rs6000_expand_vector_set_var_p8): Rename to ...
! 	(rs6000_expand_vector_set_var_p7): ... this.
! 	(rs6000_expand_vector_set): Use TARGET_VSX and adjust assert
! 	position.
! 	* config/rs6000/vector.md (vec_set<mode>): Use vec_set_index_operand.
! 	* config/rs6000/vsx.md (xl_len_r): Use gen_altivec_lvsl_reg_di and
! 	gen_altivec_lvsr_reg_di.
  
! 2021-03-30  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/99744
! 	* config/i386/ia32intrin.h (__rdtsc): Defined as macro.
! 	(__rdtscp): Likewise.
  
! 2021-03-30  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR tree-optimization/99825
! 	* tree-vect-slp-patterns.c (vect_check_evenodd_blend):
! 	Reject non-mult 2 lanes.
  
! 2021-03-30  Richard Earnshaw  <rearnsha@arm.com>
  
! 	PR target/99773
! 	* config/arm/arm.c (arm_file_start): Fix emission of
! 	Tag_ABI_VFP_args attribute.
  
! 2021-03-30  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99824
! 	* stor-layout.c (set_min_and_max_values_for_integral_type):
! 	Assert the precision is within the bounds of
! 	WIDE_INT_MAX_PRECISION.
! 	* tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Use
! 	the outermost component ref only to lower the access size
! 	and initialize that from the access type.
  
! 2021-03-30  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/98136
! 	* config/aarch64/aarch64.md (mov<mode>): Pass multi-instruction
! 	CONST_INTs to aarch64_expand_mov_immediate when called after RA.
  
! 2021-03-30  Mihailo Stojanovic  <mihailo.stojanovic@typhoon-hil.com>
  
! 	* config/aarch64/aarch64.md
! 	(<optab>_trunc<fcvt_target><GPI:mode>2): Set the "arch"
! 	attribute to disambiguate between SIMD and FP variants of the
! 	instruction.
  
! 2021-03-29  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* ipa-modref.c (merge_call_lhs_flags): Correct handling of deref.
! 	(analyze_ssa_name_flags): Fix typo in comment.
  
! 2021-03-29  Alex Coplan  <alex.coplan@arm.com>
  
! 	PR target/99216
  	* config/aarch64/aarch64-sve-builtins.cc
! 	(function_builder::add_function): Add placeholder_p argument, use
! 	placeholder decls if this is set.
! 	(function_builder::add_unique_function): Instead of conditionally adding
! 	direct overloads, unconditionally add either a direct overload or a
! 	placeholder.
! 	(function_builder::add_overloaded_function): Set placeholder_p if we're
! 	using C++ overloads. Use the obstack for string storage instead
! 	of relying on the tree nodes.
! 	(function_builder::add_overloaded_functions): Don't return early for
! 	m_direct_overloads: we need to add placeholders.
! 	* config/aarch64/aarch64-sve-builtins.h
! 	(function_builder::add_function): Add placeholder_p argument.
  
! 2021-03-29  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99807
! 	* tree-vect-slp.c (vect_slp_analyze_node_operations_1): Move
! 	assert below VEC_PERM handling.
  
! 2021-03-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR target/99037
! 	* config/aarch64/aarch64-simd.md (move_lo_quad_internal_<mode>): Use
! 	aarch64_simd_or_scalar_imm_zero to match zeroes.  Remove pattern
! 	matching const_int 0.
! 	(move_lo_quad_internal_be_<mode>): Likewise.
! 	(move_lo_quad_<mode>): Update for the above.
! 	* config/aarch64/iterators.md (VQ_2E): Delete.
  
! 2021-03-29  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/99777
! 	* fold-const.c (extract_muldiv_1): For conversions, punt on casts from
! 	types other than scalar integral types.
  
! 2021-03-28  David Edelsohn  <dje.gcc@gmail.com>
  
! 	* config/rs6000/rs6000.c (rs6000_output_dwarf_dtprel): Do not add
! 	XCOFF TLS reloc decorations.
  
! 2021-03-28  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/analyzer.texi (Analyzer Internals): Update link to
! 	"A Memory Model for Static Analysis of C Programs".
  
! 2021-03-26  David Edelsohn  <dje.gcc@gmail.com>
  
! 	* config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Call function.
! 	* config/rs6000/rs6000-protos.h (rs6000_special_adjust_field_align):
! 	Declare.
! 	* config/rs6000/rs6000.c (rs6000_special_adjust_field_align): New.
! 	(rs6000_special_round_type_align): Recursively check innermost first
! 	field.
  
! 2021-03-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/99334
! 	* dwarf2out.h (struct dw_fde_node): Add rule18 member.
! 	* dwarf2cfi.c (dwarf2out_frame_debug_expr): When handling (set hfp sp)
! 	assignment with drap_reg active, queue reg save for hfp with offset 0
! 	and flush queued reg saves.  When handling a push with rule18,
! 	defer queueing reg save for hfp and just assert the offset is 0.
! 	(scan_trace): Assert that fde->rule18 is false.
  
! 2021-03-26  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR target/99766
! 	* ira-costs.c (record_reg_classes): Put case with
! 	CT_RELAXED_MEMORY adjacent to one with CT_MEMORY.
! 	* ira.c (ira_setup_alts): Ditto.
! 	* lra-constraints.c (process_alt_operands): Ditto.
! 	* recog.c (asm_operand_ok): Ditto.
! 	* reload.c (find_reloads): Ditto.
  
! 2021-03-26  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-protos.h
! 	(cpu_addrcost_table::post_modify_ld3_st3): New member variable.
! 	(cpu_addrcost_table::post_modify_ld4_st4): Likewise.
! 	* config/aarch64/aarch64.c (generic_addrcost_table): Update
! 	accordingly, using the same costs as for post_modify.
! 	(exynosm1_addrcost_table, xgene1_addrcost_table): Likewise.
! 	(thunderx2t99_addrcost_table, thunderx3t110_addrcost_table):
! 	(tsv110_addrcost_table, qdf24xx_addrcost_table): Likewise.
! 	(a64fx_addrcost_table): Likewise.
! 	(neoversev1_addrcost_table): New.
! 	(neoversev1_tunings): Use neoversev1_addrcost_table.
! 	(aarch64_address_cost): Use the new post_modify costs for CImode
! 	and XImode.
  
! 2021-03-26  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.opt
! 	(-param=aarch64-loop-vect-issue-rate-niters=): New parameter.
! 	* doc/invoke.texi: Document it.
! 	* config/aarch64/aarch64-protos.h (aarch64_base_vec_issue_info)
! 	(aarch64_scalar_vec_issue_info, aarch64_simd_vec_issue_info)
! 	(aarch64_advsimd_vec_issue_info, aarch64_sve_vec_issue_info)
! 	(aarch64_vec_issue_info): New structures.
! 	(cpu_vector_cost): Write comments above the variables rather
! 	than to the side.
! 	(cpu_vector_cost::issue_info): New member variable.
! 	* config/aarch64/aarch64.c: Include gimple-pretty-print.h
! 	and tree-ssa-loop-niter.h.
! 	(generic_vector_cost, a64fx_vector_cost, qdf24xx_vector_cost)
! 	(thunderx_vector_cost, tsv110_vector_cost, cortexa57_vector_cost)
! 	(exynosm1_vector_cost, xgene1_vector_cost, thunderx2t99_vector_cost)
! 	(thunderx3t110_vector_cost): Initialize issue_info to null.
! 	(neoversev1_scalar_issue_info, neoversev1_advsimd_issue_info)
! 	(neoversev1_sve_issue_info, neoversev1_vec_issue_info): New structures.
! 	(neoversev1_vector_cost): Use them.
! 	(aarch64_vec_op_count, aarch64_sve_op_count): New structures.
! 	(aarch64_vector_costs::saw_sve_only_op): New member variable.
! 	(aarch64_vector_costs::num_vector_iterations): Likewise.
! 	(aarch64_vector_costs::scalar_ops): Likewise.
! 	(aarch64_vector_costs::advsimd_ops): Likewise.
! 	(aarch64_vector_costs::sve_ops): Likewise.
! 	(aarch64_vector_costs::seen_loads): Likewise.
! 	(aarch64_simd_vec_costs_for_flags): New function.
! 	(aarch64_analyze_loop_vinfo): Initialize num_vector_iterations.
! 	Count the number of predicate operations required by SVE WHILE
! 	instructions.
! 	(aarch64_comparison_type, aarch64_multiply_add_p): New functions.
! 	(aarch64_sve_only_stmt_p, aarch64_in_loop_reduction_latency): Likewise.
! 	(aarch64_count_ops): Likewise.
! 	(aarch64_add_stmt_cost): Record whether see an SVE operation
! 	that cannot currently be implementing using Advanced SIMD.
! 	Record issue information about the scalar, Advanced SIMD
! 	and (where relevant) SVE versions of a loop.
! 	(aarch64_vec_op_count::dump): New function.
! 	(aarch64_sve_op_count::dump): Likewise.
! 	(aarch64_estimate_min_cycles_per_iter): Likewise.
! 	(aarch64_adjust_body_cost): If issue information is available,
! 	try to compare the issue rates of the various loop implementations
! 	and increase or decrease the vector body cost accordingly.
  
! 2021-03-26  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_detect_vector_stmt_subtype):
! 	Assume a zero cost for induction phis.
  
! 2021-03-26  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_embedded_comparison_type): New
! 	function.
! 	(aarch64_adjust_stmt_cost): Add the costs of embedded scalar and
! 	vector comparisons.
  
! 2021-03-26  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_detect_scalar_stmt_subtype):
! 	New function.
! 	(aarch64_add_stmt_cost): Call it.
  
! 2021-03-26  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-tuning-flags.def (matched_vector_throughput):
! 	New tuning parameter.
! 	* config/aarch64/aarch64.c (neoversev1_tunings): Use it.
! 	(aarch64_estimated_sve_vq): New function.
! 	(aarch64_vector_costs::analyzed_vinfo): New member variable.
! 	(aarch64_vector_costs::is_loop): Likewise.
! 	(aarch64_vector_costs::unrolled_advsimd_niters): Likewise.
! 	(aarch64_vector_costs::unrolled_advsimd_stmts): Likewise.
! 	(aarch64_record_potential_advsimd_unrolling): New function.
! 	(aarch64_analyze_loop_vinfo, aarch64_analyze_bb_vinfo): Likewise.
! 	(aarch64_add_stmt_cost): Call aarch64_analyze_loop_vinfo or
! 	aarch64_analyze_bb_vinfo on the first use of a costs structure.
! 	Detect whether we're vectorizing a loop for SVE that might be
! 	completely unrolled if it used Advanced SIMD instead.
! 	(aarch64_adjust_body_cost_for_latency): New function.
! 	(aarch64_finish_cost): Call it.
  
! 2021-03-26  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_vector_costs): New structure.
! 	(aarch64_init_cost): New function.
! 	(aarch64_add_stmt_cost): Use aarch64_vector_costs instead of
! 	the default unsigned[3].
! 	(aarch64_finish_cost, aarch64_destroy_cost_data): New functions.
! 	(TARGET_VECTORIZE_INIT_COST): Override.
! 	(TARGET_VECTORIZE_FINISH_COST): Likewise.
! 	(TARGET_VECTORIZE_DESTROY_COST_DATA): Likewise.
  
! 2021-03-26  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.c (neoversev1_advsimd_vector_cost)
! 	(neoversev1_sve_vector_cost): New cost structures.
! 	(neoversev1_vector_cost): Likewise.
! 	(neoversev1_tunings): Use them.  Enable use_new_vector_costs.
  
! 2021-03-26  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-protos.h
! 	(sve_vec_cost::scatter_store_elt_cost): New member variable.
! 	* config/aarch64/aarch64.c (generic_sve_vector_cost): Update
! 	accordingly, taking the cost from the cost of a scalar_store.
! 	(a64fx_sve_vector_cost): Likewise.
! 	(aarch64_detect_vector_stmt_subtype): Detect scatter stores.
  
! 2021-03-26  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-protos.h
! 	(simd_vec_cost::store_elt_extra_cost): New member variable.
! 	* config/aarch64/aarch64.c (generic_advsimd_vector_cost): Update
! 	accordingly, using the vec_to_scalar cost for the new field.
! 	(generic_sve_vector_cost, a64fx_advsimd_vector_cost): Likewise.
! 	(a64fx_sve_vector_cost, qdf24xx_advsimd_vector_cost): Likewise.
! 	(thunderx_advsimd_vector_cost, tsv110_advsimd_vector_cost): Likewise.
! 	(cortexa57_advsimd_vector_cost, exynosm1_advsimd_vector_cost)
! 	(xgene1_advsimd_vector_cost, thunderx2t99_advsimd_vector_cost)
! 	(thunderx3t110_advsimd_vector_cost): Likewise.
! 	(aarch64_detect_vector_stmt_subtype): Detect single-element stores.
  
! 2021-03-26  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-protos.h (simd_vec_cost::ld2_st2_permute_cost)
! 	(simd_vec_cost::ld3_st3_permute_cost): New member variables.
! 	(simd_vec_cost::ld4_st4_permute_cost): Likewise.
! 	* config/aarch64/aarch64.c (generic_advsimd_vector_cost): Update
! 	accordingly, using zero for the new costs.
! 	(generic_sve_vector_cost, a64fx_advsimd_vector_cost): Likewise.
! 	(a64fx_sve_vector_cost, qdf24xx_advsimd_vector_cost): Likewise.
! 	(thunderx_advsimd_vector_cost, tsv110_advsimd_vector_cost): Likewise.
! 	(cortexa57_advsimd_vector_cost, exynosm1_advsimd_vector_cost)
! 	(xgene1_advsimd_vector_cost, thunderx2t99_advsimd_vector_cost)
! 	(thunderx3t110_advsimd_vector_cost): Likewise.
! 	(aarch64_ld234_st234_vectors): New function.
! 	(aarch64_adjust_stmt_cost): Likewise.
! 	(aarch64_add_stmt_cost): Call aarch64_adjust_stmt_cost if using
! 	the new vector costs.
  
! 2021-03-26  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-protos.h (sve_vec_cost): Turn into a
! 	derived class of simd_vec_cost.  Add information about CLAST[AB]
! 	and FADDA instructions.
! 	* config/aarch64/aarch64.c (generic_sve_vector_cost): Update
! 	accordingly, using the vec_to_scalar costs for the new fields.
! 	(a64fx_sve_vector_cost): Likewise.
! 	(aarch64_reduc_type): New function.
! 	(aarch64_sve_in_loop_reduction_latency): Likewise.
! 	(aarch64_detect_vector_stmt_subtype): Take a vinfo parameter.
! 	Use aarch64_sve_in_loop_reduction_latency to handle SVE reductions
! 	that occur in the loop body.
! 	(aarch64_add_stmt_cost): Update call accordingly.
  
! 2021-03-26  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-tuning-flags.def (use_new_vector_costs):
! 	New tuning flag.
! 	* config/aarch64/aarch64-protos.h (simd_vec_cost): Put comments
! 	above the fields rather than to the right.
! 	(simd_vec_cost::reduc_i8_cost): New member variable.
! 	(simd_vec_cost::reduc_i16_cost): Likewise.
! 	(simd_vec_cost::reduc_i32_cost): Likewise.
! 	(simd_vec_cost::reduc_i64_cost): Likewise.
! 	(simd_vec_cost::reduc_f16_cost): Likewise.
! 	(simd_vec_cost::reduc_f32_cost): Likewise.
! 	(simd_vec_cost::reduc_f64_cost): Likewise.
! 	* config/aarch64/aarch64.c (generic_advsimd_vector_cost): Update
! 	accordingly, using the vec_to_scalar_cost for the new fields.
! 	(generic_sve_vector_cost, a64fx_advsimd_vector_cost): Likewise.
! 	(a64fx_sve_vector_cost, qdf24xx_advsimd_vector_cost): Likewise.
! 	(thunderx_advsimd_vector_cost, tsv110_advsimd_vector_cost): Likewise.
! 	(cortexa57_advsimd_vector_cost, exynosm1_advsimd_vector_cost)
! 	(xgene1_advsimd_vector_cost, thunderx2t99_advsimd_vector_cost)
! 	(thunderx3t110_advsimd_vector_cost): Likewise.
! 	(aarch64_use_new_vector_costs_p): New function.
! 	(aarch64_simd_vec_costs): New function, split out from...
! 	(aarch64_builtin_vectorization_cost): ...here.
! 	(aarch64_is_reduction): New function.
! 	(aarch64_detect_vector_stmt_subtype): Likewise.
! 	(aarch64_add_stmt_cost): Call aarch64_detect_vector_stmt_subtype if
! 	using the new vector costs.
  
! 2021-03-26  Iain Buclaw  <ibuclaw@gdcproject.org>
  
! 	PR ipa/99466
! 	* tree-emutls.c (get_emutls_init_templ_addr): Mark initializer of weak
! 	TLS declarations as public.
  
! 2021-03-26  Iain Buclaw  <ibuclaw@gdcproject.org>
  
! 	* config/aarch64/aarch64-d.c (IN_TARGET_CODE): Define.
! 	* config/arm/arm-d.c (IN_TARGET_CODE): Likewise.
! 	* config/i386/i386-d.c (IN_TARGET_CODE): Likewise.
! 	* config/mips/mips-d.c (IN_TARGET_CODE): Likewise.
! 	* config/pa/pa-d.c (IN_TARGET_CODE): Likewise.
! 	* config/riscv/riscv-d.c (IN_TARGET_CODE): Likewise.
! 	* config/rs6000/rs6000-d.c (IN_TARGET_CODE): Likewise.
! 	* config/s390/s390-d.c (IN_TARGET_CODE): Likewise.
! 	* config/sparc/sparc-d.c (IN_TARGET_CODE): Likewise.
  
! 2021-03-26  Iain Buclaw  <ibuclaw@gdcproject.org>
  
! 	PR d/91595
! 	* config.gcc (*-*-cygwin*): Add winnt-d.o
! 	(*-*-mingw*): Likewise.
! 	* config/i386/cygwin.h (EXTRA_TARGET_D_OS_VERSIONS): New macro.
! 	* config/i386/mingw32.h (EXTRA_TARGET_D_OS_VERSIONS): Likewise.
! 	* config/i386/t-cygming: Add winnt-d.o.
! 	* config/i386/winnt-d.c: New file.
  
! 2021-03-26  Iain Buclaw  <ibuclaw@gdcproject.org>
  
! 	* config/freebsd-d.c: Include memmodel.h.
  
! 2021-03-26  Iain Buclaw  <ibuclaw@gdcproject.org>
  
! 	PR d/99691
! 	* config.gcc (*-*-openbsd*): Add openbsd-d.o.
! 	* config/t-openbsd: Add openbsd-d.o.
! 	* config/openbsd-d.c: New file.
  
! 2021-03-25  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
  
! 	PR tree-optimization/96974
! 	* tree-vect-stmts.c (vect_get_vector_types_for_stmt): Replace assert
! 	with graceful exit.
  
! 2021-03-25  H.J. Lu  <hjl.tools@gmail.com>
  
! 	Revert:
! 	2021-03-25  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/98209
! 	PR target/99744
! 	* config/i386/i386.c (ix86_can_inline_p): Don't check ISA for
! 	always_inline in system headers.
  
! 2021-03-25  Kewen Lin  <linkw@linux.ibm.com>
  
! 	* tree-vect-loop.c (vect_model_reduction_cost): Init inside_cost.
  
! 2021-03-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/99565
! 	* tree-core.h (enum operand_equal_flag): Add OEP_ADDRESS_OF_SAME_FIELD.
! 	* fold-const.c (operand_compare::operand_equal_p): Don't compare
! 	field offsets if OEP_ADDRESS_OF_SAME_FIELD.
  
! 2021-03-25  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/98209
! 	PR target/99744
! 	* config/i386/i386.c (ix86_can_inline_p): Don't check ISA for
! 	always_inline in system headers.
  
! 2021-03-25  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99746
! 	* tree-vect-slp-patterns.c (complex_pattern::build): Do not mark
! 	the scalar stmt as patterned.  Instead set up required things
! 	manually.
  
! 2021-03-25  Xionghu Luo  <luoxhu@linux.ibm.com>
  
! 	* config/rs6000/rs6000.c (power8_costs): Change l2 cache
! 	from 256 to 512.
  
! 2021-03-24  Martin Liska  <mliska@suse.cz>
  
! 	PR target/99753
! 	* common/config/i386/i386-common.c (ARRAY_SIZE): Fix off-by-one
! 	error.
! 	* config/i386/i386-options.c (ix86_option_override_internal):
! 	Add run-time assert.
  
! 2021-03-24  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/99122
! 	* ipa-cp.c (initialize_node_lattices): Mark as bottom all
! 	parameters with unknown type.
! 	(ipacp_value_safe_for_type): New function.
! 	(propagate_vals_across_arith_jfunc): Verify that the constant type
! 	can be used for a type of the formal parameter.
! 	(propagate_vals_across_ancestor): Likewise.
! 	(propagate_scalar_across_jump_function): Likewise.  Pass the type
! 	also to propagate_vals_across_ancestor.
  
! 2021-03-24  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	PR target/99727
! 	* config/arm/mve.md (movmisalign<mode>_mve_store): Use Ux
! 	constraint.
! 	(movmisalign<mode>_mve_load): Likewise.
  
! 2021-03-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99724
! 	* config/arm/vec-common.md (one_cmpl<mode>2, neg<mode>2,
! 	movmisalign<mode>): Disable expanders for TARGET_REALLY_IWMMXT.
  
! 2021-03-24  Alexandre Oliva  <oliva@adacore.com>
  
! 	* doc/sourcebuild.texi (sysconf): New effective target.
  
! 2021-03-24  Alexandre Oliva  <oliva@adacore.com>
  
! 	* config/i386/predicates.md (reg_or_const_vec_operand): New.
! 	* config/i386/sse.md (ssse3_pshufbv8qi3): Add an expander for
! 	the now *-prefixed insn_and_split, turn the splitter const vec
! 	into an input for the insn, making it an ignored immediate for
! 	non-split cases, and loaded into the scratch register
! 	otherwise.
  
! 2021-03-23  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR target/99581
! 	* config/aarch64/constraints.md (Utq, UOb, UOh, UOw, UOd, UOty):
! 	Use define_relaxed_memory_constraint for them.
  
! 2021-03-23  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	PR target/99733
! 	* config/host-darwin.c (darwin_gt_pch_use_address): Add a
! 	colon to the diagnostic message.
  
! 2021-03-23  Ilya Leoshkevich  <iii@linux.ibm.com>
  
! 	* fwprop.c (fwprop_propagation::fwprop_propagation): Look at
! 	set_info's uses.
! 	(try_fwprop_subst_note): Use set_info instead of insn_info.
! 	(try_fwprop_subst_pattern): Likewise.
! 	(try_fwprop_subst_notes): Likewise.
! 	(try_fwprop_subst): Likewise.
! 	(forward_propagate_subreg): Likewise.
! 	(forward_propagate_and_simplify): Likewise.
! 	(forward_propagate_into): Likewise.
! 	* rtl-ssa/accesses.h (set_info::single_nondebug_use) New
! 	method.
! 	(set_info::single_nondebug_insn_use): Likewise.
! 	(set_info::single_phi_use): Likewise.
! 	* rtl-ssa/member-fns.inl (set_info::single_nondebug_use) New
! 	method.
! 	(set_info::single_nondebug_insn_use): Likewise.
! 	(set_info::single_phi_use): Likewise.
  
! 2021-03-23  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	* doc/sourcebuild.texi (arm_dsp_ok, arm_dsp): Document.
  
! 2021-03-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99540
! 	* config/aarch64/aarch64.c (aarch64_add_offset): Tell
! 	expand_mult to perform an unsigned rather than a signed
! 	multiplication.
  
! 2021-03-23  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/99704
! 	* config/i386/cpuid.h (__cpuid): Add __volatile__.
! 	(__cpuid_count): Likewise.
  
! 2021-03-23  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99721
! 	* tree-vect-slp.c (vect_slp_analyze_node_operations):
! 	Make sure we can schedule the node.
  
! 2021-03-23  Marcus Comstedt  <marcus@mc.pp.se>
  
! 	* config/riscv/riscv.c (riscv_subword): Take endianness into
! 	account when calculating the byte offset.
  
! 2021-03-23  Marcus Comstedt  <marcus@mc.pp.se>
  
! 	* config/riscv/predicates.md (subreg_lowpart_operator): New predicate
! 	* config/riscv/riscv.md (*addsi3_extended2, *subsi3_extended2)
! 	(*negsi2_extended2, *mulsi3_extended2, *<optab>si3_mask)
! 	(*<optab>si3_mask_1, *<optab>di3_mask, *<optab>di3_mask_1)
! 	(*<optab>si3_extend_mask, *<optab>si3_extend_mask_1): Use
! 	new predicate "subreg_lowpart_operator"
  
! 2021-03-23  Marcus Comstedt  <marcus@mc.pp.se>
  
! 	* config/riscv/riscv.c (riscv_swap_instruction): New function
! 	to byteswap an SImode rtx containing an instruction.
! 	(riscv_trampoline_init): Byteswap the generated instructions
! 	when needed.
  
! 2021-03-23  Marcus Comstedt  <marcus@mc.pp.se>
  
! 	* common/config/riscv/riscv-common.c
! 	(TARGET_DEFAULT_TARGET_FLAGS): Set default endianness.
! 	* config.gcc (riscv32be-*, riscv64be-*): Set
! 	TARGET_BIG_ENDIAN_DEFAULT to 1.
! 	* config/riscv/elf.h (LINK_SPEC): Change -melf* value
! 	depending on default endianness.
! 	* config/riscv/freebsd.h (LINK_SPEC): Likewise.
! 	* config/riscv/linux.h (LINK_SPEC): Likewise.
! 	* config/riscv/riscv.c (TARGET_DEFAULT_TARGET_FLAGS): Set
! 	default endianness.
! 	* config/riscv/riscv.h (DEFAULT_ENDIAN_SPEC): New macro.
  
! 2021-03-23  Marcus Comstedt  <marcus@mc.pp.se>
  
! 	* config/riscv/elf.h (LINK_SPEC): Pass linker endianness flag.
! 	* config/riscv/freebsd.h (LINK_SPEC): Likewise.
! 	* config/riscv/linux.h (LINK_SPEC): Likewise.
! 	* config/riscv/riscv.h (ASM_SPEC): Pass -mbig-endian and
! 	-mlittle-endian.
! 	(BYTES_BIG_ENDIAN): Handle big endian.
! 	(WORDS_BIG_ENDIAN): Define to BYTES_BIG_ENDIAN.
! 	* config/riscv/riscv.opt (-mbig-endian, -mlittle-endian): New
! 	options.
! 	* doc/invoke.texi (-mbig-endian, -mlittle-endian): Document.
  
! 2021-03-23  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
  
! 	* regcprop.c (find_oldest_value_reg): Ask target whether
! 	  different mode is fine for replacement register.
  
! 2021-03-23  Aldy Hernandez  <aldyh@redhat.com>
  
! 	PR tree-optimization/99296
! 	* value-range.cc (irange::irange_set_1bit_anti_range): New.
! 	(irange::irange_set_anti_range): Call irange_set_1bit_anti_range
! 	* value-range.h (irange::irange_set_1bit_anti_range): New.
  
! 2021-03-22  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR target/99581
! 	* config/aarch64/constraints.md (UtQ): Use
! 	define_relaxed_memory_constraint for it.
! 	* doc/md.texi (define_relaxed_memory_constraint): Describe it.
! 	* genoutput.c (main): Process DEFINE_RELAXED_MEMORY_CONSTRAINT.
! 	* genpreds.c (constraint_data): Add bitfield is_relaxed_memory.
! 	(have_relaxed_memory_constraints): New static var.
! 	(relaxed_memory_start, relaxed_memory_end): Ditto.
! 	(add_constraint): Add arg is_relaxed_memory.  Check name for
! 	relaxed memory.  Set up is_relaxed_memory in constraint_data and
! 	have_relaxed_memory_constraints.  Adjust calls.
! 	(choose_enum_order): Process relaxed memory.
! 	(write_tm_preds_h): Ditto.
! 	(main): Process DEFINE_RELAXED_MEMORY_CONSTRAINT.
! 	* gensupport.c (process_rtx): Process DEFINE_RELAXED_MEMORY_CONSTRAINT.
! 	* ira-costs.c (record_reg_classes): Process CT_RELAXED_MEMORY.
! 	* ira-lives.c (single_reg_class): Use
! 	insn_extra_relaxed_memory_constraint.
! 	* ira.c (ira_setup_alts): CT_RELAXED_MEMORY.
! 	* lra-constraints.c (valid_address_p): Use
! 	insn_extra_relaxed_memory_constraint instead of other memory
! 	constraints.
! 	(process_alt_operands): Process CT_RELAXED_MEMORY.
! 	(curr_insn_transform): Use insn_extra_relaxed_memory_constraint.
! 	* recog.c (asm_operand_ok, preprocess_constraints): Process
! 	CT_RELAXED_MEMORY.
! 	* reload.c (find_reloads): Ditto.
! 	* rtl.def (DEFINE_RELAXED_MEMORY_CONSTRAINT): New.
! 	* stmt.c (parse_input_constraint): Use
! 	insn_extra_relaxed_memory_constraint.
  
! 2021-03-22  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/97926
! 	* ubsan.c (ubsan_instrument_float_cast): Don't test for unordered if
! 	there are no NaNs.
  
! 2021-03-22  Alex Coplan  <alex.coplan@arm.com>
  
! 	PR target/97252
! 	* config/arm/arm-protos.h (neon_make_constant): Add generate
! 	argument to guard emitting insns, default to true.
! 	* config/arm/arm.c (arm_legitimate_constant_p_1): Reject
! 	CONST_VECTORs which neon_make_constant can't handle.
! 	(neon_vdup_constant): Add generate argument, avoid emitting
! 	insns if it's not set.
! 	(neon_make_constant): Plumb new generate argument through.
! 	* config/arm/constraints.md (Ui): New. Use it...
! 	* config/arm/mve.md (*mve_mov<mode>): ... here.
! 	* config/arm/vec-common.md (movv8hf): Use neon_make_constant to
! 	synthesize constants.
  
! 2021-03-22  Richard Biener  <rguenther@suse.de>
  
! 	* debug.h: Add deprecation warning.
  
! 2021-03-22  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99694
! 	* tree-ssa-sccvn.c (visit_phi): Ignore edges with the
! 	PHI result.
  
! 2021-03-22  Kito Cheng  <kito.cheng@sifive.com>
  
! 	PR target/99702
! 	* config/riscv/riscv.c (riscv_expand_block_move): Get RTL value
! 	after type checking.
  
! 2021-03-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/99562
! 	PR debug/66728
! 	* dwarf2out.c (get_full_len): Use get_precision rather than
! 	min_precision.
! 	(add_const_value_attribute): Make sure add_AT_wide argument has
! 	precision prec rather than some very wide one.
  
! 2021-03-22  Kewen Lin  <linkw@linux.ibm.com>
  
! 	* config/rs6000/rs6000.md (*rotldi3_insert_sf,
! 	*mov<SFDF:mode><SFDF2:mode>cc_p9, floatsi<mode>2_lfiwax,
! 	floatsi<mode>2_lfiwax_mem, floatunssi<mode>2_lfiwzx,
! 	floatunssi<mode>2_lfiwzx_mem, *floatsidf2_internal,
! 	*floatunssidf2_internal, fix_trunc<mode>si2_stfiwx,
! 	fix_trunc<mode>si2_internal, fixuns_trunc<mode>si2_stfiwx,
! 	*round32<mode>2_fprs, *roundu32<mode>2_fprs,
! 	*fix_trunc<mode>si2_internal): Fix empty split condition.
! 	* config/rs6000/vsx.md (*vsx_le_undo_permute_<mode>,
! 	vsx_reduc_<VEC_reduc_name>_v2df, vsx_reduc_<VEC_reduc_name>_v4sf,
! 	*vsx_reduc_<VEC_reduc_name>_v2df_scalar,
! 	*vsx_reduc_<VEC_reduc_name>_v4sf_scalar): Likewise.
  
! 2021-03-22  Xionghu Luo  <luoxhu@linux.ibm.com>
  
! 	PR target/98914
! 	* config/rs6000/rs6000.c (rs6000_expand_vector_set_var_p9):
! 	Convert idx to DImode.
! 	(rs6000_expand_vector_set_var_p8): Likewise.
  
! 2021-03-21  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/99388
! 	* dwarf2out.c (insert_float): Change return type from void to
! 	unsigned, handle GET_MODE_SIZE (mode) == 2 and return element size.
! 	(mem_loc_descriptor, loc_descriptor, add_const_value_attribute):
! 	Adjust callers.
  
! 2021-03-20  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/99679
! 	* config/i386/i386.c (construct_container): Check cfun != NULL
! 	before accessing silent_p.
  
! 2021-03-20  Ahamed Husni  <ahamedhusni73@gmail.com>
  
! 	* asan.c: Fix typos in comments.
  
! 2021-03-20  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/99680
! 	* lra-constraints.c (skip_contraint_modifiers): Rename to skip_constraint_modifiers.
! 	(process_address_1): Check empty constraint before using
! 	CONSTRAINT_LEN.
  
! 2021-03-19  Pat Haugen  <pthaugen@linux.ibm.com>
  
! 	* config/rs6000/rs6000.c (power10_cost): New.
! 	(rs6000_option_override_internal): Set Power10 costs.
! 	(rs6000_issue_rate): Set Power10 issue rate.
! 	* config/rs6000/power10.md: Rewrite for Power10.
  
! 2021-03-19  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR target/99663
! 	* lra-constraints.c (process_address_1): Don't use unknown
! 	constraint for address constraint.
  
! 2021-03-19  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	PR target/99661
! 	* config.gcc (powerpc-*-darwin8): Delete the reference to
! 	the now removed darwin8.h.
  
! 2021-03-19  Olivier Hainque  <hainque@adacore.com>
  
! 	PR target/99660
! 	* config/vxworksae.h (VX_CPU_PREFIX): Define.
  
! 2021-03-19  John David Anglin  <danglin@gcc.gnu.org>
  
! 	* config/pa/pa.c (import_milli): Use memcpy instead of strncpy.
  
! 2021-03-19  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR tree-optimization/99656
! 	* tree-vect-slp-patterns.c (linear_loads_p,
! 	complex_add_pattern::matches, is_eq_or_top,
! 	vect_validate_multiplication, complex_mul_pattern::matches,
! 	complex_fms_pattern::matches): Remove complex_perm_kinds_t.
! 	* tree-vectorizer.h: (complex_load_perm_t): Removed.
! 	(slp_tree_to_load_perm_map_t): Use complex_perm_kinds_t instead of
! 	complex_load_perm_t.
  
! 2021-03-19  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/99652
! 	* config/i386/i386-options.c (ix86_init_machine_status): Set
! 	silent_p to true.
! 	* config/i386/i386.c (init_cumulative_args): Set silent_p to
! 	false.
! 	(construct_container): Return early for return and argument
! 	errors if silent_p is true.
! 	* config/i386/i386.h (machine_function): Add silent_p.
  
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99593
! 	* config/arm/constraints.md (Ds): New constraint.
! 	* config/arm/vec-common.md (mve_vshlq_<supf><mode>): Use w,Ds
! 	constraint instead of w,Dm.
  
! 2021-03-19  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn.c (gcn_parse_amdgpu_hsa_kernel_attribute): Fix quotes
! 	in error message.
  
! 2021-03-19  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR middle-end/99641
! 	* fold-const.c (native_encode_initializer) <CONSTRUCTOR>: For an
! 	array type, do the computation of the current position in sizetype.
  
! 2021-03-18  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR target/99422
! 	* lra-constraints.c (process_address_1): Use lookup_constraint
! 	only for a single constraint.
  
! 2021-03-18  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/99502
! 	* gimple-array-bounds.cc (inbounds_vbase_memaccess_p): Rename...
! 	(inbounds_memaccess_p): ...to this.  Check the ending offset of
! 	the accessed member.
  
! 2021-03-18  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn.c (gcn_parse_amdgpu_hsa_kernel_attribute): Add %< and
! 	  %> quote markers to error messages.
! 	(gcn_goacc_validate_dims): Likewise.
! 	(gcn_conditional_register_usage): Remove exclaimation mark from error
! 	message.
! 	(gcn_vectorize_vec_perm_const): Ensure perm is fully uninitialized.
  
! 2021-03-18  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* config/i386/x86-tune-costs.h (struct processor_costs): Fix costs of
! 	integer divides1.
  
! 2021-03-18  Sinan Lin  <sinan@isrc.iscas.ac.cn>
! 	    Kito Cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/riscv.c (riscv_block_move_straight): Change type
! 	to unsigned HOST_WIDE_INT for parameter and local variable with
! 	HOST_WIDE_INT type.
! 	(riscv_adjust_block_mem): Ditto.
! 	(riscv_block_move_loop): Ditto.
! 	(riscv_expand_block_move): Ditto.
  
! 2021-03-18  Nick Clifton  <nickc@redhat.com>
  
! 	* config/v850/v850.c (construct_restore_jr): Increase static
! 	 buffer size.
! 	(construct_save_jarl): Likewise.
! 	* config/v850/v850.h (DWARF2_DEBUGGING_INFO): Define.
  
! 2021-03-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_adjust_generic_arch_tuning): Define.
! 	(aarch64_override_options_internal): Use it.
! 	(generic_tunings): Add AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS to
! 	tune_flags.
  
! 2021-03-17  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* config/nios2/nios2.c (nios2_custom_check_insns): Clean up
! 	error message format issues.
! 	(nios2_option_override): Likewise.
! 	(nios2_expand_fpu_builtin): Likewise.
! 	(nios2_init_custom_builtins): Adjust to avoid bogus strncpy
! 	truncation warning.
! 	(nios2_expand_custom_builtin): More error message format fixes.
! 	(nios2_expand_rdwrctl_builtin): Likewise.
! 	(nios2_expand_rdprs_builtin): Likewise.
! 	(nios2_expand_eni_builtin): Likewise.
! 	(nios2_expand_builtin): Likewise.
! 	(nios2_register_custom_code): Likewise.
! 	(nios2_valid_target_attribute_rec): Likewise.
! 	(nios2_add_insn_asm): Fix uninitialized variable warning.
  
! 2021-03-17  Jan Hubicka  <jh@suse.cz>
  
! 	* config/i386/x86-tune-costs.h (struct processor_costs): Update costs
! 	of gather to match reality.
! 	* config/i386/x86-tune.def (X86_TUNE_USE_GATHER): Enable for znver3.
  
! 2021-03-17  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-builtins.c (aarch64_expand_rng_builtin): Use EQ
! 	to compare against CC_REG rather than NE.
  
! 2021-03-17  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/99504
! 	* config/i386/i386.c (ix86_force_load_from_GOT_p): Support
! 	inline assembly statements.
! 	(ix86_print_operand): Update 'P' handling for -fno-plt.
  
! 2021-03-17  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR target/99542
! 	* config/aarch64/aarch64.c
! 	(aarch64_simd_clone_compute_vecsize_and_simdlen): Remove unused var.
  
! 2021-03-16  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/98092
! 	* config/rs6000/predicates.md (branch_comparison_operator): Allow
! 	ordered and unordered for CCFPmode, if flag_finite_math_only.
  
! 2021-03-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99600
! 	* config/i386/i386-expand.c (ix86_split_lea_for_addr): Emit a MULT
! 	rather than ASHIFT.
! 	* config/i386/i386.md (mult by 1248 into ashift): New splitter.
  
! 2021-03-16  Martin Liska  <mliska@suse.cz>
  
! 	PR target/99592
! 	* optc-save-gen.awk: Add flag_ipa_ra to exceptions for
! 	cl_optimization_compare function.
  
! 2021-03-16  Ilya Leoshkevich  <iii@linux.ibm.com>
  
! 	* config/s390/s390.c (f_constraint_p): Treat "fv" constraints
! 	as "v".
  
! 2021-03-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99563
! 	* config/i386/i386.h (struct machine_function): Add
! 	has_explicit_vzeroupper bitfield.
! 	* config/i386/i386-expand.c (ix86_expand_builtin): Set
! 	cfun->machine->has_explicit_vzeroupper when expanding
! 	IX86_BUILTIN_VZEROUPPER.
! 	* config/i386/i386-features.c (rest_of_handle_insert_vzeroupper):
! 	Do the mode switching only when TARGET_VZEROUPPER, expensive
! 	optimizations turned on and not optimizing for size.
! 	(pass_insert_vzeroupper::gate): Enable even when
! 	cfun->machine->has_explicit_vzeroupper is set.
  
! 2021-03-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99542
! 	* config/aarch64/aarch64.c
! 	(aarch64_simd_clone_compute_vecsize_and_simdlen): If not a function
! 	definition, walk TYPE_ARG_TYPES list if non-NULL for argument types
! 	instead of DECL_ARGUMENTS.  Ignore types for uniform arguments.
  
! 2021-03-15  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98834
! 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Handle missing
! 	subsetting by truncating the access size.
  
! 2021-03-15  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* config/i386/i386-options.c (processor_cost_table): Add znver3_cost.
! 	* config/i386/x86-tune-costs.h (znver3_cost): New gobal variable; copy
! 	of znver2_cost.
  
! 2021-03-15  Martin Liska  <mliska@suse.cz>
  
! 	* spellcheck.c: Add missing comma in initialization.
  
! 2021-03-14  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/sse.md (*vec_extract<mode>): Merge alternative 0 with
! 	alternative 2 and alternative 1 with alternative 3 using
! 	YW register constraint.
! 	(*vec_extract<PEXTR_MODE12:mode>_zext): Merge alternatives
! 	using YW register constraint.
! 	(*vec_extractv16qi_zext): Ditto.
! 	(*vec_extractv4si): Merge alternatives 4 and 5
! 	using Yw register constraint.
! 	(*ssse3_palignr<mode>_perm): Use Yw instead of v for alternative 3.
  
! 2021-03-13  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/99489
! 	* builtins.c (gimple_call_alloc_size): Fail gracefully when argument
! 	is not a call statement.
  
! 2021-03-13  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/99544
! 	* match.pd (X + (X << C) -> X * (1 + (1 << C))): Don't simplify
! 	if for vector types multiplication can't be done in type's mode.
  
! 2021-03-12  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/99422
! 	* config/sparc/constraints.md (w): Rename to...
! 	(W): ... this and ditch previous implementation.
! 	* config/sparc/sparc.md (*movdi_insn_sp64): Replace W with m.
! 	(*movdf_insn_sp64): Likewise.
! 	(*mov<VM64:mode>_insn_sp64): Likewise.
! 	* config/sparc/sync.md (*atomic_compare_and_swap<mode>_1): Replace
! 	w with W.
! 	(atomic_compare_and_swap_leon3_1): Likewise.
! 	(*atomic_compare_and_swapdi_v8plus): Likewise.
! 	* config/sparc/sparc.c (memory_ok_for_ldd): Remove useless test on
! 	architecture and add missing address validity check during LRA.
  
! 2021-03-12  Tobias Burnus  <tobias@codesourcery.com>
  
! 	PR fortran/98858
! 	* gimplify.c (omp_add_variable): Handle NULL_TREE as size
! 	occuring for assumed-size arrays in use_device_{ptr,addr}.
  
! 2021-03-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99321
! 	* config/i386/constraints.md (YW): New internal constraint.
! 	* config/i386/sse.md (v_Yw): Add V4TI, V2TI, V1TI and TI cases.
! 	(*<sse2_avx2>_<insn><mode>3<mask_name>,
! 	*<sse2_avx2>_uavg<mode>3<mask_name>, *abs<mode>2,
! 	*<s>mul<mode>3_highpart<mask_name>): Use <v_Yw> instead of v in
! 	constraints.
! 	(<sse2_avx2>_psadbw): Use YW instead of v in constraints.
! 	(*avx2_pmaddwd, *sse2_pmaddwd, *<code>v8hi3, *<code>v16qi3,
! 	avx2_pmaddubsw256, ssse3_pmaddubsw128): Merge last two alternatives
! 	into one, use Yw instead of former x,v.
! 	(ashr<mode>3, <insn><mode>3): Use <v_Yw> instead of x in constraints of
! 	the last alternative.
! 	(<sse2_avx2>_packsswb<mask_name>, <sse2_avx2>_packssdw<mask_name>,
! 	<sse2_avx2>_packuswb<mask_name>, <sse4_1_avx2>_packusdw<mask_name>,
! 	*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>, <ssse3_avx2>_palignr<mode>,
! 	<ssse3_avx2>_pshufb<mode>3<mask_name>): Merge last two alternatives
! 	into one, use <v_Yw> instead of former x,v.
! 	(avx2_interleave_highv32qi<mask_name>,
! 	vec_interleave_highv16qi<mask_name>): Use Yw instead of v in
! 	constraints.  Add && <mask_avx512bw_condition> to condition.
! 	(avx2_interleave_lowv32qi<mask_name>,
! 	vec_interleave_lowv16qi<mask_name>,
! 	avx2_interleave_highv16hi<mask_name>,
! 	vec_interleave_highv8hi<mask_name>,
! 	avx2_interleave_lowv16hi<mask_name>, vec_interleave_lowv8hi<mask_name>,
! 	avx2_pshuflw_1<mask_name>, sse2_pshuflw_1<mask_name>,
! 	avx2_pshufhw_1<mask_name>, sse2_pshufhw_1<mask_name>,
! 	avx2_<code>v16qiv16hi2<mask_name>, sse4_1_<code>v8qiv8hi2<mask_name>,
! 	*sse4_1_<code>v8qiv8hi2<mask_name>_1, <sse2_avx2>_<insn><mode>3): Use
! 	Yw instead of v in constraints.
! 	* config/i386/mmx.md (Yv_Yw): New define_mode_attr.
! 	(*mmx_<insn><mode>3, mmx_ashr<mode>3, mmx_<insn><mode>3): Use <Yv_Yw>
! 	instead of Yv in constraints.
! 	(*mmx_<insn><mode>3, *mmx_mulv4hi3, *mmx_smulv4hi3_highpart,
! 	*mmx_umulv4hi3_highpart, *mmx_pmaddwd, *mmx_<code>v4hi3,
! 	*mmx_<code>v8qi3, mmx_pack<s_trunsuffix>swb, mmx_packssdw,
! 	mmx_punpckhbw, mmx_punpcklbw, mmx_punpckhwd, mmx_punpcklwd,
! 	*mmx_uavgv8qi3, *mmx_uavgv4hi3, mmx_psadbw): Use Yw instead of Yv in
! 	constraints.
! 	(*mmx_pinsrw, *mmx_pinsrb, *mmx_pextrw, *mmx_pextrw_zext, *mmx_pextrb,
! 	*mmx_pextrb_zext): Use YW instead of Yv in constraints.
! 	(*mmx_eq<mode>3, mmx_gt<mode>3): Use x instead of Yv in constraints.
! 	(mmx_andnot<mode>3, *mmx_<code><mode>3): Split last alternative into
! 	two, one with just x, another isa avx512vl with v.
  
! 2021-03-12  Martin Liska  <mliska@suse.cz>
  
! 	* doc/invoke.texi: Add missing param documentation.
  
! 2021-03-11  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR analyzer/96374
! 	* Makefile.in (ANALYZER_OBJS): Add analyzer/feasible-graph.o and
! 	analyzer/trimmed-graph.o.
! 	* doc/analyzer.texi (Analyzer Paths): Rewrite description of
! 	feasibility checking to reflect new implementation.
! 	* doc/invoke.texi (-fdump-analyzer-feasibility): Document new
! 	option.
! 	* shortest-paths.h (shortest_paths::get_shortest_distance): New.
  
! 2021-03-11  David Malcolm  <dmalcolm@redhat.com>
  
! 	* digraph.cc (selftest::test_shortest_paths): Update
! 	shortest_paths init for new param.  Add test of
! 	SPS_TO_GIVEN_TARGET.
! 	* shortest-paths.h (enum shortest_path_sense): New.
! 	(shortest_paths::shortest_paths): Add "sense" param.
! 	Update for renamings.  Generalize to use "sense" param.
! 	(shortest_paths::get_shortest_path): Rename param.
! 	(shortest_paths::m_sense): New field.
! 	(shortest_paths::m_prev): Rename...
! 	(shortest_paths::m_best_edge): ...to this.
! 	(shortest_paths::get_shortest_path): Update for renamings.
! 	Conditionalize flipping of path on sense of traversal.
  
! 2021-03-11  David Malcolm  <dmalcolm@redhat.com>
  
! 	* digraph.cc (selftest::test_shortest_paths): Add test coverage
! 	for paths from B and C.
! 	* shortest-paths.h (shortest_paths::shortest_paths): Handle
! 	unreachable nodes, rather than asserting.
  
! 2021-03-11  David Edelsohn  <dje.gcc@gmail.com>
  
! 	PR target/99094
! 	* config/rs6000/rs6000.c (rs6000_xcoff_file_start): Don't create
! 	xcoff_tbss_section_name.
! 	* config/rs6000/xcoff.h (ASM_OUTPUT_TLS_COMMON): Use .lcomm.
! 	* xcoffout.c (xcoff_tbss_section_name): Delete.
! 	* xcoffout.h (xcoff_tbss_section_name): Delete.
  
! 2021-03-11  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99523
! 	* tree-cfg.c (dump_function_to_file): Dump SSA names
! 	w/o identifier to the decls section as well, not only those
! 	without a VAR_DECL.
  
! 2021-03-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR ipa/99517
! 	* ipa-icf-gimple.c (func_checker::compare_gimple_call): For internal
! 	function calls with lhs fail if the lhs don't have compatible types.
  
! 2021-03-11  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* config/cris/cris.h (HARD_FRAME_POINTER_REGNUM): Define.
! 	Change FRAME_POINTER_REGNUM to correspond to a new faked
! 	register faked_fp, part of GENNONACR_REGS like faked_ap.
! 	(CRIS_FAKED_REGS_CONTENTS): New helper macro.
! 	(FIRST_PSEUDO_REGISTER, FIXED_REGISTERS, CALL_USED_REGISTERS):
! 	(REG_ALLOC_ORDER, REG_CLASS_CONTENTS, REGNO_OK_FOR_BASE_P)
! 	(ELIMINABLE_REGS, REGISTER_NAMES): Adjust accordingly.
! 	* config/cris/cris.md (CRIS_FP_REGNUM): Renumber to new faked
! 	register.
! 	(CRIS_REAL_FP_REGNUM): New constant.
! 	* config/cris/cris.c (cris_reg_saved_in_regsave_area): Check
! 	for HARD_FRAME_POINTER_REGNUM instead of FRAME_POINTER_REGNUM.
! 	(cris_initial_elimination_offset): Handle elimination changes
! 	to HARD_FRAME_POINTER_REGNUM instead of FRAME_POINTER_REGNUM
! 	and add one from FRAME_POINTER_REGNUM to
! 	HARD_FRAME_POINTER_REGNUM.
! 	(cris_expand_prologue, cris_expand_epilogue): Emit code for
! 	hard_frame_pointer_rtx instead of frame_pointer_rtx.
  
! 2021-03-10  David Edelsohn  <dje.gcc@gmail.com>
  
! 	PR target/99492
! 	* config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Add check for DCmode.
! 	* config/rs6000/rs6000.c (rs6000_special_round_type_align): Same.
  
! 2021-03-10  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR target/99422
! 	* lra-constraints.c (process_address_1): Don't check unknown
! 	constraint, use X for empty constraint.
  
! 2021-03-10  Alex Coplan  <alex.coplan@arm.com>
  
  	* config/aarch64/aarch64.c (aarch64_vfp_is_call_or_return_candidate):
! 	Fix typo in comment describing "is_ha" argument.
  
! 2021-03-10  John David Anglin  <danglin@gcc.gnu.org>
  
! 	* doc/sourcebuild.texi: Document LRA target selector.
  
! 2021-03-10  David Malcolm  <dmalcolm@redhat.com>
  
! 	* doc/ux.texi: Add subsection contrasting interactive versus
! 	batch usage of GCC.
  
! 2021-03-10  Joel Hutton  <joel.hutton@arm.com>
  
! 	PR target/99102
! 	* tree-vect-stmts.c (vectorizable_store): Fix scatter store mask
! 	check condition.
! 	(vectorizable_load): Fix gather load mask check condition.
  
! 2021-03-10  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99510
! 	* tree.c (check_aligned_type): Check that the candidate
! 	has TYPE_USER_ALIGN set instead of matching with the
! 	original type.
  
! 2021-03-10  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* config/sparc/sparc.c (sparc_regmode_natural_size): Return 4 for
! 	float and vector integer modes only if the mode is not larger.
  
! 2021-03-10  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* config/cris/cris.h (DWARF_FRAME_REGISTERS): Define.
  
! 2021-03-09  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	* ira.c (ira_setup_alts, ira_get_dup_out_num): Process digital
! 	constraints > 9.
! 	* ira-lives.c (single_reg_class): Ditto.
  
! 2021-03-09  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* config.gcc (aarch64-*-rtems*): Include general rtems.h after
! 	the architecture-specific rtems.h.
! 	(aarch64-*-rtems*): Likewise.
! 	(arm*-*-rtems*): Likewise.
! 	(epiphany-*-rtems*): Likewise.
! 	(riscv*-*-rtems*): Likewise.
  
! 2021-03-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/99305
! 	* tree-ssa-phiopt.c (conditional_replacement): Test integer_pow2p
! 	before integer_all_onesp instead of vice versa.
  
! 2021-03-09  Richard Earnshaw  <rearnsha@arm.com>
  
! 	* common/config/arm/arm-common.c (arm_config_default): Change type
! 	of 'i' to unsigned.
  
! 2021-03-09  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR target/99454
! 	* lra-constraints.c (process_address_1): Process constraint 'g'
! 	separately and digital constraints containing more one digit.
  
! 2021-03-09  Nick Clifton  <nickc@redhat.com>
  
! 	* config/rx/rx.h (DBX_DEBUGGING_INFO): Define.
! 	(DWARF"_DEBUGGING_INFO): Define.
  
! 2021-03-09  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR c++/90448
! 	* calls.c (initialize_argument_information): When the argument
! 	is passed by reference, do not make a copy in a thunk only if
! 	the argument is already in memory.  Remove redundant test for
! 	the case of callee copy.
  
! 2021-03-09  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR target/99454
! 	* lra-constraints.c (process_address_1): Process 0..9 constraints
! 	in process_address_1.
  
! 2021-03-09  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	* config/s390/s390.c (struct s390_processor processor_table):
! 	Binutils name string must not be empty.
  
! 2021-03-09  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc.c (arc_attr_type): Remove function.
  
! 2021-03-09  Martin Liska  <mliska@suse.cz>
  
! 	PR target/99464
! 	* config/i386/i386-options.c (ix86_option_override_internal):
! 	Set isa_flags for OPTS argument and not for the global
! 	global_options.
  
! 2021-03-09  Aaron Sawdey  <acsawdey@linux.ibm.com>
  
! 	* config/rs6000/predicates.md (ds_form_mem_operand): Check
! 	in correct code.
  
! 2021-03-09  Aaron Sawdey  <acsawdey@linux.ibm.com>
  
! 	PR target/99070
! 	* config/rs6000/predicates.md (ds_form_mem_operand) New
! 	predicate.
! 	* config/rs6000/genfusion.pl (gen_ld_cmpi_p10) Use
! 	ds_form_mem_operand in ld/lwa patterns.
! 	* config/rs6000/fusion.md: Regenerate file.
  
! 2021-03-08  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/98266
! 	* gimple-array-bounds.cc (inbounds_vbase_memaccess_p): New function.
! 	(array_bounds_checker::check_array_bounds): Call it.
  
! 2021-03-08  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/97631
! 	* tree-ssa-strlen.c (maybe_warn_overflow): Test rawmem.
! 	(handle_builtin_stxncpy_strncat): Rename locals.  Determine
! 	destination size from allocation calls.  Issue a more appropriate
! 	kind of warning.
! 	(handle_builtin_memcpy): Pass true as rawmem to maybe_warn_overflow.
! 	(handle_builtin_memset): Same.
  
! 2021-03-08  Peter Bergner  <bergner@linux.ibm.com>
  
! 	PR target/98959
! 	* config/rs6000/rs6000.c (rs6000_emit_le_vsx_permute): Add an assert
! 	to ensure we do not have an Altivec style address.
! 	* config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): Disable if passed
! 	an Altivec style address.
! 	(*vsx_le_perm_store_<mode>): Likewise.
! 	(splitters after *vsx_le_perm_store_<mode>): Likewise.
! 	(vsx_load_<mode>): Disable special expander if passed an Altivec
! 	style address.
! 	(vsx_store_<mode>): Likewise.
  
! 2021-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR target/99437
! 	* config/aarch64/predicates.md (aarch64_simd_shift_imm_vec_qi): Define.
! 	(aarch64_simd_shift_imm_vec_hi): Likewise.
! 	(aarch64_simd_shift_imm_vec_si): Likewise.
! 	(aarch64_simd_shift_imm_vec_di): Likewise.
! 	* config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Use
! 	predicate from above.
! 	(aarch64_shrn<mode>_insn_be): Likewise.
! 	(aarch64_rshrn<mode>_insn_le): Likewise.
! 	(aarch64_rshrn<mode>_insn_be): Likewise.
! 	(aarch64_shrn2<mode>_insn_le): Likewise.
! 	(aarch64_shrn2<mode>_insn_be): Likewise.
! 	(aarch64_rshrn2<mode>_insn_le): Likewise.
! 	(aarch64_rshrn2<mode>_insn_be): Likewise.
  
! 2021-03-08  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR target/99422
! 	* lra-constraints.c (skip_contraint_modifiers): New function.
! 	(process_address_1): Use it before lookup_constraint call.
  
! 2021-03-08  Martin Liska  <mliska@suse.cz>
  
! 	PR target/99463
! 	* config/i386/i386-options.c (ix86_option_override_internal):
! 	Enable UINTR and HRESET for -march that supports it.
  
! 2021-03-08  Ilya Leoshkevich  <iii@linux.ibm.com>
  
! 	* config/s390/s390.c (f_constraint_p): New function.
! 	(s390_md_asm_adjust): Implement TARGET_MD_ASM_ADJUST.
! 	(TARGET_MD_ASM_ADJUST): Likewise.
  
! 2021-03-08  Tobias Burnus  <tobias@codesourcery.com>
  
! 	PR fortran/97927
! 	* tree-nested.c (convert_local_reference_stmt): Avoid calling
! 	lookup_field_for_decl for Fortran module (= namespace context).
  
! 2021-03-08  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	* config/s390/s390.c (s390_expand_vec_compare): Implement <0
! 	comparison with arithmetic right shift.
! 	(s390_expand_vcond): No need for a force_reg anymore.
! 	s390_vec_compare will do it.
! 	* config/s390/vector.md ("vec_cmp<mode><tointvec>"): Accept also
! 	immediate operands.
  
! 2021-03-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99321
! 	* config/i386/constraints.md (Yw): Use SSE_REGS if TARGET_SSE
! 	but TARGET_AVX512BW or TARGET_AVX512VL is not set.  Adjust description
! 	and comment.
! 	* config/i386/sse.md (v_Yw): New define_mode_attr.
! 	(*<insn><mode>3, *mul<mode>3<mask_name>, *avx2_<code><mode>3,
! 	*sse4_1_<code><mode>3<mask_name>): Use <v_Yw> instead of v
! 	in constraints.
! 	* config/i386/mmx.md (mmx_pshufw_1, *vec_dupv4hi): Use Yw instead of
! 	xYw in constraints.
  
! 2021-03-06  Julian Brown  <julian@codesourcery.com>
  
! 	* tree-pretty-print.c (dump_generic_node): Emit non-generic
! 	address space info for aggregates.
  
! 2021-03-06  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* config/cris/cris.h (MAX_FIXED_MODE_SIZE): Don't define.
  
! 2021-03-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/99322
! 	* tree-cfg.c (bb_to_omp_idx): New variable.
! 	(execute_build_cfg): Release the bb_to_omp_idx vector after
! 	cleanup_tree_cfg returns.
! 	(handle_abnormal_edges): Remove bb_to_omp_idx argument, adjust
! 	for bb_to_omp_idx being a vec<int> instead of pointer to array
! 	of ints.
! 	(make_edges): Remove bb_to_omp_idx local variable, don't pass
! 	it to handle_abnormal_edges, adjust for bb_to_omp_idx being a
! 	vec<int> instead of pointer to array of ints and don't free/release
! 	it at the end.
! 	(remove_bb): When removing a bb and placing forced label somewhere
! 	else, ensure it is put into the same OpenMP region during cfg
! 	pass if possible or to entry successor as fallback.  Unregister
! 	bb from bb_to_omp_idx.
  
! 2021-03-05  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR target/99378
! 	* lra-constraints.c (process_address_1): Skip decomposing address
! 	for asm insn operand with unknown constraint.
  
! 2021-03-05  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/98078
! 	* cgraph.c (cgraph_edge::set_call_stmt): Do not update all
! 	corresponding speculative edges if we are about to resolve
! 	sepculation.  Make edge direct (and so resolve speculations) before
! 	removing it from call_site_hash.
! 	(cgraph_edge::make_direct): Relax the initial assert to allow calling
! 	the function on speculative direct edges.
  
! 2021-03-05  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR rtl-optimization/99376
! 	* rtlanal.c (nonzero_bits1) <arithmetic operators>: If the number
! 	of low-order zero bits is too large, set the result to 0 directly.
  
! 2021-03-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/93235
! 	* expmed.c (store_bit_field_using_insv): Return false of xop0 is a
! 	SUBREG and a SUBREG to op_mode can't be created.
  
! 2021-03-04  Alex Coplan  <alex.coplan@arm.com>
  
! 	PR target/99381
! 	* config/aarch64/aarch64-sve-builtins.cc
! 	(function_resolver::require_vector_type): Handle error_mark_node.
  
! 2021-03-04  Ilya Leoshkevich  <iii@linux.ibm.com>
  
! 	* cfgexpand.c (expand_asm_loc): Pass new parameter.
! 	(expand_asm_stmt): Likewise.
! 	* config/arm/aarch-common-protos.h (arm_md_asm_adjust): Add new
! 	parameter.
! 	* config/arm/aarch-common.c (arm_md_asm_adjust): Likewise.
! 	* config/arm/arm.c (thumb1_md_asm_adjust): Likewise.
! 	* config/cris/cris.c (cris_md_asm_adjust): Likewise.
! 	* config/i386/i386.c (ix86_md_asm_adjust): Likewise.
! 	* config/mn10300/mn10300.c (mn10300_md_asm_adjust): Likewise.
! 	* config/nds32/nds32.c (nds32_md_asm_adjust): Likewise.
! 	* config/pdp11/pdp11.c (pdp11_md_asm_adjust): Likewise.
! 	* config/rs6000/rs6000.c (rs6000_md_asm_adjust): Likewise.
! 	* config/vax/vax.c (vax_md_asm_adjust): Likewise.
! 	* config/visium/visium.c (visium_md_asm_adjust): Likewise.
! 	* doc/tm.texi (md_asm_adjust): Likewise.
! 	* target.def (md_asm_adjust): Likewise.
  
! 2021-03-04  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/97855
! 	* tree-pretty-print.c: Poison pp_printf.
! 	(dump_decl_name): Avoid use of pp_printf.
! 	(dump_block_node): Likewise.
! 	(dump_generic_node): Likewise.
  
! 2021-03-04  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/96963
! 	PR middle-end/94655
! 	* builtins.c (handle_array_ref): New helper.
! 	(handle_mem_ref): New helper.
! 	(compute_objsize_r): Factor out ARRAY_REF and MEM_REF handling
! 	into new helper functions.  Correct a workaround for vectorized
! 	assignments.
  
! 2021-03-03  Pat Haugen  <pthaugen@linux.ibm.com>
  
! 	* config/rs6000/dfp.md (extendddtd2, trunctddd2, *cmp<mode>_internal1,
! 	floatditd2, ftrunc<mode>2, fix<mode>di2, dfp_ddedpd_<mode>,
! 	dfp_denbcd_<mode>, dfp_dxex_<mode>, dfp_diex_<mode>,
! 	*dfp_sgnfcnc_<mode>, dfp_dscli_<mode>, dfp_dscri_<mode>): Update size
! 	attribute for Power10.
! 	* config/rs6000/mma.md (*movoo): Likewise.
! 	* config/rs6000/rs6000.md (define_attr "size"): Add 256.
! 	(define_mode_attr bits): Add DD/TD modes.
! 	* config/rs6000/sync.md (load_quadpti, store_quadpti, load_lockedpti,
! 	store_conditionalpti): Update size attribute for Power10.
  
! 2021-03-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	PR bootstrap/92002
! 	* config/sparc/t-sparc (tree-ssanames.o-warn): Don't error for
! 	-Wuninitialized, -Wmaybe-uninitialized.
! 	(wide-int.o-warn): Likewise.
  
! 2021-03-03  Richard Earnshaw  <rearnsha@arm.com>
  
! 	* common/config/arm/arm-common.c: Include configargs.h.
! 	(arm_config_default): New function.
! 	(arm_target_mode): Renamed from arm_target_thumb_only.  Handle
! 	processors that do not support Thumb.  Take into account the
! 	--with-mode configuration setting for selecting the default.
! 	* config/arm/arm.h (OPTION_DEFAULT_SPECS): Remove entry for 'mode'.
! 	(TARGET_MODE_SPEC_FUNCTIONS): Update for function name change.
  
! 2021-03-03  Martin Liska  <mliska@suse.cz>
  
! 	PR gcov-profile/97461
! 	* gcov-io.h (GCOV_PREALLOCATED_KVP): Remove.
  
! 2021-03-03  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/99234
! 	* config/i386/i386.c (ix86_compute_frame_layout): For a SEH target,
! 	point back the hard frame pointer to its default location when the
! 	frame is larger than SEH_MAX_FRAME_SIZE.
  
! 2021-03-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99321
! 	* config/i386/predicates.md (logic_operator): New define_predicate.
! 	* config/i386/i386.md (mov + mem using comm arith peephole2):
! 	Punt if operands[1] is EXT_REX_SSE_REGNO_P, AVX512BW is not enabled
! 	and the inner mode is [QH]Imode.
  
! 2021-03-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/99090
! 	* dwarf2out.c (dw_loc_list_struct): Add end_entry member.
! 	(new_loc_list): Clear end_entry.
! 	(output_loc_list): Only use DW_LLE_startx_length for -gsplit-dwarf
! 	if HAVE_AS_LEB128, otherwise use DW_LLE_startx_endx.  Fix comment
! 	typo.
! 	(index_location_lists): For dwarf_version >= 5 without HAVE_AS_LEB128,
! 	initialize also end_entry.
  
! 2021-03-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99085
! 	* cfgrtl.c (fixup_partitions): When changing some bbs from hot to cold
! 	partitions, if in non-layout mode after reorder_blocks also move
! 	affected blocks to ensure a single partition transition.
  
! 2021-03-03  Jason Merrill  <jason@redhat.com>
  
! 	PR c++/96078
! 	* cgraphunit.c (process_function_and_variable_attributes): Don't
! 	warn about flatten on an alias if the target also has it.
! 	* cgraph.h (symtab_node::get_alias_target_tree): New.
  
! 2021-03-02  David Edelsohn  <dje.gcc@gmail.com>
  
! 	* config/rs6000/rs6000.md (tls_get_tpointer_internal): Prepend
! 	period to symbol name.
! 	(tls_get_addr_internal<mode>): Same.
  
! 2021-03-02  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR c/99323
! 	* diagnostic-show-locus.c
! 	(selftest::test_one_liner_many_fixits_2): Fix accidental usage of
! 	column 0.
  
! 2021-03-02  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/99276
! 	* builtins.c (warn_for_access): Remove stray warning text.
  
! 2021-03-02  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/99295
! 	* doc/extend.texi (attribute malloc): Reword and clarify nonaliasing
! 	property.
  
! 2021-03-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/99319
! 	* dwarf2out.c (output_macinfo_op): Use DW_MACRO_*_str* even with
! 	-gdwarf-5 -gstrict-dwarf.  For -gsplit-dwarf -gdwarf-5 use
! 	DW_MACRO_*_strx instead of DW_MACRO_*_strp.  Handle
! 	DW_MACRO_define_strx and DW_MACRO_undef_strx.
! 	(save_macinfo_strings): Use DW_MACRO_*_str* even with
! 	-gdwarf-5 -gstrict-dwarf.  Handle DW_MACRO_define_strx and
! 	DW_MACRO_undef_strx.
  
! 2021-03-02  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	* config/s390/s390-builtin-types.def (BT_FN_V4SF_V8HI_UINT): New
! 	builtin signature.
! 	(BT_FN_V8HI_V8HI_UINT): Likewise.
! 	(BT_FN_V8HI_V4SF_V4SF_UINT): Likewise.
! 	* config/s390/s390-builtins.def (B_NNPA): New macro definition.
! 	(s390_vclfnhs, s390_vclfnls, s390_vcrnfs, s390_vcfn, s390_vcnf):
! 	New builtin definitions.
! 	* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Bump
! 	vector extension version.
! 	* config/s390/s390.c (s390_expand_builtin): Check if builtins are
! 	available with current -march level.
! 	* config/s390/s390.md (UNSPEC_NNPA_VCLFNHS_V8HI)
! 	(UNSPEC_NNPA_VCLFNLS_V8HI, UNSPEC_NNPA_VCRNFS_V8HI)
! 	(UNSPEC_NNPA_VCFN_V8HI, UNSPEC_NNPA_VCNF_V8HI): New constants.
! 	* config/s390/vecintrin.h (vec_extend_to_fp32_hi): New macro.
! 	(vec_extend_to_fp32_lo): Likewise.
! 	(vec_round_from_fp32): Likewise.
! 	(vec_convert_to_fp16): Likewise.
! 	(vec_convert_from_fp16): Likewise.
! 	* config/s390/vx-builtins.md (vclfnhs_v8hi): New insn pattern.
! 	(vclfnls_v8hi): Likewise.
! 	(vcrnfs_v8hi): Likewise.
! 	(vcfn_v8hi): Likewise.
! 	(vcnf_v8hi): Likewise.
  
! 2021-03-02  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	* common/config/s390/s390-common.c (processor_flags_table): New entry.
! 	* config.gcc: Enable arch14 for --with-arch and --with-tune.
! 	* config/s390/driver-native.c (s390_host_detect_local_cpu): Pick
! 	arch14 for unknown CPU models.
! 	* config/s390/s390-opts.h (enum processor_type): Add PROCESSOR_ARCH14.
! 	* config/s390/s390.c (s390_issue_rate): Add case for PROCESSOR_ARCH14.
! 	(s390_get_sched_attrmask): Likewise.
! 	(s390_get_unit_mask): Likewise.
! 	* config/s390/s390.h (enum processor_flags): Add PF_NNPA and PF_ARCH14.
! 	(TARGET_CPU_ARCH14, TARGET_CPU_ARCH14_P, TARGET_CPU_NNPA)
! 	(TARGET_CPU_NNPA_P, TARGET_ARCH14, TARGET_ARCH14_P, TARGET_NNPA)
! 	(TARGET_NNPA_P): New macro definitions.
! 	* config/s390/s390.md ("cpu_facility", "enabled"): Add arch14 and nnpa.
! 	* config/s390/s390.opt: Add PROCESSOR_ARCH14.
  
! 2021-03-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/95757
! 	* tree-vrp.c (register_edge_assert_for): Remove superfluous ()s around
! 	condition.  Call register_edge_assert_for_1 for == 0, != 0, == 1 and
! 	!= 1 comparisons if name is lhs of a comparison.
  
! 2021-03-01  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	PR target/44107
! 	PR target/48097
! 	* config/darwin-protos.h (darwin_should_restore_cfa_state): New.
! 	* config/darwin.c (darwin_should_restore_cfa_state): New.
! 	* config/darwin.h (TARGET_ASM_SHOULD_RESTORE_CFA_STATE): New.
! 	* doc/tm.texi: Regenerated.
! 	* doc/tm.texi.in: Document TARGET_ASM_SHOULD_RESTORE_CFA_STATE.
! 	* dwarf2cfi.c (connect_traces): If the target requests, restore
! 	the CFA expression after a DW_CFA_restore.
! 	* target.def (TARGET_ASM_SHOULD_RESTORE_CFA_STATE): New hook.
  
! 2021-03-01  Martin Liska  <mliska@suse.cz>
  
! 	PR target/99313
! 	* optc-save-gen.awk: Add 4 more exceptions.
  
! 2021-03-01  Nathan Sidwell  <nathan@acm.org>
  
! 	PR c++/99294
! 	* tree.h (TYPE_ALIGN_RAW): New accessor.
! 	(TYPE_ALIGN): Use it.
  
! 2021-03-01  Jan Hubicka  <jh@suse.cz>
  
! 	PR ipa/98338
! 	* ipa-fnsummary.c (compute_fn_summary): Fix sanity check.
  
! 2021-03-01  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/99234
! 	* config/i386/i386.c (ix86_compute_frame_layout): For a SEH target,
! 	point the hard frame pointer to the SSE register save area instead
! 	of the general register save area.  Perform only minimal adjustment
! 	for small frames if it is initially not correctly aligned.
! 	(ix86_expand_prologue): Remove early saves for a SEH target.
! 	* config/i386/winnt.c (struct seh_frame_state): Document constraint.
  
! 2021-02-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/99304
! 	* ipa.c (symbol_table::remove_unreachable_nodes): Fix a comment
! 	typo - referneced -> referenced.
! 	* tree.c (component_ref_size): Fix comment typo -
! 	refernce -> reference.
! 	* tree-ssa-alias.c (access_path_may_continue_p): Fix comment typo -
! 	traling -> trailing.
! 	(aliasing_component_refs_p): Fix comment typos -
! 	refernce -> reference and refernece -> reference and
! 	traling -> trailing.
! 	(nonoverlapping_refs_since_match_p): Fix comment typo -
! 	referneces -> references.
! 	* doc/invoke.texi (--param modref-max-bases): Fix a typo -
! 	referneces -> references.
  
! 2021-02-27  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* config/host-darwin.c (darwin_gt_pch_use_address): Modify
! 	diagnostic message to avoid use of a contraction and format
! 	warning.
  
! 2021-02-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR other/99288
! 	* gcse.c (gcse_or_cprop_is_too_expensive): Use %wu instead of
! 	HOST_WIDE_INT_PRINT_UNSIGNED in warning format string.
! 	* ipa-devirt.c (ipa_odr_read_section): Use %wd instead of
! 	HOST_WIDE_INT_PRINT_DEC in inform format string.  Fix comment
! 	typos.
  
! 2021-02-26  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/99281
! 	* expr.c (store_field): For calls with return-slot optimization
! 	and addressable return type expand the store directly.
  
! 2021-02-26  Richard Biener  <rguenther@suse.de>
  
! 	PR c/99275
! 	* builtins.c (warn_string_no_nul): Fix diagnostic formatting.
  
! 2021-02-26  Peter Bergner  <bergner@linux.ibm.com>
  
! 	PR target/99279
! 	* config/rs6000/rs6000-call.c (rs6000_init_builtins): Replace assert
! 	with an "if" test.
  
! 2021-02-26  Aaron Sawdey  <acsawdey@linux.ibm.com>
  
! 	* config.gcc: Add rs6000-pcrel-opt.o.
! 	* config/rs6000/rs6000-pcrel-opt.c: New file.
! 	* config/rs6000/pcrel-opt.md: New file.
! 	* config/rs6000/predicates.md: Add d_form_memory predicate.
! 	* config/rs6000/rs6000-cpus.def: Add OPTION_MASK_PCREL_OPT.
! 	* config/rs6000/rs6000-passes.def: Add pass_pcrel_opt.
! 	* config/rs6000/rs6000-protos.h: Add reg_to_non_prefixed(),
! 	pcrel_opt_valid_mem_p(), output_pcrel_opt_reloc(),
! 	and make_pass_pcrel_opt().
! 	* config/rs6000/rs6000.c (reg_to_non_prefixed): Make global.
! 	(rs6000_option_override_internal): Add pcrel-opt.
! 	(rs6000_delegitimize_address): Support pcrel-opt.
! 	(rs6000_opt_masks): Add pcrel-opt.
! 	(pcrel_opt_valid_mem_p): New function.
! 	(reg_to_non_prefixed): Make global.
! 	(rs6000_asm_output_opcode): Reset prepend_p_to_next_insn.
! 	(output_pcrel_opt_reloc): New function.
! 	* config/rs6000/rs6000.md (loads_extern_addr): New attr.
! 	(pcrel_extern_addr): Set loads_extern_addr.
! 	Add include for pcrel-opt.md.
! 	* config/rs6000/rs6000.opt: Add -mpcrel-opt.
! 	* config/rs6000/t-rs6000: Add rules for pcrel-opt.c and
! 	pcrel-opt.md.
  
! 2021-02-26  YunQiang Su  <yunqiang.su@cipunited.com>
  
! 	PR target/98996
! 	* config/mips/mips.c (mips_expand_ext_as_unaligned_load):
! 	If TARGET_64BIT and dest is SUBREG, we check the width, if it
! 	equal to SImode, we use SImode operation, just like what we are
! 	doing for REG one.
  
! 2021-02-26  Marek Polacek  <polacek@redhat.com>
  
! 	* builtins.c (warn_for_access): Fix typos.
  
! 2021-02-25  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* config/aarch64/aarch64.md (<optab>_rol<mode>3): Add a '#'
! 	mark in front of the immediate quantity.
! 	(<optab>_rolsi3_uxtw): Likewise.
  
! 2021-02-25  Richard Earnshaw  <rearnsha@arm.com>
  
! 	PR target/99271
! 	* config/arm/thumb2.md (nonsecure_call_reg_thumb2_fpcxt): New pattern.
! 	(nonsecure_call_value_reg_thumb2_fpcxt): Likewise.
! 	(nonsecure_call_reg_thumb2): Restrict to using r4 for the callee
! 	address and disable when the FPCXT is not available.
! 	(nonsecure_call_value_reg_thumb2): Likewise.
  
! 2021-02-25  Nathan Sidwell  <nathan@acm.org>
  
! 	PR c++/99166
! 	* doc/invoke.texi (flang-info-module-cmi): Renamed option.
  
! 2021-02-25  Tamar Christina  <tamar.christina@arm.com>
  
! 	* tree-vect-slp.c (optimize_load_redistribution_1): Abort on NULL nodes.
  
! 2021-02-25  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99253
! 	* tree-vect-loop.c (check_reduction_path): First compute
! 	code, then verify out-of-loop uses.
  
! 2021-02-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/95798
! 	* match.pd ((T)(A) + CST -> (T)(A + CST)): Add :s to convert.
  
! 2021-02-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/80635
! 	* tree-vrp.c (vrp_simplify_cond_using_ranges): Also handle
! 	VIEW_CONVERT_EXPR if modes are the same, innerop is integral and
! 	has mode precision.
  
! 2021-02-25  Richard Biener  <rguenther@suse.de>
  
! 	* tree-vect-slp.c (optimize_load_redistribution_1): Delay
! 	load_map population.
! 	(vect_match_slp_patterns_2): Revert part of last change.
! 	(vect_analyze_slp): Do not interleave optimize_load_redistribution
! 	with pattern detection but do it afterwards.  Dump the
! 	whole SLP graph after pattern recognition and load
! 	redistribution optimization finished.
  
! 2021-02-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR fortran/99226
! 	* omp-low.c (struct omp_context): Add teams_nested_p and
! 	nonteams_nested_p members.
! 	(scan_omp_target): Diagnose teams nested inside of target with other
! 	directives strictly nested inside of the same target.
! 	(check_omp_nesting_restrictions): Set ctx->teams_nested_p or
! 	ctx->nonteams_nested_p as needed.
  
! 2021-02-24  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR inline-asm/99123
! 	* lra-constraints.c (uses_hard_regs_p): Don't use decompose_mem_address.
  
! 2021-02-24  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* config/cris/cris.c (cris_expand_prologue): Set
! 	current_function_static_stack_size, if flag_stack_usage_info.
  
! 2021-02-24  Pat Haugen  <pthaugen@linux.ibm.com>
  
! 	* config/rs6000/rs6000.c (next_insn_prefixed_p): Rename.
! 	(rs6000_final_prescan_insn): Adjust.
! 	(rs6000_asm_output_opcode): Likewise.
  
! 2021-02-24  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/97172
! 	* attribs.c (attr_access::free_lang_data): Clear attribute arg spec
! 	from function arguments.
  
! 2021-02-24  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR tree-optimization/99220
! 	* tree-vect-slp.c (optimize_load_redistribution_1): Remove
! 	node from cache when it's about to be deleted.
  
! 2021-02-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/99225
! 	* fold-const.c (fold_binary_loc) <case NE_EXPR>: In (x & (1 << y)) != 0
! 	to ((x >> y) & 1) != 0 simplifications use build_one_cst instead of
! 	build_int_cst (..., 1).  Formatting fixes.
  
! 2021-02-24  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR tree-optimization/99149
! 	* tree-vect-slp-patterns.c (vect_detect_pair_op): Don't recreate the
! 	buffer.
! 	(vect_slp_reset_pattern): Remove.
! 	(complex_fma_pattern::matches): Remove call to vect_slp_reset_pattern.
! 	(complex_mul_pattern::build, complex_fma_pattern::build,
! 	complex_fms_pattern::build): Fix ref counts.
! 	* tree-vect-slp.c (vect_free_slp_tree): Undo SLP only pattern relevancy
! 	when node is being deleted.
! 	(vect_match_slp_patterns_2): Correct result of cache hit on patterns.
! 	(vect_schedule_slp): Invalidate SLP_TREE_REPRESENTATIVE of removed
! 	stores.
! 	* tree-vectorizer.c (vec_info::new_stmt_vec_info): Initialize value.
  
! 2021-02-24  Matthias Klose  <doko@ubuntu.com>
  
! 	Revert:
! 	2020-12-07  Matthias Klose  <doko@ubuntu.com>
  
! 	* genextract.c (print_header): Undefine ENABLE_RTL_CHECKING
! 	and ENABLE_RTL_FLAG_CHECKING.
  
! 2021-02-24  Richard Biener  <rguenther@suse.de>
  
! 	PR c/99224
! 	* builtins.c (fold_builtin_next_arg): Avoid NULL arg.
  
! 2021-02-23  Peter Bergner  <bergner@linux.ibm.com>
  
! 	* config/rs6000/mma.md (mma_assemble_pair): Rename from this...
! 	(vsx_assemble_pair): ...to this.
! 	(*mma_assemble_pair): Rename from this...
! 	(*vsx_assemble_pair): ...to this.
! 	(mma_disassemble_pair): Rename from this...
! 	(vsx_disassemble_pair): ...to this.
! 	(*mma_disassemble_pair): Rename from this...
! 	(*vsx_disassemble_pair): ...to this.
! 	* config/rs6000/rs6000-builtin.def (BU_MMA_V2, BU_MMA_V3,
! 	BU_COMPAT): New macros.
! 	(mma_assemble_pair): Rename from this...
! 	(vsx_assemble_pair): ...to this.
! 	(mma_disassemble_pair): Rename from this...
! 	(vsx_disassemble_pair): ...to this.
! 	(mma_assemble_pair): New compatibility built-in.
! 	(mma_disassemble_pair): Likewise.
! 	* config/rs6000/rs6000-call.c (struct builtin_compatibility): New.
! 	(RS6000_BUILTIN_COMPAT): Define.
! 	(bdesc_compat): New.
! 	(mma_expand_builtin): Use VSX_BUILTIN_DISASSEMBLE_PAIR_INTERNAL.
! 	(rs6000_gimple_fold_mma_builtin): Use MMA_BUILTIN_DISASSEMBLE_PAIR
! 	and VSX_BUILTIN_ASSEMBLE_PAIR.
! 	(rs6000_init_builtins): Register compatibility built-ins.
! 	(mma_init_builtins): Use VSX_BUILTIN_ASSEMBLE_PAIR,
! 	VSX_BUILTIN_ASSEMBLE_PAIR_INTERNAL, VSX_BUILTIN_DISASSEMBLE_PAIR and
! 	VSX_BUILTIN_DISASSEMBLE_PAIR_INTERNAL.
! 	* doc/extend.texi (__builtin_mma_assemble_pair): Rename from this...
! 	(__builtin_vsx_assemble_pair): ...to this.
! 	(__builtin_mma_disassemble_pair): Rename from this...
! 	(__builtin_vsx_disassemble_pair): ...to this.
  
! 2021-02-23  Martin Liska  <mliska@suse.cz>
  
! 	PR sanitizer/99168
! 	* ipa-icf.c (sem_variable::merge): Do not merge 2 variables
! 	with different alignment. That leads to an invalid red zone
! 	size allocated in runtime.
  
! 2021-02-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/99204
! 	* fold-const.c (fold_read_from_constant_string): Check that
! 	tree_fits_uhwi_p (index) rather than just that index is INTEGER_CST.
  
! 2021-02-23  Segher Boessenkool  <segher@kernel.crashing.org>
! 	    Kewen Lin  <linkw@gcc.gnu.org>
  
! 	* config/rs6000/rs6000.md (*rotl<mode>3_insert_3): Renamed to...
! 	(rotl<mode>3_insert_3): ...this.
! 	(plus_ior_xor): New code_iterator.
! 	(define_split for GPR rl*imi): New splitter.
! 	* config/rs6000/vsx.md (vsx_init_v4si): Use gen_rotldi3_insert_3
! 	for integer merging.
  
! 2021-02-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-tuning-flags.def (cse_sve_vl_constants):
! 	Define.
! 	* config/aarch64/aarch64.md (add<mode>3): Force CONST_POLY_INT immediates
! 	into a register when the above is enabled.
! 	* config/aarch64/aarch64.c (neoversev1_tunings):
! 	AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS.
! 	(aarch64_rtx_costs): Use AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS.
  
! 2021-02-22  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* config/cris/cris.c (cris_print_operand) <'T'>: Change
! 	valid operand from is now an addi mult-value to shift-value.
! 	* config/cris/cris.md (*addi): Change expression of scaled
! 	operand from mult to ashift.
! 	* config/cris/cris.md (*addi_reload): New insn_and_split.
  
! 2021-02-22  John David Anglin  <danglin@gcc.gnu.org>
  
! 	PR target/85074
! 	* config/pa/pa.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Define as
! 	hook_bool_const_tree_hwi_hwi_const_tree_true.
! 	(pa_asm_output_mi_thunk): Add support for nonzero vcall_offset.
  
! 2021-02-22  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	PR rtl-optimization/98791
! 	* ira-conflicts.c (process_regs_for_copy): Don't create allocno copies
! 	for unordered modes.
  
! 2021-02-22  Martin Liska  <mliska@suse.cz>
  
! 	* tree-inline.c (inline_forbidden_p): Set
! 	inline_forbidden_reason.
  
! 2021-02-22  Richard Biener  <rguenther@suse.de>
  
! 	* tree-vect-slp.c (vect_bb_vectorization_profitable_p): Dump
! 	costed subgraph.
  
! 2021-02-22  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99165
! 	* gimple-ssa-store-merging.c (pass_store_merging::process_store):
! 	Accumulate changed to ret.
  
! 2021-02-21  Uros Bizjak  <ubizjak@gmail.com>
  
! 	Revert:
! 	2020-12-09  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.h (REG_ALLOC_ORDER): Remove
  
! 2021-02-20  Ilya Leoshkevich  <iii@linux.ibm.com>
  
! 	PR target/99134
! 	* config/s390/vector.md (trunctf<DFP_ALL:mode>2_vr): New
! 	pattern.
! 	(trunctf<DFP_ALL:mode>2): Likewise.
! 	(trunctdtf2_vr): Likewise.
! 	(trunctdtf2): Likewise.
! 	(extend<DFP_ALL:mode>tf2_vr): Likewise.
! 	(extend<DFP_ALL:mode>tf2): Likewise.
! 	(extendtftd2_vr): Likewise.
! 	(extendtftd2): Likewise.
  
! 2021-02-20  Ilya Leoshkevich  <iii@linux.ibm.com>
  
! 	* config/s390/vector.md (*fprx2_to_tf): Rename to fprx2_to_tf,
! 	add memory alternative.
! 	(tf_to_fprx2): New pattern.
  
! 2021-02-19  Martin Sebor  <msebor@redhat.com>
  
! 	PR c/97172
! 	* attribs.c (init_attr_rdwr_indices): Guard vblist use.
! 	(attr_access::free_lang_data): Remove a spurious test.
  
! 2021-02-19  Nathan Sidwell  <nathan@acm.org>
  
! 	* doc/invoke.texi (flang-info-module-read): Document.
  
! 2021-02-19  Martin Liska  <mliska@suse.cz>
  
! 	PR translation/99167
! 	* params.opt: Fix typo.
  
! 2021-02-19  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/99122
! 	* tree-inline.c (inline_forbidden_p): Do not inline functions
! 	with VLA arguments or return value.
  
! 2021-02-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/98998
! 	* config/arm/arm.md (*stack_protect_combined_set_insn,
! 	*stack_protect_combined_test_insn): If force_const_mem result
! 	is not valid general operand, force its address into the destination
! 	register first.
  
! 2021-02-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR ipa/99034
! 	* tree-cfg.c (gimple_merge_blocks): If bb a starts with eh landing
! 	pad or non-local label, put FORCED_LABELs from bb b after that label
! 	rather than before it.
  
! 2021-02-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	PR target/98657
! 	* config/aarch64/aarch64-sve.md (<ASHIFT:optab><mode>3): Use
! 	expand_vector_broadcast' to emit the vec_duplicate operand.
  
! 2021-02-18  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/96264
! 	* lra-remat.c (reg_overlap_for_remat_p): Check also output insn
! 	hard regs.
  
! 2021-02-18  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/99113
! 	* varasm.c (get_section): Replace SUPPORTS_SHF_GNU_RETAIN with
! 	looking up the retain attribute.
! 	(resolve_unique_section): Likewise.
! 	(get_variable_section): Likewise.
! 	(switch_to_section): Likewise.  Warn when a symbol without the
! 	retain attribute and a symbol with the retain attribute are
! 	placed in the section with the same name, instead of the used
! 	attribute.
! 	* doc/extend.texi: Document the "retain" attribute.
  
! 2021-02-18  Nathan Sidwell  <nathan@acm.org>
  
! 	PR c++/99023
! 	* doc/invoke.texi (flang-info-include-translate): Document header
! 	lookup behaviour.
  
! 2021-02-18  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/99122
! 	* ipa-fnsummary.c (analyze_function_body): Set
! 	CIF_FUNCTION_NOT_INLINABLE for VLA parameter calls.
! 	* tree-inline.c (insert_init_debug_bind): Pass NULL for
! 	error_mark_node values.
! 	(force_value_to_type): Do not build V_C_Es for WITH_SIZE_EXPR
! 	values.
! 	(setup_one_parameter): Delay force_value_to_type until when
! 	it's needed.
  
! 2021-02-18  Hans-Peter Nilsson  <hp@axis.com>
  
! 	PR tree-optimization/99142
! 	* match.pd (clz cmp 0): Gate replacement on single_use of clz result.
  
! 2021-02-18  Jakub Jelinek  <jakub@redhat.com>
  
! 	* wide-int-bitmask.h (wide_int_bitmask::wide_int_bitmask (),
! 	wide_int_bitmask::wide_int_bitmask (uint64_t),
! 	wide_int_bitmask::wide_int_bitmask (uint64_t, uint64_t),
! 	wide_int_bitmask::operator ~ () const,
! 	wide_int_bitmask::operator | (wide_int_bitmask) const,
! 	wide_int_bitmask::operator & (wide_int_bitmask) const): Use constexpr
! 	instead of inline.
! 	* config/i386/i386.h (PTA_3DNOW, PTA_3DNOW_A, PTA_64BIT, PTA_ABM,
! 	PTA_AES, PTA_AVX, PTA_BMI, PTA_CX16, PTA_F16C, PTA_FMA, PTA_FMA4,
! 	PTA_FSGSBASE, PTA_LWP, PTA_LZCNT, PTA_MMX, PTA_MOVBE, PTA_NO_SAHF,
! 	PTA_PCLMUL, PTA_POPCNT, PTA_PREFETCH_SSE, PTA_RDRND, PTA_SSE, PTA_SSE2,
! 	PTA_SSE3, PTA_SSE4_1, PTA_SSE4_2, PTA_SSE4A, PTA_SSSE3, PTA_TBM,
! 	PTA_XOP, PTA_AVX2, PTA_BMI2, PTA_RTM, PTA_HLE, PTA_PRFCHW, PTA_RDSEED,
! 	PTA_ADX, PTA_FXSR, PTA_XSAVE, PTA_XSAVEOPT, PTA_AVX512F, PTA_AVX512ER,
! 	PTA_AVX512PF, PTA_AVX512CD, PTA_NO_TUNE, PTA_SHA, PTA_PREFETCHWT1,
! 	PTA_CLFLUSHOPT, PTA_XSAVEC, PTA_XSAVES, PTA_AVX512DQ, PTA_AVX512BW,
! 	PTA_AVX512VL, PTA_AVX512IFMA, PTA_AVX512VBMI, PTA_CLWB, PTA_MWAITX,
! 	PTA_CLZERO, PTA_NO_80387, PTA_PKU, PTA_AVX5124VNNIW, PTA_AVX5124FMAPS,
! 	PTA_AVX512VPOPCNTDQ, PTA_SGX, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES,
! 	PTA_AVX512VBMI2, PTA_VPCLMULQDQ, PTA_AVX512BITALG, PTA_RDPID,
! 	PTA_PCONFIG, PTA_WBNOINVD, PTA_AVX512VP2INTERSECT, PTA_PTWRITE,
! 	PTA_AVX512BF16, PTA_WAITPKG, PTA_MOVDIRI, PTA_MOVDIR64B, PTA_ENQCMD,
! 	PTA_CLDEMOTE, PTA_SERIALIZE, PTA_TSXLDTRK, PTA_AMX_TILE, PTA_AMX_INT8,
! 	PTA_AMX_BF16, PTA_UINTR, PTA_HRESET, PTA_KL, PTA_WIDEKL, PTA_AVXVNNI,
! 	PTA_X86_64_BASELINE, PTA_X86_64_V2, PTA_X86_64_V3, PTA_X86_64_V4,
! 	PTA_CORE2, PTA_NEHALEM, PTA_WESTMERE, PTA_SANDYBRIDGE, PTA_IVYBRIDGE,
! 	PTA_HASWELL, PTA_BROADWELL, PTA_SKYLAKE, PTA_SKYLAKE_AVX512,
! 	PTA_CASCADELAKE, PTA_COOPERLAKE, PTA_CANNONLAKE, PTA_ICELAKE_CLIENT,
! 	PTA_ICELAKE_SERVER, PTA_TIGERLAKE, PTA_SAPPHIRERAPIDS, PTA_ALDERLAKE,
! 	PTA_KNL, PTA_BONNELL, PTA_SILVERMONT, PTA_GOLDMONT, PTA_GOLDMONT_PLUS,
! 	PTA_TREMONT, PTA_KNM): Use constexpr instead of const.
  
! 2021-02-18  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/99109
! 	* gimple-array-bounds.cc (build_zero_elt_array_type): Rename to ...
! 	(build_printable_array_type): ... this.  Add nelts argument.  For
! 	overaligned eltype, use TYPE_MAIN_VARIANT (eltype) instead.  If
! 	nelts, call build_array_type_nelts.
! 	(array_bounds_checker::check_mem_ref): Use build_printable_array_type
! 	instead of build_zero_elt_array_type and build_array_type_nelts.
  
! 2021-02-18  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99104
! 	* config/i386/i386.c (distance_non_agu_define): Don't call
! 	extract_insn_cached here.
! 	(ix86_lea_outperforms): Save and restore recog_data around call
! 	to distance_non_agu_define and distance_agu_use.
! 	(ix86_ok_to_clobber_flags): Remove.
! 	(ix86_avoid_lea_for_add): Don't call ix86_ok_to_clobber_flags.
! 	(ix86_avoid_lea_for_addr): Likewise.  Adjust function comment.
! 	* config/i386/i386.md (*lea<mode>): Change from define_insn_and_split
! 	into define_insn.  Move the splitting to define_peephole2 and
! 	check there using peep2_regno_dead_p if FLAGS_REG is dead.
  
! 2021-02-17  Julian Brown  <julian@codesourcery.com>
  
! 	* gimplify.c (gimplify_scan_omp_clauses): Handle ATTACH_DETACH
! 	for non-decls.
  
! 2021-02-17  Xi Ruoyao  <xry111@mengyan1223.wang>
  
! 	PR target/98491
! 	* config/mips/mips.c (mips_symbol_insns): Do not use
! 	MSA_SUPPORTED_MODE_P if mode is MAX_MACHINE_MODE.
  
! 2021-02-16  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR inline-asm/98096
! 	* stmt.c (resolve_operand_name_1): Take inout operands into account
! 	for access to labels by names.
! 	* doc/extend.texi: Describe counting operands for accessing labels.
  
! 2021-02-16  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/38474
! 	* tree-ssa-structalias.c (variable_info::address_taken): New.
! 	(new_var_info): Initialize address_taken.
! 	(process_constraint): Set address_taken.
! 	(solve_constraints): Use the new address_taken flag rather
! 	than is_reg_var for sorting variables.
! 	(dump_constraint): Dump the variable number if the name
! 	is just NULL.
  
! 2021-02-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99100
! 	* tree-vect-stmts.c (vectorizable_simd_clone_call): For num_calls != 1
! 	multiply by 4096 and for inbranch by 8192.
! 	* config/i386/i386.c (ix86_simd_clone_usable): For TARGET_AVX512F,
! 	return 3, 2 or 1 for mangle letters 'b', 'c' or 'd'.
  
! 2021-02-15  Maya Rashish  <coypu@sdf.org>
  
! 	* config/aarch64/aarch64.c (aarch64_init_builtins):
! 	Call SUBTARGET_INIT_BUILTINS.
  
! 2021-02-15  Peter Bergner  <bergner@linux.ibm.com>
  
! 	PR rtl-optimization/98872
! 	* init-regs.c (initialize_uninitialized_regs): Skip initialization
! 	if CONST0_RTX is NULL.
  
! 2021-02-15  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/98863
! 	* rtl-ssa/functions.h (function_info::bb_live_out_info): Delete.
! 	(function_info::build_info): Turn into a declaration, moving the
! 	definition to internals.h.
! 	(function_info::bb_walker): Declare.
! 	(function_info::create_reg_use): Likewise.
! 	(function_info::calculate_potential_phi_regs): Take a build_info
! 	parameter.
! 	(function_info::place_phis, function_info::create_ebbs): Declare.
! 	(function_info::calculate_ebb_live_in_for_debug): Likewise.
! 	(function_info::populate_backedge_phis): Delete.
! 	(function_info::start_block, function_info::end_block): Declare.
! 	(function_info::populate_phi_inputs): Delete.
! 	(function_info::m_potential_phi_regs): Move information to build_info.
! 	* rtl-ssa/internals.h: New file.
! 	(function_info::bb_phi_info): New class.
! 	(function_info::build_info): Moved from functions.h.
! 	Add a constructor and destructor.
! 	(function_info::build_info::ebb_use): Delete.
! 	(function_info::build_info::ebb_def): Likewise.
! 	(function_info::build_info::bb_live_out): Likewise.
! 	(function_info::build_info::tmp_ebb_live_in_for_debug): New variable.
! 	(function_info::build_info::potential_phi_regs): Likewise.
! 	(function_info::build_info::potential_phi_regs_for_debug): Likewise.
! 	(function_info::build_info::ebb_def_regs): Likewise.
! 	(function_info::build_info::bb_phis): Likewise.
! 	(function_info::build_info::bb_mem_live_out): Likewise.
! 	(function_info::build_info::bb_to_rpo): Likewise.
! 	(function_info::build_info::def_stack): Likewise.
! 	(function_info::build_info::old_def_stack_limit): Likewise.
! 	* rtl-ssa/internals.inl (function_info::build_info::record_reg_def):
! 	Remove the regno argument.  Push the previous definition onto the
! 	definition stack where necessary.
! 	* rtl-ssa/accesses.cc: Include internals.h.
! 	* rtl-ssa/changes.cc: Likewise.
! 	* rtl-ssa/blocks.cc: Likewise.
! 	(function_info::build_info::build_info): Define.
! 	(function_info::build_info::~build_info): Likewise.
! 	(function_info::bb_walker): New class.
! 	(function_info::bb_walker::bb_walker): Define.
! 	(function_info::add_live_out_use): Convert a logarithmic-complexity
! 	test into a linear one.  Allow the same definition to be passed
! 	multiple times.
! 	(function_info::calculate_potential_phi_regs): Moved from
! 	functions.cc.  Take a build_info parameter and store the
! 	information there instead.
! 	(function_info::place_phis): New function.
! 	(function_info::add_entry_block_defs): Update call to record_reg_def.
! 	(function_info::calculate_ebb_live_in_for_debug): New function.
! 	(function_info::add_phi_nodes): Use bb_phis to decide which
! 	registers need phi nodes and initialize ebb_def_regs accordingly.
! 	Do not add degenerate phis here.
! 	(function_info::add_artificial_accesses): Use create_reg_use.
! 	Assert that all definitions are listed in the DF LR sets.
! 	Update call to record_reg_def.
! 	(function_info::record_block_live_out): Record live-out register
! 	values in the phis of successor blocks.  Use the live-out set
! 	when processing the last block in an EBB, instead of always
! 	using the live-in sets of successor blocks.  AND the live sets
! 	with the set of registers that have been defined in the EBB,
! 	rather than with all potential phi registers.  Cope correctly
! 	with branches back to the start of the current EBB.
! 	(function_info::start_block): New function.
! 	(function_info::end_block): Likewise.
! 	(function_info::populate_phi_inputs): Likewise.
! 	(function_info::create_ebbs): Likewise.
! 	(function_info::process_all_blocks): Rewrite into a multi-phase
! 	process.
! 	* rtl-ssa/functions.cc: Include internals.h.
! 	(function_info::calculate_potential_phi_regs): Move to blocks.cc.
! 	(function_info::init_function_data): Remove caller.
! 	* rtl-ssa/insns.cc: Include internals.h
! 	(function_info::create_reg_use): New function.  Lazily any
! 	degenerate phis needed by the linear RPO view.
! 	(function_info::record_use): Use create_reg_use.  When processing
! 	debug uses, use potential_phi_regs and test it before checking
! 	whether the register is live on entry to the current EBB.  Lazily
! 	calculate ebb_live_in_for_debug.
! 	(function_info::record_call_clobbers): Update call to record_reg_def.
! 	(function_info::record_def): Likewise.
  
! 2021-02-15  Martin Liska  <mliska@suse.cz>
  
! 	* toplev.c (init_asm_output): Free output of
! 	gen_command_line_string function.
! 	(process_options): Likewise.
  
! 2021-02-15  Martin Liska  <mliska@suse.cz>
  
! 	* params.opt: Add 2 missing Param keywords.
  
! 2021-02-15  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* df-core.c (df_worklist_dataflow_doublequeue): Use proper cast.
  
! 2021-02-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/99079
! 	* match.pd (A % (pow2pcst << N) -> A & ((pow2pcst << N) - 1)): Remove
! 	useless tree_nop_conversion_p (type, TREE_TYPE (@3)) check.  Instead
! 	require both type and TREE_TYPE (@1) to be integral types and either
! 	type having smaller or equal precision, or TREE_TYPE (@1) being
! 	unsigned type, or type being signed type.  If TREE_TYPE (@1)
! 	doesn't have wrapping overflow, perform the subtraction of one in
! 	unsigned type.
  
! 2021-02-14  Jan Hubicka  <hubicka@ucw.cz>
! 	    Richard Biener  <rguether@suse.de>
  
! 	PR ipa/97346
! 	* ipa-reference.c (ipa_init): Only conditinally initialize
! 	reference_vars_to_consider.
! 	(propagate): Conditionally deninitialize reference_vars_to_consider.
! 	(ipa_reference_write_optimization_summary): Sanity check that
! 	reference_vars_to_consider is not allocated.
  
! 2021-02-13  Levy Hsu  <admin@levyhsu.com>
  
! 	PR target/97417
! 	* config/riscv/riscv-shorten-memrefs.c (pass_shorten_memrefs): Add
! 	extend parameter to get_si_mem_base_reg declaration.
! 	(get_si_mem_base_reg): Add extend parameter.  Set it.
! 	(analyze): Pass extend arg to get_si_mem_base_reg.
! 	(transform): Likewise.  Use it when rewriting mems.
! 	* config/riscv/riscv.c (riscv_legitimize_move): Check for subword
! 	loads and emit sign/zero extending load followed by subreg move.
  
! 2021-02-13  Jim Wilson  <jimw@sifive.com>
  
! 	PR target/97417
! 	* config/riscv/riscv.c (riscv_compressed_lw_address_p): Drop early
! 	exit when !reload_completed.  Only perform check for compressed reg
! 	if reload_completed.
! 	(riscv_rtx_costs): In MEM case, when optimizing	for size and
! 	shorten memrefs, if not compressible, then increase cost.
  
! 2021-02-13  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/98439
! 	* recog.c (pass_split_before_regstack::gate): Enable even when
! 	pass_split_before_sched2 is enabled if -fselective-scheduling2 is
! 	on.
  
! 2021-02-13  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/96166
! 	* config/i386/mmx.md (*mmx_pshufd_1): Add a combine splitter for
! 	swap of V2SImode elements in memory into DImode memory rotate by 32.
  
! 2021-02-12  Martin Sebor  <msebor@redhat.com>
  
! 	* tree-pretty-print.c (print_generic_expr_to_str): Update comment.
  
! 2021-02-12  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* rtl-ssa/accesses.cc (function_info::make_use_available): Use
! 	m_temp_obstack rather than m_obstack to allocate the temporary use.
  
! 2021-02-12  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* df-problems.c (df_lr_bb_local_compute): Treat partial definitions
! 	as read-modify operations.
  
! 2021-02-12  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/38474
! 	* ipa-fnsummary.c (unmodified_parm_1): Only walk when
! 	fbi->aa_walk_budget is bigger than zero.  Update
! 	fbi->aa_walk_budget.
! 	(param_change_prob): Likewise.
! 	* ipa-prop.c (detect_type_change_from_memory_writes):
! 	Properly account walk_aliased_vdefs.
! 	(parm_preserved_before_stmt_p): Canonicalize updates.
! 	(parm_ref_data_preserved_p): Likewise.
! 	(parm_ref_data_pass_through_p): Likewise.
! 	(determine_known_aggregate_parts): Account own alias queries.
  
! 2021-02-12  Martin Liska  <mliska@suse.cz>
  
! 	* opts-common.c (decode_cmdline_option): Release werror_arg.
! 	* opts.c (gen_producer_string): Release output of
! 	gen_command_line_string.
  
! 2021-02-12  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/38474
! 	* params.opt (-param=max-store-chains-to-track=): New param.
! 	(-param=max-stores-to-track=): Likewise.
! 	* doc/invoke.texi (max-store-chains-to-track): Document.
! 	(max-stores-to-track): Likewise.
! 	* gimple-ssa-store-merging.c (pass_store_merging::m_n_chains):
! 	New.
! 	(pass_store_merging::m_n_stores): Likewise.
! 	(pass_store_merging::terminate_and_process_chain): Update
! 	m_n_stores and m_n_chains.
! 	(pass_store_merging::process_store): Likewise.   Terminate
! 	oldest chains if the number of stores or chains get too large.
! 	(imm_store_chain_info::terminate_and_process_chain): Dump
! 	chain length.
  
! 2021-02-11  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* config/i386/winnt.c (i386_pe_seh_unwind_emit): When switching to
! 	the cold section, emit a nop before the directive if the previous
! 	active instruction can throw.
  
! 2021-02-11  Peter Bergner  <bergner@linux.ibm.com>
  
! 	PR target/99041
! 	* config/rs6000/predicates.md (mma_assemble_input_operand): Restrict
! 	memory addresses that are legal for quad word accesses.
  
! 2021-02-11  Andrea Corallo  <andrea.corallo@arm.com>
  
! 	PR target/98931
! 	* config/arm/thumb2.md (*doloop_end_internal): Generate
! 	alternative sequence to handle long range branches.
  
! 2021-02-11  Joel Hutton  <joel.hutton@arm.com>
  
! 	PR tree-optimization/98772
! 	* optabs-tree.c (supportable_half_widening_operation): New function
! 	to check for supportable V8QI->V8HI widening patterns.
! 	* optabs-tree.h (supportable_half_widening_operation): New function.
! 	* tree-vect-stmts.c (vect_create_half_widening_stmts): New function
! 	to create promotion stmts for V8QI->V8HI widening patterns.
! 	(vectorizable_conversion): Add case for V8QI->V8HI.
  
! 2021-02-11  Richard Biener  <rguenther@suse.de>
  
! 	* sparseset.h (SPARSESET_ELT_BITS): Remove.
! 	(SPARSESET_ELT_TYPE): Use unsigned int.
! 	* fwprop.c: Do not include sparseset.h.
  
! 2021-02-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/99035
! 	* varasm.c (declare_weak): For -fsyntax-only, allow even
! 	TREE_ASM_WRITTEN function decls.
  
! 2021-02-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99025
! 	* config/i386/sse.md (fix<fixunssuffix>_truncv2sfv2di2,
! 	<insn>v8qiv8hi2, <insn>v8qiv8si2, <insn>v4qiv4si2, <insn>v4hiv4si2,
! 	<insn>v8qiv8di2, <insn>v4qiv4di2, <insn>v2qiv2di2, <insn>v4hiv4di2,
! 	<insn>v2hiv2di2, <insn>v2siv2di2): Force operands[1] into REG before
! 	calling simplify_gen_subreg on it.
  
! 2021-02-10  Martin Liska  <mliska@suse.cz>
  
! 	* config/nvptx/nvptx.c (nvptx_option_override): Use
! 	flag_patchable_function_entry instead of the removed
! 	function_entry_patch_area_size.
  
! 2021-02-10  Martin Liska  <mliska@suse.cz>
  
! 	PR tree-optimization/99002
! 	PR tree-optimization/99026
! 	* gimple-if-to-switch.cc (if_chain::is_beneficial): Fix memory
! 	leak when adjacent cases are merged.
! 	* tree-switch-conversion.c (switch_decision_tree::analyze_switch_statement): Use
! 	release_clusters.
! 	(make_pass_lower_switch): Remove trailing whitespace.
! 	* tree-switch-conversion.h (release_clusters): New.
  
! 2021-02-10  Richard Biener  <rguenther@suse.de>
  
! 	PR rtl-optimization/99054
! 	* cfgrtl.c (rtl-optimization/99054): Return an auto_vec.
! 	(fixup_partitions): Adjust.
! 	(rtl_verify_edges): Likewise.
  
! 2021-02-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/99007
! 	* gimplify.c (gimplify_scan_omp_clauses): For MEM_REF on reductions,
! 	temporarily disable gimplify_ctxp->into_ssa around gimplify_expr
! 	calls.
  
! 2021-02-10  Richard Biener  <rguenther@suse.de>
  
! 	PR ipa/99029
! 	* ipa-pure-const.c (propagate_malloc): Use an auto_vec<>
! 	for callees.
  
! 2021-02-10  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99024
! 	* tree-vect-loop.c (_loop_vec_info::~_loop_vec_info): Only
! 	clear loop->aux if it is associated with the destroyed loop_vinfo.
  
! 2021-02-10  Martin Liska  <mliska@suse.cz>
  
! 	PR tree-optimization/99002
! 	* gimple-if-to-switch.cc (find_conditions): Fix memory leak
! 	in the function.
  
! 2021-02-10  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/99003
! 	* ipa-icf.c (sem_item::add_reference): Fix memory leak when
! 	a reference exists.
  
! 2021-02-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/98755
! 	* dwarf2out.c (prune_unused_types_walk): Mark DW_TAG_variable DIEs
! 	at class scope for DWARF5+.
  
! 2021-02-09  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR rtl-optimization/96015
! 	* reorg.c (skip_consecutive_labels): Minor comment tweaks.
! 	(relax_delay_slots): When deleting a jump to the next active
! 	instruction over a barrier, first delete the barrier if the
! 	jump is the only way to reach the target label.
  
! 2021-02-09  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/aarch64/aarch64-cost-tables.h: Add entries for vect.mul.
! 	* config/aarch64/aarch64.c (aarch64_rtx_mult_cost): Use vect.mul for
! 	vector multiplies and vect.alu for SSRA.
! 	* config/arm/aarch-common-protos.h (struct vector_cost_table): Define
! 	vect.mul cost field.
! 	* config/arm/aarch-cost-tables.h: Add entries for vect.mul.
! 	* config/arm/arm.c: Likewise.
  
! 2021-02-09  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98863
! 	* tree-ssa-sccvn.h (vn_avail::next_undo): Add.
! 	* tree-ssa-sccvn.c (last_pushed_avail): New global.
! 	(rpo_elim::eliminate_push_avail): Chain pushed avails.
! 	(unwind_state::avail_top): Add.
! 	(do_unwind): Rewrite unwinding of avail entries.
! 	(do_rpo_vn): Initialize last_pushed_avail and
! 	avail_top of the undo state.
  
! 2021-02-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/99004
! 	* calls.c (maybe_warn_rdwr_sizes): Change s0 and s1 type from
! 	const char * to char * and free those pointers after use.
  
! 2021-02-09  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99017
! 	* tree-vect-slp.c (vect_bb_vectorization_profitable_p): Allow
! 	zero vector cost entries.
  
! 2021-02-08  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	PR middle-end/98974
! 	* tree-vect-stmts.c (vectorizable_condition): Remove shadow vec_num
! 	parameter in vectorizable_condition.
  
! 2021-02-08  Richard Biener  <rguenther@suse.de>
  
! 	PR lto/96591
! 	* tree.c (walk_tree_1): Walk VECTOR_CST elements.
  
! 2021-02-08  Martin Liska  <mliska@suse.cz>
  
! 	PR lto/98971
! 	* cfgexpand.c (pass_expand::execute): Parse per-function option
! 	flag_patchable_function_entry and use it.
! 	* common.opt: Remove function_entry_patch_area_size and
! 	function_entry_patch_area_start global variables.
! 	* opts.c (parse_and_check_patch_area): New function.
! 	(common_handle_option): Use it.
! 	* opts.h (parse_and_check_patch_area): New function.
! 	* toplev.c (process_options): Parse and use
! 	function_entry_patch_area_size.
  
! 2021-02-08  Martin Sebor  <msebor@redhat.com>
  
! 	* doc/extend.texi (attribute malloc): Correct typos.
  
! 2021-02-05  Nathan Sidwell  <nathan@acm.org>
  
! 	PR driver/98943
! 	* gcc.c (driver::maybe_run_linker): Check for input file
! 	accessibility if not linking.
  
! 2021-02-05  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98855
! 	* tree-vectorizer.h (add_stmt_cost): New overload.
! 	* tree-vect-slp.c (li_cost_vec_cmp): New.
! 	(vect_bb_slp_scalar_cost): Cost individual loop regions
! 	separately.  Account for the scalar instance root stmt.
  
! 2021-02-05  Tom de Vries  <tdevries@suse.de>
  
! 	PR debug/98656
! 	* tree-switch-conversion.c (jump_table_cluster::emit): Add loc
! 	argument.
! 	(bit_test_cluster::emit): Reuse location_t for newly created
! 	gswitch statement.
! 	(switch_decision_tree::try_switch_expansion): Preserve
! 	location_t.
! 	* tree-switch-conversion.h: Change function signatures.
  
! 2021-02-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/98957
! 	* config/i386/i386-options.c (m_NONE, m_ALL): Define.
! 	* config/i386/x86-tune.def (X86_TUNE_BRANCH_PREDICTION_HINTS,
! 	X86_TUNE_PROMOTE_QI_REGS): Use m_NONE instead of 0U.
! 	(X86_TUNE_QIMODE_MATH): Use m_ALL instead of ~0U.
  
! 2021-02-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (get_high): Define builtin.
! 	* config/aarch64/aarch64-simd.md (aarch64_get_high<mode>): Define.
! 	* config/aarch64/arm_neon.h (__GET_HIGH): Delete.
! 	(vget_high_f16): Reimplement using new builtin.
! 	(vget_high_f32): Likewise.
! 	(vget_high_f64): Likewise.
! 	(vget_high_p8): Likewise.
! 	(vget_high_p16): Likewise.
! 	(vget_high_p64): Likewise.
! 	(vget_high_s8): Likewise.
! 	(vget_high_s16): Likewise.
! 	(vget_high_s32): Likewise.
! 	(vget_high_s64): Likewise.
! 	(vget_high_u8): Likewise.
! 	(vget_high_u16): Likewise.
! 	(vget_high_u32): Likewise.
! 	(vget_high_u64): Likewise.
  
! 2021-02-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (get_low): Define builtin.
! 	* config/aarch64/aarch64-simd.md (aarch64_get_low<mode>): Define.
! 	* config/aarch64/arm_neon.h (__GET_LOW): Delete.
! 	(vget_low_f16): Reimplement using new builtin.
! 	(vget_low_f32): Likewise.
! 	(vget_low_f64): Likewise.
! 	(vget_low_p8): Likewise.
! 	(vget_low_p16): Likewise.
! 	(vget_low_p64): Likewise.
! 	(vget_low_s8): Likewise.
! 	(vget_low_s16): Likewise.
! 	(vget_low_s32): Likewise.
! 	(vget_low_s64): Likewise.
! 	(vget_low_u8): Likewise.
! 	(vget_low_u16): Likewise.
! 	(vget_low_u32): Likewise.
! 	(vget_low_u64): Likewise.
  
! 2021-02-05  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* gcc.c (print_multilib_info): Check all required argument is provided
! 	by default arg.
  
! 2021-02-05  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/98537
! 	* config/i386/i386-expand.c (ix86_expand_sse_cmp): Don't
! 	generate integer mask comparison for 128/256-bits vector when
! 	op_true/op_false is NULL_RTX or CONSTM1_RTX/CONST0_RTX. Also
! 	delete redundant !maskcmp condition.
! 	(ix86_expand_int_vec_cmp): Ditto but no redundant deletion
! 	here.
! 	(ix86_expand_sse_movcc): Delete definition of maskcmp, add the
! 	condition directly to if (maskcmp), add extra check for
! 	cmpmode, it should be MODE_INT.
! 	(ix86_expand_fp_vec_cmp): Pass NULL to ix86_expand_sse_cmp's
! 	parameters op_true/op_false.
! 	(ix86_use_mask_cmp_p): New.
  
! 2021-02-05  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/98172
! 	* config/i386/x86-tune.def (X86_TUNE_AVX256_UNALIGNED_LOAD_OPTIMAL):
! 	Remove m_GENERIC from ~list.
! 	(X86_TUNE_AVX256_UNALIGNED_STORE_OPTIMAL): Ditto.
  
! 2021-02-04  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR c/97932
! 	* diagnostic-show-locus.c (compatible_locations_p): Require
! 	locations in the same macro map to be either both from the
! 	macro definition, or both from the macro arguments.
  
! 2021-02-04  Jonathan Wright  <jonathan.wright@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def: Add
! 	[su]mull_hi_lane[q] builtin generator macros.
! 	* config/aarch64/aarch64-simd.md
! 	(aarch64_<su>mull_hi_lane<mode>_insn): Define.
! 	(aarch64_<su>mull_hi_lane<mode>): Define.
! 	(aarch64_<su>mull_hi_laneq<mode>_insn): Define.
! 	(aarch64_<su>mull_hi_laneq<mode>): Define.
! 	* config/aarch64/arm_neon.h (vmull_high_lane_s16): Use RTL
! 	builtin instead of inline asm.
! 	(vmull_high_lane_s32): Likewise.
! 	(vmull_high_lane_u16): Likewise.
! 	(vmull_high_lane_u32): Likewise.
! 	(vmull_high_laneq_s16): Likewise.
! 	(vmull_high_laneq_s32): Likewise.
! 	(vmull_high_laneq_u16): Likewise.
! 	(vmull_high_laneq_u32): Liekwise.
  
! 2021-02-04  Jonathan Wright  <jonathan.wright@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def: Add [su]mull_hi_n
! 	builtin generator macros.
! 	* config/aarch64/aarch64-simd.md
! 	(aarch64_<su>mull_hi_n<mode>_insn): Define.
! 	(aarch64_<su>mull_hi_n<mode>): Define.
! 	* config/aarch64/arm_neon.h (vmull_high_n_s16): Use RTL builtin
! 	instead of inline asm.
! 	(vmull_high_n_s32): Likewise.
! 	(vmull_high_n_u16): Likewise.
! 	(vmull_high_n_u32): Likewise.
  
! 2021-02-04  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98855
! 	* tree-vect-loop.c (vectorizable_phi): Do not cost
! 	single-argument PHIs.
! 	* tree-vect-slp.c (vect_bb_slp_scalar_cost): Likewise.
! 	* tree-vect-stmts.c (vectorizable_bswap): Also perform
! 	costing for SLP operation.
  
! 2021-02-04  Martin Liska  <mliska@suse.cz>
  
! 	* doc/extend.texi: Mention -mprefer-vector-width in target
! 	attributes.
  
! 2021-02-03  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/98937
! 	* tree-ssa-strlen.c (strlen_dom_walker::~strlen_dom_walker): Define.
! 	Flush pointer_query cache.
  
! 2021-02-03  Aaron Sawdey  <acsawdey@linux.ibm.com>
  
! 	* config/rs6000/genfusion.pl (gen_2logical): Add missing
! 	fixes based on patch review.
! 	* config/rs6000/fusion.md: Regenerate file.
  
! 2021-02-03  Aaron Sawdey  <acsawdey@linux.ibm.com>
  
! 	* config/rs6000/t-rs6000: Comment out auto generation of
! 	fusion.md for now.
  
! 2021-02-03  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn-opts.h (enum processor_type): Add PROCESSOR_GFX908.
! 	* config/gcn/gcn.c (gcn_omp_device_kind_arch_isa): Add gfx908.
! 	(output_file_start): Add gfx908.
! 	* config/gcn/gcn.opt (gpu_type): Add gfx908.
! 	* config/gcn/t-gcn-hsa (MULTILIB_OPTIONS): Add march=gfx908.
! 	(MULTILIB_DIRNAMES): Add gfx908.
! 	* config/gcn/mkoffload.c (EF_AMDGPU_MACH_AMDGCN_GFX908): New define.
! 	(main): Recognize gfx908.
! 	* config/gcn/t-omp-device: Add gfx908.
  
! 2021-02-03  Jonathan Wright  <jonathan.wright@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def: Add
! 	[su]mlsl_hi_lane[q] builtin macro generators.
! 	* config/aarch64/aarch64-simd.md
! 	(aarch64_<su>mlsl_hi_lane<mode>_insn): Define.
! 	(aarch64_<su>mlsl_hi_lane<mode>): Define.
! 	(aarch64_<su>mlsl_hi_laneq<mode>_insn): Define.
! 	(aarch64_<su>mlsl_hi_laneq<mode>): Define.
! 	* config/aarch64/arm_neon.h (vmlsl_high_lane_s16): Use RTL
! 	builtin instead of inline asm.
! 	(vmlsl_high_lane_s32): Likewise.
! 	(vmlsl_high_lane_u16): Likewise.
! 	(vmlsl_high_lane_u32): Likewise.
! 	(vmlsl_high_laneq_s16): Likewise.
! 	(vmlsl_high_laneq_s32): Likewise.
! 	(vmlsl_high_laneq_u16): Likewise.
! 	(vmlsl_high_laneq_u32): Likewise.
! 	(vmlal_high_laneq_u32): Likewise.
  
! 2021-02-03  Jonathan Wright  <jonathan.wright@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def: Add
! 	[su]mlal_hi_lane[q] builtin generator macros.
! 	* config/aarch64/aarch64-simd.md
! 	(aarch64_<su>mlal_hi_lane<mode>_insn): Define.
! 	(aarch64_<su>mlal_hi_lane<mode>): Define.
! 	(aarch64_<su>mlal_hi_laneq<mode>_insn): Define.
! 	(aarch64_<su>mlal_hi_laneq<mode>): Define.
! 	* config/aarch64/arm_neon.h (vmlal_high_lane_s16): Use RTL
! 	builtin instead of inline asm.
! 	(vmlal_high_lane_s32): Likewise.
! 	(vmlal_high_lane_u16): Likewise.
! 	(vmlal_high_lane_u32): Likewise.
! 	(vmlal_high_laneq_s16): Likewise.
! 	(vmlal_high_laneq_s32): Likewise.
! 	(vmlal_high_laneq_u16): Likewise.
! 	(vmlal_high_laneq_u32): Likewise.
  
! 2021-02-03  Jonathan Wright  <jonathan.wright@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def: Add [su]mlsl_hi_n
! 	builtin generator macros.
! 	* config/aarch64/aarch64-simd.md (aarch64_<su>mlsl_hi_n<mode>_insn):
  	Define.
+ 	(aarch64_<su>mlsl_hi_n<mode>): Define.
+ 	* config/aarch64/arm_neon.h (vmlsl_high_n_s16): Use RTL builtin
+ 	instead of inline asm.
+ 	(vmlsl_high_n_s32): Likewise.
+ 	(vmlsl_high_n_u16): Likewise.
+ 	(vmlsl_high_n_u32): Likewise.
  
! 2021-02-03  Jonathan Wright  <jonathan.wright@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def: Add [su]mlal_hi_n
! 	builtin generator macros.
! 	* config/aarch64/aarch64-simd.md (aarch64_<su>mlal_hi_n<mode>_insn):
! 	Define.
! 	(aarch64_<su>mlal_hi_n<mode>): Define.
! 	* config/aarch64/arm_neon.h (vmlal_high_n_s16): Use RTL builtin
! 	instead of inline asm.
! 	(vmlal_high_n_s32): Likewise.
! 	(vmlal_high_n_u16): Likewise.
! 	(vmlal_high_n_u32): Likewise.
  
! 2021-02-03  Jonathan Wright  <jonathan.wright@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def: Add RTL builtin
! 	generator macros.
! 	* config/aarch64/aarch64-simd.md (*aarch64_<su>mlal_hi<mode>):
! 	Rename to...
! 	(aarch64_<su>mlal_hi<mode>_insn): This.
! 	(aarch64_<su>mlal_hi<mode>): Define.
! 	* config/aarch64/arm_neon.h (vmlal_high_s8): Use RTL builtin
! 	instead of inline asm.
! 	(vmlal_high_s16): Likewise.
! 	(vmlal_high_s32): Likewise.
! 	(vmlal_high_u8): Likewise.
! 	(vmlal_high_u16): Likewise.
! 	(vmlal_high_u32): Likewise.
  
! 2021-02-03  Ilya Leoshkevich  <iii@linux.ibm.com>
  
! 	* lra-spills.c (remove_pseudos): Call lra_update_insn_recog_data()
! 	after calling alter_subreg() on a (mem).
  
! 2021-02-03  Martin Liska  <mliska@suse.cz>
  
! 	PR lto/98912
! 	* lto-streamer-out.c (produce_lto_section): Fill up missing
! 	padding.
! 	* lto-streamer.h (struct lto_section): Add _padding field.
  
! 2021-02-03  Richard Biener  <rguenther@suse.de>
  
! 	* lto-streamer.c (lto_get_section_name): Free temporary
! 	buffer.
! 	* tree-loop-distribution.c
! 	(loop_distribution::merge_dep_scc_partitions): Free edge data.
  
! 2021-02-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/97487
! 	* ifcvt.c (noce_can_force_operand): New function.
! 	(noce_emit_move_insn): Use it.
! 	(noce_try_sign_mask): Likewise.  Formatting fix.
  
! 2021-02-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/97971
! 	* lra-constraints.c (process_alt_operands): For inline asm, don't call
! 	fatal_insn, but instead return false.
  
! 2021-02-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/98287
! 	* config/i386/mmx.md (<insn><mode>3): For shifts don't enable expander
! 	for V1DImode.
  
! 2021-02-03  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR tree-optimization/98928
! 	* tree-vect-loop.c (vect_analyze_loop_2): Change
! 	STMT_VINFO_SLP_VECT_ONLY to STMT_VINFO_SLP_VECT_ONLY_PATTERN.
! 	* tree-vect-slp-patterns.c (complex_pattern::build): Likewise.
! 	* tree-vectorizer.h (STMT_VINFO_SLP_VECT_ONLY_PATTERN): New.
! 	(class _stmt_vec_info): Add slp_vect_pattern_only_p.
  
! 2021-02-02  Richard Biener  <rguenther@suse.de>
  
! 	* gimple-loop-interchange.cc (prepare_data_references):
! 	Release vectors.
! 	* gimple-loop-jam.c (tree_loop_unroll_and_jam): Likewise.
! 	* tree-ssa-loop-im.c (hoist_memory_references): Likewise.
! 	* tree-vect-stmts.c (vectorizable_condition): Do not
! 	allocate vectors.
! 	(vectorizable_comparison): Likewise.
  
! 2021-02-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (ursqrte): Define builtin.
! 	* config/aarch64/aarch64-simd.md (aarch64_ursqrte<mode>): New pattern.
! 	* config/aarch64/arm_neon.h (vrsqrte_u32): Reimplement using builtin.
! 	(vrsqrteq_u32): Likewise.
  
! 2021-02-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (sqxtun2): Define builtin.
! 	* config/aarch64/aarch64-simd.md (aarch64_sqxtun2<mode>_le): Define.
! 	(aarch64_sqxtun2<mode>_be): Likewise.
! 	(aarch64_sqxtun2<mode>): Likewise.
! 	* config/aarch64/arm_neon.h (vqmovun_high_s16): Reimplement using builtin.
! 	(vqmovun_high_s32): Likewise.
! 	(vqmovun_high_s64): Likewise.
! 	* config/aarch64/iterators.md (UNSPEC_SQXTUN2): Define.
  
! 2021-02-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (bfdot_lane, bfdot_laneq): Use
! 	AUTO_FP flags.
! 	(bfmlalb_lane, bfmlalt_lane, bfmlalb_lane_q, bfmlalt_lane_q): Use FP flags.
  
! 2021-02-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (fcmla_lane0, fcmla_lane90,
! 	fcmla_lane180, fcmla_lane270, fcmlaq_lane0, fcmlaq_lane90, fcmlaq_lane180,
! 	fcmlaq_lane270, scvtf, ucvtf, fcvtzs, fcvtzu, scvtfsi, scvtfdi, ucvtfsi,
! 	ucvtfdi, fcvtzshf, fcvtzuhf, fmlal_lane_low, fmlsl_lane_low,
! 	fmlal_laneq_low, fmlsl_laneq_low, fmlalq_lane_low, fmlslq_lane_low,
! 	fmlalq_laneq_low, fmlslq_laneq_low, fmlal_lane_high, fmlsl_lane_high,
! 	fmlal_laneq_high, fmlsl_laneq_high, fmlalq_lane_high, fmlslq_lane_high,
! 	fmlalq_laneq_high, fmlslq_laneq_high): Use FP flags.
  
! 2021-02-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-builtins.c (FLAG_LOAD): Define.
! 	* config/aarch64/aarch64-simd-builtins.def (ld1x2, ld2, ld3, ld4, ld2r,
! 	ld3r, ld4r, ld1, ld1x3, ld1x4): Use LOAD flags.
  
! 2021-02-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (combine, zip1, zip2,
! 	uzp1, uzp2, trn1, trn2, simd_bsl): Use AUTO_FP flags.
  
! 2021-02-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (clrsb, clz, ctz, popcount,
! 	vec_smult_lane_, vec_smlal_lane_, vec_smult_laneq_, vec_smlal_laneq_,
! 	vec_umult_lane_, vec_umlal_lane_, vec_umult_laneq_, vec_umlal_laneq_,
! 	ashl, sshl, ushl, srshl, urshl, sdot_lane, udot_lane, sdot_laneq,
! 	udot_laneq, usdot_lane, usdot_laneq, sudot_lane, sudot_laneq, ashr,
! 	ashr_simd, lshr, lshr_simd, srshr_n, urshr_n, ssra_n, usra_n, srsra_n,
! 	ursra_n, sshll_n, ushll_n, sshll2_n, ushll2_n, ssri_n, usri_n, ssli_n,
! 	ssli_n, usli_n, bswap, rbit, simd_bsl, eor3q, rax1q, xarq, bcaxq): Use
! 	NONE builtin flags.
  
! 2021-02-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/98848
! 	* tree-vect-patterns.c (vect_recog_over_widening_pattern): Punt if
! 	STMT_VINFO_DEF_TYPE (last_stmt_info) is vect_reduction_def.
  
! 2021-02-02  Kito Cheng  <kito.cheng@sifive.com>
  
! 	PR target/98743
! 	* expr.c: Check mode before calling store_expr.
  
! 2021-02-02  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	* config/arm/iterators.md (supf): Remove VORNQ_S and VORNQ_U.
! 	(VORNQ): Remove.
! 	* config/arm/mve.md (mve_vornq_s<mode>): New entry for vorn
! 	instruction using expression ior.
! 	(mve_vornq_u<mode>): New expander.
! 	(mve_vornq_f<mode>): Use ior code instead of unspec.
! 	* config/arm/unspecs.md (VORNQ_S, VORNQ_U, VORNQ_F): Remove.
  
! 2021-02-02  Alexandre Oliva  <oliva@adacore.com>
  
! 	* tree-nested.c (convert_nonlocal_reference_op): Move
! 	current_function_decl restore after re-gimplification.
! 	(convert_local_reference_op): Likewise.
  
! 2021-02-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (rshrn, rshrn2):
! 	Define builtins.
! 	* config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le):
! 	Define.
! 	(aarch64_rshrn<mode>_insn_be): Likewise.
! 	(aarch64_rshrn<mode>): Likewise.
! 	(aarch64_rshrn2<mode>_insn_le): Likewise.
! 	(aarch64_rshrn2<mode>_insn_be): Likewise.
! 	(aarch64_rshrn2<mode>): Likewise.
! 	* config/aarch64/aarch64.md (unspec): Add UNSPEC_RSHRN.
! 	* config/aarch64/arm_neon.h (vrshrn_high_n_s16): Reimplement
! 	using builtin.
! 	(vrshrn_high_n_s32): Likewise.
! 	(vrshrn_high_n_s64): Likewise.
! 	(vrshrn_high_n_u16): Likewise.
! 	(vrshrn_high_n_u32): Likewise.
! 	(vrshrn_high_n_u64): Likewise.
! 	(vrshrn_n_s16): Likewise.
! 	(vrshrn_n_s32): Likewise.
! 	(vrshrn_n_s64): Likewise.
! 	(vrshrn_n_u16): Likewise.
! 	(vrshrn_n_u32): Likewise.
! 	(vrshrn_n_u64): Likewise.
  
! 2021-02-01  Sergei Trofimovich  <siarheit@google.com>
  
! 	PR tree-optimization/98499
! 	* ipa-modref.c (analyze_ssa_name_flags): treat RVO
! 	conservatively and assume all possible side-effects.
  
! 2021-02-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (vec_unpacks_hi,
! 	vec_unpacku_hi_): Define builtins.
! 	* config/aarch64/arm_neon.h (vmovl_high_s8): Reimplement using
! 	builtin.
! 	(vmovl_high_s16): Likewise.
! 	(vmovl_high_s32): Likewise.
! 	(vmovl_high_u8): Likewise.
! 	(vmovl_high_u16): Likewise.
! 	(vmovl_high_u32): Likewise.
  
! 2021-02-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (sabdl, uabdl):
! 	Define builtins.
! 	* config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): New
  	pattern.
! 	* config/aarch64/aarch64.md (unspec): Define UNSPEC_SABDL,
! 	UNSPEC_UABDL.
! 	* config/aarch64/arm_neon.h (vabdl_s8): Reimplemet using
! 	builtin.
! 	(vabdl_s16): Likewise.
! 	(vabdl_s32): Likewise.
! 	(vabdl_u8): Likewise.
! 	(vabdl_u16): Likewise.
! 	(vabdl_u32): Likewise.
! 	* config/aarch64/iterators.md (ABDL): New int iterator.
! 	(sur): Handle UNSPEC_SABDL, UNSPEC_UABDL.
  
! 2021-02-01  Martin Sebor  <msebor@redhat.com>
  
! 	* tree.h (BLOCK_VARS): Add comment.
! 	(BLOCK_SUBBLOCKS): Same.
! 	(BLOCK_SUPERCONTEXT): Same.
! 	(BLOCK_ABSTRACT_ORIGIN): Same.
! 	(inlined_function_outer_scope_p): Same.
  
! 2021-02-01  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/97172
! 	* attribs.c (attr_access::free_lang_data): Define new function.
! 	* attribs.h (attr_access::free_lang_data): Declare new function.
  
! 2021-02-01  Richard Biener  <rguenther@suse.de>
  
! 	* vec.h (auto_vec::auto_vec): Add memory stat parameters
! 	and pass them on.
! 	* bitmap.h (auto_bitmap::auto_bitmap): Likewise.
  
! 2021-02-01  Tamar Christina  <tamar.christina@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (aarch64_<su>mlal_n<mode>,
! 	aarch64_<su>mlsl<mode>, aarch64_<su>mlsl_n<mode>): Flip mult operands.
  
! 2021-02-01  Richard Biener  <rguenther@suse.de>
  
! 	PR rtl-optimization/98863
! 	* config/i386/i386-features.c (convert_scalars_to_vector):
! 	Set DF_RD_PRUNE_DEAD_DEFS.
  
! 2021-01-31  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* system.h (SIZE_MAX): Define if not already defined.
  
! 2021-01-30  Aaron Sawdey  <acsawdey@linux.ibm.com>
  
! 	* config/rs6000/genfusion.pl (gen_2logical): New function to
! 	generate patterns for logical-logical fusion.
! 	* config/rs6000/fusion.md: Regenerated patterns.
! 	* config/rs6000/rs6000-cpus.def: Add
! 	OPTION_MASK_P10_FUSION_2LOGICAL.
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
! 	Enable logical-logical fusion for p10.
! 	* config/rs6000/rs6000.opt: Add -mpower10-fusion-2logical.
  
! 2021-01-30  David Edelsohn  <dje.gcc@gmail.com>
  
! 	* config/rs6000/rs6000.opt: Add periods to new AIX options.
  
! 2021-01-30  David Edelsohn  <dje.gcc@gmail.com>
  
! 	* config/rs6000/rs6000.opt (mabi=vec-extabi): New.
! 	(mabi=vec-default): New.
! 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
! 	__EXTABI__ for AIX Vector extended ABI.
! 	* config/rs6000/rs6000.c (rs6000_debug_reg_global): Print AIX Vector
! 	extabi info.
! 	(conditional_register_usage): If AIX vec_extabi enabled, vs20-vs31
! 	are non-volatile.
! 	* doc/invoke.texi (PowerPC mabi): Add AIX vec-extabi and vec-default.
  
! 2021-01-30  Jakub Jelinek  <jakub@redhat.com>
  
! 	* config/i386/i386-features.c (remove_partial_avx_dependency): Clear
! 	DF_DEFER_INSN_RESCAN after calling df_process_deferred_rescans.
  
! 2021-01-29  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR target/97701
! 	* lra-constraints.c (in_class_p): Don't narrow class only for REG
! 	or MEM.
  
! 2021-01-29  Will Schmidt  <will_schmidt@vnet.ibm.com>
  
! 	* config/rs6000/rs6000-call.c (rs6000_expand_binup_builtin): Add
! 	clauses for CODE_FOR_vsx_xvcvuxddp_scale and
! 	CODE_FOR_vsx_xvcvsxddp_scale to the parameter checking code.
  
! 2021-01-29  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/98866
! 	* gimple-range-gori.h (gori_compute:set_range_invariant): New.
! 	* gimple-range-gori.cc (gori_map::set_range_invariant): New.
! 	(gori_map::m_maybe_invariant): Rename from all_outgoing.
! 	(gori_map::gori_map): Rename all_outgoing to m_maybe_invariant.
! 	(gori_map::is_export_p): Ditto.
! 	(gori_map::calculate_gori): Ditto.
! 	(gori_compute::set_range_invariant): New.
! 	* gimple-range.cc (gimple_ranger::range_of_stmt): Set range
! 	invariant for pointers evaluating to [1, +INF].
  
! 2021-01-29  Richard Biener  <rguenther@suse.de>
  
! 	PR rtl-optimization/98863
! 	* config/i386/i386-features.c (remove_partial_avx_dependency):
! 	Do not perform DF analysis.
! 	(pass_data_remove_partial_avx_dependency): Remove
! 	TODO_df_finish.
  
! 2021-01-29  Jonathan Wright  <jonathan.wright@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def: Add [su]mull_n
! 	builtin generator macros.
! 	* config/aarch64/aarch64-simd.md (aarch64_<su>mull_n<mode>):
! 	Define.
! 	* config/aarch64/arm_neon.h (vmull_n_s16): Use RTL builtin
! 	instead of inline asm.
! 	(vmull_n_s32): Likewise.
! 	(vmull_n_u16): Likewise.
! 	(vmull_n_u32): Likewise.
  
! 2021-01-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (sabdl2, uabdl2):
! 	Define builtins.
! 	* config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
! 	Rename to...
! 	(aarch64_<sur>abdl2<mode>): ... This.
! 	(<sur>sadv16qi): Adjust use of above.
! 	* config/aarch64/arm_neon.h (vabdl_high_s8): Reimplement using
! 	builtin.
! 	(vabdl_high_s16): Likewise.
! 	(vabdl_high_s32): Likewise.
! 	(vabdl_high_u8): Likewise.
! 	(vabdl_high_u16): Likewise.
! 	(vabdl_high_u32): Likewise.
  
! 2021-01-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (sabal2): Define
! 	builtin.
! 	(uabal2): Likewise.
! 	* config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): New
  	pattern.
! 	* config/aarch64/aarch64.md (unspec): Add UNSPEC_SABAL2 and
! 	UNSPEC_UABAL2.
! 	* config/aarch64/arm_neon.h (vabal_high_s8): Reimplement using
! 	builtin.
! 	(vabal_high_s16): Likewise.
! 	(vabal_high_s32): Likewise.
! 	(vabal_high_u8): Likewise.
! 	(vabal_high_u16): Likewise.
! 	(vabal_high_u32): Likewise.
! 	* config/aarch64/iterators.md (ABAL2): New mode iterator.
! 	(sur): Handle UNSPEC_SABAL2, UNSPEC_UABAL2.
  
! 2021-01-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (sabal): Define
! 	builtin.
! 	(uabal): Likewise.
! 	* config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>_4):
! 	Rename to...
! 	(aarch64_<sur>abal<mode>): ... This
! 	(<sur>sadv16qi): Adust use of the above.
! 	* config/aarch64/arm_neon.h (vabal_s8): Reimplement using
! 	builtin.
! 	(vabal_s16): Likewise.
! 	(vabal_s32): Likewise.
! 	(vabal_u8): Likewise.
! 	(vabal_u16): Likewise.
! 	(vabal_u32): Likewise.
  
! 2021-01-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (saddlv, uaddlv):
! 	Define builtins.
! 	* config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
! 	Define.
! 	* config/aarch64/arm_neon.h (vaddlv_s8): Reimplement using
! 	builtin.
! 	(vaddlv_s16): Likewise.
! 	(vaddlv_u8): Likewise.
! 	(vaddlv_u16): Likewise.
! 	(vaddlvq_s8): Likewise.
! 	(vaddlvq_s16): Likewise.
  	(vaddlvq_s32): Likewise.
! 	(vaddlvq_u8): Likewise.
! 	(vaddlvq_u16): Likewise.
  	(vaddlvq_u32): Likewise.
! 	(vaddlv_s32): Likewise.
! 	(vaddlv_u32): Likewise.
! 	* config/aarch64/iterators.md (VDQV_L): New mode iterator.
! 	(unspec): Add UNSPEC_SADDLV, UNSPEC_UADDLV.
! 	(Vwstype): New mode attribute.
! 	(Vwsuf): Likewise.
! 	(VWIDE_S): Likewise.
! 	(USADDLV): New int iterator.
! 	(su): Handle UNSPEC_SADDLV, UNSPEC_UADDLV.
  
! 2021-01-29  Jonathan Wright  <jonathan.wright@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def: Add [su]mlsl_lane[q]
! 	builtin generator macros.
! 	* config/aarch64/aarch64-simd.md (aarch64_vec_<su>mlsl_lane<Qlane>):
! 	Define.
! 	* config/aarch64/arm_neon.h (vmlsl_lane_s16): Use RTL builtin
! 	instead of inline asm.
! 	(vmlsl_lane_s32): Likewise.
! 	(vmlsl_lane_u16): Likewise.
! 	(vmlsl_lane_u32): Likewise.
! 	(vmlsl_laneq_s16): Likewise.
! 	(vmlsl_laneq_s32): Likewise.
! 	(vmlsl_laneq_u16): Likewise.
! 	(vmlsl_laneq_u32): Likewise.
  
! 2021-01-29  Richard Biener  <rguenther@suse.de>
  
! 	* doc/invoke.texi (--param max-gcse-memory): Document unit
! 	of size.
! 	* gcse.c (gcse_or_cprop_is_too_expensive): Adjust.
! 	* params.opt (--param max-gcse-memory): Adjust default and
! 	document unit of size.
  
! 2021-01-29  Richard Biener  <rguenther@suse.de>
  
! 	PR rtl-optimization/98863
! 	* gcse.c (gcse_or_cprop_is_too_expensive): Use unsigned
! 	HOST_WIDE_INT for the memory estimate.
  
! 2021-01-29  Bin Cheng  <bin.cheng@linux.alibaba.com>
  	    Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/97627
! 	* tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
! 	Do not analyze fake edges.
  
! 2021-01-29  Richard Biener  <rguenther@suse.de>
  
! 	PR rtl-optimization/98144
! 	* df.h (df_mir_bb_info): Add con_visited member.
! 	* df-problems.c (df_mir_alloc): Initialize con_visited,
! 	do not fully populate IN and OUT.
! 	(df_mir_reset): Likewise.
! 	(df_mir_confluence_0): Set con_visited.
! 	(df_mir_confluence_n): Properly handle implicitely
! 	fully populated IN and OUT as designated by con_visited
! 	and update con_visited accordingly.
  
! 2021-01-29  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/98849
! 	* config/arm/vec-common.md (mve_vshlq_<supf><mode>,
! 	vashl<mode>3, vashr<mode>3, vlshr<mode>3): Add
! 	&& !TARGET_REALLY_IWMMXT to conditions.
  
! 2021-01-29  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/98331
! 	* cfgbuild.c (find_bb_boundaries): Reset debug_insn when seeing
! 	a BARRIER.
  
! 2021-01-28  Marek Polacek  <polacek@redhat.com>
  
! 	PR c++/94775
! 	* stor-layout.c (finalize_type_size): If we reset TYPE_USER_ALIGN in
! 	the main variant, maybe reset it in its variants too.
! 	* tree.c (check_base_type): Return true only if TYPE_USER_ALIGN match.
! 	(check_aligned_type): Check if TYPE_USER_ALIGN match.
  
! 2021-01-28  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	PR target/98730
! 	* config/arm/arm.c (arm_rtx_costs_internal): Adjust cost of vector
! 	of constant zero for comparisons.
  
! 2021-01-28  Michael Meissner  <meissner@linux.ibm.com>
  
! 	* config/rs6000/rs6000.c (rs6000_mangle_decl_assembler_name): Add
! 	support for mapping built-in function names for long double
! 	built-in functions if long double is IEEE 128-bit.
  
! 2021-01-28  Jonathan Wright  <jonathan.wright@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def: Add [su]mlsl_n
! 	builtin generator macros.
! 	* config/aarch64/aarch64-simd.md (aarch64_<su>mlsl_n<mode>):
! 	Define.
! 	* config/aarch64/arm_neon.h (vmlsl_n_s16): Use RTL builtin
! 	instead of inline asm.
! 	(vmlsl_n_s32): Likewise.
! 	(vmlsl_n_u16): Likewise.
! 	(vmlsl_n_u32): Likewise.
  
! 2021-01-28  Jonathan Wright  <jonathan.wright@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def: Add [su]mlal_n
! 	builtin generator macros.
! 	* config/aarch64/aarch64-simd.md (aarch64_<su>mlal_n<mode>):
! 	Define.
! 	* config/aarch64/arm_neon.h (vmlal_n_s16): Use RTL builtin
! 	instead of inline asm.
! 	(vmlal_n_s32): Likewise.
! 	(vmlal_n_u16): Likewise.
! 	(vmlal_n_u32): Likewise.
  
! 2021-01-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (shrn2): Define
! 	builtin.
! 	* config/aarch64/aarch64-simd.md (aarch64_shrn2<mode>_insn_le):
! 	Define.
! 	(aarch64_shrn2<mode>_insn_be): Likewise.
! 	(aarch64_shrn2<mode>): Likewise.
! 	* config/aarch64/arm_neon.h (vshrn_high_n_s16): Reimlplement
! 	using builtins.
! 	(vshrn_high_n_s32): Likewise.
! 	(vshrn_high_n_s64): Likewise.
! 	(vshrn_high_n_u16): Likewise.
! 	(vshrn_high_n_u32): Likewise.
! 	(vshrn_high_n_u64): Likewise.
  
! 2021-01-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (shrn): Define
! 	builtin.
! 	* config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le):
! 	Define.
! 	(aarch64_shrn<mode>_insn_be): Likewise.
! 	(aarch64_shrn<mode>): Likewise.
! 	* config/aarch64/arm_neon.h (vshrn_n_s16): Reimplement using
! 	builtins.
! 	(vshrn_n_s32): Likewise.
! 	(vshrn_n_s64): Likewise.
! 	(vshrn_n_u16): Likewise.
! 	(vshrn_n_u32): Likewise.
! 	(vshrn_n_u64): Likewise.
! 	* config/aarch64/iterators.md (vn_mode): New mode attribute.
  
! 2021-01-28  Richard Biener  <rguenther@suse.de>
  
! 	PR rtl-optimization/80960
! 	* dse.c (check_mem_read_rtx): Call get_addr on the
! 	offsetted address.
  
! 2021-01-28  Xionghu Luo  <luoxhu@linux.ibm.com>
! 	    David Edelsohn  <dje.gcc@gmail.com>
  
! 	PR target/98799
! 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
! 	Don't generate VIEW_CONVERT_EXPR for fcode ALTIVEC_BUILTIN_VEC_INSERT
! 	when -m32.
! 	* config/rs6000/rs6000-protos.h (rs6000_expand_vector_set_var):
! 	Delete.
! 	* config/rs6000/rs6000.c (rs6000_expand_vector_set): Remove the
! 	wrapper call rs6000_expand_vector_set_var for cleanup.  Call
! 	rs6000_expand_vector_set_var_p9 and rs6000_expand_vector_set_var_p8
! 	directly.
! 	(rs6000_expand_vector_set_var): Delete.
! 	(rs6000_expand_vector_set_var_p9): Make static.
! 	(rs6000_expand_vector_set_var_p8): Make static.
  
! 2021-01-28  Xing GUO  <higuoxing@gmail.com>
  
! 	* common/config/riscv/riscv-common.c
! 	(riscv_subset_list::parsing_subset_version): Fix -march option parsing
! 	when `p` extension exists.
  
! 2021-01-27  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/97684
! 	* ira.c (ira): Call ira_set_pseudo_classes before
! 	update_equiv_regs when it is necessary.
  
! 2021-01-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/98853
! 	* config/aarch64/aarch64.md (*aarch64_bfxilsi_uxtw): Use
! 	%w0, %w1 and %2 instead of %0, %1 and %2.
  
! 2021-01-27  Aaron Sawdey  <acsawdey@linux.ibm.com>
  
! 	* config/rs6000/genfusion.pl: New script to generate
! 	define_insn_and_split patterns so combine can arrange fused
! 	instructions next to each other.
! 	* config/rs6000/fusion.md: New file, generated fused instruction
! 	patterns for combine.
! 	* config/rs6000/predicates.md (const_m1_to_1_operand): New predicate.
! 	(non_update_memory_operand): New predicate.
! 	* config/rs6000/rs6000-cpus.def: Add OPTION_MASK_P10_FUSION and
! 	OPTION_MASK_P10_FUSION_LD_CMPI to ISA_3_1_MASKS_SERVER and
! 	POWERPC_MASKS.
! 	* config/rs6000/rs6000-protos.h (address_is_non_pfx_d_or_x): Add
! 	prototype.
  	* config/rs6000/rs6000.c (rs6000_option_override_internal):
! 	Automatically set OPTION_MASK_P10_FUSION and
! 	OPTION_MASK_P10_FUSION_LD_CMPI if target is power10.
! 	(rs600_opt_masks): Allow -mpower10-fusion
! 	in function attributes.
! 	(address_is_non_pfx_d_or_x): New function.
! 	* config/rs6000/rs6000.h: Add MASK_P10_FUSION.
! 	* config/rs6000/rs6000.md: Include fusion.md.
! 	* config/rs6000/rs6000.opt: Add -mpower10-fusion
! 	and -mpower10-fusion-ld-cmpi.
! 	* config/rs6000/t-rs6000: Add dependencies involving fusion.md.
  
! 2021-01-27  Jonathan Wright  <jonathan.wright@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def: Add [su]mlal
! 	builtin generator macros.
! 	* config/aarch64/aarch64-simd.md (*aarch64_<su>mlal<mode>):
! 	Rename to...
! 	(aarch64_<su>mlal<mode>): This.
! 	* config/aarch64/arm_neon.h (vmlal_s8): Use RTL builtin
! 	instead of inline asm.
! 	(vmlal_s16): Likewise.
! 	(vmlal_s32): Likewise.
! 	(vmlal_u8): Likewise.
! 	(vmlal_u16): Likewise.
! 	(vmlal_u32): Likewise.
  
! 2021-01-27  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98854
! 	* tree-vect-slp.c (vect_build_slp_tree_2): Also build
! 	PHIs from scalars when the number of CTORs matches the
! 	number of children.
  
! 2021-01-27  Jonathan Wright  <jonathan.wright@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def: Add mls_n builtin
! 	generator macro.
! 	* config/aarch64/aarch64-simd.md (*aarch64_mls_elt_merge<mode>):
! 	Rename to...
! 	(aarch64_mls_n<mode>): This.
! 	* config/aarch64/arm_neon.h (vmls_n_s16): Use RTL builtin
! 	instead of asm.
! 	(vmls_n_s32): Likewise.
! 	(vmls_n_u16): Likewise.
! 	(vmls_n_u32): Likewise.
! 	(vmlsq_n_s16): Likewise.
! 	(vmlsq_n_s32): Likewise.
! 	(vmlsq_n_u16): Likewise.
! 	(vmlsq_n_u32): Likewise.
  
! 2021-01-27  Jonathan Wright  <jonathan.wright@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def: Add mls builtin
! 	generator macro.
! 	* config/aarch64/arm_neon.h (vmls_s8): Use RTL builtin rather
! 	than asm.
! 	(vmls_s16): Likewise.
! 	(vmls_s32): Likewise.
! 	(vmls_u8): Likewise.
! 	(vmls_u16): Likewise.
! 	(vmls_u32): Likewise.
! 	(vmlsq_s8): Likewise.
! 	(vmlsq_s16): Likewise.
! 	(vmlsq_s32): Likewise.
! 	(vmlsq_u8): Likewise.
! 	(vmlsq_u16): Likewise.
! 	(vmlsq_u32): Likewise.
  
! 2021-01-27  Jonathan Wright  <jonathan.wright@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def: Add mla_n builtin
! 	generator macro.
! 	* config/aarch64/aarch64-simd.md (*aarch64_mla_elt_merge<mode>):
! 	Rename to...
! 	(aarch64_mla_n<mode>): This.
! 	* config/aarch64/arm_neon.h (vmla_n_s16): Use RTL builtin
! 	instead of asm.
! 	(vmla_n_s32): Likewise.
! 	(vmla_n_u16): Likewise.
! 	(vmla_n_u32): Likewise.
! 	(vmlaq_n_s16): Likewise.
! 	(vmlaq_n_s32): Likewise.
! 	(vmlaq_n_u16): Likewise.
! 	(vmlaq_n_u32): Likewise.
  
! 2021-01-27  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/98833
! 	* config/i386/sse.md (sse2_gt<mode>3): Drop !TARGET_XOP in condition.
! 	(*sse2_eq<mode>3): Ditto.
  
! 2021-01-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	* tree-pass.h (PROP_trees): Rename to ...
! 	(PROP_gimple): ... this.
! 	* cfgexpand.c (pass_data_expand): Replace PROP_trees with PROP_gimple.
! 	* passes.c (execute_function_dump, execute_function_todo,
! 	execute_one_ipa_transform_pass, execute_one_pass): Likewise.
! 	* varpool.c (ctor_for_folding): Likewise.
  
! 2021-01-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/97260
! 	* varpool.c: Include tree-pass.h.
! 	(ctor_for_folding): In GENERIC return DECL_INITIAL for TREE_READONLY
! 	non-TREE_SIDE_EFFECTS automatic variables.
  
! 2021-01-26  Paul Fee  <paul.f.fee@gmail.com>
  
! 	* doc/cpp.texi (__cplusplus): Document value for -std=c++23
! 	or -std=gnu++23.
! 	* doc/invoke.texi: Document -std=c++23 and -std=gnu++23.
! 	* dwarf2out.c (highest_c_language): Recognise C++20 and C++23.
! 	(gen_compile_unit_die): Recognise C++23.
  
! 2021-01-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR bootstrap/98839
! 	* dwarf2asm.c (dw2_assemble_integer): Cast DWARF2_ADDR_SIZE to int
! 	in comparison.
  
! 2021-01-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/98681
! 	* config/aarch64/aarch64.c (aarch64_mask_and_shift_for_ubfiz_p):
! 	Use UINTVAL (shft_amnt) and UINTVAL (mask) instead of INTVAL (shft_amnt)
! 	and INTVAL (mask).  Add && INTVAL (mask) > 0 condition.
  
! 2021-01-26  Richard Biener  <rguenther@suse.de>
  
! 	* gimple-pretty-print.c (dump_binary_rhs): Handle
! 	VEC_WIDEN_{PLUS,MINUS}_{LO,HI}_EXPR.
  
! 2021-01-26  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/98726
! 	* tree.h (vector_cst_int_elt): Remove.
! 	* tree.c (vector_cst_int_elt): Use poly_wide_int for computations,
! 	make static.
  
! 2021-01-26  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn.c (gcn_expand_reduc_scalar): Use move instructions
! 	for V64DFmode min/max reductions.
  
! 2021-01-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	* dwarf2asm.c (dw2_assemble_integer): Handle size twice as large
! 	as DWARF2_ADDR_SIZE if x is not a scalar int by emitting it as
! 	two halves, one with x and the other with const0_rtx, ordered
! 	depending on endianity.
  
! 2021-01-26  Alexandre Oliva  <oliva@adacore.com>
  
! 	* gimplify.c (gimplify_decl_expr): Skip asan marking calls for
! 	temporaries not seen in binding block, and not about to be
! 	added as gimple variables.
  
! 2021-01-25  Martin Sebor  <msebor@redhat.com>
  
! 	PR c++/98646
! 	* tree-ssa-ccp.c (pass_post_ipa_warn::execute): Adjust warning text.
  
! 2021-01-25  Martin Liska  <mliska@suse.cz>
  
! 	* value-prof.c (get_nth_most_common_value): Use %s instead
! 	of %qs string.
  
! 2021-01-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/98811
! 	* configure.ac (HAVE_AS_GDWARF_5_DEBUG_FLAG): Only define if
! 	readelf -wi is able to read the emitted .debug_info back.
! 	* configure: Regenerated.
  
! 2021-01-25  Martin Liska  <mliska@suse.cz>
  
! 	PR gcov-profile/98739
! 	* common.opt: Add missing sign symbol.
! 	* value-prof.c (get_nth_most_common_value): Restore handling
! 	of PROFILE_REPRODUCIBILITY_PARALLEL_RUNS and
! 	PROFILE_REPRODUCIBILITY_MULTITHREADED.
  
! 2021-01-25  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/98807
! 	* tree.c (vector_element_bits): Always use precision of
! 	the element type for boolean vectors.
  
! 2021-01-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* config/rtems.h (STARTFILE_SPEC): Remove qnolinkcmds.
! 	(ENDFILE_SPEC): Evaluate qnolinkcmds.
  
! 2021-01-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* config/rtems.h (STARTFILE_SPEC): Remove nostdlib and
! 	nostartfiles handling since this is already done by
! 	LINK_COMMAND_SPEC.  Evaluate qnolinkcmds.
! 	(ENDFILE_SPEC): Remove nostdlib and nostartfiles handling since this
! 	is already done by LINK_COMMAND_SPEC.
! 	(LIB_SPECS): Remove nostdlib and nodefaultlibs handling since
! 	this is already done by LINK_COMMAND_SPEC.  Remove qnolinkcmds
! 	evaluation.
  
! 2021-01-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR testsuite/98771
! 	* fold-const-call.c (host_size_t_cst_p): Renamed to ...
! 	(size_t_cst_p): ... this.  Check and store unsigned HOST_WIDE_INT
! 	value rather than host size_t.
! 	(fold_const_call): Change type of s2 from size_t to
! 	unsigned HOST_WIDE_INT.  Use size_t_cst_p instead of
! 	host_size_t_cst_p.  For strncmp calls, pass MIN (s2, SIZE_MAX)
! 	instead of s2 as last argument.
  
! 2021-01-25  Tamar Christina  <tamar.christina@arm.com>
  
! 	* config/arm/iterators.md (rotsplit1, rotsplit2, conj_op, fcmac1,
! 	VCMLA_OP, VCMUL_OP): New.
! 	* config/arm/mve.md (mve_vcmlaq<mve_rot><mode>): Support vec_dup 0.
! 	* config/arm/neon.md (cmul<conj_op><mode>3): New.
! 	* config/arm/unspecs.md (UNSPEC_VCMLA_CONJ, UNSPEC_VCMLA180_CONJ,
! 	UNSPEC_VCMUL_CONJ): New.
! 	* config/arm/vec-common.md (cmul<conj_op><mode>3, arm_vcmla<rot><mode>,
! 	cml<fcmac1><conj_op><mode>4): New.
  
! 2021-01-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR testsuite/97301
! 	* config/rs6000/mmintrin.h (__m64): Add __may_alias__ attribute.
  
! 2021-01-22  Jonathan Wright  <jonathan.wright@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def: Add mla builtin
! 	generator macro.
! 	* config/aarch64/arm_neon.h (vmla_s8): Use RTL builtin rather
! 	than asm.
! 	(vmla_s16): Likewise.
! 	(vmla_s32): Likewise.
! 	(vmla_u8): Likewise.
! 	(vmla_u16): Likewise.
! 	(vmla_u32): Likewise.
! 	(vmlaq_s8): Likewise.
! 	(vmlaq_s16): Likewise.
! 	(vmlaq_s32): Likewise.
! 	(vmlaq_u8): Likewise.
! 	(vmlaq_u16): Likewise.
! 	(vmlaq_u32): Likewise.
  
! 2021-01-22  David Malcolm  <dmalcolm@redhat.com>
  
! 	* doc/invoke.texi (GCC_EXTRA_DIAGNOSTIC_OUTPUT): Add @findex
! 	directive.
  
! 2021-01-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/98796
! 	* dwarf2out.c (output_file_names): For -gdwarf-5, if there are no
! 	filenames to emit, still emit the required 0 index directory and
! 	filename entries that match DW_AT_comp_dir and DW_AT_name of the
! 	compilation unit.
  
! 2021-01-22  Marek Polacek  <polacek@redhat.com>
  
! 	PR c++/98545
! 	* doc/invoke.texi: Update C++ ABI Version 15 description.
  
! 2021-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR tree-optimization/98766
! 	* tree-ssa-math-opts.c (convert_mult_to_fma): Use maybe_le when
! 	comparing against type size with param_avoid_fma_max_bits.
  
! 2021-01-22  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/98793
! 	* tree.c (vector_element_bits): Key single-bit bool vector on
! 	integer mode rather than not vector mode.
  
! 2021-01-22  Xionghu Luo  <luoxhu@linux.ibm.com>
  
! 	PR target/98093
! 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
! 	Generate ARRAY_REF(VIEW_CONVERT_EXPR) for P8 and later
! 	platforms.
! 	* config/rs6000/rs6000.c (rs6000_expand_vector_set_var): Update
! 	to call different path for P8 and P9.
! 	(rs6000_expand_vector_set_var_p9): New function.
! 	(rs6000_expand_vector_set_var_p8): New function.
  
! 2021-01-22  Xionghu Luo  <luoxhu@linux.ibm.com>
  
! 	PR target/79251
! 	PR target/98065
! 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
! 	Ajdust variable index vec_insert from address dereference to
! 	ARRAY_REF(VIEW_CONVERT_EXPR) tree expression.
! 	* config/rs6000/rs6000-protos.h (rs6000_expand_vector_set_var):
! 	New declaration.
! 	* config/rs6000/rs6000.c (rs6000_expand_vector_set_var): New function.
  
! 2021-01-22  Martin Liska  <mliska@suse.cz>
  
! 	PR gcov-profile/98739
! 	* profile.c (compute_value_histograms): Drop time profile for
! 	-fprofile-reproducible=multithreaded.
  
! 2021-01-22  Nathan Sidwell  <nathan@acm.org>
  
! 	* gcc.c (process_command): Don't check OPT_SPECIAL_input_file
! 	existence here.
  
! 2021-01-22  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/98773
! 	* tree-data-ref.c (initalize_matrix_A): Revert previous
! 	change, retaining failing on HOST_WIDE_INT_MIN CHREC_RIGHT.
  
! 2021-01-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/90248
! 	* match.pd (X cmp 0.0 ? 1.0 : -1.0 -> copysign(1, +-X),
! 	X cmp 0.0 ? -1.0 : +1.0 -> copysign(1, -+X)): Remove
! 	simplifications.
! 	(X * (X cmp 0.0 ? 1.0 : -1.0) -> +-abs(X),
! 	X * (X cmp 0.0 ? -1.0 : 1.0) -> +-abs(X)): New simplifications.
  
! 2021-01-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/98255
! 	* tree-dfa.c (get_ref_base_and_extent): For ARRAY_REFs, sign
! 	extend index - low_bound from sizetype's precision rather than index
! 	precision.
! 	(get_addr_base_and_unit_offset_1): Likewise.
! 	* tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Likewise.
! 	* gimple-fold.c (fold_const_aggregate_ref_1): Likewise.
  
! 2021-01-22  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98786
! 	* tree-ssa-phiopt.c (factor_out_conditional_conversion): Avoid
! 	adding new uses of abnormals.  Verify we deal with a conditional
! 	conversion.
  
! 2021-01-22  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
  
! 	PR target/98636
! 	* optc-save-gen.awk: Add arm_fp16_format to checked_options.
  
! 2021-01-22  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/96891
! 	PR target/98348
! 	* config/i386/sse.md (VI_128_256): New mode iterator.
! 	(*avx_cmp<mode>3_1, *avx_cmp<mode>3_2, *avx_cmp<mode>3_3,
! 	 *avx_cmp<mode>3_4, *avx2_eq<mode>3, *avx2_pcmp<mode>3_1,
! 	 *avx2_pcmp<mode>3_2, *avx2_gt<mode>3): New
! 	define_insn_and_split to lower avx512 vector comparison to avx
! 	version when dest is vector.
! 	(*<avx512>_cmp<mode>3,*<avx512>_cmp<mode>3,*<avx512>_ucmp<mode>3):
! 	define_insn_and_split for negating the comparison result.
! 	* config/i386/predicates.md (float_vector_all_ones_operand):
! 	New predicate.
! 	* config/i386/i386-expand.c (ix86_expand_sse_movcc): Use
! 	general NOT operator without UNSPEC_MASKOP.
  
! 2021-01-21  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/98777
! 	* lra-int.h (lra_pmode_pseudo): New extern.
! 	* lra.c (lra_pmode_pseudo): New global.
! 	(lra): Set it up.
! 	* lra-eliminations.c (eliminate_regs_in_insn): Use it.
  
! 2021-01-21  Ilya Leoshkevich  <iii@linux.ibm.com>
  
! 	* fwprop.c (fwprop_propagation::classify_result): Allow
! 	(subreg (mem)) simplifications.
  
! 2021-01-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (aarch64_sqdml<SBINQOPS:as>l<mode>):
! 	Split into...
! 	(aarch64_sqdmlal<mode>): ... This...
! 	(aarch64_sqdmlsl<mode>): ... And this.
! 	(aarch64_sqdml<SBINQOPS:as>l_lane<mode>): Split into...
! 	(aarch64_sqdmlal_lane<mode>): ... This...
! 	(aarch64_sqdmlsl_lane<mode>): ... And this.
! 	(aarch64_sqdml<SBINQOPS:as>l_laneq<mode>): Split into...
! 	(aarch64_sqdmlsl_laneq<mode>): ... This...
! 	(aarch64_sqdmlal_laneq<mode>):  ... And this.
! 	(aarch64_sqdml<SBINQOPS:as>l_n<mode>): Split into...
! 	(aarch64_sqdmlsl_n<mode>): ... This...
! 	(aarch64_sqdmlal_n<mode>): ... And this.
! 	(aarch64_sqdml<SBINQOPS:as>l2<mode>_internal): Split into...
! 	(aarch64_sqdmlal2<mode>_internal): ... This...
! 	(aarch64_sqdmlsl2<mode>_internal): ... And this.
  
! 2021-01-21  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	* config/arm/arm_mve.h (__arm_vcmpneq_s8): Fix return type.
  
! 2021-01-21  Andrea Corallo  <andrea.corallo@arm.com>
  
! 	PR target/96372
! 	* doc/sourcebuild.texi (arm_thumb2_no_arm_v8_1_lob): Document.
  
! 2021-01-21  liuhongt  <hongtao.liu@intel.com>
  
! 	PR rtl-optimization/98694
! 	* regcprop.c (copy_value): If SRC had been assigned a mode
! 	narrower than the copy, we can't link DEST into the chain even
! 	they have same hard_regno_nregs(i.e. HImode/SImode in i386
! 	backend).
  
! 2021-01-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (aarch64_get_lane<mode>):
! 	Convert to define_insn_and_split.  Split into simple move when moving
! 	bottom element.
  
! 2021-01-20  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/rs6000.c (rs6000_emit_le_vsx_store): Change assert.
! 	Adjust comment.  Simplify code.
  
! 2021-01-20  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/98765
! 	* dwarf2out.c (reset_indirect_string): Also reset indirect strings
! 	with DW_FORM_line_strp form.
! 	(prune_unused_types_update_strings): Don't add into debug_str_hash
! 	indirect strings with DW_FORM_line_strp form.
! 	(adjust_name_comp_dir): New function.
! 	(dwarf2out_finish): Call it on CU DIEs after resetting
! 	debug_line_str_hash.
  
! 2021-01-20  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/98722
! 	* lra-eliminations.c (eliminate_regs_in_insn): Check that target
! 	has no 3-op add insn to transform insns containing two pluses.
  
! 2021-01-20  Richard Biener  <rguenther@suse.de>
  
! 	* hwint.h (add_hwi): New function.
! 	(mul_hwi): Likewise.
! 	* tree-data-ref.c (initialize_matrix_A): Properly translate
! 	tree constants and avoid HOST_WIDE_INT_MIN.
! 	(lambda_matrix_row_add): Avoid undefined integer overflow
! 	and return true on such overflow.
! 	(lambda_matrix_right_hermite): Handle overflow from
! 	lambda_matrix_row_add gracefully.  Simplify previous fix.
! 	(analyze_subscript_affine_affine): Likewise.
  
! 2021-01-20  Eugene Rozenfeld  <erozen@microsoft.com>
  
! 	PR tree-optimization/96674
! 	* match.pd: New patterns: x < y || y == XXX_MIN --> x <= y - 1
! 	x >= y && y != XXX_MIN --> x > y - 1
  
! 2021-01-20  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/98535
! 	* tree-vect-slp.c (duplicate_and_interleave): Use quick_grow_cleared.
! 	If the high and low permutes are the same, remove the high permutes
! 	from the working set and only continue with the low ones.
  
! 2021-01-20  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/98721
! 	* builtins.c (access_ref::inform_access): Don't assume
! 	SSA_NAME_IDENTIFIER must be non-NULL.  Print messages about
! 	object whenever allocfn is NULL, rather than only when DECL_P
! 	is true.  Use %qE instead of %qD for that.  Formatting fixes.
  
! 2021-01-20  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98758
! 	* tree-data-ref.c (int_divides_p): Use lambda_int arguments.
! 	(lambda_matrix_right_hermite): Avoid undefinedness with
! 	signed integer abs and multiplication.
! 	(analyze_subscript_affine_affine): Use lambda_int.
  
! 2021-01-20  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR debug/98751
! 	* dwarf2out.c (output_line_info): Rename static variable
! 	"generation", moving it out of the function to...
! 	(output_line_info_generation): New.
! 	(init_sections_and_labels): Likewise, renaming the variable to...
! 	(init_sections_and_labels_generation): New.
! 	(dwarf2out_c_finalize): Reset the new variables.
  
! 2021-01-19  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/98664
! 	* tree-ssa-live.c (remove_unused_scope_block_p): Keep scopes for
! 	all functions, even if they're not declared artificial or inline.
! 	* tree.c (tree_inlined_location): Use macro expansion location
! 	only if scope traversal fails to expose one.
  
! 2021-01-19  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/92294
! 	* alias.c (compare_base_symbol_refs): Take an extra parameter
! 	and add the distance between two symbols to it.  Enshrine in
! 	comments that -1 means "either 0 or 1, but we can't tell
! 	which at compile time".
! 	(memrefs_conflict_p): Update call accordingly.
! 	(rtx_equal_for_memref_p): Likewise.  Take the distance between symbols
! 	into account.
  
! 2021-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (sqshl, uqshl,
! 	sqrshl, uqrshl, sqadd, uqadd, sqsub, uqsub, suqadd, usqadd, sqmovn,
! 	uqmovn, sqxtn2, uqxtn2, sqabs, sqneg, sqdmlal, sqdmlsl, sqdmlal_lane,
! 	sqdmlsl_lane, sqdmlal_laneq, sqdmlsl_laneq, sqdmlal_n, sqdmlsl_n,
! 	sqdmlal2, sqdmlsl2, sqdmlal2_lane, sqdmlsl2_lane, sqdmlal2_laneq,
! 	sqdmlsl2_laneq, sqdmlal2_n, sqdmlsl2_n, sqdmull, sqdmull_lane,
! 	sqdmull_laneq, sqdmull_n, sqdmull2, sqdmull2_lane, sqdmull2_laneq,
! 	sqdmull2_n, sqdmulh, sqrdmulh, sqdmulh_lane, sqdmulh_laneq,
! 	sqrdmulh_lane, sqrdmulh_laneq, sqshrun_n, sqrshrun_n, sqshrn_n,
! 	uqshrn_n, sqrshrn_n, uqrshrn_n, sqshlu_n, sqshl_n, uqshl_n, sqrdmlah,
! 	sqrdmlsh, sqrdmlah_lane, sqrdmlsh_lane, sqrdmlah_laneq, sqrdmlsh_laneq,
! 	sqmovun): Use NONE flags.
  
! 2021-01-19  Richard Biener  <rguenther@suse.de>
  
! 	PR ipa/98330
! 	* ipa-modref.c (analyze_stmt): Only record a summary for a
! 	direct call.
  
! 2021-01-19  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/98638
! 	* tree-ssanames.c (fini_ssanames): Zero SSA_NAME_DEF_STMT.
  
! 2021-01-19  Daniel Hellstrom  <daniel@gaisler.com>
  
! 	* config/sparc/rtemself.h (TARGET_OS_CPP_BUILTINS): Add
! 	built-in define __FIX_LEON3FT_TN0018.
  
! 2021-01-19  Richard Biener  <rguenther@suse.de>
  
! 	PR ipa/97673
! 	* tree-inline.c (tree_function_versioning): Set input_location
! 	to UNKNOWN_LOCATION throughout the function.
  
! 2021-01-19  Tobias Burnus  <tobias@codesourcery.com>
  
! 	PR fortran/98476
! 	* omp-low.c (lower_omp_target): Handle nonpointer is_device_ptr.
  
! 2021-01-19  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/98690
! 	* ipa-sra.c (ssa_name_only_returned_p): New parameter fun.  Check
! 	whether non-call exceptions allow removal of a statement.
! 	(isra_analyze_call): Pass the appropriate function to
! 	ssa_name_only_returned_p.
  
! 2021-01-19  Geng Qi  <gengqi@linux.alibaba.com>
  
! 	* config/riscv/arch-canonicalize (longext_sort): New function for
! 	 sorting 'multi-letter'.
! 	* config/riscv/multilib-generator: Adjusting the loop of 'alt' in
! 	'alts'.	The 'arch' may not be the first of 'alts'.
! 	(_expand_combination): Add underline for the 'ext' without '*'.
! 	This is because, a single-letter extension can always be treated well
! 	with a '_' prefix, but it cannot be separated out if it is appended
! 	to a multi-letter.
  
! 2021-01-18  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR target/97847
! 	* ira.c (ira): Skip abnormal critical edge splitting.
  
! 2021-01-18  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/98727
! 	* tree-ssa-math-opts.c (match_arith_overflow): Fix up computation of
! 	second .MUL_OVERFLOW operand for signed multiplication with overflow
! 	checking if the second operand of multiplication is not constant.
  
! 2021-01-18  David Edelsohn  <dje.gcc@gmail.com>
  
! 	* doc/invoke.texi (-gdwarf): TPF defaults to version 2 and AIX
! 	defaults to version 4.
  
! 2021-01-18  David Malcolm  <dmalcolm@redhat.com>
  
! 	* attribs.h (fndecl_dealloc_argno): New decl.
! 	* builtins.c (call_dealloc_argno): Split out second half of
! 	function into...
! 	(fndecl_dealloc_argno): New.
! 	* doc/extend.texi (Common Function Attributes): Document the
! 	interaction between the analyzer and the malloc attribute.
! 	* doc/invoke.texi (Static Analyzer Options): Likewise.
  
! 2021-01-17  David Edelsohn  <dje.gcc@gmail.com>
  
! 	* config/rs6000/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Override
! 	dwarf_version to 4.
! 	* config/rs6000/aix72.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
  
! 2021-01-17  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/98222
! 	* cgraph.c (clone_of_p): Check also former_clone_of as we climb
! 	the clone tree.
  
! 2021-01-17  Mark Wielaard  <mark@klomp.org>
  
! 	* common.opt (gdwarf-): Init(5).
! 	* doc/invoke.texi (-gdwarf): Document default to 5.
  
! 2021-01-16  Kwok Cheung Yeung  <kcy@codesourcery.com>
  
! 	* builtin-types.def
! 	(BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR_INT): Rename
! 	to...
! 	(BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR_INT_PTR):
! 	...this.  Add extra argument.
! 	* gimplify.c (omp_default_clause): Ensure that event handle is
! 	firstprivate in a task region.
! 	(gimplify_scan_omp_clauses): Handle OMP_CLAUSE_DETACH.
! 	(gimplify_adjust_omp_clauses): Likewise.
! 	* omp-builtins.def (BUILT_IN_GOMP_TASK): Change function type to
! 	BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR_INT_PTR.
! 	* omp-expand.c (expand_task_call): Add GOMP_TASK_FLAG_DETACH to flags
! 	if detach clause specified.  Add detach argument when generating
! 	call to	GOMP_task.
! 	* omp-low.c (scan_sharing_clauses): Setup data environment for detach
! 	clause.
! 	(finish_taskreg_scan): Move field for variable containing the event
! 	handle to the front of the struct.
! 	* tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_DETACH.  Fix
! 	ordering.
! 	* tree-nested.c (convert_nonlocal_omp_clauses): Handle
! 	OMP_CLAUSE_DETACH clause.
! 	(convert_local_omp_clauses): Handle OMP_CLAUSE_DETACH clause.
! 	* tree-pretty-print.c (dump_omp_clause): Handle OMP_CLAUSE_DETACH.
! 	* tree.c (omp_clause_num_ops): Add entry for OMP_CLAUSE_DETACH.
! 	Fix ordering.
! 	(omp_clause_code_name): Add entry for OMP_CLAUSE_DETACH.  Fix
! 	ordering.
! 	(walk_tree_1): Handle OMP_CLAUSE_DETACH.
  
! 2021-01-16  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* config/nios2/t-rtems: Reset all MULTILIB_* variables.  Shorten
! 	multilib directory names.  Use MULTILIB_REQUIRED instead of
! 	MULTILIB_EXCEPTIONS.  Add -mhw-mul -mhw-mulx -mhw-div
! 	-mcustom-fpu-cfg=fph2 multilib.
  
! 2021-01-16  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* config/nios2/nios2.c (NIOS2_FPU_CONFIG_NUM): Adjust value.
! 	(nios2_init_fpu_configs): Provide register values for new
! 	-mcustom-fpu-cfg=fph2 option variant.
! 	* doc/invoke.texi (-mcustom-fpu-cfg=fph2): Document new option
! 	variant.
  
! 2021-01-16  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* config/nios2/nios2.c (nios2_custom_check_insns): Remove
! 	custom instruction warnings.
  
! 2021-01-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/96669
! 	* match.pd ((CST << x) & 1 -> x == 0): New simplification.
  
! 2021-01-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/96271
! 	* passes.def: Pass false argument to first two pass_cd_dce
! 	instances and true to last instance.  Add comment that
! 	last instance rewrites no longer addressed locals.
! 	* tree-ssa-dce.c (pass_cd_dce): Add update_address_taken_p member and
! 	initialize it.
! 	(pass_cd_dce::set_pass_param): New method.
! 	(pass_cd_dce::execute): Return TODO_update_address_taken from
! 	last cd_dce instance.
  
! 2021-01-15  Carl Love  <cel@us.ibm.com>
  
! 	* config/rs6000/altivec.h (vec_mulh, vec_div, vec_dive, vec_mod):
! 	New defines.
! 	* config/rs6000/altivec.md (VIlong): Move define to file vsx.md.
! 	* config/rs6000/rs6000-builtin.def (DIVES_V4SI, DIVES_V2DI,
! 	DIVEU_V4SI, DIVEU_V2DI, DIVS_V4SI, DIVS_V2DI, DIVU_V4SI,
! 	DIVU_V2DI, MODS_V2DI, MODS_V4SI, MODU_V2DI, MODU_V4SI,
! 	MULHS_V2DI, MULHS_V4SI, MULHU_V2DI, MULHU_V4SI, MULLD_V2DI):
! 	Add builtin define.
! 	(MULH, DIVE, MOD):  Add new BU_P10_OVERLOAD_2 definitions.
! 	* config/rs6000/rs6000-call.c (VSX_BUILTIN_VEC_DIV,
! 	VSX_BUILTIN_VEC_DIVE, P10_BUILTIN_VEC_MOD, P10_BUILTIN_VEC_MULH):
! 	New overloaded definitions.
! 	(builtin_function_type) [P10V_BUILTIN_DIVEU_V4SI,
! 	P10V_BUILTIN_DIVEU_V2DI, P10V_BUILTIN_DIVU_V4SI,
! 	P10V_BUILTIN_DIVU_V2DI, P10V_BUILTIN_MODU_V2DI,
! 	P10V_BUILTIN_MODU_V4SI, P10V_BUILTIN_MULHU_V2DI,
! 	P10V_BUILTIN_MULHU_V4SI]: Add case
! 	statement for builtins.
! 	* config/rs6000/rs6000.md (bits): Add new attribute sizes V4SI, V2DI.
! 	* config/rs6000/vsx.md (VIlong): Moved from config/rs6000/altivec.md.
! 	(UNSPEC_VDIVES, UNSPEC_VDIVEU): New unspec definitions.
! 	(vsx_mul_v2di): Add if TARGET_POWER10 statement.
! 	(vsx_udiv_v2di): Add if TARGET_POWER10 statement.
! 	(dives_<mode>, diveu_<mode>, div<mode>3, uvdiv<mode>3,
! 	mods_<mode>, modu_<mode>, mulhs_<mode>, mulhu_<mode>, mulv2di3):
! 	Add define_insn, mode is VIlong.
! 	* doc/extend.texi (vec_mulh, vec_mul, vec_div, vec_dive, vec_mod):
! 	Add builtin descriptions.
  
! 2021-01-15  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* final.c (final_start_function_1): Reset force_source_line.
  
! 2021-01-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/96669
! 	* match.pd (((1 << A) & 1) != 0 -> A == 0,
! 	((1 << A) & 1) == 0 -> A != 0): Generalize for 1s replaced by
! 	possibly different power of two constants and to right shift too.
  
! 2021-01-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/96681
! 	* match.pd ((x < 0) ^ (y < 0) to (x ^ y) < 0): New simplification.
! 	((x >= 0) ^ (y >= 0) to (x ^ y) < 0): Likewise.
! 	((x < 0) ^ (y >= 0) to (x ^ y) >= 0): Likewise.
! 	((x >= 0) ^ (y < 0) to (x ^ y) >= 0): Likewise.
  
! 2021-01-15  Alexandre Oliva  <oliva@adacore.com>
  
! 	* opts.c (gen_command_line_string): Exclude -dumpbase-ext.
  
! 2021-01-15  Tamar Christina  <tamar.christina@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (cml<fcmac1><conj_op><mode>4,
! 	cmul<conj_op><mode>3): New.
! 	* config/aarch64/iterators.md (UNSPEC_FCMUL,
! 	UNSPEC_FCMUL180, UNSPEC_FCMLA_CONJ, UNSPEC_FCMLA180_CONJ,
! 	UNSPEC_CMLA_CONJ, UNSPEC_CMLA180_CONJ, UNSPEC_CMUL, UNSPEC_CMUL180,
! 	FCMLA_OP, FCMUL_OP, conj_op, rotsplit1, rotsplit2, fcmac1, sve_rot1,
! 	sve_rot2, SVE2_INT_CMLA_OP, SVE2_INT_CMUL_OP, SVE2_INT_CADD_OP): New.
! 	(rot): Add UNSPEC_FCMUL, UNSPEC_FCMUL180.
! 	(rot_op): Renamed to conj_op.
! 	* config/aarch64/aarch64-sve.md (cml<fcmac1><conj_op><mode>4,
! 	cmul<conj_op><mode>3): New.
! 	* config/aarch64/aarch64-sve2.md (cml<fcmac1><conj_op><mode>4,
! 	cmul<conj_op><mode>3): New.
  
! 2021-01-15  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR bootstrap/98696
! 	* diagnostic.c
! 	(selftest::test_print_parseable_fixits_bytes_vs_display_columns):
! 	Escape the tempfile name when constructing the expected output.
  
! 2021-01-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (*aarch64_<su>mlsl_hi<mode>):
! 	Rename to...
! 	(aarch64_<su>mlsl_hi<mode>): ... This.
! 	(aarch64_<su>mlsl_hi<mode>): Define.
! 	(*aarch64_<su>mlsl<mode): Rename to...
! 	(aarch64_<su>mlsl<mode): ... This.
! 	* config/aarch64/aarch64-simd-builtins.def (smlsl, umlsl,
! 	smlsl_hi, umlsl_hi): Define builtins.
! 	* config/aarch64/arm_neon.h (vmlsl_high_s8, vmlsl_high_s16,
! 	vmlsl_high_s32, vmlsl_high_u8, vmlsl_high_u16, vmlsl_high_u32,
! 	vmlsl_s8, vmlsl_s16, vmlsl_s32, vmlsl_u8,
! 	vmlsl_u16, vmlsl_u32): Reimplement with builtins.
  
! 2021-01-15  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386-c.c (ix86_target_macros):
! 	Use cpp_define_formatted for __SIZEOF_FLOAT80__ definition.
  
! 2021-01-15  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/88836
! 	* config.gcc (aarch64*-*-*): Add aarch64-cc-fusion.o to extra_objs.
! 	* Makefile.in (RTL_SSA_H): New variable.
! 	* config/aarch64/t-aarch64 (aarch64-cc-fusion.o): New rule.
! 	* config/aarch64/aarch64-protos.h (make_pass_cc_fusion): Declare.
! 	* config/aarch64/aarch64-passes.def: Add pass_cc_fusion after
! 	pass_combine.
! 	* config/aarch64/aarch64-cc-fusion.cc: New file.
  
! 2021-01-15  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* recog.h (insn_change_watermark::~insn_change_watermark): Avoid
! 	calling cancel_changes for changes that no longer exist.
  
! 2021-01-15  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* rtl-ssa/functions.h (function_info::ref_defs): Rename to...
! 	(function_info::reg_defs): ...this.
! 	* rtl-ssa/member-fns.inl (function_info::ref_defs): Rename to...
! 	(function_info::reg_defs): ...this.
  
! 2021-01-15  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	PR target/71233
! 	* config/arm/arm_neon.h (vceqz_p64, vceqq_p64, vceqzq_p64): New.
  
! 2021-01-15  Christophe Lyon  <christophe.lyon@linaro.org>
  
  	Revert:
+ 	2021-01-15  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	PR target/71233
! 	* config/arm/arm_neon.h (vceqz_p64, vceqq_p64, vceqzq_p64): New.
  
! 2021-01-15  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/96376
! 	* tree-vect-stmts.c (get_load_store_type): Disregard alignment
! 	for VMAT_INVARIANT.
  
! 2021-01-15  Martin Liska  <mliska@suse.cz>
  
! 	* doc/install.texi: Document that some tests need pytest module.
! 	* doc/sourcebuild.texi: Likewise.
  
! 2021-01-15  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	PR target/71233
! 	* config/arm/arm_neon.h (vceqz_p64, vceqq_p64, vceqzq_p64): New.
  
! 2021-01-15  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	* config/arm/mve.md (mve_vshrq_n_s<mode>_imm): New entry.
! 	(mve_vshrq_n_u<mode>_imm): Likewise.
! 	* config/arm/neon.md (vashr<mode>3, vlshr<mode>3): Move to ...
! 	* config/arm/vec-common.md: ... here.
  
! 2021-01-15  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	* config/arm/mve.md (mve_vshlq_<supf><mode>): Move to
! 	vec-commond.md.
! 	* config/arm/neon.md (vashl<mode>3): Delete.
! 	* config/arm/vec-common.md (mve_vshlq_<supf><mode>): New.
! 	(vasl<mode>3): New expander.
  
! 2021-01-15  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98685
! 	* tree-vect-slp.c (vect_schedule_slp_node): Refactor handling
! 	of vector extern defs.
  
! 2021-01-14  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR jit/98586
! 	* diagnostic.c (diagnostic_kind_text): Break out this array
  	from...
! 	(diagnostic_build_prefix): ...here.
! 	(fancy_abort): Detect when diagnostic_initialize has not yet been
! 	called and fall back to a minimal implementation of printing the
! 	ICE, rather than segfaulting in internal_error.
  
! 2021-01-14  David Malcolm  <dmalcolm@redhat.com>
  
! 	* diagnostic.c (diagnostic_initialize): Eliminate
! 	parseable_fixits_p in favor of initializing extra_output_kind from
! 	GCC_EXTRA_DIAGNOSTIC_OUTPUT.
! 	(convert_column_unit): New function, split out from...
! 	(diagnostic_converted_column): ...this.
! 	(print_parseable_fixits): Add "column_unit" and "tabstop" params.
! 	Use them to call convert_column_unit on the column values.
! 	(diagnostic_report_diagnostic): Eliminate conditional on
! 	parseable_fixits_p in favor of a switch statement on
! 	extra_output_kind, passing the appropriate values to the new
! 	params of print_parseable_fixits.
! 	(selftest::test_print_parseable_fixits_none): Update for new
! 	params of print_parseable_fixits.
! 	(selftest::test_print_parseable_fixits_insert): Likewise.
! 	(selftest::test_print_parseable_fixits_remove): Likewise.
! 	(selftest::test_print_parseable_fixits_replace): Likewise.
! 	(selftest::test_print_parseable_fixits_bytes_vs_display_columns):
! 	New.
! 	(selftest::diagnostic_c_tests): Call it.
! 	* diagnostic.h (enum diagnostics_extra_output_kind): New.
! 	(diagnostic_context::parseable_fixits_p): Delete field in favor
! 	of...
! 	(diagnostic_context::extra_output_kind): ...this new field.
! 	* doc/invoke.texi (Environment Variables): Add
! 	GCC_EXTRA_DIAGNOSTIC_OUTPUT.
! 	* opts.c (common_handle_option): Update handling of
! 	OPT_fdiagnostics_parseable_fixits for change to diagnostic_context
! 	fields.
  
! 2021-01-14  Tamar Christina  <tamar.christina@arm.com>
  
! 	* tree-vect-slp-patterns.c (class complex_operations_pattern,
! 	complex_operations_pattern::matches,
! 	complex_operations_pattern::recognize,
! 	complex_operations_pattern::build): New.
! 	(slp_patterns): Use it.
  
! 2021-01-14  Tamar Christina  <tamar.christina@arm.com>
  
! 	* internal-fn.def (COMPLEX_FMS, COMPLEX_FMS_CONJ): New.
! 	* optabs.def (cmls_optab, cmls_conj_optab): New.
! 	* doc/md.texi: Document them.
! 	* tree-vect-slp-patterns.c (class complex_fms_pattern,
! 	complex_fms_pattern::matches, complex_fms_pattern::recognize,
! 	complex_fms_pattern::build): New.
  
! 2021-01-14  Tamar Christina  <tamar.christina@arm.com>
  
! 	* internal-fn.def (COMPLEX_FMA, COMPLEX_FMA_CONJ): New.
! 	* optabs.def (cmla_optab, cmla_conj_optab): New.
! 	* doc/md.texi: Document them.
! 	* tree-vect-slp-patterns.c (vect_match_call_p,
! 	class complex_fma_pattern, vect_slp_reset_pattern,
! 	complex_fma_pattern::matches, complex_fma_pattern::recognize,
! 	complex_fma_pattern::build): New.
  
! 2021-01-14  Tamar Christina  <tamar.christina@arm.com>
  
! 	* internal-fn.def (COMPLEX_MUL, COMPLEX_MUL_CONJ): New.
! 	* optabs.def (cmul_optab, cmul_conj_optab): New.
! 	* doc/md.texi: Document them.
! 	* tree-vect-slp-patterns.c (vect_match_call_complex_mla,
! 	vect_normalize_conj_loc, is_eq_or_top, vect_validate_multiplication,
! 	vect_build_combine_node, class complex_mul_pattern,
! 	complex_mul_pattern::matches, complex_mul_pattern::recognize,
! 	complex_mul_pattern::build): New.
  
! 2021-01-14  Tamar Christina  <tamar.christina@arm.com>
  
! 	* tree-vect-slp.c (optimize_load_redistribution_1): New.
! 	(optimize_load_redistribution, vect_is_slp_load_node): New.
! 	(vect_match_slp_patterns): Use it.
  
! 2021-01-14  Tamar Christina  <tamar.christina@arm.com>
  
! 	* tree-vect-slp-patterns.c (complex_add_pattern::build):
! 	Elide nodes.
  
! 2021-01-14  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	* config/gcn/mkoffload.c (main): Create an offload image only in
! 	64-bit configurations.
  
! 2021-01-14  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/98667
! 	* config/i386/i386-options.c (ix86_option_override_internal):
! 	Issue an error for -fcf-protection with CF_BRANCH when compiling
! 	for 32-bit non-TARGET_CMOV targets.
  
! 2021-01-14  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/98671
! 	* config/i386/i386-options.c (ix86_valid_target_attribute_inner_p):
! 	Remove declaration and initialization of shadow variable "ret".
! 	(ix86_option_override_internal): Remove delcaration of
! 	shadow variable "i".  Redeclare shadowed variable to unsigned.
! 	* common/config/i386/i386-common.c (pta_size): Redeclare to unsigned.
! 	* config/i386/i386-builtins.c (get_builtin_code_for_version):
! 	Update for redeclaration.
! 	* config/i386/i386.h (pta_size): Ditto.
  
! 2021-01-14  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98674
! 	* tree-data-ref.c (base_supports_access_fn_components_p): New.
! 	(initialize_data_dependence_relation): For two bases without
! 	possible access fns resort to type size equality when determining
! 	shape compatibility.
  
! 2021-01-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
  
! 	PR target/66791
! 	* config/arm/arm_neon.h: Replace calls to __builtin_vcge* by
! 	<=, >= operators in vcle and vcge intrinsics respectively.
! 	* config/arm/arm_neon_builtins.def: Remove entry for
! 	vcge and vcgeu.
  
! 2021-01-14  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/98671
! 	* config/i386/i386-options.c (ix86_function_specific_save):
! 	Remove redundant assignment to opts->x_ix86_branch_cost.
! 	* config/i386/i386.c (ix86_prefetch_sse):
! 	Rename from x86_prefetch_sse.  Update all uses.
! 	* config/i386/i386.h: Update for rename.
! 	* config/i386/i386-options.h: Ditto.
  
! 2021-01-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/98670
! 	* config/i386/sse.md (*sse4_1_zero_extendv8qiv8hi2_3,
! 	*sse4_1_zero_extendv4hiv4si2_3, *sse4_1_zero_extendv2siv2di2_3):
! 	Use Bm instead of m for non-avx.  Add isa attribute.
  
! 2021-01-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/96688
! 	* match.pd (~(X >> Y) -> ~X >> Y): New simplification if
! 	~X can be simplified.
  
! 2021-01-14  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* tree-vect-stmts.c (vect_model_load_cost): Account for unused
! 	IFN_LOAD_LANES results.
  
! 2021-01-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (aarch64_<su>xtl<mode>):
! 	Define.
! 	(aarch64_xtn<mode>): Likewise.
! 	* config/aarch64/aarch64-simd-builtins.def (sxtl, uxtl, xtn):
! 	Define
! 	builtins.
! 	* config/aarch64/arm_neon.h (vmovl_s8): Reimplement using
! 	builtin.
! 	(vmovl_s16): Likewise.
! 	(vmovl_s32): Likewise.
! 	(vmovl_u8): Likewise.
! 	(vmovl_u16): Likewise.
! 	(vmovl_u32): Likewise.
! 	(vmovn_s16): Likewise.
! 	(vmovn_s32): Likewise.
! 	(vmovn_s64): Likewise.
! 	(vmovn_u16): Likewise.
! 	(vmovn_u32): Likewise.
! 	(vmovn_u64): Likewise.
  
! 2021-01-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (aarch64_<su>qxtn2<mode>_le):
! 	Define.
! 	(aarch64_<su>qxtn2<mode>_be): Likewise.
! 	(aarch64_<su>qxtn2<mode>): Likewise.
! 	* config/aarch64/aarch64-simd-builtins.def (sqxtn2, uqxtn2):
! 	Define builtins.
! 	* config/aarch64/iterators.md (SAT_TRUNC): Define code_iterator.
! 	(su): Handle ss_truncate and us_truncate.
! 	* config/aarch64/arm_neon.h (vqmovn_high_s16): Reimplement using
! 	builtin.
! 	(vqmovn_high_s32): Likewise.
! 	(vqmovn_high_s64): Likewise.
! 	(vqmovn_high_u16): Likewise.
! 	(vqmovn_high_u32): Likewise.
! 	(vqmovn_high_u64): Likewise.
  
! 2021-01-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (aarch64_xtn2<mode>_le):
! 	Define.
! 	(aarch64_xtn2<mode>_be): Likewise.
! 	(aarch64_xtn2<mode>): Likewise.
! 	* config/aarch64/aarch64-simd-builtins.def (xtn2): Define
! 	builtins.
! 	* config/aarch64/arm_neon.h (vmovn_high_s16): Reimplement using
! 	builtins.
! 	(vmovn_high_s32): Likewise.
! 	(vmovn_high_s64): Likewise.
! 	(vmovn_high_u16): Likewise.
! 	(vmovn_high_u32): Likewise.
! 	(vmovn_high_u64): Likewise.
  
! 2021-01-13  Stafford Horne  <shorne@gmail.com>
  
! 	* config/or1k/or1k.h (ASM_PREFERRED_EH_DATA_FORMAT): New macro.
  
! 2021-01-13  Stafford Horne  <shorne@gmail.com>
  
! 	* config/or1k/linux.h (TARGET_ASM_FILE_END): Define macro.
  
! 2021-01-13  Stafford Horne  <shorne@gmail.com>
  
! 	* config/or1k/or1k.h (TARGET_CPU_CPP_BUILTINS): Add builtin
! 	  define for __or1k_hard_float__.
  
! 2021-01-13  Stafford Horne  <shorne@gmail.com>
  
! 	* config/or1k/or1k.h (NO_PROFILE_COUNTERS): Define as 1.
! 	(PROFILE_HOOK): Define to call _mcount.
! 	(FUNCTION_PROFILER): Change from abort to no-op.
  
! 2021-01-13  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/96691
! 	* match.pd ((~X | C) ^ D -> (X | C) ^ (~D ^ C),
! 	(~X & C) ^ D -> (X & C) ^ (D ^ C)): New simplifications if
! 	(~D ^ C) or (D ^ C) can be simplified.
  
! 2021-01-13  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/92645
! 	* match.pd (BIT_FIELD_REF to conversion): Delay canonicalization
! 	until after vector lowering.
  
! 2021-01-13  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-sve.md (fnma<mode>4): Extend from SVE_FULL_I
! 	to SVE_I.
! 	(@aarch64_pred_fnma<mode>, cond_fnma<mode>, *cond_fnma<mode>_2)
! 	(*cond_fnma<mode>_4, *cond_fnma<mode>_any): Likewise.
  
! 2021-01-13  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-sve.md (fma<mode>4): Extend from SVE_FULL_I
! 	to SVE_I.
! 	(@aarch64_pred_fma<mode>, cond_fma<mode>, *cond_fma<mode>_2)
! 	(*cond_fma<mode>_4, *cond_fma<mode>_any): Likewise.
  
! 2021-01-13  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/92645
! 	* tree-vect-slp.c (vect_build_slp_tree_1): Relax supported
! 	BIT_FIELD_REF argument.
! 	(vect_build_slp_tree_2): Record the desired vector type
! 	on the external vector def.
! 	(vectorizable_slp_permutation): Handle required punning
! 	of existing vector defs.
  
! 2021-01-13  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* rtl-ssa/accesses.h (def_lookup): Fix order of comparison results.
  
! 2021-01-13  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/sh/sh.md (movsf_ie): Remove operands[2] test.
  
! 2021-01-13  Samuel Thibault  <samuel.thibault@ens-lyon.org>
  
! 	* config.gcc [$target == *-*-gnu*]: Enable
! 	'default_gnu_indirect_function'.
  
! 2021-01-13  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/95905
! 	* optabs.c (expand_vec_perm_const): Don't force v0 and v1 into
! 	registers before calling targetm.vectorize.vec_perm_const, only after
! 	that.
! 	* config/i386/i386-expand.c (ix86_vectorize_vec_perm_const): Handle
! 	two argument permutation when one operand is zero vector and only
! 	after that force operands into registers.
! 	* config/i386/sse.md (*avx2_zero_extendv16qiv16hi2_1): New
! 	define_insn_and_split pattern.
! 	(*avx512bw_zero_extendv32qiv32hi2_1): Likewise.
! 	(*avx512f_zero_extendv16hiv16si2_1): Likewise.
! 	(*avx2_zero_extendv8hiv8si2_1): Likewise.
! 	(*avx512f_zero_extendv8siv8di2_1): Likewise.
! 	(*avx2_zero_extendv4siv4di2_1): Likewise.
! 	* config/mips/mips.c (mips_vectorize_vec_perm_const): Force operands
! 	into registers.
! 	* config/arm/arm.c (arm_vectorize_vec_perm_const): Likewise.
! 	* config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Likewise.
! 	* config/ia64/ia64.c (ia64_vectorize_vec_perm_const): Likewise.
! 	* config/aarch64/aarch64.c (aarch64_vectorize_vec_perm_const): Likewise.
! 	* config/rs6000/rs6000.c (rs6000_vectorize_vec_perm_const): Likewise.
! 	* config/gcn/gcn.c (gcn_vectorize_vec_perm_const): Likewise.  Use std::swap.
  
! 2021-01-13  Martin Liska  <mliska@suse.cz>
  
! 	PR tree-optimization/98455
! 	* gimple-if-to-switch.cc (condition_info::record_phi_mapping):
! 	Record also virtual PHIs.
! 	(pass_if_to_switch::execute): Return TODO_cleanup_cfg only
! 	conditionally.
  
! 2021-01-13  Jonathan Wakely  <jwakely@redhat.com>
  
! 	* doc/invoke.texi (C++ Modules): Fix typos.
  
! 2021-01-13  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98640
! 	* tree-ssa-sccvn.c (visit_nary_op): Do not try to
! 	handle plus or minus from a truncated operand to be
! 	sign-extended.
  
! 2021-01-13  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/96938
! 	* config/i386/i386.md (*btr<mode>_1, *btr<mode>_2): New
! 	define_insn_and_split patterns.
! 	(splitter after *btr<mode>_2): New splitter.
  
! 2021-01-13  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/98652
! 	* cgraphunit.c (analyze_functions): Remove dead code.
  
! 2021-01-13  Qian Jianhua  <qianjh@cn.fujitsu.com>
  
! 	* config/aarch64/aarch64-cost-tables.h (a64fx_extra_costs): New.
! 	* config/aarch64/aarch64.c (a64fx_addrcost_table): New.
! 	(a64fx_regmove_cost, a64fx_vector_cost): New.
! 	(a64fx_tunings): Use the new added cost tables.
  
! 2021-01-13  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/95905
! 	* config/i386/predicates.md (pmovzx_parallel): New predicate.
! 	* config/i386/sse.md (*sse4_1_zero_extendv8qiv8hi2_3): New
! 	define_insn_and_split pattern.
! 	(*sse4_1_zero_extendv4hiv4si2_3): Likewise.
! 	(*sse4_1_zero_extendv2siv2di2_3): Likewise.
  
! 2021-01-13  Julian Brown  <julian@codesourcery.com>
  
! 	* config/gcn/gcn.c (gcn_conditional_register_usage): Remove dead code
! 	to fix v0 register.
  
! 2021-01-13  Julian Brown  <julian@codesourcery.com>
  
! 	* config/gcn/gcn.c (gcn_md_reorg): Fix case where EXEC reg is live
! 	on entry to a BB.
  
! 2021-01-13  Julian Brown  <julian@codesourcery.com>
  
! 	* config/gcn/gcn-valu.md (recip<mode>2<exec>, recip<mode>2): Use unspec
! 	for reciprocal-approximation instructions.
! 	(div<mode>3): Use fused multiply-accumulate operations for reciprocal
! 	refinement and division result.
! 	* config/gcn/gcn.md (UNSPEC_RCP): New unspec constant.
  
! 2021-01-13  Julian Brown  <julian@codesourcery.com>
  
! 	* config/gcn/gcn-valu.md (subdf): Rename to...
! 	(subdf3): This.
  
! 2021-01-12  Martin Liska  <mliska@suse.cz>
  
! 	* gcov.c (source_info::debug): Fix printf format for 32-bit hosts.
  
! 2021-01-12  Andrea Corallo  <andrea.corallo@arm.com>
  
! 	* function-abi.h: Fix typo.
  
! 2021-01-12  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	PR target/97875
! 	PR target/97875
! 	* config/arm/arm.h (ARM_HAVE_NEON_V8QI_LDST): New macro.
! 	(ARM_HAVE_NEON_V16QI_LDST, ARM_HAVE_NEON_V4HI_LDST): Likewise.
! 	(ARM_HAVE_NEON_V8HI_LDST, ARM_HAVE_NEON_V2SI_LDST): Likewise.
! 	(ARM_HAVE_NEON_V4SI_LDST, ARM_HAVE_NEON_V4HF_LDST): Likewise.
! 	(ARM_HAVE_NEON_V8HF_LDST, ARM_HAVE_NEON_V4BF_LDST): Likewise.
! 	(ARM_HAVE_NEON_V8BF_LDST, ARM_HAVE_NEON_V2SF_LDST): Likewise.
! 	(ARM_HAVE_NEON_V4SF_LDST, ARM_HAVE_NEON_DI_LDST): Likewise.
! 	(ARM_HAVE_NEON_V2DI_LDST): Likewise.
! 	(ARM_HAVE_V8QI_LDST, ARM_HAVE_V16QI_LDST): Likewise.
! 	(ARM_HAVE_V4HI_LDST, ARM_HAVE_V8HI_LDST): Likewise.
! 	(ARM_HAVE_V2SI_LDST, ARM_HAVE_V4SI_LDST, ARM_HAVE_V4HF_LDST): Likewise.
! 	(ARM_HAVE_V8HF_LDST, ARM_HAVE_V4BF_LDST, ARM_HAVE_V8BF_LDST): Likewise.
! 	(ARM_HAVE_V2SF_LDST, ARM_HAVE_V4SF_LDST, ARM_HAVE_DI_LDST): Likewise.
! 	(ARM_HAVE_V2DI_LDST): Likewise.
! 	* config/arm/mve.md (*movmisalign<mode>_mve_store): New pattern.
! 	(*movmisalign<mode>_mve_load): New pattern.
! 	* config/arm/neon.md (movmisalign<mode>): Move to ...
! 	* config/arm/vec-common.md: ... here.
  
! 2021-01-12  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR target/97969
! 	* lra-eliminations.c (eliminate_regs_in_insn): Add transformation
! 	of pattern 'plus (plus (hard reg, const), pseudo)'.
  
! 2021-01-12  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98550
! 	* tree-vect-slp.c (vect_record_max_nunits): Check whether
! 	the group size is a multiple of the vector element count.
! 	(vect_build_slp_tree_1): When we need to fail because
! 	the vector type choosen causes unrolling do so lazily
! 	without affecting matches only at the end to guide group splitting.
  
! 2021-01-12  Martin Liska  <mliska@suse.cz>
  
! 	PR c++/97284
! 	* optc-save-gen.awk: Compare also n_target_save vars with
! 	strcmp.
  
! 2021-01-12  Martin Liska  <mliska@suse.cz>
  
! 	* gcov.c (source_info::debug): New.
! 	(print_usage): Add --debug (-D) option.
! 	(process_args): Likewise.
! 	(generate_results): Call src->debug after
! 	accumulate_line_counts.
! 	(read_graph_file): Properly assign id for EXIT_BLOCK.
! 	* profile.c (branch_prob): Dump function body before it is
! 	instrumented.
  
! 2021-01-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/98629
! 	* tree-ssa-math-opts.c (arith_overflow_check_p): Don't update use_stmt
! 	unless returning non-zero.
  
! 2021-01-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/95731
! 	* tree-ssa-reassoc.c (optimize_range_tests_cmp_bitwise): Also optimize
! 	x < 0 && y < 0 && z < 0 into (x | y | z) < 0 for signed x, y, z.
! 	(optimize_range_tests): Call optimize_range_tests_cmp_bitwise
! 	only after optimize_range_tests_var_bound.
  
! 2021-01-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	* configure.ac: Ensure c/Make-lang.in comes first in @all_lang_makefrags@.
! 	* configure: Regenerated.
  
! 2021-01-12  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/98612
! 	* config/i386/i386-builtins.h (BUILTIN_DESC_SWAP_OPERANDS):
! 	Deleted.
! 	* config/i386/i386-expand.c (ix86_expand_sse_comi): Delete
! 	dead code.
  
! 2021-01-12  Alexandre Oliva  <oliva@adacore.com>
  
! 	* ssa-iterators.h (end_imm_use_stmt_traverse): Forward
! 	declare.
! 	(auto_end_imm_use_stmt_traverse): New struct.
! 	(FOR_EACH_IMM_USE_STMT): Use it.
! 	(BREAK_FROM_IMM_USE_STMT, RETURN_FROM_IMM_USE_STMT): Remove,
! 	along with uses...
! 	* gimple-ssa-strength-reduction.c: ... here, ...
! 	* graphite-scop-detection.c: ... here, ...
! 	* ipa-modref.c, ipa-pure-const.c, ipa-sra.c: ... here, ...
! 	* tree-predcom.c, tree-ssa-ccp.c: ... here, ...
! 	* tree-ssa-dce.c, tree-ssa-dse.c: ... here, ...
! 	* tree-ssa-loop-ivopts.c, tree-ssa-math-opts.c: ... here, ...
! 	* tree-ssa-phiprop.c, tree-ssa.c: ... here, ...
! 	* tree-vect-slp.c: ... and here, ...
! 	* doc/tree-ssa.texi: ... and the example here.
  
! 2021-01-11  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-sve.md (sdiv_pow2<mode>3): Extend from
! 	SVE_FULL_I to SVE_I.  Generate an UNSPEC_PRED_X.
! 	(*sdiv_pow2<mode>3): New pattern.
! 	(@cond_<sve_int_op><mode>): Extend from SVE_FULL_I to SVE_I.
! 	Wrap the ASRD in an UNSPEC_PRED_X.
! 	(*cond_<sve_int_op><mode>_2): Likewise.  Replace the UNSPEC_PRED_X
! 	predicate with a constant PTRUE, if it isn't already.
! 	(*cond_<sve_int_op><mode>_z): Replace with...
! 	(*cond_<sve_int_op><mode>_any): ...this new pattern.
  
! 2021-01-11  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-sve.md (*cond_bic<mode>_2): Extend from
! 	SVE_FULL_I to SVE_I.
! 	(*cond_bic<mode>_any): Likewise.
  
! 2021-01-11  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart)
! 	(@aarch64_pred_<MUL_HIGHPART:optab><mode>): Extend from SVE_FULL_I
! 	to SVE_I.
  
! 2021-01-11  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-sve.md (<su>abd<mode>_3): Extend from
! 	SVE_FULL_I to SVE_I.
! 	(*aarch64_cond_<su>abd<mode>_2): Likewise.
! 	(*aarch64_cond_<su>abd<mode>_any): Likewise.
! 	(@aarch64_pred_<su>abd<mode>): Likewise.  Use UNSPEC_PRED_X
! 	for the max and min but not for the minus.
! 	(*aarch64_cond_<su>abd<mode>_3): New pattern.
  
! 2021-01-11  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/iterators.md (SVE_24I): New iterator.
! 	* config/aarch64/aarch64-sve.md (*aarch64_adr<mode>_shift): Extend from
! 	SVE_FULL_SDI to SVE_24I.  Use containers rather than elements.
  
! 2021-01-11  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-sve.md (@cond_<SVE_INT_BINARY:optab><mode>)
! 	(*cond_<SVE_INT_BINARY:optab><mode>_2): Extend from SVE_FULL_I
! 	to SVE_I.
! 	(*cond_<SVE_INT_BINARY:optab><mode>_3): Likewise.
! 	(*cond_<SVE_INT_BINARY:optab><mode>_any): Likewise.
! 	(*cond_<SVE_INT_BINARY:optab><mode>_2_const): Likewise.
! 	(*cond_<SVE_INT_BINARY:optab><mode>_any_const): Likewise.
  
! 2021-01-11  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-sve.md (<SVE_INT_BINARY_IMM:optab><mode>3)
! 	(@aarch64_pred_<SVE_INT_BINARY_IMM:optab><mode>)
! 	(*post_ra_<SVE_INT_BINARY_IMM:optab><mode>3): Extend from SVE_FULL_I
! 	to SVE_I.
  
! 2021-01-11  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-sve.md (<ASHIFT:optab><mode>3)
! 	(v<ASHIFT:optab><mode>3, @aarch64_pred_<optab><mode>)
! 	(*post_ra_v<ASHIFT:optab><mode>3): Extend from SVE_FULL_I to SVE_I.
  
! 2021-01-11  Martin Liska  <mliska@suse.cz>
  
! 	PR jit/98615
! 	* symtab-clones.h (clone_info::release): Release
! 	symtab::m_clones with ggc_delete as it's a GGC memory.
  
! 2021-01-11  Matthias Klose  <doko@ubuntu.com>
  
! 	* Makefile.in (LINK_PROGRESS): Show the link target.
  
! 2021-01-11  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/91403
! 	* tree-vect-data-refs.c (vect_analyze_group_access_1): Cap
! 	single-element interleaving group size at 4096 elements.
  
! 2021-01-11  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98526
! 	* tree-vect-loop.c (vect_model_reduction_cost): Remove costing
! 	of the actual reduction op for the regular case.
! 	(vectorizable_reduction): Cost the stmts
! 	vect_transform_reduction produces here.
  
! 2021-01-11  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	* tree-ssa-forwprop.c (simplify_vector_constructor): For
! 	big-endian, use UNPACK[_FLOAT]_HI.
  
! 2021-01-11  Tamar Christina  <tamar.christina@arm.com>
  
! 	* tree-vect-slp-patterns.c (class complex_pattern,
! 	class complex_add_pattern): Add parameters to matches.
! 	(complex_add_pattern::build): Free memory.
! 	(complex_add_pattern::matches): Move validation end of match.
! 	(complex_add_pattern::recognize): Likewise.
  
! 2021-01-11  Tamar Christina  <tamar.christina@arm.com>
  
! 	* tree-vect-slp-patterns.c (linear_loads_p): Fix externals.
  
! 2021-01-11  Tamar Christina  <tamar.christina@arm.com>
  
! 	* tree-vect-slp-patterns.c (is_linear_load_p): Fix ambiguity.
  
! 2021-01-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/95867
! 	* tree-ssa-math-opts.h: New header.
! 	* tree-ssa-math-opts.c: Include tree-ssa-math-opts.h.
! 	(powi_as_mults): No longer static.  Use build_one_cst instead of
! 	build_real.  Formatting fix.
! 	* tree-ssa-reassoc.c: Include tree-ssa-math-opts.h.
! 	(attempt_builtin_powi): Handle multiplication reassociation without
! 	powi_fndecl using powi_as_mults.
! 	(reassociate_bb): For integral types don't require
! 	-funsafe-math-optimizations to call attempt_builtin_powi.
  
! 2021-01-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/95852
! 	* tree-ssa-math-opts.c (maybe_optimize_guarding_check): Change
! 	mul_stmts parameter type to vec<gimple *> &.  Before cond_stmt
! 	allow in the bb any of the stmts in that vector, div_stmt and
! 	up to 3 cast stmts.
! 	(arith_cast_equal_p): New function.
! 	(arith_overflow_check_p): Add cast_stmt argument, handle signed
! 	multiply overflow checks.
! 	(match_arith_overflow): Adjust caller.  Handle signed multiply
! 	overflow checks.
  
! 2021-01-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/95852
! 	* tree-ssa-math-opts.c (maybe_optimize_guarding_check): New function.
! 	(uaddsub_overflow_check_p): Renamed to ...
! 	(arith_overflow_check_p): ... this.  Handle also multiplication
! 	with overflow check.
! 	(match_uaddsub_overflow): Renamed to ...
! 	(match_arith_overflow): ... this.  Add cfg_changed argument.  Handle
! 	also multiplication with overflow check.  Adjust function comment.
! 	(math_opts_dom_walker::after_dom_children): Adjust callers.  Call
! 	match_arith_overflow also for MULT_EXPR.
  
! 2021-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/arm_neon.h (vmovl_s8): Reimplement using
! 	__builtin_convertvector.
! 	(vmovl_s16): Likewise.
! 	(vmovl_s32): Likewise.
! 	(vmovl_u8): Likewise.
! 	(vmovl_u16): Likewise.
! 	(vmovl_u32): Likewise.
! 	(vmovn_s16): Likewise.
! 	(vmovn_s32): Likewise.
! 	(vmovn_s64): Likewise.
! 	(vmovn_u16): Likewise.
! 	(vmovn_u32): Likewise.
! 	(vmovn_u64): Likewise.
  
! 2021-01-11  Martin Liska  <mliska@suse.cz>
  
! 	* gimple-if-to-switch.cc (struct condition_info): Use auto_var.
! 	(if_chain::is_beneficial): Delete clusters
! 	(find_conditions): Make second argument of conditions_in_bbs a
! 	pointer so that we control over it's lifetime.
! 	(pass_if_to_switch::execute): Delete them.
  
! 2021-01-11  Kewen Lin  <linkw@linux.ibm.com>
  
! 	* ira.c (move_unallocated_pseudos): Check other_reg and skip if
! 	it isn't set.
  
! 2021-01-09  Maciej W. Rozycki  <macro@linux-mips.org>
  
! 	* config/vax/vax.md (cc): Remove mode attribute.
! 	(subst_<cc>, subst_f<cc>): Rename to...
! 	(subst_<mode>, subst_f<VAXccnz:mode>): ... these respectively.
! 	(*cbranch<VAXint:mode>4_<VAXcc:mode>): Update for `cc' removal.
! 	(*cbranch<VAXfp:mode>4_<VAXccnz:mode>): Likewise.
! 	(*branch_<mode>, *branch_<mode>_reversed): Likewise.
  
! 2021-01-09  Maciej W. Rozycki  <macro@linux-mips.org>
  
! 	* config/vax/vax.md (subst_f<cc>): Add mode to operands and
! 	`const_double_zero'.
  
! 2021-01-09  Maciej W. Rozycki  <macro@linux-mips.org>
  
! 	* config/pdp11/pdp11.md (PDPfp): New mode iterator.
! 	(fcc_cc, fcc_ccnz): Use it.  Add mode to `const_double_zero' and
! 	operands.
  
! 2021-01-09  Maciej W. Rozycki  <macro@linux-mips.org>
  
! 	* genemit.c (gen_exp) <CONST_DOUBLE>: Handle `const_double_zero'
! 	rtx.
! 	* read-rtl.c (rtx_reader::read_rtx_code): Handle machine mode
! 	with `const_double_zero'.
! 	* doc/rtl.texi (Constant Expression Types): Document it.
  
! 2021-01-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/98556
! 	* tree-cfg.c (verify_gimple_assign_binary): Allow lhs of
! 	POINTER_DIFF_EXPR to be any integral type.
  
! 2021-01-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/98603
! 	* function.c (instantiate_virtual_regs_in_insn): For asm goto
! 	with impossible constraints, drop all SETs, CLOBBERs, drop PARALLEL
! 	if any, set ASM_OPERANDS mode to VOIDmode and change
! 	ASM_OPERANDS_OUTPUT_CONSTRAINT and ASM_OPERANDS_OUTPUT_IDX.
  
! 2021-01-09  Alexandre Oliva  <oliva@gnu.org>
  
! 	PR debug/97714
! 	* final.c (notice_source_line): Narrow down the condition to
! 	skip a line-0 marker.
  
! 2021-01-08  Sergei Trofimovich  <siarheit@google.com>
  
! 	* ipa-modref.c (merge_call_side_effects): Fix
! 	linebreak split by reordering two print calls.
  
! 2021-01-08  Ilya Leoshkevich  <iii@linux.ibm.com>
  
! 	* config/s390/vector.md (*tf_to_fprx2_0): Rename from
! 	"*mov_tf_to_fprx2_0" for consistency, fix constraint.
! 	(*tf_to_fprx2_1): Rename from "*mov_tf_to_fprx2_1" for
! 	consistency, fix constraint.
  
! 2021-01-08  Ilya Leoshkevich  <iii@linux.ibm.com>
  
! 	* config/s390/s390-c.c (s390_def_or_undef_macro): Accept
! 	callables instead of mask values.
! 	(struct target_flag_set_p): New predicate.
! 	(s390_cpu_cpp_builtins_internal): Define or undefine
! 	__LONG_DOUBLE_VX__ macro.
  
! 2021-01-08  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/98482
! 	* config/i386/i386.c (x86_function_profiler): Use R10 and R11
! 	to call mcount in large model with PIC for NO_PROFILE_COUNTERS
! 	targets.
  
! 2021-01-08  Richard Biener  <rguenther@suse.de>
  
! 	* tree-ssa-sccvn.c (pass_fre::execute): Reset the SCEV hash table.
  
! 2021-01-08  Richard Biener  <rguenther@suse.de>
  
! 	* tree-vect-slp.c (scalar_stmts_to_slp_tree_map_t): Fix.
! 	(vect_build_slp_tree): On cache hit release the matched
! 	scalar stmts vector.
! 	* tree-vect-stmts.c (vectorizable_store): Properly free
! 	vec_oprnds before possibly gathering them again.
  
! 2021-01-08  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98544
! 	* tree-vect-slp.c (vect_optimize_slp): Always materialize
! 	permutes at a permute node.
  
! 2021-01-08  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/98482
! 	* config/i386/i386.c (x86_function_profiler): Use R10 to call
! 	mcount in large model.  Sorry for large model with PIC.
  
! 2021-01-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/98585
! 	* config/i386/i386.opt (ix86_cmodel, ix86_incoming_stack_boundary_arg,
! 	ix86_pmode, ix86_preferred_stack_boundary_arg, ix86_regparm,
! 	ix86_veclibabi_type): Remove x_ prefix, use TargetVariable instead of
! 	TargetSave and initialize for variables with enum types.
! 	(mfentry, mstack-protector-guard-reg=, mstack-protector-guard-offset=,
! 	mstack-protector-guard-symbol=): Add Save.
! 	* config/i386/i386-options.c (ix86_function_specific_save,
! 	ix86_function_specific_restore): Don't save or restore x_ix86_cmodel,
! 	x_ix86_incoming_stack_boundary_arg, x_ix86_pmode,
! 	x_ix86_preferred_stack_boundary_arg, x_ix86_regparm,
! 	x_ix86_veclibabi_type.
  
! 2021-01-08  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-sve.md (*cnot<mode>): Extend from
! 	SVE_FULL_I to SVE_I.
! 	(*cond_cnot<mode>_2, *cond_cnot<mode>_any): Likewise.
  
! 2021-01-08  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-sve.md (*cond_uxt<mode>_2): Extend from
! 	SVE_FULL_I to SVE_I.
! 	(*cond_uxt<mode>_any): Likewise.
  
! 2021-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/iterators.md (Vwhalf): New iterator.
! 	* config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>_3):
! 	Rename to...
! 	(aarch64_<sur>adalp<mode>): ... This.  Make more
! 	builtin-friendly.
! 	(<sur>sadv16qi): Adjust callsite of the above.
! 	* config/aarch64/aarch64-simd-builtins.def (sadalp, uadalp): New
! 	builtins.
! 	* config/aarch64/arm_neon.h (vpadal_s8): Reimplement using
! 	builtins.
! 	(vpadal_s16): Likewise.
! 	(vpadal_u8): Likewise.
! 	(vpadal_u16): Likewise.
! 	(vpadalq_s8): Likewise.
! 	(vpadalq_s16): Likewise.
! 	(vpadalq_s32): Likewise.
! 	(vpadalq_u8): Likewise.
! 	(vpadalq_u16): Likewise.
! 	(vpadalq_u32): Likewise.
  
! 2021-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>_3):
! 	Rename to...
! 	(aarch64_<su>abd<mode>): ... This.
! 	(<sur>sadv16qi): Adjust callsite of the above.
! 	* config/aarch64/aarch64-simd-builtins.def (sabd, uabd): Define
! 	builtins.
! 	* config/aarch64/arm_neon.h (vabd_s8): Reimplement using
! 	builtin.
! 	(vabd_s16): Likewise.
! 	(vabd_s32): Likewise.
! 	(vabd_u8): Likewise.
! 	(vabd_u16): Likewise.
! 	(vabd_u32): Likewise.
! 	(vabdq_s8): Likewise.
! 	(vabdq_s16): Likewise.
! 	(vabdq_s32): Likewise.
! 	(vabdq_u8): Likewise.
! 	(vabdq_u16): Likewise.
! 	(vabdq_u32): Likewise.
  
! 2021-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd-builtins.def (saba, uaba): Define
! 	builtins.
! 	* config/aarch64/arm_neon.h (vaba_s8): Implement using builtin.
! 	(vaba_s16): Likewise.
! 	(vaba_s32): Likewise.
! 	(vaba_u8): Likewise.
! 	(vaba_u16): Likewise.
! 	(vaba_u32): Likewise.
! 	(vabaq_s8): Likewise.
! 	(vabaq_s16): Likewise.
! 	(vabaq_s32): Likewise.
! 	(vabaq_u8): Likewise.
! 	(vabaq_u16): Likewise.
! 	(vabaq_u32): Likewise.
  
! 2021-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (aba<mode>_3): Rename to...
! 	(aarch64_<su>aba<mode>): ... This.  Handle uaba as well.
! 	Change RTL pattern to match.
  
! 2021-01-08  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* common/config/riscv/riscv-common.c (riscv_current_subset_list): New.
! 	* config/riscv/riscv-c.c (riscv-subset.h): New.
! 	(INCLUDE_STRING): Define.
! 	(riscv_cpu_cpp_builtins): Add new style architecture extension
! 	test macros.
! 	* config/riscv/riscv-subset.h (riscv_subset_list::begin): New.
! 	(riscv_subset_list::end): New.
! 	(riscv_current_subset_list): New.
  
! 2021-01-08  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* common/config/riscv/riscv-common.c (RISCV_DONT_CARE_VERSION):
! 	Move to riscv-subset.h.
! 	(struct riscv_subset_t): Ditto.
! 	(class riscv_subset_list): Ditto.
! 	* config/riscv/riscv-subset.h (RISCV_DONT_CARE_VERSION): Move
! 	from riscv-common.c.
! 	(struct riscv_subset_t): Ditto.
! 	(class riscv_subset_list): Ditto.
! 	* config/riscv/t-riscv ($(common_out_file)): Add file
! 	dependency.
  
! 2021-01-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/98567
! 	* config/i386/i386.md (*bmi_blsi_<mode>_cmp, *bmi_blsi_<mode>_ccno):
! 	New define_insn patterns.
  
! 2021-01-07  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-sve.md (@cond_<SVE_INT_UNARY:optab><mode>)
! 	(*cond_<SVE_INT_UNARY:optab><mode>_2): Extend from SVE_FULL_I to SVE_I.
! 	(*cond_<SVE_INT_UNARY:optab><mode>_any): Likewise.
  
! 2021-01-07  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/98560
! 	* internal-fn.def (IFN_VCONDU, IFN_VCONDEQ): Use type vec_cond.
! 	* internal-fn.c (vec_cond_mask_direct): Get the data mode from
! 	argument 1.
! 	(vec_cond_direct): Likewise argument 2.
! 	(vec_condu_direct, vec_condeq_direct): Delete.
! 	(expand_vect_cond_optab_fn): Rename to...
! 	(expand_vec_cond_optab_fn): ...this, replacing old macro.
! 	(expand_vec_condu_optab_fn, expand_vec_condeq_optab_fn): Delete.
! 	(expand_vect_cond_mask_optab_fn): Rename to...
! 	(expand_vec_cond_mask_optab_fn): ...this, replacing old macro.
! 	(direct_vec_cond_mask_optab_supported_p): Treat the optab as a
! 	convert optab.
! 	(direct_vec_cond_optab_supported_p): Likewise.
! 	(direct_vec_condu_optab_supported_p): Delete.
! 	(direct_vec_condeq_optab_supported_p): Delete.
! 	* gimple-isel.cc: Include internal-fn.h.
! 	(gimple_expand_vec_cond_expr): Check that IFN_VCONDEQ is supported
! 	before using it.
  
! 2021-01-07  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/98560
! 	* gimple-isel.cc (gimple_expand_vec_cond_expr): If we fail to use
! 	IFN_VCOND{,U,EQ}, fall back on IFN_VCOND_MASK.
  
! 2021-01-07  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.md (insn): Merge from plusminus_insn, shift_insn,
! 	rotate_insn and optab code attributes.
! 	Update all uses to merged code attribute.
! 	* config/i386/sse.md: Update all uses to merged code attribute.
! 	* config/i386/mmx.md: Update all uses to merged code attribute.
  
! 2021-01-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/98568
! 	* gimple-ssa-store-merging.c (bswap_view_convert): New function.
! 	(bswap_replace): Use it.
  
! 2021-01-06  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/97978
! 	* lra-int.h (lra_hard_reg_split_p): New external.
! 	* lra.c (lra_hard_reg_split_p): New global.
! 	(lra): Set up lra_hard_reg_split_p after splitting a hard reg.
! 	* lra-assigns.c (lra_assign): Don't check allocation correctness
! 	after hard reg splitting.
  
! 2021-01-06  Martin Sebor  <msebor@redhat.com>
  
! 	PR c++/98305
! 	* builtins.c (new_delete_mismatch_p): New overload.
! 	(new_delete_mismatch_p (tree, tree)): Call it.
  
! 2021-01-06  Alexandre Oliva  <oliva@adacore.com>
  
! 	* Makefile.in (T_GLIMITS_H): New.
! 	(stmp-int-hdrs): Depend on it, use it.
! 	* config/t-vxworks (T_GLIMITS_H): Override it.
! 	(vxw-glimits.h): New.
  
! 2021-01-06  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98513
! 	* value-range.cc (intersect_ranges): Compare the upper bounds
! 	for the expected relation.
  
! 2021-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	Revert:
! 	2020-12-28  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/standards.texi (HSAIL): Remove section.
  
! 2021-01-05  Samuel Thibault  <samuel.thibault@ens-lyon.org>
  
! 	* configure: Re-generate.
  
! 2021-01-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	* doc/invoke.texi (-std=c++20): Adjust for the publication of
! 	ISO 14882:2020 standard.
! 	* doc/standards.texi: Likewise.
  
! 2021-01-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/94802
! 	* expr.h (maybe_optimize_sub_cmp_0): Declare.
! 	* expr.c: Include tree-pretty-print.h and flags.h.
! 	(maybe_optimize_sub_cmp_0): New function.
! 	(do_store_flag): Use it.
! 	* cfgexpand.c (expand_gimple_cond): Likewise.
  
! 2021-01-05  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* mux-utils.h (pointer_mux::m_ptr): Tweak description of contents.
! 	* rtlanal.c (simple_regno_set): Tweak description to clarify the
! 	RMW condition.
  
! 2021-01-05  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98516
! 	* tree-vect-slp.c (vect_optimize_slp): Permute the incoming
! 	lanes when materializing on a VEC_PERM node.
! 	(vectorizable_slp_permutation): Dump the permute properly.
  
! 2021-01-05  Richard Biener  <rguenther@suse.de>
  
! 	* tree-vect-slp.c (vect_slp_region): Move debug counter
! 	to cover individual subgraphs.
  
! 2021-01-05  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98428
! 	* tree-vect-slp.c (vect_build_slp_tree_1): Properly reject
! 	vector lane extracts for loop vectorization.
  
! 2021-01-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/98514
! 	* tree-ssa-reassoc.c (bb_rank): Change type from long * to
! 	int64_t *.
! 	(operand_rank): Change type from hash_map<tree, long> to
! 	hash_map<tree, int64_t>.
! 	(phi_rank): Change return type from long to int64_t.
! 	(loop_carried_phi): Change block_rank variable type from long to
! 	int64_t.
! 	(propagate_rank): Change return type, rank parameter type and
! 	op_rank variable type from long to int64_t.
! 	(find_operand_rank): Change return type from long to int64_t
! 	and change slot variable type from long * to int64_t *.
! 	(insert_operand_rank): Change rank parameter type from long to
! 	int64_t.
! 	(get_rank): Change return type and rank variable type from long to
! 	int64_t.  Use PRId64 instead of ld to print the rank.
! 	(init_reassoc): Change rank variable type from long to int64_t
! 	and adjust correspondingly bb_rank and operand_rank initialization.
  
! 2021-01-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/96928
! 	* tree-ssa-phiopt.c (xor_replacement): New function.
! 	(tree_ssa_phiopt_worker): Call it.
  
! 2021-01-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/96930
! 	* match.pd ((A / (1 << B)) -> (A >> B)): If A is extended
! 	from narrower value which has the same type as 1 << B, perform
! 	the right shift on the narrower value followed by extension.
  
! 2021-01-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/96239
! 	* gimple-ssa-store-merging.c (maybe_optimize_vector_constructor): New
  	function.
! 	(get_status_for_store_merging): Don't return BB_INVALID for blocks
! 	with potential bswap optimizable CONSTRUCTORs.
! 	(pass_store_merging::execute): Optimize vector CONSTRUCTORs with bswap
! 	if possible.
  
! 2021-01-05  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98381
! 	* tree.c (vector_element_bits): Properly compute bool vector
! 	element size.
! 	* tree-vect-loop.c (vectorizable_live_operation): Properly
! 	compute the last lane bit offset.
  
! 2021-01-05  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/98522
! 	* config/i386/sse.md (sse_cvtps2pi): Redefine as define_insn_and_split.
! 	Clear the top 64 bytes of the input XMM register.
! 	(sse_cvttps2pi): Ditto.
  
! 2021-01-05  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/98521
! 	* config/i386/xopintrin.h (_mm256_cmov_si256): New.
  
! 2021-01-05  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/98495
! 	* config/i386/xmmintrin.h (_mm_extract_pi16): Cast to unsigned
! 	short first.
  
! 2021-01-05  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc.md (maddsidi4_split): Use ACC_REG_FIRST.
! 	(umaddsidi4_split): Likewise.
  
! 2021-01-05  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/98461
! 	* config/i386/sse.md (*sse2_pmovskb_zexthisi): New
! 	define_insn_and_split for zero_extend of subreg HI of pmovskb
! 	result.
! 	(*sse2_pmovskb_zexthisi): Add new combine splitters for
! 	zero_extend of not of subreg HI of pmovskb result.
  
! 2021-01-05  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/97269
! 	* explow.c (convert_memory_address_addr_space_1): Handle UNSPECs
! 	nested in CONSTs.
! 	* config/aarch64/aarch64.c (aarch64_expand_mov_immediate): Use
! 	convert_memory_address to convert symbolic immediates to ptr_mode
! 	before forcing them to memory.
  
! 2021-01-05  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/97144
! 	* recog.c (constrain_operands): Initialize matching_operand
! 	for each alternative, rather than only doing it once.
  
! 2021-01-05  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/98403
! 	* rtl-ssa/changes.cc (function_info::finalize_new_accesses): Explain
! 	why we don't remove call clobbers.
! 	(function_info::apply_changes_to_insn): Don't attempt to add
! 	call clobbers here.
  
! 2021-01-05  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/98371
! 	* tree-vect-loop.c (vect_reanalyze_as_main_loop): New function.
! 	(vect_analyze_loop): If an epilogue loop appears to be cheaper
! 	than the main loop, re-analyze it as a main loop before adopting
! 	it as a main loop.
  
! 2021-01-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	PR c++/98316
! 	* configure.ac (NETLIBS): Determine using AX_LIB_SOCKET_NSL.
! 	* aclocal.m4, configure: Regenerate.
! 	* Makefile.in (NETLIBS): Define.
! 	(BACKEND): Remove $(CODYLIB).
  
! 2021-01-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/98334
! 	* simplify-rtx.c (simplify_context::simplify_binary_operation_1):
! 	Optimize (X - 1) * Y + Y to X * Y or (X + 1) * Y - Y to X * Y.
  
! 2021-01-05  Bernd Edlinger  <bernd.edlinger@hotmail.de>
  
! 	* tree-inline.c (expand_call_inline): Restore input_location.
! 	Return result from recursive call.
  
! 2021-01-04  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/95401
! 	* config/aarch64/aarch64-sve-builtins.cc
! 	(gimple_folder::load_store_cookie): Use bits rather than bytes
! 	for the alignment argument to IFN_MASK_LOAD and IFN_MASK_STORE.
! 	* gimple-fold.c (gimple_fold_mask_load_store_mem_ref): Likewise.
! 	* tree-vect-stmts.c (vectorizable_store): Likewise.
! 	(vectorizable_load): Likewise.
  
! 2021-01-04  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98308
! 	* tree-vect-stmts.c (vectorizable_load): Set invariant mask
! 	SLP vectype.
  
! 2021-01-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/95771
! 	* tree-ssa-loop-niter.c (number_of_iterations_popcount): Handle types
! 	with precision smaller than int's precision and types with precision
! 	twice as large as long long.  Formatting fixes.
  
! 2021-01-04  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98464
! 	* tree-ssa-sccvn.c (vn_valueize_for_srt): Rename from ...
! 	(vn_valueize_wrapper): ... this.  Temporarily adjust vn_context_bb.
! 	(process_bb): Adjust.
  
! 2021-01-04  Matthew Malcomson  <matthew.malcomson@arm.com>
  
! 	PR other/98437
! 	* doc/invoke.texi (-fsanitize=address): Fix wording describing
! 	clash with -fsanitize=hwaddress.
  
! 2021-01-04  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98282
! 	* tree-ssa-sccvn.c (vn_get_stmt_kind): Classify tcc_reference on
! 	invariants as VN_NARY.
  
! 2021-01-04  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/89057
! 	* config/aarch64/aarch64-simd.md (aarch64_combine<mode>): Accept
! 	aarch64_simd_reg_or_zero for operand 2.  Use the combinez patterns
! 	to handle zero operands.
  
! 2021-01-04  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.c (offset_6bit_signed_scaled_p): New function.
! 	(offset_6bit_unsigned_scaled_p): Fix typo in comment.
! 	(aarch64_sve_prefetch_operand_p): Accept MUL VLs in the range
! 	[-32, 31].
  
! 2021-01-04  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98393
! 	* tree-vect-slp.c (vect_build_slp_tree): Properly zero matches
! 	when hitting the limit.
  
! 2021-01-04  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/98291
! 	* tree-vect-loop.c (vectorizable_reduction): Bypass
! 	associativity check for SLP reductions with VF 1.
  
! 2021-01-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/96782
! 	* match.pd (x == ~x -> false, x != ~x -> true): New simplifications.
  
! 2021-01-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>
  
! 	* collect-utils.c (collect_execute): Check dumppfx.
! 	* collect2.c (maybe_run_lto_and_relink, do_link): Pass atsuffix
! 	to collect_execute.
! 	(do_link): Add new parameter atsuffix.
! 	(main): Handle -dumpdir option.  Skip one argument for
! 	-o, -isystem and -B options.
! 	* gcc.c (make_at_file): New helper function.
! 	(close_at_file): Use it.
  
! 2021-01-02  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* config/darwin.h (MIN_LD64_NO_COAL_SECTS): Adjust.
! 	Amend handling for LD64_VERSION fallback defaults.
  
! 2021-01-02  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* config.gcc: Compute default version information
! 	from the configured target.  Likewise defaults for
! 	ld64.
! 	* config/darwin10.h: Removed.
! 	* config/darwin12.h: Removed.
! 	* config/darwin9.h: Removed.
! 	* config/rs6000/darwin8.h: Removed.
  
! 2021-01-02  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
  
! 2021-01-02  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* config/darwin9.h (STACK_CHECK_STATIC_BUILTIN): Move from here..
! 	* config/darwin.h (STACK_CHECK_STATIC_BUILTIN): .. to here.
  
! 2021-01-02  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Move from
! 	here...
! 	* config/darwin.h (LINK_GCC_C_SEQUENCE_SPEC): ... to here.
  
! 2021-01-02  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Move the spec
! 	for the Darwin10 unwinder stub from here ...
! 	* config/darwin.h (LINK_COMMAND_SPEC_A): ... to here.
  
! 2021-01-02  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* config/darwin.h (DSYMUTIL_SPEC): Default to DWARF
! 	(ASM_DEBUG_SPEC):Only define if the assembler supports
! 	stabs.
! 	(PREFERRED_DEBUGGING_TYPE): Default to DWARF.
! 	(DARWIN_PREFER_DWARF): Define.
! 	* config/darwin9.h (PREFERRED_DEBUGGING_TYPE): Remove.
! 	(DARWIN_PREFER_DWARF): Likewise
! 	(DSYMUTIL_SPEC): Likewise.
! 	(COLLECT_RUN_DSYMUTIL): Likewise.
! 	(ASM_DEBUG_SPEC): Likewise.
! 	(ASM_DEBUG_OPTION_SPEC): Likewise.
  
! 2021-01-02  Jan Hubicka  <jh@suse.cz>
  
! 	* cfg.c (free_block): ggc_free bb.
  
! 2021-01-01  Jakub Jelinek  <jakub@redhat.com>
  
  	* gcc.c (process_command): Update copyright notice dates.
  	* gcov-dump.c (print_version): Ditto.
***************
*** 21995,22015 ****
  	* doc/install.texi: Ditto.
  	* doc/invoke.texi: Ditto.
  
! 2020-01-01  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	* ipa.c (walk_polymorphic_call_targets): Fix updating of overall
! 	summary.
  
! 2020-01-01  Jakub Jelinek  <jakub@redhat.com>
  
- 	PR tree-optimization/93098
- 	* match.pd (popcount): For shift amounts, use integer_onep
- 	or wi::to_widest () == cst instead of tree_to_uhwi () == cst
- 	tests.  Make sure that precision is power of two larger than or equal
- 	to 16.  Ensure shift is never negative.  Use HOST_WIDE_INT_UC macro
- 	instead of ULL suffixed constants.  Formatting fixes.
  
! Copyright (C) 2020 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 6410,6421 ----
  	* doc/install.texi: Ditto.
  	* doc/invoke.texi: Ditto.
  
! 2021-01-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	* ChangeLog-2020: Rotate ChangeLog.  New file.
  
  
! Copyright (C) 2021 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-10.3.0/gcc/ChangeLog-2020 gcc-11.1.0/gcc/ChangeLog-2020
*** gcc-10.3.0/gcc/ChangeLog-2020	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ChangeLog-2020	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,39860 ----
+ 2020-12-31  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/98302
+ 	* tree-vect-patterns.c (vect_determine_precisions_from_users): Make
+ 	sure that the precision remains greater than the shift count.
+ 
+ 2020-12-31  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/94994
+ 	* tree-vect-data-refs.c (vect_vfa_align): Use dr_alignment.
+ 
+ 2020-12-31  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/98214
+ 	* genmodes.c (emit_insn_modes_h): Emit a definition of CONST_MODE_MASK.
+ 	(emit_mode_mask): Treat mode_mask_array as non-constant if adj_nunits.
+ 	(emit_mode_adjustments): Update GET_MODE_MASK when updating
+ 	GET_MODE_NUNITS.
+ 	* machmode.h (mode_mask_array): Use CONST_MODE_MASK.
+ 
+ 2020-12-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/94802
+ 	* match.pd (clz(X) == 0 -> (int)X < 0): New simplification.
+ 	(clz(X) == (prec-1) -> X == 1): Likewise.
+ 
+ 2020-12-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/94785
+ 	* match.pd ((-(X < 0) | 1) * X -> abs (X)): New simplification.
+ 	((-(X < 0) | 1U) * X -> absu (X)): Likewise.
+ 
+ 2020-12-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/98474
+ 	* wide-int.cc (wi::to_mpz): If wide_int has MSB set, but type
+ 	is unsigned and excess negative, append set bits after len until
+ 	precision.
+ 
+ 2020-12-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/98206
+ 	* fold-const.c: Include asan.h.
+ 	(fold_unary_loc): Don't optimize (ptr_type) (((ptr_type2) x) p+ y)
+ 	into ((ptr_type) x) p+ y if sanitizing alignment in GENERIC and
+ 	ptr_type points to type with higher alignment than ptr_type2.
+ 
+ 2020-12-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/56719
+ 	* tree-ssa-reassoc.c (optimize_range_tests_cmp_bitwise): Also optimize
+ 	x < C && y < C && z < C when C is a power of two constant into
+ 	(x | y | z) < C.
+ 
+ 2020-12-30  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md: Remove unnecessary clobbers
+ 	from combine splitters.
+ 
+ 2020-12-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/98461
+ 	* config/i386/sse.md (<sse2_avx2>_pmovmskb): Add splitters
+ 	for pmovmskb of NOT vector.
+ 
+ 2020-12-29  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (maddsidi4_split): Skip macd gen, use mac insn
+ 	instead.
+ 	(macd): Update register letters.
+ 	(umaddsidi4_split): Skip macdu gen, use macu insn instead.
+ 	(macdu): Update register letters.
+ 
+ 2020-12-29  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_secondary_reload): Flip if-condition
+ 	predicates.
+ 
+ 2020-12-29  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.h (REGNO_OK_FOR_BASE_P): Check if defined
+ 	reg_renumber.
+ 
+ 2020-12-29  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (prepare_move_operands): Use a temporary
+ 	registers when we have cached mem-to-uncached mem moves.
+ 
+ 2020-12-29  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (movdi_insn): Update pattern, no predicated
+ 	vadd2 usage.
+ 	(movdf_insn): Likewise.
+ 	* config/arc/simdext.md (movVEC_insn): Likewise.
+ 
+ 2020-12-29  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386-expand.c (ix86_gen_TWO52): Use REAL_MODE_FORMAT
+ 	to determine number of mantissa bits.  Use real_2expN instead
+ 	of real_ldexp.
+ 	(ix86_expand_rint): Use copy_to_reg.
+ 	(ix86_expand_floorceildf_32): Ditto.
+ 	(ix86_expand_truncdf_32): Ditto.
+ 	(ix86_expand_rounddf_32): Ditto.
+ 	(ix86_expand_floorceil): Use copy_to_reg and int_mode_for_mode.
+ 	(ix86_expand_trunc): Ditto.
+ 	(ix86_expand_round): Ditto.
+ 
+ 2020-12-28  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/standards.texi (HSAIL): Remove section.
+ 
+ 2020-12-28  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/96793
+ 	* config/i386/i386-expand.c (ix86_expand_rint):
+ 	Remove the sign of the intermediate value for flag_rounding_math.
+ 
+ 2020-12-28  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386-expand.c (ix86_expand_trunc): Use
+ 	existing temporary register to avoid a call to force_reg.
+ 
+ 2020-12-28  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	* config/i386/i386.md (optab): New code attr.
+ 	* config/i386/sse.md (<code>v32qiv32hi2): Rename to ...
+ 	(<optab>v32qiv32hi2) ... this.
+ 	(<code>v16qiv16hi2): Likewise.
+ 	(<code>v8qiv8hi2): Likewise.
+ 	(<code>v16qiv16si2): Likewise.
+ 	(<code>v8qiv8si2): Likewise.
+ 	(<code>v4qiv4si2): Likewise.
+ 	(<code>v16hiv16si2): Likewise.
+ 	(<code>v8hiv8si2): Likewise.
+ 	(<code>v4hiv4si2): Likewise.
+ 	(<code>v8qiv8di2): Likewise.
+ 	(<code>v4qiv4di2): Likewise.
+ 	(<code>v2qiv2di2): Likewise.
+ 	(<code>v8hiv8di2): Likewise.
+ 	(<code>v4hiv4di2): Likewise.
+ 	(<code>v2hiv2di2): Likewise.
+ 	(<code>v8siv8di2): Likewise.
+ 	(<code>v4siv4di2): Likewise.
+ 	(<code>v2siv2di2): Likewise.
+ 
+ 2020-12-27  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/analyzer.texi (Analyzer Internals): Find a new source for
+ 	the "A Memory Model for Static Analysis of C Programs" paper.
+ 
+ 2020-12-25  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/invoke.texi (C++ Module Mapper): Fix reference to libcody.
+ 
+ 2020-12-24  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* configure.ac: Add gxx-libcxx-include-dir handled
+ 	in the same way as the regular cxx header directory.
+ 	* Makefile.in: Regenerated.
+ 	* config.in: Likewise.
+ 	* configure: Likewise.
+ 	* cppdefault.c: Pick up libc++ headers if the option
+ 	is enabled.
+ 	* cppdefault.h (struct default_include): Amend comments
+ 	to reflect the extended use of the cplusplus field.
+ 	* incpath.c (add_standard_paths): Allow for multiple
+ 	c++ header include path variants.
+ 	* doc/invoke.texi: Document the -stdlib= option.
+ 
+ 2020-12-24  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/multilib-generator (arch_canonicalize): Call
+ 	decode for the subprocess return value.
+ 
+ 2020-12-23  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/98160
+ 	* builtins.c (warn_dealloc_offset): Avoid assuming calls are made
+ 	through declared functions and not pointers.
+ 
+ 2020-12-23  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c++/98413
+ 	* builtins.c (get_offset_range): Avoid non-integers/-pointers.
+ 
+ 2020-12-23  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin-driver.c (validate_macosx_version_min): Allow
+ 	MACOSX_DEPLOYMENT_TARGET=11.
+ 	(darwin_default_min_version): Adjust warning spelling to avoid
+ 	an apostrophe.
+ 
+ 2020-12-23  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/96793
+ 	* config/i386/i386-expand.c (ix86_expand_truncdf_32):
+ 	Remove the sign of the intermediate value for flag_rounding_math.
+ 
+ 2020-12-22  Qian Jianhua  <qianjh@cn.fujitsu.com>
+ 
+ 	* config/arm/types.md (define_attr "autodetect_type"): New.
+ 	(define_attr "type"): Subdivide alu_shift_imm.
+ 	* config/arm/common.md: New file.
+ 	* config/aarch64/predicates.md:Include common.md.
+ 	* config/arm/predicates.md:Include common.md.
+ 	* config/aarch64/aarch64.md (*add_<shift>_<mode>): Set autodetect_type.
+ 	(*add_<shift>_si_uxtw): Likewise.
+ 	(*sub_<shift>_<mode>): Likewise.
+ 	(*sub_<shift>_si_uxtw): Likewise.
+ 	(*neg_<shift>_<mode>2): Likewise.
+ 	(*neg_<shift>_si2_uxtw): Likewise.
+ 	* config/arm/arm.md (*addsi3_carryin_shift): Likewise.
+ 	(add_not_shift_cin): Likewise.
+ 	(*subsi3_carryin_shift): Likewise.
+ 	(*subsi3_carryin_shift_alt): Likewise.
+ 	(*rsbsi3_carryin_shift): Likewise.
+ 	(*rsbsi3_carryin_shift_alt): Likewise.
+ 	(*arm_shiftsi3): Likewise.
+ 	(*<arith_shift_insn>_multsi): Likewise.
+ 	(*<arith_shift_insn>_shiftsi): Likewise.
+ 	(subsi3_carryin): Set new type.
+ 	(*if_arith_move): Set new type.
+ 	(*if_move_arith): Set new type.
+ 	(define_attr "core_cycles"): Use new type.
+ 	* config/arm/arm-fixed.md (arm_ssatsihi_shift): Set autodetect_type.
+ 	* config/arm/thumb2.md (*orsi_not_shiftsi_si): Likewise.
+ 	(*thumb2_shiftsi3_short): Set new type.
+ 	* config/aarch64/falkor.md (falkor_alu_1_xyz): Use new type.
+ 	* config/aarch64/saphira.md (saphira_alu_1_xyz): Likewise.
+ 	* config/aarch64/thunderx.md (thunderx_arith_shift): Likewise.
+ 	* config/aarch64/thunderx2t99.md (thunderx2t99_alu_shift): Likewise.
+ 	* config/aarch64/thunderx3t110.md (thunderx3t110_alu_shift): Likewise.
+ 	(thunderx3t110_alu_shift1): Likewise.
+ 	* config/aarch64/tsv110.md (tsv110_alu_shift): Likewise.
+ 	* config/arm/arm1020e.md (1020alu_shift_op): Likewise.
+ 	* config/arm/arm1026ejs.md (alu_shift_op): Likewise.
+ 	* config/arm/arm1136jfs.md (11_alu_shift_op): Likewise.
+ 	* config/arm/arm926ejs.md (9_alu_op): Likewise.
+ 	* config/arm/cortex-a15.md (cortex_a15_alu_shift): Likewise.
+ 	* config/arm/cortex-a17.md (cortex_a17_alu_shiftimm): Likewise.
+ 	* config/arm/cortex-a5.md (cortex_a5_alu_shift): Likewise.
+ 	* config/arm/cortex-a53.md (cortex_a53_alu_shift): Likewise.
+ 	* config/arm/cortex-a57.md (cortex_a57_alu_shift): Likewise.
+ 	* config/arm/cortex-a7.md (cortex_a7_alu_shift): Likewise.
+ 	* config/arm/cortex-a8.md (cortex_a8_alu_shift): Likewise.
+ 	* config/arm/cortex-a9.md (cortex_a9_dp_shift): Likewise.
+ 	* config/arm/cortex-m4.md (cortex_m4_alu): Likewise.
+ 	* config/arm/cortex-m7.md (cortex_m7_alu_shift): Likewise.
+ 	* config/arm/cortex-r4.md (cortex_r4_alu_shift): Likewise.
+ 	* config/arm/exynos-m1.md (exynos_m1_alu_shift): Likewise.
+ 	* config/arm/fa526.md (526_alu_shift_op): Likewise.
+ 	* config/arm/fa606te.md (606te_alu_op): Likewise.
+ 	* config/arm/fa626te.md (626te_alu_shift_op): Likewise.
+ 	* config/arm/fa726te.md (726te_alu_shift_op): Likewise.
+ 	* config/arm/fmp626.md (mp626_alu_shift_op): Likewise.
+ 	* config/arm/marvell-pj4.md (pj4_shift): Likewise.
+ 	(pj4_shift_conds): Likewise.
+ 	(pj4_alu_shift): Likewise.
+ 	(pj4_alu_shift_conds): Likewise.
+ 	* config/arm/xgene1.md (xgene1_alu): Likewise.
+ 	* config/arm/arm.c (xscale_sched_adjust_cost): Likewise.
+ 
+ 2020-12-22  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/96793
+ 	* config/i386/i386-expand.c (ix86_expand_floorceil):
+ 	Remove the sign of the intermediate value for flag_rounding_math.
+ 	(ix86_expand_floorceildf_32): Ditto.
+ 
+ 2020-12-22  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/i386.md (*one_cmpl<mode>2_1): Fix typo, change
+ 	alternative from 2 to 1 in attr isa.
+ 
+ 2020-12-22  Ian Lance Taylor  <iant@golang.org>
+ 
+ 	* godump.c (go_output_typedef): If DECL_ORIGINAL_TYPE is NULL, use
+ 	TREE_TYPE.
+ 
+ 2020-12-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/98353
+ 	* gimplify.c (gimplify_init_ctor_eval_range): Gimplify value before
+ 	storing it into cref.
+ 
+ 2020-12-21  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin-driver.c (darwin_find_version_from_kernel):
+ 	Compute the minor OS version from the minor kernel version.
+ 
+ 2020-12-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/98407
+ 	* fold-const.c (native_encode_initializer): When handling flexible
+ 	array members, fix up computation of length for memset.  Also remove
+ 	" - o" as o is always guaranteed to be 0 in this code path.
+ 
+ 2020-12-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/98383
+ 	* gimplify.c (struct gimplify_omp_ctx): Add in_for_exprs flag.
+ 	(gimple_add_tmp_var): For addressable temporaries appearing in
+ 	simd lb, b or incr expressions, don't add a private clause unless
+ 	it is seen also outside of those expressions in the simd body.
+ 	(omp_notice_variable): Likewise.
+ 	(gimplify_omp_for): Set and reset in_for_exprs around gimplification
+ 	of lb, b or incr expressions.
+ 
+ 2020-12-20  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.md (bswapsi2, bswapdi2): New patterns.
+ 
+ 2020-12-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR other/98400
+ 	* doc/invoke.texi (-mbackchain): Fix a typo - -mmo-backchain ->
+ 	-mno-backchain.
+ 
+ 2020-12-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/98366
+ 	* fold-const.c (native_encode_initializer): Don't try to
+ 	memset more than total_bytes with off == -1 even if len is large.
+ 	Handle flexible array member initializers if off == -1 and mask is
+ 	NULL.
+ 	* expr.c (convert_to_bytes): Remove.
+ 	(constant_byte_string): Use native_encode_initializer instead of
+ 	convert_to_bytes.  Remove extraneous semicolon.  Punt on various
+ 	corner-cases the APIs don't handle, like sizes > INT_MAX,
+ 	BITS_PER_UNIT != 8, CHAR_BIT != 8.
+ 
+ 2020-12-19  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/98067
+ 	* dwarf2out.c (dwarf2out_imported_module_or_decl_1): Handle
+ 	  CONST_DECL only if is_fortran, is_ada, or is_dlang.
+ 
+ 2020-12-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/98378
+ 	* gimple-ssa-store-merging.c (find_bswap_or_nop): Punt if CONSTRUCTOR
+ 	has no elements.
+ 
+ 2020-12-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimplify.c (struct gimplify_omp_ctx): Add has_depend member.
+ 	(gimplify_scan_omp_clauses): Set it to true if OMP_CLAUSE_DEPEND
+ 	appears on OMP_TASK.
+ 	(gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses): Force
+ 	GOVD_WRITTEN on shared variables if task construct has depend clause.
+ 
+ 2020-12-18  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
+ 
+ 	PR target/98177
+ 	* tree-vect-loop.c (vect_create_epilog_for_reduction): Use
+ 	get_same_sized_vectype to obtain index type.
+ 	(vectorizable_reduction): Likewise.
+ 
+ 2020-12-18  Kwok Cheung Yeung  <kcy@codesourcery.com>
+ 
+ 	* langhooks-def.h (lhd_get_decl_init): New.
+ 	(lhd_finish_decl_inits): New.
+ 	(LANG_HOOKS_GET_DECL_INIT): New.
+ 	(LANG_HOOKS_OMP_FINISH_DECL_INITS): New.
+ 	(LANG_HOOKS_DECLS): Add LANG_HOOKS_GET_DECL_INIT and
+ 	LANG_HOOKS_OMP_FINISH_DECL_INITS.
+ 	* langhooks.c (lhd_omp_get_decl_init): New.
+ 	(lhd_omp_finish_decl_inits): New.
+ 	* langhooks.h (struct lang_hooks_for_decls): Add omp_get_decl_init
+ 	and omp_finish_decl_inits.
+ 	* omp-offload.c (omp_discover_declare_target_var_r): Use
+ 	get_decl_init langhook in place of DECL_INITIAL.  Call
+ 	omp_finish_decl_inits langhook at end of function.
+ 
+ 2020-12-18  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_preferred_simd_mode): Use
+ 	aarch64_full_sve_mode and aarch64_vq_mode directly, instead of
+ 	going via aarch64_simd_container_mode.
+ 
+ 2020-12-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/iterators.md (rot): Add UNSPEC_VCMUL, UNSPEC_VCMUL90,
+ 	UNSPEC_VCMUL180, UNSPEC_VCMUL270.
+ 
+ 2020-12-17  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
+ 
+ 	* config/arm/arm-cpus.in: Add Cortex-A78C core.
+ 	* config/arm/arm-tables.opt: Regenerate.
+ 	* config/arm/arm-tune.md: Regenerate.
+ 	* doc/invoke.texi: Update docs.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/98347
+ 	* rtl-ssa/access-utils.h (full_register): Use regno_reg_rtx
+ 	instead of reg_raw_mode.
+ 
+ 2020-12-17  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	* targhooks.h (default_estimated_poly_value): Updated.
+ 
+ 2020-12-17  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* doc/invoke.texi (C++ Modules): Document lack of std
+ 	library header units.
+ 
+ 2020-12-17  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* target.h (enum poly_value_estimate_kind): Define.
+ 	(estimated_poly_value): Take an estimate kind argument.
+ 	* target.def (estimated_poly_value): Update definition for the
+ 	above.
+ 	* doc/tm.texi: Regenerate.
+ 	* targhooks.c (estimated_poly_value): Update prototype.
+ 	* tree-vect-loop.c (vect_better_loop_vinfo_p): Use min, max and
+ 	likely estimates of VF to pick between vinfos.
+ 	* config/aarch64/aarch64.c (aarch64_cmp_autovec_modes): Use
+ 	estimated_poly_value instead of aarch64_estimated_poly_value.
+ 	(aarch64_estimated_poly_value): Take a kind argument and handle
+ 	it.
+ 
+ 2020-12-17  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/arm_neon.h (vcreate_p64): Remove call to
+ 	'__builtin_neon_vcreatedi'.
+ 
+ 2020-12-17  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/97750
+ 	* range-op.cc (operator_cast::op1_range): Handle pointers better.
+ 
+ 2020-12-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* rtl-ssa.h: Include memmodel.h before tm_p.h.
+ 
+ 2020-12-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/98289
+ 	* shrink-wrap.c (can_get_prologue): Don't punt on EDGE_CROSSING
+ 	incoming edges.
+ 
+ 2020-12-17  Marius Hillenbrand  <mhillen@linux.ibm.com>
+ 
+ 	* configure.ac: Change --enable-s390-excess-float-precision
+ 	default behavior for cross compiles with target headers.
+ 	* configure: Regenerate.
+ 	* doc/install.texi: Adjust documentation.
+ 
+ 2020-12-17  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (*ashlsi3_1, *ashlsi3_3x, *ashrsi3_3x)
+ 	(*lshrsi3_3x): New patterns.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* fwprop.c: Rewrite to use the RTL SSA framework.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* configure.ac: Add rtl-ssa to the list of dependence directories.
+ 	* configure: Regenerate.
+ 	* Makefile.in (rtl-ssa-warn): New variable.
+ 	(OBJS): Add the rtl-ssa object files.
+ 	* emit-rtl.h (rtl_data::ssa): New field.
+ 	* rtl-ssa.h: New file.
+ 	* system.h: Include <functional> when INCLUDE_FUNCTIONAL is defined.
+ 	* rtl-ssa/access-utils.h: Likewise.
+ 	* rtl-ssa/accesses.h: New file.
+ 	* rtl-ssa/accesses.cc: Likewise.
+ 	* rtl-ssa/blocks.h: New file.
+ 	* rtl-ssa/blocks.cc: Likewise.
+ 	* rtl-ssa/change-utils.h: Likewise.
+ 	* rtl-ssa/changes.h: New file.
+ 	* rtl-ssa/changes.cc: Likewise.
+ 	* rtl-ssa/functions.h: New file.
+ 	* rtl-ssa/functions.cc: Likewise.
+ 	* rtl-ssa/insn-utils.h: Likewise.
+ 	* rtl-ssa/insns.h: New file.
+ 	* rtl-ssa/insns.cc: Likewise.
+ 	* rtl-ssa/internals.inl: Likewise.
+ 	* rtl-ssa/is-a.inl: Likewise.
+ 	* rtl-ssa/member-fns.inl: Likewise.
+ 	* rtl-ssa/movement.h: Likewise.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* doc/rtl.texi (RTL SSA): New node.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* rtl.h (simple_regno_set): Declare.
+ 	* rtlanal.c (simple_regno_set): New function.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* rtlanal.h: New file.
+ 	(MEM_REGNO): New constant.
+ 	(rtx_obj_flags): New namespace.
+ 	(rtx_obj_reference, rtx_properties): New classes.
+ 	(growing_rtx_properties, vec_rtx_properties_base): Likewise.
+ 	(vec_rtx_properties): New alias.
+ 	* rtlanal.c: Include it.
+ 	(rtx_properties::try_to_add_reg): New function.
+ 	(rtx_properties::try_to_add_dest): Likewise.
+ 	(rtx_properties::try_to_add_src): Likewise.
+ 	(rtx_properties::try_to_add_pattern): Likewise.
+ 	(rtx_properties::try_to_add_insn): Likewise.
+ 	(vec_rtx_properties_base::grow): Likewise.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* recog.h (insn_change_watermark): New class.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* recog.h (insn_propagation): New class.
+ 	* recog.c (insn_propagation::apply_to_mem_1): New function.
+ 	(insn_propagation::apply_to_rvalue_1): Likewise.
+ 	(insn_propagation::apply_to_lvalue_1): Likewise.
+ 	(insn_propagation::apply_to_pattern_1): Likewise.
+ 	(insn_propagation::apply_to_pattern): Likewise.
+ 	(insn_propagation::apply_to_rvalue): Likewise.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* recog.h (temporarily_undo_changes, redo_changes): Declare.
+ 	* recog.c (temporarily_undone_changes): New variable.
+ 	(validate_change_1, confirm_change_group): Check that it's zero.
+ 	(cancel_changes): Likewise.
+ 	(swap_change, temporarily_undo_changes): New functions.
+ 	(redo_changes): Likewise.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* recog.h (validate_change_xveclen): Declare.
+ 	* recog.c (change_t::old_len): New field.
+ 	(validate_change_1): Add a new_len parameter.  Conditionally
+ 	replace the XVECLEN of an rtx, avoiding single-element PARALLELs.
+ 	(validate_change_xveclen): New function.
+ 	(cancel_changes): Undo changes made by validate_change_xveclen.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* rtl.h (simplify_context): New class.
+ 	(simplify_unary_operation, simplify_binary_operation): Use it.
+ 	(simplify_ternary_operation, simplify_relational_operation): Likewise.
+ 	(simplify_subreg, simplify_gen_unary, simplify_gen_binary): Likewise.
+ 	(simplify_gen_ternary, simplify_gen_relational): Likewise.
+ 	(simplify_gen_subreg, lowpart_subreg): Likewise.
+ 	* simplify-rtx.c (simplify_gen_binary): Turn into a member function
+ 	of simplify_context.
+ 	(simplify_gen_unary, simplify_gen_ternary, simplify_gen_relational)
+ 	(simplify_truncation, simplify_unary_operation): Likewise.
+ 	(simplify_unary_operation_1, simplify_byte_swapping_operation)
+ 	(simplify_associative_operation, simplify_logical_relational_operation)
+ 	(simplify_binary_operation, simplify_binary_operation_series)
+ 	(simplify_distributive_operation, simplify_plus_minus): Likewise.
+ 	(simplify_relational_operation, simplify_relational_operation_1)
+ 	(simplify_cond_clz_ctz, simplify_merge_mask): Likewise.
+ 	(simplify_ternary_operation, simplify_subreg, simplify_gen_subreg)
+ 	(lowpart_subreg): Likewise.
+ 	(simplify_binary_operation_1): Likewise.  Test mem_depth when
+ 	deciding whether the ASHIFT or MULT form is canonical.
+ 	(simplify_merge_mask): Use simplify_context.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* rtl.h (register_asm_p): Declare.
+ 	* recog.c (verify_changes): Split out the test for whether
+ 	a hard register is a register asm to...
+ 	* rtlanal.c (register_asm_p): ...this new function.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* print-rtl.h (print_insn_with_notes): Declare.
+ 	* print-rtl.c (print_insn_with_notes): Make non-static
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* cfgrtl.h (update_cfg_for_uncondjump): Declare.
+ 	* combine.c (update_cfg_for_uncondjump): Move to...
+ 	* cfgrtl.c: ...here.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* vec.h (array_slice): New class.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* Makefile.in (OBJS): Add splay-tree-utils.o.
+ 	* system.h: Include <array> when INCLUDE_ARRAY is defined.
+ 	* selftest.h (splay_tree_cc_tests): Declare.
+ 	* selftest-run-tests.c (selftest::run_tests): Run splay_tree_cc_tests.
+ 	* splay-tree-utils.h: New file.
+ 	* splay-tree-utils.tcc: Likewise.
+ 	* splay-tree-utils.cc: Likewise.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* mux-utils.h: New file.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* obstack-utils.h: New file.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* iterator-utils.h (derived_iterator): New class.
+ 	(const_derived_container, wrapper_iterator): Likewise.
+ 	(list_iterator): Likewise.
+ 
+ 2020-12-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* hard-reg-set.h (global_reg_set): Declare.
+ 	* reginfo.c (global_reg_set): New variable.
+ 	(init_reg_sets_1, globalize_reg): Update it when globalizing
+ 	registers.
+ 
+ 2020-12-16  Piotr Kubaj  <pkubaj@FreeBSD.org>
+ 
+ 	* config.gcc (powerpc*le-*-freebsd*): Add.
+ 	* configure.ac (powerpc*le-*-freebsd*): Ditto.
+ 	* configure: Regenerate.
+ 	* config/rs6000/freebsd64.h (ASM_SPEC_COMMON): Use ENDIAN_SELECT.
+ 	(DEFAULT_ASM_ENDIAN): Add little endian support.
+ 	(LINK_OS_FREEBSD_SPEC64): Ditto.
+ 
+ 2020-12-16  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.c (xtensa_emit_move_sequence): Try to
+ 	replace 'l32r' with 'movi' + 'slli' when optimizing for size.
+ 	* config/xtensa/xtensa.md (movdi): Split loading DI mode constant
+ 	into register pair into two loads of SI mode constants.
+ 
+ 2020-12-16  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/arm_mve.h (__arm_vcmulq_rot90_f16):
+ 	(__arm_vcmulq_rot270_f16, _arm_vcmulq_rot180_f16, __arm_vcmulq_f16,
+ 	__arm_vcmulq_rot90_f32, __arm_vcmulq_rot270_f32,
+ 	__arm_vcmulq_rot180_f32, __arm_vcmulq_f32, __arm_vcmlaq_f16,
+ 	__arm_vcmlaq_rot180_f16, __arm_vcmlaq_rot270_f16,
+ 	__arm_vcmlaq_rot90_f16, __arm_vcmlaq_f32, __arm_vcmlaq_rot180_f32,
+ 	__arm_vcmlaq_rot270_f32, __arm_vcmlaq_rot90_f32): Update builtin calls.
+ 	* config/arm/arm_mve_builtins.def (vcmulq_f, vcmulq_rot90_f,
+ 	vcmulq_rot180_f, vcmulq_rot270_f, vcmlaq_f, vcmlaq_rot90_f,
+ 	vcmlaq_rot180_f, vcmlaq_rot270_f): Removed.
+ 	(vcmulq, vcmulq_rot90, vcmulq_rot180, vcmulq_rot270, vcmlaq,
+ 	vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270): New.
+ 	* config/arm/iterators.md (mve_rot): Add UNSPEC_VCMLA, UNSPEC_VCMLA90,
+ 	UNSPEC_VCMLA180, UNSPEC_VCMLA270, UNSPEC_VCMUL, UNSPEC_VCMUL90,
+ 	UNSPEC_VCMUL180, UNSPEC_VCMUL270.
+ 	(VCMUL): New.
+ 	* config/arm/mve.md (mve_vcmulq_f<mode, mve_vcmulq_rot180_f<mode>,
+ 	mve_vcmulq_rot270_f<mode>, mve_vcmulq_rot90_f<mode>, mve_vcmlaq_f<mode>,
+ 	mve_vcmlaq_rot180_f<mode>, mve_vcmlaq_rot270_f<mode>,
+ 	mve_vcmlaq_rot90_f<mode>): Removed.
+ 	(mve_vcmlaq<mve_rot><mode>, mve_vcmulq<mve_rot><mode>,
+ 	mve_vcaddq<mve_rot><mode>, cadd<rot><mode>3, mve_vcaddq<mve_rot><mode>):
+ 	New.
+ 	* config/arm/unspecs.md (UNSPEC_VCMUL90, UNSPEC_VCMUL270, UNSPEC_VCMUL,
+ 	UNSPEC_VCMUL180): New.
+ 	(VCMULQ_F, VCMULQ_ROT180_F, VCMULQ_ROT270_F, VCMULQ_ROT90_F,
+ 	VCMLAQ_F, VCMLAQ_ROT180_F, VCMLAQ_ROT90_F, VCMLAQ_ROT270_F): Removed.
+ 
+ 2020-12-16  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/arm_mve.h (__arm_vcaddq_rot90_u8, __arm_vcaddq_rot270_u8,
+ 	__arm_vcaddq_rot90_s8, __arm_vcaddq_rot270_s8,
+ 	__arm_vcaddq_rot90_u16, __arm_vcaddq_rot270_u16,
+ 	__arm_vcaddq_rot90_s16, __arm_vcaddq_rot270_s16,
+ 	__arm_vcaddq_rot90_u32, __arm_vcaddq_rot270_u32,
+ 	__arm_vcaddq_rot90_s32, __arm_vcaddq_rot270_s32,
+ 	__arm_vcaddq_rot90_f16, __arm_vcaddq_rot270_f16,
+ 	__arm_vcaddq_rot90_f32, __arm_vcaddq_rot270_f32):  Update builtin calls.
+ 	* config/arm/arm_mve_builtins.def (vcaddq_rot90_u, vcaddq_rot270_u,
+ 	vcaddq_rot90_s, vcaddq_rot270_s, vcaddq_rot90_f, vcaddq_rot270_f):
+ 	Removed.
+ 	(vcaddq_rot90, vcaddq_rot270): New.
+ 	* config/arm/constraints.md (Dz): Include MVE.
+ 	* config/arm/iterators.md (mve_rot): New.
+ 	(supf): Remove VCADDQ_ROT270_S, VCADDQ_ROT270_U, VCADDQ_ROT90_S,
+ 	VCADDQ_ROT90_U.
+ 	(VCADDQ_ROT270, VCADDQ_ROT90): Removed.
+ 	* config/arm/mve.md (mve_vcaddq_rot270_<supf><mode,
+ 	mve_vcaddq_rot90_<supf><mode>, mve_vcaddq_rot270_f<mode>,
+ 	mve_vcaddq_rot90_f<mode>): Removed.
+ 	(mve_vcaddq<mve_rot><mode>, mve_vcaddq<mve_rot><mode>): New.
+ 	* config/arm/unspecs.md (VCADDQ_ROT270_S, VCADDQ_ROT90_S,
+ 	VCADDQ_ROT270_U, VCADDQ_ROT90_U, VCADDQ_ROT270_F,
+ 	VCADDQ_ROT90_F): Removed.
+ 	* config/arm/vec-common.md (cadd<rot><mode>3): New.
+ 
+ 2020-12-16  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (cadd<rot><mode>3): New.
+ 	* config/aarch64/iterators.md (SVE2_INT_CADD_OP): New.
+ 	* config/aarch64/aarch64-sve.md (cadd<rot><mode>3): New.
+ 	* config/aarch64/aarch64-sve2.md (cadd<rot><mode>3): New.
+ 
+ 2020-12-16  Pat Haugen  <pthaugen@linux.ibm.com>
+ 
+ 	* config/rs6000/mma.md (*movxo, mma_<vvi4i4i8>, mma_<avvi4i4i8>,
+ 	mma_<vvi4i4i2>, mma_<avvi4i4i2>, mma_<vvi4i4>, mma_<avvi4i4>,
+ 	mma_<pvi4i2>, mma_<apvi4i2>, mma_<vvi4i4i4>, mma_<avvi4i4i4>):
+ 	Remove explicit setting of length attribute.
+ 
+ 2020-12-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* varasm.c (default_elf_asm_named_section): Always force
+ 	section flags even for sections with SECTION_LINK_ORDER flag.
+ 
+ 2020-12-16  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/98146
+ 	* defaults.h (SUPPORTS_SHF_GNU_RETAIN): New.
+ 	* varasm.c (get_section): Replace HAVE_GAS_SHF_GNU_RETAIN with
+ 	SUPPORTS_SHF_GNU_RETAIN.
+ 	(resolve_unique_section): Likewise.
+ 	(get_variable_section): Likewise.
+ 	(switch_to_section): Likewise.
+ 
+ 2020-12-16  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/98146
+ 	* varasm.c (switch_to_section): Warn when a symbol without used
+ 	attribute and a symbol with used attribute are placed in the
+ 	section with the same name.
+ 
+ 2020-12-16  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/98146
+ 	* output.h (switch_to_section): Add a tree argument, default to
+ 	nullptr.
+ 	* varasm.c (get_section): If the SECTION_RETAIN bit doesn't match,
+ 	return and switch to a new section later.
+ 	(assemble_start_function): Pass decl to switch_to_section.
+ 	(assemble_variable): Likewise.
+ 	(switch_to_section): If the SECTION_RETAIN bit doesn't match,
+ 	switch to a new section.
+ 
+ 2020-12-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/96239
+ 	* gimple-ssa-store-merging.c (find_bswap_or_nop): Handle a vector
+ 	CONSTRUCTOR.
+ 	(bswap_replace): Likewise.
+ 
+ 2020-12-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* common.opt: Remove usage of Report.
+ 	* config/aarch64/aarch64.opt: Ditto.
+ 	* config/alpha/alpha.opt: Ditto.
+ 	* config/arc/arc.opt: Ditto.
+ 	* config/arm/arm.opt: Ditto.
+ 	* config/avr/avr.opt: Ditto.
+ 	* config/bfin/bfin.opt: Ditto.
+ 	* config/bpf/bpf.opt: Ditto.
+ 	* config/c6x/c6x.opt: Ditto.
+ 	* config/cr16/cr16.opt: Ditto.
+ 	* config/cris/cris.opt: Ditto.
+ 	* config/cris/elf.opt: Ditto.
+ 	* config/csky/csky.opt: Ditto.
+ 	* config/darwin.opt: Ditto.
+ 	* config/fr30/fr30.opt: Ditto.
+ 	* config/frv/frv.opt: Ditto.
+ 	* config/ft32/ft32.opt: Ditto.
+ 	* config/gcn/gcn.opt: Ditto.
+ 	* config/i386/cygming.opt: Ditto.
+ 	* config/i386/i386.opt: Ditto.
+ 	* config/ia64/ia64.opt: Ditto.
+ 	* config/ia64/ilp32.opt: Ditto.
+ 	* config/linux-android.opt: Ditto.
+ 	* config/linux.opt: Ditto.
+ 	* config/lm32/lm32.opt: Ditto.
+ 	* config/m32r/m32r.opt: Ditto.
+ 	* config/m68k/m68k.opt: Ditto.
+ 	* config/mcore/mcore.opt: Ditto.
+ 	* config/microblaze/microblaze.opt: Ditto.
+ 	* config/mips/mips.opt: Ditto.
+ 	* config/mmix/mmix.opt: Ditto.
+ 	* config/mn10300/mn10300.opt: Ditto.
+ 	* config/moxie/moxie.opt: Ditto.
+ 	* config/msp430/msp430.opt: Ditto.
+ 	* config/nds32/nds32.opt: Ditto.
+ 	* config/nios2/elf.opt: Ditto.
+ 	* config/nios2/nios2.opt: Ditto.
+ 	* config/nvptx/nvptx.opt: Ditto.
+ 	* config/pa/pa.opt: Ditto.
+ 	* config/pdp11/pdp11.opt: Ditto.
+ 	* config/pru/pru.opt: Ditto.
+ 	* config/riscv/riscv.opt: Ditto.
+ 	* config/rl78/rl78.opt: Ditto.
+ 	* config/rs6000/aix64.opt: Ditto.
+ 	* config/rs6000/linux64.opt: Ditto.
+ 	* config/rs6000/rs6000.opt: Ditto.
+ 	* config/rs6000/sysv4.opt: Ditto.
+ 	* config/rx/elf.opt: Ditto.
+ 	* config/rx/rx.opt: Ditto.
+ 	* config/s390/s390.opt: Ditto.
+ 	* config/s390/tpf.opt: Ditto.
+ 	* config/sh/sh.opt: Ditto.
+ 	* config/sol2.opt: Ditto.
+ 	* config/sparc/long-double-switch.opt: Ditto.
+ 	* config/sparc/sparc.opt: Ditto.
+ 	* config/tilegx/tilegx.opt: Ditto.
+ 	* config/tilepro/tilepro.opt: Ditto.
+ 	* config/v850/v850.opt: Ditto.
+ 	* config/visium/visium.opt: Ditto.
+ 	* config/vms/vms.opt: Ditto.
+ 	* config/vxworks.opt: Ditto.
+ 	* config/xtensa/xtensa.opt: Ditto.
+ 
+ 2020-12-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/options.texi: Remove Report keyword.
+ 	* opt-functions.awk: Print error when Report keyword
+ 	is used.
+ 	* optc-gen.awk: Do not handle Report keyword.
+ 	* opts.h (struct cl_option): Remove cl_report bitfield flag.
+ 
+ 2020-12-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/97868
+ 	* common.opt: Add new warning -Wtsan.
+ 	* doc/invoke.texi: Likewise.
+ 	* tsan.c (instrument_builtin_call): Warn users about unsupported
+ 	std::atomic_thread_fence.
+ 
+ 2020-12-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR rtl-optimization/98271
+ 	PR rtl-optimization/98276
+ 	PR tree-optimization/98279
+ 	* opts-common.c (set_option): Do not allow overflow for integer
+ 	arguments.
+ 
+ 2020-12-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR tree-optimization/98272
+ 	* tree-switch-conversion.c (bit_test_cluster::emit): When finding
+ 	out whether the entry test can be merged in the bit test, do the
+ 	computation using the type of the index expression.
+ 
+ 2020-12-16  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_expand_vector_init): Use
+ 	paradoxical subreg instead of zero_extend for QI/HI promotion.
+ 
+ 2020-12-16  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	PR target/66791
+ 	* config/arm/arm_neon.h: Replace calls to __builtin_vcgt* by
+ 	<, > operators in vclt and vcgt intrinsics respectively.
+ 	* config/arm/arm_neon_builtins.def: Remove entry for
+ 	vcgt and vcgtu.
+ 
+ 2020-12-16  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	PR target/66791
+ 	* config/arm/arm_neon.h: Replace calls to __builtin_vneg* by - operator
+ 	in vneg intrinsics.
+ 	* config/arm/arm_neon_builtins.def: Remove entry for vneg.
+ 
+ 2020-12-16  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	PR target/66791
+ 	* config/arm/arm_neon.h: Replace calls to __builtin_vcreate*
+ 	in vcreate intrinsics.
+ 	* config/arm/arm_neon_builtins.def: Remove entry for vcreate.
+ 
+ 2020-12-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/96094
+ 	* match.pd (X / bool_range_Y -> X): New simplification.
+ 
+ 2020-12-15  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* doc/cppopts.texi: Document new cpp opt.
+ 	* doc/invoke.texi: Add C++20 module option & documentation.
+ 
+ 2020-12-15  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* Makefile.in (CODYINC, CODYLIB, CODYLIB_H): New. Use them.
+ 
+ 2020-12-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/98274
+ 	* config/i386/i386-options.c (ix86_option_override_internal): Set
+ 	ix86_tune_string to "generic" even when it wasn't specified and
+ 	ix86_arch_string is "x86-64-v2", "x86-64-v3" or "x86-64-v4".
+ 	Remove useless {}s around a single statement.
+ 
+ 2020-12-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/98275
+ 	* lto-wrapper.c: Do not use -j0 when we are unable to detect
+ 	number of cores.
+ 
+ 2020-12-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/i386/i386-options.c (ix86_option_override_internal): Don't
+ 	error on -march=x86-64-v[234] with -m32 or -mabi=ms.
+ 	* config.gcc: Don't reject --with-arch=x86-64-v[234] or
+ 	--with-arch_32=x86-64-v[234].
+ 	* doc/invoke.texi (-march=x86-64-v[234]): Document what the option
+ 	does for other ABIs.
+ 
+ 2020-12-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/98273
+ 	* gcov.c (output_json_intermediate_file): Use stack of nested
+ 	functions for lines in a source file.  Pop when a function ends.
+ 
+ 2020-12-15  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/invoke.texi (Instrumentation Options): Update link to
+ 	KernelAddressSanitizer.
+ 
+ 2020-12-15  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/predicates.md (addsubx_operand): Change accepted
+ 	values from 2/4/8 to 1..3.
+ 	* config/xtensa/xtensa.md (*addx, *subx): Change RTL pattern
+ 	to use 'ashift' instead of 'mult'. Update operands[3] value.
+ 
+ 2020-12-14  Piotr Kubaj  <pkubaj@FreeBSD.org>
+ 	    Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* config/rs6000/freebsd64.h (PROCESSOR_DEFAULT): Update
+ 	to PROCESSOR_PPC7450.
+ 	(PROCESSOR_DEFAULT64): Update to PROCESSOR_POWER8.
+ 
+ 2020-12-14  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/98166
+ 	PR c++/57111
+ 	PR middle-end/98160
+ 	* builtins.c (check_access): Call tree_inlined_location
+ 	fndecl_alloc_p): Handle BUILT_IN_ALIGNED_ALLOC and
+ 	BUILT_IN_GOMP_ALLOC.
+ 	call_dealloc_p): Remove unused function.
+ 	(new_delete_mismatch_p): Call valid_new_delete_pair_p and rework.
+ 	(matching_alloc_calls_p): Handle built-in deallocation functions.
+ 	(warn_dealloc_offset): Corrct the handling of user-defined operators
+ 	delete.
+ 	(maybe_emit_free_warning): Avoid assuming expression is a decl.
+ 	Simplify.
+ 	* doc/extend.texi (attribute malloc): Update.
+ 	* tree-ssa-dce.c (valid_new_delete_pair_p): Factor code out into
+ 	valid_new_delete_pair_p in tree.c.
+ 	* tree.c (tree_inlined_location): Define new function.
+ 	(valid_new_delete_pair_p): Define.
+ 	* tree.h (tree_inlined_location): Declare.
+ 	(valid_new_delete_pair_p): Declare.
+ 
+ 2020-12-14  Sebastian Pop  <spop@amazon.com>
+ 
+ 	* config.gcc (aarch64*-*-*): Remove --with-{cpu,arch,tune}-32 flags.
+ 
+ 2020-12-14  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config.gcc (aarch64*-*-*): Add --with-tune. Support --with-cpu=native.
+ 	* config/aarch64/aarch64.h (OPTION_DEFAULT_SPECS): Add --with-tune.
+ 
+ 2020-12-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov.c (output_json_intermediate_file): Update comments.
+ 
+ 2020-12-14  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/98264
+ 	* tree-vect-slp-patterns.c (linear_loads_p): Exclude TOP permute.
+ 
+ 2020-12-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/mve.md (mve_vnegq_f): Use 'neg' instead of unspec.
+ 	(mve_vnegq_s): Likewise.
+ 	* config/arm/neon.md (neg<mode>2): Rename into neon_neg<mode>2.
+ 	(<absneg_str><mode>2): Rename into neon_<absneg_str><mode>2.
+ 	(neon_v<absneg_str><mode>): Call gen_neon_<absneg_str><mode>2.
+ 	(vashr<mode>3): Call gen_neon_neg<mode>2.
+ 	(vlshr<mode>3): Call gen_neon_neg<mode>2.
+ 	(neon_vneg<mode>): Call gen_neon_neg<mode>2.
+ 	* config/arm/unspecs.md (VNEGQ_F, VNEGQ_S): Remove.
+ 	* config/arm/vec-common.md (neg<mode>2): New expander.
+ 
+ 2020-12-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/iterators.md (VDQNOTM2): New mode iterator.
+ 	(supf): Remove VMVNQ_S and VMVNQ_U.
+ 	(VMVNQ): Remove.
+ 	* config/arm/mve.md (mve_vmvnq_u<mode>): New entry for vmvn
+ 	instruction using expression not.
+ 	(mve_vmvnq_s<mode>): New expander.
+ 	* config/arm/neon.md (one_cmpl<mode>2): Renamed into
+ 	one_cmpl<mode>2_neon.
+ 	* config/arm/unspecs.md (VMVNQ_S, VMVNQ_U): Remove.
+ 	* config/arm/vec-common.md (one_cmpl<mode>2): New expander.
+ 
+ 2020-12-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/iterators.md (supf): Remove VBICQ_S and VBICQ_U.
+ 	(VBICQ): Remove.
+ 	* config/arm/mve.md (mve_vbicq_u<mode>): New entry for vbic
+ 	instruction using expression and not.
+ 	(mve_vbicq_s<mode>): New expander.
+ 	(mve_vbicq_f<mode>): Replace use of unspec by 'and not'.
+ 	* config/arm/unspecs.md (VBICQ_S, VBICQ_U, VBICQ_F): Remove.
+ 
+ 2020-12-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/iterators.md (supf): Remove VEORQ_S and VEORQ_U.
+ 	(VEORQ): Remove.
+ 	* config/arm/mve.md (mve_veorq_u<mode>): New entry for veor
+ 	instruction using expression xor.
+ 	(mve_veorq_s<mode>): New expander.
+ 	(mve_veorq_f<mode>): Use 'xor' code instead of unspec.
+ 	* config/arm/neon.md (xor<mode>3): Renamed into xor<mode>3_neon.
+ 	* config/arm/unspecs.md (VEORQ_S, VEORQ_U, VEORQ_F): Remove.
+ 	* config/arm/vec-common.md (xor<mode>3): New expander.
+ 
+ 2020-12-14  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-A78C core.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* doc/invoke.texi: Update docs.
+ 
+ 2020-12-14  Nikhil Benesch  <nikhil.benesch@gmail.com>
+ 
+ 	* godump.c (go_output_typedef): Suppress typedefs whose name
+ 	matches the tag of the underlying struct, union, or enum.
+ 	Output declarations for enums that do not appear in typedefs.
+ 
+ 2020-12-13  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.c (vax_output_int_move): Unify push operation
+ 	selection.
+ 
+ 2020-12-13  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.c (vax_output_int_move): Check the correct
+ 	operand for constant 0 push operation.
+ 
+ 2020-12-13  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.c (vax_expand_addsub_di_operands): Handle equal
+ 	input operands with subtraction.
+ 
+ 2020-12-13  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.c (vax_expand_addsub_di_operands): Handle the
+ 	addition or subtraction of 0.
+ 
+ 2020-12-13  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.c (vax_expand_addsub_di_operands): Remove
+ 	unused register allocation.
+ 
+ 2020-12-13  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.md (casesi): Use `gen_int_mode' rather than
+ 	`GEN_INT' for the immediate used for lower bound adjustment.
+ 
+ 2020-12-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/98256
+ 	* tree-ssa-math-opts.c (match_uaddsub_overflow): For BIT_NOT_EXPR,
+ 	only handle a single use, and insert .ADD_OVERFLOW before the
+ 	comparison rather than after the BIT_NOT_EXPR.  Return true iff
+ 	it is BIT_NOT_EXPR and it has been removed.
+ 	(math_opts_dom_walker::after_dom_children) <case BIT_NOT_EXPR>:
+ 	If match_uaddsub_overflow returned true, continue instead of break.
+ 
+ 2020-12-13  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Revert:
+ 	2020-12-13  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/arm_mve.h (__arm_vcaddq_rot90_u8, __arm_vcaddq_rot270_u8,
+ 	, __arm_vcaddq_rot90_s8, __arm_vcaddq_rot270_s8,
+ 	__arm_vcaddq_rot90_u16, __arm_vcaddq_rot270_u16, __arm_vcaddq_rot90_s16,
+ 	__arm_vcaddq_rot270_s16, __arm_vcaddq_rot90_u32,
+ 	__arm_vcaddq_rot270_u32, __arm_vcaddq_rot90_s32,
+ 	__arm_vcaddq_rot270_s32, __arm_vcmulq_rot90_f16,
+ 	__arm_vcmulq_rot270_f16, __arm_vcmulq_rot180_f16,
+ 	__arm_vcmulq_f16, __arm_vcaddq_rot90_f16, __arm_vcaddq_rot270_f16,
+ 	__arm_vcmulq_rot90_f32, __arm_vcmulq_rot270_f32,
+ 	__arm_vcmulq_rot180_f32, __arm_vcmulq_f32, __arm_vcaddq_rot90_f32,
+ 	__arm_vcaddq_rot270_f32, __arm_vcmlaq_f16, __arm_vcmlaq_rot180_f16,
+ 	__arm_vcmlaq_rot270_f16, __arm_vcmlaq_rot90_f16, __arm_vcmlaq_f32,
+ 	__arm_vcmlaq_rot180_f32, __arm_vcmlaq_rot270_f32,
+ 	__arm_vcmlaq_rot90_f32): Update builtin calls.
+ 	* config/arm/arm_mve_builtins.def (vcaddq_rot90_u, vcaddq_rot270_u,
+ 	vcaddq_rot90_s, vcaddq_rot270_s, vcaddq_rot90_f, vcaddq_rot270_f,
+ 	vcmulq_f, vcmulq_rot90_f, vcmulq_rot180_f, vcmulq_rot270_f,
+ 	vcmlaq_f, vcmlaq_rot90_f, vcmlaq_rot180_f, vcmlaq_rot270_f): Removed.
+ 	(vcaddq_rot90, vcaddq_rot270, vcmulq, vcmulq_rot90, vcmulq_rot180,
+ 	vcmulq_rot270, vcmlaq, vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270):
+ 	New.
+ 	* config/arm/constraints.md (Dz): Include MVE.
+ 	* config/arm/iterators.md (mve_rotsplit1, mve_rotsplit2): New.
+ 	(rot): Add UNSPEC_VCMLS, UNSPEC_VCMUL and UNSPEC_VCMUL180.
+ 	(rot_op, rotsplit1, rotsplit2, fcmac1, VCMLA_OP, VCMUL_OP): New.
+ 	* config/arm/mve.md (VCADDQ_ROT270_S, VCADDQ_ROT90_S, VCADDQ_ROT270_U,
+ 	VCADDQ_ROT90_U, VCADDQ_ROT270_F, VCADDQ_ROT90_F, VCMULQ_F,
+ 	VCMULQ_ROT180_F, VCMULQ_ROT270_F, VCMULQ_ROT90_F, VCMLAQ_F,
+ 	VCMLAQ_ROT180_F, VCMLAQ_ROT90_F, VCMLAQ_ROT270_F, VCADDQ_ROT270_S,
+ 	VCADDQ_ROT270, VCADDQ_ROT90): Removed.
+ 	(mve_rot, VCMUL): New.
+ 	(mve_vcaddq_rot270_<supf><mode, mve_vcaddq_rot90_<supf><mode>,
+ 	mve_vcaddq_rot270_f<mode>, mve_vcaddq_rot90_f<mode>, mve_vcmulq_f<mode,
+ 	mve_vcmulq_rot180_f<mode>, mve_vcmulq_rot270_f<mode>,
+ 	mve_vcmulq_rot90_f<mode>, mve_vcmlaq_f<mode>, mve_vcmlaq_rot180_f<mode>,
+ 	mve_vcmlaq_rot270_f<mode>, mve_vcmlaq_rot90_f<mode>): Removed.
+ 	(mve_vcmlaq<mve_rot><mode>, mve_vcmulq<mve_rot><mode>,
+ 	mve_vcaddq<mve_rot><mode>, cadd<rot><mode>3, mve_vcaddq<mve_rot><mode>):
+ 	New.
+ 	(cmul<rot_op><mode>3): Exclude MVE types.
+ 	* config/arm/unspecs.md (UNSPEC_VCMUL90, UNSPEC_VCMUL270): New.
+ 	* config/arm/vec-common.md (cadd<rot><mode>3, cmul<rot_op><mode>3,
+ 	arm_vcmla<rot><mode>, cml<fcmac1><rot_op><mode>4): New.
+ 	* config/arm/unspecs.md (UNSPEC_VCMUL, UNSPEC_VCMUL180, UNSPEC_VCMLS,
+ 	UNSPEC_VCMLS180): New.
+ 	* config/arm/neon.md (cmul<rot_op><mode>3): New.
+ 
+ 2020-12-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/92469
+ 	* varasm.c (eliminable_regno_p): New function.
+ 	(make_decl_rtl): Reject asm vars for frame and argp
+ 	if they are different from hard frame pointer.
+ 
+ 2020-12-13  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/arm_mve.h (__arm_vcaddq_rot90_u8, __arm_vcaddq_rot270_u8,
+ 	, __arm_vcaddq_rot90_s8, __arm_vcaddq_rot270_s8,
+ 	__arm_vcaddq_rot90_u16, __arm_vcaddq_rot270_u16, __arm_vcaddq_rot90_s16,
+ 	__arm_vcaddq_rot270_s16, __arm_vcaddq_rot90_u32,
+ 	__arm_vcaddq_rot270_u32, __arm_vcaddq_rot90_s32,
+ 	__arm_vcaddq_rot270_s32, __arm_vcmulq_rot90_f16,
+ 	__arm_vcmulq_rot270_f16, __arm_vcmulq_rot180_f16,
+ 	__arm_vcmulq_f16, __arm_vcaddq_rot90_f16, __arm_vcaddq_rot270_f16,
+ 	__arm_vcmulq_rot90_f32, __arm_vcmulq_rot270_f32,
+ 	__arm_vcmulq_rot180_f32, __arm_vcmulq_f32, __arm_vcaddq_rot90_f32,
+ 	__arm_vcaddq_rot270_f32, __arm_vcmlaq_f16, __arm_vcmlaq_rot180_f16,
+ 	__arm_vcmlaq_rot270_f16, __arm_vcmlaq_rot90_f16, __arm_vcmlaq_f32,
+ 	__arm_vcmlaq_rot180_f32, __arm_vcmlaq_rot270_f32,
+ 	__arm_vcmlaq_rot90_f32): Update builtin calls.
+ 	* config/arm/arm_mve_builtins.def (vcaddq_rot90_u, vcaddq_rot270_u,
+ 	vcaddq_rot90_s, vcaddq_rot270_s, vcaddq_rot90_f, vcaddq_rot270_f,
+ 	vcmulq_f, vcmulq_rot90_f, vcmulq_rot180_f, vcmulq_rot270_f,
+ 	vcmlaq_f, vcmlaq_rot90_f, vcmlaq_rot180_f, vcmlaq_rot270_f): Removed.
+ 	(vcaddq_rot90, vcaddq_rot270, vcmulq, vcmulq_rot90, vcmulq_rot180,
+ 	vcmulq_rot270, vcmlaq, vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270):
+ 	New.
+ 	* config/arm/constraints.md (Dz): Include MVE.
+ 	* config/arm/iterators.md (mve_rotsplit1, mve_rotsplit2): New.
+ 	(rot): Add UNSPEC_VCMLS, UNSPEC_VCMUL and UNSPEC_VCMUL180.
+ 	(rot_op, rotsplit1, rotsplit2, fcmac1, VCMLA_OP, VCMUL_OP): New.
+ 	* config/arm/mve.md (VCADDQ_ROT270_S, VCADDQ_ROT90_S, VCADDQ_ROT270_U,
+ 	VCADDQ_ROT90_U, VCADDQ_ROT270_F, VCADDQ_ROT90_F, VCMULQ_F,
+ 	VCMULQ_ROT180_F, VCMULQ_ROT270_F, VCMULQ_ROT90_F, VCMLAQ_F,
+ 	VCMLAQ_ROT180_F, VCMLAQ_ROT90_F, VCMLAQ_ROT270_F, VCADDQ_ROT270_S,
+ 	VCADDQ_ROT270, VCADDQ_ROT90): Removed.
+ 	(mve_rot, VCMUL): New.
+ 	(mve_vcaddq_rot270_<supf><mode, mve_vcaddq_rot90_<supf><mode>,
+ 	mve_vcaddq_rot270_f<mode>, mve_vcaddq_rot90_f<mode>, mve_vcmulq_f<mode,
+ 	mve_vcmulq_rot180_f<mode>, mve_vcmulq_rot270_f<mode>,
+ 	mve_vcmulq_rot90_f<mode>, mve_vcmlaq_f<mode>, mve_vcmlaq_rot180_f<mode>,
+ 	mve_vcmlaq_rot270_f<mode>, mve_vcmlaq_rot90_f<mode>): Removed.
+ 	(mve_vcmlaq<mve_rot><mode>, mve_vcmulq<mve_rot><mode>,
+ 	mve_vcaddq<mve_rot><mode>, cadd<rot><mode>3, mve_vcaddq<mve_rot><mode>):
+ 	New.
+ 	(cmul<rot_op><mode>3): Exclude MVE types.
+ 	* config/arm/unspecs.md (UNSPEC_VCMUL90, UNSPEC_VCMUL270): New.
+ 	* config/arm/vec-common.md (cadd<rot><mode>3, cmul<rot_op><mode>3,
+ 	arm_vcmla<rot><mode>, cml<fcmac1><rot_op><mode>4): New.
+ 	* config/arm/unspecs.md (UNSPEC_VCMUL, UNSPEC_VCMUL180, UNSPEC_VCMLS,
+ 	UNSPEC_VCMLS180): New.
+ 	* config/arm/neon.md (cmul<rot_op><mode>3): New.
+ 
+ 2020-12-13  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/arm.c (arm_preferred_simd_mode): Add E_HFmode.
+ 
+ 2020-12-13  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* tree-vect-slp-patterns.c: New file.
+ 	* Makefile.in: Add it.
+ 	* doc/passes.texi: Document it.
+ 	* internal-fn.def (COMPLEX_ADD_ROT90, COMPLEX_ADD_ROT270): New.
+ 	* optabs.def (cadd90_optab, cadd270_optab): New.
+ 	* doc/md.texi: Document them.
+ 	* tree-vect-loop.c (vect_analyze_loop_2): Add dissolve code.
+ 	* tree-vect-slp.c:
+ 	(vect_free_slp_instance, vect_create_new_slp_node): Export.
+ 	(vect_match_slp_patterns_2, vect_match_slp_patterns): New.
+ 	(vect_analyze_slp): Use it.
+ 	* tree-vectorizer.h (vect_free_slp_tree): Export.
+ 	(enum _complex_operation): Forward declare.
+ 	(class vect_pattern): New
+ 
+ 2020-12-13  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* tree-vect-patterns.c (vect_mark_pattern_stmts): Remove static inline.
+ 	* tree-vect-slp.c (vect_create_new_slp_node): Remove static and only
+ 	set smts if valid.
+ 	* tree-vectorizer.c (vec_info::add_pattern_stmt): New.
+ 	(vec_info::set_vinfo_for_stmt): Optionally enforce read-only.
+ 	* tree-vectorizer.h (struct _slp_tree): Use new types.
+ 	(lane_permutation_t, lane_permutation_t): New.
+ 	(vect_create_new_slp_node, vect_mark_pattern_stmts): New.
+ 
+ 2020-12-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* doc/sourcebuild.texi (Commands for use in dg-final, Scan the
+ 	assembly output, scan-assembler-symbol-section): Document.
+ 	(scan-symbol-section): Document.
+ 
+ 2020-12-13  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* is-a.h (reinterpret_is_a_helper): New class.
+ 	(static_is_a_helper): Likewise.
+ 	(is_a_helper): Inherit from reinterpret_is_a_helper.
+ 	(is_a_helper<const T *>): New specialization.
+ 
+ 2020-12-13  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* coretypes.h (iterator_range): Move to...
+ 	* iterator-utils.h: ...this new file.
+ 
+ 2020-12-13  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* rtlanal.c (noop_move_p): Don't check for REG_EQUAL notes.
+ 
+ 2020-12-13  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* vec.h (vnull::operator vec<T, A, L>): Make const.
+ 
+ 2020-12-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/96685
+ 	* match.pd (~(X - Y) -> ~X + Y): New optimization.
+ 	(~X + Y -> (Y - X) - 1): Likewise.
+ 
+ 2020-12-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/96272
+ 	* tree-ssa-math-opts.c (uaddsub_overflow_check_p): Add OTHER argument.
+ 	Handle BIT_NOT_EXPR.
+ 	(match_uaddsub_overflow): Optimize unsigned a > ~b into
+ 	__imag__ .ADD_OVERFLOW (a, b).
+ 	(math_opts_dom_walker::after_dom_children): Call match_uaddsub_overflow
+ 	even for BIT_NOT_EXPR.
+ 
+ 2020-12-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/98183
+ 	* omp-low.c (lower_omp_target): Don't add OMP_RETURN for
+ 	data regions.
+ 	* omp-expand.c (expand_omp_target): Don't try to remove
+ 	OMP_RETURN for data regions.
+ 	(build_omp_regions_1, omp_make_gimple_edges): Don't expect
+ 	OMP_RETURN for data regions.
+ 
+ 2020-12-11  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* gcc.c (cpp_unique_options): Add Mmodules, Mno-modules.
+ 	* tree-core.h (enum tree_index): Add TI_MODULE_HWM.
+ 
+ 2020-12-11  Jim Wilson  <jimw@sifive.com>
+ 
+ 	* varasm.c (get_section): Add DECL_P check before DECL_PRESERVE_P.
+ 
+ 2020-12-11  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/iterators.md (VDQ): Remove TARGET_HAVE_MVE
+ 	conditions.
+ 	* config/arm/vec-common.md (and<mode>3): Use
+ 	ARM_HAVE_<MODE>_ARITH.
+ 	(ior<mode>3): Likewise.
+ 
+ 2020-12-11  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_active_insn): Ignore all non essential
+ 	instructions when getting the next active instruction.
+ 	(check_store_cacheline_hazard): Update.
+ 	(workaround_arc_anomaly): Remove obsolete cache hazard code.
+ 
+ 2020-12-11  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_reorg): Avoid limm in BRcc.
+ 
+ 2020-12-11  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc-protos.h (arc_scheduling_not_expected): Remove
+ 	it.
+ 	(arc_sets_cc_p): Likewise.
+ 	(arc_need_delay): Likewise.
+ 	* config/arc/arc.c (arc_sets_cc_p): Likewise.
+ 	(arc_need_delay): Likewise.
+ 	(arc_scheduling_not_expected): Likewise.
+ 	* config/arc/arc.md: Convert adc/sbc patterns to simple
+ 	instruction definitions.
+ 
+ 2020-12-11  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/iterators.md (supf): Remove VORRQ_S and VORRQ_U.
+ 	(VORRQ): Remove.
+ 	* config/arm/mve.md (mve_vorrq_s<mode>): New entry for vorr
+ 	instruction using expression ior.
+ 	(mve_vorrq_u<mode>): New expander.
+ 	(mve_vorrq_f<mode>): Use ior code instead of unspec.
+ 	* config/arm/neon.md (ior<mode>3): Renamed into ior<mode>3_neon.
+ 	* config/arm/predicates.md (imm_for_neon_logic_operand): Enable
+ 	for MVE.
+ 	* config/arm/unspecs.md (VORRQ_S, VORRQ_U, VORRQ_F): Remove.
+ 	* config/arm/vec-common.md (ior<mode>3): New expander.
+ 
+ 2020-12-11  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (mpyd<su_optab>_arcv2hs): New template
+ 	pattern.
+ 	(*pmpyd<su_optab>_arcv2hs): Likewise.
+ 	(*pmpyd<su_optab>_imm_arcv2hs): Likewise.
+ 	(mpyd_arcv2hs): Moved into above template.
+ 	(mpyd_imm_arcv2hs): Moved into above template.
+ 	(mpydu_arcv2hs): Likewise.
+ 	(mpydu_imm_arcv2hs): Likewise.
+ 	(su_optab): New optab prefix for sign/zero-extending operations.
+ 
+ 2020-12-11  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/98219
+ 	* config/i386/uintrintrin.h (__uintr_frame): Remove uirrv.
+ 
+ 2020-12-11  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* doc/sourcebuild.texi (arm_softfloat): Improve documentation.
+ 
+ 2020-12-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/98229
+ 	* optabs.c (expand_doubleword_mod): Canonicalize op1 and
+ 	1 - INTVAL (op1) as word_mode constants when used in
+ 	word_mode arithmetics.
+ 
+ 2020-12-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/98235
+ 	* tree-vect-slp.c (vect_build_slp_tree): Exchange npermutes
+ 	for limit.  Decrement that for each cache miss and fail
+ 	discovery when it reaches zero.
+ 	(vect_build_slp_tree_2): Remove npermutes handling and
+ 	simply pass down limit.
+ 	(vect_build_slp_instance): Use pass down limit.
+ 	(vect_analyze_slp_instance): Likewise.
+ 	(vect_analyze_slp): Base the SLP discovery limit on
+ 	max_tree_size and pass it down.
+ 
+ 2020-12-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/98190
+ 	* expr.c (expand_assignment): If to_rtx is a promoted SUBREG,
+ 	ensure sign or zero extension either through use of store_expr
+ 	or by extending manually.
+ 
+ 2020-12-11  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	PR rtl-optimization/97092
+ 	* ira-color.c (update_costs_from_allocno): Do not carry over mode
+ 	between subsequent iterations.
+ 
+ 2020-12-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95582
+ 	* tree-vect-patterns.c (vect_recog_bool_pattern): Check
+ 	for VECT_SCALAR_BOOLEAN_TYPE_P, not just precision one.
+ 
+ 2020-12-11  Hongyu  <hongyu.wang@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h (get_available_features):
+ 	Move check for HRESET/AVX_VNNI/UINTR out of avx512_usable.
+ 
+ 2020-12-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/98212
+ 	* dojump.c (do_compare_rtx_and_jump): Change computation of
+ 	first_prob for and_them.  Add comment explaining and_them case.
+ 
+ 2020-12-10  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/98174
+ 	* gimple-range-cache.cc (ranger_cache::ssa_range_in_bb): Only push
+ 	poor values to be examined if it isn't a pure global.
+ 	(ranger_cache::block_range): Don't process pure globals.
+ 	(ranger_cache::fill_block_cache): Adjust has_edge_range call.
+ 	* gimple-range-gori.cc (gori_map::all_outgoing): New bitmap.
+ 	(gori_map::gori_map): Allocate all_outgoing.
+ 	(gori_map::is_export_p): No specified BB returns global context.
+ 	(gori_map::calculate_gori): Accumulate each block into global.
+ 	(gori_compute::gori_compute): Preprocess each block for exports.
+ 	(gori_compute::has_edge_range_p): No edge returns global context.
+ 	* gimple-range-gori.h (has_edge_range_p): Provide default parameter.
+ 
+ 2020-12-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* dwarf2out.c (loc_list_from_tree_1) <PLACEHOLDER_EXPR>: Deal with
+ 	a nested context type
+ 
+ 2020-12-10  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	* cfgexpand.c (expand_gimple_basic_block): Remove special handling
+ 	of debug_inline_entries without block info.
+ 	* tree-inline.c (remap_gimple_stmt): Drop debug_nonbind_markers when
+ 	the call statement has no block info.
+ 	(copy_debug_stmt): Remove debug_nonbind_markers when inlining
+ 	and the block info is mapped to NULL.
+ 	* tree-ssa-live.c (clear_unused_block_pointer): Remove
+ 	debug_nonbind_markers originating from removed inline functions.
+ 
+ 2020-12-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-stmts.c (vectorizable_assignment): Remove special
+ 	allowance of VECTOR_BOOLEAN_TYPE_P conversions.
+ 
+ 2020-12-10  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/iterators.md (supf): Remove VANDQ_S and VANDQ_U.
+ 	(VANQ): Remove.
+ 	(VDQ): Add TARGET_HAVE_MVE condition where relevant.
+ 	* config/arm/mve.md (mve_vandq_u<mode>): New entry for vand
+ 	instruction using expression 'and'.
+ 	(mve_vandq_s<mode>): New expander.
+ 	(mve_vaddq_n_f<mode>): Use 'and' code instead of unspec.
+ 	* config/arm/neon.md (and<mode>3): Rename into and<mode>3_neon.
+ 	* config/arm/predicates.md (imm_for_neon_inv_logic_operand):
+ 	Enable for MVE.
+ 	* config/arm/unspecs.md (VANDQ_S, VANDQ_U, VANDQ_F): Remove.
+ 	* config/arm/vec-common.md (and<mode>3): New expander.
+ 
+ 2020-12-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/98069
+ 	* tree-data-ref.c (compute_distributive_range): New function.
+ 	(nop_conversion_for_offset_p): Likewise.
+ 	(split_constant_offset): In the internal overload, treat integer
+ 	expressions as having an implicit cast to sizetype and express
+ 	them accordingly.  Pass back the range of the original (uncast)
+ 	expression in a new range parameter.
+ 	(split_constant_offset_1): Likewise.  Rework the handling of
+ 	conversions to account for the implicit sizetype casts.
+ 
+ 2020-12-10  Joel Hutton  <joel.hutton@arm.com>
+ 
+ 	PR tree-optimization/97929
+ 	* tree-vect-data-refs.c (vect_get_smallest_scalar_type): Add
+ 	WIDEN_PLUS/WIDEN_MINUS case.
+ 
+ 2020-12-10  Joel Hutton  <joel.hutton@arm.com>
+ 
+ 	* tree-pretty-print.c (dump_generic_node): Add case for
+ 	VEC_WIDEN_(PLUS/MINUS)_(HI/LO)_EXPR and WIDEN_(PLUS/MINUS)_EXPR.
+ 
+ 2020-12-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/98211
+ 	* tree-vect-stmts.c (vectorizable_assignment): Disallow
+ 	invalid conversions to bool vector types.
+ 
+ 2020-12-10  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* tree.c (build_common_builtin_nodes): Drop __builtin_ from
+ 	__clear_cache libname.
+ 
+ 2020-12-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/98212
+ 	* dojump.c (do_compare_rtx_and_jump): When splitting NE and backend
+ 	can do UNEQ, prefer splitting x != y into x unord y || !(x uneq y)
+ 	instead of into x unord y || x ltgt y.
+ 
+ 2020-12-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/98169
+ 	* dojump.c (do_compare_rtx_and_jump): Don't split self-EQ/NE
+ 	comparisons, just use ORDERED or UNORDERED.
+ 
+ 2020-12-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/98205
+ 	* omp-expand.c (expand_omp_for_generic): Fix up broken_loop handling.
+ 
+ 2020-12-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_get_and_check_slp_defs): Do
+ 	not mark the defs to occur in a pattern if it is the
+ 	pattern root and record the original stmt defs in that
+ 	case.
+ 
+ 2020-12-10  Simon Cook  <simon.cook@embecosm.com>
+ 
+ 	* config/riscv/multilib-generator (arch_canonicalize): Invoke
+ 	python interpreter when calling arch-canonicalize script.
+ 
+ 2020-12-10  Nikhil Benesch  <nikhil.benesch@gmail.com>
+ 
+ 	* godump.c (go_format_type): Don't consider whether a type has
+ 	been seen when determining whether to output a type by name.
+ 	Consider only the use_type_name parameter.
+ 	(go_output_typedef): When outputting a typedef, format the
+ 	declaration's original type, which contains the name of the
+ 	underlying type rather than the name of the typedef.
+ 
+ 2020-12-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR bootstrap/98188
+ 	* tree-ssa-phiopt.c (two_value_replacement): Don't special case
+ 	BOOLEAN_TYPEs for ranges, instead if get_range_info doesn't return
+ 	VR_RANGE, set min/max to wi::min/max_value.
+ 
+ 2020-12-09  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
+ 
+ 	* config/aarch64/aarch64-option-extensions.def
+ 	(AARCH64_OPT_EXTENSION): New +pauth option in -march for AArch64.
+ 	* config/aarch64/aarch64.h (AARCH64_FL_PAUTH): New pauth extension bitmask.
+ 	(AARCH64_ISA_PUATH): New ISA bitmask for PAUTH.
+ 	(AARCH64_FL_FOR_ARCH8_3): Add PAUTH to Armv8.3-A.
+ 	(TARGET_PAUTH): New target mask to isolate PAUTH instructions.
+ 	* config/aarch64/aarch64.md (do_return): Condition set to TARGET_PAUTH.
+ 	* doc/invoke.texi: Update docs for +flagm and +pauth.
+ 
+ 2020-12-09  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.h (REG_ALLOC_ORDER): Remove
+ 
+ 2020-12-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/98213
+ 	* tree-ssa-loop-im.c (sm_seq_valid_bb): Cache successfully
+ 	processed PHIs.
+ 	(hoist_memory_references): Adjust.
+ 
+ 2020-12-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (cpu_vector_cost): Move simd
+ 	fields to...
+ 	(simd_vec_cost): ... Here.  Define.
+ 	(advsimd_vec_cost): Define.
+ 	(sve_vec_cost): Define.
+ 	* config/aarch64/aarch64.c (generic_advsimd_vector_cost):
+ 	Define.
+ 	(generic_sve_vector_cost): Likewise.
+ 	(generic_vector_cost): Update.
+ 	(qdf24xx_advsimd_vector_cost): Define.
+ 	(qdf24xx_vector_cost): Update.
+ 	(thunderx_advsimd_vector_cost): Define.
+ 	(thunderx_vector_cost): Update.
+ 	(tsv110_advsimd_vector_cost): Define.
+ 	(tsv110_vector_cost): Likewise.
+ 	(cortexa57_advsimd_vector_cost): Define.
+ 	(cortexa57_vector_cost): Update.
+ 	(exynosm1_advsimd_vector_cost): Define.
+ 	(exynosm1_vector_cost): Update.
+ 	(xgene1_advsimd_vector_cost): Define.
+ 	(xgene1_vector_cost): Update.
+ 	(thunderx2t99_advsimd_vector_cost): Define.
+ 	(thunderx2t99_vector_cost): Update.
+ 	(thunderx3t110_advsimd_vector_cost): Define.
+ 	(thunderx3t110_vector_cost): Update.
+ 	(aarch64_builtin_vectorization_cost): Handle sve and advsimd
+ 	vector cost fields.
+ 
+ 2020-12-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/98199
+ 	* fold-const.c (native_encode_initializer): Fix handling bit-fields
+ 	when off > 0.
+ 
+ 2020-12-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/98193
+ 	* fold-const.c (native_encode_initializer): Set pos to field's
+ 	byte position if iterating over a field with missing initializer.
+ 
+ 2020-12-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/98182
+ 	* gimple-if-to-switch.cc (pass_if_to_switch::execute): Request
+ 	chain linkage through false edges only.
+ 
+ 2020-12-08  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* tree.h (DECL_ALIGN_RAW): New.
+ 	(DECL_ALIGN): Use it.
+ 	(DECL_WARN_IF_NOT_ALIGN_RAW): New.
+ 	(DECL_WARN_IF_NOT_ALIGN): Use it.
+ 	(SET_DECL_WARN_IF_NOT_ALIGN): Likewise.
+ 
+ 2020-12-08  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	PR target/66791
+ 	* config/arm/arm_neon.h: Replace calls to __builtin_vmvn* by ~
+ 	in vmvn intrinsics.
+ 	* config/arm/arm_neon_builtins.def: Remove entry for vmvn.
+ 
+ 2020-12-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94440
+ 	* config/i386/i386.opt (ix86_excess_precision,
+ 	ix86_unsafe_math_optimizations): New TargetVariables.
+ 	* config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): Use
+ 	ix86_unsafe_math_optimizations instead of
+ 	flag_unsafe_math_optimizations and ix86_excess_precision instead of
+ 	flag_excess_precision.
+ 	* config/i386/i386.c (ix86_excess_precision): Rename to ...
+ 	(ix86_get_excess_precision): ... this.
+ 	(TARGET_C_EXCESS_PRECISION): Define to ix86_get_excess_precision.
+ 	* config/i386/i386-options.c (ix86_valid_target_attribute_tree,
+ 	ix86_option_override_internal): Update ix86_unsafe_math_optimization
+ 	from flag_unsafe_math_optimizations and ix86_excess_precision
+ 	from flag_excess_precision when constructing target option nodes.
+ 	(ix86_set_current_function): If flag_unsafe_math_optimizations
+ 	or flag_excess_precision is different from the one recorded
+ 	in TARGET_OPTION_NODE, create a new target option node for the
+ 	current function and switch to that.
+ 
+ 2020-12-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/98192
+ 	* tree-vect-slp.c (vect_build_slp_instance): Get scalar_stmts
+ 	by reference.
+ 
+ 2020-12-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/98191
+ 	* tree-vect-slp.c (vect_slp_check_for_constructors): Do not
+ 	follow a non-SSA def chain.
+ 
+ 2020-12-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97559
+ 	* tree-ssa-sink.c (statement_sink_location): Never ignore
+ 	PHIs on sink paths in irreducible regions.
+ 
+ 2020-12-08  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	PR target/97872
+ 	* gimple-isel.cc (gimple_expand_vec_cond_expr): Try to fold
+ 	x CMP y ? -1 : 0 to x CMP y.
+ 
+ 2020-12-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/98180
+ 	* tree-vect-slp.c (vect_slp_check_for_constructors): Check the
+ 	first inserted value has a def.
+ 
+ 2020-12-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR tree-optimization/96344
+ 	* tree-switch-conversion.c (bit_test_cluster::emit): Compute the
+ 	range only if an entry test is necessary.  Merge the entry test in
+ 	the bit test when possible.  Use PREC local variable consistently.
+ 	When there is only one test, do a single gimplification at the end.
+ 
+ 2020-12-08  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	PR target/98152
+ 	* config.gcc (riscv*-*-*): Checking python, python3 or python2
+ 	is available, and skip doing with_arch canonicalize if no python
+ 	available.
+ 
+ 2020-12-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/98147
+ 	* builtins.c (default_emit_call_builtin___clear_cache): Call
+ 	convert_memory_address to ptr_mode on both begin and end.
+ 
+ 2020-12-07  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	* ipa-param-manipulation.c
+ 	(ipa_param_body_adjustments::modify_call_stmt): Set location info.
+ 
+ 2020-12-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* doc/extend.texi (used function attribute): Document saving
+ 	the declaration from linker garbage collection.
+ 	(used variable attribute): Likewise.
+ 
+ 2020-12-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/98113
+ 	* tree-vectorizer.h (struct slp_root): New.
+ 	(_bb_vec_info::roots): New member.
+ 	* tree-vect-slp.c (vect_analyze_slp): Also walk BB info
+ 	roots.
+ 	(_bb_vec_info::_bb_vec_info): Adjust.
+ 	(_bb_vec_info::~_bb_vec_info): Likewise.
+ 	(vld_cmp): New.
+ 	(vect_slp_is_lane_insert): Likewise.
+ 	(vect_slp_check_for_constructors): Match a series of
+ 	BIT_INSERT_EXPRs as vector constructor.
+ 	(vect_slp_analyze_bb_1): Continue if BB info roots is
+ 	not empty.
+ 	(vect_slp_analyze_bb_1): Mark the whole BIT_INSERT_EXPR root
+ 	sequence as pure_slp.
+ 
+ 2020-12-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/98117
+ 	* tree-vect-loop-manip.c (vect_gen_vector_loop_niters):
+ 	Properly handle degenerate niter when setting the vector
+ 	loop IV range.
+ 
+ 2020-12-07  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_emit_stack_probe): Change Pmode to
+ 	word_mode.
+ 
+ 2020-12-07  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/97816
+ 	* ipa-cp.c (safe_add): Removed.
+ 	(good_cloning_opportunity_p): Remove special handling of INT_MAX.
+ 	(value_topo_info<valtype>::propagate_effects): Take care not to
+ 	propagate from size one value to another through more sources.  Scale
+ 	propagated times with edge frequencies.  Include local time and size
+ 	in propagates ones here.  Take care not to overflow size.
+ 	(decide_about_value): Do not add local and propagated effects when
+ 	passing them to good_cloning_opportunity_p.
+ 
+ 2020-12-07  Matthias Klose  <doko@ubuntu.com>
+ 
+ 	* genextract.c (print_header): Undefine ENABLE_RTL_CHECKING
+ 	and ENABLE_RTL_FLAG_CHECKING.
+ 
+ 2020-12-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/98137
+ 	* tree-data-ref.c (split_constant_offset_1): Use
+ 	determine_value_range instead of get_range_info to handle
+ 	arbitrary expressions.
+ 
+ 2020-12-06  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/98162
+ 	* doc/extend.texi: Remove -mcet.
+ 
+ 2020-12-06  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/98161
+ 	* config/i386/i386-features.c (pseudo_reg_set): Check mode of
+ 	pseudo register push.
+ 
+ 2020-12-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/96232
+ 	* tree-ssa-phiopt.c (two_value_replacement): Optimize even boolean lhs
+ 	cases as long as arg0 has wider precision and conditional_replacement
+ 	doesn't handle that case.
+ 	(tree_ssa_phiopt_worker): Don't call two_value_replacement during
+ 	early phiopt.
+ 
+ 2020-12-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/96232
+ 	* match.pd (-(type)!A -> (type)A - 1): New optimization.
+ 
+ 2020-12-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 	    David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* config/rs6000/xcoff.h (ASM_OUTPUT_DEF): Reference macro arguments.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	PR target/95294
+ 	* config/vax/elf.h (REGISTER_NAMES): Append `%psl'.
+ 	* config/vax/vax-modes.def (CCN, CCNZ, CCZ): New modes.
+ 	* config/vax/vax-protos.h (vax_select_cc_mode): New prototype.
+ 	(vax_maybe_split_dimode_move): Likewise.
+ 	(vax_notice_update_cc): Remove prototype.
+ 	* config/vax/vax.c (TARGET_FLAGS_REGNUM): New macro.
+ 	(TARGET_CC_MODES_COMPATIBLE): Likewise.
+ 	(TARGET_MD_ASM_ADJUST): Likewise.
+ 	(vax_select_cc_mode): New function
+ 	(vax_cc_modes_compatible): Likewise.
+ 	(vax_md_asm_adjust): Likewise.
+ 	(vax_notice_update_cc): Remove function.
+ 	(vax_output_int_move): Factor out code checking if a DImode move
+ 	may have to be split...
+ 	(vax_maybe_split_dimode_move): ... into this new function.
+ 	* config/vax/vax.h (FIRST_PSEUDO_REGISTER): Bump up.
+ 	(FIXED_REGISTERS): Append an entry for PSL.
+ 	(CALL_USED_REGISTERS): Likewise.
+ 	(NOTICE_UPDATE_CC, OUTPUT_JUMP): Remove macros.
+ 	(SELECT_CC_MODE): New macro.
+ 	(REGISTER_NAMES): Append `psl'.
+ 	* config/vax/predicates.md (const_zero_operand)
+ 	(vax_cc_comparison_operator, vax_ccn_comparison_operator)
+ 	(vax_ccnz_comparison_operator, vax_ccz_comparison_operator):
+ 	New predicates.
+ 	* config/vax/builtins.md: Rewrite for MODE_CC representation.
+ 	* config/vax/vax.md: Likewise.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/elf.h (VAX_CC1_SPEC, VAX_CC1PLUS_SPEC): New macros.
+ 	* config/vax/netbsd-elf.h (CC1_SPEC): Use VAX_CC1_SPEC rather
+ 	than VAX_CC1_AND_CC1PLUS_SPEC.
+ 	(CC1PLUS_SPEC): Use VAX_CC1PLUS_SPEC rather than
+ 	VAX_CC1_AND_CC1PLUS_SPEC.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/pdp11/pdp11.md (fcc_cc, fcc_ccnz): Use
+ 	`const_double_zero' to express double zero constant.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* read-rtl.c (rtx_reader::read_rtx_code): Handle syntactic
+ 	`const_double_zero' rtx.
+ 	* doc/rtl.texi (Constant Expression Types): Document it.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.md (divmoddisi4, *amulsi4): Make the comment
+ 	notation consistent with the rest of the file.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.md (movti): Fix output predicate.  Emit `movo'
+ 	rather than `movh'.
+ 	(divmoddisi4): Fix output predicates, correct RTL.
+ 	(*amulsi4): Name insn.  Fix output predicate.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.md (mulsidi3): Fix the multiplicand predicates.
+ 	(*maddsidi4, *maddsidi4_const): Likewise.  Name insns.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.md (*cmpv_2): Name insn.
+ 	(*cmpv, *cmpzv, *cmpzv_2): Likewise.  Fix location predicate and
+ 	constraint.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.md (extv): Rename insn to...
+ 	(*extv): ... this.
+ 	(extv): New expander.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.md (*insv_aligned, *extzv_aligned)
+ 	(*extv_aligned): Also make sure the memory address of a bit-field
+ 	location can be adjusted in the PIC mode.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.md (*insv_aligned, *extzv_aligned)
+ 	(*extv_aligned): Reject register bit-field locations that are not
+ 	aligned to the least significant bit; update output statement
+ 	accordingly.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.md (*insv_aligned, *extzv_aligned)
+ 	(*extv_aligned, *extv_non_const, *extzv_non_const): Name insns.
+ 	Fix location predicate.
+ 	(*extzv): Name insn.
+ 	(*insv): Likewise.  Fix location constraint.
+ 	(*insv_2): Likewise, and the predicate.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.md (cpymemhi1): Rename insn to...
+ 	(movmemhi1): ... this.
+ 	(cpymemhi): Update accordingly.  Remove constraints.
+ 	(movmemhi): New expander.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/builtins.md: Add a peephole2 for QImode and HImode
+ 	`ctz' operations.
+ 	(any_extend): New code iterator.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/builtins.md (width): New mode attribute.
+ 	(ffssi2): Rework expander into...
+ 	(ffs<mode>2): ... this.
+ 	(ctzsi2): Rework insn into...
+ 	(ctz<mode>2): ... this.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/builtins.md (ffssi2_internal): Rename insn to...
+ 	(ctzsi2): ... this.  Update the RTL operation.
+ 	(ffssi2): Update accordingly.
+ 	* config/vax/vax.c (vax_notice_update_cc): Handle CTZ.
+ 	* config/vax/vax.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.md: Include `builtins.md'.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/predicates.md (volatile_mem_operand)
+ 	(any_memory_operand): New predicates.
+ 	* config/vax/builtins.md (VUNSPEC_UNLOCK): Remove constant.
+ 	(sync_lock_test_and_set<mode>): Remove `set' and `unspec'
+ 	operations, match operands only.  Reformat.
+ 	(sync_lock_release<mode>): Likewise.  Remove cruft.
+ 	(jbb<ccss>i<mode>): Wrap into `unspec_volatile', use
+ 	`any_memory_operand' predicate.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/builtins.md (bit): New int iterator.
+ 	(ccss): New int attribute.
+ 	(jbbssi<mode>, jbbcci<mode>): Fold insns into...
+ 	(jbb<ccss>i<mode>): ... this.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/builtins.md (bb_mem): New mode attribute.
+ 	(jbbssiqi, jbbssihi, jbbssisi): Fold insns into...
+ 	(jbbssi<mode>): ... this.
+ 	(jbbcciqi, jbbccihi, jbbccisi): Likewise...
+ 	(jbbcci<mode>): ... this.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* jump.c (pc_set): Also accept a jump wrapped in UNSPEC or
+ 	UNSPEC_VOLATILE.
+ 	(any_uncondjump_p, any_condjump_p): Update comment accordingly.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* loop-doloop.c (add_test): Only remove the jump if `onlyjump_p'.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* cfgrtl.c (rtl_block_empty_p): Return false if `!onlyjump_p'
+ 	too.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* sel-sched-ir.c (maybe_tidy_empty_bb): Only try to remove a
+ 	conditional jump if `onlyjump_p'.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* loop-iv.c (simplify_using_initial_values): Only process jumps
+ 	that match `onlyjump_p'.
+ 	(check_simple_exit): Likewise.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* ifcvt.c (dead_or_predicable) [!IFCVT_MODIFY_TESTS]: Bail out
+ 	if `!onlyjump_p'.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* read-rtl.c: Add a page-feed separator at the start of iterator
+ 	code.
+ 	(struct iterator_group): Change the return type to HOST_WIDE_INT
+ 	for the `find_builtin' member.  Likewise the second parameter
+ 	type for the `apply_iterator' member.
+ 	(atoll) [!HAVE_ATOQ]: Reorder.
+ 	(find_mode, find_code): Change the return type to HOST_WIDE_INT.
+ 	(apply_mode_iterator, apply_code_iterator)
+ 	(apply_subst_iterator): Change the second parameter type to
+ 	HOST_WIDE_INT.
+ 	(find_int): Handle input suitable for HOST_WIDE_INT output.
+ 	(apply_int_iterator): Rewrite in terms of explicit format
+ 	interpretation.
+ 	(rtx_reader::read_rtx_operand) <'w'>: Fold into...
+ 	<'i', 'n', 'p'>: ... this.
+ 	* doc/md.texi (Int Iterators): Document 'w' rtx format support.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/builtins.md (ffssi2): Make preparation statements
+ 	actually buildable.
+ 	(ffssi2_internal): Fix input constraints; make the RTL pattern
+ 	match reality for `cc0'.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.c (vax_address_cost): Express the cost in terms
+ 	of COSTS_N_INSNS.
+ 	(vax_rtx_costs): Likewise.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/constraints.md (A): New constraint.
+ 	* config/vax/predicates.md (external_symbolic_operand)
+ 	(external_const_operand): Remove predicates.
+ 	(local_symbolic_operand): Rename to...
+ 	(pic_symbolic_operand): ... this, and rework.
+ 	(external_memory_operand): Rename to...
+ 	(non_pic_external_memory_operand): ... this, and rework.
+ 	(illegal_blk_memory_operand, illegal_addsub_di_memory_operand):
+ 	Update accordingly.
+ 	* config/vax/vax-protos.h (vax_acceptable_pic_operand_p): New
+ 	prototype.
+ 	* config/vax/vax.c (vax_acceptable_pic_operand_p): New function.
+ 	(vax_output_int_add): Update according to predicate rework.
+ 	* config/vax/vax.h (LEGITIMATE_PIC_OPERAND_P): New macro.
+ 	* config/vax/vax.md (pushlclsymreg, pushextsymreg): Fold
+ 	together, and rename to...
+ 	(*pushsymreg): ... this.  Use the `pic_symbolic_operand'
+ 	predicate and the `A' constraint for the displacement operand.
+ 	(movlclsymreg, movextsymreg): Fold together, and rename to...
+ 	(*movsymreg): ... this.  Use the `pic_symbolic_operand'
+ 	predicate and the `A' constraint for the displacement operand.
+ 	(pushextsym, pushlclsym): Fold together, and rename to...
+ 	(*pushsym): ... this.  Use the `pic_symbolic_operand' predicate
+ 	and the `A' constraint for the displacement operand.
+ 	(movextsym, movlclsym): Fold together, and rename to...
+ 	(*movsym): ... this.  Use the `pic_symbolic_operand' predicate
+ 	and the `A' constraint for the displacement operand.
+ 
+ 2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.c (print_operand): Replace `c' and `C' with
+ 	`k' and `K' respectively.
+ 	* config/vax/vax.md (*branch, *branch_reversed): Update
+ 	accordingly.
+ 
+ 2020-12-05  Matt Thomas  <matt@3am-software.com>
+ 	    Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	PR target/58901
+ 	* reload.c (push_reload): Also reload the inner expression of a
+ 	SUBREG for pseudos associated with a mode-dependent memory
+ 	reference.
+ 	(find_reloads): Force a reload likewise.
+ 
+ 2020-12-05  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	PR rtl-optimization/97421
+ 	* modulo-sched.c (generate_prolog_epilog): Remove forward
+ 	declaration, adjust last argument name and type.
+ 	(const_iteration_count): Add bool pointer parameter to return
+ 	whether count register is read in pre-header after its
+ 	initialization.
+ 	(sms_schedule): Fix count register initialization adjustment
+ 	procedure according to what const_iteration_count said.
+ 
+ 2020-12-05  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/97865
+ 	* configure: Regenerate.
+ 
+ 2020-12-05  Venkataramanan Kumar  <Venkataramanan.Kumar@amd.com>
+ 	    Sharavan Kumar  <Shravan.Kumar@amd.com>
+ 
+ 	* common/config/i386/cpuinfo.h (get_amd_cpu) recognize znver3.
+ 	* common/config/i386/i386-common.c (processor_names): Add
+ 	znver3.
+ 	(processor_alias_table): Add znver3 and AMDFAM19H entry.
+ 	* common/config/i386/i386-cpuinfo.h (processor_types): Add
+ 	AMDFAM19H.
+ 	(processor_subtypes): AMDFAM19H_ZNVER3.
+ 	* config.gcc (i[34567]86-*-linux* | ...): Likewise.
+ 	* config/i386/driver-i386.c: (host_detect_local_cpu): Let
+ 	-march=native recognize znver3 processors.
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Add
+ 	znver3.
+ 	* config/i386/i386-options.c (m_znver3): New definition.
+ 	(m_ZNVER): Include m_znver3.
+ 	(processor_cost_table): Add znver3.
+ 	* config/i386/i386.c (ix86_reassociation_width): Likewise.
+ 	* config/i386/i386.h (TARGET_znver3): New definition.
+ 	(enum processor_type): Add PROCESSOR_ZNVER3.
+ 	* config/i386/i386.md (define_attr "cpu"): Add znver3.
+ 	* config/i386/x86-tune-sched.c: (ix86_issue_rate): Likewise.
+ 	(ix86_adjust_cost): Likewise.
+ 	* config/i386/x86-tune.def (X86_TUNE_AVOID_256FMA_CHAINS:
+ 	Likewise.
+ 	* config/i386/znver1.md: Add new reservations for znver3.
+ 	* doc/extend.texi: Add details about znver3.
+ 	* doc/invoke.texi: Likewise.
+ 
+ 2020-12-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/96226
+ 	* config/i386/i386.md (splitter after *<rotate_insn><mode>3_mask,
+ 	splitter after *<rotate_insn><mode>3_mask_1): Drop the masking from
+ 	the patterns to split into.
+ 
+ 2020-12-04  Jason Merrill  <jason@redhat.com>
+ 
+ 	* vec.h (begin, end): Add overloads for vec*.
+ 	* tree.c (build_constructor_from_vec): Remove *.
+ 
+ 2020-12-04  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+ 	Change PTR_SIZE to POINTER_SIZE_UNITS.
+ 
+ 2020-12-04  Hans-Peter Nilsson  <hp@axis.com>
+ 	    Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/94600
+ 	* doc/implement-c.texi (Qualifiers implementation): Add blurb
+ 	about access to the whole of a volatile aggregate object, only for
+ 	same-size as a scalar object.
+ 
+ 2020-12-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/98130
+ 	* gimple.c (gimple_call_fnspec): Only return ".co " for replaceable
+ 	operator delete or ".mC" for replaceable operator new called from
+ 	new/delete.
+ 
+ 2020-12-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/96226
+ 	* config/i386/i386.md (splitter after *<rotate_insn><mode>3_mask,
+ 	splitter after *<rotate_insn><mode>3_mask_1): New combine splitters.
+ 
+ 2020-12-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libstdc++/93121
+ 	* fold-const.c (native_encode_initializer): Use build_zero_cst
+ 	instead of build_constructor.
+ 
+ 2020-12-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/98100
+ 	* cfgexpand.c (expand_gimple_basic_block): For vars with
+ 	vector type, use TYPE_MODE rather than DECL_MODE.
+ 
+ 2020-12-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* common.opt (-gdwarf32, -gdwarf64): New options.
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Default
+ 	dwarf_offset_size to 8 if not overridden from the command line.
+ 	* dwarf2out.c: Change all occurrences of DWARF_OFFSET_SIZE to
+ 	dwarf_offset_size.
+ 	* doc/invoke.texi (-gdwarf32, -gdwarf64): Document.
+ 
+ 2020-12-04  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/tm.texi: Change argument of the record_gcc_switches
+ 	hook and remove SWITCH_TYPE_* enum values.
+ 	* dwarf2out.c (gen_producer_string): Move to opts.c and remove
+ 	handling of the dwarf_record_gcc_switches option.
+ 	(dwarf2out_early_finish): Use moved gen_producer_string
+ 	function.
+ 	* opts.c (gen_producer_string): New.
+ 	* opts.h (gen_producer_string): New.
+ 	* target.def: Change type of record_gcc_switches.
+ 	* target.h (enum print_switch_type): Remove.
+ 	(elf_record_gcc_switches): Change first argument.
+ 	* toplev.c (MAX_LINE): Remove.
+ 	(print_to_asm_out_file):  Likewise.
+ 	(print_to_stderr): Likewise.
+ 	(print_single_switch): Likewise.
+ 	(print_switch_values): Likewise.
+ 	(init_asm_output): Use new gen_producer_string function.
+ 	(process_options): Likewise.
+ 	* varasm.c (elf_record_gcc_switches): Just save the string argument
+ 	to the ELF container.
+ 
+ 2020-12-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* ipa-sra.c (verify_access_tree_1): Relax assertion on the size.
+ 
+ 2020-12-04  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/invoke.texi: Add missing params.
+ 
+ 2020-12-03  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c++/90629
+ 	PR middle-end/94527
+ 	* builtins.c (access_ref::access_ref): Initialize new member.
+ 	(compute_objsize): Use access_ref::deref.  Handle simple pointer
+ 	assignment.
+ 	(expand_builtin): Remove handling of the free built-in.
+ 	(call_dealloc_argno): Same.
+ 	(find_assignment_location): New function.
+ 	(fndecl_alloc_p): Same.
+ 	(gimple_call_alloc_p): Same.
+ 	(call_dealloc_p): Same.
+ 	(matching_alloc_calls_p): Same.
+ 	(warn_dealloc_offset): Same.
+ 	(maybe_emit_free_warning): Same.
+ 	* builtins.h (struct access_ref): Declare new member.
+ 	(maybe_emit_free_warning): Make extern.  Make use of access_ref.
+ 	Handle -Wmismatched-new-delete.
+ 	* calls.c (initialize_argument_information): Call
+ 	maybe_emit_free_warning.
+ 	* doc/extend.texi (attribute malloc): Update.
+ 	* doc/invoke.texi (-Wfree-nonheap-object): Expand documentation.
+ 	(-Wmismatched-new-delete): Document new option.
+ 	(-Wmismatched-dealloc): Document new option.
+ 
+ 2020-12-03  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* tree.c (build_common_builtin_nodes): Declare
+ 	__builtin___clear_cache for all languages.
+ 	* builtins.c (maybe_emit_call_builtin___clear_cache): Accept
+ 	Pmode arguments.
+ 
+ 2020-12-03  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config/arm/t-rtems: Add "-mthumb -mcpu=cortex-r52
+ 	-mfloat-abi=hard" multilib.
+ 
+ 2020-12-03  Uroš Bizjak  <ubizjak@gmail.com>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/98086
+ 	* config/i386/i386.c (ix86_md_asm_adjustmd): Rewrite
+ 	zero-extension part to use convert_to_mode.
+ 
+ 2020-12-03  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/s390.md ("@probe_stack2<mode>"): Change mode
+ 	iterator to W.
+ 
+ 2020-12-03  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins-base.cc (svundef_impl::fold):
+ 	Delete.
+ 
+ 2020-12-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR middle-end/98099
+ 	* expmed.c (flip_storage_order): In the case of a non-integer mode,
+ 	sorry out if the integer mode to be used instead is not supported.
+ 
+ 2020-12-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR middle-end/98082
+ 	* function.c (use_register_for_decl): Also return true for a result
+ 	if cfun->tail_call_marked is true.
+ 
+ 2020-12-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libstdc++/93121
+ 	* fold-const.h (native_encode_initializer): Add mask argument
+ 	defaulted to nullptr.
+ 	(find_bitfield_repr_type): Declare.
+ 	(native_interpret_aggregate): Declare.
+ 	* fold-const.c (find_bitfield_repr_type): New function.
+ 	(native_encode_initializer): Add mask argument and support for
+ 	filling it.  Handle also some bitfields without integral
+ 	DECL_BIT_FIELD_REPRESENTATIVE.
+ 	(native_interpret_aggregate): New function.
+ 	* gimple-fold.h (clear_type_padding_in_mask): Declare.
+ 	* gimple-fold.c (struct clear_padding_struct): Add clear_in_mask
+ 	member.
+ 	(clear_padding_flush): Handle buf->clear_in_mask.
+ 	(clear_padding_union): Copy clear_in_mask.  Don't error if
+ 	buf->clear_in_mask is set.
+ 	(clear_padding_type): Don't error if buf->clear_in_mask is set.
+ 	(clear_type_padding_in_mask): New function.
+ 	(gimple_fold_builtin_clear_padding): Set buf.clear_in_mask to false.
+ 	* doc/extend.texi (__builtin_bit_cast): Document.
+ 
+ 2020-12-03  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 
+ 	* tree-ssa-threadedge.c (record_temporary_equivalences_from_stmts_at_dest):
+ 	Do not allow __builtin_constant_p on a threading path.
+ 
+ 2020-12-03  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 
+ 	* tree-ssa-strlen.c (printf_strlen_execute): Avoid division by
+ 	0.
+ 
+ 2020-12-03  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/multilib-generator (arch_canonicalize): Move
+ 	code to arch-canonicalize, and call that script to canonicalize arch
+ 	string.
+ 	(canonical_order): Move code to arch-canonicalize.
+ 	(LONG_EXT_PREFIXES): Ditto.
+ 	(IMPLIED_EXT): Ditto.
+ 	* config/riscv/arch-canonicalize: New.
+ 	* config.gcc (riscv*-*-*): Canonicalize --with-arch.
+ 
+ 2020-12-03  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
+ 
+ 	* config/aarch64/aarch64-option-extensions.def
+ 	(AARCH64_OPT_EXTENSION): New +flagm option in -march for AArch64.
+ 	* config/aarch64/aarch64.h (AARCH64_FL_FLAGM): Add new flagm extension bit
+ 	mask.
+ 	(AARCH64_FL_FOR_ARCH8_4): Add flagm to Armv8.4-A.
+ 	* doc/invoke.texi: Update docs with +flagm.
+ 
+ 2020-12-03  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/96906
+ 	* config/i386/sse.md
+ 	(<avx512>_ucmp<mode>3<mask_scalar_merge_name>): Add a new
+ 	define_split after this insn.
+ 
+ 2020-12-03  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/97642
+ 	* config/i386/i386-expand.c
+ 	(ix86_expand_special_args_builtin): Don't move all-ones mask
+ 	operands into register.
+ 	* config/i386/sse.md (UNSPEC_MASKLOAD): New unspec.
+ 	(*<avx512>_load<mode>_mask): New define_insns for masked load
+ 	instructions.
+ 	(<avx512>_load<mode>_mask): Changed to define_expands which
+ 	specifically handle memory or all-ones mask operands.
+ 	(<avx512>_blendm<mode>): Changed to define_insns which are same
+ 	as original <avx512>_load<mode>_mask with adjustment of
+ 	operands order.
+ 	(*<avx512>_load<mode>): New define_insn_and_split which is
+ 	used to optimize for masked load with all one mask.
+ 
+ 2020-12-03  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	PR target/97770
+ 	* config/i386/sse.md (popcount<mode>2): New expander
+ 	for SI/DI vector modes.
+ 	(popcount<mode>2): Likewise for QI/HI vector modes.
+ 
+ 2020-12-03  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* builtins.c (default_emit_call_builtin___clear_cache): New.
+ 	(maybe_emit_call_builtin___clear_cache): New.
+ 	(expand_builtin___clear_cache): Split into the above.
+ 	(expand_builtin): Do not issue clear_cache call any more.
+ 	* builtins.h (maybe_emit_call_builtin___clear_cache): Declare.
+ 	* config/aarch64/aarch64.c (aarch64_trampoline_init): Use
+ 	maybe_emit_call_builtin___clear_cache.
+ 	* config/arc/arc.c (arc_trampoline_init): Likewise.
+ 	* config/arm/arm.c (arm_trampoline_init): Likewise.
+ 	* config/c6x/c6x.c (c6x_initialize_trampoline): Likewise.
+ 	* config/csky/csky.c (csky_trampoline_init): Likewise.
+ 	* config/m68k/linux.h (FInALIZE_TRAMPOLINE): Likewise.
+ 	* config/tilegx/tilegx.c (tilegx_trampoline_init): Likewise.
+ 	* config/tilepro/tilepro.c (tilepro_trampoline_init): Ditto.
+ 	* config/vxworks.c: Include rtl.h, memmodel.h, and optabs.h.
+ 	(vxworks_emit_call_builtin___clear_cache): New.
+ 	* config/vxworks.h (CLEAR_INSN_CACHE): Drop.
+ 	(TARGET_EMIT_CALL_BUILTIN___CLEAR_CACHE): Define.
+ 	* target.def (trampoline_init): In the documentation, refer to
+ 	maybe_emit_call_builtin___clear_cache.
+ 	(emit_call_builtin___clear_cache): New.
+ 	* doc/tm.texi.in: Add new hook point.
+ 	(CLEAR_CACHE_INSN): Remove duplicate 'both'.
+ 	* doc/tm.texi: Rebuilt.
+ 	* targhooks.h (default_meit_call_builtin___clear_cache):
+ 	Declare.
+ 	* tree.h (BUILTIN_ASM_NAME_PTR): New.
+ 
+ 2020-12-03  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 
+ 	* tree-ssa-threadbackward.c (thread_jumps::profitable_jump_thread_path):
+ 	Do not allow __builtin_constant_p on a threading path.
+ 
+ 2020-12-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* dwarf2out.c (add_scalar_info): Only use add_AT_wide for 128-bit
+ 	constants and only in dwarf-5 or later, where DW_FORM_data16 is
+ 	available.  Otherwise use DW_FORM_block*/DW_FORM_exprloc with
+ 	DW_OP_implicit_value to describe the constant.
+ 
+ 2020-12-02  qing zhao  <qinzhao@gcc.gnu.org>
+ 
+ 	PR rtl-optimization/97777
+ 	* reg-stack.c (rest_of_handle_stack_regs): call
+ 	df_insn_rescan_all if reg_to_stack return true.
+ 
+ 2020-12-02  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 
+ 	* config/s390/s390-protos.h (s390_const_int_pool_entry_p): New
+ 	function.
+ 	* config/s390/s390.c (s390_const_int_pool_entry_p): New
+ 	function.
+ 	* config/s390/s390.md: Add define_peephole2 that produces llihf
+ 	and oilf.
+ 
+ 2020-12-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97630
+ 	* tree-vectorizer.h (_slp_tree::next_node,
+ 	_slp_tree::prev_node): New.
+ 	(vect_slp_init): Declare.
+ 	(vect_slp_fini): Likewise.
+ 	* tree-vectorizer.c (vectorize_loops): Call vect_slp_init/fini.
+ 	(pass_slp_vectorize::execute): Likewise.
+ 	* tree-vect-slp.c (vect_slp_init): New.
+ 	(vect_slp_fini): Likewise.
+ 	(slp_first_node): New global.
+ 	(_slp_tree::_slp_tree): Link node into the SLP tree list.
+ 	(_slp_tree::~_slp_tree): Delink node from the SLP tree list.
+ 
+ 2020-12-02  Scott Snyder  <sss@li-snyder.org>
+ 
+ 	PR plugins/98059
+ 	* vec.h (auto_delete_vec): Use
+ 	DISABLE_COPY_AND_ASSIGN(auto_delete_vec) instead of
+ 	DISABLE_COPY_AND_ASSIGN(auto_delete_vec<T>) to make it valid C++20
+ 	after DR2237.
+ 
+ 2020-12-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/98075
+ 	* cgraph.c (cgraph_node::dump): Dump decl_is_malloc flag.
+ 	* ipa-pure-const.c (propagate_malloc): Do not set malloc
+ 	attribute for void functions.
+ 
+ 2020-12-02  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR middle-end/93195
+ 	PR middle-end/93197
+ 	* configure.ac (HAVE_GAS_SECTION_LINK_ORDER): New.  Define 1 if
+ 	the assembler supports the section flag 'o' for specifying
+ 	section with link-order.
+ 	* output.h (SECTION_LINK_ORDER): New.  Defined to 0x8000000.
+ 	(SECTION_MACH_DEP): Changed from 0x8000000 to 0x10000000.
+ 	* targhooks.c (default_print_patchable_function_entry): Pass
+ 	SECTION_LINK_ORDER to switch_to_section if the section flag 'o'
+ 	works.  Pass current_function_decl to switch_to_section.
+ 	* varasm.c (default_elf_asm_named_section): Use 'o' flag for
+ 	SECTION_LINK_ORDER if assembler supports it.
+ 	* config.in: Regenerated.
+ 	* configure: Likewise.
+ 	* doc/sourcebuild.texi: Document o_flag_in_section.
+ 
+ 2020-12-02  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	* config/i386/i386.opt: Add the missing '.' for -mneeded.
+ 
+ 2020-12-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.c (vect_transform_loop_stmt): Return whether
+ 	we vectorized a stmt.
+ 	(vect_transform_loop): Only call maybe_set_vectorized_backedge_value
+ 	when we vectorized the stmt.
+ 
+ 2020-12-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* expmed.h (expand_divmod): Only declare if GCC_OPTABS_H is defined.
+ 	Add enum optabs_method argument defaulted to OPTAB_LIB_WIDEN.
+ 	* expmed.c: Include expmed.h after optabs.h.
+ 	(expand_divmod): Add methods argument, if it is not OPTAB_{,LIB_}WIDEN,
+ 	don't choose a wider mode, and pass it to other calls instead of
+ 	hardcoded OPTAB_LIB_WIDEN.  Avoid emitting libcalls if not
+ 	OPTAB_LIB or OPTAB_LIB_WIDEN.
+ 	* optabs.c: Include expmed.h after optabs.h.
+ 	(expand_doubleword_mod, expand_doubleword_divmod): Pass OPTAB_DIRECT
+ 	as last argument to expand_divmod.
+ 	(expand_binop): Punt if {s,u}divmod_optab has handler for double-word
+ 	int_mode.
+ 	* expr.c: Include expmed.h after optabs.h.
+ 	* explow.c: Include expmed.h after optabs.h.
+ 
+ 2020-12-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/97459
+ 	* optabs.h (expand_doubleword_divmod): Declare.
+ 	* optabs.c (expand_doubleword_divmod): New function.
+ 	(expand_binop): Use it.
+ 	* internal-fn.c (expand_DIVMOD): Likewise.
+ 
+ 2020-12-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c/98087
+ 	* gimple-fold.c (clear_padding_type): Do not divide by zero.
+ 
+ 2020-12-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gdbinit.in: Write what each command calls
+ 	for a debugging function.
+ 
+ 2020-12-02  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+ 	Use OPTION_MASK_DIRECT_MOVE for Power8 target_enable instead
+ 	of OPTION_MASK_HTM.
+ 	* config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER):
+ 	Remove OPTION_MASK_HTM.
+ 	(RS6000_CPU): Add OPTION_MASK_HTM to power8, power9 and
+ 	powerpc64le entries.
+ 
+ 2020-12-02  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/98079
+ 	* config/i386/i386.md (abs<mode>2): Enable QImode
+ 	only for !TARGET_PARTIAL_REG_STALL.
+ 	(*abs<mode>2_1): Ditto.
+ 	(<maxmin:code><mode>3): Ditto.
+ 	(*<maxmin:code><mode>3_1): Ditto.
+ 
+ 2020-12-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	* diagnostic.c (diagnostic_report_diagnostic): ICE causes to
+ 	terminate compiler immediately, so I guess it should be printed
+ 	always.
+ 
+ 2020-12-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/88702
+ 	* gimple-if-to-switch.cc (pass_if_to_switch::execute):
+ 	Require at least 2 BBs.
+ 	* gimple-if-to-switch.cc (find_conditions): Require
+ 	equal precision for low and high of a range.
+ 
+ 2020-12-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/98084
+ 	* gimple-if-to-switch.cc (find_conditions): Consider only
+ 	integral types.
+ 
+ 2020-12-02  Jeff Law  <law@redhat.com>
+ 
+ 	* config/h8300/addsub.md (addqi3_clobber_flags): Rename to
+ 	addqi3_flags and annotate with a <cczn> for define_subst.
+ 	(addhi3_h8sx_clobber_flags): Likewise.
+ 	(subqi3_clobber_flags, sub<mode>3_clobber_flags): Likewise.
+ 	(neg<mode2>_clobber_flags): Similarly.
+ 	(addsi3_clobber_flags): Similarly.  Update last argument to
+ 	output_plussi to distinguish when we need flags or do not need
+ 	flags.
+ 	(addhi3_clobber_flags): Similarly.  Twiddle code for cases
+ 	+-1, +-2 and +-4.
+ 	* config/h8300/h8300.md: Define iterators, mode attributes and
+ 	substitutions for use in compare/test elimination.
+ 	* config/h8300/jumpcall.md (branch, branch_1): Use H8cc mode
+ 	iterator to cover the different modes for the CC register.
+ 	(branch_1_false): Likewise.
+ 
+ 2020-12-02  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* loop-iv.c: Fix a typo, s/bu/by/, in the `iv_analyze_expr'
+ 	description in the introduction.
+ 
+ 2020-12-02  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	* configure.ac (HAVE_GAS_SHF_GNU_RETAIN): New.  Define 1 if
+ 	the assembler supports marking sections with SHF_GNU_RETAIN flag.
+ 	* output.h (SECTION_RETAIN): New.  Defined as 0x4000000.
+ 	(SECTION_MACH_DEP): Changed from 0x4000000 to 0x8000000.
+ 	(default_unique_section): Add a bool argument.
+ 	* varasm.c (get_section): Set SECTION_RETAIN for the preserved
+ 	symbol with HAVE_GAS_SHF_GNU_RETAIN.
+ 	(resolve_unique_section): Used named section for the preserved
+ 	symbol if assembler supports SHF_GNU_RETAIN.
+ 	(get_variable_section): Handle the preserved common symbol with
+ 	HAVE_GAS_SHF_GNU_RETAIN.
+ 	(default_elf_asm_named_section): Require the full declaration and
+ 	use the 'R' flag for SECTION_RETAIN.
+ 	* config.in: Regenerated.
+ 	* configure: Likewise.
+ 	* doc/sourcebuild.texi: Document R_flag_in_section.
+ 
+ 2020-12-02  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	* config.gcc: Replace cet.o with gnu-property.o.  Replace
+ 	i386/t-cet with i386/t-gnu-property.
+ 	* config/i386/cet.c: Renamed to ...
+ 	* config/i386/gnu-property.c: This.
+ 	(emit_gnu_property): New function.
+ 	(file_end_indicate_exec_stack_and_cet): Renamed to ...
+ 	(file_end_indicate_exec_stack_and_gnu_property): This.  Call
+ 	emit_gnu_property to generate GNU_PROPERTY_X86_FEATURE_1_AND and
+ 	GNU_PROPERTY_X86_ISA_1_NEEDED properties.
+ 	* config/i386/i386.opt (mneeded): New.
+ 	* config/i386/linux-common.h (file_end_indicate_exec_stack_and_cet):
+ 	Renamed to ...
+ 	(file_end_indicate_exec_stack_and_gnu_property): This.
+ 	(TARGET_ASM_FILE_END): Updated.
+ 	* config/i386/t-cet: Renamed to ...
+ 	* config/i386/t-gnu-property: This.
+ 	(cet.o): Renamed to ...
+ 	(gnu-property.o): This.
+ 	* doc/invoke.texi: Document -mneeded.
+ 
+ 2020-12-01  Eugene Rozenfeld  <Eugene.Rozenfeld@microsoft.com>
+ 
+ 	PR tree-optimization/96708
+ 	* match.pd: New pattern for comparing X with MAX (X, Y)
+ 	or MIN (X, y).
+ 
+ 2020-12-01  Jeff Law  <law@redhat.com>
+ 
+ 	* config/mcore/t-mcore (MULTILIB_EXCEPTIONS): Define.
+ 
+ 2020-12-01  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/97595
+ 	* tree.c (component_ref_size): Fail when DECL_SIZE != TYPE_SIZE.
+ 	* tree.h (DECL_SIZE, TYPE_SIZE): Update comment.
+ 
+ 2020-12-01  JeanHeyd Meneide  <phdofthehouse@gmail.com>
+ 
+ 	* doc/cpp.texi: Document new macros.
+ 
+ 2020-12-01  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/97373
+ 	* builtins.c (compute_objsize): Rename...
+ 	(compute_objsize_r): to this.  Change order and types of arguments.
+ 	Use new argument.  Adjust calls to self.
+ 	(access_ref::get_ref): New member function.
+ 	(pointer_query::pointer_query): New member function.
+ 	(pointer_query::get_ref): Same.
+ 	(pointer_query::put_ref): Same.
+ 	(handle_min_max_size): Change order and types of arguments.
+ 	(maybe_emit_free_warning): Add a test.
+ 	* builtins.h (class pointer_query): New class.
+ 	(compute_objsize): Declare an overload.
+ 	* gimple-ssa-sprintf.c (get_destination_size): Add argument.
+ 	(handle_printf_call): Change argument type.
+ 	* tree-ssa-strlen.c (adjust_last_stmt): Add an argument and use it.
+ 	(maybe_warn_overflow): Same.
+ 	(handle_builtin_strcpy): Same.
+ 	(maybe_diag_stxncpy_trunc): Same.
+ 	(handle_builtin_memcpy): Change argument type.  Adjust calls.
+ 	(handle_builtin_strcat): Same.
+ 	(handle_builtin_memset): Same.
+ 	(handle_store): Same.
+ 	(strlen_check_and_optimize_call): Same.
+ 	(check_and_optimize_stmt): Same.
+ 	(strlen_dom_walker): Add new data members.
+ 	(strlen_dom_walker::before_dom_children): Use new member.
+ 	(printf_strlen_execute): Dump cache performance counters.  Remove
+ 	objsize pass cleanup.
+ 	* tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Add argument.
+ 	(handle_printf_call): Change argument type.
+ 
+ 2020-12-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* function.c (gen_call_used_regs_seq): In a function subject to the
+ 	leaf register optimization, skip registers that are not present.
+ 	* config/sparc/sparc.c (TARGET_ZERO_CALL_USED_REGS): Define to...
+ 	(sparc_zero_call_used_regs): ...this.  New function.
+ 
+ 2020-12-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.h: Remove unused 'X' specs in the link spec
+ 	rather than driver self-specs.
+ 
+ 2020-12-01  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* params.opt (lazy-modules): New.
+ 	* timevar.def (TV_MODULE_IMPORT, TV_MODULE_EXPORT)
+ 	(TV_MODULE_MAPPER): New.
+ 
+ 2020-12-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/97459
+ 	* optabs.c (expand_doubleword_mod): Punt early for even op1.
+ 	(expand_binop): Don't require lshr_optab double-word handler.
+ 
+ 2020-12-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/97954
+ 	* loop-invariant.c (find_invariant_insn): Punt on JUMP_P insns.
+ 
+ 2020-12-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* configure.ac (check leb128 support): Check that assemblers both
+ 	accept the LEB128 directives and also give the expected output.
+ 	Add a test for uleb128 with the MSB set for a 64 bit value.
+ 	* configure: Regenerated.
+ 
+ 2020-12-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* configure: Regnerated.
+ 
+ 2020-12-01  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 
+ 	* optabs-tree.c (vec_cmp_icode_p): New function.
+ 	(vec_cmp_eq_icode_p): New function.
+ 	(expand_vec_cmp_expr_p): Use vec_cmp_icode_p and
+ 	vec_cmp_eq_icode_p.
+ 	(vcond_icode_p): Use get_rtx_code_1, just to be uniform with
+ 	vec_cmp_icode_p.
+ 	* optabs.c (unsigned_optab_p): New function.
+ 	(insn_predicate_matches_p): New function.
+ 	(can_vec_cmp_compare_p): New function.
+ 	(can_vcond_compare_p): Use unsigned_optab_p and
+ 	insn_predicate_matches_p.
+ 	(get_rtx_code): Use get_rtx_code_1.
+ 	(get_rtx_code_1): Version of get_rtx_code that returns UNKNOWN
+ 	instead of asserting.
+ 	* optabs.h (can_vec_cmp_compare_p): New function.
+ 	(get_rtx_code_1): New function.
+ 
+ 2020-12-01  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/14799
+ 	PR ipa/88702
+ 	* Makefile.in: Add gimple-if-to-switch.o.
+ 	* dbgcnt.def (DEBUG_COUNTER): Add new debug counter.
+ 	* passes.def: Include new pass_if_to_switch pass.
+ 	* timevar.def (TV_TREE_IF_TO_SWITCH): New timevar.
+ 	* tree-pass.h (make_pass_if_to_switch): New.
+ 	* tree-ssa-reassoc.c (struct operand_entry): Move to the header.
+ 	(dump_range_entry): Move to header file.
+ 	(debug_range_entry): Likewise.
+ 	(no_side_effect_bb): Make it global.
+ 	* tree-switch-conversion.h (simple_cluster::simple_cluster):
+ 	Add inline for couple of functions in order to prevent error
+ 	about multiple defined symbols.
+ 	* gimple-if-to-switch.cc: New file.
+ 	* tree-ssa-reassoc.h: New file.
+ 
+ 2020-12-01  Marius Hillenbrand  <mhillen@linux.ibm.com>
+ 
+ 	* configure.ac: Add configure option
+ 	--enable-s390-excess-float-precision and check to derive default
+ 	from glibc.
+ 	* config/s390/s390.c: Guard s390_excess_precision with an ifdef
+ 	for ENABLE_S390_EXCESS_FLOAT_PRECISION.
+ 	* doc/install.texi: Document --enable-s390-excess-float-precision.
+ 	* configure: Regenerate.
+ 	* config.in: Regenerate.
+ 
+ 2020-12-01  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/98057
+ 	* symtab.c (symtab_node::set_section_for_node): Drop
+ 	implicit_section if x_section is NULL.
+ 
+ 2020-12-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/98063
+ 	* config/i386/i386-expand.c (ix86_expand_call): Handle non-plt
+ 	CM_LARGE_PIC calls.
+ 
+ 2020-12-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/98070
+ 	* builtins.c (builtin_fnspec): realloc is ".Cw ".
+ 
+ 2020-12-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* dwarf2out.c (gen_compile_unit_die): Treat GNU C++20
+ 	like C++14 for -gdwarf-5.
+ 
+ 2020-12-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/97989
+ 	* gcc.c (cpp_unique_options): Add -dD if %:debug-level-gt(2)
+ 	rather than g3|ggdb3|gstabs3|gxcoff3|gvms3.
+ 
+ 2020-12-01  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config.gcc (riscv*-*-*): Drop some commited accidentally code.
+ 
+ 2020-11-30  Jeff Law  <law@redhat.com>
+ 
+ 	* symtab.c (set_section_for_node): Add function comment.
+ 	(set_section_from_node): Likewise.
+ 
+ 2020-11-30  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/plugins.texi (Plugin callbacks): Add PLUGIN_ANALYZER_INIT.
+ 	* plugin.c (register_callback): Likewise.
+ 	(invoke_plugin_callbacks_full): Likewise.
+ 	* plugin.def (PLUGIN_ANALYZER_INIT): New event.
+ 
+ 2020-11-30  Jeff Law  <law@redhat.com>
+ 
+ 	* config/h8300/bitfield.md: Remove "cc" attribute on any
+ 	insns where it remained.
+ 	* config/h8300/combiner.md: Likewise.
+ 	* config/h8300/jumpcall.md: Likewise.
+ 	* config/h8300/logical.md: Likewise.
+ 	* config/h8300/testcompare.md: Likewise.
+ 	* config/h8300/h8300.md (old_cc attr): Renamed from cc attr.
+ 	* config/h8300/h8300.c (notice_update_cc): Remove.
+ 	(compute_plussi_cc): Change references to CC_* to OLD_CC_.
+ 	(compute_logical_op_cc): Likewise.
+ 	(shift_one, shift_two): Likewise.
+ 	(compute_a_shift_cc): Likewise.
+ 	(get_shift_alg): Likewise.
+ 	(struct shift_insn): Change type of cc_valid field.
+ 	(struct shift_info): Likewise.
+ 	* config/h8300/save.md: Remove accidentially created file.
+ 
+ 2020-11-30  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/98037
+ 	* dse.c (find_shift_sequence): Iterate over all integers and
+ 	skip modes that are too small.
+ 
+ 2020-11-30  Eugene Rozenfeld  <Eugene.Rozenfeld@microsoft.com>
+ 
+ 	PR tree-optimization/96679
+ 	* match.pd (((b | c) & a) | b -> (a & c) | b): New pattern.
+ 
+ 2020-11-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	* passes.c (emergency_dump_function): Dump symtab when
+ 	we are in an IPA pass.
+ 
+ 2020-11-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/98064
+ 	* tree-vect-loop.c (vectorizable_live_operation): Avoid
+ 	breaking LC SSA for BB vectorization.
+ 
+ 2020-11-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/sourcebuild.texi (Directives): Fix description of
+ 	dg-require-effective-target to include "target" in selector.
+ 
+ 2020-11-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/98048
+ 	* tree-vect-generic.c (expand_vector_operations_1): Use the
+ 	correct type for the scalar LHS replacement.
+ 
+ 2020-11-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/98066
+ 	* gimple-isel.cc (gimple_expand_vec_exprs): Return when
+ 	gimple_expand_vec_exprs replaces last stmt.
+ 
+ 2020-11-30  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 
+ 	* cfgrtl.c (rtl_bb_info_initialized_p): New function.
+ 	(rtl_dump_bb): Use rtl_bb_info_initialized_p before accessing bb
+ 	insns.
+ 
+ 2020-11-30  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/87818
+ 	* config.gcc (*-*-freebsd*): Add freebsd-d.o and t-freebsd.
+ 	* config/freebsd-d.c: New file.
+ 	* config/t-freebsd: New file.
+ 
+ 2020-11-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/97459
+ 	* internal-fn.h (expand_addsub_overflow): Declare.
+ 	* internal-fn.c (expand_addsub_overflow): No longer static.
+ 	* optabs.c (expand_doubleword_mod): New function.
+ 	(expand_binop): Optimize double-word mod with constant divisor.
+ 
+ 2020-11-30  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config.gcc (riscv*-*-*): Add TARGET_RISCV_DEFAULT_ABI and
+ 	TARGET_RISCV_DEFAULT_ARCH to tm_defines.
+ 	Remove including riscv/withmultilib.h for --with-multilib-list.
+ 	* config/riscv/riscv.h (STRINGIZING): New.
+ 	(__STRINGIZING): Ditto.
+ 	(MULTILIB_DEFAULTS): Ditto.
+ 	* config/riscv/withmultilib.h: Remove.
+ 
+ 2020-11-30  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* gcc.c (print_multilib_info): Check default arguments not
+ 	appeared in multi-lib option list with '!'
+ 
+ 2020-11-30  Jeff Law  <law@redhat.com>
+ 
+ 	* config/ft32/ft32.md (umulsidi3): Do not allow constants as
+ 	arguments.
+ 
+ 2020-11-29  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (ipa_merge_modref_summary_after_inlining): Fix
+ 	handling of ignore_stores.
+ 
+ 2020-11-29  Jan Hubicka  <jh@suse.cz>
+ 
+ 	PR jit/97867
+ 	* symtab-thunks.h (thunk_info::release): Use ggc_delete.
+ 
+ 2020-11-29  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/92936
+ 	PR middle-end/92940
+ 	PR middle-end/89428
+ 	* builtins.c (access_ref::access_ref): Initialize member.
+ 	(access_ref::phi): New function.
+ 	(access_ref::get_ref): New function.
+ 	(access_ref::add_offset): Remove duplicate assignment.
+ 	(maybe_warn_for_bound): Add "maybe" kind of warning messages.
+ 	(warn_for_access): Same.
+ 	(inform_access): Rename...
+ 	(access_ref::inform_access): ...to this.  Print PHI arguments.  Format
+ 	offset the same as size and simplify.  Improve printing of allocation
+ 	functions and VLAs.
+ 	(check_access): Adjust to the above.
+ 	(gimple_parm_array_size): Change argument.
+ 	(handle_min_max_size): New function.
+ 	* builtins.h (class ssa_name_limit_t): Move class here from
+ 	tree-ssa-strlen.c.
+ 	(struct access_ref): Declare new members.
+ 	(gimple_parm_array_size): Change argument.
+ 	* tree-ssa-strlen.c (maybe_warn_overflow): Use access_ref and simplify.
+ 	(handle_builtin_memcpy): Correct argument passed to maybe_warn_overflow.
+ 	(handle_builtin_memset): Same.
+ 	(class ssa_name_limit_t): Move class to builtins.{h,c}.
+ 
+ 2020-11-29  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* config.gcc (*-*-darwin*): Set d_target_objs and target_has_targetdm.
+ 	* config/elfos.h (TARGET_D_MINFO_SECTION): New macro.
+ 	(TARGET_D_MINFO_START_NAME): New macro.
+ 	(TARGET_D_MINFO_END_NAME): New macro.
+ 	* config/t-darwin: Add darwin-d.o.
+ 	* doc/tm.texi: Regenerate.
+ 	* doc/tm.texi.in (D language and ABI): Add @hook for
+ 	TARGET_D_MINFO_SECTION, TARGET_D_MINFO_START_NAME, and
+ 	TARGET_D_MINFO_END_NAME.
+ 	* config/darwin-d.c: New file.
+ 
+ 2020-11-29  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* tree-ssa-structalias.c (handle_pure_call): Skip EAF_UNUSED
+ 	 parameters.
+ 
+ 2020-11-29  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (modref_lattice::merge): Do nothing if F is EAF_UNUSED.
+ 	(analyze_parms): Detect unused params.
+ 	(modref_merge_call_site_flags): Merge correct EAF_UNUSED.
+ 
+ 2020-11-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/97939
+ 	* config/sparc/predicates.md (arith_double_add_operand): Comment.
+ 	* config/sparc/sparc.md (uaddvdi4): Use arith_double_operand.
+ 	(addvdi4): Use arith_double_add_operand.
+ 	(addsi3): Remove useless attributes.
+ 	(addvsi4): Use arith_add_operand.
+ 	(*cmp_ccv_plus): Likewise and add second alternative accordingly.
+ 	(*cmp_ccxv_plus): Likewise.
+ 	(*cmp_ccv_plus_set): Likewise.
+ 	(*cmp_ccxv_plus_set): Likewise.
+ 	(*cmp_ccv_plus_sltu_set): Likewise.
+ 	(usubvdi4): Use arith_double_operand.
+ 	(subvdi4): Use arith_double_add_operand.
+ 	(subsi3): Remove useless attributes.
+ 	(subvsi4): Use arith_add_operand.
+ 	(*cmp_ccv_minus): Likewise and add second alternative accordingly.
+ 	(*cmp_ccxv_minus): Likewise.
+ 	(*cmp_ccv_minus_set): Likewise.
+ 	(*cmp_ccxv_minus_set): Likewise.
+ 	(*cmp_ccv_minus_sltu_set): Likewise.
+ 	(negsi2): Use register_operand.
+ 	(unegvsi3): Likewise.
+ 	(negvsi3) Likewise.
+ 	(*cmp_ccnz_neg): Likewise.
+ 	(*cmp_ccxnz_neg): Likewise.
+ 	(*cmp_ccnz_neg_set): Likewise.
+ 	(*cmp_ccxnz_neg_set): Likewise.
+ 	(*cmp_ccc_neg_set): Likewise.
+ 	(*cmp_ccxc_neg_set): Likewise.
+ 	(*cmp_ccc_neg_sltu_set): Likewise.
+ 	(*cmp_ccv_neg): Likewise.
+ 	(*cmp_ccxv_neg): Likewise.
+ 	(*cmp_ccv_neg_set): Likewise.
+ 	(*cmp_ccxv_neg_set): Likewise.
+ 	(*cmp_ccv_neg_sltu_set): Likewise.
+ 
+ 2020-11-27  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR other/98027
+ 	* doc/install.texi: Default to --enable-cet=auto.
+ 
+ 2020-11-27  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* omp-oacc-kernels-decompose.cc (flatten_binds): Don't choke on
+ 	empty GIMPLE sequence, and examine all statements contained in
+ 	inner 'GIMPLE_BIND'.
+ 
+ 2020-11-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/98024
+ 	* tree-ssa-pre.c (insert): Fix successor RPO order check.
+ 	(do_pre_regular_insertion): When inserting an assignment
+ 	in place of an all-same-value PHI still record that into
+ 	PHI_GEN.
+ 
+ 2020-11-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-ssanames.c (get_range_info): Handle INTEGER_CST by returning
+ 	VR_RANGE with both *min and *max set to the wide_int value of the
+ 	INTEGER_CST.  Return VR_VARYING for non-SSA_NAMEs.
+ 	* match.pd ((t * 2) / 2) -> t): Handle also @0 being INTEGER_CST.
+ 	Simplify by calling get_range_info on everything.
+ 	* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Simplify by calling
+ 	get_range_info on everything.
+ 	* tree-scalar-evolution.c (iv_can_overflow_p): Likewise.
+ 
+ 2020-11-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libstdc++/88101
+ 	* gimple-fold.c (clear_padding_type): Ignore fields with is_empty_type
+ 	types.
+ 
+ 2020-11-27  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR c/97880
+ 	* omp-expand.c (expand_oacc_collapse_init, expand_oacc_collapse_vars):
+ 	Use now passed diff_type.
+ 	(expand_oacc_for): Take largest type for diff_type, taking tiling
+ 	and collapsing into account.
+ 
+ 2020-11-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64.opt
+ 	(-param=aarch64-autovec-preference): Define.
+ 	* config/aarch64/aarch64.c (aarch64_override_options_internal):
+ 	Set aarch64_sve_compare_costs to 0 when preferring only Advanced
+ 	SIMD.
+ 	(aarch64_cmp_autovec_modes): Define.
+ 	(aarch64_preferred_simd_mode): Adjust to use the above.
+ 	(aarch64_autovectorize_vector_modes): Likewise.
+ 	* doc/invoke.texi: Document aarch64-autovec-preference param.
+ 
+ 2020-11-27  Xionghu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-call.c (altivec_expand_vec_set_builtin):
+ 	Change call param 2 from type int to rtx.
+ 	* config/rs6000/rs6000-protos.h (rs6000_expand_vector_set):
+ 	Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_expand_vector_init):
+ 	Change call param 2 from type int to rtx.
+ 	(rs6000_expand_vector_set): Likewise.
+ 	* config/rs6000/vector.md (vec_set<mode>): Support both constant
+ 	and variable index vec_set.
+ 
+ 2020-11-27  Haochen Gui  <guihaoc@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000-protos.h (rs6000_output_addr_vec_elt): Declare.
+ 	* config/rs6000/rs6000.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
+ 	Define.
+ 	(rs6000_gen_pic_addr_diff_vec, rs6000_output_addr_vec_elt): Implement.
+ 	* config/rs6000/rs6000.h (CASE_VECTOR_PC_RELATIVE,
+ 	CASE_VECTOR_MODE, ASM_OUTPUT_ADDR_VEC_ELT): Define.
+ 	* config/rs6000/rs6000.md (tablejump<mode>_absolute,
+ 	tablejump<mode>_absolute_nospec): New expanders.
+ 	* config/rs6000/rs6000.opt (mrelative-jumptables): New.
+ 
+ 2020-11-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/96607
+ 	* config/sparc/sparc-protos.h (eligible_for_call_delay): Delete.
+ 	* config/sparc/sparc.c (eligible_for_call_delay): Likewise.
+ 	* config/sparc/sparc.md (in_call_delay): Likewise.
+ 	(tls_delay_slot): New attribute.
+ 	(define_delay [call]): Use in_branch_delay.
+ 	(tgd_call<P:mode>): Set type to call_no_delay_slot when
+ 	tls_delay_slot is false.
+ 	(tldm_call<P:mode>): Likewise.
+ 
+ 2020-11-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/97997
+ 	* match.pd ((t * 2) / 2) -> t): Optimize even for defined
+ 	overflow if ranges prove there is no overflow.
+ 
+ 2020-11-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97953
+ 	* gimple-ssa-evrp-analyze.c
+ 	(evrp_range_analyzer::record_ranges_from_incoming_edge): Make
+ 	sure the condition post-dominates the SSA definition before
+ 	recording into SSA_NAME_RANGE_INFO.
+ 
+ 2020-11-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-isel.cc (gimple_expand_vec_cond_expr): Only
+ 	lower VECTOR_BOOLEAN_TYPE_P VEC_COND_EXPRs.
+ 
+ 2020-11-26  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/mkoffload.c (copy_early_debug_info): Don't wipe
+ 	relocation symbols.
+ 
+ 2020-11-26  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386-expand.c (ix86_expand_multi_arg_builtin):
+ 	Remove args array of structs, declare rtx xops array instead.
+ 	Update all uses.
+ 	(ix86_expand_args_builtin): Ditto.
+ 	(ix86_expand_round_builtin): Ditto.
+ 	(ix86_expand_special_args_builtin): Ditto.
+ 
+ 2020-11-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	* dwarf2out.c (gen_compile_unit_die): Fix missing == 0 in a
+ 	strcmp.
+ 
+ 2020-11-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* config/sol2.h (TIME_LIBRARY): Remove.
+ 
+ 2020-11-26  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+ 	Set param_vect_partial_vector_usage as 1 for Power10 and up
+ 	by default.
+ 
+ 2020-11-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimple-fold.c (clear_padding_union): Ignore DECL_PADDING_P
+ 	fields.
+ 	(clear_padding_type): Ignore DECL_PADDING_P fields, rather than
+ 	DECL_BIT_FIELD with NULL DECL_NAME.
+ 
+ 2020-11-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/97979
+ 	* match.pd ((X {&,^,|} C2) << C1 into (X << C1) {&,^,|} (C2 << C1)):
+ 	Only optimize if int_const_binop returned non-NULL.
+ 
+ 2020-11-26  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/i386-expand.c
+ 	(ix86_expand_special_args_builtin): Delete last_arg_constant
+ 	and match.
+ 
+ 2020-11-26  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/97873
+ 	* config/i386/i386.md (abs<mode>2): Use SDWIM mode iterator.
+ 	(*abs<mode>2_1): Use SWI mode iterator.
+ 	(<maxmin:code><mode>3): Use SDWIM mode iterator.
+ 	(*<maxmin:code><mode>3_1): Use SWI mode iterator.
+ 
+ 2020-11-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/96906
+ 	* config/i386/sse.md (VI12_AVX2): Remove V64QI/V32HI modes.
+ 	(VI12_AVX2_AVX512BW): New mode iterator.
+ 	(<sse2_avx2>_<plusminus_insn><mode>3<mask_name>,
+ 	uavg<mode>3_ceil, <sse2_avx2>_uavg<mode>3<mask_name>): Use
+ 	VI12_AVX2_AVX512BW iterator instead of VI12_AVX2.
+ 	(*<sse2_avx2>_<plusminus_insn><mode>3<mask_name>): Likewise.
+ 	(*<sse2_avx2>_uavg<mode>3<mask_name>): Likewise.
+ 	(*<sse2_avx2>_<plusminus_insn><mode>3<mask_name>): Add a new
+ 	define_split after this insn.
+ 
+ 2020-11-26  Martin Uecker  <muecker@gwdg.de>
+ 
+ 	PR c/65455
+ 	PR c/92935
+ 	* ginclude/stdatomic.h: Use comma operator to drop qualifiers.
+ 
+ 2020-11-26  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR bootstrap/97983
+ 	* lra.c (lra_process_new_insns): Use emit_insn_before_noloc or
+ 	emit_insn_after_noloc with the destination BB.
+ 
+ 2020-11-25  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR bootstrap/97622
+ 	PR bootstrap/94982
+ 	* config/i386/i386-options.c (ix86_valid_target_attribute_inner_p):
+ 	Avoid -Wformat-diag.
+ 	* digraph.cc (struct test_edge): Same.
+ 	* dumpfile.c (dump_loc): Same.
+ 	(dump_context::begin_scope): Same.
+ 	* edit-context.c (edited_file::print_diff): Same.
+ 	(edited_file::print_diff_hunk): Same.
+ 	* json.cc (object::print): Same.
+ 	* lto-wrapper.c (merge_and_complain): Same.
+ 	* reload.c (find_reloads): Same.
+ 	* tree-diagnostic-path.cc (print_path_summary_as_text): Same.
+ 	* ubsan.c (ubsan_type_descriptor): Same.
+ 
+ 2020-11-25  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* gimple.c (gimple_call_arg_flags): Also imply EAF_NODIRECTESCAPE.
+ 	* tree-core.h (EAF_NODRECTESCAPE): New flag.
+ 	* tree-ssa-structalias.c (make_indirect_escape_constraint): New
+ 	function.
+ 	(handle_rhs_call): Hanlde EAF_NODIRECTESCAPE.
+ 	* ipa-modref.c (dump_eaf_flags): Print EAF_NODIRECTESCAPE.
+ 	(deref_flags): Dereference is always EAF_NODIRECTESCAPE.
+ 	(modref_lattice::init): Also set EAF_NODIRECTESCAPE.
+ 	(analyze_ssa_name_flags): Pure functions do not affect
+ 	EAF_NODIRECTESCAPE.
+ 	(analyze_params): Likewise.
+ 	(ipa_merge_modref_summary_after_inlining): Likewise.
+ 	(modref_merge_call_site_flags): Likewise.
+ 
+ 2020-11-25  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (modref_summaries::duplicate,
+ 	modref_summaries_lto::duplicate): Copy arg_flags.
+ 	(remap_arg_flags): Fix remapping of arg_flags.
+ 
+ 2020-11-25  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/97956
+ 	* gimple-fold.c (gimple_fold_builtin_memchr): Use sizetype for pointer
+ 	offsets.
+ 
+ 2020-11-25  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 
+ 	* asan.c (asan_instrument_reads): New.
+ 	(asan_instrument_writes): New.
+ 	(asan_memintrin): New.
+ 	(handle_builtin_stack_restore): Account for HWASAN.
+ 	(handle_builtin_alloca): Account for HWASAN.
+ 	(get_mem_refs_of_builtin_call): Special case strlen for HWASAN.
+ 	(hwasan_instrument_reads): New.
+ 	(hwasan_instrument_writes): New.
+ 	(hwasan_memintrin): New.
+ 	(report_error_func): Assert not HWASAN.
+ 	(build_check_stmt): Make HWASAN_CHECK instead of ASAN_CHECK.
+ 	(instrument_derefs): HWASAN does not tag globals.
+ 	(instrument_builtin_call): Use new helper functions.
+ 	(maybe_instrument_call): Don't instrument `noreturn` functions.
+ 	(initialize_sanitizer_builtins): Add new type.
+ 	(asan_expand_mark_ifn): Account for HWASAN.
+ 	(asan_expand_check_ifn): Assert never called by HWASAN.
+ 	(asan_expand_poison_ifn): Account for HWASAN.
+ 	(asan_instrument): Branch based on whether using HWASAN or ASAN.
+ 	(pass_asan::gate): Return true if sanitizing HWASAN.
+ 	(pass_asan_O0::gate): Return true if sanitizing HWASAN.
+ 	(hwasan_check_func): New.
+ 	(hwasan_expand_check_ifn): New.
+ 	(hwasan_expand_mark_ifn): New.
+ 	(gate_hwasan): New.
+ 	* asan.h (hwasan_expand_check_ifn): New decl.
+ 	(hwasan_expand_mark_ifn): New decl.
+ 	(gate_hwasan): New decl.
+ 	(asan_intercepted_p): Always false for hwasan.
+ 	(asan_sanitize_use_after_scope): Account for HWASAN.
+ 	* builtin-types.def (BT_FN_PTR_CONST_PTR_UINT8): New.
+ 	* gimple-fold.c (gimple_build): New overload for building function
+ 	calls without arguments.
+ 	(gimple_build_round_up): New.
+ 	* gimple-fold.h (gimple_build): New decl.
+ 	(gimple_build): New inline function.
+ 	(gimple_build_round_up): New decl.
+ 	(gimple_build_round_up): New inline function.
+ 	* gimple-pretty-print.c (dump_gimple_call_args): Account for
+ 	HWASAN.
+ 	* gimplify.c (asan_poison_variable): Account for HWASAN.
+ 	(gimplify_function_tree): Remove requirement of
+ 	SANITIZE_ADDRESS, requiring asan or hwasan is accounted for in
+ 	`asan_sanitize_use_after_scope`.
+ 	* internal-fn.c (expand_HWASAN_CHECK): New.
+ 	(expand_HWASAN_ALLOCA_UNPOISON): New.
+ 	(expand_HWASAN_CHOOSE_TAG): New.
+ 	(expand_HWASAN_MARK): New.
+ 	(expand_HWASAN_SET_TAG): New.
+ 	* internal-fn.def (HWASAN_ALLOCA_UNPOISON): New.
+ 	(HWASAN_CHOOSE_TAG): New.
+ 	(HWASAN_CHECK): New.
+ 	(HWASAN_MARK): New.
+ 	(HWASAN_SET_TAG): New.
+ 	* sanitizer.def (BUILT_IN_HWASAN_LOAD1): New.
+ 	(BUILT_IN_HWASAN_LOAD2): New.
+ 	(BUILT_IN_HWASAN_LOAD4): New.
+ 	(BUILT_IN_HWASAN_LOAD8): New.
+ 	(BUILT_IN_HWASAN_LOAD16): New.
+ 	(BUILT_IN_HWASAN_LOADN): New.
+ 	(BUILT_IN_HWASAN_STORE1): New.
+ 	(BUILT_IN_HWASAN_STORE2): New.
+ 	(BUILT_IN_HWASAN_STORE4): New.
+ 	(BUILT_IN_HWASAN_STORE8): New.
+ 	(BUILT_IN_HWASAN_STORE16): New.
+ 	(BUILT_IN_HWASAN_STOREN): New.
+ 	(BUILT_IN_HWASAN_LOAD1_NOABORT): New.
+ 	(BUILT_IN_HWASAN_LOAD2_NOABORT): New.
+ 	(BUILT_IN_HWASAN_LOAD4_NOABORT): New.
+ 	(BUILT_IN_HWASAN_LOAD8_NOABORT): New.
+ 	(BUILT_IN_HWASAN_LOAD16_NOABORT): New.
+ 	(BUILT_IN_HWASAN_LOADN_NOABORT): New.
+ 	(BUILT_IN_HWASAN_STORE1_NOABORT): New.
+ 	(BUILT_IN_HWASAN_STORE2_NOABORT): New.
+ 	(BUILT_IN_HWASAN_STORE4_NOABORT): New.
+ 	(BUILT_IN_HWASAN_STORE8_NOABORT): New.
+ 	(BUILT_IN_HWASAN_STORE16_NOABORT): New.
+ 	(BUILT_IN_HWASAN_STOREN_NOABORT): New.
+ 	(BUILT_IN_HWASAN_TAG_MISMATCH4): New.
+ 	(BUILT_IN_HWASAN_HANDLE_LONGJMP): New.
+ 	(BUILT_IN_HWASAN_TAG_PTR): New.
+ 	* sanopt.c (sanopt_optimize_walker): Act for hwasan.
+ 	(pass_sanopt::execute): Act for hwasan.
+ 	* toplev.c (compile_file): Use `gate_hwasan` function.
+ 
+ 2020-11-25  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 
+ 	* asan.c (struct hwasan_stack_var): New.
+ 	(hwasan_sanitize_p): New.
+ 	(hwasan_sanitize_stack_p): New.
+ 	(hwasan_sanitize_allocas_p): New.
+ 	(initialize_sanitizer_builtins): Define new builtins.
+ 	(ATTR_NOTHROW_LIST): New macro.
+ 	(hwasan_current_frame_tag): New.
+ 	(hwasan_frame_base): New.
+ 	(stack_vars_base_reg_p): New.
+ 	(hwasan_maybe_init_frame_base_init): New.
+ 	(hwasan_record_stack_var): New.
+ 	(hwasan_get_frame_extent): New.
+ 	(hwasan_increment_frame_tag): New.
+ 	(hwasan_record_frame_init): New.
+ 	(hwasan_emit_prologue): New.
+ 	(hwasan_emit_untag_frame): New.
+ 	(hwasan_finish_file): New.
+ 	(hwasan_truncate_to_tag_size): New.
+ 	* asan.h (hwasan_record_frame_init): New declaration.
+ 	(hwasan_record_stack_var): New declaration.
+ 	(hwasan_emit_prologue): New declaration.
+ 	(hwasan_emit_untag_frame): New declaration.
+ 	(hwasan_get_frame_extent): New declaration.
+ 	(hwasan_maybe_enit_frame_base_init): New declaration.
+ 	(hwasan_frame_base): New declaration.
+ 	(stack_vars_base_reg_p): New declaration.
+ 	(hwasan_current_frame_tag): New declaration.
+ 	(hwasan_increment_frame_tag): New declaration.
+ 	(hwasan_truncate_to_tag_size): New declaration.
+ 	(hwasan_finish_file): New declaration.
+ 	(hwasan_sanitize_p): New declaration.
+ 	(hwasan_sanitize_stack_p): New declaration.
+ 	(hwasan_sanitize_allocas_p): New declaration.
+ 	(HWASAN_TAG_SIZE): New macro.
+ 	(HWASAN_TAG_GRANULE_SIZE): New macro.
+ 	(HWASAN_STACK_BACKGROUND): New macro.
+ 	* builtin-types.def (BT_FN_VOID_PTR_UINT8_PTRMODE): New.
+ 	* builtins.def (DEF_SANITIZER_BUILTIN): Enable for HWASAN.
+ 	* cfgexpand.c (align_local_variable): When using hwasan ensure
+ 	alignment to tag granule.
+ 	(align_frame_offset): New.
+ 	(expand_one_stack_var_at): For hwasan use tag offset.
+ 	(expand_stack_vars): Record stack objects for hwasan.
+ 	(expand_one_stack_var_1): Record stack objects for hwasan.
+ 	(init_vars_expansion): Initialise hwasan state.
+ 	(expand_used_vars): Emit hwasan prologue and generate hwasan epilogue.
+ 	(pass_expand::execute): Emit hwasan base initialization if needed.
+ 	* doc/tm.texi (TARGET_MEMTAG_TAG_SIZE,TARGET_MEMTAG_GRANULE_SIZE,
+ 	TARGET_MEMTAG_INSERT_RANDOM_TAG,TARGET_MEMTAG_ADD_TAG,
+ 	TARGET_MEMTAG_SET_TAG,TARGET_MEMTAG_EXTRACT_TAG,
+ 	TARGET_MEMTAG_UNTAGGED_POINTER): Document new hooks.
+ 	* doc/tm.texi.in (TARGET_MEMTAG_TAG_SIZE,TARGET_MEMTAG_GRANULE_SIZE,
+ 	TARGET_MEMTAG_INSERT_RANDOM_TAG,TARGET_MEMTAG_ADD_TAG,
+ 	TARGET_MEMTAG_SET_TAG,TARGET_MEMTAG_EXTRACT_TAG,
+ 	TARGET_MEMTAG_UNTAGGED_POINTER): Document new hooks.
+ 	* explow.c (get_dynamic_stack_base): Take new `base` argument.
+ 	* explow.h (get_dynamic_stack_base): Take new `base` argument.
+ 	* sanitizer.def (BUILT_IN_HWASAN_INIT): New.
+ 	(BUILT_IN_HWASAN_TAG_MEM): New.
+ 	* target.def (target_memtag_tag_size,target_memtag_granule_size,
+ 	target_memtag_insert_random_tag,target_memtag_add_tag,
+ 	target_memtag_set_tag,target_memtag_extract_tag,
+ 	target_memtag_untagged_pointer): New hooks.
+ 	* targhooks.c (HWASAN_SHIFT): New.
+ 	(HWASAN_SHIFT_RTX): New.
+ 	(default_memtag_tag_size): New default hook.
+ 	(default_memtag_granule_size): New default hook.
+ 	(default_memtag_insert_random_tag): New default hook.
+ 	(default_memtag_add_tag): New default hook.
+ 	(default_memtag_set_tag): New default hook.
+ 	(default_memtag_extract_tag): New default hook.
+ 	(default_memtag_untagged_pointer): New default hook.
+ 	* targhooks.h (default_memtag_tag_size): New default hook.
+ 	(default_memtag_granule_size): New default hook.
+ 	(default_memtag_insert_random_tag): New default hook.
+ 	(default_memtag_add_tag): New default hook.
+ 	(default_memtag_set_tag): New default hook.
+ 	(default_memtag_extract_tag): New default hook.
+ 	(default_memtag_untagged_pointer): New default hook.
+ 	* toplev.c (compile_file): Call hwasan_finish_file when finished.
+ 
+ 2020-11-25  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 
+ 	* common.opt (flag_sanitize_recover): Default for kernel
+ 	hwaddress.
+ 	(static-libhwasan): New cli option.
+ 	* config/aarch64/aarch64.c (aarch64_can_tag_addresses): New.
+ 	(TARGET_MEMTAG_CAN_TAG_ADDRESSES): New.
+ 	* config/gnu-user.h (LIBHWASAN_EARLY_SPEC): hwasan equivalent of
+ 	asan command line flags.
+ 	* cppbuiltin.c (define_builtin_macros_for_compilation_flags):
+ 	Add hwasan equivalent of __SANITIZE_ADDRESS__.
+ 	* doc/invoke.texi: Document hwasan command line flags.
+ 	* doc/tm.texi: Document new hook.
+ 	* doc/tm.texi.in: Document new hook.
+ 	* flag-types.h (enum sanitize_code): New sanitizer values.
+ 	* gcc.c (STATIC_LIBHWASAN_LIBS): New macro.
+ 	(LIBHWASAN_SPEC): New macro.
+ 	(LIBHWASAN_EARLY_SPEC): New macro.
+ 	(SANITIZER_EARLY_SPEC): Update to include hwasan.
+ 	(SANITIZER_SPEC): Update to include hwasan.
+ 	(sanitize_spec_function): Use hwasan options.
+ 	* opts.c (finish_options): Describe conflicts between address
+ 	sanitizers.
+ 	(find_sanitizer_argument): New.
+ 	(report_conflicting_sanitizer_options): New.
+ 	(sanitizer_opts): Introduce new sanitizer flags.
+ 	(common_handle_option): Add defaults for kernel sanitizer.
+ 	* params.opt (hwasan--instrument-stack): New
+ 	(hwasan-random-frame-tag): New
+ 	(hwasan-instrument-allocas): New
+ 	(hwasan-instrument-reads): New
+ 	(hwasan-instrument-writes): New
+ 	(hwasan-instrument-mem-intrinsics): New
+ 	* target.def (HOOK_PREFIX): Add new hook.
+ 	(can_tag_addresses): Add new hook under memtag prefix.
+ 	* targhooks.c (default_memtag_can_tag_addresses): New.
+ 	* targhooks.h (default_memtag_can_tag_addresses): New decl.
+ 	* toplev.c (process_options): Ensure hwasan only on
+ 	architectures that advertise the possibility.
+ 
+ 2020-11-25  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 
+ 	* doc/install.texi: Document new option.
+ 
+ 2020-11-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
+ 	Do not optimize LRA subregs.
+ 	* config/aarch64/aarch64-sve.md
+ 	(@aarch64_pred_<SVE_INT_UNARY:optab><mode>): Tie the input to the
+ 	output.
+ 	(@aarch64_sve_revbhw_<SVE_ALL:mode><PRED_HSD:mode>): Likewise.
+ 	(*<ANY_EXTEND:optab><SVE_PARTIAL_I:mode><SVE_HSDI:mode>2): Likewise.
+ 	(@aarch64_pred_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>): Likewise.
+ 	(*cnot<mode>): Likewise.
+ 	(@aarch64_pred_<SVE_COND_FP_UNARY:optab><mode>): Likewise.
+ 	(@aarch64_sve_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>):
+ 	Likewise.
+ 	(@aarch64_sve_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>):
+ 	Likewise.
+ 	(@aarch64_sve_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>):
+ 	Likewise.
+ 	(@aarch64_sve_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>):
+ 	Likewise.
+ 	(@aarch64_sve_<optab>_trunc<SVE_FULL_SDF:mode><SVE_FULL_HSF:mode>):
+ 	Likewise.
+ 	(@aarch64_sve_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>):
+ 	Likewise.
+ 	(@aarch64_sve_<optab>_nontrunc<SVE_FULL_HSF:mode><SVE_FULL_SDF:mode>):
+ 	Likewise.
+ 	* config/aarch64/aarch64-sve2.md
+ 	(@aarch64_pred_<SVE2_COND_FP_UNARY_LONG:sve_fp_op><mode>): Likewise.
+ 	(@aarch64_pred_<SVE2_COND_FP_UNARY_NARROWB:sve_fp_op><mode>): Likewise.
+ 	(@aarch64_pred_<SVE2_U32_UNARY:sve_int_op><mode>): Likewise.
+ 	(@aarch64_pred_<SVE2_COND_INT_UNARY_FP:sve_fp_op><mode>): Likewise.
+ 
+ 2020-11-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/95862
+ 	* internal-fn.c (get_min_precision): For narrowing conversion, recurse
+ 	on the operand and if the operand precision is smaller than the
+ 	current one, return that smaller precision.
+ 	(expand_mul_overflow): For s1 * u2 -> ur and s1 * s2 -> ur cases
+ 	if the sum of minimum precisions of both operands is smaller or equal
+ 	to the result precision, just perform normal multiplication and
+ 	set overflow to the sign bit of the multiplication result.  For
+ 	u1 * u2 -> sr if both arguments have the MSB known zero, use
+ 	normal s1 * s2 -> sr expansion.
+ 
+ 2020-11-25  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* cfg.c (free_block): New function.
+ 	(clear_edges): Rename to ....
+ 	(free_cfg): ... this one; also free BBs and vectors.
+ 	(expunge_block): Update comment.
+ 	* cfg.h (clear_edges): Rename to ...
+ 	(free_cfg): ... this one.
+ 	* cgraph.c (release_function_body): Use free_cfg.
+ 
+ 2020-11-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/97579
+ 	* gimple-isel.cc (gimple_expand_vec_cond_expr): Lower
+ 	VECTOR_BOOLEAN_TYPE_P, non-vector mode VEC_COND_EXPRs.
+ 
+ 2020-11-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/97943
+ 	* gimple-fold.c (clear_padding_union, clear_padding_type): Error on and
+ 	ignore flexible array member fields.  Ignore fields with
+ 	error_mark_node type.
+ 
+ 2020-11-24  Ulrich Weigand  <ulrich.weigand@de.ibm.com>
+ 
+ 	Revert:
+ 	2020-11-24  Ulrich Weigand  <uweigand@de.ibm.com>
+ 
+ 	* doc/invoke.texi (-ffast-math): Remove mention of -fno-signaling-nans.
+ 	Clarify conditions when __FAST_MATH__ preprocessor macro is defined.
+ 	* opts.c (common_handle_option): Pass OPTS_SET to set_fast_math_flags
+ 	and set_unsafe_math_optimizations_flags.
+ 	(set_fast_math_flags): Add OPTS_SET argument, and use it to avoid
+ 	setting flags already explicitly set on the command line.  In the !set
+ 	case, also reset x_flag_cx_limited_range and x_flag_excess_precision.
+ 	Never reset x_flag_signaling_nans or x_flag_rounding_math.
+ 	(set_unsafe_math_optimizations_flags): Add OPTS_SET argument, and use
+ 	it to avoid setting flags already explicitly set on the command line.
+ 	(fast_math_flags_set_p): Also test x_flag_cx_limited_range,
+ 	x_flag_associative_math, x_flag_reciprocal_math, and
+ 	x_flag_rounding_math.
+ 
+ 2020-11-24  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR bootstrap/97933
+ 	* lra.c (lra_process_new_insns): Stop on the first real insn after
+ 	head of e->dest.
+ 
+ 2020-11-24  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/97534
+ 	* config/arm/arm.c (arm_split_atomic_op): Use gen_int_mode when
+ 	negating a const_int.
+ 
+ 2020-11-24  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 
+ 	* config/s390/vector.md: Use vcond_comparison_operator
+ 	predicate.
+ 
+ 2020-11-24  Ulrich Weigand  <uweigand@de.ibm.com>
+ 
+ 	* doc/invoke.texi (-ffast-math): Remove mention of -fno-signaling-nans.
+ 	Clarify conditions when __FAST_MATH__ preprocessor macro is defined.
+ 	* opts.c (common_handle_option): Pass OPTS_SET to set_fast_math_flags
+ 	and set_unsafe_math_optimizations_flags.
+ 	(set_fast_math_flags): Add OPTS_SET argument, and use it to avoid
+ 	setting flags already explicitly set on the command line.  In the !set
+ 	case, also reset x_flag_cx_limited_range and x_flag_excess_precision.
+ 	Never reset x_flag_signaling_nans or x_flag_rounding_math.
+ 	(set_unsafe_math_optimizations_flags): Add OPTS_SET argument, and use
+ 	it to avoid setting flags already explicitly set on the command line.
+ 	(fast_math_flags_set_p): Also test x_flag_cx_limited_range,
+ 	x_flag_associative_math, x_flag_reciprocal_math, and
+ 	x_flag_rounding_math.
+ 
+ 2020-11-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/97950
+ 	* config/i386/i386.md (*setcc_si_1_and): Macroize into...
+ 	(*setcc_<mode>_1_and): New define_insn_and_split with SWI24 iterator.
+ 	(*setcc_si_1_movzbl): Macroize into...
+ 	(*setcc_<mode>_1_movzbl): New define_insn_and_split with SWI24
+ 	iterator.
+ 
+ 2020-11-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimple-fold.c (clear_padding_flush): If a word contains only 0
+ 	or 0xff bytes of padding other than all set, all clear, all set
+ 	followed by all clear or all clear followed by all set, don't emit
+ 	a RMW operation on the whole word or parts of it, but instead
+ 	clear the individual bytes of padding.  For paddings of one byte
+ 	size, don't use char[1] and {}, but instead just char and 0.
+ 
+ 2020-11-24  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* omp-expand.c (expand_oacc_for): More explicit checking of which
+ 	OMP constructs we're expecting.
+ 
+ 2020-11-24  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* doc/install.texi (Prerequisites) <Tcl>: Add comment.
+ 
+ 2020-11-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/96929
+ 	* fold-const.c (wide_int_binop) <case LSHIFT_EXPR, case RSHIFT_EXPR>:
+ 	Return false on negative second argument rather than trying to handle
+ 	it as shift in the other direction.
+ 	* tree-ssa-ccp.c (bit_value_binop) <case LSHIFT_EXPR,
+ 	case RSHIFT_EXPR>: Punt on negative shift count rather than trying
+ 	to handle it as shift in the other direction.
+ 	* match.pd (-1 >> x to -1): Remove tree_expr_nonnegative_p check.
+ 
+ 2020-11-24  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	PR tree-optimization/97849
+ 	* tree-if-conv.c (tree_if_conversion): Move ssa_name
+ 	replacement code from ifcvt_local_dce to this function
+ 	before calling do_rpo_vn.
+ 
+ 2020-11-24  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* tree-cfg.c (dump_function_to_file): Print type attributes
+ 	and return type.
+ 
+ 2020-11-23  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-prop.h (ipa_pass_through_data): Expand comment describing
+ 	operation.
+ 	* ipa-prop.c (analyze_agg_content_value): Detect new special case and
+ 	encode it as ASSERT_EXPR.
+ 	* ipa-cp.c (values_equal_for_ipcp_p): Move before
+ 	ipa_get_jf_arith_result.
+ 	(ipa_get_jf_arith_result): Special case ASSERT_EXPR.
+ 
+ 2020-11-23  Jeff Law  <law@redhat.com>
+ 
+ 	* config/h8300/h8300.c (h8300_rtx_costs): Handle the various
+ 	comparison rtx codes too.
+ 
+ 2020-11-23  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-prop.c (build_agg_jump_func_from_list,
+ 	ipa_read_jump_function): Reserve agg.items precisely.
+ 	* ipa-prop.h (ipa_node_params::~ipa_node_params): Release descriptors
+ 	(ipa_edge_args::~ipa_edge_args): Release agg.items.
+ 
+ 2020-11-23  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* lto-streamer-in.c (input_cfg): Do not init ssa operands.
+ 	(input_function): Do not init tree_ssa and set in_ssa_p.
+ 	(input_ssa_names): Do it here.
+ 	* tree-ssa.c (init_tree_ssa): Add additional SIZE parameter, default
+ 	to 0
+ 	* tree-ssanames.c (init_ssanames): Do not round size up to 50, allocate
+ 	precisely.
+ 	* tree-ssa.h (init_tree_ssa): Update prototype.
+ 
+ 2020-11-23  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* diagnostic.c (diagnostic_report_current_module): Adjust for C++
+ 	module importation.
+ 
+ 2020-11-23  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.c (msp430_section_attr): Don't warn for "lower"
+ 	attribute used with "noinit" or "persistent" attributes.
+ 	(msp430_persist_attr): Remove.
+ 	(attr_lower_exclusions): Remove ATTR_PERSIST exclusion.
+ 	(attr_upper_exclusions): Likewise.
+ 	(attr_either_exclusions): Likewise.
+ 	(attr_persist_exclusions): Remove.
+ 	(msp430_attribute_table): Remove ATTR_PERSIST handling.
+ 	(msp430_handle_generic_attribute): Remove ATTR_PERSIST section conflict
+ 	handling.
+ 	(TARGET_ASM_INIT_SECTIONS): Remove.
+ 	(msp430_init_sections): Remove.
+ 	(msp430_select_section): Use default_elf_select_section for decls with
+ 	the "persistent" attribute.
+ 	(msp430_section_type_flags): Remove ".persistent" section handling.
+ 	* doc/extend.texi (MSP430 Variable Attributes): Remove "noinit" and
+ 	"persistent" documentation.
+ 
+ 2020-11-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (maybe_push_to_hybrid_worklist): Skip
+ 	debug stmts.
+ 
+ 2020-11-23  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* doc/extend.texi (Common Variable Attributes): Document the
+ 	"persistent" variable attribute.
+ 	* doc/sourcebuild.texi (Effective-Target Keywords): Document
+ 	the "persistent" effective target keyword.
+ 	* tree.h (DECL_PERSISTENT_P): Define.
+ 	* varasm.c (bss_initializer_p): Return false for a
+ 	DECL_PERSISTENT_P decl initialized to zero.
+ 	(default_section_type_flags): Handle the ".persistent" section.
+ 	(default_elf_select_section): Likewise.
+ 	(default_unique_section): Likewise.
+ 
+ 2020-11-23  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* tree.h (DECL_NOINIT_P): Define.
+ 	* varasm.c (DECL_NOINIT_P): Check DECL_NOINIT_P before using
+ 	unnamed bss/lcomm sections for bss_initializer variables.
+ 	(default_elf_select_section): Use DECL_NOINIT_P instead of
+ 	looking up attribute for .noinit section selection.
+ 	(default_unique_section): Check DECL_NOINIT_P for .noinit
+ 	section selection.
+ 
+ 2020-11-23  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 
+ 	* doc/install.texi: Document bootstrap-asan option.
+ 
+ 2020-11-22  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/97873
+ 	* config/i386/i386.md (abs<mode>2): Use SWI48DWI mode iterator.
+ 	(*abs<dwi>2_doubleword): Use DWIH mode iterator.
+ 	(<maxmin:code><mode>3): Use SWI48DWI mode iterator.
+ 	(*<maxmin:code><dwi>3_doubleword): Use DWIH mode iterator.
+ 
+ 2020-11-22  Austin Law  <austinklaw@gmail.com>
+ 
+ 	* config/h8300/addsub.md: Turn existing patterns into
+ 	define_insn_and_split style patterns where the splitter
+ 	adds a clobber of the condition code register.  Drop "cc"
+ 	attribute.  Add _clobber_flags patterns to match output of
+ 	the splitters.
+ 	(add<mod>3_incdec): Remove pattern
+ 	(adds/subs splitter): Only run before reload.
+ 	* config/h8300/bitfield.md: Turn existing patterns into
+ 	define_insn_and_split style patterns where the splitter
+ 	adds a clobber of the condition code register.  Drop "cc"
+ 	attribute.  Add _clobber_flags patterns to match output
+ 	of the splitters.
+ 	(cstoreqi4, cstorehi4, cstoresi4): Comment out
+ 	(*bstzhireg, *cmpstz, *bstz, *bistz, *cmpcondset): Likewise
+ 	(*condbset, *cmpcondbclr, *condbclr): Likewise.
+ 	(*cmpcondbsetreg, *condbsetreg, *cmpcondbclrreg): Likewise.
+ 	(*condbclrreg): Likewise.
+ 	* config/h8300/combiner.md: Turn existing patterns into
+ 	define_insn_and_split style patterns where the splitter
+ 	adds a clobber of the condition code register.  Drop "cc"
+ 	attribute.  Add _clobber_flags patterns to match output of
+ 	the splitters.  Add appropriate CC register clobbers to
+ 	existing splitters.
+ 	(*addsi3_and_r_1): Disable for now.
+ 	(*addsi3_and_not_r_1, bit-test branches): Likewise.
+ 	* config/h8300/divmod.md: Turn existing patterns into
+ 	define_insn_and_split style patterns where the splitter
+ 	adds a clobber of the condition code register.  Drop "cc"
+ 	attribute.  Add _clobber_flags patterns to match output of
+ 	the splitters.
+ 	* config/h8300/extensions.md: Turn existing patterns into
+ 	define_insn_and_split style patterns where the splitter
+ 	adds a clobber of the condition code register.  Drop "cc"
+ 	attribute.  Add _clobber_flags patterns to match output of
+ 	the splitters.
+ 	* config/h8300/genmova.sh: Drop "cc" attribute from patterns.
+ 	* config/h8300/mova.md: Drop "cc" attribute from patterns.
+ 	* config/h8300/h8300-modes.def: Add CCZN and CCZNV modes.
+ 	* config/h8300/h8300-protos.h (output_plussi): Update prototype.
+ 	(compute_plussi_length): Likewise.
+ 	(h8300_select_cc_mode): Add prototype.
+ 	(compute_a_shift_cc): Remove prototype
+ 	(cmpute_logical_op_cc): Likewise.
+ 	* config/h8300/h8300.c (names_big): Add "cc" register.
+ 	(names_extended, names_upper_extended): Likewise.
+ 	(h8300_emit_stack_adjustment): Be more selective about setting
+ 	RTX_FRAME_RELATED_P.
+ 	(h8300_print_operand): Handle CCZN mode
+ 	(h8300_select_cc_mode): New function.
+ 	(notice_update_cc): if-0 out.  Only kept for reference purposes.
+ 	(h8300_expand_store): Likewise.
+ 	(h8300_binary_length): Handle new insn forms.
+ 	(output_plussi): Add argument for NEED_FLAGS and handle that case.
+ 	(compute_plussi_length): Likewise.
+ 	(compute_logical_op_cc): Return integer.
+ 	(TARGET_FLAGS_REGNUM): Define.
+ 	* config/h8300/h8300.h (FIRST_PSEUDO_REGISTER): Bump for cc register.
+ 	(FIXED_REGISTERS, CALL_USED_REGISTERS): Handle cc register.
+ 	(REG_ALLOC_ORDER, REGISTER_NAMES): Likewise.
+ 	(SELECT_CC_MODE): Define.
+ 	* config/h8300/h8300.md: Add CC_REG.
+ 	Do not include peepholes.md for now.
+ 	* config/h8300/jumpcall.md (cbranchqi4): Consolidate into
+ 	cbranch<mode>4.
+ 	(cbranchhi4, cbranchsi4): Likewise.
+ 	(cbranch<mode>4): New expander.
+ 	(branch): New define_insn_and_split for use before reload.
+ 	(branch_1, branch_1_false): New patterns to match splitter output.
+ 	Remove code to manage cc_status.flags.
+ 	* config/h8300/logical.md: Turn existing patterns into
+ 	define_insn_and_split style patterns where the splitter
+ 	adds a clobber of the condition code register.  Drop "cc"
+ 	attribute.  Add _clobber_flags patterns to match output of
+ 	the splitters.  Move various peepholes into this file.
+ 	* config/h8300/movepush.md: Turn existing patterns into
+ 	define_insn_and_split style patterns where the splitter
+ 	adds a clobber of the condition code register.  Drop "cc"
+ 	attribute.  Add _clobber_flags patterns to match output of
+ 	the splitters.
+ 	* config/h8300/multiply.md: Turn existing patterns into
+ 	define_insn_and_split style patterns where the splitter
+ 	adds a clobber of the condition code register.  Drop "cc"
+ 	attribute.  Add _clobber_flags patterns to match output of
+ 	the splitters.
+ 	* config/h8300/other.md: Turn existing patterns into
+ 	define_insn_and_split style patterns where the splitter
+ 	adds a clobber of the condition code register.  Drop "cc"
+ 	attribute.  Add _clobber_flags patterns to match output of
+ 	the splitters.
+ 	* config/h8300/peepholes.md: Remove peepholes that were moved
+ 	elsewhere.
+ 	* config/h8300/predicates.md (simple_memory_operand): New.
+ 	* config/h8300/proepi.md: Drop "cc" attribute setting.
+ 	* config/h8300/shiftrotate.md: Turn existing patterns into
+ 	define_insn_and_split style patterns where the splitter
+ 	adds a clobber of the condition code register.  Drop "cc"
+ 	attribute.  Add _clobber_flags patterns to match output of
+ 	the splitters.
+ 	* config/h8300/testcompare.md: Turn existing patterns into
+ 	define_insn_and_split style patterns where the splitter
+ 	adds a clobber of the condition code register.  Drop "cc"
+ 	attribute.  Add _clobber_flags patterns to match output of
+ 	the splitters.  Disable various patterns for now.
+ 	Move some peepholes that were previously in peepholes.md here.
+ 	* config/h8300/save.md: New file.
+ 
+ 2020-11-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/95853
+ 	* tree-ssa-math-opts.c (uaddsub_overflow_check_p): Add maxval
+ 	argument, if non-NULL, instead look for r > maxval or r <= maxval
+ 	comparisons.
+ 	(match_uaddsub_overflow): Pattern recognize even other forms of
+ 	__builtin_add_overflow, in particular when addition is performed
+ 	in a wider type and result compared to maximum of the narrower
+ 	type.
+ 
+ 2020-11-22  Jeff Law  <law@redhat.com>
+ 
+ 	* config/h8300/jumpcall.md (branch_true, branch_false): Revert
+ 	recent change.  Ensure operand[0] is always the target label.
+ 
+ 2020-11-22  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin-c.c (struct f_align_stack): Rename
+ 	to type from align_stack to f_align_stack.
+ 	(push_field_alignment): Likewise.
+ 	(pop_field_alignment): Likewise.
+ 
+ 2020-11-21  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/94695
+ 	* doc/invoke.texi: Update the -Wrange-loop-construct description.
+ 
+ 2020-11-21  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* tree-ssa-alias.c (ao_compare::compare_ao_refs,
+ 	ao_compare::hash_ao_ref): Use OEP_MATCH_SIDE_EFFECTS.
+ 
+ 2020-11-21  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-icf.c (sem_function::equals_wpa): Do not compare ODR type with
+ 	-fno-devirtualize.
+ 	(sem_item_optimizer::update_hash_by_addr_refs): Hash anonymous ODR
+ 	types by TYPE_UID of their main variant.
+ 
+ 2020-11-21  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+ 	Enable vector pair memcpy/memmove expansion.
+ 
+ 2020-11-21  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	* config/rs6000/mma.md (unspec): Add assemble/extract UNSPECs.
+ 	(movoi): Change to movoo.
+ 	(*movpoi): Change to *movoo.
+ 	(movxi): Change to movxo.
+ 	(*movpxi): Change to *movxo.
+ 	(mma_assemble_pair): Change to OO mode.
+ 	(*mma_assemble_pair): New define_insn_and_split.
+ 	(mma_disassemble_pair): New define_expand.
+ 	(*mma_disassemble_pair): New define_insn_and_split.
+ 	(mma_assemble_acc): Change to XO mode.
+ 	(*mma_assemble_acc): Change to XO mode.
+ 	(mma_disassemble_acc): New define_expand.
+ 	(*mma_disassemble_acc): New define_insn_and_split.
+ 	(mma_<acc>): Change to XO mode.
+ 	(mma_<vv>): Change to XO mode.
+ 	(mma_<avv>): Change to XO mode.
+ 	(mma_<pv>): Change to OO mode.
+ 	(mma_<apv>): Change to XO/OO mode.
+ 	(mma_<vvi4i4i8>): Change to XO mode.
+ 	(mma_<avvi4i4i8>): Change to XO mode.
+ 	(mma_<vvi4i4i2>): Change to XO mode.
+ 	(mma_<avvi4i4i2>): Change to XO mode.
+ 	(mma_<vvi4i4>): Change to XO mode.
+ 	(mma_<avvi4i4>): Change to XO mode.
+ 	(mma_<pvi4i2>): Change to XO/OO mode.
+ 	(mma_<apvi4i2>): Change to XO/OO mode.
+ 	(mma_<vvi4i4i4>): Change to XO mode.
+ 	(mma_<avvi4i4i4>): Change to XO mode.
+ 	* config/rs6000/predicates.md (input_operand): Allow opaque.
+ 	(mma_disassemble_output_operand): New predicate.
+ 	* config/rs6000/rs6000-builtin.def:
+ 	Changes to disassemble builtins.
+ 	* config/rs6000/rs6000-call.c (rs6000_return_in_memory):
+ 	Disallow __vector_pair/__vector_quad as return types.
+ 	(rs6000_promote_function_mode): Remove function return type
+ 	check because we can't test it here any more.
+ 	(rs6000_function_arg): Do not allow __vector_pair/__vector_quad
+ 	as as function arguments.
+ 	(rs6000_gimple_fold_mma_builtin):
+ 	Handle mma_disassemble_* builtins.
+ 	(rs6000_init_builtins): Create types for XO/OO modes.
+ 	* config/rs6000/rs6000-modes.def: DElete OI, XI,
+ 	POI, and PXI modes, and create XO and OO modes.
+ 	* config/rs6000/rs6000-string.c (expand_block_move):
+ 	Update to OO mode.
+ 	* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok_uncached):
+ 	Update for XO/OO modes.
+ 	(rs6000_rtx_costs): Make UNSPEC_MMA_XXSETACCZ cost 0.
+ 	(rs6000_modes_tieable_p): Update for XO/OO modes.
+ 	(rs6000_debug_reg_global): Update for XO/OO modes.
+ 	(rs6000_setup_reg_addr_masks): Update for XO/OO modes.
+ 	(rs6000_init_hard_regno_mode_ok): Update for XO/OO modes.
+ 	(reg_offset_addressing_ok_p): Update for XO/OO modes.
+ 	(rs6000_emit_move): Update for XO/OO modes.
+ 	(rs6000_preferred_reload_class): Update for XO/OO modes.
+ 	(rs6000_split_multireg_move): Update for XO/OO modes.
+ 	(rs6000_mangle_type): Update for opaque types.
+ 	(rs6000_invalid_conversion): Update for XO/OO modes.
+ 	* config/rs6000/rs6000.h (VECTOR_ALIGNMENT_P):
+ 	Update for XO/OO modes.
+ 	* config/rs6000/rs6000.md (RELOAD): Update for XO/OO modes.
+ 
+ 2020-11-21  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	* typeclass.h: Add opaque_type_class.
+ 	* builtins.c (type_to_class): Identify opaque type class.
+ 	* dwarf2out.c (is_base_type): Handle opaque types.
+ 	(gen_type_die_with_usage): Handle opaque types.
+ 	* expr.c (count_type_elements): Opaque types should
+ 	never have initializers.
+ 	* ipa-devirt.c (odr_types_equivalent_p): No type-specific handling
+ 	for opaque types is needed as it eventually checks the underlying
+ 	mode which is what is important.
+ 	* tree-streamer.c (record_common_node): Handle opaque types.
+ 	* tree.c (type_contains_placeholder_1): Handle opaque types.
+ 	(type_cache_hasher::equal): No additional comparison needed for
+ 	opaque types.
+ 
+ 2020-11-20  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-call.c (rs6000_expand_builtin): Add missing
+ 	XSCMP* cases for IEEE 128-bit long double.
+ 
+ 2020-11-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/97918
+ 	* dwarf2out.c (dwarf2out_early_finish): flush_limbo_die_list
+ 	after gen_scheduled_generic_parms_dies.
+ 
+ 2020-11-20  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/97879
+ 	* tree-core.h (enum attribute_flags): Add ATTR_FLAG_INTERNAL.
+ 
+ 2020-11-20  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-icf-gimple.c (func_checker::hash_operand): Improve hashing of
+ 	decls.
+ 
+ 2020-11-20  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-icf-gimple.c (func_checker::compare_decl): Do not compare types
+ 	of local variables.
+ 
+ 2020-11-20  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* doc/invoke.texi: Replace a couple of @code with @command
+ 
+ 2020-11-20  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* tree-vect-slp.c (vectorizable_slp_permutation): Update types on nodes
+ 	when needed.
+ 
+ 2020-11-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (maybe_push_to_hybrid_worklist): New function.
+ 	(vect_detect_hybrid_slp): Use it.  Perform a backward walk
+ 	over the IL.
+ 
+ 2020-11-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_print_slp_tree): Also dump
+ 	SLP_TREE_REPRESENTATIVE.
+ 
+ 2020-11-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libstdc++/88101
+ 	* builtins.def (BUILT_IN_CLEAR_PADDING): New built-in function.
+ 	* gimplify.c (gimplify_call_expr): Rewrite single argument
+ 	BUILT_IN_CLEAR_PADDING into two-argument variant.
+ 	* gimple-fold.c (clear_padding_unit, clear_padding_buf_size): New
+ 	const variables.
+ 	(struct clear_padding_struct): New type.
+ 	(clear_padding_flush, clear_padding_add_padding,
+ 	clear_padding_emit_loop, clear_padding_type,
+ 	clear_padding_union, clear_padding_real_needs_padding_p,
+ 	clear_padding_type_may_have_padding_p,
+ 	gimple_fold_builtin_clear_padding): New functions.
+ 	(gimple_fold_builtin): Handle BUILT_IN_CLEAR_PADDING.
+ 	* doc/extend.texi (__builtin_clear_padding): Document.
+ 
+ 2020-11-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/97528
+ 	* config/arm/arm.c (neon_vector_mem_operand): For POST_MODIFY, require
+ 	first POST_MODIFY operand is a REG and is equal to the first operand
+ 	of PLUS.
+ 
+ 2020-11-20  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gimple-ssa-store-merging.c (struct merged_store_group): Add
+ 	new 'consecutive' field.
+ 	(merged_store_group): Set it to true.
+ 	(do_merge): Set it to false if the store is not consecutive and
+ 	set string_concatenation to false in this case.
+ 	(merge_into): Call do_merge on entry.
+ 	(merge_overlapping): Likewise.
+ 
+ 2020-11-20  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-icf-gimple.c (func_checker::operand_equal_p): Fix comment.
+ 
+ 2020-11-20  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-icf-gimple.c (func_checker::hash_operand): Hash gimple clobber.
+ 	(func_checker::operand_equal_p): Special case gimple clobber.
+ 
+ 2020-11-20  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/97873
+ 	* config/i386/i386.md (*neg<mode>2_2): Rename from
+ 	"*neg<mode>2_cmpz".  Use CCGOCmode instead of CCZmode.
+ 	(*negsi2_zext): Rename from *negsi2_cmpz_zext.
+ 	Use CCGOCmode instead of CCZmode.
+ 	(*neg<mode>_ccc_1): New insn pattern.
+ 	(*neg<dwi>2_doubleword): Use *neg<mode>_ccc_1.
+ 	(abs<mode>2): Add FLAGS_REG clobber.
+ 	Use TARGET_CMOVE insn predicate.
+ 	(*abs<mode>2_1): New insn_and_split pattern.
+ 	(*absdi2_doubleword): Ditto.
+ 	(<maxmin:code><mode>3): Use SWI48x mode iterator.
+ 	(*<maxmin:code><mode>3): Use SWI48 mode iterator.
+ 	* config/i386/i386-features.c
+ 	(general_scalar_chain::compute_convert_gain): Handle ABS code.
+ 	(general_scalar_chain::convert_insn): Ditto.
+ 	(general_scalar_to_vector_candidate_p): Ditto.
+ 
+ 2020-11-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR other/97911
+ 	* configure.ac: In SERIAL_LIST use lang words without .serial
+ 	suffix.  Change $lang.prev from a target to variable and instead
+ 	of depending on *.serial expand to the *.serial variable if
+ 	the word is in the SERIAL_LIST at all, otherwise to nothing.
+ 	* configure: Regenerated.
+ 
+ 2020-11-20  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.md (p8_mtvsrd_df): Fix insn type.
+ 
+ 2020-11-20  Martin Uecker  <muecker@gwdg.de>
+ 
+ 	* gimplify.c (gimplify_modify_expr_rhs): Optimizie
+ 	NOP_EXPRs that contain compound literals.
+ 
+ 2020-11-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/91029
+ 	* range-op.cc (operator_trunc_mod::op1_range): Don't require signed
+ 	types, nor require that op2 >= 0.  Implement (a % b) >= x && x > 0
+ 	implies a >= x and (a % b) <= x && x < 0 implies a <= x.
+ 	(operator_trunc_mod::op2_range): New method.
+ 
+ 2020-11-19  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/93781
+ 	* range-op.cc (get_shift_range): Rename from
+ 	undefined_shift_range_check and now return valid shift ranges.
+ 	(operator_lshift::fold_range): Use result from get_shift_range.
+ 	(operator_rshift::fold_range): Ditto.
+ 
+ 2020-11-19  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* fold-const.c (operand_compare::operand_equal_p): Fix thinko in
+ 	COMPONENT_REF handling and guard types_same_for_odr by
+ 	virtual_method_call_p.
+ 	(operand_compare::hash_operand): Likewise.
+ 
+ 2020-11-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/97860
+ 	* tree.c (array_type_nelts): For complete arrays with zero min
+ 	and NULL max and zero size return -1.
+ 
+ 2020-11-19  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* configure.ac: Add tests for fstatat, sighandler_t, O_CLOEXEC,
+ 	unix-domain and ipv6 sockets.
+ 	* config.in: Rebuilt.
+ 	* configure: Rebuilt.
+ 
+ 2020-11-19  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	* config/pru/alu-zext.md: Add lmbd patterns for zero_extend
+ 	variants.
+ 	* config/pru/pru.c (enum pru_builtin): Add HALT and LMBD.
+ 	(pru_init_builtins): Ditto.
+ 	(pru_builtin_decl): Ditto.
+ 	(pru_expand_builtin): Ditto.
+ 	* config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Define PRU
+ 	value for CLZ with zero value parameter.
+ 	* config/pru/pru.md: Add halt, lmbd and clz patterns.
+ 	* doc/extend.texi: Document PRU builtins.
+ 
+ 2020-11-19  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* doc/invoke.texi (-fvect-cost-model): Add a very-cheap model.
+ 	* common.opt (fvect-cost-model=): Add very-cheap as a possible option.
+ 	(fsimd-cost-model=): Likewise.
+ 	(vect_cost_model): Add very-cheap.
+ 	* flag-types.h (vect_cost_model): Add VECT_COST_MODEL_VERY_CHEAP.
+ 	Put the values in order of increasing aggressiveness.
+ 	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Use
+ 	range checks when comparing against VECT_COST_MODEL_CHEAP.
+ 	(vect_prune_runtime_alias_test_list): Do not allow any alias
+ 	checks for the very-cheap cost model.
+ 	* tree-vect-loop.c (vect_analyze_loop_costing): Do not allow
+ 	any peeling for the very-cheap cost model.  Also require one
+ 	iteration of the vector loop to pay for itself.
+ 
+ 2020-11-19  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (neoversen1_tunings): Use new
+ 	cortexa76_extra_costs.
+ 	(neoversev1_tunings): Likewise.
+ 	(neoversen2_tunines): Likewise.
+ 	* config/arm/aarch-cost-tables.h (cortexa76_extra_costs):
+ 	add new costs.
+ 
+ 2020-11-19  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_expand_cpymem): Cleanup code and
+ 	comments, tweak expansion decisions and improve tail expansion.
+ 
+ 2020-11-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	* fold-const.c (operand_compare::hash_operand): Fix typo.
+ 
+ 2020-11-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-reassoc.c (get_rank): Refactor to consistently
+ 	use the cache and dump ranks assigned.
+ 
+ 2020-11-19  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* fold-const.c (operand_compare::operand_equal_p): More OBJ_TYPE_REF
+ 	matching to correct place; drop OEP_ADDRESS_OF for TOKEN, OBJECT and
+ 	class.
+ 	(operand_compare::hash_operand): Hash ODR type for OBJ_TYPE_REF.
+ 
+ 2020-11-19  Joel Hutton  <joel.hutton@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md: Add vec_widen_lshift_hi/lo<mode>
+ 	patterns.
+ 	* tree-vect-stmts.c (vectorizable_conversion): Fix for widen_lshift
+ 	case.
+ 
+ 2020-11-19  Joel Hutton  <joel.hutton@arm.com>
+ 
+ 	* doc/generic.texi: Document new widen_plus/minus_lo/hi tree codes.
+ 	* doc/md.texi: Document new widenening add/subtract hi/lo optabs.
+ 	* expr.c (expand_expr_real_2): Add widen_add, widen_subtract cases.
+ 	* optabs-tree.c (optab_for_tree_code): Add case for widening optabs.
+ 	* optabs.def (OPTAB_D): Define vectorized widen add, subtracts.
+ 	* tree-cfg.c (verify_gimple_assign_binary): Add case for widening adds,
+ 	subtracts.
+ 	* tree-inline.c (estimate_operator_cost): Add case for widening adds,
+ 	subtracts.
+ 	* tree-vect-generic.c (expand_vector_operations_1): Add case for
+ 	widening adds, subtracts
+ 	* tree-vect-patterns.c (vect_recog_widen_add_pattern): New recog
+ 	pattern.
+ 	(vect_recog_widen_sub_pattern): New recog pattern.
+ 	(vect_recog_average_pattern): Update widened add code.
+ 	(vect_recog_average_pattern): Update widened add code.
+ 	* tree-vect-stmts.c (vectorizable_conversion): Add case for widened add,
+ 	subtract.
+ 	(supportable_widening_operation): Add case for widened add, subtract.
+ 	* tree.def
+ 	(WIDEN_PLUS_EXPR): New tree code.
+ 	(WIDEN_MINUS_EXPR): New tree code.
+ 	(VEC_WIDEN_ADD_HI_EXPR): New tree code.
+ 	(VEC_WIDEN_PLUS_LO_EXPR): New tree code.
+ 	(VEC_WIDEN_MINUS_HI_EXPR): New tree code.
+ 	(VEC_WIDEN_MINUS_LO_EXPR): New tree code.
+ 
+ 2020-11-19  Joel Hutton  <joel.hutton@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md: New patterns
+ 	vec_widen_saddl_lo/hi_<mode>.
+ 
+ 2020-11-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97901
+ 	* tree-ssa-propagate.c (clean_up_loop_closed_phi): Compute
+ 	dominators and use replace_uses_by.
+ 
+ 2020-11-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* dwarf2out.h (struct fixed_point_type_info) <scale_factor>: Turn
+ 	numerator and denominator into a tree.
+ 	* dwarf2out.c (base_type_die): In the case of a fixed-point type
+ 	with arbitrary scale factor, call add_scalar_info on numerator and
+ 	denominator to emit the appropriate attributes.
+ 
+ 2020-11-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97897
+ 	* tree-complex.c (complex_propagate::visit_stmt): Make sure
+ 	abnormally used SSA names are VARYING.
+ 	(complex_propagate::visit_phi): Likewise.
+ 	* tree-ssa.c (verify_phi_args): Verify PHI arguments on abnormal
+ 	edges are SSA names.
+ 
+ 2020-11-19  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*<absneg:code><mode>2_i387_1):
+ 	Disable for TARGET_SSE_MATH modes.
+ 
+ 2020-11-19  Jeff Law  <law@redhat.com>
+ 
+ 	* config/h8300/constraints.md (R constraint): Add argument to call
+ 	to h8300_shift_needs_scratch_p.
+ 	(S and T constraints): Similary.
+ 	* config/h8300/h8300-protos.h: Update h8300_shift_needs_scratch_p
+ 	prototype.
+ 	* config/h8300/h8300.c (expand_a_shift): Emit a different pattern
+ 	if the shift does not require a scratch register.
+ 	(h8300_shift_needs_scratch_p): Refine to be more accurate.
+ 	* config/h8300/shiftrotate.md (shiftqi_noscratch): New pattern.
+ 	(shifthi_noscratch, shiftsi_noscratch): Similarly.
+ 
+ 2020-11-18  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR middle-end/85811
+ 	* fold-const.c (tree_expr_finite_p): New function to test whether
+ 	a tree expression must be finite, i.e. not a FP NaN or infinity.
+ 	(tree_expr_infinite_p):  New function to test whether a tree
+ 	expression must be infinite, i.e. a FP infinity.
+ 	(tree_expr_maybe_infinite_p): New function to test whether a tree
+ 	expression may be infinite, i.e. a FP infinity.
+ 	(tree_expr_signaling_nan_p): New function to test whether a tree
+ 	expression must evaluate to a signaling NaN (sNaN).
+ 	(tree_expr_maybe_signaling_nan_p): New function to test whether a
+ 	tree expression may be a signaling NaN (sNaN).
+ 	(tree_expr_nan_p): New function to test whether a tree expression
+ 	must evaluate to a (quiet or signaling) NaN.
+ 	(tree_expr_maybe_nan_p): New function to test whether a tree
+ 	expression me be a (quiet or signaling) NaN.
+ 	(tree_binary_nonnegative_warnv_p) [MAX_EXPR]: In the presence
+ 	of NaNs, MAX_EXPR is only guaranteed to be non-negative, if both
+ 	operands are non-negative.
+ 	(tree_call_nonnegative_warnv_p) [CASE_CFN_FMAX,CASE_CFN_FMAX_FN]:
+ 	In the presence of signaling NaNs, fmax is only guaranteed to be
+ 	non-negative if both operands are negative.  In the presence of
+ 	quiet NaNs, fmax is non-negative if either operand is non-negative
+ 	and not a qNaN, or both operands are non-negative.
+ 	* fold-const.h (tree_expr_finite_p, tree_expr_infinite_p,
+ 	tree_expr_maybe_infinite_p, tree_expr_signaling_nan_p,
+ 	tree_expr_maybe_signaling_nan_p, tree_expr_nan_p,
+ 	tree_expr_maybe_nan_p): Prototype new functions here.
+ 	* builtins.c (fold_builtin_classify) [BUILT_IN_ISINF]: Fold to
+ 	a constant if argument is known to be (or not to be) an Infinity.
+ 	[BUILT_IN_ISFINITE]: Fold to a constant if argument is known to
+ 	be (or not to be) finite.
+ 	[BUILT_IN_ISNAN]: Fold to a constant if argument is known to be
+ 	(or not to be) a NaN.
+ 	(fold_builtin_fpclassify): Check tree_expr_maybe_infinite_p and
+ 	tree_expr_maybe_nan_p instead of HONOR_INFINITIES and HONOR_NANS
+ 	respectively.
+ 	(fold_builtin_unordered_cmp): Fold UNORDERED_EXPR to a constant
+ 	when its arguments are known to be (or not be) NaNs.  Check
+ 	tree_expr_maybe_nan_p instead of HONOR_NANS when choosing between
+ 	unordered and regular forms of comparison operators.
+ 	* match.pd (ordered(x,y)->true/false): Constant fold ORDERED_EXPR
+ 	if its operands are known to be (or not to be) NaNs.
+ 	(unordered(x,y)->true/false): Constant fold UNORDERED_EXPR if its
+ 	operands are known to be (or not to be) NaNs.
+ 	(sqrt(x)*sqrt(x)->x): Check tree_expr_maybe_signaling_nan_p instead
+ 	of HONOR_SNANS.
+ 
+ 2020-11-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/91029
+ 	PR tree-optimization/97888
+ 	* range-op.cc (operator_trunc_mod::op1_range): Only set op1
+ 	range to >= 0 if lhs is > 0, rather than >= 0.  Fix up comments.
+ 
+ 2020-11-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* opts.h (struct cl_var): New type.
+ 	(cl_vars): Declare.
+ 	* optc-gen.awk: Generate cl_vars array.
+ 
+ 2020-11-18  Eugene Rozenfeld  <Eugene.Rozenfeld@microsoft.com>
+ 
+ 	PR tree-optimization/96671
+ 	* match.pd (three xor patterns): New patterns.
+ 
+ 2020-11-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* optc-save-gen.awk: Initialize var_opt_init.  In
+ 	cl_optimization_stream_out for params with default values larger than
+ 	10, xor the default value with the actual parameter value.  In
+ 	cl_optimization_stream_in repeat the above xor.
+ 
+ 2020-11-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* configure.ac: Add $lang.prev rules, INDEX.$lang and SERIAL_LIST and
+ 	SERIAL_COUNT variables to Make-hooks.
+ 	(--enable-link-serialization): New configure option.
+ 	* Makefile.in (DO_LINK_SERIALIZATION, LINK_PROGRESS): New variables.
+ 	* doc/install.texi (--enable-link-serialization): Document.
+ 	* configure: Regenerated.
+ 
+ 2020-11-18  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/97870
+ 	* lra-constraints.c (curr_insn_transform): Do not delete asm goto
+ 	with wrong constraints.  Nullify it saving CFG.
+ 
+ 2020-11-18  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.md (mulhi3): New.
+ 	(mulsi3): New.
+ 	(mulsidi3): Rename to *mulsidi3_inline.
+ 	(umulsidi3): Rename to *umulsidi3_inline.
+ 	(mulsidi3): New define_expand.
+ 	(umulsidi3): New define_expand.
+ 
+ 2020-11-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97886
+ 	* tree-vect-loop.c (vectorizable_lc_phi): Properly assign
+ 	vector types to invariants for SLP.
+ 
+ 2020-11-18  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* config.gcc (*-*-dragonfly*): Add dragonfly-d.o and t-dragonfly.
+ 	* config/dragonfly-d.c: New file.
+ 	* config/t-dragonfly: New file.
+ 
+ 2020-11-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/97862
+ 	* omp-expand.c (expand_omp_for_init_vars): Don't use the sqrt path
+ 	if number of iterations is constant 0.
+ 
+ 2020-11-18  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.c (riscv_ext_version): New.
+ 	(riscv_ext_version_table): Ditto.
+ 	(get_default_version): Ditto.
+ 	(riscv_subset_t::implied_p): New field.
+ 	(riscv_subset_t::riscv_subset_t): Init implied_p.
+ 	(riscv_subset_list::add): New.
+ 	(riscv_subset_list::handle_implied_ext): Pass riscv_subset_t
+ 	instead of separated argument.
+ 	(riscv_subset_list::to_string): Handle zifencei and zicsr, and
+ 	omit version if version is unknown.
+ 	(riscv_subset_list::parsing_subset_version): New argument `ext`,
+ 	remove default_major_version and default_minor_version, get
+ 	default version info via get_default_version.
+ 	(riscv_subset_list::parse_std_ext): Update argument for
+ 	parsing_subset_version calls.
+ 	Handle 2.2 ISA spec, always enable zicsr and zifencei, they are
+ 	included in baseline ISA in that time.
+ 	(riscv_subset_list::parse_multiletter_ext): Update argument for
+ 	`parsing_subset_version` and `add` calls.
+ 	(riscv_subset_list::parse): Adjust argument for
+ 	riscv_subset_list::handle_implied_ext call.
+ 	* config.gcc (riscv*-*-*): Handle --with-isa-spec=.
+ 	* config.in (HAVE_AS_MISA_SPEC): New.
+ 	(HAVE_AS_MARCH_ZIFENCEI): Ditto.
+ 	* config/riscv/riscv-opts.h (riscv_isa_spec_class): New.
+ 	(riscv_isa_spec): Ditto.
+ 	* config/riscv/riscv.h (HAVE_AS_MISA_SPEC): New.
+ 	(ASM_SPEC): Pass -misa-spec if gas supported.
+ 	* config/riscv/riscv.opt (riscv_isa_spec_class) New.
+ 	* configure.ac (HAVE_AS_MARCH_ZIFENCEI): New test.
+ 	(HAVE_AS_MISA_SPEC): Ditto.
+ 	* configure: Regen.
+ 
+ 2020-11-18  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.c (riscv_implied_info):
+ 	d and f implied zicsr.
+ 	(riscv_ext_flag_table): Handle zicsr and zifencei.
+ 	* config/riscv/riscv-opts.h (MASK_ZICSR): New.
+ 	(MASK_ZIFENCEI): Ditto.
+ 	(TARGET_ZICSR): Ditto.
+ 	(TARGET_ZIFENCEI): Ditto.
+ 	* config/riscv/riscv.md (clear_cache): Check TARGET_ZIFENCEI.
+ 	(fence_i): Ditto.
+ 	* config/riscv/riscv.opt (riscv_zi_subext): New.
+ 
+ 2020-11-18  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.c (single_letter_subset_rank): New.
+ 	(multi_letter_subset_rank): Ditto.
+ 	(subset_cmp): Ditto.
+ 	(riscv_subset_list::add): Insert subext in canonical ordering.
+ 	(riscv_subset_list::parse_std_ext): Move handle_implied_ext to ...
+ 	(riscv_subset_list::parse): ... here.
+ 
+ 2020-11-18  Jiufu Guo   <guojiufu@linux.ibm.com>
+ 
+ 	* cfgloop.h (loop_optimizer_finalize): Add flag argument.
+ 	* loop-init.c (loop_optimizer_finalize): Call clean_up_loop_closed_phi.
+ 	* tree-cfgcleanup.h (clean_up_loop_closed_phi): New declare.
+ 	* tree-ssa-loop.c (tree_ssa_loop_done): Call loop_optimizer_finalize
+ 	with flag argument.
+ 	* tree-ssa-propagate.c (clean_up_loop_closed_phi): New function.
+ 
+ 2020-11-17  Sebastian Pop  <spop@amazon.com>
+ 
+ 	* config.gcc: add configure flags --with-{cpu,arch,tune}-{32,64}
+ 	as alias flags for --with-{cpu,arch,tune} on AArch64.
+ 	* doc/install.texi: Document new flags for aarch64.
+ 
+ 2020-11-17  Sebastian Pop  <spop@amazon.com>
+ 
+ 	* config.gcc: Add --with-tune to AArch64 configure flags.
+ 
+ 2020-11-17  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/91029
+ 	* range-op.cc (operator_trunc_mod::op1_range): New.
+ 
+ 2020-11-17  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-icf.c (sem_function::hash_stmt): Fix conditional on
+ 	variably_modified_type_p.
+ 
+ 2020-11-17  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* tree.h (cache_integer_cst): Add defaulted might_duplicate parm.
+ 	* tree.c (cache_integer_cst): Return the integer cst, add
+ 	might_duplicate parm to permit finding a small duplicate.
+ 
+ 2020-11-17  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/83072
+ 	* range-op.cc (wi_optimize_and_or): Remove zero from IOR range when
+ 	mask is non-zero.
+ 
+ 2020-11-17  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* ginclude/float.h (CR_DECIMAL_DIG): Also define for
+ 	[__STDC_WANT_IEC_60559_EXT__].
+ 
+ 2020-11-17  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* ginclude/float.h [__STDC_VERSION__ > 201710L] (FLT_IS_IEC_60559,
+ 	DBL_IS_IEC_60559, LDBL_IS_IEC_60559): New macros.
+ 
+ 2020-11-17  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	PR target/96791
+ 	* mode-classes.def: Add MODE_OPAQUE.
+ 	* machmode.def: Add OPAQUE_MODE.
+ 	* tree.def: Add OPAQUE_TYPE for types that will use
+ 	MODE_OPAQUE.
+ 	* doc/generic.texi: Document OPAQUE_TYPE.
+ 	* doc/rtl.texi: Document MODE_OPAQUE.
+ 	* machmode.h: Add OPAQUE_MODE_P().
+ 	* genmodes.c (complete_mode): Add MODE_OPAQUE.
+ 	(opaque_mode): New function.
+ 	* tree.c (tree_code_size): Add OPAQUE_TYPE.
+ 	* tree.h: Add OPAQUE_TYPE_P().
+ 	* stor-layout.c (int_mode_for_mode): Treat MODE_OPAQUE modes
+ 	like BLKmode.
+ 	* ira.c (find_moveable_pseudos): Treat MODE_OPAQUE modes more
+ 	like integer/float modes here.
+ 	* dbxout.c (dbxout_type): Treat OPAQUE_TYPE like VOID_TYPE.
+ 	* tree-pretty-print.c (dump_generic_node): Treat OPAQUE_TYPE
+ 	like like other types.
+ 
+ 2020-11-17  Jan Hubicka  <hubicka@ucw.cz>
+ 	    Martin Liska  <mliska@suse.cz>
+ 
+ 	* ipa-icf.c: Include data-streamer.h and alias.h.
+ 	(sem_function::sem_function): Initialize memory_access_types
+ 	and m_alias_sets_hash.
+ 	(sem_function::hash_stmt): For memory accesses and when going to
+ 	do lto streaming add base and ref types into memory_access_types.
+ 	(sem_item_optimizer::write_summary): Stream memory access types.
+ 	(sem_item_optimizer::read_section): Likewise and also iniitalize
+ 	m_alias_sets_hash.
+ 	(sem_item_optimizer::execute): Call
+ 	sem_item_optimizer::update_hash_by_memory_access_type.
+ 	(sem_item_optimizer::update_hash_by_memory_access_type): Updat.
+ 	* ipa-icf.h (sem_function): Add memory_access_types and
+ 	m_alias_sets_hash.
+ 
+ 2020-11-17  Jan Hubicka  <jh@suse.cz>
+ 
+ 	PR bootstrap/97857
+ 	* ipa-devirt.c (odr_based_tbaa_p): Do not ICE when
+ 	odr_hash is not initialized
+ 	* ipa-utils.h (type_with_linkage_p): Do not sanity check
+ 	CXX_ODR_P.
+ 	* tree-streamer-out.c (pack_ts_type_common_value_fields): Set
+ 	CXX_ODR_P according to the canonical type.
+ 
+ 2020-11-17  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* langhooks-def.h (LANG_HOOKS_PREPROCESS_MAIN_FILE)
+ 	(LANG_HOOKS_PREPROCESS_OPTIONS, LANG_HOOKS_PREPROCESS_UNDEF)
+ 	(LANG_HOOKS_PREPROCESS_TOKEN): New.
+ 	(LANG_HOOKS_INITIALIZER): Add them.
+ 	* langhooks.h (struct lang_hooks): Add preprocess_main_file,
+ 	preprocess_options, preprocess_undef, preprocess_token hooks.  Add
+ 	enum PT_flags.
+ 
+ 2020-11-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/97693
+ 	* tree-vect-stmts.c (vectorizable_call): Pass the required vectype
+ 	to vect_get_vec_defs_for_operand.
+ 
+ 2020-11-17  Liu Hao  <lh_mouse@126.com>
+ 
+ 	* config/i386/msformat-c.c: Add more length modifiers.
+ 
+ 2020-11-17  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR driver/97574
+ 	* gcc.c (convert_filename): Don't add suffix to things that are
+ 	not files.
+ 	(not_actual_file_p): Use supplied argument.
+ 
+ 2020-11-17  Haochen Gui  <guihaoc@gcc.gnu.org>
+ 
+ 	* final.c (final_scan_insn_1): Set jump table relocatable as the
+ 	second argument of targetm.asm_out.function_rodata_section.
+ 	* output.h (default_function_rodata_section,
+ 	default_no_function_rodata_section): Add the second argument to the
+ 	declarations.
+ 	* target.def (function_rodata_section): Change the doc and add
+ 	the second argument.
+ 	* doc/tm.texi: Regenerate.
+ 	* varasm.c (jumptable_relocatable): Implement.
+ 	(default_function_rodata_section): Add the second argument
+ 	and the support for relocatable read only sections.
+ 	(default_no_function_rodata_section): Add the second argument.
+ 	(function_mergeable_rodata_prefix): Set the second argument to false.
+ 	* config/mips/mips.c (mips_function_rodata_section): Add the second
+ 	arugment and set it to false.
+ 	* config/s390/s390.c (targetm.asm_out.function_rodata_section): Set
+ 	the second argument to false.
+ 	* config/s390/s390.md: Likewise.
+ 
+ 2020-11-17  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/97194
+ 	* config/i386/i386-expand.c (ix86_expand_vector_set_var): New function.
+ 	* config/i386/i386-protos.h (ix86_expand_vector_set_var): New Decl.
+ 	* config/i386/predicates.md (vec_setm_operand): New predicate,
+ 	true for const_int_operand or register_operand under TARGET_AVX2.
+ 	* config/i386/sse.md (vec_set<mode>): Support both constant
+ 	and variable index vec_set.
+ 
+ 2020-11-17  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* tree-ssa-uninit.c (maybe_warn_operand): Call is_empty_type.
+ 	* tree.c (default_is_empty_type): Rename...
+ 	(is_empty_type): ...to this.
+ 	* tree.h (is_empty_type): Declare.
+ 
+ 2020-11-17  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/95673
+ 	* tree-ssa-strlen.c (used_only_for_zero_equality): Rename...
+ 	(use_in_zero_equality): ...to this.  Add a default argument.
+ 	(handle_builtin_memcmp): Adjust to the name change above.
+ 	(handle_builtin_string_cmp): Same.
+ 	(maybe_warn_pointless_strcmp): Same.  Pass in an explicit argument.
+ 
+ 2020-11-17  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* ginclude/float.h (DEC32_SNAN, DEC64_SNAN, DEC128_SNAN): New C2x
+ 	macros.
+ 
+ 2020-11-17  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* ginclude/float.h (INFINITY, NAN, FLT_SNAN, DBL_SNAN, LDBL_SNAN)
+ 	(FLT16_SNAN, FLT32_SNAN, FLT64_SNAN, FLT128_SNAN, FLT32X_SNAN)
+ 	(FLT64X_SNAN, FLT128X_SNAN, DEC_INFINITY, DEC_NAN): New C2x
+ 	macros.
+ 	* doc/sourcebuild.texi (Effective-Target Keywords): Document inff.
+ 
+ 2020-11-17  Armin Brauns via Gcc-patches  <gcc-patches@gcc.gnu.org>
+ 
+ 	* gcc.c: Document %T spec file directive.
+ 	* doc/invoke.texi: Remove %p, %P spec file directives.
+ 	Add %M, %R, %V, %nSTR, %>S, %<S*, %{%:function(args):X}, %@{...} spec
+ 	file directives add sanitize, version-compare, include, gt and
+ 	debug-level-gt spec functions.
+ 
+ 2020-11-16  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR rtl-optimization/92180
+ 	* config/i386/i386.c (ix86_hardreg_mov_ok): New function to
+ 	determine whether (set DST SRC) should be allowed at this point.
+ 	* config/i386/i386-protos.h (ix86_hardreg_mov_ok): Prototype here.
+ 	* config/i386/i386-expand.c (ix86_expand_move): Check whether
+ 	this is a complex set of a likely spilled hard register, and if
+ 	so place the value in a pseudo, and load the hard reg from it.
+ 	* config/i386/i386.md (*movdi_internal, *movsi_internal)
+ 	(*movhi_internal, *movqi_internal): Make these instructions
+ 	conditional on ix86_hardreg_mov_ok.
+ 	(*lea<mode>): Make this define_insn_and_split conditional on
+ 	ix86_hardreg_mov_ok.
+ 
+ 2020-11-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* params.opt: Add missing dot.
+ 
+ 2020-11-16  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (escape_point): New type.
+ 	(modref_lattice): New type.
+ 	(escape_entry): New type.
+ 	(escape_summary): New type.
+ 	(escape_summaries_t): New type.
+ 	(escape_summaries): New static variable.
+ 	(eaf_flags_useful_p): New function.
+ 	(modref_summary::useful_p): Add new check_flags
+ 	attribute; check eaf_flags for usefulness.
+ 	(modref_summary_lto): Add arg_flags.
+ 	(modref_summary_lto::useful_p): Add new check_flags
+ 	attribute; check eaf_flags for usefulness.
+ 	(dump_modref_edge_summaries): New function.
+ 	(remove_modref_edge_summaries): New function.
+ 	(ignore_retval_p): New predicate.
+ 	(ignore_stores_p): Also ignore for const.
+ 	(remove_summary): Call remove_modref_edge_summaries.
+ 	(modref_lattice::init): New member function.
+ 	(modref_lattice::release): New member unction.
+ 	(modref_lattice::dump): New member function.
+ 	(modref_lattice::add_escape_point): New member function.
+ 	(modref_lattice::merge): Two new member functions.
+ 	(modref_lattice::merge_deref): New member functions.
+ 	(modref_lattice::merge_direct_load): New member function.
+ 	(modref_lattice::merge_direct_store): New member function.
+ 	(call_lhs_flags): Rename to ...
+ 	(merge_call_lhs_flags): ... this one; reimplement using
+ 	modreflattice.
+ 	(analyze_ssa_name_flags): Replace KNOWN_FLAGS param by LATTICE;
+ 	add IPA parametr; use modref_lattice.
+ 	(analyze_parms): New parameter IPA and SUMMARY_LTO; update for
+ 	modref_lattice; initialize escape_summary.
+ 	(analyze_function): Allocate escape_summaries; update uses of useful_p.
+ 	(modref_write_escape_summary): New function.
+ 	(modref_read_escape_summary): New function.
+ 	(modref_write): Write escape summary.
+ 	(read_section): Read escape summary.
+ 	(modref_read): Initialie escape_summaries.
+ 	(remap_arg_flags): New function.
+ 	(update_signature): Use it.
+ 	(escape_map): New structure.
+ 	(update_escape_summary_1, update_escape_summary): New functions.
+ 	(ipa_merge_modref_summary_after_inlining): Merge escape summaries.
+ 	(propagate_unknown_call): Do not remove useless summaries.
+ 	(remove_useless_summaries): Remove them here.
+ 	(modref_propagate_in_scc): Update; do not dump scc.
+ 	(modref_propagate_dump_scc): New function.
+ 	(modref_merge_call_site_flags): New function.
+ 	(modref_propagate_flags_in_scc): New function.
+ 	(pass_ipa_modref::execute): Use modref_propagate_flags_in_scc
+ 	and modref_propagate_dump_scc; delete escape_summaries.
+ 	(ipa_modref_c_finalize):  Remove escape_summaries.
+ 	* ipa-modref.h (modref_summary): Update prototype of useful_p.
+ 	* params.opt (param=modref-max-escape-points): New param.
+ 	* doc/invoke.texi (modref-max-escape-points): Document.
+ 
+ 2020-11-16  Jan Hubicka  <jh@suse.cz>
+ 
+ 	PR middle-end/97840
+ 	* ipa-modref.c (analyze_ssa_name_flags): Skip clobbers if inlining
+ 	is done.
+ 	* tree-ssa-uninit.c (maybe_warn_pass_by_reference): Make stmt gcall;
+ 	skip const calls and unused arguments.
+ 	(warn_uninitialized_vars): Update prototype.
+ 
+ 2020-11-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (vect_gather_slp_loads): Declare.
+ 	* tree-vect-loop.c (vect_analyze_loop_2): Call
+ 	vect_gather_slp_loads.
+ 	* tree-vect-slp.c (vect_build_slp_instance): Do not gather
+ 	SLP loads here.
+ 	(vect_gather_slp_loads): Remove wrapper, new function.
+ 	(vect_slp_analyze_bb_1): Call it.
+ 
+ 2020-11-16   Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-im.c (analyze_memory_references): Add
+ 	store_motion parameter and elide unnecessary work.
+ 	(tree_ssa_lim_initialize): Likewise.
+ 	(loop_invariant_motion_in_fun): Pass down store_motion.
+ 
+ 2020-11-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* params.opt: All modref parameters miss Optimization and Param
+ 	keyword as seen in testsuite failure.
+ 
+ 2020-11-16  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* params.opt (-param=modref-max-depth=): Add missing full stop.
+ 
+ 2020-11-16  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* common.opt (fprofile-info-section): New.
+ 	* coverage.c (build_gcov_info_var_registration): New.
+ 	(coverage_obj_init): Evaluate profile_info_section and use
+ 	build_gcov_info_var_registration().
+ 	* doc/invoke.texi (fprofile-info-section): Document.
+ 	* opts.c (common_handle_option): Process fprofile-info-section
+ 	option.
+ 
+ 2020-11-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97838
+ 	* tree-vect-slp.c (vect_slp_build_vertices): Properly handle
+ 	not backwards reachable cycles.
+ 	(vect_optimize_slp): Check a node is leaf before marking it
+ 	visited.
+ 
+ 2020-11-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/97736
+ 	* tree-switch-conversion.c (switch_decision_tree::analyze_switch_statement):
+ 	Prefer bit tests.
+ 
+ 2020-11-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97835
+ 	* tree-vect-loop.c (vectorizable_induction): Convert step
+ 	scalars rather than step vector.
+ 
+ 2020-11-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97830
+ 	* tree-ssa-sccvn.c (vn_reference_eq): Check for incomplete
+ 	types before comparing TYPE_SIZE.
+ 
+ 2020-11-16  Cui,Lili  <lili.cui@intel.com>
+ 
+ 	* config/i386/i386.h: Add PREFETCHW to march=broadwell.
+ 	* doc/invoke.texi: Put PREFETCHW back to relation arch.
+ 
+ 2020-11-15  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.c (msp430_output_labelref): Don't process mspabi
+ 	hwmult library function names into GCC-style names.
+ 
+ 2020-11-15  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.c (msp430_use_16bit_hwmult): New.
+ 	(use_32bit_hwmult): Rename to..
+ 	(msp430_use_32bit_hwmult): ..this.
+ 	(msp430_muldiv_costs): Use msp430_use_16bit_hwmult and
+ 	msp430_use_32bit_hwmult.
+ 	(msp430_expand_helper): Use msp430_use_16bit_hwmult and
+ 	msp430_use_32bit_hwmult.
+ 	(msp430_output_labelref): Use msp430_use_32bit_hwmult.
+ 
+ 2020-11-15  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.c (vax_rtx_costs): Use `rtx_code' rather than
+ 	`int' for `code'.
+ 
+ 2020-11-15  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.c (vax_output_int_add) <E_DImode>: Fix a typo
+ 	in NO_EXTERNAL_INDIRECT_ADDRESS.
+ 
+ 2020-11-15  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* config/vax/vax.c (vax_output_int_add) <E_SImode>: Also check
+ 	`operands[2]' for being symbolic with PIC rather than checking
+ 	`operands[1]' twice.
+ 
+ 2020-11-15  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* vr-values.c (vr_values::extract_range_builtin): Rename to...
+ 	(vr_values::extract_range_from_ubsan_builtin): ...this.
+ 	Remove everything but UBSAN code.
+ 	(vr_values::extract_range_basic): Call ranger version for
+ 	everything except UBSAN built-ins.
+ 	* vr-values.h (class vr_values): Rename extract_range_builtin to
+ 	extract_range_from_ubsan_builtin.
+ 
+ 2020-11-15  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	* lra.c (lra_process_new_insns): Don't put reload insns in the
+ 	last empty BB.
+ 
+ 2020-11-15  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (analyze_ssa_name_flags): Make return to clear
+ 	EAF_UNUSED flag.
+ 
+ 2020-11-14  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* gimple.c: Include ipa-modref-tree.h and ipa-modref.h.
+ 	(gimple_call_arg_flags): Use modref to determine flags.
+ 	* ipa-modref.c: Include gimple-ssa.h, tree-phinodes.h,
+ 	tree-ssa-operands.h, stringpool.h and tree-ssanames.h.
+ 	(analyze_ssa_name_flags): Declare.
+ 	(modref_summary::useful_p): Summary is also useful if arg flags are
+ 	known.
+ 	(dump_eaf_flags): New function.
+ 	(modref_summary::dump): Use it.
+ 	(get_modref_function_summary): Be read for current_function_decl
+ 	being NULL.
+ 	(memory_access_to): New function.
+ 	(deref_flags): New function.
+ 	(call_lhs_flags): New function.
+ 	(analyze_parms): New function.
+ 	(analyze_function): Use it.
+ 	* ipa-modref.h (struct modref_summary): Add arg_flags.
+ 	* doc/invoke.texi (ipa-modref-max-depth): Document.
+ 	* params.opt (ipa-modref-max-depth): New param.
+ 
+ 2020-11-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/97599
+ 	* dwarf2out.c (gen_subprogram_die): Call
+ 	gen_unspecified_parameters_die even if not early dwarf, but only
+ 	if subr_die is a newly created DIE.
+ 
+ 2020-11-14  Monk Chiang  <monk.chiang@sifive.com>
+ 
+ 	PR target/97682
+ 	* config/riscv/riscv.h (RISCV_PROLOGUE_TEMP_REGNUM): Change register
+ 	to t0.
+ 	(RISCV_CALL_ADDRESS_TEMP_REGNUM): New Marco, define t1 register.
+ 	(RISCV_CALL_ADDRESS_TEMP): Use it for call instructions.
+ 	* config/riscv/riscv.c (riscv_legitimize_call_address): Use
+ 	RISCV_CALL_ADDRESS_TEMP.
+ 	(riscv_compute_frame_info): Change temporary register to t0 form t1.
+ 	(riscv_trampoline_init): Adjust comment.
+ 
+ 2020-11-14  Jim Wilson  <jimw@sifive.com>
+ 	    cooper.joshua  <cooper.joshua@linux.alibaba.com>
+ 
+ 	* config/riscv/riscv.c (riscv_asan_shadow_offset): New.
+ 	(TARGET_ASAN_SHADOW_OFFSET): New.
+ 	* doc/tm.texi: Regenerated.
+ 	* target.def (asan_shadow_offset); Mention that it can return zero.
+ 	* toplev.c (process_options): Check for and handle zero return from
+ 	targetm.asan_shadow_offset call.
+ 
+ 2020-11-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimplify.c (gimplify_omp_for): Add OMP_CLAUSE_ALLOCATE_ALLOCATOR
+ 	decls as firstprivate on task clauses even when allocate clause
+ 	decl is not lastprivate.
+ 	* omp-low.c (install_var_field): Don't dereference omp_is_reference
+ 	types if mask is 33 rather than 1.
+ 	(scan_sharing_clauses): Populate allocate_map even for task
+ 	constructs.  For now remove it back for variables mentioned in
+ 	reduction and in_reduction clauses on task/taskloop constructs
+ 	or on VLA task firstprivates.  For firstprivate on task construct,
+ 	install the var field into field_map with by_ref and 33 instead
+ 	of false and 1 if mentioned in allocate clause.
+ 	(lower_private_allocate): Set TREE_THIS_NOTRAP on the created
+ 	MEM_REF.
+ 	(lower_rec_input_clauses): Handle allocate for task firstprivatized
+ 	non-VLA variables.
+ 	(create_task_copyfn): Likewise.
+ 
+ 2020-11-13  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* tree-ssa-alias.c (ao_ref_base_alias_ptr_type): Remove accidental
+ 	commit.
+ 	(ao_ref_alias_ptr_type): Remove accidental commit.
+ 
+ 2020-11-13  Kwok Cheung Yeung  <kcy@codesourcery.com>
+ 
+ 	* omp-oacc-kernels-decompose.cc (maybe_build_inner_data_region):
+ 	Use langhook instead of accessing language-specific decl
+ 	information.
+ 
+ 2020-11-13  Gergö Barany  <gergo@codesourcery.com>
+ 	    Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* omp-oacc-kernels-decompose.cc: New.
+ 	* Makefile.in (OBJS): Add it.
+ 	* passes.def: Instantiate it.
+ 	* tree-pass.h (make_pass_omp_oacc_kernels_decompose): Declare.
+ 	* flag-types.h (enum openacc_kernels): Add.
+ 	* doc/invoke.texi (-fopenacc-kernels): Document.
+ 	* gimple.h (enum gf_mask): Add
+ 	'GF_OMP_TARGET_KIND_OACC_PARALLEL_KERNELS_PARALLELIZED',
+ 	'GF_OMP_TARGET_KIND_OACC_PARALLEL_KERNELS_GANG_SINGLE',
+ 	'GF_OMP_TARGET_KIND_OACC_DATA_KERNELS'.
+ 	(is_gimple_omp_oacc, is_gimple_omp_offloaded): Handle these.
+ 	* gimple-pretty-print.c (dump_gimple_omp_target): Likewise.
+ 	* omp-expand.c (expand_omp_target, build_omp_regions_1)
+ 	(omp_make_gimple_edges): Likewise.
+ 	* omp-low.c (scan_sharing_clauses, scan_omp_for)
+ 	(check_omp_nesting_restrictions, lower_oacc_reductions)
+ 	(lower_oacc_head_mark, lower_omp_target): Likewise.
+ 	* omp-offload.c (execute_oacc_device_lower): Likewise.
+ 
+ 2020-11-13  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* omp-low.c (scan_sharing_clauses, scan_omp_for)
+ 	(lower_oacc_reductions, lower_omp_target): More explicit checking
+ 	of which OMP constructs we're expecting.
+ 
+ 2020-11-13  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* omp-expand.c (expand_omp_target): Attach an attribute to all
+ 	outlined OpenACC compute regions.
+ 	* omp-offload.c (execute_oacc_device_lower): Adjust.
+ 
+ 2020-11-13  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (modref_summaries::insert,
+ 	modref_summaries_lto::insert): Remove summary if ipa-modref is disabled.
+ 
+ 2020-11-13  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* attr-fnspec.h (attr_fnspec::arg_readonly_p): Accept '1'...'9'.
+ 
+ 2020-11-13  Peter Jones  <pjones@redhat.com>
+ 
+ 	* doc/extend.texi: Clarify the documentation for the ms_abi
+ 	function attribute.
+ 
+ 2020-11-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range.h (gimple_range_handler): Cast to gimple stmt
+ 	kinds before asking for code and type.
+ 	* gimple.h (gimple_expr_code): Call gassign and gcond routines
+ 	to get their expr_code.
+ 
+ 2020-11-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	* dwarf2out.c (gen_enumeration_type_die): Call
+ 	equate_decl_number_to_die for enumerators.
+ 	(gen_member_die): Don't move enumerators to their
+ 	enclosing class.
+ 	(dwarf2out_imported_module_or_decl_1): Allow importing
+ 	individual enumerators.
+ 	(force_decl_die): Handle CONST_DECL.
+ 
+ 2020-11-13  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	* cfgexpand.c (expand_asm_stmt): Output asm goto with outputs too.
+ 	Place insns after asm goto on edges.
+ 	* doc/extend.texi: Reflect the changes in asm goto documentation.
+ 	* gimple.c (gimple_build_asm_1): Remove an assert checking output
+ 	absence for asm goto.
+ 	* gimple.h (gimple_asm_label_op, gimple_asm_set_label_op): Take
+ 	possible asm goto outputs into account.
+ 	* ira.c (ira): Remove critical edges for potential asm goto output
+ 	reloads.
+ 	(ira_nullify_asm_goto): New function.
+ 	* ira.h (ira_nullify_asm_goto): New prototype.
+ 	* lra-assigns.c (lra_split_hard_reg_for): Use ira_nullify_asm_goto.
+ 	Check that splitting is done inside a basic block.
+ 	* lra-constraints.c (curr_insn_transform): Permit output reloads
+ 	for any jump insn.
+ 	* lra-spills.c (lra_final_code_change): Remove USEs added in ira
+ 	for asm gotos.
+ 	* lra.c (lra_process_new_insns): Place output reload insns after
+ 	jumps in the beginning of destination BBs.
+ 	* reload.c (find_reloads): Report error for asm gotos with
+ 	outputs.  Modify them to keep CFG consistency to avoid crashes.
+ 	* tree-into-ssa.c (rewrite_stmt): Don't put debug stmt after asm
+ 	goto.
+ 
+ 2020-11-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-low.c (scan_sharing_clauses): For now remove for reduction
+ 	clauses with inscan or task modifiers decl from allocate_map.
+ 	(lower_private_allocate): Handle TYPE_P (new_var).
+ 	(lower_rec_input_clauses): Handle allocate clause for C/C++ array
+ 	reductions.
+ 
+ 2020-11-13  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/97816
+ 	* ipa-cp.c (value_topo_info<valtype>::propagate_effects): Use
+ 	safe_add instead of a simple addition.
+ 
+ 2020-11-13  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.c (TARGET_INSN_COST): Define.
+ 	(msp430_insn_cost): New function.
+ 	* config/msp430/msp430.h (BRANCH_COST): Define.
+ 	(LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
+ 
+ 2020-11-13  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430-protos.h (msp430x_extendhisi): Return int
+ 	instead of char *.
+ 	(msp430_output_asm_shift_insns): Likewise.
+ 	Add new return_length argument.
+ 	(msp430x_insn_required): Add prototype.
+ 	* config/msp430/msp430.c (msp430_output_asm_shift_insns): Return the
+ 	total length, in bytes, of the emitted instructions.
+ 	(msp430x_insn_required): New function.
+ 	(msp430x_extendhisi): Return the total length, in bytes, of the
+ 	emitted instructions.
+ 	* config/msp430/msp430.h (ADJUST_INSN_LENGTH): Define.
+ 	* config/msp430/msp430.md: New define_attr "type".
+ 	New define_attr "extension".
+ 	New define_attr "length_multiplier".
+ 	New define_attr "extra_length".
+ 	Rewrite define_attr "length".
+ 	Set type, extension, length, length_multiplier or extra_length insn
+ 	attributes on all insns, as appropriate.
+ 	(andneghi3): Rewrite using constraints instead of C code to decide
+ 	output insns.
+ 	* config/msp430/predicates.md (msp430_cheap_operand): New predicate.
+ 	(msp430_high_memory_operand): New predicate.
+ 
+ 2020-11-13  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.c (use_helper_for_const_shift): Add forward
+ 	declaration.
+ 	Remove unused argument.
+ 	(struct msp430_multlib_costs): New struct.
+ 	(msp430_is_mem_indirect): New function.
+ 	(msp430_costs): Likewise.
+ 	(msp430_shift_costs): Likewise.
+ 	(msp430_muldiv_costs): Likewise.
+ 	(msp430_get_inner_dest_code): Likewise.
+ 	(msp430_single_op_cost): Likewise.
+ 	(msp430_rtx_costs): Rewrite from scratch.
+ 	(msp430_expand_shift): Adjust use_helper_for_const_shift call.
+ 
+ 2020-11-13  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.c (struct single_op_cost): New struct.
+ 	(struct double_op_cost): Likewise.
+ 	(TARGET_REGISTER_MOVE_COST): Don't define but add comment.
+ 	(TARGET_MEMORY_MOVE_COST): Define to...
+ 	(msp430_memory_move_cost): New function.
+ 	(BRANCH_COST): Don't define but add comment.
+ 
+ 2020-11-13  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-icf-gimple.c: Include tree-ssa-alias-compare.h.
+ 	(find_checker::func_checker): Initialize m_tbaa.
+ 	(func_checker::hash_operand): Use hash_ao_ref for memory accesses.
+ 	(func_checker::compare_operand): Use compare_ao_refs for memory
+ 	accesses.
+ 	(func_checker::cmopare_gimple_assign): Do not check LHS types
+ 	of memory stores.
+ 	* ipa-icf-gimple.h (func_checker): Derive from ao_compare;
+ 	add m_tbaa.
+ 	* ipa-icf.c: Include tree-ssa-alias-compare.h.
+ 	(sem_function::equals_private): Update call of
+ 	func_checker::func_checker.
+ 	* ipa-utils.h (lto_streaming_expected_p): New inline
+ 	predicate.
+ 	* tree-ssa-alias-compare.h: New file.
+ 	* tree-ssa-alias.c: Include tree-ssa-alias-compare.h
+ 	and bultins.h
+ 	(view_converted_memref_p): New function.
+ 	(types_equal_for_same_type_for_tbaa_p): New function.
+ 	(ao_ref_alias_ptr_type, ao_ref_base_alias_ptr_type): New functions.
+ 	(ao_compare::compare_ao_refs): New member function.
+ 	(ao_compare::hash_ao_ref): New function
+ 	* tree-ssa-alias.h (ao_ref_base_alias_ptr_type,
+ 	ao_ref_alias_ptr_type): Declare.
+ 
+ 2020-11-13  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-icf-gimple.c: Include gimple-walk.h.
+ 	(func_checker::compare_ssa_name): Update call of compare_operand.
+ 	(func_checker::hash_operand): Fix comment and add variant taking
+ 	operand_access_type parameter.
+ 	(func_checker::compare_operand): Add operand_access_type parameter.
+ 	(func_checker::compare_asm_inputs_outputs): Add
+ 	operand_access_type_map parameter; update use of
+ 	func_checker::compare_operand.
+ 	(func_checker::compare_gimple_call): Update use of
+ 	func_checker::compare_operand.
+ 	(func_checker::compare_gimple_assign): Likewise.
+ 	(func_checker::compare_gimple_cond): Likewise.
+ 	(func_checker::compare_gimple_switch): Likewise.
+ 	(func_checker::compare_gimple_return): Likewise.
+ 	(func_checker::compare_gimple_goto): Likewise.
+ 	(func_checker::compare_gimple_asm): Likewise.
+ 	(visit_load_store): New static functio.
+ 	(func_checker::classify_operands): New member function.
+ 	(func_checker::get_operand_access_type): New member function.
+ 	* ipa-icf-gimple.h (func_checker::operand_access_type): New enum
+ 	(func_checker::operand_access_type_map): New typedef.
+ 	(func_checker::compare_operand): Update prototype.
+ 	(func_checker::compare_asm_inputs_outputs): Likewise.
+ 	(func_checker::cleassify_operands): Declare.
+ 	(func_checker::get_operand_access_type): Declare.
+ 	(func_checker::hash_operand): New variant with operand_access_type.
+ 	* ipa-icf.c (sem_function::hash_stmt): Update uses of hash_operand.
+ 	(sem_function::compare_phi_node): Update use of compare_operand.
+ 
+ 2020-11-13  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/aarch-common.c (aarch_accumulator_forwarding): Use
+ 	RTL predicates where possible.
+ 	* config/arm/arm.c (legitimate_pic_operand_p)
+ 	(legitimize_pic_address, arm_is_segment_info_known)
+ 	(can_avoid_literal_pool_for_label_p)
+ 	(thumb1_legitimate_address_p, arm_legitimize_address)
+ 	(arm_tls_referenced_p, thumb_legitimate_constant_p)
+ 	(REG_OR_SUBREG_REG, thumb1_rtx_costs, thumb1_size_rtx_costs)
+ 	(arm_adjust_cost, arm_coproc_mem_operand_wb)
+ 	(neon_vector_mem_operand, neon_struct_mem_operand)
+ 	(symbol_mentioned_p, label_mentioned_p, )
+ 	(load_multiple_sequence, store_multiple_sequence)
+ 	(arm_select_cc_mode, arm_reload_in_hi, arm_reload_out_hi)
+ 	(mem_ok_for_ldrd_strd, arm_emit_call_insn, output_move_neon)
+ 	(arm_attr_length_move_neon, arm_assemble_integer)
+ 	(arm_emit_coreregs_64bit_shift, arm_valid_symbolic_address_p)
+ 	(extract_base_offset_in_addr, fusion_load_store): Likewise.
+ 
+ 2020-11-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range.cc: (gimple_ranger::range_of_range_op): Check for
+ 	ADDR_EXPR and call range_of_address.
+ 	(gimple_ranger::range_of_address): Rename from
+ 	range_of_non_trivial_assignment and match vrp_stmt_computes_nonzero.
+ 	* gimple-range.h: (range_of_address): Renamed.
+ 	* range-op.cc: (pointer_table): Add INTEGER_CST handler.
+ 
+ 2020-11-13  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/94406
+ 	* tree-ssa-loop-im.c (tree_ssa_lim): Renamed to
+ 	loop_invariant_motion_in_fun, added a parameter to control store
+ 	motion.
+ 	(pass_lim::execute): Adjust call to tree_ssa_lim, now
+ 	loop_invariant_motion_in_fun.
+ 	* tree-ssa-loop-manip.h (loop_invariant_motion_in_fun): Declare.
+ 	* gimple-loop-interchange.cc (pass_linterchange::execute): Call
+ 	loop_invariant_motion_in_fun if any interchange has been done.
+ 
+ 2020-11-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-sccvn.c (vn_phi_compute_hash): Always hash the
+ 	number of predecessors.  Hash the block number also for
+ 	loop header PHIs.
+ 	(expressions_equal_p): Short-cut SSA name compares, remove
+ 	test for NULL operands.
+ 	(vn_phi_eq): Cache number of predecessors, change inlined
+ 	test from expressions_equal_p.
+ 
+ 2020-11-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* doc/extend.texi: Don't try to line-wrap an @r command.
+ 
+ 2020-11-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97812
+ 	* tree-vrp.c (register_edge_assert_for_2): Extend the range
+ 	according to its sign before seeing whether it fits.
+ 
+ 2020-11-13  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (tls_symbolic_operand_type)
+ 	(aarch64_load_symref_appropriately, aarch64_mov128_immediate)
+ 	(aarch64_expand_mov_immediate)
+ 	(aarch64_maybe_expand_sve_subreg_move)
+ 	(aarch64_tls_referenced_p, aarch64_cannot_force_const_mem)
+ 	(aarch64_base_register_rtx_p, aarch64_classify_index)
+ 	(aarch64_classify_address, aarch64_symbolic_address_p)
+ 	(aarch64_reinterpret_float_as_int, aarch64_float_const_rtx_p)
+ 	(aarch64_can_const_movi_rtx_p, aarch64_select_cc_mode)
+ 	(aarch64_print_operand, aarch64_label_mentioned_p)
+ 	(aarch64_secondary_reload, aarch64_preferred_reload_class)
+ 	(aarch64_address_cost, aarch64_tls_symbol_p)
+ 	(aarch64_classify_symbol, aarch64_legitimate_pic_operand_p)
+ 	(aarch64_legitimate_constant_p)
+ 	(aarch64_sve_float_arith_immediate_p)
+ 	(aarch64_sve_float_mul_immediate_p, aarch64_mov_operand_p)
+ 	(fusion_load_store): Use RTL operands where possible.
+ 
+ 2020-11-13  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_expand_setmem): New
+ 	declaration.
+ 	* config/aarch64/aarch64.c (aarch64_gen_store_pair): Add case for
+ 	E_V16QImode.
+ 	(aarch64_set_one_block_and_progress_pointer): New helper for
+ 	aarch64_expand_setmem.
+ 	(aarch64_expand_setmem): Define the expansion for memset.
+ 	* config/aarch64/aarch64.h (CLEAR_RATIO): Tweak to favor
+ 	aarch64_expand_setmem when allowed and profitable.
+ 	(SET_RATIO): Likewise.
+ 	* config/aarch64/aarch64.md: Define pattern for setmemdi.
+ 
+ 2020-11-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR objc/90707
+ 	* doc/extend.texi: Document the objc_nullability attribute.
+ 
+ 2020-11-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR objc/77404
+ 	* doc/extend.texi: Document the objc_root_class attribute.
+ 	* doc/invoke.texi: Document -Wobjc-root-class.
+ 
+ 2020-11-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* cfgexpand.c (gimple_assign_rhs_to_tree): Use
+ 	gimple_assign_rhs_class.
+ 	(expand_gimple_stmt_1): Likewise.
+ 	* gimplify-me.c (gimple_regimplify_operands): Use
+ 	gimple_assign_single_p.
+ 	* ipa-icf-gimple.c (func_checker::compare_gimple_assign):
+ 	Remove redundant compare.
+ 	(func_checker::compare_gimple_cond): Use gimple_cond_code.
+ 	* tree-ssa-tail-merge.c (gimple_equal_p): Likewise.
+ 	* predict.c (predict_loops): Use gimple_assign_rhs_code.
+ 
+ 2020-11-13  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-vrp.c (class vrp_folder): Make visit_stmt, visit_phi,
+ 	and m_vr_values private.
+ 	(vrp_folder::vrp_evaluate_conditional): Remove.
+ 	(vrp_folder::vrp_simplify_stmt_using_ranges): Remove.
+ 	(vrp_folder::fold_predicate_in): Inline
+ 	vrp_evaluate_conditional and vrp_simplify_stmt_using_ranges.
+ 	(vrp_folder::fold_stmt): Same.
+ 
+ 2020-11-13  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-vrp.c (class vrp_prop): Rename vr_values to m_vr_values.
+ 	(vrp_prop::vrp_prop): New.
+ 	(vrp_prop::initialize): Rename vr_values to m_vr_values.
+ 	(vrp_prop::visit_stmt): Same.
+ 	(vrp_prop::visit_phi): Same.
+ 	(vrp_prop::finalize): Same.
+ 	(execute_vrp): Instantiate vrp_vr_values and pass it to folder
+ 	and propagator.
+ 
+ 2020-11-13  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-vrp.c (class vrp_prop): Move entire class...
+ 	(class vrp_folder): ...before here.
+ 
+ 2020-11-13  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-vrp.c (identify_jump_threads): Refactor to..
+ 	(vrp_jump_threader::vrp_jump_threader): ...here
+ 	(vrp_jump_threader::~vrp_jump_threader): ...and here.
+ 	(vrp_jump_threader::after_dom_children): Rename vr_values to
+ 	m_vr_values.
+ 	(execute_vrp): Use vrp_jump_threader.
+ 
+ 2020-11-13  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-vrp.c (struct assert_locus): Move.
+ 	(class vrp_insert): Rename to vrp_asserts.
+ 	(vrp_insert::build_assert_expr_for): Move to vrp_asserts.
+ 	(fp_predicate): Same.
+ 	(vrp_insert::dump): Same.
+ 	(vrp_insert::register_new_assert_for): Same.
+ 	(extract_code_and_val_from_cond_with_ops): Move.
+ 	(vrp_insert::finish_register_edge_assert_for): Move to vrp_asserts.
+ 	(maybe_set_nonzero_bits): Move.
+ 	(vrp_insert::find_conditional_asserts): Move to vrp_asserts.
+ 	(stmt_interesting_for_vrp): Move.
+ 	(struct case_info): Move.
+ 	(compare_case_labels): Move.
+ 	(lhs_of_dominating_assert): Move.
+ 	(find_case_label_index): Move.
+ 	(find_case_label_range): Move.
+ 	(class vrp_asserts): New.
+ 	(vrp_asserts::build_assert_expr_for): Rename from vrp_insert.
+ 	(vrp_asserts::dump): Same.
+ 	(vrp_asserts::register_new_assert_for): Same.
+ 	(vrp_asserts::finish_register_edge_assert_for): Same.
+ 	(vrp_asserts::find_conditional_asserts): Same.
+ 	(vrp_asserts::compare_case_labels): Same.
+ 	(vrp_asserts::find_switch_asserts): Same.
+ 	(vrp_asserts::find_assert_locations_in_bb): Same.
+ 	(vrp_asserts::find_assert_locations): Same.
+ 	(vrp_asserts::process_assert_insertions_for): Same.
+ 	(vrp_asserts::compare_assert_loc): Same.
+ 	(vrp_asserts::process_assert_insertions): Same.
+ 	(vrp_asserts::insert_range_assertions): Same.
+ 	(vrp_asserts::all_imm_uses_in_stmt_or_feed_cond): Same.
+ 	(vrp_asserts::remove_range_assertions): Same.
+ 	(class vrp_prop): Move.
+ 	(all_imm_uses_in_stmt_or_feed_cond): Move.
+ 	(vrp_prop::vrp_initialize): Move.
+ 	(class vrp_folder): Move.
+ 	(vrp_folder::fold_predicate_in): Move.
+ 	(vrp_folder::fold_stmt): Move.
+ 	(vrp_prop::initialize): Move.
+ 	(vrp_prop::visit_stmt): Move.
+ 	(enum ssa_prop_result): Move.
+ 	(vrp_prop::visit_phi): Move.
+ 	(vrp_prop::finalize): Move.
+ 	(class vrp_dom_walker): Rename to...
+ 	(class vrp_jump_threader): ...this.
+ 	(vrp_jump_threader::before_dom_children): Rename from
+ 	vrp_dom_walker.
+ 	(simplify_stmt_for_jump_threading): Rename to...
+ 	(vrp_jump_threader::simplify_stmt): ...here.
+ 	(vrp_jump_threader::after_dom_children): Same.
+ 	(identify_jump_threads): Move.
+ 	(vrp_prop::vrp_finalize): Move array bounds setup code to...
+ 	(execute_vrp): ...here.
+ 
+ 2020-11-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range.h (gimple_range_handler): Use gimple_assign and
+ 	gimple_cond routines to get type and code.
+ 	* range-op.cc (range_op_handler): Check for integral types.
+ 
+ 2020-11-12  Nelson Chu  <nelson.chu@sifive.com>
+ 
+ 	* configure: Regenerated.
+ 	* configure.ac: If ifunc was supported in the binutils for
+ 	linux toolchain, then set enable_gnu_indirect_function to yes.
+ 
+ 2020-11-12  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* doc/cpp.texi (__has_attribute): Document when scopes are allowed
+ 	for C.
+ 	(__has_c_attribute): New.
+ 
+ 2020-11-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* builtin-types.def (BT_FN_PTR_SIZE_SIZE_PTRMODE): New function type.
+ 	* omp-builtins.def (BUILT_IN_GOACC_DECLARE): Move earlier.
+ 	(BUILT_IN_GOMP_ALLOC, BUILT_IN_GOMP_FREE): New builtins.
+ 	* gimplify.c (gimplify_scan_omp_clauses): Force allocator into a
+ 	decl if it is not NULL, INTEGER_CST or decl.
+ 	(gimplify_adjust_omp_clauses): Clear GOVD_EXPLICIT on explicit clauses
+ 	which are being removed.  Remove allocate clauses for variables not seen
+ 	if they are private, firstprivate or linear too.  Call
+ 	omp_notice_variable on the allocator otherwise.
+ 	(gimplify_omp_for): Handle iterator vars mentioned in allocate clauses
+ 	similarly to non-is_gimple_reg iterators.
+ 	* omp-low.c (struct omp_context): Add allocate_map field.
+ 	(delete_omp_context): Delete it.
+ 	(scan_sharing_clauses): Fill it from allocate clauses.  Remove it
+ 	if mentioned also in shared clause.
+ 	(lower_private_allocate): New function.
+ 	(lower_rec_input_clauses): Handle allocate clause for privatized
+ 	variables, except for task/taskloop, C/C++ array reductions for now
+ 	and task/inscan variables.
+ 	(lower_send_shared_vars): Don't consider variables in allocate_map
+ 	as shared.
+ 	* omp-expand.c (expand_omp_for_generic, expand_omp_for_static_nochunk,
+ 	expand_omp_for_static_chunk): Use expand_omp_build_assign instead of
+ 	gimple_build_assign + gsi_insert_after.
+ 	* builtins.c (builtin_fnspec): Handle BUILTIN_GOMP_ALLOC and
+ 	BUILTIN_GOMP_FREE.
+ 	* tree-ssa-ccp.c (evaluate_stmt): Handle BUILTIN_GOMP_ALLOC.
+ 	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Handle
+ 	BUILTIN_GOMP_ALLOC.
+ 	(mark_all_reaching_defs_necessary_1): Handle BUILTIN_GOMP_ALLOC
+ 	and BUILTIN_GOMP_FREE.
+ 	(propagate_necessity): Likewise.
+ 
+ 2020-11-12  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* cgraphclones.c (cgraph_node::materialize_clone): Check that clone
+ 	info is not NULL before attempting to dump it.
+ 
+ 2020-11-12  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-cp.c (class ipcp_value_base): Change the type of
+ 	local_time_benefit and prop_time_benefit to sreal.  Adjust the
+ 	constructor initializer.
+ 	(ipcp_lattice::print): Dump sreals.
+ 	(struct caller_statistics): Change the type of freq_sum to sreal.
+ 	(gather_caller_stats): Work with sreal freq_sum.
+ 	(incorporate_penalties): Work with sreal evaluation.
+ 	(good_cloning_opportunity_p): Adjusted for sreal sreal time_benefit
+ 	and freq_sum.  Bail out if size_cost is INT_MAX.
+ 	(perform_estimation_of_a_value): Work with sreal time_benefit.  Avoid
+ 	unnecessary capping.
+ 	(estimate_local_effects): Pass sreal time benefit to
+ 	good_cloning_opportunity_p without capping it.  Adjust dumping.
+ 	(safe_add): If there can be overflow, return INT_MAX.
+ 	(propagate_effects): Work with sreal times.
+ 	(get_info_about_necessary_edges): Work with sreal frequencies.
+ 	(decide_about_value): Likewise and with sreal time benefits.
+ 
+ 2020-11-12  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* system.h (WARN_UNUSED_RESULT): Define for GCC >= 3.4.
+ 	* tree.h (maybe_wrap_with_location): Add WARN_UNUSED_RESULT.
+ 
+ 2020-11-12  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* fold-const.c (operand_compare::operand_equal_p): Compare field
+ 	offsets in operand_equal_p and OEP_ADDRESS_OF.
+ 	(operand_compare::hash_operand): Update.
+ 
+ 2020-11-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	* bitmap.c (bitmap_list_view): Restore head->current.
+ 	* tree-ssa-pre.c (pre_expr_DFS): Elide expr_visited bitmap.
+ 	Special-case value expression bitmaps with one element.
+ 	(bitmap_find_leader): Likewise.
+ 	(sorted_array_from_bitmap_set): Elide expr_visited bitmap.
+ 
+ 2020-11-12  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* attr-fnspec.h: Update topleve comment.
+ 	(attr_fnspec::arg_direct_p): Accept 1...9.
+ 	(attr_fnspec::arg_maybe_written_p): Reject 1...9.
+ 	(attr_fnspec::arg_copied_to_arg_p): New member function.
+ 	* builtins.c (builtin_fnspec): Update fnspec of block copy.
+ 	* tree-ssa-alias.c (attr_fnspec::verify): Update.
+ 
+ 2020-11-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.c (bitmap_value_replace_in_set): Return
+ 	whether we have changed anything.
+ 	(do_pre_regular_insertion): Get topologically sorted array
+ 	of expressions from caller.
+ 	(do_pre_partial_partial_insertion): Likewise.
+ 	(insert): Compute topologically sorted arrays of expressions
+ 	here and locally iterate actual insertion.  Iterate only
+ 	when AVAIL_OUT of an already visited block source changed.
+ 
+ 2020-11-12  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR target/97730
+ 	* config/aarch64/aarch64-sve2.md (@aarch64_sve2_bcax<mode>):
+ 	Change to define_expand, add missing (trivially-predicated) not
+ 	rtx to fix wrong code bug.
+ 	(*aarch64_sve2_bcax<mode>): New.
+ 
+ 2020-11-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97806
+ 	* tree-ssa-pre.c (pre_expr_DFS): New overload for visiting
+ 	values, visiting all leaders for a value.  Use a bitmap
+ 	for visited values.
+ 	(sorted_array_from_bitmap_set): Walk over values and adjust.
+ 
+ 2020-11-12  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	PR target/97326
+ 	* config/s390/vector.md: Support vector floating point modes in
+ 	vec_cmp.
+ 
+ 2020-11-12  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/vector.md: Rename tointvec to TOINTVEC.
+ 	* config/s390/vx-builtins.md: Likewise.
+ 
+ 2020-11-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR debug/97060
+ 	* dwarf2out.c (gen_subprogram_die): It's a declaration
+ 	if DECL_INITIAL isn't set.
+ 
+ 2020-11-12  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR tree-optimization/97424
+ 	* doc/invoke.texi (Static Analyzer Options): Add
+ 	-Wno-analyzer-shift-count-negative and
+ 	-Wno-analyzer-shift-count-overflow.
+ 	(-Wno-analyzer-shift-count-negative): New.
+ 	(-Wno-analyzer-shift-count-overflow): New.
+ 
+ 2020-11-11  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin-protos.h (darwin_make_eh_symbol_indirect): New.
+ 	* config/darwin.c (darwin_make_eh_symbol_indirect): New. Use
+ 	Mach-O semantics for personality and ldsa indirections.
+ 	* config/darwin.h (TARGET_ASM_MAKE_EH_SYMBOL_INDIRECT): New.
+ 	* doc/tm.texi: Regenerate.
+ 	* doc/tm.texi.in: Add TARGET_ASM_MAKE_EH_SYMBOL_INDIRECT hook.
+ 	* dwarf2out.c (dwarf2out_do_cfi_startproc): If the target defines
+ 	a hook for indirecting personality and ldsa references, use that
+ 	otherwise default to ELF semantics.
+ 	* target.def (make_eh_symbol_indirect): New target hook.
+ 
+ 2020-11-11  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/88115
+ 	* common.opt (-fabi-version): Document =15.
+ 	* doc/invoke.texi (C++ Dialect Options): Likewise.
+ 
+ 2020-11-11  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/97518
+ 	* tree.c (maybe_wrap_with_location): Don't add a location
+ 	wrapper around an artificial and ignored decl.
+ 
+ 2020-11-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97623
+ 	* tree-ssa-pre.c (create_expression_by_pieces): Guard
+ 	NEW_SETS access.
+ 	(insert_into_preds_of_block): Likewise.
+ 
+ 2020-11-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.c (pre_expr_DFS): New function.
+ 	(sorted_array_from_bitmap_set): Use it to properly
+ 	topologically sort the expression set.
+ 	(clean): Verify we've cleaned everything we should.
+ 
+ 2020-11-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97623
+ 	* params.opt (-param=max-pre-hoist-insert-iterations): Remove
+ 	again.
+ 	* doc/invoke.texi (max-pre-hoist-insert-iterations): Likewise.
+ 	* tree-ssa-pre.c (insert): Move hoist insertion after PRE
+ 	insertion iteration and do not iterate it.
+ 
+ 2020-11-11  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve.md (@vcond_mask_<mode><vpred>): Extend
+ 	from SVE_FULL to SVE_ALL.
+ 	(*vcond_mask_<mode><vpred>): Likewise.
+ 	(@aarch64_sel_dup<mode>): Likewise.
+ 	(vcond<SVE_FULL:mode><v_int_equiv>): Extend to...
+ 	(vcond<SVE_ALL:mode><SVE_I:mode>): ...this, but requiring the
+ 	sizes of the container modes to match.
+ 	(vcondu<SVE_FULL:mode><v_int_equiv>): Extend to...
+ 	(vcondu<SVE_ALL:mode><SVE_I:mode>): ...this.
+ 	(vec_cmp<SVE_FULL_I:mode><vpred>): Extend to...
+ 	(vec_cmp<SVE_I:mode><vpred>): ...this.
+ 	(vec_cmpu<SVE_FULL_I:mode><vpred>): Extend to...
+ 	(vec_cmpu<SVE_I:mode><vpred>): ...this.
+ 	(@aarch64_pred_cmp<cmp_op><SVE_FULL_I:mode>): Extend to...
+ 	(@aarch64_pred_cmp<cmp_op><SVE_I:mode>): ...this.
+ 	(*cmp<cmp_op><SVE_FULL_I:mode>_cc): Extend to...
+ 	(*cmp<cmp_op><SVE_I:mode>_cc): ...this.
+ 	(*cmp<cmp_op><SVE_FULL_I:mode>_ptest): Extend to...
+ 	(*cmp<cmp_op><SVE_I:mode>_ptest): ...this.
+ 	(*cmp<cmp_op><SVE_FULL_I:mode>_and): Extend to...
+ 	(*cmp<cmp_op><SVE_I:mode>_and): ...this.
+ 
+ 2020-11-11  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* optabs-tree.c (expand_vec_cond_expr_p): Allow the compared values
+ 	and the selected values to have different mode sizes.
+ 	* gimple-isel.cc (gimple_expand_vec_cond_expr): Likewise.
+ 
+ 2020-11-11  Hongtao Liu  <hongtao.liu@intel.com>
+ 	    Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h (get_available_features):
+ 	Detect AVXVNNI.
+ 	* common/config/i386/i386-common.c
+ 	(OPTION_MASK_ISA2_AVXVNNI_SET,
+ 	OPTION_MASK_ISA2_AVXVNNI_UNSET): New.
+ 	(OPTION_MASK_ISA2_AVX2_UNSET): Add AVXVNNI.
+ 	(ix86_hanlde_option): Handle -mavxvnni, unset avxvnni when
+ 	avx2 is disabled.
+ 	* common/config/i386/i386-cpuinfo.h (enum processor_features):
+ 	Add FEATURE_AVXVNNI.
+ 	* common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY
+ 	for avxvnni.
+ 	* config.gcc: Add avxvnniintrin.h.
+ 	* config/i386/avx512vnnivlintrin.h: Reimplement 128/256 bit non-mask
+ 	intrinsics with macros to support unified interface.
+ 	* config/i386/avxvnniintrin.h: New header file.
+ 	* config/i386/cpuid.h (bit_AVXVNNI): New.
+ 	* config/i386/i386-builtins.c (def_builtin): Handle AVXVNNI mask
+ 	for unified builtin.
+ 	* config/i386/i386-builtin.def (BDESC): Adjust AVX512VNNI
+ 	builtins for AVXVNNI.
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Define
+ 	__AVXVNNI__.
+ 	* config/i386/i386-expand.c (ix86_expand_builtin): Handle bisa
+ 	for AVXVNNI to support unified intrinsic name, since there is no
+ 	dependency between AVX512VNNI and AVXVNNI.
+ 	* config/i386/i386-options.c (isa2_opts): Add -mavxvnni.
+ 	(ix86_valid_target_attribute_inner_p): Handle avxnnni.
+ 	(ix86_option_override_internal): Ditto.
+ 	* config/i386/i386.h (TARGET_AVXVNNI, TARGET_AVXVNNI_P,
+ 	TARGET_AVXVNNI_P, PTA_AVXVNNI): New.
+ 	(PTA_SAPPHIRERAPIDS): Add AVX_VNNI.
+ 	(PTA_ALDERLAKE): Likewise.
+ 	* config/i386/i386.md ("isa"): Add avxvnni, avx512vnnivl.
+ 	("enabled"): Adjust for avxvnni and avx512vnnivl.
+ 	* config/i386/i386.opt: Add option -mavxvnni.
+ 	* config/i386/immintrin.h: Include avxvnniintrin.h.
+ 	* config/i386/sse.md (vpdpbusd_<mode>): Adjust for AVXVNNI.
+ 	(vpdpbusds_<mode>): Likewise.
+ 	(vpdpwssd_<mode>): Likewise.
+ 	(vpdpwssds_<mode>): Likewise.
+ 	(vpdpbusd_v16si): New.
+ 	(vpdpbusds_v16si): Likewise.
+ 	(vpdpwssd_v16si): Likewise.
+ 	(vpdpwssds_v16si): Likewise.
+ 	* doc/invoke.texi: Document -mavxvnni.
+ 	* doc/extend.texi: Document avxvnni.
+ 	* doc/sourcebuild.texi: Document target avxvnni.
+ 
+ 2020-11-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	* tree.c (copy_node): Fix spelling.
+ 
+ 2020-11-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.c (phi_translate_set): Do not sort the
+ 	expression set topologically.
+ 
+ 2020-11-11  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (irange::set): Early exit on VR_VARYING.
+ 
+ 2020-11-11  Zhiheng Xie  <xiezhiheng@huawei.com>
+ 	    Nannan Zheng  <zhengnannan@huawei.com>
+ 
+ 	* config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
+ 	for arithmetic operation intrinsics.
+ 
+ 2020-11-11  Strager Neds  <strager.nds@gmail.com>
+ 
+ 	* cgraph.h (symtab_node::set_section_for_node): Declare new
+ 	overload.
+ 	(symtab_node::set_section_from_string): Rename from set_section.
+ 	(symtab_node::set_section_from_node): Declare.
+ 	* symtab.c (symtab_node::set_section_for_node): Define new
+ 	overload.
+ 	(symtab_node::set_section_from_string): Rename from set_section.
+ 	(symtab_node::set_section_from_node): Define.
+ 	(symtab_node::set_section): Call renamed set_section_from_string.
+ 	(symtab_node::set_section): Call new set_section_from_node.
+ 
+ 2020-11-11  Strager Neds  <strager.nds@gmail.com>
+ 
+ 	* symtab.c (symtab_node::set_section_for_node): Extract reference
+ 	counting logic into ...
+ 	(retain_section_hash_entry): ... here (new function) and ...
+ 	(release_section_hash_entry): ... here (new function).
+ 
+ 2020-11-11  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/i386.h (PTA_MOVDIRI, PTA_MOVDIR64B,
+ 	PTA_AMX_TILE, PTA_AMX_INT8, PTA_AMX_BF16, PTA_HRESET):
+ 	Formatting.
+ 
+ 2020-11-11  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 
+ 	* config/s390/s390.h (HAVE_TF): Use opaque value when
+ 	GENERATOR_FILE is defined.
+ 
+ 2020-11-10  Strager Neds  <strager.nds@gmail.com>
+ 
+ 	* cgraph.h (symtab_node::get_section): Constify.
+ 	(symtab_node::set_section): Declare new overload.
+ 	* symtab.c (symtab_node::set_section): Define new overload.
+ 	(symtab_node::copy_visibility_from): Use new overload of
+ 	symtab_node::set_section.
+ 	(symtab_node::resolve_alias): Same.
+ 	* tree.h (set_decl_section_name): Declare new overload.
+ 	* tree.c (set_decl_section_name): Define new overload.
+ 	* tree-emutls.c (get_emutls_init_templ_addr): Same.
+ 	* cgraphclones.c (cgraph_node::create_virtual_clone): Use new
+ 	overload of symtab_node::set_section.
+ 	(cgraph_node::create_version_clone_with_body): Same.
+ 	* trans-mem.c (ipa_tm_create_version): Same.
+ 
+ 2020-11-10  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (irange::set): Early exit for poly ints.
+ 
+ 2020-11-10  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* gimplify.c (gimplify_scan_omp_clauses, gimplify_omp_loop): Use 'do'
+ 	instead of 'for' in error messages for Fortran.
+ 	* omp-low.c (check_omp_nesting_restrictions): Likewise
+ 
+ 2020-11-10  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 
+ 	* opts.c (control_options_for_live_patching): Reform 'is incompatible
+ 	with' error messages to use a standard message with differing format
+ 	arguments.
+ 	(finish_options): Likewise.
+ 
+ 2020-11-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97769
+ 	* tree-vect-data-refs.c (vect_update_misalignment_for_peel):
+ 	Remove assert.
+ 
+ 2020-11-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97780
+ 	* tree-ssa-pre.c (fini_pre): Deal with added basic blocks
+ 	when freeing PHI_TRANS_TABLE.
+ 
+ 2020-11-10  Zhiheng Xie  <xiezhiheng@huawei.com>
+ 	    Nannan Zheng  <zhengnannan@huawei.com>
+ 
+ 	* config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
+ 	for tbl/tbx intrinsics.
+ 
+ 2020-11-10  Chung-Lin Tang  <cltang@codesourcery.com>
+ 
+ 	* gimplify.c (is_or_contains_p): New static helper function.
+ 	(omp_target_reorder_clauses): New function.
+ 	(gimplify_scan_omp_clauses): Add use of omp_target_reorder_clauses to
+ 	reorder clause list according to OpenMP 5.0 rules. Add handling of
+ 	GOMP_MAP_ATTACH_DETACH for OpenMP cases.
+ 	* omp-low.c (is_omp_target): New static helper function.
+ 	(scan_sharing_clauses): Add scan phase handling of GOMP_MAP_ATTACH/DETACH
+ 	for OpenMP cases.
+ 	(lower_omp_target): Add lowering handling of GOMP_MAP_ATTACH/DETACH for
+ 	OpenMP cases.
+ 
+ 2020-11-10  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 
+ 	* config/s390/s390-modes.def (FPRX2): New mode.
+ 	* config/s390/s390-protos.h (s390_fma_allowed_p): New function.
+ 	* config/s390/s390.c (s390_fma_allowed_p): Likewise.
+ 	(s390_build_signbit_mask): Support 128-bit masks.
+ 	(print_operand): Support printing the second word of a TFmode
+ 	operand as vector register.
+ 	(constant_modes): Add FPRX2mode.
+ 	(s390_class_max_nregs): Return 1 for TFmode on z14+.
+ 	(s390_is_fpr128): New function.
+ 	(s390_is_vr128): Likewise.
+ 	(s390_can_change_mode_class): Use s390_is_fpr128 and
+ 	s390_is_vr128 in order to determine whether mode refers to a FPR
+ 	pair or to a VR.
+ 	(s390_emit_compare): Force TFmode operands into registers on
+ 	z14+.
+ 	* config/s390/s390.h (HAVE_TF): New macro.
+ 	(EXPAND_MOVTF): New macro.
+ 	(EXPAND_TF): Likewise.
+ 	* config/s390/s390.md (PFPO_OP_TYPE_FPRX2): PFPO_OP_TYPE_TF
+ 	alias.
+ 	(ALL): Add FPRX2.
+ 	(FP_ALL): Add FPRX2 for z14+, restrict TFmode to z13-.
+ 	(FP): Likewise.
+ 	(FP_ANYTF): New mode iterator.
+ 	(BFP): Add FPRX2 for z14+, restrict TFmode to z13-.
+ 	(TD_TF): Likewise.
+ 	(xde): Add FPRX2.
+ 	(nBFP): Likewise.
+ 	(nDFP): Likewise.
+ 	(DSF): Likewise.
+ 	(DFDI): Likewise.
+ 	(SFSI): Likewise.
+ 	(DF): Likewise.
+ 	(SF): Likewise.
+ 	(fT0): Likewise.
+ 	(bt): Likewise.
+ 	(_d): Likewise.
+ 	(HALF_TMODE): Likewise.
+ 	(tf_fpr): New mode_attr.
+ 	(type): New mode_attr.
+ 	(*cmp<mode>_ccz_0): Use type instead of mode with fsimp.
+ 	(*cmp<mode>_ccs_0_fastmath): Likewise.
+ 	(*cmptf_ccs): New pattern for wfcxb.
+ 	(*cmptf_ccsfps): New pattern for wfkxb.
+ 	(mov<mode>): Rename to mov<mode><tf_fpr>.
+ 	(signbit<mode>2): Rename to signbit<mode>2<tf_fpr>.
+ 	(isinf<mode>2): Renamed to isinf<mode>2<tf_fpr>.
+ 	(*TDC_insn_<mode>): Use type instead of mode with fsimp.
+ 	(fixuns_trunc<FP:mode><GPR:mode>2): Rename to
+ 	fixuns_trunc<FP:mode><GPR:mode>2<FP:tf_fpr>.
+ 	(fix_trunctf<mode>2): Rename to fix_trunctf<mode>2_fpr.
+ 	(floatdi<mode>2): Rename to floatdi<mode>2<tf_fpr>, use type
+ 	instead of mode with itof.
+ 	(floatsi<mode>2): Rename to floatsi<mode>2<tf_fpr>, use type
+ 	instead of mode with itof.
+ 	(*floatuns<GPR:mode><FP:mode>2): Use type instead of mode for
+ 	itof.
+ 	(floatuns<GPR:mode><FP:mode>2): Rename to
+ 	floatuns<GPR:mode><FP:mode>2<tf_fpr>.
+ 	(trunctf<mode>2): Rename to trunctf<mode>2_fpr, use type instead
+ 	of mode with fsimp.
+ 	(extend<DSF:mode><BFP:mode>2): Rename to
+ 	extend<DSF:mode><BFP:mode>2<BFP:tf_fpr>.
+ 	(<FPINT:fpint_name><BFP:mode>2): Rename to
+ 	<FPINT:fpint_name><BFP:mode>2<BFP:tf_fpr>, use type instead of
+ 	mode with fsimp.
+ 	(rint<BFP:mode>2): Rename to rint<BFP:mode>2<BFP:tf_fpr>, use
+ 	type instead of mode with fsimp.
+ 	(<FPINT:fpint_name><DFP:mode>2): Use type instead of mode for
+ 	fsimp.
+ 	(rint<DFP:mode>2): Likewise.
+ 	(trunc<BFP:mode><DFP_ALL:mode>2): Rename to
+ 	trunc<BFP:mode><DFP_ALL:mode>2<BFP:tf_fpr>.
+ 	(trunc<DFP_ALL:mode><BFP:mode>2): Rename to
+ 	trunc<DFP_ALL:mode><BFP:mode>2<BFP:tf_fpr>.
+ 	(extend<BFP:mode><DFP_ALL:mode>2): Rename to
+ 	extend<BFP:mode><DFP_ALL:mode>2<BFP:tf_fpr>.
+ 	(extend<DFP_ALL:mode><BFP:mode>2): Rename to
+ 	extend<DFP_ALL:mode><BFP:mode>2<BFP:tf_fpr>.
+ 	(add<mode>3): Rename to add<mode>3<tf_fpr>, use type instead of
+ 	mode with fsimp.
+ 	(*add<mode>3_cc): Use type instead of mode with fsimp.
+ 	(*add<mode>3_cconly): Likewise.
+ 	(sub<mode>3): Rename to sub<mode>3<tf_fpr>, use type instead of
+ 	mode with fsimp.
+ 	(*sub<mode>3_cc): Use type instead of mode with fsimp.
+ 	(*sub<mode>3_cconly): Likewise.
+ 	(mul<mode>3): Rename to mul<mode>3<tf_fpr>, use type instead of
+ 	mode with fsimp.
+ 	(fma<mode>4): Restrict using s390_fma_allowed_p.
+ 	(fms<mode>4): Restrict using s390_fma_allowed_p.
+ 	(div<mode>3): Rename to div<mode>3<tf_fpr>, use type instead of
+ 	mode with fdiv.
+ 	(neg<mode>2): Rename to neg<mode>2<tf_fpr>.
+ 	(*neg<mode>2_cc): Use type instead of mode with fsimp.
+ 	(*neg<mode>2_cconly): Likewise.
+ 	(*neg<mode>2_nocc): Likewise.
+ 	(*neg<mode>2): Likeiwse.
+ 	(abs<mode>2): Rename to abs<mode>2<tf_fpr>, use type instead of
+ 	mode with fdiv.
+ 	(*abs<mode>2_cc): Use type instead of mode with fsimp.
+ 	(*abs<mode>2_cconly): Likewise.
+ 	(*abs<mode>2_nocc): Likewise.
+ 	(*abs<mode>2): Likewise.
+ 	(*negabs<mode>2_cc): Likewise.
+ 	(*negabs<mode>2_cconly): Likewise.
+ 	(*negabs<mode>2_nocc): Likewise.
+ 	(*negabs<mode>2): Likewise.
+ 	(sqrt<mode>2): Rename to sqrt<mode>2<tf_fpr>, use type instead
+ 	of mode with fsqrt.
+ 	(cbranch<mode>4): Use FP_ANYTF instead of FP.
+ 	(copysign<mode>3): Rename to copysign<mode>3<tf_fpr>, use type
+ 	instead of mode with fsimp.
+ 	* config/s390/s390.opt (flag_vx_long_double_fma): New
+ 	undocumented option.
+ 	* config/s390/vector.md (V_HW): Add TF for z14+.
+ 	(V_HW2): Likewise.
+ 	(VFT): Likewise.
+ 	(VF_HW): Likewise.
+ 	(V_128): Likewise.
+ 	(tf_vr): New mode_attr.
+ 	(tointvec): Add TF.
+ 	(mov<mode>): Rename to mov<mode><tf_vr>.
+ 	(movetf): New dispatcher.
+ 	(*vec_tf_to_v1tf): Rename to *vec_tf_to_v1tf_fpr, restrict to
+ 	z13-.
+ 	(*vec_tf_to_v1tf_vr): New pattern for z14+.
+ 	(*fprx2_to_tf): Likewise.
+ 	(*mov_tf_to_fprx2_0): Likewise.
+ 	(*mov_tf_to_fprx2_1): Likewise.
+ 	(add<mode>3): Rename to add<mode>3<tf_vr>.
+ 	(addtf3): New dispatcher.
+ 	(sub<mode>3): Rename to sub<mode>3<tf_vr>.
+ 	(subtf3): New dispatcher.
+ 	(mul<mode>3): Rename to mul<mode>3<tf_vr>.
+ 	(multf3): New dispatcher.
+ 	(div<mode>3): Rename to div<mode>3<tf_vr>.
+ 	(divtf3): New dispatcher.
+ 	(sqrt<mode>2): Rename to sqrt<mode>2<tf_vr>.
+ 	(sqrttf2): New dispatcher.
+ 	(fma<mode>4): Restrict using s390_fma_allowed_p.
+ 	(fms<mode>4): Likewise.
+ 	(neg_fma<mode>4): Likewise.
+ 	(neg_fms<mode>4): Likewise.
+ 	(neg<mode>2): Rename to neg<mode>2<tf_vr>.
+ 	(negtf2): New dispatcher.
+ 	(abs<mode>2): Rename to abs<mode>2<tf_vr>.
+ 	(abstf2): New dispatcher.
+ 	(float<mode>tf2_vr): New forwarder.
+ 	(float<mode>tf2): New dispatcher.
+ 	(floatuns<mode>tf2_vr): New forwarder.
+ 	(floatuns<mode>tf2): New dispatcher.
+ 	(fix_trunctf<mode>2_vr): New forwarder.
+ 	(fix_trunctf<mode>2): New dispatcher.
+ 	(fixuns_trunctf<mode>2_vr): New forwarder.
+ 	(fixuns_trunctf<mode>2): New dispatcher.
+ 	(<FPINT:fpint_name><VF_HW:mode>2<VF_HW:tf_vr>): New pattern.
+ 	(<FPINT:fpint_name>tf2): New forwarder.
+ 	(rint<mode>2<tf_vr>): New pattern.
+ 	(rinttf2): New forwarder.
+ 	(*trunctfdf2_vr): New pattern.
+ 	(trunctfdf2_vr): New forwarder.
+ 	(trunctfdf2): New dispatcher.
+ 	(trunctfsf2_vr): New forwarder.
+ 	(trunctfsf2): New dispatcher.
+ 	(extenddftf2_vr): New pattern.
+ 	(extenddftf2): New dispatcher.
+ 	(extendsftf2_vr): New forwarder.
+ 	(extendsftf2): New dispatcher.
+ 	(signbittf2_vr): New forwarder.
+ 	(signbittf2): New dispatchers.
+ 	(isinftf2_vr): New forwarder.
+ 	(isinftf2): New dispatcher.
+ 	* config/s390/vx-builtins.md (*vftci<mode>_cconly): Use VF_HW
+ 	instead of VECF_HW, add missing constraint, add vw support.
+ 	(vftci<mode>_intcconly): Use VF_HW instead of VECF_HW.
+ 	(*vftci<mode>): Rename to vftci<mode>, use VF_HW instead of
+ 	VECF_HW, and vw support.
+ 	(vftci<mode>_intcc): Use VF_HW instead of VECF_HW.
+ 
+ 2020-11-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* range-op.cc (operator_logical_not::fold_range): Tidy up.
+ 	(operator_logical_not::op1_range): Call above method.
+ 	(operator_bitwise_not::fold_range): If the type is compatible
+ 	with boolean, call op_logical_not.fold_range.
+ 	(operator_bitwise_not::op1_range): If the type is compatible
+ 	with boolean, call op_logical_not.op1_range.
+ 
+ 2020-11-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.c (pre_expr_d::value_id): Add.
+ 	(constant_value_expressions): Turn into an array of pre_expr.
+ 	(get_or_alloc_expr_for_nary): New function.
+ 	(get_or_alloc_expr_for_reference): Likewise.
+ 	(add_to_value): For constant values only ever add a single
+ 	CONSTANT.
+ 	(get_expr_value_id): Return the new value_id member.
+ 	(vn_valnum_from_value_id): Split out and simplify constant
+ 	value id handling.
+ 	(get_or_alloc_expr_for_constant): Set the value_id member.
+ 	(phi_translate_1): Use get_or_alloc_expr_for_*.
+ 	(compute_avail): Likewise.
+ 	(bitmap_find_leader): Simplify constant value id handling.
+ 
+ 2020-11-10  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* doc/md.texi (Modifiers): Fix grammar in description of
+ 	earlyclobber constraint modifier.
+ 
+ 2020-11-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/97764
+ 	* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): For
+ 	little-endian stores with negative pd.offset, subtract
+ 	BITS_PER_UNIT - amnt from size if amnt is non-zero.
+ 
+ 2020-11-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97760
+ 	* tree-vect-loop.c (check_reduction_path): Reject
+ 	reduction paths we do not handle in epilogue generation.
+ 
+ 2020-11-10  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/97767
+ 	* value-range.cc (dump_bound_with_infinite_markers): Use
+ 	wi::min_value and wi::max_value.
+ 	(range_tests_strict_enum): New.
+ 	(range_tests): Call range_tests_strict_enum.
+ 	* value-range.h (irange::varying_p): Use wi::min_value
+ 	and wi::max_value.
+ 	(irange::set_varying): Same.
+ 	(irange::normalize_min_max): Remove comment.
+ 
+ 2020-11-10  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/97567
+ 	* gimple-range-gori.cc: (gori_compute::logical_combine): False
+ 	OR operations should intersect the 2 results.
+ 	(gori_compute::compute_logical_operands_in_chain): If def chains
+ 	are outside the current basic block, don't follow them.
+ 
+ 2020-11-09  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_split_move): Recognize vadd2 instructions.
+ 	* config/arc/arc.md (movdi_insn): Update pattern to use vadd2
+ 	instructions.
+ 	(movdf_insn): Likewise.
+ 	(maddhisi4): New pattern.
+ 	(umaddhisi4): Likewise.
+ 	* config/arc/simdext.md (mov<mode>_int): Update pattern to use
+ 	vadd2.
+ 	(sdot_prodv4hi): New pattern.
+ 	(udot_prodv4hi): Likewise.
+ 	(arc_vec_<V_US>mac_hi_v4hi): Update/renamed to
+ 	arc_vec_<V_US>mac_v2hiv2si.
+ 	(arc_vec_<V_US>mac_v2hiv2si_zero): New pattern.
+ 	* config/arc/constraints.md (Ral): Accumulator register
+ 	constraint.
+ 
+ 2020-11-09  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* function-tests.c (test_ranges): Call range_op_tests.
+ 	* range-op.cc (build_range3): Move to value-range.cc.
+ 	(range3_tests): Same.
+ 	(int_range_max_tests): Same.
+ 	(multi_precision_range_tests): Same.
+ 	(range_tests): Same.
+ 	(operator_tests): Split up...
+ 	(range_op_tests): Split up...
+ 	(range_op_cast_tests): ...here.
+ 	(range_op_lshift_tests): ...here.
+ 	(range_op_rshift_tests): ...here.
+ 	(range_op_bitwise_and_tests): ...here.
+ 	* selftest.h (range_op_tests): New.
+ 	* value-range.cc (build_range3): New.
+ 	(range_tests_irange3): New.
+ 	(range_tests_int_range_max): New.
+ 	(range_tests_legacy): New.
+ 	(range_tests_misc): New.
+ 	(range_tests): New.
+ 
+ 2020-11-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97761
+ 	* tree-vect-slp.c (vect_bb_slp_mark_live_stmts): Remove
+ 	premature end of DFS walk.
+ 
+ 2020-11-09  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (irange::swap_out_of_order_endpoints): Rewrite
+ 	into static function.
+ 	(irange::set): Cleanup redundant manipulations.
+ 	* value-range.h (irange::normalize_min_max): Modify object
+ 	in-place instead of modifying arguments.
+ 
+ 2020-11-09  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.c
+ 	(aarch64_expand_fcmla_builtin): Do not alter force_reg returned
+ 	register.
+ 
+ 2020-11-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97753
+ 	* tree-vect-loop.c (vectorizable_induction): Fill vec_steps
+ 	when CSEing inside the group.
+ 
+ 2020-11-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97746
+ 	* tree-vect-patterns.c (vect_determine_precisions): First walk PHIs.
+ 
+ 2020-11-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.c (get_representative_for): CSE VN_INFO calls.
+ 	(create_expression_by_pieces): Likewise.
+ 	(insert_into_preds_of_block): Likewsie.
+ 	(do_pre_regular_insertion): Likewsie.
+ 	* tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_insert):
+ 	Likewise.
+ 	(eliminate_dom_walker::eliminate_stmt): Likewise.
+ 
+ 2020-11-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97765
+ 	* tree-ssa-pre.c (bb_bitmap_sets::phi_translate_table): Add.
+ 	(PHI_TRANS_TABLE): New macro.
+ 	(phi_translate_table): Remove.
+ 	(expr_pred_trans_d::pred): Remove.
+ 	(expr_pred_trans_d::hash): Simplify.
+ 	(expr_pred_trans_d::equal): Likewise.
+ 	(phi_trans_add): Adjust.
+ 	(phi_translate): Likewise.  Remove hash-table expansion
+ 	detection and optimization.
+ 	(phi_translate_set): Allocate PHI_TRANS_TABLE here.
+ 	(init_pre): Adjsust.
+ 	(fini_pre): Free PHI_TRANS_TABLE.
+ 
+ 2020-11-09  Lili Cui  <lili.cui@intel.com>
+ 
+ 	PR target/97685
+ 	* config/i386/i386.h:
+ 	(PTA_BROADWELL): Delete PTA_PRFCHW.
+ 	(PTA_SILVERMONT): Add PTA_PRFCHW.
+ 	(PTA_KNL): Add PTA_PREFETCHWT1.
+ 	(PTA_TREMONT): Add PTA_MOVDIRI, PTA_MOVDIR64B, PTA_CLDEMOTE and PTA_WAITPKG.
+ 	* doc/invoke.texi: Delete PREFETCHW for broadwell, skylake, knl, knm,
+ 	skylake-avx512, cannonlake, icelake-client, icelake-server, cascadelake,
+ 	cooperlake, tigerlake and sapphirerapids.
+ 	Add PREFETCHW for silvermont, goldmont, goldmont-plus and tremont.
+ 	Add XSAVEC and XSAVES for goldmont, goldmont-plus and tremont.
+ 	Add MOVDIRI, MOVDIR64B, CLDEMOTE and WAITPKG for tremont.
+ 	Add KEYLOCKER and HREST for alderlake.
+ 	Add AMX-BF16, AMX-TILE, AMX-INT8 and UINTR for sapphirerapids.
+ 	Add KEYLOCKER for tigerlake.
+ 
+ 2020-11-09  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR rtl-optimization/97705
+ 	* ira.c (ira): Refactor some regstat free/init/compute invocation
+ 	into lambda function regstat_recompute_for_max_regno, and call it
+ 	when max_regno increases as remove_scratches succeeds.
+ 
+ 2020-11-08  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_mangle_decl_assembler_name): Change
+ 	DECL_IS_BUILTIN -> DECL_IS_UNDECLARED_BUILTIN.
+ 
+ 2020-11-07  Martin Uecker  <muecker@gwdg.de>
+ 
+ 	* doc/extend.texi: Document mixing labels and code.
+ 	* doc/invoke.texi: Likewise.
+ 
+ 2020-11-06  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md (@tablejump<mode>_normal): Don't abuse
+ 	operands[].
+ 	(@tablejump<mode>_nospec): Ditto.
+ 
+ 2020-11-06  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.h (BIGGEST_ALIGNMENT): Revert previous commit
+ 	so as not to break the ABI.
+ 	* config/rs6000/rs6000-call.c (rs6000_init_builtins): Set the ABI
+ 	mandated alignment for __vector_pair and __vector_quad types.
+ 
+ 2020-11-06  Jeff Law  <law@torsion.usersys.redhat.com>
+ 
+ 	PR target/91489
+ 	* config/i386/i386.md (simple_return): Also check
+ 	for ms_hook_prologue function attribute.
+ 	* config/i386/i386.c (ix86_can_use_return_insn_p):
+ 	Also check for ms_hook_prologue function attribute.
+ 	* config/i386/i386-protos.h (ix86_function_ms_hook_prologue): Declare.
+ 
+ 2020-11-06  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/96933
+ 	* config/rs6000/rs6000.c (rs6000_expand_vector_init): Use
+ 	TARGET_POWERPC64 instead of TARGET_64BIT.
+ 
+ 2020-11-06  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* builtins.def (BUILT_IN_NANSD32, BUILT_IN_NANSD64)
+ 	(BUILT_IN_NANSD128): New built-in functions.
+ 	* fold-const-call.c (fold_const_call): Handle the new built-in
+ 	functions.
+ 	* doc/extend.texi (__builtin_nansd32, __builtin_nansd64)
+ 	(__builtin_nansd128): Document.
+ 	* doc/sourcebuild.texi (Effective-Target Keywords): Document
+ 	fenv_exceptions_dfp.
+ 
+ 2020-11-06  Bin Cheng  <bin.cheng@linux.alibaba.com>
+ 
+ 	* tree-ssa-uninit.c (find_var_cmp_const): New function.
+ 	(use_pred_not_overlap_with_undef_path_pred): Call above.
+ 
+ 2020-11-06  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin-c.c: Allow for Darwin20 to correspond to macOS 11.
+ 	* config/darwin-driver.c: Likewise.
+ 
+ 2020-11-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.c (expr_pred_trans_d): Modify so elements
+ 	are embedded rather than allocated.  Remove hashval member,
+ 	make all members integers.
+ 	(phi_trans_add): Adjust accordingly.
+ 	(phi_translate): Likewise.  Deal with re-allocation
+ 	of the table.
+ 
+ 2020-11-06  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/97737
+ 	PR tree-optimization/97741
+ 	* gimple-range.cc: (gimple_ranger::range_of_stmt): Intersect newly
+ 	calculated ranges with the existing known global range.
+ 
+ 2020-11-06  Darius Galis  <darius.galis@cyberthorstudios.com>
+ 
+ 	* config/rx/rx.md (CTRLREG_PC): Add.
+ 	* config/rx/rx.c (CTRLREG_PC): Add
+ 	(rx_expand_builtin_mvtc): Add warning: PC register cannot
+ 	be used as dest.
+ 
+ 2020-11-06  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* tree.h (DECL_IS_BUILTIN): Rename to ...
+ 	(DECL_IS_UNDECLARED_BUILTIN): ... here.  No need to use SOURCE_LOCUS.
+ 	* calls.c (maybe_warn_alloc_args_overflow): Adjust for rename.
+ 	* cfgexpand.c (pass_expand::execute): Likewise.
+ 	* dwarf2out.c (base_type_die, is_naming_typedef_decl): Likewise.
+ 	* godump.c (go_decl, go_type_decl): Likewise.
+ 	* print-tree.c (print_decl_identifier): Likewise.
+ 	* tree-pretty-print.c (dump_generic_node): Likewise.
+ 	* tree-ssa-ccp.c (pass_post_ipa_warn::execute): Likewise.
+ 	* xcoffout.c (xcoff_assign_fundamental_type_number): Likewise.
+ 
+ 2020-11-06  David Candler  <david.candler@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.c
+ 	(TYPES_SHIFT2IMM): Add define.
+ 	(TYPES_SHIFT2IMM_UUSS): Add define.
+ 	(TYPES_USHIFT2IMM): Add define.
+ 	* config/aarch64/aarch64-simd.md
+ 	(aarch64_<sur>q<r>shr<u>n2_n<mode>): Add new insn for upper saturating shift right.
+ 	* config/aarch64/aarch64-simd-builtins.def: Add intrinsics.
+ 	* config/aarch64/arm_neon.h:
+ 	(vqrshrn_high_n_s16): Expand using intrinsic rather than inline asm.
+ 	(vqrshrn_high_n_s32): Likewise.
+ 	(vqrshrn_high_n_s64): Likewise.
+ 	(vqrshrn_high_n_u16): Likewise.
+ 	(vqrshrn_high_n_u32): Likewise.
+ 	(vqrshrn_high_n_u64): Likewise.
+ 	(vqrshrun_high_n_s16): Likewise.
+ 	(vqrshrun_high_n_s32): Likewise.
+ 	(vqrshrun_high_n_s64): Likewise.
+ 	(vqshrn_high_n_s16): Likewise.
+ 	(vqshrn_high_n_s32): Likewise.
+ 	(vqshrn_high_n_s64): Likewise.
+ 	(vqshrn_high_n_u16): Likewise.
+ 	(vqshrn_high_n_u32): Likewise.
+ 	(vqshrn_high_n_u64): Likewise.
+ 	(vqshrun_high_n_s16): Likewise.
+ 	(vqshrun_high_n_s32): Likewise.
+ 	(vqshrun_high_n_s64): Likewise.
+ 
+ 2020-11-06  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-modes.def (VNx2BF, VNx4BF): Adjust nunits
+ 	and alignment based on the current VG.
+ 	* config/aarch64/iterators.md (SVE_ALL, SVE_24, SVE_2, SVE_4): Add
+ 	partial SVE BF modes.
+ 	(UNSPEC_REVBHW): New unspec.
+ 	(Vetype, Vesize, Vctype, VEL, Vel, vwcore, V_INT_CONTAINER)
+ 	(v_int_container, VPRED, vpred): Handle partial SVE BF modes.
+ 	(container_bits, Vcwtype): New mode attributes.
+ 	* config/aarch64/aarch64-sve.md
+ 	(@aarch64_sve_revbhw_<SVE_ALL:mode><PRED_HSD:mode>): New pattern.
+ 	(@aarch64_sve_dup_lane<mode>): Extended from SVE_FULL to SVE_ALL.
+ 	(@aarch64_sve_rev<mode>, @aarch64_sve_<perm_insn><mode>): Likewise.
+ 	(@aarch64_sve_ext<mode>): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
+ 	E_VNx2BFmode and E_VNx4BFmode.
+ 	(aarch64_evpc_rev_local): Base the analysis on the container size
+ 	instead of the element size.  Use the new aarch64_sve_revbhw
+ 	patterns for SVE.
+ 	(aarch64_evpc_dup): Handle partial SVE data modes.  Use the
+ 	container size instead of the element size when applying the
+ 	SVE immediate limit.  Fix a previously incorrect bounds check.
+ 	(aarch64_expand_vec_perm_const_1): Handle partial SVE data modes.
+ 
+ 2020-11-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	* common.opt: Add new -fbit-tests option.
+ 	* doc/invoke.texi: Document the option.
+ 	* tree-switch-conversion.c (bit_test_cluster::find_bit_tests):
+ 	Use the option.
+ 	* tree-switch-conversion.h (is_enabled): New function.
+ 
+ 2020-11-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-sccvn.h (get_max_constant_value_id): Declare.
+ 	(get_next_constant_value_id): Likewise.
+ 	(value_id_constant_p): Inline and simplify.
+ 	* tree-ssa-sccvn.c (constant_value_ids): Remove.
+ 	(next_constant_value_id): Add.
+ 	(get_or_alloc_constant_value_id): Adjust.
+ 	(value_id_constant_p): Remove definition.
+ 	(get_max_constant_value_id): Define.
+ 	(get_next_value_id): Add assert for overflow.
+ 	(get_next_constant_value_id): Define.
+ 	(run_rpo_vn): Adjust.
+ 	(free_rpo_vn): Likewise.
+ 	(do_rpo_vn): Initialize next_constant_value_id.
+ 	* tree-ssa-pre.c (constant_value_expressions): New.
+ 	(add_to_value): Split into constant/non-constant value
+ 	handling.  Avoid exact re-allocation.
+ 	(vn_valnum_from_value_id): Adjust.
+ 	(phi_translate_1): Remove spurious exact re-allocation.
+ 	(bitmap_find_leader): Adjust.  Make sure we return
+ 	a CONSTANT value for a constant value id.
+ 	(do_pre_regular_insertion): Use 2 auto-elements for avail.
+ 	(do_pre_partial_partial_insertion): Likewise.
+ 	(init_pre): Allocate constant_value_expressions.
+ 	(fini_pre): Release constant_value_expressions.
+ 
+ 2020-11-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97706
+ 	* tree-vect-patterns.c (possible_vector_mask_operation_p):
+ 	PHIs are possible mask operations.
+ 	(vect_determine_mask_precision): Handle PHIs.
+ 	(vect_determine_precisions): Walk PHIs in BB analysis.
+ 
+ 2020-11-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_analyze_slp): Pass down the
+ 	SLP graph entry kind.
+ 	(vect_analyze_slp_instance): Simplify.
+ 	(vect_build_slp_instance): Adjust.
+ 	(vect_slp_check_for_constructors): Perform more
+ 	eligibility checks here.
+ 
+ 2020-11-06  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-ref.h (enum ipa_ref_use): Remove GTY marker.
+ 	(struct ipa_ref): Remove GTY marker; reorder for better packing.
+ 	(struct ipa_ref_list): Remove GTY marker; turn references
+ 	nad referring to va_heap, vl_ptr vectors; update accesors.
+ 	* cgraph.h (symtab_node::iterate_reference): Update.
+ 	* ipa-ref.c (ipa_ref::remove_reference): Update.
+ 	* symtab.c (symtab_node::create_reference): Update.
+ 	(symtab_node::remove_all_references): Update.
+ 	(symtab_node::resolve_alias): Update.
+ 
+ 2020-11-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* ipa-modref-tree.h: Fix comment typos.
+ 	* ipa-modref.c: Likewise.
+ 
+ 2020-11-06  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_option_override_internal): Remove
+ 	override of inline params.
+ 
+ 2020-11-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97706
+ 	* tree-vect-patterns.c (vect_determine_mask_precision):
+ 	Remove worklist operation.
+ 	(vect_determine_stmt_precisions): Do not call
+ 	vect_determine_mask_precision here.
+ 	(vect_determine_precisions): Compute mask precision
+ 	in a forward walk.
+ 
+ 2020-11-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97732
+ 	* tree-vect-loop.c (vectorizable_induction): Convert the
+ 	init elements to the vector component type.
+ 	* gimple-fold.c (gimple_build_vector): Use CONSTANT_CLASS_P
+ 	rather than TREE_CONSTANT to determine if elements are
+ 	eligible for VECTOR_CSTs.
+ 
+ 2020-11-06  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* attr-fnspec.h (attr_fnspec::get_str): New accessor
+ 	* ipa-fnsummary.c (read_ipa_call_summary): Store also parm info
+ 	for builtins.
+ 	* ipa-modref.c (class fnspec_summary): New type.
+ 	(class fnspec_summaries_t): New type.
+ 	(modref_summary::modref_summary): Initialize writes_errno.
+ 	(struct modref_summary_lto): Add writes_errno.
+ 	(modref_summary_lto::modref_summary_lto): Initialize writes_errno.
+ 	(modref_summary::dump): Check for NULL pointers.
+ 	(modref_summary_lto::dump): Dump writes_errno.
+ 	(collapse_loads): Move up in source file.
+ 	(collapse_stores): New function.
+ 	(process_fnspec): Handle also internal calls.
+ 	(analyze_call): Likewise.
+ 	(analyze_stmt): Store fnspec string if needed.
+ 	(analyze_function): Initialize fnspec_sumarries.
+ 	(modref_summaries_lto::duplicate): Copy writes_errno.
+ 	(modref_write): Store writes_errno and fnspec summaries.
+ 	(read_section): Read writes_errno and fnspec summaries.
+ 	(modref_read): Initialize fnspec summaries.
+ 	(update_signature): Fix formating.
+ 	(compute_parm_map): Return true if sucessful.
+ 	(get_parm_type): New function.
+ 	(get_access_for_fnspec): New function.
+ 	(propagate_unknown_call): New function.
+ 	(modref_propagate_in_scc): Use it.
+ 	(pass_ipa_modref::execute): Delete fnspec_summaries.
+ 	(ipa_modref_c_finalize): Delete fnspec_summaries.
+ 	* ipa-prop.c: Include attr-fnspec.h.
+ 	(ipa_compute_jump_functions_for_bb):  Also compute jump functions
+ 	for functions with fnspecs.
+ 	(ipa_read_edge_info): Read jump functions for builtins.
+ 
+ 2020-11-06  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-fnsummary.h (class size_time_entry): Do not GTY annotate.
+ 	(class ipa_fnsummary): Turn size_time_table to auto_vec and
+ 	call_size_time_table to effecient vec; update constructors.
+ 	* ipa-fnsummary.c (ipa_fn_summary::account_size_time): Update.
+ 	(ipa_fn_summary::~ipa_fn_summary): Update.
+ 	(ipa_fn_summary_t::duplicate): Update.
+ 	(ipa_dump_fn_summary): Update.
+ 	(set_switch_stmt_execution_predicate): Update.
+ 	(analyze_function_body): Update.
+ 	(estimate_calls_size_and_time): Update.
+ 	(ipa_call_context::estimate_size_and_time): Update.
+ 	(ipa_merge_fn_summary_after_inlining): Update.
+ 	(ipa_update_overall_fn_summary): Update.
+ 	(inline_read_section): Update.
+ 	(ipa_fn_summary_write): Update.
+ 
+ 2020-11-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97733
+ 	* tree-vect-slp.c (vect_analyze_slp_instance): If less
+ 	than two reductions were relevant or live do nothing.
+ 
+ 2020-11-06  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/97223
+ 	* match.pd (overflow detection and optimization): Handle conversions.
+ 
+ 2020-11-06  Eugene Rozenfeld  <erozen@microsoft.com>
+ 
+ 	* match.pd (x >> x): New pattern.
+ 
+ 2020-11-06  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.c (riscv_implied_info):
+ 	Add static and const.
+ 	(riscv_subset_list::handle_implied_ext): Add const due to
+ 	riscv_implied_info changed to const.
+ 
+ 2020-11-06  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	PR target/96307
+ 	* toplev.c (process_options): Remove param_asan_stack checking for kasan
+ 	option checking.
+ 
+ 2020-11-05  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/97675
+ 	* doc/invoke.texi: Document -Wexceptions.
+ 
+ 2020-11-05  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/25814
+ 	* doc/invoke.texi: Document -Wvexing-parse.
+ 
+ 2020-11-05  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/97725
+ 	* range-op.cc (operator_equal::fold_range): Use new tmp value.
+ 	(operator_not_equal::fold_range): Ditto.
+ 	* value-query.cc (range_query::value_of_expr): Use int_range_max
+ 	not a value_range.
+ 	(range_query::value_on_edge): Ditto.
+ 	(range_query::value_of_stmt): Ditto.
+ 
+ 2020-11-05  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/aarch64/aarch64-vxworks.h (TARGET_OS_USES_R18):
+ 	Remove definition.
+ 	(STATIC_CHAIN_REGNUM): Redefine to 9.
+ 
+ 2020-11-05  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/aarch64/aarch64.md: Define PROBE_STACK_FIRST_REGNUM
+ 	and PROBE_STACK_SECOND_REGNUM constants, designating r10/r11.
+ 	Replacements for the PROBE_STACK_FIRST/SECOND_REG constants in
+ 	aarch64.c.
+ 	* config/aarch64/aarch64.c (PROBE_STACK_FIRST_REG): Remove.
+ 	(PROBE_STACK_SECOND_REG): Remove.
+ 	(aarch64_emit_probe_stack_range): Adjust to the _REG -> _REGNUM
+ 	suffix update for PROBE_STACK register numbers.
+ 
+ 2020-11-05  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* gimple.c (gimple_call_fnspec): Handle C++ new and delete.
+ 	* gimple.h (gimple_call_from_new_or_delete): Constify parameter.
+ 
+ 2020-11-05  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/97721
+ 	* gimple-range.cc (get_tree_range): Drop overflow from constants.
+ 
+ 2020-11-05  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* tree-diagnostic-path.cc (struct path_summary::event_range): Move
+ 	out of path_summary to...
+ 	(struct event_range): ...here.
+ 	(class path_summary): Convert to...
+ 	(struct path_summary): ...this.
+ 	(path_summary::m_ranges): Drop "private".
+ 	(path_summary::print): Convert to...
+ 	(print_path_summary_as_text): ...this, passing in the path_summary
+ 	explicitly.
+ 	(default_tree_diagnostic_path_printer): Update for above change.
+ 	(selftest::test_empty_path): Likewise.
+ 	(selftest::test_intraprocedural_path): Likewise.
+ 	(selftest::test_interprocedural_path_1): Likewise.
+ 	(selftest::test_interprocedural_path_2): Likewise.
+ 	(selftest::test_recursion): Likewise.
+ 
+ 2020-11-05  qing zhao  <qinzhao@gcc.gnu.org>
+ 
+ 	PR target/97715
+ 	* config/i386/i386.c (zero_all_st_registers): Return
+ 	earlier when the FPU is disabled.
+ 
+ 2020-11-05  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (parm_map_for_arg): Initialize parm_offset and
+ 	parm_offset_knonw.
+ 	(read_section): Set writes_errno to false.
+ 
+ 2020-11-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-data-refs.c (vect_slp_analyze_node_dependences):
+ 	Use the original stmts.
+ 	(vect_slp_analyze_node_alignment): Use the pattern stmt.
+ 	* tree-vect-slp.c (vect_fixup_store_groups_with_patterns):
+ 	New function.
+ 	(vect_slp_analyze_bb_1): Call it.
+ 
+ 2020-11-05  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* tree-vect-slp.c (vect_slp_tree_permute_noop_p): New.
+ 	(vect_optimize_slp): Optimize permutes.
+ 	(vectorizable_slp_permutation): Fix typo.
+ 
+ 2020-11-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/97718
+ 	* dwarf2out.c (add_abstract_origin_attribute): Make sure to
+ 	point to the abstract instance.
+ 
+ 2020-11-05  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* tree-vect-loop.c (vect_analyze_loop_2): Check kind.
+ 	* tree-vect-slp.c (vect_build_slp_instance): New.
+ 	(enum slp_instance_kind): Move to...
+ 	* tree-vectorizer.h (enum slp_instance_kind): .. Here
+ 	(SLP_INSTANCE_KIND): New.
+ 
+ 2020-11-05  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/96933
+ 	* config/rs6000/rs6000.c (rs6000_expand_vector_init): Use direct move
+ 	instructions for vector construction with char/short types.
+ 	* config/rs6000/rs6000.md (p8_mtvsrwz_v16qisi2): New define_insn.
+ 	(p8_mtvsrd_v16qidi2): Likewise.
+ 
+ 2020-11-04  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* tree-vect-slp.c (vect_analyze_slp_instance): Moved load/store lanes
+ 	check to ...
+ 	* tree-vect-loop.c (vect_analyze_loop_2): ..Here
+ 
+ 2020-11-04  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 
+ 	* config/s390/s390.c (NR_C_MODES): Unhardcode.
+ 	(s390_alloc_pool): Use size_t for iterating from 0 to
+ 	NR_C_MODES.
+ 	(s390_add_constant): Likewise.
+ 	(s390_find_constant): Likewise.
+ 	(s390_dump_pool): Likewise.
+ 	(s390_free_pool): Likewise.
+ 
+ 2020-11-04  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 
+ 	* config/s390/s390.md (RRe): Remove.
+ 	(RXe): Remove.
+ 
+ 2020-11-04  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/97515
+ 	* gimple-range-cache.h (class ranger_cache): New prototypes plus
+ 	temporal cache pointer.
+ 	* gimple-range-cache.cc (struct range_timestamp): New.
+ 	(class temporal_cache): New.
+ 	(temporal_cache::temporal_cache): New.
+ 	(temporal_cache::~temporal_cache): New.
+ 	(temporal_cache::get_timestamp): New.
+ 	(temporal_cache::set_dependency): New.
+ 	(temporal_cache::temporal_value): New.
+ 	(temporal_cache::current_p): New.
+ 	(temporal_cache::set_timestamp): New.
+ 	(temporal_cache::set_always_current): New.
+ 	(ranger_cache::ranger_cache): Allocate the temporal cache.
+ 	(ranger_cache::~ranger_cache): Free temporal cache.
+ 	(ranger_cache::get_non_stale_global_range): New.
+ 	(ranger_cache::set_global_range): Add a timestamp.
+ 	(ranger_cache::register_dependency): New.  Add timestamp dependency.
+ 	* gimple-range.cc (gimple_ranger::range_of_range_op): Add operand
+ 	dependencies.
+ 	(gimple_ranger::range_of_phi): Ditto.
+ 	(gimple_ranger::range_of_stmt): Check if global range is stale, and
+ 	recalculate if so.
+ 
+ 2020-11-04  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* targhooks.c (default_zero_call_used_regs): Fix flag-name typo
+ 	in sorry.
+ 
+ 2020-11-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (vectorizable_phi): Adjust prototype.
+ 	* tree-vect-stmts.c (vect_transform_stmt): Adjust.
+ 	(vect_analyze_stmt): Pass cost_vec to vectorizable_phi.
+ 	* tree-vect-loop.c (vectorizable_phi): Do costing.
+ 
+ 2020-11-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97709
+ 	* tree-vect-loop.c (vectorizable_live_operation): Set
+ 	SSA_NAME_OCCURS_IN_ABNORMAL_PHI when necessary.
+ 
+ 2020-11-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/97690
+ 	* tree-ssa-phiopt.c (conditional_replacement): Also optimize
+ 	cond ? pow2p_cst : 0 as ((type) cond) << cst.
+ 
+ 2020-11-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.c (vectorizable_induction): Re-instantiate
+ 	previously removed CSE of SLP IVs.
+ 
+ 2020-11-04  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386-options.c (ix86_recompute_optlev_based_flags):
+ 	Fix Intel MCU psABI comment w.r.t DEFAULT_PCC_STRUCT_RETURN.
+ 
+ 2020-11-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR bootstrap/97666
+ 	* tree-vect-slp.c (vect_build_slp_tree_2): Revert previous
+ 	fix and instead adjust the memset.
+ 
+ 2020-11-04  Pat Bernardi  <bernardi@adacore.com>
+ 
+ 	* config/i386/i386elf.h (SUBTARGET_RETURN_IN_MEMORY): Remove.
+ 	(ASM_OUTPUT_ASCII): Likewise.
+ 	(DEFAULT_PCC_STRUCT_RETURN): Define.
+ 	* config/i386/i386.c (ix86_return_in_memory): Remove
+ 	SUBTARGET_RETURN_IN_MEMORY.
+ 
+ 2020-11-04  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/97540
+ 	* ira.c: (ira_setup_alts): Extract memory from operand only
+ 	for special memory constraint.
+ 	* recog.c (asm_operand_ok): Ditto.
+ 	* lra-constraints.c (process_alt_operands): MEM_P is
+ 	required for normal memory constraint.
+ 
+ 2020-11-04  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/97532
+ 	* lra-constraints.c (valid_address_p): Handle operand of
+ 	special memory constraint.
+ 	(process_address_1): Ditto.
+ 
+ 2020-11-03  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/97695
+ 	* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Fix ICE with
+ 	in dumping code.
+ 	(cgraph_node::remove): Save clone info before releasing it and pass it
+ 	to unregister.
+ 	* cgraph.h (symtab_node::unregister): Add clone_info parameter.
+ 	(cgraph_clone::unregister): Likewise.
+ 	* cgraphclones.c (cgraph_node::find_replacement): Copy clone info
+ 	* symtab-clones.cc (clone_infos_t::duplicate): Remove.
+ 	(clone_info::get_create): Simplify.
+ 	* symtab.c (symtab_node::unregister): Pass around clone info.
+ 	* varpool.c (varpool_node::remove): Update.
+ 
+ 2020-11-03  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* omp-low.c (scan_omp_for) <OpenACC>: Use proper location to
+ 	'inform' of enclosing parent compute construct.
+ 
+ 2020-11-03  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/97698
+ 	* cgraphclones.c (duplicate_thunk_for_node): Check that info is
+ 	non-NULL.
+ 
+ 2020-11-03  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (ix86_function_arg_regno_p): Use up to
+ 	SSE_REGPARM_MAX registers to pass function parameters
+ 	for 32bit Mach-O targets.
+ 	* config/i386/i386.h (X86_32_MMX_REGPARM_MAX): New macro.
+ 	(MMX_REGPARM_MAX): Use it.
+ 
+ 2020-11-03  Dennis Zhang  <dennis.zhang@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd-builtins.def (vget_lo_half): New entry.
+ 	(vget_hi_half): Likewise.
+ 	* config/aarch64/aarch64-simd.md (aarch64_vget_lo_halfv8bf): New entry.
+ 	(aarch64_vget_hi_halfv8bf): Likewise.
+ 	* config/aarch64/arm_neon.h (vget_low_bf16): New intrinsic.
+ 	(vget_high_bf16): Likewise.
+ 
+ 2020-11-03  Yang Yang  <yangyang305@huawei.com>
+ 
+ 	* cgraph.h (struct cgraph_simd_clone): Change field "simdlen" of
+ 	struct cgraph_simd_clone from unsigned int to poly_uint64.
+ 	* config/aarch64/aarch64.c
+ 	(aarch64_simd_clone_compute_vecsize_and_simdlen): adaptation of
+ 	operations on "simdlen".
+ 	* config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
+ 	Printf formats update.
+ 	* gengtype.c (main): Handle poly_uint64.
+ 	* omp-simd-clone.c (simd_clone_mangle): Likewise.Re
+ 	(simd_clone_adjust_return_type): Likewise.
+ 	(create_tmp_simd_array): Likewise.
+ 	(simd_clone_adjust_argument_types): Likewise.
+ 	(simd_clone_init_simd_arrays): Likewise.
+ 	(ipa_simd_modify_function_body): Likewise.
+ 	(simd_clone_adjust): Likewise.
+ 	(expand_simd_clones): Likewise.
+ 	* poly-int-types.h (vector_unroll_factor): New macro.
+ 	* poly-int.h (constant_multiple_p): Add two-argument versions.
+ 	* tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
+ 
+ 2020-11-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97623
+ 	* params.opt (-param=max-pre-hoist-insert-iterations): New.
+ 	* doc/invoke.texi (max-pre-hoist-insert-iterations): Document.
+ 	* tree-ssa-pre.c (insert): Do at most max-pre-hoist-insert-iterations
+ 	hoist insert iterations.
+ 
+ 2020-11-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/97579
+ 	* gimple-isel.cc (gimple_expand_vec_cond_expr): Use
+ 	the correct types for the vcond_mask/vec_cmp optab queries.
+ 
+ 2020-11-03  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-cache.cc (ssa_global_cache::get_global_range): Return
+ 	true if there was a previous range set.
+ 	(ranger_cache::ranger_cache): Take a gimple_ranger parameter.
+ 	(ranger_cache::set_global_range): Propagate the value if updating.
+ 	(ranger_cache::propagate_cache): Renamed from iterative_cache_update.
+ 	(ranger_cache::propagate_updated_value): New.  Split from:
+ 	(ranger_cache::fill_block_cache): Split out value propagator.
+ 	* gimple-range-cache.h (ssa_global_cache): Update prototypes.
+ 	(ranger_cache): Update prototypes.
+ 
+ 2020-11-03  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-cache.h (block_range_cache): Add new entry point.
+ 	(ranger_cache): Privatize global abnd block cache members.
+ 	* gimple-range-cache.cc (ssa_block_ranges::set_bb_range): Add bounds
+ 	check.
+ 	(ssa_block_ranges::set_bb_varying): Ditto.
+ 	(ssa_block_ranges::get_bb_range): Ditto.
+ 	(ssa_block_ranges::bb_range_p): Ditto.
+ 	(block_range_cache::get_block_ranges): Fix formatting.
+ 	(block_range_cache::query_block_ranges): New.
+ 	(block_range_cache::get_bb_range): Use Query_block_ranges.
+ 	(block_range_cache::bb_range_p): Ditto.
+ 	(ranger_cache::dump): New.
+ 	(ranger_cache::get_global_range): New.
+ 	(ranger_cache::set_global_range): New.
+ 	* gimple-range.cc (gimple_ranger::range_of_expr): Use new API.
+ 	(gimple_ranger::range_of_stmt): Ditto.
+ 	(gimple_ranger::export_global_ranges): Ditto.
+ 	(gimple_ranger::dump): Ditto.
+ 
+ 2020-11-03  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	* fold-const.c (getbyterep): Remove duplicated statement.
+ 
+ 2020-11-03  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	PR target/97205
+ 	* cfgexpand.c (align_local_variable): Make SSA_NAMEs
+ 	at least MODE_ALIGNED.
+ 	(expand_one_stack_var_at): Increase MEM_ALIGN for SSA_NAMEs.
+ 
+ 2020-11-03  Zhiheng Xie  <xiezhiheng@huawei.com>
+ 	    Nannan Zheng  <zhengnannan@huawei.com>
+ 
+ 	* config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
+ 	for AES/SHA/SM3/SM4 intrinsics.
+ 
+ 2020-11-03  Zhiheng Xie  <xiezhiheng@huawei.com>
+ 	    Nannan Zheng  <zhengnannan@huawei.com>
+ 
+ 	* config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
+ 	for compare intrinsics.
+ 
+ 2020-11-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	* dwarf2out.c (maybe_create_die_with_external_ref): Remove
+ 	hashtable entry.
+ 
+ 2020-11-03  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/arm_neon.h (vst2_lane_bf16, vst2q_lane_bf16)
+ 	(vst3_lane_bf16, vst3q_lane_bf16, vst4_lane_bf16)
+ 	(vst4q_lane_bf16): New intrinsics.
+ 	* config/arm/arm_neon_builtins.def: Touch it for:
+ 	__builtin_neon_vst2_lanev4bf, __builtin_neon_vst2_lanev8bf,
+ 	__builtin_neon_vst3_lanev4bf, __builtin_neon_vst3_lanev8bf,
+ 	__builtin_neon_vst4_lanev4bf,__builtin_neon_vst4_lanev8bf.
+ 
+ 2020-11-03  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/arm_neon.h (vld2_lane_bf16, vld2q_lane_bf16)
+ 	(vld3_lane_bf16, vld3q_lane_bf16, vld4_lane_bf16)
+ 	(vld4q_lane_bf16): Add intrinsics.
+ 	* config/arm/arm_neon_builtins.def: Touch for:
+ 	__builtin_neon_vld2_lanev4bf, __builtin_neon_vld2_lanev8bf,
+ 	__builtin_neon_vld3_lanev4bf, __builtin_neon_vld3_lanev8bf,
+ 	__builtin_neon_vld4_lanev4bf, __builtin_neon_vld4_lanev8bf.
+ 	* config/arm/iterators.md (VQ_HS): Add V8BF to the iterator.
+ 
+ 2020-11-03  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/arm_neon.h (vst1_bf16, vst1q_bf16): Add intrinsics.
+ 	* config/arm/arm_neon_builtins.def : Touch for:
+ 	__builtin_neon_vst1v4bf, __builtin_neon_vst1v8bf.
+ 
+ 2020-11-03  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (VAR14): Define macro.
+ 	* config/arm/arm_neon_builtins.def: Touch for:
+ 	__builtin_neon_vld1v4bf, __builtin_neon_vld1v8bf.
+ 	* config/arm/arm_neon.h (vld1_bf16, vld1q_bf16): Add intrinsics.
+ 
+ 2020-11-03  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/arm_neon.h (vst1_lane_bf16, vst1q_lane_bf16): Add
+ 	intrinsics.
+ 	* config/arm/arm_neon_builtins.def (STORE1LANE): Add v4bf, v8bf.
+ 
+ 2020-11-03  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/arm_neon_builtins.def: Add to LOAD1LANE v4bf, v8bf.
+ 	* config/arm/arm_neon.h (vld1_lane_bf16, vld1q_lane_bf16): Add
+ 	intrinsics.
+ 
+ 2020-11-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR bootstrap/97666
+ 	* tree-vect-slp.c (vect_build_slp_tree_2): Scale
+ 	allocation of skip_args by sizeof (bool).
+ 
+ 2020-11-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80928
+ 	* tree-vect-loop.c (vectorizable_induction): SLP vectorize
+ 	nested inductions.
+ 
+ 2020-11-03  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/97578
+ 	* ipa-inline-transform.c (maybe_materialize_called_clones): New
+ 	function.
+ 	(inline_transform): Use it.
+ 
+ 2020-11-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97678
+ 	* tree-vect-slp.c (vect_build_slp_tree_2): Do not track
+ 	the initial values of inductions when not nested.
+ 	* tree-vect-loop.c (vectorizable_induction): Look at
+ 	PHI node initial values again for SLP and not nested
+ 	inductions.  Handle LOOP_VINFO_MASK_SKIP_NITERS and cost
+ 	invariants.
+ 
+ 2020-11-03  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/sse.md (aes<aeswideklvariant>u8):
+ 	Do not use xmm_regs array.  Fix whitespace.
+ 
+ 2020-11-03  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386-expand.c (ix86_expand_builtin): Fix comment.
+ 
+ 2020-11-03  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* omp-low.c (scan_omp_for) <OpenACC>: Move earlier inconsistent
+ 	nested 'reduction' clauses checking.
+ 
+ 2020-11-03  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* omp-low.c (scan_omp_for) <OpenACC>: More precise diagnostics for
+ 	'gang', 'worker', 'vector' clauses with arguments only allowed in
+ 	'kernels' regions.
+ 
+ 2020-11-03  Kewen Lin  <linkw@gcc.gnu.org>
+ 
+ 	PR tree-optimization/96789
+ 	* function.h (struct function): New member unsigned pending_TODOs.
+ 	* passes.c (class pass_pre_slp_scalar_cleanup): New class.
+ 	(make_pass_pre_slp_scalar_cleanup): New function.
+ 	(pass_data_pre_slp_scalar_cleanup): New pass data.
+ 	* passes.def: (pass_pre_slp_scalar_cleanup): New pass, add
+ 	pass_fre and pass_dse as its children.
+ 	* timevar.def (TV_SCALAR_CLEANUP): New timevar.
+ 	* tree-pass.h (PENDING_TODO_force_next_scalar_cleanup): New
+ 	pending TODO flag.
+ 	(make_pass_pre_slp_scalar_cleanup): New declare.
+ 	* tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1):
+ 	Once any outermost loop gets unrolled, flag cfun pending_TODOs
+ 	PENDING_TODO_force_next_scalar_cleanup on.
+ 
+ 2020-11-02  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR middle-end/97267
+ 	* calls.h (maybe_complain_about_tail_call): Declare.
+ 	* calls.c (maybe_complain_about_tail_call): Make global.
+ 	(can_implement_as_sibling_call_p): Delete reg_parm_stack_space
+ 	param.  Adjust caller.  Move REG_PARM_STACK_SPACE check to..
+ 	* config/i386/i386.c (ix86_function_ok_for_sibcall): ..here.
+ 
+ 2020-11-02  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	* ira.c (ira_remove_scratches): Rename to remove_scratches.  Make
+ 	it static and returning flag of any change.
+ 	(ira.c): Call ira_expand_reg_equiv in case of removing scratches.
+ 
+ 2020-11-02  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/97140
+ 	* config/i386/i386-expand.c (ix86_expand_builtin): Require MMX
+ 	for __builtin_ia32_maskmovq.
+ 
+ 2020-11-02  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* doc/invoke.texi (-Wstringop-overflow): Correct default setting.
+ 	(-Wstringop-overread): Move past -Wstringop-overflow.
+ 
+ 2020-11-02  François-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+ 
+ 	PR bootstrap/57076
+ 	* Makefile.in (gcc-vers.texi): Quote @, { and }.
+ 
+ 2020-11-02  Carl Love  <cel@us.ibm.com>
+ 
+ 	PR target/93449
+ 	* config/rs6000/altivec.h (__builtin_bcdadd, __builtin_bcdadd_lt,
+ 	__builtin_bcdadd_eq, __builtin_bcdadd_gt, __builtin_bcdadd_ofl,
+ 	__builtin_bcdadd_ov, __builtin_bcdsub, __builtin_bcdsub_lt,
+ 	__builtin_bcdsub_eq, __builtin_bcdsub_gt, __builtin_bcdsub_ofl,
+ 	__builtin_bcdsub_ov, __builtin_bcdinvalid, __builtin_bcdmul10,
+ 	__builtin_bcddiv10, __builtin_bcd2dfp, __builtin_bcdcmpeq,
+ 	__builtin_bcdcmpgt, __builtin_bcdcmplt, __builtin_bcdcmpge,
+ 	__builtin_bcdcmple): Add defines.
+ 	* config/rs6000/altivec.md: Add UNSPEC_BCDSHIFT.
+ 	(BCD_TEST): Add le, ge to code iterator.
+ 	Add VBCD mode iterator.
+ 	(bcd<bcd_add_sub>_test, *bcd<bcd_add_sub>_test2,
+ 	bcd<bcd_add_sub>_<code>, bcd<bcd_add_sub>_<code>): Add mode to name.
+ 	Change iterator from V1TI to VBCD.
+ 	(*bcdinvalid_<mode>, bcdshift_v16qi): New define_insn.
+ 	(bcdinvalid_<mode>, bcdmul10_v16qi, bcddiv10_v16qi): New define.
+ 	* config/rs6000/dfp.md (dfp_denbcd_v16qi_inst): New define_insn.
+ 	(dfp_denbcd_v16qi): New define_expand.
+ 	* config/rs6000/rs6000-builtin.def (BU_P8V_MISC_1): New define.
+ 	(BCDADD): Replaced with BCDADD_V1TI and BCDADD_V16QI.
+ 	(BCDADD_LT): Replaced with BCDADD_LT_V1TI and BCDADD_LT_V16QI.
+ 	(BCDADD_EQ): Replaced with BCDADD_EQ_V1TI and BCDADD_EQ_V16QI.
+ 	(BCDADD_GT): Replaced with BCDADD_GT_V1TI and BCDADD_GT_V16QI.
+ 	(BCDADD_OV): Replaced with BCDADD_OV_V1TI and BCDADD_OV_V16QI.
+ 	(BCDSUB_V1TI, BCDSUB_V16QI, BCDSUB_LT_V1TI, BCDSUB_LT_V16QI,
+ 	BCDSUB_LE_V1TI, BCDSUB_LE_V16QI, BCDSUB_EQ_V1TI, BCDSUB_EQ_V16QI,
+ 	BCDSUB_GT_V1TI, BCDSUB_GT_V16QI, BCDSUB_GE_V1TI, BCDSUB_GE_V16QI,
+ 	BCDSUB_OV_V1TI, BCDSUB_OV_V16QI, BCDINVALID_V1TI, BCDINVALID_V16QI,
+ 	BCDMUL10_V16QI, BCDDIV10_V16QI, DENBCD_V16QI): New builtin definitions.
+ 	(BCDADD, BCDADD_LT, BCDADD_EQ, BCDADD_GT, BCDADD_OV, BCDSUB, BCDSUB_LT,
+ 	BCDSUB_LE, BCDSUB_EQ, BCDSUB_GT, BCDSUB_GE, BCDSUB_OV, BCDINVALID,
+ 	BCDMUL10, BCDDIV10, DENBCD): New overload definitions.
+ 	* config/rs6000/rs6000-call.c (P8V_BUILTIN_VEC_BCDADD, P8V_BUILTIN_VEC_BCDADD_LT,
+ 	P8V_BUILTIN_VEC_BCDADD_EQ, P8V_BUILTIN_VEC_BCDADD_GT, P8V_BUILTIN_VEC_BCDADD_OV,
+ 	P8V_BUILTIN_VEC_BCDINVALID, P9V_BUILTIN_VEC_BCDMUL10, P8V_BUILTIN_VEC_DENBCD.
+ 	P8V_BUILTIN_VEC_BCDSUB, P8V_BUILTIN_VEC_BCDSUB_LT, P8V_BUILTIN_VEC_BCDSUB_LE,
+ 	P8V_BUILTIN_VEC_BCDSUB_EQ, P8V_BUILTIN_VEC_BCDSUB_GT, P8V_BUILTIN_VEC_BCDSUB_GE,
+ 	P8V_BUILTIN_VEC_BCDSUB_OV): New overloaded specifications.
+ 	(CODE_FOR_bcdadd): Replaced with CODE_FOR_bcdadd_v16qi and CODE_FOR_bcdadd_v1ti.
+ 	(CODE_FOR_bcdadd_lt): Replaced with CODE_FOR_bcdadd_lt_v16qi and CODE_FOR_bcdadd_lt_v1ti.
+ 	(CODE_FOR_bcdadd_eq): Replaced with CODE_FOR_bcdadd_eq_v16qi and CODE_FOR_bcdadd_eq_v1ti.
+ 	(CODE_FOR_bcdadd_gt): Replaced with CODE_FOR_bcdadd_gt_v16qi and CODE_FOR_bcdadd_gt_v1ti.
+ 	(CODE_FOR_bcdsub): Replaced with CODE_FOR_bcdsub_v16qi and CODE_FOR_bcdsub_v1ti.
+ 	(CODE_FOR_bcdsub_lt): Replaced with CODE_FOR_bcdsub_lt_v16qi and CODE_FOR_bcdsub_lt_v1ti.
+ 	(CODE_FOR_bcdsub_eq): Replaced with CODE_FOR_bcdsub_eq_v16qi and CODE_FOR_bcdsub_eq_v1ti.
+ 	(CODE_FOR_bcdsub_gt): Replaced with CODE_FOR_bcdsub_gt_v16qi and CODE_FOR_bcdsub_gt_v1ti.
+ 	(rs6000_expand_ternop_builtin):  Add CODE_FOR_dfp_denbcd_v16qi to else if.
+ 	* doc/extend.texi: Add documentation for new builtins.
+ 
+ 2020-11-02  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* tree.c (cache_integer_cst): Fixup pointer caching to match
+ 	wide_int_to_type_1's expectations.  Add comment.
+ 
+ 2020-11-02  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* tree.h (id_equal): Call the symetric predicate with swapped
+ 	arguments.
+ 
+ 2020-11-02  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* print-tree.c (print_node): Display all the operands of a call
+ 	expr.
+ 
+ 2020-11-02  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	* config/rs6000/vsx.md (*vsx_extract_<mode>_store_p9): Add hint *
+ 	to 2nd alternative of the 1st scratch.
+ 
+ 2020-11-02  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	PR target/97638
+ 	* config/aarch64/aarch64-bti-insert.c (aarch64_pac_insn_p): Update
+ 	return value on INSN_P check.
+ 
+ 2020-11-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree.h (build_real_from_wide): Declare.
+ 	* tree.c (build_real_from_wide): New function.
+ 	* tree-vect-slp.c (vect_build_slp_tree_2): Remove
+ 	restriction on induction vectorization, represent
+ 	the initial value.
+ 	* tree-vect-loop.c (vect_model_induction_cost): Inline ...
+ 	(vectorizable_induction): ... here.  Rewrite SLP
+ 	code generation.
+ 
+ 2020-11-02  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* dbgcnt.def (ipa_cp_values): New counter.
+ 	(ipa_cp_vr): Likewise.
+ 	* ipa-cp.c (decide_about_value): Check and bump ipa_cp_values debug
+ 	counter.
+ 	(decide_whether_version_node): Likewise.
+ 	(ipcp_store_vr_results):Check and bump ipa_cp_vr debug counter.
+ 
+ 2020-11-02  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/arm.c (arm_thumb1_mi_thunk): Build mi_delta in r3 and
+ 	do not emit function address and delta when -mpure-code is used.
+ 
+ 2020-11-02  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/thumb1.md (thumb1_movsi_insn): Call
+ 	thumb1_gen_const_int_print.
+ 	* config/arm/arm-protos.h (thumb1_gen_const_int_print): Add
+ 	prototype.
+ 	* config/arm/arm.c (thumb1_gen_const_int_print): New.
+ 
+ 2020-11-02  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/arm.c (thumb1_const_rtl, thumb1_const_print): New
+ 	classes.
+ 	(thumb1_gen_const_int): Rename to ...
+ 	(thumb1_gen_const_int_1): ... New helper function. Add capability
+ 	to emit either RTL or asm, improve generated code.
+ 	(thumb1_gen_const_int_rtl): New function.
+ 	* config/arm/arm-protos.h (thumb1_gen_const_int): Rename to
+ 	thumb1_gen_const_int_rtl.
+ 	* config/arm/thumb1.md: Call thumb1_gen_const_int_rtl instead
+ 	of thumb1_gen_const_int.
+ 
+ 2020-11-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97558
+ 	* tree-vect-loop.c (vectorizable_reduction): For nested SLP
+ 	cycles compute invariant operands vector type.
+ 
+ 2020-11-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97558
+ 	* tree-vect-loop.c (vect_fixup_scalar_cycles_with_patterns):
+ 	Check for any mismatch in pattern vs. non-pattern and dissolve
+ 	the group if there is one.
+ 	* tree-vect-slp.c (vect_analyze_slp_instance): Avoid
+ 	analyzing not relevant reductions.
+ 	(vect_analyze_slp): Avoid analyzing not relevant reduction
+ 	groups.
+ 
+ 2020-11-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97650
+ 	* tree-vect-slp.c (vect_get_and_check_slp_defs): Check
+ 	for SSA_NAME before checking SSA_NAME_IS_DEFAULT_DEF.
+ 
+ 2020-11-02  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.c
+ 	(riscv_subset_list::parse_multiletter_ext): Checking multiletter
+ 	extension has more than 1 letter.
+ 
+ 2020-11-02  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config.gcc (riscv*-*-*): Handle --with-multilib-generator.
+ 	* configure: Regen.
+ 	* configure.ac: Add --with-multilib-generator.
+ 	* config/riscv/multilib-generator: Exit when parsing arch string error.
+ 	* config/riscv/t-withmultilib-generator: New.
+ 	* doc/install.texi: Document --with-multilib-generator.
+ 
+ 2020-11-02  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/96770
+ 	* config/arm/arm.c (thumb_legitimate_constant_p): Accept
+ 	(symbol_ref + addend) when literal pool is disabled.
+ 	(arm_valid_symbolic_address_p): Add support for thumb-1 without
+ 	MOVT/MOVW.
+ 	* config/arm/thumb1.md (*thumb1_movsi_insn): Accept (symbol_ref +
+ 	addend) in the pure-code alternative.
+ 
+ 2020-11-02  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/96967
+ 	* config/arm/arm.c (thumb_legitimate_constant_p): Add support for
+ 	disabled literal pool in thumb-1.
+ 	* config/arm/thumb1.md (thumb1_movsi_symbol_ref): Remove.
+ 	(*thumb1_movsi_insn): Add support for SYMBOL_REF with -mpure-code.
+ 
+ 2020-11-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/host-darwin.c: Align pch_address_space to 16384.
+ 
+ 2020-11-01  Pat Bernardi  <bernardi@adacore.com>
+ 
+ 	* config/i386/i386.c (ix86_expand_prologue): Set the stack usage to 0
+ 	for naked functions.
+ 
+ 2020-11-01  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR ipa/97660
+ 	* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Don't call
+ 	clone_info::get when cgraph_node::get returns NULL.
+ 
+ 2020-10-31  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* Makefile.in: (OBJS): Add symtab-clones.o
+ 	(GTFILES): Add symtab-clones.h
+ 	* cgraph.c: Include symtab-clones.h.
+ 	(cgraph_edge::resolve_speculation): Fix formating
+ 	(cgraph_edge::redirect_call_stmt_to_callee): Update.
+ 	(cgraph_update_edges_for_call_stmt): Update
+ 	(release_function_body): Fix formating.
+ 	(cgraph_node::remove): Fix formating.
+ 	(cgraph_node::dump): Fix formating.
+ 	(cgraph_node::get_availability): Fix formating.
+ 	(cgraph_node::call_for_symbol_thunks_and_aliases): Fix formating.
+ 	(set_const_flag_1): Fix formating.
+ 	(set_pure_flag_1): Fix formating.
+ 	(cgraph_node::can_remove_if_no_direct_calls_p): Fix formating.
+ 	(collect_callers_of_node_1): Fix formating.
+ 	(clone_of_p): Update.
+ 	(cgraph_node::verify_node): Update.
+ 	(cgraph_c_finalize): Call clone_info::release ().
+ 	* cgraph.h (struct cgraph_clone_info): Move to symtab-clones.h.
+ 	(cgraph_node): Remove clone_info.
+ 	(symbol_table): Add m_clones.
+ 	* cgraphclones.c: Include symtab-clone.h.
+ 	(duplicate_thunk_for_node): Update.
+ 	(cgraph_node::create_clone): Update.
+ 	(cgraph_node::create_virtual_clone): Update.
+ 	(cgraph_node::find_replacement): Update.
+ 	(cgraph_node::materialize_clone): Update.
+ 	* gengtype.c (open_base_files): Include symtab-clones.h.
+ 	* ipa-cp.c: Include symtab-clones.h.
+ 	(initialize_node_lattices): Update.
+ 	(want_remove_some_param_p): Update.
+ 	(create_specialized_node): Update.
+ 	* ipa-fnsummary.c: Include symtab-clones.h.
+ 	(ipa_fn_summary_t::duplicate): Update.
+ 	* ipa-modref.c: Include symtab-clones.h.
+ 	(update_signature): Update.
+ 	* ipa-param-manipulation.c: Include symtab-clones.h.
+ 	(ipa_param_body_adjustments::common_initialization): Update.
+ 	* ipa-prop.c: Include symtab-clones.h.
+ 	(adjust_agg_replacement_values): Update.
+ 	(ipcp_get_parm_bits): Update.
+ 	(ipcp_update_bits): Update.
+ 	(ipcp_update_vr): Update.
+ 	* ipa-sra.c: Include symtab-clones.h.
+ 	(process_isra_node_results): Update.
+ 	(disable_unavailable_parameters): Update.
+ 	* lto-cgraph.c: Include symtab-clone.h.
+ 	(output_cgraph_opt_summary_p): Update.
+ 	(output_node_opt_summary): Update.
+ 	(input_node_opt_summary): Update.
+ 	* symtab-clones.cc: New file.
+ 	* symtab-clones.h: New file.
+ 	* tree-inline.c (expand_call_inline): Update.
+ 	(update_clone_info): Update.
+ 	(tree_function_versioning): Update.
+ 
+ 2020-10-31  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (modref_summary::dump): Dump writes_errno.
+ 	(parm_map_for_arg): Break out from ...
+ 	(merge_call_side_effects): ... here.
+ 	(get_access_for_fnspec): New function.
+ 	(process_fnspec): New function.
+ 	(analyze_call): Use it.
+ 	(analyze_stmt): Update.
+ 	(analyze_function): Initialize writes_errno.
+ 	(modref_summaries::duplicate): Duplicate writes_errno.
+ 	* ipa-modref.h (struct modref_summary): Add writes_errno.
+ 	* tree-ssa-alias.c (call_may_clobber_ref_p_1): Check errno.
+ 
+ 2020-10-30  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (glibc_supports_ieee_128bit): New helper
+ 	function.
+ 	(rs6000_option_override_internal): Call it.
+ 
+ 2020-10-30  Qing Zhao  <qing.zhao@oracle.com>
+ 	    H.J.Lu  <hjl.tools@gmail.com>
+ 
+ 	* common.opt: Add new option -fzero-call-used-regs
+ 	* config/i386/i386.c (zero_call_used_regno_p): New function.
+ 	(zero_call_used_regno_mode): Likewise.
+ 	(zero_all_vector_registers): Likewise.
+ 	(zero_all_st_registers): Likewise.
+ 	(zero_all_mm_registers): Likewise.
+ 	(ix86_zero_call_used_regs): Likewise.
+ 	(TARGET_ZERO_CALL_USED_REGS): Define.
+ 	* df-scan.c (df_epilogue_uses_p): New function.
+ 	(df_get_exit_block_use_set): Replace EPILOGUE_USES with
+ 	df_epilogue_uses_p.
+ 	* df.h (df_epilogue_uses_p): Declare.
+ 	* doc/extend.texi: Document the new zero_call_used_regs attribute.
+ 	* doc/invoke.texi: Document the new -fzero-call-used-regs option.
+ 	* doc/tm.texi: Regenerate.
+ 	* doc/tm.texi.in (TARGET_ZERO_CALL_USED_REGS): New hook.
+ 	* emit-rtl.h (struct rtl_data): New field must_be_zero_on_return.
+ 	* flag-types.h (namespace zero_regs_flags): New namespace.
+ 	* function.c (gen_call_used_regs_seq): New function.
+ 	(class pass_zero_call_used_regs): New class.
+ 	(pass_zero_call_used_regs::execute): New function.
+ 	(make_pass_zero_call_used_regs): New function.
+ 	* optabs.c (expand_asm_reg_clobber_mem_blockage): New function.
+ 	* optabs.h (expand_asm_reg_clobber_mem_blockage): Declare.
+ 	* opts.c (zero_call_used_regs_opts): New structure array
+ 	initialization.
+ 	(parse_zero_call_used_regs_options): New function.
+ 	(common_handle_option): Handle -fzero-call-used-regs.
+ 	* opts.h (zero_call_used_regs_opts): New structure array.
+ 	* passes.def: Add new pass pass_zero_call_used_regs.
+ 	* recog.c (valid_insn_p): New function.
+ 	* recog.h (valid_insn_p): Declare.
+ 	* resource.c (init_resource_info): Replace EPILOGUE_USES with
+ 	df_epilogue_uses_p.
+ 	* target.def (zero_call_used_regs): New hook.
+ 	* targhooks.c (default_zero_call_used_regs): New function.
+ 	* targhooks.h (default_zero_call_used_regs): Declare.
+ 	* tree-pass.h (make_pass_zero_call_used_regs): Declare.
+ 
+ 2020-10-30  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	* lra.c (get_scratch_reg): New function.
+ 	(remove_scratches_1): Rename remove_insn_scratches.  Use
+ 	ira_remove_insn_scratches and get_scratch_reg.
+ 	(remove_scratches): Do not
+ 	initialize scratches, scratch_bitmap, and scratch_operand_bitmap.
+ 	(lra): Call ira_restore_scratches instead of restore_scratches.
+ 	(struct sloc, sloc_t, scratches, scratch_bitmap)
+ 	(scratch_operand_bitmap, lra_former_scratch_p)
+ 	(lra_former_scratch_operand_p, lra_register_new_scratch_op)
+ 	(restore_scratches): Move them to ...
+ 	* ira.c: ... here.
+ 	(former_scratch_p, former_scratch_operand_p): Rename to
+ 	ira_former_scratch_p and ira_former_scratch_operand_p.
+ 	(contains_X_constraint_p): New function.
+ 	(register_new_scratch_op): Rename to ira_register_new_scratch_op.
+ 	Change it to work for IRA and LRA.
+ 	(restore_scratches): Rename to ira_restore_scratches.
+ 	(get_scratch_reg, ira_remove_insn_scratches): New functions.
+ 	(ira): Call ira_remove_scratches if we use LRA.
+ 	* ira.h (ira_former_scratch_p, ira_former_scratch_operand_p): New
+ 	prototypes.
+ 	(ira_register_new_scratch_op, ira_restore_scratches): New prototypes.
+ 	(ira_remove_insn_scratches): New prototype.
+ 	* lra-int.h (lra_former_scratch_p, lra_former_scratch_operand_p):
+ 	Remove prototypes.
+ 	(lra_register_new_scratch_op): Ditto.
+ 	* lra-constraints.c: Rename lra_former_scratch_p and
+ 	lra_former_scratch_p to ira_former_scratch_p and to
+ 	ira_former_scratch_p.
+ 	* lra-remat.c: Ditto.
+ 	* lra-spills.c: Rename lra_former_scratch_p to ira_former_scratch_p.
+ 
+ 2020-10-30  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/97556
+ 	* builtins.c (access_ref::add_offset): Cap offset lower bound
+ 	to at most the the upper bound.
+ 
+ 2020-10-30  Jan Hubicka  <jh@suse.cz>
+ 
+ 	PR pch/97593
+ 	* cgraph.c (cgraph_node::create_thunk): Register thunk as early during
+ 	parsing.
+ 	* cgraphunit.c (analyze_functions): Call
+ 	thunk_info::process_early_thunks.
+ 	* symtab-thunks.cc (struct unprocessed_thunk): New struct.
+ 	(thunks): New static variable.
+ 	(thunk_info::register_early): New member function.
+ 	(thunk_info::process_early_thunks): New member function.
+ 	* symtab-thunks.h (thunk_info::register_early): Declare.
+ 	(thunk_info::process_early_thunks): Declare.
+ 
+ 2020-10-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97623
+ 	* tree-ssa-pre.c (insert): First do hoist insertion in
+ 	a backward walk.
+ 
+ 2020-10-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97626
+ 	* tree-vect-slp.c (vect_slp_analyze_node_operations):
+ 	Exchange the lvisited hash-set for a vector, roll back
+ 	recursive adds to visited when analysis failed.
+ 	(vect_slp_analyze_operations): Likewise.
+ 
+ 2020-10-30  Zhiheng Xie  <xiezhiheng@huawei.com>
+ 	    Nannan Zheng  <zhengnannan@huawei.com>
+ 
+ 	* config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
+ 	for conversion intrinsics.
+ 
+ 2020-10-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97633
+ 	* tree-vect-slp.c (): Update backedges in single-node cycles.
+ 	Optimize processing of externals.
+ 
+ 2020-10-30  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR target/96998
+ 	* combine.c (make_extraction): Also handle shifts written as
+ 	(mult x 2^n), avoid creating an extract rtx for these.
+ 	* config/aarch64/aarch64.c (aarch64_is_extend_from_extract): Delete.
+ 	(aarch64_classify_index): Remove extract-based address handling.
+ 	(aarch64_strip_extend): Likewise.
+ 	(aarch64_rtx_arith_op_extract_p): Likewise, remove now-unused parameter.
+ 	Update callers...
+ 	(aarch64_rtx_costs): ... here.
+ 
+ 2020-10-30  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/rs6000/vxworks.h (TARGET_OS_CPP_BUILTINS): Also
+ 	builtin_define __ppc and __ppc__ for VxWorks 7.
+ 
+ 2020-10-30  Olivier Hainque  <hainque@adacore.com>
+ 	    Douglas Rupp  <rupp@adacore.com>
+ 	    Pat Bernardi  <bernardi@adacore.com>
+ 
+ 	* config.gcc: Adjust the ix86/x86_64-wrs-vxworks filters
+ 	to apply to VxWorks 7 as well.
+ 	* config/i386/t-vxworks (MULTILIB_OPTIONS, MULTILIB_DIRNAMES):
+ 	Remove the fPIC multilib and add one for the large code model
+ 	on x86_64.
+ 	* config/i386/vxworks.h: Separate sections for TARGET_VXWORKS7,
+ 	other variants and common bits.
+ 	(TARGET_OS_CPP_BUILTINS): Augment to support a range of CPU
+ 	families. Leverage VX_CPU_PREFIX.
+ 	(CC1_SPEC): Add definition.
+ 	(STACK_CHECK_PROTECT): Use conditional expression instead of
+ 	heavier to read conditioned macro definitions.
+ 
+ 2020-10-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimplify.c (gimplify_scan_omp_clauses): Force
+ 	OMP_CLAUSE_ALLOCATE_ALLOCATOR into a temporary if it is non-NULL and
+ 	non-constant.
+ 	(gimplify_omp_for): Only put allocate on inner taskloop if lastprivate
+ 	for the same variable is going to be put there, and in that case
+ 	if the OMP_CLAUSE_ALLOCATE_ALLOCATOR is non-NULL non-constant, make
+ 	the allocator firstprivate on task.
+ 
+ 2020-10-30  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Allow
+ 	long double type to be changed for C/C++ if glibc 2.32 or newer.
+ 	(rs6000_invalid_binary_op): Update error messages about mixing IBM
+ 	long double and IEEE 128-bit.
+ 
+ 2020-10-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.c (compute_avail): Free operands consistently.
+ 	* tree-vect-loop.c (vectorizable_phi): Make sure all operand
+ 	defs vectors are released.
+ 
+ 2020-10-29  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* vec.h (vec<T, va_heap, vl_ptr>::copy): Pass mem stat info.
+ 
+ 2020-10-29  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* wide-int.h (trailing_wide_ints <N>): Turn len to array of structures
+ 	so it does not imply typeless storage.
+ 	(trailing_wide_ints <N>::operator): update
+ 	(trailing_wide_ints <N>::operator []): Update.
+ 
+ 2020-10-29  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* ginclude/stdbool.h [__STDC_VERSION__ > 201710L] (true, false):
+ 	Define with type _Bool.
+ 
+ 2020-10-29  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/97505
+ 	* vr-values.c (vr_values::extract_range_basic): Enable
+ 	trap again for everything except UBSAN builtins.
+ 
+ 2020-10-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vectorizer.h (vect_transform_slp_perm_load): Take an
+ 	optional extra parameter.
+ 	* tree-vect-slp.c (vect_transform_slp_perm_load): Calculate
+ 	the number of loads as well as the number of permutes, taking
+ 	the counting loop from...
+ 	* tree-vect-stmts.c (vect_model_load_cost): ...here.  Use the
+ 	value computed by vect_transform_slp_perm_load for ncopies.
+ 
+ 2020-10-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/97508
+ 	* langhooks.c (lhd_begin_section): Call get_section with
+ 	not_existing = true.
+ 	* output.h (get_section): Add new argument.
+ 	* varasm.c (get_section): Fail when NOT_EXISTING is true
+ 	and a section already exists.
+ 	* ipa-cp.c (ipcp_write_summary): Remove.
+ 	(ipcp_read_summary): Likewise.
+ 	* ipa-fnsummary.c (ipa_fn_summary_read): Always read jump
+ 	functions summary.
+ 	(ipa_fn_summary_write): Always stream it.
+ 
+ 2020-10-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_bb_slp_scalar_cost): Pass
+ 	SLP_TREE_VECTYPE to record_stmt_cost.
+ 
+ 2020-10-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	* optc-gen.awk: Check that params start with -param=.
+ 	* params.opt: Fix ipa-jump-function-lookups.
+ 
+ 2020-10-29  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* tree-ssa-math-opts.c (sincos_stats): Add conv_removed.
+ 	(execute_cse_conv_1): New.
+ 	(execute_cse_sincos_1): Call it.  Fix return within
+ 	FOR_EACH_IMM_USE_STMT.
+ 	(pass_cse_sincos::execute): Report conv_inserted.
+ 
+ 2020-10-29  Xuepeng Guo  <xuepeng.guo@intel.com>
+ 	    Hongyu Wang  <hongyu.wang@intel.com>
+ 	    Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h (get_available_features):
+ 	Detect KL, AESKLE and WIDEKL features.
+ 	* common/config/i386/i386-common.c
+ 	(OPTION_MASK_ISA_KL_SET): New.
+ 	(OPTION_MASK_ISA_WIDEKL_SET): Likewise.
+ 	(OPTION_MASK_ISA_KL_UNSET): Likewise.
+ 	(OPTION_MASK_ISA_WIDEKL_UNSET): Likewise.
+ 	(OPTION_MASK_ISA2_AVX2_UNSET): Likewise.
+ 	(OPTION_MASK_ISA2_AVX_UNSET): Likewise.
+ 	(OPTION_MASK_ISA2_SSE4_2_UNSET): Likewise.
+ 	(OPTION_MASK_ISA2_SSE4_1_UNSET): Likewise.
+ 	(OPTION_MASK_ISA2_SSE4_UNSET): Likewise.
+ 	(OPTION_MASK_ISA2_SSSE3_UNSET): Likewise.
+ 	(OPTION_MASK_ISA2_SSE3_UNSET): Likewise.
+ 	(OPTION_MASK_ISA2_SSE2_UNSET): Likewise.
+ 	(OPTION_MASK_ISA2_SSE_UNSET): Likewise.
+ 	(ix86_handle_option): Handle kl and widekl, add dependency chain
+ 	for KL and SSE2.
+ 	* common/config/i386/i386-cpuinfo.h (enum processor_features):
+ 	(FEATURE_KL, FEATURE_AESKLE, FEATURE_WIDEKL): New.
+ 	* common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY
+ 	for KL, AESKLE and WIDEKL.
+ 	* config.gcc: Add keylockerintrin.h.
+ 	* doc/invoke.texi: Document new option -mkl and -mwidekl.
+ 	* doc/extend.texi: Document kl and widekl.
+ 	* config/i386/cpuid.h (bit_KL, bit_AESKLE, bit_WIDEKL): New.
+ 	* config/i386/i386-builtin-types.def ((UINT, UINT, V2DI, V2DI, PVOID),
+ 	(UINT, UINT, V2DI, PVOID), (VOID, V2DI, V2DI, V2DI, UINT),
+ 	(UINT8, PV2DI, V2DI, PCVOID), (UINT8, PV2DI, PCV2DI, PCVOID)): New
+ 	function types.
+ 	* config/i386/i386-builtin.def: Add
+ 	__builtin_ia32_loadiwkey,
+ 	__builtin_ia32_aesdec128kl_u8,
+ 	__builtin_ia32_aesdec256kl_u8,
+ 	__builtin_ia32_aesenc128kl_u8,
+ 	__builtin_ia32_aesenc256kl_u8,
+ 	__builtin_ia32_aesdecwide128kl_u8,
+ 	__builtin_ia32_aesdecwide256kl_u8,
+ 	__builtin_ia32_aesencwide128kl_u8,
+ 	__builtin_ia32_aesencwide256kl_u8,
+ 	__builtin_ia32_encodekey128_u32,
+ 	__builtin_ia32_encodekey256_u32.
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Handle
+ 	kl and widekl.
+ 	* config/i386/i386-options.c (isa2_opts): Add -mkl and -mwidekl.
+ 	(ix86_option_override_internal): Handle KL and WIDEKL.
+ 	(ix86_valid_target_attribute_inner_p): Add attribute for kl and widekl.
+ 	* config/i386/i386-expand.c
+ 	(ix86_expand_builtin): Expand Keylocker Builtins.
+ 	* config/i386/i386.h (TARGET_KL): New.
+ 	(TARGET_KL_P): Likewise.
+ 	(TARGET_WIDEKL): Likewise.
+ 	(TARGET_WIDEKL_P): Likewise.
+ 	(PTA_KL): Likewise.
+ 	(PTA_WIDEKL): Likewise.
+ 	(PTA_TIGERLAKE): Add PTA_KL, PTA_WIDEKL.
+ 	(PTA_ALDERLAKE): Likewise.
+ 	* config/i386/i386.opt: Add new option mkl and mwidekl.
+ 	* config/i386/keylockerintrin.h: New header file for Keylocker.
+ 	* config/i386/immintrin.h: Include keylockerintrin.h.
+ 	* config/i386/predicates.md (encodekey128_operation): New
+ 	predicate.
+ 	(encodekey256_operation): Likewise.
+ 	(aeswidekl_operation): Likewise.
+ 	* config/i386/sse.md (UNSPECV_LOADIWKEY): New.
+ 	(UNSPECV_AESDEC128KLU8): Likewise.
+ 	(UNSPECV_AESENC128KLU8): Likewise.
+ 	(UNSPECV_AESDEC256KLU8): Likewise.
+ 	(UNSPECV_AESENC256KLU8): Likewise.
+ 	(UNSPECV_AESDECWIDE128KLU8): Likewise.
+ 	(UNSPECV_AESENCWIDE128KLU8): Likewise.
+ 	(UNSPECV_AESDECWIDE256KLU8): Likewise.
+ 	(UNSPECV_AESENCWIDE256KLU8): Likewise.
+ 	(UNSPECV_ENCODEKEY128U32): Likewise.
+ 	(UNSPECV_ENCODEKEY256U32): Likewise.
+ 	(encodekey128u32): New expander.
+ 	(encodekey256u32): Likewise.
+ 	(aes<aeswideklvariant>u8): Likewise.
+ 	(loadiwkey): New insn pattern.
+ 	(*encodekey128u32): Likewise.
+ 	(*encodekey256u32): Likewise.
+ 	(aes<aesklvariant>u8): Likewise.
+ 	(*aes<aeswideklvariant>u8): Likewise.
+ 
+ 2020-10-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_build_slp_tree_2): Allow splatting
+ 	not vectorizable loads.
+ 	(vect_build_slp_instance): Amend dumping with address.
+ 	(vect_slp_convert_to_external): Likewise.
+ 
+ 2020-10-29  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/97609
+ 	* gimple-range-cache.cc (non_null_ref::process_name): Call
+ 	infer_nonnull_range directly instead of infer_value_range.
+ 
+ 2020-10-29  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (ANALYZER_OBJS): Add analyzer/complexity.o.
+ 
+ 2020-10-28  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/97573
+ 	* doc/invoke.texi: Document -Wdeprecated-enum-enum-conversion
+ 	and -Wdeprecated-enum-float-conversion.  -Wenum-conversion is
+ 	no longer C/ObjC only.
+ 
+ 2020-10-28  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/97457
+ 	* value-range.cc (irange::set): Don't decay POLY_INT_CST ranges
+ 	to integer ranges.
+ 
+ 2020-10-28  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/vsx.md(xxgenpcvm_<mode>_internal): Remove TARGET_64BIT.
+ 
+ 2020-10-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_slp_analyze_node_operations_1): Dump
+ 	when shared vectype update fails.
+ 
+ 2020-10-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_get_and_check_slp_defs): For skipped
+ 	args just push NULLs and vect_uninitialized_def.
+ 	(vect_build_slp_tree_2): Allocate skip_args for all ops
+ 	and pass it down to vect_get_and_check_slp_defs.
+ 
+ 2020-10-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97615
+ 	* tree-vect-slp.c (vect_build_slp_tree_2): Do not build
+ 	an external from pattern defs.
+ 
+ 2020-10-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_optimize_slp): Fix iteration over
+ 	all loads.
+ 
+ 2020-10-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_build_slp_instance): Split the store
+ 	group at the failure boundary and also re-analyze a large enough
+ 	matching rest.
+ 
+ 2020-10-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-data-refs.c (vect_slp_analyze_node_alignment):
+ 	Dump when vect_update_shared_vectype fails.
+ 
+ 2020-10-28  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/aarch64/arm_neon.h (__ST2_LANE_FUNC, __ST3_LANE_FUNC)
+ 	(__ST4_LANE_FUNC): Rename the macro generating the 'q' variants
+ 	into __ST2Q_LANE_FUNC, __ST2Q_LANE_FUNC, __ST2Q_LANE_FUNC so they
+ 	all can be undefed at the and of the file.
+ 	(vst2_lane_bf16, vst2q_lane_bf16, vst3_lane_bf16, vst3q_lane_bf16)
+ 	(vst4_lane_bf16, vst4q_lane_bf16): Add new intrinsics.
+ 
+ 2020-10-28  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/aarch64/arm_neon.h (__LD2_LANE_FUNC, __LD3_LANE_FUNC)
+ 	(__LD4_LANE_FUNC): Rename the macro generating the 'q' variants
+ 	into __LD2Q_LANE_FUNC, __LD2Q_LANE_FUNC, __LD2Q_LANE_FUNC so they
+ 	all can be undefed at the and of the file.
+ 	(vld2_lane_bf16, vld2q_lane_bf16, vld3_lane_bf16, vld3q_lane_bf16)
+ 	(vld4_lane_bf16, vld4q_lane_bf16): Add new intrinsics.
+ 
+ 2020-10-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_ALLOCATE.
+ 	* tree.h (OMP_CLAUSE_ALLOCATE_ALLOCATOR,
+ 	OMP_CLAUSE_ALLOCATE_COMBINED): Define.
+ 	* tree.c (omp_clause_num_ops, omp_clause_code_name): Add allocate
+ 	clause.
+ 	(walk_tree_1): Handle OMP_CLAUSE_ALLOCATE.
+ 	* tree-pretty-print.c (dump_omp_clause): Likewise.
+ 	* gimplify.c (gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses,
+ 	gimplify_omp_for): Likewise.
+ 	* tree-nested.c (convert_nonlocal_omp_clauses,
+ 	convert_local_omp_clauses): Likewise.
+ 	* omp-low.c (scan_sharing_clauses): Likewise.
+ 
+ 2020-10-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-offload.c (omp_declare_target_tgt_fn_r): Handle direct calls to
+ 	declare variant base functions.
+ 
+ 2020-10-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR lto/96680
+ 	* lto-streamer.h (omp_lto_output_declare_variant_alt,
+ 	omp_lto_input_declare_variant_alt): Declare variant.
+ 	* symtab.c (symtab_node::get_partitioning_class): Return
+ 	SYMBOL_DUPLICATE for declare_variant_alt nodes.
+ 	* passes.c (ipa_write_summaries): Add declare_variant_alt to
+ 	partition.
+ 	* lto-cgraph.c (output_refs): Call omp_lto_output_declare_variant_alt
+ 	on declare_variant_alt nodes.
+ 	(input_refs): Call omp_lto_input_declare_variant_alt on
+ 	declare_variant_alt nodes.
+ 	* lto-streamer-out.c (output_function): Don't call
+ 	collect_block_tree_leafs if DECL_INITIAL is error_mark_node.
+ 	(lto_output): Call output_function even for declare_variant_alt
+ 	nodes.
+ 	* omp-general.c (omp_lto_output_declare_variant_alt,
+ 	omp_lto_input_declare_variant_alt): New functions.
+ 
+ 2020-10-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* wide-int.cc (wi::set_bit_large): Call canonize unless setting
+ 	msb bit and clearing bits above it.
+ 
+ 2020-10-28  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-gori.cc (gori_compute_cache::cache_stmt): Accumulate
+ 	return values and only set cache when everything returned true.
+ 	* gimple-range.cc (get_tree_range): Set the return range to UNDEFINED
+ 	when the range isn't supported.
+ 	(gimple_ranger::calc_stmt): Return varying if the type is supported,
+ 	even if the stmt processing failed.  False otherwise.
+ 	(range_of_builtin_ubsan_call): Don't use gcc_assert.
+ 	(range_of_builtin_call): Ditto.
+ 	(gimple_ranger::range_of_cond_expr): Ditto.
+ 	(gimple_ranger::range_of_expr): Ditto
+ 	(gimple_ranger::range_on_entry): Ditto.
+ 	(gimple_ranger::range_on_exit): Ditto.
+ 	(gimple_ranger::range_on_edge): DItto.
+ 	(gimple_ranger::range_of_stmt): Don't use gcc_assert, and initialize
+ 	return value to UNDEFINED.
+ 
+ 2020-10-27  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	PR rtl-optimization/97497
+ 	* config/s390/s390.c (s390_hard_regno_call_part_clobbered): Do not
+ 	return true for r12 when -fpic is used.
+ 
+ 2020-10-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/97535
+ 	* config/aarch64/aarch64.c (aarch64_expand_cpymem): Use unsigned
+ 	arithmetic in check.
+ 
+ 2020-10-27  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/aarch64/arm_neon.h (vcopy_lane_bf16, vcopyq_lane_bf16)
+ 	(vcopyq_laneq_bf16, vcopy_laneq_bf16): New intrinsics.
+ 
+ 2020-10-27  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/vxworks.h (VX_CPU_PREFIX): #define here.
+ 	* config/rs6000/vxworks.h: Remove #definition.
+ 
+ 2020-10-27  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/rs6000/vxworks.h (CPP_SPEC): Fix macro definition
+ 	for -mcpu=e6500.
+ 
+ 2020-10-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_build_slp_instance): Use ceil_log2
+ 	to compute maximum group-size.
+ 
+ 2020-10-27  Jan Hubicka  <jh@suse.cz>
+ 
+ 	PR ipa/97586
+ 	* ipa-modref-tree.h (modref_tree::remap_params): New member function.
+ 	* ipa-modref.c (modref_summaries_lto::duplicate): Check that
+ 	optimization summaries are not duplicated.
+ 	(remap_arguments): Remove.
+ 	(modref_transform): Rename to ...
+ 	(update_signature): ... this one; handle also lto summary.
+ 	(pass_ipa_modref::execute): Update signatures here rather
+ 	than in transform hook.
+ 
+ 2020-10-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_slp_bbs): Remove no-op
+ 	slp-max-insns-in-bb check.
+ 	(vect_slp_function): Dump when splitting the function.
+ 	Adjust the split condition for control altering stmts.
+ 	* params.opt (-param=slp-max-insns-in-bb): Remove.
+ 	* doc/invoke.texi (-param=slp-max-insns-in-bb): Likewise.
+ 
+ 2020-10-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple.h (gimple_expr_type): For PHIs return the type
+ 	of the result.
+ 	* tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg):
+ 	Make sure edge order into copied loop headers line up with the
+ 	originals.
+ 	* tree-vect-loop.c (vect_transform_cycle_phi): Handle nested
+ 	loops with SLP.
+ 	(vectorizable_phi): New function.
+ 	(vectorizable_live_operation): For BB vectorization compute insert
+ 	location here.
+ 	* tree-vect-slp.c (vect_free_slp_tree): Deal with NULL
+ 	SLP_TREE_CHILDREN entries.
+ 	(vect_create_new_slp_node): Add overloads with pre-existing node
+ 	argument.
+ 	(vect_print_slp_graph): Likewise.
+ 	(vect_mark_slp_stmts): Likewise.
+ 	(vect_mark_slp_stmts_relevant): Likewise.
+ 	(vect_gather_slp_loads): Likewise.
+ 	(vect_optimize_slp): Likewise.
+ 	(vect_slp_analyze_node_operations): Likewise.
+ 	(vect_bb_slp_scalar_cost): Likewise.
+ 	(vect_remove_slp_scalar_calls): Likewise.
+ 	(vect_get_and_check_slp_defs): Handle PHIs.
+ 	(vect_build_slp_tree_1): Handle PHIs.
+ 	(vect_build_slp_tree_2): Continue SLP build, following PHI
+ 	arguments.  Fix memory leak.
+ 	(vect_build_slp_tree): Put stub node into the hash-map so
+ 	we can discover cycles directly.
+ 	(vect_build_slp_instance): Set the backedge SLP def for
+ 	reduction chains.
+ 	(vect_analyze_slp_backedges): Remove.
+ 	(vect_analyze_slp): Do not call it.
+ 	(vect_slp_convert_to_external): Release SLP_TREE_LOAD_PERMUTATION.
+ 	(vect_slp_analyze_node_operations): Handle stray failed
+ 	backedge defs by failing.
+ 	(vect_slp_build_vertices): Adjust leaf condition.
+ 	(vect_bb_slp_mark_live_stmts): Handle PHIs, use visited
+ 	hash-set to handle cycles.
+ 	(vect_slp_analyze_operations): Adjust.
+ 	(vect_bb_partition_graph_r): Likewise.
+ 	(vect_slp_function): Adjust split condition to allow CFG
+ 	merges.
+ 	(vect_schedule_slp_instance): Rename to ...
+ 	(vect_schedule_slp_node): ... this.  Move DFS walk to ...
+ 	(vect_schedule_scc): ... this new function.
+ 	(vect_schedule_slp): Call it.  Remove ad-hoc vectorized
+ 	backedge fill code.
+ 	* tree-vect-stmts.c (vect_analyze_stmt): Call
+ 	vectorizable_phi.
+ 	(vect_transform_stmt): Likewise.
+ 	(vect_is_simple_use): Handle vect_backedge_def.
+ 	* tree-vectorizer.c (vec_info::new_stmt_vec_info): Only
+ 	set loop header PHIs to vect_unknown_def_type for loop
+ 	vectorization.
+ 	* tree-vectorizer.h (enum vect_def_type): Add vect_backedge_def.
+ 	(enum stmt_vec_info_type): Add phi_info_type.
+ 	(vectorizable_phi): Declare.
+ 
+ 2020-10-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_build_slp_tree_2): When vectorizing
+ 	BBs splat uniform operands and stop SLP discovery.
+ 
+ 2020-10-27  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* config/aarch64/aarch64-linux.h (GNU_USER_TARGET_D_CRITSEC_SIZE):
+ 	Remove.
+ 	* config/glibc-d.c (glibc_d_critsec_size): Likewise.
+ 	(TARGET_D_CRITSEC_SIZE): Likewise.
+ 	* config/i386/linux-common.h (GNU_USER_TARGET_D_CRITSEC_SIZE):
+ 	Likewise.
+ 	* config/sol2-d.c (solaris_d_critsec_size): Likewise.
+ 	(TARGET_D_CRITSEC_SIZE):  Likewise.
+ 	* doc/tm.texi.in (TARGET_D_CRITSEC_SIZE): Likewise.
+ 	* doc/tm.texi: Regenerate.
+ 
+ 2020-10-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/97461
+ 	* gcov-io.h (GCOV_PREALLOCATED_KVP): Pre-allocate 64
+ 	static counters.
+ 
+ 2020-10-27  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* tree-ssa-alias.c (attr_fnspec::verify): Re-enabl checking.
+ 
+ 2020-10-27  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* builtin-attrs.def (STRERRNOC): New macro.
+ 	(STRERRNOP): New macro.
+ 	(ATTR_ERRNOCONST_NOTHROW_LEAF_LIST): New attr list.
+ 	(ATTR_ERRNOPURE_NOTHROW_LEAF_LIST): New attr list.
+ 	* builtins.def (ATTR_MATHFN_ERRNO): Use
+ 	ATTR_ERRNOCONST_NOTHROW_LEAF_LIST.
+ 	(ATTR_MATHFN_FPROUNDING_ERRNO): Use ATTR_ERRNOCONST_NOTHROW_LEAF_LIST
+ 	or ATTR_ERRNOPURE_NOTHROW_LEAF_LIST.
+ 
+ 2020-10-27  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.c (opt_var_ref_t): New.
+ 	(riscv_ext_flag_table_t): New.
+ 	(riscv_ext_flag_table): New.
+ 	(riscv_parse_arch_string): Pass gcc_options* instead of
+ 	&opts->x_target_flags only, and using riscv_arch_option_table to
+ 	setup flags.
+ 	(riscv_handle_option): Update argument for riscv_parse_arch_string.
+ 	(riscv_expand_arch): Ditto.
+ 	(riscv_expand_arch_from_cpu): Ditto.
+ 
+ 2020-10-27  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* tree-ssa-ccp.c (evaluate_stmt): Use EAF_RETURN_ARG; do not handle
+ 	string buitings specially.
+ 
+ 2020-10-27  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* tree.c (set_call_expr_flags): Fix string for ECF_RET1.
+ 	(build_common_builtin_nodes): Do not set ECF_RET1 for memcpy, memmove,
+ 	and memset. They are handled by builtin_fnspec.
+ 
+ 2020-10-27  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* builtins.c (builtin_fnspec): Add bzero, memcmp, memcmp_eq, bcmp,
+ 	strncmp, strncmp_eq, strncasecmp, rindex, strlen, strlnen, strcasecmp,
+ 	strcspn, strspn, strcmp, strcmp_eq.
+ 
+ 2020-10-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (slp_tree_pool): Declare.
+ 	(_slp_tree::operator new): Likewise.
+ 	(_slp_tree::operator delete): Likewise.
+ 	* tree-vectorizer.c (vectorize_loops): Allocate and free the
+ 	slp_tree_pool.
+ 	(pass_slp_vectorize::execute): Likewise.
+ 	* tree-vect-slp.c (slp_tree_pool): Define.
+ 	(_slp_tree::operator new): Likewise.
+ 	(_slp_tree::operator delete): Likewise.
+ 
+ 2020-10-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	* lto-wrapper.c (run_gcc): Do not use sub-make when jobserver is
+ 	not detected properly.
+ 
+ 2020-10-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	* symbol-summary.h (call_summary_base): Pass symtab hooks to
+ 	base and register (or unregister) hooks directly.
+ 
+ 2020-10-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	* symbol-summary.h (function_summary_base::unregister_hooks):
+ 	Call disable_insertion_hook and disable_duplication_hook.
+ 	(function_summary_base::symtab_insertion): New field.
+ 	(function_summary_base::symtab_removal): Likewise.
+ 	(function_summary_base::symtab_duplication): Likewise.
+ 	Register hooks in function_summary_base and directly register
+ 	(or unregister) hooks.
+ 
+ 2020-10-26  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/97567
+ 	* gimple-range-gori.cc (gori_compute::logical_combine): Union the
+ 	ranges of operand1 and operand2, not intersect.
+ 
+ 2020-10-26  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* attr-fnspec.h: Update toplevel comment.
+ 	(attr_fnspec::attr_fnspec): New constructor.
+ 	(attr_fnspec::arg_read_p,
+ 	attr_fnspec::arg_written_p,
+ 	attr_fnspec::arg_access_size_given_by_arg_p,
+ 	attr_fnspec::arg_single_access_p
+ 	attr_fnspec::loads_known_p
+ 	attr_fnspec::stores_known_p,
+ 	attr_fnspec::clobbers_errno_p): New member functions.
+ 	(gimple_call_fnspec): Declare.
+ 	(builtin_fnspec): Declare.
+ 	* builtins.c: Include attr-fnspec.h
+ 	(builtin_fnspec): New function.
+ 	* builtins.def (BUILT_IN_MEMCPY): Do not specify RET1 fnspec.
+ 	(BUILT_IN_MEMMOVE): Do not specify RET1 fnspec.
+ 	(BUILT_IN_MEMSET): Do not specify RET1 fnspec.
+ 	(BUILT_IN_STRCAT): Do not specify RET1 fnspec.
+ 	(BUILT_IN_STRCPY): Do not specify RET1 fnspec.
+ 	(BUILT_IN_STRNCAT): Do not specify RET1 fnspec.
+ 	(BUILT_IN_STRNCPY): Do not specify RET1 fnspec.
+ 	(BUILT_IN_MEMCPY_CHK): Do not specify RET1 fnspec.
+ 	(BUILT_IN_MEMMOVE_CHK): Do not specify RET1 fnspec.
+ 	(BUILT_IN_MEMSET_CHK): Do not specify RET1 fnspec.
+ 	(BUILT_IN_STRCAT_CHK): Do not specify RET1 fnspec.
+ 	(BUILT_IN_STRCPY_CHK): Do not specify RET1 fnspec.
+ 	(BUILT_IN_STRNCAT_CHK): Do not specify RET1 fnspec.
+ 	(BUILT_IN_STRNCPY_CHK): Do not specify RET1 fnspec.
+ 	* gimple.c (gimple_call_fnspec): Return attr_fnspec.
+ 	(gimple_call_arg_flags): Update.
+ 	(gimple_call_return_flags): Update.
+ 	* tree-ssa-alias.c (check_fnspec): New function.
+ 	(ref_maybe_used_by_call_p_1): Use fnspec for builtin handling.
+ 	(call_may_clobber_ref_p_1): Likewise.
+ 	(attr_fnspec::verify): Update verifier.
+ 	* calls.c (decl_fnspec): New function.
+ 	(decl_return_flags): Use it.
+ 
+ 2020-10-26  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/97555
+ 	* range-op.cc (range_tests): Test 1-bit signed invert.
+ 	* value-range.cc (subtract_one): Adjust comment.
+ 	(add_one): New.
+ 	(irange::invert): Call add_one.
+ 
+ 2020-10-26  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* cgraph.h (cgraph_node::optimize_for_size_p): Return
+ 	optimize_size_level.
+ 	(cgraph_node::optimize_for_size_p): Update.
+ 	* coretypes.h (enum optimize_size_level): New enum.
+ 	* predict.c (unlikely_executed_edge_p): Microoptimize.
+ 	(optimize_function_for_size_p): Return optimize_size_level.
+ 	(optimize_bb_for_size_p): Likewise.
+ 	(optimize_edge_for_size_p): Likewise.
+ 	(optimize_insn_for_size_p): Likewise.
+ 	(optimize_loop_nest_for_size_p): Likewise.
+ 	* predict.h (optimize_function_for_size_p): Update declaration.
+ 	(optimize_bb_for_size_p): Update declaration.
+ 	(optimize_edge_for_size_p): Update declaration.
+ 	(optimize_insn_for_size_p): Update declaration.
+ 	(optimize_loop_for_size_p): Update declaration.
+ 	(optimize_loop_nest_for_size_p): Update declaration.
+ 
+ 2020-10-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (enum slp_instance_kind): New.
+ 	(vect_build_slp_instance): Split out from...
+ 	(vect_analyze_slp_instance): ... this.
+ 
+ 2020-10-26  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range.cc (range_of_builtin_call): Initialize zerov to 0.
+ 
+ 2020-10-26  Jan Hubicka  <jh@suse.cz>
+ 
+ 	PR ipa/97576
+ 	* cgraphclones.c (cgraph_node::materialize_clone): Clear stmt
+ 	references.
+ 	* cgraphunit.c (mark_functions_to_output): Do not clear them here.
+ 	* ipa-inline-transform.c (inline_transform): Clear stmt references.
+ 	* symtab.c (symtab_node::clear_stmts_in_references): Make recursive
+ 	for clones.
+ 	* tree-ssa-structalias.c (ipa_pta_execute): Do not clear references.
+ 
+ 2020-10-26  Zhiheng Xie  <xiezhiheng@huawei.com>
+ 	    Nannan Zheng  <zhengnannan@huawei.com>
+ 
+ 	* config/aarch64/aarch64-builtins.c: Add FLAG STORE.
+ 	* config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
+ 	for store intrinsics.
+ 
+ 2020-10-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR tree-optimization/97546
+ 	* gimple-ssa-store-merging.c (find_bswap_or_nop): Return NULL if
+ 	type is not INTEGER_CST.
+ 
+ 2020-10-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/97521
+ 	* expr.c (const_scalar_mask_from_tree): Remove.
+ 	(expand_expr_real_1): Always VIEW_CONVERT integer mode
+ 	vector constants to an integer type.
+ 	* tree.c (build_truth_vector_type_for_mode): Use a single-bit
+ 	boolean component type for non-vector-mode mask_mode.
+ 
+ 2020-10-26  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/95458
+ 	* config/i386/i386-expand.c (ix86_expand_cmpstrn_or_cmpmem):
+ 	Return false for -mno-inline-all-stringops.
+ 
+ 2020-10-26  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/95151
+ 	* config/i386/i386-expand.c (ix86_expand_cmpstrn_or_cmpmem): New
+ 	function.
+ 	* config/i386/i386-protos.h (ix86_expand_cmpstrn_or_cmpmem): New
+ 	prototype.
+ 	* config/i386/i386.md (cmpmemsi): New pattern.
+ 
+ 2020-10-26  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/vector.md ("vcond_mask_<mode><mode>"): New expander.
+ 
+ 2020-10-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	* sbitmap.c (sbitmap_vector_alloc): Use size_t for byte
+ 	quantities to avoid overflow.
+ 
+ 2020-10-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97539
+ 	* tree-vect-loop-manip.c (vect_do_peeling): Reset out-of-loop
+ 	debug uses before peeling.
+ 
+ 2020-10-26  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cgraph.h (struct cgraph_node): Make ipa_transforms_to_apply vl_ptr.
+ 	* ipa-inline-analysis.c (initialize_growth_caches): Disable insertion
+ 	and duplication hooks.
+ 	* ipa-inline-transform.c (clone_inlined_nodes): Clear
+ 	ipa_transforms_to_apply.
+ 	(save_inline_function_body): Disable insertion hoook for
+ 	ipa_saved_clone_sources.
+ 	* ipa-prop.c (ipcp_transformation_initialize): Disable insertion hook.
+ 	* ipa-prop.h (ipa_node_params_t): Disable insertion hook.
+ 	* ipa-reference.c (propagate): Disable insertion hoook.
+ 	* ipa-sra.c (ipa_sra_summarize_function): Move out of anonymous
+ 	namespace.
+ 	(ipa_sra_function_summaries::insert): New virtual function.
+ 	* passes.c (execute_one_pass): Do not add transforms to inline clones.
+ 	* symbol-summary.h (function_summary_base): Make insert and duplicate
+ 	hooks fail instead of silently producing empty summaries; add way to
+ 	disable duplication hooks
+ 	(call_summary_base): Likewise.
+ 	* tree-nested.c (nested_function_info::get_create): Disable insertion
+ 	hooks
+ 	(maybe_record_nested_function): Likewise.
+ 
+ 2020-10-26  Xionghu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	* cfg.c (debug_bb): New overloaded function.
+ 	(debug_bb_n): New overloaded function.
+ 	* cfg.h (debug_bb): New declaration.
+ 	(debug_bb_n): New declaration.
+ 	* print-rtl.c (debug_bb_slim): Call debug_bb with flags.
+ 
+ 2020-10-24  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR bootstrap/97451
+ 	* configure.ac (HAVE_AS_WORKING_DWARF_4_FLAG): Renamed to ...
+ 	(HAVE_AS_WORKING_DWARF_N_FLAG): This.  Don't define if there is
+ 	an extra assembly input file in debug info.  Replace success
+ 	with dwarf4_success in the 32-bit --gdwarf-4 check.
+ 	* dwarf2out.c (asm_outputs_debug_line_str): Check
+ 	HAVE_AS_WORKING_DWARF_N_FLAG instead of
+ 	HAVE_AS_WORKING_DWARF_4_FLAG.
+ 	* gcc.c (ASM_DEBUG_SPEC): Likewise.
+ 	(ASM_DEBUG_OPTION_SPEC): Likewise.
+ 	* config.in: Regenerated.
+ 	* configure: Likewise.
+ 
+ 2020-10-24  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/97538
+ 	* calls.c (get_size_range): Handle undefined ranges.
+ 
+ 2020-10-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cgraph.c (cgraph_node::former_thunk_p): Move out of CHECKING_P
+ 	macro.
+ 
+ 2020-10-24  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_legitimate_address_p): Limit
+ 	AND addressing to just lvx/stvx style addresses.
+ 
+ 2020-10-24  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/rs6000.md (cstore<mode>4): Don't call
+ 	rs6000_emit_int_cmove for power10 when -mno-isel.
+ 
+ 2020-10-23  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* Makefile.in: Add symtab-thunks.o
+ 	(GTFILES): Add symtab-thunks.h and symtab-thunks.cc; remove cgraphunit.c
+ 	* cgraph.c: Include symtab-thunks.h.
+ 	(cgraph_node::create_thunk): Update
+ 	(symbol_table::create_edge): Update
+ 	(cgraph_node::dump): Update
+ 	(cgraph_node::call_for_symbol_thunks_and_aliases): Update
+ 	(set_nothrow_flag_1): Update
+ 	(set_malloc_flag_1): Update
+ 	(set_const_flag_1): Update
+ 	(collect_callers_of_node_1): Update
+ 	(clone_of_p): Update
+ 	(cgraph_node::verify_node): Update
+ 	(cgraph_node::function_symbol): Update
+ 	(cgraph_c_finalize): Call thunk_info::release.
+ 	(cgraph_node::has_thunk_p): Update
+ 	(cgraph_node::former_thunk_p): Move here from cgraph.h; reimplement.
+ 	* cgraph.h (struct cgraph_thunk_info): Rename to symtab-thunks.h.
+ 	(cgraph_node): Remove thunk field; add thunk bitfield.
+ 	(cgraph_node::expand_thunk): Move to symtab-thunks.h
+ 	(symtab_thunks_cc_finalize): Declare.
+ 	(cgraph_node::has_gimple_body_p): Update.
+ 	(cgraph_node::former_thunk_p): Update.
+ 	* cgraphclones.c: Include symtab-thunks.h.
+ 	(duplicate_thunk_for_node): Update.
+ 	(cgraph_edge::redirect_callee_duplicating_thunks): Update.
+ 	(cgraph_node::expand_all_artificial_thunks): Update.
+ 	(cgraph_node::create_edge_including_clones): Update.
+ 	* cgraphunit.c: Include symtab-thunks.h.
+ 	(vtable_entry_type): Move to symtab-thunks.c.
+ 	(cgraph_node::analyze): Update.
+ 	(analyze_functions): Update.
+ 	(mark_functions_to_output): Update.
+ 	(thunk_adjust): Move to symtab-thunks.c
+ 	(cgraph_node::expand_thunk): Move to symtab-thunks.c
+ 	(cgraph_node::assemble_thunks_and_aliases): Update.
+ 	(output_in_order): Update.
+ 	(cgraphunit_c_finalize): Do not clear vtable_entry_type.
+ 	(cgraph_node::create_wrapper): Update.
+ 	* gengtype.c (open_base_files): Add symtab-thunks.h
+ 	* ipa-comdats.c (propagate_comdat_group): UPdate.
+ 	(ipa_comdats): Update.
+ 	* ipa-cp.c (determine_versionability): UPdate.
+ 	(gather_caller_stats): Update.
+ 	(count_callers): Update
+ 	(set_single_call_flag): Update
+ 	(initialize_node_lattices): Update
+ 	(call_passes_through_thunk_p): Update
+ 	(call_passes_through_thunk): Update
+ 	(propagate_constants_across_call): Update
+ 	(find_more_scalar_values_for_callers_subset): Update
+ 	(has_undead_caller_from_outside_scc_p): Update
+ 	* ipa-fnsummary.c (evaluate_properties_for_edge): Update.
+ 	(compute_fn_summary): Update.
+ 	(inline_analyze_function): Update.
+ 	* ipa-icf.c: Include symtab-thunks.h.
+ 	(sem_function::equals_wpa): Update.
+ 	(redirect_all_callers): Update.
+ 	(sem_function::init): Update.
+ 	(sem_function::parse): Update.
+ 	* ipa-inline-transform.c: Include symtab-thunks.h.
+ 	(inline_call): Update.
+ 	(save_inline_function_body): Update.
+ 	(preserve_function_body_p): Update.
+ 	* ipa-inline.c (inline_small_functions): Update.
+ 	* ipa-polymorphic-call.c: Include alloc-pool.h, symbol-summary.h,
+ 	symtab-thunks.h
+ 	(ipa_polymorphic_call_context::ipa_polymorphic_call_context): Update.
+ 	* ipa-pure-const.c: Include symtab-thunks.h.
+ 	(analyze_function): Update.
+ 	* ipa-sra.c (check_for_caller_issues): Update.
+ 	* ipa-utils.c (ipa_reverse_postorder): Update.
+ 	(ipa_merge_profiles): Update.
+ 	* ipa-visibility.c (non_local_p): Update.
+ 	(cgraph_node::local_p): Update.
+ 	(function_and_variable_visibility): Update.
+ 	* ipa.c (symbol_table::remove_unreachable_nodes): Update.
+ 	* lto-cgraph.c: Include alloc-pool.h, symbol-summary.h and
+ 	symtab-thunks.h
+ 	(lto_output_edge): Update.
+ 	(lto_output_node): Update.
+ 	(compute_ltrans_boundary): Update.
+ 	(output_symtab): Update.
+ 	(verify_node_partition): Update.
+ 	(input_overwrite_node): Update.
+ 	(input_node): Update.
+ 	* lto-streamer-in.c (fixup_call_stmt_edges): Update.
+ 	* symtab-thunks.cc: New file.
+ 	* symtab-thunks.h: New file.
+ 	* toplev.c (toplev::finalize): Call symtab_thunks_cc_finalize.
+ 	* trans-mem.c (ipa_tm_mayenterirr_function): Update.
+ 	(ipa_tm_execute): Update.
+ 	* tree-inline.c (expand_call_inline): Update.
+ 	* tree-nested.c (create_nesting_tree): Update.
+ 	(convert_all_function_calls): Update.
+ 	(gimplify_all_functions): Update.
+ 	* tree-profile.c (tree_profiling): Update.
+ 	* tree-ssa-structalias.c (associate_varinfo_to_alias): Update.
+ 	* tree.c (free_lang_data_in_decl): Update.
+ 	* value-prof.c (init_node_map): Update.
+ 
+ 2020-10-23  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/91741
+ 	* doc/invoke.texi: Document -Wsizeof-array-div.
+ 
+ 2020-10-23  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/97552
+ 	* attribs.c (init_attr_rdwr_indices): Handle static VLA parameters.
+ 
+ 2020-10-23  Douglas Rupp  <rupp@adacore.com>
+ 
+ 	* config/vxworks.h (VXWORKS_NET_LIBS_RTP): Use -lrtnet if
+ 	rtnetStackLib.h is available,fallback to -lnet otherwise.
+ 
+ 2020-10-23  Douglas Rupp  <rupp@adacore.com>
+ 
+ 	* gcc.c (if-exists-then-else): New built-in spec function.
+ 	* doc/invoke.texi: Document it.
+ 
+ 2020-10-23  Tulio Magno Quites Machado Filho  <tuliom@linux.ibm.com>
+ 
+ 	* doc/extend.texi (PowerPC Built-in Functions): Replace
+ 	extraneous characters with whitespace.
+ 
+ 2020-10-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov.c (read_count_file): Never call gcov_sync with a negative
+ 	value.
+ 
+ 2020-10-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* Makefile.in (PLUGIN_HEADERS): Add gomp-constants.h and $(EXPR_H).
+ 	(s-header-vars): Accept not just spaces but also tabs between *_H name
+ 	and =.  Handle common/config/ headers similarly to config.  Don't
+ 	throw away everything from first ... to last / on the remaining
+ 	string, instead skip just ... to corresponding last / without
+ 	intervening spaces and tabs.
+ 	(install-plugin): Treat common/config headers like config headers.
+ 	* config/i386/t-i386 (TM_H): Add
+ 	$(srcdir)/common/config/i386/i386-cpuinfo.h.
+ 
+ 2020-10-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/97164
+ 	* stor-layout.c (layout_type): Also reject arrays where element size
+ 	is constant, but not a multiple of element alignment.
+ 
+ 2020-10-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (analyze_and_mark_doloop_use): Bail out if
+ 	the loop is subject to a pragma Unroll with no specific count.
+ 
+ 2020-10-23  Dennis Zhang  <dennis.zhang@arm.com>
+ 
+ 	* config/arm/mve.md (mve_vsubq<mode>): New entry for vsub instruction
+ 	using expression 'minus'.
+ 	(mve_vsubq_f<mode>): Use minus instead of VSUBQ_F unspec.
+ 	* config/arm/neon.md (sub<mode>3, sub<mode>3_fp16): Removed.
+ 	(neon_vsub<mode>): Use gen_sub<mode>3 instead of gen_sub<mode>3_fp16.
+ 	* config/arm/vec-common.md (sub<mode>3): Use the new mode macros
+ 	ARM_HAVE_<MODE>_ARITH. Use iterator VDQ instead of VALL.
+ 
+ 2020-10-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/97524
+ 	* lto-wrapper.c (make_exists): New function.
+ 	(run_gcc): Use it to check that make is present and working
+ 	for parallel execution.
+ 
+ 2020-10-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	Revert:
+ 	2020-10-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/97521
+ 	* expr.c (expand_expr_real_1): Be more careful when
+ 	expanding a VECTOR_BOOLEAN_TYPE_P VECTOR_CSTs.
+ 
+ 2020-10-23  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* tree-vect-loop.c (vect_transform_loop): Remove the redundant
+ 	LOOP_VINFO_FULLY_MASKED_P check.
+ 
+ 2020-10-23  Dennis Zhang  <dennis.zhang@arm.com>
+ 
+ 	* config/arm/mve.md (mve_vsubq<mode>): New entry for vsub instruction
+ 	using expression 'minus'.
+ 	(mve_vsubq_f<mode>): Use minus instead of VSUBQ_F unspec.
+ 	* config/arm/neon.md (sub<mode>3, sub<mode>3_fp16): Removed.
+ 	(neon_vsub<mode>): Use gen_sub<mode>3 instead of gen_sub<mode>3_fp16.
+ 	* config/arm/vec-common.md (sub<mode>3): Use the new mode macros
+ 	ARM_HAVE_<MODE>_ARITH. Use iterator VDQ instead of VALL.
+ 
+ 2020-10-22  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_emit_xxspltidp_v2df): Delete
+ 	debug printf.  Remove trailing ".\n" from inform message.
+ 	Break long line.
+ 
+ 2020-10-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-gori.cc (is_gimple_logical_p): Use types_compatible_p
+ 	for logical compatibility.
+ 	(logical_stmt_cache::cacheable_p): Ditto.
+ 
+ 2020-10-22  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cgraph.c (cgraph_node::get_untransformed_body): Perform lazy
+ 	clone materialization.
+ 	* cgraph.h (cgraph_node::materialize_clone): Declare.
+ 	(symbol_table::materialize_all_clones): Remove.
+ 	* cgraphclones.c (cgraph_materialize_clone): Turn to ...
+ 	(cgraph_node::materialize_clone): .. this one; move here
+ 	dumping from symbol_table::materialize_all_clones.
+ 	(symbol_table::materialize_all_clones): Remove.
+ 	* cgraphunit.c (mark_functions_to_output): Clear stmt references.
+ 	(cgraph_node::expand): Initialize bitmaps early;
+ 	do not call execute_all_ipa_transforms if there are no transforms.
+ 	* ipa-inline-transform.c (save_inline_function_body): Fix formating.
+ 	(inline_transform): Materialize all clones before function is modified.
+ 	* ipa-param-manipulation.c (ipa_param_adjustments::modify_call):
+ 	Materialize clone if needed.
+ 	* ipa.c (class pass_materialize_all_clones): Remove.
+ 	(make_pass_materialize_all_clones): Remove.
+ 	* passes.c (execute_all_ipa_transforms): Materialize all clones.
+ 	* passes.def: Remove pass_materialize_all_clones.
+ 	* tree-pass.h (make_pass_materialize_all_clones): Remove.
+ 	* tree-ssa-structalias.c (ipa_pta_execute): Clear refs.
+ 
+ 2020-10-22  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/altivec.h (vec_xl_zext, vec_xl_sext, vec_xst_trunc):
+ 	New defines.
+ 	* config/rs6000/rs6000-builtin.def (BU_P10V_OVERLOAD_X): New builtin
+ 	macro.
+ 	(BU_P10V_AV_X): New builtin macro.
+ 	(se_lxvrhbx, se_lxrbhx, se_lxvrwx, se_lxvrdx): Define internal names
+ 	for load and sign extend vector element.
+ 	(ze_lxvrbx, ze_lxvrhx, ze_lxvrwx, ze_lxvrdx): Define internal names
+ 	for load and zero extend vector element.
+ 	(tr_stxvrbx, tr_stxvrhx, tr_stxvrwx, tr_stxvrdx): Define internal names
+ 	for truncate and store vector element.
+ 	(se_lxvrx, ze_lxvrx, tr_stxvrx): Define internal names for overloaded
+ 	load/store rightmost element.
+ 	* config/rs6000/rs6000-call.c (altivec_builtin_types): Define the
+ 	internal monomorphs P10_BUILTIN_SE_LXVRBX, P10_BUILTIN_SE_LXVRHX,
+ 	P10_BUILTIN_SE_LXVRWX, P10_BUILTIN_SE_LXVRDX,
+ 	P10_BUILTIN_ZE_LXVRBX, P10_BUILTIN_ZE_LXVRHX, P10_BUILTIN_ZE_LXVRWX,
+ 	P10_BUILTIN_ZE_LXVRDX,
+ 	P10_BUILTIN_TR_STXVRBX, P10_BUILTIN_TR_STXVRHX, P10_BUILTIN_TR_STXVRWX,
+ 	P10_BUILTIN_TR_STXVRDX,
+ 	(altivec_expand_lxvr_builtin): New expansion for load element builtins.
+ 	(altivec_expand_stv_builtin): Update to for truncate and store builtins.
+ 	(altivec_expand_builtin): Add clases for load/store rightmost builtins.
+ 	(altivec_init_builtins): Add def_builtin entries for
+ 	__builtin_altivec_se_lxvrbx, __builtin_altivec_se_lxvrhx,
+ 	__builtin_altivec_se_lxvrwx, __builtin_altivec_se_lxvrdx,
+ 	__builtin_altivec_ze_lxvrbx, __builtin_altivec_ze_lxvrhx,
+ 	__builtin_altivec_ze_lxvrwx, __builtin_altivec_ze_lxvrdx,
+ 	__builtin_altivec_tr_stxvrbx, __builtin_altivec_tr_stxvrhx,
+ 	__builtin_altivec_tr_stxvrwx, __builtin_altivec_tr_stxvrdx,
+ 	__builtin_vec_se_lxvrx, __builtin_vec_ze_lxvrx, __builtin_vec_tr_stxvrx.
+ 	* config/rs6000/vsx.md (vsx_lxvr<wd>x, vsx_stxvr<wd>x, vsx_stxvr<wd>x):
+ 	New define_insn entries.
+ 	* doc/extend.texi:  Add documentation for vsx_xl_sext, vsx_xl_zext,
+ 	and vec_xst_trunc.
+ 
+ 2020-10-22  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/vsx.md (enum unspec): Add
+ 	UNSPEC_EXTENDDITI2 and UNSPEC_MTVSRD_DITI_W1 entries.
+ 	(mtvsrdd_diti_w1, extendditi2_vector): New define_insns.
+ 	(extendditi2): New define_expand.
+ 
+ 2020-10-22  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* config/i386/mingw-w64.h (TARGET_LIBC_HAS_FUNCTION): Enable
+ 	sincos optimization.
+ 
+ 2020-10-22  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/vsx.md (vec_cntmb_<mode>, vec_extract_<mode>),
+ 	(vec_expand_<mode>): Replace <VSX_MM_SUFFIX> with <wd>.
+ 
+ 2020-10-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_analyze_slp_instance): Refactor so
+ 	computing a vector type early is not needed, for store group
+ 	splitting compute a new vector type based on the desired
+ 	group size.
+ 
+ 2020-10-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/97521
+ 	* expr.c (expand_expr_real_1): Be more careful when
+ 	expanding a VECTOR_BOOLEAN_TYPE_P VECTOR_CSTs.
+ 
+ 2020-10-22  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* ipa-modref-tree.c (selftest::test_insert_search_collapse): Fix
+ 	leak.
+ 	(selftest::test_merge): Fix leaks.
+ 
+ 2020-10-22  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	PR target/97502
+ 	* config/s390/vector.md ("vec_cmp<VI_HW:mode><VI_HW:mode>")
+ 	("vec_cmpu<VI_HW:mode><VI_HW:mode>"): New expanders.
+ 
+ 2020-10-22  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	PR rtl-optimization/97439
+ 	* dfp.c (decimal_real_maxval): Set the sign flag in the
+ 	generated number.
+ 
+ 2020-10-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c/94722
+ 	* cfgexpand.c (stack_protect_decl_phase):
+ 	Guard with lookup_attribute("no_stack_protector") at
+ 	various places.
+ 	(expand_used_vars): Likewise here.
+ 	* doc/extend.texi: Document no_stack_protector attribute.
+ 
+ 2020-10-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cfgexpand.c: Move the enum to ...
+ 	* coretypes.h (enum stack_protector): ... here.
+ 	* function.c (assign_parm_adjust_stack_rtl): Use the stack_protector
+ 	enum.
+ 
+ 2020-10-22  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/multilib-generator: Add TODO, import itertools
+ 	and functools.reduce.
+ 	Handle expantion operator.
+ 	(LONG_EXT_PREFIXES): New.
+ 	(arch_canonicalize): Update comment and improve python3
+ 	debuggability/compatibility.
+ 	(add_underline_prefix): New.
+ 	(_expand_combination): Ditto.
+ 	(unique): Ditto.
+ 	(expand_combination): Ditto.
+ 
+ 2020-10-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-ssa-phiopt.c (cond_removal_in_popcount_clz_ctz_pattern):
+ 	For CLZ and CTZ tests, use type temporary instead of mode.
+ 
+ 2020-10-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config.gcc (x86_archs): Add samuel-2, nehemiah, c7 and esther.
+ 	(x86_64_archs): Add eden-x2, nano, nano-1000, nano-2000, nano-3000,
+ 	nano-x2, eden-x4, nano-x4, x86-64-v2, x86-64-v3 and x86-64-v4.
+ 	(i[34567]86-*-* | x86_64-*-*): Only allow x86-64-v* as argument
+ 	to --with-arch_64=.
+ 
+ 2020-10-22  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-pure-const.c (funct_state_summary_t::insert): Free stale
+ 	summaries.
+ 
+ 2020-10-22  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cgraph.c: Include tree-nested.h
+ 	(cgraph_node::create): Call maybe_record_nested_function.
+ 	(cgraph_node::remove): Do not remove function from nested function
+ 	infos.
+ 	(cgraph_node::dump): Update.
+ 	(cgraph_node::unnest): Move to tree-nested.c
+ 	(cgraph_node::verify_node): Update.
+ 	(cgraph_c_finalize): Call nested_function_info::release.
+ 	* cgraph.h (struct symtab_node): Remove nested function info.
+ 	* cgraphclones.c (cgraph_node::create_clone): Do not clone nested
+ 	function info.
+ 	* cgraphunit.c (cgraph_node::analyze): Update.
+ 	(cgraph_node::expand): Do not worry about nested functions; they are
+ 	lowered.
+ 	(symbol_table::finalize_compilation_unit): Call
+ 	nested_function_info::release.
+ 	* gimplify.c: Include tree-nested.h
+ 	(unshare_body): Update.
+ 	(unvisit_body): Update.
+ 	* omp-offload.c (omp_discover_implicit_declare_target): Update.
+ 	* tree-nested.c: Include alloc-pool.h, tree-nested.h, symbol-summary.h
+ 	(nested_function_sum): New static variable.
+ 	(nested_function_info::get): New member function.
+ 	(nested_function_info::get_create): New member function.
+ 	(unnest_function): New function.
+ 	(nested_function_info::~nested_function_info): New member function.
+ 	(nested_function_info::release): New function.
+ 	(maybe_record_nested_function): New function.
+ 	(lookup_element_for_decl): Update.
+ 	(check_for_nested_with_variably_modified): Update.
+ 	(create_nesting_tree): Update.
+ 	(unnest_nesting_tree_1): Update.
+ 	(gimplify_all_functions): Update.
+ 	(lower_nested_functions): Update.
+ 	* tree-nested.h (class nested_function_info): New class.
+ 	(maybe_record_nested_function): Declare.
+ 	(unnest_function): Declare.
+ 	(first_nested_function): New inline function.
+ 	(next_nested_function): New inline function.
+ 	(nested_function_origin): New inline function.
+ 
+ 2020-10-22  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR rtl-optimization/97249
+ 	* simplify-rtx.c (simplify_binary_operation_1): Simplify
+ 	vec_select of a subreg of X to a vec_select of X.
+ 
+ 2020-10-22  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/87767
+ 	* config/i386/constraints.md ("Br"): New special memory
+ 	constraint.
+ 	* config/i386/i386-expand.c (ix86_binary_operator_ok): Both
+ 	source operand cannot be in memory or bcst_memory_operand.
+ 	* config/i386/i386.c (ix86_print_operand): Print bcst_mem_operand.
+ 	* config/i386/i386.h (VALID_BCST_MODE_P): New.
+ 	* config/i386/predicates.md (bcst_mem_operand): New predicate
+ 	for AVX512 embedding broadcast memory operand.
+ 	(bcst_vector_operand): New predicate, vector_operand or
+ 	bcst_mem_operand.
+ 	* config/i386/sse.md
+ 	(*<plusminus_insn><mode>3<mask_name><round_name>): Extend
+ 	predicate and constraints to handle bcst_mem_operand.
+ 	(*mul<mode>3<mask_name><round_name>): Ditto.
+ 	(<sse>_div<mode>3<mask_name><round_name>): Ditto.
+ 	(<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name><round_name>):
+ 	Ditto.
+ 	(<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name><round_name>):
+ 	Ditto.
+ 	(<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name><round_name>):
+ 	Ditto.
+ 	(<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name><round_name>):
+ 	Ditto.
+ 	(*<plusminus_insn><mode>3): Ditto.
+ 	(avx512dq_mul<mode>3<mask_name>): Ditto.
+ 	(*<sse4_1_avx2>_mul<mode>3<mask_name>): Ditto.
+ 	(*andnot<mode>3): Ditto.
+ 	(<mask_codefor><code><mode>3<mask_name>): Ditto.
+ 	(*sub<mode>3<mask_name>_bcst): Removed.
+ 	(*add<mode>3<mask_name>_bcst): Ditto.
+ 	(*mul<mode>3<mask_name>_bcst): Ditto.
+ 	(*<avx512>_div<mode>3<mask_name>_bcst): Ditto.
+ 	(*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_1):
+ 	Ditto.
+ 	(*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_2):
+ 	Ditto.
+ 	(*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_3):
+ 	Ditto.
+ 	(*<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_1):
+ 	Ditto.
+ 	(*<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_2):
+ 	Ditto.
+ 	(*<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_3):
+ 	Ditto.
+ 	(*<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_1):
+ 	Ditto.
+ 	(*<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_2):
+ 	Ditto.
+ 	(*<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_3):
+ 	Ditto.
+ 	(*<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_1):
+ 	Ditto.
+ 	(*<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_2):
+ 	Ditto.
+ 	(*<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_3):
+ 	Ditto.
+ 	(*sub<mode>3_bcst): Ditto.
+ 	(*add<mode>3_bcst): Ditto.
+ 	(*avx512dq_mul<mode>3<mask_name>_bcst): Ditto.
+ 	(*avx512f_mul<mode>3<mask_name>_bcst): Ditto.
+ 	(*andnot<mode>3_bcst): Ditto.
+ 	(*<code><mode>3_bcst): Ditto.
+ 	* config/i386/subst.md (bcst_round_constraint): New subst
+ 	attribute.
+ 	(bcst_round_nimm_predicate): Ditto.
+ 	(bcst_mask_prefix3): Ditto.
+ 	(bcst_mask_prefix4): Ditto.
+ 
+ 2020-10-22  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/87767
+ 	* ira-costs.c (record_operand_costs): Extract memory operand
+ 	from recog_data.operand[i] for record_address_regs.
+ 	(record_reg_classes): Extract memory operand from OP for
+ 	conditional judgement MEM_P.
+ 	* ira.c (ira_setup_alts): Ditto.
+ 	* lra-constraints.c (extract_mem_from_operand): New function.
+ 	(satisfies_memory_constraint_p): Extract memory operand from
+ 	OP for decompose_mem_address, return false when there's no
+ 	memory operand inside OP.
+ 	(process_alt_operands): Remove MEM_P (op) since it would be
+ 	judged in satisfies_memory_constraint_p.
+ 	* recog.c (asm_operand_ok): Extract memory operand from OP for
+ 	judgement of memory_operand (OP, VOIDmode).
+ 	(constrain_operands): Don't unwrapper unary operator when
+ 	there's memory operand inside.
+ 	* rtl.h (extract_mem_from_operand): New decl.
+ 
+ 2020-10-22  Dennis Zhang  <dennis.zhang@arm.com>
+ 
+ 	* config/arm/mve.md (mve_vmaxq_<supf><mode>): Replace with ...
+ 	(mve_vmaxq_s<mode>, mve_vmaxq_u<mode>): ... these new insns to
+ 	use smax/umax instead of VMAXQ.
+ 	(mve_vminq_<supf><mode>): Replace with ...
+ 	(mve_vminq_s<mode>, mve_vminq_u<mode>): ... these new insns to
+ 	use smin/umin instead of VMINQ.
+ 	(mve_vmaxnmq_f<mode>): Use smax instead of VMAXNMQ_F.
+ 	(mve_vminnmq_f<mode>): Use smin instead of VMINNMQ_F.
+ 	* config/arm/vec-common.md (smin<mode>3): Use the new mode macros
+ 	ARM_HAVE_<MODE>_ARITH.
+ 	(umin<mode>3, smax<mode>3, umax<mode>3): Likewise.
+ 
+ 2020-10-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/97520
+ 	* gimple-range.cc (range_of_non_trivial_assignment): Handle x = &a
+ 	by returning a non-zero range.
+ 
+ 2020-10-22  Dennis Zhang  <dennis.zhang@arm.com>
+ 
+ 	* config/arm/mve.md (mve_vmulq<mode>): New entry for vmul instruction
+ 	using expression 'mult'.
+ 	(mve_vmulq_f<mode>): Use mult instead of VMULQ_F.
+ 	* config/arm/neon.md (mul<mode>3): Removed.
+ 	* config/arm/vec-common.md (mul<mode>3): Use the new mode macros
+ 	ARM_HAVE_<MODE>_ARITH. Use mode iterator VDQWH instead of VALLW.
+ 
+ 2020-10-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/97515
+ 	* value-query.cc (range_query::value_of_expr): If the result is
+ 	UNDEFINED, check to see if the global value is a constant.
+ 	(range_query::value_on_edge): Ditto.
+ 
+ 2020-10-21  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/97445
+ 	* ipa-inline.c (inline_insns_single): Add hint2 parameter.
+ 	(inline_insns_auto): Add hint2 parameter.
+ 	(can_inline_edge_by_limits_p): Update.
+ 	(want_inline_small_function_p): Update.
+ 	(wrapper_heuristics_may_apply): Update.
+ 
+ 2020-10-21  Richard Biener  <rguenther@suse.de>
+ 	    Andrew MacLeod  <amacleod@redhat.com>
+ 	    Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/97360
+ 	* config/rs6000/rs6000-call.c (rs6000_init_builtins): Remove call to
+ 	build_distinct_type_copy().
+ 
+ 2020-10-21  Jan Hubicka  <jh@suse.cz>
+ 
+ 	PR ipa/97445
+ 	* ipa-fnsummary.c (ipa_dump_hints): Add INLINE_HINT_builtin_constant_p.
+ 	(ipa_fn_summary::~ipa_fn_summary): Free builtin_constant_p_parms.
+ 	(ipa_fn_summary_t::duplicate): Duplicate builtin_constant_p_parms.
+ 	(ipa_dump_fn_summary): Dump builtin_constant_p_parms.
+ 	(add_builtin_constant_p_parm): New function
+ 	(set_cond_stmt_execution_predicate): Update builtin_constant_p_parms.
+ 	(ipa_call_context::estimate_size_and_time): Set
+ 	INLINE_HINT_builtin_constant_p..
+ 	(ipa_merge_fn_summary_after_inlining): Merge builtin_constant_p_parms.
+ 	(inline_read_section): Read builtin_constant_p_parms.
+ 	(ipa_fn_summary_write): Write builtin_constant_p_parms.
+ 	* ipa-fnsummary.h (enum ipa_hints_vals): Add
+ 	INLINE_HINT_builtin_constant_p.
+ 	* ipa-inline.c (want_inline_small_function_p): Use
+ 	INLINE_HINT_builtin_constant_p.
+ 	(edge_badness): Use INLINE_HINT_builtin_constant_p.
+ 
+ 2020-10-21  Douglas Rupp  <rupp@adacore.com>
+ 
+ 	* config/vx-common.h (LINK_SPEC, LIB_SPEC): Remove #undef.
+ 
+ 2020-10-21  Douglas Rupp  <rupp@adacore.com>
+ 	    Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config.gcc (powerpc*-wrs-vxworks7r*): New case.
+ 	* config/rs6000/vxworks.h: Rework to handle VxWorks7.
+ 	Refactor as common bits + vx6 vs vx7 ones. For the
+ 	latter, rely essentially on the Linux configuration
+ 	and adjust CPU to _VX_CPU in CPP_SPEC. Add a case
+ 	for e6500. Use SUB3TARGET_OVERRIDE_OPTIONS for specifics
+ 	to preserve the Linux SUBSUBTARGET_OVERRIDE_OPTIONS
+ 	for vx7.
+ 
+ 2020-10-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97500
+ 	* tree-vect-slp.c (vect_analyze_slp_backedges): Do not
+ 	fill backedges for inductions.
+ 
+ 2020-10-21  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/97506
+ 	* config/i386/i386-expand.c (ix86_expand_sse_movcc): Move
+ 	op_true to dest directly when op_true equals op_false.
+ 
+ 2020-10-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/97503
+ 	* tree-ssa-phiopt.c: Include internal-fn.h.
+ 	(cond_removal_in_popcount_pattern): Rename to ...
+ 	(cond_removal_in_popcount_clz_ctz_pattern): ... this.  Handle not just
+ 	popcount, but also clz and ctz if it has C?Z_DEFINED_VALUE_AT_ZERO 2.
+ 
+ 2020-10-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	* cfg.c (htab_bb_copy_original_entry): Remove.
+ 	(bb_copy_hasher): Likewise.
+ 	(bb_original, bb_copy, loop_copy): Use
+ 	hash_map<int_hash<int, -1, -2>, int>.
+ 	(original_copy_bb_pool): Remove.
+ 	(initialize_original_copy_tables): Adjust.
+ 	(reset_original_copy_tables): Likewise.
+ 	(free_original_copy_tables): Likewise.
+ 	(original_copy_tables_initialized_p): Likewise.
+ 	(copy_original_table_clear): Simplify.
+ 	(copy_original_table_set): Likewise.
+ 	(get_bb_original): Likewise.
+ 	(get_bb_copy): Likewise.
+ 	(get_loop_copy): Likewise.
+ 
+ 2020-10-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	* cfghooks.c (copy_bbs): Split out loop computing new_edges.
+ 
+ 2020-10-21  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range.cc (gimple_ranger::range_of_ssa_name_with_loop_info):
+ 	Remove TREE_OVERFLOW special case.
+ 	* vr-values.c (bounds_of_var_in_loop): Adjust overflow for
+ 	invariants.
+ 
+ 2020-10-21  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* vr-values.h: Remove simplify_cond_using_ranges_2.
+ 	(range_fits_type_p): New.
+ 	* vr-values.c (range_fits_type_p): Remove static qualifier.
+ 	(vrp_simplify_cond_using_ranges): Move...
+ 	* tree-vrp.c (vrp_simplify_cond_using_ranges): ...to here.
+ 
+ 2020-10-20  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/97505
+ 	* vr-values.c (vr_values::extract_range_basic): Trap if
+ 	vr_values version disagrees with range_of_builtin_call.
+ 
+ 2020-10-20  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+ 	Don't implcitly enable Altivec ABI if set on the command line.
+ 
+ 2020-10-20  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* calls.c (get_size_range): Adjust to work with ranger.
+ 	* calls.h (get_size_range): Add ranger argument to prototype.
+ 	* gimple-ssa-warn-restrict.c (class wrestrict_dom_walker): Remove.
+ 	(check_call): Pull out of wrestrict_dom_walker into a
+ 	static function.
+ 	(wrestrict_dom_walker::before_dom_children): Rename to...
+ 	(wrestrict_walk): ...this.
+ 	(pass_wrestrict::execute): Instantiate ranger.
+ 	(class builtin_memref): Add stmt and query fields.
+ 	(builtin_access::builtin_access): Add range_query field.
+ 	(builtin_memref::builtin_memref): Same.
+ 	(builtin_memref::extend_offset_range): Same.
+ 	(builtin_access::builtin_access): Make work with ranger.
+ 	(wrestrict_dom_walker::check_call): Pull out into...
+ 	(check_call): ...here.
+ 	(check_bounds_or_overlap): Add range_query argument.
+ 	* gimple-ssa-warn-restrict.h (check_bounds_or_overlap):
+ 	Add range_query and gimple stmt arguments.
+ 
+ 2020-10-20  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-ssa-warn-alloca.c (enum alloca_type): Remove
+ 	ALLOCA_BOUND_UNKNOWN and ALLOCA_CAST_FROM_SIGNED.
+ 	(warn_limit_specified_p): New.
+ 	(alloca_call_type_by_arg): Remove.
+ 	(cast_from_signed_p): Remove.
+ 	(is_max): Remove.
+ 	(alloca_call_type): Remove heuristics and replace with call into
+ 	ranger.
+ 	(pass_walloca::execute): Instantiate ranger.
+ 
+ 2020-10-20  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* lto-wrapper.c (run_gcc): Use proper variable for
+ 	%u.ltrans_args dump suffix.
+ 
+ 2020-10-20  Zhiheng Xie  <xiezhiheng@huawei.com>
+ 	    Nannan Zheng  <zhengnannan@huawei.com>
+ 
+ 	* config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
+ 	for get/set reg intrinsics.
+ 
+ 2020-10-20  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range.cc (gimple_ranger::range_of_builtin_ubsan_call):
+ 	Make externally visble...
+ 	(range_of_builtin_ubsan_call): ...here.  Add range_query argument.
+ 	(gimple_ranger::range_of_builtin_call): Make externally visible...
+ 	(range_of_builtin_call): ...here.  Add range_query argument.
+ 	* gimple-range.h (range_of_builtin_call): Move out from class and
+ 	make externally visible.
+ 	* vr-values.c (vr_values::extract_range_basic): Abstract out
+ 	builtin handling to...
+ 	(vr_values::range_of_expr): Handle non SSAs.
+ 	(vr_values::extract_range_builtin): ...here.
+ 	* vr-values.h (class vr_values): Add extract_range_builtin.
+ 	(range_of_expr): Rename NAME to EXPR.
+ 
+ 2020-10-20  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/97501
+ 	* gimple-range.cc (gimple_ranger::range_of_ssa_name_with_loop_info):
+ 	Saturate overflows returned from SCEV.
+ 
+ 2020-10-20  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (irange::operator=): Split up call to
+ 	copy_legacy_range into...
+ 	(irange::copy_to_legacy): ...this.
+ 	(irange::copy_legacy_to_multi_range): ...and this.
+ 	(irange::copy_legacy_range): Remove.
+ 	* value-range.h: Remove copoy_legacy_range.
+ 	Add copy_legacy_to_multi_range and copy_to_legacy.
+ 
+ 2020-10-20  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* doc/invoke.texi (NVPTX options): Use @item not @itemx.
+ 
+ 2020-10-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-cfg.c (reinstall_phi_args): Remove.
+ 	(gimple_split_edge): Remove PHIs around the edge redirection
+ 	to avoid touching them at all.
+ 
+ 2020-10-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.c (vectorizable_reduction): Use the correct
+ 	loops latch edge for the PHI arg lookup.
+ 
+ 2020-10-20  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.md (andneghi3): Allow general operand for
+ 	op1 and update output assembler template.
+ 
+ 2020-10-20  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* collect-utils.c (collect_execute, fork_execute): Add at-file suffix
+ 	argument.
+ 	* collect-utils.h (collect_execute, fork_execute): Update prototype.
+ 	* collect2.c (maybe_run_lto_and_relink, do_link, main, do_dsymutil):
+ 	Update calls by passing NULL.
+ 	* config/i386/intelmic-mkoffload.c (compile_for_target,
+ 	generate_host_descr_file, prepare_target_image, main): Likewise.
+ 	* config/gcn/mkoffload.c (compile_native, main): Pass at-file suffix.
+ 	* config/nvptx/mkoffload.c (compile_native, main): Likewise.
+ 	* lto-wrapper.c (compile_offload_image): Likewise.
+ 
+ 2020-10-20  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op.cc (operator_rshift::op1_range): Special case
+ 	shifting by zero.
+ 
+ 2020-10-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97496
+ 	* tree-vect-slp.c (vect_get_and_check_slp_defs): Guard extern
+ 	promotion with not in pattern.
+ 
+ 2020-10-20  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_expand_vec_strlen): Add alignment
+ 	for memory access inside loop.
+ 
+ 2020-10-19  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/97360
+ 	* gimple-range.h (range_compatible_p): New.
+ 	* gimple-range-gori.cc (is_gimple_logical_p): Use range_compatible_p.
+ 	(range_is_either_true_or_false): Ditto.
+ 	(gori_compute::outgoing_edge_range_p): Cast result to the correct
+ 	type if necessary.
+ 	(logical_stmt_cache::cacheable_p): Use range_compatible_p.
+ 	* gimple-range.cc (gimple_ranger::calc_stmt): Check range_compatible_p
+ 	before casting the range.
+ 	(gimple_ranger::range_on_exit): Use range_compatible_p.
+ 	(gimple_ranger::range_on_edge): Ditto.
+ 
+ 2020-10-19  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/97456
+ 	* tree-complex.c (set_component_ssa_name): Do not replace ignored decl
+ 	default definitions with new component vars.  Reorder if conditions.
+ 
+ 2020-10-19  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* config/rs6000/vsx.md (vextract_fp_from_shorth):  Fix vals_be.
+ 	(vextract_fp_from_shortl) Same.
+ 
+ 2020-10-19  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/97488
+ 	* range-op.cc (operator_lshift::op1_range): Handle large right shifts.
+ 
+ 2020-10-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	* ipa-modref.c (compute_parm_map): Clear vector.
+ 
+ 2020-10-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97486
+ 	* tree-vect-slp.c (vect_slp_function): Split after stmts
+ 	ending a BB.
+ 
+ 2020-10-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/invoke.texi (OPptimize Options): Add missing closing
+ 	parenthesis.
+ 
+ 2020-10-19  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/97467
+ 	* range-op.cc (operator_lshift::op1_range): Handle shifts by 0.
+ 
+ 2020-10-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97466
+ 	* tree-vect-slp.c (vect_get_and_check_slp_defs): Remove
+ 	spurious assert, re-indent.
+ 
+ 2020-10-19  Li Jia He  <helijia@gcc.gnu.org>
+ 
+ 	PR tree-optimization/66552
+ 	* match.pd (x << (n % C) -> x << (n & C-1)): New simplification.
+ 
+ 2020-10-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-cfg.c (verify_gimple_comparison): Drop special-case
+ 	for pointer comparison.
+ 
+ 2020-10-16  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* vr-values.c (dump_all_value_ranges): Only dump names which are
+ 	still active.
+ 
+ 2020-10-16  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* range-op.cc (pointer_plus_operator::wi_fold): Make pointer_plus
+ 	[0, 0] + const return a [const, const] range.
+ 
+ 2020-10-16  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-ssa-evrp.c (hybrid_folder::value_on_edge): Call
+ 	evrp_folder::value_of_expr directly.
+ 	(hybrid_folder::value_of_stmt): Ditto.
+ 
+ 2020-10-16  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/97462
+ 	* range-op.cc (operator_lshift::op1_range): Don't trap on negative
+ 	shifts.
+ 
+ 2020-10-16  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/vxworks.h (VX_CRTBEGIN_SPEC): Likewise.
+ 
+ 2020-10-16  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/vxworks/_vxworks-versions.h: Only include
+ 	version.h if _WRS_VXWORKS_MAJOR is not defined.
+ 	Provide a default _WRS_VXWORKS_MINOR (0).
+ 
+ 2020-10-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	PR target/97327
+ 	* config/arm/arm.c (fp_bitlist): Add isa_bit_mve_float to FP bits array.
+ 
+ 2020-10-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_get_and_check_slp_defs): For BB
+ 	vectorization swap operands only if it helps, demote mismatches to
+ 	external.
+ 
+ 2020-10-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	PR target/97291
+ 	* config/arm/arm-builtins.c (arm_strsbwbs_qualifiers): Modify array.
+ 	(arm_strsbwbu_qualifiers): Likewise.
+ 	(arm_strsbwbs_p_qualifiers): Likewise.
+ 	(arm_strsbwbu_p_qualifiers): Likewise.
+ 	* config/arm/arm_mve.h (__arm_vstrdq_scatter_base_wb_s64): Modify
+ 	function definition.
+ 	(__arm_vstrdq_scatter_base_wb_u64): Likewise.
+ 	(__arm_vstrdq_scatter_base_wb_p_s64): Likewise.
+ 	(__arm_vstrdq_scatter_base_wb_p_u64): Likewise.
+ 	(__arm_vstrwq_scatter_base_wb_p_s32): Likewise.
+ 	(__arm_vstrwq_scatter_base_wb_p_u32): Likewise.
+ 	(__arm_vstrwq_scatter_base_wb_s32): Likewise.
+ 	(__arm_vstrwq_scatter_base_wb_u32): Likewise.
+ 	(__arm_vstrwq_scatter_base_wb_f32): Likewise.
+ 	(__arm_vstrwq_scatter_base_wb_p_f32): Likewise.
+ 	* config/arm/arm_mve_builtins.def (vstrwq_scatter_base_wb_add_u): Remove
+ 	expansion for the builtin.
+ 	(vstrwq_scatter_base_wb_add_s): Likewise.
+ 	(vstrwq_scatter_base_wb_add_f): Likewise.
+ 	(vstrdq_scatter_base_wb_add_u): Likewise.
+ 	(vstrdq_scatter_base_wb_add_s): Likewise.
+ 	(vstrwq_scatter_base_wb_p_add_u): Likewise.
+ 	(vstrwq_scatter_base_wb_p_add_s): Likewise.
+ 	(vstrwq_scatter_base_wb_p_add_f): Likewise.
+ 	(vstrdq_scatter_base_wb_p_add_u): Likewise.
+ 	(vstrdq_scatter_base_wb_p_add_s): Likewise.
+ 	* config/arm/mve.md (mve_vstrwq_scatter_base_wb_<supf>v4si): Remove
+ 	expand.
+ 	(mve_vstrwq_scatter_base_wb_add_<supf>v4si): Likewise.
+ 	(mve_vstrwq_scatter_base_wb_<supf>v4si_insn): Rename pattern to ...
+ 	(mve_vstrwq_scatter_base_wb_<supf>v4si): This.
+ 	(mve_vstrwq_scatter_base_wb_p_<supf>v4si): Remove expand.
+ 	(mve_vstrwq_scatter_base_wb_p_add_<supf>v4si): Likewise.
+ 	(mve_vstrwq_scatter_base_wb_p_<supf>v4si_insn): Rename pattern to ...
+ 	(mve_vstrwq_scatter_base_wb_p_<supf>v4si): This.
+ 	(mve_vstrwq_scatter_base_wb_fv4sf): Remove expand.
+ 	(mve_vstrwq_scatter_base_wb_add_fv4sf): Likewise.
+ 	(mve_vstrwq_scatter_base_wb_fv4sf_insn): Rename pattern to ...
+ 	(mve_vstrwq_scatter_base_wb_fv4sf): This.
+ 	(mve_vstrwq_scatter_base_wb_p_fv4sf): Remove expand.
+ 	(mve_vstrwq_scatter_base_wb_p_add_fv4sf): Likewise.
+ 	(mve_vstrwq_scatter_base_wb_p_fv4sf_insn): Rename pattern to ...
+ 	(mve_vstrwq_scatter_base_wb_p_fv4sf): This.
+ 	(mve_vstrdq_scatter_base_wb_<supf>v2di): Remove expand.
+ 	(mve_vstrdq_scatter_base_wb_add_<supf>v2di): Likewise.
+ 	(mve_vstrdq_scatter_base_wb_<supf>v2di_insn): Rename pattern to ...
+ 	(mve_vstrdq_scatter_base_wb_<supf>v2di): This.
+ 	(mve_vstrdq_scatter_base_wb_p_<supf>v2di): Remove expand.
+ 	(mve_vstrdq_scatter_base_wb_p_add_<supf>v2di): Likewise.
+ 	(mve_vstrdq_scatter_base_wb_p_<supf>v2di_insn): Rename pattern to ...
+ 	(mve_vstrdq_scatter_base_wb_p_<supf>v2di): This.
+ 
+ 2020-10-16  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/multilib-generator (IMPLIED_EXT): New.
+ 	(arch_canonicalize): Update comment and handle implied extensions.
+ 
+ 2020-10-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_get_and_check_slp_defs): First analyze
+ 	all operands and fill in the def_stmts and ops entries.
+ 	(vect_def_types_match): New helper.
+ 
+ 2020-10-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/97404
+ 	* ipa-prop.c (struct ipa_vr_ggc_hash_traits):
+ 	Compare types of VRP as we can merge ranges of different types.
+ 
+ 2020-10-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97428
+ 	* tree-vect-slp.c (vect_analyze_slp_instance): Split store
+ 	groups also for loop vectorization.
+ 
+ 2020-10-15  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/97436
+ 	* config/nvptx/nvptx.opt (m32): Comment out.
+ 	* doc/invoke.texi (NVPTX options): Remove -m32.
+ 
+ 2020-10-15  Jan Hubicka  <hubicka@ucw.cz>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	* attr-fnspec.h: Fix toplevel comment.
+ 
+ 2020-10-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-pretty-print.c (dump_mem_ref): Print constant offset
+ 	also for TARGET_MEM_REF.
+ 
+ 2020-10-15  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* symtab.c (symtab_node::binds_to_current_def_p): Also accept symbols
+ 	defined in other partition.
+ 
+ 2020-10-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.c (vectorizable_live_operation): Adjust
+ 	dominance query.
+ 
+ 2020-10-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97482
+ 	* tree-data-ref.c (split_constant_offset_1): Handle
+ 	trivial conversions better.
+ 	* fold-const.c (convert_to_ptrofftype_loc): Elide conversion
+ 	if the offset is already ptrofftype_p.
+ 
+ 2020-10-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/97295
+ 	* profile-count.c (profile_count::to_frequency): Move part of
+ 	gcc_assert to STATIC_ASSERT.
+ 	* regs.h (REG_FREQ_FROM_BB): Do not use count.to_frequency for
+ 	a function that does not have count_max initialized.
+ 
+ 2020-10-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* params.opt (-param-ipa-jump-function-lookups=): Add full stop at
+ 	the end of the parameter description.
+ 
+ 2020-10-15  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.c (riscv_cpu_tables): New.
+ 	(riscv_arch_str): Return empty string if current_subset_list
+ 	is NULL.
+ 	(riscv_find_cpu): New.
+ 	(riscv_handle_option): Verify option value of -mcpu.
+ 	(riscv_expand_arch): Using std::string.
+ 	(riscv_default_mtune): New.
+ 	(riscv_expand_arch_from_cpu): Ditto.
+ 	* config/riscv/riscv-cores.def: New.
+ 	* config/riscv/riscv-protos.h (riscv_find_cpu): New.
+ 	(riscv_cpu_info): New.
+ 	* config/riscv/riscv.c (riscv_tune_info): Rename ...
+ 	(riscv_tune_param): ... to this.
+ 	(riscv_cpu_info): Rename ...
+ 	(riscv_tune_info): ... to this.
+ 	(tune_info): Rename ...
+ 	(tune_param): ... to this.
+ 	(rocket_tune_info): Update data type name.
+ 	(sifive_7_tune_info): Ditto.
+ 	(optimize_size_tune_info): Ditto.
+ 	(riscv_cpu_info_table): Rename ...
+ 	(riscv_tune_info_table): ... to this.
+ 	(riscv_parse_cpu): Rename ...
+ 	(riscv_parse_tune): ... to this, and translate valid -mcpu option to
+ 	-mtune option.
+ 	(riscv_rtx_costs): Rename tune_info to tune_param.
+ 	(riscv_class_max_nregs): Ditto.
+ 	(riscv_memory_move_cost): Ditto.
+ 	(riscv_init_machine_status): Use value of -mcpu if -mtune is not
+ 	given, and rename tune_info to tune_param.
+ 	* config/riscv/riscv.h (riscv_expand_arch_from_cpu): New.
+ 	(riscv_default_mtune): Ditto.
+ 	(EXTRA_SPEC_FUNCTIONS): Add riscv_expand_arch_from_cpu and
+ 	riscv_default_mtune.
+ 	(OPTION_DEFAULT_SPECS): Handle default value of -march/-mabi.
+ 	(DRIVER_SELF_SPECS): Expand -march from -mcpu if -march is not
+ 	given.
+ 	* config/riscv/riscv.opt (-mcpu): New option.
+ 	* config/riscv/t-riscv ($(common_out_file)): Add
+ 	riscv-cores.def to dependency.
+ 	* doc/invoke.texi (RISC-V Option): Add -mcpu, and update the
+ 	description of default value for -mtune and -march.
+ 
+ 2020-10-15  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h (get_available_features):
+ 	Detect HRESET.
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA2_HRESET_SET,
+ 	OPTION_MASK_ISA2_HRESET_UNSET): New macros.
+ 	(ix86_handle_option): Handle -mhreset.
+ 	* common/config/i386/i386-cpuinfo.h (enum processor_features):
+ 	Add FEATURE_HRESET.
+ 	* common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY
+ 	for hreset.
+ 	* config.gcc: Add hresetintrin.h
+ 	* config/i386/hresetintrin.h: New header file.
+ 	* config/i386/x86gprintrin.h: Include hresetintrin.h.
+ 	* config/i386/cpuid.h (bit_HRESET): New.
+ 	* config/i386/i386-builtin.def: Add new builtin.
+ 	* config/i386/i386-expand.c (ix86_expand_builtin):
+ 	Handle new builtin.
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Define
+ 	__HRESET__.
+ 	* config/i386/i386-options.c (isa2_opts): Add -mhreset.
+ 	(ix86_valid_target_attribute_inner_p): Handle hreset.
+ 	* config/i386/i386.h (TARGET_HRESET, TARGET_HRESET_P,
+ 	PTA_HRESET): New.
+ 	(PTA_ALDERLAKE): Add PTA_HRESET.
+ 	* config/i386/i386.opt: Add option -mhreset.
+ 	* config/i386/i386.md (UNSPECV_HRESET): New unspec.
+ 	(hreset): New define_insn.
+ 	* doc/invoke.texi: Document -mhreset.
+ 	* doc/extend.texi: Document hreset.
+ 
+ 2020-10-15  Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h (get_available_features):
+ 	Detect UINTR.
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA2_UINTR_SET
+ 	OPTION_MASK_ISA2_UINTR_UNSET): New.
+ 	(ix86_handle_option): Handle -muintr.
+ 	* common/config/i386/i386-cpuinfo.h (enum processor_features):
+ 	Add FEATURE_UINTR.
+ 	* common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY
+ 	for uintr.
+ 	* config.gcc: Add uintrintrin.h to extra_headers.
+ 	* config/i386/uintrintrin.h: New.
+ 	* config/i386/cpuid.h (bit_UINTR): New.
+ 	* config/i386/i386-builtin-types.def: Add new types.
+ 	* config/i386/i386-builtin.def: Add new builtins.
+ 	* config/i386/i386-builtins.c (ix86_init_mmx_sse_builtins): Add
+ 	__builtin_ia32_testui.
+ 	* config/i386/i386-builtins.h (ix86_builtins): Add
+ 	IX86_BUILTIN_TESTUI.
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Define
+ 	__UINTR__.
+ 	* config/i386/i386-expand.c (ix86_expand_special_args_builtin):
+ 	Handle UINT8_FTYPE_VOID.
+ 	(ix86_expand_builtin): Handle IX86_BUILTIN_TESTUI.
+ 	* config/i386/i386-options.c (isa2_opts): Add -muintr.
+ 	(ix86_valid_target_attribute_inner_p): Handle UINTR.
+ 	(ix86_option_override_internal): Add TARGET_64BIT check for UINTR.
+ 	* config/i386/i386.h (TARGET_UINTR, TARGET_UINTR_P, PTA_UINTR): New.
+ 	(PTA_SAPPHIRRAPIDS): Add PTA_UINTR.
+ 	* config/i386/i386.opt: Add -muintr.
+ 	* config/i386/i386.md
+ 	(define_int_iterator UINTR_UNSPECV): New.
+ 	(define_int_attr uintr_unspecv): New.
+ 	(uintr_<uintr_unspecv>, uintr_senduipi, testui):
+ 	New define_insn patterns.
+ 	* config/i386/x86gprintrin.h: Include uintrintrin.h
+ 	* doc/invoke.texi: Document -muintr.
+ 	* doc/extend.texi: Document uintr.
+ 
+ 2020-10-14  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/97391
+ 	* builtins.c (gimple_parm_array_size): Peel off one less layer
+ 	of array types.
+ 
+ 2020-10-14  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c/97413
+ 	* attribs.c (init_attr_rdwr_indices): Unwrap extra list layer.
+ 
+ 2020-10-14  Sunil K Pandey  <skpgkp2@gmail.com>
+ 
+ 	PR target/95483
+ 	* config/i386/avx2intrin.h (_mm_broadcastsi128_si256): New intrinsics.
+ 	(_mm_broadcastsd_pd): Ditto.
+ 	* config/i386/avx512bwintrin.h (_mm512_loadu_epi16): New intrinsics.
+ 	(_mm512_storeu_epi16): Ditto.
+ 	(_mm512_loadu_epi8): Ditto.
+ 	(_mm512_storeu_epi8): Ditto.
+ 	* config/i386/avx512dqintrin.h (_mm_reduce_round_sd): New intrinsics.
+ 	(_mm_mask_reduce_round_sd): Ditto.
+ 	(_mm_maskz_reduce_round_sd): Ditto.
+ 	(_mm_reduce_round_ss): Ditto.
+ 	(_mm_mask_reduce_round_ss): Ditto.
+ 	(_mm_maskz_reduce_round_ss): Ditto.
+ 	(_mm512_reduce_round_pd): Ditto.
+ 	(_mm512_mask_reduce_round_pd): Ditto.
+ 	(_mm512_maskz_reduce_round_pd): Ditto.
+ 	(_mm512_reduce_round_ps): Ditto.
+ 	(_mm512_mask_reduce_round_ps): Ditto.
+ 	(_mm512_maskz_reduce_round_ps): Ditto.
+ 	* config/i386/avx512erintrin.h
+ 	(_mm_mask_rcp28_round_sd): New intrinsics.
+ 	(_mm_maskz_rcp28_round_sd): Ditto.
+ 	(_mm_mask_rcp28_round_ss): Ditto.
+ 	(_mm_maskz_rcp28_round_ss): Ditto.
+ 	(_mm_mask_rsqrt28_round_sd): Ditto.
+ 	(_mm_maskz_rsqrt28_round_sd): Ditto.
+ 	(_mm_mask_rsqrt28_round_ss): Ditto.
+ 	(_mm_maskz_rsqrt28_round_ss): Ditto.
+ 	(_mm_mask_rcp28_sd): Ditto.
+ 	(_mm_maskz_rcp28_sd): Ditto.
+ 	(_mm_mask_rcp28_ss): Ditto.
+ 	(_mm_maskz_rcp28_ss): Ditto.
+ 	(_mm_mask_rsqrt28_sd): Ditto.
+ 	(_mm_maskz_rsqrt28_sd): Ditto.
+ 	(_mm_mask_rsqrt28_ss): Ditto.
+ 	(_mm_maskz_rsqrt28_ss): Ditto.
+ 	* config/i386/avx512fintrin.h (_mm_mask_sqrt_sd): New intrinsics.
+ 	(_mm_maskz_sqrt_sd): Ditto.
+ 	(_mm_mask_sqrt_ss): Ditto.
+ 	(_mm_maskz_sqrt_ss): Ditto.
+ 	(_mm_mask_scalef_sd): Ditto.
+ 	(_mm_maskz_scalef_sd): Ditto.
+ 	(_mm_mask_scalef_ss): Ditto.
+ 	(_mm_maskz_scalef_ss): Ditto.
+ 	(_mm_mask_cvt_roundsd_ss): Ditto.
+ 	(_mm_maskz_cvt_roundsd_ss): Ditto.
+ 	(_mm_mask_cvt_roundss_sd): Ditto.
+ 	(_mm_maskz_cvt_roundss_sd): Ditto.
+ 	(_mm_mask_cvtss_sd): Ditto.
+ 	(_mm_maskz_cvtss_sd): Ditto.
+ 	(_mm_mask_cvtsd_ss): Ditto.
+ 	(_mm_maskz_cvtsd_ss): Ditto.
+ 	(_mm512_cvtsi512_si32): Ditto.
+ 	(_mm_cvtsd_i32): Ditto.
+ 	(_mm_cvtss_i32): Ditto.
+ 	(_mm_cvti32_sd): Ditto.
+ 	(_mm_cvti32_ss): Ditto.
+ 	(_mm_cvtsd_i64): Ditto.
+ 	(_mm_cvtss_i64): Ditto.
+ 	(_mm_cvti64_sd): Ditto.
+ 	(_mm_cvti64_ss): Ditto.
+ 	* config/i386/avx512vlbwintrin.h (_mm256_storeu_epi8): New intrinsics.
+ 	(_mm_storeu_epi8): Ditto.
+ 	(_mm256_loadu_epi16): Ditto.
+ 	(_mm_loadu_epi16): Ditto.
+ 	(_mm256_loadu_epi8): Ditto.
+ 	(_mm_loadu_epi8): Ditto.
+ 	(_mm256_storeu_epi16): Ditto.
+ 	(_mm_storeu_epi16): Ditto.
+ 	* config/i386/avx512vlintrin.h (_mm256_load_epi64): New intrinsics.
+ 	(_mm_load_epi64): Ditto.
+ 	(_mm256_load_epi32): Ditto.
+ 	(_mm_load_epi32): Ditto.
+ 	(_mm256_store_epi32): Ditto.
+ 	(_mm_store_epi32): Ditto.
+ 	(_mm256_loadu_epi64): Ditto.
+ 	(_mm_loadu_epi64): Ditto.
+ 	(_mm256_loadu_epi32): Ditto.
+ 	(_mm_loadu_epi32): Ditto.
+ 	(_mm256_mask_cvt_roundps_ph): Ditto.
+ 	(_mm256_maskz_cvt_roundps_ph): Ditto.
+ 	(_mm_mask_cvt_roundps_ph): Ditto.
+ 	(_mm_maskz_cvt_roundps_ph): Ditto.
+ 	* config/i386/avxintrin.h (_mm256_cvtsi256_si32): New intrinsics.
+ 	* config/i386/emmintrin.h (_mm_loadu_si32): New intrinsics.
+ 	(_mm_loadu_si16): Ditto.
+ 	(_mm_storeu_si32): Ditto.
+ 	(_mm_storeu_si16): Ditto.
+ 	* config/i386/i386-builtin-types.def
+ 	(V8DF_FTYPE_V8DF_INT_V8DF_UQI_INT): Add new type.
+ 	(V16SF_FTYPE_V16SF_INT_V16SF_UHI_INT): Ditto.
+ 	(V4SF_FTYPE_V4SF_V2DF_V4SF_UQI_INT): Ditto.
+ 	(V2DF_FTYPE_V2DF_V4SF_V2DF_UQI_INT): Ditto.
+ 	* config/i386/i386-builtin.def
+ 	(__builtin_ia32_cvtsd2ss_mask_round): New builtin.
+ 	(__builtin_ia32_cvtss2sd_mask_round): Ditto.
+ 	(__builtin_ia32_rcp28sd_mask_round): Ditto.
+ 	(__builtin_ia32_rcp28ss_mask_round): Ditto.
+ 	(__builtin_ia32_rsqrt28sd_mask_round): Ditto.
+ 	(__builtin_ia32_rsqrt28ss_mask_round): Ditto.
+ 	(__builtin_ia32_reducepd512_mask_round): Ditto.
+ 	(__builtin_ia32_reduceps512_mask_round): Ditto.
+ 	(__builtin_ia32_reducesd_mask_round): Ditto.
+ 	(__builtin_ia32_reducess_mask_round): Ditto.
+ 	* config/i386/i386-expand.c
+ 	(ix86_expand_round_builtin): Expand round builtin for new type.
+ 	(V8DF_FTYPE_V8DF_INT_V8DF_UQI_INT)
+ 	(V16SF_FTYPE_V16SF_INT_V16SF_UHI_INT)
+ 	(V4SF_FTYPE_V4SF_V2DF_V4SF_UQI_INT)
+ 	(V2DF_FTYPE_V2DF_V4SF_V2DF_UQI_INT)
+ 	* config/i386/mmintrin.h ()
+ 	Define datatype __m32 and __m16.
+ 	Define datatype __m32_u and __m16_u.
+ 	* config/i386/sse.md: Adjust pattern.
+ 	(<mask_codefor>reducep<mode><mask_name><round_saeonly_name>): Adjust.
+ 	(reduces<mode><mask_scalar_name><round_saeonly_scalar_name>): Ditto.
+ 	(sse2_cvtsd2ss<mask_name><round_name>): Ditto.
+ 	(sse2_cvtss2sd<mask_name><round_saeonly_name>): Ditto.
+ 	(avx512er_vmrcp28<mode><mask_name><round_saeonly_name>): Ditto.
+ 	(avx512er_vmrsqrt28<mode><mask_name><round_saeonly_name>): Ditto.
+ 
+ 2020-10-14  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Fix
+ 	the VX_CPU selection for -mcpu=xscale on arm-vxworks.
+ 
+ 2020-10-14  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/rs6000/vxworks.h (TARGET_OS_CPP_BUILTINS): Accommodate
+ 	expectations from different versions of VxWorks, for 32 or 64bit
+ 	configurations.
+ 
+ 2020-10-14  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/vxworks.h: #undef CPLUSPLUS_CPP_SPEC.
+ 
+ 2020-10-14  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/t-vxworks: Adjust the VxWorks alternative LIMITS_H guard
+ 	for glimits.h, make it both closer to the previous one and easier to
+ 	search for.
+ 
+ 2020-10-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/97387
+ 	* config/i386/i386.md (CC_CCC): New mode iterator.
+ 	(*setcc_qi_addqi3_cconly_overflow_1_<mode>): New
+ 	define_insn_and_split.
+ 	* config/i386/i386.c (ix86_cc_mode): Return CCCmode
+ 	for *setcc_qi_addqi3_cconly_overflow_1_<mode> pattern operands.
+ 	(ix86_rtx_costs): Return true and *total = 0;
+ 	for *setcc_qi_addqi3_cconly_overflow_1_<mode> pattern.  Use op0 and
+ 	op1 temporaries to simplify COMPARE checks.
+ 
+ 2020-10-14  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/97396
+ 	* gimple-range.cc (gimple_ranger::range_of_phi): Do not call
+ 	range_of_ssa_name_with_loop_info with the loop tree root.
+ 
+ 2020-10-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_get_and_check_slp_defs): Split out
+ 	test for compatible operand types.
+ 
+ 2020-10-14  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/vxworks.c (vxworks_override_options): Guard pic checks with
+ 	flag_pic > 0 instead of just flag_pic.
+ 
+ 2020-10-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-fnsummary.c (remap_edge_summaries): Make offset_map HOST_WIDE_INT.
+ 	(remap_freqcounting_predicate): Likewise.
+ 	(ipa_merge_fn_summary_after_inlining): Likewise.
+ 	* ipa-predicate.c (predicate::remap_after_inlining): Likewise
+ 	* ipa-predicate.h (remap_after_inlining): Update.
+ 
+ 2020-10-14  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (compute_parm_map): Handle POINTER_PLUS_EXPR in
+ 	PASSTHROUGH.
+ 
+ 2020-10-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_get_and_check_slp_defs): Move
+ 	check for duplicate/interleave of variable size constants
+ 	to a place done once and early.
+ 	(vect_build_slp_tree_2): Adjust heuristics when to build
+ 	a BB SLP node from scalars.
+ 
+ 2020-10-14  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* tracer.c (cached_can_duplicate_bb_p, analyze_bb): Use
+ 	can_duplicate_block_p.
+ 	(can_duplicate_insn_p, can_duplicate_bb_no_insn_iter_p)
+ 	(can_duplicate_bb_p): Move and merge ...
+ 	* tree-cfg.c (gimple_can_duplicate_bb_p): ... here.
+ 
+ 2020-10-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* doc/invoke.texi: (ipa-jump-function-lookups): Document param.
+ 	* ipa-modref.c (merge_call_side_effects): Use
+ 	unadjusted_ptr_and_unit_offset.
+ 	* ipa-prop.c (unadjusted_ptr_and_unit_offset): New function.
+ 	* ipa-prop.h (unadjusted_ptr_and_unit_offset): Declare.
+ 	* params.opt: (-param-ipa-jump-function-lookups): New.
+ 
+ 2020-10-14  Jan Hubicka  <jh@suse.cz>
+ 
+ 	PR bootstrap/97350
+ 	* ipa-modref.c (ignore_edge): Do not ignore inlined edes.
+ 	(ipa_merge_modref_summary_after_inlining): Improve debug output and
+ 	fix parameter of ignore_stores_p.
+ 
+ 2020-10-14  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	PR target/96759
+ 	* expr.c (expand_assignment): Handle misaligned stores with PARALLEL
+ 	value.
+ 
+ 2020-10-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/97386
+ 	* combine.c (simplify_shift_const_1): Don't optimize nested ROTATEs if
+ 	they have different modes.
+ 
+ 2020-10-13  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/97379
+ 	* gimple-range-edge.cc (outgoing_range::calc_switch_ranges): Do
+ 	not save hash slot across calls to hash_table<>::get_or_insert.
+ 
+ 2020-10-13  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* lto-wrapper.c (find_crtoffloadtable): Fix last commit
+ 	by adding NULL as last argument to concat.
+ 
+ 2020-10-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (neoversen2_tunings): Define.
+ 	* config/aarch64/aarch64-cores.def (neoverse-n2): Use it.
+ 
+ 2020-10-13  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* lto-wrapper.c (find_crtoffloadtable): With -save-temps,
+ 	use non-temp file name utilizing the dump prefix.
+ 	(run_gcc): Update call.
+ 
+ 2020-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97382
+ 	* tree-vectorizer.h (_stmt_vec_info::same_align_refs): Remove.
+ 	(STMT_VINFO_SAME_ALIGN_REFS): Likewise.
+ 	* tree-vectorizer.c (vec_info::new_stmt_vec_info): Do not
+ 	allocate STMT_VINFO_SAME_ALIGN_REFS.
+ 	(vec_info::free_stmt_vec_info): Do not release
+ 	STMT_VINFO_SAME_ALIGN_REFS.
+ 	* tree-vect-data-refs.c (vect_analyze_data_ref_dependences):
+ 	Do not compute self and read-read dependences.
+ 	(vect_dr_aligned_if_related_peeled_dr_is): New helper.
+ 	(vect_dr_aligned_if_peeled_dr_is): Likewise.
+ 	(vect_update_misalignment_for_peel): Use it instead of
+ 	iterating over STMT_VINFO_SAME_ALIGN_REFS.
+ 	(dr_align_group_sort_cmp): New function.
+ 	(vect_enhance_data_refs_alignment): Count the number of
+ 	same aligned refs here and elide uses of STMT_VINFO_SAME_ALIGN_REFS.
+ 	(vect_find_same_alignment_drs): Remove.
+ 	(vect_analyze_data_refs_alignment): Do not call it.
+ 	* vec.h (auto_vec<T, 0>::auto_vec): Adjust CTOR to take
+ 	a vec<>&&, assert it isn't using auto storage.
+ 	(auto_vec& operator=): Apply a similar change.
+ 
+ 2020-10-13  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* config/nvptx/mkoffload.c (main): Add missing fclose (in).
+ 
+ 2020-10-13  Zhiheng Xie  <xiezhiheng@huawei.com>
+ 	    Nannan Zheng  <zhengnannan@huawei.com>
+ 
+ 	* config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
+ 	for mul/mla/mls intrinsics.
+ 
+ 2020-10-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-low.c (add_taskreg_looptemp_clauses): For triangular loops
+ 	with non-constant number of iterations add another 4 _looptemp_
+ 	clauses before the (optional) one for lastprivate.
+ 	(lower_omp_for_lastprivate): Skip those clauses when looking for
+ 	the lastprivate clause.
+ 	(lower_omp_for): For triangular loops with non-constant number of
+ 	iterations add another 4 _looptemp_ clauses.
+ 	* omp-expand.c (expand_omp_for_init_counts): For triangular loops
+ 	with non-constant number of iterations set counts[0],
+ 	fd->first_inner_iterations, fd->factor and fd->adjn1 from the newly
+ 	added _looptemp_ clauses.
+ 	(expand_omp_for_init_vars): Initialize the newly added _looptemp_
+ 	clauses.
+ 	(find_lastprivate_looptemp): New function.
+ 	(expand_omp_for_static_nochunk, expand_omp_for_static_chunk,
+ 	expand_omp_taskloop_for_outer): Use it instead of manually skipping
+ 	_looptemp_ clauses.
+ 
+ 2020-10-13  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/97389
+ 	* ipa-modref.c (dump_lto_records): Fix formating of dump file.
+ 	(modref_summary::dump): Do not check loads to be non-null.
+ 	(modref_summary_lto::dump): Do not check loads to be non-null.
+ 	(merge_call_side_effects): Improve debug output.
+ 	(analyze_call): Crash when cur_summary->loads is NULL.
+ 	(analyze_function): Update.
+ 	(modref_summaries::insert): Insert only into summaries, not
+ 	optimization_summaries.
+ 	(modref_summaries::duplicate): Likewise; crash when load or sotres
+ 	are NULL.
+ 	(modref_summaries_lto::duplicate): Crash when loads or stores are NULL.
+ 	(write_modref_records): param_index is signed.
+ 	(read_modref_records): param_index is signed.
+ 	(modref_write): Crash when loads or stores are NULL.
+ 	(read_section): Compensate previous change.
+ 	(pass_modref::execute): Do not check optimization_summaries t be
+ 	non-NULL.
+ 	(ignore_edge): Fix.
+ 	(compute_parm_map): Fix formating.
+ 	(modref_propagate_in_scc): Do not expect loads/stores to be NULL.
+ 
+ 2020-10-12  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* builtins.c (mathfn_built_in_type): Use CFN_ enumerators.
+ 
+ 2020-10-12  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/97381
+ 	* gimple-range-gori.cc (gori_compute::compute_operand2_range): If a range cannot be
+ 	calculated through operand 2, return false.
+ 
+ 2020-10-12  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/97378
+ 	* range-op.cc (operator_trunc_mod::wi_fold): Return VARYING for mod by zero.
+ 
+ 2020-10-12  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/invoke.texi: Document -Wanalyzer-write-to-const and
+ 	-Wanalyzer-write-to-string-literal.
+ 
+ 2020-10-12  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/97342
+ 	PR middle-end/97023
+ 	PR middle-end/96384
+ 	* builtins.c (access_ref::access_ref): Initialize new member.  Use
+ 	new enum.
+ 	(access_ref::size_remaining): Define new member function.
+ 	(inform_access): Handle expressions referencing objects.
+ 	(gimple_call_alloc_size): Call get_size_range instead of get_range.
+ 	(gimple_call_return_array): New function.
+ 	(get_range): Rename...
+ 	(get_offset_range): ...to this.  Improve detection of ranges from
+ 	types of expressions.
+ 	(gimple_call_return_array): Adjust calls to get_range per above.
+ 	(compute_objsize): Same.  Set maximum size or offset instead of
+ 	failing for unknown objects and handle more kinds of expressions.
+ 	(compute_objsize): Call access_ref::size_remaining.
+ 	(compute_objsize): Have transitional wrapper fail for pointers
+ 	into unknown objects.
+ 	(expand_builtin_strncmp): Call access_ref::size_remaining and
+ 	handle new cases.
+ 	* builtins.h (access_ref::size_remaining): Declare new member function.
+ 	(access_ref::set_max_size_range): Define new member function.
+ 	(access_ref::add_ofset, access_ref::add_max_ofset): Same.
+ 	(access_ref::add_base0): New data member.
+ 	* calls.c (get_size_range): Change argument type.  Handle new
+ 	condition.
+ 	* calls.h (get_size_range): Adjust signature.
+ 	(enum size_range_flags): Define new type.
+ 	* gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Correct
+ 	argument to get_size_range.
+ 	* tree-ssa-strlen.c (get_range): Handle anti-ranges.
+ 	(maybe_warn_overflow): Check DECL_P before assuming it's one.
+ 
+ 2020-10-12  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c++/96511
+ 	PR middle-end/96384
+ 	* builtins.c (get_range): Return full range of type when neither
+ 	value nor its range is available.  Fail for ranges inverted due
+ 	to the signedness of offsets.
+ 	(compute_objsize): Handle more special array members.  Handle
+ 	POINTER_PLUS_EXPR and VIEW_CONVERT_EXPR that come up in front end
+ 	code.
+ 	(access_ref::offset_bounded): Define new member function.
+ 	* builtins.h (access_ref::eval): New data member.
+ 	(access_ref::offset_bounded): New member function.
+ 	(access_ref::offset_zero): New member function.
+ 	(compute_objsize): Declare a new overload.
+ 	* gimple-array-bounds.cc (array_bounds_checker::check_array_ref): Use
+ 	enum special_array_member.
+ 	* tree.c (component_ref_size): Use special_array_member.
+ 	* tree.h (special_array_member): Define a new type.
+ 	(component_ref_size): Change signature.
+ 
+ 2020-10-12  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-modref.c (modref_summaries): Remove field IPA.
+ 	(class modref_summary_lto): New global variable.
+ 	(class modref_summaries_lto): New.
+ 	(modref_summary::modref_summary): Remove loads_lto and stores_lto.
+ 	(modref_summary::~modref_summary): Remove loads_lto and stores_lto.
+ 	(modref_summary::useful_p): Do not use lto_useful.
+ 	(modref_records_lto): New typedef.
+ 	(struct modref_summary_lto): New type.
+ 	(modref_summary_lto::modref_summary_lto): New member function.
+ 	(modref_summary_lto::~modref_summary_lto): New member function.
+ 	(modref_summary_lto::useful_p): New member function.
+ 	(modref_summary::dump): Do not handle lto.
+ 	(modref_summary_lto::dump): New member function.
+ 	(get_modref_function_summary): Use optimization_summary.
+ 	(merge_call_side_effects): Use optimization_summary.
+ 	(analyze_call): Use optimization_summary.
+ 	(struct summary_ptrs): New struture.
+ 	(analyze_load): Update to handle separate lto and non-lto summaries.
+ 	(analyze_store): Likewise.
+ 	(analyze_stmt): Likewise.
+ 	(remove_summary): Break out from ...
+ 	(analyze_function): ... here; update to handle seprated summaries.
+ 	(modref_summaries::insert): Do not handle lto summary.
+ 	(modref_summaries_lto::insert): New member function.
+ 	(modref_summaries::duplicate): Do not handle lto summary.
+ 	(modref_summaries_lto::duplicate): New member function.
+ 	(read_modref_records): Expect nolto_ret or lto_ret to be NULL>
+ 	(modref_write): Write lto summary.
+ 	(read_section): Handle separated summaries.
+ 	(modref_read): Initialize separated summaries.
+ 	(modref_transform): Handle separated summaries.
+ 	(pass_modref::execute): Turn summary to optimization_summary; handle
+ 	separate summaries.
+ 	(ignore_edge): Handle separate summaries.
+ 	(ipa_merge_modref_summary_after_inlining): Likewise.
+ 	(collapse_loads): Likewise.
+ 	(modref_propagate_in_scc): Likewise.
+ 	(pass_ipa_modref::execute): Likewise.
+ 	(ipa_modref_c_finalize): Likewise.
+ 	* ipa-modref.h (modref_records_lto): Remove typedef.
+ 	(struct modref_summary): Remove stores_lto, loads_lto and finished
+ 	fields; remove lto_useful_p member function.
+ 
+ 2020-10-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-data-refs.c (vect_slp_analyze_instance_dependence):
+ 	Use SLP_TREE_REPRESENTATIVE.
+ 	* tree-vectorizer.h (_slp_tree::vertex): New member used
+ 	for graphds interfacing.
+ 	* tree-vect-slp.c (vect_build_slp_tree_2): Allocate space
+ 	for PHI SLP children.
+ 	(vect_analyze_slp_backedges): New function filling in SLP
+ 	node children for PHIs that correspond to backedge values.
+ 	(vect_analyze_slp): Call vect_analyze_slp_backedges for the
+ 	graph.
+ 	(vect_slp_analyze_node_operations): Deal with a cyclic graph.
+ 	(vect_schedule_slp_instance): Likewise.
+ 	(vect_schedule_slp): Likewise.
+ 	(slp_copy_subtree): Remove.
+ 	(vect_slp_rearrange_stmts): Likewise.
+ 	(vect_attempt_slp_rearrange_stmts): Likewise.
+ 	(vect_slp_build_vertices): New functions.
+ 	(vect_slp_permute): Likewise.
+ 	(vect_slp_perms_eq): Likewise.
+ 	(vect_optimize_slp): Remove special code to elide
+ 	permutations with SLP reductions.  Implement generic
+ 	permute optimization.
+ 
+ 2020-10-12  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/arm.c (arm_preferred_simd_mode): Use E_FOOmode
+ 	instead of FOOmode.
+ 
+ 2020-10-12  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/97079
+ 	* internal-fn.c (internal_fn_stored_value_index): Handle also
+ 	.MASK_STORE_LANES.
+ 	* tree-vect-patterns.c (vect_recog_over_widening_pattern): Bail
+ 	out for unsupported TREE_TYPE.
+ 
+ 2020-10-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_bb_partition_graph_r): Use visited
+ 	hash-map.
+ 	(vect_bb_partition_graph): Likewise.
+ 
+ 2020-10-12  Duan bo  <duanbo3@huawei.com>
+ 
+ 	PR target/96757
+ 	* tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Add
+ 	the identification and handling of the dropped situation in the
+ 	cond expression processing phase.
+ 
+ 2020-10-12  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* doc/invoke.texi (nvptx's -misa): Update default to sm_35.
+ 
+ 2020-10-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/97349
+ 	* config/aarch64/arm_neon.h (vdupq_n_p8, vdupq_n_p16,
+ 	vdupq_n_p64, vdupq_n_s8, vdupq_n_s16, vdupq_n_u8, vdupq_n_u16):
+ 	Fix argument type.
+ 
+ 2020-10-12  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 
+ 	* config/s390/s390-protos.h (s390_build_signbit_mask): New
+ 	function.
+ 	* config/s390/s390.c (s390_contiguous_bitmask_vector_p):
+ 	Bitcast the argument to an integral mode.
+ 	(s390_expand_vec_init): Do not call
+ 	s390_contiguous_bitmask_vector_p with a scalar argument.
+ 	(s390_build_signbit_mask): New function.
+ 	* config/s390/vector.md (copysign<mode>3): Use bitwise
+ 	operations.
+ 
+ 2020-10-12  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/97371
+ 	* range-op.cc (operator_rshift::op1_range): Ignore shifts larger than
+ 	or equal to type precision.
+ 
+ 2020-10-12  Martin Liska  <mliska@suse.cz>
+ 
+ 	* ipa-modref.c (merge_call_side_effects): Clear modref_parm_map
+ 	fields in the vector.
+ 
+ 2020-10-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_analyze_slp_instance): Set matches to true
+ 	after successful discovery but forced split.
+ 
+ 2020-10-12  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.opt (-msoft-stack-reserve-local): Rename to ...
+ 	(-msoft-stack-reserve-local=): ... this.
+ 
+ 2020-10-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97357
+ 	* tree-ssa-loop-split.c (ssa_semi_invariant_p): Abnormal
+ 	SSA names are not semi invariant.
+ 
+ 2020-10-11  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (darwin_globalize_label): Make a subset of
+ 	metadate symbols global.
+ 	(darwin_label_is_anonymous_local_objc_name): Make a subset of
+ 	metadata symbols linker-visible.
+ 	(darwin_override_options): Track more target OS versions, make
+ 	the next_runtime version track this (unless it's set to 0 for
+ 	GNU runtime).
+ 
+ 2020-10-11  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (darwin_globalize_label): Add protocol
+ 	meta-data labels to the set that are global.
+ 	(darwin_label_is_anonymous_local_objc_name): Arrange for meta-
+ 	data start labels to be linker-visible.
+ 
+ 2020-10-11  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (darwin_objc2_section): Allow for
+ 	values > 1 to represent the next runtime.
+ 	(darwin_objc1_section): Likewise.
+ 	* config/darwin.h (NEXT_OBJC_RUNTIME): Set the default
+ 	next runtime value to be 10.5.8.
+ 
+ 2020-10-10  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (modref_transform): Fix parameter map computation.
+ 
+ 2020-10-10  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/97318
+ 	* config/nvptx/nvptx.c (nvptx_replace_dot): New function.
+ 	(write_fn_proto, write_fn_proto_from_insn, nvptx_output_call_insn):
+ 	Use nvptx_replace_dot.
+ 
+ 2020-10-10  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.c (write_fn_proto_1): New function, factored out
+ 	of ...
+ 	(write_fn_proto): ... here.  Return void.
+ 
+ 2020-10-10  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (remap_arguments): Check range in map access.
+ 
+ 2020-10-10  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (modref_transform): Use reserve instead of safe_grow.
+ 
+ 2020-10-10  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (modref_transform): Check that summaries are allocated.
+ 
+ 2020-10-10  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref-tree.h (struct modref_tree): Revert prevoius change.
+ 	* ipa-modref.c (analyze_function): Dump original summary.
+ 	(modref_read): Only set IPA if streaming summary (not optimization
+ 	summary).
+ 	(remap_arguments): New function.
+ 	(modref_transform): New function.
+ 	(compute_parm_map): Fix offset calculation.
+ 	(ipa_merge_modref_summary_after_inlining): Do not merge stores when
+ 	they can be ignored.
+ 
+ 2020-10-10  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Improve debug dumps.
+ 	(call_may_clobber_ref_p_1): Improve debug dumps.
+ 
+ 2020-10-10  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (output_objc_section_asm_op): Avoid extra
+ 	objective-c section switches unless the linker needs them.
+ 
+ 2020-10-10  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin-sections.def (objc2_data_section): New.
+ 	(objc2_ivar_section): New.
+ 	* config/darwin.c (darwin_objc2_section): Act on Protocol and
+ 	ivar refs.
+ 
+ 2020-10-10  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin-sections.def (objc2_class_names_section,
+ 	objc2_method_names_section, objc2_method_types_section): New
+ 	* config/darwin.c (output_objc_section_asm_op): Output new
+ 	sections.  (darwin_objc2_section): Select new sections where
+ 	used.
+ 
+ 2020-10-10  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (darwin_emit_local_bss): Amend section names to
+ 	match system tools. (darwin_output_aligned_bss): Likewise.
+ 
+ 2020-10-10  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/97359
+ 	* gimple-range-gori.cc (logical_stmt_cache::cacheable_p): Only
+ 	handle ANDs and ORs.
+ 	(gori_compute_cache::cache_stmt): Adjust comment.
+ 
+ 2020-10-09  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/97313
+ 	* lra-constraints.c (match_reload): Don't keep strict_low_part in
+ 	reloads for non-registers.
+ 
+ 2020-10-09  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/97148
+ 	* config.gcc (extra_headers): Add x86gprintrin.h.
+ 	* config/i386/adxintrin.h: Check _X86GPRINTRIN_H_INCLUDED for
+ 	<x86gprintrin.h>.
+ 	* config/i386/bmi2intrin.h: Likewise.
+ 	* config/i386/bmiintrin.h: Likewise.
+ 	* config/i386/cetintrin.h: Likewise.
+ 	* config/i386/cldemoteintrin.h: Likewise.
+ 	* config/i386/clflushoptintrin.h: Likewise.
+ 	* config/i386/clwbintrin.h: Likewise.
+ 	* config/i386/enqcmdintrin.h: Likewise.
+ 	* config/i386/fxsrintrin.h: Likewise.
+ 	* config/i386/ia32intrin.h: Likewise.
+ 	* config/i386/lwpintrin.h: Likewise.
+ 	* config/i386/lzcntintrin.h: Likewise.
+ 	* config/i386/movdirintrin.h: Likewise.
+ 	* config/i386/pconfigintrin.h: Likewise.
+ 	* config/i386/pkuintrin.h: Likewise.
+ 	* config/i386/rdseedintrin.h: Likewise.
+ 	* config/i386/rtmintrin.h: Likewise.
+ 	* config/i386/serializeintrin.h: Likewise.
+ 	* config/i386/tbmintrin.h: Likewise.
+ 	* config/i386/tsxldtrkintrin.h: Likewise.
+ 	* config/i386/waitpkgintrin.h: Likewise.
+ 	* config/i386/wbnoinvdintrin.h: Likewise.
+ 	* config/i386/xsavecintrin.h: Likewise.
+ 	* config/i386/xsaveintrin.h: Likewise.
+ 	* config/i386/xsaveoptintrin.h: Likewise.
+ 	* config/i386/xsavesintrin.h: Likewise.
+ 	* config/i386/xtestintrin.h: Likewise.
+ 	* config/i386/immintrin.h: Include <x86gprintrin.h> instead of
+ 	<fxsrintrin.h>, <xsaveintrin.h>, <xsaveoptintrin.h>,
+ 	<xsavesintrin.h>, <xsavecintrin.h>, <lzcntintrin.h>,
+ 	<bmiintrin.h>, <bmi2intrin.h>, <xtestintrin.h>, <cetintrin.h>,
+ 	<movdirintrin.h>, <sgxintrin.h, <pconfigintrin.h>,
+ 	<waitpkgintrin.h>, <cldemoteintrin.h>, <enqcmdintrin.h>,
+ 	<serializeintrin.h>, <tsxldtrkintrin.h>, <adxintrin.h>,
+ 	<clwbintrin.h>, <clflushoptintrin.h>, <wbnoinvdintrin.h> and
+ 	<pkuintrin.h>.
+ 	(_wbinvd): Moved to config/i386/x86gprintrin.h.
+ 	(_rdrand16_step): Likewise.
+ 	(_rdrand32_step): Likewise.
+ 	(_rdpid_u32): Likewise.
+ 	(_readfsbase_u32): Likewise.
+ 	(_readfsbase_u64): Likewise.
+ 	(_readgsbase_u32): Likewise.
+ 	(_readgsbase_u64): Likewise.
+ 	(_writefsbase_u32): Likewise.
+ 	(_writefsbase_u64): Likewise.
+ 	(_writegsbase_u32): Likewise.
+ 	(_writegsbase_u64): Likewise.
+ 	(_rdrand64_step): Likewise.
+ 	(_ptwrite64): Likewise.
+ 	(_ptwrite32): Likewise.
+ 	* config/i386/x86gprintrin.h: New file.
+ 	* config/i386/x86intrin.h: Include <x86gprintrin.h>.  Don't
+ 	include <ia32intrin.h>, <lwpintrin.h>, <tbmintrin.h>,
+ 	<popcntintrin.h>, <mwaitxintrin.h> and <clzerointrin.h>.
+ 
+ 2020-10-09  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/97348
+ 	* config/nvptx/nvptx.h (ASM_SPEC): Also pass -m to nvptx-as if
+ 	default is used.
+ 	* config/nvptx/nvptx.opt (misa): Init with PTX_ISA_SM35.
+ 
+ 2020-10-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* doc/sourcebuild.texi (vect_masked_load): Document.
+ 
+ 2020-10-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97334
+ 	* tree-vect-slp.c (vect_build_slp_tree_1): Do not fatally
+ 	fail lanes other than zero when BB vectorizing.
+ 
+ 2020-10-09  Jan Hubicka  <jh@suse.cz>
+ 
+ 	PR ipa/97292
+ 	PR ipa/97335
+ 	* ipa-modref-tree.h (copy_from): Drop summary in a
+ 	clone.
+ 
+ 2020-10-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97347
+ 	* tree-vect-slp.c (vect_create_constant_vectors): Use
+ 	edge insertion when inserting on the fallthru edge,
+ 	appropriately insert at the start of BBs when inserting
+ 	after PHIs.
+ 
+ 2020-10-09  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/97317
+ 	* range-op.cc (operator_cast::op1_range): Handle casts where the precision
+ 	of the RHS is only 1 greater than the precision of the LHS.
+ 
+ 2020-10-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* cgraphunit.c (expand_all_functions): Free tp_first_run_order.
+ 	* ipa-modref.c (pass_ipa_modref::execute): Free order.
+ 	* tree-ssa-loop-niter.c (estimate_numbers_of_iterations): Free
+ 	loop body.
+ 	* tree-vect-data-refs.c (vect_find_stmt_data_reference): Free
+ 	data references upon failure.
+ 	* tree-vect-loop.c (update_epilogue_loop_vinfo): Free BBs
+ 	array of the original loop.
+ 	* tree-vect-slp.c (vect_slp_bbs): Use an auto_vec for
+ 	dataref_groups to release its memory.
+ 
+ 2020-10-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/94801
+ 	PR target/97312
+ 	* vr-values.c (vr_values::extract_range_basic) <CASE_CFN_CLZ,
+ 	CASE_CFN_CTZ>: When stmt is not an internal-fn call or
+ 	C?Z_DEFINED_VALUE_AT_ZERO is not 2, assume argument is not zero
+ 	and thus use [0, prec-1] range unless it can be further improved.
+ 	For CTZ, don't update maxi from upper bound if it was previously prec.
+ 	* gimple-range.cc (gimple_ranger::range_of_builtin_call) <CASE_CFN_CLZ,
+ 	CASE_CFN_CTZ>: Likewise.
+ 
+ 2020-10-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/97325
+ 	* match.pd (FFS(nonzero) -> CTZ(nonzero) + 1): Cast argument to
+ 	corresponding unsigned type.
+ 
+ 2020-10-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_create_constant_vectors): Properly insert
+ 	after PHIs.
+ 
+ 2020-10-08  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* builtins.c (mathfn_built_in_type): New.
+ 	* builtins.h (mathfn_built_in_type): Declare.
+ 	* tree-ssa-math-opts.c (execute_cse_sincos_1): Use it to
+ 	obtain the type expected by the intrinsic.
+ 
+ 2020-10-08  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtin.def (BU_P10_MISC_2): Rename
+ 	to BU_P10_POWERPC64_MISC_2.
+ 	CFUGED, CNTLZDM, CNTTZDM, PDEPD, PEXTD): Call renamed macro.
+ 
+ 2020-10-08  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* tree-nrv.c (dest_safe_for_nrv_p): Disable tbaa in
+ 	call_may_clobber_ref_p and ref_maybe_used_by_stmt_p.
+ 	* tree-tailcall.c (find_tail_calls): Likewise.
+ 	* tree-ssa-alias.c (call_may_clobber_ref_p): Add tbaa_p parameter.
+ 	* tree-ssa-alias.h (call_may_clobber_ref_p): Update prototype.
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Pass data->tbaa_p
+ 	to call_may_clobber_ref_p_1.
+ 
+ 2020-10-08  Mark Wielaard  <mark@klomp.org>
+ 
+ 	* dwarf2out.c (dwarf2out_finish): Emit .file 0 entry when
+ 	generating DWARF5 .debug_line table through gas.
+ 
+ 2020-10-08  John Henning  <john.henning@oracle.com>
+ 
+ 	PR other/97309
+ 	* doc/invoke.texi: Improve documentation of
+ 	-fallow-store-data-races.
+ 
+ 2020-10-08  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/96914
+ 	* config/arm/arm_mve.h (__arm_vcvtnq_u32_f32): New.
+ 
+ 2020-10-08  Martin Liska  <mliska@suse.cz>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (_bb_vec_info::const_iterator): Remove.
+ 	(_bb_vec_info::const_reverse_iterator): Likewise.
+ 	(_bb_vec_info::region_stmts): Likewise.
+ 	(_bb_vec_info::reverse_region_stmts): Likewise.
+ 	(_bb_vec_info::_bb_vec_info): Adjust.
+ 	(_bb_vec_info::bb): Remove.
+ 	(_bb_vec_info::region_begin): Remove.
+ 	(_bb_vec_info::region_end): Remove.
+ 	(_bb_vec_info::bbs): New vector of BBs.
+ 	(vect_slp_function): Declare.
+ 	* tree-vect-patterns.c (vect_determine_precisions): Use
+ 	regular stmt iteration.
+ 	(vect_pattern_recog): Likewise.
+ 	* tree-vect-slp.c: Include cfganal.h, tree-eh.h and tree-cfg.h.
+ 	(vect_build_slp_tree_1): Properly refuse to vectorize
+ 	volatile and throwing stmts.
+ 	(vect_build_slp_tree_2): Pass group-size down to
+ 	get_vectype_for_scalar_type.
+ 	(_bb_vec_info::_bb_vec_info): Use regular stmt iteration,
+ 	adjust for changed region specification.
+ 	(_bb_vec_info::~_bb_vec_info): Likewise.
+ 	(vect_slp_check_for_constructors): Likewise.
+ 	(vect_slp_region): Likewise.
+ 	(vect_slp_bbs): New worker operating on a vector of BBs.
+ 	(vect_slp_bb): Wrap it.
+ 	(vect_slp_function): New function splitting the function
+ 	into multi-BB regions.
+ 	(vect_create_constant_vectors): Handle the case of inserting
+ 	after a throwing def.
+ 	(vect_schedule_slp_instance): Adjust.
+ 	* tree-vectorizer.c (vec_info::remove_stmt): Simplify again.
+ 	(vec_info::insert_seq_on_entry): Adjust.
+ 	(pass_slp_vectorize::execute): Also init PHIs.  Call
+ 	vect_slp_function.
+ 
+ 2020-10-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97330
+ 	* tree-ssa-sink.c (statement_sink_location): Avoid skipping
+ 	PHIs when they dominate the insert location.
+ 
+ 2020-10-08  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (get_access): Fix handling of offsets.
+ 	* tree-ssa-alias.c (modref_may_conflict): Watch for overflows.
+ 
+ 2020-10-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	* dbgcnt.def (DEBUG_COUNTER): Add ipa_mod_ref debug counter.
+ 	* tree-ssa-alias.c (modref_may_conflict): Handle the counter.
+ 
+ 2020-10-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.c (try_vectorize_loop_1): Do not dump
+ 	"basic block vectorized".
+ 	(pass_slp_vectorize::execute): Likewise.
+ 	* tree-vect-slp.c (vect_analyze_slp_instance): Avoid
+ 	re-analyzing split single stmts.
+ 
+ 2020-10-08  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/96914
+ 	* config/arm/arm_mve.h (vqrdmlashq_n_u8, vqrdmlashq_n_u16)
+ 	(vqrdmlashq_n_u32, vqrdmlahq_n_u8, vqrdmlahq_n_u16)
+ 	(vqrdmlahq_n_u32, vqdmlahq_n_u8, vqdmlahq_n_u16, vqdmlahq_n_u32)
+ 	(vmlaldavaxq_p_u16, vmlaldavaxq_p_u32): Remove.
+ 	* config/arm/arm_mve_builtins.def (vqrdmlashq_n_u, vqrdmlahq_n_u)
+ 	(vqdmlahq_n_u, vmlaldavaxq_p_u): Remove.
+ 	* config/arm/unspecs.md (VQDMLAHQ_N_U, VQRDMLAHQ_N_U)
+ 	(VQRDMLASHQ_N_U)
+ 	(VMLALDAVAXQ_P_U): Remove unspecs.
+ 	* config/arm/iterators.md (VQDMLAHQ_N_U, VQRDMLAHQ_N_U)
+ 	(VQRDMLASHQ_N_U, VMLALDAVAXQ_P_U): Remove attributes.
+ 	(VQDMLAHQ_N, VQRDMLAHQ_N, VQRDMLASHQ_N, VMLALDAVAXQ_P): Remove
+ 	unsigned variants from iterators.
+ 	* config/arm/mve.md (mve_vqdmlahq_n_<supf><mode>)
+ 	(mve_vqrdmlahq_n_<supf><mode>)
+ 	(mve_vqrdmlashq_n_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>):
+ 	Update comment.
+ 
+ 2020-10-08  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/96914
+ 	* config/arm/arm_mve.h (vqdmlashq, vqdmlashq_m): Define.
+ 	* config/arm/arm_mve_builtins.def (vqdmlashq_n_s)
+ 	(vqdmlashq_m_n_s,): New.
+ 	* config/arm/unspecs.md (VQDMLASHQ_N_S, VQDMLASHQ_M_N_S): New
+ 	unspecs.
+ 	* config/arm/iterators.md (VQDMLASHQ_N_S, VQDMLASHQ_M_N_S): New
+ 	attributes.
+ 	(VQDMLASHQ_N): New iterator.
+ 	* config/arm/mve.md (mve_vqdmlashq_n_, mve_vqdmlashq_m_n_s): New
+ 	patterns.
+ 
+ 2020-10-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/97322
+ 	* config/arm/arm.c (arm_expand_divmod_libfunc): Pass mode instead of
+ 	GET_MODE (op0) or GET_MODE (op1) to emit_library_call_value.
+ 
+ 2020-10-08  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/97325
+ 	* gimple-range.cc (gimple_ranger::range_of_builtin_call): Handle
+ 	negative numbers in __builtin_ffs and __builtin_popcount.
+ 
+ 2020-10-08  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/97315
+ 	* range-op.cc (value_range_with_overflow): Change any
+ 	non-overflow calculation in which both bounds are
+ 	overflow/underflow to be undefined.
+ 
+ 2020-10-08  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/97315
+ 	* gimple-ssa-evrp.c (hybrid_folder::choose_value): Removes the
+ 	trap and instead annotates the listing.
+ 
+ 2020-10-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/97294
+ 	* tree-cfg.c (move_block_to_fn): Call notice_special_calls on
+ 	call stmts being moved into dest_cfun.
+ 	* omp-low.c (lower_rec_input_clauses): Set cfun->calls_alloca when
+ 	adding __builtin_alloca_with_align call without gimplification.
+ 
+ 2020-10-07  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* common.opt (-fevrp-mode): Rename and move...
+ 	* params.opt (--param=evrp-mode): ...here.
+ 	* gimple-range.h (DEBUG_RANGE_CACHE): Use param_evrp_mode instead
+ 	of flag_evrp_mode.
+ 	* gimple-ssa-evrp.c (rvrp_folder): Same.
+ 	(hybrid_folder): Same.
+ 	(execute_early_vrp): Same.
+ 
+ 2020-10-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97307
+ 	* tree-ssa-sink.c (statement_sink_location): Change heuristic
+ 	for not skipping stores to look for virtual definitions
+ 	rather than uses.
+ 
+ 2020-10-07  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* value-range.h (irange_allocator::allocate): Allocate in two hunks
+ 	instead of using the variably-sized trailing array approach.
+ 
+ 2020-10-07  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/invoke.texi (-fdiagnostics-plain-output): Add
+ 	-fdiagnostics-path-format=separate-events to list of
+ 	options injected by -fdiagnostics-plain-output.
+ 	* opts-common.c (decode_cmdline_options_to_array): Likewise.
+ 
+ 2020-10-07  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/96394
+ 	* ipa-prop.c (update_indirect_edges_after_inlining): Do not add
+ 	resolved speculation edges to vector of new direct edges even in
+ 	presence of multiple speculative direct edges for a single call.
+ 
+ 2020-10-07  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn.md (unspec): Add UNSPEC_ADDPTR.
+ 	(addptrdi3): Add SGPR alternative.
+ 
+ 2020-10-07  Mark Wielaard  <mark@klomp.org>
+ 
+ 	* dwarf2out.c (add_filepath_AT_string): New function.
+ 	(asm_outputs_debug_line_str): Likewise.
+ 	(add_filename_attribute): Likewise.
+ 	(add_comp_dir_attribute): Call add_filepath_AT_string.
+ 	(gen_compile_unit_die): Call add_filename_attribute for name.
+ 	(init_sections_and_labels): Init debug_line_str_section when
+ 	asm_outputs_debug_line_str return true.
+ 	(dwarf2out_early_finish): Remove DW_AT_name and DW_AT_comp_dir
+ 	hack and call add_filename_attribute for the remap_debug_filename.
+ 
+ 2020-10-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* configure.ac (HAVE_AS_GDWARF_5_DEBUG_FLAG,
+ 	HAVE_AS_WORKING_DWARF_4_FLAG): New tests.
+ 	* gcc.c (ASM_DEBUG_DWARF_OPTION): Define.
+ 	(ASM_DEBUG_SPEC): Use ASM_DEBUG_DWARF_OPTION instead of
+ 	"--gdwarf2".  Use %{cond:opt1;:opt2} style.
+ 	(ASM_DEBUG_OPTION_DWARF_OPT): Define.
+ 	(ASM_DEBUG_OPTION_SPEC): Define.
+ 	(asm_debug_option): New variable.
+ 	(asm_options): Add "%(asm_debug_option)".
+ 	(static_specs): Add asm_debug_option entry.
+ 	(static_spec_functions): Add dwarf-version-gt.
+ 	(debug_level_greater_than_spec_func): New function.
+ 	* config/darwin.h (ASM_DEBUG_OPTION_SPEC): Define.
+ 	* config/darwin9.h (ASM_DEBUG_OPTION_SPEC): Redefine.
+ 	* config.in: Regenerated.
+ 	* configure: Regenerated.
+ 
+ 2020-10-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR bootstrap/97305
+ 	* optc-save-gen.awk: Don't declare mask variable if explicit_mask
+ 	array is not present.
+ 
+ 2020-10-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-expand.c (expand_omp_simd): Don't emit MIN_EXPR and PLUS_EXPR
+ 	at the end of entry_bb and innermost init_bb, instead force arguments
+ 	for MIN_EXPR into temporaries in both cases and jump to a new bb that
+ 	performs MIN_EXPR and PLUS_EXPR.
+ 
+ 2020-10-07  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* tree-ssa-loop-ch.c (ch_base::copy_headers): Add missing NULL test
+ 	for dump_file.
+ 
+ 2020-10-06  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* flag-types.h (enum evrp_mode): New enumerated type EVRP_MODE_*.
+ 	* common.opt (fevrp-mode): New undocumented flag.
+ 	* gimple-ssa-evrp.c: Include gimple-range.h
+ 	(class rvrp_folder): EVRP folding using ranger exclusively.
+ 	(rvrp_folder::rvrp_folder): New.
+ 	(rvrp_folder::~rvrp_folder): New.
+ 	(rvrp_folder::value_of_expr): New.  Use rangers value_of_expr.
+ 	(rvrp_folder::value_on_edge): New.  Use rangers value_on_edge.
+ 	(rvrp_folder::value_of_Stmt): New.  Use rangers value_of_stmt.
+ 	(rvrp_folder::fold_stmt): New.  Call the simplifier.
+ 	(class hybrid_folder): EVRP folding using both engines.
+ 	(hybrid_folder::hybrid_folder): New.
+ 	(hybrid_folder::~hybrid_folder): New.
+ 	(hybrid_folder::fold_stmt): New.  Simplify with one engne, then the
+ 	other.
+ 	(hybrid_folder::value_of_expr): New.  Use both value routines.
+ 	(hybrid_folder::value_on_edge): New.  Use both value routines.
+ 	(hybrid_folder::value_of_stmt): New.  Use both value routines.
+ 	(hybrid_folder::choose_value): New.  Choose between range_analzyer and
+ 	rangers values.
+ 	(execute_early_vrp): Choose a folder based on flag_evrp_mode.
+ 	* vr-values.c (simplify_using_ranges::fold_cond): Try range_of_stmt
+ 	first to see if it returns a value.
+ 	(simplify_using_ranges::simplify_switch_using_ranges): Return true if
+ 	any changes were made to the switch.
+ 
+ 2020-10-06  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* Makefile.in (OBJS): Add gimple-range*.o.
+ 	* gimple-range.h: New file.
+ 	* gimple-range.cc: New file.
+ 	* gimple-range-cache.h: New file.
+ 	* gimple-range-cache.cc: New file.
+ 	* gimple-range-edge.h: New file.
+ 	* gimple-range-edge.cc: New file.
+ 	* gimple-range-gori.h: New file.
+ 	* gimple-range-gori.cc: New file.
+ 
+ 2020-10-06  Dennis Zhang  <dennis.zhang@arm.com>
+ 
+ 	* config/arm/arm.c (arm_preferred_simd_mode): Enable MVE SIMD modes.
+ 
+ 2020-10-06  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR middle-end/90861
+ 	* gimplify.c (gimplify_bind_expr): Handle lookup in
+ 	oacc_declare_returns using key with decl-expr.
+ 
+ 2020-10-06  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/iterators.md (MVE_types): Move mode iterator from mve.md to
+ 	iterators.md.
+ 	(MVE_VLD_ST): Likewise.
+ 	(MVE_0): Likewise.
+ 	(MVE_1): Likewise.
+ 	(MVE_3): Likewise.
+ 	(MVE_2): Likewise.
+ 	(MVE_5): Likewise.
+ 	(MVE_6): Likewise.
+ 	(MVE_CNVT): Move mode attribute iterator from mve.md to iterators.md.
+ 	(MVE_LANES): Likewise.
+ 	(MVE_constraint): Likewise.
+ 	(MVE_constraint1): Likewise.
+ 	(MVE_constraint2): Likewise.
+ 	(MVE_constraint3): Likewise.
+ 	(MVE_pred): Likewise.
+ 	(MVE_pred1): Likewise.
+ 	(MVE_pred2): Likewise.
+ 	(MVE_pred3): Likewise.
+ 	(MVE_B_ELEM): Likewise.
+ 	(MVE_H_ELEM): Likewise.
+ 	(V_sz_elem1): Likewise.
+ 	(V_extr_elem): Likewise.
+ 	(earlyclobber_32): Likewise.
+ 	(supf): Move int attribute from mve.md to iterators.md.
+ 	(mode1): Likewise.
+ 	(VCVTQ_TO_F): Move int iterator from mve.md to iterators.md.
+ 	(VMVNQ_N): Likewise.
+ 	(VREV64Q): Likewise.
+ 	(VCVTQ_FROM_F): Likewise.
+ 	(VREV16Q): Likewise.
+ 	(VCVTAQ): Likewise.
+ 	(VMVNQ): Likewise.
+ 	(VDUPQ_N): Likewise.
+ 	(VCLZQ): Likewise.
+ 	(VADDVQ): Likewise.
+ 	(VREV32Q): Likewise.
+ 	(VMOVLBQ): Likewise.
+ 	(VMOVLTQ): Likewise.
+ 	(VCVTPQ): Likewise.
+ 	(VCVTNQ): Likewise.
+ 	(VCVTMQ): Likewise.
+ 	(VADDLVQ): Likewise.
+ 	(VCTPQ): Likewise.
+ 	(VCTPQ_M): Likewise.
+ 	(VCVTQ_N_TO_F): Likewise.
+ 	(VCREATEQ): Likewise.
+ 	(VSHRQ_N): Likewise.
+ 	(VCVTQ_N_FROM_F): Likewise.
+ 	(VADDLVQ_P): Likewise.
+ 	(VCMPNEQ): Likewise.
+ 	(VSHLQ): Likewise.
+ 	(VABDQ): Likewise.
+ 	(VADDQ_N): Likewise.
+ 	(VADDVAQ): Likewise.
+ 	(VADDVQ_P): Likewise.
+ 	(VANDQ): Likewise.
+ 	(VBICQ): Likewise.
+ 	(VBRSRQ_N): Likewise.
+ 	(VCADDQ_ROT270): Likewise.
+ 	(VCADDQ_ROT90): Likewise.
+ 	(VCMPEQQ): Likewise.
+ 	(VCMPEQQ_N): Likewise.
+ 	(VCMPNEQ_N): Likewise.
+ 	(VEORQ): Likewise.
+ 	(VHADDQ): Likewise.
+ 	(VHADDQ_N): Likewise.
+ 	(VHSUBQ): Likewise.
+ 	(VHSUBQ_N): Likewise.
+ 	(VMAXQ): Likewise.
+ 	(VMAXVQ): Likewise.
+ 	(VMINQ): Likewise.
+ 	(VMINVQ): Likewise.
+ 	(VMLADAVQ): Likewise.
+ 	(VMULHQ): Likewise.
+ 	(VMULLBQ_INT): Likewise.
+ 	(VMULLTQ_INT): Likewise.
+ 	(VMULQ): Likewise.
+ 	(VMULQ_N): Likewise.
+ 	(VORNQ): Likewise.
+ 	(VORRQ): Likewise.
+ 	(VQADDQ): Likewise.
+ 	(VQADDQ_N): Likewise.
+ 	(VQRSHLQ): Likewise.
+ 	(VQRSHLQ_N): Likewise.
+ 	(VQSHLQ): Likewise.
+ 	(VQSHLQ_N): Likewise.
+ 	(VQSHLQ_R): Likewise.
+ 	(VQSUBQ): Likewise.
+ 	(VQSUBQ_N): Likewise.
+ 	(VRHADDQ): Likewise.
+ 	(VRMULHQ): Likewise.
+ 	(VRSHLQ): Likewise.
+ 	(VRSHLQ_N): Likewise.
+ 	(VRSHRQ_N): Likewise.
+ 	(VSHLQ_N): Likewise.
+ 	(VSHLQ_R): Likewise.
+ 	(VSUBQ): Likewise.
+ 	(VSUBQ_N): Likewise.
+ 	(VADDLVAQ): Likewise.
+ 	(VBICQ_N): Likewise.
+ 	(VMLALDAVQ): Likewise.
+ 	(VMLALDAVXQ): Likewise.
+ 	(VMOVNBQ): Likewise.
+ 	(VMOVNTQ): Likewise.
+ 	(VORRQ_N): Likewise.
+ 	(VQMOVNBQ): Likewise.
+ 	(VQMOVNTQ): Likewise.
+ 	(VSHLLBQ_N): Likewise.
+ 	(VSHLLTQ_N): Likewise.
+ 	(VRMLALDAVHQ): Likewise.
+ 	(VBICQ_M_N): Likewise.
+ 	(VCVTAQ_M): Likewise.
+ 	(VCVTQ_M_TO_F): Likewise.
+ 	(VQRSHRNBQ_N): Likewise.
+ 	(VABAVQ): Likewise.
+ 	(VSHLCQ): Likewise.
+ 	(VRMLALDAVHAQ): Likewise.
+ 	(VADDVAQ_P): Likewise.
+ 	(VCLZQ_M): Likewise.
+ 	(VCMPEQQ_M_N): Likewise.
+ 	(VCMPEQQ_M): Likewise.
+ 	(VCMPNEQ_M_N): Likewise.
+ 	(VCMPNEQ_M): Likewise.
+ 	(VDUPQ_M_N): Likewise.
+ 	(VMAXVQ_P): Likewise.
+ 	(VMINVQ_P): Likewise.
+ 	(VMLADAVAQ): Likewise.
+ 	(VMLADAVQ_P): Likewise.
+ 	(VMLAQ_N): Likewise.
+ 	(VMLASQ_N): Likewise.
+ 	(VMVNQ_M): Likewise.
+ 	(VPSELQ): Likewise.
+ 	(VQDMLAHQ_N): Likewise.
+ 	(VQRDMLAHQ_N): Likewise.
+ 	(VQRDMLASHQ_N): Likewise.
+ 	(VQRSHLQ_M_N): Likewise.
+ 	(VQSHLQ_M_R): Likewise.
+ 	(VREV64Q_M): Likewise.
+ 	(VRSHLQ_M_N): Likewise.
+ 	(VSHLQ_M_R): Likewise.
+ 	(VSLIQ_N): Likewise.
+ 	(VSRIQ_N): Likewise.
+ 	(VMLALDAVQ_P): Likewise.
+ 	(VQMOVNBQ_M): Likewise.
+ 	(VMOVLTQ_M): Likewise.
+ 	(VMOVNBQ_M): Likewise.
+ 	(VRSHRNTQ_N): Likewise.
+ 	(VORRQ_M_N): Likewise.
+ 	(VREV32Q_M): Likewise.
+ 	(VREV16Q_M): Likewise.
+ 	(VQRSHRNTQ_N): Likewise.
+ 	(VMOVNTQ_M): Likewise.
+ 	(VMOVLBQ_M): Likewise.
+ 	(VMLALDAVAQ): Likewise.
+ 	(VQSHRNBQ_N): Likewise.
+ 	(VSHRNBQ_N): Likewise.
+ 	(VRSHRNBQ_N): Likewise.
+ 	(VMLALDAVXQ_P): Likewise.
+ 	(VQMOVNTQ_M): Likewise.
+ 	(VMVNQ_M_N): Likewise.
+ 	(VQSHRNTQ_N): Likewise.
+ 	(VMLALDAVAXQ): Likewise.
+ 	(VSHRNTQ_N): Likewise.
+ 	(VCVTMQ_M): Likewise.
+ 	(VCVTNQ_M): Likewise.
+ 	(VCVTPQ_M): Likewise.
+ 	(VCVTQ_M_N_FROM_F): Likewise.
+ 	(VCVTQ_M_FROM_F): Likewise.
+ 	(VRMLALDAVHQ_P): Likewise.
+ 	(VADDLVAQ_P): Likewise.
+ 	(VABAVQ_P): Likewise.
+ 	(VSHLQ_M): Likewise.
+ 	(VSRIQ_M_N): Likewise.
+ 	(VSUBQ_M): Likewise.
+ 	(VCVTQ_M_N_TO_F): Likewise.
+ 	(VHSUBQ_M): Likewise.
+ 	(VSLIQ_M_N): Likewise.
+ 	(VRSHLQ_M): Likewise.
+ 	(VMINQ_M): Likewise.
+ 	(VMULLBQ_INT_M): Likewise.
+ 	(VMULHQ_M): Likewise.
+ 	(VMULQ_M): Likewise.
+ 	(VHSUBQ_M_N): Likewise.
+ 	(VHADDQ_M_N): Likewise.
+ 	(VORRQ_M): Likewise.
+ 	(VRMULHQ_M): Likewise.
+ 	(VQADDQ_M): Likewise.
+ 	(VRSHRQ_M_N): Likewise.
+ 	(VQSUBQ_M_N): Likewise.
+ 	(VADDQ_M): Likewise.
+ 	(VORNQ_M): Likewise.
+ 	(VRHADDQ_M): Likewise.
+ 	(VQSHLQ_M): Likewise.
+ 	(VANDQ_M): Likewise.
+ 	(VBICQ_M): Likewise.
+ 	(VSHLQ_M_N): Likewise.
+ 	(VCADDQ_ROT270_M): Likewise.
+ 	(VQRSHLQ_M): Likewise.
+ 	(VQADDQ_M_N): Likewise.
+ 	(VADDQ_M_N): Likewise.
+ 	(VMAXQ_M): Likewise.
+ 	(VQSUBQ_M): Likewise.
+ 	(VMLASQ_M_N): Likewise.
+ 	(VMLADAVAQ_P): Likewise.
+ 	(VBRSRQ_M_N): Likewise.
+ 	(VMULQ_M_N): Likewise.
+ 	(VCADDQ_ROT90_M): Likewise.
+ 	(VMULLTQ_INT_M): Likewise.
+ 	(VEORQ_M): Likewise.
+ 	(VSHRQ_M_N): Likewise.
+ 	(VSUBQ_M_N): Likewise.
+ 	(VHADDQ_M): Likewise.
+ 	(VABDQ_M): Likewise.
+ 	(VMLAQ_M_N): Likewise.
+ 	(VQSHLQ_M_N): Likewise.
+ 	(VMLALDAVAQ_P): Likewise.
+ 	(VMLALDAVAXQ_P): Likewise.
+ 	(VQRSHRNBQ_M_N): Likewise.
+ 	(VQRSHRNTQ_M_N): Likewise.
+ 	(VQSHRNBQ_M_N): Likewise.
+ 	(VQSHRNTQ_M_N): Likewise.
+ 	(VRSHRNBQ_M_N): Likewise.
+ 	(VRSHRNTQ_M_N): Likewise.
+ 	(VSHLLBQ_M_N): Likewise.
+ 	(VSHLLTQ_M_N): Likewise.
+ 	(VSHRNBQ_M_N): Likewise.
+ 	(VSHRNTQ_M_N): Likewise.
+ 	(VSTRWSBQ): Likewise.
+ 	(VSTRBSOQ): Likewise.
+ 	(VSTRBQ): Likewise.
+ 	(VLDRBGOQ): Likewise.
+ 	(VLDRBQ): Likewise.
+ 	(VLDRWGBQ): Likewise.
+ 	(VLD1Q): Likewise.
+ 	(VLDRHGOQ): Likewise.
+ 	(VLDRHGSOQ): Likewise.
+ 	(VLDRHQ): Likewise.
+ 	(VLDRWQ): Likewise.
+ 	(VLDRDGBQ): Likewise.
+ 	(VLDRDGOQ): Likewise.
+ 	(VLDRDGSOQ): Likewise.
+ 	(VLDRWGOQ): Likewise.
+ 	(VLDRWGSOQ): Likewise.
+ 	(VST1Q): Likewise.
+ 	(VSTRHSOQ): Likewise.
+ 	(VSTRHSSOQ): Likewise.
+ 	(VSTRHQ): Likewise.
+ 	(VSTRWQ): Likewise.
+ 	(VSTRDSBQ): Likewise.
+ 	(VSTRDSOQ): Likewise.
+ 	(VSTRDSSOQ): Likewise.
+ 	(VSTRWSOQ): Likewise.
+ 	(VSTRWSSOQ): Likewise.
+ 	(VSTRWSBWBQ): Likewise.
+ 	(VLDRWGBWBQ): Likewise.
+ 	(VSTRDSBWBQ): Likewise.
+ 	(VLDRDGBWBQ): Likewise.
+ 	(VADCIQ): Likewise.
+ 	(VADCIQ_M): Likewise.
+ 	(VSBCQ): Likewise.
+ 	(VSBCQ_M): Likewise.
+ 	(VSBCIQ): Likewise.
+ 	(VSBCIQ_M): Likewise.
+ 	(VADCQ): Likewise.
+ 	(VADCQ_M): Likewise.
+ 	(UQRSHLLQ): Likewise.
+ 	(SQRSHRLQ): Likewise.
+ 	(VSHLCQ_M): Likewise.
+ 	* config/arm/mve.md (MVE_types): Move mode iterator to iterators.md from mve.md.
+ 	(MVE_VLD_ST): Likewise.
+ 	(MVE_0): Likewise.
+ 	(MVE_1): Likewise.
+ 	(MVE_3): Likewise.
+ 	(MVE_2): Likewise.
+ 	(MVE_5): Likewise.
+ 	(MVE_6): Likewise.
+ 	(MVE_CNVT): Move mode attribute iterator to iterators.md from mve.md.
+ 	(MVE_LANES): Likewise.
+ 	(MVE_constraint): Likewise.
+ 	(MVE_constraint1): Likewise.
+ 	(MVE_constraint2): Likewise.
+ 	(MVE_constraint3): Likewise.
+ 	(MVE_pred): Likewise.
+ 	(MVE_pred1): Likewise.
+ 	(MVE_pred2): Likewise.
+ 	(MVE_pred3): Likewise.
+ 	(MVE_B_ELEM): Likewise.
+ 	(MVE_H_ELEM): Likewise.
+ 	(V_sz_elem1): Likewise.
+ 	(V_extr_elem): Likewise.
+ 	(earlyclobber_32): Likewise.
+ 	(supf): Move int attribute to iterators.md from mve.md.
+ 	(mode1): Likewise.
+ 	(VCVTQ_TO_F): Move int iterator to iterators.md from mve.md.
+ 	(VMVNQ_N): Likewise.
+ 	(VREV64Q): Likewise.
+ 	(VCVTQ_FROM_F): Likewise.
+ 	(VREV16Q): Likewise.
+ 	(VCVTAQ): Likewise.
+ 	(VMVNQ): Likewise.
+ 	(VDUPQ_N): Likewise.
+ 	(VCLZQ): Likewise.
+ 	(VADDVQ): Likewise.
+ 	(VREV32Q): Likewise.
+ 	(VMOVLBQ): Likewise.
+ 	(VMOVLTQ): Likewise.
+ 	(VCVTPQ): Likewise.
+ 	(VCVTNQ): Likewise.
+ 	(VCVTMQ): Likewise.
+ 	(VADDLVQ): Likewise.
+ 	(VCTPQ): Likewise.
+ 	(VCTPQ_M): Likewise.
+ 	(VCVTQ_N_TO_F): Likewise.
+ 	(VCREATEQ): Likewise.
+ 	(VSHRQ_N): Likewise.
+ 	(VCVTQ_N_FROM_F): Likewise.
+ 	(VADDLVQ_P): Likewise.
+ 	(VCMPNEQ): Likewise.
+ 	(VSHLQ): Likewise.
+ 	(VABDQ): Likewise.
+ 	(VADDQ_N): Likewise.
+ 	(VADDVAQ): Likewise.
+ 	(VADDVQ_P): Likewise.
+ 	(VANDQ): Likewise.
+ 	(VBICQ): Likewise.
+ 	(VBRSRQ_N): Likewise.
+ 	(VCADDQ_ROT270): Likewise.
+ 	(VCADDQ_ROT90): Likewise.
+ 	(VCMPEQQ): Likewise.
+ 	(VCMPEQQ_N): Likewise.
+ 	(VCMPNEQ_N): Likewise.
+ 	(VEORQ): Likewise.
+ 	(VHADDQ): Likewise.
+ 	(VHADDQ_N): Likewise.
+ 	(VHSUBQ): Likewise.
+ 	(VHSUBQ_N): Likewise.
+ 	(VMAXQ): Likewise.
+ 	(VMAXVQ): Likewise.
+ 	(VMINQ): Likewise.
+ 	(VMINVQ): Likewise.
+ 	(VMLADAVQ): Likewise.
+ 	(VMULHQ): Likewise.
+ 	(VMULLBQ_INT): Likewise.
+ 	(VMULLTQ_INT): Likewise.
+ 	(VMULQ): Likewise.
+ 	(VMULQ_N): Likewise.
+ 	(VORNQ): Likewise.
+ 	(VORRQ): Likewise.
+ 	(VQADDQ): Likewise.
+ 	(VQADDQ_N): Likewise.
+ 	(VQRSHLQ): Likewise.
+ 	(VQRSHLQ_N): Likewise.
+ 	(VQSHLQ): Likewise.
+ 	(VQSHLQ_N): Likewise.
+ 	(VQSHLQ_R): Likewise.
+ 	(VQSUBQ): Likewise.
+ 	(VQSUBQ_N): Likewise.
+ 	(VRHADDQ): Likewise.
+ 	(VRMULHQ): Likewise.
+ 	(VRSHLQ): Likewise.
+ 	(VRSHLQ_N): Likewise.
+ 	(VRSHRQ_N): Likewise.
+ 	(VSHLQ_N): Likewise.
+ 	(VSHLQ_R): Likewise.
+ 	(VSUBQ): Likewise.
+ 	(VSUBQ_N): Likewise.
+ 	(VADDLVAQ): Likewise.
+ 	(VBICQ_N): Likewise.
+ 	(VMLALDAVQ): Likewise.
+ 	(VMLALDAVXQ): Likewise.
+ 	(VMOVNBQ): Likewise.
+ 	(VMOVNTQ): Likewise.
+ 	(VORRQ_N): Likewise.
+ 	(VQMOVNBQ): Likewise.
+ 	(VQMOVNTQ): Likewise.
+ 	(VSHLLBQ_N): Likewise.
+ 	(VSHLLTQ_N): Likewise.
+ 	(VRMLALDAVHQ): Likewise.
+ 	(VBICQ_M_N): Likewise.
+ 	(VCVTAQ_M): Likewise.
+ 	(VCVTQ_M_TO_F): Likewise.
+ 	(VQRSHRNBQ_N): Likewise.
+ 	(VABAVQ): Likewise.
+ 	(VSHLCQ): Likewise.
+ 	(VRMLALDAVHAQ): Likewise.
+ 	(VADDVAQ_P): Likewise.
+ 	(VCLZQ_M): Likewise.
+ 	(VCMPEQQ_M_N): Likewise.
+ 	(VCMPEQQ_M): Likewise.
+ 	(VCMPNEQ_M_N): Likewise.
+ 	(VCMPNEQ_M): Likewise.
+ 	(VDUPQ_M_N): Likewise.
+ 	(VMAXVQ_P): Likewise.
+ 	(VMINVQ_P): Likewise.
+ 	(VMLADAVAQ): Likewise.
+ 	(VMLADAVQ_P): Likewise.
+ 	(VMLAQ_N): Likewise.
+ 	(VMLASQ_N): Likewise.
+ 	(VMVNQ_M): Likewise.
+ 	(VPSELQ): Likewise.
+ 	(VQDMLAHQ_N): Likewise.
+ 	(VQRDMLAHQ_N): Likewise.
+ 	(VQRDMLASHQ_N): Likewise.
+ 	(VQRSHLQ_M_N): Likewise.
+ 	(VQSHLQ_M_R): Likewise.
+ 	(VREV64Q_M): Likewise.
+ 	(VRSHLQ_M_N): Likewise.
+ 	(VSHLQ_M_R): Likewise.
+ 	(VSLIQ_N): Likewise.
+ 	(VSRIQ_N): Likewise.
+ 	(VMLALDAVQ_P): Likewise.
+ 	(VQMOVNBQ_M): Likewise.
+ 	(VMOVLTQ_M): Likewise.
+ 	(VMOVNBQ_M): Likewise.
+ 	(VRSHRNTQ_N): Likewise.
+ 	(VORRQ_M_N): Likewise.
+ 	(VREV32Q_M): Likewise.
+ 	(VREV16Q_M): Likewise.
+ 	(VQRSHRNTQ_N): Likewise.
+ 	(VMOVNTQ_M): Likewise.
+ 	(VMOVLBQ_M): Likewise.
+ 	(VMLALDAVAQ): Likewise.
+ 	(VQSHRNBQ_N): Likewise.
+ 	(VSHRNBQ_N): Likewise.
+ 	(VRSHRNBQ_N): Likewise.
+ 	(VMLALDAVXQ_P): Likewise.
+ 	(VQMOVNTQ_M): Likewise.
+ 	(VMVNQ_M_N): Likewise.
+ 	(VQSHRNTQ_N): Likewise.
+ 	(VMLALDAVAXQ): Likewise.
+ 	(VSHRNTQ_N): Likewise.
+ 	(VCVTMQ_M): Likewise.
+ 	(VCVTNQ_M): Likewise.
+ 	(VCVTPQ_M): Likewise.
+ 	(VCVTQ_M_N_FROM_F): Likewise.
+ 	(VCVTQ_M_FROM_F): Likewise.
+ 	(VRMLALDAVHQ_P): Likewise.
+ 	(VADDLVAQ_P): Likewise.
+ 	(VABAVQ_P): Likewise.
+ 	(VSHLQ_M): Likewise.
+ 	(VSRIQ_M_N): Likewise.
+ 	(VSUBQ_M): Likewise.
+ 	(VCVTQ_M_N_TO_F): Likewise.
+ 	(VHSUBQ_M): Likewise.
+ 	(VSLIQ_M_N): Likewise.
+ 	(VRSHLQ_M): Likewise.
+ 	(VMINQ_M): Likewise.
+ 	(VMULLBQ_INT_M): Likewise.
+ 	(VMULHQ_M): Likewise.
+ 	(VMULQ_M): Likewise.
+ 	(VHSUBQ_M_N): Likewise.
+ 	(VHADDQ_M_N): Likewise.
+ 	(VORRQ_M): Likewise.
+ 	(VRMULHQ_M): Likewise.
+ 	(VQADDQ_M): Likewise.
+ 	(VRSHRQ_M_N): Likewise.
+ 	(VQSUBQ_M_N): Likewise.
+ 	(VADDQ_M): Likewise.
+ 	(VORNQ_M): Likewise.
+ 	(VRHADDQ_M): Likewise.
+ 	(VQSHLQ_M): Likewise.
+ 	(VANDQ_M): Likewise.
+ 	(VBICQ_M): Likewise.
+ 	(VSHLQ_M_N): Likewise.
+ 	(VCADDQ_ROT270_M): Likewise.
+ 	(VQRSHLQ_M): Likewise.
+ 	(VQADDQ_M_N): Likewise.
+ 	(VADDQ_M_N): Likewise.
+ 	(VMAXQ_M): Likewise.
+ 	(VQSUBQ_M): Likewise.
+ 	(VMLASQ_M_N): Likewise.
+ 	(VMLADAVAQ_P): Likewise.
+ 	(VBRSRQ_M_N): Likewise.
+ 	(VMULQ_M_N): Likewise.
+ 	(VCADDQ_ROT90_M): Likewise.
+ 	(VMULLTQ_INT_M): Likewise.
+ 	(VEORQ_M): Likewise.
+ 	(VSHRQ_M_N): Likewise.
+ 	(VSUBQ_M_N): Likewise.
+ 	(VHADDQ_M): Likewise.
+ 	(VABDQ_M): Likewise.
+ 	(VMLAQ_M_N): Likewise.
+ 	(VQSHLQ_M_N): Likewise.
+ 	(VMLALDAVAQ_P): Likewise.
+ 	(VMLALDAVAXQ_P): Likewise.
+ 	(VQRSHRNBQ_M_N): Likewise.
+ 	(VQRSHRNTQ_M_N): Likewise.
+ 	(VQSHRNBQ_M_N): Likewise.
+ 	(VQSHRNTQ_M_N): Likewise.
+ 	(VRSHRNBQ_M_N): Likewise.
+ 	(VRSHRNTQ_M_N): Likewise.
+ 	(VSHLLBQ_M_N): Likewise.
+ 	(VSHLLTQ_M_N): Likewise.
+ 	(VSHRNBQ_M_N): Likewise.
+ 	(VSHRNTQ_M_N): Likewise.
+ 	(VSTRWSBQ): Likewise.
+ 	(VSTRBSOQ): Likewise.
+ 	(VSTRBQ): Likewise.
+ 	(VLDRBGOQ): Likewise.
+ 	(VLDRBQ): Likewise.
+ 	(VLDRWGBQ): Likewise.
+ 	(VLD1Q): Likewise.
+ 	(VLDRHGOQ): Likewise.
+ 	(VLDRHGSOQ): Likewise.
+ 	(VLDRHQ): Likewise.
+ 	(VLDRWQ): Likewise.
+ 	(VLDRDGBQ): Likewise.
+ 	(VLDRDGOQ): Likewise.
+ 	(VLDRDGSOQ): Likewise.
+ 	(VLDRWGOQ): Likewise.
+ 	(VLDRWGSOQ): Likewise.
+ 	(VST1Q): Likewise.
+ 	(VSTRHSOQ): Likewise.
+ 	(VSTRHSSOQ): Likewise.
+ 	(VSTRHQ): Likewise.
+ 	(VSTRWQ): Likewise.
+ 	(VSTRDSBQ): Likewise.
+ 	(VSTRDSOQ): Likewise.
+ 	(VSTRDSSOQ): Likewise.
+ 	(VSTRWSOQ): Likewise.
+ 	(VSTRWSSOQ): Likewise.
+ 	(VSTRWSBWBQ): Likewise.
+ 	(VLDRWGBWBQ): Likewise.
+ 	(VSTRDSBWBQ): Likewise.
+ 	(VLDRDGBWBQ): Likewise.
+ 	(VADCIQ): Likewise.
+ 	(VADCIQ_M): Likewise.
+ 	(VSBCQ): Likewise.
+ 	(VSBCQ_M): Likewise.
+ 	(VSBCIQ): Likewise.
+ 	(VSBCIQ_M): Likewise.
+ 	(VADCQ): Likewise.
+ 	(VADCQ_M): Likewise.
+ 	(UQRSHLLQ): Likewise.
+ 	(SQRSHRLQ): Likewise.
+ 	(VSHLCQ_M): Likewise.
+ 	(define_c_enum "unspec"): Move MVE enumerator to unspecs.md from mve.md.
+ 	* config/arm/unspecs.md (define_c_enum "unspec"): Move MVE enumerator from
+ 	mve.md to unspecs.md.
+ 
+ 2020-10-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	* common.opt: Remove -fdbg-cnt-list from deferred options.
+ 	* dbgcnt.c (dbg_cnt_set_limit_by_index): Make a copy
+ 	to original_limits.
+ 	(dbg_cnt_list_all_counters): Print also current counter value
+ 	and print to stderr.
+ 	* opts-global.c (handle_common_deferred_options): Do not handle
+ 	-fdbg-cnt-list.
+ 	* opts.c (common_handle_option): Likewise.
+ 	* toplev.c (finalize): Handle it after compilation here.
+ 
+ 2020-10-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	* dbgcnt.c (dbg_cnt): Report also upper limit.
+ 
+ 2020-10-06  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* tracer.c (count_insns): Rename to ...
+ 	(analyze_bb): ... this.
+ 	(cache_can_duplicate_bb_p, cached_can_duplicate_bb_p): New function.
+ 	(ignore_bb_p): Use cached_can_duplicate_bb_p.
+ 	(tail_duplicate): Call cache_can_duplicate_bb_p.
+ 
+ 2020-10-06  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* tracer.c (can_duplicate_insn_p, can_duplicate_bb_no_insn_iter_p)
+ 	(can_duplicate_bb_p): New function, factored out of ...
+ 	(ignore_bb_p): ... here.
+ 
+ 2020-10-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/97282
+ 	* tree-ssa-math-opts.c (divmod_candidate_p): Don't return false for
+ 	constant op2 if it is not a power of two and the type has precision
+ 	larger than HOST_BITS_PER_WIDE_INT or BITS_PER_WORD.
+ 	* internal-fn.c (contains_call_div_mod): New function.
+ 	(expand_DIVMOD): If last argument is a constant, try to expand it as
+ 	TRUNC_DIV_EXPR followed by TRUNC_MOD_EXPR, but if the sequence
+ 	contains any calls or {,U}{DIV,MOD} rtxes, throw it away and use
+ 	divmod optab or divmod libfunc.
+ 
+ 2020-10-06  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.h (irange_allocator::allocate): Increase
+ 	newir storage by one.
+ 
+ 2020-10-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/97289
+ 	* omp-offload.c (omp_discover_declare_target_tgt_fn_r): Only follow
+ 	node->alias_target if it is a FUNCTION_DECL.
+ 
+ 2020-10-06  Joe Ramsay  <joe.ramsay@arm.com>
+ 
+ 	* config/arm/arm-cpus.in:
+ 	(ALL_FPU_INTERNAL): Remove vfp_base.
+ 	(VFPv2): Remove vfp_base.
+ 	(MVE): Remove vfp_base.
+ 	(vfp_base): Redefine as implied bit dependent on MVE or FP
+ 	(cortex-m55): Add flags to disable MVE, MVE FP, FP and DSP extensions.
+ 	* config/arm/arm.c (arm_configure_build_target): Add implied bits to ISA.
+ 	* config/arm/parsecpu.awk:
+ 	(gen_isa): Print implied bits and their dependencies to ISA header.
+ 	(gen_data): Add parsing for implied feature bits.
+ 
+ 2020-10-06  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* doc/invoke.texi: Add z15/arch13 to the list of documented
+ 	-march/-mtune options.
+ 
+ 2020-10-05  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (irange::legacy_intersect): Only handle
+ 	legacy ranges.
+ 	(irange::legacy_union): Same.
+ 	(irange::union_): When unioning legacy with non-legacy,
+ 	first convert to legacy and do everything in legacy mode.
+ 	(irange::intersect): Same, but for intersect.
+ 	* range-op.cc (range_tests): Adjust for above changes.
+ 
+ 2020-10-05  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op.cc (operator_div::wi_fold): Return varying for
+ 	division by zero.
+ 	(class operator_rshift): Move class up.
+ 	(operator_abs::wi_fold): Return [-MIN,-MIN] for ABS([-MIN,-MIN]).
+ 	(operator_tests): Adjust tests.
+ 
+ 2020-10-05  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* tracer.c (ignore_bb_p): Ignore GOMP_SIMT_XCHG_*.
+ 
+ 2020-10-05  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (neoverse-v1): Add missing vendor and
+ 	part numbers.
+ 
+ 2020-10-05  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* tracer.c (ignore_bb_p): Remove incorrect suggestion.
+ 
+ 2020-10-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* opth-gen.awk: Don't emit explicit_mask array if n_target_explicit
+ 	is equal to n_target_explicit_mask.
+ 	* optc-save-gen.awk: Compute has_target_explicit_mask and if false,
+ 	don't emit code iterating over explicit_mask array elements.  Stream
+ 	also explicit_mask_* target members.
+ 
+ 2020-10-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimple-ssa-store-merging.c
+ 	(imm_store_chain_info::output_merged_store): Use ~0U instead of ~0 in
+ 	unsigned int array initializer.
+ 
+ 2020-10-05  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR fortran/95654
+ 	* tracer.c (ignore_bb_p): Ignore GOMP_SIMT_ENTER_ALLOC,
+ 	GOMP_SIMT_VOTE_ANY and GOMP_SIMT_EXIT.
+ 
+ 2020-10-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* opth-gen.awk: For variables referenced in Mask and InverseMask,
+ 	don't use the explicit_mask bitmask array, but add separate
+ 	explicit_mask_* members with the same types as the variables.
+ 	* optc-save-gen.awk: Save, restore, compare and hash the separate
+ 	explicit_mask_* members.
+ 
+ 2020-10-03  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-modref-tree.c (test_insert_search_collapse): Update andling
+ 	of accesses.
+ 	(test_merge): Likewise.
+ 	* ipa-modref-tree.h (struct modref_access_node): Add offset, size,
+ 	max_size, parm_offset and parm_offset_known.
+ 	(modref_access_node::useful_p): Constify.
+ 	(modref_access_node::range_info_useful_p): New predicate.
+ 	(modref_access_node::operator==): New.
+ 	(struct modref_parm_map): New structure.
+ 	(modref_tree::merge): Update for racking parameters)
+ 	* ipa-modref.c (dump_access): Dump new fields.
+ 	(get_access): Fill in new fields.
+ 	(merge_call_side_effects): Update handling of parm map.
+ 	(write_modref_records): Stream new fields.
+ 	(read_modref_records): Stream new fields.
+ 	(compute_parm_map): Update for new parm map.
+ 	(ipa_merge_modref_summary_after_inlining): Update.
+ 	(modref_propagate_in_scc): Update.
+ 	* tree-ssa-alias.c (modref_may_conflict): Handle known ranges.
+ 
+ 2020-10-03  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR other/97280
+ 	* doc/extend.texi: Replace roudnevenl with roundevenl
+ 
+ 2020-10-02  David Edelsohn  <dje.gcc@gmail.com>
+ 	    Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* config/rs6000/rs6000.c: Include ssa.h. Reorder some headers.
+ 	* config/rs6000/rs6000-call.c: Same.
+ 
+ 2020-10-02  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* params.opt (ipa-cp-large-unit-insns): New parameter.
+ 	* ipa-cp.c (get_max_overall_size): Use the new parameter.
+ 
+ 2020-10-02  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-cp.c (estimate_local_effects): Add overeall_size to dumped
+ 	string.
+ 	(decide_about_value): Add dumping new overall_size.
+ 
+ 2020-10-02  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-fnsummary.h (ipa_freqcounting_predicate): New type.
+ 	(ipa_fn_summary): Change the type of loop_iterations and loop_strides
+ 	to vectors of ipa_freqcounting_predicate.
+ 	(ipa_fn_summary::ipa_fn_summary): Construct the new vectors.
+ 	(ipa_call_estimates): New fields loops_with_known_iterations and
+ 	loops_with_known_strides.
+ 	* ipa-cp.c (hint_time_bonus): Multiply param_ipa_cp_loop_hint_bonus
+ 	with the expected frequencies of loops with known iteration count or
+ 	stride.
+ 	* ipa-fnsummary.c (add_freqcounting_predicate): New function.
+ 	(ipa_fn_summary::~ipa_fn_summary): Release the new vectors instead of
+ 	just two predicates.
+ 	(remap_hint_predicate_after_duplication): Replace with function
+ 	remap_freqcounting_preds_after_dup.
+ 	(ipa_fn_summary_t::duplicate): Use it or duplicate new vectors.
+ 	(ipa_dump_fn_summary): Dump the new vectors.
+ 	(analyze_function_body): Compute the loop property vectors.
+ 	(ipa_call_context::estimate_size_and_time): Calculate also
+ 	loops_with_known_iterations and loops_with_known_strides.  Adjusted
+ 	dumping accordinly.
+ 	(remap_hint_predicate): Replace with function
+ 	remap_freqcounting_predicate.
+ 	(ipa_merge_fn_summary_after_inlining): Use it.
+ 	(inline_read_section): Stream loopcounting vectors instead of two
+ 	simple predicates.
+ 	(ipa_fn_summary_write): Likewise.
+ 	* params.opt (ipa-max-loop-predicates): New parameter.
+ 	* doc/invoke.texi (ipa-max-loop-predicates): Document new param.
+ 
+ 2020-10-02  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-inline-analysis.c (do_estimate_edge_time): Adjusted to use
+ 	ipa_call_estimates.
+ 	(do_estimate_edge_size): Likewise.
+ 	(do_estimate_edge_hints): Likewise.
+ 	* ipa-fnsummary.h (struct ipa_call_estimates): New type.
+ 	(ipa_call_context::estimate_size_and_time): Adjusted declaration.
+ 	(estimate_ipcp_clone_size_and_time): Likewise.
+ 	* ipa-cp.c (hint_time_bonus): Changed the type of the second argument
+ 	to ipa_call_estimates.
+ 	(perform_estimation_of_a_value): Adjusted to use ipa_call_estimates.
+ 	(estimate_local_effects): Likewise.
+ 	* ipa-fnsummary.c (ipa_call_context::estimate_size_and_time): Adjusted
+ 	to return estimates in a single ipa_call_estimates parameter.
+ 	(estimate_ipcp_clone_size_and_time): Likewise.
+ 
+ 2020-10-02  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-fnsummary.h (ipa_cached_call_context): New forward declaration
+ 	and class.
+ 	(class ipa_call_context): Make friend ipa_cached_call_context.  Moved
+ 	methods duplicate_from and release to it too.
+ 	* ipa-fnsummary.c (ipa_call_context::duplicate_from): Moved to class
+ 	ipa_cached_call_context.
+ 	(ipa_call_context::release): Likewise, removed the parameter.
+ 	* ipa-inline-analysis.c (node_context_cache_entry): Change the type of
+ 	ctx to ipa_cached_call_context.
+ 	(do_estimate_edge_time): Remove parameter from the call to
+ 	ipa_cached_call_context::release.
+ 
+ 2020-10-02  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-prop.h (ipa_auto_call_arg_values): New type.
+ 	(class ipa_call_arg_values): Likewise.
+ 	(ipa_get_indirect_edge_target): Replaced vector arguments with
+ 	ipa_call_arg_values in declaration.  Added an overload for
+ 	ipa_auto_call_arg_values.
+ 	* ipa-fnsummary.h (ipa_call_context): Removed members m_known_vals,
+ 	m_known_contexts, m_known_aggs, duplicate_from, release and equal_to,
+ 	new members m_avals, store_to_cache and equivalent_to_p.  Adjusted
+ 	construcotr arguments.
+ 	(estimate_ipcp_clone_size_and_time): Replaced vector arguments
+ 	with ipa_auto_call_arg_values in declaration.
+ 	(evaluate_properties_for_edge): Likewise.
+ 	* ipa-cp.c (ipa_get_indirect_edge_target): Adjusted to work on
+ 	ipa_call_arg_values rather than on separate vectors.  Added an
+ 	overload for ipa_auto_call_arg_values.
+ 	(devirtualization_time_bonus): Adjusted to work on
+ 	ipa_auto_call_arg_values rather than on separate vectors.
+ 	(gather_context_independent_values): Adjusted to work on
+ 	ipa_auto_call_arg_values rather than on separate vectors.
+ 	(perform_estimation_of_a_value): Likewise.
+ 	(estimate_local_effects): Likewise.
+ 	(modify_known_vectors_with_val): Adjusted both variants to work on
+ 	ipa_auto_call_arg_values and rename them to
+ 	copy_known_vectors_add_val.
+ 	(decide_about_value): Adjusted to work on ipa_call_arg_values rather
+ 	than on separate vectors.
+ 	(decide_whether_version_node): Likewise.
+ 	* ipa-fnsummary.c (evaluate_conditions_for_known_args): Likewise.
+ 	(evaluate_properties_for_edge): Likewise.
+ 	(ipa_fn_summary_t::duplicate): Likewise.
+ 	(estimate_edge_devirt_benefit): Adjusted to work on
+ 	ipa_call_arg_values rather than on separate vectors.
+ 	(estimate_edge_size_and_time): Likewise.
+ 	(estimate_calls_size_and_time_1): Likewise.
+ 	(summarize_calls_size_and_time): Adjusted calls to
+ 	estimate_edge_size_and_time.
+ 	(estimate_calls_size_and_time): Adjusted to work on
+ 	ipa_call_arg_values rather than on separate vectors.
+ 	(ipa_call_context::ipa_call_context): Construct from a pointer to
+ 	ipa_auto_call_arg_values instead of inividual vectors.
+ 	(ipa_call_context::duplicate_from): Adjusted to access vectors within
+ 	m_avals.
+ 	(ipa_call_context::release): Likewise.
+ 	(ipa_call_context::equal_to): Likewise.
+ 	(ipa_call_context::estimate_size_and_time): Adjusted to work on
+ 	ipa_call_arg_values rather than on separate vectors.
+ 	(estimate_ipcp_clone_size_and_time): Adjusted to work with
+ 	ipa_auto_call_arg_values rather than on separate vectors.
+ 	(ipa_merge_fn_summary_after_inlining): Likewise.  Adjusted call to
+ 	estimate_edge_size_and_time.
+ 	(ipa_update_overall_fn_summary): Adjusted call to
+ 	estimate_edge_size_and_time.
+ 	* ipa-inline-analysis.c (do_estimate_edge_time): Adjusted to work with
+ 	ipa_auto_call_arg_values rather than with separate vectors.
+ 	(do_estimate_edge_size): Likewise.
+ 	(do_estimate_edge_hints): Likewise.
+ 	* ipa-prop.c (ipa_auto_call_arg_values::~ipa_auto_call_arg_values):
+ 	New destructor.
+ 
+ 2020-10-02  Joe Ramsay  <joe.ramsay@arm.com>
+ 
+ 	* config/arm/arm_mve.h (__arm_vmaxnmavq): Remove coercion of scalar
+ 	argument.
+ 	(__arm_vmaxnmvq): Likewise.
+ 	(__arm_vminnmavq): Likewise.
+ 	(__arm_vminnmvq): Likewise.
+ 	(__arm_vmaxnmavq_p): Likewise.
+ 	(__arm_vmaxnmvq_p): Likewise (and delete duplicate definition).
+ 	(__arm_vminnmavq_p): Likewise.
+ 	(__arm_vminnmvq_p): Likewise.
+ 	(__arm_vmaxavq): Likewise.
+ 	(__arm_vmaxavq_p): Likewise.
+ 	(__arm_vmaxvq): Likewise.
+ 	(__arm_vmaxvq_p): Likewise.
+ 	(__arm_vminavq): Likewise.
+ 	(__arm_vminavq_p): Likewise.
+ 	(__arm_vminvq): Likewise.
+ 	(__arm_vminvq_p): Likewise.
+ 
+ 2020-10-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (neoversev1_tunings): Define.
+ 	* config/aarch64/aarch64-cores.def (zeus): Use it.
+ 	(neoverse-v1): Likewise.
+ 
+ 2020-10-02  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* attr-fnspec.h: Update documentation.
+ 	(attr_fnsec::return_desc_size): Set to 2
+ 	(attr_fnsec::arg_desc_size): Set to 2
+ 	* builtin-attrs.def (STR1): Update fnspec.
+ 	* internal-fn.def (UBSAN_NULL): Update fnspec.
+ 	(UBSAN_VPTR): Update fnspec.
+ 	(UBSAN_PTR): Update fnspec.
+ 	(ASAN_CHECK): Update fnspec.
+ 	(GOACC_DIM_SIZE): Remove fnspec.
+ 	(GOACC_DIM_POS): Remove fnspec.
+ 	* tree-ssa-alias.c (attr_fnspec::verify): Update verification.
+ 
+ 2020-10-02  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* attr-fnspec.h: New file.
+ 	* calls.c (decl_return_flags): Use attr_fnspec.
+ 	* gimple.c (gimple_call_arg_flags): Use attr_fnspec.
+ 	(gimple_call_return_flags): Use attr_fnspec.
+ 	* tree-into-ssa.c (pass_build_ssa::execute): Use attr_fnspec.
+ 	* tree-ssa-alias.c (attr_fnspec::verify): New member fuction.
+ 
+ 2020-10-02  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* tree-ssa-alias.c (ao_ref_init_from_ptr_and_range): Break out from ...
+ 	(ao_ref_init_from_ptr_and_size): ... here.
+ 
+ 2020-10-02  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* data-streamer-in.c (streamer_read_poly_int64): New function.
+ 	* data-streamer-out.c (streamer_write_poly_int64): New function.
+ 	* data-streamer.h (streamer_write_poly_int64): Declare.
+ 	(streamer_read_poly_int64): Declare.
+ 
+ 2020-10-02  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_sve_pred_dominates_p):
+ 	Delete.
+ 	* config/aarch64/aarch64.c (aarch64_sve_pred_dominates_p): Likewise.
+ 	* config/aarch64/aarch64-sve.md: Add banner comment describing
+ 	how merging predicated FP operations are represented.
+ 	(*cond_<SVE_COND_FP_UNARY:optab><mode>_2): Split into...
+ 	(*cond_<SVE_COND_FP_UNARY:optab><mode>_2_relaxed): ...this and...
+ 	(*cond_<SVE_COND_FP_UNARY:optab><mode>_2_strict): ...this.
+ 	(*cond_<SVE_COND_FP_UNARY:optab><mode>_any): Split into...
+ 	(*cond_<SVE_COND_FP_UNARY:optab><mode>_any_relaxed): ...this and...
+ 	(*cond_<SVE_COND_FP_UNARY:optab><mode>_any_strict): ...this.
+ 	(*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_2): Split into...
+ 	(*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_2_relaxed): ...this and...
+ 	(*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_2_strict): ...this.
+ 	(*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_any): Split into...
+ 	(*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_any_relaxed): ...this
+ 	and...
+ 	(*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_any_strict): ...this.
+ 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_2): Split into...
+ 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_2_relaxed): ...this and...
+ 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_2_strict): ...this.
+ 	(*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_2_const): Split into...
+ 	(*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_2_const_relaxed): ...this
+ 	and...
+ 	(*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_2_const_strict): ...this.
+ 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_3): Split into...
+ 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_3_relaxed): ...this and...
+ 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_3_strict): ...this.
+ 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_any): Split into...
+ 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_any_relaxed): ...this and...
+ 	(*cond_<SVE_COND_FP_BINARY:optab><mode>_any_strict): ...this.
+ 	(*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_any_const): Split into...
+ 	(*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_any_const_relaxed): ...this
+ 	and...
+ 	(*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_any_const_strict): ...this.
+ 	(*cond_add<mode>_2_const): Split into...
+ 	(*cond_add<mode>_2_const_relaxed): ...this and...
+ 	(*cond_add<mode>_2_const_strict): ...this.
+ 	(*cond_add<mode>_any_const): Split into...
+ 	(*cond_add<mode>_any_const_relaxed): ...this and...
+ 	(*cond_add<mode>_any_const_strict): ...this.
+ 	(*cond_<SVE_COND_FCADD:optab><mode>_2): Split into...
+ 	(*cond_<SVE_COND_FCADD:optab><mode>_2_relaxed): ...this and...
+ 	(*cond_<SVE_COND_FCADD:optab><mode>_2_strict): ...this.
+ 	(*cond_<SVE_COND_FCADD:optab><mode>_any): Split into...
+ 	(*cond_<SVE_COND_FCADD:optab><mode>_any_relaxed): ...this and...
+ 	(*cond_<SVE_COND_FCADD:optab><mode>_any_strict): ...this.
+ 	(*cond_sub<mode>_3_const): Split into...
+ 	(*cond_sub<mode>_3_const_relaxed): ...this and...
+ 	(*cond_sub<mode>_3_const_strict): ...this.
+ 	(*aarch64_pred_abd<mode>): Split into...
+ 	(*aarch64_pred_abd<mode>_relaxed): ...this and...
+ 	(*aarch64_pred_abd<mode>_strict): ...this.
+ 	(*aarch64_cond_abd<mode>_2): Split into...
+ 	(*aarch64_cond_abd<mode>_2_relaxed): ...this and...
+ 	(*aarch64_cond_abd<mode>_2_strict): ...this.
+ 	(*aarch64_cond_abd<mode>_3): Split into...
+ 	(*aarch64_cond_abd<mode>_3_relaxed): ...this and...
+ 	(*aarch64_cond_abd<mode>_3_strict): ...this.
+ 	(*aarch64_cond_abd<mode>_any): Split into...
+ 	(*aarch64_cond_abd<mode>_any_relaxed): ...this and...
+ 	(*aarch64_cond_abd<mode>_any_strict): ...this.
+ 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_2): Split into...
+ 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_2_relaxed): ...this and...
+ 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_2_strict): ...this.
+ 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_4): Split into...
+ 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_4_relaxed): ...this and...
+ 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_4_strict): ...this.
+ 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_any): Split into...
+ 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_any_relaxed): ...this and...
+ 	(*cond_<SVE_COND_FP_TERNARY:optab><mode>_any_strict): ...this.
+ 	(*cond_<SVE_COND_FCMLA:optab><mode>_4): Split into...
+ 	(*cond_<SVE_COND_FCMLA:optab><mode>_4_relaxed): ...this and...
+ 	(*cond_<SVE_COND_FCMLA:optab><mode>_4_strict): ...this.
+ 	(*cond_<SVE_COND_FCMLA:optab><mode>_any): Split into...
+ 	(*cond_<SVE_COND_FCMLA:optab><mode>_any_relaxed): ...this and...
+ 	(*cond_<SVE_COND_FCMLA:optab><mode>_any_strict): ...this.
+ 	(*aarch64_pred_fac<cmp_op><mode>): Split into...
+ 	(*aarch64_pred_fac<cmp_op><mode>_relaxed): ...this and...
+ 	(*aarch64_pred_fac<cmp_op><mode>_strict): ...this.
+ 	(*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>): Split
+ 	into...
+ 	(*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_relaxed):
+ 	...this and...
+ 	(*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_strict):
+ 	...this.
+ 	(*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>): Split
+ 	into...
+ 	(*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_relaxed):
+ 	...this and...
+ 	(*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_strict):
+ 	...this.
+ 	* config/aarch64/aarch64-sve2.md
+ 	(*cond_<SVE2_COND_FP_UNARY_LONG:optab><mode>): Split into...
+ 	(*cond_<SVE2_COND_FP_UNARY_LONG:optab><mode>_relaxed): ...this and...
+ 	(*cond_<SVE2_COND_FP_UNARY_LONG:optab><mode>_strict): ...this.
+ 	(*cond_<SVE2_COND_FP_UNARY_NARROWB:optab><mode>_any): Split into...
+ 	(*cond_<SVE2_COND_FP_UNARY_NARROWB:optab><mode>_any_relaxed): ...this
+ 	and...
+ 	(*cond_<SVE2_COND_FP_UNARY_NARROWB:optab><mode>_any_strict): ...this.
+ 	(*cond_<SVE2_COND_INT_UNARY_FP:optab><mode>): Split into...
+ 	(*cond_<SVE2_COND_INT_UNARY_FP:optab><mode>_relaxed): ...this and...
+ 	(*cond_<SVE2_COND_INT_UNARY_FP:optab><mode>_strict): ...this.
+ 
+ 2020-10-02  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/arm/neon.md (*sub<VDQ:mode>3_neon): Use the new mode macros
+ 	for the insn condition.
+ 	(sub<VH:mode>3, *mul<VDQW:mode>3_neon): Likewise.
+ 	(mul<VDQW:mode>3add<VDQW:mode>_neon): Likewise.
+ 	(mul<VH:mode>3add<VH:mode>_neon): Likewise.
+ 	(mul<VDQW:mode>3neg<VDQW:mode>add<VDQW:mode>_neon): Likewise.
+ 	(fma<VCVTF:mode>4, fma<VH:mode>4, *fmsub<VCVTF:mode>4): Likewise.
+ 	(quad_halves_<code>v4sf, reduc_plus_scal_<VD:mode>): Likewise.
+ 	(reduc_plus_scal_<VQ:mode>, reduc_smin_scal_<VD:mode>): Likewise.
+ 	(reduc_smin_scal_<VQ:mode>, reduc_smax_scal_<VD:mode>): Likewise.
+ 	(reduc_smax_scal_<VQ:mode>, mul<VH:mode>3): Likewise.
+ 	(neon_vabd<VF:mode>_2, neon_vabd<VF:mode>_3): Likewise.
+ 	(fma<VH:mode>4_intrinsic): Delete.
+ 	(neon_vadd<VCVTF:mode>): Use the new mode macros to decide which
+ 	form of instruction to generate.
+ 	(neon_vmla<VDQW:mode>, neon_vmls<VDQW:mode>): Likewise.
+ 	(neon_vsub<VCVTF:mode>): Likewise.
+ 	(neon_vfma<VH:mode>): Generate the main fma<mode>4 form instead
+ 	of using fma<mode>4_intrinsic.
+ 
+ 2020-10-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/97193
+ 	* coverage.c (coverage_init): GCDA note files should not be
+ 	mangled and should end in output directory.
+ 
+ 2020-10-02  Jason Merril  <jason@redhat.com>
+ 
+ 	* gimple.h (gimple_call_operator_delete_p): Rename from
+ 	gimple_call_replaceable_operator_delete_p.
+ 	* gimple.c (gimple_call_operator_delete_p): Likewise.
+ 	* tree.h (DECL_IS_REPLACEABLE_OPERATOR_DELETE_P): Remove.
+ 	* tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Adjust.
+ 	(propagate_necessity): Likewise.
+ 	(eliminate_unnecessary_stmts): Likewise.
+ 	* tree-ssa-structalias.c (find_func_aliases_for_call): Likewise.
+ 
+ 2020-10-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple.h (GF_CALL_FROM_NEW_OR_DELETE): New call flag.
+ 	(gimple_call_set_from_new_or_delete): New.
+ 	(gimple_call_from_new_or_delete): Likewise.
+ 	* gimple.c (gimple_build_call_from_tree): Set
+ 	GF_CALL_FROM_NEW_OR_DELETE appropriately.
+ 	* ipa-icf-gimple.c (func_checker::compare_gimple_call):
+ 	Compare gimple_call_from_new_or_delete.
+ 	* tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Make
+ 	sure to only consider new/delete calls from new or delete
+ 	expressions.
+ 	(propagate_necessity): Likewise.
+ 	(eliminate_unnecessary_stmts): Likewise.
+ 	* tree-ssa-structalias.c (find_func_aliases_for_call):
+ 	Likewise.
+ 
+ 2020-10-02  Jason Merril  <jason@redhat.com>
+ 
+ 	* tree.h (CALL_FROM_NEW_OR_DELETE_P): Move from cp-tree.h.
+ 	* tree-core.h: Document new usage of protected_flag.
+ 
+ 2020-10-02  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.h (irange::fits_p): New.
+ 
+ 2020-10-01  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_legitimize_address): Use
+ 	gen_int_mode for high part of address constant.
+ 
+ 2020-10-01  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_linux64_override_options):
+ 	Formatting.  Correct setting of TARGET_NO_FP_IN_TOC and
+ 	TARGET_NO_SUM_IN_TOC.
+ 
+ 2020-10-01  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/freebsd64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
+ 	rs6000_linux64_override_options.
+ 	* config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Break
+ 	out to..
+ 	* config/rs6000/rs6000.c (rs6000_linux64_override_options): ..this,
+ 	new function.  Tweak non-biarch test and clearing of
+ 	profile_kernel to work with freebsd64.h.
+ 
+ 2020-10-01  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/rs6000/rs6000-call.c: Include value-range.h.
+ 	* config/rs6000/rs6000.c: Likewise.
+ 
+ 2020-10-01  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/80845
+ 	* config/nvptx/nvptx.md (define_insn "truncsi<QHIM>2"): Emit mov.u32
+ 	instead of cvt.u32.u32.
+ 
+ 2020-10-01  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/96528
+ 	PR target/97288
+ 	* config/arm/arm-protos.h (arm_expand_vector_compare): Declare.
+ 	(arm_expand_vcond): Likewise.
+ 	* config/arm/arm.c (arm_expand_vector_compare): New function.
+ 	(arm_expand_vcond): Likewise.
+ 	* config/arm/neon.md (vec_cmp<VDQW:mode><v_cmp_result>): New pattern.
+ 	(vec_cmpu<VDQW:mode><VDQW:mode>): Likewise.
+ 	(vcond<VDQW:mode><VDQW:mode>): Require operand 5 to be a register
+ 	or zero.  Use arm_expand_vcond.
+ 	(vcond<V_cvtto><V32:mode>): New pattern.
+ 	(vcondu<VDQIW:mode><VDQIW:mode>): Generalize to...
+ 	(vcondu<VDQW:mode><v_cmp_result): ...this.  Require operand 5
+ 	to be a register or zero.  Use arm_expand_vcond.
+ 	(vcond_mask_<VDQW:mode><v_cmp_result>): New pattern.
+ 	(neon_vc<cmp_op><mode>, neon_vc<cmp_op><mode>_insn): Add "@" marker.
+ 	(neon_vbsl<mode>): Likewise.
+ 	(neon_vc<cmp_op>u<mode>): Reexpress as...
+ 	(@neon_vc<code><mode>): ...this.
+ 
+ 2020-10-01  Michael Davidsaver  <mdavidsaver@gmail.com>
+ 
+ 	* config/i386/t-rtems: Change from mtune to march when building
+ 	multilibs.  The mtune argument tunes or optimizes for a specific
+ 	CPU model but does not ensure the generated code is appropriate
+ 	for the CPU model. Prior to this patch, i386 compatible code
+ 	was always generated but tuned for later models.
+ 
+ 2020-10-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* builtins.c (compute_objsize): Replace vr_values with range_query.
+ 	(get_range): Same.
+ 	(gimple_call_alloc_size): Same.
+ 	* builtins.h (class vr_values):  Remove.
+ 	(gimple_call_alloc_size): Replace vr_values with range_query.
+ 	* gimple-ssa-sprintf.c (get_int_range): Same.
+ 	(struct directive): Pass gimple context to fmtfunc callback.
+ 	(directive::set_width): Replace inline with out-of-line version.
+ 	(directive::set_precision): Same.
+ 	(format_none): New gimple argument.
+ 	(format_percent): New gimple argument.
+ 	(format_integer): New gimple argument.
+ 	(format_floating): New gimple argument.
+ 	(get_string_length): Use range_query API.
+ 	(format_character): New gimple argument.
+ 	(format_string): New gimple argument.
+ 	(format_plain): New gimple argument.
+ 	(format_directive): New gimple argument.
+ 	(parse_directive): Replace vr_values with range_query.
+ 	(compute_format_length): Same.
+ 	(handle_printf_call): Same.  Adjust for range_query API.
+ 	* tree-ssa-strlen.c (get_range): Same.
+ 	(compare_nonzero_chars): Same.
+ 	(get_addr_stridx) Replace vr_values with range_query.
+ 	(get_stridx): Same.
+ 	(dump_strlen_info): Same.
+ 	(get_range_strlen_dynamic): Adjust for range_query API.
+ 	(set_strlen_range): Same
+ 	(maybe_warn_overflow): Replace vr_values with range_query.
+ 	(handle_builtin_strcpy): Same.
+ 	(maybe_diag_stxncpy_trunc): Add FIXME comment.
+ 	(handle_builtin_memcpy): Replace vr_values with range_query.
+ 	(handle_builtin_memset): Same.
+ 	(get_len_or_size): Same.
+ 	(strxcmp_eqz_result): Same.
+ 	(handle_builtin_string_cmp): Same.
+ 	(count_nonzero_bytes_addr): Same, plus adjust for range_query API.
+ 	(count_nonzero_bytes): Replace vr_values with range_query.
+ 	(handle_store): Same.
+ 	(strlen_check_and_optimize_call): Same.
+ 	(handle_integral_assign): Same.
+ 	(check_and_optimize_stmt): Same.
+ 	* tree-ssa-strlen.h (class vr_values): Remove.
+ 	(get_range): Replace vr_values with range_query.
+ 	(get_range_strlen_dynamic): Same.
+ 	(handle_printf_call): Same.
+ 
+ 2020-10-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-loop-versioning.cc (lv_dom_walker::before_dom_children):
+ 	Pass m_range_analyzer instead of get_vr_values.
+ 	(loop_versioning::name_prop::get_value): Rename to...
+ 	(loop_versioning::name_prop::value_of_expr): ...this.
+ 	* gimple-ssa-evrp-analyze.c (evrp_range_analyzer::evrp_range_analyzer):
+ 	Adjust for evrp_range_analyzer
+ 	inheriting from vr_values.
+ 	(evrp_range_analyzer::try_find_new_range): Same.
+ 	(evrp_range_analyzer::record_ranges_from_incoming_edge): Same.
+ 	(evrp_range_analyzer::record_ranges_from_phis): Same.
+ 	(evrp_range_analyzer::record_ranges_from_stmt): Same.
+ 	(evrp_range_analyzer::push_value_range): Same.
+ 	(evrp_range_analyzer::pop_value_range): Same.
+ 	* gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Inherit from
+ 	vr_values.  Adjust accordingly.
+ 	* gimple-ssa-evrp.c: Adjust for evrp_range_analyzer inheriting from
+ 	vr_values.
+ 	(evrp_folder::value_of_evrp): Rename from get_value.
+ 	* tree-ssa-ccp.c (class ccp_folder): Rename get_value to
+ 	value_of_expr.
+ 	(ccp_folder::get_value): Rename to...
+ 	(ccp_folder::value_of_expr): ...this.
+ 	* tree-ssa-copy.c (class copy_folder): Rename get_value to
+ 	value_of_expr.
+ 	(copy_folder::get_value): Rename to...
+ 	(copy_folder::value_of_expr): ...this.
+ 	* tree-ssa-dom.c (dom_opt_dom_walker::after_dom_children): Adjust
+ 	for evrp_range_analyzer inheriting from vr_values.
+ 	(dom_opt_dom_walker::optimize_stmt): Same.
+ 	* tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in):
+ 	Call value_of_* instead of get_value.
+ 	(substitute_and_fold_engine::replace_phi_args_in): Same.
+ 	(substitute_and_fold_engine::propagate_into_phi_args): Same.
+ 	(substitute_and_fold_dom_walker::before_dom_children): Same.
+ 	* tree-ssa-propagate.h: Include value-query.h.
+ 	(class substitute_and_fold_engine): Inherit from value_query.
+ 	* tree-ssa-strlen.c (strlen_dom_walker::before_dom_children):
+ 	Adjust for evrp_range_analyzer inheriting from vr_values.
+ 	* tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
+ 	Same.
+ 	* tree-vrp.c (class vrp_folder): Same.
+ 	(vrp_folder::get_value): Rename to value_of_expr.
+ 	* vr-values.c (vr_values::get_lattice_entry): Adjust for
+ 	vr_values inheriting from range_query.
+ 	(vr_values::range_of_expr): New.
+ 	(vr_values::value_of_expr): New.
+ 	(vr_values::value_on_edge): New.
+ 	(vr_values::value_of_stmt): New.
+ 	(simplify_using_ranges::op_with_boolean_value_range_p): Call
+ 	get_value_range through query.
+ 	(check_for_binary_op_overflow): Rename store to query.
+ 	(vr_values::vr_values): Remove vrp_value_range_pool.
+ 	(vr_values::~vr_values): Same.
+ 	(simplify_using_ranges::get_vr_for_comparison): Call get_value_range
+ 	through query.
+ 	(simplify_using_ranges::compare_names): Same.
+ 	(simplify_using_ranges::vrp_evaluate_conditional): Same.
+ 	(simplify_using_ranges::vrp_visit_cond_stmt): Same.
+ 	(simplify_using_ranges::simplify_abs_using_ranges): Same.
+ 	(simplify_using_ranges::simplify_cond_using_ranges_1): Same.
+ 	(simplify_cond_using_ranges_2): Same.
+ 	(simplify_using_ranges::simplify_switch_using_ranges): Same.
+ 	(simplify_using_ranges::two_valued_val_range_p): Same.
+ 	(simplify_using_ranges::simplify_using_ranges): Rename store to query.
+ 	(simplify_using_ranges::simplify): Assert that we have a query.
+ 	* vr-values.h (class range_query): Remove.
+ 	(class simplify_using_ranges): Remove inheritance of range_query.
+ 	(class vr_values): Add virtuals for range_of_expr, value_of_expr,
+ 	value_on_edge, value_of_stmt, and get_value_range.
+ 	Call range_query allocator instead of using vrp_value_range_pool.
+ 	Remove vrp_value_range_pool.
+ 	(simplify_using_ranges::get_value_range): Remove.
+ 
+ 2020-10-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97236
+ 	* tree-vect-stmts.c (get_group_load_store_type): Keep
+ 	VMAT_ELEMENTWISE for single-element vectors.
+ 
+ 2020-10-01  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (compute_parm_map): Be ready for callee_pi to be NULL.
+ 
+ 2020-10-01  Jan Hubicka  <jh@suse.cz>
+ 
+ 	PR ipa/97244
+ 	* ipa-fnsummary.c (pass_free_fnsummary::execute): Free
+ 	also indirect inlining datastructure.
+ 	* ipa-modref.c (pass_ipa_modref::execute): Do not free them here.
+ 	* ipa-prop.c (ipa_free_all_node_params): Do not crash when info does
+ 	not exist.
+ 	(ipa_unregister_cgraph_hooks): Likewise.
+ 
+ 2020-10-01  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* internal-fn.c (DEF_INTERNAL_FN): Fix handling of fnspec
+ 
+ 2020-10-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* Makefile.in: Add value-query.o.
+ 	* value-query.cc: New file.
+ 	* value-query.h: New file.
+ 
+ 2020-10-01  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* config/arm/arm-cpus.in: Fix ordering, move Neoverse N2 down.
+ 	* config/arm/arm-tables.opt: Regenerate.
+ 	* config/arm/arm-tune.md: Regenerate.
+ 
+ 2020-10-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/s390/s390.c (s390_atomic_assign_expand_fenv): Use
+ 	TARGET_EXPR instead of MODIFY_EXPR for the first assignments to
+ 	fenv_var and old_fpc.  Formatting fixes.
+ 
+ 2020-10-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-patterns.c (vect_recog_bool_pattern): Also handle
+ 	VIEW_CONVERT_EXPR.
+ 
+ 2020-10-01  Florian Weimer  <fweimer@redhat.com>
+ 
+ 	PR target/97250
+ 	* config/i386/i386.h (PTA_NO_TUNE, PTA_X86_64_BASELINE)
+ 	(PTA_X86_64_V2, PTA_X86_64_V3, PTA_X86_64_V4): New.
+ 	* common/config/i386/i386-common.c (processor_alias_table):
+ 	Add "x86-64-v2", "x86-64-v3", "x86-64-v4".
+ 	* config/i386/i386-options.c (ix86_option_override_internal):
+ 	Handle new PTA_NO_TUNE processor table entries.
+ 	* doc/invoke.texi (x86 Options): Document new -march values.
+ 
+ 2020-10-01  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/ppc-asm.h: Support __PCREL__ code.
+ 
+ 2020-10-01  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Don't
+ 	set -mcmodel=small for -mno-minimal-toc when pcrel.
+ 
+ 2020-09-30  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/97189
+ 	* attribs.c (attr_access::array_as_string): Avoid assuming a VLA
+ 	access specification string contains a closing bracket.
+ 
+ 2020-09-30  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c/97206
+ 	* attribs.c (attr_access::array_as_string): Avoid modifying a shared
+ 	type in place and use build_type_attribute_qual_variant instead.
+ 
+ 2020-09-30  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
+ 
+ 	* config/arm/arm-cpus.in: Add Cortex-A78 and Cortex-A78AE cores.
+ 	* config/arm/arm-tables.opt: Regenerate.
+ 	* config/arm/arm-tune.md: Regenerate.
+ 	* doc/invoke.texi: Update docs.
+ 
+ 2020-09-30  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def: Add Cortex-A78 and Cortex-A78AE cores.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* doc/invoke.texi: Add -mtune=cortex-a78 and -mtune=cortex-a78ae.
+ 
+ 2020-09-30  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	PR target/96795
+ 	* config/arm/arm_mve.h (__ARM_mve_coerce2): Define.
+ 	(__arm_vaddq): Correct the scalar argument.
+ 	(__arm_vaddq_m): Likewise.
+ 	(__arm_vaddq_x): Likewise.
+ 	(__arm_vcmpeqq_m): Likewise.
+ 	(__arm_vcmpeqq): Likewise.
+ 	(__arm_vcmpgeq_m): Likewise.
+ 	(__arm_vcmpgeq): Likewise.
+ 	(__arm_vcmpgtq_m): Likewise.
+ 	(__arm_vcmpgtq): Likewise.
+ 	(__arm_vcmpleq_m): Likewise.
+ 	(__arm_vcmpleq): Likewise.
+ 	(__arm_vcmpltq_m): Likewise.
+ 	(__arm_vcmpltq): Likewise.
+ 	(__arm_vcmpneq_m): Likewise.
+ 	(__arm_vcmpneq): Likewise.
+ 	(__arm_vfmaq_m): Likewise.
+ 	(__arm_vfmaq): Likewise.
+ 	(__arm_vfmasq_m): Likewise.
+ 	(__arm_vfmasq): Likewise.
+ 	(__arm_vmaxnmavq): Likewise.
+ 	(__arm_vmaxnmavq_p): Likewise.
+ 	(__arm_vmaxnmvq): Likewise.
+ 	(__arm_vmaxnmvq_p): Likewise.
+ 	(__arm_vminnmavq): Likewise.
+ 	(__arm_vminnmavq_p): Likewise.
+ 	(__arm_vminnmvq): Likewise.
+ 	(__arm_vminnmvq_p): Likewise.
+ 	(__arm_vmulq_m): Likewise.
+ 	(__arm_vmulq): Likewise.
+ 	(__arm_vmulq_x): Likewise.
+ 	(__arm_vsetq_lane): Likewise.
+ 	(__arm_vsubq_m): Likewise.
+ 	(__arm_vsubq): Likewise.
+ 	(__arm_vsubq_x): Likewise.
+ 
+ 2020-09-30  Joel Hutton  <joel.hutton@arm.com>
+ 
+ 	PR target/96837
+ 	* tree-vect-slp.c (vect_analyze_slp): Do not call
+ 	vect_attempt_slp_rearrange_stmts for vector constructors.
+ 
+ 2020-09-30  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* tree-vectorizer.h (SLP_TREE_REF_COUNT): New.
+ 	* tree-vect-slp.c (_slp_tree::_slp_tree, _slp_tree::~_slp_tree,
+ 	vect_free_slp_tree, vect_build_slp_tree, vect_print_slp_tree,
+ 	slp_copy_subtree, vect_attempt_slp_rearrange_stmts): Use it.
+ 
+ 2020-09-30  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* omp-offload.c (omp_discover_implicit_declare_target): Also
+ 	handled nested functions.
+ 
+ 2020-09-30  Tobias Burnus  <tobias@codesourcery.com>
+ 	    Tom de Vries  <tdevries@suse.de>
+ 
+ 	* builtins.c (expand_builtin_cexpi, fold_builtin_sincos): Update
+ 	targetm.libc_has_function call.
+ 	* builtins.def (DEF_C94_BUILTIN, DEF_C99_BUILTIN, DEF_C11_BUILTIN):
+ 	(DEF_C2X_BUILTIN, DEF_C99_COMPL_BUILTIN, DEF_C99_C90RES_BUILTIN):
+ 	Same.
+ 	* config/darwin-protos.h (darwin_libc_has_function): Update prototype.
+ 	* config/darwin.c (darwin_libc_has_function): Add arg.
+ 	* config/linux-protos.h (linux_libc_has_function): Update prototype.
+ 	* config/linux.c (linux_libc_has_function): Add arg.
+ 	* config/i386/i386.c (ix86_libc_has_function): Update
+ 	targetm.libc_has_function call.
+ 	* config/nvptx/nvptx.c (nvptx_libc_has_function): New function.
+ 	(TARGET_LIBC_HAS_FUNCTION): Redefine to nvptx_libc_has_function.
+ 	* convert.c (convert_to_integer_1): Update targetm.libc_has_function
+ 	call.
+ 	* match.pd: Same.
+ 	* target.def (libc_has_function): Add arg.
+ 	* doc/tm.texi: Regenerate.
+ 	* targhooks.c (default_libc_has_function, gnu_libc_has_function)
+ 	(no_c99_libc_has_function): Add arg.
+ 	* targhooks.h (default_libc_has_function, no_c99_libc_has_function)
+ 	(gnu_libc_has_function): Update prototype.
+ 	* tree-ssa-math-opts.c (pass_cse_sincos::execute): Update
+ 	targetm.libc_has_function call.
+ 
+ 2020-09-30  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/97184
+ 	* config/i386/i386.md (UNSPECV_MOVDIRI): Renamed to ...
+ 	(UNSPEC_MOVDIRI): This.
+ 	(UNSPECV_MOVDIR64B): Renamed to ...
+ 	(UNSPEC_MOVDIR64B): This.
+ 	(movdiri<mode>): Use SET operation.
+ 	(@movdir64b_<mode>): Likewise.
+ 
+ 2020-09-30  Florian Weimer  <fweimer@redhat.com>
+ 
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Define
+ 	__LAHF_SAHF__ and __MOVBE__ based on ISA flags.
+ 
+ 2020-09-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/97150
+ 	* config/aarch64/arm_neon.h (vqrshlb_u8): Make second argument
+ 	signed.
+ 	(vqrshlh_u16): Likewise.
+ 	(vqrshls_u32): Likewise.
+ 	(vqrshld_u64): Likewise.
+ 	(vqshlb_u8): Likewise.
+ 	(vqshlh_u16): Likewise.
+ 	(vqshls_u32): Likewise.
+ 	(vqshld_u64): Likewise.
+ 	(vshld_u64): Likewise.
+ 
+ 2020-09-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/96313
+ 	* config/aarch64/aarch64-simd-builtins.def (sqmovun): Use UNOPUS
+ 	qualifiers.
+ 	* config/aarch64/arm_neon.h (vqmovun_s16): Adjust builtin call.
+ 	Remove unnecessary result cast.
+ 	(vqmovun_s32): Likewise.
+ 	(vqmovun_s64): Likewise.
+ 	(vqmovunh_s16): Likewise.  Fix return type.
+ 	(vqmovuns_s32): Likewise.
+ 	(vqmovund_s64): Likewise.
+ 
+ 2020-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_split_128bit_move_p): Add a
+ 	function comment.  Tighten check for FP moves.
+ 	* config/aarch64/aarch64.md (*movti_aarch64): Add a w<-Z alternative.
+ 	(*movtf_aarch64): Handle r<-Y like r<-r.  Remove unnecessary
+ 	earlyclobber.  Change splitter predicate from aarch64_reg_or_imm
+ 	to nonmemory_operand.
+ 
+ 2020-09-30  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR target/97251
+ 	* config/arm/arm.md (movsf): Relax TARGET_HARD_FLOAT to
+ 	TARGET_VFP_BASE.
+ 	(movdf): Likewise.
+ 	* config/arm/vfp.md (no_literal_pool_df_immediate): Likewise.
+ 	(no_literal_pool_sf_immediate): Likewise.
+ 
+ 2020-09-30  Alan Modra  <amodra@gmail.com>
+ 
+ 	* configure.ac (--with-long-double-format): Typo fix.
+ 	* configure: Regenerate.
+ 
+ 2020-09-30  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/rs6000.md (@tablejump<mode>_normal): Don't use
+ 	non-existent operands[].
+ 	(@tablejump<mode>_nospec): Likewise.
+ 
+ 2020-09-30  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md (tablejump): Simplify.
+ 	(tablejumpsi): Merge this ...
+ 	(tablejumpdi): ... and this ...
+ 	(@tablejump<mode>_normal): ... into this.
+ 	(tablejumpsi_nospec): Merge this ...
+ 	(tablejumpdi_nospec): ... and this ...
+ 	(@tablejump<mode>_nospec): ... into this.
+ 	(*tablejump<mode>_internal1): Delete, rename to ...
+ 	(@tablejump<mode>_insn_normal): ... this.
+ 	(*tablejump<mode>_internal1_nospec): Delete, rename to ...
+ 	(@tablejump<mode>_insn_nospec): ... this.
+ 
+ 2020-09-29  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/97188
+ 	* calls.c (maybe_warn_rdwr_sizes): Simplify warning messages.
+ 	Correct handling of VLA argumments.
+ 
+ 2020-09-29  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/94695
+ 	* doc/invoke.texi: Document -Wrange-loop-construct.
+ 
+ 2020-09-29  Jim Wilson  <jimw@sifive.com>
+ 
+ 	PR bootstrap/97183
+ 	* configure.ac (gcc_cv_header_zstd_h): Check ZSTD_VERISON_NUMBER.
+ 	* configure: Regenerated.
+ 
+ 2020-09-29  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
+ 
+ 	* config/arm/arm-cpus.in: Add Cortex-X1 core.
+ 	* config/arm/arm-tables.opt: Regenerate.
+ 	* config/arm/arm-tune.md: Regenerate.
+ 	* doc/invoke.texi: Update docs.
+ 
+ 2020-09-29  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def: Add Cortex-X1 Arm core.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* doc/invoke.texi: Add -mtune=cortex-x1 docs.
+ 
+ 2020-09-29  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/97247
+ 	* config/i386/enqcmdintrin.h: Replace <enqcmdntrin.h> with
+ 	<enqcmdintrin.h>.  Replace _ENQCMDNTRIN_H_INCLUDED with
+ 	_ENQCMDINTRIN_H_INCLUDED.
+ 
+ 2020-09-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97241
+ 	* tree-vect-loop.c (vectorizable_reduction): Move finding
+ 	the SLP node for the reduction stmt to a better place.
+ 
+ 2020-09-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_analyze_slp): Move SLP reduction
+ 	re-arrangement and SLP graph load gathering...
+ 	(vect_optimize_slp): ... here.
+ 	* tree-vectorizer.h (vec_info::slp_loads): Remove.
+ 
+ 2020-09-29  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	PR target/97231
+ 	* config/i386/amxbf16intrin.h: Add FSF copyright notes.
+ 	* config/i386/amxint8intrin.h: Ditto.
+ 	* config/i386/amxtileintrin.h: Ditto.
+ 	* config/i386/avx512vp2intersectintrin.h: Ditto.
+ 	* config/i386/avx512vp2intersectvlintrin.h: Ditto.
+ 	* config/i386/pconfigintrin.h: Ditto.
+ 	* config/i386/tsxldtrkintrin.h: Ditto.
+ 	* config/i386/wbnoinvdintrin.h: Ditto.
+ 
+ 2020-09-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97238
+ 	* tree-ssa-reassoc.c (ovce_extract_ops): Fix typo.
+ 
+ 2020-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/arm/arm.h (ARM_HAVE_NEON_V8QI_ARITH, ARM_HAVE_NEON_V4HI_ARITH)
+ 	(ARM_HAVE_NEON_V2SI_ARITH, ARM_HAVE_NEON_V16QI_ARITH): New macros.
+ 	(ARM_HAVE_NEON_V8HI_ARITH, ARM_HAVE_NEON_V4SI_ARITH): Likewise.
+ 	(ARM_HAVE_NEON_V2DI_ARITH, ARM_HAVE_NEON_V4HF_ARITH): Likewise.
+ 	(ARM_HAVE_NEON_V8HF_ARITH, ARM_HAVE_NEON_V2SF_ARITH): Likewise.
+ 	(ARM_HAVE_NEON_V4SF_ARITH, ARM_HAVE_V8QI_ARITH, ARM_HAVE_V4HI_ARITH)
+ 	(ARM_HAVE_V2SI_ARITH, ARM_HAVE_V16QI_ARITH, ARM_HAVE_V8HI_ARITH)
+ 	(ARM_HAVE_V4SI_ARITH, ARM_HAVE_V2DI_ARITH, ARM_HAVE_V4HF_ARITH)
+ 	(ARM_HAVE_V2SF_ARITH, ARM_HAVE_V8HF_ARITH, ARM_HAVE_V4SF_ARITH):
+ 	Likewise.
+ 	* config/arm/iterators.md (VNIM, VNINOTM): Delete.
+ 	* config/arm/vec-common.md (add<VNIM:mode>3, addv8hf3)
+ 	(add<VNINOTM:mode>3): Replace with...
+ 	(add<VDQ:mode>3): ...this new expander.
+ 	* config/arm/neon.md (*add<VDQ:mode>3_neon): Use the new
+ 	ARM_HAVE_NEON_<MODE>_ARITH macros as the C condition.
+ 	(addv8hf3_neon, addv4hf3, add<VFH:mode>3_fp16): Delete in
+ 	favor of the above.
+ 	(neon_vadd<VH:mode>): Use gen_add<mode>3 instead of
+ 	gen_add<mode>3_fp16.
+ 
+ 2020-09-29  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
+ 	__riscv_cmodel_medany when PIC mode.
+ 
+ 2020-09-29  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def: Move neoverse-n2 after saphira.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 
+ 2020-09-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/96979
+ 	* tree-switch-conversion.c (jump_table_cluster::can_be_handled):
+ 	Make a fast bail out.
+ 	(bit_test_cluster::can_be_handled): Likewise here.
+ 	* tree-switch-conversion.h (get_range): Use wi::to_wide instead
+ 	of a folding.
+ 
+ 2020-09-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2020-09-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/96979
+ 	* doc/invoke.texi: Document new param max-switch-clustering-attempts.
+ 	* params.opt: Add new parameter.
+ 	* tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
+ 	Limit number of attempts.
+ 	(bit_test_cluster::find_bit_tests): Likewise.
+ 
+ 2020-09-28  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.h (class irange): Add irange_allocator friend.
+ 	(class irange_allocator): New.
+ 
+ 2020-09-28  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR middle-end/96390
+ 	* omp-offload.c (omp_discover_declare_target_tgt_fn_r): Handle
+ 	alias nodes.
+ 
+ 2020-09-28  Paul A. Clarke  <pc@us.ibm.com>
+ 
+ 	* config/rs6000/smmintrin.h (_mm_insert_epi8): New.
+ 	(_mm_insert_epi32): New.
+ 	(_mm_insert_epi64): New.
+ 
+ 2020-09-28  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA2_AMX_TILE_SET,
+ 	OPTION_MASK_ISA2_AMX_INT8_SET, OPTION_MASK_ISA2_AMX_BF16_SET,
+ 	OPTION_MASK_ISA2_AMX_TILE_UNSET, OPTION_MASK_ISA2_AMX_INT8_UNSET,
+ 	OPTION_MASK_ISA2_AMX_BF16_UNSET, OPTION_MASK_ISA2_XSAVE_UNSET):
+ 	New marcos.
+ 	(ix86_handle_option): Hanlde -mamx-tile, -mamx-int8, -mamx-bf16.
+ 	* common/config/i386/i386-cpuinfo.h (processor_types): Add
+ 	FEATURE_AMX_TILE, FEATURE_AMX_INT8, FEATURE_AMX_BF16.
+ 	* common/config/i386/cpuinfo.h (XSTATE_TILECFG,
+ 	XSTATE_TILEDATA, XCR_AMX_ENABLED_MASK): New macro.
+ 	(get_available_features): Enable AMX features only if
+ 	their states are suoorited by OSXSAVE.
+ 	* common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY
+ 	for amx-tile, amx-int8, amx-bf16.
+ 	* config.gcc: Add amxtileintrin.h, amxint8intrin.h,
+ 	amxbf16intrin.h to extra headers.
+ 	* config/i386/amxbf16intrin.h: New file.
+ 	* config/i386/amxint8intrin.h: Ditto.
+ 	* config/i386/amxtileintrin.h: Ditto.
+ 	* config/i386/cpuid.h (bit_AMX_BF16, bit_AMX_TILE, bit_AMX_INT8):
+ 	New macro.
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Define
+ 	__AMX_TILE__, __AMX_INT8__, AMX_BF16__.
+ 	* config/i386/i386-options.c (ix86_target_string): Add
+ 	-mamx-tile, -mamx-int8, -mamx-bf16.
+ 	(ix86_option_override_internal): Handle AMX-TILE,
+ 	AMX-INT8, AMX-BF16.
+ 	* config/i386/i386.h (TARGET_AMX_TILE, TARGET_AMX_TILE_P,
+ 	TARGET_AMX_INT8, TARGET_AMX_INT8_P, TARGET_AMX_BF16_P,
+ 	PTA_AMX_TILE, PTA_AMX_INT8, PTA_AMX_BF16): New macros.
+ 	* config/i386/i386.opt: Add -mamx-tile, -mamx-int8, -mamx-bf16.
+ 	* config/i386/immintrin.h: Include amxtileintrin.h,
+ 	amxint8intrin.h, amxbf16intrin.h.
+ 	* doc/invoke.texi: Document -mamx-tile, -mamx-int8, -mamx-bf16.
+ 	* doc/extend.texi: Document amx-tile, amx-int8, amx-bf16.
+ 	* doc/sourcebuild.texi ((Effective-Target Keywords, Other
+ 	hardware attributes): Document amx_int8, amx_tile, amx_bf16.
+ 
+ 2020-09-28  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.c
+ 	(aarch64_general_expand_builtin): Do not alter value on a
+ 	force_reg returned rtx.
+ 
+ 2020-09-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree-eh.c (lower_try_finally_dup_block): Revert latest change.
+ 
+ 2020-09-27  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (modref_summary::useful_p): Fix testing of stores.
+ 
+ 2020-09-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/97073
+ 	* optabs.c (expand_binop, expand_absneg_bit, expand_unop,
+ 	expand_copysign_bit): Check reg_overlap_mentioned_p between target
+ 	and operand(s) and if it returns true, force a pseudo as target.
+ 
+ 2020-09-27  Xionghu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	* gimple-isel.cc (gimple_expand_vec_set_expr): New function.
+ 	(gimple_expand_vec_cond_exprs): Rename to ...
+ 	(gimple_expand_vec_exprs): ... this and call
+ 	gimple_expand_vec_set_expr.
+ 	* internal-fn.c (vec_set_direct): New define.
+ 	(expand_vec_set_optab_fn): New function.
+ 	(direct_vec_set_optab_supported_p): New define.
+ 	* internal-fn.def (VEC_SET): New DEF_INTERNAL_OPTAB_FN.
+ 	* optabs.c (can_vec_set_var_idx_p): New function.
+ 	* optabs.h (can_vec_set_var_idx_p): New declaration.
+ 
+ 2020-09-26  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (analyze_stmt): Do not skip clobbers in early pass.
+ 	* ipa-pure-const.c (analyze_stmt): Update comment.
+ 
+ 2020-09-26  David Edelsohn  <dje.gcc@gmail.com>
+ 	    Clement Chigot  <clement.chigot@atos.com>
+ 
+ 	* collect2.c (visibility_flag): New.
+ 	(main): Detect -fvisibility.
+ 	(write_c_file_stat): Push and pop default visibility.
+ 
+ 2020-09-26  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline-transform.c: Include ipa-modref-tree.h and ipa-modref.h.
+ 	(inline_call): Call ipa_merge_modref_summary_after_inlining.
+ 	* ipa-inline.c (ipa_inline): Do not free summaries.
+ 	* ipa-modref.c (dump_records): Fix formating.
+ 	(merge_call_side_effects): Break out from ...
+ 	(analyze_call): ... here; record recursive calls.
+ 	(analyze_stmt): Add new parameter RECURSIVE_CALLS.
+ 	(analyze_function): Do iterative dataflow on recursive calls.
+ 	(compute_parm_map): New function.
+ 	(ipa_merge_modref_summary_after_inlining): New function.
+ 	(collapse_loads): New function.
+ 	(modref_propagate_in_scc): Break out from ...
+ 	(pass_ipa_modref::execute): ... here; Do iterative dataflow.
+ 	* ipa-modref.h (ipa_merge_modref_summary_after_inlining): Declare.
+ 
+ 2020-09-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-expand.c (expand_omp_simd): Help vectorizer for the collapse == 1
+ 	and non-composite collapse > 1 case with non-constant innermost loop
+ 	step by precomputing number of iterations before loop and using an
+ 	alternate IV from 0 to number of iterations - 1 with step of 1.
+ 
+ 2020-09-26  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-fnsummary.c (dump_ipa_call_summary): Dump
+ 	points_to_local_or_readonly_memory flag.
+ 	(analyze_function_body): Compute points_to_local_or_readonly_memory
+ 	flag.
+ 	(remap_edge_change_prob): Rename to ...
+ 	(remap_edge_params): ... this one; update
+ 	points_to_local_or_readonly_memory.
+ 	(remap_edge_summaries): Update.
+ 	(read_ipa_call_summary): Stream the new flag.
+ 	(write_ipa_call_summary): Likewise.
+ 	* ipa-predicate.h (struct inline_param_summary): Add
+ 	points_to_local_or_readonly_memory.
+ 	(inline_param_summary::equal_to): Update.
+ 	(inline_param_summary::useless_p): Update.
+ 
+ 2020-09-26  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-modref-tree.h (modref_ref_node::insert_access): Track if something
+ 	changed.
+ 	(modref_base_node::insert_ref): Likewise (and add a new optional
+ 	argument)
+ 	(modref_tree::insert): Likewise.
+ 	(modref_tree::merge): Rewrite
+ 
+ 2020-09-25  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* doc/invoke.texi: Add -fno-ipa-modref to flags disabled by
+ 	-flive-patching.
+ 	* opts.c (control_options_for_live_patching): Disable ipa-modref.
+ 
+ 2020-09-25  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-modref.c (analyze_stmt): Fix return value for gimple_clobber.
+ 
+ 2020-09-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64-option-extensions.def (rng): Add
+ 	cpuinfo string.
+ 
+ 2020-09-25  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (neoverse-v1): Add FP16.
+ 
+ 2020-09-25  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/64636
+ 	* value-prof.c (stream_out_histogram_value): Allow negative
+ 	values for HIST_TYPE_IOR.
+ 
+ 2020-09-25  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.c (nvptx_assemble_integer, nvptx_print_operand):
+ 	Use gcc_fallthrough ().
+ 
+ 2020-09-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/96814
+ 	* expr.c (store_constructor): Handle VECTOR_BOOLEAN_TYPE_P
+ 	CTORs correctly.
+ 
+ 2020-09-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/97207
+ 	* vec.h (auto_vec<T>::operator=(auto_vec<T>&&)): Implement.
+ 
+ 2020-09-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/arm/arm-protos.h (arm_mve_mode_and_operands_type_check):
+ 	Delete.
+ 	* config/arm/arm.c (arm_coproc_mem_operand_wb): Use a scale factor
+ 	of 2 rather than 4 for 16-bit modes.
+ 	(arm_mve_mode_and_operands_type_check): Delete.
+ 	* config/arm/constraints.md (Uj): Allow writeback for Neon,
+ 	but continue to disallow it for MVE.
+ 	* config/arm/arm.md (*arm32_mov<HFBF:mode>): Add !TARGET_HAVE_MVE.
+ 	* config/arm/vfp.md (*mov_load_vfp_hf16, *mov_store_vfp_hf16): Fold
+ 	back into...
+ 	(*mov<mode>_vfp_<mode>16): ...here but use Uj for the FPR memory
+ 	constraints.  Use for base MVE too.
+ 
+ 2020-09-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97199
+ 	* tree-if-conv.c (combine_blocks): Remove edges only
+ 	after looking at virtual PHI args.
+ 
+ 2020-09-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-low.c (scan_omp_1_stmt): Don't call scan_omp_simd for
+ 	collapse > 1 loops as simt doesn't support collapsed loops yet.
+ 	* omp-expand.c (expand_omp_for_init_counts, expand_omp_for_init_vars):
+ 	Small tweaks to function comment.
+ 	(expand_omp_simd): Rewritten collapse > 1 support to only attempt
+ 	to vectorize the innermost loop and emit set of outer loops around it.
+ 	For non-composite simd with collapse > 1 without broken loop don't
+ 	even try to compute number of iterations first.  Add support for
+ 	non-rectangular simd loops.
+ 	(expand_omp_for): Don't sorry_at on non-rectangular simd loops.
+ 
+ 2020-09-25  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cgraph.c (cgraph_edge::debug): New.
+ 	* cgraph.h (cgraph_edge::debug): New.
+ 
+ 2020-09-25  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cgraph.c (cgraph_node::dump): Always print space at the end
+ 	of a message.  Remove one extra space.
+ 
+ 2020-09-24  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (neoverse-n2): New.
+ 	* config/arm/arm-tables.opt: Regenerate.
+ 	* config/arm/arm-tune.md: Regenerate.
+ 	* doc/invoke.texi: Document support for Neoverse N2.
+ 
+ 2020-09-24  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def: Add Neoverse N2.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* doc/invoke.texi: Document AArch64 support for Neoverse N2.
+ 
+ 2020-09-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	* vec.h (auto_vec<T, 0>::auto_vec (auto_vec &&)): New move CTOR.
+ 	(auto_vec<T, 0>::operator=(auto_vec &&)): Delete.
+ 	* hash-table.h (hash_table::expand): Use std::move when expanding.
+ 	* cfgloop.h (get_loop_exit_edges): Return auto_vec<edge>.
+ 	* cfgloop.c (get_loop_exit_edges): Adjust.
+ 	* cfgloopmanip.c (fix_loop_placement): Likewise.
+ 	* ipa-fnsummary.c (analyze_function_body): Likewise.
+ 	* ira-build.c (create_loop_tree_nodes): Likewise.
+ 	(create_loop_tree_node_allocnos): Likewise.
+ 	(loop_with_complex_edge_p): Likewise.
+ 	* ira-color.c (ira_loop_edge_freq): Likewise.
+ 	* loop-unroll.c (analyze_insns_in_loop): Likewise.
+ 	* predict.c (predict_loops): Likewise.
+ 	* tree-predcom.c (last_always_executed_block): Likewise.
+ 	* tree-ssa-loop-ch.c (ch_base::copy_headers): Likewise.
+ 	* tree-ssa-loop-im.c (store_motion_loop): Likewise.
+ 	* tree-ssa-loop-ivcanon.c (loop_edge_to_cancel): Likewise.
+ 	(canonicalize_loop_induction_variables): Likewise.
+ 	* tree-ssa-loop-manip.c (get_loops_exits): Likewise.
+ 	* tree-ssa-loop-niter.c (find_loop_niter): Likewise.
+ 	(finite_loop_p): Likewise.
+ 	(find_loop_niter_by_eval): Likewise.
+ 	(estimate_numbers_of_iterations): Likewise.
+ 	* tree-ssa-loop-prefetch.c (emit_mfence_after_loop): Likewise.
+ 	(may_use_storent_in_loop_p): Likewise.
+ 
+ 2020-09-24  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* doc/invoke.texi: Document -fipa-modref, ipa-modref-max-bases,
+ 	ipa-modref-max-refs, ipa-modref-max-accesses, ipa-modref-max-tests.
+ 	* ipa-modref-tree.c (test_insert_search_collapse): Update.
+ 	(test_merge): Update.
+ 	(gt_ggc_mx): New function.
+ 	* ipa-modref-tree.h (struct modref_access_node): New structure.
+ 	(struct modref_ref_node): Add every_access and accesses array.
+ 	(modref_ref_node::modref_ref_node): Update ctor.
+ 	(modref_ref_node::search): New member function.
+ 	(modref_ref_node::collapse): New member function.
+ 	(modref_ref_node::insert_access): New member function.
+ 	(modref_base_node::insert_ref): Do not collapse base if ref is 0.
+ 	(modref_base_node::collapse): Copllapse also refs.
+ 	(modref_tree): Add accesses.
+ 	(modref_tree::modref_tree): Initialize max_accesses.
+ 	(modref_tree::insert): Add access parameter.
+ 	(modref_tree::cleanup): New member function.
+ 	(modref_tree::merge): Add parm_map; merge accesses.
+ 	(modref_tree::copy_from): New member function.
+ 	(modref_tree::create_ggc): Add max_accesses.
+ 	* ipa-modref.c (dump_access): New function.
+ 	(dump_records): Dump accesses.
+ 	(dump_lto_records): Dump accesses.
+ 	(get_access): New function.
+ 	(record_access): Record access.
+ 	(record_access_lto): Record access.
+ 	(analyze_call): Compute parm_map.
+ 	(analyze_function): Update construction of modref records.
+ 	(modref_summaries::duplicate): Likewise; use copy_from.
+ 	(write_modref_records): Stream accesses.
+ 	(read_modref_records): Sream accesses.
+ 	(pass_ipa_modref::execute): Update call of merge.
+ 	* params.opt (-param=modref-max-accesses): New.
+ 	* tree-ssa-alias.c (alias_stats): Add modref_baseptr_tests.
+ 	(dump_alias_stats): Update.
+ 	(base_may_alias_with_dereference_p): New function.
+ 	(modref_may_conflict): Check accesses.
+ 	(ref_maybe_used_by_call_p_1): Update call to modref_may_conflict.
+ 	(call_may_clobber_ref_p_1): Update call to modref_may_conflict.
+ 
+ 2020-09-24  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/arm/arm.md (*stack_protect_combined_set_insn): For non-PIC,
+ 	load the address of the canary rather than the address of the
+ 	constant pool entry that points to it.
+ 	(*stack_protect_combined_test_insn): Likewise.
+ 
+ 2020-09-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97085
+ 	* match.pd (mask ? { false,..} : { true, ..} -> ~mask): New.
+ 
+ 2020-09-24  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-modref-tree.h (modref_base::collapse): Release memory.
+ 	(modref_tree::create_ggc): New member function.
+ 	(modref_tree::colapse): Release memory.
+ 	(modref_tree::~modref_tree): New destructor.
+ 	* ipa-modref.c (modref_summaries::create_ggc): New function.
+ 	(analyze_function): Use create_ggc.
+ 	(modref_summaries::duplicate): Likewise.
+ 	(read_modref_records): Likewise.
+ 	(modref_read): Likewise.
+ 
+ 2020-09-24  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_rtx_costs): Pass mode to
+ 	reg_or_add_cint_operand and reg_or_sub_cint_operand.
+ 
+ 2020-09-24  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR target/93012
+ 	* config/rs6000/rs6000.c (num_insns_constant_gpr): Count rldimi
+ 	constants correctly.
+ 
+ 2020-09-24  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros):
+ 	Conditionally define __PCREL__.
+ 
+ 2020-09-24  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR target/97107
+ 	* config/rs6000/rs6000-internal.h (struct rs6000_stack): Improve
+ 	calls_p comment.
+ 	* config/rs6000/rs6000-logue.c (rs6000_stack_info): Likewise.
+ 	(rs6000_expand_split_stack_prologue): Emit the prologue for
+ 	functions that make a sibling call.
+ 
+ 2020-09-24  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/analyzer.texi (Analyzer Paths): Add note about
+ 	-fno-analyzer-feasibility.
+ 	* doc/invoke.texi (Static Analyzer Options): Add
+ 	-fno-analyzer-feasibility.
+ 
+ 2020-09-24  Paul A. Clarke  <pc@us.ibm.com>
+ 
+ 	* doc/extend.texi: Add 'd' for doubleword variant of
+ 	vector insert instruction.
+ 
+ 2020-09-23  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* gimple-array-bounds.cc (build_zero_elt_array_type): New function.
+ 	(array_bounds_checker::check_mem_ref): Call it.
+ 
+ 2020-09-23  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/97175
+ 	* builtins.c (maybe_warn_for_bound): Handle both DECLs and EXPRESSIONs
+ 	in pad->dst.ref, same is pad->src.ref.
+ 
+ 2020-09-23  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-fnsummary.c (refs_local_or_readonly_memory_p): New function.
+ 	(points_to_local_or_readonly_memory_p): New function.
+ 	* ipa-fnsummary.h (refs_local_or_readonly_memory_p): Declare.
+ 	(points_to_local_or_readonly_memory_p): Declare.
+ 	* ipa-modref.c (record_access_p): Use refs_local_or_readonly_memory_p.
+ 	* ipa-pure-const.c (check_op): Likewise.
+ 
+ 2020-09-23  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.md: Don't allow operand containing sum of
+ 	function ref and const.
+ 
+ 2020-09-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_salt_type): New enum.
+ 	(aarch64_stack_protect_canary_mem): Declare.
+ 	* config/aarch64/aarch64.md (UNSPEC_SALT_ADDR): New unspec.
+ 	(stack_protect_set): Forward to stack_protect_combined_set.
+ 	(stack_protect_combined_set): New pattern.  Use
+ 	aarch64_stack_protect_canary_mem.
+ 	(reg_stack_protect_address_<mode>): Add a salt operand.
+ 	(stack_protect_test): Forward to stack_protect_combined_test.
+ 	(stack_protect_combined_test): New pattern.  Use
+ 	aarch64_stack_protect_canary_mem.
+ 	* config/aarch64/aarch64.c (strip_salt): New function.
+ 	(strip_offset_and_salt): Likewise.
+ 	(tls_symbolic_operand_type): Use strip_offset_and_salt.
+ 	(aarch64_stack_protect_canary_mem): New function.
+ 	(aarch64_cannot_force_const_mem): Use strip_offset_and_salt.
+ 	(aarch64_classify_address): Likewise.
+ 	(aarch64_symbolic_address_p): Likewise.
+ 	(aarch64_print_operand): Likewise.
+ 	(aarch64_output_addr_const_extra): New function.
+ 	(aarch64_tls_symbol_p): Use strip_salt.
+ 	(aarch64_classify_symbol): Likewise.
+ 	(aarch64_legitimate_pic_operand_p): Use strip_offset_and_salt.
+ 	(aarch64_legitimate_constant_p): Likewise.
+ 	(aarch64_mov_operand_p): Use strip_salt.
+ 	(TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Override.
+ 
+ 2020-09-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/71233
+ 	* config/aarch64/arm_neon.h (vreinterpretq_f64_p128,
+ 	vreinterpretq_p128_f64): Define.
+ 
+ 2020-09-23  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (neoverse-v1): New.
+ 	* config/arm/arm-tables.opt: Regenerate.
+ 	* config/arm/arm-tune.md: Regenerate.
+ 	* doc/invoke.texi: Document support for Neoverse V1.
+ 
+ 2020-09-23  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def: Add Neoverse V1.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* doc/invoke.texi: Document support for Neoverse V1.
+ 
+ 2020-09-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/96453
+ 	* gimple-isel.cc (gimple_expand_vec_cond_expr): Remove
+ 	LT_EXPR -> NE_EXPR verification and also apply it for
+ 	non-constant masks.
+ 
+ 2020-09-23  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-modref.c (modref_summary::lto_useful_p): New member function.
+ 	(modref_summary::useful_p): New member function.
+ 	(analyze_function): Drop useless summaries.
+ 	(modref_write): Skip useless summaries.
+ 	(pass_ipa_modref::execute): Drop useless summaries.
+ 	* ipa-modref.h (struct GTY): Declare useful_p and lto_useful_p.
+ 	* tree-ssa-alias.c (dump_alias_stats): Fix.
+ 	(modref_may_conflict): Fix stats.
+ 
+ 2020-09-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/96466
+ 	* internal-fn.c (expand_vect_cond_mask_optab_fn): Use
+ 	appropriate mode for force_reg.
+ 	* tree.c (build_truth_vector_type_for): Pass VOIDmode to
+ 	make_vector_type.
+ 
+ 2020-09-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vectorizer.h (determine_peel_for_niter): Delete in favor of...
+ 	(vect_determine_partial_vectors_and_peeling): ...this new function.
+ 	* tree-vect-loop-manip.c (vect_update_epilogue_niters): New function.
+ 	Reject using vector epilogue loops for single iterations.  Install
+ 	the constant number of epilogue loop iterations in the associated
+ 	loop_vinfo.  Rely on vect_determine_partial_vectors_and_peeling
+ 	to do the main part of the test.
+ 	(vect_do_peeling): Use vect_update_epilogue_niters to handle
+ 	epilogue loops with a known number of iterations.  Skip recomputing
+ 	the number of iterations later in that case.  Otherwise, use
+ 	vect_determine_partial_vectors_and_peeling to decide whether the
+ 	epilogue loop needs to use partial vectors or peeling.
+ 	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Set the
+ 	default can_use_partial_vectors_p to false if partial-vector-usage=0.
+ 	(determine_peel_for_niter): Remove in favor of...
+ 	(vect_determine_partial_vectors_and_peeling): ...this new function,
+ 	split out from...
+ 	(vect_analyze_loop_2): ...here.  Reflect the vect_verify_full_masking
+ 	and vect_verify_loop_lens results in CAN_USE_PARTIAL_VECTORS_P
+ 	rather than USING_PARTIAL_VECTORS_P.
+ 
+ 2020-09-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/71233
+ 	* config/aarch64/aarch64-simd-builtins.def (frintn): Use BUILTIN_VHSDF_HSDF
+ 	for modes.  Remove explicit hf instantiation.
+ 	* config/aarch64/arm_neon.h (vrndns_f32): Define.
+ 
+ 2020-09-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97173
+ 	* tree-vect-loop.c (vectorizable_live_operation): Extend
+ 	assert to also conver element conversions.
+ 
+ 2020-09-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/71233
+ 	* config/aarch64/arm_neon.h (vtrn1q_p64, vtrn2q_p64, vuzp1q_p64,
+ 	vuzp2q_p64, vzip1q_p64, vzip2q_p64): Define.
+ 
+ 2020-09-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/71233
+ 	* config/aarch64/arm_neon.h (vldrq_p128): Define.
+ 
+ 2020-09-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/71233
+ 	* config/aarch64/arm_neon.h (vstrq_p128): Define.
+ 
+ 2020-09-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97151
+ 	* tree-ssa-structalias.c (find_func_aliases_for_call):
+ 	DECL_IS_REPLACEABLE_OPERATOR_DELETE_P has no effect on
+ 	arguments.
+ 
+ 2020-09-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/97162
+ 	* alias.c (compare_base_decls): Use DECL_HARD_REGISTER
+ 	and guard with VAR_P.
+ 
+ 2020-09-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/97069
+ 	* profile.c (branch_prob): Line number must be at least 1.
+ 
+ 2020-09-23  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/97158
+ 	* config/nvptx/nvptx.c (nvptx_output_mov_insn): Handle move from
+ 	DF subreg to DF reg.
+ 
+ 2020-09-23  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in: Add $(ZLIBINC) to CFLAGS-analyzer/engine.o.
+ 
+ 2020-09-22  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref.c (analyze_stmt): Ignore gimple clobber.
+ 
+ 2020-09-22  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-modref-tree.c: Add namespace selftest.
+ 	(modref_tree_c_tests): Rename to ...
+ 	(ipa_modref_tree_c_tests): ... this.
+ 	* ipa-modref.c (pass_modref): Remove destructor.
+ 	(ipa_modref_c_finalize): New function.
+ 	* ipa-modref.h (ipa_modref_c_finalize): Declare.
+ 	* selftest-run-tests.c (selftest::run_tests): Call
+ 	ipa_modref_c_finalize.
+ 	* selftest.h (ipa_modref_tree_c_tests): Declare.
+ 	* toplev.c: Include ipa-modref-tree.h and ipa-modref.h
+ 	(toplev::finalize): Call ipa_modref_c_finalize.
+ 
+ 2020-09-22  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/analyzer.texi (Other Debugging Techniques): Mention
+ 	-fdump-analyzer-json.
+ 	* doc/invoke.texi (Static Analyzer Options): Add
+ 	-fdump-analyzer-json.
+ 
+ 2020-09-22  David Faust  <david.faust@oracle.com>
+ 
+ 	* config/bpf/bpf.md: Add defines for signed div and mod operators.
+ 
+ 2020-09-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/96979
+ 	* doc/invoke.texi: Document new param max-switch-clustering-attempts.
+ 	* params.opt: Add new parameter.
+ 	* tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
+ 	Limit number of attempts.
+ 	(bit_test_cluster::find_bit_tests): Likewise.
+ 
+ 2020-09-22  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	* config/s390/s390.md ("*cmp<mode>_ccs_0", "*cmp<mode>_ccz_0",
+ 	"*cmp<mode>_ccs_0_fastmath"): Basically change "*cmp<mode>_ccs_0" into
+ 	"*cmp<mode>_ccz_0" and for fast math add "*cmp<mode>_ccs_0_fastmath".
+ 
+ 2020-09-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/71233
+ 	* config/aarch64/arm_neon.h (vcls_u8, vcls_u16, vcls_u32,
+ 	vclsq_u8, vclsq_u16, vclsq_u32): Define.
+ 
+ 2020-09-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/71233
+ 	* config/aarch64/arm_neon.h (vceqq_p64, vceqz_p64, vceqzq_p64): Define.
+ 
+ 2020-09-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/71233
+ 	* config/aarch64/arm_neon.h (vadd_p8, vadd_p16, vadd_p64, vaddq_p8,
+ 	vaddq_p16, vaddq_p64, vaddq_p128): Define.
+ 
+ 2020-09-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* params.opt (--param=modref-max-tests=): Fix typo in help text:
+ 	perofmed -> performed.
+ 	* common.opt: Fix typo: incrmeental -> incremental.
+ 	* ipa-modref.c: Fix typos: recroding -> recording, becaue -> because,
+ 	analsis -> analysis.
+ 	(class modref_summaries): Fix typo: betweehn -> between.
+ 	(analyze_call): Fix typo: calle -> callee.
+ 	(read_modref_records): Fix typo: expcted -> expected.
+ 	(pass_ipa_modref::execute): Fix typo: calle -> callee.
+ 
+ 2020-09-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* common.opt (-fipa-modref): Add dot at the end of option help.
+ 	* params.opt (--param=modref-max-tests=): Likewise.
+ 
+ 2020-09-21  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* doc/invoke.texi: Document -Wctad-maybe-unsupported.
+ 
+ 2020-09-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97139
+ 	* tree-vect-slp.c (vect_bb_slp_mark_live_stmts): Only mark the
+ 	pattern root, track visited vectorized stmts.
+ 
+ 2020-09-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* configure.ac: Use mallinfo mallinfo2 as first operand of
+ 	gcc_AC_CHECK_DECLS rather than [mallinfo, mallinfo2].
+ 	* configure: Regenerated.
+ 	* config.in: Regenerated.
+ 
+ 2020-09-21  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.c
+ 	(aarch64_general_expand_builtin): Use expand machinery not to
+ 	alter the value of an rtx returned by force_reg.
+ 
+ 2020-09-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97135
+ 	* tree-ssa-loop-im.c (sm_seq_push_down): Do not ignore
+ 	self-dependences.
+ 
+ 2020-09-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/96915
+ 	* tree-switch-conversion.c (switch_conversion::expand): Accept
+ 	also integer constants.
+ 
+ 2020-09-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	* print-tree.c (print_node): Remove extra space.
+ 
+ 2020-09-21  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	PR target/96968
+ 	* config/aarch64/aarch64-builtins.c
+ 	(aarch64_expand_fpsr_fpcr_setter): Fix comment nit.
+ 	(aarch64_expand_fpsr_fpcr_getter): New function, expand these
+ 	getters using expand_insn machinery.
+ 	(aarch64_general_expand_builtin): Make use of.
+ 
+ 2020-09-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	* ggc-common.c (ggc_rlimit_bound): Use ONE_? macro.
+ 	(ggc_min_expand_heuristic): Likewise.
+ 	(ggc_min_heapsize_heuristic): Likewise.
+ 	* ggc-page.c (ggc_collect): Likewise.
+ 	* system.h (ONE_G): Likewise.
+ 
+ 2020-09-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	* ggc-common.c (ggc_prune_overhead_list): Use SIZE_AMOUNT.
+ 	* ggc-page.c (release_pages): Likewise.
+ 	(ggc_collect): Likewise.
+ 	(ggc_trim): Likewise.
+ 	(ggc_grow): Likewise.
+ 	* timevar.c (timer::print): Likewise.
+ 
+ 2020-09-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config.in: Regenerate.
+ 	* configure: Likewise.
+ 	* configure.ac: Detect for mallinfo2.
+ 	* ggc-common.c (defined): Use it.
+ 	* system.h: Handle also HAVE_MALLINFO2.
+ 
+ 2020-09-20  John David Anglin  < danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa-hpux11.h (LINK_GCC_C_SEQUENCE_SPEC): Delete.
+ 	* config/pa/pa64-hpux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
+ 	(ENDFILE_SPEC): Link with libgcc_stub.a and mill.a.
+ 	* config/pa/pa32-linux.h (ENDFILE_SPEC): Link with libgcc.a.
+ 
+ 2020-09-20  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-modref.c (dump_lto_records): Fix ICE.
+ 
+ 2020-09-20  David Cepelik  <d@dcepelik.cz>
+ 	    Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* Makefile.in: Add ipa-modref.c and ipa-modref-tree.c.
+ 	* alias.c: (reference_alias_ptr_type_1): Export.
+ 	* alias.h (reference_alias_ptr_type_1): Declare.
+ 	* common.opt (fipa-modref): New.
+ 	* gengtype.c (open_base_files): Add ipa-modref-tree.h and ipa-modref.h
+ 	* ipa-modref-tree.c: New file.
+ 	* ipa-modref-tree.h: New file.
+ 	* ipa-modref.c: New file.
+ 	* ipa-modref.h: New file.
+ 	* lto-section-in.c (lto_section_name): Add ipa_modref.
+ 	* lto-streamer.h (enum lto_section_type): Add LTO_section_ipa_modref.
+ 	* opts.c (default_options_table): Enable ipa-modref at -O1+.
+ 	* params.opt (-param=modref-max-bases, -param=modref-max-refs,
+ 	-param=modref-max-tests): New params.
+ 	* passes.def: Schedule pass_modref and pass_ipa_modref.
+ 	* timevar.def (TV_IPA_MODREF): New timevar.
+ 	(TV_TREE_MODREF): New timevar.
+ 	* tree-pass.h (make_pass_modref): Declare.
+ 	(make_pass_ipa_modref): Declare.
+ 	* tree-ssa-alias.c (dump_alias_stats): Include ipa-modref-tree.h
+ 	and ipa-modref.h
+ 	(alias_stats): Add modref_use_may_alias, modref_use_no_alias,
+ 	modref_clobber_may_alias, modref_clobber_no_alias, modref_tests.
+ 	(dump_alias_stats): Dump new stats.
+ 	(nonoverlapping_array_refs_p): Fix formating.
+ 	(modref_may_conflict): New function.
+ 	(ref_maybe_used_by_call_p_1): Use it.
+ 	(call_may_clobber_ref_p_1): Use it.
+ 	(call_may_clobber_ref_p): Update.
+ 	(stmt_may_clobber_ref_p_1): Update.
+ 	* tree-ssa-alias.h (call_may_clobber_ref_p_1): Update.
+ 
+ 2020-09-19  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/82608
+ 	PR middle-end/94195
+ 	PR c/50584
+ 	PR middle-end/84051
+ 	* gimple-array-bounds.cc (get_base_decl): New function.
+ 	(get_ref_size): New function.
+ 	(trailing_array): New function.
+ 	(array_bounds_checker::check_array_ref): Call them.  Handle arrays
+ 	declared in function parameters.
+ 	(array_bounds_checker::check_mem_ref):  Same.  Handle references to
+ 	dynamically allocated arrays.
+ 
+ 2020-09-19  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c/50584
+ 	* builtins.c (warn_for_access): Add argument.  Distinguish between
+ 	reads and writes.
+ 	(check_access): Add argument.  Distinguish between reads and writes.
+ 	(gimple_call_alloc_size): Set range even on failure.
+ 	(gimple_parm_array_size): New function.
+ 	(compute_objsize): Call it.
+ 	(check_memop_access): Pass check_access an additional argument.
+ 	(expand_builtin_memchr, expand_builtin_strcat): Same.
+ 	(expand_builtin_strcpy, expand_builtin_stpcpy_1): Same.
+ 	(expand_builtin_stpncpy, check_strncat_sizes): Same.
+ 	(expand_builtin_strncat, expand_builtin_strncpy): Same.
+ 	(expand_builtin_memcmp): Same.
+ 	* builtins.h (compute_objsize): Declare a new overload.
+ 	(gimple_parm_array_size): Declare.
+ 	(check_access): Add argument.
+ 	* calls.c (append_attrname): Simplify.
+ 	(maybe_warn_rdwr_sizes): Handle internal attribute access.
+ 	* tree-ssa-uninit.c (maybe_warn_pass_by_reference): Avoid adding
+ 	quotes.
+ 
+ 2020-09-19  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* tree-ssa-uninit.c (maybe_warn_pass_by_reference): Handle attribute
+ 	access internal representation of arrays.
+ 
+ 2020-09-19  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c/50584
+ 	* attribs.c (decl_attributes): Also pass decl along with type
+ 	attributes to handlers.
+ 	(init_attr_rdwr_indices): Change second argument to attribute chain.
+ 	Handle internal attribute representation in addition to external.
+ 	(get_parm_access): New function.
+ 	(attr_access::to_internal_string): Define new member function.
+ 	(attr_access::to_external_string): Define new member function.
+ 	(attr_access::vla_bounds): Define new member function.
+ 	* attribs.h (struct attr_access): Declare new members.
+ 	(attr_access::from_mode_char): Define new member function.
+ 	(get_parm_access): Declare new function.
+ 	* calls.c (initialize_argument_information): Pass function type
+ 	attributes to init_attr_rdwr_indices.
+ 	* doc/invoke.texi (-Warray-parameter, -Wvla-parameter): Document.
+ 	* tree-pretty-print.c (dump_generic_node): Correct handling of
+ 	qualifiers.
+ 	* tree-ssa-uninit.c (maybe_warn_pass_by_reference): Same.
+ 	* tree.h (access_mode): Add new enumerator.
+ 
+ 2020-09-19  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* doc/generic.texi (Basic Statements): Document SWITCH_EXPR here,
+ 	not SWITCH_STMT.
+ 	(Statements for C and C++): Rename node to reflect what
+ 	the introduction already says about sharing between C and C++
+ 	front ends.  Copy-edit and correct documentation for structured
+ 	loops and switch.
+ 
+ 2020-09-19  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/96861
+ 	* config/i386/x86-tune-costs.h (skylake_cost): increase rtx
+ 	cost of sse_to_integer from 2 to 6.
+ 
+ 2020-09-18  Sudi Das  <sudi.das@arm.com>
+ 	    Omar Tahir  <omar.tahir@arm.com>
+ 
+ 	* config/arm/thumb2.md (*thumb2_csneg): New.
+ 	(*thumb2_negscc): Don't match if TARGET_COND_ARITH.
+ 	* config/arm/arm.md (*if_neg_move): Don't match if TARGET_COND_ARITH.
+ 
+ 2020-09-18  Sudi Das  <sudi.das@arm.com>
+ 	    Omar Tahir  <omar.tahir@arm.com>
+ 
+ 	* config/arm/thumb2.md (*thumb2_csinc): New.
+ 	(*thumb2_cond_arith): Generate CINC where possible.
+ 
+ 2020-09-18  Sudi Das  <sudi.das@arm.com>
+ 	    Omar Tahir  <omar.tahir@arm.com>
+ 
+ 	* config/arm/arm.h (TARGET_COND_ARITH): New macro.
+ 	* config/arm/arm.c (arm_have_conditional_execution): Return false if
+ 	TARGET_COND_ARITH before reload.
+ 	* config/arm/predicates.md (arm_comparison_operation): Returns true if
+ 	comparing CC_REGNUM with constant zero.
+ 	* config/arm/thumb2.md (*thumb2_csinv): New.
+ 	(*thumb2_movcond): Don't match if TARGET_COND_ARITH.
+ 
+ 2020-09-18  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR middle-end/91957
+ 	* ira.c (ira_setup_eliminable_regset): Skip the special elimination
+ 	handling of the hard frame pointer if the hard frame pointer is fixed.
+ 
+ 2020-09-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97081
+ 	* tree-vect-patterns.c (vect_recog_rotate_pattern): Use the
+ 	precision of the shifted operand to determine the mask.
+ 
+ 2020-09-18  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.c (msp430_print_operand): Update comment.
+ 	Cast to long when printing values formatted as long.
+ 	Support 'd', 'e', 'f' and 'g' modifiers.
+ 	Extract operand value with a single operation for all modifiers.
+ 	* doc/extend.texi (msp430Operandmodifiers): New.
+ 
+ 2020-09-18  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.c (increment_stack): Mark insns which increment
+ 	the stack as frame_related.
+ 	(msp430_expand_prologue): Add comments.
+ 	(msp430_expand_epilogue): Mark insns which decrement
+ 	the stack as frame_related.
+ 	Add reg_note to stack pop insns describing position of register
+ 	variables on the stack.
+ 
+ 2020-09-18  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-tree.c (execute_omp_gcn): Delete.
+ 	(make_pass_omp_gcn): Delete.
+ 	* config/gcn/t-gcn-hsa (PASSES_EXTRA): Delete.
+ 	* config/gcn/gcn-passes.def: Removed.
+ 
+ 2020-09-18  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* cfgloop.h (nb_iter_bound): Reword comment describing is_exit.
+ 
+ 2020-09-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97095
+ 	* tree-vect-loop.c (vectorizable_live_operation): Get
+ 	the SLP vector type from the correct object.
+ 
+ 2020-09-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97089
+ 	* tree-ssa-sccvn.c (visit_nary_op): Do not replace unsigned
+ 	divisions.
+ 
+ 2020-09-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97098
+ 	* tree-vect-slp.c (vect_bb_slp_mark_live_stmts): Do not
+ 	recurse to children when all stmts were already visited.
+ 
+ 2020-09-17  Sergei Trofimovich  <siarheit@google.com>
+ 
+ 	* profile.c (sort_hist_values): Clarify hist format:
+ 	start with a value, not counter.
+ 
+ 2020-09-17  Yeting Kuo  <fakepaper56@gmail.com>
+ 
+ 	* config/riscv/riscv.h (CSW_MAX_OFFSET): Fix typo.
+ 
+ 2020-09-17  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c/80076
+ 	* gensupport.c (alter_attrs_for_subst_insn) <case SET_ATTR>:
+ 	Reduce indentation of misleadingly indented code fragment.
+ 	* lra-constraints.c (multi_block_pseudo_p): Likewise.
+ 	* sel-sched-ir.c (merge_fences): Likewise.
+ 
+ 2020-09-17  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* doc/invoke.texi (-Wuninitialized): Document -Wuninitialized for
+ 	allocated objects.
+ 	 (-Wmaybe-uninitialized): Same.
+ 
+ 2020-09-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-sccvn.c (visit_nary_op): Value-number multiplications
+ 	and divisions to negates of available negated forms.
+ 
+ 2020-09-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR middle-end/97078
+ 	* function.c (use_register_for_decl): Test cfun->tail_call_marked
+ 	for a parameter here instead of...
+ 	(assign_parm_setup_reg): ...here.
+ 
+ 2020-09-17  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op.cc (multi_precision_range_tests): Normalize symbolics when copying to a
+ 	multi-range.
+ 	* value-range.cc (irange::copy_legacy_range): Add test.
+ 
+ 2020-09-17  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* cgraph.c (cgraph_node::get_availability): Fix availability of
+ 	functions in other partitions
+ 	* varpool.c (varpool_node::get_availability): Likewise.
+ 
+ 2020-09-17  Jojo R  <jiejie_rong@c-sky.com>
+ 
+ 	* config/csky/csky.opt (msim): New.
+ 	* doc/invoke.texi (C-SKY Options): Document -msim.
+ 	* config/csky/csky-elf.h (LIB_SPEC): Add simulator runtime.
+ 
+ 2020-09-17  Sergei Trofimovich  <siarheit@google.com>
+ 
+ 	* doc/cppenv.texi: Use @code{} instead of @samp{@command{}}
+ 	around 'date %s'.
+ 
+ 2020-09-17  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* common/config/i386/i386-common.c
+ 	(OPTION_MASK_ISA_AVX_UNSET): Remove OPTION_MASK_ISA_XSAVE_UNSET.
+ 	(OPTION_MASK_ISA_XSAVE_UNSET): Add OPTION_MASK_ISA_AVX_UNSET.
+ 
+ 2020-09-16  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* config/rs6000/rs6000.c (have_compare_and_set_mask): Use
+ 	E_*mode in cases.
+ 
+ 2020-09-16  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* config/rs6000/predicates.md (current_file_function_operand):
+ 	Remove argument from rs6000_pcrel_p call.
+ 	* config/rs6000/rs6000-logue.c (rs6000_decl_ok_for_sibcall):
+ 	Likewise.
+ 	(rs6000_global_entry_point_prologue_needed_p): Likewise.
+ 	(rs6000_output_function_prologue): Likewise.
+ 	* config/rs6000/rs6000-protos.h (rs6000_function_pcrel_p): New
+ 	prototype.
+ 	(rs6000_pcrel_p): Remove argument.
+ 	* config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
+ 	argument from rs6000_pcrel_p call.
+ 	(rs6000_call_template_1): Likewise.
+ 	(rs6000_indirect_call_template_1): Likewise.
+ 	(rs6000_longcall_ref): Likewise.
+ 	(rs6000_call_aix): Likewise.
+ 	(rs6000_sibcall_aix): Likewise.
+ 	(rs6000_function_pcrel_p): Rename from rs6000_pcrel_p.
+ 	(rs6000_pcrel_p): Rewrite.
+ 	* config/rs6000/rs6000.md (*pltseq_plt_pcrel<mode>): Remove
+ 	argument from rs6000_pcrel_p call.
+ 	(*call_local<mode>): Likewise.
+ 	(*call_value_local<mode>): Likewise.
+ 	(*call_nonlocal_aix<mode>): Likewise.
+ 	(*call_value_nonlocal_aix<mode>): Likewise.
+ 	(*call_indirect_pcrel<mode>): Likewise.
+ 	(*call_value_indirect_pcrel<mode>): Likewise.
+ 
+ 2020-09-16  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR preprocessor/96935
+ 	* input.c (get_substring_ranges_for_loc): Return if start.column
+ 	is less than 1.
+ 
+ 2020-09-16  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/96295
+ 	* tree-ssa-uninit.c (maybe_warn_operand): Work harder to avoid
+ 	warning for objects of empty structs
+ 
+ 2020-09-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree-eh.c (lower_try_finally_dup_block): Backward propagate slocs
+ 	to stack restore builtin calls.
+ 	(cleanup_all_empty_eh): Do again a post-order traversal of the EH
+ 	region tree.
+ 
+ 2020-09-16  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* tree-vect-loop.c (vect_need_peeling_or_partial_vectors_p): New
+ 	function.
+ 	(vect_analyze_loop_2): Make use of it not to select partial
+ 	vectors if no peel is required.
+ 	(determine_peel_for_niter): Move out some logic into
+ 	'vect_need_peeling_or_partial_vectors_p'.
+ 
+ 2020-09-16  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/97032
+ 	* cfgexpand.c (asm_clobber_reg_kind): Set sp_is_clobbered_by_asm
+ 	to true if the stack pointer is clobbered by asm statement.
+ 	* emit-rtl.h (rtl_data): Add sp_is_clobbered_by_asm.
+ 	* config/i386/i386.c (ix86_get_drap_rtx): Set need_drap to true
+ 	if the stack pointer is clobbered by asm statement.
+ 
+ 2020-09-16  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 
+ 	* config/s390/vector.md(*vec_tf_to_v1tf): Use "f" instead of "v"
+ 	  for the source operand.
+ 
+ 2020-09-16  Jojo R  <jiejie_rong@c-sky.com>
+ 
+ 	* config.gcc (C-SKY): Set use_gcc_stdint=wrap for elf target.
+ 
+ 2020-09-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (_stmt_vec_info::num_slp_uses): Remove.
+ 	(STMT_VINFO_NUM_SLP_USES): Likewise.
+ 	(vect_free_slp_instance): Adjust.
+ 	(vect_update_shared_vectype): Declare.
+ 	* tree-vectorizer.c (vec_info::~vec_info): Adjust.
+ 	* tree-vect-loop.c (vect_analyze_loop_2): Likewise.
+ 	(vectorizable_live_operation): Use vector type from
+ 	SLP_TREE_REPRESENTATIVE.
+ 	(vect_transform_loop): Adjust.
+ 	* tree-vect-data-refs.c (vect_slp_analyze_node_alignment):
+ 	Set the shared vector type.
+ 	* tree-vect-slp.c (vect_free_slp_tree): Remove final_p
+ 	parameter, remove STMT_VINFO_NUM_SLP_USES updating.
+ 	(vect_free_slp_instance): Adjust.
+ 	(vect_create_new_slp_node): Remove STMT_VINFO_NUM_SLP_USES
+ 	updating.
+ 	(vect_update_shared_vectype): Always compare with the
+ 	present vector type, update if NULL.
+ 	(vect_build_slp_tree_1): Do not update the shared vector
+ 	type here.
+ 	(vect_build_slp_tree_2): Adjust.
+ 	(slp_copy_subtree): Likewise.
+ 	(vect_attempt_slp_rearrange_stmts): Likewise.
+ 	(vect_analyze_slp_instance): Likewise.
+ 	(vect_analyze_slp): Likewise.
+ 	(vect_slp_analyze_node_operations_1): Update the shared
+ 	vector type.
+ 	(vect_slp_analyze_operations): Adjust.
+ 	(vect_slp_analyze_bb_1): Likewise.
+ 
+ 2020-09-16  Jojo R  <jiejie_rong@c-sky.com>
+ 
+ 	* config/csky/t-csky-linux (CSKY_MULTILIB_OSDIRNAMES): Use mfloat-abi.
+ 	(MULTILIB_OPTIONS): Likewise.
+ 	* config/csky/t-csky-elf (MULTILIB_OPTIONS): Likewise.
+ 	(MULTILIB_EXCEPTIONS): Likewise.
+ 
+ 2020-09-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/arm/arm.c (arm_option_restore): Comment out opts argument
+ 	name to avoid unused parameter warnings.
+ 
+ 2020-09-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* optc-save-gen.awk: In cl_optimization_stream_out use
+ 	bp_pack_var_len_{int,unsigned} instead of bp_pack_value.  In
+ 	cl_optimization_stream_in use bp_unpack_var_len_{int,unsigned}
+ 	instead of bp_unpack_value.  Formatting fix.
+ 
+ 2020-09-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/97053
+ 	* gimple-ssa-store-merging.c (check_no_overlap): Add FIRST_ORDER,
+ 	START, FIRST_EARLIER and LAST_EARLIER arguments.  Return false if
+ 	any stores between FIRST_EARLIER inclusive and LAST_EARLIER exclusive
+ 	has order in between FIRST_ORDER and LAST_ORDER and overlaps the to
+ 	be merged store.
+ 	(imm_store_chain_info::try_coalesce_bswap): Add FIRST_EARLIER argument.
+ 	Adjust check_no_overlap caller.
+ 	(imm_store_chain_info::coalesce_immediate_stores): Add first_earlier
+ 	and last_earlier variables, adjust them during iterations.  Adjust
+ 	check_no_overlap callers, call check_no_overlap even when extending
+ 	overlapping stores by extra INTEGER_CST stores.
+ 
+ 2020-09-16  Jojo R  <jiejie_rong@c-sky.com>
+ 
+ 	* config/csky/csky-linux-elf.h (GLIBC_DYNAMIC_LINKER): Use mfloat-abi.
+ 
+ 2020-09-16  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/97019
+ 	* config/rs6000/rs6000-p8swap.c (find_alignment_op): Adjust to
+ 	support multiple defintions which are all AND operations with
+ 	the mask -16B.
+ 	(recombine_lvx_pattern): Adjust to handle multiple AND operations
+ 	from find_alignment_op.
+ 	(recombine_stvx_pattern): Likewise.
+ 
+ 2020-09-16  Jojo R  <jiejie_rong@c-sky.com>
+ 
+ 	* config/csky/csky.md (CSKY_NPARM_FREGS): New.
+ 	(call_value_internal_vs/d): New.
+ 	(untyped_call): New.
+ 	* config/csky/csky.h (TARGET_SINGLE_FPU): New.
+ 	(TARGET_DOUBLE_FPU): New.
+ 	(FUNCTION_VARG_REGNO_P): New.
+ 	(CSKY_VREG_MODE_P): New.
+ 	(FUNCTION_VARG_MODE_P): New.
+ 	(CUMULATIVE_ARGS): Add extra regs info.
+ 	(INIT_CUMULATIVE_ARGS): Use csky_init_cumulative_args.
+ 	(FUNCTION_ARG_REGNO_P): Use FUNCTION_VARG_REGNO_P.
+ 	* config/csky/csky-protos.h (csky_init_cumulative_args): Extern.
+ 	* config/csky/csky.c (csky_cpu_cpp_builtins): Support TARGET_HARD_FLOAT_ABI.
+ 	(csky_function_arg): Likewise.
+ 	(csky_num_arg_regs): Likewise.
+ 	(csky_function_arg_advance): Likewise.
+ 	(csky_function_value): Likewise.
+ 	(csky_libcall_value): Likewise.
+ 	(csky_function_value_regno_p): Likewise.
+ 	(csky_arg_partial_bytes): Likewise.
+ 	(csky_setup_incoming_varargs): Likewise.
+ 	(csky_init_cumulative_args): New.
+ 
+ 2020-09-16  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-call.c (altivec_init_builtins): Fix name
+ 	of __builtin_altivec_xst_len_r.
+ 
+ 2020-09-15  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 
+ 	* rtlanal.c (set_noop_p): Treat subregs of registers in
+ 	different modes conservatively.
+ 
+ 2020-09-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_get_and_check_slp_defs): Make swap
+ 	argument by-value and do not change it.
+ 	(vect_build_slp_tree_2): Adjust, set swap to NULL after last
+ 	use.
+ 
+ 2020-09-15  Feng Xue  <fxue@os.amperecomputing.com>
+ 
+ 	PR tree-optimization/94234
+ 	* match.pd (T)(A) +- (T)(B) -> (T)(A +- B): New simplification.
+ 
+ 2020-09-15  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/96475
+ 	* bb-reorder.c (duplicate_computed_gotos): If we did anything, run
+ 	cleanup_cfg.
+ 
+ 2020-09-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_build_slp_tree_2): Also consider
+ 	building an operand from scalars when building it did not
+ 	fail fatally but avoid messing with the upcall splitting
+ 	of groups.
+ 
+ 2020-09-15  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm.c (arm_options_perform_arch_sanity_checks): Do not
+ 	check +D32 for CMSE if -mfloat-abi=soft
+ 
+ 2020-09-15  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/96744
+ 	* config/i386/x86-tune-costs.h (struct processor_costs):
+ 	Increase mask <-> integer cost for non AVX512 target to avoid
+ 	spill gpr to mask. Also retune mask <-> integer and
+ 	mask_load/store for skylake_cost.
+ 
+ 2020-09-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/97028
+ 	* config/i386/sse.md (mul<mode>3<mask_name>_bcs,
+ 	<avx512>_div<mode>3<mask_name>_bcst): Use <avx512bcst> instead of
+ 	<<avx512bcst>>.
+ 
+ 2020-09-15  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR fortran/96668
+ 	* gimplify.c (gimplify_omp_for): Add 'bool openacc' argument;
+ 	update omp_finish_clause calls.
+ 	(gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses,
+ 	gimplify_expr, gimplify_omp_loop): Update omp_finish_clause
+ 	and/or gimplify_for calls.
+ 	* langhooks-def.h (lhd_omp_finish_clause): Add bool openacc arg.
+ 	* langhooks.c (lhd_omp_finish_clause): Likewise.
+ 	* langhooks.h (lhd_omp_finish_clause): Likewise.
+ 	* omp-low.c (scan_sharing_clauses): Keep GOMP_MAP_TO_PSET cause for
+ 	'declare target' vars.
+ 
+ 2020-09-15  Feng Xue  <fxue@os.amperecomputing.com>
+ 
+ 	PR tree-optimization/94234
+ 	* genmatch.c (dt_simplify::gen_1): Emit check on final simplification
+ 	result when "!" is specified on toplevel output expr.
+ 	* match.pd ((A * C) +- (B * C) -> (A +- B) * C): Allow folding on expr
+ 	with multi-use operands if final result is a simple gimple value.
+ 
+ 2020-09-14  Sergei Trofimovich  <siarheit@google.com>
+ 
+ 	* doc/invoke.texi: fix '-fprofile-reproducibility' option
+ 	spelling in manual.
+ 
+ 2020-09-14  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config/bpf/bpf.md ("nop"): Re-define as `ja 0'.
+ 
+ 2020-09-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* cgraphunit.c (cgraph_node::expand_thunk): Make sure to set
+ 	cfun->tail_call_marked when forcing a tail call.
+ 	* function.c (assign_parm_setup_reg): Always use a register to
+ 	load a parameter passed by reference if cfun->tail_call_marked.
+ 
+ 2020-09-14  Pat Haugen  <pthaugen@linux.ibm.com>
+ 
+ 	* config/rs6000/power10.md (power10-mffgpr, power10-mftgpr): Rename to
+ 	power10-mtvsr/power10-mfvsr.
+ 	* config/rs6000/power6.md (X2F_power6, power6-mftgpr, power6-mffgpr):
+ 	Remove.
+ 	* config/rs6000/power8.md (power8-mffgpr, power8-mftgpr): Rename to
+ 	power8-mtvsr/power8-mfvsr.
+ 	* config/rs6000/power9.md (power9-mffgpr, power9-mftgpr): Rename to
+ 	power9-mtvsr/power9-mfvsr.
+ 	* config/rs6000/rs6000.c (rs6000_adjust_cost): Remove Power6
+ 	TYPE_MFFGPR cases.
+ 	* config/rs6000/rs6000.md (mffgpr, mftgpr, zero_extendsi<mode>2,
+ 	extendsi<mode>2, @signbit<mode>2_dm, lfiwax, lfiwzx, *movsi_internal1,
+ 	movsi_from_sf, *movdi_from_sf_zero_ext, *mov<mode>_internal,
+ 	movsd_hardfloat, movsf_from_si, *mov<mode>_hardfloat64, p8_mtvsrwz,
+ 	p8_mtvsrd_df, p8_mtvsrd_sf, p8_mfvsrd_3_<mode>, *movdi_internal64,
+ 	unpack<mode>_dm): Rename mffgpr/mftgpr to mtvsr/mfvsr.
+ 	* config/rs6000/vsx.md (vsx_mov<mode>_64bit, vsx_extract_<mode>,
+ 	vsx_extract_si, *vsx_extract_<mode>_p8): Likewise.
+ 
+ 2020-09-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/arm/arm.opt (x_arm_arch_string, x_arm_cpu_string,
+ 	x_arm_tune_string): Remove TargetSave entries.
+ 	(march=, mcpu=, mtune=): Add Save keyword.
+ 	* config/arm/arm.c (arm_option_save): Remove.
+ 	(TARGET_OPTION_SAVE): Don't redefine.
+ 	(arm_option_restore): Don't restore x_arm_*_string here.
+ 
+ 2020-09-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* opt-read.awk: Also initialize extra_target_var_types array.
+ 	* opth-gen.awk: Emit explicit_mask arrays to struct cl_optimization
+ 	and cl_target_option.  Adjust cl_optimization_save,
+ 	cl_optimization_restore, cl_target_option_save and
+ 	cl_target_option_restore declarations.
+ 	* optc-save-gen.awk: Add opts_set argument to cl_optimization_save,
+ 	cl_optimization_restore, cl_target_option_save and
+ 	cl_target_option_restore functions and save or restore opts_set
+ 	next to the opts values into or from explicit_mask arrays.
+ 	In cl_target_option_eq and cl_optimization_option_eq compare
+ 	explicit_mask arrays, in cl_target_option_hash and cl_optimization_hash
+ 	hash them and in cl_target_option_stream_out,
+ 	cl_target_option_stream_in, cl_optimization_stream_out and
+ 	cl_optimization_stream_in stream them.
+ 	* tree.h (build_optimization_node, build_target_option_node): Add
+ 	opts_set argument.
+ 	* tree.c (build_optimization_node): Add opts_set argument, pass it
+ 	to cl_optimization_save.
+ 	(build_target_option_node): Add opts_set argument, pass it to
+ 	cl_target_option_save.
+ 	* function.c (invoke_set_current_function_hook): Adjust
+ 	cl_optimization_restore caller.
+ 	* ipa-inline-transform.c (inline_call): Adjust cl_optimization_restore
+ 	and build_optimization_node callers.
+ 	* target.def (TARGET_OPTION_SAVE, TARGET_OPTION_RESTORE): Add opts_set
+ 	argument.
+ 	* target-globals.c (save_target_globals_default_opts): Adjust
+ 	cl_optimization_restore callers.
+ 	* toplev.c (process_options): Adjust build_optimization_node and
+ 	cl_optimization_restore callers.
+ 	(target_reinit): Adjust cl_optimization_restore caller.
+ 	* tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers):
+ 	Adjust build_optimization_node and cl_optimization_restore callers.
+ 	* doc/tm.texi: Updated.
+ 	* config/aarch64/aarch64.c (aarch64_override_options): Adjust
+ 	build_target_option_node caller.
+ 	(aarch64_option_save, aarch64_option_restore): Add opts_set argument.
+ 	(aarch64_set_current_function): Adjust cl_target_option_restore
+ 	caller.
+ 	(aarch64_option_valid_attribute_p): Adjust cl_target_option_save,
+ 	cl_target_option_restore, cl_optimization_restore,
+ 	build_optimization_node and build_target_option_node callers.
+ 	* config/aarch64/aarch64-c.c (aarch64_pragma_target_parse): Adjust
+ 	cl_target_option_restore and build_target_option_node callers.
+ 	* config/arm/arm.c (arm_option_save, arm_option_restore): Add
+ 	opts_set argument.
+ 	(arm_option_override): Adjust cl_target_option_save,
+ 	build_optimization_node and build_target_option_node callers.
+ 	(arm_set_current_function): Adjust cl_target_option_restore caller.
+ 	(arm_valid_target_attribute_tree): Adjust build_target_option_node
+ 	caller.
+ 	(add_attribute): Formatting fix.
+ 	(arm_valid_target_attribute_p): Adjust cl_optimization_restore,
+ 	cl_target_option_restore, arm_valid_target_attribute_tree and
+ 	build_optimization_node callers.
+ 	* config/arm/arm-c.c (arm_pragma_target_parse): Adjust
+ 	cl_target_option_restore callers.
+ 	* config/csky/csky.c (csky_option_override): Adjust
+ 	build_target_option_node and cl_target_option_save callers.
+ 	* config/gcn/gcn.c (gcn_fixup_accel_lto_options): Adjust
+ 	build_optimization_node and cl_optimization_restore callers.
+ 	* config/i386/i386-builtins.c (get_builtin_code_for_version):
+ 	Adjust cl_target_option_save and cl_target_option_restore
+ 	callers.
+ 	* config/i386/i386-c.c (ix86_pragma_target_parse): Adjust
+ 	build_target_option_node and cl_target_option_restore callers.
+ 	* config/i386/i386-options.c (ix86_function_specific_save,
+ 	ix86_function_specific_restore): Add opts_set arguments.
+ 	(ix86_valid_target_attribute_tree): Adjust build_target_option_node
+ 	caller.
+ 	(ix86_valid_target_attribute_p): Adjust build_optimization_node,
+ 	cl_optimization_restore, cl_target_option_restore,
+ 	ix86_valid_target_attribute_tree and build_optimization_node callers.
+ 	(ix86_option_override_internal): Adjust build_target_option_node
+ 	caller.
+ 	(ix86_reset_previous_fndecl, ix86_set_current_function): Adjust
+ 	cl_target_option_restore callers.
+ 	* config/i386/i386-options.h (ix86_function_specific_save,
+ 	ix86_function_specific_restore): Add opts_set argument.
+ 	* config/nios2/nios2.c (nios2_option_override): Adjust
+ 	build_target_option_node caller.
+ 	(nios2_option_save, nios2_option_restore): Add opts_set argument.
+ 	(nios2_valid_target_attribute_tree): Adjust build_target_option_node
+ 	caller.
+ 	(nios2_valid_target_attribute_p): Adjust build_optimization_node,
+ 	cl_optimization_restore, cl_target_option_save and
+ 	cl_target_option_restore callers.
+ 	(nios2_set_current_function, nios2_pragma_target_parse): Adjust
+ 	cl_target_option_restore callers.
+ 	* config/pru/pru.c (pru_option_override): Adjust
+ 	build_target_option_node caller.
+ 	(pru_set_current_function): Adjust cl_target_option_restore
+ 	callers.
+ 	* config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust
+ 	cl_target_option_save caller.
+ 	(rs6000_option_override_internal): Adjust build_target_option_node
+ 	caller.
+ 	(rs6000_valid_attribute_p): Adjust build_optimization_node,
+ 	cl_optimization_restore, cl_target_option_save,
+ 	cl_target_option_restore and build_target_option_node callers.
+ 	(rs6000_pragma_target_parse): Adjust cl_target_option_restore and
+ 	build_target_option_node callers.
+ 	(rs6000_activate_target_options): Adjust cl_target_option_restore
+ 	callers.
+ 	(rs6000_function_specific_save, rs6000_function_specific_restore):
+ 	Add opts_set argument.
+ 	* config/s390/s390.c (s390_function_specific_restore): Likewise.
+ 	(s390_option_override_internal): Adjust s390_function_specific_restore
+ 	caller.
+ 	(s390_option_override, s390_valid_target_attribute_tree): Adjust
+ 	build_target_option_node caller.
+ 	(s390_valid_target_attribute_p): Adjust build_optimization_node,
+ 	cl_optimization_restore and cl_target_option_restore callers.
+ 	(s390_activate_target_options): Adjust cl_target_option_restore
+ 	caller.
+ 	* config/s390/s390-c.c (s390_cpu_cpp_builtins): Adjust
+ 	cl_target_option_save caller.
+ 	(s390_pragma_target_parse): Adjust build_target_option_node and
+ 	cl_target_option_restore callers.
+ 
+ 2020-09-13  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/pa/pa.c (hppa_rtx_costs) [ASHIFT, ASHIFTRT, LSHIFTRT]:
+ 	Provide accurate costs for DImode shifts of integer constants.
+ 
+ 2020-09-12  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.md (shrpsi4_1, shrpsi4_2): New define_insns split
+ 	out from previous shrpsi4 providing two commutitive variants using
+ 	plus_xor_ior_operator as a predicate.
+ 	(shrpdi4_1, shrpdi4_2, shrpdi_3, shrpdi_4): Likewise DImode versions
+ 	where _1 and _2 take register shifts, and _3 and _4 for integers.
+ 	(rotlsi3_internal): Name this anonymous instruction.
+ 	(rotrdi3): New DImode insn copied from rotrsi3.
+ 	(rotldi3): New DImode expander copied from rotlsi3.
+ 	(rotldi4_internal): New DImode insn copied from rotsi3_internal.
+ 
+ 2020-09-11  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_maybe_emit_maxc_minc): Rename
+ 	from rs6000_emit_p9_fp_minmax.  Change return type to bool.  Add
+ 	comments to document NaN/signed zero behavior.
+ 	(rs6000_maybe_emit_fp_cmove): Rename from rs6000_emit_p9_fp_cmove.
+ 	(have_compare_and_set_mask): New helper function.
+ 	(rs6000_emit_cmove): Update calls to new names and the new helper
+ 	function.
+ 
+ 2020-09-11  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* config/i386/sse.md (mov<mode>): Fix operand indices.
+ 
+ 2020-09-11  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/96903
+ 	* builtins.c (compute_objsize): Remove incorrect offset adjustment.
+ 	(compute_objsize): Adjust offset range here instead.
+ 
+ 2020-09-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97020
+ 	* tree-vect-slp.c (vect_slp_analyze_operations): Apply
+ 	SLP costs when doing loop vectorization.
+ 
+ 2020-09-11  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/96964
+ 	* config/nvptx/nvptx.md (define_expand "atomic_test_and_set"): New
+ 	expansion.
+ 
+ 2020-09-11  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn.c (gcn_hard_regno_mode_ok): Align TImode registers.
+ 	* config/gcn/gcn.md: Assert that TImode registers do not early clobber.
+ 
+ 2020-09-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (_slp_instance::location): New method.
+ 	(vect_schedule_slp): Adjust prototype.
+ 	* tree-vectorizer.c (vec_info::remove_stmt): Adjust
+ 	the BB region begin if we removed the stmt it points to.
+ 	* tree-vect-loop.c (vect_transform_loop): Adjust.
+ 	* tree-vect-slp.c (_slp_instance::location): Implement.
+ 	(vect_analyze_slp_instance): For BB vectorization set
+ 	vect_location to that of the instance.
+ 	(vect_slp_analyze_operations): Likewise.
+ 	(vect_bb_vectorization_profitable_p): Remove wrapper.
+ 	(vect_slp_analyze_bb_1): Remove cost check here.
+ 	(vect_slp_region): Cost check and code generate subgraphs separately,
+ 	report optimized locations and missed optimizations due to
+ 	profitability for each of them.
+ 	(vect_schedule_slp): Get the vector of SLP graph entries to
+ 	vectorize as argument.
+ 
+ 2020-09-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97013
+ 	* tree-vect-slp.c (vect_slp_analyze_bb_1): Remove duplicate dumping.
+ 
+ 2020-09-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_build_slp_tree_1): Check vector
+ 	types for all lanes are compatible.
+ 	(vect_analyze_slp_instance): Appropriately check for stores.
+ 	(vect_schedule_slp): Likewise.
+ 
+ 2020-09-11  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.c (nvptx_assemble_value): Fix undefined
+ 	behaviour.
+ 
+ 2020-09-11  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.c (nvptx_assemble_value): Handle negative
+ 	__int128.
+ 
+ 2020-09-11  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+ 	Change default.
+ 
+ 2020-09-10  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-protos.h (rs6000_emit_cmove): Change return
+ 	type to bool.
+ 	(rs6000_emit_int_cmove): Change return type to bool.
+ 	* config/rs6000/rs6000.c (rs6000_emit_cmove): Change return type
+ 	to bool.
+ 	(rs6000_emit_int_cmove): Change return type to bool.
+ 
+ 2020-09-10  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/97004
+ 	* config/nvptx/nvptx.c (nvptx_assemble_value): Handle shift by
+ 	number of bits in shift operand.
+ 
+ 2020-09-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* lto-streamer-out.c (collect_block_tree_leafs): Recurse on
+ 	root rather than BLOCK_SUBBLOCKS (root).
+ 
+ 2020-09-10  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def: Add Cortex-R82.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* doc/invoke.texi: Add entry for Cortex-R82.
+ 
+ 2020-09-10  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* common/config/aarch64/aarch64-common.c
+ 	(aarch64_get_extension_string_for_isa_flags): Don't force +crc for
+ 	Armv8-R.
+ 	* config/aarch64/aarch64-arches.def: Add entry for Armv8-R.
+ 	* config/aarch64/aarch64-c.c (aarch64_define_unconditional_macros): Set
+ 	__ARM_ARCH_PROFILE correctly for Armv8-R.
+ 	* config/aarch64/aarch64.h (AARCH64_FL_V8_R): New.
+ 	(AARCH64_FL_FOR_ARCH8_R): New.
+ 	(AARCH64_ISA_V8_R): New.
+ 	* doc/invoke.texi: Add Armv8-R to architecture table.
+ 
+ 2020-09-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/arm/arm.c (arm_override_options_after_change_1): Add opts_set
+ 	argument, test opts_set->x_str_align_functions rather than
+ 	opts->x_str_align_functions.
+ 	(arm_override_options_after_change, arm_option_override_internal,
+ 	arm_set_current_function): Adjust callers.
+ 
+ 2020-09-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/96939
+ 	* config/arm/arm.c (arm_override_options_after_change): Don't call
+ 	arm_configure_build_target here.
+ 	(arm_set_current_function): Call arm_override_options_after_change_1
+ 	at the end.
+ 
+ 2020-09-10  Pat Haugen  <pthaugen@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.md
+ 	(lfiwzx, floatunssi<mode>2_lfiwzx, p8_mtvsrwz, p8_mtvsrd_sf): Fix insn
+ 	type.
+ 	* config/rs6000/vsx.md
+ 	(vsx_concat_<mode>, vsx_splat_<mode>_reg, vsx_splat_v4sf): Likewise.
+ 
+ 2020-09-10  Jonathan Yong  <10walls@gmail.com>
+ 
+ 	* config.host: Adjust plugin name for Windows.
+ 
+ 2020-09-10  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR tree-optimization/97000
+ 	* tree-cfgcleanup.c (cleanup_call_ctrl_altering_flag): Don't clear
+ 	flag for IFN_UNIQUE.
+ 
+ 2020-09-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/93865
+ 	* lto-streamer.h (struct output_block): Add emit_pwd member.
+ 	* lto-streamer-out.c: Include toplev.h.
+ 	(clear_line_info): Set emit_pwd.
+ 	(lto_output_location_1): Encode the ob->current_file != xloc.file
+ 	bit directly into the location number.  If changing file, emit
+ 	additionally a bit whether pwd is emitted and emit it before the
+ 	first relative pathname since clear_line_info.
+ 	(output_function, output_constructor): Don't call clear_line_info
+ 	here.
+ 	* lto-streamer-in.c (struct string_pair_map): New type.
+ 	(struct string_pair_map_hasher): New type.
+ 	(string_pair_map_hasher::hash): New method.
+ 	(string_pair_map_hasher::equal): New method.
+ 	(path_name_pair_hash_table, string_pair_map_allocator): New variables.
+ 	(relative_path_prefix, canon_relative_path_prefix,
+ 	canon_relative_file_name): New functions.
+ 	(canon_file_name): Add relative_prefix argument, if non-NULL
+ 	and string is a relative path, return canon_relative_file_name.
+ 	(lto_location_cache::input_location_and_block): Decode file change
+ 	bit from the location number.  If changing file, unpack bit whether
+ 	pwd is streamed and stream in pwd.  Adjust canon_file_name caller.
+ 	(lto_free_file_name_hash): Delete path_name_pair_hash_table
+ 	and string_pair_map_allocator.
+ 
+ 2020-09-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96043
+ 	* tree-vectorizer.h (_slp_instance::cost_vec): New.
+ 	(_slp_instance::subgraph_entries): Likewise.
+ 	(BB_VINFO_TARGET_COST_DATA): Remove.
+ 	* tree-vect-slp.c (vect_free_slp_instance): Free
+ 	cost_vec and subgraph_entries.
+ 	(vect_analyze_slp_instance): Initialize them.
+ 	(vect_slp_analyze_operations): Defer passing costs to
+ 	the target, instead record them in the SLP graph entry.
+ 	(get_ultimate_leader): New helper for graph partitioning.
+ 	(vect_bb_partition_graph_r): Likewise.
+ 	(vect_bb_partition_graph): New function to partition the
+ 	SLP graph into independently costable parts.
+ 	(vect_bb_vectorization_profitable_p): Adjust to work on
+ 	a subgraph.
+ 	(vect_bb_vectorization_profitable_p): New wrapper,
+ 	discarding non-profitable vectorization of subgraphs.
+ 	(vect_slp_analyze_bb_1): Call vect_bb_partition_graph before
+ 	costing.
+ 
+ 2020-09-09  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/94355
+ 	* doc/invoke.texi: Document -Wanalyzer-mismatching-deallocation.
+ 
+ 2020-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/96475
+ 	* bb-reorder.c (maybe_duplicate_computed_goto): Remove single_pred_p
+ 	micro-optimization.
+ 
+ 2020-09-09  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Fix Wformat
+ 	warning.
+ 
+ 2020-09-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Do
+ 	nothing when the permutation doesn't permute.
+ 
+ 2020-09-09  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/96991
+ 	* config/nvptx/nvptx.c (write_fn_proto): Fix boolean type check.
+ 
+ 2020-09-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-stmts.c (vectorizable_comparison): Allow
+ 	STMT_VINFO_LIVE_P stmts.
+ 
+ 2020-09-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-stmts.c (vectorizable_condition): Allow
+ 	STMT_VINFO_LIVE_P stmts.
+ 
+ 2020-09-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96978
+ 	* tree-vect-stmts.c (vectorizable_condition): Do not
+ 	look at STMT_VINFO_LIVE_P for BB vectorization.
+ 	(vectorizable_comparison): Likewise.
+ 
+ 2020-09-09  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/96955
+ 	* config/i386/i386.md (get_thread_pointer<mode>): New
+ 	expander.
+ 
+ 2020-09-08  Julian Brown  <julian@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (scatter<mode>_insn_1offset_ds<exec_scatter>):
+ 	Add waitcnt.
+ 	* config/gcn/gcn.md (*mov<mode>_insn, *movti_insn): Add waitcnt to
+ 	ds_write alternatives.
+ 
+ 2020-09-08  Julian Brown  <julian@codesourcery.com>
+ 
+ 	* config/gcn/mkoffload.c (process_asm): Initialise regcount.  Update
+ 	scanning for SGPR/VGPR usage for HSACO v3.
+ 
+ 2020-09-08  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/96967
+ 	* tree-vrp.c (find_case_label_range): Cast label range to
+ 	type of switch operand.
+ 
+ 2020-09-08  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.c (msp430_file_end): Fix jumbled
+ 	HAVE_AS_MSPABI_ATTRIBUTE and HAVE_AS_GNU_ATTRIBUTE checks.
+ 	* configure: Regenerate.
+ 	* configure.ac: Use ".mspabi_attribute 4,2" to check for assembler
+ 	support for this object attribute directive.
+ 
+ 2020-09-08  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* common/config/msp430/msp430-common.c (msp430_handle_option): Remove
+ 	OPT_mcpu_ handling.
+ 	Set target_cpu value to new enum values when parsing certain -mmcu=
+ 	values.
+ 	* config/msp430/msp430-opts.h (enum msp430_cpu_types): New.
+ 	* config/msp430/msp430.c (msp430_option_override): Handle new
+ 	target_cpu enum values.
+ 	Set target_cpu using extracted value for given MCU when -mcpu=
+ 	option is not passed by the user.
+ 	* config/msp430/msp430.opt: Handle -mcpu= values using enums.
+ 
+ 2020-09-07  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/96796
+ 	* lra-constraints.c (in_class_p): Add a default-false
+ 	allow_all_reload_class_changes_p parameter.  Do not treat
+ 	reload moves specially when the parameter is true.
+ 	(get_reload_reg): Try to narrow the class of an existing OP_OUT
+ 	reload if we're reloading a reload pseudo in a reload instruction.
+ 
+ 2020-09-07  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* tree-vect-loop.c (vect_estimate_min_profitable_iters): Revert
+ 	dead-code removal introduced by 09fa6acd8d9 + add a comment to
+ 	clarify.
+ 
+ 2020-09-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* doc/rtl.texi (subreg): Fix documentation to state there is a known
+ 	number of undefined bits in regs and subregs of MODE_PARTIAL_INT modes.
+ 
+ 2020-09-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.c (msp430_option_override): Don't set the
+ 	ISA to 430 when the MCU is unrecognized.
+ 
+ 2020-09-07  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (darwin_libc_has_function): Report sincos
+ 	available from 10.9.
+ 
+ 2020-09-07  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (*adds_mul_imm_<mode>): Delete.
+ 	(*subs_mul_imm_<mode>): Delete.
+ 	(*adds_<optab><mode>_multp2): Delete.
+ 	(*subs_<optab><mode>_multp2): Delete.
+ 	(*add_mul_imm_<mode>): Delete.
+ 	(*add_<optab><ALLX:mode>_mult_<GPI:mode>): Delete.
+ 	(*add_<optab><SHORT:mode>_mult_si_uxtw): Delete.
+ 	(*add_<optab><mode>_multp2): Delete.
+ 	(*add_<optab>si_multp2_uxtw): Delete.
+ 	(*add_uxt<mode>_multp2): Delete.
+ 	(*add_uxtsi_multp2_uxtw): Delete.
+ 	(*sub_mul_imm_<mode>): Delete.
+ 	(*sub_mul_imm_si_uxtw): Delete.
+ 	(*sub_<optab><mode>_multp2): Delete.
+ 	(*sub_<optab>si_multp2_uxtw): Delete.
+ 	(*sub_uxt<mode>_multp2): Delete.
+ 	(*sub_uxtsi_multp2_uxtw): Delete.
+ 	(*neg_mul_imm_<mode>2): Delete.
+ 	(*neg_mul_imm_si2_uxtw): Delete.
+ 	* config/aarch64/predicates.md (aarch64_pwr_imm3): Delete.
+ 	(aarch64_pwr_2_si): Delete.
+ 	(aarch64_pwr_2_di): Delete.
+ 
+ 2020-09-07  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* config/aarch64/aarch64.md
+ 	(*adds_<optab><ALLX:mode>_<GPI:mode>): Ensure extended operand
+ 	agrees with width of extension specifier.
+ 	(*subs_<optab><ALLX:mode>_<GPI:mode>): Likewise.
+ 	(*adds_<optab><ALLX:mode>_shift_<GPI:mode>): Likewise.
+ 	(*subs_<optab><ALLX:mode>_shift_<GPI:mode>): Likewise.
+ 	(*add_<optab><ALLX:mode>_<GPI:mode>): Likewise.
+ 	(*add_<optab><ALLX:mode>_shft_<GPI:mode>): Likewise.
+ 	(*add_uxt<mode>_shift2): Likewise.
+ 	(*sub_<optab><ALLX:mode>_<GPI:mode>): Likewise.
+ 	(*sub_<optab><ALLX:mode>_shft_<GPI:mode>): Likewise.
+ 	(*sub_uxt<mode>_shift2): Likewise.
+ 	(*cmp_swp_<optab><ALLX:mode>_reg<GPI:mode>): Likewise.
+ 	(*cmp_swp_<optab><ALLX:mode>_shft_<GPI:mode>): Likewise.
+ 
+ 2020-09-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_analyze_slp_instance): Dump
+ 	stmts we start SLP analysis from, failure and splitting.
+ 	(vect_schedule_slp): Dump SLP graph entry and root stmt
+ 	we are about to emit code for.
+ 
+ 2020-09-07  Martin Storsjö  <martin@martin.st>
+ 
+ 	* dwarf2out.c (file_name_acquire): Make a strchr return value
+ 	pointer to const.
+ 
+ 2020-09-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/94235
+ 	* lto-streamer-out.c (output_cfg): Also stream goto_locus for edges.
+ 	Use bp_pack_var_len_unsigned instead of streamer_write_uhwi to stream
+ 	e->dest->index and e->flags.
+ 	(output_function): Call output_cfg before output_ssa_name, rather than
+ 	after streaming all bbs.
+ 	* lto-streamer-in.c (input_cfg): Stream in goto_locus for edges.
+ 	Use bp_unpack_var_len_unsigned instead of streamer_read_uhwi to stream
+ 	in dest_index and edge_flags.
+ 
+ 2020-09-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (vectorizable_live_operation): Adjust.
+ 	* tree-vect-loop.c (vectorizable_live_operation): Vectorize
+ 	live lanes out of basic-block vectorization nodes.
+ 	* tree-vect-slp.c (vect_bb_slp_mark_live_stmts): New function.
+ 	(vect_slp_analyze_operations): Analyze live lanes and their
+ 	vectorization possibility after the whole SLP graph is final.
+ 	(vect_bb_slp_scalar_cost): Adjust for vectorized live lanes.
+ 	* tree-vect-stmts.c (can_vectorize_live_stmts): Adjust.
+ 	(vect_transform_stmt): Call can_vectorize_live_stmts also for
+ 	basic-block vectorization.
+ 
+ 2020-09-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96698
+ 	PR tree-optimization/96920
+ 	* tree-vectorizer.h (loop_vec_info::reduc_latch_defs): Remove.
+ 	(loop_vec_info::reduc_latch_slp_defs): Likewise.
+ 	* tree-vect-stmts.c (vect_transform_stmt): Remove vectorized
+ 	cycle PHI latch code.
+ 	* tree-vect-loop.c (maybe_set_vectorized_backedge_value): New
+ 	helper to set vectorized cycle PHI latch values.
+ 	(vect_transform_loop): Walk over all PHIs again after
+ 	vectorizing them, calling maybe_set_vectorized_backedge_value.
+ 	Call maybe_set_vectorized_backedge_value for each vectorized
+ 	stmt.  Remove delayed update code.
+ 	* tree-vect-slp.c (vect_analyze_slp_instance): Initialize
+ 	SLP instance reduc_phis member.
+ 	(vect_schedule_slp): Set vectorized cycle PHI latch values.
+ 
+ 2020-09-04  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* tree-vect-loop.c (vect_estimate_min_profitable_iters): Remove
+ 	dead code as LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo) is
+ 	always verified.
+ 
+ 2020-09-04  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/96769
+ 	* config/arm/thumb1.md: Move movsi splitter for
+ 	arm_disable_literal_pool after the other movsi splitters.
+ 
+ 2020-09-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op.cc (range_operator::fold_range): Rename widest_irange
+ 	to int_range_max.
+ 	(operator_div::wi_fold): Same.
+ 	(operator_lshift::op1_range): Same.
+ 	(operator_rshift::op1_range): Same.
+ 	(operator_cast::fold_range): Same.
+ 	(operator_cast::op1_range): Same.
+ 	(operator_bitwise_and::remove_impossible_ranges): Same.
+ 	(operator_bitwise_and::op1_range): Same.
+ 	(operator_abs::op1_range): Same.
+ 	(range_cast): Same.
+ 	(widest_irange_tests): Same.
+ 	(range3_tests): Rename irange3 to int_range3.
+ 	(int_range_max_tests): Rename from widest_irange_tests.
+ 	Rename widest_irange to int_range_max.
+ 	(operator_tests): Rename widest_irange to int_range_max.
+ 	(range_tests): Same.
+ 	* tree-vrp.c (find_case_label_range): Same.
+ 	* value-range.cc (irange::irange_intersect): Same.
+ 	(irange::invert): Same.
+ 	* value-range.h: Same.
+ 
+ 2020-09-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96931
+ 	* tree-cfgcleanup.c (cleanup_call_ctrl_altering_flag): If
+ 	there's a fallthru edge and no abnormal edge the call is
+ 	no longer control-altering.
+ 	(cleanup_control_flow_bb): Pass down the BB to
+ 	cleanup_call_ctrl_altering_flag.
+ 
+ 2020-09-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* lto-streamer.h (stream_input_location_now): Remove declaration.
+ 	* lto-streamer-in.c (stream_input_location_now): Remove.
+ 	(input_eh_region, input_struct_function_base): Use
+ 	stream_input_location instead of stream_input_location_now.
+ 
+ 2020-09-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* lto-streamer.h (struct output_block): Add reset_locus member.
+ 	* lto-streamer-out.c (clear_line_info): Set reset_locus to true.
+ 	(lto_output_location_1): If reset_locus, clear it and ensure
+ 	current_{file,line,col} is different from xloc members.
+ 
+ 2020-09-04  David Faust  <david.faust@oracle.com>
+ 
+ 	* config/bpf/bpf.h (ASM_SPEC): Pass -mxbpf to gas, if specified.
+ 	* config/bpf/bpf.c (bpf_output_call): Support indirect calls in xBPF.
+ 
+ 2020-09-03  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/96820
+ 	* tree-sra.c (create_access): Disqualify candidates with accesses
+ 	beyond the end of the original aggregate.
+ 	(maybe_add_sra_candidate): Check that candidate type size fits
+ 	signed uhwi for the sake of consistency.
+ 
+ 2020-09-03  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-call.c (rs6000_init_builtin): Update V2DI_type_node
+ 	and unsigned_V2DI_type_node definitions.
+ 
+ 2020-09-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/96901
+ 	* tree.h (struct decl_tree_traits): New type.
+ 	(decl_tree_map): New typedef.
+ 
+ 2020-09-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR lto/94311
+ 	* gimple.h (gimple_location_ptr, gimple_phi_arg_location_ptr): New
+ 	functions.
+ 	* streamer-hooks.h (struct streamer_hooks): Add
+ 	output_location_and_block callback.  Fix up formatting for
+ 	output_location.
+ 	(stream_output_location_and_block): Define.
+ 	* lto-streamer.h (class lto_location_cache): Fix comment typo.  Add
+ 	current_block member.
+ 	(lto_location_cache::input_location_and_block): New method.
+ 	(lto_location_cache::lto_location_cache): Initialize current_block.
+ 	(lto_location_cache::cached_location): Add block member.
+ 	(struct output_block): Add current_block member.
+ 	(lto_output_location): Formatting fix.
+ 	(lto_output_location_and_block): Declare.
+ 	* lto-streamer.c (lto_streamer_hooks_init): Initialize
+ 	streamer_hooks.output_location_and_block.
+ 	* lto-streamer-in.c (lto_location_cache::cmp_loc): Also compare
+ 	block members.
+ 	(lto_location_cache::apply_location_cache): Handle blocks.
+ 	(lto_location_cache::accept_location_cache,
+ 	lto_location_cache::revert_location_cache): Fix up function comments.
+ 	(lto_location_cache::input_location_and_block): New method.
+ 	(lto_location_cache::input_location): Implement using
+ 	input_location_and_block.
+ 	(input_function): Invoke apply_location_cache after streaming in all
+ 	bbs.
+ 	* lto-streamer-out.c (clear_line_info): Set current_block.
+ 	(lto_output_location_1): New function, moved from lto_output_location,
+ 	added block handling.
+ 	(lto_output_location): Implement using lto_output_location_1.
+ 	(lto_output_location_and_block): New function.
+ 	* gimple-streamer-in.c (input_phi): Use input_location_and_block
+ 	to input and cache both location and block.
+ 	(input_gimple_stmt): Likewise.
+ 	* gimple-streamer-out.c (output_phi): Use
+ 	stream_output_location_and_block.
+ 	(output_gimple_stmt): Likewise.
+ 
+ 2020-09-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-generic.c (tree_vec_extract): Remove odd
+ 	special-casing of boolean vectors.
+ 	* fold-const.c (fold_ternary_loc): Handle boolean vector
+ 	type BIT_FIELD_REFs.
+ 
+ 2020-09-03  Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	PR target/87767
+ 	* config/i386/i386-features.c
+ 	(replace_constant_pool_with_broadcast): New function.
+ 	(constant_pool_broadcast): Ditto.
+ 	(class pass_constant_pool_broadcast): New pass.
+ 	(make_pass_constant_pool_broadcast): Ditto.
+ 	(remove_partial_avx_dependency): Call
+ 	replace_constant_pool_with_broadcast under TARGET_AVX512F, it
+ 	would save compile time when both pass rpad and cpb are
+ 	available.
+ 	(remove_partial_avx_dependency_gate): New function.
+ 	(class pass_remove_partial_avx_dependency::gate): Call
+ 	remove_partial_avx_dependency_gate.
+ 	* config/i386/i386-passes.def: Insert new pass after combine.
+ 	* config/i386/i386-protos.h
+ 	(make_pass_constant_pool_broadcast): Declare.
+ 	* config/i386/sse.md (*avx512dq_mul<mode>3<mask_name>_bcst):
+ 	New define_insn.
+ 	(*avx512f_mul<mode>3<mask_name>_bcst): Ditto.
+ 	* config/i386/avx512fintrin.h (_mm512_set1_ps,
+ 	_mm512_set1_pd,_mm512_set1_epi32, _mm512_set1_epi64): Adjusted.
+ 
+ 2020-09-02  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c++/60304
+ 	* ginclude/stdbool.h (bool, false, true): Never define for C++.
+ 
+ 2020-09-02  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* doc/invoke.texi (MSP430 options): Fix -mlarge description to
+ 	indicate size_t is a 20-bit type.
+ 
+ 2020-09-02  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/pa/pa.c (hppa_rtx_costs) [ASHIFT, ASHIFTRT, LSHIFTRT]:
+ 	Provide accurate costs for shifts of integer constants.
+ 
+ 2020-09-02  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config/bpf/bpf.c (bpf_asm_named_section): Delete.
+ 	(TARGET_ASM_NAMED_SECTION): Likewise.
+ 
+ 2020-09-02  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	* config.gcc: Use elfos.h in bpf-*-* targets.
+ 	* config/bpf/bpf.h (MAX_OFILE_ALIGNMENT): Remove definition.
+ 	(COMMON_ASM_OP): Likewise.
+ 	(INIT_SECTION_ASM_OP): Likewise.
+ 	(FINI_SECTION_ASM_OP): Likewise.
+ 	(ASM_OUTPUT_SKIP): Likewise.
+ 	(ASM_OUTPUT_ALIGNED_COMMON): Likewise.
+ 	(ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
+ 
+ 2020-09-01  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* builtins.c (compute_objsize):  Only replace the upper bound
+ 	of a POINTER_PLUS offset when it's less than the lower bound.
+ 
+ 2020-09-01  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/96808
+ 	* config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Do not
+ 	reuse accumulator memory reference for source and destination accesses.
+ 
+ 2020-09-01  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cfgrtl.c (rtl_create_basic_block): Use default value for
+ 	growth vector function.
+ 	* gimple.c (gimple_set_bb): Likewise.
+ 	* symbol-summary.h: Likewise.
+ 	* tree-cfg.c (init_empty_tree_cfg_for_function): Likewise.
+ 	(build_gimple_cfg): Likewise.
+ 	(create_bb): Likewise.
+ 	(move_block_to_fn): Likewise.
+ 
+ 2020-09-01  Martin Liska  <mliska@suse.cz>
+ 
+ 	* vec.h (vec_safe_grow): Change default of exact to false.
+ 	(vec_safe_grow_cleared): Likewise.
+ 
+ 2020-09-01  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR middle-end/90597
+ 	* targhooks.c (default_vector_alignment): Return at least the
+ 	GET_MODE_ALIGNMENT for the type's mode.
+ 
+ 2020-09-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR rtl-optimization/96812
+ 	* tree-ssa-address.c (copy_ref_info): Also copy dependence info.
+ 	* cfgrtl.h (duplicate_insn_chain): Adjust prototype.
+ 	* cfgrtl.c (duplicate_insn_chain): Remap dependence info
+ 	if requested.
+ 	(cfg_layout_duplicate_bb): Make sure we remap dependence info.
+ 	* modulo-sched.c (duplicate_insns_of_cycles): Remap dependence
+ 	info.
+ 	(generate_prolog_epilog): Adjust.
+ 	* config/c6x/c6x.c (hwloop_optimize): Remap dependence info.
+ 
+ 2020-09-01  Kewen Lin  <linkw@gcc.gnu.org>
+ 
+ 	* doc/sourcebuild.texi (has_arch_pwr5, has_arch_pwr6, has_arch_pwr7,
+ 	has_arch_pwr8, has_arch_pwr9): Document.
+ 
+ 2020-08-31  Carl Love  <cel@us.ibm.com>
+ 
+ 	PR target/85830
+ 	* config/rs6000/altivec.h (vec_popcntb, vec_popcnth, vec_popcntw,
+ 	vec_popcntd): Remove defines.
+ 
+ 2020-08-31  Marek Polacek  <polacek@redhat.com>
+ 	    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/93529
+ 	* tree.c (build_constructor_from_vec): New.
+ 	* tree.h (build_constructor_from_vec): Declare.
+ 
+ 2020-08-31  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/96818
+ 	* tree-vrp.c (find_case_label_range): Cast label range to
+ 	type of switch operand.
+ 
+ 2020-08-31  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/96551
+ 	* config/i386/sse.md (vec_unpacku_float_hi_v16si): For vector
+ 	compare to integer mask, don't use gen_rtx_LT, use
+ 	ix86_expand_mask_vec_cmp instead.
+ 	(vec_unpacku_float_hi_v16si): Ditto.
+ 
+ 2020-08-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-cfg.c (verify_gimple_switch): If the first non-default case
+ 	label has CASE_HIGH, verify it has the same type as CASE_LOW.
+ 
+ 2020-08-31  Feng Xue  <fxue@os.amperecomputing.com>
+ 
+ 	PR ipa/96806
+ 	* ipa-cp.c (decide_about_value): Use safe_add to avoid cost addition
+ 	overflow.
+ 
+ 2020-08-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/54201
+ 	* varasm.c: Include alloc-pool.h.
+ 	(output_constant_pool_contents): Emit desc->mark < 0 entries as
+ 	aliases.
+ 	(struct constant_descriptor_rtx_data): New type.
+ 	(constant_descriptor_rtx_data_cmp): New function.
+ 	(struct const_rtx_data_hasher): New type.
+ 	(const_rtx_data_hasher::hash, const_rtx_data_hasher::equal): New
+ 	methods.
+ 	(optimize_constant_pool): New function.
+ 	(output_shared_constant_pool): Call it if TARGET_SUPPORTS_ALIASES.
+ 
+ 2020-08-31  Kewen Lin  <linkw@gcc.gnu.org>
+ 
+ 	* doc/sourcebuild.texi (vect_len_load_store,
+ 	vect_partial_vectors_usage_1, vect_partial_vectors_usage_2,
+ 	vect_partial_vectors): Document.
+ 
+ 2020-08-30  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* builtins.c (access_ref::access_ref): Call get_size_range instead
+ 	of get_range.
+ 
+ 2020-08-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/i386/sse.md (ssse3_pshufbv8qi): Use gen_int_mode instead of
+ 	GEN_INT, and ix86_build_const_vector instead of gen_rtvec and
+ 	gen_rtx_CONT_VECTOR.
+ 
+ 2020-08-29  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtin.def (MASK_FOR_STORE): Remove.
+ 	* config/rs6000/rs6000-call.c (rs6000_expand_builtin): Remove
+ 	all logic for ALTIVEC_BUILTIN_MASK_FOR_STORE.
+ 
+ 2020-08-28  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* attribs.c (init_attr_rdwr_indices): Use global access_mode.
+ 	* attribs.h (struct attr_access): Same.
+ 	* builtins.c (fold_builtin_strlen): Add argument.
+ 	(compute_objsize): Declare.
+ 	(get_range): Declare.
+ 	(check_read_access): New function.
+ 	(access_ref::access_ref): Define ctor.
+ 	(warn_string_no_nul): Add arguments.  Handle -Wstrintop-overread.
+ 	(check_nul_terminated_array): Handle source strings of different
+ 	ranges of sizes.
+ 	(expand_builtin_strlen): Remove warning code, call check_read_access
+ 	instead.  Declare locals closer to their initialization.
+ 	(expand_builtin_strnlen): Same.
+ 	(maybe_warn_for_bound): New function.
+ 	(warn_for_access): Remove argument.  Handle -Wstrintop-overread.
+ 	(inform_access): Change argument type.
+ 	(get_size_range): New function.
+ 	(check_access): Remove unused arguments.  Add new arguments.  Handle
+ 	-Wstrintop-overread.  Move warning code to helpers and call them.
+ 	Call check_nul_terminated_array.
+ 	(check_memop_access): Remove unnecessary and provide additional
+ 	arguments in calls.
+ 	(expand_builtin_memchr): Call check_read_access.
+ 	(expand_builtin_strcat): Remove unnecessary and provide additional
+ 	arguments in calls.
+ 	(expand_builtin_strcpy): Same.
+ 	(expand_builtin_strcpy_args): Same.  Avoid testing no-warning bit.
+ 	(expand_builtin_stpcpy_1): Remove unnecessary and provide additional
+ 	arguments in calls.
+ 	(expand_builtin_stpncpy): Same.
+ 	(check_strncat_sizes): Same.
+ 	(expand_builtin_strncat): Remove unnecessary and provide additional
+ 	arguments in calls.  Adjust comments.
+ 	(expand_builtin_strncpy): Remove unnecessary and provide additional
+ 	arguments in calls.
+ 	(expand_builtin_memcmp): Remove warning code.  Call check_access.
+ 	(expand_builtin_strcmp): Call check_access instead of
+ 	check_nul_terminated_array.
+ 	(expand_builtin_strncmp): Handle -Wstrintop-overread.
+ 	(expand_builtin_fork_or_exec): Call check_access instead of
+ 	check_nul_terminated_array.
+ 	(expand_builtin): Same.
+ 	(fold_builtin_1): Pass additional argument.
+ 	(fold_builtin_n): Same.
+ 	(fold_builtin_strpbrk): Remove calls to check_nul_terminated_array.
+ 	(expand_builtin_memory_chk): Add comments.
+ 	(maybe_emit_chk_warning): Remove unnecessary and provide additional
+ 	arguments in calls.
+ 	(maybe_emit_sprintf_chk_warning): Same.  Adjust comments.
+ 	* builtins.h (warn_string_no_nul): Add arguments.
+ 	(struct access_ref): Add member and ctor argument.
+ 	(struct access_data): Add members and ctor.
+ 	(check_access): Adjust signature.
+ 	* calls.c (maybe_warn_nonstring_arg): Return an indication of
+ 	whether a warning was issued.  Issue -Wstrintop-overread instead
+ 	of -Wstringop-overflow.
+ 	(append_attrname): Adjust to naming changes.
+ 	(maybe_warn_rdwr_sizes): Same.  Remove unnecessary and provide
+ 	additional arguments in calls.
+ 	* calls.h (maybe_warn_nonstring_arg): Return bool.
+ 	* doc/invoke.texi (-Wstringop-overread): Document new option.
+ 	* gimple-fold.c (gimple_fold_builtin_strcpy): Provide an additional
+ 	argument in call.
+ 	(gimple_fold_builtin_stpcpy): Same.
+ 	* tree-ssa-uninit.c (maybe_warn_pass_by_reference): Adjust to naming
+ 	changes.
+ 	* tree.h (enum access_mode): New type.
+ 
+ 2020-08-28  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_call_aix): Remove test for r12.
+ 	(rs6000_sibcall_aix): Likewise.
+ 
+ 2020-08-28  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-tree.c (gcn_goacc_get_worker_red_decl): Add "true"
+ 	parameter to vec_safe_grow_cleared.
+ 
+ 2020-08-28  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* ggc-common.c (gt_pch_save): Add argument to a call.
+ 
+ 2020-08-28  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
+ 
+ 	PR target/96357
+ 	* config/aarch64/aarch64-sve.md
+ 	(cond_sub<mode>_relaxed_const): Updated and renamed from
+ 	cond_sub<mode>_any_const pattern.
+ 	(cond_sub<mode>_strict_const): New pattern.
+ 
+ 2020-08-28  Wei Wentao  <weiwt.fnst@cn.fujitsu.com>
+ 
+ 	* doc/rtl.texi: Fix typo.
+ 
+ 2020-08-28  Uros Bizjak    <ubizjak@gmail.com>
+ 
+ 	PR target/96744
+ 	* config/i386/i386-expand.c (split_double_mode): Also handle
+ 	E_P2HImode and E_P2QImode.
+ 	* config/i386/sse.md (MASK_DWI): New define_mode_iterator.
+ 	(mov<mode>): New expander for P2HI,P2QI.
+ 	(*mov<mode>_internal): New define_insn_and_split to split
+ 	movement of P2QI/P2HI to 2 movqi/movhi patterns after reload.
+ 
+ 2020-08-28  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* common/config/i386/i386-common.c (ix86_handle_option): Set
+ 	AVX512DQ when AVX512VP2INTERSECT exists.
+ 
+ 2020-08-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/65146
+ 	* config/i386/i386.c (iamcu_alignment): Don't decrease alignment
+ 	for TYPE_ATOMIC types.
+ 	(ix86_local_alignment): Likewise.
+ 	(ix86_minimum_alignment): Likewise.
+ 	(x86_field_alignment): Likewise, and emit a -Wpsabi diagnostic
+ 	for it.
+ 
+ 2020-08-27  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR target/96787
+ 	* config/rs6000/rs6000.c (rs6000_sibcall_aix): Support
+ 	indirect call for ELFv2.
+ 
+ 2020-08-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96522
+ 	* tree-ssa-address.c (copy_ref_info): Reset flow-sensitive
+ 	info of the copied points-to.  Transfer bigger alignment
+ 	via the access type.
+ 	* tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt):
+ 	Reset all flow-sensitive info.
+ 
+ 2020-08-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	* alias.c (init_alias_analysis): Set exact argument of a vector
+ 	growth function to true.
+ 	* calls.c (internal_arg_pointer_based_exp_scan): Likewise.
+ 	* cfgbuild.c (find_many_sub_basic_blocks): Likewise.
+ 	* cfgexpand.c (expand_asm_stmt): Likewise.
+ 	* cfgrtl.c (rtl_create_basic_block): Likewise.
+ 	* combine.c (combine_split_insns): Likewise.
+ 	(combine_instructions): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins.cc (function_expander::add_output_operand): Likewise.
+ 	(function_expander::add_input_operand): Likewise.
+ 	(function_expander::add_integer_operand): Likewise.
+ 	(function_expander::add_address_operand): Likewise.
+ 	(function_expander::add_fixed_operand): Likewise.
+ 	* df-core.c (df_worklist_dataflow_doublequeue): Likewise.
+ 	* dwarf2cfi.c (update_row_reg_save): Likewise.
+ 	* early-remat.c (early_remat::init_block_info): Likewise.
+ 	(early_remat::finalize_candidate_indices): Likewise.
+ 	* except.c (sjlj_build_landing_pads): Likewise.
+ 	* final.c (compute_alignments): Likewise.
+ 	(grow_label_align): Likewise.
+ 	* function.c (temp_slots_at_level): Likewise.
+ 	* fwprop.c (build_single_def_use_links): Likewise.
+ 	(update_uses): Likewise.
+ 	* gcc.c (insert_wrapper): Likewise.
+ 	* genautomata.c (create_state_ainsn_table): Likewise.
+ 	(add_vect): Likewise.
+ 	(output_dead_lock_vect): Likewise.
+ 	* genmatch.c (capture_info::capture_info): Likewise.
+ 	(parser::finish_match_operand): Likewise.
+ 	* genrecog.c (optimize_subroutine_group): Likewise.
+ 	(merge_pattern_info::merge_pattern_info): Likewise.
+ 	(merge_into_decision): Likewise.
+ 	(print_subroutine_start): Likewise.
+ 	(main): Likewise.
+ 	* gimple-loop-versioning.cc (loop_versioning::loop_versioning): Likewise.
+ 	* gimple.c (gimple_set_bb): Likewise.
+ 	* graphite-isl-ast-to-gimple.c (translate_isl_ast_node_user): Likewise.
+ 	* haifa-sched.c (sched_extend_luids): Likewise.
+ 	(extend_h_i_d): Likewise.
+ 	* insn-addr.h (insn_addresses_new): Likewise.
+ 	* ipa-cp.c (gather_context_independent_values): Likewise.
+ 	(find_more_contexts_for_caller_subset): Likewise.
+ 	* ipa-devirt.c (final_warning_record::grow_type_warnings): Likewise.
+ 	(ipa_odr_read_section): Likewise.
+ 	* ipa-fnsummary.c (evaluate_properties_for_edge): Likewise.
+ 	(ipa_fn_summary_t::duplicate): Likewise.
+ 	(analyze_function_body): Likewise.
+ 	(ipa_merge_fn_summary_after_inlining): Likewise.
+ 	(read_ipa_call_summary): Likewise.
+ 	* ipa-icf.c (sem_function::bb_dict_test): Likewise.
+ 	* ipa-prop.c (ipa_alloc_node_params): Likewise.
+ 	(parm_bb_aa_status_for_bb): Likewise.
+ 	(ipa_compute_jump_functions_for_edge): Likewise.
+ 	(ipa_analyze_node): Likewise.
+ 	(update_jump_functions_after_inlining): Likewise.
+ 	(ipa_read_edge_info): Likewise.
+ 	(read_ipcp_transformation_info): Likewise.
+ 	(ipcp_transform_function): Likewise.
+ 	* ipa-reference.c (ipa_reference_write_optimization_summary): Likewise.
+ 	* ipa-split.c (execute_split_functions): Likewise.
+ 	* ira.c (find_moveable_pseudos): Likewise.
+ 	* lower-subreg.c (decompose_multiword_subregs): Likewise.
+ 	* lto-streamer-in.c (input_eh_regions): Likewise.
+ 	(input_cfg): Likewise.
+ 	(input_struct_function_base): Likewise.
+ 	(input_function): Likewise.
+ 	* modulo-sched.c (set_node_sched_params): Likewise.
+ 	(extend_node_sched_params): Likewise.
+ 	(schedule_reg_moves): Likewise.
+ 	* omp-general.c (omp_construct_simd_compare): Likewise.
+ 	* passes.c (pass_manager::create_pass_tab): Likewise.
+ 	(enable_disable_pass): Likewise.
+ 	* predict.c (determine_unlikely_bbs): Likewise.
+ 	* profile.c (compute_branch_probabilities): Likewise.
+ 	* read-rtl-function.c (function_reader::parse_block): Likewise.
+ 	* read-rtl.c (rtx_reader::read_rtx_code): Likewise.
+ 	* reg-stack.c (stack_regs_mentioned): Likewise.
+ 	* regrename.c (regrename_init): Likewise.
+ 	* rtlanal.c (T>::add_single_to_queue): Likewise.
+ 	* sched-deps.c (init_deps_data_vector): Likewise.
+ 	* sel-sched-ir.c (sel_extend_global_bb_info): Likewise.
+ 	(extend_region_bb_info): Likewise.
+ 	(extend_insn_data): Likewise.
+ 	* symtab.c (symtab_node::create_reference): Likewise.
+ 	* tracer.c (tail_duplicate): Likewise.
+ 	* trans-mem.c (tm_region_init): Likewise.
+ 	(get_bb_regions_instrumented): Likewise.
+ 	* tree-cfg.c (init_empty_tree_cfg_for_function): Likewise.
+ 	(build_gimple_cfg): Likewise.
+ 	(create_bb): Likewise.
+ 	(move_block_to_fn): Likewise.
+ 	* tree-complex.c (tree_lower_complex): Likewise.
+ 	* tree-if-conv.c (predicate_rhs_code): Likewise.
+ 	* tree-inline.c (copy_bb): Likewise.
+ 	* tree-into-ssa.c (get_ssa_name_ann): Likewise.
+ 	(mark_phi_for_rewrite): Likewise.
+ 	* tree-object-size.c (compute_builtin_object_size): Likewise.
+ 	(init_object_sizes): Likewise.
+ 	* tree-predcom.c (initialize_root_vars_store_elim_1): Likewise.
+ 	(initialize_root_vars_store_elim_2): Likewise.
+ 	(prepare_initializers_chain_store_elim): Likewise.
+ 	* tree-ssa-address.c (addr_for_mem_ref): Likewise.
+ 	(multiplier_allowed_in_address_p): Likewise.
+ 	* tree-ssa-coalesce.c (ssa_conflicts_new): Likewise.
+ 	* tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
+ 	* tree-ssa-loop-ivopts.c (addr_offset_valid_p): Likewise.
+ 	(get_address_cost_ainc): Likewise.
+ 	* tree-ssa-loop-niter.c (discover_iteration_bound_by_body_walk): Likewise.
+ 	* tree-ssa-pre.c (add_to_value): Likewise.
+ 	(phi_translate_1): Likewise.
+ 	(do_pre_regular_insertion): Likewise.
+ 	(do_pre_partial_partial_insertion): Likewise.
+ 	(init_pre): Likewise.
+ 	* tree-ssa-propagate.c (ssa_prop_init): Likewise.
+ 	(update_call_from_tree): Likewise.
+ 	* tree-ssa-reassoc.c (optimize_range_tests_cmp_bitwise): Likewise.
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise.
+ 	(vn_reference_lookup_pieces): Likewise.
+ 	(eliminate_dom_walker::eliminate_push_avail): Likewise.
+ 	* tree-ssa-strlen.c (set_strinfo): Likewise.
+ 	(get_stridx_plus_constant): Likewise.
+ 	(zero_length_string): Likewise.
+ 	(find_equal_ptrs): Likewise.
+ 	(printf_strlen_execute): Likewise.
+ 	* tree-ssa-threadedge.c (set_ssa_name_value): Likewise.
+ 	* tree-ssanames.c (make_ssa_name_fn): Likewise.
+ 	* tree-streamer-in.c (streamer_read_tree_bitfields): Likewise.
+ 	* tree-vect-loop.c (vect_record_loop_mask): Likewise.
+ 	(vect_get_loop_mask): Likewise.
+ 	(vect_record_loop_len): Likewise.
+ 	(vect_get_loop_len): Likewise.
+ 	* tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Likewise.
+ 	* tree-vect-slp.c (vect_slp_convert_to_external): Likewise.
+ 	(vect_bb_slp_scalar_cost): Likewise.
+ 	(vect_bb_vectorization_profitable_p): Likewise.
+ 	(vectorizable_slp_permutation): Likewise.
+ 	* tree-vect-stmts.c (vectorizable_call): Likewise.
+ 	(vectorizable_simd_clone_call): Likewise.
+ 	(scan_store_can_perm_p): Likewise.
+ 	(vectorizable_store): Likewise.
+ 	* expr.c: Likewise.
+ 	* vec.c (test_safe_grow_cleared): Likewise.
+ 	* vec.h (vec_safe_grow): Likewise.
+ 	(vec_safe_grow_cleared): Likewise.
+ 	(vl_ptr>::safe_grow): Likewise.
+ 	(vl_ptr>::safe_grow_cleared): Likewise.
+ 	* config/c6x/c6x.c (insn_set_clock): Likewise.
+ 
+ 2020-08-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-pretty-print.c (dump_mem_ref): Handle TARGET_MEM_REFs.
+ 	(dump_generic_node): Use dump_mem_ref also for TARGET_MEM_REF.
+ 
+ 2020-08-27  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* lra-constraints.c (canonicalize_reload_addr): New.
+ 	(curr_insn_transform): Use canonicalize_reload_addr to ensure we
+ 	generate canonical RTL for an address reload.
+ 
+ 2020-08-27  Zhiheng Xie  <xiezhiheng@huawei.com>
+ 
+ 	* config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
+ 	for rounding intrinsics.
+ 
+ 2020-08-27  Zhiheng Xie  <xiezhiheng@huawei.com>
+ 
+ 	* config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
+ 	for min/max intrinsics.
+ 
+ 2020-08-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96579
+ 	* tree-ssa-reassoc.c (linearize_expr_tree): If we expand
+ 	rhs via special ops make sure to swap operands.
+ 
+ 2020-08-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96565
+ 	* tree-ssa-dse.c (dse_classify_store): Remove defs with
+ 	no uses from further processing.
+ 
+ 2020-08-26  Göran Uddeborg  <goeran@uddeborg.se>
+ 
+ 	PR gcov-profile/96285
+ 	* common.opt, doc/invoke.texi: Clarify wording of
+ 	-fprofile-exclude-files and adjust -fprofile-filter-files to
+ 	match.
+ 
+ 2020-08-26  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/96802
+ 	* config/i386/i386-options.c (ix86_valid_target_attribute_inner_p):
+ 	Reject target("no-general-regs-only").
+ 
+ 2020-08-26  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/constraints.md (K): Change unused constraint to
+ 	constraint to a const_int between 1 and 19.
+ 	(P): New constraint.
+ 	* config/msp430/msp430-protos.h (msp430x_logical_shift_right): Remove.
+ 	(msp430_expand_shift): New.
+ 	(msp430_output_asm_shift_insns): New.
+ 	* config/msp430/msp430.c (msp430_rtx_costs): Remove shift costs.
+ 	(CSH): Remove.
+ 	(msp430_expand_helper): Remove hard-coded generation of some inline
+ 	shift insns.
+ 	(use_helper_for_const_shift): New.
+ 	(msp430_expand_shift): New.
+ 	(msp430_output_asm_shift_insns): New.
+ 	(msp430_print_operand): Add new 'W' operand selector.
+ 	(msp430x_logical_shift_right): Remove.
+ 	* config/msp430/msp430.md (HPSI): New define_mode_iterator.
+ 	(HDI): Likewise.
+ 	(any_shift): New define_code_iterator.
+ 	(shift_insn): New define_code_attr.
+ 	Adjust unnamed insn patterns searched for by combine.
+ 	(ashlhi3): Remove.
+ 	(slli_1): Remove.
+ 	(430x_shift_left): Remove.
+ 	(slll_1): Remove.
+ 	(slll_2): Remove.
+ 	(ashlsi3): Remove.
+ 	(ashldi3): Remove.
+ 	(ashrhi3): Remove.
+ 	(srai_1): Remove.
+ 	(430x_arithmetic_shift_right): Remove.
+ 	(srap_1): Remove.
+ 	(srap_2): Remove.
+ 	(sral_1): Remove.
+ 	(sral_2): Remove.
+ 	(ashrsi3): Remove.
+ 	(ashrdi3): Remove.
+ 	(lshrhi3): Remove.
+ 	(srli_1): Remove.
+ 	(430x_logical_shift_right): Remove.
+ 	(srlp_1): Remove.
+ 	(srll_1): Remove.
+ 	(srll_2x): Remove.
+ 	(lshrsi3): Remove.
+ 	(lshrdi3): Remove.
+ 	(<shift_insn><mode>3): New define_expand.
+ 	(<shift_insn>hi3_430): New define_insn.
+ 	(<shift_insn>si3_const): Likewise.
+ 	(ashl<mode>3_430x): Likewise.
+ 	(ashr<mode>3_430x): Likewise.
+ 	(lshr<mode>3_430x): Likewise.
+ 	(*bitbranch<mode>4_z): Replace renamed predicate msp430_bitpos with
+ 	const_0_to_15_operand.
+ 	* config/msp430/msp430.opt: New option -mmax-inline-shift=.
+ 	* config/msp430/predicates.md (const_1_to_8_operand): New predicate.
+ 	(const_0_to_15_operand): Rename msp430_bitpos predicate.
+ 	(const_1_to_19_operand): New predicate.
+ 	* doc/invoke.texi: Document -mmax-inline-shift=.
+ 
+ 2020-08-26  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-ssa-dom.c (simplify_stmt_for_jump_threading): Abstract code out to...
+ 	* tree-vrp.c (find_case_label_range): ...here.  Rewrite for to use irange
+ 	API.
+ 	(simplify_stmt_for_jump_threading): Call find_case_label_range instead of
+ 	duplicating the code in simplify_stmt_for_jump_threading.
+ 	* tree-vrp.h (find_case_label_range): New prototype.
+ 
+ 2020-08-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96698
+ 	* tree-vectorizer.h (loop_vec_info::reduc_latch_defs): New.
+ 	(loop_vec_info::reduc_latch_slp_defs): Likewise.
+ 	* tree-vect-stmts.c (vect_transform_stmt): Only record
+ 	stmts to update PHI latches from, perform the update ...
+ 	* tree-vect-loop.c (vect_transform_loop): ... here after
+ 	vectorizing those PHIs.
+ 	(info_for_reduction): Properly handle non-reduction PHIs.
+ 
+ 2020-08-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cgraphunit.c (process_symver_attribute): Match only symver
+ 	TREE_PURPOSE.
+ 
+ 2020-08-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96783
+ 	* tree-vect-stmts.c (get_group_load_store_type): Use
+ 	VMAT_ELEMENTWISE for negative strides when we cannot
+ 	use VMAT_STRIDED_SLP.
+ 
+ 2020-08-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/invoke.texi: Document how are pie and pic options merged.
+ 
+ 2020-08-26  Zhiheng Xie  <xiezhiheng@huawei.com>
+ 
+ 	* config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
+ 	for add/sub arithmetic intrinsics.
+ 
+ 2020-08-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/96729
+ 	* dwarf2out.c (dwarf2out_next_real_insn): Adjust function comment.
+ 	(dwarf2out_var_location): Look for next_note only if next_real is
+ 	non-NULL, in that case look for the first non-deleted
+ 	NOTE_INSN_VAR_LOCATION between loc_note and next_real, if any.
+ 
+ 2020-08-26  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* config/tilepro/gen-mul-tables.cc (main): Define IN_TARGET_CODE to 1
+ 	in the target file.
+ 
+ 2020-08-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cgraphunit.c (process_symver_attribute): Allow multiple
+ 	symver attributes for one symbol.
+ 	* doc/extend.texi: Document the change.
+ 
+ 2020-08-25  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/95863
+ 	* config/i386/i386.h (CTZ_DEFINED_VALUE_AT_ZERO): Return 0/2.
+ 	(CLZ_DEFINED_VALUE_AT_ZERO): Likewise.
+ 
+ 2020-08-25  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR middle-end/87256
+ 	* config/pa/pa.c (hppa_rtx_costs_shadd_p): New helper function
+ 	to check for coefficients supported by shNadd and shladd,l.
+ 	(hppa_rtx_costs):  Rewrite to avoid using estimates based upon
+ 	FACTOR and enable recursing deeper into RTL expressions.
+ 
+ 2020-08-25  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/pa/pa.md (ashldi3): Additionally, on !TARGET_64BIT
+ 	generate a two instruction shd/zdep sequence when shifting
+ 	registers by suitable constants.
+ 	(shd_internal): New define_expand to provide gen_shd_internal.
+ 
+ 2020-08-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Rename
+ 	__ARM_FEATURE_SVE_VECTOR_OPERATIONS to
+ 	__ARM_FEATURE_SVE_VECTOR_OPERATORS.
+ 
+ 2020-08-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins.cc (add_sve_type_attribute):
+ 	Take the ACLE name of the type as a parameter and add it as fourth
+ 	argument to the "SVE type" attribute.
+ 	(register_builtin_types): Update call accordingly.
+ 	(register_tuple_type): Likewise.  Construct the name of the type
+ 	earlier in order to do this.
+ 	(get_arm_sve_vector_bits_attributes): New function.
+ 	(handle_arm_sve_vector_bits_attribute): Report a more sensible
+ 	error message if the attribute is applied to an SVE tuple type.
+ 	Don't allow the attribute to be applied to an existing fixed-length
+ 	SVE type.  Mangle the new type as __SVE_VLS<type, vector-bits>.
+ 	Add a dummy TYPE_DECL to the new type.
+ 
+ 2020-08-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins.cc (DEF_SVE_TYPE): Add a
+ 	leading "u" to each mangled name.
+ 
+ 2020-08-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96548
+ 	PR tree-optimization/96760
+ 	* tree-ssa-loop-im.c (tree_ssa_lim): Recompute RPO after
+ 	store-motion.
+ 
+ 2020-08-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/96722
+ 	* gimple.c (infer_nonnull_range): Formatting fix.
+ 	(infer_nonnull_range_by_dereference): Return false for clobber stmts.
+ 
+ 2020-08-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/96758
+ 	* tree-ssa-strlen.c (handle_builtin_string_cmp): If both cstlen1
+ 	and cstlen2 are set, set cmpsiz to their minimum, otherwise use the
+ 	one that is set.  If bound is used and smaller than cmpsiz, set cmpsiz
+ 	to bound.  If both cstlen1 and cstlen2 are set, perform the optimization.
+ 
+ 2020-08-25  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/96730
+ 	* tree-sra.c (create_access): Disqualify any aggregate with negative
+ 	offset access.
+ 	(build_ref_for_model): Add assert that offset is non-negative.
+ 
+ 2020-08-25  Wei Wentao  <weiwt.fnst@cn.fujitsu.com>
+ 
+ 	* rtl.def: Fix typo in comment.
+ 
+ 2020-08-25  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR tree-optimization/21137
+ 	* fold-const.c (fold_binary_loc) [NE_EXPR/EQ_EXPR]: Call
+ 	STRIP_NOPS when checking whether to simplify ((x>>C1)&C2) != 0.
+ 
+ 2020-08-25  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR middle-end/64242
+ 	* config/mips/mips.md (builtin_longjmp): Restore the frame
+ 	pointer and stack pointer and gp.
+ 
+ 2020-08-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/96690
+ 	* dwarf2out.c (reference_to_unused): Make FUNCTION_DECL
+ 	processing more consistent with respect to
+ 	symtab->global_info_ready.
+ 	(tree_add_const_value_attribute): Unconditionally call
+ 	rtl_for_decl_init to do all mangling early but throw
+ 	away the result if early_dwarf.
+ 
+ 2020-08-25  Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	PR target/96755
+ 	* config/i386/sse.md: Correct the mode of NOT operands to
+ 	SImode.
+ 
+ 2020-08-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/96715
+ 	* match.pd (copysign(x,-x) -> -x): New simplification.
+ 
+ 2020-08-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/95450
+ 	* fold-const.c (native_interpret_real): For MODE_COMPOSITE_P modes
+ 	punt if the to be returned REAL_CST does not encode to the bitwise
+ 	same representation.
+ 
+ 2020-08-24  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/install.texi (Configuration): Switch valgrind.com to https.
+ 
+ 2020-08-24  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/94538
+ 	PR target/94538
+ 	* config/arm/thumb1.md: Disable set-constant splitter when
+ 	TARGET_HAVE_MOVT.
+ 	(thumb1_movsi_insn): Fix -mpure-code
+ 	alternative.
+ 
+ 2020-08-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	* tree-vect-data-refs.c (dr_group_sort_cmp): Work on
+ 	data_ref_pair.
+ 	(vect_analyze_data_ref_accesses): Work on groups.
+ 	(vect_find_stmt_data_reference): Add group_id argument and fill
+ 	up dataref_groups vector.
+ 	* tree-vect-loop.c (vect_get_datarefs_in_loop): Pass new
+ 	arguments.
+ 	(vect_analyze_loop_2): Likewise.
+ 	* tree-vect-slp.c (vect_slp_analyze_bb_1): Pass argument.
+ 	(vect_slp_bb_region): Likewise.
+ 	(vect_slp_region): Likewise.
+ 	(vect_slp_bb):Work on the entire BB.
+ 	* tree-vectorizer.h (vect_analyze_data_ref_accesses): Add new
+ 	argument.
+ 	(vect_find_stmt_data_reference): Likewise.
+ 
+ 2020-08-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/96597
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_call): Add missing
+ 	initialization of ::punned.
+ 	(vn_reference_insert): Use consistently false instead of 0.
+ 	(vn_reference_insert_pieces): Likewise.
+ 
+ 2020-08-24  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	PR target/93372
+ 	* reorg.c (fill_slots_from_thread): Allow trial insns that clobber
+ 	TARGET_FLAGS_REGNUM as delay-slot fillers.
+ 
+ 2020-08-23  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/96744
+ 	* config/i386/i386-options.c (IX86_ATTR_IX86_YES): New.
+ 	(IX86_ATTR_IX86_NO): Likewise.
+ 	(ix86_opt_type): Add ix86_opt_ix86_yes and ix86_opt_ix86_no.
+ 	(ix86_valid_target_attribute_inner_p): Handle general-regs-only,
+ 	ix86_opt_ix86_yes and ix86_opt_ix86_no.
+ 	(ix86_option_override_internal): Check opts->x_ix86_target_flags
+ 	instead of opts->x_ix86_target_flags.
+ 	* doc/extend.texi: Document target("general-regs-only") function
+ 	attribute.
+ 
+ 2020-08-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* doc/extend.texi: Update links to Arm docs.
+ 	* doc/invoke.texi: Likewise.
+ 
+ 2020-08-21  Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	PR target/96262
+ 	* config/i386/i386-expand.c
+ 	(ix86_expand_vec_shift_qihi_constant): Refine.
+ 
+ 2020-08-21  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR jit/63854
+ 	* gcc.c (set_static_spec): New.
+ 	(set_static_spec_owned): New.
+ 	(set_static_spec_shared): New.
+ 	(driver::maybe_putenv_COLLECT_LTO_WRAPPER): Use
+ 	set_static_spec_owned() to take ownership of lto_wrapper_file
+ 	such that it gets freed in driver::finalize.
+ 	(driver::maybe_run_linker): Use set_static_spec_shared() to
+ 	ensure that we don't try and free() the static string "ld",
+ 	also ensuring that any previously-allocated string in
+ 	linker_name_spec is freed. Likewise with argv0.
+ 	(driver::finalize): Use set_static_spec_shared() when resetting
+ 	specs that previously had allocated strings; remove if(0)
+ 	around call to free().
+ 
+ 2020-08-21  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
+ 
+ 	* emit-rtl.c (try_split): Call copy_frame_info_to_split_insn
+ 	to split certain RTX_FRAME_RELATED_P insns.
+ 	* recog.c (copy_frame_info_to_split_insn): New function.
+ 	(peep2_attempt): Split copying of frame related info of
+ 	RTX_FRAME_RELATED_P insns into above function and call it.
+ 	* recog.h (copy_frame_info_to_split_insn): Declare it.
+ 
+ 2020-08-21  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/88808
+ 	* config/i386/i386.c (ix86_preferred_reload_class): Allow
+ 	QImode data go into mask registers.
+ 	* config/i386/i386.md: (*movhi_internal): Adjust constraints
+ 	for mask registers.
+ 	(*movqi_internal): Ditto.
+ 	(*anddi_1): Support mask register operations
+ 	(*and<mode>_1): Ditto.
+ 	(*andqi_1): Ditto.
+ 	(*andn<mode>_1): Ditto.
+ 	(*<code><mode>_1): Ditto.
+ 	(*<code>qi_1): Ditto.
+ 	(*one_cmpl<mode>2_1): Ditto.
+ 	(*one_cmplsi2_1_zext): Ditto.
+ 	(*one_cmplqi2_1): Ditto.
+ 	(define_peephole2): Move constant 0/-1 directly into mask
+ 	registers.
+ 	* config/i386/predicates.md (mask_reg_operand): New predicate.
+ 	* config/i386/sse.md (define_split): Add post-reload splitters
+ 	that would convert "generic" patterns to mask patterns.
+ 	(*knotsi_1_zext): New define_insn.
+ 
+ 2020-08-21  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/x86-tune-costs.h (skylake_cost): Adjust cost
+ 	model.
+ 
+ 2020-08-21  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/i386.c (inline_secondary_memory_needed):
+ 	No memory is needed between mask regs and gpr.
+ 	(ix86_hard_regno_mode_ok): Add condition TARGET_AVX512F for
+ 	mask regno.
+ 	* config/i386/i386.h (enum reg_class): Add INT_MASK_REGS.
+ 	(REG_CLASS_NAMES): Ditto.
+ 	(REG_CLASS_CONTENTS): Ditto.
+ 	* config/i386/i386.md: Exclude mask register in
+ 	define_peephole2 which is avaiable only for gpr.
+ 
+ 2020-08-21  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/71453
+ 	* config/i386/i386.h (struct processor_costs): Add member
+ 	mask_to_integer, integer_to_mask, mask_load[3], mask_store[3],
+ 	mask_move.
+ 	* config/i386/x86-tune-costs.h (ix86_size_cost, i386_cost,
+ 	i386_cost, pentium_cost, lakemont_cost, pentiumpro_cost,
+ 	geode_cost, k6_cost, athlon_cost, k8_cost, amdfam10_cost,
+ 	bdver_cost, znver1_cost, znver2_cost, skylake_cost,
+ 	btver1_cost, btver2_cost, pentium4_cost, nocona_cost,
+ 	atom_cost, slm_cost, intel_cost, generic_cost, core_cost):
+ 	Initialize mask_load[3], mask_store[3], mask_move,
+ 	integer_to_mask, mask_to_integer for all target costs.
+ 	* config/i386/i386.c (ix86_register_move_cost): Using cost
+ 	model of mask registers.
+ 	(inline_memory_move_cost): Ditto.
+ 	(ix86_register_move_cost): Ditto.
+ 
+ 2020-08-20  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Don't include
+ 	VxWorks header files if -fself-test is used.
+ 	(STARTFILE_PREFIX_SPEC): Avoid using VSB_DIR if -fself-test is used.
+ 
+ 2020-08-20  Joe Ramsay  <Joe.Ramsay@arm.com>
+ 
+ 	PR target/96683
+ 	* config/arm/mve.md (mve_vst1q_f<mode>): Require MVE memory operand for
+ 	destination.
+ 	(mve_vst1q_<supf><mode>): Likewise.
+ 
+ 2020-08-19  2020-08-19  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtin.def (BU_P10V_0, BU_P10V_1,
+ 	BU_P10V_2, BU_P10V_3): Rename BU_P10V_VSX_0, BU_P10V_VSX_1,
+ 	BU_P10V_VSX_2, BU_P10V_VSX_3 respectively.
+ 	(BU_P10V_4): Remove.
+ 	(BU_P10V_AV_0, BU_P10V_AV_1, BU_P10V_AV_2, BU_P10V_AV_3, BU_P10V_AV_4):
+ 	New definitions for Power 10 Altivec macros.
+ 	(VSTRIBR, VSTRIHR, VSTRIBL, VSTRIHL, VSTRIBR_P, VSTRIHR_P,
+ 	VSTRIBL_P, VSTRIHL_P, MTVSRBM, MTVSRHM, MTVSRWM, MTVSRDM, MTVSRQM,
+ 	VEXPANDMB, VEXPANDMH, VEXPANDMW, VEXPANDMD, VEXPANDMQ, VEXTRACTMB,
+ 	VEXTRACTMH, VEXTRACTMW, VEXTRACTMD, VEXTRACTMQ): Replace macro
+ 	expansion BU_P10V_1 with BU_P10V_AV_1.
+ 	(VCLRLB, VCLRRB, VCFUGED, VCLZDM, VCTZDM, VPDEPD, VPEXTD, VGNB,
+ 	VCNTMBB, VCNTMBH, VCNTMBW, VCNTMBD): Replace macro expansion
+ 	BU_P10V_2 with	BU_P10V_AV_2.
+ 	(VEXTRACTBL, VEXTRACTHL, VEXTRACTWL, VEXTRACTDL, VEXTRACTBR, VEXTRACTHR,
+ 	VEXTRACTWR, VEXTRACTDR, VINSERTGPRBL, VINSERTGPRHL, VINSERTGPRWL,
+ 	VINSERTGPRDL, VINSERTVPRBL, VINSERTVPRHL, VINSERTVPRWL, VINSERTGPRBR,
+ 	VINSERTGPRHR, VINSERTGPRWR, VINSERTGPRDR, VINSERTVPRBR, VINSERTVPRHR,
+ 	VINSERTVPRWR, VREPLACE_ELT_V4SI, VREPLACE_ELT_UV4SI, VREPLACE_ELT_V2DF,
+ 	VREPLACE_ELT_V4SF, VREPLACE_ELT_V2DI, VREPLACE_ELT_UV2DI, VREPLACE_UN_V4SI,
+ 	VREPLACE_UN_UV4SI, VREPLACE_UN_V4SF, VREPLACE_UN_V2DI, VREPLACE_UN_UV2DI,
+ 	VREPLACE_UN_V2DF, VSLDB_V16QI, VSLDB_V8HI, VSLDB_V4SI, VSLDB_V2DI,
+ 	VSRDB_V16QI, VSRDB_V8HI, VSRDB_V4SI, VSRDB_V2DI): Replace macro expansion
+ 	BU_P10V_3 with BU_P10V_AV_3.
+ 	(VXXSPLTIW_V4SI, VXXSPLTIW_V4SF, VXXSPLTID): Replace macro expansion
+ 	BU_P10V_1 with BU_P10V_AV_1.
+ 	(XXGENPCVM_V16QI, XXGENPCVM_V8HI, XXGENPCVM_V4SI, XXGENPCVM_V2DI):
+ 	Replace macro expansion BU_P10V_2 with BU_P10V_VSX_2.
+ 	(VXXSPLTI32DX_V4SI, VXXSPLTI32DX_V4SF, VXXBLEND_V16QI, VXXBLEND_V8HI,
+ 	VXXBLEND_V4SI, VXXBLEND_V2DI, VXXBLEND_V4SF, VXXBLEND_V2DF): Replace macor
+ 	expansion BU_P10V_3 with BU_P10V_VSX_3.
+ 	(XXEVAL, VXXPERMX): Replace macro expansion BU_P10V_4 with BU_P10V_VSX_4.
+ 	(XVCVBF16SP, XVCVSPBF16): Replace macro expansion BU_VSX_1 with
+ 	BU_P10V_VSX_1. Also change MISC to CONST.
+ 	* config/rs6000/rs6000-c.c: (P10_BUILTIN_VXXPERMX): Replace with
+ 	P10V_BUILTIN_VXXPERMX.
+ 	(P10_BUILTIN_VCLRLB, P10_BUILTIN_VCLRLB, P10_BUILTIN_VCLRRB,
+ 	P10_BUILTIN_VGNB, P10_BUILTIN_XXEVAL, P10_BUILTIN_VXXPERMX,
+ 	P10_BUILTIN_VEXTRACTBL, P10_BUILTIN_VEXTRACTHL, P10_BUILTIN_VEXTRACTWL,
+ 	P10_BUILTIN_VEXTRACTDL, P10_BUILTIN_VINSERTGPRHL,
+ 	P10_BUILTIN_VINSERTGPRWL, P10_BUILTIN_VINSERTGPRDL,
+ 	P10_BUILTIN_VINSERTVPRBL, P10_BUILTIN_VINSERTVPRHL,
+ 	P10_BUILTIN_VEXTRACTBR, P10_BUILTIN_VEXTRACTHR,
+ 	P10_BUILTIN_VEXTRACTWR, P10_BUILTIN_VEXTRACTDR,
+ 	P10_BUILTIN_VINSERTGPRBR, P10_BUILTIN_VINSERTGPRHR,
+ 	P10_BUILTIN_VINSERTGPRWR, P10_BUILTIN_VINSERTGPRDR,
+ 	P10_BUILTIN_VINSERTVPRBR, P10_BUILTIN_VINSERTVPRHR,
+ 	P10_BUILTIN_VINSERTVPRWR, P10_BUILTIN_VREPLACE_ELT_UV4SI,
+ 	P10_BUILTIN_VREPLACE_ELT_V4SI, P10_BUILTIN_VREPLACE_ELT_UV2DI,
+ 	P10_BUILTIN_VREPLACE_ELT_V2DI, P10_BUILTIN_VREPLACE_ELT_V2DF,
+ 	P10_BUILTIN_VREPLACE_UN_UV4SI, P10_BUILTIN_VREPLACE_UN_V4SI,
+ 	P10_BUILTIN_VREPLACE_UN_V4SF, P10_BUILTIN_VREPLACE_UN_UV2DI,
+ 	P10_BUILTIN_VREPLACE_UN_V2DI, P10_BUILTIN_VREPLACE_UN_V2DF,
+ 	P10_BUILTIN_VSLDB_V16QI, P10_BUILTIN_VSLDB_V16QI,
+ 	P10_BUILTIN_VSLDB_V8HI, P10_BUILTIN_VSLDB_V4SI,
+ 	P10_BUILTIN_VSLDB_V2DI, P10_BUILTIN_VXXSPLTIW_V4SI,
+ 	P10_BUILTIN_VXXSPLTIW_V4SF, P10_BUILTIN_VXXSPLTID,
+ 	P10_BUILTIN_VXXSPLTI32DX_V4SI, P10_BUILTIN_VXXSPLTI32DX_V4SF,
+ 	P10_BUILTIN_VXXBLEND_V16QI, P10_BUILTIN_VXXBLEND_V8HI,
+ 	P10_BUILTIN_VXXBLEND_V4SI, P10_BUILTIN_VXXBLEND_V2DI,
+ 	P10_BUILTIN_VXXBLEND_V4SF, P10_BUILTIN_VXXBLEND_V2DF,
+ 	P10_BUILTIN_VSRDB_V16QI, P10_BUILTIN_VSRDB_V8HI,
+ 	P10_BUILTIN_VSRDB_V4SI, P10_BUILTIN_VSRDB_V2DI,
+ 	P10_BUILTIN_VSTRIBL, P10_BUILTIN_VSTRIHL,
+ 	P10_BUILTIN_VSTRIBL_P, P10_BUILTIN_VSTRIHL_P,
+ 	P10_BUILTIN_VSTRIBR, P10_BUILTIN_VSTRIHR,
+ 	P10_BUILTIN_VSTRIBR_P, P10_BUILTIN_VSTRIHR_P,
+ 	P10_BUILTIN_MTVSRBM, P10_BUILTIN_MTVSRHM,
+ 	P10_BUILTIN_MTVSRWM, P10_BUILTIN_MTVSRDM,
+ 	P10_BUILTIN_MTVSRQM, P10_BUILTIN_VCNTMBB,
+ 	P10_BUILTIN_VCNTMBH, P10_BUILTIN_VCNTMBW,
+ 	P10_BUILTIN_VCNTMBD, P10_BUILTIN_VEXPANDMB,
+ 	P10_BUILTIN_VEXPANDMH, P10_BUILTIN_VEXPANDMW,
+ 	P10_BUILTIN_VEXPANDMD, P10_BUILTIN_VEXPANDMQ,
+ 	P10_BUILTIN_VEXTRACTMB, P10_BUILTIN_VEXTRACTMH,
+ 	P10_BUILTIN_VEXTRACTMW, P10_BUILTIN_VEXTRACTMD,
+ 	P10_BUILTIN_VEXTRACTMQ, P10_BUILTIN_XVTLSBB_ZEROS,
+ 	P10_BUILTIN_XVTLSBB_ONES): Replace with
+ 	P10V_BUILTIN_VCLRLB, P10V_BUILTIN_VCLRLB, P10V_BUILTIN_VCLRRB,
+ 	P10V_BUILTIN_VGNB, P10V_BUILTIN_XXEVAL, P10V_BUILTIN_VXXPERMX,
+ 	P10V_BUILTIN_VEXTRACTBL, P10V_BUILTIN_VEXTRACTHL, P10V_BUILTIN_VEXTRACTWL,
+ 	P10V_BUILTIN_VEXTRACTDL, P10V_BUILTIN_VINSERTGPRHL,
+ 	P10V_BUILTIN_VINSERTGPRWL, P10V_BUILTIN_VINSERTGPRDL,
+ 	P10V_BUILTIN_VINSERTVPRBL,P10V_BUILTIN_VINSERTVPRHL,
+ 	P10V_BUILTIN_VEXTRACTBR, P10V_BUILTIN_VEXTRACTHR
+ 	P10V_BUILTIN_VEXTRACTWR, P10V_BUILTIN_VEXTRACTDR,
+ 	P10V_BUILTIN_VINSERTGPRBR, P10V_BUILTIN_VINSERTGPRHR,
+ 	P10V_BUILTIN_VINSERTGPRWR, P10V_BUILTIN_VINSERTGPRDR,
+ 	P10V_BUILTIN_VINSERTVPRBR, P10V_BUILTIN_VINSERTVPRHR,
+ 	P10V_BUILTIN_VINSERTVPRWR, P10V_BUILTIN_VREPLACE_ELT_UV4SI,
+ 	P10V_BUILTIN_VREPLACE_ELT_V4SI, P10V_BUILTIN_VREPLACE_ELT_UV2DI,
+ 	P10V_BUILTIN_VREPLACE_ELT_V2DI, P10V_BUILTIN_VREPLACE_ELT_V2DF,
+ 	P10V_BUILTIN_VREPLACE_UN_UV4SI, P10V_BUILTIN_VREPLACE_UN_V4SI,
+ 	P10V_BUILTIN_VREPLACE_UN_V4SF, P10V_BUILTIN_VREPLACE_UN_UV2DI,
+ 	P10V_BUILTIN_VREPLACE_UN_V2DI, P10V_BUILTIN_VREPLACE_UN_V2DF,
+ 	P10V_BUILTIN_VSLDB_V16QI, P10V_BUILTIN_VSLDB_V16QI,
+ 	P10V_BUILTIN_VSLDB_V8HI, P10V_BUILTIN_VSLDB_V4SI,
+ 	P10V_BUILTIN_VSLDB_V2DI, P10V_BUILTIN_VXXSPLTIW_V4SI,
+ 	P10V_BUILTIN_VXXSPLTIW_V4SF, P10V_BUILTIN_VXXSPLTID,
+ 	P10V_BUILTIN_VXXSPLTI32DX_V4SI, P10V_BUILTIN_VXXSPLTI32DX_V4SF,
+ 	P10V_BUILTIN_VXXBLEND_V16QI, P10V_BUILTIN_VXXBLEND_V8HI,
+ 	P10V_BUILTIN_VXXBLEND_V4SI, P10V_BUILTIN_VXXBLEND_V2DI,
+ 	P10V_BUILTIN_VXXBLEND_V4SF, P10V_BUILTIN_VXXBLEND_V2DF,
+ 	P10V_BUILTIN_VSRDB_V16QI, P10V_BUILTIN_VSRDB_V8HI,
+ 	P10V_BUILTIN_VSRDB_V4SI, P10V_BUILTIN_VSRDB_V2DI,
+ 	P10V_BUILTIN_VSTRIBL, P10V_BUILTIN_VSTRIHL,
+ 	P10V_BUILTIN_VSTRIBL_P, P10V_BUILTIN_VSTRIHL_P,
+ 	P10V_BUILTIN_VSTRIBR, P10V_BUILTIN_VSTRIHR,
+ 	P10V_BUILTIN_VSTRIBR_P, P10V_BUILTIN_VSTRIHR_P,
+ 	P10V_BUILTIN_MTVSRBM, P10V_BUILTIN_MTVSRHM,
+ 	P10V_BUILTIN_MTVSRWM, P10V_BUILTIN_MTVSRDM,
+ 	P10V_BUILTIN_MTVSRQM, P10V_BUILTIN_VCNTMBB,
+ 	P10V_BUILTIN_VCNTMBH, P10V_BUILTIN_VCNTMBW,
+ 	P10V_BUILTIN_VCNTMBD, P10V_BUILTIN_VEXPANDMB,
+ 	P10V_BUILTIN_VEXPANDMH, P10V_BUILTIN_VEXPANDMW,
+ 	P10V_BUILTIN_VEXPANDMD, P10V_BUILTIN_VEXPANDMQ,
+ 	P10V_BUILTIN_VEXTRACTMB, P10V_BUILTIN_VEXTRACTMH,
+ 	P10V_BUILTIN_VEXTRACTMW, P10V_BUILTIN_VEXTRACTMD,
+ 	P10V_BUILTIN_VEXTRACTMQ, P10V_BUILTIN_XVTLSBB_ZEROS,
+ 	P10V_BUILTIN_XVTLSBB_ONES respectively.
+ 	* config/rs6000/rs6000-call.c: Ditto above, change P10_BUILTIN_name to
+ 	P10V_BUILTIN_name.
+ 	(P10_BUILTIN_XVCVSPBF16, P10_BUILTIN_XVCVBF16SP): Change to
+ 	P10V_BUILTIN_XVCVSPBF16, P10V_BUILTIN_XVCVBF16SP respectively.
+ 
+ 2020-08-19  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-logue.c (rs6000_decl_ok_for_sibcall):
+ 	Sibcalls are always legal when the caller doesn't preserve r2.
+ 
+ 2020-08-19  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386-expand.c (ix86_expand_builtin)
+ 	[case IX86_BUILTIN_ENQCMD, case IX86_BUILTIN_ENQCMDS]:
+ 	Rewrite expansion to use code_for_enqcmd.
+ 	[case IX86_BUILTIN_WRSSD, case IX86_BUILTIN_WRSSQ]:
+ 	Rewrite expansion to use code_for_wrss.
+ 	[case IX86_BUILTIN_WRUSSD, case IX86_BUILTIN_WRUSSD]:
+ 	Rewrite expansion to use code_for_wrss.
+ 
+ 2020-08-19  Feng Xue  <fxue@os.amperecomputing.com>
+ 
+ 	PR tree-optimization/94234
+ 	* match.pd ((PTR_A + OFF) - (PTR_B + OFF)) -> (PTR_A - PTR_B): New
+ 	simplification.
+ 
+ 2020-08-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	* common/config/i386/cpuinfo.h (get_intel_cpu): Detect Rocket
+ 	Lake and Alder Lake.
+ 
+ 2020-08-19  Peixin Qiao  <qiaopeixin@huawei.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_init_cumulative_args): Remove
+ 	"fndecl && TREE_PUBLIC (fndecl)" check since it prevents the funtion
+ 	type check when calling via a function pointer or when calling a static
+ 	function.
+ 
+ 2020-08-19  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* opts-global.c (decode_options): Call target_option_override_hook
+ 	before it prints for --help=*.
+ 
+ 2020-08-18  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtin.def (BU_VSX_1): Rename xvcvbf16sp to
+ 	xvcvbf16spn.
+ 	* config/rs6000/rs6000-call.c (builtin_function_type): Likewise.
+ 	* config/rs6000/vsx.md: Likewise.
+ 	* doc/extend.texi: Likewise.
+ 
+ 2020-08-18  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-string.c (gen_lxvl_stxvl_move):
+ 	Helper function.
+ 	(expand_block_move): Add lxvl/stxvl, vector pair, and
+ 	unaligned VSX.
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+ 	Default value for -mblock-ops-vector-pair.
+ 	* config/rs6000/rs6000.opt: Add -mblock-ops-vector-pair.
+ 
+ 2020-08-18  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* vr-values.c (check_for_binary_op_overflow): Change type of store
+ 	to range_query.
+ 	(vr_values::adjust_range_with_scev): Abstract most of the code...
+ 	(range_of_var_in_loop): ...here.  Remove value_range_equiv uses.
+ 	(simplify_using_ranges::simplify_using_ranges): Change type of store
+ 	to range_query.
+ 	* vr-values.h (class range_query): New.
+ 	(class simplify_using_ranges): Use range_query.
+ 	(class vr_values): Add OVERRIDE to get_value_range.
+ 	(range_of_var_in_loop): New.
+ 
+ 2020-08-18  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/96665
+ 	PR middle-end/78257
+ 	* expr.c (convert_to_bytes): Replace statically allocated buffer with
+ 	a dynamically allocated one of sufficient size.
+ 
+ 2020-08-18  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/96670
+ 	PR middle-end/78257
+ 	* gimple-fold.c (gimple_fold_builtin_memchr): Call byte_representation
+ 	to get it, not string_constant.
+ 
+ 2020-08-18  Hu Jiangping  <hujiangping@cn.fujitsu.com>
+ 
+ 	* doc/gimple.texi (gimple_debug_begin_stmt_p): Add return type.
+ 	(gimple_debug_inline_entry_p, gimple_debug_nonbind_marker_p): Likewise.
+ 
+ 2020-08-18  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* fold-const.c (native_encode_expr): Update comment.
+ 
+ 2020-08-18  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/96536
+ 	* config/i386/i386.md (restore_stack_nonlocal): Add missing compare
+ 	RTX.  Rewrite expander to use high-level functions in RTL construction.
+ 
+ 2020-08-18  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/96562
+ 	PR target/93897
+ 	* config/i386/i386-expand.c (ix86_expand_pinsr): Don't use
+ 	pinsr for TImode.
+ 	(ix86_expand_pextr): Don't use pextr for TImode.
+ 
+ 2020-08-17  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386-builtin.def (__builtin_ia32_bextri_u32)
+ 	(__builtin_ia32_bextri_u64): Use CODE_FOR_nothing.
+ 	* config/i386/i386.md (@tbm_bextri_<mode>):
+ 	Implement as parametrized name pattern.
+ 	(@rdrand<mode>): Ditto.
+ 	(@rdseed<mode>): Ditto.
+ 	* config/i386/i386-expand.c (ix86_expand_builtin)
+ 	[case IX86_BUILTIN_BEXTRI32, case IX86_BUILTIN_BEXTRI64]:
+ 	Update for parameterized name patterns.
+ 	[case IX86_BUILTIN_RDRAND16_STEP, case IX86_BUILTIN_RDRAND32_STEP]
+ 	[case IX86_BUILTIN_RDRAND64_STEP]: Ditto.
+ 	[case IX86_BUILTIN_RDSEED16_STEP, case IX86_BUILTIN_RDSEED32_STEP]
+ 	[case IX86_BUILTIN_RDSEED64_STEP]: Ditto.
+ 
+ 2020-08-17  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* vr-values.c (vr_values::get_value_range): Add stmt param.
+ 	(vr_values::extract_range_from_comparison): Same.
+ 	(vr_values::extract_range_from_assignment): Pass stmt to
+ 	extract_range_from_comparison.
+ 	(vr_values::adjust_range_with_scev): Pass stmt to get_value_range.
+ 	(simplify_using_ranges::vrp_evaluate_conditional): Add stmt param.
+ 	Pass stmt to get_value_range.
+ 	(simplify_using_ranges::vrp_visit_cond_stmt): Pass stmt to
+ 	get_value_range.
+ 	(simplify_using_ranges::simplify_abs_using_ranges): Same.
+ 	(simplify_using_ranges::simplify_div_or_mod_using_ranges): Same.
+ 	(simplify_using_ranges::simplify_bit_ops_using_ranges): Same.
+ 	(simplify_using_ranges::simplify_cond_using_ranges_1): Same.
+ 	(simplify_using_ranges::simplify_switch_using_ranges): Same.
+ 	(simplify_using_ranges::simplify_float_conversion_using_ranges): Same.
+ 	* vr-values.h (class vr_values): Add stmt arg to
+ 	vrp_evaluate_conditional_warnv_with_ops.
+ 	Add stmt arg to extract_range_from_comparison and get_value_range.
+ 	(simplify_using_ranges::get_value_range): Add stmt arg.
+ 
+ 2020-08-17  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/96350
+ 	* config/i386/i386.c (ix86_legitimate_constant_p): Return
+ 	false for ENDBR immediate.
+ 	(ix86_legitimate_address_p): Ditto.
+ 	* config/i386/predicates.md
+ 	(x86_64_immediate_operand): Exclude ENDBR immediate.
+ 	(x86_64_zext_immediate_operand): Ditto.
+ 	(x86_64_dwzext_immediate_operand): Ditto.
+ 	(ix86_endbr_immediate_operand): New predicate.
+ 
+ 2020-08-16  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* simplify-rtx.c (simplify_unary_operation_1) [SIGN_EXTEND]:
+ 	Simplify (sign_extend:M (truncate:N (lshiftrt:M x C))) to
+ 	(ashiftrt:M x C) when the shift sets the high bits appropriately.
+ 
+ 2020-08-14  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/78257
+ 	* builtins.c (expand_builtin_memory_copy_args): Rename called function.
+ 	(expand_builtin_stpcpy_1): Remove argument from call.
+ 	(expand_builtin_memcmp): Rename called function.
+ 	(inline_expand_builtin_bytecmp): Same.
+ 	* expr.c (convert_to_bytes): New function.
+ 	(constant_byte_string): New function (formerly string_constant).
+ 	(string_constant): Call constant_byte_string.
+ 	(byte_representation): New function.
+ 	* expr.h (byte_representation): Declare.
+ 	* fold-const-call.c (fold_const_call): Rename called function.
+ 	* fold-const.c (c_getstr): Remove an argument.
+ 	(getbyterep): Define a new function.
+ 	* fold-const.h (c_getstr): Remove an argument.
+ 	(getbyterep): Declare a new function.
+ 	* gimple-fold.c (gimple_fold_builtin_memory_op): Rename callee.
+ 	(gimple_fold_builtin_string_compare): Same.
+ 	(gimple_fold_builtin_memchr): Same.
+ 
+ 2020-08-14  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/analyzer.texi (Overview): Add tip about how to get a
+ 	gimple dump if the analyzer ICEs.
+ 
+ 2020-08-14  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386-builtin.def (__builtin_ia32_llwpcb)
+ 	(__builtin_ia32_slwpcb, __builtin_ia32_lwpval32)
+ 	(__builtin_ia32_lwpval64, __builtin_ia32_lwpins32)
+ 	(__builtin_ia32_lwpins64): Use CODE_FOR_nothing.
+ 	* config/i386/i386.md (@lwp_llwpcb<mode>):
+ 	Implement as parametrized name pattern.
+ 	(@lwp_slwpcb<mode>): Ditto.
+ 	(@lwp_lwpval<mode>): Ditto.
+ 	(@lwp_lwpins<mode>): Ditto.
+ 	* config/i386/i386-expand.c (ix86_expand_special_args_builtin)
+ 	[case VOID_FTYPE_UINT_UINT_UINT, case VOID_FTYPE_UINT64_UINT_UINT]
+ 	[case UCHAR_FTYPE_UINT_UINT_UINT, case UCHAR_FTYPE_UINT64_UINT_UINT]:
+ 	Remove.
+ 	(ix86_expand_builtin)
+ 	[ case IX86_BUILTIN_LLWPCB, case IX86_BUILTIN_LLWPCB]:
+ 	Update for parameterized name patterns.
+ 	[case IX86_BUILTIN_LWPVAL32, case IX86_BUILTIN_LWPVAL64]
+ 	[case IX86_BUILTIN_LWPINS32, case IX86_BUILTIN_LWPINS64]: Expand here.
+ 
+ 2020-08-14  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	* common.opt: Add new option -fdiagnostics-plain-output.
+ 	* doc/invoke.texi: Document it.
+ 	* opts-common.c (decode_cmdline_options_to_array): Implement it.
+ 	(decode_cmdline_option): Add missing const qualifier to argv.
+ 
+ 2020-08-14  Jakub Jelinek  <jakub@redhat.com>
+ 	    Jonathan Wakely  <jwakely@redhat.com>
+ 	    Jonathan Wakely   <jwakely@redhat.com>
+ 
+ 	* system.h: Include type_traits.
+ 	* vec.h (vec<T, A, vl_embed>::embedded_size): Use offsetof and asserts
+ 	on vec_stdlayout, which is conditionally a vec (for standard layout T)
+ 	and otherwise vec_embedded.
+ 
+ 2020-08-14  Jojo R  <jiejie_rong@c-sky.com>
+ 
+ 	* config/csky/csky-elf.h (ASM_SPEC): Use mfloat-abi.
+ 	* config/csky/csky-linux-elf.h (ASM_SPEC): mfloat-abi.
+ 
+ 2020-08-13  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/93032
+ 	PR analyzer/93938
+ 	PR analyzer/94011
+ 	PR analyzer/94099
+ 	PR analyzer/94399
+ 	PR analyzer/94458
+ 	PR analyzer/94503
+ 	PR analyzer/94640
+ 	PR analyzer/94688
+ 	PR analyzer/94689
+ 	PR analyzer/94839
+ 	PR analyzer/95026
+ 	PR analyzer/95042
+ 	PR analyzer/95240
+ 	* Makefile.in (ANALYZER_OBJS): Add analyzer/region.o,
+ 	analyzer/region-model-impl-calls.o,
+ 	analyzer/region-model-manager.o,
+ 	analyzer/region-model-reachability.o, analyzer/store.o, and
+ 	analyzer/svalue.o.
+ 	* doc/analyzer.texi: Update for changes to analyzer
+ 	implementation.
+ 	* tristate.h (tristate::get_value): New accessor.
+ 
+ 2020-08-13  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386-builtin.def (CET_NORMAL): Merge to CET BDESC array.
+ 	(__builtin_ia32_rddspd, __builtin_ia32_rddspq, __builtin_ia32_incsspd)
+ 	(__builtin_ia32_incsspq, __builtin_ia32_wrssd, __builtin_ia32_wrssq)
+ 	(__builtin_ia32_wrussd, __builtin_ia32_wrussq): Use CODE_FOR_nothing.
+ 	* config/i386/i386-builtins.c: Remove handling of CET_NORMAL builtins.
+ 	* config/i386/i386.md (@rdssp<mode>): Implement as parametrized
+ 	name pattern.  Use SWI48 mode iterator.  Introduce input operand
+ 	and remove explicit XOR zeroing from insn template.
+ 	(@incssp<mode>): Implement as parametrized name pattern.
+ 	Use SWI48 mode iterator.
+ 	(@wrss<mode>): Ditto.
+ 	(@wruss<mode>): Ditto.
+ 	(rstorssp): Remove expander.  Rename insn pattern from *rstorssp<mode>.
+ 	Use DImode memory operand.
+ 	(clrssbsy): Remove expander.  Rename insn pattern from *clrssbsy<mode>.
+ 	Use DImode memory operand.
+ 	(save_stack_nonlocal): Update for parametrized name patterns.
+ 	Use cleared register as an argument to gen_rddsp.
+ 	(restore_stack_nonlocal): Update for parametrized name patterns.
+ 	* config/i386/i386-expand.c (ix86_expand_builtin):
+ 	[case IX86_BUILTIN_RDSSPD, case IX86_BUILTIN_RDSSPQ]: Expand here.
+ 	[case IX86_BUILTIN_INCSSPD, case IX86_BUILTIN_INCSSPQ]: Ditto.
+ 	[case IX86_BUILTIN_RSTORSSP, case IX86_BUILTIN_CLRSSBSY]:
+ 	Generate DImode memory operand.
+ 	[case IX86_BUILTIN_WRSSD, case IX86_BUILTIN_WRSSQ]
+ 	[case IX86_BUILTIN_WRUSSD, case IX86_BUILTIN_WRUSSD]:
+ 	Update for parameterized name patterns.
+ 
+ 2020-08-13  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/96506
+ 	* config/rs6000/rs6000-call.c (rs6000_promote_function_mode): Disallow
+ 	MMA types as return values.
+ 	(rs6000_function_arg): Disallow MMA types as function arguments.
+ 
+ 2020-08-13  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Revert:
+ 	2020-08-12  Peixin Qiao  <qiaopeixin@huawei.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_function_value): Add if
+ 	condition to check ag_mode after entering if condition of
+ 	aarch64_vfp_is_call_or_return_candidate. If TARGET_FLOAT is
+ 	set as false by -mgeneral-regs-only, report the diagnostic
+ 	information of -mgeneral-regs-only imcompatible with the use
+ 	of fp/simd register(s).
+ 
+ 2020-08-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/96482
+ 	* ipa-cp.c (ipcp_bits_lattice::meet_with_1): Mask m_value
+ 	with m_mask.
+ 
+ 2020-08-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimplify.c (gimplify_omp_taskloop_expr): New function.
+ 	(gimplify_omp_for): Use it.  For OMP_FOR_NON_RECTANGULAR
+ 	loops adjust in outer taskloop the var-outer decls.
+ 	* omp-expand.c (expand_omp_taskloop_for_inner): Handle non-rectangular
+ 	loops.
+ 	(expand_omp_for): Don't reject non-rectangular taskloop.
+ 	* omp-general.c (omp_extract_for_data): Don't assert that
+ 	non-rectangular loops have static schedule, instead treat loop->m1
+ 	or loop->m2 as if loop->n1 or loop->n2 is non-constant.
+ 
+ 2020-08-13  Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	PR target/96246
+ 	* config/i386/sse.md (<avx512>_load<mode>_mask,
+ 	<avx512>_load<mode>_mask): Extend to generate blendm
+ 	instructions.
+ 	(<avx512>_blendm<mode>, <avx512>_blendm<mode>): Change
+ 	define_insn to define_expand.
+ 
+ 2020-08-12  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/96558
+ 	* config/i386/i386.md (peephole2): Only reorder register clearing
+ 	instructions to allow use of xor for general registers.
+ 
+ 2020-08-12  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/96482
+ 	* ipa-cp.c (ipcp_bits_lattice::meet_with_1): Drop value bits
+ 	for bits that are unknown.
+ 	(ipcp_bits_lattice::set_to_constant): Likewise.
+ 	* tree-ssa-ccp.c (get_default_value): Add sanity check that
+ 	IPA CP bit info has all bits set to zero in bits that
+ 	are unknown.
+ 
+ 2020-08-12  Peixin Qiao  <qiaopeixin@huawei.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_function_value): Add if
+ 	condition to check ag_mode after entering if condition of
+ 	aarch64_vfp_is_call_or_return_candidate. If TARGET_FLOAT is
+ 	set as false by -mgeneral-regs-only, report the diagnostic
+ 	information of -mgeneral-regs-only imcompatible with the use
+ 	of fp/simd register(s).
+ 
+ 2020-08-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/96535
+ 	* toplev.c (process_options): Move flag_unroll_loops and
+ 	flag_cunroll_grow_size handling from here to ...
+ 	* opts.c (finish_options): ... here.  For flag_cunroll_grow_size,
+ 	don't check for AUTODETECT_VALUE, but instead check
+ 	opts_set->x_flag_cunroll_grow_size.
+ 	* common.opt (funroll-completely-grow-size): Default to 0.
+ 	* config/rs6000/rs6000.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE):
+ 	Redefine.
+ 	(rs6000_override_options_after_change): New function.
+ 	(rs6000_option_override_internal): Call it.  Move there the
+ 	flag_cunroll_grow_size, unroll_only_small_loops and
+ 	flag_rename_registers handling.
+ 
+ 2020-08-12  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Make elt_size an
+ 	unsigned HOST_WIDE_INT.  Print init_frag.remaining using
+ 	HOST_WIDE_INT_PRINT_UNSIGNED.
+ 
+ 2020-08-12  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (peephole2): Reduce unnecessary
+ 	register shuffling produced by register allocation.
+ 
+ 2020-08-12  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* ipa-fnsummary.c (evaluate_conditions_for_known_args): Use vec<>
+ 	instead of std::vector<>.
+ 	(evaluate_properties_for_edge): Same.
+ 	(ipa_fn_summary_t::duplicate): Same.
+ 	(estimate_ipcp_clone_size_and_time): Same.
+ 	* vec.h (<T, A, vl_embed>::embedded_size): Change vec_embedded
+ 	type to contain a char[].
+ 
+ 2020-08-12  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	PR target/96308
+ 	* config/s390/s390.c (s390_cannot_force_const_mem): Reject an
+ 	unary minus for everything not being a numeric constant.
+ 	(legitimize_tls_address): Move a NEG out of the CONST rtx.
+ 
+ 2020-08-12  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	PR target/96456
+ 	* config/s390/s390.h (TARGET_NONSIGNALING_VECTOR_COMPARE_OK): New
+ 	macro.
+ 	* config/s390/vector.md (vcond_comparison_operator): Use new macro
+ 	for the check.
+ 
+ 2020-08-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/96539
+ 	* expr.c (emit_block_move_hints): Don't copy anything if x and y
+ 	are the same and neither is MEM_VOLATILE_P.
+ 
+ 2020-08-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/96549
+ 	* tree.c (get_narrower): Use TREE_TYPE (ret) instead of
+ 	TREE_TYPE (win) for COMPOUND_EXPRs.
+ 
+ 2020-08-11  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* predict.c (not_loop_guard_equal_edge_p): New function.
+ 	(maybe_predict_edge): New function.
+ 	(predict_paths_for_bb): Use it.
+ 	(predict_paths_leading_to_edge): Use it.
+ 
+ 2020-08-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	* dbgcnt.def (DEBUG_COUNTER): Add ipa_cp_bits.
+ 	* ipa-cp.c (ipcp_store_bits_results): Use it when we store known
+ 	bits for parameters.
+ 
+ 2020-08-10  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* doc/sourcebuild.texi: Document dg-ice.
+ 
+ 2020-08-10  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386-expand.c (ix86_expand_int_movcc): Expand
+ 	signed MIN_EXPR against zero as "x < 0 ? x : 0" instead of
+ 	"x <= 0 ? x : 0" to enable sign_bit_compare_p optimizations.
+ 
+ 2020-08-10  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.h (gt_ggc_mx): Declare inline.
+ 	(gt_pch_nx): Same.
+ 
+ 2020-08-10  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	PR tree-optimization/95433
+ 	* match.pd (X * C1 == C2): Handle wrapping overflow.
+ 	* expr.c (maybe_optimize_mod_cmp): Qualify call to mod_inv.
+ 	(mod_inv): Move...
+ 	* wide-int.cc (mod_inv): ... here.
+ 	* wide-int.h (mod_inv): Declare it.
+ 
+ 2020-08-10  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* predict.c (filter_predictions): Document semantics of filter.
+ 	(equal_edge_p): Rename to ...
+ 	(not_equal_edge_p): ... this; reverse semantics.
+ 	(remove_predictions_associated_with_edge): Fix.
+ 
+ 2020-08-10  Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	PR target/96243
+ 	* config/i386/i386-expand.c (ix86_expand_sse_cmp): Refine for
+ 	maskcmp.
+ 	(ix86_expand_mask_vec_cmp): Change prototype.
+ 	* config/i386/i386-protos.h (ix86_expand_mask_vec_cmp): Change prototype.
+ 	* config/i386/i386.c (ix86_print_operand): Remove operand
+ 	modifier 'I'.
+ 	* config/i386/sse.md
+ 	(*<avx512>_cmp<mode>3<mask_scalar_merge_name><round_saeonly_name>): Deleted.
+ 	(*<avx512>_cmp<mode>3<mask_scalar_merge_name>): Ditto.
+ 	(*<avx512>_ucmp<mode>3<mask_scalar_merge_name>): Ditto.
+ 	(*<avx512>_ucmp<mode>3<mask_scalar_merge_name>,
+ 	avx512f_maskcmp<mode>3): Ditto.
+ 
+ 2020-08-09  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* expmed.c (init_expmed_one_conv): Restore all->reg's mode.
+ 	(init_expmed_one_mode): Set all->reg to desired mode.
+ 
+ 2020-08-08  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/96530
+ 	* config/rs6000/rs6000.c (rs6000_invalid_conversion): Use canonical
+ 	types for type comparisons.  Refactor code to simplify it.
+ 
+ 2020-08-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/93553
+ 	* tree-nested.c (convert_nonlocal_omp_clauses): For
+ 	OMP_CLAUSE_REDUCTION, OMP_CLAUSE_LASTPRIVATE and OMP_CLAUSE_LINEAR
+ 	save info->new_local_var_chain around walks of the clause gimple
+ 	sequences and declare_vars if needed into the sequence.
+ 
+ 2020-08-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/96424
+ 	* omp-expand.c: Include tree-eh.h.
+ 	(expand_omp_for_init_vars): Handle -fexceptions -fnon-call-exceptions
+ 	by forcing floating point comparison into a bool temporary.
+ 
+ 2020-08-07  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* generic-match-head.c (optimize_vectors_before_lowering_p): New
+ 	function.
+ 	* gimple-match-head.c (optimize_vectors_before_lowering_p):
+ 	Likewise.
+ 	* match.pd ((v ? w : 0) ? a : b, c1 ? c2 ? a : b : b): Use it.
+ 
+ 2020-08-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96514
+ 	* tree-if-conv.c (if_convertible_bb_p): If the last stmt
+ 	is a call that is control-altering, fail.
+ 
+ 2020-08-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config/bpf/bpf.md: Remove trailing whitespaces.
+ 	* config/bpf/constraints.md: Likewise.
+ 	* config/bpf/predicates.md: Likewise.
+ 
+ 2020-08-07  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.md (bswaphi2_reg): Add ISA 3.1 support.
+ 	(bswapsi2_reg): Add ISA 3.1 support.
+ 	(bswapdi2): Rename bswapdi2_xxbrd to bswapdi2_brd.
+ 	(bswapdi2_brd,bswapdi2_xxbrd): Rename.  Add ISA 3.1 support.
+ 
+ 2020-08-07  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR target/96493
+ 	* config/rs6000/predicates.md (current_file_function_operand): Don't
+ 	accept functions that differ in r2 usage.
+ 
+ 2020-08-06  Hans-Peter Nilsson  <hp@bitrange.com>
+ 
+ 	* config/mmix/mmix.md (MM): New mode_iterator.
+ 	("mov<mode>"): New expander to expand for all MM-modes.
+ 	("*movqi_expanded", "*movhi_expanded", "*movsi_expanded")
+ 	("*movsf_expanded", "*movdf_expanded"): Rename from the
+ 	corresponding mov<M> named pattern.  Add to the condition that
+ 	either operand must be a register_operand.
+ 	("*movdi_expanded"): Similar, but also allow STCO in the condition.
+ 
+ 2020-08-06  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/96191
+ 	* config/arm/arm.md (arm_stack_protect_test_insn): Zero out
+ 	operand 2 after use.
+ 	* config/arm/thumb1.md (thumb1_stack_protect_test_insn): Likewise.
+ 
+ 2020-08-06  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/96446
+ 	* config/rs6000/mma.md (*movpxi): Add xxsetaccz generation.
+ 	Disable split for zero constant source operand.
+ 	(mma_xxsetaccz): Change to define_expand.  Call gen_movpxi.
+ 
+ 2020-08-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/96480
+ 	* tree-ssa-reassoc.c (suitable_cond_bb): Add TEST_SWAPPED_P argument.
+ 	If TEST_BB ends in cond and has one edge to *OTHER_BB and another
+ 	through an empty bb to that block too, if PHI args don't match, retry
+ 	them through the other path from TEST_BB.
+ 	(maybe_optimize_range_tests): Adjust callers.  Handle such LAST_BB
+ 	through inversion of the condition.
+ 
+ 2020-08-06  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config/bpf/bpf-helpers.h (KERNEL_HELPER): Define.
+ 	(KERNEL_VERSION): Remove.
+ 	* config/bpf/bpf-helpers.def: Delete.
+ 	* config/bpf/bpf.c (bpf_handle_fndecl_attribute): New function.
+ 	(bpf_attribute_table): Define.
+ 	(bpf_helper_names): Delete.
+ 	(bpf_helper_code): Likewise.
+ 	(enum bpf_builtins): Adjust to new helpers mechanism.
+ 	(bpf_output_call): Likewise.
+ 	(bpf_init_builtins): Likewise.
+ 	(bpf_init_builtins): Likewise.
+ 	* doc/extend.texi (BPF Function Attributes): New section.
+ 	(BPF Kernel Helpers): Delete section.
+ 
+ 2020-08-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96491
+ 	* tree-ssa-sink.c (sink_common_stores_to_bb): Avoid
+ 	sinking across abnormal edges.
+ 
+ 2020-08-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96483
+ 	* tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
+ 	POLY_INT_CST.
+ 
+ 2020-08-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-isl-ast-to-gimple.c (ivs_params): Use hash_map instead
+ 	of std::map.
+ 	(ivs_params_clear): Adjust.
+ 	(gcc_expression_from_isl_ast_expr_id): Likewise.
+ 	(graphite_create_new_loop): Likewise.
+ 	(add_parameters_to_ivs_params): Likewise.
+ 
+ 2020-08-06  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (MAXMIN_IMODE): No longer needed.
+ 	(<maxmin><mode>3):  Support SWI248 and general_operand for
+ 	second operand, when TARGET_CMOVE.
+ 	(<maxmin><mode>3_1 splitter): Optimize comparisons against
+ 	0, 1 and -1 to use "test" instead of "cmp".
+ 	(*<maxmin>di3_doubleword): Likewise, allow general_operand
+ 	and enable on TARGET_CMOVE.
+ 	(peephole2): Convert clearing a register after a flag setting
+ 	instruction into an xor followed by the original flag setter.
+ 
+ 2020-08-06  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* ipa-fnsummary.c (INCLUDE_VECTOR): Define.
+ 	Remove direct inclusion of <vector>.
+ 
+ 2020-08-06  Kewen Lin  <linkw@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_adjust_vect_cost_per_loop): New
+ 	function.
+ 	(rs6000_finish_cost): Call rs6000_adjust_vect_cost_per_loop.
+ 	* tree-vect-loop.c (vect_estimate_min_profitable_iters): Add cost
+ 	modeling for vector with length.
+ 	(vect_rgroup_iv_might_wrap_p): New function, factored out from...
+ 	* tree-vect-loop-manip.c (vect_set_loop_controls_directly): ...this.
+ 	Update function comment.
+ 	* tree-vect-stmts.c (vect_gen_len): Update function comment.
+ 	* tree-vectorizer.h (vect_rgroup_iv_might_wrap_p): New declare.
+ 
+ 2020-08-06  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* tree-vectorizer.c (try_vectorize_loop_1): Skip the epilogue loops
+ 	for dbgcnt check.
+ 
+ 2020-08-05  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	PR tree-optimization/95906
+ 	PR target/70314
+ 	* match.pd ((c ? a : b) op d, (c ? a : b) op (c ? d : e),
+ 	(v ? w : 0) ? a : b, c1 ? c2 ? a : b : b): New transformations.
+ 	(op (c ? a : b)): Update to match the new transformations.
+ 
+ 2020-08-05  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/96191
+ 	* config/aarch64/aarch64.md (stack_protect_test_<mode>): Set the
+ 	CC register directly, instead of a GPR.  Replace the original GPR
+ 	destination with an extra scratch register.  Zero out operand 3
+ 	after use.
+ 	(stack_protect_test): Update accordingly.
+ 
+ 2020-08-05  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (load_pair_sw_<SX:mode><SX2:mode>)
+ 	(load_pair_dw_<DX:mode><DX2:mode>, load_pair_dw_tftf)
+ 	(store_pair_sw_<SX:mode><SX2:mode>)
+ 	(store_pair_dw_<DX:mode><DX2:mode>, store_pair_dw_tftf)
+ 	(*load_pair_extendsidi2_aarch64)
+ 	(*load_pair_zero_extendsidi2_aarch64): Use %z for the memory operand.
+ 	* config/aarch64/aarch64-simd.md (load_pair<DREG:mode><DREG2:mode>)
+ 	(vec_store_pair<DREG:mode><DREG2:mode>, load_pair<VQ:mode><VQ2:mode>)
+ 	(vec_store_pair<VQ:mode><VQ2:mode>): Likewise.
+ 
+ 2020-08-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-im.c (invariantness_dom_walker): Remove.
+ 	(invariantness_dom_walker::before_dom_children): Move to ...
+ 	(compute_invariantness): ... this function.
+ 	(move_computations): Inline ...
+ 	(tree_ssa_lim): ... here, share RPO order and avoid some
+ 	cfun references.
+ 	(analyze_memory_references): Remove sorting of location
+ 	lists, instead assert they are sorted already when checking.
+ 	(prev_flag_edges): Remove.
+ 	(execute_sm_if_changed): Pass down and adjust prev edge state.
+ 	(execute_sm_exit): Likewise.
+ 	(hoist_memory_references): Likewise.  Commit edge insertions
+ 	of each processed exit.
+ 	(store_motion_loop): Do not commit edge insertions on all
+ 	edges in the function.
+ 	(tree_ssa_lim_initialize): Do not call alloc_aux_for_edges.
+ 	(tree_ssa_lim_finalize): Do not call free_aux_for_edges.
+ 
+ 2020-08-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* genmatch.c (fail_label): New global.
+ 	(expr::gen_transform): Branch to fail_label instead of
+ 	returning.  Fix indent of call argument checking.
+ 	(dt_simplify::gen_1): Compute and emit fail_label, branch
+ 	to it instead of returning early.
+ 
+ 2020-08-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-expand.c (expand_omp_for): Don't disallow combined non-rectangular
+ 	loops.
+ 
+ 2020-08-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/96459
+ 	* omp-low.c (lower_omp_taskreg): Call lower_reduction_clauses even in
+ 	for host teams.
+ 
+ 2020-08-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-expand.c (expand_omp_for_init_counts): Remember
+ 	first_inner_iterations, factor and n1o from the number of iterations
+ 	computation in *fd.
+ 	(expand_omp_for_init_vars): Use more efficient logical iteration number
+ 	to actual iterator values computation even for non-rectangular loops
+ 	where number of loop iterations could not be computed at compile time.
+ 
+ 2020-08-05  2020-08-04  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/altivec.h (vec_blendv, vec_permx): Add define.
+ 	* config/rs6000/altivec.md (UNSPEC_XXBLEND, UNSPEC_XXPERMX.): New
+ 	unspecs.
+ 	(VM3): New define_mode.
+ 	(VM3_char): New define_attr.
+ 	(xxblend_<mode> mode VM3): New define_insn.
+ 	(xxpermx): New define_expand.
+ 	(xxpermx_inst): New define_insn.
+ 	* config/rs6000/rs6000-builtin.def (VXXBLEND_V16QI, VXXBLEND_V8HI,
+ 	VXXBLEND_V4SI, VXXBLEND_V2DI, VXXBLEND_V4SF, VXXBLEND_V2DF): New
+ 	BU_P10V_3 definitions.
+ 	(XXBLEND): New BU_P10_OVERLOAD_3 definition.
+ 	(XXPERMX): New BU_P10_OVERLOAD_4 definition.
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
+ 	(P10_BUILTIN_VXXPERMX): Add if statement.
+ 	* config/rs6000/rs6000-call.c (P10_BUILTIN_VXXBLEND_V16QI,
+ 	P10_BUILTIN_VXXBLEND_V8HI, P10_BUILTIN_VXXBLEND_V4SI,
+ 	P10_BUILTIN_VXXBLEND_V2DI, P10_BUILTIN_VXXBLEND_V4SF,
+ 	P10_BUILTIN_VXXBLEND_V2DF, P10_BUILTIN_VXXPERMX): Define
+ 	overloaded arguments.
+ 	(rs6000_expand_quaternop_builtin): Add if case for CODE_FOR_xxpermx.
+ 	(builtin_quaternary_function_type): Add v16uqi_type and xxpermx_type
+ 	variables, add case statement for P10_BUILTIN_VXXPERMX.
+ 	(builtin_function_type): Add case statements for
+ 	P10_BUILTIN_VXXBLEND_V16QI, P10_BUILTIN_VXXBLEND_V8HI,
+ 	P10_BUILTIN_VXXBLEND_V4SI, P10_BUILTIN_VXXBLEND_V2DI.
+ 	* doc/extend.texi: Add documentation for vec_blendv and vec_permx.
+ 
+ 2020-08-05  2020-08-04  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/altivec.h (vec_splati, vec_splatid, vec_splati_ins):
+ 	Add defines.
+ 	* config/rs6000/altivec.md (UNSPEC_XXSPLTIW, UNSPEC_XXSPLTID,
+ 	UNSPEC_XXSPLTI32DX): New.
+ 	(vxxspltiw_v4si, vxxspltiw_v4sf_inst, vxxspltidp_v2df_inst,
+ 	vxxsplti32dx_v4si_inst, vxxsplti32dx_v4sf_inst): New define_insn.
+ 	(vxxspltiw_v4sf, vxxspltidp_v2df, vxxsplti32dx_v4si,
+ 	vxxsplti32dx_v4sf.): New define_expands.
+ 	* config/rs6000/predicates.md (u1bit_cint_operand,
+ 	s32bit_cint_operand, c32bit_cint_operand): New predicates.
+ 	* config/rs6000/rs6000-builtin.def (VXXSPLTIW_V4SI, VXXSPLTIW_V4SF,
+ 	VXXSPLTID): New definitions.
+ 	(VXXSPLTI32DX_V4SI, VXXSPLTI32DX_V4SF): New BU_P10V_3
+ 	definitions.
+ 	(XXSPLTIW, XXSPLTID): New definitions.
+ 	(XXSPLTI32DX): Add definitions.
+ 	* config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_XXSPLTIW,
+ 	P10_BUILTIN_VEC_XXSPLTID, P10_BUILTIN_VEC_XXSPLTI32DX):
+ 	New definitions.
+ 	* config/rs6000/rs6000-protos.h (rs6000_constF32toI32): New extern
+ 	declaration.
+ 	* config/rs6000/rs6000.c (rs6000_constF32toI32): New function.
+ 	* doc/extend.texi: Add documentation for vec_splati,
+ 	vec_splatid, and vec_splati_ins.
+ 
+ 2020-08-05  2020-08-04  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/altivec.h (vec_sldb, vec_srdb): New defines.
+ 	* config/rs6000/altivec.md (UNSPEC_SLDB, UNSPEC_SRDB): New.
+ 	(SLDB_lr): New attribute.
+ 	(VSHIFT_DBL_LR): New iterator.
+ 	(vs<SLDB_lr>db_<mode>): New define_insn.
+ 	* config/rs6000/rs6000-builtin.def (VSLDB_V16QI, VSLDB_V8HI,
+ 	VSLDB_V4SI, VSLDB_V2DI, VSRDB_V16QI, VSRDB_V8HI, VSRDB_V4SI,
+ 	VSRDB_V2DI): New BU_P10V_3 definitions.
+ 	(SLDB, SRDB): New BU_P10_OVERLOAD_3 definitions.
+ 	* config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_SLDB,
+ 	P10_BUILTIN_VEC_SRDB): New definitions.
+ 	(rs6000_expand_ternop_builtin) [CODE_FOR_vsldb_v16qi,
+ 	CODE_FOR_vsldb_v8hi, CODE_FOR_vsldb_v4si, CODE_FOR_vsldb_v2di,
+ 	CODE_FOR_vsrdb_v16qi, CODE_FOR_vsrdb_v8hi, CODE_FOR_vsrdb_v4si,
+ 	CODE_FOR_vsrdb_v2di]: Add clauses.
+ 	* doc/extend.texi: Add description for vec_sldb and vec_srdb.
+ 
+ 2020-08-05  2020-08-04 Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/altivec.h: Add define for vec_replace_elt and
+ 	vec_replace_unaligned.
+ 	* config/rs6000/vsx.md (UNSPEC_REPLACE_ELT, UNSPEC_REPLACE_UN): New
+ 	unspecs.
+ 	(REPLACE_ELT): New mode iterator.
+ 	(REPLACE_ELT_char, REPLACE_ELT_sh, REPLACE_ELT_max): New mode attributes.
+ 	(vreplace_un_<mode>, vreplace_elt_<mode>_inst): New.
+ 	* config/rs6000/rs6000-builtin.def (VREPLACE_ELT_V4SI,
+ 	VREPLACE_ELT_UV4SI, VREPLACE_ELT_V4SF, VREPLACE_ELT_UV2DI,
+ 	VREPLACE_ELT_V2DF, VREPLACE_UN_V4SI, VREPLACE_UN_UV4SI,
+ 	VREPLACE_UN_V4SF, VREPLACE_UN_V2DI, VREPLACE_UN_UV2DI,
+ 	VREPLACE_UN_V2DF, (REPLACE_ELT, REPLACE_UN, VREPLACE_ELT_V2DI): New builtin
+ 	entries.
+ 	* config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_REPLACE_ELT,
+ 	P10_BUILTIN_VEC_REPLACE_UN): New builtin argument definitions.
+ 	(rs6000_expand_quaternop_builtin): Add 3rd argument checks for
+ 	CODE_FOR_vreplace_elt_v4si, CODE_FOR_vreplace_elt_v4sf,
+ 	CODE_FOR_vreplace_un_v4si, CODE_FOR_vreplace_un_v4sf.
+ 	(builtin_function_type) [P10_BUILTIN_VREPLACE_ELT_UV4SI,
+ 	P10_BUILTIN_VREPLACE_ELT_UV2DI, P10_BUILTIN_VREPLACE_UN_UV4SI,
+ 	P10_BUILTIN_VREPLACE_UN_UV2DI]: New cases.
+ 	* doc/extend.texi: Add description for vec_replace_elt and
+ 	vec_replace_unaligned builtins.
+ 
+ 2020-08-05  2020-08-04  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/altivec.h (vec_insertl, vec_inserth): New defines.
+ 	* config/rs6000/rs6000-builtin.def (VINSERTGPRBL, VINSERTGPRHL,
+ 	VINSERTGPRWL, VINSERTGPRDL, VINSERTVPRBL, VINSERTVPRHL, VINSERTVPRWL,
+ 	VINSERTGPRBR, VINSERTGPRHR, VINSERTGPRWR, VINSERTGPRDR, VINSERTVPRBR,
+ 	VINSERTVPRHR, VINSERTVPRWR): New builtins.
+ 	(INSERTL, INSERTH): New builtins.
+ 	* config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_INSERTL,
+ 	P10_BUILTIN_VEC_INSERTH): New overloaded definitions.
+ 	(P10_BUILTIN_VINSERTGPRBL, P10_BUILTIN_VINSERTGPRHL,
+ 	P10_BUILTIN_VINSERTGPRWL, P10_BUILTIN_VINSERTGPRDL,
+ 	P10_BUILTIN_VINSERTVPRBL, P10_BUILTIN_VINSERTVPRHL,
+ 	P10_BUILTIN_VINSERTVPRWL): Add case entries.
+ 	* config/rs6000/vsx.md (define_c_enum): Add UNSPEC_INSERTL,
+ 	UNSPEC_INSERTR.
+ 	(define_expand): Add vinsertvl_<mode>, vinsertvr_<mode>,
+ 	vinsertgl_<mode>, vinsertgr_<mode>, mode is VI2.
+ 	(define_ins): vinsertvl_internal_<mode>, vinsertvr_internal_<mode>,
+ 	vinsertgl_internal_<mode>, vinsertgr_internal_<mode>, mode VEC_I.
+ 	* doc/extend.texi: Add documentation for vec_insertl, vec_inserth.
+ 
+ 2020-08-05  2020-08-04  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/altivec.md: (UNSPEC_EXTRACTL, UNSPEC_EXTRACTR)
+ 	(vextractl<mode>, vextractr<mode>)
+ 	(vextractl<mode>_internal, vextractr<mode>_internal for mode VI2)
+ 	(VI2): Move to ...
+ 	* config/rs6000/vsx.md:	(UNSPEC_EXTRACTL, UNSPEC_EXTRACTR)
+ 	(vextractl<mode>, vextractr<mode>)
+ 	(vextractl<mode>_internal, vextractr<mode>_internal for mode VI2)
+ 	(VI2):  ..here.
+ 	* doc/extend.texi: Update documentation for vec_extractl.
+ 	Replace builtin name vec_extractr with vec_extracth.  Update
+ 	description of vec_extracth.
+ 
+ 2020-08-04  Jim Wilson  <jimw@sifive.com>
+ 
+ 	* doc/invoke.texi (AArch64 Options): Delete duplicate
+ 	-mstack-protector-guard docs.
+ 
+ 2020-08-04  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/nvptx/nvptx.md (smulhi3_highpart, smulsi3_highpart)
+ 	(umulhi3_highpart, umulsi3_highpart): New instructions.
+ 
+ 2020-08-04  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-run.c (R_AMDGPU_NONE): Delete.
+ 	(R_AMDGPU_ABS32_LO): Delete.
+ 	(R_AMDGPU_ABS32_HI): Delete.
+ 	(R_AMDGPU_ABS64): Delete.
+ 	(R_AMDGPU_REL32): Delete.
+ 	(R_AMDGPU_REL64): Delete.
+ 	(R_AMDGPU_ABS32): Delete.
+ 	(R_AMDGPU_GOTPCREL): Delete.
+ 	(R_AMDGPU_GOTPCREL32_LO): Delete.
+ 	(R_AMDGPU_GOTPCREL32_HI): Delete.
+ 	(R_AMDGPU_REL32_LO): Delete.
+ 	(R_AMDGPU_REL32_HI): Delete.
+ 	(reserved): Delete.
+ 	(R_AMDGPU_RELATIVE64): Delete.
+ 
+ 2020-08-04  Omar Tahir  <omar.tahir@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (armv8.1-m.main): Tune for Cortex-M55.
+ 
+ 2020-08-04  Hu Jiangping  <hujiangping@cn.fujitsu.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_if_then_else_costs): Delete
+ 	redundant extra_cost variable.
+ 
+ 2020-08-04  Zhiheng Xie  <xiezhiheng@huawei.com>
+ 
+ 	* config/aarch64/aarch64-builtins.c (aarch64_call_properties):
+ 	Use FLOAT_MODE_P macro instead of enumerating all floating-point
+ 	modes and add global flag FLAG_AUTO_FP.
+ 
+ 2020-08-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* doc/extend.texi (symver): Add @cindex for symver function attribute.
+ 
+ 2020-08-04  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	PR tree-optimization/95433
+ 	* match.pd (X * C1 == C2): New transformation.
+ 
+ 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-ssa-sprintf.c (get_int_range): Adjust for irange API.
+ 	(format_integer): Same.
+ 	(handle_printf_call): Same.
+ 
+ 2020-08-04  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn.md ("<expander>ti3"): New.
+ 
+ 2020-08-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/88240
+ 	* tree-ssa-sccvn.h (vn_reference_s::punned): New flag.
+ 	* tree-ssa-sccvn.c (vn_reference_insert): Initialize punned.
+ 	(vn_reference_insert_pieces): Likewise.
+ 	(visit_reference_op_call): Likewise.
+ 	(visit_reference_op_load): Track whether a ref was punned.
+ 	* tree-ssa-pre.c (do_hoist_insertion): Refuse to perform hoist
+ 	insertion on punned floating point loads.
+ 
+ 2020-08-04  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_gen_store_pair): Add case
+ 	for E_V4SImode.
+ 	(aarch64_gen_load_pair): Likewise.
+ 	(aarch64_copy_one_block_and_progress_pointers): Handle 256 bit copy.
+ 	(aarch64_expand_cpymem): Expand copy_limit to 256bits where
+ 	appropriate.
+ 
+ 2020-08-04  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (aarch64_fjcvtzs): Add missing
+ 	clobber.
+ 	* doc/sourcebuild.texi (aarch64_fjcvtzs_hw) Document new
+ 	target supports option.
+ 
+ 2020-08-04  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/96428
+ 	* config/nvptx/nvptx.c (nvptx_gen_shuffle): Handle V2SI/V2DI.
+ 
+ 2020-08-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/96426
+ 	* tree-vect-generic.c (expand_vector_conversion): Replace .VEC_CONVERT
+ 	call with GIMPLE_NOP if there is no lhs.
+ 
+ 2020-08-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/96354
+ 	* gimple-fold.c (maybe_canonicalize_mem_ref_addr): Add IS_DEBUG
+ 	argument.  Return false instead of gcc_unreachable if it is true and
+ 	get_addr_base_and_unit_offset returns NULL.
+ 	(fold_stmt_1) <case GIMPLE_DEBUG>: Adjust caller.
+ 
+ 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* vr-values.c (simplify_using_ranges::vrp_evaluate_conditional):
+ 	Call is_gimple_min_invariant dropped from previous patch.
+ 
+ 2020-08-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-expand.c (expand_omp_for_init_counts): For triangular loops
+ 	compute number of iterations at runtime more efficiently.
+ 	(expand_omp_for_init_vars): Adjust immediate dominators.
+ 	(extract_omp_for_update_vars): Likewise.
+ 
+ 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* vr-values.c (simplify_using_ranges::two_valued_val_range_p):
+ 	Use irange API.
+ 
+ 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* vr-values.c (simplify_conversion_using_ranges): Convert to irange API.
+ 
+ 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* vr-values.c (test_for_singularity): Use irange API.
+ 	(simplify_using_ranges::simplify_cond_using_ranges_1): Do not
+ 	special case VR_RANGE.
+ 
+ 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* vr-values.c (simplify_using_ranges::vrp_evaluate_conditional): Adjust
+ 	for irange API.
+ 
+ 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* vr-values.c (simplify_using_ranges::op_with_boolean_value_range_p): Adjust
+ 	for irange API.
+ 
+ 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-ssanames.c (get_range_info): Use irange instead of value_range.
+ 	* tree-ssanames.h (get_range_info): Same.
+ 
+ 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* fold-const.c (expr_not_equal_to): Adjust for irange API.
+ 
+ 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* builtins.c (determine_block_size): Remove ad-hoc range canonicalization.
+ 
+ 2020-08-04  Xionghu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	PR rtl-optimization/71309
+ 	* dse.c (find_shift_sequence): Use subreg of shifted from high part
+ 	register to avoid loading from address.
+ 
+ 2020-08-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/cpp.texi (Variadic Macros): Use the exact ... token in
+ 	code examples.
+ 
+ 2020-08-03  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* doc/invoke.texi: Refer to c++20
+ 
+ 2020-08-03  Julian Brown  <julian@codesourcery.com>
+ 	    Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* gimplify.c (gimplify_omp_target_update): Allow GOMP_MAP_TO_PSET
+ 	without a preceding data-movement mapping.
+ 
+ 2020-08-03  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.h (ASM_DECLARE_FUNCTION_NAME): UNDEF before
+ 	use.
+ 	(DEF_MIN_OSX_VERSION): Only define if there's no existing
+ 	def.
+ 
+ 2020-08-03  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (IN_TARGET_CODE): Remove.
+ 	(darwin_mergeable_constant_section): Handle poly-int machine modes.
+ 	(machopic_select_rtx_section): Likewise.
+ 
+ 2020-08-03  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/96430
+ 	* range-op.cc (operator_tests): Do not shift by 31 on targets with
+ 	integer's smaller than 32 bits.
+ 
+ 2020-08-03  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* hsa-brig-format.h: Moved to brig/brigfrontend.
+ 	* hsa-brig.c: Removed.
+ 	* hsa-builtins.def: Likewise.
+ 	* hsa-common.c: Likewise.
+ 	* hsa-common.h: Likewise.
+ 	* hsa-dump.c: Likewise.
+ 	* hsa-gen.c: Likewise.
+ 	* hsa-regalloc.c: Likewise.
+ 	* ipa-hsa.c: Likewise.
+ 	* omp-grid.c: Likewise.
+ 	* omp-grid.h: Likewise.
+ 	* Makefile.in (BUILTINS_DEF): Remove hsa-builtins.def.
+ 	(OBJS): Remove hsa-common.o, hsa-gen.o, hsa-regalloc.o, hsa-brig.o,
+ 	hsa-dump.o, ipa-hsa.c and omp-grid.o.
+ 	(GTFILES): Removed hsa-common.c and omp-expand.c.
+ 	* builtins.def: Remove processing of hsa-builtins.def.
+ 	(DEF_HSA_BUILTIN): Remove.
+ 	* common.opt (flag_disable_hsa): Remove.
+ 	(-Whsa): Ignore.
+ 	* config.in (ENABLE_HSA): Removed.
+ 	* configure.ac: Removed handling configuration for hsa offloading.
+ 	(ENABLE_HSA): Removed.
+ 	* configure: Regenerated.
+ 	* doc/install.texi (--enable-offload-targets): Remove hsa from the
+ 	example.
+ 	(--with-hsa-runtime): Reword to reference any HSA run-time, not
+ 	specifically HSA offloading.
+ 	* doc/invoke.texi (Option Summary): Remove -Whsa.
+ 	(Warning Options): Likewise.
+ 	(Optimize Options): Remove hsa-gen-debug-stores.
+ 	* doc/passes.texi (Regular IPA passes): Remove section on IPA HSA
+ 	pass.
+ 	* gimple-low.c (lower_stmt): Remove GIMPLE_OMP_GRID_BODY case.
+ 	* gimple-pretty-print.c (dump_gimple_omp_for): Likewise.
+ 	(dump_gimple_omp_block): Likewise.
+ 	(pp_gimple_stmt_1): Likewise.
+ 	* gimple-walk.c (walk_gimple_stmt): Likewise.
+ 	* gimple.c (gimple_build_omp_grid_body): Removed function.
+ 	(gimple_copy): Remove GIMPLE_OMP_GRID_BODY case.
+ 	* gimple.def (GIMPLE_OMP_GRID_BODY): Removed.
+ 	* gimple.h (gf_mask): Removed GF_OMP_PARALLEL_GRID_PHONY,
+ 	OMP_FOR_KIND_GRID_LOOP, GF_OMP_FOR_GRID_PHONY,
+ 	GF_OMP_FOR_GRID_INTRA_GROUP, GF_OMP_FOR_GRID_GROUP_ITER and
+ 	GF_OMP_TEAMS_GRID_PHONY.  Renumbered GF_OMP_FOR_KIND_SIMD and
+ 	GF_OMP_TEAMS_HOST.
+ 	(gimple_build_omp_grid_body): Removed declaration.
+ 	(gimple_has_substatements): Remove GIMPLE_OMP_GRID_BODY case.
+ 	(gimple_omp_for_grid_phony): Removed.
+ 	(gimple_omp_for_set_grid_phony): Likewise.
+ 	(gimple_omp_for_grid_intra_group): Likewise.
+ 	(gimple_omp_for_grid_intra_group): Likewise.
+ 	(gimple_omp_for_grid_group_iter): Likewise.
+ 	(gimple_omp_for_set_grid_group_iter): Likewise.
+ 	(gimple_omp_parallel_grid_phony): Likewise.
+ 	(gimple_omp_parallel_set_grid_phony): Likewise.
+ 	(gimple_omp_teams_grid_phony): Likewise.
+ 	(gimple_omp_teams_set_grid_phony): Likewise.
+ 	(CASE_GIMPLE_OMP): Remove GIMPLE_OMP_GRID_BODY case.
+ 	* lto-section-in.c (lto_section_name): Removed hsa.
+ 	* lto-streamer.h (lto_section_type): Removed LTO_section_ipa_hsa.
+ 	* lto-wrapper.c (compile_images_for_offload_targets): Remove special
+ 	handling of hsa.
+ 	* omp-expand.c: Do not include hsa-common.h and gt-omp-expand.h.
+ 	(parallel_needs_hsa_kernel_p): Removed.
+ 	(grid_launch_attributes_trees): Likewise.
+ 	(grid_launch_attributes_trees): Likewise.
+ 	(grid_create_kernel_launch_attr_types): Likewise.
+ 	(grid_insert_store_range_dim): Likewise.
+ 	(grid_get_kernel_launch_attributes): Likewise.
+ 	(get_target_arguments): Remove code passing HSA grid sizes.
+ 	(grid_expand_omp_for_loop): Remove.
+ 	(grid_arg_decl_map): Likewise.
+ 	(grid_remap_kernel_arg_accesses): Likewise.
+ 	(grid_expand_target_grid_body): Likewise.
+ 	(expand_omp): Remove call to grid_expand_target_grid_body.
+ 	(omp_make_gimple_edges): Remove GIMPLE_OMP_GRID_BODY case.
+ 	* omp-general.c: Do not include hsa-common.h.
+ 	(omp_maybe_offloaded): Do not check for HSA offloading.
+ 	(omp_context_selector_matches): Likewise.
+ 	* omp-low.c: Do not include hsa-common.h and omp-grid.h.
+ 	(build_outer_var_ref): Remove handling of GIMPLE_OMP_GRID_BODY.
+ 	(scan_sharing_clauses): Remove handling of OMP_CLAUSE__GRIDDIM_.
+ 	(scan_omp_parallel): Remove handling of the phoney variant.
+ 	(check_omp_nesting_restrictions): Remove handling of
+ 	GIMPLE_OMP_GRID_BODY and GF_OMP_FOR_KIND_GRID_LOOP.
+ 	(scan_omp_1_stmt): Remove handling of GIMPLE_OMP_GRID_BODY.
+ 	(lower_omp_for_lastprivate): Remove handling of gridified loops.
+ 	(lower_omp_for): Remove phony loop handling.
+ 	(lower_omp_taskreg): Remove phony construct handling.
+ 	(lower_omp_teams): Likewise.
+ 	(lower_omp_grid_body): Removed.
+ 	(lower_omp_1): Remove GIMPLE_OMP_GRID_BODY case.
+ 	(execute_lower_omp): Do not call omp_grid_gridify_all_targets.
+ 	* opts.c (common_handle_option): Do not handle hsa when processing
+ 	OPT_foffload_.
+ 	* params.opt (hsa-gen-debug-stores): Remove.
+ 	* passes.def: Remove pass_ipa_hsa and pass_gen_hsail.
+ 	* timevar.def: Remove TV_IPA_HSA.
+ 	* toplev.c: Do not include hsa-common.h.
+ 	(compile_file): Do not call hsa_output_brig.
+ 	* tree-core.h (enum omp_clause_code): Remove OMP_CLAUSE__GRIDDIM_.
+ 	(tree_omp_clause): Remove union field dimension.
+ 	* tree-nested.c (convert_nonlocal_omp_clauses): Remove the
+ 	OMP_CLAUSE__GRIDDIM_ case.
+ 	(convert_local_omp_clauses): Likewise.
+ 	* tree-pass.h (make_pass_gen_hsail): Remove declaration.
+ 	(make_pass_ipa_hsa): Likewise.
+ 	* tree-pretty-print.c (dump_omp_clause): Remove GIMPLE_OMP_GRID_BODY
+ 	case.
+ 	* tree.c (omp_clause_num_ops): Remove the element corresponding to
+ 	OMP_CLAUSE__GRIDDIM_.
+ 	(omp_clause_code_name): Likewise.
+ 	(walk_tree_1): Remove GIMPLE_OMP_GRID_BODY case.
+ 	* tree.h (OMP_CLAUSE__GRIDDIM__DIMENSION): Remove.
+ 	(OMP_CLAUSE__GRIDDIM__SIZE): Likewise.
+ 	(OMP_CLAUSE__GRIDDIM__GROUP): Likewise.
+ 
+ 2020-08-03  Bu Le  <bule1@huawei.com>
+ 
+ 	* config/aarch64/aarch64-sve.md (sub<mode>3): Add support for
+ 	unpacked vectors.
+ 
+ 2020-08-03  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.h (ASM_SPEC): Don't pass on "-md" option.
+ 
+ 2020-08-03  Yunde Zhong  <zhongyunde@huawei.com>
+ 
+ 	PR rtl-optimization/95696
+ 	* regrename.c (regrename_analyze): New param include_all_block_p
+ 	with default value TRUE.  If set to false, avoid disrupting SMS
+ 	schedule.
+ 	* regrename.h (regrename_analyze): Adjust prototype.
+ 
+ 2020-08-03  Wei Wentao  <weiwt.fnst@cn.fujitsu.com>
+ 
+ 	* doc/tm.texi.in (VECTOR_STORE_FLAG_VALUE): Fix a typo.
+ 	* doc/tm.texi: Regenerate.
+ 
+ 2020-08-03  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* doc/invoke.texi: Add missing comma after octeontx2f95mm entry.
+ 
+ 2020-08-03  Qian jianhua  <qianjh@cn.fujitsu.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (a64fx): New core.
+ 	* config/aarch64/aarch64-tune.md: Regenerated.
+ 	* config/aarch64/aarch64.c (a64fx_prefetch_tune, a64fx_tunings): New.
+ 	* doc/invoke.texi: Add a64fx to the list.
+ 
+ 2020-08-03  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR rtl-optimization/61494
+ 	* simplify-rtx.c (simplify_binary_operation_1) [MINUS]: Don't
+ 	simplify x - 0.0 with -fsignaling-nans.
+ 
+ 2020-08-03  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* genmatch.c (decision_tree::gen): Emit stub functions for
+ 	tree code operand counts that have no simplifications.
+ 	(main): Correct comment typo.
+ 
+ 2020-08-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* gimple-ssa-sprintf.c: Fix typos in comments.
+ 
+ 2020-08-03  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/driver-aarch64.c (readline): Check return value fgets.
+ 
+ 2020-08-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	* doc/match-and-simplify.texi: Amend accordingly.
+ 
+ 2020-08-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	* genmatch.c (parser::gimple): New.
+ 	(parser::parser): Initialize gimple flag member.
+ 	(parser::parse_expr): Error on ! operator modifier when
+ 	not targeting GIMPLE.
+ 	(main): Pass down gimple flag to parser ctor.
+ 
+ 2020-08-03  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* Makefile.in (GTFILES): Move value-range.h up.
+ 	* gengtype-lex.l: Set yylval to handle GTY markers on templates.
+ 	* ipa-cp.c (initialize_node_lattices): Call value_range
+ 	constructor.
+ 	(ipcp_propagate_stage): Use in-place new so value_range construct
+ 	is called.
+ 	* ipa-fnsummary.c (evaluate_conditions_for_known_args): Use std
+ 	vec instead of GCC's vec<>.
+ 	(evaluate_properties_for_edge): Adjust for std vec.
+ 	(ipa_fn_summary_t::duplicate): Same.
+ 	(estimate_ipcp_clone_size_and_time): Same.
+ 	* ipa-prop.c (ipa_get_value_range): Use in-place new for
+ 	value_range.
+ 	* ipa-prop.h (struct GTY): Remove class keyword for m_vr.
+ 	* range-op.cc (empty_range_check): Rename to...
+ 	(empty_range_varying): ...this and adjust for varying.
+ 	(undefined_shift_range_check): Adjust for irange.
+ 	(range_operator::wi_fold): Same.
+ 	(range_operator::fold_range): Adjust for irange.  Special case
+ 	single pairs for performance.
+ 	(range_operator::op1_range): Adjust for irange.
+ 	(range_operator::op2_range): Same.
+ 	(value_range_from_overflowed_bounds): Same.
+ 	(value_range_with_overflow): Same.
+ 	(create_possibly_reversed_range): Same.
+ 	(range_true): Same.
+ 	(range_false): Same.
+ 	(range_true_and_false): Same.
+ 	(get_bool_state):  Adjust for irange and tweak for performance.
+ 	(operator_equal::fold_range): Adjust for irange.
+ 	(operator_equal::op1_range): Same.
+ 	(operator_equal::op2_range): Same.
+ 	(operator_not_equal::fold_range): Same.
+ 	(operator_not_equal::op1_range): Same.
+ 	(operator_not_equal::op2_range): Same.
+ 	(build_lt): Same.
+ 	(build_le): Same.
+ 	(build_gt): Same.
+ 	(build_ge): Same.
+ 	(operator_lt::fold_range): Same.
+ 	(operator_lt::op1_range): Same.
+ 	(operator_lt::op2_range): Same.
+ 	(operator_le::fold_range): Same.
+ 	(operator_le::op1_range): Same.
+ 	(operator_le::op2_range): Same.
+ 	(operator_gt::fold_range): Same.
+ 	(operator_gt::op1_range): Same.
+ 	(operator_gt::op2_range): Same.
+ 	(operator_ge::fold_range): Same.
+ 	(operator_ge::op1_range): Same.
+ 	(operator_ge::op2_range): Same.
+ 	(operator_plus::wi_fold): Same.
+ 	(operator_plus::op1_range): Same.
+ 	(operator_plus::op2_range): Same.
+ 	(operator_minus::wi_fold): Same.
+ 	(operator_minus::op1_range): Same.
+ 	(operator_minus::op2_range): Same.
+ 	(operator_min::wi_fold): Same.
+ 	(operator_max::wi_fold): Same.
+ 	(cross_product_operator::wi_cross_product): Same.
+ 	(operator_mult::op1_range): New.
+ 	(operator_mult::op2_range): New.
+ 	(operator_mult::wi_fold): Adjust for irange.
+ 	(operator_div::wi_fold): Same.
+ 	(operator_exact_divide::op1_range): Same.
+ 	(operator_lshift::fold_range): Same.
+ 	(operator_lshift::wi_fold): Same.
+ 	(operator_lshift::op1_range): New.
+ 	(operator_rshift::op1_range): New.
+ 	(operator_rshift::fold_range): Adjust for irange.
+ 	(operator_rshift::wi_fold): Same.
+ 	(operator_cast::truncating_cast_p): Abstract out from
+ 	operator_cast::fold_range.
+ 	(operator_cast::fold_range): Adjust for irange and tweak for
+ 	performance.
+ 	(operator_cast::inside_domain_p): Abstract out from fold_range.
+ 	(operator_cast::fold_pair): Same.
+ 	(operator_cast::op1_range): Use abstracted methods above.  Adjust
+ 	for irange and tweak for performance.
+ 	(operator_logical_and::fold_range): Adjust for irange.
+ 	(operator_logical_and::op1_range): Same.
+ 	(operator_logical_and::op2_range): Same.
+ 	(unsigned_singleton_p): New.
+ 	(operator_bitwise_and::remove_impossible_ranges): New.
+ 	(operator_bitwise_and::fold_range): New.
+ 	(wi_optimize_and_or):  Adjust for irange.
+ 	(operator_bitwise_and::wi_fold): Same.
+ 	(set_nonzero_range_from_mask): New.
+ 	(operator_bitwise_and::simple_op1_range_solver): New.
+ 	(operator_bitwise_and::op1_range): Adjust for irange.
+ 	(operator_bitwise_and::op2_range): Same.
+ 	(operator_logical_or::fold_range): Same.
+ 	(operator_logical_or::op1_range): Same.
+ 	(operator_logical_or::op2_range): Same.
+ 	(operator_bitwise_or::wi_fold): Same.
+ 	(operator_bitwise_or::op1_range): Same.
+ 	(operator_bitwise_or::op2_range): Same.
+ 	(operator_bitwise_xor::wi_fold): Same.
+ 	(operator_bitwise_xor::op1_range): New.
+ 	(operator_bitwise_xor::op2_range): New.
+ 	(operator_trunc_mod::wi_fold):  Adjust for irange.
+ 	(operator_logical_not::fold_range): Same.
+ 	(operator_logical_not::op1_range): Same.
+ 	(operator_bitwise_not::fold_range): Same.
+ 	(operator_bitwise_not::op1_range): Same.
+ 	(operator_cst::fold_range): Same.
+ 	(operator_identity::fold_range): Same.
+ 	(operator_identity::op1_range): Same.
+ 	(class operator_unknown): New.
+ 	(operator_unknown::fold_range): New.
+ 	(class operator_abs): Adjust for irange.
+ 	(operator_abs::wi_fold): Same.
+ 	(operator_abs::op1_range): Same.
+ 	(operator_absu::wi_fold): Same.
+ 	(class operator_negate): Same.
+ 	(operator_negate::fold_range): Same.
+ 	(operator_negate::op1_range): Same.
+ 	(operator_addr_expr::fold_range): Same.
+ 	(operator_addr_expr::op1_range): Same.
+ 	(pointer_plus_operator::wi_fold): Same.
+ 	(pointer_min_max_operator::wi_fold): Same.
+ 	(pointer_and_operator::wi_fold): Same.
+ 	(pointer_or_operator::op1_range): New.
+ 	(pointer_or_operator::op2_range): New.
+ 	(pointer_or_operator::wi_fold):  Adjust for irange.
+ 	(integral_table::integral_table): Add entries for IMAGPART_EXPR
+ 	and POINTER_DIFF_EXPR.
+ 	(range_cast):  Adjust for irange.
+ 	(build_range3): New.
+ 	(range3_tests): New.
+ 	(widest_irange_tests): New.
+ 	(multi_precision_range_tests): New.
+ 	(operator_tests): New.
+ 	(range_tests): New.
+ 	* range-op.h (class range_operator): Adjust for irange.
+ 	(range_cast): Same.
+ 	* tree-vrp.c (range_fold_binary_symbolics_p): Adjust for irange and
+ 	tweak for performance.
+ 	(range_fold_binary_expr): Same.
+ 	(masked_increment): Change to extern.
+ 	* tree-vrp.h (masked_increment): New.
+ 	* tree.c (cache_wide_int_in_type_cache): New function abstracted
+ 	out from wide_int_to_tree_1.
+ 	(wide_int_to_tree_1): Cache 0, 1, and MAX for pointers.
+ 	* value-range-equiv.cc (value_range_equiv::deep_copy): Use kind
+ 	method.
+ 	(value_range_equiv::move): Same.
+ 	(value_range_equiv::check): Adjust for irange.
+ 	(value_range_equiv::intersect): Same.
+ 	(value_range_equiv::union_): Same.
+ 	(value_range_equiv::dump): Same.
+ 	* value-range.cc (irange::operator=): Same.
+ 	(irange::maybe_anti_range): New.
+ 	(irange::copy_legacy_range): New.
+ 	(irange::set_undefined): Adjust for irange.
+ 	(irange::swap_out_of_order_endpoints): Abstract out from set().
+ 	(irange::set_varying): Adjust for irange.
+ 	(irange::irange_set): New.
+ 	(irange::irange_set_anti_range): New.
+ 	(irange::set): Adjust for irange.
+ 	(value_range::set_nonzero): Move to header file.
+ 	(value_range::set_zero): Move to header file.
+ 	(value_range::check): Rename to...
+ 	(irange::verify_range): ...this.
+ 	(value_range::num_pairs): Rename to...
+ 	(irange::legacy_num_pairs): ...this, and adjust for irange.
+ 	(value_range::lower_bound): Rename to...
+ 	(irange::legacy_lower_bound): ...this, and adjust for irange.
+ 	(value_range::upper_bound): Rename to...
+ 	(irange::legacy_upper_bound): ...this, and adjust for irange.
+ 	(value_range::equal_p): Rename to...
+ 	(irange::legacy_equal_p): ...this.
+ 	(value_range::operator==): Move to header file.
+ 	(irange::equal_p): New.
+ 	(irange::symbolic_p): Adjust for irange.
+ 	(irange::constant_p): Same.
+ 	(irange::singleton_p): Same.
+ 	(irange::value_inside_range): Same.
+ 	(irange::may_contain_p): Same.
+ 	(irange::contains_p): Same.
+ 	(irange::normalize_addresses): Same.
+ 	(irange::normalize_symbolics): Same.
+ 	(irange::legacy_intersect): Same.
+ 	(irange::legacy_union): Same.
+ 	(irange::union_): Same.
+ 	(irange::intersect): Same.
+ 	(irange::irange_union): New.
+ 	(irange::irange_intersect): New.
+ 	(subtract_one): New.
+ 	(irange::invert): Adjust for irange.
+ 	(dump_bound_with_infinite_markers): New.
+ 	(irange::dump): Adjust for irange.
+ 	(debug): Add irange versions.
+ 	(range_has_numeric_bounds_p): Adjust for irange.
+ 	(vrp_val_max): Move to header file.
+ 	(vrp_val_min): Move to header file.
+ 	(DEFINE_INT_RANGE_GC_STUBS): New.
+ 	(DEFINE_INT_RANGE_INSTANCE): New.
+ 	* value-range.h (class irange): New.
+ 	(class int_range): New.
+ 	(class value_range): Rename to a instantiation of int_range.
+ 	(irange::legacy_mode_p): New.
+ 	(value_range::value_range): Remove.
+ 	(irange::kind): New.
+ 	(irange::num_pairs): Adjust for irange.
+ 	(irange::type): Adjust for irange.
+ 	(irange::tree_lower_bound): New.
+ 	(irange::tree_upper_bound): New.
+ 	(irange::type): Adjust for irange.
+ 	(irange::min): Same.
+ 	(irange::max): Same.
+ 	(irange::varying_p): Same.
+ 	(irange::undefined_p): Same.
+ 	(irange::zero_p): Same.
+ 	(irange::nonzero_p): Same.
+ 	(irange::supports_type_p): Same.
+ 	(range_includes_zero_p): Same.
+ 	(gt_ggc_mx): New.
+ 	(gt_pch_nx): New.
+ 	(irange::irange): New.
+ 	(int_range::int_range): New.
+ 	(int_range::operator=): New.
+ 	(irange::set): Moved from value-range.cc and adjusted for irange.
+ 	(irange::set_undefined): Same.
+ 	(irange::set_varying): Same.
+ 	(irange::operator==): Same.
+ 	(irange::lower_bound): Same.
+ 	(irange::upper_bound): Same.
+ 	(irange::union_): Same.
+ 	(irange::intersect): Same.
+ 	(irange::set_nonzero): Same.
+ 	(irange::set_zero): Same.
+ 	(irange::normalize_min_max): New.
+ 	(vrp_val_max): Move from value-range.cc.
+ 	(vrp_val_min): Same.
+ 	* vr-values.c (vr_values::get_lattice_entry): Call value_range
+ 	constructor.
+ 
+ 2020-08-02  Sergei Trofimovich  <siarheit@google.com>
+ 
+ 	PR bootstrap/96404
+ 	* var-tracking.c (vt_find_locations): Fully initialize
+ 	all 'in_pending' bits.
+ 
+ 2020-08-01  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* symtab.c (symtab_node::verify_base): Verify order.
+ 	(symtab_node::verify_symtab_nodes): Verify order.
+ 
+ 2020-08-01  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* predict.c (estimate_bb_frequencies): Cap recursive calls by 90%.
+ 
+ 2020-08-01  Jojo R  <jiejie_rong@c-sky.com>
+ 
+ 	* config/csky/csky_opts.h (float_abi_type): New.
+ 	* config/csky/csky.h (TARGET_SOFT_FLOAT): New.
+ 	(TARGET_HARD_FLOAT): New.
+ 	(TARGET_HARD_FLOAT_ABI): New.
+ 	(OPTION_DEFAULT_SPECS): Use mfloat-abi.
+ 	* config/csky/csky.opt (mfloat-abi): New.
+ 	* doc/invoke.texi (C-SKY Options): Document -mfloat-abi=.
+ 
+ 2020-08-01  Cooper Qu  <cooper.qu@linux.alibaba.com>
+ 
+ 	* config/csky/t-csky-linux: Delete big endian CPUs' multilib.
+ 
+ 2020-07-31  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/90928
+ 	* config/nvptx/nvptx.c (nvptx_truly_noop_truncation): Implement.
+ 	(TARGET_TRULY_NOOP_TRUNCATION): Define.
+ 
+ 2020-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/96383
+ 	* langhooks-def.h (lhd_finalize_early_debug): Declare.
+ 	(LANG_HOOKS_FINALIZE_EARLY_DEBUG): Define.
+ 	(LANG_HOOKS_INITIALIZER): Amend.
+ 	* langhooks.c: Include cgraph.h and debug.h.
+ 	(lhd_finalize_early_debug): Default implementation from
+ 	former code in finalize_compilation_unit.
+ 	* langhooks.h (lang_hooks::finalize_early_debug): Add.
+ 	* cgraphunit.c (symbol_table::finalize_compilation_unit):
+ 	Call the finalize_early_debug langhook.
+ 
+ 2020-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	* genmatch.c (expr::force_leaf): Add and initialize.
+ 	(expr::gen_transform): Honor force_leaf by passing
+ 	NULL as sequence argument to maybe_push_res_to_seq.
+ 	(parser::parse_expr): Allow ! marker on result expression
+ 	operations.
+ 	* doc/match-and-simplify.texi: Amend.
+ 
+ 2020-07-31  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* tree-vect-loop.c (vect_get_known_peeling_cost): Don't consider branch
+ 	taken costs for prologue and epilogue if they don't exist.
+ 	(vect_estimate_min_profitable_iters): Likewise.
+ 
+ 2020-07-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cgraph.h: Remove leading empty lines.
+ 	* cgraphunit.c (enum cgraph_order_sort_kind): Remove
+ 	ORDER_UNDEFINED.
+ 	(struct cgraph_order_sort): Add constructors.
+ 	(cgraph_order_sort::process): New.
+ 	(cgraph_order_cmp): New.
+ 	(output_in_order): Simplify and push nodes to vector.
+ 
+ 2020-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/96369
+ 	* fold-const.c (fold_range_test): Special-case constant
+ 	LHS for short-circuiting operations.
+ 
+ 2020-07-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov-io.h (GCOV_PREALLOCATED_KVP): New.
+ 
+ 2020-07-31  Zhiheng Xie  <xiezhiheng@huawei.com>
+ 
+ 	* config/aarch64/aarch64-builtins.c (aarch64_general_add_builtin):
+ 	Add new argument ATTRS.
+ 	(aarch64_call_properties): New function.
+ 	(aarch64_modifies_global_state_p): Likewise.
+ 	(aarch64_reads_global_state_p): Likewise.
+ 	(aarch64_could_trap_p): Likewise.
+ 	(aarch64_add_attribute): Likewise.
+ 	(aarch64_get_attributes): Likewise.
+ 	(aarch64_init_simd_builtins): Add attributes for each built-in function.
+ 
+ 2020-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/78288
+ 	* var-tracking.c (vt_find_locations): Use
+ 	rev_post_order_and_mark_dfs_back_seme and separately iterate
+ 	over toplevel SCCs.
+ 
+ 2020-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	* cfganal.h (rev_post_order_and_mark_dfs_back_seme): Adjust
+ 	prototype.
+ 	* cfganal.c (rpoamdbs_bb_data): New struct with pre BB data.
+ 	(tag_header): New helper.
+ 	(cmp_edge_dest_pre): Likewise.
+ 	(rev_post_order_and_mark_dfs_back_seme): Compute SCCs,
+ 	find SCC exits and perform a DFS walk with extra edges to
+ 	compute a RPO with adjacent SCC members when requesting an
+ 	iteration optimized order and populate the toplevel SCC array.
+ 	* tree-ssa-sccvn.c (do_rpo_vn): Remove ad-hoc computation
+ 	of max_rpo and fill it in from SCC extent info instead.
+ 
+ 2020-07-30  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/altivec.h (vec_test_lsbb_all_ones): New define.
+ 	(vec_test_lsbb_all_zeros): New define.
+ 	* config/rs6000/rs6000-builtin.def (BU_P10_VSX_1): New built-in
+ 	handling macro.
+ 	(XVTLSBB_ZEROS, XVTLSBB_ONES): New builtin defines.
+ 	(xvtlsbb_all_zeros, xvtlsbb_all_ones): New builtin overloads.
+ 	* config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_XVTLSBB_ZEROS,
+ 	P10_BUILTIN_VEC_XVTLSBB_ONES): New altivec_builtin_types entries.
+ 	* config/rs6000/rs6000.md (UNSPEC_XVTLSBB):  New unspec.
+ 	* config/rs6000/vsx.md (*xvtlsbb_internal): New instruction define.
+ 	(xvtlsbbo, xvtlsbbz): New instruction expands.
+ 
+ 2020-07-30  Cooper Qu  <cooper.qu@linux.alibaba.com>
+ 
+ 	* config/riscv/riscv-opts.h (stack_protector_guard): New enum.
+ 	* config/riscv/riscv.c (riscv_option_override): Handle
+ 	the new options.
+ 	* config/riscv/riscv.md (stack_protect_set): New pattern to handle
+ 	flexible stack protector guard settings.
+ 	(stack_protect_set_<mode>): Ditto.
+ 	(stack_protect_test): Ditto.
+ 	(stack_protect_test_<mode>): Ditto.
+ 	* config/riscv/riscv.opt (mstack-protector-guard=,
+ 	mstack-protector-guard-reg=, mstack-protector-guard-offset=): New
+ 	options.
+ 	* doc/invoke.texi (Option Summary) [RISC-V Options]:
+ 	Add -mstack-protector-guard=, -mstack-protector-guard-reg=, and
+ 	-mstack-protector-guard-offset=.
+ 	(RISC-V Options): Ditto.
+ 
+ 2020-07-30  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR bootstrap/96202
+ 	* configure: Regenerated.
+ 
+ 2020-07-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96370
+ 	* tree-ssa-reassoc.c (rewrite_expr_tree): Add operation
+ 	code parameter and use it instead of picking it up from
+ 	the stmt that is being rewritten.
+ 	(reassociate_bb): Pass down the operation code.
+ 
+ 2020-07-30  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.md (nvptx_vector_index_operand): New predicate.
+ 	(VECELEM): New mode attribute for a vector's uppercase element mode.
+ 	(Vecelem): New mode attribute for a vector's lowercase element mode.
+ 	(*vec_set<mode>_0, *vec_set<mode>_1, *vec_set<mode>_2)
+ 	(*vec_set<mode>_3): New instructions.
+ 	(vec_set<mode>): New expander to generate one of the above insns.
+ 	(vec_extract<mode><Vecelem>): New instruction.
+ 
+ 2020-07-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/95435
+ 	* config/i386/x86-tune-costs.h: Use libcall for large sizes for
+ 	-m32. Start using libcall from 128+ bytes.
+ 
+ 2020-07-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/i386/x86-tune-costs.h: Change code formatting.
+ 
+ 2020-07-29  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/nvptx/nvptx.md (recip<mode>2): New instruction.
+ 
+ 2020-07-29  Fangrui Song  <maskray@google.com>
+ 
+ 	PR debug/95096
+ 	* opts.c (common_handle_option): Don't make -gsplit-dwarf imply -g.
+ 	* doc/invoke.texi (-gsplit-dwarf): Update documentation.
+ 
+ 2020-07-29  Joe Ramsay  <joe.ramsay@arm.com>
+ 
+ 	* config/arm/arm-protos.h (arm_coproc_mem_operand_no_writeback):
+ 	Declare prototype.
+ 	(arm_mve_mode_and_operands_type_check): Declare prototype.
+ 	* config/arm/arm.c (arm_coproc_mem_operand): Refactor to use
+ 	_arm_coproc_mem_operand.
+ 	(arm_coproc_mem_operand_wb): New function to cover full, limited
+ 	and no writeback.
+ 	(arm_coproc_mem_operand_no_writeback): New constraint for memory
+ 	operand with no writeback.
+ 	(arm_print_operand): Extend 'E' specifier for memory operand
+ 	that does not support writeback.
+ 	(arm_mve_mode_and_operands_type_check): New constraint check for
+ 	MVE memory operands.
+ 	* config/arm/constraints.md: Add Uj constraint for VFP vldr.16
+ 	and vstr.16.
+ 	* config/arm/vfp.md (*mov_load_vfp_hf16): New pattern for
+ 	vldr.16.
+ 	(*mov_store_vfp_hf16): New pattern for vstr.16.
+ 	(*mov<mode>_vfp_<mode>16): Remove MVE moves.
+ 
+ 2020-07-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96349
+ 	* tree-ssa-loop-split.c (stmt_semi_invariant_p_1): When the
+ 	condition runs into a loop PHI with an abnormal entry value give up.
+ 
+ 2020-07-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.c (vectorize_loops): Reset the SCEV
+ 	cache if we removed any SIMD UID SSA defs.
+ 	* gimple-loop-interchange.cc (pass_linterchange::execute):
+ 	Reset the scev cache if we interchanged a loop.
+ 
+ 2020-07-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95679
+ 	* tree-ssa-propagate.h
+ 	(substitute_and_fold_engine::propagate_into_phi_args): Return
+ 	whether anything changed.
+ 	* tree-ssa-propagate.c
+ 	(substitute_and_fold_engine::propagate_into_phi_args): Likewise.
+ 	(substitute_and_fold_dom_walker::before_dom_children): Update
+ 	something_changed.
+ 
+ 2020-07-29  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
+ 	Ensure that loop variable npeel_tmp advances in each iteration.
+ 
+ 2020-07-29  Hans-Peter Nilsson  <hp@bitrange.com>
+ 
+ 	* config/mmix/mmix.h (NO_FUNCTION_CSE): Define to 1.
+ 
+ 2020-07-29  Hans-Peter Nilsson  <hp@bitrange.com>
+ 
+ 	* config/mmix/mmix.h (ASM_OUTPUT_EXTERNAL): Define to
+ 	default_elf_asm_output_external.
+ 
+ 2020-07-28  Sergei Trofimovich  <siarheit@google.com>
+ 
+ 	PR ipa/96291
+ 	* ipa-cp.c (has_undead_caller_from_outside_scc_p): Consider
+ 	unoptimized callers as undead.
+ 
+ 2020-07-28  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	* match.pd (popcount(x)&1 -> parity(x)): New simplification.
+ 	(parity(~x) -> parity(x)): New simplification.
+ 	(parity(x)^parity(y) -> parity(x^y)): New simplification.
+ 	(parity(x&1) -> x&1): New simplification.
+ 	(popcount(x) -> x>>C): New simplification.
+ 
+ 2020-07-28  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.md (extendqihi2): New instruction.
+ 	(ashl<mode>3, ashr<mode>3, lshr<mode>3): Support HImode.
+ 
+ 2020-07-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/96335
+ 	* calls.c (maybe_warn_rdwr_sizes): Add FNDECL and FNTYPE arguments,
+ 	instead of trying to rediscover them in the body.
+ 	(initialize_argument_information): Adjust caller.
+ 
+ 2020-07-28  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* tree-vect-loop.c (vect_get_known_peeling_cost): Factor out some code
+ 	to determine peel_iters_epilogue to...
+ 	(vect_get_peel_iters_epilogue): ...this new function.
+ 	(vect_estimate_min_profitable_iters): Refactor cost calculation on
+ 	peel_iters_prologue and peel_iters_epilogue.
+ 
+ 2020-07-27  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/84079
+ 	* gimple-array-bounds.cc (array_bounds_checker::check_addr_expr):
+ 	Only allow just-past-the-end references for the most significant
+ 	array bound.
+ 
+ 2020-07-27  Hu Jiangping  <hujiangping@cn.fujitsu.com>
+ 
+ 	PR driver/96247
+ 	* opts.c (check_alignment_argument): Set the -falign-Name
+ 	on/off flag on and set the -falign-Name string value null,
+ 	when the command-line specified argument is zero.
+ 
+ 2020-07-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/96058
+ 	* expr.c (string_constant): Build string_constant only
+ 	for a type that has same precision as char_type_node
+ 	and is an integral type.
+ 
+ 2020-07-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	* var-tracking.c (variable_tracking_main_1): Remove call
+ 	to mark_dfs_back_edges.
+ 
+ 2020-07-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/96128
+ 	* tree-vect-generic.c (expand_vector_comparison): Do not expand
+ 	vector comparison with VEC_COND_EXPR.
+ 
+ 2020-07-27  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR bootstrap/96203
+ 	* common.opt: Add -fcf-protection=check.
+ 	* flag-types.h (cf_protection_level): Add CF_CHECK.
+ 	* lto-wrapper.c (merge_and_complain): Issue an error for
+ 	mismatching -fcf-protection values with -fcf-protection=check.
+ 	Otherwise, merge -fcf-protection values.
+ 	* doc/invoke.texi: Document -fcf-protection=check.
+ 
+ 2020-07-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/45375
+ 	* symbol-summary.h: Call vec_safe_reserve before grow is called
+ 	in order to grow to a reasonable size.
+ 	* vec.h (vec_safe_reserve): Add missing function for vl_ptr
+ 	type.
+ 
+ 2020-07-26  Hans-Peter Nilsson  <hp@bitrange.com>
+ 
+ 	* configure.ac (out-of-tree linker .hidden support): Don't turn off
+ 	for mmix-knuth-mmixware.
+ 	* configure: Regenerate.
+ 
+ 2020-07-26  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+ 	Set the default value for -mblock-ops-unaligned-vsx.
+ 	* config/rs6000/rs6000.opt: Add -mblock-ops-unaligned-vsx.
+ 	* doc/invoke.texi: Document -mblock-ops-unaligned-vsx.
+ 
+ 2020-07-25  Hans-Peter Nilsson  <hp@bitrange.com>
+ 
+ 	* config/mmix/mmix.c (TARGET_ASM_OUTPUT_IDENT): Override the default
+ 	with default_asm_output_ident_directive.
+ 
+ 2020-07-25  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn.c (gcn_scalar_mode_supported_p): New function.
+ 	(TARGET_SCALAR_MODE_SUPPORTED_P): New define.
+ 
+ 2020-07-24  David Edelsohn  <dje.gcc@gmail.com>
+ 	    Clement Chigot  <clement.chigot@atos.net>
+ 
+ 	* config.gcc (powerpc-ibm-aix7.1): Use t-aix64 and biarch64 for
+ 	cpu_is_64bit.
+ 	* config/rs6000/aix71.h (ASM_SPEC): Remove aix64 option.
+ 	(ASM_SPEC32): New.
+ 	(ASM_SPEC64): New.
+ 	(ASM_CPU_SPEC): Remove vsx and altivec options.
+ 	(CPP_SPEC_COMMON): Rename from CPP_SPEC.
+ 	(CPP_SPEC32): New.
+ 	(CPP_SPEC64): New.
+ 	(CPLUSPLUS_CPP_SPEC): Rename to CPLUSPLUS_CPP_SPEC_COMMON..
+ 	(TARGET_DEFAULT): Use 64 bit mask if BIARCH.
+ 	(LIB_SPEC_COMMON): Rename from LIB_SPEC.
+ 	(LIB_SPEC32): New.
+ 	(LIB_SPEC64): New.
+ 	(LINK_SPEC_COMMON): Rename from LINK_SPEC.
+ 	(LINK_SPEC32): New.
+ 	(LINK_SPEC64): New.
+ 	(STARTFILE_SPEC): Add 64 bit version of crtcxa and crtdbase.
+ 	(ASM_SPEC): Define 32 and 64 bit alternatives using DEFAULT_ARCH64_P.
+ 	(CPP_SPEC): Same.
+ 	(CPLUSPLUS_CPP_SPEC): Same.
+ 	(LIB_SPEC): Same.
+ 	(LINK_SPEC): Same.
+ 	(SUBTARGET_EXTRA_SPECS): Add new 32/64 specs.
+ 	* config/rs6000/aix72.h (TARGET_DEFAULT): Use 64 bit mask if BIARCH.
+ 	* config/rs6000/defaultaix64.h: Delete.
+ 
+ 2020-07-24  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.opt: Delete -mpower10.
+ 
+ 2020-07-24  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* config/i386/intelmic-mkoffload.c
+ 	(generate_target_descr_file): Use dumppfx for save_temps
+ 	files.  Pass -dumpbase et al down to the compiler.
+ 	(generate_target_offloadend_file): Likewise.
+ 	(generate_host_descr_file): Likewise.
+ 	(prepare_target_image): Likewise.  Move out_obj_filename
+ 	setting...
+ 	(main): ... here.  Detect -dumpbase, set dumppfx too.
+ 
+ 2020-07-24  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	PR driver/96230
+ 	* gcc.c (process_command): Adjust and document conditions to
+ 	reset dumpbase_ext.
+ 
+ 2020-07-24  Matthias Klose  <doko@ubuntu.com>
+ 
+ 	* config/aarch64/aarch64.c (+aarch64_offload_options,
+ 	TARGET_OFFLOAD_OPTIONS): New.
+ 
+ 2020-07-24  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95750
+ 	* config/i386/sync.md (mmem_thread_fence): Emit mfence_sse2 for -Os.
+ 
+ 2020-07-23  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR rtl-optimization/96298
+ 	* simplify-rtx.c (simplify_binary_operation_1) [XOR]: Xor doesn't
+ 	distribute over xor, so (a^b)^(c^b) is not the same as (a^c)^b.
+ 
+ 2020-07-23  Dong JianQiang  <dongjianqiang2@huawei.com>
+ 
+ 	PR gcov-profile/96267
+ 	* gcov-io.c (gcov_open): enable if IN_GCOV_TOOL.
+ 
+ 2020-07-23  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (adjust_vectorization_cost): Renamed to ...
+ 	(rs6000_adjust_vect_cost_per_stmt): ... here.
+ 	(rs6000_add_stmt_cost): Rename adjust_vectorization_cost to
+ 	rs6000_adjust_vect_cost_per_stmt.
+ 
+ 2020-07-23  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (get_mem_type_for_internal_fn): Handle
+ 	IFN_LEN_LOAD and IFN_LEN_STORE.
+ 	(get_alias_ptr_type_for_ptr_address): Likewise.
+ 
+ 2020-07-23  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	PR target/96260
+ 	* asan.c (asan_shadow_offset_set_p): New.
+ 	* asan.h (asan_shadow_offset_set_p): Ditto.
+ 	* toplev.c (process_options): Allow -fsanitize=kernel-address
+ 	even TARGET_ASAN_SHADOW_OFFSET not implemented, only check when
+ 	asan stack protection is enabled.
+ 
+ 2020-07-22  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/96236
+ 	* config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Handle
+ 	little-endian memory ordering.
+ 
+ 2020-07-22  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* dumpfile.c (parse_dump_option): Deal with filenames
+ 	containing '-'
+ 
+ 2020-07-22  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* incpath.c (add_path): Avoid multiple strlen calls.
+ 
+ 2020-07-22  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* expmed.c (expand_sdiv_pow2): Check return value from emit_store_flag
+ 	is not NULL_RTX before use.
+ 
+ 2020-07-22  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* expr.c (convert_modes): Allow a constant integer to be converted to
+ 	any scalar int mode.
+ 
+ 2020-07-22  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
+ 
+ 	* config/aarch64/aarch64-ldpstp.md: Add two peepholes for adjusted vector
+ 	V2SI, V2SF, V2DI, V2DF load pair and store pair modes.
+ 	* config/aarch64/aarch64-protos.h (aarch64_gen_adjusted_ldpstp):
+ 	Change mode parameter to machine_mode.
+ 	(aarch64_operands_adjust_ok_for_ldpstp): Change mode parameter to
+ 	machine_mode.
+ 	* config/aarch64/aarch64.c (aarch64_operands_adjust_ok_for_ldpstp):
+ 	Change mode parameter to machine_mode.
+ 	(aarch64_gen_adjusted_ldpstp): Change mode parameter to machine_mode.
+ 	* config/aarch64/iterators.md (VP_2E): New iterator for 2 element vectors.
+ 
+ 2020-07-22  Wei Wentao  <weiwt.fnst@cn.fujitsu.com>
+ 
+ 	* doc/languages.texi: Fix “then”/“than” typo.
+ 
+ 2020-07-21  Sunil K Pandey  <skpgkp2@gmail.com>
+ 
+ 	PR target/95237
+ 	* config/i386/i386-protos.h (ix86_local_alignment): Add
+ 	another function parameter may_lower alignment. Default is
+ 	false.
+ 	* config/i386/i386.c (ix86_lower_local_decl_alignment): New
+ 	function.
+ 	(ix86_local_alignment): Amend ix86_local_alignment to accept
+ 	another parameter may_lower. If may_lower is true, new align
+ 	may be lower than incoming alignment. If may_lower is false,
+ 	new align will be greater or equal to incoming alignment.
+ 	(TARGET_LOWER_LOCAL_DECL_ALIGNMENT): Define.
+ 	* doc/tm.texi: Regenerate.
+ 	* doc/tm.texi.in (TARGET_LOWER_LOCAL_DECL_ALIGNMENT): New
+ 	hook.
+ 	* target.def (lower_local_decl_alignment): New hook.
+ 
+ 2020-07-21  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95750
+ 	* config/i386/sync.md (mfence_sse2): Enable for
+ 	TARGET_64BIT and TARGET_SSE2.
+ 	(mfence_nosse): Always enable.
+ 
+ 2020-07-21  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430-protos.h (msp430_do_not_relax_short_jumps):
+ 	Remove.
+ 	* config/msp430/msp430.c (msp430_do_not_relax_short_jumps): Likewise.
+ 	* config/msp430/msp430.md (cbranchhi4_real): Remove special case for
+ 	msp430_do_not_relax_short_jumps.
+ 
+ 2020-07-21  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.md: New "extendqipsi2" define_insn.
+ 
+ 2020-07-21  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.h (NO_FUNCTION_CSE): Set to true at -O2 and
+ 	above.
+ 
+ 2020-07-21  Xionghu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	PR rtl-optimization/89310
+ 	* config/rs6000/rs6000.md (movsf_from_si2): New define_insn_and_split.
+ 
+ 2020-07-20  Hans-Peter Nilsson  <hp@bitrange.com>
+ 
+ 	* config/mmix/mmix.c (mmix_expand_prologue): Calculate the total
+ 	allocated size and set current_function_static_stack_size, if
+ 	flag_stack_usage_info.
+ 
+ 2020-07-20  Sergei Trofimovich  <siarheit@google.com>
+ 
+ 	PR target/96190
+ 	* config/sparc/linux.h (ENDFILE_SPEC): Use GNU_USER_TARGET_ENDFILE_SPEC
+ 	to get crtendS.o for !no-pie mode.
+ 	* config/sparc/linux64.h (ENDFILE_SPEC): Ditto.
+ 
+ 2020-07-20  Yang Yang  <yangyang305@huawei.com>
+ 
+ 	* tree-vect-stmts.c (vectorizable_simd_clone_call): Add
+ 	VIEW_CONVERT_EXPRs if the arguments types and return type
+ 	of simd clone function are distinct with the vectype of stmt.
+ 
+ 2020-07-20  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95750
+ 	* config/i386/i386.h (TARGET_AVOID_MFENCE):
+ 	Rename from TARGET_USE_XCHG_FOR_ATOMIC_STORE.
+ 	* config/i386/sync.md (mfence_sse2): Disable for TARGET_AVOID_MFENCE.
+ 	(mfence_nosse): Enable also for TARGET_AVOID_MFENCE. Emit stack
+ 	referred memory in word_mode.
+ 	(mem_thread_fence): Do not generate mfence_sse2 pattern when
+ 	TARGET_AVOID_MFENCE is true.
+ 	(atomic_store<mode>): Update for rename.
+ 	* config/i386/x86-tune.def (X86_TUNE_AVOID_MFENCE):
+ 	Rename from X86_TUNE_USE_XCHG_FOR_ATOMIC_STORE.
+ 
+ 2020-07-20  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/95189
+ 	PR middle-end/95886
+ 	* builtins.c (inline_expand_builtin_string_cmp): Rename...
+ 	(inline_expand_builtin_bytecmp): ...to this.
+ 	(builtin_memcpy_read_str): Don't expect data to be nul-terminated.
+ 	(expand_builtin_memory_copy_args): Handle object representations
+ 	with embedded nul bytes.
+ 	(expand_builtin_memcmp): Same.
+ 	(expand_builtin_strcmp): Adjust call to naming change.
+ 	(expand_builtin_strncmp): Same.
+ 	* expr.c (string_constant): Create empty strings with nonzero size.
+ 	* fold-const.c (c_getstr): Rename locals and update comments.
+ 	* tree.c (build_string): Accept null pointer argument.
+ 	(build_string_literal): Same.
+ 	* tree.h (build_string): Provide a default.
+ 	(build_string_literal): Same.
+ 
+ 2020-07-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* cfganal.c (rev_post_order_and_mark_dfs_back_seme): Remove
+ 	write-only post array.
+ 
+ 2020-07-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libstdc++/93121
+ 	* gimple-fold.c (fold_const_aggregate_ref_1): For COMPONENT_REF
+ 	of a bitfield not aligned on byte boundaries try to
+ 	fold_ctor_reference DECL_BIT_FIELD_REPRESENTATIVE if any and
+ 	adjust it depending on endianity.
+ 
+ 2020-07-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libstdc++/93121
+ 	* fold-const.c (native_encode_initializer): Handle bit-fields.
+ 
+ 2020-07-20  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+ 	Set param_vect_partial_vector_usage to 0 explicitly.
+ 	* doc/invoke.texi (vect-partial-vector-usage): Document new option.
+ 	* optabs-query.c (get_len_load_store_mode): New function.
+ 	* optabs-query.h (get_len_load_store_mode): New declare.
+ 	* params.opt (vect-partial-vector-usage): New.
+ 	* tree-vect-loop-manip.c (vect_set_loop_controls_directly): Add the
+ 	handlings for vectorization using length-based partial vectors, call
+ 	vect_gen_len for length generation, and rename some variables with
+ 	items instead of scalars.
+ 	(vect_set_loop_condition_partial_vectors): Add the handlings for
+ 	vectorization using length-based partial vectors.
+ 	(vect_do_peeling): Allow remaining eiters less than epilogue vf for
+ 	LOOP_VINFO_USING_PARTIAL_VECTORS_P.
+ 	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Init
+ 	epil_using_partial_vectors_p.
+ 	(_loop_vec_info::~_loop_vec_info): Call release_vec_loop_controls
+ 	for lengths destruction.
+ 	(vect_verify_loop_lens): New function.
+ 	(vect_analyze_loop): Add handlings for epilogue of loop when it's
+ 	marked to use vectorization using partial vectors.
+ 	(vect_analyze_loop_2): Add the check to allow only one vectorization
+ 	approach using partial vectorization at the same time.  Check param
+ 	vect-partial-vector-usage for partial vectors decision.  Mark
+ 	LOOP_VINFO_EPIL_USING_PARTIAL_VECTORS_P if the epilogue is
+ 	considerable to use partial vectors.  Call release_vec_loop_controls
+ 	for lengths destruction.
+ 	(vect_estimate_min_profitable_iters): Adjust for loop vectorization
+ 	using length-based partial vectors.
+ 	(vect_record_loop_mask): Init factor to 1 for vectorization using
+ 	mask-based partial vectors.
+ 	(vect_record_loop_len): New function.
+ 	(vect_get_loop_len): Likewise.
+ 	* tree-vect-stmts.c (check_load_store_for_partial_vectors): Add
+ 	checks for vectorization using length-based partial vectors.  Factor
+ 	some code to lambda function get_valid_nvectors.
+ 	(vectorizable_store): Add handlings when using length-based partial
+ 	vectors.
+ 	(vectorizable_load): Likewise.
+ 	(vect_gen_len): New function.
+ 	* tree-vectorizer.h (struct rgroup_controls): Add field factor
+ 	mainly for length-based partial vectors.
+ 	(vec_loop_lens): New typedef.
+ 	(_loop_vec_info): Add lens and epil_using_partial_vectors_p.
+ 	(LOOP_VINFO_EPIL_USING_PARTIAL_VECTORS_P): New macro.
+ 	(LOOP_VINFO_LENS): Likewise.
+ 	(LOOP_VINFO_FULLY_WITH_LENGTH_P): Likewise.
+ 	(vect_record_loop_len): New declare.
+ 	(vect_get_loop_len): Likewise.
+ 	(vect_gen_len): Likewise.
+ 
+ 2020-07-20  Hans-Peter Nilsson  <hp@bitrange.com>
+ 
+ 	* config/mmix/mmix.c (mmix_option_override): Reinstate default
+ 	integer-emitting targetm.asm_out pseudos when dumping detailed
+ 	assembly-code.
+ 	(mmix_assemble_integer): Update comment.
+ 
+ 2020-07-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/95973
+ 	PR target/96238
+ 	* config/i386/cpuid.h: Add include guard.
+ 	(__cpuidex): New.
+ 
+ 2020-07-18  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/95620
+ 	* config/i386/x86-64.h (ASM_OUTPUT_ALIGNED_DECL_LOCAL): New.
+ 
+ 2020-07-18  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/92488
+ 	* config/rs6000/dfp.md (trunctdsd2): New define_insn.
+ 	* config/rs6000/rs6000.md (define_attr "isa"): Add p9.
+ 	(define_attr "enabled"): Handle p9.
+ 
+ 2020-07-17  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* function.c (assign_parm_setup_block): Use the macro
+ 	TRULY_NOOP_TRUNCATION_MODES_P instead of calling
+ 	targetm.truly_noop_truncation directly.
+ 
+ 2020-07-17  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/96186
+ 	PR target/88713
+ 	* config/i386/sse.md (VF_AVX512VL_VF1_128_256): Renamed to ...
+ 	(VF1_AVX512ER_128_256): This.  Drop DF vector modes.
+ 	(rsqrt<mode>2): Replace VF_AVX512VL_VF1_128_256 with
+ 	VF1_AVX512ER_128_256.
+ 
+ 2020-07-17  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* doc/sourcebuild.texi (dg-set-compiler-env-var,
+ 	dg-set-target-env-var): Document.
+ 
+ 2020-07-17  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/driver-arm.c (host_detect_local_cpu): Add GCC_CPUINFO.
+ 
+ 2020-07-17  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/driver-aarch64.c (host_detect_local_cpu):
+ 	Add GCC_CPUINFO.
+ 
+ 2020-07-17  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/driver-aarch64.c (INCLUDE_SET): New.
+ 	(parse_field): Use std::string.
+ 	(split_words, readline, find_field): New.
+ 	(host_detect_local_cpu): Fix truncation issues.
+ 
+ 2020-07-17  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/mkoffload.c (EM_AMDGPU): Undefine before defining.
+ 	(ELFOSABI_AMDGPU_HSA): Likewise.
+ 	(ELFABIVERSION_AMDGPU_HSA): Likewise.
+ 	(EF_AMDGPU_MACH_AMDGCN_GFX803): Likewise.
+ 	(EF_AMDGPU_MACH_AMDGCN_GFX900): Likewise.
+ 	(EF_AMDGPU_MACH_AMDGCN_GFX906): Likewise.
+ 	(reserved): Delete.
+ 
+ 2020-07-17  Andrew Pinski  <apinksi@marvell.com>
+ 	    Dmitrij Pochepko  <dmitrij.pochepko@bell-sw.com>
+ 
+ 	PR target/93720
+ 	* config/aarch64/aarch64.c (aarch64_evpc_ins): New function.
+ 	(aarch64_expand_vec_perm_const_1): Call it.
+ 	* config/aarch64/aarch64-simd.md (aarch64_simd_vec_copy_lane): Make
+ 	public, and add a "@" prefix.
+ 
+ 2020-07-17  Andrew Pinski  <apinksi@marvell.com>
+ 	    Dmitrij Pochepko  <dmitrij.pochepko@bell-sw.com>
+ 
+ 	PR target/82199
+ 	* config/aarch64/aarch64.c (aarch64_evpc_reencode): New function.
+ 	(aarch64_expand_vec_perm_const_1): Call it.
+ 
+ 2020-07-17  Zhiheng Xie  <xiezhiheng@huawei.com>
+ 
+ 	* config/aarch64/aarch64-builtins.c (enum aarch64_type_qualifiers):
+ 	Add new field flags.
+ 	(VAR1): Add new field FLAG in macro.
+ 	(VAR2): Likewise.
+ 	(VAR3): Likewise.
+ 	(VAR4): Likewise.
+ 	(VAR5): Likewise.
+ 	(VAR6): Likewise.
+ 	(VAR7): Likewise.
+ 	(VAR8): Likewise.
+ 	(VAR9): Likewise.
+ 	(VAR10): Likewise.
+ 	(VAR11): Likewise.
+ 	(VAR12): Likewise.
+ 	(VAR13): Likewise.
+ 	(VAR14): Likewise.
+ 	(VAR15): Likewise.
+ 	(VAR16): Likewise.
+ 	(aarch64_general_fold_builtin): Likewise.
+ 	(aarch64_general_gimple_fold_builtin): Likewise.
+ 	* config/aarch64/aarch64-simd-builtins.def: Add default flag for
+ 	each built-in function.
+ 	* config/aarch64/geniterators.sh: Add new field in BUILTIN macro.
+ 
+ 2020-07-17  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	PR target/96127
+ 	* config/s390/s390.c (s390_expand_insv): Invoke the movstrict
+ 	expanders to generate the pattern.
+ 	* config/s390/s390.md ("*movstricthi", "*movstrictqi"): Remove the
+ 	'*' to have callable expanders.
+ 
+ 2020-07-16  Hans-Peter Nilsson  <hp@axis.com>
+ 	    Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/93372
+ 	* combine.c (is_just_move): Take an rtx_insn* as argument.  Use
+ 	single_set on it.
+ 
+ 2020-07-16  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/96189
+ 	* config/i386/sync.md
+ 	(peephole2 to remove unneded compare after CMPXCHG):
+ 	New pattern, also handle XOR zeroing and load of -1 by OR.
+ 
+ 2020-07-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/i386/i386.c (ix86_compute_frame_layout): Minor tweak.
+ 	(ix86_adjust_stack_and_probe): Delete.
+ 	(ix86_adjust_stack_and_probe_stack_clash): Rename to above and add
+ 	PROTECTION_AREA parameter.  If it is true, probe PROBE_INTERVAL plus
+ 	a small dope beyond SIZE bytes.
+ 	(ix86_emit_probe_stack_range): Use local variable.
+ 	(ix86_expand_prologue): Adjust calls to ix86_adjust_stack_and_probe
+ 	and tidy up the stack checking code.
+ 	* explow.c (get_stack_check_protect): Fix head comment.
+ 	(anti_adjust_stack_and_probe_stack_clash): Likewise.
+ 	(allocate_dynamic_stack_space): Add comment.
+ 	* tree-nested.c (lookup_field_for_decl): Set the DECL_IGNORED_P and
+ 	TREE_NO_WARNING but not TREE_ADDRESSABLE flags on the field.
+ 
+ 2020-07-16  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/mkoffload.c: Include simple-object.h and elf.h.
+ 	(EM_AMDGPU): New macro.
+ 	(ELFOSABI_AMDGPU_HSA): New macro.
+ 	(ELFABIVERSION_AMDGPU_HSA): New macro.
+ 	(EF_AMDGPU_MACH_AMDGCN_GFX803): New macro.
+ 	(EF_AMDGPU_MACH_AMDGCN_GFX900): New macro.
+ 	(EF_AMDGPU_MACH_AMDGCN_GFX906): New macro.
+ 	(R_AMDGPU_NONE): New macro.
+ 	(R_AMDGPU_ABS32_LO): New macro.
+ 	(R_AMDGPU_ABS32_HI): New macro.
+ 	(R_AMDGPU_ABS64): New macro.
+ 	(R_AMDGPU_REL32): New macro.
+ 	(R_AMDGPU_REL64): New macro.
+ 	(R_AMDGPU_ABS32): New macro.
+ 	(R_AMDGPU_GOTPCREL): New macro.
+ 	(R_AMDGPU_GOTPCREL32_LO): New macro.
+ 	(R_AMDGPU_GOTPCREL32_HI): New macro.
+ 	(R_AMDGPU_REL32_LO): New macro.
+ 	(R_AMDGPU_REL32_HI): New macro.
+ 	(reserved): New macro.
+ 	(R_AMDGPU_RELATIVE64): New macro.
+ 	(gcn_s1_name): Delete global variable.
+ 	(gcn_s2_name): Delete global variable.
+ 	(gcn_o_name): Delete global variable.
+ 	(gcn_cfile_name): Delete global variable.
+ 	(files_to_cleanup): New global variable.
+ 	(offload_abi): New global variable.
+ 	(tool_cleanup): Use files_to_cleanup, not explicit list.
+ 	(copy_early_debug_info): New function.
+ 	(main): New local variables gcn_s1_name, gcn_s2_name, gcn_o_name,
+ 	gcn_cfile_name.
+ 	Create files_to_cleanup obstack.
+ 	Recognize -march options.
+ 	Copy early debug info from input .o files.
+ 
+ 2020-07-16  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* Makefile.in (TAGS): Remove 'params.def'.
+ 
+ 2020-07-16  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* target.def (TARGET_TRULY_NOOP_TRUNCATION): Clarify that
+ 	targets that return false, indicating SUBREGs shouldn't be
+ 	used, also need to provide a trunc?i?i2 optab that performs this
+ 	truncation.
+ 	* doc/tm.texi: Regenerate.
+ 
+ 2020-07-15  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/96189
+ 	* config/i386/sync.md
+ 	(peephole2 to remove unneded compare after CMPXCHG): New pattern.
+ 
+ 2020-07-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libgomp/96198
+ 	* omp-general.h (struct omp_for_data): Rename min_inner_iterations
+ 	member to first_inner_iterations, adjust comment.
+ 	* omp-general.c (omp_extract_for_data): Adjust for the above change.
+ 	Always use n1first and n2first to compute it, rather than depending
+ 	on single_nonrect_cond_code.  Similarly, always compute factor
+ 	as (m2 - m1) * outer_step / inner_step rather than sometimes m1 - m2
+ 	depending on single_nonrect_cond_code.
+ 	* omp-expand.c (expand_omp_for_init_vars): Rename min_inner_iterations
+ 	to first_inner_iterations and min_inner_iterationsd to
+ 	first_inner_iterationsd.
+ 
+ 2020-07-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/96174
+ 	* config/i386/avx512fintrin.h (_mm512_cmpeq_pd_mask,
+ 	_mm512_mask_cmpeq_pd_mask, _mm512_cmplt_pd_mask,
+ 	_mm512_mask_cmplt_pd_mask, _mm512_cmple_pd_mask,
+ 	_mm512_mask_cmple_pd_mask, _mm512_cmpunord_pd_mask,
+ 	_mm512_mask_cmpunord_pd_mask, _mm512_cmpneq_pd_mask,
+ 	_mm512_mask_cmpneq_pd_mask, _mm512_cmpnlt_pd_mask,
+ 	_mm512_mask_cmpnlt_pd_mask, _mm512_cmpnle_pd_mask,
+ 	_mm512_mask_cmpnle_pd_mask, _mm512_cmpord_pd_mask,
+ 	_mm512_mask_cmpord_pd_mask, _mm512_cmpeq_ps_mask,
+ 	_mm512_mask_cmpeq_ps_mask, _mm512_cmplt_ps_mask,
+ 	_mm512_mask_cmplt_ps_mask, _mm512_cmple_ps_mask,
+ 	_mm512_mask_cmple_ps_mask, _mm512_cmpunord_ps_mask,
+ 	_mm512_mask_cmpunord_ps_mask, _mm512_cmpneq_ps_mask,
+ 	_mm512_mask_cmpneq_ps_mask, _mm512_cmpnlt_ps_mask,
+ 	_mm512_mask_cmpnlt_ps_mask, _mm512_cmpnle_ps_mask,
+ 	_mm512_mask_cmpnle_ps_mask, _mm512_cmpord_ps_mask,
+ 	_mm512_mask_cmpord_ps_mask): Move outside of __OPTIMIZE__ guarded
+ 	section.
+ 
+ 2020-07-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/96176
+ 	* builtins.c: Include gimple-ssa.h, tree-ssa-live.h and
+ 	tree-outof-ssa.h.
+ 	(expand_expr_force_mode): If exp is a SSA_NAME with different mode
+ 	from MODE and get_gimple_for_ssa_name is a cast from MODE, use the
+ 	cast's rhs.
+ 
+ 2020-07-15  Jiufu Guo   <guojiufu@cn.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_loop_unroll_adjust): Refine hook.
+ 
+ 2020-07-14  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* config/rs6000/rs6000.md (rotldi3_insert_sf): Add TARGET_POWERPC64
+ 	condition.
+ 	* config/rs6000/rs6000.c (rs6000_expand_vector_init): Add
+ 	TARGET_POWERPC64 requirement to TARGET_P8_VECTOR case.
+ 
+ 2020-07-14  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	PR preprocessor/49973
+ 	PR other/86904
+ 	* common.opt: Handle -ftabstop here instead of in c-family
+ 	options.  Add -fdiagnostics-column-unit= and
+ 	-fdiagnostics-column-origin= options.
+ 	* opts.c (common_handle_option): Handle the new options.
+ 	* diagnostic-format-json.cc (json_from_expanded_location): Add
+ 	diagnostic_context argument.  Use it to convert column numbers as per
+ 	the new options.
+ 	(json_from_location_range): Likewise.
+ 	(json_from_fixit_hint): Likewise.
+ 	(json_end_diagnostic): Pass the new context argument to helper
+ 	functions above.  Add "column-origin" field to the output.
+ 	(test_unknown_location): Add the new context argument to calls to
+ 	helper functions.
+ 	(test_bad_endpoints): Likewise.
+ 	* diagnostic-show-locus.c
+ 	(exploc_with_display_col::exploc_with_display_col): Support
+ 	tabstop parameter.
+ 	(layout_point::layout_point): Make use of class
+ 	exploc_with_display_col.
+ 	(layout_range::layout_range): Likewise.
+ 	(struct line_bounds): Clarify that the units are now always
+ 	display columns.  Rename members accordingly.  Add constructor.
+ 	(layout::print_source_line): Add support for tab expansion.
+ 	(make_range): Adapt to class layout_range changes.
+ 	(layout::maybe_add_location_range): Likewise.
+ 	(layout::layout): Adapt to class exploc_with_display_col changes.
+ 	(layout::calculate_x_offset_display): Support tabstop parameter.
+ 	(layout::print_annotation_line): Adapt to struct line_bounds changes.
+ 	(layout::print_line): Likewise.
+ 	(line_label::line_label): Add diagnostic_context argument.
+ 	(get_affected_range): Likewise.
+ 	(get_printed_columns): Likewise.
+ 	(layout::print_any_labels): Adapt to struct line_label changes.
+ 	(class correction): Add m_tabstop member.
+ 	(correction::correction): Add tabstop argument.
+ 	(correction::compute_display_cols): Use m_tabstop.
+ 	(class line_corrections): Add m_context member.
+ 	(line_corrections::line_corrections): Add diagnostic_context argument.
+ 	(line_corrections::add_hint): Use m_context to handle tabstops.
+ 	(layout::print_trailing_fixits): Adapt to class line_corrections
+ 	changes.
+ 	(test_layout_x_offset_display_utf8): Support tabstop parameter.
+ 	(test_layout_x_offset_display_tab): New selftest.
+ 	(test_one_liner_colorized_utf8): Likewise.
+ 	(test_tab_expansion): Likewise.
+ 	(test_diagnostic_show_locus_one_liner_utf8): Call the new tests.
+ 	(diagnostic_show_locus_c_tests): Likewise.
+ 	(test_overlapped_fixit_printing): Adapt to helper class and
+ 	function changes.
+ 	(test_overlapped_fixit_printing_utf8): Likewise.
+ 	(test_overlapped_fixit_printing_2): Likewise.
+ 	* diagnostic.h (enum diagnostics_column_unit): New enum.
+ 	(struct diagnostic_context): Add members for the new options.
+ 	(diagnostic_converted_column): Declare.
+ 	(json_from_expanded_location): Add new context argument.
+ 	* diagnostic.c (diagnostic_initialize): Initialize new members.
+ 	(diagnostic_converted_column): New function.
+ 	(maybe_line_and_column): Be willing to output a column of 0.
+ 	(diagnostic_get_location_text): Convert column number as per the new
+ 	options.
+ 	(diagnostic_report_current_module): Likewise.
+ 	(assert_location_text): Add origin and column_unit arguments for
+ 	testing the new functionality.
+ 	(test_diagnostic_get_location_text): Test the new functionality.
+ 	* doc/invoke.texi: Document the new options and behavior.
+ 	* input.h (location_compute_display_column): Add tabstop argument.
+ 	* input.c (location_compute_display_column): Likewise.
+ 	(test_cpp_utf8): Add selftests for tab expansion.
+ 	* tree-diagnostic-path.cc (default_tree_make_json_for_path): Pass the
+ 	new context argument to json_from_expanded_location().
+ 
+ 2020-07-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/96194
+ 	* expr.c (expand_constructor): Don't create temporary for store to
+ 	volatile MEM if exp has an addressable type.
+ 
+ 2020-07-14  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* hash-map.h (hash_map::get): Note it is a pointer to value.
+ 	* incpath.h (incpath_kind): Align comments.
+ 
+ 2020-07-14  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* tree-core.h (tree_decl_with_vis, tree_function_decl):
+ 	Note additional padding on 64-bits
+ 	* tree.c (cache_integer_cst): Note why no caching of enum literals.
+ 	(get_tree_code_name): Robustify error case.
+ 
+ 2020-07-14  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* doc/gty.texi: Fic gt_cleare_cache name.
+ 	* doc/invoke.texi: Remove duplicate opindex Wabi-tag.
+ 
+ 2020-07-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-general.h (struct omp_for_data): Add adjn1 member.
+ 	* omp-general.c (omp_extract_for_data): For non-rect loop, punt on
+ 	count computing if n1, n2 or step are not INTEGER_CST earlier.
+ 	Narrow the outer iterator range if needed so that non-rect loop
+ 	has at least one iteration for each outer range iteration.  Compute
+ 	adjn1.
+ 	* omp-expand.c (expand_omp_for_init_vars): Use adjn1 if non-NULL
+ 	instead of the outer loop's n1.
+ 
+ 2020-07-14  Matthias Klose  <doko@ubuntu.com>
+ 
+ 	PR lto/95604
+ 	* lto-wrapper.c (merge_and_complain): Add decoded options as parameter,
+ 	error on different values for -fcf-protection.
+ 	(append_compiler_options): Pass -fcf-protection option.
+ 	(find_and_merge_options): Add decoded options as parameter,
+ 	pass decoded_options to merge_and_complain.
+ 	(run_gcc): Pass decoded options to find_and_merge_options.
+ 	* lto-opts.c (lto_write_options): Pass -fcf-protection option.
+ 
+ 2020-07-13  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/rs6000.md (sibcall_local): Merge sibcall_local32
+ 	and sibcall_local64.
+ 	(sibcall_value_local): Similarly.
+ 
+ 2020-07-13  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* Makefile.in (distclean): Remove long gone cxxmain.c
+ 
+ 2020-07-13  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/95443
+ 	* config/i386/i386.md (cmpstrnsi): Pass a copy of the string
+ 	length to cmpstrnqi patterns.
+ 
+ 2020-07-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR ipa/96130
+ 	* ipa-fnsummary.c (analyze_function_body): Treat NULL bb->aux
+ 	as false predicate.
+ 
+ 2020-07-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96163
+ 	* tree-vect-slp.c (vect_schedule_slp_instance): Put new stmts
+ 	at least after region begin.
+ 
+ 2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+ 
+ 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Add
+ 	__ARM_FEATURE_PAC_DEFAULT support.
+ 
+ 2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+ 
+ 	PR target/94891
+ 	* doc/extend.texi: Update the text for  __builtin_return_address.
+ 
+ 2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+ 
+ 	PR target/94891
+ 	* config/aarch64/aarch64.c (aarch64_return_address_signing_enabled):
+ 	Disable return address signing if __builtin_eh_return is used.
+ 
+ 2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+ 
+ 	PR target/94891
+ 	PR target/94791
+ 	* config/aarch64/aarch64-protos.h (aarch64_return_addr_rtx): Declare.
+ 	* config/aarch64/aarch64.c (aarch64_return_addr_rtx): New.
+ 	(aarch64_return_addr): Use aarch64_return_addr_rtx.
+ 	* config/aarch64/aarch64.h (PROFILE_HOOK): Likewise.
+ 
+ 2020-07-13  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR middle-end/95114
+ 	* tree.h (virtual_method_call_p): Add a default-false parameter
+ 	that indicates whether the function is being called from dump
+ 	routines.
+ 	(obj_type_ref_class): Likewise.
+ 	* tree.c (virtual_method_call_p): Likewise.
+ 	* ipa-devirt.c (obj_type_ref_class): Likewise.  Lazily add ODR
+ 	type information for the type when the parameter is false.
+ 	* tree-pretty-print.c (dump_generic_node): Update calls to
+ 	virtual_method_call_p and obj_type_ref_class accordingly.
+ 
+ 2020-07-13  Julian Brown  <julian@codesourcery.com>
+ 	    Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* gimplify.c (gimplify_scan_omp_clauses): Do not strip
+ 	GOMP_MAP_TO_PSET/GOMP_MAP_POINTER for OpenACC enter/exit data
+ 	directives (see also PR92929).
+ 
+ 2020-07-13  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* convert.c (convert_to_integer_1): Narrow integer operations
+ 	even on targets that require explicit truncation instructions.
+ 
+ 2020-07-13  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	PR target/93372
+ 	* config/cris/cris-passes.def: New file.
+ 	* config/cris/t-cris (PASSES_EXTRA): Add cris-passes.def.
+ 	* config/cris/cris.c: Add infrastructure bits and pass execute
+ 	function cris_postdbr_cmpelim.
+ 	* config/cris/cris-protos.h (make_pass_cris_postdbr_cmpelim): Declare.
+ 
+ 2020-07-13  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* config/cris/t-cris: Remove gt-cris.h-related excessive cargo.
+ 
+ 2020-07-13  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	PR target/93372
+ 	* config/cris/cris.md ("*add<mode>3_addi"): New splitter.
+ 	("*addi_b_<mode>"): New pattern.
+ 	("*addsi3<setnz>"): Remove stale %-related comment.
+ 
+ 2020-07-13  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* config/cris/cris.md ("setnz_subst", "setnz_subst", "setcc_subst"):
+ 	Use match_dup in output template, not match_operand.
+ 
+ 2020-07-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* var-tracking.c (bb_heap_node_t): Remove unused typedef.
+ 	(vt_find_locations): Eliminate visited bitmap in favor of
+ 	RPO order check.  Dump statistics about the number of
+ 	local BB dataflow computes.
+ 
+ 2020-07-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/94600
+ 	* expr.c (expand_constructor): Make a temporary also if we're
+ 	storing to volatile memory.
+ 
+ 2020-07-13  Xionghu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.md (rotl_unspec): New
+ 	define_insn_and_split.
+ 
+ 2020-07-13  Xionghu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_expand_vector_init):
+ 	Move V4SF to V4SI, init vector like V4SI and move to V4SF back.
+ 
+ 2020-07-11  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* internal-fn.c (expand_mul_overflow): When checking for signed
+ 	overflow from a widening multiplication, we access the truncated
+ 	lowpart RES twice, so keep this value in a pseudo register.
+ 
+ 2020-07-11  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/96146
+ 	* value-range.cc (value_range::set): Only decompose POLY_INT_CST
+ 	bounds to integers for VR_RANGE.  Decay to VR_VARYING for anti-ranges
+ 	involving POLY_INT_CSTs.
+ 
+ 2020-07-10  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	PR target/77373
+ 	* config/rs6000/rs6000.c (rs6000_xcoff_select_section): Only
+ 	create named section for VAR_DECL or FUNCTION_DECL.
+ 
+ 2020-07-10  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* glimits.h [__STDC_VERSION__ > 201710L] (BOOL_MAX, BOOL_WIDTH):
+ 	New macros.
+ 
+ 2020-07-10  Alexander Popov  <alex.popov@linux.com>
+ 
+ 	* shrink-wrap.c (try_shrink_wrapping): Improve debug output.
+ 
+ 2020-07-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR middle-end/96151
+ 	* expr.c (expand_expr_real_2): When reducing bit fields,
+ 	clear the target if it has a different mode from the expression.
+ 	(reduce_to_bit_field_precision): Don't do that here.  Instead
+ 	assert that the target already has the correct mode.
+ 
+ 2020-07-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/92789
+ 	PR target/95726
+ 	* config/arm/arm.c (arm_attribute_table): Add
+ 	"Advanced SIMD type".
+ 	(arm_comp_type_attributes): Check that the "Advanced SIMD type"
+ 	attributes are equal.
+ 	* config/arm/arm-builtins.c: Include stringpool.h and
+ 	attribs.h.
+ 	(arm_mangle_builtin_vector_type): Use the mangling recorded
+ 	in the "Advanced SIMD type" attribute.
+ 	(arm_init_simd_builtin_types): Add an "Advanced SIMD type"
+ 	attribute to each Advanced SIMD type, using the mangled type
+ 	as the attribute's single argument.
+ 
+ 2020-07-10  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/vsx.md  (VSX_MM): New define_mode_iterator.
+ 	(VSX_MM4): New define_mode_iterator.
+ 	(vec_mtvsrbmi): New define_insn.
+ 	(vec_mtvsr_<mode>): New define_insn.
+ 	(vec_cntmb_<mode>): New define_insn.
+ 	(vec_extract_<mode>): New define_insn.
+ 	(vec_expand_<mode>): New define_insn.
+ 	(define_c_enum unspec): Add entries UNSPEC_MTVSBM, UNSPEC_VCNTMB,
+ 	UNSPEC_VEXTRACT, UNSPEC_VEXPAND.
+ 	* config/rs6000/altivec.h ( vec_genbm, vec_genhm, vec_genwm,
+ 	vec_gendm, vec_genqm, vec_cntm, vec_expandm, vec_extractm): Add
+ 	defines.
+ 	* config/rs6000/rs6000-builtin.def: Add defines BU_P10_2, BU_P10_1.
+ 	(BU_P10_1): Add definitions for mtvsrbm, mtvsrhm, mtvsrwm,
+ 	mtvsrdm, mtvsrqm, vexpandmb, vexpandmh, vexpandmw, vexpandmd,
+ 	vexpandmq, vextractmb, vextractmh, vextractmw, vextractmd, vextractmq.
+ 	(BU_P10_2): Add definitions for cntmbb, cntmbh, cntmbw, cntmbd.
+ 	(BU_P10_OVERLOAD_1): Add definitions for mtvsrbm, mtvsrhm,
+ 	mtvsrwm, mtvsrdm, mtvsrqm, vexpandm, vextractm.
+ 	(BU_P10_OVERLOAD_2): Add defition for cntm.
+ 	* config/rs6000/rs6000-call.c (rs6000_expand_binop_builtin): Add
+ 	checks for CODE_FOR_vec_cntmbb_v16qi, CODE_FOR_vec_cntmb_v8hi,
+ 	CODE_FOR_vec_cntmb_v4si, CODE_FOR_vec_cntmb_v2di.
+ 	(altivec_overloaded_builtins): Add overloaded argument entries for
+ 	P10_BUILTIN_VEC_MTVSRBM, P10_BUILTIN_VEC_MTVSRHM,
+ 	P10_BUILTIN_VEC_MTVSRWM, P10_BUILTIN_VEC_MTVSRDM,
+ 	P10_BUILTIN_VEC_MTVSRQM, P10_BUILTIN_VEC_VCNTMBB,
+ 	P10_BUILTIN_VCNTMBB, P10_BUILTIN_VCNTMBH,
+ 	P10_BUILTIN_VCNTMBW, P10_BUILTIN_VCNTMBD,
+ 	P10_BUILTIN_VEXPANDMB, P10_BUILTIN_VEXPANDMH,
+ 	P10_BUILTIN_VEXPANDMW, P10_BUILTIN_VEXPANDMD,
+ 	P10_BUILTIN_VEXPANDMQ, P10_BUILTIN_VEXTRACTMB,
+ 	P10_BUILTIN_VEXTRACTMH, P10_BUILTIN_VEXTRACTMW,
+ 	P10_BUILTIN_VEXTRACTMD, P10_BUILTIN_VEXTRACTMQ.
+ 	(builtin_function_type): Add case entries for P10_BUILTIN_MTVSRBM,
+ 	P10_BUILTIN_MTVSRHM, P10_BUILTIN_MTVSRWM, P10_BUILTIN_MTVSRDM,
+ 	P10_BUILTIN_MTVSRQM, P10_BUILTIN_VCNTMBB, P10_BUILTIN_VCNTMBH,
+ 	P10_BUILTIN_VCNTMBW, P10_BUILTIN_VCNTMBD,
+ 	P10_BUILTIN_VEXPANDMB, P10_BUILTIN_VEXPANDMH,
+ 	P10_BUILTIN_VEXPANDMW, P10_BUILTIN_VEXPANDMD,
+ 	P10_BUILTIN_VEXPANDMQ.
+ 	* config/rs6000/rs6000-builtin.def (altivec_overloaded_builtins): Add
+ 	entries	for MTVSRBM, MTVSRHM, MTVSRWM, MTVSRDM, MTVSRQM, VCNTM,
+ 	VEXPANDM, VEXTRACTM.
+ 
+ 2020-07-10  Bill Seurer, 507-253-3502, seurer@us.ibm.com  <(no_default)>
+ 
+ 	PR target/95581
+ 	* config/rs6000/rs6000-call.c: Add new type v16qi_ftype_pcvoid.
+ 	(altivec_init_builtins) Change __builtin_altivec_mask_for_load to use
+ 	v16qi_ftype_pcvoid with correct number of parameters.
+ 
+ 2020-07-10  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/96144
+ 	* config/i386/i386-expand.c (ix86_emit_swsqrtsf): Check
+ 	TARGET_AVX512VL when enabling FMA.
+ 
+ 2020-07-10  Andrea Corallo  <andrea.corallo@arm.com>
+ 	    Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
+ 	    Iain Apreotesei  <iain.apreotesei@arm.com>
+ 
+ 	* config/arm/arm-protos.h (arm_target_insn_ok_for_lob): New
+ 	prototype.
+ 	* config/arm/arm.c (TARGET_INVALID_WITHIN_DOLOOP): Define.
+ 	(arm_invalid_within_doloop): Implement invalid_within_doloop hook.
+ 	(arm_target_insn_ok_for_lob): New function.
+ 	* config/arm/arm.h (TARGET_HAVE_LOB): Define macro.
+ 	* config/arm/thumb2.md (*doloop_end_internal, doloop_begin)
+ 	(dls_insn): Add new patterns.
+ 	(doloop_end): Modify to select LR when LOB is available.
+ 	* config/arm/unspecs.md: Add new unspec.
+ 	* doc/sourcebuild.texi (arm_v8_1_lob_ok)
+ 	(arm_thumb2_ok_no_arm_v8_1_lob): Document new target supports
+ 	options.
+ 
+ 2020-07-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96133
+ 	* gimple-fold.c (fold_array_ctor_reference): Do not
+ 	recurse to folding a CTOR that does not fully cover the
+ 	asked for object.
+ 
+ 2020-07-10  Cui,Lili  <lili.cui@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h
+ 	(get_intel_cpu): Handle sapphirerapids.
+ 	* common/config/i386/i386-common.c
+ 	(processor_names): Add sapphirerapids and alderlake.
+ 	(processor_alias_table): Add sapphirerapids and alderlake.
+ 	* common/config/i386/i386-cpuinfo.h
+ 	(processor_subtypes): Add INTEL_COREI7_ALDERLAKE and
+ 	INTEL_COREI7_ALDERLAKE.
+ 	* config.gcc: Add -march=sapphirerapids and alderlake.
+ 	* config/i386/driver-i386.c
+ 	(host_detect_local_cpu) Handle sapphirerapids and alderlake.
+ 	* config/i386/i386-c.c
+ 	(ix86_target_macros_internal): Handle sapphirerapids and alderlake.
+ 	* config/i386/i386-options.c
+ 	(m_SAPPHIRERAPIDS) : Define.
+ 	(m_ALDERLAKE): Ditto.
+ 	(m_CORE_AVX512) : Add m_SAPPHIRERAPIDS.
+ 	(processor_cost_table): Add sapphirerapids and alderlake.
+ 	(ix86_option_override_internal) Handle PTA_WAITPKG, PTA_ENQCMD,
+ 	PTA_CLDEMOTE, PTA_SERIALIZE, PTA_TSXLDTRK.
+ 	* config/i386/i386.h
+ 	(ix86_size_cost) : Define SAPPHIRERAPIDS and ALDERLAKE.
+ 	(processor_type) : Add PROCESSOR_SAPPHIRERAPIDS and
+ 	PROCESSOR_ALDERLAKE.
+ 	(PTA_ENQCMD): New.
+ 	(PTA_CLDEMOTE): Ditto.
+ 	(PTA_SERIALIZE): Ditto.
+ 	(PTA_TSXLDTRK): New.
+ 	(PTA_SAPPHIRERAPIDS): Ditto.
+ 	(PTA_ALDERLAKE): Ditto.
+ 	(processor_type) : Add PROCESSOR_SAPPHIRERAPIDS and
+ 	PROCESSOR_ALDERLAKE.
+ 	* doc/extend.texi: Add sapphirerapids and alderlake.
+ 	* doc/invoke.texi: Add sapphirerapids and alderlake.
+ 
+ 2020-07-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	* dumpfile.c [profile-report]: Add new profile dump.
+ 	* dumpfile.h (enum tree_dump_index): Ad TDI_profile_report.
+ 	* passes.c (pass_manager::dump_profile_report): Change stderr
+ 	to dump_file.
+ 
+ 2020-07-10  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* tree-vect-loop.c (vect_transform_loop): Use LOOP_VINFO_NITERS which
+ 	is adjusted by considering peeled prologue for non
+ 	vect_use_loop_mask_for_alignment_p cases.
+ 
+ 2020-07-09  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/96125
+ 	* config/rs6000/rs6000-call.c (rs6000_init_builtins): Define the MMA
+ 	specific types __vector_quad and __vector_pair, and initialize the
+ 	MMA built-ins if TARGET_EXTRA_BUILTINS is set.
+ 	(mma_init_builtins): Don't test for mask set in rs6000_builtin_mask.
+ 	Remove now unneeded mask variable.
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Add the
+ 	OPTION_MASK_MMA flag for power10 if not already set.
+ 
+ 2020-07-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96133
+ 	* tree-vect-slp.c (vect_build_slp_tree_1): Compare load_p
+ 	status between stmts.
+ 
+ 2020-07-09  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/88713
+ 	* config/i386/i386-expand.c (ix86_emit_swsqrtsf): Enable FMA.
+ 	* config/i386/sse.md (VF_AVX512VL_VF1_128_256): New.
+ 	(rsqrt<mode>2): Replace VF1_128_256 with VF_AVX512VL_VF1_128_256.
+ 	(rsqrtv16sf2): Removed.
+ 
+ 2020-07-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (vect_verify_datarefs_alignment): Remove.
+ 	(vect_slp_analyze_and_verify_instance_alignment): Rename to ...
+ 	(vect_slp_analyze_instance_alignment): ... this.
+ 	* tree-vect-data-refs.c (verify_data_ref_alignment): Remove.
+ 	(vect_verify_datarefs_alignment): Likewise.
+ 	(vect_enhance_data_refs_alignment): Do not call
+ 	vect_verify_datarefs_alignment.
+ 	(vect_slp_analyze_node_alignment): Rename from
+ 	vect_slp_analyze_and_verify_node_alignment and do not
+ 	call verify_data_ref_alignment.
+ 	(vect_slp_analyze_instance_alignment): Rename from
+ 	vect_slp_analyze_and_verify_instance_alignment.
+ 	* tree-vect-stmts.c (vectorizable_store): Dump when
+ 	we vectorize an unaligned access.
+ 	(vectorizable_load): Likewise.
+ 	* tree-vect-loop.c (vect_analyze_loop_2): Do not call
+ 	vect_verify_datarefs_alignment.
+ 	* tree-vect-slp.c (vect_slp_analyze_bb_1): Adjust.
+ 
+ 2020-07-09  Bin Cheng  <bin.cheng@linux.alibaba.com>
+ 
+ 	PR tree-optimization/95804
+ 	* tree-loop-distribution.c (break_alias_scc_partitions): Force
+ 	negative post order to reduction partition.
+ 
+ 2020-07-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-general.h (struct omp_for_data): Add min_inner_iterations
+ 	and factor members.
+ 	* omp-general.c (omp_extract_for_data): Initialize them and remember
+ 	them in OMP_CLAUSE_COLLAPSE_COUNT if needed and restore from there.
+ 	* omp-expand.c (expand_omp_for_init_counts): Fix up computation of
+ 	counts[fd->last_nonrect] if fd->loop.n2 is INTEGER_CST.
+ 	(expand_omp_for_init_vars): For
+ 	fd->first_nonrect + 1 == fd->last_nonrect loops with for now
+ 	INTEGER_CST fd->loop.n2 find quadratic equation roots instead of
+ 	using fallback method when possible.
+ 
+ 2020-07-09  Omar Tahir  <omar.tahir@arm.com>
+ 
+ 	* ira.c (move_unallocated_pseudos): Zero first_moveable_pseudo and
+ 	last_moveable_pseudo before returning.
+ 
+ 2020-07-09  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+ 
+ 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Add
+ 	__ARM_FEATURE_BTI_DEFAULT support.
+ 
+ 2020-07-09  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_indirect_call_asm):
+ 	New declaration.
+ 	* config/aarch64/aarch64.c (aarch64_regno_regclass): Handle new
+ 	stub registers class.
+ 	(aarch64_class_max_nregs): Likewise.
+ 	(aarch64_register_move_cost): Likewise.
+ 	(aarch64_sls_shared_thunks): Global array to store stub labels.
+ 	(aarch64_sls_emit_function_stub): New.
+ 	(aarch64_create_blr_label): New.
+ 	(aarch64_sls_emit_blr_function_thunks): New.
+ 	(aarch64_sls_emit_shared_blr_thunks): New.
+ 	(aarch64_asm_file_end): New.
+ 	(aarch64_indirect_call_asm): New.
+ 	(TARGET_ASM_FILE_END): Use aarch64_asm_file_end.
+ 	(TARGET_ASM_FUNCTION_EPILOGUE): Use
+ 	aarch64_sls_emit_blr_function_thunks.
+ 	* config/aarch64/aarch64.h (STB_REGNUM_P): New.
+ 	(enum reg_class): Add STUB_REGS class.
+ 	(machine_function): Introduce `call_via` array for
+ 	function-local stub labels.
+ 	* config/aarch64/aarch64.md (*call_insn, *call_value_insn): Use
+ 	aarch64_indirect_call_asm to emit code when hardening BLR
+ 	instructions.
+ 	* config/aarch64/constraints.md (Ucr): New constraint
+ 	representing registers for indirect calls.  Is GENERAL_REGS
+ 	usually, and STUB_REGS when hardening BLR instruction against
+ 	SLS.
+ 	* config/aarch64/predicates.md (aarch64_general_reg): STUB_REGS class
+ 	is also a general register.
+ 
+ 2020-07-09  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_sls_barrier): New.
+ 	* config/aarch64/aarch64.c (aarch64_output_casesi): Emit
+ 	speculation barrier after BR instruction if needs be.
+ 	(aarch64_trampoline_init): Handle ptr_mode value & adjust size
+ 	of code copied.
+ 	(aarch64_sls_barrier): New.
+ 	(aarch64_asm_trampoline_template): Add needed barriers.
+ 	* config/aarch64/aarch64.h (AARCH64_ISA_SB): New.
+ 	(TARGET_SB): New.
+ 	(TRAMPOLINE_SIZE): Account for barrier.
+ 	* config/aarch64/aarch64.md (indirect_jump, *casesi_dispatch,
+ 	simple_return, *do_return, *sibcall_insn, *sibcall_value_insn):
+ 	Emit barrier if needs be, also account for possible barrier using
+ 	"sls_length" attribute.
+ 	(sls_length): New attribute.
+ 	(length): Determine default using any non-default sls_length
+ 	value.
+ 
+ 2020-07-09  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_harden_sls_retbr_p):
+ 	New.
+ 	(aarch64_harden_sls_blr_p): New.
+ 	* config/aarch64/aarch64.c (enum aarch64_sls_hardening_type):
+ 	New.
+ 	(aarch64_harden_sls_retbr_p): New.
+ 	(aarch64_harden_sls_blr_p): New.
+ 	(aarch64_validate_sls_mitigation): New.
+ 	(aarch64_override_options): Parse options for SLS mitigation.
+ 	* config/aarch64/aarch64.opt (-mharden-sls): New option.
+ 	* doc/invoke.texi: Document new option.
+ 
+ 2020-07-09  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* tree-vect-stmts.c (vectorizable_condition): Prohibit vectorization
+ 	with partial vectors explicitly excepting for EXTRACT_LAST_REDUCTION
+ 	or nested-cycle reduction.
+ 
+ 2020-07-09  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* tree-vect-loop.c (vect_analyze_loop_2): Update dumping string
+ 	for fully masking to be more common.
+ 
+ 2020-07-09  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv.md (get_thread_pointer<mode>): New.
+ 	(TP_REGNUM): Ditto.
+ 	* doc/extend.texi (Target Builtins): Add RISC-V built-in section.
+ 	Document __builtin_thread_pointer.
+ 
+ 2020-07-09  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv-sr.c (riscv_remove_unneeded_save_restore_calls):
+ 	Abort if any arguments on stack.
+ 
+ 2020-07-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gimple-fold.c (gimple_fold_builtin_memory_op): Do not fold if
+ 	either type has reverse scalar storage order.
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Do not propagate through
+ 	a memory copy if either type has reverse scalar storage order.
+ 
+ 2020-07-08  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* config/gcn/mkoffload.c (compile_native, main): Pass -fPIC/-fpic
+ 	on to the native compiler, if used.
+ 	* config/nvptx/mkoffload.c (compile_native, main): Likewise.
+ 
+ 2020-07-08  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/altivec.h (vec_vmsumudm): New define.
+ 	* config/rs6000/altivec.md (UNSPEC_VMSUMUDM): New unspec.
+ 	  (altivec_vmsumudm): New define_insn.
+ 	* config/rs6000/rs6000-builtin.def (altivec_vmsumudm): New BU_ALTIVEC_3
+ 	  entry. (vmsumudm): New BU_ALTIVEC_OVERLOAD_3 entry.
+ 	* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add entries for
+ 	  ALTIVEC_BUILTIN_VMSUMUDM variants of vec_msum.
+ 	* doc/extend.texi: Add document for vmsumudm behind vmsum.
+ 
+ 2020-07-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-stmts.c (get_group_load_store_type): Pass
+ 	in the SLP node and the alignment support scheme output.
+ 	Set that.
+ 	(get_load_store_type): Likewise.
+ 	(vectorizable_store): Adjust.
+ 	(vectorizable_load): Likewise.
+ 
+ 2020-07-08  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR middle-end/95694
+ 	* expr.c (expand_expr_real_2): Get the mode from the type rather
+ 	than the rtx, and assert that it is consistent with the mode of
+ 	the rtx (where known).  Optimize all constant integers, not just
+ 	those that can be represented in poly_int64.
+ 
+ 2020-07-08  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* config/rs6000/vsx.md (len_load_v16qi): New define_expand.
+ 	(len_store_v16qi): Likewise.
+ 
+ 2020-07-08  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* doc/md.texi (len_load_@var{m}): Document.
+ 	(len_store_@var{m}): Likewise.
+ 	* internal-fn.c (len_load_direct): New macro.
+ 	(len_store_direct): Likewise.
+ 	(expand_len_load_optab_fn): Likewise.
+ 	(expand_len_store_optab_fn): Likewise.
+ 	(direct_len_load_optab_supported_p): Likewise.
+ 	(direct_len_store_optab_supported_p): Likewise.
+ 	(expand_mask_load_optab_fn): New macro.  Original renamed to ...
+ 	(expand_partial_load_optab_fn): ... here.  Add handlings for
+ 	len_load_optab.
+ 	(expand_mask_store_optab_fn): New macro.  Original renamed to ...
+ 	(expand_partial_store_optab_fn): ... here. Add handlings for
+ 	len_store_optab.
+ 	(internal_load_fn_p): Handle IFN_LEN_LOAD.
+ 	(internal_store_fn_p): Handle IFN_LEN_STORE.
+ 	(internal_fn_stored_value_index): Handle IFN_LEN_STORE.
+ 	* internal-fn.def (LEN_LOAD): New internal function.
+ 	(LEN_STORE): Likewise.
+ 	* optabs.def (len_load_optab, len_store_optab): New optab.
+ 
+ 2020-07-07  Anton Youdkevitch  <anton.youdkevitch@bell-sw.com>
+ 
+ 	* config/aarch64/aarch64.c (thunderx2t99_regmove_cost,
+ 	thunderx2t99_vector_cost): Likewise.
+ 
+ 2020-07-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Fix
+ 	group overlap condition to allow negative step DR groups.
+ 	* tree-vect-stmts.c (get_group_load_store_type): For
+ 	multi element SLP groups force VMAT_STRIDED_SLP when the step
+ 	is negative.
+ 
+ 2020-07-07  Qian Jianhua  <qianjh@cn.fujitsu.com>
+ 
+ 	* doc/generic.texi: Fix typo.
+ 
+ 2020-07-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	* lto-streamer-out.c (cmp_symbol_files): Use the computed
+ 	order map to sort symbols from the same sub-file together.
+ 	(lto_output): Compute a map of sub-file to an order number
+ 	it appears in the symbol output array.
+ 
+ 2020-07-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96075
+ 	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
+ 	TYPE_SIZE_UNIT of the vector component type instead of DR_STEP
+ 	for the misalignment calculation for negative step.
+ 
+ 2020-07-06  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/nvptx/nvptx.md (*vadd_addsi4): New instruction.
+ 	(*vsub_addsi4): New instruction.
+ 
+ 2020-07-06  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* config/cris/cris.md (movulsr): New peephole2.
+ 
+ 2020-07-06  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* config/cris/sync.md ("cris_atomic_fetch_<atomic_op_name><mode>_1"):
+ 	Correct gcc_assert of overlapping operands.
+ 
+ 2020-07-05  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* config/cris/cris.c (cris_select_cc_mode): Always return
+ 	CC_NZmode for matching comparisons.  Clarify comments.
+ 	* config/cris/cris-modes.def: Clarify mode comment.
+ 	* config/cris/cris.md (plusminus, plusminusumin, plusumin): New
+ 	code iterators.
+ 	(addsub, addsubbo, nd): New code iterator attributes.
+ 	("*<addsub><su>qihi"): Rename from "*extopqihi".  Use code
+ 	iterator constructs instead of match_operator constructs.
+ 	("*<addsubbo><su><nd><mode>si<setnz>"): Similar from
+ 	"*extop<mode>si<setnz>".
+ 	("*add<su>qihi_swap"): Similar from "*addxqihi_swap".
+ 	("*<addsubbo><su><nd><mode>si<setnz>_swap"): Similar from
+ 	"*extop<mode>si<setnz>_swap".
+ 
+ 2020-07-05  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* config/cris/cris.md ("*extopqihi", "*extop<mode>si<setnz>_swap")
+ 	("*extop<mode>si<setnz>", "*addxqihi_swap"): Reinstate.
+ 
+ 2020-07-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gimple-fold.c (gimple_fold_builtin_memory_op): Fold calls that
+ 	were initially created for the assignment of a variable-sized
+ 	object and whose source is now a string constant.
+ 	* gimple-ssa-store-merging.c (struct merged_store_group): Document
+ 	STRING_CST for rhs_code field.
+ 	Add string_concatenation boolean field.
+ 	(merged_store_group::merged_store_group): Initialize it as well as
+ 	bit_insertion here.
+ 	(merged_store_group::do_merge): Set it upon seeing a STRING_CST.
+ 	Also set bit_insertion here upon seeing a BIT_INSERT_EXPR.
+ 	(merged_store_group::apply_stores): Clear it for small regions.
+ 	Do not create a power-of-2-sized buffer if it is still true.
+ 	And do not set bit_insertion here again.
+ 	(encode_tree_to_bitpos): Deal with BLKmode for the expression.
+ 	(merged_store_group::can_be_merged_into): Deal with STRING_CST.
+ 	(imm_store_chain_info::coalesce_immediate_stores): Set bit_insertion
+ 	to true after changing MEM_REF stores into BIT_INSERT_EXPR stores.
+ 	(count_multiple_uses): Return 0 for STRING_CST.
+ 	(split_group): Do not split the group for a string concatenation.
+ 	(imm_store_chain_info::output_merged_store): Constify and rename
+ 	some local variables.  Build an array type as destination type
+ 	for a string concatenation, as well as a zero mask, and call
+ 	build_string to build the source.
+ 	(lhs_valid_for_store_merging_p): Return true for VIEW_CONVERT_EXPR.
+ 	(pass_store_merging::process_store): Accept STRING_CST on the RHS.
+ 	* gimple.h (gimple_call_alloca_for_var_p): New accessor function.
+ 	* gimplify.c (gimplify_modify_expr_to_memcpy): Set alloca_for_var.
+ 	* tree.h (CALL_ALLOCA_FOR_VAR_P): Document it for BUILT_IN_MEMCPY.
+ 
+ 2020-07-03  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/96040
+ 	* ipa-sra.c (all_callee_accesses_present_p): Do not accept type
+ 	mismatched accesses.
+ 
+ 2020-07-03  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/nvptx/nvptx.md (popcount<mode>2): New instructions.
+ 	(mulhishi3, mulsidi3, umulhisi3, umulsidi3): New instructions.
+ 
+ 2020-07-03  Martin Liska  <mliska@suse.cz>
+ 	    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR bootstrap/96046
+ 	* gcov-dump.c (tag_function): Use gcov_position_t
+ 	type.
+ 
+ 2020-07-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96037
+ 	* tree-vect-stmts.c (vect_is_simple_use): Initialize *slp_def.
+ 
+ 2020-07-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_bb_slp_scalar_cost): Cost the
+ 	original non-pattern stmts, look at the pattern stmt
+ 	vectorization status.
+ 
+ 2020-07-03  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (fold_left_plus_<mode>): New.
+ 
+ 2020-07-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (vec_info::insert_on_entry): New.
+ 	(vec_info::insert_seq_on_entry): Likewise.
+ 	* tree-vectorizer.c (vec_info::insert_on_entry): Implement.
+ 	(vec_info::insert_seq_on_entry): Likewise.
+ 	* tree-vect-stmts.c (vect_init_vector_1): Use
+ 	vec_info::insert_on_entry.
+ 	(vect_finish_stmt_generation): Set modified bit after
+ 	adjusting VUSE.
+ 	* tree-vect-slp.c (vect_create_constant_vectors): Simplify
+ 	by using vec_info::insert_seq_on_entry and bypassing
+ 	vec_init_vector.
+ 	(vect_schedule_slp_instance): Deal with all-constant
+ 	children later.
+ 
+ 2020-07-03  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/90932
+ 	* config/nvptx/nvptx.c (nvptx_vector_alignment): Use tree_to_uhwi
+ 	to access TYPE_SIZE (type).  Return at least the mode's alignment.
+ 
+ 2020-07-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96028
+ 	* tree-vect-slp.c (vect_slp_convert_to_external): Make sure
+ 	we have scalar stmts to use.
+ 	(vect_slp_analyze_node_operations): When analyzing a child
+ 	failed try externalizing the parent node.
+ 
+ 2020-07-02  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR debug/95343
+ 	* ipa-param-manipulation.c (ipa_param_adjustments::modify_call): Adjust
+ 	argument index if necessary.
+ 
+ 2020-07-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR middle-end/95830
+ 	* tree-vect-generic.c (expand_vector_condition): Forward declaration.
+ 	(expand_vector_comparison): Do not expand a comparison if all
+ 	uses are consumed by a VEC_COND_EXPR.
+ 	(expand_vector_operation): Change void return type to bool.
+ 	(expand_vector_operations_1): Pass dce_ssa_names.
+ 
+ 2020-07-02  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 
+ 	PR bootstrap/95700
+ 	* system.h (NULL): Redefine to nullptr.
+ 
+ 2020-07-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/95857
+ 	* tree-cfg.c (group_case_labels_stmt): When removing an unreachable
+ 	base_bb, remember all forced and non-local labels on it and later
+ 	treat those as if they have NULL label_to_block.  Formatting fix.
+ 	Fix a comment typo.
+ 
+ 2020-07-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96022
+ 	* tree-vect-stmts.c (vectorizable_shift): Only use the
+ 	first vector stmt when extracting the scalar shift amount.
+ 	* tree-vect-slp.c (vect_build_slp_tree_2): Also build unary
+ 	nodes with all-scalar children from scalars but not stores.
+ 	(vect_analyze_slp_instance): Mark the node not failed.
+ 
+ 2020-07-02  Felix Yang  <felix.yang@huawei.com>
+ 
+ 	PR tree-optimization/95961
+ 	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Use the
+ 	number of scalars instead of the number of vectors as an upper bound
+ 	for the loop saving info about DR in the hash table.  Remove unused
+ 	local variables.
+ 
+ 2020-07-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-expand.c (expand_omp_for): Diagnose non-rectangular loops with
+ 	invalid steps - ((m2 - m1) * incr_outer) % incr must be 0 in valid
+ 	OpenMP non-rectangular loops.  Use XALLOCAVEC.
+ 
+ 2020-07-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/95348
+ 	* coverage.c (read_counts_file): Read only COUNTERS that are
+ 	not all-zero.
+ 	* gcov-dump.c (tag_function): Change signature from unsigned to
+ 	signed integer.
+ 	(tag_blocks): Likewise.
+ 	(tag_arcs): Likewise.
+ 	(tag_lines): Likewise.
+ 	(tag_counters): Likewise.
+ 	(tag_summary): Likewise.
+ 	* gcov.c (read_count_file): Read all non-zero counters
+ 	sensitively.
+ 
+ 2020-07-02  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/multilib-generator (arch_canonicalize): Handle
+ 	multi-letter extension.
+ 	Using underline as separator between different extensions.
+ 
+ 2020-07-01  Pip Cet  <pipcet@gmail.com>
+ 
+ 	* spellcheck.c (test_data): Add problematic strings.
+ 	(test_metric_conditions): Don't test the triangle inequality
+ 	condition, which our distance function does not satisfy.
+ 
+ 2020-07-01  Omar Tahir  <omar.tahir@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_asm_trampoline_template): Always
+ 	generate a BTI instruction.
+ 
+ 2020-07-01  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/94882
+ 	* match.pd (x & y) - (x | y) - 1 -> ~(x ^ y): New simplification.
+ 
+ 2020-07-01  Jeff Law  <law@redhat.com>
+ 
+ 	* config/m68k/m68k.c (m68k_output_btst): Drop "register" keyword.
+ 	(emit_move_sequence, output_iorsi3, output_xorsi3): Likewise.
+ 
+ 2020-07-01  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.c (aarch64_builtins): Add enums
+ 	for 64bits fpsr/fpcr getter setters builtin variants.
+ 	(aarch64_init_fpsr_fpcr_builtins): New function.
+ 	(aarch64_general_init_builtins): Modify to make use of the later.
+ 	(aarch64_expand_fpsr_fpcr_setter): New function.
+ 	(aarch64_general_expand_builtin): Modify to make use of the later.
+ 	* config/aarch64/aarch64.md (@aarch64_set_<fpscr_name><GPI:mode>)
+ 	(@aarch64_get_<fpscr_name><GPI:mode>): New patterns replacing and
+ 	generalizing 'get_fpcr', 'set_fpsr'.
+ 	* config/aarch64/iterators.md (GET_FPSCR, SET_FPSCR): New int
+ 	iterators.
+ 	(fpscr_name): New int attribute.
+ 	* doc/extend.texi (__builtin_aarch64_get_fpcr64)
+ 	(__builtin_aarch64_set_fpcr64, __builtin_aarch64_get_fpsr64)
+ 	(__builtin_aarch64_set_fpsr64): Add into AArch64 Built-in
+ 	Functions.
+ 
+ 2020-07-01  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov.c (print_usage): Avoid trailing space for -j option.
+ 
+ 2020-07-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95839
+ 	* tree-vect-slp.c (vect_slp_tree_uniform_p): Pre-existing
+ 	vectors are not uniform.
+ 	(vect_build_slp_tree_1): Handle BIT_FIELD_REFs of
+ 	vector registers.
+ 	(vect_build_slp_tree_2): For groups of lane extracts
+ 	from a vector register generate a permute node
+ 	with a special child representing the pre-existing vector.
+ 	(vect_prologue_cost_for_slp): Pre-existing vectors cost nothing.
+ 	(vect_slp_analyze_node_operations): Use SLP_TREE_LANES.
+ 	(vectorizable_slp_permutation): Do not generate or cost identity
+ 	permutes.
+ 	(vect_schedule_slp_instance): Handle pre-existing vector
+ 	that are function arguments.
+ 
+ 2020-07-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	* system.h (INCLUDE_ISL): New guarded include.
+ 	* graphite-dependences.c: Use it.
+ 	* graphite-isl-ast-to-gimple.c: Likewise.
+ 	* graphite-optimize-isl.c: Likewise.
+ 	* graphite-poly.c: Likewise.
+ 	* graphite-scop-detection.c: Likewise.
+ 	* graphite-sese-to-poly.c: Likewise.
+ 	* graphite.c: Likewise.
+ 	* graphite.h: Drop the includes here.
+ 
+ 2020-07-01  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov.c (print_usage): Shorted option description for -j
+ 	option.
+ 
+ 2020-07-01  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcov.texi: Rename 2 options.
+ 	* gcov.c (print_usage): Rename -i,--json-format to
+ 	-j,--json-format and -j,--human-readable to -H,--human-readable.
+ 	(process_args): Fix up parsing.  Document obsolete options and
+ 	how are they changed.
+ 
+ 2020-07-01  Jeff Law  <law@redhat.com>
+ 
+ 	* config/pa/pa.c (pa_emit_move_sequence): Drop register keyword.
+ 	(pa_output_ascii): Likewise.
+ 
+ 2020-07-01  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.c (riscv_subset_t): New field
+ 	added.
+ 	(riscv_subset_list::parsing_subset_version): Add parameter for
+ 	indicate explicitly version, and handle explicitly version.
+ 	(riscv_subset_list::handle_implied_ext): Ditto.
+ 	(riscv_subset_list::add): Ditto.
+ 	(riscv_subset_t::riscv_subset_t): Init new field.
+ 	(riscv_subset_list::to_string): Always output version info if version
+ 	explicitly specified.
+ 	(riscv_subset_list::parsing_subset_version): Handle explicitly
+ 	arch version.
+ 	(riscv_subset_list::parse_std_ext): Ditto.
+ 	(riscv_subset_list::parse_multiletter_ext): Ditto.
+ 
+ 2020-06-30  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/92789
+ 	PR target/95726
+ 	* config/aarch64/aarch64.c (aarch64_attribute_table): Add
+ 	"Advanced SIMD type".
+ 	(aarch64_comp_type_attributes): Check that the "Advanced SIMD type"
+ 	attributes are equal.
+ 	* config/aarch64/aarch64-builtins.c: Include stringpool.h and
+ 	attribs.h.
+ 	(aarch64_mangle_builtin_vector_type): Use the mangling recorded
+ 	in the "Advanced SIMD type" attribute.
+ 	(aarch64_init_simd_builtin_types): Add an "Advanced SIMD type"
+ 	attribute to each Advanced SIMD type, using the mangled type
+ 	as the attribute's single argument.
+ 
+ 2020-06-30  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/94743
+ 	* config/arm/arm.c (arm_handle_isr_attribute): Warn if
+ 	-mgeneral-regs-only is not used.
+ 
+ 2020-06-30  Yang Yang  <yangyang305@huawei.com>
+ 
+ 	PR tree-optimization/95855
+ 	* gimple-ssa-split-paths.c (is_feasible_trace): Add extra
+ 	checks to recognize a missed if-conversion opportunity when
+ 	judging whether to duplicate a block.
+ 
+ 2020-06-29  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* doc/extend.texi: Change references to "future architecture" to
+ 	"ISA 3.1", "-mcpu=future" to "-mcpu=power10", and remove vaguer
+ 	references to "future" (because the future is now).
+ 
+ 2020-06-29  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md (isa): Rename "fut" to "p10".
+ 
+ 2020-06-29  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* simplify-rtx.c (simplify_distributive_operation): New function
+ 	to un-distribute a binary operation of two binary operations.
+ 	(X & C) ^ (Y & C) to (X ^ Y) & C, when C is simple (i.e. a constant).
+ 	(simplify_binary_operation_1) <IOR, XOR, AND>: Call it from here
+ 	when appropriate.
+ 	(test_scalar_int_ops): New function for unit self-testing
+ 	scalar integer transformations in simplify-rtx.c.
+ 	(test_scalar_ops): Call test_scalar_int_ops for each integer mode.
+ 	(simplify_rtx_c_tests): Call test_scalar_ops.
+ 
+ 2020-06-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95916
+ 	* tree-vect-slp.c (vect_schedule_slp_instance): Explicitely handle
+ 	the case of not vectorized externals.
+ 
+ 2020-06-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h: Do not include <utility>.
+ 
+ 2020-06-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	* tree-ssa-ccp.c (gsi_prev_dom_bb_nondebug): Use gsi_bb
+ 	instead of gimple_stmt_iterator::bb.
+ 	* tree-ssa-math-opts.c (insert_reciprocals): Likewise.
+ 	* tree-vectorizer.h: Likewise.
+ 
+ 2020-06-29  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-hsa.h (DBX_REGISTER_NUMBER): New macro.
+ 	* config/gcn/gcn-protos.h (gcn_dwarf_register_number): New prototype.
+ 	* config/gcn/gcn.c (gcn_expand_prologue): Add RTX_FRAME_RELATED_P
+ 	and REG_FRAME_RELATED_EXPR to stack and frame pointer adjustments.
+ 	(gcn_dwarf_register_number): New function.
+ 	(gcn_dwarf_register_span): New function.
+ 	(TARGET_DWARF_REGISTER_SPAN): New hook macro.
+ 
+ 2020-06-29  Kaipeng Zhou  <zhoukaipeng3@huawei.com>
+ 
+ 	PR tree-optimization/95854
+ 	* gimple-ssa-store-merging.c (find_bswap_or_nop_1): Return NULL
+ 	if operand 1 or 2 of a BIT_FIELD_REF cannot be converted to
+ 	unsigned HOST_WIDE_INT.
+ 
+ 2020-06-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* config/sparc/sparc.c (epilogue_renumber): Remove register.
+ 	(sparc_print_operand_address): Likewise.
+ 	(sparc_type_code): Likewise.
+ 	(set_extends): Likewise.
+ 
+ 2020-06-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/92860
+ 	* optc-save-gen.awk: Add exceptions for arc target.
+ 
+ 2020-06-29  Frederik Harwath  <frederik@codesourcery.com>
+ 
+ 	* doc/sourcebuild.texi: Describe globbing of the
+ 	dump file scanning commands "suffix" argument.
+ 
+ 2020-06-28  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c++/86568
+ 	* calls.c (maybe_warn_rdwr_sizes): Use location of argument if
+ 	available.
+ 	* tree-ssa-ccp.c (pass_post_ipa_warn::execute): Same.  Adjust
+ 	indentation.
+ 	* tree.c (get_nonnull_args): Consider the this pointer implicitly
+ 	nonnull.
+ 	* var-tracking.c (deps_vec): New type.
+ 	(var_loc_dep_vec): New function.
+ 	(VAR_LOC_DEP_VEC): Use it.
+ 
+ 2020-06-28  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* internal-fn.c (direct_mask_load_optab_supported_p): Use
+ 	convert_optab_supported_p instead of direct_optab_supported_p.
+ 	(direct_mask_store_optab_supported_p): Likewise.
+ 
+ 2020-06-27  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-ssa-evrp-analyze.h (vrp_visit_cond_stmt): Use
+ 	simplify_using_ranges class.
+ 	* gimple-ssa-evrp.c (class evrp_folder): New simplify_using_ranges
+ 	field.  Adjust all methods to use new field.
+ 	* tree-ssa-dom.c (simplify_stmt_for_jump_threading): Use
+ 	simplify_using_ranges class.
+ 	* tree-vrp.c (class vrp_folder): New simplify_using_ranges
+ 	field.  Adjust all methods to use new field.
+ 	(simplify_stmt_for_jump_threading): Use simplify_using_ranges class.
+ 	(vrp_prop::vrp_finalize): New vrp_folder argument.
+ 	(execute_vrp): Pass folder to vrp_finalize.  Use
+ 	simplify_using_ranges class.
+ 	Remove cleanup_edges_and_switches call.
+ 	* vr-values.c (vr_values::op_with_boolean_value_range_p): Change
+ 	value_range_equiv uses to value_range.
+ 	(simplify_using_ranges::op_with_boolean_value_range_p): Use
+ 	simplify_using_ranges class.
+ 	(check_for_binary_op_overflow): Make static.
+ 	(vr_values::extract_range_basic): Pass this to
+ 	check_for_binary_op_overflow.
+ 	(compare_range_with_value): Change value_range_equiv uses to
+ 	value_range.
+ 	(vr_values::vr_values): Initialize simplifier field.
+ 	Remove uses of to_remove_edges and to_update_switch_stmts.
+ 	(vr_values::~vr_values): Remove uses of to_remove_edges and
+ 	to_update_switch_stmts.
+ 	(vr_values::get_vr_for_comparison): Move to simplify_using_ranges
+ 	class.
+ 	(vr_values::compare_name_with_value): Same.
+ 	(vr_values::compare_names): Same.
+ 	(vr_values::vrp_evaluate_conditional_warnv_with_ops): Same.
+ 	(vr_values::vrp_evaluate_conditional): Same.
+ 	(vr_values::vrp_visit_cond_stmt): Same.
+ 	(find_case_label_ranges): Change value_range_equiv uses to
+ 	value_range.
+ 	(vr_values::extract_range_from_stmt): Use simplify_using_ranges class.
+ 	(vr_values::simplify_truth_ops_using_ranges): Move to
+ 	simplify_using_ranges class.
+ 	(vr_values::simplify_div_or_mod_using_ranges): Same.
+ 	(vr_values::simplify_min_or_max_using_ranges): Same.
+ 	(vr_values::simplify_abs_using_ranges): Same.
+ 	(vr_values::simplify_bit_ops_using_ranges): Same.
+ 	(test_for_singularity): Change value_range_equiv uses to
+ 	value_range.
+ 	(range_fits_type_p): Same.
+ 	(vr_values::simplify_cond_using_ranges_1): Same.
+ 	(vr_values::simplify_cond_using_ranges_2): Make extern.
+ 	(vr_values::fold_cond): Move to simplify_using_ranges class.
+ 	(vr_values::simplify_switch_using_ranges): Same.
+ 	(vr_values::cleanup_edges_and_switches): Same.
+ 	(vr_values::simplify_float_conversion_using_ranges): Same.
+ 	(vr_values::simplify_internal_call_using_ranges): Same.
+ 	(vr_values::two_valued_val_range_p): Same.
+ 	(vr_values::simplify_stmt_using_ranges): Move to...
+ 	(simplify_using_ranges::simplify): ...here.
+ 	* vr-values.h (class vr_values): Move all the simplification of
+ 	statements using ranges methods and code from here...
+ 	(class simplify_using_ranges): ...to here.
+ 	(simplify_cond_using_ranges_2): New extern prototype.
+ 
+ 2020-06-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-general.h (struct omp_for_data_loop): Add non_rect_referenced
+ 	member, move outer member.
+ 	(struct omp_for_data): Add first_nonrect and last_nonrect members.
+ 	* omp-general.c (omp_extract_for_data): Initialize first_nonrect,
+ 	last_nonrect and non_rect_referenced members.
+ 	* omp-expand.c (expand_omp_for_init_counts): Handle non-rectangular
+ 	loops.
+ 	(expand_omp_for_init_vars): Add nonrect_bounds parameter.  Handle
+ 	non-rectangular loops.
+ 	(extract_omp_for_update_vars): Likewise.
+ 	(expand_omp_for_generic, expand_omp_for_static_nochunk,
+ 	expand_omp_for_static_chunk, expand_omp_simd,
+ 	expand_omp_taskloop_for_outer, expand_omp_taskloop_for_inner): Adjust
+ 	expand_omp_for_init_vars and extract_omp_for_update_vars callers.
+ 	(expand_omp_for): Don't sorry on non-composite worksharing-loop or
+ 	distribute.
+ 
+ 2020-06-26  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/95655
+ 	* config/i386/gnu-user.h (SUBTARGET_FRAME_POINTER_REQUIRED):
+ 	Removed.
+ 	* config/i386/i386.c (ix86_frame_pointer_required): Update
+ 	comments.
+ 
+ 2020-06-26  Yichao Yu  <yyc1992@gmail.com>
+ 
+ 	* multiple_target.c (redirect_to_specific_clone): Fix tests
+ 	to check individual attribute rather than an attribute list.
+ 
+ 2020-06-26  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-call.c (cpu_is_info) <power10>: New.
+ 	* doc/extend.texi (PowerPC Built-in Functions): Document power10,
+ 	arch_3_1 and mma.
+ 
+ 2020-06-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* doc/invoke.texi (C Dialect Options): Adjust -std default for C++.
+ 	* doc/standards.texi (C Language): Correct the default dialect.
+ 	(C++ Language): Update the default for C++ to gnu++17.
+ 
+ 2020-06-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree-ssa-reassoc.c (dump_range_entry): New function.
+ 	(debug_range_entry): New debug function.
+ 	(update_range_test): Invoke dump_range_entry for dumping.
+ 	(optimize_range_tests_to_bit_test): Merge the entry test in the
+ 	bit test when possible and lower the profitability threshold.
+ 
+ 2020-06-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95897
+ 	* tree-vectorizer.h (vectorizable_induction): Remove
+ 	unused gimple_stmt_iterator * parameter.
+ 	* tree-vect-loop.c (vectorizable_induction): Likewise.
+ 	(vect_analyze_loop_operations): Adjust.
+ 	* tree-vect-stmts.c (vect_analyze_stmt): Likewise.
+ 	(vect_transform_stmt): Likewise.
+ 	* tree-vect-slp.c (vect_schedule_slp_instance): Adjust
+ 	for fold-left reductions, clarify existing reduction case.
+ 
+ 2020-06-25  Nick Clifton  <nickc@redhat.com>
+ 
+ 	* config/m32r/m32r.md (movsicc): Disable pattern.
+ 
+ 2020-06-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95839
+ 	* tree-vect-slp.c (vect_slp_analyze_bb_1): Remove premature
+ 	check on the number of datarefs.
+ 
+ 2020-06-25  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/rs6000/rs6000-call.c (mma_init_builtins): Cast
+ 	the insn_data n_operands value to unsigned.
+ 
+ 2020-06-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_schedule_slp_instance): Always use
+ 	vector defs to determine insertion place.
+ 
+ 2020-06-25  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/95874
+ 	* config/i386/i386.h (PTA_ICELAKE_CLIENT): Remove PTA_CLWB.
+ 	(PTA_ICELAKE_SERVER): Add PTA_CLWB.
+ 	(PTA_TIGERLAKE): Add PTA_CLWB.
+ 
+ 2020-06-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95866
+ 	* tree-vect-stmts.c (vectorizable_shift): Reject incompatible
+ 	vectorized shift operands.  For scalar shifts use lane zero
+ 	of a vectorized shift operand.
+ 
+ 2020-06-25  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/95745
+ 	PR middle-end/95830
+ 	* gimple-isel.cc (gimple_expand_vec_cond_exprs): Delete dead
+ 	SSA_NAMEs used as the first argument of a VEC_COND_EXPR.  Always
+ 	return 0.
+ 	* tree-vect-generic.c (expand_vector_condition): Remove dead
+ 	SSA_NAMEs used as the first argument of a VEC_COND_EXPR.
+ 
+ 2020-06-24  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	PR target/94954
+ 	* config/rs6000/altivec.h (vec_pack_to_short_fp32): Update.
+ 	* config/rs6000/altivec.md (UNSPEC_CONVERT_4F32_8F16): New unspec.
+ 	(convert_4f32_8f16): New define_expand
+ 	* config/rs6000/rs6000-builtin.def (convert_4f32_8f16): New builtin define
+ 	and overload.
+ 	* config/rs6000/rs6000-call.c (P9V_BUILTIN_VEC_CONVERT_4F32_8F16): New
+ 	overloaded builtin entry.
+ 	* config/rs6000/vsx.md (UNSPEC_VSX_XVCVSPHP): New unspec.
+ 	(vsx_xvcvsphp): New define_insn.
+ 
+ 2020-06-24  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* simplify-rtx.c (simplify_unary_operation_1): Simplify rotates by 0.
+ 
+ 2020-06-24  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* simplify-rtx.c (simplify_unary_operation_1): Simplify
+ 	(parity (parity x)) as (parity x), i.e. PARITY is idempotent.
+ 
+ 2020-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95866
+ 	* tree-vect-slp.c (vect_slp_tree_uniform_p): New.
+ 	(vect_build_slp_tree_2): Properly reset matches[0],
+ 	ignore uniform constants.
+ 
+ 2020-06-24  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/95660
+ 	* common/config/i386/cpuinfo.h (get_intel_cpu): Remove brand_id.
+ 	(cpu_indicator_init): Likewise.
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Updated.
+ 
+ 2020-06-24  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/95774
+ 	* common/config/i386/cpuinfo.h (get_intel_cpu): Add Cooper Lake
+ 	detection with AVX512BF16.
+ 
+ 2020-06-24  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/95843
+ 	* common/config/i386/i386-isas.h: New file.  Extracted from
+ 	gcc/config/i386/i386-builtins.c.
+ 	(_isa_names_table): Add option.
+ 	(ISA_NAMES_TABLE_START): New.
+ 	(ISA_NAMES_TABLE_END): Likewise.
+ 	(ISA_NAMES_TABLE_ENTRY): Likewise.
+ 	(isa_names_table): Defined with ISA_NAMES_TABLE_START,
+ 	ISA_NAMES_TABLE_END and ISA_NAMES_TABLE_ENTRY.  Add more ISAs
+ 	from enum processor_features.
+ 	* config/i386/driver-i386.c: Include
+ 	"common/config/i386/cpuinfo.h" and
+ 	"common/config/i386/i386-isas.h".
+ 	(has_feature): New macro.
+ 	(host_detect_local_cpu): Call cpu_indicator_init to get CPU
+ 	features.  Use has_feature to detect processor features.  Call
+ 	Call get_intel_cpu to get the newer Intel CPU name.  Use
+ 	isa_names_table to generate command-line options.
+ 	* config/i386/i386-builtins.c: Include
+ 	"common/config/i386/i386-isas.h".
+ 	(_arch_names_table): Removed.
+ 	(isa_names_table): Likewise.
+ 
+ 2020-06-24  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/95259
+ 	* common/config/i386/cpuinfo.h: New file.
+ 	(__processor_model): Moved from libgcc/config/i386/cpuinfo.h.
+ 	(__processor_model2): New.
+ 	(CHECK___builtin_cpu_is): New.  Defined as empty if not defined.
+ 	(has_cpu_feature): New function.
+ 	(set_cpu_feature): Likewise.
+ 	(get_amd_cpu): Moved from libgcc/config/i386/cpuinfo.c.  Use
+ 	CHECK___builtin_cpu_is.  Return AMD CPU name.
+ 	(get_intel_cpu): Moved from libgcc/config/i386/cpuinfo.c.  Use
+ 	Use CHECK___builtin_cpu_is.  Return Intel CPU name.
+ 	(get_available_features): Moved from libgcc/config/i386/cpuinfo.c.
+ 	Also check FEATURE_3DNOW, FEATURE_3DNOWP, FEATURE_ADX,
+ 	FEATURE_ABM, FEATURE_CLDEMOTE, FEATURE_CLFLUSHOPT, FEATURE_CLWB,
+ 	FEATURE_CLZERO, FEATURE_CMPXCHG16B, FEATURE_CMPXCHG8B,
+ 	FEATURE_ENQCMD, FEATURE_F16C, FEATURE_FSGSBASE, FEATURE_FXSAVE,
+ 	FEATURE_HLE, FEATURE_IBT, FEATURE_LAHF_LM, FEATURE_LM,
+ 	FEATURE_LWP, FEATURE_LZCNT, FEATURE_MOVBE, FEATURE_MOVDIR64B,
+ 	FEATURE_MOVDIRI, FEATURE_MWAITX, FEATURE_OSXSAVE,
+ 	FEATURE_PCONFIG, FEATURE_PKU, FEATURE_PREFETCHWT1, FEATURE_PRFCHW,
+ 	FEATURE_PTWRITE, FEATURE_RDPID, FEATURE_RDRND, FEATURE_RDSEED,
+ 	FEATURE_RTM, FEATURE_SERIALIZE, FEATURE_SGX, FEATURE_SHA,
+ 	FEATURE_SHSTK, FEATURE_TBM, FEATURE_TSXLDTRK, FEATURE_VAES,
+ 	FEATURE_WAITPKG, FEATURE_WBNOINVD, FEATURE_XSAVE, FEATURE_XSAVEC,
+ 	FEATURE_XSAVEOPT and FEATURE_XSAVES
+ 	(cpu_indicator_init): Moved from libgcc/config/i386/cpuinfo.c.
+ 	Also update cpu_model2.
+ 	* common/config/i386/i386-cpuinfo.h (processor_vendor): Add
+ 	Add VENDOR_CENTAUR, VENDOR_CYRIX and VENDOR_NSC.
+ 	(processor_features): Moved from gcc/config/i386/i386-builtins.c.
+ 	Renamed F_XXX to FEATURE_XXX.  Add FEATURE_3DNOW, FEATURE_3DNOWP,
+ 	FEATURE_ADX, FEATURE_ABM, FEATURE_CLDEMOTE, FEATURE_CLFLUSHOPT,
+ 	FEATURE_CLWB, FEATURE_CLZERO, FEATURE_CMPXCHG16B,
+ 	FEATURE_CMPXCHG8B, FEATURE_ENQCMD, FEATURE_F16C,
+ 	FEATURE_FSGSBASE, FEATURE_FXSAVE, FEATURE_HLE, FEATURE_IBT,
+ 	FEATURE_LAHF_LM, FEATURE_LM, FEATURE_LWP, FEATURE_LZCNT,
+ 	FEATURE_MOVBE, FEATURE_MOVDIR64B, FEATURE_MOVDIRI,
+ 	FEATURE_MWAITX, FEATURE_OSXSAVE, FEATURE_PCONFIG,
+ 	FEATURE_PKU, FEATURE_PREFETCHWT1, FEATURE_PRFCHW,
+ 	FEATURE_PTWRITE, FEATURE_RDPID, FEATURE_RDRND, FEATURE_RDSEED,
+ 	FEATURE_RTM, FEATURE_SERIALIZE, FEATURE_SGX, FEATURE_SHA,
+ 	FEATURE_SHSTK, FEATURE_TBM, FEATURE_TSXLDTRK, FEATURE_VAES,
+ 	FEATURE_WAITPKG, FEATURE_WBNOINVD, FEATURE_XSAVE, FEATURE_XSAVEC,
+ 	FEATURE_XSAVEOPT, FEATURE_XSAVES and CPU_FEATURE_MAX.
+ 	(SIZE_OF_CPU_FEATURES): New.
+ 	* config/i386/i386-builtins.c (processor_features): Removed.
+ 	(isa_names_table): Replace F_XXX with FEATURE_XXX.
+ 	(fold_builtin_cpu): Change __cpu_features2 to an array.
+ 
+ 2020-06-24  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/95842
+ 	* common/config/i386/i386-common.c (processor_alias_table): Add
+ 	processor model and priority to each entry.
+ 	(pta_size): Updated with -6.
+ 	(num_arch_names): New.
+ 	* common/config/i386/i386-cpuinfo.h: New file.
+ 	* config/i386/i386-builtins.c (feature_priority): Removed.
+ 	(processor_model): Likewise.
+ 	(_arch_names_table): Likewise.
+ 	(arch_names_table): Likewise.
+ 	(_isa_names_table): Replace P_ZERO with P_NONE.
+ 	(get_builtin_code_for_version): Replace P_ZERO with P_NONE.  Use
+ 	processor_alias_table.
+ 	(fold_builtin_cpu): Replace arch_names_table with
+ 	processor_alias_table.
+ 	* config/i386/i386.h: Include "common/config/i386/i386-cpuinfo.h".
+ 	(pta): Add model and priority.
+ 	(num_arch_names): New.
+ 
+ 2020-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (vect_find_first_scalar_stmt_in_slp):
+ 	Declare.
+ 	* tree-vect-data-refs.c (vect_preserves_scalar_order_p):
+ 	Simplify for new position of vectorized SLP loads.
+ 	(vect_slp_analyze_node_dependences): Adjust for it.
+ 	(vect_slp_analyze_and_verify_node_alignment): Compute alignment
+ 	for the first stmts dataref.
+ 	* tree-vect-slp.c (vect_find_first_scalar_stmt_in_slp): New.
+ 	(vect_schedule_slp_instance): Emit loads before the
+ 	first scalar stmt.
+ 	* tree-vect-stmts.c (vectorizable_load): Do what the comment
+ 	says and use vect_find_first_scalar_stmt_in_slp.
+ 
+ 2020-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95856
+ 	* tree-vectorizer.c (vect_stmt_dominates_stmt_p): Honor
+ 	region marker -1u.
+ 
+ 2020-06-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/95810
+ 	* fold-const.c (fold_cond_expr_with_comparison): Optimize
+ 	A <= 0 ? A : -A into (type)-absu(A) rather than -abs(A).
+ 
+ 2020-06-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-low.c (lower_omp_for): Fix two pastos.
+ 
+ 2020-06-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	* optc-save-gen.awk: Compare string options in cl_optimization_compare
+ 	by strcmp.
+ 
+ 2020-06-23  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	* config.gcc: Identify power10 as a 64-bit processor and as valid
+ 	for --with-cpu and --with-tune.
+ 
+ 2020-06-23  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* Makefile.in (LANG_MAKEFRAGS): Same.
+ 	(tmake_file): Use -include.
+ 	(xmake_file): Same.
+ 
+ 2020-06-23  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* REVISION: Delete file meant for a private branch.
+ 
+ 2020-06-23  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR target/95646
+ 	* config/arm/arm.c: (cmse_nonsecure_entry_clear_before_return): Use
+ 	'callee_saved_reg_p' instead of 'calL_used_or_fixed_reg_p'.
+ 
+ 2020-06-23  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* collect-utils.h (dumppfx): New.
+ 	* collect-utils.c (dumppfx): Likewise.
+ 	* lto-wrapper.c (run_gcc): Set global dumppfx.
+ 	(compile_offload_image): Pass a -dumpbase on to mkoffload.
+ 	* config/nvptx/mkoffload.c (ptx_dumpbase): New.
+ 	(main): Handle incoming -dumpbase.  Set ptx_dumpbase.  Obey
+ 	save_temps.
+ 	(compile_native): Pass -dumpbase et al to compiler.
+ 	* config/gcn/mkoffload.c (gcn_dumpbase): New.
+ 	(main): Handle incoming -dumpbase.  Set gcn_dumpbase.  Obey
+ 	save_temps.  Pass -dumpbase et al to offload target compiler.
+ 	(compile_native): Pass -dumpbase et al to compiler.
+ 
+ 2020-06-23  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* REVISION: New file.
+ 
+ 2020-06-22  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/altivec.h: Use _ARCH_PWR10, not _ARCH_PWR_FUTURE.
+ 	Update comment for ISA 3.1.
+ 	* config/rs6000/altivec.md: Use TARGET_POWER10, not TARGET_FUTURE.
+ 	* config/rs6000/driver-rs6000.c (asm_names): Use -mpwr10 for power10
+ 	on AIX, and -mpower10 elsewhere.
+ 	* config/rs6000/future.md: Delete.
+ 	* config/rs6000/linux64.h: Update comments.  Use TARGET_POWER10, not
+ 	TARGET_FUTURE.
+ 	* config/rs6000/power10.md: New file.
+ 	* config/rs6000/ppc-auxv.h: Use PPC_PLATFORM_POWER10, not
+ 	PPC_PLATFORM_FUTURE.
+ 	* config/rs6000/rs6000-builtin.def: Update comments.  Use BU_P10V_*
+ 	names instead of BU_FUTURE_V_* names.  Use RS6000_BTM_P10 instead of
+ 	RS6000_BTM_FUTURE.  Use P10_BUILTIN_* instead of FUTURE_BUILTIN_*.
+ 	Use BU_P10_* instead of BU_FUTURE_*.
+ 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
+ 	_ARCH_PWR10 instead of _ARCH_PWR_FUTURE.
+ 	(altivec_resolve_overloaded_builtin): Use P10_BUILTIN_VEC_XXEVAL, not
+ 	FUTURE_BUILTIN_VEC_XXEVAL.
+ 	* config/rs6000/rs6000-call.c: Use P10_BUILTIN_*, not FUTURE_BUILTIN_*.
+ 	Update compiler messages.
+ 	* config/rs6000/rs6000-cpus.def: Update comments.  Use ISA_3_1_*, not
+ 	ISA_FUTURE_*.  Use OPTION_MASK_POWER10, not OPTION_MASK_FUTURE.
+ 	* config/rs6000/rs6000-opts.h: Use PROCESSOR_POWER10, not
+ 	PROCESSOR_FUTURE.
+ 	* config/rs6000/rs6000-string.c: Ditto.
+ 	* config/rs6000/rs6000-tables.opt (rs6000_cpu_opt_value): Use "power10"
+ 	instead of "future", reorder it to right after "power9".
+ 	* config/rs6000/rs6000.c: Update comments.  Use OPTION_MASK_POWER10,
+ 	not OPTION_MASK_FUTURE.  Use TARGET_POWER10, not TARGET_FUTURE.  Use
+ 	RS6000_BTM_P10, not RS6000_BTM_FUTURE.  Update compiler messages.
+ 	Use PROCESSOR_POWER10, not PROCESSOR_FUTURE.  Use ISA_3_1_MASKS_SERVER,
+ 	not ISA_FUTURE_MASKS_SERVER.
+ 	(rs6000_opt_masks): Use "power10" instead of "future".
+ 	(rs6000_builtin_mask_names): Ditto.
+ 	(rs6000_disable_incompatible_switches): Ditto.
+ 	* config/rs6000/rs6000.h: Use -mpower10, not -mfuture.  Use
+ 	-mcpu=power10, not -mcpu=future.  Use MASK_POWER10, not MASK_FUTURE.
+ 	Use OPTION_MASK_POWER10, not OPTION_MASK_FUTURE.  Use RS6000_BTM_P10,
+ 	not RS6000_BTM_FUTURE.
+ 	* config/rs6000/rs6000.md: Use "power10", not "future".  Use
+ 	TARGET_POWER10, not TARGET_FUTURE.  Include "power10.md", not
+ 	"future.md".
+ 	* config/rs6000/rs6000.opt (mfuture): Delete.
+ 	(mpower10): New.
+ 	* config/rs6000/t-rs6000: Use "power10.md", not "future.md".
+ 	* config/rs6000/vsx.md: Use TARGET_POWER10, not TARGET_FUTURE.
+ 
+ 2020-06-22  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* coretypes.h (first_type): Delete.
+ 	* recog.h (insn_gen_fn::operator()): Go back to using a decltype.
+ 
+ 2020-06-22  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* doc/sourcebuild.texi (arm_v8_1m_mve_fp_ok): Add item.
+ 	(arm_mve_hw): Likewise.
+ 
+ 2020-06-22  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/95791
+ 	* config/i386/i386.c (ix86_dirflag_mode_needed): Skip
+ 	EXT_REX_SSE_REG_P.
+ 
+ 2020-06-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95770
+ 	* tree-vect-slp.c (vect_schedule_slp_instance): Also consider
+ 	external defs.
+ 
+ 2020-06-22  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn.c (gcn_function_arg): Disallow vector arguments.
+ 	(gcn_return_in_memory): Return vectors in memory.
+ 
+ 2020-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-general.c (omp_extract_for_data): For triangular loops with
+ 	all loop invariant expressions constant where the innermost loop is
+ 	executed at least once compute number of iterations at compile time.
+ 
+ 2020-06-22  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv.h (ASM_SPEC): Remove riscv_expand_arch call.
+ 	(DRIVER_SELF_SPECS): New.
+ 
+ 2020-06-22  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv-builtins.c (RISCV_FTYPE_NAME0): New.
+ 	(RISCV_FTYPE_ATYPES0): New.
+ 	(riscv_builtins): Using RISCV_USI_FTYPE for frflags.
+ 	* config/riscv/riscv-ftypes.def: Remove VOID argument.
+ 
+ 2020-06-21  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* config.gcc: Use t-aix64, biarch64 and default64 for cpu_is_64bit.
+ 	* config/rs6000/aix72.h (ASM_SPEC): Remove aix64 option.
+ 	(ASM_SPEC32): New.
+ 	(ASM_SPEC64): New.
+ 	(ASM_CPU_SPEC): Remove vsx and altivec options.
+ 	(CPP_SPEC_COMMON): Rename from CPP_SPEC.
+ 	(CPP_SPEC32): New.
+ 	(CPP_SPEC64): New.
+ 	(CPLUSPLUS_CPP_SPEC): Rename to CPLUSPLUS_CPP_SPEC_COMMON..
+ 	(TARGET_DEFAULT): Only define if not BIARCH.
+ 	(LIB_SPEC_COMMON): Rename from LIB_SPEC.
+ 	(LIB_SPEC32): New.
+ 	(LIB_SPEC64): New.
+ 	(LINK_SPEC_COMMON): Rename from LINK_SPEC.
+ 	(LINK_SPEC32): New.
+ 	(LINK_SPEC64): New.
+ 	(STARTFILE_SPEC): Add 64 bit version of crtcxa and crtdbase.
+ 	(ASM_SPEC): Define 32 and 64 bit alternatives using DEFAULT_ARCH64_P.
+ 	(CPP_SPEC): Same.
+ 	(CPLUSPLUS_CPP_SPEC): Same.
+ 	(LIB_SPEC): Same.
+ 	(LINK_SPEC): Same.
+ 	(SUBTARGET_EXTRA_SPECS): Add new 32/64 specs.
+ 	* config/rs6000/defaultaix64.h: New file.
+ 	* config/rs6000/t-aix64: New file.
+ 
+ 2020-06-21  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	* config/rs6000/predicates.md (mma_assemble_input_operand): New.
+ 	* config/rs6000/rs6000-builtin.def (BU_MMA_1, BU_MMA_V2, BU_MMA_3,
+ 	BU_MMA_5, BU_MMA_6, BU_VSX_1): Add support macros for defining MMA
+ 	built-in functions.
+ 	(ASSEMBLE_ACC, ASSEMBLE_PAIR, DISASSEMBLE_ACC, DISASSEMBLE_PAIR,
+ 	PMXVBF16GER2, PMXVBF16GER2NN, PMXVBF16GER2NP, PMXVBF16GER2PN,
+ 	PMXVBF16GER2PP, PMXVF16GER2, PMXVF16GER2NN, PMXVF16GER2NP,
+ 	PMXVF16GER2PN, PMXVF16GER2PP, PMXVF32GER, PMXVF32GERNN,
+ 	PMXVF32GERNP, PMXVF32GERPN, PMXVF32GERPP, PMXVF64GER, PMXVF64GERNN,
+ 	PMXVF64GERNP, PMXVF64GERPN, PMXVF64GERPP, PMXVI16GER2, PMXVI16GER2PP,
+ 	PMXVI16GER2S, PMXVI16GER2SPP, PMXVI4GER8, PMXVI4GER8PP, PMXVI8GER4,
+ 	PMXVI8GER4PP, PMXVI8GER4SPP, XVBF16GER2, XVBF16GER2NN, XVBF16GER2NP,
+ 	XVBF16GER2PN, XVBF16GER2PP, XVCVBF16SP, XVCVSPBF16, XVF16GER2,
+ 	XVF16GER2NN, XVF16GER2NP, XVF16GER2PN, XVF16GER2PP, XVF32GER,
+ 	XVF32GERNN, XVF32GERNP, XVF32GERPN, XVF32GERPP, XVF64GER, XVF64GERNN,
+ 	XVF64GERNP, XVF64GERPN, XVF64GERPP, XVI16GER2, XVI16GER2PP, XVI16GER2S,
+ 	XVI16GER2SPP, XVI4GER8, XVI4GER8PP, XVI8GER4, XVI8GER4PP, XVI8GER4SPP,
+ 	XXMFACC, XXMTACC, XXSETACCZ): Add MMA built-ins.
+ 	* config/rs6000/rs6000.c (rs6000_emit_move): Use CONST_INT_P.
+ 	Allow zero constants.
+ 	(print_operand) <case 'A'>: New output modifier.
+ 	(rs6000_split_multireg_move): Add support for inserting accumulator
+ 	priming and depriming instructions.  Add support for splitting an
+ 	assemble accumulator pattern.
+ 	* config/rs6000/rs6000-call.c (mma_init_builtins, mma_expand_builtin,
+ 	rs6000_gimple_fold_mma_builtin): New functions.
+ 	(RS6000_BUILTIN_M): New macro.
+ 	(def_builtin): Handle RS6000_BTC_QUAD and RS6000_BTC_PAIR attributes.
+ 	(bdesc_mma): Add new MMA built-in support.
+ 	(htm_expand_builtin): Use RS6000_BTC_OPND_MASK.
+ 	(rs6000_invalid_builtin): Add handling of RS6000_BTM_FUTURE and
+ 	RS6000_BTM_MMA.
+ 	(rs6000_builtin_valid_without_lhs): Handle RS6000_BTC_VOID attribute.
+ 	(rs6000_gimple_fold_builtin): Call rs6000_builtin_is_supported_p
+ 	and rs6000_gimple_fold_mma_builtin.
+ 	(rs6000_expand_builtin): Call mma_expand_builtin.
+ 	Use RS6000_BTC_OPND_MASK.
+ 	(rs6000_init_builtins): Adjust comment.  Call mma_init_builtins.
+ 	(htm_init_builtins): Use RS6000_BTC_OPND_MASK.
+ 	(builtin_function_type): Handle VSX_BUILTIN_XVCVSPBF16 and
+ 	VSX_BUILTIN_XVCVBF16SP.
+ 	* config/rs6000/rs6000.h (RS6000_BTC_QUINARY, RS6000_BTC_SENARY,
+ 	RS6000_BTC_OPND_MASK, RS6000_BTC_QUAD, RS6000_BTC_PAIR,
+ 	RS6000_BTC_QUADPAIR, RS6000_BTC_GIMPLE): New defines.
+ 	(RS6000_BTC_PREDICATE, RS6000_BTC_ABS, RS6000_BTC_DST,
+ 	RS6000_BTC_TYPE_MASK, RS6000_BTC_ATTR_MASK): Adjust values.
+ 	* config/rs6000/mma.md (MAX_MMA_OPERANDS): New define_constant.
+ 	(UNSPEC_MMA_ASSEMBLE_ACC, UNSPEC_MMA_PMXVBF16GER2,
+ 	UNSPEC_MMA_PMXVBF16GER2NN, UNSPEC_MMA_PMXVBF16GER2NP,
+ 	UNSPEC_MMA_PMXVBF16GER2PN, UNSPEC_MMA_PMXVBF16GER2PP,
+ 	UNSPEC_MMA_PMXVF16GER2, UNSPEC_MMA_PMXVF16GER2NN,
+ 	UNSPEC_MMA_PMXVF16GER2NP, UNSPEC_MMA_PMXVF16GER2PN,
+ 	UNSPEC_MMA_PMXVF16GER2PP, UNSPEC_MMA_PMXVF32GER,
+ 	UNSPEC_MMA_PMXVF32GERNN, UNSPEC_MMA_PMXVF32GERNP,
+ 	UNSPEC_MMA_PMXVF32GERPN, UNSPEC_MMA_PMXVF32GERPP,
+ 	UNSPEC_MMA_PMXVF64GER, UNSPEC_MMA_PMXVF64GERNN,
+ 	UNSPEC_MMA_PMXVF64GERNP, UNSPEC_MMA_PMXVF64GERPN,
+ 	UNSPEC_MMA_PMXVF64GERPP, UNSPEC_MMA_PMXVI16GER2,
+ 	UNSPEC_MMA_PMXVI16GER2PP, UNSPEC_MMA_PMXVI16GER2S,
+ 	UNSPEC_MMA_PMXVI16GER2SPP, UNSPEC_MMA_PMXVI4GER8,
+ 	UNSPEC_MMA_PMXVI4GER8PP, UNSPEC_MMA_PMXVI8GER4,
+ 	UNSPEC_MMA_PMXVI8GER4PP, UNSPEC_MMA_PMXVI8GER4SPP,
+ 	UNSPEC_MMA_XVBF16GER2, UNSPEC_MMA_XVBF16GER2NN,
+ 	UNSPEC_MMA_XVBF16GER2NP, UNSPEC_MMA_XVBF16GER2PN,
+ 	UNSPEC_MMA_XVBF16GER2PP, UNSPEC_MMA_XVF16GER2, UNSPEC_MMA_XVF16GER2NN,
+ 	UNSPEC_MMA_XVF16GER2NP, UNSPEC_MMA_XVF16GER2PN, UNSPEC_MMA_XVF16GER2PP,
+ 	UNSPEC_MMA_XVF32GER, UNSPEC_MMA_XVF32GERNN, UNSPEC_MMA_XVF32GERNP,
+ 	UNSPEC_MMA_XVF32GERPN, UNSPEC_MMA_XVF32GERPP, UNSPEC_MMA_XVF64GER,
+ 	UNSPEC_MMA_XVF64GERNN, UNSPEC_MMA_XVF64GERNP, UNSPEC_MMA_XVF64GERPN,
+ 	UNSPEC_MMA_XVF64GERPP, UNSPEC_MMA_XVI16GER2, UNSPEC_MMA_XVI16GER2PP,
+ 	UNSPEC_MMA_XVI16GER2S, UNSPEC_MMA_XVI16GER2SPP, UNSPEC_MMA_XVI4GER8,
+ 	UNSPEC_MMA_XVI4GER8PP, UNSPEC_MMA_XVI8GER4, UNSPEC_MMA_XVI8GER4PP,
+ 	UNSPEC_MMA_XVI8GER4SPP, UNSPEC_MMA_XXMFACC, UNSPEC_MMA_XXMTACC): New.
+ 	(MMA_ACC, MMA_VV, MMA_AVV, MMA_PV, MMA_APV, MMA_VVI4I4I8,
+ 	MMA_AVVI4I4I8, MMA_VVI4I4I2, MMA_AVVI4I4I2, MMA_VVI4I4,
+ 	MMA_AVVI4I4, MMA_PVI4I2, MMA_APVI4I2, MMA_VVI4I4I4,
+ 	MMA_AVVI4I4I4): New define_int_iterator.
+ 	(acc, vv, avv, pv, apv, vvi4i4i8, avvi4i4i8, vvi4i4i2,
+ 	avvi4i4i2, vvi4i4, avvi4i4, pvi4i2, apvi4i2, vvi4i4i4,
+ 	avvi4i4i4): New define_int_attr.
+ 	(*movpxi): Add zero constant alternative.
+ 	(mma_assemble_pair, mma_assemble_acc): New define_expand.
+ 	(*mma_assemble_acc): New define_insn_and_split.
+ 	(mma_<acc>, mma_xxsetaccz, mma_<vv>, mma_<avv>, mma_<pv>, mma_<apv>,
+ 	mma_<vvi4i4i8>, mma_<avvi4i4i8>, mma_<vvi4i4i2>, mma_<avvi4i4i2>,
+ 	mma_<vvi4i4>, mma_<avvi4i4>, mma_<pvi4i2>, mma_<apvi4i2>,
+ 	mma_<vvi4i4i4>, mma_<avvi4i4i4>): New define_insn.
+ 	* config/rs6000/rs6000.md (define_attr "type"): New type mma.
+ 	* config/rs6000/vsx.md (UNSPEC_VSX_XVCVBF16SP): New.
+ 	(UNSPEC_VSX_XVCVSPBF16): Likewise.
+ 	(XVCVBF16): New define_int_iterator.
+ 	(xvcvbf16): New define_int_attr.
+ 	(vsx_<xvcvbf16>): New define_insn.
+ 	* doc/extend.texi: Document the mma built-ins.
+ 
+ 2020-06-21  Peter Bergner  <bergner@linux.ibm.com>
+ 	    Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/mma.md: New file.
+ 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
+ 	__MMA__ for mma.
+ 	* config/rs6000/rs6000-call.c (rs6000_init_builtins): Add support
+ 	for __vector_pair and __vector_quad types.
+ 	* config/rs6000/rs6000-cpus.def (OTHER_FUTURE_MASKS): Add
+ 	OPTION_MASK_MMA.
+ 	(POWERPC_MASKS): Likewise.
+ 	* config/rs6000/rs6000-modes.def (OI, XI): New integer modes.
+ 	(POI, PXI): New partial integer modes.
+ 	* config/rs6000/rs6000.c (TARGET_INVALID_CONVERSION): Define.
+ 	(rs6000_hard_regno_nregs_internal): Use VECTOR_ALIGNMENT_P.
+ 	(rs6000_hard_regno_mode_ok_uncached): Likewise.
+ 	Add support for POImode being allowed in VSX registers and PXImode
+ 	being allowed in FP registers.
+ 	(rs6000_modes_tieable_p): Adjust comment.
+ 	Add support for POImode and PXImode.
+ 	(rs6000_debug_reg_global) <print_tieable_modes>: Add OImode, POImode
+ 	XImode, PXImode, V2SImode, V2SFmode and CCFPmode..
+ 	(rs6000_setup_reg_addr_masks): Use VECTOR_ALIGNMENT_P.
+ 	Set up appropriate addr_masks for vector pair and vector quad addresses.
+ 	(rs6000_init_hard_regno_mode_ok): Add support for vector pair and
+ 	vector quad registers.  Setup reload handlers for POImode and PXImode.
+ 	(rs6000_builtin_mask_calculate): Add support for RS6000_BTM_MMA.
+ 	(rs6000_option_override_internal): Error if -mmma is specified
+ 	without -mcpu=future.
+ 	(rs6000_slow_unaligned_access): Use VECTOR_ALIGNMENT_P.
+ 	(quad_address_p): Change size test to less than 16 bytes.
+ 	(reg_offset_addressing_ok_p): Add support for ISA 3.1 vector pair
+ 	and vector quad instructions.
+ 	(avoiding_indexed_address_p): Likewise.
+ 	(rs6000_emit_move): Disallow POImode and PXImode moves involving
+ 	constants.
+ 	(rs6000_preferred_reload_class): Prefer VSX registers for POImode
+ 	and FP registers for PXImode.
+ 	(rs6000_split_multireg_move): Support splitting POImode and PXImode
+ 	move instructions.
+ 	(rs6000_mangle_type): Adjust comment.  Add support for mangling
+ 	__vector_pair and __vector_quad types.
+ 	(rs6000_opt_masks): Add entry for mma.
+ 	(rs6000_builtin_mask_names): Add RS6000_BTM_MMA and RS6000_BTM_FUTURE.
+ 	(rs6000_function_value): Use VECTOR_ALIGNMENT_P.
+ 	(address_to_insn_form): Likewise.
+ 	(reg_to_non_prefixed): Likewise.
+ 	(rs6000_invalid_conversion): New function.
+ 	* config/rs6000/rs6000.h (MASK_MMA): Define.
+ 	(BIGGEST_ALIGNMENT): Set to 512 if MMA support is enabled.
+ 	(VECTOR_ALIGNMENT_P): New helper macro.
+ 	(ALTIVEC_VECTOR_MODE): Use VECTOR_ALIGNMENT_P.
+ 	(RS6000_BTM_MMA): Define.
+ 	(RS6000_BTM_COMMON): Add RS6000_BTM_MMA and RS6000_BTM_FUTURE.
+ 	(rs6000_builtin_type_index): Add RS6000_BTI_vector_pair and
+ 	RS6000_BTI_vector_quad.
+ 	(vector_pair_type_node): New.
+ 	(vector_quad_type_node): New.
+ 	* config/rs6000/rs6000.md: Include mma.md.
+ 	(define_mode_iterator RELOAD): Add POI and PXI.
+ 	* config/rs6000/t-rs6000 (MD_INCLUDES): Add mma.md.
+ 	* config/rs6000/rs6000.opt (-mmma): New.
+ 	* doc/invoke.texi: Document -mmma.
+ 
+ 2020-06-20  Bin Cheng  <bin.cheng@linux.alibaba.com>
+ 
+ 	PR tree-optimization/95638
+ 	* tree-loop-distribution.c (pg_edge_callback_data): New field.
+ 	(loop_distribution::break_alias_scc_partitions): Record and restore
+ 	postorder information.  Fix memory leak.
+ 
+ 2020-06-19  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* config/gcn/gcn.c (gcn_related_vector_mode): Add ARG_UNUSED.
+ 	(output_file_start): Use const 'char *'.
+ 
+ 2020-06-19  Przemyslaw Wirkus  <Przemyslaw.Wirkus@arm.com>
+ 
+ 	PR tree-optimization/94880
+ 	* match.pd (A | B) - B -> (A & ~B): New simplification.
+ 
+ 2020-06-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_bb_slp_scalar_cost): Adjust
+ 	for lane permutations.
+ 
+ 2020-06-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95761
+ 	* tree-vect-slp.c (vect_schedule_slp_instance): Walk all
+ 	vectorized stmts for finding the last one.
+ 
+ 2020-06-18  Felix Yang  <felix.yang@huawei.com>
+ 
+ 	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Call
+ 	vect_relevant_for_alignment_p to filter out data references in
+ 	the loop whose alignment is irrelevant when trying loop peeling
+ 	to force alignment.
+ 
+ 2020-06-18  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*cmpqi_ext<mode>_1): Use SWI248 mode
+ 	iterator instead of SImode for ZERO_EXTRACT RTX.  Use SWI248
+ 	mode iterator for the first operand of ZERO_EXTRACT RTX.
+ 	Change ext_register_operand predicate to register_operand.
+ 	Rename from *cmpqi_ext_1.
+ 	(*cmpqi_ext<mode>_2): Ditto.  Rename from *cmpqi_ext_2.
+ 	(*cmpqi_ext<mode>_3): Ditto.  Rename from *cmpqi_ext_3.
+ 	(*cmpqi_ext<mode>_4): Ditto.  Rename from *cmpqi_ext_4.
+ 	(cmpi_ext_3): Use HImode instead of SImode for ZERO_EXTRACT RTX.
+ 	(*extv<mode>): Use SWI24 mode iterator for the first operand
+ 	of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
+ 	to register_operand.
+ 	(*extzv<mode>): Use SWI248 mode iterator for the first operand
+ 	of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
+ 	to register_operand.
+ 	(*extzvqi): Use SWI248 mode iterator instead of SImode for
+ 	ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the first operand
+ 	of ZERO_EXTRACT RTX.  Change ext_register_operand predicate to
+ 	register_operand.
+ 	(*extzvqi_mem_rex64 and corresponding peephole2):  Use SWI248 mode
+ 	iterator instead of SImode for ZERO_EXTRACT RTX.  Use SWI248
+ 	mode iterator for the first operand of ZERO_EXTRACT RTX.
+ 	Change ext_register_operand predicate to register_operand.
+ 	(@insv<mode>_1): Use SWI248 mode iterator for the first operand
+ 	of ZERO_EXTRACT RTX.  Change ext_register_operand predicate to
+ 	register_operand.
+ 	(*insvqi_1): Use SWI248 mode iterator instead of SImode
+ 	for ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the
+ 	first operand of ZERO_EXTRACT RTX.  Change ext_register_operand
+ 	predicate to register_operand.
+ 	(*insvqi_2): Ditto.
+ 	(*insvqi_3): Ditto.
+ 	(*insvqi_1_mem_rex64 and corresponding peephole2):  Use SWI248 mode
+ 	iterator instead of SImode for ZERO_EXTRACT RTX.  Use SWI248
+ 	mode iterator for the first operand of ZERO_EXTRACT RTX.
+ 	Change ext_register_operand predicate to register_operand.
+ 	(addqi_ext_1): New expander.
+ 	(*addqi_ext<mode>_1): Use SWI248 mode iterator instead of SImode
+ 	for ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the first
+ 	operand of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
+ 	to register_operand.  Rename from *addqi_ext_1.
+ 	(*addqi_ext<mode>_2): Ditto. Rename from *addqi_ext_2.
+ 	(divmodqi4): Use HImode instead of SImode for ZERO_EXTRACT RTX.
+ 	(udivmodqi4): Ditto.
+ 	(testqi_ext_1): Use HImode instead of SImode for ZERO_EXTRACT RTX.
+ 	(*testqi_ext<mode>_1): Use SWI248 mode iterator instead of SImode
+ 	for ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the first
+ 	operand of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
+ 	to register_operand.  Rename from *testqi_ext_1.
+ 	(*testqi_ext<mode>_2): Ditto.  Rename from *testqi_ext_2.
+ 	(andqi_ext_1): New expander.
+ 	(*andqi_ext<mode>_1): Use SWI248 mode iterator instead of SImode
+ 	for ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the first
+ 	operand of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
+ 	to register_operand.  Rename from andqi_ext_1.
+ 	(*andqi_ext<mode>_1_cc): Ditto.  Rename from *andqi_ext_1_cc.
+ 	(*andqi_ext<mode>_2): Ditto.  Rename from *andqi_ext_2.
+ 	(*<code>qi_ext<mode>_1): Ditto.  Rename from *<code>qi_ext_1.
+ 	(*<code>qi_ext<mode>_2): Ditto.  Rename from *<code>qi_ext_2.
+ 	(xorqi_ext_1_cc): Use HImode instead of SImode for ZERO_EXTRACT RTX.
+ 	(*xorqi_ext<mode>_1_cc):  Use SWI248 mode iterator instead of SImode
+ 	for ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the first
+ 	operand of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
+ 	to register_operand.  Rename from *xorqi_ext_1_cc.
+ 	* config/i386/i386-expand.c (ix86_split_idivmod): Emit ZERO_EXTRACT
+ 	in mode, matching its first operand.
+ 	(promote_duplicated_reg): Update for renamed insv<mode>_1.
+ 	* config/i386/predicates.md (ext_register_operand): Remove predicate.
+ 
+ 2020-06-18  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/95667
+ 	PR middle-end/92814
+ 	* builtins.c (compute_objsize): Remove call to
+ 	compute_builtin_object_size and instead compute conservative sizes
+ 	directly here.
+ 
+ 2020-06-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* coretypes.h (struct iterator_range): New type.
+ 	* tree-vect-patterns.c (vect_determine_precisions): Use
+ 	range-based iterator.
+ 	(vect_pattern_recog): Likewise.
+ 	* tree-vect-slp.c (_bb_vec_info):  Likewise.
+ 	(_bb_vec_info::~_bb_vec_info): Likewise.
+ 	(vect_slp_check_for_constructors): Likewise.
+ 	* tree-vectorizer.h:Add new iterators
+ 	and functions that use it.
+ 
+ 2020-06-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/rs6000/rs6000-call.c (fold_build_vec_cmp):
+ 	Since 502d63b6d6141597bb18fd23c87736a1b384cf8f, first argument
+ 	of a VEC_COND_EXPR cannot be tcc_comparison and so that
+ 	a SSA_NAME needs to be created before we use it for the first
+ 	argument of the VEC_COND_EXPR.
+ 	(fold_compare_helper): Pass gsi to fold_build_vec_cmp.
+ 
+ 2020-06-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/95739
+ 	* internal-fn.c (expand_vect_cond_optab_fn): Move the result
+ 	to the target if necessary.
+ 	(expand_vect_cond_mask_optab_fn): Likewise.
+ 
+ 2020-06-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* tree-ssa-reassoc.c (ovce_extract_ops): Replace *vcond with
+ 	vcond as we check for NULL pointer.
+ 
+ 2020-06-18  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* gimple-pretty-print.c (dump_binary_rhs): Use braces to
+ 	silence empty-body warning with gcc_fallthrough.
+ 
+ 2020-06-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/95699
+ 	* tree-ssa-phiopt.c (minmax_replacement): Treat (signed int)x < 0
+ 	as x > INT_MAX and (signed int)x >= 0 as x <= INT_MAX.  Move variable
+ 	declarations to the statements that set them where possible.
+ 
+ 2020-06-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/95713
+ 	* tree-ssa-forwprop.c (simplify_vector_constructor): Don't allow
+ 	scalar mode halfvectype other than vector boolean for
+ 	VEC_PACK_TRUNC_EXPR.
+ 
+ 2020-06-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	* varasm.c (assemble_variable): Make sure to not
+ 	defer output when outputting addressed constants.
+ 	(output_constant_def_contents): Likewise.
+ 	(add_constant_to_table): Take and pass on whether to
+ 	defer output.
+ 	(output_addressed_constants): Likewise.
+ 	(output_constant_def): Pass on whether to defer output
+ 	to add_constant_to_table.
+ 	(tree_output_constant_def): Defer output of constants.
+ 
+ 2020-06-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (_slp_tree::two_operators): Remove.
+ 	(_slp_tree::lane_permutation): New member.
+ 	(_slp_tree::code): Likewise.
+ 	(SLP_TREE_TWO_OPERATORS): Remove.
+ 	(SLP_TREE_LANE_PERMUTATION): New.
+ 	(SLP_TREE_CODE): Likewise.
+ 	(vect_stmt_dominates_stmt_p): Declare.
+ 	* tree-vectorizer.c (vect_stmt_dominates_stmt_p): New function.
+ 	* tree-vect-stmts.c (vect_model_simple_cost): Remove
+ 	SLP_TREE_TWO_OPERATORS handling.
+ 	* tree-vect-slp.c (_slp_tree::_slp_tree): Amend.
+ 	(_slp_tree::~_slp_tree): Likewise.
+ 	(vect_two_operations_perm_ok_p): Remove.
+ 	(vect_build_slp_tree_1): Remove verification of two-operator
+ 	permutation here.
+ 	(vect_build_slp_tree_2): When we have two different operators
+ 	build two computation SLP nodes and a blend.
+ 	(vect_print_slp_tree): Print the lane permutation if it exists.
+ 	(slp_copy_subtree): Copy it.
+ 	(vect_slp_rearrange_stmts): Re-arrange it.
+ 	(vect_slp_analyze_node_operations_1): Handle SLP_TREE_CODE
+ 	VEC_PERM_EXPR explicitely.
+ 	(vect_schedule_slp_instance): Likewise.  Remove old
+ 	SLP_TREE_TWO_OPERATORS code.
+ 	(vectorizable_slp_permutation): New function.
+ 
+ 2020-06-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* tree-vect-generic.c (expand_vector_condition): Check
+ 	for gassign before inspecting RHS.
+ 
+ 2020-06-17  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* gimplify.c (omp_notice_threadprivate_variable)
+ 	(omp_default_clause, omp_notice_variable): 'inform' after 'error'
+ 	diagnostic.  Adjust all users.
+ 
+ 2020-06-17  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* hsa-gen.c (gen_hsa_insns_for_call): Move 'function_decl ==
+ 	NULL_TREE' check earlier.
+ 
+ 2020-06-17  Forrest Timour  <forrest.timour@gmail.com>
+ 
+ 	* doc/extend.texi (attribute access): Fix a typo.
+ 
+ 2020-06-17  Bin Cheng  <bin.cheng@linux.alibaba.com>
+ 	    Kaipeng Zhou  <zhoukaipeng3@huawei.com>
+ 
+ 	PR tree-optimization/95199
+ 	* tree-vect-stmts.c: Eliminate common stmts for bump and offset in
+ 	strided load/store operations and remove redundant code.
+ 
+ 2020-06-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* coretypes.h (first_type): New alias template.
+ 	* recog.h (insn_gen_fn::operator()): Use it instead of a decltype.
+ 	Remove spurious “...” and split the function type out into a typedef.
+ 
+ 2020-06-17  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_fix_long_loop_prediction): Exit early
+ 	for PARALLELs.
+ 
+ 2020-06-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_build_slp_tree_1): Set the passed
+ 	in *vectype parameter.
+ 	(vect_build_slp_tree_2): Set SLP_TREE_VECTYPE from what
+ 	vect_build_slp_tree_1 computed.
+ 	(vect_analyze_slp_instance): Set SLP_TREE_VECTYPE.
+ 	(vect_slp_analyze_node_operations_1): Use the SLP node vector type.
+ 	(vect_schedule_slp_instance): Likewise.
+ 	* tree-vect-stmts.c (vect_is_simple_use): Take the vector type
+ 	from SLP_TREE_VECTYPE.
+ 
+ 2020-06-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95717
+ 	* tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg):
+ 	Move BB SSA updating before exit/latch PHI current def copying.
+ 
+ 2020-06-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Add new file.
+ 	* expr.c (expand_expr_real_2): Add gcc_unreachable as we should
+ 	not meet this condition.
+ 	(do_store_flag): Likewise.
+ 	* gimplify.c (gimplify_expr): Gimplify first argument of
+ 	VEC_COND_EXPR to be a SSA name.
+ 	* internal-fn.c (vec_cond_mask_direct): New.
+ 	(vec_cond_direct): Likewise.
+ 	(vec_condu_direct): Likewise.
+ 	(vec_condeq_direct): Likewise.
+ 	(expand_vect_cond_optab_fn):  New.
+ 	(expand_vec_cond_optab_fn): Likewise.
+ 	(expand_vec_condu_optab_fn): Likewise.
+ 	(expand_vec_condeq_optab_fn): Likewise.
+ 	(expand_vect_cond_mask_optab_fn): Likewise.
+ 	(expand_vec_cond_mask_optab_fn): Likewise.
+ 	(direct_vec_cond_mask_optab_supported_p): Likewise.
+ 	(direct_vec_cond_optab_supported_p): Likewise.
+ 	(direct_vec_condu_optab_supported_p): Likewise.
+ 	(direct_vec_condeq_optab_supported_p): Likewise.
+ 	* internal-fn.def (VCOND): New OPTAB.
+ 	(VCONDU): Likewise.
+ 	(VCONDEQ): Likewise.
+ 	(VCOND_MASK): Likewise.
+ 	* optabs.c (get_rtx_code): Make it global.
+ 	(expand_vec_cond_mask_expr): Removed.
+ 	(expand_vec_cond_expr): Removed.
+ 	* optabs.h (expand_vec_cond_expr): Likewise.
+ 	(vector_compare_rtx): Make it global.
+ 	* passes.def: Add new pass_gimple_isel pass.
+ 	* tree-cfg.c (verify_gimple_assign_ternary): Add check
+ 	for VEC_COND_EXPR about first argument.
+ 	* tree-pass.h (make_pass_gimple_isel): New.
+ 	* tree-ssa-forwprop.c (pass_forwprop::execute): Prevent
+ 	propagation of the first argument of a VEC_COND_EXPR.
+ 	* tree-ssa-reassoc.c (ovce_extract_ops): Support SSA_NAME as
+ 	first argument of a VEC_COND_EXPR.
+ 	(optimize_vec_cond_expr): Likewise.
+ 	* tree-vect-generic.c (expand_vector_divmod): Make SSA_NAME
+ 	for a first argument of created VEC_COND_EXPR.
+ 	(expand_vector_condition): Fix coding style.
+ 	* tree-vect-stmts.c (vectorizable_condition): Gimplify
+ 	first argument.
+ 	* gimple-isel.cc: New file.
+ 
+ 2020-06-17  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-hsa.h (TEXT_SECTION_ASM_OP): Use ".text".
+ 	(BSS_SECTION_ASM_OP): Use ".bss".
+ 	(ASM_SPEC): Remove "-mattr=-code-object-v3".
+ 	(LINK_SPEC): Add "--export-dynamic".
+ 	* config/gcn/gcn-opts.h (processor_type): Replace PROCESSOR_VEGA with
+ 	PROCESSOR_VEGA10 and PROCESSOR_VEGA20.
+ 	* config/gcn/gcn-run.c (HSA_RUNTIME_LIB): Use ".so.1" variant.
+ 	(load_image): Remove obsolete relocation handling.
+ 	Add ".kd" suffix to the symbol names.
+ 	* config/gcn/gcn.c (MAX_NORMAL_SGPR_COUNT): Set to 62.
+ 	(gcn_option_override): Update gcn_isa test.
+ 	(gcn_kernel_arg_types): Update all the assembler directives.
+ 	Remove the obsolete options.
+ 	(gcn_conditional_register_usage): Update MAX_NORMAL_SGPR_COUNT usage.
+ 	(gcn_omp_device_kind_arch_isa): Handle PROCESSOR_VEGA10 and
+ 	PROCESSOR_VEGA20.
+ 	(output_file_start): Rework assembler file header.
+ 	(gcn_hsa_declare_function_name): Rework kernel metadata.
+ 	* config/gcn/gcn.h (GCN_KERNEL_ARG_TYPES): Set to 16.
+ 	* config/gcn/gcn.opt (PROCESSOR_VEGA): Remove enum.
+ 	(PROCESSOR_VEGA10): New enum value.
+ 	(PROCESSOR_VEGA20): New enum value.
+ 
+ 2020-06-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov-dump.c (print_version): Collapse lisence header to 2 lines
+ 	in --version.
+ 	* gcov-tool.c (print_version): Likewise.
+ 	* gcov.c (print_version): Likewise.
+ 
+ 2020-06-17  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/95524
+ 	* config/i386/i386-expand.c
+ 	(ix86_expand_vec_shift_qihi_constant): New function.
+ 	* config/i386/i386-protos.h
+ 	(ix86_expand_vec_shift_qihi_constant): Declare.
+ 	* config/i386/sse.md (<shift_insn><mode>3): Optimize shift
+ 	V*QImode by constant.
+ 
+ 2020-06-16  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/95649
+ 	* tree-ssa-propagate.c (propagate_into_phi_args): Do not propagate unless
+ 	value is a constant.
+ 
+ 2020-06-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	* config.in: Regenerate.
+ 	* config/s390/s390.c (print_operand): Emit vector alignment hints
+ 	for target z13, if AS accepts them.  For other targets the logic
+ 	stays the same.
+ 	* config/s390/s390.h (TARGET_VECTOR_LOADSTORE_ALIGNMENT_HINTS): Define
+ 	macro.
+ 	* configure: Regenerate.
+ 	* configure.ac: Check HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS_ON_Z13.
+ 
+ 2020-06-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm_mve.h (__arm_vaddq_m_n_s8): Correct the intrinsic
+ 	arguments.
+ 	(__arm_vaddq_m_n_s32): Likewise.
+ 	(__arm_vaddq_m_n_s16): Likewise.
+ 	(__arm_vaddq_m_n_u8): Likewise.
+ 	(__arm_vaddq_m_n_u32): Likewise.
+ 	(__arm_vaddq_m_n_u16): Likewise.
+ 	(__arm_vaddq_m): Modify polymorphic variant.
+ 
+ 2020-06-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/mve.md (mve_uqrshll_sat<supf>_di): Correct the predicate
+ 	and constraint of all the operands.
+ 	(mve_sqrshrl_sat<supf>_di): Likewise.
+ 	(mve_uqrshl_si): Likewise.
+ 	(mve_sqrshr_si): Likewise.
+ 	(mve_uqshll_di): Likewise.
+ 	(mve_urshrl_di): Likewise.
+ 	(mve_uqshl_si): Likewise.
+ 	(mve_urshr_si): Likewise.
+ 	(mve_sqshl_si): Likewise.
+ 	(mve_srshr_si): Likewise.
+ 	(mve_srshrl_di): Likewise.
+ 	(mve_sqshll_di): Likewise.
+ 	* config/arm/predicates.md (arm_low_register_operand): Define.
+ 
+ 2020-06-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree.h (OMP_FOR_NON_RECTANGULAR): Define.
+ 	* gimplify.c (gimplify_omp_for): Diagnose schedule, ordered
+ 	or dist_schedule clause on non-rectangular loops.  Handle
+ 	gimplification of non-rectangular lb/b expressions.  When changing
+ 	iteration variable, adjust also non-rectangular lb/b expressions
+ 	referencing that.
+ 	* omp-general.h (struct omp_for_data_loop): Add m1, m2 and outer
+ 	members.
+ 	(struct omp_for_data): Add non_rect member.
+ 	* omp-general.c (omp_extract_for_data): Handle non-rectangular
+ 	loops.  Fill in non_rect, m1, m2 and outer.
+ 	* omp-low.c (lower_omp_for): Handle non-rectangular lb/b expressions.
+ 	* omp-expand.c (expand_omp_for): Emit sorry_at for unsupported
+ 	non-rectangular loop cases and assert for cases that can't be
+ 	non-rectangular.
+ 	* tree-pretty-print.c (dump_mem_ref): Formatting fix.
+ 	(dump_omp_loop_non_rect_expr): New function.
+ 	(dump_generic_node): Handle non-rectangular OpenMP loops.
+ 	* tree-pretty-print.h (dump_omp_loop_non_rect_expr): Declare.
+ 	* gimple-pretty-print.c (dump_gimple_omp_for): Handle non-rectangular
+ 	OpenMP loops.
+ 
+ 2020-06-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/95690
+ 	* varasm.c (build_constant_desc): Remove set_mem_attributes call.
+ 
+ 2020-06-16  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	PR target/95683
+ 	* config/riscv/riscv.c (riscv_gpr_save_operation_p): Remove
+ 	assertion and turn it into a early exit check.
+ 
+ 2020-06-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gimplify.c (gimplify_init_constructor) <AGGREGATE_TYPE>: Declare
+ 	new ENSURE_SINGLE_ACCESS constant and move variables down.  If it is
+ 	true and all elements are zero, then always clear.  Return GS_ERROR
+ 	if a temporary would be created for it and NOTIFY_TEMP_CREATION set.
+ 	(gimplify_modify_expr_rhs) <VAR_DECL>: If the target is volatile but
+ 	the type is aggregate non-addressable, ask gimplify_init_constructor
+ 	whether it can generate a single access to the target.
+ 
+ 2020-06-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree-sra.c (propagate_subaccesses_from_rhs): When a non-scalar
+ 	access on the LHS is replaced with a scalar access, propagate the
+ 	TYPE_REVERSE_STORAGE_ORDER flag of the type of the original access.
+ 
+ 2020-06-15  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.c (TARGET_HAVE_TLS): Remove
+ 	TARGET_THREADPTR reference.
+ 	(xtensa_tls_symbol_p, xtensa_tls_referenced_p): Use
+ 	targetm.have_tls instead of TARGET_HAVE_TLS.
+ 	(xtensa_option_override): Set targetm.have_tls to false in
+ 	configurations without THREADPTR.
+ 
+ 2020-06-15  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/elf.h (ASM_SPEC, LINK_SPEC): Pass ABI switch to
+ 	assembler/linker.
+ 	* config/xtensa/linux.h (ASM_SPEC, LINK_SPEC): Ditto.
+ 	* config/xtensa/uclinux.h (ASM_SPEC, LINK_SPEC): Ditto.
+ 	* config/xtensa/xtensa.c (xtensa_option_override): Initialize
+ 	xtensa_windowed_abi if needed.
+ 	* config/xtensa/xtensa.h (TARGET_WINDOWED_ABI_DEFAULT): New
+ 	macro.
+ 	(TARGET_WINDOWED_ABI): Redefine to xtensa_windowed_abi.
+ 	* config/xtensa/xtensa.opt (xtensa_windowed_abi): New target
+ 	option variable.
+ 	(mabi=call0, mabi=windowed): New options.
+ 	* doc/invoke.texi: Document new -mabi= Xtensa-specific options.
+ 
+ 2020-06-15  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.c (xtensa_can_eliminate): New function.
+ 	(TARGET_CAN_ELIMINATE): New macro.
+ 	* config/xtensa/xtensa.h
+ 	(XTENSA_WINDOWED_HARD_FRAME_POINTER_REGNUM)
+ 	(XTENSA_CALL0_HARD_FRAME_POINTER_REGNUM): New macros.
+ 	(HARD_FRAME_POINTER_REGNUM): Define using
+ 	XTENSA_*_HARD_FRAME_POINTER_REGNUM.
+ 	(ELIMINABLE_REGS): Replace lines with HARD_FRAME_POINTER_REGNUM
+ 	by lines with XTENSA_WINDOWED_HARD_FRAME_POINTER_REGNUM and
+ 	XTENSA_CALL0_HARD_FRAME_POINTER_REGNUM.
+ 
+ 2020-06-15  Felix Yang  <felix.yang@huawei.com>
+ 
+ 	* tree-vect-data-refs.c (vect_verify_datarefs_alignment): Rename
+ 	parameter to loop_vinfo and update uses.  Use LOOP_VINFO_DATAREFS
+ 	when possible.
+ 	(vect_analyze_data_refs_alignment): Likewise, and use LOOP_VINFO_DDRS
+ 	when possible.
+ 	* tree-vect-loop.c (vect_dissolve_slp_only_groups): Use
+ 	LOOP_VINFO_DATAREFS when possible.
+ 	(update_epilogue_loop_vinfo): Likewise.
+ 
+ 2020-06-15  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv.c (riscv_gen_gpr_save_insn): Change type to
+ 	unsigned for i.
+ 	(riscv_gpr_save_operation_p): Change type to unsigned for i and
+ 	len.
+ 
+ 2020-06-15   Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	PR target/95488
+ 	* config/i386/i386-expand.c (ix86_expand_vecmul_qihi): New
+ 	function.
+ 	* config/i386/i386-protos.h (ix86_expand_vecmul_qihi): Declare.
+ 	* config/i386/sse.md (mul<mode>3): Drop mask_name since
+ 	there's no real simd int8 multiplication instruction with
+ 	mask. Also optimize it under TARGET_AVX512BW.
+ 	(mulv8qi3): New expander.
+ 
+ 2020-06-12  Marco Elver  <elver@google.com>
+ 
+ 	* gimplify.c (gimplify_function_tree): Optimize and do not emit
+ 	IFN_TSAN_FUNC_EXIT in a finally block if we do not need it.
+ 	* params.opt: Add --param=tsan-instrument-func-entry-exit=.
+ 	* tsan.c (instrument_memory_accesses): Make
+ 	fentry_exit_instrument bool depend on new param.
+ 
+ 2020-06-12  Felix Yang  <felix.yang@huawei.com>
+ 
+ 	PR tree-optimization/95570
+ 	* tree-vect-data-refs.c (vect_relevant_for_alignment_p): New function.
+ 	(vect_verify_datarefs_alignment): Call it to filter out data references
+ 	in the loop whose alignment is irrelevant.
+ 	(vect_get_peeling_costs_all_drs): Likewise.
+ 	(vect_peeling_supportable): Likewise.
+ 	(vect_enhance_data_refs_alignment): Likewise.
+ 
+ 2020-06-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95633
+ 	* tree-vect-stmts.c (vectorizable_condition): Properly
+ 	guard the vec_else_clause access with EXTRACT_LAST_REDUCTION.
+ 
+ 2020-06-12  Martin Liška  <mliska@suse.cz>
+ 
+ 	* cgraphunit.c (process_symver_attribute): Wrap weakref keyword.
+ 	* dbgcnt.c (dbg_cnt_set_limit_by_index): Do not print extra new
+ 	line.
+ 	* lto-wrapper.c (merge_and_complain): Wrap option names.
+ 
+ 2020-06-12  Kewen Lin  <linkw@gcc.gnu.org>
+ 
+ 	* tree-vect-loop-manip.c (vect_set_loop_controls_directly): Rename
+ 	LOOP_VINFO_MASK_COMPARE_TYPE to LOOP_VINFO_RGROUP_COMPARE_TYPE.  Rename
+ 	LOOP_VINFO_MASK_IV_TYPE to LOOP_VINFO_RGROUP_IV_TYPE.
+ 	(vect_set_loop_condition_masked): Renamed to ...
+ 	(vect_set_loop_condition_partial_vectors): ... this.  Rename
+ 	LOOP_VINFO_MASK_COMPARE_TYPE to LOOP_VINFO_RGROUP_COMPARE_TYPE.  Rename
+ 	vect_iv_limit_for_full_masking to vect_iv_limit_for_partial_vectors.
+ 	(vect_set_loop_condition_unmasked): Renamed to ...
+ 	(vect_set_loop_condition_normal): ... this.
+ 	(vect_set_loop_condition): Rename vect_set_loop_condition_unmasked to
+ 	vect_set_loop_condition_normal.  Rename vect_set_loop_condition_masked
+ 	to vect_set_loop_condition_partial_vectors.
+ 	(vect_prepare_for_masked_peels): Rename LOOP_VINFO_MASK_COMPARE_TYPE
+ 	to LOOP_VINFO_RGROUP_COMPARE_TYPE.
+ 	* tree-vect-loop.c (vect_known_niters_smaller_than_vf): New, factored
+ 	out from ...
+ 	(vect_analyze_loop_costing): ... this.
+ 	(_loop_vec_info::_loop_vec_info): Rename mask_compare_type to
+ 	compare_type.
+ 	(vect_min_prec_for_max_niters): New, factored out from ...
+ 	(vect_verify_full_masking): ... this.  Rename
+ 	vect_iv_limit_for_full_masking to vect_iv_limit_for_partial_vectors.
+ 	Rename LOOP_VINFO_MASK_COMPARE_TYPE to LOOP_VINFO_RGROUP_COMPARE_TYPE.
+ 	Rename LOOP_VINFO_MASK_IV_TYPE to LOOP_VINFO_RGROUP_IV_TYPE.
+ 	(vectorizable_reduction): Update some dumpings with partial
+ 	vectors instead of fully-masked.
+ 	(vectorizable_live_operation): Likewise.
+ 	(vect_iv_limit_for_full_masking): Renamed to ...
+ 	(vect_iv_limit_for_partial_vectors): ... this.
+ 	* tree-vect-stmts.c (check_load_store_masking): Renamed to ...
+ 	(check_load_store_for_partial_vectors): ... this.  Update some
+ 	dumpings with partial vectors instead of fully-masked.
+ 	(vectorizable_store): Rename check_load_store_masking to
+ 	check_load_store_for_partial_vectors.
+ 	(vectorizable_load): Likewise.
+ 	* tree-vectorizer.h (LOOP_VINFO_MASK_COMPARE_TYPE): Renamed to ...
+ 	(LOOP_VINFO_RGROUP_COMPARE_TYPE): ... this.
+ 	(LOOP_VINFO_MASK_IV_TYPE): Renamed to ...
+ 	(LOOP_VINFO_RGROUP_IV_TYPE): ... this.
+ 	(vect_iv_limit_for_full_masking): Renamed to ...
+ 	(vect_iv_limit_for_partial_vectors): this.
+ 	(_loop_vec_info): Rename mask_compare_type to rgroup_compare_type.
+ 	Rename iv_type to rgroup_iv_type.
+ 
+ 2020-06-12  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* recog.h (insn_gen_fn::f0, insn_gen_fn::f1, insn_gen_fn::f2)
+ 	(insn_gen_fn::f3, insn_gen_fn::f4, insn_gen_fn::f5, insn_gen_fn::f6)
+ 	(insn_gen_fn::f7, insn_gen_fn::f8, insn_gen_fn::f9, insn_gen_fn::f10)
+ 	(insn_gen_fn::f11, insn_gen_fn::f12, insn_gen_fn::f13)
+ 	(insn_gen_fn::f14, insn_gen_fn::f15, insn_gen_fn::f16): Delete.
+ 	(insn_gen_fn::operator()): Replace overloaded definitions with
+ 	a parameter-pack version.
+ 
+ 2020-06-12  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/93492
+ 	* config/i386/i386-features.c (rest_of_insert_endbranch):
+ 	Renamed to ...
+ 	(rest_of_insert_endbr_and_patchable_area): Change return type
+ 	to void. Add need_endbr and patchable_area_size arguments.
+ 	Don't call timevar_push nor timevar_pop.  Replace
+ 	endbr_queued_at_entrance with insn_queued_at_entrance.  Insert
+ 	UNSPECV_PATCHABLE_AREA for patchable area.
+ 	(pass_data_insert_endbranch): Renamed to ...
+ 	(pass_data_insert_endbr_and_patchable_area): This.  Change
+ 	pass name to endbr_and_patchable_area.
+ 	(pass_insert_endbranch): Renamed to ...
+ 	(pass_insert_endbr_and_patchable_area): This.  Add need_endbr
+ 	and patchable_area_size;.
+ 	(pass_insert_endbr_and_patchable_area::gate): Set and check
+ 	need_endbr and patchable_area_size.
+ 	(pass_insert_endbr_and_patchable_area::execute): Call
+ 	timevar_push and timevar_pop.  Pass need_endbr and
+ 	patchable_area_size to rest_of_insert_endbr_and_patchable_area.
+ 	(make_pass_insert_endbranch): Renamed to ...
+ 	(make_pass_insert_endbr_and_patchable_area): This.
+ 	* config/i386/i386-passes.def: Replace pass_insert_endbranch
+ 	with pass_insert_endbr_and_patchable_area.
+ 	* config/i386/i386-protos.h (ix86_output_patchable_area): New.
+ 	(make_pass_insert_endbranch): Renamed to ...
+ 	(make_pass_insert_endbr_and_patchable_area): This.
+ 	* config/i386/i386.c (ix86_asm_output_function_label): Set
+ 	function_label_emitted to true.
+ 	(ix86_print_patchable_function_entry): New function.
+ 	(ix86_output_patchable_area): Likewise.
+ 	(x86_function_profiler): Replace endbr_queued_at_entrance with
+ 	insn_queued_at_entrance.  Generate ENDBR only for TYPE_ENDBR.
+ 	Call ix86_output_patchable_area to generate patchable area if
+ 	needed.
+ 	(TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY): New.
+ 	* config/i386/i386.h (queued_insn_type): New.
+ 	(machine_function): Add function_label_emitted.  Replace
+ 	endbr_queued_at_entrance with insn_queued_at_entrance.
+ 	* config/i386/i386.md (UNSPECV_PATCHABLE_AREA): New.
+ 	(patchable_area): New.
+ 
+ 2020-06-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_density_test): Fix GNU coding
+ 	style.
+ 
+ 2020-06-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/95627
+ 	* config/rs6000/rs6000.c (rs6000_density_test): Skip debug
+ 	statements.
+ 
+ 2020-06-11  Martin Liska  <mliska@suse.cz>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/95634
+ 	* asan.c (asan_emit_stack_protection): Fix emission for ilp32
+ 	by using Pmode instead of ptr_mode.
+ 
+ 2020-06-11  Kewen Lin  <linkw@gcc.gnu.org>
+ 
+ 	* tree-vect-loop-manip.c (vect_set_loop_mask): Renamed to ...
+ 	(vect_set_loop_control): ... this.
+ 	(vect_maybe_permute_loop_masks): Rename rgroup_masks related things.
+ 	(vect_set_loop_masks_directly): Renamed to ...
+ 	(vect_set_loop_controls_directly): ... this.  Also rename some
+ 	variables with ctrl instead of mask.  Rename vect_set_loop_mask to
+ 	vect_set_loop_control.
+ 	(vect_set_loop_condition_masked): Rename rgroup_masks related things.
+ 	Also rename some variables with ctrl instead of mask.
+ 	* tree-vect-loop.c (release_vec_loop_masks): Renamed to ...
+ 	(release_vec_loop_controls): ... this.  Rename rgroup_masks related
+ 	things.
+ 	(_loop_vec_info::~_loop_vec_info): Rename release_vec_loop_masks to
+ 	release_vec_loop_controls.
+ 	(can_produce_all_loop_masks_p): Rename rgroup_masks related things.
+ 	(vect_get_max_nscalars_per_iter): Likewise.
+ 	(vect_estimate_min_profitable_iters): Likewise.
+ 	(vect_record_loop_mask): Likewise.
+ 	(vect_get_loop_mask): Likewise.
+ 	* tree-vectorizer.h (struct rgroup_masks): Renamed to ...
+ 	(struct rgroup_controls): ... this.  Also rename mask_type
+ 	to type and rename masks to controls.
+ 
+ 2020-06-11  Kewen Lin  <linkw@gcc.gnu.org>
+ 
+ 	* tree-vect-loop-manip.c (vect_set_loop_condition): Rename
+ 	LOOP_VINFO_FULLY_MASKED_P to LOOP_VINFO_USING_PARTIAL_VECTORS_P.
+ 	(vect_gen_vector_loop_niters): Likewise.
+ 	(vect_do_peeling): Likewise.
+ 	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Rename
+ 	fully_masked_p to using_partial_vectors_p.
+ 	(vect_analyze_loop_costing): Rename LOOP_VINFO_FULLY_MASKED_P to
+ 	LOOP_VINFO_USING_PARTIAL_VECTORS_P.
+ 	(determine_peel_for_niter): Likewise.
+ 	(vect_estimate_min_profitable_iters): Likewise.
+ 	(vect_transform_loop): Likewise.
+ 	* tree-vectorizer.h (LOOP_VINFO_FULLY_MASKED_P): Updated.
+ 	(LOOP_VINFO_USING_PARTIAL_VECTORS_P): New macro.
+ 
+ 2020-06-11  Kewen Lin  <linkw@gcc.gnu.org>
+ 
+ 	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Rename
+ 	can_fully_mask_p to can_use_partial_vectors_p.
+ 	(vect_analyze_loop_2): Rename LOOP_VINFO_CAN_FULLY_MASK_P to
+ 	LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P.  Rename saved_can_fully_mask_p
+ 	to saved_can_use_partial_vectors_p.
+ 	(vectorizable_reduction): Rename LOOP_VINFO_CAN_FULLY_MASK_P to
+ 	LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P.
+ 	(vectorizable_live_operation): Likewise.
+ 	* tree-vect-stmts.c (permute_vec_elements): Likewise.
+ 	(check_load_store_masking): Likewise.
+ 	(vectorizable_operation): Likewise.
+ 	(vectorizable_store): Likewise.
+ 	(vectorizable_load): Likewise.
+ 	(vectorizable_condition): Likewise.
+ 	* tree-vectorizer.h (LOOP_VINFO_CAN_FULLY_MASK_P): Renamed to ...
+ 	(LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P): ... this.
+ 	(_loop_vec_info): Rename can_fully_mask_p to can_use_partial_vectors_p.
+ 
+ 2020-06-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	* optc-save-gen.awk: Quote error string.
+ 
+ 2020-06-11  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* print-rtl.c (print_mem_expr): Enable TDF_SLIM in dump_flags.
+ 
+ 2020-06-11  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv-protos.h (riscv_output_gpr_save): Remove.
+ 	* config/riscv/riscv-sr.c (riscv_sr_match_prologue): Update
+ 	value.
+ 	* config/riscv/riscv.c (riscv_output_gpr_save): Remove.
+ 	* config/riscv/riscv.md (gpr_save): Update output asm pattern.
+ 
+ 2020-06-11  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/predicates.md (gpr_save_operation): New.
+ 	* config/riscv/riscv-protos.h (riscv_gen_gpr_save_insn): New.
+ 	(riscv_gpr_save_operation_p): Ditto.
+ 	* config/riscv/riscv-sr.c (riscv_remove_unneeded_save_restore_calls):
+ 	Ignore USEs for gpr_save patter.
+ 	* config/riscv/riscv.c (gpr_save_reg_order): New.
+ 	(riscv_expand_prologue): Use riscv_gen_gpr_save_insn to gen gpr_save.
+ 	(riscv_gen_gpr_save_insn): New.
+ 	(riscv_gpr_save_operation_p): Ditto.
+ 	* config/riscv/riscv.md (S3_REGNUM): New.
+ 	(S4_REGNUM): Ditto.
+ 	(S5_REGNUM): Ditto.
+ 	(S6_REGNUM): Ditto.
+ 	(S7_REGNUM): Ditto.
+ 	(S8_REGNUM): Ditto.
+ 	(S9_REGNUM): Ditto.
+ 	(S10_REGNUM): Ditto.
+ 	(S11_REGNUM): Ditto.
+ 	(gpr_save): Model USEs correctly.
+ 
+ 2020-06-10  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/95353
+ 	PR middle-end/92939
+ 	* builtins.c (inform_access): New function.
+ 	(check_access): Call it.  Add argument.
+ 	(addr_decl_size): Remove.
+ 	(get_range): New function.
+ 	(compute_objsize): New overload.  Only use compute_builtin_object_size
+ 	with raw memory function.
+ 	(check_memop_access): Pass new argument to compute_objsize and
+ 	check_access.
+ 	(expand_builtin_memchr, expand_builtin_strcat): Same.
+ 	(expand_builtin_strcpy, expand_builtin_stpcpy_1): Same.
+ 	(expand_builtin_stpncpy, check_strncat_sizes): Same.
+ 	(expand_builtin_strncat, expand_builtin_strncpy): Same.
+ 	(expand_builtin_memcmp): Same.
+ 	* builtins.h (check_nul_terminated_array): Declare extern.
+ 	(check_access): Add argument.
+ 	(struct access_ref, struct access_data): New structs.
+ 	* gimple-ssa-warn-restrict.c (clamp_offset): New helper.
+ 	(builtin_access::overlap): Call it.
+ 	* tree-object-size.c (decl_init_size): Declare extern.
+ 	(addr_object_size): Correct offset computation.
+ 	* tree-object-size.h (decl_init_size): Declare.
+ 	* tree-ssa-strlen.c (handle_integral_assign): Remove a call
+ 	to maybe_warn_overflow when assigning to an SSA_NAME.
+ 
+ 2020-06-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.c (vect_determine_vectorization_factor):
+ 	Skip debug stmts.
+ 	(_loop_vec_info::_loop_vec_info): Likewise.
+ 	(vect_update_vf_for_slp): Likewise.
+ 	(vect_analyze_loop_operations): Likewise.
+ 	(update_epilogue_loop_vinfo): Likewise.
+ 	* tree-vect-patterns.c (vect_determine_precisions): Likewise.
+ 	(vect_pattern_recog): Likewise.
+ 	* tree-vect-slp.c (vect_detect_hybrid_slp): Likewise.
+ 	(_bb_vec_info::_bb_vec_info): Likewise.
+ 	* tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized):
+ 	Likewise.
+ 
+ 2020-06-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95576
+ 	* tree-vect-slp.c (vect_slp_bb): Skip leading debug stmts.
+ 
+ 2020-06-10  Haijian Zhang  <z.zhanghaijian@huawei.com>
+ 
+ 	PR target/95523
+ 	* config/aarch64/aarch64-sve-builtins.h
+ 	(sve_switcher::m_old_maximum_field_alignment): New member.
+ 	* config/aarch64/aarch64-sve-builtins.cc
+ 	(sve_switcher::sve_switcher): Save maximum_field_alignment in
+ 	m_old_maximum_field_alignment and clear maximum_field_alignment.
+ 	(sve_switcher::~sve_switcher): Restore maximum_field_alignment.
+ 
+ 2020-06-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (_slp_tree::vec_stmts): Make it a vector
+ 	of gimple * stmts.
+ 	(_stmt_vec_info::vec_stmts): Likewise.
+ 	(vec_info::stmt_vec_info_ro): New flag.
+ 	(vect_finish_replace_stmt): Adjust declaration.
+ 	(vect_finish_stmt_generation): Likewise.
+ 	(vectorizable_induction): Likewise.
+ 	(vect_transform_reduction): Likewise.
+ 	(vectorizable_lc_phi): Likewise.
+ 	* tree-vect-data-refs.c (vect_create_data_ref_ptr): Do not
+ 	allocate stmt infos for increments.
+ 	(vect_record_grouped_load_vectors): Adjust.
+ 	* tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
+ 	(vectorize_fold_left_reduction): Likewise.
+ 	(vect_transform_reduction): Likewise.
+ 	(vect_transform_cycle_phi): Likewise.
+ 	(vectorizable_lc_phi): Likewise.
+ 	(vectorizable_induction): Likewise.
+ 	(vectorizable_live_operation): Likewise.
+ 	(vect_transform_loop): Likewise.
+ 	* tree-vect-patterns.c (vect_pattern_recog): Set stmt_vec_info_ro.
+ 	* tree-vect-slp.c (vect_get_slp_vect_def): Adjust.
+ 	(vect_get_slp_defs): Likewise.
+ 	(vect_transform_slp_perm_load): Likewise.
+ 	(vect_schedule_slp_instance): Likewise.
+ 	(vectorize_slp_instance_root_stmt): Likewise.
+ 	* tree-vect-stmts.c (vect_get_vec_defs_for_operand): Likewise.
+ 	(vect_finish_stmt_generation_1): Do not allocate a stmt info.
+ 	(vect_finish_replace_stmt): Do not return anything.
+ 	(vect_finish_stmt_generation): Likewise.
+ 	(vect_build_gather_load_calls): Adjust.
+ 	(vectorizable_bswap): Likewise.
+ 	(vectorizable_call): Likewise.
+ 	(vectorizable_simd_clone_call): Likewise.
+ 	(vect_create_vectorized_demotion_stmts): Likewise.
+ 	(vectorizable_conversion): Likewise.
+ 	(vectorizable_assignment): Likewise.
+ 	(vectorizable_shift): Likewise.
+ 	(vectorizable_operation): Likewise.
+ 	(vectorizable_scan_store): Likewise.
+ 	(vectorizable_store): Likewise.
+ 	(vectorizable_load): Likewise.
+ 	(vectorizable_condition): Likewise.
+ 	(vectorizable_comparison): Likewise.
+ 	(vect_transform_stmt): Likewise.
+ 	* tree-vectorizer.c (vec_info::vec_info): Initialize
+ 	stmt_vec_info_ro.
+ 	(vec_info::replace_stmt): Copy over stmt UID rather than
+ 	unsetting/setting a stmt info allocating a new UID.
+ 	(vec_info::set_vinfo_for_stmt): Assert !stmt_vec_info_ro.
+ 
+ 2020-06-10  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-loop-versioning.cc (loop_versioning::name_prop::get_value):
+ 	Add stmt parameter.
+ 	* gimple-ssa-evrp.c (class evrp_folder): New.
+ 	(class evrp_dom_walker): Remove.
+ 	(execute_early_vrp): Use evrp_folder instead of evrp_dom_walker.
+ 	* tree-ssa-ccp.c (ccp_folder::get_value): Add stmt parameter.
+ 	* tree-ssa-copy.c (copy_folder::get_value): Same.
+ 	* tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in):
+ 	Pass stmt to get_value.
+ 	(substitute_and_fold_engine::replace_phi_args_in): Same.
+ 	(substitute_and_fold_dom_walker::after_dom_children): Call
+ 	post_fold_bb.
+ 	(substitute_and_fold_dom_walker::foreach_new_stmt_in_bb): New.
+ 	(substitute_and_fold_dom_walker::propagate_into_phi_args): New.
+ 	(substitute_and_fold_dom_walker::before_dom_children): Adjust to
+ 	call virtual functions for folding, pre_folding, and post folding.
+ 	Call get_value with PHI.  Tweak dump.
+ 	* tree-ssa-propagate.h (class substitute_and_fold_engine):
+ 	New argument to get_value.
+ 	New virtual function pre_fold_bb.
+ 	New virtual function post_fold_bb.
+ 	New virtual function pre_fold_stmt.
+ 	New virtual function post_new_stmt.
+ 	New function propagate_into_phi_args.
+ 	* tree-vrp.c (vrp_folder::get_value): Add stmt argument.
+ 	* vr-values.c (vr_values::extract_range_from_stmt): Adjust dump
+ 	output.
+ 	(vr_values::fold_cond): New.
+ 	(vr_values::simplify_cond_using_ranges_1): Call fold_cond.
+ 	* vr-values.h (class vr_values): Add
+ 	simplify_cond_using_ranges_when_edge_is_known.
+ 
+ 2020-06-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/94910
+ 	* asan.c (asan_emit_stack_protection): Emit
+ 	also **SavedFlagPtr(FakeStack, class_id) = 0 in order to release
+ 	a stack frame.
+ 
+ 2020-06-10  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_rtx_mult_cost): Adjust costs for mul.
+ 
+ 2020-06-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-data-refs.c (vect_vfa_access_size): Adjust.
+ 	(vect_record_grouped_load_vectors): Likewise.
+ 	* tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
+ 	(vectorize_fold_left_reduction): Likewise.
+ 	(vect_transform_reduction): Likewise.
+ 	(vect_transform_cycle_phi): Likewise.
+ 	(vectorizable_lc_phi): Likewise.
+ 	(vectorizable_induction): Likewise.
+ 	(vectorizable_live_operation): Likewise.
+ 	(vect_transform_loop): Likewise.
+ 	* tree-vect-slp.c (vect_get_slp_defs): New function, split out
+ 	from overload.
+ 	* tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Remove.
+ 	(vect_get_vec_def_for_operand): Likewise.
+ 	(vect_get_vec_def_for_stmt_copy): Likewise.
+ 	(vect_get_vec_defs_for_stmt_copy): Likewise.
+ 	(vect_get_vec_defs_for_operand): New function.
+ 	(vect_get_vec_defs): Likewise.
+ 	(vect_build_gather_load_calls): Adjust.
+ 	(vect_get_gather_scatter_ops): Likewise.
+ 	(vectorizable_bswap): Likewise.
+ 	(vectorizable_call): Likewise.
+ 	(vectorizable_simd_clone_call): Likewise.
+ 	(vect_get_loop_based_defs): Remove.
+ 	(vect_create_vectorized_demotion_stmts): Adjust.
+ 	(vectorizable_conversion): Likewise.
+ 	(vectorizable_assignment): Likewise.
+ 	(vectorizable_shift): Likewise.
+ 	(vectorizable_operation): Likewise.
+ 	(vectorizable_scan_store): Likewise.
+ 	(vectorizable_store): Likewise.
+ 	(vectorizable_load): Likewise.
+ 	(vectorizable_condition): Likewise.
+ 	(vectorizable_comparison): Likewise.
+ 	(vect_transform_stmt): Adjust and remove no longer applicable
+ 	sanity checks.
+ 	* tree-vectorizer.c (vec_info::new_stmt_vec_info): Initialize
+ 	STMT_VINFO_VEC_STMTS.
+ 	(vec_info::free_stmt_vec_info): Relase it.
+ 	* tree-vectorizer.h (_stmt_vec_info::vectorized_stmt): Remove.
+ 	(_stmt_vec_info::vec_stmts): Add.
+ 	(STMT_VINFO_VEC_STMT): Remove.
+ 	(STMT_VINFO_VEC_STMTS): New.
+ 	(vect_get_vec_def_for_operand_1): Remove.
+ 	(vect_get_vec_def_for_operand): Likewise.
+ 	(vect_get_vec_defs_for_stmt_copy): Likewise.
+ 	(vect_get_vec_def_for_stmt_copy): Likewise.
+ 	(vect_get_vec_defs): New overloads.
+ 	(vect_get_vec_defs_for_operand): New.
+ 	(vect_get_slp_defs): Declare.
+ 
+ 2020-06-10  Qian Chao  <qianchao9@huawei.com>
+ 
+ 	PR tree-optimization/95569
+ 	* trans-mem.c (expand_assign_tm): Ensure that rtmp is marked TREE_ADDRESSABLE.
+ 
+ 2020-06-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/92860
+ 	* optc-save-gen.awk: Generate new function cl_optimization_compare.
+ 	* opth-gen.awk: Generate declaration of the function.
+ 
+ 2020-06-09  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/ppc-auxv.h (PPC_PLATFORM_FUTURE): Allocate
+ 	'future' PowerPC platform.
+ 	(PPC_FEATURE2_ARCH_3_1): New HWCAP2 bit for ISA 3.1.
+ 	(PPC_FEATURE2_MMA): New HWCAP2 bit for MMA.
+ 	* config/rs6000/rs6000-call.c (cpu_supports_info): Add ISA 3.1 and
+ 	MMA HWCAP2 bits.
+ 	* config/rs6000/rs6000.c (CLONE_ISA_3_1): New clone support.
+ 	(rs6000_clone_map): Add 'future' system target_clones support.
+ 
+ 2020-06-09  Michael Kuhn  <gcc@ikkoku.de>
+ 
+ 	* Makefile.in (ZSTD_INC): Define.
+ 	(ZSTD_LIB): Include ZSTD_LDFLAGS.
+ 	(CFLAGS-lto-compress.o): Add ZSTD_INC.
+ 	* configure.ac (ZSTD_CPPFLAGS, ZSTD_LDFLAGS): New variables for
+ 	AC_SUBST.
+ 	* configure: Rebuilt.
+ 
+ 2020-06-09  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/95552
+ 	* tree.c (walk_tree_1): Call func on the TYPE_DECL of a DECL_EXPR.
+ 
+ 2020-06-09  Marco Elver  <elver@google.com>
+ 
+ 	* params.opt: Define --param=tsan-distinguish-volatile=[0,1].
+ 	* sanitizer.def (BUILT_IN_TSAN_VOLATILE_READ1): Define new
+ 	builtin for volatile instrumentation of reads/writes.
+ 	(BUILT_IN_TSAN_VOLATILE_READ2): Likewise.
+ 	(BUILT_IN_TSAN_VOLATILE_READ4): Likewise.
+ 	(BUILT_IN_TSAN_VOLATILE_READ8): Likewise.
+ 	(BUILT_IN_TSAN_VOLATILE_READ16): Likewise.
+ 	(BUILT_IN_TSAN_VOLATILE_WRITE1): Likewise.
+ 	(BUILT_IN_TSAN_VOLATILE_WRITE2): Likewise.
+ 	(BUILT_IN_TSAN_VOLATILE_WRITE4): Likewise.
+ 	(BUILT_IN_TSAN_VOLATILE_WRITE8): Likewise.
+ 	(BUILT_IN_TSAN_VOLATILE_WRITE16): Likewise.
+ 	* tsan.c (get_memory_access_decl): Argument if access is
+ 	volatile. If param tsan-distinguish-volatile is non-zero, and
+ 	access if volatile, return volatile instrumentation decl.
+ 	(instrument_expr): Check if access is volatile.
+ 
+ 2020-06-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.c (vectorizable_induction): Remove dead code.
+ 
+ 2020-06-09  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* omp-offload.c (add_decls_addresses_to_decl_constructor,
+ 	omp_finish_file): With in_lto_p, stream out all offload-table
+ 	items even if the symtab_node does not exist.
+ 
+ 2020-06-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-stmts.c (vect_transform_stmt): Remove dead code.
+ 
+ 2020-06-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov-dump.c (print_usage): Fix spacing for --raw option
+ 	in --help.
+ 
+ 2020-06-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cif-code.def (ATTRIBUTE_MISMATCH): Rename to...
+ 	(SANITIZE_ATTRIBUTE_MISMATCH): ...this.
+ 	* ipa-inline.c (sanitize_attrs_match_for_inline_p):
+ 	Handle all sanitizer options.
+ 	(can_inline_edge_p): Use renamed CIF_* enum value.
+ 
+ 2020-06-09  Joe Ramsay  <joe.ramsay@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve.md (<optab><mode>2): Add support for
+ 	unpacked vectors.
+ 	(@aarch64_pred_<optab><mode>): Add support for unpacked vectors.
+ 	(@aarch64_bic<mode>): Enable unpacked BIC.
+ 	(*bic<mode>3): Enable unpacked BIC.
+ 
+ 2020-06-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/95365
+ 	* doc/gcov.texi: Compile and link one example in 2 steps.
+ 
+ 2020-06-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/95527
+ 	* match.pd (__builtin_ffs (X) cmp CST): New optimizations.
+ 
+ 2020-06-09  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/ppc-auxv.h (PPC_PLATFORM_FUTURE): Allocate
+ 	'future' PowerPC platform.
+ 	(PPC_FEATURE2_ARCH_3_1): New HWCAP2 bit for ISA 3.1.
+ 	(PPC_FEATURE2_MMA): New HWCAP2 bit for MMA.
+ 	* config/rs6000/rs6000-call.c (cpu_supports_info): Add ISA 3.1 and
+ 	MMA HWCAP2 bits.
+ 	* config/rs6000/rs6000.c (CLONE_ISA_3_1): New clone support.
+ 	(rs6000_clone_map): Add 'future' system target_clones support.
+ 
+ 2020-06-08  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR lto/94848
+ 	PR middle-end/95551
+ 	* omp-offload.c (add_decls_addresses_to_decl_constructor,
+ 	omp_finish_file): Skip removed items.
+ 	* lto-cgraph.c (output_offload_tables): Likewise; set force_output
+ 	to this node for variables and functions.
+ 
+ 2020-06-08  Jason Merrill  <jason@redhat.com>
+ 
+ 	* aclocal.m4: Remove ax_cxx_compile_stdcxx.m4.
+ 	* configure.ac: Remove AX_CXX_COMPILE_STDCXX.
+ 	* configure: Regenerate.
+ 
+ 2020-06-08  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* postreload.c (reload_cse_simplify_operands): Clear first array element
+ 	before using it.  Assert a precondition.
+ 
+ 2020-06-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/95528
+ 	* tree-ssa-forwprop.c (simplify_vector_constructor): Don't use
+ 	VEC_UNPACK*_EXPR or VEC_PACK_TRUNC_EXPR with scalar modes unless the
+ 	type is vector boolean.
+ 
+ 2020-06-08  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_layout_frame): Expand comments.
+ 
+ 2020-06-08  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/predicates.md (vfp_register_operand): Use VFP_HI_REGS
+ 	instead of VFP_REGS.
+ 
+ 2020-06-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/rs6000/vector.md: Replace FAIL with gcc_unreachable
+ 	in all vcond* patterns.
+ 
+ 2020-06-08  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* common/config/arm/arm-common.c (INCLUDE_ALGORITHM):
+ 	Define. No longer include <algorithm>.
+ 
+ 2020-06-07  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386.md (paritydi2, paritysi2): Expand reduction
+ 	via shift and xor to an USPEC PARITY matching a parityhi2_cmp.
+ 	(paritydi2_cmp, paritysi2_cmp): Delete these define_insn_and_split.
+ 	(parityhi2, parityqi2): New expanders.
+ 	(parityhi2_cmp): Implement set parity flag with xorb insn.
+ 	(parityqi2_cmp): Implement set parity flag with testb insn.
+ 	New peephole2s to use these insns (UNSPEC PARITY) when appropriate.
+ 
+ 2020-06-07  Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	PR target/95018
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+ 	Override flag_cunroll_grow_size.
+ 
+ 2020-06-07  Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	* common.opt (flag_cunroll_grow_size): New flag.
+ 	* toplev.c (process_options): Set flag_cunroll_grow_size.
+ 	* tree-ssa-loop-ivcanon.c (pass_complete_unroll::execute):
+ 	Use flag_cunroll_grow_size.
+ 
+ 2020-06-06  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR lto/95548
+ 	* ipa-devirt.c (struct odr_enum_val): Turn values to wide_int.
+ 	(ipa_odr_summary_write): Update streaming.
+ 	(ipa_odr_read_section): Update streaming.
+ 
+ 2020-06-06  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	PR driver/95456
+ 	* gcc.c (do_spec_1): Don't call memcpy (_, NULL, 0).
+ 
+ 2020-06-05  Thomas Schwinge  <thomas@codesourcery.com>
+ 	    Julian Brown  <julian@codesourcery.com>
+ 
+ 	* gimplify.c (gimplify_adjust_omp_clauses): Remove
+ 	'GOMP_MAP_STRUCT' mapping from OpenACC 'exit data' directives.
+ 
+ 2020-06-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95539
+ 	* tree-vect-data-refs.c
+ 	(vect_slp_analyze_and_verify_instance_alignment): Use
+ 	SLP_TREE_REPRESENTATIVE for the data-ref check.
+ 	* tree-vect-stmts.c (vectorizable_load): Reset stmt_info
+ 	back to the first scalar stmt rather than the
+ 	SLP_TREE_REPRESENTATIVE to match previous behavior.
+ 
+ 2020-06-05  Felix Yang  <felix.yang@huawei.com>
+ 
+ 	PR target/95254
+ 	* expr.c (emit_move_insn): Check src and dest of the copy to see
+ 	if one or both of them are subregs, try to remove the subregs when
+ 	innermode and outermode are equal in size and the mode change involves
+ 	an implicit round trip through memory.
+ 
+ 2020-06-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/95535
+ 	* config/i386/i386.md (*ctzsi2_zext, *clzsi2_lzcnt_zext): New
+ 	define_insn_and_split patterns.
+ 	(*ctzsi2_zext_falsedep, *clzsi2_lzcnt_zext_falsedep): New
+ 	define_insn patterns.
+ 
+ 2020-06-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* alloc-pool.h (object_allocator::remove_raw): New.
+ 	* tree-ssa-math-opts.c (struct occurrence): Use NSMDI.
+ 	(occurrence::occurrence): Add.
+ 	(occurrence::~occurrence): Likewise.
+ 	(occurrence::new): Likewise.
+ 	(occurrence::delete): Likewise.
+ 	(occ_new): Remove.
+ 	(insert_bb): Use new occurence (...) instead of occ_new.
+ 	(register_division_in): Likewise.
+ 	(free_bb): Use delete occ instead of manually removing
+ 	from the pool.
+ 
+ 2020-06-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/95493
+ 	* cfgexpand.c (expand_debug_expr): Avoid calling
+ 	set_mem_attributes_minus_bitpos when we were expanding
+ 	an SSA name.
+ 	* emit-rtl.c (set_mem_attributes_minus_bitpos): Remove
+ 	ARRAY_REF special-casing, add CONSTRUCTOR to the set of
+ 	special-cases we do not want MEM_EXPRs for.  Assert
+ 	we end up with reasonable MEM_EXPRs.
+ 
+ 2020-06-05  Lili Cui  <lili.cui@intel.com>
+ 
+ 	PR target/95525
+ 	* config/i386/i386.h (PTA_WAITPKG): Change bitmask value.
+ 
+ 2020-06-04  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/10138
+ 	PR middle-end/95136
+ 	* attribs.c (init_attr_rdwr_indices): Move function here.
+ 	* attribs.h (rdwr_access_hash, rdwr_map): Define.
+ 	(attr_access): Add 'none'.
+ 	(init_attr_rdwr_indices): Declared function.
+ 	* builtins.c (warn_for_access)): New function.
+ 	(check_access): Call it.
+ 	* builtins.h (checK-access): Add an optional argument.
+ 	* calls.c (rdwr_access_hash, rdwr_map): Move to attribs.h.
+ 	(init_attr_rdwr_indices): Declare extern.
+ 	(append_attrname): Handle attr_access::none.
+ 	(maybe_warn_rdwr_sizes): Same.
+ 	(initialize_argument_information): Update comments.
+ 	* doc/extend.texi (attribute access): Document 'none'.
+ 	* tree-ssa-uninit.c (struct wlimits): New.
+ 	(maybe_warn_operand): New function.
+ 	(maybe_warn_pass_by_reference): Same.
+ 	(warn_uninitialized_vars): Refactor code into maybe_warn_operand.
+ 	Also call for function calls.
+ 	(pass_late_warn_uninitialized::execute): Adjust comments.
+ 	(execute_early_warn_uninitialized): Same.
+ 
+ 2020-06-04  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR middle-end/95464
+ 	* lra.c (lra_emit_move): Add processing STRICT_LOW_PART.
+ 	* lra-constraints.c (match_reload): Use STRICT_LOW_PART in output
+ 	reload if the original insn has it too.
+ 
+ 2020-06-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_gimplify_va_arg_expr):
+ 	Ensure that tmp_ha is marked TREE_ADDRESSABLE.
+ 
+ 2020-06-04  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/95113
+ 	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Move non-call
+ 	exceptions check to...
+ 	* tree-eh.c (stmt_unremovable_because_of_non_call_eh_p): ...this
+ 	new function.
+ 	* tree-eh.h (stmt_unremovable_because_of_non_call_eh_p): Declare it.
+ 	* ipa-sra.c (isra_track_scalar_value_uses): Use it.  New parameter
+ 	fun.
+ 
+ 2020-06-04  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	PR target/94735
+ 	* config/arm/predicates.md (mve_scatter_memory): Define to
+ 	match (mem (reg)) for scatter store memory.
+ 	* config/arm/mve.md (mve_vstrbq_scatter_offset_<supf><mode>): Modify
+ 	define_insn to define_expand.
+ 	(mve_vstrbq_scatter_offset_p_<supf><mode>): Likewise.
+ 	(mve_vstrhq_scatter_offset_<supf><mode>): Likewise.
+ 	(mve_vstrhq_scatter_shifted_offset_p_<supf><mode>): Likewise.
+ 	(mve_vstrhq_scatter_shifted_offset_<supf><mode>): Likewise.
+ 	(mve_vstrdq_scatter_offset_p_<supf>v2di): Likewise.
+ 	(mve_vstrdq_scatter_offset_<supf>v2di): Likewise.
+ 	(mve_vstrdq_scatter_shifted_offset_p_<supf>v2di): Likewise.
+ 	(mve_vstrdq_scatter_shifted_offset_<supf>v2di): Likewise.
+ 	(mve_vstrhq_scatter_offset_fv8hf): Likewise.
+ 	(mve_vstrhq_scatter_offset_p_fv8hf): Likewise.
+ 	(mve_vstrhq_scatter_shifted_offset_fv8hf): Likewise.
+ 	(mve_vstrhq_scatter_shifted_offset_p_fv8hf): Likewise.
+ 	(mve_vstrwq_scatter_offset_fv4sf): Likewise.
+ 	(mve_vstrwq_scatter_offset_p_fv4sf): Likewise.
+ 	(mve_vstrwq_scatter_offset_p_<supf>v4si): Likewise.
+ 	(mve_vstrwq_scatter_offset_<supf>v4si): Likewise.
+ 	(mve_vstrwq_scatter_shifted_offset_fv4sf): Likewise.
+ 	(mve_vstrwq_scatter_shifted_offset_p_fv4sf): Likewise.
+ 	(mve_vstrwq_scatter_shifted_offset_p_<supf>v4si): Likewise.
+ 	(mve_vstrwq_scatter_shifted_offset_<supf>v4si): Likewise.
+ 	(mve_vstrbq_scatter_offset_<supf><mode>_insn): Define insn for scatter
+ 	stores.
+ 	(mve_vstrbq_scatter_offset_p_<supf><mode>_insn): Likewise.
+ 	(mve_vstrhq_scatter_offset_<supf><mode>_insn): Likewise.
+ 	(mve_vstrhq_scatter_shifted_offset_p_<supf><mode>_insn): Likewise.
+ 	(mve_vstrhq_scatter_shifted_offset_<supf><mode>_insn): Likewise.
+ 	(mve_vstrdq_scatter_offset_p_<supf>v2di_insn): Likewise.
+ 	(mve_vstrdq_scatter_offset_<supf>v2di_insn): Likewise.
+ 	(mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn): Likewise.
+ 	(mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn): Likewise.
+ 	(mve_vstrhq_scatter_offset_fv8hf_insn): Likewise.
+ 	(mve_vstrhq_scatter_offset_p_fv8hf_insn): Likewise.
+ 	(mve_vstrhq_scatter_shifted_offset_fv8hf_insn): Likewise.
+ 	(mve_vstrhq_scatter_shifted_offset_p_fv8hf_insn): Likewise.
+ 	(mve_vstrwq_scatter_offset_fv4sf_insn): Likewise.
+ 	(mve_vstrwq_scatter_offset_p_fv4sf_insn): Likewise.
+ 	(mve_vstrwq_scatter_offset_p_<supf>v4si_insn): Likewise.
+ 	(mve_vstrwq_scatter_offset_<supf>v4si_insn): Likewise.
+ 	(mve_vstrwq_scatter_shifted_offset_fv4sf_insn): Likewise.
+ 	(mve_vstrwq_scatter_shifted_offset_p_fv4sf_insn): Likewise.
+ 	(mve_vstrwq_scatter_shifted_offset_p_<supf>v4si_insn): Likewise.
+ 	(mve_vstrwq_scatter_shifted_offset_<supf>v4si_insn): Likewise.
+ 
+ 2020-06-04  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm_mve.h (__arm_vbicq_n_u16): Correct the intrinsic
+ 	arguments.
+ 	(__arm_vbicq_n_s16): Likewise.
+ 	(__arm_vbicq_n_u32): Likewise.
+ 	(__arm_vbicq_n_s32): Likewise.
+ 	(__arm_vbicq): Modify polymorphic variant.
+ 
+ 2020-06-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (vect_get_slp_vect_def): Declare.
+ 	* tree-vect-loop.c (vect_create_epilog_for_reduction): Use it.
+ 	* tree-vect-stmts.c (vect_transform_stmt): Likewise.
+ 	(vect_is_simple_use): Use SLP_TREE_REPRESENTATIVE.
+ 	* tree-vect-slp.c (vect_get_slp_vect_defs): Fold into single
+ 	use ...
+ 	(vect_get_slp_defs): ... here.
+ 	(vect_get_slp_vect_def): New function.
+ 
+ 2020-06-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (_slp_tree::lanes): New.
+ 	(SLP_TREE_LANES): Likewise.
+ 	* tree-vect-loop.c (vect_create_epilog_for_reduction): Use it.
+ 	(vectorizable_reduction): Likewise.
+ 	(vect_transform_cycle_phi): Likewise.
+ 	(vectorizable_induction): Likewise.
+ 	(vectorizable_live_operation): Likewise.
+ 	* tree-vect-slp.c (_slp_tree::_slp_tree): Initialize lanes.
+ 	(vect_create_new_slp_node): Likewise.
+ 	(slp_copy_subtree): Copy it.
+ 	(vect_optimize_slp): Use it.
+ 	(vect_slp_analyze_node_operations_1): Likewise.
+ 	(vect_slp_convert_to_external): Likewise.
+ 	(vect_bb_vectorization_profitable_p): Likewise.
+ 	* tree-vect-stmts.c (vectorizable_load): Likewise.
+ 	(get_vectype_for_scalar_type): Likewise.
+ 
+ 2020-06-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_update_all_shared_vectypes): Remove.
+ 	(vect_build_slp_tree_2): Simplify building all external op
+ 	nodes from scalars.
+ 	(vect_slp_analyze_node_operations): Remove push/pop of
+ 	STMT_VINFO_DEF_TYPE.
+ 	(vect_schedule_slp_instance): Likewise.
+ 	* tree-vect-stmts.c (ect_check_store_rhs): Pass in the
+ 	stmt_info, use the vect_is_simple_use overload combining
+ 	SLP and stmt_info analysis.
+ 	(vect_is_simple_cond): Likewise.
+ 	(vectorizable_store): Adjust.
+ 	(vectorizable_condition): Likewise.
+ 	(vect_is_simple_use): Fully handle invariant SLP nodes
+ 	here.  Amend stmt_info operand extraction with COND_EXPR
+ 	and masked stores.
+ 	* tree-vect-loop.c (vectorizable_reduction): Deal with
+ 	COND_EXPR representation ugliness.
+ 
+ 2020-06-04  Hongtao Liu  <hongtao.liu@inte.com>
+ 
+ 	PR target/95254
+ 	* config/i386/sse.md (*vcvtps2ph_store<merge_mask_name>):
+ 	Refine from *vcvtps2ph_store<mask_name>.
+ 	(vcvtps2ph256<mask_name>): Refine constraint from vm to v.
+ 	(<mask_codefor>avx512f_vcvtps2ph512<mask_name>): Ditto.
+ 	(*vcvtps2ph256<merge_mask_name>): New define_insn.
+ 	(*avx512f_vcvtps2ph512<merge_mask_name>): Ditto.
+ 	* config/i386/subst.md (merge_mask): New define_subst.
+ 	(merge_mask_name): New define_subst_attr.
+ 	(merge_mask_operand3): Ditto.
+ 
+ 2020-06-04  Hao Liu  <hliu@os.amperecomputing.com>
+ 
+ 	PR tree-optimization/89430
+ 	* tree-ssa-phiopt.c
+ 	(struct name_to_bb): Rename to ref_to_bb; add a new field exp;
+ 	remove ssa_name_ver, store, offset fields.
+ 	(struct ssa_names_hasher): Rename to refs_hasher; update functions.
+ 	(class nontrapping_dom_walker): Rename m_seen_ssa_names to m_seen_refs.
+ 	(nontrapping_dom_walker::add_or_mark_expr): Extend to support ARRAY_REFs
+ 	and COMPONENT_REFs.
+ 
+ 2020-06-04  Andreas Schwab  <schwab@suse.de>
+ 
+ 	PR target/95154
+ 	* config/ia64/ia64.h (ASM_OUTPUT_FDESC): Call assemble_external.
+ 
+ 2020-06-04  Hongtao.liu  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/sse.md (pmov_dst_3_lower): New mode attribute.
+ 	(trunc<mode><pmov_dst_3_lower>2): Refine from
+ 	trunc<mode><pmov_dst_3>2.
+ 
+ 2020-06-03  Vitor Guidi  <vitor.guidi@usp.br>
+ 
+ 	* match.pd (tanh/sinh -> 1/cosh): New simplification.
+ 
+ 2020-06-03  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	PR target/95347
+ 	* config/rs6000/rs6000.c (is_stfs_insn): Rename to
+ 	is_lfs_stfs_insn and make it recognize lfs as well.
+ 	(prefixed_store_p): Use is_lfs_stfs_insn().
+ 	(prefixed_load_p): Use is_lfs_stfs_insn() to recognize lfs.
+ 
+ 2020-06-03  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-devirt.c: Include data-streamer.h, lto-streamer.h and
+ 	streamer-hooks.h.
+ 	(odr_enums): New static var.
+ 	(struct odr_enum_val): New struct.
+ 	(class odr_enum): New struct.
+ 	(odr_enum_map): New hashtable.
+ 	(odr_types_equivalent_p): Drop code testing TYPE_VALUES.
+ 	(add_type_duplicate): Likewise.
+ 	(free_odr_warning_data): Do not free TYPE_VALUES.
+ 	(register_odr_enum): New function.
+ 	(ipa_odr_summary_write): New function.
+ 	(ipa_odr_read_section): New function.
+ 	(ipa_odr_summary_read): New function.
+ 	(class pass_ipa_odr): New pass.
+ 	(make_pass_ipa_odr): New function.
+ 	* ipa-utils.h (register_odr_enum): Declare.
+ 	* lto-section-in.c: (lto_section_name): Add odr_types section.
+ 	* lto-streamer.h (enum lto_section_type): Add odr_types section.
+ 	* passes.def: Add odr_types pass.
+ 	* lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream
+ 	TYPE_VALUES.
+ 	(hash_tree): Likewise.
+ 	* tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
+ 	Likewise.
+ 	* tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
+ 	Likewise.
+ 	* timevar.def (TV_IPA_ODR): New timervar.
+ 	* tree-pass.h (make_pass_ipa_odr): Declare.
+ 	* tree.c (free_lang_data_in_type): Regiser ODR types.
+ 
+ 2020-06-03  Romain Naour  <romain.naour@gmail.com>
+ 
+ 	* Makefile.in (SELFTEST_DEPS): Move before including language makefile
+ 	fragments.
+ 
+ 2020-06-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95487
+ 	* tree-vect-stmts.c (vectorizable_store): Use a truth type
+ 	for the scatter mask.
+ 
+ 2020-06-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95495
+ 	* tree-vect-slp.c (vect_slp_analyze_node_operations): Use
+ 	SLP_TREE_REPRESENTATIVE in the shift assertion.
+ 
+ 2020-06-03  Tom Tromey  <tromey@adacore.com>
+ 
+ 	* spellcheck.c (CASE_COST): New define.
+ 	(BASE_COST): New define.
+ 	(get_edit_distance): Recognize case changes.
+ 	(get_edit_distance_cutoff): Update.
+ 	(test_edit_distances): Update.
+ 	(get_old_cutoff): Update.
+ 	(test_find_closest_string): Add case sensitivity test.
+ 
+ 2020-06-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_bb_vectorization_profitable_p): Loop over
+ 	the cost vector to unset the visited flag on stmts.
+ 
+ 2020-06-03  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* gimplify.c (omp_notice_variable): Use new hook.
+ 	* langhooks-def.h (lhd_omp_predetermined_mapping): Declare.
+ 	(LANG_HOOKS_OMP_PREDETERMINED_MAPPING): Define
+ 	(LANG_HOOKS_DECLS): Add it.
+ 	* langhooks.c (lhd_omp_predetermined_sharing): Remove bogus unused attr.
+ 	(lhd_omp_predetermined_mapping): New.
+ 	* langhooks.h (struct lang_hooks_for_decls): Add new hook.
+ 
+ 2020-06-03  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* lto-streamer.h (LTO_tags): Reorder so frequent tags has small indexes;
+ 	add LTO_first_tree_tag and LTO_first_gimple_tag.
+ 	(lto_tag_is_tree_code_p): Update.
+ 	(lto_tag_is_gimple_code_p): Update.
+ 	(lto_gimple_code_to_tag): Update.
+ 	(lto_tag_to_gimple_code): Update.
+ 	(lto_tree_code_to_tag): Update.
+ 	(lto_tag_to_tree_code): Update.
+ 
+ 2020-06-02  Felix Yang  <felix.yang@huawei.com>
+ 
+ 	PR target/95459
+ 	* config/aarch64/aarch64.c (aarch64_short_vector_p):
+ 	Leave later code to report an error if SVE is disabled.
+ 
+ 2020-06-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (zeus): Define.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* doc/invoke.texi (AArch64 Options): Document zeus -mcpu option.
+ 
+ 2020-06-02  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	PR target/95347
+ 	* config/rs6000/rs6000.c (prefixed_store_p): Add special case
+ 	for stfs.
+ 	(is_stfs_insn): New helper function.
+ 
+ 2020-06-02  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* lto-streamer-in.c (stream_read_tree_ref): Simplify streaming of
+ 	references.
+ 	* lto-streamer-out.c (stream_write_tree_ref): Likewise.
+ 
+ 2020-06-02  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-hsa.h (CC1_SPEC): Delete.
+ 	* config/gcn/gcn.opt (-mlocal-symbol-id): Delete.
+ 	* config/gcn/mkoffload.c (main): Don't use -mlocal-symbol-id.
+ 
+ 2020-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR middle-end/95395
+ 	* optabs.c (expand_unop): Fix bits/bytes confusion in latest change.
+ 	* tree-pretty-print.c (dump_generic_node) <ARRAY_TYPE>: Print quals.
+ 
+ 2020-06-02  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	* config/s390/s390.c (print_operand): Emit vector alignment
+ 	hints for z13.
+ 
+ 2020-06-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	* coverage.c (get_coverage_counts): Skip sanity check for TOP N counters
+ 	as they have variable number of counters.
+ 	* gcov-dump.c (main): Add new option -r.
+ 	(print_usage): Likewise.
+ 	(tag_counters): All new raw format.
+ 	* gcov-io.h (struct gcov_kvp): New.
+ 	(GCOV_TOPN_VALUES): Remove.
+ 	(GCOV_TOPN_VALUES_COUNTERS): Likewise.
+ 	(GCOV_TOPN_MEM_COUNTERS): New.
+ 	(GCOV_TOPN_DISK_COUNTERS): Likewise.
+ 	(GCOV_TOPN_MAXIMUM_TRACKED_VALUES): Likewise.
+ 	* ipa-profile.c (ipa_profile_generate_summary): Use
+ 	GCOV_TOPN_MAXIMUM_TRACKED_VALUES.
+ 	(ipa_profile_write_edge_summary): Likewise.
+ 	(ipa_profile_read_edge_summary): Likewise.
+ 	(ipa_profile): Remove usage of GCOV_TOPN_VALUES.
+ 	* profile.c (sort_hist_values): Sort variable number
+ 	of counters.
+ 	(compute_value_histograms): Special case for TOP N counters
+ 	that have dynamic number of key-value pairs.
+ 	* value-prof.c (dump_histogram_value): Dump variable number
+ 	of key-value pairs.
+ 	(stream_in_histogram_value): Stream in variable number
+ 	of key-value pairs for TOP N counter.
+ 	(get_nth_most_common_value): Deal with variable number
+ 	of key-value pairs.
+ 	(dump_ic_profile): Use GCOV_TOPN_MAXIMUM_TRACKED_VALUES
+ 	for loop iteration.
+ 	(gimple_find_values_to_profile): Set GCOV_TOPN_MEM_COUNTERS
+ 	to n_counters.
+ 	* doc/gcov-dump.texi: Document new -r option.
+ 
+ 2020-06-02  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR target/95420
+ 	* config.gcc (arm-wrs-vxworks7*): Set default cpu to generic-armv7-a.
+ 
+ 2020-06-01  Jeff Law  <law@torsion.usersys.redhat.com>
+ 
+ 	* lower-subreg.c (resolve_simple_move): If simplify_gen_subreg_concatn
+ 	returns (const_int 0) for the destination, then emit nothing.
+ 
+ 2020-06-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* lto-streamer.h (enum LTO_tags): Remove LTO_field_decl_ref,
+ 	LTO_function_decl_ref, LTO_label_decl_ref, LTO_namespace_decl_ref,
+ 	LTO_result_decl_ref, LTO_type_decl_ref, LTO_type_ref,
+ 	LTO_const_decl_ref, LTO_imported_decl_ref,
+ 	LTO_translation_unit_decl_ref, LTO_global_decl_ref and
+ 	LTO_namelist_decl_ref; add LTO_global_stream_ref.
+ 	* lto-streamer-in.c (lto_input_tree_ref): Simplify.
+ 	(lto_input_scc): Update.
+ 	(lto_input_tree_1): Update.
+ 	* lto-streamer-out.c (lto_indexable_tree_ref): Simlify.
+ 	* lto-streamer.c (lto_tag_name): Update.
+ 
+ 2020-06-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-reference.c (stream_out_bitmap): Use lto_output_var_decl_ref.
+ 	(ipa_reference_read_optimization_summary): Use lto_intput_var_decl_ref.
+ 	* lto-cgraph.c (lto_output_node): Likewise.
+ 	(lto_output_varpool_node): Likewise.
+ 	(output_offload_tables): Likewise.
+ 	(input_node): Likewise.
+ 	(input_varpool_node): Likewise.
+ 	(input_offload_tables): Likewise.
+ 	* lto-streamer-in.c (lto_input_tree_ref): Declare.
+ 	(lto_input_var_decl_ref): Declare.
+ 	(lto_input_fn_decl_ref): Declare.
+ 	* lto-streamer-out.c (lto_indexable_tree_ref): Use only one decl stream.
+ 	(lto_output_var_decl_index): Rename to ..
+ 	(lto_output_var_decl_ref): ... this.
+ 	(lto_output_fn_decl_index): Rename to ...
+ 	(lto_output_fn_decl_ref): ... this.
+ 	* lto-streamer.h (enum lto_decl_stream_e_t): Remove per-type streams.
+ 	(DEFINE_DECL_STREAM_FUNCS): Remove.
+ 	(lto_output_var_decl_index): Remove.
+ 	(lto_output_fn_decl_index): Remove.
+ 	(lto_output_var_decl_ref): Declare.
+ 	(lto_output_fn_decl_ref): Declare.
+ 	(lto_input_var_decl_ref): Declare.
+ 	(lto_input_fn_decl_ref): Declare.
+ 
+ 2020-06-01  Feng Xue  <fxue@os.amperecomputing.com>
+ 
+ 	* cgraphclones.c (materialize_all_clones): Adjust replace map dump.
+ 	* ipa-param-manipulation.c (ipa_dump_adjusted_parameters): Do not
+ 	dump infomation if there is no adjusted parameter.
+ 	* (ipa_param_adjustments::dump): Adjust prefix spaces for dump string.
+ 
+ 2020-06-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* Makefile.in (gimple-array-bounds.o): New.
+ 	* tree-vrp.c: Move array bounds code...
+ 	* gimple-array-bounds.cc: ...here...
+ 	* gimple-array-bounds.h: ...and here.
+ 
+ 2020-06-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* Makefile.in (OBJS): Add value-range-equiv.o.
+ 	* tree-vrp.c (*value_range_equiv*): Move to...
+ 	* value-range-equiv.cc: ...here.
+ 	* tree-vrp.h (class value_range_equiv): Move to...
+ 	* value-range-equiv.h: ...here.
+ 	* vr-values.h: Include value-range-equiv.h.
+ 
+ 2020-06-01  Feng Xue  <fxue@os.amperecomputing.com>
+ 
+ 	PR ipa/93429
+ 	* ipa-cp.c (propagate_aggs_across_jump_function): Check aggregate
+ 	lattice for simple pass-through by-ref argument.
+ 
+ 2020-05-31  Jeff Law  <law@redhat.com>
+ 
+ 	* lra.c (add_auto_inc_notes): Remove function.
+ 	* reload1.c (add_auto_inc_notes): Similarly.  Move into...
+ 	* rtlanal.c (add_auto_inc_notes): New function.
+ 	* rtl.h (add_auto_inc_notes): Add prototype.
+ 	* recog.c (peep2_attempt): Scan and add REG_INC notes to new insns
+ 	as needed.
+ 
+ 2020-05-31  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* lto-section-out.c (lto_output_decl_index): Remove.
+ 	(lto_output_field_decl_index): Move to lto-streamer-out.c
+ 	(lto_output_fn_decl_index): Move to lto-streamer-out.c
+ 	(lto_output_namespace_decl_index): Remove.
+ 	(lto_output_var_decl_index): Remove.
+ 	(lto_output_type_decl_index): Remove.
+ 	(lto_output_type_ref_index): Remove.
+ 	* lto-streamer-out.c (output_type_ref): Remove.
+ 	(lto_get_index): New function.
+ 	(lto_output_tree_ref): Remove.
+ 	(lto_indexable_tree_ref): New function.
+ 	(lto_output_var_decl_index): Move here from lto-section-out.c; simplify.
+ 	(lto_output_fn_decl_index): Move here from lto-section-out.c; simplify.
+ 	(stream_write_tree_ref): Update.
+ 	(lto_output_tree): Update.
+ 	* lto-streamer.h (lto_output_decl_index): Remove prototype.
+ 	(lto_output_field_decl_index): Remove prototype.
+ 	(lto_output_namespace_decl_index): Remove prototype.
+ 	(lto_output_type_decl_index): Remove prototype.
+ 	(lto_output_type_ref_index): Remove prototype.
+ 	(lto_output_var_decl_index): Move.
+ 	(lto_output_fn_decl_index): Move
+ 
+ 2020-05-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/95052
+ 	* expr.c (store_expr): For shortedned_string_cst, ensure temp has
+ 	BLKmode.
+ 
+ 2020-05-31  Jeff Law  <law@redhat.com>
+ 
+ 	* config/h8300/jumpcall.md (brabs, brabc): Disable patterns.
+ 
+ 2020-05-31  Jim Wilson  <jimw@sifive.com>
+ 
+ 	* config/riscv/riscv.md (zero_extendsidi2_shifted): New.
+ 
+ 2020-05-30  Jonathan Yong  <10walls@gmail.com>
+ 
+ 	* config/i386/mingw32.h (REAL_LIBGCC_SPEC): Insert -lkernel32
+ 	after -lmsvcrt. This is necessary as libmsvcrt.a is not a pure
+ 	import library, but also contains some functions that invoke
+ 	others in KERNEL32.DLL.
+ 
+ 2020-05-29  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/altivec.md (altivec_vmrghw_direct): Prefer VSX form.
+ 	(altivec_vmrglw_direct): Ditto.
+ 	(altivec_vperm_<mode>_direct): Ditto.
+ 	(altivec_vperm_v8hiv16qi): Ditto.
+ 	(*altivec_vperm_<mode>_uns_internal): Ditto.
+ 	(*altivec_vpermr_<mode>_internal): Ditto.
+ 	(vperm_v8hiv4si): Ditto.
+ 	(vperm_v16qiv8hi): Ditto.
+ 
+ 2020-05-29  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* lto-streamer-in.c (streamer_read_chain): Move here from
+ 	tree-streamer-in.c.
+ 	(stream_read_tree_ref): New.
+ 	(lto_input_tree_1): Simplify.
+ 	* lto-streamer-out.c (stream_write_tree_ref): New.
+ 	(lto_write_tree_1): Simplify.
+ 	(lto_output_tree_1): Simplify.
+ 	(DFS::DFS_write_tree): Simplify.
+ 	(streamer_write_chain): Move here from tree-stremaer-out.c.
+ 	* lto-streamer.h (lto_output_tree_ref): Update prototype.
+ 	(stream_read_tree_ref): Declare
+ 	(stream_write_tree_ref): Declare
+ 	* tree-streamer-in.c (streamer_read_chain): Update to use
+ 	stream_read_tree_ref.
+ 	(lto_input_ts_common_tree_pointers): Likewise.
+ 	(lto_input_ts_vector_tree_pointers): Likewise.
+ 	(lto_input_ts_poly_tree_pointers): Likewise.
+ 	(lto_input_ts_complex_tree_pointers): Likewise.
+ 	(lto_input_ts_decl_minimal_tree_pointers): Likewise.
+ 	(lto_input_ts_decl_common_tree_pointers): Likewise.
+ 	(lto_input_ts_decl_with_vis_tree_pointers): Likewise.
+ 	(lto_input_ts_field_decl_tree_pointers): Likewise.
+ 	(lto_input_ts_function_decl_tree_pointers): Likewise.
+ 	(lto_input_ts_type_common_tree_pointers): Likewise.
+ 	(lto_input_ts_type_non_common_tree_pointers): Likewise.
+ 	(lto_input_ts_list_tree_pointers): Likewise.
+ 	(lto_input_ts_vec_tree_pointers): Likewise.
+ 	(lto_input_ts_exp_tree_pointers): Likewise.
+ 	(lto_input_ts_block_tree_pointers): Likewise.
+ 	(lto_input_ts_binfo_tree_pointers): Likewise.
+ 	(lto_input_ts_constructor_tree_pointers): Likewise.
+ 	(lto_input_ts_omp_clause_tree_pointers): Likewise.
+ 	* tree-streamer-out.c (streamer_write_chain): Update to use
+ 	stream_write_tree_ref.
+ 	(write_ts_common_tree_pointers): Likewise.
+ 	(write_ts_vector_tree_pointers): Likewise.
+ 	(write_ts_poly_tree_pointers): Likewise.
+ 	(write_ts_complex_tree_pointers): Likewise.
+ 	(write_ts_decl_minimal_tree_pointers): Likewise.
+ 	(write_ts_decl_common_tree_pointers): Likewise.
+ 	(write_ts_decl_non_common_tree_pointers): Likewise.
+ 	(write_ts_decl_with_vis_tree_pointers): Likewise.
+ 	(write_ts_field_decl_tree_pointers): Likewise.
+ 	(write_ts_function_decl_tree_pointers): Likewise.
+ 	(write_ts_type_common_tree_pointers): Likewise.
+ 	(write_ts_type_non_common_tree_pointers): Likewise.
+ 	(write_ts_list_tree_pointers): Likewise.
+ 	(write_ts_vec_tree_pointers): Likewise.
+ 	(write_ts_exp_tree_pointers): Likewise.
+ 	(write_ts_block_tree_pointers): Likewise.
+ 	(write_ts_binfo_tree_pointers): Likewise.
+ 	(write_ts_constructor_tree_pointers): Likewise.
+ 	(write_ts_omp_clause_tree_pointers): Likewise.
+ 	(streamer_write_tree_body): Likewise.
+ 	(streamer_write_integer_cst): Likewise.
+ 	* tree-streamer.h (streamer_read_chain):Declare.
+ 	(streamer_write_chain):Declare.
+ 	(streamer_write_tree_body): Update prototype.
+ 	(streamer_write_integer_cst): Update prototype.
+ 
+ 2020-05-29  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR bootstrap/95413
+ 	* configure: Regenerated.
+ 
+ 2020-05-29  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (add<mode>3_vcc_zext_dup): Add early clobber.
+ 	(add<mode>3_vcc_zext_dup_exec): Likewise.
+ 	(add<mode>3_vcc_zext_dup2): Likewise.
+ 	(add<mode>3_vcc_zext_dup2_exec): Likewise.
+ 
+ 2020-05-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95272
+ 	* tree-vectorizer.h (_slp_tree::representative): Add.
+ 	(SLP_TREE_REPRESENTATIVE): Likewise.
+ 	* tree-vect-loop.c (vectorizable_reduction): Adjust SLP
+ 	node gathering.
+ 	(vectorizable_live_operation): Use the representative to
+ 	attach the reduction info to.
+ 	* tree-vect-slp.c (_slp_tree::_slp_tree): Initialize
+ 	SLP_TREE_REPRESENTATIVE.
+ 	(vect_create_new_slp_node): Likewise.
+ 	(slp_copy_subtree): Copy it.
+ 	(vect_slp_rearrange_stmts): Re-arrange even COND_EXPR stmts.
+ 	(vect_slp_analyze_node_operations_1): Pass the representative
+ 	to vect_analyze_stmt.
+ 	(vect_schedule_slp_instance): Pass the representative to
+ 	vect_transform_stmt.
+ 
+ 2020-05-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95356
+ 	* tree-vect-stmts.c (vectorizable_shift): Do in-place SLP
+ 	node hacking during analysis.
+ 
+ 2020-05-29  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR lto/95362
+ 	* lto-streamer-out.c (lto_output_tree): Disable redundant streaming.
+ 
+ 2020-05-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95403
+ 	* tree-vect-stmts.c (vect_init_vector_1): Guard against NULL
+ 	stmt_vinfo.
+ 
+ 2020-05-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/95315
+ 	* omp-general.c (omp_resolve_declare_variant): Fix up addition of
+ 	declare variant cgraph node removal callback.
+ 
+ 2020-05-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/95052
+ 	* expr.c (store_expr): If expr_size is constant and significantly
+ 	larger than TREE_STRING_LENGTH, set temp to just the
+ 	TREE_STRING_LENGTH portion of the STRING_CST.
+ 
+ 2020-05-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95393
+ 	* tree-ssa-phiopt.c (minmax_replacement): Use gimple_build
+ 	to build the min/max expression so we simplify cases like
+ 	MAX(0, s) immediately.
+ 
+ 2020-05-29  Joe Ramsay  <joe.ramsay@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve.md (<LOGICAL:optab><mode>3): Add support
+ 	for unpacked EOR, ORR, AND.
+ 
+ 2020-05-28  Nicolas Bértolo  <nicolasbertolo@gmail.com>
+ 
+ 	* Makefile.in: don't look for libiberty in the "pic" subdirectory
+ 	when building for Mingw. Add dependency on xgcc with the proper
+ 	extension.
+ 
+ 2020-05-28  Jeff Law  <law@redhat.com>
+ 
+ 	* config/h8300/logical.md (bclrhi_msx): Remove pattern.
+ 
+ 2020-05-28  Jeff Law  <law@redhat.com>
+ 
+ 	* config/h8300/logical.md (HImode H8/SX bit-and splitter): Don't
+ 	make a nonzero adjustment to the memory offset.
+ 	(b<ior,xor>hi_msx): Turn into a splitter.
+ 
+ 2020-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gimple-ssa-store-merging.c (merged_store_group::can_be_merged_into):
+ 	Fix off-by-one error.
+ 
+ 2020-05-28  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (aarch64_frame): Add a comment above
+ 	wb_candidate1 and wb_candidate2.
+ 	* config/aarch64/aarch64.c (aarch64_layout_frame): Invalidate
+ 	wb_candidate1 and wb_candidate2 if we decided not to use them.
+ 
+ 2020-05-28  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR testsuite/95361
+ 	* config/aarch64/aarch64.c (aarch64_expand_epilogue): Assert that
+ 	we have at least some CFI operations when using a frame pointer.
+ 	Only redefine the CFA if we have CFI operations.
+ 
+ 2020-05-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_prologue_cost_for_slp): Remove
+ 	case for !SLP_TREE_VECTYPE.
+ 	(vect_slp_analyze_node_operations): Adjust.
+ 
+ 2020-05-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (_slp_tree::vec_defs): Add.
+ 	(SLP_TREE_VEC_DEFS): Likewise.
+ 	* tree-vect-slp.c (_slp_tree::_slp_tree): Adjust.
+ 	(_slp_tree::~_slp_tree): Likewise.
+ 	(vect_mask_constant_operand_p): Remove unused function.
+ 	(vect_get_constant_vectors): Rename to...
+ 	(vect_create_constant_vectors): ... this.  Take the
+ 	invariant node as argument and code generate it.  Remove
+ 	dead code, remove temporary asserts.  Pass a NULL stmt_info
+ 	to vect_init_vector.
+ 	(vect_get_slp_defs): Simplify.
+ 	(vect_schedule_slp_instance): Code-generate externals and
+ 	invariants using vect_create_constant_vectors.
+ 
+ 2020-05-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-stmts.c (vect_finish_stmt_generation_1):
+ 	Conditionalize stmt_info use, assert the new stmt cannot throw
+ 	when not specified.
+ 	(vect_finish_stmt_generation): Adjust assert.
+ 
+ 2020-05-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95273
+ 	PR tree-optimization/95356
+ 	* tree-vect-stmts.c (vectorizable_shift): Adjust when and to
+ 	what we set the vector type of the shift operand SLP node
+ 	again.
+ 
+ 2020-05-28  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/arm.c (mve_vector_mem_operand): Fix unwanted
+ 	fall-throughs.
+ 
+ 2020-05-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR web/95380
+ 	* doc/invoke.texi: Add missing params, remove max-once-peeled-insns and
+ 	rename ipcp-unit-growth to ipa-cp-unit-growth.
+ 
+ 2020-05-28  Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/sse.md (*avx512vl_<code>v2div2qi2_store_1): Rename
+ 	from *avx512vl_<code>v2div2qi_store and refine memory size of
+ 	the pattern.
+ 	(*avx512vl_<code>v2div2qi2_mask_store_1): Ditto.
+ 	(*avx512vl_<code><mode>v4qi2_store_1): Ditto.
+ 	(*avx512vl_<code><mode>v4qi2_mask_store_1): Ditto.
+ 	(*avx512vl_<code><mode>v8qi2_store_1): Ditto.
+ 	(*avx512vl_<code><mode>v8qi2_mask_store_1): Ditto.
+ 	(*avx512vl_<code><mode>v4hi2_store_1): Ditto.
+ 	(*avx512vl_<code><mode>v4hi2_mask_store_1): Ditto.
+ 	(*avx512vl_<code>v2div2hi2_store_1): Ditto.
+ 	(*avx512vl_<code>v2div2hi2_mask_store_1): Ditto.
+ 	(*avx512vl_<code>v2div2si2_store_1): Ditto.
+ 	(*avx512vl_<code>v2div2si2_mask_store_1): Ditto.
+ 	(*avx512f_<code>v8div16qi2_store_1): Ditto.
+ 	(*avx512f_<code>v8div16qi2_mask_store_1): Ditto.
+ 	(*avx512vl_<code>v2div2qi2_store_2): New define_insn_and_split.
+ 	(*avx512vl_<code>v2div2qi2_mask_store_2): Ditto.
+ 	(*avx512vl_<code><mode>v4qi2_store_2): Ditto.
+ 	(*avx512vl_<code><mode>v4qi2_mask_store_2): Ditto.
+ 	(*avx512vl_<code><mode>v8qi2_store_2): Ditto.
+ 	(*avx512vl_<code><mode>v8qi2_mask_store_2): Ditto.
+ 	(*avx512vl_<code><mode>v4hi2_store_2): Ditto.
+ 	(*avx512vl_<code><mode>v4hi2_mask_store_2): Ditto.
+ 	(*avx512vl_<code>v2div2hi2_store_2): Ditto.
+ 	(*avx512vl_<code>v2div2hi2_mask_store_2): Ditto.
+ 	(*avx512vl_<code>v2div2si2_store_2): Ditto.
+ 	(*avx512vl_<code>v2div2si2_mask_store_2): Ditto.
+ 	(*avx512f_<code>v8div16qi2_store_2): Ditto.
+ 	(*avx512f_<code>v8div16qi2_mask_store_2): Ditto.
+ 	* config/i386/i386-builtin-types.def: Adjust builtin type.
+ 	* config/i386/i386-expand.c: Ditto.
+ 	* config/i386/i386-builtin.def: Adjust builtin.
+ 	* config/i386/avx512fintrin.h: Ditto.
+ 	* config/i386/avx512vlbwintrin.h: Ditto.
+ 	* config/i386/avx512vlintrin.h: Ditto.
+ 
+ 2020-05-28  Dong JianQiang  <dongjianqiang2@huawei.com>
+ 
+ 	PR gcov-profile/95332
+ 	* gcov-io.c (gcov_var::endian): Move field.
+ 	(from_file): Add IN_GCOV_TOOL check.
+ 	* gcov-io.h (gcov_magic): Ditto.
+ 
+ 2020-05-28  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.c (xtensa_delegitimize_address): New
+ 	function.
+ 	(TARGET_DELEGITIMIZE_ADDRESS): New macro.
+ 
+ 2020-05-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* builtin-types.def (BT_UINT128): New primitive type.
+ 	(BT_FN_UINT128_UINT128): New function type.
+ 	* builtins.def (BUILT_IN_BSWAP128): New GCC builtin.
+ 	* doc/extend.texi (__builtin_bswap128): Document it.
+ 	* builtins.c (expand_builtin): Deal with BUILT_IN_BSWAP128.
+ 	(is_inexpensive_builtin): Likewise.
+ 	* fold-const-call.c (fold_const_call_ss): Likewise.
+ 	* fold-const.c (tree_call_nonnegative_warnv_p): Likewise.
+ 	* tree-ssa-ccp.c (evaluate_stmt): Likewise.
+ 	* tree-vect-stmts.c (vect_get_data_ptr_increment): Likewise.
+ 	(vectorizable_call): Likewise.
+ 	* optabs.c (expand_unop): Always use the double word path for it.
+ 	* tree-core.h (enum tree_index): Add TI_UINT128_TYPE.
+ 	* tree.h (uint128_type_node): New global type.
+ 	* tree.c (build_common_tree_nodes): Build it if TImode is supported.
+ 
+ 2020-05-27  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/mmx.md (*mmx_haddv2sf3): Remove SSE alternatives.
+ 	(mmx_hsubv2sf3): Ditto.
+ 	(mmx_haddsubv2sf3): New expander.
+ 	(*mmx_haddsubv2sf3): Rename from mmx_addsubv2sf3. Correct
+ 	RTL template to model horizontal subtraction and addition.
+ 	* config/i386/i386-builtin.def (IX86_BUILTIN_PFPNACC):
+ 	Update for rename.
+ 
+ 2020-05-27  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95355
+ 	* config/i386/sse.md
+ 	(<mask_codefor>avx512f_<code>v16qiv16si2<mask_name>):
+ 	Remove %q operand modifier from insn template.
+ 	(avx512f_<code>v8hiv8di2<mask_name>): Ditto.
+ 
+ 2020-05-27  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/mmx.md (mmx_pswapdsf2): Add SSE alternatives.
+ 	Enable insn pattern for TARGET_MMX_WITH_SSE.
+ 	(*mmx_movshdup): New insn pattern.
+ 	(*mmx_movsldup): Ditto.
+ 	(*mmx_movss): Ditto.
+ 	* config/i386/i386-expand.c (ix86_vectorize_vec_perm_const):
+ 	Handle E_V2SFmode.
+ 	(expand_vec_perm_movs): Handle E_V2SFmode.
+ 	(expand_vec_perm_even_odd): Ditto.
+ 	(expand_vec_perm_broadcast_1): Assert that E_V2SFmode
+ 	is already handled by standard shuffle patterns.
+ 
+ 2020-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95295
+ 	* tree-ssa-loop-im.c (sm_seq_valid_bb): Fix sinking after
+ 	merging stores from paths.
+ 
+ 2020-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95356
+ 	* tree-vect-stmts.c (vectorizable_shift): Adjust vector
+ 	type for the shift operand.
+ 
+ 2020-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95335
+ 	* tree-vect-slp.c (vect_slp_analyze_node_operations): Reset
+ 	lvisited for nodes made external.
+ 
+ 2020-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	* dump-context.h (debug_dump_context): New class.
+ 	(dump_context): Make it friend.
+ 	* dumpfile.c (debug_dump_context::debug_dump_context):
+ 	Implement.
+ 	(debug_dump_context::~debug_dump_context): Likewise.
+ 	* tree-vect-slp.c: Include dump-context.h.
+ 	(vect_print_slp_tree): Dump a single SLP node.
+ 	(debug): New overload for slp_tree.
+ 	(vect_print_slp_graph): Rename from vect_print_slp_tree and
+ 	use that.
+ 	(vect_analyze_slp_instance): Adjust.
+ 
+ 2020-05-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/95315
+ 	* omp-general.c (omp_declare_variant_remove_hook): New function.
+ 	(omp_resolve_declare_variant): Always return base if it is already
+ 	declare_variant_alt magic decl itself.  Register
+ 	omp_declare_variant_remove_hook as cgraph node removal hook.
+ 
+ 2020-05-27  Jeff Law  <law@redhat.com>
+ 
+ 	* config/h8300/testcompare.md (tst_extzv_1_n): Do not accept constants
+ 	for the primary input operand.
+ 	(tstsi_variable_bit_qi): Similarly.
+ 
+ 2020-05-26  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/mmx.md (mmx_pswapdv2si2): Add SSE2 alternative.
+ 
+ 2020-05-26  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR ipa/95320
+ 	* ipa-utils.h (odr_type_p): Also permit calls with
+ 	only flag_generate_offload set.
+ 
+ 2020-05-26  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* gcc.c (validate_switches): Add braced parameter.  Adjust all
+ 	callers.  Expected and skip trailing brace only if braced.
+ 	Return after handling one atom otherwise.
+ 	(DUMPS_OPTIONS): New.
+ 	(cpp_debug_options): Define in terms of it.
+ 
+ 2020-05-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95327
+ 	* tree-vect-stmts.c (vectorizable_shift): Compute op1_vectype
+ 	when we are not using a scalar shift.
+ 
+ 2020-05-26  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/mmx.md (*mmx_pshufd_1): New insn pattern.
+ 	* config/i386/i386-expand.c (ix86_vectorize_vec_perm_const):
+ 	Handle E_V2SImode and E_V4HImode.
+ 	(expand_vec_perm_even_odd_1): Handle E_V4HImode.
+ 	Assert that E_V2SImode is already handled.
+ 	(expand_vec_perm_broadcast_1): Assert that E_V2SImode
+ 	is already handled by standard shuffle patterns.
+ 
+ 2020-05-26  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* tree.c (free_lang_data_in_type): Simpify types of TYPE_VALUES in
+ 	enumeral types.
+ 
+ 2020-05-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/95197
+ 	* gimplify.c (find_combined_omp_for): Move to omp-general.c.
+ 	* omp-general.h (find_combined_omp_for): Declare.
+ 	* omp-general.c: Include tree-iterator.h.
+ 	(find_combined_omp_for): New function, moved from gimplify.c.
+ 
+ 2020-05-26  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* common.opt (aux_base_name): Define.
+ 	(dumpbase, dumpdir): Mark as Driver options.
+ 	(-dumpbase, -dumpdir): Likewise.
+ 	(dumpbase-ext, -dumpbase-ext): New.
+ 	(auxbase, auxbase-strip): Drop.
+ 	* doc/invoke.texi (-dumpbase, -dumpbase-ext, -dumpdir):
+ 	Document.
+ 	(-o): Introduce the notion of primary output, mention it
+ 	influences auxiliary and dump output names as well, add
+ 	examples.
+ 	(-save-temps): Adjust, move examples into -dump*.
+ 	(-save-temps=cwd, -save-temps=obj): Likewise.
+ 	(-fdump-final-insns): Adjust.
+ 	* dwarf2out.c (gen_producer_string): Drop auxbase and
+ 	auxbase_strip; add dumpbase_ext.
+ 	* gcc.c (enum save_temps): Add SAVE_TEMPS_DUMP.
+ 	(save_temps_prefix, save_temps_length): Drop.
+ 	(save_temps_overrides_dumpdir): New.
+ 	(dumpdir, dumpbase, dumpbase_ext): New.
+ 	(dumpdir_length, dumpdir_trailing_dash_added): New.
+ 	(outbase, outbase_length): New.
+ 	(The Specs Language): Introduce %".  Adjust %b and %B.
+ 	(ASM_FINAL_SPEC): Use %b.dwo for an aux output name always.
+ 	Precede object file with %w when it's the primary output.
+ 	(cpp_debug_options): Do not pass on incoming -dumpdir,
+ 	-dumpbase and -dumpbase-ext options; recompute them with
+ 	%:dumps.
+ 	(cc1_options): Drop auxbase with and without compare-debug;
+ 	use cpp_debug_options instead of dumpbase.  Mark asm output
+ 	with %w when it's the primary output.
+ 	(static_spec_functions): Drop %:compare-debug-auxbase-opt and
+ 	%:replace-exception.  Add %:dumps.
+ 	(driver_handle_option): Implement -save-temps=*/-dumpdir
+ 	mutual overriding logic.  Save dumpdir, dumpbase and
+ 	dumpbase-ext options.  Do not save output_file in
+ 	save_temps_prefix.
+ 	(adds_single_suffix_p): New.
+ 	(single_input_file_index): New.
+ 	(process_command): Combine output dir, output base name, and
+ 	dumpbase into dumpdir and outbase.
+ 	(set_collect_gcc_options): Pass a possibly-adjusted -dumpdir.
+ 	(do_spec_1): Optionally dumpdir instead of save_temps_prefix,
+ 	and outbase instead of input_basename in %b, %B and in
+ 	-save-temps aux files.  Handle empty argument %".
+ 	(driver::maybe_run_linker): Adjust dumpdir and auxbase.
+ 	(compare_debug_dump_opt_spec_function): Adjust gkd dump file
+ 	naming.  Spec-quote the computed -fdump-final-insns file name.
+ 	(debug_auxbase_opt): Drop.
+ 	(compare_debug_self_opt_spec_function): Drop auxbase-strip
+ 	computation.
+ 	(compare_debug_auxbase_opt_spec_function): Drop.
+ 	(not_actual_file_p): New.
+ 	(replace_extension_spec_func): Drop.
+ 	(dumps_spec_func): New.
+ 	(convert_white_space): Split-out parts into...
+ 	(quote_string, whitespace_to_convert_p): ... these.  New.
+ 	(quote_spec_char_p, quote_spec, quote_spec_arg): New.
+ 	(driver::finalize): Release and reset new variables; drop
+ 	removed ones.
+ 	* lto-wrapper.c (HAVE_TARGET_EXECUTABLE_SUFFIX): Define if...
+ 	(TARGET_EXECUTABLE_SUFFIX): ... is defined; define this to the
+ 	empty string otherwise.
+ 	(DUMPBASE_SUFFIX): Drop leading period.
+ 	(debug_objcopy): Use concat.
+ 	(run_gcc): Recognize -save-temps=* as -save-temps too.  Obey
+ 	-dumpdir.  Pass on empty dumpdir and dumpbase with a directory
+ 	component.  Simplify temp file names.
+ 	* opts.c (finish_options): Drop aux base name handling.
+ 	(common_handle_option): Drop auxbase-strip handling.
+ 	* toplev.c (print_switch_values): Drop auxbase, add
+ 	dumpbase-ext.
+ 	(process_options): Derive aux_base_name from dump_base_name
+ 	and dump_base_ext.
+ 	(lang_dependent_init): Compute dump_base_ext along with
+ 	dump_base_name.  Disable stack usage and callgraph-info	during
+ 	lto generation and compare-debug recompilation.
+ 
+ 2020-05-26  Hongtao Liu  <hongtao.liu@intel.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95211
+ 	PR target/95256
+ 	* config/i386/sse.md (<floatunssuffix>v2div2sf2): New expander.
+ 	(fix<fixunssuffix>_truncv2sfv2di2): Ditto.
+ 	(avx512dq_float<floatunssuffix>v2div2sf2): Renaming from
+ 	float<floatunssuffix>v2div2sf2.
+ 	(avx512dq_fix<fixunssuffix>_truncv2sfv2di2<mask_name>):
+ 	Renaming from fix<fixunssuffix>_truncv2sfv2di2<mask_name>.
+ 	(vec_pack<floatprefix>_float_<mode>): Adjust icode name.
+ 	(vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
+ 	(vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
+ 	* config/i386/i386-builtin.def: Ditto.
+ 	* emit-rtl.c (validate_subreg): Allow use of *paradoxical* vector
+ 	subregs when both omode and imode are vector mode and
+ 	have the same inner mode.
+ 
+ 2020-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gimple-ssa-store-merging.c (merged_store_group::can_be_merged_into):
+ 	Only turn MEM_REFs into bit-field stores for small bit-field regions.
+ 	(imm_store_chain_info::output_merged_store): Be prepared for sources
+ 	with non-integral type in the bit-field insertion case.
+ 	(pass_store_merging::process_store): Use MAX_BITSIZE_MODE_ANY_INT as
+ 	the largest size for the bit-field case.
+ 
+ 2020-05-25  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/mmx.md (*vec_dupv2sf): Redefine as define_insn.
+ 	(mmx_pshufw_1): Change Yv constraint to xYw.  Correct type attribute.
+ 	(*vec_dupv4hi): Redefine as define_insn.
+ 	Remove alternative with general register input.
+ 	(*vec_dupv2si): Ditto.
+ 
+ 2020-05-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95309
+ 	* tree-vect-slp.c (vect_get_constant_vectors): Move number
+ 	of vector computation ...
+ 	(vect_slp_analyze_node_operations): ... to analysis phase.
+ 
+ 2020-05-25  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* lto-streamer-out.c (lto_output_tree): Add streamer_debugging check.
+ 	* lto-streamer.h (streamer_debugging): New constant
+ 	* tree-streamer-in.c (streamer_read_tree_bitfields): Add
+ 	streamer_debugging check.
+ 	(streamer_get_pickled_tree): Likewise.
+ 	* tree-streamer-out.c (pack_ts_base_value_fields): Likewise.
+ 
+ 2020-05-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95308
+ 	* tree-ssa-forwprop.c (pass_forwprop::execute): Generalize
+ 	test for TARGET_MEM_REFs.
+ 
+ 2020-05-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95295
+ 	* tree-ssa-loop-im.c (sm_seq_valid_bb): Compare remat stores
+ 	RHSes and drop to full sm_other if they are not equal.
+ 
+ 2020-05-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95271
+ 	* tree-vect-stmts.c (vectorizable_bswap): Update invariant SLP
+ 	children vector type.
+ 	(vectorizable_call): Pass down slp ops.
+ 
+ 2020-05-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95297
+ 	* tree-vect-stmts.c (vectorizable_shift): For scalar_shift_arg
+ 	skip updating operand 1 vector type.
+ 
+ 2020-05-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95284
+ 	* tree-ssa-sink.c (sink_common_stores_to_bb): Amend previous
+ 	fix.
+ 
+ 2020-05-25  Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	PR target/95125
+ 	* config/i386/sse.md (sf2dfmode_lower): New mode attribute.
+ 	(trunc<mode><sf2dfmode_lower>2) New expander.
+ 	(extend<sf2dfmode_lower><mode>2): Ditto.
+ 
+ 2020-05-23 Iain Sandoe <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.h (ASM_GENERATE_INTERNAL_LABEL): Make
+ 	ubsan_{data,type},ASAN symbols linker-visible.
+ 
+ 2020-05-22  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* lto-streamer-out.c (DFS::DFS): Silence warning.
+ 
+ 2020-05-22  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95255
+ 	* config/i386/i386.md (<rounding_insn><mode>2): Do not try to
+ 	expand non-sse4 ROUND_ROUNDEVEN rounding via SSE support routines.
+ 
+ 2020-05-22  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* lto-streamer-out.c (lto_output_tree): Do not stream final ref if
+ 	it is not needed.
+ 
+ 2020-05-22  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* lto-section-out.c (lto_output_decl_index): Adjust dump indentation.
+ 	* lto-streamer-out.c (create_output_block): Fix whitespace
+ 	(lto_write_tree_1): Add (debug) dump.
+ 	(DFS::DFS): Add dump.
+ 	(DFS::DFS_write_tree_body): Do not dump here.
+ 	(lto_output_tree): Improve dumping; do not stream ref when not needed.
+ 	(produce_asm_for_decls): Fix whitespace.
+ 	* tree-streamer-out.c (streamer_write_tree_header): Add dump.
+ 	* tree-streamer-out.c (streamer_write_integer_cst): Add debug dump.
+ 
+ 2020-05-22  Hongtao.liu  <hongtao.liu@intel.com>
+ 
+ 	PR target/92658
+ 	* config/i386/sse.md (trunc<pmov_src_lower><mode>2): New expander
+ 	(truncv32hiv32qi2): Ditto.
+ 	(trunc<ssedoublemodelower><mode>2): Ditto.
+ 	(trunc<mode><pmov_dst_3>2): Ditto.
+ 	(trunc<mode><pmov_dst_mode_4>2): Ditto.
+ 	(truncv2div2si2): Ditto.
+ 	(truncv8div8qi2): Ditto.
+ 	(avx512f_<code>v8div16qi2): Renaming from *avx512f_<code>v8div16qi2.
+ 	(avx512vl_<code>v2div2si): Renaming from *avx512vl_<code>v2div2si2.
+ 	(avx512vl_<code><mode>v2<ssecakarnum>qi2): Renaming from
+ 	*avx512vl_<code><mode>v<ssescalarnum>qi2.
+ 
+ 2020-05-22  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/95258
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Detect
+ 	AVX512VPOPCNTDQ.
+ 
+ 2020-05-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95268
+ 	* tree-ssa-sink.c (sink_common_stores_to_bb): Handle clobbers
+ 	properly.
+ 
+ 2020-05-22  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-streamer.c (record_common_node): Fix hash value of pre-streamed
+ 	nodes.
+ 
+ 2020-05-22  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* lto-streamer-in.c (lto_read_tree): Do not stream end markers.
+ 	(lto_input_scc): Optimize streaming of entry lengths.
+ 	* lto-streamer-out.c (lto_write_tree): Do not stream end markers
+ 	(DFS::DFS): Optimize stremaing of entry lengths
+ 
+ 2020-05-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR lto/95190
+ 	* doc/invoke.texi (flto): Document behavior of diagnostic
+ 	options.
+ 
+ 2020-05-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (vect_is_simple_use): New overload.
+ 	(vect_maybe_update_slp_op_vectype): New.
+ 	* tree-vect-stmts.c (vect_is_simple_use): New overload
+ 	accessing operands of SLP vs. non-SLP operation transparently.
+ 	(vect_maybe_update_slp_op_vectype): New function updating
+ 	the possibly shared SLP operands vector type.
+ 	(vectorizable_operation): Be a bit more SLP vs non-SLP agnostic
+ 	using the new vect_is_simple_use overload;  update SLP invariant
+ 	operand nodes vector type.
+ 	(vectorizable_comparison): Likewise.
+ 	(vectorizable_call): Likewise.
+ 	(vectorizable_conversion): Likewise.
+ 	(vectorizable_shift): Likewise.
+ 	(vectorizable_store): Likewise.
+ 	(vectorizable_condition): Likewise.
+ 	(vectorizable_assignment): Likewise.
+ 	* tree-vect-loop.c (vectorizable_reduction): Likewise.
+ 	* tree-vect-slp.c (vect_get_constant_vectors): Enforce
+ 	present SLP_TREE_VECTYPE and check it matches previous
+ 	behavior.
+ 
+ 2020-05-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95248
+ 	* tree-ssa-loop-im.c (sm_seq_valid_bb): Remove bogus early out.
+ 
+ 2020-05-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (_slp_tree::_slp_tree): New.
+ 	(_slp_tree::~_slp_tree): Likewise.
+ 	* tree-vect-slp.c (_slp_tree::_slp_tree): Factor out code
+ 	from allocators.
+ 	(_slp_tree::~_slp_tree): Implement.
+ 	(vect_free_slp_tree): Simplify.
+ 	(vect_create_new_slp_node): Likewise.  Add nops parameter.
+ 	(vect_build_slp_tree_2): Adjust.
+ 	(vect_analyze_slp_instance): Likewise.
+ 
+ 2020-05-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* adjust-alignment.c: Include memmodel.h.
+ 
+ 2020-05-21  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/95260
+ 	* config/i386/cpuid.h: Use hexadecimal in comments.
+ 
+ 2020-05-21  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/95212
+ 	* config/i386/i386-builtins.c (processor_features): Move
+ 	F_AVX512VP2INTERSECT after F_AVX512BF16.
+ 	(isa_names_table): Likewise.
+ 
+ 2020-05-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	* common/config/aarch64/aarch64-common.c (aarch64_handle_option):
+ 	Handle OPT_moutline_atomics.
+ 	* config/aarch64/aarch64.c: Add outline-atomics to
+ 	aarch64_attributes.
+ 	* doc/extend.texi: Document the newly added target attribute.
+ 
+ 2020-05-21  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95218
+ 
+ 	* config/i386/mmx.md (*mmx_<code>v2sf): Do not mark
+ 	operands 1 and 2 commutative.  Manually swap operands.
+ 	(*mmx_nabsv2sf2): Ditto.
+ 
+ 	Partially revert:
+ 	2020-05-18  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*<code>tf2_1):
+ 	Mark operands 1 and 2 commutative.
+ 	(*nabstf2_1): Ditto.
+ 	* config/i386/sse.md (*<code><mode>2): Mark operands 1 and 2
+ 	commutative.  Do not swap operands.
+ 	(*nabs<mode>2): Ditto.
+ 
+ 2020-05-20  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95229
+ 	* config/i386/sse.md (<code>v8qiv8hi2): Use
+ 	simplify_gen_subreg instead of simplify_subreg.
+ 	(<code>v8qiv8si2): Ditto.
+ 	(<code>v4qiv4si2): Ditto.
+ 	(<code>v4hiv4si2): Ditto.
+ 	(<code>v8qiv8di2): Ditto.
+ 	(<code>v4qiv4di2): Ditto.
+ 	(<code>v2qiv2di2): Ditto.
+ 	(<code>v4hiv4di2): Ditto.
+ 	(<code>v2hiv2di2): Ditto.
+ 	(<code>v2siv2di2): Ditto.
+ 
+ 2020-05-20  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95238
+ 	* config/i386/i386.md (*pushsi2_rex64):
+ 	Use "e" constraint instead of "i".
+ 
+ 2020-05-20  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* lto-streamer-in.c (lto_input_scc): Add SHARED_SCC parameter.
+ 	(lto_input_tree_1): Strenghten sanity check.
+ 	(lto_input_tree): Update call of lto_input_scc.
+ 	* lto-streamer-out.c: Include ipa-utils.h
+ 	(create_output_block): Initialize local_trees if merigng is going
+ 	to happen.
+ 	(destroy_output_block): Destroy local_trees.
+ 	(DFS): Add max_local_entry.
+ 	(local_tree_p): New function.
+ 	(DFS::DFS): Initialize and maintain it.
+ 	(DFS::DFS_write_tree): Decide on streaming format.
+ 	(lto_output_tree): Stream inline singleton SCCs
+ 	* lto-streamer.h (enum LTO_tags): Add LTO_trees.
+ 	(struct output_block): Add local_trees.
+ 	(lto_input_scc): Update prototype.
+ 
+ 2020-05-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/95223
+ 	* hash-table.h (hash_table::find_with_hash): Move up the call to
+ 	hash_table::verify.
+ 
+ 2020-05-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	* lto-compress.c (lto_compression_zstd): Fill up
+ 	num_compressed_il_bytes.
+ 	(lto_uncompression_zstd): Likewise for num_uncompressed_il_bytes here.
+ 
+ 2020-05-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95219
+ 	* tree-vect-loop.c (vectorizable_induction): Reduce
+ 	group_size before computing the number of required IVs.
+ 
+ 2020-05-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/95231
+ 	* tree-inline.c (remap_gimple_stmt): Revert adjusting
+ 	COND_EXPR and VEC_COND_EXPR for a -fnon-call-exception boundary.
+ 
+ 2020-05-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 	    Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR target/94959
+ 	* config/arm/arm-protos.h (arm_mode_base_reg_class): Function
+ 	declaration.
+ 	(mve_vector_mem_operand): Likewise.
+ 	* config/arm/arm.c (thumb2_legitimate_address_p): For MVE target check
+ 	the load from memory to a core register is legitimate for give mode.
+ 	(mve_vector_mem_operand): Define function.
+ 	(arm_print_operand): Modify comment.
+ 	(arm_mode_base_reg_class): Define.
+ 	* config/arm/arm.h (MODE_BASE_REG_CLASS): Modify to add check for
+ 	TARGET_HAVE_MVE and expand to arm_mode_base_reg_class on TRUE.
+ 	* config/arm/constraints.md (Ux): Likewise.
+ 	(Ul): Likewise.
+ 	* config/arm/mve.md (mve_mov): Replace constraint Us with Ux and also
+ 	add support for missing Vector Store Register and Vector Load Register.
+ 	Add a new alternative to support load from memory to PC (or label) in
+ 	vector store/load.
+ 	(mve_vstrbq_<supf><mode>): Modify constraint Us to Ux.
+ 	(mve_vldrbq_<supf><mode>): Modify constriant Us to Ux, predicate to
+ 	mve_memory_operand and also modify the MVE instructions to emit.
+ 	(mve_vldrbq_z_<supf><mode>): Modify constraint Us to Ux.
+ 	(mve_vldrhq_fv8hf): Modify constriant Us to Ux, predicate to
+ 	mve_memory_operand and also modify the MVE instructions to emit.
+ 	(mve_vldrhq_<supf><mode>): Modify constriant Us to Ux, predicate to
+ 	mve_memory_operand and also modify the MVE instructions to emit.
+ 	(mve_vldrhq_z_fv8hf): Likewise.
+ 	(mve_vldrhq_z_<supf><mode>): Likewise.
+ 	(mve_vldrwq_fv4sf): Likewise.
+ 	(mve_vldrwq_<supf>v4si): Likewise.
+ 	(mve_vldrwq_z_fv4sf): Likewise.
+ 	(mve_vldrwq_z_<supf>v4si): Likewise.
+ 	(mve_vld1q_f<mode>): Modify constriant Us to Ux.
+ 	(mve_vld1q_<supf><mode>): Likewise.
+ 	(mve_vstrhq_fv8hf): Modify constriant Us to Ux, predicate to
+ 	mve_memory_operand.
+ 	(mve_vstrhq_p_fv8hf): Modify constriant Us to Ux, predicate to
+ 	mve_memory_operand and also modify the MVE instructions to emit.
+ 	(mve_vstrhq_p_<supf><mode>): Likewise.
+ 	(mve_vstrhq_<supf><mode>): Modify constriant Us to Ux, predicate to
+ 	mve_memory_operand.
+ 	(mve_vstrwq_fv4sf): Modify constriant Us to Ux.
+ 	(mve_vstrwq_p_fv4sf): Modify constriant Us to Ux and also modify the MVE
+ 	instructions to emit.
+ 	(mve_vstrwq_p_<supf>v4si): Likewise.
+ 	(mve_vstrwq_<supf>v4si): Likewise.Modify constriant Us to Ux.
+ 	* config/arm/predicates.md (mve_memory_operand): Define.
+ 
+ 2020-05-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c/95141
+ 	* c-fold.c (c_fully_fold_internal): Enhance guard on
+ 	overflow_warning.
+ 
+ 2020-05-20  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	PR target/90811
+ 	* Makefile.in (OBJS): Add adjust-alignment.o.
+ 	* adjust-alignment.c (pass_data_adjust_alignment): New.
+ 	(pass_adjust_alignment): New.
+ 	(pass_adjust_alignment::execute): New.
+ 	(make_pass_adjust_alignment): New.
+ 	* tree-pass.h (make_pass_adjust_alignment): New.
+ 	* passes.def: Add pass_adjust_alignment.
+ 
+ 2020-05-19  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR target/94591
+ 	* config/aarch64/aarch64.c (aarch64_evpc_rev_local): Don't match
+ 	identity permutation.
+ 
+ 2020-05-19  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* doc/sourcebuild.texi: Document new short_eq_int, ptr_eq_short,
+ 	msp430_small, msp430_large and size24plus DejaGNU effective
+ 	targets.
+ 	Improve grammar in descriptions for size20plus and size32plus effective
+ 	targets.
+ 
+ 2020-05-19  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config/bpf/bpf.c (bpf_compute_frame_layout): Include space for
+ 	callee saved registers only in xBPF.
+ 	(bpf_expand_prologue): Save callee saved registers only in xBPF.
+ 	(bpf_expand_epilogue): Likewise for restoring.
+ 	* doc/invoke.texi (eBPF Options): Document this is activated by
+ 	-mxbpf.
+ 
+ 2020-05-19  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config/bpf/bpf.opt (mxbpf): New option.
+ 	* doc/invoke.texi (Option Summary): Add -mxbpf.
+ 	(eBPF Options): Document -mxbbpf.
+ 
+ 2020-05-19  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/92658
+ 	* config/i386/sse.md (<code>v16qiv16hi2): New expander.
+ 	(<code>v32qiv32hi2): Ditto.
+ 	(<code>v8qiv8hi2): Ditto.
+ 	(<code>v16qiv16si2): Ditto.
+ 	(<code>v8qiv8si2): Ditto.
+ 	(<code>v4qiv4si2): Ditto.
+ 	(<code>v16hiv16si2): Ditto.
+ 	(<code>v8hiv8si2): Ditto.
+ 	(<code>v4hiv4si2): Ditto.
+ 	(<code>v8qiv8di2): Ditto.
+ 	(<code>v4qiv4di2): Ditto.
+ 	(<code>v2qiv2di2): Ditto.
+ 	(<code>v8hiv8di2): Ditto.
+ 	(<code>v4hiv4di2): Ditto.
+ 	(<code>v2hiv2di2): Ditto.
+ 	(<code>v8siv8di2): Ditto.
+ 	(<code>v4siv4di2): Ditto.
+ 	(<code>v2siv2di2): Ditto.
+ 
+ 2020-05-19  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.c (riscv_implied_info_t): New.
+ 	(riscv_implied_info): New.
+ 	(riscv_subset_list): Add handle_implied_ext.
+ 	(riscv_subset_list::to_string): New parameter version_p to
+ 	control output format.
+ 	(riscv_subset_list::handle_implied_ext): New.
+ 	(riscv_subset_list::parse_std_ext): Call handle_implied_ext.
+ 	(riscv_arch_str): New parameter version_p to control output format.
+ 	(riscv_expand_arch): New.
+ 	* config/riscv/riscv-protos.h (riscv_arch_str): New parameter,
+ 	version_p.
+ 	* config/riscv/riscv.h (riscv_expand_arch): New,
+ 	(EXTRA_SPEC_FUNCTIONS): Define.
+ 	(ASM_SPEC): Transform -march= via riscv_expand_arch.
+ 
+ 2020-05-19  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* riscv-common.c (parse_sv_or_non_std_ext): Rename to
+ 	parse_multiletter_ext.
+ 	(parse_multiletter_ext): Add parsing `h` and `z`, drop `sx`,
+ 	adjust parsing order for 's' and 'x'.
+ 
+ 2020-05-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (_slp_tree::vectype): Add field.
+ 	(SLP_TREE_VECTYPE): New.
+ 	* tree-vect-slp.c (vect_create_new_slp_node): Initialize
+ 	SLP_TREE_VECTYPE.
+ 	(vect_create_new_slp_node): Likewise.
+ 	(vect_prologue_cost_for_slp): Move here from tree-vect-stmts.c
+ 	and simplify.
+ 	(vect_slp_analyze_node_operations): Walk nodes children for
+ 	invariant costing.
+ 	(vect_get_constant_vectors): Use local scope op variable.
+ 	* tree-vect-stmts.c (vect_prologue_cost_for_slp_op): Remove here.
+ 	(vect_model_simple_cost): Adjust.
+ 	(vect_model_store_cost): Likewise.
+ 	(vectorizable_store): Likewise.
+ 
+ 2020-05-18  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/92815
+ 	* tree-object-size.c (decl_init_size): New function.
+ 	(addr_object_size): Call it.
+ 	* tree.h (last_field): Declare.
+ 	(first_field): Add attribute nonnull.
+ 
+ 2020-05-18  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/94940
+ 	* tree-vrp.c (vrp_prop::check_mem_ref): Remove unreachable code.
+ 	* tree.c (component_ref_size): Correct the handling or array members
+ 	of unions.
+ 	Drop a pointless test.
+ 	Rename a local variable.
+ 
+ 2020-05-18  Jason Merrill  <jason@redhat.com>
+ 
+ 	* aclocal.m4: Add ax_cxx_compile_stdcxx.m4.
+ 	* configure.ac: Use AX_CXX_COMPILE_STDCXX(11).
+ 
+ 2020-05-14  Jason Merrill  <jason@redhat.com>
+ 
+ 	* doc/install.texi (Prerequisites): Update boostrap compiler
+ 	requirement to C++11/GCC 4.8.
+ 
+ 2020-05-18  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	PR tree-optimization/94952
+ 	* gimple-ssa-store-merging.c (pass_store_merging::process_store):
+ 	Initialize variables bitpos, bitregion_start, and bitregion_end in
+ 	order to silence warnings about use of uninitialized variables.
+ 
+ 2020-05-18  Carl Love  <cel@us.ibm.com>
+ 
+ 	PR target/94833
+ 	* config/rs6000/vsx.md (define_expand): Fix instruction generation for
+ 	first_match_index_<mode>.
+ 	* testsuite/gcc.target/powerpc/builtins-8-p9-runnable.c (main): Add
+ 	additional test cases with zero vector elements.
+ 
+ 2020-05-18  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95169
+ 	* config/i386/i386-expand.c (ix86_expand_int_movcc):
+ 	 Avoid reversing a non-trapping comparison to a trapping one.
+ 
+ 2020-05-18  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* config/arm/arm.c (output_move_double): Fix codegen when loading into
+ 	a register pair with an odd base register.
+ 
+ 2020-05-18  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386-expand.c (ix86_expand_fp_absneg_operator):
+ 	Do not emit FLAGS_REG clobber for TFmode.
+ 	* config/i386/i386.md (*<code>tf2_1): Rewrite as
+ 	define_insn_and_split.  Mark operands 1 and 2 commutative.
+ 	(*nabstf2_1): Ditto.
+ 	(absneg SSE splitter): Use MODEF mode iterator instead of SSEMODEF.
+ 	Do not swap memory operands.  Simplify RTX generation.
+ 	(neg abs SSE splitter): Ditto.
+ 	* config/i386/sse.md (*<code><mode>2): Mark operands 1 and 2
+ 	commutative.  Do not swap operands.  Simplify RTX generation.
+ 	(*nabs<mode>2): Ditto.
+ 
+ 2020-05-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_slp_bb): Start after labels.
+ 	(vect_get_constant_vectors): Really place init stmt after scalar defs.
+ 	* tree-vect-stmts.c (vect_init_vector_1): Insert before
+ 	region begin.
+ 
+ 2020-05-18  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Support
+ 	Intel Airmont, Tremont, Comet Lake, Ice Lake and Tiger Lake
+ 	processor families.
+ 
+ 2020-05-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/95171
+ 	* tree-inline.c (remap_gimple_stmt): Split out trapping compares
+ 	when inlining into a non-call EH function.
+ 
+ 2020-05-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95172
+ 	* tree-ssa-loop-im.c (execute_sm): Get flag whether we
+ 	eventually need the conditional processing.
+ 	(execute_sm_exit): When processing an orderd sequence
+ 	avoid doing any conditional processing.
+ 	(hoist_memory_references): Pass down whether all edges
+ 	have ordered processing for a ref to execute_sm.
+ 
+ 2020-05-17 Jeff Law  <law@redhat.com>
+ 
+ 	* config/h8300/predicates.md (pc_or_label_operand): New predicate.
+ 	* config/h8300/jumpcall.md (branch_true, branch_false): Consolidate
+ 	into a single pattern using pc_or_label_operand.
+ 	* config/h8300/combiner.md (bit branch patterns): Likewise.
+ 	* config/h8300/peepholes.md (HImode and SImode branches): Likewise.
+ 
+ 2020-05-17  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/95021
+ 	* config/i386/i386-features.c (has_non_address_hard_reg):
+ 	Renamed to ...
+ 	(pseudo_reg_set): This.  Return the SET expression.  Ignore
+ 	pseudo register push.
+ 	(general_scalar_to_vector_candidate_p): Combine single_set and
+ 	has_non_address_hard_reg calls to pseudo_reg_set.
+ 	(timode_scalar_to_vector_candidate_p): Likewise.
+ 	* config/i386/i386.md (*pushv1ti2): New pattern.
+ 
+ 2020-05-17  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	Revert:
+ 	2020-05-17  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-vrp.c (operand_less_p): Move to...
+ 	* vr-values.c (operand_less_p): ...here.
+ 	* tree-vrp.h (operand_less_p): Remove.
+ 
+ 2020-05-17  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-vrp.c (operand_less_p): Move to...
+ 	* vr-values.c (operand_less_p): ...here.
+ 	* tree-vrp.h (operand_less_p): Remove.
+ 
+ 2020-05-17  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-vrp.c (class vrp_insert): Remove prototype for
+ 	live_on_edge.
+ 
+ 2020-05-17  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-vrp.c (class live_names): New.
+ 	(live_on_edge): Move into live_names.
+ 	(build_assert_expr_for): Move into vrp_insert.
+ 	(find_assert_locations_in_bb): Rename from
+ 	find_assert_locations_1.
+ 	(process_assert_insertions_for): Move into vrp_insert.
+ 	(compare_assert_loc): Same.
+ 	(remove_range_assertions): Same.
+ 	(dump_asserts_for): Rename to vrp_insert::dump.
+ 	(debug_asserts_for): Rename to vrp_insert::debug.
+ 	(dump_all_asserts): Rename to vrp_insert::dump.
+ 	(debug_all_asserts): Rename to vrp_insert::debug.
+ 
+ 2020-05-17  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-vrp.c (class vrp_prop): Move check_all_array_refs,
+ 	check_array_ref, check_mem_ref, and search_for_addr_array
+ 	into new class...
+ 	(class array_bounds_checker): ...here.
+ 	(class check_array_bounds_dom_walker): Adjust to use
+ 	array_bounds_checker.
+ 	(check_all_array_refs): Move into array_bounds_checker and rename
+ 	to check.
+ 	(class vrp_folder): Make fold_predicate_in private.
+ 
+ 2020-05-15 Jeff Law  <law@redhat.com>
+ 
+ 	* config/h8300/h8300.md (SFI iterator): New iterator for
+ 	SFmode and SImode.
+ 	* config/h8300/peepholes.md (memory comparison): Use mode
+ 	iterator to consolidate 3 patterns into one.
+ 	(stack allocation and stack store): Handle SFmode.  Handle
+ 	8 byte allocations.
+ 
+ 2020-05-15  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000-builtin.def (BU_FUTURE_MISC_2): Also require
+ 	RS6000_BTM_POWERPC64.
+ 
+ 2020-05-15  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (SWI48DWI): New mode iterator.
+ 	(*push<mode>2): Allow XMM registers.
+ 	(*pushdi2_rex64): Ditto.
+ 	(*pushsi2_rex64): Ditto.
+ 	(*pushsi2): Ditto.
+ 	(push XMM reg splitter): New splitter
+ 
+ 	(*pushdf) Change "x" operand constraint to "v".
+ 	(*pushsf_rex64): Ditto.
+ 	(*pushsf): Ditto.
+ 
+ 2020-05-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/92260
+ 	* tree-vect-slp.c (vect_get_constant_vectors): Compute
+ 	the number of vector stmts in a canonical way.
+ 
+ 2020-05-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	* hsa-gen.c (get_symbol_for_decl): Fix misleading indentation
+ 	warning.
+ 
+ 2020-05-15  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (v<expander><mode>3): Fix unsignedp.
+ 
+ 2020-05-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95133
+ 	* gimple-ssa-split-paths.c
+ 	(find_block_to_duplicate_for_splitting_paths): Check for
+ 	normal edges.
+ 
+ 2020-05-15  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+         * config/arm/arm.c (reg_needs_saving_p): Add support for interrupt
+         routines.
+         (arm_compute_save_reg0_reg12_mask): Use reg_needs_saving_p.
+ 
+ 2020-05-15  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR middle-end/94635
+ 	* gimplify.c (gimplify_scan_omp_clauses): For MAP_TO_PSET with
+ 	OMP_TARGET_EXIT_DATA, use 'release:' unless the associated
+ 	item is 'delete:'.
+ 
+ 2020-05-15  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95046
+ 	* config/i386/i386.md (isa): Add sse3_noavx.
+ 	(enabled): Handle sse3_noavx.
+ 
+ 	* config/i386/mmx.md (mmx_haddv2sf3): New expander.
+ 	(*mmx_haddv2sf3): Rename from mmx_haddv2sf3.  Add SSE/AVX
+ 	alternatives.  Match commutative vec_select selector operands.
+ 	(*mmx_haddv2sf3_low): New insn pattern.
+ 
+ 	(*mmx_hsubv2sf3): Add SSE/AVX alternatives.
+ 	(*mmx_hsubv2sf3_low): New insn pattern.
+ 
+ 2020-05-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/33315
+ 	* tree-ssa-sink.c: Include tree-eh.h.
+ 	(sink_stats): Add commoned member.
+ 	(sink_common_stores_to_bb): New function implementing store
+ 	commoning by sinking to the successor.
+ 	(sink_code_in_bb): Call it, pass down TODO_cleanup_cfg returned.
+ 	(pass_sink_code::execute): Likewise.  Record commoned stores
+ 	in statistics.
+ 
+ 2020-05-14  Xiong Hu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	PR rtl-optimization/37451, part of PR target/61837
+ 	* loop-doloop.c (doloop_simplify_count): New function.  Simplify
+ 	(add -1; zero_ext; add +1) to zero_ext when not wrapping.
+ 	(doloop_modify): Call doloop_simplify_count.
+ 
+ 2020-05-14  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR jit/94778
+ 	* doc/sourcebuild.texi: Document effective target lgccjit.
+ 
+ 2020-05-14  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (add<mode>3_zext_dup): Change to a
+ 	define_expand, and rename the original to ...
+ 	(add<mode>3_vcc_zext_dup): ... this, and add a custom VCC operand.
+ 	(add<mode>3_zext_dup_exec): Likewise, with ...
+ 	(add<mode>3_vcc_zext_dup_exec): ... this.
+ 	(add<mode>3_zext_dup2): Likewise, with ...
+ 	(add<mode>3_zext_dup_exec): ... this.
+ 	(add<mode>3_zext_dup2_exec): Likewise, with ...
+ 	(add<mode>3_zext_dup2): ... this.
+ 	* config/gcn/gcn.c (gcn_expand_scalar_to_vector_address): Switch
+ 	addv64di3_zext* calls to use addv64di3_vcc_zext*.
+ 
+ 2020-05-14  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95046
+ 	* config/i386/sse.md (truncv2dfv2df2): New insn pattern.
+ 	(extendv2sfv2df2): Ditto.
+ 
+ 2020-05-14  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	* configure: Regenerated.
+ 
+ 2020-05-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/arm.c (reg_needs_saving_p): New function.
+ 	(use_return_insn): Use reg_needs_saving_p.
+ 	(arm_get_vfp_saved_size): Likewise.
+ 	(arm_compute_frame_layout): Likewise.
+ 	(arm_save_coproc_regs): Likewise.
+ 	(thumb1_expand_epilogue): Likewise.
+ 	(arm_expand_epilogue_apcs_frame): Likewise.
+ 	(arm_expand_epilogue): Likewise.
+ 
+ 2020-05-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+         * config/arm/arm.c (thumb1_expand_prologue): Update error message.
+ 
+ 2020-05-14  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95046
+ 	* config/i386/sse.md (sse2_cvtpi2pd): Add memory to alternative 1.
+ 
+ 	(floatv2siv2df2): New expander.
+ 	(floatunsv2siv2df2): New insn pattern.
+ 
+ 	(fix_truncv2dfv2si2): New expander.
+ 	(fixuns_truncv2dfv2si2): New insn pattern.
+ 
+ 2020-05-14  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/95105
+ 	* config/aarch64/aarch64-sve-builtins.cc
+ 	(handle_arm_sve_vector_bits_attribute): Create a copy of the
+ 	original type's TYPE_MAIN_VARIANT, then reapply all the differences
+ 	between the original type and its main variant.
+ 
+ 2020-05-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/95118
+ 	* real.c (real_to_decimal_for_mode): Make sure we handle
+ 	a zero with nonzero exponent.
+ 
+ 2020-05-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* Makefile.in (GTFILES): Add omp-general.c.
+ 	* cgraph.h (struct cgraph_node): Add declare_variant_alt and
+ 	calls_declare_variant_alt members and initialize them in the
+ 	ctor.
+ 	* ipa.c (symbol_table::remove_unreachable_nodes): Handle direct
+ 	calls to declare_variant_alt nodes.
+ 	* lto-cgraph.c (lto_output_node): Write declare_variant_alt
+ 	and calls_declare_variant_alt.
+ 	(input_overwrite_node): Read them back.
+ 	* omp-simd-clone.c (simd_clone_create): Copy calls_declare_variant_alt
+ 	bit.
+ 	* tree-inline.c (expand_call_inline): Or in calls_declare_variant_alt
+ 	bit.
+ 	(tree_function_versioning): Copy calls_declare_variant_alt bit.
+ 	* omp-offload.c (execute_omp_device_lower): Call
+ 	omp_resolve_declare_variant on direct function calls.
+ 	(pass_omp_device_lower::gate): Also enable for
+ 	calls_declare_variant_alt functions.
+ 	* omp-general.c (omp_maybe_offloaded): Return false after inlining.
+ 	(omp_context_selector_matches): Handle the case when
+ 	cfun->curr_properties has PROP_gimple_any bit set.
+ 	(struct omp_declare_variant_entry): New type.
+ 	(struct omp_declare_variant_base_entry): New type.
+ 	(struct omp_declare_variant_hasher): New type.
+ 	(omp_declare_variant_hasher::hash, omp_declare_variant_hasher::equal):
+ 	New methods.
+ 	(omp_declare_variants): New variable.
+ 	(struct omp_declare_variant_alt_hasher): New type.
+ 	(omp_declare_variant_alt_hasher::hash,
+ 	omp_declare_variant_alt_hasher::equal): New methods.
+ 	(omp_declare_variant_alt): New variables.
+ 	(omp_resolve_late_declare_variant): New function.
+ 	(omp_resolve_declare_variant): Call omp_resolve_late_declare_variant
+ 	when called late.  Create a magic declare_variant_alt fndecl and
+ 	cgraph node and return that if decision needs to be deferred until
+ 	after gimplification.
+ 	* cgraph.c (symbol_table::create_edge): Or in calls_declare_variant_alt
+ 	bit.
+ 
+ 	PR middle-end/95108
+ 	* omp-simd-clone.c (struct modify_stmt_info): Add after_stmt member.
+ 	(ipa_simd_modify_stmt_ops): For PHIs, only add before first stmt in
+ 	entry block if info->after_stmt is NULL, otherwise add after that stmt
+ 	and update it after adding each stmt.
+ 	(ipa_simd_modify_function_body): Initialize info.after_stmt.
+ 
+ 	* function.h (struct function): Add has_omp_target bit.
+ 	* omp-offload.c (omp_discover_declare_target_fn_r): New function,
+ 	old renamed to ...
+ 	(omp_discover_declare_target_tgt_fn_r): ... this.
+ 	(omp_discover_declare_target_var_r): Call
+ 	omp_discover_declare_target_tgt_fn_r instead of
+ 	omp_discover_declare_target_fn_r.
+ 	(omp_discover_implicit_declare_target): Also queue functions with
+ 	has_omp_target bit set, for those walk with
+ 	omp_discover_declare_target_fn_r, for declare target to functions
+ 	walk with omp_discover_declare_target_tgt_fn_r.
+ 
+ 2020-05-14  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95046
+ 	* config/i386/mmx.md (mmx_fix_truncv2sfv2si2): Rename from mmx_pf2id.
+ 	Add SSE/AVX alternative.  Change operand predicates from
+ 	nonimmediate_operand to register_mmxmem_operand.
+ 	Enable instruction pattern for TARGET_MMX_WITH_SSE.
+ 	(fix_truncv2sfv2si2): New expander.
+ 	(fixuns_truncv2sfv2si2): New insn pattern.
+ 
+ 	(mmx_floatv2siv2sf2): rename from mmx_floatv2si2.
+ 	Add SSE/AVX alternative.  Change operand predicates from
+ 	nonimmediate_operand to register_mmxmem_operand.
+ 	Enable instruction pattern for TARGET_MMX_WITH_SSE.
+ 	(floatv2siv2sf2): New expander.
+ 	(floatunsv2siv2sf2): New insn pattern.
+ 
+ 	* config/i386/i386-builtin.def (IX86_BUILTIN_PF2ID):
+ 	Update for rename.
+ 	(IX86_BUILTIN_PI2FD): Ditto.
+ 
+ 2020-05-14  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_emit_stack_probe): Call the probe_stack
+ 	expander.
+ 	* config/s390/s390.md ("@probe_stack2<mode>", "probe_stack"): New
+ 	expanders.
+ 
+ 2020-05-14  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/s390.c (allocate_stack_space): Add missing updates
+ 	of last_probe_offset.
+ 
+ 2020-05-14  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/s390.md ("allocate_stack"): Call
+ 	anti_adjust_stack_and_probe_stack_clash when stack clash
+ 	protection is enabled.
+ 	* explow.c (anti_adjust_stack_and_probe_stack_clash): Remove
+ 	prototype. Remove static.
+ 	* explow.h (anti_adjust_stack_and_probe_stack_clash): Add
+ 	prototype.
+ 
+ 2020-05-13  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* config/rs6000/altivec.h (vec_extractl): New #define.
+ 	(vec_extracth): Likewise.
+ 	* config/rs6000/altivec.md (UNSPEC_EXTRACTL): New constant.
+ 	(UNSPEC_EXTRACTR): Likewise.
+ 	(vextractl<mode>): New expansion.
+ 	(vextractl<mode>_internal): New insn.
+ 	(vextractr<mode>): New expansion.
+ 	(vextractr<mode>_internal): New insn.
+ 	* config/rs6000/rs6000-builtin.def (__builtin_altivec_vextdubvlx):
+ 	New built-in function.
+ 	(__builtin_altivec_vextduhvlx): Likewise.
+ 	(__builtin_altivec_vextduwvlx): Likewise.
+ 	(__builtin_altivec_vextddvlx): Likewise.
+ 	(__builtin_altivec_vextdubvhx): Likewise.
+ 	(__builtin_altivec_vextduhvhx): Likewise.
+ 	(__builtin_altivec_vextduwvhx): Likewise.
+ 	(__builtin_altivec_vextddvhx): Likewise.
+ 	(__builtin_vec_extractl): New overloaded built-in function.
+ 	(__builtin_vec_extracth): Likewise.
+ 	* config/rs6000/rs6000-call.c (altivec_overloaded_builtins):
+ 	Define overloaded forms of __builtin_vec_extractl and
+ 	__builtin_vec_extracth.
+ 	(builtin_function_type): Add cases to mark arguments of new
+ 	built-in functions as unsigned.
+ 	(rs6000_common_init_builtins): Add
+ 	opaque_ftype_opaque_opaque_opaque_opaque.
+ 	* config/rs6000/rs6000.md (du_or_d): New mode attribute.
+ 	* doc/extend.texi (PowerPC AltiVec Built-in Functions Available
+ 	for a Future Architecture): Add description of vec_extractl and
+ 	vec_extractr built-in functions.
+ 
+ 2020-05-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* target.def (add_stmt_cost): Add new vectype parameter.
+ 	* targhooks.c (default_add_stmt_cost): Adjust.
+ 	* targhooks.h (default_add_stmt_cost): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_add_stmt_cost): Take new
+ 	vectype parameter.
+ 	* config/arm/arm.c (arm_add_stmt_cost): Likewise.
+ 	* config/i386/i386.c (ix86_add_stmt_cost): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_add_stmt_cost): Likewise.
+ 
+ 	* tree-vectorizer.h (stmt_info_for_cost::vectype): Add.
+ 	(dump_stmt_cost): Add new vectype parameter.
+ 	(add_stmt_cost): Likewise.
+ 	(record_stmt_cost): Likewise.
+ 	(record_stmt_cost): Add overload with old signature.
+ 	* tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
+ 	Adjust.
+ 	(vect_get_known_peeling_cost): Likewise.
+ 	(vect_estimate_min_profitable_iters): Likewise.
+ 	* tree-vectorizer.c (dump_stmt_cost): Add new vectype parameter.
+ 	* tree-vect-stmts.c (record_stmt_cost): Likewise.
+ 	(vect_prologue_cost_for_slp_op): Remove stmt_vec_info parameter
+ 	and pass down correct vectype and NULL stmt_info.
+ 	(vect_model_simple_cost): Adjust.
+ 	(vect_model_store_cost): Likewise.
+ 
+ 2020-05-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (SLP_INSTANCE_GROUP_SIZE): Remove.
+ 	(_slp_instance::group_size): Likewise.
+ 	* tree-vect-loop.c (vectorizable_reduction): The group size
+ 	is the number of lanes in the node.
+ 	* tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Likewise.
+ 	(vect_analyze_slp_instance): Do not set SLP_INSTANCE_GROUP_SIZE,
+ 	verify it matches the instance trees number of lanes.
+ 	(vect_slp_analyze_node_operations_1): Use the numer of lanes
+ 	in the node as group size.
+ 	(vect_bb_vectorization_profitable_p): Use the instance root
+ 	number of lanes for the size of life.
+ 	(vect_schedule_slp_instance): Use the number of lanes as
+ 	group_size.
+ 	* tree-vect-stmts.c (vectorizable_load): Remove SLP instance
+ 	parameter.  Use the number of lanes of the load for the group
+ 	size in the gap adjustment code.
+ 	(vect_analyze_stmt): Adjust.
+ 	(vect_transform_stmt): Likewise.
+ 
+ 2020-05-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/95080
+ 	* cfgrtl.c (purge_dead_edges): Skip over debug and note insns even
+ 	if the last insn is a note.
+ 
+ 	PR tree-optimization/95060
+ 	* tree-ssa-math-opts.c (convert_mult_to_fma_1): Fold a NEGATE_EXPR
+ 	if it is the single use of the FMA internal builtin.
+ 
+ 2020-05-13  Bin Cheng  <bin.cheng@linux.alibaba.com>
+ 
+ 	PR tree-optimization/94969
+ 	* tree-data-dependence.c (constant_access_functions): Rename to...
+ 	(invariant_access_functions): ...this.  Add parameter.  Check for
+ 	invariant access function, rather than constant.
+ 	(build_classic_dist_vector): Call above function.
+ 	* tree-loop-distribution.c (pg_add_dependence_edges): Add comment.
+ 
+ 2020-05-13  Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	PR target/94118
+ 	* doc/extend.texi (x86Operandmodifiers): Document more x86
+ 	operand modifier.
+ 	* gcc/config/i386/i386.c: Add comment for operand modifier N and I.
+ 
+ 2020-05-12  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+ 
+ 	* tree-vrp.c (class vrp_insert): New.
+ 	(insert_range_assertions): Move to class vrp_insert.
+ 	(dump_all_asserts): Same as above.
+ 	(dump_asserts_for): Same as above.
+ 	(live): Same as above.
+ 	(need_assert_for): Same as above.
+ 	(live_on_edge): Same as above.
+ 	(finish_register_edge_assert_for): Same as above.
+ 	(find_switch_asserts): Same as above.
+ 	(find_assert_locations): Same as above.
+ 	(find_assert_locations_1): Same as above.
+ 	(find_conditional_asserts): Same as above.
+ 	(process_assert_insertions): Same as above.
+ 	(register_new_assert_for): Same as above.
+ 	(vrp_prop): New variable fun.
+ 	(vrp_initialize): New parameter.
+ 	(identify_jump_threads): Same as above.
+ 	(execute_vrp): Same as above.
+ 
+ 
+ 2020-05-12  Keith Packard  <keith.packard@sifive.com>
+ 
+ 	* config/riscv/riscv.c (riscv_unique_section): New.
+ 	(TARGET_ASM_UNIQUE_SECTION): New.
+ 
+ 2020-05-12  Craig Blackmore  <craig.blackmore@embecosm.com>
+ 
+ 	* config.gcc:  Add riscv-shorten-memrefs.o to extra_objs for riscv.
+ 	* config/riscv/riscv-passes.def: New file.
+ 	* config/riscv/riscv-protos.h (make_pass_shorten_memrefs): Declare.
+ 	* config/riscv/riscv-shorten-memrefs.c: New file.
+ 	* config/riscv/riscv.c (tree-pass.h): New include.
+ 	(riscv_compressed_reg_p): New Function
+ 	(riscv_compressed_lw_offset_p): Likewise.
+ 	(riscv_compressed_lw_address_p): Likewise.
+ 	(riscv_shorten_lw_offset): Likewise.
+ 	(riscv_legitimize_address): Attempt to convert base + large_offset
+ 	to compressible new_base + small_offset.
+ 	(riscv_address_cost): Make anticipated compressed load/stores
+ 	cheaper for code size than uncompressed load/stores.
+ 	(riscv_register_priority): Move compressed register check to
+ 	riscv_compressed_reg_p.
+ 	* config/riscv/riscv.h (C_S_BITS): Define.
+ 	(CSW_MAX_OFFSET): Define.
+ 	* config/riscv/riscv.opt (mshorten-memefs): New option.
+ 	* config/riscv/t-riscv (riscv-shorten-memrefs.o): New rule.
+ 	(PASSES_EXTRA): Add riscv-passes.def.
+ 	* doc/invoke.texi: Document -mshorten-memrefs.
+ 
+ 	* config/riscv/riscv.c (riscv_new_address_profitable_p): New function.
+ 	(TARGET_NEW_ADDRESS_PROFITABLE_P): Define.
+ 	* doc/tm.texi: Regenerate.
+ 	* doc/tm.texi.in (TARGET_NEW_ADDRESS_PROFITABLE_P):  New hook.
+ 	* sched-deps.c (attempt_change): Use old address if it is cheaper than
+ 	new address.
+ 	* target.def (new_address_profitable_p): New hook.
+ 	* targhooks.c (default_new_address_profitable_p): New function.
+ 	* targhooks.h (default_new_address_profitable_p): Declare.
+ 
+ 2020-05-12  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95046
+ 	* config/i386/mmx.md (copysignv2sf3): New expander.
+ 	(xorsignv2sf3): Ditto.
+ 	(signbitv2sf3): Ditto.
+ 
+ 2020-05-12  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95046
+ 	* config/i386/mmx.md (fmav2sf4): New insn pattern.
+ 	(fmsv2sf4): Ditto.
+ 	(fnmav2sf4): Ditto.
+ 	(fnmsv2sf4): Ditto.
+ 
+ 2020-05-12  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	* Makefile.in (CET_HOST_FLAGS): New.
+ 	(COMPILER): Add $(CET_HOST_FLAGS).
+ 	* configure.ac: Add GCC_CET_HOST_FLAGS(CET_HOST_FLAGS) and
+ 	AC_SUBST(CET_HOST_FLAGS).  Clear CET_HOST_FLAGS if jit isn't
+ 	enabled.
+ 	* aclocal.m4: Regenerated.
+ 	* configure: Likewise.
+ 
+ 2020-05-12  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95046
+ 	* config/i386/mmx.md (<code>v2sf2): New insn pattern.
+ 	(*mmx_<code>v2sf2): New insn_and_split pattern.
+ 	(*mmx_nabsv2sf2): Ditto.
+ 	(*mmx_andnotv2sf3): New insn pattern.
+ 	(*mmx_<code>v2sf3): Ditto.
+ 	* config/i386/i386.md (absneg_op): New code attribute.
+ 	* config/i386/i386.c (ix86_build_const_vector): Handle V2SFmode.
+ 	(ix86_build_signbit_mask): Ditto.
+ 
+ 2020-05-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-live.c (remove_unused_locals): Remove dead debug
+ 	bind resets.
+ 
+ 2020-05-12  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430-protos.h (msp430_output_aligned_decl_common):
+ 	Update prototype to include "local" argument.
+ 	* config/msp430/msp430.c (msp430_output_aligned_decl_common): Add
+ 	"local" argument.  Handle local common decls.
+ 	* config/msp430/msp430.h (ASM_OUTPUT_ALIGNED_DECL_COMMON): Adjust
+ 	msp430_output_aligned_decl_common call with 0 for "local" argument.
+ 	(ASM_OUTPUT_ALIGNED_DECL_LOCAL): Define.
+ 
+ 2020-05-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	* cfghooks.c (split_edge): Preserve EDGE_DFS_BACK if set.
+ 
+ 2020-05-12  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/95033
+ 	PR sanitizer/95051
+ 	* sanopt.c (sanitize_rewrite_addressable_params):
+ 	Clear DECL_NOT_GIMPLE_REG_P for argument.
+ 
+ 2020-05-12  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/94980
+ 	* tree-vect-generic.c (expand_vector_comparison): Use
+ 	vector_element_bits_tree to get the element size in bits,
+ 	rather than using TYPE_SIZE.
+ 	(expand_vector_condition, vector_element): Likewise.
+ 
+ 2020-05-12  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/94980
+ 	* tree-vect-generic.c (build_replicated_const): Take the number
+ 	of bits as a parameter, instead of the type of the elements.
+ 	(do_plus_minus): Update accordingly, using vector_element_bits
+ 	to calculate the correct number of bits.
+ 	(do_negate): Likewise.
+ 
+ 2020-05-12  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/94980
+ 	* tree.h (vector_element_bits, vector_element_bits_tree): Declare.
+ 	* tree.c (vector_element_bits, vector_element_bits_tree): New.
+ 	* match.pd: Use the new functions instead of determining the
+ 	vector element size directly from TYPE_SIZE(_UNIT).
+ 	* tree-vect-data-refs.c (vect_gather_scatter_fn_p): Likewise.
+ 	* tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Likewise.
+ 	* tree-vect-stmts.c (vect_is_simple_cond): Likewise.
+ 	* tree-vect-generic.c (expand_vector_piecewise): Likewise.
+ 	(expand_vector_conversion): Likewise.
+ 	(expand_vector_addition): Likewise for a TYPE_SIZE_UNIT used as
+ 	a divisor.  Convert the dividend to bits to compensate.
+ 	* tree-vect-loop.c (vectorizable_live_operation): Call
+ 	vector_element_bits instead of open-coding it.
+ 
+ 2020-05-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-offload.h (omp_discover_implicit_declare_target): Declare.
+ 	* omp-offload.c: Include context.h.
+ 	(omp_declare_target_fn_p, omp_declare_target_var_p,
+ 	omp_discover_declare_target_fn_r, omp_discover_declare_target_var_r,
+ 	omp_discover_implicit_declare_target): New functions.
+ 	* cgraphunit.c (analyze_functions): Call
+ 	omp_discover_implicit_declare_target.
+ 
+ 2020-05-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-fold.c (maybe_canonicalize_mem_ref_addr): Canonicalize
+ 	literal constant &MEM[..] to a constant literal.
+ 
+ 2020-05-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95045
+ 	* dbgcnt.def (lim): Add debug-counter.
+ 	* tree-ssa-loop-im.c: Include dbgcnt.h.
+ 	(find_refs_for_sm): Use lim debug counter for store motion
+ 	candidates.
+ 	(do_store_motion): Rename form store_motion.  Commit edge
+ 	insertions...
+ 	(store_motion_loop): ... here.
+ 	(tree_ssa_lim): Adjust.
+ 
+ 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* config/rs6000/altivec.h (vec_clzm): Rename to vec_cntlzm.
+ 	(vec_ctzm): Rename to vec_cnttzm.
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
+ 	Change fourth operand for vec_ternarylogic to require
+ 	compatibility with unsigned SImode rather than unsigned QImode.
+ 	* config/rs6000/rs6000-call.c (altivec_overloaded_builtins):
+ 	Remove overloaded forms of vec_gnb that are no longer needed.
+ 	* doc/extend.texi (PowerPC AltiVec Built-in Functions Available
+ 	for a Future Architecture): Replace vec_clzm with vec_cntlzm;
+ 	replace vec_ctzm with vec_cntlzm; remove four unwanted forms of
+ 	vec_gnb; move vec_ternarylogic documentation into this section
+ 	and replace const unsigned char with const unsigned int as its
+ 	fourth argument.
+ 
+ 2020-05-11  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/altivec.h (vec_genpcvm): New #define.
+ 	* config/rs6000/rs6000-builtin.def (XXGENPCVM_V16QI): New built-in
+ 	instantiation.
+ 	(XXGENPCVM_V8HI): Likewise.
+ 	(XXGENPCVM_V4SI): Likewise.
+ 	(XXGENPCVM_V2DI): Likewise.
+ 	(XXGENPCVM): New overloaded built-in instantiation.
+ 	* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add
+ 	entries for FUTURE_BUILTIN_VEC_XXGENPCVM.
+ 	(altivec_expand_builtin): Add special handling for
+ 	FUTURE_BUILTIN_VEC_XXGENPCVM.
+ 	(builtin_function_type): Add handling for
+ 	FUTURE_BUILTIN_XXGENPCVM_{V16QI,V8HI,V4SI,V2DI}.
+ 	* config/rs6000/vsx.md (VSX_EXTRACT_I4): New mode iterator.
+ 	(UNSPEC_XXGENPCV): New constant.
+ 	(xxgenpcvm_<mode>_internal): New insn.
+ 	(xxgenpcvm_<mode>): New expansion.
+ 	* doc/extend.texi: Add documentation for vec_genpcvm built-ins.
+ 
+ 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* config/rs6000/altivec.h (vec_strir): New #define.
+ 	(vec_stril): Likewise.
+ 	(vec_strir_p): Likewise.
+ 	(vec_stril_p): Likewise.
+ 	* config/rs6000/altivec.md (UNSPEC_VSTRIR): New constant.
+ 	(UNSPEC_VSTRIL): Likewise.
+ 	(vstrir_<mode>): New expansion.
+ 	(vstrir_code_<mode>): New insn.
+ 	(vstrir_p_<mode>): New expansion.
+ 	(vstrir_p_code_<mode>): New insn.
+ 	(vstril_<mode>): New expansion.
+ 	(vstril_code_<mode>): New insn.
+ 	(vstril_p_<mode>): New expansion.
+ 	(vstril_p_code_<mode>): New insn.
+ 	* config/rs6000/rs6000-builtin.def (__builtin_altivec_vstribr):
+ 	New built-in function.
+ 	(__builtin_altivec_vstrihr): Likewise.
+ 	(__builtin_altivec_vstribl): Likewise.
+ 	(__builtin_altivec_vstrihl): Likewise.
+ 	(__builtin_altivec_vstribr_p): Likewise.
+ 	(__builtin_altivec_vstrihr_p): Likewise.
+ 	(__builtin_altivec_vstribl_p): Likewise.
+ 	(__builtin_altivec_vstrihl_p): Likewise.
+ 	(__builtin_vec_strir): New overloaded built-in function.
+ 	(__builtin_vec_stril): Likewise.
+ 	(__builtin_vec_strir_p): Likewise.
+ 	(__builtin_vec_stril_p): Likewise.
+ 	* config/rs6000/rs6000-call.c (altivec_overloaded_builtins):
+ 	Define overloaded forms of __builtin_vec_strir,
+ 	__builtin_vec_stril, __builtin_vec_strir_p, and
+ 	__builtin_vec_stril_p.
+ 	* doc/extend.texi (PowerPC AltiVec Built-in Functions Available
+ 	for a Future Architecture): Add description of vec_stril,
+ 	vec_stril_p, vec_strir, and vec_strir_p built-in functions.
+ 
+ 2020-05-11  Kelvin Nilsen  <wschmidt@linux.ibm.com>
+ 
+ 	* config/rs6000/altivec.h (vec_ternarylogic): New #define.
+ 	* config/rs6000/altivec.md (UNSPEC_XXEVAL): New constant.
+ 	(xxeval): New insn.
+ 	* config/rs6000/predicates.md (u8bit_cint_operand): New predicate.
+ 	* config/rs6000/rs6000-builtin.def: Add handling of new macro
+ 	RS6000_BUILTIN_4.
+ 	(BU_FUTURE_V_4): New macro. Use it.
+ 	(BU_FUTURE_OVERLOAD_4): Likewise.
+ 	* config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Add
+ 	handling for quaternary built-in functions.
+ 	(altivec_resolve_overloaded_builtin): Add special-case handling
+ 	for __builtin_vec_xxeval.
+ 	* config/rs6000/rs6000-call.c: Add handling of new macro
+ 	RS6000_BUILTIN_4 in initialization of rs6000_builtin_info,
+ 	bdesc0_arg, bdesc1_arg, bdesc2_arg, bdesc_3arg,
+ 	bdesc_altivec_preds, bdesc_abs, and bdesc_htm arrays.
+ 	(altivec_overloaded_builtins): Add definitions for
+ 	FUTURE_BUILTIN_VEC_XXEVAL.
+ 	(bdesc_4arg): New array.
+ 	(htm_expand_builtin): Add handling for quaternary built-in
+ 	functions.
+ 	(rs6000_expand_quaternop_builtin): New function.
+ 	(rs6000_expand_builtin): Add handling for quaternary built-in
+ 	functions.
+ 	(rs6000_init_builtins): Initialize builtin_mode_to_type entries
+ 	for unsigned QImode and unsigned HImode.
+ 	(builtin_quaternary_function_type): New function.
+ 	(rs6000_common_init_builtins): Add handling of quaternary
+ 	operations.
+ 	* config/rs6000/rs6000.h (RS6000_BTC_QUATERNARY): New defined
+ 	constant.
+ 	(RS6000_BTC_PREDICATE): Change value of constant.
+ 	(RS6000_BTC_ABS): Likewise.
+ 	(rs6000_builtins): Add support for new macro RS6000_BUILTIN_4.
+ 	* doc/extend.texi (PowerPC AltiVec Built-In Functions Available
+ 	for a Future Architecture): Add description of vec_ternarylogic
+ 	built-in function.
+ 
+ 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000-builtin.def (__builtin_pdepd): New built-in
+ 	function.
+ 	(__builtin_pextd): Likewise.
+ 	* config/rs6000/rs6000.md (UNSPEC_PDEPD): New constant.
+ 	(UNSPEC_PEXTD): Likewise.
+ 	(pdepd): New insn.
+ 	(pextd): Likewise.
+ 	* doc/extend.texi (Basic PowerPC Built-in Functions Available for
+ 	a Future Architecture): Add descriptions of __builtin_pdepd and
+ 	__builtin_pextd functions.
+ 
+ 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* config/rs6000/altivec.h (vec_clrl): New #define.
+ 	(vec_clrr): Likewise.
+ 	* config/rs6000/altivec.md (UNSPEC_VCLRLB): New constant.
+ 	(UNSPEC_VCLRRB): Likewise.
+ 	(vclrlb): New insn.
+ 	(vclrrb): Likewise.
+ 	* config/rs6000/rs6000-builtin.def (__builtin_altivec_vclrlb): New
+ 	built-in function.
+ 	(__builtin_altivec_vclrrb): Likewise.
+ 	(__builtin_vec_clrl): New overloaded built-in function.
+ 	(__builtin_vec_clrr): Likewise.
+ 	* config/rs6000/rs6000-call.c (altivec_overloaded_builtins):
+ 	Define overloaded forms of __builtin_vec_clrl and
+ 	__builtin_vec_clrr.
+ 	* doc/extend.texi (PowerPC AltiVec Built-in Functions Available
+ 	for a Future Architecture): Add descriptions of vec_clrl and
+ 	vec_clrr.
+ 
+ 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000-builtin.def (__builtin_cntlzdm): New
+ 	built-in function definition.
+ 	(__builtin_cnttzdm): Likewise.
+ 	* config/rs6000/rs6000.md (UNSPEC_CNTLZDM): New constant.
+ 	(UNSPEC_CNTTZDM): Likewise.
+ 	(cntlzdm): New insn.
+ 	(cnttzdm): Likewise.
+ 	* doc/extend.texi (Basic PowerPC Built-in Functions available for
+ 	a Future Architecture): Add descriptions of __builtin_cntlzdm and
+ 	__builtin_cnttzdm functions.
+ 
+ 2020-05-11  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95046
+ 	* config/i386/mmx.md (sqrtv2sf2): New insn pattern.
+ 
+ 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* config/rs6000/altivec.h (vec_cfuge): New #define.
+ 	* config/rs6000/altivec.md (UNSPEC_VCFUGED): New constant.
+ 	(vcfuged): New insn.
+ 	* config/rs6000/rs6000-builtin.def (__builtin_altivec_vcfuged):
+ 	New built-in function.
+ 	* config/rs6000/rs6000-call.c (builtin_function_type): Add
+ 	handling for FUTURE_BUILTIN_VCFUGED case.
+ 	* doc/extend.texi (PowerPC AltiVec Built-in Functions Available
+ 	for a Future Architecture): Add description of vec_cfuge built-in
+ 	function.
+ 
+ 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000-builtin.def (BU_FUTURE_MISC_0): New
+ 	#define.
+ 	(BU_FUTURE_MISC_1): Likewise.
+ 	(BU_FUTURE_MISC_2): Likewise.
+ 	(BU_FUTURE_MISC_3): Likewise.
+ 	(__builtin_cfuged): New built-in function definition.
+ 	* config/rs6000/rs6000.md (UNSPEC_CFUGED): New constant.
+ 	(cfuged): New insn.
+ 	* doc/extend.texi (Basic PowerPC Built-in Functions Available for
+ 	a Future Architecture): New subsubsection.
+ 
+ 2020-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/95049
+ 	* tree-ssa-sccvn.c (set_ssa_val_to): Reject lattice transition
+ 	between different constants.
+ 
+ 2020-05-11  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-pretty-print.c (dump_generic_node): Handle BOOLEAN_TYPEs.
+ 
+ 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 	    Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* config/rs6000/altivec.h (vec_gnb): New #define.
+ 	* config/rs6000/altivec.md (UNSPEC_VGNB): New constant.
+ 	(vgnb): New insn.
+ 	* config/rs6000/rs6000-builtin.def (BU_FUTURE_OVERLOAD_1): New
+ 	#define.
+ 	(BU_FUTURE_OVERLOAD_2): Likewise.
+ 	(BU_FUTURE_OVERLOAD_3): Likewise.
+ 	(__builtin_altivec_gnb): New built-in function.
+ 	(__buiiltin_vec_gnb): New overloaded built-in function.
+ 	* config/rs6000/rs6000-call.c (altivec_overloaded_builtins):
+ 	Define overloaded forms of __builtin_vec_gnb.
+ 	(rs6000_expand_binop_builtin): Add error checking for 2nd argument
+ 	of __builtin_vec_gnb.
+ 	(builtin_function_type): Mark return value and arguments unsigned
+ 	for FUTURE_BUILTIN_VGNB.
+ 	* doc/extend.texi (PowerPC AltiVec Built-in Functions Available
+ 	for a Future Architecture): Add description of vec_gnb built-in
+ 	function.
+ 
+ 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 	    Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* config/rs6000/altivec.h (vec_pdep): New macro implementing new
+ 	built-in function.
+ 	(vec_pext): Likewise.
+ 	* config/rs6000/altivec.md (UNSPEC_VPDEPD): New constant.
+ 	(UNSPEC_VPEXTD): Likewise.
+ 	(vpdepd): New insn.
+ 	(vpextd): Likewise.
+ 	* config/rs6000/rs6000-builtin.def (__builtin_altivec_vpdepd): New
+ 	built-in function.
+ 	(__builtin_altivec_vpextd): Likewise.
+ 	* config/rs6000/rs6000-call.c (builtin_function_type): Add
+ 	handling for FUTURE_BUILTIN_VPDEPD and FUTURE_BUILTIN_VPEXTD
+ 	cases.
+ 	* doc/extend.texi (PowerPC Altivec Built-in Functions Available
+ 	for a Future Architecture): Add description of vec_pdep and
+ 	vec_pext built-in functions.
+ 
+ 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 	    Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* config/rs6000/altivec.h (vec_clzm): New macro.
+ 	(vec_ctzm): Likewise.
+ 	* config/rs6000/altivec.md (UNSPEC_VCLZDM): New constant.
+ 	(UNSPEC_VCTZDM): Likewise.
+ 	(vclzdm): New insn.
+ 	(vctzdm): Likewise.
+ 	* config/rs6000/rs6000-builtin.def (BU_FUTURE_V_0): New macro.
+ 	(BU_FUTURE_V_1): Likewise.
+ 	(BU_FUTURE_V_2): Likewise.
+ 	(BU_FUTURE_V_3): Likewise.
+ 	(__builtin_altivec_vclzdm): New builtin definition.
+ 	(__builtin_altivec_vctzdm): Likewise.
+ 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Cause
+ 	_ARCH_PWR_FUTURE macro to be defined if OPTION_MASK_FUTURE flag is
+ 	set.
+ 	* config/rs6000/rs6000-call.c (builtin_function_type): Set return
+ 	value and parameter types to be unsigned for VCLZDM and VCTZDM.
+ 	* config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
+ 	support for TARGET_FUTURE flag.
+ 	* config/rs6000/rs6000.h (RS6000_BTM_FUTURE): New macro constant.
+ 	* doc/extend.texi (PowerPC Altivec Built-in Functions Available
+ 	for a Future Architecture): New subsubsection.
+ 
+ 2020-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/94988
+ 	PR tree-optimization/95025
+ 	* tree-ssa-loop-im.c (seq_entry): Make a struct, add from.
+ 	(sm_seq_push_down): Take extra parameter denoting where we
+ 	moved the ref to.
+ 	(execute_sm_exit): Re-issue sm_other stores in the correct
+ 	order.
+ 	(sm_seq_valid_bb): When always executed, allow sm_other to
+ 	prevail inbetween sm_ord and record their stored value.
+ 	(hoist_memory_references): Adjust refs_not_supported propagation
+ 	and prune sm_other from the end of the ordered sequences.
+ 
+ 2020-05-11  Felix Yang  <felix.yang@huawei.com>
+ 
+ 	PR target/94991
+ 	* config/aarch64/aarch64.md (mov<mode>):
+ 	Bitcasts to the equivalent integer mode using gen_lowpart
+ 	instead of doing FAIL for scalar floating point move.
+ 
+ 2020-05-11  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_if_then_else_costs): Add case
+ 	to correctly calculate cost for new pattern (*csinv3_uxtw_insn3).
+ 	* config/aarch64/aarch64.md (*csinv3_utxw_insn1): New.
+ 	(*csinv3_uxtw_insn2): New.
+ 	(*csinv3_uxtw_insn3): New.
+ 	* config/aarch64/iterators.md (neg_not_cs): New.
+ 
+ 2020-05-11  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95046
+ 	* config/i386/mmx.md (mmx_addv2sf3): Use "v" constraint
+ 	instead of "Yv" for AVX alternatives.  Add "prefix" attribute.
+ 	(*mmx_addv2sf3): Ditto.
+ 	(*mmx_subv2sf3): Ditto.
+ 	(*mmx_mulv2sf3): Ditto.
+ 	(*mmx_<code>v2sf3): Ditto.
+ 	(mmx_ieee_<ieee_maxmin>v2sf3): Ditto.
+ 
+ 2020-05-11  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/95046
+ 	* config/i386/i386.c (ix86_vector_mode_supported_p):
+ 	Vectorize 3dNOW! vector modes for TARGET_MMX_WITH_SSE.
+ 	* config/i386/mmx.md (*mov<mode>_internal): Do not set
+ 	mode of alternative 13 to V2SF for TARGET_MMX_WITH_SSE.
+ 
+ 	(mmx_addv2sf3): Change operand predicates from
+ 	nonimmediate_operand to register_mmxmem_operand.
+ 	(addv2sf3): New expander.
+ 	(*mmx_addv2sf3): Add SSE/AVX alternatives.  Change operand
+ 	predicates from nonimmediate_operand to register_mmxmem_operand.
+ 	Enable instruction pattern for TARGET_MMX_WITH_SSE.
+ 
+ 	(mmx_subv2sf3): Change operand predicate from
+ 	nonimmediate_operand to register_mmxmem_operand.
+ 	(mmx_subrv2sf3): Ditto.
+ 	(subv2sf3): New expander.
+ 	(*mmx_subv2sf3): Add SSE/AVX alternatives.  Change operand
+ 	predicates from nonimmediate_operand to register_mmxmem_operand.
+ 	Enable instruction pattern for TARGET_MMX_WITH_SSE.
+ 
+ 	(mmx_mulv2sf3): Change operand predicates from
+ 	nonimmediate_operand to register_mmxmem_operand.
+ 	(mulv2sf3): New expander.
+ 	(*mmx_mulv2sf3): Add SSE/AVX alternatives.  Change operand
+ 	predicates from nonimmediate_operand to register_mmxmem_operand.
+ 	Enable instruction pattern for TARGET_MMX_WITH_SSE.
+ 
+ 	(mmx_<code>v2sf3): Change operand predicates from
+ 	nonimmediate_operand to register_mmxmem_operand.
+ 	(<code>v2sf3): New expander.
+ 	(*mmx_<code>v2sf3): Add SSE/AVX alternatives.  Change operand
+ 	predicates from nonimmediate_operand to register_mmxmem_operand.
+ 	Enable instruction pattern for TARGET_MMX_WITH_SSE.
+ 	(mmx_ieee_<ieee_maxmin>v2sf3): Ditto.
+ 
+ 2020-05-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c/95040
+ 	* common.opt: Fix typo in option description.
+ 
+ 2020-05-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/94928
+ 	* gcov-io.h: Add caveat about coverage format parsing and
+ 	possible outdated documentation.
+ 
+ 2020-05-11  Xiong Hu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	PR tree-optimization/83403
+ 	* tree-affine.c (expr_to_aff_combination): Replace SSA_NAME with
+ 	determine_value_range, Add fold conversion of MULT_EXPR, fix the
+ 	previous PLUS_EXPR.
+ 
+ 2020-05-10  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* config/i386/i386-c.c (ix86_target_macros): Define _ILP32 and
+ 	__ILP32__ for 32-bit targets.
+ 
+ 2020-05-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree.h (expr_align): Delete.
+ 	* tree.c (expr_align): Likewise.
+ 
+ 2020-05-09  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* resource.c (init_resource_info): Filter-out TARGET_FLAGS_REGNUM
+ 	from end_of_function_needs.
+ 
+ 	* config.gcc: Remove support for crisv32-*-* and cris-*-linux*.
+ 	* config/cris/t-linux, config/cris/linux.h, config/cris/linux.opt:
+ 	Remove.
+ 	* config/cris/t-elfmulti: Remove crisv32 multilib.
+ 	* config/cris: Remove shared-library and CRIS v32 support.
+ 
+ 	Move trivially from cc0 to reg:CC model, removing most optimizations.
+ 	* config/cris/cris.md: Remove all side-effect patterns and their
+ 	splitters.  Remove most peepholes.  Add clobbers of CRIS_CC0_REGNUM
+ 	to all but post-reload control-flow and movem insns.  Remove
+ 	constraints on all modified expanders.  Remove obsoleted cc0-related
+ 	references.
+ 	(attr "cc"): Remove alternative "rev".
+ 	(mode_iterator BWDD, DI_, SI_): New.
+ 	(mode_attr sCC_destc, cmp_op1c, cmp_op2c): New.
+ 	("tst<mode>"): Remove; fold as "M" alternative into compare insn.
+ 	("mstep_shift", "mstep_mul"): Remove patterns.
+ 	("s<rcond>", "s<ocond>", "s<ncond>"): Anonymize.
+ 	* config/cris/cris.c: Change all non-condition-code,
+ 	non-control-flow emitted insns to add a parallel with clobber of
+ 	CRIS_CC0_REGNUM, mostly by changing from gen_rtx_SET with
+ 	emit_insn to use of emit_move_insn, gen_add2_insn or
+ 	cris_emit_insn, as convenient.
+ 	(cris_reg_overlap_mentioned_p)
+ 	(cris_normal_notice_update_cc, cris_notice_update_cc): Remove.
+ 	(cris_movem_load_rest_p): Don't assume all elements in a
+ 	PARALLEL are SETs.
+ 	(cris_store_multiple_op_p): Ditto.
+ 	(cris_emit_insn): New function.
+ 	* cris/cris-protos.h (cris_emit_insn): Declare.
+ 
+ 	PR target/93372
+ 	* config/cris/cris.md (zcond): New code_iterator.
+ 	("*cbranch<mode>4_btstq<CC>"): New insn_and_split.
+ 
+ 	* config/cris/cris.c (TARGET_FLAGS_REGNUM): Define.
+ 
+ 	* config/cris/cris.h (REVERSIBLE_CC_MODE): Define to true.
+ 
+ 	* config/cris/cris.md ("movsi"): For memory destination
+ 	post-reload, generate clobberless variant.  Similarly for a
+ 	zero-source post-reload.
+ 	("*mov_tomem<mode>_split"): New split.
+ 	("*mov_tomem<mode>"): New insn.
+ 	("enabled", mov_tomem_enabled): Define and use to exclude "x" ->
+ 	"Q>m" for less-than-SImode.
+ 	("*mov_fromzero<mode>_split"): New split.
+ 	("*mov_fromzero<mode>"): New insn.
+ 
+ 	Prepare for cmpelim pass to eliminate redundant compare insns.
+ 	* config/cris/cris-modes.def: New file.
+ 	* config/cris/cris-protos.h (cris_select_cc_mode): Declare.
+ 	(cris_notice_update_cc): Remove left-over declaration.
+ 	* config/cris/cris.c (TARGET_CC_MODES_COMPATIBLE): Define.
+ 	(cris_select_cc_mode, cris_cc_modes_compatible): New functions.
+ 	* config/cris/cris.h (SELECT_CC_MODE): Define.
+ 	* config/cris/cris.md (NZSET, NZUSE, NZVCSET, NZVCUSE): New
+ 	mode_iterators.
+ 	(cond): New code_iterator.
+ 	(nzcond): Replacement for incorrect ncond.  All callers changed.
+ 	(nzvccond): Replacement for ocond.  All callers changed.
+ 	(rnzcond): Replacement for rcond.  All callers changed.
+ 	(xCC): New code_attr.
+ 	(cmp_op1c, cmp_op0c): Renumber from cmp_op1c and cmp_op2c.  All
+ 	users changed.
+ 	("*cmpdi<NZVCSET:mode>"): Rename from "*cmpdi".  Replace
+ 	CCmode with iteration over NZVCSET.
+ 	("*cmp_ext<BW:mode><NZVCSET:mode>"): Similarly; rename from
+ 	"*cmp_ext<mode>".
+ 	("*cmpsi<NZVCSET:mode>"): Similarly, from "*cmpsi".
+ 	("*cmp<BW:mode><NZVCSET:mode>"): Similarly from "*cmp<mode>".
+ 	("*btst<mode>"): Similarly, from "*btst".
+ 	("*cbranch<mode><code>4"): Rename from "*cbranch<mode>4",
+ 	iterating over cond instead of matching the comparison with
+ 	ordered_comparison_operator.
+ 	("*cbranch<mode>4_btstq<CC>"): Correct label operand number.
+ 	("b<zcond:code><mode>"): Rename from "b<ncond:code>", iterating
+ 	over NZUSE.
+ 	("b<nzvccond:code><mode>"): Similarly from "b<ocond:code>", over
+ 	NZVCUSE.  Remove FIXME.
+ 	("*b<nzcond:code>_reversed<mode>"): Similarly from
+ 	"*b<ncond:code>_reversed", over NZUSE.
+ 	("*b<nzvccond:code>_reversed<mode>"): Similarly from
+ 	"*b<ocond:code>_reversed", over NZVCUSE.  Remove FIXME.
+ 	("b<rnzcond:code><mode>"): Similarly from "b<rcond:code>",
+ 	over NZUSE.  Reinstate "b<oCC>" vs. "b<CC>" mnemonic choice,
+ 	depending on CC_NZmode vs. CCmode.  Remove FIXME.
+ 	("*b<rnzcond:code>_reversed<mode>"): Similarly from
+ 	"*b<rcond:code>_reversed", over NZUSE.
+ 	("*cstore<mode><code>4"): Rename from "*cstore<mode>4",
+ 	iterating over cond instead of matching the comparison with
+ 	ordered_comparison_operator.
+ 	("*s<nzcond:code><mode>"): Rename from "*s<ncond:code>",
+ 	iterating over NZUSE.
+ 	("*s<rnzcond:code><mode>"): Similar from "*s<rcond:code>", over
+ 	NZUSE.  Reinstate "b<oCC>" vs. "b<CC>" mnemonic choice,
+ 	depending on CC_NZmode vs. CCmode.
+ 	("*s<nzvccond:code><mode>"): Simlar from "*s<ocond:code>", over
+ 	NZVCUSE.  Remove FIXME.
+ 	("cc"): Comment on new use.
+ 	("cc_enabled"): New attribute.
+ 	("enabled"): Make default fall back to cc_enabled.
+ 	("setnz", "ccnz", "setnzvc", "ccnzvc", "setcc", "cccc"): New
+ 	default_subst_attrs.
+ 	("setnz_subst", "setnzvc_subst", "setcc_subst"): New default_subst.
+ 	("*movsi_internal<setcc><setnz><setnzvc>"): Rename from
+ 	"*movsi_internal".  Correct contents of, and rename attribute
+ 	"cc" to "cc<cccc><ccnz><ccnzvc>".
+ 	("anz", "anzvc", "acc"): New define_subst_attrs.
+ 	("<acc><anz><anzvc>movhi<setcc><setnz><setnzvc>"): Rename from
+ 	"movhi".  Rename "cc" attribute to "cc<cccc><ccnz><ccnzvc>".
+ 	("<acc><anz><anzvc>movqi<setcc><setnz><setnzvc>"): Similar from
+ 	"movqi".  Correct contents of, and rename "cc" attribute to
+ 	"cc<cccc><ccnz><ccnzvc>".
+ 	("*b<zcond:code><mode>"): Rename from "b<zcond:code><mode>".
+ 	("*b<nzvccond:code><mode>"): Rename from "b<nzvccond:code><mode>".
+ 	("*b<rnzcond:code><mode>"): Rename from "*b<rnzcond:code><mode>".
+ 	("<acc><anz><anzvc>extend<mode>si2<setcc><setnz><setnzvc>"):
+ 	Rename from "extend<mode>si2".
+ 	("<acc><anz><anzvc>zero_extend<mode>si2<setcc><setnz><setnzvc>"):
+ 	Similar, from "zero_extend<mode>si2".
+ 	("*adddi3<setnz>"): Rename from "*adddi3".
+ 	("*subdi3<setnz>"): Similarly from "*subdi3".
+ 	("*addsi3<setnz>"): Similarly from "*addsi3".
+ 	("*subsi3<setnz>"): Similarly from "*subsi3".
+ 	("*addhi3<setnz>"): Similarly from "*addhi3" and decorate the
+ 	"cc" attribute to "cc<ccnz>".
+ 	("*addqi3<setnz>"): Similarly from "*addqi3".
+ 	("*sub<mode>3<setnz>"): Similarly from "*sub<mode>3".
+ 	("*expanded_andsi<setcc><setnz><setnzvc>"): Rename from
+ 	"*expanded_andsi".
+ 	("*iorsi3<setcc><setnz><setnzvc>"): Similar from "*iorsi3".
+ 	Decorate "cc" attribute to make "cc<cccc><ccnz><ccnzvc>".
+ 	("*iorhi3<setcc><setnz><setnzvc>"): Similar from "*iorhi3".
+ 	("*iorqi3<setcc><setnz><setnzvc>"): Similar from "*iorqi3".
+ 	("*expanded_andhi<setcc><setnz><setnzvc>"): Similar from
+ 	"*expanded_andhi".  Add quick cc-setting alternative for 0..31.
+ 	("*andqi3<setcc><setnz><setnzvc>"): Similar from "*andqi3".
+ 	("<acc><anz><anzvc>xorsi3<setcc><setnz><setnzvc>"): Rename
+ 	from "xorsi3".
+ 	("<acc><anz><anzvc>one_cmplsi2<setcc><setnz><setnzvc>"): Rename
+ 	from "one_cmplsi2".
+ 	("<acc><anz><anzvc><shlr>si3<setcc><setnz><setnzvc>"): Rename
+ 	from "<shlr>si3".
+ 	("<acc><anz><anzvc>clzsi2<setcc><setnz><setnzvc>"): Rename
+ 	from "clzsi2".
+ 	("<acc><anz><anzvc>bswapsi2<setcc><setnz><setnzvc>"): Rename
+ 	from "bswapsi2".
+ 	("*uminsi3<setcc><setnz><setnzvc>"): Rename from "*uminsi3".
+ 
+ 	* config/cris/cris-modes.def (CC_ZnN): New CC_MODE.
+ 	* config/cris/cris.c (cris_rtx_costs): Handle pre-split bit-test
+ 	* config/cris/cris.md (ZnNNZSET, ZnNNZUSE): New mode_iterators.
+ 	(znnCC, rznnCC): New code_attrs.
+ 	("*btst<mode>"): Iterator over ZnNNZSET instead of NZVCSET.  Remove
+ 	obseolete comment.  Add belt-and-suspenders mode-test to condition.
+ 	Add fixme regarding remaining matched-but-not-generated case.
+ 	("*cbranch<mode>4_btstrq1_<CC>"): New insn_and_split.
+ 	("*cbranch<mode>4_btstqb0_<CC>"): Rename from
+ 	"*cbranch<mode>4_btstq<CC>".  Split to CC_NZ instead of CC.
+ 	("*b<zcond:code><mode>"): Iterate over ZnNNZUSE instead of NZUSE.
+ 	Handle output of CC_ZnNmode.
+ 	("*b<nzcond:code>_reversed<mode>"): Ditto.
+ 
+ 	* config/cris/cris.c (cris_select_cc_mode): Return CC_NZmode for
+ 	NEG too.  Correct comment.
+ 	* config/cris/cris.md ("<anz>neg<mode>2<setnz>"): Rename from
+ 	"neg<mode>2".
+ 
+ 2020-05-08  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	* ira-color.c (update_costs_from_allocno): Remove
+ 	conflict_cost_update_p argument.  Propagate costs only along
+ 	threads. Always do conflict cost update.  Add printing debugging
+ 	info.
+ 	(update_costs_from_copies): Add printing debugging info.
+ 	(restore_costs_from_copies): Ditto.
+ 	(assign_hard_reg): Improve debug info.
+ 	(push_only_colorable): Ditto. Call update_costs_from_prefs.
+ 	(color_allocnos): Remove update_costs_from_prefs.
+ 
+ 2020-05-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (vec_info::slp_loads): New.
+ 	(vect_optimize_slp): Declare.
+ 	* tree-vect-slp.c (vect_attempt_slp_rearrange_stmts):  Do
+ 	nothing when there are no loads.
+ 	(vect_gather_slp_loads): Gather loads into a vector.
+ 	(vect_supported_load_permutation_p): Remove.
+ 	(vect_analyze_slp_instance): Do not verify permutation
+ 	validity here.
+ 	(vect_analyze_slp): Optimize permutations of reductions
+ 	after all SLP instances have been gathered and gather
+ 	all loads.
+ 	(vect_optimize_slp): New function split out from
+ 	vect_supported_load_permutation_p.  Elide some permutations.
+ 	(vect_slp_analyze_bb_1): Call vect_optimize_slp.
+ 	* tree-vect-loop.c (vect_analyze_loop_2): Likewise.
+ 	* tree-vect-stmts.c (vectorizable_load): Check whether
+ 	the load can be permuted.  When generating code assert we can.
+ 
+ 2020-05-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-sccvn.c (rpo_avail): Change type to
+ 	eliminate_dom_walker *.
+ 	(eliminate_with_rpo_vn): Adjust rpo_avail to make vn_valueize
+ 	use the DOM walker availability.
+ 	(vn_reference_fold_indirect): Use get_addr_base_and_unit_offset_1
+ 	with vn_valueize as valueization callback.
+ 	(vn_reference_maybe_forwprop_address): Likewise.
+ 	* tree-dfa.c (get_addr_base_and_unit_offset_1): Also valueize
+ 	array_ref_low_bound.
+ 
+ 2020-05-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/94786
+ 	* match.pd (A ^ ((A ^ B) & -(C cmp D)) -> (C cmp D) ? B : A): New
+ 	simplification.
+ 
+ 	PR target/94857
+ 	* config/i386/i386.md (peephole2 after *add<mode>3_cc_overflow_1): New
+ 	define_peephole2.
+ 
+ 	PR middle-end/94724
+ 	* tree.c (get_narrower): Reuse the op temporary instead of
+ 	shadowing it.
+ 
+ 	PR tree-optimization/94783
+ 	* match.pd ((X + (X >> (prec - 1))) ^ (X >> (prec - 1)) to abs (X)):
+ 	New simplification.
+ 
+ 	PR tree-optimization/94956
+ 	* match.pd (FFS): Optimize __builtin_ffs* of non-zero argument into
+ 	__builtin_ctz* + 1 if direct IFN_CTZ is supported.
+ 
+ 	PR tree-optimization/94913
+ 	* match.pd (A - B + -1 >= A to B >= A): New simplification.
+ 	(A - B > A to A < B): Don't test TYPE_OVERFLOW_WRAPS which is always
+ 	true for TYPE_UNSIGNED integral types.
+ 
+ 	PR bootstrap/94961
+ 	PR rtl-optimization/94516
+ 	* rtl.h (remove_reg_equal_equiv_notes): Add a bool argument defaulted
+ 	to false.
+ 	* rtlanal.c (remove_reg_equal_equiv_notes): Add no_rescan argument.
+ 	Call df_notes_rescan if that argument is not true and returning true.
+ 	* combine.c (adjust_for_new_dest): Pass true as second argument to
+ 	remove_reg_equal_equiv_notes.
+ 	* postreload.c (reload_combine_recognize_pattern): Don't call
+ 	df_notes_rescan.
+ 
+ 2020-05-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md (*setnbc_<un>signed_<GPR:mode>): New
+ 	define_insn.
+ 	(*setnbcr_<un>signed_<GPR:mode>): New define_insn.
+ 	(*neg_eq_<mode>): Avoid for TARGET_FUTURE; add missing && 1.
+ 	(*neg_ne_<mode>): Likewise.
+ 
+ 2020-05-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md (setbc_<un>signed_<GPR:mode>): New
+ 	define_insn.
+ 	(*setbcr_<un>signed_<GPR:mode>): Likewise.
+ 	(cstore<mode>4): Use setbc[r] if available.
+ 	(<code><GPR:mode><GPR2:mode>2_isel): Avoid for TARGET_FUTURE.
+ 	(eq<mode>3): Use setbc for TARGET_FUTURE.
+ 	(*eq<mode>3): Avoid for TARGET_FUTURE.
+ 	(ne<mode>3): Replace :P with :GPR; use setbc for TARGET_FUTURE;
+ 	else for non-Pmode, use gen_eq and gen_xor.
+ 	(*ne<mode>3): Avoid for TARGET_FUTURE.
+ 	(*eqsi3_ext<mode>): Avoid for TARGET_FUTURE; fix missing && 1.
+ 
+ 2020-05-07 Jeff Law  <law@redhat.com>
+ 
+ 	* config/h8300/h8300.md: Move expanders and patterns into
+ 	files based on functionality.
+ 	* config/h8300/addsub.md: New file.
+ 	* config/h8300/bitfield.md: New file
+ 	* config/h8300/combiner.md: New file
+ 	* config/h8300/divmod.md: New file
+ 	* config/h8300/extensions.md: New file
+ 	* config/h8300/jumpcall.md: New file
+ 	* config/h8300/logical.md: New file
+ 	* config/h8300/movepush.md: New file
+ 	* config/h8300/multiply.md: New file
+ 	* config/h8300/other.md: New file
+ 	* config/h8300/proepi.md: New file
+ 	* config/h8300/shiftrotate.md: New file
+ 	* config/h8300/testcompare.md: New file
+ 
+ 	* config/h8300/h8300.md (adds/subs splitters): Merge into single
+ 	splitter.
+ 	(negation expanders and patterns): Simplify and combine using
+ 	iterators.
+ 	(one_cmpl expanders and patterns): Likewise.
+ 	(tablejump, indirect_jump patterns ): Likewise.
+ 	(shift and rotate expanders and patterns): Likewise.
+ 	(absolute value expander and pattern): Drop expander, rename pattern
+ 	to just "abssf2"
+ 	(peephole2 patterns): Move into...
+ 	* config/h8300/peepholes.md: New file.
+ 	
+ 	* config/h8300/constraints.md (L and N): Simplify now that we're not
+ 	longer supporting the original H8/300 chip.
+ 	* config/h8300/elf.h (LINK_SPEC): Likewise.  Default to H8/300H.
+ 	* config/h8300/h8300.c (shift_alg_qi): Drop H8/300 support.
+ 	(shift_alg_hi, shift_alg_si): Similarly.
+ 	(h8300_option_overrides): Similarly.  Default to H8/300H.  If
+ 	compiling for H8/S, then turn off H8/300H.  Do not update the
+ 	shift_alg tables for H8/300 port.
+ 	(h8300_emit_stack_adjustment): Remove support for H8/300.  Simplify
+ 	where possible.
+ 	(push, split_adds_subs, h8300_rtx_costs): Likewise.
+ 	(h8300_print_operand, compute_mov_length): Likewise.
+ 	(output_plussi, compute_plussi_length): Likewise.
+ 	(compute_plussi_cc, output_logical_op): Likewise.
+ 	(compute_logical_op_length, compute_logical_op_cc): Likewise.
+ 	(get_shift_alg, h8300_shift_needs_scratch): Likewise.
+ 	(output_a_shift, compute_a_shift_length): Likewise.
+ 	(output_a_rotate, compute_a_rotate_length): Likewise.
+ 	(output_simode_bld, h8300_hard_regno_mode_ok): Likewise.
+ 	(h8300_modes_tieable_p, h8300_return_in_memory): Likewise.
+ 	* config/h8300/h8300.h (TARGET_CPU_CPP_BUILTINS): Likewise.
+ 	(attr_cpu, TARGET_H8300): Remove.
+ 	(TARGET_DEFAULT): Update.
+ 	(UNITS_PER_WORD, PARM_BOUNDARY): Simplify where possible.
+ 	(BIGGEST_ALIGNMENT, STACK_BOUNDARY): Likewise.
+ 	(CONSTANT_ADDRESS_P, MOVE_MAX, Pmode): Likewise.
+ 	(SIZE_TYPE, POINTER_SIZE, ASM_WORD_OP): Likewise.
+ 	* config/h8300/h8300.md: Simplify patterns throughout.
+ 	* config/h8300/t-h8300: Update multilib configuration.
+ 	
+ 	* config/h8300/h8300.h (LINK_SPEC): Remove.
+ 	(USER_LABEL_PREFIX): Likewise.
+ 
+ 	* config/h8300/h8300.c (h8300_asm_named_section): Remove.
+ 	(h8300_option_override): Remove remnants of COFF support.
+ 
+ 2020-05-07  Alan Modra  <amodra@gmail.com>
+ 
+ 	* tree-ssa-reassoc.c (optimize_range_tests_to_bit_test): Replace
+ 	set_rtx_cost with set_src_cost.
+ 	* tree-switch-conversion.c (bit_test_cluster::emit): Likewise.
+ 
+ 2020-05-07  Kewen Lin  <linkw@gcc.gnu.org>
+ 
+ 	* tree-vect-stmts.c (vectorizable_load): Check alignment to avoid
+ 	redundant half vector handlings for no peeling gaps.
+ 
+ 2020-05-07  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+ 
+ 	* tree-ssa-operands.c (operands_scanner): New class.
+ 	(operands_bitmap_obstack): Remove.
+ 	(n_initialized): Remove.
+ 	(build_uses): Move to operands_scanner class.
+ 	(build_vuse): Same as above.
+ 	(build_vdef): Same as above.
+ 	(verify_ssa_operands): Same as above.
+ 	(finalize_ssa_uses): Same as above.
+ 	(cleanup_build_arrays): Same as above.
+ 	(finalize_ssa_stmt_operands): Same as above.
+ 	(start_ssa_stmt_operands): Same as above.
+ 	(append_use): Same as above.
+ 	(append_vdef): Same as above.
+ 	(add_virtual_operand): Same as above.
+ 	(add_stmt_operand): Same as above.
+ 	(get_mem_ref_operands): Same as above.
+ 	(get_tmr_operands): Same as above.
+ 	(maybe_add_call_vops): Same as above.
+ 	(get_asm_stmt_operands): Same as above.
+ 	(get_expr_operands): Same as above.
+ 	(parse_ssa_operands): Same as above.
+ 	(finalize_ssa_defs): Same as above.
+ 	(build_ssa_operands): Same as above, plus create a C-like wrapper.
+ 	(update_stmt_operands): Create an instance of operands_scanner.
+ 
+ 2020-05-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/94947
+ 	* tree-ssa-structalias.c (refered_from_nonlocal_fn): Use
+ 	DECL_EXTERNAL || TREE_PUBLIC instead of externally_visible.
+ 	(refered_from_nonlocal_var): Likewise.
+ 	(ipa_pta_execute): Likewise.
+ 
+ 2020-05-07  Erick Ochoa <erick.ochoa@theobroma-systems.com>
+ 
+ 	* gcc/tree-ssa-struct-alias.c: Fix comments
+ 
+ 2020-05-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/invoke.texi: Fix 2 optindex entries.
+ 
+ 2020-05-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/94703
+ 	* tree-core.h (tree_decl_common::gimple_reg_flag): Rename ...
+ 	(tree_decl_common::not_gimple_reg_flag): ... to this.
+ 	* tree.h (DECL_GIMPLE_REG_P): Rename ...
+ 	(DECL_NOT_GIMPLE_REG_P): ... to this.
+ 	* gimple-expr.c (copy_var_decl): Copy DECL_NOT_GIMPLE_REG_P.
+ 	(create_tmp_reg): Simplify.
+ 	(create_tmp_reg_fn): Likewise.
+ 	(is_gimple_reg): Check DECL_NOT_GIMPLE_REG_P for all regs.
+ 	* gimplify.c (create_tmp_from_val): Simplify.
+ 	(gimplify_bind_expr): Likewise.
+ 	(gimplify_compound_literal_expr): Likewise.
+ 	(gimplify_function_tree): Likewise.
+ 	(prepare_gimple_addressable): Set DECL_NOT_GIMPLE_REG_P.
+ 	* asan.c (create_odr_indicator): Do not clear DECL_GIMPLE_REG_P.
+ 	(asan_add_global): Copy it.
+ 	* cgraphunit.c (cgraph_node::expand_thunk): Force args
+ 	to be GIMPLE regs.
+ 	* function.c (gimplify_parameters): Copy
+ 	DECL_NOT_GIMPLE_REG_P.
+ 	* ipa-param-manipulation.c
+ 	(ipa_param_body_adjustments::common_initialization): Simplify.
+ 	(ipa_param_body_adjustments::reset_debug_stmts): Copy
+ 	DECL_NOT_GIMPLE_REG_P.
+ 	* omp-low.c (lower_omp_for_scan): Do not set DECL_GIMPLE_REG_P.
+ 	* sanopt.c (sanitize_rewrite_addressable_params): Likewise.
+ 	* tree-cfg.c (make_blocks_1): Simplify.
+ 	(verify_address): Do not verify DECL_GIMPLE_REG_P setting.
+ 	* tree-eh.c (lower_eh_constructs_2): Simplify.
+ 	* tree-inline.c (declare_return_variable): Adjust and
+ 	generalize.
+ 	(copy_decl_to_var): Copy DECL_NOT_GIMPLE_REG_P.
+ 	(copy_result_decl_to_var): Likewise.
+ 	* tree-into-ssa.c (pass_build_ssa::execute): Adjust comment.
+ 	* tree-nested.c (create_tmp_var_for): Simplify.
+ 	* tree-parloops.c (separate_decls_in_region_name): Copy
+ 	DECL_NOT_GIMPLE_REG_P.
+ 	* tree-sra.c (create_access_replacement): Adjust and
+ 	generalize partial def support.
+ 	* tree-ssa-forwprop.c (pass_forwprop::execute): Set
+ 	DECL_NOT_GIMPLE_REG_P on decls we introduce partial defs on.
+ 	* tree-ssa.c (maybe_optimize_var): Handle clearing of
+ 	TREE_ADDRESSABLE and setting/clearing DECL_NOT_GIMPLE_REG_P
+ 	independently.
+ 	* lto-streamer-out.c (hash_tree): Hash DECL_NOT_GIMPLE_REG_P.
+ 	* tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream
+ 	DECL_NOT_GIMPLE_REG_P.
+ 	* tree-streamer-in.c (unpack_ts_decl_common_value_fields): Likewise.
+ 	* cfgexpand.c (avoid_type_punning_on_regs): New.
+ 	(discover_nonconstant_array_refs): Call
+ 	avoid_type_punning_on_regs to avoid unsupported mode punning.
+ 
+ 2020-05-07  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* config/arm/arm.c (arm_add_stmt_cost): Fix declaration, remove class
+ 	from definition.
+ 
+ 2020-05-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/57359
+ 	* tree-ssa-loop-im.c (im_mem_ref::indep_loop): Remove.
+ 	(in_mem_ref::dep_loop): Repurpose.
+ 	(LOOP_DEP_BIT): Remove.
+ 	(enum dep_kind): New.
+ 	(enum dep_state): Likewise.
+ 	(record_loop_dependence): New function to populate the
+ 	dependence cache.
+ 	(query_loop_dependence): New function to query the dependence
+ 	cache.
+ 	(memory_accesses::refs_in_loop): Rename to ...
+ 	(memory_accesses::refs_loaded_in_loop): ... this and change to
+ 	only record loads.
+ 	(outermost_indep_loop): Adjust.
+ 	(mem_ref_alloc): Likewise.
+ 	(gather_mem_refs_stmt): Likewise.
+ 	(mem_refs_may_alias_p): Add tbaa_p parameter and pass it down.
+ 	(struct sm_aux): New.
+ 	(execute_sm): Split code generation on exits, record state
+ 	into new hash-map.
+ 	(enum sm_kind): New.
+ 	(execute_sm_exit): Exit code generation part.
+ 	(sm_seq_push_down): Helper for sm_seq_valid_bb performing
+ 	dependence checking on stores reached from exits.
+ 	(sm_seq_valid_bb): New function gathering SM stores on exits.
+ 	(hoist_memory_references): Re-implement.
+ 	(refs_independent_p): Add tbaa_p parameter and pass it down.
+ 	(record_dep_loop): Remove.
+ 	(ref_indep_loop_p_1): Fold into ...
+ 	(ref_indep_loop_p): ... this and generalize for three kinds
+ 	of dependence queries.
+ 	(can_sm_ref_p): Adjust according to hoist_memory_references
+ 	changes.
+ 	(store_motion_loop): Don't do anything if the set of SM
+ 	candidates is empty.
+ 	(tree_ssa_lim_initialize): Adjust.
+ 	(tree_ssa_lim_finalize): Likewise.
+ 
+ 2020-05-07  Eric Botcazou  <ebotcazou@adacore.com>
+             Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* dwarf2out.c (add_data_member_location_attribute): Take into account
+ 	the variant part offset in the computation of the data bit offset.
+ 	(add_bit_offset_attribute): Remove CTX parameter.  Pass a new context
+ 	in the call to field_byte_offset.
+ 	(gen_field_die): Adjust call to add_bit_offset_attribute and remove
+ 	confusing assertion.
+ 	(analyze_variant_discr): Deal with boolean subtypes.
+ 
+ 2020-05-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	* lto-wrapper.c: Split arguments of MAKE environment
+ 	variable.
+ 
+ 2020-05-07  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/alpha/alpha.c (alpha_atomic_assign_expand_fenv): Use
+ 	TARGET_EXPR instead of MODIFY_EXPR for the first assignments to
+ 	fenv_var and new_fenv_var.
+ 
+ 2020-05-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93069
+ 	* config/i386/subst.md (store_mask_constraint, store_mask_predicate):
+ 	Remove.
+ 	(avx512dq_vextract<shuffletype>64x2_1_maskm,
+ 	avx512f_vextract<shuffletype>32x4_1_maskm,
+ 	vec_extract_lo_<mode>_maskm, vec_extract_hi_<mode>_maskm): Remove.
+ 	(<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name>): Split
+ 	into ...
+ 	(*avx512dq_vextract<shuffletype>64x2_1,
+ 	avx512dq_vextract<shuffletype>64x2_1_mask): ... these new
+ 	define_insns.  Even in the masked variant allow memory output but in
+ 	that case use 0 rather than 0C constraint on the source of masked-out
+ 	elts.
+ 	(<mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name>): Split
+ 	into ...
+ 	(*avx512f_vextract<shuffletype>32x4_1,
+ 	avx512f_vextract<shuffletype>32x4_1_mask): ... these new define_insns.
+ 	Even in the masked variant allow memory output but in that case use
+ 	0 rather than 0C constraint on the source of masked-out elts.
+ 	(vec_extract_lo_<mode><mask_name>): Split into ...
+ 	(vec_extract_lo_<mode>, vec_extract_lo_<mode>_mask): ... these new
+ 	define_insns.  Even in the masked variant allow memory output but in
+ 	that case use 0 rather than 0C constraint on the source of masked-out
+ 	elts.
+ 	(vec_extract_hi_<mode><mask_name>): Split into ...
+ 	(vec_extract_hi_<mode>, vec_extract_hi_<mode>_mask): ... these new
+ 	define_insns.  Even in the masked variant allow memory output but in
+ 	that case use 0 rather than 0C constraint on the source of masked-out
+ 	elts.
+ 
+ 2020-05-06  qing zhao  <qing.zhao@oracle.com>
+ 
+ 	PR c/94230
+ 	* common.opt: Add -flarge-source-files.
+ 	* doc/invoke.texi: Document it.
+ 	* toplev.c (process_options): set line_table->default_range_bits
+ 	to 0 when flag_large_source_files is true.
+ 
+ 2020-05-06  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/94913
+ 	* config/i386/predicates.md (add_comparison_operator): New predicate.
+ 	* config/i386/i386.md (compare->add splitter): New splitters.
+ 
+ 2020-05-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (vect_transform_slp_perm_load): Adjust.
+ 	* tree-vect-data-refs.c (vect_slp_analyze_node_dependences):
+ 	Remove slp_instance parameter, just iterate over all scalar stmts.
+ 	(vect_slp_analyze_instance_dependence): Adjust and likewise.
+ 	* tree-vect-slp.c (vect_bb_slp_scalar_cost): Remove unused BB
+ 	parameter.
+ 	(vect_schedule_slp): Just iterate over all scalar stmts.
+ 	(vect_supported_load_permutation_p): Adjust.
+ 	(vect_transform_slp_perm_load): Remove slp_instance parameter,
+ 	instead use the number of lanes in the node as group size.
+ 	* tree-vect-stmts.c (vect_model_load_cost): Get vectorization
+ 	factor instead of slp_instance as parameter.
+ 	(vectorizable_load): Adjust.
+ 
+ 2020-05-06  Andreas Schwab  <schwab@suse.de>
+ 
+ 	* config/aarch64/driver-aarch64.c: Include "aarch64-protos.h".
+ 	(aarch64_get_extension_string_for_isa_flags): Don't declare.
+ 
+ 2020-05-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/94964
+ 	* cfgloopmanip.c (create_preheader): Require non-complex
+ 	preheader edge for CP_SIMPLE_PREHEADERS.
+ 
+ 2020-05-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/94963
+ 	* tree-ssa-loop-im.c (execute_sm_if_changed): Remove
+ 	no-warning marking of the conditional store.
+ 	(execute_sm): Instead mark the uninitialized state
+ 	on loop entry to be not warned about.
+ 
+ 2020-05-06  Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA2_TSXLDTRK_SET,
+ 	OPTION_MASK_ISA2_TSXLDTRK_UNSET): New macros.
+ 	* config.gcc: Add tsxldtrkintrin.h to extra_headers.
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Detect
+ 	TSXLDTRK.
+ 	* config/i386/i386-builtin.def: Add new builtins.
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Define
+ 	__TSXLDTRK__.
+ 	* config/i386/i386-options.c (ix86_target_string): Add
+ 	-mtsxldtrk.
+ 	(ix86_valid_target_attribute_inner_p): Add attribute tsxldtrk.
+ 	* config/i386/i386.h (TARGET_TSXLDTRK, TARGET_TSXLDTRK_P):
+ 	New.
+ 	* config/i386/i386.md (define_c_enum "unspec"): Add
+ 	UNSPECV_SUSLDTRK, UNSPECV_RESLDTRK.
+ 	(TSXLDTRK): New define_int_iterator.
+ 	("<tsxldtrk>"): New define_insn.
+ 	* config/i386/i386.opt: Add -mtsxldtrk.
+ 	* config/i386/immintrin.h: Include tsxldtrkintrin.h.
+ 	* config/i386/tsxldtrkintrin.h: New.
+ 	* doc/invoke.texi: Document -mtsxldtrk.
+ 
+ 2020-05-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/94921
+ 	* match.pd (~(~X - Y) -> X + Y, ~(~X + Y) -> X - Y): New
+ 	simplifications.
+ 
+ 2020-05-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/94965
+ 	* tree-vect-stmts.c (vectorizable_load): Fix typo.
+ 
+ 2020-05-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* doc/install.texi: Replace Sun with Solaris as appropriate.
+ 	(Tools/packages necessary for building GCC, Perl version between
+ 	5.6.1 and 5.6.24): Remove Solaris 8 reference.
+ 	(Installing GCC: Binaries, Solaris 2 (SPARC, Intel)): Remove
+ 	TGCware reference.
+ 	(Specific, i?86-*-solaris2*): Update version references for
+ 	Solaris 11.3 and later.  Remove gas 2.26 caveat.
+ 	(Specific, *-*-solaris2*): Update version references for
+ 	Solaris 11.3 and later.  Remove boehm-gc reference.
+ 	Document GMP, MPFR caveats on Solaris 11.3.
+ 	(Specific, sparc-sun-solaris2*): Update Solaris 9 references.
+ 	(Specific, sparc64-*-solaris2*): Likewise.
+ 	Document --build requirement.
+ 
+ 2020-05-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94950
+ 	* config/riscv/riscv-builtins.c (riscv_atomic_assign_expand_fenv): Use
+ 	TARGET_EXPR instead of MODIFY_EXPR for first assignment to old_flags.
+ 
+ 	PR rtl-optimization/94873
+ 	* combine.c (combine_instructions): Don't optimize using REG_EQUAL
+ 	note if SET_SRC (set) has side-effects.
+ 
+ 2020-05-06  Hongtao Liu  <hongtao.liu@intel.com>
+ 	    Wei Xiao  <wei3.xiao@intel.com>
+ 
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA2_SERIALIZE_SET,
+ 	OPTION_MASK_ISA2_SERIALIZE_UNSET): New macros.
+ 	(ix86_handle_option): Handle -mserialize.
+ 	* config.gcc (serializeintrin.h): New header file.
+ 	* config/i386/cpuid.h (bit_SERIALIZE): New bit.
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Detect
+ 	-mserialize.
+ 	* config/i386/i386-builtin.def: Add new builtin.
+ 	* config/i386/i386-c.c (__SERIALIZE__): New macro.
+ 	* config/i386/i386-options.c (ix86_target_opts_isa2_opts):
+ 	  Add -mserialize.
+ 	* (ix86_valid_target_attribute_inner_p): Add target attribute
+ 	* for serialize.
+ 	* config/i386/i386.h (TARGET_SERIALIZE, TARGET_SERIALIZE_P):
+ 	  New macros.
+ 	* config/i386/i386.md (UNSPECV_SERIALIZE): New unspec.
+ 	  (serialize): New define_insn.
+ 	* config/i386/i386.opt (mserialize): New option
+ 	* config/i386/immintrin.h: Include serailizeintrin.h.
+ 	* config/i386/serializeintrin.h: New header file.
+ 	* doc/invoke.texi: Add documents for -mserialize.
+ 
+ 2020-05-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-cfg.c (verify_gimple_assign_unary): Adjust integer
+ 	to/from pointer conversion checking.
+ 
+ 2020-05-05  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtin.def: Delete changes meant for a
+ 	private branch.
+ 	* config/rs6000/rs6000-c.c: Likewise.
+ 	* config/rs6000/rs6000-call.c: Likewise.
+ 	* config/rs6000/rs6000.c: Likewise.
+ 
+ 2020-05-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config/rtems.h (RTEMS_STARTFILE_SPEC): Define if undefined.
+ 	(RTEMS_ENDFILE_SPEC): Likewise.
+ 	(STARTFILE_SPEC): Update comment.  Add RTEMS_STARTFILE_SPEC.
+ 	(ENDFILE_SPEC): Add RTEMS_ENDFILE_SPEC.
+ 	(LIB_SPECS): Support -nodefaultlibs option.
+ 	* config/or1k/rtems.h (RTEMS_STARTFILE_SPEC): Define.
+ 	(RTEMS_ENDFILE_SPEC): Likewise.
+ 	* config/rs6000/rtems.h (RTEMS_STARTFILE_SPEC): Likewise.
+ 	(RTEMS_ENDFILE_SPEC): Likewise.
+ 	* config/v850/rtems.h (RTEMS_STARTFILE_SPEC): Likewise.
+ 	(RTEMS_ENDFILE_SPEC): Likewise.
+ 
+ 2020-05-05  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	* config/pru/pru.c (pru_hard_regno_call_part_clobbered): Remove.
+ 	(TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Remove.
+ 
+ 2020-05-05  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	* config/pru/pru.h: Mark R3.w0 as caller saved.
+ 
+ 2020-05-05  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	* config/pru/pru.c (pru_emit_doloop): Use new gen_doloop_end_internal
+ 	and gen_doloop_begin_internal.
+ 	(pru_reorg_loop): Use gen_pruloop with mode.
+ 	* config/pru/pru.md: Use new @insn syntax.
+ 
+ 2020-05-05  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	* config/pru/pru.c (pru_print_operand): Fix fall through comment.
+ 
+ 2020-05-05  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (fixuns_trunc<mode>si2): Use
+ 	"clobber (scratch:M)" instad of "clobber (match_scratch:M N)".
+ 	(addqi3_cconly_overflow): Ditto.
+ 	(umulv<mode>4): Ditto.
+ 	(<s>mul<mode>3_highpart): Ditto.
+ 	(tls_global_dynamic_32): Ditto.
+ 	(tls_local_dynamic_base_32): Ditto.
+ 	(atanxf2): Ditto.
+ 	(asinxf2): Ditto.
+ 	(acosxf2): Ditto.
+ 	(logxf2): Ditto.
+ 	(log10xf2): Ditto.
+ 	(log2xf2): Ditto.
+ 	(*adddi_4): Remove "m" constraint from scratch operand.
+ 	(*add<mode>_4): Ditto.
+ 
+ 2020-05-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/94516
+ 	* postreload.c (reload_cse_simplify): When replacing sp = sp + const
+ 	with sp = reg, add REG_EQUAL note with sp + const.
+ 	* combine-stack-adj.c (try_apply_stack_adjustment): Change return
+ 	type from int to bool.  Add LIVE and OTHER_INSN arguments.  Undo
+ 	postreload sp = sp + const to sp = reg optimization if needed and
+ 	possible.
+ 	(combine_stack_adjustments_for_block): Add LIVE argument.  Handle
+ 	reg = sp insn with sp + const REG_EQUAL note.  Adjust
+ 	try_apply_stack_adjustment caller, call
+ 	df_simulate_initialize_forwards and df_simulate_one_insn_forwards.
+ 	(combine_stack_adjustments): Allocate and free LIVE bitmap,
+ 	adjust combine_stack_adjustments_for_block caller.
+ 
+ 2020-05-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/93623
+ 	* tree-cfg.c (stmt_can_terminate_bb_p): Update comment to reflect
+ 	reality.
+ 
+ 2020-05-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	* opt-functions.awk (opt_args_non_empty): New function.
+ 	* opt-read.awk: Use the function for various option arguments.
+ 
+ 2020-05-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR driver/94330
+ 	* lto-wrapper.c (run_gcc): When using -flto=jobserver,
+ 	report warning when the jobserver is not detected.
+ 
+ 2020-05-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/94636
+ 	* gcov.c (main): Print total lines summary at the end.
+ 	(generate_results): Expect file_name always being non-null.
+ 	Print newline after intermediate file is printed in order to align with
+ 	what we do for normal files.
+ 
+ 2020-05-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	* dumpfile.c (dump_switch_p): Change return type
+ 	and print option suggestion.
+ 	* dumpfile.h: Change return type.
+ 	* opts-global.c (handle_common_deferred_options):
+ 	Move error into dump_switch_p function.
+ 
+ 2020-05-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c/92472
+ 	* alloc-pool.h: Use const for some arguments.
+ 	* bitmap.h: Likewise.
+ 	* mem-stats.h: Likewise.
+ 	* sese.h (get_entry_bb): Likewise.
+ 	(get_exit_bb): Likewise.
+ 
+ 2020-05-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (struct vdhs_data): New.
+ 	(vect_detect_hybrid_slp): New walker.
+ 	(vect_detect_hybrid_slp): Rewrite.
+ 
+ 2020-05-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/94947
+ 	* tree-ssa-structalias.c (ipa_pta_execute): Use
+ 	varpool_node::externally_visible_p ().
+ 	(refered_from_nonlocal_var): Likewise.
+ 
+ 2020-05-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.c (LTO_PLUGIN_SPEC): Define if not already.
+ 	(LINK_PLUGIN_SPEC): Execute LTO_PLUGIN_SPEC.
+ 	* config/vxworks.h (LTO_PLUGIN_SPEC): Define.
+ 
+ 2020-05-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gimplify.c (gimplify_init_constructor): Do not put the constructor
+ 	into static memory if it is not complete.
+ 
+ 2020-05-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/94949
+ 	* tree-ssa-loop-im.c (execute_sm): Check whether we use
+ 	the multithreaded model or always compute the stored value
+ 	before eliding a load.
+ 
+ 2020-05-05  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (*one_cmpl_zero_extend): New.
+ 
+ 2020-05-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/94800
+ 	* match.pd (X + (X << C) to X * (1 + (1 << C)),
+ 	(X << C1) + (X << C2) to X * ((1 << C1) + (1 << C2))): New
+ 	canonicalizations.
+ 
+ 	PR target/94942
+ 	* config/i386/mmx.md (*vec_dupv4hi): Use xYw constraints instead of Yv.
+ 
+ 	PR tree-optimization/94914
+ 	* match.pd ((((type)A * B) >> prec) != 0 to .MUL_OVERFLOW(A, B) != 0):
+ 	New simplification.
+ 
+ 2020-05-05  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*testqi_ext_3): Use
+ 	int_nonimmediate_operand instead of manual mode checks.
+ 	(*x86_mov<SWI48:mode>cc_0_m1_neg_leu<SWI:mode>):
+ 	Use int_nonimmediate_operand predicate.  Rewrite
+ 	define_insn_and_split pattern to a combine pass splitter.
+ 
+ 2020-05-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* configure.ac <i[34567]86-*-*>: Add --32 to tls_as_opt on Solaris.
+ 	* configure: Regenerate.
+ 
+ 2020-05-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94460
+ 	* config/i386/sse.md (avx2_ph<plusminus_mnemonic>wv16hi3,
+ 	ssse3_ph<plusminus_mnemonic>wv8hi3, ssse3_ph<plusminus_mnemonic>wv4hi3,
+ 	avx2_ph<plusminus_mnemonic>dv8si3, ssse3_ph<plusminus_mnemonic>dv4si3,
+ 	ssse3_ph<plusminus_mnemonic>dv2si3): Simplify RTL patterns.
+ 
+ 2020-05-04  Clement Chigot  <clement.chigot@atos.net>
+ 	    David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* config/rs6000/rs6000-call.c (rs6000_init_builtins): Override explicit
+ 	for fmodl, frexpl, ldexpl and modfl builtins.
+ 
+ 2020-05-04  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR middle-end/94941
+ 	* internal-fn.c (expand_load_lanes_optab_fn): Emit a move if the
+ 	chosen lhs is different from the gcall lhs.
+ 	(expand_mask_load_optab_fn): Likewise.
+ 	(expand_gather_load_optab_fn): Likewise.
+ 
+ 2020-05-04  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/94795
+ 	* config/i386/i386.md (*neg<mode>_ccc): New insn pattern.
+ 	(EQ compare->LTU compare splitter): New splitter.
+ 	(NE compare->NEG splitter): Ditto.
+ 
+ 2020-05-04  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Revert:
+ 	2020-04-30  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/94775
+ 	* tree.c (check_base_type): Return true only if TYPE_USER_ALIGN match.
+ 	(check_aligned_type): Check if TYPE_USER_ALIGN match.
+ 
+ 2020-05-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93891
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Fall back to
+ 	the original reference tree for assessing access alignment.
+ 
+ 2020-05-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/39612
+ 	* tree-ssa-loop-im.c (im_mem_ref::loaded): New member.
+ 	(set_ref_loaded_in_loop): New.
+ 	(mark_ref_loaded): Likewise.
+ 	(gather_mem_refs_stmt): Call mark_ref_loaded for loads.
+ 	(execute_sm): Avoid issueing a load when it was not there.
+ 	(execute_sm_if_changed): Avoid issueing warnings for the
+ 	conditional store.
+ 
+ 2020-05-04  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/93385
+ 	* tree-inline.c (tree_function_versioning): Leave any type conversion
+ 	of replacements to setup_one_parameter and its friend
+ 	force_value_to_type.
+ 
+ 2020-05-04  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/94650
+ 	* config/i386/predicates.md (shr_comparison_operator): New predicate.
+ 	* config/i386/i386.md (compare->shr splitter): New splitters.
+ 
+ 2020-05-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/94718
+ 	* match.pd ((X < 0) != (Y < 0) into (X ^ Y) < 0): New simplification.
+ 
+ 	PR tree-optimization/94718
+ 	* match.pd (bitop (convert @0) (convert? @1)): For GIMPLE, if we can,
+ 	replace two nop conversions on bit_{and,ior,xor} argument
+ 	and result with just one conversion on the result or another argument.
+ 
+ 	PR tree-optimization/94718
+ 	* fold-const.c (fold_binary_loc): Move (X & C) eqne (Y & C)
+ 	-> (X ^ Y) & C eqne 0 optimization to ...
+ 	* match.pd ((X & C) op (Y & C) into (X ^ Y) & C op 0): ... here.
+ 
+ 	* opts.c (get_option_html_page): Instead of hardcoding a list of
+ 	options common between C/C++ and Fortran only use gfortran/
+ 	documentation for warnings that have CL_Fortran set but not
+ 	CL_C or CL_CXX.
+ 
+ 2020-05-03  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386-expand.c (ix86_expand_int_movcc):
+ 	Use plus_constant instead of gen_rtx_PLUS with GEN_INT.
+ 	(emit_memmov): Ditto.
+ 	(emit_memset): Ditto.
+ 	(ix86_expand_strlensi_unroll_1): Ditto.
+ 	(release_scratch_register_on_entry): Ditto.
+ 	(gen_frame_set): Ditto.
+ 	(ix86_emit_restore_reg_using_pop): Ditto.
+ 	(ix86_emit_outlined_ms2sysv_restore): Ditto.
+ 	(ix86_expand_epilogue): Ditto.
+ 	(ix86_expand_split_stack_prologue): Ditto.
+ 	* config/i386/i386.md (push immediate splitter): Ditto.
+ 	(strmov): Ditto.
+ 	(strset): Ditto.
+ 
+ 2020-05-02  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR translation/93861
+ 	* config/darwin-driver.c (darwin_driver_init): Adjust spelling in
+ 	a warning.
+ 
+ 2020-05-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/tilegx/tilegx.md
+ 	(insn_stnt<I124MODE:n>_add<I48MODE:bitsuffix>): Use <I124MODE:n>
+ 	rather than just <n>.
+ 
+ 2020-05-01  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/93492
+ 	* cfgexpand.c (pass_expand::execute): Set crtl->patch_area_size
+ 	and crtl->patch_area_entry.
+ 	* emit-rtl.h (rtl_data): Add patch_area_size and patch_area_entry.
+ 	* opts.c (common_handle_option): Limit
+ 	function_entry_patch_area_size and function_entry_patch_area_start
+ 	to USHRT_MAX.  Fix a typo in error message.
+ 	* varasm.c (assemble_start_function): Use crtl->patch_area_size
+ 	and crtl->patch_area_entry.
+ 	* doc/invoke.texi: Document the maximum value for
+ 	-fpatchable-function-entry.
+ 
+ 2020-05-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/i386/darwin.h: Repair SUBTARGET_INIT_BUILTINS.
+ 	Override SUBTARGET_SHADOW_OFFSET macro.
+ 
+ 2020-05-01  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	* config/i386/i386.h: Define a new macro: SUBTARGET_SHADOW_OFFSET.
+ 	* config/i386/i386.c (ix86_asan_shadow_offset): Use this macro.
+ 	* config/i386/darwin.h: Override the SUBTARGET_SHADOW_OFFSET macro.
+ 	* config/i386/freebsd.h: Likewise.
+ 	* config/freebsd.h (LIBASAN_EARLY_SPEC): Define.
+ 	LIBTSAN_EARLY_SPEC): Likewise. (LIBLSAN_EARLY_SPEC): Likewise.
+ 
+ 2020-04-30  Alexandre Oliva <oliva@adacore.com>
+ 
+ 	* doc/sourcebuild.texi (Effective-Target Keywords): Document
+ 	the newly-introduced fileio effective target.
+ 
+ 2020-04-30  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/94740
+ 	* cse.c (cse_process_notes_1): Replace with...
+ 	(cse_process_note_1): ...this new function, acting as a
+ 	simplify_replace_fn_rtx callback to process_note.  Handle only
+ 	REGs and MEMs directly.  Validate the MEM if cse_process_note
+ 	changes its address.
+ 	(cse_process_notes): Replace with...
+ 	(cse_process_note): ...this new function.
+ 	(cse_extended_basic_block): Update accordingly, iterating over
+ 	the register notes and passing individual notes to cse_process_note.
+ 
+ 2020-04-30  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/emmintrin.h (_mm_movemask_epi8): Fix comment.
+ 
+ 2020-04-30  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/94856
+ 	* cgraph.c (clone_of_p): Also consider thunks whih had their bodies
+ 	saved by the inliner and thunks which had their call inlined.
+ 	* ipa-inline-transform.c (save_inline_function_body): Fill in
+ 	former_clone_of of new body holders.
+ 
+ 2020-04-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* BASE-VER: Set to 11.0.0.
+ 
+ 2020-04-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* pretty-print.c (pp_take_prefix): Fix spelling in comment.
+ 
+ 2020-04-30  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/94775
+ 	* tree.c (check_base_type): Return true only if TYPE_USER_ALIGN match.
+ 	(check_aligned_type): Check if TYPE_USER_ALIGN match.
+ 
+ 2020-04-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (TARGET_OUTLINE_ATOMICS): Define.
+ 	* config/aarch64/aarch64.opt (moutline-atomics): Change to Int variable.
+ 	* doc/invoke.texi (moutline-atomics): Document as on by default.
+ 
+ 2020-04-30  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+ 
+ 	PR target/94748
+ 	* config/aarch64/aarch64-bti-insert.c (rest_of_insert_bti): Remove
+ 	the check for NOTE_INSN_DELETED_LABEL.
+ 
+ 2020-04-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* configure.ac (--with-documentation-root-url,
+ 	--with-changes-root-url): Diagnose URL not ending with /,
+ 	use AC_DEFINE_UNQUOTED instead of AC_SUBST.
+ 	* opts.h (get_changes_url): Remove.
+ 	* opts.c (get_changes_url): Remove.
+ 	* Makefile.in (CFLAGS-opts.o): Don't add -DDOCUMENTATION_ROOT_URL
+ 	or -DCHANGES_ROOT_URL.
+ 	* doc/install.texi (--with-documentation-root-url,
+ 	--with-changes-root-url): Document.
+ 	* config/arm/arm.c (aapcs_vfp_is_call_or_return_candidate): Don't call
+ 	get_changes_url and free, change url variable type to const char * and
+ 	set it to CHANGES_ROOT_URL "gcc-10/changes.html#empty_base".
+ 	* config/s390/s390.c (s390_function_arg_vector,
+ 	s390_function_arg_float): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_vfp_is_call_or_return_candidate):
+ 	Likewise.
+ 	* config/rs6000/rs6000-call.c (rs6000_discover_homogeneous_aggregate):
+ 	Likewise.
+ 	* config.in: Regenerate.
+ 	* configure: Regenerate.
+ 
+ 2020-04-30  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/57002
+ 	* config/arm/arm.c (isr_attribute_args): Remove duplicate entries.
+ 
+ 2020-04-30  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/constraints.md ("j>f", "jb4"): New constraints.
+ 	* config/s390/vecintrin.h (vec_load_len_r, vec_store_len_r): Fix
+ 	macro definitions.
+ 	* config/s390/vx-builtins.md ("vlrlrv16qi", "vstrlrv16qi"): Add a
+ 	separate expander.
+ 	("*vlrlrv16qi", "*vstrlrv16qi"): Add alternative for vl/vst.
+ 	Change constraint for vlrl/vstrl to jb4.
+ 
+ 2020-04-30  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	* var-tracking.c (vt_initialize): Move variables pre and post
+ 	into inner block and initialize both in order to fix warning
+ 	about uninitialized use.  Remove unnecessary checks for
+ 	frame_pointer_needed.
+ 
+ 2020-04-30  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	* toplev.c (output_stack_usage_1): Ensure that first
+ 	argument to fprintf is not null.
+ 
+ 2020-04-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* configure.ac (-with-changes-root-url): New configure option,
+ 	defaulting to https://gcc.gnu.org/.
+ 	* Makefile.in (CFLAGS-opts.o): Define CHANGES_ROOT_URL for
+ 	opts.c.
+ 	* pretty-print.c (get_end_url_string): New function.
+ 	(pp_format): Handle %{ and %} for URLs.
+ 	(pp_begin_url): Use pp_string instead of pp_printf.
+ 	(pp_end_url): Use get_end_url_string.
+ 	* opts.h (get_changes_url): Declare.
+ 	* opts.c (get_changes_url): New function.
+ 	* config/rs6000/rs6000-call.c: Include opts.h.
+ 	(rs6000_discover_homogeneous_aggregate): Use %{in GCC 10.1%} instead
+ 	of just in GCC 10.1 in diagnostics and add URL.
+ 	* config/arm/arm.c (aapcs_vfp_is_call_or_return_candidate): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_vfp_is_call_or_return_candidate):
+ 	Likewise.
+ 	* config/s390/s390.c (s390_function_arg_vector,
+ 	s390_function_arg_float): Likewise.
+ 	* configure: Regenerated.
+ 
+ 	PR target/94704
+ 	* config/s390/s390.c (s390_function_arg_vector,
+ 	s390_function_arg_float): Use DECL_FIELD_ABI_IGNORED instead of
+ 	cxx17_empty_base_field_p.  In -Wpsabi diagnostics use the type
+ 	passed to the function rather than the type of the single element.
+ 	Rename cxx17_empty_base_seen variable to empty_base_seen, change
+ 	type to int, and adjust diagnostics depending on if the field
+ 	has [[no_unique_attribute]] or not.
+ 
+ 	PR target/94832
+ 	* config/i386/avx512bwintrin.h (_mm512_alignr_epi8,
+ 	_mm512_mask_alignr_epi8, _mm512_maskz_alignr_epi8): Wrap macro operands
+ 	used in casts into parens.
+ 	* config/i386/avx512fintrin.h (_mm512_cvt_roundps_ph, _mm512_cvtps_ph,
+ 	_mm512_mask_cvt_roundps_ph, _mm512_mask_cvtps_ph,
+ 	_mm512_maskz_cvt_roundps_ph, _mm512_maskz_cvtps_ph,
+ 	_mm512_mask_cmp_epi64_mask, _mm512_mask_cmp_epi32_mask,
+ 	_mm512_mask_cmp_epu64_mask, _mm512_mask_cmp_epu32_mask,
+ 	_mm512_mask_cmp_round_pd_mask, _mm512_mask_cmp_round_ps_mask,
+ 	_mm512_mask_cmp_pd_mask, _mm512_mask_cmp_ps_mask): Likewise.
+ 	* config/i386/avx512vlbwintrin.h (_mm256_mask_alignr_epi8,
+ 	_mm256_maskz_alignr_epi8, _mm_mask_alignr_epi8, _mm_maskz_alignr_epi8,
+ 	_mm256_mask_cmp_epu8_mask): Likewise.
+ 	* config/i386/avx512vlintrin.h (_mm_mask_cvtps_ph, _mm_maskz_cvtps_ph,
+ 	_mm256_mask_cvtps_ph, _mm256_maskz_cvtps_ph): Likewise.
+ 	* config/i386/f16cintrin.h (_mm_cvtps_ph, _mm256_cvtps_ph): Likewise.
+ 	* config/i386/shaintrin.h (_mm_sha1rnds4_epu32): Likewise.
+ 
+ 	PR target/94832
+ 	* config/i386/avx2intrin.h (_mm_mask_i32gather_pd,
+ 	_mm256_mask_i32gather_pd, _mm_mask_i64gather_pd,
+ 	_mm256_mask_i64gather_pd, _mm_mask_i32gather_ps,
+ 	_mm256_mask_i32gather_ps, _mm_mask_i64gather_ps,
+ 	_mm256_mask_i64gather_ps, _mm_i32gather_epi64,
+ 	_mm_mask_i32gather_epi64, _mm256_i32gather_epi64,
+ 	_mm256_mask_i32gather_epi64, _mm_i64gather_epi64,
+ 	_mm_mask_i64gather_epi64, _mm256_i64gather_epi64,
+ 	_mm256_mask_i64gather_epi64, _mm_i32gather_epi32,
+ 	_mm_mask_i32gather_epi32, _mm256_i32gather_epi32,
+ 	_mm256_mask_i32gather_epi32, _mm_i64gather_epi32,
+ 	_mm_mask_i64gather_epi32, _mm256_i64gather_epi32,
+ 	_mm256_mask_i64gather_epi32): Surround macro parameter uses with
+ 	parens.
+ 	(_mm_i32gather_pd, _mm256_i32gather_pd, _mm_i64gather_pd,
+ 	_mm256_i64gather_pd, _mm_i32gather_ps, _mm256_i32gather_ps,
+ 	_mm_i64gather_ps, _mm256_i64gather_ps): Likewise.  Don't use
+ 	as mask vector containing -1.0 or -1.0f elts, but instead vector
+ 	with all bits set using _mm*_cmpeq_p? with zero operands.
+ 	* config/i386/avx512fintrin.h (_mm512_i32gather_ps,
+ 	_mm512_mask_i32gather_ps, _mm512_i32gather_pd,
+ 	_mm512_mask_i32gather_pd, _mm512_i64gather_ps,
+ 	_mm512_mask_i64gather_ps, _mm512_i64gather_pd,
+ 	_mm512_mask_i64gather_pd, _mm512_i32gather_epi32,
+ 	_mm512_mask_i32gather_epi32, _mm512_i32gather_epi64,
+ 	_mm512_mask_i32gather_epi64, _mm512_i64gather_epi32,
+ 	_mm512_mask_i64gather_epi32, _mm512_i64gather_epi64,
+ 	_mm512_mask_i64gather_epi64, _mm512_i32scatter_ps,
+ 	_mm512_mask_i32scatter_ps, _mm512_i32scatter_pd,
+ 	_mm512_mask_i32scatter_pd, _mm512_i64scatter_ps,
+ 	_mm512_mask_i64scatter_ps, _mm512_i64scatter_pd,
+ 	_mm512_mask_i64scatter_pd, _mm512_i32scatter_epi32,
+ 	_mm512_mask_i32scatter_epi32, _mm512_i32scatter_epi64,
+ 	_mm512_mask_i32scatter_epi64, _mm512_i64scatter_epi32,
+ 	_mm512_mask_i64scatter_epi32, _mm512_i64scatter_epi64,
+ 	_mm512_mask_i64scatter_epi64): Surround macro parameter uses with
+ 	parens.
+ 	* config/i386/avx512pfintrin.h (_mm512_prefetch_i32gather_pd,
+ 	_mm512_prefetch_i32gather_ps, _mm512_mask_prefetch_i32gather_pd,
+ 	_mm512_mask_prefetch_i32gather_ps, _mm512_prefetch_i64gather_pd,
+ 	_mm512_prefetch_i64gather_ps, _mm512_mask_prefetch_i64gather_pd,
+ 	_mm512_mask_prefetch_i64gather_ps, _mm512_prefetch_i32scatter_pd,
+ 	_mm512_prefetch_i32scatter_ps, _mm512_mask_prefetch_i32scatter_pd,
+ 	_mm512_mask_prefetch_i32scatter_ps, _mm512_prefetch_i64scatter_pd,
+ 	_mm512_prefetch_i64scatter_ps, _mm512_mask_prefetch_i64scatter_pd,
+ 	_mm512_mask_prefetch_i64scatter_ps): Likewise.
+ 	* config/i386/avx512vlintrin.h (_mm256_mmask_i32gather_ps,
+ 	_mm_mmask_i32gather_ps, _mm256_mmask_i32gather_pd,
+ 	_mm_mmask_i32gather_pd, _mm256_mmask_i64gather_ps,
+ 	_mm_mmask_i64gather_ps, _mm256_mmask_i64gather_pd,
+ 	_mm_mmask_i64gather_pd, _mm256_mmask_i32gather_epi32,
+ 	_mm_mmask_i32gather_epi32, _mm256_mmask_i32gather_epi64,
+ 	_mm_mmask_i32gather_epi64, _mm256_mmask_i64gather_epi32,
+ 	_mm_mmask_i64gather_epi32, _mm256_mmask_i64gather_epi64,
+ 	_mm_mmask_i64gather_epi64, _mm256_i32scatter_ps,
+ 	_mm256_mask_i32scatter_ps, _mm_i32scatter_ps, _mm_mask_i32scatter_ps,
+ 	_mm256_i32scatter_pd, _mm256_mask_i32scatter_pd, _mm_i32scatter_pd,
+ 	_mm_mask_i32scatter_pd, _mm256_i64scatter_ps,
+ 	_mm256_mask_i64scatter_ps, _mm_i64scatter_ps, _mm_mask_i64scatter_ps,
+ 	_mm256_i64scatter_pd, _mm256_mask_i64scatter_pd, _mm_i64scatter_pd,
+ 	_mm_mask_i64scatter_pd, _mm256_i32scatter_epi32,
+ 	_mm256_mask_i32scatter_epi32, _mm_i32scatter_epi32,
+ 	_mm_mask_i32scatter_epi32, _mm256_i32scatter_epi64,
+ 	_mm256_mask_i32scatter_epi64, _mm_i32scatter_epi64,
+ 	_mm_mask_i32scatter_epi64, _mm256_i64scatter_epi32,
+ 	_mm256_mask_i64scatter_epi32, _mm_i64scatter_epi32,
+ 	_mm_mask_i64scatter_epi32, _mm256_i64scatter_epi64,
+ 	_mm256_mask_i64scatter_epi64, _mm_i64scatter_epi64,
+ 	_mm_mask_i64scatter_epi64): Likewise.
+ 
+ 2020-04-29  Jeff Law  <law@redhat.com>
+ 
+ 	* config/h8300/h8300.md (H8/SX div patterns): All H8/SX specific
+ 	division instructions are 4 bytes long.
+ 
+ 2020-04-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94826
+ 	* config/rs6000/rs6000.c (rs6000_atomic_assign_expand_fenv): Use
+ 	TARGET_EXPR instead of MODIFY_EXPR for first assignment to
+ 	fenv_var, fenv_clear and old_fenv variables.  For fenv_addr
+ 	take address of TARGET_EXPR of fenv_var with void_node initializer.
+ 	Formatting fixes.
+ 
+ 2020-04-29  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	PR tree-optimization/94774
+ 	* gimple-ssa-sprintf.c (try_substitute_return_value): Initialize
+ 	variable retval.
+ 
+ 2020-04-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* calls.h (cxx17_empty_base_field_p): Turn into a function declaration.
+ 	* calls.c (cxx17_empty_base_field_p): New function.  Check
+ 	DECL_ARTIFICIAL and RECORD_OR_UNION_TYPE_P in addition to the
+ 	previous checks.
+ 
+ 2020-04-29  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/93654
+ 	* config/i386/i386-options.c (ix86_set_indirect_branch_type):
+ 	Allow -fcf-protection with -mindirect-branch=thunk-extern and
+ 	-mfunction-return=thunk-extern.
+ 	* doc/invoke.texi: Update notes for -fcf-protection=branch with
+ 	-mindirect-branch=thunk-extern and -mindirect-return=thunk-extern.
+ 
+ 2020-04-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* doc/sourcebuild.texi: Add missing arm_arch_v8a_hard_ok anchor.
+ 
+ 2020-04-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (arm_atomic_assign_expand_fenv): Use
+ 	TARGET_EXPR instead of MODIFY_EXPR for the first assignments to
+ 	fenv_var and new_fenv_var.
+ 
+ 2020-04-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* doc/sourcebuild.texi (arm_arch_v8a_hard_ok): Document new
+ 	effective-target keyword.
+ 	(arm_arch_v8a_hard_multilib): Likewise.
+ 	(arm_arch_v8a_hard): Document new dg-add-options keyword.
+ 	* config/arm/arm.c (arm_return_in_memory): Note that the APCS
+ 	code is deprecated and has not been updated to handle
+ 	DECL_FIELD_ABI_IGNORED.
+ 	(WARN_PSABI_EMPTY_CXX17_BASE): New constant.
+ 	(WARN_PSABI_NO_UNIQUE_ADDRESS): Likewise.
+ 	(aapcs_vfp_sub_candidate): Replace the boolean pointer parameter
+ 	avoid_cxx17_empty_base with a pointer to a bitmask.  Ignore fields
+ 	whose DECL_FIELD_ABI_IGNORED bit is set when determining whether
+ 	something actually is a HFA or HVA.  Record whether we see a
+ 	[[no_unique_address]] field that previous GCCs would not have
+ 	ignored in this way.
+ 	(aapcs_vfp_is_call_or_return_candidate): Update the calls to
+ 	aapcs_vfp_sub_candidate and report a -Wpsabi warning for the
+ 	[[no_unique_address]] case.  Use TYPE_MAIN_VARIANT in the
+ 	diagnostic messages.
+ 	(arm_needs_doubleword_align): Add a comment explaining why we
+ 	consider even zero-sized fields.
+ 
+ 2020-04-29  Richard Biener  <rguenther@suse.de>
+ 	    Li Zekun  <lizekun1@huawei.com>
+ 
+ 	PR lto/94822
+ 	* tree.c (component_ref_size): Guard against error_mark_node
+ 	DECL_INITIAL as it happens with LTO.
+ 
+ 2020-04-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_function_arg_alignment): Add a
+ 	comment explaining why we consider even zero-sized fields.
+ 	(WARN_PSABI_EMPTY_CXX17_BASE): New constant.
+ 	(WARN_PSABI_NO_UNIQUE_ADDRESS): Likewise.
+ 	(aapcs_vfp_sub_candidate): Replace the boolean pointer parameter
+ 	avoid_cxx17_empty_base with a pointer to a bitmask.  Ignore fields
+ 	whose DECL_FIELD_ABI_IGNORED bit is set when determining whether
+ 	something actually is a HFA or HVA.  Record whether we see a
+ 	[[no_unique_address]] field that previous GCCs would not have
+ 	ignored in this way.
+ 	(aarch64_vfp_is_call_or_return_candidate): Add a parameter to say
+ 	whether diagnostics should be suppressed.  Update the calls to
+ 	aapcs_vfp_sub_candidate and report a -Wpsabi warning for the
+ 	[[no_unique_address]] case.
+ 	(aarch64_return_in_msb): Update call accordingly, never silencing
+ 	diagnostics.
+ 	(aarch64_function_value): Likewise.
+ 	(aarch64_return_in_memory_1): Likewise.
+ 	(aarch64_init_cumulative_args): Likewise.
+ 	(aarch64_gimplify_va_arg_expr): Likewise.
+ 	(aarch64_pass_by_reference_1): Take a CUMULATIVE_ARGS pointer and
+ 	use it to decide whether arch64_vfp_is_call_or_return_candidate
+ 	should be silent.
+ 	(aarch64_pass_by_reference): Update calls accordingly.
+ 	(aarch64_vfp_is_call_candidate): Use the CUMULATIVE_ARGS argument
+ 	to decide whether arch64_vfp_is_call_or_return_candidate should be
+ 	silent.
+ 
+ 2020-04-29  Haijian Zhang  <z.zhanghaijian@huawei.com>
+ 
+ 	PR target/94820
+ 	* config/aarch64/aarch64-builtins.c
+ 	(aarch64_atomic_assign_expand_fenv): Use TARGET_EXPR instead of
+ 	MODIFY_EXPR for first assignment to fenv_cr, fenv_sr and
+ 	new_fenv_var.
+ 
+ 2020-04-29  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* configure.ac <$enable_offload_targets>: Do parsing as done
+ 	elsewhere.
+ 	* configure: Regenerate.
+ 
+ 	* configure.ac <$enable_offload_targets>: 'amdgcn' is 'gcn'.
+ 	* configure: Regenerate.
+ 
+ 	PR target/94279
+ 	* rtlanal.c (set_noop_p): Handle non-constant selectors.
+ 
+ 	PR target/94282
+ 	* common/config/gcn/gcn-common.c (gcn_except_unwind_info): New
+ 	function.
+ 	(TARGET_EXCEPT_UNWIND_INFO): Define.
+ 
+ 2020-04-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94248
+ 	* config/gcn/gcn.md (*mov<mode>_insn): Use
+ 	'reg_overlap_mentioned_p' to check for overlap.
+ 
+ 	PR target/94706
+ 	* config/ia64/ia64.c (hfa_element_mode): Use DECL_FIELD_ABI_IGNORED
+ 	instead of cxx17_empty_base_field_p.
+ 
+ 	PR target/94707
+ 	* tree-core.h (tree_decl_common): Note decl_flag_0 used for
+ 	DECL_FIELD_ABI_IGNORED.
+ 	* tree.h (DECL_FIELD_ABI_IGNORED): Define.
+ 	* calls.h (cxx17_empty_base_field_p): Change into a temporary
+ 	macro, check DECL_FIELD_ABI_IGNORED flag with no "no_unique_address"
+ 	attribute.
+ 	* calls.c (cxx17_empty_base_field_p): Remove.
+ 	* tree-streamer-out.c (pack_ts_decl_common_value_fields): Handle
+ 	DECL_FIELD_ABI_IGNORED.
+ 	* tree-streamer-in.c (unpack_ts_decl_common_value_fields): Likewise.
+ 	* lto-streamer-out.c (hash_tree): Likewise.
+ 	* config/rs6000/rs6000-call.c (rs6000_aggregate_candidate): Rename
+ 	cxx17_empty_base_seen to empty_base_seen, change type to int *,
+ 	adjust recursive calls, use DECL_FIELD_ABI_IGNORED instead of
+ 	cxx17_empty_base_field_p, if "no_unique_address" attribute is
+ 	present, propagate that to the caller too.
+ 	(rs6000_discover_homogeneous_aggregate): Adjust
+ 	rs6000_aggregate_candidate caller, emit different diagnostics
+ 	when c++17 empty base fields are present and when empty
+ 	[[no_unique_address]] fields are present.
+ 	* config/rs6000/rs6000.c (rs6000_special_round_type_align,
+ 	darwin_rs6000_special_round_type_align): Skip DECL_FIELD_ABI_IGNORED
+ 	fields.
+ 
+ 2020-04-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-im.c (ref_always_accessed::operator ()):
+ 	Just check whether the stmt stores.
+ 
+ 2020-04-28  Alexandre Oliva <oliva@adacore.com>
+ 
+ 	PR target/94812
+ 	* config/rs6000/rs6000.md (rs6000_mffsl): Copy result to
+ 	output operand in emulation.  Don't overwrite pseudos.
+ 
+ 2020-04-28  Jeff Law  <law@redhat.com>
+ 
+ 	* config/h8300/h8300.md (H8/SX mult patterns): All H8/SX specific
+ 	multiply patterns are 4 bytes long.
+ 
+ 2020-04-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (cortex-m55): Remove +nofp option.
+ 	* doc/invoke.texi (Arm Options): Remove -mcpu=cortex-m55 from +nofp option.
+ 
+ 2020-04-28  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94711
+ 	* config/arm/arm.c (aapcs_vfp_sub_candidate): Account for C++17 empty
+ 	base class artificial fields.
+ 	(aapcs_vfp_is_call_or_return_candidate): Warn when PCS ABI
+ 	decision is different after this fix.
+ 
+ 2020-04-28  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/94447
+ 	PR analyzer/94639
+ 	PR analyzer/94732
+ 	PR analyzer/94754
+ 	* doc/invoke.texi (Static Analyzer Options): Remove
+ 	-Wanalyzer-use-of-uninitialized-value.
+ 	(-Wno-analyzer-use-of-uninitialized-value): Remove item.
+ 
+ 2020-04-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/94809
+ 	* tree.c (build_call_expr_internal_loc_array): Call
+ 	process_call_operands.
+ 
+ 2020-04-27  Anton Youdkevitch  <anton.youdkevitch@bell-sw.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (thunderx3t110): Add the chip name.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* config/aarch64/aarch64.c (thunderx3t110_addrcost_table): Define.
+ 	(thunderx3t110_regmove_cost): Likewise.
+ 	(thunderx3t110_vector_cost): Likewise.
+ 	(thunderx3t110_prefetch_tune): Likewise.
+ 	(thunderx3t110_tunings): Likewise.
+ 	* config/aarch64/aarch64-cost-tables.h (thunderx3t110_extra_costs):
+ 	Define.
+ 	* config/aarch64/thunderx3t110.md: New file.
+ 	* config/aarch64/aarch64.md: Include thunderx3t110.md.
+ 	* doc/invoke.texi (AArch64 options): Add thunderx3t110.
+ 
+ 2020-04-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94704
+ 	* config/s390/s390.c (s390_function_arg_vector,
+ 	s390_function_arg_float): Emit -Wpsabi diagnostics if the ABI changed.
+ 
+ 2020-04-28  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/94727
+ 	* tree-vect-stmts.c (vect_is_simple_cond): If both comparison
+ 	operands are invariant booleans, use the mask type associated with the
+ 	STMT_VINFO_VECTYPE.  Use !slp_node instead of !vectype to exclude SLP.
+ 	(vectorizable_condition): Pass vectype unconditionally to
+ 	vect_is_simple_cond.
+ 
+ 2020-04-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94780
+ 	* config/i386/i386.c (ix86_atomic_assign_expand_fenv): Use
+ 	TARGET_EXPR instead of MODIFY_EXPR for first assignment to
+ 	sw_var, exceptions_var, mxcsr_orig_var and mxcsr_mod_var.
+ 
+ 2020-04-27  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR 92830
+ 	* configure.ac (DOCUMENTATION_ROOT_URL): Drop trailing "gcc/" from
+ 	default value, so that it can by supplied by get_option_html_page.
+ 	* configure: Regenerate.
+ 	* opts.c: Include "selftest.h".
+ 	(get_option_html_page): New function.
+ 	(get_option_url): Use it.  Reformat to place comments next to the
+ 	expressions they refer to.
+ 	(selftest::test_get_option_html_page): New.
+ 	(selftest::opts_c_tests): New.
+ 	* selftest-run-tests.c (selftest::run_tests): Call
+ 	selftest::opts_c_tests.
+ 	* selftest.h (selftest::opts_c_tests): New decl.
+ 
+ 2020-04-27  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (arm_expand_builtin_args): Only apply
+ 	UINTVAL to CONST_INTs.
+ 
+ 2020-04-27  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/constraints.md (e): Remove constraint.
+ 	(Te): Define constraint.
+ 	* config/arm/mve.md (vaddvq_<supf><mode>): Modify constraint in
+ 	operand 0 from "e" to "Te".
+ 	(vaddvaq_<supf><mode>): Likewise.
+ 	(vaddvq_p_<supf><mode>): Likewise.
+ 	(vmladavq_<supf><mode>): Likewise.
+ 	(vmladavxq_s<mode>): Likewise.
+ 	(vmlsdavq_s<mode>): Likewise.
+ 	(vmlsdavxq_s<mode>): Likewise.
+ 	(vaddvaq_p_<supf><mode>): Likewise.
+ 	(vmladavaq_<supf><mode>): Likewise.
+ 	(vmladavq_p_<supf><mode>): Likewise.
+ 	(vmladavxq_p_s<mode>): Likewise.
+ 	(vmlsdavq_p_s<mode>): Likewise.
+ 	(vmlsdavxq_p_s<mode>): Likewise.
+ 	(vmlsdavaxq_s<mode>): Likewise.
+ 	(vmlsdavaq_s<mode>): Likewise.
+ 	(vmladavaxq_s<mode>): Likewise.
+ 	(vmladavaq_p_<supf><mode>): Likewise.
+ 	(vmladavaxq_p_s<mode>): Likewise.
+ 	(vmlsdavaq_p_s<mode>): Likewise.
+ 	(vmlsdavaxq_p_s<mode>): Likewise.
+ 
+ 2020-04-27  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm.c (output_move_neon): Only get the first operand if
+ 	addr is PLUS.
+ 
+ 2020-04-27  Felix Yang  <felix.yang@huawei.com>
+ 
+ 	PR tree-optimization/94784
+ 	* tree-ssa-forwprop.c (simplify_vector_constructor): Flip the
+ 	assert around so that it checks that the two vectors have equal
+ 	TYPE_VECTOR_SUBPARTS and that converting the corresponding element
+ 	types is a useless_type_conversion_p.
+ 
+ 2020-04-27  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+ 
+ 	PR target/94515
+ 	* dwarf2cfi.c (struct GTY): Add ra_mangled.
+ 	(cfi_row_equal_p): Check ra_mangled.
+ 	(dwarf2out_frame_debug_cfa_window_save): Remove the argument,
+ 	this only handles the sparc logic now.
+ 	(dwarf2out_frame_debug_cfa_toggle_ra_mangle): New function for
+ 	the aarch64 specific logic.
+ 	(dwarf2out_frame_debug): Update to use the new subroutines.
+ 	(change_cfi_row): Check ra_mangled.
+ 
+ 2020-04-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94704
+ 	* config/s390/s390.c (s390_function_arg_vector,
+ 	s390_function_arg_float): Ignore cxx17_empty_base_field_p fields.
+ 
+ 2020-04-27  Jiufu Guo   <guojiufu@cn.ibm.com>
+ 
+ 	* common/config/rs6000/rs6000-common.c
+ 	(rs6000_option_optimization_table) [OPT_LEVELS_ALL]: Remove turn off
+ 	-fweb.
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Avoid to
+ 	set flag_web.
+ 
+ 2020-04-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/94659
+ 	* cgraph.h (cgraph_node::can_remove_if_no_direct_calls_and_refs_p):
+ 	Do not remove ifunc_resolvers in remove unreachable nodes in LTO.
+ 
+ 2020-04-27  Xiong Hu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	PR target/91518
+ 	* config/rs6000/rs6000-logue.c (frame_pointer_needed_indeed):
+ 	New variable.
+ 	(rs6000_emit_prologue_components):
+ 	Check with frame_pointer_needed_indeed.
+ 	(rs6000_emit_epilogue_components): Likewise.
+ 	(rs6000_emit_prologue): Likewise.
+ 	(rs6000_emit_epilogue): Set frame_pointer_needed_indeed.
+ 
+ 2020-04-25  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* config/rs6000/rs6000-logue.c (rs6000_stack_info): Don't push a
+ 	stack frame when debugging and flag_compare_debug is enabled.
+ 
+ 2020-04-25  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/linux64.h (PCREL_SUPPORTED_BY_OS): Define to
+ 	enable PC-relative addressing for -mcpu=future.
+ 	* config/rs6000/rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): Move
+ 	after OTHER_FUTURE_MASKS.  Use OTHER_FUTURE_MASKS.
+ 	* config/rs6000/rs6000.c (PCREL_SUPPORTED_BY_OS): If not defined,
+ 	suppress PC-relative addressing.
+ 	(rs6000_option_override_internal): Split up error messages
+ 	checking for -mprefixed and -mpcrel.  Enable -mpcrel if the target
+ 	system supports it.
+ 
+ 2020-04-25  Jakub Jelinek  <jakub@redhat.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/94734
+ 	PR tree-optimization/89430
+ 	* tree-ssa-phiopt.c: Include tree-eh.h.
+ 	(cond_store_replacement): Return false if an automatic variable
+ 	access could trap.  If -fstore-data-races, don't return false
+ 	just because an automatic variable is addressable.
+ 
+ 2020-04-24  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (add<mode>_zext_dup2_exec): Fix merge
+ 	of high-part.
+ 	(add<mode>_sext_dup2_exec): Likewise.
+ 
+ 2020-04-24  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/94710
+ 	* config/rs6000/vector.md (vec_shr_<mode> for VEC_L): Correct little
+ 	endian byteshift_val calculation.
+ 
+ 2020-04-24  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn.md (*mov<mode>_insn): Only split post-reload.
+ 
+ 2020-04-24  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/arm_sve.h: Add a comment.
+ 
+ 2020-04-24  Haijian Zhang <z.zhanghaijian@huawei.com>
+ 
+ 	PR rtl-optimization/94708
+ 	* combine.c (simplify_if_then_else): Add check for
+ 	!HONOR_NANS (mode) && !HONOR_SIGNED_ZEROS (mode).
+ 
+ 2020-04-23  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR driver/90983
+ 	* common.opt (-Wno-frame-larger-than): New option.
+ 	(-Wno-larger-than, -Wno-stack-usage): Same.
+ 
+ 2020-04-23  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (mov<mode>_exec): Swap the numbers on operands
+ 	2 and 3.
+ 	(mov<mode>_exec): Likewise.
+ 	(trunc<vndi><mode>2_exec): Swap parameters to gen_mov<mode>_exec.
+ 	(<convop><mode><vndi>2_exec): Likewise.
+ 
+ 2019-04-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR tree-optimization/94717
+ 	* gimple-ssa-store-merging.c (try_coalesce_bswap): Return false if one
+ 	of the stores doesn't have the same landing pad number as the first.
+ 	(coalesce_immediate_stores): Do not try to coalesce the store using
+ 	bswap if it doesn't have the same landing pad number as the first.
+ 
+ 2020-04-23  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions):
+ 	Replace outdated link to ELFv2 ABI.
+ 
+ 2020-04-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94710
+ 	* optabs.c (expand_vec_perm_const): For shift_amt const0_rtx
+ 	just return v2.
+ 
+ 	PR middle-end/94724
+ 	* tree.c (get_narrower): Instead of creating COMPOUND_EXPRs
+ 	temporarily with non-final second operand and updating it later,
+ 	push COMPOUND_EXPRs into a vector and process it in reverse,
+ 	creating COMPOUND_EXPRs with the final operands.
+ 
+ 2020-04-23  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+ 
+ 	PR target/94697
+ 	* config/aarch64/aarch64-bti-insert.c (rest_of_insert_bti): Swap
+ 	bti c and bti j handling.
+ 
+ 2020-04-23  Andrew Stubbs  <ams@codesourcery.com>
+ 	    Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR middle-end/93488
+ 
+ 	* omp-expand.c (expand_omp_target): Use force_gimple_operand_gsi on
+ 	t_async and the wait arguments.
+ 
+ 2020-04-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/94727
+ 	* tree-vect-stmts.c (vectorizable_comparison): Use mask_type when
+ 	comparing invariant scalar booleans.
+ 
+ 2020-04-23  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94383
+ 	* config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Account for C++17
+ 	empty base class artificial fields.
+ 	(aarch64_vfp_is_call_or_return_candidate): Warn when ABI PCS decision is
+ 	different after this fix.
+ 
+ 2020-04-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94707
+ 	* config/rs6000/rs6000-call.c (rs6000_discover_homogeneous_aggregate):
+ 	Use TYPE_UID (TYPE_MAIN_VARIANT (type)) instead of type to check
+ 	if the same type has been diagnosed most recently already.
+ 
+ 2020-04-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm_mve.h (__arm_vbicq_n_u16): Modify function parameter's
+ 	datatype.
+ 	(__arm_vbicq_n_s16): Likewise.
+ 	(__arm_vbicq_n_u32): Likewise.
+ 	(__arm_vbicq_n_s32): Likewise.
+ 	(__arm_vbicq): Likewise.
+ 	(__arm_vbicq_n_s16): Modify MVE polymorphic variant argument's datatype.
+ 	(__arm_vbicq_n_s32): Likewise.
+ 	(__arm_vbicq_n_u16): Likewise.
+ 	(__arm_vbicq_n_u32): Likewise.
+ 	(__arm_vdupq_m_n_s8): Likewise.
+ 	(__arm_vdupq_m_n_s16): Likewise.
+ 	(__arm_vdupq_m_n_s32): Likewise.
+ 	(__arm_vdupq_m_n_u8): Likewise.
+ 	(__arm_vdupq_m_n_u16): Likewise.
+ 	(__arm_vdupq_m_n_u32): Likewise.
+ 	(__arm_vdupq_m_n_f16): Likewise.
+ 	(__arm_vdupq_m_n_f32): Likewise.
+ 	(__arm_vldrhq_gather_offset_s16): Likewise.
+ 	(__arm_vldrhq_gather_offset_s32): Likewise.
+ 	(__arm_vldrhq_gather_offset_u16): Likewise.
+ 	(__arm_vldrhq_gather_offset_u32): Likewise.
+ 	(__arm_vldrhq_gather_offset_f16): Likewise.
+ 	(__arm_vldrhq_gather_offset_z_s16): Likewise.
+ 	(__arm_vldrhq_gather_offset_z_s32): Likewise.
+ 	(__arm_vldrhq_gather_offset_z_u16): Likewise.
+ 	(__arm_vldrhq_gather_offset_z_u32): Likewise.
+ 	(__arm_vldrhq_gather_offset_z_f16): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_s16): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_s32): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_u16): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_u32): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_f16): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_z_s16): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_z_s32): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_z_u16): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_z_u32): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_z_f16): Likewise.
+ 	(__arm_vldrwq_gather_offset_s32): Likewise.
+ 	(__arm_vldrwq_gather_offset_u32): Likewise.
+ 	(__arm_vldrwq_gather_offset_f32): Likewise.
+ 	(__arm_vldrwq_gather_offset_z_s32): Likewise.
+ 	(__arm_vldrwq_gather_offset_z_u32): Likewise.
+ 	(__arm_vldrwq_gather_offset_z_f32): Likewise.
+ 	(__arm_vldrwq_gather_shifted_offset_s32): Likewise.
+ 	(__arm_vldrwq_gather_shifted_offset_u32): Likewise.
+ 	(__arm_vldrwq_gather_shifted_offset_f32): Likewise.
+ 	(__arm_vldrwq_gather_shifted_offset_z_s32): Likewise.
+ 	(__arm_vldrwq_gather_shifted_offset_z_u32): Likewise.
+ 	(__arm_vldrwq_gather_shifted_offset_z_f32): Likewise.
+ 	(__arm_vdwdupq_x_n_u8): Likewise.
+ 	(__arm_vdwdupq_x_n_u16): Likewise.
+ 	(__arm_vdwdupq_x_n_u32): Likewise.
+ 	(__arm_viwdupq_x_n_u8): Likewise.
+ 	(__arm_viwdupq_x_n_u16): Likewise.
+ 	(__arm_viwdupq_x_n_u32): Likewise.
+ 	(__arm_vidupq_x_n_u8): Likewise.
+ 	(__arm_vddupq_x_n_u8): Likewise.
+ 	(__arm_vidupq_x_n_u16): Likewise.
+ 	(__arm_vddupq_x_n_u16): Likewise.
+ 	(__arm_vidupq_x_n_u32): Likewise.
+ 	(__arm_vddupq_x_n_u32): Likewise.
+ 	(__arm_vldrdq_gather_offset_s64): Likewise.
+ 	(__arm_vldrdq_gather_offset_u64): Likewise.
+ 	(__arm_vldrdq_gather_offset_z_s64): Likewise.
+ 	(__arm_vldrdq_gather_offset_z_u64): Likewise.
+ 	(__arm_vldrdq_gather_shifted_offset_s64): Likewise.
+ 	(__arm_vldrdq_gather_shifted_offset_u64): Likewise.
+ 	(__arm_vldrdq_gather_shifted_offset_z_s64): Likewise.
+ 	(__arm_vldrdq_gather_shifted_offset_z_u64): Likewise.
+ 	(__arm_vidupq_m_n_u8): Likewise.
+ 	(__arm_vidupq_m_n_u16): Likewise.
+ 	(__arm_vidupq_m_n_u32): Likewise.
+ 	(__arm_vddupq_m_n_u8): Likewise.
+ 	(__arm_vddupq_m_n_u16): Likewise.
+ 	(__arm_vddupq_m_n_u32): Likewise.
+ 	(__arm_vidupq_n_u16): Likewise.
+ 	(__arm_vidupq_n_u32): Likewise.
+ 	(__arm_vidupq_n_u8): Likewise.
+ 	(__arm_vddupq_n_u16): Likewise.
+ 	(__arm_vddupq_n_u32): Likewise.
+ 	(__arm_vddupq_n_u8): Likewise.
+ 
+ 2020-04-23  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* doc/install.texi (D-Specific Options): Document
+ 	--enable-libphobos-checking and --with-libphobos-druntime-only.
+ 
+ 2020-04-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94707
+ 	* config/rs6000/rs6000-call.c (rs6000_aggregate_candidate): Add
+ 	cxx17_empty_base_seen argument.  Pass it to recursive calls.
+ 	Ignore cxx17_empty_base_field_p fields after setting
+ 	*cxx17_empty_base_seen to true.
+ 	(rs6000_discover_homogeneous_aggregate): Adjust
+ 	rs6000_aggregate_candidate caller.  With -Wpsabi, diagnose homogeneous
+ 	aggregates with C++17 empty base fields.
+ 
+ 	PR c/94705
+ 	* attribs.c (decl_attribute): Don't diagnose attribute exclusions
+ 	if last_decl is error_mark_node or has such a TREE_TYPE.
+ 
+ 	PR c/94705
+ 	* attribs.c (decl_attribute): Don't diagnose attribute exclusions
+ 	if last_decl is error_mark_node or has such a TREE_TYPE.
+ 
+ 2020-04-22  Felix Yang  <felix.yang@huawei.com>
+ 
+ 	PR target/94678
+ 	* config/aarch64/aarch64.h (TARGET_SVE):
+ 	Add && !TARGET_GENERAL_REGS_ONLY.
+ 	(TARGET_SVE2): Add && TARGET_SVE.
+ 	(TARGET_SVE2_AES, TARGET_SVE2_BITPERM, TARGET_SVE2_SHA3,
+ 	TARGET_SVE2_SM4): Add && TARGET_SVE2.
+ 	* config/aarch64/aarch64-sve-builtins.h
+ 	(sve_switcher::m_old_general_regs_only): New member.
+ 	* config/aarch64/aarch64-sve-builtins.cc (check_required_registers):
+ 	New function.
+ 	(reported_missing_registers_p): New variable.
+ 	(check_required_extensions): Call check_required_registers before
+ 	return if all required extenstions are present.
+ 	(sve_switcher::sve_switcher): Save TARGET_GENERAL_REGS_ONLY in
+ 	m_old_general_regs_only and clear MASK_GENERAL_REGS_ONLY in
+ 	global_options.x_target_flags.
+ 	(sve_switcher::~sve_switcher): Set MASK_GENERAL_REGS_ONLY in
+ 	global_options.x_target_flags if m_old_general_regs_only is true.
+ 
+ 2020-04-22  Zackery Spytz  <zspytz@gmail.com>
+ 
+ 	* doc/extend.exi: Add "free" to list of other builtin functions
+ 	supported by GCC.
+ 
+ 2020-04-20  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	PR target/94622
+ 	* config/rs6000/sync.md (load_quadpti): Add attr "prefixed"
+ 	if TARGET_PREFIXED.
+ 	(store_quadpti): Ditto.
+ 	(atomic_load<mode>): Do not swap doublewords if TARGET_PREFIXED as
+ 	plq will be used and doesn't need it.
+ 	(atomic_store<mode>): Ditto, for pstq.
+ 
+ 2020-04-22  Erick Ochoa  <erick.ochoa@theobroma-systems.com>
+ 
+ 	* doc/invoke.texi: Update flags turned on by -O3.
+ 
+ 2020-04-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94706
+ 	* config/ia64/ia64.c (hfa_element_mode): Ignore
+ 	cxx17_empty_base_field_p fields.
+ 
+ 	PR target/94383
+ 	* calls.h (cxx17_empty_base_field_p): Declare.
+ 	* calls.c (cxx17_empty_base_field_p): Define.
+ 
+ 2020-04-22  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* doc/sourcebuild.texi (arm_softfp_ok, arm_hard_ok): Document.
+ 
+ 2020-04-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+             Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	* config/arm/arm.c (arm_file_start): Handle isa_bit_quirk_no_asmcpu.
+ 	* config/arm/arm-cpus.in (quirk_no_asmcpu): Define.
+ 	(ALL_QUIRKS): Add quirk_no_asmcpu.
+ 	(cortex-m55): Define new cpu.
+ 	* config/arm/arm-tables.opt: Regenerate.
+ 	* config/arm/arm-tune.md: Likewise.
+ 	* doc/invoke.texi (Arm Options): Document -mcpu=cortex-m55.
+ 
+ 2020-04-22  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/94700
+ 	* tree-ssa-forwprop.c (simplify_vector_constructor): When processing
+ 	an identity constructor, use a VIEW_CONVERT_EXPR to handle mixtures
+ 	of similarly-structured but distinct vector types.
+ 
+ 2020-04-21  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/94647
+ 	* gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Correct
+ 	the computation of the lower bound of the source access size.
+ 	(builtin_access::generic_overlap): Remove a hack for setting ranges
+ 	of overlap offsets.
+ 
+ 2020-04-21  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/som.h (ASM_WEAKEN_LABEL): Delete.
+ 	(ASM_WEAKEN_DECL): New define.
+ 	(HAVE_GAS_WEAKREF): Undefine.
+ 
+ 2020-04-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/94683
+ 	* tree-ssa-forwprop.c (simplify_vector_constructor): Use a
+ 	VIEW_CONVERT_EXPR to handle mixtures of similarly-structured
+ 	but distinct vector types.
+ 
+ 2020-04-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/94641
+ 	* stor-layout.c (place_field, finalize_record_size): Don't emit
+ 	-Wpadded warning on TYPE_ARTIFICIAL rli->t.
+ 	* ubsan.c (ubsan_get_type_descriptor_type,
+ 	ubsan_get_source_location_type, ubsan_create_data): Set
+ 	TYPE_ARTIFICIAL.
+ 	* asan.c (asan_global_struct): Likewise.
+ 
+ 2020-04-21  Duan bo  <duanbo3@huawei.com>
+ 
+ 	PR target/94577
+ 	* config/aarch64/aarch64.c: Add an error message for option conflict.
+ 	* doc/invoke.texi (-mcmodel=large): Mention that -mcmodel=large is
+ 	incompatible with -fpic, -fPIC and -mabi=ilp32.
+ 
+ 2020-04-21  Frederik Harwath  <frederik@codesourcery.com>
+ 
+ 	PR other/94629
+ 	* omp-low.c (new_omp_context): Remove assignments to
+ 	ctx->outer_reduction_clauses and ctx->local_reduction_clauses.
+ 
+ 2020-04-20  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/vector.md ("popcountv8hi2_vx", "popcountv4si2_vx")
+ 	("popcountv2di2_vx"): Use simplify_gen_subreg.
+ 
+ 2020-04-20  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	PR target/94613
+ 	* config/s390/s390-builtin-types.def: Add 3 new function modes.
+ 	* config/s390/s390-builtins.def: Add mode dependent low-level
+ 	builtin and map the overloaded builtins to these.
+ 	* config/s390/vx-builtins.md ("vec_selV_HW"): Rename to ...
+ 	("vsel<V_HW"): ... this and rewrite the pattern with bitops.
+ 
+ 2020-04-20  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vect-loop.c (vect_better_loop_vinfo_p): If old_loop_vinfo
+ 	has a variable VF, prefer new_loop_vinfo if it is cheaper for the
+ 	estimated VF and is no worse at double the estimated VF.
+ 
+ 2020-04-20  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/94668
+ 	* config/aarch64/aarch64.c (aarch64_sve_expand_vector_init): Fix
+ 	order of arguments to rtx_vector_builder.
+ 	(aarch64_sve_expand_vector_init_handle_trailing_constants): Likewise.
+ 	When extending the trailing constants to a full vector, replace any
+ 	variables with zeros.
+ 
+ 2020-04-20  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/94582
+ 	* tree-inline.c (optimize_inline_calls): Recompute calls_comdat_local
+ 	flag.
+ 
+ 2020-04-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	* symtab.c (symtab_node::dump_references): Add space after
+ 	one entry.
+ 	(symtab_node::dump_referring): Likewise.
+ 
+ 2020-04-18  Jeff Law  <law@redhat.com>
+ 
+ 	PR debug/94439
+ 	* regrename.c (check_new_reg_p): Ignore DEBUG_INSNs when walking
+ 	the chain.
+ 
+ 2020-04-18  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* doc/sourcebuild.texi (Effective-Target Keywords, Environment
+ 	attributes): Document d_runtime_has_std_library.
+ 
+ 2020-04-17  Jeff Law  <law@redhat.com>
+ 
+ 	PR rtl-optimization/90275
+ 	* cse.c (cse_insn): Avoid recording nop sets in multi-set parallels
+ 	when the destination has a REG_UNUSED note.
+ 
+ 2020-04-17  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR middle-end/94635
+ 	* gimplify.c (gimplify_scan_omp_clauses): Turn MAP_TO_PSET to
+ 	MAP_DELETE.
+ 
+ 2020-04-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_advsimd_ldp_stp_p): New function.
+ 	(aarch64_sve_adjust_stmt_cost): Add a vectype parameter.  Double the
+ 	cost of load and store insns if one loop iteration has enough scalar
+ 	elements to use an Advanced SIMD LDP or STP.
+ 	(aarch64_add_stmt_cost): Update call accordingly.
+ 
+ 2020-04-17  Jakub Jelinek  <jakub@redhat.com>
+ 	    Jeff Law  <law@redhat.com>
+ 
+ 	PR target/94567
+ 	* config/i386/i386.md (*testqi_ext_3): Use CCZmode rather than
+ 	CCNOmode in ix86_match_ccmode if len is equal to <MODE>mode precision,
+ 	or pos + len >= 32, or pos + len is equal to operands[2] precision
+ 	and operands[2] is not a register operand.  During splitting perform
+ 	SImode AND if operands[0] doesn't have CCZmode and pos + len is
+ 	equal to mode precision.
+ 
+ 2020-04-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR other/94629
+ 	* cgraphclones.c (cgraph_node::create_clone): Remove duplicate
+ 	initialization.
+ 	* dwarf2out.c (dw_val_equal_p): Fix pasto in
+ 	dw_val_class_vms_delta comparison.
+ 	* optabs.c (expand_binop_directly): Fix pasto in commutation
+ 	check.
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_pieces): Fix pasto in
+ 	initialization.
+ 
+ 2020-04-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/94618
+ 	* cfgrtl.c (delete_insn_and_edges): Set purge not just when
+ 	insn is the BB_END of its block, but also when it is only followed
+ 	by DEBUG_INSNs in its block.
+ 
+ 	PR tree-optimization/94621
+ 	* tree-inline.c (remap_type_1): Don't dereference NULL TYPE_DOMAIN.
+ 	Move id->adjust_array_error_bounds check first in the condition.
+ 
+ 2020-04-17  Martin Liska  <mliska@suse.cz>
+ 	    Jonathan Yong <10walls@gmail.com>
+ 
+ 	PR gcov-profile/94570
+ 	* coverage.c (coverage_init): Use separator properly.
+ 
+ 2020-04-16  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR rtl-optimization/93974
+ 	* config/rs6000/rs6000.c (TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P): Define.
+ 	(rs6000_cannot_substitute_mem_equiv_p): New function.
+ 
+ 2020-04-16  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/93621
+ 	* ipa-inline.h (ipa_saved_clone_sources): Declare.
+ 	* ipa-inline-transform.c (ipa_saved_clone_sources): New variable.
+ 	(save_inline_function_body): Link the new body holder with the
+ 	previous one.
+ 	* cgraph.c: Include ipa-inline.h.
+ 	(cgraph_edge::redirect_call_stmt_to_callee): Try to find the decl from
+ 	the statement in ipa_saved_clone_sources.
+ 	* cgraphunit.c: Include ipa-inline.h.
+ 	(expand_all_functions): Free ipa_saved_clone_sources.
+ 
+ 2020-04-16  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/94606
+ 	* config/aarch64/aarch64.c (aarch64_expand_sve_const_pred_eor): Take
+ 	the VNx16BI lowpart of the recursively-generated constant.
+ 
+ 2020-04-16  Martin Liska  <mliska@suse.cz>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/94314
+ 	* cgraphclones.c (set_new_clone_decl_and_node_flags): Drop
+ 	DECL_IS_REPLACEABLE_OPERATOR during cloning.
+ 	* tree-ssa-dce.c (valid_new_delete_pair_p): New function.
+ 	(propagate_necessity): Check operator names.
+ 
+ 2020-04-16  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/94605
+ 	* early-remat.c (early_remat::process_block): Handle insns that
+ 	set multiple candidate registers.
+ 2020-04-16  Jan Hubicka  <hubicka@ucw.cz>
+ 	
+ 	PR gcov-profile/93401
+ 	* common.opt (profile-prefix-path): New option.
+ 	* coverae.c: Include diagnostics.h.
+ 	(coverage_init): Strip profile prefix path.
+ 	* doc/invoke.texi (-fprofile-prefix-path): Document.
+ 
+ 2020-04-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/94614
+ 	* expr.c (emit_move_multi_word): Do not generate code when
+ 	the destination part is undefined_operand_subword_p.
+ 	* lower-subreg.c (resolve_clobber): Look through a paradoxica
+ 	subreg.
+ 
+ 2020-04-16  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/94598
+ 	* tree-sra.c (verify_sra_access_forest): Fix verification of total
+ 	scalarization accesses under access to one-element arrays.
+ 
+ 2020-04-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR bootstrap/89494
+ 	* function.c (assign_parm_find_data_types): Add workaround for
+ 	BROKEN_VALUE_INITIALIZATION compilers.
+ 
+ 2020-04-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gdbhooks.py (TreePrinter): Print SSA_NAME_VERSION of SSA_NAME
+ 	nodes.
+ 
+ 2020-04-15  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/94603
+ 	* config/i386/i386-builtin.def (__builtin_ia32_movq128):
+ 	Require OPTION_MASK_ISA_SSE2.
+ 
+ 2020-04-15  Gustavo Romero  <gromero@linux.ibm.com>
+ 
+ 	PR bootstrap/89494
+ 	* dumpfile.c (selftest::temp_dump_context::temp_dump_context):
+ 	Don't construct a dump_context temporary to call static method.
+ 
+ 2020-04-15  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/aarch64/falkor-tag-collision-avoidance.c
+ 	(valid_src_p): Check for aarch64_address_info type before
+ 	accessing base field.
+ 
+ 2020-04-15  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/mve.md (mve_vec_duplicate<mode>): New pattern.
+ 	(V_sz_elem2): Remove unused mode attribute.
+ 
+ 2020-04-15  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 
+ 	* config/arm/arm.md (arm_movdi): Disallow for MVE.
+ 
+ 2020-04-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/94539
+ 	* tree-ssa-alias.c (same_type_for_tbaa): Defer to
+ 	alias_sets_conflict_p for pointers.
+ 
+ 2020-04-14  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	PR target/94584
+ 	* config/xtensa/xtensa.md (zero_extendhisi2, zero_extendqisi2)
+ 	(extendhisi2_internal): Add %v1 before the load instructions.
+ 
+ 2020-04-14  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	PR target/94542
+ 	* config/rs6000/rs6000.c (address_to_insn_form): Do not attempt to
+ 	use PC-relative addressing for TLS references.
+ 
+ 2020-04-14  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/94434
+ 	* ipa-sra.c: Include internal-fn.h.
+ 	(enum isra_scan_context): Update comment.
+ 	(scan_function): Treat calls to internal_functions like loads or stores.
+ 
+ 2020-04-14  Yang Yang <yangyang305@huawei.com>
+ 
+ 	PR tree-optimization/94574
+ 	* tree-ssa.c (non_rewritable_lvalue_p): Add size check when analyzing
+ 	whether a vector-insert is rewritable using a BIT_INSERT_EXPR.
+ 
+ 2020-04-14  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/94561
+ 	* config/i386/i386.c (ix86_get_ssemov): Remove mode size check.
+ 
+ 2020-04-13  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* doc/extend.texi (-Wall): Mention -Wformat-overflow and
+ 	-Wformat-truncation.  Move -Wzero-length-bounds last.
+ 	(-Wrestrict): Document positive form of option enabled by -Wall.
+ 
+ 2020-04-13 Zachary Spytz  <zspytz@gmail.com>
+ 
+ 	* doc/extend.texi: Add realloc to list of built-in functions
+ 	are recognized by the compiler.
+ 
+ 2020-04-13  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/94556
+ 	* config/i386/i386.c (ix86_expand_epilogue): Restore the frame
+ 	pointer in word_mode for eh_return epilogues.
+ 
+ 2020-04-13  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.c (msp430_print_operand): Don't add offsets to
+ 	memory references in %B, %C and %D operand selectors when the inner
+ 	operand is a post increment address.
+ 
+ 2020-04-13  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.c (msp430_print_operand): Offset a %C memory
+ 	reference by 4 bytes, and %D memory reference by 6 bytes.
+ 
+ 2020-04-11  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/94494
+ 	* config/i386/sse.md (REDUC_SSE_SMINMAX_MODE): Use TARGET_SSE2
+ 	condition for V4SI, V8HI and V16QI modes.
+ 
+ 2020-04-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/94495
+ 	PR target/94551
+ 	* cselib.c (cselib_record_sp_cfa_base_equiv): Set PRESERVED_VALUE_P on
+ 	val->val_rtx.
+ 
+ 2020-04-10  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR middle-end/89433
+ 	PR middle-end/93465
+ 	* omp-general.c (oacc_verify_routine_clauses): Diagnose if
+ 	"#pragma omp declare target" has also been applied.
+ 
+ 2020-04-09  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	* config/msp430/msp430.c (msp430_expand_epilogue): Use emit_jump_insn
+ 	when to emit the epilogue_helper insn.
+ 	* config/msp430/msp430.md (epilogue_helper): Add a return insn to the
+ 	RTL pattern.
+ 
+ 2020-04-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/94495
+ 	* cselib.h (cselib_record_sp_cfa_base_equiv,
+ 	cselib_sp_derived_value_p): Declare.
+ 	* cselib.c (cselib_record_sp_cfa_base_equiv,
+ 	cselib_sp_derived_value_p): New functions.
+ 	* var-tracking.c (add_stores): Don't record MO_VAL_SET for
+ 	cselib_sp_derived_value_p values.
+ 	(vt_initialize): Call cselib_record_sp_cfa_base_equiv at the
+ 	start of extended basic blocks other than the first one
+ 	for !frame_pointer_needed functions.
+ 
+ 2020-04-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* doc/sourcebuild.texi (aarch64_sve_hw, aarch64_sve128_hw)
+ 	(aarch64_sve256_hw, aarch64_sve512_hw, aarch64_sve1024_hw)
+ 	(aarch64_sve2048_hw): Document.
+ 	* config/aarch64/aarch64-protos.h
+ 	(aarch64_sve::handle_arm_sve_vector_bits_attribute): Declare.
+ 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
+ 	__ARM_FEATURE_SVE_VECTOR_OPERATIONS when SVE is enabled.
+ 	* config/aarch64/aarch64-sve-builtins.cc (matches_type_p): New
+ 	function.
+ 	(find_type_suffix_for_scalar_type): Use it instead of comparing
+ 	TYPE_MAIN_VARIANTs.
+ 	(function_resolver::infer_vector_or_tuple_type): Likewise.
+ 	(function_resolver::require_vector_type): Likewise.
+ 	(handle_arm_sve_vector_bits_attribute): New function.
+ 	* config/aarch64/aarch64.c (pure_scalable_type_info): New class.
+ 	(aarch64_attribute_table): Add arm_sve_vector_bits.
+ 	(aarch64_return_in_memory_1):
+ 	(pure_scalable_type_info::piece::get_rtx): New function.
+ 	(pure_scalable_type_info::num_zr): Likewise.
+ 	(pure_scalable_type_info::num_pr): Likewise.
+ 	(pure_scalable_type_info::get_rtx): Likewise.
+ 	(pure_scalable_type_info::analyze): Likewise.
+ 	(pure_scalable_type_info::analyze_registers): Likewise.
+ 	(pure_scalable_type_info::analyze_array): Likewise.
+ 	(pure_scalable_type_info::analyze_record): Likewise.
+ 	(pure_scalable_type_info::add_piece): Likewise.
+ 	(aarch64_some_values_include_pst_objects_p): Likewise.
+ 	(aarch64_returns_value_in_sve_regs_p): Use pure_scalable_type_info
+ 	to analyze whether the type is returned in SVE registers.
+ 	(aarch64_takes_arguments_in_sve_regs_p): Likwise whether the type
+ 	is passed in SVE registers.
+ 	(aarch64_pass_by_reference_1): New function, extracted from...
+ 	(aarch64_pass_by_reference): ...here.  Use pure_scalable_type_info
+ 	to analyze whether the type is a pure scalable type and, if so,
+ 	whether it should be passed by reference.
+ 	(aarch64_return_in_msb): Return false for pure scalable types.
+ 	(aarch64_function_value_1): Fold back into...
+ 	(aarch64_function_value): ...this function.  Use
+ 	pure_scalable_type_info to analyze whether the type is a pure
+ 	scalable type and, if so, which registers it should use.  Handle
+ 	types that include pure scalable types but are not themselves
+ 	pure scalable types.
+ 	(aarch64_return_in_memory_1): New function, split out from...
+ 	(aarch64_return_in_memory): ...here.  Use pure_scalable_type_info
+ 	to analyze whether the type is a pure scalable type and, if so,
+ 	whether it should be returned by reference.
+ 	(aarch64_layout_arg): Remove orig_mode argument.  Use
+ 	pure_scalable_type_info to analyze whether the type is a pure
+ 	scalable type and, if so, which registers it should use.  Handle
+ 	types that include pure scalable types but are not themselves
+ 	pure scalable types.
+ 	(aarch64_function_arg): Update call accordingly.
+ 	(aarch64_function_arg_advance): Likewise.
+ 	(aarch64_pad_reg_upward): On big-endian targets, return false for
+ 	pure scalable types that are smaller than 16 bytes.
+ 	(aarch64_member_type_forces_blk): New function.
+ 	(aapcs_vfp_sub_candidate): Exit early for built-in SVE types.
+ 	(aarch64_short_vector_p): Return false for VECTOR_TYPEs that
+ 	correspond to built-in SVE types.  Do not rely on a vector mode
+ 	if the type includes an pure scalable type.  When returning true,
+ 	assert that the mode is not an SVE mode.
+ 	(aarch64_vfp_is_call_or_return_candidate): Do not check for SVE
+ 	built-in types here.  When returning true, assert that the type
+ 	does not have an SVE mode.
+ 	(aarch64_can_change_mode_class): Don't allow anything to change
+ 	between a predicate mode and a non-predicate mode.  Also don't
+ 	allow changes between SVE vector modes and other modes that
+ 	might be bigger than 128 bits.
+ 	(aarch64_invalid_binary_op): Reject binary operations that mix
+ 	SVE and GNU vector types.
+ 	(TARGET_MEMBER_TYPE_FORCES_BLK): Define.
+ 
+ 2020-04-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_attribute_table): Add
+ 	"SVE sizeless type".
+ 	* config/aarch64/aarch64-sve-builtins.cc (make_type_sizeless)
+ 	(sizeless_type_p): New functions.
+ 	(register_builtin_types): Apply make_type_sizeless to the type.
+ 	(register_tuple_type): Likewise.
+ 	(verify_type_context): Use sizeless_type_p instead of builin_type_p.
+ 
+ 2020-04-09  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 
+ 	* config/arm/arm_cde.h: Remove `extern "C"` when compiling for
+ 	C++.
+ 
+ 2020-04-09  Martin Jambor  <mjambor@suse.cz>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/94482
+ 	* tree-sra.c (create_access_replacement): Dump new replacement with
+ 	TDF_UID.
+ 	(sra_modify_expr): Fix handling of cases when the original EXPR writes
+ 	to only part of the replacement.
+ 	* tree-ssa-forwprop.c (pass_forwprop::execute): Properly verify
+ 	the first operand of combinations into REAL/IMAGPART_EXPR and
+ 	BIT_FIELD_REF.
+ 
+ 2020-04-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* doc/sourcebuild.texi (check-function-bodies): Treat the third
+ 	parameter as a list of option regexps and require each regexp
+ 	to match.
+ 
+ 2020-04-09  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	PR target/94530
+ 	* config/aarch64/falkor-tag-collision-avoidance.c
+ 	(valid_src_p): Fix missing rtx type check.
+ 
+ 2020-04-09  Bin Cheng  <bin.cheng@linux.alibaba.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93674
+ 	* tree-ssa-loop-ivopts.c (langhooks.h): New include.
+ 	(add_iv_candidate_for_use): For iv_use of non integer or pointer type,
+ 	or non-mode precision type, add candidate in unsigned type with the
+ 	same precision.
+ 
+ 2020-04-08  Clement Chigot  <clement.chigot@atos.net>
+ 
+ 	* config/rs6000/aix61.h (LIB_SPEC): Add -lc128 with -mlong-double-128.
+ 	* config/rs6000/aix71.h (LIB_SPEC): Likewise.
+ 	* config/rs6000/aix72.h (LIB_SPEC): Likewise.
+ 
+ 2020-04-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/94526
+ 	* cselib.c (autoinc_split): Handle e->val_rtx being SP_DERIVED_VALUE_P
+ 	with zero offset.
+ 	* reload1.c (eliminate_regs_1): Avoid creating
+ 	(plus (reg) (const_int 0)) in DEBUG_INSNs.
+ 
+ 	PR tree-optimization/94524
+ 	* tree-vect-generic.c (expand_vector_divmod): If any elt of op1 is
+ 	negative for signed TRUNC_MOD_EXPR, multiply with absolute value of
+ 	op1 rather than op1 itself at the end.  Punt for signed modulo by
+ 	most negative constant.
+ 	* tree-vect-patterns.c (vect_recog_divmod_pattern): Punt for signed
+ 	modulo by most negative constant.
+ 
+ 2020-04-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR rtl-optimization/93946
+ 	* cse.c (cse_insn): Record the tabled expression in
+ 	src_related.  Verify a redundant store removal is valid.
+ 
+ 2020-04-08  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/94417
+ 	* config/i386/i386-features.c (rest_of_insert_endbranch): Insert
+ 	ENDBR at function entry if function will be called indirectly.
+ 
+ 2020-04-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94438
+ 	* config/i386/i386.c (ix86_get_mask_mode): Only use int mask for elem_size
+ 	1, 2, 4 and 8.
+ 
+ 2020-04-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c++/94314
+ 	* gimple.c (gimple_call_operator_delete_p): Rename to...
+ 	(gimple_call_replaceable_operator_delete_p): ... this.
+ 	Use DECL_IS_REPLACEABLE_OPERATOR_DELETE_P.
+ 	* gimple.h (gimple_call_operator_delete_p): Rename to ...
+ 	(gimple_call_replaceable_operator_delete_p): ... this.
+ 	* tree-core.h (tree_function_decl): Add replaceable_operator
+ 	flag.
+ 	* tree-ssa-dce.c (mark_all_reaching_defs_necessary_1):
+ 	Use DECL_IS_REPLACEABLE_OPERATOR_DELETE_P.
+ 	(propagate_necessity): Use gimple_call_replaceable_operator_delete_p.
+ 	(eliminate_unnecessary_stmts): Likewise.
+ 	* tree-streamer-in.c (unpack_ts_function_decl_value_fields):
+ 	Pack DECL_IS_REPLACEABLE_OPERATOR.
+ 	* tree-streamer-out.c (pack_ts_function_decl_value_fields):
+ 	Unpack the field here.
+ 	* tree.h (DECL_IS_REPLACEABLE_OPERATOR): New.
+ 	(DECL_IS_REPLACEABLE_OPERATOR_NEW_P): New.
+ 	(DECL_IS_REPLACEABLE_OPERATOR_DELETE_P): New.
+ 	* cgraph.c (cgraph_node::dump): Dump if an operator is replaceable.
+ 	* ipa-icf.c (sem_item::compare_referenced_symbol_properties): Compare
+ 	replaceable operator flags.
+ 
+ 2020-04-08  Dennis Zhang  <dennis.zhang@arm.com>
+ 	    Matthew Malcomson  <matthew.malcomson@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (CX_IMM_QUALIFIERS): New macro.
+ 	(CX_UNARY_QUALIFIERS, CX_BINARY_QUALIFIERS): Likewise.
+ 	(CX_TERNARY_QUALIFIERS): Likewise.
+ 	(ARM_BUILTIN_CDE_PATTERN_START): Likewise.
+ 	(ARM_BUILTIN_CDE_PATTERN_END): Likewise.
+ 	(arm_init_acle_builtins): Initialize CDE builtins.
+ 	(arm_expand_acle_builtin): Check CDE constant operands.
+ 	* config/arm/arm.h (ARM_CDE_CONST_COPROC): New macro to set the range
+ 	of CDE constant operand.
+ 	* config/arm/arm.c (arm_hard_regno_mode_ok): Support DImode for
+ 	TARGET_VFP_BASE.
+ 	(ARM_VCDE_CONST_1, ARM_VCDE_CONST_2, ARM_VCDE_CONST_3): Likewise.
+ 	* config/arm/arm_cde.h (__arm_vcx1_u32): New macro of ACLE interface.
+ 	(__arm_vcx1a_u32, __arm_vcx2_u32, __arm_vcx2a_u32): Likewise.
+ 	(__arm_vcx3_u32, __arm_vcx3a_u32, __arm_vcx1d_u64): Likewise.
+ 	(__arm_vcx1da_u64, __arm_vcx2d_u64, __arm_vcx2da_u64): Likewise.
+ 	(__arm_vcx3d_u64, __arm_vcx3da_u64): Likewise.
+ 	* config/arm/arm_cde_builtins.def: New file.
+ 	* config/arm/iterators.md (V_reg): New attribute of SI.
+ 	* config/arm/predicates.md (const_int_coproc_operand): New.
+ 	(const_int_vcde1_operand, const_int_vcde2_operand): New.
+ 	(const_int_vcde3_operand): New.
+ 	* config/arm/unspecs.md (UNSPEC_VCDE, UNSPEC_VCDEA): New.
+ 	* config/arm/vfp.md (arm_vcx1<mode>): New entry.
+ 	(arm_vcx1a<mode>, arm_vcx2<mode>, arm_vcx2a<mode>): Likewise.
+ 	(arm_vcx3<mode>, arm_vcx3a<mode>): Likewise.
+ 
+ 2020-04-08  Dennis Zhang  <dennis.zhang@arm.com>
+ 
+ 	* config.gcc: Add arm_cde.h.
+ 	* config/arm/arm-c.c (arm_cpu_builtins): Define or undefine
+ 	__ARM_FEATURE_CDE and __ARM_FEATURE_CDE_COPROC.
+ 	* config/arm/arm-cpus.in (cdecp0, cdecp1, ..., cdecp7): New options.
+ 	* config/arm/arm.c (arm_option_reconfigure_globals): Configure
+ 	arm_arch_cde and arm_arch_cde_coproc to store the feature bits.
+ 	* config/arm/arm.h (TARGET_CDE): New macro.
+ 	* config/arm/arm_cde.h: New file.
+ 	* doc/invoke.texi: Document CDE options +cdecp[0-7].
+ 	* doc/sourcebuild.texi (arm_v8m_main_cde_ok): Document new target
+ 	supports option.
+ 	(arm_v8m_main_cde_fp, arm_v8_1m_main_cde_mve): Likewise.
+ 
+ 2020-04-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/94516
+ 	* postreload.c: Include rtl-iter.h.
+ 	(reload_cse_move2add): Handle SP autoinc here by FOR_EACH_SUBRTX_VAR
+ 	looking for all MEMs with RTX_AUTOINC operand.
+ 	(move2add_note_store): Remove {PRE,POST}_{INC,DEC} handling.
+ 
+ 2020-04-08  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* omp-grid.c (grid_eliminate_combined_simd_part): Use
+ 	OMP_CLAUSE_CODE to access the omp clause code.
+ 
+ 2020-04-07  Jeff Law  <law@redhat.com>
+ 
+ 	PR rtl-optimization/92264
+ 	* config/h8300/h8300.md (mov;add peephole2): Avoid applying when
+ 	the destination is the stack pointer.
+ 
+ 2020-04-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/94291
+ 	PR rtl-optimization/84169
+ 	* combine.c (try_combine): For split_i2i3, don't assume SET_DEST
+ 	must be a REG or SUBREG of REG; if it is not one of these, don't
+ 	update LOG_LINKs.
+ 
+ 2020-04-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/94479
+ 	* gimplify.c (gimplify_addr_expr): Also consider generated
+ 	MEM_REFs.
+ 
+ 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm_mve.h: Add C++ polymorphism and fix preserve MACROs.
+ 
+ 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm_mve.h: Cast some pointers to expected types.
+ 
+ 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm_mve.h: Replace all uses of vuninitializedq_* with the
+ 	same with '__arm_' prefix.
+ 
+ 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/mve.md (mve_vec_extract*): Allow memory operands in set.
+ 
+ 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm.c (arm_mve_immediate_check): Removed.
+ 	* config/arm/mve.md (MVE_pred2, MVE_constraint2): Added FP types.
+ 	(mve_vcvtq_n_to_f_*, mve_vcvtq_n_from_f_*, mve_vqshrnbq_n_*,
+ 	 mve_vqshrntq_n_*, mve_vqshrunbq_n_s*, mve_vqshruntq_n_s*,
+ 	 mve_vcvtq_m_n_from_f_*, mve_vcvtq_m_n_to_f_*, mve_vqshrnbq_m_n_*,
+ 	 mve_vqrshruntq_m_n_s*, mve_vqshrunbq_m_n_s*,
+ 	 mve_vqshruntq_m_n_s*): Fixed immediate constraints.
+ 
+ 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm.d (ashldi3): Don't use lsll for constant 32-bit shifts.
+ 
+ 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm_mve.h: Fix v[id]wdup intrinsics.
+ 	* config/arm/mve/md: Fix v[id]wdup patterns.
+ 
+ 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm.c (output_move_neon): Deal with label + offset cases.
+ 	* config/arm/mve.md (*mve_mov<mode>): Handle const vectors.
+ 
+ 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm_mve.h: Remove use of typeof for addr pointer parameters
+ 	and remove const_ptr enums.
+ 
+ 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vsubq_n): Merge with...
+ 	(vsubq): ... this.
+ 	(vmulq_n): Merge with...
+ 	(vmulq): ... this.
+ 	(__ARM_mve_typeid): Simplify scalar and constant detection.
+ 
+ 2020-04-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94509
+ 	* config/i386/i386-expand.c (expand_vec_perm_pshufb): Fix the check
+ 	for inter-lane permutation for 64-byte modes.
+ 
+ 	PR target/94488
+ 	* config/aarch64/aarch64-simd.md (ashl<mode>3, lshr<mode>3,
+ 	ashr<mode>3): Force operands[2] into reg whenever it is not CONST_INT.
+ 	Assume it is a REG after that instead of testing it and doing FAIL
+ 	otherwise.  Formatting fix.
+ 
+ 2020-04-07  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config/rs6000/t-rtems: Delete mcpu=8540 multilib.
+ 
+ 2020-04-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94500
+ 	* config/i386/i386-expand.c (emit_reduc_half): For V{64QI,32HI}mode
+ 	handle i < 64 using avx512bw_lshrv4ti3.  Formatting fixes.
+ 
+ 2020-04-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* cselib.c (cselib_subst_to_values): For SP_DERIVED_VALUE_P
+ 	+ const0_rtx return the SP_DERIVED_VALUE_P.
+ 
+ 2020-04-06  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/92989
+ 	* lra-lives.c (process_bb_lives): Do not treat eh_return data
+ 	registers as being live at the beginning of the EH receiver.
+ 
+ 2020-04-05 Zachary Spytz  <zspytz@gmail.com>
+ 
+ 	* extend.texi: Add free to list of ISO C90 functions that
+ 	are recognized by the compiler.
+ 
+ 2020-04-05 Nagaraju Mekala <nmekala@xilix.com>
+ 
+ 	* config/microblaze/microblaze.c (microblaze_must_save_register): Check
+ 	for fast_interrupt.
+  
+ 	* config/microblaze/microblaze.md (trap): Update output pattern.
+ 
+ 2020-04-04  Hannes Domani  <ssbssa@yahoo.de>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/94459
+ 	* dwarf2out.c (gen_subprogram_die): Look through references, pointers,
+ 	arrays, pointer-to-members, function types and qualifiers when
+ 	checking if in-class DIE had an 'auto' or 'decltype(auto)' return type
+ 	to emit type again on definition.
+ 
+ 2020-04-04  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/93940
+ 	* ipa-fnsummary.c (vrp_will_run_p): New function.
+ 	(fre_will_run_p): New function.
+ 	(evaluate_properties_for_edge): Use it.
+ 	* ipa-inline.c (can_inline_edge_by_limits_p): Do not inline
+ 	!optimize_debug to optimize_debug.
+ 
+ 2020-04-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/94468
+ 	* cselib.c (references_value_p): Formatting fix.
+ 	(cselib_useless_value_p): New function.
+ 	(discard_useless_locs, discard_useless_values,
+ 	cselib_invalidate_regno_val, cselib_invalidate_mem,
+ 	cselib_record_set): Use it instead of
+ 	v->locs == 0 && !PRESERVED_VALUE_P (v->val_rtx).
+ 
+ 	PR debug/94441
+ 	* tree-iterator.h (expr_single): Declare.
+ 	* tree-iterator.c (expr_single): New function.
+ 	* tree.h (protected_set_expr_location_if_unset): Declare.
+ 	* tree.c (protected_set_expr_location): Use expr_single.
+ 	(protected_set_expr_location_if_unset): New function.
+ 
+ 2020-04-03  Jeff Law  <law@redhat.com>
+ 
+ 	PR rtl-optimization/92264
+ 	* config/stormy16/stormy16.c (xstormy16_preferred_reload_class): Handle
+ 	reloading of auto-increment addressing modes.
+ 
+ 2020-04-03  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/94467
+ 	* config/i386/sse.md (ssse3_pshufbv8qi3): Mark scratch operand
+ 	as earlyclobber.
+ 
+ 2020-04-03  Jeff Law  <law@redhat.com>
+ 
+ 	PR rtl-optimization/92264
+ 	* config/m32r/m32r.c (m32r_output_block_move): Properly account for
+ 	post-increment addressing of source operands as well as residuals
+ 	when computing any adjustments to the input pointer.
+ 
+ 2020-04-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94460
+ 	* config/i386/sse.md (avx2_ph<plusminus_mnemonic>wv16hi3,
+ 	avx2_ph<plusminus_mnemonic>dv8si3): Fix up RTL pattern to do
+ 	second half of first lane from first lane of second operand and
+ 	first half of second lane from second lane of first operand.
+ 
+ 2020-04-03  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm_mve.h: Condition the header file on __ARM_FEATURE_MVE.
+ 
+ 2020-04-03  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/94396
+ 	* common/config/aarch64/aarch64-common.c
+ 	(aarch64_get_extension_string_for_isa_flags): Handle default flags.
+ 
+ 2020-04-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/94465
+ 	* tree.c (array_ref_low_bound): Deal with released SSA names
+ 	in index position.
+ 
+ 2020-04-03  Kwok Cheung Yeung  <kcy@codesourcery.com>
+ 
+ 	* config/gcn/gcn.c (print_operand): Handle unordered comparison
+ 	operators.
+ 	* config/gcn/predicates.md (gcn_fp_compare_operator): Add unordered
+ 	comparison operators.
+ 
+ 2020-04-03  Kewen Lin  <linkw@gcc.gnu.org>
+ 
+ 	PR tree-optimization/94443
+ 	* tree-vect-loop.c (vectorizable_live_operation): Use
+ 	gsi_insert_seq_before to replace gsi_insert_before.
+ 
+ 2020-04-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/94445
+ 	* ipa-icf-gimple.c (func_checker::compare_gimple_call):
+ 	  Compare type attributes for gimple_call_fntypes.
+ 
+ 2020-04-02  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* alias.c (get_alias_set): Fix comment typos.
+ 
+ 2020-04-02  Fritz Reese  <foreese@gcc.gnu.org>
+ 
+ 	PR fortran/85982
+ 	* fortran/decl.c (match_attr_spec): Lump COMP_STRUCTURE/COMP_MAP into
+ 	attribute checking used by TYPE.
+ 
+ 2020-04-02  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/92676
+ 	* ipa-sra.c (struct caller_issues): New fields candidate and
+ 	call_from_outside_comdat.
+ 	(check_for_caller_issues): Check for calls from outsied of
+ 	candidate's same_comdat_group.
+ 	(check_all_callers_for_issues): Set up issues.candidate, check result
+ 	of the new check.
+ 	(mark_callers_calls_comdat_local): New function.
+ 	(process_isra_node_results): Set calls_comdat_local of callers if
+ 	appropriate.
+ 
+ 2020-04-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c/94392
+ 	* common.opt (ffinite-loops): Initialize to zero.
+ 	* opts.c (default_options_table): Remove OPT_ffinite_loops
+ 	entry.
+ 	* cfgloop.h (loop::finite_p): New member.
+ 	* cfgloopmanip.c (copy_loop_info): Copy finite_p.
+ 	* ipa-icf-gimple.c (func_checker::compare_loops): Compare
+ 	finite_p.
+ 	* lto-streamer-in.c (input_cfg): Stream finite_p.
+ 	* lto-streamer-out.c (output_cfg): Likewise.
+ 	* tree-cfg.c (replace_loop_annotate): Initialize finite_p
+ 	from flag_finite_loops at CFG build time.
+ 	* tree-ssa-loop-niter.c (finite_loop_p): Check the loops
+ 	finite_p flag instead of flag_finite_loops.
+ 	* doc/invoke.texi (ffinite-loops): Adjust documentation of
+ 	default setting.
+ 
+ 2020-04-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/94450
+ 	* dwarf2out.c (dwarf2out_early_finish): Remove code emitting
+ 	DW_TAG_imported_unit.
+ 
+ 2020-04-02  Maciej W. Rozycki  <macro@wdc.com>
+ 
+ 	* doc/install.texi (Specific) <riscv32-*-elf, riscv32-*-linux>
+ 	<riscv64-*-elf, riscv64-*-linux>: Update binutils requirement to
+ 	2.30.
+ 
+ 2020-04-02  Kewen Lin  <linkw@gcc.gnu.org>
+ 
+ 	PR tree-optimization/94401
+ 	* tree-vect-loop.c (vectorizable_load): Handle VMAT_CONTIGUOUS_REVERSE
+ 	access type when loading halves of vector to avoid peeling for gaps.
+ 
+ 2020-04-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/mips/mti-linux.h (SYSROOT_SUFFIX_SPEC): Add a space in
+ 	between a string literal and MIPS_SYSVERSION_SPEC macro.
+ 
+ 2020-04-02  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* doc/invoke.texi (Optimize Options): Document sra-max-propagations.
+ 
+ 2020-04-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/92264
+ 	* params.opt (-param=max-find-base-term-values=): Decrease default
+ 	from 2000 to 200.
+ 
+ 	PR rtl-optimization/92264
+ 	* rtl.h (struct rtx_def): Mention that call bit is used as
+ 	SP_DERIVED_VALUE_P in cselib.c.
+ 	* cselib.c (SP_DERIVED_VALUE_P): Define.
+ 	(PRESERVED_VALUE_P, SP_BASED_VALUE_P): Move definitions earlier.
+ 	(cselib_hasher::equal): Handle equality between SP_DERIVED_VALUE_P
+ 	val_rtx and sp based expression where offsets cancel each other.
+ 	(preserve_constants_and_equivs): Formatting fix.
+ 	(cselib_reset_table): Add reverse op loc to SP_DERIVED_VALUE_P
+ 	locs list for cfa_base_preserved_val if needed.  Formatting fix.
+ 	(autoinc_split): If the to be returned value is a REG, MEM or
+ 	VALUE which has SP_DERIVED_VALUE_P + CONST_INT as one of its
+ 	locs, return the SP_DERIVED_VALUE_P VALUE and adjust *off.
+ 	(rtx_equal_for_cselib_1): Call autoinc_split even if both
+ 	expressions are PLUS in Pmode with CONST_INT second operands.
+ 	Handle SP_DERIVED_VALUE_P cases.
+ 	(cselib_hash_plus_const_int): New function.
+ 	(cselib_hash_rtx): Use it for PLUS in Pmode with CONST_INT
+ 	second operand, as well as for PRE_DEC etc. that ought to be
+ 	hashed the same way.
+ 	(cselib_subst_to_values): Substitute PLUS with Pmode and
+ 	CONST_INT operand if the first operand is a VALUE which has
+ 	SP_DERIVED_VALUE_P + CONST_INT as one of its locs for the
+ 	SP_DERIVED_VALUE_P + adjusted offset.
+ 	(cselib_lookup_1): When creating a new VALUE for stack_pointer_rtx,
+ 	set SP_DERIVED_VALUE_P on it.  Set PRESERVED_VALUE_P when adding
+ 	SP_DERIVED_VALUE_P PRESERVED_VALUE_P subseted VALUE location.
+ 	* var-tracking.c (vt_initialize): Call cselib_add_permanent_equiv
+ 	on the sp value before calling cselib_add_permanent_equiv on the
+ 	cfa_base value.
+ 	* dse.c (check_for_inc_dec_1, check_for_inc_dec): Punt on RTX_AUTOINC
+ 	in the insn without REG_INC note.
+ 	(replace_read): Punt on RTX_AUTOINC in the *loc being replaced.
+ 	Punt on invalid insns added by copy_to_mode_reg.  Formatting fixes.
+ 
+ 	PR target/94435
+ 	* config/aarch64/aarch64.c (aarch64_gen_compare_reg_maybe_ze): For
+ 	y_mode E_[QH]Imode and y being a CONST_INT, change y_mode to SImode.
+ 
+ 2020-04-02  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	PR target/94317
+ 	* config/arm/arm-builtins.c (LDRGBWBXU_QUALIFIERS): Define.
+ 	(LDRGBWBXU_Z_QUALIFIERS): Likewise.
+ 	* config/arm/arm_mve.h (__arm_vldrdq_gather_base_wb_s64): Modify
+ 	intrinsic defintion by adding a new builtin call to writeback into base
+ 	address.
+ 	(__arm_vldrdq_gather_base_wb_u64): Likewise.
+ 	(__arm_vldrdq_gather_base_wb_z_s64): Likewise.
+ 	(__arm_vldrdq_gather_base_wb_z_u64): Likewise.
+ 	(__arm_vldrwq_gather_base_wb_s32): Likewise.
+ 	(__arm_vldrwq_gather_base_wb_u32): Likewise.
+ 	(__arm_vldrwq_gather_base_wb_z_s32): Likewise.
+ 	(__arm_vldrwq_gather_base_wb_z_u32): Likewise.
+ 	(__arm_vldrwq_gather_base_wb_f32): Likewise.
+ 	(__arm_vldrwq_gather_base_wb_z_f32): Likewise.
+ 	* config/arm/arm_mve_builtins.def (vldrwq_gather_base_wb_z_u): Modify
+ 	builtin's qualifier.
+ 	(vldrdq_gather_base_wb_z_u): Likewise.
+ 	(vldrwq_gather_base_wb_u): Likewise.
+ 	(vldrdq_gather_base_wb_u): Likewise.
+ 	(vldrwq_gather_base_wb_z_s): Likewise.
+ 	(vldrwq_gather_base_wb_z_f): Likewise.
+ 	(vldrdq_gather_base_wb_z_s): Likewise.
+ 	(vldrwq_gather_base_wb_s): Likewise.
+ 	(vldrwq_gather_base_wb_f): Likewise.
+ 	(vldrdq_gather_base_wb_s): Likewise.
+ 	(vldrwq_gather_base_nowb_z_u): Define builtin.
+ 	(vldrdq_gather_base_nowb_z_u): Likewise.
+ 	(vldrwq_gather_base_nowb_u): Likewise.
+ 	(vldrdq_gather_base_nowb_u): Likewise.
+ 	(vldrwq_gather_base_nowb_z_s): Likewise.
+ 	(vldrwq_gather_base_nowb_z_f): Likewise.
+ 	(vldrdq_gather_base_nowb_z_s): Likewise.
+ 	(vldrwq_gather_base_nowb_s): Likewise.
+ 	(vldrwq_gather_base_nowb_f): Likewise.
+ 	(vldrdq_gather_base_nowb_s): Likewise.
+ 	* config/arm/mve.md (mve_vldrwq_gather_base_nowb_<supf>v4si): Define RTL
+ 	pattern.
+ 	(mve_vldrwq_gather_base_wb_<supf>v4si): Modify RTL pattern.
+ 	(mve_vldrwq_gather_base_nowb_z_<supf>v4si): Define RTL pattern.
+ 	(mve_vldrwq_gather_base_wb_z_<supf>v4si): Modify RTL pattern.
+ 	(mve_vldrwq_gather_base_wb_fv4sf): Modify RTL pattern.
+ 	(mve_vldrwq_gather_base_nowb_fv4sf): Define RTL pattern.
+ 	(mve_vldrwq_gather_base_wb_z_fv4sf): Modify RTL pattern.
+ 	(mve_vldrwq_gather_base_nowb_z_fv4sf): Define RTL pattern.
+ 	(mve_vldrdq_gather_base_nowb_<supf>v4di): Define RTL pattern.
+ 	(mve_vldrdq_gather_base_wb_<supf>v4di):  Modify RTL pattern.
+ 	(mve_vldrdq_gather_base_nowb_z_<supf>v4di): Define RTL pattern.
+ 	(mve_vldrdq_gather_base_wb_z_<supf>v4di):  Modify RTL pattern.
+ 
+ 2020-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/vector.md ("<ti*>add<mode>3", "mul<mode>3")
+ 	("and<mode>3", "notand<mode>3", "ior<mode>3", "ior_not<mode>3")
+ 	("xor<mode>3", "notxor<mode>3", "smin<mode>3", "smax<mode>3")
+ 	("umin<mode>3", "umax<mode>3", "vec_widen_smult_even_<mode>")
+ 	("vec_widen_umult_even_<mode>", "vec_widen_smult_odd_<mode>")
+ 	("vec_widen_umult_odd_<mode>", "add<mode>3", "sub<mode>3")
+ 	("mul<mode>3", "fma<mode>4", "fms<mode>4", "neg_fma<mode>4")
+ 	("neg_fms<mode>4", "*smax<mode>3_vxe", "*smaxv2df3_vx")
+ 	("*smin<mode>3_vxe", "*sminv2df3_vx"): Remove % constraint
+ 	modifier.
+ 	("vec_widen_umult_lo_<mode>", "vec_widen_umult_hi_<mode>")
+ 	("vec_widen_smult_lo_<mode>", "vec_widen_smult_hi_<mode>"):
+ 	Remove constraints from expander.
+ 	* config/s390/vx-builtins.md ("vacc<bhfgq>_<mode>", "vacq")
+ 	("vacccq", "vec_avg<mode>", "vec_avgu<mode>", "vec_vmal<mode>")
+ 	("vec_vmah<mode>", "vec_vmalh<mode>", "vec_vmae<mode>")
+ 	("vec_vmale<mode>", "vec_vmao<mode>", "vec_vmalo<mode>")
+ 	("vec_smulh<mode>", "vec_umulh<mode>", "vec_nor<mode>3")
+ 	("vfmin<mode>", "vfmax<mode>"): Remove % constraint modifier.
+ 
+ 2020-04-01  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR rtl-optimization/94123
+ 	* lower-subreg.c (pass_lower_subreg3::gate): Remove test for
+ 	flag_split_wide_types_early.
+ 
+ 2020-04-01  Joerg Sonnenberger  <joerg@bec.de>
+ 
+ 	* doc/extend.texi (Common Function Attributes): Fix typo.
+ 
+ 2020-04-01  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/94420
+ 	* config/rs6000/rs6000.md (*tocref<mode> for P): Add insn condition
+ 	on operands[1].
+ 
+ 2020-04-01  Zackery Spytz  <zspytz@gmail.com>
+ 
+ 	* doc/extend.texi: Fix a typo in the documentation of the
+ 	copy function attribute.
+ 
+ 2020-04-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/94423
+ 	* tree-object-size.c (pass_object_sizes::execute): Don't call
+ 	replace_uses_by for SSA_NAME_OCCURS_IN_ABNORMAL_PHI lhs, instead
+ 	call replace_call_with_value.
+ 
+ 2020-04-01  Kewen Lin  <linkw@gcc.gnu.org>
+ 
+ 	PR tree-optimization/94043
+ 	* tree-vect-loop.c (vectorizable_live_operation): Generate loop-closed
+ 	phi for vec_lhs and use it for lane extraction.
+ 
+ 2020-03-31  Felix Yang  <felix.yang@huawei.com>
+ 
+ 	PR tree-optimization/94398
+ 	* tree-vect-stmts.c (vectorizable_store): Instead of calling
+ 	vect_supportable_dr_alignment, set alignment_support_scheme to
+ 	dr_unaligned_supported for gather-scatter accesses.
+ 	(vectorizable_load): Likewise.
+ 
+ 2020-03-31  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (V_QI, V_HI, V_HF, V_SI, V_SF, V_DI, V_DF):
+ 	New mode iterators.
+ 	(vnsi, VnSI, vndi, VnDI): New mode attributes.
+ 	(mov<mode>): Use <VnDI> in place of V64DI.
+ 	(mov<mode>_exec): Likewise.
+ 	(mov<mode>_sgprbase): Likewise.
+ 	(reload_out<mode>): Likewise.
+ 	(*vec_set<mode>_1): Use GET_MODE_NUNITS instead of constant 64.
+ 	(gather_load<mode>v64si): Rename to ...
+ 	(gather_load<mode><vnsi>): ... this, and use <VnSI> in place of V64SI,
+ 	and <VnDI> in place of V64DI.
+ 	(gather<mode>_insn_1offset<exec>): Use <VnDI> in place of V64DI.
+ 	(gather<mode>_insn_1offset_ds<exec>): Use <VnSI> in place of V64SI.
+ 	(gather<mode>_insn_2offsets<exec>): Use <VnSI> and <VnDI>.
+ 	(scatter_store<mode>v64si): Rename to ...
+ 	(scatter_store<mode><vnsi>): ... this, and use <VnSI> and <VnDI>.
+ 	(scatter<mode>_expr<exec_scatter>): Use <VnSI> and <VnDI>.
+ 	(scatter<mode>_insn_1offset<exec_scatter>): Likewise.
+ 	(scatter<mode>_insn_1offset_ds<exec_scatter>): Likewise.
+ 	(scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
+ 	(ds_bpermute<mode>): Use <VnSI>.
+ 	(addv64si3_vcc<exec_vcc>): Rename to ...
+ 	(add<mode>3_vcc<exec_vcc>): ... this, and use V_SI.
+ 	(addv64si3_vcc_dup<exec_vcc>): Rename to ...
+ 	(add<mode>3_vcc_dup<exec_vcc>): ... this, and use V_SI.
+ 	(addcv64si3<exec_vcc>): Rename to ...
+ 	(addc<mode>3<exec_vcc>): ... this, and use V_SI.
+ 	(subv64si3_vcc<exec_vcc>): Rename to ...
+ 	(sub<mode>3_vcc<exec_vcc>): ... this, and use V_SI.
+ 	(subcv64si3<exec_vcc>): Rename to ...
+ 	(subc<mode>3<exec_vcc>): ... this, and use V_SI.
+ 	(addv64di3): Rename to ...
+ 	(add<mode>3): ... this, and use V_DI.
+ 	(addv64di3_exec): Rename to ...
+ 	(add<mode>3_exec): ... this, and use V_DI.
+ 	(subv64di3): Rename to ...
+ 	(sub<mode>3): ... this, and use V_DI.
+ 	(subv64di3_exec): Rename to ...
+ 	(sub<mode>3_exec): ... this, and use V_DI.
+ 	(addv64di3_zext): Rename to ...
+ 	(add<mode>3_zext): ... this, and use V_DI and <VnSI>.
+ 	(addv64di3_zext_exec): Rename to ...
+ 	(add<mode>3_zext_exec): ... this, and use V_DI and <VnSI>.
+ 	(addv64di3_zext_dup): Rename to ...
+ 	(add<mode>3_zext_dup): ... this, and use V_DI and <VnSI>.
+ 	(addv64di3_zext_dup_exec): Rename to ...
+ 	(add<mode>3_zext_dup_exec): ... this, and use V_DI and <VnSI>.
+ 	(addv64di3_zext_dup2): Rename to ...
+ 	(add<mode>3_zext_dup2): ... this, and use V_DI and <VnSI>.
+ 	(addv64di3_zext_dup2_exec): Rename to ...
+ 	(add<mode>3_zext_dup2_exec): ... this, and use V_DI and <VnSI>.
+ 	(addv64di3_sext_dup2): Rename to ...
+ 	(add<mode>3_sext_dup2): ... this, and use V_DI and <VnSI>.
+ 	(addv64di3_sext_dup2_exec): Rename to ...
+ 	(add<mode>3_sext_dup2_exec): ... this, and use V_DI and <VnSI>.
+ 	(<su>mulv64si3_highpart<exec>): Rename to ...
+ 	(<su>mul<mode>3_highpart<exec>): ... this and use V_SI and <VnDI>.
+ 	(mulv64di3): Rename to ...
+ 	(mul<mode>3): ... this, and use V_DI and <VnSI>.
+ 	(mulv64di3_exec): Rename to ...
+ 	(mul<mode>3_exec): ... this, and use V_DI and <VnSI>.
+ 	(mulv64di3_zext): Rename to ...
+ 	(mul<mode>3_zext): ... this, and use V_DI and <VnSI>.
+ 	(mulv64di3_zext_exec): Rename to ...
+ 	(mul<mode>3_zext_exec): ... this, and use V_DI and <VnSI>.
+ 	(mulv64di3_zext_dup2): Rename to ...
+ 	(mul<mode>3_zext_dup2): ... this, and use V_DI and <VnSI>.
+ 	(mulv64di3_zext_dup2_exec): Rename to ...
+ 	(mul<mode>3_zext_dup2_exec): ... this, and use V_DI and <VnSI>.
+ 	(<expander>v64di3): Rename to ...
+ 	(<expander><mode>3): ... this, and use V_DI and <VnSI>.
+ 	(<expander>v64di3_exec): Rename to ...
+ 	(<expander><mode>3_exec): ... this, and use V_DI and <VnSI>.
+ 	(<expander>v64si3<exec>): Rename to ...
+ 	(<expander><mode>3<exec>): ... this, and use V_SI and <VnSI>.
+ 	(v<expander>v64si3<exec>): Rename to ...
+ 	(v<expander><mode>3<exec>): ... this, and use V_SI and <VnSI>.
+ 	(<expander>v64si3<exec>): Rename to ...
+ 	(<expander><vnsi>3<exec>): ... this, and use V_SI.
+ 	(subv64df3<exec>): Rename to ...
+ 	(sub<mode>3<exec>): ... this, and use V_DF.
+ 	(truncv64di<mode>2): Rename to ...
+ 	(trunc<vndi><mode>2): ... this, and use <VnDI>.
+ 	(truncv64di<mode>2_exec): Rename to ...
+ 	(trunc<vndi><mode>2_exec): ... this, and use <VnDI>.
+ 	(<convop><mode>v64di2): Rename to ...
+ 	(<convop><mode><vndi>2): ... this, and use <VnDI>.
+ 	(<convop><mode>v64di2_exec): Rename to ...
+ 	(<convop><mode><vndi>2_exec): ... this, and use <VnDI>.
+ 	(vec_cmp<u>v64qidi): Rename to ...
+ 	(vec_cmp<u><mode>di): ... this, and use <VnSI>.
+ 	(vec_cmp<u>v64qidi_exec): Rename to ...
+ 	(vec_cmp<u><mode>di_exec): ... this, and use <VnSI>.
+ 	(vcond_mask_<mode>di): Use <VnDI>.
+ 	(maskload<mode>di): Likewise.
+ 	(maskstore<mode>di): Likewise.
+ 	(mask_gather_load<mode>v64si): Rename to ...
+ 	(mask_gather_load<mode><vnsi>): ... this, and use <VnSI> and <VnDI>.
+ 	(mask_scatter_store<mode>v64si): Rename to ...
+ 	(mask_scatter_store<mode><vnsi>): ... this, and use <VnSI> and <VnDI>.
+ 	(*<reduc_op>_dpp_shr_v64di): Rename to ...
+ 	(*<reduc_op>_dpp_shr_<mode>): ... this, and use V_DI and <VnSI>.
+ 	(*plus_carry_in_dpp_shr_v64si): Rename to ...
+ 	(*plus_carry_in_dpp_shr_<mode>): ... this, and use V_SI.
+ 	(*plus_carry_dpp_shr_v64di): Rename to ...
+ 	(*plus_carry_dpp_shr_<mode>): ... this, and use V_DI and <VnSI>.
+ 	(vec_seriesv64si): Rename to ...
+ 	(vec_series<mode>): ... this, and use V_SI.
+ 	(vec_seriesv64di): Rename to ...
+ 	(vec_series<mode>): ... this, and use V_DI.
+ 
+ 2020-03-31  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_print_operand): Use
+ 	HOST_WIDE_INT_PRINT_DEC macro.
+ 
+ 2020-03-31  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.h (ASM_FORMAT_PRIVATE_NAME): Fix it.
+ 
+ 2020-03-31  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vbicq): Define MVE intrinsic polymorphic
+ 	variant.
+ 	(__arm_vbicq): Likewise.
+ 
+ 2020-03-31  Vineet Gupta <vgupta@synopsys.com>
+ 
+ 	* config/arc/linux.h: GLIBC_DYNAMIC_LINKER support BE/arc700.
+ 
+ 2020-03-31  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vaddlvq): Move the polymorphic variant to the
+ 	common section of both MVE Integer and MVE Floating Point.
+ 	(vaddvq): Likewise.
+ 	(vaddlvq_p): Likewise.
+ 	(vaddvaq): Likewise.
+ 	(vaddvq_p): Likewise.
+ 	(vcmpcsq): Likewise.
+ 	(vmlsdavxq): Likewise.
+ 	(vmlsdavq): Likewise.
+ 	(vmladavxq): Likewise.
+ 	(vmladavq): Likewise.
+ 	(vminvq): Likewise.
+ 	(vminavq): Likewise.
+ 	(vmaxvq): Likewise.
+ 	(vmaxavq): Likewise.
+ 	(vmlaldavq): Likewise.
+ 	(vcmphiq): Likewise.
+ 	(vaddlvaq): Likewise.
+ 	(vrmlaldavhq): Likewise.
+ 	(vrmlaldavhxq): Likewise.
+ 	(vrmlsldavhq): Likewise.
+ 	(vrmlsldavhxq): Likewise.
+ 	(vmlsldavxq): Likewise.
+ 	(vmlsldavq): Likewise.
+ 	(vabavq): Likewise.
+ 	(vrmlaldavhaq): Likewise.
+ 	(vcmpgeq_m_n): Likewise.
+ 	(vmlsdavxq_p): Likewise.
+ 	(vmlsdavq_p): Likewise.
+ 	(vmlsdavaxq): Likewise.
+ 	(vmlsdavaq): Likewise.
+ 	(vaddvaq_p): Likewise.
+ 	(vcmpcsq_m_n): Likewise.
+ 	(vcmpcsq_m): Likewise.
+ 	(vmladavxq_p): Likewise.
+ 	(vmladavq_p): Likewise.
+ 	(vmladavaxq): Likewise.
+ 	(vmladavaq): Likewise.
+ 	(vminvq_p): Likewise.
+ 	(vminavq_p): Likewise.
+ 	(vmaxvq_p): Likewise.
+ 	(vmaxavq_p): Likewise.
+ 	(vcmphiq_m): Likewise.
+ 	(vaddlvaq_p): Likewise.
+ 	(vmlaldavaq): Likewise.
+ 	(vmlaldavaxq): Likewise.
+ 	(vmlaldavq_p): Likewise.
+ 	(vmlaldavxq_p): Likewise.
+ 	(vmlsldavaq): Likewise.
+ 	(vmlsldavaxq): Likewise.
+ 	(vmlsldavq_p): Likewise.
+ 	(vmlsldavxq_p): Likewise.
+ 	(vrmlaldavhaxq): Likewise.
+ 	(vrmlaldavhq_p): Likewise.
+ 	(vrmlaldavhxq_p): Likewise.
+ 	(vrmlsldavhaq): Likewise.
+ 	(vrmlsldavhaxq): Likewise.
+ 	(vrmlsldavhq_p): Likewise.
+ 	(vrmlsldavhxq_p): Likewise.
+ 	(vabavq_p): Likewise.
+ 	(vmladavaq_p): Likewise.
+ 	(vstrbq_scatter_offset): Likewise.
+ 	(vstrbq_p): Likewise.
+ 	(vstrbq_scatter_offset_p): Likewise.
+ 	(vstrdq_scatter_base_p): Likewise.
+ 	(vstrdq_scatter_base): Likewise.
+ 	(vstrdq_scatter_offset_p): Likewise.
+ 	(vstrdq_scatter_offset): Likewise.
+ 	(vstrdq_scatter_shifted_offset_p): Likewise.
+ 	(vstrdq_scatter_shifted_offset): Likewise.
+ 	(vmaxq_x): Likewise.
+ 	(vminq_x): Likewise.
+ 	(vmovlbq_x): Likewise.
+ 	(vmovltq_x): Likewise.
+ 	(vmulhq_x): Likewise.
+ 	(vmullbq_int_x): Likewise.
+ 	(vmullbq_poly_x): Likewise.
+ 	(vmulltq_int_x): Likewise.
+ 	(vmulltq_poly_x): Likewise.
+ 	(vstrbq): Likewise.
+ 
+ 2020-03-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94368
+ 	* config/aarch64/constraints.md (Uph): New constraint.
+ 	* config/aarch64/atomics.md (cas_short_expected_imm): New mode attr.
+ 	(@aarch64_compare_and_swap<mode>): Use it instead of n in operand 2's
+ 	constraint.
+ 
+ 2020-03-31  Marc Glisse  <marc.glisse@inria.fr>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/94412
+ 	* fold-const.c (fold_binary_loc) <case TRUNC_DIV_EXPR>: Use
+ 	ANY_INTEGRAL_TYPE_P instead of INTEGRAL_TYPE_P.
+ 
+ 2020-03-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/94403
+ 	* gimple-ssa-store-merging.c (verify_symbolic_number_p): Allow also
+ 	ENUMERAL_TYPE lhs_type.
+ 
+ 	PR rtl-optimization/94344
+ 	* tree-ssa-forwprop.c (simplify_rotate): Handle also same precision
+ 	conversions, either on both operands of |^+ or just one.  Handle
+ 	also extra same precision conversion on RSHIFT_EXPR first operand
+ 	provided RSHIFT_EXPR is performed in unsigned type.
+ 
+ 2020-03-30  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* lra.c (finish_insn_code_data_once): Set the array elements
+ 	to NULL after freeing them.
+ 
+ 2020-03-30  Andreas Schwab  <schwab@suse.de>
+ 
+ 	* config/host-linux.c (TRY_EMPTY_VM_SPACE) [__riscv && __LP64__]:
+ 	Define.
+ 
+ 2020-03-30  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-call.c altivec_init_builtins(): Remove code
+ 	to skip defining builtins based on builtin_mask.
+ 
+ 2020-03-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94343
+ 	* config/i386/sse.md (<mask_codefor>one_cmpl<mode>2<mask_name>): If
+ 	!TARGET_AVX512VL, use 512-bit vpternlog and make sure the input
+ 	operand is a register.  Don't enable masked variants for V*[QH]Imode.
+ 
+ 	PR target/93069
+ 	* config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Use
+ 	<store_mask_constraint> instead of m in output operand constraint.
+ 	(vec_extract_hi_<mode><mask_name>): Use <mask_operand2> instead of
+ 	%{%3%}.
+ 
+ 2020-03-30  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_call_aix): Emit cookie to pattern.
+ 	(rs6000_indirect_call_template_1): Adjust to suit.
+ 	* config/rs6000/rs6000.md (call_local): Merge call_local32,
+ 	call_local64, and call_local_aix.
+ 	(call_value_local): Simlarly.
+ 	(call_nonlocal_aix, call_value_nonlocal_aix): Adjust rtl to suit,
+ 	and disable pattern when CALL_LONG.
+ 	(call_indirect_aix, call_value_indirect_aix): Adjust rtl.
+ 	(call_indirect_elfv2, call_indirect_pcrel): Likewise.
+ 	(call_value_indirect_elfv2, call_value_indirect_pcrel): Likewise.
+ 
+ 2020-03-29  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR driver/94381
+ 	* doc/invoke.texi: Update -falign-functions, -falign-loops and
+ 	-falign-jumps documentation.
+ 
+ 2020-03-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/94363
+ 	* cgraphunit.c (process_function_and_variable_attributes): Remove
+ 	double 'attribute' words.
+ 
+ 2020-03-29  John David Anglin  <dave.anglin@bell.net>
+ 
+ 	* config/pa/pa.c (pa_asm_output_aligned_bss): Delete duplicate
+ 	.align output.
+ 
+ 2020-03-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/93573
+ 	* c-decl.c (grokdeclarator): After issuing errors, set size_int_const
+ 	to true after setting size to integer_one_node.
+ 
+ 	PR tree-optimization/94329
+ 	* tree-ssa-reassoc.c (reassociate_bb): When calling reassoc_remove_stmt
+ 	on the last stmt in a bb, make sure gsi_prev isn't done immediately
+ 	after gsi_last_bb.
+ 
+ 2020-03-27  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR target/94145
+ 	* config/rs6000/rs6000.c (rs6000_longcall_ref): Use unspec_volatile
+ 	for PLT16_LO and PLT_PCREL.
+ 	* config/rs6000/rs6000.md (UNSPEC_PLT16_LO, UNSPEC_PLT_PCREL): Remove.
+ 	(UNSPECV_PLT16_LO, UNSPECV_PLT_PCREL): Define.
+ 	(pltseq_plt16_lo_, pltseq_plt_pcrel): Use unspec_volatile.
+ 
+ 2020-03-27  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c++/94098
+ 	* calls.c (init_attr_rdwr_indices): Iterate over all access attributes.
+ 
+ 2020-03-27  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md:
+ 	(VEC_SUBDWORD_MODE): Rename to V_QIHI throughout.
+ 	(VEC_1REG_MODE): Delete.
+ 	(VEC_1REG_ALT): Delete.
+ 	(VEC_ALL1REG_MODE): Rename to V_1REG throughout.
+ 	(VEC_1REG_INT_MODE): Delete.
+ 	(VEC_ALL1REG_INT_MODE): Rename to V_INT_1REG throughout.
+ 	(VEC_ALL1REG_INT_ALT): Rename to V_INT_1REG_ALT throughout.
+ 	(VEC_2REG_MODE): Rename to V_2REG throughout.
+ 	(VEC_REG_MODE): Rename to V_noHI throughout.
+ 	(VEC_ALLREG_MODE): Rename to V_ALL throughout.
+ 	(VEC_ALLREG_ALT):  Rename to V_ALL_ALT throughout.
+ 	(VEC_ALLREG_INT_MODE): Rename to V_INT throughout.
+ 	(VEC_INT_MODE): Delete.
+ 	(VEC_FP_MODE): Rename to V_FP throughout and move to top.
+ 	(VEC_FP_1REG_MODE): Rename to V_FP_1REG throughout and move to top.
+ 	(FP_MODE): Delete and replace with FP throughout.
+ 	(FP_1REG_MODE): Delete and replace with FP_1REG throughout.
+ 	(VCMP_MODE): Rename to V_noQI throughout and move to top.
+ 	(VCMP_MODE_INT): Rename to V_INT_noQI throughout and move to top.
+ 	* config/gcn/gcn.md (FP): New mode iterator.
+ 	(FP_1REG): New mode iterator.
+ 
+ 2020-03-27  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/invoke.texi (-fdump-analyzer-supergraph): Document that this
+ 	now emits two .dot files.
+ 	* graphviz.cc (graphviz_out::begin_tr): Only emit a TR, not a TD.
+ 	(graphviz_out::end_tr): Only close a TR, not a TD.
+ 	(graphviz_out::begin_td): New.
+ 	(graphviz_out::end_td): New.
+ 	(graphviz_out::begin_trtd): New, replacing the old implementation
+ 	of graphviz_out::begin_tr.
+ 	(graphviz_out::end_tdtr): New, replacing the old implementation
+ 	of graphviz_out::end_tr.
+ 	* graphviz.h (graphviz_out::begin_td): New decl.
+ 	(graphviz_out::end_td): New decl.
+ 	(graphviz_out::begin_trtd): New decl.
+ 	(graphviz_out::end_tdtr): New decl.
+ 
+ 2020-03-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/94273
+ 	* dwarf2out.c (should_emit_struct_debug): Return false for
+ 	DINFO_LEVEL_TERSE.
+ 
+ 2020-03-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/94352
+ 	* tree-ssa-propagate.c (ssa_prop_init): Move seeding of the
+ 	worklist ...
+ 	(ssa_propagation_engine::ssa_propagate): ... here after
+ 	initializing curr_order.
+ 
+ 2020-03-27  Kewen Lin  <linkw@gcc.gnu.org>
+ 
+ 	PR tree-optimization/90332
+ 	* tree-vect-stmts.c (vector_vector_composition_type): New function.
+ 	(get_group_load_store_type): Adjust to call
+ 	vector_vector_composition_type, extend it to construct with scalar
+ 	types.
+ 	(vectorizable_load): Likewise.
+ 
+ 2020-03-27  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	* ddg.c (create_ddg_dep_from_intra_loop_link): Remove assertions.
+ 	(create_ddg_dep_no_link): Likewise.
+ 	(add_cross_iteration_register_deps): Move debug instruction check.
+ 	Other minor refactoring.
+ 	(add_intra_loop_mem_dep): Do not check for debug instructions.
+ 	(add_inter_loop_mem_dep): Likewise.
+ 	(build_intra_loop_deps): Likewise.
+ 	(create_ddg): Do not include debug insns into the graph.
+ 	* ddg.h (struct ddg): Remove num_debug field.
+ 	* modulo-sched.c (doloop_register_get): Adjust condition.
+ 	(res_MII): Remove DDG num_debug field usage.
+ 	(sms_schedule_by_order): Use assertion against debug insns.
+ 	(ps_has_conflicts): Drop debug insn check.
+ 
+ 2020-03-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/94323
+ 	* tree.c (protected_set_expr_location): Recurse on STATEMENT_LIST
+ 	that contains exactly one non-DEBUG_BEGIN_STMT statement.
+ 
+ 	PR debug/94281
+ 	* gimple.h (gimple_seq_first_nondebug_stmt): New function.
+ 	(gimple_seq_last_nondebug_stmt): Don't return NULL if seq contains
+ 	a single non-debug stmt followed by one or more debug stmts.
+ 	* gimplify.c (gimplify_body): Use gimple_seq_first_nondebug_stmt
+ 	instead of gimple_seq_first_stmt, use gimple_seq_first_nondebug_stmt
+ 	and gimple_seq_last_nondebug_stmt instead of gimple_seq_first and
+ 	gimple_seq_last to check if outer_stmt gbind could be reused and
+ 	if yes and it is surrounded by any debug stmts, move them into the
+ 	gbind body.
+ 
+ 	PR rtl-optimization/92264
+ 	* var-tracking.c (add_stores): Call cselib_set_value_sp_based even
+ 	for sp based values in !frame_pointer_needed
+ 	&& !ACCUMULATE_OUTGOING_ARGS functions.
+ 
+ 2020-03-26  Felix Yang  <felix.yang@huawei.com>
+ 
+ 	PR tree-optimization/94269
+ 	* tree-ssa-math-opts.c (convert_plusminus_to_widen): Restrict
+ 	this
+ 	operation to single basic block.
+ 
+ 2020-03-25  Jeff Law  <law@redhat.com>
+ 
+ 	PR rtl-optimization/90275
+ 	* config/sh/sh.md (mov_neg_si_t): Clobber the T register in the
+ 	pattern.
+ 
+ 2020-03-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94292
+ 	* config/arm/arm.c (arm_gen_dicompare_reg): Set mode of COMPARE to
+ 	mode rather than VOIDmode.
+ 
+ 2020-03-25  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/94004
+ 	* gimple-ssa-warn-alloca.c (pass_walloca::execute): Issue warnings
+ 	even for alloca calls resulting from system macro expansion.
+ 	Include inlining context in all warnings.
+ 
+ 2020-03-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/94254
+ 	* config/rs6000/rs6000.c (rs6000_can_change_mode_class): Allow
+ 	FPRs to change between SDmode and DDmode.
+ 
+ 2020-03-25  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/94131
+ 	* gimple-fold.c (get_range_strlen_tree): Fail for variable-length
+ 	types and decls.
+ 	* tree-ssa-strlen.c (get_range_strlen_dynamic): Avoid assuming
+ 	types have constant sizes.
+ 
+ 2020-03-25  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/94259
+ 	* configure.ac: Report error only when --with-zstd
+ 	is used.
+ 	* configure: Regenerate.
+ 
+ 2020-03-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94308
+ 	* config/i386/i386-features.c (ix86_add_reg_usage_to_vzeroupper): Set
+ 	INSN_CODE (insn) to -1 when changing the pattern.
+ 
+ 2020-03-25  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/93274
+ 	PR ipa/94271
+ 	* config/i386/i386-features.c (make_resolver_func): Drop
+ 	public flag for resolver.
+ 	* config/rs6000/rs6000.c (make_resolver_func): Add comdat
+ 	group for resolver and drop public flag if possible.
+ 	* multiple_target.c (create_dispatcher_calls): Drop unique_name
+ 	and resolution as we want to enable LTO privatization of the default
+ 	symbol.
+ 
+ 2020-03-25  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/94259
+ 	* configure.ac: Respect --without-zstd and report
+ 	error when we can't find header file with --with-zstd.
+ 	* configure: Regenerate.
+ 
+ 2020-03-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/94303
+ 	* varasm.c (output_constructor_array_range): If local->index
+ 	RANGE_EXPR doesn't start at the current location in the constructor,
+ 	skip needed number of bytes using assemble_zeros or assert we don't
+ 	go backwards.
+ 
+ 	PR c++/94223
+ 	* langhooks.c (lhd_set_decl_assembler_name): Use a static ulong
+ 	counter instead of DECL_UID.
+ 
+ 	PR tree-optimization/94300
+ 	* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): If pd.offset
+ 	is positive, make sure that off + size isn't larger than needed_len.
+ 
+ 2020-03-25  Richard Biener  <rguenther@suse.de>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/94283
+ 	* tree-if-conv.c (ifcvt_local_dce): Delete dead statements backwards.
+ 
+ 2020-03-24  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* doc/sourcebuild.texi (ARM-specific attributes): Add
+ 	arm_fp_dp_ok.
+ 	(Features for dg-add-options): Add arm_fp_dp.
+ 
+ 2020-03-24  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	PR lto/94249
+ 	* config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Define __BIG_ENDIAN__.
+ 
+ 2020-03-24  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR libgomp/81689
+ 	* omp-offload.c (omp_finish_file): Fix target-link handling if
+ 	targetm_common.have_named_sections is false.
+ 
+ 2020-03-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94286
+ 	* config/arm/arm.md (subvdi4, usubvsi4, usubvdi4): Use gen_int_mode
+ 	instead of GEN_INT.
+ 
+ 	PR debug/94285
+ 	* tree-ssa-loop-manip.c (create_iv): If after, set stmt location to
+ 	e->goto_locus even if gsi_bb (*incr_pos) contains only debug stmts.
+ 	If not after and at *incr_pos is a debug stmt, set stmt location to
+ 	location of next non-debug stmt after it if any.
+ 
+ 	PR debug/94283
+ 	* tree-if-conv.c (ifcvt_local_dce): For gimple debug stmts, just set
+ 	GF_PLF_2, but don't add them to worklist.  Don't add an assigment to
+ 	worklist or set GF_PLF_2 just because it is used in a debug stmt in
+ 	another bb.  Formatting improvements.
+ 
+ 	PR debug/94277
+ 	* cgraphunit.c (check_global_declaration): For DECL_EXTERNAL and
+ 	non-TREE_PUBLIC non-DECL_ARTIFICIAL FUNCTION_DECLs, set TREE_PUBLIC
+ 	regardless of whether TREE_NO_WARNING is set on it or whether
+ 	warn_unused_function is true or not.
+ 
+ 2020-03-23  Jeff Law  <law@redhat.com>
+ 
+ 	PR rtl-optimization/90275
+ 	PR target/94238
+ 	PR target/94144
+ 	* simplify-rtx.c (comparison_code_valid_for_mode): New function.
+ 	(simplify_logical_relational_operation): Use it.
+ 
+ 2020-03-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/91993
+ 	* tree.c (get_narrower): Handle COMPOUND_EXPR by recursing on
+ 	ultimate rhs and if returned something different, reconstructing
+ 	the COMPOUND_EXPRs.
+ 
+ 2020-03-23  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	* opts.c (print_filtered_help): Improve the help text for alias options.
+ 
+ 2020-03-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+             Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vshlcq_m_s8): Define macro.
+ 	(vshlcq_m_u8): Likewise.
+ 	(vshlcq_m_s16): Likewise.
+ 	(vshlcq_m_u16): Likewise.
+ 	(vshlcq_m_s32): Likewise.
+ 	(vshlcq_m_u32): Likewise.
+ 	(__arm_vshlcq_m_s8): Define intrinsic.
+ 	(__arm_vshlcq_m_u8): Likewise.
+ 	(__arm_vshlcq_m_s16): Likewise.
+ 	(__arm_vshlcq_m_u16): Likewise.
+ 	(__arm_vshlcq_m_s32): Likewise.
+ 	(__arm_vshlcq_m_u32): Likewise.
+ 	(vshlcq_m): Define polymorphic variant.
+ 	* config/arm/arm_mve_builtins.def (QUADOP_NONE_NONE_UNONE_IMM_UNONE):
+ 	Use builtin qualifier.
+ 	(QUADOP_UNONE_UNONE_UNONE_IMM_UNONE): Likewise.
+ 	* config/arm/mve.md (mve_vshlcq_m_vec_<supf><mode>): Define RTL pattern.
+ 	(mve_vshlcq_m_carry_<supf><mode>): Likewise.
+ 	(mve_vshlcq_m_<supf><mode>): Likewise.
+ 
+ 2020-03-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (LSLL_QUALIFIERS): Define builtin qualifier.
+ 	(UQSHL_QUALIFIERS): Likewise.
+ 	(ASRL_QUALIFIERS): Likewise.
+ 	(SQSHL_QUALIFIERS): Likewise.
+ 	* config/arm/arm_mve.h (__ARM_BIG_ENDIAN): Check to not support MVE in
+ 	Big-Endian Mode.
+ 	(sqrshr): Define macro.
+ 	(sqrshrl): Likewise.
+ 	(sqrshrl_sat48): Likewise.
+ 	(sqshl): Likewise.
+ 	(sqshll): Likewise.
+ 	(srshr): Likewise.
+ 	(srshrl): Likewise.
+ 	(uqrshl): Likewise.
+ 	(uqrshll): Likewise.
+ 	(uqrshll_sat48): Likewise.
+ 	(uqshl): Likewise.
+ 	(uqshll): Likewise.
+ 	(urshr): Likewise.
+ 	(urshrl): Likewise.
+ 	(lsll): Likewise.
+ 	(asrl): Likewise.
+ 	(__arm_lsll): Define intrinsic.
+ 	(__arm_asrl): Likewise.
+ 	(__arm_uqrshll): Likewise.
+ 	(__arm_uqrshll_sat48): Likewise.
+ 	(__arm_sqrshrl): Likewise.
+ 	(__arm_sqrshrl_sat48): Likewise.
+ 	(__arm_uqshll): Likewise.
+ 	(__arm_urshrl): Likewise.
+ 	(__arm_srshrl): Likewise.
+ 	(__arm_sqshll): Likewise.
+ 	(__arm_uqrshl): Likewise.
+ 	(__arm_sqrshr): Likewise.
+ 	(__arm_uqshl): Likewise.
+ 	(__arm_urshr): Likewise.
+ 	(__arm_sqshl): Likewise.
+ 	(__arm_srshr): Likewise.
+ 	* config/arm/arm_mve_builtins.def (LSLL_QUALIFIERS): Use builtin
+ 	qualifier.
+ 	(UQSHL_QUALIFIERS): Likewise.
+ 	(ASRL_QUALIFIERS): Likewise.
+ 	(SQSHL_QUALIFIERS): Likewise.
+ 	* config/arm/mve.md (mve_uqrshll_sat<supf>_di): Define RTL pattern.
+ 	(mve_sqrshrl_sat<supf>_di): Likewise.
+ 	(mve_uqrshl_si): Likewise.
+ 	(mve_sqrshr_si): Likewise.
+ 	(mve_uqshll_di): Likewise.
+ 	(mve_urshrl_di): Likewise.
+ 	(mve_uqshl_si): Likewise.
+ 	(mve_urshr_si): Likewise.
+ 	(mve_sqshl_si): Likewise.
+ 	(mve_srshr_si): Likewise.
+ 	(mve_srshrl_di): Likewise.
+ 	(mve_sqshll_di): Likewise.
+ 
+ 2020-03-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+             Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vsetq_lane_f16): Define macro.
+ 	(vsetq_lane_f32): Likewise.
+ 	(vsetq_lane_s16): Likewise.
+ 	(vsetq_lane_s32): Likewise.
+ 	(vsetq_lane_s8): Likewise.
+ 	(vsetq_lane_s64): Likewise.
+ 	(vsetq_lane_u8): Likewise.
+ 	(vsetq_lane_u16): Likewise.
+ 	(vsetq_lane_u32): Likewise.
+ 	(vsetq_lane_u64): Likewise.
+ 	(vgetq_lane_f16): Likewise.
+ 	(vgetq_lane_f32): Likewise.
+ 	(vgetq_lane_s16): Likewise.
+ 	(vgetq_lane_s32): Likewise.
+ 	(vgetq_lane_s8): Likewise.
+ 	(vgetq_lane_s64): Likewise.
+ 	(vgetq_lane_u8): Likewise.
+ 	(vgetq_lane_u16): Likewise.
+ 	(vgetq_lane_u32): Likewise.
+ 	(vgetq_lane_u64): Likewise.
+ 	(__ARM_NUM_LANES): Likewise.
+ 	(__ARM_LANEQ): Likewise.
+ 	(__ARM_CHECK_LANEQ): Likewise.
+ 	(__arm_vsetq_lane_s16): Define intrinsic.
+ 	(__arm_vsetq_lane_s32): Likewise.
+ 	(__arm_vsetq_lane_s8): Likewise.
+ 	(__arm_vsetq_lane_s64): Likewise.
+ 	(__arm_vsetq_lane_u8): Likewise.
+ 	(__arm_vsetq_lane_u16): Likewise.
+ 	(__arm_vsetq_lane_u32): Likewise.
+ 	(__arm_vsetq_lane_u64): Likewise.
+ 	(__arm_vgetq_lane_s16): Likewise.
+ 	(__arm_vgetq_lane_s32): Likewise.
+ 	(__arm_vgetq_lane_s8): Likewise.
+ 	(__arm_vgetq_lane_s64): Likewise.
+ 	(__arm_vgetq_lane_u8): Likewise.
+ 	(__arm_vgetq_lane_u16): Likewise.
+ 	(__arm_vgetq_lane_u32): Likewise.
+ 	(__arm_vgetq_lane_u64): Likewise.
+ 	(__arm_vsetq_lane_f16): Likewise.
+ 	(__arm_vsetq_lane_f32): Likewise.
+ 	(__arm_vgetq_lane_f16): Likewise.
+ 	(__arm_vgetq_lane_f32): Likewise.
+ 	(vgetq_lane): Define polymorphic variant.
+ 	(vsetq_lane): Likewise.
+ 	* config/arm/mve.md (mve_vec_extract<mode><V_elem_l>): Define RTL
+ 	pattern.
+ 	(mve_vec_extractv2didi): Likewise.
+ 	(mve_vec_extract_sext_internal<mode>): Likewise.
+ 	(mve_vec_extract_zext_internal<mode>): Likewise.
+ 	(mve_vec_set<mode>_internal): Likewise.
+ 	(mve_vec_setv2di_internal): Likewise.
+ 	* config/arm/neon.md (vec_set<mode>): Move RTL pattern to vec-common.md
+ 	file.
+ 	(vec_extract<mode><V_elem_l>): Rename to
+ 	"neon_vec_extract<mode><V_elem_l>".
+ 	(vec_extractv2didi): Rename to "neon_vec_extractv2didi".
+ 	* config/arm/vec-common.md (vec_extract<mode><V_elem_l>): Define RTL
+ 	pattern common for MVE and NEON.
+ 	(vec_set<mode>): Move RTL pattern from neon.md and modify to accept both
+ 	MVE and NEON.
+ 
+ 2020-03-23  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/mve.md (earlyclobber_32): New mode attribute.
+ 	(mve_vrev64q_*, mve_vcaddq*, mve_vhcaddq_*, mve_vcmulq_*,
+ 	 mve_vmull[bt]q_*, mve_vqdmull[bt]q_*): Add appropriate early clobbers.
+ 
+ 2020-03-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/94261
+ 	* tree-vect-slp.c (vect_get_and_check_slp_defs): Remove
+ 	IL operand swapping code.
+ 	(vect_slp_rearrange_stmts): Do not arrange isomorphic
+ 	nodes that would need operation code adjustments.
+ 
+ 2020-03-23  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* doc/install.texi (amdgcn-*-amdhsa): Renamed
+ 	from amdgcn-unknown-amdhsa; change
+ 	amdgcn-unknown-amdhsa to amdgcn-amdhsa.
+ 
+ 2020-03-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/94245
+ 	* ipa-prop.c (ipa_read_jump_function): Build the ADDR_EXRP
+ 	directly rather than also folding it via build_fold_addr_expr.
+ 
+ 2020-03-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/94266
+ 	* tree-ssa-forwprop.c (pass_forwprop::execute): Do not propagate
+ 	addresses of TARGET_MEM_REFs.
+ 
+ 2020-03-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/94250
+ 	* symtab.c (symtab_node::clone_references): Save speculative_id
+ 	as ref may be overwritten by create_reference.
+ 	(symtab_node::clone_referring): Likewise.
+ 	(symtab_node::clone_reference): Likewise.
+ 
+ 2020-03-22  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/i386/darwin.h (JUMP_TABLES_IN_TEXT_SECTION): Remove
+ 	references to Darwin.
+ 	* config/i386/i386.h (JUMP_TABLES_IN_TEXT_SECTION): Define this
+ 	unconditionally and comment on why.
+ 
+ 2020-03-21 Iain Sandoe <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (darwin_mergeable_constant_section): Collect
+ 	section anchor checks into the caller.
+ 	(machopic_select_section): Collect section anchor checks into
+ 	the determination of 'effective zero-size' objects. When the
+ 	size is unknown, assume it is non-zero, and thus return the
+ 	'generic' section for the DECL.
+ 
+ 2020-03-21 Iain Sandoe <iain@sandoe.co.uk>
+ 
+ 	PR target/93694
+ 	* config/darwin.opt: Amend options descriptions.
+ 
+ 2020-03-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/94052
+ 	* lra-constraints.c (simplify_operand_subreg): Reload the inner
+ 	register of a paradoxical subreg if simplify_subreg_regno fails
+ 	to give a valid hard register for the outer mode.
+ 
+ 2020-03-20  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/93435
+ 	* params.opt (sra-max-propagations): New parameter.
+ 	* tree-sra.c (propagation_budget): New variable.
+ 	(budget_for_propagation_access): New function.
+ 	(propagate_subaccesses_from_rhs): Use it.
+ 	(propagate_subaccesses_from_lhs): Likewise.
+ 	(propagate_all_subaccesses): Set up and destroy propagation_budget.
+ 
+ 2020-03-20  Carl Love  <cel@us.ibm.com>
+ 
+ 	PR/target 87583
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+ 	Add check for TARGET_FPRND for Power 7 or newer.
+ 
+ 2020-03-20  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/93347
+ 	* cgraph.c (symbol_table::create_edge): Update calls_comdat_local flag.
+ 	(cgraph_edge::redirect_callee): Move here; likewise.
+ 	(cgraph_node::remove_callees): Update calls_comdat_local flag.
+ 	(cgraph_node::verify_node): Verify that calls_comdat_local flag match
+ 	reality.
+ 	(cgraph_node::check_calls_comdat_local_p): New member function.
+ 	* cgraph.h (cgraph_node::check_calls_comdat_local_p): Declare.
+ 	(cgraph_edge::redirect_callee): Move offline.
+ 	* ipa-fnsummary.c (compute_fn_summary): Do not compute
+ 	calls_comdat_local flag here.
+ 	* ipa-inline-transform.c (inline_call): Fix updating of
+ 	calls_comdat_local flag.
+ 	* ipa-split.c (split_function): Use true instead of 1 to set the flag.
+ 	* symtab.c (symtab_node::add_to_same_comdat_group): Update
+ 	calls_comdat_local flag.
+ 
+ 2020-03-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_analyze_slp_instance): Dump SLP tree
+ 	from the possibly modified root.
+ 
+ 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+             Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vst1q_p_u8): Define macro.
+ 	(vst1q_p_s8): Likewise.
+ 	(vst2q_s8): Likewise.
+ 	(vst2q_u8): Likewise.
+ 	(vld1q_z_u8): Likewise.
+ 	(vld1q_z_s8): Likewise.
+ 	(vld2q_s8): Likewise.
+ 	(vld2q_u8): Likewise.
+ 	(vld4q_s8): Likewise.
+ 	(vld4q_u8): Likewise.
+ 	(vst1q_p_u16): Likewise.
+ 	(vst1q_p_s16): Likewise.
+ 	(vst2q_s16): Likewise.
+ 	(vst2q_u16): Likewise.
+ 	(vld1q_z_u16): Likewise.
+ 	(vld1q_z_s16): Likewise.
+ 	(vld2q_s16): Likewise.
+ 	(vld2q_u16): Likewise.
+ 	(vld4q_s16): Likewise.
+ 	(vld4q_u16): Likewise.
+ 	(vst1q_p_u32): Likewise.
+ 	(vst1q_p_s32): Likewise.
+ 	(vst2q_s32): Likewise.
+ 	(vst2q_u32): Likewise.
+ 	(vld1q_z_u32): Likewise.
+ 	(vld1q_z_s32): Likewise.
+ 	(vld2q_s32): Likewise.
+ 	(vld2q_u32): Likewise.
+ 	(vld4q_s32): Likewise.
+ 	(vld4q_u32): Likewise.
+ 	(vld4q_f16): Likewise.
+ 	(vld2q_f16): Likewise.
+ 	(vld1q_z_f16): Likewise.
+ 	(vst2q_f16): Likewise.
+ 	(vst1q_p_f16): Likewise.
+ 	(vld4q_f32): Likewise.
+ 	(vld2q_f32): Likewise.
+ 	(vld1q_z_f32): Likewise.
+ 	(vst2q_f32): Likewise.
+ 	(vst1q_p_f32): Likewise.
+ 	(__arm_vst1q_p_u8): Define intrinsic.
+ 	(__arm_vst1q_p_s8): Likewise.
+ 	(__arm_vst2q_s8): Likewise.
+ 	(__arm_vst2q_u8): Likewise.
+ 	(__arm_vld1q_z_u8): Likewise.
+ 	(__arm_vld1q_z_s8): Likewise.
+ 	(__arm_vld2q_s8): Likewise.
+ 	(__arm_vld2q_u8): Likewise.
+ 	(__arm_vld4q_s8): Likewise.
+ 	(__arm_vld4q_u8): Likewise.
+ 	(__arm_vst1q_p_u16): Likewise.
+ 	(__arm_vst1q_p_s16): Likewise.
+ 	(__arm_vst2q_s16): Likewise.
+ 	(__arm_vst2q_u16): Likewise.
+ 	(__arm_vld1q_z_u16): Likewise.
+ 	(__arm_vld1q_z_s16): Likewise.
+ 	(__arm_vld2q_s16): Likewise.
+ 	(__arm_vld2q_u16): Likewise.
+ 	(__arm_vld4q_s16): Likewise.
+ 	(__arm_vld4q_u16): Likewise.
+ 	(__arm_vst1q_p_u32): Likewise.
+ 	(__arm_vst1q_p_s32): Likewise.
+ 	(__arm_vst2q_s32): Likewise.
+ 	(__arm_vst2q_u32): Likewise.
+ 	(__arm_vld1q_z_u32): Likewise.
+ 	(__arm_vld1q_z_s32): Likewise.
+ 	(__arm_vld2q_s32): Likewise.
+ 	(__arm_vld2q_u32): Likewise.
+ 	(__arm_vld4q_s32): Likewise.
+ 	(__arm_vld4q_u32): Likewise.
+ 	(__arm_vld4q_f16): Likewise.
+ 	(__arm_vld2q_f16): Likewise.
+ 	(__arm_vld1q_z_f16): Likewise.
+ 	(__arm_vst2q_f16): Likewise.
+ 	(__arm_vst1q_p_f16): Likewise.
+ 	(__arm_vld4q_f32): Likewise.
+ 	(__arm_vld2q_f32): Likewise.
+ 	(__arm_vld1q_z_f32): Likewise.
+ 	(__arm_vst2q_f32): Likewise.
+ 	(__arm_vst1q_p_f32): Likewise.
+ 	(vld1q_z): Define polymorphic variant.
+ 	(vld2q): Likewise.
+ 	(vld4q): Likewise.
+ 	(vst1q_p): Likewise.
+ 	(vst2q): Likewise.
+ 	* config/arm/arm_mve_builtins.def (STORE1): Use builtin qualifier.
+ 	(LOAD1): Likewise.
+ 	* config/arm/mve.md (mve_vst2q<mode>): Define RTL pattern.
+ 	(mve_vld2q<mode>): Likewise.
+ 	(mve_vld4q<mode>): Likewise.
+ 
+ 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+             Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (ARM_BUILTIN_GET_FPSCR_NZCVQC): Define.
+ 	(ARM_BUILTIN_SET_FPSCR_NZCVQC): Likewise.	
+ 	(arm_init_mve_builtins): Add "__builtin_arm_get_fpscr_nzcvqc" and
+ 	"__builtin_arm_set_fpscr_nzcvqc" to arm_builtin_decls array. 
+ 	(arm_expand_builtin): Define case ARM_BUILTIN_GET_FPSCR_NZCVQC
+ 	and ARM_BUILTIN_SET_FPSCR_NZCVQC.
+ 	* config/arm/arm_mve.h (vadciq_s32): Define macro.
+ 	(vadciq_u32): Likewise.
+ 	(vadciq_m_s32): Likewise.
+ 	(vadciq_m_u32): Likewise.
+ 	(vadcq_s32): Likewise.
+ 	(vadcq_u32): Likewise.
+ 	(vadcq_m_s32): Likewise.
+ 	(vadcq_m_u32): Likewise.
+ 	(vsbciq_s32): Likewise.
+ 	(vsbciq_u32): Likewise.
+ 	(vsbciq_m_s32): Likewise.
+ 	(vsbciq_m_u32): Likewise.
+ 	(vsbcq_s32): Likewise.
+ 	(vsbcq_u32): Likewise.
+ 	(vsbcq_m_s32): Likewise.
+ 	(vsbcq_m_u32): Likewise.
+ 	(__arm_vadciq_s32): Define intrinsic.
+ 	(__arm_vadciq_u32): Likewise.
+ 	(__arm_vadciq_m_s32): Likewise.
+ 	(__arm_vadciq_m_u32): Likewise.
+ 	(__arm_vadcq_s32): Likewise.
+ 	(__arm_vadcq_u32): Likewise.
+ 	(__arm_vadcq_m_s32): Likewise.
+ 	(__arm_vadcq_m_u32): Likewise.
+ 	(__arm_vsbciq_s32): Likewise.
+ 	(__arm_vsbciq_u32): Likewise.
+ 	(__arm_vsbciq_m_s32): Likewise.
+ 	(__arm_vsbciq_m_u32): Likewise.
+ 	(__arm_vsbcq_s32): Likewise.
+ 	(__arm_vsbcq_u32): Likewise.
+ 	(__arm_vsbcq_m_s32): Likewise.
+ 	(__arm_vsbcq_m_u32): Likewise.
+ 	(vadciq_m): Define polymorphic variant.
+ 	(vadciq): Likewise.
+ 	(vadcq_m): Likewise.
+ 	(vadcq): Likewise.
+ 	(vsbciq_m): Likewise.
+ 	(vsbciq): Likewise.
+ 	(vsbcq_m): Likewise.
+ 	(vsbcq): Likewise.
+ 	* config/arm/arm_mve_builtins.def (BINOP_NONE_NONE_NONE): Use builtin
+ 	qualifier.
+ 	(BINOP_UNONE_UNONE_UNONE): Likewise.
+ 	(QUADOP_NONE_NONE_NONE_NONE_UNONE): Likewise.
+ 	(QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE): Likewise.
+ 	* config/arm/mve.md (VADCIQ): Define iterator.
+ 	(VADCIQ_M): Likewise.
+ 	(VSBCQ): Likewise.
+ 	(VSBCQ_M): Likewise.
+ 	(VSBCIQ): Likewise.
+ 	(VSBCIQ_M): Likewise.
+ 	(VADCQ): Likewise.
+ 	(VADCQ_M): Likewise.
+ 	(mve_vadciq_m_<supf>v4si): Define RTL pattern.
+ 	(mve_vadciq_<supf>v4si): Likewise.
+ 	(mve_vadcq_m_<supf>v4si): Likewise.
+ 	(mve_vadcq_<supf>v4si): Likewise.
+ 	(mve_vsbciq_m_<supf>v4si): Likewise.
+ 	(mve_vsbciq_<supf>v4si): Likewise.
+ 	(mve_vsbcq_m_<supf>v4si): Likewise.
+ 	(mve_vsbcq_<supf>v4si): Likewise.
+ 	(get_fpscr_nzcvqc): Define isns.
+ 	(set_fpscr_nzcvqc): Define isns.
+ 	* config/arm/unspecs.md (UNSPEC_GET_FPSCR_NZCVQC): Define.
+ 	(UNSPEC_SET_FPSCR_NZCVQC): Define.
+ 
+ 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vddupq_x_n_u8): Define macro.
+ 	(vddupq_x_n_u16): Likewise.
+ 	(vddupq_x_n_u32): Likewise.
+ 	(vddupq_x_wb_u8): Likewise.
+ 	(vddupq_x_wb_u16): Likewise.
+ 	(vddupq_x_wb_u32): Likewise.
+ 	(vdwdupq_x_n_u8): Likewise.
+ 	(vdwdupq_x_n_u16): Likewise.
+ 	(vdwdupq_x_n_u32): Likewise.
+ 	(vdwdupq_x_wb_u8): Likewise.
+ 	(vdwdupq_x_wb_u16): Likewise.
+ 	(vdwdupq_x_wb_u32): Likewise.
+ 	(vidupq_x_n_u8): Likewise.
+ 	(vidupq_x_n_u16): Likewise.
+ 	(vidupq_x_n_u32): Likewise.
+ 	(vidupq_x_wb_u8): Likewise.
+ 	(vidupq_x_wb_u16): Likewise.
+ 	(vidupq_x_wb_u32): Likewise.
+ 	(viwdupq_x_n_u8): Likewise.
+ 	(viwdupq_x_n_u16): Likewise.
+ 	(viwdupq_x_n_u32): Likewise.
+ 	(viwdupq_x_wb_u8): Likewise.
+ 	(viwdupq_x_wb_u16): Likewise.
+ 	(viwdupq_x_wb_u32): Likewise.
+ 	(vdupq_x_n_s8): Likewise.
+ 	(vdupq_x_n_s16): Likewise.
+ 	(vdupq_x_n_s32): Likewise.
+ 	(vdupq_x_n_u8): Likewise.
+ 	(vdupq_x_n_u16): Likewise.
+ 	(vdupq_x_n_u32): Likewise.
+ 	(vminq_x_s8): Likewise.
+ 	(vminq_x_s16): Likewise.
+ 	(vminq_x_s32): Likewise.
+ 	(vminq_x_u8): Likewise.
+ 	(vminq_x_u16): Likewise.
+ 	(vminq_x_u32): Likewise.
+ 	(vmaxq_x_s8): Likewise.
+ 	(vmaxq_x_s16): Likewise.
+ 	(vmaxq_x_s32): Likewise.
+ 	(vmaxq_x_u8): Likewise.
+ 	(vmaxq_x_u16): Likewise.
+ 	(vmaxq_x_u32): Likewise.
+ 	(vabdq_x_s8): Likewise.
+ 	(vabdq_x_s16): Likewise.
+ 	(vabdq_x_s32): Likewise.
+ 	(vabdq_x_u8): Likewise.
+ 	(vabdq_x_u16): Likewise.
+ 	(vabdq_x_u32): Likewise.
+ 	(vabsq_x_s8): Likewise.
+ 	(vabsq_x_s16): Likewise.
+ 	(vabsq_x_s32): Likewise.
+ 	(vaddq_x_s8): Likewise.
+ 	(vaddq_x_s16): Likewise.
+ 	(vaddq_x_s32): Likewise.
+ 	(vaddq_x_n_s8): Likewise.
+ 	(vaddq_x_n_s16): Likewise.
+ 	(vaddq_x_n_s32): Likewise.
+ 	(vaddq_x_u8): Likewise.
+ 	(vaddq_x_u16): Likewise.
+ 	(vaddq_x_u32): Likewise.
+ 	(vaddq_x_n_u8): Likewise.
+ 	(vaddq_x_n_u16): Likewise.
+ 	(vaddq_x_n_u32): Likewise.
+ 	(vclsq_x_s8): Likewise.
+ 	(vclsq_x_s16): Likewise.
+ 	(vclsq_x_s32): Likewise.
+ 	(vclzq_x_s8): Likewise.
+ 	(vclzq_x_s16): Likewise.
+ 	(vclzq_x_s32): Likewise.
+ 	(vclzq_x_u8): Likewise.
+ 	(vclzq_x_u16): Likewise.
+ 	(vclzq_x_u32): Likewise.
+ 	(vnegq_x_s8): Likewise.
+ 	(vnegq_x_s16): Likewise.
+ 	(vnegq_x_s32): Likewise.
+ 	(vmulhq_x_s8): Likewise.
+ 	(vmulhq_x_s16): Likewise.
+ 	(vmulhq_x_s32): Likewise.
+ 	(vmulhq_x_u8): Likewise.
+ 	(vmulhq_x_u16): Likewise.
+ 	(vmulhq_x_u32): Likewise.
+ 	(vmullbq_poly_x_p8): Likewise.
+ 	(vmullbq_poly_x_p16): Likewise.
+ 	(vmullbq_int_x_s8): Likewise.
+ 	(vmullbq_int_x_s16): Likewise.
+ 	(vmullbq_int_x_s32): Likewise.
+ 	(vmullbq_int_x_u8): Likewise.
+ 	(vmullbq_int_x_u16): Likewise.
+ 	(vmullbq_int_x_u32): Likewise.
+ 	(vmulltq_poly_x_p8): Likewise.
+ 	(vmulltq_poly_x_p16): Likewise.
+ 	(vmulltq_int_x_s8): Likewise.
+ 	(vmulltq_int_x_s16): Likewise.
+ 	(vmulltq_int_x_s32): Likewise.
+ 	(vmulltq_int_x_u8): Likewise.
+ 	(vmulltq_int_x_u16): Likewise.
+ 	(vmulltq_int_x_u32): Likewise.
+ 	(vmulq_x_s8): Likewise.
+ 	(vmulq_x_s16): Likewise.
+ 	(vmulq_x_s32): Likewise.
+ 	(vmulq_x_n_s8): Likewise.
+ 	(vmulq_x_n_s16): Likewise.
+ 	(vmulq_x_n_s32): Likewise.
+ 	(vmulq_x_u8): Likewise.
+ 	(vmulq_x_u16): Likewise.
+ 	(vmulq_x_u32): Likewise.
+ 	(vmulq_x_n_u8): Likewise.
+ 	(vmulq_x_n_u16): Likewise.
+ 	(vmulq_x_n_u32): Likewise.
+ 	(vsubq_x_s8): Likewise.
+ 	(vsubq_x_s16): Likewise.
+ 	(vsubq_x_s32): Likewise.
+ 	(vsubq_x_n_s8): Likewise.
+ 	(vsubq_x_n_s16): Likewise.
+ 	(vsubq_x_n_s32): Likewise.
+ 	(vsubq_x_u8): Likewise.
+ 	(vsubq_x_u16): Likewise.
+ 	(vsubq_x_u32): Likewise.
+ 	(vsubq_x_n_u8): Likewise.
+ 	(vsubq_x_n_u16): Likewise.
+ 	(vsubq_x_n_u32): Likewise.
+ 	(vcaddq_rot90_x_s8): Likewise.
+ 	(vcaddq_rot90_x_s16): Likewise.
+ 	(vcaddq_rot90_x_s32): Likewise.
+ 	(vcaddq_rot90_x_u8): Likewise.
+ 	(vcaddq_rot90_x_u16): Likewise.
+ 	(vcaddq_rot90_x_u32): Likewise.
+ 	(vcaddq_rot270_x_s8): Likewise.
+ 	(vcaddq_rot270_x_s16): Likewise.
+ 	(vcaddq_rot270_x_s32): Likewise.
+ 	(vcaddq_rot270_x_u8): Likewise.
+ 	(vcaddq_rot270_x_u16): Likewise.
+ 	(vcaddq_rot270_x_u32): Likewise.
+ 	(vhaddq_x_n_s8): Likewise.
+ 	(vhaddq_x_n_s16): Likewise.
+ 	(vhaddq_x_n_s32): Likewise.
+ 	(vhaddq_x_n_u8): Likewise.
+ 	(vhaddq_x_n_u16): Likewise.
+ 	(vhaddq_x_n_u32): Likewise.
+ 	(vhaddq_x_s8): Likewise.
+ 	(vhaddq_x_s16): Likewise.
+ 	(vhaddq_x_s32): Likewise.
+ 	(vhaddq_x_u8): Likewise.
+ 	(vhaddq_x_u16): Likewise.
+ 	(vhaddq_x_u32): Likewise.
+ 	(vhcaddq_rot90_x_s8): Likewise.
+ 	(vhcaddq_rot90_x_s16): Likewise.
+ 	(vhcaddq_rot90_x_s32): Likewise.
+ 	(vhcaddq_rot270_x_s8): Likewise.
+ 	(vhcaddq_rot270_x_s16): Likewise.
+ 	(vhcaddq_rot270_x_s32): Likewise.
+ 	(vhsubq_x_n_s8): Likewise.
+ 	(vhsubq_x_n_s16): Likewise.
+ 	(vhsubq_x_n_s32): Likewise.
+ 	(vhsubq_x_n_u8): Likewise.
+ 	(vhsubq_x_n_u16): Likewise.
+ 	(vhsubq_x_n_u32): Likewise.
+ 	(vhsubq_x_s8): Likewise.
+ 	(vhsubq_x_s16): Likewise.
+ 	(vhsubq_x_s32): Likewise.
+ 	(vhsubq_x_u8): Likewise.
+ 	(vhsubq_x_u16): Likewise.
+ 	(vhsubq_x_u32): Likewise.
+ 	(vrhaddq_x_s8): Likewise.
+ 	(vrhaddq_x_s16): Likewise.
+ 	(vrhaddq_x_s32): Likewise.
+ 	(vrhaddq_x_u8): Likewise.
+ 	(vrhaddq_x_u16): Likewise.
+ 	(vrhaddq_x_u32): Likewise.
+ 	(vrmulhq_x_s8): Likewise.
+ 	(vrmulhq_x_s16): Likewise.
+ 	(vrmulhq_x_s32): Likewise.
+ 	(vrmulhq_x_u8): Likewise.
+ 	(vrmulhq_x_u16): Likewise.
+ 	(vrmulhq_x_u32): Likewise.
+ 	(vandq_x_s8): Likewise.
+ 	(vandq_x_s16): Likewise.
+ 	(vandq_x_s32): Likewise.
+ 	(vandq_x_u8): Likewise.
+ 	(vandq_x_u16): Likewise.
+ 	(vandq_x_u32): Likewise.
+ 	(vbicq_x_s8): Likewise.
+ 	(vbicq_x_s16): Likewise.
+ 	(vbicq_x_s32): Likewise.
+ 	(vbicq_x_u8): Likewise.
+ 	(vbicq_x_u16): Likewise.
+ 	(vbicq_x_u32): Likewise.
+ 	(vbrsrq_x_n_s8): Likewise.
+ 	(vbrsrq_x_n_s16): Likewise.
+ 	(vbrsrq_x_n_s32): Likewise.
+ 	(vbrsrq_x_n_u8): Likewise.
+ 	(vbrsrq_x_n_u16): Likewise.
+ 	(vbrsrq_x_n_u32): Likewise.
+ 	(veorq_x_s8): Likewise.
+ 	(veorq_x_s16): Likewise.
+ 	(veorq_x_s32): Likewise.
+ 	(veorq_x_u8): Likewise.
+ 	(veorq_x_u16): Likewise.
+ 	(veorq_x_u32): Likewise.
+ 	(vmovlbq_x_s8): Likewise.
+ 	(vmovlbq_x_s16): Likewise.
+ 	(vmovlbq_x_u8): Likewise.
+ 	(vmovlbq_x_u16): Likewise.
+ 	(vmovltq_x_s8): Likewise.
+ 	(vmovltq_x_s16): Likewise.
+ 	(vmovltq_x_u8): Likewise.
+ 	(vmovltq_x_u16): Likewise.
+ 	(vmvnq_x_s8): Likewise.
+ 	(vmvnq_x_s16): Likewise.
+ 	(vmvnq_x_s32): Likewise.
+ 	(vmvnq_x_u8): Likewise.
+ 	(vmvnq_x_u16): Likewise.
+ 	(vmvnq_x_u32): Likewise.
+ 	(vmvnq_x_n_s16): Likewise.
+ 	(vmvnq_x_n_s32): Likewise.
+ 	(vmvnq_x_n_u16): Likewise.
+ 	(vmvnq_x_n_u32): Likewise.
+ 	(vornq_x_s8): Likewise.
+ 	(vornq_x_s16): Likewise.
+ 	(vornq_x_s32): Likewise.
+ 	(vornq_x_u8): Likewise.
+ 	(vornq_x_u16): Likewise.
+ 	(vornq_x_u32): Likewise.
+ 	(vorrq_x_s8): Likewise.
+ 	(vorrq_x_s16): Likewise.
+ 	(vorrq_x_s32): Likewise.
+ 	(vorrq_x_u8): Likewise.
+ 	(vorrq_x_u16): Likewise.
+ 	(vorrq_x_u32): Likewise.
+ 	(vrev16q_x_s8): Likewise.
+ 	(vrev16q_x_u8): Likewise.
+ 	(vrev32q_x_s8): Likewise.
+ 	(vrev32q_x_s16): Likewise.
+ 	(vrev32q_x_u8): Likewise.
+ 	(vrev32q_x_u16): Likewise.
+ 	(vrev64q_x_s8): Likewise.
+ 	(vrev64q_x_s16): Likewise.
+ 	(vrev64q_x_s32): Likewise.
+ 	(vrev64q_x_u8): Likewise.
+ 	(vrev64q_x_u16): Likewise.
+ 	(vrev64q_x_u32): Likewise.
+ 	(vrshlq_x_s8): Likewise.
+ 	(vrshlq_x_s16): Likewise.
+ 	(vrshlq_x_s32): Likewise.
+ 	(vrshlq_x_u8): Likewise.
+ 	(vrshlq_x_u16): Likewise.
+ 	(vrshlq_x_u32): Likewise.
+ 	(vshllbq_x_n_s8): Likewise.
+ 	(vshllbq_x_n_s16): Likewise.
+ 	(vshllbq_x_n_u8): Likewise.
+ 	(vshllbq_x_n_u16): Likewise.
+ 	(vshlltq_x_n_s8): Likewise.
+ 	(vshlltq_x_n_s16): Likewise.
+ 	(vshlltq_x_n_u8): Likewise.
+ 	(vshlltq_x_n_u16): Likewise.
+ 	(vshlq_x_s8): Likewise.
+ 	(vshlq_x_s16): Likewise.
+ 	(vshlq_x_s32): Likewise.
+ 	(vshlq_x_u8): Likewise.
+ 	(vshlq_x_u16): Likewise.
+ 	(vshlq_x_u32): Likewise.
+ 	(vshlq_x_n_s8): Likewise.
+ 	(vshlq_x_n_s16): Likewise.
+ 	(vshlq_x_n_s32): Likewise.
+ 	(vshlq_x_n_u8): Likewise.
+ 	(vshlq_x_n_u16): Likewise.
+ 	(vshlq_x_n_u32): Likewise.
+ 	(vrshrq_x_n_s8): Likewise.
+ 	(vrshrq_x_n_s16): Likewise.
+ 	(vrshrq_x_n_s32): Likewise.
+ 	(vrshrq_x_n_u8): Likewise.
+ 	(vrshrq_x_n_u16): Likewise.
+ 	(vrshrq_x_n_u32): Likewise.
+ 	(vshrq_x_n_s8): Likewise.
+ 	(vshrq_x_n_s16): Likewise.
+ 	(vshrq_x_n_s32): Likewise.
+ 	(vshrq_x_n_u8): Likewise.
+ 	(vshrq_x_n_u16): Likewise.
+ 	(vshrq_x_n_u32): Likewise.
+ 	(vdupq_x_n_f16): Likewise.
+ 	(vdupq_x_n_f32): Likewise.
+ 	(vminnmq_x_f16): Likewise.
+ 	(vminnmq_x_f32): Likewise.
+ 	(vmaxnmq_x_f16): Likewise.
+ 	(vmaxnmq_x_f32): Likewise.
+ 	(vabdq_x_f16): Likewise.
+ 	(vabdq_x_f32): Likewise.
+ 	(vabsq_x_f16): Likewise.
+ 	(vabsq_x_f32): Likewise.
+ 	(vaddq_x_f16): Likewise.
+ 	(vaddq_x_f32): Likewise.
+ 	(vaddq_x_n_f16): Likewise.
+ 	(vaddq_x_n_f32): Likewise.
+ 	(vnegq_x_f16): Likewise.
+ 	(vnegq_x_f32): Likewise.
+ 	(vmulq_x_f16): Likewise.
+ 	(vmulq_x_f32): Likewise.
+ 	(vmulq_x_n_f16): Likewise.
+ 	(vmulq_x_n_f32): Likewise.
+ 	(vsubq_x_f16): Likewise.
+ 	(vsubq_x_f32): Likewise.
+ 	(vsubq_x_n_f16): Likewise.
+ 	(vsubq_x_n_f32): Likewise.
+ 	(vcaddq_rot90_x_f16): Likewise.
+ 	(vcaddq_rot90_x_f32): Likewise.
+ 	(vcaddq_rot270_x_f16): Likewise.
+ 	(vcaddq_rot270_x_f32): Likewise.
+ 	(vcmulq_x_f16): Likewise.
+ 	(vcmulq_x_f32): Likewise.
+ 	(vcmulq_rot90_x_f16): Likewise.
+ 	(vcmulq_rot90_x_f32): Likewise.
+ 	(vcmulq_rot180_x_f16): Likewise.
+ 	(vcmulq_rot180_x_f32): Likewise.
+ 	(vcmulq_rot270_x_f16): Likewise.
+ 	(vcmulq_rot270_x_f32): Likewise.
+ 	(vcvtaq_x_s16_f16): Likewise.
+ 	(vcvtaq_x_s32_f32): Likewise.
+ 	(vcvtaq_x_u16_f16): Likewise.
+ 	(vcvtaq_x_u32_f32): Likewise.
+ 	(vcvtnq_x_s16_f16): Likewise.
+ 	(vcvtnq_x_s32_f32): Likewise.
+ 	(vcvtnq_x_u16_f16): Likewise.
+ 	(vcvtnq_x_u32_f32): Likewise.
+ 	(vcvtpq_x_s16_f16): Likewise.
+ 	(vcvtpq_x_s32_f32): Likewise.
+ 	(vcvtpq_x_u16_f16): Likewise.
+ 	(vcvtpq_x_u32_f32): Likewise.
+ 	(vcvtmq_x_s16_f16): Likewise.
+ 	(vcvtmq_x_s32_f32): Likewise.
+ 	(vcvtmq_x_u16_f16): Likewise.
+ 	(vcvtmq_x_u32_f32): Likewise.
+ 	(vcvtbq_x_f32_f16): Likewise.
+ 	(vcvttq_x_f32_f16): Likewise.
+ 	(vcvtq_x_f16_u16): Likewise.
+ 	(vcvtq_x_f16_s16): Likewise.
+ 	(vcvtq_x_f32_s32): Likewise.
+ 	(vcvtq_x_f32_u32): Likewise.
+ 	(vcvtq_x_n_f16_s16): Likewise.
+ 	(vcvtq_x_n_f16_u16): Likewise.
+ 	(vcvtq_x_n_f32_s32): Likewise.
+ 	(vcvtq_x_n_f32_u32): Likewise.
+ 	(vcvtq_x_s16_f16): Likewise.
+ 	(vcvtq_x_s32_f32): Likewise.
+ 	(vcvtq_x_u16_f16): Likewise.
+ 	(vcvtq_x_u32_f32): Likewise.
+ 	(vcvtq_x_n_s16_f16): Likewise.
+ 	(vcvtq_x_n_s32_f32): Likewise.
+ 	(vcvtq_x_n_u16_f16): Likewise.
+ 	(vcvtq_x_n_u32_f32): Likewise.
+ 	(vrndq_x_f16): Likewise.
+ 	(vrndq_x_f32): Likewise.
+ 	(vrndnq_x_f16): Likewise.
+ 	(vrndnq_x_f32): Likewise.
+ 	(vrndmq_x_f16): Likewise.
+ 	(vrndmq_x_f32): Likewise.
+ 	(vrndpq_x_f16): Likewise.
+ 	(vrndpq_x_f32): Likewise.
+ 	(vrndaq_x_f16): Likewise.
+ 	(vrndaq_x_f32): Likewise.
+ 	(vrndxq_x_f16): Likewise.
+ 	(vrndxq_x_f32): Likewise.
+ 	(vandq_x_f16): Likewise.
+ 	(vandq_x_f32): Likewise.
+ 	(vbicq_x_f16): Likewise.
+ 	(vbicq_x_f32): Likewise.
+ 	(vbrsrq_x_n_f16): Likewise.
+ 	(vbrsrq_x_n_f32): Likewise.
+ 	(veorq_x_f16): Likewise.
+ 	(veorq_x_f32): Likewise.
+ 	(vornq_x_f16): Likewise.
+ 	(vornq_x_f32): Likewise.
+ 	(vorrq_x_f16): Likewise.
+ 	(vorrq_x_f32): Likewise.
+ 	(vrev32q_x_f16): Likewise.
+ 	(vrev64q_x_f16): Likewise.
+ 	(vrev64q_x_f32): Likewise.
+ 	(__arm_vddupq_x_n_u8): Define intrinsic.
+ 	(__arm_vddupq_x_n_u16): Likewise.
+ 	(__arm_vddupq_x_n_u32): Likewise.
+ 	(__arm_vddupq_x_wb_u8): Likewise.
+ 	(__arm_vddupq_x_wb_u16): Likewise.
+ 	(__arm_vddupq_x_wb_u32): Likewise.
+ 	(__arm_vdwdupq_x_n_u8): Likewise.
+ 	(__arm_vdwdupq_x_n_u16): Likewise.
+ 	(__arm_vdwdupq_x_n_u32): Likewise.
+ 	(__arm_vdwdupq_x_wb_u8): Likewise.
+ 	(__arm_vdwdupq_x_wb_u16): Likewise.
+ 	(__arm_vdwdupq_x_wb_u32): Likewise.
+ 	(__arm_vidupq_x_n_u8): Likewise.
+ 	(__arm_vidupq_x_n_u16): Likewise.
+ 	(__arm_vidupq_x_n_u32): Likewise.
+ 	(__arm_vidupq_x_wb_u8): Likewise.
+ 	(__arm_vidupq_x_wb_u16): Likewise.
+ 	(__arm_vidupq_x_wb_u32): Likewise.
+ 	(__arm_viwdupq_x_n_u8): Likewise.
+ 	(__arm_viwdupq_x_n_u16): Likewise.
+ 	(__arm_viwdupq_x_n_u32): Likewise.
+ 	(__arm_viwdupq_x_wb_u8): Likewise.
+ 	(__arm_viwdupq_x_wb_u16): Likewise.
+ 	(__arm_viwdupq_x_wb_u32): Likewise.
+ 	(__arm_vdupq_x_n_s8): Likewise.
+ 	(__arm_vdupq_x_n_s16): Likewise.
+ 	(__arm_vdupq_x_n_s32): Likewise.
+ 	(__arm_vdupq_x_n_u8): Likewise.
+ 	(__arm_vdupq_x_n_u16): Likewise.
+ 	(__arm_vdupq_x_n_u32): Likewise.
+ 	(__arm_vminq_x_s8): Likewise.
+ 	(__arm_vminq_x_s16): Likewise.
+ 	(__arm_vminq_x_s32): Likewise.
+ 	(__arm_vminq_x_u8): Likewise.
+ 	(__arm_vminq_x_u16): Likewise.
+ 	(__arm_vminq_x_u32): Likewise.
+ 	(__arm_vmaxq_x_s8): Likewise.
+ 	(__arm_vmaxq_x_s16): Likewise.
+ 	(__arm_vmaxq_x_s32): Likewise.
+ 	(__arm_vmaxq_x_u8): Likewise.
+ 	(__arm_vmaxq_x_u16): Likewise.
+ 	(__arm_vmaxq_x_u32): Likewise.
+ 	(__arm_vabdq_x_s8): Likewise.
+ 	(__arm_vabdq_x_s16): Likewise.
+ 	(__arm_vabdq_x_s32): Likewise.
+ 	(__arm_vabdq_x_u8): Likewise.
+ 	(__arm_vabdq_x_u16): Likewise.
+ 	(__arm_vabdq_x_u32): Likewise.
+ 	(__arm_vabsq_x_s8): Likewise.
+ 	(__arm_vabsq_x_s16): Likewise.
+ 	(__arm_vabsq_x_s32): Likewise.
+ 	(__arm_vaddq_x_s8): Likewise.
+ 	(__arm_vaddq_x_s16): Likewise.
+ 	(__arm_vaddq_x_s32): Likewise.
+ 	(__arm_vaddq_x_n_s8): Likewise.
+ 	(__arm_vaddq_x_n_s16): Likewise.
+ 	(__arm_vaddq_x_n_s32): Likewise.
+ 	(__arm_vaddq_x_u8): Likewise.
+ 	(__arm_vaddq_x_u16): Likewise.
+ 	(__arm_vaddq_x_u32): Likewise.
+ 	(__arm_vaddq_x_n_u8): Likewise.
+ 	(__arm_vaddq_x_n_u16): Likewise.
+ 	(__arm_vaddq_x_n_u32): Likewise.
+ 	(__arm_vclsq_x_s8): Likewise.
+ 	(__arm_vclsq_x_s16): Likewise.
+ 	(__arm_vclsq_x_s32): Likewise.
+ 	(__arm_vclzq_x_s8): Likewise.
+ 	(__arm_vclzq_x_s16): Likewise.
+ 	(__arm_vclzq_x_s32): Likewise.
+ 	(__arm_vclzq_x_u8): Likewise.
+ 	(__arm_vclzq_x_u16): Likewise.
+ 	(__arm_vclzq_x_u32): Likewise.
+ 	(__arm_vnegq_x_s8): Likewise.
+ 	(__arm_vnegq_x_s16): Likewise.
+ 	(__arm_vnegq_x_s32): Likewise.
+ 	(__arm_vmulhq_x_s8): Likewise.
+ 	(__arm_vmulhq_x_s16): Likewise.
+ 	(__arm_vmulhq_x_s32): Likewise.
+ 	(__arm_vmulhq_x_u8): Likewise.
+ 	(__arm_vmulhq_x_u16): Likewise.
+ 	(__arm_vmulhq_x_u32): Likewise.
+ 	(__arm_vmullbq_poly_x_p8): Likewise.
+ 	(__arm_vmullbq_poly_x_p16): Likewise.
+ 	(__arm_vmullbq_int_x_s8): Likewise.
+ 	(__arm_vmullbq_int_x_s16): Likewise.
+ 	(__arm_vmullbq_int_x_s32): Likewise.
+ 	(__arm_vmullbq_int_x_u8): Likewise.
+ 	(__arm_vmullbq_int_x_u16): Likewise.
+ 	(__arm_vmullbq_int_x_u32): Likewise.
+ 	(__arm_vmulltq_poly_x_p8): Likewise.
+ 	(__arm_vmulltq_poly_x_p16): Likewise.
+ 	(__arm_vmulltq_int_x_s8): Likewise.
+ 	(__arm_vmulltq_int_x_s16): Likewise.
+ 	(__arm_vmulltq_int_x_s32): Likewise.
+ 	(__arm_vmulltq_int_x_u8): Likewise.
+ 	(__arm_vmulltq_int_x_u16): Likewise.
+ 	(__arm_vmulltq_int_x_u32): Likewise.
+ 	(__arm_vmulq_x_s8): Likewise.
+ 	(__arm_vmulq_x_s16): Likewise.
+ 	(__arm_vmulq_x_s32): Likewise.
+ 	(__arm_vmulq_x_n_s8): Likewise.
+ 	(__arm_vmulq_x_n_s16): Likewise.
+ 	(__arm_vmulq_x_n_s32): Likewise.
+ 	(__arm_vmulq_x_u8): Likewise.
+ 	(__arm_vmulq_x_u16): Likewise.
+ 	(__arm_vmulq_x_u32): Likewise.
+ 	(__arm_vmulq_x_n_u8): Likewise.
+ 	(__arm_vmulq_x_n_u16): Likewise.
+ 	(__arm_vmulq_x_n_u32): Likewise.
+ 	(__arm_vsubq_x_s8): Likewise.
+ 	(__arm_vsubq_x_s16): Likewise.
+ 	(__arm_vsubq_x_s32): Likewise.
+ 	(__arm_vsubq_x_n_s8): Likewise.
+ 	(__arm_vsubq_x_n_s16): Likewise.
+ 	(__arm_vsubq_x_n_s32): Likewise.
+ 	(__arm_vsubq_x_u8): Likewise.
+ 	(__arm_vsubq_x_u16): Likewise.
+ 	(__arm_vsubq_x_u32): Likewise.
+ 	(__arm_vsubq_x_n_u8): Likewise.
+ 	(__arm_vsubq_x_n_u16): Likewise.
+ 	(__arm_vsubq_x_n_u32): Likewise.
+ 	(__arm_vcaddq_rot90_x_s8): Likewise.
+ 	(__arm_vcaddq_rot90_x_s16): Likewise.
+ 	(__arm_vcaddq_rot90_x_s32): Likewise.
+ 	(__arm_vcaddq_rot90_x_u8): Likewise.
+ 	(__arm_vcaddq_rot90_x_u16): Likewise.
+ 	(__arm_vcaddq_rot90_x_u32): Likewise.
+ 	(__arm_vcaddq_rot270_x_s8): Likewise.
+ 	(__arm_vcaddq_rot270_x_s16): Likewise.
+ 	(__arm_vcaddq_rot270_x_s32): Likewise.
+ 	(__arm_vcaddq_rot270_x_u8): Likewise.
+ 	(__arm_vcaddq_rot270_x_u16): Likewise.
+ 	(__arm_vcaddq_rot270_x_u32): Likewise.
+ 	(__arm_vhaddq_x_n_s8): Likewise.
+ 	(__arm_vhaddq_x_n_s16): Likewise.
+ 	(__arm_vhaddq_x_n_s32): Likewise.
+ 	(__arm_vhaddq_x_n_u8): Likewise.
+ 	(__arm_vhaddq_x_n_u16): Likewise.
+ 	(__arm_vhaddq_x_n_u32): Likewise.
+ 	(__arm_vhaddq_x_s8): Likewise.
+ 	(__arm_vhaddq_x_s16): Likewise.
+ 	(__arm_vhaddq_x_s32): Likewise.
+ 	(__arm_vhaddq_x_u8): Likewise.
+ 	(__arm_vhaddq_x_u16): Likewise.
+ 	(__arm_vhaddq_x_u32): Likewise.
+ 	(__arm_vhcaddq_rot90_x_s8): Likewise.
+ 	(__arm_vhcaddq_rot90_x_s16): Likewise.
+ 	(__arm_vhcaddq_rot90_x_s32): Likewise.
+ 	(__arm_vhcaddq_rot270_x_s8): Likewise.
+ 	(__arm_vhcaddq_rot270_x_s16): Likewise.
+ 	(__arm_vhcaddq_rot270_x_s32): Likewise.
+ 	(__arm_vhsubq_x_n_s8): Likewise.
+ 	(__arm_vhsubq_x_n_s16): Likewise.
+ 	(__arm_vhsubq_x_n_s32): Likewise.
+ 	(__arm_vhsubq_x_n_u8): Likewise.
+ 	(__arm_vhsubq_x_n_u16): Likewise.
+ 	(__arm_vhsubq_x_n_u32): Likewise.
+ 	(__arm_vhsubq_x_s8): Likewise.
+ 	(__arm_vhsubq_x_s16): Likewise.
+ 	(__arm_vhsubq_x_s32): Likewise.
+ 	(__arm_vhsubq_x_u8): Likewise.
+ 	(__arm_vhsubq_x_u16): Likewise.
+ 	(__arm_vhsubq_x_u32): Likewise.
+ 	(__arm_vrhaddq_x_s8): Likewise.
+ 	(__arm_vrhaddq_x_s16): Likewise.
+ 	(__arm_vrhaddq_x_s32): Likewise.
+ 	(__arm_vrhaddq_x_u8): Likewise.
+ 	(__arm_vrhaddq_x_u16): Likewise.
+ 	(__arm_vrhaddq_x_u32): Likewise.
+ 	(__arm_vrmulhq_x_s8): Likewise.
+ 	(__arm_vrmulhq_x_s16): Likewise.
+ 	(__arm_vrmulhq_x_s32): Likewise.
+ 	(__arm_vrmulhq_x_u8): Likewise.
+ 	(__arm_vrmulhq_x_u16): Likewise.
+ 	(__arm_vrmulhq_x_u32): Likewise.
+ 	(__arm_vandq_x_s8): Likewise.
+ 	(__arm_vandq_x_s16): Likewise.
+ 	(__arm_vandq_x_s32): Likewise.
+ 	(__arm_vandq_x_u8): Likewise.
+ 	(__arm_vandq_x_u16): Likewise.
+ 	(__arm_vandq_x_u32): Likewise.
+ 	(__arm_vbicq_x_s8): Likewise.
+ 	(__arm_vbicq_x_s16): Likewise.
+ 	(__arm_vbicq_x_s32): Likewise.
+ 	(__arm_vbicq_x_u8): Likewise.
+ 	(__arm_vbicq_x_u16): Likewise.
+ 	(__arm_vbicq_x_u32): Likewise.
+ 	(__arm_vbrsrq_x_n_s8): Likewise.
+ 	(__arm_vbrsrq_x_n_s16): Likewise.
+ 	(__arm_vbrsrq_x_n_s32): Likewise.
+ 	(__arm_vbrsrq_x_n_u8): Likewise.
+ 	(__arm_vbrsrq_x_n_u16): Likewise.
+ 	(__arm_vbrsrq_x_n_u32): Likewise.
+ 	(__arm_veorq_x_s8): Likewise.
+ 	(__arm_veorq_x_s16): Likewise.
+ 	(__arm_veorq_x_s32): Likewise.
+ 	(__arm_veorq_x_u8): Likewise.
+ 	(__arm_veorq_x_u16): Likewise.
+ 	(__arm_veorq_x_u32): Likewise.
+ 	(__arm_vmovlbq_x_s8): Likewise.
+ 	(__arm_vmovlbq_x_s16): Likewise.
+ 	(__arm_vmovlbq_x_u8): Likewise.
+ 	(__arm_vmovlbq_x_u16): Likewise.
+ 	(__arm_vmovltq_x_s8): Likewise.
+ 	(__arm_vmovltq_x_s16): Likewise.
+ 	(__arm_vmovltq_x_u8): Likewise.
+ 	(__arm_vmovltq_x_u16): Likewise.
+ 	(__arm_vmvnq_x_s8): Likewise.
+ 	(__arm_vmvnq_x_s16): Likewise.
+ 	(__arm_vmvnq_x_s32): Likewise.
+ 	(__arm_vmvnq_x_u8): Likewise.
+ 	(__arm_vmvnq_x_u16): Likewise.
+ 	(__arm_vmvnq_x_u32): Likewise.
+ 	(__arm_vmvnq_x_n_s16): Likewise.
+ 	(__arm_vmvnq_x_n_s32): Likewise.
+ 	(__arm_vmvnq_x_n_u16): Likewise.
+ 	(__arm_vmvnq_x_n_u32): Likewise.
+ 	(__arm_vornq_x_s8): Likewise.
+ 	(__arm_vornq_x_s16): Likewise.
+ 	(__arm_vornq_x_s32): Likewise.
+ 	(__arm_vornq_x_u8): Likewise.
+ 	(__arm_vornq_x_u16): Likewise.
+ 	(__arm_vornq_x_u32): Likewise.
+ 	(__arm_vorrq_x_s8): Likewise.
+ 	(__arm_vorrq_x_s16): Likewise.
+ 	(__arm_vorrq_x_s32): Likewise.
+ 	(__arm_vorrq_x_u8): Likewise.
+ 	(__arm_vorrq_x_u16): Likewise.
+ 	(__arm_vorrq_x_u32): Likewise.
+ 	(__arm_vrev16q_x_s8): Likewise.
+ 	(__arm_vrev16q_x_u8): Likewise.
+ 	(__arm_vrev32q_x_s8): Likewise.
+ 	(__arm_vrev32q_x_s16): Likewise.
+ 	(__arm_vrev32q_x_u8): Likewise.
+ 	(__arm_vrev32q_x_u16): Likewise.
+ 	(__arm_vrev64q_x_s8): Likewise.
+ 	(__arm_vrev64q_x_s16): Likewise.
+ 	(__arm_vrev64q_x_s32): Likewise.
+ 	(__arm_vrev64q_x_u8): Likewise.
+ 	(__arm_vrev64q_x_u16): Likewise.
+ 	(__arm_vrev64q_x_u32): Likewise.
+ 	(__arm_vrshlq_x_s8): Likewise.
+ 	(__arm_vrshlq_x_s16): Likewise.
+ 	(__arm_vrshlq_x_s32): Likewise.
+ 	(__arm_vrshlq_x_u8): Likewise.
+ 	(__arm_vrshlq_x_u16): Likewise.
+ 	(__arm_vrshlq_x_u32): Likewise.
+ 	(__arm_vshllbq_x_n_s8): Likewise.
+ 	(__arm_vshllbq_x_n_s16): Likewise.
+ 	(__arm_vshllbq_x_n_u8): Likewise.
+ 	(__arm_vshllbq_x_n_u16): Likewise.
+ 	(__arm_vshlltq_x_n_s8): Likewise.
+ 	(__arm_vshlltq_x_n_s16): Likewise.
+ 	(__arm_vshlltq_x_n_u8): Likewise.
+ 	(__arm_vshlltq_x_n_u16): Likewise.
+ 	(__arm_vshlq_x_s8): Likewise.
+ 	(__arm_vshlq_x_s16): Likewise.
+ 	(__arm_vshlq_x_s32): Likewise.
+ 	(__arm_vshlq_x_u8): Likewise.
+ 	(__arm_vshlq_x_u16): Likewise.
+ 	(__arm_vshlq_x_u32): Likewise.
+ 	(__arm_vshlq_x_n_s8): Likewise.
+ 	(__arm_vshlq_x_n_s16): Likewise.
+ 	(__arm_vshlq_x_n_s32): Likewise.
+ 	(__arm_vshlq_x_n_u8): Likewise.
+ 	(__arm_vshlq_x_n_u16): Likewise.
+ 	(__arm_vshlq_x_n_u32): Likewise.
+ 	(__arm_vrshrq_x_n_s8): Likewise.
+ 	(__arm_vrshrq_x_n_s16): Likewise.
+ 	(__arm_vrshrq_x_n_s32): Likewise.
+ 	(__arm_vrshrq_x_n_u8): Likewise.
+ 	(__arm_vrshrq_x_n_u16): Likewise.
+ 	(__arm_vrshrq_x_n_u32): Likewise.
+ 	(__arm_vshrq_x_n_s8): Likewise.
+ 	(__arm_vshrq_x_n_s16): Likewise.
+ 	(__arm_vshrq_x_n_s32): Likewise.
+ 	(__arm_vshrq_x_n_u8): Likewise.
+ 	(__arm_vshrq_x_n_u16): Likewise.
+ 	(__arm_vshrq_x_n_u32): Likewise.
+ 	(__arm_vdupq_x_n_f16): Likewise.
+ 	(__arm_vdupq_x_n_f32): Likewise.
+ 	(__arm_vminnmq_x_f16): Likewise.
+ 	(__arm_vminnmq_x_f32): Likewise.
+ 	(__arm_vmaxnmq_x_f16): Likewise.
+ 	(__arm_vmaxnmq_x_f32): Likewise.
+ 	(__arm_vabdq_x_f16): Likewise.
+ 	(__arm_vabdq_x_f32): Likewise.
+ 	(__arm_vabsq_x_f16): Likewise.
+ 	(__arm_vabsq_x_f32): Likewise.
+ 	(__arm_vaddq_x_f16): Likewise.
+ 	(__arm_vaddq_x_f32): Likewise.
+ 	(__arm_vaddq_x_n_f16): Likewise.
+ 	(__arm_vaddq_x_n_f32): Likewise.
+ 	(__arm_vnegq_x_f16): Likewise.
+ 	(__arm_vnegq_x_f32): Likewise.
+ 	(__arm_vmulq_x_f16): Likewise.
+ 	(__arm_vmulq_x_f32): Likewise.
+ 	(__arm_vmulq_x_n_f16): Likewise.
+ 	(__arm_vmulq_x_n_f32): Likewise.
+ 	(__arm_vsubq_x_f16): Likewise.
+ 	(__arm_vsubq_x_f32): Likewise.
+ 	(__arm_vsubq_x_n_f16): Likewise.
+ 	(__arm_vsubq_x_n_f32): Likewise.
+ 	(__arm_vcaddq_rot90_x_f16): Likewise.
+ 	(__arm_vcaddq_rot90_x_f32): Likewise.
+ 	(__arm_vcaddq_rot270_x_f16): Likewise.
+ 	(__arm_vcaddq_rot270_x_f32): Likewise.
+ 	(__arm_vcmulq_x_f16): Likewise.
+ 	(__arm_vcmulq_x_f32): Likewise.
+ 	(__arm_vcmulq_rot90_x_f16): Likewise.
+ 	(__arm_vcmulq_rot90_x_f32): Likewise.
+ 	(__arm_vcmulq_rot180_x_f16): Likewise.
+ 	(__arm_vcmulq_rot180_x_f32): Likewise.
+ 	(__arm_vcmulq_rot270_x_f16): Likewise.
+ 	(__arm_vcmulq_rot270_x_f32): Likewise.
+ 	(__arm_vcvtaq_x_s16_f16): Likewise.
+ 	(__arm_vcvtaq_x_s32_f32): Likewise.
+ 	(__arm_vcvtaq_x_u16_f16): Likewise.
+ 	(__arm_vcvtaq_x_u32_f32): Likewise.
+ 	(__arm_vcvtnq_x_s16_f16): Likewise.
+ 	(__arm_vcvtnq_x_s32_f32): Likewise.
+ 	(__arm_vcvtnq_x_u16_f16): Likewise.
+ 	(__arm_vcvtnq_x_u32_f32): Likewise.
+ 	(__arm_vcvtpq_x_s16_f16): Likewise.
+ 	(__arm_vcvtpq_x_s32_f32): Likewise.
+ 	(__arm_vcvtpq_x_u16_f16): Likewise.
+ 	(__arm_vcvtpq_x_u32_f32): Likewise.
+ 	(__arm_vcvtmq_x_s16_f16): Likewise.
+ 	(__arm_vcvtmq_x_s32_f32): Likewise.
+ 	(__arm_vcvtmq_x_u16_f16): Likewise.
+ 	(__arm_vcvtmq_x_u32_f32): Likewise.
+ 	(__arm_vcvtbq_x_f32_f16): Likewise.
+ 	(__arm_vcvttq_x_f32_f16): Likewise.
+ 	(__arm_vcvtq_x_f16_u16): Likewise.
+ 	(__arm_vcvtq_x_f16_s16): Likewise.
+ 	(__arm_vcvtq_x_f32_s32): Likewise.
+ 	(__arm_vcvtq_x_f32_u32): Likewise.
+ 	(__arm_vcvtq_x_n_f16_s16): Likewise.
+ 	(__arm_vcvtq_x_n_f16_u16): Likewise.
+ 	(__arm_vcvtq_x_n_f32_s32): Likewise.
+ 	(__arm_vcvtq_x_n_f32_u32): Likewise.
+ 	(__arm_vcvtq_x_s16_f16): Likewise.
+ 	(__arm_vcvtq_x_s32_f32): Likewise.
+ 	(__arm_vcvtq_x_u16_f16): Likewise.
+ 	(__arm_vcvtq_x_u32_f32): Likewise.
+ 	(__arm_vcvtq_x_n_s16_f16): Likewise.
+ 	(__arm_vcvtq_x_n_s32_f32): Likewise.
+ 	(__arm_vcvtq_x_n_u16_f16): Likewise.
+ 	(__arm_vcvtq_x_n_u32_f32): Likewise.
+ 	(__arm_vrndq_x_f16): Likewise.
+ 	(__arm_vrndq_x_f32): Likewise.
+ 	(__arm_vrndnq_x_f16): Likewise.
+ 	(__arm_vrndnq_x_f32): Likewise.
+ 	(__arm_vrndmq_x_f16): Likewise.
+ 	(__arm_vrndmq_x_f32): Likewise.
+ 	(__arm_vrndpq_x_f16): Likewise.
+ 	(__arm_vrndpq_x_f32): Likewise.
+ 	(__arm_vrndaq_x_f16): Likewise.
+ 	(__arm_vrndaq_x_f32): Likewise.
+ 	(__arm_vrndxq_x_f16): Likewise.
+ 	(__arm_vrndxq_x_f32): Likewise.
+ 	(__arm_vandq_x_f16): Likewise.
+ 	(__arm_vandq_x_f32): Likewise.
+ 	(__arm_vbicq_x_f16): Likewise.
+ 	(__arm_vbicq_x_f32): Likewise.
+ 	(__arm_vbrsrq_x_n_f16): Likewise.
+ 	(__arm_vbrsrq_x_n_f32): Likewise.
+ 	(__arm_veorq_x_f16): Likewise.
+ 	(__arm_veorq_x_f32): Likewise.
+ 	(__arm_vornq_x_f16): Likewise.
+ 	(__arm_vornq_x_f32): Likewise.
+ 	(__arm_vorrq_x_f16): Likewise.
+ 	(__arm_vorrq_x_f32): Likewise.
+ 	(__arm_vrev32q_x_f16): Likewise.
+ 	(__arm_vrev64q_x_f16): Likewise.
+ 	(__arm_vrev64q_x_f32): Likewise.
+ 	(vabdq_x): Define polymorphic variant.
+ 	(vabsq_x): Likewise.
+ 	(vaddq_x): Likewise.
+ 	(vandq_x): Likewise.
+ 	(vbicq_x): Likewise.
+ 	(vbrsrq_x): Likewise.
+ 	(vcaddq_rot270_x): Likewise.
+ 	(vcaddq_rot90_x): Likewise.
+ 	(vcmulq_rot180_x): Likewise.
+ 	(vcmulq_rot270_x): Likewise.
+ 	(vcmulq_x): Likewise.
+ 	(vcvtq_x): Likewise.
+ 	(vcvtq_x_n): Likewise.
+ 	(vcvtnq_m): Likewise.
+ 	(veorq_x): Likewise.
+ 	(vmaxnmq_x): Likewise.
+ 	(vminnmq_x): Likewise.
+ 	(vmulq_x): Likewise.
+ 	(vnegq_x): Likewise.
+ 	(vornq_x): Likewise.
+ 	(vorrq_x): Likewise.
+ 	(vrev32q_x): Likewise.
+ 	(vrev64q_x): Likewise.
+ 	(vrndaq_x): Likewise.
+ 	(vrndmq_x): Likewise.
+ 	(vrndnq_x): Likewise.
+ 	(vrndpq_x): Likewise.
+ 	(vrndq_x): Likewise.
+ 	(vrndxq_x): Likewise.
+ 	(vsubq_x): Likewise.
+ 	(vcmulq_rot90_x): Likewise.
+ 	(vadciq): Likewise.
+ 	(vclsq_x): Likewise.
+ 	(vclzq_x): Likewise.
+ 	(vhaddq_x): Likewise.
+ 	(vhcaddq_rot270_x): Likewise.
+ 	(vhcaddq_rot90_x): Likewise.
+ 	(vhsubq_x): Likewise.
+ 	(vmaxq_x): Likewise.
+ 	(vminq_x): Likewise.
+ 	(vmovlbq_x): Likewise.
+ 	(vmovltq_x): Likewise.
+ 	(vmulhq_x): Likewise.
+ 	(vmullbq_int_x): Likewise.
+ 	(vmullbq_poly_x): Likewise.
+ 	(vmulltq_int_x): Likewise.
+ 	(vmulltq_poly_x): Likewise.
+ 	(vmvnq_x): Likewise.
+ 	(vrev16q_x): Likewise.
+ 	(vrhaddq_x): Likewise.
+ 	(vrmulhq_x): Likewise.
+ 	(vrshlq_x): Likewise.
+ 	(vrshrq_x): Likewise.
+ 	(vshllbq_x): Likewise.
+ 	(vshlltq_x): Likewise.
+ 	(vshlq_x_n): Likewise.
+ 	(vshlq_x): Likewise.
+ 	(vdwdupq_x_u8): Likewise.
+ 	(vdwdupq_x_u16): Likewise.
+ 	(vdwdupq_x_u32): Likewise.
+ 	(viwdupq_x_u8): Likewise.
+ 	(viwdupq_x_u16): Likewise.
+ 	(viwdupq_x_u32): Likewise.
+ 	(vidupq_x_u8): Likewise.
+ 	(vddupq_x_u8): Likewise.
+ 	(vidupq_x_u16): Likewise.
+ 	(vddupq_x_u16): Likewise.
+ 	(vidupq_x_u32): Likewise.
+ 	(vddupq_x_u32): Likewise.
+ 	(vshrq_x): Likewise.
+ 
+ 2020-03-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_analyze_slp_instance): Push the stmts
+ 	to vectorize for CTOR defs.
+ 
+ 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+             Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (LDRGBWBS_QUALIFIERS): Define builtin
+ 	qualifier.
+ 	(LDRGBWBU_QUALIFIERS): Likewise.
+ 	(LDRGBWBS_Z_QUALIFIERS): Likewise.
+ 	(LDRGBWBU_Z_QUALIFIERS): Likewise.
+ 	(STRSBWBS_QUALIFIERS): Likewise.
+ 	(STRSBWBU_QUALIFIERS): Likewise.
+ 	(STRSBWBS_P_QUALIFIERS): Likewise.
+ 	(STRSBWBU_P_QUALIFIERS): Likewise.
+ 	* config/arm/arm_mve.h (vldrdq_gather_base_wb_s64): Define macro.
+ 	(vldrdq_gather_base_wb_u64): Likewise.
+ 	(vldrdq_gather_base_wb_z_s64): Likewise.
+ 	(vldrdq_gather_base_wb_z_u64): Likewise.
+ 	(vldrwq_gather_base_wb_f32): Likewise.
+ 	(vldrwq_gather_base_wb_s32): Likewise.
+ 	(vldrwq_gather_base_wb_u32): Likewise.
+ 	(vldrwq_gather_base_wb_z_f32): Likewise.
+ 	(vldrwq_gather_base_wb_z_s32): Likewise.
+ 	(vldrwq_gather_base_wb_z_u32): Likewise.
+ 	(vstrdq_scatter_base_wb_p_s64): Likewise.
+ 	(vstrdq_scatter_base_wb_p_u64): Likewise.
+ 	(vstrdq_scatter_base_wb_s64): Likewise.
+ 	(vstrdq_scatter_base_wb_u64): Likewise.
+ 	(vstrwq_scatter_base_wb_p_s32): Likewise.
+ 	(vstrwq_scatter_base_wb_p_f32): Likewise.
+ 	(vstrwq_scatter_base_wb_p_u32): Likewise.
+ 	(vstrwq_scatter_base_wb_s32): Likewise.
+ 	(vstrwq_scatter_base_wb_u32): Likewise.
+ 	(vstrwq_scatter_base_wb_f32): Likewise.
+ 	(__arm_vldrdq_gather_base_wb_s64): Define intrinsic.
+ 	(__arm_vldrdq_gather_base_wb_u64): Likewise.
+ 	(__arm_vldrdq_gather_base_wb_z_s64): Likewise.
+ 	(__arm_vldrdq_gather_base_wb_z_u64): Likewise.
+ 	(__arm_vldrwq_gather_base_wb_s32): Likewise.
+ 	(__arm_vldrwq_gather_base_wb_u32): Likewise.
+ 	(__arm_vldrwq_gather_base_wb_z_s32): Likewise.
+ 	(__arm_vldrwq_gather_base_wb_z_u32): Likewise.
+ 	(__arm_vstrdq_scatter_base_wb_s64): Likewise.
+ 	(__arm_vstrdq_scatter_base_wb_u64): Likewise.
+ 	(__arm_vstrdq_scatter_base_wb_p_s64): Likewise.
+ 	(__arm_vstrdq_scatter_base_wb_p_u64): Likewise.
+ 	(__arm_vstrwq_scatter_base_wb_p_s32): Likewise.
+ 	(__arm_vstrwq_scatter_base_wb_p_u32): Likewise.
+ 	(__arm_vstrwq_scatter_base_wb_s32): Likewise.
+ 	(__arm_vstrwq_scatter_base_wb_u32): Likewise.
+ 	(__arm_vldrwq_gather_base_wb_f32): Likewise.
+ 	(__arm_vldrwq_gather_base_wb_z_f32): Likewise.
+ 	(__arm_vstrwq_scatter_base_wb_f32): Likewise.
+ 	(__arm_vstrwq_scatter_base_wb_p_f32): Likewise.
+ 	(vstrwq_scatter_base_wb): Define polymorphic variant.
+ 	(vstrwq_scatter_base_wb_p): Likewise.
+ 	(vstrdq_scatter_base_wb_p): Likewise.
+ 	(vstrdq_scatter_base_wb): Likewise.
+ 	* config/arm/arm_mve_builtins.def (LDRGBWBS_QUALIFIERS): Use builtin
+ 	qualifier.
+ 	* config/arm/mve.md (mve_vstrwq_scatter_base_wb_<supf>v4si): Define RTL
+ 	pattern.
+ 	(mve_vstrwq_scatter_base_wb_add_<supf>v4si): Likewise.
+ 	(mve_vstrwq_scatter_base_wb_<supf>v4si_insn): Likewise.
+ 	(mve_vstrwq_scatter_base_wb_p_<supf>v4si): Likewise.
+ 	(mve_vstrwq_scatter_base_wb_p_add_<supf>v4si): Likewise.
+ 	(mve_vstrwq_scatter_base_wb_p_<supf>v4si_insn): Likewise.
+ 	(mve_vstrwq_scatter_base_wb_fv4sf): Likewise.
+ 	(mve_vstrwq_scatter_base_wb_add_fv4sf): Likewise.
+ 	(mve_vstrwq_scatter_base_wb_fv4sf_insn): Likewise.
+ 	(mve_vstrwq_scatter_base_wb_p_fv4sf): Likewise.
+ 	(mve_vstrwq_scatter_base_wb_p_add_fv4sf): Likewise.
+ 	(mve_vstrwq_scatter_base_wb_p_fv4sf_insn): Likewise.
+ 	(mve_vstrdq_scatter_base_wb_<supf>v2di): Likewise.
+ 	(mve_vstrdq_scatter_base_wb_add_<supf>v2di): Likewise.
+ 	(mve_vstrdq_scatter_base_wb_<supf>v2di_insn): Likewise.
+ 	(mve_vstrdq_scatter_base_wb_p_<supf>v2di): Likewise.
+ 	(mve_vstrdq_scatter_base_wb_p_add_<supf>v2di): Likewise.
+ 	(mve_vstrdq_scatter_base_wb_p_<supf>v2di_insn): Likewise.
+ 	(mve_vldrwq_gather_base_wb_<supf>v4si): Likewise.
+ 	(mve_vldrwq_gather_base_wb_<supf>v4si_insn): Likewise.
+ 	(mve_vldrwq_gather_base_wb_z_<supf>v4si): Likewise.
+ 	(mve_vldrwq_gather_base_wb_z_<supf>v4si_insn): Likewise.
+ 	(mve_vldrwq_gather_base_wb_fv4sf): Likewise.
+ 	(mve_vldrwq_gather_base_wb_fv4sf_insn): Likewise.
+ 	(mve_vldrwq_gather_base_wb_z_fv4sf): Likewise.
+ 	(mve_vldrwq_gather_base_wb_z_fv4sf_insn): Likewise.
+ 	(mve_vldrdq_gather_base_wb_<supf>v2di): Likewise.
+ 	(mve_vldrdq_gather_base_wb_<supf>v2di_insn): Likewise.
+ 	(mve_vldrdq_gather_base_wb_z_<supf>v2di): Likewise.
+ 	(mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Likewise.
+ 
+ 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+             Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	* config/arm/arm-builtins.c
+ 	(QUINOP_UNONE_UNONE_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Define quinary
+ 	builtin qualifier.
+ 	* config/arm/arm_mve.h (vddupq_m_n_u8): Define macro.
+ 	(vddupq_m_n_u32): Likewise.
+ 	(vddupq_m_n_u16): Likewise.
+ 	(vddupq_m_wb_u8): Likewise.
+ 	(vddupq_m_wb_u16): Likewise.
+ 	(vddupq_m_wb_u32): Likewise.
+ 	(vddupq_n_u8): Likewise.
+ 	(vddupq_n_u32): Likewise.
+ 	(vddupq_n_u16): Likewise.
+ 	(vddupq_wb_u8): Likewise.
+ 	(vddupq_wb_u16): Likewise.
+ 	(vddupq_wb_u32): Likewise.
+ 	(vdwdupq_m_n_u8): Likewise.
+ 	(vdwdupq_m_n_u32): Likewise.
+ 	(vdwdupq_m_n_u16): Likewise.
+ 	(vdwdupq_m_wb_u8): Likewise.
+ 	(vdwdupq_m_wb_u32): Likewise.
+ 	(vdwdupq_m_wb_u16): Likewise.
+ 	(vdwdupq_n_u8): Likewise.
+ 	(vdwdupq_n_u32): Likewise.
+ 	(vdwdupq_n_u16): Likewise.
+ 	(vdwdupq_wb_u8): Likewise.
+ 	(vdwdupq_wb_u32): Likewise.
+ 	(vdwdupq_wb_u16): Likewise.
+ 	(vidupq_m_n_u8): Likewise.
+ 	(vidupq_m_n_u32): Likewise.
+ 	(vidupq_m_n_u16): Likewise.
+ 	(vidupq_m_wb_u8): Likewise.
+ 	(vidupq_m_wb_u16): Likewise.
+ 	(vidupq_m_wb_u32): Likewise.
+ 	(vidupq_n_u8): Likewise.
+ 	(vidupq_n_u32): Likewise.
+ 	(vidupq_n_u16): Likewise.
+ 	(vidupq_wb_u8): Likewise.
+ 	(vidupq_wb_u16): Likewise.
+ 	(vidupq_wb_u32): Likewise.
+ 	(viwdupq_m_n_u8): Likewise.
+ 	(viwdupq_m_n_u32): Likewise.
+ 	(viwdupq_m_n_u16): Likewise.
+ 	(viwdupq_m_wb_u8): Likewise.
+ 	(viwdupq_m_wb_u32): Likewise.
+ 	(viwdupq_m_wb_u16): Likewise.
+ 	(viwdupq_n_u8): Likewise.
+ 	(viwdupq_n_u32): Likewise.
+ 	(viwdupq_n_u16): Likewise.
+ 	(viwdupq_wb_u8): Likewise.
+ 	(viwdupq_wb_u32): Likewise.
+ 	(viwdupq_wb_u16): Likewise.
+ 	(__arm_vddupq_m_n_u8): Define intrinsic.
+ 	(__arm_vddupq_m_n_u32): Likewise.
+ 	(__arm_vddupq_m_n_u16): Likewise.
+ 	(__arm_vddupq_m_wb_u8): Likewise.
+ 	(__arm_vddupq_m_wb_u16): Likewise.
+ 	(__arm_vddupq_m_wb_u32): Likewise.
+ 	(__arm_vddupq_n_u8): Likewise.
+ 	(__arm_vddupq_n_u32): Likewise.
+ 	(__arm_vddupq_n_u16): Likewise.
+ 	(__arm_vdwdupq_m_n_u8): Likewise.
+ 	(__arm_vdwdupq_m_n_u32): Likewise.
+ 	(__arm_vdwdupq_m_n_u16): Likewise.
+ 	(__arm_vdwdupq_m_wb_u8): Likewise.
+ 	(__arm_vdwdupq_m_wb_u32): Likewise.
+ 	(__arm_vdwdupq_m_wb_u16): Likewise.
+ 	(__arm_vdwdupq_n_u8): Likewise.
+ 	(__arm_vdwdupq_n_u32): Likewise.
+ 	(__arm_vdwdupq_n_u16): Likewise.
+ 	(__arm_vdwdupq_wb_u8): Likewise.
+ 	(__arm_vdwdupq_wb_u32): Likewise.
+ 	(__arm_vdwdupq_wb_u16): Likewise.
+ 	(__arm_vidupq_m_n_u8): Likewise.
+ 	(__arm_vidupq_m_n_u32): Likewise.
+ 	(__arm_vidupq_m_n_u16): Likewise.
+ 	(__arm_vidupq_n_u8): Likewise.
+ 	(__arm_vidupq_m_wb_u8): Likewise.
+ 	(__arm_vidupq_m_wb_u16): Likewise.
+ 	(__arm_vidupq_m_wb_u32): Likewise.
+ 	(__arm_vidupq_n_u32): Likewise.
+ 	(__arm_vidupq_n_u16): Likewise.
+ 	(__arm_vidupq_wb_u8): Likewise.
+ 	(__arm_vidupq_wb_u16): Likewise.
+ 	(__arm_vidupq_wb_u32): Likewise.
+ 	(__arm_vddupq_wb_u8): Likewise.
+ 	(__arm_vddupq_wb_u16): Likewise.
+ 	(__arm_vddupq_wb_u32): Likewise.
+ 	(__arm_viwdupq_m_n_u8): Likewise.
+ 	(__arm_viwdupq_m_n_u32): Likewise.
+ 	(__arm_viwdupq_m_n_u16): Likewise.
+ 	(__arm_viwdupq_m_wb_u8): Likewise.
+ 	(__arm_viwdupq_m_wb_u32): Likewise.
+ 	(__arm_viwdupq_m_wb_u16): Likewise.
+ 	(__arm_viwdupq_n_u8): Likewise.
+ 	(__arm_viwdupq_n_u32): Likewise.
+ 	(__arm_viwdupq_n_u16): Likewise.
+ 	(__arm_viwdupq_wb_u8): Likewise.
+ 	(__arm_viwdupq_wb_u32): Likewise.
+ 	(__arm_viwdupq_wb_u16): Likewise.
+ 	(vidupq_m): Define polymorphic variant.
+ 	(vddupq_m): Likewise.
+ 	(vidupq_u16): Likewise.
+ 	(vidupq_u32): Likewise.
+ 	(vidupq_u8): Likewise.
+ 	(vddupq_u16): Likewise.
+ 	(vddupq_u32): Likewise.
+ 	(vddupq_u8): Likewise.
+ 	(viwdupq_m): Likewise.
+ 	(viwdupq_u16): Likewise.
+ 	(viwdupq_u32): Likewise.
+ 	(viwdupq_u8): Likewise.
+ 	(vdwdupq_m): Likewise.
+ 	(vdwdupq_u16): Likewise.
+ 	(vdwdupq_u32): Likewise.
+ 	(vdwdupq_u8): Likewise.
+ 	* config/arm/arm_mve_builtins.def
+ 	(QUINOP_UNONE_UNONE_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Use builtin
+ 	qualifier.
+ 	* config/arm/mve.md (mve_vidupq_n_u<mode>): Define RTL pattern.
+ 	(mve_vidupq_u<mode>_insn): Likewise.
+ 	(mve_vidupq_m_n_u<mode>): Likewise.
+ 	(mve_vidupq_m_wb_u<mode>_insn): Likewise.
+ 	(mve_vddupq_n_u<mode>): Likewise.
+ 	(mve_vddupq_u<mode>_insn): Likewise.
+ 	(mve_vddupq_m_n_u<mode>): Likewise.
+ 	(mve_vddupq_m_wb_u<mode>_insn): Likewise.
+ 	(mve_vdwdupq_n_u<mode>): Likewise.
+ 	(mve_vdwdupq_wb_u<mode>): Likewise.
+ 	(mve_vdwdupq_wb_u<mode>_insn): Likewise.
+ 	(mve_vdwdupq_m_n_u<mode>): Likewise.
+ 	(mve_vdwdupq_m_wb_u<mode>): Likewise.
+ 	(mve_vdwdupq_m_wb_u<mode>_insn): Likewise.
+ 	(mve_viwdupq_n_u<mode>): Likewise.
+ 	(mve_viwdupq_wb_u<mode>): Likewise.
+ 	(mve_viwdupq_wb_u<mode>_insn): Likewise.
+ 	(mve_viwdupq_m_n_u<mode>): Likewise.
+ 	(mve_viwdupq_m_wb_u<mode>): Likewise.
+ 	(mve_viwdupq_m_wb_u<mode>_insn): Likewise.
+ 
+ 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vreinterpretq_s16_s32): Define macro.
+ 	(vreinterpretq_s16_s64): Likewise.
+ 	(vreinterpretq_s16_s8): Likewise.
+ 	(vreinterpretq_s16_u16): Likewise.
+ 	(vreinterpretq_s16_u32): Likewise.
+ 	(vreinterpretq_s16_u64): Likewise.
+ 	(vreinterpretq_s16_u8): Likewise.
+ 	(vreinterpretq_s32_s16): Likewise.
+ 	(vreinterpretq_s32_s64): Likewise.
+ 	(vreinterpretq_s32_s8): Likewise.
+ 	(vreinterpretq_s32_u16): Likewise.
+ 	(vreinterpretq_s32_u32): Likewise.
+ 	(vreinterpretq_s32_u64): Likewise.
+ 	(vreinterpretq_s32_u8): Likewise.
+ 	(vreinterpretq_s64_s16): Likewise.
+ 	(vreinterpretq_s64_s32): Likewise.
+ 	(vreinterpretq_s64_s8): Likewise.
+ 	(vreinterpretq_s64_u16): Likewise.
+ 	(vreinterpretq_s64_u32): Likewise.
+ 	(vreinterpretq_s64_u64): Likewise.
+ 	(vreinterpretq_s64_u8): Likewise.
+ 	(vreinterpretq_s8_s16): Likewise.
+ 	(vreinterpretq_s8_s32): Likewise.
+ 	(vreinterpretq_s8_s64): Likewise.
+ 	(vreinterpretq_s8_u16): Likewise.
+ 	(vreinterpretq_s8_u32): Likewise.
+ 	(vreinterpretq_s8_u64): Likewise.
+ 	(vreinterpretq_s8_u8): Likewise.
+ 	(vreinterpretq_u16_s16): Likewise.
+ 	(vreinterpretq_u16_s32): Likewise.
+ 	(vreinterpretq_u16_s64): Likewise.
+ 	(vreinterpretq_u16_s8): Likewise.
+ 	(vreinterpretq_u16_u32): Likewise.
+ 	(vreinterpretq_u16_u64): Likewise.
+ 	(vreinterpretq_u16_u8): Likewise.
+ 	(vreinterpretq_u32_s16): Likewise.
+ 	(vreinterpretq_u32_s32): Likewise.
+ 	(vreinterpretq_u32_s64): Likewise.
+ 	(vreinterpretq_u32_s8): Likewise.
+ 	(vreinterpretq_u32_u16): Likewise.
+ 	(vreinterpretq_u32_u64): Likewise.
+ 	(vreinterpretq_u32_u8): Likewise.
+ 	(vreinterpretq_u64_s16): Likewise.
+ 	(vreinterpretq_u64_s32): Likewise.
+ 	(vreinterpretq_u64_s64): Likewise.
+ 	(vreinterpretq_u64_s8): Likewise.
+ 	(vreinterpretq_u64_u16): Likewise.
+ 	(vreinterpretq_u64_u32): Likewise.
+ 	(vreinterpretq_u64_u8): Likewise.
+ 	(vreinterpretq_u8_s16): Likewise.
+ 	(vreinterpretq_u8_s32): Likewise.
+ 	(vreinterpretq_u8_s64): Likewise.
+ 	(vreinterpretq_u8_s8): Likewise.
+ 	(vreinterpretq_u8_u16): Likewise.
+ 	(vreinterpretq_u8_u32): Likewise.
+ 	(vreinterpretq_u8_u64): Likewise.
+ 	(vreinterpretq_s32_f16): Likewise.
+ 	(vreinterpretq_s32_f32): Likewise.
+ 	(vreinterpretq_u16_f16): Likewise.
+ 	(vreinterpretq_u16_f32): Likewise.
+ 	(vreinterpretq_u32_f16): Likewise.
+ 	(vreinterpretq_u32_f32): Likewise.
+ 	(vreinterpretq_u64_f16): Likewise.
+ 	(vreinterpretq_u64_f32): Likewise.
+ 	(vreinterpretq_u8_f16): Likewise.
+ 	(vreinterpretq_u8_f32): Likewise.
+ 	(vreinterpretq_f16_f32): Likewise.
+ 	(vreinterpretq_f16_s16): Likewise.
+ 	(vreinterpretq_f16_s32): Likewise.
+ 	(vreinterpretq_f16_s64): Likewise.
+ 	(vreinterpretq_f16_s8): Likewise.
+ 	(vreinterpretq_f16_u16): Likewise.
+ 	(vreinterpretq_f16_u32): Likewise.
+ 	(vreinterpretq_f16_u64): Likewise.
+ 	(vreinterpretq_f16_u8): Likewise.
+ 	(vreinterpretq_f32_f16): Likewise.
+ 	(vreinterpretq_f32_s16): Likewise.
+ 	(vreinterpretq_f32_s32): Likewise.
+ 	(vreinterpretq_f32_s64): Likewise.
+ 	(vreinterpretq_f32_s8): Likewise.
+ 	(vreinterpretq_f32_u16): Likewise.
+ 	(vreinterpretq_f32_u32): Likewise.
+ 	(vreinterpretq_f32_u64): Likewise.
+ 	(vreinterpretq_f32_u8): Likewise.
+ 	(vreinterpretq_s16_f16): Likewise.
+ 	(vreinterpretq_s16_f32): Likewise.
+ 	(vreinterpretq_s64_f16): Likewise.
+ 	(vreinterpretq_s64_f32): Likewise.
+ 	(vreinterpretq_s8_f16): Likewise.
+ 	(vreinterpretq_s8_f32): Likewise.
+ 	(vuninitializedq_u8): Likewise.
+ 	(vuninitializedq_u16): Likewise.
+ 	(vuninitializedq_u32): Likewise.
+ 	(vuninitializedq_u64): Likewise.
+ 	(vuninitializedq_s8): Likewise.
+ 	(vuninitializedq_s16): Likewise.
+ 	(vuninitializedq_s32): Likewise.
+ 	(vuninitializedq_s64): Likewise.
+ 	(vuninitializedq_f16): Likewise.
+ 	(vuninitializedq_f32): Likewise.
+ 	(__arm_vuninitializedq_u8): Define intrinsic.
+ 	(__arm_vuninitializedq_u16): Likewise.
+ 	(__arm_vuninitializedq_u32): Likewise.
+ 	(__arm_vuninitializedq_u64): Likewise.
+ 	(__arm_vuninitializedq_s8): Likewise.
+ 	(__arm_vuninitializedq_s16): Likewise.
+ 	(__arm_vuninitializedq_s32): Likewise.
+ 	(__arm_vuninitializedq_s64): Likewise.
+ 	(__arm_vreinterpretq_s16_s32): Likewise.
+ 	(__arm_vreinterpretq_s16_s64): Likewise.
+ 	(__arm_vreinterpretq_s16_s8): Likewise.
+ 	(__arm_vreinterpretq_s16_u16): Likewise.
+ 	(__arm_vreinterpretq_s16_u32): Likewise.
+ 	(__arm_vreinterpretq_s16_u64): Likewise.
+ 	(__arm_vreinterpretq_s16_u8): Likewise.
+ 	(__arm_vreinterpretq_s32_s16): Likewise.
+ 	(__arm_vreinterpretq_s32_s64): Likewise.
+ 	(__arm_vreinterpretq_s32_s8): Likewise.
+ 	(__arm_vreinterpretq_s32_u16): Likewise.
+ 	(__arm_vreinterpretq_s32_u32): Likewise.
+ 	(__arm_vreinterpretq_s32_u64): Likewise.
+ 	(__arm_vreinterpretq_s32_u8): Likewise.
+ 	(__arm_vreinterpretq_s64_s16): Likewise.
+ 	(__arm_vreinterpretq_s64_s32): Likewise.
+ 	(__arm_vreinterpretq_s64_s8): Likewise.
+ 	(__arm_vreinterpretq_s64_u16): Likewise.
+ 	(__arm_vreinterpretq_s64_u32): Likewise.
+ 	(__arm_vreinterpretq_s64_u64): Likewise.
+ 	(__arm_vreinterpretq_s64_u8): Likewise.
+ 	(__arm_vreinterpretq_s8_s16): Likewise.
+ 	(__arm_vreinterpretq_s8_s32): Likewise.
+ 	(__arm_vreinterpretq_s8_s64): Likewise.
+ 	(__arm_vreinterpretq_s8_u16): Likewise.
+ 	(__arm_vreinterpretq_s8_u32): Likewise.
+ 	(__arm_vreinterpretq_s8_u64): Likewise.
+ 	(__arm_vreinterpretq_s8_u8): Likewise.
+ 	(__arm_vreinterpretq_u16_s16): Likewise.
+ 	(__arm_vreinterpretq_u16_s32): Likewise.
+ 	(__arm_vreinterpretq_u16_s64): Likewise.
+ 	(__arm_vreinterpretq_u16_s8): Likewise.
+ 	(__arm_vreinterpretq_u16_u32): Likewise.
+ 	(__arm_vreinterpretq_u16_u64): Likewise.
+ 	(__arm_vreinterpretq_u16_u8): Likewise.
+ 	(__arm_vreinterpretq_u32_s16): Likewise.
+ 	(__arm_vreinterpretq_u32_s32): Likewise.
+ 	(__arm_vreinterpretq_u32_s64): Likewise.
+ 	(__arm_vreinterpretq_u32_s8): Likewise.
+ 	(__arm_vreinterpretq_u32_u16): Likewise.
+ 	(__arm_vreinterpretq_u32_u64): Likewise.
+ 	(__arm_vreinterpretq_u32_u8): Likewise.
+ 	(__arm_vreinterpretq_u64_s16): Likewise.
+ 	(__arm_vreinterpretq_u64_s32): Likewise.
+ 	(__arm_vreinterpretq_u64_s64): Likewise.
+ 	(__arm_vreinterpretq_u64_s8): Likewise.
+ 	(__arm_vreinterpretq_u64_u16): Likewise.
+ 	(__arm_vreinterpretq_u64_u32): Likewise.
+ 	(__arm_vreinterpretq_u64_u8): Likewise.
+ 	(__arm_vreinterpretq_u8_s16): Likewise.
+ 	(__arm_vreinterpretq_u8_s32): Likewise.
+ 	(__arm_vreinterpretq_u8_s64): Likewise.
+ 	(__arm_vreinterpretq_u8_s8): Likewise.
+ 	(__arm_vreinterpretq_u8_u16): Likewise.
+ 	(__arm_vreinterpretq_u8_u32): Likewise.
+ 	(__arm_vreinterpretq_u8_u64): Likewise.
+ 	(__arm_vuninitializedq_f16): Likewise.
+ 	(__arm_vuninitializedq_f32): Likewise.
+ 	(__arm_vreinterpretq_s32_f16): Likewise.
+ 	(__arm_vreinterpretq_s32_f32): Likewise.
+ 	(__arm_vreinterpretq_s16_f16): Likewise.
+ 	(__arm_vreinterpretq_s16_f32): Likewise.
+ 	(__arm_vreinterpretq_s64_f16): Likewise.
+ 	(__arm_vreinterpretq_s64_f32): Likewise.
+ 	(__arm_vreinterpretq_s8_f16): Likewise.
+ 	(__arm_vreinterpretq_s8_f32): Likewise.
+ 	(__arm_vreinterpretq_u16_f16): Likewise.
+ 	(__arm_vreinterpretq_u16_f32): Likewise.
+ 	(__arm_vreinterpretq_u32_f16): Likewise.
+ 	(__arm_vreinterpretq_u32_f32): Likewise.
+ 	(__arm_vreinterpretq_u64_f16): Likewise.
+ 	(__arm_vreinterpretq_u64_f32): Likewise.
+ 	(__arm_vreinterpretq_u8_f16): Likewise.
+ 	(__arm_vreinterpretq_u8_f32): Likewise.
+ 	(__arm_vreinterpretq_f16_f32): Likewise.
+ 	(__arm_vreinterpretq_f16_s16): Likewise.
+ 	(__arm_vreinterpretq_f16_s32): Likewise.
+ 	(__arm_vreinterpretq_f16_s64): Likewise.
+ 	(__arm_vreinterpretq_f16_s8): Likewise.
+ 	(__arm_vreinterpretq_f16_u16): Likewise.
+ 	(__arm_vreinterpretq_f16_u32): Likewise.
+ 	(__arm_vreinterpretq_f16_u64): Likewise.
+ 	(__arm_vreinterpretq_f16_u8): Likewise.
+ 	(__arm_vreinterpretq_f32_f16): Likewise.
+ 	(__arm_vreinterpretq_f32_s16): Likewise.
+ 	(__arm_vreinterpretq_f32_s32): Likewise.
+ 	(__arm_vreinterpretq_f32_s64): Likewise.
+ 	(__arm_vreinterpretq_f32_s8): Likewise.
+ 	(__arm_vreinterpretq_f32_u16): Likewise.
+ 	(__arm_vreinterpretq_f32_u32): Likewise.
+ 	(__arm_vreinterpretq_f32_u64): Likewise.
+ 	(__arm_vreinterpretq_f32_u8): Likewise.
+ 	(vuninitializedq): Define polymorphic variant.
+ 	(vreinterpretq_f16): Likewise.
+ 	(vreinterpretq_f32): Likewise.
+ 	(vreinterpretq_s16): Likewise.
+ 	(vreinterpretq_s32): Likewise.
+ 	(vreinterpretq_s64): Likewise.
+ 	(vreinterpretq_s8): Likewise.
+ 	(vreinterpretq_u16): Likewise.
+ 	(vreinterpretq_u32): Likewise.
+ 	(vreinterpretq_u64): Likewise.
+ 	(vreinterpretq_u8): Likewise.
+ 
+ 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+             Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vaddq_s8): Define macro.
+ 	(vaddq_s16): Likewise.
+ 	(vaddq_s32): Likewise.
+ 	(vaddq_u8): Likewise.
+ 	(vaddq_u16): Likewise.
+ 	(vaddq_u32): Likewise.
+ 	(vaddq_f16): Likewise.
+ 	(vaddq_f32): Likewise.
+ 	(__arm_vaddq_s8): Define intrinsic.
+ 	(__arm_vaddq_s16): Likewise.
+ 	(__arm_vaddq_s32): Likewise.
+ 	(__arm_vaddq_u8): Likewise.
+ 	(__arm_vaddq_u16): Likewise.
+ 	(__arm_vaddq_u32): Likewise.
+ 	(__arm_vaddq_f16): Likewise.
+ 	(__arm_vaddq_f32): Likewise.
+ 	(vaddq): Define polymorphic variant.
+ 	* config/arm/iterators.md (VNIM): Define mode iterator for common types
+ 	Neon, IWMMXT and MVE.
+ 	(VNINOTM): Likewise.
+ 	* config/arm/mve.md (mve_vaddq<mode>): Define RTL pattern.
+ 	(mve_vaddq_f<mode>): Define RTL pattern.
+ 	* config/arm/neon.md (add<mode>3): Rename to addv4hf3 RTL pattern.
+ 	(addv8hf3_neon): Define RTL pattern.
+ 	* config/arm/vec-common.md (add<mode>3): Modify standard add RTL pattern
+ 	to support MVE.
+ 	(addv8hf3): Define standard RTL pattern for MVE and Neon.
+ 	(add<mode>3): Modify existing standard add RTL pattern for Neon and IWMMXT.
+ 
+ 2020-03-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/94232
+ 	* ipa-cp.c (ipa_get_jf_ancestor_result): Use offset in bytes. Previously
+ 	build_ref_for_offset function was used and it transforms off to bytes
+ 	from bits.
+ 
+ 2020-03-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/94266
+ 	* gimple-ssa-sprintf.c (get_origin_and_offset): Use the
+ 	type of the underlying object to adjust for the containing
+ 	field if available.
+ 
+ 2020-03-20  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/unspecs.md (UNSPEC_GET_FPSCR): Rename this to ...
+ 	(VUNSPEC_GET_FPSCR): ... this, and move it to vunspec.
+ 	* config/arm/vfp.md: (get_fpscr, set_fpscr): Revert to old patterns.
+ 
+ 2020-03-20  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/mve.md (mve_mov<mode>): Fix R->R case.
+ 
+ 2020-03-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/94224
+ 	* gimple-ssa-store-merging.c
+ 	(imm_store_chain_info::coalesce_immediate): Don't consider overlapping
+ 	or adjacent INTEGER_CST rhs_code stores as mergeable if they have
+ 	different lp_nr.
+ 
+ 2020-03-20  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm.md (define_attr "conds"): Fix logic for neon and mve.
+ 
+ 2020-03-19  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/94202
+ 	* cgraph.c (cgraph_node::function_symbol): Fix availability computation.
+ 	(cgraph_node::function_or_virtual_thunk_symbol): Likewise.
+ 
+ 2020-03-19  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/92372
+ 	* cgraphunit.c (process_function_and_variable_attributes): warn
+ 	for flatten attribute on alias.
+ 	* ipa-inline.c (ipa_inline): Do not ICE on flatten attribute on alias.
+ 
+ 2020-03-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	* lto-section-in.c: Add ext_symtab.
+ 	* lto-streamer-out.c (write_symbol_extension_info): New.
+ 	(produce_symtab_extension): New.
+ 	(produce_asm_for_decls): Stream also produce_symtab_extension.
+ 	* lto-streamer.h (enum lto_section_type): New section.
+ 
+ 2020-03-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/94211
+ 	* tree-ssa-phiopt.c (value_replacement): Use estimate_num_insns_seq
+ 	instead of estimate_num_insns for bb_seq (middle_bb).  Rename
+ 	emtpy_or_with_defined_p variable to empty_or_with_defined_p, adjust
+ 	all uses.
+ 
+ 2020-03-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/94217
+ 	* ipa-cp.c (ipa_get_jf_ancestor_result): Avoid build_fold_addr_expr
+ 	and build_ref_for_offset.
+ 
+ 2020-03-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/94216
+ 	* fold-const.c (fold_binary_loc): Avoid using
+ 	build_fold_addr_expr when we really want an ADDR_EXPR.
+ 
+ 2020-03-18  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/constraints.md (wd, wf, wi, ws, ww): New undocumented
+ 	aliases for "wa".
+ 
+ 2020-03-12  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/90275
+ 	* cse.c (cse_insn): Delete no-op register moves too.
+ 
+ 2020-03-18  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR ipa/92799
+ 	* cgraphunit.c (process_function_and_variable_attributes): Also
+ 	complain about weakref function definitions and drop all effects
+ 	of the attribute.
+ 
+ 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vstrdq_scatter_base_p_s64): Define macro.
+ 	(vstrdq_scatter_base_p_u64): Likewise.
+ 	(vstrdq_scatter_base_s64): Likewise.
+ 	(vstrdq_scatter_base_u64): Likewise.
+ 	(vstrdq_scatter_offset_p_s64): Likewise.
+ 	(vstrdq_scatter_offset_p_u64): Likewise.
+ 	(vstrdq_scatter_offset_s64): Likewise.
+ 	(vstrdq_scatter_offset_u64): Likewise.
+ 	(vstrdq_scatter_shifted_offset_p_s64): Likewise.
+ 	(vstrdq_scatter_shifted_offset_p_u64): Likewise.
+ 	(vstrdq_scatter_shifted_offset_s64): Likewise.
+ 	(vstrdq_scatter_shifted_offset_u64): Likewise.
+ 	(vstrhq_scatter_offset_f16): Likewise.
+ 	(vstrhq_scatter_offset_p_f16): Likewise.
+ 	(vstrhq_scatter_shifted_offset_f16): Likewise.
+ 	(vstrhq_scatter_shifted_offset_p_f16): Likewise.
+ 	(vstrwq_scatter_base_f32): Likewise.
+ 	(vstrwq_scatter_base_p_f32): Likewise.
+ 	(vstrwq_scatter_offset_f32): Likewise.
+ 	(vstrwq_scatter_offset_p_f32): Likewise.
+ 	(vstrwq_scatter_offset_p_s32): Likewise.
+ 	(vstrwq_scatter_offset_p_u32): Likewise.
+ 	(vstrwq_scatter_offset_s32): Likewise.
+ 	(vstrwq_scatter_offset_u32): Likewise.
+ 	(vstrwq_scatter_shifted_offset_f32): Likewise.
+ 	(vstrwq_scatter_shifted_offset_p_f32): Likewise.
+ 	(vstrwq_scatter_shifted_offset_p_s32): Likewise.
+ 	(vstrwq_scatter_shifted_offset_p_u32): Likewise.
+ 	(vstrwq_scatter_shifted_offset_s32): Likewise.
+ 	(vstrwq_scatter_shifted_offset_u32): Likewise.
+ 	(__arm_vstrdq_scatter_base_p_s64): Define intrinsic.
+ 	(__arm_vstrdq_scatter_base_p_u64): Likewise.
+ 	(__arm_vstrdq_scatter_base_s64): Likewise.
+ 	(__arm_vstrdq_scatter_base_u64): Likewise.
+ 	(__arm_vstrdq_scatter_offset_p_s64): Likewise.
+ 	(__arm_vstrdq_scatter_offset_p_u64): Likewise.
+ 	(__arm_vstrdq_scatter_offset_s64): Likewise.
+ 	(__arm_vstrdq_scatter_offset_u64): Likewise.
+ 	(__arm_vstrdq_scatter_shifted_offset_p_s64): Likewise.
+ 	(__arm_vstrdq_scatter_shifted_offset_p_u64): Likewise.
+ 	(__arm_vstrdq_scatter_shifted_offset_s64): Likewise.
+ 	(__arm_vstrdq_scatter_shifted_offset_u64): Likewise.
+ 	(__arm_vstrwq_scatter_offset_p_s32): Likewise.
+ 	(__arm_vstrwq_scatter_offset_p_u32): Likewise.
+ 	(__arm_vstrwq_scatter_offset_s32): Likewise.
+ 	(__arm_vstrwq_scatter_offset_u32): Likewise.
+ 	(__arm_vstrwq_scatter_shifted_offset_p_s32): Likewise.
+ 	(__arm_vstrwq_scatter_shifted_offset_p_u32): Likewise.
+ 	(__arm_vstrwq_scatter_shifted_offset_s32): Likewise.
+ 	(__arm_vstrwq_scatter_shifted_offset_u32): Likewise.
+ 	(__arm_vstrhq_scatter_offset_f16): Likewise.
+ 	(__arm_vstrhq_scatter_offset_p_f16): Likewise.
+ 	(__arm_vstrhq_scatter_shifted_offset_f16): Likewise.
+ 	(__arm_vstrhq_scatter_shifted_offset_p_f16): Likewise.
+ 	(__arm_vstrwq_scatter_base_f32): Likewise.
+ 	(__arm_vstrwq_scatter_base_p_f32): Likewise.
+ 	(__arm_vstrwq_scatter_offset_f32): Likewise.
+ 	(__arm_vstrwq_scatter_offset_p_f32): Likewise.
+ 	(__arm_vstrwq_scatter_shifted_offset_f32): Likewise.
+ 	(__arm_vstrwq_scatter_shifted_offset_p_f32): Likewise.
+ 	(vstrhq_scatter_offset): Define polymorphic variant.
+ 	(vstrhq_scatter_offset_p): Likewise.
+ 	(vstrhq_scatter_shifted_offset): Likewise.
+ 	(vstrhq_scatter_shifted_offset_p): Likewise.
+ 	(vstrwq_scatter_base): Likewise.
+ 	(vstrwq_scatter_base_p): Likewise.
+ 	(vstrwq_scatter_offset): Likewise.
+ 	(vstrwq_scatter_offset_p): Likewise.
+ 	(vstrwq_scatter_shifted_offset): Likewise.
+ 	(vstrwq_scatter_shifted_offset_p): Likewise.
+ 	(vstrdq_scatter_base_p): Likewise.
+ 	(vstrdq_scatter_base): Likewise.
+ 	(vstrdq_scatter_offset_p): Likewise.
+ 	(vstrdq_scatter_offset): Likewise.
+ 	(vstrdq_scatter_shifted_offset_p): Likewise.
+ 	(vstrdq_scatter_shifted_offset): Likewise.
+ 	* config/arm/arm_mve_builtins.def (STRSBS): Use builtin qualifier.
+ 	(STRSBS_P): Likewise.
+ 	(STRSBU): Likewise.
+ 	(STRSBU_P): Likewise.
+ 	(STRSS): Likewise.
+ 	(STRSS_P): Likewise.
+ 	(STRSU): Likewise.
+ 	(STRSU_P): Likewise.
+ 	* config/arm/constraints.md (Ri): Define.
+ 	* config/arm/mve.md (VSTRDSBQ): Define iterator.
+ 	(VSTRDSOQ): Likewise.
+ 	(VSTRDSSOQ): Likewise.
+ 	(VSTRWSOQ): Likewise.
+ 	(VSTRWSSOQ): Likewise.
+ 	(mve_vstrdq_scatter_base_p_<supf>v2di): Define RTL pattern.
+ 	(mve_vstrdq_scatter_base_<supf>v2di): Likewise.
+ 	(mve_vstrdq_scatter_offset_p_<supf>v2di): Likewise.
+ 	(mve_vstrdq_scatter_offset_<supf>v2di): Likewise.
+ 	(mve_vstrdq_scatter_shifted_offset_p_<supf>v2di): Likewise.
+ 	(mve_vstrdq_scatter_shifted_offset_<supf>v2di): Likewise.
+ 	(mve_vstrhq_scatter_offset_fv8hf): Likewise.
+ 	(mve_vstrhq_scatter_offset_p_fv8hf): Likewise.
+ 	(mve_vstrhq_scatter_shifted_offset_fv8hf): Likewise.
+ 	(mve_vstrhq_scatter_shifted_offset_p_fv8hf): Likewise.
+ 	(mve_vstrwq_scatter_base_fv4sf): Likewise.
+ 	(mve_vstrwq_scatter_base_p_fv4sf): Likewise.
+ 	(mve_vstrwq_scatter_offset_fv4sf): Likewise.
+ 	(mve_vstrwq_scatter_offset_p_fv4sf): Likewise.
+ 	(mve_vstrwq_scatter_offset_p_<supf>v4si): Likewise.
+ 	(mve_vstrwq_scatter_offset_<supf>v4si): Likewise.
+ 	(mve_vstrwq_scatter_shifted_offset_fv4sf): Likewise.
+ 	(mve_vstrwq_scatter_shifted_offset_p_fv4sf): Likewise.
+ 	(mve_vstrwq_scatter_shifted_offset_p_<supf>v4si): Likewise.
+ 	(mve_vstrwq_scatter_shifted_offset_<supf>v4si): Likewise.
+ 	* config/arm/predicates.md (Ri): Define predicate to check immediate
+ 	is the range +/-1016 and multiple of 8.
+ 
+ 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vst1q_f32): Define macro.
+ 	(vst1q_f16): Likewise.
+ 	(vst1q_s8): Likewise.
+ 	(vst1q_s32): Likewise.
+ 	(vst1q_s16): Likewise.
+ 	(vst1q_u8): Likewise.
+ 	(vst1q_u32): Likewise.
+ 	(vst1q_u16): Likewise.
+ 	(vstrhq_f16): Likewise.
+ 	(vstrhq_scatter_offset_s32): Likewise.
+ 	(vstrhq_scatter_offset_s16): Likewise.
+ 	(vstrhq_scatter_offset_u32): Likewise.
+ 	(vstrhq_scatter_offset_u16): Likewise.
+ 	(vstrhq_scatter_offset_p_s32): Likewise.
+ 	(vstrhq_scatter_offset_p_s16): Likewise.
+ 	(vstrhq_scatter_offset_p_u32): Likewise.
+ 	(vstrhq_scatter_offset_p_u16): Likewise.
+ 	(vstrhq_scatter_shifted_offset_s32): Likewise.
+ 	(vstrhq_scatter_shifted_offset_s16): Likewise.
+ 	(vstrhq_scatter_shifted_offset_u32): Likewise.
+ 	(vstrhq_scatter_shifted_offset_u16): Likewise.
+ 	(vstrhq_scatter_shifted_offset_p_s32): Likewise.
+ 	(vstrhq_scatter_shifted_offset_p_s16): Likewise.
+ 	(vstrhq_scatter_shifted_offset_p_u32): Likewise.
+ 	(vstrhq_scatter_shifted_offset_p_u16): Likewise.
+ 	(vstrhq_s32): Likewise.
+ 	(vstrhq_s16): Likewise.
+ 	(vstrhq_u32): Likewise.
+ 	(vstrhq_u16): Likewise.
+ 	(vstrhq_p_f16): Likewise.
+ 	(vstrhq_p_s32): Likewise.
+ 	(vstrhq_p_s16): Likewise.
+ 	(vstrhq_p_u32): Likewise.
+ 	(vstrhq_p_u16): Likewise.
+ 	(vstrwq_f32): Likewise.
+ 	(vstrwq_s32): Likewise.
+ 	(vstrwq_u32): Likewise.
+ 	(vstrwq_p_f32): Likewise.
+ 	(vstrwq_p_s32): Likewise.
+ 	(vstrwq_p_u32): Likewise.
+ 	(__arm_vst1q_s8): Define intrinsic.
+ 	(__arm_vst1q_s32): Likewise.
+ 	(__arm_vst1q_s16): Likewise.
+ 	(__arm_vst1q_u8): Likewise.
+ 	(__arm_vst1q_u32): Likewise.
+ 	(__arm_vst1q_u16): Likewise.
+ 	(__arm_vstrhq_scatter_offset_s32): Likewise.
+ 	(__arm_vstrhq_scatter_offset_s16): Likewise.
+ 	(__arm_vstrhq_scatter_offset_u32): Likewise.
+ 	(__arm_vstrhq_scatter_offset_u16): Likewise.
+ 	(__arm_vstrhq_scatter_offset_p_s32): Likewise.
+ 	(__arm_vstrhq_scatter_offset_p_s16): Likewise.
+ 	(__arm_vstrhq_scatter_offset_p_u32): Likewise.
+ 	(__arm_vstrhq_scatter_offset_p_u16): Likewise.
+ 	(__arm_vstrhq_scatter_shifted_offset_s32): Likewise.
+ 	(__arm_vstrhq_scatter_shifted_offset_s16): Likewise.
+ 	(__arm_vstrhq_scatter_shifted_offset_u32): Likewise.
+ 	(__arm_vstrhq_scatter_shifted_offset_u16): Likewise.
+ 	(__arm_vstrhq_scatter_shifted_offset_p_s32): Likewise.
+ 	(__arm_vstrhq_scatter_shifted_offset_p_s16): Likewise.
+ 	(__arm_vstrhq_scatter_shifted_offset_p_u32): Likewise.
+ 	(__arm_vstrhq_scatter_shifted_offset_p_u16): Likewise.
+ 	(__arm_vstrhq_s32): Likewise.
+ 	(__arm_vstrhq_s16): Likewise.
+ 	(__arm_vstrhq_u32): Likewise.
+ 	(__arm_vstrhq_u16): Likewise.
+ 	(__arm_vstrhq_p_s32): Likewise.
+ 	(__arm_vstrhq_p_s16): Likewise.
+ 	(__arm_vstrhq_p_u32): Likewise.
+ 	(__arm_vstrhq_p_u16): Likewise.
+ 	(__arm_vstrwq_s32): Likewise.
+ 	(__arm_vstrwq_u32): Likewise.
+ 	(__arm_vstrwq_p_s32): Likewise.
+ 	(__arm_vstrwq_p_u32): Likewise.
+ 	(__arm_vstrwq_p_f32): Likewise.
+ 	(__arm_vstrwq_f32): Likewise.
+ 	(__arm_vst1q_f32): Likewise.
+ 	(__arm_vst1q_f16): Likewise.
+ 	(__arm_vstrhq_f16): Likewise.
+ 	(__arm_vstrhq_p_f16): Likewise.
+ 	(vst1q): Define polymorphic variant.
+ 	(vstrhq): Likewise.
+ 	(vstrhq_p): Likewise.
+ 	(vstrhq_scatter_offset_p): Likewise.
+ 	(vstrhq_scatter_offset): Likewise.
+ 	(vstrhq_scatter_shifted_offset_p): Likewise.
+ 	(vstrhq_scatter_shifted_offset): Likewise.
+ 	(vstrwq_p): Likewise.
+ 	(vstrwq): Likewise.
+ 	* config/arm/arm_mve_builtins.def (STRS): Use builtin qualifier.
+ 	(STRS_P): Likewise.
+ 	(STRSS): Likewise.
+ 	(STRSS_P): Likewise.
+ 	(STRSU): Likewise.
+ 	(STRSU_P): Likewise.
+ 	(STRU): Likewise.
+ 	(STRU_P): Likewise.
+ 	* config/arm/mve.md (VST1Q): Define iterator.
+ 	(VSTRHSOQ): Likewise.
+ 	(VSTRHSSOQ): Likewise.
+ 	(VSTRHQ): Likewise.
+ 	(VSTRWQ): Likewise.
+ 	(mve_vstrhq_fv8hf): Define RTL pattern.
+ 	(mve_vstrhq_p_fv8hf): Likewise.
+ 	(mve_vstrhq_p_<supf><mode>): Likewise.
+ 	(mve_vstrhq_scatter_offset_p_<supf><mode>): Likewise.
+ 	(mve_vstrhq_scatter_offset_<supf><mode>): Likewise.
+ 	(mve_vstrhq_scatter_shifted_offset_p_<supf><mode>): Likewise.
+ 	(mve_vstrhq_scatter_shifted_offset_<supf><mode>): Likewise.
+ 	(mve_vstrhq_<supf><mode>): Likewise.
+ 	(mve_vstrwq_fv4sf): Likewise.
+ 	(mve_vstrwq_p_fv4sf): Likewise.
+ 	(mve_vstrwq_p_<supf>v4si): Likewise.
+ 	(mve_vstrwq_<supf>v4si): Likewise.
+ 	(mve_vst1q_f<mode>): Define expand.
+ 	(mve_vst1q_<supf><mode>): Likewise.
+ 
+ 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vld1q_s8): Define macro.
+ 	(vld1q_s32): Likewise.
+ 	(vld1q_s16): Likewise.
+ 	(vld1q_u8): Likewise.
+ 	(vld1q_u32): Likewise.
+ 	(vld1q_u16): Likewise.
+ 	(vldrhq_gather_offset_s32): Likewise.
+ 	(vldrhq_gather_offset_s16): Likewise.
+ 	(vldrhq_gather_offset_u32): Likewise.
+ 	(vldrhq_gather_offset_u16): Likewise.
+ 	(vldrhq_gather_offset_z_s32): Likewise.
+ 	(vldrhq_gather_offset_z_s16): Likewise.
+ 	(vldrhq_gather_offset_z_u32): Likewise.
+ 	(vldrhq_gather_offset_z_u16): Likewise.
+ 	(vldrhq_gather_shifted_offset_s32): Likewise.
+ 	(vldrhq_gather_shifted_offset_s16): Likewise.
+ 	(vldrhq_gather_shifted_offset_u32): Likewise.
+ 	(vldrhq_gather_shifted_offset_u16): Likewise.
+ 	(vldrhq_gather_shifted_offset_z_s32): Likewise.
+ 	(vldrhq_gather_shifted_offset_z_s16): Likewise.
+ 	(vldrhq_gather_shifted_offset_z_u32): Likewise.
+ 	(vldrhq_gather_shifted_offset_z_u16): Likewise.
+ 	(vldrhq_s32): Likewise.
+ 	(vldrhq_s16): Likewise.
+ 	(vldrhq_u32): Likewise.
+ 	(vldrhq_u16): Likewise.
+ 	(vldrhq_z_s32): Likewise.
+ 	(vldrhq_z_s16): Likewise.
+ 	(vldrhq_z_u32): Likewise.
+ 	(vldrhq_z_u16): Likewise.
+ 	(vldrwq_s32): Likewise.
+ 	(vldrwq_u32): Likewise.
+ 	(vldrwq_z_s32): Likewise.
+ 	(vldrwq_z_u32): Likewise.
+ 	(vld1q_f32): Likewise.
+ 	(vld1q_f16): Likewise.
+ 	(vldrhq_f16): Likewise.
+ 	(vldrhq_z_f16): Likewise.
+ 	(vldrwq_f32): Likewise.
+ 	(vldrwq_z_f32): Likewise.
+ 	(__arm_vld1q_s8): Define intrinsic.
+ 	(__arm_vld1q_s32): Likewise.
+ 	(__arm_vld1q_s16): Likewise.
+ 	(__arm_vld1q_u8): Likewise.
+ 	(__arm_vld1q_u32): Likewise.
+ 	(__arm_vld1q_u16): Likewise.
+ 	(__arm_vldrhq_gather_offset_s32): Likewise.
+ 	(__arm_vldrhq_gather_offset_s16): Likewise.
+ 	(__arm_vldrhq_gather_offset_u32): Likewise.
+ 	(__arm_vldrhq_gather_offset_u16): Likewise.
+ 	(__arm_vldrhq_gather_offset_z_s32): Likewise.
+ 	(__arm_vldrhq_gather_offset_z_s16): Likewise.
+ 	(__arm_vldrhq_gather_offset_z_u32): Likewise.
+ 	(__arm_vldrhq_gather_offset_z_u16): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_s32): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_s16): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_u32): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_u16): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_z_s32): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_z_s16): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_z_u32): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_z_u16): Likewise.
+ 	(__arm_vldrhq_s32): Likewise.
+ 	(__arm_vldrhq_s16): Likewise.
+ 	(__arm_vldrhq_u32): Likewise.
+ 	(__arm_vldrhq_u16): Likewise.
+ 	(__arm_vldrhq_z_s32): Likewise.
+ 	(__arm_vldrhq_z_s16): Likewise.
+ 	(__arm_vldrhq_z_u32): Likewise.
+ 	(__arm_vldrhq_z_u16): Likewise.
+ 	(__arm_vldrwq_s32): Likewise.
+ 	(__arm_vldrwq_u32): Likewise.
+ 	(__arm_vldrwq_z_s32): Likewise.
+ 	(__arm_vldrwq_z_u32): Likewise.
+ 	(__arm_vld1q_f32): Likewise.
+ 	(__arm_vld1q_f16): Likewise.
+ 	(__arm_vldrwq_f32): Likewise.
+ 	(__arm_vldrwq_z_f32): Likewise.
+ 	(__arm_vldrhq_z_f16): Likewise.
+ 	(__arm_vldrhq_f16): Likewise.
+ 	(vld1q): Define polymorphic variant.
+ 	(vldrhq_gather_offset): Likewise.
+ 	(vldrhq_gather_offset_z): Likewise.
+ 	(vldrhq_gather_shifted_offset): Likewise.
+ 	(vldrhq_gather_shifted_offset_z): Likewise.
+ 	* config/arm/arm_mve_builtins.def (LDRU): Use builtin qualifier.
+ 	(LDRS): Likewise.
+ 	(LDRU_Z): Likewise.
+ 	(LDRS_Z): Likewise.
+ 	(LDRGU_Z): Likewise.
+ 	(LDRGU): Likewise.
+ 	(LDRGS_Z): Likewise.
+ 	(LDRGS): Likewise.
+ 	* config/arm/mve.md (MVE_H_ELEM): Define mode iterator.
+ 	(V_sz_elem1): Likewise.
+ 	(VLD1Q): Define iterator.
+ 	(VLDRHGOQ): Likewise.
+ 	(VLDRHGSOQ): Likewise.
+ 	(VLDRHQ): Likewise.
+ 	(VLDRWQ): Likewise.
+ 	(mve_vldrhq_fv8hf): Define RTL pattern.
+ 	(mve_vldrhq_gather_offset_<supf><mode>): Likewise.
+ 	(mve_vldrhq_gather_offset_z_<supf><mode>): Likewise.
+ 	(mve_vldrhq_gather_shifted_offset_<supf><mode>): Likewise.
+ 	(mve_vldrhq_gather_shifted_offset_z_<supf><mode>): Likewise.
+ 	(mve_vldrhq_<supf><mode>): Likewise.
+ 	(mve_vldrhq_z_fv8hf): Likewise.
+ 	(mve_vldrhq_z_<supf><mode>): Likewise.
+ 	(mve_vldrwq_fv4sf): Likewise.
+ 	(mve_vldrwq_<supf>v4si): Likewise.
+ 	(mve_vldrwq_z_fv4sf): Likewise.
+ 	(mve_vldrwq_z_<supf>v4si): Likewise.
+ 	(mve_vld1q_f<mode>): Define RTL expand pattern.
+ 	(mve_vld1q_<supf><mode>): Likewise.
+ 
+ 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vld1q_s8): Define macro.
+ 	(vld1q_s32): Likewise.
+ 	(vld1q_s16): Likewise.
+ 	(vld1q_u8): Likewise.
+ 	(vld1q_u32): Likewise.
+ 	(vld1q_u16): Likewise.
+ 	(vldrhq_gather_offset_s32): Likewise.
+ 	(vldrhq_gather_offset_s16): Likewise.
+ 	(vldrhq_gather_offset_u32): Likewise.
+ 	(vldrhq_gather_offset_u16): Likewise.
+ 	(vldrhq_gather_offset_z_s32): Likewise.
+ 	(vldrhq_gather_offset_z_s16): Likewise.
+ 	(vldrhq_gather_offset_z_u32): Likewise.
+ 	(vldrhq_gather_offset_z_u16): Likewise.
+ 	(vldrhq_gather_shifted_offset_s32): Likewise.
+ 	(vldrhq_gather_shifted_offset_s16): Likewise.
+ 	(vldrhq_gather_shifted_offset_u32): Likewise.
+ 	(vldrhq_gather_shifted_offset_u16): Likewise.
+ 	(vldrhq_gather_shifted_offset_z_s32): Likewise.
+ 	(vldrhq_gather_shifted_offset_z_s16): Likewise.
+ 	(vldrhq_gather_shifted_offset_z_u32): Likewise.
+ 	(vldrhq_gather_shifted_offset_z_u16): Likewise.
+ 	(vldrhq_s32): Likewise.
+ 	(vldrhq_s16): Likewise.
+ 	(vldrhq_u32): Likewise.
+ 	(vldrhq_u16): Likewise.
+ 	(vldrhq_z_s32): Likewise.
+ 	(vldrhq_z_s16): Likewise.
+ 	(vldrhq_z_u32): Likewise.
+ 	(vldrhq_z_u16): Likewise.
+ 	(vldrwq_s32): Likewise.
+ 	(vldrwq_u32): Likewise.
+ 	(vldrwq_z_s32): Likewise.
+ 	(vldrwq_z_u32): Likewise.
+ 	(vld1q_f32): Likewise.
+ 	(vld1q_f16): Likewise.
+ 	(vldrhq_f16): Likewise.
+ 	(vldrhq_z_f16): Likewise.
+ 	(vldrwq_f32): Likewise.
+ 	(vldrwq_z_f32): Likewise.
+ 	(__arm_vld1q_s8): Define intrinsic.
+ 	(__arm_vld1q_s32): Likewise.
+ 	(__arm_vld1q_s16): Likewise.
+ 	(__arm_vld1q_u8): Likewise.
+ 	(__arm_vld1q_u32): Likewise.
+ 	(__arm_vld1q_u16): Likewise.
+ 	(__arm_vldrhq_gather_offset_s32): Likewise.
+ 	(__arm_vldrhq_gather_offset_s16): Likewise.
+ 	(__arm_vldrhq_gather_offset_u32): Likewise.
+ 	(__arm_vldrhq_gather_offset_u16): Likewise.
+ 	(__arm_vldrhq_gather_offset_z_s32): Likewise.
+ 	(__arm_vldrhq_gather_offset_z_s16): Likewise.
+ 	(__arm_vldrhq_gather_offset_z_u32): Likewise.
+ 	(__arm_vldrhq_gather_offset_z_u16): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_s32): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_s16): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_u32): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_u16): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_z_s32): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_z_s16): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_z_u32): Likewise.
+ 	(__arm_vldrhq_gather_shifted_offset_z_u16): Likewise.
+ 	(__arm_vldrhq_s32): Likewise.
+ 	(__arm_vldrhq_s16): Likewise.
+ 	(__arm_vldrhq_u32): Likewise.
+ 	(__arm_vldrhq_u16): Likewise.
+ 	(__arm_vldrhq_z_s32): Likewise.
+ 	(__arm_vldrhq_z_s16): Likewise.
+ 	(__arm_vldrhq_z_u32): Likewise.
+ 	(__arm_vldrhq_z_u16): Likewise.
+ 	(__arm_vldrwq_s32): Likewise.
+ 	(__arm_vldrwq_u32): Likewise.
+ 	(__arm_vldrwq_z_s32): Likewise.
+ 	(__arm_vldrwq_z_u32): Likewise.
+ 	(__arm_vld1q_f32): Likewise.
+ 	(__arm_vld1q_f16): Likewise.
+ 	(__arm_vldrwq_f32): Likewise.
+ 	(__arm_vldrwq_z_f32): Likewise.
+ 	(__arm_vldrhq_z_f16): Likewise.
+ 	(__arm_vldrhq_f16): Likewise.
+ 	(vld1q): Define polymorphic variant.
+ 	(vldrhq_gather_offset): Likewise.
+ 	(vldrhq_gather_offset_z): Likewise.
+ 	(vldrhq_gather_shifted_offset): Likewise.
+ 	(vldrhq_gather_shifted_offset_z): Likewise.
+ 	* config/arm/arm_mve_builtins.def (LDRU): Use builtin qualifier.
+ 	(LDRS): Likewise.
+ 	(LDRU_Z): Likewise.
+ 	(LDRS_Z): Likewise.
+ 	(LDRGU_Z): Likewise.
+ 	(LDRGU): Likewise.
+ 	(LDRGS_Z): Likewise.
+ 	(LDRGS): Likewise.
+ 	* config/arm/mve.md (MVE_H_ELEM): Define mode iterator.
+ 	(V_sz_elem1): Likewise.
+ 	(VLD1Q): Define iterator.
+ 	(VLDRHGOQ): Likewise.
+ 	(VLDRHGSOQ): Likewise.
+ 	(VLDRHQ): Likewise.
+ 	(VLDRWQ): Likewise.
+ 	(mve_vldrhq_fv8hf): Define RTL pattern.
+ 	(mve_vldrhq_gather_offset_<supf><mode>): Likewise.
+ 	(mve_vldrhq_gather_offset_z_<supf><mode>): Likewise.
+ 	(mve_vldrhq_gather_shifted_offset_<supf><mode>): Likewise.
+ 	(mve_vldrhq_gather_shifted_offset_z_<supf><mode>): Likewise.
+ 	(mve_vldrhq_<supf><mode>): Likewise.
+ 	(mve_vldrhq_z_fv8hf): Likewise.
+ 	(mve_vldrhq_z_<supf><mode>): Likewise.
+ 	(mve_vldrwq_fv4sf): Likewise.
+ 	(mve_vldrwq_<supf>v4si): Likewise.
+ 	(mve_vldrwq_z_fv4sf): Likewise.
+ 	(mve_vldrwq_z_<supf>v4si): Likewise.
+ 	(mve_vld1q_f<mode>): Define RTL expand pattern.
+ 	(mve_vld1q_<supf><mode>): Likewise.
+ 
+ 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (LDRGBS_Z_QUALIFIERS): Define builtin
+ 	qualifier.
+ 	(LDRGBU_Z_QUALIFIERS): Likewise.
+ 	(LDRGS_Z_QUALIFIERS): Likewise.
+ 	(LDRGU_Z_QUALIFIERS): Likewise.
+ 	(LDRS_Z_QUALIFIERS): Likewise.
+ 	(LDRU_Z_QUALIFIERS): Likewise.
+ 	* config/arm/arm_mve.h (vldrbq_gather_offset_z_s16): Define macro.
+ 	(vldrbq_gather_offset_z_u8): Likewise.
+ 	(vldrbq_gather_offset_z_s32): Likewise.
+ 	(vldrbq_gather_offset_z_u16): Likewise.
+ 	(vldrbq_gather_offset_z_u32): Likewise.
+ 	(vldrbq_gather_offset_z_s8): Likewise.
+ 	(vldrbq_z_s16): Likewise.
+ 	(vldrbq_z_u8): Likewise.
+ 	(vldrbq_z_s8): Likewise.
+ 	(vldrbq_z_s32): Likewise.
+ 	(vldrbq_z_u16): Likewise.
+ 	(vldrbq_z_u32): Likewise.
+ 	(vldrwq_gather_base_z_u32): Likewise.
+ 	(vldrwq_gather_base_z_s32): Likewise.
+ 	(__arm_vldrbq_gather_offset_z_s8): Define intrinsic.
+ 	(__arm_vldrbq_gather_offset_z_s32): Likewise.
+ 	(__arm_vldrbq_gather_offset_z_s16): Likewise.
+ 	(__arm_vldrbq_gather_offset_z_u8): Likewise.
+ 	(__arm_vldrbq_gather_offset_z_u32): Likewise.
+ 	(__arm_vldrbq_gather_offset_z_u16): Likewise.
+ 	(__arm_vldrbq_z_s8): Likewise.
+ 	(__arm_vldrbq_z_s32): Likewise.
+ 	(__arm_vldrbq_z_s16): Likewise.
+ 	(__arm_vldrbq_z_u8): Likewise.
+ 	(__arm_vldrbq_z_u32): Likewise.
+ 	(__arm_vldrbq_z_u16): Likewise.
+ 	(__arm_vldrwq_gather_base_z_s32): Likewise.
+ 	(__arm_vldrwq_gather_base_z_u32): Likewise.
+ 	(vldrbq_gather_offset_z): Define polymorphic variant.
+ 	* config/arm/arm_mve_builtins.def (LDRGBS_Z_QUALIFIERS): Use builtin
+ 	qualifier.
+ 	(LDRGBU_Z_QUALIFIERS): Likewise.
+ 	(LDRGS_Z_QUALIFIERS): Likewise.
+ 	(LDRGU_Z_QUALIFIERS): Likewise.
+ 	(LDRS_Z_QUALIFIERS): Likewise.
+ 	(LDRU_Z_QUALIFIERS): Likewise.
+ 	* config/arm/mve.md (mve_vldrbq_gather_offset_z_<supf><mode>): Define
+ 	RTL pattern.
+ 	(mve_vldrbq_z_<supf><mode>): Likewise.
+ 	(mve_vldrwq_gather_base_z_<supf>v4si): Likewise.
+ 
+ 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (STRS_P_QUALIFIERS): Define builtin
+ 	qualifier.
+ 	(STRU_P_QUALIFIERS): Likewise.
+ 	(STRSU_P_QUALIFIERS): Likewise.
+ 	(STRSS_P_QUALIFIERS): Likewise.
+ 	(STRSBS_P_QUALIFIERS): Likewise.
+ 	(STRSBU_P_QUALIFIERS): Likewise.
+ 	* config/arm/arm_mve.h (vstrbq_p_s8): Define macro.
+ 	(vstrbq_p_s32): Likewise.
+ 	(vstrbq_p_s16): Likewise.
+ 	(vstrbq_p_u8): Likewise.
+ 	(vstrbq_p_u32): Likewise.
+ 	(vstrbq_p_u16): Likewise.
+ 	(vstrbq_scatter_offset_p_s8): Likewise.
+ 	(vstrbq_scatter_offset_p_s32): Likewise.
+ 	(vstrbq_scatter_offset_p_s16): Likewise.
+ 	(vstrbq_scatter_offset_p_u8): Likewise.
+ 	(vstrbq_scatter_offset_p_u32): Likewise.
+ 	(vstrbq_scatter_offset_p_u16): Likewise.
+ 	(vstrwq_scatter_base_p_s32): Likewise.
+ 	(vstrwq_scatter_base_p_u32): Likewise.
+ 	(__arm_vstrbq_p_s8): Define intrinsic.
+ 	(__arm_vstrbq_p_s32): Likewise.
+ 	(__arm_vstrbq_p_s16): Likewise.
+ 	(__arm_vstrbq_p_u8): Likewise.
+ 	(__arm_vstrbq_p_u32): Likewise.
+ 	(__arm_vstrbq_p_u16): Likewise.
+ 	(__arm_vstrbq_scatter_offset_p_s8): Likewise.
+ 	(__arm_vstrbq_scatter_offset_p_s32): Likewise.
+ 	(__arm_vstrbq_scatter_offset_p_s16): Likewise.
+ 	(__arm_vstrbq_scatter_offset_p_u8): Likewise.
+ 	(__arm_vstrbq_scatter_offset_p_u32): Likewise.
+ 	(__arm_vstrbq_scatter_offset_p_u16): Likewise.
+ 	(__arm_vstrwq_scatter_base_p_s32): Likewise.
+ 	(__arm_vstrwq_scatter_base_p_u32): Likewise.
+ 	(vstrbq_p): Define polymorphic variant.
+ 	(vstrbq_scatter_offset_p): Likewise.
+ 	(vstrwq_scatter_base_p): Likewise.
+ 	* config/arm/arm_mve_builtins.def (STRS_P_QUALIFIERS): Use builtin
+ 	qualifier.
+ 	(STRU_P_QUALIFIERS): Likewise.
+ 	(STRSU_P_QUALIFIERS): Likewise.
+ 	(STRSS_P_QUALIFIERS): Likewise.
+ 	(STRSBS_P_QUALIFIERS): Likewise.
+ 	(STRSBU_P_QUALIFIERS): Likewise.
+ 	* config/arm/mve.md (mve_vstrbq_scatter_offset_p_<supf><mode>): Define
+ 	RTL pattern.
+ 	(mve_vstrwq_scatter_base_p_<supf>v4si): Likewise.
+ 	(mve_vstrbq_p_<supf><mode>): Likewise.
+ 
+ 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (LDRGU_QUALIFIERS): Define builtin
+ 	qualifier.
+ 	(LDRGS_QUALIFIERS): Likewise.
+ 	(LDRS_QUALIFIERS): Likewise.
+ 	(LDRU_QUALIFIERS): Likewise.
+ 	(LDRGBS_QUALIFIERS): Likewise.
+ 	(LDRGBU_QUALIFIERS): Likewise.
+ 	* config/arm/arm_mve.h (vldrbq_gather_offset_u8): Define macro.
+ 	(vldrbq_gather_offset_s8): Likewise.
+ 	(vldrbq_s8): Likewise.
+ 	(vldrbq_u8): Likewise.
+ 	(vldrbq_gather_offset_u16): Likewise.
+ 	(vldrbq_gather_offset_s16): Likewise.
+ 	(vldrbq_s16): Likewise.
+ 	(vldrbq_u16): Likewise.
+ 	(vldrbq_gather_offset_u32): Likewise.
+ 	(vldrbq_gather_offset_s32): Likewise.
+ 	(vldrbq_s32): Likewise.
+ 	(vldrbq_u32): Likewise.
+ 	(vldrwq_gather_base_s32): Likewise.
+ 	(vldrwq_gather_base_u32): Likewise.
+ 	(__arm_vldrbq_gather_offset_u8): Define intrinsic.
+ 	(__arm_vldrbq_gather_offset_s8): Likewise.
+ 	(__arm_vldrbq_s8): Likewise.
+ 	(__arm_vldrbq_u8): Likewise.
+ 	(__arm_vldrbq_gather_offset_u16): Likewise.
+ 	(__arm_vldrbq_gather_offset_s16): Likewise.
+ 	(__arm_vldrbq_s16): Likewise.
+ 	(__arm_vldrbq_u16): Likewise.
+ 	(__arm_vldrbq_gather_offset_u32): Likewise.
+ 	(__arm_vldrbq_gather_offset_s32): Likewise.
+ 	(__arm_vldrbq_s32): Likewise.
+ 	(__arm_vldrbq_u32): Likewise.
+ 	(__arm_vldrwq_gather_base_s32): Likewise.
+ 	(__arm_vldrwq_gather_base_u32): Likewise.
+ 	(vldrbq_gather_offset): Define polymorphic variant.
+ 	* config/arm/arm_mve_builtins.def (LDRGU_QUALIFIERS): Use builtin
+ 	qualifier.
+ 	(LDRGS_QUALIFIERS): Likewise.
+ 	(LDRS_QUALIFIERS): Likewise.
+ 	(LDRU_QUALIFIERS): Likewise.
+ 	(LDRGBS_QUALIFIERS): Likewise.
+ 	(LDRGBU_QUALIFIERS): Likewise.
+ 	* config/arm/mve.md (VLDRBGOQ): Define iterator.
+ 	(VLDRBQ): Likewise. 
+ 	(VLDRWGBQ): Likewise.
+ 	(mve_vldrbq_gather_offset_<supf><mode>): Define RTL pattern.
+ 	(mve_vldrbq_<supf><mode>): Likewise.
+ 	(mve_vldrwq_gather_base_<supf>v4si): Likewise.
+ 
+ 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (STRS_QUALIFIERS): Define builtin qualifier.
+ 	(STRU_QUALIFIERS): Likewise.
+ 	(STRSS_QUALIFIERS): Likewise.
+ 	(STRSU_QUALIFIERS): Likewise.
+ 	(STRSBS_QUALIFIERS): Likewise.
+ 	(STRSBU_QUALIFIERS): Likewise.
+ 	* config/arm/arm_mve.h (vstrbq_s8): Define macro.
+ 	(vstrbq_u8): Likewise.
+ 	(vstrbq_u16): Likewise.
+ 	(vstrbq_scatter_offset_s8): Likewise.
+ 	(vstrbq_scatter_offset_u8): Likewise.
+ 	(vstrbq_scatter_offset_u16): Likewise.
+ 	(vstrbq_s16): Likewise.
+ 	(vstrbq_u32): Likewise.
+ 	(vstrbq_scatter_offset_s16): Likewise.
+ 	(vstrbq_scatter_offset_u32): Likewise.
+ 	(vstrbq_s32): Likewise.
+ 	(vstrbq_scatter_offset_s32): Likewise.
+ 	(vstrwq_scatter_base_s32): Likewise.
+ 	(vstrwq_scatter_base_u32): Likewise.
+ 	(__arm_vstrbq_scatter_offset_s8): Define intrinsic.
+ 	(__arm_vstrbq_scatter_offset_s32): Likewise.
+ 	(__arm_vstrbq_scatter_offset_s16): Likewise.
+ 	(__arm_vstrbq_scatter_offset_u8): Likewise.
+ 	(__arm_vstrbq_scatter_offset_u32): Likewise.
+ 	(__arm_vstrbq_scatter_offset_u16): Likewise.
+ 	(__arm_vstrbq_s8): Likewise.
+ 	(__arm_vstrbq_s32): Likewise.
+ 	(__arm_vstrbq_s16): Likewise.
+ 	(__arm_vstrbq_u8): Likewise.
+ 	(__arm_vstrbq_u32): Likewise.
+ 	(__arm_vstrbq_u16): Likewise.
+ 	(__arm_vstrwq_scatter_base_s32): Likewise.
+ 	(__arm_vstrwq_scatter_base_u32): Likewise.
+ 	(vstrbq): Define polymorphic variant.
+ 	(vstrbq_scatter_offset): Likewise.
+ 	(vstrwq_scatter_base): Likewise.
+ 	* config/arm/arm_mve_builtins.def (STRS_QUALIFIERS): Use builtin
+ 	qualifier.
+ 	(STRU_QUALIFIERS): Likewise.
+ 	(STRSS_QUALIFIERS): Likewise.
+ 	(STRSU_QUALIFIERS): Likewise.
+ 	(STRSBS_QUALIFIERS): Likewise.
+ 	(STRSBU_QUALIFIERS): Likewise.
+ 	* config/arm/mve.md (MVE_B_ELEM): Define mode attribute iterator.
+ 	(VSTRWSBQ): Define iterators.
+ 	(VSTRBSOQ): Likewise. 
+ 	(VSTRBQ): Likewise.
+ 	(mve_vstrbq_<supf><mode>): Define RTL pattern.
+ 	(mve_vstrbq_scatter_offset_<supf><mode>): Likewise.
+ 	(mve_vstrwq_scatter_base_<supf>v4si): Likewise.
+ 
+ 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vabdq_m_f32): Define macro.
+ 	(vabdq_m_f16): Likewise.
+ 	(vaddq_m_f32): Likewise.
+ 	(vaddq_m_f16): Likewise.
+ 	(vaddq_m_n_f32): Likewise.
+ 	(vaddq_m_n_f16): Likewise.
+ 	(vandq_m_f32): Likewise.
+ 	(vandq_m_f16): Likewise.
+ 	(vbicq_m_f32): Likewise.
+ 	(vbicq_m_f16): Likewise.
+ 	(vbrsrq_m_n_f32): Likewise.
+ 	(vbrsrq_m_n_f16): Likewise.
+ 	(vcaddq_rot270_m_f32): Likewise.
+ 	(vcaddq_rot270_m_f16): Likewise.
+ 	(vcaddq_rot90_m_f32): Likewise.
+ 	(vcaddq_rot90_m_f16): Likewise.
+ 	(vcmlaq_m_f32): Likewise.
+ 	(vcmlaq_m_f16): Likewise.
+ 	(vcmlaq_rot180_m_f32): Likewise.
+ 	(vcmlaq_rot180_m_f16): Likewise.
+ 	(vcmlaq_rot270_m_f32): Likewise.
+ 	(vcmlaq_rot270_m_f16): Likewise.
+ 	(vcmlaq_rot90_m_f32): Likewise.
+ 	(vcmlaq_rot90_m_f16): Likewise.
+ 	(vcmulq_m_f32): Likewise.
+ 	(vcmulq_m_f16): Likewise.
+ 	(vcmulq_rot180_m_f32): Likewise.
+ 	(vcmulq_rot180_m_f16): Likewise.
+ 	(vcmulq_rot270_m_f32): Likewise.
+ 	(vcmulq_rot270_m_f16): Likewise.
+ 	(vcmulq_rot90_m_f32): Likewise.
+ 	(vcmulq_rot90_m_f16): Likewise.
+ 	(vcvtq_m_n_s32_f32): Likewise.
+ 	(vcvtq_m_n_s16_f16): Likewise.
+ 	(vcvtq_m_n_u32_f32): Likewise.
+ 	(vcvtq_m_n_u16_f16): Likewise.
+ 	(veorq_m_f32): Likewise.
+ 	(veorq_m_f16): Likewise.
+ 	(vfmaq_m_f32): Likewise.
+ 	(vfmaq_m_f16): Likewise.
+ 	(vfmaq_m_n_f32): Likewise.
+ 	(vfmaq_m_n_f16): Likewise.
+ 	(vfmasq_m_n_f32): Likewise.
+ 	(vfmasq_m_n_f16): Likewise.
+ 	(vfmsq_m_f32): Likewise.
+ 	(vfmsq_m_f16): Likewise.
+ 	(vmaxnmq_m_f32): Likewise.
+ 	(vmaxnmq_m_f16): Likewise.
+ 	(vminnmq_m_f32): Likewise.
+ 	(vminnmq_m_f16): Likewise.
+ 	(vmulq_m_f32): Likewise.
+ 	(vmulq_m_f16): Likewise.
+ 	(vmulq_m_n_f32): Likewise.
+ 	(vmulq_m_n_f16): Likewise.
+ 	(vornq_m_f32): Likewise.
+ 	(vornq_m_f16): Likewise.
+ 	(vorrq_m_f32): Likewise.
+ 	(vorrq_m_f16): Likewise.
+ 	(vsubq_m_f32): Likewise.
+ 	(vsubq_m_f16): Likewise.
+ 	(vsubq_m_n_f32): Likewise.
+ 	(vsubq_m_n_f16): Likewise.
+ 	(__attribute__): Likewise.
+ 	(__arm_vabdq_m_f32): Likewise.
+ 	(__arm_vabdq_m_f16): Likewise.
+ 	(__arm_vaddq_m_f32): Likewise.
+ 	(__arm_vaddq_m_f16): Likewise.
+ 	(__arm_vaddq_m_n_f32): Likewise.
+ 	(__arm_vaddq_m_n_f16): Likewise.
+ 	(__arm_vandq_m_f32): Likewise.
+ 	(__arm_vandq_m_f16): Likewise.
+ 	(__arm_vbicq_m_f32): Likewise.
+ 	(__arm_vbicq_m_f16): Likewise.
+ 	(__arm_vbrsrq_m_n_f32): Likewise.
+ 	(__arm_vbrsrq_m_n_f16): Likewise.
+ 	(__arm_vcaddq_rot270_m_f32): Likewise.
+ 	(__arm_vcaddq_rot270_m_f16): Likewise.
+ 	(__arm_vcaddq_rot90_m_f32): Likewise.
+ 	(__arm_vcaddq_rot90_m_f16): Likewise.
+ 	(__arm_vcmlaq_m_f32): Likewise.
+ 	(__arm_vcmlaq_m_f16): Likewise.
+ 	(__arm_vcmlaq_rot180_m_f32): Likewise.
+ 	(__arm_vcmlaq_rot180_m_f16): Likewise.
+ 	(__arm_vcmlaq_rot270_m_f32): Likewise.
+ 	(__arm_vcmlaq_rot270_m_f16): Likewise.
+ 	(__arm_vcmlaq_rot90_m_f32): Likewise.
+ 	(__arm_vcmlaq_rot90_m_f16): Likewise.
+ 	(__arm_vcmulq_m_f32): Likewise.
+ 	(__arm_vcmulq_m_f16): Likewise.
+ 	(__arm_vcmulq_rot180_m_f32): Define intrinsic.
+ 	(__arm_vcmulq_rot180_m_f16): Likewise.
+ 	(__arm_vcmulq_rot270_m_f32): Likewise.
+ 	(__arm_vcmulq_rot270_m_f16): Likewise.
+ 	(__arm_vcmulq_rot90_m_f32): Likewise.
+ 	(__arm_vcmulq_rot90_m_f16): Likewise.
+ 	(__arm_vcvtq_m_n_s32_f32): Likewise.
+ 	(__arm_vcvtq_m_n_s16_f16): Likewise.
+ 	(__arm_vcvtq_m_n_u32_f32): Likewise.
+ 	(__arm_vcvtq_m_n_u16_f16): Likewise.
+ 	(__arm_veorq_m_f32): Likewise.
+ 	(__arm_veorq_m_f16): Likewise.
+ 	(__arm_vfmaq_m_f32): Likewise.
+ 	(__arm_vfmaq_m_f16): Likewise.
+ 	(__arm_vfmaq_m_n_f32): Likewise.
+ 	(__arm_vfmaq_m_n_f16): Likewise.
+ 	(__arm_vfmasq_m_n_f32): Likewise.
+ 	(__arm_vfmasq_m_n_f16): Likewise.
+ 	(__arm_vfmsq_m_f32): Likewise.
+ 	(__arm_vfmsq_m_f16): Likewise.
+ 	(__arm_vmaxnmq_m_f32): Likewise.
+ 	(__arm_vmaxnmq_m_f16): Likewise.
+ 	(__arm_vminnmq_m_f32): Likewise.
+ 	(__arm_vminnmq_m_f16): Likewise.
+ 	(__arm_vmulq_m_f32): Likewise.
+ 	(__arm_vmulq_m_f16): Likewise.
+ 	(__arm_vmulq_m_n_f32): Likewise.
+ 	(__arm_vmulq_m_n_f16): Likewise.
+ 	(__arm_vornq_m_f32): Likewise.
+ 	(__arm_vornq_m_f16): Likewise.
+ 	(__arm_vorrq_m_f32): Likewise.
+ 	(__arm_vorrq_m_f16): Likewise.
+ 	(__arm_vsubq_m_f32): Likewise.
+ 	(__arm_vsubq_m_f16): Likewise.
+ 	(__arm_vsubq_m_n_f32): Likewise.
+ 	(__arm_vsubq_m_n_f16): Likewise.
+ 	(vabdq_m): Define polymorphic variant.
+ 	(vaddq_m): Likewise.
+ 	(vaddq_m_n): Likewise.
+ 	(vandq_m): Likewise.
+ 	(vbicq_m): Likewise.
+ 	(vbrsrq_m_n): Likewise.
+ 	(vcaddq_rot270_m): Likewise.
+ 	(vcaddq_rot90_m): Likewise.
+ 	(vcmlaq_m): Likewise.
+ 	(vcmlaq_rot180_m): Likewise.
+ 	(vcmlaq_rot270_m): Likewise.
+ 	(vcmlaq_rot90_m): Likewise.
+ 	(vcmulq_m): Likewise.
+ 	(vcmulq_rot180_m): Likewise.
+ 	(vcmulq_rot270_m): Likewise.
+ 	(vcmulq_rot90_m): Likewise.
+ 	(veorq_m): Likewise.
+ 	(vfmaq_m): Likewise.
+ 	(vfmaq_m_n): Likewise.
+ 	(vfmasq_m_n): Likewise.
+ 	(vfmsq_m): Likewise.
+ 	(vmaxnmq_m): Likewise.
+ 	(vminnmq_m): Likewise.
+ 	(vmulq_m): Likewise.
+ 	(vmulq_m_n): Likewise.
+ 	(vornq_m): Likewise.
+ 	(vsubq_m): Likewise.
+ 	(vsubq_m_n): Likewise.
+ 	(vorrq_m): Likewise.
+ 	* config/arm/arm_mve_builtins.def (QUADOP_NONE_NONE_NONE_IMM_UNONE): Use
+ 	builtin qualifier.
+ 	(QUADOP_NONE_NONE_NONE_NONE_UNONE): Likewise.
+ 	(QUADOP_UNONE_UNONE_NONE_IMM_UNONE): Likewise.
+ 	* config/arm/mve.md (mve_vabdq_m_f<mode>): Define RTL pattern.
+ 	(mve_vaddq_m_f<mode>): Likewise.
+ 	(mve_vaddq_m_n_f<mode>): Likewise.
+ 	(mve_vandq_m_f<mode>): Likewise.
+ 	(mve_vbicq_m_f<mode>): Likewise.
+ 	(mve_vbrsrq_m_n_f<mode>): Likewise.
+ 	(mve_vcaddq_rot270_m_f<mode>): Likewise.
+ 	(mve_vcaddq_rot90_m_f<mode>): Likewise.
+ 	(mve_vcmlaq_m_f<mode>): Likewise.
+ 	(mve_vcmlaq_rot180_m_f<mode>): Likewise.
+ 	(mve_vcmlaq_rot270_m_f<mode>): Likewise.
+ 	(mve_vcmlaq_rot90_m_f<mode>): Likewise.
+ 	(mve_vcmulq_m_f<mode>): Likewise.
+ 	(mve_vcmulq_rot180_m_f<mode>): Likewise.
+ 	(mve_vcmulq_rot270_m_f<mode>): Likewise.
+ 	(mve_vcmulq_rot90_m_f<mode>): Likewise.
+ 	(mve_veorq_m_f<mode>): Likewise.
+ 	(mve_vfmaq_m_f<mode>): Likewise.
+ 	(mve_vfmaq_m_n_f<mode>): Likewise.
+ 	(mve_vfmasq_m_n_f<mode>): Likewise.
+ 	(mve_vfmsq_m_f<mode>): Likewise.
+ 	(mve_vmaxnmq_m_f<mode>): Likewise.
+ 	(mve_vminnmq_m_f<mode>): Likewise.
+ 	(mve_vmulq_m_f<mode>): Likewise.
+ 	(mve_vmulq_m_n_f<mode>): Likewise.
+ 	(mve_vornq_m_f<mode>): Likewise.
+ 	(mve_vorrq_m_f<mode>): Likewise.
+ 	(mve_vsubq_m_f<mode>): Likewise.
+ 	(mve_vsubq_m_n_f<mode>): Likewise.
+ 
+ 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm-protos.h (arm_mve_immediate_check): 
+ 	* config/arm/arm.c (arm_mve_immediate_check): Define fuction to	check
+ 	mode and interger value.
+ 	* config/arm/arm_mve.h (vmlaldavaq_p_s32): Define macro.
+ 	(vmlaldavaq_p_s16): Likewise.
+ 	(vmlaldavaq_p_u32): Likewise.
+ 	(vmlaldavaq_p_u16): Likewise.
+ 	(vmlaldavaxq_p_s32): Likewise.
+ 	(vmlaldavaxq_p_s16): Likewise.
+ 	(vmlaldavaxq_p_u32): Likewise.
+ 	(vmlaldavaxq_p_u16): Likewise.
+ 	(vmlsldavaq_p_s32): Likewise.
+ 	(vmlsldavaq_p_s16): Likewise.
+ 	(vmlsldavaxq_p_s32): Likewise.
+ 	(vmlsldavaxq_p_s16): Likewise.
+ 	(vmullbq_poly_m_p8): Likewise.
+ 	(vmullbq_poly_m_p16): Likewise.
+ 	(vmulltq_poly_m_p8): Likewise.
+ 	(vmulltq_poly_m_p16): Likewise.
+ 	(vqdmullbq_m_n_s32): Likewise.
+ 	(vqdmullbq_m_n_s16): Likewise.
+ 	(vqdmullbq_m_s32): Likewise.
+ 	(vqdmullbq_m_s16): Likewise.
+ 	(vqdmulltq_m_n_s32): Likewise.
+ 	(vqdmulltq_m_n_s16): Likewise.
+ 	(vqdmulltq_m_s32): Likewise.
+ 	(vqdmulltq_m_s16): Likewise.
+ 	(vqrshrnbq_m_n_s32): Likewise.
+ 	(vqrshrnbq_m_n_s16): Likewise.
+ 	(vqrshrnbq_m_n_u32): Likewise.
+ 	(vqrshrnbq_m_n_u16): Likewise.
+ 	(vqrshrntq_m_n_s32): Likewise.
+ 	(vqrshrntq_m_n_s16): Likewise.
+ 	(vqrshrntq_m_n_u32): Likewise.
+ 	(vqrshrntq_m_n_u16): Likewise.
+ 	(vqrshrunbq_m_n_s32): Likewise.
+ 	(vqrshrunbq_m_n_s16): Likewise.
+ 	(vqrshruntq_m_n_s32): Likewise.
+ 	(vqrshruntq_m_n_s16): Likewise.
+ 	(vqshrnbq_m_n_s32): Likewise.
+ 	(vqshrnbq_m_n_s16): Likewise.
+ 	(vqshrnbq_m_n_u32): Likewise.
+ 	(vqshrnbq_m_n_u16): Likewise.
+ 	(vqshrntq_m_n_s32): Likewise.
+ 	(vqshrntq_m_n_s16): Likewise.
+ 	(vqshrntq_m_n_u32): Likewise.
+ 	(vqshrntq_m_n_u16): Likewise.
+ 	(vqshrunbq_m_n_s32): Likewise.
+ 	(vqshrunbq_m_n_s16): Likewise.
+ 	(vqshruntq_m_n_s32): Likewise.
+ 	(vqshruntq_m_n_s16): Likewise.
+ 	(vrmlaldavhaq_p_s32): Likewise.
+ 	(vrmlaldavhaq_p_u32): Likewise.
+ 	(vrmlaldavhaxq_p_s32): Likewise.
+ 	(vrmlsldavhaq_p_s32): Likewise.
+ 	(vrmlsldavhaxq_p_s32): Likewise.
+ 	(vrshrnbq_m_n_s32): Likewise.
+ 	(vrshrnbq_m_n_s16): Likewise.
+ 	(vrshrnbq_m_n_u32): Likewise.
+ 	(vrshrnbq_m_n_u16): Likewise.
+ 	(vrshrntq_m_n_s32): Likewise.
+ 	(vrshrntq_m_n_s16): Likewise.
+ 	(vrshrntq_m_n_u32): Likewise.
+ 	(vrshrntq_m_n_u16): Likewise.
+ 	(vshllbq_m_n_s8): Likewise.
+ 	(vshllbq_m_n_s16): Likewise.
+ 	(vshllbq_m_n_u8): Likewise.
+ 	(vshllbq_m_n_u16): Likewise.
+ 	(vshlltq_m_n_s8): Likewise.
+ 	(vshlltq_m_n_s16): Likewise.
+ 	(vshlltq_m_n_u8): Likewise.
+ 	(vshlltq_m_n_u16): Likewise.
+ 	(vshrnbq_m_n_s32): Likewise.
+ 	(vshrnbq_m_n_s16): Likewise.
+ 	(vshrnbq_m_n_u32): Likewise.
+ 	(vshrnbq_m_n_u16): Likewise.
+ 	(vshrntq_m_n_s32): Likewise.
+ 	(vshrntq_m_n_s16): Likewise.
+ 	(vshrntq_m_n_u32): Likewise.
+ 	(vshrntq_m_n_u16): Likewise.
+ 	(__arm_vmlaldavaq_p_s32): Define intrinsic.
+ 	(__arm_vmlaldavaq_p_s16): Likewise.
+ 	(__arm_vmlaldavaq_p_u32): Likewise.
+ 	(__arm_vmlaldavaq_p_u16): Likewise.
+ 	(__arm_vmlaldavaxq_p_s32): Likewise.
+ 	(__arm_vmlaldavaxq_p_s16): Likewise.
+ 	(__arm_vmlaldavaxq_p_u32): Likewise.
+ 	(__arm_vmlaldavaxq_p_u16): Likewise.
+ 	(__arm_vmlsldavaq_p_s32): Likewise.
+ 	(__arm_vmlsldavaq_p_s16): Likewise.
+ 	(__arm_vmlsldavaxq_p_s32): Likewise.
+ 	(__arm_vmlsldavaxq_p_s16): Likewise.
+ 	(__arm_vmullbq_poly_m_p8): Likewise.
+ 	(__arm_vmullbq_poly_m_p16): Likewise.
+ 	(__arm_vmulltq_poly_m_p8): Likewise.
+ 	(__arm_vmulltq_poly_m_p16): Likewise.
+ 	(__arm_vqdmullbq_m_n_s32): Likewise.
+ 	(__arm_vqdmullbq_m_n_s16): Likewise.
+ 	(__arm_vqdmullbq_m_s32): Likewise.
+ 	(__arm_vqdmullbq_m_s16): Likewise.
+ 	(__arm_vqdmulltq_m_n_s32): Likewise.
+ 	(__arm_vqdmulltq_m_n_s16): Likewise.
+ 	(__arm_vqdmulltq_m_s32): Likewise.
+ 	(__arm_vqdmulltq_m_s16): Likewise.
+ 	(__arm_vqrshrnbq_m_n_s32): Likewise.
+ 	(__arm_vqrshrnbq_m_n_s16): Likewise.
+ 	(__arm_vqrshrnbq_m_n_u32): Likewise.
+ 	(__arm_vqrshrnbq_m_n_u16): Likewise.
+ 	(__arm_vqrshrntq_m_n_s32): Likewise.
+ 	(__arm_vqrshrntq_m_n_s16): Likewise.
+ 	(__arm_vqrshrntq_m_n_u32): Likewise.
+ 	(__arm_vqrshrntq_m_n_u16): Likewise.
+ 	(__arm_vqrshrunbq_m_n_s32): Likewise.
+ 	(__arm_vqrshrunbq_m_n_s16): Likewise.
+ 	(__arm_vqrshruntq_m_n_s32): Likewise.
+ 	(__arm_vqrshruntq_m_n_s16): Likewise.
+ 	(__arm_vqshrnbq_m_n_s32): Likewise.
+ 	(__arm_vqshrnbq_m_n_s16): Likewise.
+ 	(__arm_vqshrnbq_m_n_u32): Likewise.
+ 	(__arm_vqshrnbq_m_n_u16): Likewise.
+ 	(__arm_vqshrntq_m_n_s32): Likewise.
+ 	(__arm_vqshrntq_m_n_s16): Likewise.
+ 	(__arm_vqshrntq_m_n_u32): Likewise.
+ 	(__arm_vqshrntq_m_n_u16): Likewise.
+ 	(__arm_vqshrunbq_m_n_s32): Likewise.
+ 	(__arm_vqshrunbq_m_n_s16): Likewise.
+ 	(__arm_vqshruntq_m_n_s32): Likewise.
+ 	(__arm_vqshruntq_m_n_s16): Likewise.
+ 	(__arm_vrmlaldavhaq_p_s32): Likewise.
+ 	(__arm_vrmlaldavhaq_p_u32): Likewise.
+ 	(__arm_vrmlaldavhaxq_p_s32): Likewise.
+ 	(__arm_vrmlsldavhaq_p_s32): Likewise.
+ 	(__arm_vrmlsldavhaxq_p_s32): Likewise.
+ 	(__arm_vrshrnbq_m_n_s32): Likewise.
+ 	(__arm_vrshrnbq_m_n_s16): Likewise.
+ 	(__arm_vrshrnbq_m_n_u32): Likewise.
+ 	(__arm_vrshrnbq_m_n_u16): Likewise.
+ 	(__arm_vrshrntq_m_n_s32): Likewise.
+ 	(__arm_vrshrntq_m_n_s16): Likewise.
+ 	(__arm_vrshrntq_m_n_u32): Likewise.
+ 	(__arm_vrshrntq_m_n_u16): Likewise.
+ 	(__arm_vshllbq_m_n_s8): Likewise.
+ 	(__arm_vshllbq_m_n_s16): Likewise.
+ 	(__arm_vshllbq_m_n_u8): Likewise.
+ 	(__arm_vshllbq_m_n_u16): Likewise.
+ 	(__arm_vshlltq_m_n_s8): Likewise.
+ 	(__arm_vshlltq_m_n_s16): Likewise.
+ 	(__arm_vshlltq_m_n_u8): Likewise.
+ 	(__arm_vshlltq_m_n_u16): Likewise.
+ 	(__arm_vshrnbq_m_n_s32): Likewise.
+ 	(__arm_vshrnbq_m_n_s16): Likewise.
+ 	(__arm_vshrnbq_m_n_u32): Likewise.
+ 	(__arm_vshrnbq_m_n_u16): Likewise.
+ 	(__arm_vshrntq_m_n_s32): Likewise.
+ 	(__arm_vshrntq_m_n_s16): Likewise.
+ 	(__arm_vshrntq_m_n_u32): Likewise.
+ 	(__arm_vshrntq_m_n_u16): Likewise.
+ 	(vmullbq_poly_m): Define polymorphic variant.
+ 	(vmulltq_poly_m): Likewise.
+ 	(vshllbq_m): Likewise.
+ 	(vshrntq_m_n): Likewise.
+ 	(vshrnbq_m_n): Likewise.
+ 	(vshlltq_m_n): Likewise.
+ 	(vshllbq_m_n): Likewise.
+ 	(vrshrntq_m_n): Likewise.
+ 	(vrshrnbq_m_n): Likewise.
+ 	(vqshruntq_m_n): Likewise.
+ 	(vqshrunbq_m_n): Likewise.
+ 	(vqdmullbq_m_n): Likewise.
+ 	(vqdmullbq_m): Likewise.
+ 	(vqdmulltq_m_n): Likewise.
+ 	(vqdmulltq_m): Likewise.
+ 	(vqrshrnbq_m_n): Likewise.
+ 	(vqrshrntq_m_n): Likewise.
+ 	(vqrshrunbq_m_n): Likewise.
+ 	(vqrshruntq_m_n): Likewise.
+ 	(vqshrnbq_m_n): Likewise.
+ 	(vqshrntq_m_n): Likewise.
+ 	* config/arm/arm_mve_builtins.def (QUADOP_NONE_NONE_NONE_IMM_UNONE): Use
+ 	builtin qualifiers.
+ 	(QUADOP_NONE_NONE_NONE_NONE_UNONE): Likewise.
+ 	(QUADOP_UNONE_UNONE_NONE_IMM_UNONE): Likewise.
+ 	(QUADOP_UNONE_UNONE_UNONE_IMM_UNONE): Likewise.
+ 	(QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE): Likewise.
+ 	* config/arm/mve.md (VMLALDAVAQ_P): Define iterator.
+ 	(VMLALDAVAXQ_P): Likewise.
+ 	(VQRSHRNBQ_M_N): Likewise.
+ 	(VQRSHRNTQ_M_N): Likewise.
+ 	(VQSHRNBQ_M_N): Likewise.
+ 	(VQSHRNTQ_M_N): Likewise.
+ 	(VRSHRNBQ_M_N): Likewise.
+ 	(VRSHRNTQ_M_N): Likewise.
+ 	(VSHLLBQ_M_N): Likewise.
+ 	(VSHLLTQ_M_N): Likewise.
+ 	(VSHRNBQ_M_N): Likewise.
+ 	(VSHRNTQ_M_N): Likewise.
+ 	(mve_vmlaldavaq_p_<supf><mode>): Define RTL pattern.
+ 	(mve_vmlaldavaxq_p_<supf><mode>): Likewise.
+ 	(mve_vqrshrnbq_m_n_<supf><mode>): Likewise.
+ 	(mve_vqrshrntq_m_n_<supf><mode>): Likewise.
+ 	(mve_vqshrnbq_m_n_<supf><mode>): Likewise.
+ 	(mve_vqshrntq_m_n_<supf><mode>): Likewise.
+ 	(mve_vrmlaldavhaq_p_sv4si): Likewise.
+ 	(mve_vrshrnbq_m_n_<supf><mode>): Likewise.
+ 	(mve_vrshrntq_m_n_<supf><mode>): Likewise.
+ 	(mve_vshllbq_m_n_<supf><mode>): Likewise.
+ 	(mve_vshlltq_m_n_<supf><mode>): Likewise.
+ 	(mve_vshrnbq_m_n_<supf><mode>): Likewise.
+ 	(mve_vshrntq_m_n_<supf><mode>): Likewise.
+ 	(mve_vmlsldavaq_p_s<mode>): Likewise.
+ 	(mve_vmlsldavaxq_p_s<mode>): Likewise.
+ 	(mve_vmullbq_poly_m_p<mode>): Likewise.
+ 	(mve_vmulltq_poly_m_p<mode>): Likewise.
+ 	(mve_vqdmullbq_m_n_s<mode>): Likewise.
+ 	(mve_vqdmullbq_m_s<mode>): Likewise.
+ 	(mve_vqdmulltq_m_n_s<mode>): Likewise.
+ 	(mve_vqdmulltq_m_s<mode>): Likewise.
+ 	(mve_vqrshrunbq_m_n_s<mode>): Likewise.
+ 	(mve_vqrshruntq_m_n_s<mode>): Likewise.
+ 	(mve_vqshrunbq_m_n_s<mode>): Likewise.
+ 	(mve_vqshruntq_m_n_s<mode>): Likewise.
+ 	(mve_vrmlaldavhaq_p_uv4si): Likewise.
+ 	(mve_vrmlaldavhaxq_p_sv4si): Likewise.
+ 	(mve_vrmlsldavhaq_p_sv4si): Likewise.
+ 	(mve_vrmlsldavhaxq_p_sv4si): Likewise.
+ 
+ 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 	
+ 	* config/arm/arm_mve.h (vabdq_m_s8): Define macro.
+ 	(vabdq_m_s32): Likewise.
+ 	(vabdq_m_s16): Likewise.
+ 	(vabdq_m_u8): Likewise.
+ 	(vabdq_m_u32): Likewise.
+ 	(vabdq_m_u16): Likewise.
+ 	(vaddq_m_n_s8): Likewise.
+ 	(vaddq_m_n_s32): Likewise.
+ 	(vaddq_m_n_s16): Likewise.
+ 	(vaddq_m_n_u8): Likewise.
+ 	(vaddq_m_n_u32): Likewise.
+ 	(vaddq_m_n_u16): Likewise.
+ 	(vaddq_m_s8): Likewise.
+ 	(vaddq_m_s32): Likewise.
+ 	(vaddq_m_s16): Likewise.
+ 	(vaddq_m_u8): Likewise.
+ 	(vaddq_m_u32): Likewise.
+ 	(vaddq_m_u16): Likewise.
+ 	(vandq_m_s8): Likewise.
+ 	(vandq_m_s32): Likewise.
+ 	(vandq_m_s16): Likewise.
+ 	(vandq_m_u8): Likewise.
+ 	(vandq_m_u32): Likewise.
+ 	(vandq_m_u16): Likewise.
+ 	(vbicq_m_s8): Likewise.
+ 	(vbicq_m_s32): Likewise.
+ 	(vbicq_m_s16): Likewise.
+ 	(vbicq_m_u8): Likewise.
+ 	(vbicq_m_u32): Likewise.
+ 	(vbicq_m_u16): Likewise.
+ 	(vbrsrq_m_n_s8): Likewise.
+ 	(vbrsrq_m_n_s32): Likewise.
+ 	(vbrsrq_m_n_s16): Likewise.
+ 	(vbrsrq_m_n_u8): Likewise.
+ 	(vbrsrq_m_n_u32): Likewise.
+ 	(vbrsrq_m_n_u16): Likewise.
+ 	(vcaddq_rot270_m_s8): Likewise.
+ 	(vcaddq_rot270_m_s32): Likewise.
+ 	(vcaddq_rot270_m_s16): Likewise.
+ 	(vcaddq_rot270_m_u8): Likewise.
+ 	(vcaddq_rot270_m_u32): Likewise.
+ 	(vcaddq_rot270_m_u16): Likewise.
+ 	(vcaddq_rot90_m_s8): Likewise.
+ 	(vcaddq_rot90_m_s32): Likewise.
+ 	(vcaddq_rot90_m_s16): Likewise.
+ 	(vcaddq_rot90_m_u8): Likewise.
+ 	(vcaddq_rot90_m_u32): Likewise.
+ 	(vcaddq_rot90_m_u16): Likewise.
+ 	(veorq_m_s8): Likewise.
+ 	(veorq_m_s32): Likewise.
+ 	(veorq_m_s16): Likewise.
+ 	(veorq_m_u8): Likewise.
+ 	(veorq_m_u32): Likewise.
+ 	(veorq_m_u16): Likewise.
+ 	(vhaddq_m_n_s8): Likewise.
+ 	(vhaddq_m_n_s32): Likewise.
+ 	(vhaddq_m_n_s16): Likewise.
+ 	(vhaddq_m_n_u8): Likewise.
+ 	(vhaddq_m_n_u32): Likewise.
+ 	(vhaddq_m_n_u16): Likewise.
+ 	(vhaddq_m_s8): Likewise.
+ 	(vhaddq_m_s32): Likewise.
+ 	(vhaddq_m_s16): Likewise.
+ 	(vhaddq_m_u8): Likewise.
+ 	(vhaddq_m_u32): Likewise.
+ 	(vhaddq_m_u16): Likewise.
+ 	(vhcaddq_rot270_m_s8): Likewise.
+ 	(vhcaddq_rot270_m_s32): Likewise.
+ 	(vhcaddq_rot270_m_s16): Likewise.
+ 	(vhcaddq_rot90_m_s8): Likewise.
+ 	(vhcaddq_rot90_m_s32): Likewise.
+ 	(vhcaddq_rot90_m_s16): Likewise.
+ 	(vhsubq_m_n_s8): Likewise.
+ 	(vhsubq_m_n_s32): Likewise.
+ 	(vhsubq_m_n_s16): Likewise.
+ 	(vhsubq_m_n_u8): Likewise.
+ 	(vhsubq_m_n_u32): Likewise.
+ 	(vhsubq_m_n_u16): Likewise.
+ 	(vhsubq_m_s8): Likewise.
+ 	(vhsubq_m_s32): Likewise.
+ 	(vhsubq_m_s16): Likewise.
+ 	(vhsubq_m_u8): Likewise.
+ 	(vhsubq_m_u32): Likewise.
+ 	(vhsubq_m_u16): Likewise.
+ 	(vmaxq_m_s8): Likewise.
+ 	(vmaxq_m_s32): Likewise.
+ 	(vmaxq_m_s16): Likewise.
+ 	(vmaxq_m_u8): Likewise.
+ 	(vmaxq_m_u32): Likewise.
+ 	(vmaxq_m_u16): Likewise.
+ 	(vminq_m_s8): Likewise.
+ 	(vminq_m_s32): Likewise.
+ 	(vminq_m_s16): Likewise.
+ 	(vminq_m_u8): Likewise.
+ 	(vminq_m_u32): Likewise.
+ 	(vminq_m_u16): Likewise.
+ 	(vmladavaq_p_s8): Likewise.
+ 	(vmladavaq_p_s32): Likewise.
+ 	(vmladavaq_p_s16): Likewise.
+ 	(vmladavaq_p_u8): Likewise.
+ 	(vmladavaq_p_u32): Likewise.
+ 	(vmladavaq_p_u16): Likewise.
+ 	(vmladavaxq_p_s8): Likewise.
+ 	(vmladavaxq_p_s32): Likewise.
+ 	(vmladavaxq_p_s16): Likewise.
+ 	(vmlaq_m_n_s8): Likewise.
+ 	(vmlaq_m_n_s32): Likewise.
+ 	(vmlaq_m_n_s16): Likewise.
+ 	(vmlaq_m_n_u8): Likewise.
+ 	(vmlaq_m_n_u32): Likewise.
+ 	(vmlaq_m_n_u16): Likewise.
+ 	(vmlasq_m_n_s8): Likewise.
+ 	(vmlasq_m_n_s32): Likewise.
+ 	(vmlasq_m_n_s16): Likewise.
+ 	(vmlasq_m_n_u8): Likewise.
+ 	(vmlasq_m_n_u32): Likewise.
+ 	(vmlasq_m_n_u16): Likewise.
+ 	(vmlsdavaq_p_s8): Likewise.
+ 	(vmlsdavaq_p_s32): Likewise.
+ 	(vmlsdavaq_p_s16): Likewise.
+ 	(vmlsdavaxq_p_s8): Likewise.
+ 	(vmlsdavaxq_p_s32): Likewise.
+ 	(vmlsdavaxq_p_s16): Likewise.
+ 	(vmulhq_m_s8): Likewise.
+ 	(vmulhq_m_s32): Likewise.
+ 	(vmulhq_m_s16): Likewise.
+ 	(vmulhq_m_u8): Likewise.
+ 	(vmulhq_m_u32): Likewise.
+ 	(vmulhq_m_u16): Likewise.
+ 	(vmullbq_int_m_s8): Likewise.
+ 	(vmullbq_int_m_s32): Likewise.
+ 	(vmullbq_int_m_s16): Likewise.
+ 	(vmullbq_int_m_u8): Likewise.
+ 	(vmullbq_int_m_u32): Likewise.
+ 	(vmullbq_int_m_u16): Likewise.
+ 	(vmulltq_int_m_s8): Likewise.
+ 	(vmulltq_int_m_s32): Likewise.
+ 	(vmulltq_int_m_s16): Likewise.
+ 	(vmulltq_int_m_u8): Likewise.
+ 	(vmulltq_int_m_u32): Likewise.
+ 	(vmulltq_int_m_u16): Likewise.
+ 	(vmulq_m_n_s8): Likewise.
+ 	(vmulq_m_n_s32): Likewise.
+ 	(vmulq_m_n_s16): Likewise.
+ 	(vmulq_m_n_u8): Likewise.
+ 	(vmulq_m_n_u32): Likewise.
+ 	(vmulq_m_n_u16): Likewise.
+ 	(vmulq_m_s8): Likewise.
+ 	(vmulq_m_s32): Likewise.
+ 	(vmulq_m_s16): Likewise.
+ 	(vmulq_m_u8): Likewise.
+ 	(vmulq_m_u32): Likewise.
+ 	(vmulq_m_u16): Likewise.
+ 	(vornq_m_s8): Likewise.
+ 	(vornq_m_s32): Likewise.
+ 	(vornq_m_s16): Likewise.
+ 	(vornq_m_u8): Likewise.
+ 	(vornq_m_u32): Likewise.
+ 	(vornq_m_u16): Likewise.
+ 	(vorrq_m_s8): Likewise.
+ 	(vorrq_m_s32): Likewise.
+ 	(vorrq_m_s16): Likewise.
+ 	(vorrq_m_u8): Likewise.
+ 	(vorrq_m_u32): Likewise.
+ 	(vorrq_m_u16): Likewise.
+ 	(vqaddq_m_n_s8): Likewise.
+ 	(vqaddq_m_n_s32): Likewise.
+ 	(vqaddq_m_n_s16): Likewise.
+ 	(vqaddq_m_n_u8): Likewise.
+ 	(vqaddq_m_n_u32): Likewise.
+ 	(vqaddq_m_n_u16): Likewise.
+ 	(vqaddq_m_s8): Likewise.
+ 	(vqaddq_m_s32): Likewise.
+ 	(vqaddq_m_s16): Likewise.
+ 	(vqaddq_m_u8): Likewise.
+ 	(vqaddq_m_u32): Likewise.
+ 	(vqaddq_m_u16): Likewise.
+ 	(vqdmladhq_m_s8): Likewise.
+ 	(vqdmladhq_m_s32): Likewise.
+ 	(vqdmladhq_m_s16): Likewise.
+ 	(vqdmladhxq_m_s8): Likewise.
+ 	(vqdmladhxq_m_s32): Likewise.
+ 	(vqdmladhxq_m_s16): Likewise.
+ 	(vqdmlahq_m_n_s8): Likewise.
+ 	(vqdmlahq_m_n_s32): Likewise.
+ 	(vqdmlahq_m_n_s16): Likewise.
+ 	(vqdmlahq_m_n_u8): Likewise.
+ 	(vqdmlahq_m_n_u32): Likewise.
+ 	(vqdmlahq_m_n_u16): Likewise.
+ 	(vqdmlsdhq_m_s8): Likewise.
+ 	(vqdmlsdhq_m_s32): Likewise.
+ 	(vqdmlsdhq_m_s16): Likewise.
+ 	(vqdmlsdhxq_m_s8): Likewise.
+ 	(vqdmlsdhxq_m_s32): Likewise.
+ 	(vqdmlsdhxq_m_s16): Likewise.
+ 	(vqdmulhq_m_n_s8): Likewise.
+ 	(vqdmulhq_m_n_s32): Likewise.
+ 	(vqdmulhq_m_n_s16): Likewise.
+ 	(vqdmulhq_m_s8): Likewise.
+ 	(vqdmulhq_m_s32): Likewise.
+ 	(vqdmulhq_m_s16): Likewise.
+ 	(vqrdmladhq_m_s8): Likewise.
+ 	(vqrdmladhq_m_s32): Likewise.
+ 	(vqrdmladhq_m_s16): Likewise.
+ 	(vqrdmladhxq_m_s8): Likewise.
+ 	(vqrdmladhxq_m_s32): Likewise.
+ 	(vqrdmladhxq_m_s16): Likewise.
+ 	(vqrdmlahq_m_n_s8): Likewise.
+ 	(vqrdmlahq_m_n_s32): Likewise.
+ 	(vqrdmlahq_m_n_s16): Likewise.
+ 	(vqrdmlahq_m_n_u8): Likewise.
+ 	(vqrdmlahq_m_n_u32): Likewise.
+ 	(vqrdmlahq_m_n_u16): Likewise.
+ 	(vqrdmlashq_m_n_s8): Likewise.
+ 	(vqrdmlashq_m_n_s32): Likewise.
+ 	(vqrdmlashq_m_n_s16): Likewise.
+ 	(vqrdmlashq_m_n_u8): Likewise.
+ 	(vqrdmlashq_m_n_u32): Likewise.
+ 	(vqrdmlashq_m_n_u16): Likewise.
+ 	(vqrdmlsdhq_m_s8): Likewise.
+ 	(vqrdmlsdhq_m_s32): Likewise.
+ 	(vqrdmlsdhq_m_s16): Likewise.
+ 	(vqrdmlsdhxq_m_s8): Likewise.
+ 	(vqrdmlsdhxq_m_s32): Likewise.
+ 	(vqrdmlsdhxq_m_s16): Likewise.
+ 	(vqrdmulhq_m_n_s8): Likewise.
+ 	(vqrdmulhq_m_n_s32): Likewise.
+ 	(vqrdmulhq_m_n_s16): Likewise.
+ 	(vqrdmulhq_m_s8): Likewise.
+ 	(vqrdmulhq_m_s32): Likewise.
+ 	(vqrdmulhq_m_s16): Likewise.
+ 	(vqrshlq_m_s8): Likewise.
+ 	(vqrshlq_m_s32): Likewise.
+ 	(vqrshlq_m_s16): Likewise.
+ 	(vqrshlq_m_u8): Likewise.
+ 	(vqrshlq_m_u32): Likewise.
+ 	(vqrshlq_m_u16): Likewise.
+ 	(vqshlq_m_n_s8): Likewise.
+ 	(vqshlq_m_n_s32): Likewise.
+ 	(vqshlq_m_n_s16): Likewise.
+ 	(vqshlq_m_n_u8): Likewise.
+ 	(vqshlq_m_n_u32): Likewise.
+ 	(vqshlq_m_n_u16): Likewise.
+ 	(vqshlq_m_s8): Likewise.
+ 	(vqshlq_m_s32): Likewise.
+ 	(vqshlq_m_s16): Likewise.
+ 	(vqshlq_m_u8): Likewise.
+ 	(vqshlq_m_u32): Likewise.
+ 	(vqshlq_m_u16): Likewise.
+ 	(vqsubq_m_n_s8): Likewise.
+ 	(vqsubq_m_n_s32): Likewise.
+ 	(vqsubq_m_n_s16): Likewise.
+ 	(vqsubq_m_n_u8): Likewise.
+ 	(vqsubq_m_n_u32): Likewise.
+ 	(vqsubq_m_n_u16): Likewise.
+ 	(vqsubq_m_s8): Likewise.
+ 	(vqsubq_m_s32): Likewise.
+ 	(vqsubq_m_s16): Likewise.
+ 	(vqsubq_m_u8): Likewise.
+ 	(vqsubq_m_u32): Likewise.
+ 	(vqsubq_m_u16): Likewise.
+ 	(vrhaddq_m_s8): Likewise.
+ 	(vrhaddq_m_s32): Likewise.
+ 	(vrhaddq_m_s16): Likewise.
+ 	(vrhaddq_m_u8): Likewise.
+ 	(vrhaddq_m_u32): Likewise.
+ 	(vrhaddq_m_u16): Likewise.
+ 	(vrmulhq_m_s8): Likewise.
+ 	(vrmulhq_m_s32): Likewise.
+ 	(vrmulhq_m_s16): Likewise.
+ 	(vrmulhq_m_u8): Likewise.
+ 	(vrmulhq_m_u32): Likewise.
+ 	(vrmulhq_m_u16): Likewise.
+ 	(vrshlq_m_s8): Likewise.
+ 	(vrshlq_m_s32): Likewise.
+ 	(vrshlq_m_s16): Likewise.
+ 	(vrshlq_m_u8): Likewise.
+ 	(vrshlq_m_u32): Likewise.
+ 	(vrshlq_m_u16): Likewise.
+ 	(vrshrq_m_n_s8): Likewise.
+ 	(vrshrq_m_n_s32): Likewise.
+ 	(vrshrq_m_n_s16): Likewise.
+ 	(vrshrq_m_n_u8): Likewise.
+ 	(vrshrq_m_n_u32): Likewise.
+ 	(vrshrq_m_n_u16): Likewise.
+ 	(vshlq_m_n_s8): Likewise.
+ 	(vshlq_m_n_s32): Likewise.
+ 	(vshlq_m_n_s16): Likewise.
+ 	(vshlq_m_n_u8): Likewise.
+ 	(vshlq_m_n_u32): Likewise.
+ 	(vshlq_m_n_u16): Likewise.
+ 	(vshrq_m_n_s8): Likewise.
+ 	(vshrq_m_n_s32): Likewise.
+ 	(vshrq_m_n_s16): Likewise.
+ 	(vshrq_m_n_u8): Likewise.
+ 	(vshrq_m_n_u32): Likewise.
+ 	(vshrq_m_n_u16): Likewise.
+ 	(vsliq_m_n_s8): Likewise.
+ 	(vsliq_m_n_s32): Likewise.
+ 	(vsliq_m_n_s16): Likewise.
+ 	(vsliq_m_n_u8): Likewise.
+ 	(vsliq_m_n_u32): Likewise.
+ 	(vsliq_m_n_u16): Likewise.
+ 	(vsubq_m_n_s8): Likewise.
+ 	(vsubq_m_n_s32): Likewise.
+ 	(vsubq_m_n_s16): Likewise.
+ 	(vsubq_m_n_u8): Likewise.
+ 	(vsubq_m_n_u32): Likewise.
+ 	(vsubq_m_n_u16): Likewise.
+ 	(__arm_vabdq_m_s8): Define intrinsic.
+ 	(__arm_vabdq_m_s32): Likewise.
+ 	(__arm_vabdq_m_s16): Likewise.
+ 	(__arm_vabdq_m_u8): Likewise.
+ 	(__arm_vabdq_m_u32): Likewise.
+ 	(__arm_vabdq_m_u16): Likewise.
+ 	(__arm_vaddq_m_n_s8): Likewise.
+ 	(__arm_vaddq_m_n_s32): Likewise.
+ 	(__arm_vaddq_m_n_s16): Likewise.
+ 	(__arm_vaddq_m_n_u8): Likewise.
+ 	(__arm_vaddq_m_n_u32): Likewise.
+ 	(__arm_vaddq_m_n_u16): Likewise.
+ 	(__arm_vaddq_m_s8): Likewise.
+ 	(__arm_vaddq_m_s32): Likewise.
+ 	(__arm_vaddq_m_s16): Likewise.
+ 	(__arm_vaddq_m_u8): Likewise.
+ 	(__arm_vaddq_m_u32): Likewise.
+ 	(__arm_vaddq_m_u16): Likewise.
+ 	(__arm_vandq_m_s8): Likewise.
+ 	(__arm_vandq_m_s32): Likewise.
+ 	(__arm_vandq_m_s16): Likewise.
+ 	(__arm_vandq_m_u8): Likewise.
+ 	(__arm_vandq_m_u32): Likewise.
+ 	(__arm_vandq_m_u16): Likewise.
+ 	(__arm_vbicq_m_s8): Likewise.
+ 	(__arm_vbicq_m_s32): Likewise.
+ 	(__arm_vbicq_m_s16): Likewise.
+ 	(__arm_vbicq_m_u8): Likewise.
+ 	(__arm_vbicq_m_u32): Likewise.
+ 	(__arm_vbicq_m_u16): Likewise.
+ 	(__arm_vbrsrq_m_n_s8): Likewise.
+ 	(__arm_vbrsrq_m_n_s32): Likewise.
+ 	(__arm_vbrsrq_m_n_s16): Likewise.
+ 	(__arm_vbrsrq_m_n_u8): Likewise.
+ 	(__arm_vbrsrq_m_n_u32): Likewise.
+ 	(__arm_vbrsrq_m_n_u16): Likewise.
+ 	(__arm_vcaddq_rot270_m_s8): Likewise.
+ 	(__arm_vcaddq_rot270_m_s32): Likewise.
+ 	(__arm_vcaddq_rot270_m_s16): Likewise.
+ 	(__arm_vcaddq_rot270_m_u8): Likewise.
+ 	(__arm_vcaddq_rot270_m_u32): Likewise.
+ 	(__arm_vcaddq_rot270_m_u16): Likewise.
+ 	(__arm_vcaddq_rot90_m_s8): Likewise.
+ 	(__arm_vcaddq_rot90_m_s32): Likewise.
+ 	(__arm_vcaddq_rot90_m_s16): Likewise.
+ 	(__arm_vcaddq_rot90_m_u8): Likewise.
+ 	(__arm_vcaddq_rot90_m_u32): Likewise.
+ 	(__arm_vcaddq_rot90_m_u16): Likewise.
+ 	(__arm_veorq_m_s8): Likewise.
+ 	(__arm_veorq_m_s32): Likewise.
+ 	(__arm_veorq_m_s16): Likewise.
+ 	(__arm_veorq_m_u8): Likewise.
+ 	(__arm_veorq_m_u32): Likewise.
+ 	(__arm_veorq_m_u16): Likewise.
+ 	(__arm_vhaddq_m_n_s8): Likewise.
+ 	(__arm_vhaddq_m_n_s32): Likewise.
+ 	(__arm_vhaddq_m_n_s16): Likewise.
+ 	(__arm_vhaddq_m_n_u8): Likewise.
+ 	(__arm_vhaddq_m_n_u32): Likewise.
+ 	(__arm_vhaddq_m_n_u16): Likewise.
+ 	(__arm_vhaddq_m_s8): Likewise.
+ 	(__arm_vhaddq_m_s32): Likewise.
+ 	(__arm_vhaddq_m_s16): Likewise.
+ 	(__arm_vhaddq_m_u8): Likewise.
+ 	(__arm_vhaddq_m_u32): Likewise.
+ 	(__arm_vhaddq_m_u16): Likewise.
+ 	(__arm_vhcaddq_rot270_m_s8): Likewise.
+ 	(__arm_vhcaddq_rot270_m_s32): Likewise.
+ 	(__arm_vhcaddq_rot270_m_s16): Likewise.
+ 	(__arm_vhcaddq_rot90_m_s8): Likewise.
+ 	(__arm_vhcaddq_rot90_m_s32): Likewise.
+ 	(__arm_vhcaddq_rot90_m_s16): Likewise.
+ 	(__arm_vhsubq_m_n_s8): Likewise.
+ 	(__arm_vhsubq_m_n_s32): Likewise.
+ 	(__arm_vhsubq_m_n_s16): Likewise.
+ 	(__arm_vhsubq_m_n_u8): Likewise.
+ 	(__arm_vhsubq_m_n_u32): Likewise.
+ 	(__arm_vhsubq_m_n_u16): Likewise.
+ 	(__arm_vhsubq_m_s8): Likewise.
+ 	(__arm_vhsubq_m_s32): Likewise.
+ 	(__arm_vhsubq_m_s16): Likewise.
+ 	(__arm_vhsubq_m_u8): Likewise.
+ 	(__arm_vhsubq_m_u32): Likewise.
+ 	(__arm_vhsubq_m_u16): Likewise.
+ 	(__arm_vmaxq_m_s8): Likewise.
+ 	(__arm_vmaxq_m_s32): Likewise.
+ 	(__arm_vmaxq_m_s16): Likewise.
+ 	(__arm_vmaxq_m_u8): Likewise.
+ 	(__arm_vmaxq_m_u32): Likewise.
+ 	(__arm_vmaxq_m_u16): Likewise.
+ 	(__arm_vminq_m_s8): Likewise.
+ 	(__arm_vminq_m_s32): Likewise.
+ 	(__arm_vminq_m_s16): Likewise.
+ 	(__arm_vminq_m_u8): Likewise.
+ 	(__arm_vminq_m_u32): Likewise.
+ 	(__arm_vminq_m_u16): Likewise.
+ 	(__arm_vmladavaq_p_s8): Likewise.
+ 	(__arm_vmladavaq_p_s32): Likewise.
+ 	(__arm_vmladavaq_p_s16): Likewise.
+ 	(__arm_vmladavaq_p_u8): Likewise.
+ 	(__arm_vmladavaq_p_u32): Likewise.
+ 	(__arm_vmladavaq_p_u16): Likewise.
+ 	(__arm_vmladavaxq_p_s8): Likewise.
+ 	(__arm_vmladavaxq_p_s32): Likewise.
+ 	(__arm_vmladavaxq_p_s16): Likewise.
+ 	(__arm_vmlaq_m_n_s8): Likewise.
+ 	(__arm_vmlaq_m_n_s32): Likewise.
+ 	(__arm_vmlaq_m_n_s16): Likewise.
+ 	(__arm_vmlaq_m_n_u8): Likewise.
+ 	(__arm_vmlaq_m_n_u32): Likewise.
+ 	(__arm_vmlaq_m_n_u16): Likewise.
+ 	(__arm_vmlasq_m_n_s8): Likewise.
+ 	(__arm_vmlasq_m_n_s32): Likewise.
+ 	(__arm_vmlasq_m_n_s16): Likewise.
+ 	(__arm_vmlasq_m_n_u8): Likewise.
+ 	(__arm_vmlasq_m_n_u32): Likewise.
+ 	(__arm_vmlasq_m_n_u16): Likewise.
+ 	(__arm_vmlsdavaq_p_s8): Likewise.
+ 	(__arm_vmlsdavaq_p_s32): Likewise.
+ 	(__arm_vmlsdavaq_p_s16): Likewise.
+ 	(__arm_vmlsdavaxq_p_s8): Likewise.
+ 	(__arm_vmlsdavaxq_p_s32): Likewise.
+ 	(__arm_vmlsdavaxq_p_s16): Likewise.
+ 	(__arm_vmulhq_m_s8): Likewise.
+ 	(__arm_vmulhq_m_s32): Likewise.
+ 	(__arm_vmulhq_m_s16): Likewise.
+ 	(__arm_vmulhq_m_u8): Likewise.
+ 	(__arm_vmulhq_m_u32): Likewise.
+ 	(__arm_vmulhq_m_u16): Likewise.
+ 	(__arm_vmullbq_int_m_s8): Likewise.
+ 	(__arm_vmullbq_int_m_s32): Likewise.
+ 	(__arm_vmullbq_int_m_s16): Likewise.
+ 	(__arm_vmullbq_int_m_u8): Likewise.
+ 	(__arm_vmullbq_int_m_u32): Likewise.
+ 	(__arm_vmullbq_int_m_u16): Likewise.
+ 	(__arm_vmulltq_int_m_s8): Likewise.
+ 	(__arm_vmulltq_int_m_s32): Likewise.
+ 	(__arm_vmulltq_int_m_s16): Likewise.
+ 	(__arm_vmulltq_int_m_u8): Likewise.
+ 	(__arm_vmulltq_int_m_u32): Likewise.
+ 	(__arm_vmulltq_int_m_u16): Likewise.
+ 	(__arm_vmulq_m_n_s8): Likewise.
+ 	(__arm_vmulq_m_n_s32): Likewise.
+ 	(__arm_vmulq_m_n_s16): Likewise.
+ 	(__arm_vmulq_m_n_u8): Likewise.
+ 	(__arm_vmulq_m_n_u32): Likewise.
+ 	(__arm_vmulq_m_n_u16): Likewise.
+ 	(__arm_vmulq_m_s8): Likewise.
+ 	(__arm_vmulq_m_s32): Likewise.
+ 	(__arm_vmulq_m_s16): Likewise.
+ 	(__arm_vmulq_m_u8): Likewise.
+ 	(__arm_vmulq_m_u32): Likewise.
+ 	(__arm_vmulq_m_u16): Likewise.
+ 	(__arm_vornq_m_s8): Likewise.
+ 	(__arm_vornq_m_s32): Likewise.
+ 	(__arm_vornq_m_s16): Likewise.
+ 	(__arm_vornq_m_u8): Likewise.
+ 	(__arm_vornq_m_u32): Likewise.
+ 	(__arm_vornq_m_u16): Likewise.
+ 	(__arm_vorrq_m_s8): Likewise.
+ 	(__arm_vorrq_m_s32): Likewise.
+ 	(__arm_vorrq_m_s16): Likewise.
+ 	(__arm_vorrq_m_u8): Likewise.
+ 	(__arm_vorrq_m_u32): Likewise.
+ 	(__arm_vorrq_m_u16): Likewise.
+ 	(__arm_vqaddq_m_n_s8): Likewise.
+ 	(__arm_vqaddq_m_n_s32): Likewise.
+ 	(__arm_vqaddq_m_n_s16): Likewise.
+ 	(__arm_vqaddq_m_n_u8): Likewise.
+ 	(__arm_vqaddq_m_n_u32): Likewise.
+ 	(__arm_vqaddq_m_n_u16): Likewise.
+ 	(__arm_vqaddq_m_s8): Likewise.
+ 	(__arm_vqaddq_m_s32): Likewise.
+ 	(__arm_vqaddq_m_s16): Likewise.
+ 	(__arm_vqaddq_m_u8): Likewise.
+ 	(__arm_vqaddq_m_u32): Likewise.
+ 	(__arm_vqaddq_m_u16): Likewise.
+ 	(__arm_vqdmladhq_m_s8): Likewise.
+ 	(__arm_vqdmladhq_m_s32): Likewise.
+ 	(__arm_vqdmladhq_m_s16): Likewise.
+ 	(__arm_vqdmladhxq_m_s8): Likewise.
+ 	(__arm_vqdmladhxq_m_s32): Likewise.
+ 	(__arm_vqdmladhxq_m_s16): Likewise.
+ 	(__arm_vqdmlahq_m_n_s8): Likewise.
+ 	(__arm_vqdmlahq_m_n_s32): Likewise.
+ 	(__arm_vqdmlahq_m_n_s16): Likewise.
+ 	(__arm_vqdmlahq_m_n_u8): Likewise.
+ 	(__arm_vqdmlahq_m_n_u32): Likewise.
+ 	(__arm_vqdmlahq_m_n_u16): Likewise.
+ 	(__arm_vqdmlsdhq_m_s8): Likewise.
+ 	(__arm_vqdmlsdhq_m_s32): Likewise.
+ 	(__arm_vqdmlsdhq_m_s16): Likewise.
+ 	(__arm_vqdmlsdhxq_m_s8): Likewise.
+ 	(__arm_vqdmlsdhxq_m_s32): Likewise.
+ 	(__arm_vqdmlsdhxq_m_s16): Likewise.
+ 	(__arm_vqdmulhq_m_n_s8): Likewise.
+ 	(__arm_vqdmulhq_m_n_s32): Likewise.
+ 	(__arm_vqdmulhq_m_n_s16): Likewise.
+ 	(__arm_vqdmulhq_m_s8): Likewise.
+ 	(__arm_vqdmulhq_m_s32): Likewise.
+ 	(__arm_vqdmulhq_m_s16): Likewise.
+ 	(__arm_vqrdmladhq_m_s8): Likewise.
+ 	(__arm_vqrdmladhq_m_s32): Likewise.
+ 	(__arm_vqrdmladhq_m_s16): Likewise.
+ 	(__arm_vqrdmladhxq_m_s8): Likewise.
+ 	(__arm_vqrdmladhxq_m_s32): Likewise.
+ 	(__arm_vqrdmladhxq_m_s16): Likewise.
+ 	(__arm_vqrdmlahq_m_n_s8): Likewise.
+ 	(__arm_vqrdmlahq_m_n_s32): Likewise.
+ 	(__arm_vqrdmlahq_m_n_s16): Likewise.
+ 	(__arm_vqrdmlahq_m_n_u8): Likewise.
+ 	(__arm_vqrdmlahq_m_n_u32): Likewise.
+ 	(__arm_vqrdmlahq_m_n_u16): Likewise.
+ 	(__arm_vqrdmlashq_m_n_s8): Likewise.
+ 	(__arm_vqrdmlashq_m_n_s32): Likewise.
+ 	(__arm_vqrdmlashq_m_n_s16): Likewise.
+ 	(__arm_vqrdmlashq_m_n_u8): Likewise.
+ 	(__arm_vqrdmlashq_m_n_u32): Likewise.
+ 	(__arm_vqrdmlashq_m_n_u16): Likewise.
+ 	(__arm_vqrdmlsdhq_m_s8): Likewise.
+ 	(__arm_vqrdmlsdhq_m_s32): Likewise.
+ 	(__arm_vqrdmlsdhq_m_s16): Likewise.
+ 	(__arm_vqrdmlsdhxq_m_s8): Likewise.
+ 	(__arm_vqrdmlsdhxq_m_s32): Likewise.
+ 	(__arm_vqrdmlsdhxq_m_s16): Likewise.
+ 	(__arm_vqrdmulhq_m_n_s8): Likewise.
+ 	(__arm_vqrdmulhq_m_n_s32): Likewise.
+ 	(__arm_vqrdmulhq_m_n_s16): Likewise.
+ 	(__arm_vqrdmulhq_m_s8): Likewise.
+ 	(__arm_vqrdmulhq_m_s32): Likewise.
+ 	(__arm_vqrdmulhq_m_s16): Likewise.
+ 	(__arm_vqrshlq_m_s8): Likewise.
+ 	(__arm_vqrshlq_m_s32): Likewise.
+ 	(__arm_vqrshlq_m_s16): Likewise.
+ 	(__arm_vqrshlq_m_u8): Likewise.
+ 	(__arm_vqrshlq_m_u32): Likewise.
+ 	(__arm_vqrshlq_m_u16): Likewise.
+ 	(__arm_vqshlq_m_n_s8): Likewise.
+ 	(__arm_vqshlq_m_n_s32): Likewise.
+ 	(__arm_vqshlq_m_n_s16): Likewise.
+ 	(__arm_vqshlq_m_n_u8): Likewise.
+ 	(__arm_vqshlq_m_n_u32): Likewise.
+ 	(__arm_vqshlq_m_n_u16): Likewise.
+ 	(__arm_vqshlq_m_s8): Likewise.
+ 	(__arm_vqshlq_m_s32): Likewise.
+ 	(__arm_vqshlq_m_s16): Likewise.
+ 	(__arm_vqshlq_m_u8): Likewise.
+ 	(__arm_vqshlq_m_u32): Likewise.
+ 	(__arm_vqshlq_m_u16): Likewise.
+ 	(__arm_vqsubq_m_n_s8): Likewise.
+ 	(__arm_vqsubq_m_n_s32): Likewise.
+ 	(__arm_vqsubq_m_n_s16): Likewise.
+ 	(__arm_vqsubq_m_n_u8): Likewise.
+ 	(__arm_vqsubq_m_n_u32): Likewise.
+ 	(__arm_vqsubq_m_n_u16): Likewise.
+ 	(__arm_vqsubq_m_s8): Likewise.
+ 	(__arm_vqsubq_m_s32): Likewise.
+ 	(__arm_vqsubq_m_s16): Likewise.
+ 	(__arm_vqsubq_m_u8): Likewise.
+ 	(__arm_vqsubq_m_u32): Likewise.
+ 	(__arm_vqsubq_m_u16): Likewise.
+ 	(__arm_vrhaddq_m_s8): Likewise.
+ 	(__arm_vrhaddq_m_s32): Likewise.
+ 	(__arm_vrhaddq_m_s16): Likewise.
+ 	(__arm_vrhaddq_m_u8): Likewise.
+ 	(__arm_vrhaddq_m_u32): Likewise.
+ 	(__arm_vrhaddq_m_u16): Likewise.
+ 	(__arm_vrmulhq_m_s8): Likewise.
+ 	(__arm_vrmulhq_m_s32): Likewise.
+ 	(__arm_vrmulhq_m_s16): Likewise.
+ 	(__arm_vrmulhq_m_u8): Likewise.
+ 	(__arm_vrmulhq_m_u32): Likewise.
+ 	(__arm_vrmulhq_m_u16): Likewise.
+ 	(__arm_vrshlq_m_s8): Likewise.
+ 	(__arm_vrshlq_m_s32): Likewise.
+ 	(__arm_vrshlq_m_s16): Likewise.
+ 	(__arm_vrshlq_m_u8): Likewise.
+ 	(__arm_vrshlq_m_u32): Likewise.
+ 	(__arm_vrshlq_m_u16): Likewise.
+ 	(__arm_vrshrq_m_n_s8): Likewise.
+ 	(__arm_vrshrq_m_n_s32): Likewise.
+ 	(__arm_vrshrq_m_n_s16): Likewise.
+ 	(__arm_vrshrq_m_n_u8): Likewise.
+ 	(__arm_vrshrq_m_n_u32): Likewise.
+ 	(__arm_vrshrq_m_n_u16): Likewise.
+ 	(__arm_vshlq_m_n_s8): Likewise.
+ 	(__arm_vshlq_m_n_s32): Likewise.
+ 	(__arm_vshlq_m_n_s16): Likewise.
+ 	(__arm_vshlq_m_n_u8): Likewise.
+ 	(__arm_vshlq_m_n_u32): Likewise.
+ 	(__arm_vshlq_m_n_u16): Likewise.
+ 	(__arm_vshrq_m_n_s8): Likewise.
+ 	(__arm_vshrq_m_n_s32): Likewise.
+ 	(__arm_vshrq_m_n_s16): Likewise.
+ 	(__arm_vshrq_m_n_u8): Likewise.
+ 	(__arm_vshrq_m_n_u32): Likewise.
+ 	(__arm_vshrq_m_n_u16): Likewise.
+ 	(__arm_vsliq_m_n_s8): Likewise.
+ 	(__arm_vsliq_m_n_s32): Likewise.
+ 	(__arm_vsliq_m_n_s16): Likewise.
+ 	(__arm_vsliq_m_n_u8): Likewise.
+ 	(__arm_vsliq_m_n_u32): Likewise.
+ 	(__arm_vsliq_m_n_u16): Likewise.
+ 	(__arm_vsubq_m_n_s8): Likewise.
+ 	(__arm_vsubq_m_n_s32): Likewise.
+ 	(__arm_vsubq_m_n_s16): Likewise.
+ 	(__arm_vsubq_m_n_u8): Likewise.
+ 	(__arm_vsubq_m_n_u32): Likewise.
+ 	(__arm_vsubq_m_n_u16): Likewise.
+ 	(vqdmladhq_m): Define polymorphic variant.
+ 	(vqdmladhxq_m): Likewise.
+ 	(vqdmlsdhq_m): Likewise.
+ 	(vqdmlsdhxq_m): Likewise.
+ 	(vabdq_m): Likewise.
+ 	(vandq_m): Likewise.
+ 	(vbicq_m): Likewise.
+ 	(vbrsrq_m_n): Likewise.
+ 	(vcaddq_rot270_m): Likewise.
+ 	(vcaddq_rot90_m): Likewise.
+ 	(veorq_m): Likewise.
+ 	(vmaxq_m): Likewise.
+ 	(vminq_m): Likewise.
+ 	(vmladavaq_p): Likewise.
+ 	(vmlaq_m_n): Likewise.
+ 	(vmlasq_m_n): Likewise.
+ 	(vmulhq_m): Likewise.
+ 	(vmullbq_int_m): Likewise.
+ 	(vmulltq_int_m): Likewise.
+ 	(vornq_m): Likewise.
+ 	(vorrq_m): Likewise.
+ 	(vqdmlahq_m_n): Likewise.
+ 	(vqrdmlahq_m_n): Likewise.
+ 	(vqrdmlashq_m_n): Likewise.
+ 	(vqrshlq_m): Likewise.
+ 	(vqshlq_m_n): Likewise.
+ 	(vqshlq_m): Likewise.
+ 	(vrhaddq_m): Likewise.
+ 	(vrmulhq_m): Likewise.
+ 	(vrshlq_m): Likewise.
+ 	(vrshrq_m_n): Likewise.
+ 	(vshlq_m_n): Likewise.
+ 	(vshrq_m_n): Likewise.
+ 	(vsliq_m): Likewise.
+ 	(vaddq_m_n): Likewise.
+ 	(vaddq_m): Likewise.
+ 	(vhaddq_m_n): Likewise.
+ 	(vhaddq_m): Likewise.
+ 	(vhcaddq_rot270_m): Likewise.
+ 	(vhcaddq_rot90_m): Likewise.
+ 	(vhsubq_m): Likewise.
+ 	(vhsubq_m_n): Likewise.
+ 	(vmulq_m_n): Likewise.
+ 	(vmulq_m): Likewise.
+ 	(vqaddq_m_n): Likewise.
+ 	(vqaddq_m): Likewise.
+ 	(vqdmulhq_m_n): Likewise.
+ 	(vqdmulhq_m): Likewise.
+ 	(vsubq_m_n): Likewise.
+ 	(vsliq_m_n): Likewise.
+ 	(vqsubq_m_n): Likewise.
+ 	(vqsubq_m): Likewise.
+ 	(vqrdmulhq_m): Likewise.
+ 	(vqrdmulhq_m_n): Likewise.
+ 	(vqrdmlsdhxq_m): Likewise.
+ 	(vqrdmlsdhq_m): Likewise.
+ 	(vqrdmladhq_m): Likewise.
+ 	(vqrdmladhxq_m): Likewise.
+ 	(vmlsdavaxq_p): Likewise.
+ 	(vmlsdavaq_p): Likewise.
+ 	(vmladavaxq_p): Likewise.
+ 	* config/arm/arm_mve_builtins.def (QUADOP_NONE_NONE_NONE_IMM_UNONE): Use
+ 	builtin qualifier.
+ 	(QUADOP_NONE_NONE_NONE_NONE_UNONE): Likewise.
+ 	(QUADOP_UNONE_UNONE_UNONE_IMM_UNONE): Likewise.
+ 	(QUADOP_UNONE_UNONE_UNONE_NONE_UNONE): Likewise.
+ 	(QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE): Likewise.
+ 	* config/arm/mve.md (VHSUBQ_M): Define iterators.
+ 	(VSLIQ_M_N): Likewise.
+ 	(VQRDMLAHQ_M_N): Likewise.
+ 	(VRSHLQ_M): Likewise.
+ 	(VMINQ_M): Likewise.
+ 	(VMULLBQ_INT_M): Likewise.
+ 	(VMULHQ_M): Likewise.
+ 	(VMULQ_M): Likewise.
+ 	(VHSUBQ_M_N): Likewise.
+ 	(VHADDQ_M_N): Likewise.
+ 	(VORRQ_M): Likewise.
+ 	(VRMULHQ_M): Likewise.
+ 	(VQADDQ_M): Likewise.
+ 	(VRSHRQ_M_N): Likewise.
+ 	(VQSUBQ_M_N): Likewise.
+ 	(VADDQ_M): Likewise.
+ 	(VORNQ_M): Likewise.
+ 	(VQDMLAHQ_M_N): Likewise.
+ 	(VRHADDQ_M): Likewise.
+ 	(VQSHLQ_M): Likewise.
+ 	(VANDQ_M): Likewise.
+ 	(VBICQ_M): Likewise.
+ 	(VSHLQ_M_N): Likewise.
+ 	(VCADDQ_ROT270_M): Likewise.
+ 	(VQRSHLQ_M): Likewise.
+ 	(VQADDQ_M_N): Likewise.
+ 	(VADDQ_M_N): Likewise.
+ 	(VMAXQ_M): Likewise.
+ 	(VQSUBQ_M): Likewise.
+ 	(VMLASQ_M_N): Likewise.
+ 	(VMLADAVAQ_P): Likewise.
+ 	(VBRSRQ_M_N): Likewise.
+ 	(VMULQ_M_N): Likewise.
+ 	(VCADDQ_ROT90_M): Likewise.
+ 	(VMULLTQ_INT_M): Likewise.
+ 	(VEORQ_M): Likewise.
+ 	(VSHRQ_M_N): Likewise.
+ 	(VSUBQ_M_N): Likewise.
+ 	(VHADDQ_M): Likewise.
+ 	(VABDQ_M): Likewise.
+ 	(VQRDMLASHQ_M_N): Likewise.
+ 	(VMLAQ_M_N): Likewise.
+ 	(VQSHLQ_M_N): Likewise.
+ 	(mve_vabdq_m_<supf><mode>): Define RTL pattern.
+ 	(mve_vaddq_m_n_<supf><mode>): Likewise.
+ 	(mve_vaddq_m_<supf><mode>): Likewise.
+ 	(mve_vandq_m_<supf><mode>): Likewise.
+ 	(mve_vbicq_m_<supf><mode>): Likewise.
+ 	(mve_vbrsrq_m_n_<supf><mode>): Likewise.
+ 	(mve_vcaddq_rot270_m_<supf><mode>): Likewise.
+ 	(mve_vcaddq_rot90_m_<supf><mode>): Likewise.
+ 	(mve_veorq_m_<supf><mode>): Likewise.
+ 	(mve_vhaddq_m_n_<supf><mode>): Likewise.
+ 	(mve_vhaddq_m_<supf><mode>): Likewise.
+ 	(mve_vhsubq_m_n_<supf><mode>): Likewise.
+ 	(mve_vhsubq_m_<supf><mode>): Likewise.
+ 	(mve_vmaxq_m_<supf><mode>): Likewise.
+ 	(mve_vminq_m_<supf><mode>): Likewise.
+ 	(mve_vmladavaq_p_<supf><mode>): Likewise.
+ 	(mve_vmlaq_m_n_<supf><mode>): Likewise.
+ 	(mve_vmlasq_m_n_<supf><mode>): Likewise.
+ 	(mve_vmulhq_m_<supf><mode>): Likewise.
+ 	(mve_vmullbq_int_m_<supf><mode>): Likewise.
+ 	(mve_vmulltq_int_m_<supf><mode>): Likewise.
+ 	(mve_vmulq_m_n_<supf><mode>): Likewise.
+ 	(mve_vmulq_m_<supf><mode>): Likewise.
+ 	(mve_vornq_m_<supf><mode>): Likewise.
+ 	(mve_vorrq_m_<supf><mode>): Likewise.
+ 	(mve_vqaddq_m_n_<supf><mode>): Likewise.
+ 	(mve_vqaddq_m_<supf><mode>): Likewise.
+ 	(mve_vqdmlahq_m_n_<supf><mode>): Likewise.
+ 	(mve_vqrdmlahq_m_n_<supf><mode>): Likewise.
+ 	(mve_vqrdmlashq_m_n_<supf><mode>): Likewise.
+ 	(mve_vqrshlq_m_<supf><mode>): Likewise.
+ 	(mve_vqshlq_m_n_<supf><mode>): Likewise.
+ 	(mve_vqshlq_m_<supf><mode>): Likewise.
+ 	(mve_vqsubq_m_n_<supf><mode>): Likewise.
+ 	(mve_vqsubq_m_<supf><mode>): Likewise.
+ 	(mve_vrhaddq_m_<supf><mode>): Likewise.
+ 	(mve_vrmulhq_m_<supf><mode>): Likewise.
+ 	(mve_vrshlq_m_<supf><mode>): Likewise.
+ 	(mve_vrshrq_m_n_<supf><mode>): Likewise.
+ 	(mve_vshlq_m_n_<supf><mode>): Likewise.
+ 	(mve_vshrq_m_n_<supf><mode>): Likewise.
+ 	(mve_vsliq_m_n_<supf><mode>): Likewise.
+ 	(mve_vsubq_m_n_<supf><mode>): Likewise.
+ 	(mve_vhcaddq_rot270_m_s<mode>): Likewise.
+ 	(mve_vhcaddq_rot90_m_s<mode>): Likewise.
+ 	(mve_vmladavaxq_p_s<mode>): Likewise.
+ 	(mve_vmlsdavaq_p_s<mode>): Likewise.
+ 	(mve_vmlsdavaxq_p_s<mode>): Likewise.
+ 	(mve_vqdmladhq_m_s<mode>): Likewise.
+ 	(mve_vqdmladhxq_m_s<mode>): Likewise.
+ 	(mve_vqdmlsdhq_m_s<mode>): Likewise.
+ 	(mve_vqdmlsdhxq_m_s<mode>): Likewise.
+ 	(mve_vqdmulhq_m_n_s<mode>): Likewise.
+ 	(mve_vqdmulhq_m_s<mode>): Likewise.
+ 	(mve_vqrdmladhq_m_s<mode>): Likewise.
+ 	(mve_vqrdmladhxq_m_s<mode>): Likewise.
+ 	(mve_vqrdmlsdhq_m_s<mode>): Likewise.
+ 	(mve_vqrdmlsdhxq_m_s<mode>): Likewise.
+ 	(mve_vqrdmulhq_m_n_s<mode>): Likewise.
+ 	(mve_vqrdmulhq_m_s<mode>): Likewise.
+ 
+ 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (QUADOP_UNONE_UNONE_NONE_NONE_UNONE_QUALIFIERS):
+ 	Define builtin qualifier.
+ 	(QUADOP_NONE_NONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
+ 	(QUADOP_NONE_NONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
+ 	(QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
+ 	(QUADOP_UNONE_UNONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
+ 	(QUADOP_NONE_NONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
+ 	(QUADOP_UNONE_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
+ 	(QUADOP_UNONE_UNONE_UNONE_NONE_UNONE_QUALIFIERS): Likewise.
+ 	* config/arm/arm_mve.h (vsriq_m_n_s8): Define macro.
+ 	(vsubq_m_s8): Likewise.
+ 	(vcvtq_m_n_f16_u16): Likewise.
+ 	(vqshluq_m_n_s8): Likewise.
+ 	(vabavq_p_s8): Likewise.
+ 	(vsriq_m_n_u8): Likewise.
+ 	(vshlq_m_u8): Likewise.
+ 	(vsubq_m_u8): Likewise.
+ 	(vabavq_p_u8): Likewise.
+ 	(vshlq_m_s8): Likewise.
+ 	(vcvtq_m_n_f16_s16): Likewise.
+ 	(vsriq_m_n_s16): Likewise.
+ 	(vsubq_m_s16): Likewise.
+ 	(vcvtq_m_n_f32_u32): Likewise.
+ 	(vqshluq_m_n_s16): Likewise.
+ 	(vabavq_p_s16): Likewise.
+ 	(vsriq_m_n_u16): Likewise.
+ 	(vshlq_m_u16): Likewise.
+ 	(vsubq_m_u16): Likewise.
+ 	(vabavq_p_u16): Likewise.
+ 	(vshlq_m_s16): Likewise.
+ 	(vcvtq_m_n_f32_s32): Likewise.
+ 	(vsriq_m_n_s32): Likewise.
+ 	(vsubq_m_s32): Likewise.
+ 	(vqshluq_m_n_s32): Likewise.
+ 	(vabavq_p_s32): Likewise.
+ 	(vsriq_m_n_u32): Likewise.
+ 	(vshlq_m_u32): Likewise.
+ 	(vsubq_m_u32): Likewise.
+ 	(vabavq_p_u32): Likewise.
+ 	(vshlq_m_s32): Likewise.
+ 	(__arm_vsriq_m_n_s8): Define intrinsic.
+ 	(__arm_vsubq_m_s8): Likewise.
+ 	(__arm_vqshluq_m_n_s8): Likewise.
+ 	(__arm_vabavq_p_s8): Likewise.
+ 	(__arm_vsriq_m_n_u8): Likewise.
+ 	(__arm_vshlq_m_u8): Likewise.
+ 	(__arm_vsubq_m_u8): Likewise.
+ 	(__arm_vabavq_p_u8): Likewise.
+ 	(__arm_vshlq_m_s8): Likewise.
+ 	(__arm_vsriq_m_n_s16): Likewise.
+ 	(__arm_vsubq_m_s16): Likewise.
+ 	(__arm_vqshluq_m_n_s16): Likewise.
+ 	(__arm_vabavq_p_s16): Likewise.
+ 	(__arm_vsriq_m_n_u16): Likewise.
+ 	(__arm_vshlq_m_u16): Likewise.
+ 	(__arm_vsubq_m_u16): Likewise.
+ 	(__arm_vabavq_p_u16): Likewise.
+ 	(__arm_vshlq_m_s16): Likewise.
+ 	(__arm_vsriq_m_n_s32): Likewise.
+ 	(__arm_vsubq_m_s32): Likewise.
+ 	(__arm_vqshluq_m_n_s32): Likewise.
+ 	(__arm_vabavq_p_s32): Likewise.
+ 	(__arm_vsriq_m_n_u32): Likewise.
+ 	(__arm_vshlq_m_u32): Likewise.
+ 	(__arm_vsubq_m_u32): Likewise.
+ 	(__arm_vabavq_p_u32): Likewise.
+ 	(__arm_vshlq_m_s32): Likewise.
+ 	(__arm_vcvtq_m_n_f16_u16): Likewise.
+ 	(__arm_vcvtq_m_n_f16_s16): Likewise.
+ 	(__arm_vcvtq_m_n_f32_u32): Likewise.
+ 	(__arm_vcvtq_m_n_f32_s32): Likewise.
+ 	(vcvtq_m_n): Define polymorphic variant.
+ 	(vqshluq_m_n): Likewise.
+ 	(vshlq_m): Likewise.
+ 	(vsriq_m_n): Likewise.
+ 	(vsubq_m): Likewise.
+ 	(vabavq_p): Likewise.
+ 	* config/arm/arm_mve_builtins.def
+ 	(QUADOP_UNONE_UNONE_NONE_NONE_UNONE_QUALIFIERS): Use builtin qualifier.
+ 	(QUADOP_NONE_NONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
+ 	(QUADOP_NONE_NONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
+ 	(QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
+ 	(QUADOP_UNONE_UNONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
+ 	(QUADOP_NONE_NONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
+ 	(QUADOP_UNONE_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
+ 	(QUADOP_UNONE_UNONE_UNONE_NONE_UNONE_QUALIFIERS): Likewise.
+ 	* config/arm/mve.md (VABAVQ_P): Define iterator.
+ 	(VSHLQ_M): Likewise.
+ 	(VSRIQ_M_N): Likewise.
+ 	(VSUBQ_M): Likewise.
+ 	(VCVTQ_M_N_TO_F): Likewise.
+ 	(mve_vabavq_p_<supf><mode>): Define RTL pattern.
+ 	(mve_vqshluq_m_n_s<mode>): Likewise.
+ 	(mve_vshlq_m_<supf><mode>): Likewise.
+ 	(mve_vsriq_m_n_<supf><mode>): Likewise.
+ 	(mve_vsubq_m_<supf><mode>): Likewise.
+ 	(mve_vcvtq_m_n_to_f_<supf><mode>): Likewise.
+ 
+ 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vrmlaldavhaxq_s32): Define macro.
+ 	(vrmlsldavhaq_s32): Likewise.
+ 	(vrmlsldavhaxq_s32): Likewise.
+ 	(vaddlvaq_p_s32): Likewise.
+ 	(vcvtbq_m_f16_f32): Likewise.
+ 	(vcvtbq_m_f32_f16): Likewise.
+ 	(vcvttq_m_f16_f32): Likewise.
+ 	(vcvttq_m_f32_f16): Likewise.
+ 	(vrev16q_m_s8): Likewise.
+ 	(vrev32q_m_f16): Likewise.
+ 	(vrmlaldavhq_p_s32): Likewise.
+ 	(vrmlaldavhxq_p_s32): Likewise.
+ 	(vrmlsldavhq_p_s32): Likewise.
+ 	(vrmlsldavhxq_p_s32): Likewise.
+ 	(vaddlvaq_p_u32): Likewise.
+ 	(vrev16q_m_u8): Likewise.
+ 	(vrmlaldavhq_p_u32): Likewise.
+ 	(vmvnq_m_n_s16): Likewise.
+ 	(vorrq_m_n_s16): Likewise.
+ 	(vqrshrntq_n_s16): Likewise.
+ 	(vqshrnbq_n_s16): Likewise.
+ 	(vqshrntq_n_s16): Likewise.
+ 	(vrshrnbq_n_s16): Likewise.
+ 	(vrshrntq_n_s16): Likewise.
+ 	(vshrnbq_n_s16): Likewise.
+ 	(vshrntq_n_s16): Likewise.
+ 	(vcmlaq_f16): Likewise.
+ 	(vcmlaq_rot180_f16): Likewise.
+ 	(vcmlaq_rot270_f16): Likewise.
+ 	(vcmlaq_rot90_f16): Likewise.
+ 	(vfmaq_f16): Likewise.
+ 	(vfmaq_n_f16): Likewise.
+ 	(vfmasq_n_f16): Likewise.
+ 	(vfmsq_f16): Likewise.
+ 	(vmlaldavaq_s16): Likewise.
+ 	(vmlaldavaxq_s16): Likewise.
+ 	(vmlsldavaq_s16): Likewise.
+ 	(vmlsldavaxq_s16): Likewise.
+ 	(vabsq_m_f16): Likewise.
+ 	(vcvtmq_m_s16_f16): Likewise.
+ 	(vcvtnq_m_s16_f16): Likewise.
+ 	(vcvtpq_m_s16_f16): Likewise.
+ 	(vcvtq_m_s16_f16): Likewise.
+ 	(vdupq_m_n_f16): Likewise.
+ 	(vmaxnmaq_m_f16): Likewise.
+ 	(vmaxnmavq_p_f16): Likewise.
+ 	(vmaxnmvq_p_f16): Likewise.
+ 	(vminnmaq_m_f16): Likewise.
+ 	(vminnmavq_p_f16): Likewise.
+ 	(vminnmvq_p_f16): Likewise.
+ 	(vmlaldavq_p_s16): Likewise.
+ 	(vmlaldavxq_p_s16): Likewise.
+ 	(vmlsldavq_p_s16): Likewise.
+ 	(vmlsldavxq_p_s16): Likewise.
+ 	(vmovlbq_m_s8): Likewise.
+ 	(vmovltq_m_s8): Likewise.
+ 	(vmovnbq_m_s16): Likewise.
+ 	(vmovntq_m_s16): Likewise.
+ 	(vnegq_m_f16): Likewise.
+ 	(vpselq_f16): Likewise.
+ 	(vqmovnbq_m_s16): Likewise.
+ 	(vqmovntq_m_s16): Likewise.
+ 	(vrev32q_m_s8): Likewise.
+ 	(vrev64q_m_f16): Likewise.
+ 	(vrndaq_m_f16): Likewise.
+ 	(vrndmq_m_f16): Likewise.
+ 	(vrndnq_m_f16): Likewise.
+ 	(vrndpq_m_f16): Likewise.
+ 	(vrndq_m_f16): Likewise.
+ 	(vrndxq_m_f16): Likewise.
+ 	(vcmpeqq_m_n_f16): Likewise.
+ 	(vcmpgeq_m_f16): Likewise.
+ 	(vcmpgeq_m_n_f16): Likewise.
+ 	(vcmpgtq_m_f16): Likewise.
+ 	(vcmpgtq_m_n_f16): Likewise.
+ 	(vcmpleq_m_f16): Likewise.
+ 	(vcmpleq_m_n_f16): Likewise.
+ 	(vcmpltq_m_f16): Likewise.
+ 	(vcmpltq_m_n_f16): Likewise.
+ 	(vcmpneq_m_f16): Likewise.
+ 	(vcmpneq_m_n_f16): Likewise.
+ 	(vmvnq_m_n_u16): Likewise.
+ 	(vorrq_m_n_u16): Likewise.
+ 	(vqrshruntq_n_s16): Likewise.
+ 	(vqshrunbq_n_s16): Likewise.
+ 	(vqshruntq_n_s16): Likewise.
+ 	(vcvtmq_m_u16_f16): Likewise.
+ 	(vcvtnq_m_u16_f16): Likewise.
+ 	(vcvtpq_m_u16_f16): Likewise.
+ 	(vcvtq_m_u16_f16): Likewise.
+ 	(vqmovunbq_m_s16): Likewise.
+ 	(vqmovuntq_m_s16): Likewise.
+ 	(vqrshrntq_n_u16): Likewise.
+ 	(vqshrnbq_n_u16): Likewise.
+ 	(vqshrntq_n_u16): Likewise.
+ 	(vrshrnbq_n_u16): Likewise.
+ 	(vrshrntq_n_u16): Likewise.
+ 	(vshrnbq_n_u16): Likewise.
+ 	(vshrntq_n_u16): Likewise.
+ 	(vmlaldavaq_u16): Likewise.
+ 	(vmlaldavaxq_u16): Likewise.
+ 	(vmlaldavq_p_u16): Likewise.
+ 	(vmlaldavxq_p_u16): Likewise.
+ 	(vmovlbq_m_u8): Likewise.
+ 	(vmovltq_m_u8): Likewise.
+ 	(vmovnbq_m_u16): Likewise.
+ 	(vmovntq_m_u16): Likewise.
+ 	(vqmovnbq_m_u16): Likewise.
+ 	(vqmovntq_m_u16): Likewise.
+ 	(vrev32q_m_u8): Likewise.
+ 	(vmvnq_m_n_s32): Likewise.
+ 	(vorrq_m_n_s32): Likewise.
+ 	(vqrshrntq_n_s32): Likewise.
+ 	(vqshrnbq_n_s32): Likewise.
+ 	(vqshrntq_n_s32): Likewise.
+ 	(vrshrnbq_n_s32): Likewise.
+ 	(vrshrntq_n_s32): Likewise.
+ 	(vshrnbq_n_s32): Likewise.
+ 	(vshrntq_n_s32): Likewise.
+ 	(vcmlaq_f32): Likewise.
+ 	(vcmlaq_rot180_f32): Likewise.
+ 	(vcmlaq_rot270_f32): Likewise.
+ 	(vcmlaq_rot90_f32): Likewise.
+ 	(vfmaq_f32): Likewise.
+ 	(vfmaq_n_f32): Likewise.
+ 	(vfmasq_n_f32): Likewise.
+ 	(vfmsq_f32): Likewise.
+ 	(vmlaldavaq_s32): Likewise.
+ 	(vmlaldavaxq_s32): Likewise.
+ 	(vmlsldavaq_s32): Likewise.
+ 	(vmlsldavaxq_s32): Likewise.
+ 	(vabsq_m_f32): Likewise.
+ 	(vcvtmq_m_s32_f32): Likewise.
+ 	(vcvtnq_m_s32_f32): Likewise.
+ 	(vcvtpq_m_s32_f32): Likewise.
+ 	(vcvtq_m_s32_f32): Likewise.
+ 	(vdupq_m_n_f32): Likewise.
+ 	(vmaxnmaq_m_f32): Likewise.
+ 	(vmaxnmavq_p_f32): Likewise.
+ 	(vmaxnmvq_p_f32): Likewise.
+ 	(vminnmaq_m_f32): Likewise.
+ 	(vminnmavq_p_f32): Likewise.
+ 	(vminnmvq_p_f32): Likewise.
+ 	(vmlaldavq_p_s32): Likewise.
+ 	(vmlaldavxq_p_s32): Likewise.
+ 	(vmlsldavq_p_s32): Likewise.
+ 	(vmlsldavxq_p_s32): Likewise.
+ 	(vmovlbq_m_s16): Likewise.
+ 	(vmovltq_m_s16): Likewise.
+ 	(vmovnbq_m_s32): Likewise.
+ 	(vmovntq_m_s32): Likewise.
+ 	(vnegq_m_f32): Likewise.
+ 	(vpselq_f32): Likewise.
+ 	(vqmovnbq_m_s32): Likewise.
+ 	(vqmovntq_m_s32): Likewise.
+ 	(vrev32q_m_s16): Likewise.
+ 	(vrev64q_m_f32): Likewise.
+ 	(vrndaq_m_f32): Likewise.
+ 	(vrndmq_m_f32): Likewise.
+ 	(vrndnq_m_f32): Likewise.
+ 	(vrndpq_m_f32): Likewise.
+ 	(vrndq_m_f32): Likewise.
+ 	(vrndxq_m_f32): Likewise.
+ 	(vcmpeqq_m_n_f32): Likewise.
+ 	(vcmpgeq_m_f32): Likewise.
+ 	(vcmpgeq_m_n_f32): Likewise.
+ 	(vcmpgtq_m_f32): Likewise.
+ 	(vcmpgtq_m_n_f32): Likewise.
+ 	(vcmpleq_m_f32): Likewise.
+ 	(vcmpleq_m_n_f32): Likewise.
+ 	(vcmpltq_m_f32): Likewise.
+ 	(vcmpltq_m_n_f32): Likewise.
+ 	(vcmpneq_m_f32): Likewise.
+ 	(vcmpneq_m_n_f32): Likewise.
+ 	(vmvnq_m_n_u32): Likewise.
+ 	(vorrq_m_n_u32): Likewise.
+ 	(vqrshruntq_n_s32): Likewise.
+ 	(vqshrunbq_n_s32): Likewise.
+ 	(vqshruntq_n_s32): Likewise.
+ 	(vcvtmq_m_u32_f32): Likewise.
+ 	(vcvtnq_m_u32_f32): Likewise.
+ 	(vcvtpq_m_u32_f32): Likewise.
+ 	(vcvtq_m_u32_f32): Likewise.
+ 	(vqmovunbq_m_s32): Likewise.
+ 	(vqmovuntq_m_s32): Likewise.
+ 	(vqrshrntq_n_u32): Likewise.
+ 	(vqshrnbq_n_u32): Likewise.
+ 	(vqshrntq_n_u32): Likewise.
+ 	(vrshrnbq_n_u32): Likewise.
+ 	(vrshrntq_n_u32): Likewise.
+ 	(vshrnbq_n_u32): Likewise.
+ 	(vshrntq_n_u32): Likewise.
+ 	(vmlaldavaq_u32): Likewise.
+ 	(vmlaldavaxq_u32): Likewise.
+ 	(vmlaldavq_p_u32): Likewise.
+ 	(vmlaldavxq_p_u32): Likewise.
+ 	(vmovlbq_m_u16): Likewise.
+ 	(vmovltq_m_u16): Likewise.
+ 	(vmovnbq_m_u32): Likewise.
+ 	(vmovntq_m_u32): Likewise.
+ 	(vqmovnbq_m_u32): Likewise.
+ 	(vqmovntq_m_u32): Likewise.
+ 	(vrev32q_m_u16): Likewise.
+ 	(__arm_vrmlaldavhaxq_s32): Define intrinsic.
+ 	(__arm_vrmlsldavhaq_s32): Likewise.
+ 	(__arm_vrmlsldavhaxq_s32): Likewise.
+ 	(__arm_vaddlvaq_p_s32): Likewise.
+ 	(__arm_vrev16q_m_s8): Likewise.
+ 	(__arm_vrmlaldavhq_p_s32): Likewise.
+ 	(__arm_vrmlaldavhxq_p_s32): Likewise.
+ 	(__arm_vrmlsldavhq_p_s32): Likewise.
+ 	(__arm_vrmlsldavhxq_p_s32): Likewise.
+ 	(__arm_vaddlvaq_p_u32): Likewise.
+ 	(__arm_vrev16q_m_u8): Likewise.
+ 	(__arm_vrmlaldavhq_p_u32): Likewise.
+ 	(__arm_vmvnq_m_n_s16): Likewise.
+ 	(__arm_vorrq_m_n_s16): Likewise.
+ 	(__arm_vqrshrntq_n_s16): Likewise.
+ 	(__arm_vqshrnbq_n_s16): Likewise.
+ 	(__arm_vqshrntq_n_s16): Likewise.
+ 	(__arm_vrshrnbq_n_s16): Likewise.
+ 	(__arm_vrshrntq_n_s16): Likewise.
+ 	(__arm_vshrnbq_n_s16): Likewise.
+ 	(__arm_vshrntq_n_s16): Likewise.
+ 	(__arm_vmlaldavaq_s16): Likewise.
+ 	(__arm_vmlaldavaxq_s16): Likewise.
+ 	(__arm_vmlsldavaq_s16): Likewise.
+ 	(__arm_vmlsldavaxq_s16): Likewise.
+ 	(__arm_vmlaldavq_p_s16): Likewise.
+ 	(__arm_vmlaldavxq_p_s16): Likewise.
+ 	(__arm_vmlsldavq_p_s16): Likewise.
+ 	(__arm_vmlsldavxq_p_s16): Likewise.
+ 	(__arm_vmovlbq_m_s8): Likewise.
+ 	(__arm_vmovltq_m_s8): Likewise.
+ 	(__arm_vmovnbq_m_s16): Likewise.
+ 	(__arm_vmovntq_m_s16): Likewise.
+ 	(__arm_vqmovnbq_m_s16): Likewise.
+ 	(__arm_vqmovntq_m_s16): Likewise.
+ 	(__arm_vrev32q_m_s8): Likewise.
+ 	(__arm_vmvnq_m_n_u16): Likewise.
+ 	(__arm_vorrq_m_n_u16): Likewise.
+ 	(__arm_vqrshruntq_n_s16): Likewise.
+ 	(__arm_vqshrunbq_n_s16): Likewise.
+ 	(__arm_vqshruntq_n_s16): Likewise.
+ 	(__arm_vqmovunbq_m_s16): Likewise.
+ 	(__arm_vqmovuntq_m_s16): Likewise.
+ 	(__arm_vqrshrntq_n_u16): Likewise.
+ 	(__arm_vqshrnbq_n_u16): Likewise.
+ 	(__arm_vqshrntq_n_u16): Likewise.
+ 	(__arm_vrshrnbq_n_u16): Likewise.
+ 	(__arm_vrshrntq_n_u16): Likewise.
+ 	(__arm_vshrnbq_n_u16): Likewise.
+ 	(__arm_vshrntq_n_u16): Likewise.
+ 	(__arm_vmlaldavaq_u16): Likewise.
+ 	(__arm_vmlaldavaxq_u16): Likewise.
+ 	(__arm_vmlaldavq_p_u16): Likewise.
+ 	(__arm_vmlaldavxq_p_u16): Likewise.
+ 	(__arm_vmovlbq_m_u8): Likewise.
+ 	(__arm_vmovltq_m_u8): Likewise.
+ 	(__arm_vmovnbq_m_u16): Likewise.
+ 	(__arm_vmovntq_m_u16): Likewise.
+ 	(__arm_vqmovnbq_m_u16): Likewise.
+ 	(__arm_vqmovntq_m_u16): Likewise.
+ 	(__arm_vrev32q_m_u8): Likewise.
+ 	(__arm_vmvnq_m_n_s32): Likewise.
+ 	(__arm_vorrq_m_n_s32): Likewise.
+ 	(__arm_vqrshrntq_n_s32): Likewise.
+ 	(__arm_vqshrnbq_n_s32): Likewise.
+ 	(__arm_vqshrntq_n_s32): Likewise.
+ 	(__arm_vrshrnbq_n_s32): Likewise.
+ 	(__arm_vrshrntq_n_s32): Likewise.
+ 	(__arm_vshrnbq_n_s32): Likewise.
+ 	(__arm_vshrntq_n_s32): Likewise.
+ 	(__arm_vmlaldavaq_s32): Likewise.
+ 	(__arm_vmlaldavaxq_s32): Likewise.
+ 	(__arm_vmlsldavaq_s32): Likewise.
+ 	(__arm_vmlsldavaxq_s32): Likewise.
+ 	(__arm_vmlaldavq_p_s32): Likewise.
+ 	(__arm_vmlaldavxq_p_s32): Likewise.
+ 	(__arm_vmlsldavq_p_s32): Likewise.
+ 	(__arm_vmlsldavxq_p_s32): Likewise.
+ 	(__arm_vmovlbq_m_s16): Likewise.
+ 	(__arm_vmovltq_m_s16): Likewise.
+ 	(__arm_vmovnbq_m_s32): Likewise.
+ 	(__arm_vmovntq_m_s32): Likewise.
+ 	(__arm_vqmovnbq_m_s32): Likewise.
+ 	(__arm_vqmovntq_m_s32): Likewise.
+ 	(__arm_vrev32q_m_s16): Likewise.
+ 	(__arm_vmvnq_m_n_u32): Likewise.
+ 	(__arm_vorrq_m_n_u32): Likewise.
+ 	(__arm_vqrshruntq_n_s32): Likewise.
+ 	(__arm_vqshrunbq_n_s32): Likewise.
+ 	(__arm_vqshruntq_n_s32): Likewise.
+ 	(__arm_vqmovunbq_m_s32): Likewise.
+ 	(__arm_vqmovuntq_m_s32): Likewise.
+ 	(__arm_vqrshrntq_n_u32): Likewise.
+ 	(__arm_vqshrnbq_n_u32): Likewise.
+ 	(__arm_vqshrntq_n_u32): Likewise.
+ 	(__arm_vrshrnbq_n_u32): Likewise.
+ 	(__arm_vrshrntq_n_u32): Likewise.
+ 	(__arm_vshrnbq_n_u32): Likewise.
+ 	(__arm_vshrntq_n_u32): Likewise.
+ 	(__arm_vmlaldavaq_u32): Likewise.
+ 	(__arm_vmlaldavaxq_u32): Likewise.
+ 	(__arm_vmlaldavq_p_u32): Likewise.
+ 	(__arm_vmlaldavxq_p_u32): Likewise.
+ 	(__arm_vmovlbq_m_u16): Likewise.
+ 	(__arm_vmovltq_m_u16): Likewise.
+ 	(__arm_vmovnbq_m_u32): Likewise.
+ 	(__arm_vmovntq_m_u32): Likewise.
+ 	(__arm_vqmovnbq_m_u32): Likewise.
+ 	(__arm_vqmovntq_m_u32): Likewise.
+ 	(__arm_vrev32q_m_u16): Likewise.
+ 	(__arm_vcvtbq_m_f16_f32): Likewise.
+ 	(__arm_vcvtbq_m_f32_f16): Likewise.
+ 	(__arm_vcvttq_m_f16_f32): Likewise.
+ 	(__arm_vcvttq_m_f32_f16): Likewise.
+ 	(__arm_vrev32q_m_f16): Likewise.
+ 	(__arm_vcmlaq_f16): Likewise.
+ 	(__arm_vcmlaq_rot180_f16): Likewise.
+ 	(__arm_vcmlaq_rot270_f16): Likewise.
+ 	(__arm_vcmlaq_rot90_f16): Likewise.
+ 	(__arm_vfmaq_f16): Likewise.
+ 	(__arm_vfmaq_n_f16): Likewise.
+ 	(__arm_vfmasq_n_f16): Likewise.
+ 	(__arm_vfmsq_f16): Likewise.
+ 	(__arm_vabsq_m_f16): Likewise.
+ 	(__arm_vcvtmq_m_s16_f16): Likewise.
+ 	(__arm_vcvtnq_m_s16_f16): Likewise.
+ 	(__arm_vcvtpq_m_s16_f16): Likewise.
+ 	(__arm_vcvtq_m_s16_f16): Likewise.
+ 	(__arm_vdupq_m_n_f16): Likewise.
+ 	(__arm_vmaxnmaq_m_f16): Likewise.
+ 	(__arm_vmaxnmavq_p_f16): Likewise.
+ 	(__arm_vmaxnmvq_p_f16): Likewise.
+ 	(__arm_vminnmaq_m_f16): Likewise.
+ 	(__arm_vminnmavq_p_f16): Likewise.
+ 	(__arm_vminnmvq_p_f16): Likewise.
+ 	(__arm_vnegq_m_f16): Likewise.
+ 	(__arm_vpselq_f16): Likewise.
+ 	(__arm_vrev64q_m_f16): Likewise.
+ 	(__arm_vrndaq_m_f16): Likewise.
+ 	(__arm_vrndmq_m_f16): Likewise.
+ 	(__arm_vrndnq_m_f16): Likewise.
+ 	(__arm_vrndpq_m_f16): Likewise.
+ 	(__arm_vrndq_m_f16): Likewise.
+ 	(__arm_vrndxq_m_f16): Likewise.
+ 	(__arm_vcmpeqq_m_n_f16): Likewise.
+ 	(__arm_vcmpgeq_m_f16): Likewise.
+ 	(__arm_vcmpgeq_m_n_f16): Likewise.
+ 	(__arm_vcmpgtq_m_f16): Likewise.
+ 	(__arm_vcmpgtq_m_n_f16): Likewise.
+ 	(__arm_vcmpleq_m_f16): Likewise.
+ 	(__arm_vcmpleq_m_n_f16): Likewise.
+ 	(__arm_vcmpltq_m_f16): Likewise.
+ 	(__arm_vcmpltq_m_n_f16): Likewise.
+ 	(__arm_vcmpneq_m_f16): Likewise.
+ 	(__arm_vcmpneq_m_n_f16): Likewise.
+ 	(__arm_vcvtmq_m_u16_f16): Likewise.
+ 	(__arm_vcvtnq_m_u16_f16): Likewise.
+ 	(__arm_vcvtpq_m_u16_f16): Likewise.
+ 	(__arm_vcvtq_m_u16_f16): Likewise.
+ 	(__arm_vcmlaq_f32): Likewise.
+ 	(__arm_vcmlaq_rot180_f32): Likewise.
+ 	(__arm_vcmlaq_rot270_f32): Likewise.
+ 	(__arm_vcmlaq_rot90_f32): Likewise.
+ 	(__arm_vfmaq_f32): Likewise.
+ 	(__arm_vfmaq_n_f32): Likewise.
+ 	(__arm_vfmasq_n_f32): Likewise.
+ 	(__arm_vfmsq_f32): Likewise.
+ 	(__arm_vabsq_m_f32): Likewise.
+ 	(__arm_vcvtmq_m_s32_f32): Likewise.
+ 	(__arm_vcvtnq_m_s32_f32): Likewise.
+ 	(__arm_vcvtpq_m_s32_f32): Likewise.
+ 	(__arm_vcvtq_m_s32_f32): Likewise.
+ 	(__arm_vdupq_m_n_f32): Likewise.
+ 	(__arm_vmaxnmaq_m_f32): Likewise.
+ 	(__arm_vmaxnmavq_p_f32): Likewise.
+ 	(__arm_vmaxnmvq_p_f32): Likewise.
+ 	(__arm_vminnmaq_m_f32): Likewise.
+ 	(__arm_vminnmavq_p_f32): Likewise.
+ 	(__arm_vminnmvq_p_f32): Likewise.
+ 	(__arm_vnegq_m_f32): Likewise.
+ 	(__arm_vpselq_f32): Likewise.
+ 	(__arm_vrev64q_m_f32): Likewise.
+ 	(__arm_vrndaq_m_f32): Likewise.
+ 	(__arm_vrndmq_m_f32): Likewise.
+ 	(__arm_vrndnq_m_f32): Likewise.
+ 	(__arm_vrndpq_m_f32): Likewise.
+ 	(__arm_vrndq_m_f32): Likewise.
+ 	(__arm_vrndxq_m_f32): Likewise.
+ 	(__arm_vcmpeqq_m_n_f32): Likewise.
+ 	(__arm_vcmpgeq_m_f32): Likewise.
+ 	(__arm_vcmpgeq_m_n_f32): Likewise.
+ 	(__arm_vcmpgtq_m_f32): Likewise.
+ 	(__arm_vcmpgtq_m_n_f32): Likewise.
+ 	(__arm_vcmpleq_m_f32): Likewise.
+ 	(__arm_vcmpleq_m_n_f32): Likewise.
+ 	(__arm_vcmpltq_m_f32): Likewise.
+ 	(__arm_vcmpltq_m_n_f32): Likewise.
+ 	(__arm_vcmpneq_m_f32): Likewise.
+ 	(__arm_vcmpneq_m_n_f32): Likewise.
+ 	(__arm_vcvtmq_m_u32_f32): Likewise.
+ 	(__arm_vcvtnq_m_u32_f32): Likewise.
+ 	(__arm_vcvtpq_m_u32_f32): Likewise.
+ 	(__arm_vcvtq_m_u32_f32): Likewise.
+ 	(vcvtq_m): Define polymorphic variant.
+ 	(vabsq_m): Likewise.
+ 	(vcmlaq): Likewise.
+ 	(vcmlaq_rot180): Likewise.
+ 	(vcmlaq_rot270): Likewise.
+ 	(vcmlaq_rot90): Likewise.
+ 	(vcmpeqq_m_n): Likewise.
+ 	(vcmpgeq_m_n): Likewise.
+ 	(vrndxq_m): Likewise.
+ 	(vrndq_m): Likewise.
+ 	(vrndpq_m): Likewise.
+ 	(vcmpgtq_m_n): Likewise.
+ 	(vcmpgtq_m): Likewise.
+ 	(vcmpleq_m): Likewise.
+ 	(vcmpleq_m_n): Likewise.
+ 	(vcmpltq_m_n): Likewise.
+ 	(vcmpltq_m): Likewise.
+ 	(vcmpneq_m): Likewise.
+ 	(vcmpneq_m_n): Likewise.
+ 	(vcvtbq_m): Likewise.
+ 	(vcvttq_m): Likewise.
+ 	(vcvtmq_m): Likewise.
+ 	(vcvtnq_m): Likewise.
+ 	(vcvtpq_m): Likewise.
+ 	(vdupq_m_n): Likewise.
+ 	(vfmaq_n): Likewise.
+ 	(vfmaq): Likewise.
+ 	(vfmasq_n): Likewise.
+ 	(vfmsq): Likewise.
+ 	(vmaxnmaq_m): Likewise.
+ 	(vmaxnmavq_m): Likewise.
+ 	(vmaxnmvq_m): Likewise.
+ 	(vmaxnmavq_p): Likewise.
+ 	(vmaxnmvq_p): Likewise.
+ 	(vminnmaq_m): Likewise.
+ 	(vminnmavq_p): Likewise.
+ 	(vminnmvq_p): Likewise.
+ 	(vrndnq_m): Likewise.
+ 	(vrndaq_m): Likewise.
+ 	(vrndmq_m): Likewise.
+ 	(vrev64q_m): Likewise.
+ 	(vrev32q_m): Likewise.
+ 	(vpselq): Likewise.
+ 	(vnegq_m): Likewise.
+ 	(vcmpgeq_m): Likewise.
+ 	(vshrntq_n): Likewise.
+ 	(vrshrntq_n): Likewise.
+ 	(vmovlbq_m): Likewise.
+ 	(vmovnbq_m): Likewise.
+ 	(vmovntq_m): Likewise.
+ 	(vmvnq_m_n): Likewise.
+ 	(vmvnq_m): Likewise.
+ 	(vshrnbq_n): Likewise.
+ 	(vrshrnbq_n): Likewise.
+ 	(vqshruntq_n): Likewise.
+ 	(vrev16q_m): Likewise.
+ 	(vqshrunbq_n): Likewise.
+ 	(vqshrntq_n): Likewise.
+ 	(vqrshruntq_n): Likewise.
+ 	(vqrshrntq_n): Likewise.
+ 	(vqshrnbq_n): Likewise.
+ 	(vqmovuntq_m): Likewise.
+ 	(vqmovntq_m): Likewise.
+ 	(vqmovnbq_m): Likewise.
+ 	(vorrq_m_n): Likewise.
+ 	(vmovltq_m): Likewise.
+ 	(vqmovunbq_m): Likewise.
+ 	(vaddlvaq_p): Likewise.
+ 	(vmlaldavaq): Likewise.
+ 	(vmlaldavaxq): Likewise.
+ 	(vmlaldavq_p): Likewise.
+ 	(vmlaldavxq_p): Likewise.
+ 	(vmlsldavaq): Likewise.
+ 	(vmlsldavaxq): Likewise.
+ 	(vmlsldavq_p): Likewise.
+ 	(vmlsldavxq_p): Likewise.
+ 	(vrmlaldavhaxq): Likewise.
+ 	(vrmlaldavhq_p): Likewise.
+ 	(vrmlaldavhxq_p): Likewise.
+ 	(vrmlsldavhaq): Likewise.
+ 	(vrmlsldavhaxq): Likewise.
+ 	(vrmlsldavhq_p): Likewise.
+ 	(vrmlsldavhxq_p): Likewise.
+ 	* config/arm/arm_mve_builtins.def (TERNOP_NONE_NONE_IMM_UNONE): Use
+ 	builtin qualifier.
+ 	(TERNOP_NONE_NONE_NONE_IMM): Likewise.
+ 	(TERNOP_NONE_NONE_NONE_NONE): Likewise.
+ 	(TERNOP_NONE_NONE_NONE_UNONE): Likewise.
+ 	(TERNOP_UNONE_NONE_NONE_UNONE): Likewise.
+ 	(TERNOP_UNONE_UNONE_IMM_UNONE): Likewise.
+ 	(TERNOP_UNONE_UNONE_NONE_IMM): Likewise.
+ 	(TERNOP_UNONE_UNONE_NONE_UNONE): Likewise.
+ 	(TERNOP_UNONE_UNONE_UNONE_IMM): Likewise.
+ 	(TERNOP_UNONE_UNONE_UNONE_UNONE): Likewise.
+ 	* config/arm/mve.md (MVE_constraint3): Define mode attribute iterator.
+ 	(MVE_pred3): Likewise.
+ 	(MVE_constraint1): Likewise.
+ 	(MVE_pred1): Likewise.
+ 	(VMLALDAVQ_P): Define iterator.
+ 	(VQMOVNBQ_M): Likewise.
+ 	(VMOVLTQ_M): Likewise.
+ 	(VMOVNBQ_M): Likewise.
+ 	(VRSHRNTQ_N): Likewise.
+ 	(VORRQ_M_N): Likewise.
+ 	(VREV32Q_M): Likewise.
+ 	(VREV16Q_M): Likewise.
+ 	(VQRSHRNTQ_N): Likewise.
+ 	(VMOVNTQ_M): Likewise.
+ 	(VMOVLBQ_M): Likewise.
+ 	(VMLALDAVAQ): Likewise.
+ 	(VQSHRNBQ_N): Likewise.
+ 	(VSHRNBQ_N): Likewise.
+ 	(VRSHRNBQ_N): Likewise.
+ 	(VMLALDAVXQ_P): Likewise.
+ 	(VQMOVNTQ_M): Likewise.
+ 	(VMVNQ_M_N): Likewise.
+ 	(VQSHRNTQ_N): Likewise.
+ 	(VMLALDAVAXQ): Likewise.
+ 	(VSHRNTQ_N): Likewise.
+ 	(VCVTMQ_M): Likewise.
+ 	(VCVTNQ_M): Likewise.
+ 	(VCVTPQ_M): Likewise.
+ 	(VCVTQ_M_N_FROM_F): Likewise.
+ 	(VCVTQ_M_FROM_F): Likewise.
+ 	(VRMLALDAVHQ_P): Likewise.
+ 	(VADDLVAQ_P): Likewise.
+ 	(mve_vrndq_m_f<mode>): Define RTL pattern.
+ 	(mve_vabsq_m_f<mode>): Likewise.
+ 	(mve_vaddlvaq_p_<supf>v4si): Likewise.
+ 	(mve_vcmlaq_f<mode>): Likewise.
+ 	(mve_vcmlaq_rot180_f<mode>): Likewise.
+ 	(mve_vcmlaq_rot270_f<mode>): Likewise.
+ 	(mve_vcmlaq_rot90_f<mode>): Likewise.
+ 	(mve_vcmpeqq_m_n_f<mode>): Likewise.
+ 	(mve_vcmpgeq_m_f<mode>): Likewise.
+ 	(mve_vcmpgeq_m_n_f<mode>): Likewise.
+ 	(mve_vcmpgtq_m_f<mode>): Likewise.
+ 	(mve_vcmpgtq_m_n_f<mode>): Likewise.
+ 	(mve_vcmpleq_m_f<mode>): Likewise.
+ 	(mve_vcmpleq_m_n_f<mode>): Likewise.
+ 	(mve_vcmpltq_m_f<mode>): Likewise.
+ 	(mve_vcmpltq_m_n_f<mode>): Likewise.
+ 	(mve_vcmpneq_m_f<mode>): Likewise.
+ 	(mve_vcmpneq_m_n_f<mode>): Likewise.
+ 	(mve_vcvtbq_m_f16_f32v8hf): Likewise.
+ 	(mve_vcvtbq_m_f32_f16v4sf): Likewise.
+ 	(mve_vcvttq_m_f16_f32v8hf): Likewise.
+ 	(mve_vcvttq_m_f32_f16v4sf): Likewise.
+ 	(mve_vdupq_m_n_f<mode>): Likewise.
+ 	(mve_vfmaq_f<mode>): Likewise.
+ 	(mve_vfmaq_n_f<mode>): Likewise.
+ 	(mve_vfmasq_n_f<mode>): Likewise.
+ 	(mve_vfmsq_f<mode>): Likewise.
+ 	(mve_vmaxnmaq_m_f<mode>): Likewise.
+ 	(mve_vmaxnmavq_p_f<mode>): Likewise.
+ 	(mve_vmaxnmvq_p_f<mode>): Likewise.
+ 	(mve_vminnmaq_m_f<mode>): Likewise.
+ 	(mve_vminnmavq_p_f<mode>): Likewise.
+ 	(mve_vminnmvq_p_f<mode>): Likewise.
+ 	(mve_vmlaldavaq_<supf><mode>): Likewise.
+ 	(mve_vmlaldavaxq_<supf><mode>): Likewise.
+ 	(mve_vmlaldavq_p_<supf><mode>): Likewise.
+ 	(mve_vmlaldavxq_p_<supf><mode>): Likewise.
+ 	(mve_vmlsldavaq_s<mode>): Likewise.
+ 	(mve_vmlsldavaxq_s<mode>): Likewise.
+ 	(mve_vmlsldavq_p_s<mode>): Likewise.
+ 	(mve_vmlsldavxq_p_s<mode>): Likewise.
+ 	(mve_vmovlbq_m_<supf><mode>): Likewise.
+ 	(mve_vmovltq_m_<supf><mode>): Likewise.
+ 	(mve_vmovnbq_m_<supf><mode>): Likewise.
+ 	(mve_vmovntq_m_<supf><mode>): Likewise.
+ 	(mve_vmvnq_m_n_<supf><mode>): Likewise.
+ 	(mve_vnegq_m_f<mode>): Likewise.
+ 	(mve_vorrq_m_n_<supf><mode>): Likewise.
+ 	(mve_vpselq_f<mode>): Likewise.
+ 	(mve_vqmovnbq_m_<supf><mode>): Likewise.
+ 	(mve_vqmovntq_m_<supf><mode>): Likewise.
+ 	(mve_vqmovunbq_m_s<mode>): Likewise.
+ 	(mve_vqmovuntq_m_s<mode>): Likewise.
+ 	(mve_vqrshrntq_n_<supf><mode>): Likewise.
+ 	(mve_vqrshruntq_n_s<mode>): Likewise.
+ 	(mve_vqshrnbq_n_<supf><mode>): Likewise.
+ 	(mve_vqshrntq_n_<supf><mode>): Likewise.
+ 	(mve_vqshrunbq_n_s<mode>): Likewise.
+ 	(mve_vqshruntq_n_s<mode>): Likewise.
+ 	(mve_vrev32q_m_fv8hf): Likewise.
+ 	(mve_vrev32q_m_<supf><mode>): Likewise.
+ 	(mve_vrev64q_m_f<mode>): Likewise.
+ 	(mve_vrmlaldavhaxq_sv4si): Likewise.
+ 	(mve_vrmlaldavhxq_p_sv4si): Likewise.
+ 	(mve_vrmlsldavhaxq_sv4si): Likewise.
+ 	(mve_vrmlsldavhq_p_sv4si): Likewise.
+ 	(mve_vrmlsldavhxq_p_sv4si): Likewise.
+ 	(mve_vrndaq_m_f<mode>): Likewise.
+ 	(mve_vrndmq_m_f<mode>): Likewise.
+ 	(mve_vrndnq_m_f<mode>): Likewise.
+ 	(mve_vrndpq_m_f<mode>): Likewise.
+ 	(mve_vrndxq_m_f<mode>): Likewise.
+ 	(mve_vrshrnbq_n_<supf><mode>): Likewise.
+ 	(mve_vrshrntq_n_<supf><mode>): Likewise.
+ 	(mve_vshrnbq_n_<supf><mode>): Likewise.
+ 	(mve_vshrntq_n_<supf><mode>): Likewise.
+ 	(mve_vcvtmq_m_<supf><mode>): Likewise.
+ 	(mve_vcvtpq_m_<supf><mode>): Likewise.
+ 	(mve_vcvtnq_m_<supf><mode>): Likewise.
+ 	(mve_vcvtq_m_n_from_f_<supf><mode>): Likewise.
+ 	(mve_vrev16q_m_<supf>v16qi): Likewise.
+ 	(mve_vcvtq_m_from_f_<supf><mode>): Likewise.
+ 	(mve_vrmlaldavhq_p_<supf>v4si): Likewise.
+ 	(mve_vrmlsldavhaq_sv4si): Likewise.
+ 
+ 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vpselq_u8): Define macro.
+ 	(vpselq_s8): Likewise.
+ 	(vrev64q_m_u8): Likewise.
+ 	(vqrdmlashq_n_u8): Likewise.
+ 	(vqrdmlahq_n_u8): Likewise.
+ 	(vqdmlahq_n_u8): Likewise.
+ 	(vmvnq_m_u8): Likewise.
+ 	(vmlasq_n_u8): Likewise.
+ 	(vmlaq_n_u8): Likewise.
+ 	(vmladavq_p_u8): Likewise.
+ 	(vmladavaq_u8): Likewise.
+ 	(vminvq_p_u8): Likewise.
+ 	(vmaxvq_p_u8): Likewise.
+ 	(vdupq_m_n_u8): Likewise.
+ 	(vcmpneq_m_u8): Likewise.
+ 	(vcmpneq_m_n_u8): Likewise.
+ 	(vcmphiq_m_u8): Likewise.
+ 	(vcmphiq_m_n_u8): Likewise.
+ 	(vcmpeqq_m_u8): Likewise.
+ 	(vcmpeqq_m_n_u8): Likewise.
+ 	(vcmpcsq_m_u8): Likewise.
+ 	(vcmpcsq_m_n_u8): Likewise.
+ 	(vclzq_m_u8): Likewise.
+ 	(vaddvaq_p_u8): Likewise.
+ 	(vsriq_n_u8): Likewise.
+ 	(vsliq_n_u8): Likewise.
+ 	(vshlq_m_r_u8): Likewise.
+ 	(vrshlq_m_n_u8): Likewise.
+ 	(vqshlq_m_r_u8): Likewise.
+ 	(vqrshlq_m_n_u8): Likewise.
+ 	(vminavq_p_s8): Likewise.
+ 	(vminaq_m_s8): Likewise.
+ 	(vmaxavq_p_s8): Likewise.
+ 	(vmaxaq_m_s8): Likewise.
+ 	(vcmpneq_m_s8): Likewise.
+ 	(vcmpneq_m_n_s8): Likewise.
+ 	(vcmpltq_m_s8): Likewise.
+ 	(vcmpltq_m_n_s8): Likewise.
+ 	(vcmpleq_m_s8): Likewise.
+ 	(vcmpleq_m_n_s8): Likewise.
+ 	(vcmpgtq_m_s8): Likewise.
+ 	(vcmpgtq_m_n_s8): Likewise.
+ 	(vcmpgeq_m_s8): Likewise.
+ 	(vcmpgeq_m_n_s8): Likewise.
+ 	(vcmpeqq_m_s8): Likewise.
+ 	(vcmpeqq_m_n_s8): Likewise.
+ 	(vshlq_m_r_s8): Likewise.
+ 	(vrshlq_m_n_s8): Likewise.
+ 	(vrev64q_m_s8): Likewise.
+ 	(vqshlq_m_r_s8): Likewise.
+ 	(vqrshlq_m_n_s8): Likewise.
+ 	(vqnegq_m_s8): Likewise.
+ 	(vqabsq_m_s8): Likewise.
+ 	(vnegq_m_s8): Likewise.
+ 	(vmvnq_m_s8): Likewise.
+ 	(vmlsdavxq_p_s8): Likewise.
+ 	(vmlsdavq_p_s8): Likewise.
+ 	(vmladavxq_p_s8): Likewise.
+ 	(vmladavq_p_s8): Likewise.
+ 	(vminvq_p_s8): Likewise.
+ 	(vmaxvq_p_s8): Likewise.
+ 	(vdupq_m_n_s8): Likewise.
+ 	(vclzq_m_s8): Likewise.
+ 	(vclsq_m_s8): Likewise.
+ 	(vaddvaq_p_s8): Likewise.
+ 	(vabsq_m_s8): Likewise.
+ 	(vqrdmlsdhxq_s8): Likewise.
+ 	(vqrdmlsdhq_s8): Likewise.
+ 	(vqrdmlashq_n_s8): Likewise.
+ 	(vqrdmlahq_n_s8): Likewise.
+ 	(vqrdmladhxq_s8): Likewise.
+ 	(vqrdmladhq_s8): Likewise.
+ 	(vqdmlsdhxq_s8): Likewise.
+ 	(vqdmlsdhq_s8): Likewise.
+ 	(vqdmlahq_n_s8): Likewise.
+ 	(vqdmladhxq_s8): Likewise.
+ 	(vqdmladhq_s8): Likewise.
+ 	(vmlsdavaxq_s8): Likewise.
+ 	(vmlsdavaq_s8): Likewise.
+ 	(vmlasq_n_s8): Likewise.
+ 	(vmlaq_n_s8): Likewise.
+ 	(vmladavaxq_s8): Likewise.
+ 	(vmladavaq_s8): Likewise.
+ 	(vsriq_n_s8): Likewise.
+ 	(vsliq_n_s8): Likewise.
+ 	(vpselq_u16): Likewise.
+ 	(vpselq_s16): Likewise.
+ 	(vrev64q_m_u16): Likewise.
+ 	(vqrdmlashq_n_u16): Likewise.
+ 	(vqrdmlahq_n_u16): Likewise.
+ 	(vqdmlahq_n_u16): Likewise.
+ 	(vmvnq_m_u16): Likewise.
+ 	(vmlasq_n_u16): Likewise.
+ 	(vmlaq_n_u16): Likewise.
+ 	(vmladavq_p_u16): Likewise.
+ 	(vmladavaq_u16): Likewise.
+ 	(vminvq_p_u16): Likewise.
+ 	(vmaxvq_p_u16): Likewise.
+ 	(vdupq_m_n_u16): Likewise.
+ 	(vcmpneq_m_u16): Likewise.
+ 	(vcmpneq_m_n_u16): Likewise.
+ 	(vcmphiq_m_u16): Likewise.
+ 	(vcmphiq_m_n_u16): Likewise.
+ 	(vcmpeqq_m_u16): Likewise.
+ 	(vcmpeqq_m_n_u16): Likewise.
+ 	(vcmpcsq_m_u16): Likewise.
+ 	(vcmpcsq_m_n_u16): Likewise.
+ 	(vclzq_m_u16): Likewise.
+ 	(vaddvaq_p_u16): Likewise.
+ 	(vsriq_n_u16): Likewise.
+ 	(vsliq_n_u16): Likewise.
+ 	(vshlq_m_r_u16): Likewise.
+ 	(vrshlq_m_n_u16): Likewise.
+ 	(vqshlq_m_r_u16): Likewise.
+ 	(vqrshlq_m_n_u16): Likewise.
+ 	(vminavq_p_s16): Likewise.
+ 	(vminaq_m_s16): Likewise.
+ 	(vmaxavq_p_s16): Likewise.
+ 	(vmaxaq_m_s16): Likewise.
+ 	(vcmpneq_m_s16): Likewise.
+ 	(vcmpneq_m_n_s16): Likewise.
+ 	(vcmpltq_m_s16): Likewise.
+ 	(vcmpltq_m_n_s16): Likewise.
+ 	(vcmpleq_m_s16): Likewise.
+ 	(vcmpleq_m_n_s16): Likewise.
+ 	(vcmpgtq_m_s16): Likewise.
+ 	(vcmpgtq_m_n_s16): Likewise.
+ 	(vcmpgeq_m_s16): Likewise.
+ 	(vcmpgeq_m_n_s16): Likewise.
+ 	(vcmpeqq_m_s16): Likewise.
+ 	(vcmpeqq_m_n_s16): Likewise.
+ 	(vshlq_m_r_s16): Likewise.
+ 	(vrshlq_m_n_s16): Likewise.
+ 	(vrev64q_m_s16): Likewise.
+ 	(vqshlq_m_r_s16): Likewise.
+ 	(vqrshlq_m_n_s16): Likewise.
+ 	(vqnegq_m_s16): Likewise.
+ 	(vqabsq_m_s16): Likewise.
+ 	(vnegq_m_s16): Likewise.
+ 	(vmvnq_m_s16): Likewise.
+ 	(vmlsdavxq_p_s16): Likewise.
+ 	(vmlsdavq_p_s16): Likewise.
+ 	(vmladavxq_p_s16): Likewise.
+ 	(vmladavq_p_s16): Likewise.
+ 	(vminvq_p_s16): Likewise.
+ 	(vmaxvq_p_s16): Likewise.
+ 	(vdupq_m_n_s16): Likewise.
+ 	(vclzq_m_s16): Likewise.
+ 	(vclsq_m_s16): Likewise.
+ 	(vaddvaq_p_s16): Likewise.
+ 	(vabsq_m_s16): Likewise.
+ 	(vqrdmlsdhxq_s16): Likewise.
+ 	(vqrdmlsdhq_s16): Likewise.
+ 	(vqrdmlashq_n_s16): Likewise.
+ 	(vqrdmlahq_n_s16): Likewise.
+ 	(vqrdmladhxq_s16): Likewise.
+ 	(vqrdmladhq_s16): Likewise.
+ 	(vqdmlsdhxq_s16): Likewise.
+ 	(vqdmlsdhq_s16): Likewise.
+ 	(vqdmlahq_n_s16): Likewise.
+ 	(vqdmladhxq_s16): Likewise.
+ 	(vqdmladhq_s16): Likewise.
+ 	(vmlsdavaxq_s16): Likewise.
+ 	(vmlsdavaq_s16): Likewise.
+ 	(vmlasq_n_s16): Likewise.
+ 	(vmlaq_n_s16): Likewise.
+ 	(vmladavaxq_s16): Likewise.
+ 	(vmladavaq_s16): Likewise.
+ 	(vsriq_n_s16): Likewise.
+ 	(vsliq_n_s16): Likewise.
+ 	(vpselq_u32): Likewise.
+ 	(vpselq_s32): Likewise.
+ 	(vrev64q_m_u32): Likewise.
+ 	(vqrdmlashq_n_u32): Likewise.
+ 	(vqrdmlahq_n_u32): Likewise.
+ 	(vqdmlahq_n_u32): Likewise.
+ 	(vmvnq_m_u32): Likewise.
+ 	(vmlasq_n_u32): Likewise.
+ 	(vmlaq_n_u32): Likewise.
+ 	(vmladavq_p_u32): Likewise.
+ 	(vmladavaq_u32): Likewise.
+ 	(vminvq_p_u32): Likewise.
+ 	(vmaxvq_p_u32): Likewise.
+ 	(vdupq_m_n_u32): Likewise.
+ 	(vcmpneq_m_u32): Likewise.
+ 	(vcmpneq_m_n_u32): Likewise.
+ 	(vcmphiq_m_u32): Likewise.
+ 	(vcmphiq_m_n_u32): Likewise.
+ 	(vcmpeqq_m_u32): Likewise.
+ 	(vcmpeqq_m_n_u32): Likewise.
+ 	(vcmpcsq_m_u32): Likewise.
+ 	(vcmpcsq_m_n_u32): Likewise.
+ 	(vclzq_m_u32): Likewise.
+ 	(vaddvaq_p_u32): Likewise.
+ 	(vsriq_n_u32): Likewise.
+ 	(vsliq_n_u32): Likewise.
+ 	(vshlq_m_r_u32): Likewise.
+ 	(vrshlq_m_n_u32): Likewise.
+ 	(vqshlq_m_r_u32): Likewise.
+ 	(vqrshlq_m_n_u32): Likewise.
+ 	(vminavq_p_s32): Likewise.
+ 	(vminaq_m_s32): Likewise.
+ 	(vmaxavq_p_s32): Likewise.
+ 	(vmaxaq_m_s32): Likewise.
+ 	(vcmpneq_m_s32): Likewise.
+ 	(vcmpneq_m_n_s32): Likewise.
+ 	(vcmpltq_m_s32): Likewise.
+ 	(vcmpltq_m_n_s32): Likewise.
+ 	(vcmpleq_m_s32): Likewise.
+ 	(vcmpleq_m_n_s32): Likewise.
+ 	(vcmpgtq_m_s32): Likewise.
+ 	(vcmpgtq_m_n_s32): Likewise.
+ 	(vcmpgeq_m_s32): Likewise.
+ 	(vcmpgeq_m_n_s32): Likewise.
+ 	(vcmpeqq_m_s32): Likewise.
+ 	(vcmpeqq_m_n_s32): Likewise.
+ 	(vshlq_m_r_s32): Likewise.
+ 	(vrshlq_m_n_s32): Likewise.
+ 	(vrev64q_m_s32): Likewise.
+ 	(vqshlq_m_r_s32): Likewise.
+ 	(vqrshlq_m_n_s32): Likewise.
+ 	(vqnegq_m_s32): Likewise.
+ 	(vqabsq_m_s32): Likewise.
+ 	(vnegq_m_s32): Likewise.
+ 	(vmvnq_m_s32): Likewise.
+ 	(vmlsdavxq_p_s32): Likewise.
+ 	(vmlsdavq_p_s32): Likewise.
+ 	(vmladavxq_p_s32): Likewise.
+ 	(vmladavq_p_s32): Likewise.
+ 	(vminvq_p_s32): Likewise.
+ 	(vmaxvq_p_s32): Likewise.
+ 	(vdupq_m_n_s32): Likewise.
+ 	(vclzq_m_s32): Likewise.
+ 	(vclsq_m_s32): Likewise.
+ 	(vaddvaq_p_s32): Likewise.
+ 	(vabsq_m_s32): Likewise.
+ 	(vqrdmlsdhxq_s32): Likewise.
+ 	(vqrdmlsdhq_s32): Likewise.
+ 	(vqrdmlashq_n_s32): Likewise.
+ 	(vqrdmlahq_n_s32): Likewise.
+ 	(vqrdmladhxq_s32): Likewise.
+ 	(vqrdmladhq_s32): Likewise.
+ 	(vqdmlsdhxq_s32): Likewise.
+ 	(vqdmlsdhq_s32): Likewise.
+ 	(vqdmlahq_n_s32): Likewise.
+ 	(vqdmladhxq_s32): Likewise.
+ 	(vqdmladhq_s32): Likewise.
+ 	(vmlsdavaxq_s32): Likewise.
+ 	(vmlsdavaq_s32): Likewise.
+ 	(vmlasq_n_s32): Likewise.
+ 	(vmlaq_n_s32): Likewise.
+ 	(vmladavaxq_s32): Likewise.
+ 	(vmladavaq_s32): Likewise.
+ 	(vsriq_n_s32): Likewise.
+ 	(vsliq_n_s32): Likewise.
+ 	(vpselq_u64): Likewise.
+ 	(vpselq_s64): Likewise.
+ 	(__arm_vpselq_u8): Define intrinsic.
+ 	(__arm_vpselq_s8): Likewise.
+ 	(__arm_vrev64q_m_u8): Likewise.
+ 	(__arm_vqrdmlashq_n_u8): Likewise.
+ 	(__arm_vqrdmlahq_n_u8): Likewise.
+ 	(__arm_vqdmlahq_n_u8): Likewise.
+ 	(__arm_vmvnq_m_u8): Likewise.
+ 	(__arm_vmlasq_n_u8): Likewise.
+ 	(__arm_vmlaq_n_u8): Likewise.
+ 	(__arm_vmladavq_p_u8): Likewise.
+ 	(__arm_vmladavaq_u8): Likewise.
+ 	(__arm_vminvq_p_u8): Likewise.
+ 	(__arm_vmaxvq_p_u8): Likewise.
+ 	(__arm_vdupq_m_n_u8): Likewise.
+ 	(__arm_vcmpneq_m_u8): Likewise.
+ 	(__arm_vcmpneq_m_n_u8): Likewise.
+ 	(__arm_vcmphiq_m_u8): Likewise.
+ 	(__arm_vcmphiq_m_n_u8): Likewise.
+ 	(__arm_vcmpeqq_m_u8): Likewise.
+ 	(__arm_vcmpeqq_m_n_u8): Likewise.
+ 	(__arm_vcmpcsq_m_u8): Likewise.
+ 	(__arm_vcmpcsq_m_n_u8): Likewise.
+ 	(__arm_vclzq_m_u8): Likewise.
+ 	(__arm_vaddvaq_p_u8): Likewise.
+ 	(__arm_vsriq_n_u8): Likewise.
+ 	(__arm_vsliq_n_u8): Likewise.
+ 	(__arm_vshlq_m_r_u8): Likewise.
+ 	(__arm_vrshlq_m_n_u8): Likewise.
+ 	(__arm_vqshlq_m_r_u8): Likewise.
+ 	(__arm_vqrshlq_m_n_u8): Likewise.
+ 	(__arm_vminavq_p_s8): Likewise.
+ 	(__arm_vminaq_m_s8): Likewise.
+ 	(__arm_vmaxavq_p_s8): Likewise.
+ 	(__arm_vmaxaq_m_s8): Likewise.
+ 	(__arm_vcmpneq_m_s8): Likewise.
+ 	(__arm_vcmpneq_m_n_s8): Likewise.
+ 	(__arm_vcmpltq_m_s8): Likewise.
+ 	(__arm_vcmpltq_m_n_s8): Likewise.
+ 	(__arm_vcmpleq_m_s8): Likewise.
+ 	(__arm_vcmpleq_m_n_s8): Likewise.
+ 	(__arm_vcmpgtq_m_s8): Likewise.
+ 	(__arm_vcmpgtq_m_n_s8): Likewise.
+ 	(__arm_vcmpgeq_m_s8): Likewise.
+ 	(__arm_vcmpgeq_m_n_s8): Likewise.
+ 	(__arm_vcmpeqq_m_s8): Likewise.
+ 	(__arm_vcmpeqq_m_n_s8): Likewise.
+ 	(__arm_vshlq_m_r_s8): Likewise.
+ 	(__arm_vrshlq_m_n_s8): Likewise.
+ 	(__arm_vrev64q_m_s8): Likewise.
+ 	(__arm_vqshlq_m_r_s8): Likewise.
+ 	(__arm_vqrshlq_m_n_s8): Likewise.
+ 	(__arm_vqnegq_m_s8): Likewise.
+ 	(__arm_vqabsq_m_s8): Likewise.
+ 	(__arm_vnegq_m_s8): Likewise.
+ 	(__arm_vmvnq_m_s8): Likewise.
+ 	(__arm_vmlsdavxq_p_s8): Likewise.
+ 	(__arm_vmlsdavq_p_s8): Likewise.
+ 	(__arm_vmladavxq_p_s8): Likewise.
+ 	(__arm_vmladavq_p_s8): Likewise.
+ 	(__arm_vminvq_p_s8): Likewise.
+ 	(__arm_vmaxvq_p_s8): Likewise.
+ 	(__arm_vdupq_m_n_s8): Likewise.
+ 	(__arm_vclzq_m_s8): Likewise.
+ 	(__arm_vclsq_m_s8): Likewise.
+ 	(__arm_vaddvaq_p_s8): Likewise.
+ 	(__arm_vabsq_m_s8): Likewise.
+ 	(__arm_vqrdmlsdhxq_s8): Likewise.
+ 	(__arm_vqrdmlsdhq_s8): Likewise.
+ 	(__arm_vqrdmlashq_n_s8): Likewise.
+ 	(__arm_vqrdmlahq_n_s8): Likewise.
+ 	(__arm_vqrdmladhxq_s8): Likewise.
+ 	(__arm_vqrdmladhq_s8): Likewise.
+ 	(__arm_vqdmlsdhxq_s8): Likewise.
+ 	(__arm_vqdmlsdhq_s8): Likewise.
+ 	(__arm_vqdmlahq_n_s8): Likewise.
+ 	(__arm_vqdmladhxq_s8): Likewise.
+ 	(__arm_vqdmladhq_s8): Likewise.
+ 	(__arm_vmlsdavaxq_s8): Likewise.
+ 	(__arm_vmlsdavaq_s8): Likewise.
+ 	(__arm_vmlasq_n_s8): Likewise.
+ 	(__arm_vmlaq_n_s8): Likewise.
+ 	(__arm_vmladavaxq_s8): Likewise.
+ 	(__arm_vmladavaq_s8): Likewise.
+ 	(__arm_vsriq_n_s8): Likewise.
+ 	(__arm_vsliq_n_s8): Likewise.
+ 	(__arm_vpselq_u16): Likewise.
+ 	(__arm_vpselq_s16): Likewise.
+ 	(__arm_vrev64q_m_u16): Likewise.
+ 	(__arm_vqrdmlashq_n_u16): Likewise.
+ 	(__arm_vqrdmlahq_n_u16): Likewise.
+ 	(__arm_vqdmlahq_n_u16): Likewise.
+ 	(__arm_vmvnq_m_u16): Likewise.
+ 	(__arm_vmlasq_n_u16): Likewise.
+ 	(__arm_vmlaq_n_u16): Likewise.
+ 	(__arm_vmladavq_p_u16): Likewise.
+ 	(__arm_vmladavaq_u16): Likewise.
+ 	(__arm_vminvq_p_u16): Likewise.
+ 	(__arm_vmaxvq_p_u16): Likewise.
+ 	(__arm_vdupq_m_n_u16): Likewise.
+ 	(__arm_vcmpneq_m_u16): Likewise.
+ 	(__arm_vcmpneq_m_n_u16): Likewise.
+ 	(__arm_vcmphiq_m_u16): Likewise.
+ 	(__arm_vcmphiq_m_n_u16): Likewise.
+ 	(__arm_vcmpeqq_m_u16): Likewise.
+ 	(__arm_vcmpeqq_m_n_u16): Likewise.
+ 	(__arm_vcmpcsq_m_u16): Likewise.
+ 	(__arm_vcmpcsq_m_n_u16): Likewise.
+ 	(__arm_vclzq_m_u16): Likewise.
+ 	(__arm_vaddvaq_p_u16): Likewise.
+ 	(__arm_vsriq_n_u16): Likewise.
+ 	(__arm_vsliq_n_u16): Likewise.
+ 	(__arm_vshlq_m_r_u16): Likewise.
+ 	(__arm_vrshlq_m_n_u16): Likewise.
+ 	(__arm_vqshlq_m_r_u16): Likewise.
+ 	(__arm_vqrshlq_m_n_u16): Likewise.
+ 	(__arm_vminavq_p_s16): Likewise.
+ 	(__arm_vminaq_m_s16): Likewise.
+ 	(__arm_vmaxavq_p_s16): Likewise.
+ 	(__arm_vmaxaq_m_s16): Likewise.
+ 	(__arm_vcmpneq_m_s16): Likewise.
+ 	(__arm_vcmpneq_m_n_s16): Likewise.
+ 	(__arm_vcmpltq_m_s16): Likewise.
+ 	(__arm_vcmpltq_m_n_s16): Likewise.
+ 	(__arm_vcmpleq_m_s16): Likewise.
+ 	(__arm_vcmpleq_m_n_s16): Likewise.
+ 	(__arm_vcmpgtq_m_s16): Likewise.
+ 	(__arm_vcmpgtq_m_n_s16): Likewise.
+ 	(__arm_vcmpgeq_m_s16): Likewise.
+ 	(__arm_vcmpgeq_m_n_s16): Likewise.
+ 	(__arm_vcmpeqq_m_s16): Likewise.
+ 	(__arm_vcmpeqq_m_n_s16): Likewise.
+ 	(__arm_vshlq_m_r_s16): Likewise.
+ 	(__arm_vrshlq_m_n_s16): Likewise.
+ 	(__arm_vrev64q_m_s16): Likewise.
+ 	(__arm_vqshlq_m_r_s16): Likewise.
+ 	(__arm_vqrshlq_m_n_s16): Likewise.
+ 	(__arm_vqnegq_m_s16): Likewise.
+ 	(__arm_vqabsq_m_s16): Likewise.
+ 	(__arm_vnegq_m_s16): Likewise.
+ 	(__arm_vmvnq_m_s16): Likewise.
+ 	(__arm_vmlsdavxq_p_s16): Likewise.
+ 	(__arm_vmlsdavq_p_s16): Likewise.
+ 	(__arm_vmladavxq_p_s16): Likewise.
+ 	(__arm_vmladavq_p_s16): Likewise.
+ 	(__arm_vminvq_p_s16): Likewise.
+ 	(__arm_vmaxvq_p_s16): Likewise.
+ 	(__arm_vdupq_m_n_s16): Likewise.
+ 	(__arm_vclzq_m_s16): Likewise.
+ 	(__arm_vclsq_m_s16): Likewise.
+ 	(__arm_vaddvaq_p_s16): Likewise.
+ 	(__arm_vabsq_m_s16): Likewise.
+ 	(__arm_vqrdmlsdhxq_s16): Likewise.
+ 	(__arm_vqrdmlsdhq_s16): Likewise.
+ 	(__arm_vqrdmlashq_n_s16): Likewise.
+ 	(__arm_vqrdmlahq_n_s16): Likewise.
+ 	(__arm_vqrdmladhxq_s16): Likewise.
+ 	(__arm_vqrdmladhq_s16): Likewise.
+ 	(__arm_vqdmlsdhxq_s16): Likewise.
+ 	(__arm_vqdmlsdhq_s16): Likewise.
+ 	(__arm_vqdmlahq_n_s16): Likewise.
+ 	(__arm_vqdmladhxq_s16): Likewise.
+ 	(__arm_vqdmladhq_s16): Likewise.
+ 	(__arm_vmlsdavaxq_s16): Likewise.
+ 	(__arm_vmlsdavaq_s16): Likewise.
+ 	(__arm_vmlasq_n_s16): Likewise.
+ 	(__arm_vmlaq_n_s16): Likewise.
+ 	(__arm_vmladavaxq_s16): Likewise.
+ 	(__arm_vmladavaq_s16): Likewise.
+ 	(__arm_vsriq_n_s16): Likewise.
+ 	(__arm_vsliq_n_s16): Likewise.
+ 	(__arm_vpselq_u32): Likewise.
+ 	(__arm_vpselq_s32): Likewise.
+ 	(__arm_vrev64q_m_u32): Likewise.
+ 	(__arm_vqrdmlashq_n_u32): Likewise.
+ 	(__arm_vqrdmlahq_n_u32): Likewise.
+ 	(__arm_vqdmlahq_n_u32): Likewise.
+ 	(__arm_vmvnq_m_u32): Likewise.
+ 	(__arm_vmlasq_n_u32): Likewise.
+ 	(__arm_vmlaq_n_u32): Likewise.
+ 	(__arm_vmladavq_p_u32): Likewise.
+ 	(__arm_vmladavaq_u32): Likewise.
+ 	(__arm_vminvq_p_u32): Likewise.
+ 	(__arm_vmaxvq_p_u32): Likewise.
+ 	(__arm_vdupq_m_n_u32): Likewise.
+ 	(__arm_vcmpneq_m_u32): Likewise.
+ 	(__arm_vcmpneq_m_n_u32): Likewise.
+ 	(__arm_vcmphiq_m_u32): Likewise.
+ 	(__arm_vcmphiq_m_n_u32): Likewise.
+ 	(__arm_vcmpeqq_m_u32): Likewise.
+ 	(__arm_vcmpeqq_m_n_u32): Likewise.
+ 	(__arm_vcmpcsq_m_u32): Likewise.
+ 	(__arm_vcmpcsq_m_n_u32): Likewise.
+ 	(__arm_vclzq_m_u32): Likewise.
+ 	(__arm_vaddvaq_p_u32): Likewise.
+ 	(__arm_vsriq_n_u32): Likewise.
+ 	(__arm_vsliq_n_u32): Likewise.
+ 	(__arm_vshlq_m_r_u32): Likewise.
+ 	(__arm_vrshlq_m_n_u32): Likewise.
+ 	(__arm_vqshlq_m_r_u32): Likewise.
+ 	(__arm_vqrshlq_m_n_u32): Likewise.
+ 	(__arm_vminavq_p_s32): Likewise.
+ 	(__arm_vminaq_m_s32): Likewise.
+ 	(__arm_vmaxavq_p_s32): Likewise.
+ 	(__arm_vmaxaq_m_s32): Likewise.
+ 	(__arm_vcmpneq_m_s32): Likewise.
+ 	(__arm_vcmpneq_m_n_s32): Likewise.
+ 	(__arm_vcmpltq_m_s32): Likewise.
+ 	(__arm_vcmpltq_m_n_s32): Likewise.
+ 	(__arm_vcmpleq_m_s32): Likewise.
+ 	(__arm_vcmpleq_m_n_s32): Likewise.
+ 	(__arm_vcmpgtq_m_s32): Likewise.
+ 	(__arm_vcmpgtq_m_n_s32): Likewise.
+ 	(__arm_vcmpgeq_m_s32): Likewise.
+ 	(__arm_vcmpgeq_m_n_s32): Likewise.
+ 	(__arm_vcmpeqq_m_s32): Likewise.
+ 	(__arm_vcmpeqq_m_n_s32): Likewise.
+ 	(__arm_vshlq_m_r_s32): Likewise.
+ 	(__arm_vrshlq_m_n_s32): Likewise.
+ 	(__arm_vrev64q_m_s32): Likewise.
+ 	(__arm_vqshlq_m_r_s32): Likewise.
+ 	(__arm_vqrshlq_m_n_s32): Likewise.
+ 	(__arm_vqnegq_m_s32): Likewise.
+ 	(__arm_vqabsq_m_s32): Likewise.
+ 	(__arm_vnegq_m_s32): Likewise.
+ 	(__arm_vmvnq_m_s32): Likewise.
+ 	(__arm_vmlsdavxq_p_s32): Likewise.
+ 	(__arm_vmlsdavq_p_s32): Likewise.
+ 	(__arm_vmladavxq_p_s32): Likewise.
+ 	(__arm_vmladavq_p_s32): Likewise.
+ 	(__arm_vminvq_p_s32): Likewise.
+ 	(__arm_vmaxvq_p_s32): Likewise.
+ 	(__arm_vdupq_m_n_s32): Likewise.
+ 	(__arm_vclzq_m_s32): Likewise.
+ 	(__arm_vclsq_m_s32): Likewise.
+ 	(__arm_vaddvaq_p_s32): Likewise.
+ 	(__arm_vabsq_m_s32): Likewise.
+ 	(__arm_vqrdmlsdhxq_s32): Likewise.
+ 	(__arm_vqrdmlsdhq_s32): Likewise.
+ 	(__arm_vqrdmlashq_n_s32): Likewise.
+ 	(__arm_vqrdmlahq_n_s32): Likewise.
+ 	(__arm_vqrdmladhxq_s32): Likewise.
+ 	(__arm_vqrdmladhq_s32): Likewise.
+ 	(__arm_vqdmlsdhxq_s32): Likewise.
+ 	(__arm_vqdmlsdhq_s32): Likewise.
+ 	(__arm_vqdmlahq_n_s32): Likewise.
+ 	(__arm_vqdmladhxq_s32): Likewise.
+ 	(__arm_vqdmladhq_s32): Likewise.
+ 	(__arm_vmlsdavaxq_s32): Likewise.
+ 	(__arm_vmlsdavaq_s32): Likewise.
+ 	(__arm_vmlasq_n_s32): Likewise.
+ 	(__arm_vmlaq_n_s32): Likewise.
+ 	(__arm_vmladavaxq_s32): Likewise.
+ 	(__arm_vmladavaq_s32): Likewise.
+ 	(__arm_vsriq_n_s32): Likewise.
+ 	(__arm_vsliq_n_s32): Likewise.
+ 	(__arm_vpselq_u64): Likewise.
+ 	(__arm_vpselq_s64): Likewise.
+ 	(vcmpneq_m_n): Define polymorphic variant.
+ 	(vcmpneq_m): Likewise.
+ 	(vqrdmlsdhq): Likewise.
+ 	(vqrdmlsdhxq): Likewise.
+ 	(vqrshlq_m_n): Likewise.
+ 	(vqshlq_m_r): Likewise.
+ 	(vrev64q_m): Likewise.
+ 	(vrshlq_m_n): Likewise.
+ 	(vshlq_m_r): Likewise.
+ 	(vsliq_n): Likewise.
+ 	(vsriq_n): Likewise.
+ 	(vqrdmlashq_n): Likewise.
+ 	(vqrdmlahq): Likewise.
+ 	(vqrdmladhxq): Likewise.
+ 	(vqrdmladhq): Likewise.
+ 	(vqnegq_m): Likewise.
+ 	(vqdmlsdhxq): Likewise.
+ 	(vabsq_m): Likewise.
+ 	(vclsq_m): Likewise.
+ 	(vclzq_m): Likewise.
+ 	(vcmpgeq_m): Likewise.
+ 	(vcmpgeq_m_n): Likewise.
+ 	(vdupq_m_n): Likewise.
+ 	(vmaxaq_m): Likewise.
+ 	(vmlaq_n): Likewise.
+ 	(vmlasq_n): Likewise.
+ 	(vmvnq_m): Likewise.
+ 	(vnegq_m): Likewise.
+ 	(vpselq): Likewise.
+ 	(vqdmlahq_n): Likewise.
+ 	(vqrdmlahq_n): Likewise.
+ 	(vqdmlsdhq): Likewise.
+ 	(vqdmladhq): Likewise.
+ 	(vqabsq_m): Likewise.
+ 	(vminaq_m): Likewise.
+ 	(vrmlaldavhaq): Likewise.
+ 	(vmlsdavxq_p): Likewise.
+ 	(vmlsdavq_p): Likewise.	
+ 	(vmlsdavaxq): Likewise.	
+ 	(vmlsdavaq): Likewise.	
+ 	(vaddvaq_p): Likewise.	
+ 	(vcmpcsq_m_n): Likewise.	
+ 	(vcmpcsq_m): Likewise.	
+ 	(vcmpeqq_m_n): Likewise.	
+ 	(vcmpeqq_m): Likewise.	
+ 	(vmladavxq_p): Likewise.	
+ 	(vmladavq_p): Likewise.	
+ 	(vmladavaxq): Likewise.	
+ 	(vmladavaq): Likewise.	
+ 	(vminvq_p): Likewise.	
+ 	(vminavq_p): Likewise.	
+ 	(vmaxvq_p): Likewise.	
+ 	(vmaxavq_p): Likewise.	
+ 	(vcmpltq_m_n): Likewise.	
+ 	(vcmpltq_m): Likewise.	
+ 	(vcmpleq_m): Likewise.	
+ 	(vcmpleq_m_n): Likewise.	
+ 	(vcmphiq_m_n): Likewise.	
+ 	(vcmphiq_m): Likewise.	
+ 	(vcmpgtq_m_n): Likewise.	
+ 	(vcmpgtq_m): Likewise.	
+ 	* config/arm/arm_mve_builtins.def (TERNOP_NONE_NONE_NONE_IMM): Use
+ 	builtin qualifier.
+ 	(TERNOP_NONE_NONE_NONE_NONE): Likewise.
+ 	(TERNOP_NONE_NONE_NONE_UNONE): Likewise.
+ 	(TERNOP_UNONE_NONE_NONE_UNONE): Likewise.
+ 	(TERNOP_UNONE_UNONE_NONE_UNONE): Likewise.
+ 	(TERNOP_UNONE_UNONE_UNONE_IMM): Likewise.
+ 	(TERNOP_UNONE_UNONE_UNONE_UNONE): Likewise.
+ 	* config/arm/constraints.md (Rc): Define constraint to check constant is
+ 	in the range of 0 to 15.
+ 	(Re): Define constraint to check constant is in the range of 0 to 31.
+ 	* config/arm/mve.md (VADDVAQ_P): Define iterator.
+ 	(VCLZQ_M): Likewise.
+ 	(VCMPEQQ_M_N): Likewise.
+ 	(VCMPEQQ_M): Likewise.
+ 	(VCMPNEQ_M_N): Likewise.
+ 	(VCMPNEQ_M): Likewise.
+ 	(VDUPQ_M_N): Likewise.
+ 	(VMAXVQ_P): Likewise.
+ 	(VMINVQ_P): Likewise.
+ 	(VMLADAVAQ): Likewise.
+ 	(VMLADAVQ_P): Likewise.
+ 	(VMLAQ_N): Likewise.
+ 	(VMLASQ_N): Likewise.
+ 	(VMVNQ_M): Likewise.
+ 	(VPSELQ): Likewise.
+ 	(VQDMLAHQ_N): Likewise.
+ 	(VQRDMLAHQ_N): Likewise.
+ 	(VQRDMLASHQ_N): Likewise.
+ 	(VQRSHLQ_M_N): Likewise.
+ 	(VQSHLQ_M_R): Likewise.
+ 	(VREV64Q_M): Likewise.
+ 	(VRSHLQ_M_N): Likewise.
+ 	(VSHLQ_M_R): Likewise.
+ 	(VSLIQ_N): Likewise.
+ 	(VSRIQ_N): Likewise.
+ 	(mve_vabsq_m_s<mode>): Define RTL pattern.
+ 	(mve_vaddvaq_p_<supf><mode>): Likewise.
+ 	(mve_vclsq_m_s<mode>): Likewise.
+ 	(mve_vclzq_m_<supf><mode>): Likewise.
+ 	(mve_vcmpcsq_m_n_u<mode>): Likewise.
+ 	(mve_vcmpcsq_m_u<mode>): Likewise.
+ 	(mve_vcmpeqq_m_n_<supf><mode>): Likewise.
+ 	(mve_vcmpeqq_m_<supf><mode>): Likewise.
+ 	(mve_vcmpgeq_m_n_s<mode>): Likewise.
+ 	(mve_vcmpgeq_m_s<mode>): Likewise.
+ 	(mve_vcmpgtq_m_n_s<mode>): Likewise.
+ 	(mve_vcmpgtq_m_s<mode>): Likewise.
+ 	(mve_vcmphiq_m_n_u<mode>): Likewise.
+ 	(mve_vcmphiq_m_u<mode>): Likewise.
+ 	(mve_vcmpleq_m_n_s<mode>): Likewise.
+ 	(mve_vcmpleq_m_s<mode>): Likewise.
+ 	(mve_vcmpltq_m_n_s<mode>): Likewise.
+ 	(mve_vcmpltq_m_s<mode>): Likewise.
+ 	(mve_vcmpneq_m_n_<supf><mode>): Likewise.
+ 	(mve_vcmpneq_m_<supf><mode>): Likewise.
+ 	(mve_vdupq_m_n_<supf><mode>): Likewise.
+ 	(mve_vmaxaq_m_s<mode>): Likewise.
+ 	(mve_vmaxavq_p_s<mode>): Likewise.
+ 	(mve_vmaxvq_p_<supf><mode>): Likewise.
+ 	(mve_vminaq_m_s<mode>): Likewise.
+ 	(mve_vminavq_p_s<mode>): Likewise.
+ 	(mve_vminvq_p_<supf><mode>): Likewise.
+ 	(mve_vmladavaq_<supf><mode>): Likewise.
+ 	(mve_vmladavq_p_<supf><mode>): Likewise.
+ 	(mve_vmladavxq_p_s<mode>): Likewise.
+ 	(mve_vmlaq_n_<supf><mode>): Likewise.
+ 	(mve_vmlasq_n_<supf><mode>): Likewise.
+ 	(mve_vmlsdavq_p_s<mode>): Likewise.
+ 	(mve_vmlsdavxq_p_s<mode>): Likewise.
+ 	(mve_vmvnq_m_<supf><mode>): Likewise.
+ 	(mve_vnegq_m_s<mode>): Likewise.
+ 	(mve_vpselq_<supf><mode>): Likewise.
+ 	(mve_vqabsq_m_s<mode>): Likewise.
+ 	(mve_vqdmlahq_n_<supf><mode>): Likewise.
+ 	(mve_vqnegq_m_s<mode>): Likewise.
+ 	(mve_vqrdmladhq_s<mode>): Likewise.
+ 	(mve_vqrdmladhxq_s<mode>): Likewise.
+ 	(mve_vqrdmlahq_n_<supf><mode>): Likewise.
+ 	(mve_vqrdmlashq_n_<supf><mode>): Likewise.
+ 	(mve_vqrdmlsdhq_s<mode>): Likewise.
+ 	(mve_vqrdmlsdhxq_s<mode>): Likewise.
+ 	(mve_vqrshlq_m_n_<supf><mode>): Likewise.
+ 	(mve_vqshlq_m_r_<supf><mode>): Likewise.
+ 	(mve_vrev64q_m_<supf><mode>): Likewise.
+ 	(mve_vrshlq_m_n_<supf><mode>): Likewise.
+ 	(mve_vshlq_m_r_<supf><mode>): Likewise.
+ 	(mve_vsliq_n_<supf><mode>): Likewise.
+ 	(mve_vsriq_n_<supf><mode>): Likewise.
+ 	(mve_vqdmlsdhxq_s<mode>): Likewise.
+ 	(mve_vqdmlsdhq_s<mode>): Likewise.
+ 	(mve_vqdmladhxq_s<mode>): Likewise.
+ 	(mve_vqdmladhq_s<mode>): Likewise.
+ 	(mve_vmlsdavaxq_s<mode>): Likewise.
+ 	(mve_vmlsdavaq_s<mode>): Likewise.
+ 	(mve_vmladavaxq_s<mode>): Likewise.
+ 	* config/arm/predicates.md (mve_imm_15):Define predicate to check the
+ 	matching constraint Rc.
+ 	(mve_imm_31): Define predicate to check	the matching constraint Re.
+ 
+ 2020-03-18  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (vec_cmp<mode>di): Set operand 1 to DImode.
+ 	(vec_cmp<mode>di_dup): Likewise.
+ 	* config/gcn/gcn.h (STORE_FLAG_VALUE): Set to -1.
+ 
+ 2020-03-18  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (COND_MODE): Delete.
+ 	(COND_INT_MODE): Delete.
+ 	(cond_op): Add "mult".
+ 	(cond_<expander><mode>): Use VEC_ALLREG_MODE.
+ 	(cond_<expander><mode>): Use VEC_ALLREG_INT_MODE.
+ 
+ 2020-03-18   Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/94206
+ 	* gimple-fold.c (gimple_fold_builtin_memset): Avoid using
+ 	partial int modes or not mode-precision integer types for
+ 	the store.
+ 
+ 2020-03-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* asan.c (get_mem_refs_of_builtin_call): Fix up duplicated word issue
+ 	in a comment.
+ 	* config/arc/arc.c (frame_stack_add): Likewise.
+ 	* gimple-loop-versioning.cc (loop_versioning::analyze_arbitrary_term):
+ 	Likewise.
+ 	* ipa-predicate.c (predicate::remap_after_inlining): Likewise.
+ 	* tree-ssa-strlen.h (handle_printf_call): Likewise.
+ 	* tree-ssa-strlen.c (is_strlen_related_p): Likewise.
+ 	* optinfo-emit-json.cc (optrecord_json_writer::add_record): Likewise.
+ 
+ 2020-03-18  Duan bo  <duanbo3@huawei.com>
+ 
+ 	PR target/94201
+ 	* config/aarch64/aarch64.md (ldr_got_tiny): Delete.
+ 	(@ldr_got_tiny_<mode>): New pattern.
+ 	(ldr_got_tiny_sidi): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_load_symref_appropriately): Use
+ 	them to handle SYMBOL_TINY_GOT for ILP32.
+ 
+ 2020-03-18  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_sve_abi): Treat p12-p15 as
+ 	call-preserved for SVE PCS functions.
+ 	(aarch64_layout_frame): Cope with up to 12 predicate save slots.
+ 	Optimize the case in which there are no following vector save slots.
+ 
+ 2020-03-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/94188
+ 	* fold-const.c (build_fold_addr_expr): Convert address to
+ 	correct type.
+ 	* asan.c (maybe_create_ssa_name): Strip useless type conversions.
+ 	* gimple-fold.c (gimple_fold_stmt_to_constant_1): Use build1
+ 	to build the ADDR_EXPR which we don't really want to simplify.
+ 	* tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
+ 	* tree-ssa-loop-im.c (gather_mem_refs_stmt): Likewise.
+ 	* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
+ 	(simplify_builtin_call): Strip useless type conversions.
+ 	* tree-ssa-strlen.c (new_strinfo): Likewise.
+ 
+ 2020-03-17  Alexey Neyman  <stilor@att.net>
+ 
+ 	PR debug/93751
+ 	* dwarf2out.c (gen_decl_die): Proceed to generating the DIE if
+ 	the debug level is terse and the declaration is public. Do not
+ 	generate type info.
+ 	(dwarf2out_decl): Same.
+ 	(add_type_attribute): Return immediately if debug level is
+ 	terse.
+ 
+ 2020-03-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/iterators.md (Vmtype): Handle V4BF and V8BF.
+ 
+ 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (TERNOP_UNONE_UNONE_UNONE_IMM_QUALIFIERS):
+ 	Define qualifier for ternary operands.
+ 	(TERNOP_UNONE_UNONE_NONE_NONE_QUALIFIERS): Likewise.
+ 	(TERNOP_UNONE_NONE_UNONE_IMM_QUALIFIERS): Likewise.
+ 	(TERNOP_NONE_NONE_UNONE_IMM_QUALIFIERS): Likewise.
+ 	(TERNOP_UNONE_UNONE_NONE_IMM_QUALIFIERS): Likewise.
+ 	(TERNOP_UNONE_UNONE_NONE_UNONE_QUALIFIERS): Likewise.
+ 	(TERNOP_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
+ 	(TERNOP_UNONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
+ 	(TERNOP_NONE_NONE_NONE_IMM_QUALIFIERS): Likewise.
+ 	(TERNOP_NONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
+ 	(TERNOP_NONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
+ 	(TERNOP_NONE_NONE_UNONE_UNONE_QUALIFIERS): Likewise.
+ 	(TERNOP_UNONE_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
+ 	(TERNOP_NONE_NONE_NONE_NONE_QUALIFIERS): Likewise.
+ 	* config/arm/arm_mve.h (vabavq_s8): Define macro.
+ 	(vabavq_s16): Likewise.
+ 	(vabavq_s32): Likewise.
+ 	(vbicq_m_n_s16): Likewise.
+ 	(vbicq_m_n_s32): Likewise.
+ 	(vbicq_m_n_u16): Likewise.
+ 	(vbicq_m_n_u32): Likewise.
+ 	(vcmpeqq_m_f16): Likewise.
+ 	(vcmpeqq_m_f32): Likewise.
+ 	(vcvtaq_m_s16_f16): Likewise.
+ 	(vcvtaq_m_u16_f16): Likewise.
+ 	(vcvtaq_m_s32_f32): Likewise.
+ 	(vcvtaq_m_u32_f32): Likewise.
+ 	(vcvtq_m_f16_s16): Likewise.
+ 	(vcvtq_m_f16_u16): Likewise.
+ 	(vcvtq_m_f32_s32): Likewise.
+ 	(vcvtq_m_f32_u32): Likewise.
+ 	(vqrshrnbq_n_s16): Likewise.
+ 	(vqrshrnbq_n_u16): Likewise.
+ 	(vqrshrnbq_n_s32): Likewise.
+ 	(vqrshrnbq_n_u32): Likewise.
+ 	(vqrshrunbq_n_s16): Likewise.
+ 	(vqrshrunbq_n_s32): Likewise.
+ 	(vrmlaldavhaq_s32): Likewise.
+ 	(vrmlaldavhaq_u32): Likewise.
+ 	(vshlcq_s8): Likewise.
+ 	(vshlcq_u8): Likewise.
+ 	(vshlcq_s16): Likewise.
+ 	(vshlcq_u16): Likewise.
+ 	(vshlcq_s32): Likewise.
+ 	(vshlcq_u32): Likewise.
+ 	(vabavq_u8): Likewise.
+ 	(vabavq_u16): Likewise.
+ 	(vabavq_u32): Likewise.
+ 	(__arm_vabavq_s8): Define intrinsic.
+ 	(__arm_vabavq_s16): Likewise.
+ 	(__arm_vabavq_s32): Likewise.
+ 	(__arm_vabavq_u8): Likewise.
+ 	(__arm_vabavq_u16): Likewise.
+ 	(__arm_vabavq_u32): Likewise.
+ 	(__arm_vbicq_m_n_s16): Likewise.
+ 	(__arm_vbicq_m_n_s32): Likewise.
+ 	(__arm_vbicq_m_n_u16): Likewise.
+ 	(__arm_vbicq_m_n_u32): Likewise.
+ 	(__arm_vqrshrnbq_n_s16): Likewise.
+ 	(__arm_vqrshrnbq_n_u16): Likewise.
+ 	(__arm_vqrshrnbq_n_s32): Likewise.
+ 	(__arm_vqrshrnbq_n_u32): Likewise.
+ 	(__arm_vqrshrunbq_n_s16): Likewise.
+ 	(__arm_vqrshrunbq_n_s32): Likewise.
+ 	(__arm_vrmlaldavhaq_s32): Likewise.
+ 	(__arm_vrmlaldavhaq_u32): Likewise.
+ 	(__arm_vshlcq_s8): Likewise.
+ 	(__arm_vshlcq_u8): Likewise.
+ 	(__arm_vshlcq_s16): Likewise.
+ 	(__arm_vshlcq_u16): Likewise.
+ 	(__arm_vshlcq_s32): Likewise.
+ 	(__arm_vshlcq_u32): Likewise.
+ 	(__arm_vcmpeqq_m_f16): Likewise.
+ 	(__arm_vcmpeqq_m_f32): Likewise.
+ 	(__arm_vcvtaq_m_s16_f16): Likewise.
+ 	(__arm_vcvtaq_m_u16_f16): Likewise.
+ 	(__arm_vcvtaq_m_s32_f32): Likewise.
+ 	(__arm_vcvtaq_m_u32_f32): Likewise.
+ 	(__arm_vcvtq_m_f16_s16): Likewise.
+ 	(__arm_vcvtq_m_f16_u16): Likewise.
+ 	(__arm_vcvtq_m_f32_s32): Likewise.
+ 	(__arm_vcvtq_m_f32_u32): Likewise.
+ 	(vcvtaq_m): Define polymorphic variant.
+ 	(vcvtq_m): Likewise.
+ 	(vabavq): Likewise.
+ 	(vshlcq): Likewise.
+ 	(vbicq_m_n): Likewise.
+ 	(vqrshrnbq_n): Likewise.
+ 	(vqrshrunbq_n): Likewise.
+ 	* config/arm/arm_mve_builtins.def
+ 	(TERNOP_UNONE_UNONE_UNONE_IMM_QUALIFIERS): Use the builtin qualifer.
+ 	(TERNOP_UNONE_UNONE_NONE_NONE_QUALIFIERS): Likewise.
+ 	(TERNOP_UNONE_NONE_UNONE_IMM_QUALIFIERS): Likewise.
+ 	(TERNOP_NONE_NONE_UNONE_IMM_QUALIFIERS): Likewise.
+ 	(TERNOP_UNONE_UNONE_NONE_IMM_QUALIFIERS): Likewise.
+ 	(TERNOP_UNONE_UNONE_NONE_UNONE_QUALIFIERS): Likewise.
+ 	(TERNOP_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
+ 	(TERNOP_UNONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
+ 	(TERNOP_NONE_NONE_NONE_IMM_QUALIFIERS): Likewise.
+ 	(TERNOP_NONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
+ 	(TERNOP_NONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
+ 	(TERNOP_NONE_NONE_UNONE_UNONE_QUALIFIERS): Likewise.
+ 	(TERNOP_UNONE_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
+ 	(TERNOP_NONE_NONE_NONE_NONE_QUALIFIERS): Likewise.
+ 	* config/arm/mve.md (VBICQ_M_N): Define iterator.
+ 	(VCVTAQ_M): Likewise.
+ 	(VCVTQ_M_TO_F): Likewise.
+ 	(VQRSHRNBQ_N): Likewise.
+ 	(VABAVQ): Likewise.
+ 	(VSHLCQ): Likewise.
+ 	(VRMLALDAVHAQ): Likewise.
+ 	(mve_vbicq_m_n_<supf><mode>): Define RTL pattern.
+ 	(mve_vcmpeqq_m_f<mode>): Likewise.
+ 	(mve_vcvtaq_m_<supf><mode>): Likewise.
+ 	(mve_vcvtq_m_to_f_<supf><mode>): Likewise.
+ 	(mve_vqrshrnbq_n_<supf><mode>): Likewise.
+ 	(mve_vqrshrunbq_n_s<mode>): Likewise.
+ 	(mve_vrmlaldavhaq_<supf>v4si): Likewise.
+ 	(mve_vabavq_<supf><mode>): Likewise.
+ 	(mve_vshlcq_<supf><mode>): Likewise.
+ 	(mve_vshlcq_<supf><mode>): Likewise.
+ 	(mve_vshlcq_vec_<supf><mode>): Define RTL expand.
+ 	(mve_vshlcq_carry_<supf><mode>): Likewise.
+ 
+ 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vqmovntq_u16): Define macro.
+ 	(vqmovnbq_u16): Likewise.
+ 	(vmulltq_poly_p8): Likewise.
+ 	(vmullbq_poly_p8): Likewise.
+ 	(vmovntq_u16): Likewise.
+ 	(vmovnbq_u16): Likewise.
+ 	(vmlaldavxq_u16): Likewise.
+ 	(vmlaldavq_u16): Likewise.
+ 	(vqmovuntq_s16): Likewise.
+ 	(vqmovunbq_s16): Likewise.
+ 	(vshlltq_n_u8): Likewise.
+ 	(vshllbq_n_u8): Likewise.
+ 	(vorrq_n_u16): Likewise.
+ 	(vbicq_n_u16): Likewise.
+ 	(vcmpneq_n_f16): Likewise.
+ 	(vcmpneq_f16): Likewise.
+ 	(vcmpltq_n_f16): Likewise.
+ 	(vcmpltq_f16): Likewise.
+ 	(vcmpleq_n_f16): Likewise.
+ 	(vcmpleq_f16): Likewise.
+ 	(vcmpgtq_n_f16): Likewise.
+ 	(vcmpgtq_f16): Likewise.
+ 	(vcmpgeq_n_f16): Likewise.
+ 	(vcmpgeq_f16): Likewise.
+ 	(vcmpeqq_n_f16): Likewise.
+ 	(vcmpeqq_f16): Likewise.
+ 	(vsubq_f16): Likewise.
+ 	(vqmovntq_s16): Likewise.
+ 	(vqmovnbq_s16): Likewise.
+ 	(vqdmulltq_s16): Likewise.
+ 	(vqdmulltq_n_s16): Likewise.
+ 	(vqdmullbq_s16): Likewise.
+ 	(vqdmullbq_n_s16): Likewise.
+ 	(vorrq_f16): Likewise.
+ 	(vornq_f16): Likewise.
+ 	(vmulq_n_f16): Likewise.
+ 	(vmulq_f16): Likewise.
+ 	(vmovntq_s16): Likewise.
+ 	(vmovnbq_s16): Likewise.
+ 	(vmlsldavxq_s16): Likewise.
+ 	(vmlsldavq_s16): Likewise.
+ 	(vmlaldavxq_s16): Likewise.
+ 	(vmlaldavq_s16): Likewise.
+ 	(vminnmvq_f16): Likewise.
+ 	(vminnmq_f16): Likewise.
+ 	(vminnmavq_f16): Likewise.
+ 	(vminnmaq_f16): Likewise.
+ 	(vmaxnmvq_f16): Likewise.
+ 	(vmaxnmq_f16): Likewise.
+ 	(vmaxnmavq_f16): Likewise.
+ 	(vmaxnmaq_f16): Likewise.
+ 	(veorq_f16): Likewise.
+ 	(vcmulq_rot90_f16): Likewise.
+ 	(vcmulq_rot270_f16): Likewise.
+ 	(vcmulq_rot180_f16): Likewise.
+ 	(vcmulq_f16): Likewise.
+ 	(vcaddq_rot90_f16): Likewise.
+ 	(vcaddq_rot270_f16): Likewise.
+ 	(vbicq_f16): Likewise.
+ 	(vandq_f16): Likewise.
+ 	(vaddq_n_f16): Likewise.
+ 	(vabdq_f16): Likewise.
+ 	(vshlltq_n_s8): Likewise.
+ 	(vshllbq_n_s8): Likewise.
+ 	(vorrq_n_s16): Likewise.
+ 	(vbicq_n_s16): Likewise.
+ 	(vqmovntq_u32): Likewise.
+ 	(vqmovnbq_u32): Likewise.
+ 	(vmulltq_poly_p16): Likewise.
+ 	(vmullbq_poly_p16): Likewise.
+ 	(vmovntq_u32): Likewise.
+ 	(vmovnbq_u32): Likewise.
+ 	(vmlaldavxq_u32): Likewise.
+ 	(vmlaldavq_u32): Likewise.
+ 	(vqmovuntq_s32): Likewise.
+ 	(vqmovunbq_s32): Likewise.
+ 	(vshlltq_n_u16): Likewise.
+ 	(vshllbq_n_u16): Likewise.
+ 	(vorrq_n_u32): Likewise.
+ 	(vbicq_n_u32): Likewise.
+ 	(vcmpneq_n_f32): Likewise.
+ 	(vcmpneq_f32): Likewise.
+ 	(vcmpltq_n_f32): Likewise.
+ 	(vcmpltq_f32): Likewise.
+ 	(vcmpleq_n_f32): Likewise.
+ 	(vcmpleq_f32): Likewise.
+ 	(vcmpgtq_n_f32): Likewise.
+ 	(vcmpgtq_f32): Likewise.
+ 	(vcmpgeq_n_f32): Likewise.
+ 	(vcmpgeq_f32): Likewise.
+ 	(vcmpeqq_n_f32): Likewise.
+ 	(vcmpeqq_f32): Likewise.
+ 	(vsubq_f32): Likewise.
+ 	(vqmovntq_s32): Likewise.
+ 	(vqmovnbq_s32): Likewise.
+ 	(vqdmulltq_s32): Likewise.
+ 	(vqdmulltq_n_s32): Likewise.
+ 	(vqdmullbq_s32): Likewise.
+ 	(vqdmullbq_n_s32): Likewise.
+ 	(vorrq_f32): Likewise.
+ 	(vornq_f32): Likewise.
+ 	(vmulq_n_f32): Likewise.
+ 	(vmulq_f32): Likewise.
+ 	(vmovntq_s32): Likewise.
+ 	(vmovnbq_s32): Likewise.
+ 	(vmlsldavxq_s32): Likewise.
+ 	(vmlsldavq_s32): Likewise.
+ 	(vmlaldavxq_s32): Likewise.
+ 	(vmlaldavq_s32): Likewise.
+ 	(vminnmvq_f32): Likewise.
+ 	(vminnmq_f32): Likewise.
+ 	(vminnmavq_f32): Likewise.
+ 	(vminnmaq_f32): Likewise.
+ 	(vmaxnmvq_f32): Likewise.
+ 	(vmaxnmq_f32): Likewise.
+ 	(vmaxnmavq_f32): Likewise.
+ 	(vmaxnmaq_f32): Likewise.
+ 	(veorq_f32): Likewise.
+ 	(vcmulq_rot90_f32): Likewise.
+ 	(vcmulq_rot270_f32): Likewise.
+ 	(vcmulq_rot180_f32): Likewise.
+ 	(vcmulq_f32): Likewise.
+ 	(vcaddq_rot90_f32): Likewise.
+ 	(vcaddq_rot270_f32): Likewise.
+ 	(vbicq_f32): Likewise.
+ 	(vandq_f32): Likewise.
+ 	(vaddq_n_f32): Likewise.
+ 	(vabdq_f32): Likewise.
+ 	(vshlltq_n_s16): Likewise.
+ 	(vshllbq_n_s16): Likewise.
+ 	(vorrq_n_s32): Likewise.
+ 	(vbicq_n_s32): Likewise.
+ 	(vrmlaldavhq_u32): Likewise.
+ 	(vctp8q_m): Likewise.
+ 	(vctp64q_m): Likewise.
+ 	(vctp32q_m): Likewise.
+ 	(vctp16q_m): Likewise.
+ 	(vaddlvaq_u32): Likewise.
+ 	(vrmlsldavhxq_s32): Likewise.
+ 	(vrmlsldavhq_s32): Likewise.
+ 	(vrmlaldavhxq_s32): Likewise.
+ 	(vrmlaldavhq_s32): Likewise.
+ 	(vcvttq_f16_f32): Likewise.
+ 	(vcvtbq_f16_f32): Likewise.
+ 	(vaddlvaq_s32): Likewise.
+ 	(__arm_vqmovntq_u16): Define intrinsic.
+ 	(__arm_vqmovnbq_u16): Likewise.
+ 	(__arm_vmulltq_poly_p8): Likewise.
+ 	(__arm_vmullbq_poly_p8): Likewise.
+ 	(__arm_vmovntq_u16): Likewise.
+ 	(__arm_vmovnbq_u16): Likewise.
+ 	(__arm_vmlaldavxq_u16): Likewise.
+ 	(__arm_vmlaldavq_u16): Likewise.
+ 	(__arm_vqmovuntq_s16): Likewise.
+ 	(__arm_vqmovunbq_s16): Likewise.
+ 	(__arm_vshlltq_n_u8): Likewise.
+ 	(__arm_vshllbq_n_u8): Likewise.
+ 	(__arm_vorrq_n_u16): Likewise.
+ 	(__arm_vbicq_n_u16): Likewise.
+ 	(__arm_vcmpneq_n_f16): Likewise.
+ 	(__arm_vcmpneq_f16): Likewise.
+ 	(__arm_vcmpltq_n_f16): Likewise.
+ 	(__arm_vcmpltq_f16): Likewise.
+ 	(__arm_vcmpleq_n_f16): Likewise.
+ 	(__arm_vcmpleq_f16): Likewise.
+ 	(__arm_vcmpgtq_n_f16): Likewise.
+ 	(__arm_vcmpgtq_f16): Likewise.
+ 	(__arm_vcmpgeq_n_f16): Likewise.
+ 	(__arm_vcmpgeq_f16): Likewise.
+ 	(__arm_vcmpeqq_n_f16): Likewise.
+ 	(__arm_vcmpeqq_f16): Likewise.
+ 	(__arm_vsubq_f16): Likewise.
+ 	(__arm_vqmovntq_s16): Likewise.
+ 	(__arm_vqmovnbq_s16): Likewise.
+ 	(__arm_vqdmulltq_s16): Likewise.
+ 	(__arm_vqdmulltq_n_s16): Likewise.
+ 	(__arm_vqdmullbq_s16): Likewise.
+ 	(__arm_vqdmullbq_n_s16): Likewise.
+ 	(__arm_vorrq_f16): Likewise.
+ 	(__arm_vornq_f16): Likewise.
+ 	(__arm_vmulq_n_f16): Likewise.
+ 	(__arm_vmulq_f16): Likewise.
+ 	(__arm_vmovntq_s16): Likewise.
+ 	(__arm_vmovnbq_s16): Likewise.
+ 	(__arm_vmlsldavxq_s16): Likewise.
+ 	(__arm_vmlsldavq_s16): Likewise.
+ 	(__arm_vmlaldavxq_s16): Likewise.
+ 	(__arm_vmlaldavq_s16): Likewise.
+ 	(__arm_vminnmvq_f16): Likewise.
+ 	(__arm_vminnmq_f16): Likewise.
+ 	(__arm_vminnmavq_f16): Likewise.
+ 	(__arm_vminnmaq_f16): Likewise.
+ 	(__arm_vmaxnmvq_f16): Likewise.
+ 	(__arm_vmaxnmq_f16): Likewise.
+ 	(__arm_vmaxnmavq_f16): Likewise.
+ 	(__arm_vmaxnmaq_f16): Likewise.
+ 	(__arm_veorq_f16): Likewise.
+ 	(__arm_vcmulq_rot90_f16): Likewise.
+ 	(__arm_vcmulq_rot270_f16): Likewise.
+ 	(__arm_vcmulq_rot180_f16): Likewise.
+ 	(__arm_vcmulq_f16): Likewise.
+ 	(__arm_vcaddq_rot90_f16): Likewise.
+ 	(__arm_vcaddq_rot270_f16): Likewise.
+ 	(__arm_vbicq_f16): Likewise.
+ 	(__arm_vandq_f16): Likewise.
+ 	(__arm_vaddq_n_f16): Likewise.
+ 	(__arm_vabdq_f16): Likewise.
+ 	(__arm_vshlltq_n_s8): Likewise.
+ 	(__arm_vshllbq_n_s8): Likewise.
+ 	(__arm_vorrq_n_s16): Likewise.
+ 	(__arm_vbicq_n_s16): Likewise.
+ 	(__arm_vqmovntq_u32): Likewise.
+ 	(__arm_vqmovnbq_u32): Likewise.
+ 	(__arm_vmulltq_poly_p16): Likewise.
+ 	(__arm_vmullbq_poly_p16): Likewise.
+ 	(__arm_vmovntq_u32): Likewise.
+ 	(__arm_vmovnbq_u32): Likewise.
+ 	(__arm_vmlaldavxq_u32): Likewise.
+ 	(__arm_vmlaldavq_u32): Likewise.
+ 	(__arm_vqmovuntq_s32): Likewise.
+ 	(__arm_vqmovunbq_s32): Likewise.
+ 	(__arm_vshlltq_n_u16): Likewise.
+ 	(__arm_vshllbq_n_u16): Likewise.
+ 	(__arm_vorrq_n_u32): Likewise.
+ 	(__arm_vbicq_n_u32): Likewise.
+ 	(__arm_vcmpneq_n_f32): Likewise.
+ 	(__arm_vcmpneq_f32): Likewise.
+ 	(__arm_vcmpltq_n_f32): Likewise.
+ 	(__arm_vcmpltq_f32): Likewise.
+ 	(__arm_vcmpleq_n_f32): Likewise.
+ 	(__arm_vcmpleq_f32): Likewise.
+ 	(__arm_vcmpgtq_n_f32): Likewise.
+ 	(__arm_vcmpgtq_f32): Likewise.
+ 	(__arm_vcmpgeq_n_f32): Likewise.
+ 	(__arm_vcmpgeq_f32): Likewise.
+ 	(__arm_vcmpeqq_n_f32): Likewise.
+ 	(__arm_vcmpeqq_f32): Likewise.
+ 	(__arm_vsubq_f32): Likewise.
+ 	(__arm_vqmovntq_s32): Likewise.
+ 	(__arm_vqmovnbq_s32): Likewise.
+ 	(__arm_vqdmulltq_s32): Likewise.
+ 	(__arm_vqdmulltq_n_s32): Likewise.
+ 	(__arm_vqdmullbq_s32): Likewise.
+ 	(__arm_vqdmullbq_n_s32): Likewise.
+ 	(__arm_vorrq_f32): Likewise.
+ 	(__arm_vornq_f32): Likewise.
+ 	(__arm_vmulq_n_f32): Likewise.
+ 	(__arm_vmulq_f32): Likewise.
+ 	(__arm_vmovntq_s32): Likewise.
+ 	(__arm_vmovnbq_s32): Likewise.
+ 	(__arm_vmlsldavxq_s32): Likewise.
+ 	(__arm_vmlsldavq_s32): Likewise.
+ 	(__arm_vmlaldavxq_s32): Likewise.
+ 	(__arm_vmlaldavq_s32): Likewise.
+ 	(__arm_vminnmvq_f32): Likewise.
+ 	(__arm_vminnmq_f32): Likewise.
+ 	(__arm_vminnmavq_f32): Likewise.
+ 	(__arm_vminnmaq_f32): Likewise.
+ 	(__arm_vmaxnmvq_f32): Likewise.
+ 	(__arm_vmaxnmq_f32): Likewise.
+ 	(__arm_vmaxnmavq_f32): Likewise.
+ 	(__arm_vmaxnmaq_f32): Likewise.
+ 	(__arm_veorq_f32): Likewise.
+ 	(__arm_vcmulq_rot90_f32): Likewise.
+ 	(__arm_vcmulq_rot270_f32): Likewise.
+ 	(__arm_vcmulq_rot180_f32): Likewise.
+ 	(__arm_vcmulq_f32): Likewise.
+ 	(__arm_vcaddq_rot90_f32): Likewise.
+ 	(__arm_vcaddq_rot270_f32): Likewise.
+ 	(__arm_vbicq_f32): Likewise.
+ 	(__arm_vandq_f32): Likewise.
+ 	(__arm_vaddq_n_f32): Likewise.
+ 	(__arm_vabdq_f32): Likewise.
+ 	(__arm_vshlltq_n_s16): Likewise.
+ 	(__arm_vshllbq_n_s16): Likewise.
+ 	(__arm_vorrq_n_s32): Likewise.
+ 	(__arm_vbicq_n_s32): Likewise.
+ 	(__arm_vrmlaldavhq_u32): Likewise.
+ 	(__arm_vctp8q_m): Likewise.
+ 	(__arm_vctp64q_m): Likewise.
+ 	(__arm_vctp32q_m): Likewise.
+ 	(__arm_vctp16q_m): Likewise.
+ 	(__arm_vaddlvaq_u32): Likewise.
+ 	(__arm_vrmlsldavhxq_s32): Likewise.
+ 	(__arm_vrmlsldavhq_s32): Likewise.
+ 	(__arm_vrmlaldavhxq_s32): Likewise.
+ 	(__arm_vrmlaldavhq_s32): Likewise.
+ 	(__arm_vcvttq_f16_f32): Likewise.
+ 	(__arm_vcvtbq_f16_f32): Likewise.
+ 	(__arm_vaddlvaq_s32): Likewise.
+ 	(vst4q): Define polymorphic variant.
+ 	(vrndxq): Likewise.
+ 	(vrndq): Likewise.
+ 	(vrndpq): Likewise.
+ 	(vrndnq): Likewise.
+ 	(vrndmq): Likewise.
+ 	(vrndaq): Likewise.
+ 	(vrev64q): Likewise.
+ 	(vnegq): Likewise.
+ 	(vdupq_n): Likewise.
+ 	(vabsq): Likewise.
+ 	(vrev32q): Likewise.
+ 	(vcvtbq_f32): Likewise.
+ 	(vcvttq_f32): Likewise.
+ 	(vcvtq): Likewise.
+ 	(vsubq_n): Likewise.
+ 	(vbrsrq_n): Likewise.
+ 	(vcvtq_n): Likewise.
+ 	(vsubq): Likewise.
+ 	(vorrq): Likewise.
+ 	(vabdq): Likewise.
+ 	(vaddq_n): Likewise.
+ 	(vandq): Likewise.
+ 	(vbicq): Likewise.
+ 	(vornq): Likewise.
+ 	(vmulq_n): Likewise.
+ 	(vmulq): Likewise.
+ 	(vcaddq_rot270): Likewise.
+ 	(vcmpeqq_n): Likewise.
+ 	(vcmpeqq): Likewise.
+ 	(vcaddq_rot90): Likewise.
+ 	(vcmpgeq_n): Likewise.
+ 	(vcmpgeq): Likewise.
+ 	(vcmpgtq_n): Likewise.
+ 	(vcmpgtq): Likewise.
+ 	(vcmpgtq): Likewise.
+ 	(vcmpleq_n): Likewise.
+ 	(vcmpleq_n): Likewise.
+ 	(vcmpleq): Likewise.
+ 	(vcmpleq): Likewise.
+ 	(vcmpltq_n): Likewise.
+ 	(vcmpltq_n): Likewise.
+ 	(vcmpltq): Likewise.
+ 	(vcmpltq): Likewise.
+ 	(vcmpneq_n): Likewise.
+ 	(vcmpneq_n): Likewise.
+ 	(vcmpneq): Likewise.
+ 	(vcmpneq): Likewise.
+ 	(vcmulq): Likewise.
+ 	(vcmulq): Likewise.
+ 	(vcmulq_rot180): Likewise.
+ 	(vcmulq_rot180): Likewise.
+ 	(vcmulq_rot270): Likewise.
+ 	(vcmulq_rot270): Likewise.
+ 	(vcmulq_rot90): Likewise.
+ 	(vcmulq_rot90): Likewise.
+ 	(veorq): Likewise.
+ 	(veorq): Likewise.
+ 	(vmaxnmaq): Likewise.
+ 	(vmaxnmaq): Likewise.
+ 	(vmaxnmavq): Likewise.
+ 	(vmaxnmavq): Likewise.
+ 	(vmaxnmq): Likewise.
+ 	(vmaxnmq): Likewise.
+ 	(vmaxnmvq): Likewise.
+ 	(vmaxnmvq): Likewise.
+ 	(vminnmaq): Likewise.
+ 	(vminnmaq): Likewise.
+ 	(vminnmavq): Likewise.
+ 	(vminnmavq): Likewise.
+ 	(vminnmq): Likewise.
+ 	(vminnmq): Likewise.
+ 	(vminnmvq): Likewise.
+ 	(vminnmvq): Likewise.
+ 	(vbicq_n): Likewise.
+ 	(vqmovntq): Likewise.
+ 	(vqmovntq): Likewise.
+ 	(vqmovnbq): Likewise.
+ 	(vqmovnbq): Likewise.
+ 	(vmulltq_poly): Likewise.
+ 	(vmulltq_poly): Likewise.
+ 	(vmullbq_poly): Likewise.
+ 	(vmullbq_poly): Likewise.
+ 	(vmovntq): Likewise.
+ 	(vmovntq): Likewise.
+ 	(vmovnbq): Likewise.
+ 	(vmovnbq): Likewise.
+ 	(vmlaldavxq): Likewise.
+ 	(vmlaldavxq): Likewise.
+ 	(vqmovuntq): Likewise.
+ 	(vqmovuntq): Likewise.
+ 	(vshlltq_n): Likewise.
+ 	(vshlltq_n): Likewise.
+ 	(vshllbq_n): Likewise.
+ 	(vshllbq_n): Likewise.
+ 	(vorrq_n): Likewise.
+ 	(vorrq_n): Likewise.
+ 	(vmlaldavq): Likewise.
+ 	(vmlaldavq): Likewise.
+ 	(vqmovunbq): Likewise.
+ 	(vqmovunbq): Likewise.
+ 	(vqdmulltq_n): Likewise.
+ 	(vqdmulltq_n): Likewise.
+ 	(vqdmulltq): Likewise.
+ 	(vqdmulltq): Likewise.
+ 	(vqdmullbq_n): Likewise.
+ 	(vqdmullbq_n): Likewise.
+ 	(vqdmullbq): Likewise.
+ 	(vqdmullbq): Likewise.
+ 	(vaddlvaq): Likewise.
+ 	(vaddlvaq): Likewise.
+ 	(vrmlaldavhq): Likewise.
+ 	(vrmlaldavhq): Likewise.
+ 	(vrmlaldavhxq): Likewise.
+ 	(vrmlaldavhxq): Likewise.
+ 	(vrmlsldavhq): Likewise.
+ 	(vrmlsldavhq): Likewise.
+ 	(vrmlsldavhxq): Likewise.
+ 	(vrmlsldavhxq): Likewise.
+ 	(vmlsldavxq): Likewise.
+ 	(vmlsldavxq): Likewise.
+ 	(vmlsldavq): Likewise.
+ 	(vmlsldavq): Likewise.
+ 	* config/arm/arm_mve_builtins.def (BINOP_NONE_NONE_IMM): Use it.
+ 	(BINOP_NONE_NONE_NONE): Likewise.
+ 	(BINOP_UNONE_NONE_NONE): Likewise.
+ 	(BINOP_UNONE_UNONE_IMM): Likewise.
+ 	(BINOP_UNONE_UNONE_NONE): Likewise.
+ 	(BINOP_UNONE_UNONE_UNONE): Likewise.
+ 	* config/arm/mve.md (mve_vabdq_f<mode>): Define RTL pattern.
+ 	(mve_vaddlvaq_<supf>v4si): Likewise.
+ 	(mve_vaddq_n_f<mode>): Likewise.
+ 	(mve_vandq_f<mode>): Likewise.
+ 	(mve_vbicq_f<mode>): Likewise.
+ 	(mve_vbicq_n_<supf><mode>): Likewise.
+ 	(mve_vcaddq_rot270_f<mode>): Likewise.
+ 	(mve_vcaddq_rot90_f<mode>): Likewise.
+ 	(mve_vcmpeqq_f<mode>): Likewise.
+ 	(mve_vcmpeqq_n_f<mode>): Likewise.
+ 	(mve_vcmpgeq_f<mode>): Likewise.
+ 	(mve_vcmpgeq_n_f<mode>): Likewise.
+ 	(mve_vcmpgtq_f<mode>): Likewise.
+ 	(mve_vcmpgtq_n_f<mode>): Likewise.
+ 	(mve_vcmpleq_f<mode>): Likewise.
+ 	(mve_vcmpleq_n_f<mode>): Likewise.
+ 	(mve_vcmpltq_f<mode>): Likewise.
+ 	(mve_vcmpltq_n_f<mode>): Likewise.
+ 	(mve_vcmpneq_f<mode>): Likewise.
+ 	(mve_vcmpneq_n_f<mode>): Likewise.
+ 	(mve_vcmulq_f<mode>): Likewise.
+ 	(mve_vcmulq_rot180_f<mode>): Likewise.
+ 	(mve_vcmulq_rot270_f<mode>): Likewise.
+ 	(mve_vcmulq_rot90_f<mode>): Likewise.
+ 	(mve_vctp<mode1>q_mhi): Likewise.
+ 	(mve_vcvtbq_f16_f32v8hf): Likewise.
+ 	(mve_vcvttq_f16_f32v8hf): Likewise.
+ 	(mve_veorq_f<mode>): Likewise.
+ 	(mve_vmaxnmaq_f<mode>): Likewise.
+ 	(mve_vmaxnmavq_f<mode>): Likewise.
+ 	(mve_vmaxnmq_f<mode>): Likewise.
+ 	(mve_vmaxnmvq_f<mode>): Likewise.
+ 	(mve_vminnmaq_f<mode>): Likewise.
+ 	(mve_vminnmavq_f<mode>): Likewise.
+ 	(mve_vminnmq_f<mode>): Likewise.
+ 	(mve_vminnmvq_f<mode>): Likewise.
+ 	(mve_vmlaldavq_<supf><mode>): Likewise.
+ 	(mve_vmlaldavxq_<supf><mode>): Likewise.
+ 	(mve_vmlsldavq_s<mode>): Likewise.
+ 	(mve_vmlsldavxq_s<mode>): Likewise.
+ 	(mve_vmovnbq_<supf><mode>): Likewise.
+ 	(mve_vmovntq_<supf><mode>): Likewise.
+ 	(mve_vmulq_f<mode>): Likewise.
+ 	(mve_vmulq_n_f<mode>): Likewise.
+ 	(mve_vornq_f<mode>): Likewise.
+ 	(mve_vorrq_f<mode>): Likewise.
+ 	(mve_vorrq_n_<supf><mode>): Likewise.
+ 	(mve_vqdmullbq_n_s<mode>): Likewise.
+ 	(mve_vqdmullbq_s<mode>): Likewise.
+ 	(mve_vqdmulltq_n_s<mode>): Likewise.
+ 	(mve_vqdmulltq_s<mode>): Likewise.
+ 	(mve_vqmovnbq_<supf><mode>): Likewise.
+ 	(mve_vqmovntq_<supf><mode>): Likewise.
+ 	(mve_vqmovunbq_s<mode>): Likewise.
+ 	(mve_vqmovuntq_s<mode>): Likewise.
+ 	(mve_vrmlaldavhxq_sv4si): Likewise.
+ 	(mve_vrmlsldavhq_sv4si): Likewise.
+ 	(mve_vrmlsldavhxq_sv4si): Likewise.
+ 	(mve_vshllbq_n_<supf><mode>): Likewise.
+ 	(mve_vshlltq_n_<supf><mode>): Likewise.
+ 	(mve_vsubq_f<mode>): Likewise.
+ 	(mve_vmulltq_poly_p<mode>): Likewise.
+ 	(mve_vmullbq_poly_p<mode>): Likewise.
+ 	(mve_vrmlaldavhq_<supf>v4si): Likewise.
+ 
+ 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm_mve.h (vsubq_u8): Define macro.
+ 	(vsubq_n_u8): Likewise.
+ 	(vrmulhq_u8): Likewise.
+ 	(vrhaddq_u8): Likewise.
+ 	(vqsubq_u8): Likewise.
+ 	(vqsubq_n_u8): Likewise.
+ 	(vqaddq_u8): Likewise.
+ 	(vqaddq_n_u8): Likewise.
+ 	(vorrq_u8): Likewise.
+ 	(vornq_u8): Likewise.
+ 	(vmulq_u8): Likewise.
+ 	(vmulq_n_u8): Likewise.
+ 	(vmulltq_int_u8): Likewise.
+ 	(vmullbq_int_u8): Likewise.
+ 	(vmulhq_u8): Likewise.
+ 	(vmladavq_u8): Likewise.
+ 	(vminvq_u8): Likewise.
+ 	(vminq_u8): Likewise.
+ 	(vmaxvq_u8): Likewise.
+ 	(vmaxq_u8): Likewise.
+ 	(vhsubq_u8): Likewise.
+ 	(vhsubq_n_u8): Likewise.
+ 	(vhaddq_u8): Likewise.
+ 	(vhaddq_n_u8): Likewise.
+ 	(veorq_u8): Likewise.
+ 	(vcmpneq_n_u8): Likewise.
+ 	(vcmphiq_u8): Likewise.
+ 	(vcmphiq_n_u8): Likewise.
+ 	(vcmpeqq_u8): Likewise.
+ 	(vcmpeqq_n_u8): Likewise.
+ 	(vcmpcsq_u8): Likewise.
+ 	(vcmpcsq_n_u8): Likewise.
+ 	(vcaddq_rot90_u8): Likewise.
+ 	(vcaddq_rot270_u8): Likewise.
+ 	(vbicq_u8): Likewise.
+ 	(vandq_u8): Likewise.
+ 	(vaddvq_p_u8): Likewise.
+ 	(vaddvaq_u8): Likewise.
+ 	(vaddq_n_u8): Likewise.
+ 	(vabdq_u8): Likewise.
+ 	(vshlq_r_u8): Likewise.
+ 	(vrshlq_u8): Likewise.
+ 	(vrshlq_n_u8): Likewise.
+ 	(vqshlq_u8): Likewise.
+ 	(vqshlq_r_u8): Likewise.
+ 	(vqrshlq_u8): Likewise.
+ 	(vqrshlq_n_u8): Likewise.
+ 	(vminavq_s8): Likewise.
+ 	(vminaq_s8): Likewise.
+ 	(vmaxavq_s8): Likewise.
+ 	(vmaxaq_s8): Likewise.
+ 	(vbrsrq_n_u8): Likewise.
+ 	(vshlq_n_u8): Likewise.
+ 	(vrshrq_n_u8): Likewise.
+ 	(vqshlq_n_u8): Likewise.
+ 	(vcmpneq_n_s8): Likewise.
+ 	(vcmpltq_s8): Likewise.
+ 	(vcmpltq_n_s8): Likewise.
+ 	(vcmpleq_s8): Likewise.
+ 	(vcmpleq_n_s8): Likewise.
+ 	(vcmpgtq_s8): Likewise.
+ 	(vcmpgtq_n_s8): Likewise.
+ 	(vcmpgeq_s8): Likewise.
+ 	(vcmpgeq_n_s8): Likewise.
+ 	(vcmpeqq_s8): Likewise.
+ 	(vcmpeqq_n_s8): Likewise.
+ 	(vqshluq_n_s8): Likewise.
+ 	(vaddvq_p_s8): Likewise.
+ 	(vsubq_s8): Likewise.
+ 	(vsubq_n_s8): Likewise.
+ 	(vshlq_r_s8): Likewise.
+ 	(vrshlq_s8): Likewise.
+ 	(vrshlq_n_s8): Likewise.
+ 	(vrmulhq_s8): Likewise.
+ 	(vrhaddq_s8): Likewise.
+ 	(vqsubq_s8): Likewise.
+ 	(vqsubq_n_s8): Likewise.
+ 	(vqshlq_s8): Likewise.
+ 	(vqshlq_r_s8): Likewise.
+ 	(vqrshlq_s8): Likewise.
+ 	(vqrshlq_n_s8): Likewise.
+ 	(vqrdmulhq_s8): Likewise.
+ 	(vqrdmulhq_n_s8): Likewise.
+ 	(vqdmulhq_s8): Likewise.
+ 	(vqdmulhq_n_s8): Likewise.
+ 	(vqaddq_s8): Likewise.
+ 	(vqaddq_n_s8): Likewise.
+ 	(vorrq_s8): Likewise.
+ 	(vornq_s8): Likewise.
+ 	(vmulq_s8): Likewise.
+ 	(vmulq_n_s8): Likewise.
+ 	(vmulltq_int_s8): Likewise.
+ 	(vmullbq_int_s8): Likewise.
+ 	(vmulhq_s8): Likewise.
+ 	(vmlsdavxq_s8): Likewise.
+ 	(vmlsdavq_s8): Likewise.
+ 	(vmladavxq_s8): Likewise.
+ 	(vmladavq_s8): Likewise.
+ 	(vminvq_s8): Likewise.
+ 	(vminq_s8): Likewise.
+ 	(vmaxvq_s8): Likewise.
+ 	(vmaxq_s8): Likewise.
+ 	(vhsubq_s8): Likewise.
+ 	(vhsubq_n_s8): Likewise.
+ 	(vhcaddq_rot90_s8): Likewise.
+ 	(vhcaddq_rot270_s8): Likewise.
+ 	(vhaddq_s8): Likewise.
+ 	(vhaddq_n_s8): Likewise.
+ 	(veorq_s8): Likewise.
+ 	(vcaddq_rot90_s8): Likewise.
+ 	(vcaddq_rot270_s8): Likewise.
+ 	(vbrsrq_n_s8): Likewise.
+ 	(vbicq_s8): Likewise.
+ 	(vandq_s8): Likewise.
+ 	(vaddvaq_s8): Likewise.
+ 	(vaddq_n_s8): Likewise.
+ 	(vabdq_s8): Likewise.
+ 	(vshlq_n_s8): Likewise.
+ 	(vrshrq_n_s8): Likewise.
+ 	(vqshlq_n_s8): Likewise.
+ 	(vsubq_u16): Likewise.
+ 	(vsubq_n_u16): Likewise.
+ 	(vrmulhq_u16): Likewise.
+ 	(vrhaddq_u16): Likewise.
+ 	(vqsubq_u16): Likewise.
+ 	(vqsubq_n_u16): Likewise.
+ 	(vqaddq_u16): Likewise.
+ 	(vqaddq_n_u16): Likewise.
+ 	(vorrq_u16): Likewise.
+ 	(vornq_u16): Likewise.
+ 	(vmulq_u16): Likewise.
+ 	(vmulq_n_u16): Likewise.
+ 	(vmulltq_int_u16): Likewise.
+ 	(vmullbq_int_u16): Likewise.
+ 	(vmulhq_u16): Likewise.
+ 	(vmladavq_u16): Likewise.
+ 	(vminvq_u16): Likewise.
+ 	(vminq_u16): Likewise.
+ 	(vmaxvq_u16): Likewise.
+ 	(vmaxq_u16): Likewise.
+ 	(vhsubq_u16): Likewise.
+ 	(vhsubq_n_u16): Likewise.
+ 	(vhaddq_u16): Likewise.
+ 	(vhaddq_n_u16): Likewise.
+ 	(veorq_u16): Likewise.
+ 	(vcmpneq_n_u16): Likewise.
+ 	(vcmphiq_u16): Likewise.
+ 	(vcmphiq_n_u16): Likewise.
+ 	(vcmpeqq_u16): Likewise.
+ 	(vcmpeqq_n_u16): Likewise.
+ 	(vcmpcsq_u16): Likewise.
+ 	(vcmpcsq_n_u16): Likewise.
+ 	(vcaddq_rot90_u16): Likewise.
+ 	(vcaddq_rot270_u16): Likewise.
+ 	(vbicq_u16): Likewise.
+ 	(vandq_u16): Likewise.
+ 	(vaddvq_p_u16): Likewise.
+ 	(vaddvaq_u16): Likewise.
+ 	(vaddq_n_u16): Likewise.
+ 	(vabdq_u16): Likewise.
+ 	(vshlq_r_u16): Likewise.
+ 	(vrshlq_u16): Likewise.
+ 	(vrshlq_n_u16): Likewise.
+ 	(vqshlq_u16): Likewise.
+ 	(vqshlq_r_u16): Likewise.
+ 	(vqrshlq_u16): Likewise.
+ 	(vqrshlq_n_u16): Likewise.
+ 	(vminavq_s16): Likewise.
+ 	(vminaq_s16): Likewise.
+ 	(vmaxavq_s16): Likewise.
+ 	(vmaxaq_s16): Likewise.
+ 	(vbrsrq_n_u16): Likewise.
+ 	(vshlq_n_u16): Likewise.
+ 	(vrshrq_n_u16): Likewise.
+ 	(vqshlq_n_u16): Likewise.
+ 	(vcmpneq_n_s16): Likewise.
+ 	(vcmpltq_s16): Likewise.
+ 	(vcmpltq_n_s16): Likewise.
+ 	(vcmpleq_s16): Likewise.
+ 	(vcmpleq_n_s16): Likewise.
+ 	(vcmpgtq_s16): Likewise.
+ 	(vcmpgtq_n_s16): Likewise.
+ 	(vcmpgeq_s16): Likewise.
+ 	(vcmpgeq_n_s16): Likewise.
+ 	(vcmpeqq_s16): Likewise.
+ 	(vcmpeqq_n_s16): Likewise.
+ 	(vqshluq_n_s16): Likewise.
+ 	(vaddvq_p_s16): Likewise.
+ 	(vsubq_s16): Likewise.
+ 	(vsubq_n_s16): Likewise.
+ 	(vshlq_r_s16): Likewise.
+ 	(vrshlq_s16): Likewise.
+ 	(vrshlq_n_s16): Likewise.
+ 	(vrmulhq_s16): Likewise.
+ 	(vrhaddq_s16): Likewise.
+ 	(vqsubq_s16): Likewise.
+ 	(vqsubq_n_s16): Likewise.
+ 	(vqshlq_s16): Likewise.
+ 	(vqshlq_r_s16): Likewise.
+ 	(vqrshlq_s16): Likewise.
+ 	(vqrshlq_n_s16): Likewise.
+ 	(vqrdmulhq_s16): Likewise.
+ 	(vqrdmulhq_n_s16): Likewise.
+ 	(vqdmulhq_s16): Likewise.
+ 	(vqdmulhq_n_s16): Likewise.
+ 	(vqaddq_s16): Likewise.
+ 	(vqaddq_n_s16): Likewise.
+ 	(vorrq_s16): Likewise.
+ 	(vornq_s16): Likewise.
+ 	(vmulq_s16): Likewise.
+ 	(vmulq_n_s16): Likewise.
+ 	(vmulltq_int_s16): Likewise.
+ 	(vmullbq_int_s16): Likewise.
+ 	(vmulhq_s16): Likewise.
+ 	(vmlsdavxq_s16): Likewise.
+ 	(vmlsdavq_s16): Likewise.
+ 	(vmladavxq_s16): Likewise.
+ 	(vmladavq_s16): Likewise.
+ 	(vminvq_s16): Likewise.
+ 	(vminq_s16): Likewise.
+ 	(vmaxvq_s16): Likewise.
+ 	(vmaxq_s16): Likewise.
+ 	(vhsubq_s16): Likewise.
+ 	(vhsubq_n_s16): Likewise.
+ 	(vhcaddq_rot90_s16): Likewise.
+ 	(vhcaddq_rot270_s16): Likewise.
+ 	(vhaddq_s16): Likewise.
+ 	(vhaddq_n_s16): Likewise.
+ 	(veorq_s16): Likewise.
+ 	(vcaddq_rot90_s16): Likewise.
+ 	(vcaddq_rot270_s16): Likewise.
+ 	(vbrsrq_n_s16): Likewise.
+ 	(vbicq_s16): Likewise.
+ 	(vandq_s16): Likewise.
+ 	(vaddvaq_s16): Likewise.
+ 	(vaddq_n_s16): Likewise.
+ 	(vabdq_s16): Likewise.
+ 	(vshlq_n_s16): Likewise.
+ 	(vrshrq_n_s16): Likewise.
+ 	(vqshlq_n_s16): Likewise.
+ 	(vsubq_u32): Likewise.
+ 	(vsubq_n_u32): Likewise.
+ 	(vrmulhq_u32): Likewise.
+ 	(vrhaddq_u32): Likewise.
+ 	(vqsubq_u32): Likewise.
+ 	(vqsubq_n_u32): Likewise.
+ 	(vqaddq_u32): Likewise.
+ 	(vqaddq_n_u32): Likewise.
+ 	(vorrq_u32): Likewise.
+ 	(vornq_u32): Likewise.
+ 	(vmulq_u32): Likewise.
+ 	(vmulq_n_u32): Likewise.
+ 	(vmulltq_int_u32): Likewise.
+ 	(vmullbq_int_u32): Likewise.
+ 	(vmulhq_u32): Likewise.
+ 	(vmladavq_u32): Likewise.
+ 	(vminvq_u32): Likewise.
+ 	(vminq_u32): Likewise.
+ 	(vmaxvq_u32): Likewise.
+ 	(vmaxq_u32): Likewise.
+ 	(vhsubq_u32): Likewise.
+ 	(vhsubq_n_u32): Likewise.
+ 	(vhaddq_u32): Likewise.
+ 	(vhaddq_n_u32): Likewise.
+ 	(veorq_u32): Likewise.
+ 	(vcmpneq_n_u32): Likewise.
+ 	(vcmphiq_u32): Likewise.
+ 	(vcmphiq_n_u32): Likewise.
+ 	(vcmpeqq_u32): Likewise.
+ 	(vcmpeqq_n_u32): Likewise.
+ 	(vcmpcsq_u32): Likewise.
+ 	(vcmpcsq_n_u32): Likewise.
+ 	(vcaddq_rot90_u32): Likewise.
+ 	(vcaddq_rot270_u32): Likewise.
+ 	(vbicq_u32): Likewise.
+ 	(vandq_u32): Likewise.
+ 	(vaddvq_p_u32): Likewise.
+ 	(vaddvaq_u32): Likewise.
+ 	(vaddq_n_u32): Likewise.
+ 	(vabdq_u32): Likewise.
+ 	(vshlq_r_u32): Likewise.
+ 	(vrshlq_u32): Likewise.
+ 	(vrshlq_n_u32): Likewise.
+ 	(vqshlq_u32): Likewise.
+ 	(vqshlq_r_u32): Likewise.
+ 	(vqrshlq_u32): Likewise.
+ 	(vqrshlq_n_u32): Likewise.
+ 	(vminavq_s32): Likewise.
+ 	(vminaq_s32): Likewise.
+ 	(vmaxavq_s32): Likewise.
+ 	(vmaxaq_s32): Likewise.
+ 	(vbrsrq_n_u32): Likewise.
+ 	(vshlq_n_u32): Likewise.
+ 	(vrshrq_n_u32): Likewise.
+ 	(vqshlq_n_u32): Likewise.
+ 	(vcmpneq_n_s32): Likewise.
+ 	(vcmpltq_s32): Likewise.
+ 	(vcmpltq_n_s32): Likewise.
+ 	(vcmpleq_s32): Likewise.
+ 	(vcmpleq_n_s32): Likewise.
+ 	(vcmpgtq_s32): Likewise.
+ 	(vcmpgtq_n_s32): Likewise.
+ 	(vcmpgeq_s32): Likewise.
+ 	(vcmpgeq_n_s32): Likewise.
+ 	(vcmpeqq_s32): Likewise.
+ 	(vcmpeqq_n_s32): Likewise.
+ 	(vqshluq_n_s32): Likewise.
+ 	(vaddvq_p_s32): Likewise.
+ 	(vsubq_s32): Likewise.
+ 	(vsubq_n_s32): Likewise.
+ 	(vshlq_r_s32): Likewise.
+ 	(vrshlq_s32): Likewise.
+ 	(vrshlq_n_s32): Likewise.
+ 	(vrmulhq_s32): Likewise.
+ 	(vrhaddq_s32): Likewise.
+ 	(vqsubq_s32): Likewise.
+ 	(vqsubq_n_s32): Likewise.
+ 	(vqshlq_s32): Likewise.
+ 	(vqshlq_r_s32): Likewise.
+ 	(vqrshlq_s32): Likewise.
+ 	(vqrshlq_n_s32): Likewise.
+ 	(vqrdmulhq_s32): Likewise.
+ 	(vqrdmulhq_n_s32): Likewise.
+ 	(vqdmulhq_s32): Likewise.
+ 	(vqdmulhq_n_s32): Likewise.
+ 	(vqaddq_s32): Likewise.
+ 	(vqaddq_n_s32): Likewise.
+ 	(vorrq_s32): Likewise.
+ 	(vornq_s32): Likewise.
+ 	(vmulq_s32): Likewise.
+ 	(vmulq_n_s32): Likewise.
+ 	(vmulltq_int_s32): Likewise.
+ 	(vmullbq_int_s32): Likewise.
+ 	(vmulhq_s32): Likewise.
+ 	(vmlsdavxq_s32): Likewise.
+ 	(vmlsdavq_s32): Likewise.
+ 	(vmladavxq_s32): Likewise.
+ 	(vmladavq_s32): Likewise.
+ 	(vminvq_s32): Likewise.
+ 	(vminq_s32): Likewise.
+ 	(vmaxvq_s32): Likewise.
+ 	(vmaxq_s32): Likewise.
+ 	(vhsubq_s32): Likewise.
+ 	(vhsubq_n_s32): Likewise.
+ 	(vhcaddq_rot90_s32): Likewise.
+ 	(vhcaddq_rot270_s32): Likewise.
+ 	(vhaddq_s32): Likewise.
+ 	(vhaddq_n_s32): Likewise.
+ 	(veorq_s32): Likewise.
+ 	(vcaddq_rot90_s32): Likewise.
+ 	(vcaddq_rot270_s32): Likewise.
+ 	(vbrsrq_n_s32): Likewise.
+ 	(vbicq_s32): Likewise.
+ 	(vandq_s32): Likewise.
+ 	(vaddvaq_s32): Likewise.
+ 	(vaddq_n_s32): Likewise.
+ 	(vabdq_s32): Likewise.
+ 	(vshlq_n_s32): Likewise.
+ 	(vrshrq_n_s32): Likewise.
+ 	(vqshlq_n_s32): Likewise.
+ 	(__arm_vsubq_u8): Define intrinsic.
+ 	(__arm_vsubq_n_u8): Likewise.
+ 	(__arm_vrmulhq_u8): Likewise.
+ 	(__arm_vrhaddq_u8): Likewise.
+ 	(__arm_vqsubq_u8): Likewise.
+ 	(__arm_vqsubq_n_u8): Likewise.
+ 	(__arm_vqaddq_u8): Likewise.
+ 	(__arm_vqaddq_n_u8): Likewise.
+ 	(__arm_vorrq_u8): Likewise.
+ 	(__arm_vornq_u8): Likewise.
+ 	(__arm_vmulq_u8): Likewise.
+ 	(__arm_vmulq_n_u8): Likewise.
+ 	(__arm_vmulltq_int_u8): Likewise.
+ 	(__arm_vmullbq_int_u8): Likewise.
+ 	(__arm_vmulhq_u8): Likewise.
+ 	(__arm_vmladavq_u8): Likewise.
+ 	(__arm_vminvq_u8): Likewise.
+ 	(__arm_vminq_u8): Likewise.
+ 	(__arm_vmaxvq_u8): Likewise.
+ 	(__arm_vmaxq_u8): Likewise.
+ 	(__arm_vhsubq_u8): Likewise.
+ 	(__arm_vhsubq_n_u8): Likewise.
+ 	(__arm_vhaddq_u8): Likewise.
+ 	(__arm_vhaddq_n_u8): Likewise.
+ 	(__arm_veorq_u8): Likewise.
+ 	(__arm_vcmpneq_n_u8): Likewise.
+ 	(__arm_vcmphiq_u8): Likewise.
+ 	(__arm_vcmphiq_n_u8): Likewise.
+ 	(__arm_vcmpeqq_u8): Likewise.
+ 	(__arm_vcmpeqq_n_u8): Likewise.
+ 	(__arm_vcmpcsq_u8): Likewise.
+ 	(__arm_vcmpcsq_n_u8): Likewise.
+ 	(__arm_vcaddq_rot90_u8): Likewise.
+ 	(__arm_vcaddq_rot270_u8): Likewise.
+ 	(__arm_vbicq_u8): Likewise.
+ 	(__arm_vandq_u8): Likewise.
+ 	(__arm_vaddvq_p_u8): Likewise.
+ 	(__arm_vaddvaq_u8): Likewise.
+ 	(__arm_vaddq_n_u8): Likewise.
+ 	(__arm_vabdq_u8): Likewise.
+ 	(__arm_vshlq_r_u8): Likewise.
+ 	(__arm_vrshlq_u8): Likewise.
+ 	(__arm_vrshlq_n_u8): Likewise.
+ 	(__arm_vqshlq_u8): Likewise.
+ 	(__arm_vqshlq_r_u8): Likewise.
+ 	(__arm_vqrshlq_u8): Likewise.
+ 	(__arm_vqrshlq_n_u8): Likewise.
+ 	(__arm_vminavq_s8): Likewise.
+ 	(__arm_vminaq_s8): Likewise.
+ 	(__arm_vmaxavq_s8): Likewise.
+ 	(__arm_vmaxaq_s8): Likewise.
+ 	(__arm_vbrsrq_n_u8): Likewise.
+ 	(__arm_vshlq_n_u8): Likewise.
+ 	(__arm_vrshrq_n_u8): Likewise.
+ 	(__arm_vqshlq_n_u8): Likewise.
+ 	(__arm_vcmpneq_n_s8): Likewise.
+ 	(__arm_vcmpltq_s8): Likewise.
+ 	(__arm_vcmpltq_n_s8): Likewise.
+ 	(__arm_vcmpleq_s8): Likewise.
+ 	(__arm_vcmpleq_n_s8): Likewise.
+ 	(__arm_vcmpgtq_s8): Likewise.
+ 	(__arm_vcmpgtq_n_s8): Likewise.
+ 	(__arm_vcmpgeq_s8): Likewise.
+ 	(__arm_vcmpgeq_n_s8): Likewise.
+ 	(__arm_vcmpeqq_s8): Likewise.
+ 	(__arm_vcmpeqq_n_s8): Likewise.
+ 	(__arm_vqshluq_n_s8): Likewise.
+ 	(__arm_vaddvq_p_s8): Likewise.
+ 	(__arm_vsubq_s8): Likewise.
+ 	(__arm_vsubq_n_s8): Likewise.
+ 	(__arm_vshlq_r_s8): Likewise.
+ 	(__arm_vrshlq_s8): Likewise.
+ 	(__arm_vrshlq_n_s8): Likewise.
+ 	(__arm_vrmulhq_s8): Likewise.
+ 	(__arm_vrhaddq_s8): Likewise.
+ 	(__arm_vqsubq_s8): Likewise.
+ 	(__arm_vqsubq_n_s8): Likewise.
+ 	(__arm_vqshlq_s8): Likewise.
+ 	(__arm_vqshlq_r_s8): Likewise.
+ 	(__arm_vqrshlq_s8): Likewise.
+ 	(__arm_vqrshlq_n_s8): Likewise.
+ 	(__arm_vqrdmulhq_s8): Likewise.
+ 	(__arm_vqrdmulhq_n_s8): Likewise.
+ 	(__arm_vqdmulhq_s8): Likewise.
+ 	(__arm_vqdmulhq_n_s8): Likewise.
+ 	(__arm_vqaddq_s8): Likewise.
+ 	(__arm_vqaddq_n_s8): Likewise.
+ 	(__arm_vorrq_s8): Likewise.
+ 	(__arm_vornq_s8): Likewise.
+ 	(__arm_vmulq_s8): Likewise.
+ 	(__arm_vmulq_n_s8): Likewise.
+ 	(__arm_vmulltq_int_s8): Likewise.
+ 	(__arm_vmullbq_int_s8): Likewise.
+ 	(__arm_vmulhq_s8): Likewise.
+ 	(__arm_vmlsdavxq_s8): Likewise.
+ 	(__arm_vmlsdavq_s8): Likewise.
+ 	(__arm_vmladavxq_s8): Likewise.
+ 	(__arm_vmladavq_s8): Likewise.
+ 	(__arm_vminvq_s8): Likewise.
+ 	(__arm_vminq_s8): Likewise.
+ 	(__arm_vmaxvq_s8): Likewise.
+ 	(__arm_vmaxq_s8): Likewise.
+ 	(__arm_vhsubq_s8): Likewise.
+ 	(__arm_vhsubq_n_s8): Likewise.
+ 	(__arm_vhcaddq_rot90_s8): Likewise.
+ 	(__arm_vhcaddq_rot270_s8): Likewise.
+ 	(__arm_vhaddq_s8): Likewise.
+ 	(__arm_vhaddq_n_s8): Likewise.
+ 	(__arm_veorq_s8): Likewise.
+ 	(__arm_vcaddq_rot90_s8): Likewise.
+ 	(__arm_vcaddq_rot270_s8): Likewise.
+ 	(__arm_vbrsrq_n_s8): Likewise.
+ 	(__arm_vbicq_s8): Likewise.
+ 	(__arm_vandq_s8): Likewise.
+ 	(__arm_vaddvaq_s8): Likewise.
+ 	(__arm_vaddq_n_s8): Likewise.
+ 	(__arm_vabdq_s8): Likewise.
+ 	(__arm_vshlq_n_s8): Likewise.
+ 	(__arm_vrshrq_n_s8): Likewise.
+ 	(__arm_vqshlq_n_s8): Likewise.
+ 	(__arm_vsubq_u16): Likewise.
+ 	(__arm_vsubq_n_u16): Likewise.
+ 	(__arm_vrmulhq_u16): Likewise.
+ 	(__arm_vrhaddq_u16): Likewise.
+ 	(__arm_vqsubq_u16): Likewise.
+ 	(__arm_vqsubq_n_u16): Likewise.
+ 	(__arm_vqaddq_u16): Likewise.
+ 	(__arm_vqaddq_n_u16): Likewise.
+ 	(__arm_vorrq_u16): Likewise.
+ 	(__arm_vornq_u16): Likewise.
+ 	(__arm_vmulq_u16): Likewise.
+ 	(__arm_vmulq_n_u16): Likewise.
+ 	(__arm_vmulltq_int_u16): Likewise.
+ 	(__arm_vmullbq_int_u16): Likewise.
+ 	(__arm_vmulhq_u16): Likewise.
+ 	(__arm_vmladavq_u16): Likewise.
+ 	(__arm_vminvq_u16): Likewise.
+ 	(__arm_vminq_u16): Likewise.
+ 	(__arm_vmaxvq_u16): Likewise.
+ 	(__arm_vmaxq_u16): Likewise.
+ 	(__arm_vhsubq_u16): Likewise.
+ 	(__arm_vhsubq_n_u16): Likewise.
+ 	(__arm_vhaddq_u16): Likewise.
+ 	(__arm_vhaddq_n_u16): Likewise.
+ 	(__arm_veorq_u16): Likewise.
+ 	(__arm_vcmpneq_n_u16): Likewise.
+ 	(__arm_vcmphiq_u16): Likewise.
+ 	(__arm_vcmphiq_n_u16): Likewise.
+ 	(__arm_vcmpeqq_u16): Likewise.
+ 	(__arm_vcmpeqq_n_u16): Likewise.
+ 	(__arm_vcmpcsq_u16): Likewise.
+ 	(__arm_vcmpcsq_n_u16): Likewise.
+ 	(__arm_vcaddq_rot90_u16): Likewise.
+ 	(__arm_vcaddq_rot270_u16): Likewise.
+ 	(__arm_vbicq_u16): Likewise.
+ 	(__arm_vandq_u16): Likewise.
+ 	(__arm_vaddvq_p_u16): Likewise.
+ 	(__arm_vaddvaq_u16): Likewise.
+ 	(__arm_vaddq_n_u16): Likewise.
+ 	(__arm_vabdq_u16): Likewise.
+ 	(__arm_vshlq_r_u16): Likewise.
+ 	(__arm_vrshlq_u16): Likewise.
+ 	(__arm_vrshlq_n_u16): Likewise.
+ 	(__arm_vqshlq_u16): Likewise.
+ 	(__arm_vqshlq_r_u16): Likewise.
+ 	(__arm_vqrshlq_u16): Likewise.
+ 	(__arm_vqrshlq_n_u16): Likewise.
+ 	(__arm_vminavq_s16): Likewise.
+ 	(__arm_vminaq_s16): Likewise.
+ 	(__arm_vmaxavq_s16): Likewise.
+ 	(__arm_vmaxaq_s16): Likewise.
+ 	(__arm_vbrsrq_n_u16): Likewise.
+ 	(__arm_vshlq_n_u16): Likewise.
+ 	(__arm_vrshrq_n_u16): Likewise.
+ 	(__arm_vqshlq_n_u16): Likewise.
+ 	(__arm_vcmpneq_n_s16): Likewise.
+ 	(__arm_vcmpltq_s16): Likewise.
+ 	(__arm_vcmpltq_n_s16): Likewise.
+ 	(__arm_vcmpleq_s16): Likewise.
+ 	(__arm_vcmpleq_n_s16): Likewise.
+ 	(__arm_vcmpgtq_s16): Likewise.
+ 	(__arm_vcmpgtq_n_s16): Likewise.
+ 	(__arm_vcmpgeq_s16): Likewise.
+ 	(__arm_vcmpgeq_n_s16): Likewise.
+ 	(__arm_vcmpeqq_s16): Likewise.
+ 	(__arm_vcmpeqq_n_s16): Likewise.
+ 	(__arm_vqshluq_n_s16): Likewise.
+ 	(__arm_vaddvq_p_s16): Likewise.
+ 	(__arm_vsubq_s16): Likewise.
+ 	(__arm_vsubq_n_s16): Likewise.
+ 	(__arm_vshlq_r_s16): Likewise.
+ 	(__arm_vrshlq_s16): Likewise.
+ 	(__arm_vrshlq_n_s16): Likewise.
+ 	(__arm_vrmulhq_s16): Likewise.
+ 	(__arm_vrhaddq_s16): Likewise.
+ 	(__arm_vqsubq_s16): Likewise.
+ 	(__arm_vqsubq_n_s16): Likewise.
+ 	(__arm_vqshlq_s16): Likewise.
+ 	(__arm_vqshlq_r_s16): Likewise.
+ 	(__arm_vqrshlq_s16): Likewise.
+ 	(__arm_vqrshlq_n_s16): Likewise.
+ 	(__arm_vqrdmulhq_s16): Likewise.
+ 	(__arm_vqrdmulhq_n_s16): Likewise.
+ 	(__arm_vqdmulhq_s16): Likewise.
+ 	(__arm_vqdmulhq_n_s16): Likewise.
+ 	(__arm_vqaddq_s16): Likewise.
+ 	(__arm_vqaddq_n_s16): Likewise.
+ 	(__arm_vorrq_s16): Likewise.
+ 	(__arm_vornq_s16): Likewise.
+ 	(__arm_vmulq_s16): Likewise.
+ 	(__arm_vmulq_n_s16): Likewise.
+ 	(__arm_vmulltq_int_s16): Likewise.
+ 	(__arm_vmullbq_int_s16): Likewise.
+ 	(__arm_vmulhq_s16): Likewise.
+ 	(__arm_vmlsdavxq_s16): Likewise.
+ 	(__arm_vmlsdavq_s16): Likewise.
+ 	(__arm_vmladavxq_s16): Likewise.
+ 	(__arm_vmladavq_s16): Likewise.
+ 	(__arm_vminvq_s16): Likewise.
+ 	(__arm_vminq_s16): Likewise.
+ 	(__arm_vmaxvq_s16): Likewise.
+ 	(__arm_vmaxq_s16): Likewise.
+ 	(__arm_vhsubq_s16): Likewise.
+ 	(__arm_vhsubq_n_s16): Likewise.
+ 	(__arm_vhcaddq_rot90_s16): Likewise.
+ 	(__arm_vhcaddq_rot270_s16): Likewise.
+ 	(__arm_vhaddq_s16): Likewise.
+ 	(__arm_vhaddq_n_s16): Likewise.
+ 	(__arm_veorq_s16): Likewise.
+ 	(__arm_vcaddq_rot90_s16): Likewise.
+ 	(__arm_vcaddq_rot270_s16): Likewise.
+ 	(__arm_vbrsrq_n_s16): Likewise.
+ 	(__arm_vbicq_s16): Likewise.
+ 	(__arm_vandq_s16): Likewise.
+ 	(__arm_vaddvaq_s16): Likewise.
+ 	(__arm_vaddq_n_s16): Likewise.
+ 	(__arm_vabdq_s16): Likewise.
+ 	(__arm_vshlq_n_s16): Likewise.
+ 	(__arm_vrshrq_n_s16): Likewise.
+ 	(__arm_vqshlq_n_s16): Likewise.
+ 	(__arm_vsubq_u32): Likewise.
+ 	(__arm_vsubq_n_u32): Likewise.
+ 	(__arm_vrmulhq_u32): Likewise.
+ 	(__arm_vrhaddq_u32): Likewise.
+ 	(__arm_vqsubq_u32): Likewise.
+ 	(__arm_vqsubq_n_u32): Likewise.
+ 	(__arm_vqaddq_u32): Likewise.
+ 	(__arm_vqaddq_n_u32): Likewise.
+ 	(__arm_vorrq_u32): Likewise.
+ 	(__arm_vornq_u32): Likewise.
+ 	(__arm_vmulq_u32): Likewise.
+ 	(__arm_vmulq_n_u32): Likewise.
+ 	(__arm_vmulltq_int_u32): Likewise.
+ 	(__arm_vmullbq_int_u32): Likewise.
+ 	(__arm_vmulhq_u32): Likewise.
+ 	(__arm_vmladavq_u32): Likewise.
+ 	(__arm_vminvq_u32): Likewise.
+ 	(__arm_vminq_u32): Likewise.
+ 	(__arm_vmaxvq_u32): Likewise.
+ 	(__arm_vmaxq_u32): Likewise.
+ 	(__arm_vhsubq_u32): Likewise.
+ 	(__arm_vhsubq_n_u32): Likewise.
+ 	(__arm_vhaddq_u32): Likewise.
+ 	(__arm_vhaddq_n_u32): Likewise.
+ 	(__arm_veorq_u32): Likewise.
+ 	(__arm_vcmpneq_n_u32): Likewise.
+ 	(__arm_vcmphiq_u32): Likewise.
+ 	(__arm_vcmphiq_n_u32): Likewise.
+ 	(__arm_vcmpeqq_u32): Likewise.
+ 	(__arm_vcmpeqq_n_u32): Likewise.
+ 	(__arm_vcmpcsq_u32): Likewise.
+ 	(__arm_vcmpcsq_n_u32): Likewise.
+ 	(__arm_vcaddq_rot90_u32): Likewise.
+ 	(__arm_vcaddq_rot270_u32): Likewise.
+ 	(__arm_vbicq_u32): Likewise.
+ 	(__arm_vandq_u32): Likewise.
+ 	(__arm_vaddvq_p_u32): Likewise.
+ 	(__arm_vaddvaq_u32): Likewise.
+ 	(__arm_vaddq_n_u32): Likewise.
+ 	(__arm_vabdq_u32): Likewise.
+ 	(__arm_vshlq_r_u32): Likewise.
+ 	(__arm_vrshlq_u32): Likewise.
+ 	(__arm_vrshlq_n_u32): Likewise.
+ 	(__arm_vqshlq_u32): Likewise.
+ 	(__arm_vqshlq_r_u32): Likewise.
+ 	(__arm_vqrshlq_u32): Likewise.
+ 	(__arm_vqrshlq_n_u32): Likewise.
+ 	(__arm_vminavq_s32): Likewise.
+ 	(__arm_vminaq_s32): Likewise.
+ 	(__arm_vmaxavq_s32): Likewise.
+ 	(__arm_vmaxaq_s32): Likewise.
+ 	(__arm_vbrsrq_n_u32): Likewise.
+ 	(__arm_vshlq_n_u32): Likewise.
+ 	(__arm_vrshrq_n_u32): Likewise.
+ 	(__arm_vqshlq_n_u32): Likewise.
+ 	(__arm_vcmpneq_n_s32): Likewise.
+ 	(__arm_vcmpltq_s32): Likewise.
+ 	(__arm_vcmpltq_n_s32): Likewise.
+ 	(__arm_vcmpleq_s32): Likewise.
+ 	(__arm_vcmpleq_n_s32): Likewise.
+ 	(__arm_vcmpgtq_s32): Likewise.
+ 	(__arm_vcmpgtq_n_s32): Likewise.
+ 	(__arm_vcmpgeq_s32): Likewise.
+ 	(__arm_vcmpgeq_n_s32): Likewise.
+ 	(__arm_vcmpeqq_s32): Likewise.
+ 	(__arm_vcmpeqq_n_s32): Likewise.
+ 	(__arm_vqshluq_n_s32): Likewise.
+ 	(__arm_vaddvq_p_s32): Likewise.
+ 	(__arm_vsubq_s32): Likewise.
+ 	(__arm_vsubq_n_s32): Likewise.
+ 	(__arm_vshlq_r_s32): Likewise.
+ 	(__arm_vrshlq_s32): Likewise.
+ 	(__arm_vrshlq_n_s32): Likewise.
+ 	(__arm_vrmulhq_s32): Likewise.
+ 	(__arm_vrhaddq_s32): Likewise.
+ 	(__arm_vqsubq_s32): Likewise.
+ 	(__arm_vqsubq_n_s32): Likewise.
+ 	(__arm_vqshlq_s32): Likewise.
+ 	(__arm_vqshlq_r_s32): Likewise.
+ 	(__arm_vqrshlq_s32): Likewise.
+ 	(__arm_vqrshlq_n_s32): Likewise.
+ 	(__arm_vqrdmulhq_s32): Likewise.
+ 	(__arm_vqrdmulhq_n_s32): Likewise.
+ 	(__arm_vqdmulhq_s32): Likewise.
+ 	(__arm_vqdmulhq_n_s32): Likewise.
+ 	(__arm_vqaddq_s32): Likewise.
+ 	(__arm_vqaddq_n_s32): Likewise.
+ 	(__arm_vorrq_s32): Likewise.
+ 	(__arm_vornq_s32): Likewise.
+ 	(__arm_vmulq_s32): Likewise.
+ 	(__arm_vmulq_n_s32): Likewise.
+ 	(__arm_vmulltq_int_s32): Likewise.
+ 	(__arm_vmullbq_int_s32): Likewise.
+ 	(__arm_vmulhq_s32): Likewise.
+ 	(__arm_vmlsdavxq_s32): Likewise.
+ 	(__arm_vmlsdavq_s32): Likewise.
+ 	(__arm_vmladavxq_s32): Likewise.
+ 	(__arm_vmladavq_s32): Likewise.
+ 	(__arm_vminvq_s32): Likewise.
+ 	(__arm_vminq_s32): Likewise.
+ 	(__arm_vmaxvq_s32): Likewise.
+ 	(__arm_vmaxq_s32): Likewise.
+ 	(__arm_vhsubq_s32): Likewise.
+ 	(__arm_vhsubq_n_s32): Likewise.
+ 	(__arm_vhcaddq_rot90_s32): Likewise.
+ 	(__arm_vhcaddq_rot270_s32): Likewise.
+ 	(__arm_vhaddq_s32): Likewise.
+ 	(__arm_vhaddq_n_s32): Likewise.
+ 	(__arm_veorq_s32): Likewise.
+ 	(__arm_vcaddq_rot90_s32): Likewise.
+ 	(__arm_vcaddq_rot270_s32): Likewise.
+ 	(__arm_vbrsrq_n_s32): Likewise.
+ 	(__arm_vbicq_s32): Likewise.
+ 	(__arm_vandq_s32): Likewise.
+ 	(__arm_vaddvaq_s32): Likewise.
+ 	(__arm_vaddq_n_s32): Likewise.
+ 	(__arm_vabdq_s32): Likewise.
+ 	(__arm_vshlq_n_s32): Likewise.
+ 	(__arm_vrshrq_n_s32): Likewise.
+ 	(__arm_vqshlq_n_s32): Likewise.
+ 	(vsubq): Define polymorphic variant.
+ 	(vsubq_n): Likewise.
+ 	(vshlq_r): Likewise.
+ 	(vrshlq_n): Likewise.
+ 	(vrshlq): Likewise.
+ 	(vrmulhq): Likewise.
+ 	(vrhaddq): Likewise.
+ 	(vqsubq_n): Likewise.
+ 	(vqsubq): Likewise.
+ 	(vqshlq): Likewise.
+ 	(vqshlq_r): Likewise.
+ 	(vqshluq): Likewise.
+ 	(vrshrq_n): Likewise.
+ 	(vshlq_n): Likewise.
+ 	(vqshluq_n): Likewise.
+ 	(vqshlq_n): Likewise.
+ 	(vqrshlq_n): Likewise.
+ 	(vqrshlq): Likewise.
+ 	(vqrdmulhq_n): Likewise.
+ 	(vqrdmulhq): Likewise.
+ 	(vqdmulhq_n): Likewise.
+ 	(vqdmulhq): Likewise.
+ 	(vqaddq_n): Likewise.
+ 	(vqaddq): Likewise.
+ 	(vorrq_n): Likewise.
+ 	(vorrq): Likewise.
+ 	(vornq): Likewise.
+ 	(vmulq_n): Likewise.
+ 	(vmulq): Likewise.
+ 	(vmulltq_int): Likewise.
+ 	(vmullbq_int): Likewise.
+ 	(vmulhq): Likewise.
+ 	(vminq): Likewise.
+ 	(vminaq): Likewise.
+ 	(vmaxq): Likewise.
+ 	(vmaxaq): Likewise.
+ 	(vhsubq_n): Likewise.
+ 	(vhsubq): Likewise.
+ 	(vhcaddq_rot90): Likewise.
+ 	(vhcaddq_rot270): Likewise.
+ 	(vhaddq_n): Likewise.
+ 	(vhaddq): Likewise.
+ 	(veorq): Likewise.
+ 	(vcaddq_rot90): Likewise.
+ 	(vcaddq_rot270): Likewise.
+ 	(vbrsrq_n): Likewise.
+ 	(vbicq_n): Likewise.
+ 	(vbicq): Likewise.
+ 	(vaddq): Likewise.
+ 	(vaddq_n): Likewise.
+ 	(vandq): Likewise.
+ 	(vabdq): Likewise.
+ 	* config/arm/arm_mve_builtins.def (BINOP_NONE_NONE_IMM): Use it.
+ 	(BINOP_NONE_NONE_NONE): Likewise.
+ 	(BINOP_NONE_NONE_UNONE): Likewise.
+ 	(BINOP_UNONE_NONE_IMM): Likewise.
+ 	(BINOP_UNONE_NONE_NONE): Likewise.
+ 	(BINOP_UNONE_UNONE_IMM): Likewise.
+ 	(BINOP_UNONE_UNONE_NONE): Likewise.
+ 	(BINOP_UNONE_UNONE_UNONE): Likewise.
+ 	* config/arm/constraints.md (Ra): Define constraint to check constant is
+ 	in the range of 0 to 7.
+ 	(Rg): Define constriant to check the constant is one among 1, 2, 4
+ 	and 8.
+ 	* config/arm/mve.md (mve_vabdq_<supf>): Define RTL pattern.
+ 	(mve_vaddq_n_<supf>): Likewise.
+ 	(mve_vaddvaq_<supf>): Likewise.
+ 	(mve_vaddvq_p_<supf>): Likewise.
+ 	(mve_vandq_<supf>): Likewise.
+ 	(mve_vbicq_<supf>): Likewise.
+ 	(mve_vbrsrq_n_<supf>): Likewise.
+ 	(mve_vcaddq_rot270_<supf>): Likewise.
+ 	(mve_vcaddq_rot90_<supf>): Likewise.
+ 	(mve_vcmpcsq_n_u): Likewise.
+ 	(mve_vcmpcsq_u): Likewise.
+ 	(mve_vcmpeqq_n_<supf>): Likewise.
+ 	(mve_vcmpeqq_<supf>): Likewise.
+ 	(mve_vcmpgeq_n_s): Likewise.
+ 	(mve_vcmpgeq_s): Likewise.
+ 	(mve_vcmpgtq_n_s): Likewise.
+ 	(mve_vcmpgtq_s): Likewise.
+ 	(mve_vcmphiq_n_u): Likewise.
+ 	(mve_vcmphiq_u): Likewise.
+ 	(mve_vcmpleq_n_s): Likewise.
+ 	(mve_vcmpleq_s): Likewise.
+ 	(mve_vcmpltq_n_s): Likewise.
+ 	(mve_vcmpltq_s): Likewise.
+ 	(mve_vcmpneq_n_<supf>): Likewise.
+ 	(mve_vddupq_n_u): Likewise.
+ 	(mve_veorq_<supf>): Likewise.
+ 	(mve_vhaddq_n_<supf>): Likewise.
+ 	(mve_vhaddq_<supf>): Likewise.
+ 	(mve_vhcaddq_rot270_s): Likewise.
+ 	(mve_vhcaddq_rot90_s): Likewise.
+ 	(mve_vhsubq_n_<supf>): Likewise.
+ 	(mve_vhsubq_<supf>): Likewise.
+ 	(mve_vidupq_n_u): Likewise.
+ 	(mve_vmaxaq_s): Likewise.
+ 	(mve_vmaxavq_s): Likewise.
+ 	(mve_vmaxq_<supf>): Likewise.
+ 	(mve_vmaxvq_<supf>): Likewise.
+ 	(mve_vminaq_s): Likewise.
+ 	(mve_vminavq_s): Likewise.
+ 	(mve_vminq_<supf>): Likewise.
+ 	(mve_vminvq_<supf>): Likewise.
+ 	(mve_vmladavq_<supf>): Likewise.
+ 	(mve_vmladavxq_s): Likewise.
+ 	(mve_vmlsdavq_s): Likewise.
+ 	(mve_vmlsdavxq_s): Likewise.
+ 	(mve_vmulhq_<supf>): Likewise.
+ 	(mve_vmullbq_int_<supf>): Likewise.
+ 	(mve_vmulltq_int_<supf>): Likewise.
+ 	(mve_vmulq_n_<supf>): Likewise.
+ 	(mve_vmulq_<supf>): Likewise.
+ 	(mve_vornq_<supf>): Likewise.
+ 	(mve_vorrq_<supf>): Likewise.
+ 	(mve_vqaddq_n_<supf>): Likewise.
+ 	(mve_vqaddq_<supf>): Likewise.
+ 	(mve_vqdmulhq_n_s): Likewise.
+ 	(mve_vqdmulhq_s): Likewise.
+ 	(mve_vqrdmulhq_n_s): Likewise.
+ 	(mve_vqrdmulhq_s): Likewise.
+ 	(mve_vqrshlq_n_<supf>): Likewise.
+ 	(mve_vqrshlq_<supf>): Likewise.
+ 	(mve_vqshlq_n_<supf>): Likewise.
+ 	(mve_vqshlq_r_<supf>): Likewise.
+ 	(mve_vqshlq_<supf>): Likewise.
+ 	(mve_vqshluq_n_s): Likewise.
+ 	(mve_vqsubq_n_<supf>): Likewise.
+ 	(mve_vqsubq_<supf>): Likewise.
+ 	(mve_vrhaddq_<supf>): Likewise.
+ 	(mve_vrmulhq_<supf>): Likewise.
+ 	(mve_vrshlq_n_<supf>): Likewise.
+ 	(mve_vrshlq_<supf>): Likewise.
+ 	(mve_vrshrq_n_<supf>): Likewise.
+ 	(mve_vshlq_n_<supf>): Likewise.
+ 	(mve_vshlq_r_<supf>): Likewise.
+ 	(mve_vsubq_n_<supf>): Likewise.
+ 	(mve_vsubq_<supf>): Likewise.
+ 	* config/arm/predicates.md (mve_imm_7): Define predicate to check
+ 	the matching constraint Ra.
+ 	(mve_imm_selective_upto_8): Define predicate to check the matching
+ 	constraint Rg.
+ 
+ 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (BINOP_NONE_NONE_UNONE_QUALIFIERS): Define
+ 	qualifier for binary operands.
+ 	(BINOP_UNONE_NONE_NONE_QUALIFIERS): Likewise.
+ 	(BINOP_UNONE_UNONE_NONE_QUALIFIERS): Likewise.
+ 	* config/arm/arm_mve.h (vaddlvq_p_s32): Define macro.
+ 	(vaddlvq_p_u32): Likewise.
+ 	(vcmpneq_s8): Likewise.
+ 	(vcmpneq_s16): Likewise.
+ 	(vcmpneq_s32): Likewise.
+ 	(vcmpneq_u8): Likewise.
+ 	(vcmpneq_u16): Likewise.
+ 	(vcmpneq_u32): Likewise.
+ 	(vshlq_s8): Likewise.
+ 	(vshlq_s16): Likewise.
+ 	(vshlq_s32): Likewise.
+ 	(vshlq_u8): Likewise.
+ 	(vshlq_u16): Likewise.
+ 	(vshlq_u32): Likewise.
+ 	(__arm_vaddlvq_p_s32): Define intrinsic.
+ 	(__arm_vaddlvq_p_u32): Likewise.
+ 	(__arm_vcmpneq_s8): Likewise.
+ 	(__arm_vcmpneq_s16): Likewise.
+ 	(__arm_vcmpneq_s32): Likewise.
+ 	(__arm_vcmpneq_u8): Likewise.
+ 	(__arm_vcmpneq_u16): Likewise.
+ 	(__arm_vcmpneq_u32): Likewise.
+ 	(__arm_vshlq_s8): Likewise.
+ 	(__arm_vshlq_s16): Likewise.
+ 	(__arm_vshlq_s32): Likewise.
+ 	(__arm_vshlq_u8): Likewise.
+ 	(__arm_vshlq_u16): Likewise.
+ 	(__arm_vshlq_u32): Likewise.
+ 	(vaddlvq_p): Define polymorphic variant.
+ 	(vcmpneq): Likewise.
+ 	(vshlq): Likewise.
+ 	* config/arm/arm_mve_builtins.def (BINOP_NONE_NONE_UNONE_QUALIFIERS):
+ 	Use it.
+ 	(BINOP_UNONE_NONE_NONE_QUALIFIERS): Likewise.
+ 	(BINOP_UNONE_UNONE_NONE_QUALIFIERS): Likewise.
+ 	* config/arm/mve.md (mve_vaddlvq_p_<supf>v4si): Define RTL pattern.
+ 	(mve_vcmpneq_<supf><mode>): Likewise.
+ 	(mve_vshlq_<supf><mode>): Likewise.
+ 
+ 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (BINOP_UNONE_UNONE_IMM_QUALIFIERS): Define
+ 	qualifier for binary operands.
+ 	(BINOP_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
+ 	(BINOP_UNONE_NONE_IMM_QUALIFIERS): Likewise.
+ 	* config/arm/arm_mve.h (vcvtq_n_s16_f16): Define macro.
+ 	(vcvtq_n_s32_f32): Likewise.
+ 	(vcvtq_n_u16_f16): Likewise.
+ 	(vcvtq_n_u32_f32): Likewise.
+ 	(vcreateq_u8): Likewise.
+ 	(vcreateq_u16): Likewise.
+ 	(vcreateq_u32): Likewise.
+ 	(vcreateq_u64): Likewise.
+ 	(vcreateq_s8): Likewise.
+ 	(vcreateq_s16): Likewise.
+ 	(vcreateq_s32): Likewise.
+ 	(vcreateq_s64): Likewise.
+ 	(vshrq_n_s8): Likewise.
+ 	(vshrq_n_s16): Likewise.
+ 	(vshrq_n_s32): Likewise.
+ 	(vshrq_n_u8): Likewise.
+ 	(vshrq_n_u16): Likewise.
+ 	(vshrq_n_u32): Likewise.
+ 	(__arm_vcreateq_u8): Define intrinsic.
+ 	(__arm_vcreateq_u16): Likewise.
+ 	(__arm_vcreateq_u32): Likewise.
+ 	(__arm_vcreateq_u64): Likewise.
+ 	(__arm_vcreateq_s8): Likewise.
+ 	(__arm_vcreateq_s16): Likewise.
+ 	(__arm_vcreateq_s32): Likewise.
+ 	(__arm_vcreateq_s64): Likewise.
+ 	(__arm_vshrq_n_s8): Likewise.
+ 	(__arm_vshrq_n_s16): Likewise.
+ 	(__arm_vshrq_n_s32): Likewise.
+ 	(__arm_vshrq_n_u8): Likewise.
+ 	(__arm_vshrq_n_u16): Likewise.
+ 	(__arm_vshrq_n_u32): Likewise.
+ 	(__arm_vcvtq_n_s16_f16): Likewise.
+ 	(__arm_vcvtq_n_s32_f32): Likewise.
+ 	(__arm_vcvtq_n_u16_f16): Likewise.
+ 	(__arm_vcvtq_n_u32_f32): Likewise.
+ 	(vshrq_n): Define polymorphic variant.
+ 	* config/arm/arm_mve_builtins.def (BINOP_UNONE_UNONE_IMM_QUALIFIERS):
+ 	Use it.
+ 	(BINOP_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
+ 	(BINOP_UNONE_NONE_IMM_QUALIFIERS): Likewise.
+ 	* config/arm/constraints.md (Rb): Define constraint to check constant is
+ 	in the range of 1 to 8.
+ 	(Rf): Define constraint to check constant is in the range of 1 to 32.
+ 	* config/arm/mve.md (mve_vcreateq_<supf><mode>): Define RTL pattern.
+ 	(mve_vshrq_n_<supf><mode>): Likewise.
+ 	(mve_vcvtq_n_from_f_<supf><mode>): Likewise.
+ 	* config/arm/predicates.md (mve_imm_8): Define predicate to check
+ 	the matching constraint Rb.
+ 	(mve_imm_32): Define predicate to check the matching constraint Rf.
+ 
+ 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (BINOP_NONE_NONE_NONE_QUALIFIERS): Define
+ 	qualifier for binary operands.
+ 	(BINOP_NONE_NONE_IMM_QUALIFIERS): Likewise.
+ 	(BINOP_NONE_UNONE_IMM_QUALIFIERS): Likewise.
+ 	(BINOP_NONE_UNONE_UNONE_QUALIFIERS): Likewise.
+ 	* config/arm/arm_mve.h (vsubq_n_f16): Define macro.
+ 	(vsubq_n_f32): Likewise.
+ 	(vbrsrq_n_f16): Likewise.
+ 	(vbrsrq_n_f32): Likewise.
+ 	(vcvtq_n_f16_s16): Likewise.
+ 	(vcvtq_n_f32_s32): Likewise.
+ 	(vcvtq_n_f16_u16): Likewise.
+ 	(vcvtq_n_f32_u32): Likewise.
+ 	(vcreateq_f16): Likewise.
+ 	(vcreateq_f32): Likewise.
+ 	(__arm_vsubq_n_f16): Define intrinsic.
+ 	(__arm_vsubq_n_f32): Likewise.
+ 	(__arm_vbrsrq_n_f16): Likewise.
+ 	(__arm_vbrsrq_n_f32): Likewise.
+ 	(__arm_vcvtq_n_f16_s16): Likewise.
+ 	(__arm_vcvtq_n_f32_s32): Likewise.
+ 	(__arm_vcvtq_n_f16_u16): Likewise.
+ 	(__arm_vcvtq_n_f32_u32): Likewise.
+ 	(__arm_vcreateq_f16): Likewise.
+ 	(__arm_vcreateq_f32): Likewise.
+ 	(vsubq): Define polymorphic variant.
+ 	(vbrsrq): Likewise.
+ 	(vcvtq_n): Likewise.
+ 	* config/arm/arm_mve_builtins.def (BINOP_NONE_NONE_NONE_QUALIFIERS): Use
+ 	it.
+ 	(BINOP_NONE_NONE_IMM_QUALIFIERS): Likewise.
+ 	(BINOP_NONE_UNONE_IMM_QUALIFIERS): Likewise.
+ 	(BINOP_NONE_UNONE_UNONE_QUALIFIERS): Likewise.
+ 	* config/arm/constraints.md (Rd): Define constraint to check constant is
+ 	in the range of 1 to 16.
+ 	* config/arm/mve.md (mve_vsubq_n_f<mode>): Define RTL pattern.
+ 	mve_vbrsrq_n_f<mode>: Likewise.
+ 	mve_vcvtq_n_to_f_<supf><mode>: Likewise.
+ 	mve_vcreateq_f<mode>: Likewise.
+ 	* config/arm/predicates.md (mve_imm_16): Define predicate to check
+ 	the matching constraint Rd.
+ 
+ 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (hi_UP): Define mode.
+ 	* config/arm/arm.h (IS_VPR_REGNUM): Move.
+ 	* config/arm/arm.md (VPR_REGNUM): Define before APSRQ_REGNUM.
+ 	(APSRQ_REGNUM): Modify.
+ 	(APSRGE_REGNUM): Modify.
+ 	* config/arm/arm_mve.h (vctp16q): Define macro.
+ 	(vctp32q): Likewise.
+ 	(vctp64q): Likewise.
+ 	(vctp8q): Likewise.
+ 	(vpnot): Likewise.
+ 	(__arm_vctp16q): Define intrinsic.
+ 	(__arm_vctp32q): Likewise.
+ 	(__arm_vctp64q): Likewise.
+ 	(__arm_vctp8q): Likewise.
+ 	(__arm_vpnot): Likewise.
+ 	* config/arm/arm_mve_builtins.def (UNOP_UNONE_UNONE): Use builtin
+ 	qualifier.
+ 	* config/arm/mve.md (mve_vctp<mode1>qhi): Define RTL pattern.
+ 	(mve_vpnothi): Likewise.
+ 
+ 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm.h (enum reg_class): Define new class EVEN_REGS.
+ 	* config/arm/arm_mve.h (vdupq_n_s8): Define macro.
+ 	(vdupq_n_s16): Likewise.
+ 	(vdupq_n_s32): Likewise.
+ 	(vabsq_s8): Likewise.
+ 	(vabsq_s16): Likewise.
+ 	(vabsq_s32): Likewise.
+ 	(vclsq_s8): Likewise.
+ 	(vclsq_s16): Likewise.
+ 	(vclsq_s32): Likewise.
+ 	(vclzq_s8): Likewise.
+ 	(vclzq_s16): Likewise.
+ 	(vclzq_s32): Likewise.
+ 	(vnegq_s8): Likewise.
+ 	(vnegq_s16): Likewise.
+ 	(vnegq_s32): Likewise.
+ 	(vaddlvq_s32): Likewise.
+ 	(vaddvq_s8): Likewise.
+ 	(vaddvq_s16): Likewise.
+ 	(vaddvq_s32): Likewise.
+ 	(vmovlbq_s8): Likewise.
+ 	(vmovlbq_s16): Likewise.
+ 	(vmovltq_s8): Likewise.
+ 	(vmovltq_s16): Likewise.
+ 	(vmvnq_s8): Likewise.
+ 	(vmvnq_s16): Likewise.
+ 	(vmvnq_s32): Likewise.
+ 	(vrev16q_s8): Likewise.
+ 	(vrev32q_s8): Likewise.
+ 	(vrev32q_s16): Likewise.
+ 	(vqabsq_s8): Likewise.
+ 	(vqabsq_s16): Likewise.
+ 	(vqabsq_s32): Likewise.
+ 	(vqnegq_s8): Likewise.
+ 	(vqnegq_s16): Likewise.
+ 	(vqnegq_s32): Likewise.
+ 	(vcvtaq_s16_f16): Likewise.
+ 	(vcvtaq_s32_f32): Likewise.
+ 	(vcvtnq_s16_f16): Likewise.
+ 	(vcvtnq_s32_f32): Likewise.
+ 	(vcvtpq_s16_f16): Likewise.
+ 	(vcvtpq_s32_f32): Likewise.
+ 	(vcvtmq_s16_f16): Likewise.
+ 	(vcvtmq_s32_f32): Likewise.
+ 	(vmvnq_u8): Likewise.
+ 	(vmvnq_u16): Likewise.
+ 	(vmvnq_u32): Likewise.
+ 	(vdupq_n_u8): Likewise.
+ 	(vdupq_n_u16): Likewise.
+ 	(vdupq_n_u32): Likewise.
+ 	(vclzq_u8): Likewise.
+ 	(vclzq_u16): Likewise.
+ 	(vclzq_u32): Likewise.
+ 	(vaddvq_u8): Likewise.
+ 	(vaddvq_u16): Likewise.
+ 	(vaddvq_u32): Likewise.
+ 	(vrev32q_u8): Likewise.
+ 	(vrev32q_u16): Likewise.
+ 	(vmovltq_u8): Likewise.
+ 	(vmovltq_u16): Likewise.
+ 	(vmovlbq_u8): Likewise.
+ 	(vmovlbq_u16): Likewise.
+ 	(vrev16q_u8): Likewise.
+ 	(vaddlvq_u32): Likewise.
+ 	(vcvtpq_u16_f16): Likewise.
+ 	(vcvtpq_u32_f32): Likewise.
+ 	(vcvtnq_u16_f16): Likewise.
+ 	(vcvtmq_u16_f16): Likewise.
+ 	(vcvtmq_u32_f32): Likewise.
+ 	(vcvtaq_u16_f16): Likewise.
+ 	(vcvtaq_u32_f32): Likewise.
+ 	(__arm_vdupq_n_s8): Define intrinsic.
+ 	(__arm_vdupq_n_s16): Likewise.
+ 	(__arm_vdupq_n_s32): Likewise.
+ 	(__arm_vabsq_s8): Likewise.
+ 	(__arm_vabsq_s16): Likewise.
+ 	(__arm_vabsq_s32): Likewise.
+ 	(__arm_vclsq_s8): Likewise.
+ 	(__arm_vclsq_s16): Likewise.
+ 	(__arm_vclsq_s32): Likewise.
+ 	(__arm_vclzq_s8): Likewise.
+ 	(__arm_vclzq_s16): Likewise.
+ 	(__arm_vclzq_s32): Likewise.
+ 	(__arm_vnegq_s8): Likewise.
+ 	(__arm_vnegq_s16): Likewise.
+ 	(__arm_vnegq_s32): Likewise.
+ 	(__arm_vaddlvq_s32): Likewise.
+ 	(__arm_vaddvq_s8): Likewise.
+ 	(__arm_vaddvq_s16): Likewise.
+ 	(__arm_vaddvq_s32): Likewise.
+ 	(__arm_vmovlbq_s8): Likewise.
+ 	(__arm_vmovlbq_s16): Likewise.
+ 	(__arm_vmovltq_s8): Likewise.
+ 	(__arm_vmovltq_s16): Likewise.
+ 	(__arm_vmvnq_s8): Likewise.
+ 	(__arm_vmvnq_s16): Likewise.
+ 	(__arm_vmvnq_s32): Likewise.
+ 	(__arm_vrev16q_s8): Likewise.
+ 	(__arm_vrev32q_s8): Likewise.
+ 	(__arm_vrev32q_s16): Likewise.
+ 	(__arm_vqabsq_s8): Likewise.
+ 	(__arm_vqabsq_s16): Likewise.
+ 	(__arm_vqabsq_s32): Likewise.
+ 	(__arm_vqnegq_s8): Likewise.
+ 	(__arm_vqnegq_s16): Likewise.
+ 	(__arm_vqnegq_s32): Likewise.
+ 	(__arm_vmvnq_u8): Likewise.
+ 	(__arm_vmvnq_u16): Likewise.
+ 	(__arm_vmvnq_u32): Likewise.
+ 	(__arm_vdupq_n_u8): Likewise.
+ 	(__arm_vdupq_n_u16): Likewise.
+ 	(__arm_vdupq_n_u32): Likewise.
+ 	(__arm_vclzq_u8): Likewise.
+ 	(__arm_vclzq_u16): Likewise.
+ 	(__arm_vclzq_u32): Likewise.
+ 	(__arm_vaddvq_u8): Likewise.
+ 	(__arm_vaddvq_u16): Likewise.
+ 	(__arm_vaddvq_u32): Likewise.
+ 	(__arm_vrev32q_u8): Likewise.
+ 	(__arm_vrev32q_u16): Likewise.
+ 	(__arm_vmovltq_u8): Likewise.
+ 	(__arm_vmovltq_u16): Likewise.
+ 	(__arm_vmovlbq_u8): Likewise.
+ 	(__arm_vmovlbq_u16): Likewise.
+ 	(__arm_vrev16q_u8): Likewise.
+ 	(__arm_vaddlvq_u32): Likewise.
+ 	(__arm_vcvtpq_u16_f16): Likewise.
+ 	(__arm_vcvtpq_u32_f32): Likewise.
+ 	(__arm_vcvtnq_u16_f16): Likewise.
+ 	(__arm_vcvtmq_u16_f16): Likewise.
+ 	(__arm_vcvtmq_u32_f32): Likewise.
+ 	(__arm_vcvtaq_u16_f16): Likewise.
+ 	(__arm_vcvtaq_u32_f32): Likewise.
+ 	(__arm_vcvtaq_s16_f16): Likewise.
+ 	(__arm_vcvtaq_s32_f32): Likewise.
+ 	(__arm_vcvtnq_s16_f16): Likewise.
+ 	(__arm_vcvtnq_s32_f32): Likewise.
+ 	(__arm_vcvtpq_s16_f16): Likewise.
+ 	(__arm_vcvtpq_s32_f32): Likewise.
+ 	(__arm_vcvtmq_s16_f16): Likewise.
+ 	(__arm_vcvtmq_s32_f32): Likewise.
+ 	(vdupq_n): Define polymorphic variant.
+ 	(vabsq): Likewise.
+ 	(vclsq): Likewise.
+ 	(vclzq): Likewise.
+ 	(vnegq): Likewise.
+ 	(vaddlvq): Likewise.
+ 	(vaddvq): Likewise.
+ 	(vmovlbq): Likewise.
+ 	(vmovltq): Likewise.
+ 	(vmvnq): Likewise.
+ 	(vrev16q): Likewise.
+ 	(vrev32q): Likewise.
+ 	(vqabsq): Likewise.
+ 	(vqnegq): Likewise.
+ 	* config/arm/arm_mve_builtins.def (UNOP_SNONE_SNONE): Use it.
+ 	(UNOP_SNONE_NONE): Likewise.
+ 	(UNOP_UNONE_UNONE): Likewise.
+ 	(UNOP_UNONE_NONE): Likewise.
+ 	* config/arm/constraints.md (e): Define new constriant to allow only
+ 	even registers.
+ 	* config/arm/mve.md (mve_vqabsq_s<mode>): Define RTL pattern.
+ 	(mve_vnegq_s<mode>): Likewise.
+ 	(mve_vmvnq_<supf><mode>): Likewise.
+ 	(mve_vdupq_n_<supf><mode>): Likewise.
+ 	(mve_vclzq_<supf><mode>): Likewise.
+ 	(mve_vclsq_s<mode>): Likewise.
+ 	(mve_vaddvq_<supf><mode>): Likewise.
+ 	(mve_vabsq_s<mode>): Likewise.
+ 	(mve_vrev32q_<supf><mode>): Likewise.
+ 	(mve_vmovltq_<supf><mode>): Likewise.
+ 	(mve_vmovlbq_<supf><mode>): Likewise.
+ 	(mve_vcvtpq_<supf><mode>): Likewise.
+ 	(mve_vcvtnq_<supf><mode>): Likewise.
+ 	(mve_vcvtmq_<supf><mode>): Likewise.
+ 	(mve_vcvtaq_<supf><mode>): Likewise.
+ 	(mve_vrev16q_<supf>v16qi): Likewise.
+ 	(mve_vaddlvq_<supf>v4si): Likewise.
+ 
+ 2020-03-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* lra-spills.c (remove_pseudos): Fix up duplicated word issue in
+ 	a dump message.
+ 	* tree-sra.c (create_access_replacement): Fix up duplicated word issue
+ 	in a comment.
+ 	* read-rtl-function.c (find_param_by_name,
+ 	function_reader::parse_enum_value, function_reader::get_insn_by_uid):
+ 	Likewise.
+ 	* spellcheck.c (get_edit_distance_cutoff): Likewise.
+ 	* tree-data-ref.c (create_ifn_alias_checks): Likewise.
+ 	* tree.def (SWITCH_EXPR): Likewise.
+ 	* selftest.c (assert_str_contains): Likewise.
+ 	* ipa-param-manipulation.h (class ipa_param_body_adjustments):
+ 	Likewise.
+ 	* tree-ssa-math-opts.c (convert_expand_mult_copysign): Likewise.
+ 	* tree-ssa-loop-split.c (find_vdef_in_loop): Likewise.
+ 	* langhooks.h (struct lang_hooks_for_decls): Likewise.
+ 	* ipa-prop.h (struct ipa_param_descriptor): Likewise.
+ 	* tree-ssa-strlen.c (handle_builtin_string_cmp, handle_store):
+ 	Likewise.
+ 	* tree-ssa-dom.c (simplify_stmt_for_jump_threading): Likewise.
+ 	* tree-ssa-reassoc.c (reassociate_bb): Likewise.
+ 	* tree.c (component_ref_size): Likewise.
+ 	* hsa-common.c (hsa_init_compilation_unit_data): Likewise.
+ 	* gimple-ssa-sprintf.c (get_string_length, format_string,
+ 	format_directive): Likewise.
+ 	* omp-grid.c (grid_process_kernel_body_copy): Likewise.
+ 	* input.c (string_concat_db::get_string_concatenation,
+ 	test_lexer_string_locations_ucn4): Likewise.
+ 	* cfgexpand.c (pass_expand::execute): Likewise.
+ 	* gimple-ssa-warn-restrict.c (builtin_memref::offset_out_of_bounds,
+ 	maybe_diag_overlap): Likewise.
+ 	* rtl.c (RTX_CODE_HWINT_P_1): Likewise.
+ 	* shrink-wrap.c (spread_components): Likewise.
+ 	* tree-ssa-dse.c (initialize_ao_ref_for_dse, valid_ao_ref_for_dse):
+ 	Likewise.
+ 	* tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
+ 	Likewise.
+ 	* dwarf2out.c (dwarf2out_early_finish): Likewise.
+ 	* gimple-ssa-store-merging.c: Likewise.
+ 	* ira-costs.c (record_operand_costs): Likewise.
+ 	* tree-vect-loop.c (vectorizable_reduction): Likewise.
+ 	* target.def (dispatch): Likewise.
+ 	(validate_dims, gen_ccmp_first): Fix up duplicated word issue
+ 	in documentation text.
+ 	* doc/tm.texi: Regenerated.
+ 	* config/i386/x86-tune.def (X86_TUNE_PARTIAL_FLAG_REG_STALL): Fix up
+ 	duplicated word issue in a comment.
+ 	* config/i386/i386.c (ix86_test_loading_unspec): Likewise.
+ 	* config/i386/i386-features.c (remove_partial_avx_dependency):
+ 	Likewise.
+ 	* config/msp430/msp430.c (msp430_select_section): Likewise.
+ 	* config/gcn/gcn-run.c (load_image): Likewise.
+ 	* config/aarch64/aarch64-sve.md (sve_ld1r<mode>): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_gen_adjusted_ldpstp): Likewise.
+ 	* config/aarch64/falkor-tag-collision-avoidance.c
+ 	(single_dest_per_chain): Likewise.
+ 	* config/nvptx/nvptx.c (nvptx_record_fndecl): Likewise.
+ 	* config/fr30/fr30.c (fr30_arg_partial_bytes): Likewise.
+ 	* config/rs6000/rs6000-string.c (expand_cmp_vec_sequence): Likewise.
+ 	* config/rs6000/rs6000-p8swap.c (replace_swapped_load_constant):
+ 	Likewise.
+ 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Likewise.
+ 	* config/rs6000/rs6000-logue.c
+ 	(rs6000_emit_probe_stack_range_stack_clash): Likewise.
+ 	* config/nds32/nds32-md-auxiliary.c (nds32_split_ashiftdi3): Likewise.
+ 	Fix various other issues in the comment.
+ 
+ 2020-03-17  Mihail Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	* config/arm/t-rmprofile: create new multilib for
+ 	armv8.1-m.main+mve hard float and reuse v8-m.main ones for
+ 	v8.1-m.main+mve.
+ 
+ 2020-03-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/94015
+ 	* tree-ssa-strlen.c (count_nonzero_bytes): Split portions of the
+ 	function where EXP is address of the bytes being stored rather than
+ 	the bytes themselves into count_nonzero_bytes_addr.  Punt on zero
+ 	sized MEM_REF.  Use VAR_P macro and handle CONST_DECL like VAR_DECLs.
+ 	Use ctor_for_folding instead of looking at DECL_INITIAL.  Punt before
+ 	calling native_encode_expr if host or target doesn't have 8-bit
+ 	chars.  Formatting fixes.
+ 	(count_nonzero_bytes_addr): New function.
+ 
+ 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (UNOP_SNONE_SNONE_QUALIFIERS): Define.
+ 	(UNOP_SNONE_NONE_QUALIFIERS): Likewise.
+ 	(UNOP_SNONE_IMM_QUALIFIERS): Likewise.
+ 	(UNOP_UNONE_NONE_QUALIFIERS): Likewise.
+ 	(UNOP_UNONE_UNONE_QUALIFIERS): Likewise.
+ 	(UNOP_UNONE_IMM_QUALIFIERS): Likewise.
+ 	* config/arm/arm_mve.h (vmvnq_n_s16): Define macro.
+ 	(vmvnq_n_s32): Likewise.
+ 	(vrev64q_s8): Likewise.
+ 	(vrev64q_s16): Likewise.
+ 	(vrev64q_s32): Likewise.
+ 	(vcvtq_s16_f16): Likewise.
+ 	(vcvtq_s32_f32): Likewise.
+ 	(vrev64q_u8): Likewise.
+ 	(vrev64q_u16): Likewise.
+ 	(vrev64q_u32): Likewise.
+ 	(vmvnq_n_u16): Likewise.
+ 	(vmvnq_n_u32): Likewise.
+ 	(vcvtq_u16_f16): Likewise.
+ 	(vcvtq_u32_f32): Likewise.
+ 	(__arm_vmvnq_n_s16): Define intrinsic.
+ 	(__arm_vmvnq_n_s32): Likewise.
+ 	(__arm_vrev64q_s8): Likewise.
+ 	(__arm_vrev64q_s16): Likewise.
+ 	(__arm_vrev64q_s32): Likewise.
+ 	(__arm_vrev64q_u8): Likewise.
+ 	(__arm_vrev64q_u16): Likewise.
+ 	(__arm_vrev64q_u32): Likewise.
+ 	(__arm_vmvnq_n_u16): Likewise.
+ 	(__arm_vmvnq_n_u32): Likewise.
+ 	(__arm_vcvtq_s16_f16): Likewise.
+ 	(__arm_vcvtq_s32_f32): Likewise.
+ 	(__arm_vcvtq_u16_f16): Likewise.
+ 	(__arm_vcvtq_u32_f32): Likewise.
+ 	(vrev64q): Define polymorphic variant.
+ 	* config/arm/arm_mve_builtins.def (UNOP_SNONE_SNONE): Use it.
+ 	(UNOP_SNONE_NONE): Likewise.
+ 	(UNOP_SNONE_IMM): Likewise.
+ 	(UNOP_UNONE_UNONE): Likewise.
+ 	(UNOP_UNONE_NONE): Likewise.
+ 	(UNOP_UNONE_IMM): Likewise.
+ 	* config/arm/mve.md (mve_vrev64q_<supf><mode>): Define RTL pattern.
+ 	(mve_vcvtq_from_f_<supf><mode>): Likewise.
+ 	(mve_vmvnq_n_<supf><mode>): Likewise.
+ 
+ 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (UNOP_NONE_NONE_QUALIFIERS): Define macro.
+ 	(UNOP_NONE_SNONE_QUALIFIERS): Likewise.
+ 	(UNOP_NONE_UNONE_QUALIFIERS): Likewise.
+ 	* config/arm/arm_mve.h (vrndxq_f16): Define macro.
+ 	(vrndxq_f32): Likewise.
+ 	(vrndq_f16) Likewise.
+ 	(vrndq_f32): Likewise.
+ 	(vrndpq_f16): Likewise.
+ 	(vrndpq_f32): Likewise.
+ 	(vrndnq_f16): Likewise.
+ 	(vrndnq_f32): Likewise.
+ 	(vrndmq_f16): Likewise.
+ 	(vrndmq_f32): Likewise. 
+ 	(vrndaq_f16): Likewise.
+ 	(vrndaq_f32): Likewise.
+ 	(vrev64q_f16): Likewise.
+ 	(vrev64q_f32): Likewise.
+ 	(vnegq_f16): Likewise.
+ 	(vnegq_f32): Likewise.
+ 	(vdupq_n_f16): Likewise.
+ 	(vdupq_n_f32): Likewise.
+ 	(vabsq_f16): Likewise.
+ 	(vabsq_f32): Likewise.
+ 	(vrev32q_f16): Likewise.
+ 	(vcvttq_f32_f16): Likewise.
+ 	(vcvtbq_f32_f16): Likewise.
+ 	(vcvtq_f16_s16): Likewise.
+ 	(vcvtq_f32_s32): Likewise.
+ 	(vcvtq_f16_u16): Likewise.
+ 	(vcvtq_f32_u32): Likewise.
+ 	(__arm_vrndxq_f16): Define intrinsic.
+ 	(__arm_vrndxq_f32): Likewise.
+ 	(__arm_vrndq_f16): Likewise.
+ 	(__arm_vrndq_f32): Likewise.
+ 	(__arm_vrndpq_f16): Likewise.
+ 	(__arm_vrndpq_f32): Likewise.
+ 	(__arm_vrndnq_f16): Likewise.
+ 	(__arm_vrndnq_f32): Likewise.
+ 	(__arm_vrndmq_f16): Likewise.
+ 	(__arm_vrndmq_f32): Likewise.
+ 	(__arm_vrndaq_f16): Likewise.
+ 	(__arm_vrndaq_f32): Likewise.
+ 	(__arm_vrev64q_f16): Likewise.
+ 	(__arm_vrev64q_f32): Likewise.
+ 	(__arm_vnegq_f16): Likewise.
+ 	(__arm_vnegq_f32): Likewise.
+ 	(__arm_vdupq_n_f16): Likewise.
+ 	(__arm_vdupq_n_f32): Likewise.
+ 	(__arm_vabsq_f16): Likewise.
+ 	(__arm_vabsq_f32): Likewise.
+ 	(__arm_vrev32q_f16): Likewise.
+ 	(__arm_vcvttq_f32_f16): Likewise.
+ 	(__arm_vcvtbq_f32_f16): Likewise.
+ 	(__arm_vcvtq_f16_s16): Likewise.
+ 	(__arm_vcvtq_f32_s32): Likewise.
+ 	(__arm_vcvtq_f16_u16): Likewise.
+ 	(__arm_vcvtq_f32_u32): Likewise.
+ 	(vrndxq): Define polymorphic variants.
+ 	(vrndq): Likewise.
+ 	(vrndpq): Likewise.
+ 	(vrndnq): Likewise.
+ 	(vrndmq): Likewise.
+ 	(vrndaq): Likewise.
+ 	(vrev64q): Likewise.
+ 	(vnegq): Likewise.
+ 	(vabsq): Likewise.
+ 	(vrev32q): Likewise.
+ 	(vcvtbq_f32): Likewise.
+ 	(vcvttq_f32): Likewise.
+ 	(vcvtq): Likewise.
+ 	* config/arm/arm_mve_builtins.def (VAR2): Define.
+ 	(VAR1): Define.
+ 	* config/arm/mve.md (mve_vrndxq_f<mode>): Add RTL pattern.
+ 	(mve_vrndq_f<mode>): Likewise.
+ 	(mve_vrndpq_f<mode>): Likewise.
+ 	(mve_vrndnq_f<mode>): Likewise.
+ 	(mve_vrndmq_f<mode>): Likewise.
+ 	(mve_vrndaq_f<mode>): Likewise.
+ 	(mve_vrev64q_f<mode>): Likewise.
+ 	(mve_vnegq_f<mode>): Likewise.
+ 	(mve_vdupq_n_f<mode>): Likewise.
+ 	(mve_vabsq_f<mode>): Likewise.
+ 	(mve_vrev32q_fv8hf): Likewise.
+ 	(mve_vcvttq_f32_f16v4sf): Likewise.
+ 	(mve_vcvtbq_f32_f16v4sf): Likewise.
+ 	(mve_vcvtq_to_f_<supf><mode>): Likewise.
+ 
+ 2020-03-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (CF): Define mve_builtin_data.
+ 	(VAR1): Define.
+ 	(ARM_BUILTIN_MVE_PATTERN_START): Define.
+ 	(arm_init_mve_builtins): Define function.
+ 	(arm_init_builtins): Add TARGET_HAVE_MVE check.
+ 	(arm_expand_builtin_1): Check the range of fcode.
+ 	(arm_expand_mve_builtin): Define function to expand MVE builtins.
+ 	(arm_expand_builtin): Check the range of fcode.
+ 	* config/arm/arm_mve.h (__ARM_FEATURE_MVE): Define MVE floating point
+ 	types.
+ 	(__ARM_MVE_PRESERVE_USER_NAMESPACE): Define to protect user namespace.
+ 	(vst4q_s8): Define macro.
+ 	(vst4q_s16): Likewise.
+ 	(vst4q_s32): Likewise.
+ 	(vst4q_u8): Likewise.
+ 	(vst4q_u16): Likewise.
+ 	(vst4q_u32): Likewise.
+ 	(vst4q_f16): Likewise.
+ 	(vst4q_f32): Likewise.
+ 	(__arm_vst4q_s8): Define inline builtin.
+ 	(__arm_vst4q_s16): Likewise.
+ 	(__arm_vst4q_s32): Likewise.
+ 	(__arm_vst4q_u8): Likewise.
+ 	(__arm_vst4q_u16): Likewise.
+ 	(__arm_vst4q_u32): Likewise.
+ 	(__arm_vst4q_f16): Likewise.
+ 	(__arm_vst4q_f32): Likewise.
+ 	(__ARM_mve_typeid): Define macro with MVE types.
+ 	(__ARM_mve_coerce): Define macro with _Generic feature.
+ 	(vst4q): Define polymorphic variant for different vst4q builtins.
+ 	* config/arm/arm_mve_builtins.def: New file.
+ 	* config/arm/iterators.md (VSTRUCT): Modify to allow XI and OI
+ 	modes in MVE.
+ 	* config/arm/mve.md (MVE_VLD_ST): Define iterator.
+ 	(unspec): Define unspec.
+ 	(mve_vst4q<mode>): Define RTL pattern.
+ 	* config/arm/neon.md (mov<mode>): Modify expand to allow XI and OI
+ 	modes in MVE.
+ 	(neon_mov<mode>): Modify RTL define_insn to allow XI and OI modes
+ 	in MVE.
+ 	(define_split): Allow OI mode split for MVE after reload.
+ 	(define_split): Allow XI mode split for MVE after reload.
+ 	* config/arm/t-arm (arm.o): Add entry for arm_mve_builtins.def.
+ 	(arm-builtins.o): Likewise.
+ 
+ 2020-03-17  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* c-typeck.c (process_init_element): Handle constructor_type with
+ 	type size represented by POLY_INT_CST.
+ 
+ 2020-03-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/94187
+ 	* tree-ssa-strlen.c (count_nonzero_bytes): Punt if
+ 	nchars - offset < nbytes.
+ 
+ 	PR middle-end/94189
+ 	* builtins.c (expand_builtin_strnlen): Do return NULL_RTX if we would
+ 	emit a warning if it was enabled and don't depend on TREE_NO_WARNING
+ 	for code-generation.
+ 
+ 2020-03-16  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/94185
+ 	* lra-spills.c (remove_pseudos): Do not reuse insn alternative
+ 	after changing memory subreg.
+ 
+ 2020-03-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm.c (arm_libcall_uses_aapcs_base): Modify function to add
+ 	emulator calls for dobule precision arithmetic operations for MVE.
+ 
+ 2020-03-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* common/config/arm/arm-common.c (arm_asm_auto_mfpu): When vfp_base
+ 	feature bit is on and -mfpu=auto is passed as compiler option, do not
+ 	generate error on not finding any matching fpu. Because in this case
+ 	fpu is not required.
+ 	* config/arm/arm-cpus.in (vfp_base): Define feature bit, this bit is
+ 	enabled for MVE and also for all VFP extensions.
+ 	(VFPv2): Modify fgroup to enable vfp_base feature bit when ever VFPv2
+ 	is enabled.
+ 	(MVE): Define fgroup to enable feature bits mve, vfp_base and armv7em.
+ 	(MVE_FP): Define fgroup to enable feature bits is fgroup MVE and FPv5
+ 	along with feature bits mve_float.
+ 	(mve): Modify add options in armv8.1-m.main arch for MVE.
+ 	(mve.fp): Modify add options in armv8.1-m.main arch for MVE with
+ 	floating point.
+ 	* config/arm/arm.c (use_return_insn): Replace the
+ 	check with TARGET_VFP_BASE.
+ 	(thumb2_legitimate_index_p): Replace TARGET_HARD_FLOAT with
+ 	TARGET_VFP_BASE.
+ 	(arm_rtx_costs_internal): Replace "TARGET_HARD_FLOAT || TARGET_HAVE_MVE"
+ 	with TARGET_VFP_BASE, to allow cost calculations for copies in MVE as
+ 	well.
+ 	(arm_get_vfp_saved_size): Replace TARGET_HARD_FLOAT with
+ 	TARGET_VFP_BASE, to allow space calculation for VFP registers in MVE
+ 	as well.
+ 	(arm_compute_frame_layout): Likewise.
+ 	(arm_save_coproc_regs): Likewise.
+ 	(arm_fixed_condition_code_regs): Modify to enable using VFPCC_REGNUM
+ 	in MVE as well.
+ 	(arm_hard_regno_mode_ok): Replace "TARGET_HARD_FLOAT || TARGET_HAVE_MVE"
+ 	with equivalent macro TARGET_VFP_BASE.
+ 	(arm_expand_epilogue_apcs_frame): Likewise.
+ 	(arm_expand_epilogue): Likewise.
+ 	(arm_conditional_register_usage): Likewise.
+ 	(arm_declare_function_name): Add check to skip printing .fpu directive
+ 	in assembly file when TARGET_VFP_BASE is enabled and fpu_to_print is
+ 	"softvfp".
+ 	* config/arm/arm.h (TARGET_VFP_BASE): Define.
+ 	* config/arm/arm.md (arch): Add "mve" to arch.
+ 	(eq_attr "arch" "mve"): Enable on TARGET_HAVE_MVE is true.
+ 	(vfp_pop_multiple_with_writeback): Replace "TARGET_HARD_FLOAT
+ 	|| TARGET_HAVE_MVE" with equivalent macro TARGET_VFP_BASE.
+ 	* config/arm/constraints.md (Uf): Define to allow modification to FPCCR
+ 	in MVE.
+ 	* config/arm/thumb2.md (thumb2_movsfcc_soft_insn): Modify target guard
+ 	to not allow for MVE.
+ 	* config/arm/unspecs.md (UNSPEC_GET_FPSCR): Move to volatile unspecs
+ 	enum.
+ 	(VUNSPEC_GET_FPSCR): Define.
+ 	* config/arm/vfp.md (thumb2_movhi_vfp): Add support for VMSR and VMRS
+ 	instructions which move to general-purpose Register from Floating-point
+ 	Special register and vice-versa.
+ 	(thumb2_movhi_fp16): Likewise.
+ 	(thumb2_movsi_vfp): Add support for VMSR and VMRS instructions along
+ 	with MCR and MRC instructions which set and get Floating-point Status
+ 	and Control Register (FPSCR).
+ 	(movdi_vfp): Modify pattern to enable Single-precision scalar float move
+ 	in MVE.
+ 	(thumb2_movdf_vfp): Modify pattern to enable Double-precision scalar
+ 	float move patterns in MVE.
+ 	(thumb2_movsfcc_vfp): Modify pattern to enable single float conditional
+ 	code move patterns of VFP also in MVE by adding TARGET_VFP_BASE check.
+ 	(thumb2_movdfcc_vfp): Modify pattern to enable double float conditional
+ 	code move patterns of VFP also in MVE by adding TARGET_VFP_BASE check.
+ 	(push_multi_vfp): Add support to use VFP VPUSH pattern for MVE by adding
+ 	TARGET_VFP_BASE check.
+ 	(set_fpscr): Add support to set FPSCR register for MVE. Modify pattern
+ 	using VFPCC_REGNUM as few MVE intrinsics use carry bit of FPSCR
+ 	register.
+ 	(get_fpscr): Add support to get FPSCR register for MVE. Modify pattern
+ 	using VFPCC_REGNUM as few MVE intrinsics use carry bit of FPSCR
+ 	register.
+ 
+ 
+ 2020-03-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+             Mihail Ionescu  <mihail.ionescu@arm.com>
+             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config.gcc (arm_mve.h): Include mve intrinsics header file.
+ 	* config/arm/aout.h (p0): Add new register name for MVE predicated
+ 	cases.
+ 	* config/arm-builtins.c (ARM_BUILTIN_SIMD_LANE_CHECK): Define macro
+ 	common to Neon and MVE.
+ 	(ARM_BUILTIN_NEON_LANE_CHECK): Renamed to ARM_BUILTIN_SIMD_LANE_CHECK.
+ 	(arm_init_simd_builtin_types): Disable poly types for MVE.
+ 	(arm_init_neon_builtins): Move a check to arm_init_builtins function.
+ 	(arm_init_builtins): Use ARM_BUILTIN_SIMD_LANE_CHECK instead of
+ 	ARM_BUILTIN_NEON_LANE_CHECK.
+ 	(mve_dereference_pointer): Add function.
+ 	(arm_expand_builtin_args): Call to mve_dereference_pointer when MVE is
+ 	enabled.
+ 	(arm_expand_neon_builtin): Moved to arm_expand_builtin function.
+ 	(arm_expand_builtin): Moved from arm_expand_neon_builtin function.
+ 	* config/arm/arm-c.c (__ARM_FEATURE_MVE): Define macro for MVE and MVE
+ 	with floating point enabled.
+ 	* config/arm/arm-protos.h (neon_immediate_valid_for_move): Renamed to
+ 	simd_immediate_valid_for_move.
+ 	(simd_immediate_valid_for_move): Renamed from
+ 	neon_immediate_valid_for_move function.
+ 	* config/arm/arm.c (arm_options_perform_arch_sanity_checks): Generate
+ 	error if vfpv2 feature bit is disabled and mve feature bit is also
+ 	disabled for HARD_FLOAT_ABI.
+ 	(use_return_insn): Check to not push VFP regs for MVE.
+ 	(aapcs_vfp_allocate): Add MVE check to have same Procedure Call Standard
+ 	as Neon.
+ 	(aapcs_vfp_allocate_return_reg): Likewise.
+ 	(thumb2_legitimate_address_p): Check to return 0 on valid Thumb-2
+ 	address operand for MVE.
+ 	(arm_rtx_costs_internal): MVE check to determine cost of rtx.
+ 	(neon_valid_immediate): Rename to simd_valid_immediate.
+ 	(simd_valid_immediate): Rename from neon_valid_immediate.
+ 	(simd_valid_immediate): MVE check on size of vector is 128 bits.
+ 	(neon_immediate_valid_for_move): Rename to
+ 	simd_immediate_valid_for_move.
+ 	(simd_immediate_valid_for_move): Rename from
+ 	neon_immediate_valid_for_move.
+ 	(neon_immediate_valid_for_logic): Modify call to neon_valid_immediate
+ 	function.
+ 	(neon_make_constant): Modify call to neon_valid_immediate function.
+ 	(neon_vector_mem_operand): Return VFP register for POST_INC or PRE_DEC
+ 	for MVE.
+ 	(output_move_neon): Add MVE check to generate vldm/vstm instrcutions.
+ 	(arm_compute_frame_layout): Calculate space for saved VFP registers for
+ 	MVE.
+ 	(arm_save_coproc_regs): Save coproc registers for MVE.
+ 	(arm_print_operand): Add case 'E' to print memory operands for MVE.
+ 	(arm_print_operand_address): Check to print register number for MVE.
+ 	(arm_hard_regno_mode_ok): Check for arm hard regno mode ok for MVE.
+ 	(arm_modes_tieable_p): Check to allow structure mode for MVE.
+ 	(arm_regno_class): Add VPR_REGNUM check.
+ 	(arm_expand_epilogue_apcs_frame): MVE check to calculate epilogue code
+ 	for APCS frame.
+ 	(arm_expand_epilogue): MVE check for enabling pop instructions in
+ 	epilogue.
+ 	(arm_print_asm_arch_directives): Modify function to disable print of
+ 	.arch_extension "mve" and "fp" for cases where MVE is enabled with
+ 	"SOFT FLOAT ABI".
+ 	(arm_vector_mode_supported_p): Check for modes available in MVE interger
+ 	and MVE floating point.
+ 	(arm_array_mode_supported_p): Add TARGET_HAVE_MVE check for array mode
+ 	pointer support.
+ 	(arm_conditional_register_usage): Enable usage of conditional regsiter
+ 	for MVE.
+ 	(fixed_regs[VPR_REGNUM]): Enable VPR_REG for MVE.
+ 	(arm_declare_function_name): Modify function to disable print of
+ 	.arch_extension "mve" and "fp" for cases where MVE is enabled with
+ 	"SOFT FLOAT ABI".
+ 	* config/arm/arm.h (TARGET_HAVE_MVE): Disable for soft float abi and
+ 	when target general registers are required.
+ 	(TARGET_HAVE_MVE_FLOAT): Likewise.
+ 	(FIXED_REGISTERS): Add bit for VFP_REG class which is enabled in arm.c
+ 	for MVE.
+ 	(CALL_USED_REGISTERS): Set bit for VFP_REG class in CALL_USED_REGISTERS
+ 	which indicate this is not available for across function calls.
+ 	(FIRST_PSEUDO_REGISTER): Modify.
+ 	(VALID_MVE_MODE): Define valid MVE mode.
+ 	(VALID_MVE_SI_MODE): Define valid MVE SI mode.
+ 	(VALID_MVE_SF_MODE): Define valid MVE SF mode.
+ 	(VALID_MVE_STRUCT_MODE): Define valid MVE struct mode.
+ 	(VPR_REGNUM): Add Vector Predication Register in arm_regs_in_sequence
+ 	for MVE.
+ 	(IS_VPR_REGNUM): Macro to check for VPR_REG register.
+ 	(REG_ALLOC_ORDER): Add VPR_REGNUM entry.
+ 	(enum reg_class): Add VPR_REG entry.
+ 	(REG_CLASS_NAMES): Add VPR_REG entry.
+ 	* config/arm/arm.md (VPR_REGNUM): Define.
+ 	(conds): Check is_mve_type attrbiute to differentiate "conditional" and
+ 	"unconditional" instructions.
+ 	(arm_movsf_soft_insn): Modify RTL to not allow for MVE.
+ 	(movdf_soft_insn): Modify RTL to not allow for MVE.
+ 	(vfp_pop_multiple_with_writeback): Enable for MVE.
+ 	(include "mve.md"): Include mve.md file.
+ 	* config/arm/arm_mve.h: Add MVE intrinsics head file.
+ 	* config/arm/constraints.md (Up): Constraint to enable "p0" register in MVE
+ 	for vector predicated operands.
+ 	* config/arm/iterators.md (VNIM1): Define.
+ 	(VNINOTM1): Define.
+ 	(VHFBF_split): Define
+ 	* config/arm/mve.md: New file.
+ 	(mve_mov<mode>): Define RTL for move, store and load in MVE.
+ 	(mve_mov<mode>): Define move RTL pattern with vec_duplicate operator for
+ 	second operand.
+ 	* config/arm/neon.md (neon_immediate_valid_for_move): Rename with
+ 	simd_immediate_valid_for_move.
+ 	(neon_mov<mode>): Split pattern and move expand pattern "movv8hf" which
+ 	is common to MVE and  NEON to vec-common.md file.
+ 	(vec_init<mode><V_elem_l>): Add TARGET_HAVE_MVE check.
+ 	* config/arm/predicates.md (vpr_register_operand): Define.
+ 	* config/arm/t-arm: Add mve.md file.
+ 	* config/arm/types.md (mve_move): Add MVE instructions mve_move to
+ 	attribute "type".
+ 	(mve_store): Add MVE instructions mve_store to attribute "type".
+ 	(mve_load): Add MVE instructions mve_load to attribute "type".
+ 	(is_mve_type): Define attribute.
+ 	* config/arm/vec-common.md (mov<mode>): Modify RTL expand to support
+ 	standard move patterns in MVE along with NEON and IWMMXT with mode
+ 	iterator VNIM1.
+ 	(mov<mode>): Modify RTL expand to support standard move patterns in NEON
+ 	and IWMMXT with mode iterator V8HF.
+ 	(movv8hf): Define RTL expand to support standard "movv8hf" pattern in
+ 	NEON and MVE.
+ 	* config/arm/vfp.md (neon_immediate_valid_for_move): Rename to
+ 	simd_immediate_valid_for_move.
+ 
+ 
+ 2020-03-16  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/89229
+ 	* config/i386/i386.md (*movsi_internal): Call ix86_output_ssemov
+ 	for TYPE_SSEMOV.  Remove ext_sse_reg_operand and TARGET_AVX512VL
+ 	check.
+ 	* config/i386/predicates.md (ext_sse_reg_operand): Removed.
+ 
+ 2020-03-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/94167
+ 	* tree-inline.c (insert_init_stmt): Don't gimple_regimplify_operands
+ 	DEBUG_STMTs.
+ 
+ 	PR tree-optimization/94166
+ 	* tree-ssa-reassoc.c (sort_by_mach_mode): Use SSA_NAME_VERSION
+ 	as secondary comparison key.
+ 
+ 2020-03-16  Bin Cheng  <bin.cheng@linux.alibaba.com>
+ 
+ 	PR tree-optimization/94125
+ 	* tree-loop-distribution.c
+ 	(loop_distribution::break_alias_scc_partitions): Update post order
+ 	number for merged scc.
+ 
+ 2020-03-15  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/89229
+ 	* config/i386/i386.c (ix86_output_ssemov): Handle MODE_SI and
+ 	MODE_SF.
+ 	* config/i386/i386.md (*movsf_internal): Call ix86_output_ssemov
+ 	for TYPE_SSEMOV.  Remove TARGET_PREFER_AVX256, TARGET_AVX512VL
+ 	and ext_sse_reg_operand check.
+ 
+ 2020-03-15  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	* common.opt: Avoid redundancy in the help text.
+ 	* config/arc/arc.opt: Likewise.
+ 	* config/cr16/cr16.opt: Likewise.
+ 
+ 2020-03-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/93566
+ 	* tree-nested.c (convert_nonlocal_omp_clauses,
+ 	convert_local_omp_clauses): Handle {,in_,task_}reduction clauses
+ 	with C/C++ array sections.
+ 
+ 2020-03-14  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/89229
+ 	* config/i386/i386.md (*movdi_internal): Call ix86_output_ssemov
+ 	for TYPE_SSEMOV.  Remove ext_sse_reg_operand and TARGET_AVX512VL
+ 	check.
+ 
+ 2020-03-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimple-fold.c (gimple_fold_builtin_strncpy): Change
+ 	"a an" to "an" in a comment.
+ 	* hsa-common.h (is_a_helper): Likewise.
+ 	* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Likewise.
+ 	* config/arc/arc.c (arc600_corereg_hazard): Likewise.
+ 	* config/s390/s390.c (s390_indirect_branch_via_thunk): Likewise.
+ 
+ 2020-03-13  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	PR target/92379
+ 	* config/rs6000/rs6000.c (num_insns_constant_multi): Don't shift a
+ 	64-bit value by 64 bits (UB).
+ 
+ 2020-03-13  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/92303
+ 	* lra-spills.c (remove_pseudos): Try to simplify memory subreg.
+ 
+ 2020-03-13  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/94148
+ 	PR rtl-optimization/94042
+ 	* df-core.c (BB_LAST_CHANGE_AGE): Delete.
+ 	(df_worklist_propagate_forward): New parameter last_change_age, use
+ 	that instead of bb->aux.
+ 	(df_worklist_propagate_backward): Ditto.
+ 	(df_worklist_dataflow_doublequeue): Use a local array last_change_age.
+ 
+ 2020-03-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/94163
+ 	* tree-ssa-pre.c (create_expression_by_pieces): Check
+ 	whether alignment would be zero.
+ 
+ 2020-03-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/94157
+ 	* lto-wrapper.c (run_gcc): Use concat for appending
+ 	to collect_gcc_options.
+ 
+ 2020-03-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94121
+ 	* config/aarch64/aarch64.c (aarch64_add_offset_1): Use gen_int_mode
+ 	instead of GEN_INT.
+ 
+ 2020-03-13  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/89229
+ 	* config/i386/i386.c (ix86_output_ssemov): Handle MODE_DF.
+ 	* config/i386/i386.md (*movdf_internal): Call ix86_output_ssemov
+ 	for TYPE_SSEMOV.  Remove TARGET_AVX512F, TARGET_PREFER_AVX256,
+ 	TARGET_AVX512VL and ext_sse_reg_operand check.
+ 
+ 2020-03-13  Bu Le  <bule1@huawei.com>
+ 
+ 	PR target/94154
+ 	* config/aarch64/aarch64.opt (-param=aarch64-float-recp-precision=)
+ 	(-param=aarch64-double-recp-precision=): New options.
+ 	* doc/invoke.texi: Document them.
+ 	* config/aarch64/aarch64.c (aarch64_emit_approx_div): Use them
+ 	instead of hard-coding the choice of 1 for float and 2 for double.
+ 
+ 2020-03-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR rtl-optimization/94119
+ 	* resource.h (clear_hashed_info_until_next_barrier): Declare.
+ 	* resource.c (clear_hashed_info_until_next_barrier): New function.
+ 	* reorg.c (add_to_delay_list): Fix formatting.
+ 	(relax_delay_slots): Call clear_hashed_info_until_next_barrier on
+ 	the next instruction after removing a BARRIER.
+ 
+ 2020-03-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR middle-end/92071
+ 	* expmed.c (store_integral_bit_field): For fields larger than a word,
+ 	call extract_bit_field on the value if the mode is BLKmode.  Remove
+ 	specific path for big-endian targets and tidy things up a little bit.
+ 
+ 2020-03-12  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/90275
+ 	* cse.c (cse_insn): Delete no-op register moves too.
+ 
+ 2020-03-12  Darius Galis  <darius.galis@cyberthorstudios.com>
+ 
+ 	* config/rx/rx.md (CTRLREG_CPEN): Remove.
+ 	* config/rx/rx.c (rx_print_operand): Remove CTRLREG_CPEN support.
+ 
+ 2020-03-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/94103
+ 	* tree-ssa-sccvn.c (visit_reference_op_load): Avoid type
+ 	punning when the mode precision is not sufficient.
+ 
+ 2020-03-12  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/89229
+ 	* config/i386/i386.c (ix86_output_ssemov): Handle MODE_DI,
+ 	MODE_V1DF and MODE_V2SF.
+ 	* config/i386/mmx.md (MMXMODE:*mov<mode>_internal): Call
+ 	ix86_output_ssemov for TYPE_SSEMOV.  Remove ext_sse_reg_operand
+ 	check.
+ 
+ 2020-03-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* doc/tm.texi.in (ASM_OUTPUT_ALIGNED_DECL_LOCAL): Change
+ 	ASM_OUTPUT_ALIGNED_DECL in description to ASM_OUTPUT_ALIGNED_LOCAL
+ 	and ASM_OUTPUT_DECL to ASM_OUTPUT_LOCAL.
+ 	* doc/tm.texi: Regenerated.
+ 
+ 	PR tree-optimization/94130
+ 	* tree-ssa-dse.c: Include gimplify.h.
+ 	(increment_start_addr): If stmt has lhs, drop the lhs from call and
+ 	set it after the call to the original value of the first argument.
+ 	Formatting fixes.
+ 	(decrement_count): Formatting fix.
+ 
+ 2020-03-11  Delia Burduv  <delia.burduv@arm.com>
+ 
+ 	* config/arm/arm-builtins.c
+ 	(arm_init_simd_builtin_scalar_types): New.
+ 	* config/arm/arm_neon.h (vld2_bf16): Used new builtin type.
+ 	(vld2q_bf16): Used new builtin type.
+ 	(vld3_bf16): Used new builtin type.
+ 	(vld3q_bf16): Used new builtin type.
+ 	(vld4_bf16): Used new builtin type.
+ 	(vld4q_bf16): Used new builtin type.
+ 	(vld2_dup_bf16): Used new builtin type.
+ 	(vld2q_dup_bf16): Used new builtin type.
+ 	(vld3_dup_bf16): Used new builtin type.
+ 	(vld3q_dup_bf16): Used new builtin type.
+ 	(vld4_dup_bf16): Used new builtin type.
+ 	(vld4q_dup_bf16): Used new builtin type.
+ 
+ 2020-03-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94134
+ 	* config/pdp11/pdp11.c (pdp11_asm_output_var): Call switch_to_section
+ 	at the start to switch to data section.  Don't print extra newline if
+ 	.globl directive has not been emitted.
+ 
+ 2020-03-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* match.pd ((T *)(ptr - ptr-cst) -> &MEM[ptr + -ptr-cst]):
+ 	New pattern.
+ 
+ 2020-03-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR middle-end/93961
+ 	* tree.c (variably_modified_type_p) <RECORD_TYPE>: Recurse into fields
+ 	whose type is a qualified union.
+ 
+ 2020-03-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94121
+ 	* config/aarch64/aarch64.c (aarch64_add_offset_1): Use absu_hwi
+ 	instead of abs_hwi, change moffset type to unsigned HOST_WIDE_INT.
+ 
+ 	PR bootstrap/93962
+ 	* value-prof.c (dump_histogram_value): Use abs_hwi instead of
+ 	std::abs.
+ 	(get_nth_most_common_value): Use abs_hwi instead of abs.
+ 
+ 	PR middle-end/94111
+ 	* dfp.c (decimal_to_binary): Only use decimal128ToString if from->cl
+ 	is rvc_normal, otherwise use real_to_decimal to print the number to
+ 	string.
+ 
+ 	PR tree-optimization/94114
+ 	* tree-loop-distribution.c (generate_memset_builtin): Call
+ 	rewrite_to_non_trapping_overflow even on mem.
+ 	(generate_memcpy_builtin): Call rewrite_to_non_trapping_overflow even
+ 	on dest and src.
+ 
+ 2020-03-10  Jeff Law  <law@redhat.com>
+ 
+ 	* config/bfin/bfin.md (movsi_insv): Add length attribute.
+ 
+ 2020-03-10  Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	PR target/93709
+ 	* config/rs6000/rs6000.c (rs6000_emit_p9_fp_minmax): Check
+ 	NAN and SIGNED_ZEROR for smax/smin.
+ 
+ 2020-03-10  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	PR target/90763
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add
+ 	clause to handle P9V_BUILTIN_VEC_LXVL with const arguments.
+ 
+ 2020-03-10  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	* loop-iv.c (find_simple_exit): Make it static.
+ 	* cfgloop.h: Remove the corresponding prototype.
+ 
+ 2020-03-10  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	* ddg.c (create_ddg): Fix intendation.
+ 	(set_recurrence_length): Likewise.
+ 	(create_ddg_all_sccs): Likewise.
+ 
+ 2020-03-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94088
+ 	* config/i386/i386.md (*testqi_ext_3): Call ix86_match_ccmode with
+ 	CCZmode instead of CCNOmode if operands[2] has DImode and pos + len
+ 	is 32.
+ 
+ 2020-03-09  Jason Merrill  <jason@redhat.com>
+ 
+ 	* gdbinit.in (pgs): Fix typo in documentation.
+ 
+ 2020-03-09  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	Revert:
+ 
+ 	2020-02-28  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/93564
+ 	* ira-color.c (assign_hard_reg): Prefer smaller hard regno when we
+ 	do not honor reg alloc order.
+ 
+ 2020-03-09  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR inline-asm/94095
+ 	* doc/extend.texi (x86 Operand Modifiers): Fix column
+ 	for 'A' modifier.
+ 
+ 2020-03-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/93800
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+ 	Remove set of str_align_loops and str_align_jumps as these
+ 	should be set in previous 2 conditions in the function.
+ 
+ 2020-03-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/94045
+ 	* params.opt (-param=max-find-base-term-values=): New option.
+ 	* alias.c (find_base_term): Add cut-off for number of visited VALUEs
+ 	in a single toplevel find_base_term call.
+ 
+ 2020-03-06  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR target/91598
+ 	* config/aarch64/aarch64-builtins.c (TYPES_TERNOPU_LANE): Add define.
+ 	* config/aarch64/aarch64-simd.md
+ 	(aarch64_vec_<su>mult_lane<Qlane>): Add new insn for widening lane mul.
+ 	(aarch64_vec_<su>mlal_lane<Qlane>): Likewise.
+ 	* config/aarch64/aarch64-simd-builtins.def: Add intrinsics.
+ 	* config/aarch64/arm_neon.h:
+ 	(vmlal_lane_s16): Expand using intrinsics rather than inline asm.
+ 	(vmlal_lane_u16): Likewise.
+ 	(vmlal_lane_s32): Likewise.
+ 	(vmlal_lane_u32): Likewise.
+ 	(vmlal_laneq_s16): Likewise.
+ 	(vmlal_laneq_u16): Likewise.
+ 	(vmlal_laneq_s32): Likewise.
+ 	(vmlal_laneq_u32): Likewise.
+ 	(vmull_lane_s16): Likewise.
+ 	(vmull_lane_u16): Likewise.
+ 	(vmull_lane_s32): Likewise.
+ 	(vmull_lane_u32): Likewise.
+ 	(vmull_laneq_s16): Likewise.
+ 	(vmull_laneq_u16): Likewise.
+ 	(vmull_laneq_s32): Likewise.
+ 	(vmull_laneq_u32): Likewise.
+ 	* config/aarch64/iterators.md (Vcondtype): New iterator for lane mul.
+ 	(Qlane): Likewise.
+ 
+ 2020-03-06  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* aarch64/aarch64-simd.md (aarch64_mla_elt<mode>): Correct lane syntax.
+ 	(aarch64_mla_elt_<vswap_width_name><mode>): Likewise.
+ 	(aarch64_mls_elt<mode>): Likewise.
+ 	(aarch64_mls_elt_<vswap_width_name><mode>): Likewise.
+ 	(aarch64_fma4_elt<mode>): Likewise.
+ 	(aarch64_fma4_elt_<vswap_width_name><mode>): Likewise.
+ 	(aarch64_fma4_elt_to_64v2df): Likewise.
+ 	(aarch64_fnma4_elt<mode>): Likewise.
+ 	(aarch64_fnma4_elt_<vswap_width_name><mode>): Likewise.
+ 	(aarch64_fnma4_elt_to_64v2df): Likewise.
+ 
+ 2020-03-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve2.md (@aarch64_sve_<sve_int_op><mode>:
+ 	Specify movprfx attribute.
+ 	(@aarch64_sve_<sve_int_op>_lane_<mode>): Likewise.
+ 
+ 2020-03-06  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	PR target/94065
+ 	* config/rs6000/aix61.h (TARGET_NO_SUM_IN_TOC): Set to 1 for
+ 	cmodel=large.
+ 	(TARGET_NO_FP_IN_TOC): Same.
+ 	* config/rs6000/aix71.h: Same.
+ 	* config/rs6000/aix72.h: Same.
+ 
+ 2020-03-06  Andrew Pinski  <apinski@marvell.com>
+ 	    Jeff Law  <law@redhat.com>
+ 
+ 	PR rtl-optimization/93996
+ 	* haifa-sched.c (remove_notes): Be more careful when adding
+ 	REG_SAVE_NOTE.
+ 
+ 2020-03-06  Delia Burduv  <delia.burduv@arm.com>
+ 
+ 	* config/arm/arm_neon.h (vld2_bf16): New.
+ 	(vld2q_bf16): New.
+ 	(vld3_bf16): New.
+ 	(vld3q_bf16): New.
+ 	(vld4_bf16): New.
+ 	(vld4q_bf16): New.
+ 	(vld2_dup_bf16): New.
+ 	(vld2q_dup_bf16): New.
+ 	(vld3_dup_bf16): New.
+ 	(vld3q_dup_bf16): New.
+ 	(vld4_dup_bf16): New.
+ 	(vld4q_dup_bf16): New.
+ 	* config/arm/arm_neon_builtins.def
+ 	(vld2): Changed to VAR13 and added v4bf, v8bf
+ 	(vld2_dup): Changed to VAR8 and added v4bf, v8bf
+ 	(vld3): Changed to VAR13 and added v4bf, v8bf
+ 	(vld3_dup): Changed to VAR8 and added v4bf, v8bf
+ 	(vld4): Changed to VAR13 and added v4bf, v8bf
+ 	(vld4_dup): Changed to VAR8 and added v4bf, v8bf
+ 	* config/arm/iterators.md (VDXBF2): New iterator.
+ 	*config/arm/neon.md (neon_vld2): Use new iterators.
+ 	(neon_vld2_dup<mode): Use new iterators.
+ 	(neon_vld3<mode>): Likewise.
+ 	(neon_vld3qa<mode>): Likewise.
+ 	(neon_vld3qb<mode>): Likewise.
+ 	(neon_vld3_dup<mode>): Likewise.
+ 	(neon_vld4<mode>): Likewise.
+ 	(neon_vld4qa<mode>): Likewise.
+ 	(neon_vld4qb<mode>): Likewise.
+ 	(neon_vld4_dup<mode>): Likewise.
+ 	(neon_vld2_dupv8bf): New.
+ 	(neon_vld3_dupv8bf): Likewise.
+ 	(neon_vld4_dupv8bf): Likewise.
+ 
+ 2020-03-06  Delia Burduv  <delia.burduv@arm.com>
+ 
+ 	* config/arm/arm_neon.h (bfloat16x4x2_t): New typedef.
+ 	(bfloat16x8x2_t): New typedef.
+ 	(bfloat16x4x3_t): New typedef.
+ 	(bfloat16x8x3_t): New typedef.
+ 	(bfloat16x4x4_t): New typedef.
+ 	(bfloat16x8x4_t): New typedef.
+ 	(vst2_bf16): New.
+ 	(vst2q_bf16): New.
+ 	(vst3_bf16): New.
+ 	(vst3q_bf16): New.
+ 	(vst4_bf16): New.
+ 	(vst4q_bf16): New.
+ 	* config/arm/arm-builtins.c (v2bf_UP): Define.
+ 	(VAR13): New.
+ 	(arm_init_simd_builtin_types): Init Bfloat16x2_t eltype.
+ 	* config/arm/arm-modes.def (V2BF): New mode.
+ 	* config/arm/arm-simd-builtin-types.def
+ 	(Bfloat16x2_t): New entry.
+ 	* config/arm/arm_neon_builtins.def
+ 	(vst2): Changed to VAR13 and added v4bf, v8bf
+ 	(vst3): Changed to VAR13 and added v4bf, v8bf
+ 	(vst4): Changed to VAR13 and added v4bf, v8bf
+ 	* config/arm/iterators.md (VDXBF): New iterator.
+ 	(VQ2BF): New iterator.
+ 	*config/arm/neon.md (neon_vst2<mode>): Used new iterators.
+ 	(neon_vst2<mode>): Used new iterators.
+ 	(neon_vst3<mode>): Used new iterators.
+ 	(neon_vst3<mode>): Used new iterators.
+ 	(neon_vst3qa<mode>): Used new iterators.
+ 	(neon_vst3qb<mode>): Used new iterators.
+ 	(neon_vst4<mode>): Used new iterators.
+ 	(neon_vst4<mode>): Used new iterators.
+ 	(neon_vst4qa<mode>): Used new iterators.
+ 	(neon_vst4qb<mode>): Used new iterators.
+ 
+ 2020-03-06  Delia Burduv  <delia.burduv@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd-builtins.def
+ 	(bfcvtn): New built-in function.
+ 	(bfcvtn_q): New built-in function.
+ 	(bfcvtn2): New built-in function.
+ 	(bfcvt): New built-in function.
+ 	* config/aarch64/aarch64-simd.md
+ 	(aarch64_bfcvtn<q><mode>): New pattern.
+ 	(aarch64_bfcvtn2v8bf): New pattern.
+ 	(aarch64_bfcvtbf): New pattern.
+ 	* config/aarch64/arm_bf16.h (float32_t): New typedef.
+ 	(vcvth_bf16_f32): New intrinsic.
+ 	* config/aarch64/arm_bf16.h (vcvt_bf16_f32): New intrinsic.
+ 	(vcvtq_low_bf16_f32): New intrinsic.
+ 	(vcvtq_high_bf16_f32): New intrinsic.
+ 	* config/aarch64/iterators.md (V4SF_TO_BF): New mode iterator.
+ 	(UNSPEC_BFCVTN): New UNSPEC.
+ 	(UNSPEC_BFCVTN2): New UNSPEC.
+ 	(UNSPEC_BFCVT): New UNSPEC.
+ 	* config/arm/types.md (bf_cvt): New type.
+ 
+ 2020-03-06  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/s390.md ("tabort"): Get rid of two consecutive
+ 	blanks in format string.
+ 
+ 2020-03-05  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/89229
+ 	PR target/89346
+ 	* config/i386/i386-protos.h (ix86_output_ssemov): New prototype.
+ 	* config/i386/i386.c (ix86_get_ssemov): New function.
+ 	(ix86_output_ssemov): Likewise.
+ 	* config/i386/sse.md (VMOVE:mov<mode>_internal): Call
+ 	ix86_output_ssemov for TYPE_SSEMOV.  Remove TARGET_AVX512VL
+ 	check.
+ 	(*movxi_internal_avx512f): Call ix86_output_ssemov for TYPE_SSEMOV.
+ 	(*movoi_internal_avx): Call ix86_output_ssemov for TYPE_SSEMOV.
+ 	Remove ext_sse_reg_operand and TARGET_AVX512VL check.
+ 	(*movti_internal): Likewise.
+ 	(*movtf_internal): Call ix86_output_ssemov for TYPE_SSEMOV.
+ 
+ 2020-03-05  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/91890
+ 	* gimple-ssa-warn-restrict.c (maybe_diag_overlap): Remove LOC argument.
+ 	Use gimple_or_expr_nonartificial_location.
+ 	(check_bounds_overlap): Drop LOC argument to maybe_diag_access_bounds.
+ 	Use gimple_or_expr_nonartificial_location.
+ 	* gimple.c (gimple_or_expr_nonartificial_location): New function.
+ 	* gimple.h (gimple_or_expr_nonartificial_location): Declare it.
+ 	* tree-ssa-strlen.c (maybe_warn_overflow): Use
+ 	gimple_or_expr_nonartificial_location.
+ 	(maybe_diag_stxncpy_trunc, handle_builtin_stxncpy_strncat): Likewise.
+ 	(maybe_warn_pointless_strcmp): Likewise.
+ 
+ 2020-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/94046
+ 	* config/i386/avx2intrin.h (_mm_mask_i32gather_ps): Fix first cast of
+ 	SRC and MASK arguments to __m128 from __m128d.
+ 	(_mm256_mask_i32gather_ps): Fix first cast of MASK argument to __m256
+ 	from __m256d.
+ 	(_mm_mask_i64gather_ps): Fix first cast of MASK argument to __m128
+ 	from __m128d.
+ 	* config/i386/xopintrin.h (_mm_permute2_pd): Fix first cast of C
+ 	argument to __m128i from __m128d.
+ 	(_mm256_permute2_pd): Fix first cast of C argument to __m256i from
+ 	__m256d.
+ 	(_mm_permute2_ps): Fix first cast of C argument to __m128i from __m128.
+ 	(_mm256_permute2_ps): Fix first cast of C argument to __m256i from
+ 	__m256.
+ 
+ 2020-03-05  Delia Burduv  <delia.burduv@arm.com>
+ 
+ 	* config/arm/arm_neon.h (vbfmmlaq_f32): New.
+ 	(vbfmlalbq_f32): New.
+ 	(vbfmlaltq_f32): New.
+ 	(vbfmlalbq_lane_f32): New.
+ 	(vbfmlaltq_lane_f32): New.
+ 	(vbfmlalbq_laneq_f32): New.
+ 	(vbfmlaltq_laneq_f32): New.
+ 	* config/arm/arm_neon_builtins.def (vmmla): New.
+ 	(vfmab): New.
+ 	(vfmat): New.
+ 	(vfmab_lane): New.
+ 	(vfmat_lane): New.
+ 	(vfmab_laneq): New.
+ 	(vfmat_laneq): New.
+ 	* config/arm/iterators.md (BF_MA): New int iterator.
+ 	(bt): New int attribute.
+ 	(VQXBF): Copy of VQX with V8BF.
+ 	* config/arm/neon.md (neon_vmmlav8bf): New insn.
+ 	(neon_vfma<bt>v8bf): New insn.
+ 	(neon_vfma<bt>_lanev8bf): New insn.
+ 	(neon_vfma<bt>_laneqv8bf): New expand.
+ 	(neon_vget_high<mode>): Changed iterator to VQXBF.
+ 	* config/arm/unspecs.md (UNSPEC_BFMMLA): New UNSPEC.
+ 	(UNSPEC_BFMAB): New UNSPEC.
+ 	(UNSPEC_BFMAT): New UNSPEC.
+ 
+ 2020-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/93399
+ 	* tree-pretty-print.h (pretty_print_string): Declare.
+ 	* tree-pretty-print.c (pretty_print_string): Remove forward
+ 	declaration, no longer static.  Change nbytes parameter type
+ 	from unsigned to size_t.
+ 	* print-rtl.c (print_value) <case CONST_STRING>: Use
+ 	pretty_print_string and for shrink way too long strings.
+ 
+ 2020-03-05  Richard Biener  <rguenther@suse.de>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/93582
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Treat POINTER_PLUS_EXPR
+ 	last operand as signed when looking for memset offset.  Formatting
+ 	fix.
+ 
+ 2020-03-04  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR bootstrap/93962
+ 	* value-prof.c (dump_histogram_value): Use std::abs.
+ 
+ 2020-03-04  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/93986
+ 	* tree-ssa-strlen.c (maybe_warn_overflow): Convert all wide_int
+ 	operands to the same precision widest_int to avoid ICEs.
+ 
+ 2020-03-04  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR target/87560
+ 	* rs6000-cpus.def (OTHER_ALTIVEC_MASKS): New #define.
+ 	* rs6000.c (rs6000_disable_incompatible_switches): Add table entry
+ 	for OPTION_MASK_ALTIVEC.
+ 
+ 2020-03-04  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config.gcc: Include the glibc-stdint.h header for zTPF.
+ 
+ 2020-03-04  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_secondary_memory_needed): Disallow
+ 	direct FPR-GPR copies.
+ 	(s390_register_info_gprtofpr): Disallow GPR content to be saved in
+ 	FPRs.
+ 
+ 2020-03-04  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_emit_prologue): Specify the 2 new
+ 	operands to the prologue_tpf expander.
+ 	(s390_emit_epilogue): Likewise.
+ 	(s390_option_override_internal): Do error checking and setup for
+ 	the new options.
+ 	* config/s390/tpf.h (TPF_TRACE_PROLOGUE_CHECK)
+ 	(TPF_TRACE_EPILOGUE_CHECK, TPF_TRACE_PROLOGUE_TARGET)
+ 	(TPF_TRACE_EPILOGUE_TARGET, TPF_TRACE_PROLOGUE_SKIP_TARGET)
+ 	(TPF_TRACE_EPILOGUE_SKIP_TARGET): New macro definitions.
+ 	* config/s390/tpf.md ("prologue_tpf", "epilogue_tpf"): Add two new
+ 	operands for the check flag and the branch target.
+ 	* config/s390/tpf.opt ("mtpf-trace-hook-prologue-check")
+ 	("mtpf-trace-hook-prologue-target")
+ 	("mtpf-trace-hook-epilogue-check")
+ 	("mtpf-trace-hook-epilogue-target", "mtpf-trace-skip"): New
+ 	options.
+ 	* doc/invoke.texi: Document -mtpf-trace-skip option. The other
+ 	options are for debugging purposes and will not be documented
+ 	here.
+ 
+ 2020-03-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/93888
+ 	* tree-inline.c (copy_decl_to_var): Copy DECL_BY_REFERENCE flag.
+ 
+ 	* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Add offseti
+ 	argument.  Change pd argument so that it can be modified.  Turn
+ 	constant non-CONSTRUCTOR store into non-constant if it is too large.
+ 	Adjust offset and size of CONSTRUCTOR or non-constant store to avoid
+ 	overflows.
+ 	(vn_walk_cb_data::vn_walk_cb_data, vn_reference_lookup_3): Adjust
+ 	callers.
+ 
+ 2020-02-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93964
+ 	* graphite-isl-ast-to-gimple.c
+ 	(gcc_expression_from_isl_ast_expr_id): Add intermediate
+ 	conversion for pointer to integer converts.
+ 	* graphite-scop-detection.c (assign_parameter_index_in_region):
+ 	Relax assert.
+ 
+ 2020-03-04  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c/93886
+ 	PR c/93887
+ 	* doc/invoke.texi: Clarify --help=language and --help=common
+ 	interaction.
+ 
+ 2020-03-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/94001
+ 	* tree-tailcall.c (process_assignment): Before comparing op1 to
+ 	*ass_var, verify *ass_var is non-NULL.
+ 
+ 2020-03-04  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	PR target/93995
+ 	* config/riscv/riscv.c (riscv_emit_float_compare): Using NE to compare
+ 	the result of IOR.
+ 
+ 2020-03-03  Dennis Zhang  <dennis.zhang@arm.com>
+ 
+ 	* config/arm/arm_bf16.h (vcvtah_f32_bf16, vcvth_bf16_f32): New.
+ 	* config/arm/arm_neon.h (vcvt_f32_bf16, vcvtq_low_f32_bf16): New.
+ 	(vcvtq_high_f32_bf16, vcvt_bf16_f32): New.
+ 	(vcvtq_low_bf16_f32, vcvtq_high_bf16_f32): New.
+ 	* config/arm/arm_neon_builtins.def (vbfcvt, vbfcvt_high): New entries.
+ 	(vbfcvtv4sf, vbfcvtv4sf_high): Likewise.
+ 	* config/arm/iterators.md (VBFCVT, VBFCVTM): New mode iterators.
+ 	(V_bf_low, V_bf_cvt_m): New mode attributes.
+ 	* config/arm/neon.md (neon_vbfcvtv4sf<VBFCVT:mode>): New.
+ 	(neon_vbfcvtv4sf_highv8bf, neon_vbfcvtsf): New.
+ 	(neon_vbfcvt<VBFCVT:mode>, neon_vbfcvt_highv8bf): New.
+ 	(neon_vbfcvtbf_cvtmode<mode>, neon_vbfcvtbf): New
+ 	* config/arm/unspecs.md (UNSPEC_BFCVT, UNSPEC_BFCVT_HIG): New.
+ 
+ 2020-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/93582
+ 	* tree-ssa-sccvn.h (vn_reference_lookup): Add mask argument.
+ 	* tree-ssa-sccvn.c (struct vn_walk_cb_data): Add mask and masked_result
+ 	members, initialize them in the constructor and if mask is non-NULL,
+ 	artificially push_partial_def {} for the portions of the mask that
+ 	contain zeros.
+ 	(vn_walk_cb_data::finish): If mask is non-NULL, set masked_result to
+ 	val and return (void *)-1.  Formatting fix.
+ 	(vn_reference_lookup_pieces): Adjust vn_walk_cb_data initialization.
+ 	Formatting fix.
+ 	(vn_reference_lookup): Add mask argument.  If non-NULL, don't call
+ 	fully_constant_vn_reference_p nor vn_reference_lookup_1 and return
+ 	data.mask_result.
+ 	(visit_nary_op): Handle BIT_AND_EXPR of a memory load and INTEGER_CST
+ 	mask.
+ 	(visit_stmt): Formatting fix.
+ 
+ 2020-03-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93946
+ 	* alias.h (refs_same_for_tbaa_p): Declare.
+ 	* alias.c (refs_same_for_tbaa_p): New function.
+ 	* tree-ssa-alias.c (ao_ref_alias_set): For a NULL ref return
+ 	zero.
+ 	* tree-ssa-scopedtables.h
+ 	(avail_exprs_stack::lookup_avail_expr): Add output argument
+ 	giving access to the hashtable entry.
+ 	* tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
+ 	Likewise.
+ 	* tree-ssa-dom.c: Include alias.h.
+ 	(dom_opt_dom_walker::optimize_stmt): Validate TBAA state before
+ 	removing redundant store.
+ 	* tree-ssa-sccvn.h (vn_reference_s::base_set): New member.
+ 	(ao_ref_init_from_vn_reference): Adjust prototype.
+ 	(vn_reference_lookup_pieces): Likewise.
+ 	(vn_reference_insert_pieces): Likewise.
+ 	* tree-ssa-sccvn.c: Track base alias set in addition to alias
+ 	set everywhere.
+ 	(eliminate_dom_walker::eliminate_stmt): Also check base alias
+ 	set when removing redundant stores.
+ 	(visit_reference_op_store): Likewise.
+ 	* dse.c (record_store): Adjust valdity check for redundant
+ 	store removal.
+ 
+ 2020-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/26877
+ 	* config/s390/s390.h (OPTION_DEFAULT_SPECS): Reorder.
+ 
+ 	PR rtl-optimization/94002
+ 	* explow.c (plus_constant): Punt if cst has VOIDmode and
+ 	get_pool_mode is different from mode.
+ 
+ 2020-03-03  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (leigitimate_small_data_address_p): Check if an
+ 	address has an offset which fits the scalling constraint for a
+ 	load/store operation.
+ 	(legitimate_scaled_address_p): Update use
+ 	leigitimate_small_data_address_p.
+ 	(arc_print_operand): Likewise.
+ 	(arc_legitimate_address_p): Likewise.
+ 	(legitimate_small_data_address_p): Likewise.
+ 
+ 2020-03-03  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (fmasf4_fpu): Use accl_operand predicate.
+ 	(fnmasf4_fpu): Likewise.
+ 
+ 2020-03-03  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (adddi3): Early expand the 64bit operation into
+ 	32bit ops.
+ 	(subdi3): Likewise.
+ 	(adddi3_i): Remove pattern.
+ 	(subdi3_i): Likewise.
+ 
+ 2020-03-03  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (eh_return): Add length info.
+ 
+ 2020-03-02  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/invoke.texi (-fanalyzer-show-duplicate-count): New.
+ 
+ 2020-03-02  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/invoke.texi (Static Analyzer Options): Add
+ 	-Wanalyzer-stale-setjmp-buffer to the list of options enabled
+ 	by -fanalyzer.
+ 
+ 2020-03-02  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/93997
+ 	* config/i386/i386.md (movstrict<mode>): Allow only
+ 	registers with VALID_INT_MODE_P modes.
+ 
+ 2020-03-02  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (dpp_move<mode>): New.
+ 	(reduc_insn): Use 'U' and 'B' operand codes.
+ 	(reduc_<reduc_op>_scal_<mode>): Allow all types.
+ 	(reduc_<reduc_op>_scal_v64di): Delete.
+ 	(*<reduc_op>_dpp_shr_<mode>): Allow all 1reg types.
+ 	(*plus_carry_dpp_shr_v64si): Change to ...
+ 	(*plus_carry_dpp_shr_<mode>): ... this and allow all 1reg int types.
+ 	(mov_from_lane63_v64di): Change to ...
+ 	(mov_from_lane63_<mode>): ... this, and allow all 64-bit modes.
+ 	* config/gcn/gcn.c (gcn_expand_dpp_shr_insn): Increase buffer size.
+ 	Support UNSPEC_MOV_DPP_SHR output formats.
+ 	(gcn_expand_reduc_scalar): Add "use_moves" reductions.
+ 	Add "use_extends" reductions.
+ 	(print_operand_address): Add 'I' and 'U' codes.
+ 	* config/gcn/gcn.md (unspec): Add UNSPEC_MOV_DPP_SHR.
+ 
+ 2020-03-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	* lto-wrapper.c: Fix typo in comment about
+ 	C++ standard version.
+ 
+ 2020-03-01  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c++/92721
+ 	* calls.c (init_attr_rdwr_indices): Correctly handle attribute.
+ 
+ 2020-03-01  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/93829
+ 	* tree-ssa-strlen.c (count_nonzero_bytes): Set the size to that
+ 	  of a pointer in the outermost ADDR_EXPRs.
+ 
+ 2020-02-28  Jeff Law  <law@redhat.com>
+ 
+ 	* config/v850/v850.h (STATIC_CHAIN_REGNUM): Change to r19.
+ 	* config/v850/v850.c (v850_asm_trampoline_template): Update
+ 	accordingly.
+ 
+ 2020-02-28  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	PR target/93937
+ 	* config/rs6000/vsx.md (vsx_extract_<mode>_<VS_scalar>mode_var):
+ 	Delete insn.
+ 
+ 2020-02-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR other/93965
+ 	* configure.ac: Improve detection of ld_date by requiring
+ 	either two dashes or none.
+ 	* configure: Regenerate.
+ 
+ 2020-02-28  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/93564
+ 	* ira-color.c (assign_hard_reg): Prefer smaller hard regno when we
+ 	do not honor reg alloc order.
+ 
+ 2020-02-27  Joel Hutton  <Joel.Hutton@arm.com>
+ 
+ 	PR target/87612
+ 	* config/aarch64/aarch64.c (aarch64_override_options): Fix
+ 	misleading warning string.
+ 
+ 2020-02-27  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* doc/invoke.texi (-Wbuiltin-declaration-mismatch): Fix a typo.
+ 
+ 2020-02-27  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	PR target/93932
+ 	* config/rs6000/vsx.md (vsx_extract_<mode>_var, VSX_D iterator):
+ 	Split the insn into two parts.  This insn only does variable
+ 	extract from a register.
+ 	(vsx_extract_<mode>_var_load, VSX_D iterator): New insn, do
+ 	variable extract from memory.
+ 	(vsx_extract_v4sf_var): Split the insn into two parts.  This insn
+ 	only does variable extract from a register.
+ 	(vsx_extract_v4sf_var_load): New insn, do variable extract from
+ 	memory.
+ 	(vsx_extract_<mode>_var, VSX_EXTRACT_I iterator): Split the insn
+ 	into two parts.  This insn only does variable extract from a
+ 	register.
+ 	(vsx_extract_<mode>_var_load, VSX_EXTRACT_I iterator): New insn,
+ 	do variable extract from memory.
+ 
+ 2020-02-27  Martin Jambor  <mjambor@suse.cz>
+ 	    Feng Xue  <fxue@os.amperecomputing.com>
+ 
+ 	PR ipa/93707
+ 	* ipa-cp.c (same_node_or_its_all_contexts_clone_p): Replaced with
+ 	new function calls_same_node_or_its_all_contexts_clone_p.
+ 	(cgraph_edge_brings_value_p): Use it.
+ 	(cgraph_edge_brings_value_p): Likewise.
+ 	(self_recursive_pass_through_p): Return false if caller is a clone.
+ 	(self_recursive_agg_pass_through_p): Likewise.
+ 
+ 2020-02-27  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR middle-end/92152
+ 	* alias.c (ends_tbaa_access_path_p): Break out from ...
+ 	(component_uses_parent_alias_set_from): ... here.
+ 	* alias.h (ends_tbaa_access_path_p): Declare.
+ 	* tree-ssa-alias.c (access_path_may_continue_p): Break out from ...;
+ 	handle trailing arrays past end of tbaa access path.
+ 	(aliasing_component_refs_p): ... here; likewise.
+ 	(nonoverlapping_refs_since_match_p): Track TBAA segment of the access
+ 	path; disambiguate also past end of it.
+ 	(nonoverlapping_component_refs_p): Use only TBAA segment of the access
+ 	path.
+ 
+ 2020-02-27  Mihail Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	* (__ARM_NUM_LANES, __arm_lane, __arm_lane_q): Move to the
+ 	beginning of the file.
+ 	(vcreate_bf16, vcombine_bf16): New.
+ 	(vdup_n_bf16, vdupq_n_bf16): New.
+ 	(vdup_lane_bf16, vdup_laneq_bf16): New.
+ 	(vdupq_lane_bf16, vdupq_laneq_bf16): New.
+ 	(vduph_lane_bf16, vduph_laneq_bf16): New.
+ 	(vset_lane_bf16, vsetq_lane_bf16): New.
+ 	(vget_lane_bf16, vgetq_lane_bf16): New.
+ 	(vget_high_bf16, vget_low_bf16): New.
+ 	(vreinterpret_bf16_u8, vreinterpretq_bf16_u8): New.
+ 	(vreinterpret_bf16_u16, vreinterpretq_bf16_u16): New.
+ 	(vreinterpret_bf16_u32, vreinterpretq_bf16_u32): New.
+ 	(vreinterpret_bf16_u64, vreinterpretq_bf16_u64): New.
+ 	(vreinterpret_bf16_s8, vreinterpretq_bf16_s8): New.
+ 	(vreinterpret_bf16_s16, vreinterpretq_bf16_s16): New.
+ 	(vreinterpret_bf16_s32, vreinterpretq_bf16_s32): New.
+ 	(vreinterpret_bf16_s64, vreinterpretq_bf16_s64): New.
+ 	(vreinterpret_bf16_p8, vreinterpretq_bf16_p8): New.
+ 	(vreinterpret_bf16_p16, vreinterpretq_bf16_p16): New.
+ 	(vreinterpret_bf16_p64, vreinterpretq_bf16_p64): New.
+ 	(vreinterpret_bf16_f32, vreinterpretq_bf16_f32): New.
+ 	(vreinterpret_bf16_f64, vreinterpretq_bf16_f64): New.
+ 	(vreinterpretq_bf16_p128): New.
+ 	(vreinterpret_s8_bf16, vreinterpretq_s8_bf16): New.
+ 	(vreinterpret_s16_bf16, vreinterpretq_s16_bf16): New.
+ 	(vreinterpret_s32_bf16, vreinterpretq_s32_bf16): New.
+ 	(vreinterpret_s64_bf16, vreinterpretq_s64_bf16): New.
+ 	(vreinterpret_u8_bf16, vreinterpretq_u8_bf16): New.
+ 	(vreinterpret_u16_bf16, vreinterpretq_u16_bf16): New.
+ 	(vreinterpret_u32_bf16, vreinterpretq_u32_bf16): New.
+ 	(vreinterpret_u64_bf16, vreinterpretq_u64_bf16): New.
+ 	(vreinterpret_p8_bf16, vreinterpretq_p8_bf16): New.
+ 	(vreinterpret_p16_bf16, vreinterpretq_p16_bf16): New.
+ 	(vreinterpret_p64_bf16, vreinterpretq_p64_bf16): New.
+ 	(vreinterpret_f32_bf16, vreinterpretq_f32_bf16): New.
+ 	(vreinterpretq_p128_bf16): New.
+ 	* config/arm/arm_neon_builtins.def (VDX): Add V4BF.
+ 	(V_elem): Likewise.
+ 	(V_elem_l): Likewise.
+ 	(VD_LANE): Likewise.
+ 	(VQX) Add V8BF.
+ 	(V_DOUBLE): Likewise.
+ 	(VDQX): Add V4BF and V8BF.
+ 	(V_two_elem, V_three_elem, V_four_elem): Likewise.
+ 	(V_reg): Likewise.
+ 	(V_HALF): Likewise.
+ 	(V_double_vector_mode): Likewise.
+ 	(V_cmp_result): Likewise.
+ 	(V_uf_sclr): Likewise.
+ 	(V_sz_elem): Likewise.
+ 	(Is_d_reg): Likewise.
+ 	(V_mode_nunits): Likewise.
+ 	* config/arm/neon.md (neon_vdup_lane): Enable for BFloat16.
+ 
+ 2020-02-27  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (VEC_SUBDWORD_MODE): New mode iterator.
+ 	(<expander><mode>2<exec>): Change modes to VEC_ALL1REG_INT_MODE.
+ 	(<expander><mode>3<exec>): Likewise.
+ 	(<expander><mode>3): New.
+ 	(v<expander><mode>3): New.
+ 	(<expander><mode>3): New.
+ 	(<expander><mode>3<exec>): Rename to ...
+ 	(<expander>v64si3<exec>): ... this, and change modes to V64SI.
+ 	* config/gcn/gcn.md (mnemonic): Use '%B' for not.
+ 
+ 2020-02-27  Alexandre Oliva <oliva@adacore.com>
+ 
+ 	* config/vx-common.h (NO_DOLLAR_IN_LABEL, NO_DOT_IN_LABEL): Leave
+ 	them alone on vx7.
+ 
+ 2020-02-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93508
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Handle _CHK like
+ 	non-_CHK variants.  Valueize their length arguments.
+ 
+ 2020-02-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93953
+ 	* tree-vect-slp.c (slp_copy_subtree): Avoid keeping a reference
+ 	to the hash-map entry.
+ 
+ 2020-02-27  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn.md (mov<mode>): Add transformations for BI subregs.
+ 
+ 2020-02-27  Mark Williams  <mwilliams@fb.com>
+ 
+ 	* dwarf2out.c (file_name_acquire): Call remap_debug_filename.
+ 	* lto-opts.c (lto_write_options): Drop -fdebug-prefix-map,
+ 	-ffile-prefix-map and -fmacro-prefix-map.
+ 	* lto-streamer-out.c: Include file-prefix-map.h.
+ 	(lto_output_location): Remap the file part of locations.
+ 
+ 2020-02-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/93949
+ 	* gimplify.c (gimplify_init_constructor): Don't promote readonly
+ 	DECL_REGISTER variables to TREE_STATIC.
+ 
+ 	PR tree-optimization/93582
+ 	PR tree-optimization/93945
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Handle memset with
+ 	non-zero INTEGER_CST second argument and ref->offset or ref->size
+ 	not a multiple of BITS_PER_UNIT.
+ 
+ 2020-02-27  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/install.texi (Binaries): Update description of BullFreeware.
+ 
+ 2020-02-26  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	PR c++/90467
+ 
+ 	* doc/invoke.texi (Option Summary): Re-alphabetize warnings in
+ 	C++ Language Options, Warning Options, and Static Analyzer
+ 	Options lists.  Document negative form of options enabled by
+ 	default.  Move some things around to more accurately sort
+ 	warnings by category.
+ 	(C++ Dialect Options, Warning Options, Static Analyzer
+ 	Options): Document negative form of options when enabled by
+ 	default.  Move some things around to more accurately sort
+ 	warnings by category.  Add some missing index entries.
+ 	Light copy-editing.
+ 
+ 2020-02-26  Carl Love  <cel@us.ibm.com>
+ 
+ 	PR target/91276
+ 	* doc/extend.texi (PowerPC AltiVec Built-in Functions available on
+ 	ISA 2.07): The builtin-function name __builtin_crypto_vpmsumb is only
+ 	for the vector unsigned short arguments.  It is also listed as the
+ 	name of the built-in for arguments vector unsigned short,
+ 	vector unsigned int and vector unsigned long long built-ins.  The
+ 	name of the builtins for these arguments should be:
+ 	__builtin_crypto_vpmsumh, __builtin_crypto_vpmsumw and
+ 	__builtin_crypto_vpmsumd respectively.
+ 
+ 2020-02-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_print_slp_tree): Also dump ref count
+ 	and load permutation.
+ 
+ 2020-02-26  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR middle-end/93843
+ 	* optabs-tree.c (supportable_convert_operation): Reject types with
+ 	scalar modes.
+ 
+ 2020-02-26  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (ANALYZER_OBJS): Add analyzer/bar-chart.o.
+ 
+ 2020-02-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/93820
+ 	* gimple-ssa-store-merging.c (check_no_overlap): Change RHS_CODE
+ 	argument to ALL_INTEGER_CST_P boolean.
+ 	(imm_store_chain_info::try_coalesce_bswap): Adjust caller.
+ 	(imm_store_chain_info::coalesce_immediate_stores): Likewise.  Handle
+ 	adjacent INTEGER_CST store into merged_store->only_constants like
+ 	overlapping one.
+ 
+ 2020-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR other/93912
+ 	* config/sh/sh.c (expand_cbranchdi4): Fix comment typo, probablity
+ 	-> probability.
+ 	* cfghooks.c (verify_flow_info): Likewise.
+ 	* predict.c (combine_predictions_for_bb): Likewise.
+ 	* bb-reorder.c (connect_better_edge_p): Likewise.  Fix comment typo,
+ 	sucessor -> successor.
+ 	(find_traces_1_round): Fix comment typo, destinarion -> destination.
+ 	* omp-expand.c (expand_oacc_for): Fix comment typo, sucessors ->
+ 	successors.
+ 	* tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Fix dump
+ 	message typo, sucessors -> successors.
+ 
+ 2020-02-25  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* doc/extend.texi (attribute access): Correct an example.
+ 
+ 2020-02-25  Mihail Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.c (aarch64_scalar_builtin_types):
+ 	Add simd_bf.
+ 	(aarch64_init_simd_builtin_scalar_types): Register simd_bf.
+ 	(VAR15, VAR16): New.
+ 	* config/aarch64/iterators.md (VALLDIF): Enable for V4BF and V8BF.
+ 	(VD): Enable for V4BF.
+ 	(VDC): Likewise.
+ 	(VQ): Enable for V8BF.
+ 	(VQ2): Likewise.
+ 	(VQ_NO2E): Likewise.
+ 	(VDBL, Vdbl): Add V4BF.
+ 	(V_INT_EQUIV, v_int_equiv): Add V4BF and V8BF.
+ 	* config/aarch64/arm_neon.h (bfloat16x4x2_t): New typedef.
+ 	(bfloat16x8x2_t): Likewise.
+ 	(bfloat16x4x3_t): Likewise.
+ 	(bfloat16x8x3_t): Likewise.
+ 	(bfloat16x4x4_t): Likewise.
+ 	(bfloat16x8x4_t): Likewise.
+ 	(vcombine_bf16): New.
+ 	(vld1_bf16, vld1_bf16_x2): New.
+ 	(vld1_bf16_x3, vld1_bf16_x4): New.
+ 	(vld1q_bf16, vld1q_bf16_x2): New.
+ 	(vld1q_bf16_x3, vld1q_bf16_x4): New.
+ 	(vld1_lane_bf16): New.
+ 	(vld1q_lane_bf16): New.
+ 	(vld1_dup_bf16): New.
+ 	(vld1q_dup_bf16): New.
+ 	(vld2_bf16): New.
+ 	(vld2q_bf16): New.
+ 	(vld2_dup_bf16): New.
+ 	(vld2q_dup_bf16): New.
+ 	(vld3_bf16): New.
+ 	(vld3q_bf16): New.
+ 	(vld3_dup_bf16): New.
+ 	(vld3q_dup_bf16): New.
+ 	(vld4_bf16): New.
+ 	(vld4q_bf16): New.
+ 	(vld4_dup_bf16): New.
+ 	(vld4q_dup_bf16): New.
+ 	(vst1_bf16, vst1_bf16_x2): New.
+ 	(vst1_bf16_x3, vst1_bf16_x4): New.
+ 	(vst1q_bf16, vst1q_bf16_x2): New.
+ 	(vst1q_bf16_x3, vst1q_bf16_x4): New.
+ 	(vst1_lane_bf16): New.
+ 	(vst1q_lane_bf16): New.
+ 	(vst2_bf16): New.
+ 	(vst2q_bf16): New.
+ 	(vst3_bf16): New.
+ 	(vst3q_bf16): New.
+ 	(vst4_bf16): New.
+ 	(vst4q_bf16): New.
+ 
+ 2020-02-25  Mihail Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	* config/aarch64/iterators.md (VDQF_F16) Add V4BF and V8BF.
+ 	(VALL_F16): Likewise.
+ 	(VALLDI_F16): Likewise.
+ 	(Vtype): Likewise.
+ 	(Vetype): Likewise.
+ 	(vswap_width_name): Likewise.
+ 	(VSWAP_WIDTH): Likewise.
+ 	(Vel): Likewise.
+ 	(VEL): Likewise.
+ 	(q): Likewise.
+ 	* config/aarch64/arm_neon.h (vset_lane_bf16, vsetq_lane_bf16): New.
+ 	(vget_lane_bf16, vgetq_lane_bf16): New.
+ 	(vcreate_bf16): New.
+ 	(vdup_n_bf16, vdupq_n_bf16): New.
+ 	(vdup_lane_bf16, vdup_laneq_bf16): New.
+ 	(vdupq_lane_bf16, vdupq_laneq_bf16): New.
+ 	(vduph_lane_bf16, vduph_laneq_bf16): New.
+ 	(vreinterpret_bf16_u8, vreinterpretq_bf16_u8): New.
+ 	(vreinterpret_bf16_u16, vreinterpretq_bf16_u16): New.
+ 	(vreinterpret_bf16_u32, vreinterpretq_bf16_u32): New.
+ 	(vreinterpret_bf16_u64, vreinterpretq_bf16_u64): New.
+ 	(vreinterpret_bf16_s8, vreinterpretq_bf16_s8): New.
+ 	(vreinterpret_bf16_s16, vreinterpretq_bf16_s16): New.
+ 	(vreinterpret_bf16_s32, vreinterpretq_bf16_s32): New.
+ 	(vreinterpret_bf16_s64, vreinterpretq_bf16_s64): New.
+ 	(vreinterpret_bf16_p8, vreinterpretq_bf16_p8): New.
+ 	(vreinterpret_bf16_p16, vreinterpretq_bf16_p16): New.
+ 	(vreinterpret_bf16_p64, vreinterpretq_bf16_p64): New
+ 	(vreinterpret_bf16_f16, vreinterpretq_bf16_f16): New
+ 	(vreinterpret_bf16_f32, vreinterpretq_bf16_f32): New.
+ 	(vreinterpret_bf16_f64, vreinterpretq_bf16_f64): New.
+ 	(vreinterpretq_bf16_p128): New.
+ 	(vreinterpret_s8_bf16, vreinterpretq_s8_bf16): New.
+ 	(vreinterpret_s16_bf16, vreinterpretq_s16_bf16): New.
+ 	(vreinterpret_s32_bf16, vreinterpretq_s32_bf16): New.
+ 	(vreinterpret_s64_bf16, vreinterpretq_s64_bf16): New.
+ 	(vreinterpret_u8_bf16, vreinterpretq_u8_bf16): New.
+ 	(vreinterpret_u16_bf16, vreinterpretq_u16_bf16): New.
+ 	(vreinterpret_u32_bf16, vreinterpretq_u32_bf16): New.
+ 	(vreinterpret_u64_bf16, vreinterpretq_u64_bf16): New.
+ 	(vreinterpret_p8_bf16, vreinterpretq_p8_bf16): New.
+ 	(vreinterpret_p16_bf16, vreinterpretq_p16_bf16): New.
+ 	(vreinterpret_p64_bf16, vreinterpretq_p64_bf16): New.
+ 	(vreinterpret_f32_bf16, vreinterpretq_f32_bf16): New.
+ 	(vreinterpret_f64_bf16,vreinterpretq_f64_bf16): New.
+ 	(vreinterpret_f16_bf16,vreinterpretq_f16_bf16): New.
+ 	(vreinterpretq_p128_bf16): New.
+ 
+ 2020-02-25  Dennis Zhang  <dennis.zhang@arm.com>
+ 
+ 	* config/arm/arm_neon.h (vbfdot_f32, vbfdotq_f32): New
+ 	(vbfdot_lane_f32, vbfdotq_laneq_f32): New.
+ 	(vbfdot_laneq_f32, vbfdotq_lane_f32): New.
+ 	* config/arm/arm_neon_builtins.def (vbfdot): New entry.
+ 	(vbfdot_lanev4bf, vbfdot_lanev8bf): Likewise.
+ 	* config/arm/iterators.md (VSF2BF): New attribute.
+ 	* config/arm/neon.md (neon_vbfdot<VCVTF:mode>): New entry.
+ 	(neon_vbfdot_lanev4bf<VCVTF:mode>): Likewise.
+ 	(neon_vbfdot_lanev8bf<VCVTF:mode>): Likewise.
+ 
+ 2020-02-25  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/arm.md (required_for_purecode): New attribute.
+ 	(enabled): Handle required_for_purecode.
+ 	* config/arm/thumb1.md (thumb1_movsi_insn): Add alternative to
+ 	work with -mpure-code.
+ 
+ 2020-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/93908
+ 	* combine.c (find_split_point): For store into ZERO_EXTRACT, and src
+ 	with mask.
+ 
+ 2019-02-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* dwarf2out.c (dwarf2out_size_function): Run in early-DWARF mode.
+ 
+ 2020-02-25  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	* doc/install.texi (--enable-checking): Adjust wording.
+ 
+ 2020-02-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93868
+ 	* tree-vect-slp.c (slp_copy_subtree): New function.
+ 	(vect_attempt_slp_rearrange_stmts): Copy the SLP tree before
+ 	re-arranging stmts in it.
+ 
+ 2020-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/93874
+ 	* passes.c (pass_manager::dump_passes): Create a cgraph node for the
+ 	dummy function and remove it at the end.
+ 
+ 	PR translation/93864
+ 	* config/lm32/lm32.c (lm32_setup_incoming_varargs): Fix comment typo
+ 	paramter -> parameter.
+ 	* config/aarch64/aarch64.c (aarch64_is_extend_from_extract): Likewise.
+ 	* ipa-prop.h (struct ipa_agg_replacement_value): Likewise.
+ 
+ 2020-02-24  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	* doc/install.texi (--enable-checking): Properly document current
+ 	behavior.
+ 	(--enable-stage1-checking): Minor clarification about bootstrap.
+ 
+ 2020-02-24  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/93032
+ 	* doc/invoke.texi (-Wnanalyzer-tainted-array-index): Note that
+ 	-fanalyzer-checker=taint is also required.
+ 	(-fanalyzer-checker=): Note that providing this option enables the
+ 	given checker, and doing so may be required for checkers that are
+ 	disabled by default.
+ 
+ 2020-02-24  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/invoke.texi (-fanalyzer-verbosity=): "2" only shows
+ 	significant control flow events; add a "3" which shows all
+ 	control flow events; the old "3" becomes "4".
+ 
+ 2020-02-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/93582
+ 	* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Consider
+ 	pd.offset and pd.size to be counted in bits rather than bytes, add
+ 	support for maxsizei that is not a multiple of BITS_PER_UNIT and
+ 	handle bitfield stores and loads.
+ 	(vn_reference_lookup_3): Don't call ranges_known_overlap_p with
+ 	uncomparable quantities - bytes vs. bits.  Allow push_partial_def
+ 	on offsets/sizes that aren't multiple of BITS_PER_UNIT and adjust
+ 	pd.offset/pd.size to be counted in bits rather than bytes.
+ 	Formatting fix.  Rename shadowed len variable to buflen.
+ 
+ 2020-02-24  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 	    Kugan Vivekandarajah  <kugan.vivekanandarajah@linaro.org>
+ 
+ 	PR driver/47785
+ 	* gcc.c (putenv_COLLECT_AS_OPTIONS): New function.
+ 	(driver::main): Call putenv_COLLECT_AS_OPTIONS.
+ 	* opts-common.c (parse_options_from_collect_gcc_options): New function.
+ 	(prepend_xassembler_to_collect_as_options): Likewise.
+ 	* opts.h (parse_options_from_collect_gcc_options): Declare prototype.
+ 	(prepend_xassembler_to_collect_as_options): Likewise.
+ 	* lto-opts.c (lto_write_options): Stream assembler options
+ 	in COLLECT_AS_OPTIONS.
+ 	* lto-wrapper.c (xassembler_options_error): New static variable.
+ 	(get_options_from_collect_gcc_options): Move parsing options code to
+ 	parse_options_from_collect_gcc_options and call it.
+ 	(merge_and_complain): Validate -Xassembler options.
+ 	(append_compiler_options): Handle OPT_Xassembler.
+ 	(run_gcc): Append command line -Xassembler options to
+ 	collect_gcc_options.
+ 	* doc/invoke.texi: Add documentation about using Xassembler
+ 	options with LTO.
+ 
+ 2020-02-24  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv.c (riscv_emit_float_compare): Change the code gen
+ 	for LTGT.
+ 	(riscv_rtx_costs): Update cost model for LTGT.
+ 
+ 2020-02-23  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/93564
+ 	* ira-color.c (struct update_cost_queue_elem): New member start.
+ 	(queue_update_cost, get_next_update_cost): Add new arg start.
+ 	(allocnos_conflict_p): New function.
+ 	(update_costs_from_allocno): Add new arg conflict_cost_update_p.
+ 	Add checking conflicts with allocnos_conflict_p.
+ 	(update_costs_from_prefs, restore_costs_from_copies): Adjust
+ 	update_costs_from_allocno calls.
+ 	(update_conflict_hard_regno_costs): Add checking conflicts with
+ 	allocnos_conflict_p.  Adjust calls of queue_update_cost and
+ 	get_next_update_cost.
+ 	(assign_hard_reg): Adjust calls of queue_update_cost.  Add
+ 	debugging print.
+ 	(bucket_allocno_compare_func): Restore previous version.
+ 
+ 2020-02-21  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.c (pa_function_value): Fix check for word and
+ 	double-word size when handling aggregate return values.
+ 	* config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Fix to indicate
+ 	that homogeneous SFmode and DFmode aggregates are passed and returned
+ 	in general registers.
+ 
+ 2020-02-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR translation/93759
+ 	* opts.c (print_filtered_help): Translate help before appending
+ 	messages to it rather than after that.
+ 
+ 2020-02-19  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/PR92989
+ 	* lra-lives.c (process_bb_lives): Restore the original order
+ 	of the bb liveness update.  Call make_hard_regno_dead for each
+ 	register clobbered at the start of an EH receiver.
+ 
+ 2020-02-18  Feng Xue  <fxue@os.amperecomputing.com>
+ 
+ 	PR ipa/93763
+ 	* ipa-cp.c (self_recursively_generated_p): Mark self-dependent value as
+ 	self-recursively generated.
+ 
+ 2020-02-21  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/93860
+ 	* config/darwin-c.c (pop_field_alignment): Adjust quoting of
+ 	error string.
+ 
+ 2020-02-21  Mihail Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	* doc/sourcebuild.texi (arm_v8_1m_mve_ok):
+ 	Document new target supports option.
+ 
+ 2020-02-21  Dennis Zhang  <dennis.zhang@arm.com>
+ 
+ 	* config/arm/arm_neon.h (vmmlaq_s32, vmmlaq_u32, vusmmlaq_s32): New.
+ 	* config/arm/arm_neon_builtins.def (smmla, ummla, usmmla): New.
+ 	* config/arm/iterators.md (MATMUL): New iterator.
+ 	(sup): Add UNSPEC_MATMUL_S, UNSPEC_MATMUL_U, and UNSPEC_MATMUL_US.
+ 	(mmla_sfx): New attribute.
+ 	* config/arm/neon.md (neon_<sup>mmlav16qi): New.
+ 	* config/arm/unspecs.md (UNSPEC_MATMUL_S, UNSPEC_MATMUL_U): New.
+ 	(UNSPEC_MATMUL_US): New.
+ 
+ 2020-02-21  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	* config/arm/arm.md: Prevent scalar shifts from being used when big
+ 	endian is enabled.
+ 
+ 2020-02-21  Jan Hubicka  <hubicka@ucw.cz>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+   	PR tree-optimization/93586
+ 	* tree-ssa-alias.c (nonoverlapping_array_refs_p): Finish array walk
+ 	after mismatched array refs; do not sure type size information to
+ 	recover from unmatched referneces with !flag_strict_aliasing_p.
+ 
+ 2020-02-21  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (gather_load<mode>): Rename to ...
+ 	(gather_load<mode>v64si): ... this and set operand 2 to V64SI.
+ 	(scatter_store<mode>): Rename to ...
+ 	(scatter_store<mode>v64si): ... this and set operand 1 to V64SI.
+ 	(scatter<mode>_exec): Delete. Move contents ...
+ 	(mask_scatter_store<mode>): ... here, and rename that to ...
+ 	(mask_gather_load<mode>v64si): ... this. Set operand 2 to V64SI.
+ 	Remove mode conversion.
+ 	(mask_gather_load<mode>): Rename to ...
+ 	(mask_scatter_store<mode>v64si): ... this. Set operand 1 to V64SI.
+ 	Remove mode conversion.
+ 	* config/gcn/gcn.c (gcn_expand_scaled_offsets): Remove mode conversion.
+ 
+ 2020-02-21  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/93845
+ 	* tree-sra.c (verify_sra_access_forest): Only test access size of
+ 	scalar types.
+ 
+ 2020-02-21  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn.c (gcn_hard_regno_mode_ok): Align VGPR pairs.
+ 	* config/gcn/gcn-valu.md (addv64di3): Remove early-clobber.
+ 	(addv64di3_exec): Likewise.
+ 	(subv64di3): Likewise.
+ 	(subv64di3_exec): Likewise.
+ 	(addv64di3_zext): Likewise.
+ 	(addv64di3_zext_exec): Likewise.
+ 	(addv64di3_zext_dup): Likewise.
+ 	(addv64di3_zext_dup_exec): Likewise.
+ 	(addv64di3_zext_dup2): Likewise.
+ 	(addv64di3_zext_dup2_exec): Likewise.
+ 	(addv64di3_sext_dup2): Likewise.
+ 	(addv64di3_sext_dup2_exec): Likewise.
+ 	(<expander>v64di3): Likewise.
+ 	(<expander>v64di3_exec): Likewise.
+ 	(*<reduc_op>_dpp_shr_v64di): Likewise.
+ 	(*plus_carry_dpp_shr_v64di): Likewise.
+ 	* config/gcn/gcn.md (adddi3): Likewise.
+ 	(addptrdi3): Likewise.
+ 	(<expander>di3): Likewise.
+ 
+ 2020-02-21  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (vec_seriesv64di): Use gen_vec_duplicatev64di.
+ 
+ 2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Add SVE
+ 	support.  Use aarch64_emit_mult instead of emitting multiplication
+ 	instructions directly.
+ 	* config/aarch64/aarch64-sve.md (sqrt<mode>2, rsqrt<mode>2)
+ 	(@aarch64_rsqrte<mode>, @aarch64_rsqrts<mode>): New expanders.
+ 
+ 2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_emit_mult): New function.
+ 	(aarch64_emit_approx_div): Add SVE support.  Use aarch64_emit_mult
+ 	instead of emitting multiplication instructions directly.
+ 	* config/aarch64/iterators.md (SVE_COND_FP_BINARY_OPTAB): New iterator.
+ 	* config/aarch64/aarch64-sve.md (div<mode>3, @aarch64_frecpe<mode>)
+ 	(@aarch64_frecps<mode>): New expanders.
+ 
+ 2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (AARCH64_APPROX_MODE): Operate
+ 	on and produce uint64_ts rather than ints.
+ 	(AARCH64_APPROX_NONE, AARCH64_APPROX_ALL): Change to uint64_ts.
+ 	(cpu_approx_modes): Change the fields from unsigned int to uint64_t.
+ 
+ 2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Don't create
+ 	an unused xmsk register when handling approximate rsqrt.
+ 
+ 2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Fix inverted
+ 	flag_finite_math_only condition.
+ 
+ 2020-02-20  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/93828
+ 	* config/i386/mmx.md (*vec_extractv2sf_1): Match source operand
+ 	to destination operand for shufps alternative.
+ 	(*vec_extractv2si_1): Ditto.
+ 
+ 2020-02-20  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/93658
+ 	* config/rs6000/rs6000.c (rs6000_legitimate_address_p): Handle VSX
+ 	vector modes.
+ 
+ 2020-02-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR translation/93831
+ 	* config/darwin.c (darwin_override_options): Change 64b to 64-bit mode.
+ 
+ 2020-02-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR translation/93830
+ 	* common/config/avr/avr-common.c: Remote trailing "|".
+ 
+ 2020-02-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	* collect2.c (maybe_run_lto_and_relink): Fix typo in
+ 	comment.
+ 
+ 2020-02-19  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/93767
+ 	* tree-vect-data-refs.c (vect_compile_time_alias): Remove the
+ 	access-size bias from the offset calculations for negative strides.
+ 
+ 2020-02-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	* collect2.c (c_file, o_file): Make const again.
+ 	(ldout,lderrout, dump_ld_file): Remove.
+ 	(tool_cleanup): Avoid calling not signal-safe functions.
+ 	(maybe_run_lto_and_relink): Avoid possible signal handler
+ 	access to unintialzed memory (lto_o_files).
+ 	(main): Avoid leaking temp files in $TMPDIR.
+ 	Initialize c_file/o_file with concat, which avoids exposing
+ 	uninitialized memory to signal handler, which calls unlink(!).
+ 	Avoid calling maybe_unlink when the main function returns,
+ 	since the atexit handler is already doing this.
+ 	* collect2.h (dump_ld_file, ldout, lderrout): Remove.
+ 
+ 2020-02-19  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/93776
+ 	* tree-sra.c (create_access): Do not create zero size accesses.
+ 	(get_access_for_expr): Do not search for zero sized accesses.
+ 
+ 2020-02-19  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/93667
+ 	* tree-sra.c (scalarizable_type_p): Return false if record fields
+ 	do not follow wach other.
+ 
+ 2020-01-21  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv.c (riscv_output_move) Using fmv.x.w/fmv.w.x
+ 	rather than fmv.x.s/fmv.s.x.
+ 
+ 2020-02-18  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd-builtins.def
+ 	(intrinsic_vec_smult_lo_): New.
+ 	(intrinsic_vec_umult_lo_): Likewise.
+ 	(vec_widen_smult_hi_): Likewise.
+ 	(vec_widen_umult_hi_): Likewise.
+ 	* config/aarch64/aarch64-simd.md
+ 	(aarch64_intrinsic_vec_<su>mult_lo_<mode>): New.
+ 	* config/aarch64/arm_neon.h (vmull_high_s8): Use intrinsics.
+ 	(vmull_high_s16): Likewise.
+ 	(vmull_high_s32): Likewise.
+ 	(vmull_high_u8): Likewise.
+ 	(vmull_high_u16): Likewise.
+ 	(vmull_high_u32): Likewise.
+ 	(vmull_s8): Likewise.
+ 	(vmull_s16): Likewise.
+ 	(vmull_s32): Likewise.
+ 	(vmull_u8): Likewise.
+ 	(vmull_u16): Likewise.
+ 	(vmull_u32): Likewise.
+ 
+ 2020-02-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* value-prof.c (stream_out_histogram_value): Restore LTO PGO
+ 	bootstrap by missing removal of invalid sanity check.
+ 
+ 2020-02-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/92518
+ 	* ipa-icf-gimple.c (func_checker::compare_gimple_assign):
+ 	Always compare LHS of gimple_assign.
+ 
+ 2020-02-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/93583
+ 	* cgraph.c (cgraph_node::verify_node): Verify MALLOC attribute
+ 	and return type of functions.
+ 	* ipa-param-manipulation.c (ipa_param_adjustments::adjust_decl):
+ 	Drop MALLOC attribute for void functions.
+ 	* ipa-pure-const.c (funct_state_summary_t::duplicate): Drop
+ 	malloc_state for a new VOID clone.
+ 
+ 2020-02-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/92924
+ 	* common.opt: Add -fprofile-reproducibility.
+ 	* doc/invoke.texi: Document it.
+ 	* value-prof.c (dump_histogram_value):
+ 	Document and support behavior for counters[0]
+ 	being a negative value.
+ 	(get_nth_most_common_value): Handle negative
+ 	counters[0] in respect to flag_profile_reproducible.
+ 
+ 2020-02-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR ipa/93797
+ 	* cgraph.c (verify_speculative_call): Use speculative_id instead of
+ 	speculative_uid in messages.  Remove trailing whitespace from error
+ 	message.  Use num_speculative_call_targets instead of
+ 	num_speculative_targets in a message.
+ 	(cgraph_node::verify_node): Use call_stmt instead of cal_stmt in
+ 	edge messages and stmt instead of cal_stmt in reference message.
+ 
+ 	PR tree-optimization/93780
+ 	* tree-ssa.c (non_rewritable_lvalue_p): Check valid_vector_subparts_p
+ 	before calling build_vector_type.
+ 	(execute_update_addresses_taken): Likewise.
+ 
+ 	PR driver/93796
+ 	* params.opt (-param=ipa-max-switch-predicate-bounds=): Fix help
+ 	typo, functoin -> function.
+ 	* tree.c (free_lang_data_in_decl): Fix comment typo,
+ 	functoin -> function.
+ 	* ipa-visibility.c (cgraph_externally_visible_p): Likewise.
+ 
+ 2020-02-17  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic.c (print_any_cwe): Don't call get_cwe_url if URLs
+ 	won't be printed.
+ 	(print_option_information): Don't call get_option_url if URLs
+ 	won't be printed.
+ 
+ 2020-02-17  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* tree-emutls.c (new_emutls_decl, emutls_common_1): Complete
+ 	handling of register_common-less targets.
+ 
+ 2020-02-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/93760
+ 	* ipa-devirt.c (odr_types_equivalent_p): Fix grammar.
+ 
+ 2020-02-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR translation/93755
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+ 	Fix double quotes.
+ 
+ 2020-02-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR other/93756
+ 	* config/rx/elf.opt: Fix typo.
+ 
+ 2020-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c/86134
+ 	* opts-global.c (print_ignored_options): Use inform and
+ 	amend message.
+ 
+ 2020-02-17  Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	PR target/93047
+ 	* config/rs6000/rs6000.md (untyped_call): Add emit_clobber.
+ 
+ 2020-02-16  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/93743
+ 	* config/i386/i386.md (atan2xf3): Swap operands 1 and 2.
+ 	(atan2<mode>3): Update operand order in the call to gen_atan2xf3.
+ 
+ 2020-02-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	* doc/invoke.texi (C Dialect Options): Add -std=c++20.
+ 
+ 2020-02-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/93744
+ 	* match.pd (((m1 >/</>=/<= m2) * d -> (m1 >/</>=/<= m2) ? d : 0,
+ 	A - ((A - B) & -(C cmp D)) -> (C cmp D) ? B : A,
+ 	A + ((B - A) & -(C cmp D)) -> (C cmp D) ? B : A): For GENERIC, make
+ 	sure @2 in the first and @1 in the other patterns has no side-effects.
+ 
+ 2020-02-15  David Malcolm  <dmalcolm@redhat.com>
+ 	    Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	PR 87488
+ 	PR other/93168
+ 	* config.in (DIAGNOSTICS_URLS_DEFAULT): New define.
+ 	* configure.ac (--with-diagnostics-urls): New configuration
+ 	option, based on --with-diagnostics-color.
+ 	(DIAGNOSTICS_URLS_DEFAULT): New define.
+ 	* config.h: Regenerate.
+ 	* configure: Regenerate.
+ 	* diagnostic.c (diagnostic_urls_init): Handle -1 for
+ 	DIAGNOSTICS_URLS_DEFAULT from configure-time
+ 	--with-diagnostics-urls=auto-if-env by querying for a GCC_URLS
+ 	and TERM_URLS environment variable.
+ 	* diagnostic-url.h (diagnostic_url_format): New enum type.
+ 	(diagnostic_urls_enabled_p): rename to...
+ 	(determine_url_format): ... this, and change return type.
+ 	* diagnostic-color.c (parse_env_vars_for_urls): New helper function.
+ 	(auto_enable_urls): Disable URLs on xfce4-terminal, gnome-terminal,
+ 	the linux console, and mingw.
+ 	(diagnostic_urls_enabled_p): rename to...
+ 	(determine_url_format): ... this, and adjust.
+ 	* pretty-print.h (pretty_printer::show_urls): rename to...
+ 	(pretty_printer::url_format): ... this, and change to enum.
+ 	* pretty-print.c (pretty_printer::pretty_printer,
+ 	pp_begin_url, pp_end_url, test_urls): Adjust.
+ 	* doc/install.texi (--with-diagnostics-urls): Document the new
+ 	configuration option.
+ 	(--with-diagnostics-color): Document the existing interaction
+ 	with GCC_COLORS better.
+ 	* doc/invoke.texi (-fdiagnostics-urls): Add GCC_URLS and TERM_URLS
+ 	vindex reference.  Update description of defaults based on the above.
+ 	(-fdiagnostics-color): Update description of how -fdiagnostics-color
+ 	interacts with GCC_COLORS.
+ 
+ 2020-02-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/93704
+ 	* config/sparc/sparc.c (eligible_for_call_delay): Test HAVE_GNU_LD in
+ 	conjunction with TARGET_GNU_TLS in early return.
+ 
+ 2020-02-14  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* rtlanal.c (rtx_cost): Handle a SET up front. Avoid division if
+ 	the mode is not wider than UNITS_PER_WORD.
+ 
+ 2020-02-14  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/93516
+ 	* tree-sra.c (propagate_subaccesses_from_rhs): Do not create
+ 	access of the same type as the parent.
+ 	(propagate_subaccesses_from_lhs): Likewise.
+ 
+ 2020-02-14 Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	PR target/93724
+ 	* config/i386/avx512vbmi2intrin.h
+ 	(_mm512_shrdi_epi16, _mm512_mask_shrdi_epi16,
+ 	_mm512_maskz_shrdi_epi16, _mm512_shrdi_epi32,
+ 	_mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32,
+ 	_m512_shrdi_epi64, _m512_mask_shrdi_epi64,
+ 	_m512_maskz_shrdi_epi64, _mm512_shldi_epi16,
+ 	_mm512_mask_shldi_epi16, _mm512_maskz_shldi_epi16,
+ 	_mm512_shldi_epi32, _mm512_mask_shldi_epi32,
+ 	_mm512_maskz_shldi_epi32, _mm512_shldi_epi64,
+ 	_mm512_mask_shldi_epi64, _mm512_maskz_shldi_epi64): Fix typo
+ 	of lacking a closing parenthesis.
+ 	* config/i386/avx512vbmi2vlintrin.h
+ 	(_mm256_shrdi_epi16, _mm256_mask_shrdi_epi16,
+ 	_mm256_maskz_shrdi_epi16, _mm256_shrdi_epi32,
+ 	_mm256_mask_shrdi_epi32, _mm256_maskz_shrdi_epi32,
+ 	_m256_shrdi_epi64, _m256_mask_shrdi_epi64,
+ 	_m256_maskz_shrdi_epi64, _mm256_shldi_epi16,
+ 	_mm256_mask_shldi_epi16, _mm256_maskz_shldi_epi16,
+ 	_mm256_shldi_epi32, _mm256_mask_shldi_epi32,
+ 	_mm256_maskz_shldi_epi32, _mm256_shldi_epi64,
+ 	_mm256_mask_shldi_epi64, _mm256_maskz_shldi_epi64,
+ 	_mm_shrdi_epi16, _mm_mask_shrdi_epi16,
+ 	_mm_maskz_shrdi_epi16, _mm_shrdi_epi32,
+ 	_mm_mask_shrdi_epi32, _mm_maskz_shrdi_epi32,
+ 	_mm_shrdi_epi64, _mm_mask_shrdi_epi64,
+ 	_m_maskz_shrdi_epi64, _mm_shldi_epi16,
+ 	_mm_mask_shldi_epi16, _mm_maskz_shldi_epi16,
+ 	_mm_shldi_epi32, _mm_mask_shldi_epi32,
+ 	_mm_maskz_shldi_epi32, _mm_shldi_epi64,
+ 	_mm_mask_shldi_epi64, _mm_maskz_shldi_epi64): Ditto.
+ 
+ 2020-02-13  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/93656
+ 	* config/i386/i386.c (ix86_trampoline_init): Skip ENDBR32 at
+ 	the target function entry.
+ 
+ 2020-02-13  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* common/config/arc/arc-common.c (arc_option_optimization_table):
+ 	Disable if-conversion step when optimized for size.
+ 
+ 2020-02-13  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_conditional_register_usage): R0-R3 and
+ 	R12-R15 are always in ARCOMPACT16_REGS register class.
+ 	* config/arc/arc.opt (mq-class): Deprecate.
+ 	* config/arc/constraint.md ("q"): Remove dependency on mq-class
+ 	option.
+ 	* doc/invoke.texi (mq-class): Update text.
+ 	* common/config/arc/arc-common.c (arc_option_optimization_table):
+ 	Update list.
+ 
+ 2020-02-13  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_insn_cost): New function.
+ 	(TARGET_INSN_COST): Define.
+ 	* config/arc/arc.md (cost): New attribute.
+ 	(add_n): Use arc_nonmemory_operand.
+ 	(ashlsi3_insn): Likewise, also update constraints.
+ 	(ashrsi3_insn): Likewise.
+ 	(rotrsi3): Likewise.
+ 	(add_shift): Likewise.
+ 	* config/arc/predicates.md (arc_nonmemory_operand): New predicate.
+ 
+ 2020-02-13  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (mulsidi_600): Correctly select mlo/mhi
+ 	registers.
+ 	(umulsidi_600): Likewise.
+ 
+ 2020-02-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93696
+ 	* config/i386/avx512bitalgintrin.h (_mm512_mask_popcnt_epi8,
+ 	_mm512_mask_popcnt_epi16, _mm256_mask_popcnt_epi8,
+ 	_mm256_mask_popcnt_epi16, _mm_mask_popcnt_epi8,
+ 	_mm_mask_popcnt_epi16): Rename __B argument to __A and __A to __W,
+ 	pass __A to the builtin followed by __W instead of __A followed by
+ 	__B.
+ 	* config/i386/avx512vpopcntdqintrin.h (_mm512_mask_popcnt_epi32,
+ 	_mm512_mask_popcnt_epi64): Likewise.
+ 	* config/i386/avx512vpopcntdqvlintrin.h (_mm_mask_popcnt_epi32,
+ 	_mm256_mask_popcnt_epi32, _mm_mask_popcnt_epi64,
+ 	_mm256_mask_popcnt_epi64): Likewise.
+ 
+ 	PR tree-optimization/93582
+ 	* fold-const.h (shift_bytes_in_array_left,
+ 	shift_bytes_in_array_right): Declare.
+ 	* fold-const.c (shift_bytes_in_array_left,
+ 	shift_bytes_in_array_right): New function, moved from
+ 	gimple-ssa-store-merging.c, no longer static.
+ 	* gimple-ssa-store-merging.c (shift_bytes_in_array): Move
+ 	to gimple-ssa-store-merging.c and rename to shift_bytes_in_array_left.
+ 	(shift_bytes_in_array_right): Move to gimple-ssa-store-merging.c.
+ 	(encode_tree_to_bitpos): Use shift_bytes_in_array_left instead of
+ 	shift_bytes_in_array.
+ 	(verify_shift_bytes_in_array): Rename to ...
+ 	(verify_shift_bytes_in_array_left): ... this.  Use
+ 	shift_bytes_in_array_left instead of shift_bytes_in_array.
+ 	(store_merging_c_tests): Call verify_shift_bytes_in_array_left
+ 	instead of verify_shift_bytes_in_array.
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): For native_encode_expr
+ 	/ native_interpret_expr where the store covers all needed bits,
+ 	punt on PDP-endian, otherwise allow all involved offsets and sizes
+ 	not to be byte-aligned.
+ 
+ 	PR target/93673
+ 	* config/i386/sse.md (k<code><mode>): Drop mode from last operand and
+ 	use const_0_to_255_operand predicate instead of immediate_operand.
+ 	(avx512dq_fpclass<mode><mask_scalar_merge_name>,
+ 	avx512dq_vmfpclass<mode><mask_scalar_merge_name>,
+ 	vgf2p8affineinvqb_<mode><mask_name>,
+ 	vgf2p8affineqb_<mode><mask_name>): Drop mode from
+ 	const_0_to_255_operand predicated operands.
+ 
+ 2020-02-12  Jeff Law  <law@redhat.com>
+ 
+ 	* config/h8300/h8300.md (comparison shortening peepholes): Use
+ 	a mode iterator to merge the HImode and SImode peepholes.
+ 
+ 2020-02-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/93663
+ 	* real.c (is_even): Make static.  Function comment fix.
+ 	(is_halfway_below): Make static, don't assert R is not inf/nan,
+ 	instead return false for those.  Small formatting fixes.
+ 
+ 2020-02-12  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/93646
+ 	* tree-ssa-strlen.c (handle_builtin_stxncpy): Rename...
+ 	(handle_builtin_stxncpy_strncat): ...to this.  Change first argument.
+ 	Issue only -Wstringop-overflow strncat, never -Wstringop-truncation.
+ 	(strlen_check_and_optimize_call): Adjust callee name.
+ 
+ 2020-02-12  Jeff Law  <law@redhat.com>
+ 
+ 	* config/h8300/h8300.md (comparison shortening peepholes): Drop
+ 	(and (xor)) variant.  Combine other two into single peephole.
+ 
+ 2020-02-12  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR rtl-optimization/93565
+ 	* config/aarch64/aarch64.c (aarch64_rtx_costs): Add CTZ costs.
+ 
+ 2020-02-12  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md
+ 	(aarch64_zero_extend<GPI:mode>_reduc_plus_<VDQV_E:mode>): New pattern.
+ 	* config/aarch64/aarch64.md (popcount<mode>2): Use it instead of
+ 	generating separate ADDV and zero_extend patterns.
+ 	* config/aarch64/iterators.md (VDQV_E): New iterator.
+ 
+ 2020-02-12  Jeff Law  <law@redhat.com>
+ 
+ 	* config/h8300/h8300.md (cpymemsi, movmd): Remove dead patterns,
+ 	expanders, splits, etc.
+ 	(movmd_internal_<mode>, movmd splitter, movstr, movsd): Likewise.
+ 	(stpcpy_internal_<mode>, stpcpy splitter): Likewise.
+ 	(peepholes to convert QI/HI mode pushes to SI mode pushes): Likewise.
+ 	* config/h8300/h8300.c (h8300_swap_into_er6): Remove unused function.
+ 	(h8300_swap_out_of_er6, h8sx_emit_movmd): Likewise
+ 	* config/h8300/h8300-protos.h (h8300_swap_into_er6): Remove unused
+ 	function prototype.
+ 	(h8300_swap_out_of_er6, h8sx_emit_movmd): Likewise.
+ 
+ 2020-02-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93670
+ 	* config/i386/sse.md (VI48F_256_DQ): New mode iterator.
+ 	(avx512vl_vextractf128<mode>): Use it instead of VI48F_256.  Remove
+ 	TARGET_AVX512DQ from condition.
+ 	(vec_extract_lo_<mode><mask_name>): Use <mask_avx512dq_condition>
+ 	instead of <mask_mode512bit_condition> in condition.  If
+ 	TARGET_AVX512DQ is false, emit vextract*64x4 instead of
+ 	vextract*32x8.
+ 	(vec_extract_lo_<mode><mask_name>): Drop <mask_avx512dq_condition>
+ 	from condition.
+ 
+ 2020-02-12  Kewen Lin  <linkw@gcc.gnu.org>
+ 
+ 	PR target/91052
+ 	* ira.c (combine_and_move_insns): Skip multiple_sets def_insn.
+ 
+ 2020-02-12  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_debug_print_mode): Don't use sizeof
+ 	where strlen is more legible.
+ 	(rs6000_builtin_vectorized_libmass): Ditto.
+ 	(rs6000_print_options_internal): Ditto.
+ 
+ 2020-02-11  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/93683
+ 	* tree-ssa-alias.c (stmt_kills_ref_p): Avoid using LHS when not set.
+ 
+ 2020-02-11  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/predicates.md (cint34_operand): Rename the
+ 	-mprefixed-addr option to be -mprefixed.
+ 	* config/rs6000/rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): Rename
+ 	the -mprefixed-addr option to be -mprefixed.
+ 	(OTHER_FUTURE_MASKS): Likewise.
+ 	(POWERPC_MASKS): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Rename
+ 	the -mprefixed-addr option to be -mprefixed.  Change error
+ 	messages to refer to -mprefixed.
+ 	(num_insns_constant_gpr): Rename the -mprefixed-addr option to be
+ 	-mprefixed.
+ 	(rs6000_legitimate_offset_address_p): Likewise.
+ 	(rs6000_mode_dependent_address): Likewise.
+ 	(rs6000_opt_masks): Change the spelling of "-mprefixed-addr" to be
+ 	"-mprefixed" for target attributes and pragmas.
+ 	(address_to_insn_form): Rename the -mprefixed-addr option to be
+ 	-mprefixed.
+ 	(rs6000_adjust_insn_length): Likewise.
+ 	* config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Rename the
+ 	-mprefixed-addr option to be -mprefixed.
+ 	(ASM_OUTPUT_OPCODE): Likewise.
+ 	* config/rs6000/rs6000.md (prefixed insn attribute): Rename the
+ 	-mprefixed-addr option to be -mprefixed.
+ 	* config/rs6000/rs6000.opt (-mprefixed): Rename the
+ 	-mprefixed-addr option to be prefixed.  Change the option from
+ 	being undocumented to being documented.
+ 	* doc/invoke.texi (RS/6000 and PowerPC Options): Document the
+ 	-mprefixed option.  Update the -mpcrel documentation to mention
+ 	-mprefixed.
+ 
+ 2020-02-11  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* ira-conflicts.c (print_hard_reg_set): Correct output for sets
+ 	including FIRST_PSEUDO_REGISTER - 1.
+ 	* ira-color.c (print_hard_reg_set): Ditto.
+ 
+ 2020-02-11  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (enum arm_type_qualifiers): 
+ 	(USTERNOP_QUALIFIERS): New define.
+ 	(USMAC_LANE_QUADTUP_QUALIFIERS): New define.
+ 	(SUMAC_LANE_QUADTUP_QUALIFIERS): New define.
+ 	(arm_expand_builtin_args): Add case ARG_BUILTIN_LANE_QUADTUP_INDEX.
+ 	(arm_expand_builtin_1): Add qualifier_lane_quadtup_index.
+ 	* config/arm/arm_neon.h (vusdot_s32): New.
+ 	(vusdot_lane_s32): New.
+ 	(vusdotq_lane_s32): New.
+ 	(vsudot_lane_s32): New.
+ 	(vsudotq_lane_s32): New.
+ 	* config/arm/arm_neon_builtins.def (usdot, usdot_lane,sudot_lane): New.
+ 	* config/arm/iterators.md (DOTPROD_I8MM): New.
+ 	(sup, opsuffix): Add <us/su>.
+ 	* config/arm/neon.md (neon_usdot, <us/su>dot_lane: New.
+ 	* config/arm/unspecs.md (UNSPEC_DOT_US, UNSPEC_DOT_SU): New.
+ 
+ 2020-02-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93661
+ 	PR tree-optimization/93662
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Properly guard
+ 	tree_to_poly_int64.
+ 	* tree-sra.c (get_access_for_expr): Likewise.
+ 
+ 2020-02-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93637
+ 	* config/i386/sse.md (VI_256_AVX2): New mode iterator.
+ 	(vcond_mask_<mode><sseintvecmodelower>): Use it instead of VI_256.
+ 	Change condition from TARGET_AVX2 to TARGET_AVX.
+ 
+ 2020-02-10  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR other/93641
+ 	* config/darwin-c.c (darwin_cfstring_ref_p): Fix up last
+ 	argument of strncmp.
+ 
+ 2020-02-10  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	Try to generate zero-based comparisons.
+ 	* config/cris/cris.c (cris_reduce_compare): New function.
+ 	* config/cris/cris-protos.h  (cris_reduce_compare): Add prototype.
+ 	* config/cris/cris.md ("cbranch<mode>4", "cbranchdi4", "cstoredi4")
+ 	(cstore<mode>4"): Apply cris_reduce_compare in expanders.
+ 
+ 2020-02-10  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/91913
+ 	* config/arm/arm.md (movsi_compare0): Allow SP as a source register
+ 	in Thumb state and also as a destination in Arm state.  Add T16
+ 	variants.
+ 
+ 2020-02-10  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* md.texi (Define Subst): Match closing paren in example.
+ 
+ 2020-02-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/58218
+ 	PR other/93641
+ 	* config/i386/i386.c (x86_64_elf_section_type_flags): Fix up last
+ 	arguments of strncmp.
+ 
+ 2020-02-10  Feng Xue  <fxue@os.amperecomputing.com>
+ 
+ 	PR ipa/93203
+ 	* ipa-cp.c (ipcp_lattice::add_value): Add source with same call edge
+ 	but different source value.
+ 	(adjust_callers_for_value_intersection): New function.
+ 	(gather_edges_for_value): Adjust order of callers to let a
+ 	non-self-recursive caller be the first element.
+ 	(self_recursive_pass_through_p): Add a new parameter "simple", and
+ 	check generalized self-recursive pass-through jump function.
+ 	(self_recursive_agg_pass_through_p): Likewise.
+ 	(find_more_scalar_values_for_callers_subset): Compute value from
+ 	pass-through jump function for self-recursive.
+ 	(intersect_with_plats): Cleanup previous implementation code for value
+ 	itersection with self-recursive call edge.
+ 	(intersect_with_agg_replacements): Likewise.
+ 	(intersect_aggregates_with_edge): Deduce value from pass-through jump
+ 	function for self-recursive call edge.  Cleanup previous implementation
+ 	code for value intersection with self-recursive call edge.
+ 	(decide_whether_version_node): Remove dead callers and adjust order
+ 	to let a non-self-recursive caller be the first element.
+ 
+ 2020-02-09  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* recog.c: Move pass_split_before_sched2 code in front of
+ 	pass_split_before_regstack.
+ 	(pass_data_split_before_sched2): Rename pass to split3 from split4.
+ 	(pass_data_split_before_regstack): Rename pass to split4 from split3.
+ 	(rest_of_handle_split_before_sched2): Remove.
+ 	(pass_split_before_sched2::execute): Unconditionally call
+ 	split_all_insns.
+ 	(enable_split_before_sched2): New function.
+ 	(pass_split_before_sched2::gate): Use enable_split_before_sched2.
+ 	(pass_split_before_regstack::gate): Ditto.
+ 	* config/nds32/nds32.c (nds32_split_double_word_load_store_p):
+ 	Update name check for renamed split4 pass.
+ 	* config/sh/sh.c (register_sh_passes): Update pass insertion
+ 	point for renamed split4 pass.
+ 
+ 2020-02-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimplify.c (gimplify_adjust_omp_clauses_1): Promote
+ 	DECL_IN_CONSTANT_POOL variables into "omp declare target" to avoid
+ 	copying them around between host and target.
+ 
+ 2020-02-08  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR target/91927
+ 	* config/aarch64/aarch64-simd.md (movmisalign<mode>): Check
+ 	STRICT_ALIGNMENT also.
+ 
+ 2020-02-08  Jim Wilson  <jimw@sifive.com>
+ 
+ 	PR target/93532
+ 	* config/riscv/riscv.h (HARD_REGNO_CALLER_SAVE_MODE): Define.
+ 
+ 2020-02-08  Uroš Bizjak  <ubizjak@gmail.com>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/65782
+ 	* config/i386/i386.h (CALL_USED_REGISTERS): Make
+ 	xmm16-xmm31 call-used even in 64-bit ms-abi.
+ 
+ 2020-02-07  Dennis Zhang  <dennis.zhang@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd-builtins.def (simd_smmla): New entry.
+ 	(simd_ummla, simd_usmmla): Likewise.
+ 	* config/aarch64/aarch64-simd.md (aarch64_simd_<sur>mmlav16qi): New.
+ 	* config/aarch64/arm_neon.h (vmmlaq_s32, vmmlaq_u32): New.
+ 	(vusmmlaq_s32): New.
+ 
+ 2020-02-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/93519
+ 	* tree-inline.c (fold_marked_statements): Do a PRE walk,
+ 	skipping unreachable regions.
+ 	(optimize_inline_calls): Skip folding stmts when we didn't
+ 	inline.
+ 
+ 2020-02-07  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/85667
+ 	* config/i386/i386.c (function_arg_ms_64): Add a type argument.
+ 	Don't return aggregates with only SFmode and DFmode in SSE
+ 	register.
+ 	(ix86_function_arg): Pass arg.type to function_arg_ms_64.
+ 
+ 2020-02-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93122
+ 	* config/rs6000/rs6000-logue.c
+ 	(rs6000_emit_probe_stack_range_stack_clash): Always use gen_add3_insn,
+ 	if it fails, move rs into end_addr and retry.  Add
+ 	REG_FRAME_RELATED_EXPR note whenever it returns more than one insn or
+ 	the insn pattern doesn't describe well what exactly happens to
+ 	dwarf2cfi.c.
+ 
+ 	PR target/93594
+ 	* config/i386/predicates.md (avx_identity_operand): Remove.
+ 	* config/i386/sse.md (*avx_vec_concat<mode>_1): Remove.
+ 	(avx_<castmode><avxsizesuffix>_<castmode>,
+ 	avx512f_<castmode><avxsizesuffix>_256<castmode>): Change patterns to
+ 	a VEC_CONCAT of the operand and UNSPEC_CAST.
+ 	(avx512f_<castmode><avxsizesuffix>_<castmode>): Change pattern to
+ 	a VEC_CONCAT of VEC_CONCAT of the operand and UNSPEC_CAST with
+ 	UNSPEC_CAST.
+ 
+ 	PR target/93611
+ 	* config/i386/i386.c (ix86_lea_outperforms): Make sure to clear
+ 	recog_data.insn if distance_non_agu_define changed it.
+ 
+ 2020-02-06  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	PR target/93569
+ 	* config/rs6000/rs6000.c (reg_to_non_prefixed): Before ISA 3.0
+ 	we only had X-FORM (reg+reg) addressing for vectors.  Also before
+ 	ISA 3.0, we only had X-FORM addressing for scalars in the
+ 	traditional Altivec registers.
+ 
+ 2020-02-06  <zhongyunde@huawei.com>
+   	    Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/93561
+ 	* lra-assigns.c (spill_for): Check that tested hard regno is not out of
+ 	hard register range.
+ 
+ 2020-02-06  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (aarch64_movk<mode>): Add a type
+ 	attribute.
+ 
+ 2020-02-06  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_emit_set_long_const): Handle the case
+ 	where the low and the high 32 bits are equal to each other specially,
+ 	with an rldimi instruction.
+ 
+ 2020-02-06  Mihail Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	* config/arm/arm-cpus.in: Set profile M for armv8.1-m.main.
+ 
+ 2020-02-06  Mihail Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	* config/arm/arm-tables.opt: Regenerate.
+ 
+ 2020-02-06  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/87763
+ 	* config/aarch64/aarch64-protos.h (aarch64_movk_shift): Declare.
+ 	* config/aarch64/aarch64.c (aarch64_movk_shift): New function.
+ 	* config/aarch64/aarch64.md (aarch64_movk<mode>): New pattern.
+ 
+ 2020-02-06  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/87763
+ 	* config/aarch64/aarch64.md (*ashiftsi_extvdi_bfiz): New pattern.
+ 
+ 2020-02-06  Delia Burduv  <delia.burduv@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd-builtins.def
+ 	(bfmlaq): New built-in function.
+ 	(bfmlalb): New built-in function.
+ 	(bfmlalt): New built-in function.
+ 	(bfmlalb_lane): New built-in function.
+ 	(bfmlalt_lane): New built-in function.
+ 	* config/aarch64/aarch64-simd.md
+ 	(aarch64_bfmmlaqv4sf): New pattern.
+ 	(aarch64_bfmlal<bt>v4sf): New pattern.
+ 	(aarch64_bfmlal<bt>_lane<q>v4sf): New pattern.
+ 	* config/aarch64/arm_neon.h (vbfmmlaq_f32): New intrinsic.
+ 	(vbfmlalbq_f32): New intrinsic.
+ 	(vbfmlaltq_f32): New intrinsic.
+ 	(vbfmlalbq_lane_f32): New intrinsic.
+ 	(vbfmlaltq_lane_f32): New intrinsic.
+ 	(vbfmlalbq_laneq_f32): New intrinsic.
+ 	(vbfmlaltq_laneq_f32): New intrinsic.
+ 	* config/aarch64/iterators.md (BF_MLA): New int iterator.
+ 	(bt): New int attribute.
+ 
+ 2020-02-06  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*pushtf): Emit "#" instead of
+ 	calling gcc_unreachable in insn output.
+ 	(*pushxf): Ditto.
+ 	(*pushdf): Ditto.
+ 	(*pushsf_rex64): Ditto for alternatives other than 1.
+ 	(*pushsf): Ditto for alternatives other than 1.
+ 
+ 2020-02-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/91971
+ 	PR gcov-profile/93466
+ 	* coverage.c (coverage_init): Revert mangling of
+ 	path into filename.  It can lead to huge filename length.
+ 	Creation of subfolders seem more natural.
+ 
+ 2020-02-06  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
+ 
+ 	PR target/93300
+ 	* config/arm/arm.c (arm_block_arith_comp_libfuncs_for_mode): New.
+ 	(arm_init_libfuncs): Add BFmode support to block spurious BF libfuncs.
+ 	Use arm_block_arith_comp_libfuncs_for_mode for HFmode.
+ 
+ 2020-02-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93594
+ 	* config/i386/predicates.md (avx_identity_operand): New predicate.
+ 	* config/i386/sse.md (*avx_vec_concat<mode>_1): New
+ 	define_insn_and_split.
+ 
+ 	PR libgomp/93515
+ 	* omp-low.c (use_pointer_for_field): For nested constructs, also
+ 	look for map clauses on target construct.
+ 	(scan_omp_1_stmt) <case GIMPLE_OMP_TARGET>: Bump temporarily
+ 	taskreg_nesting_level.
+ 
+ 	PR libgomp/93515
+ 	* gimplify.c (gimplify_scan_omp_clauses) <do_notice>: If adding
+ 	shared clause, call omp_notice_variable on outer context if any.
+ 
+ 2020-02-05  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/92003
+ 	* symtab.c (symtab_node::nonzero_address): A DECL_COMDAT decl has
+ 	non-zero address even if weak and not yet defined.
+ 
+ 2020-02-05  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/92765
+ 	* gimple-fold.c (get_range_strlen_tree): Handle MEM_REF and PARM_DECL.
+ 	* tree-ssa-strlen.c (compute_string_length): Remove.
+ 	(determine_min_objsize): Remove.
+ 	(get_len_or_size): Add an argument.  Call get_range_strlen_dynamic.
+ 	Avoid using type size as the upper bound on string length.
+ 	(handle_builtin_string_cmp): Add an argument.  Adjust.
+ 	(strlen_check_and_optimize_call): Pass additional argument to
+ 	handle_builtin_string_cmp.
+ 
+ 2020-02-05  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*pushdi2_rex64 peephole2): Remove.
+ 	(*pushdi2_rex64 peephole2): Unconditionally split after
+ 	epilogue_completed.
+ 	(*ashl<mode>3_doubleword): Ditto.
+ 	(*<shift_insn><mode>3_doubleword): Ditto.
+ 
+ 2020-02-05  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	PR target/93568
+ 	* config/rs6000/rs6000.c (get_vector_offset): Fix
+ 
+ 2020-02-05  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/t-gcn-hsa (MULTILIB_OPTIONS): Use / not space.
+ 
+ 2020-02-05  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/analyzer.texi
+ 	(Special Functions for Debugging the Analyzer): Update description
+ 	of __analyzer_dump_exploded_nodes.
+ 
+ 2020-02-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/92190
+ 	* config/i386/i386-features.c (ix86_add_reg_usage_to_vzeroupper): Only
+ 	include sets and not clobbers in the vzeroupper pattern.
+ 	* config/i386/sse.md (*avx_vzeroupper): Require in insn condition that
+ 	the parallel has 17 (64-bit) or 9 (32-bit) elts.
+ 	(*avx_vzeroupper_1): New define_insn_and_split.
+ 
+ 	PR target/92190
+ 	* recog.c (pass_split_after_reload::gate): For STACK_REGS targets,
+ 	don't run when !optimize.
+ 	(pass_split_before_regstack::gate): For STACK_REGS targets, run even
+ 	when !optimize.
+ 
+ 2020-02-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/90648
+ 	* genmatch.c (dt_node::gen_kids_1): Emit number of argument
+ 	checks before matching calls.
+ 
+ 2020-02-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-ssa-alias.c (aliasing_matching_component_refs_p): Fix up
+ 	function comment typo.
+ 
+ 	PR middle-end/93555
+ 	* omp-simd-clone.c (expand_simd_clones): If simd_clone_mangle or
+ 	simd_clone_create failed when i == 0, adjust clone->nargs by
+ 	clone->inbranch.
+ 
+ 2020-02-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c++/92717
+ 	* doc/invoke.texi: Document that one should
+ 	not combine ASLR and -fpch.
+ 
+ 2020-02-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93538
+ 	* match.pd (addr EQ/NE ptr): Amend to handle &ptr->x EQ/NE ptr.
+ 
+ 2020-02-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/91123
+ 	* tree-ssa-sccvn.c (vn_walk_cb_data::finish): New method.
+ 	(vn_walk_cb_data::last_vuse): New member.
+ 	(vn_walk_cb_data::saved_operands): Likewsie.
+ 	(vn_walk_cb_data::~vn_walk_cb_data): Release saved_operands.
+ 	(vn_walk_cb_data::push_partial_def): Use finish.
+ 	(vn_reference_lookup_2): Update last_vuse and use finish if
+ 	we've saved operands.
+ 	(vn_reference_lookup_3): Use finish and update calls to
+ 	push_partial_defs everywhere.  When translating through
+ 	memcpy or aggregate copies save off operands and alias-set.
+ 	(eliminate_dom_walker::eliminate_stmt): Restore VN_WALKREWRITE
+ 	operation for redundant store removal.
+ 
+ 2020-02-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/92819
+ 	* tree-ssa-forwprop.c (simplify_vector_constructor): Avoid
+ 	generating more stmts than before.
+ 
+ 2020-02-04  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/arm/arm.c (arm_gen_far_branch): Move the function
+ 	outside of selftests.
+ 
+ 2020-02-03  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (adjust_vec_address_pcrel): New helper
+ 	function to adjust PC-relative vector addresses.
+ 	(rs6000_adjust_vec_address): Call adjust_vec_address_pcrel to
+ 	handle vectors with PC-relative addresses.
+ 
+ 2020-02-03  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (reg_to_non_prefixed): Add forward
+ 	reference.
+ 	(hard_reg_and_mode_to_addr_mask): Delete.
+ 	(rs6000_adjust_vec_address): If the original vector address
+ 	was REG+REG or REG+OFFSET and the element is not zero, do the add
+ 	of the elements in the original address before adding the offset
+ 	for the vector element.  Use address_to_insn_form to validate the
+ 	address using the register being loaded, rather than guessing
+ 	whether the address is a DS-FORM or DQ-FORM address.
+ 
+ 2020-02-03  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (get_vector_offset): New helper function
+ 	to calculate the offset in memory from the start of a vector of a
+ 	particular element.  Add code to keep the element number in
+ 	bounds if the element number is variable.
+ 	(rs6000_adjust_vec_address): Move calculation of offset of the
+ 	vector element to get_vector_offset.
+ 	(rs6000_split_vec_extract_var): Do not do the initial AND of
+ 	element here, move the code to get_vector_offset.
+ 
+ 2020-02-03  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_adjust_vec_address): Add some
+ 	gcc_asserts.
+ 
+ 2020-02-03  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/constraints.md: Improve documentation.
+ 
+ 2020-02-03  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/93548
+ 	* config/arm/t-arm: ($(srcdir)/config/arm/arm-tune.md)
+ 	($(srcdir)/config/arm/arm-tables.opt): Use move-if-change.
+ 
+ 2020-02-03  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config.gcc: Remove "carrizo" support.
+ 	* config/gcn/gcn-opts.h (processor_type): Likewise.
+ 	* config/gcn/gcn.c (gcn_omp_device_kind_arch_isa): Likewise.
+ 	* config/gcn/gcn.opt (gpu_type): Likewise.
+ 	* config/gcn/t-omp-device: Likewise.
+ 
+ 2020-02-03  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
+ 
+ 	PR target/91816
+ 	* config/arm/arm-protos.h: New function arm_gen_far_branch prototype.
+ 	* config/arm/arm.c (arm_gen_far_branch): New function
+ 	arm_gen_far_branch.
+ 	* config/arm/arm.md: Update b<cond> for Thumb2 range checks.
+ 
+ 2020-02-03  Julian Brown  <julian@codesourcery.com>
+ 	    Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* doc/invoke.texi: Update mention of OpenACC version to 2.6.
+ 
+ 2020-02-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93533
+ 	* config/s390/s390.md (popcounthi2_z196): Fix up expander to emit
+ 	valid RTL to sum up the lowest and second lowest bytes of the popcnt
+ 	result.
+ 
+ 2020-02-02  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/91333
+ 	* ira-color.c (struct allocno_color_data): Add member
+ 	hard_reg_prefs.
+ 	(init_allocno_threads): Set the member up.
+ 	(bucket_allocno_compare_func): Add compare hard reg
+ 	prefs.
+ 
+ 2020-01-31  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	nios2: Support for GOT-relative DW_EH_PE_datarel encoding.
+ 
+ 	* configure.ac [nios2-*-*]: Check HAVE_AS_NIOS2_GOTOFF_RELOCATION.
+ 	* config.in: Regenerated.
+ 	* configure: Regenerated.
+ 	* config/nios2/nios2.h (ASM_PREFERRED_EH_DATA_FORMAT): Fix handling
+ 	for PIC when HAVE_AS_NIOS2_GOTOFF_RELOCATION.
+ 	(ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): New.
+ 
+ 2020-02-01  Andrew Burgess  <andrew.burgess@embecosm.com>
+ 
+ 	* configure: Regenerate.
+ 
+ 2020-01-31  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/91333
+ 	* ira-color.c (bucket_allocno_compare_func): Move conflict hard
+ 	reg preferences comparison up.
+ 
+ 2020-01-31  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (TARGET_SVE_BF16): New macro.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.h (svcvtnt): Move to
+ 	aarch64-sve-builtins-base.h.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.cc (svcvtnt): Move to
+ 	aarch64-sve-builtins-base.cc.
+ 	* config/aarch64/aarch64-sve-builtins-base.h (svbfdot, svbfdot_lane)
+ 	(svbfmlalb, svbfmlalb_lane, svbfmlalt, svbfmlalt_lane, svbfmmla)
+ 	(svcvtnt): Declare.
+ 	* config/aarch64/aarch64-sve-builtins-base.cc (svbfdot, svbfdot_lane)
+ 	(svbfmlalb, svbfmlalb_lane, svbfmlalt, svbfmlalt_lane, svbfmmla)
+ 	(svcvtnt): New functions.
+ 	* config/aarch64/aarch64-sve-builtins-base.def (svbfdot, svbfdot_lane)
+ 	(svbfmlalb, svbfmlalb_lane, svbfmlalt, svbfmlalt_lane, svbfmmla)
+ 	(svcvtnt): New functions.
+ 	(svcvt): Add a form that converts f32 to bf16.
+ 	* config/aarch64/aarch64-sve-builtins-shapes.h (ternary_bfloat)
+ 	(ternary_bfloat_lane, ternary_bfloat_lanex2, ternary_bfloat_opt_n):
+ 	Declare.
+ 	* config/aarch64/aarch64-sve-builtins-shapes.cc (parse_element_type):
+ 	Treat B as bfloat16_t.
+ 	(ternary_bfloat_lane_base): New class.
+ 	(ternary_bfloat_def): Likewise.
+ 	(ternary_bfloat): New shape.
+ 	(ternary_bfloat_lane_def): New class.
+ 	(ternary_bfloat_lane): New shape.
+ 	(ternary_bfloat_lanex2_def): New class.
+ 	(ternary_bfloat_lanex2): New shape.
+ 	(ternary_bfloat_opt_n_def): New class.
+ 	(ternary_bfloat_opt_n): New shape.
+ 	* config/aarch64/aarch64-sve-builtins.cc (TYPES_cvt_bfloat): New macro.
+ 	* config/aarch64/aarch64-sve.md (@aarch64_sve_<sve_fp_op>vnx4sf)
+ 	(@aarch64_sve_<sve_fp_op>_lanevnx4sf): New patterns.
+ 	(@aarch64_sve_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>)
+ 	(@cond_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>): Likewise.
+ 	(*cond_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>): Likewise.
+ 	(@aarch64_sve_cvtnt<VNx8BF_ONLY:mode>): Likewise.
+ 	* config/aarch64/aarch64-sve2.md (@aarch64_sve2_cvtnt<mode>): Key
+ 	the pattern off the narrow mode instead of the wider one.
+ 	* config/aarch64/iterators.md (VNx8BF_ONLY): New mode iterator.
+ 	(UNSPEC_BFMLALB, UNSPEC_BFMLALT, UNSPEC_BFMMLA): New unspecs.
+ 	(sve_fp_op): Handle them.
+ 	(SVE_BFLOAT_TERNARY_LONG): New int itertor.
+ 	(SVE_BFLOAT_TERNARY_LONG_LANE): Likewise.
+ 
+ 2020-01-31  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/arm_sve.h: Include arm_bf16.h.
+ 	* config/aarch64/aarch64-modes.def (BF): Move definition before
+ 	VECTOR_MODES.  Remove separate VECTOR_MODES for V4BF and V8BF.
+ 	(SVE_MODES): Handle BF modes.
+ 	* config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
+ 	BF modes.
+ 	(aarch64_full_sve_mode): Likewise.
+ 	* config/aarch64/iterators.md (SVE_STRUCT): Add VNx16BF, VNx24BF
+ 	and VNx32BF.
+ 	(SVE_FULL, SVE_FULL_HSD, SVE_ALL): Add VNx8BF.
+ 	(Vetype, Vesize, Vctype, VEL, Vel, VEL_INT, V128, v128, vwcore)
+ 	(V_INT_EQUIV, v_int_equiv, V_FP_EQUIV, v_fp_equiv, vector_count)
+ 	(insn_length, VSINGLE, vsingle, VPRED, vpred, VDOUBLE): Handle the
+ 	new SVE BF modes.
+ 	* config/aarch64/aarch64-sve-builtins.h (TYPE_bfloat): New
+ 	type_class_index.
+ 	* config/aarch64/aarch64-sve-builtins.cc (TYPES_all_arith): New macro.
+ 	(TYPES_all_data): Add bf16.
+ 	(TYPES_reinterpret1, TYPES_reinterpret): Likewise.
+ 	(register_tuple_type): Increase buffer size.
+ 	* config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): New type.
+ 	(bf16): New type suffix.
+ 	* config/aarch64/aarch64-sve-builtins-base.def (svabd, svadd, svaddv)
+ 	(svcmpeq, svcmpge, svcmpgt, svcmple, svcmplt, svcmpne, svmad, svmax)
+ 	(svmaxv, svmin, svminv, svmla, svmls, svmsb, svmul, svsub, svsubr):
+ 	Change type from all_data to all_arith.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.def (svaddp, svmaxp)
+ 	(svminp): Likewise.
+ 
+ 2020-01-31  Dennis Zhang  <dennis.zhang@arm.com>
+ 	    Matthew Malcomson  <matthew.malcomson@arm.com>
+ 	    Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* doc/invoke.texi (f32mm): Document new AArch64 -march= extension.
+ 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
+ 	__ARM_FEATURE_SVE_MATMUL_INT8, __ARM_FEATURE_SVE_MATMUL_FP32 and
+ 	__ARM_FEATURE_SVE_MATMUL_FP64 as appropriate.  Don't define
+ 	__ARM_FEATURE_MATMUL_FP64.
+ 	* config/aarch64/aarch64-option-extensions.def (fp, simd, fp16)
+ 	(sve): Add AARCH64_FL_F32MM to the list of extensions that should
+ 	be disabled at the same time.
+ 	(f32mm): New extension.
+ 	* config/aarch64/aarch64.h (AARCH64_FL_F32MM): New macro.
+ 	(AARCH64_FL_F64MM): Bump to the next bit up.
+ 	(AARCH64_ISA_F32MM, TARGET_SVE_I8MM, TARGET_F32MM, TARGET_SVE_F32MM)
+ 	(TARGET_SVE_F64MM): New macros.
+ 	* config/aarch64/iterators.md (SVE_MATMULF): New mode iterator.
+ 	(UNSPEC_FMMLA, UNSPEC_SMATMUL, UNSPEC_UMATMUL, UNSPEC_USMATMUL)
+ 	(UNSPEC_TRN1Q, UNSPEC_TRN2Q, UNSPEC_UZP1Q, UNSPEC_UZP2Q, UNSPEC_ZIP1Q)
+ 	(UNSPEC_ZIP2Q): New unspeccs.
+ 	(DOTPROD_US_ONLY, PERMUTEQ, MATMUL, FMMLA): New int iterators.
+ 	(optab, sur, perm_insn): Handle the new unspecs.
+ 	(sve_fp_op): Handle UNSPEC_FMMLA.  Resort.
+ 	* config/aarch64/aarch64-sve.md (@aarch64_sve_ld1ro<mode>): Use
+ 	TARGET_SVE_F64MM instead of separate tests.
+ 	(@aarch64_<DOTPROD_US_ONLY:sur>dot_prod<vsi2qi>): New pattern.
+ 	(@aarch64_<DOTPROD_US_ONLY:sur>dot_prod_lane<vsi2qi>): Likewise.
+ 	(@aarch64_sve_add_<MATMUL:optab><vsi2qi>): Likewise.
+ 	(@aarch64_sve_<FMMLA:sve_fp_op><mode>): Likewise.
+ 	(@aarch64_sve_<PERMUTEQ:optab><mode>): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins.cc (TYPES_s_float): New macro.
+ 	(TYPES_s_float_hsd_integer, TYPES_s_float_sd_integer): Use it.
+ 	(TYPES_s_signed): New macro.
+ 	(TYPES_s_integer): Use it.
+ 	(TYPES_d_float): New macro.
+ 	(TYPES_d_data): Use it.
+ 	* config/aarch64/aarch64-sve-builtins-shapes.h (mmla): Declare.
+ 	(ternary_intq_uintq_lane, ternary_intq_uintq_opt_n, ternary_uintq_intq)
+ 	(ternary_uintq_intq_lane, ternary_uintq_intq_opt_n): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-shapes.cc (mmla_def): New class.
+ 	(svmmla): New shape.
+ 	(ternary_resize2_opt_n_base): Add TYPE_CLASS2 and TYPE_CLASS3
+ 	template parameters.
+ 	(ternary_resize2_lane_base): Likewise.
+ 	(ternary_resize2_base): New class.
+ 	(ternary_qq_lane_base): Likewise.
+ 	(ternary_intq_uintq_lane_def): Likewise.
+ 	(ternary_intq_uintq_lane): New shape.
+ 	(ternary_intq_uintq_opt_n_def): New class
+ 	(ternary_intq_uintq_opt_n): New shape.
+ 	(ternary_qq_lane_def): Inherit from ternary_qq_lane_base.
+ 	(ternary_uintq_intq_def): New class.
+ 	(ternary_uintq_intq): New shape.
+ 	(ternary_uintq_intq_lane_def): New class.
+ 	(ternary_uintq_intq_lane): New shape.
+ 	(ternary_uintq_intq_opt_n_def): New class.
+ 	(ternary_uintq_intq_opt_n): New shape.
+ 	* config/aarch64/aarch64-sve-builtins-base.h (svmmla, svsudot)
+ 	(svsudot_lane, svtrn1q, svtrn2q, svusdot, svusdot_lane, svusmmla)
+ 	(svuzp1q, svuzp2q, svzip1q, svzip2q): Declare.
+ 	* config/aarch64/aarch64-sve-builtins-base.cc (svdot_lane_impl):
+ 	Generalize to...
+ 	(svdotprod_lane_impl): ...this new class.
+ 	(svmmla_impl, svusdot_impl): New classes.
+ 	(svdot_lane): Update to use svdotprod_lane_impl.
+ 	(svmmla, svsudot, svsudot_lane, svtrn1q, svtrn2q, svusdot)
+ 	(svusdot_lane, svusmmla, svuzp1q, svuzp2q, svzip1q, svzip2q): New
+ 	functions.
+ 	* config/aarch64/aarch64-sve-builtins-base.def (svmmla): New base
+ 	function, with no types defined.
+ 	(svmmla, svusmmla, svsudot, svsudot_lane, svusdot, svusdot_lane): New
+ 	AARCH64_FL_I8MM functions.
+ 	(svmmla): New AARCH64_FL_F32MM function.
+ 	(svld1ro): Depend only on AARCH64_FL_F64MM, not on AARCH64_FL_V8_6.
+ 	(svmmla, svtrn1q, svtrn2q, svuz1q, svuz2q, svzip1q, svzip2q): New
+ 	AARCH64_FL_F64MM function.
+ 	(REQUIRED_EXTENSIONS):
+ 
+ 2020-01-31  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (addv64di3_exec): Allow one '0' in each
+ 	alternative only.
+ 
+ 2020-01-31  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*movoi_internal_avx): Do not check for
+ 	TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL.  Remove MODE_V8SF handling.
+ 	(*movti_internal): Do not check for
+ 	TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL.
+ 	(*movtf_internal): Move check for TARGET_SSE2 and size optimization
+ 	just after check for TARGET_AVX.
+ 	(*movdf_internal): Ditto.
+ 	* config/i386/mmx.md (*mov<mode>_internal): Do not check for
+ 	TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL.
+ 	* config/i386/sse.md (mov<mode>_internal): Only check
+ 	TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL with V2DFmode.  Move check
+ 	for TARGET_SSE2 and size optimization just after check for TARGET_AVX.
+ 	(<sse>_andnot<mode>3<mask_name>): Move check for
+ 	TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL after check for TARGET_AVX.
+ 	(<code><mode>3<mask_name>): Ditto.
+ 	(*andnot<mode>3): Ditto.
+ 	(*andnottf3): Ditto.
+ 	(*<code><mode>3): Ditto.
+ 	(*<code>tf3): Ditto.
+ 	(*andnot<VI:mode>3): Remove
+ 	TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL handling.
+ 	(<mask_codefor><code><VI48_AVX_AVX512F:mode>3<mask_name>): Ditto.
+ 	(*<code><VI12_AVX_AVX512F:mode>3): Ditto.
+ 	(sse4_1_blendv<ssemodesuffix>): Ditto.
+ 	* config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL):
+ 	Explain that tune applies to 128bit instructions only.
+ 
+ 2020-01-31  Kwok Cheung Yeung  <kcy@codesourcery.com>
+ 
+ 	* config/gcn/mkoffload.c (process_asm): Add sgpr_count and vgpr_count
+ 	to definition of hsa_kernel_description.  Parse assembly to find SGPR
+ 	and VGPR count of kernel and store in hsa_kernel_description.
+ 
+ 2020-01-31  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR rtl-optimization/91838
+ 	* simplify-rtx.c (simplify_binary_operation_1): Update LSHIFTRT case
+ 	to truncate if allowed or reject combination.
+ 
+ 2020-01-31  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (get_iv): Use sizetype for zero-step.
+ 	(find_inv_vars_cb): Likewise.
+ 
+ 2020-01-31  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* calls.c (special_function_p): Split out the check for DECL_NAME
+ 	being non-NULL and fndecl being extern at file scope into a
+ 	new maybe_special_function_p and call it.  Drop check for fndecl
+ 	being non-NULL that was after a usage of DECL_NAME (fndecl).
+ 	* tree.h (maybe_special_function_p): New inline function.
+ 
+ 2020-01-30  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (gather<mode>_exec): Move contents ...
+ 	(mask_gather_load<mode>): ... here, and zero-initialize the
+ 	destination.
+ 	(maskload<mode>di): Zero-initialize the destination.
+ 	* config/gcn/gcn.c:
+ 
+ 2020-01-30  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/93356
+ 	* doc/analyzer.texi (Limitations): Note that constraints on
+ 	floating-point values are currently ignored.
+ 
+ 2020-01-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR lto/93384
+ 	* symtab.c (symtab_node::noninterposable_alias): If localalias
+ 	already exists, but is not usable, append numbers after it until
+ 	a unique name is found.  Formatting fix.
+ 
+ 	PR middle-end/93505
+ 	* combine.c (simplify_comparison) <case ROTATE>: Punt on out of range
+ 	rotate counts.
+ 
+ 2020-01-30  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn.c (print_operand): Handle LTGT.
+ 	* config/gcn/predicates.md (gcn_fp_compare_operator): Allow ltgt.
+ 
+ 2020-01-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-pretty-print.c (dump_generic_node): Wrap VECTOR_CST
+ 	and CONSTRUCTOR in _Literal (type) with TDF_GIMPLE.
+ 
+ 2020-01-30  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.c (pa_elf_select_rtx_section): Place function pointers
+ 	without a DECL in .data.rel.ro.local.
+ 
+ 2020-01-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93494
+ 	* config/arm/arm.md (uaddvdi4): Actually emit what gen_uaddvsi4
+ 	returned.
+ 
+ 	PR target/91824
+ 	* config/i386/sse.md
+ 	(*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_zext): Renamed to ...
+ 	(*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext): ... this.  Use
+ 	any_extend code iterator instead of always zero_extend.
+ 	(*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_zext_lt): Renamed to ...
+ 	(*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_lt): ... this.
+ 	Use any_extend code iterator instead of always zero_extend.
+ 	(*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_zext_shift): Renamed to ...
+ 	(*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_shift): ... this.
+ 	Use any_extend code iterator instead of always zero_extend.
+ 	(*sse2_pmovmskb_ext): New define_insn.
+ 	(*sse2_pmovmskb_ext_lt): New define_insn_and_split.
+ 
+ 	PR target/91824
+ 	* config/i386/i386.md (*popcountsi2_zext): New define_insn_and_split.
+ 	(*popcountsi2_zext_falsedep): New define_insn.
+ 
+ 2020-01-30  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+ 
+ 	* config.in: Regenerated.
+ 	* configure: Regenerated.
+ 
+ 2020-01-29  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR bootstrap/93409
+ 	* config/gcn/gcn-hsa.h (ASM_SPEC): Add -mattr=-code-object-v3 as
+ 	LLVM's assembler changed the default in version 9.
+ 
+ 2020-01-24  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/89689
+ 	* builtins.def (BUILT_IN_OBJECT_SIZE): Make it const rather than pure.
+ 
+ 2020-01-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Revert:
+ 
+ 	2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/87763
+ 	* simplify-rtx.c (simplify_truncation): Extend sign/zero_extract
+ 	simplification to handle subregs as well as bare regs.
+ 	* config/i386/i386.md (*testqi_ext_3): Match QI extracts too.
+ 
+ 2020-01-29  Joel Hutton  <Joel.Hutton@arm.com>
+ 
+ 	PR target/93221
+ 	* ira.c (ira): Revert use of simplified LRA algorithm.
+ 
+ 2020-01-29  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/92706
+ 	* tree-sra.c (struct access): Fields first_link, last_link,
+ 	next_queued and grp_queued renamed to first_rhs_link, last_rhs_link,
+ 	next_rhs_queued and grp_rhs_queued respectively, new fields
+ 	first_lhs_link, last_lhs_link, next_lhs_queued and grp_lhs_queued.
+ 	(struct assign_link): Field next renamed to next_rhs, new field
+ 	next_lhs.  Updated comment.
+ 	(work_queue_head): Renamed to rhs_work_queue_head.
+ 	(lhs_work_queue_head): New variable.
+ 	(add_link_to_lhs): New function.
+ 	(relink_to_new_repr): Also relink LHS lists.
+ 	(add_access_to_work_queue): Renamed to add_access_to_rhs_work_queue.
+ 	(add_access_to_lhs_work_queue): New function.
+ 	(pop_access_from_work_queue): Renamed to
+ 	pop_access_from_rhs_work_queue.
+ 	(pop_access_from_lhs_work_queue): New function.
+ 	(build_accesses_from_assign): Also add links to LHS lists and to LHS
+ 	work_queue.
+ 	(child_would_conflict_in_lacc): Renamed to
+ 	child_would_conflict_in_acc.  Adjusted parameter names.
+ 	(create_artificial_child_access): New parameter set_grp_read, use it.
+ 	(subtree_mark_written_and_enqueue): Renamed to
+ 	subtree_mark_written_and_rhs_enqueue.
+ 	(propagate_subaccesses_across_link): Renamed to
+ 	propagate_subaccesses_from_rhs.
+ 	(propagate_subaccesses_from_lhs): New function.
+ 	(propagate_all_subaccesses): Also propagate subaccesses from LHSs to
+ 	RHSs.
+ 
+ 2020-01-29  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/92706
+ 	* tree-sra.c (struct access): Adjust comment of
+ 	grp_total_scalarization.
+ 	(find_access_in_subtree): Look for single children spanning an entire
+ 	access.
+ 	(scalarizable_type_p): Allow register accesses, adjust callers.
+ 	(completely_scalarize): Remove function.
+ 	(scalarize_elem): Likewise.
+ 	(create_total_scalarization_access): Likewise.
+ 	(sort_and_splice_var_accesses): Do not track total scalarization
+ 	flags.
+ 	(analyze_access_subtree): New parameter totally, adjust to new meaning
+ 	of grp_total_scalarization.
+ 	(analyze_access_trees): Pass new parameter to analyze_access_subtree.
+ 	(can_totally_scalarize_forest_p): New function.
+ 	(create_total_scalarization_access): Likewise.
+ 	(create_total_access_and_reshape): Likewise.
+ 	(total_should_skip_creating_access): Likewise.
+ 	(totally_scalarize_subtree): Likewise.
+ 	(analyze_all_variable_accesses): Perform total scalarization after
+ 	subaccess propagation using the new functions above.
+ 	(initialize_constant_pool_replacements): Output initializers by
+ 	traversing the access tree.
+ 
+ 2020-01-29  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* tree-sra.c (verify_sra_access_forest): New function.
+ 	(verify_all_sra_access_forests): Likewise.
+ 	(create_artificial_child_access): Set parent.
+ 	(analyze_all_variable_accesses): Call the verifier.
+ 
+ 2020-01-28  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cgraph.c (cgraph_edge::resolve_speculation): Only lookup direct edge
+ 	if called on indirect edge.
+ 	(cgraph_edge::redirect_call_stmt_to_callee): Lookup indirect edge of
+ 	speculative call if needed.
+ 
+ 2020-01-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93428
+ 	* tree-vect-slp.c (vect_build_slp_tree_2): Compute the load
+ 	permutation when the load node is created.
+ 	(vect_analyze_slp_instance): Re-use it here.
+ 
+ 2020-01-28  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-prop.c (update_indirect_edges_after_inlining): Fix warning.
+ 
+ 2020-01-28  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/93272
+ 	* ira-lives.c (process_out_of_region_eh_regs): New function.
+ 	(process_bb_node_lives): Call it.
+ 
+ 2020-01-28  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* coverage.c (read_counts_file): Make error message lowercase.
+ 
+ 2020-01-28  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* profile-count.c (profile_quality_display_names): Fix ordering.
+ 
+ 2020-01-28  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR lto/93318	
+ 	* cgraph.c (cgraph_add_edge_to_call_site_hash): Update call site
+ 	hash only when edge is first within the sequence.
+ 	(cgraph_edge::set_call_stmt): Update handling of speculative calls.
+ 	(symbol_table::create_edge): Do not set target_prob.
+ 	(cgraph_edge::remove_caller): Watch for speculative calls when updating
+ 	the call site hash.
+ 	(cgraph_edge::make_speculative): Drop target_prob parameter.
+ 	(cgraph_edge::speculative_call_info): Remove.
+ 	(cgraph_edge::first_speculative_call_target): New member function.
+ 	(update_call_stmt_hash_for_removing_direct_edge): New function.
+ 	(cgraph_edge::resolve_speculation): Rewrite to new API.
+ 	(cgraph_edge::speculative_call_for_target): New member function.
+ 	(cgraph_edge::make_direct): Rewrite to new API; fix handling of
+ 	multiple speculation targets.
+ 	(cgraph_edge::redirect_call_stmt_to_callee): Likewise; fix updating
+ 	of profile.
+ 	(verify_speculative_call): Verify that targets form an interval.
+ 	* cgraph.h (cgraph_edge::speculative_call_info): Remove.
+ 	(cgraph_edge::first_speculative_call_target): New member function.
+ 	(cgraph_edge::next_speculative_call_target): New member function.
+ 	(cgraph_edge::speculative_call_target_ref): New member function.
+ 	(cgraph_edge;:speculative_call_indirect_edge): New member funtion.
+ 	(cgraph_edge): Remove target_prob.
+ 	* cgraphclones.c (cgraph_node::set_call_stmt_including_clones):
+ 	Fix handling of speculative calls.
+ 	* ipa-devirt.c (ipa_devirt): Fix handling of speculative cals.
+ 	* ipa-fnsummary.c (analyze_function_body): Likewise.
+ 	* ipa-inline.c (speculation_useful_p): Use new speculative call API.
+ 	* ipa-profile.c (dump_histogram): Fix formating.
+ 	(ipa_profile_generate_summary): Watch for overflows.
+ 	(ipa_profile): Do not require probablity to be 1/2; update to new API.
+ 	* ipa-prop.c (ipa_make_edge_direct_to_target): Update to new API.
+ 	(update_indirect_edges_after_inlining): Update to new API.
+ 	* ipa-utils.c (ipa_merge_profiles): Rewrite merging of speculative call
+ 	profiles.
+ 	* profile-count.h: (profile_probability::adjusted): New.
+ 	* tree-inline.c (copy_bb): Update to new speculative call API; fix
+ 	updating of profile.
+ 	* value-prof.c (gimple_ic_transform): Rename to ...
+ 	(dump_ic_profile): ... this one; update dumping.
+ 	(stream_in_histogram_value): Fix formating.
+ 	(gimple_value_profile_transformations): Update.
+ 
+ 2020-01-28  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/91461
+ 	* config/i386/i386.md (*movoi_internal_avx): Remove
+ 	TARGET_SSE_TYPELESS_STORES check.
+ 	(*movti_internal): Prefer TARGET_AVX over
+ 	TARGET_SSE_TYPELESS_STORES.
+ 	(*movtf_internal): Likewise.
+ 	* config/i386/sse.md (mov<mode>_internal): Prefer TARGET_AVX over
+ 	TARGET_SSE_TYPELESS_STORES.  Remove "<MODE_SIZE> == 16" check
+ 	from TARGET_SSE_TYPELESS_STORES.
+ 
+ 2020-01-28  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic-core.h (warning_at): Rename overload to...
+ 	(warning_meta): ...this.
+ 	(emit_diagnostic_valist): Delete decl of overload taking
+ 	diagnostic_metadata.
+ 	* diagnostic.c (emit_diagnostic_valist): Likewise for defn.
+ 	(warning_at): Rename overload taking diagnostic_metadata to...
+ 	(warning_meta): ...this.
+ 
+ 2020-01-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93439
+ 	* tree-parloops.c (create_loop_fn): Move clique bookkeeping...
+ 	* tree-cfg.c (move_sese_region_to_fn): ... here.
+ 	(verify_types_in_gimple_reference): Verify used cliques are
+ 	tracked.
+ 
+ 2020-01-28  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/91399
+ 	* config/i386/i386-options.c (set_ix86_tune_features): Add an
+ 	argument of a pointer to struct gcc_options and pass it to
+ 	parse_mtune_ctrl_str.
+ 	(ix86_function_specific_restore): Pass opts to
+ 	set_ix86_tune_features.
+ 	(ix86_option_override_internal): Likewise.
+ 	(parse_mtune_ctrl_str): Add an argument of a pointer to struct
+ 	gcc_options and use it for x_ix86_tune_ctrl_string.
+ 
+ 2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/87763
+ 	* simplify-rtx.c (simplify_truncation): Extend sign/zero_extract
+ 	simplification to handle subregs as well as bare regs.
+ 	* config/i386/i386.md (*testqi_ext_3): Match QI extracts too.
+ 
+ 2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vect-loop.c (vectorizable_reduction): Fail gracefully
+ 	for reduction chains that (now) include a call.
+ 
+ 2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/92822
+ 	* tree-ssa-forwprop.c (simplify_vector_constructor): When filling
+ 	out the don't-care elements of a vector whose significant elements
+ 	are duplicates, make the don't-care elements duplicates too.
+ 
+ 2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/93434
+ 	* tree-predcom.c (split_data_refs_to_components): Record which
+ 	components have had aliasing loads removed.  Prevent store-store
+ 	commoning for all such components.
+ 
+ 2020-01-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93418
+ 	* config/i386/i386.c (ix86_fold_builtin) <do_shift>: If mask is not
+ 	-1 or is_vshift is true, use new_vector with number of elts npatterns
+ 	rather than new_unary_operation.
+ 
+ 	PR tree-optimization/93454
+ 	* gimple-fold.c (fold_array_ctor_reference): Perform
+ 	elt_size.to_uhwi () just once, instead of calling it in every
+ 	iteration.  Punt if that value is above size of the temporary
+ 	buffer.  Decrease third native_encode_expr argument when
+ 	bufoff + elt_sz is above size of buf.
+ 
+ 2020-01-27  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* config/mips/mips.c (mips_declare_object_name)
+ 	[USE_GNU_UNIQUE_OBJECT]: Support use of gnu_unique_object.
+ 
+ 2020-01-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/93403
+ 	* tree-profile.c (gimple_init_gcov_profiler): Generate
+ 	both __gcov_indirect_call_profiler_v4 and
+ 	__gcov_indirect_call_profiler_v4_atomic.
+ 
+ 2020-01-27  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/92822
+ 	* config/aarch64/aarch64-simd.md (aarch64_get_half<mode>): New
+ 	expander.
+ 	(@aarch64_split_simd_mov<mode>): Use it.
+ 	(aarch64_simd_mov_from_<mode>low): Add a GPR alternative.
+ 	Leave the vec_extract patterns to handle 2-element vectors.
+ 	(aarch64_simd_mov_from_<mode>high): Likewise.
+ 	(vec_extract<VQMOV_NO2E:mode><Vhalf>): New expander.
+ 	(vec_extractv2dfv1df): Likewise.
+ 
+ 2020-01-27  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_if_then_else_costs): Match
+ 	jump conditions for *compare_condjump<GPI:mode>.
+ 
+ 2020-01-27  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/93276
+ 	* digraph.cc (test_edge::test_edge): Specify template for base
+ 	class initializer.
+ 
+ 2020-01-27  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_rtx_costs): Update mul64 cost.
+ 
+ 2020-01-27  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc-protos.h (gen_mlo): Remove.
+ 	(gen_mhi): Likewise.
+ 	* config/arc/arc.c (AUX_MULHI): Define.
+ 	(arc_must_save_reister): Special handling for r58/59.
+ 	(arc_compute_frame_size): Consider mlo/mhi registers.
+ 	(arc_save_callee_saves): Emit fp/sp move only when emit_move
+ 	paramter is true.
+ 	(arc_conditional_register_usage): Remove TARGET_BIG_ENDIAN from
+ 	mlo/mhi name selection.
+ 	(arc_restore_callee_saves): Don't early restore blink when ISR.
+ 	(arc_expand_prologue): Add mlo/mhi saving.
+ 	(arc_expand_epilogue): Add mlo/mhi restoring.
+ 	(gen_mlo): Remove.
+ 	(gen_mhi): Remove.
+ 	* config/arc/arc.h (DBX_REGISTER_NUMBER): Correct register
+ 	numbering when MUL64 option is used.
+ 	(DWARF2_FRAME_REG_OUT): Define.
+ 	* config/arc/arc.md (arc600_stall): New pattern.
+ 	(VUNSPEC_ARC_ARC600_STALL): Define.
+ 	(mulsi64): Use correct mlo/mhi registers.
+ 	(mulsi_600): Clean it up.
+ 	* config/arc/predicates.md (mlo_operand): Remove any dependency on
+ 	TARGET_BIG_ENDIAN.
+ 	(mhi_operand): Likewise.
+ 
+ 2020-01-27  Claudiu Zissulescu  <claziss@synopsys.com>
+ 	    Petro Karashchenko  <petro.karashchenko@ring.com>
+ 
+ 	* config/arc/arc.c (arc_is_uncached_mem_p): Check struct
+ 	attributes if needed.
+ 	(prepare_move_operands): Generate special unspec instruction for
+ 	direct access.
+ 	(arc_isuncached_mem_p): Propagate uncached attribute to each
+ 	structure member.
+ 	* config/arc/arc.md (VUNSPEC_ARC_LDDI): Define.
+ 	(VUNSPEC_ARC_STDI): Likewise.
+ 	(ALLI): New mode iterator.
+ 	(mALLI): New mode attribute.
+ 	(lddi): New instruction pattern.
+ 	(stdi): Likewise.
+ 	(stdidi_split): Split instruction for architectures which are not
+ 	supporting ll64 option.
+ 	(lddidi_split): Likewise.
+ 
+ 2020-01-27  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/92989
+ 	* lra-lives.c (process_bb_lives): Update the live-in set before
+ 	processing additional clobbers.
+ 
+ 2020-01-27  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/93170
+ 	* cselib.c (cselib_invalidate_regno_val): New function, split out
+ 	from...
+ 	(cselib_invalidate_regno): ...here.
+ 	(cselib_invalidated_by_call_p): New function.
+ 	(cselib_process_insn): Iterate over all the hard-register entries in
+ 	REG_VALUES and invalidate any that cross call-clobbered registers.
+ 
+ 2020-01-27  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* dojump.c (split_comparison): Use HONOR_NANS rather than
+ 	HONOR_SNANS when splitting LTGT.
+ 
+ 2020-01-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR driver/91220
+ 	* opts.c (print_filtered_help): Exclude language-specific
+ 	options from --help=common unless enabled in all FEs.
+ 
+ 2020-01-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	* opts.c (print_help): Exclude params from
+ 	all except --help=param.
+ 
+ 2020-01-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/93274
+ 	* config/i386/i386-features.c (make_resolver_func):
+ 	Align the code with ppc64 target implementation.
+ 	Do not generate a unique name for resolver function.
+ 
+ 2020-01-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93397
+ 	* tree-vect-slp.c (vect_analyze_slp_instance): Delay
+ 	converted reduction chain SLP graph adjustment.
+ 
+ 2020-01-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR sanitizer/93436
+ 	* sanopt.c (sanitize_rewrite_addressable_params): Avoid crash on
+ 	null DECL_NAME.
+ 
+ 2020-01-26  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/92601
+ 	* tree.c (verify_type_variant): Only verify TYPE_NEEDS_CONSTRUCTING
+ 	of complete types.
+ 
+ 2020-01-26  Darius Galis  <darius.galis@cyberthorstudios.com>
+ 
+ 	* config/rx/rx.md (setmemsi): Added rx_allow_string_insns constraint
+ 	(rx_setmem): Likewise.
+ 
+ 2020-01-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93412
+ 	* config/i386/i386.md (*addv<dwi>4_doubleword, *subv<dwi>4_doubleword):
+ 	Use nonimmediate_operand instead of x86_64_hilo_general_operand and
+ 	drop <di> from constraint of last operand.
+ 
+ 	PR target/93430
+ 	* config/i386/sse.md (*avx_vperm_broadcast_<mode>): Disallow for
+ 	TARGET_AVX2 and V4DFmode not in the split condition, but in the
+ 	pattern condition, though allow { 0, 0, 0, 0 } broadcast always.
+ 
+ 2020-01-25  Feng Xue  <fxue@os.amperecomputing.com>
+ 
+ 	PR ipa/93166
+ 	* ipa-cp.c (get_info_about_necessary_edges): Remove value
+ 	check assertion.
+ 
+ 2020-01-24  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/92788
+ 	* tree-ssa-threadedge.c (thread_across_edge): Check EDGE_COMPLEX
+ 	not EDGE_ABNORMAL.
+ 
+ 2020-01-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93395
+ 	* config/i386/sse.md (*avx_vperm_broadcast_v4sf,
+ 	*avx_vperm_broadcast_<mode>,
+ 	<sse2_avx_avx512f>_vpermil<mode><mask_name>,
+ 	*<sse2_avx_avx512f>_vpermilp<mode><mask_name>):
+ 	Move before avx2_perm<mode>/avx512f_perm<mode>.
+ 
+ 	PR target/93376
+ 	* simplify-rtx.c (simplify_const_unary_operation,
+ 	simplify_const_binary_operation): Punt for mode precision above
+ 	MAX_BITSIZE_MODE_ANY_INT.
+ 
+ 2020-01-24  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* config/arm/aarch-cost-tables.h (cortexa57_extra_costs): Change
+ 	alu.shift_reg to 0.
+ 
+ 2020-01-24  Jeff Law  <law@redhat.com>
+ 
+ 	PR target/13721
+ 	* config/h8300/h8300.c (h8300_print_operand): Only call byte_reg
+ 	for REGs.  Call output_operand_lossage to get more reasonable
+ 	diagnostics.
+ 
+ 2020-01-24  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (vec_cmp<mode>di): Use
+ 	gcn_fp_compare_operator.
+ 	(vec_cmpu<mode>di): Use gcn_compare_operator.
+ 	(vec_cmp<u>v64qidi): Use gcn_compare_operator.
+ 	(vec_cmp<mode>di_exec): Use gcn_fp_compare_operator.
+ 	(vec_cmpu<mode>di_exec): Use gcn_compare_operator.
+ 	(vec_cmp<u>v64qidi_exec): Use gcn_compare_operator.
+ 	(vec_cmp<mode>di_dup): Use gcn_fp_compare_operator.
+ 	(vec_cmp<mode>di_dup_exec): Use gcn_fp_compare_operator.
+ 	(vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>): Use
+ 	gcn_fp_compare_operator.
+ 	(vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>_exec): Use
+ 	gcn_fp_compare_operator.
+ 	(vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>): Use
+ 	gcn_fp_compare_operator.
+ 	(vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>_exec): Use
+ 	gcn_fp_compare_operator.
+ 
+ 2020-01-24  Maciej W. Rozycki  <macro@wdc.com>
+ 
+ 	* doc/install.texi (Cross-Compiler-Specific Options): Document
+ 	`--with-toolexeclibdir' option.
+ 
+ 2020-01-24  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* target.def (flags_regnum): Also mention effect on delay slot filling.
+ 	* doc/tm.texi: Regenerate.
+ 
+ 2020-01-23  Jeff Law  <law@redhat.com>
+ 
+ 	PR translation/90162
+ 	* config/h8300/h8300.c (h8300_option_override): Fix diagnostic text.
+ 
+ 2020-01-23  Mikael Tillenius  <mti-1@tillenius.com>
+ 
+ 	PR target/92269
+ 	* config/h8300/h8300.h (FUNCTION_PROFILER): Fix emission of
+ 	profiling label
+ 
+ 2020-01-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/93402
+ 	* postreload.c (reload_combine_recognize_pattern): Don't try to adjust
+ 	USE insns.
+ 
+ 2020-01-23  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+ 
+ 	* config.in: Regenerated.
+ 	* config/mips/linux.h (NEED_INDICATE_EXEC_STACK): Define to 1
+ 	for TARGET_LIBC_GNUSTACK.
+ 	* configure: Regenerated.
+ 	* configure.ac: Define TARGET_LIBC_GNUSTACK if glibc version is
+ 	found to be 2.31 or greater.
+ 
+ 2020-01-23  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+ 
+ 	* config/mips/linux.h (NEED_INDICATE_EXEC_STACK): Define to
+ 	TARGET_SOFT_FLOAT.
+ 	* config/mips/mips.c (TARGET_ASM_FILE_END): Define to ...
+ 	(mips_asm_file_end): New function. Delegate to
+ 	file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK is true.
+ 	* config/mips/mips.h (NEED_INDICATE_EXEC_STACK): Define to 0.
+ 
+ 2020-01-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93376
+ 	* config/i386/i386-modes.def (POImode): New mode.
+ 	(MAX_BITSIZE_MODE_ANY_INT): Change from 128 to 160.
+ 	* config/i386/i386.md (DPWI): New mode attribute.
+ 	(addv<mode>4, subv<mode>4): Use <DPWI> instead of <DWI>.
+ 	(QWI): Rename to...
+ 	(QPWI): ... this.  Use POI instead of OI for TImode.
+ 	(*addv<dwi>4_doubleword, *addv<dwi>4_doubleword_1,
+ 	*subv<dwi>4_doubleword, *subv<dwi>4_doubleword_1): Use <QPWI>
+ 	instead of <QWI>.
+ 
+ 2020-01-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/93341
+ 	* config/aarch64/aarch64.md (UNSPEC_SPECULATION_TRACKER_REV): New
+ 	unspec.
+ 	(speculation_tracker_rev): New pattern.
+ 	* config/aarch64/aarch64-speculation.cc (aarch64_do_track_speculation):
+ 	Use speculation_tracker_rev to track the inverse condition.
+ 
+ 2020-01-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93381
+ 	* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Take
+ 	alias-set of the def as argument and record the first one.
+ 	(vn_walk_cb_data::first_set): New member.
+ 	(vn_reference_lookup_3): Pass the alias-set of the current def
+ 	to push_partial_def.  Fix alias-set used in the aggregate copy
+ 	case.
+ 	(vn_reference_lookup): Consistently set *last_vuse_ptr.
+ 	* real.c (clear_significand_below): Fix out-of-bound access.
+ 
+ 2020-01-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93346
+ 	* config/i386/i386.md (*bmi2_bzhi_<mode>3_2, *bmi2_bzhi_<mode>3_3):
+ 	New define_insn patterns.
+ 
+ 2020-01-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* doc/sourcebuild.texi (check-function-bodies): Add an
+ 	optional target/xfail selector.
+ 
+ 2020-01-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/93124
+ 	* auto-inc-dec.c (merge_in_block): Don't add auto inc/decs to
+ 	bare USE and CLOBBER insns.
+ 
+ 2020-01-22  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* config/arc/arc.c (output_short_suffix): Check insn for nullness.
+ 
+ 2020-01-22  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/93307
+ 	* gdbinit.in (break-on-saved-diagnostic): Update for move of
+ 	diagnostic_manager into "ana" namespace.
+ 	* selftest-run-tests.c (selftest::run_tests): Update for move of
+ 	selftest::run_analyzer_selftests to
+ 	ana::selftest::run_analyzer_selftests.
+ 
+ 2020-01-22  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* cfgexpand.c (union_stack_vars): Update the size.
+ 
+ 2020-01-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93381
+ 	* tree-ssa-structalias.c (find_func_aliases): Assume offsetting
+ 	throughout, handle all conversions the same.
+ 
+ 2020-01-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93335
+ 	* config/aarch64/aarch64.c (aarch64_expand_subvti): Only use
+ 	gen_subdi3_compare1_imm if low_in2 satisfies aarch64_plus_immediate
+ 	predicate, not whenever it is CONST_INT.  Otherwise, force_reg it.
+ 	Call force_reg on high_in2 unconditionally.
+ 
+ 2020-01-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/92924
+ 	* profile.c (compute_value_histograms): Divide
+ 	all counter values.
+ 
+ 2020-01-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/91298
+ 	* output.h (assemble_name_resolve): Declare.
+ 	* varasm.c (assemble_name_resolve): New function.
+ 	(assemble_name): Use it.
+ 	* config/i386/i386.h (ASM_OUTPUT_SYMBOL_REF): Define.
+ 
+ 2020-01-22  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* doc/sourcebuild.texi (Texinfo Manuals, Front End): Refer to
+ 	update_web_docs_git instead of update_web_docs_svn.
+ 
+ 2020-01-21  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR target/9311
+ 	* config/aarch64/aarch64.md (tlsgd_small_<mode>): Have operand 0
+ 	as PTR mode. Have operand 1 as being modeless, it can be P mode.
+ 	(*tlsgd_small_<mode>): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_load_symref_appropriately)
+ 	<case SYMBOL_SMALL_TLSGD>: Call gen_tlsgd_small_* with a ptr_mode
+ 	register.  Convert that register back to dest using convert_mode.
+ 
+ 2020-01-21  Jim Wilson  <jimw@sifive.com>
+ 
+ 	* config/riscv/riscv-sr.c (riscv_sr_match_prologue): Use INTVAL
+ 	instead of XINT.
+ 
+ 2020-01-21  H.J. Lu  <hongjiu.lu@intel.com>
+ 	    Uros Bizjak    <ubizjak@gmail.com>
+ 
+ 	PR target/93319
+ 	* config/i386/i386.c (ix86_tls_module_base): Replace Pmode
+ 	with ptr_mode.
+ 	(legitimize_tls_address): Do GNU2 TLS address computation in
+ 	ptr_mode and zero-extend result to Pmode.
+ 	*  config/i386/i386.md (@tls_dynamic_gnu2_64_<mode>): Replace
+ 	:P with :PTR and Pmode with ptr_mode.
+ 	(*tls_dynamic_gnu2_lea_64_<mode>): Likewise.
+ 	(*tls_dynamic_gnu2_call_64_<mode>): Likewise.
+ 	(*tls_dynamic_gnu2_combine_64_<mode>): Likewise.
+ 
+ 2020-01-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93333
+ 	* config/riscv/riscv.c (riscv_rtx_costs) <case ZERO_EXTRACT>: Verify
+ 	the last two operands are CONST_INT_P before using them as such.
+ 
+ 2020-01-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins.def: Use get_typenode_from_name
+ 	to get the integer element types.
+ 
+ 2020-01-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins.h
+ 	(function_expander::convert_to_pmode): Declare.
+ 	* config/aarch64/aarch64-sve-builtins.cc
+ 	(function_expander::convert_to_pmode): New function.
+ 	(function_expander::get_contiguous_base): Use it.
+ 	(function_expander::prepare_gather_address_operands): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.cc
+ 	(svwhilerw_svwhilewr_impl::expand): Likewise.
+ 
+ 2020-01-21  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+ 
+ 	PR target/92424
+ 	* config/aarch64/aarch64.c (aarch64_declare_function_name): Set
+ 	cfun->machine->label_is_assembled.
+ 	(aarch64_print_patchable_function_entry): New.
+ 	(TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY): Define.
+ 	* config/aarch64/aarch64.h (struct machine_function): New field,
+ 	label_is_assembled.
+ 
+ 2020-01-21  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR ipa/93315
+ 	* ipa-profile.c (ipa_profile): Delete call_sums and set it to
+ 	NULL on exit.
+ 
+ 2020-01-18  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR lto/93318	
+ 	* cgraph.c (cgraph_edge::resolve_speculation,
+ 	cgraph_edge::redirect_call_stmt_to_callee): Fix update of
+ 	call_stmt_site_hash.
+ 
+ 2020-01-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/rs6000/rs6000.c (common_mode_defined): Remove
+ 	unused variable.
+ 
+ 2020-01-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/92328
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Preserve
+ 	type when value-numbering same-sized store by inserting a
+ 	VIEW_CONVERT_EXPR.
+ 	(eliminate_dom_walker::eliminate_stmt): When eliminating
+ 	a redundant store handle bit-reinterpretation of the same value.
+ 
+ 2020-01-21  Andrew Pinski  <apinski@marvel.com>
+ 
+ 	PR tree-opt/93321
+ 	* tree-into-ssa.c (prepare_block_for_update_1): Split out
+ 	from ...
+ 	(prepare_block_for_update): This.  Use a worklist instead of
+ 	recursing.
+ 
+ 2020-01-21  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	* config/arm/arm.c (clear_operation_p):
+ 	Initialise last_regno, skip first iteration
+ 	based on the first_set value and use ints instead
+ 	of the unnecessary HOST_WIDE_INTs.
+ 
+ 2020-01-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93073
+ 	* config/rs6000/rs6000.c (rs6000_emit_cmove): If using fsel, punt for
+ 	compare_mode other than SFmode or DFmode.
+ 
+ 2020-01-21  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	PR target/93304
+ 	* config/riscv/riscv-protos.h (riscv_hard_regno_rename_ok): New.
+ 	* config/riscv/riscv.c (riscv_hard_regno_rename_ok): New.
+ 	* config/riscv/riscv.h (HARD_REGNO_RENAME_OK): Defined.
+ 
+ 2020-01-20  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (neoversen1_tunings): Set jump_align to 4.
+ 
+ 2020-01-20  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR middle-end/93242
+ 	* targhooks.c (default_print_patchable_function_entry): Use
+ 	output_asm_insn to emit the nop instruction.
+ 
+ 2020-01-20  Fangrui Song  <maskray@google.com>
+ 
+ 	PR middle-end/93194
+ 	* targhooks.c (default_print_patchable_function_entry): Align to
+ 	POINTER_SIZE.
+ 
+ 2020-01-20  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/93319
+ 	* config/i386/i386.c (legitimize_tls_address): Pass Pmode to
+ 	gen_tls_dynamic_gnu2_64.  Compute GNU2 TLS address in ptr_mode.
+ 	* config/i386/i386.md (tls_dynamic_gnu2_64): Renamed to ...
+ 	(@tls_dynamic_gnu2_64_<mode>): This.  Replace DI with P.
+ 	(*tls_dynamic_gnu2_lea_64): Renamed to ...
+ 	(*tls_dynamic_gnu2_lea_64_<mode>): This.  Replace DI with P.
+ 	Remove the {q} suffix from lea.
+ 	(*tls_dynamic_gnu2_call_64): Renamed to ...
+ 	(*tls_dynamic_gnu2_call_64_<mode>): This.  Replace DI with P.
+ 	(*tls_dynamic_gnu2_combine_64): Renamed to ...
+ 	(*tls_dynamic_gnu2_combine_64_<mode>): This.  Replace DI with P.
+ 	Pass Pmode to gen_tls_dynamic_gnu2_64.
+ 
+ 2020-01-20  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (SLOW_BYTE_ACCESS): Set to 1.
+ 
+ 2020-01-20  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins-base.cc
+ 	(svld1ro_impl::memory_vector_mode): Remove parameter name.
+ 
+ 2020-01-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/92763
+ 	* dwarf2out.c (prune_unused_types): Unconditionally mark
+ 	called function DIEs.
+ 
+ 2020-01-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/93199
+ 	* tree-eh.c (struct leh_state): Add
+ 	new field outer_non_cleanup.
+ 	(cleanup_is_dead_in): Pass leh_state instead
+ 	of eh_region.  Add a checking that state->outer_non_cleanup
+ 	points to outer non-clean up region.
+ 	(lower_try_finally): Record outer_non_cleanup
+ 	for this_state.
+ 	(lower_catch): Likewise.
+ 	(lower_eh_filter): Likewise.
+ 	(lower_eh_must_not_throw): Likewise.
+ 	(lower_cleanup): Likewise.
+ 
+ 2020-01-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93094
+ 	* tree-vectorizer.h (vect_loop_versioning): Adjust.
+ 	(vect_transform_loop): Likewise.
+ 	* tree-vectorizer.c (try_vectorize_loop_1): Pass down
+ 	loop_vectorized_call to vect_transform_loop.
+ 	* tree-vect-loop.c (vect_transform_loop): Pass down
+ 	loop_vectorized_call to vect_loop_versioning.
+ 	* tree-vect-loop-manip.c (vect_loop_versioning): Use
+ 	the earlier discovered loop_vectorized_call.
+ 
+ 2020-01-19  Eric S. Raymond <esr@thyrsus.com>
+ 
+ 	* doc/contribute.texi: Update for SVN -> Git transition.
+ 	* doc/install.texi: Likewise.
+ 
+ 2020-01-18  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR lto/93318
+ 	* cgraph.c (cgraph_edge::make_speculative): Increase number of
+ 	speculative targets.
+ 	(verify_speculative_call): New function
+ 	(cgraph_node::verify_node): Use it.
+ 	* ipa-profile.c (ipa_profile): Fix formating; do not set number of
+ 	speculations.
+ 
+ 2020-01-18  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR lto/93318
+ 	* cgraph.c (cgraph_edge::resolve_speculation): Fix foramting.
+ 	(cgraph_edge::make_direct): Remove all indirect targets.
+ 	(cgraph_edge::redirect_call_stmt_to_callee): Use make_direct..
+ 	(cgraph_node::verify_node): Verify that only one call_stmt or
+ 	lto_stmt_uid is set.
+ 	* cgraphclones.c (cgraph_edge::clone): Set only one call_stmt or
+ 	lto_stmt_uid.
+ 	* lto-cgraph.c (lto_output_edge): Simplify streaming of stmt.
+ 	(lto_output_ref): Simplify streaming of stmt.
+ 	* lto-streamer-in.c (fixup_call_stmt_edges_1): Clear lto_stmt_uid.
+ 
+ 2020-01-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins-base.cc (memory_vector_mode):
+ 	Mark parameter unused.
+ 
+ 2020-01-18  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* config.gcc <obsolete targets>: Add crisv32-*-* and cris-*-linux*
+ 
+ 2019-01-18  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* varpool.c (ctor_useable_for_folding_p): Fix grammar.
+ 
+ 2020-01-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* Makefile.in: Add coroutine-passes.o.
+ 	* builtin-types.def (BT_CONST_SIZE): New.
+ 	(BT_FN_BOOL_PTR): New.
+ 	(BT_FN_PTR_PTR_CONST_SIZE_BOOL): New.
+ 	* builtins.def (DEF_COROUTINE_BUILTIN): New.
+ 	* coroutine-builtins.def: New file.
+ 	* coroutine-passes.cc: New file.
+ 	* function.h (struct GTY function): Add a bit to indicate that the
+ 	function is a coroutine component.
+ 	* internal-fn.c (expand_CO_FRAME): New.
+ 	(expand_CO_YIELD): New.
+ 	(expand_CO_SUSPN): New.
+ 	(expand_CO_ACTOR): New.
+ 	* internal-fn.def (CO_ACTOR): New.
+ 	(CO_YIELD): New.
+ 	(CO_SUSPN): New.
+ 	(CO_FRAME): New.
+ 	* passes.def: Add pass_coroutine_lower_builtins,
+ 	pass_coroutine_early_expand_ifns.
+ 	* tree-pass.h (make_pass_coroutine_lower_builtins): New.
+ 	(make_pass_coroutine_early_expand_ifns): New.
+ 	* doc/invoke.texi: Document the fcoroutines command line
+ 	switch.
+ 
+ 2020-01-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/arm/vfp.md (*clear_vfp_multiple): Remove unused variable.
+ 
+ 	PR target/93312
+ 	* config/arm/arm.c (clear_operation_p): Don't use REGNO until
+ 	after checking the argument is a REG.  Don't use REGNO (reg)
+ 	again to set last_regno, reuse regno variable instead.
+ 
+ 2020-01-17  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/analyzer.texi (Limitations): Add note about NaN.
+ 
+ 2020-01-17  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
+ 	    Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	* config/arm/arm.md (ashldi3): Generate thumb2_lsll for both reg
+ 	and valid immediate.
+ 	(ashrdi3): Generate thumb2_asrl for both reg and valid immediate.
+ 	(lshrdi3): Generate thumb2_lsrl for valid immediates.
+ 	* config/arm/constraints.md (Pg): New.
+ 	* config/arm/predicates.md (long_shift_imm): New.
+ 	(arm_reg_or_long_shift_imm): Likewise.
+ 	* config/arm/thumb2.md (thumb2_asrl): New immediate alternative.
+ 	(thumb2_lsll): Likewise.
+ 	(thumb2_lsrl): New.
+ 
+ 2020-01-17  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
+ 	    Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	* config/arm/arm.md (ashldi3): Generate thumb2_lsll for TARGET_HAVE_MVE.
+ 	(ashrdi3): Generate thumb2_asrl for TARGET_HAVE_MVE.
+ 	* config/arm/arm.c (arm_hard_regno_mode_ok): Allocate even odd
+ 	register pairs for doubleword quantities for ARMv8.1M-Mainline.
+ 	* config/arm/thumb2.md (thumb2_asrl): New.
+ 	(thumb2_lsll): Likewise.
+ 
+ 2020-01-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/arm/arm.c (cmse_nonsecure_call_inline_register_clear): Remove
+ 	unused variable.
+ 
+ 2020-01-17  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* gdbinit.in (help-gcc-hooks): New command.
+ 	(pp, pr, prl, pt, pct, pgg, pgq, pgs, pge, pmz, ptc, pdn, ptn, pdd, prc,
+ 	pi, pbm, pel, trt): Take $arg0 instead of $ if supplied. Update
+ 	documentation.
+ 
+ 2020-01-17  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve.md (@aarch64_sve_ld1ro<mode>): Use the
+ 	correct target macro.
+ 
+ 2020-01-17  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h
+ 	(aarch64_sve_ld1ro_operand_p): New.
+ 	* config/aarch64/aarch64-sve-builtins-base.cc
+ 	(class load_replicate): New.
+ 	(class svld1ro_impl): New.
+ 	(class svld1rq_impl): Change to inherit from load_replicate.
+ 	(svld1ro): New sve intrinsic function base.
+ 	* config/aarch64/aarch64-sve-builtins-base.def (svld1ro):
+ 	New DEF_SVE_FUNCTION.
+ 	* config/aarch64/aarch64-sve-builtins-base.h
+ 	(svld1ro): New decl.
+ 	* config/aarch64/aarch64-sve-builtins.cc
+ 	(function_expander::add_mem_operand): Modify assert to allow
+ 	OImode.
+ 	* config/aarch64/aarch64-sve.md (@aarch64_sve_ld1ro<mode>): New
+ 	pattern.
+ 	* config/aarch64/aarch64.c
+ 	(aarch64_sve_ld1rq_operand_p): Implement in terms of ...
+ 	(aarch64_sve_ld1rq_ld1ro_operand_p): This.
+ 	(aarch64_sve_ld1ro_operand_p): New.
+ 	* config/aarch64/aarch64.md (UNSPEC_LD1RO): New unspec.
+ 	* config/aarch64/constraints.md (UOb,UOh,UOw,UOd): New.
+ 	* config/aarch64/predicates.md
+ 	(aarch64_sve_ld1ro_operand_{b,h,w,d}): New.
+ 
+ 2020-01-17  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 
+ 	* config/aarch64/aarch64-c.c (_ARM_FEATURE_MATMUL_FLOAT64):
+ 	Introduce this ACLE specified predefined macro.
+ 	* config/aarch64/aarch64-option-extensions.def (f64mm): New.
+ 	(fp): Disabling this disables f64mm.
+ 	(simd): Disabling this disables f64mm.
+ 	(fp16): Disabling this disables f64mm.
+ 	(sve): Disabling this disables f64mm.
+ 	* config/aarch64/aarch64.h (AARCH64_FL_F64MM): New.
+ 	(AARCH64_ISA_F64MM): New.
+ 	(TARGET_F64MM): New.
+ 	* doc/invoke.texi (f64mm): Document new option.
+ 
+ 2020-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (generic_tunings): Add branch fusion.
+ 	(neoversen1_tunings): Likewise.
+ 
+ 2020-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR target/92692
+ 	* config/aarch64/aarch64.c (aarch64_split_compare_and_swap)
+ 	Add assert to ensure prolog has been emitted.
+ 	(aarch64_split_atomic_op): Likewise.
+ 	* config/aarch64/atomics.md (aarch64_compare_and_swap<mode>)
+ 	Use epilogue_completed rather than reload_completed.
+ 	(aarch64_atomic_exchange<mode>): Likewise.
+ 	(aarch64_atomic_<atomic_optab><mode>): Likewise.
+ 	(atomic_nand<mode>): Likewise.
+ 	(aarch64_atomic_fetch_<atomic_optab><mode>): Likewise.
+ 	(atomic_fetch_nand<mode>): Likewise.
+ 	(aarch64_atomic_<atomic_optab>_fetch<mode>): Likewise.
+ 	(atomic_nand_fetch<mode>): Likewise.
+ 
+ 2020-01-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/93133
+ 	* config/aarch64/aarch64.h (REVERSIBLE_CC_MODE): Return false
+ 	for FP modes.
+ 	(REVERSE_CONDITION): Delete.
+ 	* config/aarch64/iterators.md (CC_ONLY): New mode iterator.
+ 	(CCFP_CCFPE): Likewise.
+ 	(e): New mode attribute.
+ 	* config/aarch64/aarch64.md (ccmp<GPI:mode>): Rename to...
+ 	(@ccmp<CC_ONLY:mode><GPI:mode>): ...this, using CC_ONLY instead of CC.
+ 	(fccmp<GPF:mode>, fccmpe<GPF:mode>): Merge into...
+ 	(@ccmp<CCFP_CCFPE:mode><GPF:mode>): ...this combined pattern.
+ 	(@ccmp<CC_ONLY:mode><GPI:mode>_rev): New pattern.
+ 	(@ccmp<CCFP_CCFPE:mode><GPF:mode>_rev): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_gen_compare_reg): Update
+ 	name of generator from gen_ccmpdi to gen_ccmpccdi.
+ 	(aarch64_gen_ccmp_next): Use code_for_ccmp.  If we want to reverse
+ 	the previous comparison but aren't able to, use the new ccmp_rev
+ 	patterns instead.
+ 
+ 2020-01-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* gimplify.c (gimplify_return_expr): Use poly_int_tree_p rather
+ 	than testing directly for INTEGER_CST.
+ 	(gimplify_target_expr, gimplify_omp_depend): Likewise.
+ 
+ 2020-01-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/93292
+ 	* tree-vect-stmts.c (vectorizable_comparison): Punt also if
+ 	get_vectype_for_scalar_type returns NULL.
+ 
+ 2020-01-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* params.opt (-param=max-predicted-iterations): Increase range from 0.
+ 	* predict.c (estimate_loops): Add 1 to param_max_predicted_iterations.
+ 
+ 2020-01-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-fnsummary.c (estimate_calls_size_and_time): Fix formating of
+ 	dump.
+ 	* params.opt: (max-predicted-iterations): Set bounds.
+ 	* predict.c (real_almost_one, real_br_prob_base,
+ 	real_inv_br_prob_base, real_one_half, real_bb_freq_max): Remove.
+ 	(propagate_freq): Add max_cyclic_prob parameter; cap cyclic
+ 	probabilities; do not truncate to reg_br_prob_bases.
+ 	(estimate_loops_at_level): Pass max_cyclic_prob.
+ 	(estimate_loops): Compute max_cyclic_prob.
+ 	(estimate_bb_frequencies): Do not initialize real_*; update calculation
+ 	of back edge prob.
+ 	* profile-count.c (profile_probability::to_sreal): New.
+ 	* profile-count.h (class sreal): Move up in file.
+ 	(profile_probability::to_sreal): Declare.
+ 
+ 2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
+ 
+ 	* config/arm/arm.c
+ 	(arm_invalid_conversion): New function for target hook.
+ 	(arm_invalid_unary_op): New function for target hook.
+ 	(arm_invalid_binary_op): New function for target hook.
+ 
+ 2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
+ 
+ 	* config.gcc: Add arm_bf16.h.
+ 	* config/arm/arm-builtins.c (arm_mangle_builtin_type): Fix comment.
+ 	(arm_simd_builtin_std_type): Add BFmode.
+ 	(arm_init_simd_builtin_types): Define element types for vector types.
+ 	(arm_init_bf16_types): New function.
+ 	(arm_init_builtins): Add arm_init_bf16_types function call.
+ 	* config/arm/arm-modes.def: Add BFmode and V4BF, V8BF vector modes.
+ 	* config/arm/arm-simd-builtin-types.def: Add V4BF, V8BF.
+ 	* config/arm/arm.c (aapcs_vfp_sub_candidate):  Add BFmode.
+ 	(arm_hard_regno_mode_ok): Add BFmode and tidy up statements.
+ 	(arm_vector_mode_supported_p): Add V4BF, V8BF.
+ 	(arm_mangle_type):  Add __bf16.
+ 	* config/arm/arm.h: Add V4BF, V8BF to VALID_NEON_DREG_MODE, 
+ 	VALID_NEON_QREG_MODE respectively. Add export arm_bf16_type_node,
+ 	arm_bf16_ptr_type_node.
+ 	* config/arm/arm.md: Add BFmode to movhf expand, mov pattern and
+ 	define_split between ARM registers.
+ 	* config/arm/arm_bf16.h: New file.
+ 	* config/arm/arm_neon.h: Add arm_bf16.h and Bfloat vector types.
+ 	* config/arm/iterators.md: (ANY64_BF, VDXMOV, VHFBF, HFBF, fporbf): New.
+ 	(VQXMOV): Add V8BF.
+ 	* config/arm/neon.md: Add BF vector types to movhf NEON move patterns.
+ 	* config/arm/vfp.md: Add BFmode to movhf patterns.
+ 
+ 2020-01-16  Mihail Ionescu  <mihail.ionescu@arm.com>
+ 	    Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (mve, mve_float): New features.
+ 	(dsp, mve, mve.fp): New options.
+ 	* config/arm/arm.h (TARGET_HAVE_MVE, TARGET_HAVE_MVE_FLOAT): Define.
+ 	* config/arm/t-rmprofile: Map v8.1-M multilibs to v8-M.
+ 	* doc/invoke.texi: Document the armv8.1-m mve and dps options.
+ 
+ 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
+ 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (ARMv8_1m_main): Redefine as an extension to
+ 	Armv8-M Mainline.
+ 	* config/arm/arm.c (arm_options_perform_arch_sanity_checks): Remove
+ 	error for using -mcmse when targeting Armv8.1-M Mainline.
+ 
+ 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
+ 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.md (nonsecure_call_internal): Do not force memory
+ 	address in r4 when targeting Armv8.1-M Mainline.
+ 	(nonsecure_call_value_internal): Likewise.
+ 	* config/arm/thumb2.md (nonsecure_call_reg_thumb2): Make memory address
+ 	a register match_operand again.  Emit BLXNS when targeting
+ 	Armv8.1-M Mainline.
+ 	(nonsecure_call_value_reg_thumb2): Likewise.
+ 
+ 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
+ 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.c (arm_add_cfa_adjust_cfa_note): Declare early.
+ 	(cmse_nonsecure_call_inline_register_clear): Define new lazy_fpclear
+ 	variable as true when floating-point ABI is not hard.  Replace
+ 	check against TARGET_HARD_FLOAT_ABI by checks against lazy_fpclear.
+ 	Generate VLSTM and VLLDM instruction respectively before and
+ 	after a function call to cmse_nonsecure_call function.
+ 	* config/arm/unspecs.md (VUNSPEC_VLSTM): Define unspec.
+ 	(VUNSPEC_VLLDM): Likewise.
+ 	* config/arm/vfp.md (lazy_store_multiple_insn): New define_insn.
+ 	(lazy_load_multiple_insn): Likewise.
+ 
+ 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
+ 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.c (vfp_emit_fstmd): Declare early.
+ 	(arm_emit_vfp_multi_reg_pop): Likewise.
+ 	(cmse_nonsecure_call_inline_register_clear): Abstract number of VFP
+ 	registers to clear in max_fp_regno.  Emit VPUSH and VPOP to save and
+ 	restore callee-saved VFP registers.
+ 
+ 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
+ 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.c (arm_emit_multi_reg_pop): Declare early.
+ 	(cmse_nonsecure_call_clear_caller_saved): Rename into ...
+ 	(cmse_nonsecure_call_inline_register_clear): This.  Save and clear
+ 	callee-saved GPRs as well as clear ip register before doing a nonsecure
+ 	call then restore callee-saved GPRs after it when targeting
+ 	Armv8.1-M Mainline.
+ 	(arm_reorg): Adapt to function rename.
+ 
+ 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
+ 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm-protos.h (clear_operation_p): Adapt prototype.
+ 	* config/arm/arm.c (clear_operation_p): Extend to be able to check a
+ 	clear_vfp_multiple pattern based on a new vfp parameter.
+ 	(cmse_clear_registers): Generate VSCCLRM to clear VFP registers when
+ 	targeting Armv8.1-M Mainline.
+ 	(cmse_nonsecure_entry_clear_before_return): Clear VFP registers
+ 	unconditionally when targeting Armv8.1-M Mainline architecture.  Check
+ 	whether VFP registers are available before looking call_used_regs for a
+ 	VFP register.
+ 	* config/arm/predicates.md (clear_multiple_operation): Adapt to change
+ 	of prototype of clear_operation_p.
+ 	(clear_vfp_multiple_operation): New predicate.
+ 	* config/arm/unspecs.md (VUNSPEC_VSCCLRM_VPR): New volatile unspec.
+ 	* config/arm/vfp.md (clear_vfp_multiple): New define_insn.
+ 
+ 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
+ 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm-protos.h (clear_operation_p): Declare.
+ 	* config/arm/arm.c (clear_operation_p): New function.
+ 	(cmse_clear_registers): Generate clear_multiple instruction pattern if
+ 	targeting Armv8.1-M Mainline or successor.
+ 	(output_return_instruction): Only output APSR register clearing if
+ 	Armv8.1-M Mainline instructions not available.
+ 	(thumb_exit): Likewise.
+ 	* config/arm/predicates.md (clear_multiple_operation): New predicate.
+ 	* config/arm/thumb2.md (clear_apsr): New define_insn.
+ 	(clear_multiple): Likewise.
+ 	* config/arm/unspecs.md (VUNSPEC_CLRM_APSR): New volatile unspec.
+ 
+ 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
+ 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.c (fp_sysreg_names): Declare and define.
+ 	(use_return_insn): Also return false for Armv8.1-M Mainline.
+ 	(output_return_instruction): Skip FPSCR clearing if Armv8.1-M
+ 	Mainline instructions are available.
+ 	(arm_compute_frame_layout): Allocate space in frame for FPCXTNS
+ 	when targeting Armv8.1-M Mainline Security Extensions.
+ 	(arm_expand_prologue): Save FPCXTNS if this is an Armv8.1-M
+ 	Mainline entry function.
+ 	(cmse_nonsecure_entry_clear_before_return): Clear IP and r4 if
+ 	targeting Armv8.1-M Mainline or successor.
+ 	(arm_expand_epilogue): Fix indentation of caller-saved register
+ 	clearing.  Restore FPCXTNS if this is an Armv8.1-M Mainline
+ 	entry function.
+ 	* config/arm/arm.h (TARGET_HAVE_FP_CMSE): New macro.
+ 	(FP_SYSREGS): Likewise.
+ 	(enum vfp_sysregs_encoding): Define enum.
+ 	(fp_sysreg_names): Declare.
+ 	* config/arm/unspecs.md (VUNSPEC_VSTR_VLDR): New volatile unspec.
+ 	* config/arm/vfp.md (push_fpsysreg_insn): New define_insn.
+ 	(pop_fpsysreg_insn): Likewise.
+ 
+ 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
+ 	    Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (armv8_1m_main): New feature.
+ 	(ARMv4, ARMv4t, ARMv5t, ARMv5te, ARMv5tej, ARMv6, ARMv6j, ARMv6k,
+ 	ARMv6z, ARMv6kz, ARMv6zk, ARMv6t2, ARMv6m, ARMv7, ARMv7a, ARMv7ve,
+ 	ARMv7r, ARMv7m, ARMv7em, ARMv8a, ARMv8_1a, ARMv8_2a, ARMv8_3a,
+ 	ARMv8_4a, ARMv8_5a, ARMv8m_base, ARMv8m_main, ARMv8r): Reindent.
+ 	(ARMv8_1m_main): New feature group.
+ 	(armv8.1-m.main): New architecture.
+ 	* config/arm/arm-tables.opt: Regenerate.
+ 	* config/arm/arm.c (arm_arch8_1m_main): Define and default initialize.
+ 	(arm_option_reconfigure_globals): Initialize arm_arch8_1m_main.
+ 	(arm_options_perform_arch_sanity_checks): Error out when targeting
+ 	Armv8.1-M Mainline Security Extensions.
+ 	* config/arm/arm.h (arm_arch8_1m_main): Declare.
+ 
+ 2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd-builtins.def (aarch64_bfdot,
+ 	aarch64_bfdot_lane, aarch64_bfdot_laneq): New.
+ 	* config/aarch64/aarch64-simd.md (aarch64_bfdot, aarch64_bfdot_lane,
+ 	aarch64_bfdot_laneq): New.
+ 	* config/aarch64/arm_bf16.h (vbfdot_f32, vbfdotq_f32,
+ 	vbfdot_lane_f32, vbfdotq_lane_f32, vbfdot_laneq_f32,
+ 	vbfdotq_laneq_f32): New.
+ 	* config/aarch64/iterators.md (UNSPEC_BFDOT, Vbfdottype,
+ 	VBFMLA_W, VBF): New.
+ 	(isquadop): Add V4BF, V8BF.
+ 
+ 2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.c: (enum aarch64_type_qualifiers):
+ 	New qualifier_lane_quadtup_index, TYPES_TERNOP_SSUS,
+ 	TYPES_QUADOPSSUS_LANE_QUADTUP, TYPES_QUADOPSSSU_LANE_QUADTUP.
+ 	(aarch64_simd_expand_args): Add case SIMD_ARG_LANE_QUADTUP_INDEX.
+ 	(aarch64_simd_expand_builtin): Add qualifier_lane_quadtup_index.
+ 	* config/aarch64/aarch64-simd-builtins.def (usdot, usdot_lane,
+ 	usdot_laneq, sudot_lane,sudot_laneq): New.
+ 	* config/aarch64/aarch64-simd.md (aarch64_usdot): New.
+ 	(aarch64_<sur>dot_lane): New.
+ 	* config/aarch64/arm_neon.h (vusdot_s32): New.
+ 	(vusdotq_s32): New.
+ 	(vusdot_lane_s32): New.
+ 	(vsudot_lane_s32): New.
+ 	* config/aarch64/iterators.md (DOTPROD_I8MM): New iterator.
+ 	(UNSPEC_USDOT, UNSPEC_SUDOT): New unspecs.
+ 
+ 2020-01-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* value-prof.c (dump_histogram_value): Fix
+ 	obvious spacing issue.
+ 
+ 2020-01-16  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* tree-ssa-sccvn.c(vn_reference_lookup_3): Check lhs for
+ 	!storage_order_barrier_p.
+ 
+ 2020-01-16  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* sched-int.h (_dep): Add unused bit-field field for the padding.
+ 	* sched-deps.c (init_dep_1): Init unused field.
+ 
+ 2020-01-16  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* optabs.h (create_expand_operand): Initialize target field also.
+ 
+ 2020-01-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR tree-optimization/92429
+ 	* tree-ssa-loop-niter.h (simplify_replace_tree): Add parameter.
+ 	* tree-ssa-loop-niter.c (simplify_replace_tree): Add parameter to
+ 	control folding.
+ 	* tree-vect-loop.c (update_epilogue_vinfo): Do not fold when replacing
+ 	tree.
+ 
+ 2020-01-16  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_split_sve_subreg_move): Apply
+ 	aarch64_sve_int_mode to each mode.
+ 
+ 2020-01-15  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/analyzer.texi (Overview): Add note about
+ 	-fdump-ipa-analyzer.
+ 
+ 2020-01-15  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR tree-optimization/93231
+ 	* tree-ssa-forwprop.c (optimize_count_trailing_zeroes): Check
+ 	input_type is unsigned.  Use tree_to_shwi for shift constant.
+ 	Check CST_STRING element size is CHAR_TYPE_SIZE bits.
+ 	(simplify_count_trailing_zeroes): Add test to handle known non-zero
+ 	inputs more efficiently.
+ 
+ 2020-01-15  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*movsf_internal): Do not require
+ 	SSE2 ISA for alternatives 14 and 15.
+ 
+ 2020-01-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/93273
+ 	* tree-eh.c (sink_clobbers): If we already visited the destination
+ 	block do not defer insertion.
+ 	(pass_lower_eh_dispatch::execute): Maintain BB_VISITED for
+ 	the purpose of defered insertion.
+ 
+ 2020-01-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* BASE-VER: Bump to 10.0.1.
+ 
+ 2020-01-15  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/93247
+ 	* tree-vect-loop.c (update_epilogue_loop_vinfo): Check the access
+ 	type of the stmt that we're going to vectorize.
+ 
+ 2020-01-15  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vect-slp.c (vectorize_slp_instance_root_stmt): Use a
+ 	VIEW_CONVERT_EXPR if the vectorized constructor has a diffeent
+ 	type from the lhs.
+ 
+ 2020-01-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	* ipa-profile.c (ipa_profile_read_edge_summary): Do not allow
+ 	2 calls of streamer_read_hwi in a function call.
+ 
+ 2020-01-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	* alias.c (record_alias_subset): Avoid redundant work when
+ 	subset is already recorded.
+ 
+ 2020-01-14  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/invoke.texi (-fdiagnostics-show-cwe): Add note that some of
+ 	the analyzer options provide CWE identifiers.
+ 
+ 2020-01-14  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* tree-diagnostic-path.cc (path_summary::event_range::print):
+ 	When testing for UNKNOWN_LOCATION, look through ad-hoc wrappers
+ 	using get_pure_location.
+ 
+ 2020-01-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/93262
+ 	* tree-ssa-dse.c (maybe_trim_memstar_call): For *_chk builtins,
+ 	perform head trimming only if the last argument is constant,
+ 	either all ones, or larger or equal to head trim, in the latter
+ 	case decrease the last argument by head_trim.
+ 
+ 	PR tree-optimization/93249
+ 	* tree-ssa-dse.c: Include builtins.h and gimple-fold.h.
+ 	(maybe_trim_memstar_call): Move head_trim and tail_trim vars to
+ 	function body scope, reindent.  For BUILTIN_IN_STRNCPY*, don't
+ 	perform head trim unless we can prove there are no '\0' chars
+ 	from the source among the first head_trim chars.
+ 
+ 2020-01-14  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (ANALYZER_OBJS): Add analyzer/function-set.o.
+ 
+ 2020-01-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93009
+ 	* config/i386/sse.md
+ 	(*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_1,
+ 	*<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_1,
+ 	*<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_1,
+ 	*<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_1): Use
+ 	just a single alternative instead of two, make operands 1 and 2
+ 	commutative.
+ 
+ 2020-01-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR lto/91576
+ 	* ipa-devirt.c (odr_types_equivalent_p): Compare TREE_ADDRESSABLE and
+ 	TYPE_MODE.
+ 
+ 2020-01-14  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (lang_opt_files): Add analyzer.opt.
+ 	(ANALYZER_OBJS): New.
+ 	(OBJS): Add digraph.o, graphviz.o, ordered-hash-map-tests.o,
+ 	tristate.o and ANALYZER_OBJS.
+ 	(TEXI_GCCINT_FILES): Add analyzer.texi.
+ 	* common.opt (-fanalyzer): New driver option.
+ 	* config.in: Regenerate.
+ 	* configure: Regenerate.
+ 	* configure.ac (--disable-analyzer, ENABLE_ANALYZER): New option.
+ 	(gccdepdir): Also create depdir for "analyzer" subdir.
+ 	* digraph.cc: New file.
+ 	* digraph.h: New file.
+ 	* doc/analyzer.texi: New file.
+ 	* doc/gccint.texi ("Static Analyzer") New menu item.
+ 	(analyzer.texi): Include it.
+ 	* doc/invoke.texi ("Static Analyzer Options"): New list and new section.
+ 	("Warning Options"): Add static analysis warnings to the list.
+ 	(-Wno-analyzer-double-fclose): New option.
+ 	(-Wno-analyzer-double-free): New option.
+ 	(-Wno-analyzer-exposure-through-output-file): New option.
+ 	(-Wno-analyzer-file-leak): New option.
+ 	(-Wno-analyzer-free-of-non-heap): New option.
+ 	(-Wno-analyzer-malloc-leak): New option.
+ 	(-Wno-analyzer-possible-null-argument): New option.
+ 	(-Wno-analyzer-possible-null-dereference): New option.
+ 	(-Wno-analyzer-null-argument): New option.
+ 	(-Wno-analyzer-null-dereference): New option.
+ 	(-Wno-analyzer-stale-setjmp-buffer): New option.
+ 	(-Wno-analyzer-tainted-array-index): New option.
+ 	(-Wno-analyzer-use-after-free): New option.
+ 	(-Wno-analyzer-use-of-pointer-in-stale-stack-frame): New option.
+ 	(-Wno-analyzer-use-of-uninitialized-value): New option.
+ 	(-Wanalyzer-too-complex): New option.
+ 	(-fanalyzer-call-summaries): New warning.
+ 	(-fanalyzer-checker=): New warning.
+ 	(-fanalyzer-fine-grained): New warning.
+ 	(-fno-analyzer-state-merge): New warning.
+ 	(-fno-analyzer-state-purge): New warning.
+ 	(-fanalyzer-transitivity): New warning.
+ 	(-fanalyzer-verbose-edges): New warning.
+ 	(-fanalyzer-verbose-state-changes): New warning.
+ 	(-fanalyzer-verbosity=): New warning.
+ 	(-fdump-analyzer): New warning.
+ 	(-fdump-analyzer-callgraph): New warning.
+ 	(-fdump-analyzer-exploded-graph): New warning.
+ 	(-fdump-analyzer-exploded-nodes): New warning.
+ 	(-fdump-analyzer-exploded-nodes-2): New warning.
+ 	(-fdump-analyzer-exploded-nodes-3): New warning.
+ 	(-fdump-analyzer-supergraph): New warning.
+ 	* doc/sourcebuild.texi (dg-require-dot): New.
+ 	(dg-check-dot): New.
+ 	* gdbinit.in (break-on-saved-diagnostic): New command.
+ 	* graphviz.cc: New file.
+ 	* graphviz.h: New file.
+ 	* ordered-hash-map-tests.cc: New file.
+ 	* ordered-hash-map.h: New file.
+ 	* passes.def (pass_analyzer): Add before
+ 	pass_ipa_whole_program_visibility.
+ 	* selftest-run-tests.c (selftest::run_tests): Call
+ 	selftest::ordered_hash_map_tests_cc_tests.
+ 	* selftest.h (selftest::ordered_hash_map_tests_cc_tests): New
+ 	decl.
+ 	* shortest-paths.h: New file.
+ 	* timevar.def (TV_ANALYZER): New timevar.
+ 	(TV_ANALYZER_SUPERGRAPH): Likewise.
+ 	(TV_ANALYZER_STATE_PURGE): Likewise.
+ 	(TV_ANALYZER_PLAN): Likewise.
+ 	(TV_ANALYZER_SCC): Likewise.
+ 	(TV_ANALYZER_WORKLIST): Likewise.
+ 	(TV_ANALYZER_DUMP): Likewise.
+ 	(TV_ANALYZER_DIAGNOSTICS): Likewise.
+ 	(TV_ANALYZER_SHORTEST_PATHS): Likewise.
+ 	* tree-pass.h (make_pass_analyzer): New decl.
+ 	* tristate.cc: New file.
+ 	* tristate.h: New file.
+ 
+ 2020-01-14  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/93254
+ 	* config/i386/i386.md (*movsf_internal): Require SSE2 ISA for
+ 	alternatives 9 and 10.
+ 
+ 2020-01-14  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* attribs.c (excl_hash_traits::empty_zero_p): New static constant.
+ 	* gcov.c (function_start_pair_hash::empty_zero_p): Likewise.
+ 	* graphite.c (struct sese_scev_hash::empty_zero_p): Likewise.
+ 	* hash-map-tests.c (selftest::test_nonzero_empty_key): New selftest.
+ 	(selftest::hash_map_tests_c_tests): Call it.
+ 	* hash-map-traits.h (simple_hashmap_traits::empty_zero_p):
+ 	New static constant, using the value of = H::empty_zero_p.
+ 	(unbounded_hashmap_traits::empty_zero_p): Likewise, using the value
+ 	from default_hash_traits <Value>.
+ 	* hash-map.h (hash_map::empty_zero_p): Likewise, using the value
+ 	from Traits.
+ 	* hash-set-tests.c (value_hash_traits::empty_zero_p): Likewise.
+ 	* hash-table.h (hash_table::alloc_entries): Guard the loop of
+ 	calls to mark_empty with !Descriptor::empty_zero_p.
+ 	(hash_table::empty_slow): Conditionalize the memset call with a
+ 	check that Descriptor::empty_zero_p; otherwise, loop through the
+ 	entries calling mark_empty on them.
+ 	* hash-traits.h (int_hash::empty_zero_p): New static constant.
+ 	(pointer_hash::empty_zero_p): Likewise.
+ 	(pair_hash::empty_zero_p): Likewise.
+ 	* ipa-devirt.c (default_hash_traits <type_pair>::empty_zero_p):
+ 	Likewise.
+ 	* ipa-prop.c (ipa_bit_ggc_hash_traits::empty_zero_p): Likewise.
+ 	(ipa_vr_ggc_hash_traits::empty_zero_p): Likewise.
+ 	* profile.c (location_triplet_hash::empty_zero_p): Likewise.
+ 	* sanopt.c (sanopt_tree_triplet_hash::empty_zero_p): Likewise.
+ 	(sanopt_tree_couple_hash::empty_zero_p): Likewise.
+ 	* tree-hasher.h (int_tree_hasher::empty_zero_p): Likewise.
+ 	* tree-ssa-sccvn.c (vn_ssa_aux_hasher::empty_zero_p): Likewise.
+ 	* tree-vect-slp.c (bst_traits::empty_zero_p): Likewise.
+ 	* tree-vectorizer.h
+ 	(default_hash_traits<scalar_cond_masked_key>::empty_zero_p):
+ 	Likewise.
+ 
+ 2020-01-14  Kewen Lin  <linkw@gcc.gnu.org>
+ 
+ 	* cfgloopanal.c (average_num_loop_insns): Free bbs when early return,
+ 	fix typo on return value.
+ 
+ 2020-01-14  Xiong Hu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	PR ipa/69678
+ 	* cgraph.c (symbol_table::create_edge): Init speculative_id and
+ 	target_prob.
+ 	(cgraph_edge::make_speculative): Add param for setting speculative_id
+ 	and target_prob.
+ 	(cgraph_edge::speculative_call_info): Update comments and find reference
+ 	by speculative_id for multiple indirect targets.
+ 	(cgraph_edge::resolve_speculation): Decrease the speculations
+ 	for indirect edge, drop it's speculative if not direct target
+ 	left. Update comments.
+ 	(cgraph_edge::redirect_call_stmt_to_callee): Likewise.
+ 	(cgraph_node::dump): Print num_speculative_call_targets.
+ 	(cgraph_node::verify_node): Don't report error if speculative
+ 	edge not include statement.
+ 	(cgraph_edge::num_speculative_call_targets_p): New function.
+ 	* cgraph.h (int common_target_id): Remove.
+ 	(int common_target_probability): Remove.
+ 	(num_speculative_call_targets): New variable.
+ 	(make_speculative): Add param for setting speculative_id.
+ 	(cgraph_edge::num_speculative_call_targets_p): New declare.
+ 	(target_prob): New variable.
+ 	(speculative_id): New variable.
+ 	* ipa-fnsummary.c (analyze_function_body): Create and duplicate
+ 	  call summaries for multiple speculative call targets.
+ 	* cgraphclones.c (cgraph_node::create_clone): Clone speculative_id.
+ 	* ipa-profile.c (struct speculative_call_target): New struct.
+ 	(class speculative_call_summary): New class.
+ 	(class speculative_call_summaries): New class.
+ 	(call_sums): New variable.
+ 	(ipa_profile_generate_summary): Generate indirect multiple targets summaries.
+ 	(ipa_profile_write_edge_summary): New function.
+ 	(ipa_profile_write_summary): Stream out indirect multiple targets summaries.
+ 	(ipa_profile_dump_all_summaries): New function.
+ 	(ipa_profile_read_edge_summary): New function.
+ 	(ipa_profile_read_summary_section): New function.
+ 	(ipa_profile_read_summary): Stream in indirect multiple targets summaries.
+ 	(ipa_profile): Generate num_speculative_call_targets from
+ 	profile summaries.
+ 	* ipa-ref.h (speculative_id): New variable.
+ 	* ipa-utils.c (ipa_merge_profiles): Update with target_prob.
+ 	* lto-cgraph.c (lto_output_edge): Remove indirect common_target_id and
+ 	common_target_probability.   Stream out speculative_id and
+ 	num_speculative_call_targets.
+ 	(input_edge): Likewise.
+ 	* predict.c (dump_prediction): Remove edges count assert to be
+ 	precise.
+ 	* symtab.c (symtab_node::create_reference): Init speculative_id.
+ 	(symtab_node::clone_references): Clone speculative_id.
+ 	(symtab_node::clone_referring): Clone speculative_id.
+ 	(symtab_node::clone_reference): Clone speculative_id.
+ 	(symtab_node::clear_stmts_in_references): Clear speculative_id.
+ 	* tree-inline.c (copy_bb): Duplicate all the speculative edges
+ 	if indirect call contains multiple speculative targets.
+ 	* value-prof.h  (check_ic_target): Remove.
+ 	* value-prof.c  (gimple_value_profile_transformations):
+ 	Use void function gimple_ic_transform.
+ 	* value-prof.c  (gimple_ic_transform): Handle topn case.
+ 	Fix comment typos.  Change it to a void function.
+ 
+ 2020-01-13  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (octeontx2): New define.
+ 	(octeontx2t98): New define.
+ 	(octeontx2t96): New define.
+ 	(octeontx2t93): New define.
+ 	(octeontx2f95): New define.
+ 	(octeontx2f95n): New define.
+ 	(octeontx2f95mm): New define.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* doc/invoke.texi (-mcpu=): Document the new cpu types.
+ 
+ 2020-01-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/33799 - destroy return value if local cleanup throws.
+ 	* gimplify.c (gimplify_return_expr): Handle COMPOUND_EXPR.
+ 
+ 2020-01-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	* ipa-cp.c (get_max_overall_size): Use newly
+ 	renamed param param_ipa_cp_unit_growth.
+ 	* params.opt: Remove legacy param name.
+ 
+ 2020-01-13  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/93213
+ 	* tree-ssa-strlen.c (handle_store): Only allow single-byte nul-over-nul
+ 	stores to be eliminated.
+ 
+ 2020-01-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	* opts.c (print_help): Do not print CL_PARAM
+ 	and CL_WARNING for CL_OPTIMIZATION.
+ 
+ 2020-01-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR driver/92757
+ 	* doc/invoke.texi (Warning Options): Add caveat about some warnings
+ 	depending on optimization settings.
+ 
+ 2020-01-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/90838
+ 	* tree-ssa-forwprop.c (simplify_count_trailing_zeroes): Use
+ 	SCALAR_INT_TYPE_MODE directly in CTZ_DEFINED_VALUE_AT_ZERO macro
+ 	argument rather than to initialize temporary for targets that
+ 	don't use the mode argument at all.  Initialize ctzval to avoid
+ 	warning at -O0.
+ 
+ 2020-01-10  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* tree.h (OMP_CLAUSE_USE_DEVICE_PTR_IF_PRESENT): New definition.
+ 	* tree-core.h: Document it.
+ 	* gimplify.c (gimplify_omp_workshare): Set it.
+ 	* omp-low.c (lower_omp_target): Use it.
+ 	* tree-pretty-print.c (dump_omp_clause): Print it.
+ 
+ 	* omp-low.c (lower_omp_target) <OMP_CLAUSE_USE_DEVICE_PTR etc.>:
+ 	Assert that for OpenACC we always have 'GOMP_MAP_USE_DEVICE_PTR'.
+ 
+ 2020-01-10  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (OBJS): Add tree-diagnostic-path.o.
+ 	* common.opt (fdiagnostics-path-format=): New option.
+ 	(diagnostic_path_format): New enum.
+ 	(fdiagnostics-show-path-depths): New option.
+ 	* coretypes.h (diagnostic_event_id_t): New forward decl.
+ 	* diagnostic-color.c (color_dict): Add "path".
+ 	* diagnostic-event-id.h: New file.
+ 	* diagnostic-format-json.cc (json_from_expanded_location): Make
+ 	non-static.
+ 	(json_end_diagnostic): Call context->make_json_for_path if it
+ 	exists and the diagnostic has a path.
+ 	(diagnostic_output_format_init): Clear context->print_path.
+ 	* diagnostic-path.h: New file.
+ 	* diagnostic-show-locus.c (colorizer::set_range): Special-case
+ 	when printing a run of events in a diagnostic_path so that they
+ 	all get the same color.
+ 	(layout::m_diagnostic_path_p): New field.
+ 	(layout::layout): Initialize it.
+ 	(layout::print_any_labels): Don't colorize the label text for an
+ 	event in a diagnostic_path.
+ 	(gcc_rich_location::add_location_if_nearby): Add
+ 	"restrict_to_current_line_spans" and "label" params.  Pass the
+ 	former to layout.maybe_add_location_range; pass the latter
+ 	when calling add_range.
+ 	* diagnostic.c: Include "diagnostic-path.h".
+ 	(diagnostic_initialize): Initialize context->path_format and
+ 	context->show_path_depths.
+ 	(diagnostic_show_any_path): New function.
+ 	(diagnostic_path::interprocedural_p): New function.
+ 	(diagnostic_report_diagnostic): Call diagnostic_show_any_path.
+ 	(simple_diagnostic_path::num_events): New function.
+ 	(simple_diagnostic_path::get_event): New function.
+ 	(simple_diagnostic_path::add_event): New function.
+ 	(simple_diagnostic_event::simple_diagnostic_event): New ctor.
+ 	(simple_diagnostic_event::~simple_diagnostic_event): New dtor.
+ 	(debug): New overload taking a diagnostic_path *.
+ 	* diagnostic.def (DK_DIAGNOSTIC_PATH): New.
+ 	* diagnostic.h (enum diagnostic_path_format): New enum.
+ 	(json::value): New forward decl.
+ 	(diagnostic_context::path_format): New field.
+ 	(diagnostic_context::show_path_depths): New field.
+ 	(diagnostic_context::print_path): New callback field.
+ 	(diagnostic_context::make_json_for_path): New callback field.
+ 	(diagnostic_show_any_path): New decl.
+ 	(json_from_expanded_location): New decl.
+ 	* doc/invoke.texi (-fdiagnostics-path-format=): New option.
+ 	(-fdiagnostics-show-path-depths): New option.
+ 	(-fdiagnostics-color): Add "path" to description of default
+ 	GCC_COLORS; describe it.
+ 	(-fdiagnostics-format=json): Document how diagnostic paths are
+ 	represented in the JSON output format.
+ 	* gcc-rich-location.h (gcc_rich_location::add_location_if_nearby):
+ 	Add optional params "restrict_to_current_line_spans" and "label".
+ 	* opts.c (common_handle_option): Handle
+ 	OPT_fdiagnostics_path_format_ and
+ 	OPT_fdiagnostics_show_path_depths.
+ 	* pretty-print.c: Include "diagnostic-event-id.h".
+ 	(pp_format): Implement "%@" format code for printing
+ 	diagnostic_event_id_t *.
+ 	(selftest::test_pp_format): Add tests for "%@".
+ 	* selftest-run-tests.c (selftest::run_tests): Call
+ 	selftest::tree_diagnostic_path_cc_tests.
+ 	* selftest.h (selftest::tree_diagnostic_path_cc_tests): New decl.
+ 	* toplev.c (general_init): Initialize global_dc->path_format and
+ 	global_dc->show_path_depths.
+ 	* tree-diagnostic-path.cc: New file.
+ 	* tree-diagnostic.c (maybe_unwind_expanded_macro_loc): Make
+ 	non-static.  Drop "diagnostic" param in favor of storing the
+ 	original value of "where" and re-using it.
+ 	(virt_loc_aware_diagnostic_finalizer): Update for dropped param of
+ 	maybe_unwind_expanded_macro_loc.
+ 	(tree_diagnostics_defaults): Initialize context->print_path and
+ 	context->make_json_for_path.
+ 	* tree-diagnostic.h (default_tree_diagnostic_path_printer): New
+ 	decl.
+ 	(default_tree_make_json_for_path): New decl.
+ 	(maybe_unwind_expanded_macro_loc): New decl.
+ 
+ 2020-01-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/93210
+ 	* fold-const.h (native_encode_initializer,
+ 	can_native_interpret_type_p): Declare.
+ 	* fold-const.c (native_encode_string): Fix up handling with off != -1,
+ 	simplify.
+ 	(native_encode_initializer): New function, moved from dwarf2out.c.
+ 	Adjust to native_encode_expr compatible arguments, including dry-run
+ 	and partial extraction modes.  Don't handle STRING_CST.
+ 	(can_native_interpret_type_p): No longer static.
+ 	* gimple-fold.c (fold_ctor_reference): For native_encode_expr, verify
+ 	offset / BITS_PER_UNIT fits into int and don't call it if
+ 	can_native_interpret_type_p fails.  If suboff is NULL and for
+ 	CONSTRUCTOR fold_{,non}array_ctor_reference returns NULL, retry with
+ 	native_encode_initializer.
+ 	(fold_const_aggregate_ref_1): Formatting fix.
+ 	* dwarf2out.c (native_encode_initializer): Moved to fold-const.c.
+ 	(tree_add_const_value_attribute): Adjust caller.
+ 
+ 	PR tree-optimization/90838
+ 	* tree-ssa-forwprop.c (simplify_count_trailing_zeroes): Use
+ 	SCALAR_INT_TYPE_MODE instead of TYPE_MODE as operand of
+ 	CTZ_DEFINED_VALUE_AT_ZERO.
+ 
+ 2020-01-10  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR inline-asm/93027
+ 	* lra-constraints.c (match_reload): Permit input operands have the
+ 	same mode as output while other input operands have a different
+ 	mode.
+ 
+ 2020-01-10  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR tree-optimization/90838
+ 	* tree-ssa-forwprop.c (check_ctz_array): Add new function.
+ 	(check_ctz_string): Likewise.
+ 	(optimize_count_trailing_zeroes): Likewise.
+ 	(simplify_count_trailing_zeroes): Likewise.
+ 	(pass_forwprop::execute): Try ctz simplification.
+ 	* match.pd: Add matching for ctz idioms.
+ 
+ 2020-01-10  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_invalid_conversion): New function
+ 	for target hook.
+ 	(aarch64_invalid_unary_op): New function for target hook.
+ 	(aarch64_invalid_binary_op): New function for target hook.
+ 
+ 2020-01-10  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
+ 
+ 	* config.gcc: Add arm_bf16.h.
+ 	* config/aarch64/aarch64-builtins.c
+ 	(aarch64_simd_builtin_std_type): Add BFmode.
+ 	(aarch64_init_simd_builtin_types): Define element types for vector
+ 	types.
+ 	(aarch64_init_bf16_types): New function.
+ 	(aarch64_general_init_builtins): Add arm_init_bf16_types function call.
+ 	* config/aarch64/aarch64-modes.def: Add BFmode and V4BF, V8BF vector
+ 	modes.
+ 	* config/aarch64/aarch64-simd-builtin-types.def: Add BF SIMD types.
+ 	* config/aarch64/aarch64-simd.md: Add BF vector types to NEON move
+ 	patterns.
+ 	* config/aarch64/aarch64.h (AARCH64_VALID_SIMD_DREG_MODE): Add V4BF.
+ 	(AARCH64_VALID_SIMD_QREG_MODE): Add V8BF.
+ 	* config/aarch64/aarch64.c
+ 	(aarch64_classify_vector_mode): Add support for BF types.
+ 	(aarch64_gimplify_va_arg_expr): Add support for BF types.
+ 	(aarch64_vq_mode): Add support for BF types.
+ 	(aarch64_simd_container_mode): Add support for BF types.
+ 	(aarch64_mangle_type): Add support for BF scalar type.
+ 	* config/aarch64/aarch64.md: Add BFmode to movhf pattern.
+ 	* config/aarch64/arm_bf16.h: New file.
+ 	* config/aarch64/arm_neon.h: Add arm_bf16.h and Bfloat vector types.
+ 	* config/aarch64/iterators.md: Add BF types to mode attributes.
+ 	(HFBF, GPF_TF_F16_MOV, VDMOV, VQMOV, VQMOV_NO2Em VALL_F16MOV): New.
+ 
+ 2020-01-10  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/93173 - incorrect tree sharing.
+ 	* gimplify.c (copy_if_shared): No longer static.
+ 	* gimplify.h: Declare it.
+ 
+ 2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* doc/invoke.texi (-msve-vector-bits=): Document that
+ 	-msve-vector-bits=128 now generates VL-specific code for
+ 	little-endian targets.
+ 	* config/aarch64/aarch64-sve-builtins.cc (register_builtin_types): Use
+ 	build_vector_type_for_mode to construct the data vector types.
+ 	* config/aarch64/aarch64.c (aarch64_convert_sve_vector_bits): Generate
+ 	VL-specific code for -msve-vector-bits=128 on little-endian targets.
+ 	(aarch64_simd_container_mode): Always prefer Advanced SIMD modes
+ 	for 128-bit vectors.
+ 
+ 2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_evpc_sel): Fix gen_vcond_mask
+ 	invocation.
+ 
+ 2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.c
+ 	(aarch64_builtin_vectorized_function): Check for specific vector modes,
+ 	rather than checking the number of elements and the element mode.
+ 
+ 2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vect-loop.c (vect_create_epilog_for_reduction): Use
+ 	get_related_vectype_for_scalar_type rather than build_vector_type
+ 	to create the index type for a conditional reduction.
+ 
+ 2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vect-loop.c (update_epilogue_loop_vinfo): Update DR_REF
+ 	for any type of gather or scatter, including strided accesses.
+ 
+ 2020-01-10  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* tree-vectorizer.h (get_dr_vinfo_offset): Add missing function
+ 	 comment.
+ 
+ 2020-01-10  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* tree-vect-data-refs.c (vect_create_addr_base_for_vector_ref): Use
+ 	get_dr_vinfo_offset
+ 	* tree-vect-loop.c (update_epilogue_loop_vinfo):  Remove orig_drs_init
+ 	parameter and its use to reset DR_OFFSET's.
+ 	(vect_transform_loop): Remove orig_drs_init argument.
+ 	* tree-vect-loop-manip.c (vect_update_init_of_dr): Update the offset
+ 	member of dr_vec_info rather than the offset of the associated
+ 	data_reference's innermost_loop_behavior.
+ 	(vect_update_init_of_dr): Pass dr_vec_info instead of data_reference.
+ 	(vect_do_peeling): Remove orig_drs_init parameter and its construction.
+ 	* tree-vect-stmts.c (check_scan_store): Replace use of DR_OFFSET with
+ 	get_dr_vinfo_offset.
+ 	(vectorizable_store): Likewise.
+ 	(vectorizable_load): Likewise.
+ 
+ 2020-01-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-ssa-store-merging
+ 	(pass_store_merging::terminate_all_aliasing_chains): Cache alias info.
+ 
+ 2020-01-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/93217
+ 	* ipa-inline-analysis.c (offline_size): Make proper parenthesis
+ 	encapsulation that was there before r280040.
+ 
+ 2020-01-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/93199
+ 	* tree-eh.c (sink_clobbers): Move clobbers to out-of-IL
+ 	sequences to avoid walking them again for secondary opportunities.
+ 	(pass_lower_eh_dispatch::execute): Instead actually insert
+ 	them here.
+ 
+ 2020-01-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/93199
+ 	* tree-eh.c (redirect_eh_edge_1): Avoid some work if possible.
+ 	(cleanup_all_empty_eh): Walk landing pads in reverse order to
+ 	avoid quadraticness.
+ 
+ 2020-01-10  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* params.opt (param_ipa_sra_max_replacements): Mark as Optimization.
+ 	* ipa-sra.c (pull_accesses_from_callee): New parameter caller, use it
+ 	to get param_ipa_sra_max_replacements.
+ 	(param_splitting_across_edge): Pass the caller to
+ 	pull_accesses_from_callee.
+ 
+ 2020-01-10  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* params.opt (param_ipcp_unit_growth): Mark as Optimization.
+ 	* ipa-cp.c (max_new_size): Removed.
+ 	(orig_overall_size): New variable.
+ 	(get_max_overall_size): New function.
+ 	(estimate_local_effects): Use it.  Adjust dump.
+ 	(decide_about_value): Likewise.
+ 	(ipcp_propagate_stage): Do not calculate max_new_size, just store
+ 	orig_overall_size.  Adjust dump.
+ 	(ipa_cp_c_finalize): Clear orig_overall_size instead of max_new_size.
+ 
+ 2020-01-10  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* params.opt (param_ipa_max_agg_items): Mark as Optimization
+ 	* ipa-cp.c (merge_agg_lats_step): New parameter max_agg_items, use
+ 	instead of param_ipa_max_agg_items.
+ 	(merge_aggregate_lattices): Extract param_ipa_max_agg_items from
+ 	optimization info for the callee.
+ 
+ 2020-01-09  Kwok Cheung Yeung  <kcy@codesourcery.com>
+ 
+ 	* lto-streamer-in.c (input_function): Remove streamed-in inline debug
+ 	markers	if debug_inline_points is false.
+ 
+ 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config.gcc (aarch64*-*-*): Add aarch64-sve-builtins-sve2.o to
+ 	extra_objs.
+ 	* config/aarch64/t-aarch64 (aarch64-sve-builtins.o): Depend on
+ 	aarch64-sve-builtins-base.def, aarch64-sve-builtins-sve2.def and
+ 	aarch64-sve-builtins-sve2.h.
+ 	(aarch64-sve-builtins-sve2.o): New rule.
+ 	* config/aarch64/aarch64.h (AARCH64_ISA_SVE2_AES): New macro.
+ 	(AARCH64_ISA_SVE2_BITPERM, AARCH64_ISA_SVE2_SHA3): Likewise.
+ 	(AARCH64_ISA_SVE2_SM4, TARGET_SVE2_AES, TARGET_SVE2_BITPERM): Likewise.
+ 	(TARGET_SVE2_SHA, TARGET_SVE2_SM4): Likewise.
+ 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
+ 	TARGET_SVE2_AES, TARGET_SVE2_BITPERM, TARGET_SVE2_SHA3 and
+ 	TARGET_SVE2_SM4.
+ 	* config/aarch64/aarch64-sve.md: Update comments with SVE2
+ 	instructions that are handled here.
+ 	(@cond_asrd<mode>): Generalize to...
+ 	(@cond_<SVE_INT_SHIFT_IMM:sve_int_op><mode>): ...this.
+ 	(*cond_asrd<mode>_2): Generalize to...
+ 	(*cond_<SVE_INT_SHIFT_IMM:sve_int_op><mode>_2): ...this.
+ 	(*cond_asrd<mode>_z): Generalize to...
+ 	(*cond_<SVE_INT_SHIFT_IMM:sve_int_op><mode>_z): ...this.
+ 	* config/aarch64/aarch64.md (UNSPEC_LDNT1_GATHER): New unspec.
+ 	(UNSPEC_STNT1_SCATTER, UNSPEC_WHILEGE, UNSPEC_WHILEGT): Likewise.
+ 	(UNSPEC_WHILEHI, UNSPEC_WHILEHS): Likewise.
+ 	* config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): New
+ 	pattern.
+ 	(@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode><SVE_PARTIAL_I:mode>)
+ 	(@aarch64_scatter_stnt<mode>): Likewise.
+ 	(@aarch64_scatter_stnt_<SVE_FULL_SDI:mode><SVE_PARTIAL_I:mode>)
+ 	(@aarch64_mul_lane_<mode>): Likewise.
+ 	(@aarch64_sve_suqadd<mode>_const): Likewise.
+ 	(*<sur>h<addsub><mode>): Generalize to...
+ 	(@aarch64_pred_<SVE2_COND_INT_BINARY_REV:sve_int_op><mode>): ...this
+ 	new pattern.
+ 	(@cond_<SVE2_COND_INT_BINARY:sve_int_op><mode>): New expander.
+ 	(*cond_<SVE2_COND_INT_BINARY:sve_int_op><mode>_2): New pattern.
+ 	(*cond_<SVE2_COND_INT_BINARY:sve_int_op><mode>_3): Likewise.
+ 	(*cond_<SVE2_COND_INT_BINARY:sve_int_op><mode>_any): Likewise.
+ 	(*cond_<SVE2_COND_INT_BINARY_NOREV:sve_int_op><mode>_z): Likewise.
+ 	(@aarch64_sve_<SVE2_INT_BINARY:sve_int_op><mode>):: Likewise.
+ 	(@aarch64_sve_<SVE2_INT_BINARY:sve_int_op>_lane_<mode>): Likewise.
+ 	(@aarch64_pred_<SVE2_COND_INT_SHIFT:sve_int_op><mode>): Likewise.
+ 	(@cond_<SVE2_COND_INT_SHIFT:sve_int_op><mode>): New expander.
+ 	(*cond_<SVE2_COND_INT_SHIFT:sve_int_op><mode>_2): New pattern.
+ 	(*cond_<SVE2_COND_INT_SHIFT:sve_int_op><mode>_3): Likewise.
+ 	(*cond_<SVE2_COND_INT_SHIFT:sve_int_op><mode>_any): Likewise.
+ 	(@aarch64_sve_<SVE2_INT_TERNARY:sve_int_op><mode>): Likewise.
+ 	(@aarch64_sve_<SVE2_INT_TERNARY_LANE:sve_int_op>_lane_<mode>)
+ 	(@aarch64_sve_add_mul_lane_<mode>): Likewise.
+ 	(@aarch64_sve_sub_mul_lane_<mode>): Likewise.
+ 	(@aarch64_sve2_xar<mode>): Likewise.
+ 	(@aarch64_sve2_bcax<mode>): Likewise.
+ 	(*aarch64_sve2_eor3<mode>): Rename to...
+ 	(@aarch64_sve2_eor3<mode>): ...this.
+ 	(@aarch64_sve2_bsl<mode>): New expander.
+ 	(@aarch64_sve2_nbsl<mode>): Likewise.
+ 	(@aarch64_sve2_bsl1n<mode>): Likewise.
+ 	(@aarch64_sve2_bsl2n<mode>): Likewise.
+ 	(@aarch64_sve_add_<SHIFTRT:sve_int_op><mode>): Likewise.
+ 	(*aarch64_sve2_sra<mode>): Add MOVPRFX support.
+ 	(@aarch64_sve_add_<VRSHR_N:sve_int_op><mode>): New pattern.
+ 	(@aarch64_sve_<SVE2_INT_SHIFT_INSERT:sve_int_op><mode>): Likewise.
+ 	(@aarch64_sve2_<USMAX:su>aba<mode>): New expander.
+ 	(*aarch64_sve2_<USMAX:su>aba<mode>): New pattern.
+ 	(@aarch64_sve_<SVE2_INT_BINARY_WIDE:sve_int_op><mode>): Likewise.
+ 	(<su>mull<bt><Vwide>): Generalize to...
+ 	(@aarch64_sve_<SVE2_INT_BINARY_LONG:sve_int_op><mode>): ...this new
+ 	pattern.
+ 	(@aarch64_sve_<SVE2_INT_BINARY_LONG_lANE:sve_int_op>_lane_<mode>)
+ 	(@aarch64_sve_<SVE2_INT_SHIFT_IMM_LONG:sve_int_op><mode>)
+ 	(@aarch64_sve_add_<SVE2_INT_ADD_BINARY_LONG:sve_int_op><mode>)
+ 	(@aarch64_sve_add_<SVE2_INT_ADD_BINARY_LONG_LANE:sve_int_op>_lane_<mode>)
+ 	(@aarch64_sve_qadd_<SVE2_INT_QADD_BINARY_LONG:sve_int_op><mode>)
+ 	(@aarch64_sve_qadd_<SVE2_INT_QADD_BINARY_LONG_LANE:sve_int_op>_lane_<mode>)
+ 	(@aarch64_sve_sub_<SVE2_INT_SUB_BINARY_LONG:sve_int_op><mode>)
+ 	(@aarch64_sve_sub_<SVE2_INT_SUB_BINARY_LONG_LANE:sve_int_op>_lane_<mode>)
+ 	(@aarch64_sve_qsub_<SVE2_INT_QSUB_BINARY_LONG:sve_int_op><mode>)
+ 	(@aarch64_sve_qsub_<SVE2_INT_QSUB_BINARY_LONG_LANE:sve_int_op>_lane_<mode>)
+ 	(@aarch64_sve_<SVE2_FP_TERNARY_LONG:sve_fp_op><mode>): New patterns.
+ 	(@aarch64_<SVE2_FP_TERNARY_LONG_LANE:sve_fp_op>_lane_<mode>)
+ 	(@aarch64_sve_<SVE2_INT_UNARY_NARROWB:sve_int_op><mode>): Likewise.
+ 	(@aarch64_sve_<SVE2_INT_UNARY_NARROWT:sve_int_op><mode>): Likewise.
+ 	(@aarch64_sve_<SVE2_INT_BINARY_NARROWB:sve_int_op><mode>): Likewise.
+ 	(@aarch64_sve_<SVE2_INT_BINARY_NARROWT:sve_int_op><mode>): Likewise.
+ 	(<SHRNB:r>shrnb<mode>): Generalize to...
+ 	(@aarch64_sve_<SVE2_INT_SHIFT_IMM_NARROWB:sve_int_op><mode>): ...this
+ 	new pattern.
+ 	(<SHRNT:r>shrnt<mode>): Generalize to...
+ 	(@aarch64_sve_<SVE2_INT_SHIFT_IMM_NARROWT:sve_int_op><mode>): ...this
+ 	new pattern.
+ 	(@aarch64_pred_<SVE2_INT_BINARY_PAIR:sve_int_op><mode>): New pattern.
+ 	(@aarch64_pred_<SVE2_FP_BINARY_PAIR:sve_fp_op><mode>): Likewise.
+ 	(@cond_<SVE2_INT_BINARY_PAIR_LONG:sve_int_op><mode>): New expander.
+ 	(*cond_<SVE2_INT_BINARY_PAIR_LONG:sve_int_op><mode>_2): New pattern.
+ 	(*cond_<SVE2_INT_BINARY_PAIR_LONG:sve_int_op><mode>_z): Likewise.
+ 	(@aarch64_sve_<SVE2_INT_CADD:optab><mode>): Likewise.
+ 	(@aarch64_sve_<SVE2_INT_CMLA:optab><mode>): Likewise.
+ 	(@aarch64_<SVE2_INT_CMLA:optab>_lane_<mode>): Likewise.
+ 	(@aarch64_sve_<SVE2_INT_CDOT:optab><mode>): Likewise.
+ 	(@aarch64_<SVE2_INT_CDOT:optab>_lane_<mode>): Likewise.
+ 	(@aarch64_pred_<SVE2_COND_FP_UNARY_LONG:sve_fp_op><mode>): Likewise.
+ 	(@cond_<SVE2_COND_FP_UNARY_LONG:sve_fp_op><mode>): New expander.
+ 	(*cond_<SVE2_COND_FP_UNARY_LONG:sve_fp_op><mode>): New pattern.
+ 	(@aarch64_sve2_cvtnt<mode>): Likewise.
+ 	(@aarch64_pred_<SVE2_COND_FP_UNARY_NARROWB:sve_fp_op><mode>): Likewise.
+ 	(@cond_<SVE2_COND_FP_UNARY_NARROWB:sve_fp_op><mode>): New expander.
+ 	(*cond_<SVE2_COND_FP_UNARY_NARROWB:sve_fp_op><mode>_any): New pattern.
+ 	(@aarch64_sve2_cvtxnt<mode>): Likewise.
+ 	(@aarch64_pred_<SVE2_U32_UNARY:sve_int_op><mode>): Likewise.
+ 	(@cond_<SVE2_U32_UNARY:sve_int_op><mode>): New expander.
+ 	(*cond_<SVE2_U32_UNARY:sve_int_op><mode>): New pattern.
+ 	(@aarch64_pred_<SVE2_COND_INT_UNARY_FP:sve_fp_op><mode>): Likewise.
+ 	(@cond_<SVE2_COND_INT_UNARY_FP:sve_fp_op><mode>): New expander.
+ 	(*cond_<SVE2_COND_INT_UNARY_FP:sve_fp_op><mode>): New pattern.
+ 	(@aarch64_sve2_pmul<mode>): Likewise.
+ 	(@aarch64_sve_<SVE2_PMULL:optab><mode>): Likewise.
+ 	(@aarch64_sve_<SVE2_PMULL_PAIR:optab><mode>): Likewise.
+ 	(@aarch64_sve2_tbl2<mode>): Likewise.
+ 	(@aarch64_sve2_tbx<mode>): Likewise.
+ 	(@aarch64_sve_<SVE2_INT_BITPERM:sve_int_op><mode>): Likewise.
+ 	(@aarch64_sve2_histcnt<mode>): Likewise.
+ 	(@aarch64_sve2_histseg<mode>): Likewise.
+ 	(@aarch64_pred_<SVE2_MATCH:sve_int_op><mode>): Likewise.
+ 	(*aarch64_pred_<SVE2_MATCH:sve_int_op><mode>_cc): Likewise.
+ 	(*aarch64_pred_<SVE2_MATCH:sve_int_op><mode>_ptest): Likewise.
+ 	(aarch64_sve2_aes<CRYPTO_AES:aes_op>): Likewise.
+ 	(aarch64_sve2_aes<CRYPTO_AESMC:aesmc_op>): Likewise.
+ 	(*aarch64_sve2_aese_fused, *aarch64_sve2_aesd_fused): Likewise.
+ 	(aarch64_sve2_rax1, aarch64_sve2_sm4e, aarch64_sve2_sm4ekey): Likewise.
+ 	(<su>mulh<r>s<mode>3): Update after above pattern name changes.
+ 	* config/aarch64/iterators.md (VNx16QI_ONLY, VNx4SF_ONLY)
+ 	(SVE_STRUCT2, SVE_FULL_BHI, SVE_FULL_HSI, SVE_FULL_HDI)
+ 	(SVE2_PMULL_PAIR_I): New mode iterators.
+ 	(UNSPEC_ADCLB, UNSPEC_ADCLT, UNSPEC_ADDHNB, UNSPEC_ADDHNT, UNSPEC_BDEP)
+ 	(UNSPEC_BEXT, UNSPEC_BGRP, UNSPEC_CADD90, UNSPEC_CADD270, UNSPEC_CDOT)
+ 	(UNSPEC_CDOT90, UNSPEC_CDOT180, UNSPEC_CDOT270, UNSPEC_CMLA)
+ 	(UNSPEC_CMLA90, UNSPEC_CMLA180, UNSPEC_CMLA270, UNSPEC_COND_FCVTLT)
+ 	(UNSPEC_COND_FCVTNT, UNSPEC_COND_FCVTX, UNSPEC_COND_FCVTXNT)
+ 	(UNSPEC_COND_FLOGB, UNSPEC_EORBT, UNSPEC_EORTB, UNSPEC_FADDP)
+ 	(UNSPEC_FMAXP, UNSPEC_FMAXNMP, UNSPEC_FMLALB, UNSPEC_FMLALT)
+ 	(UNSPEC_FMLSLB, UNSPEC_FMLSLT, UNSPEC_FMINP, UNSPEC_FMINNMP)
+ 	(UNSPEC_HISTCNT, UNSPEC_HISTSEG, UNSPEC_MATCH, UNSPEC_NMATCH)
+ 	(UNSPEC_PMULLB, UNSPEC_PMULLB_PAIR, UNSPEC_PMULLT, UNSPEC_PMULLT_PAIR)
+ 	(UNSPEC_RADDHNB, UNSPEC_RADDHNT, UNSPEC_RSUBHNB, UNSPEC_RSUBHNT)
+ 	(UNSPEC_SLI, UNSPEC_SRI, UNSPEC_SABDLB, UNSPEC_SABDLT, UNSPEC_SADDLB)
+ 	(UNSPEC_SADDLBT, UNSPEC_SADDLT, UNSPEC_SADDWB, UNSPEC_SADDWT)
+ 	(UNSPEC_SBCLB, UNSPEC_SBCLT, UNSPEC_SMAXP, UNSPEC_SMINP)
+ 	(UNSPEC_SQCADD90, UNSPEC_SQCADD270, UNSPEC_SQDMULLB, UNSPEC_SQDMULLBT)
+ 	(UNSPEC_SQDMULLT, UNSPEC_SQRDCMLAH, UNSPEC_SQRDCMLAH90)
+ 	(UNSPEC_SQRDCMLAH180, UNSPEC_SQRDCMLAH270, UNSPEC_SQRSHRNB)
+ 	(UNSPEC_SQRSHRNT, UNSPEC_SQRSHRUNB, UNSPEC_SQRSHRUNT, UNSPEC_SQSHRNB)
+ 	(UNSPEC_SQSHRNT, UNSPEC_SQSHRUNB, UNSPEC_SQSHRUNT, UNSPEC_SQXTNB)
+ 	(UNSPEC_SQXTNT, UNSPEC_SQXTUNB, UNSPEC_SQXTUNT, UNSPEC_SSHLLB)
+ 	(UNSPEC_SSHLLT, UNSPEC_SSUBLB, UNSPEC_SSUBLBT, UNSPEC_SSUBLT)
+ 	(UNSPEC_SSUBLTB, UNSPEC_SSUBWB, UNSPEC_SSUBWT, UNSPEC_SUBHNB)
+ 	(UNSPEC_SUBHNT, UNSPEC_TBL2, UNSPEC_UABDLB, UNSPEC_UABDLT)
+ 	(UNSPEC_UADDLB, UNSPEC_UADDLT, UNSPEC_UADDWB, UNSPEC_UADDWT)
+ 	(UNSPEC_UMAXP, UNSPEC_UMINP, UNSPEC_UQRSHRNB, UNSPEC_UQRSHRNT)
+ 	(UNSPEC_UQSHRNB, UNSPEC_UQSHRNT, UNSPEC_UQXTNB, UNSPEC_UQXTNT)
+ 	(UNSPEC_USHLLB, UNSPEC_USHLLT, UNSPEC_USUBLB, UNSPEC_USUBLT)
+ 	(UNSPEC_USUBWB, UNSPEC_USUBWT): New unspecs.
+ 	(UNSPEC_SMULLB, UNSPEC_SMULLT, UNSPEC_UMULLB, UNSPEC_UMULLT)
+ 	(UNSPEC_SMULHS, UNSPEC_SMULHRS, UNSPEC_UMULHS, UNSPEC_UMULHRS)
+ 	(UNSPEC_RSHRNB, UNSPEC_RSHRNT, UNSPEC_SHRNB, UNSPEC_SHRNT): Move
+ 	further down file.
+ 	(VNARROW, Ventype): New mode attributes.
+ 	(Vewtype): Handle VNx2DI.  Fix typo in comment.
+ 	(VDOUBLE): New mode attribute.
+ 	(sve_lane_con): Handle VNx8HI.
+ 	(SVE_INT_UNARY): Include ss_abs and ss_neg for TARGET_SVE2.
+ 	(SVE_INT_BINARY): Likewise ss_plus, us_plus, ss_minus and us_minus.
+ 	(sve_int_op, sve_int_op_rev): Handle the above codes.
+ 	(sve_pred_int_rhs2_operand): Likewise.
+ 	(MULLBT, SHRNB, SHRNT): Delete.
+ 	(SVE_INT_SHIFT_IMM): New int iterator.
+ 	(SVE_WHILE): Add UNSPEC_WHILEGE, UNSPEC_WHILEGT, UNSPEC_WHILEHI
+ 	and UNSPEC_WHILEHS for TARGET_SVE2.
+ 	(SVE2_U32_UNARY, SVE2_INT_UNARY_NARROWB, SVE2_INT_UNARY_NARROWT)
+ 	(SVE2_INT_BINARY, SVE2_INT_BINARY_LANE, SVE2_INT_BINARY_LONG)
+ 	(SVE2_INT_BINARY_LONG_LANE, SVE2_INT_BINARY_NARROWB)
+ 	(SVE2_INT_BINARY_NARROWT, SVE2_INT_BINARY_PAIR, SVE2_FP_BINARY_PAIR)
+ 	(SVE2_INT_BINARY_PAIR_LONG, SVE2_INT_BINARY_WIDE): New int iterators.
+ 	(SVE2_INT_SHIFT_IMM_LONG, SVE2_INT_SHIFT_IMM_NARROWB): Likewise.
+ 	(SVE2_INT_SHIFT_IMM_NARROWT, SVE2_INT_SHIFT_INSERT, SVE2_INT_CADD)
+ 	(SVE2_INT_BITPERM, SVE2_INT_TERNARY, SVE2_INT_TERNARY_LANE): Likewise.
+ 	(SVE2_FP_TERNARY_LONG, SVE2_FP_TERNARY_LONG_LANE, SVE2_INT_CMLA)
+ 	(SVE2_INT_CDOT, SVE2_INT_ADD_BINARY_LONG, SVE2_INT_QADD_BINARY_LONG)
+ 	(SVE2_INT_SUB_BINARY_LONG, SVE2_INT_QSUB_BINARY_LONG): Likewise.
+ 	(SVE2_INT_ADD_BINARY_LONG_LANE, SVE2_INT_QADD_BINARY_LONG_LANE)
+ 	(SVE2_INT_SUB_BINARY_LONG_LANE, SVE2_INT_QSUB_BINARY_LONG_LANE)
+ 	(SVE2_COND_INT_UNARY_FP, SVE2_COND_FP_UNARY_LONG): Likewise.
+ 	(SVE2_COND_FP_UNARY_NARROWB, SVE2_COND_INT_BINARY): Likewise.
+ 	(SVE2_COND_INT_BINARY_NOREV, SVE2_COND_INT_BINARY_REV): Likewise.
+ 	(SVE2_COND_INT_SHIFT, SVE2_MATCH, SVE2_PMULL): Likewise.
+ 	(optab): Handle the new unspecs.
+ 	(su, r): Remove entries for UNSPEC_SHRNB, UNSPEC_SHRNT, UNSPEC_RSHRNB
+ 	and UNSPEC_RSHRNT.
+ 	(lr): Handle the new unspecs.
+ 	(bt): Delete.
+ 	(cmp_op, while_optab_cmp, sve_int_op): Handle the new unspecs.
+ 	(sve_int_op_rev, sve_int_add_op, sve_int_qadd_op, sve_int_sub_op)
+ 	(sve_int_qsub_op): New int attributes.
+ 	(sve_fp_op, rot): Handle the new unspecs.
+ 	* config/aarch64/aarch64-sve-builtins.h
+ 	(function_resolver::require_matching_pointer_type): Declare.
+ 	(function_resolver::resolve_unary): Add an optional boolean argument.
+ 	(function_resolver::finish_opt_n_resolution): Add an optional
+ 	type_suffix_index argument.
+ 	(gimple_folder::redirect_call): Declare.
+ 	(gimple_expander::prepare_gather_address_operands): Add an optional
+ 	bool parameter.
+ 	* config/aarch64/aarch64-sve-builtins.cc: Include
+ 	aarch64-sve-builtins-sve2.h.
+ 	(TYPES_b_unsigned, TYPES_b_integer, TYPES_bh_integer): New macros.
+ 	(TYPES_bs_unsigned, TYPES_hs_signed, TYPES_hs_integer): Likewise.
+ 	(TYPES_hd_unsigned, TYPES_hsd_signed): Likewise.
+ 	(TYPES_hsd_integer): Use TYPES_hsd_signed.
+ 	(TYPES_s_float_hsd_integer, TYPES_s_float_sd_integer): New macros.
+ 	(TYPES_s_unsigned): Likewise.
+ 	(TYPES_s_integer): Use TYPES_s_unsigned.
+ 	(TYPES_sd_signed, TYPES_sd_unsigned): New macros.
+ 	(TYPES_sd_integer): Use them.
+ 	(TYPES_d_unsigned): New macro.
+ 	(TYPES_d_integer): Use it.
+ 	(TYPES_d_data, TYPES_cvt_long, TYPES_cvt_narrow_s): New macros.
+ 	(TYPES_cvt_narrow): Likewise.
+ 	(DEF_SVE_TYPES_ARRAY): Include the new types macros above.
+ 	(preds_mx): New variable.
+ 	(function_builder::add_overloaded_function): Allow the new feature
+ 	set to be more restrictive than the original one.
+ 	(function_resolver::infer_pointer_type): Remove qualifiers from
+ 	the pointer type before printing it.
+ 	(function_resolver::require_matching_pointer_type): New function.
+ 	(function_resolver::resolve_sv_displacement): Handle functions
+ 	that don't support 32-bit vector indices or svint32_t vector offsets.
+ 	(function_resolver::finish_opt_n_resolution): Take the inferred type
+ 	as a separate argument.
+ 	(function_resolver::resolve_unary): Optionally treat all forms in
+ 	the same way as normal merging functions.
+ 	(gimple_folder::redirect_call): New function.
+ 	(function_expander::prepare_gather_address_operands): Add an argument
+ 	that says whether scaled forms are available.  If they aren't,
+ 	handle scaling of vector indices and don't add the extension and
+ 	scaling operands.
+ 	(function_expander::map_to_unspecs): If aarch64_sve isn't available,
+ 	fall back to using cond_* instead.
+ 	* config/aarch64/aarch64-sve-builtins-functions.h (rtx_code_function):
+ 	Split out the member variables into...
+ 	(rtx_code_function_base): ...this new base class.
+ 	(rtx_code_function_rotated): Inherit rtx_code_function_base.
+ 	(unspec_based_function): Split out the member variables into...
+ 	(unspec_based_function_base): ...this new base class.
+ 	(unspec_based_function_rotated): Inherit unspec_based_function_base.
+ 	(unspec_based_function_exact_insn): New class.
+ 	(unspec_based_add_function, unspec_based_add_lane_function)
+ 	(unspec_based_lane_function, unspec_based_pred_function)
+ 	(unspec_based_qadd_function, unspec_based_qadd_lane_function)
+ 	(unspec_based_qsub_function, unspec_based_qsub_lane_function)
+ 	(unspec_based_sub_function, unspec_based_sub_lane_function): New
+ 	typedefs.
+ 	(unspec_based_fused_function): New class.
+ 	(unspec_based_mla_function, unspec_based_mls_function): New typedefs.
+ 	(unspec_based_fused_lane_function): New class.
+ 	(unspec_based_mla_lane_function, unspec_based_mls_lane_function): New
+ 	typedefs.
+ 	(CODE_FOR_MODE1): New macro.
+ 	(fixed_insn_function): New class.
+ 	(while_comparison): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-shapes.h (binary_long_lane)
+ 	(binary_long_opt_n, binary_narrowb_opt_n, binary_narrowt_opt_n)
+ 	(binary_to_uint, binary_wide, binary_wide_opt_n, compare, compare_ptr)
+ 	(load_ext_gather_index_restricted, load_ext_gather_offset_restricted)
+ 	(load_gather_sv_restricted, shift_left_imm_long): Declare.
+ 	(shift_left_imm_to_uint, shift_right_imm_narrowb): Likewise.
+ 	(shift_right_imm_narrowt, shift_right_imm_narrowb_to_uint): Likewise.
+ 	(shift_right_imm_narrowt_to_uint, store_scatter_index_restricted)
+ 	(store_scatter_offset_restricted, tbl_tuple, ternary_long_lane)
+ 	(ternary_long_opt_n, ternary_qq_lane_rotate, ternary_qq_rotate)
+ 	(ternary_shift_left_imm, ternary_shift_right_imm, ternary_uint)
+ 	(unary_convert_narrowt, unary_long, unary_narrowb, unary_narrowt)
+ 	(unary_narrowb_to_uint, unary_narrowt_to_uint, unary_to_int): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-shapes.cc (apply_predication):
+ 	Also add an initial argument for unary_convert_narrowt, regardless
+ 	of the predication type.
+ 	(build_32_64): Allow loads and stores to specify MODE_none.
+ 	(build_sv_index64, build_sv_uint_offset): New functions.
+ 	(long_type_suffix): New function.
+ 	(binary_imm_narrowb_base, binary_imm_narrowt_base): New classes.
+ 	(binary_imm_long_base, load_gather_sv_base): Likewise.
+ 	(shift_right_imm_narrow_wrapper, ternary_shift_imm_base): Likewise.
+ 	(ternary_resize2_opt_n_base, ternary_resize2_lane_base): Likewise.
+ 	(unary_narrowb_base, unary_narrowt_base): Likewise.
+ 	(binary_long_lane_def, binary_long_lane): New shape.
+ 	(binary_long_opt_n_def, binary_long_opt_n): Likewise.
+ 	(binary_narrowb_opt_n_def, binary_narrowb_opt_n): Likewise.
+ 	(binary_narrowt_opt_n_def, binary_narrowt_opt_n): Likewise.
+ 	(binary_to_uint_def, binary_to_uint): Likewise.
+ 	(binary_wide_def, binary_wide): Likewise.
+ 	(binary_wide_opt_n_def, binary_wide_opt_n): Likewise.
+ 	(compare_def, compare): Likewise.
+ 	(compare_ptr_def, compare_ptr): Likewise.
+ 	(load_ext_gather_index_restricted_def,
+ 	load_ext_gather_index_restricted): Likewise.
+ 	(load_ext_gather_offset_restricted_def,
+ 	load_ext_gather_offset_restricted): Likewise.
+ 	(load_gather_sv_def): Inherit from load_gather_sv_base.
+ 	(load_gather_sv_restricted_def, load_gather_sv_restricted): New shape.
+ 	(shift_left_imm_def, shift_left_imm): Likewise.
+ 	(shift_left_imm_long_def, shift_left_imm_long): Likewise.
+ 	(shift_left_imm_to_uint_def, shift_left_imm_to_uint): Likewise.
+ 	(store_scatter_index_restricted_def,
+ 	store_scatter_index_restricted): Likewise.
+ 	(store_scatter_offset_restricted_def,
+ 	store_scatter_offset_restricted): Likewise.
+ 	(tbl_tuple_def, tbl_tuple): Likewise.
+ 	(ternary_long_lane_def, ternary_long_lane): Likewise.
+ 	(ternary_long_opt_n_def, ternary_long_opt_n): Likewise.
+ 	(ternary_qq_lane_def): Inherit from ternary_resize2_lane_base.
+ 	(ternary_qq_lane_rotate_def, ternary_qq_lane_rotate): New shape
+ 	(ternary_qq_opt_n_def): Inherit from ternary_resize2_opt_n_base.
+ 	(ternary_qq_rotate_def, ternary_qq_rotate): New shape.
+ 	(ternary_shift_left_imm_def, ternary_shift_left_imm): Likewise.
+ 	(ternary_shift_right_imm_def, ternary_shift_right_imm): Likewise.
+ 	(ternary_uint_def, ternary_uint): Likewise.
+ 	(unary_convert): Fix typo in comment.
+ 	(unary_convert_narrowt_def, unary_convert_narrowt): New shape.
+ 	(unary_long_def, unary_long): Likewise.
+ 	(unary_narrowb_def, unary_narrowb): Likewise.
+ 	(unary_narrowt_def, unary_narrowt): Likewise.
+ 	(unary_narrowb_to_uint_def, unary_narrowb_to_uint): Likewise.
+ 	(unary_narrowt_to_uint_def, unary_narrowt_to_uint): Likewise.
+ 	(unary_to_int_def, unary_to_int): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-base.cc (unspec_cmla)
+ 	(unspec_fcmla, unspec_cond_fcmla, expand_mla_mls_lane): New functions.
+ 	(svasrd_impl): Delete.
+ 	(svcadd_impl::expand): Handle integer operations too.
+ 	(svcmla_impl::expand, svcmla_lane::expand): Likewise, using the
+ 	new functions to derive the unspec numbers.
+ 	(svmla_svmls_lane_impl): Replace with...
+ 	(svmla_lane_impl, svmls_lane_impl): ...these new classes.  Handle
+ 	integer operations too.
+ 	(svwhile_impl): Rename to...
+ 	(svwhilelx_impl): ...this and inherit from while_comparison.
+ 	(svasrd): Use unspec_based_function.
+ 	(svmla_lane): Use svmla_lane_impl.
+ 	(svmls_lane): Use svmls_lane_impl.
+ 	(svrecpe, svrsqrte): Handle unsigned integer operations too.
+ 	(svwhilele, svwhilelt): Use svwhilelx_impl.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.h: New file.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.cc: Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.def: Likewise.
+ 	* config/aarch64/aarch64-sve-builtins.def: Include
+ 	aarch64-sve-builtins-sve2.def.
+ 
+ 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_sve_arith_immediate_p)
+ 	(aarch64_sve_sqadd_sqsub_immediate_p): Add a machine_mode argument.
+ 	* config/aarch64/aarch64.c (aarch64_sve_arith_immediate_p)
+ 	(aarch64_sve_sqadd_sqsub_immediate_p): Likewise.  Handle scalar
+ 	immediates as well as vector ones.
+ 	* config/aarch64/predicates.md (aarch64_sve_arith_immediate)
+ 	(aarch64_sve_sub_arith_immediate, aarch64_sve_qadd_immediate)
+ 	(aarch64_sve_qsub_immediate): Update calls accordingly.
+ 
+ 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve2.md: Add banner comments.
+ 	(<su>mulh<r>s<mode>3): Move further up file.
+ 	(<su>mull<bt><Vwide>, <r>shrnb<mode>, <r>shrnt<mode>)
+ 	(*aarch64_sve2_sra<mode>): Move further down file.
+ 	* config/aarch64/t-aarch64 (s-check-sve-md): Check aarch64-sve2.md too.
+ 
+ 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/iterators.md (SVE_WHILE): Add UNSPEC_WHILERW
+ 	and UNSPEC_WHILEWR.
+ 	(while_optab_cmp): Handle them.
+ 	* config/aarch64/aarch64-sve.md
+ 	(*while_<while_optab_cmp><GPI:mode><PRED_ALL:mode>_ptest): Make public
+ 	and add a "@" marker.
+ 	* config/aarch64/aarch64-sve2.md (check_<raw_war>_ptrs<mode>): Use it
+ 	instead of gen_aarch64_sve2_while_ptest.
+ 	(@aarch64_sve2_while<cmp_op><GPI:mode><PRED_ALL:mode>_ptest): Delete.
+ 
+ 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (UNSPEC_WHILE_LE): Rename to...
+ 	(UNSPEC_WHILELE): ...this.
+ 	(UNSPEC_WHILE_LO): Rename to...
+ 	(UNSPEC_WHILELO): ...this.
+ 	(UNSPEC_WHILE_LS): Rename to...
+ 	(UNSPEC_WHILELS): ...this.
+ 	(UNSPEC_WHILE_LT): Rename to...
+ 	(UNSPEC_WHILELT): ...this.
+ 	* config/aarch64/iterators.md (SVE_WHILE): Update accordingly.
+ 	(cmp_op, while_optab_cmp): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_sve_move_pred_via_while): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-base.cc (svwhilele): Likewise.
+ 	(svwhilelt): Likewise.
+ 
+ 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins-shapes.h (unary_count): Delete.
+ 	(unary_to_uint): Define.
+ 	* config/aarch64/aarch64-sve-builtins-shapes.cc (unary_count_def)
+ 	(unary_count): Rename to...
+ 	(unary_to_uint_def, unary_to_uint): ...this.
+ 	* config/aarch64/aarch64-sve-builtins-base.def: Update accordingly.
+ 
+ 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins-functions.h
+ 	(code_for_mode_function): New class.
+ 	(CODE_FOR_MODE0, QUIET_CODE_FOR_MODE0): New macros.
+ 	* config/aarch64/aarch64-sve-builtins-base.cc (svcompact_impl)
+ 	(svext_impl, svmul_lane_impl, svsplice_impl, svtmad_impl): Delete.
+ 	(svcompact, svext, svsplice): Use QUIET_CODE_FOR_MODE0.
+ 	(svmul_lane, svtmad): Use CODE_FOR_MODE0.
+ 
+ 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/iterators.md (addsub): New code attribute.
+ 	* config/aarch64/aarch64-simd.md (aarch64_<su_optab><optab><mode>):
+ 	Re-express as...
+ 	(aarch64_<su_optab>q<addsub><mode>): ...this, making the same change
+ 	in the asm string and attributes.  Fix indentation.
+ 	* config/aarch64/aarch64-sve.md (@aarch64_<su_optab><optab><mode>):
+ 	Re-express as...
+ 	(@aarch64_sve_<optab><mode>): ...this.
+ 	* config/aarch64/aarch64-sve-builtins.h
+ 	(function_expander::expand_signed_unpred_op): Delete.
+ 	* config/aarch64/aarch64-sve-builtins.cc
+ 	(function_expander::expand_signed_unpred_op): Likewise.
+ 	(function_expander::map_to_rtx_codes): If the optab isn't defined,
+ 	try using code_for_aarch64_sve instead.
+ 	* config/aarch64/aarch64-sve-builtins-base.cc (svqadd_impl): Delete.
+ 	(svqsub_impl): Likewise.
+ 	(svqadd, svqsub): Use rtx_code_function instead.
+ 
+ 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/iterators.md (SRHSUB, URHSUB): Delete.
+ 	(HADDSUB, sur, addsub): Remove them.
+ 
+ 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-nrv.c (pass_return_slot::execute): Handle all internal
+ 	functions the same way, rather than singling out those that
+ 	aren't mapped directly to optabs.
+ 
+ 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* target.def (compatible_vector_types_p): New target hook.
+ 	* hooks.h (hook_bool_const_tree_const_tree_true): Declare.
+ 	* hooks.c (hook_bool_const_tree_const_tree_true): New function.
+ 	* doc/tm.texi.in (TARGET_COMPATIBLE_VECTOR_TYPES_P): New hook.
+ 	* doc/tm.texi: Regenerate.
+ 	* gimple-expr.c: Include target.h.
+ 	(useless_type_conversion_p): Use targetm.compatible_vector_types_p.
+ 	* config/aarch64/aarch64.c (aarch64_compatible_vector_types_p): New
+ 	function.
+ 	(TARGET_COMPATIBLE_VECTOR_TYPES_P): Define.
+ 	* config/aarch64/aarch64-sve-builtins.cc (gimple_folder::convert_pred):
+ 	Use the original predicate if it already has a suitable type.
+ 
+ 2020-01-09  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* cgraph.h (cgraph_edge): Make remove, set_call_stmt, make_direct,
+ 	resolve_speculation and redirect_call_stmt_to_callee static.  Change
+ 	return type of set_call_stmt to cgraph_edge *.
+ 	* auto-profile.c (afdo_indirect_call): Adjust call to
+ 	redirect_call_stmt_to_callee.
+ 	* cgraph.c (cgraph_edge::set_call_stmt): Make return cgraph-edge *,
+ 	make the this pointer explicit, adjust self-recursive calls and the
+ 	call top make_direct.  Return the resulting edge.
+ 	(cgraph_edge::remove): Make this pointer explicit.
+ 	(cgraph_edge::resolve_speculation): Likewise, adjust call to remove.
+ 	(cgraph_edge::make_direct): Likewise, adjust call to
+ 	resolve_speculation.
+ 	(cgraph_edge::redirect_call_stmt_to_callee): Likewise, also adjust
+ 	call to set_call_stmt.
+ 	(cgraph_update_edges_for_call_stmt_node): Update call to
+ 	set_call_stmt and remove.
+ 	* cgraphclones.c (cgraph_node::set_call_stmt_including_clones):
+ 	Renamed edge to master_edge.  Adjusted calls to set_call_stmt.
+ 	(cgraph_node::create_edge_including_clones): Moved "first" definition
+ 	of edge to the block where it was used.  Adjusted calls to
+ 	set_call_stmt.
+ 	(cgraph_node::remove_symbol_and_inline_clones): Adjust call to
+ 	cgraph_edge::remove.
+ 	* cgraphunit.c (walk_polymorphic_call_targets): Adjusted calls to
+ 	make_direct and redirect_call_stmt_to_callee.
+ 	* ipa-fnsummary.c (redirect_to_unreachable): Adjust calls to
+ 	resolve_speculation and make_direct.
+ 	* ipa-inline-transform.c (inline_transform): Adjust call to
+ 	redirect_call_stmt_to_callee.
+ 	(check_speculations_1):: Adjust call to resolve_speculation.
+ 	* ipa-inline.c (resolve_noninline_speculation): Adjust call to
+ 	resolve-speculation.
+ 	(inline_small_functions): Adjust call to resolve_speculation.
+ 	(ipa_inline): Likewise.
+ 	* ipa-prop.c (ipa_make_edge_direct_to_target): Adjust call to
+ 	make_direct.
+ 	* ipa-visibility.c (function_and_variable_visibility): Make iteration
+ 	safe with regards to edge removal, adjust calls to
+ 	redirect_call_stmt_to_callee.
+ 	* ipa.c (walk_polymorphic_call_targets): Adjust calls to make_direct
+ 	and redirect_call_stmt_to_callee.
+ 	* multiple_target.c (create_dispatcher_calls): Adjust call to
+ 	redirect_call_stmt_to_callee
+ 	(redirect_to_specific_clone): Likewise.
+ 	* tree-cfgcleanup.c (delete_unreachable_blocks_update_callgraph):
+ 	Adjust calls to cgraph_edge::remove.
+ 	* tree-inline.c (copy_bb): Adjust call to set_call_stmt.
+ 	(redirect_all_calls): Adjust call to redirect_call_stmt_to_callee.
+ 	(expand_call_inline): Adjust call to cgraph_edge::remove.
+ 
+ 2020-01-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* params.opt: Set Optimization for
+ 	param_max_speculative_devirt_maydefs.
+ 
+ 2020-01-09  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/93200
+ 	PR fortran/92956
+ 	* builtins.c (compute_objsize): Avoid handling MEM_REFs of vector type.
+ 
+ 2020-01-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* auto-profile.c (auto_profile): Use opt_for_fn
+ 	for a parameter.
+ 	* ipa-cp.c (ipcp_lattice::add_value): Likewise.
+ 	(propagate_vals_across_arith_jfunc): Likewise.
+ 	(hint_time_bonus): Likewise.
+ 	(incorporate_penalties): Likewise.
+ 	(good_cloning_opportunity_p): Likewise.
+ 	(perform_estimation_of_a_value): Likewise.
+ 	(estimate_local_effects): Likewise.
+ 	(ipcp_propagate_stage): Likewise.
+ 	* ipa-fnsummary.c (decompose_param_expr): Likewise.
+ 	(set_switch_stmt_execution_predicate): Likewise.
+ 	(analyze_function_body): Likewise.
+ 	* ipa-inline-analysis.c (offline_size): Likewise.
+ 	* ipa-inline.c (early_inliner): Likewise.
+ 	* ipa-prop.c (ipa_analyze_node): Likewise.
+ 	(ipcp_transform_function): Likewise.
+ 	* ipa-sra.c (process_scan_results): Likewise.
+ 	(ipa_sra_summarize_function): Likewise.
+ 	* params.opt: Rename ipcp-unit-growth to
+ 	ipa-cp-unit-growth.  Add Optimization for various
+ 	IPA-related parameters.
+ 
+ 2020-01-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/93054
+ 	* gimplify.c (gimplify_expr): Deal with NOP definitions.
+ 
+ 2020-01-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93040
+ 	* gimple-ssa-store-merging.c (find_bswap_or_nop): Raise search limit.
+ 
+ 2020-01-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* common/config/avr/avr-common.c (avr_option_optimization_table)
+ 	[OPT_LEVELS_1_PLUS]: Set -fsplit-wide-types-early.
+ 
+ 2020-01-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cgraphclones.c (symbol_table::materialize_all_clones):
+ 	Use cgraph_node::dump_name.
+ 
+ 2020-01-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR inline-asm/93202
+ 	* config/riscv/riscv.c (riscv_print_operand_reloc): Use
+ 	output_operand_lossage instead of gcc_unreachable.
+ 	* doc/md.texi (riscv f constraint): Fix typo.
+ 
+ 	PR target/93141
+ 	* config/i386/i386.md (subv<mode>4): Use SWIDWI iterator instead of
+ 	SWI.  Use <general_hilo_operand> instead of <general_operand>.  Use
+ 	CONST_SCALAR_INT_P instead of CONST_INT_P.
+ 	(*subv<mode>4_1): Rename to ...
+ 	(subv<mode>4_1): ... this.
+ 	(*subv<dwi>4_doubleword, *addv<dwi>4_doubleword_1): New
+ 	define_insn_and_split patterns.
+ 	(*subv<mode>4_overflow_1, *addv<mode>4_overflow_2): New define_insn
+ 	patterns.
+ 
+ 2020-01-08  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* vec.c (class selftest::count_dtor): New class.
+ 	(selftest::test_auto_delete_vec): New test.
+ 	(selftest::vec_c_tests): Call it.
+ 	* vec.h (class auto_delete_vec): New class template.
+ 	(auto_delete_vec<T>::~auto_delete_vec): New dtor.
+ 
+ 2020-01-08  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* sbitmap.h (auto_sbitmap): Add operator const_sbitmap.
+ 
+ 2020-01-08  Jim Wilson  <jimw@sifive.com>
+ 
+ 	* config/riscv/riscv.c (riscv_legitimize_tls_address): Ifdef out
+ 	use of TLS_MODEL_LOCAL_EXEC when not pic.
+ 
+ 2020-01-08  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* hash-map-tests.c (selftest::test_map_of_strings_to_int): Fix
+ 	memory leak.
+ 
+ 2020-01-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93187
+ 	* config/i386/i386.md (*stack_protect_set_2_<mode> peephole2,
+ 	*stack_protect_set_3 peephole2): Also check that the second
+ 	insns source is general_operand.
+ 
+ 	PR target/93174
+ 	* config/i386/i386.md (addcarry<mode>_0): Use nonimmediate_operand
+ 	predicate for output operand instead of register_operand.
+ 	(addcarry<mode>, addcarry<mode>_1): Likewise.  Add alternative with
+ 	memory destination and non-memory operands[2].
+ 
+ 2020-01-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cgraph.c (cgraph_node::dump): Use ::dump_name or
+ 	::dump_asm_name instead of (::name or ::asm_name).
+ 	* cgraphclones.c (symbol_table::materialize_all_clones): Likewise.
+ 	* cgraphunit.c (walk_polymorphic_call_targets): Likewise.
+ 	(analyze_functions): Likewise.
+ 	(expand_all_functions): Likewise.
+ 	* ipa-cp.c (ipcp_cloning_candidate_p): Likewise.
+ 	(propagate_bits_across_jump_function): Likewise.
+ 	(dump_profile_updates): Likewise.
+ 	(ipcp_store_bits_results): Likewise.
+ 	(ipcp_store_vr_results): Likewise.
+ 	* ipa-devirt.c (dump_targets): Likewise.
+ 	* ipa-fnsummary.c (analyze_function_body): Likewise.
+ 	* ipa-hsa.c (check_warn_node_versionable): Likewise.
+ 	(process_hsa_functions): Likewise.
+ 	* ipa-icf.c (sem_item_optimizer::merge_classes): Likewise.
+ 	(set_alias_uids): Likewise.
+ 	* ipa-inline-transform.c (save_inline_function_body): Likewise.
+ 	* ipa-inline.c (recursive_inlining): Likewise.
+ 	(inline_to_all_callers_1): Likewise.
+ 	(ipa_inline): Likewise.
+ 	* ipa-profile.c (ipa_propagate_frequency_1): Likewise.
+ 	(ipa_propagate_frequency): Likewise.
+ 	* ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
+ 	(remove_described_reference): Likewise.
+ 	* ipa-pure-const.c (worse_state): Likewise.
+ 	(check_retval_uses): Likewise.
+ 	(analyze_function): Likewise.
+ 	(propagate_pure_const): Likewise.
+ 	(propagate_nothrow): Likewise.
+ 	(dump_malloc_lattice): Likewise.
+ 	(propagate_malloc): Likewise.
+ 	(pass_local_pure_const::execute): Likewise.
+ 	* ipa-visibility.c (optimize_weakref): Likewise.
+ 	(function_and_variable_visibility): Likewise.
+ 	* ipa.c (symbol_table::remove_unreachable_nodes): Likewise.
+ 	(ipa_discover_variable_flags): Likewise.
+ 	* lto-streamer-out.c (output_function): Likewise.
+ 	(output_constructor): Likewise.
+ 	* tree-inline.c (copy_bb): Likewise.
+ 	* tree-ssa-structalias.c (ipa_pta_execute): Likewise.
+ 	* varpool.c (symbol_table::remove_unreferenced_decls): Likewise.
+ 
+ 2020-01-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/93199
+ 	* tree-eh.c (sink_clobbers): Update virtual operands for
+ 	the first and last stmt only.  Add a dry-run capability.
+ 	(pass_lower_eh_dispatch::execute): Perform clobber sinking
+ 	after CFG manipulations and in RPO order to catch all
+ 	secondary opportunities reliably.
+ 
+ 2020-01-08  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/93182
+ 	* doc/invoke.texi (AVR Options) <-nodevicespecs>: Document.
+ 
+ 2019-01-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/93199
+ 	* gimple-fold.c (rewrite_to_defined_overflow): Mark stmt modified.
+ 	* tree-ssa-loop-im.c (move_computations_worker): Properly adjust
+ 	virtual operand, also updating SSA use.
+ 	* gimple-loop-interchange.cc (loop_cand::undo_simple_reduction):
+ 	Update stmt after resetting virtual operand.
+ 	(tree_loop_interchange::move_code_to_inner_loop): Likewise.
+ 	* gimple-iterator.c (gsi_remove): When not removing the stmt
+ 	permanently do not delink immediate uses or mark the stmt modified.
+ 
+ 2020-01-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	* ipa-fnsummary.c (dump_ipa_call_summary): Use symtab_node::dump_name.
+ 	(ipa_call_context::estimate_size_and_time): Likewise.
+ 	(inline_analyze_function): Likewise.
+ 
+ 2020-01-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cgraph.c (cgraph_node::dump): Use systematically
+ 	dump_asm_name.
+ 
+ 2020-01-08  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Add -nodevicespecs option for avr.
+ 
+ 	PR target/93182
+ 	* config/avr/avr.opt (-nodevicespecs): New driver option.
+ 	* config/avr/driver-avr.c (avr_devicespecs_file): Only issue
+ 	"-specs=device-specs/..." if that option is not set.
+ 	* doc/invoke.texi (AVR Options) <-nodevicespecs>: Document.
+ 
+ 2020-01-08  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Implement 64-bit double functions for avr.
+ 
+ 	PR target/92055
+ 	* config.gcc (tm_defines) [target=avr]: Support --with-libf7,
+ 	--with-double-comparison.
+ 	* doc/install.texi: Document them.
+ 	* config/avr/avr-c.c (avr_cpu_cpp_builtins)
+ 	<WITH_LIBF7_LIBGCC, WITH_LIBF7_MATH, WITH_LIBF7_MATH_SYMBOLS>
+ 	<WITH_DOUBLE_COMPARISON>: New built-in defines.
+ 	* doc/invoke.texi (AVR Built-in Macros): Document them.
+ 	* config/avr/avr-protos.h (avr_float_lib_compare_returns_bool): New.
+ 	* config/avr/avr.c (avr_float_lib_compare_returns_bool): New function.
+ 	* config/avr/avr.h (FLOAT_LIB_COMPARE_RETURNS_BOOL): New macro.
+ 
+ 2020-01-08  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/93188
+ 	* config/arm/t-multilib (MULTILIB_MATCHES): Add rules to match
+ 	armv7-a{+mp,+sec,+mp+sec} to appropriate armv7 multilib variants
+ 	when only building rm-profile multilibs.
+ 
+ 2020-01-08  Feng Xue  <fxue@os.amperecomputing.com>
+ 
+ 	PR ipa/93084
+ 	* ipa-cp.c (self_recursively_generated_p): Find matched aggregate
+ 	lattice for a value to check.
+ 	(propagate_vals_across_arith_jfunc): Add an assertion to ensure
+ 	finite propagation in self-recursive scc.
+ 
+ 2020-01-08  Luo Xiong Hu  <luoxhu@linux.ibm.com>
+ 
+ 	* ipa-inline.c (caller_growth_limits): Restore the AND.
+ 
+ 2020-01-07  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (VEC_1REG_INT_ALT): Delete iterator.
+ 	(VEC_ALLREG_ALT): New iterator.
+ 	(VEC_ALLREG_INT_MODE): New iterator.
+ 	(VCMP_MODE): New iterator.
+ 	(VCMP_MODE_INT): New iterator.
+ 	(vec_cmpu<mode>di): Use VCMP_MODE_INT.
+ 	(vec_cmp<u>v64qidi): New define_expand.
+ 	(vec_cmp<mode>di_exec): Use VCMP_MODE.
+ 	(vec_cmpu<mode>di_exec): New define_expand.
+ 	(vec_cmp<u>v64qidi_exec): New define_expand.
+ 	(vec_cmp<mode>di_dup): Use VCMP_MODE.
+ 	(vec_cmp<mode>di_dup_exec): Use VCMP_MODE.
+ 	(vcond<VEC_ALL1REG_MODE:mode><VEC_1REG_ALT:mode>): Rename ...
+ 	(vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>): ... to this.
+ 	(vcond<VEC_ALL1REG_MODE:mode><VEC_1REG_ALT:mode>_exec): Rename ...
+ 	(vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>_exec): ... to this.
+ 	(vcondu<VEC_ALL1REG_MODE:mode><VEC_1REG_INT_ALT:mode>): Rename ...
+ 	(vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>): ... to this.
+ 	(vcondu<VEC_ALL1REG_MODE:mode><VEC_1REG_INT_ALT:mode>_exec): Rename ...
+ 	(vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>_exec): ... to
+ 	this.
+ 	* config/gcn/gcn.c (print_operand): Fix 8 and 16 bit suffixes.
+ 	* config/gcn/gcn.md (expander): Add sign_extend and zero_extend.
+ 
+ 2020-01-07  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/constraints.md (DA): Update description and match.
+ 	(DB): Likewise.
+ 	(Db): New constraint.
+ 	* config/gcn/gcn-protos.h (gcn_inline_constant64_p): Add second
+ 	parameter.
+ 	* config/gcn/gcn.c (gcn_inline_constant64_p): Add 'mixed' parameter.
+ 	Implement 'Db' mixed immediate type.
+ 	* config/gcn/gcn-valu.md (addcv64si3<exec_vcc>): Rework constraints.
+ 	(addcv64si3_dup<exec_vcc>): Delete.
+ 	(subcv64si3<exec_vcc>): Rework constraints.
+ 	(addv64di3): Rework constraints.
+ 	(addv64di3_exec): Rework constraints.
+ 	(subv64di3): Rework constraints.
+ 	(addv64di3_dup): Delete.
+ 	(addv64di3_dup_exec): Delete.
+ 	(addv64di3_zext): Rework constraints.
+ 	(addv64di3_zext_exec): Rework constraints.
+ 	(addv64di3_zext_dup): Rework constraints.
+ 	(addv64di3_zext_dup_exec): Rework constraints.
+ 	(addv64di3_zext_dup2): Rework constraints.
+ 	(addv64di3_zext_dup2_exec): Rework constraints.
+ 	(addv64di3_sext_dup2): Rework constraints.
+ 	(addv64di3_sext_dup2_exec): Rework constraints.
+ 
+ 2020-01-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* doc/sourcebuild.texi (arm_little_endian, arm_nothumb): Documented
+ 	existing target checks.
+ 
+ 2020-01-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	* doc/install.texi: Bump minimal supported MPC version.
+ 
+ 2020-01-07  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* langhooks-def.h (lhd_simulate_enum_decl): Declare.
+ 	(LANG_HOOKS_SIMULATE_ENUM_DECL): Use it.
+ 	* langhooks.c: Include stor-layout.h.
+ 	(lhd_simulate_enum_decl): New function.
+ 	* config/aarch64/aarch64-sve-builtins.cc (init_builtins): Call
+ 	handle_arm_sve_h for the LTO frontend.
+ 	(register_vector_type): Cope with null returns from pushdecl.
+ 
+ 2020-01-07  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_sve::svbool_type_p)
+ 	(aarch64_sve::nvectors_if_data_type): Replace with...
+ 	(aarch64_sve::builtin_type_p): ...this.
+ 	* config/aarch64/aarch64-sve-builtins.cc: Include attribs.h.
+ 	(find_vector_type): Delete.
+ 	(add_sve_type_attribute): New function.
+ 	(lookup_sve_type_attribute): Likewise.
+ 	(register_builtin_types): Add an "SVE type" attribute to each type.
+ 	(register_tuple_type): Likewise.
+ 	(svbool_type_p, nvectors_if_data_type): Delete.
+ 	(mangle_builtin_type): Use lookup_sve_type_attribute.
+ 	(builtin_type_p): Likewise.  Add an overload that returns the
+ 	number of constituent vector and predicate registers.
+ 	* config/aarch64/aarch64.c (aarch64_sve_argument_p): Delete.
+ 	(aarch64_returns_value_in_sve_regs_p): Use aarch64_sve::builtin_type_p
+ 	instead of aarch64_sve_argument_p.
+ 	(aarch64_takes_arguments_in_sve_regs_p): Likewise.
+ 	(aarch64_pass_by_reference): Likewise.
+ 	(aarch64_function_value_1): Likewise.
+ 	(aarch64_return_in_memory): Likewise.
+ 	(aarch64_layout_arg): Likewise.
+ 
+ 2020-01-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/93156
+ 	* tree-ssa-ccp.c (bit_value_binop): For x * x note that the second
+ 	least significant bit is always clear.
+ 
+ 	PR tree-optimization/93118
+ 	* match.pd ((x >> c) << c -> x & (-1<<c)): Add nop_convert?.  Add new
+ 	simplifier with two intermediate conversions.
+ 
+ 2020-01-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	* params.opt: Add Optimization for various parameters.
+ 
+ 2020-01-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/83411
+ 	* doc/extend.texi: Explain cloning for target_clone
+ 	attribute.
+ 
+ 2020-01-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/92860
+ 	* common.opt: Make in Optimization option
+ 	as it is affected by -O0, which is an Optimization
+ 	option.
+ 	* tree-inline.c (tree_inlinable_function_p):
+ 	Use opt_for_fn for warn_inline.
+ 	(expand_call_inline): Likewise.
+ 
+ 2020-01-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/92860
+ 	* common.opt: Make flag_ree as optimization
+ 	attribute. 
+ 
+ 2020-01-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR optimization/92860
+ 	* params.opt: Mark param_min_crossjump_insns with Optimization
+ 	keyword.
+ 
+ 2020-01-07  Luo Xiong Hu  <luoxhu@linux.ibm.com>
+ 
+ 	* ipa-inline-analysis.c (estimate_growth): Fix typo.
+ 	* ipa-inline.c (caller_growth_limits): Use OR instead of AND.
+ 
+ 2020-01-06  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (hard_reg_and_mode_to_addr_mask): New
+ 	helper function to return the valid addressing formats for a given
+ 	hard register and mode.
+ 	(rs6000_adjust_vec_address): Call hard_reg_and_mode_to_addr_mask.
+ 
+ 	* config/rs6000/constraints.md (Q constraint): Update
+ 	documentation.
+ 	* doc/md.texi (RS/6000 constraints): Update 'Q' cosntraint
+ 	documentation.
+ 
+ 	* config/rs6000/vsx.md (vsx_extract_<mode>_var, VSX_D iterator):
+ 	Use 'Q' for doing vector extract from memory.
+ 	(vsx_extract_v4sf_var): Use 'Q' for doing vector extract from
+ 	memory.
+ 	(vsx_extract_<mode>_var, VSX_EXTRACT_I iterator): Use 'Q' for
+ 	doing vector extract from memory.
+ 	(vsx_extract_<mode>_<VS_scalar>mode_var): Use 'Q' for doing vector
+ 	extract from memory.
+ 
+ 	* config/rs6000/rs6000.c (rs6000_adjust_vec_address): Add support
+ 	for the offset being 34-bits when -mcpu=future is used.
+ 
+ 2020-01-06  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.md: Revert change to use ordered_comparison_operator
+ 	instead of cmpib_comparison_operator in cmpib patterns.
+ 	* config/pa/predicates.md (cmpib_comparison_operator): Revert removal
+ 	of cmpib_comparison_operator.  Revise comment.
+ 
+ 2020-01-06  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vect-slp.c (vect_build_slp_tree_1): Require all shifts
+ 	in an IFN_DIV_POW2 node to be equal.
+ 
+ 2020-01-06  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vect-stmts.c (vect_check_load_store_mask): Rename to...
+ 	(vect_check_scalar_mask): ...this.
+ 	(vectorizable_store, vectorizable_load): Update call accordingly.
+ 	(vectorizable_call): Use vect_check_scalar_mask to check the mask
+ 	argument in calls to conditional internal functions.
+ 
+ 2020-01-06  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (subv64di3): Use separate alternatives for
+ 	'0' matching inputs.
+ 	(subv64di3_exec): Likewise.
+ 
+ 2020-01-06  Bryan Stenson  <bryan@siliconvortex.com>
+ 
+ 	* config/mips/mips.c (vr4130_align_insns): Fix typo.
+ 	* doc/md.texi (movstr): Likewise.
+ 
+ 2020-01-06  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (vec_extract<mode><scalar_mode>): Add early
+ 	clobber.
+ 
+ 2020-01-06  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/t-aarch64 ($(srcdir)/config/aarch64/aarch64-tune.md):
+ 	Depend on...
+ 	(s-aarch64-tune-md): ...this new stamp file.  Pipe the new contents
+ 	to a temporary file and use move-if-change to update the real
+ 	file where necessary.
+ 
+ 2020-01-06  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve.md (@aarch64_sel_dup<mode>): Use Upl
+ 	rather than Upa for CPY /M.
+ 
+ 2020-01-06  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn.c (gcn_inline_constant_p): Allow 64 as an inline
+ 	immediate.
+ 
+ 2020-01-06  Martin Liska  <mliska@suse.cz>
+ 
+     PR tree-optimization/92860
+     * params.opt: Mark param_max_combine_insns with Optimization
+     keyword. 
+ 
+ 2020-01-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93141
+ 	* config/i386/i386.md (SWIDWI): New mode iterator.
+ 	(DWI, dwi): Add TImode variants.
+ 	(addv<mode>4): Use SWIDWI iterator instead of SWI.  Use
+ 	<general_hilo_operand> instead of <general_operand>.  Use
+ 	CONST_SCALAR_INT_P instead of CONST_INT_P.
+ 	(*addv<mode>4_1): Rename to ...
+ 	(addv<mode>4_1): ... this.
+ 	(QWI): New mode attribute.
+ 	(*addv<dwi>4_doubleword, *addv<dwi>4_doubleword_1): New
+ 	define_insn_and_split patterns.
+ 	(*addv<mode>4_overflow_1, *addv<mode>4_overflow_2): New define_insn
+ 	patterns.
+ 	(uaddv<mode>4): Use SWIDWI iterator instead of SWI.  Use
+ 	<general_hilo_operand> instead of <general_operand>.
+ 	(*addcarry<mode>_1): New define_insn.
+ 	(*add<dwi>3_doubleword_cc_overflow_1): New define_insn_and_split.
+ 
+ 2020-01-03  Konstantin Kharlamov  <Hi-Angel@yandex.ru>
+ 
+ 	* gdbinit.in (pr, prl, pt, pct, pgg, pgq, pgs, pge, pmz, pdd, pbs, pbm):
+ 	Use "call" instead of "set".
+ 
+ 2020-01-03  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/92917
+ 	* ipa-cp.c (print_all_lattices): Skip functions without info.
+ 
+ 2020-01-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93089
+ 	* config/i386/i386-options.c (ix86_simd_clone_adjust): If
+ 	TARGET_PREFER_AVX128, use prefer-vector-width=256 for 'c' and 'd'
+ 	simd clones.  If TARGET_PREFER_AVX256, use prefer-vector-width=512
+ 	for 'e' simd clones.
+ 
+ 	PR target/93089
+ 	* config/i386/i386.opt (x_prefer_vector_width_type): Remove TargetSave
+ 	entry.
+ 	(mprefer-vector-width=): Add Save.
+ 	* config/i386/i386-options.c (ix86_target_string): Add PVW argument, print
+ 	-mprefer-vector-width= if non-zero.  Fix up -mfpmath= comment.
+ 	(ix86_debug_options, ix86_function_specific_print): Adjust
+ 	ix86_target_string callers.
+ 	(ix86_valid_target_attribute_inner_p): Handle prefer-vector-width=.
+ 	(ix86_valid_target_attribute_tree): Likewise.
+ 	* config/i386/i386-options.h (ix86_target_string): Add PVW argument.
+ 	* config/i386/i386-expand.c (ix86_expand_builtin): Adjust
+ 	ix86_target_string caller.
+ 
+ 	PR target/93110
+ 	* config/i386/i386.md (abs<mode>2): Use expand_simple_binop instead of
+ 	emitting ASHIFTRT, XOR and MINUS by hand.  Use gen_int_mode with QImode
+ 	instead of gen_int_shift_amount + convert_modes.
+ 
+ 	PR rtl-optimization/93088
+ 	* loop-iv.c (find_single_def_src): Punt after looking through
+ 	128 reg copies for regs with single definitions.  Move definitions
+ 	to first uses.
+ 
+ 2020-01-02  Dennis Zhang  <dennis.zhang@arm.com>
+ 
+ 	* config/arm/arm-c.c (arm_cpu_builtins): Define
+ 	__ARM_FEATURE_MATMUL_INT8, __ARM_FEATURE_BF16_VECTOR_ARITHMETIC,
+ 	__ARM_FEATURE_BF16_SCALAR_ARITHMETIC, and
+ 	__ARM_BF16_FORMAT_ALTERNATIVE when enabled.
+ 	* config/arm/arm-cpus.in (armv8_6, i8mm, bf16): New features.
+ 	* config/arm/arm-tables.opt: Regenerated.
+ 	* config/arm/arm.c (arm_option_reconfigure_globals): Initialize
+ 	arm_arch_i8mm and arm_arch_bf16 when enabled.
+ 	* config/arm/arm.h (TARGET_I8MM): New macro.
+ 	(TARGET_BF16_FP, TARGET_BF16_SIMD): Likewise.
+ 	* config/arm/t-aprofile: Add matching rules for -march=armv8.6-a.
+ 	* config/arm/t-arm-elf (all_v8_archs): Add armv8.6-a.
+ 	* config/arm/t-multilib: Add matching rules for -march=armv8.6-a.
+ 	(v8_6_a_simd_variants): New.
+ 	(v8_*_a_simd_variants): Add i8mm and bf16.
+ 	* doc/invoke.texi (armv8.6-a, i8mm, bf16): Document new options.
+ 
+ 2020-01-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR ipa/93087
+ 	* predict.c (compute_function_frequency): Don't call
+ 	warn_function_cold on functions that already have cold attribute.
+ 
+ 2020-01-01  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	PR target/67834
+ 	* config/pa/pa.c (pa_elf_select_rtx_section): New.  Put references to
+ 	COMDAT group function labels in .data.rel.ro.local section.
+ 	* config/pa/pa32-linux.h (TARGET_ASM_SELECT_RTX_SECTION): Define.
+ 
+ 	PR target/93111
+ 	* config/pa/pa.md (scc): Use ordered_comparison_operator instead of
+ 	comparison_operator in B and S integer comparisons.  Likewise, use
+ 	ordered_comparison_operator instead of cmpib_comparison_operator in
+ 	cmpib patterns.
+ 	* config/pa/predicates.md (cmpib_comparison_operator): Remove.
+ 
+ 2020-01-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Update copyright years.
+ 
+ 	* gcc.c (process_command): Update copyright notice dates.
+ 	* gcov-dump.c (print_version): Ditto.
+ 	* gcov.c (print_version): Ditto.
+ 	* gcov-tool.c (print_version): Ditto.
+ 	* gengtype.c (create_file): Ditto.
+ 	* doc/cpp.texi: Bump @copying's copyright year.
+ 	* doc/cppinternals.texi: Ditto.
+ 	* doc/gcc.texi: Ditto.
+ 	* doc/gccint.texi: Ditto.
+ 	* doc/gcov.texi: Ditto.
+ 	* doc/install.texi: Ditto.
+ 	* doc/invoke.texi: Ditto.
+ 
+ 2020-01-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa.c (walk_polymorphic_call_targets): Fix updating of overall
+ 	summary.
+ 
+ 2020-01-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/93098
+ 	* match.pd (popcount): For shift amounts, use integer_onep
+ 	or wi::to_widest () == cst instead of tree_to_uhwi () == cst
+ 	tests.  Make sure that precision is power of two larger than or equal
+ 	to 16.  Ensure shift is never negative.  Use HOST_WIDE_INT_UC macro
+ 	instead of ULL suffixed constants.  Formatting fixes.
+ 
+ Copyright (C) 2020 Free Software Foundation, Inc.
+ 
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved.
diff -Nrcpad gcc-10.3.0/gcc/DATESTAMP gcc-11.1.0/gcc/DATESTAMP
*** gcc-10.3.0/gcc/DATESTAMP	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/DATESTAMP	Tue Apr 27 10:00:12 2021
***************
*** 1 ****
! 20210408
--- 1 ----
! 20210427
diff -Nrcpad gcc-10.3.0/gcc/LANGUAGES gcc-11.1.0/gcc/LANGUAGES
*** gcc-10.3.0/gcc/LANGUAGES	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/LANGUAGES	Tue Apr 27 10:00:12 2021
*************** Feb 1, 1998:
*** 57,63 ****
      DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", 'd', 0)
  
  
! Copyright (C) 1998-2020 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 57,63 ----
      DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", 'd', 0)
  
  
! Copyright (C) 1998-2021 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-10.3.0/gcc/Makefile.in gcc-11.1.0/gcc/Makefile.in
*** gcc-10.3.0/gcc/Makefile.in	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/Makefile.in	Tue Apr 27 10:00:12 2021
***************
*** 1,7 ****
  # Makefile for GNU Compiler Collection
  # Run 'configure' to generate Makefile from Makefile.in
  
! # Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
--- 1,7 ----
  # Makefile for GNU Compiler Collection
  # Run 'configure' to generate Makefile from Makefile.in
  
! # Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
*************** VALGRIND_DRIVER_DEFINES = @valgrind_path
*** 207,212 ****
--- 207,213 ----
  # This is how we control whether or not the additional warnings are applied.
  .-warn = $(STRICT_WARN)
  build-warn = $(STRICT_WARN)
+ rtl-ssa-warn = $(STRICT_WARN)
  GCC_WARN_CFLAGS = $(LOOSE_WARN) $(C_LOOSE_WARN) $($(@D)-warn) $(if $(filter-out $(STRICT_WARN),$($(@D)-warn)),,$(C_STRICT_WARN)) $(NOCOMMON_FLAG) $($@-warn)
  GCC_WARN_CXXFLAGS = $(LOOSE_WARN) $($(@D)-warn) $(NOCOMMON_FLAG) $($@-warn)
  
*************** LINKER = $(CC)
*** 262,267 ****
--- 263,272 ----
  LINKER_FLAGS = $(CFLAGS)
  endif
  
+ # Enable Intel CET on Intel CET enabled host if needed.
+ CET_HOST_FLAGS = @CET_HOST_FLAGS@
+ COMPILER += $(CET_HOST_FLAGS)
+ 
  NO_PIE_CFLAGS = @NO_PIE_CFLAGS@
  NO_PIE_FLAG = @NO_PIE_FLAG@
  
*************** enable_as_accelerator = @enable_as_accel
*** 408,413 ****
--- 413,422 ----
  CPPLIB = ../libcpp/libcpp.a
  CPPINC = -I$(srcdir)/../libcpp/include
  
+ CODYLIB = ../libcody/libcody.a
+ CODYINC = -I$(srcdir)/../libcody
+ NETLIBS = @NETLIBS@
+ 
  # Where to find decNumber
  enable_decimal_float = @enable_decimal_float@
  DECNUM = $(srcdir)/../libdecnumber
*************** USER_H = $(srcdir)/ginclude/float.h \
*** 441,446 ****
--- 450,458 ----
  USER_H_INC_NEXT_PRE = @user_headers_inc_next_pre@
  USER_H_INC_NEXT_POST = @user_headers_inc_next_post@
  
+ # Enable target overriding of this fragment, as in config/t-vxworks.
+ T_GLIMITS_H = $(srcdir)/glimits.h
+ 
  # The GCC to use for compiling crt*.o.
  # Usually the one we just built.
  # Don't use this as a dependency--use $(GCC_PASSES).
*************** build_tooldir = $(exec_prefix)/$(target_
*** 671,676 ****
--- 683,691 ----
  # Directory in which the compiler finds target-independent g++ includes.
  gcc_gxx_include_dir = @gcc_gxx_include_dir@
  gcc_gxx_include_dir_add_sysroot = @gcc_gxx_include_dir_add_sysroot@
+ # Directory in which the compiler finds libc++ includes.
+ gcc_gxx_libcxx_include_dir = @gcc_gxx_libcxx_include_dir@
+ gcc_gxx_libcxx_include_dir_add_sysroot = @gcc_gxx_libcxx_include_dir_add_sysroot@
  # Directory to search for site-specific includes.
  local_includedir = $(local_prefix)/include
  includedir = $(prefix)/include
*************** FIXED_VALUE_H = fixed-value.h
*** 929,936 ****
  RTL_H = $(RTL_BASE_H) $(FLAGS_H) genrtl.h
  READ_MD_H = $(OBSTACK_H) $(HASHTAB_H) read-md.h
  BUILTINS_DEF = builtins.def sync-builtins.def omp-builtins.def \
! 	gtm-builtins.def sanitizer.def \
! 	hsa-builtins.def
  INTERNAL_FN_DEF = internal-fn.def
  INTERNAL_FN_H = internal-fn.h $(INTERNAL_FN_DEF)
  TREE_CORE_H = tree-core.h $(CORETYPES_H) all-tree.def tree.def \
--- 944,950 ----
  RTL_H = $(RTL_BASE_H) $(FLAGS_H) genrtl.h
  READ_MD_H = $(OBSTACK_H) $(HASHTAB_H) read-md.h
  BUILTINS_DEF = builtins.def sync-builtins.def omp-builtins.def \
! 	gtm-builtins.def sanitizer.def
  INTERNAL_FN_DEF = internal-fn.def
  INTERNAL_FN_H = internal-fn.h $(INTERNAL_FN_DEF)
  TREE_CORE_H = tree-core.h $(CORETYPES_H) all-tree.def tree.def \
*************** SYSTEM_H = system.h hwint.h $(srcdir)/..
*** 979,984 ****
--- 993,999 ----
  PREDICT_H = predict.h predict.def
  CPPLIB_H = $(srcdir)/../libcpp/include/line-map.h \
  	$(srcdir)/../libcpp/include/cpplib.h
+ CODYLIB_H = $(srcdir)/../libcody/cody.hh
  INPUT_H = $(srcdir)/../libcpp/include/line-map.h input.h
  OPTS_H = $(INPUT_H) $(VEC_H) opts.h $(OBSTACK_H)
  SYMTAB_H = $(srcdir)/../libcpp/include/symtab.h $(OBSTACK_H)
*************** PLUGIN_H = plugin.h $(GCC_PLUGIN_H)
*** 1009,1014 ****
--- 1024,1036 ----
  PLUGIN_VERSION_H = plugin-version.h configargs.h
  CONTEXT_H = context.h
  GENSUPPORT_H = gensupport.h read-md.h optabs.def
+ RTL_SSA_H = $(PRETTY_PRINT_H) insn-config.h splay-tree-utils.h \
+ 	    $(RECOG_H) $(REGS_H) function-abi.h obstack-utils.h \
+ 	    mux-utils.h rtlanal.h memmodel.h $(EMIT_RTL_H) \
+ 	    rtl-ssa/accesses.h rtl-ssa/insns.h rtl-ssa/blocks.h \
+ 	    rtl-ssa/changes.h rtl-ssa/functions.h rtl-ssa/is-a.inl \
+ 	    rtl-ssa/access-utils.h rtl-ssa/insn-utils.h rtl-ssa/movement.h \
+ 	    rtl-ssa/change-utils.h rtl-ssa/member-fns.inl
  
  #
  # Now figure out from those variables how to compile and link.
*************** ALL_LINKERFLAGS = $(ALL_CXXFLAGS)
*** 1042,1051 ****
  
  # Build and host support libraries.
  
! # Use the "pic" build of libiberty if --enable-host-shared.
  ifeq ($(enable_host_shared),yes)
! LIBIBERTY = ../libiberty/pic/libiberty.a
! BUILD_LIBIBERTY = $(build_libobjdir)/libiberty/pic/libiberty.a
  else
  LIBIBERTY = ../libiberty/libiberty.a
  BUILD_LIBIBERTY = $(build_libobjdir)/libiberty/libiberty.a
--- 1064,1075 ----
  
  # Build and host support libraries.
  
! # Use the "pic" build of libiberty if --enable-host-shared, unless we are
! # building for mingw.
! LIBIBERTY_PICDIR=$(if $(findstring mingw,$(target)),,pic)
  ifeq ($(enable_host_shared),yes)
! LIBIBERTY = ../libiberty/$(LIBIBERTY_PICDIR)/libiberty.a
! BUILD_LIBIBERTY = $(build_libobjdir)/libiberty/$(LIBIBERTY_PICDIR)/libiberty.a
  else
  LIBIBERTY = ../libiberty/libiberty.a
  BUILD_LIBIBERTY = $(build_libobjdir)/libiberty/libiberty.a
*************** GNATMAKE = @GNATMAKE@
*** 1075,1081 ****
  # Libs needed (at present) just for jcf-dump.
  LDEXP_LIB = @LDEXP_LIB@
  
! ZSTD_LIB = @ZSTD_LIB@
  
  # Likewise, for use in the tools that must run on this machine
  # even if we are cross-building GCC.
--- 1099,1106 ----
  # Libs needed (at present) just for jcf-dump.
  LDEXP_LIB = @LDEXP_LIB@
  
! ZSTD_INC = @ZSTD_CPPFLAGS@
! ZSTD_LIB = @ZSTD_LDFLAGS@ @ZSTD_LIB@
  
  # Likewise, for use in the tools that must run on this machine
  # even if we are cross-building GCC.
*************** BUILD_ERRORS = build/errors.o
*** 1096,1102 ****
  # libintl.h will be found in ../intl if we are using the included libintl.
  INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
  	   -I$(srcdir)/../include @INCINTL@ \
! 	   $(CPPINC) $(GMPINC) $(DECNUMINC) $(BACKTRACEINC) \
  	   $(ISLINC)
  
  COMPILE.base = $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) -o $@
--- 1121,1127 ----
  # libintl.h will be found in ../intl if we are using the included libintl.
  INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
  	   -I$(srcdir)/../include @INCINTL@ \
! 	   $(CPPINC) $(CODYINC) $(GMPINC) $(DECNUMINC) $(BACKTRACEINC) \
  	   $(ISLINC)
  
  COMPILE.base = $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) -o $@
*************** FLAGS_TO_PASS = \
*** 1174,1179 ****
--- 1199,1205 ----
  	"prefix=$(prefix)" \
  	"local_prefix=$(local_prefix)" \
  	"gxx_include_dir=$(gcc_gxx_include_dir)" \
+ 	"gxx_libcxx_include_dir=$(gcc_gxx_libcxx_include_dir)" \
  	"build_tooldir=$(build_tooldir)" \
  	"gcc_tooldir=$(gcc_tooldir)" \
  	"bindir=$(bindir)" \
*************** ANALYZER_OBJS = \
*** 1224,1237 ****
--- 1250,1269 ----
  	analyzer/bar-chart.o \
  	analyzer/call-string.o \
  	analyzer/checker-path.o \
+ 	analyzer/complexity.o \
  	analyzer/constraint-manager.o \
  	analyzer/diagnostic-manager.o \
  	analyzer/engine.o \
+ 	analyzer/feasible-graph.o \
  	analyzer/function-set.o \
  	analyzer/pending-diagnostic.o \
  	analyzer/program-point.o \
  	analyzer/program-state.o \
+ 	analyzer/region.o \
  	analyzer/region-model.o \
+ 	analyzer/region-model-impl-calls.o \
+ 	analyzer/region-model-manager.o \
+ 	analyzer/region-model-reachability.o \
  	analyzer/sm.o \
  	analyzer/sm-file.o \
  	analyzer/sm-malloc.o \
*************** ANALYZER_OBJS = \
*** 1240,1246 ****
  	analyzer/sm-signal.o \
  	analyzer/sm-taint.o \
  	analyzer/state-purge.o \
! 	analyzer/supergraph.o
  
  # Language-independent object files.
  # We put the *-match.o and insn-*.o files first so that a parallel make
--- 1272,1281 ----
  	analyzer/sm-signal.o \
  	analyzer/sm-taint.o \
  	analyzer/state-purge.o \
! 	analyzer/store.o \
! 	analyzer/supergraph.o \
! 	analyzer/svalue.o \
! 	analyzer/trimmed-graph.o
  
  # Language-independent object files.
  # We put the *-match.o and insn-*.o files first so that a parallel make
*************** OBJS = \
*** 1263,1268 ****
--- 1298,1304 ----
  	insn-recog.o \
  	insn-enums.o \
  	ggc-page.o \
+ 	adjust-alignment.o \
  	alias.o \
  	alloc-pool.o \
  	auto-inc-dec.o \
*************** OBJS = \
*** 1284,1289 ****
--- 1320,1327 ----
  	cfgloopmanip.o \
  	cfgrtl.o \
  	symtab.o \
+ 	symtab-thunks.o \
+ 	symtab-clones.o \
  	cgraph.o \
  	cgraphbuild.o \
  	cgraphunit.o \
*************** OBJS = \
*** 1345,1352 ****
--- 1383,1392 ----
  	ggc-common.o \
  	ggc-tests.o \
  	gimple.o \
+ 	gimple-array-bounds.o \
  	gimple-builder.o \
  	gimple-expr.o \
+ 	gimple-if-to-switch.o \
  	gimple-iterator.o \
  	gimple-fold.o \
  	gimple-laddress.o \
*************** OBJS = \
*** 1355,1360 ****
--- 1395,1404 ----
  	gimple-loop-versioning.o \
  	gimple-low.o \
  	gimple-pretty-print.o \
+ 	gimple-range.o \
+ 	gimple-range-cache.o \
+ 	gimple-range-edge.o \
+ 	gimple-range-gori.o \
  	gimple-ssa-backprop.o \
  	gimple-ssa-evrp.o \
  	gimple-ssa-evrp-analyze.o \
*************** OBJS = \
*** 1386,1396 ****
  	haifa-sched.o \
  	hash-map-tests.o \
  	hash-set-tests.o \
- 	hsa-common.o \
- 	hsa-gen.o \
- 	hsa-regalloc.o \
- 	hsa-brig.o \
- 	hsa-dump.o \
  	hw-doloop.o \
  	hwint.o \
  	ifcvt.o \
--- 1430,1435 ----
*************** OBJS = \
*** 1410,1415 ****
--- 1449,1456 ----
  	ipa-visibility.o \
  	ipa-inline-analysis.o \
  	ipa-inline-transform.o \
+ 	ipa-modref.o \
+ 	ipa-modref-tree.o \
  	ipa-predicate.o \
  	ipa-profile.o \
  	ipa-prop.o \
*************** OBJS = \
*** 1418,1424 ****
  	ipa-icf.o \
  	ipa-icf-gimple.o \
  	ipa-reference.o \
- 	ipa-hsa.o \
  	ipa-ref.o \
  	ipa-utils.o \
  	ipa.o \
--- 1459,1464 ----
*************** OBJS = \
*** 1462,1469 ****
  	omp-offload.o \
  	omp-expand.o \
  	omp-general.o \
- 	omp-grid.o \
  	omp-low.o \
  	omp-simd-clone.o \
  	opt-problem.o \
  	optabs.o \
--- 1502,1509 ----
  	omp-offload.o \
  	omp-expand.o \
  	omp-general.o \
  	omp-low.o \
+ 	omp-oacc-kernels-decompose.o \
  	omp-simd-clone.o \
  	opt-problem.o \
  	optabs.o \
*************** OBJS = \
*** 1503,1508 ****
--- 1543,1553 ----
  	reorg.o \
  	resource.o \
  	rtl-error.o \
+ 	rtl-ssa/accesses.o \
+ 	rtl-ssa/blocks.o \
+ 	rtl-ssa/changes.o \
+ 	rtl-ssa/functions.o \
+ 	rtl-ssa/insns.o \
  	rtl-tests.o \
  	rtl.o \
  	rtlhash.o \
*************** OBJS = \
*** 1524,1529 ****
--- 1569,1575 ----
  	sparseset.o \
  	spellcheck.o \
  	spellcheck-tree.o \
+ 	splay-tree-utils.o \
  	sreal.o \
  	stack-ptr-mod.o \
  	statistics.o \
*************** OBJS = \
*** 1622,1633 ****
--- 1668,1681 ----
  	tree-streamer-out.o \
  	tree-tailcall.o \
  	tree-vect-generic.o \
+ 	gimple-isel.o \
  	tree-vect-patterns.o \
  	tree-vect-data-refs.o \
  	tree-vect-stmts.o \
  	tree-vect-loop.o \
  	tree-vect-loop-manip.o \
  	tree-vect-slp.o \
+ 	tree-vect-slp-patterns.o \
  	tree-vectorizer.o \
  	tree-vector-builder.o \
  	tree-vrp.o \
*************** OBJS = \
*** 1636,1642 ****
--- 1684,1692 ----
  	typed-splay-tree.o \
  	unique-ptr-tests.o \
  	valtrack.o \
+ 	value-query.o \
  	value-range.o \
+ 	value-range-equiv.o \
  	value-prof.o \
  	var-tracking.o \
  	varasm.o \
*************** MOSTLYCLEANFILES = insn-flags.h insn-con
*** 1721,1727 ****
  # This symlink makes the full installation name of the driver be available
  # from within the *build* directory, for use when running the JIT library
  # from there (e.g. when running its testsuite).
! $(FULL_DRIVER_NAME): ./xgcc
  	rm -f $@
  	$(LN_S) $< $@
  
--- 1771,1777 ----
  # This symlink makes the full installation name of the driver be available
  # from within the *build* directory, for use when running the JIT library
  # from there (e.g. when running its testsuite).
! $(FULL_DRIVER_NAME): ./xgcc$(exeext)
  	rm -f $@
  	$(LN_S) $< $@
  
*************** $(FULL_DRIVER_NAME): ./xgcc
*** 1730,1735 ****
--- 1780,1787 ----
  # Otherwise $(SELFTEST_DEPS) is empty when used from <LANG>/Make-lang.in.
  SELFTEST_DEPS = $(GCC_PASSES) stmp-int-hdrs $(srcdir)/testsuite/selftests
  
+ DO_LINK_SERIALIZATION = @DO_LINK_SERIALIZATION@
+ 
  # Language makefile fragments.
  
  # The following targets define the interface between us and the languages.
*************** SELFTEST_DEPS = $(GCC_PASSES) stmp-int-h
*** 1747,1773 ****
  # language hooks, generated by configure
  @language_hooks@
  
  # Wire in install-gnatlib invocation with `make install' for a configuration
  # with top-level libada disabled.
  gnat_install_lib = @gnat_install_lib@
  
  # per-language makefile fragments
! ifneq ($(LANG_MAKEFRAGS),)
! include $(LANG_MAKEFRAGS)
! endif
  
  # target and host overrides must follow the per-language makefile fragments
  # so they can override or augment language-specific variables
  
  # target overrides
! ifneq ($(tmake_file),)
! include $(tmake_file)
! endif
  
  # host overrides
! ifneq ($(xmake_file),)
! include $(xmake_file)
! endif
  
  # all-tree.def includes all the tree.def files.
  all-tree.def: s-alltree; @true
--- 1799,1836 ----
  # language hooks, generated by configure
  @language_hooks@
  
+ ifeq ($(DO_LINK_SERIALIZATION),)
+ LINK_PROGRESS = :
+ else
+ LINK_PROGRESS = msg="Linking $@ |"; cnt=0; if test "$(2)" = start; then \
+   idx=0; cnt2=$(DO_LINK_SERIALIZATION); \
+   while test $$cnt2 -le $(1); do msg="$${msg}=="; cnt2=`expr $$cnt2 + 1`; idx=`expr $$idx + 1`; done; \
+   cnt=$$idx; \
+   while test $$cnt -lt $(1); do msg="$${msg}>>"; cnt=`expr $$cnt + 1`; done; \
+   msg="$${msg}--"; cnt=`expr $$cnt + 1`; \
+   else \
+   idx=`expr $(1) + 1`; \
+   while test $$cnt -le $(1); do msg="$${msg}=="; cnt=`expr $$cnt + 1`; done; \
+   fi; \
+   while test $$cnt -lt $(SERIAL_COUNT); do msg="$${msg}  "; cnt=`expr $$cnt + 1`; done; \
+   msg="$${msg}| `expr 100 \* $$idx / $(SERIAL_COUNT)`%"; echo "$$msg"
+ endif
+ 
  # Wire in install-gnatlib invocation with `make install' for a configuration
  # with top-level libada disabled.
  gnat_install_lib = @gnat_install_lib@
  
  # per-language makefile fragments
! -include $(LANG_MAKEFRAGS)
  
  # target and host overrides must follow the per-language makefile fragments
  # so they can override or augment language-specific variables
  
  # target overrides
! -include $(tmake_file)
  
  # host overrides
! -include $(xmake_file)
  
  # all-tree.def includes all the tree.def files.
  all-tree.def: s-alltree; @true
*************** CFLAGS-version.o += -DBASEVER=$(BASEVER_
*** 2277,2283 ****
  version.o: $(REVISION) $(DATESTAMP) $(BASEVER) $(DEVPHASE)
  
  # lto-compress.o needs $(ZLIBINC) added to the include flags.
! CFLAGS-lto-compress.o += $(ZLIBINC)
  
  CFLAGS-lto-streamer-in.o += -DTARGET_MACHINE=\"$(target_noncanonical)\"
  
--- 2340,2346 ----
  version.o: $(REVISION) $(DATESTAMP) $(BASEVER) $(DEVPHASE)
  
  # lto-compress.o needs $(ZLIBINC) added to the include flags.
! CFLAGS-lto-compress.o += $(ZLIBINC) $(ZSTD_INC)
  
  CFLAGS-lto-streamer-in.o += -DTARGET_MACHINE=\"$(target_noncanonical)\"
  
*************** s-bversion: BASE-VER
*** 2291,2296 ****
--- 2354,2360 ----
  
  CFLAGS-toplev.o += -DTARGET_NAME=\"$(target_noncanonical)\"
  CFLAGS-optinfo-emit-json.o += -DTARGET_NAME=\"$(target_noncanonical)\" $(ZLIBINC)
+ CFLAGS-analyzer/engine.o += $(ZLIBINC)
  
  pass-instances.def: $(srcdir)/passes.def $(PASSES_EXTRA) \
  		    $(srcdir)/gen-pass-instances.awk
*************** GTFILES = $(CPPLIB_H) $(srcdir)/input.h
*** 2580,2595 ****
--- 2644,2664 ----
    $(srcdir)/function-abi.h \
    $(srcdir)/output.h $(srcdir)/cfgloop.h $(srcdir)/cfg.h $(srcdir)/profile-count.h \
    $(srcdir)/cselib.h $(srcdir)/basic-block.h  $(srcdir)/ipa-ref.h $(srcdir)/cgraph.h \
+   $(srcdir)/symtab-thunks.h $(srcdir)/symtab-thunks.cc \
+   $(srcdir)/symtab-clones.h \
    $(srcdir)/reload.h $(srcdir)/caller-save.c $(srcdir)/symtab.c \
    $(srcdir)/alias.c $(srcdir)/bitmap.c $(srcdir)/cselib.c $(srcdir)/cgraph.c \
    $(srcdir)/ipa-prop.c $(srcdir)/ipa-cp.c $(srcdir)/ipa-utils.h \
    $(srcdir)/ipa-param-manipulation.h $(srcdir)/ipa-sra.c $(srcdir)/dbxout.c \
+   $(srcdir)/ipa-modref.h $(srcdir)/ipa-modref.c \
+   $(srcdir)/ipa-modref-tree.h \
    $(srcdir)/signop.h \
    $(srcdir)/dwarf2out.h \
    $(srcdir)/dwarf2asm.c \
    $(srcdir)/dwarf2cfi.c \
    $(srcdir)/dwarf2out.c \
    $(srcdir)/tree-vect-generic.c \
+   $(srcdir)/gimple-isel.cc \
    $(srcdir)/dojump.c $(srcdir)/emit-rtl.h \
    $(srcdir)/emit-rtl.c $(srcdir)/except.h $(srcdir)/explow.c $(srcdir)/expr.c \
    $(srcdir)/expr.h \
*************** GTFILES = $(CPPLIB_H) $(srcdir)/input.h
*** 2613,2633 ****
    $(srcdir)/tree-profile.c $(srcdir)/tree-nested.c \
    $(srcdir)/omp-offload.h \
    $(srcdir)/omp-offload.c \
!   $(srcdir)/omp-expand.c \
    $(srcdir)/omp-low.c \
!   $(srcdir)/targhooks.c $(out_file) $(srcdir)/passes.c $(srcdir)/cgraphunit.c \
    $(srcdir)/cgraphclones.c \
    $(srcdir)/tree-phinodes.c \
    $(srcdir)/tree-ssa-alias.h \
    $(srcdir)/tree-ssanames.h \
    $(srcdir)/tree-vrp.h \
    $(srcdir)/ipa-prop.h \
    $(srcdir)/trans-mem.c \
    $(srcdir)/lto-streamer.h \
    $(srcdir)/target-globals.h \
    $(srcdir)/ipa-predicate.h \
    $(srcdir)/ipa-fnsummary.h \
-   $(srcdir)/value-range.h \
    $(srcdir)/vtable-verify.c \
    $(srcdir)/asan.c \
    $(srcdir)/ubsan.c \
--- 2682,2702 ----
    $(srcdir)/tree-profile.c $(srcdir)/tree-nested.c \
    $(srcdir)/omp-offload.h \
    $(srcdir)/omp-offload.c \
!   $(srcdir)/omp-general.c \
    $(srcdir)/omp-low.c \
!   $(srcdir)/targhooks.c $(out_file) $(srcdir)/passes.c \
    $(srcdir)/cgraphclones.c \
    $(srcdir)/tree-phinodes.c \
    $(srcdir)/tree-ssa-alias.h \
    $(srcdir)/tree-ssanames.h \
    $(srcdir)/tree-vrp.h \
+   $(srcdir)/value-range.h \
    $(srcdir)/ipa-prop.h \
    $(srcdir)/trans-mem.c \
    $(srcdir)/lto-streamer.h \
    $(srcdir)/target-globals.h \
    $(srcdir)/ipa-predicate.h \
    $(srcdir)/ipa-fnsummary.h \
    $(srcdir)/vtable-verify.c \
    $(srcdir)/asan.c \
    $(srcdir)/ubsan.c \
*************** GTFILES = $(CPPLIB_H) $(srcdir)/input.h
*** 2636,2642 ****
    $(srcdir)/sancov.c \
    $(srcdir)/ipa-devirt.c \
    $(srcdir)/internal-fn.h \
-   $(srcdir)/hsa-common.c \
    $(srcdir)/calls.c \
    $(srcdir)/omp-general.h \
    @all_gtfiles@
--- 2705,2710 ----
*************** PREPROCESSOR_DEFINES = \
*** 2953,2958 ****
--- 3021,3028 ----
    -DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \
    -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \
    -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \
+   -DGPLUSPLUS_LIBCXX_INCLUDE_DIR=\"$(gcc_gxx_libcxx_include_dir)\" \
+   -DGPLUSPLUS_LIBCXX_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_libcxx_include_dir_add_sysroot) \
    -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \
    -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \
    -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \
*************** gcov-tool$(exeext): $(GCOV_TOOL_OBJS) $(
*** 3018,3024 ****
  # be rebuilt.
  
  # Build the include directories.
! stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) fixinc_list
  # Copy in the headers provided with gcc.
  #
  # The sed command gets just the last file name component;
--- 3088,3094 ----
  # be rebuilt.
  
  # Build the include directories.
! stmp-int-hdrs: $(STMP_FIXINC) $(T_GLIMITS_H) $(USER_H) fixinc_list
  # Copy in the headers provided with gcc.
  #
  # The sed command gets just the last file name component;
*************** stmp-int-hdrs: $(STMP_FIXINC) $(USER_H)
*** 3072,3080 ****
  	  multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
  	  fix_dir=include-fixed$${multi_dir}; \
  	  if $(LIMITS_H_TEST) ; then \
! 	    cat $(srcdir)/limitx.h $(srcdir)/glimits.h $(srcdir)/limity.h > tmp-xlimits.h; \
  	  else \
! 	    cat $(srcdir)/glimits.h > tmp-xlimits.h; \
  	  fi; \
  	  $(mkinstalldirs) $${fix_dir}; \
  	  chmod a+rx $${fix_dir} || true; \
--- 3142,3150 ----
  	  multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
  	  fix_dir=include-fixed$${multi_dir}; \
  	  if $(LIMITS_H_TEST) ; then \
! 	    cat $(srcdir)/limitx.h $(T_GLIMITS_H) $(srcdir)/limity.h > tmp-xlimits.h; \
  	  else \
! 	    cat $(T_GLIMITS_H) > tmp-xlimits.h; \
  	  fi; \
  	  $(mkinstalldirs) $${fix_dir}; \
  	  chmod a+rx $${fix_dir} || true; \
*************** gcc-vers.texi: $(BASEVER) $(DEVPHASE)
*** 3268,3274 ****
  	 then echo "@set DEVELOPMENT"; \
  	 else echo "@clear DEVELOPMENT"; \
  	 fi) > $@T
! 	$(build_file_translate) echo @set srcdir $(abs_srcdir) >> $@T
  	if [ -n "$(PKGVERSION)" ]; then \
  	  echo "@set VERSION_PACKAGE $(PKGVERSION)" >> $@T; \
  	fi
--- 3338,3344 ----
  	 then echo "@set DEVELOPMENT"; \
  	 else echo "@clear DEVELOPMENT"; \
  	 fi) > $@T
! 	$(build_file_translate) echo @set srcdir `echo $(abs_srcdir) | sed -e 's|\\([@{}]\\)|@\\1|g'` >> $@T
  	if [ -n "$(PKGVERSION)" ]; then \
  	  echo "@set VERSION_PACKAGE $(PKGVERSION)" >> $@T; \
  	fi
*************** distclean: clean lang.distclean
*** 3494,3500 ****
  	-cd testsuite && rm -f x *.x *.x? *.exe *.rpo *.o *.s *.S *.c
  	-cd testsuite && rm -f *.out *.gcov *$(coverageexts)
  	-rm -rf ${QMTEST_DIR} stamp-qmtest
- 	-rm -f cxxmain.c
  	-rm -f .gdbinit configargs.h
  	-rm -f gcov.pod
  # Delete po/*.gmo only if we are not building in the source directory.
--- 3564,3569 ----
*************** TAGS: lang.tags
*** 4243,4249 ****
  	      ../include/*.h ../libiberty/*.c \
  	      ../libcpp/*.c ../libcpp/include/*.h \
  	      --language=none --regex="/\(char\|unsigned int\|int\|bool\|void\|HOST_WIDE_INT\|enum [A-Za-z_0-9]+\) [*]?\([A-Za-z_0-9]+\)/\2/" common.opt	\
! 	      --language=none --regex="/\(DEF_RTL_EXPR\|DEFTREECODE\|DEFGSCODE\|DEFTIMEVAR\|DEFPARAM\|DEFPARAMENUM5\)[ ]?(\([A-Za-z_0-9]+\)/\2/" rtl.def tree.def gimple.def timevar.def params.def \
  		; \
  	etags --include TAGS.sub $$incs)
  
--- 4312,4318 ----
  	      ../include/*.h ../libiberty/*.c \
  	      ../libcpp/*.c ../libcpp/include/*.h \
  	      --language=none --regex="/\(char\|unsigned int\|int\|bool\|void\|HOST_WIDE_INT\|enum [A-Za-z_0-9]+\) [*]?\([A-Za-z_0-9]+\)/\2/" common.opt	\
! 	      --language=none --regex="/\(DEF_RTL_EXPR\|DEFTREECODE\|DEFGSCODE\|DEFTIMEVAR\|DEFPARAM\|DEFPARAMENUM5\)[ ]?(\([A-Za-z_0-9]+\)/\2/" rtl.def tree.def gimple.def timevar.def \
  		; \
  	etags --include TAGS.sub $$incs)
  
diff -Nrcpad gcc-10.3.0/gcc/README.Portability gcc-11.1.0/gcc/README.Portability
*** gcc-10.3.0/gcc/README.Portability	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/README.Portability	Tue Apr 27 10:00:12 2021
***************
*** 1,4 ****
! Copyright (C) 2000-2020 Free Software Foundation, Inc.
  
  This file is intended to contain a few notes about writing C code
  within GCC so that it compiles without error on the full range of
--- 1,4 ----
! Copyright (C) 2000-2021 Free Software Foundation, Inc.
  
  This file is intended to contain a few notes about writing C code
  within GCC so that it compiles without error on the full range of
diff -Nrcpad gcc-10.3.0/gcc/acinclude.m4 gcc-11.1.0/gcc/acinclude.m4
*** gcc-10.3.0/gcc/acinclude.m4	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/acinclude.m4	Tue Apr 27 10:00:12 2021
***************
*** 1,4 ****
! dnl Copyright (C) 2005-2020 Free Software Foundation, Inc.
  dnl
  dnl This file is part of GCC.
  dnl
--- 1,4 ----
! dnl Copyright (C) 2005-2021 Free Software Foundation, Inc.
  dnl
  dnl This file is part of GCC.
  dnl
diff -Nrcpad gcc-10.3.0/gcc/aclocal.m4 gcc-11.1.0/gcc/aclocal.m4
*** gcc-10.3.0/gcc/aclocal.m4	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/aclocal.m4	Tue Apr 27 10:00:12 2021
*************** m4_include([../ltsugar.m4])
*** 18,26 ****
--- 18,29 ----
  m4_include([../ltversion.m4])
  m4_include([../lt~obsolete.m4])
  m4_include([../config/acx.m4])
+ m4_include([../config/ax_lib_socket_nsl.m4])
+ m4_include([../config/cet.m4])
  m4_include([../config/codeset.m4])
  m4_include([../config/depstand.m4])
  m4_include([../config/dfp.m4])
+ m4_include([../config/enable.m4])
  m4_include([../config/gcc-plugin.m4])
  m4_include([../config/gettext-sister.m4])
  m4_include([../config/iconv.m4])
diff -Nrcpad gcc-10.3.0/gcc/ada/ChangeLog gcc-11.1.0/gcc/ada/ChangeLog
*** gcc-10.3.0/gcc/ada/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-11.1.0/gcc/ada/ChangeLog	Tue Apr 27 10:00:12 2021
***************
*** 1,18 ****
! 2021-04-08  Release Manager
  
! 	* GCC 10.3.0 released.
  
! 2021-03-10  Mikael Pettersson  <mikpelinux@gmail.com>
  
! 	PR bootstrap/94918
! 	* raise-gcc.c: On Cygwin include mingw32.h to prevent
! 	windows.h from including x86intrin.h or emmintrin.h.
  
  2021-03-10  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* gcc-interface/decl.c (gnat_to_gnu_entity): Build a TYPE_STUB_DECL
  	for the main variant of an enumeration type declared as volatile.
  
  2021-03-05  Eric Botcazou  <ebotcazou@adacore.com>
  
  	PR ada/99264
--- 1,42 ----
! 2021-04-27  Release Manager
  
! 	* GCC 11.1.0 released.
  
! 2021-04-21  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR ada/99360
! 	* exp_ch6.adb (Might_Have_Tasks): Return False when the type is the
! 	class-wide type of a predefined iterator type.
! 
! 2021-04-13  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/misc.c (gnat_init): Set default range bits to 0.
! 	* gcc-interface/trans.c (extract_encoding): Delete.
! 	(decode_name): Likewise.
! 	(File_Name_to_gnu): New function.
! 	(gigi): Call it to translate file names.  Replace assertion on
! 	1-1 mapping between files and line maps with conditional error.
! 
! 2021-04-11  Gerald Pfeifer  <gerald@pfeifer.com>
! 
! 	* gnat_ugn.texi (Top): Avoid invalid "up" link.
! 
! 2021-03-29  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	PR ada/99802
! 	* freeze.adb (Is_Full_Access_Aggregate): Call Is_Full_Access_Object
! 	on the name of an N_Assignment_Statement to spot full access.
  
  2021-03-10  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* gcc-interface/decl.c (gnat_to_gnu_entity): Build a TYPE_STUB_DECL
  	for the main variant of an enumeration type declared as volatile.
  
+ 2021-03-09  Mikael Pettersson  <mikpelinux@gmail.com>
+ 
+ 	* raise-gcc.c: On Cygwin include mingw32.h to prevent
+ 	windows.h from including x86intrin.h or emmintrin.h.
+ 
  2021-03-05  Eric Botcazou  <ebotcazou@adacore.com>
  
  	PR ada/99264
***************
*** 20,25 ****
--- 44,54 ----
  	MINSIGSTKSZ and bump size to 32KB.
  	* libgnarl/s-osinte__linux.ads (Alternate_Stack_Size): Bump to 32KB.
  
+ 2021-03-02  Mikael Pettersson  <mikpelinux@gmail.com>
+ 
+ 	PR bootstrap/98590
+ 	* cstreams.c: Ensure fileno_unlocked() is visible on Cygwin.
+ 
  2021-03-02  Eric Botcazou  <ebotcazou@adacore.com>
  
  	PR ada/99095
***************
*** 27,32 ****
--- 56,78 ----
  	optimization for limited types to non-array types except in the case
  	of an extended return statement.
  
+ 2021-03-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/99020
+ 	* sem_ch3.adb (Build_Discriminated_Subtype): Set the Cloned_Subtype
+ 	only if the type is not private.
+ 
+ 2021-02-26  YunQiang Su  <yunqiang.su@cipunited.com>
+ 
+ 	PR ada/98996
+ 	* Makefile.rtl: <mips*-*-linux*>
+ 	add 128Bit operation file for MIPS N64 and N32 to
+ 	LIBGNAT_TARGET_PAIRS and EXTRA_GNATRTL_NONTASKING_OBJS
+ 
+ 2021-02-12  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* repinfo.ads, repinfo.adb (*SO_Ref*): Restore.
+ 
  2021-02-03  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* gcc-interface/decl.c (components_to_record): If the first component
***************
*** 65,175 ****
  	PR ada/98740
  	* gcc-interface/trans.c (add_decl_expr): Always mark TYPE_ADA_SIZE.
  
! 2020-12-10  Ed Schonberg  <schonberg@adacore.com>
! 
! 	PR ada/98230
! 	* exp_attr.adb (Expand_N_Attribute_Reference, case Mod): Use base
! 	type of argument to obtain static bound and required size.
! 
! 2020-12-08  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/trans.c (maybe_make_gnu_thunk): Return false if the
! 	target is local and thunk and target do not have the same context.
! 
! 2020-12-07  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/utils.c (gnat_write_global_declarations): Use the
! 	maximum index for the dummy object to avoid a name collision.
! 
! 2020-11-11  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/trans.c (build_binary_op_trapv): Convert operands
! 	to the result type before doing generic overflow checking.
! 
! 2020-11-11  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/trans.c (can_be_lower_p): Remove.
! 	(Regular_Loop_to_gnu): Add ENTRY_COND unconditionally if
! 	BOTTOM_COND is non-zero.
! 
! 2020-11-11  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/trans.c (gnat_to_gnu) <N_Op_Shift>: Also convert
! 	GNU_MAX_SHIFT if the type of the operation has been changed.
! 	* gcc-interface/utils.c (can_materialize_object_renaming_p): Add
! 	pair of missing parentheses.
! 
! 2020-09-28  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/decl.c (maybe_saturate_size): Add ALIGN parameter
! 	and round down the result to ALIGN.
! 	(gnat_to_gnu_entity): Adjust calls to maybe_saturate_size.
! 
! 2020-09-11  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/utils.c (type_has_variable_size): New function.
! 	(create_field_decl): In the packed case, also force byte alignment
! 	when the type of the field has variable size.
! 
! 2020-09-11  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Only
! 	create extra subtypes for discriminants if the RM size of the base
! 	type of the index type is lower than that of the index type.
! 
! 2020-09-10  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/decl.c (set_rm_size): Do not take into account the
! 	Value_Size clause if it is not for the entity itself.
! 
! 2020-09-10  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/decl.c (build_subst_list): For a definition, make
! 	sure to instantiate the SAVE_EXPRs generated by the elaboration of
! 	the constraints in front of the elaboration of the type itself.
! 
! 2020-07-23  Release Manager
! 
! 	* GCC 10.2.0 released.
! 
! 2020-06-23  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/trans.c (gnat_to_gnu) <N_Allocator>: Minor tweaks.
! 	Call Has_Constrained_Partial_View on base type of designated type.
! 
! 2020-05-07  Release Manager
! 
! 	* GCC 10.1.0 released.
! 
! 2020-05-04  Mikael Pettersson  <mikpelinux@gmail.com>
! 
! 	PR bootstrap/94918
! 	* mingw32.h: Prevent windows.h from including emmintrin.h on Cygwin64.
! 	* s-oscons-tmplt.c (Serial_Port_Descriptor): Use System.Win32.HANDLE
! 	also on Cygwin.
! 
! 2020-03-11  Richard Wai  <richard@annexi-strayline.com>
  
! 	* gcc-interface/decl.c (gnat_to_gnu_entity): Also test Is_Public on
! 	the Alias of the entitiy, if it is present, in the main assertion.
  
! 2020-02-06  Alexandre Oliva <oliva@adacore.com>
  
! 	* raise-gcc.c (personality_body) [__ARM_EABI_UNWINDER__]:
! 	Initialize barrier_cache.sp when ending phase1.
  
! 2020-01-04  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* gnatvsn.ads: Bump copyright year.
  
! 2020-01-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	Update copyright years.
  
-   	* gnat_ugn.texi: Bump @copying's copyright year.
-   	* gnat_rm.texi: Likewise.
  
! Copyright (C) 2020 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 111,137 ----
  	PR ada/98740
  	* gcc-interface/trans.c (add_decl_expr): Always mark TYPE_ADA_SIZE.
  
! 2021-01-14  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	PR ada/98595
! 	* Makefile.rtl (LIBGNAT_TARGET_PAIRS) <riscv*-*-rtems*>: Use
! 	wraplf version of Aux_Long_Long_Float.
  
! 2021-01-03  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* gnatvsn.ads: Bump copyright year.
  
! 2021-01-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	* gnat_ugn.texi: Bump @copying's copyright year.
! 	* gnat_rm.texi: Likewise.
  
! 2021-01-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	* ChangeLog-2020: Rotate ChangeLog.  New file.
  
  
! Copyright (C) 2021 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-10.3.0/gcc/ada/ChangeLog-2020 gcc-11.1.0/gcc/ada/ChangeLog-2020
*** gcc-10.3.0/gcc/ada/ChangeLog-2020	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/ChangeLog-2020	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,13978 ----
+ 2020-12-17  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-tags.ads, libgnat/a-tags.adb (CW_Membership): Move
+ 	to spec to allow inlining.
+ 
+ 2020-12-17  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* checks.adb: Remove, not used.
+ 	* checks.ads: Likewise.
+ 	* exp_ch6.adb: Likewise.
+ 	* exp_ch7.adb: Likewise.
+ 	* exp_ch7.ads: Likewise.
+ 	* exp_fixd.adb: Likewise.
+ 	* exp_tss.adb: Likewise.
+ 	* exp_tss.ads: Likewise.
+ 	* exp_util.adb: Likewise.
+ 	* exp_util.ads: Likewise.
+ 	* gnat1drv.adb: Likewise.
+ 	* libgnat/s-finmas.adb: Likewise.
+ 	* libgnat/s-finmas.ads: Likewise.
+ 	* libgnat/system-aix.ads: Likewise.
+ 	* libgnat/system-darwin-arm.ads: Likewise.
+ 	* libgnat/system-darwin-ppc.ads: Likewise.
+ 	* libgnat/system-darwin-x86.ads: Likewise.
+ 	* libgnat/system-djgpp.ads: Likewise.
+ 	* libgnat/system-dragonfly-x86_64.ads: Likewise.
+ 	* libgnat/system-freebsd.ads: Likewise.
+ 	* libgnat/system-hpux-ia64.ads: Likewise.
+ 	* libgnat/system-hpux.ads: Likewise.
+ 	* libgnat/system-linux-alpha.ads: Likewise.
+ 	* libgnat/system-linux-arm.ads: Likewise.
+ 	* libgnat/system-linux-hppa.ads: Likewise.
+ 	* libgnat/system-linux-ia64.ads: Likewise.
+ 	* libgnat/system-linux-m68k.ads: Likewise.
+ 	* libgnat/system-linux-mips.ads: Likewise.
+ 	* libgnat/system-linux-ppc.ads: Likewise.
+ 	* libgnat/system-linux-riscv.ads: Likewise.
+ 	* libgnat/system-linux-s390.ads: Likewise.
+ 	* libgnat/system-linux-sh4.ads: Likewise.
+ 	* libgnat/system-linux-sparc.ads: Likewise.
+ 	* libgnat/system-linux-x86.ads: Likewise.
+ 	* libgnat/system-lynxos178-ppc.ads: Likewise.
+ 	* libgnat/system-lynxos178-x86.ads: Likewise.
+ 	* libgnat/system-mingw.ads: Likewise.
+ 	* libgnat/system-qnx-aarch64.ads: Likewise.
+ 	* libgnat/system-rtems.ads: Likewise.
+ 	* libgnat/system-solaris-sparc.ads: Likewise.
+ 	* libgnat/system-solaris-x86.ads: Likewise.
+ 	* libgnat/system-vxworks-arm-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-arm-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks-arm.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-vthread.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-ravenscar.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-vthread.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-vthread.ads: Likewise.
+ 	* libgnat/system-vxworks-x86.ads: Likewise.
+ 	* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-aarch64.ads: Likewise.
+ 	* libgnat/system-vxworks7-arm-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-arm.ads: Likewise.
+ 	* libgnat/system-vxworks7-e500-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-e500-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc64-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86_64-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise.
+ 	* repinfo.adb: Likewise.
+ 	* repinfo.ads: Likewise.
+ 	* rtsfind.ads: Likewise.
+ 	* sem_aux.adb: Likewise.
+ 	* sem_aux.ads: Likewise.
+ 	* sem_ch13.adb: Likewise.
+ 	* sem_ch13.ads: Likewise.
+ 	* sem_util.adb (Validity_Checks_Suppressed, TSS,
+ 	Is_All_Null_Statements, Known_Non_Negative,
+ 	Non_Limited_Designated_Type, Get_Binary_Nkind, Get_Unary_Nkind,
+ 	Is_Protected_Operation, Number_Components, Package_Body,
+ 	Validate_Independence, Independence_Checks): Likewise; update
+ 	comments.
+ 	* targparm.adb: Likewise.
+ 	* targparm.ads (AAM, AAM_Str, Fractional_Fixed_Ops,
+ 	Frontend_Layout, Make_Detach_Call, Target_Has_Fixed_Ops, Detach,
+ 	Back_End_Layout, Create_Dynamic_SO_Ref, Get_Dynamic_SO_Entity,
+ 	Is_Dynamic_SO_Ref, Is_Static_SO_Ref,
+ 	Fractional_Fixed_Ops_On_Target): Likewise.
+ 	* validsw.adb (Save_Validity_Check_Options,
+ 	Set_Default_Validity_Check_Options): Likewise.
+ 	* validsw.ads: Likewise.
+ 
+ 2020-12-17  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* symbols.ads, symbols.adb: Removed no longer used.
+ 
+ 2020-12-17  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.adb (New_Requires_Transient_Scope): Renamed
+ 	Requires_Transient_Scope.
+ 	(Requires_Transient_Scope, Old_Requires_Transient_Scope,
+ 	Results_Differ): Removed.
+ 	* debug.adb: Remove -gnatdQ.
+ 
+ 2020-12-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-valrea.adb (Need_Extra): Fix comment.
+ 
+ 2020-12-17  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Case_Statement): Move modification of
+ 	Unblocked_Exit_Count after early return statements; fix typo in
+ 	comment.
+ 
+ 2020-12-17  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Case_Statement): Change local variable
+ 	Exp to constant; remove unreferenced Last_Choice variable;
+ 	reduce scope of other variables.
+ 	(Analyze_If_Statement): Reduce scope of a local variable; add
+ 	comment.
+ 
+ 2020-12-17  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* opt.ads (Multiple_Unit_Index): Refine type from Int to Nat.
+ 
+ 2020-12-17  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (In_Check_Node): Add guard and rename Node to
+ 	Par, just like it is done in surrounding routines, e.g.
+ 	In_Assertion_Expression_Pragma and In_Generic_Formal_Package.
+ 
+ 2020-12-17  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/a-cbdlli.adb, libgnat/a-cbdlli.ads,
+ 	libgnat/a-cdlili.adb, libgnat/a-cdlili.ads,
+ 	libgnat/a-cidlli.adb, libgnat/a-cidlli.ads,
+ 	libgnat/a-cobove.adb, libgnat/a-cobove.ads,
+ 	libgnat/a-coinve.adb, libgnat/a-coinve.ads,
+ 	libgnat/a-convec.adb, libgnat/a-convec.ads: Add *_Vector
+ 	operations, remove default for Count, rename Append_One to be
+ 	Append.
+ 
+ 2020-12-17  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Declare_Expression): Need to establish a
+ 	transient scope in case Expression (N) requires actions to be
+ 	wrapped.  Code cleanup.
+ 	* exp_ch7.adb, exp_ch11.adb: Code cleanup.
+ 
+ 2020-12-17  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-ch3.adb (P_Identifier_Declarations): Reuse
+ 	Error_Msg_Ada_2020_Feature for object renaming without subtype.
+ 	* par-ch4.adb (P_Primary): Likewise for target name.
+ 	(P_Iterated_Component_Association): Likewise for iterated
+ 	component.
+ 	(P_Declare_Expression): Likewise for declare expression.
+ 	* par-ch6.adb (P_Formal_Part): Likewise for aspect on formal
+ 	parameter.
+ 	* sem_aggr.adb (Resolve_Delta_Aggregate): Ditto.
+ 	* sem_ch8.adb (Analyze_Object_Renaming): Reuse
+ 	Error_Msg_Ada_2020_Feature.
+ 	* sem_ch13.adb (Validate_Aspect_Aggregate): Reuse
+ 	Error_Msg_Ada_2020_Feature; use lower case for "aspect" and
+ 	don't use underscore for "Ada_2020"; don't give up on analysis
+ 	in Ada 2012 mode.
+ 	(Validate_Aspect_Stable_Properties): Reuse
+ 	Error_Msg_Ada_2020_Feature; use lower case for "aspect"; minor
+ 	style fixes.
+ 
+ 2020-12-17  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Selected_Component): Request a compile
+ 	time error replacement in Apply_Compile_Time_Constraint_Error
+ 	in case of an invalid field.
+ 	* sem_ch3.adb (Create_Constrained_Components): Take advantage of
+ 	Gather_Components also in the case of a record extension and
+ 	also constrain records in the case of compile time known discriminant
+ 	values, as already done in gigi.
+ 	* sem_util.ads, sem_util.adb (Gather_Components): New parameter
+ 	Allow_Compile_Time to allow compile time known (but non static)
+ 	discriminant values, needed by Create_Constrained_Components,
+ 	and new parameter Include_Interface_Tag.
+ 	(Is_Dependent_Component_Of_Mutable_Object): Use Original_Node to
+ 	perform check on the original tree.
+ 	(Is_Object_Reference): Likewise.  Only call Original_Node when
+ 	relevant via a new function Safe_Prefix.
+ 	(Is_Static_Discriminant_Component, In_Check_Node): New.
+ 	(Is_Actual_Out_Or_In_Out_Parameter): New.
+ 	* exp_ch4.adb (Expand_N_Selected_Component): Remove no longer needed
+ 	code preventing evaluating statically discriminants in more cases.
+ 	* exp_ch5.adb (Expand_N_Loop_Statement): Simplify expansion of loops
+ 	with an N_Raise_xxx_Error node to avoid confusing the code generator.
+ 	(Make_Component_List_Assign): Try to find a constrained type to
+ 	extract discriminant values from, so that the case statement
+ 	built gets an opportunity to be folded by
+ 	Expand_N_Case_Statement.
+ 	(Expand_Assign_Record): Update comments, code cleanups.
+ 	* sem_attr.adb (Analyze_Attribute): Perform most of the analysis
+ 	on the original prefix node to deal properly with a prefix rewritten
+ 	as a N_Raise_xxx_Error.
+ 	* sem_ch5.adb (Analyze_Loop_Parameter_Specification): Handle properly
+ 	a discrete subtype definition being rewritten as N_Raise_xxx_Error.
+ 	* sem_ch8.adb (Analyze_Object_Renaming): Handle N_Raise_xxx_Error
+ 	nodes as part of the expression being renamed.
+ 	* sem_eval.ads, sem_eval.adb (Fold, Eval_Selected_Component): New.
+ 	(Compile_Time_Known_Value, Expr_Value, Expr_Rep_Value): Evaluate
+ 	static discriminant component values.
+ 	* sem_res.adb (Resolve_Selected_Component): Call
+ 	Eval_Selected_Component.
+ 
+ 2020-12-17  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Unchecked_Type_Conversion): Remove
+ 	folding of discrete values.
+ 	* exp_intr.adb (Expand_Unc_Conversion): Analyze, resolve and
+ 	evaluate (if possible) calls to instances of
+ 	Ada.Unchecked_Conversion after they have been expanded into
+ 	N_Unchecked_Type_Conversion.
+ 	* sem_eval.adb (Eval_Unchecked_Conversion): Add folding of
+ 	discrete values.
+ 
+ 2020-12-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Likewise.
+ 	* exp_imgv.adb (Expand_Value_Attribute): Use RE_Value_Long_Float in
+ 	lieu of RE_Value_Long_Long_Float as fallback for fixed-point types.
+ 	Also use it for Long_Long_Float if it has same size as Long_Float.
+ 	* libgnat/s-imgrea.adb: Replace Powten_Table with Powen_LLF.
+ 	* libgnat/s-powflt.ads: New file.
+ 	* libgnat/s-powlfl.ads: Likewise.
+ 	* libgnat/s-powtab.ads: Rename to...
+ 	* libgnat/s-powllf.ads: ...this.
+ 	* libgnat/s-valflt.ads: Add with clause for System.Powten_Flt and
+ 	pass its table as actual parameter to System.Val_Real.
+ 	* libgnat/s-vallfl.ads: Likewise for System.Powten_LFlt.
+ 	* libgnat/s-valllf.ads: Likewise for System.Powten_LLF.
+ 	* libgnat/s-valrea.ads: Add Maxpow and Powten_Address parameters.
+ 	* libgnat/s-valrea.adb: Add pragma Warnings (Off).
+ 	(Need_Extra): New boolean constant.
+ 	(Precision_Limit): Set it according to Need_Extra.
+ 	(Impl): Adjust actual parameter.
+ 	(Integer_to_Rea): Add assertion on the machine radix. Take into
+ 	account the extra digit only if Need_Extra is true.  Reimplement
+ 	the computation of the final value for bases 2, 4, 8, 10 and 16.
+ 	* libgnat/s-valued.adb (Impl): Adjust actual parameter.
+ 	(Scan_Decimal): Add pragma Unreferenced.
+ 	(Value_Decimal): Likewise.
+ 	* libgnat/s-valuef.adb (Impl): Adjust actual parameter.
+ 	* libgnat/s-valuer.ads (Floating): Remove.
+ 	(Round): New formal parameter.
+ 	* libgnat/s-valuer.adb (Round_Extra): New procedure.
+ 	(Scan_Decimal_Digits): Use it to round the extra digit if Round
+ 	is set to True in the instantiation.
+ 	(Scan_Integral_Digits): Likewise.
+ 
+ 2020-12-17  Erwan Le Guillou  <leguillou@adacore.com>
+ 
+ 	* libgnat/system-lynxos178-ppc.ads,
+ 	libgnat/system-lynxos178-x86.ads: Fix small typo in comments.
+ 
+ 2020-12-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_dbug.adb (Get_Encoded_Name): Generate encodings for fixed
+ 	point types only if -fgnat-encodings=all is specified.
+ 
+ 2020-12-17  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* checks.adb (Build_Discriminant_Checks): Add condition to
+ 	replace references to the current instance of the type when we
+ 	are within an Init_Proc.
+ 	(Replace_Current_Instance): Examine a given node and replace the
+ 	current instance of the type with the corresponding _init
+ 	formal.
+ 	(Search_And_Replace_Current_Instance): Traverse proc which calls
+ 	Replace_Current_Instance in order to replace all references
+ 	within a given expression.
+ 
+ 2020-12-17  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-ch12.adb (P_Formal_Derived_Type_Definition): Complain
+ 	about formal type with aspect specification, which only become
+ 	legal in Ada 2020.
+ 	* par-ch9.adb (P_Protected_Operation_Declaration_Opt): Reuse
+ 	Error_Msg_Ada_2005_Extension.
+ 	(P_Entry_Declaration): Likewise.
+ 	* scng.adb (Scan): Improve diagnostics for target_name; emit
+ 	error, but otherwise continue in earlier than Ada 2020 modes.
+ 
+ 2020-12-17  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* libgnat/a-cbsyqu.ads (Implementation): Provide a box
+ 	initialization for the element array used internally to
+ 	represent the queue, so that its components are properly
+ 	initialized if the given element type has default
+ 	initialization. Suppress warnings on the rest of the package in
+ 	case the element type has no default or discriminant, because it
+ 	is bound to be confusing to the user.
+ 
+ 2020-12-17  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.adb (Inherit_Predicate_Flags): No-op before Ada 2012.
+ 
+ 2020-12-17  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch7.adb (Make_Final_Call, Make_Init_Call): Take protected
+ 	types into account.
+ 	* sem_util.ads: Fix typo.
+ 
+ 2020-12-17  Yannick Moy  <moy@adacore.com>
+ 
+ 	* checks.adb: Rework error messages.
+ 	* exp_ch3.adb: Likewise.
+ 	* freeze.adb: Likewise.
+ 	* lib-load.adb: Likewise.
+ 	* par-ch12.adb: Likewise.
+ 	* par-ch3.adb: Likewise.
+ 	* par-ch4.adb: Likewise.
+ 	* par-ch9.adb: Likewise.
+ 	* sem_aggr.adb: Likewise.
+ 	* sem_attr.adb: Likewise.
+ 	* sem_cat.adb: Likewise.
+ 	* sem_ch10.adb: Likewise.
+ 	* sem_ch12.adb: Likewise.
+ 	(Instantiate_Type): Fix CODEFIX comment, applicable only on
+ 	continuation message, and identify the second message as a
+ 	continuation.
+ 	* sem_ch13.adb: Rework error messages.
+ 	* sem_ch3.adb: Likewise.
+ 	* sem_ch4.adb: Likewise.
+ 	* sem_ch5.adb: Likewise.
+ 	* sem_ch6.adb: Likewise.
+ 	* sem_ch8.adb: Likewise.
+ 	* sem_ch9.adb: Likewise.
+ 	* sem_prag.adb: Likewise.
+ 	* sem_res.adb: Likewise.
+ 	* sem_util.adb: Likewise.
+ 	(Wrong_Type): Fix CODEFIX comment, applicable only on
+ 	continuation message, and identify the second message as a
+ 	continuation.
+ 	* symbols.adb: Rework error messages.
+ 
+ 2020-12-17  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_attr.adb (OK_Self_Reference): Return True if node does not
+ 	come from source (e.g. a rewritten aggregate).
+ 
+ 2020-12-17  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Parse_Aspect_Stable_Properties): Fix style;
+ 	limit the scope of local variables; remove extra assignment in
+ 	Extract_Entity.
+ 	(Validate_Aspect_Stable_Properties): Simplify with procedural
+ 	Next.
+ 
+ 2020-12-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* ali.ads, ali.adb, bindo-writers.adb, lib-writ.adb (Scope):
+ 	Renamed to IS_Scope.
+ 
+ 2020-12-16  Joffrey Huguet  <huguet@adacore.com>
+ 
+ 	* libgnat/a-strfix.ads: Add postconditions and contract cases to
+ 	subprograms.
+ 
+ 2020-12-16  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Iterator_Specification): If iterator
+ 	filter is present, preanalyze filter without expansion.
+ 	(Analyze_Loop_Parameter_Specification): When
+ 	loop_Parameter_Specification is rewritten as
+ 	Iterator_Specification, transfer Iterator_Filter if present.
+ 
+ 2020-12-16  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* libgnat/s-objrea.ads (Object_Arch): Add ARM enum
+ 	* libgnat/s-objrea.adb (Initialize): Add EM_ARM case.
+ 	(Read_Address): Add ARM case to 32bit read.
+ 	* Makefile.rtl: Add trasym units to the runtime for armhf-linux.
+ 
+ 2020-12-16  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* libgnat/g-expect.adb (Non_Blocking_Spawn): Deallocate elements
+ 	on Arg_List after calling Set_Up_Child_Communications.
+ 
+ 2020-12-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-ch3.adb (P_Modular_Type_Definition): Remove colon from
+ 	error message.
+ 	* sem_ch11.adb (Check_Duplication): Likewise.
+ 	* sem_ch3.adb (Derived_Type_Declaration): Likewise.
+ 
+ 2020-12-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-ch12.adb (P_Formal_Object_Declarations): Refine types to
+ 	Pos.
+ 
+ 2020-12-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* impunit.adb (Not_Impl_Defined_Unit): Fix typo in iteration
+ 	over Non_Imp_File_Names_12 array.
+ 
+ 2020-12-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch9.adb, sem_warn.adb: Simplify membership test.
+ 
+ 2020-12-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch6.adb, exp_util.adb, sem_ch4.adb, sem_disp.adb,
+ 	sem_elab.adb: Simplify membership test.
+ 
+ 2020-12-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-powtab.ads (Maxpow): Use explicit formula in comment.
+ 
+ 2020-12-16  Philippe Gil  <gil@adacore.com>
+ 
+ 	* libgnarl/s-tporft.adb (Register_Foreign_Thread): Set
+ 	Global_Task_Lock_Nesting before using allocator.
+ 
+ 2020-12-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-valrea.adb (Maxexp32): New constant array.
+ 	(Maxexp64): Likewise.
+ 	(Maxexp80): Likewise.
+ 	(Integer_to_Real): New local constants Maxexp and B.
+ 	When the exponent is too negative, do the divison in two steps.
+ 
+ 2020-12-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst
+ 	(Test_Case): Change integer to float literals.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-12-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications): Add a codefix
+ 	for extra parentheses around aspect Annotate expression; reject
+ 	"(null record)" aggregate and extra parentheses around aspect
+ 	Test_Case expression.
+ 	* sem_prag.adb (Analyze_Pragma): Reject "null", "(null record)"
+ 	and extra parentheses around pragma Contract_Cases; likewise for
+ 	pragma Subprogram_Variant.
+ 
+ 2020-12-16  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* adaint.h (__gnat_in_child_after_fork): New flag to express
+ 	child process side after fork call.
+ 	* adaint.c (__gnat_portable_spawn): Set flag
+ 	__gnat_in_child_after_fork.
+ 	* expect.c (__gnat_expect_fork): Set __gnat_in_child_after_fork
+ 	to one on child side.
+ 	* libgnat/memtrack.adb
+ 	(In_Child_After_Fork): Flag to disable memory tracking.
+ 	(Allow_Trace): New routine defining if memory should be tracked.
+ 	(Alloc, Realloc, Free): Use Allow_Trace in "if" condition
+ 	instead of First_Call.
+ 
+ 2020-12-16  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/a-tifiio.adb: Mark body not in SPARK.
+ 	* libgnat/a-tifiio.ads: Mark spec in SPARK.
+ 	* libgnat/a-tifiio__128.adb: Mark body not in SPARK.
+ 
+ 2020-12-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-valuer.adb (Scan_Decimal_Digits): Tweak overflow test.
+ 	(Scan_Integral_Digits): Likewise.
+ 
+ 2020-12-16  Pascal Obry  <obry@adacore.com>
+ 
+ 	* s-oscons-tmplt.c: Add some OS constants.
+ 
+ 2020-12-15  Pascal Obry  <obry@adacore.com>
+ 
+ 	* libgnat/g-sercom__linux.adb (Set): Use cfsetospeed and
+ 	cfsetispeed to set the baud rate. Clear non-blocking serial port
+ 	status when blocking is requested.
+ 
+ 2020-12-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-valrea.adb (Integer_to_Real): Always use Extra.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-ch5.adb (P_Condition): Simplify condition for warning
+ 	about extra parens and make it easier to understand.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* errout.ads (Error_Msg_Ada_2005_Extension): New routine (spec).
+ 	* errout.adb (Error_Msg_Ada_2005_Extension): New routine (body).
+ 	* par-ch10.adb: Reuse new routine; correct casing for "LIMITED
+ 	WITH".
+ 	* par-ch11.adb: Likewise.
+ 	* par-ch12.adb: Likewise.
+ 	* par-ch3.adb: Likewise.
+ 	* par-ch4.adb: Likewise; replace "box" with "<>".
+ 	* par-ch6.adb: Likewise.
+ 	* par-ch9.adb: Likewise; correct casing for "THEN ABORT".
+ 
+ 2020-12-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst: Minor fix.
+ 	* gnat_ugn.texi: Regenerate.
+ 	* libgnat/s-valuer.ads (Precision_Limit): New formal parameter.
+ 	* libgnat/s-valuer.adb (Precision_Limit): Remove.
+ 	(Scan_Decimal_Digits): Robustify overflow check.
+ 	(Scan_Integral_Digits): Likewise.
+ 	* libgnat/s-valrea.adb: Add assertion on the size of the unsigned
+ 	type and instantiate System.Value_R with the mantissa limit.
+ 	(Integer_to_Real): Add Extra parameter and take it into account.
+ 	(Scan_Real): Pass Extra to Integer_to_Real.
+ 	(Value_Real): Likewise.
+ 	* libgnat/s-valued.adb: Add assertion on the size of the unsigned
+ 	type and instantiate System.Value_R with the mantissa limit.
+ 	* libgnat/s-valuef.adb: Likewise.
+ 
+ 2020-12-15  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* contracts.adb, contracts.ads (Build_Postconditions_Procedure):
+ 	Add declarations for Postcond_Enabled,
+ 	Result_Object_For_Postcondition, and
+ 	Return_Success_For_Postcond, and place all postconditions within
+ 	an if statement to control their execution for interactions when
+ 	cleanup actions get generated.
+ 	(Get_Postcond_Enabled): Created to fetch object declared to
+ 	handle new expansion of postconditions.
+ 	(Get_Result_Object_For_Postcond): Created to fetch object
+ 	declared to handle new expansion of postconditions.
+ 	(Get_Return_Success_For_Postcond): Created to fetch object
+ 	declared to handle new expansion of postconditions.
+ 	* einfo.adb, einfo.ads: Modify flag Stores_Attribute_Old_Prefix
+ 	to apply to constants, variables, and types.
+ 	* exp_ch6.adb (Add_Return): Add assignment to
+ 	Return_Success_For_Postcond.
+ 	(Expand_Non_Function_Return): Add assignment to
+ 	Return_Success_For_Postcond
+ 	(Expand_Simple_Function_Return): Add assignment to
+ 	Result_Object_For_Postcond and Return_Success_For_Postcond.
+ 	* exp_ch7.adb (Build_Finalization_Master): Mark finalization
+ 	masters which finalize types created store 'Old objects as
+ 	storing 'Old objects.
+ 	(Build_Finalizer): Created to generated a unified and special
+ 	expansion for finalization when postconditions are present.
+ 	(Build_Finalizer_Helper): Renamed Build_Finalizer and added
+ 	parameter to facilitate the creation of separate finalization
+ 	routines for 'Old objects and general objects.
+ 	(Create_Finalizer): Add condition for the insertion of the
+ 	finalizer spec to avoid malformed trees.
+ 	(Expand_Cleanup_Actions): Move _postconditions and related
+ 	declarations to the new declarative section.  Fix the loop to
+ 	properly stop at the subprogram declaration for the
+ 	postconditions procedure and exclude its body from being moved
+ 	to the new list of declarations to avoid freezing issues.
+ 	* exp_prag.adb (Expand_Attributes): Mark temporary created to
+ 	store 'Old objects as storing a 'Old attribute.
+ 	* sem_ch6.adb (Find_What_Applies_To): Remove strange exception
+ 	to postconditions when traversing the scope stack.
+ 	* sem_prag.adb (Find_Related_Declaration_Or_Body): Use the newly
+ 	created Enclosing_HSS function to find the HSS for a potentially
+ 	nested statement.
+ 	* sem_util.adb, sem_util.ads (Declare_Indirect_Temp): Mark types
+ 	created to store 'Old objects as storing 'Old attributes.
+ 	(Enclosing_HSS): Created to find the enclosing handled sequence
+ 	of statements for a given statement.
+ 	* snames.ads-tmpl: Add multiple names to aid in the expansion of
+ 	finalization and to control the evaluation of postconditions.
+ 	Including _finalization_controller, a new routine to centralize
+ 	finalization actions and postcondition evaluation.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-ch5.adb (P_Loop_Parameter_Specification): Complain about
+ 	missing -gnat2020 switch.
+ 	(P_Iterator_Specification): Likewise.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-ch4.adb (P_Aggregate_Or_Paren_Expr): Simplify with
+ 	Append_New.
+ 
+ 2020-12-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Remove s-fatsfl$(objext)
+ 	and add s-valflt$(objext), s-vallfl$(objext), s-valllf$(objext).
+ 	* exp_attr.adb (Find_Fat_Info): Merge Short_Float and Float cases.
+ 	* exp_imgv.adb (Expand_Value_Attribute): Replace RE_Value_Real with
+ 	RE_Value_Long_Long_Float for fixed-point types and use appropriate
+ 	base type for floating-point types.
+ 	* rtsfind.ads (RTU_Id): Remove System_Fat_IEEE_Long_Float,
+ 	System_Fat_IEEE_Short_Float and System_Val_Real, add System_Val_Flt,
+ 	System_Val_LFlt and System_Val_LLF.
+ 	(RE_Id): Remove RE_Attr_IEEE_Long, RE_Fat_IEEE_Long,
+ 	RE_Attr_IEEE_Short, RE_Fat_IEEE_Short, RE_Attr_Short_Float, add
+ 	RE_Value_Float, RE_Value_Long_Float, RE_Value_Long_Long_Float,
+ 	(RE_Unit_Table): Likewise.
+ 	* libgnat/a-ticoau.ads: Add with clause for Float_Aux and make the
+ 	package generic.
+ 	(Get): Change parameter types to Num.
+ 	(Put): Likewise.
+ 	(Gets): Likewise.
+ 	(Puts): Likewise.
+ 	* libgnat/a-ticoau.adb: Remove clause and renaming for Float_Aux.
+ 	(Get): Change parameter types to Num.
+ 	(Gets): Likewise.
+ 	(Put): Likewise.
+ 	(Puts): Likewise.  Add conversion to Long_Long_Float.
+ 	* libgnat/a-ticoio.adb: Remove with clause for Ada.Text_IO, add with
+ 	clause for Float_Aux, add with and use clauses for System.Val_Flt,
+ 	System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux and
+ 	Complex_Aux on Float, Long_Float, and Long_Long_Float.
+ 	(OK_Float): New boolean constant.
+ 	(OK_Long_Float): Likewise.
+ 	(Get): Call appropriate Get routine from auxiliary package.
+ 	(Get): Call appropriate Gets routine from auxiliary package.
+ 	(Put): Call appropriate Put routine from auxiliary package.
+ 	(Put): Call appropriate Puts routine from auxiliary package.
+ 	* libgnat/a-tideau.adb: Remove with and use clause for Float_Aux.
+ 	* libgnat/a-tifiau.adb: Likewise.
+ 	* libgnat/a-tifiio.adb: Add with and use clause for System.Val_LLF.
+ 	Instantiate Float_Aux on Long_Long_Float.
+ 	(Get): Adjust call to Get routine from auxiliary package.
+ 	(Get): Adjust call to Gets routine from auxiliary package.
+ 	(Put): Adjust call to Put routine from auxiliary package.
+ 	(Put): Adjust call to Puts routine from auxiliary package.
+ 	* libgnat/a-tifiio__128.adb: Likewise.
+ 	(Get): Likewise.
+ 	(Get): Likewise.
+ 	(Put): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-tiflau.ads: Make the package generic.
+ 	(Get): Change parameter type to Num.
+ 	(Put): Likewise.
+ 	(Gets): Likewise.
+ 	(Puts): Likewise.
+ 	* libgnat/a-tiflau.adb: Remove clauses for System.Val_Real.
+ 	(Get): Change parameter type to Num and call Scan routine.
+ 	(Gets): Likewise.
+ 	(Load_Real): Move to...
+ 	(Put): Change parameter type and add conversion to Long_Long_Float.
+ 	(Puts): Likewise.
+ 	* libgnat/a-tiflio.adb: Add with and use clauses for System.Val_Flt,
+ 	System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux on Float,
+ 	Long_Float and Long_Long_Float.
+ 	(OK_Float): New boolean constant.
+ 	(OK_Long_Float): Likewise.
+ 	(Get): Call appropriate Get routine from auxiliary package.
+ 	(Get): Call previous variant.
+ 	(Get): Call appropriate Gets routine from auxiliary package.
+ 	(Put): Call appropriate Put routine from auxiliary package.
+ 	(Put): Call previous variant.
+ 	(Put): Call appropriate Puts routine from auxiliary package.
+ 	* libgnat/a-tigeau.ads (Load_Real): New procedure.
+ 	* libgnat/a-tigeau.adb (Load_Real): ...here.
+ 	* libgnat/a-wtcoau.ads: Add with clause for Float_Aux and make the
+ 	package generic.
+ 	(Get): Change parameter types to Num.
+ 	(Put): Likewise.
+ 	(Gets): Likewise.
+ 	(Puts): Likewise.
+ 	* libgnat/a-wtcoau.adb: Remove clause and renaming for Float_Aux.
+ 	(Get): Change parameter types to Num.
+ 	(Gets): Likewise.
+ 	(Put): Likewise.
+ 	(Puts): Likewise.  Add conversion to Long_Long_Float.
+ 	* libgnat/a-wtcoio.ads: Remove use clause for Complex_Types and use
+ 	qualified names throughout accordingly.
+ 	* libgnat/a-wtcoio.adb: Remove clause for Ada.Unchecked_Conversion,
+ 	add with clause for Float_Aux, add clauses for System.Val_Flt,
+ 	System.Val_LFlt and System.Val_LLF. Add clause for Complex_Types.
+ 	Instantiate Float_Aux and Complex_Aux on Float, Long_Float, and
+ 	Long_Long_Float.  Remove LLF subtype and TFT instantiation.
+ 	(OK_Float): New boolean constant.
+ 	(OK_Long_Float): Likewise.
+ 	(Get): Call appropriate Get routine from auxiliary package.
+ 	(Get): Call appropriate Gets routine from auxiliary package.
+ 	(Put): Call appropriate Put routine from auxiliary package.
+ 	(Put): Call appropriate Puts routine from auxiliary package.
+ 	* libgnat/a-wtdeau.adb: Remove with and use clause for Float_Aux.
+ 	* libgnat/a-wtfiau.adb: Likewise.
+ 	* libgnat/a-wtfiio.adb: Add with and use clause for System.Val_LLF.
+ 	Instantiate Float_Aux on Long_Long_Float.
+ 	(Get): Adjust call to Get routine from auxiliary package.
+ 	(Get): Adjust call to Gets routine from auxiliary package.
+ 	(Put): Adjust call to Put routine from auxiliary package.
+ 	(Put): Adjust call to Puts routine from auxiliary package.
+ 	* libgnat/a-wtfiio__128.adb: Likewise.
+ 	(Get): Likewise.
+ 	(Get): Likewise.
+ 	(Put): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-wtflau.ads: Make the package generic.
+ 	(Get): Change parameter type to Num.
+ 	(Put): Likewise.
+ 	(Gets): Likewise.
+ 	(Puts): Likewise.
+ 	* libgnat/a-wtflau.adb: Remove clauses for System.Val_Real.
+ 	(Get): Change parameter type to Num and call Scan routine. Set
+ 	Ptr parameter lazily.
+ 	(Gets): Likewise.
+ 	(Load_Real): Move to...
+ 	(Put): Change parameter type and add conversion to Long_Long_Float.
+ 	Bump buffer length to Max_Real_Image_Length.
+ 	(Puts): Likewise.
+ 	* libgnat/a-wtflio.adb: Add with and use clauses for System.Val_Flt,
+ 	System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux on Float,
+ 	Long_Float and Long_Long_Float.
+ 	(OK_Float): New boolean constant.
+ 	(OK_Long_Float): Likewise.
+ 	(Get): Call appropriate Get routine from auxiliary package.  Add
+ 	pragma Unsuppress (Range_Check) and manual validity check.
+ 	(Get): Call appropriate Gets routine from auxiliary package. Add
+ 	pragma Unsuppress (Range_Check) and manual validity check.
+ 	(Put): Call appropriate Put routine from auxiliary package.
+ 	(Put): Call appropriate Puts routine from auxiliary package.
+ 	* libgnat/a-wtgeau.ads (Load_Real): New procedure.
+ 	* libgnat/a-wtgeau.adb (Load_Real): ...here.
+ 	* libgnat/a-ztcoau.ads: Add with clause for Float_Aux and make the
+ 	package generic.
+ 	(Get): Change parameter types to Num.
+ 	(Put): Likewise.
+ 	(Gets): Likewise.
+ 	(Puts): Likewise.
+ 	* libgnat/a-ztcoau.adb: Remove clause and renaming for Float_Aux.
+ 	(Get): Change parameter types to Num.
+ 	(Gets): Likewise.
+ 	(Put): Likewise.
+ 	(Puts): Likewise.  Add conversion to Long_Long_Float.
+ 	* libgnat/a-ztcoio.ads: Remove use clause for Complex_Types and use
+ 	qualified names throughout accordingly.
+ 	* libgnat/a-ztcoio.adb: Remove clause for Ada.Unchecked_Conversion,
+ 	add with clause for Float_Aux, add clauses for System.Val_Flt,
+ 	System.Val_LFlt and System.Val_LLF. Add clause for Complex_Types.
+ 	Instantiate Float_Aux and Complex_Aux on Float, Long_Float, and
+ 	Long_Long_Float. Remove LLF subtype and TFT instantiation.
+ 	(OK_Float): New boolean constant.
+ 	(OK_Long_Float): Likewise.
+ 	(Get): Call appropriate Get routine from auxiliary package.
+ 	(Get): Call appropriate Gets routine from auxiliary package.
+ 	(Put): Call appropriate Put routine from auxiliary package.
+ 	(Put): Call appropriate Puts routine from auxiliary package.
+ 	* libgnat/a-ztdeau.adb: Remove with and use clause for Float_Aux.
+ 	* libgnat/a-ztfiau.adb: Likewise.
+ 	* libgnat/a-ztfiio.adb: Add with and use clause for System.Val_LLF.
+ 	Instantiate Float_Aux on Long_Long_Float.
+ 	(Get): Adjust call to Get routine from auxiliary package.
+ 	(Get): Adjust call to Gets routine from auxiliary package.
+ 	(Put): Adjust call to Put routine from auxiliary package.
+ 	(Put): Adjust call to Puts routine from auxiliary package.
+ 	* libgnat/a-ztfiio__128.adb: Likewise.
+ 	(Get): Likewise.
+ 	(Get): Likewise.
+ 	(Put): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-ztflau.ads: Make the package generic.
+ 	(Get): Change parameter type to Num.
+ 	(Put): Likewise.
+ 	(Gets): Likewise.
+ 	(Puts): Likewise.
+ 	* libgnat/a-ztflau.adb: Remove clauses for System.Val_Real.
+ 	(Get): Change parameter type to Num and call Scan routine. Set
+ 	Ptr parameter lazily.
+ 	(Gets): Likewise.
+ 	(Load_Real): Move to...
+ 	(Put): Change parameter type and add conversion to Long_Long_Float.
+ 	Bump buffer length to Max_Real_Image_Length.
+ 	(Puts): Likewise.
+ 	* libgnat/a-ztflio.adb: Add with and use clauses for System.Val_Flt,
+ 	System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux on Float,
+ 	Long_Float and Long_Long_Float.
+ 	(OK_Float): New boolean constant.
+ 	(OK_Long_Float): Likewise.
+ 	(Get): Call appropriate Get routine from auxiliary package.  Add
+ 	pragma Unsuppress (Range_Check) and manual validity check.
+ 	(Get): Call appropriate Gets routine from auxiliary package. Add
+ 	pragma Unsuppress (Range_Check) and manual validity check.
+ 	(Put): Call appropriate Put routine from auxiliary package.
+ 	(Put): Call appropriate Puts routine from auxiliary package.
+ 	* libgnat/a-ztgeau.ads (Load_Real): New procedure.
+ 	* libgnat/a-ztgeau.adb (Load_Real): ...here.
+ 	* libgnat/s-fatsfl.ads: Delete.
+ 	* libgnat/s-valflt.ads: New package.
+ 	* libgnat/s-vallfl.ads: Likewise.
+ 	* libgnat/s-valllf.ads: Likewise.
+ 	* libgnat/s-valrea.ads: Make generic. Add assertions, defensive
+ 	code and clarify intent.
+ 	(Scan_Real): Change parameter type to Num.
+ 	(Value_Real): Likewise.
+ 	* libgnat/s-valrea.adb: Instantiate Value_R on Uns.
+ 	(Integer_to_Real): Change parameter and result to Num.
+ 	Call Float_Control.Reset only if the mantissa is 64 bits.  Use
+ 	a divide to compute the final value if the scale is negative.
+ 	(Scan_Real): Change result to Num.
+ 	(Value_Real): Likewise.
+ 	* libgnat/s-valuer.adb: Add assertions, defensive code and
+ 	clarify intent.
+ 	(F_Limit): Delete.
+ 	(I_Limit): Likewise.
+ 	(Precision_Limit): Always use the integer limit.
+ 	* libgnat/s-fatgen.adb: Add pragma Annotate.
+ 
+ 2020-12-15  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/a-tiflio.adb: Mark body not in SPARK.
+ 	* libgnat/a-tiflio.ads: Mark spec in SPARK.
+ 
+ 2020-12-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch6.adb (Build_Procedure_Body_Form): Adjust, the
+ 	declaration of the procedure form is now insert before the
+ 	original function body rather than after.
+ 	(Expand_N_Subprogram_Declaration): Deal with private types whose
+ 	full views are arrays.
+ 	* exp_unst.adb (Unnest_Subprogram): Deal with private types.
+ 	(Needs_Fat_Pointer): Code cleanup.
+ 	* freeze.adb (Freeze_Subprogram): Ditto.
+ 	* exp_util.adb (Build_Procedure_Form): Insert the procedure form
+ 	decl before and not after.
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Build missing
+ 	spec when needed for Transform_Function_Array.
+ 	* sem_util.adb (Get_Fullest_View): Deal with null entity.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications): Simplify code
+ 	for aspect Priority.
+ 	* sem_prag.adb (Analyze_Pragma): Simplify code for pragma
+ 	Priority.
+ 
+ 2020-12-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch7.adb (Reset_Scopes_To_Block_Elab_Proc): Do not crash on
+ 	a block with no Identifier. Code cleanups.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Reuse existing code for
+ 	attribute Value when analyzing attributes Wide_Value and
+ 	Wide_Wide_Value.
+ 
+ 2020-12-15  Pascal Obry  <obry@adacore.com>
+ 
+ 	* libgnat/g-diopit.adb (Find): Fix possible infinite recursion
+ 	in Find iterator.
+ 	* libgnat/g-diopit.ads (Find): Update comments accordingly.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Merge identical code for
+ 	Callable and Terminated attributes; refactor calls to Set_Etype
+ 	occurring in both THEN and ELSE branches of an IF statement for
+ 	attribute Storage_Size.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Merge identical code for
+ 	Wide_Wide_Width, Wide_Width and Width attributes.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Merge identical code for
+ 	Pred and Succ attributes.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Merge identical code for
+ 	Size, Object_Size and Value_Size attributes.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Consistently call
+ 	Check_Fixed_Point_Type before checking the number of attribute
+ 	expressions (like it is done for floating point types); reuse
+ 	Check_Fixed_Point_Type_0.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_disp.adb (Make_Tags): Remove call to UI_To_Int.
+ 	* sem_attr.adb (Check_Array_Type): Likewise; also, refine type
+ 	of a local variable.
+ 	(Analyze_Attribute): Likewise.
+ 	(Get_Enclosing_Object): Likewise.
+ 	* sem_util.adb (Get_Enum_Lit_From_Pos): Likewise.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Merge identical code for
+ 	First_Bit/Last_Bit and Position attributes.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Merge identical code for
+ 	Machine_Radix and Mantissa attributes.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Merge identical code for
+ 	Machine_Overflows and Machine_Rounds attributes.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Merge identical code for
+ 	Large, Small, Safe_Large and Safe_Small attributes.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Merge identical code for
+ 	Epsilon, Model_Epsilon, Model_Small, Safe_First and Safe_Las
+ 	attributes.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Merge identical code for
+ 	Emax, Machine_Emax, Machine_Emin, Machine_Mantissa, Model_Emin,
+ 	Model_Mantissa and Safe_Emax attributes.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Merge identical code for
+ 	Denorm and Signed_Zeros attributes.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Merge identical code for
+ 	Adjacent, Copy_Sign and Remainder attributes.
+ 	(Check_Floating_Point_Type_2): Fix style in comment.
+ 
+ 2020-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Merge identical code for
+ 	Compose, Leading_Part and Scaling attributes.
+ 
+ 2020-12-14  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Resolve second parameter of
+ 	attribute Scaling just like it is resolved for a similar
+ 	attribute Compose.
+ 
+ 2020-12-14  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Merge identical code for
+ 	First/Last, First_Bit/Last_Bit and First_Valid/Last_Valid
+ 	attributes.
+ 
+ 2020-12-14  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Merge similar code for
+ 	Truncation and other floating point attributes.
+ 
+ 2020-12-14  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Merge identical code for
+ 	Ceiling, Floor, Fraction, Machine, Machine_Rounding, Model,
+ 	Rounding and Unbiased_Rounding.
+ 
+ 2020-12-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/a-tifiio.adb: Adjust documentation.
+ 	(OK_Get_32): Compare the object size of the base type.
+ 	(OK_Put_32): Likewise.
+ 	(OK_Get_64): Likewise.
+ 	(OK_Put_64): Likewise.
+ 	* libgnat/a-tifiio__128.adb: Adjust documentation.
+ 	(OK_Get_32): Compare the object size of the base type.
+ 	(OK_Put_32): Likewise.
+ 	(OK_Get_64): Likewise.
+ 	(OK_Put_64): Likewise.
+ 	(OK_Get_128): Likewise.
+ 	(OK_Put_128): Likewise.
+ 	* libgnat/a-wtfiio.adb (OK_Get_32): Likewise.
+ 	(OK_Put_32): Likewise.
+ 	(OK_Get_64): Likewise.
+ 	(OK_Put_64): Likewise
+ 	* libgnat/a-wtfiio__128.adb (OK_Get_32): Likewise.
+ 	(OK_Put_32): Likewise.
+ 	(OK_Get_64): Likewise.
+ 	(OK_Put_64): Likewise.
+ 	(OK_Get_128): Likewise.
+ 	(OK_Put_128): Likewise.
+ 	* libgnat/a-ztfiio.adb (OK_Get_32): Likewise.
+ 	(OK_Put_32): Likewise.
+ 	(OK_Get_64): Likewise.
+ 	(OK_Put_64): Likewise
+ 	* libgnat/a-ztfiio__128.adb (OK_Get_32): Likewise.
+ 	(OK_Put_32): Likewise.
+ 	(OK_Get_64): Likewise.
+ 	(OK_Put_64): Likewise.
+ 	(OK_Get_128): Likewise.
+ 	(OK_Put_128): Likewise.
+ 
+ 2020-12-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/a-tifiio.adb (Get): Replace Current_Input with Current_In.
+ 	* libgnat/a-tifiio__128.adb: (Get): Likewise.
+ 	* libgnat/a-wtcoio.adb (Get): Likewise.
+ 	(Put): Replace Current_Output with Current_Out.
+ 	* libgnat/a-wtdeio.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-wtdeio__128.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-wtenio.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-wtfiio.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-wtfiio__128.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-wtflio.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-wtinio.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-wtinio__128.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-wtmoio.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-wtmoio__128.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-ztcoio.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-ztdeio.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-ztdeio__128.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-ztenio.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-ztfiio.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-ztfiio__128.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-ztflio.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-ztinio.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-ztinio__128.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-ztmoio.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 	* libgnat/a-ztmoio__128.adb (Get): Likewise.
+ 	(Put): Likewise.
+ 
+ 2020-12-14  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_util.adb, sem_util.ads (In_Generic_Formal_Package):
+ 	Created to identify type declarations occurring within generic
+ 	formal packages.
+ 	* sem_res.adb (Resolve_Allocator): Add condition to avoid
+ 	emitting an error for allocators when the type being allocated
+ 	is class-wide and from a generic formal package.
+ 
+ 2020-12-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-fatgen.adb (Tiny80): Add alignment clause.
+ 
+ 2020-12-14  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_util.adb (Process_Current_Value_Condition): Add assertion.
+ 	* libgnat/s-fatgen.adb (Scaling): Add annotation.
+ 
+ 2020-12-14  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_eval.adb (Fold_Shift): Compute values using the base type.
+ 
+ 2020-12-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-fatgen.adb: Add with clause for Interfaces and use
+ 	type clause for Interfaces.Unsigned_64.
+ 	(Small): Comment out.
+ 	(Tiny): Likewise.
+ 	(Tiny16): New integer constant.
+ 	(Tiny32): Likewise.
+ 	(Tiny64): Likewise.
+ 	(Tiny80): New integer array constant.
+ 	(Pred): Declare a local overlay for Tiny.
+ 	(Succ): Likewise.
+ 
+ 2020-12-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_pakd.adb (Expand_Bit_Packed_Element_Set): Fix again packed
+ 	array type in complex cases where array is Volatile.
+ 	* exp_util.adb (Remove_Side_Effects): Do not force a renaming to
+ 	be handled by the back-end.
+ 
+ 2020-12-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-fatgen.adb: Remove use clause for
+ 	System.Unsigned_Types.
+ 	(Scaling): Add renaming of System.Unsigned_Types and use type
+ 	clause for Long_Long_Unsigned.
+ 
+ 2020-12-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-fatgen.ads (Compose): Add pragma Inline.
+ 	(Copy_Sign): Likewise.
+ 	(Exponent): Likewise.
+ 	(Fraction): Likewise.
+ 	* libgnat/s-fatgen.adb: Remove with clause for System, add
+ 	with and use clauses for System.Unsigned_Types.
+ 	Add pragma Warnings (Off) for non-static constants.
+ 	Remove precomputed tables of powers of radix and add a few
+ 	constants describing the floating-point format.
+ 	(Gradual_Scaling): Delete.
+ 	(Copy_Sign): Reimplement directly.
+ 	(Decompose): Likewise.
+ 	(Scaling): Likewise.
+ 	(Pred): Speed up.
+ 	(Succ): Likewise.
+ 	(Truncation): Tidy up.
+ 	(Valid): Move constants to library level.
+ 
+ 2020-12-14  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_eval.adb (CV_Cache): Remove initialization at elaboration.
+ 
+ 2020-12-14  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ 	Correct documentation of the -gnatw.K switch to say that it
+ 	disables rather than activates the warning.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2020-12-14  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* tracebak.c: Add a section for ARM Linux.
+ 
+ 2020-12-14  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* par-ch3.adb (P_Discriminant_Part_Opt): Parse aspects, update
+ 	documentation.
+ 	* par-ch6.adb (P_Return_Statement): Likewise.
+ 	* par-ch9.adb (P_Entry_Index_Specification): Likewise.
+ 
+ 2020-12-14  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_aggr.adb (Build_Array_Aggr_Code.Gen_Assign): Move
+ 	generation of the call for DIC check past the optional
+ 	generation of calls to controlled Initialize procedures.
+ 	* exp_ch3.adb
+ 	(Build_Array_Init_Proc.Init_One_Dimension.Possible_DIC_Call):
+ 	Suppress generation of a DIC call when the array component type
+ 	is controlled.  The call will now be generated later inside the
+ 	array's DI (Deep_Initialize) procedure.
+ 	* exp_ch7.adb
+ 	(Make_Deep_Array_Body.Build_Initialize_Statements): Generate a
+ 	DIC call (when needed by the array component type) after any
+ 	call to the component type's controlled Initialize procedure, or
+ 	generate the DIC call by itself if there's no Initialize to
+ 	call.
+ 	* sem_aggr.adb (Resolve_Record_Aggregate.Add_Association):
+ 	Simplify condition to only test Is_Box_Init_By_Default (previous
+ 	condition was overkill, as well as incorrect in some cases).
+ 	* sem_elab.adb (Active_Scenarios.Output_Call): For
+ 	Default_Initial_Condition, suppress call to
+ 	Output_Verification_Call when the subprogram is a partial DIC
+ 	procedure.
+ 
+ 2020-12-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_Round>:
+ 	Adjust commentary and set the Rounded_Result flag on the type
+ 	conversion node when the node is needed.
+ 	* exp_ch4.adb (Expand_N_Type_Conversion): Minor tweak.
+ 	(Fixup_Universal_Fixed_Operation): Look through the type conversion
+ 	only when it is to Universal_Real.
+ 	* exp_fixd.adb: Remove with and use clauses for Snames.
+ 	(Build_Divide): Remove redundant test.
+ 	(Expand_Convert_Float_To_Fixed): Use Rounded_Result flag on the
+ 	node to set the truncation parameter.
+ 
+ 2020-12-14  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Refinement_Clause): Simplify recently
+ 	added code for preventing cascaded errors.
+ 
+ 2020-12-14  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Is_Build_In_Place_Result_Type): Further narrow
+ 	the conditions under which we enable build-in-place for
+ 	controlled types.
+ 
+ 2020-12-14  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_warn.adb (Output_Non_Modified_In_Out_Warnings): Use right
+ 	warning control character 'k' in both comment and call to
+ 	Errout_Msg_N.
+ 
+ 2020-12-14  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Refined_State_In_Decl_Part): Refine the
+ 	error message for missing Part_Of on constituent. Avoid
+ 	cascading error.
+ 
+ 2020-12-14  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Depends_In_Decl_Part): Replace early
+ 	returns with goto Leave.
+ 	(Collect_Subprogram_Inputs_Outputs): Fix style in comment.
+ 
+ 2020-12-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-fatgen.ads (Valid): Add again pragma Inline.
+ 	* libgnat/s-fatgen.adb (Valid): Improve commentary, tidy up left
+ 	and right, and remove superfluous trick for denormalized numbers.
+ 
+ 2020-12-14  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Find_Role): Constant object of
+ 	access-to-constant and access-to-subprogram types are not
+ 	writable.
+ 	(Collect_Subprogram_Inputs_Outputs): In-parameters of
+ 	access-to-variable type can act as outputs of the Depends
+ 	contracts.
+ 
+ 2020-12-14  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sa_messages.ads: Reference Subprogram_Variant in the comment
+ 	for Assertion_Check.
+ 	* sem_prag.adb (Analyze_Pragma): Add Subprogram_Variant as an
+ 	ID_ASSERTION_KIND; move Default_Initial_Condition as an
+ 	RM_ASSERTION_KIND.
+ 
+ 2020-12-14  Yannick Moy  <moy@adacore.com>
+ 
+ 	* inline.adb (Cannot_Inline): Add No_Info parameter to disable
+ 	info message.
+ 	* inline.ads (Cannot_Inline): When No_Info is set to True, do
+ 	not issue info message in GNATprove mode, but still mark the
+ 	subprogram as not always inlined.
+ 	* sem_res.adb (Resolve_Call): Always call Cannot_Inline inside
+ 	an assertion expression.
+ 
+ 2020-12-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-imguti.ads (Set_Decimal_Digits): Adjust documentation.
+ 
+ 2020-12-10  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	PR ada/98230
+ 	* exp_attr.adb (Expand_N_Attribute_Reference, case Mod): Use base
+ 	type of argument to obtain static bound and required size.
+ 
+ 2020-12-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/Make-lang.in: Remove ^L characters.
+ 	* gcc-interface/decl.c (create_concat_name): Add cast.
+ 
+ 2020-12-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (maybe_make_gnu_thunk): Return false if the
+ 	target is local and thunk and target do not have the same context.
+ 
+ 2020-12-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (lvalue_for_aggregate_p): Also return true
+ 	for return statements.
+ 	* gcc-interface/utils.c (gnat_write_global_declarations): Use the
+ 	maximum index for the dummy object to avoid a name collision.
+ 
+ 2020-12-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <Fixed_Point_Type>: Put
+ 	back the "else" unduly removed.
+ 
+ 2020-12-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Call_to_gnu): Also create a temporary for
+ 	the return value if the LHS is a bit-field and the return type is
+ 	a type padding a self-referential type.
+ 	(gnat_to_gnu): Do not remove the padding on the result if it is too
+ 	small with regard to the natural padding size.
+ 
+ 2020-12-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.c (convert) <INTEGER_TYPE>: Call fold_convert
+ 	in the cases where convert_to_integer is not called.
+ 	<BOOLEAN_TYPE>: Call fold_convert instead of convert_to_integer.
+ 
+ 2020-12-07  Matthias Klose  <doko@ubuntu.com>
+ 
+ 	PR ada/97504
+ 	* Makefile.rtl (LIBGNAT_TARGET_PAIRS) <mips*-*-linux*>: Use wraplf
+ 	version of Aux_Long_Long_Float.
+ 
+ 2020-11-30  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* libgnat/s-trasym.ads: Update the list of supported platforms.
+ 
+ 2020-11-30  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* gcc-interface/Makefile.in, gcc-interface/trans.c: Remove ^L
+ 	characters.
+ 
+ 2020-11-30  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* gcc-interface/Makefile.in (GNATLIBFLAGS): Enable checks by
+ 	default.
+ 	* libgnat/s-bitfie.ads: Suppress alignment checks.
+ 	* libgnat/s-bituti.adb: Minor reformatting.
+ 	* libgnat/s-secsta.adb (SS_Allocate): Support Size = 0.
+ 
+ 2020-11-30  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch3.adb (Replace_Discr_Ref): Removed, no longer needed.
+ 
+ 2020-11-30  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch5.adb (Process_Statements): Replace low-level membership
+ 	test with a high-level wrapper.
+ 
+ 2020-11-30  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch5.adb (Set_Assignment_Type): Combine calls to Ekind
+ 	using membership test.
+ 	(Should_Transform_BIP_Assignment): Replace assignment to a
+ 	"Result" variable with simple return statements; avoid repeated
+ 	calls to Unqual_Conv by declaring a local constant.
+ 
+ 2020-11-30  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* lib-xref.adb (Generate_Reference): Fix reference to
+ 	Analyze_Assignment.
+ 	* sem_ch5.adb (Diagnose_Non_Variable_Lhs): Reuse existing
+ 	utility function.
+ 
+ 2020-11-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* contracts.adb (Check_Type_Or_Object_External_Properties): Make
+ 	sure to exclude all return objects from the SPARK legality rule
+ 	on effectively volatile variables.
+ 	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Use the fast
+ 	track only when the declaration of the return object can be
+ 	dropped.
+ 
+ 2020-11-30  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* einfo.ads (Is_Partial_DIC_Procedure): New function.
+ 	(Partial_DIC_Procedure): New procedure.
+ 	* einfo.adb (Is_Partial_DIC_Procedure): New function to return
+ 	whether a subprogram is a partial Default_Initial_Condition
+ 	procedure by checking the name (to avoid adding a new field).
+ 	(DIC_Procedure): Add a test that excludes partial DIC procedures
+ 	from being returned.
+ 	(Partial_DIC_Procedure): New procedure to return the partial DIC
+ 	procedure of a type, if it has one (otherwise returns Empty).
+ 	(Set_DIC_Procedure): Remove check for duplicate DIC procedures.
+ 	* exp_aggr.adb (Gen_Assign): Generate a call to the type's DIC
+ 	procedure in the case where an array component is default
+ 	initialized (due to an association with a box).
+ 	(Build_Record_Aggr_Code): For an extension aggregate, generate a
+ 	call to the ancestor type's DIC procedure (if any) when the
+ 	ancestor part is a subtype mark. For a record component
+ 	association that was specified with a box (tested for by
+ 	checking the new flag Was_Default_Init_Box_Association),
+ 	generate a call to the component type's DIC procedure (if it has
+ 	one).
+ 	* exp_ch4.adb (Expand_N_Allocator): When the allocated object is
+ 	default initialized and the designated type has a DIC aspect,
+ 	generate a call to the DIC procedure.
+ 	* exp_util.ads (Build_DIC_Call): Change the formal Obj_Id to
+ 	name Obj_Name, and change its type from Entity_Id to Node_Id
+ 	(and update comment).
+ 	(Build_DIC_Procedure_Body): Add formal Partial_DIC, remove
+ 	formal For_Freeze, and update comment accordingly.
+ 	(Build_DIC_Procedure_Declaration): Add formal Partial_DIC and
+ 	update comment.
+ 	* exp_util.adb
+ 	(Build_DIC_Call): Revised to use its Obj_Name (formerly Obj_Id)
+ 	formal directly rather than calling New_Occurrence_Of on it, to
+ 	allow arbitrary names to be passed rather than being limited to
+ 	Entity_Ids.
+ 	(Build_DIC_Procedure_Body): Call Add_Parent_DICs to generate
+ 	checks for DICs associated with any parent types, implementing
+ 	the required "additive" semantics for DICs. When building a DIC
+ 	procedure body for a partial view (when Partial_DIC is True),
+ 	call Add_Own_DIC when the type has its own DIC.  In the case of
+ 	"full" DIC procedures, a call is generated to any partial DIC
+ 	procedure of the type (unless the procedure has a null body),
+ 	along with checks for any DICs inherited by the full view.
+ 	(Build_DIC_Procedure_Declaration): Add handling for partial DIC
+ 	procedures.  For the suffix of a regular DIC procedure's name,
+ 	use "DIC" (instead of "Default_Initial_Condition"), and for the
+ 	suffix of a partial DIC procedure's name, use "Partial_DIC".
+ 	(Add_DIC_Check): Add the DIC pragma to the list of seen pragmas
+ 	(Pragmas_Seen).
+ 	(Add_Inherited_Tagged_DIC): Remove the formals Par_Typ,
+ 	Deriv_Typ, and Obj_Id, and add formal Expr, which denotes DIC's
+ 	expression. Remove the call to Replace_References (which is now
+ 	done in Add_Inherited_DICs).
+ 	(Add_Inherited_DICs): New procedure to locate a DIC pragma
+ 	associated with a parent type, replace its references
+ 	appropriately (such as any current instance references), and add
+ 	a check for the DIC.
+ 	(Add_Own_DIC): Add an Obj_Id formal to allow caller to pass the
+ 	_init formal of the generated DIC procedure.
+ 	(Add_Parent_DICs): New procedure to traverse a type's parents,
+ 	looking for DICs associated with those and calling
+ 	Add_Inherited_DICs to apply the appropriate DIC checks.
+ 	(Is_Verifiable_DIC_Pragma): Treat pragmas that have an Empty
+ 	first argument the same as a pragma without any arguments
+ 	(returning False for that case).
+ 	* exp_ch3.adb (Init_One_Dimension): Generate calls to the
+ 	component's DIC procedure when needed.
+ 	(Possible_DIC_Call): New function nested in Init_One_Dimension
+ 	to build a call to the array component type's DIC-checking
+ 	function when appropriate.
+ 	(Build_Array_Init_Proc): The presence of a DIC on the component
+ 	type is an additional condition for generating an init proc for
+ 	an array type.
+ 	(Build_Init_Statements): When the record component's type has a
+ 	DIC, and the component declaration does not have an
+ 	initialization expression, generate a call to the component
+ 	type's DIC procedure.
+ 	(Expand_N_Object_Declaration): Modify the call to Build_DIC_Call
+ 	to pass a new occurrence of the object's defining id rather than
+ 	the id itself.
+ 	(Freeze_Type): Only build a type's DIC procedure (if it has one)
+ 	for types that are not interfaces.
+ 	* exp_spark.adb (Expand_SPARK_N_Freeze_Type): Remove From_Freeze
+ 	actual and add a ??? comment.
+ 	(Expand_SPARK_N_Object_Declaration): Modify call to
+ 	Build_DIC_Call to pass a new occurrence of the object id rather
+ 	than the object id itself.
+ 	* sem_aggr.adb (Resolve_Record_Aggregate): Declare local flag
+ 	Is_Box_Init_By_Default and set it in cases where the component
+ 	association has a box and the component is being initialized by
+ 	default (as opposed to initialized by an initialization
+ 	expression associated with the component's declaration).
+ 	(Add_Association): If the association has a box for a component
+ 	initialized by default, the flag
+ 	Was_Default_Init_Box_Association is set on the new component
+ 	association (for later testing during expansion).
+ 	(Get_Value): Reset Is_Box_Init_By_Default to False.
+ 	* sem_ch3.adb (Build_Assertion_Bodies_For_Type): Rearrange code
+ 	to build DIC procedure bodies for a (noninterface) type that
+ 	Has_Own_DIC (for partial type views) or Has_DIC (for full type
+ 	views) as appropriate.
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications,
+ 	Aspect_Default_Initial_Condition): Add an extra argument to the
+ 	DIC pragma to denote the type associated with the pragma (for
+ 	use in Build_DIC_Procedure_Body).
+ 	* sem_prag.adb (Analyze_Pragma): Allow two arguments for pragma
+ 	Default_Initial_Condition.  If not already present, add an extra
+ 	argument denoting the type that the pragma is associated with.
+ 	* sem_util.adb (Propagate_DIC_Attributes): Retrieve any partial
+ 	DIC procedure associated with the type and add it to the type's
+ 	list of subprograms (Subprograms_For_Type).
+ 	* sinfo.ads (Was_Default_Init_Box_Association): New flag on
+ 	N_Component_Association nodes.  Add subprograms to get and set
+ 	flag, as well as updating the documentation.
+ 	* sinfo.adb (Was_Default_Init_Box_Association): New function to
+ 	retrieve the corresponding flag (Flag14).
+ 	(Set_Was_Default_Init_Box_Association): New procedure to set the
+ 	corresponding flag (Flag14).
+ 
+ 2020-11-30  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* par-ch6.adb (P_Formal_Part): Remove extra call to Scan.
+ 	* par-tchk.adb: Minor reformatting.
+ 
+ 2020-11-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/a-nbnbre.adb (Float_Conversions): Instantiate Conv
+ 	package only once in the body.
+ 	(Fixed_Conversions.Float_Aux): New instance.
+ 	(Fixed_Conversions.Conv_I): Likewise.
+ 	(Fixed_Conversions.Conv_U): Likewise.
+ 	(Fixed_Conversions.LLLI): New subtype.
+ 	(Fixed_Conversions.LLLU): Likewise.
+ 	(Fixed_Conversions.Too_Large): New constant.
+ 	(Fixed_Conversions.To_Big_Real): Reimplement.
+ 	(Fixed_Conversions.From_Big_Real): Likewise.
+ 
+ 2020-11-30  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Avoid crash in case
+ 	of conditional expression.
+ 
+ 2020-11-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_attributes.rst (Pool_Address):
+ 	Fix pasto.
+ 	(Small_Denominator): New entry.
+ 	(Small_Numerator): Likewise.
+ 	* doc/gnat_rm/implementation_defined_characteristics.rst (3.5.9):
+ 	Relax conditions on 128-bit smalls and integer-only implementation.
+ 	* gnat_rm.texi: Regenerate.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_Fore>:
+ 	Relax conditions on integer implementation for ordinary fixed-point
+ 	types and pass a third parameter to the routine.
+ 	<Attribute_Small_Denominator>: Raise Program_Error.
+ 	<Attribute_Small_Numerator>: Likewise.
+ 	* exp_fixd.adb (Expand_Convert_Fixed_To_Fixed): Use a scaled divide
+ 	if the numerator and denominator of the small ratio are sufficiently
+ 	small integers.
+ 	(Expand_Convert_Fixed_To_Integer): Use a scaled divide if numerator
+ 	and denominator of the small value are sufficiently small integers.
+ 	(Expand_Convert_Integer_To_Fixed): Likewise.
+ 	* exp_imgv.adb (Expand_Image_Attribute): Relax the conditions on the
+ 	integer implementation for ordinary fixed-point types.
+ 	(Expand_Value_Attribute): Likewise.
+ 	* freeze.adb (Freeze_Fixed_Point_Type): Relax conditions on 128-bit
+ 	smalls.
+ 	* sem_attr.adb (Analyze_Attribute) <Attribute_Small_Denominator>:
+ 	Check no arguments, fixed-point and set type to Universal_Integer.
+ 	<Attribute_Small_Numerator>: Likewise.
+ 	(Eval_Attribute) <Attribute_Small_Denominator>: Fold statically.
+ 	<Attribute_Small_Numerator>: Likewise.
+ 	* snames.ads-tmpl (Name_Small_Denominator): New attribute name.
+ 	(Name_Small_Numerator): Likewise.
+ 	(Attribute_Id): Add Attribute_Small_{Denominator,Numerator}.
+ 	* libgnat/a-tifiio.adb (Exact): Delete.
+ 	(Need_64): Likewise.
+ 	(OK_Get_32): New boolean constant.
+ 	(OK_Put_32): Likewise.
+ 	(OK_Get_64): Likewise.
+ 	(OK_Put_64): Likewise.
+ 	(E): Adjust.
+ 	(Get procedures): Likewise.
+ 	(Put procedures): Likewise.
+ 	* libgnat/a-tifiio__128.adb (Exact): Delete.
+ 	(Need_64): Likewise.
+ 	(Need_128): Likewise.
+ 	(OK_Get_32): New boolean constant.
+ 	(OK_Put_32): Likewise.
+ 	(OK_Get_64): Likewise.
+ 	(OK_Put_64): Likewise.
+ 	(OK_Get_128): Likewise.
+ 	(OK_Put_128): Likewise.
+ 	(E): Adjust.
+ 	(Get procedures): Likewise.
+ 	(Put procedures): Likewise.
+ 	* libgnat/a-wtfiio.adb (Exact): Delete.
+ 	(Need_64): Likewise.
+ 	(OK_Get_32): New boolean constant.
+ 	(OK_Put_32): Likewise.
+ 	(OK_Get_64): Likewise.
+ 	(OK_Put_64): Likewise.
+ 	(E): Adjust.
+ 	(Get procedures): Likewise.
+ 	(Put procedures): Likewise.
+ 	* libgnat/a-wtfiio__128.adb (Exact): Delete.
+ 	(Need_64): Likewise.
+ 	(Need_128): Likewise.
+ 	(OK_Get_32): New boolean constant.
+ 	(OK_Put_32): Likewise.
+ 	(OK_Get_64): Likewise.
+ 	(OK_Put_64): Likewise.
+ 	(OK_Get_128): Likewise.
+ 	(OK_Put_128): Likewise.
+ 	(E): Adjust.
+ 	(Get procedures): Likewise.
+ 	(Put procedures): Likewise.
+ 	* libgnat/a-ztfiio.adb (Exact): Delete.
+ 	(Need_64): Likewise.
+ 	(OK_Get_32): New boolean constant.
+ 	(OK_Put_32): Likewise.
+ 	(OK_Get_64): Likewise.
+ 	(OK_Put_64): Likewise.
+ 	(E): Adjust.
+ 	(Get procedures): Likewise.
+ 	(Put procedures): Likewise.
+ 	* libgnat/a-ztfiio__128.adb (Exact): Delete.
+ 	(Need_64): Likewise.
+ 	(Need_128): Likewise.
+ 	(OK_Get_32): New boolean constant.
+ 	(OK_Put_32): Likewise.
+ 	(OK_Get_64): Likewise.
+ 	(OK_Put_64): Likewise.
+ 	(OK_Get_128): Likewise.
+ 	(OK_Put_128): Likewise.
+ 	(E): Adjust.
+ 	(Get procedures): Likewise.
+ 	(Put procedures): Likewise.
+ 	* libgnat/s-fore_f.ads (Fore_Fixed): Adjust signature.
+ 	* libgnat/s-fore_f.adb (Fore_Fixed): Reimplement.
+ 	* libgnat/s-fofi32.ads (Fore_Fixed32): Adjust signature.
+ 	* libgnat/s-fofi64.ads (Fore_Fixed64): Likewise.
+ 	* libgnat/s-fofi128.ads (Fore_Fixed128): Likewise.
+ 	* libgnat/s-imagef.ads: Adjust description.
+ 	* libgnat/s-imagef.adb (Maxdigs): Move around.
+ 	(Set_Image_Integer): Remove assertion.
+ 	* libgnat/s-valuef.ads: Adjust description.
+ 	* libgnat/s-valuef.adb (Integer_To_Fixed): Minor tweak.
+ 
+ 2020-11-30  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ 	Describe -gnateb switch.
+ 	* doc/gnat_ugn/the_gnat_compilation_model.rst: Mention -gnateb
+ 	switch in configuration pragma files section.
+ 	* gnat_ugn.texi: Regenerate.
+ 	* lib-writ.adb (Write_ALI): Strip directories from configuration
+ 	files path if needed.
+ 	* opt.ads: Declare Config_Files_Store_Basename option.
+ 	* par.adb (Par): Save configuration file checksum.
+ 	* switch-c.adb (Scan_Front_End_Switches): Set
+ 	Config_Files_Store_Basename true if -gnateb is present.
+ 
+ 2020-11-30  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_dist.adb (RCI_Cache): Initialize.
+ 
+ 2020-11-30  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* terminals.c (allocate_pty_desc): Copy one less byte since the
+ 	last byte will always be set to 0.
+ 
+ 2020-11-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst (-xdr):
+ 	Document that XDR is not supported for 128-bit integer types.
+ 	* gnat_ugn.texi: Regenerate.
+ 	* exp_strm.adb (Build_Elementary_Input_Call): Deal with types
+ 	larger than Long_Long_Integer.
+ 	(Build_Elementary_Write_Call): Likewise.
+ 	* rtsfind.ads (RE_Id): Add RE_I_LLL{I,U] and RE_W_LLL{I,U}.
+ 	(RE_Unit_Table): Add entries for them.
+ 	* libgnat/s-stratt.ads (I_LLLI): New inline function.
+ 	(I_LLLU): Likewise.
+ 	(W_LLLI): New inline procedure.
+ 	(W_LLLU): Likewise.
+ 	* libgnat/s-stratt.adb (S_LLLI): New subtype of SEA.
+ 	(S_LLLU): Likewise.
+ 	(From_LLLI): New instance of Unchecked_Conversion.
+ 	(From_LLLU): Likewise.
+ 	(To_LLLI): Likewise.
+ 	(To_LLLU): Likewise.
+ 	(I_LLLI): Implement.
+ 	(I_LLLU): Likewise.
+ 	(W_LLLI): Likewise.
+ 	(W_LLLU): Likewise.
+ 
+ 2020-11-30  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_Iterator_Loop_Over_Container): Check the
+ 	signature of the private operation Get_Element_Access to prevent
+ 	accidental use of a user-defined homonym subprogram.
+ 
+ 2020-11-30  Yannick Moy  <moy@adacore.com>
+ 
+ 	* spark_xrefs.ads: Add comment for Heap that it may remain
+ 	Empty.
+ 
+ 2020-11-30  Pascal Obry  <obry@adacore.com>
+ 
+ 	* libgnat/g-sercom__linux.adb (Set): Fix control flags of the
+ 	serial port setting.
+ 
+ 2020-11-30  Pascal Obry  <obry@adacore.com>
+ 
+ 	* libgnat/g-sercom__linux.adb: Minor style fixes.
+ 
+ 2020-11-30  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_util.adb (Get_Current_Value_Condition): Don't use current
+ 	value tracking in GNATprove mode.
+ 	* sem_res.adb (Resolve_Comparison_Op): Remove incomplete
+ 	special-casing for folding in GNATprove mode.
+ 
+ 2020-11-30  Bob Duff  <duff@adacore.com>
+ 
+ 	* errout.adb (Error_Msg_NEL): Do not call Set_Posted if errors
+ 	are being ignored.
+ 	(Error_Msg): Change Errors_Must_Be_Ignored to use the getter.
+ 	* sem_ch8.adb (Find_Direct_Name): Do not skip all the error
+ 	checks when ignoring errors, but instead do not add an entry to
+ 	the Urefs table if errors are being ignored.
+ 	* exp_ch5.adb: Minor comment fix.
+ 
+ 2020-11-30  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Array_Aggregate): Improve error message.
+ 
+ 2020-11-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-valuef.adb (Integer_To_Fixed): Do not modify numerator
+ 	or denominator in order to reduce the exponent.
+ 
+ 2020-11-30  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* ali-util.adb (Get_File_Checksum): Remove dead code.
+ 	* exp_ch4.adb (Expand_Boolean_Operator, Expand_N_Op_Not,
+ 	Make_Boolean_Array_Op): Take Transform_Function_Array into
+ 	account.
+ 	* exp_ch6.adb (Expand_Call_Helper): Update comment. Code
+ 	cleanup.
+ 	* exp_util.adb (Build_Procedure_Form): Use new predefined name
+ 	Name_UP_RESULT.
+ 	* snames.ads-tmpl (Name_UP_RESULT): New predefined name.  Code
+ 	cleanup: remove unused names from the project parser, moved to
+ 	gprbuild sources.
+ 	* xsnamest.adb: Add support for uppercase names.
+ 
+ 2020-11-30  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_util.adb (Enter_Name): When an inherited operation for a
+ 	local derived type is hidden by an explicit declaration of a
+ 	non-overloadable entity in the same scope, make the inherited
+ 	operation non-visible to prevent its accidental use elsewhere.
+ 
+ 2020-11-29  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	PR ada/97504
+ 	* Makefile.rtl (LIBGNAT_TARGET_PAIRS) <hppa*-*-hpux*>: Use wraplf
+ 	version of Aux_Long_Long_Float.
+ 
+ 2020-11-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-valuef.adb (Integer_To_Fixed): Take into account the
+ 	extra digit when scaling up the input.
+ 	* libgnat/s-valuer.adb (Scan_Decimal_Digits): Restrict previous
+ 	change to fixed-point types.
+ 	(Scan_Integral_Digits): Likewise.
+ 
+ 2020-11-27  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_res.adb (Parent_Is_Boolean): Simplify.
+ 	(Resolve_Op_Not): Reduce scope of a local variable.
+ 
+ 2020-11-27  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* cstand.adb: Simplify with Append_New_Elmt.
+ 	* sem_util.adb: Likewise.
+ 
+ 2020-11-27  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_eval.adb (Fold_Shift): Fix evaluation of Shift_Right on
+ 	negative values.
+ 
+ 2020-11-27  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call): Properly split
+ 	Transform_Function_Array and Modify_Tree_For_C.
+ 
+ 2020-11-27  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_eval.ads (Compile_Time_Compare): Restore parameter Diff to
+ 	be of an access type.
+ 	* sem_eval.adb (Compile_Time_Compare): Adapt body and callers.
+ 	* sem_attr.adb (Eval_Attribute): Adapt callers.
+ 
+ 2020-11-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-valuer.adb (Scan_Decimal_Digits): Round Extra.
+ 	(Scan_Integral_Digits): Likewise.
+ 
+ 2020-11-27  Yannick Moy  <moy@adacore.com>
+ 
+ 	* checks.adb (Selected_Range_Checks): Adapt the condition for
+ 	applying range checks so that it is not done inside generics.
+ 
+ 2020-11-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_fixd.adb (Build_Double_Divide): Only use a 128-bit
+ 	division if one of the operands is larger than 64 bits.
+ 	(Build_Double_Divide_Code): Likewise.
+ 	(Build_Scaled_Divide): Likewise.
+ 	(Build_Scaled_Divide_Code): Likewise.
+ 
+ 2020-11-27  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/s-os_lib.adb (To_GM_Time): Return valid and consistent
+ 	values for Invalid_Time.
+ 
+ 2020-11-27  Steve Baird  <baird@adacore.com>
+ 
+ 	* snames.ads-tmpl: Define new Name_Stable_Properties Name_Id
+ 	value.
+ 	* aspects.ads, aspects.adb: Add new Aspect_Stable_Properties
+ 	enumeration literal to Aspect_Id type. Add Class_Present
+ 	parameter to Find_Aspect and related
+ 	functions (Find_Value_Of_Aspect and Has_Aspect).
+ 	* sem_util.adb (Has_Nontrivial_Precondition): Fix
+ 	previously-latent bug uncovered by adding Class_Present
+ 	parameter to Aspect.Find_Aspect. The code was wrong before, but
+ 	with the change the bug was more likely to make a user-visible
+ 	difference.
+ 	* sem_ch6.adb (Analyze_Operator_Symbol): If a string literal
+ 	like "abs" or "-" occurs in a Stable_Properties aspect
+ 	specification, then it is to be interpreted as an operator
+ 	symbol and not as a string literal.
+ 	* sem_ch13.ads: Export new Parse_Aspect_Stable_Properties
+ 	function, analogous to the existing Parse_Aspect_Aggregate
+ 	exported procedure.
+ 	* sem_ch13.adb: (Parse_Aspect_Stable_Properties): New function;
+ 	analogous to existing Parse_Aspect_Aggregate.
+ 	(Validate_Aspect_Stable_Properties): New procedure; analogous to
+ 	existing Validate_Aspect_Aggregate. Called from the same case
+ 	statement (casing on an Aspect_Id value) where
+ 	Validate_Aspect_Aggregate is called.
+ 	(Resolve_Aspect_Stable_Properties): New procedure; analogous to
+ 	existing Resolve_Aspect_Aggregate. Called from the same two case
+ 	statements (each casing on an Aspect_Id value) where
+ 	Resolve_Aspect_Aggregate is called.
+ 	(Analyze_Aspect_Specifications): Set Has_Delayed_Aspects and
+ 	Is_Delayed_Aspect attributes for Aspect_Stable_Properties aspect
+ 	specifications.
+ 	(Check_Aspect_At_End_Of_Declarations): The syntactic
+ 	"expression" for a Stable_Properties aspect specification is not
+ 	semantically an expression; it doesn't have a type. Thus, force
+ 	T to be empty in this case.
+ 	* contracts.adb (Expand_Subprogram_Contract): Add call to new
+ 	local procedure,
+ 	Expand_Subprogram_Contract.Add_Stable_Property_Contracts, which
+ 	generates Postcondition pragmas corresponding to stable property
+ 	checks.
+ 
+ 2020-11-27  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst:
+ 	(Assertion_Policy): Move "Default_Initial_Condition" from
+ 	ID_ASSERTION_KIND to RM_ASSERTION_KIND section.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-11-27  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst
+ 	(Assertion_Policy): Add "Default_Initial_Condition",
+ 	"Initial_Condition" and "Subprogram_Variant".
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-11-27  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Is_Valid_Assertion_Kind): Return False on
+ 	"Assertion_Policy"
+ 
+ 2020-11-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* make.adb (GNAT_Flag): Change to "-gnatg".
+ 	(Compile): Adjust comments accordingly.
+ 
+ 2020-11-27  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch4.adb (Rewrite_Comparison): Add assertion to confirm
+ 	that evaluation folds comparisons with static operands; when
+ 	folding comparison with non-static operands, the resulting
+ 	literal is non-static.
+ 	* sem_eval.adb (Eval_Relational_Op): Refactor nested IF
+ 	statement for the special case in the THEN branch; move code for
+ 	the "general case" out of the ELSE branch.
+ 	* sem_res.adb (Resolve_Comparison_Op): Only apply a dubious
+ 	special-case for GNATprove in the GNATprove_Mode.
+ 
+ 2020-11-27  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_eval.ads (Compile_Time_Compare): Change parameter Diff
+ 	from access to mode out.
+ 	* sem_eval.adb (Compile_Time_Compare): Adapt body and callers.
+ 	* sem_attr.adb (Eval_Attribute): Adapt callers.
+ 
+ 2020-11-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Op_Multiply): Move down block calling
+ 	Narrow_Large_Operation if the type is Universal_Integer.
+ 
+ 2020-11-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/a-nbnbre.adb: Remove clauses for System.Img_Real and
+ 	add them for System.Unsigned_Types.
+ 	(Float_Conversions.To_Big_Real): Reimplement.
+ 	(Float_Conversions.From_Big_Real): Likewise.
+ 
+ 2020-11-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.ads (Determine_Range_To_Discrete): New procedure.
+ 	* checks.adb (Apply_Scalar_Range_Check): Call it to determine
+ 	a range for the expression when the target type is discrete.
+ 	And also apply the tests for discrete types to fixed-point
+ 	types when they are treated as integers.
+ 	(Apply_Type_Conversion_Checks): Apply checks to conversions
+ 	involving fixed-point types when they are treated as integers.
+ 	(Determine_Range) <N_Type_Conversion>: Factor out code into...
+ 	(Determine_Range_To_Discrete): ...this new procedure and add
+ 	support for fixed-point types when they are treated as integers.
+ 	* einfo.ads (Type_High_Bound): Remove obsolete sentence.
+ 	(Type_Low_Bound): Likewise.
+ 	* exp_ch4.adb (Discrete_Range_Check): Remove obsolete code.
+ 	(Real_Range_Check): Likewise.
+ 	(Expand_N_Type_Conversion): In case of a no-op conversion, clear
+ 	the Do_Range_Check flag on the operand before substituting it.
+ 	Remove calls to Real_Range_Check and Discrete_Range_Check that
+ 	are not guarded by the Do_Range_Check flag, and an assertion.
+ 	* sem_res.adb (Resolve_Type_Conversion): Always apply range
+ 	checks in GNATprove mode; in normal mode, use the updated type
+ 	of the operand in the test against Universal_Fixed.  Remove
+ 	obsolete code setting the Do_Range_Check flag at the end.
+ 
+ 2020-11-27  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Change "Ref Manual" to RM;
+ 	replace uses of an unnecessary "Ok" variable with RETURN
+ 	statements; replace nested IF with ELSIF.
+ 
+ 2020-11-27  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnarl/s-tasren.adb (Local_Complete_Rendezvous): Always call
+ 	Defer_Abort.
+ 	* libgnat/a-except.adb: Abort does not need to be deferred.
+ 	* libgnarl/s-tpobop.adb (Exceptional_Complete_Entry_Body): Abort
+ 	never needs to be undeferred here.
+ 	* exp_ch11.adb (Expand_Exception_Handlers): Remove difference
+ 	between ZCX and SJLJ.
+ 	* exp_ch9.adb (Expand_N_Asynchronous_Select): Remove different
+ 	handling for sjlj.
+ 	* exp_sel.ads, exp_sel.adb (Build_Abort_Block,
+ 	Build_Abort_Block_Handler): Ditto.
+ 
+ 2020-11-27  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): declare new Check_No_Return
+ 	function and call it.
+ 
+ 2020-11-27  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch12.adb (Instantiate_Object): Consistently use
+ 	New_Copy_Tree instead of New_Copy.
+ 
+ 2020-11-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_fixd.adb (Build_Conversion): Adjust head comment.
+ 	(Build_Divide): Likewise.
+ 	(Build_Double_Divide): Likewise.
+ 	(Build_Multiply): Likewise.
+ 	(Build_Rem): Likewise.
+ 	(Build_Scaled_Divide): Likewise.
+ 
+ 2020-11-27  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/s-genbig.ads, libgnat/s-genbig.adb (To_Bignum): New
+ 	variant taking an Unsigned_128.
+ 	* libgnat/a-nbnbin.adb (To_Big_Integer): Add support for 128
+ 	bits signed and unsigned types.
+ 
+ 2020-11-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-imagef.adb (Set_Image_Fixed): Pass the full value
+ 	of the quotient to Set_Image_Integer during the first round and
+ 	adjust the handling of the minus sign.
+ 
+ 2020-11-27  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-nbnbre.adb ("=", "<"): Fix.
+ 
+ 2020-11-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-valuer.adb (Scan_Raw_Real): Move pragma Annotate around
+ 	and adjust its parameters.
+ 
+ 2020-11-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_fixd.adb (Build_Double_Divide): Use the RM size of types and
+ 	a more precise estimate for the size of the denominator.
+ 	(Build_Double_Divide_Code): Likewise.
+ 	(Build_Multiply): Use a more precise estimate for the size of the
+ 	result.
+ 	(Build_Scaled_Divide):  Use the RM size of types and a more precise
+ 	estimate for the size of the numerator.
+ 	(Build_Scaled_Divide_Code): Likewise.
+ 
+ 2020-11-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* Makefile.rtl <sparc*-sun-solaris*> (THREADSLIB): Remove.
+ 	(MISCLIB): Remove -lposix4.
+ 	<*86-*-solaris2*>: Likewise.
+ 	* libgnarl/s-osinte__solaris.ads (System.OS_Interface): Remove
+ 	-lposix4 -lthread.
+ 
+ 2020-11-26  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-nbnbre.adb (To_Big_Real): Do not loose precision.
+ 
+ 2020-11-26  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch8.adb (Analyze_Object_Renaming): Check for AI12-0401.
+ 
+ 2020-11-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Likewise.
+ 	(GNATRTL_128BIT_OBJS): Likewise.
+ 	(GNATRTL_128BIT_PAIRS): Add new 128-bit variants.
+ 	* cstand.adb (Create_Standard): Create Standard_Integer_128.
+ 	* doc/gnat_rm/implementation_defined_characteristics.rst: Document
+ 	new limits on 64-bit platforms in entry for 3.5.9(10).
+ 	* gnat_rm.texi: Regenerate.
+ 	* exp_attr.adb: Add with and use clauses for Urealp.
+ 	(Expand_N_Attribute_Reference) <Attribute_Fore>: Call new routines
+ 	for decimal fixed-point types and common ordinary fixed-point types.
+ 	* exp_ch4.adb (Real_Range_Check): Extend conversion trick to all
+ 	ordinary fixed-point types and use Small_Integer_Type_For.
+ 	* exp_fixd.adb: Add with and use clauses for Ttypes.
+ 	(Build_Divide): Add special case for 32-bit values and deal with
+ 	128-bit types.
+ 	(Build_Double_Divide): Deal with 128-bit types.
+ 	(Build_Double_Divide_Code): Likewise.  Do not apply conversions
+ 	before calling Build_Multiply.
+ 	(Build_Multiply): Likewise.  Add special case for 32-bit values.
+ 	(Build_Scaled_Divide): Deal with 128-bit types.
+ 	(Build_Scaled_Divide_Code): Likewise.  Fix size computation.  Do not
+ 	apply conversions before calling Build_Multiply.
+ 	(Do_Multiply_Fixed_Fixed): Minor tweak.
+ 	(Integer_Literal): Deal with 128-bit values.
+ 	* exp_imgv.adb (Has_Decimal_Small): Delete.
+ 	(Expand_Image_Attribute): Call new routines for common ordinary
+ 	fixed-point types.
+ 	(Expand_Value_Attribute): Likewise.
+ 	(Expand_Width_Attribute): Add new expansion for fixed-point types.
+ 	* freeze.adb (Freeze_Entity): Move error checks for ordinary
+ 	fixed-point types to...
+ 	(Freeze_Fixed_Point_Type): ...here.  Deal with 128-bit types and
+ 	adjust limitations for 32-bnt and 64-bit types.
+ 	* rtsfind.ads (RTU_Id): Add entries for new System_Fore, System_Img,
+ 	and System_Val units and remove them for obsolete units.
+ 	(RE_Id): Add entries for Double_Divide128, Scaled_Divide128, the new
+ 	Fore, Image, Value routines and remove them for obsolete units.
+ 	(RE_Unit_Table): Likewise.
+ 	* sem_ch3.adb (Decimal_Fixed_Point_Type_Declaration): Deal with
+ 	128-bit types.
+ 	* stand.ads (Standard_Entity_Type): Add Standard_Integer_128.
+ 	* uintp.ads (Uint_31): New deferred constant.
+ 	(Uint_Minus_18): Likewise.
+ 	(Uint_Minus_31): Likewise.
+ 	(Uint_Minus_76): Likewise.
+ 	(Uint_Minus_127): Likewise.
+ 	* urealp.ads (Ureal_2_31): New function.
+ 	(Ureal_2_63): Likewise.
+ 	(Ureal_2_127): Likewise.
+ 	(Ureal_2_M_127): Likewise.
+ 	(Ureal_2_10_18): Likewise.
+ 	(Ureal_M_2_10_18): Likewise.
+ 	(Ureal_9_10_36): Likewise.
+ 	(Ureal_M_9_10_36): Likewise.
+ 	(Ureal_10_76): Likewise.
+ 	(Ureal_M_10_76): Likewise.
+ 	(Ureal_10_36): Delete.
+ 	(Ureal_M_10_36): Likewise.
+ 	* urealp.adb (UR_2_10_18): New variable.
+ 	(UR_9_10_36): Likewise.
+ 	(UR_10_76): Likewise.
+ 	(UR_M_2_10_18): Likewise.
+ 	(UR_M_9_10_36): Likewise.
+ 	(UR_M_10_76): Likewise.
+ 	(UR_2_31): Likewise.
+ 	(UR_2_63): Likewise.
+ 	(UR_2_127): Likewise.
+ 	(UR_2_M_127): Likewise.
+ 	(UR_10_36): Delete.
+ 	(UR_M_10_36): Likewise.
+ 	(Initialize): Initialize them.
+ 	(UR_Write): Do not use awkward Ada literal style.
+ 	(Ureal_2_10_18): New function.
+ 	(Ureal_9_10_36): Likewise.
+ 	(Ureal_10_76): Likewise.
+ 	(Ureal_2_31): Likewise.
+ 	(Ureal_2_63): Likewise.
+ 	(Ureal_2_127): Likewise.
+ 	(Ureal_2_M_127): Likewise.
+ 	(Ureal_M_2_10_18): Likewise.
+ 	(Ureal_M_9_10_36): Likewise.
+ 	(Ureal_10_76): Likewise.
+ 	(Ureal_M_10_76): Likewise.
+ 	(Ureal_10_36): Delete.
+ 	(Ureal_M_10_36): Likewise.
+ 	* libgnat/a-decima__128.ads: New file.
+ 	* libgnat/a-tideau.ads, libgnat/a-tideau.adb: Reimplement as
+ 	generic unit.
+ 	* libgnat/a-tideio.adb: Reimplement.
+ 	* libgnat/a-tideio__128.adb: New file.
+ 	* libgnat/a-tifiau.ads, libgnat/a-tifiau.adb: New generic unit.
+ 	* libgnat/a-tifiio.adb: Move bulk of implementation to s-imagef
+ 	and reimplement.
+ 	* libgnat/a-tifiio__128.adb: New file.
+ 	* libgnat/a-tiflau.adb (Get): Minor consistency fix.
+ 	(Gets): Likewise.
+ 	* libgnat/a-wtdeau.ads, libgnat/a-wtdeau.adb: Reimplement as
+ 	generic unit.
+ 	* libgnat/a-wtdeio.adb: Reimplement.
+ 	* libgnat/a-wtdeio__128.adb: New file.
+ 	* libgnat/a-wtfiau.ads, libgnat/a-wtfiau.adb: New generic unit.
+ 	* libgnat/a-wtfiio.adb: Reimplement.
+ 	* libgnat/a-wtfiio__128.adb: New file.
+ 	* libgnat/a-ztdeau.ads, libgnat/a-ztdeau.adb: Reimplement as
+ 	generic unit.
+ 	* libgnat/a-ztdeio.adb: Reimplement.
+ 	* libgnat/a-ztdeio__128.adb: New file.
+ 	* libgnat/a-ztfiau.ads, libgnat/a-ztfiau.adb: New generic unit.
+ 	* libgnat/a-ztfiio.adb: Reimplement.
+ 	* libgnat/a-ztfiio__128.adb: New file.
+ 	* libgnat/g-rannum.adb (Random_Decimal_Fixed): Use a subtype of the
+ 	appropiate size for the instantiation.
+ 	(Random_Ordinary_Fixed): Likewise.
+ 	* libgnat/s-arit32.ads, libgnat/s-arit32.adb: New support unit.
+ 	* libgnat/s-fode128.ads: New instantiation.
+ 	* libgnat/s-fode32.ads: Likewise.
+ 	* libgnat/s-fode64.ads: Likewise.
+ 	* libgnat/s-fofi128.ads: Likewise.
+ 	* libgnat/s-fofi32.ads: Likewise.
+ 	* libgnat/s-fofi64.ads: Likewise.
+ 	* libgnat/s-fore_d.ads, libgnat/s-fore_d.adb: New generic unit.
+ 	* libgnat/s-fore_f.ads, libgnat/s-fore_f.adb: Likewise.
+ 	* libgnat/s-fore.ads, libgnat/s-fore.adb: Rename into...
+ 	* libgnat/s-forrea.ads, libgnat/s-forrea.adb: ...this.
+ 	* libgnat/s-imaged.ads, libgnat/s-imaged.adb: New generic unit.
+ 	* libgnat/s-imagef.ads, libgnat/s-imagef.adb: Likewise, taken
+ 	from a-tifiio.adb.
+ 	* libgnat/s-imde128.ads: New instantiation.
+ 	* libgnat/s-imde32.ads: Likewise.
+ 	* libgnat/s-imde64.ads: Likewise.
+ 	* libgnat/s-imfi128.ads: Likewise.
+ 	* libgnat/s-imfi32.ads: Likewise.
+ 	* libgnat/s-imfi64.ads: Likewise.
+ 	* libgnat/s-imgdec.ads, libgnat/s-imgdec.adb: Delete.
+ 	* libgnat/s-imglld.ads, libgnat/s-imglld.adb: Likewise.
+ 	* libgnat/s-imgrea.adb (Set_Image_Real): Replace Sign local variable
+ 	with Minus local variable for the sake of consistency.
+ 	* libgnat/s-imguti.ads, libgnat/s-imguti.adb: New support unit.
+ 	* libgnat/s-vade128.ads: New instantiation.
+ 	* libgnat/s-vade32.ads: Likewise.
+ 	* libgnat/s-vade64.ads: Likewise.
+ 	* libgnat/s-vafi128.ads: Likewise.
+ 	* libgnat/s-vafi32.ads: Likewise.
+ 	* libgnat/s-vafi64.ads: Likewise.
+ 	* libgnat/s-valdec.ads, libgnat/s-valdec.adb: Delete.
+ 	* libgnat/s-vallld.ads, libgnat/s-vallld.adb: Likewise.
+ 	* libgnat/s-valued.ads, libgnat/s-valued.adb: New generic unit.
+ 	* libgnat/s-valuef.ads, libgnat/s-valuef.adb: Likewise.
+ 	* libgnat/s-valuei.adb: Minor rewording.
+ 	* libgnat/s-valrea.adb: Move bulk of implementation to...
+ 	* libgnat/s-valuer.ads, libgnat/s-valuer.adb: ...here.  New
+ 	generic unit.
+ 	* libgnat/system-aix.ads (Max_Mantissa): Adjust.
+ 	* libgnat/system-darwin-arm.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-darwin-ppc.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-darwin-x86.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-djgpp.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-dragonfly-x86_64.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-freebsd.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-hpux-ia64.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-hpux.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-linux-alpha.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-linux-arm.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-linux-hppa.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-linux-ia64.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-linux-m68k.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-linux-mips.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-linux-ppc.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-linux-riscv.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-linux-s390.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-linux-sh4.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-linux-sparc.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-linux-x86.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-lynxos178-ppc.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-lynxos178-x86.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-mingw.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-qnx-aarch64.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-rtems.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-solaris-sparc.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-solaris-x86.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-arm-rtp-smp.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-arm-rtp.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-arm.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-e500-kernel.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-e500-rtp-smp.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-e500-rtp.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-e500-vthread.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-ppc-kernel.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-ppc-ravenscar.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-ppc-rtp-smp.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-ppc-rtp.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-ppc-vthread.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-ppc.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-x86-kernel.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-x86-rtp-smp.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-x86-rtp.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-x86-vthread.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks-x86.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks7-aarch64-rtp-smp.ads (Max_Mantissa):
+ 	Likewise.
+ 	* libgnat/system-vxworks7-aarch64.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks7-arm-rtp-smp.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks7-arm.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks7-e500-kernel.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks7-e500-rtp-smp.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks7-e500-rtp.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks7-ppc-kernel.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks7-ppc-rtp-smp.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks7-ppc-rtp.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks7-ppc64-kernel.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks7-ppc64-rtp-smp.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks7-x86-kernel.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks7-x86-rtp-smp.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks7-x86-rtp.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks7-x86_64-kernel.ads (Max_Mantissa): Likewise.
+ 	* libgnat/system-vxworks7-x86_64-rtp-smp.ads (Max_Mantissa): Likewise.
+ 
+ 2020-11-26  Liaiss Merzougue  <merzougue@adacore.com>
+ 
+ 	* libgnat/s-imgrea.ads (Image_Ordinary_Fixed_Point): Add a
+ 	remark concerning the irrelevant use of Inf and -0.0
+ 
+ 2020-11-26  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* osint-c.adb (Set_Output_Object_File_Name): Add support for
+ 	.c output file.
+ 
+ 2020-11-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* lib-writ.adb, sem_ch8.adb, sem_prag.adb: Use
+ 	Is_Generic_Subprogram instead of low-level membership tests.
+ 
+ 2020-11-26  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Call_And_Resolve): Reformatted a comment.
+ 	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
+ 	Fixed a typo.
+ 
+ 2020-11-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Membership_Op): Replace pragma Warnings
+ 	with pragma Assert.
+ 
+ 2020-11-26  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Call_And_Resolve): Add information to the
+ 	error message on an illegal procedure call, when the illegality
+ 	is due to the presence of a component of the full view of the
+ 	target object, as well as a procedure with the same name (See RM
+ 	4.1.3 (9.2/3)).
+ 
+ 2020-11-26  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
+ 	when the restriction is a configuration pragma and specifies
+ 	No_Tasking, a global flag is set to reject task declarations,
+ 	and to prevent the construction of Master entities. The flag
+ 	must not be set if the pragma is a Restriction_Warning, in which
+ 	case task declarationns are allowed.
+ 
+ 2020-11-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/a-stzhas.adb (Wide_Wide_Hash): Instantiate inside a
+ 	wrapper function.
+ 	* libgnat/a-stzhas.ads (Wide_Wide_Hash): Likewise; remove wrong
+ 	comment, because this is indeed a RM unit, as described in Ada
+ 	RM A.4.8 (1/3).
+ 
+ 2020-11-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_eval.adb (Eval_Slice): Refactor repeated calls to Prefix
+ 	with a local constant (named just like in Resolve_Slice).
+ 
+ 2020-11-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_eval.adb (Eval_Slice): Emit warning not just for
+ 	constants, but for any objects.
+ 
+ 2020-11-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch4.adb (Indicate_Name_And_Type): Fix whitespace in
+ 	comment.
+ 	* sem_res.adb (Resolve_Call): Remove redundant parens.
+ 	* sem_util.adb (Set_Entity_With_Checks): Remove extra call to
+ 	Set_Entity.
+ 
+ 2020-11-26  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_Concatenate): Call Set_No_Initialization
+ 	on the N_Allocator node that is supposed to allocate on the
+ 	secondary stack.
+ 
+ 2020-11-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch13.adb, exp_ch9.adb, sem_ch8.adb, sem_util.adb: Replace
+ 	a combination of Is_Protected_Type and Is_Task_Type by
+ 	Is_Concurrent_Type.
+ 
+ 2020-11-26  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnarl/s-tassta.adb (Task_Wrapper): Fix computation of
+ 	Pattern_Size.
+ 
+ 2020-11-26  Bob Duff  <duff@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Array_Type): Remove propagation of
+ 	Has_Own_Invariants to the first subtype. This is a no-op,
+ 	because the current (incorrect) version of Has_Own_Invariants
+ 	calls Base_Type.
+ 	* sem_prag.adb, sem_util.adb: Pass the base type to
+ 	Set_Has_Own_Invariants.
+ 
+ 2020-11-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Aft_Value): Adjust documentation.
+ 	(Scale_Value): Likewise.
+ 
+ 2020-11-26  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Type_Conversion): Use the unexpanded
+ 	operand when generating accessibility checks.
+ 
+ 2020-11-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/a-cbhase.adb (Read): Remove extra whitespace.
+ 	* libgnat/a-cbmutr.ads (Read): Likewise.
+ 	* libgnat/a-cborse.adb (Read): Likewise.
+ 
+ 2020-11-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch7.adb, exp_util.adb, freeze.adb: Rewrite with
+ 	Is_Access_Object_Type.
+ 
+ 2020-11-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Check_Valid_Library_Unit_Pragma): Raise
+ 	exception.
+ 	(Analyze_Pragma): Remove detection of rewritten pragmas.
+ 
+ 2020-11-26  Joffrey Huguet  <huguet@adacore.com>
+ 
+ 	* libgnat/a-strmap.ads: Add preconditions and postconditions to
+ 	all subprograms.
+ 
+ 2020-11-26  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Equality_Op): Warn when -gnatwq is used
+ 	(the default) and the problematic case is encountered.
+ 
+ 2020-11-26  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Issue a continuation message
+ 	to give proper recommendation here.
+ 
+ 2020-11-26  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_util.adb (Expand_Subtype_From_Expr): A typo correction,
+ 	plus other minor reformatting.
+ 
+ 2020-11-26  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Instantiate_Formal_Package): If previous matched
+ 	entity is overloadable, advance in the list of actuals of the
+ 	actual package, to prevent an erroneous match of two adjacent
+ 	overloadable homonyms with the same entity.
+ 
+ 2020-11-26  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch6.adb (First_Selector): Utility routine to return the
+ 	first selector or choice in an association.
+ 	(Check_Return_Construct_Accessibility): Modify loop to handle
+ 	named associations when iterating through discriminants.
+ 
+ 2020-11-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch12.adb: Fix casing from "Instantiation" to
+ 	"instantiation".
+ 
+ 2020-11-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* freeze.adb (Is_Uninitialized_Aggregate): Move...
+ 	* exp_util.adb (Is_Uninitialized_Aggregate): ... here.
+ 	(Expand_Subtype_From_Expr): If the expression is an
+ 	uninitialized aggregate, capture subtype for declared object and
+ 	remove expression to suppress further superfluous expansion.
+ 
+ 2020-11-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_eval.adb (Subtypes_Statically_Compatible): Scalar types
+ 	with compatible static bounds are statically compatible if
+ 	predicates are compatible, even if they are not static subtypes.
+ 	Same for private types without discriminants.
+ 
+ 2020-11-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch11.adb (Expand_N_Raise_Statement): Use Is_Entity_Name
+ 	consistently in tests on the name of the statement.
+ 	* exp_prag.adb (Expand_Pragma_Check): In the local propagation
+ 	case, wrap the raise statement in a block statement.
+ 
+ 2020-11-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch8.adb (Expand_N_Exception_Renaming_Declaration): Move
+ 	"Nam" constant after the body of a nested subprogram; change "T"
+ 	from variable to constant.
+ 
+ 2020-11-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* make.adb (Scan_Make_Arg): Merge ELSIF branches for -u and -U.
+ 
+ 2020-11-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_attributes.rst
+ 	(Has_Tagged_Values): Document based on the existing description
+ 	of Has_Access_Type and the comment for Has_Tagged_Component,
+ 	which is where frontend evaluates this attribute.
+ 	* gnat_rm.texi: Regenerate.
+ 	* sem_attr.adb (Analyze_Attribute): Merge processing of
+ 	Has_Access_Type and Has_Tagged_Component attributes.
+ 	* sem_util.adb (Has_Access_Type): Fix casing in comment.
+ 	* sem_util.ads (Has_Tagged_Component): Remove wrong (or
+ 	outdated) comment about the use of this routine to implement the
+ 	equality operator.
+ 
+ 2020-11-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_Size_Attribute): Remove whitespace;
+ 	simplify with a membership test, which are now allowed in the
+ 	frontend code.
+ 
+ 2020-11-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_One_Aspect): Fix inconsistent calls to
+ 	Make_Aitem_Pragma.
+ 
+ 2020-11-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Check_Expr_Constants): Simplify with
+ 	Is_Named_Number.
+ 	* sem_prag.adb (Process_Convention): Likewise.
+ 
+ 2020-11-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_One_Aspect): Detect aspect identifiers
+ 	with membership tests.
+ 	(Check_Aspect_At_End_Of_Declarations): Likewise.
+ 	(Freeze_Entity_Checks): Likewise; a local constant is no longer
+ 	needed.
+ 	(Is_Operational_Item): Similar simplification for attribute
+ 	identifiers.
+ 	(Is_Type_Related_Rep_Item): Likewise.
+ 	(Resolve_Iterable_Operation): Detect names with a membership
+ 	test.
+ 	(Validate_Independence): Replace repeated Ekind with a
+ 	membership test.
+ 
+ 2020-11-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_One_Aspect): Replace duplicate of
+ 	Effective_Reads.
+ 
+ 2020-11-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* einfo.adb: Use composite wrappers (e.g.
+ 	Is_Subprogram_Or_Entry) and membership tests where it appears to
+ 	improve clarity.
+ 
+ 2020-11-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* einfo.adb (Is_Standard_Character_Type,
+ 	Is_Standard_String_Type): Simplify.
+ 	(Last_Formal): Use procedural variant of Next_Formal.
+ 
+ 2020-11-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* einfo.adb: Replace "E" with Entity_Id in local object
+ 	declarations.
+ 
+ 2020-11-25  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_ch2.adb (Expand_Entity_Reference): A new local predicate
+ 	Is_Object_Renaming_Name indicates whether a given expression
+ 	occurs (after looking through qualified expressions and type
+ 	conversions) as the name of an object renaming declaration. If
+ 	Current_Value is available but this new predicate is True, then
+ 	ignore the availability of Current_Value.
+ 
+ 2020-11-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch12.adb (Instantiate_Type): Remove extra whitespace.
+ 	(Validate_Access_Type_Instance): Remove dead (and duplicated)
+ 	code.
+ 
+ 2020-11-25  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_util.adb (Possible_Side_Effect_In_SPARK): Replace hyphen
+ 	with a space in "side-effect" (two instances).
+ 
+ 2020-11-25  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* doc/gnat_rm/intrinsic_subprograms.rst (Shifts and Rotates):
+ 	Document behavior on negative numbers
+ 	* gnat_rm.texi: Regenerate.
+ 	* sem_eval.adb (Fold_Shift): Set modulus to be based on the RM
+ 	size for non-modular integer types.
+ 
+ 2020-11-25  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* adaint.c (__gnat_copy_attribs): Reinstate code based on utime
+ 	for timestamp processing on VxWorks 6.
+ 
+ 2020-11-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_util.adb (Remove_Side_Effects): Only remove side-effects
+ 	in GNATprove mode when this is useful.
+ 	* sem_res.adb (Set_Slice_Subtype): Make sure in GNATprove mode
+ 	to define the Itype when needed, so that run-time errors can be
+ 	analyzed.
+ 	* sem_util.adb (Enclosing_Declaration): Correctly take into
+ 	account renaming declarations.
+ 
+ 2020-11-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-rannum.adb (Random_Discrete): Specifically deal with
+ 	the case where the size of the base type is larger than 64 bits.
+ 
+ 2020-11-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch3.adb (Access_Type_Declaration): Set Etype before
+ 	checking for volatility compatibility.
+ 
+ 2020-11-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/g-rannum.ads (Random): New functions returning 128-bit.
+ 	* libgnat/g-rannum.adb (Random): Implement them and alphabetize.
+ 	(To_Signed): New unchecked conversion function for 128-bit.
+ 
+ 2020-11-25  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch7.adb (Build_Finalization_Master, Build_Finalizer,
+ 	Build_Object_Declarations, Make_Deep_Array_Body,
+ 	Wrap_Transient_Expression): Call Set_Debug_Info_Needed on
+ 	temporaries when Debug_Generated_Code is True.
+ 
+ 2020-11-25  Liaiss Merzougue  <merzougue@adacore.com>
+ 
+ 	* libgnat/s-imagei.adb
+ 	(Set_Digits): Rewrite the procedure to remove recursion.
+ 	(Image_Integer, Set_Image_Integer): Update assertions and remove
+ 	redundant ones.
+ 	* libgnat/s-imageu.adb
+ 	(Set_Image_Unsigned): Rewrite the procedure to remove recursion.
+ 
+ 2020-11-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_util.adb (Attribute_Constrained_Static_Value): Fix body
+ 	box.
+ 	* sem_attr.adb (Eval_Attribute): Replace repeated calls to
+ 	Attribute_Name with a captured value of the Attribute_Id; also,
+ 	remove extra parens around Is_Generic_Type.
+ 
+ 2020-11-25  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Emit error on wrong argument
+ 	nkind.
+ 
+ 2020-11-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb, sem_prag.adb: Use Is_Named_Number.
+ 
+ 2020-11-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb, exp_util.adb: Fix style and typos in comments.
+ 
+ 2020-11-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): A variable that
+ 	is only incremented in the code has now type Nat; conversion is
+ 	now unnecessary.
+ 
+ 2020-11-24  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Global_Item): Call SPARK_Msg_NE with the
+ 	entity, not with its identifier.
+ 
+ 2020-11-24  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* opt.ads (Generate_Asm): New flag.
+ 	* osint-c.adb (Set_Output_Object_File_Name): Accept any
+ 	extension when generating assembly.
+ 	* adabkend.adb (Scan_Compiler_Args): Recognize -S.
+ 
+ 2020-11-24  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb, exp_ch4.adb, exp_intr.adb, sem_ch8.adb,
+ 	sem_res.adb, sem_type.adb, sem_util.adb: Reuse Is_Packed_Array.
+ 
+ 2020-11-24  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* checks.adb (Apply_Access_Check): Remove unbalanced paren.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Fix typo in
+ 	comment.
+ 
+ 2020-11-24  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Mark relevant pragmas as ghost
+ 	when they are within a ghost region.
+ 
+ 2020-11-24  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* contracts.adb, freeze.adb, sem_ch12.adb, sem_prag.adb: Reuse
+ 	In_Same_List.
+ 
+ 2020-11-24  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Is_Loop_Pragma): Avoid repeated calls to
+ 	Original_Node; remove unnecessary IF statement.
+ 
+ 2020-11-24  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Rewrite
+ 	with a CASE statement.
+ 
+ 2020-11-24  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Replace calls to
+ 	Sloc with a local constant Loc; remove call to
+ 	Analyze_And_Resolve and return, which is exactly what happens
+ 	anyway (and other branches in the Constrained declare block
+ 	appear to rely on analysis, resolution and returning happening
+ 	in all cases).
+ 	* sem_util.adb: Remove useless parens.
+ 
+ 2020-11-24  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Is_Object_Reference): Delta and extension
+ 	aggregates are objects.
+ 
+ 2020-11-24  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* libgnat/s-rident.ads (System.Rident): Register new restriction
+ 	IDs.
+ 	* par-ch13.adb (Get_Aspect_Specifications): Add restriction check.
+ 	* par-prag.adb (Process_Restrictions_Or_Restriction_Warnings):
+ 	Register No_Unrecognized_Aspects restriction.
+ 	* sem_prag.adb (Analyze_Pragma): Add restriction check.
+ 	* snames.ads-tmpl: Create restriction names.
+ 
+ 2020-11-24  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Declared_Within): Return True for objects
+ 	declared within the attribute Loop_Entry prefix itself.
+ 
+ 2020-11-24  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch3.adb (Process_Discriminants): Correctly set right
+ 	context for analyzing default value of discriminant.
+ 
+ 2020-11-24  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_type.adb (Add_One_Interp.Is_Universal_Operation): Account
+ 	for universal_access = operator.
+ 	(Disambiguate): Take into account preference on universal_access
+ 	= operator when relevant.
+ 	(Disambiguate.Is_User_Defined_Anonymous_Access_Equality): New.
+ 
+ 2020-11-24  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_util.adb (Is_Finalizable_Transient): Take into account return
+ 	statements containing N_Expression_With_Actions. Also clean up a
+ 	condition to make it more readable.
+ 	* exp_ch6.adb: Fix typo.
+ 
+ 2020-11-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/a-wtdeio.adb (TFT): Delete and adjust throughout.
+ 	* libgnat/a-wtenau.adb (TFT): Likewise.
+ 	* libgnat/a-wtfiio.adb (TFT): Likewise.
+ 	* libgnat/a-wtflio.adb (TFT): Likewise.
+ 	* libgnat/a-wtinio.adb (TFT): Likewise.
+ 	* libgnat/a-wtinio__128.adb (TFT): Likewise.
+ 	* libgnat/a-wtmoio.adb (TFT): Likewise.
+ 	* libgnat/a-wtmoio__128.adb (TFT): Likewise.
+ 	* libgnat/a-ztdeio.adb (TFT): Likewise.
+ 	* libgnat/a-ztenau.adb (TFT): Likewise.
+ 	* libgnat/a-ztfiio.adb (TFT): Likewise.
+ 	* libgnat/a-ztflio.adb (TFT): Likewise.
+ 	* libgnat/a-ztinio.adb (TFT): Likewise.
+ 	* libgnat/a-ztinio__128.adb (TFT): Likewise.
+ 	* libgnat/a-ztmoio.adb (TFT): Likewise.
+ 	* libgnat/a-ztmoio__128.adb (TFT): Likewise.
+ 
+ 2020-11-24  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch13.adb (Validate_Literal_Aspect): Add support for named
+ 	numbers and in particular overload of the Real_Literal function.
+ 	* sem_res.adb (Resolve): Add support for named numbers in
+ 	Real_Literal and Integer_Literal resolution.
+ 	* einfo.adb, einfo.ads (Related_Expression,
+ 	Set_Related_Expression): Allow E_Function.
+ 	* uintp.ads (UI_Image_Max): Bump size of buffer to avoid loosing
+ 	precision.
+ 	* sem_eval.adb: Fix typo in comment.
+ 	* libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads (From_String):
+ 	Return a Valid_Big_Integer.
+ 	* libgnat/a-nbnbre.adb, libgnat/a-nbnbre.ads (From_String): New
+ 	variant taking two strings. Return a Valid_Big_Real.
+ 
+ 2020-11-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Associations) <Explicit_Freeze_Check>: Test
+ 	that the instance is in a statement sequence instead of local scope.
+ 	(Freeze_Subprogram_Body): Use the special delayed placement with
+ 	regard to the parent instance only if its Sloc is strictly greater.
+ 	(Install_Body): Likewise.
+ 
+ 2020-11-24  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch13.adb (Validate_Literal_Aspect): Call to Base_Type
+ 	needed in order to correctly check result type of String_Literal
+ 	function when the first named subtype differs from the base
+ 	type (e.g.:
+ 	type T is range 1 .. 10 with String_Literal => ... ;
+ 	).
+ 
+ 2020-11-24  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Global_Item): Handle specially the
+ 	current instance of a PO.
+ 	* sem_util.ads (Is_Effectively_Volatile,
+ 	Is_Effectively_Volatile_For_Reading): Add parameter
+ 	Ignore_Protected.
+ 	* sem_util.adb (Is_Effectively_Volatile,
+ 	Is_Effectively_Volatile_For_Reading): Add parameter
+ 	Ignore_Protected to compute the query results ignoring protected
+ 	objects/types.
+ 	(Is_Effectively_Volatile_Object,
+ 	Is_Effectively_Volatile_Object_For_Reading): Adapt to new
+ 	signature.
+ 
+ 2020-11-24  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ 	Update documentation on -gnatyk.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2020-11-24  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch10.adb (Analyze_Compilation_Unit): Move aspects from
+ 	body to the newly created spec.
+ 
+ 2020-11-24  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch6.adb (Add_Cond_Expression_Extra_Actual): Simplify
+ 	handling of function calls and remove bug in handling of
+ 	transient objects.  Minor reformatting along the way.
+ 
+ 2020-11-24  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-nbnbin.adb (From_String): Implement fully.
+ 
+ 2020-11-24  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Delta_Array_Aggregate): If the choice is
+ 	a subtype_indication then call
+ 	Resolve_Discrete_Subtype_Indication; both for choices
+ 	immediately inside array delta aggregates and inside
+ 	iterated_component_association within array delta aggregates.
+ 
+ 2020-11-24  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* lib-load.adb, lib-writ.adb, lib.adb, par-load.adb,
+ 	rtsfind.adb, sem_ch10.adb: Use Present where possible.
+ 
+ 2020-11-24  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Depends_Global): Reject Global and
+ 	Depends on null procedure.
+ 
+ 2020-11-24  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-nbnbre.adb (From_String): Handle properly '_'
+ 	characters.
+ 
+ 2020-11-24  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_Array_Aggregate,
+ 	Expand_SPARK_N_Aggregate): Remove, no longer needed.
+ 	* sem_aggr.adb (Resolve_Iterated_Component_Association): Only
+ 	remove references in the analyzed expression when generating
+ 	code and the expression needs to be analyzed anew after being
+ 	rewritten into a loop.
+ 
+ 2020-11-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_characteristics.rst: Complete
+ 	entry of 3.5.9(10).
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-11-20  Maciej W. Rozycki  <macro@linux-mips.org>
+ 
+ 	* adaint.c (__gnat_number_of_cpus): Check for the presence of
+ 	_SC_NPROCESSORS_ONLN rather than a list of OS-specific macros
+ 	to decide whether to use `sysconf'.
+ 
+ 2020-11-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR other/97911
+ 	* gcc-interface/Make-lang.in (ada.serial): Change from goal to a
+ 	variable.
+ 	(.PHONY): Drop ada.serial and ada.prev.
+ 	(gnat1$(exeext)): Depend on $(ada.serial) rather than ada.serial.
+ 
+ 2020-11-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/97805
+ 	* adaint.c: Include climits in C++ and limits.h otherwise.
+ 
+ 2020-11-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_dbug.adb (Is_Handled_Scale_Factor): Delete.
+ 	(Get_Encoded_Name): Do not call it.
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <Fixed_Point_Type>:
+ 	Tidy up and always use a meaningful description for arbitrary
+ 	scale factors.
+ 	* gcc-interface/misc.c (gnat_get_fixed_point_type_info): Remove
+ 	obsolete block and adjust the description of the scale factor.
+ 
+ 2020-11-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc-interface/Make-lang.in (ada.serial): New goal.
+ 	(.PHONY): Add ada.serial ada.prev.
+ 	(gnat1$(exeext)): Depend on ada.prev.  Call LINK_PROGRESS.
+ 
+ 2020-11-18  Matthias Klose  <doko@ubuntu.com>
+ 
+ 	PR ada/97859
+ 	* Makefile.rtl (powerpc% linux%): Also match powerpc64le cpu.
+ 
+ 2020-11-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/gigi.h: Remove ^L characters throughout.
+ 	* gcc-interface/decl.c: Likewise.
+ 	* gcc-interface/utils.c: Likewise.
+ 	* gcc-interface/utils2.c: Likewise.
+ 	* gcc-interface/trans.c (gnat_to_gnu) <N_Allocator>: Do not explicitly
+ 	go to the base type for the Has_Constrained_Partial_View flag.
+ 
+ 2020-11-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (build_binary_op_trapv): Convert operands
+ 	to the result type before doing generic overflow checking.
+ 
+ 2020-11-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (can_be_lower_p): Remove.
+ 	(Regular_Loop_to_gnu): Add ENTRY_COND unconditionally if
+ 	BOTTOM_COND is non-zero.
+ 
+ 2020-11-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: In case
+ 	the constant is not being defined, get the expression in type
+ 	annotation mode only if its type is elementary.
+ 
+ 2020-11-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (gnat_to_gnu) <N_Op_Shift>: Also convert
+ 	GNU_MAX_SHIFT if the type of the operation has been changed.
+ 	* gcc-interface/utils.c (can_materialize_object_renaming_p): Add
+ 	pair of missing parentheses.
+ 
+ 2020-11-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/Makefile.in: Force target_cpu to powerpc if the
+ 	nominal target is powerpc64-suse-linux.
+ 
+ 2020-11-07  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc-interface/misc.c (gnat_printable_name): Change
+ 	DECL_IS_BUILTIN -> DECL_IS_UNDECLARED_BUILTIN.
+ 
+ 2020-10-28  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	PR ada/97504
+ 	* Makefile.rtl (LIBGNAT_TARGET_PAIRS> <riscv*-*-*>: Use wraplf
+ 	version of Aux_Long_Long_Float.
+ 
+ 2020-10-27  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* Makefile.rtl: Add vx7r2cert spec file to ARM, PowerPC and x86
+ 	targets.
+ 	* vxworks7-cert-rtp-link.spec: New spec file.
+ 
+ 2020-10-27  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add g-spogwa object.
+ 	* libgnat/g-spogwa.adb: Fix style errors.
+ 
+ 2020-10-27  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_Array_Aggregate): Dedicated
+ 	routine for array aggregates; mostly reuses existing code, but
+ 	calls itself recursively for multi-dimensional array aggregates.
+ 	(Expand_SPARK_N_Aggregate): Call Expand_SPARK_Array_Aggregate to
+ 	do the actual expansion, starting from the first index of the
+ 	array type.
+ 
+ 2020-10-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Iterated_Component_Association): new
+ 	internal subprogram Remove_References, to reset semantic
+ 	information on each reference to the index variable of the
+ 	association, so that Collect_Aggregate_Bounds can work properly
+ 	on multidimensional arrays with nested associations, and
+ 	subsequent expansion into loops can verify that dimensions of
+ 	each subaggregate are compatible.
+ 
+ 2020-10-27  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* exp_prag.adb (Append_Copies): Handle N_Parameter_Associations.
+ 
+ 2020-10-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* ada_get_targ.adb (Digits_From_Size): Delete.
+ 	(Width_From_Size): Likewise.
+ 	* get_targ.adb (Digits_From_Size): Likewise.
+ 	(Width_From_Size): Likewise.
+ 	* get_targ.ads (Digits_From_Size): Likewise.
+ 	(Width_From_Size): Likewise.
+ 	* ttypes.ads: Remove with clause for Get_Targ.
+ 	(Standard_Short_Short_Integer_Width): Delete.
+ 	(Standard_Short_Integer_Width): Likewise.
+ 	(Standard_Integer_Width): Likewise.
+ 	(Standard_Long_Integer_Width): Likewise.
+ 	(Standard_Long_Long_Integer_Width): Likewise.
+ 	(Standard_Long_Long_Long_Integer_Width): Likewise.
+ 	(Standard_Short_Float_Digits): Likewise.
+ 	(Standard_Float_Digits): Likewise.
+ 	(Standard_Long_Float_Digits): Likewise.
+ 	(Standard_Long_Long_Float_Digits): Likewise.
+ 	* gnat1drv.adb (Adjust_Global_Switches): Adjust.
+ 
+ 2020-10-27  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch6.adb, freeze.adb, gnat1drv.adb, opt.ads, sem_ch6.adb
+ 	(Transform_Function_Array): New flag, split from Modify_Tree_For_C.
+ 	* exp_unst.adb: Minor reformatting.
+ 
+ 2020-10-27  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* libgnat/g-socpol.adb (Wait): Do not exit from loop on EINTR
+ 	error and timeout is over.
+ 
+ 2020-10-26  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_aggr.adb (Build_Array_Aggr_Code): If the aggregate
+ 	includes an Others_Choice in an association that is an
+ 	Iterated_Component_Association, generate a proper loop for it.
+ 
+ 2020-10-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/a-tifiio.adb: Add missing sign in documentation.
+ 	* libgnat/s-imgrea.ads: Minor fixes in commentary.
+ 
+ 2020-10-26  Pat Rogers  <rogers@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst: Include
+ 	"Jorvik" in pragma Profile description.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-10-26  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_attr.adb (Check_Image_Type): Remove "|", so the compiler
+ 	will not crash.
+ 	* errout.ads: Improve comment. This has nothing to do with
+ 	-gnatQ.
+ 
+ 2020-10-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/a-tifiio.adb: Minor editions to documentation.
+ 
+ 2020-10-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* contracts.adb (Causes_Contract_Freezing): Extend condition to
+ 	match the one in Analyze_Subprogram_Body_Helper. This routine is
+ 	used both as an assertion at the very start of
+ 	Freeze_Previous_Contracts and to detect previous declaration for
+ 	which Freeze_Previous_Contracts has been executed.
+ 
+ 2020-10-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/a-tifiio.adb: Move around documentaton paragraph.
+ 
+ 2020-10-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* inline.adb (Establish_Actual_Mapping_For_Inlined_Call): Add
+ 	guard for a call to Set_Last_Assignment with the same condition
+ 	as the assertion in that routine and explain why this guard
+ 	fails in GNATprove mode.
+ 
+ 2020-10-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_characteristics.rst: Adjust
+ 	the entries of 3.5.9(8) and 3.5.9(10).
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-10-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/a-tifiio.adb: Change the range of supported Small
+ 	values.
+ 	(E0, E1, E2): Adjust factors.
+ 	(Exact): Return false if the Small does not fit in 64 bits.
+ 
+ 2020-10-26  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* libgnat/g-socket.adb (Wait_On_Socket): Boolean parameter
+ 	For_Read changed to Event parameter of type
+ 	GNAT.Sockets.Poll.Wait_Event_Set.  Implementation is simplified
+ 	and based on call to GNAT.Sockets.Poll.Wait now.
+ 
+ 2020-10-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/a-tifiio.adb: Minor editions to documentation.
+ 
+ 2020-10-26  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch12.adb (Restore_Private_Views): Do not lose the
+ 	information provided by Is_Generic_Actual_Type in GNATprove
+ 	mode.
+ 
+ 2020-10-26  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Unreferenced_Entity): Suppress warning
+ 	on formal parameters of all dispatching operations.
+ 
+ 2020-10-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Delta_Array_Aggregate): Fix typos in
+ 	error message.
+ 
+ 2020-10-26  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* libgnat/s-dwalin.adb (Symbolic_Traceback): Always emit the hex
+ 	address at the beginning of an entry if suppression is not
+ 	requested. Consistently output a "???" for the subprogram name
+ 	when it is unknown.
+ 
+ 2020-10-26  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* s-oscons-tmplt.c (_nfds_t): Use sizeof (unsigned long int).
+ 
+ 2020-10-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-ch4.adb (P_Iterated_Component_Association): Move code for
+ 	iterated_element_association to
+ 	Build_Iterated_Element_Association.
+ 
+ 2020-10-26  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch12.adb (Needs_Body_Instantiated): In GNATprove mode, do
+ 	not instantiate bodies outside of the main unit.
+ 
+ 2020-10-26  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Delta_Array_Aggregate): For an
+ 	association that is an iterated component association, attach
+ 	the copy of the expression to the tree prior to analysis, in
+ 	order to preserve its context. This is needed when verifying
+ 	static semantic rules that depend on context, for example that a
+ 	use of 'Old appears only within a postcondition.
+ 
+ 2020-10-26  Bob Duff  <duff@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_utility_programs.rst: Document that
+ 	--no-comments-fill is now the default.
+ 
+ 2020-10-26  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Extension_Aggregate): When testing for
+ 	an aggregate that is illegal due to having an ancestor type that
+ 	has unknown discriminants, add an "or else" condition testing
+ 	whether the aggregate type has unknown discriminants and that
+ 	Partial_View_Has_Unknown_Discr is also set on the ancestor type.
+ 	Extend the comment, including adding ??? about a possible
+ 	simpler test.
+ 
+ 2020-10-26  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/a-cihama.adb, libgnat/a-cohama.adb,
+ 	libgnat/a-cohase.adb (Delete): Set Position.Position, and
+ 	assert.
+ 
+ 2020-10-26  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch8.adb (Find_Direct_Name.Undefined): Handle known unit
+ 	names with 3 selectors.
+ 
+ 2020-10-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_Delta_Or_Update): Add missing call
+ 	to Enter_Name, just like it is called for
+ 	iterated_component_association in Expand_SPARK_N_Aggregate.
+ 
+ 2020-10-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_Delta_Or_Update): Reuse local
+ 	constant Expr and the Choice_List routine.
+ 	(Expand_SPARK_N_Aggregate): Reuse local constant Expr.
+ 
+ 2020-10-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-ch4.adb (P_Iterated_Component_Association): Fix typos in
+ 	comments.
+ 
+ 2020-10-26  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* par-ch6.adb (P_Formal_Part): Ada 2020 supports scanning
+ 	aspects on formal parameters.
+ 	* doc/gnat_rm/implementation_defined_aspects.rst (Aspect
+ 	Unreferenced): Update documentation.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-10-26  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Type_Refs): When an entity in an expression
+ 	function is a type, freeze the entity and not just its type,
+ 	which would be incomplete when the type is derived and/or
+ 	tagged.
+ 
+ 2020-10-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_Update_Attribute): Handle
+ 	subtype_indication just like in Expand_Delta_Array_Aggregate.
+ 
+ 2020-10-25  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* Makefile.rtl: Add GNATRTL_128BIT_PAIRS/OBJS for 64bit
+ 	PowerPC Darwin cases.
+ 
+ 2020-10-23  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* adaint.c: On Darwin platforms, define st_atim to
+ 	st_atimespec. Likwise st_mtim to st_mtimespec.
+ 
+ 2020-10-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* Makefile.rtl (EXTRA_GNATRTL_NONTASKING_OBJS) [IA64/Linux]: Fix typo.
+ 
+ 2020-10-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* Makefile.rtl (EXTRA_GNATRTL_NONTASKING_OBJS) [IA64/Linux]: Fix typo.
+ 
+ 2020-10-23  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	PR ada/97504
+ 	* Makefile.rtl (LIBGNAT_TARGET_PAIRS): Select wraplf version
+ 	of Aux_Long_Long_Float for s390 and remaining sparc and
+ 	powerpc targets.
+ 
+ 2020-10-23  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* Makefile.rtl (GNATRTL_SOCKETS_OBJS): New object
+ 	g-socpol$(objext) New source files noted: g-socpol.adb,
+ 	g-socpol.ads, g-socpol__dummy.adb, g-socpol__dummy.ads,
+ 	g-sopowa.adb, g-sopowa__posix.adb, g-sopowa__mingw.adb,
+ 	g-spogwa.adb, g-spogwa.ads.
+ 	* impunit.adb (Non_Imp_File_Names_95): New base filename
+ 	g-socpol in "GNAT Library Units" section for GNAT.Sockets.Poll
+ 	unit.
+ 	* libgnat/g-socket.ads, libgnat/g-socket.adb:
+ 	(Raise_Socket_Error): Moved from body to private part of
+ 	specification to use in GNAT.Sockets.Poll.
+ 	* libgnat/g-socpol.ads, libgnat/g-socpol.adb: Main unit of the
+ 	implementation.
+ 	* libgnat/g-socpol__dummy.ads, libgnat/g-socpol__dummy.adb:
+ 	Empty unit for the systems without sockets support.
+ 	* libgnat/g-spogwa.ads, libgnat/g-spogwa.adb: Generic unit
+ 	implementing sockets poll on top of select system call.
+ 	* libgnat/g-sopowa.adb (Wait): Separate implementation for
+ 	operation systems with poll system call support.
+ 	* libgnat/g-sopowa__posix.adb (Wait): Separate implementation
+ 	for POSIX select system call.
+ 	* libgnat/g-sopowa__mingw.adb (Wait): Separate implementation
+ 	for Windows select system call.
+ 	* gsocket.h (_WIN32_WINNT): Increase to 0x0600 for winsock2.h to
+ 	allow WSAPoll related definitions.
+ 	* s-oscons-tmplt.c: Fix comment next to #endif for
+ 	#if defined (__linux__) || defined (__ANDROID__) line.  Include
+ 	<poll.h> for all except VxWorks and Windows.
+ 	(SIZEOF_nfds_t): New definition.
+ 	(SIZEOF_fd_type): New definition.
+ 	(SIZEOF_pollfd_events): New definition.
+ 	(POLLIN, POLLPRI, POLLOUT, POLLERR, POLLHUP, POLLNVAL): New
+ 	definitions for VxWorks to be able to emulate poll on top of
+ 	select in it.  Define POLLPRI as zero on Windows as it is not
+ 	supported there.
+ 	(Poll_Linkname): New definition, because the poll system call
+ 	has different name in Windows and POSIX.
+ 
+ 2020-10-23  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* checks.adb (Apply_Accessibility_Check): Skip checks against
+ 	the extra accessibility of a function result when in Ada 2005
+ 	mode or earlier.
+ 	* exp_ch3.adb (Build_Initialization_Call): Modify accessibility
+ 	level calls to use Accessibility_Level.
+ 	(Expand_N_Object_Declaration): Modify accessibility level calls
+ 	to use Accessibility_Level.
+ 	* exp_ch4.adb (Expand_Allocator_Expression): Add static check
+ 	for anonymous access discriminants. Remove unneeded propagation
+ 	of accessibility actual.
+ 	(Expand_N_In): Modify accessibility level calls to use
+ 	Accessibility_Level.
+ 	(Expand_N_Type_Conversion): Modify accessibility level calls to
+ 	use Accessibility_Level.
+ 	* exp_ch5.adb (Expand_N_Assignment_Statement): Modify
+ 	accessibility level calls to use Accessibility_Level.
+ 	* exp_ch6.adb (Expand_Call_Helper): Rewrite accessibility
+ 	calculation for the extra accessibility of result actual in
+ 	function calls, and modify accessibility level calls to use
+ 	Accessibility_Level.
+ 	(Check_Against_Result_Level): Removed.
+ 	* exp_ch9.adb (Expand_N_Requeue_Statement): Add dynamic
+ 	accessibility check for requeues
+ 	* sem_attr.adb (Resolve_Attribute): Modify accessibility level
+ 	calls to use Accessibility_Level.
+ 	* sem_ch13.adb (Associate_Storage_Pool): Modify accessibility
+ 	level calls to use Accessibility_Level.
+ 	* sem_ch4.adb (Analyze_Call): Add static check for explicitly
+ 	aliased formals in function calls within return statements.
+ 	* sem_ch6.adb (Check_Return_Construct_Accessibility): Rewrite
+ 	routine to account for non-aggregate return objects.
+ 	(Generate_Minimum_Accessibility): Created.
+ 	(Analyze_Call): Modify accessibility level calls to use
+ 	Accessibility_Level.
+ 	(Analyze_Subprogram_Body_Helper): Add generation of minimum
+ 	accessibility for the extra accessibility of the function
+ 	result.
+ 	* sem_ch9.adb (Analyze_Requeue): Modify accessibility level
+ 	calls to use Accessibility_Level.
+ 	* sem_res.adb: (Check_Aliased_Parameters): Modify accessibility
+ 	level calls to use Accessibility_Level.
+ 	(Valid_Conversion): Modify accessibility level calls to use
+ 	Accessibility_Level.
+ 	* sem_util.adb, sem_util.ads (Accessibility_Level_Helper):
+ 	Renamed to Accessibility_Level, add detection for functions in
+ 	prefix notation, and add cases where to return zero when
+ 	specified. Modified to take new, more descriptive, parameters.
+ 	(Accessibility_Level): Created.
+ 	(Function_Call_Level): Removed.
+ 	(Function_Call_Or_Allocator_Level): Created to centralize the
+ 	calculation accessibility levels for function calls and
+ 	allocators.
+ 	(Static_Accessibility_Level): Removed.
+ 	(Dynamic_Accessibility_Level): Removed.
+ 	(Get_Dynamic_Accessibility): Renamed from Get_Accessibility.
+ 	(In_Return_Value): Created to determine if a given expression
+ 	contributes to the current function's return value.
+ 	(Is_Master): Created.
+ 	(Is_Explicitly_Aliased): Created
+ 
+ 2020-10-23  Bob Duff  <duff@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_utility_programs.rst: Document
+ 	--no-comments-fill.
+ 
+ 2020-10-23  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* contracts.adb (Analyze_Entry_Or_Subprogram_Contract,
+ 	Analyze_Subprogram_Body_Stub_Contract): Fix missing references
+ 	to Subprogram_Variant where similar references to Contract_Cases
+ 	are present.
+ 	* sem_prag.adb (Analyze_Contract_Case, Analyze_Variant): Check
+ 	that aggregate parameter has no expressions.
+ 	(Analyze_Pragma): Replace Contract_Cases with Subprogram_Variant
+ 	in a copy-pasted comment.
+ 
+ 2020-10-23  Philippe Gil  <gil@adacore.com>
+ 
+ 	* libgnat/g-socket.ads: Fix comment typo.
+ 
+ 2020-10-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst (VFA): Remove uage
+ 	restrictions in conjunction with Atomic and Aliased.
+ 	* gnat_rm.texi: Regenerate.
+ 	* aspects.ads (Aspect_Id): Add Aspect_Full_Access_Only.
+ 	(Is_Representation_Aspect): Likewise.
+ 	(Aspect_Names): Likewise.
+ 	(Aspect_Delay): Likewise.
+ 	* einfo.ads (Is_Atomic_Or_VFA): Rename into...
+ 	(Is_Full_Access): ...this.
+ 	(Is_Volatile_Full_Access): Document new usage for Full_Access_Only.
+ 	* einfo.adb (Is_Atomic_Or_VFA): Rename into...
+ 	(Is_Full_Access): ...this.
+ 	* freeze.ads (Is_Atomic_VFA_Aggregate): Rename into...
+ 	(Is_Full_Access_Aggregate): ...this.
+ 	* freeze.adb (Is_Atomic_VFA_Aggregate): Rename into...
+ 	(Is_Full_Access_Aggregate): ...this.  Adjust to above renaming.
+ 	(Freeze_Array_Type): Likewise.
+ 	(Freeze_Entity): Likewise.
+ 	* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Likewise.
+ 	(Expand_Record_Aggregate): Likewise.
+ 	* exp_ch4.adb (Expand_N_Op_Eq): Likewise.
+ 	* exp_ch5.adb (Expand_Assign_Array): Likewise.
+ 	* exp_ch8.adb (Evaluation_Required): Likewise.
+ 	* layout.adb (Layout_Type): Likewise.
+ 	(Set_Composite_Alignment): Likewise.
+ 	* sem_aux.ads (Has_Rep_Item): Delete.
+ 	* sem_aux.adb (Has_Rep_Item): Likewise.
+ 	* sem_attr.adb (Resolve_Attribute) <Attribute_Access>: Implement
+ 	new legality rules in C.6(12).
+ 	* sem_ch12.adb (Instantiate_Object): Likewise.
+ 	* sem_res.adb (Resolve_Actuals): Likewise.
+ 	* sem_ch13.adb (Inherit_Delayed_Rep_Aspects): Deal with aspect
+ 	Full_Access_Only.
+ 	(Check_False_Aspect_For_Derived_Type): Likewise.
+ 	(Make_Pragma_From_Boolean_Aspect): Test for the presence of Expr.
+ 	Deal with aspect Full_Access_Only.
+ 	(Analyze_Aspects_At_Freeze_Point): Likewise.
+ 	(Analyze_One_Aspect): Do not set Delay_Required to true even for
+ 	Always_Delay boolean aspects if they have no expression.  Force
+ 	Delay_Required to true for aspect Full_Access_Only in all cases.
+ 	Reject aspect Full_Access_Only if not in Ada 2020 mode.
+ 	(Check_Aspect_At_End_Of_Declarations): Deal with empty expression.
+ 	(Check_Aspect_At_Freeze_Point): Likewise.
+ 	(Rep_Item_Entity): Delete.
+ 	(Inherit_Aspects_At_Freeze_Point): Align handling for Bit_Order
+ 	with that for Scalar_Storage_Order.
+ 	* sem_prag.adb (Check_Atomic_VFA): Delete.
+ 	(Check_VFA_Conflicts): Likewise.
+ 	(Check_Full_Access_Only): New procedure.
+ 	(Process_Atomic_Independent_Shared_Volatile): Call to implement
+ 	the new legality checks in C.6(8/2) and mark the entity last.
+ 	(Analyze_Pragma) <Pragma_Atomic_Components>: Remove obsolete check.
+ 	* sem_util.ads (Is_Atomic_Or_VFA_Object): Rename into...
+ 	(Is_Full_Access_Object): ...this.
+ 	(Is_Subcomponent_Of_Atomic_Object): Rename into...
+ 	(Is_Subcomponent_Of_Full_Access_Object): ...this.
+ 	* sem_util.adb (Inherit_Rep_Item_Chain): Use Present_In_Rep_Item.
+ 	(Is_Atomic_Or_VFA_Object): Rename into...
+ 	(Is_Full_Access_Object): ...this.
+ 	(Is_Subcomponent_Of_Atomic_Object): Rename into...
+ 	(Is_Subcomponent_Of_Full_Access_Object): ...this and adjust.
+ 	* snames.ads-tmpl (Name_Full_Access_Only): New name of aspect.
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust for renaming.
+ 	(promote_object_alignment): Likewise.
+ 	(gnat_to_gnu_field): Likewise.  Rename local variable and use
+ 	specific qualifier in error message for Volatile_Full_Access.
+ 	* gcc-interface/trans.c (lvalue_required_p): Likewise.
+ 
+ 2020-10-23  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* lib-writ.ads, lib-writ.adb (Write_ALI): No longer read
+ 	existing ALI files in -gnatc mode.
+ 
+ 2020-10-23  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/g-socthi__mingw.adb (C_Select): Fix logic in code and
+ 	make it explicit that we are checking against null values before
+ 	dereferencing them.
+ 
+ 2020-10-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_imgv.adb (Expand_Image_Attribute): For an enumeration type
+ 	subject to pragma Discard_Names, convert 'Pos to Long_Long_Integer
+ 	before applying 'Img to the result.
+ 
+ 2020-10-23  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Type_Refs): Add guard on freezing of the
+ 	designated type of an access type appearing in the expression,
+ 	when expression includes an explicit dereference whose prefix
+ 	includes a function call.
+ 
+ 2020-10-23  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_Delta_Or_Update): Handle
+ 	subtype_indication; do not apply range checks for ranges; add
+ 	comment saying that others_choices is not allowed.
+ 
+ 2020-10-23  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_N_Aggregate,
+ 	Expand_SPARK_Delta_Or_Update): Expand
+ 	Iterated_Component_Association occurring within delta
+ 	aggregates.
+ 	(Expand_SPARK): Apply SPARK-specific expansion to ordinary
+ 	aggregates.
+ 
+ 2020-10-23  Johannes Kanig  <kanig@adacore.com>
+ 
+ 	* exp_util.adb, exp_util.ads
+ 	(Containing_Package_With_Ext_Axioms,
+ 	Has_Annotate_Pragma_For_External_Axiomatizations): Removed.
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming): Removed code
+ 	related to external axiomatizations.
+ 	* einfo.ads
+ 	(Is_Generic_Actual_Subprogram): Removed comment about external
+ 	axiomatization.
+ 
+ 2020-10-23  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Aggregate): Do not call
+ 	Resolve_Container_Aggregate if compilation version is earlier
+ 	than Ada_2020.
+ 
+ 2020-10-23  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst: Improve
+ 	documentation of pragma Abort_Defer.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-10-23  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* exp_prag.adb (Etype_Or_Dim3): New function.
+ 	(Expand_Pragma_Cuda_Execute): Use Etype_Or_Dim3 for temporary
+ 	decls.
+ 
+ 2020-10-23  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/s-fileio.adb (Open): Fix setting of Tempfile.
+ 
+ 2020-10-23  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* exp_prag.adb (Get_Launch_Kernel_Arg_Type): Renamed to
+ 	Get_Nth_Arg_Type and made more generic.
+ 	(Build_Dim3_Declaration): Now builds a CUDA.Internal.Dim3
+ 	instead of a CUDA.Vector_Types.Dim3.
+ 	(Build_Shared_Memory_Declaration): Now infers needed type from
+ 	Launch_Kernel instead of using a hard-coded type.
+ 	(Expand_Pragma_CUDA_Execute): Build additional temporaries to
+ 	store Grids and Blocks.
+ 	* rtsfind.ads: Move Launch_Kernel from public to internal
+ 	package.
+ 
+ 2020-10-23  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch4.adb (Complete_Object_Operation): Only mark entities
+ 	referenced if we are compiling the extended main unit.
+ 	* sem_attr.adb (Analyze_Attribute [Attribute_Tag]): Record a
+ 	reference on the type and its scope.
+ 
+ 2020-10-23  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* freeze.adb (Is_Uninitialized_Aggregate): Recognize an array
+ 	aggregate with box initialization, scalar components, and no
+ 	component default values.
+ 	(Freeze_Entity, Check_Address_Clause): Call it, and simplify
+ 	freeze code for entity by removing useless assignment.
+ 
+ 2020-10-23  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch3.adb (Check_Abstract_Overriding): Subprogram renamings
+ 	cannot be overridden.
+ 	(Derive_Subprogram): Enable setting attribute
+ 	Requires_Overriding on functions with controlling access results
+ 	of record extensions with a null extension part require
+ 	overriding (AI95-00391/06).
+ 
+ 2020-10-23  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Delta_Array_Aggregate): Push scope of
+ 	the implicit loop before entering name of the index parameter,
+ 	not after; enter name no matter if the identifier has been
+ 	decorated before.
+ 
+ 2020-10-23  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Call): In the case where the call is not
+ 	overloaded, check for a call to an abstract nondispatching
+ 	operation and flag an error.
+ 
+ 2020-10-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat1drv.adb (Adjust_Global_Switches): Rewrite again code enabling
+ 	or disabling the support for 128-bit integer types.
+ 
+ 2020-10-23  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* alloc.ads, aspects.adb, aspects.ads, atree.adb, atree.ads,
+ 	casing.adb, casing.ads, csets.adb, csets.ads, debug.adb, debug.ads,
+ 	einfo.adb, einfo.ads, elists.adb, elists.ads, fname.adb, fname.ads,
+ 	gnatvsn.adb, gnatvsn.ads, hostparm.ads, indepsw-aix.adb,
+ 	indepsw-darwin.adb, indepsw-gnu.adb, indepsw.adb, indepsw.ads,
+ 	krunch.adb, krunch.ads, lib-list.adb, lib-sort.adb, lib.adb, lib.ads,
+ 	namet-sp.adb, namet-sp.ads, namet.adb, namet.ads, nlists.adb,
+ 	nlists.ads, opt.adb, opt.ads, output.adb, output.ads, rident.ads,
+ 	scans.adb, scans.ads, scil_ll.adb, scil_ll.ads, sem_aux.ads,
+ 	sem_aux.adb, sfn_scan.adb, sinfo.adb, sinfo.ads, sinput.adb,
+ 	sinput.ads, snames.adb-tmpl, snames.ads-tmpl, stand.ads,
+ 	stringt.adb, stringt.ads, table.adb, table.ads, types.adb,
+ 	types.ads, uintp.adb, uintp.ads, uname.adb, uname.ads,
+ 	urealp.adb, urealp.ads, vast.adb, vast.ads, widechar.adb,
+ 	widechar.ads: Update header.
+ 
+ 2020-10-23  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-nbnbin.adb (From_String): Take advantage of
+ 	Long_Long_Long_Integer.
+ 	* libgnat/s-genbig.ads, libgnat/s-genbig.adb (To_Bignum): New
+ 	function taking a Long_Long_Long_Integer.
+ 
+ 2020-10-23  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_util.adb (Accessibility_Call_Helper): In the selected
+ 	component case, test if a prefix is a function call and whether
+ 	the subprogram call is not being used in its entirety and use
+ 	the Innermost_Master_Scope_Depth in that case.
+ 	(Innermost_Master_Scope_Depth): Test against the node_par
+ 	instead of its identifier to avoid misattributing unnamed blocks
+ 	as not being from source.
+ 	(Function_Call_Level): Add calculation for whether a subprogram
+ 	call is initializing an object in its entirety.
+ 	(Subprogram_Call_Level): Renamed to Function_Call_Level.
+ 
+ 2020-10-23  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Check_External_Properties): Rewrite to match the
+ 	SPARK RM description.
+ 
+ 2020-10-23  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* contracts.adb (Check_Type_Or_Object_External_Properties):
+ 	Cleanup.
+ 
+ 2020-10-23  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_External_Property_In_Decl_Part): Set the
+ 	output parameter Expr_Val to the (implicit) pragma argument even
+ 	when returning early.
+ 
+ 2020-10-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* Makefile.rtl (GNATRTL_128BIT_PAIRS): Add i-cexten.ads.
+ 	* debug.adb (d.H): Document new usage.
+ 	* doc/gnat_rm/representation_clauses_and_pragmas.rst (Size Clauses):
+ 	Document new limit on 64-bit platforms.
+ 	(Component_Size Clauses): Likewise.
+ 	(Pragma Pack for Arrays): Likewise.
+ 	(Pragma Pack for Records): Likewise.
+ 	(Record Representation Clauses): Likewise.
+ 	* gnat_rm.texi: Regenerate.
+ 	* gnat1drv.adb (Adjust_Global_Switches): Rewrite code enabling or
+ 	disabling the support for 128-bit integer types.
+ 	* switch-c.adb (Scan_Front_End_Switches): Do not deal with e128.
+ 	* usage.adb (Write_Switch_Char): Do not print -gnate128 switch.
+ 	* libgnat/i-cexten__128.ads: New file.
+ 
+ 2020-10-22  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* einfo.ads (Has_Limited_View): New synthesized attribute.
+ 	* einfo.adb (Has_Limited_View): New synthesized attribute.
+ 	(Set_Limited_View): Complete assertion.
+ 	* sem_ch10.ads (Is_Visible_Through_Renamings): Make this routine
+ 	public to invoke it from Find_Expanded_Name and avoid reporting
+ 	spurious errors on renamings of limited-with packages.
+ 	(Load_Needed_Body): Moved to have this spec alphabetically
+ 	ordered.
+ 	* sem_ch10.adb (Is_Visible_Through_Renamings): Moved to library
+ 	level.
+ 	(Is_Limited_Withed_Unit): New subprogram.
+ 	* sem_ch3.adb (Access_Type_Declaration): Adding protection to
+ 	avoid reading attribute Entity() when not available.
+ 	* sem_ch8.adb (Analyze_Package_Renaming): Report error on
+ 	renamed package not visible through context clauses.
+ 	(Find_Expanded_Name): Report error on renamed package not
+ 	visible through context clauses; handle special case where the
+ 	prefix is a renaming of a (now visible) shadow package.
+ 
+ 2020-10-22  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* exp_prag.adb (Get_Launch_Kernel_Arg_Type): New function.
+ 	(Build_Shared_Memory_Declaration): Use
+ 	Get_Launch_Kernel_Arg_Type.
+ 	(Build_Stream_Declaration): Use Get_Launch_Kernel_Arg_Type.
+ 	* rtsfind.ads: Remove RO_IC_Unsigned_Long_Long.
+ 
+ 2020-10-22  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/s-imenne.adb, libgnat/s-imgrea.adb: Add assertions.
+ 
+ 2020-10-22  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/s-imgrea.adb (Set_Image_Real): Update annotations.
+ 
+ 2020-10-22  Steve Baird  <baird@adacore.com>
+ 
+ 	* aspects.ads: Introduce the subtype Nonoverridable_Aspect_Id,
+ 	whose Static_Predicate reflects the list of nonoverridable
+ 	aspects given in Ada RM 13.1.1(18.7).
+ 	* sem_util.ads, sem_util.adb: Add two new visible subprograms,
+ 	Check_Inherited_Nonoverridable_Aspects and Is_Confirming. The
+ 	former is used to check the consistency of inherited
+ 	nonoverridable aspects from multiple sources. The latter
+ 	indicates whether two aspect specifications for a nonoverridable
+ 	aspect are confirming. Because of compatibility concerns in
+ 	compiling QGen, Is_Confirming always returns True if
+ 	Relaxed_RM_Semantics (i.e., -gnatd.M) is specified.
+ 	* sem_ch3.adb (Derived_Type_Declaration): Call new
+ 	Check_Inherited_Nonoverridable_Aspects procedure if interface
+ 	list is non-empty.
+ 	* sem_ch9.adb (Check_Interfaces): Call new
+ 	Check_Inherited_Nonoverridable_Aspects procedure if interface
+ 	list is non-empty.
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications): When an explicit
+ 	aspect specification overrides an inherited nonoverridable
+ 	aspect, check that the explicit specification is confirming.
+ 
+ 2020-10-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.ads (Check_Compile_Time_Size): Adjust size limit.
+ 
+ 2020-10-22  Richard Kenner  <kenner@adacore.com>
+ 
+ 	* sprint.adb (pg, po, ps): Use {Push,Pop}_Output.
+ 	* treepr.adb (pl, pn): Likewise.
+ 
+ 2020-10-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_advice.rst: Minor fix.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-10-22  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_util.adb (Is_Container_Aggregate): A new local predicates
+ 	which indicates whether a given expression is a container
+ 	aggregate. The implementation of this function is incomplete; in
+ 	the unusual case of a record aggregate (i.e., not a container
+ 	aggregate) of a type whose Aggregate aspect is specified, the
+ 	function will incorrectly return True.
+ 	(Immediate_Context_Implies_Is_Potentially_Unevaluated): Improve
+ 	handling of aggregate components.
+ 	(Is_Repeatedly_Evaluated): Test for container aggregate
+ 	components along with existing test for array aggregate
+ 	components.
+ 
+ 2020-10-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_fixd.adb (Fpt_Value): Fold if-then-else with identical arms.
+ 
+ 2020-10-22  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* par-ch4.adb (P_Iterated_Component_Association): If the
+ 	construct includes an iterator filter it corresponds to an
+ 	Iterated_Element_Association, so build the proper node for it.
+ 	* exp_aggr.adb (Expand_Container_Aggregate, Aggregate_Size): If
+ 	the component is an Iterated_Element_Association, treat it as
+ 	having a non-static size.
+ 
+ 2020-10-22  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* scng.adb (Scan): Check if any letter of the token is
+ 	uppercase.
+ 
+ 2020-10-22  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_util.adb (Accessibility_Level_Helper): Conversions to
+ 	named access types get the level associated with the named
+ 	access type.
+ 
+ 2020-10-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Has_Constrained_Partial_View): Add "base type" marker.
+ 
+ 2020-10-22  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* einfo.adb (Has_Constrained_Partial_View): Apply Base_Type to Id.
+ 	* sem_res.adb (Resolve_Actuals.Check_Aliased_Parameter): Remove
+ 	"not Is_Generic_Type" test and call
+ 	Object_Type_Has_Constrained_Partial_View instead of
+ 	Has_Constrained_Partial_View. Improve related error message to
+ 	say "does not statically match" instead of just "does not
+ 	match".
+ 
+ 2020-10-22  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb: Declare and implement a new
+ 	predicate, Derivation_Too_Early_To_Inherit.  This function
+ 	indicates whether a given derived type fails to inherit a given
+ 	streaming-related attribute from its parent type because the
+ 	declaration of the derived type precedes the corresponding
+ 	attribute_definition_clause of the parent.
+ 	* exp_tss.adb (Find_Inherited_TSS): Call
+ 	Derivation_Too_Early_To_Inherit instead of unconditionally
+ 	assuming that a parent type's streaming attribute is available
+ 	for inheritance by an immediate descendant type.
+ 	* sem_attr.adb (Stream_Attribute_Available): Call
+ 	Derivation_Too_Early_To_Inherit instead of unconditionally
+ 	assuming that a parent type's streaming attribute is available
+ 	for inheritance by an immediate descendant type.
+ 	* exp_attr.adb (Default_Streaming_Unavailable): A new predicate;
+ 	given a type, indicates whether predefined (as opposed to
+ 	user-defined) streaming operations for the type should be
+ 	implemented by raising Program_Error.
+ 	(Expand_N_Attribute_Reference): For each of the 4
+ 	streaming-related attributes (i.e., Read, Write, Input, Output),
+ 	after determining that no user-defined implementation is
+ 	available (including a Stream_Convert pragma), call
+ 	Default_Streaming_Unavailable; if that call returns True, then
+ 	implement the streaming operation as "raise Program_Error;".
+ 
+ 2020-10-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.adb (Apply_Float_Conversion_Check): Saturate the bounds
+ 	of the check to those of the base type of the expression.
+ 
+ 2020-10-22  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* checks.adb (Apply_Accessibility_Check): Modify condition to
+ 	avoid flawed optimization and use Get_Accessibility over
+ 	Extra_Accessibility.
+ 	* exp_attr.adb: Remove inclusion of Exp_Ch2.adb.
+ 	* exp_ch2.adb, exp_ch2.ads (Param_Entity): Moved to sem_util.
+ 	* exp_ch3.ads (Init_Proc_Level_Formal): New function.
+ 	* exp_ch3.adb (Build_Init_Procedure): Add extra accessibility
+ 	formal for init procs when the associated type is a limited
+ 	record.
+ 	(Build_Initialization_Call): Add condition to handle propagation
+ 	of the new extra accessibility paramter actual needed for init
+ 	procs.
+ 	(Init_Proc_Level_Formal): Created to fetch a the extra
+ 	accessibility parameter associated with init procs if one
+ 	exists.
+ 	* exp_ch4.adb (Build_Attribute_Reference): Modify static check
+ 	to be dynamic.
+ 	* exp_ch6.adb (Add_Cond_Expression_Extra_Actual): Move logic
+ 	used to expand conditional expressions used as actuals for
+ 	anonymous access formals.
+ 	(Expand_Call_Helper): Remove extranious accessibility
+ 	calculation logic.
+ 	* exp_util.adb: Remove inclusion of Exp_Ch2.adb.
+ 	* par-ch3.adb (P_Array_Type_Definition): Properly set
+ 	Aliased_Present on access definitions
+ 	* sem_attr.adb (Resolve_Attribute): Replace instances for
+ 	Object_Access_Level with Static_Accessibility_Level.
+ 	* sem_ch13.adb (Storage_Pool): Replace instances for
+ 	Object_Access_Level with Static_Accessibility_Level.
+ 	* sem_ch6.adb (Check_Return_Construct_Accessibility): Replace
+ 	instances for Object_Access_Level with
+ 	Static_Accessibility_Level.
+ 	* sem_ch9.adb (Analyze_Requeue): Replace instances for
+ 	Object_Access_Level with Static_Accessibility_Level.
+ 	* sem_res.adb (Check_Aliased_Parameter,
+ 	Check_Allocator_Discrim_Accessibility, Valid_Conversion):
+ 	Replace instances for Object_Access_Level with
+ 	Static_Accessibility_Level.
+ 	* sem_util.adb, sem_util.ads (Accessibility_Level_Helper):
+ 	Created to centralize calculation of accessibility levels.
+ 	(Build_Component_Subtype): Replace instances for
+ 	Object_Access_Level with Static_Accessibility_Level.
+ 	(Defining_Entity): Add extra parameter to dictate whether an
+ 	error is raised or empty is return in the case of an irrelevant
+ 	N.
+ 	(Dynamic_Accessibility_Level): Rewritten to use
+ 	Accessibility_Level_Helper.
+ 	(Is_View_Conversion): Check membership against Etype to capture
+ 	nodes like explicit dereferences which have types but are not
+ 	expanded names or identifers.
+ 	(Object_Access_LeveL): Removed.
+ 	(Param_Entity): Moved from sem_util.
+ 	(Static_Accessibility_Level): Created as a replacement to
+ 	Object_Access_Level, it also uses Accessibility_Level_Helper for
+ 	its implementation.
+ 	* snames.ads-tmpl: Added new name for extra accessibility
+ 	parameter in init procs.
+ 
+ 2020-10-22  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_prag.adb (Expand_Pragma_Contract_Cases,
+ 	Expand_Pragma_Loop_Variant): Reuse Append_New_To.
+ 	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): Fix typo.
+ 	(Analyze_Pre_Post_Condition): Refactor repeated calls to
+ 	Defining_Entity.
+ 
+ 2020-10-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_characteristics.rst: Minor
+ 	fixes.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-10-22  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_warn.adb (Check_Unused_Withs): Move local variables from
+ 	to a nested procedure; Lunit is passed as a parameter to
+ 	Check_System_Aux and its type is refined from Node_Id to
+ 	Entity_Id; Cnode is now a constant.
+ 
+ 2020-10-22  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* libgnat/s-rident.ads (Profile_Info): Use a common profile
+ 	definition for Jorvik and GNAT Extended Ravenscar, using the
+ 	GNAT Extended Ravenscar definition.
+ 
+ 2020-10-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* Makefile.rtl (64-bit platforms): Add GNATRTL_128BIT_PAIRS to
+ 	the LIBGNAT_TARGET_PAIRS list and also GNATRTL_128BIT_OBJS to
+ 	the EXTRA_GNATRTL_NONTASKING_OBJS list.
+ 
+ 2020-10-22  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* sem_prag.adb (Process_Convention,
+ 	Process_Import_Or_Interface): Fix error message.
+ 
+ 2020-10-22  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* sem_ch13.adb (Make_Aitem_Pragma): Turn into function. This
+ 	removes a side-effect on the Aitem variable.
+ 	(Analyze_Aspect_Specifications): Handle Suppress and Unsuppress
+ 	aspects differently from the Linker_Section aspect.
+ 	(Ceck_Aspect_At_Freeze_Point): Don't expect Suppress/Unsuppress
+ 	to be delayed anymore.
+ 
+ 2020-10-22  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_aggr.adb: (Resolve_Container_Aggregate): For an indexed
+ 	container, verify that expressions and component associations
+ 	are not both present.
+ 	* exp_aggr.adb: Code reorganization, additional comments.
+ 	(Expand_Container_Aggregate): Use Aggregate_Size for Iterated_
+ 	Component_Associations for indexed aggregates. If present, the
+ 	default value of the formal in the constructor function is used
+ 	when the size of the aggregate cannot be determined statically.
+ 
+ 2020-10-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_attr.adb (Eval_Attribute): Fix oversight for Bit_Position.
+ 
+ 2020-10-22  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Check_Ambiguous_Aggregate): When a
+ 	subprogram call is found to be ambiguous, check whether
+ 	ambiguity is caused by an aggregate actual.  and indicate that
+ 	it should carry a type qualification.
+ 	* sem_ch4.adb (Traverse_Hoonyms, Try_Primitive_Operation): Call
+ 	it.
+ 	* sem_res.adb (Report_Ambiguous_Argument): Call it.
+ 
+ 2020-10-22  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_warn.adb (Check_One_Unit): Avoid repeated calls by using a
+ 	local variable Lunit; remove local constant Eitem, which was
+ 	identical to Lunit.
+ 
+ 2020-10-22  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* Makefile.rtl (LIBGNAT_TARGET_PAIRS) <x86*-vxworks*>: Select
+ 	nolibm and wraplf variants like other vxworks ports.
+ 
+ 2020-10-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c/94722
+ 	* gcc-interface/utils.c (handle_no_stack_protect_attribute):
+ 	New.
+ 	(handle_stack_protect_attribute): Add error message for a
+ 	no_stack_protector function.
+ 
+ 2020-10-22  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* Makefile.rtl (LIBGNAT_TARGET_PAIRS) <lynxos178>: Rely on
+ 	Aux_Long_Float for all real types.
+ 
+ 2020-10-22  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* Makefile.rtl (LIBGNAT_TARGET_PAIRS): Use Long Float-based
+ 	variant of Aux_Short_Float and Aux_Float on vxworks targets.
+ 	* libgnat/a-nashfl__wraplf.ads: New.
+ 	* libgnat/a-nuaufl__wraplf.ads: New.
+ 
+ 2020-10-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* Makefile.rtl (LIBGNAT_TARGET_PAIRS) <sparc*-sun-solaris>:
+ 	Use wraplf version of a-nallfl.
+ 
+ 2020-10-22  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* Makefile.rtl (LIBGNAT_TARGET_PAIRS): Use
+ 	a-nallfl__wraplf.ads on aarch64-* and ppc*-linux-gnu targets.
+ 	* libgnat/a-nallfl__wraplf.ads: New.
+ 
+ 2020-10-22  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* gcc-interface/trans.c: Include tree-nested.h
+ 	(walk_nesting_tree): Update for new nested function info.
+ 
+ 2020-10-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add a-llltio, a-lllwti,
+ 	a-lllzti and remove a-timoau, a-wtmoau and a-ztmoau.
+ 	(GNATRTL_128BIT_PAIRS): Add a-tiinio.adb, a-timoio.adb, a-wtinio.adb,
+ 	a-wtmoio.adb, a-ztinio.adb and a-ztmoio.adb.
+ 	* impunit.adb (Non_Imp_File_Names_95): Add a-llltio, a-lllwti and
+ 	a-lllzti.
+ 	* krunch.ads: Document trick for Ada.Long_Long_Long_Integer_*_IO.
+ 	* krunch.adb (Krunch): Add trick for Ada.Long_Long_Long_Integer_*_IO.
+ 	* libgnat/a-llltio.ads: Instantiate Ada.Text_IO.Integer_IO.
+ 	* libgnat/a-lllwti.ads: Instantiate Ada.Wide_Text_IO.Integer_IO.
+ 	* libgnat/a-lllzti.ads: Instantiate Ada.Wide_Wide_Text_IO.Integer_IO.
+ 	* libgnat/a-tigeau.ads (Load_Integer): New procedure.
+ 	* libgnat/a-tigeau.adb (Load_Integer): Likewise.
+ 	* libgnat/a-tiinau.ads, libgnat/a-tiinau.adb: Change to generic
+ 	package.
+ 	* libgnat/a-tiinio.adb: Instantiate it.
+ 	* libgnat/a-tiinio__128.adb: Likewise.
+ 	* libgnat/a-timoau.ads, libgnat/a-timoau.adb: Change to generic
+ 	package.
+ 	* libgnat/a-timoio.adb: Instantiate it.
+ 	* libgnat/a-timoio__128.adb: Likewise.
+ 	* libgnat/a-wtgeau.ads (Load_Integer): New procedure.
+ 	* libgnat/a-wtgeau.adb (Load_Integer): Likewise.
+ 	* libgnat/a-wtinau.ads, libgnat/a-wtinau.adb: Change to generic
+ 	package.
+ 	* libgnat/a-wtinio.adb: Instantiate it.
+ 	* libgnat/a-wtinio__128.adb: Likewise.
+ 	* libgnat/a-wtmoau.ads, libgnat/a-wtmoau.adb: Change to generic
+ 	package.
+ 	* libgnat/a-wtmoio.adb: Instantiate it.
+ 	* libgnat/a-wtmoio__128.adb: Likewise.
+ 	* libgnat/a-ztgeau.ads (Load_Integer): New procedure.
+ 	* libgnat/a-ztgeau.adb (Load_Integer): Likewise.
+ 	* libgnat/a-ztinau.ads, libgnat/a-ztinau.adb: Change to generic
+ 	package.
+ 	* libgnat/a-ztinio.adb: Instantiate it.
+ 	* libgnat/a-ztinio__128.adb: Likewise.
+ 	* libgnat/a-ztmoau.ads, libgnat/a-ztmoau.adb: Change to generic
+ 	package.
+ 	* libgnat/a-ztmoio.adb: Instantiate it.
+ 	* libgnat/a-ztmoio__128.adb: Likewise.
+ 
+ 2020-10-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch12.adb (Freeze_Subprogram_Body): Do not move the freeze
+ 	node of the package body enclosing the instance when its parent
+ 	is in the same declarative part as the freeze node of the parent.
+ 
+ 2020-10-21  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_ch6.adb (Insert_Post_Call_Actions): When a function's
+ 	result type requires finalization and we decide to make copy of
+ 	a call to the function and subsequently refer only to the copy,
+ 	then don't forget to finalize the original function result
+ 	object.
+ 
+ 2020-10-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-widint,
+ 	s-widthi, s-widuns, s-widuns.
+ 	(GNATRTL_128BIT_OBJS): Add s-imglllb, s-imgllli, s-imglllu, s-imglllw,
+ 	s-valllli, s-vallllu, s-widllli, s-widlllu.
+ 	* exp_imgv.adb (Expand_Image_Attribute): Deal with 128-bit types.
+ 	(Expand_Value_Attribute): Likewise.
+ 	(Expand_Width_Attribute): Likewise.
+ 	* exp_put_image.adb (Build_Elementary_Put_Image_Call): Likewise.
+ 	* krunch.adb (Krunch): Deal with s-img, s-val and s-wid prefixes.
+ 	* rtsfind.ads (RTU_Id): Add System_Img_LLLI, System_Img_LLLU,
+ 	System_Val_LLLI, System_Val_LLL, System_Wid_Int, System_Wid_LLLI,
+ 	System_Wid_LLLU, System_Wid_Uns).
+ 	(RE_Id): Add RE_Image_Long_Long_Long_Integer,
+ 	RE_Image_Long_Long_Long_Unsigned,
+ 	RE_Put_Image_Long_Long_Long_Integer,
+ 	RE_Put_Image_Long_Long_Long_Unsigned,
+ 	RE_Long_Long_Long_Unsigned, RE_Value_Long_Long_Long_Integer,
+ 	RE_Value_Long_Long_Long_Unsigned, RE_Width_Integer,
+ 	RE_Width_Long_Long_Long_Integer, RE_Width_Long_Long_Long_Unsigned,
+ 	RE_Width_Unsigned, RE_Image_Long_Long_Long_Integer,
+ 	RE_Image_Long_Long_Long_Unsigned, RE_Put_Image_Long_Long_Long_Integer,
+ 	RE_Put_Image_Long_Long_Long_Unsigned, RE_Long_Long_Long_Unsigned,
+ 	RE_Value_Long_Long_Long_Integer, RE_Value_Long_Long_Long_Unsigned,
+ 	RE_Width_Integer, RE_Width_Long_Long_Long_Integer,
+ 	RE_Width_Long_Long_Long_Unsigned, RE_Width_Unsigned.
+ 	* libgnat/s-imageb.ads, libgnat/s-imageb.adb: New generic
+ 	package.
+ 	* libgnat/s-imagei.ads, libgnat/s-imagei.adb: Likewise.
+ 	* libgnat/s-imageu.ads, libgnat/s-imageu.adb: Likewise.
+ 	* libgnat/s-imagew.ads, libgnat/s-imagew.adb: Likewise.
+ 	* libgnat/s-imgbiu.ads: Instantiate System.Image_B.
+ 	* libgnat/s-imgbiu.adb: Add pragma No_Body.
+ 	* libgnat/s-imgint.ads: Instantiate System.Image_I.
+ 	* libgnat/s-imgint.adb: Add pragma No_Body.
+ 	* libgnat/s-imgllb.ads: Instantiate System.Image_B.
+ 	* libgnat/s-imgllb.adb: Add pragma No_Body0
+ 	* libgnat/s-imglli.ads: Instantiate System.Image_I.
+ 	* libgnat/s-imglli.adb: Add pragma No_Body.
+ 	* libgnat/s-imglllb.ads: Instantiate System.Image_B.
+ 	* libgnat/s-imgllli.ads: Instantiate System.Image_I.
+ 	* libgnat/s-imglllu.ads: Instantiate System.Image_U.
+ 	* libgnat/s-imglllw.ads: Instantiate System.Image_W.
+ 	* libgnat/s-imgllu.ads: Instantiate System.Image_U.
+ 	* libgnat/s-imgllu.adb: Add pragma No_Body.
+ 	* libgnat/s-imgllw.ads: Instantiate System.Image_W.
+ 	* libgnat/s-imgllw.adb: Add pragma No_Body.
+ 	* libgnat/s-imgrea.adb: Remove clauses for System.Unsigned_Types.
+ 	* libgnat/s-imguns.ads: Instantiate System.Image_U.
+ 	* libgnat/s-imguns.adb: Add pragma No_Body.
+ 	* libgnat/s-imgwiu.ads: Instantiate System.Image_W.
+ 	* libgnat/s-imgwiu.adb: Add pragma No_Body.
+ 	* libgnat/s-putima.ads (Long_Long_Long_Unsigned): New subtype.
+ 	(Put_Image_Long_Long_Long_Unsigned): New procedure.
+ 	* libgnat/s-putima.adb (Small): Rename to Integer_Images.
+ 	(Large): Rename to LL_Integer_Images.
+ 	(LLL_Integer_Images): New instantiation.
+ 	(Put_Image_Long_Long_Long_Integer): New renaming.
+ 	(Put_Image_Long_Long_Long_Unsigned): Likewise.
+ 	* libgnat/s-valint.ads: Instantiate System.Value_I.
+ 	* libgnat/s-valint.adb: Add pragma No_Body.
+ 	* libgnat/s-vallli.ads: Instantiate System.Value_I.
+ 	* libgnat/s-vallli.adb: Add pragma No_Body.
+ 	* libgnat/s-valllli.ads: Instantiate System.Value_I.
+ 	* libgnat/s-vallllu.ads: Instantiate System.Value_U.
+ 	* libgnat/s-valllu.ads: Instantiate System.Value_U.
+ 	* libgnat/s-valllu.adb: Add pragma No_Body.
+ 	* libgnat/s-valuei.ads, libgnat/s-valuei.adb: New generic
+ 	package.
+ 	* libgnat/s-valueu.ads, libgnat/s-valueu.adb: Likewise.
+ 	* libgnat/s-valuns.ads: Instantiate System.Value_U.
+ 	* libgnat/s-valuns.adb: Add pragma No_Body.
+ 	* libgnat/s-widint.ads: Instantiate System.Width_I.
+ 	* libgnat/s-widlli.ads: Likewise.
+ 	* libgnat/s-widlli.adb: Add pragma No_Body.
+ 	* libgnat/s-widllli.ads: Instantiate System.Width_I.
+ 	* libgnat/s-widlllu.ads: Instantiate System.Width_U.
+ 	* libgnat/s-widllu.ads: Likewise.
+ 	* libgnat/s-widllu.adb: Add pragma No_Body.
+ 	* libgnat/s-widthi.ads, libgnat/s-widthi.adb: New generic
+ 	package.
+ 	* libgnat/s-widthu.ads, libgnat/s-widthu.adb: Likewise.
+ 	* libgnat/s-widuns.ads: Instantiate System.Width_U.
+ 
+ 2020-10-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* set_targ.adb (DTN): Fix oversight.
+ 	(Read_Target_Dependent_Values): Do not error out on missing
+ 	Long_Long_Long_Size entry and reuse Long_Long_Size for it.
+ 
+ 2020-10-21  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_aggr.adb (Gen_Loop): Analyze copy of the expression in the
+ 	scope of the implicit loop with name of the index parameter
+ 	visible.
+ 
+ 2020-10-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* Makefile.rtl (GNATRTL_128BIT_PAIRS): New variable.
+ 	(GNATRTL_128BIT_OBJS): Likewise.
+ 	(Windows): In 64-bit mode, add the former to LIBGNAT_TARGET_PAIRS and
+ 	the latter to EXTRA_GNATRTL_NONTASKING_OBJS.
+ 	(x86_64/linux): Likewise, but unconditionally.
+ 	(GNATRTL_NONTASKING_OBJS): Add s-aridou, s-exponn, s-expont,
+ 	s-exponu.
+ 	* ada_get_targ.adb (Get_Long_Long_Long_Size): New function.
+ 	* checks.adb (Apply_Arithmetic_Overflow_Strict): Use Integer_Type_For
+ 	to find an appropriate integer type; if it does not exist and the max
+ 	integer size is larger than 64, use the 128-bit arithmetic routines.
+ 	* cstand.adb (Create_Standard): Build Standard_Long_Long_Long_Integer
+ 	and its base type.  Use it for Etype of Any_Integer, Any_Modular and
+ 	Any_Numeric.  Use its size for Build Standard_Long_Long_Long_Unsigned
+ 	and Universal_Integer.
+ 	(Print_Standard): Print Long_Long_Long_Integer.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_Mod>: Adjust
+ 	comment.
+ 	* exp_ch3.adb (Simple_Init_Initialize_Scalars_Type): Deal with 128-bit
+ 	types.
+ 	* exp_ch4.adb (Expand_Array_Comparison): Likewise.
+ 	(Expand_N_Op_Expon): Likewise.
+ 	(Narrow_Large_Operation): Likewise.
+ 	* exp_dbug.adb (Bounds_Match_Size): Handle 128-bit size.
+ 	* exp_fixd.adb (Build_Double_Divide_Code): Use RE_Double_Divide64.
+ 	* exp_intr.adb (Expand_Binary_Operator_Call): Handle 128-bit size.
+ 	* exp_pakd.ads (E_Array): Extend range to 127.
+ 	(Bits_Id): Fill in up to 127.
+ 	(Get_Id): Likewise.
+ 	(GetU_Id): Likewise.
+ 	(Set_Id): Likewise.
+ 	(SetU_Id): Likewise.
+ 	* exp_pakd.adb (Revert_Storage_Order): Handle 128-bit size.
+ 	* exp_util.adb (Integer_Type_For): Likewise.
+ 	(Small_Integer_Type_For): Likewise.
+ 	* fname.adb (Is_Predefined_File_Name): Do not return False for names
+ 	larger than 12 characters if they start with "s-".
+ 	* freeze.adb (Adjust_Esize_For_Alignment): Change the maximum value
+ 	to System_Max_Integer_Size.
+ 	(Check_Suspicious_Modulus): Adjust comment.
+ 	(Freeze_Entity): Likewise.
+ 	* get_targ.ads (Get_Long_Long_Long_Size): New function.
+ 	* get_targ.adb (Get_Long_Long_Long_Size): Likewise.
+ 	(Width_From_Size): Deal with 128-bit size.
+ 	* gnat1drv.adb (Adjust_Global_Switches): Deal with 128-bit types.
+ 	* impunit.adb (Get_Kind_Of_File): Bump buffer size.  Accept files with
+ 	13 characters if they start with 's'.  Compare slice of Buffer.
+ 	(Not_Impl_Defined_Unit): Accept files with 13 characters if they start
+ 	with 's'.
+ 	* krunch.ads: Document length for 128-bit support units.
+ 	* krunch.adb (Krunch): Set length to 9 for 128-bit support units.
+ 	* layout.adb (Layout_Type): Use System_Max_Integer_Size as alignment
+ 	limit.
+ 	* rtsfind.ads (RTU_Id): Add System_Arith_128,
+ 	System_Compare_Array_Signed_128, System_Compare_Array_Unsigned_128,
+ 	System_Exn_LLLI, System_Exp_LLLU, System_Pack_[65..127].
+ 	(RE_Id): Add RE_Integer_128, RE_Unsigned_128, RE_Add_With_Ovflo_Check128
+ 	RE_Multiply_With_Ovflo_Check128, RE_Subtract_With_Ovflo_Check128,
+ 	RE_Bswap_128, RE_Compare_Array_S128, RE_Compare_Array_U128,
+ 	RE_Exn_Long_Long_Long_Integer, RE_Exp_Long_Long_Long_Integer,
+ 	RE_Exp_Long_Long_Long_Unsigned, RE_Bits_[65-127], RE_Get_[65-127],
+ 	RE_Set_[65-127], RE_IS_Is16, RE_IS_Iu16, RE_Integer_128 and
+ 	RE_Unsigned_128.  Rename RE_Add_With_Ovflo_Check, RE_Double_Divide,
+ 	RE_Multiply_With_Ovflo_Check, RE_Scaled_Divide and
+ 	RE_Subtract_With_Ovflo_Check.  Remove RE_IS_Iz1, RE_IS_Iz2, RE_IS_Iz4,
+ 	RE_IS_Iz8, RE_Long_Unsigned, RE_Short_Unsigned, RE_Short_Short_Unsigned
+ 	(RE_Unit_Table): Likewise.
+ 	* sem_aux.adb (Corresponding_Unsigned_Type): Deal with a size equal to
+ 	that of Standard_Long_Long_Long_Integer.
+ 	(First_Subtype): Deal with Standard_Long_Long_Long_Integer'Base.
+ 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause) <Attribute_Size>:
+ 	Check the size against powers of 2 and System_Max_Integer_Size for
+ 	objects as well.
+ 	(Set_Enum_Esize): Deal with 128-bit bounds.
+ 	* sem_ch3.adb (Set_Modular_Size): Handle 128-bit size.
+ 	(Modular_Type_Declaration): Deal with 128-bit types.
+ 	(Signed_Integer_Type_Declaration): Support derivation from
+ 	Standard_Long_Long_Long_Integer.
+ 	* sem_ch4.adb (Analyze_Mod): Handle 128-bit modulus.
+ 	* sem_intr.adb: Add with and use clauses for Ttypes.
+ 	(Check_Shift): Handle 128-bit size and modulus.
+ 	* sem_prag.adb (Analyze_Pragma) <Pragma_Initialize_Scalars>: Deal
+ 	with Signed_128 and Unsigned_128.
+ 	(Analyze_Integer_Value): Handle 128-bit size.
+ 	* sem_util.ads (Addressable): Adjust description.
+ 	* sem_util.adb (Addressable): Return true for 128 if the system
+ 	supports 128 bits.
+ 	(Set_Invalid_Binder_Values): Deal with Signed_128 and Unsigned_128.
+ 	* set_targ.ads (Long_Long_Long_Size): New variable.
+ 	* set_targ.adb (S_Long_Long_Long_Size): New constant.
+ 	(DTN): Add entry for S_Long_Long_Long_Size.
+ 	(DTV): Add entry for Long_Long_Long_Size.
+ 	(Set_Targ): Set Long_Long_Long_Size.
+ 	* snames.ads-tmpl (Name_Max_Integer_Size): New attribute name.
+ 	(Name_Signed_128): New scalar name.
+ 	(Name_Unsigned_128): Likewise.
+ 	(Scalar_Id): Adjust.
+ 	(Integer_Scalar_Id): Likewise.
+ 	(Attribute_Id): Add Attribute_Max_Integer_Size.
+ 	* stand.ads (Standard_Entity_Type): Add S_Long_Long_Long_Integer.
+ 	(Standard_Long_Long_Long_Integer): New renaming.
+ 	(Universal_Integer): Adjust description.
+ 	(Standard_Long_Long_Long_Unsigned): New variable.
+ 	* switch-c.adb (Scan_Front_End_Switches): Deal with -gnate128.
+ 	* ttypes.ads (Standard_Long_Long_Long_Integer_Size): New variable.
+ 	(Standard_Long_Long_Long_Integer_Width): Likewise.
+ 	(System_Max_Integer_Size): Turn into variable.
+ 	(System_Max_Binary_Modulus_Power): Likewise.
+ 	* uintp.ads (Uint_127): New constant.
+ 	* uintp.adb (UI_Power_2): Extednd to 128.
+ 	(UI_Power_10): Likewise.
+ 	(UI_Expon): Deal with exponent up to 128 specially.
+ 	* usage.adb (Write_Switch_Char): Print -gnate128 switch.
+ 	* libgnat/a-tifiio.adb (Put_Scaled): Call Scaled_Divide64.
+ 	* libgnat/interfac__2020.ads (Integer_128): New integer type.
+ 	(Unsigned_128): New modular type.
+ 	(Shift_Left, Shift_Right, Shift_Right_Arithmetic, Rotate_Left,
+ 	Rotate_Right): New intrinsic functions operating on it.
+ 	* libgnat/s-aridou.ads, libgnat/s-aridou.adb: New generic
+ 	package.
+ 	* libgnat/s-arit64.ads, libgnat/s-arit64.adb: Instantiate
+ 	System.Arithmetic_Double.
+ 	* libgnat/s-arit128.ads, libgnat/s-arit128.adb: Likewise.
+ 	* libgnat/s-bytswa.ads: Add with clause for Interfaces, use subtypes
+ 	of unsigned types defined in Interfaces and add Bswap_128.
+ 	* libgnat/s-casi128.ads, libgnat/s-casi128.adb: New package.
+ 	* libgnat/s-caun128.ads, libgnat/s-caun128.adb: Likewise.
+ 	* libgnat/s-exnint.ads: Instantiate System.Exponn.
+ 	* libgnat/s-exnint.adb: Add pragma No_Body.
+ 	* libgnat/s-exnlli.ads: Instantiate System.Exponn.
+ 	* libgnat/s-exnlli.adb: Add pragma No_Body.
+ 	* libgnat/s-exnllli.ads: Instantiate System.Exponn.
+ 	* libgnat/s-expint.ads: Likewise.
+ 	* libgnat/s-expint.adb: Add pragma No_Body.
+ 	* libgnat/s-explli.ads: Instantiate System.Exponn.
+ 	* libgnat/s-explli.adb: Add pragma No_Body.
+ 	* libgnat/s-expllli.ads: Instantiate System.Exponn.
+ 	* libgnat/s-explllu.ads: Instantiate System.Exponu.
+ 	* libgnat/s-expllu.ads: Likewise.
+ 	* libgnat/s-expllu.adb: Add pragma No_Body.
+ 	* libgnat/s-exponn.ads, libgnat/s-exponn.adb: New generic
+ 	function.
+ 	* libgnat/s-expont.ads, libgnat/s-expont.adb: Likewise.
+ 	* libgnat/s-exponu.ads, libgnat/s-exponu.adb: Likewise.
+ 	* libgnat/s-expuns.ads, libgnat/s-expuns.adb: Likewise.
+ 	* libgnat/s-pack65.ads, libgnat/s-pack65.adb: New package.
+ 	* libgnat/s-pack66.ads, libgnat/s-pack66.adb: New package.
+ 	* libgnat/s-pack67.ads, libgnat/s-pack67.adb: New package.
+ 	* libgnat/s-pack68.ads, libgnat/s-pack68.adb: New package.
+ 	* libgnat/s-pack69.ads, libgnat/s-pack69.adb: New package.
+ 	* libgnat/s-pack70.ads, libgnat/s-pack70.adb: New package.
+ 	* libgnat/s-pack71.ads, libgnat/s-pack71.adb: New package.
+ 	* libgnat/s-pack72.ads, libgnat/s-pack72.adb: New package.
+ 	* libgnat/s-pack73.ads, libgnat/s-pack73.adb: New package.
+ 	* libgnat/s-pack74.ads, libgnat/s-pack74.adb: New package.
+ 	* libgnat/s-pack75.ads, libgnat/s-pack75.adb: New package.
+ 	* libgnat/s-pack76.ads, libgnat/s-pack76.adb: New package.
+ 	* libgnat/s-pack77.ads, libgnat/s-pack77.adb: New package.
+ 	* libgnat/s-pack78.ads, libgnat/s-pack78.adb: New package.
+ 	* libgnat/s-pack79.ads, libgnat/s-pack79.adb: New package.
+ 	* libgnat/s-pack80.ads, libgnat/s-pack80.adb: New package.
+ 	* libgnat/s-pack81.ads, libgnat/s-pack81.adb: New package.
+ 	* libgnat/s-pack82.ads, libgnat/s-pack82.adb: New package.
+ 	* libgnat/s-pack83.ads, libgnat/s-pack83.adb: New package.
+ 	* libgnat/s-pack84.ads, libgnat/s-pack84.adb: New package.
+ 	* libgnat/s-pack85.ads, libgnat/s-pack85.adb: New package.
+ 	* libgnat/s-pack86.ads, libgnat/s-pack86.adb: New package.
+ 	* libgnat/s-pack87.ads, libgnat/s-pack87.adb: New package.
+ 	* libgnat/s-pack88.ads, libgnat/s-pack88.adb: New package.
+ 	* libgnat/s-pack89.ads, libgnat/s-pack89.adb: New package.
+ 	* libgnat/s-pack90.ads, libgnat/s-pack90.adb: New package.
+ 	* libgnat/s-pack91.ads, libgnat/s-pack91.adb: New package.
+ 	* libgnat/s-pack92.ads, libgnat/s-pack92.adb: New package.
+ 	* libgnat/s-pack93.ads, libgnat/s-pack93.adb: New package.
+ 	* libgnat/s-pack94.ads, libgnat/s-pack94.adb: New package.
+ 	* libgnat/s-pack95.ads, libgnat/s-pack95.adb: New package.
+ 	* libgnat/s-pack96.ads, libgnat/s-pack96.adb: New package.
+ 	* libgnat/s-pack97.ads, libgnat/s-pack97.adb: New package.
+ 	* libgnat/s-pack98.ads, libgnat/s-pack98.adb: New package.
+ 	* libgnat/s-pack99.ads, libgnat/s-pack99.adb: New package.
+ 	* libgnat/s-pack100.ads, libgnat/s-pack100.adb: New package.
+ 	* libgnat/s-pack101.ads, libgnat/s-pack101.adb: New package.
+ 	* libgnat/s-pack102.ads, libgnat/s-pack102.adb: New package.
+ 	* libgnat/s-pack103.ads, libgnat/s-pack103.adb: New package.
+ 	* libgnat/s-pack104.ads, libgnat/s-pack104.adb: New package.
+ 	* libgnat/s-pack105.ads, libgnat/s-pack105.adb: New package.
+ 	* libgnat/s-pack106.ads, libgnat/s-pack106.adb: New package.
+ 	* libgnat/s-pack107.ads, libgnat/s-pack107.adb: New package.
+ 	* libgnat/s-pack108.ads, libgnat/s-pack108.adb: New package.
+ 	* libgnat/s-pack109.ads, libgnat/s-pack109.adb: New package.
+ 	* libgnat/s-pack110.ads, libgnat/s-pack110.adb: New package.
+ 	* libgnat/s-pack111.ads, libgnat/s-pack111.adb: New package.
+ 	* libgnat/s-pack112.ads, libgnat/s-pack112.adb: New package.
+ 	* libgnat/s-pack113.ads, libgnat/s-pack113.adb: New package.
+ 	* libgnat/s-pack114.ads, libgnat/s-pack114.adb: New package.
+ 	* libgnat/s-pack115.ads, libgnat/s-pack115.adb: New package.
+ 	* libgnat/s-pack116.ads, libgnat/s-pack116.adb: New package.
+ 	* libgnat/s-pack117.ads, libgnat/s-pack117.adb: New package.
+ 	* libgnat/s-pack118.ads, libgnat/s-pack118.adb: New package.
+ 	* libgnat/s-pack119.ads, libgnat/s-pack119.adb: New package.
+ 	* libgnat/s-pack120.ads, libgnat/s-pack120.adb: New package.
+ 	* libgnat/s-pack121.ads, libgnat/s-pack121.adb: New package.
+ 	* libgnat/s-pack122.ads, libgnat/s-pack122.adb: New package.
+ 	* libgnat/s-pack123.ads, libgnat/s-pack123.adb: New package.
+ 	* libgnat/s-pack124.ads, libgnat/s-pack124.adb: New package.
+ 	* libgnat/s-pack125.ads, libgnat/s-pack125.adb: New package.
+ 	* libgnat/s-pack126.ads, libgnat/s-pack126.adb: New package.
+ 	* libgnat/s-pack127.ads, libgnat/s-pack127.adb: New package.
+ 	* libgnat/s-rannum.ads (Random): New function returning 128-bit.
+ 	* libgnat/s-rannum.adb (Random): Implement it.
+ 	* libgnat/s-scaval.ads: Add with clause for Interfaces, use subtypes
+ 	of unsigned types defined in Interfaces.
+ 	* libgnat/s-scaval.adb: Add use clause for Interfaces.
+ 	* libgnat/s-scaval__128.ads, libgnat/s-scaval__128.adb: New
+ 	package.
+ 	* libgnat/s-unstyp.ads (Long_Long_Long_Unsigned): New modular type.
+ 	(Shift_Left, Shift_Right, Shift_Right_Arithmetic, Rotate_Left,
+ 	Rotate_Right): New intrinsic functions operating on it.
+ 
+ 2020-10-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_characteristics.rst: Add
+ 	Long_Long_Long_Integer to the list of predefined integer types.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-10-21  Yannick Moy  <moy@adacore.com>
+ 
+ 	* ada_get_targ.adb (Width_From_Size): Add case for 128 bits.
+ 	Reorder declarations in the same order as get_targ.adb to
+ 	facilitate diffs.
+ 
+ 2020-10-21  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_aggr.adb (Expand_N_Aggregate): Refactor repeated calls to
+ 	Etype (N).
+ 	(Build_Array_Aggr_Code): Fix whitespace.
+ 
+ 2020-10-21  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* adaint.c (__gnat_file_time): Use regular arithmetic instead of
+ 	__builtin_*_overflow routines if GCC version 4 or less and
+ 	compiler is g++.
+ 
+ 2020-10-21  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Array_Aggregate): Use Choice_List, which
+ 	internally calls either Choice or Discrete_Choices, depending on
+ 	the context.
+ 
+ 2020-10-21  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Iterated_Component_Association): Use
+ 	existing defining identifier for index parameter.
+ 
+ 2020-10-21  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch9.adb (Build_Task_Activation_Call): Do not generate a
+ 	call to activate tasks if we are within the scope of a protected
+ 	type and pragma Detect_Blocking is active.
+ 
+ 2020-10-21  Liaiss Merzougue  <merzougue@adacore.com>
+ 
+ 	* libgnat/s-carsi8.adb (Compare_Array_S8): Add pragma Assert to
+ 	avoid warning concerning Left_Len and RighLen value regarding
+ 	Bytes_Compared_As_Words.
+ 	* libgnat/s-carun8.adb (Compare_Array_U8): Likewise.
+ 	* libgnat/s-geveop.adb (Binary_Operation, Unary_Operation): Add
+ 	pragma Assert concerning divide by 0 warning.
+ 	* libgnat/s-imgcha.adb (Image_Character): Code update to prevent
+ 	constant operation warning.
+ 	(Image_Character): Add pragma Assert concerning the unchecked
+ 	String size.
+ 	* libgnat/s-imgdec.adb
+ 	(Round): Upate loop code to prevent warning concerning
+ 	Digs'First access.
+ 	(Round): Add pragma assert.
+ 	(Set): Add pragma Assert for the unchecked string size.
+ 	(Set_Digits): Add pragma Assert for the input range.
+ 	(Set_Decimal_Digits): Add pragma Assert.
+ 	(Set_Blank_And_Sign): Add pragma Assert for the input range.
+ 	* libgnat/s-arit64.adb (DoubleDivide): Add pragma Assert
+ 	concerning Du /= 0.
+ 	(Multiply_With_Ovflo_Check): Add pragma Annotate to avoid
+ 	warning concerning unsigned -> signed conversion.
+ 	* libgnat/s-imguns.adb (Set_Image_Unsigned): Add pragma Assert
+ 	to prevent overflow check warning.  Add pragma Assert for
+ 	controlling S'First = 1.
+ 	* libgnat/s-imgrea.adb (Image_Floating_Point, Set, Set_Digs,
+ 	Set_Special_Fill, Convert_Integer): Add pragma Annotate to
+ 	prevent overflow check warning.
+ 	(Set_Image_Real): Add pragma Annotate to avoid dead code warning
+ 	on float check. Add pragma Assert to prevent overflow check
+ 	warning.
+ 	* libgnat/s-imgwiu.adb (Set_Digits, Set_Image_Width_Unsigned):
+ 	Add pragma assert to prevent overflow check warning.
+ 	* libgnat/s-imgllu.adb (Set_Image_Long_Long_Unsigned): Add
+ 	pragma assert to prevent overflow check warning.
+ 	* libgnat/s-imgint.adb (Set_Digits): Add Assert for input
+ 	constraint and to prevent overflow check warning, create
+ 	Non_Positive subtype, and change the T parameter as Non_Positive
+ 	instead Integer.
+ 	(Set_Image_Integer): Add pragma assert to prevent overflow check
+ 	warning.
+ 	* libgnat/s-imglli.adb (Set_Digits): Add Assert for input
+ 	constraint and to prevent overflow check warning, create
+ 	Non_Positive subtype, and change the T parameter as Non_Positive
+ 	instead Integer.
+ 	(Set_Image_Long_Long_Integer): Add pragma assert to prevent
+ 	overflow check warning.
+ 	* libgnat/s-fatgen.adb (Decompose, Pred, Succ): Add pragma
+ 	Annotate to prevent dead code due to invalid float check.
+ 	* libgnat/s-imenne.adb (Image_Enumeration_8,
+ 	Image_Enumeration_16, Image_Enumeration_32): Add pragma Assert
+ 	to prevent overflow check warning.  Add Names_Index subtype for
+ 	restricting Index_table content.
+ 
+ 2020-10-21  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch6.adb (Insert_Post_Call_Actions): Test for
+ 	N_Explicit_Dereference as part of the existing test for function
+ 	calls.
+ 
+ 2020-10-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.adb (Check_Strict_Alignment): Do not set the flag for
+ 	a bit-packed array type, even if it is a by-reference type.
+ 
+ 2020-10-21  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* adaint.c (__gnat_file_time): New routine.
+ 	(__gnat_copy_attribs): Copy timestamps in nanoseconds.
+ 	* libgnat/a-direct.adb (C_Modification_Time): Bind to
+ 	__gnat_file_time.
+ 	(Modification_Time): Call to C_Modification_Time.
+ 
+ 2020-10-21  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Iterated_Component_Association):
+ 	Expression's copy and now has the same parent as the original
+ 	expression.
+ 	(Resolve_Array_Aggregate): Add ??? comment about a still
+ 	existing minor issue that led to discovery of the above crash.
+ 
+ 2020-10-21  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch12.adb (Install_Parents_Of_Generic_Context): Simplify
+ 	functionality; collect and install parents of generic child
+ 	package.
+ 	(Remove_Parents_Of_Generic_Context): Code cleanup.
+ 	(Instantiate_Package_Body): Hide parents of generic context from
+ 	visibility before installing the parent instance; restore their
+ 	visibility when the instance is analyzed
+ 
+ 2020-10-21  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* libgnarl/s-osinte__lynxos178e.ads: Remove -mthreads switch.
+ 
+ 2020-10-21  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* env.c (__gnat_setenv): call setenv for VxWorks 7 kernel mode.
+ 	(__gnat_environ): envGet takes an int instead of a NULL pointer.
+ 	(__gnat_unsetenv): call unsetenv for VxWorks 7 kernel mode.
+ 	(__gnat_clearenv): use __gnat_unsetenv to clear environment
+ 	variables.
+ 
+ 2020-10-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch12.adb (Freeze_Subprogram_Body): Call
+ 	Package_Freeze_Node to retrieve the freeze node for the
+ 	enclosing body of the generic.
+ 
+ 2020-10-21  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call_Helper): Modify calls to
+ 	Add_Extra_Actual to use Extra_Accessibility instead of
+ 	Get_Accessibility for the EF parameter.
+ 
+ 2020-10-21  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Actuals): Whitespace cleanup.
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Make minimum
+ 	accessibility a constant object.
+ 
+ 2020-10-21  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* env.c (__gnat_environ): For VxWorks kernel simply return the
+ 	result of the envGet call. Do this for VxWorks 6 and 7 as they
+ 	both support the same API.
+ 
+ 2020-10-21  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* exp_ch7.adb (Build_Finalizer): Disable warnings on referenced
+ 	entity.
+ 
+ 2020-10-21  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* einfo.ads, sem_ch3.adb, sem_util.adb: Fix comments.
+ 
+ 2020-10-21  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch3.adb (Build_Derived_Type): Propagate convention of
+ 	class-wide parent.
+ 
+ 2020-10-21  Claire Dross  <dross@adacore.com>
+ 
+ 	* libgnat/a-cofove.adb (Copy): Add explanation in case of
+ 	Capacity_Error.
+ 	(Insert_Space): Raise Capacity_Error if the new length is
+ 	greater than the capacity.
+ 	(Reserve_Capacity): Raise Capacity_Error instead of
+ 	Constraint_Error.
+ 
+ 2020-10-20  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (Constrain_Decimal, Constrain_Enumeration,
+ 	Constrain_Float, Constrain_Integer, Constrain_Ordinary_Fixed):
+ 	Refine parameter type from Node_Id to Entity_Id.
+ 
+ 2020-10-20  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sprint.adb (po): Set Dump_Freeze_Null to False; align colons.
+ 	(ps): Likewise.
+ 
+ 2020-10-20  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sinfo.ads, sinfo.adb: The flag Box_Present can appear in
+ 	Iterated_Element_Association nodes.
+ 	* sem_aggr.adb (Resolve_Aggregate): Call
+ 	Resolve_Container_Aggregate when type of context has
+ 	corresponding aspect.
+ 	* sem_type.adb (Covers): In Ada_2020 an aggregate is compatible
+ 	with a type that carries the corresponding aspect.
+ 	* exp_ch3.adb (Make_Controlling_Function_Wrappers): Do not
+ 	create declarations and bodies for inherited primitive functions
+ 	of null extensions that dispatch on result, when current scope
+ 	includes an immediately visible non-overloadable homonym of the
+ 	function.
+ 	* libgnat/a-cborse.adb, libgnat/a-cborse.ads,
+ 	libgnat/a-cbhase.ads, libgnat/a-cbhase.adb,
+ 	libgnat/a-cborma.adb, libgnat/a-cborma.ads,
+ 	libgnat/a-cbhama.adb, libgnat/a-cbhama.ads,
+ 	libgnat/a-cbdlli.adb, libgnat/a-cbdlli.ads,
+ 	libgnat/a-convec.ads, libgnat/a-ciorse.ads,
+ 	libgnat/a-cihase.ads, libgnat/a-cihase.adb,
+ 	libgnat/a-ciorma.ads, libgnat/a-cihama.ads,
+ 	libgnat/a-cihama.adb, libgnat/a-cidlli.ads,
+ 	libgnat/a-cidlli.adb, libgnat/a-coinve.adb,
+ 	libgnat/a-cobove.adb, libgnat/a-cobove.ads,
+ 	libgnat/a-convec.adb, libgnat/a-coinve.ads,
+ 	libgnat/a-coorse.ads, libgnat/a-cohase.adb,
+ 	libgnat/a-cohase.ads, libgnat/a-coorma.ads,
+ 	libgnat/a-cohama.adb, libgnat/a-cohama.ads,
+ 	libgnat/a-cdlili.ads: Add primitive function Empty for use in
+ 	aspect Aggregate, and add corresponding body or expression
+ 	function.
+ 
+ 2020-10-20  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* aspects.adb (Has_Aspect_Specifications_Flag): Add
+ 	N_Parameter_Specification.
+ 	* par-ch13.adb (Aspect_Specifications_Present): Also handle case
+ 	of an unknown aspect on the last formal parameter (terminated by
+ 	a Tok_Right_Paren). Minor reformatting.
+ 	* par-ch6.adb (P_Formal_Part): Scan aspects on formal
+ 	parameters.
+ 	* par.adb: Fix typos.
+ 	* sem_ch6.adb (Process_Formals): Add processing of aspects and
+ 	in particular Unreferenced aspect for now.
+ 	* sinfo.ads: Allow ASPECT_SPECIFICATIONS on a
+ 	PARAMETER_SPECIFICATION.
+ 	* doc/gnat_rm/implementation_defined_aspects.rst
+ 	(Aspect Unreferenced): Update documentation.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-10-20  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Get_Accessibility): Refine result
+ 	type from Node_Id to Entity_Id.
+ 
+ 2020-10-20  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* einfo.adb, exp_attr.adb, sem_ch13.adb, sem_util.adb: Use
+ 	Is_Formal where possible.
+ 
+ 2020-10-20  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_util.ads: Declare a new package, Old_Attr_Util, which in
+ 	turn declares two more packages, Conditional_Evaluation and
+ 	Indirect_Temps. Conditional_Evaluation provides a predicate for
+ 	deciding whether a given 'Old attribute reference is eligible
+ 	for conditional evaluation and, in the case where it is
+ 	eligible, a function that constructs the Boolean-valued
+ 	condition that is to be evaluated at run time in deciding
+ 	whether to evaluate the attribute prefix.  Indirect_Temps
+ 	provides support for declaring a temporary which is only
+ 	initialized conditionally; more specifically, an access type and
+ 	a variable of that type are declared (unconditionally) and then
+ 	the variable is (conditionally) initialized with an allocator.
+ 	The existence of the access type and the pointer variable is
+ 	hidden from clients, except that a predicate,
+ 	Is_Access_Type_For_Indirect_Temp, is provided for identifying
+ 	such access types. This is needed because we want such an access
+ 	type to be treated like a "normal" access type (specifically
+ 	with respect to finalization of allocated objects). Other parts
+ 	of the compiler treat access types differently if
+ 	Comes_From_Source is False, or if the secondary stack storage
+ 	pool is used; this predicate is used to disable this special
+ 	treatment.
+ 	* sem_attr.adb (Uneval_Old_Msg): Improve message text to reflect
+ 	Ada202x changes.
+ 	(Analyze_Attribute): A previously-illegal 'Old attribute
+ 	reference is accepted in Ada2020 if it is eligible for
+ 	conditional evaluation.
+ 	* sem_res.adb (Valid_Conversion): Do not treat a rewritten 'Old
+ 	attribute like other rewrite substitutions. This makes a
+ 	difference, for example, in the case where we are generating the
+ 	expansion of a membership test of the form "Saooaaat'Old in
+ 	Named_Access_Type"; in this case Valid_Conversion needs to
+ 	return True (otherwise the expansion will be False - see the
+ 	call site in exp_ch4.adb).
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): When expanding a
+ 	'Old attribute reference, test for the case where the reference
+ 	is eligible for conditional evaluation. In that case, use the
+ 	new "indirect temporary" mechanism provided by Sem_Util.
+ 	* exp_prag.adb
+ 	(Expand_Attributes_In_Consequence.Expand_Attributes): If
+ 	Sem_Util.Indirect_Temp_Needed indicates that there could be
+ 	correctness problems associated with the old expansion scheme
+ 	for dealing with 'Old attributes in contract cases consequences,
+ 	then we use the new "indirect temporary" mechanism provided by
+ 	Sem_Util instead. We do not want to do this unconditionally.
+ 	* sem_util.adb: Provide a body for the new Old_Attr_Util
+ 	package. Further work is needed in several areas for
+ 	correctness:
+ 	- The function Is_Repeatedly_Evaluated does not deal with
+ 	container aggregates yet.
+ 	- The function Is_Known_On_Entry does not deal with interactions
+ 	with the Global aspect.
+ 	Each area where more work is needed is indicated with a "???"
+ 	comment in the code; a more detailed description can be found
+ 	there. Some optimization opportunties are similarly indicated
+ 	with a "???" comment.
+ 	* exp_ch3.adb (Freeze_Type): In deciding whether to generate
+ 	expansion for the list controller of an access type, take the
+ 	predicate Is_Access_Type_For_Indirect_Temp into account. If the
+ 	predicate yields True, then generate the expansion.
+ 	* exp_util.adb (Build_Allocate_Deallocate_Proc): We don't
+ 	normally finalize allocated objects that are allocated on the
+ 	secondary stack. Add an exception to this rule if the predicate
+ 	Is_Access_Type_For_Indirect_Temp yields True.  As a result of
+ 	this exception, we have to deal with the fact that gigi expects
+ 	a different parameter profile if we are using the secondary
+ 	stack pool; the Pool and Alignment parameters must be omitted in
+ 	this case.
+ 
+ 2020-10-20  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch12.adb (Install_Parents_Of_Generic_Context,
+ 	Remove_Parents_Of_Generic_Context): New subprograms.
+ 	(Instantiate_Package_Body): Adding assertions to ensure that
+ 	installed parents are properly removed.
+ 
+ 2020-10-20  Claire Dross  <dross@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Emit a warning on 'Update
+ 	when Warn_On_Obsolescent_Feature is set to True.
+ 
+ 2020-10-20  Richard Kenner  <kenner@adacore.com>
+ 
+ 	* gnat_cuda.adb (Build_Register_Function_Call): Make procedure
+ 	call instead of function, rename to
+ 	Build_Register_Procedure_Call.
+ 	(Build_CUDA_Init_Proc): Make procedure call instead of function.
+ 
+ 2020-10-20  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Branch): Properly anticipate expansion of
+ 	conditional expressions producing object declarations in
+ 	addition to assignment statements, and rename formal.
+ 
+ 2020-10-20  Yannick Moy  <moy@adacore.com>
+ 
+ 	* errout.adb (Write_Source_Code_Line): Adopt display closer to
+ 	GCC format.
+ 	(Output_Messages): Deal specially with info messages.
+ 	* erroutc.adb (Prescan_Message): Fix bug leading to check
+ 	messages being considered as error messages in pretty output
+ 	mode.
+ 
+ 2020-10-20  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call_Helper): Properly handle the case
+ 	where the condition of a conditional expression has been
+ 	optimized out when calculating the value of an extra
+ 	accessibility parameter.
+ 
+ 2020-10-20  Bob Duff  <duff@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_utility_programs.rst: Change "_" to "-".
+ 
+ 2020-10-20  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Aggregate): Warn on not fully
+ 	initialized box aggregate.
+ 	* sem_aggr.ads: Fix typo.
+ 	* sem_res.adb (Resolve_Actuals): Fix typo in error message
+ 	format marking it incorrectly as a continuation message.
+ 	* sem_elab.adb (Check_Internal_Call_Continue): Similarly, add
+ 	missing primary message in case of a call to an actual generic
+ 	subprogram.
+ 	* sem_warn.adb (Check_References): Do not warn on read but never
+ 	assigned variables if the type is partially initialized.
+ 	* libgnat/a-except.ads, libgnat/a-ststun.ads,
+ 	libgnat/g-sechas.ads, libgnat/a-cbdlli.ads,
+ 	libgnat/a-cfdlli.ads, libgnat/a-cobove.ads,
+ 	libgnat/a-cohata.ads, libgnat/a-crbltr.ads,
+ 	libgnat/a-cbmutr.ads, libgnat/a-crdlli.ads,
+ 	libgnat/a-cbsyqu.ads: Address new warning.
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ 	Update doc on -gnatwv.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2020-10-20  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Expression_Function): Mark static
+ 	expression functions as inlined.
+ 
+ 2020-10-20  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* contracts.adb (Is_Prologue_Renaming): This function was
+ 	missing support for E_Constant which can also be generated in
+ 	protected objects.
+ 
+ 2020-10-20  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* bindgen.adb (Gen_Bind_Env_String): Generate Ada 2012 compatible
+ 	strings. Code cleanup.
+ 
+ 2020-10-20  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_util.adb, sem_util.ads: Comment fix.
+ 
+ 2020-10-20  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch8.adb (Check_Constrained_Object): Suppress discriminant
+ 	checks when the type has default discriminants and comes from
+ 	expansion of a "for of" loop.
+ 
+ 2020-10-20  Bob Duff  <duff@adacore.com>
+ 
+ 	* atree.ads: Make Default_Node a constant.  Remove the
+ 	modification of Comes_From_Source, and use a separate flag for
+ 	that.  Change Sloc to 0; it always overwritten, and never left
+ 	as the No_Location value.
+ 	(Print_Statistics): Move to spec so we can call it from
+ 	gnat1drv.
+ 	(Num_Nodes): Rename to clarify that this is approximate.
+ 	Correct comment: nodes and entities are never deleted, the count
+ 	is never decremented, and this is not used by Xref.
+ 	(Initialize): Correct comment: Error_List is not created here.
+ 	Other minor naming and comment changes.
+ 	* atree.adb (Extend_Node, New_Copy, New_Entity, New_Node):
+ 	Streamline these. Simplify and improve efficiency.  Move code
+ 	from Allocate_Initialize_Node to these, where it can be executed
+ 	unconditionally.  Take advantage of automatic zeroing of the
+ 	Nodes table.
+ 	(Allocate_Initialize_Node): Remove this. It was an efficiency
+ 	bottleneck, and somewhat complicated, because it was called from
+ 	4 places, and had all sorts of conditionals to check where it
+ 	was called from. Better to move most of that code to the call
+ 	sites, where it can be executed (or not) unconditionally.
+ 	(Allocate_New_Node): New procedure to partly replace
+ 	Allocate_Initialize_Node (called from just 2 of those 4 places).
+ 	(Comes_From_Source_Default): New flag written/read by
+ 	Set_Comes_From_Source_Default/Get_Comes_From_Source_Default.
+ 	This allows us to make Default_Node into a constant with
+ 	all-zeros value.
+ 	(Set_Paren_Count_Of_Copy): New procedure to avoid duplicated
+ 	code.
+ 	(Report): New procedure to encapsulate the call to the reporting
+ 	procedure.
+ 	(Atree_Private_Part): We now need a body for this package, to
+ 	contain package body Nodes.
+ 	(Approx_Num_Nodes_And_Entities): Was Num_Nodes.  For efficiency,
+ 	compute the answer from Nodes.Last. That way we don't need to
+ 	increment a counter on every node creation. Other minor naming
+ 	and comment changes.
+ 	* gnat1drv.adb: Call Atree.Print_Statistics if -gnatd.A switch
+ 	was given.  Add comment documenting the new order dependency (we
+ 	must process the command line before calling Atree.Initialize).
+ 	* debug.adb: Document -gnatd.A.
+ 	* einfo.adb, sinfo.adb: Remove useless Style_Checks pragmas.
+ 	* nlists.ads (Allocate_List_Tables): Inline makes node creation
+ 	a little faster.
+ 	* nlists.adb (Initialize): Remove local constant E, which didn't
+ 	seem to add clarity.
+ 	* treepr.adb (Print_Init): Use renamed
+ 	Approx_Num_Nodes_And_Entities function.
+ 	* types.ads: Change the Low and High bounds as described above.
+ 	* types.h: Change Low and High bounds to match types.ads.
+ 	* sem_ch8.adb, namet.adb, namet.ads: Move the computation of
+ 	Last_Name_Id from sem_ch8 to namet, and correct it to not assume
+ 	Name_Ids are positive.
+ 	* ali.adb, ali-util.adb, bindo-writers.adb, exp_dist.adb,
+ 	fmap.adb, fname-uf.adb, osint.adb: Fix various hash functions to
+ 	avoid assuming the various ranges are positive. Note that "mod"
+ 	returns a nonnegative result when the second operand is
+ 	positive. "rem" can return negative values in that case (in
+ 	particular, if the first operand is negative, which it now is).
+ 	* switch-c.adb: Allow switch -gnaten to control the value of
+ 	Nodes_Size_In_Meg.
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ 	Remove traling whitespaces.
+ 	* opt.ads (Nodes_Size_In_Meg): New Variable.
+ 
+ 2020-10-20  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.adb (Remove_Side_Effects): Always generate a renaming
+ 	that is handled by the front-end in the case of an indexed or a
+ 	selected component whose prefix has a nonstandard representation.
+ 
+ 2020-10-20  Pat Rogers  <rogers@adacore.com>
+ 
+ 	* doc/gnat_rm/the_gnat_library.rst: Add Ada.Task_Initialization.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-10-20  Yannick Moy  <moy@adacore.com>
+ 
+ 	* errout.adb: (Error_Msg-Internal): Pass the location for a line
+ 	insertion if any in the message.
+ 	(Output_Messages: Add display of source code lines if -gnatdF is
+ 	set.
+ 	(Write_Source_Code_Line): Code clean up.
+ 	* erroutc.adb (Prescan_Message): Apply prescan for continuation
+ 	lines when -gnatdF is set, and record presence of line
+ 	insertion.
+ 	* erroutc.ads (Has_Insertion_Line): New global for prescan.
+ 	(Error_Msg_Object): Add field to record line insertion if
+ 	present.
+ 	* errutil.adb (Error_Msg): Pass no location for Insertion_Sloc.
+ 
+ 2020-10-20  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_N_Case_Statement): Do not generate
+ 	validity check when possible.
+ 
+ 2020-10-20  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_aggr.adb (Expand_Iterated_Component): Reorganize code to
+ 	ensure that Loop_Id is properly initialized on all paths, and
+ 	remove code duplication.
+ 
+ 2020-10-20  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Subtype_Declaration): Propagate predicate
+ 	function to full view of the created type as well, if it was
+ 	created.
+ 
+ 2020-10-20  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Merge handling of
+ 	Simple_Storage_Pool and Storage_Pool.
+ 
+ 2020-10-20  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* aspects.ads: Introduce Subprogram_Variant aspect with the
+ 	following properties: GNAT-specific, with mandatory expression,
+ 	not a representation aspect, never delayed.
+ 	* contracts.adb (Expand_Subprogram_Contract): Mention new aspect
+ 	in the comment.
+ 	(Add_Contract_Item): Support addition of pragma
+ 	Subprogram_Variant to N_Contract node.
+ 	(Analyze_Entry_Or_Subprogram_Contract): Mention new aspect in
+ 	the comment; add pragma Subprogram_Variant to N_Contract node.
+ 	(Build_Postconditions_Procedure): Adapt call to
+ 	Insert_Before_First_Source_Declaration, which is now reused in
+ 	expansion of new aspect.
+ 	(Process_Contract_Cases_For): Also process Subprogram_Variant,
+ 	which is stored in N_Contract node together with Contract_Cases.
+ 	* contracts.ads (Analyze_Entry_Or_Subprogram_Contract): Mention
+ 	new aspect in the comment.
+ 	(Analyze_Entry_Or_Subprogram_Body_Contract): Likewise.
+ 	* einfo.adb (Get_Pragma): Support retrieval of new pragma.
+ 	* einfo.ads (Get_Pragma): Likewise.
+ 	* exp_ch6.adb (Check_Subprogram_Variant): New routine for
+ 	emitting call to check Subprogram_Variant expressions at run
+ 	time.
+ 	(Expand_Call_Helper): Check Subprogram_Variant expressions at
+ 	recursive calls.
+ 	* exp_prag.adb (Make_Op): Moved from expansion of pragma
+ 	Loop_Variant to Exp_Util, so it is now reused for expansion of
+ 	pragma Subprogram_Variant.
+ 	(Process_Variant): Adapt call to Make_Op after moving it to
+ 	Exp_Util.
+ 	(Expand_Pragma_Subprogram_Variant): New routine.
+ 	* exp_prag.ads (Expand_Pragma_Subprogram_Variant): Likewise.
+ 	* exp_util.adb (Make_Variant_Comparison): Moved from Exp_Prag
+ 	(see above).
+ 	* exp_util.ads (Make_Variant_Comparison): Likewise.
+ 	* inline.adb (Remove_Aspects_And_Pragmas): Handle aspect/pragma
+ 	Subprogram_Variant just like similar contracts.
+ 	* par-prag.adb (Prag): Likewise.
+ 	* sem.adb (Insert_Before_First_Source_Declaration): Moved from
+ 	Contracts (see above).
+ 	* sem.ads (Insert_Before_First_Source_Declaration): Likewise.
+ 	* sem_ch12.adb: Mention new aspect in the comment about
+ 	"Implementation of Generic Contracts", just like similar aspects
+ 	are mentioned there.
+ 	* sem_ch13.adb (Insert_Pragma): Mention new aspect in the
+ 	comment, because this routine is now used for Subprogram_Variant
+ 	just like for other similar aspects.
+ 	(Analyze_Aspect_Specifications): Mention new aspect in comments;
+ 	it is handled just like aspect Contract_Cases.
+ 	(Check_Aspect_At_Freeze_Point): Do not expect aspect
+ 	Subprogram_Variant just like we don't expect aspect
+ 	Contract_Cases.
+ 	* sem_prag.adb (Ensure_Aggregate_Form): Now also used for pragma
+ 	Subprogram_Variant, so update comment.
+ 	(Analyze_Pragma): Add initial checks for pragma
+ 	Subprogram_Variant.
+ 	(Analyze_Subprogram_Variant_In_Decl_Part): New routine with
+ 	secondary checks on the new pragma.
+ 	(Sig_Flags): Handle references within pragma Subprogram_Variant
+ 	expression just like references in similar pragma
+ 	Contract_Cases.
+ 	(Is_Valid_Assertion_Kind): Handle Subprogram_Variant just like
+ 	other similar contracts.
+ 	* sem_prag.ads (Analyze_Subprogram_Variant_In_Decl_Part): New
+ 	routine.
+ 	* sem_res.adb (Same_Or_Aliased_Subprograms): Moved to Sem_Util,
+ 	so it can be reused for detection of recursive calls where
+ 	Subprogram_Variant needs to be verified.
+ 	* sem_util.adb (Is_Subprogram_Contract_Annotation): Handle new
+ 	Subprogram_Variant annotation just like other similar
+ 	annotations.
+ 	(Same_Or_Aliased_Subprograms): Moved from Sem_Res (see above).
+ 	* sem_util.ads (Is_Subprogram_Contract_Annotation): Mention new
+ 	aspect in the comment.
+ 	(Same_Or_Aliased_Subprograms): Moved from Sem_Res (see above).
+ 	* sinfo.ads (N_Contract): Document handling of
+ 	Subprogram_Variant.
+ 	* snames.ads-tmpl: Add name for the internally generated
+ 	procedure with checks for Subprogram_Variant expression, name
+ 	for the new aspect and new pragma corresponding to aspect
+ 	Subprogram_Variant.
+ 
+ 2020-10-20  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_util.ads: Reorder declaration.
+ 
+ 2020-10-19  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* par-ch4.adb: (P_Aggregate_Or_Paren_Expr): Recognize
+ 	Iterated_Element_Component.
+ 	(P_Iterated_Component_Association): Rebuild node as an Iterated_
+ 	Element_Association when Key_Expression is present, and attach
+ 	either the Loop_Parameter_Specification or the
+ 	Iterator_Specification to the new node.
+ 	* sem_aggr.adb: (Resolve_Container_Aggregate):
+ 	Resolve_Iterated_Association handles bota Iterated_Component_
+ 	and Iterated_Element_Associations, in which case it analyzes and
+ 	resoles the orresponding Key_Expression.
+ 	* exp_aggr.adb (Expand_Iterated_Component): If a Key_Expression
+ 	is present, use it as the required parameter in the call to the
+ 	insertion routine for the destination container aggregate. Call
+ 	this routine for both kinds of Iterated_Associations.
+ 
+ 2020-10-19  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_Concatenate): Enable needed range checks.
+ 
+ 2020-10-19  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration):
+ 	Set the Warnings_Off flag on the pointer object used in the
+ 	expansion of iterators and similar.
+ 
+ 2020-10-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* Makefile.rtl (PowerPC/Linux): Use s-taspri__posix.ads instead
+ 	of s-taspri__posix-noaltstack.ads for s-taspri.ads.
+ 
+ 2020-10-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Add_Call): Remove excessive condition and
+ 	unnecessary call to Set_Has_Predicates.
+ 
+ 2020-10-19  Yannick Moy  <moy@adacore.com>
+ 
+ 	* debug.adb: Use debug switch -gnatdF for this alternative
+ 	display of messages.
+ 	* errout.adb (Output_Messages): Alternative display when -gnatdF
+ 	is used.
+ 	* erroutc.adb (Output_Msg_Text): Likewise.
+ 
+ 2020-10-19  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch6.adb (Check_Untagged_Equality): Check for AI12-0352.
+ 
+ 2020-10-19  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch6.adb (Add_View_Conversion_Invariants): Do not insert
+ 	generated invariant checks when the call is a function call.
+ 	These tests are properly inserted in the code in procedure
+ 	Insert_Post_Call_Actions, which takes care of finding the proper
+ 	insertion point for the checks.
+ 	(Insert_Post_Call_Actions): Add question marks to indicate
+ 	possible gap in handling function calls that appear as aggregate
+ 	components.
+ 
+ 2020-10-19  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* contracts.adb (Process_Preconditions_For): Do not exclude
+ 	instances.
+ 	* sem_ch4.adb (Analyze_Quantified_Expression): Disable spurious
+ 	warning on internally generated variables.
+ 
+ 2020-10-19  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* debug.adb: Document -gnatd_c flag as being used for CUDA.
+ 	* gnat_cuda.ads: New file.
+ 	* gnat_cuda.adb: New file.
+ 	* rtsfind.ads: Add Interfaces_C_Strings package and
+ 	RE_Fatbin_Wrapper, RE_Register_Fat_Binary,
+ 	RE_Register_Fat_Binary_End, RE_Register_Function, RE_Chars_Ptr,
+ 	RE_New_Char_Array entities.
+ 	* rtsfind.adb: Create new Interfaces_C_Descendant subtype,
+ 	handle it.
+ 	* sem_ch7.adb (Analyze_Package_Body_Helper): Call CUDA init
+ 	procedure.
+ 	* sem_prag.adb (Analyze_Pragma): Call Add_Cuda_Kernel procedure.
+ 	* gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add gnat_cuda.o.
+ 
+ 2020-10-19  Bob Duff  <duff@adacore.com>
+ 
+ 	* ghost.adb (Whole_Object_Ref): New function to compute the name
+ 	of the whole object.
+ 	(Mark_And_Set_Ghost_Assignment): Rewrite to use
+ 	Whole_Object_Ref.  We need to partly analyze the left-hand side
+ 	in order to distinguish expanded names and record components.
+ 	* lib-xref.ads, lib-xref.adb (Deferred_References): Move table
+ 	to body, and add Defer_Reference to update the table, avoiding
+ 	duplicates.
+ 	(Generate_Reference): Avoid duplicates.
+ 	* sem_ch8.ads, sem_ch8.adb (Find_Direct_Name): Remove _OK
+ 	parameters, which are no longer needed. Ignore errors in
+ 	Ignore_Errors mode.
+ 	* sem_util.ads, sem_util.adb (Preanalyze_Without_Errors): Make
+ 	this public, so we can call it from Ghost.
+ 	* errout.ads, scng.adb, sem_prag.adb: Minor.
+ 
+ 2020-10-19  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Check if type
+ 	depends on discriminant.
+ 
+ 2020-10-19  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/a-coinve.adb, libgnat/a-cidlli.adb (Put_Image): Call
+ 	Iterate.
+ 
+ 2020-10-19  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Record_Aggregate): Properly apply
+ 	subtype constraints when using a Default_Value.
+ 	* freeze.adb: Fix typo.
+ 
+ 2020-10-19  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Fix bug
+ 	where a call to Error_Msg_N leads to crash due to
+ 	Error_Msg_Name_1 being removed by the call, while a subsequent
+ 	call to Error_Msg_N tries to use it. The variable
+ 	Error_Msg_Name_1 should be restored prior to the next call. Also
+ 	add checking for the new rules.
+ 
+ 2020-10-19  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* checks.adb (Apply_Type_Conversion_Checks): Minor code clean
+ 	up.
+ 	* exp_ch4.adb (Discrete_Range_Check): Optimize range checks.
+ 	Update comments.
+ 	(Expand_N_Type_Conversion): Generate range check when rewriting
+ 	a type conversion if needed. Add assertion.
+ 	* exp_ch6.adb (Expand_Simple_Function_Return): Minor code clean
+ 	up.
+ 	* sem_res.adb (Resolve_Type_Conversion): Apply range check when
+ 	needed.  Update comments.
+ 
+ 2020-10-19  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/a-textio.ads: Update top-level comment.
+ 
+ 2020-10-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): Fix typo.
+ 
+ 2020-10-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Actuals): Simplify condition for by-copy
+ 	types.
+ 
+ 2020-10-19  Yannick Moy  <moy@adacore.com>
+ 
+ 	* errout.ads: Add comment regarding lack of preservation of
+ 	Errout state across successive calls to the API.
+ 
+ 2020-10-19  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_put_image.adb (Build_Elementary_Put_Image_Call): Use the
+ 	base type to recognize various cases of access types.
+ 	* libgnat/a-cbdlli.adb, libgnat/a-cbdlli.ads, libgnat/a-cbhama.adb,
+ 	libgnat/a-cbhama.ads, libgnat/a-cbhase.adb, libgnat/a-cbhase.ads,
+ 	libgnat/a-cbmutr.adb, libgnat/a-cbmutr.ads, libgnat/a-cborma.adb,
+ 	libgnat/a-cborma.ads, libgnat/a-cborse.adb, libgnat/a-cborse.ads,
+ 	libgnat/a-cdlili.adb, libgnat/a-cdlili.ads, libgnat/a-cidlli.adb,
+ 	libgnat/a-cidlli.ads, libgnat/a-cihama.adb, libgnat/a-cihama.ads,
+ 	libgnat/a-cihase.adb, libgnat/a-cihase.ads, libgnat/a-cimutr.adb,
+ 	libgnat/a-cimutr.ads, libgnat/a-ciorma.adb, libgnat/a-ciorma.ads,
+ 	libgnat/a-ciormu.adb, libgnat/a-ciormu.ads, libgnat/a-ciorse.adb,
+ 	libgnat/a-ciorse.ads, libgnat/a-coboho.adb, libgnat/a-coboho.ads,
+ 	libgnat/a-cobove.adb, libgnat/a-cobove.ads, libgnat/a-cohama.adb,
+ 	libgnat/a-cohama.ads, libgnat/a-cohase.adb, libgnat/a-cohase.ads,
+ 	libgnat/a-coinho.adb, libgnat/a-coinho.ads,
+ 	libgnat/a-coinho__shared.adb, libgnat/a-coinho__shared.ads,
+ 	libgnat/a-coinve.adb, libgnat/a-coinve.ads, libgnat/a-comutr.adb,
+ 	libgnat/a-comutr.ads, libgnat/a-coorma.adb, libgnat/a-coorma.ads,
+ 	libgnat/a-coormu.adb, libgnat/a-coormu.ads, libgnat/a-coorse.adb,
+ 	libgnat/a-coorse.ads, libgnat/a-strunb.adb, libgnat/a-strunb.ads,
+ 	libgnat/a-strunb__shared.adb, libgnat/a-strunb__shared.ads:
+ 	Implement Put_Image attibute.
+ 	* libgnat/a-stteou.ads, libgnat/s-putima.ads,
+ 	libgnat/a-stouut.ads, libgnat/a-stoubu.adb: Make
+ 	Ada.Strings.Text_Output, Ada.Strings.Text_Output.Utils, and
+ 	System.Put_Images Pure, so they can be with'ed by Pure units
+ 	that should have Put_Image defined.
+ 	* libgnat/a-stouut.adb: Add missing column adjustments, and
+ 	remove a redundant one.
+ 	* libgnat/s-putima.adb (Put_Arrow): New routine to print an
+ 	arrow. Avoids adding a with clause to some containers.
+ 
+ 2020-10-19  Bob Duff  <duff@adacore.com>
+ 
+ 	* par-ch4.adb (P_Aggregate_Or_Paren_Expr): Require matching
+ 	parens or brackets.
+ 	* par.adb, par-tchk.adb (T_Right_Bracket): New procedure to give
+ 	an error on missing ].
+ 
+ 2020-10-19  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch8.adb (Find_Direct_Name): Do not trust in the decoration
+ 	of the Entity attribute in constants associated with
+ 	discriminals of protected types.
+ 
+ 2020-10-19  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_disp.adb (Check_Dispatching_Context): When the enclosing
+ 	subprogram is abstract, bypass early return if the call is
+ 	tag-indeterminate, to continue with the later error checking.
+ 
+ 2020-10-19  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch7.adb (Uninstall_Declarations): Uninstall the
+ 	declaration of a subtype declaration defined in the private part
+ 	of a package.
+ 
+ 2020-10-19  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* par-ch4.adb (P_Aggregate_Or_Paren_Expr): Simplify code since
+ 	we are always under -gnatX if we encounter a Tok_Left_Bracket.
+ 	* scng.adb (Scan): [] is an aggregate under -gnatX and a wide
+ 	character otherwise.
+ 
+ 2020-10-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call_Helper): Cleanup.
+ 
+ 2020-10-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch6.adb (Is_Direct_Deep_Call): Refine type from Node_Id to
+ 	Entity_Id.
+ 
+ 2020-10-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch6.adb (May_Fold): Detect all operators, i.e. both binary
+ 	and unary ones.
+ 
+ 2020-10-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* inline.adb (Expand_Inlined_Call): Simplify repeated calls to
+ 	Nkind.
+ 
+ 2020-10-18  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Compile Ada.Numerics
+ 	child units Aux_Generic_Float, Aux_Long_Long_Float, Aux_Long_Float,
+ 	Aux_Float, Aux_Short_Float, Aux_Compat, and Aux_Linker_Options.
+ 	(X86_TARGET_PAIRS): Drop dummy body for Aux.  Use x86 version
+ 	of Aux_Compat.
+ 	(X86_64_TARGET_PAIRS): Likewise.
+ 	(LIBGNAT_TARGET_PAIRS): On VxWorks, select the nolibm
+ 	variants.  Drop the darwin version of Aux.  Drop the redundant
+ 	libc-x86 numaux variants on x86* kfreebsd variants.
+ 	* libgnat/a-nagefl.ads: New Aux_Generic_Float.
+ 	* libgnat/a-naliop.ads: New Aux_Linker_Options.
+ 	* libgnat/a-naliop__nolibm.ads: New.
+ 	* libgnat/a-nallfl.ads: New Aux_Long_Long_Float.
+ 	* libgnat/a-nalofl.ads: New Aux_Long_Float.
+ 	* libgnat/a-nuaufl.ads: New Aux_Float.
+ 	* libgnat/a-nashfl.ads: New Aux_Short_Float.
+ 	* libgnat/a-ngcefu.adb (Exp): Factor out the Im (X) passed to
+ 	Sin and Cos in the Complex variant too.
+ 	* libgnat/a-ngcoty.adb: Switch to Aux_Generic_Float.  Drop
+ 	redundant conversions.
+ 	* libgnat/a-ngelfu.adb: Likewise.
+ 	* libgnat/a-nuauco.ads: New Aux_Compat.
+ 	* libgnat/a-nuauco__x86.ads: New.
+ 	* libgnat/a-numaux.ads: Replace with Compat wrapper.
+ 	* libgnat/a-numaux__darwin.adb: Remove.
+ 	* libgnat/a-numaux__darwin.ads: Remove.
+ 	* libgnat/a-numaux__dummy.adb: Remove.
+ 	* libgnat/a-numaux__libc-x86.ads: Remove.
+ 	* libgnat/a-numaux__vxworks.ads: Remove.
+ 
+ 2020-10-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* checks.adb, exp_aggr.adb, exp_attr.adb, exp_ch6.adb,
+ 	freeze.adb, sem_aggr.adb, sem_attr.adb, sem_ch13.adb,
+ 	sem_ch13.ads, sem_ch6.adb, sem_eval.adb, sem_util.adb: Fix style
+ 	and typos.
+ 
+ 2020-10-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_cat.adb (Is_Primary): Handle N_Range properly.
+ 
+ 2020-10-16  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* elists.ads (New_Elmt_List): New functions.
+ 	* elists.adb (New_Elmt_List): New functions.
+ 	* exp_prag.adb: Add dependency on Elists.
+ 	(Expand_Pragma_CUDA_Execute): New function.
+ 	(Expand_N_Pragma): Add call to Expand_Pragma_CUDA_Execute.
+ 	* rtsfind.ads: Add CUDA.Internal, CUDA.Runtime, System.C
+ 	packages and RE_Push_Call_Configuration,
+ 	RE_Pop_Call_Configuration, RE_Launch_Kernel, RO_IC_Unsigned,
+ 	RO_IC_Unsigned_Long_Long entities.
+ 	* rtsfind.adb: Extend Interfaces_Descendant to include
+ 	Interfaces_C.
+ 
+ 2020-10-16  Bob Duff  <duff@adacore.com>
+ 
+ 	* par-ch4.adb (P_Name): Allow Tok_Left_Bracket in two places to
+ 	call P_Qualified_Expression. We don't need to modify other
+ 	places that call P_Qualified_Expression, because a
+ 	qualified_expression is a name in Ada 2012 and higher, so P_Name
+ 	is the right place.  The parser already parses aggregates with
+ 	brackets; we just need to allow that in qualified expressions.
+ 
+ 2020-10-16  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch12.adb (Check_Generic_Child_Unit): When the child unit
+ 	is a renaming of a generic child unit then traverse the scope
+ 	containing the renaming declaration to locate the instance of
+ 	its parent.  Otherwise the parent is not installed and the
+ 	frontend cannot process the instantiation.
+ 
+ 2020-10-16  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/a-numeri.ads: Remove the greek letter.
+ 
+ 2020-10-16  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_imgv.adb (Expand_Image_Attribute): Refine previous patch
+ 	to use root type (and not base type) on enumeration types.
+ 
+ 2020-10-16  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_imgv.adb (Expand_Image_Attribute): Use the base type
+ 	instead of the root type when type of object is private. Remove
+ 	Ada_2020 guard, because it has been checked during prior
+ 	analysis. Use Underlying_Type in all cases, as it is a no-op on
+ 	types that are not private.
+ 
+ 2020-10-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* aspects.ads, snames.ads-tmpl: Add support for
+ 	Exclusive_Functions aspect.
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications): Ditto.
+ 	* exp_ch9.adb (Build_Protected_Subprogram_Body): Take aspect
+ 	Exclusive_Functions into account.
+ 
+ 2020-10-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* gcc-interface/Make-lang.in: Update dependencies on system.ads,
+ 	add gnatbind switch -t to avoid timestamp inconsistencies during
+ 	build.
+ 	* libgnat/system.ads: Move...
+ 	* gcc-interface/system.ads: ... here.
+ 
+ 2020-10-16  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_eval.adb (Subtypes_Statically_Match): Retrieve
+ 	discriminant constraints from the two types via new function
+ 	Original_Discriminant_Constraint rather than
+ 	Discriminant_Constraint.
+ 	(Original_Discriminant_Constraint): New function to locate the
+ 	nearest explicit discriminant constraint associated with a type
+ 	that may possibly have inherited a constraint from an ancestor
+ 	type.
+ 
+ 2020-10-16  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Simple_Function_Return): Remove obsolete
+ 	comment and code.
+ 
+ 2020-10-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	PR ada/95953
+ 	* libgnat/a-suenco.adb (Convert): Fix handling of third UTF-8
+ 	byte.
+ 
+ 2020-10-16  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_util.adb (Is_Related_To_Func_Return): Cope with the case
+ 	where the FE introduces a type conversion.
+ 
+ 2020-10-16  Chris Martin  <cmartin@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Is_Access_Variable): New function.
+ 	(Is_Synchronized_Object): Call new function when determining if
+ 	a constant can be regarded as synchronized.
+ 
+ 2020-10-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration):
+ 	Call Set_BIP_Initialization_Call systematically.
+ 	* exp_ch7.adb (Process_Transient_In_Scope): Take
+ 	BIP_Initialization_Call into account to decide where to insert
+ 	the Hook.
+ 
+ 2020-10-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Is_View_Conversion): Detect qualified types.
+ 	* sem_util.ads (Is_Actual_In_Out_Parameter): Fix style in
+ 	comment.
+ 
+ 2020-10-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* scil_ll.adb, sem_scil.adb: Update assertions.
+ 
+ 2020-10-16  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_attr.adb (Min_Max): Handle the case where attribute
+ 	name (qualified by required type) appears as the reducer of a
+ 	'Reduce attribute reference.
+ 	(Resolve_Attribute) <Reduce>: Handle properly the presence of a
+ 	procedure or an attribute reference Min/Max as a reducer.
+ 	* exp_attr.adb (Expand_Attribute_Reference) <Reduce>: New
+ 	subprogram Build_Stat, to construct the combining statement
+ 	which appears in the generated loop for Reduce, and which is
+ 	either a function call when the reducer is a function or an
+ 	attribute, or a procedure call when reducer is an appropriate
+ 	procedure.  BuilD_Stat is used both when the prefix of 'Reduce
+ 	is a value sequence and when it is an object
+ 
+ 2020-10-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_Concatenate): Allocate result of string
+ 	concatenation on secondary stack when relevant.
+ 
+ 2020-10-16  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Declare_Expression): Retrieve the created
+ 	block entity that is the scope of the local declarations, from
+ 	either a local object declaration or an object renaming
+ 	declaration. The block entity does not have an explicit
+ 	declaration, but appears as the scope of all locally declared
+ 	objects.
+ 
+ 2020-10-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/system-aix.ads: Likewise.
+ 	* libgnat/system-darwin-arm.ads: Likewise.
+ 	* libgnat/system-darwin-ppc.ads: Likewise.
+ 	* libgnat/system-darwin-x86.ads: Likewise.
+ 	* libgnat/system-djgpp.ads: Likewise.
+ 	* libgnat/system-dragonfly-x86_64.ads: Likewise.
+ 	* libgnat/system-freebsd.ads: Likewise.
+ 	* libgnat/system-hpux-ia64.ads: Likewise.
+ 	* libgnat/system-hpux.ads: Likewise.
+ 	* libgnat/system-linux-alpha.ads: Likewise.
+ 	* libgnat/system-linux-arm.ads: Likewise.
+ 	* libgnat/system-linux-hppa.ads: Likewise.
+ 	* libgnat/system-linux-ia64.ads: Likewise.
+ 	* libgnat/system-linux-m68k.ads: Likewise.
+ 	* libgnat/system-linux-mips.ads: Likewise.
+ 	* libgnat/system-linux-ppc.ads: Likewise.
+ 	* libgnat/system-linux-riscv.ads: Likewise.
+ 	* libgnat/system-linux-s390.ads: Likewise.
+ 	* libgnat/system-linux-sh4.ads: Likewise.
+ 	* libgnat/system-linux-sparc.ads: Likewise.
+ 	* libgnat/system-linux-x86.ads: Likewise.
+ 	* libgnat/system-lynxos178-ppc.ads: Likewise.
+ 	* libgnat/system-lynxos178-x86.ads: Likewise.
+ 	* libgnat/system-mingw.ads: Likewise.
+ 	* libgnat/system-qnx-aarch64.ads: Likewise.
+ 	* libgnat/system-rtems.ads: Likewise.
+ 	* libgnat/system-solaris-sparc.ads: Likewise.
+ 	* libgnat/system-solaris-x86.ads: Likewise.
+ 	* libgnat/system-vxworks-arm-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-arm-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks-arm.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-vthread.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-ravenscar.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-vthread.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-vthread.ads: Likewise.
+ 	* libgnat/system-vxworks-x86.ads: Likewise.
+ 	* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-aarch64.ads: Likewise.
+ 	* libgnat/system-vxworks7-arm-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-arm.ads: Likewise.
+ 	* libgnat/system-vxworks7-e500-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-e500-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc64-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86_64-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise.
+ 
+ 2020-10-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* Makefile.rtl, gnat1drv.adb, expander.adb
+ 	doc/gnat_rm/implementation_defined_pragmas.rst,
+ 	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
+ 	doc/gnat_ugn/the_gnat_compilation_model.rst, exp_ch5.ads,
+ 	exp_ch5.adb, exp_ch6.adb, exp_ch7.adb, exp_util.adb,
+ 	exp_util.ads, libgnarl/s-osinte__aix.adb,
+ 	libgnarl/s-osinte__android.adb, libgnarl/s-osinte__darwin.adb,
+ 	libgnarl/s-osinte__gnu.adb, libgnarl/s-osinte__hpux-dce.adb,
+ 	libgnarl/s-osinte__lynxos178.adb, libgnarl/s-osinte__posix.adb,
+ 	libgnarl/s-osinte__qnx.adb, libgnarl/s-osinte__rtems.adb,
+ 	libgnarl/s-osinte__solaris.adb, libgnarl/s-osinte__vxworks.adb,
+ 	libgnarl/s-osinte__x32.adb, libgnarl/s-solita.adb,
+ 	libgnarl/s-taasde.adb, libgnarl/s-taprob.adb,
+ 	libgnarl/s-taprop__dummy.adb, libgnarl/s-taprop__hpux-dce.adb,
+ 	libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb,
+ 	libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__qnx.adb,
+ 	libgnarl/s-taprop__solaris.adb, libgnarl/s-taprop__vxworks.adb,
+ 	libgnarl/s-tarest.adb, libgnarl/s-tasini.adb,
+ 	libgnarl/s-taskin.adb, libgnarl/s-taspri__dummy.ads,
+ 	libgnarl/s-taspri__hpux-dce.ads, libgnarl/s-taspri__lynxos.ads,
+ 	libgnarl/s-taspri__mingw.ads,
+ 	libgnarl/s-taspri__posix-noaltstack.ads,
+ 	libgnarl/s-taspri__posix.ads, libgnarl/s-taspri__solaris.ads,
+ 	libgnarl/s-taspri__vxworks.ads, libgnarl/s-tassta.adb,
+ 	libgnarl/s-tasuti.adb, libgnarl/s-tposen.adb,
+ 	libgnat/a-except.adb, libgnat/a-except.ads,
+ 	libgnat/s-dwalin.adb, libgnat/s-dwalin.ads,
+ 	libgnat/s-mastop.ads, libgnat/s-soflin.adb,
+ 	libgnat/s-stalib.adb, libgnat/s-stalib.ads,
+ 	libgnat/s-stchop.adb, libgnat/s-stchop.ads,
+ 	libgnat/s-stchop__limit.ads, libgnat/s-traceb.ads,
+ 	libgnat/s-traent.adb, libgnat/s-traent.ads,
+ 	libgnat/s-trasym.adb, libgnat/s-trasym.ads,
+ 	libgnat/s-trasym__dwarf.adb, opt.adb, opt.ads, par-prag.adb,
+ 	sem_prag.adb, snames.ads-tmpl, switch-c.adb, targparm.adb,
+ 	targparm.ads, usage.adb: Remove support for -gnatP and pragma
+ 	Polling.
+ 	* gnat_ugn.texi: Regenerate.
+ 	* libgnat/a-excpol.adb, libgnat/a-excpol__abort.adb: Removed.
+ 
+ 2020-10-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (Array_Type_Declaration): Create itype with unique
+ 	name.
+ 
+ 2020-10-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Limit scope of a
+ 	local object by hiding it from local subprograms; simplify
+ 	nested if-then-if-then condition for an Ada 83 restriction.
+ 	(Array_Type_Declaration): Confirm with assertion when the else
+ 	branch is executed.
+ 	(Find_Type_Of_Object): Simplify membership test with a subtype
+ 	range.
+ 
+ 2020-10-16  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Global_In_Decl_Part): Update check to
+ 	reject volatile object for reading.
+ 	* sem_res.adb (Resolve_Actuals, Resolve_Entity_Name): Update
+ 	check to reject volatile object for reading.
+ 	* sem_util.adb, sem_util.ads
+ 	(Check_Nonvolatile_Function_Profile,
+ 	Has_Effectively_Volatile_Profile): Detect use of volatile object
+ 	for reading.
+ 	(Has_Enabled_Property): Accept constants as well.
+ 	(Is_Effectively_Volatile_For_Reading): New function based on
+ 	existing Is_Effectively_Volatile.
+ 	(Is_Effectively_Volatile_Object_For_Reading): Adapted from the
+ 	existing Is_Effectively_Volatile_Object, using a shared
+ 	implementation in Is_Effectively_Volatile_Object_Shared.
+ 
+ 2020-10-16  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch7.adb (Check_Unnesting_In_Decls_Or_Stmts): In the case
+ 	of an if-statement, call Unnest_If_Statement to determine
+ 	whether there are nested subprograms in any of the statement
+ 	lists of the "if" parts that require a wrapping procedure to
+ 	handle possible up-level refeferences.
+ 	(Unnest_Block): Call Check_Unnesting_In_Handlers to do unnesting
+ 	of subprograms in exception handlers of the block statement.
+ 	(Unnest_If_Statement): New procedure to traverse the parts of an
+ 	if-statement and create wrapper procedures as needed to
+ 	encapsulate nested subprograms that may make up-level
+ 	references.
+ 	(Check_Stmts_For_Subp_Unnesting): New support procedure in
+ 	Unnest_If_Statement to traverse a statement list looking for
+ 	top-level subprogram bodies that require wrapping inside a
+ 	procedure (via Unnest_Statement_List) as well as possibly having
+ 	other statements (block, loop, if) that may themselves require
+ 	an unnesting transformation (via
+ 	Check_Unnesting_In_Decls_Or_Stmts).
+ 	(Unnest_Statement_List): New support procedure to traverse the
+ 	statements of a statement list that contains subprogram bodies
+ 	at the top level and replace the statement list with a wrapper
+ 	procedure body encapsulating the statements and a call to the
+ 	procedure.
+ 
+ 2020-10-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_prag.adb (Check_OK_Stream_Convert_Function): Check for
+ 	abstract subprograms.
+ 
+ 2020-10-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
+ 	(No_Local_Timing_Events): Package Timing_Events is a child of
+ 	Ada.Real_Time, not of Ada.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-10-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_attributes.rst: Document the
+ 	new Max_Integer_Size attribute.
+ 	* gnat_rm.texi: Regenerate.
+ 	* exp_attr.adb (Get_Integer_Type): Call Small_Integer_Type_For.
+ 	(Expand_N_Attribute_Reference) <Attribute_Pred>: Replace selection
+ 	code with call to Integer_Type_For.
+ 	<Attribute_Succ>: Likewise.
+ 	<Attribute_Val>: Likewise.
+ 	<Attribute_Valid>: Likewise.
+ 	<Attribute_Max_Integer_Size>: Raise Program_Error.
+ 	* exp_ch3.adb (Expand_Freeze_Enumeration_Type): Replace selection
+ 	code with call to Integer_Type_For.
+ 	(Simple_Init_Initialize_Scalars_Type): Use Long_Long_Unsigned and
+ 	System_Max_Integer_Size to size the largest integer type.
+ 	* exp_pakd.adb (Compute_Linear_Subscript): Minor tweak.
+ 	(Create_Packed_Array_Impl_Type): Use Small_Integer_Type_For.
+ 	* exp_util.ads (Integer_Type_For): New function.
+ 	(Small_Integer_Type_For): Likewise.
+ 	* exp_util.adb (Adjust_Condition): Use Integer_Type_For.
+ 	(Component_May_Be_Bit_Aligned): Use System_Max_Integer_Size.
+ 	(Integer_Type_For): New function.
+ 	(Small_Integer_Type_For): Likewise.
+ 	(Matching_Standard_Type): Use Small_Integer_Type_For.
+ 	(Needs_Constant_Address): Replace 64 with System_Max_Integer_Size.
+ 	* freeze.adb (Set_Small_Size): Likewise.
+ 	(Size_Known): Likewise.
+ 	(Check_Suspicious_Modulus): Likewise.
+ 	(Check_Large_Modular_Array): Likewise.
+ 	(Freeze_Entity): Likewise.
+ 	* layout.adb (Layout_Type): Likewise.
+ 	* sem_aggr.adb: Add with and use clauses for Ttypes.
+ 	(Resolve_Aggregate): Replace 64 with System_Max_Integer_Size.
+ 	* sem_attr.ads (Attribute_Impl_Def): Add Attribute_Max_Integer_Size.
+ 	* sem_attr.adb (Analyze_Attribute) <Attribute_Max_Integer_Size>: New
+ 	(Eval_Attribute): Likewise.
+ 	* sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): Change max
+ 	scalar size to System_Max_Integer_Size.
+ 	(Check_Array_Type): Replace 64 with System_Max_Integer_Size and
+ 	remove superfluous test.
+ 	(OK_Component): Likewise.
+ 	* sem_ch5.adb: Add with and use clauses for Ttypes.
+ 	(Analyze_Assignment): Replace 64 with System_Max_Integer_Size.
+ 	* snames.ads-tmpl (Name_Max_Integer_Size): New attribute name.
+ 	(Attribute_Id): Add Attribute_Max_Integer_Size.
+ 	* ttypes.ads (System_Max_Integer_Size): New constant.
+ 
+ 2020-10-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch10.adb (Install_With_Clause): Fix implementation of Ada
+ 	2005 AI-262 by taking into account generic packages.  Minor
+ 	reformatting.
+ 	* libgnat/a-cbhase.ads, libgnat/a-cbhase.adb: Remove use clause
+ 	on runtime unit spec.
+ 
+ 2020-10-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* einfo.ads, einfo.adb (Scope_Depth_Value,
+ 	Set_Scope_Depth_Value): Add assertions on valid nodes and update
+ 	documentation accordingly.
+ 	(Write_Field22_Name): Sync with change in Scope_Depth_Value.
+ 	* sem_ch8.adb (Find_Direct_Name): Fix call to Scope_Depth_Value.
+ 
+ 2020-10-15  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Adding semantic support of
+ 	Standard to Default_Storage_Pool.
+ 	* freeze.adb (Freeze_Entity): If pragma Default_Storage_Pool
+ 	applies and it is set to Standard then use the global pool as
+ 	the associated storage pool of the access type.
+ 
+ 2020-10-15  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch6.ads (Might_Have_Tasks): Update documentation.
+ 	* exp_ch6.adb (Might_Have_Tasks): Return also true when the type
+ 	has tasks.
+ 	(Make_Build_In_Place_Call_In_Allocator): Code cleanup.
+ 	* exp_ch3.adb (Ensure_Activation_Chain_And_Master,
+ 	Expand_N_Full_Type_Declaration, Expand_N_Object_Declaration):
+ 	Code cleanup.
+ 
+ 2020-10-15  Steve Baird  <baird@adacore.com>
+ 
+ 	* checks.adb (Apply_Predicate_Check): Generate "infinite
+ 	recursion" warning message even if run-time predicate checking
+ 	is disabled.
+ 	* exp_ch6.adb (Expand_Simple_Function_Return): In testing
+ 	whether the returned expression is a function call, look for the
+ 	case where the call has been transformed into a dereference of
+ 	an access value that designates the result of a function call.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Legality checking
+ 	for a static expression is unaffected by assertion policy (and,
+ 	in particular, enabling/disabling of subtype predicates.  To get
+ 	the right legality checking, we need to call
+ 	Check_Expression_Against_Static_Predicate for a static
+ 	expression even if predicate checking is disabled for the given
+ 	predicate-bearing subtype.  On the other hand, we don't want to
+ 	call Make_Predicate_Check unless predicate checking is enabled.
+ 	* sem_ch7.adb (Uninstall_Declarations.Preserve_Full_Attributes):
+ 	Preserve the Predicates_Ignored attribute.
+ 	* sem_eval.adb (Check_Expression_Against_Static_Predicate):
+ 	Previously callers ensured that this procedure was only called
+ 	if predicate checking was enabled; that is no longer the case,
+ 	so predicates-disabled case must be handled.
+ 	* sem_prag.adb (Analyze_Pragma): Fix bug in setting
+ 	Predicates_Ignored attribute in Predicate pragma case.
+ 
+ 2020-10-15  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Fixed_Point_Type): Do not scale the bounds
+ 	of a declared subtype using the 'Small of the type;  this is
+ 	done during resolution of the bound itself, unlike what is done
+ 	for the bounds of the base type, which are used to determine its
+ 	required size. Previous code performed this scaling twice,
+ 	leading to meaningless values for such a subtype.
+ 
+ 2020-10-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Bad_Predicated_Subtype_Use): Emit an
+ 	unconditional error, not a conditional warning.
+ 
+ 2020-10-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (Process_Subtype): Combine guards for
+ 	Null_Exclusion_Present in May_Have_Null_Exclusion; use this
+ 	combined guard when checking AI-231.
+ 
+ 2020-10-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (Process_Subtype): Sync May_Have_Null_Exclusion
+ 	with assertion in Null_Exclusion_Present; clarify the scope of
+ 	local variables.
+ 
+ 2020-10-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Subtype_Declaration): Fix style.
+ 	(Make_Index): Refactor to avoid repeated detection of subtype
+ 	indication; add comment.
+ 
+ 2020-10-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Is_Acceptable_Dim3): Use Is_RTE to not pull CUDA
+ 	package unless necessary; rename local Tmp variable; iterate
+ 	with procedural Next.
+ 
+ 2020-10-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (Array_Type_Declaration): Refine type of a local
+ 	variable.
+ 	(Make_Index): Simplify to avoid assignment with a type entity
+ 	and then backtracking by reassigning to Empty; remove excessive
+ 	whitespace.
+ 	* sem_ch9.adb (Analyze_Entry_Body): Remove extra parens.
+ 
+ 2020-10-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (Access_Subprogram_Declaration): Remove extra
+ 	parens.
+ 	(Make_Index): Remove excessive calls to Is_Type.
+ 
+ 2020-10-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.adb (Enter_Name): Remove unnecessary conditions in
+ 	Enter_Name that come from the beginning of times.
+ 
+ 2020-10-15  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Simple_Function_Return): Remove DSP part
+ 	of comment, and reformat.
+ 
+ 2020-10-15  Boris Yakobowski  <yakobowski@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Do not expand
+ 	'Initialized in CodePeer mode.
+ 
+ 2020-10-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch12.adb (Reset_Entity): Protect against malformed tree.
+ 
+ 2020-10-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch13.adb (Add_Predicates): Prevent analyzing twice the
+ 	same pragma in case an inner package references the type with a
+ 	predicate (as opposed to defining the type).
+ 
+ 2020-10-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/a-cfinve.adb (Int): Use subtype of Long_Long_Integer.
+ 	* libgnat/a-cofove.adb (Int): Likewise.
+ 	* libgnat/a-cgcaso.adb (T): Likewise.
+ 	* libgnat/a-cogeso.adb (T): Likewise.
+ 	* libgnat/g-debpoo.ads (Byte_Count): Use Long_Long_Integer'Size.
+ 
+ 2020-10-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch12.adb: Replace list of N_Defining_... enumerations with
+ 	N_Entity.
+ 
+ 2020-10-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.ads, sem_ch3.adb (Make_Index): Refined type of
+ 	parameter.
+ 	(Constrain_Index): Likewise.
+ 	(Array_Type_Declaration): Refine type of a local counter
+ 	variable; remove a trivially useless initialization.
+ 
+ 2020-10-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Subtype_Declaration): Recognize both
+ 	identifiers and expanded names; use high-level Is_Scalar_Type
+ 	instead of low-level membership test.
+ 
+ 2020-10-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_eval.adb (Eval_Intrinsic_Call, Fold_Shift): Add support
+ 	for Shift_Right_Arithmetic and for signed integers.
+ 	* exp_ch4.adb (Expand_N_Op_Rotate_Left,
+ 	Expand_N_Op_Rotate_Right, Expand_N_Op_Shift_Left,
+ 	Expand_N_Op_Shift_Right_Arithmetic): Minor reformatting and code
+ 	cleanup to ensure a consistent handling. Update comments and add
+ 	assertion.
+ 
+ 2020-10-15  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch13.adb (Visible_Component): Enable this code for task
+ 	and protected types, as well as record and private types.
+ 	* sem_ch13.ads (Replace_Type_References_Generic): Update
+ 	comment.  Move the efficiency comment into the body, because
+ 	it's about the implementation.
+ 
+ 2020-10-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* par-ch13.adb (Get_Aspect_Specifications): Generate a warning
+ 	rather than an error on unknown aspects unless -gnatd2 is used.
+ 	(Aspect_Specifications_Present): Improve detection of unknown
+ 	aspects.
+ 	* debug.adb (Debug_Flag_2): Update document.
+ 
+ 2020-10-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Call): Do not try to inline intrinsic
+ 	calls.
+ 
+ 2020-10-15  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_aggr.adb (Expand_N_Aggregate): A record aggregate requires
+ 	a non-private type.
+ 	* sem_ch13.adb (Valid_Assign_Indexed): New subprogram local to
+ 	Resolve_Aspect_Aggregate, to handle the case when the
+ 	corresponding name appearing in the aspect specification for an
+ 	indexed aggregate is an overloaded operation.
+ 	* libgnat/a-convec.ads, libgnat/a-convec.adb,
+ 	libgnat/a-coinve.ads, libgnat/a-coinve.adb,
+ 	libgnat/a-cobove.ads, libgnat/a-cobove.adb,
+ 	libgnat/a-cdlili.ads, libgnat/a-cdlili.adb,
+ 	libgnat/a-cbdlli.ads, libgnat/a-cbdlli.adb,
+ 	libgnat/a-cohama.ads, libgnat/a-cihama.ads,
+ 	libgnat/a-cbhama.ads, libgnat/a-cborma.ads,
+ 	libgnat/a-ciorma.ads, libgnat/a-coorma.ads,
+ 	libgnat/a-cihase.ads, libgnat/a-cohase.ads,
+ 	libgnat/a-cbhase.ads, libgnat/a-cborse.ads,
+ 	libgnat/a-ciorse.ads, libgnat/a-coorse.ads: Add Ada_2020 aspect
+ 	Aggregate to types declared in standard containers, as well as
+ 	new subprograms where required.
+ 
+ 2020-10-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/g-arrspl.ads, libgnat/g-arrspl.adb (Create,
+ 	First_Cursor, Advance, Has_Element): New.
+ 
+ 2020-10-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* Makefile.rtl: Add target pair for interfac.ads.
+ 	* libgnat/interfac.ads: Add a comment.
+ 	* libgnat/interfac__2020.ads: New, used for bootstrap purposes.
+ 	* sem_util.adb (Is_Static_Function): Always return False for pre
+ 	Ada 2020 to e.g. ignore the Static aspect in Interfaces for
+ 	Ada < 2020.
+ 
+ 2020-10-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_util.adb (Remove_Side_Effects): Move special-casing for
+ 	GNATprove to be applied to all object declarations.
+ 
+ 2020-10-12  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* libgnat/a-ngelfu.ads (Sin, Cos): Make the single-argument
+ 	functions inline.
+ 
+ 2020-10-11  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* libgnat/a-numaux.ads: Make all imports Intrinsic.
+ 	* libgnat/a-numaux__darwin.ads: Likewise.
+ 	* libgnat/a-numaux__libc-x86.ads: Likewise.
+ 	* libgnat/a-numaux__vxworks.ads: Likewise.
+ 
+ 2020-09-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Set the end locus
+ 	of body and declaration earlier.
+ 
+ 2020-09-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (maybe_saturate_size): Add ALIGN parameter
+ 	and round down the result to ALIGN.
+ 	(gnat_to_gnu_entity): Adjust calls to maybe_saturate_size.
+ 
+ 2020-09-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc-interface/trans.c (gigi): Adjust build_optimization_node
+ 	caller.
+ 
+ 2020-09-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* fe.h: Fix pilot error in previous change.
+ 	* gcc-interface/gigi.h (enum standard_datatypes): Add ADT_mulv128_decl.
+ 	(mulv128_decl): New macro.
+ 	(get_target_long_long_long_size): Declare.
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): Use a maximum size of
+ 	128 bits for discrete types if Enable_128bit_Types is true.
+ 	* gcc-interface/targtyps.c: Include target.h.
+ 	(get_target_long_long_long_size): New function.
+ 	* gcc-interface/trans.c (gigi): Initialize mulv128_decl if need be.
+ 	(build_binary_op_trapv): Call it for 128-bit multiplication.
+ 	* gcc-interface/utils.c (make_type_from_size): Enforce a maximum
+ 	size of 128 bits if Enable_128bit_Types is true.
+ 
+ 2020-09-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (lvalue_for_aggr_p) <N_Object_Declaration>:
+ 	Return false unconditionally.
+ 
+ 2020-09-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (gnat_to_gnu) <N_Object_Declaration>: Clear
+ 	the SLOC of the expression of a tag.
+ 
+ 2020-09-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Only give
+ 	a warning for the overlay of an aliased array with an unconstrained
+ 	nominal subtype if the address is absolute.
+ 
+ 2020-09-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.c (type_has_variable_size): New function.
+ 	(create_field_decl): In the packed case, also force byte alignment
+ 	when the type of the field has variable size.
+ 
+ 2020-09-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/misc.c (get_array_bit_stride): Return TYPE_ADA_SIZE
+ 	for record and union types.
+ 
+ 2020-09-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/misc.c (gnat_get_fixed_point_type): Bail out only
+ 	when the GNAT encodings are specifically used.
+ 
+ 2020-09-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Only
+ 	create extra subtypes for discriminants if the RM size of the base
+ 	type of the index type is lower than that of the index type.
+ 
+ 2020-09-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (set_rm_size): Do not take into account the
+ 	Value_Size clause if it is not for the entity itself.
+ 
+ 2020-09-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (build_subst_list): For a definition, make
+ 	sure to instantiate the SAVE_EXPRs generated by the elaboration of
+ 	the constraints in front of the elaboration of the type itself.
+ 
+ 2020-09-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/misc.c: Include tree-pass.h.
+ 	(internal_error_function): Call emergency_dump_function.
+ 
+ 2020-09-03  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* fe.h, opt.ads (Enable_128bit_Types): New.
+ 	* stand.ads (Standard_Long_Long_Long_Integer,
+ 	S_Long_Long_Long_Integer): New.
+ 
+ 2020-09-03  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Get_Fullest_View): New procedure.
+ 	* exp_unst.adb (Check Static_Type): Do all processing on fullest
+ 	view of specified type.
+ 
+ 2020-08-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcc-interface/trans.c (gigi): Set exact argument of a vector
+ 	growth function to true.
+ 	(Attribute_to_gnu): Likewise.
+ 
+ 2020-07-27  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* switch.adb (Is_Internal_GCC_Switch): Revert accidental
+ 	reintroduction of auxbase and auxbase-strip.
+ 
+ 2020-07-27  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Actuals): Restrict the check on matching
+ 	aliased components to view conversions of array types that are
+ 	not placed in an instance. In such case at runtime an object is
+ 	created.
+ 	* sem_util.ads (Is_Actual_In_Out_Parameter, Is_View_Conversion):
+ 	New subprograms.
+ 	* sem_util.adb (Is_Actual_In_Out_Parameter, Is_View_Conversion):
+ 	New subprograms.
+ 
+ 2020-07-27  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* lib-xref.adb (Generate_Reference): Protect against malformed
+ 	tree in case of severe errors.
+ 	* sem_ch8.adb (Add_Implicit_Operator): Ditto.
+ 
+ 2020-07-27  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* opt.ads (Ada_Version_Runtime): Set to Ada_2020.
+ 	* sem_ch3.adb (Analyze_Subtype_Declaration): Propagate
+ 	Is_Independent flag to subtypes.
+ 	* libgnarl/s-taprop__linux.adb: Adapt to Ada 2020 warning.
+ 	* libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads,
+ 	libgnat/a-nbnbin__gmp.adb, libgnat/a-nbnbre.adb,
+ 	libgnat/a-nbnbre.ads, libgnat/a-stobbu.adb,
+ 	libgnat/a-stobbu.ads, libgnat/a-stobfi.adb,
+ 	libgnat/a-stobfi.ads, libgnat/a-stoubu.adb,
+ 	libgnat/a-stoubu.ads, libgnat/a-stoufi.adb,
+ 	libgnat/a-stoufi.ads, libgnat/a-stoufo.adb,
+ 	libgnat/a-stoufo.ads, libgnat/a-stouut.adb,
+ 	libgnat/a-stouut.ads, libgnat/a-strsto.ads,
+ 	libgnat/a-ststbo.adb, libgnat/a-ststbo.ads,
+ 	libgnat/a-ststun.adb, libgnat/a-ststun.ads,
+ 	libgnat/a-stteou.ads, libgnat/s-aoinar.ads,
+ 	libgnat/s-aomoar.ads, libgnat/s-atopex.ads,
+ 	libgnat/s-putaim.adb, libgnat/s-putaim.ads,
+ 	libgnat/s-putima.adb, libgnat/s-putima.ads: Remove pragma
+ 	Ada_2020, now redundant.
+ 
+ 2020-07-27  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call_Helper): Modify addition of the extra
+ 	accessibility parameter to take into account the extra
+ 	accessibility of formals within the calling subprogram.
+ 
+ 2020-07-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_imgv.adb (Expand_Image_Attribute): Add Root_Type, so
+ 	constrained subtypes work.
+ 
+ 2020-07-27  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* exp_prag.adb (Arg1, Arg2, Arg3): Removed.
+ 	(Arg_N): New function.
+ 
+ 2020-07-27  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch8.adb (Analyze_Object_Renaming): Allow values in Ada
+ 	2020 mode.
+ 
+ 2020-07-27  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Actuals): Refine 6.4.1 rules as per
+ 	AI12-0377.
+ 
+ 2020-07-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* errout.ads, errout.adb (Error_Msg_Ada_2020_Feature): New
+ 	procedure analogous to Error_Msg_Ada_2012_Feature.
+ 	* sem_attr.adb (Analyze_Image_Attribute): Use
+ 	Error_Msg_Ada_2012_Feature and Error_Msg_Ada_2020_Feature to
+ 	indicate that Object'Image is allowed in Ada 2012, and that
+ 	'Image is allowed for any type in Ada 2020.
+ 
+ 2020-07-27  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* libgnat/a-strunb.adb (Sum, Mul, Saturated_Sum, Saturated_Mul):
+ 	New routines.  Use them when resulting string size more that
+ 	length of the strings in parameters.
+ 	(Unbounded_Slice): Use "- 1" instead of "+ 1" in opposite side
+ 	of condition to avoid overflow.
+ 	* libgnat/a-strunb__shared.adb (Sum, Mul): New routines.
+ 	(Allocate): New routine with 2 parameters.  Use routine above
+ 	when resulting string size more that length of the strings in
+ 	parameters.
+ 	(Aligned_Max_Length): Do not try to align to more than Natural'Last.
+ 	(Unbounded_Slice): Use "- 1" instead of "+ 1" in opposite side
+ 	of condition to avoid overflow.
+ 
+ 2020-07-27  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_attr.adb (Resolve_Attribute): Remove dead code.
+ 
+ 2020-07-27  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* aspects.adb, atree.adb, atree.ads, checks.adb, contracts.adb,
+ 	einfo.adb, errout.adb, exp_aggr.adb, exp_attr.adb, exp_cg.adb,
+ 	exp_ch11.adb, exp_ch2.adb, exp_ch3.adb, exp_ch4.adb,
+ 	exp_ch5.adb, exp_ch6.adb, exp_ch7.adb, exp_ch8.adb, exp_ch9.adb,
+ 	exp_dbug.adb, exp_disp.adb, exp_intr.adb, exp_pakd.adb,
+ 	exp_prag.adb, exp_put_image.adb, exp_smem.adb, exp_tss.adb,
+ 	exp_unst.adb, exp_util.adb, freeze.adb, ghost.adb, gnat1drv.adb,
+ 	inline.adb, lib-writ.adb, lib-xref-spark_specific.adb,
+ 	lib-xref.adb, namet.adb, namet.ads, nlists.adb, par-ch10.adb,
+ 	par-ch2.adb, par-ch3.adb, par-ch4.adb, par-ch5.adb, par-ch6.adb,
+ 	par-prag.adb, par-util.adb, par_sco.adb, pprint.adb,
+ 	repinfo.adb, restrict.adb, rtsfind.adb, scil_ll.adb, sem.adb,
+ 	sem_aggr.adb, sem_attr.adb, sem_aux.adb, sem_cat.adb,
+ 	sem_ch10.adb, sem_ch11.adb, sem_ch12.adb, sem_ch13.adb,
+ 	sem_ch3.adb, sem_ch4.adb, sem_ch5.adb, sem_ch6.adb, sem_ch7.adb,
+ 	sem_ch8.adb, sem_ch9.adb, sem_dim.adb, sem_disp.adb,
+ 	sem_dist.adb, sem_elab.adb, sem_elim.adb, sem_eval.adb,
+ 	sem_intr.adb, sem_mech.adb, sem_prag.adb, sem_res.adb,
+ 	sem_scil.adb, sem_type.adb, sem_util.adb, sem_warn.adb,
+ 	sinfo.adb, sinfo.ads, sprint.adb, styleg.adb, tbuild.adb,
+ 	treepr.adb (Nkind_In, Nam_In, Ekind_In): Removed, replaced by
+ 	membership tests.
+ 
+ 2020-07-27  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma, Pragma_Max_Entry_Queue_Length):
+ 	Refine error message to indicate that the pragma must apply to
+ 	an entry declaration, not just an entry.
+ 
+ 2020-07-27  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch6.adb (Make_Build_In_Place_Iface_Call_In_Allocator):
+ 	Revert previous patch, and add a missing type conversion to
+ 	displace the pointer to the allocated object to reference the
+ 	target dispatch table.
+ 
+ 2020-07-27  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Actuals): Restore restrictive check on
+ 	view conversions which required matching value of
+ 	Has_Aliased_Components of formals and actuals. Required to avoid
+ 	the regression of ACATS b460005.
+ 
+ 2020-07-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch12.adb (Instantiate_Package_Body): Add commentary for a
+ 	nesting issue with parent handling and private view switching.
+ 	(Switch_View): Do not skip specific private-dependent subtypes.
+ 
+ 2020-07-27  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* Makefile.rtl: Remove X86_TARGET_PAIRS for x86-lynx178elf.
+ 
+ 2020-07-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Address_Specification_Clause): Do not
+ 	emit a warning when a constant declaration in a generic unit
+ 	overlays a generic In_Parameter.
+ 
+ 2020-07-27  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch3.adb (Check_Abstract_Overriding): Remove Scope
+ 	comparison test from test related to initial implementation of
+ 	AI12-0042, plus remove the related ??? comment.
+ 	(Derive_Subprogram): Add test requiring that the type extension
+ 	appear in the visible part of its enclosing package when
+ 	checking the overriding requirement of 7.3.2(6.1/4), as
+ 	clarified by AI12-0382.
+ 
+ 2020-07-27  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_N_Attribute_Reference) Extend
+ 	existing workaround to 'Pos.
+ 
+ 2020-07-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/s-rannum.ads, libgnat/s-rannum.adb: Add Put_Image.
+ 	This will be inherited by the language-defined packages
+ 	Ada.Numerics.Discrete_Random and Ada.Numerics.Float_Random.
+ 	* libgnat/a-convec.ads, libgnat/a-convec.adb: Add Put_Image.
+ 	* libgnat/s-putima.ads: Add pragma Preelaborate, so this can be
+ 	imported into containers packages.
+ 	* libgnat/s-putima.adb: Move Digit to private part; otherwise
+ 	reference to Base is illegal in Preelaborate generic.
+ 	* exp_put_image.adb (Build_Record_Put_Image_Procedure): Use the
+ 	base type.
+ 
+ 2020-07-23  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* aspects.ads: Declare CUDA_Global as aspect.
+ 	* einfo.ads: Use Flag118 for the Is_CUDA_Kernel flag.
+ 	(Set_Is_CUDA_Kernel): New function.
+ 	(Is_CUDA_Kernel): New function.
+ 	* einfo.adb (Set_Is_CUDA_Kernel): New function.
+ 	(Is_CUDA_Kernel): New function.
+ 	* par-prag.adb (Prag): Ignore Pragma_CUDA_Execute and
+ 	Pragma_CUDA_global.
+ 	* rtsfind.ads: Define CUDA.Driver_Types.Stream_T and
+ 	CUDA.Vector_Types.Dim3 entities
+ 	* rtsfind.adb: Define CUDA_Descendant subtype.
+ 	(Get_Unit_Name): Handle CUDA_Descendant packages.
+ 	* sem_prag.ads: Mark CUDA_Global as aspect-specifying pragma.
+ 	* sem_prag.adb (Analyze_Pragma): Validate Pragma_CUDA_Execute and
+ 	Pragma_CUDA_Global.
+ 	* snames.ads-tmpl: Define Name_CUDA_Execute and Name_CUDA_Global.
+ 
+ 2020-07-23  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch13.ads (Same_Representation): Renamed as
+ 	Has_Compatible_Representation because now the order of the arguments
+ 	are taken into account; its formals are also renamed as Target_Type
+ 	and Operand_Type.
+ 	* sem_ch13.adb (Same_Representation): Renamed and moved to place the
+ 	routine in alphabetic order.
+ 	* sem_attr.adb (Prefix_With_Safe_Accessibility_Level): New subprogram.
+ 	(Resolve_Attribute): Check that the prefix of attribute Access
+ 	does not have a value conversion of an array type.
+ 	* sem_res.adb (Resolve_Actuals): Remove restrictive check on view
+ 	conversions which required matching value of Has_Aliased_Components of
+ 	formals and actuals.
+ 	* exp_ch4.adb (Handle_Changed_Representation): Update call to
+ 	Same_Representation.
+ 	(Expand_N_Type_Conversion): Update call to Same_Representation.
+ 	* exp_ch5.adb (Change_Of_Representation): Update call to
+ 	Same_Representation.
+ 	* exp_ch6.adb (Add_Call_By_Copy_Code): Update call to
+ 	Same_Representation.
+ 	(Expand_Actuals): Update call to Same_Representation.
+ 	(Expand_Call_Helper): Update call to Same_Representation.
+ 
+ 2020-07-23  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* output.ads (Push_Output, Pop_Output): New procedures.
+ 	* output.adb (FD_Array, FD_Stack, FD_Stack_Idx): New type and vars.
+ 	(Push_Output, Pop_Output): New procedures.
+ 
+ 2020-07-16  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Full_Type_Declaration): Ensure a _master
+ 	declaration on limited types that might have tasks.
+ 	* exp_ch9.adb (Build_Master_Renaming): For private types, if we
+ 	are processing declarations in the private part, ensure that
+ 	master is inserted before its full declaration; otherwise the
+ 	master renaming may be inserted in the public part of the
+ 	package (and hence before the declaration of its _master
+ 	variable).
+ 
+ 2020-07-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming): A renames-as-body
+ 	freezes the expression of any expression function that it
+ 	renames.
+ 
+ 2020-07-16  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Container_Aggregate): Add semantic
+ 	checks for indexed aggregates, including component associations
+ 	and iterated component associations.
+ 	* exp_aggr.adb (Expand_Iterated_Component): New subprogram,
+ 	subsidiary of Expand_Container_Aggreggate, used for positional,
+ 	named, and indexed aggregates.
+ 	(Aggregate_Size): New subprogram to precompute the size of an
+ 	indexed aggregate prior to call to allocate it.
+ 	(Expand_Range_Component): New subprogram so generate loop for a
+ 	component association given by a range or a subtype name in an
+ 	indexed aggregate.
+ 
+ 2020-07-16  Bob Duff  <duff@adacore.com>
+ 
+ 	* bindo-diagnostics.adb (Output_Invocation_Related_Suggestions):
+ 	Use Cumulative_Restrictions.Set, because Restriction_Active only
+ 	works at compile time.
+ 
+ 2020-07-16  Bob Duff  <duff@adacore.com>
+ 
+ 	* gnatbind.adb (Gnatbind): For No_Tasks_Unassigned_To_CPU, check
+ 	that CPU has been set on the main subprogram.
+ 	(Restriction_Could_Be_Set): Don't print
+ 	No_Tasks_Unassigned_To_CPU if it would violate the
+ 	above-mentioned rule. Up to now, all restrictions were checked
+ 	by the compiler, with the binder just checking for consistency.
+ 	But the compiler can't know which subprogram is the main, so
+ 	it's impossible to check this one at compile time.
+ 	* restrict.ads, restrict.adb: Misc refactoring. Change Warning
+ 	to Warn, for consistency, since most already use Warn.
+ 	(Set_Restriction): New convenience routine.
+ 	* sem_ch13.adb (Attribute_CPU): Check
+ 	No_Tasks_Unassigned_To_CPU.
+ 	* sem_prag.adb (Pragma_CPU): Check No_Tasks_Unassigned_To_CPU.
+ 	Misc refactoring.
+ 	* tbuild.ads, tbuild.adb (Sel_Comp): New functions for building
+ 	selected components.
+ 
+ 2020-07-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* impunit.adb (Non_Imp_File_Names_95): Remove duplicate entry.
+ 
+ 2020-07-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* Makefile.rtl: replace a-numaux__x86.ads by
+ 	a-numaux__libc-x86.ads and a-numaux__x86.adb by
+ 	a-numaux__dummy.adb.
+ 	* libgnat/a-numaux__x86.ads, libgnat/a-numaux__x86.adb: Removed.
+ 	* libgnat/a-numaux__dummy.adb: New.
+ 
+ 2020-07-16  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Load_Parent_Of_Generic): If an ancestor is an
+ 	instance whose source appears within a formal package of the
+ 	current unit, there is no body of the ancestor needed to
+ 	complete the current generic compilation.
+ 
+ 2020-07-16  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* libgnat/s-thread__ae653.adb (taskVarAdd): Defunct, so remove.
+ 	(Current_ATSD):  Make it a TLS variable.
+ 	(OK): Move to package scope.
+ 	(System.Storage_Elements): Import and Use.
+ 
+ 2020-07-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch9.adb (Expand_N_Accept_Statement): Set Parent of the
+ 	created block entity to the created block statement.
+ 
+ 2020-07-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* scng.adb (Scan): Detect wide characters not in NFKC.
+ 	* libgnat/a-chahan.adb, libgnat/a-chahan.ads,
+ 	libgnat/a-wichha.adb, libgnat/a-wichha.ads,
+ 	libgnat/a-wichun.adb, libgnat/a-wichun.ads,
+ 	libgnat/a-zchhan.adb, libgnat/a-zchhan.ads,
+ 	libgnat/a-zchuni.adb, libgnat/a-zchuni.ads (Is_NFKC): New.
+ 	* libgnat/s-utf_32.ads, libgnat/s-utf_32.adb (Is_UTF_32_NFKC):
+ 	New.
+ 
+ 2020-07-16  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/s-rident.ads (Restriction_Id): Add
+ 	No_Tasks_Unassigned_To_CPU.
+ 
+ 2020-07-16  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_aggr.adb (Max_Aggregate_Size): Use the small size of 64
+ 	when copying is needed (for example, for the initialization of a
+ 	local variable, and for assignment statements). Use the larger
+ 	size when static allocation can be done without copying.
+ 
+ 2020-07-16  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/s-rident.ads (No_Dynamic_CPU_Assignment): New
+ 	restriction. Add it to all relevant profiles.
+ 	* sem_ch13.adb (Attribute_CPU): Check No_Dynamic_CPU_Assignment
+ 	restriction.
+ 	(Attribute_CPU, Attribute_Dispatching_Domain,
+ 	Attribute_Interrupt_Priority): Remove error checks -- these are
+ 	checked in the parser.
+ 	* sem_prag.adb (Pragma_CPU): Check No_Dynamic_CPU_Assignment
+ 	restriction.  We've got a little violation of DRY here.
+ 	* sem.ads, sem_ch3.ads: Minor comment fix.
+ 
+ 2020-07-16  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch4.adb (Try_Container_Indexing): When the prefix type is
+ 	an access type, change it to the designated type, change the
+ 	prefix to an explicit dereference, and emit a ?d? warning for
+ 	the implicit dereference. Include a ??? comment questioning
+ 	whether this is the right context in which to perform the
+ 	implicit dereferencing.
+ 
+ 2020-07-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch13.adb (Validate_Literal_Aspect): Ensure that the
+ 	parameter is not aliased. Minor reformatting.
+ 	* sem_util.adb (Statically_Names_Object): Update comment.
+ 
+ 2020-07-16  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* sem_case.adb (Build_Choice): Set Is_Static_Expression flag.
+ 	(Lit_Of): Update specification to mention Is_Static_Expression
+ 	flag.
+ 	* sem_ch13.adb (Membership_Entry): Check for N_Others_Choice.
+ 
+ 2020-07-16  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch6.adb (Null_Exclusions_Match): New function to check
+ 	that the null exclusions match, including in the case addressed
+ 	by this AI.
+ 	(Check_Conformance): Remove calls to Comes_From_Source
+ 	when calling Null_Exclusions_Match. These are not
+ 	needed, as indicated by an ancient "???" comment.
+ 
+ 2020-07-16  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Type_Conversion): Remove flawed test for
+ 	whether "statically deeper" accessibility rules apply to a given
+ 	target type and instead use the new routine
+ 	Statically_Deeper_Relation_Applies.
+ 	(Statically_Deeper_Relation_Applies): Created to centralize the
+ 	calculation of whether a target type within a conversion must
+ 	have static accessibility checks.
+ 	* sem_ch13.adb (Check_One_Function): Minor comment revision.
+ 
+ 2020-07-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* fe.h (Is_OK_Static_Expression): Delete.
+ 	* sem_eval.ads (Is_OK_Static_Expression): Remove WARNING note.
+ 
+ 2020-07-16  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* einfo.adb, einfo.ads (Is_Named_Access_Type): Created for
+ 	readability.
+ 	* sem_ch6.adb (Check_Return_Construct_Accessibility): Add
+ 	special cases for formals.
+ 	* sem_util.adb (Object_Access_Level): Add handling of access
+ 	attributes and named access types in the general case.
+ 
+ 2020-07-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_case.adb (Build_Choice): Simplify.
+ 
+ 2020-07-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* frontend.adb: Disable Initialize_Scalars on runtime files.
+ 
+ 2020-07-16  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Add
+ 	Comes_From_Source call.
+ 
+ 2020-07-16  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_Access_To_Protected_Op): Initialize
+ 	variable Sub to Empty to avoid false positive reported by
+ 	Codepeer.
+ 
+ 2020-07-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch8.adb (Note_Redundant_Use): Add missing warning tag.
+ 	Do not check for redundant use clauses in predefined units to avoid
+ 	misleading warnings that may occur as part of a rtsfind load.
+ 
+ 2020-07-16  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_attr.adb (Has_By_Protected_Procedure_Prefixed_View): New
+ 	subprogram.
+ 	(Expand_Access_To_Protected_Op): Adding support for prefixed
+ 	class-wide view with By_Protected_Procedure convention.
+ 	* sem_attr.adb (Get_Convention): New subprogram.
+ 	(Get_Kind): Adapted to use Get_Convention.
+ 	* sem_ch4.adb (Try_By_Protected_Procedure_Prefixed_View): New
+ 	subprogram.
+ 	(Analyze_Selected_Component): Invoke
+ 	Try_By_Protected_Procedure_Prefixed_View.
+ 	* sem_util.ads (Is_By_Protected_Procedure): New subprogram.
+ 	* sem_util.adb (Is_By_Protected_Procedure): New subprogram.
+ 
+ 2020-07-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/s-ststop.ads: Fix typo.
+ 	* libgnat/s-ststop.adb (Read, Write): Fix block number
+ 	computation to avoid overflows in case of large strings.
+ 
+ 2020-07-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/s-genbig.adb ("**"): Remove capacity limit check.
+ 	Improve code by using an extended return.
+ 	(Normalize): Perform capacity limit check here instead which is
+ 	the centralized place where (potentially large) big integers are
+ 	allocated.
+ 
+ 2020-07-16  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Type_Conversion): Handle the case of
+ 	applying an invariant check for a conversion to a class-wide
+ 	type whose root type has a type invariant, when the conversion
+ 	appears within the immediate scope of the type and the
+ 	expression is of a specific tagged type.
+ 	* sem_ch3.adb (Is_Private_Primitive): New function to determine
+ 	whether a primitive subprogram is a private operation.
+ 	(Check_Abstract_Overriding): Enforce the restriction imposed by
+ 	AI12-0042 of requiring overriding of an inherited nonabstract
+ 	private operation when the ancestor has a class-wide type
+ 	invariant and the ancestor's private operation is visible.
+ 	(Derive_Subprogram): Set Requires_Overriding on a subprogram
+ 	inherited from a visible private operation of an ancestor to
+ 	which a Type_Invariant'Class expression applies.
+ 
+ 2020-07-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Find_Overlaid_Entity): Fix style in comment.
+ 	(Note_Possible_Modification): Simplify repeated calls to Ekind.
+ 
+ 2020-07-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb (Flatten): Adjust description.
+ 	(Convert_To_Positional): Remove obsolete ??? comment and use
+ 	Compile_Time_Known_Value in the final test.
+ 
+ 2020-07-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* par-ch4.adb (P_Iterated_Component_Association): Extended to
+ 	recognzize the similar Iterated_Element_Association. This node
+ 	is only generated when an explicit Key_Expression is given.
+ 	Otherwise the distinction between the two iterated forms is done
+ 	during semantic analysis.
+ 	* sinfo.ads: New node N_Iterated_Element_Association, for
+ 	Ada202x container aggregates.  New field Key_Expression.
+ 	* sinfo.adb: Subprograms for new node and newn field.
+ 	* sem_aggr.adb (Resolve_Iterated_Component_Association): Handle
+ 	the case where the Iteration_Scheme is an
+ 	Iterator_Specification.
+ 	* exp_aggr.adb (Wxpand_Iterated_Component): Handle a component
+ 	with an Iterated_Component_Association, generate proper loop
+ 	using given Iterator_Specification.
+ 	* exp_util.adb (Insert_Axtions): Handle new node as other
+ 	aggregate components.
+ 	* sem.adb, sprint.adb: Handle new node.
+ 	* tbuild.adb (Make_Implicit_Loop_Statement): Handle properly a
+ 	loop with an Iterator_ specification.
+ 
+ 2020-07-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/s-stposu.adb (Allocate_Any_Controlled): Fix logic in
+ 	lock/unlock.
+ 
+ 2020-07-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Is_Object_Reference): Return True on
+ 	N_Target_Name.
+ 
+ 2020-07-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Add proper
+ 	handling of Aspect_Predicate_Failure, consistent with
+ 	Check_Aspect_At_Freeze_Point.
+ 
+ 2020-07-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch13.adb (Check_Aspect_Too_Late): Mention -gnat2020 switch
+ 	in error message.
+ 
+ 2020-07-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Delayed Freezing and Elaboration): Adjust description.
+ 	* freeze.adb (Freeze_Object_Declaration): Likewise.
+ 	* sem_ch3.adb (Delayed_Aspect_Present): Likewise.  Do not return
+ 	true for Alignment.
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications): Do not always delay
+ 	for Alignment.  Moreover, for Alignment and various Size aspects,
+ 	do not delay if the expression is an attribute whose prefix is the
+ 	Standard package.
+ 
+ 2020-07-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Requires_Atomic_Or_Volatile_Copy): Return false
+ 	inside an initialization procedure.
+ 
+ 2020-07-15  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* sem_util.adb (Is_Renaming): Add ekind checks.
+ 
+ 2020-07-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_utility_programs.rst: Remove doc on obsolete
+ 	tools.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2020-07-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Type_Conversion): Protect against null
+ 	entity.  Add proper tag for -gnatwr warning.
+ 
+ 2020-07-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Procedure_Call): Detect use of operators
+ 	in a procedure call.
+ 	* sem_util.adb: Minor edit.
+ 
+ 2020-07-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_Delta_Or_Update): Apply scalar
+ 	range checks against the base type of an index type, not against
+ 	the index type itself.
+ 
+ 2020-07-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Delayed Freezing and Elaboration): Minor tweaks.
+ 	Document the discrepancy between the aspect and the non-aspect
+ 	cases for alignment settings in object declarations.
+ 
+ 2020-07-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch3.adb (Freeze_Type): Remove warning in expander,
+ 	replaced by a corresponding error in sem_ch13.adb. Replace
+ 	RTE_Available by RTU_Loaded to avoid adding unnecessary
+ 	dependencies.
+ 	* sem_ch13.adb (Associate_Storage_Pool): New procedure.
+ 	(Analyze_Attribute_Definition_Clause
+ 	[Attribute_Simple_Storage_Pool| Attribute_Storage_Pool]): Call
+ 	Associate_Storage_Pool to add proper legality checks on
+ 	subpools.
+ 
+ 2020-07-15  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/a-cbdlli.adb, libgnat/a-cbdlli.ads,
+ 	libgnat/a-cbhama.adb, libgnat/a-cbhama.ads,
+ 	libgnat/a-cbhase.adb, libgnat/a-cbhase.ads,
+ 	libgnat/a-cbmutr.adb, libgnat/a-cbmutr.ads,
+ 	libgnat/a-cborma.adb, libgnat/a-cborma.ads,
+ 	libgnat/a-cborse.adb, libgnat/a-cborse.ads,
+ 	libgnat/a-cbprqu.adb, libgnat/a-cbprqu.ads,
+ 	libgnat/a-cbsyqu.adb, libgnat/a-cbsyqu.ads,
+ 	libgnat/a-cdlili.adb, libgnat/a-cdlili.ads,
+ 	libgnat/a-cidlli.adb, libgnat/a-cidlli.ads,
+ 	libgnat/a-cihama.adb, libgnat/a-cihama.ads,
+ 	libgnat/a-cihase.adb, libgnat/a-cihase.ads,
+ 	libgnat/a-cimutr.adb, libgnat/a-cimutr.ads,
+ 	libgnat/a-ciorma.adb, libgnat/a-ciorma.ads,
+ 	libgnat/a-ciormu.adb, libgnat/a-ciormu.ads,
+ 	libgnat/a-ciorse.adb, libgnat/a-ciorse.ads,
+ 	libgnat/a-cohama.adb, libgnat/a-cohama.ads,
+ 	libgnat/a-cohase.adb, libgnat/a-cohase.ads,
+ 	libgnat/a-coinve.adb, libgnat/a-coinve.ads,
+ 	libgnat/a-comutr.adb, libgnat/a-comutr.ads,
+ 	libgnat/a-convec.adb, libgnat/a-convec.ads,
+ 	libgnat/a-coorma.adb, libgnat/a-coorma.ads,
+ 	libgnat/a-coormu.adb, libgnat/a-coormu.ads,
+ 	libgnat/a-coorse.adb, libgnat/a-coorse.ads: Add SPARK_Mode =>
+ 	Off.
+ 
+ 2020-07-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Delayed_Aspect_Present): Fix oversight in loop.
+ 	* freeze.adb (Freeze_Object_Declaration): Use Declaration_Node
+ 	instead of Parent for the sake of consistency.
+ 
+ 2020-07-15  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_attr.adb (Resolve_Attribute): Resolve overloaded
+ 	N_Selected_Component prefix of 'Access. Required to handle
+ 	overloaded prefixed view of protected subprograms.
+ 
+ 2020-07-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* doc/gnat_ugn/about_this_guide.rst: Remove old section and
+ 	update for Ada 202x.
+ 	* doc/gnat_ugn/getting_started_with_gnat.rst: Add a system
+ 	requirements section. Remove obsolete section and minimal
+ 	rewording on the getting started section.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2020-07-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_Assign_Array): Use short-circuit operator
+ 	(style).
+ 	* sem_res.adb (Resolve_Indexed_Component): Fix style in comment.
+ 	* sem_util.adb (Is_Effectively_Volatile_Object): Handle slices
+ 	just like indexed components; handle qualified expressions and
+ 	type conversions lie in Is_OK_Volatile_Context.
+ 	(Is_OK_Volatile_Context): Handle qualified expressions just like
+ 	type conversions.
+ 
+ 2020-07-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Atomic_Components): Simplify with Ekind_In.
+ 	(Complex_Representation): Fix type of E_Id, which just like when
+ 	for pragma Atomic_Components will hold an N_Identifier node, not
+ 	an entity.
+ 	* sem_util.adb (Is_Effectively_Volatile): Refactor to avoid
+ 	unnecessary computation.
+ 
+ 2020-07-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* inline.adb, inline.ads
+ 	(Inline_Static_Expression_Function_Call): Renamed
+ 	Inline_Static_Function_Call.
+ 	* sem_ch13.adb (Analyze_Aspect_Static): Allow static intrinsic
+ 	imported functions under -gnatX.
+ 	* sem_util.ads, sem_util.adb (Is_Static_Expression_Function):
+ 	Renamed Is_Static_Function.
+ 	(Is_Static_Expression_Function_Call): Renamed
+ 	Is_Static_Function_Call.
+ 	* sem_ch6.adb, sem_elab.adb, sem_res.adb: Update calls to
+ 	Is_Static_Function*.
+ 	* sem_eval.adb (Fold_Dummy, Eval_Intrinsic_Call, Fold_Shift):
+ 	New.
+ 	(Eval_Call): Add support for intrinsic calls, code refactoring.
+ 	(Eval_Entity_Name): Code refactoring.
+ 	(Eval_Logical_Op): Update comment.
+ 	(Eval_Shift): Call Fold_Shift. Update comments.
+ 	* par-prag.adb (Par [Pragma_Extensions_Allowed]): Set
+ 	Ada_Version to Ada_Version_Type'Last to handle
+ 	Extensions_Allowed (On) consistently.
+ 	* opt.ads (Extensions_Allowed): Update documentation.
+ 	* sem_attr.adb: Update comment.
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst: Update
+ 	documentation of Extensions_Allowed.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-07-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Iterated_Component_Association): Ensure
+ 	Typ is never accessed uninitialized.
+ 
+ 2020-07-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/representation_clauses_and_pragmas.rst: Fix typo.
+ 	* gnat_rm.texi: Regenerate.
+ 	* libgnat/s-secsta.ads (Memory_Alignment): Likewise.
+ 
+ 2020-07-15  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch6.adb: Add a comma and fix a typo (machinary =>
+ 	machinery) in comment.
+ 	* exp_aggr.adb: Reformat, fix capitalization, and add a couple
+ 	of commas in a comment. Adjust columns in several code
+ 	fragments.
+ 	* sem_aggr.adb: Reformat and add a comma in a comment.
+ 
+ 2020-07-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch9.adb (Expand_N_Timed_Entry_Call): Use the Sloc of
+ 	the delay statement in the expansion.
+ 
+ 2020-07-15  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Iterated_Component_Association): New
+ 	procedure, internal to Resolve_Container_Aggregate, to complete
+ 	semantic analysis of Iterated_Component_Associations.
+ 	* exp_aggr.adb (Expand_Iterated_Component): New procedure,
+ 	internal to Expand_Container_Aggregate, to expand the construct
+ 	into an implicit loop that performs individual insertions into
+ 	the target aggregate.
+ 
+ 2020-07-15  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch6.adb (Make_Build_In_Place_Call_Allocator): Normalize
+ 	the associated node for internally generated objects to be like
+ 	their SOAAT counter-parts.
+ 
+ 2020-07-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/g-socket.adb (Wait_On_Socket): Fix potentially
+ 	uninitialized variable.
+ 
+ 2020-07-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch8.adb (Find_Direct_Name): Fix code to match the comment.
+ 
+ 2020-07-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause) <Address>:
+ 	Issue an unconditional warning for an overlay that changes the
+ 	scalar storage order.
+ 
+ 2020-07-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch8.adb (Is_Actual_Parameter): Fix processing when parent
+ 	is a procedure call statement; extend comment.
+ 
+ 2020-07-10  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Expression_With_Actions): Check the rules
+ 	of AI12-0368, and mark the declare expression as static or known
+ 	at compile time as appropriate.
+ 	* sem_ch4.adb: Minor reformatting.
+ 	* libgnat/a-stoufo.ads, libgnat/a-stoufo.adb: Allow up to 9
+ 	replacement parameters. I'm planning to use this in the test
+ 	case for this ticket.
+ 
+ 2020-07-10  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Create a
+ 	proper signature when the access type denotes a parameterless
+ 	subprogram.
+ 	* exp_ch6.adb (Expand_Call): Handle properly a  parameterless
+ 	indirect call when the corresponding access type has contracts.
+ 
+ 2020-07-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb
+ 	(Convert_To_Positional): Add Dims local variable
+ 	and pass it in calls to Is_Flat and Flatten.
+ 	(Check_Static_Components): Pass Dims in call to
+ 	Is_Static_Element.
+ 	(Nonflattenable_Next_Aggr): New predicate.
+ 	(Flatten): Add Dims parameter and Expr local variable.  Call
+ 	Nonflattenable_Next_Aggr in a couple of places.  In the case
+ 	when an Others choice is present, check that the element is
+ 	either static or a nested aggregate that can be flattened,
+ 	before disregarding the replication limit for elaboration
+ 	purposes.  Check that a nested array is flattenable in the case
+ 	of a multidimensional array in any position.  Remove redundant
+ 	check in the Others case and pass Dims in call to
+ 	Is_Static_Element.  Use Expr variable.
+ 	(Is_Flat): Change type of Dims parameter from Int to Nat.
+ 	(Is_Static_Element): Add Dims parameter.  Replace tests on
+ 	literals with call to Compile_Time_Known_Value.  If everything
+ 	else failed and the dimension is 1, preanalyze the expression
+ 	before calling again Compile_Time_Known_Value on it.  Return
+ 	true for null.
+ 	(Late_Expansion): Do not expand further if the assignment to the
+ 	target can be done directly by the back end.
+ 
+ 2020-07-10  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* osint-c.adb (Set_File_Name): Preserve casing of file.
+ 	* osint.adb (File_Names_Equal): New.
+ 	(Executable_Name): Use File_Equal instead of
+ 	Canonical_Case_File_Name.
+ 
+ 2020-07-10  Pascal Obry  <obry@adacore.com>
+ 
+ 	* libgnat/g-socket.adb (Wait_On_Socket): Fix memory leaks and
+ 	file descriptor leaks.  A memory leak was created each time the
+ 	routine was called without a selector (Selector = Null). Also,
+ 	in case of exception in the routine a memory leak and descriptor
+ 	leak was created as the created file selector was not closed.
+ 
+ 2020-07-10  Pascal Obry  <obry@adacore.com>
+ 
+ 	* libgnat/g-socket.adb: Minor style fixes.
+ 
+ 2020-07-10  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_util.adb
+ 	(Immediate_Context_Implies_Is_Potentially_Unevaluated): New
+ 	subprogram.
+ 	(Is_Potentially_Unevaluated): Do not stop climbing the tree on
+ 	the first candidate subexpression; required to handle nested
+ 	expressions.
+ 
+ 2020-07-10  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_aggr.adb, exp_spark.adb, sem_ch13.ads, sem_ch13.adb,
+ 	snames.ads-tmpl: Minor reformatting and typo fixes.
+ 
+ 2020-07-10  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_util.adb (Has_Enabled_Property): Add handling of
+ 	non-variable objects.
+ 
+ 2020-07-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (Check_Completion): Refactor chained
+ 	if-then-elsif-...  statement to be more like a case
+ 	statement (note: we can't simply use case statement because of
+ 	Is_Intrinsic_Subprogram in the first condition).
+ 
+ 2020-07-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* einfo.ads (E_Protected_Object): Enumeration literal removed.
+ 	* lib-xref.ads (Xref_Entity_Letters): Remove reference to
+ 	removed literal.
+ 	* sem_ch3.adb (Check_Completion): Likewise.
+ 	* sem_util.adb (Has_Enabled_Property): Likewise.
+ 
+ 2020-07-10  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_aggr.adb (Max_Aggregate_Size): Use small limit for
+ 	aggregate inside subprograms.
+ 	* sprint.adb (Sprint_Node_Actual [N_Object_Declaration]): Do not
+ 	print the initialization expression if the No_Initialization
+ 	flag is set.
+ 	* sem_util.ads, sem_util.adb (Predicate_Enabled): New.
+ 	* exp_ch4.adb (Expand_N_Type_Conversion): Code cleanup and apply
+ 	predicate check consistently.
+ 	* exp_ch6.adb (Expand_Actuals.By_Ref_Predicate_Check): Ditto.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Ditto.
+ 	* exp_ch3.adb (Build_Assignment): Revert handling of predicate
+ 	check for allocators with qualified expressions, now handled in
+ 	Freeze_Expression directly.
+ 	* sem_aggr.adb: Fix typos.
+ 	* checks.adb: Code refactoring: use Predicate_Enabled.
+ 	(Apply_Predicate_Check): Code cleanup.
+ 	* freeze.adb (Freeze_Expression): Freeze the subtype mark before
+ 	a qualified expression on an allocator.
+ 	* exp_util.ads, exp_util.adb (Within_Internal_Subprogram):
+ 	Renamed Predicate_Check_In_Scope to clarify usage, refine
+ 	handling of predicates within init procs which should be enabled
+ 	when the node comes from source.
+ 	* sem_ch13.adb (Freeze_Entity_Checks): Update call to
+ 	Predicate_Check_In_Scope.
+ 
+ 2020-07-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_Array_Comparison): Reformat.
+ 	(Expand_Concatenate): Use standard size values directly and use
+ 	Standard_Long_Long_Unsigned instead of RE_Long_Long_Unsigned.
+ 	(Expand_Modular_Op): Use Standard_Long_Long_Integer in case the
+ 	modulus is larger than Integer.
+ 	(Expand_N_Op_Expon): Use standard size value directly.
+ 	(Narrow_Large_Operation): Use Uint instead of Nat for sizes and
+ 	use a local variable for the size of the type.
+ 	(Get_Size_For_Range): Return Uint instead of Nat.
+ 	(Is_OK_For_Range): Take Uint instead of Nat.
+ 
+ 2020-07-10  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch6.adb (Make_Build_In_Place_Iface_Call_In_Allocator):
+ 	Build the internal anonymous access type using as a reference
+ 	the designated type imposed by the context (instead of using the
+ 	return type of the called function).
+ 
+ 2020-07-10  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Actuals): Protect call to
+ 	Is_Valued_Procedure.
+ 
+ 2020-07-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (Process_Discriminants): Revert recent change to
+ 	location of Set_Ekind; detect effectively volatile discriminants
+ 	by their type only.
+ 
+ 2020-07-10  Joffrey Huguet  <huguet@adacore.com>
+ 
+ 	* libgnat/a-nbnbin.ads, libgnat/a-nbnbre.ads: Add global
+ 	contract (Global => null) to all functions.
+ 
+ 2020-07-10  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* aspects.ads: Add Aspect_Aggregate.
+ 	* exp_aggr.adb (Expand_Container_Aggregate): Expand positional
+ 	container aggregates into separate initialization and insertion
+ 	operations.
+ 	* sem_aggr.ads (Resolve_Container_Aggregate): New subprogram.
+ 	* sem_aggr.adb (Resolve_Container_Aggregate): Parse aspect
+ 	aggregate, establish element types and key types if present, and
+ 	resolve aggregate components.
+ 	* sem_ch13.ads (Parse_Aspect_Aggregate): Public subprogram used
+ 	in validation, resolution and expansion of container aggregates
+ 	* sem_ch13.adb
+ 	(Parse_Aspect_Aggregate): Retrieve names of primitives specified
+ 	in aspect specification.
+ 	(Validate_Aspect_Aggregate): Check legality of specified
+ 	operations given in aspect specification, before nane
+ 	resolution.
+ 	(Resolve_Aspect_Aggregate): At freeze point resolve operations
+ 	and verify that given operations have the required profile.
+ 	* sem_res.adb (Resolve): Call Resolve_Aspect_Aggregate if aspect
+ 	is present for type.
+ 	* snames.ads-tmpl: Add names used in aspect Aggregate: Empty,
+ 	Add_Named, Add_Unnamed, New_Indexed, Assign_Indexed.
+ 
+ 2020-07-10  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-shabig.o.
+ 	* libgnat/s-shabig.ads: New file to share definitions.
+ 	* libgnat/s-genbig.ads, libgnat/s-genbig.adb: Reorganized to
+ 	make it more generic and flexible in terms of memory allocation
+ 	and data structure returned.
+ 	(To_String): Moved to System.Generic_Bignums to allow sharing
+ 	this code.
+ 	(Big_And, Big_Or, Big_Shift_Left, Big_Shift_Right): New.
+ 	* libgnat/s-bignum.adb, libgnat/s-bignum.ads: Adapt to new
+ 	System.Generic_Bignums spec.
+ 	* libgnat/a-nbnbin.adb: Likewise.
+ 	(To_String): Moved to System.Generic_Bignums to allow sharing
+ 	this code.
+ 	* libgnat/a-nbnbre.adb (Normalize): Fix handling of Num = 0
+ 	leading to an exception.
+ 
+ 2020-07-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Expr_Types): Replace call to Find_Aspect
+ 	with call to Find_Value_Of_Aspect and adjust accordingly.
+ 
+ 2020-07-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.adb (Write_Field24_Name): Handle E_Loop_Parameter.
+ 	* freeze.adb (Freeze_Expr_Types): Freeze the iterator type used as
+ 	Default_Iterator of the name of an N_Iterator_Specification node.
+ 
+ 2020-07-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.adb (Determine_Range): Deal with Min and Max attributes.
+ 	* exp_ch6.adb (Expand_Call_Helper): When generating code to pass
+ 	the accessibility level to the caller in the case of an actual
+ 	which is an if-expression, also remove the nodes created after
+ 	the declaration of the dummy temporary.
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Use Natural as
+ 	the type of the minimum accessibility level object.
+ 
+ 2020-07-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (Process_Discriminants): Set Ekind of the
+ 	processed discriminant entity before passing to
+ 	Is_Effectively_Volatile, which was crashing on a failed
+ 	assertion.
+ 	* sem_prag.adb (Analyze_External_Property_In_Decl_Part): Prevent
+ 	call to No_Caching_Enabled with entities other than variables,
+ 	which was crashing on a failed assertion.
+ 	(Analyze_Pragma): Style cleanups.
+ 	* sem_util.adb (Is_Effectively_Volatile): Enforce comment with
+ 	an assertion; prevent call to No_Caching_Enabled with entities
+ 	other than variables.
+ 	(Is_Effectively_Volatile_Object): Only call
+ 	Is_Effectively_Volatile on objects, not on types.
+ 	(No_Caching_Enabled): Enforce comment with an assertion.
+ 
+ 2020-07-10  Yannick Moy  <moy@adacore.com>
+ 
+ 	* debug.adb: Update comments to free usage of -gnatdF.
+ 
+ 2020-07-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_Delta_Or_Update): Refactored from
+ 	Expand_SPARK_N_Attribute_Reference; rewrite into N_Aggregate or
+ 	N_Delta_Aggregate depending on what is being rewritten.
+ 	(Expand_SPARK_N_Delta_Aggregate): New routine to expand
+ 	delta_aggregate.
+ 	(Expand_SPARK_N_Attribute_Reference): Call the refactored
+ 	routine.
+ 
+ 2020-07-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Fix
+ 	expansion of attribute Update.
+ 
+ 2020-07-10  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem.adb (Walk_Library_Items): Fix handling of Ghost units.
+ 
+ 2020-07-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tracebak.c [generic implementation]: Add pragma GCC diagnostic
+ 	to disable warning about __builtin_frame_address.
+ 
+ 2020-07-08  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* socket.c [_WIN32] (__gnat_minus_500ms): Parentheses around &&
+ 	operations.  Remove notes about TN in comment.
+ 
+ 2020-07-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* adaint.h (__gnat_expect_portable_execvp): Fix prototype.
+ 	(__gnat_expect_poll): Likewise.
+ 	* expect.c [_WIN32]: Include adaint.h file.
+ 	(__gnat_waitpid): Remove useless variable.
+ 	(__gnat_expect_portable_execvp): Add ATTRIBUTE_UNUSED on parameter.
+ 	* raise-gcc.c [SEH] (__gnat_personality_v0): Add ATTRIBUTE_UNUSED.
+ 	* socket.c [_WIN32] (__gnat_getservbyport): Add ATTRIBUTE_UNUSED on
+ 	a couple of parameters.
+ 	(__gnat_gethostbyname): Likewise.
+ 	(__gnat_gethostbyaddr): Likewise.
+ 	(__gnat_getservbyname): Likewise.
+ 	(__gnat_last_socket_in_set): Use variables local to loops.
+ 	(__gnat_socket_ioctl): Cast 3rd parameter to proper type if _WIN32.
+ 	(__gnat_inet_pton): Cast 2nd parameter to proper type if _WIN32.
+ 	* sysdep.c (__gnat_localtime_tzoff): Remove superfluous test.
+ 	* terminals.c [_WIN32]: Include io.h file.
+ 	(is_gui_app): Remove useless variables and fix unsigned comparison.
+ 	(nt_spawnve): Add ATTRIBUTE_UNUSED on first parameter.  Initialize a
+ 	local variable and remove others that are useless.  Add missing cast
+ 	(__gnat_setup_child_communication): Remove useless variable and call
+ 	Use proper formatting string in call to sprintf.
+ 	(__gnat_setup_parent_communication): Cast to proper type.
+ 	(find_child_console): Fix prototype and remove useless variable.
+ 	(find_process_handle): Likewise.
+ 	(_gnat_interrupt_process): Move to after __gnat_interrupt_pid.
+ 	(__gnat_reset_tty): Add ATTRIBUTE_UNUSED on parameter, remove return
+ 	(__gnat_setup_winsize): Add ATTRIBUTE_UNUSED on all parameters.
+ 
+ 2020-07-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Allocator): In the subtype mark case, do
+ 	not apply constraint checks if the No_Initialization flag is set.
+ 
+ 2020-07-08  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch9.adb
+ 	(Build_Class_Wide_Master): Insert the declaration of _Master
+ 	before its use; required to avoid assertion failure in the
+ 	backend.
+ 
+ 2020-07-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/i-cexten.ads (long_long, unsigned_long_long): Now
+ 	subtypes of Interfaces.C types.
+ 	* libgnat/a-calcon.ads, libgnat/a-calcon.adb
+ 	(To_Unix_Nano_Time): Use Interfaces.C.long_long instead of
+ 	Interfaces.C.Extensions.long_long.
+ 
+ 2020-07-08  Vasiliy Fofanov  <fofanov@adacore.com>
+ 
+ 	* debug.adb: Document new switch.
+ 	* exp_ch6.adb (Warn_BIP): New function that warns if the switch
+ 	is on.  Call it from Make_Build_In_Place_* functions.  Warn_BIP
+ 	is not needed in Make_Build_In_Place_Iface_*, because those call
+ 	Make_Build_In_Place_Call_In_Object_Declaration or similar.
+ 
+ 2020-07-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* erroutc.adb (Matches): Fix comments.
+ 
+ 2020-07-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.adb (Has_Decl_In_List): New predicate to check that an
+ 	entity is declared in a list of nodes.
+ 	(Freeze_Expression): Use it to deal with Expression_With_Actions,
+ 	short-circuit expression, if- and case-expression and ensure that
+ 	the freeze node is put onto their Actions list if the entity is
+ 	declared locally.
+ 
+ 2020-07-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.adb (In_Expanded_Body): Return true for the body of a
+ 	generated predicate function.
+ 
+ 2020-07-08  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_attr.adb: Remove hyphens in comments, plus minor code
+ 	reformatting.
+ 	* sem_ch13.adb: Fix typo (that => than).
+ 	* sem_util.adb: Add hyphen in comment ("class-wide").
+ 
+ 2020-07-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Array_Type): Add comment on implementation
+ 	choice for byte-packed array types.
+ 
+ 2020-07-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Correct prefix of 'Result
+ 	this prefix is a generic function but the enclosing aspect or
+ 	pragma is attached to its instance.
+ 	* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Analyze
+ 	generic subprogram formal parameters (including the implicit
+ 	result of a generic function) and only then analyse its aspects,
+ 	because with Relaxed_Initialization the aspect expression might
+ 	refer to those formal parameters.
+ 	* sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Accept
+ 	aspect on generic subprograms; install formal parameters of a
+ 	generic subprogram but not formal parameters of the generic unit
+ 	itself (the previous code was inspired by aspects Post and
+ 	Depends, where both kinds of formals are allowed).
+ 	* sem_util.ads (Enter_Name): Fix name of a subprogram referenced
+ 	in comment.
+ 
+ 2020-07-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Call
+ 	Analyze_Aspect_Specifications after setting Ekind of the
+ 	analyzed entity.
+ 	* sem_ch13.adb (Analyze_Aspect_Yield): Remove minimal decoration
+ 	of generic subprograms.
+ 
+ 2020-07-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_prag.adb (Process_Inline): Check for duplicate
+ 	pragma+aspect Inline. Minor code cleanup.
+ 	(Check_Duplicate_Pragma): Add warning for duplicate
+ 	pragma [No_]Inline under -gnatwr.
+ 	* sinfo.ads, sinfo.adb (Next_Rep_Item): Allow N_Null_Statement
+ 	which can appear when a pragma is rewritten.
+ 	* sem_util.ads, sem_util.adb, bindo-writers.adb: Fix bad
+ 	copy/paste now flagged.
+ 	* libgnat/s-mmap.ads: Remove redundant pragma Inline.
+ 
+ 2020-07-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_util.adb (Build_Class_Wide_Clone_Body): Update entities to
+ 	refer to the right spec.
+ 
+ 2020-07-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch13.adb (Predicate_Failure): Check that the type has
+ 	predicates.  Remove the setting of Has_Delayed_Aspects and
+ 	Freeze_Node, because (if the code is legal) it should have
+ 	already been done by the predicate aspect.
+ 
+ 2020-07-08  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* par-ch4.adb (P_Iterated_Component_Association): Typo
+ 	corrections.
+ 
+ 2020-07-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* par.adb (P_Iterator_Specification): Make public for use in
+ 	other parser subprograms.
+ 	* par-ch4.adb (P_Iterated_Component_Association): In Ada_2020,
+ 	recognize use of Iterator_Specification in an element iterator.
+ 	To simplify disambiguation between the two iterator forms, mark
+ 	the component association as carrying an Iterator_Specification
+ 	only when the element iterator (using "OF") is used.
+ 	* par-ch5.adb (P_Loop_Parameter_Specification): In Ada_2020,
+ 	parse iterator filter when present.
+ 	(P_Iterator_Specification): Ditto.  Remove declaration of
+ 	P_Iterator_Specification, now in parent unit.
+ 	* exp_ch5.adb (Expand_N_Loop_Statement): Apply Iterator filter
+ 	when present.
+ 	(Expand_Iterator_Loop_Over_Array): Ditto.
+ 	(Expand_Iterator_Loop_Over_Container): Ditto.
+ 	* sem_aggr.adb (Resolve_Array_Aggregate): Emit error nessage if
+ 	an iterated component association includes a iterator
+ 	specificcation with an element iterator, i.e. one that uses the
+ 	OF keyword.
+ 	* sem_ch5.adb (Analyze_Iterator_Specification): Analyze Iterator
+ 	filter when present.
+ 	(Analyze_Loop_Parameter_Specification): Ditto.
+ 	* sinfo.adb: Suprogram bodies for new syntactic element
+ 	Iterator_Filter.
+ 	* sinfo.ads: Add Iterator_Filter to relevant nodes.  Structure
+ 	of Component_Association and Iteroted_Component_Association
+ 	nodes is modified to take into account the possible  presence of
+ 	an iterator specification in the latter.
+ 
+ 2020-07-08  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Is_Attribute_Loop_Entry): New
+ 	function for GNATProve.
+ 
+ 2020-07-08  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Record_Representation_Clause,
+ 	Check_Record_Representation_Clause): Add expected and actual
+ 	size to error message.
+ 
+ 2020-07-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Safe_To_Capture_Value): Return
+ 	True for in-parameters.
+ 
+ 2020-07-08  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_Attribute): Set
+ 	Stores_Attribute_Old_Prefix to generated renamings of 'Old
+ 	constants for later use in generating finalization routines.
+ 	* exp_ch7.adb (Build_Finalizer): Minor reformatting. Use "or
+ 	else" operators.
+ 
+ 2020-07-08  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Simple_Function_Return): Remove ugly code
+ 	that was copying the return expression, resetting Analyzed
+ 	flags, etc. for the return expression of static expression
+ 	functions.
+ 	* inline.adb (Inline_Static_Expression_Function_Call): Set the
+ 	Parent of the copied expression to that of the call. This avoids
+ 	a blowup in Insert_Actions when GNATprove_Mode is set and there
+ 	are nested SEF calls. Add ??? comment.
+ 	* sem_ch6.adb (Analyze_Expression_Function): In the case of a
+ 	static expression function, create a new copy of the expression
+ 	and replace the function's expression with the copy; the
+ 	original expression is used in the expression function's body
+ 	and will be analyzed and rewritten, and we need to save a clean
+ 	copy for later use in processing static calls to the function.
+ 	This allows removing the kludgy code that was in
+ 	Expand_Simple_Function_Return.
+ 	* sem_eval.adb (Eval_Qualified_Expression): Return immediately
+ 	if any errors have been posted on the qualified expression, to
+ 	avoid blowups when GNATprove_Mode is enabled (or with -gnatd.F),
+ 	since illegal static expressions are handled differently in that
+ 	case and attempting to fold such expressions would fail.
+ 
+ 2020-07-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* repinfo.adb (Compute_Max_Length): Skip hidden discriminants.
+ 	(List_Record_Layout): Likewise.
+ 	(List_Structural_Record_Layout): Use First_Discriminant instead
+ 	of First_Stored_Discriminant and Next_Discriminant instead of
+ 	Next_Stored_Discriminant to walk the list of discriminants.
+ 
+ 2020-07-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Analyze
+ 	optional boolean expressions.
+ 	* sem_util.ads, sem_util.adb (Has_Relaxed_Initialization): Adapt
+ 	query; update comment.
+ 
+ 2020-07-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* einfo.ads (Current_Value): Fix typo in comment.
+ 	* exp_ch2.adb (Expand_Current_Value): Remove unnecessary "Start
+ 	of processing ..." comment.
+ 	* exp_util.adb (Set_Entity_Current_Value): Fix unbalanced paren
+ 	in comment.
+ 	(Get_Current_Value_Condition): Fix layout in comment.
+ 	* sem_ch5.adb (Analyze_Cond_Then): Replace commented condition
+ 	with pragma Assert.
+ 
+ 2020-07-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_N_If_Statement): Detect True/False
+ 	prefixed with Standard.
+ 
+ 2020-07-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications): Add freeze node
+ 	for the Underlying_Full_View if it exists. The freeze node is
+ 	what triggers the generation of the predicate function.
+ 	* freeze.adb: Minor reformatting.
+ 
+ 2020-07-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Narrow_Large_Operation): Use the base type instead
+ 	of the first subtype of standard integer types as narrower type.
+ 
+ 2020-07-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Array_Type): Use Ctyp more consistently.
+ 	Move code setting the alignment in the non-packed case to...
+ 	* layout.adb (Layout_Type): ...here.
+ 
+ 2020-07-07  Bob Duff  <duff@adacore.com>
+ 
+ 	* treepr.adb (Print_Node): Add code to test Is_Extension.
+ 
+ 2020-07-07  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch4.adb (Try_Container_Indexing): Add ??? comment. Protect
+ 	against malformed tree in case of errors.
+ 
+ 2020-07-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* einfo.adb, sem_ch10.adb, sem_ch12.adb, sem_ch8.adb: Use
+ 	Is_Generic_Subprogram.
+ 
+ 2020-07-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch8.adb (Analyze_Use_Package): Replace low-level,
+ 	error-prone Ekind_In tests with high-level Is_Generic_Subprogram
+ 	and Is_Subprogram.
+ 
+ 2020-07-07  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch6.adb (Check_Formal_Subprogram_Conformance): New
+ 	subprogram to handle checking without systematically emitting an
+ 	error.
+ 	(Check_Conformance): Update call to
+ 	Check_Formal_Subprogram_Conformance and fix handling of Conforms
+ 	and Errmsg parameters.
+ 
+ 2020-07-07  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch4.adb (Tagged_Membership): Generate a call to
+ 	CW_Membership instead of using Build_CW_Membership.
+ 	(Expand_N_In): Remove wrong handling of null access types and
+ 	corresponding comment.
+ 	* exp_intr.adb (Expand_Dispatching_Constructor_Call): Generate a
+ 	call to CW_Membership instead of using Build_CW_Membership.
+ 	* rtsfind.ads: Add CW_Membership.
+ 	* exp_atag.ads, exp_atag.adb (Build_CW_Membership): Removed.
+ 	* einfo.ads: Fix typo.
+ 	* libgnat/a-tags.ads, libgnat/a-tags.adb (CW_Membership): Moved
+ 	back to spec.
+ 
+ 2020-07-07  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Create
+ 	proper subprogram specification for body, using names in the
+ 	subprogram declaration but distinct entities.
+ 	* exp_ch6.adb (Expand_Call): If this is an indirect call
+ 	involving a subprogram wrapper, insert pointer parameter in list
+ 	of actuals with a parameter association, not as a positional
+ 	parameter.
+ 
+ 2020-07-07  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Branch): Verify the original node is a
+ 	conditional expression before recursing further.
+ 	(Insert_Level_Assign): Transform assertion into an explicit
+ 	raise.
+ 
+ 2020-07-07  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_attr.adb (Eval_Attribute): Generalize static evaluation of
+ 	Size attribute references to also handle
+ 	Max_Size_In_Storage_Elements references.
+ 
+ 2020-07-07  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_util.adb (Is_Potentially_Unevaluated): Code cleanup.
+ 
+ 2020-07-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.ads (Expander Routines): Update the description of the
+ 	Do_Range_Check mechanism.
+ 	* checks.adb (Selected_Range_Checks): Fix typo.
+ 	* exp_ch9.adb: Add with and use clause for Checks.
+ 	(Actual_Index_Expression): Generate a range check if requested.
+ 	(Entry_Index_Expression): Likewise.
+ 	* sem_attr.adb (Resolve_Attribute) <Attribute_Count>: Call
+ 	Apply_Scalar_Range_Check instead of Apply_Range_Check.
+ 	* sem_ch9.adb (Analyze_Accept_Statement): Likewise.
+ 	* sem_res.adb (Resolve_Entry): Likewise, after having set the
+ 	actual index type on the prefix of the indexed component.
+ 	(Resolve_Indexed_Component): Remove useless conditional construct.
+ 
+ 2020-07-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* contracts.adb (Analyze_Entry_Or_Subprogram_Contract,
+ 	Process_Preconditions_For): Freeze expression that has been
+ 	relocated to pragma Precondition, not the expression which is
+ 	still in the aspect.
+ 
+ 2020-07-07  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch6.adb (Check_Conformance): Remove unnecessary (and
+ 	wrong) code.
+ 	* sem_ch8.adb (Check_Null_Exclusion): Post error at proper
+ 	location.  Introduce new helper Null_Exclusion_Mismatch and fix
+ 	implementation wrt formal subprograms used in generic bodies.
+ 	(Analyze_Subprogram_Renaming): Fix missing setting of
+ 	Error_Msg_Sloc.
+ 	(Analyze_Object_Renaming): Replace "in Anonymous_Access_Kind" by
+ 	Is_Anonymous_Access_Type.
+ 	* sem_util.adb (Has_Null_Exclusion): Fix handling of
+ 	N_Parameter_Specification.
+ 	* sem_ch12.adb (Instantiate_Object): Replace "in
+ 	Anonymous_Access_Kind" by Is_Anonymous_Access_Type.
+ 
+ 2020-07-07  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Expr_Types): Freeze the designated type of
+ 	the explicit dereference.
+ 
+ 2020-07-07  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_util.adb (Is_Potentially_Unevaluated): Protect reading
+ 	attribute Etype.
+ 
+ 2020-07-07  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/g-catiio.adb (Value, Parse_ISO_8601): Unsuppress
+ 	checks, and don't rely on 'Valid.
+ 
+ 2020-07-07  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* Makefile.rtl: Remove dead code.
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ 	Document gnatbind -xdr switch.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2020-07-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst
+ 	(Validity Checking): Add "p" to the list of switches enabled by
+ 	-gnatVa.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2020-07-07  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Add call
+ 	to Check_Restriction_No_Specification_Of_Aspect.
+ 	* sem_prag.adb (Analyze_Pragma): Likewise.
+ 	* restrict.ads (Check_Restriction_No_Specification_Of_Aspect):
+ 	Mention possible new node kinds in documentation.
+ 	* restrict.adb (Check_Restriction_No_Specification_Of_Aspect):
+ 	Retrieve aspect id from different fields if given node is an
+ 	N_Pragma or an N_Attribute_Definition_Clause.
+ 
+ 2020-07-07  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* contracts.adb (Add_Invariant_And_Predicate_Checks): Relax the
+ 	condition for doing invariant checks so that in-mode parameters
+ 	of procedures are also checked (required by AI05-0289, and
+ 	restricted to procedures by AI12-0044). This is done in a
+ 	procedure's nested postconditions procedure.
+ 	* exp_ch6.adb (Expand_Actuals): Also perform postcall invariant
+ 	checks for in parameters of procedures (but not functions).
+ 	Moved invariant-checking code to end of Expand_Actuals
+ 	(including the nested function Is_Public_Subp).
+ 
+ 2020-07-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Delta_Array_Aggregate): Make Index_Type
+ 	a constant.
+ 
+ 2020-07-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_aggr.adb (Expand_N_Delta_Aggregate): Use type of the delta
+ 	base expression for the anonymous object of the delta aggregate.
+ 
+ 2020-07-07  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_util.ads (Interval_Lists): Reordering routine.
+ 	* sem_util.adb (Interval_Lists): Reordering routines to keep
+ 	them alphabetically ordered.
+ 
+ 2020-07-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Resolve_Attribute): Do not call
+ 	Check_Non_Static_Context.
+ 
+ 2020-07-07  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_elab.adb (Is_Guaranteed_ABE): Take into account null
+ 	procedures.
+ 
+ 2020-07-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Assignment): Reuse Is_Assignable.
+ 
+ 2020-07-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Add scalar
+ 	range checks for 'Update on arrays just like for 'Update on
+ 	records.
+ 	* sem_attr.adb (Analyze_Array_Component_Update): Do not set
+ 	range checks for single-dimensional arrays.
+ 	(Resolve_Attribute): Do not set range checks for both single-
+ 	and multi- dimensional arrays.
+ 
+ 2020-07-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem.ads (Sem): Fix description.
+ 
+ 2020-07-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Relaxed_Parameter): Fix for protected
+ 	entries.
+ 
+ 2020-07-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* checks.adb (Apply_Scalar_Range_Check): Use Is_RTE.
+ 
+ 2020-07-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/g-catiio.ads: Document newly supported format.  Add
+ 	ISO_Time constant, for convenience.
+ 	* libgnat/g-catiio.adb (Image_Helper): New helper function to do
+ 	all the formatting work, called by the two exported Image
+ 	functions.  Add support for "%:::z" here. Add a Time_Zone
+ 	parameter used by the "%:::z" processing. This parameter is not
+ 	used for the actual time zone computations; local time is always
+ 	used for that, for ease of implementation reasons.  It would
+ 	make sense to use Append throughout this function, but that's a
+ 	cleanup for another day.
+ 	(Image): Modify these to pass the local time zone, or the
+ 	specified time zone, as appropriate.
+ 
+ 2020-07-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/g-catiio.ads: Change the regular expression that
+ 	documents the allowed format to match what ISO-8601 allows.
+ 	* libgnat/g-catiio.adb (Scan_Subsecond): Rewrite so it doesn't
+ 	assume the subsecond comes last.
+ 	(Parse_ISO_8601): Parse an optional subsecond, followed by an
+ 	optional time zone, rather than making these alternatives to
+ 	each other.
+ 
+ 2020-07-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/g-catiio.adb (Parse_ISO_8601): Minor cleanups:
+ 	Give some objects clearer names.
+ 	Make some objects more local to where they are used.
+ 	Remove some validity checks that can't fail, because some of
+ 	the variables tested have been moved so they're not visible here.
+ 	Anyway, Wrong_Syntax is about errors in the input, not data
+ 	validity.
+ 	Use Time_Zone_Seen instead of Local_Sign = ' ' to determine
+ 	that a time zone indication was seen.
+ 	We don't need to distinguish two different kinds of
+ 	syntax error (End_Of_Source_Reached and Wrong_Syntax),
+ 	so use Wrong_Syntax always.
+ 	Remove comment, "Certain scanning scenarios may handle
+ 	this exception on their own."; there are no such scenarios.
+ 
+ 2020-07-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/g-catiio.ads, libgnat/g-catiio.adb (Image): New
+ 	function. It might seem like the local-time Image should be
+ 	implemented in terms of the Time_Zone Image, but that would be
+ 	far harder to implement, so we do it the other way around.
+ 
+ 2020-07-06  Thomas Quinot  <quinot@adacore.com>
+ 
+ 	* libgnat/g-sechas.ads, libgnat/g-sechas.adb: Refactor to use
+ 	Stream_Element_Array as the internal buffer type.
+ 	* libgnat/g-shshco.adb: Adjust to use Stream_Element_Offset
+ 	instead of Integer as the index in the internal state buffer.
+ 
+ 2020-07-06  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst, errout.ads,
+ 	erroutc.adb, exp_ch4.adb, exp_ch6.adb, freeze.adb: Comment
+ 	rewording/reformatting/typo fixes.  Replace "ie." with "that is"
+ 	in comment; "can not" -> "cannot", and remove an extraneous
+ 	underscore in another comment.
+ 	* gnat_rm.texi, gnat_ugn.texi: Regenerate.
+ 
+ 2020-07-06  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_util.ads (Interval_Lists.Aggregate_Intervals): New
+ 	subprogram.
+ 	* sem_util.adb (Has_Null_Others_Choice,
+ 	Non_Static_Or_Null_Range, Interval_Lists.Aggregate_Intervals):
+ 	New subprograms.
+ 	(Is_Potentially_Unevaluated): Adding support to detect
+ 	potentially unevaluated components of array aggregates.
+ 
+ 2020-07-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/g-catiio.adb (Parse_ISO_8601): New name for
+ 	Parse_ISO_8861_UTC.  8601 is the correct ISO standard number.
+ 	Also, "UTC" was confusing. All Time values are represented in
+ 	UTC, but the ISO 8601 date strings include a time zone.
+ 	If a time zone was specified, call
+ 	Ada.Calendar.Formatting.Time_Of instead of
+ 	GNAT.Calendar.Time_Of, because the latter adjusts to the current
+ 	time zone, whereas we want to use (just) the time zone specified
+ 	in the ISO string.  This allows us to pass Time_Zone instead to
+ 	Time_Of, instead of adjusting by Local_Disp by hand.
+ 	If no time zone was specified, call GNAT.Calendar.Time_Of as
+ 	before.
+ 	Use expanded names to clarify which Time_Of is being called.
+ 	Remove redundant comment, and move nonredundant part of the
+ 	commment to the spec.
+ 	(Value): Minor: use "not in" instead of "or else".
+ 	* libgnat/g-catiio.ads: Comment moved here. Correct the ISO
+ 	standard number.
+ 	* libgnat/g-calend.adb: Add ??? comments.
+ 	* libgnat/a-calend.ads, libgnat/a-calend.adb: Update obsolete
+ 	comments regarding the representation of type Time. Move the
+ 	information about the epoch (year 2150) to the spec, and avoid
+ 	uttering "2150" more than once.
+ 	* libgnat/a-catizo.ads (Time_Offset): Add comment.
+ 
+ 2020-07-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch5.adb (Find_Component): If the target type is a derived
+ 	record type and the required component is a discriminant that is
+ 	renamed in the derived type declaration, use the name of the
+ 	original discriminant to locate the intended target component.
+ 
+ 2020-07-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Associations): Add check for errors on
+ 	the generic formal before continuing with instantiation.
+ 
+ 2020-07-06  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-nbnbin.ads, libgnat/a-nbnbin.adb,
+ 	libgnat/a-nbnbin__gmp.adb: Use more Valid_Big_Integer.
+ 
+ 2020-07-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_util.ads (Get_Index_Subtype): Fix duplicate "Last".
+ 
+ 2020-07-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sinfo.ads: Indicate that Field 1 of an N_Delta_Aggregate is
+ 	unused. Previously it was erroneously labelled as holding an
+ 	Expressions list, in analogy with other aggregate constructs,
+ 	but there are no Expressions attached to this node syntactically
+ 	or semantically.
+ 
+ 2020-07-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Eval_Attribute): Check if constant has an
+ 	initialization expression.
+ 
+ 2020-07-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Apply
+ 	scalar range checks.
+ 	* sem_attr.adb (Resolve_Attribute): Do not set scalar range
+ 	checks when resolving attribute Update.
+ 
+ 2020-07-06  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute, Attribute_Constrained): Issue
+ 	a warning if the attribute prefix is a current instance
+ 	reference within an aspect of a type or subtype.
+ 	(Address_Checks): Replace test of Is_Object (Ent) with
+ 	Is_Object_Reference (P) so that testing for current instances
+ 	will be done.
+ 	(Eval_Attribute): Add test for current instance reference, to
+ 	ensure that we still fold array attributes when current
+ 	instances are involved, since value prefixes are allowed for
+ 	array attributes, and will now be excluded by
+ 	Is_Object_Reference.
+ 	* sem_util.ads (Is_Current_Instance_Reference_In_Type_Aspect):
+ 	New exported query function.
+ 	* sem_util.adb (Is_Object_Reference): Return False for the case
+ 	where N is a current instance reference within an
+ 	aspect_specification of a type or subtype (basically if the
+ 	reference occurs within a predicate, invariant, or DIC aspect
+ 	expression).
+ 	(Is_Current_Instance_Reference_In_Type_Aspect): New function
+ 	that tests whether a node is a reference to a current instance
+ 	formal of a predicate, invariant, or
+ 	Default_Initial_Condition (DIC) subprogram.
+ 
+ 2020-07-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Declare_Expression): New subprogram, to
+ 	install the scope holding local declarations of the expression,
+ 	before completing its resolution.
+ 	(Resolve): For an Expression_With_Actions that comes from a
+ 	source occurrence of a Declare_Expression, call new subprogram.
+ 
+ 2020-07-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Reuse SPARK_Implicit_Load.
+ 
+ 2020-07-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Loop_Parameter_Specification): Propagate
+ 	exception when switch -gnatdk is used and no previous errors are
+ 	present.
+ 	* sem_eval.adb (Compile_Time_Known_Value, Is_In_Range):
+ 	Likewise.
+ 	* sem_warn.adb (Operand_Has_Warnings_Suppressed): Likewise.
+ 
+ 2020-07-06  Richard Kenner  <kenner@adacore.com>
+ 
+ 	* exp_unst.adb (Needs_Fat_Pointer): Don't check for formal.
+ 	(Unnest_Subprogram): Use 'Unchecked_Access instead of 'Access
+ 	when populating activation record.
+ 
+ 2020-07-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Add_Simple_Call_By_Copy_Code): Rename parameter
+ 	from Bit_Packed_Array to Force.
+ 	(Expand_Actuals): Do not apply BIP processing if the subprogram
+ 	is intrinsic.  Adjust calls to Add_Simple_Call_By_Copy_Code and
+ 	add one for In parameters whose actual is a CPP constructor call.
+ 
+ 2020-07-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_attr.adb (Eval_Attribute): Do not apply range checks in
+ 	the case of 'Pos applied to an integer type here.
+ 
+ 2020-07-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Object_Declaration): If the type is an
+ 	Unchecked_Union, and the expression is an aggregate. complete
+ 	the analysis and resolution of the aggregate, and treat like a
+ 	regular object declaration, instead of as a renaming
+ 	declarattion.
+ 
+ 2020-07-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch9.adb (Is_Potentially_Large_Family): Add documentation.
+ 	(Actual_Index_Expression): Use Entry_Index_Type.
+ 	(Build_Entry_Count_Expression): Likewise.
+ 	(Build_Find_Body_Index): Likewise.
+ 	(Collect_Entry_Families): Likewise. Use directly the bounds of
+ 	the index type to find out whether the family is large.
+ 	(Entry_Index_Expression): Likewise.
+ 
+ 2020-07-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Range): Resolve both low and high bounds
+ 	with the range type.
+ 
+ 2020-07-06  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* aspects.ads (Is_Representation_Aspect):
+ 	Default_Component_Value is a representation aspect.
+ 	* sem_ch13.adb (Check_Aspect_Too_Late, Rep_Item_Too_Late): Relax
+ 	RM 13.1(10) rule wrt primitive operations for Ada 202x.
+ 
+ 2020-07-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Move to library
+ 	level and use a new predicate Is_OK_Aggregate to recognize the
+ 	aggregates suitable for direct assignment by the back-end.
+ 	(Convert_Array_Aggr_In_Allocator): If neither in CodePeer mode nor
+ 	generating C code, generate a direct assignment instead of further
+ 	expanding if Aggr_Assignment_OK_For_Backend returns true.
+ 
+ 2020-07-06  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_aux.adb: Add a with clause for Nlists.
+ 	(Nearest_Ancestor): Test for the case of concurrent
+ 	types (testing for both Is_Concurrent_Type and
+ 	Is_Concurrent_Record_Type), and return the first ancestor in the
+ 	Interfaces list if present (otherwise will return Empty if no
+ 	interfaces).
+ 	* sem_ch13.adb (Build_Predicate_Functions): Add a ??? comment
+ 	about missing handling for adding predicates when they can be
+ 	inherited from multiple progenitors.
+ 
+ 2020-07-06  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* par-ch6.adb (P_Return_Object_Declaration): Set
+ 	Has_Init_Expression flag.
+ 
+ 2020-07-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* debug.adb (d.K): Document new usage.
+ 	* fe.h (Debug_Flag_Dot_KK): Declare.
+ 	* gcc-interface/decl.c (gnat_to_gnu_field): Give an error when the
+ 	component overlaps with the parent subtype, except with -gnatd.K.
+ 
+ 2020-06-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_Set_Membership): Expand the membership test
+ 	using left associativity instead of right associativity.
+ 
+ 2020-06-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils2.c (build_binary_op): Remove space.
+ 
+ 2020-06-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (gnat_to_gnu) <N_Allocator>: Minor tweaks.
+ 	Call Has_Constrained_Partial_View on base type of designated type.
+ 
+ 2020-06-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.c (gnat_write_global_declarations): Output
+ 	integral global variables first and the imported functions later.
+ 
+ 2020-06-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (elaborate_expression_1): When GNAT encodings
+ 	are not used, do not create a variable for debug info purposes if
+ 	the expression is itself a user-declared variable.
+ 
+ 2020-06-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/ada-tree.h (DECL_RENAMED_OBJECT): Delete.
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Always use
+ 	the stabilized reference directly for renaming and create a variable
+ 	pointing to it separately if requested.
+ 	* gcc-interface/misc.c (gnat_print_decl): Adjust for deletion.
+ 	* gcc-interface/trans.c (Identifier_to_gnu): Likewise.
+ 	(gnat_to_gnu) <N_Object_Renaming_Declaration>:
+ 	Do not deal with side-effects here.
+ 	<N_Exception_Renaming_Declaration>: Likewise.
+ 
+ 2020-06-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (elaborate_expression): Replace calls to
+ 	Is_OK_Static_Expression with Compile_Time_Known_Value.
+ 
+ 2020-06-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Set
+ 	debug type to the base type and only if the subtype is artificial.
+ 
+ 2020-06-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Do
+ 	not test Is_Bit_Packed_Array in the memset path.
+ 
+ 2020-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (lvalue_required_for_attribute_p): Do not deal
+ 	with 'Pos or 'Val.
+ 	(Attribute_to_gnu): Likewise.
+ 	* gcc-interface/utils.c (create_field_decl): Small formatting fix.
+ 
+ 2020-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (adjust_for_implicit_deref): Delete.
+ 	(maybe_implicit_deref): Likewise.
+ 	(Attribute_to_gnu): Replace calls to maybe_implicit_deref by calls
+ 	to maybe_padded_object.
+ 	(Call_to_gnu): Likewise.
+ 	(gnat_to_gnu) <N_Indexed_Component>: Likewise.
+ 	<N_Slice>: Likewise.
+ 	<N_Selected_Component>: Likewise.
+ 	<N_Free_Statement>: Remove call to adjust_for_implicit_deref and
+ 	manually make sure that the designated type is complete.
+ 	* gcc-interface/utils2.c (build_simple_component_ref): Add comment.
+ 
+ 2020-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_param): Tidy up.
+ 	(gnat_to_gnu_subprog_type): For a variadic C function, do not
+ 	build unnamed parameters and do not add final void node.
+ 	* gcc-interface/misc.c: Include snames.h.
+ 	* gcc-interface/trans.c (Attribute_to_gnu): Tidy up.
+ 	(Call_to_gnu): Implement support for unnamed parameters in a
+ 	variadic C function.
+ 	* gcc-interface/utils.c: Include snames.h.
+ 	(copy_type): Tidy up.
+ 
+ 2020-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_N_Assignment_Statement): Do not apply
+ 	range checks to allocators here.
+ 
+ 2020-06-19  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* lib.adb (Check_Same_Extended_Unit): Add check to determine if
+ 	the body for the subunits exist in the same file as their
+ 	specifications.
+ 
+ 2020-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb (In_Place_Assign_OK): In an allocator context,
+ 	check the bounds of an array aggregate against those of the
+ 	designated type, except if the latter is unconstrained.
+ 
+ 2020-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Is_Visible_Component): Reason only on the private
+ 	status of the original type in an instance body.
+ 
+ 2020-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Qualified_Expression): Do not override the
+ 	type of the node when it is unconstrained if it is for an allocator.
+ 
+ 2020-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Allocator): Call Resolve_Qualified_Expression
+ 	on the qualified expression, if any, instead of doing an incomplete
+ 	type resolution manually.
+ 	(Resolve_Qualified_Expression): Apply predicate check to operand.
+ 
+ 2020-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Selected_Component): In an instance body,
+ 	also invoke Find_Component_In_Instance on the parent subtype of
+ 	a derived tagged type immediately visible.  Remove obsolete case.
+ 
+ 2020-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_attr.adb (Get_Integer_Type): Return the largest supported
+ 	unsigned integer type if need be.
+ 
+ 2020-06-19  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Known_Condition): Add general sanity
+ 	check that asserts the original source node being checked
+ 	contains an entity. If not, it could be the result of special
+ 	case expansion for type conversions.
+ 
+ 2020-06-19  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Expression_Function): Do not indicate
+ 	that the function has a completion if it appears within a Ghost
+ 	generic package.
+ 
+ 2020-06-19  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/a-ststbo.adb (Write): Replace pragma Assert with "if
+ 	... raise Constraint_Error".
+ 
+ 2020-06-19  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* widechar.adb, widechar.ads (Skip_Wide): Catch validity check
+ 	failure when skipping over characters, and update comment to
+ 	reflect Skip_Wide's usage in error printing.
+ 
+ 2020-06-19  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch3.ads (Ensure_Activation_Chain_And_Master): New
+ 	subprogram.
+ 	* exp_ch3.adb (Ensure_Activation_Chain_And_Master): New
+ 	subprogram that factorizes code.
+ 	(Expand_N_Object_Declaration): Call new subprogram.
+ 	* sem_ch6.adb (Analyze_Function_Return): Returning a
+ 	build-in-place unconstrained array type defer the full analysis
+ 	of the returned object to avoid generating the corresponding
+ 	constrained subtype; otherwise the bounds would be created in
+ 	the stack and a dangling reference would be returned pointing to
+ 	the bounds.
+ 
+ 2020-06-19  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads,
+ 	libgnat/a-nbnbin__gmp.adb, libgnat/a-nbnbre.adb,
+ 	libgnat/a-nbnbre.ads: Update spec according to AI12-0366.
+ 
+ 2020-06-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* checks.ads: Remove excessive whitespace in declarations of
+ 	functions for check suppression.
+ 
+ 2020-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch7.adb (Hide_Public_Entities): Split handling of objects
+ 	and subprograms, and do not reject the latter upfront in nested
+ 	instance specs if there are no referencer subprograms at all.
+ 	(Analyze_Package_Body_Helper): Also call Hide_Public_Entities on
+ 	nested generic instances.
+ 
+ 2020-06-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Reject illegal positional
+ 	component associations; fix syntax in comment about named
+ 	component associations.
+ 
+ 2020-06-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Delta_Record_Aggregate): Modify a nested
+ 	Get_Component_Type routine to return a component and not just
+ 	its type; use this routine to decorate the identifier within the
+ 	delta aggregate.
+ 
+ 2020-06-19  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch4.adb (Find_Equality_Types.Check_Access_Attribute): New.
+ 	(Find_Equality_Types): Move universal_access related checks at
+ 	the end of the processing and add call to
+ 	Check_Access_Attribute.
+ 
+ 2020-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_prag.adb (Process_Convention): Revert previous change.
+ 
+ 2020-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.ads (Apply_Static_Length_Check): Move up.
+ 	(Apply_Range_Check): Add parameter Insert_Node.
+ 	* checks.adb (Apply_Selected_Range_Checks): Merge into...
+ 	(Apply_Range_Check): ...this.  Add parameter Insert_Node,
+ 	pass it as Warn_Node to Selected_Range_Checks and use it
+ 	as insertion point for the checks.
+ 	* sem_ch3.adb (Analyze_Subtype_Declaration): Rewrite block
+ 	dealing with the range checks for the subtype indication.
+ 	Use local variable and call Apply_Range_Check in both cases.
+ 
+ 2020-06-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Call Ensure_Valid
+ 	on the expression of an object declaration that captures the
+ 	value of 'Old prefix.
+ 
+ 2020-06-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Add comment.
+ 	* sem_attr.adb (Analyze_Attribute): Add ??? comment.
+ 	* sem_util.ads (Valid_Scalars): This routine is only used for
+ 	'Valid_Scalars and not for 'Valid.
+ 
+ 2020-06-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Do not call
+ 	Scalar_Part_Present on the array component's type.
+ 	(Build_Array_VS_Func): Remove Comp_Typ parameter, because it can
+ 	be easily computed from the Array_Top parameter *and redundant
+ 	parameters are confusing and error-prone).
+ 
+ 2020-06-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Build_Record_VS_Func): Strip privacy and type
+ 	derivation from the root type when 'Valid_Scalars is applied to
+ 	a class-wide type.
+ 
+ 2020-06-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* checks.adb (Apply_Parameter_Validity_Checks): Remove testing
+ 	of Check_Validity_Of_Parameters for every formal parameter and
+ 	function result.
+ 
+ 2020-06-19  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Overlapping_Actuals): Add missing
+ 	warning tag.
+ 
+ 2020-06-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Get_Size_For_Range): Only make sure to return a
+ 	size lower than that of the original type if possible.
+ 	* libgnat/s-rannum.adb (Random_Discrete): Back out optimization
+ 	added for 32-bit types.
+ 
+ 2020-06-18  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch6.ads, sem_ch6.adb (Check_Formal_Conformance): New
+ 	subprogram.
+ 	(Check_Conformance): Move code to Check_Formal_Conformance.
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming): Check for formal
+ 	conformance when needed.
+ 
+ 2020-06-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Narrow_Large_Operation): New procedure to try
+ 	and narrow large arithmetic and comparison operations.
+ 	(Expand_N_In): Call it.
+ 	(Expand_N_Op_Abs): Likewise.
+ 	(Expand_N_Op_Add): Likewise.
+ 	(Expand_N_Op_Divide): Likewise.
+ 	(Expand_N_Op_Eq): Likewise.
+ 	(Expand_N_Op_Ge): Likewise.
+ 	(Expand_N_Op_Gt): Likewise.
+ 	(Expand_N_Op_Le): Likewise.
+ 	(Expand_N_Op_Lt): Likewise.
+ 	(Expand_N_Op_Minus): Likewise.
+ 	(Expand_N_Op_Mod): Likewise.
+ 	(Expand_N_Op_Multiply): Likewise.
+ 	(Expand_N_Op_Ne): Likewise.
+ 	(Expand_N_Op_Plus): Likewise.
+ 	(Expand_N_Op_Rem): Likewise.
+ 	(Expand_N_Op_Subtract): Likewise.
+ 	(Expand_N_Type_Conversion): Use Convert_To procedure.
+ 	* exp_ch9.adb (Is_Pure_Barrier) <N_Identifier>: Skip all
+ 	numeric types.
+ 	<N_Type_Conversion>: Use explicit criterion.
+ 
+ 2020-06-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_Allocator_Expression): Apply constraint
+ 	and predicate checks for the qualified expression on entry,
+ 	followed by constraint and predicate checks for the allocator
+ 	itself, and return early if this results in a static error.
+ 	(Expand_N_Allocator): Do not do the same here.  Instead apply
+ 	constraint and predicate checks for arrays in the subtype
+ 	indication case.
+ 	* exp_ch5.adb (Expand_N_Assignment_Statement): Do not apply
+ 	range checks to allocators here.
+ 
+ 2020-06-18  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch6.adb (BIP_Suffix_Kind, Is_Build_In_Place_Entity): Move
+ 	declarations...
+ 	* exp_ch6.ads: Here.
+ 	* exp_util.adb (Is_Secondary_Stack_BIP_Func_Call): Do not rely
+ 	on the name of the scope to locate the extra formal BIPalloc
+ 	since they are copied when the pointer type associated with
+ 	dispatching calls is built; rely on routines
+ 	Is_Build_In_Place_Entity and BIP_Suffix_Kind.
+ 	* exp_disp.adb (Expand_Dispatching_Call): Set the scope of the
+ 	first extra formal of the internally built pointer type.
+ 	* sem_ch3.adb (Derive_Subprogram): Do not inherit extra formals
+ 	from a limited interface parent since limitedness is not
+ 	inherited in such case (AI-419) and this affects the extra
+ 	formals.
+ 	* sprint.adb (Write_Itype): Output extra formals of subprogram
+ 	types.
+ 
+ 2020-06-18  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* errout.adb (Write_Error_Summary): Display number of warnings
+ 	treated as errors.
+ 	* errutil.ads: Update comment.
+ 
+ 2020-06-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_attr.adb (Analyze_Attribute) <Asm_{In,Out}put>: Alphabetize.
+ 	<Component_Size>: Add check for universal integer attribute.
+ 	<Aft>, <Bit_Order>, <Definite>, <Max_Alignment_For_Allocation>,
+ 	<Scalar_Storage_Order>: Raise Program_Error on them.
+ 	* sem_attr.adb (Eval_Attribute) <Component_Size>: Add comment on
+ 	the packed array case.
+ 
+ 2020-06-18  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_util.adb (Object_Access_Level): Treat a 'Old attribute
+ 	reference like an aggregate in determining its static
+ 	accessibility level; after the evaluation of the relevant
+ 	post-condition, the implicitly declared constant associated with
+ 	an Old attribute reference ceases to exist. Similarly for
+ 	Loop_Entry attribute.
+ 	* exp_ch6.adb (Expand_Call_Helper): For an attribute reference
+ 	that is expanded into a reference to an implicitly declared
+ 	constant (e.g., a 'Old or 'Loop_Entry attribute), compute the
+ 	dynamic accessibility level of that constant by looking at the
+ 	declaration of the constant (as opposed to looking at the
+ 	attribute reference).
+ 
+ 2020-06-18  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Do not generate a
+ 	default initial condition check for the declaration of an
+ 	imported object.
+ 
+ 2020-06-18  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* Makefile.rtl: Add s-statxd.o.
+ 	* bindgen.adb (Gen_Adainit): Add support for XDR_Stream.
+ 	* bindusg.adb (Display): Add mention of -xdr.
+ 	* gnatbind.adb: Process -xdr switch.
+ 	* init.c (__gl_xdr_stream): New.
+ 	* opt.ads (XDR_Stream): New.
+ 	* libgnat/s-stratt__xdr.adb: Rename to...
+ 	* libgnat/s-statxd.adb: this and adjust.
+ 	* libgnat/s-statxd.ads: New.
+ 	* libgnat/s-stratt.ads, libgnat/s-stratt.adb: Choose between
+ 	default and XDR implementation at runtime.
+ 	* libgnat/s-ststop.ads: Update comments.
+ 	* doc/gnat_rm/implementation_advice.rst: Update doc on XDR
+ 	streaming.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-06-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute) <To_Address>: Use the address
+ 	size of the target instead of the host when checking the value of
+ 	a static expression.  Also use standard idiom for exponentiation.
+ 
+ 2020-06-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_prag.adb (Process_Convention): Give a warning on C_Variadic_n
+ 	being applied to a subprogram with exactly n parameters.
+ 
+ 2020-06-18  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnarl/s-osinte__linux.ads, libgnat/g-io.adb,
+ 	libgnat/g-socket.adb, libgnat/g-socthi.adb,
+ 	libgnat/g-socthi.ads, libgnat/g-socthi__vxworks.adb,
+ 	libgnat/g-socthi__vxworks.ads, libgnat/g-sothco.ads,
+ 	libgnat/s-io.adb, libgnat/a-except.adb: Fix function profile
+ 	mismatch with imported C functions.
+ 
+ 2020-06-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call_Helper): Remove superfluous calls
+ 	to Relocate_Node and merge calls to Analyze and Resolve in a
+ 	couple of places.  Do not attempt to generate a range check
+ 	for an actual parameter against the formal's type of a derived
+ 	subprogram after generating a conversion to the formal's type
+ 	of the parent subprogram.
+ 
+ 2020-06-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.adb (Compute_Range_For_Arithmetic_Op): New procedure to
+ 	compute a range for an arithmetical operation extracted from...
+ 	(Minimize_Eliminate_Overflows): ...here.  Call it.
+ 	(Determine_Range_Cache_O): New cache for Original_Node nodes.
+ 	(Determine_Range): Call Compute_Range_For_Arithmetic_Op for all
+ 	arithmetic expressions. Use Attribute_Id in lieu of Attribute_Name
+ 	for attributes. Add handling for Range_Length alongside Length.
+ 	Add specific handling for Alignment, Bit, First_Bit, Last_Bit,
+ 	Max_Size_In_Storage_Elements, Position, Bit_Position,
+ 	Component_Size, Object_Size, Size, Value_Size, Descriptor_Size.
+ 	(Enable_Overflow_Check): Omit the check for Abs and Minus if the
+ 	operand cannot be the largest negative number.
+ 	(Selected_Length_Checks): Use Pos for Number_Dimensions.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Move compile-time
+ 	handling of Bit_Position, Descriptor_Size, First_Bit, Last_Bit
+ 	and Position to...
+ 	* sem_attr.adb (Eval_Attribute): ...here.  Move up Alignment for
+ 	objects and use Compile_Time_Known_Attribute in this case too.
+ 
+ 2020-06-18  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* erroutc.ads: Declare new Is_Compile_Time_Msg boolean,
+ 	add new Compile_Time_Pragma field to Error_Msg_Object type.
+ 	(Count_Compile_Time_Pragma_Warnings): New function.
+ 	* erroutc.adb (Count_Compile_Time_Pragma_Warnings): New
+ 	function.
+ 	(Compilation_Errors): Take Compile_Time warnings into account
+ 	when tallying Errors/Warnings.
+ 	* errout.ads (Error_Msg): New procedure.
+ 	* errout.adb (Error_Msg): New procedure.
+ 	(Error_Msg_Internal): Set new Compile_Time_Pragma field in
+ 	Error_Msg_Object.
+ 	* errutil.adb (Error_Msg): Set new Compile_Time_Pragma field in
+ 	Error_Msg_Object.
+ 	* sem_prag.adb (Validate_Compile_Time_Warning_Or_Error): Pass
+ 	True to new Error_Msg procedure.
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst: Update doc for
+ 	the Compile_Time_Warning pragma.
+ 	* gnat_rm.texi: Regenerate.
+ 	* opt.ads: Update comment.
+ 
+ 2020-06-18  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch4.adb (Check_Compatible_Profiles): Add explicit
+ 	initialization.
+ 
+ 2020-06-18  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* checks.adb (Generate_Index_Checks): Handle
+ 	N_Subtype_Indication returned from Scalar_Range.
+ 
+ 2020-06-18  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* checks.adb, sem_ch3.adb: Minor refactorings.
+ 	* sem_eval.adb (Eval_Qualified_Expression): Fix reference to RM
+ 	rule in comment; only set a local variable Hex in the branch
+ 	where it is used.
+ 
+ 2020-06-18  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_eval.adb (Check_Non_Static_Context): Use Is_RTE.
+ 
+ 2020-06-18  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch4.adb (Find_Equality_Types.Check_Access_Object_Types):
+ 	New function, used to implement RM 4.5.2 (9.6/2).
+ 	(Find_Equality_Types.Check_Compatible_Profiles): New function,
+ 	used to implement RM 4.5.2(9.7/2).
+ 	(Find_Equality_Types.Reference_Anonymous_Access_Type): New
+ 	function.
+ 	(Find_Equality_Types.Try_One_Interp): Fix handling of anonymous
+ 	access types which was accepting both too much and too little.
+ 	Remove accumulated special and incomplete cases for
+ 	instantiations, replaced by Has_Compatible_Type.
+ 	(Analyze_Overloaded_Selected_Component): Use
+ 	Is_Anonymous_Access_Type instead of Ekind_In.
+ 	* sem_res.adb: Code cleanup and bug fix: use
+ 	Is_Anonymous_Access_Type instead of Ekind_In.  Relax checking of
+ 	anonymous access parameter when universal_access "=" is
+ 	involved.
+ 	* sem_type.adb: Likewise.
+ 	(Find_Unique_Type): Move code from here...
+ 	(Specific_Type): ...to here. Also add missing handling of access
+ 	to class wide types.
+ 	* einfo.ads, einfo.adb (Is_Access_Object_Type): New.
+ 
+ 2020-06-18  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/a-strsto.ads, libgnat/a-ststbo.adb,
+ 	libgnat/a-ststbo.ads, libgnat/a-ststun.adb,
+ 	libgnat/a-ststun.ads: New files, containing packages
+ 	Ada.Streams.Storage, Ada.Streams.Storage.Bounded, and
+ 	Ada.Streams.Storage.Unbounded.
+ 	* impunit.adb, Makefile.rtl: Add new file names.
+ 
+ 2020-06-18  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch13.adb (Has_Good_Profile): Enforce strictness in the
+ 	check. Required to detect wrong profiles for Input and Output.
+ 	(Analyze_Stream_TSS_Definition): Minor enhancement in the text
+ 	of the error for class-wide attributes.
+ 
+ 2020-06-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_attr.adb (Get_Integer_Type): Pick an unsigned type based
+ 	on the Esize of the base type of the input type.
+ 
+ 2020-06-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_Array_Equality): For the optimization of
+ 	the 2-element case, build new expression lists for the indices.
+ 
+ 2020-06-18  Richard Kenner  <kenner@adacore.com>
+ 
+ 	* sem_util.adb (Enclosing_Subprogram): No longer need
+ 	Convention_Protected.
+ 
+ 2020-06-18  Claire Dross  <dross@adacore.com>
+ 
+ 	* sem_util.adb (Is_OK_Volatile_Context): Return False on
+ 	definitions of constants declared in declare expressions.
+ 
+ 2020-06-18  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_aspects.rst
+ 	(Relaxed_Initialization): New implementation-defined aspect.
+ 	* doc/gnat_rm/implementation_defined_attributes.rst
+ 	(Initialized): New implementation-defined attribute.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-06-18  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_disp.adb (Expand_Dispatching_Call): Add missing decoration
+ 	of attribute Extra_Accessibility_Of_Result.
+ 	* freeze.adb (Check_Extra_Formals): No check required if
+ 	expansion is disabled; Adding check on
+ 	Extra_Accessibilty_Of_Result.
+ 	(Freeze_Subprogram): Fix decoration of
+ 	Extra_Accessibility_Of_Result.
+ 	* sem_ch3.adb (Derive_Subprogram): Fix decoration of
+ 	Extra_Accessibility_Of_Result
+ 
+ 2020-06-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Optimize_Length_Comparison): Accept 32-bit values
+ 	in the full unsigned range.
+ 
+ 2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.adb (Apply_Universal_Integer_Attribute_Checks): Do not do
+ 	anything when the type of the node is already Universal_Integer.
+ 
+ 2020-06-17  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch10.adb (Expand_With_Clause): Add missing handling of
+ 	N_Generic_Subprogram_Declaration, N_Subprogram_Declaration,
+ 	N_Subprogram_Body.
+ 
+ 2020-06-17  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch13.adb: (Check_Inherited_Indexing): Check that a type
+ 	derived from an indexable container type cannot specify an
+ 	indexing aspect if the same aspect is not specified for the
+ 	parent type (RM 4.1.6 (6/5), AI12-160). Add a check that a
+ 	specified indexing aspect for a derived type is confirming.
+ 
+ 2020-06-17  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch9.adb (Build_Protected_Subp_Specification): Add ???
+ 	comment about the flag Has_Nested_Subprogram not being set here.
+ 	(Expand_N_Protected_Body): If the original body for a protected
+ 	subprogram has the flag Has_Nested_Subprogram set, then set that
+ 	flag on the new unprotected subprogram body that's created for
+ 	it, and reset the Scope fields of its top level declarations,
+ 	which have been effectively taken from the original protected
+ 	subprogram body. Add ??? comment about unclear testing of
+ 	Corresponding_Spec.
+ 
+ 2020-06-17  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* aspects.ads (type Aspect_Id): Add Aspect_Yield as a Boolean
+ 	aspect, and update the Is_Representation_Aspect, Aspect_Names,
+ 	and Aspect_Delay arrays.
+ 	* einfo.ads, einfo.adb (Has_Yield_Aspect, Yield_Aspect): New
+ 	subprograms.
+ 	* exp_ch6.adb (Add_Return, Expand_Non_Function_Return,
+ 	Expand_Simple_Function_Return): Add calls to Yield.
+ 	* exp_ch9.adb (Build_Accept_Body, Expand_N_Accept_Statement):
+ 	Add calls to Yield.
+ 	* rtsfind.ads (RE_Yield): Adding support to generate calls to
+ 	the runtime service Ada.Dispatching.Yield
+ 	* sem_ch13.adb (Analyze_Aspect_Yield): New subprogram.
+ 	* sem_ch3.adb (Derive_Subprogram): Inherit attribute
+ 	Has_Yield_Aspect.
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming): Check consistency
+ 	of Has_Yield in the actual subprogram of a generic
+ 	instantiation.
+ 	* sem_disp.adb (Check_Dispatching_Operation): Check that if the
+ 	Yield aspect is specified for a dispatching subprogram that
+ 	inherits the aspect, the specified value shall be confirming.
+ 	* sem_prag.adb (Analyze_Pragma [Pragma_Implemented]): Check that
+ 	the implementation kind By_Protected_Procedure cannot be applied
+ 	to a procedure that has aspect Yield.
+ 
+ 2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Op_Expon): Replace all occurrences of
+ 	the original right operand with the relocated version.
+ 
+ 2020-06-17  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch6.adb (Has_BIP_Extra_Formal): New subprogram.
+ 	(Needs_BIP_Task_Actuals): Add support for the subprogram type
+ 	internally generated for dispatching calls.
+ 	* exp_disp.adb (Expand_Dispatching_Call): Adding code to
+ 	explicitly duplicate the extra formals of the target subprogram.
+ 	* freeze.adb (Check_Extra_Formals): New subprogram.
+ 	(Freeze_Subprogram): Fix decoration of Extra_Formals.
+ 	* sem_ch3.adb (Derive_Subprogram): Fix decoration of
+ 	Extra_Formals.
+ 
+ 2020-06-17  Bob Duff  <duff@adacore.com>
+ 
+ 	* par.adb (P_Basic_Declarative_Items): Update comment about
+ 	Declare_Expression.
+ 	* par-ch3.adb (P_Declarative_Items): Pass in Declare_Expression
+ 	flag, and if True, skip the call to Style.Check_Indentation.
+ 	* par-ch4.adb (P_Declare_Expression): Fix incorrect comment.
+ 
+ 2020-06-17  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_res.adb (Valid_Conversion): Change error message to make
+ 	it more user-friendly.
+ 
+ 2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.ads (Apply_Length_Check_On_Assignment): Declare.
+ 	* checks.adb (Apply_Length_Check_On_Assignment): New procedure
+ 	to apply a length check to an expression in an assignment.
+ 	* exp_ch5.adb (Expand_Assign_Array): Call it instead of calling
+ 	Apply_Length_Check to generate a length check.
+ 	* sem_ch5.adb (Analyze_Assignment): Likewise.
+ 
+ 2020-06-17  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* einfo.adb (Is_Relaxed_Initialization_State): Add reference to
+ 	SPARK RM.
+ 	* sem_attr.adb (Analyze_Attribute_Old_Result): Likewise.
+ 	* sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Reject
+ 	aspect on completions of private types and deferred constants.
+ 	* sem_util.ads, sem_util.adb (Has_Relaxed_Initialization):
+ 	Adjust comments; support queries for constants.
+ 
+ 2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* cstand.adb (Stloc): Change to a renaming.
+ 	(Staloc): Likewise.
+ 	(Build_Unsigned_Integer_Type): Remove Nam parameter, use local
+ 	constants and do not call Make_Name.
+ 	(Make_Dummy_Index): Use local constants.
+ 	(Create_Standard): Pass the name of entities as parameter in
+ 	calls to New_Standard_Entity and remove calls to Make_Name.
+ 	Adjust calls to Build_Unsigned_Integer_Type.
+ 	(Identifier_For): Use local constant.
+ 	(Make_Component): Pass the name of the component as parameter
+ 	in call to New_Standard_Entity and remove call to Make_Name.
+ 	(Make_Formal): Likewise.  Rename Formal_Name parameter into
+ 	Nam and use local constant.
+ 	(Make_Name): Delete.
+ 	(New_Operator): Use local constant.
+ 	(New_Standard_Entity): Rename S parameter into Nam and build
+ 	the name here.  Remove call to Make_Name.
+ 	(Register_Float_Type): Pass the name of the type as parameter
+ 	in call to New_Standard_Entity and remove call to Make_Name.
+ 
+ 2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_First>:
+ 	Remove condition added for scalar types.
+ 
+ 2020-06-17  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch3.ads (Build_Access_Subprogram_Wrapper_Body): Adjust
+ 	colon columns; reformat comment.
+ 	* exp_ch3.adb
+ 	(Build_Access_Subprogram_Wrapper_Body): Likewise.
+ 	* sem_ch3.adb (Build_Access_Subprogram_Wrapper): Reformat spec
+ 	comment and reformat comment in body.
+ 	(Analyze_Full_Type_Declaration): Reformat comment.
+ 	(Replace_Type_Name): Fixed three typos, plus reformatting of
+ 	comment.
+ 	* sem_prag.adb (Analyze_Pre_Post_Condition): Fix typos.
+ 	* sem_warn.adb (Warn_On_Overlapping_Actuals): Edit comments:
+ 	remove hyphen, add missing word.
+ 
+ 2020-06-17  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/a-cbdlli.adb, libgnat/a-cbhama.adb,
+ 	libgnat/a-cbhase.adb, libgnat/a-cbmutr.adb,
+ 	libgnat/a-cborma.adb, libgnat/a-cborse.adb,
+ 	libgnat/a-cdlili.adb, libgnat/a-chtgbk.adb,
+ 	libgnat/a-chtgke.adb, libgnat/a-cidlli.adb,
+ 	libgnat/a-cihama.adb, libgnat/a-cihase.adb,
+ 	libgnat/a-cimutr.adb, libgnat/a-ciorma.adb,
+ 	libgnat/a-ciorse.adb, libgnat/a-cobove.adb,
+ 	libgnat/a-cohama.adb, libgnat/a-cohase.adb,
+ 	libgnat/a-coinve.adb, libgnat/a-comutr.adb,
+ 	libgnat/a-convec.adb, libgnat/a-coorma.adb,
+ 	libgnat/a-coorse.adb, libgnat/a-crbtgk.adb,
+ 	libgnat/a-crbtgo.adb, libgnat/a-rbtgso.adb: Move tampering
+ 	checks earlier.
+ 
+ 2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_attr.adb (Get_Integer_Type): Use standard types without
+ 	a specific size.
+ 	* sem_res.adb (Resolve_Unchecked_Type_Conversion): Remove a
+ 	redundant intermediate conversion to Universal_Integer.
+ 
+ 2020-06-17  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Get_Iterable_Type_Primitive): Fix
+ 	comment and enforce it with an assertion in the body.
+ 
+ 2020-06-17  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Full_Type_Declaration): For an
+ 	access_to_subprogram declaration that has aspect specifications,
+ 	call Build_Access_ Subprogram_Wrapper at once, so that pre- and
+ 	postcondition aspects are analyzed in the context of a
+ 	subprogram declaration.
+ 	(Build_Access_Subprogram_Wrapper): Examine aspect specifications
+ 	of an Access_To_Subprogram declaration. If pre- or
+ 	postconditions are declared for it, create declaration for
+ 	subprogram wrapper and add the corresponding aspect
+ 	specifications to it. Replace occurrences of the type name by
+ 	that of the generated subprogram, so that attributes 'Old and
+ 	'Result can appear in a postcondition.
+ 	* exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Moved
+ 	here from sem_prag.adb.
+ 	* exp_ch3.ads (Build_Access_Subprogram_Wrapper_Body): Visible
+ 	subprogram.
+ 	* sem_prag.adb (Build_Access_Subprogram_Wrapper / _Body): Moved
+ 	to sem_ch3.adb and exp_ch3.adb.
+ 
+ 2020-06-17  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* atree.adb (Preserve_Comes_From_Source): Rewrite using
+ 	Set_Comes_From_Source and Comes_From_Source, which enforce that
+ 	the parameters are valid.
+ 	* exp_ch4.adb, exp_ch5.adb, sem_ch12.adb, sem_ch6.adb,
+ 	sem_res.adb: Rewrite using Preserve_Comes_From_Source.
+ 
+ 2020-06-17  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-nbnbin.ads, libgnat/a-nbnbre.ads: Remove obsolete
+ 	comments.
+ 
+ 2020-06-17  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* aspects.ads (type Aspect_Id): Add Aspect_Static as a Boolean
+ 	aspect, and update the Is_Representation_Aspect, Aspect_Names,
+ 	and Aspect_Delay arrays.
+ 	* exp_ch6.adb (Expand_Simple_Function_Return): In the case of a
+ 	return for a static expression function, capture a copy of the
+ 	expression of the return statement before it's expanded and
+ 	reset its Analyzed flags. Then, just before leaving this
+ 	procedure, if the expression was rewritten, set the
+ 	Original_Node of the rewritten expression to the new copy and
+ 	also set the Expression of the associated static expression
+ 	function to designate that copy. This ensures that later copies
+ 	of the expression made via New_Copy_Tree will fully copy all
+ 	nodes of the expression tree.
+ 	* inline.ads (Inline_Static_Expression_Function_Call): New
+ 	procedure to evaluate and produce the result of a static call to
+ 	a static expression function.
+ 	* inline.adb: Add with and use for Sem_Res.
+ 	(Establish_Actual_Mapping_For_Inlined_Call): New procedure
+ 	extracted from code in Expand_Inlined_Call that traverses the
+ 	actuals and formals of an inlined call and in some cases creates
+ 	temporaries for holding the actuals, plus establishes an
+ 	association between formals and actuals (via the Renamed_Object
+ 	fields of the formals).
+ 	(Formal_Is_Used_Once): Function removed from Expand_Inlined_Call
+ 	and now nested in the above procedure.
+ 	(Expand_Inlined_Call): Code for doing the formal/actual
+ 	traversal is moved to Create_Actual_Temporaries and replaced
+ 	with a call to that new procedure.
+ 	(Inline_Static_Expression_Function_Call): New procedure to
+ 	evaluate a static call to a static expression function,
+ 	substituting actuals for their corresponding formals and
+ 	producing a fully folded and static result expression. The
+ 	function has subsidiary functions Replace_Formal and Reset_Sloc
+ 	that take care of doing the mapping of formals to actuals and
+ 	resetting the Slocs of subnodes of the mapped expression to that
+ 	of the call so errors will be flagged on the call rather than
+ 	function.
+ 	* sem_ch6.adb (Analyze_Expression_Function): In the case of a
+ 	static expression function, perform an additional preanalysis of
+ 	the function's expression to ensure that it's a potentially
+ 	static expression (according to the requirements of
+ 	6.8(3.2/5-3.4/5)), and issue an error if it's not. The global
+ 	flag Checking_Potentially_Static_Expression is set and unset
+ 	around this checking.
+ 	* sem_ch13.adb (Analyze_Aspect_Static): New procedure to enforce
+ 	selected requirements of the new aspect Static on expression
+ 	functions, including checking that the language version is
+ 	Ada_2020 and that the entity to which it applies is an
+ 	expression function whose formal parameters are of a static
+ 	subtype and have mode 'in', its result subtype is a static
+ 	subtype, and it has no pre- or postcondition aspects. A ???
+ 	comment is added to indicate the need for adding checking that
+ 	type invariants don't apply to the result type if the function
+ 	is a boundary entity.
+ 	(Analyze_One_Aspect): Call Analyze_Aspect_Static for aspect
+ 	Static.
+ 	* sem_elab.adb (Build_Call_Marker): Return without creating a
+ 	call marker when the subprogram is a static expression function,
+ 	since no ABE checking is needed for such functions.
+ 	* sem_eval.ads (Checking_Potentially_Static_Expression): New
+ 	function to return whether the checking for potentially static
+ 	expressions is enabled.
+ 	(Set_Checking_Potentially_Static_Expression): New procedure to
+ 	enable or disable checking of potentially static expressions.
+ 	* sem_eval.adb (Checking_For_Potentially_Static_Expression): New
+ 	global flag for determining whether preanalysis of potentially
+ 	static expression is being done, which affects the behavior of
+ 	certain static evaluation routines.
+ 	(Checking_Potentially_Static_Expression): New function to return
+ 	whether the checking for potentially static expressions is
+ 	enabled.
+ 	(Eval_Call): When evaluating a call within a static expression
+ 	function with checking of potentially static expression
+ 	functions enabled, substitutes a static value in place of the
+ 	call to allow folding of the expression.
+ 	(Eval_Entity_Name): When evaluating a formal parameter of a
+ 	static expression function with checking of potentially static
+ 	expression functions enabled, substitutes a static value in
+ 	place of the reference to the formal to allow folding of the
+ 	expression.
+ 	(Set_Checking_Potentially_Static_Expression): New procedure to
+ 	enable or disable checking of potentially static expressions.
+ 	* sem_res.adb (Resolve_Call): Test for a recursive call
+ 	occurring within a static expression function and issue an error
+ 	for such a call. Prevent the establishment of a transient scope
+ 	in the case this is a call to a (string-returning) static
+ 	expression function. When calling a static expression function,
+ 	if no error has been posted on the function, call
+ 	Inline_Static_Expression_Function_Call to convert the call into
+ 	its equivalent static value.
+ 	* sem_util.ads (Is_Static_Expression_Function): New function
+ 	returning whether the subprogram entity passed to it is a static
+ 	expression function.
+ 	(Is_Static_Expression_Function_Call): New function to determine
+ 	whether the call node passed to it is a static call to a static
+ 	expression function.
+ 	* sem_util.adb (Compile_Time_Constraint_Error): Suppress
+ 	compile-time Constraint_Error reporting when checking for a
+ 	potentially static expression.
+ 	(Is_Static_Expression_Function): New function returning whether
+ 	the subprogram entity passed to it is a static expression
+ 	function by testing for the presence of aspect Static.
+ 	(Has_All_Static_Actuals): New function in
+ 	Is_Static_Expression_Function_Call that traverses the actual
+ 	parameters of a function call and returns True only when all of
+ 	the actuals are given by static expressions. In the case of a
+ 	string-returning function, we call Resolve on each actual to
+ 	ensure that their Is_Static_Expression flag properly reflects
+ 	whether they're static, to allow suppressing creation of a
+ 	transient scope within Resolve_Call. A prominent ??? comment is
+ 	added to explain this rather unconventional call to Resolve.
+ 	(Is_Static_Expression_Function_Call): New function that
+ 	determines whether a node passed to it is a call to a static
+ 	expression function all of whose actual parameters are given by
+ 	static expressions.
+ 
+ 2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Optimize_Length_Comparison): New local variable to
+ 	record whether this may be a dynamic superflat case.
+ 	(Is_Optimizable): Accept 0 as lower bound and set it in this case,
+ 	but return false if the operand is not a length too.
+ 	(Rewrite_For_Equal_Lengths): New procedure.
+ 	Optimize the comparison of two lengths in the superflat case when
+ 	the arrays have the same bounds.
+ 
+ 2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_attributes.rst (Bit): Sharpen
+ 	the comparison with System.Storage_Unit.
+ 	(Descriptor_Size): Clear confusion about alignment and padding.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_First>:
+ 	Do not replace the bound for an array type if it is public.
+ 
+ 2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Optimize_Length_Comparison): Make sure the base
+ 	types are the same when comparing Y'Last and X'Last directly.
+ 
+ 2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_First>:
+ 	Replace it with a direct reference to an entity which is not a
+ 	discriminant for constrained array types.  Add same condition
+ 	for scalar types.
+ 	<Attribute_Last>: Merge with above implementation.
+ 	* exp_ch4.adb (Optimize_Length_Comparison): Be prepared for a
+ 	second entity whose length is compared.  Rename Prepare_64 to
+ 	Convert_To_Long_Long_Integer.  If the second entity is present,
+ 	compute the difference of the 'First attributes and compare the
+ 	sum of 'Last of the second entity with this difference against
+ 	'Last of the first entity.  Add a special case when the 'First
+ 	attributes are equal.  Suppress overflow checks in all cases.
+ 
+ 2020-06-17  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst, lib-writ.ads,
+ 	par-prag.adb, sem_ch12.adb, sem_ch8.adb, sem_prag.adb: Fix
+ 	casing of GNATprove.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-06-17  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* checks.adb (Generate_Range_Check): Simplify redundant
+ 	condition.
+ 	* sem_ch3.adb (Check_Initialization, Process_Discriminants):
+ 	Likewise.
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Likewise.
+ 
+ 2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_fixd.adb (Build_Conversion): Also preserve the
+ 	Conversion_OK flag of an inner conversion.
+ 
+ 2020-06-17  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Iterator_Specification): Enable expansion
+ 	that creates a renaming that removes side effects from the
+ 	iterated object in the GNATprove mode; then analyze reference to
+ 	this renaming (it is required for GNATprove and harmless for
+ 	GNAT).
+ 
+ 2020-06-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sinfo.ads (Conversion_OK): Document use for 'Pos and 'Val.
+ 	* exp_attr.adb (Get_Integer_Type): New function returning a
+ 	small integer type appropriate for an enumeration type.
+ 	(Expand_N_Attribute_Reference) <Attribute_Enum_Rep>: Call it.
+ 	<Attribute_Pos>: For an enumeration type with a standard
+ 	representation, expand to a conversion with Conversion_OK.
+ 	<Attribute_Val>: Likewise.
+ 	* exp_ch4.adb (Expand_N_Type_Conversion): Do not expand when
+ 	the target is an enumeration type and Conversion_OK is set.
+ 
+ 2020-06-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch4.adb (Common_Type): Go to Underlying_Full_View, if any.
+ 
+ 2020-06-16  Richard Kenner  <kenner@adacore.com>
+ 
+ 	* exp_unst.adb (Subp_Index): Change way we detect internal
+ 	protected subprograms.
+ 
+ 2020-06-16  Richard Kenner  <kenner@adacore.com>
+ 
+ 	* comperr.adb (Compiler_Abort): Clarify message displayed to
+ 	customers.
+ 
+ 2020-06-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* checks.adb, doc/gnat_ugn/the_gnat_compilation_model.rst,
+ 	einfo.ads, exp_ch5.adb, exp_ch7.adb, lib-xref.ads,
+ 	libgnat/g-spitbo.ads, make.adb, sem_aux.adb, sem_ch3.adb,
+ 	sem_ch4.adb, sem_ch5.adb, urealp.adb: Fix wrong casing.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2020-06-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* einfo.adb, exp_spark.adb, exp_util.adb, sem_eval.adb: Replace
+ 	"Ekind ... in Object_Kind" with "Is_Object (...)".
+ 
+ 2020-06-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Overlapping_Actuals): Fix typo in
+ 	comment.
+ 
+ 2020-06-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_util.adb (Evaluate_Name): Force evaluation of aggregates;
+ 	recursively evaluate expression of a qualified expression; fix
+ 	location of the comment for an attribute referenced and an
+ 	indexed component.
+ 
+ 2020-06-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Expression): Use consistent style and
+ 	formatting in a couple of cases.
+ 
+ 2020-06-16  Steve Baird  <baird@adacore.com>
+ 
+ 	* libgnat/a-nbnbin.ads, libgnat/a-nbnbre.ads: Uncomment the
+ 	commented-out Integer_Literal aspect specification for type
+ 	Big_Integer.
+ 
+ 2020-06-16  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch6.adb (BIP_Suffix_Kind, Check_BIP_Actuals,
+ 	Is_Build_In_Place_Entity): New subprograms.
+ 	(Make_Build_In_Place_Call_In_Allocator,
+ 	Make_Build_In_Place_Call_In_Anonymous_Context,
+ 	Make_Build_In_Place_Call_In_Assignment,
+ 	Make_Build_In_Place_Call_In_Object_Declaration): Add assertions.
+ 	(Needs_BIP_Task_Actuals): Add missing support for thunks.
+ 	(Expand_Actuals): Ensure that the BIP call has available an
+ 	activation chain and the _master variable.
+ 	* exp_ch9.adb (Find_Enclosing_Context): Initialize the list of
+ 	declarations of empty blocks when the _master variable must be
+ 	declared and the list was not available.
+ 
+ 2020-06-16  Bob Duff  <duff@adacore.com>
+ 
+ 	* par-ch4.adb (P_Case_Expression): Move to be local.
+ 	(P_Declare_Expression): New parsing routine.
+ 	(P_Unparen_Cond_Expr_Etc): New name for
+ 	P_Unparen_Cond_Case_Quant_Expression which was missing one case
+ 	in its name (iterated component association), and we're adding a
+ 	new case (declare expression), so lets use "Etc" instead of
+ 	trying to pack all those things into the name.  Add call to
+ 	P_Declare_Expression, and check for missing parens.
+ 	(P_Expression_If_OK, P_Expression_Or_Range_Attribute_If_OK): Add
+ 	Tok_Declare.
+ 	* par.adb (P_Basic_Declarative_Items): Add parameter
+ 	Declare_Expression so we can tailor the error message about
+ 	incorrect bodies.
+ 	(P_Case_Expression): Move to body.
+ 	* par-ch3.adb (P_Basic_Declarative_Items): Tailor the error
+ 	message about incorrect bodies.
+ 	* par-ch7.adb (P_Package): Pass Declare_Expression => False to
+ 	P_Basic_Declarative_Items.
+ 	* sem.ads (In_Declare_Expr): Counter used to determine whether
+ 	we are analyzing a declare_expression. Needed to give errors
+ 	about things that are not allowed in declare_expression, such as
+ 	the 'Access attribute.
+ 	* sem.adb (Do_Analyze): Save/restore In_Declare_Expr.
+ 	* sem_ch4.adb (Analyze_Expression_With_Actions): Give this node
+ 	its own scope.  That seems better in general, but it is
+ 	necessary for declare_expressions.  For example, an identifier
+ 	declared in a declare_expression should not clash with the same
+ 	identifier in an outer scope.  If this is a declare_expression,
+ 	indicated by Comes_From_Source, then check legality rules, and
+ 	incr/decr In_Declare_Expr.
+ 	* sem_aggr.adb (Resolve_Aggregate): Allow an applicable index
+ 	constraint for a declare_expression, so if its expression is an
+ 	array aggregate, it can have "others => ...".
+ 	* sem_attr.adb (Analyze_Access_Attribute): Disallow these
+ 	attributes in declare_expressions. Add comment to make it clear
+ 	that Unrestricted_Access is included.
+ 	* sinfo.ads, sinfo.adb, atree.ads, atree.adb: Remove the
+ 	now-incorrect comment in sinfo.ads that says
+ 	N_Expression_With_Actions has no proper scope.  Add 17-parameter
+ 	versions of Nkind_In.  Remove the 16-parameter versions of
+ 	Nkind_In.
+ 
+ 2020-06-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_aux.ads, sem_aux.adb (Is_Record_Or_Limited_Type): New
+ 	function.
+ 	* exp_ch4.adb, sem_ch4.adb (Analyze_Membership_Op,
+ 	Expand_Set_Membership.Make_Cond): Choose between primitive and
+ 	predefined equality for membership tests.
+ 
+ 2020-06-16  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Overlapping_Actuals): Simplify code and
+ 	implement AI12-0216 which clarifies the conditions under which
+ 	overlapping actuals in a call are illegal. If proper warnings
+ 	are enabled, GNAT also emits warnings in legal cases of
+ 	overlopping actuals.
+ 
+ 2020-06-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Expression): Stop climbing the parent chain
+ 	at a N_{Case,If}_Expression node for a type or an entity that
+ 	does not come from source.
+ 
+ 2020-06-16  Steve Baird  <baird@adacore.com>
+ 
+ 	* snames.ads-tmpl: Define names of the three new aspects.
+ 	* aspects.ads: Define the three new aspects.
+ 	* sem_util.ads, sem_util.adb, sem_dim.adb: Move the function
+ 	String_From_Numeric_Literal from being declared in the body of
+ 	package Sem_Dim to being declared in the visible part of package
+ 	Sem_Util.
+ 	* sem_ch13.ads, sem_ch13.adb: Declare new visible procedure
+ 	Validate_Literal_Aspect. This is where most of the legality
+ 	checking occurs for an aspect specification for one of the three
+ 	new aspects, as well as resolution of the subprogram named in
+ 	the aspect specification. Follow example of other aspects (e.g.,
+ 	Validate_Literal_Aspect is called in much the same way as
+ 	Validate_Iterable_Aspect in Analyze_Aspects_At_Freeze_Point; a
+ 	small amount of legality checking is performed in
+ 	Analyze_One_Aspect in much the same way as for Default_Value or
+ 	Default_Component_Value aspects). Most of the work is done in
+ 	Validate_Literal_Aspect.
+ 	* contracts.adb (Add_Contract_Item): Call
+ 	Validate_Literal_Aspect in much the same way that
+ 	Validate_Iterable_Aspect was already being called.
+ 	* sem_res.adb (Resolve): Rewrite a literal as a call if it is a
+ 	user-defined literal.  This is where the dynamic semantics of
+ 	the 3 new aspects are implemented.
+ 	* sem_ch6.adb (Fully_Conformant_Expressions): Two numeric
+ 	literals that have different text but the same value (e.g.,
+ 	12345 and 12_345) do not conform if they are user-defined
+ 	literals. Introduce a new function
+ 	User_Defined_Numeric_Literal_Mismatch to avoid duplication in
+ 	making this check.
+ 	* sem_type.adb (Has_Compatible_Type): A numeric literal can be
+ 	compatible with a non-numeric type (and a string literal can be
+ 	compatible with a non-string type) if it can be interpreted as a
+ 	user-defined literal.
+ 
+ 2020-06-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Extension_Aggregate): Fix implementation
+ 	of AI05-0115 by checking the correct type.
+ 
+ 2020-06-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Subprogram_Specification): Generate error
+ 	message for functions returning interfaces.
+ 
+ 2020-06-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Membership_Entry): Relax assertion to also
+ 	recognize qualified identifiers.
+ 
+ 2020-06-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_util.adb (Evaluate_Name): Force evaluation of operators.
+ 
+ 2020-06-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Membership_Op): Reset entity of equality
+ 	nodes for membership tests with singletons.
+ 	(Analyze_User_Defined_Binary_Op): Always perform the analysis
+ 	since nodes coming from the expander also may refer to non
+ 	standard operators as part of membership expansion.
+ 	* exp_ch4.adb (Expand_Set_Membership.Make_Cond): Reset entity of
+ 	equality node.
+ 	* sem_type.ads: Fix typo in comment.
+ 
+ 2020-06-16  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Add
+ 	Check_Not_Incomplete_Type call.
+ 
+ 2020-06-16  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch6.adb: Add closing paren in a comment.
+ 	* sem_util.adb: Correct comment typo (aggreate => aggregate).
+ 
+ 2020-06-16  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
+ 	Code cleanup.
+ 
+ 2020-06-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.adb (In_Expanded_Body): Remove unreachable code.
+ 	(Freeze_Expression): Rename a couple of local variables.
+ 	In the case of an expanded body, also freeze locally the
+ 	entities declared in a nested block.
+ 
+ 2020-06-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch4.adb (Transform_Object_Operation): Document that it
+ 	may be partially destructive for the parent of the node.
+ 	(Try_Object_Operation): Undo the changes made above on failure.
+ 
+ 2020-06-16  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* restrict.adb (Global_No_Tasking): Adding
+ 	Targparm.Restrictions_On_Target Fixes regressions with zfp.
+ 
+ 2020-06-16  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* freeze.adb: (Freeze_Expression, In_Expanded_Body): Treat the
+ 	generated body of an expression function like other bodies
+ 	generated during expansion (e.g. stream subprograms) so that
+ 	those bodies are not treated as freezing points. Handle properly
+ 	other global references in such completions.
+ 
+ 2020-06-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch8.adb (Analyze_Object_Renaming): Remove trivially
+ 	useless initialization of Is_Object_Reference.
+ 	* sem_util.adb (Is_Object_Reference): Simplify detection of
+ 	binary and unary operators; literally implement rules about
+ 	aggregates and qualified expressions; recognize string literals
+ 	as object references.
+ 
+ 2020-06-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch12.adb (Validate_Derived_Type_Instance): Reword error
+ 	message for 12.5.1(8) subclause and add secondary message if
+ 	the incompatibility comes from the predicates.
+ 	* sem_ch3.adb (Check_Constraining_Discriminant): New procedure
+ 	to give the error required by the 3.7(15) subclause.  Mention
+ 	"statically" in the error message and add secondary message
+ 	if the incompatibility comes from the predicates.
+ 	(Build_Derived_Concurrent_Type): Call it when a new discriminant
+ 	constrains an old one.
+ 	(Build_Derived_Record_Type): Likewise.
+ 	* sem_eval.ads (Predicates_Compatible): Declare.
+ 	* sem_eval.adb (Predicates_Compatible): New function to implement
+ 	the compatibility of predicates specified by the 4.9.1 clause.
+ 	(Subtypes_Statically_Compatible): Call it.
+ 
+ 2020-06-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_eval.ads (Predicates_Match): Fix description.
+ 	* sem_eval.adb (Predicates_Match): Rewrite.
+ 
+ 2020-06-15  Ed Falis  <falis@adacore.com>
+ 
+ 	* Makefile.rtl: Change name of hie/g-io__vxworks-ppc-cert.adb.
+ 
+ 2020-06-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch8.adb (Premature_Usage): Add support for subtype
+ 	references and replace set of if-then-else by a case statement.
+ 
+ 2020-06-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Depends_In_Decl_Part,
+ 	Analyze_Global_In_Decl_Part): Bring back task discriminants for
+ 	analysis of the Global/Depends contracts; add comments.
+ 
+ 2020-06-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Return_Applies_To): Document special usage for E_Block.
+ 	* einfo.adb (Write_Field8_Name): Write it for E_Block too.
+ 	* exp_ch4.adb (Expand_N_Type_Conversion): Remove implementation of
+ 	the check prescribed by AI05-0073.
+ 	* exp_ch6.adb (Apply_CW_Accessibility_Check): New procedure to apply
+ 	the check prescribed by AI95-344 extracted from...
+ 	(Expand_N_Extended_Return_Statement): Apply the check prescribed by
+ 	AI95-344 to the expression, if present.  Suppress only access checks
+ 	when analyzing the rewritten result.
+ 	(Expand_Simple_Function_Return): ...here.  Rename local variable.
+ 	Call Apply_CW_Accessibility_Check to apply the check prescribed by
+ 	AI95-344, but do not do it for the simple return statement generated
+ 	by the expansion of an extended return statement.  Apply the check
+ 	prescribed by AI05-0073 to all functions returning anonymous access
+ 	type designating a specific tagged type, but not if the expression
+ 	was null or tag checks are suppressed for the type, and use Not In
+ 	operator rather than comparing the tags explicitly.
+ 	* sem.adb (Analyze): Handle all Suppress values.
+ 	* sem_ch6.adb (Analyze_Function_Return): Do not explicitly apply
+ 	predicate checks in the case of an extended return statement.
+ 	Do not apply an implicit conversion to the anonymous access result
+ 	type in the case of the simple return statement generated by the
+ 	expansion of an extended return statement.
+ 	(New_Overloaded_Entity): Small comment tweak.
+ 	* treepr.adb (Print_Node): Fix typo in flag string.
+ 
+ 2020-06-15  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_put_image.ads, exp_put_image.adb
+ 	(Image_Should_Call_Put_Image): New function to determine whether
+ 	the call to Put_Image should be generated.
+ 	(Build_Image_Call): New procedure to generate the call to
+ 	Put_Image.
+ 	* exp_imgv.adb (Expand_Image_Attribute): Use underlying types to
+ 	bypass privacy (only in Ada 2020). If
+ 	Image_Should_Call_Put_Image is True (which happens only in Ada
+ 	2020), then call Build_Image_Call.
+ 	* rtsfind.ads, rtsfind.adb: Add the necessary declarations in
+ 	Ada.Strings.Text_Output.Buffers.
+ 	* sem_attr.adb (Check_Image_Type): Enable the Ada 2020 case.
+ 	* libgnat/a-stoufo.ads, libgnat/a-stoufo.adb: Use the less
+ 	restrictive type that allows newline characters.
+ 
+ 2020-06-15  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch9.ads (Build_Master_Declaration): Add commas.
+ 	* exp_ch9.adb (Build_Master_Entity): Spelling fix ("build" =>
+ 	"built").
+ 	(Build_Task_Activation_Call): Fix word order.
+ 
+ 2020-06-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-nbnbin.ads (Big_Positive, Big_Natural): Fix
+ 	predicate.
+ 
+ 2020-06-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Fix
+ 	dealing with scopes on subprogram bodies that act as specs.
+ 	* sem_util.adb (Has_Relaxed_Initialization): Fix trivial
+ 	mistake.
+ 
+ 2020-06-15  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* restrict.ads (Set_Global_No_Tasking, Global_No_Tasking): New
+ 	subprograms.
+ 	* restrict.adb (Set_Global_No_Tasking, Global_No_Tasking): New
+ 	subprograms.
+ 	* sem_ch3.adb (Access_Definition): Do not skip building masters
+ 	since they may be required for BIP calls.
+ 	(Analyze_Subtype_Declaration): Propagate attribute
+ 	Is_Limited_Record in class-wide subtypes and subtypes with
+ 	cloned subtype attribute; propagate attribute
+ 	Is_Limited_Interface.
+ 	* sem_ch6.adb (Check_Anonymous_Return): Do not skip building
+ 	masters since they may be required for BIP calls. Use
+ 	Build_Master_Declaration to declare the _master variable.
+ 	(Create_Extra_Formals): Add decoration of Has_Master_Entity when
+ 	the _master formal is added.
+ 	* exp_ch3.adb (Init_Formals): Adding formal to decorate it with
+ 	attribute Has_Master_Entity when the _master formal is added.
+ 	(Build_Master): Do not skip building masters since they may be
+ 	required for BIP calls.
+ 	(Expand_N_Object_Declaration): Ensure activation chain and
+ 	master entity for objects initialized with BIP function calls.
+ 	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
+ 	Adding support to detect and save restriction No_Tasking when
+ 	set in the run-time package System or in a global configuration
+ 	pragmas file.
+ 	* sem_util.adb (Current_Entity_In_Scope): Overload this
+ 	subprogram to allow searching for an entity by its Name.
+ 	* sem_util.ads (Current_Entity_In_Scope): Update comment.
+ 	* exp_ch4.adb (Expand_N_Allocator): Do not skip building masters
+ 	since they may be required for BIP calls.
+ 	* exp_ch6.ads (Might_Have_Tasks): New subprogram.
+ 	* exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Add
+ 	support for BIP calls returning objects that may have tasks.
+ 	(Make_Build_In_Place_Call_In_Allocator): Build the activation
+ 	chain if the result might have tasks.
+ 	(Make_Build_In_Place_Iface_Call_In_Allocator): Build the class
+ 	wide master for the result type.
+ 	(Might_Have_Tasks): New subprogram.
+ 	(Needs_BIP_Task_Actuals): Returns False when restriction
+ 	No_Tasking is globally set.
+ 	* exp_ch9.ads (Build_Master_Declaration): New subprogram.
+ 	* exp_ch9.adb (Build_Activation_Chain_Entity): No action
+ 	performed when restriction No_Tasking is globally set.
+ 	(Build_Class_Wide_Master): No action performed when restriction
+ 	No_Tasking is globally set; use Build_Master_Declaration to
+ 	declare the _master variable.
+ 	(Build_Master_Declaration): New subprogram.
+ 	(Build_Master_Entity): No action performed when restriction
+ 	No_Tasking is globally set; added support to handle transient
+ 	scopes and _finalizer routines.
+ 	(Build_Master_Renaming): No action performed when restriction
+ 	No_Tasking is globally set.
+ 	(Build_Task_Activation_Call): Skip generating the call when
+ 	the chain is an ignored ghost entity.
+ 	(Find_Master_Scope): Generalize the code that detects transient
+ 	scopes with master entity.
+ 	* einfo.ads (Has_Nested_Subprogram): Minor comment reformatting.
+ 
+ 2020-06-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_attr.adb (Eval_Attribute): Protect against previous
+ 	errors.
+ 	* sem_ch13.adb (Analyze_Aspect_Default_Value): Remove redundant
+ 	error checking, handling in Analyze_Aspect_Specifications.
+ 	(Analyze_Aspect_Specifications): Refine error messages on
+ 	Default_[Component_]Value.
+ 	(Check_Aspect_Too_Late): New procedure.
+ 	(Rep_Item_Too_Late.Is_Derived_Type_With_Constraint): Remove,
+ 	dead code.
+ 	* aspects.ads (Is_Representation_Aspect): Default_Value is a
+ 	representation aspect.
+ 
+ 2020-06-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-wichha.ads, libgnat/a-wichha.adb,
+ 	libgnat/a-wichun.ads, libgnat/a-wichun.adb (Is_Basic, To_Basic):
+ 	New.
+ 	* libgnat/s-utf_32.ads, libgnat/s-utf_32.adb (Is_UTF_32_Basic,
+ 	To_UTF_32_Basic, Decomposition_Search): New subprograms.
+ 	(Unicode_Decomposition): New table.
+ 
+ 2020-06-15  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch6.adb (Add_Call_By_Copy_Code): In the case of a view
+ 	conversion passed to a scalar out-mode parameter where the
+ 	formal has Default_Value set, declare the copy temp with the
+ 	base type of the formal's subtype and initialize the copy temp
+ 	with the actual's value.
+ 
+ 2020-06-15  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Case_Expression): Set default value for
+ 	Target to silence potential warnings.
+ 	(Expand_N_If_Expression): Add calculation to check when the if
+ 	expression is used directly in the context of an actual of an
+ 	anonymous access type and add a special path to force expansion
+ 	of the if expression in this case.
+ 	* exp_ch6.adb (Expand_Branch): Generate an assignment to the
+ 	level temporary for a given branch.
+ 	(Expand_Call_Helper): Add expansion to allow for creating a
+ 	temporary to store associated accessiblity levels on each branch
+ 	of the conditional expression.  Also perform expansion of
+ 	function calls into expressions with actions, and fixup
+ 	references to N with Call_Node.
+ 	(Insert_Level_Assign): Move through nested conditional
+ 	expressions to each branch.
+ 	* sem_util.ads, sem_util.adb (Is_Anonymous_Access_Actual): Added
+ 	to detect when to force expansion of if expressions.
+ 
+ 2020-06-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Depends_In_Decl_Part,
+ 	Analyze_Global_In_Decl_Part): Do not install task discriminants
+ 	for analysis of the Global/Depends contracts.
+ 
+ 2020-06-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* contracts.adb (Analyze_Object_Contract): Do not expect
+ 	Global/Depends on single protected units.
+ 
+ 2020-06-15  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_res.adb (Valid_Conversion): Add missing condition to
+ 	trigger proper static accessiblity failiures when the target
+ 	type is an anonymous access.
+ 
+ 2020-06-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call_Helper): Replace repeated Ekind with
+ 	Ekind_In.
+ 
+ 2020-06-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch6.adb, sem_util.adb: Remove excessive parents,
+ 	especially since they don't make the code any easier to read.
+ 
+ 2020-06-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* aspects.ads (Aspect_Id): Add Aspect_Relaxed_Initialization.
+ 	(Implementation_Defined_Aspect): Add new aspect.
+ 	(Aspect_Argument): Add new aspect with Optional_Expression
+ 	argument.
+ 	(Is_Representation_Aspect): Add new aspect as a
+ 	non-representation one.
+ 	(Aspect_Names): Add name for the new aspect.
+ 	(Aspect_Delay): Add new aspect as a non-delayed one.
+ 	* sem_ch3.adb: Minor reformatting.
+ 	* einfo.ads, einfo.adb (Is_Relaxed_Initialization_State): New
+ 	query; reuses existing code for querying abstract state options.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): For now ignore
+ 	attribute 'Initialized.
+ 	* sem_attr.adb (Analyze_Attribute_Old_Result): Allow attribute
+ 	'Result to be used in the aspect Relaxed_Initialization
+ 	expression.
+ 	(Analyze_Attribute): Analyze attribute 'Initialized; based on
+ 	existing code for attribute 'Valid_Scalars.
+ 	(Eval_Attribute): Do not expect attribute 'Initialized, just
+ 	like attribute 'Valid_Scalars is not expected.
+ 	* sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): New
+ 	routine.
+ 	(Analyze_Aspect_Specifications): Analyze new aspect in a
+ 	dedicated routine.
+ 	(Check_Aspect_At_Freeze_Point): Do not expect new aspect.
+ 	* sem_prag.adb (Analyze_Abstract_State): Support option
+ 	Relaxed_Initialization on abstract states.
+ 	* sem_util.ads, sem_util.adb (Has_Relaxed_Initialization): New
+ 	query for the GNATprove backend.
+ 	* snames.ads-tmpl (Snames): Add Name_Ids for the new aspect and
+ 	attribute; add an Attribute_Id for the new attribute.
+ 
+ 2020-06-15  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_put_image.adb, libgnat/s-putima.adb, libgnat/s-putima.ads,
+ 	rtsfind.ads: Enable Put_Image if Is_Access_Subprogram_Type (Typ).
+ 	Remove comment saying it's disabled in that case.  Rename
+ 	Put_Image_Access_Prot to be Put_Image_Access_Prot_Subp to
+ 	clarify that we're talking about access-to-subprogram, not
+ 	access-to-protected-object.
+ 
+ 2020-06-15  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_attr.adb (Check_Image_Type): New procedure for checking
+ 	the type, depending on language version. Disable the Ada 2020
+ 	support until the corresponding expander work is done.
+ 	(Analyze_Image_Attribute): Call Check_Image_Type.  Rearrange the
+ 	code to be simplier and more logical.  When P_Type is modified,
+ 	modify P_Base_Type accordingly.
+ 	* sem_util.adb (Is_Object_Image): Do not return False if the
+ 	prefix is a type. X'Image should be considered an image of an
+ 	object iff X is an object (albeit illegal pre-2020 if
+ 	nonscalar).
+ 
+ 2020-06-15  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/s-putima.ads, libgnat/s-putima.adb
+ 	(Put_Image_Access_Subp, Put_Image_Access_Prot): New procedures
+ 	for printing access-to-subprogram objects.  Remove an explicit
+ 	" ", because Put_Image includes the annoying leading blank.
+ 	* rtsfind.ads: Add new procedures in s-putima.
+ 	* exp_put_image.adb: Call new procedures as appropriate.
+ 
+ 2020-06-15  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_imgv.adb (Expand_Image_Attribute): Allow private types.
+ 	Put_Image generates Image for numeric types, and private types
+ 	whose full type is numeric. This requires the Conversion_OK flag
+ 	for integer and floating-point types. For fixed point, we need
+ 	the extra conversion.
+ 	* exp_put_image.adb (Build_Elementary_Put_Image_Call): Remove
+ 	special handling of real types.
+ 	(Enable_Put_Image): Enable for reals.
+ 
+ 2020-06-15  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_attr.adb (Put_Image): Use underlying type for strings.
+ 	Remove unchecked union processing.
+ 	* exp_put_image.adb (Tagged_Put_Image_Enabled): Use -gnatd_z to
+ 	enable default Put_Image for tagged types.  This allows testing
+ 	that feature.
+ 	(Build_String_Put_Image_Call): Set Conversion_OK flag.
+ 	(Make_Component_List_Attributes): Remove unchecked union
+ 	processing.
+ 	(Enable_Put_Image): Disable for unchecked unions.  Enable for
+ 	nonscalar types (which were mistakenly disabled in earlier
+ 	changes).
+ 	* debug.adb: Document -gnatd_z switch.
+ 	* libgnat/s-putima.adb (Put_Image_String, Put_Image_Wide_String,
+ 	Put_Image_Wide_Wide_String): Double double-quote characters.
+ 	Forget about special handling of control characters for now --
+ 	that's rare enough to not be a priority, and it's not clear what
+ 	the right thing to do is anyway.
+ 	* namet.adb: Minor: Improve debugger-friendliness.
+ 	* sinfo.ads: Minor: Add "???" comment.
+ 
+ 2020-06-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Is_Renaming_Declaration): Remove.
+ 
+ 2020-06-15  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Expression): When traversing the tree
+ 	looking for the proper insertion point for the freeze node of an
+ 	entity that is declared in an outer scope, set the candidate
+ 	subprogram body node properly.  Previous code has an off-by-one
+ 	error.
+ 
+ 2020-06-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference) <Has_Same_Storage>:
+ 	Do not do superfluous work.  Add the condition (X'Size /= 0) on
+ 	both paths and turn binary AND into short-circuit AND THEN.
+ 
+ 2020-06-15  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): In the Loop_Entry case,
+ 	replace a call to Statically_Denotes_Object with a call to
+ 	Statically_Names_Object and clean up the preceding comment.
+ 
+ 2020-06-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Set_Membership): Remove local variable.
+ 	In the non-overloaded case, call Intersect_Types on the left
+ 	operand and the first alternative to get the resolution type.
+ 	But test the subtype of the left operand to give the warning.
+ 
+ 2020-06-12  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_res.adb (Valid_Conversion): The simpler cases of
+ 	violations of the aforementioned 8.6 rule are already handled
+ 	correctly. These include cases where the operand of the type
+ 	conversion is an access parameter or a stand-alone object of an
+ 	anonymous access type. Add code to detect violations where the
+ 	operand of the type conversion is an access discriminant whose
+ 	accessibility level is tied to one of the other simpler cases.
+ 	This is implemented in a new function,
+ 	Valid_Conversion.Is_Discrim_Of_Bad_Access_Conversion_Argument,
+ 	which is called in place of the previous test.
+ 
+ 2020-06-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_attr.adb (Put_Image): Remove assertion. This assertion is
+ 	False in mixed-Ada-version programs.
+ 	* exp_put_image.adb (Tagged_Put_Image_Enabled): New flag to make
+ 	it easy to experiment with Put_Image on tagged types. False in
+ 	this version.
+ 	(Enable_Put_Image): Enable in pre-2020.  Workarounds: Disable
+ 	for tagged types if Tagged_Put_Image_Enabled is False. Disable
+ 	for access-to-subprogram types.  Disable if errors have been
+ 	detected, or Sink is unavailable.
+ 	(Preload_Sink): Move all conditionals here, from Sem_Ch10, so
+ 	they can be nearby related code in Enable_Put_Image.  Load Sink
+ 	only if we have seen a tagged type.  This removes the dilemma
+ 	about calling Preload_Sink when compiling the compiler, which
+ 	caused unwanted dependences.
+ 	* exp_put_image.ads (Preload_Sink): New formal Compilation_Unit,
+ 	needed to move all conditionals here, from Sem_Ch10.
+ 	* libgnat/a-stouut.adb (Put_UTF_8): Make this suitable for
+ 	inlining, so we don't get warnings about inlining in some tests.
+ 	And so it can be inlined!
+ 	* opt.ads (Tagged_Seen): New flag (see Preload_Sink).
+ 	* scng.adb (Scan): Set new Tagged_Seen flag.
+ 	* sem_ch10.adb (Analyze_Compilation_Unit): Move conditionals and
+ 	comments regarding Preload_Sink into Preload_Sink.
+ 
+ 2020-06-12  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Actuals): Check for AI12-0074.
+ 
+ 2020-06-12  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* libgnat/s-secsta.ads (Memory_Alignment): New constant, memory
+ 	alignment for chunks and allocated blocks. Initialize to
+ 	Standard'Maximum_Alignment * 2.
+ 	(Chunk_Memory): Use it.
+ 	* libgnat/s-secsta.adb (Round_Up): Likewise.
+ 
+ 2020-06-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-prag.adb: Fix ordering.
+ 	* snames.ads-tmpl (Name_Test_Case, Pragma_Test_Case): Likewise.
+ 	* sem_prag.adb (Sig_Flags): Likewise.
+ 
+ 2020-06-12  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Entity_Name): Fix handling of expressions
+ 	containing array attributes wrt Ada 83 detection.
+ 
+ 2020-06-12  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb: Define 3 new Boolean-valued
+ 	functions - Statically_Denotes_Entity,
+ 	Statically_Denotes_Object, and Statically_Names_Object. The
+ 	first two were taken from sem_attr.adb. The term "statically
+ 	names" is defined in the Ada RM and the new function
+ 	Statically_Names_Object is intended to reflect that definition,
+ 	or more precisely, as described in a comment in the code, to
+ 	reflect the expected future definition of that term.
+ 	* sem_attr.adb: Delete functions Statically_Denotes_Object and
+ 	Statically_Denotes_Entity; these two functions have been moved
+ 	to package Sem_Util. Replace call to Statically_Denotes_Object
+ 	with a call to Statically_Names_Object as per AI12-0217 (a
+ 	binding interpretation, so no Ada_Version check).
+ 	* exp_ch9.adb (Expand_Entry_Barrier.Is_Simple_Barrier): Change
+ 	name of function (it was previously Is_Simple_Barrier_Name)
+ 	because the function should return True in the case of a static
+ 	expression; implement this requirement.  Change function to
+ 	include a call to Statically_Names_Object so that, for Ada_2020
+ 	and later, it will return True for appropriate subcomponent
+ 	names.
+ 	(Expand_Entry_Barrier.Is_Pure_Barrier): Handle
+ 	N_Indexed_Component and N_Selected_Component cases by calling
+ 	Statically_Names_Object.
+ 	(Expand_Entry_Barrier): Reorganize to treat Simple_Barriers and
+ 	Pure_Barriers more uniformly.  Prevent cascaded errors.
+ 
+ 2020-06-12  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Find_Matching_Actual): Add guard on search loops
+ 	to detect a compilation error when using a compiler built
+ 	without assertions.
+ 	(Instantiate_Formal_Subprogram): Create a new subprogram name
+ 	for the actual only if formal has contract aspects and expansion
+ 	is enabled.
+ 
+ 2020-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb: Add with and use clauses for Sem_Mech.
+ 	(Get_Base_Object): New function to get the base object of a node.
+ 	(In_Place_Assign_OK): Add Target_Object parameter.  Deal with a
+ 	qualified expression on entry.  Remove short-circuit for array
+ 	aggregates with a single "others" choice.  Do not look into the
+ 	components of the aggregate if the parent is an allocator.
+ 	(Check_Component): Add T_OK parameter and rewrite.
+ 	(Safe_Component): Invoke Check_Component with T_OK set to False.
+ 	(Convert_To_Assignments): Try to use an in-place assignment for
+ 	any target; for that, call Get_Base_Object on the target and pass
+ 	the result to In_Place_Assign_OK.
+ 	(Expand_Array_Aggregate): Use Parent_Kind and Parent_Node more
+ 	consistently.  For an assignment, call Get_Base_Object on the
+ 	target and pass the result to In_Place_Assign_OK.
+ 
+ 2020-06-12  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* socket.c (__gnat_minus_500ms): Use GetVersionEx to detect
+ 	Windows Server version.
+ 	* libgnat/g-sothco.ads (Minus_500ms_Windows_Timeout): Remade to
+ 	Boolean constant.
+ 	* libgnat/g-socket.adb (Set_Socket_Option): Use
+ 	Minus_500ms_Windows_Timeout constant instead of function call.
+ 
+ 2020-06-12  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-coinho.ads, libgnat/a-coinho.adb,
+ 	libgnat/a-coinho__shared.ads, libgnat/a-coinho__shared.adb
+ 	(Swap): New procedure.
+ 
+ 2020-06-12  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_N_Subprogram_Declaration): Do nothing for
+ 	a subprogram declared in a protected body.
+ 	* exp_ch9.ads, exp_ch9.adb
+ 	(Build_Private_Protected_Declaration): Moved to sem_ch6.adb.
+ 	(Expand_N_Protected_Body): Do nothing for a subprogram declared
+ 	in a protected body.
+ 	* sem_ch6.adb (Build_Internal_Protected_Declaration): Moved from
+ 	exp_ch9.adb and renamed and fixed to ensure in particular that
+ 	such subprograms have convention Intrinsic and have no protected
+ 	version.
+ 	(Analyze_Subprogram_Body_Helper): Call
+ 	Build_Internal_Protected_Declaration.
+ 	(Move_Pragmas): Moved up and merged with the more general
+ 	version from Build_Private_Protected_Declaration. We only want
+ 	to copy selected pragmas, most pragmas are not suitable for a
+ 	copy on the spec.
+ 
+ 2020-06-12  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Check_Overriding_Indicatior): Reject an
+ 	overriding indicator on a subprogram declared within a protected
+ 	body.
+ 
+ 2020-06-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* contracts.adb, einfo.adb, sem_ch4.adb, sem_ch6.adb,
+ 	sem_res.adb, sem_util.adb: Replace Ekind_In with Is_Entry.
+ 
+ 2020-06-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Entry_Call): Add call to
+ 	Warn_On_Overlapping_Actuals.
+ 
+ 2020-06-12  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* aspects.ads (Is_Representation_Aspect): New array.
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications): Check
+ 	13.1(9.2/5) for representation aspects.
+ 
+ 2020-06-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_put_image.ads, exp_put_image.adb (Preload_Sink): Procedure
+ 	for preloading type Sink.  This has the side effect of loading
+ 	various dependents, including Ada.Strings.UTF_Encoding.
+ 	(Enable_Put_Image): Disable Put_Image in pre-2020 versions of
+ 	Ada.  This limitation can probably be lifted later.  Enable for
+ 	tagged types except in predefined units.  Disable for CPP types;
+ 	Put_Image is legal, just prints the type name.
+ 	* sem_attr.adb (Check_Put_Image_Attribute): Don't complain about
+ 	Put_Image of CPP types; instead call the "unknown" version of
+ 	Put_Image.
+ 	* sem_ch10.adb (Analyze_Compilation_Unit): Call Preload_Sink.
+ 
+ 2020-06-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Overlapping_Actuals): Simplify.
+ 
+ 2020-06-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Overlapping_Actuals): Remove suppression
+ 	for internal units.
+ 
+ 2020-06-12  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_strm.adb (Build_Elementary_Input_Call): Add support for 24
+ 	bits elementary types.
+ 	* rtsfind.ads: Add 24 bits integer streaming routines.
+ 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause
+ 	[Attribute_Stream_Size]): Add support for 24 bits elementary
+ 	types.
+ 	* libgnat/s-stratt.ads, libgnat/s-stratt.adb,
+ 	libgnat/s-stratt__xdr.adb: Add support for signed and unsigned
+ 	24 bits integers.
+ 
+ 2020-06-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (Get_Discr_Value): Cleanup.
+ 
+ 2020-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* rtsfind.ads (RTU_Id): Add System_Address_To_Access_Conversions.
+ 	* sem_elab.adb (Elaboration_Phase_Active): Alphabetize.
+ 	(Finalize_All_Data_Structures): Likewise.
+ 	(Error_Preelaborated_Call): New procedure.
+ 	(Build_Call_Marker): Set Is_Preelaborable_Call flag in marker.
+ 	(Build_Access_Marker): Likewise.
+ 	(Build_Subprogram_Invocation): Likewise.
+ 	(Build_Task_Activation): Likewise.
+ 	(Check_Preelaborated_Call): Return when the call is preelaborable.
+ 	Call Error_Preelaborated_Call to give the error otherwise.
+ 	(Check_Elab_Call): Likewise.
+ 	* sem_util.adb (Is_Preelaborable_Function): New predicate.
+ 	(Is_Non_Preelaborable_Construct.Visit): Recurse on the
+ 	Explicit_Actual_Parameter field of N_Parameter_Association.
+ 	(Is_Non_Preelaborable_Construct.Visit_Subexpression): In Ada 2020,
+ 	for a call to a preelaborable function, visit the parameter list;
+ 	otherwise, raise Non_Preelaborable exception.
+ 	(Is_Preelaborable_Construct): Likewise, but recursively check the
+ 	parameters instead and return false upon failure, otherwise true.
+ 	* sinfo.ads (Is_Preelaborable_Call): New flag in call marker nodes.
+ 	(Is_Preelaborable_Call): New inline function.
+ 	(Set_Is_Preelaborable_Call): New inline procedure.
+ 	* sinfo.adb (Is_Preelaborable_Call): New inline function.
+ 	(Set_Is_Preelaborable_Call): New inline procedure.
+ 
+ 2020-06-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* stringt.ads: Remove "use System;".
+ 
+ 2020-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch4.adb (Try_Container_Indexing): Replace call to
+ 	First_Discriminant by Get_Reference_Discriminant to get the
+ 	reference discriminant.
+ 	* sem_ch13.adb (Check_Indexing_Functions): Likewise.
+ 	* sem_ch5.adb (Preanalyze_Range): Call Get_Reference_Discriminant
+ 	to get the reference discriminant.
+ 	* sem_util.adb (Is_OK_Variable_For_Out_Formal): Treat all
+ 	Ada 2012 implicit dereferences in only one place.
+ 	(Is_Variable): Minor tweak.
+ 
+ 2020-06-12  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Has_Contracts): New predicate to check whether a
+ 	formal subprogram carries an aspect specification for a pre- or
+ 	postcondition.
+ 	(Build_Subprogram_Wrappers): If actual is overloaded, create a
+ 	new name to be used in call inside wrapper body. This names
+ 	carries the interpretations of the actual, and is resolved when
+ 	the body is analyzed.
+ 	(Build_Subprogram_Body_Wrapper): Use this generated name in
+ 	call.
+ 	(Build_Subprogram_Decl_Wrapper): Build profile of wrapper from
+ 	the profile of formal, and reset type entities for subsequent
+ 	analysis.
+ 
+ 2020-06-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* debug.adb: Remove usage of -gnatd_z.
+ 	* exp_attr.adb, exp_put_image.ads, exp_put_image.adb: Clean up
+ 	the enable/disable code. If Put_Image is disabled for a type,
+ 	systematically call the "unknown" version.  Improve comments.
+ 	Consolidate workarounds.  Remove usage of -gnatd_z.
+ 
+ 2020-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_elab.adb: Fix typos in comments.
+ 
+ 2020-06-12  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_util.adb (Object_Access_Level): Add processing of implicit
+ 	dereferences.
+ 
+ 2020-06-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads,
+ 	libgnat/a-nbnbin__gmp.adb, libgnat/a-nbnbre.adb,
+ 	libgnat/a-nbnbre.ads: Update Put_Image, and uncomment the aspect
+ 	specification.  Add pragmas Ada_2020.
+ 	* libgnat/a-stouut.ads, libgnat/a-stteou.ads: Add Preelaborate,
+ 	because the Big_Numbers packages have Preelaborate, and now
+ 	depend on these Text_Output packages.
+ 
+ 2020-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (No_Return): Document it for all subprograms.
+ 	* einfo.adb (Set_No_Return): Adjust assertion accordingly.
+ 	* sem_ch3.adb (Check_Abstract_Overriding): Implement the
+ 	check prescribed by RM 6.5.1(6/2) here instead of...
+ 	(Derive_Subprogram): Adjust comment accordingly.
+ 	* sem_disp.adb (Override_Dispatching_Operation): ...here.
+ 	Remove superfluous return statement.
+ 	* sem_ch6.adb (Check_No_Return_Expression): New procedure.
+ 	(Analyze_Function_Return): Call it to implement the check
+ 	prescribed by AI12-0269 for simple return statements of
+ 	No_Return functions, and also checks extended statements.
+ 	(Analyze_Return_Statement): Only give an error on a return
+ 	statement in No_Return procedures.  Use idiomatic form.
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming): Adjust error
+ 	message for No_Return renaming subprogram.
+ 	* sem_prag.adb (Analyze_Pragma) <Pragma_No_Return>: Accept
+ 	it on functions and generic functions in Ada 2020.
+ 
+ 2020-06-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Implicit_Dereference): In an instance,
+ 	reset the type of the prefix if it is private before building
+ 	the dereference.
+ 
+ 2020-06-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.adb (Safe_Unchecked_Type_Conversion): Add missing
+ 	Is_Type guard before calling Has_Discriminants on Etype.
+ 
+ 2020-06-11  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/a-nbnbin__gmp.adb: There's no Optional_Big_Integer
+ 	anymore.  Invalid_Big_Integer is not used.
+ 	Greatest_Common_Divisor returns Big_Positive.
+ 
+ 2020-06-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Get_Value): Refine type of the Compon parameter.
+ 
+ 2020-06-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Record_Aggregate): Refine type of
+ 	Others_Box.
+ 
+ 2020-06-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* checks.adb, exp_ch7.adb, exp_ch9.adb, exp_smem.adb, lib.adb,
+ 	nlists.adb, sem.adb, sem_aggr.adb, sem_ch3.adb, sem_ch6.adb,
+ 	sem_ch8.adb, sem_dim.adb, sem_res.adb, sem_util.adb,
+ 	sem_warn.adb: Replace uses of Next function with procedure.
+ 
+ 2020-06-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_pakd.ads: Add paragraph about scalar storage order.
+ 	* exp_pakd.adb (Install_PAT): Do not set the scalar storage
+ 	order of the PAT here but...
+ 	(Set_PB_Type): ...here instead and...
+ 	(Create_Packed_Array_Impl_Type): ...here as well.
+ 	* rtsfind.ads (RE_Id): Add RE_Rev_Packed_Bytes{1,2,4}.
+ 	(RE_Unit_Table): Likewise.
+ 	* libgnat/s-unstyp.ads (Rev_Packed_Bytes1): New derived type.
+ 	(Rev_Packed_Bytes2): Likewise.
+ 	(Rev_Packed_Bytes4): Likewise.
+ 
+ 2020-06-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch4.adb, sem_ch6.adb, sem_res.adb, sem_util.ads: Fix
+ 	references to SPARK RM 7.1.3 rule numbers.
+ 
+ 2020-06-11  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Overlapping_Actuals): Simplify code,
+ 	remove inner predicate Is_Covered_Formal, preserve warning for
+ 	two overlapping composite types when only one is writable, and
+ 	for two overlapping and writable elementary types.
+ 
+ 2020-06-11  Steve Baird  <baird@adacore.com>
+ 
+ 	* contracts.adb (Add_Contract_Item): Support specifying
+ 	volatility refinement aspects for types.
+ 	(Analyze_Contracts): Add call to Analyze_Type_Contract in the
+ 	case of a contract for a type.
+ 	(Freeze_Contracts): Add call to Analyze_Type_Contract in the
+ 	case of a contract for a type.
+ 	(Check_Type_Or_Object_External_Properties): A new procedure
+ 	which performs the work that needs to be done for both object
+ 	declarations and types.
+ 	(Analyze_Object_Contract): Add a call to
+ 	Check_Type_Or_Object_External_Properties and remove the code in
+ 	this procedure which did much of the work that is now performed
+ 	by that call.
+ 	(Analyze_Type_Contract): Implement this new routine as nothing
+ 	more than a call to Check_Type_Or_Object_External_Properties.
+ 	* contracts.ads: Update comment for Add_Contract_To_Item because
+ 	types can have contracts.  Follow (questionable) precedent and
+ 	declare new routine Analyze_Type_Contract as visible (following
+ 	example of Analyze_Object_Contract), despite the fact that it is
+ 	never called from outside of the package where it is declared.
+ 	* einfo.adb (Contract, Set_Contract): Id argument can be a type;
+ 	support this case.
+ 	(Write_Field34_Name): Field name is "contract" for a type.
+ 	* einfo.ads: Update comment describing Contract attribute.
+ 	* sem_ch3.adb (Build_Derived_Numeric_Type): Is_Volatile should
+ 	return same answer for all subtypes of a given type. Thus, when
+ 	building the base type for something like type Volatile_1_To_10
+ 	is range 1 .. 10 with Volatile; that basetype should be marked
+ 	as being volatile.
+ 	(Access_Type_Declaration): Add SPARK-specific legality check
+ 	that the designated type of an access type shall be compatible
+ 	with respect to volatility with the access type.
+ 	* sem_ch12.adb (Check_Shared_Variable_Control_Aspects): Add
+ 	SPARK-specific legality check that an actual type parameter in
+ 	an instantiation shall be compatible with respect to volatility
+ 	with the corresponding formal type.
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications): Perform checks
+ 	for aspect specs for the 4 volatility refinement aspects that
+ 	were already being performed for all language-defined aspects.
+ 	* sem_prag.adb (Analyze_External_Property_In_Decl_Part,
+ 	Analyze_Pragma): External properties (other than No_Caching) may
+ 	be specified for a type, including a generic formal type.
+ 	* sem_util.ads: Declare new subprograms - Async_Readers_Enabled,
+ 	Async_Writers_Enabled, Effective_Reads, Effective_Writes, and
+ 	Check_Volatility_Compatibility.
+ 	* sem_util.adb (Async_Readers_Enabled, Async_Writers_Enabled,
+ 	Effective_Reads, Effective_Writes): Initial implementation of
+ 	new functions for querying aspect values.
+ 	(Check_Volatility_Compatibility): New procedure intended for use
+ 	in checking all SPARK legality rules of the form "<> shall be
+ 	compatible with respect to volatility with <>".
+ 	(Has_Enabled_Property): Update comment because Item_Id can be a
+ 	type.  Change name of nested Variable_Has_Enabled_Property
+ 	function to Type_Or_Variable_Has_Enabled_Property; add a
+ 	parameter to that function because recursion may be needed,
+ 	e.g., in the case of a derived typ).  Cope with the case where
+ 	the argument to Has_Enabled_Property is a type.
+ 
+ 2020-06-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Add_Association): Add assertion about the formal
+ 	parameters.
+ 	(Propagate_Discriminants): Always add an explicit component
+ 	association, so that an "others => <>" association is never
+ 	needed.
+ 
+ 2020-06-11  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_put_image.adb (Build_Elementary_Put_Image_Call): If the
+ 	underlying type is real, call Put_Image_Unknown.
+ 	(Build_Unknown_Put_Image_Call): Pass the type name to
+ 	Put_Image_Unknown.
+ 	* libgnat/s-putima.ads, libgnat/s-putima.adb
+ 	(Put_Image_Unknown): Add Type_Name parameter.  Remove
+ 	overly-detailed documentation of what it does; better to leave
+ 	it open.
+ 
+ 2020-06-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (Build_Constrained_Array_Type,
+ 	Build_Constrained_Discriminated_Type): Skip unnecessary loop
+ 	iterations.
+ 
+ 2020-06-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Build_Constrained_Itype): Move to Sem_Util.
+ 	* sem_ch3.adb (Build_Subtype, Inherit_Predicate_Flags): Move...
+ 	* sem_util.adb (Build_Subtype): Here.  Add parameters for
+ 	references to objects previously declared in enclosing scopes.
+ 	(Inherit_Predicate_Flags): And here, because it is called by
+ 	Build_Subtype.
+ 	* sem_util.ads (Build_Overriding_Spec): Reorder alphabetically.
+ 	(Build_Subtype): Moved from Sem_Ch3; comments updated.
+ 	(Build_Constrained_Itype): Moved from Sem_Aggr; comments
+ 	updated.
+ 
+ 2020-06-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Case_Table_Type): Change index type from Nat to
+ 	Pos.
+ 
+ 2020-06-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Build_Constrained_Itype): Previously a declare
+ 	block, now a separate procedure; the only change is that now
+ 	New_Assoc_List might include components and an others clause,
+ 	which we ignore (while we deal with discriminants exactly as we
+ 	did before); extend a ??? comment about how this routine is
+ 	different from the Build_Subtype
+ 	(Resolve_Record_Aggregate): Create a constrained itype not just
+ 	for the outermost record aggregate, but for its inner record
+ 	aggregates as well.
+ 
+ 2020-06-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.adb (Build_Discriminant_Checks): Build an explicit
+ 	dereference when the type is an access type.
+ 	* exp_atag.adb (Build_CW_Membership): Add explicit dereferences.
+ 	(Build_Get_Access_Level): Likewise.
+ 	(Build_Get_Alignment): Likewise.
+ 	(Build_Inherit_Prims): Likewise.
+ 	(Build_Get_Transportable): Likewise.
+ 	(Build_Set_Size_Function): Likewise.
+ 	* exp_ch3.adb (Build_Offset_To_Top_Function): Likewise.
+ 	* exp_ch4.adb (Expand_Allocator_Expression): Likewise.
+ 	(Expand_N_Indexed_Component ): Remove code dealing with implicit
+ 	dereferences.
+ 	(Expand_N_Selected_Component): Likewise.
+ 	(Expand_N_Slice): Likewise.
+ 	* exp_ch9.adb (Add_Formal_Renamings): Add explicit dereference.
+ 	(Expand_Accept_Declarations): Likewise.
+ 	(Build_Simple_Entry_Call): Remove code dealing with implicit
+ 	dereferences.
+ 	(Expand_N_Requeue_Statement): Likewise.
+ 	* exp_disp.adb (Expand_Dispatching_Call): Build an explicit
+ 	dereference when the controlling type is an access type.
+ 	* exp_spark.adb (Expand_SPARK_N_Selected_Component): Delete.
+ 	(Expand_SPARK_N_Slice_Or_Indexed_Component): Likewise.
+ 	(Expand_SPARK): Do not call them.
+ 	* sem_ch4.adb (Process_Implicit_Dereference_Prefix): Delete.
+ 	(Process_Indexed_Component): Call Implicitly_Designated_Type
+ 	to get the designated type for an implicit dereference.
+ 	(Analyze_Overloaded_Selected_Component): Do not insert an
+ 	explicit dereference here.
+ 	(Analyze_Selected_Component): Likewise.
+ 	(Analyze_Slice): Call Implicitly_Designated_Type to get the
+ 	designated type for an implicit dereference.
+ 	* sem_ch8.adb (Has_Components): New predicate extracted from...
+ 	(Is_Appropriate_For_Record): ...this.  Delete.
+ 	(Is_Appropriate_For_Entry_Prefix): Likewise.
+ 	(Analyze_Renamed_Entry): Deal with implicit dereferences.
+ 	(Find_Selected_Component): Do not insert an explicit dereference
+ 	here.  Call Implicitly_Designated_Type to get the designated type
+ 	for an implicit dereference.  Call Has_Components, Is_Task_Type
+ 	and Is_Protected_Type directly.  Adjust test for error.
+ 	* sem_res.adb (Resolve_Implicit_Dereference): New procedure.
+ 	(Resolve_Call): Call Resolve_Indexed_Component last.
+ 	(Resolve_Entry): Call Resolve_Implicit_Dereference on the prefix.
+ 	(Resolve_Indexed_Component): Call Implicitly_Designated_Type to
+ 	get the designated type for an implicit dereference and
+ 	Resolve_Implicit_Dereference on the prefix at the end.
+ 	(Resolve_Selected_Component): Likewise.
+ 	(Resolve_Slice): Likewise.  Do not apply access checks here.
+ 	* sem_util.ads (Implicitly_Designated_Type): Declare.
+ 	* sem_util.adb (Copy_And_Maybe_Dereference): Simplify.
+ 	(Implicitly_Designated_Type): New function.
+ 	(Object_Access_Level): Fix typo.
+ 	* sem_warn.adb (Check_Unset_Reference): Test Comes_From_Source
+ 	on the original node.
+ 
+ 2020-06-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_disp.adb: Minor reformatting.
+ 	* exp_aggr.adb (Is_Static_Dispatch_Table_Aggregate): Recognize
+ 	aggregates of the Ada.Tags.Object_Specific_Data type as static.
+ 	* sem_aggr.adb (Check_Static_Discriminated_Subtype): Deconstruct
+ 	and do not call it from Build_Constrained_Itype.
+ 
+ 2020-06-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_disp.adb (Make_Secondary_DT): Internally generated OSD
+ 	tables are now constant.
+ 
+ 2020-06-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_aggr.adb (Backend_Processing_Possible): Remove useless
+ 	call.
+ 
+ 2020-06-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* opt.ads (Building_Static_Dispatch_Tables): Fix punctuation in
+ 	comment.
+ 
+ 2020-06-11  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/s-stposu.ads (Root_Storage_Pool_With_Subpools,
+ 	Root_Subpool): Mark with Preelaborable_Initialization.
+ 
+ 2020-06-11  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch9.adb (Expand_N_Conditional_Entry_Call): Replace call to
+ 	New_Copy_List by calls to the new routine
+ 	New_Copy_Separate_List.
+ 	* sem_util.ads (New_Copy_Separate_List, New_Copy_Separate_Tree):
+ 	New routines.
+ 	* sem_util.adb (New_Copy_Separate_List, New_Copy_Separate_Tree):
+ 	New routines.
+ 	(New_Copy_Tree): Extend the machinery that detects syntactic
+ 	nodes to handle lists of indentifiers with field More_Ids;
+ 	otherwise such nodes are erroneously handled as semantic nodes.
+ 	Copy aspect specifications attached to nodes.
+ 	* sem_ch12.adb (Copy_Generic_Node): Protect reading attribute
+ 	Etype.
+ 
+ 2020-06-11  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications): Do not set the
+ 	Has_Predicates flag when the Predicate_Failure aspect is seen.
+ 	It is legal (but pointless) to use this aspect without a
+ 	predicate.  If we set the flag, we generate a half-baked
+ 	Predicate procedure, and if that procedure is nested, it causes
+ 	unnesting to crash.
+ 
+ 2020-06-11  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_put_image.adb (Build_Record_Put_Image_Procedure): Remove
+ 	special processing of protected types, because those are handled
+ 	by Build_Protected_Put_Image_Call.
+ 	(Enable_Put_Image): Use the switch -gnatd_z to control enabling
+ 	of Put_Image. Disable Put_Image for types in Remote_Types
+ 	packages.
+ 	* debug.adb: Document -gnatd_z switch.
+ 	* exp_imgv.adb, libgnat/a-stteou.ads, opt.ads: Minor cleanups.
+ 
+ 2020-06-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Overlapping_Actuals): Add label to the
+ 	outer loop and use it in the exit statement.
+ 
+ 2020-06-11  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Assignment): Generate predicate check if
+ 	subtype mark has predicate.
+ 
+ 2020-06-11  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_util.adb (Expand_N_Attribute_Reference): Use original
+ 	nodes where required to avoid looking at the expanded tree.
+ 
+ 2020-06-11  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-catizo.ads, libgnat/a-nbnbin.ads,
+ 	libgnat/a-nbnbre.ads, libgnat/a-nubinu.ads,
+ 	libgnat/s-aoinar.ads, libgnat/s-aomoar.ads,
+ 	libgnat/s-aotase.ads, libgnat/s-stopoo.ads: Remove aspects that
+ 	we will not implement.
+ 
+ 2020-06-11  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/s-aoinar.adb (Atomic_Fetch_And_Add,
+ 	Atomic_Fetch_And_Subtract): Add fallback using
+ 	compare-and-exchange, in case the integer type does not map to a
+ 	machine type.
+ 
+ 2020-06-10  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/s-aomoar.ads, libgnat/s-aomoar.adb: New files.
+ 	* libgnat/s-atopar.ads: Move...
+ 	* libgnat/s-aoinar.ads: Here.
+ 	* libgnat/s-atopar.adb: Move...
+ 	* libgnat/s-aoinar.adb: Here.
+ 	* impunit.adb: Update list of runtime files.
+ 	* Makefile.rtl (GNATRTL_NONTASKING_OBJS=): Adjust.
+ 
+ 2020-06-10  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* snames.ads-tmpl (Name_Characters_Assertion_Check,
+ 	Name_Containers_Assertion_Check,
+ 	Name_Interfaces_Assertion_Check, Name_IO_Assertion_Check,
+ 	Name_Numerics_Assertion_Check, Name_Strings_Assertion_Check,
+ 	Name_System_Assertion_Check): New constants.
+ 	* types.ads (Characters_Assertion_Check,
+ 	Containers_Assertion_Check, Interfaces_Assertion_Check,
+ 	IO_Assertion_Check, Numerics_Assertion_Check,
+ 	Strings_Assertion_Check, System_Assertion_Check): New constants.
+ 	(All_Checks): Update accordingly.
+ 
+ 2020-06-10  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Equivalent_Record_Aggregate): Return Empty
+ 	if Etype of record component has predicates.
+ 
+ 2020-06-10  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Init_Statements): Implement the notion of
+ 	"require late initialization".
+ 
+ 2020-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.adb (Copy_And_Maybe_Dereference): Temporarily copy
+ 	the parent node of the original tree when dereferencing.
+ 
+ 2020-06-10  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Overlapping_Actuals): Add a warning when
+ 	two actuals in a call overlap, both are composite types that may
+ 	be passed by reference, and only one of them is writable.
+ 
+ 2020-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_In): Use an expression with actions to
+ 	insert the PE raise statement for the Unchecked_Union case.
+ 
+ 2020-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Call): Use idiomatic condition.
+ 	* sem_res.adb (Resolve_Call): Remove obsolete code.
+ 
+ 2020-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.adb (Copy_And_Maybe_Dereference): New function.
+ 	(Build_Access_Record_Constraint): Use it to copy the prefix.
+ 	(Build_Actual_Array_Constraint): Likewise.
+ 	(Build_Actual_Record_Constraint): Likewise.
+ 
+ 2020-06-10  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_prag.adb (Invariant): Remove the pragma removing code.  It
+ 	doesn't work to remove the pragma, because various flags are set
+ 	during Build_Invariant_Procedure_Declaration and
+ 	Build_Invariant_Procedure_Body that need to be set to avoid the
+ 	spurious warnings.
+ 	* exp_util.adb (Make_Invariant_Call): Avoid calling the
+ 	invariant-checking procedure if the body is empty. This is an
+ 	optimization.
+ 
+ 2020-06-10  Vasiliy Fofanov  <fofanov@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_utility_programs.rst: Fix gnatmetric
+ 	switches description.
+ 
+ 2020-06-10  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* repinfo-input.ads, repinfo-input.adb, repinfo.adb,
+ 	repinfo.ads: Update header.
+ 
+ 2020-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb (In_Place_Assign_OK): Do not necessarily return
+ 	false for a type with discriminants.
+ 	(Convert_To_Assignments): Use Parent_Node and Parent_Kind more
+ 	consistently.  In the in-place assignment case, first apply a
+ 	discriminant check if need be, and be prepared for a rewritten
+ 	aggregate as a result.
+ 
+ 2020-06-10  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* atree.adb, contracts.adb, debug.adb, freeze.adb,
+ 	repinfo-input.adb, repinfo.adb, sem_attr.adb, sem_ch10.adb,
+ 	sem_ch13.adb, sem_ch3.adb, sem_ch5.adb, sem_ch6.adb,
+ 	sem_ch8.adb, sem_ch9.adb, sem_disp.adb, sem_eval.adb,
+ 	sem_prag.adb: Remove more references to ASIS.
+ 
+ 2020-06-10  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/s-secsta.adb (Round_Up): Fix typo in exception
+ 	message.
+ 
+ 2020-06-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-ch4.adb (P_Membership_Test): Fix typo in a grammar rule.
+ 
+ 2020-06-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Remove
+ 	expansion of First and Last attributes.
+ 
+ 2020-06-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Remove folding
+ 	for Enum_Rep attribute.
+ 	* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Remove
+ 	duplicated code for folding Enum_Rep attribute.
+ 	* sem_attr.adb (Eval_Attribute): Relax condition for folding
+ 	Enum_Rep attribute; previously dead code is now executed when
+ 	the attribute prefix is an enumeration literal; refine type in
+ 	processing of Enum_Val.
+ 
+ 2020-06-10  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Declarations): Adjust the machinery that
+ 	takes care of late body overriding of initialize, adjust,
+ 	finalize.  Remove ASIS mode code.
+ 
+ 2020-06-10  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* einfo.ads (Access_Subprogram_Wrapper): New attribute of
+ 	Subprogram_Type entities. Denotes subprogram constructed for
+ 	Access_To_Subprogram types that include pre- and postconditions.
+ 	* einfo.adb: Subprogram bodies for Access_Subprogram_Wrapper.
+ 	* exp_ch6.adb (Expand_Call): An indirect call through an
+ 	Access_To_subprogram that includes contracts is rewritten as a
+ 	call to the corresponding Access_ ubprogram_Wrapper. Handle
+ 	derived types that inherit contract from parent.
+ 	* sem_prag.adb (Build_Access_Subprogram_Wrapper): Build
+ 	subprogram declaration for subprogram that incorporates the
+ 	contracts of an Access_To_Subprogram type declaration. Build
+ 	corresponding body and attach it to freeze actions for type.
+ 	* sem_util.ads, sem_util.adb (Is_Access_Subprogram_Wrapper):
+ 	Utility that uses signature of the subprogram to determine
+ 	whether it is a generated wrapper for an Access_To_Subprogram
+ 	type.
+ 
+ 2020-06-10  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* par-ch6.adb (P_Subprogram): Make sure the specification
+ 	belongs to a procedure.
+ 
+ 2020-06-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (All_Membership_Choices_Static): Assert an AST
+ 	property documented in sinfo.ads and simplify an excessive
+ 	condition.
+ 
+ 2020-06-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Fix a copy-paste
+ 	mistake in comment.
+ 	* sem_res.adb (Flag_Effectively_Volatile_Objects): Fix a type in
+ 	the SPARK RM rule number.
+ 	* exp_ch4.adb, sem_util.adb: Fix style in single line comments.
+ 
+ 2020-06-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aux.ads, sem_aux.adb (Get_Low_Bound): Remove.
+ 
+ 2020-06-10  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* scn.adb (Determine_License): Remove.
+ 
+ 2020-06-10  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Add condition to
+ 	handle processing of objects initialized by a call to a function
+ 	return an anonymous access type.
+ 	* exp_ch6.adb, exp_ch6.ads
+ 	(Has_Unconstrained_Access_Discriminants): Moved to sem_util.adb
+ 	(Needs_Result_Accessibility_Level): Moved to sem_util.adb
+ 	* sem_util.adb, sem_util.ads
+ 	(Has_Unconstrained_Access_Discriminants): Moved from exp_ch6.adb
+ 	(Needs_Result_Accessibility_Level): Moved from exp_ch6.adb
+ 	* sem_res.adb (Valid_Conversion): Add condition for the special
+ 	case where the operand of a conversion is the result of an
+ 	anonymous access type
+ 
+ 2020-06-10  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* par-ch6.adb (P_Subprogram): Reject duplicate subprogram
+ 	declarations.
+ 
+ 2020-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Insert_Post_Call_Actions): Deal with the context
+ 	of an if-expression and with a call written in prefixed notation.
+ 
+ 2020-06-10  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* einfo.ads: Minor reformatting of a comment.
+ 	* exp_aggr.adb: Minor reformatting and a grammar correction.
+ 	* exp_attr.adb: Minor reformatting and a typo fix in some
+ 	comments.
+ 	* sem_ch12.adb: Fix three typos in comments.
+ 
+ 2020-06-09  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch6.adb (New_Overloaded_Entity): Add missing call to check
+ 	subtype conformance of overriding dispatching primitive.
+ 	* sem_eval.adb (Subtypes_Statically_Match): Handle derivations
+ 	of private subtypes.
+ 	* libgnat/g-exptty.adb, libgnat/g-exptty.ads
+ 	(Set_Up_Communications): Fix the profile since null-exclusion is
+ 	missing in the access type formals.
+ 	* sem_disp.ads (Check_Operation_From_Private_View): Adding
+ 	documentation.
+ 
+ 2020-06-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (XEINFO section): Update format description.
+ 	(Is_Subprogram_Or_Entry): Move pragma to regular section.
+ 	(Is_Subprogram_Or_Generic_Subprogram): Likewise.
+ 	* xeinfo.adb (Get_B4): Rename to...
+ 	(Get_B0): ...this.
+ 	(Translate_Expr): New procedure extracted from...
+ 	(XEinfo): ...here.  Try to apply Get_B0 first and then
+ 	call Translate_Expr to translate supported constructs.
+ 
+ 2020-06-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Freeze_Subprogram): Deal with convention C_Family.
+ 	* freeze.adb (Freeze_Profile): Likewise.  Add missing guard.
+ 	* sem_mech.adb (Set_Mechanisms): Likewise.
+ 	* lib-xref.adb (Output_Import_Export_Info): Ditto for C_Variadic.
+ 	* repinfo.adb (List_Subprogram_Info): Likewise.
+ 	* sem_prag.adb (Set_Convention_From_Pragma): Move main checks for
+ 	Stdcall to...
+ 	(Process_Convention): ...here.  Add checks for C_Variadic.
+ 	* snames.ads-tmpl: Add Name_C_Variadic_0 .. Name_C_Variadic_16.
+ 	Use consistent format for subtype declarations.
+ 	(Convention_Id): Add Convention_C_Variadic_0 .. C_Variadic_16
+ 	and move Convention_CPP up.
+ 	(Convention_C_Family): New subtype of Convention_Id.
+ 	(Convention_C_Variadic): Likewise.
+ 	(Foreign_Convention): Use explicit upper bound.
+ 	Add pragma Inline for Is_Configuration_Pragma_Name,
+ 	Is_Function_Attribute_Name, Is_Internal_Attribute_Name
+ 	and Is_Procedure_Attribute_Name.
+ 	* snames.adb-tmpl (Get_Convention_Id): Deal with Name_Variadic_n.
+ 	(Get_Convention_Name): Deal with Convention_Variadic_n.
+ 	* types.h (Convention_Id): New typedef.
+ 	* xsnamest.adb (Name2): New variable.
+ 	(Is_Conv): New pattern.
+ 	(Get_Subt1): Likewise.
+ 	(Get_Subt2): Likewise.
+ 	Output subtypes of Convention_Id into the C header file.
+ 
+ 2020-06-09  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch3.adb, exp_ch4.adb, exp_ch6.adb, exp_ch9.adb,
+ 	exp_disp.adb, exp_util.adb: Add comments related to errors that
+ 	should be moved to semantic analysis. Also replace "?" with "??"
+ 	in warning messages.
+ 
+ 2020-06-09  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-strunb__shared.ads, libgnat/a-strunb__shared.adb
+ 	(Reference, Unreference): No-op for Empty_Shared_String.
+ 	Remove unneeded calls to Reference.
+ 
+ 2020-06-09  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_N_Assignment): Remove kludge for
+ 	AI05-0087.
+ 	* sem_ch12.adb (Validate_Derived_Type_Instance): Implement
+ 	AI05-0087 retroactively since it's a binding interpretation.
+ 
+ 2020-06-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Has_Foreign_Convention): Fix description.
+ 	(Component_Alignment): Move around.
+ 	(Has_DIC): Likewise.
+ 	(Has_Interrupt_Handler): Likewise.
+ 	(Has_Invariants): Likewise.
+ 	(Is_Atomic_Or_VFA): Likewise.
+ 	(Next_Index): Likewise.
+ 	(Scope_Depth): Likewise.
+ 	(Init_Component_Size): Likewise.
+ 	(Init_Component_Location): Likewise.
+ 	(Init_Size): Likewise.
+ 	(Inline Pragmas for functions): Add Corresponding_Function,
+ 	Corresponding_Procedure, Entry_Max_Queue_Lengths_Array,
+ 	Finalize_Storage_Only, Has_DIC, Has_Invariants,
+ 	Initialization_Statements, Is_Anonymous_Access_Type,
+ 	Next_Stored_Discriminant, Address_Clause, Alignment_Clause,
+ 	Float_Rep, Has_Foreign_Convention, Has_Non_Limited_View,
+ 	Is_Constant_Object, Is_Discriminal, Is_Finalizer, Is_Null_State,
+ 	Is_Prival, Is_Protected_Component, Is_Protected_Record_Type,
+ 	Is_Subprogram_Or_Entry, Is_Task_Record_Type, Size_Clause,
+ 	Stream_Size_Clause, Type_High_Bound, Type_Low_Bound, Known_*,
+ 	Unknown_*.
+ 	(Inline Pragmas for procedures): Add Set_Corresponding_Function,
+ 	Set_Corresponding_Procedure, Set_Finalize_Storage_Only,
+ 	Set_Float_Rep, Set_Initialization_Statements,
+ 	Init_Normalized_First_Bit, Init_Normalized_Position,
+ 	Init_Normalized_Position_Max.
+ 	* einfo.adb (Was_Hidden): Move around.
+ 	(Is_Packed_Array): Likewise.
+ 	(Model_Emin_Value): Likewise.
+ 	(Model_Epsilon_Value): Likewise.
+ 	(Model_Mantissa_Value): Likewise.
+ 	(Model_Small_Value): Likewise.
+ 
+ 2020-06-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Check_Shared_Variable_Control_Aspects): Require
+ 	exact match between formal and actual for aspects Atomic and
+ 	Volatile only for formal derived types.
+ 
+ 2020-06-09  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_util.adb (Side_Effect_Free): Improve handling of
+ 	N_Aggregate.
+ 
+ 2020-06-09  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Qualified_Expression): Use Subtype_Mark
+ 	type.
+ 
+ 2020-06-09  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_aggr.adb (Max_Aggregate_Size): New function to factorize
+ 	code.
+ 	(Convert_To_Positional, Aggr_Size_OK): Use Max_Aggregate_Size.
+ 
+ 2020-06-09  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Set_Debug_Info_Defining_Id): New.
+ 	* exp_ch3.adb, exp_ch8.adb: Call Set_Debug_Info_Defining_Id when
+ 	relevant.
+ 
+ 2020-06-09  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* einfo.ads (Returns_By_Ref): Modify documentation to reflect
+ 	that Returns_By_Ref can be applied to E_Subprogram_Type
+ 	entities.
+ 
+ 2020-06-09  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Modify expansion
+ 	of 'Overlaps_Storage to take into account zero sized arrays.
+ 
+ 2020-06-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* bindo-graphs.adb, bindo-graphs.ads: For each invocation graph,
+ 	record the corresponding library graph.
+ 	* bindo-writers.adb (Write_Invocation_Graph_Vertex): Print the
+ 	lib item name. Remove library graph parameters.
+ 	* bindo-augmentors.adb, bindo-augmentors.ads,
+ 	bindo-builders.adb, bindo-diagnostics.adb,
+ 	bindo-diagnostics.ads, bindo-elaborators.adb: Remove library
+ 	graph parameters.
+ 
+ 2020-06-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.adb (Apply_Predicate_Check): Extend trick used for
+ 	aggregates to qualified aggregates and object declarations
+ 	* einfo.ads (Has_Own_DIC): Mention the underlying full view.
+ 	(Has_Own_Invariants): Likewise.
+ 	(Has_Predicates): Likewise.
+ 	* exp_util.adb (Build_DIC_Procedure_Declaration): Do not deal
+ 	with base types explicitly but with underlying full views.
+ 	(Build_Invariant_Procedure_Declaration): Likewise.
+ 	* sem_ch13.adb (Build_Predicate_Functions): Do not deal with
+ 	the full view manually but call Propagate_Predicate_Attributes
+ 	to propagate attributes to views.
+ 	(Build_Predicate_Function_Declaration): Likewise.
+ 	* sem_ch3.adb (Build_Assertion_Bodies_For_Type): Build bodies
+ 	for private full views with an underlying full view.
+ 	(Build_Derived_Private_Type): Small comment tweak.
+ 	(Complete_Private_Subtype): Call Propagate_Predicate_Attributes.
+ 	(Process_Full_View): Do not deal with base types explicitly for
+ 	DIC and Invariant attributes.  Deal with underlying full views
+ 	for them.  Call Propagate_Predicate_Attributes and deal with
+ 	underlying full views for them.
+ 	* sem_ch7.adb (Preserve_Full_Attributes): Do not cross propagate
+ 	DIC and Invariant attributes between full type and its base type.
+ 	Propagate Predicate attributes from the full to the private view.
+ 	* sem_ch9.adb (Analyze_Protected_Type_Declaration): Likewise.
+ 	(Analyze_Task_Type_Declaration): Likewise.
+ 	* sem_util.ads (Get_Views): Remove Full_Base parameter and add
+ 	UFull_Typ parameter.
+ 	(Propagate_Predicate_Attributes): New procedure.
+ 	* sem_util.adb (Get_Views): Remove Full_Base parameter and add
+ 	UFull_Typ parameter.  Retrieve the Corresponding_Record_Type
+ 	from the underlying full view, if any.
+ 	(Propagate_DIC_Attributes): Remove useless tests.
+ 	(Propagate_Invariant_Attributes): Likewise.
+ 	(Propagate_Predicate_Attributes): New procedure.
+ 
+ 2020-06-09  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_Predicated_Loop): Perserve the original
+ 	loop identifier within the expansion.
+ 
+ 2020-06-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* bindo-graphs.ads (Library_Graph_Edge_Kind): Reorder enumerals
+ 	to reflect the order of adding edges. Clarify comments.
+ 	* bindo-graphs.adb (Add_Edge_Kind_Check): Correct the
+ 	assertions.  Reorder the "when"s to match the order of adding
+ 	edges, and therefore the order of enumerals in type
+ 	Library_Graph_Edge_Kind.  Change names to "Old_" and "New_" to
+ 	clarify what's what.  Combine Invocation_Edge into the "<="
+ 	test.  Fix the "raise Program_Error" message, which was
+ 	backwards.
+ 
+ 2020-06-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* bindo-graphs.adb (Add_Edge_Kind_Check): Add the Image of the
+ 	old and new Kinds to the raise Program_Error message.
+ 
+ 2020-06-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Is_Visible_Component): Do not special-case
+ 	bodies of instances.
+ 
+ 2020-06-09  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_In): Fix handling of null exclusion.
+ 
+ 2020-06-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Check_Shared_Variable_Control_Aspects): Require
+ 	exact match between formal and actual for aspects Atomic,
+ 	Atomic_Component, Volatile, and Volatile_Components.
+ 
+ 2020-06-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_utility_programs.rst: Add documentation for
+ 	the --no-separate-return switch of gnatpp.
+ 
+ 2020-06-09  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Constant_Valid_Condition): Add proper
+ 	warning tag.
+ 
+ 2020-06-09  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_type.adb (Covers): Fix implementation of AI05-0149.
+ 	* sem_res.adb: Fix typo.
+ 
+ 2020-06-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch9.adb (Build_Master_Renaming): Make name in renaming
+ 	declaration unique by adding a numeric suffix, to prevent
+ 	accidental name conflict when several instantiations of a
+ 	package containing an access_to_incomplete type that designate
+ 	tasks appear in the same scope.
+ 
+ 2020-06-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnarl/a-synbar.ads, libgnarl/a-synbar.adb,
+ 	libgnarl/a-synbar__posix.ads, libgnarl/a-synbar__posix.adb
+ 	(Ada.Synchronous_Barriers): Annotate with SPARK_Mode => Off.
+ 
+ 2020-06-09  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_eval.adb (Eval_Relational_Op, Eval_String_Literal,
+ 	Eval_Type_Conversion): Relax rules on relational operators and
+ 	type conversions of static string types.
+ 
+ 2020-06-09  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Is_Partially_Initialized_Type):
+ 	Take Default_Value and Default_Component_Value into account.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Update comment.
+ 
+ 2020-06-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* bindo-graphs.adb (Add_Edge_Kind_Check): Disable failing part
+ 	of the assertion.
+ 
+ 2020-06-08  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma.Set_Ravenscar_Profile): Add
+ 	appropriate call to Set_Restriction_No_Dependence if Ada_Version
+ 	>= Ada2012 and Profile is either Ravenscar or a GNAT-defined
+ 	Ravenscar variant (i.e., not Jorvik).
+ 
+ 2020-06-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch5.adb: Fix typo.
+ 	* sem_ch8.adb (Analyze_Renamed_Primitive_Operation): Check that
+ 	the prefix of a prefixed view must be renamable as an object.
+ 
+ 2020-06-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_cat.ads: Fix typo.
+ 	* sem_cat.adb (Validate_Remote_Access_To_Class_Wide_Type): Add
+ 	handling of N_Attribute_Definition_Clause.
+ 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Call
+ 	Validate_Remote_Access_To_Class_Wide_Type for Storage_Size and
+ 	Storage_Pool.
+ 	* sem_attr.adb, exp_ch4.adb: Update comments.
+ 
+ 2020-06-08  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_One_Call): Add extra condition to the
+ 	predicate for deciding when a given controlled call is visible.
+ 
+ 2020-06-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Port
+ 	changes in frontend expander.
+ 
+ 2020-06-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (All_Membership_Choices_Static): Fix style.
+ 
+ 2020-06-08  Steve Baird  <baird@adacore.com>
+ 
+ 	* libgnat/s-rident.ads: Add Jorvik to the Profile_Name
+ 	enumeration type.  Add an element for Jorvik to the array
+ 	aggregate that is the initial value of the constant
+ 	Profile_Info.
+ 	* targparm.adb (Get_Target_Parameters): Handle "pragma Profile
+ 	(Jorvik);" similarly to "pragma Profile (Ravenscar);".
+ 	* snames.ads-tmpl: Declare Name_Jorvik Name_Id. Unlike
+ 	Ravenscar, Jorvik is not a pragma name and has no corresponding
+ 	element in the Pragma_Id enumeration type; this means that its
+ 	declaration must not occur between those of First_Pragma_Name
+ 	and Last_Pragma_Name.
+ 	* sem_prag.adb (Analyze_Pragma): Add call to
+ 	Set_Ravenscar_Profile for Jorvik, similar to the existing calls
+ 	for Ravenscar and the GNAT Ravenscar variants.
+ 
+ 2020-06-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch8.adb (Analyze_Object_Renaming): Update Get_Object_Name
+ 	to go through N_Qualified_Expression and N_Type_Conversion.  Fix
+ 	another case of wrong usage of E_Anonymous_Access_Type instead
+ 	of Anonymous_Access_Kind.
+ 	* sem_util.adb (Is_Dependent_Component_Of_Mutable_Object): Work
+ 	on the original node.
+ 	(Is_Aliased_View): Take into account N_Qualified_Expression.
+ 
+ 2020-06-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_eval.adb (Eval_Type_Conversion): Fix handling of
+ 	enumeration to integer conversions.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference
+ 	[Attribute_Enum_Rep]): Remove special casing for first-level
+ 	renaming, best left to the general folding mechanism via
+ 	Eval_Type_Conversion.
+ 
+ 2020-06-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* atree.adb (New_Copy): Do not clear Has_Dynamic_Range_Check.
+ 	* checks.ads (Append_Range_Checks): Remove Flag_Node parameter.
+ 	(Insert_Range_Checks): Likewise and remove default value of
+ 	Static_Loc parameter.
+ 	* checks.adb (Append_Range_Checks): Remove Flag_Node parameter.
+ 	Do not test and set Has_Dynamic_Range_Check.
+ 	(Insert_Range_Checks): Likewise and remove default value of
+ 	Static_Loc parameter.
+ 	* csinfo.adb (CSinfo): Remove 'L' from [NEUB]_Fields pattern and
+ 	do not handle Has_Dynamic_Range_Check.
+ 	* exp_ch5.adb (Expand_N_Assignment_Statement): Remove argument
+ 	in call to Insert_Range_Checks.
+ 	* sem_ch3.adb (Analyze_Subtype_Declaration): Do not fiddle
+ 	with Has_Dynamic_Range_Check.
+ 	(Process_Range_Expr_In_Decl): Remove argument in calls to
+ 	Insert_Range_Checks and Append_Range_Checks.
+ 	* sinfo.ads (Has_Dynamic_Range_Check): Delete.
+ 	(Set_Has_Dynamic_Range_Check): Likewise.
+ 	* sinfo.adb (Has_Dynamic_Range_Check): Delete.
+ 	(Set_Has_Dynamic_Range_Check): Likewise.
+ 	* treepr.adb (Print_Node): Do not print Has_Dynamic_Range_Check.
+ 
+ 2020-06-08  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch13.ads: Export new function
+ 	All_Membership_Choices_Static.
+ 	* sem_ch13.adb: Implement new function
+ 	All_Membership_Choices_Static.  This involves moving the
+ 	functions Is_Static_Choice and All_Membership_Choices_Static,
+ 	which were previously declared within the function
+ 	Is_Predicate_Static, out to library level so that they can be
+ 	called by the new function. The already-exisiting code in
+ 	Is_Predicate_Static which became the body of
+ 	All_Membership_Choices_Static is replaced with a call to the new
+ 	function in order to avoid duplication.
+ 	* exp_ch9.adb (Is_Pure_Barrier): Several changes needed to
+ 	implement rules of AI12-0290 and RM D.7's definition of
+ 	"pure-barrier-eligible". These changes include adding a call to
+ 	the new function Sem_13.All_Membership_Choices_Static, as per
+ 	the "see 4.9" in RM D.7(1.6/5).
+ 
+ 2020-06-08  Richard Kenner  <kenner@adacore.com>
+ 
+ 	* exp_unst.adb (Visit_Node): When visiting array attribute
+ 	nodes, in addition to checking the type of Get_Referenced_Object
+ 	of the prefix, also check the actual type of the prefix.
+ 
+ 2020-06-08  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* checks.adb (Apply_Predicate_Check): Refine test for being in a
+ 	subprogram body to account for no Corresponding_Body case,
+ 	avoiding blowups arising due to other changes here.
+ 	* exp_ch4.adb (Expand_N_Qualified_Expression): Apply predicate
+ 	checks, if any, after constraint checks are applied.
+ 	* sem_eval.ads (Check_Expression_Against_Static_Predicate): Add
+ 	Check_Failure_Is_Error formal for conditionalizing warning vs.
+ 	error messages.
+ 	* sem_eval.adb (Check_Expression_Against_Static_Predicate):
+ 	Issue an error message rather than a warning when the new
+ 	Check_Failure_Is_Error formal is True. In the nonstatic or
+ 	Dynamic_Predicate case where the predicate is known to fail,
+ 	emit the check to ensure that folded cases get checks applied.
+ 	* sem_res.adb (Resolve_Qualified_Expression): Call
+ 	Check_Expression_Against_Static_Predicate, passing True for
+ 	Check_Failure_Is_Error, to ensure we reject static predicate
+ 	violations. Remove code that was conditionally calling
+ 	Apply_Predicate_Check, which is no longer needed, and that check
+ 	procedure shouldn't be called from a resolution routine in any
+ 	case. Also remove associated comment about preventing infinite
+ 	recursion and consistency with Resolve_Type_Conversion, since
+ 	that handling was already similarly removed from
+ 	Resolve_Type_Convesion at some point.
+ 	(Resolve_Type_Conversion): Add passing of True for
+ 	Check_Failure_Is_Error parameter on call to
+ 	Check_Expression_Against_Static_Predicate, to ensure that static
+ 	conversion cases that violate a predicate are rejected as
+ 	errors.
+ 
+ 2020-06-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* snames.ads-tmpl (Name_SPARK): Restore after being deleted.
+ 
+ 2020-06-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_aggr.adb, exp_ch6.adb, par-ch11.adb, par-ch6.adb,
+ 	par-ch7.adb, par-prag.adb, restrict.adb, restrict.ads,
+ 	scans.ads, scng.adb, sem_aggr.adb, sem_attr.adb, sem_ch11.adb,
+ 	sem_ch12.adb, sem_ch3.adb, sem_ch3.ads, sem_ch4.adb,
+ 	sem_ch5.adb, sem_ch6.adb, sem_ch7.adb, sem_ch8.adb, sem_ch9.adb,
+ 	sem_res.adb, sem_util.adb, sem_util.ads, snames.ads-tmpl,
+ 	gnatbind.adb, libgnat/s-rident.ads,
+ 	doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
+ 	Remove processing of SPARK_05 restriction.
+ 	* gnat_rm.texi: Regenerate.
+ 	* opt.ads: Remove processing of old checksum which is now
+ 	handled by gprbuild directly.
+ 
+ 2020-06-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch12.adb (Instantiate_Object): Relax rules related to null
+ 	exclusions and generic objects. Handle all anonymous types
+ 	consistently and not just E_Anonymous_Access_Type.
+ 	* sem_ch8.adb (Analyze_Object_Renaming): Change wording so that
+ 	it applies to both renamings and instantiations to avoid
+ 	confusion.
+ 
+ 2020-06-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-textio.ads (File_Mode): Fix typo in comment.
+ 
+ 2020-06-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Indexed_Component): Do not give a warning
+ 	for a nonatomic component of an atomic array which is subject to
+ 	an address clause in Ada 2020 mode.
+ 	(Resolve_Selected_Component): Likewise for an atomic record.
+ 
+ 2020-06-08  Philippe Gil  <gil@adacore.com>
+ 
+ 	* doc/gnat_ugn/the_gnat_compilation_model.rst: in "Handling
+ 	Files with Multiple Units" part documents gnatname use for
+ 	unmodified files handling and gnatchop use for files
+ 	refactoring.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2020-06-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_attributes.rst:
+ 	Enum_Rep/Enum_Val are standard Ada 202x attributes.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-06-08  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_aggr.adb (Safe_Component): Remove code that considers as
+ 	unsafe components that are aggregates; such removal allows the
+ 	frontend to proceed and evaluate if they are safe by means of
+ 	invoking Safe_Aggregate.
+ 
+ 2020-06-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Apply
+ 	standard expansion to attributes First and Last.
+ 
+ 2020-06-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb, exp_util.ads, exp_util.adb (Get_Index_Subtype):
+ 	Move from the body of Exp_Attr to Exp_Util and expose from the
+ 	spec.
+ 	* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Replace
+ 	duplicated code with a call to Get_Index_Subtype.
+ 
+ 2020-06-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch8.adb (Analyze_Object_Renaming): Simplify code by moving
+ 	many special cases to Is_Object_Reference and removing others by
+ 	only checking renamings coming from sources.
+ 	* sem_util.adb (Is_Object_Reference): Update for AI12-0226 and
+ 	add more regular handling of 'Priority. Remove special cases no
+ 	longer needed now that we are only checking renamings coming
+ 	from sources.
+ 
+ 2020-06-08  Claire Dross  <dross@adacore.com>
+ 
+ 	* libgnat/a-cofove.adb (Insert_Space): The computation of Index
+ 	generates a spurious compiler warning about a value not being in
+ 	range for a statically dead branch.  Silence it using pragma
+ 	Warnings.
+ 
+ 2020-06-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* bindo-graphs.adb (function Add_Edge): Rename
+ 	Add_Edge_With_Return to Add_Edge; we can tell it returns because
+ 	it's a function, and overloading seems appropriate in this case.
+ 	If Activates_Task=True, and we're not going to add a new edge
+ 	because an existing Pred-->Succ edge already exists, then set
+ 	Activates_Task to True on the preexisting edge.  This ensures
+ 	that the message:
+ 	info: use pragma Restrictions (No_Entry_Calls_In_Elaboration_Code)
+ 	appears when appropriate, no matter in what order the edges
+ 	happened to be processed.
+ 	(procedure Add_Edge): Remove redundant assertions.
+ 	(Activates_Task): Other kinds of edges can have
+ 	Activates_Task=True.  For example, if we had a With_Edge and
+ 	then an Invocation_Edge with Activates_Task=True, then the
+ 	With_Edge has Activates_Task set to True.
+ 	(Add_Edge_Kind_Check): New procedure to prevent other bugs of
+ 	this nature. For example, if we were to sometimes call Add_Edge
+ 	for a Spec_Before_Body_Edge followed by Add_Edge for a
+ 	With_Edge, and sometimes in the other order, that would cause a
+ 	similar bug to what we're fixing here.
+ 	(Set_Is_Recorded_Edge): Val parameter is not used. Get rid of
+ 	it.
+ 	(Set_Activates_Task): New procedure to set the Activates_Task flag.
+ 	* bindo-graphs.ads (Library_Graph_Edge_Kind): Reorder the
+ 	enumeration literals to facilitate Add_Edge_Kind_Check.
+ 	* ali.adb (Known_ALI_Lines): The comment about "still available"
+ 	was wrong. Fix that by erasing the comment, and encoding the
+ 	relevant information in real code. Take advantage of Ada's full
+ 	coverage rules by removing "others =>".  Also DRY.
+ 
+ 2020-06-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* par-ch12.adb (P_Formal_Derived_Type_Definition): Handle
+ 	properly formal derived types that include aspect
+ 	specifications, so that the "with" keyword appears twice in the
+ 	formal type declaration.
+ 	* sem_ch13.adb (Has_Generic_Parent): Return true if the type
+ 	itself is a generic formal.
+ 
+ 2020-06-08  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* socket.c (__gnat_minus_500ms): Remove
+ 	IsWindowsVersionOrGreater from condition.
+ 
+ 2020-06-08  Claire Dross  <dross@adacore.com>
+ 
+ 	* libgnat/a-cfdlli.ads, libgnat/a-cfhama.ads,
+ 	libgnat/a-cfhase.ads, libgnat/a-cforma.ads, libgnat/a-cforse.ads
+ 	(Delete): Add Depends contract.
+ 
+ 2020-06-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* snames.ads-tmpl (Name_Program_Error_Check,
+ 	Name_Tasking_Check): New constants.
+ 	* types.ads (Program_Error_Check, Tasking_Check): New constants.
+ 	(All_Checks): Update accordingly.
+ 
+ 2020-06-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_prag.adb (Validate_Compile_Time_Warning_Or_Error): Use ??.
+ 
+ 2020-06-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* cstand.adb (Create_Standard): Update comments.
+ 
+ 2020-06-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* scng.adb (Scan): Fix typo to take into account all future
+ 	versions of Ada.
+ 	* sem_attr.ads (Attribute_Impl_Def): Add Attribute_Reduce for
+ 	now.
+ 	* sem_attr.adb (Analyze_Attribute): Only allow 'Reduce under
+ 	-gnatX.
+ 	* snames.ads-tmpl (Name_Reduce): Update comment.
+ 
+ 2020-06-05  Thomas Quinot  <quinot@adacore.com>
+ 
+ 	* exp_disp.adb (Expand_Interface_Thunk): Add comment about
+ 	gnatcov reliance on specific name used for thunks.
+ 
+ 2020-06-05  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Subtype_Declaration): For scalar types,
+ 	and for subtype declarations without a constraint, subtype
+ 	inherits Atomic flag from base type.
+ 
+ 2020-06-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_attributes.rst (Enum_Rep):
+ 	Remove extra colon.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-06-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* atree.adb (New_Copy): Clear Has_Dynamic_Range_Check on
+ 	subexpression nodes.
+ 	* checks.adb (Append_Range_Checks): Assert that the node
+ 	doesn't have the Has_Dynamic_Range_Check flag set.
+ 	(Insert_Range_Checks): Likewise.
+ 	* exp_ch3.adb (Expand_N_Subtype_Indication): Do not apply
+ 	range checks for a full type or object declaration.
+ 	* sem_ch3.ads: Move with and use clauses for Nlists to...
+ 	(Process_Range_Expr_In_Decl): Change default to No_List for
+ 	the Check_List parameter.
+ 	* sem_ch3.adb: ...here.
+ 	(Process_Range_Expr_In_Decl): Likewise.  When the insertion
+ 	node is a declaration, only insert on the list if is present
+ 	when the declaration involves discriminants, and only insert
+ 	on the node when there is no list otherwise.
+ 
+ 2020-06-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Record_Aggregate): Create the
+ 	N_Aggregate node with its Expressions field set to No_List and
+ 	not to an empty list.
+ 
+ 2020-06-05  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* libgnat/s-os_lib.adb (Is_Dirsep): Moved from Build_Path to
+ 	package level to reuse.
+ 	(Normalize_Pathname.Final_Value): Reduce 2 'if' statements to
+ 	one.
+ 	(Normalize_Pathname.Fill_Directory): New procedure instead of
+ 	function Get_Directory. Remove slash to backslash conversion and
+ 	drive letter uppercasing on Windows.
+ 
+ 2020-06-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem.adb (Assert_Done): Relax check for main unit, as it was
+ 	overzealous in the case of the main unit itself.
+ 
+ 2020-06-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch3.adb, sem_ch8.adb, sem_util.adb: Use Is_Incomplete_Type
+ 	to make the code easier to read.
+ 
+ 2020-06-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* einfo.adb: Minor reformatting.
+ 	* sem_util.adb (Has_Full_Default_Initialization,
+ 	Is_Partially_Initialized_Type, Caller_Known_Size_Record,
+ 	Large_Max_Size_Mutable): Iterate with
+ 	First_Component/Next_Component; rename Ent to Comp.
+ 
+ 2020-06-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Use
+ 	Expr_Rep_Value instead of Expr_Value to obtain the equivalent
+ 	integer value.
+ 	* sem_eval.ads (Expr_Value): Document more supported cases.
+ 	* sem_eval.adb (Expr_Rep_Value): Copy missing cases from
+ 	Exp_Value.
+ 
+ 2020-06-05  Bob Duff  <duff@adacore.com>
+ 
+ 	* rtsfind.adb, rtsfind.ads: Move subtypes of RTU_Id into package
+ 	body, because they are not needed by clients. Change "Child_" to
+ 	"Descendant", because grandchildren and great grandchildren are
+ 	involved.  Replace all the repetitive comments with a single
+ 	concise one.  Change the parent subtypes to be more consistent;
+ 	use the most specific parent.
+ 
+ 2020-06-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* rtsfind.ads, rtsfind.adb (Is_Text_IO_Special_Package): Moved
+ 	from the GNATprove backend to the frontend.
+ 
+ 2020-06-05  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_util.ads: Add comment about function only used in
+ 	CodePeer.
+ 
+ 2020-06-05  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch9.adb, (Analyze_Task_Body): After analying the task
+ 	body, indicate that all local variables have no delayed aspects.
+ 	This prevents improper later calls to
+ 	Check_Aspect_At_End_Of_Declarations, that would happen when the
+ 	constructed task_procedure body (generated during expansion) is
+ 	analyzed. The legality of aspect specifications that may appear
+ 	on local declarations has already been established, and it is in
+ 	general not possible to recheck them properly during expansion,
+ 	when visibility may not be fully established.
+ 
+ 2020-06-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/a-cofuve.ads (First): Add Global contract.
+ 
+ 2020-06-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_prag.adb (Set_Convention_From_Pragma): Set the convention
+ 	of anonymous access array components.
+ 
+ 2020-06-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-calfor.ads, libgnat/a-catizo.ads,
+ 	libgnat/a-catizo.adb (Local_Time_Offset, Local_Image): New.
+ 	(UTC_Time_Offset): Now a renaming of Local_Time_Offset.
+ 
+ 2020-06-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Available_Full_View): New function returning
+ 	either the full or the underlying full view.
+ 	(Build_Full_Derivation): Add guard for the full view.
+ 	(Copy_And_Build): Retrieve the underlying full view, if any,
+ 	also if deriving a completion.
+ 	(Build_Derived_Private_Type): Use Available_Full_View throughout
+ 	to decide whether a full derivation must be done.
+ 
+ 2020-06-05  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_attr.adb, exp_ch11.adb, exp_imgv.adb, exp_tss.ads,
+ 	par-ch4.adb, sem_attr.adb, sem_util.ads: Misc cleanup.
+ 
+ 2020-06-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-nudira.ads, libgnat/a-nudira.adb (Random): New
+ 	function.
+ 
+ 2020-06-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_attr.ads (Attribute_Impl_Def): Remove Enum_Rep/Val.
+ 	* sem_attr.adb (Attribute_20): New, move Enum_Rep/Val here.
+ 	(Analyze_Attribute): Take Attribute_20 into account.
+ 
+ 2020-06-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* restrict.ads (Unit_Array): Add a-direct.
+ 
+ 2020-06-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/s-stopoo.ads: Mark package Pure and leave room for
+ 	Nonblocking once this aspect is supported.
+ 
+ 2020-06-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference) <Valid_Scalars>:
+ 	Set the No_Truncation flag on the unchecked conversion built for
+ 	scalar types.
+ 
+ 2020-06-05  Bob Duff  <duff@adacore.com>
+ 
+ 	* einfo.adb, einfo.ads, exp_util.adb: Remove Invariants_Ignored
+ 	flag.
+ 	* sem_prag.adb (Invariant): Instead of setting a flag to be
+ 	checked elsewhere, remove the pragma as soon as it is analyzed
+ 	and checked for legality.
+ 
+ 2020-06-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.ads (Apply_Length_Check): Rename Ck_Node parameter to
+ 	Expr.
+ 	(Apply_Range_Check): Likewise.
+ 	(Get_Range_Checks): Likewise.
+ 	* checks.adb (Apply_Float_Conversion_Check): Likewise.
+ 	(Apply_Selected_Length_Checks): Likewise.
+ 	(Apply_Selected_Range_Checks): Likewise.
+ 	(Guard_Access): Likewise.
+ 	(Selected_Length_Checks): Likewise.  Also avoid shadowing in
+ 	child procedures.
+ 	(Selected_Range_Checks): Likewise.
+ 
+ 2020-06-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* par-ch3.adb, par-ch4.adb, scng.adb, sem_aggr.adb,
+ 	sem_ch10.adb, sem_ch12.adb, sem_prag.adb: Update wording: change
+ 	Ada_2020 to Ada 2020 in comments and mention -gnat2020 instead
+ 	of -gnatX switch.
+ 
+ 2020-06-04  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/i-c.ads (long_long, unsigned_long_long): New
+ 	definitions.
+ 
+ 2020-06-04  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* Makefile.rtl: add a-tasini object
+ 	* impunit.adb (Non_Imp_File_Names_95): Add s-tasini.
+ 	* libgnarl/a-tasini.ads, libgnarl/a-tasini.adb: New files.
+ 	* libgnarl/s-taskin.ads (Global_Initialization_Handler): New.
+ 	* libgnarl/s-tassta.adb (Task_Wrapper): Call
+ 	Global_Initialization_Handler if non null.
+ 
+ 2020-06-04  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Build_Suprogram_Body_Wrapper,
+ 	Build_Subprogram_Decl_Wrapper): New suprograms, to create the
+ 	wrappers needed to implement contracts on formsl subprograms at
+ 	the point of instantiation.
+ 	(Build_Subprogram_Wrappers): New subprogram within
+ 	Analyze_Associations, calls the above when the formal subprogram
+ 	has contracts, and expansion is enabled.
+ 	(Instantiate_Formal_Subprogram): If the actual is not an entity,
+ 	such as a function attribute, or a synchronized operation,
+ 	create a function with an internal name and call it within the
+ 	wrapper.
+ 	(Analyze_Generic_Formal_Part): Analyze contracts at the end of
+ 	the list of formal declarations.
+ 	* sem_prag.adb (Analyze_Pre_Post_Condtion): In Ada_2020 the
+ 	aspect and corresponding pragma can appear on a formal
+ 	subprogram declaration.
+ 	(Find_Related_Declaration_Or_Body): Ditto.
+ 
+ 2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch7.adb (Make_Final_Call): Set the type of the object, if
+ 	it is unanalyzed, before calling Convert_View on it.
+ 
+ 2020-06-04  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* adabkend.adb, back_end.ads, opt.ads, sem_ch6.adb: Get rid of
+ 	Disable_FE_Inline_Always.
+ 
+ 2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch7.adb (Make_Final_Call): Add missing guard.
+ 	* sem_ch3.adb (Copy_And_Build): Adjust recursive call for
+ 	private types.
+ 	(Build_Derived_Private_Type): Deal with underlying full views.
+ 
+ 2020-06-04  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/a-stobbu.adb, libgnat/a-stobbu.ads,
+ 	libgnat/a-stobfi.adb, libgnat/a-stobfi.ads,
+ 	libgnat/a-stoubu.adb, libgnat/a-stoubu.ads,
+ 	libgnat/a-stoufi.adb, libgnat/a-stoufi.ads,
+ 	libgnat/a-stoufo.adb, libgnat/a-stoufo.ads,
+ 	libgnat/a-stouut.adb, libgnat/a-stouut.ads,
+ 	libgnat/a-stteou.ads, libgnat/s-putaim.adb,
+ 	libgnat/s-putaim.ads, libgnat/s-putima.adb, libgnat/s-putima.ads
+ 	(Ada.Strings.Text_Output and children, System.Put_Images): New
+ 	runtime support for Put_Image.
+ 	* gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add
+ 	exp_put_image.o.
+ 	* exp_put_image.adb, exp_put_image.ads: New compiler package
+ 	that generates calls to runtime routines that implement
+ 	Put_Image.
+ 	* Makefile.rtl: Add object files for Ada.Strings.Text_Output and
+ 	children and System.Put_Images.
+ 	* aspects.adb: Simplify initialization of Canonical_Aspect.
+ 	* aspects.ads: Improve documentation. Add Aspect_Put_Image.
+ 	* exp_attr.adb: Add support for Put_Image, by calling routines
+ 	in Exp_Put_Image.
+ 	* sem_util.adb (Is_Predefined_Dispatching_Operation): Return
+ 	True for new TSS_Put_Image operation.
+ 	* exp_ch3.adb: For tagged types, build a dispatching
+ 	TSS_Put_Image operation by calling routines in Exp_Put_Image.
+ 	* exp_disp.adb, exp_disp.ads: Make TSS_Put_Image be number 10,
+ 	adjusting other operations' numbers after 10. We choose 10
+ 	because that's the last number shared by all runtimes.
+ 	* exp_strm.adb: Use named notation as appropriate.
+ 	* exp_cg.adb, exp_tss.ads: Add TSS_Put_Image.
+ 	* libgnat/a-tags.ads: Modify Max_Predef_Prims for the new
+ 	TSS_Put_Image.
+ 	* impunit.adb: Add new runtime packages.
+ 	* rtsfind.adb, rtsfind.ads: Add support for
+ 	Ada.Strings.Text_Output, Ada.Strings.Text_Output.Utils, and
+ 	System.Put_Images.
+ 	* sem_attr.adb: Error checking for Put_Image calls.
+ 	* sem_ch12.adb (Valid_Default_Attribute): Support for passing
+ 	Put_Image as a generic formal parameter.
+ 	* sem_ch13.adb: Analysis of Put_Image aspect. Turn it into a
+ 	Put_Image attribute definition clause.
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming): Support for
+ 	renaming of the Put_Image attribute.
+ 	* snames.adb-tmpl: Fix comments.
+ 	* snames.ads-tmpl (Name_Put_Image): New Name_Id.
+ 	(Attribute_Put_Image): New Attribute_Id.
+ 	* tbuild.adb, tbuild.ads (Make_Increment): New utility.
+ 
+ 2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_attr.adb (xpand_N_Attribute_Reference) <Input>: Call
+ 	Find_Inherited_TSS to look up the Stream_Read TSS.
+ 	<Output>: Likewise for the Stream_Write TSS.
+ 	* exp_ch7.adb (Make_Final_Call): Call Underlying_Type on
+ 	private types to account for underlying full views.
+ 	* exp_strm.ads  (Build_Record_Or_Elementary_Input_Function):
+ 	Remove Use_Underlying parameter.
+ 	* exp_strm.adb (Build_Record_Or_Elementary_Input_Function):
+ 	Likewise and adjust accordingly.
+ 	* exp_tss.adb (Find_Inherited_TSS): Deal with full views.
+ 	Call Find_Inherited_TSS recursively on the parent type if
+ 	the base type is a derived type.
+ 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Take
+ 	into account underlying full views for derived types.
+ 	* sem_ch3.adb (Copy_And_Build): Look up the underlying full
+ 	view only for a completion.  Be prepared for private types.
+ 	(Build_Derived_Private_Type): Build an underlying full view
+ 	for a completion in the general case too.
+ 
+ 2020-06-04  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* back_end.adb, opt.ads, par-prag.adb, sem_ch5.adb,
+ 	sem_prag.adb, sinfo.adb, sinfo.ads, snames.ads-tmpl,
+ 	doc/gnat_rm/implementation_defined_pragmas.rst: Remove
+ 	experimental support for OpenACC.
+ 	* gcc-interface/misc.c, gcc-interface/trans.c,
+ 	gcc-interface/lang.opt: Ditto.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.adb (Generate_Discriminant_Check): Remove obsolete
+ 	comment.
+ 
+ 2020-06-04  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* par-ch3.adb (P_Identifier_Declarations): Add parsing of object
+ 	renamings that have neither a subtype_mark nor an
+ 	access_definition. Issue an error if the version is earlier than
+ 	Ada_2020, and suggest using -gnatX.
+ 	* sem_ch8.adb (Analyze_Object_Renaming): Handle
+ 	object_renaming_declarations that don't have an explicit
+ 	subtype. Errors are issued when the name is inappropriate or
+ 	ambiguous, and otherwise the Etype of the renaming entity is set
+ 	from the Etype of the renamed object.
+ 	* sem_util.adb (Has_Null_Exclusion): Allow for the case of no
+ 	subtype given in an N_Object_Renaming_Declaration.
+ 	* sprint.adb (Sprint_Node_Actual): Handle printing of
+ 	N_Object_Renaming_Declarations that are specified without an
+ 	explicit subtype.
+ 
+ 2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sinfo.ads (N_Delta_Aggregate): Document Etype field.
+ 	(N_Case_Expression): Likewise.
+ 	(Is_Syntactic_Field) <N_Quantified_Expression>: Adjust.
+ 	<N_Case_Expression>: Likewise.
+ 
+ 2020-06-04  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* adaint.c: Avoid redefining IS_DIR_SEPARATOR macro.
+ 
+ 2020-06-04  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem.adb (Walk_Library_Items): Defer processing of main spec
+ 	after all other specs and before processing bodies.
+ 
+ 2020-06-04  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* bindgen.adb (Gen_Adafinal): Adafinal is convention Ada, not C.
+ 
+ 2020-06-04  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sinput.adb (Sloc_Range): Ignore node in the tree if it appears
+ 	in a unit different from that of the node whose Sloc range we
+ 	are computing. This is necessary when computing the source range
+ 	of a subprogram body whose declaration includes a pre- or
+ 	postcondition, because declaration and body may appear in
+ 	different units, and the expanded code for the body includes
+ 	copies of the contract code.
+ 
+ 2020-06-04  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* switch.adb (Is_Internal_GCC_Switch): Recognize dumpdir and
+ 	dumpbase-ext.  Mark auxbase and auxbase-strip for removal.
+ 
+ 2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_attr.adb (Resolve_Attribute) <Access>: Do not generate
+ 	the secondary message about a missing pragma if the convention
+ 	of the prefix is Intrinsic.
+ 	* sem_ch12.adb (Instantiate_Formal_Subprogram): Only set the
+ 	Convention and the Is_Inlined flag on a null procedure.
+ 
+ 2020-06-04  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch6.adb (Check_Return_Obj_Accessibility): Change to
+ 	Check_Return_Construct_Accessibility to better reflect its
+ 	purpose.  Add loop to properly obtain the object declaration
+ 	from an expanded extended return statement and add calls to get
+ 	the original node for associated values. Also, avoid checks when
+ 	the return statement being examined comes from an internally
+ 	generated function.
+ 
+ 2020-06-04  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* adaint.c (__gnat_is_absolute_path): Check for directory
+ 	separator after drive and colon.
+ 	(IS_DIR_SEPARATOR): Define new inline substitution.
+ 
+ 2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.ads: Update documentation about range checks and fix
+ 	minor other things.
+ 
+ 2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Array_Type_Declaration): Apply special handling
+ 	of private index types to generic packages and restrict it to
+ 	index types defined in the current scope.
+ 
+ 2020-06-04  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-exextr.adb (Global_Unhandled_Action): New global
+ 	variable.
+ 	(Notify_Exception): Take into account Global_Unhandled_Action
+ 	and fix latent race condition.
+ 	(Exception_Action): Mark Favor_Top_Level so that variables can
+ 	be atomic.
+ 	(Global_Action): Mark atomic to remove the need for a lock.
+ 	* libgnat/g-excact.ads, libgnat/g-excact.adb
+ 	(Register_Global_Unhandled_Action): New procedure.
+ 	(Register_Global_Action): Remove lock.
+ 	* libgnat/s-stalib.ads (Raise_Action): Mark Favor_Top_Level to
+ 	be compatible with Exception_Action.
+ 	* sem_warn.adb (Warn_On_Unreferenced_Entity): Fix logic wrt
+ 	Volatile entities and entities with an address clause: the code
+ 	did not match the comment/intent.
+ 
+ 2020-06-04  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* comperr.adb (Compiler_Abort): Update URL and bug report
+ 	instructions.
+ 
+ 2020-06-04  Steve Baird  <baird@adacore.com>
+ 
+ 	* libgnat/s-imgrea.ads: Declare a named number
+ 	Max_Real_Image_Length with value 5200.  Provide a comment
+ 	explaining why this value was chosen.
+ 	* libgnat/s-imgrea.adb (Set_Image_Real): Increase the upper
+ 	bound of the local String variable Digs to
+ 	Max_Real_Image_Length.
+ 	* libgnat/a-tiflau.adb (Put): Increase the upper bound of the
+ 	local String variable Buf to Max_Real_Image_Length.
+ 	(Puts): Increase the upper bound of the local String variable
+ 	Buf to Max_Real_Image_Length.
+ 
+ 2020-06-04  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnarl/a-dynpri.adb, libgnarl/a-taside.adb,
+ 	libgnarl/a-taster.adb, libgnarl/s-interr.adb,
+ 	libgnarl/s-interr__sigaction.adb, libgnarl/s-taasde.adb,
+ 	libgnarl/s-taenca.adb, libgnarl/s-taenca.ads,
+ 	libgnarl/s-taprop.ads, libgnarl/s-taprop__hpux-dce.adb,
+ 	libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb,
+ 	libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__qnx.adb,
+ 	libgnarl/s-taprop__solaris.adb, libgnarl/s-taprop__vxworks.adb,
+ 	libgnarl/s-tarest.adb, libgnarl/s-tasini.adb,
+ 	libgnarl/s-tasque.adb, libgnarl/s-tasque.ads,
+ 	libgnarl/s-tasren.adb, libgnarl/s-tasren.ads,
+ 	libgnarl/s-tassta.adb, libgnarl/s-tasuti.adb,
+ 	libgnarl/s-tasuti.ads, libgnarl/s-tpoben.adb,
+ 	libgnarl/s-tpobop.adb, libgnarl/s-tpopmo.adb,
+ 	libgnarl/s-tposen.adb, libgnat/s-parame.ads,
+ 	libgnat/s-parame__ae653.ads, libgnat/s-parame__hpux.ads,
+ 	libgnat/s-parame__vxworks.ads: Remove references to Single_Lock
+ 	and Global_Lock.
+ 
+ 2020-06-04  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/s-atopar.adb, libgnat/s-atopex.adb: Use Object_Size
+ 	instead of Size, otherwise many derived types will be rejected
+ 	(e.g. a type with a 14 bits 'Size and a 16 bits 'Object_Size).
+ 
+ 2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch12.adb (Copy_Generic_Node): Add special handling for a
+ 	conversion between access types.
+ 
+ 2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch12.adb (Check_Generic_Actuals): Also restore the proper
+ 	views of the actuals of the parent instances if the formals are
+ 	used as actuals of the children.
+ 	(Instantiate_Type): Add comment.
+ 
+ 2020-06-04  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch12.adb: Minor editorial fixes.
+ 
+ 2020-06-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch12.adb (Denotes_Previous_Actual): Delete.
+ 	(Check_Generic_Actuals): Do not special case array types whose
+ 	component type denotes a previous actual.  Do not special case
+ 	access types whose base type is private.
+ 	(Check_Private_View): Remove code dealing with secondary types.
+ 	Do not switch the views of an array because of its component.
+ 	(Copy_Generic_Node): Add special handling for a comparison
+ 	operator on array types.
+ 	(Instantiate_Type): Do not special case access types whose
+ 	designated type is private.
+ 	(Set_Global_Type): Do not special case array types whose
+ 	component type is private.
+ 
+ 2020-06-03  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch10.adb (Process_Body_Clauses): Add loop to interate
+ 	through all prefixes in a use_type clause so that all packages
+ 	in the expanded name get examined for effectiveness.
+ 
+ 2020-06-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch12.adb (Check_Private_View): Clean up implementation of
+ 	second main case, when the generic sees the private declaration.
+ 
+ 2020-06-03  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-nbnbin.ads: Minor reformatting.
+ 	* libgnat/a-nbnbre.ads, libgnat/a-nbnbre.adb (Is_Valid): Add
+ 	convention Intrinsic. Add detection of uninitialized big reals.
+ 
+ 2020-06-03  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Side_Effect_Free_Statements,
+ 	Side_Effect_Free_Loop): New functions.
+ 	(Has_Non_Null_Statements): Consider N_Call_Marker as a null
+ 	statement.
+ 	* sem_ch5.adb (Analyze_Loop_Parameter_Specification): Call
+ 	Set_Is_Null_Loop even inside a generic instantiation.
+ 	(Analyze_Loop_Statement): Mark for removal loops with no side
+ 	effects.
+ 
+ 2020-06-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* opt.ads (Allow_Integer_Address): Fix typo in comment.
+ 	* stand.ads (Standard_Address): New entity.
+ 	* cstand.adb (Create_Standard): Create it.
+ 	* sem_ch4.adb (Operator_Check): Convert the operands of an
+ 	operation with addresses and integers to Standard_Address
+ 	if pragma Allow_Integer_Address is in effect.
+ 
+ 2020-06-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-atopar.adb (Atomic_Fetch_And_Add): Make use of an
+ 	equivalent static expression.
+ 	(Atomic_Fetch_And_Subtract): Likewise.
+ 	(Is_Lock_Free): Likewise.
+ 	* libgnat/s-atopex.adb (Atomic_Exchange): Likewise.
+ 	(Atomic_Compare_And_Exchange): Likewise.
+ 	(Is_Lock_Free): Likewise.
+ 
+ 2020-06-03  Vadim Godunko  <godunko@adacore.com>
+ 
+ 	* libgnat/s-parame.ads, libgnat/s-parame__ae653.ads,
+ 	libgnat/s-parame__hpux.ads: Fix typos.
+ 
+ 2020-06-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.adb (Remove_Side_Effects): For a type conversion, do
+ 	not remove the side effects of the expression only if it is of
+ 	universal integer type.
+ 
+ 2020-06-03  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/s-aotase.ads, libgnat/s-atoope.ads,
+ 	libgnat/s-atopar.ads, libgnat/s-atopex.ads: Update header.
+ 
+ 2020-06-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Unchecked_Type_Conversion): Also fold the
+ 	conversion for literals of enumeration types.
+ 
+ 2020-06-03  Yannick Moy  <moy@adacore.com>
+ 
+ 	* rtsfind.adb (Load_RTU): Correctly set/reset global variable to
+ 	ignore SPARK_Mode in instances around loading.
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Accept Off
+ 	without prior On.
+ 	* sem_ch7.adb (Analyze_Package_Body_Helper): Likewise.
+ 	* sem_prag.adb (Analyze_Pragma): Always take into account
+ 	SPARK_Mode Off.
+ 
+ 2020-06-03  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* frontend.adb (Frontend): Call (dummy for now) tree checker.
+ 	* debug.adb: Reserve -gnatd_V for the tree checker.
+ 	* vast.ads, vast.adb: New files.
+ 	* gcc-interface/Make-lang.in: Add vast.o.
+ 
+ 2020-06-03  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* libgnat/a-cborse.adb, libgnat/a-cihase.adb,
+ 	libgnat/a-ciorse.adb, libgnat/a-coorse.adb: Modified to use
+ 	'Unrestricted_Access in certain cases where static accessibility
+ 	errors were triggered.
+ 	* exp_ch6.adb (Expand_Simple_Return_Statement): Add generation
+ 	of dynamic accessibility checks as determined by
+ 	Is_Special_Aliased_Formal_Access.
+ 	* sem_attr.adb (Resolve_Attribute): Add call to
+ 	Is_Special_Aliased_Formal_Access to avoid performing static
+ 	checks where dynamic ones are required.
+ 	* sem_ch6.adb (Check_Return_Obj_Accessibility): Handle renamed
+ 	objects within component associations requiring special
+ 	accessibility checks.
+ 	* sem_util.adb, sem_util.ads (Is_Special_Aliased_Formal_Access):
+ 	Created to detect the special case where an aliased formal is
+ 	being compared against the level of an anonymous access return
+ 	object.
+ 	(Object_Access_Level): Remove incorrect condition leading to
+ 	overly permissive accessibility levels being returned on
+ 	explicitly aliased parameters.
+ 
+ 2020-06-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Enum_Pos_To_Rep): Adjust description.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference) <Pred>:
+ 	Reimplement in the case of an enumeration type with non-standard
+ 	but contiguous representation.
+ 	<Succ>: Likewise.
+ 	<Val>: Likewise.
+ 	* exp_ch3.adb (Expand_Freeze_Enumeration_Type): Count the
+ 	literals in the first loop.  If the representation is
+ 	contiguous, just build the index type of the array type and set
+ 	Enum_Pos_To_Rep to it.
+ 
+ 2020-06-03  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_Loop_Entry_Attribute): Revise loop that
+ 	resets the scopes of entities associated with Loop_Id to the
+ 	scope of the new function, so the resetting is not restricted to
+ 	itypes, but excludes loop parameters and the function entity
+ 	itself. However, this fix is believed to be incomplete and a ???
+ 	comment is added to indicate that.
+ 
+ 2020-06-03  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/s-regexp.ads: Fix comment
+ 
+ 2020-06-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference) <Enum_Rep>:
+ 	In the case of an enumeration type, do an intermediate
+ 	conversion to a small integer type.  Remove useless stuff.
+ 	<Finalization_Size>: Do not hardcode Universal_Integer and
+ 	fix a type mismatch in the assignment to the variable.
+ 	<Max_Size_In_Storage_Elements>: Likewise.
+ 	<From_Any>: Do not redefine the Ptyp local variable.
+ 	<To_Any>: Likewise.
+ 	<TypeCode>: Likewise.
+ 	<Pos>: Small tweaks.
+ 	<Val>: For an enumeration type with standard representation,
+ 	apply the range check to the expression of a convertion to
+ 	Universal_Integer, if any.  For an integer type, expand to
+ 	a mere conversion.
+ 
+ 2020-06-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-rannum.adb (Random_Discrete): In the 32-bit case,
+ 	use the same linear implementation as in the 64-bit case when
+ 	the type has a contiguous representation.
+ 
+ 2020-06-03  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_util.adb (Build_Class_Wide_Clone_Decl): Call
+ 	Set_Debug_Info_Needed to set the Needs_Debug_Info flag on
+ 	Clone_Id if the flag is set on Spec_Id.
+ 
+ 2020-06-03  Yannick Moy  <moy@adacore.com>
+ 
+ 	* inline.adb (Expand_Inlined_Call): Do not suppress checks on
+ 	inlined code in GNATprove mode.
+ 
+ 2020-06-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Has_Contiguous_Rep): Fix typo in comment.
+ 
+ 2020-06-03  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* checks.adb, einfo.adb, exp_aggr.adb, exp_ch4.adb, exp_ch6.adb,
+ 	exp_unst.adb, exp_util.adb, freeze.adb, inline.adb, repinfo.adb,
+ 	sem_aggr.adb, sem_attr.adb, sem_aux.adb, sem_ch13.adb,
+ 	sem_ch3.adb, sem_ch4.adb, sem_ch8.adb, sem_elab.adb,
+ 	sem_eval.adb, sem_prag.adb, sem_res.adb, sem_smem.adb,
+ 	sem_util.adb, treepr.adb: Replace uses of Next_ functions with
+ 	corresponding procedures.
+ 
+ 2020-06-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_attr.adb (Attribute_Valid): Use Standard_Long_Long_Integer
+ 	in lieu of Universal_Integer as large integer type.
+ 	* exp_ch3.adb (Expand_Freeze_Enumeration_Type): Likewise.
+ 
+ 2020-06-03  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/s-auxdec.ads (Address_Int): New.
+ 
+ 2020-06-03  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* aspects.adb, aspects.ads, atree.adb, atree.ads, elists.adb,
+ 	elists.ads, fname.adb, fname.ads, gnat1drv.adb, lib.adb,
+ 	lib.ads, namet.adb, namet.ads, nlists.adb, nlists.ads, opt.adb,
+ 	opt.ads, osint-c.adb, osint-c.ads, repinfo.adb, repinfo.ads,
+ 	sem_aux.adb, sem_aux.ads, sinput.adb, sinput.ads, stand.ads,
+ 	stringt.adb, stringt.ads, switch-c.adb, table.adb, table.ads,
+ 	uintp.adb, uintp.ads, urealp.adb, urealp.ads (Tree_Read,
+ 	Tree_Write): Remove generation of ASIS trees.
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ 	Remove -gnatt and -gnatct documentation.
+ 	* gnat_ugn.texi: Regenerate.
+ 	* tree_in.ads, tree_in.adb, tree_io.ads, tree_io.adb,
+ 	tree_gen.ads, tree_gen.adb, stand.adb: Remove.
+ 	* gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Remove
+ 	references to tree_gen.o tree_in.o tree_io.o.
+ 
+ 2020-06-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* opt.ads (Disable_FE_Inline): Move around.
+ 	(Disable_FE_Inline_Always): Likewise.
+ 
+ 2020-06-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.adb (Is_Single_Attribute_Reference): New predicate.
+ 	(Generate_Range_Check): Do not force the evaluation if the
+ 	node is a single attribute reference.
+ 	* exp_util.adb (Side_Effect_Free_Attribute): New predicate.
+ 	(Side_Effect_Free) <N_Attribute_Reference>: Call it.
+ 	(Remove_Side_Effects): Remove the side effects of the prefix
+ 	for an attribute reference whose prefix is not a name.
+ 
+ 2020-06-03  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* switch-c.adb (Scan_Front_End_Switches): Remove processing of
+ 	-gnatt.
+ 	* usage.adb (Usage): Remove mention of -gnatt.
+ 
+ 2020-06-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sinfo.ads: Minor tweaks in commentary.
+ 
+ 2020-06-02  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* lib.ads (Compilation_Switches): Remove -auxbase from
+ 	comments.
+ 	* switch.ads (Is_Internal_GCC_Switch): Likewise.
+ 
+ 2020-06-02  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* atree.ads, checks.adb, contracts.adb, debug.adb, einfo.ads,
+ 	exp_ch3.adb, exp_util.adb, expander.ads, expander.adb,
+ 	frontend.adb, gnat1drv.adb, itypes.adb, lib.ads, namet.ads,
+ 	opt.adb, opt.ads, par-prag.adb, repinfo.ads, sem_aggr.adb,
+ 	sem_aux.ads, sem_case.ads, sem_ch10.adb, sem_ch12.adb,
+ 	sem_ch13.adb, sem_ch3.adb, sem_ch4.adb, sem_ch6.adb,
+ 	sem_dim.adb, sem_elab.adb, sem_prag.adb, sem_prag.ads,
+ 	sem_res.adb, sem_type.adb, sem_util.adb, sinfo.ads, stand.ads,
+ 	tree_io.ads: Remove references to ASIS_Mode.
+ 
+ 2020-06-02  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch4.adb (Generate_Temporary): New subprogram of
+ 	Discrete_Range_Check that generates a temporary to facilitate
+ 	the C backend the code generation of the unchecked conversion
+ 	since the size of the source type may differ from the size of
+ 	the target type.
+ 
+ 2020-06-02  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* ada_get_targ.adb: Bump copyright year.
+ 	* adabkend.adb: Likewise.
+ 	* adabkend.ads: Likewise.
+ 	* adadecode.c: Likewise.
+ 	* adadecode.h: Likewise.
+ 	* adaint.c: Likewise.
+ 	* adaint.h: Likewise.
+ 	* affinity.c: Likewise.
+ 	* ali-util.adb: Likewise.
+ 	* ali-util.ads: Likewise.
+ 	* ali.adb: Likewise.
+ 	* ali.ads: Likewise.
+ 	* alloc.ads: Likewise.
+ 	* argv-lynxos178-raven-cert.c: Likewise.
+ 	* argv.c: Likewise.
+ 	* aspects.adb: Likewise.
+ 	* aspects.ads: Likewise.
+ 	* atree.adb: Likewise.
+ 	* atree.ads: Likewise.
+ 	* atree.h: Likewise.
+ 	* aux-io.c: Likewise.
+ 	* back_end.adb: Likewise.
+ 	* back_end.ads: Likewise.
+ 	* bcheck.adb: Likewise.
+ 	* bcheck.ads: Likewise.
+ 	* binde.adb: Likewise.
+ 	* binde.ads: Likewise.
+ 	* binderr.adb: Likewise.
+ 	* binderr.ads: Likewise.
+ 	* bindgen.adb: Likewise.
+ 	* bindgen.ads: Likewise.
+ 	* bindo-augmentors.adb: Likewise.
+ 	* bindo-augmentors.ads: Likewise.
+ 	* bindo-builders.adb: Likewise.
+ 	* bindo-builders.ads: Likewise.
+ 	* bindo-diagnostics.adb: Likewise.
+ 	* bindo-diagnostics.ads: Likewise.
+ 	* bindo-elaborators.adb: Likewise.
+ 	* bindo-elaborators.ads: Likewise.
+ 	* bindo-graphs.adb: Likewise.
+ 	* bindo-graphs.ads: Likewise.
+ 	* bindo-units.adb: Likewise.
+ 	* bindo-units.ads: Likewise.
+ 	* bindo-validators.adb: Likewise.
+ 	* bindo-validators.ads: Likewise.
+ 	* bindo-writers.adb: Likewise.
+ 	* bindo-writers.ads: Likewise.
+ 	* bindo.adb: Likewise.
+ 	* bindo.ads: Likewise.
+ 	* bindusg.adb: Likewise.
+ 	* bindusg.ads: Likewise.
+ 	* butil.adb: Likewise.
+ 	* butil.ads: Likewise.
+ 	* cal.c: Likewise.
+ 	* casing.adb: Likewise.
+ 	* casing.ads: Likewise.
+ 	* ceinfo.adb: Likewise.
+ 	* checks.adb: Likewise.
+ 	* checks.ads: Likewise.
+ 	* cio.c: Likewise.
+ 	* clean.adb: Likewise.
+ 	* clean.ads: Likewise.
+ 	* comperr.adb: Likewise.
+ 	* comperr.ads: Likewise.
+ 	* contracts.adb: Likewise.
+ 	* contracts.ads: Likewise.
+ 	* csets.adb: Likewise.
+ 	* csets.ads: Likewise.
+ 	* csinfo.adb: Likewise.
+ 	* cstand.adb: Likewise.
+ 	* cstand.ads: Likewise.
+ 	* cstreams.c: Likewise.
+ 	* ctrl_c.c: Likewise.
+ 	* debug.adb: Likewise.
+ 	* debug.ads: Likewise.
+ 	* debug_a.adb: Likewise.
+ 	* debug_a.ads: Likewise.
+ 	* einfo.adb: Likewise.
+ 	* einfo.ads: Likewise.
+ 	* elists.adb: Likewise.
+ 	* elists.ads: Likewise.
+ 	* elists.h: Likewise.
+ 	* env.c: Likewise.
+ 	* env.h: Likewise.
+ 	* err_vars.ads: Likewise.
+ 	* errno.c: Likewise.
+ 	* errout.adb: Likewise.
+ 	* errout.ads: Likewise.
+ 	* erroutc.adb: Likewise.
+ 	* erroutc.ads: Likewise.
+ 	* errutil.adb: Likewise.
+ 	* errutil.ads: Likewise.
+ 	* eval_fat.adb: Likewise.
+ 	* eval_fat.ads: Likewise.
+ 	* exit.c: Likewise.
+ 	* exp_aggr.adb: Likewise.
+ 	* exp_aggr.ads: Likewise.
+ 	* exp_atag.adb: Likewise.
+ 	* exp_atag.ads: Likewise.
+ 	* exp_attr.adb: Likewise.
+ 	* exp_attr.ads: Likewise.
+ 	* exp_cg.adb: Likewise.
+ 	* exp_cg.ads: Likewise.
+ 	* exp_ch10.ads: Likewise.
+ 	* exp_ch11.adb: Likewise.
+ 	* exp_ch11.ads: Likewise.
+ 	* exp_ch12.adb: Likewise.
+ 	* exp_ch12.ads: Likewise.
+ 	* exp_ch13.adb: Likewise.
+ 	* exp_ch13.ads: Likewise.
+ 	* exp_ch2.adb: Likewise.
+ 	* exp_ch2.ads: Likewise.
+ 	* exp_ch3.adb: Likewise.
+ 	* exp_ch3.ads: Likewise.
+ 	* exp_ch4.adb: Likewise.
+ 	* exp_ch4.ads: Likewise.
+ 	* exp_ch5.adb: Likewise.
+ 	* exp_ch5.ads: Likewise.
+ 	* exp_ch6.adb: Likewise.
+ 	* exp_ch6.ads: Likewise.
+ 	* exp_ch7.adb: Likewise.
+ 	* exp_ch7.ads: Likewise.
+ 	* exp_ch8.adb: Likewise.
+ 	* exp_ch8.ads: Likewise.
+ 	* exp_ch9.adb: Likewise.
+ 	* exp_ch9.ads: Likewise.
+ 	* exp_code.adb: Likewise.
+ 	* exp_code.ads: Likewise.
+ 	* exp_dbug.adb: Likewise.
+ 	* exp_dbug.ads: Likewise.
+ 	* exp_disp.adb: Likewise.
+ 	* exp_disp.ads: Likewise.
+ 	* exp_dist.adb: Likewise.
+ 	* exp_dist.ads: Likewise.
+ 	* exp_fixd.adb: Likewise.
+ 	* exp_fixd.ads: Likewise.
+ 	* exp_imgv.adb: Likewise.
+ 	* exp_imgv.ads: Likewise.
+ 	* exp_intr.adb: Likewise.
+ 	* exp_intr.ads: Likewise.
+ 	* exp_pakd.adb: Likewise.
+ 	* exp_pakd.ads: Likewise.
+ 	* exp_prag.adb: Likewise.
+ 	* exp_prag.ads: Likewise.
+ 	* exp_sel.adb: Likewise.
+ 	* exp_sel.ads: Likewise.
+ 	* exp_smem.adb: Likewise.
+ 	* exp_smem.ads: Likewise.
+ 	* exp_spark.adb: Likewise.
+ 	* exp_spark.ads: Likewise.
+ 	* exp_strm.adb: Likewise.
+ 	* exp_strm.ads: Likewise.
+ 	* exp_tss.adb: Likewise.
+ 	* exp_tss.ads: Likewise.
+ 	* exp_unst.adb: Likewise.
+ 	* exp_unst.ads: Likewise.
+ 	* exp_util.adb: Likewise.
+ 	* exp_util.ads: Likewise.
+ 	* expander.adb: Likewise.
+ 	* expander.ads: Likewise.
+ 	* expect.c: Likewise.
+ 	* fe.h: Likewise.
+ 	* final.c: Likewise.
+ 	* fmap.adb: Likewise.
+ 	* fmap.ads: Likewise.
+ 	* fname-sf.adb: Likewise.
+ 	* fname-sf.ads: Likewise.
+ 	* fname-uf.adb: Likewise.
+ 	* fname-uf.ads: Likewise.
+ 	* fname.adb: Likewise.
+ 	* fname.ads: Likewise.
+ 	* freeze.adb: Likewise.
+ 	* freeze.ads: Likewise.
+ 	* frontend.adb: Likewise.
+ 	* frontend.ads: Likewise.
+ 	* get_scos.adb: Likewise.
+ 	* get_scos.ads: Likewise.
+ 	* get_targ.adb: Likewise.
+ 	* get_targ.ads: Likewise.
+ 	* ghost.adb: Likewise.
+ 	* ghost.ads: Likewise.
+ 	* gnat1drv.adb: Likewise.
+ 	* gnat1drv.ads: Likewise.
+ 	* gnatbind.adb: Likewise.
+ 	* gnatbind.ads: Likewise.
+ 	* gnatchop.adb: Likewise.
+ 	* gnatclean.adb: Likewise.
+ 	* gnatcmd.adb: Likewise.
+ 	* gnatcmd.ads: Likewise.
+ 	* gnatdll.adb: Likewise.
+ 	* gnatfind.adb: Likewise.
+ 	* gnatkr.adb: Likewise.
+ 	* gnatkr.ads: Likewise.
+ 	* gnatlink.adb: Likewise.
+ 	* gnatlink.ads: Likewise.
+ 	* gnatls.adb: Likewise.
+ 	* gnatls.ads: Likewise.
+ 	* gnatmake.adb: Likewise.
+ 	* gnatmake.ads: Likewise.
+ 	* gnatname.adb: Likewise.
+ 	* gnatname.ads: Likewise.
+ 	* gnatprep.adb: Likewise.
+ 	* gnatprep.ads: Likewise.
+ 	* gnatvsn.adb: Likewise.
+ 	* gnatxref.adb: Likewise.
+ 	* gprep.adb: Likewise.
+ 	* gprep.ads: Likewise.
+ 	* gsocket.h: Likewise.
+ 	* hostparm.ads: Likewise.
+ 	* impunit.adb: Likewise.
+ 	* impunit.ads: Likewise.
+ 	* indepsw-aix.adb: Likewise.
+ 	* indepsw-darwin.adb: Likewise.
+ 	* indepsw-gnu.adb: Likewise.
+ 	* indepsw.adb: Likewise.
+ 	* indepsw.ads: Likewise.
+ 	* init.c: Likewise.
+ 	* initialize.c: Likewise.
+ 	* inline.adb: Likewise.
+ 	* inline.ads: Likewise.
+ 	* itypes.adb: Likewise.
+ 	* itypes.ads: Likewise.
+ 	* krunch.adb: Likewise.
+ 	* krunch.ads: Likewise.
+ 	* layout.adb: Likewise.
+ 	* layout.ads: Likewise.
+ 	* lib-list.adb: Likewise.
+ 	* lib-load.adb: Likewise.
+ 	* lib-load.ads: Likewise.
+ 	* lib-sort.adb: Likewise.
+ 	* lib-util.adb: Likewise.
+ 	* lib-util.ads: Likewise.
+ 	* lib-writ.adb: Likewise.
+ 	* lib-writ.ads: Likewise.
+ 	* lib-xref-spark_specific.adb: Likewise.
+ 	* lib-xref.adb: Likewise.
+ 	* lib-xref.ads: Likewise.
+ 	* lib.adb: Likewise.
+ 	* lib.ads: Likewise.
+ 	* libgnarl/a-astaco.adb: Likewise.
+ 	* libgnarl/a-dispat.adb: Likewise.
+ 	* libgnarl/a-dynpri.adb: Likewise.
+ 	* libgnarl/a-etgrbu.ads: Likewise.
+ 	* libgnarl/a-exetim__darwin.adb: Likewise.
+ 	* libgnarl/a-exetim__default.ads: Likewise.
+ 	* libgnarl/a-exetim__mingw.adb: Likewise.
+ 	* libgnarl/a-exetim__mingw.ads: Likewise.
+ 	* libgnarl/a-exetim__posix.adb: Likewise.
+ 	* libgnarl/a-interr.adb: Likewise.
+ 	* libgnarl/a-interr.ads: Likewise.
+ 	* libgnarl/a-intnam.ads: Likewise.
+ 	* libgnarl/a-intnam__aix.ads: Likewise.
+ 	* libgnarl/a-intnam__darwin.ads: Likewise.
+ 	* libgnarl/a-intnam__dragonfly.ads: Likewise.
+ 	* libgnarl/a-intnam__dummy.ads: Likewise.
+ 	* libgnarl/a-intnam__freebsd.ads: Likewise.
+ 	* libgnarl/a-intnam__hpux.ads: Likewise.
+ 	* libgnarl/a-intnam__linux.ads: Likewise.
+ 	* libgnarl/a-intnam__lynxos.ads: Likewise.
+ 	* libgnarl/a-intnam__mingw.ads: Likewise.
+ 	* libgnarl/a-intnam__qnx.ads: Likewise.
+ 	* libgnarl/a-intnam__rtems.ads: Likewise.
+ 	* libgnarl/a-intnam__solaris.ads: Likewise.
+ 	* libgnarl/a-intnam__vxworks.ads: Likewise.
+ 	* libgnarl/a-reatim.adb: Likewise.
+ 	* libgnarl/a-reatim.ads: Likewise.
+ 	* libgnarl/a-retide.adb: Likewise.
+ 	* libgnarl/a-retide.ads: Likewise.
+ 	* libgnarl/a-rttiev.adb: Likewise.
+ 	* libgnarl/a-rttiev.ads: Likewise.
+ 	* libgnarl/a-synbar.adb: Likewise.
+ 	* libgnarl/a-synbar.ads: Likewise.
+ 	* libgnarl/a-synbar__posix.adb: Likewise.
+ 	* libgnarl/a-synbar__posix.ads: Likewise.
+ 	* libgnarl/a-sytaco.adb: Likewise.
+ 	* libgnarl/a-sytaco.ads: Likewise.
+ 	* libgnarl/a-tasatt.adb: Likewise.
+ 	* libgnarl/a-tasatt.ads: Likewise.
+ 	* libgnarl/a-taside.adb: Likewise.
+ 	* libgnarl/a-taside.ads: Likewise.
+ 	* libgnarl/a-taster.adb: Likewise.
+ 	* libgnarl/g-boubuf.adb: Likewise.
+ 	* libgnarl/g-boubuf.ads: Likewise.
+ 	* libgnarl/g-boumai.ads: Likewise.
+ 	* libgnarl/g-semaph.adb: Likewise.
+ 	* libgnarl/g-semaph.ads: Likewise.
+ 	* libgnarl/g-signal.adb: Likewise.
+ 	* libgnarl/g-signal.ads: Likewise.
+ 	* libgnarl/g-tastus.ads: Likewise.
+ 	* libgnarl/g-thread.adb: Likewise.
+ 	* libgnarl/g-thread.ads: Likewise.
+ 	* libgnarl/i-vxinco.adb: Likewise.
+ 	* libgnarl/i-vxinco.ads: Likewise.
+ 	* libgnarl/s-inmaop.ads: Likewise.
+ 	* libgnarl/s-inmaop__dummy.adb: Likewise.
+ 	* libgnarl/s-inmaop__posix.adb: Likewise.
+ 	* libgnarl/s-inmaop__vxworks.adb: Likewise.
+ 	* libgnarl/s-interr.adb: Likewise.
+ 	* libgnarl/s-interr.ads: Likewise.
+ 	* libgnarl/s-interr__dummy.adb: Likewise.
+ 	* libgnarl/s-interr__hwint.adb: Likewise.
+ 	* libgnarl/s-interr__sigaction.adb: Likewise.
+ 	* libgnarl/s-interr__vxworks.adb: Likewise.
+ 	* libgnarl/s-intman.ads: Likewise.
+ 	* libgnarl/s-intman__android.adb: Likewise.
+ 	* libgnarl/s-intman__dummy.adb: Likewise.
+ 	* libgnarl/s-intman__lynxos.adb: Likewise.
+ 	* libgnarl/s-intman__mingw.adb: Likewise.
+ 	* libgnarl/s-intman__posix.adb: Likewise.
+ 	* libgnarl/s-intman__qnx.adb: Likewise.
+ 	* libgnarl/s-intman__solaris.adb: Likewise.
+ 	* libgnarl/s-intman__susv3.adb: Likewise.
+ 	* libgnarl/s-intman__vxworks.adb: Likewise.
+ 	* libgnarl/s-intman__vxworks.ads: Likewise.
+ 	* libgnarl/s-linux.ads: Likewise.
+ 	* libgnarl/s-linux__alpha.ads: Likewise.
+ 	* libgnarl/s-linux__android.ads: Likewise.
+ 	* libgnarl/s-linux__hppa.ads: Likewise.
+ 	* libgnarl/s-linux__mips.ads: Likewise.
+ 	* libgnarl/s-linux__riscv.ads: Likewise.
+ 	* libgnarl/s-linux__sparc.ads: Likewise.
+ 	* libgnarl/s-linux__x32.ads: Likewise.
+ 	* libgnarl/s-mudido.adb: Likewise.
+ 	* libgnarl/s-mudido__affinity.adb: Likewise.
+ 	* libgnarl/s-osinte__aix.adb: Likewise.
+ 	* libgnarl/s-osinte__aix.ads: Likewise.
+ 	* libgnarl/s-osinte__android.adb: Likewise.
+ 	* libgnarl/s-osinte__android.ads: Likewise.
+ 	* libgnarl/s-osinte__darwin.adb: Likewise.
+ 	* libgnarl/s-osinte__darwin.ads: Likewise.
+ 	* libgnarl/s-osinte__dragonfly.adb: Likewise.
+ 	* libgnarl/s-osinte__dragonfly.ads: Likewise.
+ 	* libgnarl/s-osinte__dummy.ads: Likewise.
+ 	* libgnarl/s-osinte__freebsd.adb: Likewise.
+ 	* libgnarl/s-osinte__freebsd.ads: Likewise.
+ 	* libgnarl/s-osinte__gnu.adb: Likewise.
+ 	* libgnarl/s-osinte__gnu.ads: Likewise.
+ 	* libgnarl/s-osinte__hpux-dce.adb: Likewise.
+ 	* libgnarl/s-osinte__hpux-dce.ads: Likewise.
+ 	* libgnarl/s-osinte__hpux.ads: Likewise.
+ 	* libgnarl/s-osinte__kfreebsd-gnu.ads: Likewise.
+ 	* libgnarl/s-osinte__linux.ads: Likewise.
+ 	* libgnarl/s-osinte__lynxos178.adb: Likewise.
+ 	* libgnarl/s-osinte__lynxos178e.ads: Likewise.
+ 	* libgnarl/s-osinte__mingw.ads: Likewise.
+ 	* libgnarl/s-osinte__posix.adb: Likewise.
+ 	* libgnarl/s-osinte__qnx.adb: Likewise.
+ 	* libgnarl/s-osinte__qnx.ads: Likewise.
+ 	* libgnarl/s-osinte__rtems.adb: Likewise.
+ 	* libgnarl/s-osinte__rtems.ads: Likewise.
+ 	* libgnarl/s-osinte__solaris.adb: Likewise.
+ 	* libgnarl/s-osinte__solaris.ads: Likewise.
+ 	* libgnarl/s-osinte__vxworks.adb: Likewise.
+ 	* libgnarl/s-osinte__vxworks.ads: Likewise.
+ 	* libgnarl/s-osinte__x32.adb: Likewise.
+ 	* libgnarl/s-proinf.adb: Likewise.
+ 	* libgnarl/s-proinf.ads: Likewise.
+ 	* libgnarl/s-qnx.ads: Likewise.
+ 	* libgnarl/s-solita.adb: Likewise.
+ 	* libgnarl/s-solita.ads: Likewise.
+ 	* libgnarl/s-stusta.adb: Likewise.
+ 	* libgnarl/s-stusta.ads: Likewise.
+ 	* libgnarl/s-taasde.adb: Likewise.
+ 	* libgnarl/s-taasde.ads: Likewise.
+ 	* libgnarl/s-tadeca.adb: Likewise.
+ 	* libgnarl/s-tadeca.ads: Likewise.
+ 	* libgnarl/s-tadert.adb: Likewise.
+ 	* libgnarl/s-tadert.ads: Likewise.
+ 	* libgnarl/s-taenca.adb: Likewise.
+ 	* libgnarl/s-taenca.ads: Likewise.
+ 	* libgnarl/s-taprob.adb: Likewise.
+ 	* libgnarl/s-taprob.ads: Likewise.
+ 	* libgnarl/s-taprop.ads: Likewise.
+ 	* libgnarl/s-taprop__dummy.adb: Likewise.
+ 	* libgnarl/s-taprop__hpux-dce.adb: Likewise.
+ 	* libgnarl/s-taprop__linux.adb: Likewise.
+ 	* libgnarl/s-taprop__mingw.adb: Likewise.
+ 	* libgnarl/s-taprop__posix.adb: Likewise.
+ 	* libgnarl/s-taprop__qnx.adb: Likewise.
+ 	* libgnarl/s-taprop__solaris.adb: Likewise.
+ 	* libgnarl/s-taprop__vxworks.adb: Likewise.
+ 	* libgnarl/s-tarest.adb: Likewise.
+ 	* libgnarl/s-tarest.ads: Likewise.
+ 	* libgnarl/s-tasdeb.adb: Likewise.
+ 	* libgnarl/s-tasdeb.ads: Likewise.
+ 	* libgnarl/s-tasinf.adb: Likewise.
+ 	* libgnarl/s-tasinf.ads: Likewise.
+ 	* libgnarl/s-tasinf__linux.adb: Likewise.
+ 	* libgnarl/s-tasinf__linux.ads: Likewise.
+ 	* libgnarl/s-tasinf__mingw.adb: Likewise.
+ 	* libgnarl/s-tasinf__mingw.ads: Likewise.
+ 	* libgnarl/s-tasinf__solaris.adb: Likewise.
+ 	* libgnarl/s-tasinf__solaris.ads: Likewise.
+ 	* libgnarl/s-tasinf__vxworks.ads: Likewise.
+ 	* libgnarl/s-tasini.adb: Likewise.
+ 	* libgnarl/s-tasini.ads: Likewise.
+ 	* libgnarl/s-taskin.adb: Likewise.
+ 	* libgnarl/s-taskin.ads: Likewise.
+ 	* libgnarl/s-taspri__dummy.ads: Likewise.
+ 	* libgnarl/s-taspri__hpux-dce.ads: Likewise.
+ 	* libgnarl/s-taspri__lynxos.ads: Likewise.
+ 	* libgnarl/s-taspri__mingw.ads: Likewise.
+ 	* libgnarl/s-taspri__posix-noaltstack.ads: Likewise.
+ 	* libgnarl/s-taspri__posix.ads: Likewise.
+ 	* libgnarl/s-taspri__solaris.ads: Likewise.
+ 	* libgnarl/s-taspri__vxworks.ads: Likewise.
+ 	* libgnarl/s-tasque.adb: Likewise.
+ 	* libgnarl/s-tasque.ads: Likewise.
+ 	* libgnarl/s-tasren.adb: Likewise.
+ 	* libgnarl/s-tasren.ads: Likewise.
+ 	* libgnarl/s-tasres.ads: Likewise.
+ 	* libgnarl/s-tassta.adb: Likewise.
+ 	* libgnarl/s-tassta.ads: Likewise.
+ 	* libgnarl/s-tasuti.adb: Likewise.
+ 	* libgnarl/s-tasuti.ads: Likewise.
+ 	* libgnarl/s-tataat.adb: Likewise.
+ 	* libgnarl/s-tataat.ads: Likewise.
+ 	* libgnarl/s-tpinop.adb: Likewise.
+ 	* libgnarl/s-tpinop.ads: Likewise.
+ 	* libgnarl/s-tpoaal.adb: Likewise.
+ 	* libgnarl/s-tpoben.adb: Likewise.
+ 	* libgnarl/s-tpoben.ads: Likewise.
+ 	* libgnarl/s-tpobmu.adb: Likewise.
+ 	* libgnarl/s-tpobmu.ads: Likewise.
+ 	* libgnarl/s-tpobop.adb: Likewise.
+ 	* libgnarl/s-tpobop.ads: Likewise.
+ 	* libgnarl/s-tpopmo.adb: Likewise.
+ 	* libgnarl/s-tpopsp__posix-foreign.adb: Likewise.
+ 	* libgnarl/s-tpopsp__posix.adb: Likewise.
+ 	* libgnarl/s-tpopsp__solaris.adb: Likewise.
+ 	* libgnarl/s-tpopsp__tls.adb: Likewise.
+ 	* libgnarl/s-tpopsp__vxworks-rtp.adb: Likewise.
+ 	* libgnarl/s-tpopsp__vxworks-tls.adb: Likewise.
+ 	* libgnarl/s-tpopsp__vxworks.adb: Likewise.
+ 	* libgnarl/s-tporft.adb: Likewise.
+ 	* libgnarl/s-tposen.adb: Likewise.
+ 	* libgnarl/s-tposen.ads: Likewise.
+ 	* libgnarl/s-vxwext.adb: Likewise.
+ 	* libgnarl/s-vxwext.ads: Likewise.
+ 	* libgnarl/s-vxwext__kernel-smp.adb: Likewise.
+ 	* libgnarl/s-vxwext__kernel.adb: Likewise.
+ 	* libgnarl/s-vxwext__kernel.ads: Likewise.
+ 	* libgnarl/s-vxwext__noints.adb: Likewise.
+ 	* libgnarl/s-vxwext__rtp-smp.adb: Likewise.
+ 	* libgnarl/s-vxwext__rtp.adb: Likewise.
+ 	* libgnarl/s-vxwext__rtp.ads: Likewise.
+ 	* libgnarl/s-vxwext__vthreads.ads: Likewise.
+ 	* libgnarl/s-vxwork__aarch64.ads: Likewise.
+ 	* libgnarl/s-vxwork__arm.ads: Likewise.
+ 	* libgnarl/s-vxwork__ppc.ads: Likewise.
+ 	* libgnarl/s-vxwork__x86.ads: Likewise.
+ 	* libgnarl/thread.c: Likewise.
+ 	* libgnat/a-assert.adb: Likewise.
+ 	* libgnat/a-assert.ads: Likewise.
+ 	* libgnat/a-btgbso.adb: Likewise.
+ 	* libgnat/a-btgbso.ads: Likewise.
+ 	* libgnat/a-calari.adb: Likewise.
+ 	* libgnat/a-calari.ads: Likewise.
+ 	* libgnat/a-calcon.adb: Likewise.
+ 	* libgnat/a-calcon.ads: Likewise.
+ 	* libgnat/a-caldel.adb: Likewise.
+ 	* libgnat/a-caldel.ads: Likewise.
+ 	* libgnat/a-calend.adb: Likewise.
+ 	* libgnat/a-calend.ads: Likewise.
+ 	* libgnat/a-calfor.adb: Likewise.
+ 	* libgnat/a-calfor.ads: Likewise.
+ 	* libgnat/a-catizo.adb: Likewise.
+ 	* libgnat/a-cbdlli.adb: Likewise.
+ 	* libgnat/a-cbdlli.ads: Likewise.
+ 	* libgnat/a-cbhama.adb: Likewise.
+ 	* libgnat/a-cbhama.ads: Likewise.
+ 	* libgnat/a-cbhase.adb: Likewise.
+ 	* libgnat/a-cbhase.ads: Likewise.
+ 	* libgnat/a-cbmutr.adb: Likewise.
+ 	* libgnat/a-cbmutr.ads: Likewise.
+ 	* libgnat/a-cborma.adb: Likewise.
+ 	* libgnat/a-cborma.ads: Likewise.
+ 	* libgnat/a-cborse.adb: Likewise.
+ 	* libgnat/a-cborse.ads: Likewise.
+ 	* libgnat/a-cbprqu.adb: Likewise.
+ 	* libgnat/a-cbprqu.ads: Likewise.
+ 	* libgnat/a-cbsyqu.adb: Likewise.
+ 	* libgnat/a-cbsyqu.ads: Likewise.
+ 	* libgnat/a-cdlili.adb: Likewise.
+ 	* libgnat/a-cdlili.ads: Likewise.
+ 	* libgnat/a-cfdlli.adb: Likewise.
+ 	* libgnat/a-cfdlli.ads: Likewise.
+ 	* libgnat/a-cfhama.adb: Likewise.
+ 	* libgnat/a-cfhama.ads: Likewise.
+ 	* libgnat/a-cfhase.adb: Likewise.
+ 	* libgnat/a-cfhase.ads: Likewise.
+ 	* libgnat/a-cfinve.adb: Likewise.
+ 	* libgnat/a-cfinve.ads: Likewise.
+ 	* libgnat/a-cforma.adb: Likewise.
+ 	* libgnat/a-cforma.ads: Likewise.
+ 	* libgnat/a-cforse.adb: Likewise.
+ 	* libgnat/a-cforse.ads: Likewise.
+ 	* libgnat/a-cgaaso.adb: Likewise.
+ 	* libgnat/a-cgaaso.ads: Likewise.
+ 	* libgnat/a-cgarso.adb: Likewise.
+ 	* libgnat/a-cgcaso.adb: Likewise.
+ 	* libgnat/a-chacon.adb: Likewise.
+ 	* libgnat/a-chacon.ads: Likewise.
+ 	* libgnat/a-chahan.adb: Likewise.
+ 	* libgnat/a-chahan.ads: Likewise.
+ 	* libgnat/a-chlat9.ads: Likewise.
+ 	* libgnat/a-chtgbk.adb: Likewise.
+ 	* libgnat/a-chtgbk.ads: Likewise.
+ 	* libgnat/a-chtgbo.adb: Likewise.
+ 	* libgnat/a-chtgbo.ads: Likewise.
+ 	* libgnat/a-chtgke.adb: Likewise.
+ 	* libgnat/a-chtgke.ads: Likewise.
+ 	* libgnat/a-chtgop.adb: Likewise.
+ 	* libgnat/a-chtgop.ads: Likewise.
+ 	* libgnat/a-chzla1.ads: Likewise.
+ 	* libgnat/a-chzla9.ads: Likewise.
+ 	* libgnat/a-cidlli.adb: Likewise.
+ 	* libgnat/a-cidlli.ads: Likewise.
+ 	* libgnat/a-cihama.adb: Likewise.
+ 	* libgnat/a-cihama.ads: Likewise.
+ 	* libgnat/a-cihase.adb: Likewise.
+ 	* libgnat/a-cihase.ads: Likewise.
+ 	* libgnat/a-cimutr.adb: Likewise.
+ 	* libgnat/a-cimutr.ads: Likewise.
+ 	* libgnat/a-ciorma.adb: Likewise.
+ 	* libgnat/a-ciorma.ads: Likewise.
+ 	* libgnat/a-ciormu.adb: Likewise.
+ 	* libgnat/a-ciormu.ads: Likewise.
+ 	* libgnat/a-ciorse.adb: Likewise.
+ 	* libgnat/a-ciorse.ads: Likewise.
+ 	* libgnat/a-clrefi.adb: Likewise.
+ 	* libgnat/a-clrefi.ads: Likewise.
+ 	* libgnat/a-coboho.adb: Likewise.
+ 	* libgnat/a-coboho.ads: Likewise.
+ 	* libgnat/a-cobove.adb: Likewise.
+ 	* libgnat/a-cobove.ads: Likewise.
+ 	* libgnat/a-cofove.adb: Likewise.
+ 	* libgnat/a-cofove.ads: Likewise.
+ 	* libgnat/a-cofuba.adb: Likewise.
+ 	* libgnat/a-cofuba.ads: Likewise.
+ 	* libgnat/a-cofuma.adb: Likewise.
+ 	* libgnat/a-cofuma.ads: Likewise.
+ 	* libgnat/a-cofuse.adb: Likewise.
+ 	* libgnat/a-cofuse.ads: Likewise.
+ 	* libgnat/a-cofuve.adb: Likewise.
+ 	* libgnat/a-cofuve.ads: Likewise.
+ 	* libgnat/a-cogeso.adb: Likewise.
+ 	* libgnat/a-cogeso.ads: Likewise.
+ 	* libgnat/a-cohama.adb: Likewise.
+ 	* libgnat/a-cohama.ads: Likewise.
+ 	* libgnat/a-cohase.adb: Likewise.
+ 	* libgnat/a-cohase.ads: Likewise.
+ 	* libgnat/a-cohata.ads: Likewise.
+ 	* libgnat/a-coinho.adb: Likewise.
+ 	* libgnat/a-coinho.ads: Likewise.
+ 	* libgnat/a-coinho__shared.adb: Likewise.
+ 	* libgnat/a-coinho__shared.ads: Likewise.
+ 	* libgnat/a-coinve.adb: Likewise.
+ 	* libgnat/a-coinve.ads: Likewise.
+ 	* libgnat/a-colien.adb: Likewise.
+ 	* libgnat/a-colien.ads: Likewise.
+ 	* libgnat/a-colire.adb: Likewise.
+ 	* libgnat/a-colire.ads: Likewise.
+ 	* libgnat/a-comlin.adb: Likewise.
+ 	* libgnat/a-comlin.ads: Likewise.
+ 	* libgnat/a-comutr.adb: Likewise.
+ 	* libgnat/a-comutr.ads: Likewise.
+ 	* libgnat/a-conhel.adb: Likewise.
+ 	* libgnat/a-conhel.ads: Likewise.
+ 	* libgnat/a-convec.adb: Likewise.
+ 	* libgnat/a-convec.ads: Likewise.
+ 	* libgnat/a-coorma.adb: Likewise.
+ 	* libgnat/a-coorma.ads: Likewise.
+ 	* libgnat/a-coormu.adb: Likewise.
+ 	* libgnat/a-coormu.ads: Likewise.
+ 	* libgnat/a-coorse.adb: Likewise.
+ 	* libgnat/a-coorse.ads: Likewise.
+ 	* libgnat/a-coprnu.adb: Likewise.
+ 	* libgnat/a-coprnu.ads: Likewise.
+ 	* libgnat/a-crbltr.ads: Likewise.
+ 	* libgnat/a-crbtgk.adb: Likewise.
+ 	* libgnat/a-crbtgk.ads: Likewise.
+ 	* libgnat/a-crbtgo.adb: Likewise.
+ 	* libgnat/a-crbtgo.ads: Likewise.
+ 	* libgnat/a-crdlli.adb: Likewise.
+ 	* libgnat/a-crdlli.ads: Likewise.
+ 	* libgnat/a-csquin.ads: Likewise.
+ 	* libgnat/a-cuprqu.adb: Likewise.
+ 	* libgnat/a-cuprqu.ads: Likewise.
+ 	* libgnat/a-cusyqu.adb: Likewise.
+ 	* libgnat/a-cusyqu.ads: Likewise.
+ 	* libgnat/a-cwila1.ads: Likewise.
+ 	* libgnat/a-cwila9.ads: Likewise.
+ 	* libgnat/a-decima.adb: Likewise.
+ 	* libgnat/a-decima.ads: Likewise.
+ 	* libgnat/a-dhfina.adb: Likewise.
+ 	* libgnat/a-dhfina.ads: Likewise.
+ 	* libgnat/a-diocst.adb: Likewise.
+ 	* libgnat/a-diocst.ads: Likewise.
+ 	* libgnat/a-direct.adb: Likewise.
+ 	* libgnat/a-direct.ads: Likewise.
+ 	* libgnat/a-direio.adb: Likewise.
+ 	* libgnat/a-direio.ads: Likewise.
+ 	* libgnat/a-dirval.adb: Likewise.
+ 	* libgnat/a-dirval.ads: Likewise.
+ 	* libgnat/a-dirval__mingw.adb: Likewise.
+ 	* libgnat/a-einuoc.adb: Likewise.
+ 	* libgnat/a-einuoc.ads: Likewise.
+ 	* libgnat/a-elchha.adb: Likewise.
+ 	* libgnat/a-elchha.ads: Likewise.
+ 	* libgnat/a-elchha__vxworks-ppc-full.adb: Likewise.
+ 	* libgnat/a-envvar.adb: Likewise.
+ 	* libgnat/a-excach.adb: Likewise.
+ 	* libgnat/a-except.adb: Likewise.
+ 	* libgnat/a-except.ads: Likewise.
+ 	* libgnat/a-excpol.adb: Likewise.
+ 	* libgnat/a-excpol__abort.adb: Likewise.
+ 	* libgnat/a-exctra.adb: Likewise.
+ 	* libgnat/a-exctra.ads: Likewise.
+ 	* libgnat/a-exexda.adb: Likewise.
+ 	* libgnat/a-exexpr.adb: Likewise.
+ 	* libgnat/a-exextr.adb: Likewise.
+ 	* libgnat/a-exstat.adb: Likewise.
+ 	* libgnat/a-finali.adb: Likewise.
+ 	* libgnat/a-finali.ads: Likewise.
+ 	* libgnat/a-locale.adb: Likewise.
+ 	* libgnat/a-locale.ads: Likewise.
+ 	* libgnat/a-nbnbin.adb: Likewise.
+ 	* libgnat/a-nbnbin__gmp.adb: Likewise.
+ 	* libgnat/a-nbnbre.adb: Likewise.
+ 	* libgnat/a-ngcefu.adb: Likewise.
+ 	* libgnat/a-ngcoar.adb: Likewise.
+ 	* libgnat/a-ngcoty.adb: Likewise.
+ 	* libgnat/a-ngcoty.ads: Likewise.
+ 	* libgnat/a-ngelfu.adb: Likewise.
+ 	* libgnat/a-ngelfu.ads: Likewise.
+ 	* libgnat/a-ngrear.adb: Likewise.
+ 	* libgnat/a-ngrear.ads: Likewise.
+ 	* libgnat/a-nudira.adb: Likewise.
+ 	* libgnat/a-nudira.ads: Likewise.
+ 	* libgnat/a-nuflra.adb: Likewise.
+ 	* libgnat/a-nuflra.ads: Likewise.
+ 	* libgnat/a-numaux.ads: Likewise.
+ 	* libgnat/a-numaux__darwin.adb: Likewise.
+ 	* libgnat/a-numaux__darwin.ads: Likewise.
+ 	* libgnat/a-numaux__libc-x86.ads: Likewise.
+ 	* libgnat/a-numaux__vxworks.ads: Likewise.
+ 	* libgnat/a-numaux__x86.adb: Likewise.
+ 	* libgnat/a-numaux__x86.ads: Likewise.
+ 	* libgnat/a-rbtgbk.adb: Likewise.
+ 	* libgnat/a-rbtgbk.ads: Likewise.
+ 	* libgnat/a-rbtgbo.adb: Likewise.
+ 	* libgnat/a-rbtgbo.ads: Likewise.
+ 	* libgnat/a-rbtgso.adb: Likewise.
+ 	* libgnat/a-rbtgso.ads: Likewise.
+ 	* libgnat/a-sbecin.adb: Likewise.
+ 	* libgnat/a-sbecin.ads: Likewise.
+ 	* libgnat/a-sbhcin.adb: Likewise.
+ 	* libgnat/a-sbhcin.ads: Likewise.
+ 	* libgnat/a-sblcin.adb: Likewise.
+ 	* libgnat/a-sblcin.ads: Likewise.
+ 	* libgnat/a-secain.adb: Likewise.
+ 	* libgnat/a-secain.ads: Likewise.
+ 	* libgnat/a-sequio.adb: Likewise.
+ 	* libgnat/a-sequio.ads: Likewise.
+ 	* libgnat/a-sfecin.ads: Likewise.
+ 	* libgnat/a-sfhcin.ads: Likewise.
+ 	* libgnat/a-sflcin.ads: Likewise.
+ 	* libgnat/a-shcain.adb: Likewise.
+ 	* libgnat/a-shcain.ads: Likewise.
+ 	* libgnat/a-siocst.adb: Likewise.
+ 	* libgnat/a-siocst.ads: Likewise.
+ 	* libgnat/a-slcain.adb: Likewise.
+ 	* libgnat/a-slcain.ads: Likewise.
+ 	* libgnat/a-ssicst.adb: Likewise.
+ 	* libgnat/a-ssicst.ads: Likewise.
+ 	* libgnat/a-stboha.adb: Likewise.
+ 	* libgnat/a-stmaco.ads: Likewise.
+ 	* libgnat/a-storio.adb: Likewise.
+ 	* libgnat/a-strbou.adb: Likewise.
+ 	* libgnat/a-strbou.ads: Likewise.
+ 	* libgnat/a-stream.adb: Likewise.
+ 	* libgnat/a-stream.ads: Likewise.
+ 	* libgnat/a-strfix.adb: Likewise.
+ 	* libgnat/a-strhas.adb: Likewise.
+ 	* libgnat/a-strmap.adb: Likewise.
+ 	* libgnat/a-strmap.ads: Likewise.
+ 	* libgnat/a-strsea.adb: Likewise.
+ 	* libgnat/a-strsea.ads: Likewise.
+ 	* libgnat/a-strsup.adb: Likewise.
+ 	* libgnat/a-strsup.ads: Likewise.
+ 	* libgnat/a-strunb.adb: Likewise.
+ 	* libgnat/a-strunb.ads: Likewise.
+ 	* libgnat/a-strunb__shared.adb: Likewise.
+ 	* libgnat/a-strunb__shared.ads: Likewise.
+ 	* libgnat/a-ststio.adb: Likewise.
+ 	* libgnat/a-ststio.ads: Likewise.
+ 	* libgnat/a-stunau.adb: Likewise.
+ 	* libgnat/a-stunau.ads: Likewise.
+ 	* libgnat/a-stunau__shared.adb: Likewise.
+ 	* libgnat/a-stunha.adb: Likewise.
+ 	* libgnat/a-stuten.adb: Likewise.
+ 	* libgnat/a-stwibo.adb: Likewise.
+ 	* libgnat/a-stwibo.ads: Likewise.
+ 	* libgnat/a-stwifi.adb: Likewise.
+ 	* libgnat/a-stwiha.adb: Likewise.
+ 	* libgnat/a-stwima.adb: Likewise.
+ 	* libgnat/a-stwima.ads: Likewise.
+ 	* libgnat/a-stwise.adb: Likewise.
+ 	* libgnat/a-stwise.ads: Likewise.
+ 	* libgnat/a-stwisu.adb: Likewise.
+ 	* libgnat/a-stwisu.ads: Likewise.
+ 	* libgnat/a-stwiun.adb: Likewise.
+ 	* libgnat/a-stwiun.ads: Likewise.
+ 	* libgnat/a-stwiun__shared.adb: Likewise.
+ 	* libgnat/a-stwiun__shared.ads: Likewise.
+ 	* libgnat/a-stzbou.adb: Likewise.
+ 	* libgnat/a-stzbou.ads: Likewise.
+ 	* libgnat/a-stzfix.adb: Likewise.
+ 	* libgnat/a-stzhas.adb: Likewise.
+ 	* libgnat/a-stzmap.adb: Likewise.
+ 	* libgnat/a-stzmap.ads: Likewise.
+ 	* libgnat/a-stzsea.adb: Likewise.
+ 	* libgnat/a-stzsea.ads: Likewise.
+ 	* libgnat/a-stzsup.adb: Likewise.
+ 	* libgnat/a-stzsup.ads: Likewise.
+ 	* libgnat/a-stzunb.adb: Likewise.
+ 	* libgnat/a-stzunb.ads: Likewise.
+ 	* libgnat/a-stzunb__shared.adb: Likewise.
+ 	* libgnat/a-stzunb__shared.ads: Likewise.
+ 	* libgnat/a-suecin.adb: Likewise.
+ 	* libgnat/a-suecin.ads: Likewise.
+ 	* libgnat/a-suenco.adb: Likewise.
+ 	* libgnat/a-suenst.adb: Likewise.
+ 	* libgnat/a-suewst.adb: Likewise.
+ 	* libgnat/a-suezst.adb: Likewise.
+ 	* libgnat/a-suhcin.adb: Likewise.
+ 	* libgnat/a-suhcin.ads: Likewise.
+ 	* libgnat/a-sulcin.adb: Likewise.
+ 	* libgnat/a-sulcin.ads: Likewise.
+ 	* libgnat/a-suteio.adb: Likewise.
+ 	* libgnat/a-suteio.ads: Likewise.
+ 	* libgnat/a-suteio__shared.adb: Likewise.
+ 	* libgnat/a-swbwha.adb: Likewise.
+ 	* libgnat/a-swmwco.ads: Likewise.
+ 	* libgnat/a-swunau.adb: Likewise.
+ 	* libgnat/a-swunau.ads: Likewise.
+ 	* libgnat/a-swunau__shared.adb: Likewise.
+ 	* libgnat/a-swuwha.adb: Likewise.
+ 	* libgnat/a-swuwti.adb: Likewise.
+ 	* libgnat/a-swuwti.ads: Likewise.
+ 	* libgnat/a-swuwti__shared.adb: Likewise.
+ 	* libgnat/a-szbzha.adb: Likewise.
+ 	* libgnat/a-szmzco.ads: Likewise.
+ 	* libgnat/a-szunau.adb: Likewise.
+ 	* libgnat/a-szunau.ads: Likewise.
+ 	* libgnat/a-szunau__shared.adb: Likewise.
+ 	* libgnat/a-szuzha.adb: Likewise.
+ 	* libgnat/a-szuzti.adb: Likewise.
+ 	* libgnat/a-szuzti.ads: Likewise.
+ 	* libgnat/a-szuzti__shared.adb: Likewise.
+ 	* libgnat/a-tags.adb: Likewise.
+ 	* libgnat/a-tags.ads: Likewise.
+ 	* libgnat/a-teioed.adb: Likewise.
+ 	* libgnat/a-teioed.ads: Likewise.
+ 	* libgnat/a-textio.adb: Likewise.
+ 	* libgnat/a-textio.ads: Likewise.
+ 	* libgnat/a-tiboio.adb: Likewise.
+ 	* libgnat/a-ticoau.adb: Likewise.
+ 	* libgnat/a-ticoau.ads: Likewise.
+ 	* libgnat/a-ticoio.adb: Likewise.
+ 	* libgnat/a-ticoio.ads: Likewise.
+ 	* libgnat/a-tideau.adb: Likewise.
+ 	* libgnat/a-tideau.ads: Likewise.
+ 	* libgnat/a-tideio.adb: Likewise.
+ 	* libgnat/a-tideio.ads: Likewise.
+ 	* libgnat/a-tienau.adb: Likewise.
+ 	* libgnat/a-tienau.ads: Likewise.
+ 	* libgnat/a-tienio.adb: Likewise.
+ 	* libgnat/a-tifiio.adb: Likewise.
+ 	* libgnat/a-tiflau.adb: Likewise.
+ 	* libgnat/a-tiflau.ads: Likewise.
+ 	* libgnat/a-tiflio.adb: Likewise.
+ 	* libgnat/a-tiflio.ads: Likewise.
+ 	* libgnat/a-tigeau.adb: Likewise.
+ 	* libgnat/a-tigeau.ads: Likewise.
+ 	* libgnat/a-tigeli.adb: Likewise.
+ 	* libgnat/a-tiinau.adb: Likewise.
+ 	* libgnat/a-tiinau.ads: Likewise.
+ 	* libgnat/a-tiinio.adb: Likewise.
+ 	* libgnat/a-tiinio.ads: Likewise.
+ 	* libgnat/a-timoau.adb: Likewise.
+ 	* libgnat/a-timoau.ads: Likewise.
+ 	* libgnat/a-timoio.adb: Likewise.
+ 	* libgnat/a-timoio.ads: Likewise.
+ 	* libgnat/a-tiocst.adb: Likewise.
+ 	* libgnat/a-tiocst.ads: Likewise.
+ 	* libgnat/a-tirsfi.adb: Likewise.
+ 	* libgnat/a-tirsfi.ads: Likewise.
+ 	* libgnat/a-titest.adb: Likewise.
+ 	* libgnat/a-undesu.adb: Likewise.
+ 	* libgnat/a-wichha.adb: Likewise.
+ 	* libgnat/a-wichun.adb: Likewise.
+ 	* libgnat/a-wichun.ads: Likewise.
+ 	* libgnat/a-witeio.adb: Likewise.
+ 	* libgnat/a-witeio.ads: Likewise.
+ 	* libgnat/a-wrstfi.adb: Likewise.
+ 	* libgnat/a-wrstfi.ads: Likewise.
+ 	* libgnat/a-wtcoau.adb: Likewise.
+ 	* libgnat/a-wtcoau.ads: Likewise.
+ 	* libgnat/a-wtcoio.adb: Likewise.
+ 	* libgnat/a-wtcstr.adb: Likewise.
+ 	* libgnat/a-wtcstr.ads: Likewise.
+ 	* libgnat/a-wtdeau.adb: Likewise.
+ 	* libgnat/a-wtdeau.ads: Likewise.
+ 	* libgnat/a-wtdeio.adb: Likewise.
+ 	* libgnat/a-wtedit.adb: Likewise.
+ 	* libgnat/a-wtedit.ads: Likewise.
+ 	* libgnat/a-wtenau.adb: Likewise.
+ 	* libgnat/a-wtenau.ads: Likewise.
+ 	* libgnat/a-wtenio.adb: Likewise.
+ 	* libgnat/a-wtfiio.adb: Likewise.
+ 	* libgnat/a-wtflau.adb: Likewise.
+ 	* libgnat/a-wtflau.ads: Likewise.
+ 	* libgnat/a-wtflio.adb: Likewise.
+ 	* libgnat/a-wtgeau.adb: Likewise.
+ 	* libgnat/a-wtgeau.ads: Likewise.
+ 	* libgnat/a-wtinau.adb: Likewise.
+ 	* libgnat/a-wtinau.ads: Likewise.
+ 	* libgnat/a-wtinio.adb: Likewise.
+ 	* libgnat/a-wtmoau.adb: Likewise.
+ 	* libgnat/a-wtmoau.ads: Likewise.
+ 	* libgnat/a-wtmoio.adb: Likewise.
+ 	* libgnat/a-wtmoio.ads: Likewise.
+ 	* libgnat/a-wttest.adb: Likewise.
+ 	* libgnat/a-wwboio.adb: Likewise.
+ 	* libgnat/a-zchhan.adb: Likewise.
+ 	* libgnat/a-zchuni.adb: Likewise.
+ 	* libgnat/a-zchuni.ads: Likewise.
+ 	* libgnat/a-zrstfi.adb: Likewise.
+ 	* libgnat/a-zrstfi.ads: Likewise.
+ 	* libgnat/a-ztcoau.adb: Likewise.
+ 	* libgnat/a-ztcoio.adb: Likewise.
+ 	* libgnat/a-ztcstr.adb: Likewise.
+ 	* libgnat/a-ztcstr.ads: Likewise.
+ 	* libgnat/a-ztdeau.adb: Likewise.
+ 	* libgnat/a-ztdeau.ads: Likewise.
+ 	* libgnat/a-ztdeio.adb: Likewise.
+ 	* libgnat/a-ztedit.adb: Likewise.
+ 	* libgnat/a-ztedit.ads: Likewise.
+ 	* libgnat/a-ztenau.adb: Likewise.
+ 	* libgnat/a-ztenau.ads: Likewise.
+ 	* libgnat/a-ztenio.adb: Likewise.
+ 	* libgnat/a-ztexio.adb: Likewise.
+ 	* libgnat/a-ztexio.ads: Likewise.
+ 	* libgnat/a-ztfiio.adb: Likewise.
+ 	* libgnat/a-ztflau.adb: Likewise.
+ 	* libgnat/a-ztflau.ads: Likewise.
+ 	* libgnat/a-ztflio.adb: Likewise.
+ 	* libgnat/a-ztgeau.adb: Likewise.
+ 	* libgnat/a-ztgeau.ads: Likewise.
+ 	* libgnat/a-ztinau.adb: Likewise.
+ 	* libgnat/a-ztinau.ads: Likewise.
+ 	* libgnat/a-ztinio.adb: Likewise.
+ 	* libgnat/a-ztmoau.adb: Likewise.
+ 	* libgnat/a-ztmoau.ads: Likewise.
+ 	* libgnat/a-ztmoio.adb: Likewise.
+ 	* libgnat/a-zttest.adb: Likewise.
+ 	* libgnat/a-zzboio.adb: Likewise.
+ 	* libgnat/g-allein.ads: Likewise.
+ 	* libgnat/g-alleve.adb: Likewise.
+ 	* libgnat/g-alleve.ads: Likewise.
+ 	* libgnat/g-alleve__hard.adb: Likewise.
+ 	* libgnat/g-alleve__hard.ads: Likewise.
+ 	* libgnat/g-altcon.adb: Likewise.
+ 	* libgnat/g-altcon.ads: Likewise.
+ 	* libgnat/g-altive.ads: Likewise.
+ 	* libgnat/g-alveop.adb: Likewise.
+ 	* libgnat/g-alveop.ads: Likewise.
+ 	* libgnat/g-alvety.ads: Likewise.
+ 	* libgnat/g-alvevi.ads: Likewise.
+ 	* libgnat/g-arrspl.adb: Likewise.
+ 	* libgnat/g-arrspl.ads: Likewise.
+ 	* libgnat/g-awk.adb: Likewise.
+ 	* libgnat/g-awk.ads: Likewise.
+ 	* libgnat/g-binenv.adb: Likewise.
+ 	* libgnat/g-binenv.ads: Likewise.
+ 	* libgnat/g-brapre.ads: Likewise.
+ 	* libgnat/g-bubsor.adb: Likewise.
+ 	* libgnat/g-bubsor.ads: Likewise.
+ 	* libgnat/g-busora.adb: Likewise.
+ 	* libgnat/g-busora.ads: Likewise.
+ 	* libgnat/g-busorg.adb: Likewise.
+ 	* libgnat/g-busorg.ads: Likewise.
+ 	* libgnat/g-byorma.adb: Likewise.
+ 	* libgnat/g-byorma.ads: Likewise.
+ 	* libgnat/g-bytswa.adb: Likewise.
+ 	* libgnat/g-bytswa.ads: Likewise.
+ 	* libgnat/g-calend.adb: Likewise.
+ 	* libgnat/g-calend.ads: Likewise.
+ 	* libgnat/g-casuti.adb: Likewise.
+ 	* libgnat/g-casuti.ads: Likewise.
+ 	* libgnat/g-catiio.adb: Likewise.
+ 	* libgnat/g-catiio.ads: Likewise.
+ 	* libgnat/g-cgi.adb: Likewise.
+ 	* libgnat/g-cgi.ads: Likewise.
+ 	* libgnat/g-cgicoo.adb: Likewise.
+ 	* libgnat/g-cgicoo.ads: Likewise.
+ 	* libgnat/g-cgideb.adb: Likewise.
+ 	* libgnat/g-cgideb.ads: Likewise.
+ 	* libgnat/g-comlin.adb: Likewise.
+ 	* libgnat/g-comlin.ads: Likewise.
+ 	* libgnat/g-comver.adb: Likewise.
+ 	* libgnat/g-comver.ads: Likewise.
+ 	* libgnat/g-cppexc.adb: Likewise.
+ 	* libgnat/g-cppexc.ads: Likewise.
+ 	* libgnat/g-crc32.adb: Likewise.
+ 	* libgnat/g-crc32.ads: Likewise.
+ 	* libgnat/g-ctrl_c.adb: Likewise.
+ 	* libgnat/g-ctrl_c.ads: Likewise.
+ 	* libgnat/g-curexc.ads: Likewise.
+ 	* libgnat/g-debpoo.adb: Likewise.
+ 	* libgnat/g-debpoo.ads: Likewise.
+ 	* libgnat/g-debuti.adb: Likewise.
+ 	* libgnat/g-debuti.ads: Likewise.
+ 	* libgnat/g-decstr.adb: Likewise.
+ 	* libgnat/g-decstr.ads: Likewise.
+ 	* libgnat/g-deutst.ads: Likewise.
+ 	* libgnat/g-diopit.adb: Likewise.
+ 	* libgnat/g-diopit.ads: Likewise.
+ 	* libgnat/g-dirope.adb: Likewise.
+ 	* libgnat/g-dirope.ads: Likewise.
+ 	* libgnat/g-dynhta.adb: Likewise.
+ 	* libgnat/g-dynhta.ads: Likewise.
+ 	* libgnat/g-dyntab.adb: Likewise.
+ 	* libgnat/g-dyntab.ads: Likewise.
+ 	* libgnat/g-eacodu.adb: Likewise.
+ 	* libgnat/g-encstr.adb: Likewise.
+ 	* libgnat/g-encstr.ads: Likewise.
+ 	* libgnat/g-enutst.ads: Likewise.
+ 	* libgnat/g-excact.adb: Likewise.
+ 	* libgnat/g-excact.ads: Likewise.
+ 	* libgnat/g-except.ads: Likewise.
+ 	* libgnat/g-exctra.adb: Likewise.
+ 	* libgnat/g-exctra.ads: Likewise.
+ 	* libgnat/g-expect.adb: Likewise.
+ 	* libgnat/g-expect.ads: Likewise.
+ 	* libgnat/g-exptty.adb: Likewise.
+ 	* libgnat/g-exptty.ads: Likewise.
+ 	* libgnat/g-flocon.ads: Likewise.
+ 	* libgnat/g-forstr.adb: Likewise.
+ 	* libgnat/g-forstr.ads: Likewise.
+ 	* libgnat/g-graphs.adb: Likewise.
+ 	* libgnat/g-graphs.ads: Likewise.
+ 	* libgnat/g-heasor.adb: Likewise.
+ 	* libgnat/g-heasor.ads: Likewise.
+ 	* libgnat/g-hesora.adb: Likewise.
+ 	* libgnat/g-hesora.ads: Likewise.
+ 	* libgnat/g-hesorg.adb: Likewise.
+ 	* libgnat/g-hesorg.ads: Likewise.
+ 	* libgnat/g-htable.adb: Likewise.
+ 	* libgnat/g-htable.ads: Likewise.
+ 	* libgnat/g-io-put__vxworks.adb: Likewise.
+ 	* libgnat/g-io.adb: Likewise.
+ 	* libgnat/g-io.ads: Likewise.
+ 	* libgnat/g-io_aux.adb: Likewise.
+ 	* libgnat/g-io_aux.ads: Likewise.
+ 	* libgnat/g-lists.adb: Likewise.
+ 	* libgnat/g-lists.ads: Likewise.
+ 	* libgnat/g-locfil.adb: Likewise.
+ 	* libgnat/g-locfil.ads: Likewise.
+ 	* libgnat/g-mbdira.adb: Likewise.
+ 	* libgnat/g-mbdira.ads: Likewise.
+ 	* libgnat/g-mbflra.adb: Likewise.
+ 	* libgnat/g-mbflra.ads: Likewise.
+ 	* libgnat/g-md5.adb: Likewise.
+ 	* libgnat/g-md5.ads: Likewise.
+ 	* libgnat/g-memdum.adb: Likewise.
+ 	* libgnat/g-memdum.ads: Likewise.
+ 	* libgnat/g-moreex.adb: Likewise.
+ 	* libgnat/g-moreex.ads: Likewise.
+ 	* libgnat/g-os_lib.adb: Likewise.
+ 	* libgnat/g-os_lib.ads: Likewise.
+ 	* libgnat/g-pehage.adb: Likewise.
+ 	* libgnat/g-pehage.ads: Likewise.
+ 	* libgnat/g-rannum.adb: Likewise.
+ 	* libgnat/g-rannum.ads: Likewise.
+ 	* libgnat/g-regexp.adb: Likewise.
+ 	* libgnat/g-regexp.ads: Likewise.
+ 	* libgnat/g-regist.adb: Likewise.
+ 	* libgnat/g-regist.ads: Likewise.
+ 	* libgnat/g-regpat.adb: Likewise.
+ 	* libgnat/g-regpat.ads: Likewise.
+ 	* libgnat/g-rewdat.adb: Likewise.
+ 	* libgnat/g-rewdat.ads: Likewise.
+ 	* libgnat/g-sechas.adb: Likewise.
+ 	* libgnat/g-sechas.ads: Likewise.
+ 	* libgnat/g-sehamd.adb: Likewise.
+ 	* libgnat/g-sehamd.ads: Likewise.
+ 	* libgnat/g-sehash.adb: Likewise.
+ 	* libgnat/g-sehash.ads: Likewise.
+ 	* libgnat/g-sercom.adb: Likewise.
+ 	* libgnat/g-sercom.ads: Likewise.
+ 	* libgnat/g-sercom__linux.adb: Likewise.
+ 	* libgnat/g-sercom__mingw.adb: Likewise.
+ 	* libgnat/g-sestin.ads: Likewise.
+ 	* libgnat/g-sets.adb: Likewise.
+ 	* libgnat/g-sets.ads: Likewise.
+ 	* libgnat/g-sha1.adb: Likewise.
+ 	* libgnat/g-sha1.ads: Likewise.
+ 	* libgnat/g-sha224.ads: Likewise.
+ 	* libgnat/g-sha256.ads: Likewise.
+ 	* libgnat/g-sha384.ads: Likewise.
+ 	* libgnat/g-sha512.ads: Likewise.
+ 	* libgnat/g-shsh32.adb: Likewise.
+ 	* libgnat/g-shsh32.ads: Likewise.
+ 	* libgnat/g-shsh64.adb: Likewise.
+ 	* libgnat/g-shsh64.ads: Likewise.
+ 	* libgnat/g-shshco.adb: Likewise.
+ 	* libgnat/g-shshco.ads: Likewise.
+ 	* libgnat/g-soccon.ads: Likewise.
+ 	* libgnat/g-socket.adb: Likewise.
+ 	* libgnat/g-socket.ads: Likewise.
+ 	* libgnat/g-socket__dummy.adb: Likewise.
+ 	* libgnat/g-socket__dummy.ads: Likewise.
+ 	* libgnat/g-socthi.adb: Likewise.
+ 	* libgnat/g-socthi.ads: Likewise.
+ 	* libgnat/g-socthi__dummy.adb: Likewise.
+ 	* libgnat/g-socthi__dummy.ads: Likewise.
+ 	* libgnat/g-socthi__mingw.adb: Likewise.
+ 	* libgnat/g-socthi__mingw.ads: Likewise.
+ 	* libgnat/g-socthi__vxworks.adb: Likewise.
+ 	* libgnat/g-socthi__vxworks.ads: Likewise.
+ 	* libgnat/g-soliop.ads: Likewise.
+ 	* libgnat/g-soliop__lynxos.ads: Likewise.
+ 	* libgnat/g-soliop__mingw.ads: Likewise.
+ 	* libgnat/g-soliop__qnx.ads: Likewise.
+ 	* libgnat/g-soliop__solaris.ads: Likewise.
+ 	* libgnat/g-sothco.adb: Likewise.
+ 	* libgnat/g-sothco.ads: Likewise.
+ 	* libgnat/g-sothco__dummy.adb: Likewise.
+ 	* libgnat/g-sothco__dummy.ads: Likewise.
+ 	* libgnat/g-souinf.ads: Likewise.
+ 	* libgnat/g-spchge.adb: Likewise.
+ 	* libgnat/g-spchge.ads: Likewise.
+ 	* libgnat/g-speche.adb: Likewise.
+ 	* libgnat/g-speche.ads: Likewise.
+ 	* libgnat/g-spipat.adb: Likewise.
+ 	* libgnat/g-spipat.ads: Likewise.
+ 	* libgnat/g-spitbo.adb: Likewise.
+ 	* libgnat/g-spitbo.ads: Likewise.
+ 	* libgnat/g-sptabo.ads: Likewise.
+ 	* libgnat/g-sptain.ads: Likewise.
+ 	* libgnat/g-sptavs.ads: Likewise.
+ 	* libgnat/g-sse.ads: Likewise.
+ 	* libgnat/g-ssvety.ads: Likewise.
+ 	* libgnat/g-sthcso.adb: Likewise.
+ 	* libgnat/g-stheme.adb: Likewise.
+ 	* libgnat/g-strhas.ads: Likewise.
+ 	* libgnat/g-string.adb: Likewise.
+ 	* libgnat/g-string.ads: Likewise.
+ 	* libgnat/g-strspl.ads: Likewise.
+ 	* libgnat/g-stseme.adb: Likewise.
+ 	* libgnat/g-stsifd__sockets.adb: Likewise.
+ 	* libgnat/g-table.adb: Likewise.
+ 	* libgnat/g-table.ads: Likewise.
+ 	* libgnat/g-tasloc.adb: Likewise.
+ 	* libgnat/g-tasloc.ads: Likewise.
+ 	* libgnat/g-timsta.adb: Likewise.
+ 	* libgnat/g-timsta.ads: Likewise.
+ 	* libgnat/g-traceb.adb: Likewise.
+ 	* libgnat/g-traceb.ads: Likewise.
+ 	* libgnat/g-trasym.adb: Likewise.
+ 	* libgnat/g-trasym.ads: Likewise.
+ 	* libgnat/g-tty.adb: Likewise.
+ 	* libgnat/g-tty.ads: Likewise.
+ 	* libgnat/g-u3spch.adb: Likewise.
+ 	* libgnat/g-u3spch.ads: Likewise.
+ 	* libgnat/g-utf_32.adb: Likewise.
+ 	* libgnat/g-utf_32.ads: Likewise.
+ 	* libgnat/g-wispch.adb: Likewise.
+ 	* libgnat/g-wispch.ads: Likewise.
+ 	* libgnat/g-wistsp.ads: Likewise.
+ 	* libgnat/g-zspche.adb: Likewise.
+ 	* libgnat/g-zspche.ads: Likewise.
+ 	* libgnat/g-zstspl.ads: Likewise.
+ 	* libgnat/gnat.ads: Likewise.
+ 	* libgnat/i-c.adb: Likewise.
+ 	* libgnat/i-cexten.ads: Likewise.
+ 	* libgnat/i-cobol.adb: Likewise.
+ 	* libgnat/i-cobol.ads: Likewise.
+ 	* libgnat/i-cpoint.adb: Likewise.
+ 	* libgnat/i-cpoint.ads: Likewise.
+ 	* libgnat/i-cstrea.adb: Likewise.
+ 	* libgnat/i-cstrea.ads: Likewise.
+ 	* libgnat/i-cstrin.adb: Likewise.
+ 	* libgnat/i-cstrin.ads: Likewise.
+ 	* libgnat/i-fortra.adb: Likewise.
+ 	* libgnat/i-pacdec.adb: Likewise.
+ 	* libgnat/i-pacdec.ads: Likewise.
+ 	* libgnat/i-vxwoio.adb: Likewise.
+ 	* libgnat/i-vxwoio.ads: Likewise.
+ 	* libgnat/i-vxwork.ads: Likewise.
+ 	* libgnat/i-vxwork__x86.ads: Likewise.
+ 	* libgnat/interfac.ads: Likewise.
+ 	* libgnat/memtrack.adb: Likewise.
+ 	* libgnat/s-addima.adb: Likewise.
+ 	* libgnat/s-addima.ads: Likewise.
+ 	* libgnat/s-addope.adb: Likewise.
+ 	* libgnat/s-addope.ads: Likewise.
+ 	* libgnat/s-aotase.adb: Likewise.
+ 	* libgnat/s-aotase.ads: Likewise.
+ 	* libgnat/s-arit64.adb: Likewise.
+ 	* libgnat/s-arit64.ads: Likewise.
+ 	* libgnat/s-assert.adb: Likewise.
+ 	* libgnat/s-assert.ads: Likewise.
+ 	* libgnat/s-atacco.adb: Likewise.
+ 	* libgnat/s-atacco.ads: Likewise.
+ 	* libgnat/s-atocou.adb: Likewise.
+ 	* libgnat/s-atocou.ads: Likewise.
+ 	* libgnat/s-atocou__builtin.adb: Likewise.
+ 	* libgnat/s-atocou__x86.adb: Likewise.
+ 	* libgnat/s-atoope.ads: Likewise.
+ 	* libgnat/s-atopar.adb: Likewise.
+ 	* libgnat/s-atopar.ads: Likewise.
+ 	* libgnat/s-atopex.adb: Likewise.
+ 	* libgnat/s-atopex.ads: Likewise.
+ 	* libgnat/s-atopri.adb: Likewise.
+ 	* libgnat/s-atopri.ads: Likewise.
+ 	* libgnat/s-auxdec.adb: Likewise.
+ 	* libgnat/s-auxdec.ads: Likewise.
+ 	* libgnat/s-bignum.adb: Likewise.
+ 	* libgnat/s-bignum.ads: Likewise.
+ 	* libgnat/s-bitfie.ads: Likewise.
+ 	* libgnat/s-bitops.adb: Likewise.
+ 	* libgnat/s-bitops.ads: Likewise.
+ 	* libgnat/s-bituti.adb: Likewise.
+ 	* libgnat/s-bituti.ads: Likewise.
+ 	* libgnat/s-boarop.ads: Likewise.
+ 	* libgnat/s-boustr.adb: Likewise.
+ 	* libgnat/s-boustr.ads: Likewise.
+ 	* libgnat/s-bytswa.ads: Likewise.
+ 	* libgnat/s-carsi8.adb: Likewise.
+ 	* libgnat/s-carsi8.ads: Likewise.
+ 	* libgnat/s-carun8.adb: Likewise.
+ 	* libgnat/s-carun8.ads: Likewise.
+ 	* libgnat/s-casi16.adb: Likewise.
+ 	* libgnat/s-casi16.ads: Likewise.
+ 	* libgnat/s-casi32.adb: Likewise.
+ 	* libgnat/s-casi32.ads: Likewise.
+ 	* libgnat/s-casi64.adb: Likewise.
+ 	* libgnat/s-casi64.ads: Likewise.
+ 	* libgnat/s-casuti.adb: Likewise.
+ 	* libgnat/s-casuti.ads: Likewise.
+ 	* libgnat/s-caun16.adb: Likewise.
+ 	* libgnat/s-caun16.ads: Likewise.
+ 	* libgnat/s-caun32.adb: Likewise.
+ 	* libgnat/s-caun32.ads: Likewise.
+ 	* libgnat/s-caun64.adb: Likewise.
+ 	* libgnat/s-caun64.ads: Likewise.
+ 	* libgnat/s-chepoo.ads: Likewise.
+ 	* libgnat/s-commun.adb: Likewise.
+ 	* libgnat/s-commun.ads: Likewise.
+ 	* libgnat/s-conca2.adb: Likewise.
+ 	* libgnat/s-conca2.ads: Likewise.
+ 	* libgnat/s-conca3.adb: Likewise.
+ 	* libgnat/s-conca3.ads: Likewise.
+ 	* libgnat/s-conca4.adb: Likewise.
+ 	* libgnat/s-conca4.ads: Likewise.
+ 	* libgnat/s-conca5.adb: Likewise.
+ 	* libgnat/s-conca5.ads: Likewise.
+ 	* libgnat/s-conca6.adb: Likewise.
+ 	* libgnat/s-conca6.ads: Likewise.
+ 	* libgnat/s-conca7.adb: Likewise.
+ 	* libgnat/s-conca7.ads: Likewise.
+ 	* libgnat/s-conca8.adb: Likewise.
+ 	* libgnat/s-conca8.ads: Likewise.
+ 	* libgnat/s-conca9.adb: Likewise.
+ 	* libgnat/s-conca9.ads: Likewise.
+ 	* libgnat/s-crc32.adb: Likewise.
+ 	* libgnat/s-crc32.ads: Likewise.
+ 	* libgnat/s-crtl.ads: Likewise.
+ 	* libgnat/s-dfmkio.ads: Likewise.
+ 	* libgnat/s-dfmopr.ads: Likewise.
+ 	* libgnat/s-dgmgop.ads: Likewise.
+ 	* libgnat/s-diflio.adb: Likewise.
+ 	* libgnat/s-diflio.ads: Likewise.
+ 	* libgnat/s-diflmk.ads: Likewise.
+ 	* libgnat/s-digemk.ads: Likewise.
+ 	* libgnat/s-diinio.adb: Likewise.
+ 	* libgnat/s-diinio.ads: Likewise.
+ 	* libgnat/s-dilomk.ads: Likewise.
+ 	* libgnat/s-dim.ads: Likewise.
+ 	* libgnat/s-dimkio.ads: Likewise.
+ 	* libgnat/s-dimmks.ads: Likewise.
+ 	* libgnat/s-direio.adb: Likewise.
+ 	* libgnat/s-direio.ads: Likewise.
+ 	* libgnat/s-dlmkio.ads: Likewise.
+ 	* libgnat/s-dlmopr.ads: Likewise.
+ 	* libgnat/s-dmotpr.ads: Likewise.
+ 	* libgnat/s-dsaser.ads: Likewise.
+ 	* libgnat/s-dwalin.adb: Likewise.
+ 	* libgnat/s-dwalin.ads: Likewise.
+ 	* libgnat/s-elaall.adb: Likewise.
+ 	* libgnat/s-elaall.ads: Likewise.
+ 	* libgnat/s-excdeb.adb: Likewise.
+ 	* libgnat/s-excdeb.ads: Likewise.
+ 	* libgnat/s-except.adb: Likewise.
+ 	* libgnat/s-except.ads: Likewise.
+ 	* libgnat/s-excmac__arm.adb: Likewise.
+ 	* libgnat/s-excmac__arm.ads: Likewise.
+ 	* libgnat/s-excmac__gcc.adb: Likewise.
+ 	* libgnat/s-excmac__gcc.ads: Likewise.
+ 	* libgnat/s-exctab.adb: Likewise.
+ 	* libgnat/s-exctab.ads: Likewise.
+ 	* libgnat/s-exctra.adb: Likewise.
+ 	* libgnat/s-exctra.ads: Likewise.
+ 	* libgnat/s-exnint.adb: Likewise.
+ 	* libgnat/s-exnint.ads: Likewise.
+ 	* libgnat/s-exnllf.adb: Likewise.
+ 	* libgnat/s-exnllf.ads: Likewise.
+ 	* libgnat/s-exnlli.adb: Likewise.
+ 	* libgnat/s-exnlli.ads: Likewise.
+ 	* libgnat/s-expint.adb: Likewise.
+ 	* libgnat/s-expint.ads: Likewise.
+ 	* libgnat/s-explli.adb: Likewise.
+ 	* libgnat/s-explli.ads: Likewise.
+ 	* libgnat/s-expllu.adb: Likewise.
+ 	* libgnat/s-expllu.ads: Likewise.
+ 	* libgnat/s-expmod.adb: Likewise.
+ 	* libgnat/s-expmod.ads: Likewise.
+ 	* libgnat/s-expuns.adb: Likewise.
+ 	* libgnat/s-expuns.ads: Likewise.
+ 	* libgnat/s-fatflt.ads: Likewise.
+ 	* libgnat/s-fatgen.adb: Likewise.
+ 	* libgnat/s-fatgen.ads: Likewise.
+ 	* libgnat/s-fatlfl.ads: Likewise.
+ 	* libgnat/s-fatllf.ads: Likewise.
+ 	* libgnat/s-fatsfl.ads: Likewise.
+ 	* libgnat/s-ficobl.ads: Likewise.
+ 	* libgnat/s-filatt.ads: Likewise.
+ 	* libgnat/s-fileio.adb: Likewise.
+ 	* libgnat/s-fileio.ads: Likewise.
+ 	* libgnat/s-finmas.adb: Likewise.
+ 	* libgnat/s-finmas.ads: Likewise.
+ 	* libgnat/s-finroo.adb: Likewise.
+ 	* libgnat/s-finroo.ads: Likewise.
+ 	* libgnat/s-flocon.adb: Likewise.
+ 	* libgnat/s-flocon.ads: Likewise.
+ 	* libgnat/s-flocon__none.adb: Likewise.
+ 	* libgnat/s-fore.adb: Likewise.
+ 	* libgnat/s-fore.ads: Likewise.
+ 	* libgnat/s-gearop.adb: Likewise.
+ 	* libgnat/s-gearop.ads: Likewise.
+ 	* libgnat/s-genbig.adb: Likewise.
+ 	* libgnat/s-genbig.ads: Likewise.
+ 	* libgnat/s-geveop.adb: Likewise.
+ 	* libgnat/s-geveop.ads: Likewise.
+ 	* libgnat/s-gloloc.adb: Likewise.
+ 	* libgnat/s-gloloc.ads: Likewise.
+ 	* libgnat/s-gloloc__mingw.adb: Likewise.
+ 	* libgnat/s-htable.adb: Likewise.
+ 	* libgnat/s-htable.ads: Likewise.
+ 	* libgnat/s-imenne.adb: Likewise.
+ 	* libgnat/s-imenne.ads: Likewise.
+ 	* libgnat/s-imgbiu.adb: Likewise.
+ 	* libgnat/s-imgbiu.ads: Likewise.
+ 	* libgnat/s-imgboo.adb: Likewise.
+ 	* libgnat/s-imgboo.ads: Likewise.
+ 	* libgnat/s-imgcha.adb: Likewise.
+ 	* libgnat/s-imgcha.ads: Likewise.
+ 	* libgnat/s-imgdec.adb: Likewise.
+ 	* libgnat/s-imgdec.ads: Likewise.
+ 	* libgnat/s-imgenu.adb: Likewise.
+ 	* libgnat/s-imgenu.ads: Likewise.
+ 	* libgnat/s-imgint.adb: Likewise.
+ 	* libgnat/s-imgint.ads: Likewise.
+ 	* libgnat/s-imgllb.adb: Likewise.
+ 	* libgnat/s-imgllb.ads: Likewise.
+ 	* libgnat/s-imglld.adb: Likewise.
+ 	* libgnat/s-imglld.ads: Likewise.
+ 	* libgnat/s-imglli.adb: Likewise.
+ 	* libgnat/s-imglli.ads: Likewise.
+ 	* libgnat/s-imgllu.adb: Likewise.
+ 	* libgnat/s-imgllu.ads: Likewise.
+ 	* libgnat/s-imgllw.adb: Likewise.
+ 	* libgnat/s-imgllw.ads: Likewise.
+ 	* libgnat/s-imgrea.adb: Likewise.
+ 	* libgnat/s-imgrea.ads: Likewise.
+ 	* libgnat/s-imguns.adb: Likewise.
+ 	* libgnat/s-imguns.ads: Likewise.
+ 	* libgnat/s-imgwch.adb: Likewise.
+ 	* libgnat/s-imgwch.ads: Likewise.
+ 	* libgnat/s-imgwiu.adb: Likewise.
+ 	* libgnat/s-imgwiu.ads: Likewise.
+ 	* libgnat/s-io.adb: Likewise.
+ 	* libgnat/s-io.ads: Likewise.
+ 	* libgnat/s-llflex.ads: Likewise.
+ 	* libgnat/s-maccod.ads: Likewise.
+ 	* libgnat/s-mantis.adb: Likewise.
+ 	* libgnat/s-mantis.ads: Likewise.
+ 	* libgnat/s-mastop.adb: Likewise.
+ 	* libgnat/s-mastop.ads: Likewise.
+ 	* libgnat/s-memcop.ads: Likewise.
+ 	* libgnat/s-memory.adb: Likewise.
+ 	* libgnat/s-memory.ads: Likewise.
+ 	* libgnat/s-mmap.adb: Likewise.
+ 	* libgnat/s-mmap.ads: Likewise.
+ 	* libgnat/s-mmauni__long.ads: Likewise.
+ 	* libgnat/s-mmosin__mingw.adb: Likewise.
+ 	* libgnat/s-mmosin__mingw.ads: Likewise.
+ 	* libgnat/s-mmosin__unix.adb: Likewise.
+ 	* libgnat/s-mmosin__unix.ads: Likewise.
+ 	* libgnat/s-multip.adb: Likewise.
+ 	* libgnat/s-objrea.adb: Likewise.
+ 	* libgnat/s-objrea.ads: Likewise.
+ 	* libgnat/s-optide.adb: Likewise.
+ 	* libgnat/s-os_lib.adb: Likewise.
+ 	* libgnat/s-os_lib.ads: Likewise.
+ 	* libgnat/s-osprim.ads: Likewise.
+ 	* libgnat/s-osprim__darwin.adb: Likewise.
+ 	* libgnat/s-osprim__lynxos.ads: Likewise.
+ 	* libgnat/s-osprim__mingw.adb: Likewise.
+ 	* libgnat/s-osprim__posix.adb: Likewise.
+ 	* libgnat/s-osprim__posix2008.adb: Likewise.
+ 	* libgnat/s-osprim__rtems.adb: Likewise.
+ 	* libgnat/s-osprim__solaris.adb: Likewise.
+ 	* libgnat/s-osprim__unix.adb: Likewise.
+ 	* libgnat/s-osprim__vxworks.adb: Likewise.
+ 	* libgnat/s-osprim__x32.adb: Likewise.
+ 	* libgnat/s-osvers__vxworks-653.ads: Likewise.
+ 	* libgnat/s-pack03.adb: Likewise.
+ 	* libgnat/s-pack03.ads: Likewise.
+ 	* libgnat/s-pack05.adb: Likewise.
+ 	* libgnat/s-pack05.ads: Likewise.
+ 	* libgnat/s-pack06.adb: Likewise.
+ 	* libgnat/s-pack06.ads: Likewise.
+ 	* libgnat/s-pack07.adb: Likewise.
+ 	* libgnat/s-pack07.ads: Likewise.
+ 	* libgnat/s-pack09.adb: Likewise.
+ 	* libgnat/s-pack09.ads: Likewise.
+ 	* libgnat/s-pack10.adb: Likewise.
+ 	* libgnat/s-pack10.ads: Likewise.
+ 	* libgnat/s-pack11.adb: Likewise.
+ 	* libgnat/s-pack11.ads: Likewise.
+ 	* libgnat/s-pack12.adb: Likewise.
+ 	* libgnat/s-pack12.ads: Likewise.
+ 	* libgnat/s-pack13.adb: Likewise.
+ 	* libgnat/s-pack13.ads: Likewise.
+ 	* libgnat/s-pack14.adb: Likewise.
+ 	* libgnat/s-pack14.ads: Likewise.
+ 	* libgnat/s-pack15.adb: Likewise.
+ 	* libgnat/s-pack15.ads: Likewise.
+ 	* libgnat/s-pack17.adb: Likewise.
+ 	* libgnat/s-pack17.ads: Likewise.
+ 	* libgnat/s-pack18.adb: Likewise.
+ 	* libgnat/s-pack18.ads: Likewise.
+ 	* libgnat/s-pack19.adb: Likewise.
+ 	* libgnat/s-pack19.ads: Likewise.
+ 	* libgnat/s-pack20.adb: Likewise.
+ 	* libgnat/s-pack20.ads: Likewise.
+ 	* libgnat/s-pack21.adb: Likewise.
+ 	* libgnat/s-pack21.ads: Likewise.
+ 	* libgnat/s-pack22.adb: Likewise.
+ 	* libgnat/s-pack22.ads: Likewise.
+ 	* libgnat/s-pack23.adb: Likewise.
+ 	* libgnat/s-pack23.ads: Likewise.
+ 	* libgnat/s-pack24.adb: Likewise.
+ 	* libgnat/s-pack24.ads: Likewise.
+ 	* libgnat/s-pack25.adb: Likewise.
+ 	* libgnat/s-pack25.ads: Likewise.
+ 	* libgnat/s-pack26.adb: Likewise.
+ 	* libgnat/s-pack26.ads: Likewise.
+ 	* libgnat/s-pack27.adb: Likewise.
+ 	* libgnat/s-pack27.ads: Likewise.
+ 	* libgnat/s-pack28.adb: Likewise.
+ 	* libgnat/s-pack28.ads: Likewise.
+ 	* libgnat/s-pack29.adb: Likewise.
+ 	* libgnat/s-pack29.ads: Likewise.
+ 	* libgnat/s-pack30.adb: Likewise.
+ 	* libgnat/s-pack30.ads: Likewise.
+ 	* libgnat/s-pack31.adb: Likewise.
+ 	* libgnat/s-pack31.ads: Likewise.
+ 	* libgnat/s-pack33.adb: Likewise.
+ 	* libgnat/s-pack33.ads: Likewise.
+ 	* libgnat/s-pack34.adb: Likewise.
+ 	* libgnat/s-pack34.ads: Likewise.
+ 	* libgnat/s-pack35.adb: Likewise.
+ 	* libgnat/s-pack35.ads: Likewise.
+ 	* libgnat/s-pack36.adb: Likewise.
+ 	* libgnat/s-pack36.ads: Likewise.
+ 	* libgnat/s-pack37.adb: Likewise.
+ 	* libgnat/s-pack37.ads: Likewise.
+ 	* libgnat/s-pack38.adb: Likewise.
+ 	* libgnat/s-pack38.ads: Likewise.
+ 	* libgnat/s-pack39.adb: Likewise.
+ 	* libgnat/s-pack39.ads: Likewise.
+ 	* libgnat/s-pack40.adb: Likewise.
+ 	* libgnat/s-pack40.ads: Likewise.
+ 	* libgnat/s-pack41.adb: Likewise.
+ 	* libgnat/s-pack41.ads: Likewise.
+ 	* libgnat/s-pack42.adb: Likewise.
+ 	* libgnat/s-pack42.ads: Likewise.
+ 	* libgnat/s-pack43.adb: Likewise.
+ 	* libgnat/s-pack43.ads: Likewise.
+ 	* libgnat/s-pack44.adb: Likewise.
+ 	* libgnat/s-pack44.ads: Likewise.
+ 	* libgnat/s-pack45.adb: Likewise.
+ 	* libgnat/s-pack45.ads: Likewise.
+ 	* libgnat/s-pack46.adb: Likewise.
+ 	* libgnat/s-pack46.ads: Likewise.
+ 	* libgnat/s-pack47.adb: Likewise.
+ 	* libgnat/s-pack47.ads: Likewise.
+ 	* libgnat/s-pack48.adb: Likewise.
+ 	* libgnat/s-pack48.ads: Likewise.
+ 	* libgnat/s-pack49.adb: Likewise.
+ 	* libgnat/s-pack49.ads: Likewise.
+ 	* libgnat/s-pack50.adb: Likewise.
+ 	* libgnat/s-pack50.ads: Likewise.
+ 	* libgnat/s-pack51.adb: Likewise.
+ 	* libgnat/s-pack51.ads: Likewise.
+ 	* libgnat/s-pack52.adb: Likewise.
+ 	* libgnat/s-pack52.ads: Likewise.
+ 	* libgnat/s-pack53.adb: Likewise.
+ 	* libgnat/s-pack53.ads: Likewise.
+ 	* libgnat/s-pack54.adb: Likewise.
+ 	* libgnat/s-pack54.ads: Likewise.
+ 	* libgnat/s-pack55.adb: Likewise.
+ 	* libgnat/s-pack55.ads: Likewise.
+ 	* libgnat/s-pack56.adb: Likewise.
+ 	* libgnat/s-pack56.ads: Likewise.
+ 	* libgnat/s-pack57.adb: Likewise.
+ 	* libgnat/s-pack57.ads: Likewise.
+ 	* libgnat/s-pack58.adb: Likewise.
+ 	* libgnat/s-pack58.ads: Likewise.
+ 	* libgnat/s-pack59.adb: Likewise.
+ 	* libgnat/s-pack59.ads: Likewise.
+ 	* libgnat/s-pack60.adb: Likewise.
+ 	* libgnat/s-pack60.ads: Likewise.
+ 	* libgnat/s-pack61.adb: Likewise.
+ 	* libgnat/s-pack61.ads: Likewise.
+ 	* libgnat/s-pack62.adb: Likewise.
+ 	* libgnat/s-pack62.ads: Likewise.
+ 	* libgnat/s-pack63.adb: Likewise.
+ 	* libgnat/s-pack63.ads: Likewise.
+ 	* libgnat/s-parame.adb: Likewise.
+ 	* libgnat/s-parame.ads: Likewise.
+ 	* libgnat/s-parame__ae653.ads: Likewise.
+ 	* libgnat/s-parame__hpux.ads: Likewise.
+ 	* libgnat/s-parame__rtems.adb: Likewise.
+ 	* libgnat/s-parame__vxworks.adb: Likewise.
+ 	* libgnat/s-parame__vxworks.ads: Likewise.
+ 	* libgnat/s-parint.adb: Likewise.
+ 	* libgnat/s-parint.ads: Likewise.
+ 	* libgnat/s-pooglo.adb: Likewise.
+ 	* libgnat/s-pooglo.ads: Likewise.
+ 	* libgnat/s-pooloc.adb: Likewise.
+ 	* libgnat/s-pooloc.ads: Likewise.
+ 	* libgnat/s-poosiz.adb: Likewise.
+ 	* libgnat/s-poosiz.ads: Likewise.
+ 	* libgnat/s-powtab.ads: Likewise.
+ 	* libgnat/s-purexc.ads: Likewise.
+ 	* libgnat/s-rannum.adb: Likewise.
+ 	* libgnat/s-rannum.ads: Likewise.
+ 	* libgnat/s-ransee.adb: Likewise.
+ 	* libgnat/s-ransee.ads: Likewise.
+ 	* libgnat/s-regexp.adb: Likewise.
+ 	* libgnat/s-regexp.ads: Likewise.
+ 	* libgnat/s-regpat.adb: Likewise.
+ 	* libgnat/s-regpat.ads: Likewise.
+ 	* libgnat/s-resfil.adb: Likewise.
+ 	* libgnat/s-resfil.ads: Likewise.
+ 	* libgnat/s-restri.adb: Likewise.
+ 	* libgnat/s-restri.ads: Likewise.
+ 	* libgnat/s-rident.ads: Likewise.
+ 	* libgnat/s-rpc.adb: Likewise.
+ 	* libgnat/s-rpc.ads: Likewise.
+ 	* libgnat/s-scaval.adb: Likewise.
+ 	* libgnat/s-scaval.ads: Likewise.
+ 	* libgnat/s-secsta.adb: Likewise.
+ 	* libgnat/s-secsta.ads: Likewise.
+ 	* libgnat/s-sequio.adb: Likewise.
+ 	* libgnat/s-sequio.ads: Likewise.
+ 	* libgnat/s-shasto.adb: Likewise.
+ 	* libgnat/s-shasto.ads: Likewise.
+ 	* libgnat/s-soflin.adb: Likewise.
+ 	* libgnat/s-soflin.ads: Likewise.
+ 	* libgnat/s-soliin.adb: Likewise.
+ 	* libgnat/s-soliin.ads: Likewise.
+ 	* libgnat/s-sopco3.adb: Likewise.
+ 	* libgnat/s-sopco3.ads: Likewise.
+ 	* libgnat/s-sopco4.adb: Likewise.
+ 	* libgnat/s-sopco4.ads: Likewise.
+ 	* libgnat/s-sopco5.adb: Likewise.
+ 	* libgnat/s-sopco5.ads: Likewise.
+ 	* libgnat/s-spsufi.adb: Likewise.
+ 	* libgnat/s-spsufi.ads: Likewise.
+ 	* libgnat/s-stache.adb: Likewise.
+ 	* libgnat/s-stache.ads: Likewise.
+ 	* libgnat/s-stalib.adb: Likewise.
+ 	* libgnat/s-stalib.ads: Likewise.
+ 	* libgnat/s-stausa.adb: Likewise.
+ 	* libgnat/s-stausa.ads: Likewise.
+ 	* libgnat/s-stchop.adb: Likewise.
+ 	* libgnat/s-stchop.ads: Likewise.
+ 	* libgnat/s-stchop__limit.ads: Likewise.
+ 	* libgnat/s-stchop__rtems.adb: Likewise.
+ 	* libgnat/s-stchop__vxworks.adb: Likewise.
+ 	* libgnat/s-stoele.adb: Likewise.
+ 	* libgnat/s-stoele.ads: Likewise.
+ 	* libgnat/s-stopoo.adb: Likewise.
+ 	* libgnat/s-stopoo.ads: Likewise.
+ 	* libgnat/s-stposu.adb: Likewise.
+ 	* libgnat/s-stposu.ads: Likewise.
+ 	* libgnat/s-stratt.adb: Likewise.
+ 	* libgnat/s-stratt.ads: Likewise.
+ 	* libgnat/s-stratt__xdr.adb: Likewise.
+ 	* libgnat/s-strcom.adb: Likewise.
+ 	* libgnat/s-strcom.ads: Likewise.
+ 	* libgnat/s-strhas.adb: Likewise.
+ 	* libgnat/s-strhas.ads: Likewise.
+ 	* libgnat/s-string.adb: Likewise.
+ 	* libgnat/s-string.ads: Likewise.
+ 	* libgnat/s-strops.adb: Likewise.
+ 	* libgnat/s-strops.ads: Likewise.
+ 	* libgnat/s-ststop.adb: Likewise.
+ 	* libgnat/s-ststop.ads: Likewise.
+ 	* libgnat/s-tasloc.adb: Likewise.
+ 	* libgnat/s-tasloc.ads: Likewise.
+ 	* libgnat/s-thread.ads: Likewise.
+ 	* libgnat/s-thread__ae653.adb: Likewise.
+ 	* libgnat/s-traceb.adb: Likewise.
+ 	* libgnat/s-traceb.ads: Likewise.
+ 	* libgnat/s-traceb__hpux.adb: Likewise.
+ 	* libgnat/s-traceb__mastop.adb: Likewise.
+ 	* libgnat/s-traent.adb: Likewise.
+ 	* libgnat/s-traent.ads: Likewise.
+ 	* libgnat/s-trasym.adb: Likewise.
+ 	* libgnat/s-trasym.ads: Likewise.
+ 	* libgnat/s-trasym__dwarf.adb: Likewise.
+ 	* libgnat/s-tsmona.adb: Likewise.
+ 	* libgnat/s-tsmona__linux.adb: Likewise.
+ 	* libgnat/s-tsmona__mingw.adb: Likewise.
+ 	* libgnat/s-unstyp.ads: Likewise.
+ 	* libgnat/s-utf_32.adb: Likewise.
+ 	* libgnat/s-utf_32.ads: Likewise.
+ 	* libgnat/s-valboo.adb: Likewise.
+ 	* libgnat/s-valboo.ads: Likewise.
+ 	* libgnat/s-valcha.adb: Likewise.
+ 	* libgnat/s-valcha.ads: Likewise.
+ 	* libgnat/s-valdec.adb: Likewise.
+ 	* libgnat/s-valdec.ads: Likewise.
+ 	* libgnat/s-valenu.adb: Likewise.
+ 	* libgnat/s-valenu.ads: Likewise.
+ 	* libgnat/s-valint.adb: Likewise.
+ 	* libgnat/s-valint.ads: Likewise.
+ 	* libgnat/s-vallld.adb: Likewise.
+ 	* libgnat/s-vallld.ads: Likewise.
+ 	* libgnat/s-vallli.adb: Likewise.
+ 	* libgnat/s-vallli.ads: Likewise.
+ 	* libgnat/s-valllu.adb: Likewise.
+ 	* libgnat/s-valllu.ads: Likewise.
+ 	* libgnat/s-valrea.adb: Likewise.
+ 	* libgnat/s-valrea.ads: Likewise.
+ 	* libgnat/s-valuns.adb: Likewise.
+ 	* libgnat/s-valuns.ads: Likewise.
+ 	* libgnat/s-valuti.adb: Likewise.
+ 	* libgnat/s-valuti.ads: Likewise.
+ 	* libgnat/s-valwch.adb: Likewise.
+ 	* libgnat/s-valwch.ads: Likewise.
+ 	* libgnat/s-veboop.adb: Likewise.
+ 	* libgnat/s-veboop.ads: Likewise.
+ 	* libgnat/s-vector.ads: Likewise.
+ 	* libgnat/s-vercon.adb: Likewise.
+ 	* libgnat/s-vercon.ads: Likewise.
+ 	* libgnat/s-wchcnv.adb: Likewise.
+ 	* libgnat/s-wchcnv.ads: Likewise.
+ 	* libgnat/s-wchcon.adb: Likewise.
+ 	* libgnat/s-wchcon.ads: Likewise.
+ 	* libgnat/s-wchjis.adb: Likewise.
+ 	* libgnat/s-wchjis.ads: Likewise.
+ 	* libgnat/s-wchstw.adb: Likewise.
+ 	* libgnat/s-wchstw.ads: Likewise.
+ 	* libgnat/s-wchwts.adb: Likewise.
+ 	* libgnat/s-wchwts.ads: Likewise.
+ 	* libgnat/s-widboo.adb: Likewise.
+ 	* libgnat/s-widboo.ads: Likewise.
+ 	* libgnat/s-widcha.adb: Likewise.
+ 	* libgnat/s-widcha.ads: Likewise.
+ 	* libgnat/s-widenu.adb: Likewise.
+ 	* libgnat/s-widenu.ads: Likewise.
+ 	* libgnat/s-widlli.adb: Likewise.
+ 	* libgnat/s-widlli.ads: Likewise.
+ 	* libgnat/s-widllu.adb: Likewise.
+ 	* libgnat/s-widllu.ads: Likewise.
+ 	* libgnat/s-widwch.adb: Likewise.
+ 	* libgnat/s-widwch.ads: Likewise.
+ 	* libgnat/s-win32.ads: Likewise.
+ 	* libgnat/s-winext.ads: Likewise.
+ 	* libgnat/s-wwdcha.adb: Likewise.
+ 	* libgnat/s-wwdcha.ads: Likewise.
+ 	* libgnat/s-wwdenu.adb: Likewise.
+ 	* libgnat/s-wwdenu.ads: Likewise.
+ 	* libgnat/s-wwdwch.adb: Likewise.
+ 	* libgnat/s-wwdwch.ads: Likewise.
+ 	* libgnat/system-aix.ads: Likewise.
+ 	* libgnat/system-darwin-arm.ads: Likewise.
+ 	* libgnat/system-darwin-ppc.ads: Likewise.
+ 	* libgnat/system-darwin-x86.ads: Likewise.
+ 	* libgnat/system-djgpp.ads: Likewise.
+ 	* libgnat/system-dragonfly-x86_64.ads: Likewise.
+ 	* libgnat/system-freebsd.ads: Likewise.
+ 	* libgnat/system-hpux-ia64.ads: Likewise.
+ 	* libgnat/system-hpux.ads: Likewise.
+ 	* libgnat/system-linux-alpha.ads: Likewise.
+ 	* libgnat/system-linux-arm.ads: Likewise.
+ 	* libgnat/system-linux-hppa.ads: Likewise.
+ 	* libgnat/system-linux-ia64.ads: Likewise.
+ 	* libgnat/system-linux-m68k.ads: Likewise.
+ 	* libgnat/system-linux-mips.ads: Likewise.
+ 	* libgnat/system-linux-ppc.ads: Likewise.
+ 	* libgnat/system-linux-riscv.ads: Likewise.
+ 	* libgnat/system-linux-s390.ads: Likewise.
+ 	* libgnat/system-linux-sh4.ads: Likewise.
+ 	* libgnat/system-linux-sparc.ads: Likewise.
+ 	* libgnat/system-linux-x86.ads: Likewise.
+ 	* libgnat/system-lynxos178-ppc.ads: Likewise.
+ 	* libgnat/system-lynxos178-x86.ads: Likewise.
+ 	* libgnat/system-mingw.ads: Likewise.
+ 	* libgnat/system-qnx-aarch64.ads: Likewise.
+ 	* libgnat/system-rtems.ads: Likewise.
+ 	* libgnat/system-solaris-sparc.ads: Likewise.
+ 	* libgnat/system-solaris-x86.ads: Likewise.
+ 	* libgnat/system-vxworks-arm-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-arm-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks-arm.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-vthread.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-ravenscar.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-vthread.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-vthread.ads: Likewise.
+ 	* libgnat/system-vxworks-x86.ads: Likewise.
+ 	* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-aarch64.ads: Likewise.
+ 	* libgnat/system-vxworks7-arm-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-arm.ads: Likewise.
+ 	* libgnat/system-vxworks7-e500-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-e500-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc64-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86_64-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise.
+ 	* libgnat/system.ads: Likewise.
+ 	* link.c: Likewise.
+ 	* live.adb: Likewise.
+ 	* live.ads: Likewise.
+ 	* locales.c: Likewise.
+ 	* make.adb: Likewise.
+ 	* make.ads: Likewise.
+ 	* make_util.adb: Likewise.
+ 	* make_util.ads: Likewise.
+ 	* makeusg.adb: Likewise.
+ 	* makeusg.ads: Likewise.
+ 	* mdll-fil.adb: Likewise.
+ 	* mdll-fil.ads: Likewise.
+ 	* mdll-utl.adb: Likewise.
+ 	* mdll-utl.ads: Likewise.
+ 	* mdll.adb: Likewise.
+ 	* mdll.ads: Likewise.
+ 	* mingw32.h: Likewise.
+ 	* mkdir.c: Likewise.
+ 	* namet-sp.adb: Likewise.
+ 	* namet-sp.ads: Likewise.
+ 	* namet.adb: Likewise.
+ 	* namet.ads: Likewise.
+ 	* namet.h: Likewise.
+ 	* nlists.adb: Likewise.
+ 	* nlists.ads: Likewise.
+ 	* nlists.h: Likewise.
+ 	* opt.adb: Likewise.
+ 	* opt.ads: Likewise.
+ 	* osint-b.adb: Likewise.
+ 	* osint-b.ads: Likewise.
+ 	* osint-c.adb: Likewise.
+ 	* osint-c.ads: Likewise.
+ 	* osint-l.adb: Likewise.
+ 	* osint-l.ads: Likewise.
+ 	* osint-m.adb: Likewise.
+ 	* osint-m.ads: Likewise.
+ 	* osint.adb: Likewise.
+ 	* osint.ads: Likewise.
+ 	* output.adb: Likewise.
+ 	* output.ads: Likewise.
+ 	* par-ch10.adb: Likewise.
+ 	* par-ch11.adb: Likewise.
+ 	* par-ch12.adb: Likewise.
+ 	* par-ch13.adb: Likewise.
+ 	* par-ch2.adb: Likewise.
+ 	* par-ch3.adb: Likewise.
+ 	* par-ch4.adb: Likewise.
+ 	* par-ch5.adb: Likewise.
+ 	* par-ch6.adb: Likewise.
+ 	* par-ch7.adb: Likewise.
+ 	* par-ch8.adb: Likewise.
+ 	* par-ch9.adb: Likewise.
+ 	* par-endh.adb: Likewise.
+ 	* par-labl.adb: Likewise.
+ 	* par-load.adb: Likewise.
+ 	* par-prag.adb: Likewise.
+ 	* par-sync.adb: Likewise.
+ 	* par-tchk.adb: Likewise.
+ 	* par-util.adb: Likewise.
+ 	* par.adb: Likewise.
+ 	* par.ads: Likewise.
+ 	* par_sco.adb: Likewise.
+ 	* par_sco.ads: Likewise.
+ 	* pprint.adb: Likewise.
+ 	* pprint.ads: Likewise.
+ 	* prep.adb: Likewise.
+ 	* prep.ads: Likewise.
+ 	* prepcomp.adb: Likewise.
+ 	* prepcomp.ads: Likewise.
+ 	* put_scos.adb: Likewise.
+ 	* put_scos.ads: Likewise.
+ 	* raise-gcc.c: Likewise.
+ 	* raise.c: Likewise.
+ 	* raise.h: Likewise.
+ 	* repinfo-input.adb: Likewise.
+ 	* repinfo-input.ads: Likewise.
+ 	* repinfo.adb: Likewise.
+ 	* repinfo.ads: Likewise.
+ 	* repinfo.h: Likewise.
+ 	* restrict.adb: Likewise.
+ 	* restrict.ads: Likewise.
+ 	* rident.ads: Likewise.
+ 	* rtfinal.c: Likewise.
+ 	* rtinit.c: Likewise.
+ 	* rtsfind.adb: Likewise.
+ 	* rtsfind.ads: Likewise.
+ 	* runtime.h: Likewise.
+ 	* s-oscons-tmplt.c: Likewise.
+ 	* sa_messages.adb: Likewise.
+ 	* sa_messages.ads: Likewise.
+ 	* scans.adb: Likewise.
+ 	* scans.ads: Likewise.
+ 	* scil_ll.adb: Likewise.
+ 	* scil_ll.ads: Likewise.
+ 	* scn.adb: Likewise.
+ 	* scn.ads: Likewise.
+ 	* scng.adb: Likewise.
+ 	* scng.ads: Likewise.
+ 	* scos.adb: Likewise.
+ 	* scos.ads: Likewise.
+ 	* scos.h: Likewise.
+ 	* sdefault.ads: Likewise.
+ 	* seh_init.c: Likewise.
+ 	* sem.adb: Likewise.
+ 	* sem.ads: Likewise.
+ 	* sem_aggr.adb: Likewise.
+ 	* sem_aggr.ads: Likewise.
+ 	* sem_attr.adb: Likewise.
+ 	* sem_attr.ads: Likewise.
+ 	* sem_aux.adb: Likewise.
+ 	* sem_aux.ads: Likewise.
+ 	* sem_case.adb: Likewise.
+ 	* sem_case.ads: Likewise.
+ 	* sem_cat.adb: Likewise.
+ 	* sem_cat.ads: Likewise.
+ 	* sem_ch10.adb: Likewise.
+ 	* sem_ch10.ads: Likewise.
+ 	* sem_ch11.adb: Likewise.
+ 	* sem_ch11.ads: Likewise.
+ 	* sem_ch12.adb: Likewise.
+ 	* sem_ch12.ads: Likewise.
+ 	* sem_ch13.adb: Likewise.
+ 	* sem_ch13.ads: Likewise.
+ 	* sem_ch2.adb: Likewise.
+ 	* sem_ch2.ads: Likewise.
+ 	* sem_ch3.adb: Likewise.
+ 	* sem_ch3.ads: Likewise.
+ 	* sem_ch4.adb: Likewise.
+ 	* sem_ch4.ads: Likewise.
+ 	* sem_ch5.adb: Likewise.
+ 	* sem_ch5.ads: Likewise.
+ 	* sem_ch6.adb: Likewise.
+ 	* sem_ch6.ads: Likewise.
+ 	* sem_ch7.adb: Likewise.
+ 	* sem_ch7.ads: Likewise.
+ 	* sem_ch8.adb: Likewise.
+ 	* sem_ch8.ads: Likewise.
+ 	* sem_ch9.adb: Likewise.
+ 	* sem_ch9.ads: Likewise.
+ 	* sem_dim.adb: Likewise.
+ 	* sem_dim.ads: Likewise.
+ 	* sem_disp.adb: Likewise.
+ 	* sem_disp.ads: Likewise.
+ 	* sem_dist.adb: Likewise.
+ 	* sem_dist.ads: Likewise.
+ 	* sem_elab.adb: Likewise.
+ 	* sem_elab.ads: Likewise.
+ 	* sem_elim.adb: Likewise.
+ 	* sem_elim.ads: Likewise.
+ 	* sem_eval.adb: Likewise.
+ 	* sem_eval.ads: Likewise.
+ 	* sem_intr.adb: Likewise.
+ 	* sem_intr.ads: Likewise.
+ 	* sem_mech.adb: Likewise.
+ 	* sem_mech.ads: Likewise.
+ 	* sem_prag.adb: Likewise.
+ 	* sem_prag.ads: Likewise.
+ 	* sem_res.adb: Likewise.
+ 	* sem_res.ads: Likewise.
+ 	* sem_scil.adb: Likewise.
+ 	* sem_scil.ads: Likewise.
+ 	* sem_smem.adb: Likewise.
+ 	* sem_smem.ads: Likewise.
+ 	* sem_type.adb: Likewise.
+ 	* sem_type.ads: Likewise.
+ 	* sem_util.adb: Likewise.
+ 	* sem_util.ads: Likewise.
+ 	* sem_warn.adb: Likewise.
+ 	* sem_warn.ads: Likewise.
+ 	* set_targ.adb: Likewise.
+ 	* set_targ.ads: Likewise.
+ 	* sfn_scan.adb: Likewise.
+ 	* sfn_scan.ads: Likewise.
+ 	* sigtramp-armdroid.c: Likewise.
+ 	* sigtramp-ios.c: Likewise.
+ 	* sigtramp-qnx.c: Likewise.
+ 	* sigtramp-vxworks.c: Likewise.
+ 	* sigtramp.h: Likewise.
+ 	* sinfo-cn.adb: Likewise.
+ 	* sinfo-cn.ads: Likewise.
+ 	* sinfo.adb: Likewise.
+ 	* sinfo.ads: Likewise.
+ 	* sinput-c.adb: Likewise.
+ 	* sinput-c.ads: Likewise.
+ 	* sinput-d.adb: Likewise.
+ 	* sinput-d.ads: Likewise.
+ 	* sinput-l.adb: Likewise.
+ 	* sinput-l.ads: Likewise.
+ 	* sinput.adb: Likewise.
+ 	* sinput.ads: Likewise.
+ 	* socket.c: Likewise.
+ 	* spark_xrefs.adb: Likewise.
+ 	* spark_xrefs.ads: Likewise.
+ 	* sprint.adb: Likewise.
+ 	* sprint.ads: Likewise.
+ 	* stand.adb: Likewise.
+ 	* stand.ads: Likewise.
+ 	* stringt.adb: Likewise.
+ 	* stringt.ads: Likewise.
+ 	* stringt.h: Likewise.
+ 	* style.adb: Likewise.
+ 	* style.ads: Likewise.
+ 	* styleg.adb: Likewise.
+ 	* styleg.ads: Likewise.
+ 	* stylesw.adb: Likewise.
+ 	* stylesw.ads: Likewise.
+ 	* switch-b.adb: Likewise.
+ 	* switch-b.ads: Likewise.
+ 	* switch-c.adb: Likewise.
+ 	* switch-c.ads: Likewise.
+ 	* switch-m.adb: Likewise.
+ 	* switch-m.ads: Likewise.
+ 	* switch.adb: Likewise.
+ 	* switch.ads: Likewise.
+ 	* symbols.adb: Likewise.
+ 	* symbols.ads: Likewise.
+ 	* sysdep.c: Likewise.
+ 	* table.adb: Likewise.
+ 	* table.ads: Likewise.
+ 	* targext.c: Likewise.
+ 	* targparm.adb: Likewise.
+ 	* targparm.ads: Likewise.
+ 	* tbuild.adb: Likewise.
+ 	* tbuild.ads: Likewise.
+ 	* tempdir.adb: Likewise.
+ 	* tempdir.ads: Likewise.
+ 	* terminals.c: Likewise.
+ 	* tracebak.c: Likewise.
+ 	* tree_gen.adb: Likewise.
+ 	* tree_gen.ads: Likewise.
+ 	* tree_in.adb: Likewise.
+ 	* tree_in.ads: Likewise.
+ 	* tree_io.adb: Likewise.
+ 	* tree_io.ads: Likewise.
+ 	* treepr.adb: Likewise.
+ 	* treepr.ads: Likewise.
+ 	* ttypes.ads: Likewise.
+ 	* types.adb: Likewise.
+ 	* types.ads: Likewise.
+ 	* types.h: Likewise.
+ 	* uintp.adb: Likewise.
+ 	* uintp.ads: Likewise.
+ 	* uintp.h: Likewise.
+ 	* uname.adb: Likewise.
+ 	* uname.ads: Likewise.
+ 	* urealp.adb: Likewise.
+ 	* urealp.ads: Likewise.
+ 	* urealp.h: Likewise.
+ 	* usage.adb: Likewise.
+ 	* usage.ads: Likewise.
+ 	* validsw.adb: Likewise.
+ 	* validsw.ads: Likewise.
+ 	* warnsw.adb: Likewise.
+ 	* warnsw.ads: Likewise.
+ 	* widechar.adb: Likewise.
+ 	* widechar.ads: Likewise.
+ 	* xeinfo.adb: Likewise.
+ 	* xnmake.adb: Likewise.
+ 	* xoscons.adb: Likewise.
+ 	* xr_tabls.adb: Likewise.
+ 	* xr_tabls.ads: Likewise.
+ 	* xref_lib.adb: Likewise.
+ 	* xref_lib.ads: Likewise.
+ 	* xsinfo.adb: Likewise.
+ 	* xsnamest.adb: Likewise.
+ 	* xtreeprs.adb: Likewise.
+ 	* xutil.adb: Likewise.
+ 	* xutil.ads: Likewise.
+ 
+ 2020-06-02  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Set attribute
+ 	Expansion_Delayed on aggregates that initialize an object that
+ 	has aspect alignment or address clause. Done to allow ther
+ 	initialization by means of multiple assignments.
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Resolve delayed
+ 	aggregates. This patch complements the patch applied to
+ 	sem_ch3.adb
+ 
+ 2020-06-02  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_util.adb (Ensure_Minimum_Decoration): New subprogram that
+ 	ensures the minimum decoration required by
+ 	Requires_Transient_Scope() to provide its functionality when the
+ 	entity is not frozen.
+ 
+ 2020-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Op_Divide): Remove code dealing with
+ 	the Treat_Fixed_As_Integer flag.
+ 	(Expand_N_Op_Multiply): Likewise.
+ 	* exp_fixd.adb (Build_Divide): Do the division in an integer
+ 	type long enough to hold both operands and convert the result
+ 	to the type of the LHS.  Do not set Treat_Fixed_As_Integer.
+ 	(Build_Multiply): Do not set Treat_Fixed_As_Integer.
+ 	(Build_Rem): Likewise.
+ 	* sem_ch4.adb (Analyze_Arithmetic_Op): Remove code dealing with
+ 	the Treat_Fixed_As_Integer flag.
+ 	(Check_Arithmetic_Pair): Likewise.
+ 	* sinfo.ads (Treat_Fixed_As_Integer): Delete.
+ 	(N_Has_Treat_Fixed_As_Integer): Likewise.
+ 	(Set_Treat_Fixed_As_Integer): Likewise.
+ 	* sinfo.adb (Treat_Fixed_As_Integer): Likewise.
+ 	(Set_Treat_Fixed_As_Integer): Likewise.
+ 	* sprint.ads (Syntax Extensions): Remove '#' special character.
+ 	* sprint.adb (Process_TFAI_RR_Flags): Delete.
+ 	(Sprint_Node_Actual) <N_Op_Divide>: Print '@' manually.
+ 	<N_Op_Multiply>: Likewise.
+ 	<N_Op_Mod>: Do not print '#'.
+ 	<N_Op_Rem>: Likewise.
+ 
+ 2020-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb (Others_Check): In the positional case, use the
+ 	general expression for the comparison only when needed.
+ 	* exp_attr.adb (Expand_Fpt_Attribute;): Use a simple conversion
+ 	to the target type instead of an unchecked conversion to the
+ 	base type to do the range check, as in the other cases.
+ 	(Expand_N_Attribute_Reference) <Attribute_Storage_Size>: Do the
+ 	Max operation in the type of the storage size variable, and use
+ 	Convert_To as in the other cases.
+ 	* tbuild.adb (Convert_To): Do not get rid of an intermediate
+ 	conversion to Universal_Integer here...
+ 	* sem_res.adb  (Simplify_Type_Conversion): ...but here instead.
+ 
+ 2020-06-02  Bob Duff  <duff@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_utility_programs.rst: Update documentation
+ 	for --RM-style-spacing.
+ 
+ 2020-06-02  Bob Duff  <duff@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_utility_programs.rst: Add documentation for
+ 	--[no-]compact switch.
+ 
+ 2020-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb (Build_Array_Aggr_Code): Set the type of the PAT
+ 	on the zero used to clear the array.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference)
+ 	<Attribute_Alignment>: In the CW case, directly convert from the
+ 	alignment's type to the target type if the parent is an
+ 	unchecked conversion.
+ 	* sem_res.adb (Set_String_Literal_Subtype): In the dynamic case,
+ 	use the general expression for the upper bound only when needed.
+ 	Set the base type of the index as the type of the low bound.
+ 	(Simplify_Type_Conversion): Do an intermediate conversion to the
+ 	root type of the target type if the operand is an integer
+ 	literal.
+ 	* tbuild.adb (Convert_To): Get rid of an intermediate conversion
+ 	to Universal_Integer if the inner expression has integer tyoe.
+ 	* libgnat/a-sequio.adb (Byte_Swap): Make use of an equivalent
+ 	static expression in the case statement.
+ 
+ 2020-06-02  Thomas Quinot  <quinot@adacore.com>
+ 
+ 	* par_sco.adb (Traverse_Degenerate_Subprogram): Set statement
+ 	code to 'X'.
+ 	* scos.ads: Update comment documenting SCO data.
+ 
+ 2020-06-02  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_unst.adb (Register_Subprogram): Test for Address_Taken (in
+ 	addition to the existing test for In_Synchonized_Unit) when
+ 	deciding whether to reset the Reachable flag on all subprograms
+ 	enclosing the subprogram being registered.
+ 
+ 2020-06-02  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch6.adb (Check_Return_Obj_Accessibility): Avoid use of
+ 	parent node pointers so we are not relying on expansion done in
+ 	GNATprove mode.
+ 
+ 2020-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference)
+ 	<Attribute_Alignment>: Adjust comment and compare against proper
+ 	type.
+ 
+ 2020-06-02  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_unst.adb (Visit_Node): When visiting array attribute
+ 	nodes, apply Get_Referenced_Object to the attribute prefix, to
+ 	handle prefixes denoting renamed objects by picking up the Etype
+ 	of the renamed object rather than the possibly unconstrained
+ 	nominal subtype of the renaming declaration's Entity.
+ 	* sem_util.ads (Get_Referenced_Object): Update comment to
+ 	clearly indicate that any kind of node can be passed to this
+ 	function.
+ 	* sem_util.adb (Get_Referenced_Object): Add test of Is_Object to
+ 	the condition, to allow for passing names that denote types and
+ 	subtypes.
+ 
+ 2020-06-02  Bob Duff  <duff@adacore.com>
+ 
+ 	* snames.ads-tmpl: Add comments explaining that enumeration
+ 	types have to be kept in synch with subtypes of Name_Id.
+ 
+ 2020-06-02  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Check_No_Hidden_State): Remove dead code.
+ 
+ 2020-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_pakd.adb (Expand_Packed_Bit_Reference): Change type of
+ 	reference from Universal_Integer to Standard_Natural.
+ 
+ 2020-06-02  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Collect_States_And_Objects): Call itself on
+ 	declaration of nested packages; append abstract states
+ 	one-by-one, so that in recursive call we do not overwrite the
+ 	ones that have been already collected.
+ 
+ 2020-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_atag.ads (Build_Inherit_Predefined_Prims): Change type
+ 	of Num_Predef_Prim parameter from Int to Nat.
+ 	* exp_atag.adb (Build_Range): New procedure.
+ 	(Build_Val): Likewise.
+ 	(Build_CW_Membership): Call Build_Val.
+ 	(Build_Get_Predefined_Prim_Op_Address): Likewise.
+ 	(Build_Inherit_CPP_Prims): Likewise.
+ 	(Build_Get_Prim_Op_Address): Likewise.
+ 	(Build_Set_Predefined_Prim_Op_Address): Likewise.
+ 	(Build_Inherit_Prims): Call Build_Range.
+ 	(Build_Inherit_Predefined_Prims): Likewise.  Change type of
+ 	Num_Predef_Prim parameter from Int to Nat.
+ 
+ 2020-06-02  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch3.adb: Two typo fixes.
+ 
+ 2020-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Replace_Discriminants): Preserve the Etype of the
+ 	Name of N_Variant_Part nodes when rewriting it.
+ 
+ 2020-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Signed_Integer_Type_Declaration): Change the type
+ 	of the bounds from Universal_Integer to Implicit_Base.
+ 
+ 2020-06-02  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* bcheck.adb, binde.adb, bindo-diagnostics.adb, checks.adb,
+ 	exp_aggr.adb, exp_ch3.adb, exp_ch4.adb, exp_ch7.adb,
+ 	exp_ch9.adb, gnatname.adb, sem_case.adb, sem_ch13.adb,
+ 	sem_ch5.adb, sem_prag.adb, sem_util.adb, uintp.adb, urealp.adb,
+ 	xoscons.adb, xr_tabls.adb, xref_lib.adb: Initialize objects more
+ 	explicitly and add corresponding assertions. Remove dead code.
+ 	Also add a few Annotate pragmas to help static analysis.
+ 	* libgnat/a-caldel.adb, libgnat/a-calend.adb,
+ 	libgnat/a-ngcoty.adb, libgnat/a-ngelfu.adb,
+ 	libgnat/a-ngrear.adb, libgnat/a-strfix.adb,
+ 	libgnat/g-calend.adb, libgnat/g-catiio.adb,
+ 	libgnat/g-comlin.adb, libgnat/g-debpoo.adb,
+ 	libgnat/g-dirope.adb, libgnat/g-hesorg.adb,
+ 	libgnat/g-pehage.adb, libgnat/g-socket.adb, libgnat/i-cobol.adb,
+ 	libgnat/s-dwalin.adb, libgnat/s-dwalin.ads,
+ 	libgnat/s-fatgen.adb, libgnat/s-gearop.adb,
+ 	libgnat/s-genbig.adb, libgnat/s-imgrea.adb,
+ 	libgnat/s-os_lib.adb, libgnat/s-rannum.adb,
+ 	libgnat/s-regpat.adb, libgnat/s-trasym__dwarf.adb,
+ 	libgnat/s-valrea.adb: Ditto.
+ 
+ 2020-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Replace_Components): Rename into...
+ 	(Replace_Discriminants): ...this.  Replace girder discriminants
+ 	with non-girder ones.  Do not replace components.
+ 	* sem_ch13.adb (Check_Record_Representation_Clause): Deal with
+ 	non-girder discriminants correctly.
+ 
+ 2020-06-02  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* lib-xref-spark_specific.adb (Create_Heap): use a new variant
+ 	of Name_Enter to directly converts String to Make_Id.
+ 
+ 2020-06-02  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_attr.adb, par-ch4.adb, par-util.adb, scans.ads, scng.adb,
+ 	sem_attr.adb, sem_ch4.adb, sinfo.ads: Typo corrections and minor
+ 	reformatting.
+ 
+ 2020-06-02  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* snames.ads-tmpl (Name_Img, Attribute_Img): Make it an
+ 	attribute returning renamable functions.
+ 
+ 2020-06-02  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.adb, sem_prag.ads (Set_Overflow_Mode): New procedure
+ 	to set overflow mode.
+ 
+ 2020-06-02  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* contracts.adb, einfo.adb, exp_ch9.adb, sem_ch12.adb,
+ 	sem_ch4.adb, sem_ch7.adb, sem_ch8.adb, sem_elab.adb,
+ 	sem_type.adb, sem_util.adb: Reuse Is_Package_Or_Generic_Package
+ 	where possible (similarly, reuse Is_Concurrent_Type if it was
+ 	possible in the same expressions).
+ 
+ 2020-05-30  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* Makefile.rtl (ADA_INCLUDE_SRCS): Replace Makefile.adalib by
+ 	libada.gpr and associated project files.
+ 	(g-debpoo.o): Add missing rule to ensure subprograms are not reordered.
+ 	(setup-rts): Add generation of libgnat/libgnarl.lst.
+ 	(LIBGNAT_SRCS): Remove thread.c which is part of libgnarl.
+ 	* tracebak.c, tb-gcc.c: Merged the two files to simplify dependencies.
+ 	* libgnarl/libgnarl.gpr, libgnat/libada.gpr,
+ 	libgnat/libgnat.gpr, libgnat/libgnat_common.gpr: New files.
+ 	* doc/gnat_ugn/the_gnat_compilation_model.rst: Makefile.adalib
+ 	replaced by libada.gpr.
+ 	* libgnat/system-mingw.ads: Remove obsolete comment.
+ 	* gcc-interface/Makefile.in: Remove dependency on tb-gcc.c.
+ 
+ 2020-05-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gnatvsn.ads: Bump Library_Version to 11.
+ 
+ 2020-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/95333
+ 	* gcc-interface/decl.c (gnat_to_gnu_param): Never make a variant of
+ 	the type.
+ 
+ 2020-05-26  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* gcc-interface/lang-specs.h (ADA_DUMPS_OPTIONS): Define in
+ 	terms of DUMPS_OPTIONS.  Replace occurrences of %{d*} %:dumps
+ 	with it.
+ 
+ 2020-05-26  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* gcc-interface/lang-specs.h: Drop auxbase and auxbase-strip.
+ 	Use %:dumps instead of -dumpbase.  Add %w for implicit .s
+ 	primary output.
+ 	* switch.adb (Is_Internal_GCC_Switch): Recognize dumpdir and
+ 	dumpbase-ext.  Drop auxbase and auxbase-strip.
+ 
+ 2020-05-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_util.adb (Check_No_Hidden_State): Stop propagation at
+ 	first block/task/entry.
+ 
+ 2020-05-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst: Document
+ 	changes to pragmas Compile_Time_Error/Compile_Time_Warning.
+ 	* gnat_rm.texi: Regenerate.
+ 	* libgnat/g-bytswa.adb: Change uses of Compile_Time_Error to
+ 	Compile_Time_Warning, as the actual expression may not always be
+ 	known statically.
+ 	* sem_prag.adb (Analyze_Pragma): Handle differently pragma
+ 	Compile_Time_Error in both compilation and in GNATprove mode.
+ 	(Validate_Compile_Time_Warning_Or_Error): Issue an error or
+ 	warning when the expression is not known at compile time.
+ 	* usage.adb: Add missing documentation for warning switches _c
+ 	and _r.
+ 	* warnsw.ads: Update comment.
+ 
+ 2020-05-25  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch6.adb (Check_Return_Obj_Accessibility): Use original
+ 	node to avoid looking at expansion done in GNATprove mode.
+ 
+ 2020-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): Add new local variable
+ 	and use it throughout the function.
+ 	<E_Variable>: Rename local variable and adjust accordingly.  In the
+ 	case of a renaming, materialize the entity if the renamed object is
+ 	an N_Expression_With_Actions node.
+ 	<E_Procedure>: Use Alias accessor function consistently.
+ 
+ 2020-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/misc.c (get_array_bit_stride): Get to the debug type,
+ 	if any, before calling gnat_get_array_descr_info.
+ 
+ 2020-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Tidy up.
+ 	(build_variant_list): Add GNAT_VARIANT_PART parameter and annotate its
+ 	variants if it is present.  Adjust the recursive call by passing the
+ 	variant subpart of variants, if any.
+ 	(copy_and_substitute_in_layout): Rename GNU_SUBST_LIST to SUBST_LIST
+ 	and adjust throughout.  For a type, pass the variant part in the
+ 	call to build_variant_list.
+ 
+ 2020-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_component_type): Cap the alignment
+ 	of the component type according to the component size.
+ 
+ 2020-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Add a
+ 	description of the various types associated with the unconstrained
+ 	type.  Declare the fat pointer earlier.  Set the current function
+ 	as context on the template type, and the fat pointer type on the
+ 	array type.  Always mark the fat pointer type as artificial and set
+ 	it as the context for the pointer type to the array.  Also reuse
+ 	GNU_ENTITY_NAME.  Finish up the unconstrained type at the very end.
+ 	* gcc-interface/misc.c (gnat_get_array_descr_info): Do not handle
+ 	fat pointer types and tidy up accordingly.
+ 	* gcc-interface/utils.c (build_unc_object_type): Do not set the
+ 	context on the template type.
+ 	(gnat_pushdecl): Mark the canonical fat pointer types as artificial.
+ 
+ 2020-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/gigi.h (operand_type): New static inline function.
+ 	* gcc-interface/trans.c (gnat_to_gnu): Do not suppress conversion
+ 	to the resulty type at the end for array types.
+ 	* gcc-interface/utils2.c (build_binary_op) <MODIFY_EXPR>: Do not
+ 	remove conversions between array types on the LHS.
+ 
+ 2020-05-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_aggr.ads (Is_Single_Aggregate): New function.
+ 	* sem_aggr.adb (Is_Others_Aggregate): Use local variable.
+ 	(Is_Single_Aggregate): New function to recognize an aggregate with
+ 	a single association containing a single choice.
+ 	* fe.h (Is_Others_Aggregate): Delete.
+ 	(Is_Single_Aggregate): New declaration.
+ 	* gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Call
+ 	Is_Single_Aggregate instead of Is_Others_Aggregate.
+ 
+ 2020-05-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/95035
+ 	* gcc-interface/utils.c (packable_type_hasher::equal): Also compare
+ 	the scalar storage order.
+ 	(hash_packable_type): Also hash the scalar storage order.
+ 	(hash_pad_type): Likewise.
+ 
+ 2020-05-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/*.[ch]: Update copyright year.
+ 
+ 2020-05-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Access>: Assert that
+ 	the prefix is not a type.
+ 
+ 2020-05-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/ada-tree.h (TYPE_PACKED_ARRAY_TYPE_P): Rename into...
+ 	(TYPE_BIT_PACKED_ARRAY_TYPE_P): ...this.
+ 	(TYPE_IS_PACKED_ARRAY_TYPE_P): Rename into...
+ 	(BIT_PACKED_ARRAY_TYPE_P): ...this.
+ 	(TYPE_IMPL_PACKED_ARRAY_P): Adjust to above renaming.
+ 	* gcc-interface/gigi.h (maybe_pad_type): Remove IS_USER_TYPE parameter.
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Adjust call
+ 	to maybe_pad_type.
+ 	<E_Ordinary_Fixed_Point_Type>: Remove const qualifiers for tree.
+ 	<E_Signed_Integer_Subtype>: Remove redundant test and redundant call
+ 	to associate_original_type_to_packed_array.  Turn test into assertion.
+ 	Call associate_original_type_to_packed_array and modify gnu_entity_name
+ 	accordingly.  Explicitly set the parallel type for GNAT encodings.
+ 	Call create_type_decl in the misaligned case before maybe_pad_type.
+ 	<E_Array_Type>: Do not use the name of the implementation type for a
+ 	packed array when not using GNAT encodings.
+ 	<E_Array_Subtype>: Move around setting flags. Use the result of the
+ 	call to associate_original_type_to_packed_array for gnu_entity_name.
+ 	<E_Record_Subtype>: Create XVS type and XVZ variable only if debug
+ 	info is requested for the type.
+ 	Call create_type_decl if a padded type was created for a type entity.
+ 	(gnat_to_gnu_component_type): Use local variable and adjust calls to
+ 	maybe_pad_type.
+ 	(gnat_to_gnu_subprog_type): Adjust call to maybe_pad_type.
+ 	(gnat_to_gnu_field): Likewise.
+ 	(validate_size): Adjust to renaming of macro.
+ 	(set_rm_size): Likewise.
+ 	(associate_original_type_to_packed_array): Adjust return type and
+ 	return the name of the original type if GNAT encodings are not used.
+ 	* gcc-interface/misc.c (gnat_get_debug_typ): Remove obsolete stuff.
+ 	(gnat_get_fixed_point_type_info): Remove const qualifiers for tree.
+ 	(gnat_get_array_descr_info): Likewise and set variables lazily.
+ 	Remove call to maybe_debug_type.  Simplify a few computations.
+ 	(enumerate_modes): Remove const qualifier for tree.
+ 	* gcc-interface/utils.c (make_type_from_size): Adjust to renaming.
+ 	(maybe_pad_type): Remove IS_USER_TYPE parameter and adjust.  Remove
+ 	specific code for implementation types for packed arrays.
+ 	(compute_deferred_decl_context): Remove const qualifier for tree.
+ 	(convert): Adjust call to maybe_pad_type.
+ 	(unchecked_convert): Likewise.
+ 	* gcc-interface/utils2.c (is_simple_additive_expressio): Likewise.
+ 
+ 2020-05-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils2.c (build_binary_op) <ARRAY_RANGE_REF>: Use
+ 	build_nonshared_array_type to build the common type and declare it.
+ 
+ 2020-05-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/misc.c (gnat_init_gcc_eh): Do not override the user
+ 	for -fnon-call-exceptions in default mode.
+ 
+ 2020-05-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (lvalue_required_p) <N_Selected_Component>:
+ 	Merge with N_Slice.
+ 	<N_Allocator>: Move to...
+ 	(lvalue_for_aggregate_p): ...here.  New function.
+ 	(Identifier_to_gnu): For an identifier with aggregate type, also
+ 	call lvalue_for_aggregate_p if lvalue_required_p returned false
+ 	before substituting the identifier with the constant.
+ 
+ 2020-05-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (gnat_to_gnu): Do not wrap boolean values if
+ 	they appear in any kind of attribute references.
+ 
+ 2020-05-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Deal
+ 	with qualified "others" aggregates in the memset case.
+ 
+ 2020-05-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_param): Also back-annotate the
+ 	mechanism in the case of an Out parameter only passed by copy-out.
+ 
+ 2020-05-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/gigi.h (change_qualified_type): Move around.
+ 	(maybe_vector_array): Likewise.
+ 	(maybe_padded_object): New static line function.
+ 	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Component_Size>:
+ 	Remove useless code.
+ 	<Attr_Null_Parameter>: Remove obsolete code.
+ 	(Call_to_gn): Likewise.  Use maybe_padded_object to remove padding.
+ 	(gnat_to_gnu): Likewise.
+ 	<N_String_Literal>: Do not add a useless null character at the end.
+ 	<N_Indexed_Component>: Likewise and remove obsolete code.
+ 	(add_decl_expr): Likewise.
+ 	(maybe_implicit_deref): Likewise.
+ 	* gcc-interface/utils.c (maybe_unconstrained_array): Likewise.
+ 	* gcc-interface/utils2.c (gnat_invariant_expr): Likewise.
+ 
+ 2020-05-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils2.c: Include builtins.h.
+ 	(known_alignment) <ADDR_EXPR>: Use DECL_ALIGN for DECL_P operands
+ 	and get_object_alignment for the rest.
+ 
+ 2020-05-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Force at
+ 	least the unit size for an aliased object of a constrained nominal
+ 	subtype whose size is variable.
+ 
+ 2020-05-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Deal
+ 	with artificial maximally-sized types designed by access types.
+ 	* gcc-interface/utils.c (packable_type_hash): New structure.
+ 	(packable_type_hasher): Likewise.
+ 	(packable_type_hash_table): New hash table.
+ 	(init_gnat_utils): Initialize it.
+ 	(destroy_gnat_utils): Destroy it.
+ 	(packable_type_hasher::equal): New method.
+ 	(hash_packable_type): New static function.
+ 	(canonicalize_packable_type): Likewise.
+ 	(make_packable_type): Make sure not to use too small a type for the
+ 	size of the new fields.  Canonicalize the type if it is named.
+ 
+ 2020-05-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Raise_Error_to_gnu): Always compute a lower
+ 	bound and an upper bound for use by the -gnateE switch for range and
+ 	comparison operators.
+ 
+ 2020-05-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_param): Do not make a variant of
+ 	the type in LTO mode.
+ 
+ 2020-05-04  Mikael Pettersson  <mikpelinux@gmail.com>
+ 
+ 	PR bootstrap/94918
+ 	* mingw32.h: Prevent windows.h from including emmintrin.h on Cygwin64.
+ 	* s-oscons-tmplt.c (Serial_Port_Descriptor): Use System.Win32.HANDLE
+ 	also on Cygwin.
+ 
+ 2020-03-11  Richard Wai  <richard@annexi-strayline.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): Also test Is_Public on
+ 	the Alias of the entitiy, if it is present, in the main assertion.
+ 
+ 2020-02-06  Alexandre Oliva <oliva@adacore.com>
+ 
+ 	* raise-gcc.c (personality_body) [__ARM_EABI_UNWINDER__]:
+ 	Initialize barrier_cache.sp when ending phase1.
+ 
+ 2020-01-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnatvsn.ads: Bump copyright year.
+ 
+ 2020-01-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Update copyright years.
+ 
+   	* gnat_ugn.texi: Bump @copying's copyright year.
+   	* gnat_rm.texi: Likewise.
+ 
+ Copyright (C) 2020 Free Software Foundation, Inc.
+ 
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved.
diff -Nrcpad gcc-10.3.0/gcc/ada/Makefile.rtl gcc-11.1.0/gcc/ada/Makefile.rtl
*** gcc-10.3.0/gcc/ada/Makefile.rtl	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/Makefile.rtl	Tue Apr 27 10:00:12 2021
***************
*** 1,5 ****
  # Makefile.rtl for GNU Ada Compiler (GNAT).
! #   Copyright (C) 2003-2017, Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
--- 1,5 ----
  # Makefile.rtl for GNU Ada Compiler (GNAT).
! #   Copyright (C) 2003-2020, Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
*************** GNATRTL_TASKING_OBJS= \
*** 39,44 ****
--- 39,45 ----
    a-sytaco$(objext) \
    a-tasatt$(objext) \
    a-taside$(objext) \
+   a-tasini$(objext) \
    a-taster$(objext) \
    g-boubuf$(objext) \
    g-boumai$(objext) \
*************** GNATRTL_TASKING_OBJS= \
*** 52,57 ****
--- 53,59 ----
    s-mudido$(objext) \
    s-osinte$(objext) \
    s-proinf$(objext) \
+   s-putaim$(objext) \
    s-solita$(objext) \
    s-stusta$(objext) \
    s-taenca$(objext) \
*************** GNATRTL_TASKING_OBJS= \
*** 79,85 ****
    thread$(objext) \
    $(EXTRA_GNATRTL_TASKING_OBJS)
  
! # Objects the require IEEE Float
  GNATRTL_ALTIVEC_OBJS= \
    g-allein$(objext) \
    g-alleve$(objext) \
--- 81,87 ----
    thread$(objext) \
    $(EXTRA_GNATRTL_TASKING_OBJS)
  
! # Objects that require IEEE Float
  GNATRTL_ALTIVEC_OBJS= \
    g-allein$(objext) \
    g-alleve$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 204,209 ****
--- 206,214 ----
    a-llitio$(objext) \
    a-lliwti$(objext) \
    a-llizti$(objext) \
+   a-llltio$(objext) \
+   a-lllwti$(objext) \
+   a-lllzti$(objext) \
    a-locale$(objext) \
    a-nbnbin$(objext) \
    a-nbnbre$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 232,237 ****
--- 237,249 ----
    a-nudira$(objext) \
    a-nuelfu$(objext) \
    a-nuflra$(objext) \
+   a-nagefl$(objext) \
+   a-nallfl$(objext) \
+   a-nalofl$(objext) \
+   a-nuaufl$(objext) \
+   a-nashfl$(objext) \
+   a-nuauco$(objext) \
+   a-naliop$(objext) \
    a-numaux$(objext) \
    a-numeri$(objext) \
    a-nurear$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 263,271 ****
--- 275,292 ----
    a-stboha$(objext) \
    a-stfiha$(objext) \
    a-stmaco$(objext) \
+   a-stobbu$(objext) \
+   a-stobfi$(objext) \
    a-storio$(objext) \
+   a-stoubu$(objext) \
+   a-stoufi$(objext) \
+   a-stoufo$(objext) \
+   a-stouut$(objext) \
    a-strbou$(objext) \
    a-stream$(objext) \
+   a-strsto$(objext) \
+   a-ststbo$(objext) \
+   a-ststun$(objext) \
    a-strfix$(objext) \
    a-strhas$(objext) \
    a-string$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 274,279 ****
--- 295,301 ----
    a-strsup$(objext) \
    a-strunb$(objext) \
    a-ststio$(objext) \
+   a-stteou$(objext) \
    a-stunau$(objext) \
    a-stunha$(objext) \
    a-stuten$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 322,334 ****
    a-tideio$(objext) \
    a-tienau$(objext) \
    a-tienio$(objext) \
    a-tifiio$(objext) \
    a-tiflau$(objext) \
    a-tiflio$(objext) \
    a-tigeau$(objext) \
    a-tiinau$(objext) \
    a-tiinio$(objext) \
-   a-timoau$(objext) \
    a-timoio$(objext) \
    a-tiocst$(objext) \
    a-tirsfi$(objext) \
--- 344,356 ----
    a-tideio$(objext) \
    a-tienau$(objext) \
    a-tienio$(objext) \
+   a-tifiau$(objext) \
    a-tifiio$(objext) \
    a-tiflau$(objext) \
    a-tiflio$(objext) \
    a-tigeau$(objext) \
    a-tiinau$(objext) \
    a-tiinio$(objext) \
    a-timoio$(objext) \
    a-tiocst$(objext) \
    a-tirsfi$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 350,362 ****
    a-wtedit$(objext) \
    a-wtenau$(objext) \
    a-wtenio$(objext) \
    a-wtfiio$(objext) \
    a-wtflau$(objext) \
    a-wtflio$(objext) \
    a-wtgeau$(objext) \
    a-wtinau$(objext) \
    a-wtinio$(objext) \
-   a-wtmoau$(objext) \
    a-wtmoio$(objext) \
    a-wttest$(objext) \
    a-wwboio$(objext) \
--- 372,384 ----
    a-wtedit$(objext) \
    a-wtenau$(objext) \
    a-wtenio$(objext) \
+   a-wtfiau$(objext) \
    a-wtfiio$(objext) \
    a-wtflau$(objext) \
    a-wtflio$(objext) \
    a-wtgeau$(objext) \
    a-wtinau$(objext) \
    a-wtinio$(objext) \
    a-wtmoio$(objext) \
    a-wttest$(objext) \
    a-wwboio$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 374,386 ****
    a-ztenau$(objext) \
    a-ztenio$(objext) \
    a-ztexio$(objext) \
    a-ztfiio$(objext) \
    a-ztflau$(objext) \
    a-ztflio$(objext) \
    a-ztgeau$(objext) \
    a-ztinau$(objext) \
    a-ztinio$(objext) \
-   a-ztmoau$(objext) \
    a-ztmoio$(objext) \
    a-zttest$(objext) \
    a-zzboio$(objext) \
--- 396,408 ----
    a-ztenau$(objext) \
    a-ztenio$(objext) \
    a-ztexio$(objext) \
+   a-ztfiau$(objext) \
    a-ztfiio$(objext) \
    a-ztflau$(objext) \
    a-ztflio$(objext) \
    a-ztgeau$(objext) \
    a-ztinau$(objext) \
    a-ztinio$(objext) \
    a-ztmoio$(objext) \
    a-zttest$(objext) \
    a-zzboio$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 421,427 ****
    g-excact$(objext) \
    g-except$(objext) \
    g-exctra$(objext) \
-   s-exctra$(objext) \
    g-expect$(objext) \
    g-exptty$(objext) \
    g-flocon$(objext) \
--- 443,448 ----
*************** GNATRTL_NONTASKING_OBJS= \
*** 465,470 ****
--- 486,492 ----
    g-speche$(objext) \
    g-spipat$(objext) \
    g-spitbo$(objext) \
+   g-spogwa$(objext) \
    g-sptabo$(objext) \
    g-sptain$(objext) \
    g-sptavs$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 476,482 ****
    g-timsta$(objext) \
    g-traceb$(objext) \
    g-trasym$(objext) \
-   s-trasym$(objext) \
    g-tty$(objext) \
    g-u3spch$(objext) \
    g-utf_32$(objext) \
--- 498,503 ----
*************** GNATRTL_NONTASKING_OBJS= \
*** 498,510 ****
    machcode$(objext) \
    s-addima$(objext) \
    s-addope$(objext) \
    s-aotase$(objext) \
    s-arit64$(objext) \
    s-assert$(objext) \
    s-atacco$(objext) \
    s-atocou$(objext) \
    s-atoope$(objext) \
-   s-atopar$(objext) \
    s-atopex$(objext) \
    s-atopri$(objext) \
    s-auxdec$(objext) \
--- 519,534 ----
    machcode$(objext) \
    s-addima$(objext) \
    s-addope$(objext) \
+   s-aoinar$(objext) \
+   s-aomoar$(objext) \
    s-aotase$(objext) \
+   s-aridou$(objext) \
+   s-arit32$(objext) \
    s-arit64$(objext) \
    s-assert$(objext) \
    s-atacco$(objext) \
    s-atocou$(objext) \
    s-atoope$(objext) \
    s-atopex$(objext) \
    s-atopri$(objext) \
    s-auxdec$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 539,545 ****
    s-dfmkio$(objext) \
    s-dfmopr$(objext) \
    s-dgmgop$(objext) \
-   s-dlmopr$(objext) \
    s-diflio$(objext) \
    s-diflmk$(objext) \
    s-digemk$(objext) \
--- 563,568 ----
*************** GNATRTL_NONTASKING_OBJS= \
*** 550,561 ****
--- 573,586 ----
    s-dimmks$(objext) \
    s-direio$(objext) \
    s-dlmkio$(objext) \
+   s-dlmopr$(objext) \
    s-dmotpr$(objext) \
    s-dsaser$(objext) \
    s-elaall$(objext) \
    s-excdeb$(objext) \
    s-except$(objext) \
    s-exctab$(objext) \
+   s-exctra$(objext) \
    s-exnint$(objext) \
    s-exnllf$(objext) \
    s-exnlli$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 563,600 ****
    s-explli$(objext) \
    s-expllu$(objext) \
    s-expmod$(objext) \
    s-expuns$(objext) \
    s-fatflt$(objext) \
    s-fatgen$(objext) \
    s-fatlfl$(objext) \
    s-fatllf$(objext) \
-   s-fatsfl$(objext) \
    s-ficobl$(objext) \
    s-filatt$(objext) \
    s-fileio$(objext) \
    s-finmas$(objext) \
    s-finroo$(objext) \
    s-flocon$(objext) \
!   s-fore$(objext)   \
    s-gearop$(objext) \
    s-genbig$(objext) \
    s-geveop$(objext) \
    s-gloloc$(objext) \
    s-htable$(objext) \
    s-imenne$(objext) \
    s-imgbiu$(objext) \
    s-imgboo$(objext) \
    s-imgcha$(objext) \
-   s-imgdec$(objext) \
    s-imgenu$(objext) \
    s-imgint$(objext) \
    s-imgllb$(objext) \
-   s-imglld$(objext) \
    s-imglli$(objext) \
    s-imgllu$(objext) \
    s-imgllw$(objext) \
    s-imgrea$(objext) \
    s-imguns$(objext) \
    s-imgwch$(objext) \
    s-imgwiu$(objext) \
    s-io$(objext)     \
--- 588,642 ----
    s-explli$(objext) \
    s-expllu$(objext) \
    s-expmod$(objext) \
+   s-exponn$(objext) \
+   s-expont$(objext) \
+   s-exponu$(objext) \
    s-expuns$(objext) \
    s-fatflt$(objext) \
    s-fatgen$(objext) \
    s-fatlfl$(objext) \
    s-fatllf$(objext) \
    s-ficobl$(objext) \
    s-filatt$(objext) \
    s-fileio$(objext) \
    s-finmas$(objext) \
    s-finroo$(objext) \
    s-flocon$(objext) \
!   s-fode32$(objext) \
!   s-fode64$(objext) \
!   s-fofi32$(objext) \
!   s-fofi64$(objext) \
!   s-fore_d$(objext) \
!   s-fore_f$(objext) \
!   s-forrea$(objext) \
    s-gearop$(objext) \
    s-genbig$(objext) \
    s-geveop$(objext) \
    s-gloloc$(objext) \
    s-htable$(objext) \
+   s-imageb$(objext) \
+   s-imaged$(objext) \
+   s-imagef$(objext) \
+   s-imagei$(objext) \
+   s-imageu$(objext) \
+   s-imagew$(objext) \
+   s-imde32$(objext) \
+   s-imde64$(objext) \
    s-imenne$(objext) \
+   s-imfi32$(objext) \
+   s-imfi64$(objext) \
    s-imgbiu$(objext) \
    s-imgboo$(objext) \
    s-imgcha$(objext) \
    s-imgenu$(objext) \
    s-imgint$(objext) \
    s-imgllb$(objext) \
    s-imglli$(objext) \
    s-imgllu$(objext) \
    s-imgllw$(objext) \
    s-imgrea$(objext) \
    s-imguns$(objext) \
+   s-imguti$(objext) \
    s-imgwch$(objext) \
    s-imgwiu$(objext) \
    s-io$(objext)     \
*************** GNATRTL_NONTASKING_OBJS= \
*** 670,677 ****
    s-pooglo$(objext) \
    s-pooloc$(objext) \
    s-poosiz$(objext) \
!   s-powtab$(objext) \
    s-purexc$(objext) \
    s-rannum$(objext) \
    s-ransee$(objext) \
    s-regexp$(objext) \
--- 712,722 ----
    s-pooglo$(objext) \
    s-pooloc$(objext) \
    s-poosiz$(objext) \
!   s-powflt$(objext) \
!   s-powlfl$(objext) \
!   s-powllf$(objext) \
    s-purexc$(objext) \
+   s-putima$(objext) \
    s-rannum$(objext) \
    s-ransee$(objext) \
    s-regexp$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 683,688 ****
--- 728,734 ----
    s-scaval$(objext) \
    s-secsta$(objext) \
    s-sequio$(objext) \
+   s-shabig$(objext) \
    s-shasto$(objext) \
    s-soflin$(objext) \
    s-soliin$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 694,716 ****
    s-stopoo$(objext) \
    s-stposu$(objext) \
    s-stratt$(objext) \
    s-strhas$(objext) \
    s-string$(objext) \
    s-ststop$(objext) \
    s-tasloc$(objext) \
    s-traceb$(objext) \
    s-traent$(objext) \
    s-unstyp$(objext) \
    s-utf_32$(objext) \
    s-valboo$(objext) \
    s-valcha$(objext) \
!   s-valdec$(objext) \
    s-valenu$(objext) \
    s-valint$(objext) \
!   s-vallld$(objext) \
    s-vallli$(objext) \
    s-valllu$(objext) \
    s-valrea$(objext) \
    s-valuns$(objext) \
    s-valuti$(objext) \
    s-valwch$(objext) \
--- 740,774 ----
    s-stopoo$(objext) \
    s-stposu$(objext) \
    s-stratt$(objext) \
+   s-statxd$(objext) \
    s-strhas$(objext) \
    s-string$(objext) \
    s-ststop$(objext) \
    s-tasloc$(objext) \
    s-traceb$(objext) \
    s-traent$(objext) \
+   s-trasym$(objext) \
    s-unstyp$(objext) \
    s-utf_32$(objext) \
    s-valboo$(objext) \
    s-valcha$(objext) \
!   s-vade32$(objext) \
!   s-vade64$(objext) \
!   s-vafi32$(objext) \
!   s-vafi64$(objext) \
    s-valenu$(objext) \
+   s-valflt$(objext) \
    s-valint$(objext) \
!   s-vallfl$(objext) \
!   s-valllf$(objext) \
    s-vallli$(objext) \
    s-valllu$(objext) \
    s-valrea$(objext) \
+   s-valued$(objext) \
+   s-valuef$(objext) \
+   s-valuei$(objext) \
+   s-valuer$(objext) \
+   s-valueu$(objext) \
    s-valuns$(objext) \
    s-valuti$(objext) \
    s-valwch$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 725,732 ****
--- 783,794 ----
    s-widboo$(objext) \
    s-widcha$(objext) \
    s-widenu$(objext) \
+   s-widint$(objext) \
    s-widlli$(objext) \
    s-widllu$(objext) \
+   s-widthi$(objext) \
+   s-widthu$(objext) \
+   s-widuns$(objext) \
    s-widwch$(objext) \
    s-wwdcha$(objext) \
    s-wwdenu$(objext) \
*************** GNATLIB_SHARED = gnatlib
*** 783,789 ****
  # to LIBGNAT_TARGET_PAIRS.
  
  GNATRTL_SOCKETS_OBJS = g-soccon$(objext) g-socket$(objext) g-socthi$(objext) \
!   g-soliop$(objext) g-sothco$(objext)
  
  DUMMY_SOCKETS_TARGET_PAIRS = \
    g-socket.adb<libgnat/g-socket__dummy.adb \
--- 845,851 ----
  # to LIBGNAT_TARGET_PAIRS.
  
  GNATRTL_SOCKETS_OBJS = g-soccon$(objext) g-socket$(objext) g-socthi$(objext) \
!   g-soliop$(objext) g-sothco$(objext) g-socpol$(objext)
  
  DUMMY_SOCKETS_TARGET_PAIRS = \
    g-socket.adb<libgnat/g-socket__dummy.adb \
*************** DUMMY_SOCKETS_TARGET_PAIRS = \
*** 791,797 ****
    g-socthi.adb<libgnat/g-socthi__dummy.adb \
    g-socthi.ads<libgnat/g-socthi__dummy.ads \
    g-sothco.adb<libgnat/g-sothco__dummy.adb \
!   g-sothco.ads<libgnat/g-sothco__dummy.ads
  
  # On platforms where atomic increment/decrement operations are supported,
  # special version of Ada.Strings.Unbounded package can be used.
--- 853,861 ----
    g-socthi.adb<libgnat/g-socthi__dummy.adb \
    g-socthi.ads<libgnat/g-socthi__dummy.ads \
    g-sothco.adb<libgnat/g-sothco__dummy.adb \
!   g-sothco.ads<libgnat/g-sothco__dummy.ads \
!   g-socpol.adb<libgnat/g-socpol__dummy.adb \
!   g-socpol.ads<libgnat/g-socpol__dummy.ads
  
  # On platforms where atomic increment/decrement operations are supported,
  # special version of Ada.Strings.Unbounded package can be used.
*************** ATOMICS_BUILTINS_TARGET_PAIRS = \
*** 818,830 ****
  # Special version of units for x86 and x86-64 platforms.
  
  X86_TARGET_PAIRS = \
!   a-numaux.ads<libgnat/a-numaux__x86.ads \
!   a-numaux.adb<libgnat/a-numaux__x86.adb \
    s-atocou.adb<libgnat/s-atocou__x86.adb
  
  X86_64_TARGET_PAIRS = \
!   a-numaux.ads<libgnat/a-numaux__x86.ads \
!   a-numaux.adb<libgnat/a-numaux__x86.adb \
    s-atocou.adb<libgnat/s-atocou__builtin.adb
  
  # Implementation of symbolic traceback based on dwarf
--- 882,892 ----
  # Special version of units for x86 and x86-64 platforms.
  
  X86_TARGET_PAIRS = \
!   a-nuauco.ads<libgnat/a-nuauco__x86.ads \
    s-atocou.adb<libgnat/s-atocou__x86.adb
  
  X86_64_TARGET_PAIRS = \
!   a-nuauco.ads<libgnat/a-nuauco__x86.ads \
    s-atocou.adb<libgnat/s-atocou__builtin.adb
  
  # Implementation of symbolic traceback based on dwarf
*************** TRASYM_DWARF_UNIX_OBJS = $(TRASYM_DWARF_
*** 846,851 ****
--- 908,1017 ----
  
  TRASYM_DWARF_MINGW_OBJS = $(TRASYM_DWARF_COMMON_OBJS)
  
+ GNATRTL_128BIT_PAIRS = \
+   a-decima.ads<libgnat/a-decima__128.ads \
+   a-tideio.adb<libgnat/a-tideio__128.adb \
+   a-tifiio.adb<libgnat/a-tifiio__128.adb \
+   a-tiinio.adb<libgnat/a-tiinio__128.adb \
+   a-timoio.adb<libgnat/a-timoio__128.adb \
+   a-wtdeio.adb<libgnat/a-wtdeio__128.adb \
+   a-wtfiio.adb<libgnat/a-wtfiio__128.adb \
+   a-wtinio.adb<libgnat/a-wtinio__128.adb \
+   a-wtmoio.adb<libgnat/a-wtmoio__128.adb \
+   a-ztdeio.adb<libgnat/a-ztdeio__128.adb \
+   a-ztfiio.adb<libgnat/a-ztfiio__128.adb \
+   a-ztinio.adb<libgnat/a-ztinio__128.adb \
+   a-ztmoio.adb<libgnat/a-ztmoio__128.adb \
+   i-cexten.ads<libgnat/i-cexten__128.ads \
+   s-scaval.ads<libgnat/s-scaval__128.ads \
+   s-scaval.adb<libgnat/s-scaval__128.adb
+ 
+ # Objects needed for 128-bit types
+ GNATRTL_128BIT_OBJS = \
+   s-arit128$(objext) \
+   s-casi128$(objext) \
+   s-caun128$(objext) \
+   s-exnllli$(objext) \
+   s-expllli$(objext) \
+   s-explllu$(objext) \
+   s-fode128$(objext) \
+   s-fofi128$(objext) \
+   s-imde128$(objext) \
+   s-imfi128$(objext) \
+   s-imglllb$(objext) \
+   s-imgllli$(objext) \
+   s-imglllu$(objext) \
+   s-imglllw$(objext) \
+   s-pack65$(objext)  \
+   s-pack66$(objext)  \
+   s-pack67$(objext)  \
+   s-pack68$(objext)  \
+   s-pack69$(objext)  \
+   s-pack70$(objext)  \
+   s-pack71$(objext)  \
+   s-pack72$(objext)  \
+   s-pack73$(objext)  \
+   s-pack74$(objext)  \
+   s-pack75$(objext)  \
+   s-pack76$(objext)  \
+   s-pack77$(objext)  \
+   s-pack78$(objext)  \
+   s-pack79$(objext)  \
+   s-pack80$(objext)  \
+   s-pack81$(objext)  \
+   s-pack82$(objext)  \
+   s-pack83$(objext)  \
+   s-pack84$(objext)  \
+   s-pack85$(objext)  \
+   s-pack86$(objext)  \
+   s-pack87$(objext)  \
+   s-pack88$(objext)  \
+   s-pack89$(objext)  \
+   s-pack90$(objext)  \
+   s-pack91$(objext)  \
+   s-pack92$(objext)  \
+   s-pack93$(objext)  \
+   s-pack94$(objext)  \
+   s-pack95$(objext)  \
+   s-pack96$(objext)  \
+   s-pack97$(objext)  \
+   s-pack98$(objext)  \
+   s-pack99$(objext)  \
+   s-pack100$(objext) \
+   s-pack101$(objext) \
+   s-pack102$(objext) \
+   s-pack103$(objext) \
+   s-pack104$(objext) \
+   s-pack105$(objext) \
+   s-pack106$(objext) \
+   s-pack107$(objext) \
+   s-pack108$(objext) \
+   s-pack109$(objext) \
+   s-pack110$(objext) \
+   s-pack111$(objext) \
+   s-pack112$(objext) \
+   s-pack113$(objext) \
+   s-pack114$(objext) \
+   s-pack115$(objext) \
+   s-pack116$(objext) \
+   s-pack117$(objext) \
+   s-pack118$(objext) \
+   s-pack119$(objext) \
+   s-pack120$(objext) \
+   s-pack121$(objext) \
+   s-pack122$(objext) \
+   s-pack123$(objext) \
+   s-pack124$(objext) \
+   s-pack125$(objext) \
+   s-pack126$(objext) \
+   s-pack127$(objext) \
+   s-vade128$(objext) \
+   s-vafi128$(objext) \
+   s-valllli$(objext) \
+   s-vallllu$(objext) \
+   s-widllli$(objext) \
+   s-widlllu$(objext)
+ 
  # Shared library version
  LIB_VERSION = $(strip $(shell grep ' Library_Version :' $(GNAT_SRC)/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/'))
  
*************** ifeq ($(strip $(filter-out powerpc% wrs
*** 900,906 ****
  
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
!   a-numaux.ads<libgnat/a-numaux__vxworks.ads \
    s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
    s-intman.ads<libgnarl/s-intman__vxworks.ads \
    s-intman.adb<libgnarl/s-intman__vxworks.adb \
--- 1066,1074 ----
  
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
!   a-naliop.ads<libgnat/a-naliop__nolibm.ads \
!   a-nuaufl.ads<libgnat/a-nuaufl__wraplf.ads \
!   a-nashfl.ads<libgnat/a-nashfl__wraplf.ads \
    s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
    s-intman.ads<libgnarl/s-intman__vxworks.ads \
    s-intman.adb<libgnarl/s-intman__vxworks.adb \
*************** ifeq ($(strip $(filter-out powerpc% wrs
*** 915,920 ****
--- 1083,1089 ----
    s-vxwork.ads<libgnarl/s-vxwork__ppc.ads \
    g-socthi.ads<libgnat/g-socthi__vxworks.ads \
    g-socthi.adb<libgnat/g-socthi__vxworks.adb \
+   g-sopowa.adb<libgnat/g-sopowa__posix.adb \
    g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS)
*************** ifeq ($(strip $(filter-out powerpc% wrs
*** 933,938 ****
--- 1102,1112 ----
      EXTRA_GNATRTL_NONTASKING_OBJS+=s-stchop.o
    endif
  
+   ifeq ($(strip $(filter-out powerpc64, $(target_cpu))),)
+     LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+     EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
+   endif
+ 
    TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
  
    ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
*************** ifeq ($(strip $(filter-out powerpc% wrs
*** 999,1004 ****
--- 1173,1179 ----
      else
        GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
      endif
+     GCC_SPEC_FILES+=vxworks7-cert-rtp-link.spec
    else
      GCC_SPEC_FILES+=vxworks-$(ARCH_STR)-link.spec
      GCC_SPEC_FILES+=vxworks-cert-$(ARCH_STR)-link.spec
*************** ifeq ($(strip $(filter-out powerpc% wrs
*** 1023,1030 ****
    LIBGNAT_TARGET_PAIRS = \
    a-elchha.adb<libgnat/a-elchha__vxworks-ppc-full.adb \
    a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
!   a-numaux.ads<libgnat/a-numaux__vxworks.ads \
!   g-io.adb<hie/g-io__vxworks-ppc-cert.adb \
    s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
    s-interr.adb<libgnarl/s-interr__vxworks.adb \
    s-intman.ads<libgnarl/s-intman__vxworks.ads \
--- 1198,1207 ----
    LIBGNAT_TARGET_PAIRS = \
    a-elchha.adb<libgnat/a-elchha__vxworks-ppc-full.adb \
    a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
!   a-naliop.ads<libgnat/a-naliop__nolibm.ads \
!   a-nuaufl.ads<libgnat/a-nuaufl__wraplf.ads \
!   a-nashfl.ads<libgnat/a-nashfl__wraplf.ads \
!   g-io.adb<hie/g-io__vxworks-cert.adb \
    s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
    s-interr.adb<libgnarl/s-interr__vxworks.adb \
    s-intman.ads<libgnarl/s-intman__vxworks.ads \
*************** ifeq ($(strip $(filter-out powerpc% wrs
*** 1068,1073 ****
--- 1245,1251 ----
      LIBGNAT_TARGET_PAIRS += \
      g-socthi.ads<libgnat/g-socthi__vxworks.ads \
      g-socthi.adb<libgnat/g-socthi__vxworks.adb \
+     g-sopowa.adb<libgnat/g-sopowa__posix.adb \
      g-stsifd.adb<libgnat/g-stsifd__sockets.adb
    endif
  
*************** ifeq ($(strip $(filter-out %86 wrs vxwor
*** 1079,1086 ****
    LIBGNAT_TARGET_PAIRS = \
    a-elchha.adb<libgnat/a-elchha__vxworks-ppc-full.adb \
    a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
!   a-numaux.ads<libgnat/a-numaux__vxworks.ads \
!   g-io.adb<hie/g-io__vxworks-ppc-cert.adb \
    s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
    s-interr.adb<libgnarl/s-interr__vxworks.adb \
    s-intman.ads<libgnarl/s-intman__vxworks.ads \
--- 1257,1266 ----
    LIBGNAT_TARGET_PAIRS = \
    a-elchha.adb<libgnat/a-elchha__vxworks-ppc-full.adb \
    a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
!   a-naliop.ads<libgnat/a-naliop__nolibm.ads \
!   a-nuaufl.ads<libgnat/a-nuaufl__wraplf.ads \
!   a-nashfl.ads<libgnat/a-nashfl__wraplf.ads \
!   g-io.adb<hie/g-io__vxworks-cert.adb \
    s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
    s-interr.adb<libgnarl/s-interr__vxworks.adb \
    s-intman.ads<libgnarl/s-intman__vxworks.ads \
*************** ifeq ($(strip $(filter-out %86 wrs vxwor
*** 1124,1129 ****
--- 1304,1310 ----
      LIBGNAT_TARGET_PAIRS += \
      g-socthi.ads<libgnat/g-socthi__vxworks.ads \
      g-socthi.adb<libgnat/g-socthi__vxworks.adb \
+     g-sopowa.adb<libgnat/g-sopowa__posix.adb \
      g-stsifd.adb<libgnat/g-stsifd__sockets.adb
    endif
  
*************** endif
*** 1132,1153 ****
  # x86/x86_64 VxWorks
  ifeq ($(strip $(filter-out %86 x86_64 wrs vxworks vxworks7%,$(target_cpu) $(target_vendor) $(target_os))),)
  
!   EH_MECHANISM=-gcc
! 
!   VX=$(strip $(if $(filter vxworks7%, $(target_os)), vxworks7, vxworks))
!   SVX=system-$(VX)
! 
!   ifeq ($(strip $(filter-out x86_64, $(target_cpu))),)
!      X86CPU=x86_64
!      LIBGNAT_TARGET_PAIRS=$(X86_64_TARGET_PAIRS)
!   else
!      X86CPU=x86
!      LIBGNAT_TARGET_PAIRS=$(X86_TARGET_PAIRS)
!   endif
! 
!   LIBGNAT_TARGET_PAIRS+= \
    a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
    i-vxwork.ads<libgnat/i-vxwork__x86.ads \
    s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
    s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
    s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
--- 1313,1324 ----
  # x86/x86_64 VxWorks
  ifeq ($(strip $(filter-out %86 x86_64 wrs vxworks vxworks7%,$(target_cpu) $(target_vendor) $(target_os))),)
  
!   LIBGNAT_TARGET_PAIRS= \
    a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
    i-vxwork.ads<libgnat/i-vxwork__x86.ads \
+   a-naliop.ads<libgnat/a-naliop__nolibm.ads \
+   a-nuaufl.ads<libgnat/a-nuaufl__wraplf.ads \
+   a-nashfl.ads<libgnat/a-nashfl__wraplf.ads \
    s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
    s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
    s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
*************** ifeq ($(strip $(filter-out %86 x86_64 wr
*** 1164,1174 ****
--- 1335,1361 ----
    s-vxwork.ads<libgnarl/s-vxwork__x86.ads \
    g-socthi.ads<libgnat/g-socthi__vxworks.ads \
    g-socthi.adb<libgnat/g-socthi__vxworks.adb \
+   g-sopowa.adb<libgnat/g-sopowa__posix.adb \
    g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
    $(ATOMICS_TARGET_PAIRS)
  
+   VX=$(strip $(if $(filter vxworks7%, $(target_os)), vxworks7, vxworks))
+   SVX=system-$(VX)
+ 
+   ifeq ($(strip $(filter-out x86_64, $(target_cpu))),)
+      X86CPU=x86_64
+      LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
+      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
+   else
+      X86CPU=x86
+      LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
+   endif
+ 
    TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
  
+   EH_MECHANISM=-gcc
+ 
    # The CPU setting for VxSim varies with the
    # host (Windows or Linux)
    # target (VxWorks6 or VxWorks7)
*************** ifeq ($(strip $(filter-out %86 x86_64 wr
*** 1248,1254 ****
          endif
        endif
  
!       EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o
      endif
    endif
  
--- 1435,1441 ----
          endif
        endif
  
!       EXTRA_GNATRTL_NONTASKING_OBJS += i-vxwork.o i-vxwoio.o
      endif
    endif
  
*************** ifeq ($(strip $(filter-out %86 x86_64 wr
*** 1262,1267 ****
--- 1449,1455 ----
  
    ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
      GCC_SPEC_FILES+=vxworks7-$(X86CPU)-rtp-base-link.spec
+     GCC_SPEC_FILES+=vxworks7-cert-rtp-link.spec
    else
      GCC_SPEC_FILES+=vxworks-x86-link.spec
      GCC_SPEC_FILES+=vxworks-cert-x86-link.spec
*************** endif
*** 1272,1282 ****
--- 1460,1497 ----
  # ARM and Aarch64 VxWorks
  ifeq ($(strip $(filter-out aarch64 arm% coff wrs vx%,$(target_cpu) $(target_vendor) $(target_os))),)
  
+   LIBGNAT_TARGET_PAIRS = \
+   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
+   a-naliop.ads<libgnat/a-naliop__nolibm.ads \
+   a-nuaufl.ads<libgnat/a-nuaufl__wraplf.ads \
+   a-nashfl.ads<libgnat/a-nashfl__wraplf.ads \
+   s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
+   s-interr.adb<libgnarl/s-interr__vxworks.adb \
+   s-intman.ads<libgnarl/s-intman__vxworks.ads \
+   s-intman.adb<libgnarl/s-intman__vxworks.adb \
+   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
+   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
+   s-osprim.adb<libgnat/s-osprim__vxworks.adb \
+   s-parame.ads<libgnat/s-parame__vxworks.ads \
+   s-parame.adb<libgnat/s-parame__vxworks.adb \
+   s-stchop.ads<libgnat/s-stchop__limit.ads \
+   s-stchop.adb<libgnat/s-stchop__vxworks.adb \
+   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
+   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
+   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
+   g-socthi.ads<libgnat/g-socthi__vxworks.ads \
+   g-socthi.adb<libgnat/g-socthi__vxworks.adb \
+   g-sopowa.adb<libgnat/g-sopowa__posix.adb \
+   g-stsifd.adb<libgnat/g-stsifd__sockets.adb
+ 
    ifeq ($(strip $(filter-out aarch64, $(target_cpu))),)
      ARCH_STR=aarch64
      VX=vxworks7
      EH_MECHANISM=-gcc
      SIGTRAMP_OBJ=sigtramp-vxworks.o
+     LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS) \
+       a-nallfl.ads<libgnat/a-nallfl__wraplf.ads
+     EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    else
      ifeq ($(strip $(filter-out arm%, $(target_cpu))),)
        ARCH_STR=arm
*************** ifeq ($(strip $(filter-out aarch64 arm%
*** 1294,1322 ****
      endif
    endif
  
!   SVX=system-$(VX)
  
!   LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
!   a-numaux.ads<libgnat/a-numaux__vxworks.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
!   s-interr.adb<libgnarl/s-interr__vxworks.adb \
!   s-intman.ads<libgnarl/s-intman__vxworks.ads \
!   s-intman.adb<libgnarl/s-intman__vxworks.adb \
!   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
!   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
!   s-osprim.adb<libgnat/s-osprim__vxworks.adb \
!   s-parame.ads<libgnat/s-parame__vxworks.ads \
!   s-parame.adb<libgnat/s-parame__vxworks.adb \
!   s-stchop.ads<libgnat/s-stchop__limit.ads \
!   s-stchop.adb<libgnat/s-stchop__vxworks.adb \
!   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
!   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
!   s-vxwork.ads<libgnarl/s-vxwork__$(ARCH_STR).ads \
!   g-socthi.ads<libgnat/g-socthi__vxworks.ads \
!   g-socthi.adb<libgnat/g-socthi__vxworks.adb \
!   g-stsifd.adb<libgnat/g-stsifd__sockets.adb
  
    TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
  
--- 1509,1517 ----
      endif
    endif
  
!   LIBGNAT_TARGET_PAIRS += s-vxwork.ads<libgnarl/s-vxwork__$(ARCH_STR).ads
  
!   SVX=system-$(VX)
  
    TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
  
*************** ifeq ($(strip $(filter-out aarch64 arm%
*** 1361,1369 ****
      endif
    endif
  
!   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o \
!     s-stchop.o
!   EXTRA_GNATRTL_TASKING_OBJS=i-vxinco.o s-vxwork.o s-vxwext.o
  
    EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
  
--- 1556,1563 ----
      endif
    endif
  
!   EXTRA_GNATRTL_NONTASKING_OBJS += i-vxwork.o i-vxwoio.o s-stchop.o
!   EXTRA_GNATRTL_TASKING_OBJS += i-vxinco.o s-vxwork.o s-vxwext.o
  
    EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
  
*************** ifeq ($(strip $(filter-out aarch64 arm%
*** 1379,1384 ****
--- 1573,1581 ----
        GCC_SPEC_FILES+=vxworks-smp-arm-link.spec
      endif
    endif
+   ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
+     GCC_SPEC_FILES+=vxworks7-cert-rtp-link.spec
+   endif
  endif
  
  # ARM android
*************** endif
*** 1413,1418 ****
--- 1610,1616 ----
  ifeq ($(strip $(filter-out aarch64 %qnx,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__qnx.ads \
+   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
    s-intman.adb<libgnarl/s-intman__qnx.adb \
    s-osinte.adb<libgnarl/s-osinte__qnx.adb \
*************** ifeq ($(strip $(filter-out aarch64 %qnx,
*** 1425,1434 ****
--- 1623,1634 ----
    g-soliop.ads<libgnat/g-soliop__qnx.ads \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
+   $(GNATRTL_128BIT_PAIRS) \
    system.ads<libgnat/system-qnx-aarch64.ads
  
    TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
+   EXTRA_GNATRTL_NONTASKING_OBJS = $(GNATRTL_128BIT_OBJS)
    EXTRA_GNATRTL_TASKING_OBJS=s-qnx.o
    EXTRA_LIBGNAT_OBJS+=sigtramp-qnx.o
    EXTRA_LIBGNAT_SRCS+=sigtramp.h
*************** ifeq ($(strip $(filter-out aarch64 %qnx,
*** 1441,1450 ****
    LIBRARY_VERSION := $(LIB_VERSION)
  endif
  
! # Sparc Solaris
  ifeq ($(strip $(filter-out sparc% sun solaris%,$(target_cpu) $(target_vendor) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__solaris.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
    s-intman.adb<libgnarl/s-intman__solaris.adb \
    s-mudido.adb<libgnarl/s-mudido__affinity.adb \
--- 1641,1651 ----
    LIBRARY_VERSION := $(LIB_VERSION)
  endif
  
! # SPARC Solaris
  ifeq ($(strip $(filter-out sparc% sun solaris%,$(target_cpu) $(target_vendor) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__solaris.ads \
+   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
    s-intman.adb<libgnarl/s-intman__solaris.adb \
    s-mudido.adb<libgnarl/s-mudido__affinity.adb \
*************** ifeq ($(strip $(filter-out sparc% sun so
*** 1464,1479 ****
  
    EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
  
    EH_MECHANISM=-gcc
!   THREADSLIB = -lposix4 -lthread
!   MISCLIB = -lposix4 -lnsl -lsocket
    SO_OPTS = -Wl,-h,
    GNATLIB_SHARED = gnatlib-shared-dual
    GMEM_LIB = gmemlib
    LIBRARY_VERSION := $(LIB_VERSION)
  endif
  
! # x86 and x86-64 solaris
  ifeq ($(strip $(filter-out %86 %x86_64 solaris2%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS_COMMON = \
    a-intnam.ads<libgnarl/a-intnam__solaris.ads \
--- 1665,1691 ----
  
    EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
  
+   ifeq ($(strip $(filter-out sparc64 sparcv9,$(target_cpu))),)
+     ifneq ($(strip $(MULTISUBDIR)),/sparcv8plus)
+       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
+     endif
+   else
+     ifeq ($(strip $(MULTISUBDIR)),/sparcv9)
+       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
+     endif
+   endif
+ 
    EH_MECHANISM=-gcc
!   MISCLIB = -lnsl -lsocket
    SO_OPTS = -Wl,-h,
    GNATLIB_SHARED = gnatlib-shared-dual
    GMEM_LIB = gmemlib
    LIBRARY_VERSION := $(LIB_VERSION)
  endif
  
! # x86 and x86-64 Solaris
  ifeq ($(strip $(filter-out %86 %x86_64 solaris2%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS_COMMON = \
    a-intnam.ads<libgnarl/a-intnam__solaris.ads \
*************** ifeq ($(strip $(filter-out %86 %x86_64 s
*** 1497,1502 ****
--- 1709,1716 ----
      ifeq ($(strip $(MULTISUBDIR)),/amd64)
        LIBGNAT_TARGET_PAIRS = \
        $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_64_TARGET_PAIRS)
+       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
      else
        LIBGNAT_TARGET_PAIRS = \
        $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_TARGET_PAIRS)
*************** ifeq ($(strip $(filter-out %86 %x86_64 s
*** 1508,1513 ****
--- 1722,1729 ----
      else
        LIBGNAT_TARGET_PAIRS = \
        $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_64_TARGET_PAIRS)
+       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
      endif
    endif
  
*************** ifeq ($(strip $(filter-out %86 %x86_64 s
*** 1515,1522 ****
    EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
  
    EH_MECHANISM=-gcc
!   THREADSLIB = -lposix4 -lthread
!   MISCLIB = -lposix4 -lnsl -lsocket
    SO_OPTS = -Wl,-h,
    GNATLIB_SHARED = gnatlib-shared-dual
    GMEM_LIB = gmemlib
--- 1731,1737 ----
    EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
  
    EH_MECHANISM=-gcc
!   MISCLIB = -lnsl -lsocket
    SO_OPTS = -Wl,-h,
    GNATLIB_SHARED = gnatlib-shared-dual
    GMEM_LIB = gmemlib
*************** ifeq ($(strip $(filter-out %86 linux%,$(
*** 1543,1548 ****
--- 1758,1765 ----
  
    ifeq ($(strip $(MULTISUBDIR)),/64)
      LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
+     LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+     EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    else
      LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
    endif
*************** endif
*** 1632,1639 ****
  ifeq ($(strip $(filter-out x86_64 kfreebsd%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
-   a-numaux.adb<libgnat/a-numaux__x86.adb \
-   a-numaux.ads<libgnat/a-numaux__x86.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
    s-intman.adb<libgnarl/s-intman__posix.adb \
    s-osinte.adb<libgnarl/s-osinte__posix.adb \
--- 1849,1854 ----
*************** ifeq ($(strip $(filter-out x86_64 kfreeb
*** 1642,1649 ****
--- 1857,1869 ----
    s-taprop.adb<libgnarl/s-taprop__posix.adb \
    s-taspri.ads<libgnarl/s-taspri__posix.ads \
    s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
+   $(ATOMICS_TARGET_PAIRS) \
+   $(X86_64_TARGET_PAIRS) \
+   $(GNATRTL_128BIT_PAIRS) \
    system.ads<libgnat/system-freebsd.ads
  
+   EXTRA_GNATRTL_NONTASKING_OBJS = $(GNATRTL_128BIT_OBJS)
+ 
    TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EH_MECHANISM=-gcc
*************** endif
*** 1657,1662 ****
--- 1877,1883 ----
  ifeq ($(strip $(filter-out %aarch64 freebsd%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
+   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
    s-intman.adb<libgnarl/s-intman__posix.adb \
    s-mudido.adb<libgnarl/s-mudido__affinity.adb \
*************** ifeq ($(strip $(filter-out %aarch64 free
*** 1668,1675 ****
--- 1889,1899 ----
    s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
+   $(GNATRTL_128BIT_PAIRS) \
    system.ads<libgnat/system-freebsd.ads
  
+   EXTRA_GNATRTL_NONTASKING_OBJS = $(GNATRTL_128BIT_OBJS)
+ 
    GNATLIB_SHARED = gnatlib-shared-dual
  
    EH_MECHANISM=-gcc
*************** ifeq ($(strip $(filter-out %86_64 freebs
*** 1725,1736 ****
--- 1949,1962 ----
    $(TRASYM_DWARF_UNIX_PAIRS) \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_64_TARGET_PAIRS) \
+   $(GNATRTL_128BIT_PAIRS) \
    system.ads<libgnat/system-freebsd.ads
  
    GNATLIB_SHARED = gnatlib-shared-dual
  
    EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
    EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
+   EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
  
    EH_MECHANISM=-gcc
    THREADSLIB= -lpthread
*************** ifeq ($(strip $(filter-out %86_64 dragon
*** 1754,1764 ****
    s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_64_TARGET_PAIRS) \
    system.ads<libgnat/system-dragonfly-x86_64.ads
  
    GNATLIB_SHARED = gnatlib-shared-dual
  
!   EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
  
    EH_MECHANISM=-gcc
    THREADSLIB= -lpthread
--- 1980,1992 ----
    s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_64_TARGET_PAIRS) \
+   $(GNATRTL_128BIT_PAIRS) \
    system.ads<libgnat/system-dragonfly-x86_64.ads
  
    GNATLIB_SHARED = gnatlib-shared-dual
  
!   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
!   EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
  
    EH_MECHANISM=-gcc
    THREADSLIB= -lpthread
*************** endif
*** 1771,1776 ****
--- 1999,2005 ----
  ifeq ($(strip $(filter-out s390% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__linux.ads \
+   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
    s-intman.adb<libgnarl/s-intman__posix.adb \
    s-linux.ads<libgnarl/s-linux.ads \
*************** ifeq ($(strip $(filter-out s390% linux%,
*** 1784,1789 ****
--- 2013,2030 ----
    s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
    system.ads<libgnat/system-linux-s390.ads
  
+   ifeq ($(strip $(filter-out s390x,$(target_cpu))),)
+     ifneq ($(strip $(MULTISUBDIR)),/32)
+       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
+     endif
+   else
+     ifeq ($(strip $(MULTISUBDIR)),/64)
+       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
+     endif
+   endif
+ 
    TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
*************** endif
*** 1796,1806 ****
  # HP/PA HP-UX 10
  ifeq ($(strip $(filter-out hppa% hp hpux10%,$(target_cpu) $(target_vendor) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
-   a-excpol.adb<libgnat/a-excpol__abort.adb \
    a-intnam.ads<libgnarl/a-intnam__hpux.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
    s-interr.adb<libgnarl/s-interr__sigaction.adb \
    s-intman.adb<libgnarl/s-intman__posix.adb \
    s-osinte.adb<libgnarl/s-osinte__hpux-dce.adb \
    s-osinte.ads<libgnarl/s-osinte__hpux-dce.ads \
    s-parame.ads<libgnat/s-parame__hpux.ads \
--- 2037,2047 ----
  # HP/PA HP-UX 10
  ifeq ($(strip $(filter-out hppa% hp hpux10%,$(target_cpu) $(target_vendor) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__hpux.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
    s-interr.adb<libgnarl/s-interr__sigaction.adb \
    s-intman.adb<libgnarl/s-intman__posix.adb \
+   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
    s-osinte.adb<libgnarl/s-osinte__hpux-dce.adb \
    s-osinte.ads<libgnarl/s-osinte__hpux-dce.ads \
    s-parame.ads<libgnat/s-parame__hpux.ads \
*************** ifeq ($(strip $(filter-out hppa% hp hpux
*** 1819,1824 ****
--- 2060,2066 ----
    a-intnam.ads<libgnarl/a-intnam__hpux.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
    s-intman.adb<libgnarl/s-intman__posix.adb \
+   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
    s-osinte.adb<libgnarl/s-osinte__posix.adb \
    s-osinte.ads<libgnarl/s-osinte__hpux.ads \
    s-parame.ads<libgnat/s-parame__hpux.ads \
*************** ifeq ($(strip $(filter-out lynxos178%,$(
*** 1881,1886 ****
--- 2123,2131 ----
  
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__lynxos.ads \
+   a-nuaufl.ads<libgnat/a-nuaufl__wraplf.ads \
+   a-nashfl.ads<libgnat/a-nashfl__wraplf.ads \
+   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
    g-soliop.ads<libgnat/g-soliop__lynxos.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
    s-intman.adb<libgnarl/s-intman__lynxos.adb \
*************** ifeq ($(strip $(filter-out lynxos178%,$(
*** 1895,1901 ****
    endif
    ifeq ($(strip $(filter-out %86, $(target_cpu))),)
      LIBGNAT_TARGET_PAIRS +=  system.ads<libgnat/system-lynxos178-x86.ads
-     LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
    endif
  
    ifeq ($(strip $(filter-out lynxos178e,$(target_os))),)
--- 2140,2145 ----
*************** ifeq ($(strip $(filter-out rtems%,$(targ
*** 1924,1934 ****
--- 2168,2183 ----
    s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
    s-stchop.adb<libgnat/s-stchop__rtems.adb \
    s-interr.adb<libgnarl/s-interr__hwint.adb
+ 
    ifeq ($(strip $(filter-out arm%, $(target_cpu))),)
      EH_MECHANISM=-arm
    else
      EH_MECHANISM=-gcc
    endif
+ 
+   ifeq ($(strip $(filter-out riscv%,$(target_cpu))),)
+     LIBGNAT_TARGET_PAIRS += a-nallfl.ads<libgnat/a-nallfl__wraplf.ads
+   endif
  endif
  
  # PikeOS
*************** ifeq ($(strip $(filter-out cygwin% mingw
*** 1973,1983 ****
    else
      LIBGNAT_TARGET_PAIRS = \
      g-socthi.ads<libgnat/g-socthi__mingw.ads \
!     g-socthi.adb<libgnat/g-socthi__mingw.adb
    endif
    LIBGNAT_TARGET_PAIRS += \
    a-dirval.adb<libgnat/a-dirval__mingw.adb \
-   a-excpol.adb<libgnat/a-excpol__abort.adb \
    s-gloloc.adb<libgnat/s-gloloc__mingw.adb \
    s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
    s-taspri.ads<libgnarl/s-taspri__mingw.ads \
--- 2222,2232 ----
    else
      LIBGNAT_TARGET_PAIRS = \
      g-socthi.ads<libgnat/g-socthi__mingw.ads \
!     g-socthi.adb<libgnat/g-socthi__mingw.adb \
!     g-sopowa.adb<libgnat/g-sopowa__mingw.adb
    endif
    LIBGNAT_TARGET_PAIRS += \
    a-dirval.adb<libgnat/a-dirval__mingw.adb \
    s-gloloc.adb<libgnat/s-gloloc__mingw.adb \
    s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
    s-taspri.ads<libgnarl/s-taspri__mingw.ads \
*************** ifeq ($(strip $(filter-out cygwin% mingw
*** 2007,2018 ****
        LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
        SO_OPTS= -m32 -Wl,-soname,
      else
!       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
        SO_OPTS = -m64 -Wl,-soname,
      endif
    else
      ifeq ($(strip $(MULTISUBDIR)),/64)
!       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
        SO_OPTS = -m64 -Wl,-soname,
      else
        LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
--- 2256,2269 ----
        LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
        SO_OPTS= -m32 -Wl,-soname,
      else
!       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS) $(GNATRTL_128BIT_PAIRS)
!       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
        SO_OPTS = -m64 -Wl,-soname,
      endif
    else
      ifeq ($(strip $(MULTISUBDIR)),/64)
!       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS) $(GNATRTL_128BIT_PAIRS)
!       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
        SO_OPTS = -m64 -Wl,-soname,
      else
        LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
*************** endif
*** 2046,2051 ****
--- 2297,2303 ----
  ifeq ($(strip $(filter-out mips% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__linux.ads \
+   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
    s-intman.adb<libgnarl/s-intman__posix.adb \
    s-linux.ads<libgnarl/s-linux__mips.ads \
*************** ifeq ($(strip $(filter-out mips% linux%,
*** 2059,2064 ****
--- 2311,2328 ----
    s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
    system.ads<libgnat/system-linux-mips.ads
  
+   ifeq ($(strip $(filter-out mips64% mipsisa64%,$(target_cpu))),)
+     ifneq ($(strip $(MULTISUBDIR)),/32)
+       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
+     endif
+   else
+     ifneq ($(strip $(filter /64 /n32,$(MULTISUBDIR))),)
+       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
+     endif
+   endif
+ 
    TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
*************** endif
*** 2071,2080 ****
  
  # PowerPC and e500v2 Linux
  ifeq ($(strip $(filter-out powerpc% linux%,$(target_cpu) $(target_os))),)
!   LIBGNAT_TARGET_PAIRS_COMMON = \
    a-exetim.adb<libgnarl/a-exetim__posix.adb \
    a-exetim.ads<libgnarl/a-exetim__default.ads \
    a-intnam.ads<libgnarl/a-intnam__linux.ads \
    a-synbar.adb<libgnarl/a-synbar__posix.adb \
    a-synbar.ads<libgnarl/a-synbar__posix.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
--- 2335,2345 ----
  
  # PowerPC and e500v2 Linux
  ifeq ($(strip $(filter-out powerpc% linux%,$(target_cpu) $(target_os))),)
!   LIBGNAT_TARGET_PAIRS = \
    a-exetim.adb<libgnarl/a-exetim__posix.adb \
    a-exetim.ads<libgnarl/a-exetim__default.ads \
    a-intnam.ads<libgnarl/a-intnam__linux.ads \
+   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
    a-synbar.adb<libgnarl/a-synbar__posix.adb \
    a-synbar.ads<libgnarl/a-synbar__posix.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
*************** ifeq ($(strip $(filter-out powerpc% linu
*** 2082,2102 ****
    s-linux.ads<libgnarl/s-linux.ads \
    s-osinte.adb<libgnarl/s-osinte__posix.adb \
    s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
    $(TRASYM_DWARF_UNIX_PAIRS) \
    s-tsmona.adb<libgnat/s-tsmona__linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
    system.ads<libgnat/system-linux-ppc.ads
  
!   LIBGNAT_TARGET_PAIRS = \
!     $(LIBGNAT_TARGET_PAIRS_COMMON) \
!     s-mudido.adb<libgnarl/s-mudido__affinity.adb \
!     s-osinte.ads<libgnarl/s-osinte__linux.ads \
!     s-osprim.adb<libgnat/s-osprim__posix.adb \
!     s-taprop.adb<libgnarl/s-taprop__linux.adb \
!     s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
!     s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
!     s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads
  
    TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
--- 2347,2376 ----
    s-linux.ads<libgnarl/s-linux.ads \
    s-osinte.adb<libgnarl/s-osinte__posix.adb \
    s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
+   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
+   s-osinte.ads<libgnarl/s-osinte__linux.ads \
+   s-osprim.adb<libgnat/s-osprim__posix.adb \
+   s-taprop.adb<libgnarl/s-taprop__linux.adb \
+   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
+   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
+   s-taspri.ads<libgnarl/s-taspri__posix.ads \
    $(TRASYM_DWARF_UNIX_PAIRS) \
    s-tsmona.adb<libgnat/s-tsmona__linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
    system.ads<libgnat/system-linux-ppc.ads
  
!   ifeq ($(strip $(filter-out powerpc64%,$(target_cpu))),)
!     ifneq ($(strip $(MULTISUBDIR)),/32)
!       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
!       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
!     endif
!   else
!     ifeq ($(strip $(MULTISUBDIR)),/64)
!       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
!       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
!     endif
!   endif
  
    TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
*************** ifeq ($(strip $(filter-out arm% linux-gn
*** 2126,2137 ****
--- 2400,2413 ----
    s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
    s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
    s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
+   $(TRASYM_DWARF_UNIX_PAIRS) \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
    system.ads<libgnat/system-linux-arm.ads
  
    TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
+   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-arm
    THREADSLIB = -lpthread
*************** ifeq ($(strip $(filter-out aarch64% linu
*** 2146,2151 ****
--- 2422,2428 ----
    a-exetim.adb<libgnarl/a-exetim__posix.adb \
    a-exetim.ads<libgnarl/a-exetim__default.ads \
    a-intnam.ads<libgnarl/a-intnam__linux.ads \
+   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
    a-synbar.adb<libgnarl/a-synbar__posix.adb \
    a-synbar.ads<libgnarl/a-synbar__posix.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
*************** ifeq ($(strip $(filter-out aarch64% linu
*** 2162,2171 ****
--- 2439,2450 ----
    s-taspri.ads<libgnarl/s-taspri__posix.ads \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
+   $(GNATRTL_128BIT_PAIRS) \
    system.ads<libgnat/system-linux-arm.ads
  
    TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
+   EXTRA_GNATRTL_NONTASKING_OBJS = $(GNATRTL_128BIT_OBJS)
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
    EH_MECHANISM=-gcc
    THREADSLIB=-lpthread -lrt
*************** ifeq ($(strip $(filter-out aarch64% linu
*** 2174,2183 ****
    LIBRARY_VERSION := $(LIB_VERSION)
  endif
  
! # Sparc Linux
  ifeq ($(strip $(filter-out sparc% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__linux.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
    s-intman.adb<libgnarl/s-intman__posix.adb \
    s-linux.ads<libgnarl/s-linux__sparc.ads \
--- 2453,2463 ----
    LIBRARY_VERSION := $(LIB_VERSION)
  endif
  
! # SPARC Linux
  ifeq ($(strip $(filter-out sparc% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__linux.ads \
+   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
    s-intman.adb<libgnarl/s-intman__posix.adb \
    s-linux.ads<libgnarl/s-linux__sparc.ads \
*************** ifeq ($(strip $(filter-out sparc% linux%
*** 2191,2196 ****
--- 2471,2488 ----
    s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
    system.ads<libgnat/system-linux-sparc.ads
  
+   ifeq ($(strip $(filter-out sparc64 sparcv9,$(target_cpu))),)
+     ifneq ($(strip $(MULTISUBDIR)),/32)
+       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
+     endif
+   else
+     ifeq ($(strip $(MULTISUBDIR)),/64)
+       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
+     endif
+   endif
+ 
    TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
*************** ifeq ($(strip $(filter-out %ia64 linux%,
*** 2289,2295 ****
    a-exetim.adb<libgnarl/a-exetim__posix.adb \
    a-exetim.ads<libgnarl/a-exetim__default.ads \
    a-intnam.ads<libgnarl/a-intnam__linux.ads \
!   a-numaux.ads<libgnat/a-numaux__libc-x86.ads \
    a-synbar.adb<libgnarl/a-synbar__posix.adb \
    a-synbar.ads<libgnarl/a-synbar__posix.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
--- 2581,2587 ----
    a-exetim.adb<libgnarl/a-exetim__posix.adb \
    a-exetim.ads<libgnarl/a-exetim__default.ads \
    a-intnam.ads<libgnarl/a-intnam__linux.ads \
!   a-nuauco.ads<libgnat/a-nuauco__x86.ads \
    a-synbar.adb<libgnarl/a-synbar__posix.adb \
    a-synbar.ads<libgnarl/a-synbar__posix.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
*************** ifeq ($(strip $(filter-out %ia64 linux%,
*** 2308,2318 ****
--- 2600,2612 ----
    s-tsmona.adb<libgnat/s-tsmona__linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
+   $(GNATRTL_128BIT_PAIRS) \
    system.ads<libgnat/system-linux-ia64.ads
  
    TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
+   EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
    EH_MECHANISM=-gcc
    THREADSLIB=-lpthread -lrt
*************** ifeq ($(strip $(filter-out ia64% hp hpux
*** 2337,2345 ****
--- 2631,2641 ----
    $(TRASYM_DWARF_UNIX_PAIRS) \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
+   $(GNATRTL_128BIT_PAIRS) \
    system.ads<libgnat/system-hpux-ia64.ads
  
    EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
+   EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
  
    MISCLIB=
    EH_MECHANISM=-gcc
*************** ifeq ($(strip $(filter-out alpha% linux%
*** 2368,2377 ****
--- 2664,2675 ----
    s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
+   $(GNATRTL_128BIT_PAIRS) \
    system.ads<libgnat/system-linux-alpha.ads
  
    TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
+   EXTRA_GNATRTL_NONTASKING_OBJS = $(GNATRTL_128BIT_OBJS)
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-gcc
    MISCLIB=
*************** ifeq ($(strip $(filter-out %x86_64 linux
*** 2404,2415 ****
--- 2702,2715 ----
    s-tsmona.adb<libgnat/s-tsmona__linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_64_TARGET_PAIRS) \
+   $(GNATRTL_128BIT_PAIRS) \
    system.ads<libgnat/system-linux-x86.ads
  
    TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
    EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
+   EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
  
    EH_MECHANISM=-gcc
*************** endif
*** 2460,2465 ****
--- 2760,2766 ----
  ifeq ($(strip $(filter-out riscv% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__linux.ads \
+   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
    s-intman.adb<libgnarl/s-intman__posix.adb \
    s-linux.ads<libgnarl/s-linux__riscv.ads \
*************** ifeq ($(strip $(filter-out riscv% linux%
*** 2473,2478 ****
--- 2774,2791 ----
    s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
    system.ads<libgnat/system-linux-riscv.ads
  
+   ifeq ($(strip $(filter-out riscv64,$(target_cpu))),)
+     ifneq ($(strip $(MULTISUBDIR)),/lib32)
+       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
+     endif
+   else
+     ifeq ($(strip $(MULTISUBDIR)),/lib64)
+       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
+     endif
+   endif
+ 
    TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
*************** ifeq ($(strip $(filter-out darwin%,$(tar
*** 2506,2516 ****
      ifeq ($(strip $(MULTISUBDIR)),/x86_64)
        SO_OPTS += -m64
        LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
      else
        LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
      endif
  
!     EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
    endif
  
    ifeq ($(strip $(filter-out %x86_64,$(target_cpu))),)
--- 2819,2831 ----
      ifeq ($(strip $(MULTISUBDIR)),/x86_64)
        SO_OPTS += -m64
        LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
+       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
      else
        LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
      endif
  
!     EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
    endif
  
    ifeq ($(strip $(filter-out %x86_64,$(target_cpu))),)
*************** ifeq ($(strip $(filter-out darwin%,$(tar
*** 2527,2550 ****
        LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
      else
        LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
      endif
  
!     EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
      EXTRA_GNATRTL_TASKING_OBJS=a-exetim.o
    endif
  
    ifeq ($(strip $(filter-out powerpc%,$(target_cpu))),)
      LIBGNAT_TARGET_PAIRS += \
        s-intman.adb<libgnarl/s-intman__posix.adb \
        s-osprim.adb<libgnat/s-osprim__posix.adb \
-       a-numaux.ads<libgnat/a-numaux__darwin.ads \
-       a-numaux.adb<libgnat/a-numaux__darwin.adb \
        $(ATOMICS_TARGET_PAIRS) \
        $(ATOMICS_BUILTINS_TARGET_PAIRS) \
        system.ads<libgnat/system-darwin-ppc.ads
  
!     ifeq ($(strip $(MULTISUBDIR)),/ppc64)
          SO_OPTS += -m64
      endif
    endif
  
--- 2842,2877 ----
        LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
      else
        LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
+       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
      endif
  
!     EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
      EXTRA_GNATRTL_TASKING_OBJS=a-exetim.o
    endif
  
    ifeq ($(strip $(filter-out powerpc%,$(target_cpu))),)
      LIBGNAT_TARGET_PAIRS += \
+       a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
        s-intman.adb<libgnarl/s-intman__posix.adb \
        s-osprim.adb<libgnat/s-osprim__posix.adb \
        $(ATOMICS_TARGET_PAIRS) \
        $(ATOMICS_BUILTINS_TARGET_PAIRS) \
        system.ads<libgnat/system-darwin-ppc.ads
  
!     ifeq ($(strip $(filter-out powerpc64,$(target_cpu))),)
!       ifneq ($(strip $(MULTISUBDIR)),/ppc)
!         LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
!         EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
!       else
!         SO_OPTS += -m32
!       endif
!     else
!       ifeq ($(strip $(MULTISUBDIR)),/ppc64)
          SO_OPTS += -m64
+         LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
+         EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
+       endif
      endif
    endif
  
*************** ifeq ($(strip $(filter-out darwin%,$(tar
*** 2561,2571 ****
  
    ifeq ($(strip $(filter-out arm64 aarch64,$(target_cpu))),)
      LIBGNAT_TARGET_PAIRS += \
        s-intman.adb<libgnarl/s-intman__susv3.adb \
        s-osprim.adb<libgnat/s-osprim__darwin.adb \
        $(ATOMICS_TARGET_PAIRS) \
!       $(ATOMICS_BUILTINS_TARGET_PAIRS)
  
      EXTRA_LIBGNAT_OBJS+=sigtramp-ios.o
      EXTRA_LIBGNAT_SRCS+=sigtramp.h
      LIBGNAT_TARGET_PAIRS += \
--- 2888,2901 ----
  
    ifeq ($(strip $(filter-out arm64 aarch64,$(target_cpu))),)
      LIBGNAT_TARGET_PAIRS += \
+       a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
        s-intman.adb<libgnarl/s-intman__susv3.adb \
        s-osprim.adb<libgnat/s-osprim__darwin.adb \
        $(ATOMICS_TARGET_PAIRS) \
!       $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!       $(GNATRTL_128BIT_PAIRS)
  
+     EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
      EXTRA_LIBGNAT_OBJS+=sigtramp-ios.o
      EXTRA_LIBGNAT_SRCS+=sigtramp.h
      LIBGNAT_TARGET_PAIRS += \
*************** ifeq ($(strip $(filter-out linux%,$(targ
*** 2603,2608 ****
--- 2933,2941 ----
      g-sercom.adb<libgnat/g-sercom__linux.adb
  endif
  
+ LIBGNAT_TARGET_PAIRS += \
+   interfac.ads<libgnat/interfac__2020.ads
+ 
  # LIBGNAT_SRCS is the list of all C files (including headers) of the runtime
  # library.  LIBGNAT_OBJS is the list of object files for libgnat.
  # thread.c is special as put into GNATRTL_TASKING_OBJS
*************** LIBGNAT_OBJS = adadecode.o adaint.o argv
*** 2621,2627 ****
  
  LIBGNAT_SRCS = $(patsubst %.o,%.c,$(LIBGNAT_OBJS))			\
    adadecode.h adaint.h env.h gsocket.h raise.h standard.ads.h		\
!   tb-gcc.c runtime.h libgnarl/thread.c $(EXTRA_LIBGNAT_SRCS)
  
  # memtrack.o is special as not put into libgnat.
  GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS) $(GNATRTL_TASKING_OBJS) \
--- 2954,2960 ----
  
  LIBGNAT_SRCS = $(patsubst %.o,%.c,$(LIBGNAT_OBJS))			\
    adadecode.h adaint.h env.h gsocket.h raise.h standard.ads.h		\
!   runtime.h $(EXTRA_LIBGNAT_SRCS)
  
  # memtrack.o is special as not put into libgnat.
  GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS) $(GNATRTL_TASKING_OBJS) \
*************** GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS
*** 2634,2640 ****
  ADA_INCLUDE_SRCS =\
   libgnat/ada.ads libgnat/calendar.ads libgnat/directio.ads libgnat/gnat.ads libgnat/interfac.ads libgnat/ioexcept.ads \
   libgnat/machcode.ads libgnat/text_io.ads libgnat/unchconv.ads libgnat/unchdeal.ads \
!  libgnat/sequenio.ads libgnat/system.ads Makefile.adalib libgnat/memtrack.adb \
   libgnat/a-[a-o]*.adb libgnat/a-[a-o]*.ads \
   libgnat/a-[p-z]*.adb libgnat/a-[p-z]*.ads \
   libgnat/g-[a-o]*.adb libgnat/g-[a-o]*.ads \
--- 2967,2974 ----
  ADA_INCLUDE_SRCS =\
   libgnat/ada.ads libgnat/calendar.ads libgnat/directio.ads libgnat/gnat.ads libgnat/interfac.ads libgnat/ioexcept.ads \
   libgnat/machcode.ads libgnat/text_io.ads libgnat/unchconv.ads libgnat/unchdeal.ads \
!  libgnat/sequenio.ads libgnat/system.ads libgnat/memtrack.adb \
!  libgna*/*.gpr \
   libgnat/a-[a-o]*.adb libgnat/a-[a-o]*.ads \
   libgnat/a-[p-z]*.adb libgnat/a-[p-z]*.ads \
   libgnat/g-[a-o]*.adb libgnat/g-[a-o]*.ads \
*************** setup-rts: force
*** 2680,2686 ****
  	$(MKDIR) $(RTSDIR)
  	$(CHMOD) u+w $(RTSDIR)
  # Copy target independent sources
! 	$(foreach f,$(ADA_INCLUDE_SRCS) $(LIBGNAT_SRCS), \
  	  $(LN_S) $(GNAT_SRC)/$(f) $(RTSDIR) ;) true
  # Remove files not used
  	$(RM) $(patsubst %,$(RTSDIR)/%,$(ADA_EXCLUDE_FILES))
--- 3014,3020 ----
  	$(MKDIR) $(RTSDIR)
  	$(CHMOD) u+w $(RTSDIR)
  # Copy target independent sources
! 	$(foreach f,$(ADA_INCLUDE_SRCS) $(LIBGNAT_SRCS) libgnarl/thread.c, \
  	  $(LN_S) $(GNAT_SRC)/$(f) $(RTSDIR) ;) true
  # Remove files not used
  	$(RM) $(patsubst %,$(RTSDIR)/%,$(ADA_EXCLUDE_FILES))
*************** setup-rts: force
*** 2688,2702 ****
  	$(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
  	                $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR))))
  	for f in $(RTSDIR)/*-*__*.ads $(RTSDIR)/*-*__*.adb; do \
! 	  case "$$f" in \
! 	    $(RTSDIR)/s-stratt__*) ;; \
! 	    *) $(RM) $$f ;; \
! 	  esac; \
  	done
  # Copy new target dependent sources
  	$(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
  	          $(LN_S) $(GNAT_SRC)/$(word 2,$(subst <, ,$(PAIR))) \
  	                $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));)
  
  # Special flags. It is recommended not to change the compilation flags
  # without a careful analysis of the consequences because (part of) the
--- 3022,3052 ----
  	$(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
  	                $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR))))
  	for f in $(RTSDIR)/*-*__*.ads $(RTSDIR)/*-*__*.adb; do \
! 	  $(RM) $$f ; \
  	done
  # Copy new target dependent sources
  	$(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
  	          $(LN_S) $(GNAT_SRC)/$(word 2,$(subst <, ,$(PAIR))) \
  	                $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));)
+ # And finally generate libgnat.lst and libgnarl.lst
+ 	@for f in \
+ 	  $(foreach F,$(GNATRTL_TASKING_OBJS),$(subst $(objext),.ads,$(F))) \
+ 	  $(foreach F,$(GNATRTL_TASKING_OBJS),$(subst $(objext),.adb,$(F))); \
+ 	do \
+ 	  if [ -f $(RTSDIR)/$$f ]; then echo $$f >> $(RTSDIR)/libgnarl.lst; fi \
+ 	done
+ 	@echo thread.c >> $(RTSDIR)/libgnarl.lst
+ 	@for f in \
+ 	  $(foreach F,$(GNATRTL_NONTASKING_OBJS),$(subst $(objext),.ads,$(F))) \
+ 	  $(foreach F,$(GNATRTL_NONTASKING_OBJS),$(subst $(objext),.adb,$(F))); \
+ 	do \
+ 	  if [ -f $(RTSDIR)/$$f ]; then echo $$f >> $(RTSDIR)/libgnat.lst; fi \
+ 	done
+ # s-oscons.ads is generated later, so hardcode it here
+ 	@echo s-oscons.ads >> $(RTSDIR)/libgnat.lst
+ 	@for f in $(LIBGNAT_SRCS); do \
+ 	  echo $$f >> $(RTSDIR)/libgnat.lst; \
+ 	done
  
  # Special flags. It is recommended not to change the compilation flags
  # without a careful analysis of the consequences because (part of) the
*************** a-tags.o  : a-tags.adb a-tags.ads
*** 2773,2775 ****
--- 3123,3132 ----
  s-memory.o  : s-memory.adb s-memory.ads
  	$(ADAC) -c $(ALL_ADAFLAGS) $(NO_SIBLING_ADAFLAGS) $(ADA_INCLUDES) \
  	  $< $(OUTPUT_OPTION)
+ 
+ # Need to keep functions ordered on g-debpoo.o since labels are used to
+ # exclude subprograms from traceback computation.
+ 
+ g-debpoo.o: g-debpoo.adb g-debpoo.ads
+ 	$(ADAC) -c $(ALL_ADAFLAGS) $(NO_REORDER_ADAFLAGS) $(ADA_INCLUDES) \
+ 	  $< $(OUTPUT_OPTION)
diff -Nrcpad gcc-10.3.0/gcc/ada/ada_get_targ.adb gcc-11.1.0/gcc/ada/ada_get_targ.adb
*** gcc-10.3.0/gcc/ada/ada_get_targ.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/ada_get_targ.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Get_Targ is
*** 100,105 ****
--- 100,114 ----
        return 64;
     end Get_Long_Long_Size;
  
+    -----------------------------
+    -- Get_Long_Long_Long_Size --
+    -----------------------------
+ 
+    function Get_Long_Long_Long_Size return Pos is
+    begin
+       return 64;
+    end Get_Long_Long_Long_Size;
+ 
     ----------------------
     -- Get_Pointer_Size --
     ----------------------
*************** package body Get_Targ is
*** 118,132 ****
        return 4;
     end Get_Maximum_Alignment;
  
-    ------------------------------------
-    -- Get_System_Allocator_Alignment --
-    ------------------------------------
- 
-    function Get_System_Allocator_Alignment return Nat is
-    begin
-       return 1;
-    end Get_System_Allocator_Alignment;
- 
     ------------------------
     -- Get_Float_Words_BE --
     ------------------------
--- 127,132 ----
*************** package body Get_Targ is
*** 181,186 ****
--- 181,195 ----
        return 1;
     end Get_Strict_Alignment;
  
+    ------------------------------------
+    -- Get_System_Allocator_Alignment --
+    ------------------------------------
+ 
+    function Get_System_Allocator_Alignment return Nat is
+    begin
+       return 1;
+    end Get_System_Allocator_Alignment;
+ 
     --------------------------------
     -- Get_Double_Float_Alignment --
     --------------------------------
*************** package body Get_Targ is
*** 208,229 ****
        return 64;  -- Can be different on some targets (e.g., AAMP)
     end Get_Max_Unaligned_Field;
  
-    ----------------------
-    -- Digits_From_Size --
-    ----------------------
- 
-    function Digits_From_Size (Size : Pos) return Pos is
-    begin
-       case Size is
-          when  32    => return  6;
-          when  48    => return  9;
-          when  64    => return 15;
-          when  96    => return 18;
-          when 128    => return 18;
-          when others => raise Program_Error;
-       end case;
-    end Digits_From_Size;
- 
     -----------------------------
     -- Register_Back_End_Types --
     -----------------------------
--- 217,222 ----
*************** package body Get_Targ is
*** 251,271 ****
           Alignment => 64);
     end Register_Back_End_Types;
  
-    ---------------------
-    -- Width_From_Size --
-    ---------------------
- 
-    function Width_From_Size  (Size : Pos) return Pos is
-    begin
-       case Size is
-          when  8     => return  4;
-          when 16     => return  6;
-          when 32     => return 11;
-          when 64     => return 21;
-          when others => raise Program_Error;
-       end case;
-    end Width_From_Size;
- 
     ------------------------------
     -- Get_Back_End_Config_File --
     ------------------------------
--- 244,249 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/adabkend.adb gcc-11.1.0/gcc/ada/adabkend.adb
*** gcc-10.3.0/gcc/ada/adabkend.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/adabkend.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Adabkend is
*** 189,195 ****
           elsif Switch_Chars (First .. Last) = "fno-inline" then
              Lib.Store_Compilation_Switch (Switch_Chars);
              Opt.Disable_FE_Inline := True;
-             Opt.Disable_FE_Inline_Always := True;
              return;
  
           --  Similar processing for -fpreserve-control-flow
--- 189,194 ----
*************** package body Adabkend is
*** 219,224 ****
--- 218,226 ----
                 end case;
              end if;
  
+          elsif Switch_Chars (First .. Last) = "S" then
+             Generate_Asm := True;
+ 
           --  Ignore all other back-end switches
  
           elsif Is_Back_End_Switch (Switch_Chars) then
diff -Nrcpad gcc-10.3.0/gcc/ada/adabkend.ads gcc-11.1.0/gcc/ada/adabkend.ads
*** gcc-10.3.0/gcc/ada/adabkend.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/adabkend.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/adadecode.c gcc-11.1.0/gcc/ada/adadecode.c
*** gcc-10.3.0/gcc/ada/adadecode.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/adadecode.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 2001-2019, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 2001-2020, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/adadecode.h gcc-11.1.0/gcc/ada/adadecode.h
*** gcc-10.3.0/gcc/ada/adadecode.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/adadecode.h	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *           Copyright (C) 2001-2019, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *           Copyright (C) 2001-2020, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/adaint.c gcc-11.1.0/gcc/ada/adaint.c
*** gcc-10.3.0/gcc/ada/adaint.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/adaint.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 60,65 ****
--- 60,66 ----
  /* We want to use the POSIX variants of include files.  */
  #define POSIX
  #include "vxWorks.h"
+ #include <sys/time.h>
  
  #if defined (__mips_vxworks)
  #include "cacheLib.h"
***************
*** 144,149 ****
--- 145,157 ----
  #include "version.h"
  #endif
  
+ /* limits.h is needed for LLONG_MIN.  */
+ #ifdef __cplusplus
+ #include <climits>
+ #else
+ #include <limits.h>
+ #endif
+ 
  #ifdef __cplusplus
  extern "C" {
  #endif
*************** UINT __gnat_current_ccs_encoding;
*** 236,241 ****
--- 244,256 ----
  
  #include "adaint.h"
  
+ int __gnat_in_child_after_fork = 0;
+ 
+ #if defined (__APPLE__) && defined (st_mtime)
+ #define st_atim st_atimespec
+ #define st_mtim st_mtimespec
+ #endif
+ 
  /* Define symbols O_BINARY and O_TEXT as harmless zeroes if they are not
     defined in the current system. On DOS-like systems these flags control
     whether the file is opened/created in text-translation mode (CR/LF in
*************** UINT __gnat_current_ccs_encoding;
*** 264,269 ****
--- 279,287 ----
  
  #ifndef DIR_SEPARATOR
  #define DIR_SEPARATOR '/'
+ #define IS_DIRECTORY_SEPARATOR(c) ((c) == DIR_SEPARATOR)
+ #else
+ #define IS_DIRECTORY_SEPARATOR(c) ((c) == '/' || (c) == DIR_SEPARATOR)
  #endif
  
  /* Check for cross-compilation.  */
*************** __gnat_file_time_fd (int fd)
*** 1471,1476 ****
--- 1489,1572 ----
     return __gnat_file_time_fd_attr (fd, &attr);
  }
  
+ extern long long __gnat_file_time(char* name)
+ {
+   long long result;
+ 
+   if (name == NULL) {
+     return LLONG_MIN;
+   }
+   /* Number of seconds between <Jan 1st 1970> and <Jan 1st 2150>. */
+   static const long long ada_epoch_offset = (136 * 365 + 44 * 366) * 86400LL;
+ #if defined(_WIN32)
+ 
+   /* Number of 100 nanoseconds between <Jan 1st 1601> and <Jan 1st 2150>. */
+   static const long long w32_epoch_offset =
+   (11644473600LL + ada_epoch_offset) * 1E7;
+ 
+   WIN32_FILE_ATTRIBUTE_DATA fad;
+   union
+   {
+     FILETIME ft_time;
+     long long ll_time;
+   } t_write;
+ 
+   if (!GetFileAttributesExA(name, GetFileExInfoStandard, &fad)) {
+     return LLONG_MIN;
+   }
+ 
+   t_write.ft_time = fad.ftLastWriteTime;
+ 
+ #if defined(__GNUG__) && __GNUG__ <= 4
+   result = (t_write.ll_time - w32_epoch_offset) * 100;
+ #else
+   /* Next code similar to (t_write.ll_time - w32_epoch_offset) * 100
+      but on overflow returns LLONG_MIN value. */
+ 
+   if (__builtin_ssubll_overflow(t_write.ll_time, w32_epoch_offset, &result)) {
+     return LLONG_MIN;
+   }
+ 
+   if (__builtin_smulll_overflow(result, 100, &result)) {
+     return LLONG_MIN;
+   }
+ #endif
+ 
+ #else
+ 
+   struct stat sb;
+   if (stat(name, &sb) != 0) {
+     return LLONG_MIN;
+   }
+ 
+ #if defined(__GNUG__) && __GNUG__ <= 4
+     result = (sb.st_mtime - ada_epoch_offset) * 1E9;
+ #if defined(st_mtime)
+     result += sb.st_mtim.tv_nsec;
+ #endif
+ #else
+   /* Next code similar to
+      (sb.st_mtime - ada_epoch_offset) * 1E9 + sb.st_mtim.tv_nsec
+      but on overflow returns LLONG_MIN value. */
+ 
+   if (__builtin_ssubll_overflow(sb.st_mtime, ada_epoch_offset, &result)) {
+     return LLONG_MIN;
+   }
+ 
+   if (__builtin_smulll_overflow(result, 1E9, &result)) {
+     return LLONG_MIN;
+   }
+ 
+ #if defined(st_mtime)
+   if (__builtin_saddll_overflow(result, sb.st_mtim.tv_nsec, &result)) {
+     return LLONG_MIN;
+   }
+ #endif
+ #endif
+ #endif
+   return result;
+ }
+ 
  /* Set the file time stamp.  */
  
  void
*************** __gnat_is_absolute_path (char *name, int
*** 1709,1717 ****
    return 0;
  #else
    return (length != 0) &&
!      (*name == '/' || *name == DIR_SEPARATOR
  #if defined (WINNT) || defined(__DJGPP__)
!       || (length > 1 && ISALPHA (name[0]) && name[1] == ':')
  #endif
  	  );
  #endif
--- 1805,1814 ----
    return 0;
  #else
    return (length != 0) &&
!      (IS_DIRECTORY_SEPARATOR(*name)
  #if defined (WINNT) || defined(__DJGPP__)
!       || (length > 2 && ISALPHA (name[0]) && name[1] == ':'
!           && IS_DIRECTORY_SEPARATOR(name[2]))
  #endif
  	  );
  #endif
*************** __gnat_portable_spawn (char *args[] ATTR
*** 2326,2331 ****
--- 2423,2429 ----
    if (pid == 0)
      {
        /* The child. */
+       __gnat_in_child_after_fork = 1;
        if (execv (args[0], MAYBE_TO_PTR32 (args)) != 0)
  	_exit (1);
      }
*************** __gnat_number_of_cpus (void)
*** 2388,2396 ****
  {
    int cores = 1;
  
! #if defined (__linux__) || defined (__sun__) || defined (_AIX) \
!   || defined (__APPLE__) || defined (__FreeBSD__) || defined (__OpenBSD__) \
!   || defined (__DragonFly__) || defined (__NetBSD__)
    cores = (int) sysconf (_SC_NPROCESSORS_ONLN);
  
  #elif defined (__QNX__)
--- 2486,2492 ----
  {
    int cores = 1;
  
! #ifdef _SC_NPROCESSORS_ONLN
    cores = (int) sysconf (_SC_NPROCESSORS_ONLN);
  
  #elif defined (__QNX__)
*************** __gnat_locate_file_with_predicate (char
*** 2845,2851 ****
  
    /* If file_name include directory separator(s), try it first as
       a path name relative to the current directory */
!   for (ptr = file_name; *ptr && *ptr != '/' && *ptr != DIR_SEPARATOR; ptr++)
      ;
  
    if (*ptr != 0)
--- 2941,2947 ----
  
    /* If file_name include directory separator(s), try it first as
       a path name relative to the current directory */
!   for (ptr = file_name; *ptr && !IS_DIRECTORY_SEPARATOR(*ptr); ptr++)
      ;
  
    if (*ptr != 0)
*************** __gnat_locate_file_with_predicate (char
*** 2886,2892 ****
        if (*ptr == '"')
  	ptr--;
  
!       if (*ptr != '/' && *ptr != DIR_SEPARATOR)
          *++ptr = DIR_SEPARATOR;
  
        strcpy (++ptr, file_name);
--- 2982,2988 ----
        if (*ptr == '"')
  	ptr--;
  
!       if (!IS_DIRECTORY_SEPARATOR(*ptr))
          *++ptr = DIR_SEPARATOR;
  
        strcpy (++ptr, file_name);
*************** __gnat_copy_attribs (char *from ATTRIBUT
*** 3169,3189 ****
  
  #else
    GNAT_STRUCT_STAT fbuf;
-   struct utimbuf tbuf;
  
    if (GNAT_STAT (from, &fbuf) == -1) {
       return -1;
    }
  
    /* Do we need to copy timestamp ? */
    if (mode != 2) {
!      tbuf.actime = fbuf.st_atime;
!      tbuf.modtime = fbuf.st_mtime;
  
!      if (utime (to, &tbuf) == -1) {
          return -1;
       }
    }
  
    /* Do we need to copy file permissions ? */
    if (mode != 0 && (chmod (to, fbuf.st_mode) == -1)) {
--- 3265,3323 ----
  
  #else
    GNAT_STRUCT_STAT fbuf;
  
    if (GNAT_STAT (from, &fbuf) == -1) {
       return -1;
    }
  
+ #if (defined (__vxworks) && _WRS_VXWORKS_MAJOR < 7)
+ 
+   /* VxWorks prior to 7 only has utime.  */
+ 
+   /* Do we need to copy the timestamp ?  */
+   if (mode != 2) {
+     struct utimbuf tbuf;
+ 
+     tbuf.actime = fbuf.st_atime;
+     tbuf.modtime = fbuf.st_mtime;
+ 
+     if (utime (to, &tbuf) == -1)
+       return -1;
+   }
+ 
+ #elif _POSIX_C_SOURCE >= 200809L
+   struct timespec tbuf[2];
+ 
+   if (mode != 2) {
+      tbuf[0] = fbuf.st_atim;
+      tbuf[1] = fbuf.st_mtim;
+ 
+      if (utimensat (AT_FDCWD, to, tbuf, 0) == -1) {
+         return -1;
+      }
+   }
+ 
+ #else
+   struct timeval tbuf[2];
    /* Do we need to copy timestamp ? */
+ 
    if (mode != 2) {
!      tbuf[0].tv_sec  = fbuf.st_atime;
!      tbuf[1].tv_sec  = fbuf.st_mtime;
  
!      #if defined(st_mtime)
!      tbuf[0].tv_usec = fbuf.st_atim.tv_nsec / 1000;
!      tbuf[1].tv_usec = fbuf.st_mtim.tv_nsec / 1000;
!      #else
!      tbuf[0].tv_usec = 0;
!      tbuf[1].tv_usec = 0;
!      #endif
! 
!      if (utimes (to, tbuf) == -1) {
          return -1;
       }
    }
+ #endif
  
    /* Do we need to copy file permissions ? */
    if (mode != 0 && (chmod (to, fbuf.st_mode) == -1)) {
diff -Nrcpad gcc-10.3.0/gcc/ada/adaint.h gcc-11.1.0/gcc/ada/adaint.h
*** gcc-10.3.0/gcc/ada/adaint.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/adaint.h	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** struct file_attributes {
*** 139,145 ****
   * fit the above struct on any system)
   */
  
! extern int    __gnat_max_path_len;
  extern OS_Time __gnat_current_time		   (void);
  extern void   __gnat_current_time_string           (char *);
  extern void   __gnat_to_gm_time			   (OS_Time *, int *, int *,
--- 139,153 ----
   * fit the above struct on any system)
   */
  
! extern int  __gnat_max_path_len;
! extern int  __gnat_in_child_after_fork;
! /* This flag expresses the state when the fork call just returned zero result,
!  * i.e. when the new born child process is created and the new executable is
!  * not loaded yet. It is used to e.g. disable tracing memory
!  * allocation/deallocation in memtrack.adb just after fork returns in the child
!  * process to avoid both parent and child writing to the same gmem.out file
!  * simultaneously */
! 
  extern OS_Time __gnat_current_time		   (void);
  extern void   __gnat_current_time_string           (char *);
  extern void   __gnat_to_gm_time			   (OS_Time *, int *, int *,
*************** extern char  *mktemp				   (char *);
*** 282,290 ****
  extern void   __gnat_set_exit_status		   (int);
  
  extern int    __gnat_expect_fork		   (void);
! extern void   __gnat_expect_portable_execvp	   (char *, char *[]);
  extern int    __gnat_pipe			   (int *);
! extern int    __gnat_expect_poll		   (int *, int, int, int *);
  extern void   __gnat_set_binary_mode		   (int);
  extern void   __gnat_set_text_mode		   (int);
  extern void   __gnat_set_mode			   (int,int);
--- 290,299 ----
  extern void   __gnat_set_exit_status		   (int);
  
  extern int    __gnat_expect_fork		   (void);
! extern void   __gnat_expect_portable_execvp	   (int *, char *, char *[]);
  extern int    __gnat_pipe			   (int *);
! extern int    __gnat_expect_poll		   (int *, int, int, int *,
! 						    int *);
  extern void   __gnat_set_binary_mode		   (int);
  extern void   __gnat_set_text_mode		   (int);
  extern void   __gnat_set_mode			   (int,int);
diff -Nrcpad gcc-10.3.0/gcc/ada/affinity.c gcc-11.1.0/gcc/ada/affinity.c
*** gcc-10.3.0/gcc/ada/affinity.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/affinity.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2005-2019, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2005-2020, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/ali-util.adb gcc-11.1.0/gcc/ada/ali-util.adb
*** gcc-10.3.0/gcc/ada/ali-util.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/ali-util.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Osint;   use Osint;
*** 31,37 ****
  with Scans;   use Scans;
  with Scng;
  with Sinput.C;
- with Snames;  use Snames;
  with Stringt;
  with Styleg;
  
--- 31,36 ----
*************** package body ALI.Util is
*** 154,168 ****
  
        Scanner.Initialize_Scanner (Source_Index);
  
-       --  Make sure that the project language reserved words are not
-       --  recognized as reserved words, but as identifiers. The byte info for
-       --  those names have been set if we are in gnatmake.
- 
-       Set_Name_Table_Byte (Name_Project,          0);
-       Set_Name_Table_Byte (Name_Extends,          0);
-       Set_Name_Table_Byte (Name_External,         0);
-       Set_Name_Table_Byte (Name_External_As_List, 0);
- 
        --  Scan the complete file to compute its checksum
  
        loop
--- 153,158 ----
*************** package body ALI.Util is
*** 179,185 ****
  
     function Hash (F : File_Name_Type) return Header_Num is
     begin
!       return Header_Num (Int (F) rem Header_Num'Range_Length);
     end Hash;
  
     ---------------------------
--- 169,175 ----
  
     function Hash (F : File_Name_Type) return Header_Num is
     begin
!       return Header_Num (Int (F) mod Header_Num'Range_Length);
     end Hash;
  
     ---------------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/ali-util.ads gcc-11.1.0/gcc/ada/ali-util.ads
*** gcc-10.3.0/gcc/ada/ali-util.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/ali-util.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/ali.adb gcc-11.1.0/gcc/ada/ali.adb
*** gcc-10.3.0/gcc/ada/ali.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/ali.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body ALI is
*** 242,272 ****
  
     --  The following variable records which characters currently are used as
     --  line type markers in the ALI file. This is used in Scan_ALI to detect
!    --  (or skip) invalid lines. The following letters are still available:
!    --
!    --    B F H J K O Q Z
  
     Known_ALI_Lines : constant array (Character range 'A' .. 'Z') of Boolean :=
!      ('A'    => True,  --  argument
!       'C'    => True,  --  SCO information
!       'D'    => True,  --  dependency
!       'E'    => True,  --  external
!       'G'    => True,  --  invocation graph
!       'I'    => True,  --  interrupt
!       'L'    => True,  --  linker option
!       'M'    => True,  --  main program
!       'N'    => True,  --  notes
!       'P'    => True,  --  program
!       'R'    => True,  --  restriction
!       'S'    => True,  --  specific dispatching
!       'T'    => True,  --  task stack information
!       'U'    => True,  --  unit
!       'V'    => True,  --  version
!       'W'    => True,  --  with
!       'X'    => True,  --  xref
!       'Y'    => True,  --  limited_with
!       'Z'    => True,  --  implicit with from instantiation
!       others => False);
  
     ------------------------------
     -- Add_Invocation_Construct --
--- 242,274 ----
  
     --  The following variable records which characters currently are used as
     --  line type markers in the ALI file. This is used in Scan_ALI to detect
!    --  (or skip) invalid lines.
  
     Known_ALI_Lines : constant array (Character range 'A' .. 'Z') of Boolean :=
!      ('A' | --  argument
!       'C' | --  SCO information
!       'D' | --  dependency
!       'E' | --  external
!       'G' | --  invocation graph
!       'I' | --  interrupt
!       'L' | --  linker option
!       'M' | --  main program
!       'N' | --  notes
!       'P' | --  program
!       'R' | --  restriction
!       'S' | --  specific dispatching
!       'T' | --  task stack information
!       'U' | --  unit
!       'V' | --  version
!       'W' | --  with
!       'X' | --  xref
!       'Y' | --  limited_with
!       'Z'   --  implicit with from instantiation
!           => True,
! 
!       --  Still available:
! 
!       'B' | 'F' | 'H' | 'J' | 'K' | 'O' | 'Q' => False);
  
     ------------------------------
     -- Add_Invocation_Construct --
*************** package body ALI is
*** 588,594 ****
        --         scope__name__line_column__locations
        --
        --    * The String is converted into a Name_Id
!       --    * The Name_Id is used as the hash
  
        Append (Buffer, IS_Rec.Scope);
        Append (Buffer, "__");
--- 590,597 ----
        --         scope__name__line_column__locations
        --
        --    * The String is converted into a Name_Id
!       --
!       --    * The absolute value of the Name_Id is used as the hash
  
        Append (Buffer, IS_Rec.Scope);
        Append (Buffer, "__");
*************** package body ALI is
*** 604,610 ****
        end if;
  
        IS_Nam := Name_Find (Buffer);
!       return Bucket_Range_Type (IS_Nam);
     end Hash;
  
     --------------------
--- 607,613 ----
        end if;
  
        IS_Nam := Name_Find (Buffer);
!       return Bucket_Range_Type (abs IS_Nam);
     end Hash;
  
     --------------------
*************** package body ALI is
*** 3811,3825 ****
           return No_ALI_Id;
     end Scan_ALI;
  
!    -----------
!    -- Scope --
!    -----------
  
!    function Scope (IS_Id : Invocation_Signature_Id) return Name_Id is
     begin
        pragma Assert (Present (IS_Id));
        return Invocation_Signatures.Table (IS_Id).Scope;
!    end Scope;
  
     ---------
     -- SEq --
--- 3814,3828 ----
           return No_ALI_Id;
     end Scan_ALI;
  
!    --------------
!    -- IS_Scope --
!    --------------
  
!    function IS_Scope (IS_Id : Invocation_Signature_Id) return Name_Id is
     begin
        pragma Assert (Present (IS_Id));
        return Invocation_Signatures.Table (IS_Id).Scope;
!    end IS_Scope;
  
     ---------
     -- SEq --
diff -Nrcpad gcc-10.3.0/gcc/ada/ali.ads gcc-11.1.0/gcc/ada/ali.ads
*** gcc-10.3.0/gcc/ada/ali.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/ali.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package ALI is
*** 1350,1357 ****
     pragma Inline (Name);
     --  Obtain the name of invocation signature IS_Id
  
!    function Scope (IS_Id : Invocation_Signature_Id) return Name_Id;
!    pragma Inline (Scope);
     --  Obtain the scope of invocation signature IS_Id
  
     procedure Set_Invocation_Graph_Encoding
--- 1350,1357 ----
     pragma Inline (Name);
     --  Obtain the name of invocation signature IS_Id
  
!    function IS_Scope (IS_Id : Invocation_Signature_Id) return Name_Id;
!    pragma Inline (IS_Scope);
     --  Obtain the scope of invocation signature IS_Id
  
     procedure Set_Invocation_Graph_Encoding
diff -Nrcpad gcc-10.3.0/gcc/ada/alloc.ads gcc-11.1.0/gcc/ada/alloc.ads
*** gcc-10.3.0/gcc/ada/alloc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/alloc.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/argv-lynxos178-raven-cert.c gcc-11.1.0/gcc/ada/argv-lynxos178-raven-cert.c
*** gcc-10.3.0/gcc/ada/argv-lynxos178-raven-cert.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/argv-lynxos178-raven-cert.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *         Copyright (C) 1992-2019, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *         Copyright (C) 1992-2020, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/argv.c gcc-11.1.0/gcc/ada/argv.c
*** gcc-10.3.0/gcc/ada/argv.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/argv.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *         Copyright (C) 1992-2019, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *         Copyright (C) 1992-2020, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/aspects.adb gcc-11.1.0/gcc/ada/aspects.adb
*** gcc-10.3.0/gcc/ada/aspects.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/aspects.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** with Atree;    use Atree;
*** 33,39 ****
  with Einfo;    use Einfo;
  with Nlists;   use Nlists;
  with Sinfo;    use Sinfo;
- with Tree_IO;  use Tree_IO;
  
  with GNAT.HTable;
  
--- 27,32 ----
*************** package body Aspects is
*** 51,56 ****
--- 44,50 ----
        Aspect_Discard_Names           => True,
        Aspect_Independent_Components  => True,
        Aspect_Iterator_Element        => True,
+       Aspect_Stable_Properties       => True,
        Aspect_Type_Invariant          => True,
        Aspect_Unchecked_Union         => True,
        Aspect_Variable_Indexing       => True,
*************** package body Aspects is
*** 70,85 ****
        Aspect_Variable_Indexing    => True,
        others                      => False);
  
-    procedure Set_Aspect_Specifications_No_Check (N : Node_Id; L : List_Id);
-    --  Same as Set_Aspect_Specifications, but does not contain the assertion
-    --  that checks that N does not already have aspect specifications. This
-    --  subprogram is supposed to be used as a part of Tree_Read. When reading
-    --  tree, first read nodes with their basic properties (as Atree.Tree_Read),
-    --  this includes reading the Has_Aspects flag for each node, then we reed
-    --  all the list tables and only after that we call Tree_Read for Aspects.
-    --  That is, when reading the tree, the list of aspects is attached to the
-    --  node that already has Has_Aspects flag set ON.
- 
     ------------------------------------------
     -- Hash Table for Aspect Specifications --
     ------------------------------------------
--- 64,69 ----
*************** package body Aspects is
*** 153,164 ****
        --  The routine should be invoked on a body [stub] with aspects
  
        pragma Assert (Has_Aspects (N));
!       pragma Assert (Nkind (N) in N_Body_Stub
!                        or else Nkind_In (N, N_Entry_Body,
!                                             N_Package_Body,
!                                             N_Protected_Body,
!                                             N_Subprogram_Body,
!                                             N_Task_Body));
  
        --  Look through all aspects and see whether they can be applied to a
        --  body [stub].
--- 137,145 ----
        --  The routine should be invoked on a body [stub] with aspects
  
        pragma Assert (Has_Aspects (N));
!       pragma Assert
!         (Nkind (N) in N_Body_Stub      | N_Entry_Body      | N_Package_Body |
!                       N_Protected_Body | N_Subprogram_Body | N_Task_Body);
  
        --  Look through all aspects and see whether they can be applied to a
        --  body [stub].
*************** package body Aspects is
*** 205,211 ****
     -- Find_Aspect --
     -----------------
  
!    function Find_Aspect (Id : Entity_Id; A : Aspect_Id) return Node_Id is
        Decl  : Node_Id;
        Item  : Node_Id;
        Owner : Entity_Id;
--- 186,196 ----
     -- Find_Aspect --
     -----------------
  
!    function Find_Aspect
!      (Id            : Entity_Id;
!       A             : Aspect_Id;
!       Class_Present : Boolean := False) return Node_Id
!    is
        Decl  : Node_Id;
        Item  : Node_Id;
        Owner : Entity_Id;
*************** package body Aspects is
*** 239,244 ****
--- 224,230 ----
        while Present (Item) loop
           if Nkind (Item) = N_Aspect_Specification
             and then Get_Aspect_Id (Item) = A
+            and then Class_Present = Sinfo.Class_Present (Item)
           then
              return Item;
           end if;
*************** package body Aspects is
*** 261,267 ****
        if Permits_Aspect_Specifications (Decl) then
           Spec := First (Aspect_Specifications (Decl));
           while Present (Spec) loop
!             if Get_Aspect_Id (Spec) = A then
                 return Spec;
              end if;
  
--- 247,255 ----
        if Permits_Aspect_Specifications (Decl) then
           Spec := First (Aspect_Specifications (Decl));
           while Present (Spec) loop
!             if Get_Aspect_Id (Spec) = A
!               and then Class_Present = Sinfo.Class_Present (Spec)
!             then
                 return Spec;
              end if;
  
*************** package body Aspects is
*** 280,289 ****
     --------------------------
  
     function Find_Value_Of_Aspect
!      (Id : Entity_Id;
!       A  : Aspect_Id) return Node_Id
     is
!       Spec : constant Node_Id := Find_Aspect (Id, A);
  
     begin
        if Present (Spec) then
--- 268,279 ----
     --------------------------
  
     function Find_Value_Of_Aspect
!      (Id            : Entity_Id;
!       A             : Aspect_Id;
!       Class_Present : Boolean := False) return Node_Id
     is
!       Spec : constant Node_Id := Find_Aspect (Id, A,
!                                               Class_Present => Class_Present);
  
     begin
        if Present (Spec) then
*************** package body Aspects is
*** 316,324 ****
     -- Has_Aspect --
     ----------------
  
!    function Has_Aspect (Id : Entity_Id; A : Aspect_Id) return Boolean is
     begin
!       return Present (Find_Aspect (Id, A));
     end Has_Aspect;
  
     ------------------
--- 306,318 ----
     -- Has_Aspect --
     ----------------
  
!    function Has_Aspect
!      (Id            : Entity_Id;
!       A             : Aspect_Id;
!       Class_Present : Boolean := False) return Boolean
!    is
     begin
!       return Present (Find_Aspect (Id, A, Class_Present => Class_Present));
     end Has_Aspect;
  
     ------------------
*************** package body Aspects is
*** 412,420 ****
              --  Note: It is better to use Is_Single_Concurrent_Type_Declaration
              --  here, but Aspects and Sem_Util have incompatible licenses.
  
!             elsif Nkind_In
!                     (Original_Node (From), N_Single_Protected_Declaration,
!                                            N_Single_Task_Declaration)
              then
                 Asp_Id := Get_Aspect_Id (Asp);
  
--- 406,413 ----
              --  Note: It is better to use Is_Single_Concurrent_Type_Declaration
              --  here, but Aspects and Sem_Util have incompatible licenses.
  
!             elsif Nkind (Original_Node (From)) in
!                     N_Single_Protected_Declaration | N_Single_Task_Declaration
              then
                 Asp_Id := Get_Aspect_Id (Asp);
  
*************** package body Aspects is
*** 470,475 ****
--- 463,469 ----
        N_Package_Instantiation                  => True,
        N_Package_Specification                  => True,
        N_Package_Renaming_Declaration           => True,
+       N_Parameter_Specification                => True,
        N_Private_Extension_Declaration          => True,
        N_Private_Type_Declaration               => True,
        N_Procedure_Instantiation                => True,
*************** package body Aspects is
*** 511,646 ****
  
     --  Table used for Same_Aspect, maps aspect to canonical aspect
  
!    Canonical_Aspect : constant array (Aspect_Id) of Aspect_Id :=
!    (No_Aspect                           => No_Aspect,
!     Aspect_Abstract_State               => Aspect_Abstract_State,
!     Aspect_Address                      => Aspect_Address,
!     Aspect_Alignment                    => Aspect_Alignment,
!     Aspect_All_Calls_Remote             => Aspect_All_Calls_Remote,
!     Aspect_Annotate                     => Aspect_Annotate,
!     Aspect_Async_Readers                => Aspect_Async_Readers,
!     Aspect_Async_Writers                => Aspect_Async_Writers,
!     Aspect_Asynchronous                 => Aspect_Asynchronous,
!     Aspect_Atomic                       => Aspect_Atomic,
!     Aspect_Atomic_Components            => Aspect_Atomic_Components,
!     Aspect_Attach_Handler               => Aspect_Attach_Handler,
!     Aspect_Bit_Order                    => Aspect_Bit_Order,
!     Aspect_Component_Size               => Aspect_Component_Size,
!     Aspect_Constant_After_Elaboration   => Aspect_Constant_After_Elaboration,
!     Aspect_Constant_Indexing            => Aspect_Constant_Indexing,
!     Aspect_Contract_Cases               => Aspect_Contract_Cases,
!     Aspect_Convention                   => Aspect_Convention,
!     Aspect_CPU                          => Aspect_CPU,
!     Aspect_Default_Component_Value      => Aspect_Default_Component_Value,
!     Aspect_Default_Initial_Condition    => Aspect_Default_Initial_Condition,
!     Aspect_Default_Iterator             => Aspect_Default_Iterator,
!     Aspect_Default_Storage_Pool         => Aspect_Default_Storage_Pool,
!     Aspect_Default_Value                => Aspect_Default_Value,
!     Aspect_Depends                      => Aspect_Depends,
!     Aspect_Dimension                    => Aspect_Dimension,
!     Aspect_Dimension_System             => Aspect_Dimension_System,
!     Aspect_Disable_Controlled           => Aspect_Disable_Controlled,
!     Aspect_Discard_Names                => Aspect_Discard_Names,
!     Aspect_Dispatching_Domain           => Aspect_Dispatching_Domain,
!     Aspect_Dynamic_Predicate            => Aspect_Predicate,
!     Aspect_Effective_Reads              => Aspect_Effective_Reads,
!     Aspect_Effective_Writes             => Aspect_Effective_Writes,
!     Aspect_Elaborate_Body               => Aspect_Elaborate_Body,
!     Aspect_Export                       => Aspect_Export,
!     Aspect_Extensions_Visible           => Aspect_Extensions_Visible,
!     Aspect_External_Name                => Aspect_External_Name,
!     Aspect_External_Tag                 => Aspect_External_Tag,
!     Aspect_Favor_Top_Level              => Aspect_Favor_Top_Level,
!     Aspect_Ghost                        => Aspect_Ghost,
!     Aspect_Global                       => Aspect_Global,
!     Aspect_Implicit_Dereference         => Aspect_Implicit_Dereference,
!     Aspect_Import                       => Aspect_Import,
!     Aspect_Independent                  => Aspect_Independent,
!     Aspect_Independent_Components       => Aspect_Independent_Components,
!     Aspect_Inline                       => Aspect_Inline,
!     Aspect_Inline_Always                => Aspect_Inline,
!     Aspect_Initial_Condition            => Aspect_Initial_Condition,
!     Aspect_Initializes                  => Aspect_Initializes,
!     Aspect_Input                        => Aspect_Input,
!     Aspect_Interrupt_Handler            => Aspect_Interrupt_Handler,
!     Aspect_Interrupt_Priority           => Aspect_Priority,
!     Aspect_Invariant                    => Aspect_Invariant,
!     Aspect_Iterable                     => Aspect_Iterable,
!     Aspect_Iterator_Element             => Aspect_Iterator_Element,
!     Aspect_Link_Name                    => Aspect_Link_Name,
!     Aspect_Linker_Section               => Aspect_Linker_Section,
!     Aspect_Lock_Free                    => Aspect_Lock_Free,
!     Aspect_Machine_Radix                => Aspect_Machine_Radix,
!     Aspect_Max_Entry_Queue_Depth        => Aspect_Max_Entry_Queue_Depth,
!     Aspect_Max_Entry_Queue_Length       => Aspect_Max_Entry_Queue_Length,
!     Aspect_Max_Queue_Length             => Aspect_Max_Queue_Length,
!     Aspect_No_Caching                   => Aspect_No_Caching,
!     Aspect_No_Elaboration_Code_All      => Aspect_No_Elaboration_Code_All,
!     Aspect_No_Inline                    => Aspect_No_Inline,
!     Aspect_No_Return                    => Aspect_No_Return,
!     Aspect_No_Tagged_Streams            => Aspect_No_Tagged_Streams,
!     Aspect_Obsolescent                  => Aspect_Obsolescent,
!     Aspect_Object_Size                  => Aspect_Object_Size,
!     Aspect_Output                       => Aspect_Output,
!     Aspect_Pack                         => Aspect_Pack,
!     Aspect_Part_Of                      => Aspect_Part_Of,
!     Aspect_Persistent_BSS               => Aspect_Persistent_BSS,
!     Aspect_Post                         => Aspect_Post,
!     Aspect_Postcondition                => Aspect_Post,
!     Aspect_Pre                          => Aspect_Pre,
!     Aspect_Precondition                 => Aspect_Pre,
!     Aspect_Predicate                    => Aspect_Predicate,
!     Aspect_Predicate_Failure            => Aspect_Predicate_Failure,
!     Aspect_Preelaborate                 => Aspect_Preelaborate,
!     Aspect_Preelaborable_Initialization => Aspect_Preelaborable_Initialization,
!     Aspect_Priority                     => Aspect_Priority,
!     Aspect_Pure                         => Aspect_Pure,
!     Aspect_Pure_Function                => Aspect_Pure_Function,
!     Aspect_Refined_Depends              => Aspect_Refined_Depends,
!     Aspect_Refined_Global               => Aspect_Refined_Global,
!     Aspect_Refined_Post                 => Aspect_Refined_Post,
!     Aspect_Refined_State                => Aspect_Refined_State,
!     Aspect_Remote_Access_Type           => Aspect_Remote_Access_Type,
!     Aspect_Remote_Call_Interface        => Aspect_Remote_Call_Interface,
!     Aspect_Remote_Types                 => Aspect_Remote_Types,
!     Aspect_Read                         => Aspect_Read,
!     Aspect_Relative_Deadline            => Aspect_Relative_Deadline,
!     Aspect_Scalar_Storage_Order         => Aspect_Scalar_Storage_Order,
!     Aspect_Secondary_Stack_Size         => Aspect_Secondary_Stack_Size,
!     Aspect_Shared                       => Aspect_Atomic,
!     Aspect_Shared_Passive               => Aspect_Shared_Passive,
!     Aspect_Simple_Storage_Pool          => Aspect_Simple_Storage_Pool,
!     Aspect_Simple_Storage_Pool_Type     => Aspect_Simple_Storage_Pool_Type,
!     Aspect_Size                         => Aspect_Size,
!     Aspect_Small                        => Aspect_Small,
!     Aspect_SPARK_Mode                   => Aspect_SPARK_Mode,
!     Aspect_Static_Predicate             => Aspect_Predicate,
!     Aspect_Storage_Pool                 => Aspect_Storage_Pool,
!     Aspect_Storage_Size                 => Aspect_Storage_Size,
!     Aspect_Stream_Size                  => Aspect_Stream_Size,
!     Aspect_Suppress                     => Aspect_Suppress,
!     Aspect_Suppress_Debug_Info          => Aspect_Suppress_Debug_Info,
!     Aspect_Suppress_Initialization      => Aspect_Suppress_Initialization,
!     Aspect_Synchronization              => Aspect_Synchronization,
!     Aspect_Test_Case                    => Aspect_Test_Case,
!     Aspect_Thread_Local_Storage         => Aspect_Thread_Local_Storage,
!     Aspect_Type_Invariant               => Aspect_Invariant,
!     Aspect_Unchecked_Union              => Aspect_Unchecked_Union,
!     Aspect_Unimplemented                => Aspect_Unimplemented,
!     Aspect_Universal_Aliasing           => Aspect_Universal_Aliasing,
!     Aspect_Universal_Data               => Aspect_Universal_Data,
!     Aspect_Unmodified                   => Aspect_Unmodified,
!     Aspect_Unreferenced                 => Aspect_Unreferenced,
!     Aspect_Unreferenced_Objects         => Aspect_Unreferenced_Objects,
!     Aspect_Unsuppress                   => Aspect_Unsuppress,
!     Aspect_Variable_Indexing            => Aspect_Variable_Indexing,
!     Aspect_Value_Size                   => Aspect_Value_Size,
!     Aspect_Volatile                     => Aspect_Volatile,
!     Aspect_Volatile_Components          => Aspect_Volatile_Components,
!     Aspect_Volatile_Full_Access         => Aspect_Volatile_Full_Access,
!     Aspect_Volatile_Function            => Aspect_Volatile_Function,
!     Aspect_Warnings                     => Aspect_Warnings,
!     Aspect_Write                        => Aspect_Write);
  
     function Same_Aspect (A1 : Aspect_Id; A2 : Aspect_Id) return Boolean is
     begin
--- 505,540 ----
  
     --  Table used for Same_Aspect, maps aspect to canonical aspect
  
!    type Aspect_To_Aspect_Mapping is array (Aspect_Id) of Aspect_Id;
! 
!    function Init_Canonical_Aspect return Aspect_To_Aspect_Mapping;
!    --  Initialize the Canonical_Aspect mapping below
! 
!    function Init_Canonical_Aspect return Aspect_To_Aspect_Mapping is
!       Result : Aspect_To_Aspect_Mapping;
!    begin
!       --  They all map to themselves...
! 
!       for Aspect in Aspect_Id loop
!          Result (Aspect) := Aspect;
!       end loop;
! 
!       --  ...except for these:
! 
!       Result (Aspect_Dynamic_Predicate)  := Aspect_Predicate;
!       Result (Aspect_Inline_Always)      := Aspect_Inline;
!       Result (Aspect_Interrupt_Priority) := Aspect_Priority;
!       Result (Aspect_Postcondition)      := Aspect_Post;
!       Result (Aspect_Precondition)       := Aspect_Pre;
!       Result (Aspect_Shared)             := Aspect_Atomic;
!       Result (Aspect_Static_Predicate)   := Aspect_Predicate;
!       Result (Aspect_Type_Invariant)     := Aspect_Invariant;
! 
!       return Result;
!    end Init_Canonical_Aspect;
! 
!    Canonical_Aspect : constant Aspect_To_Aspect_Mapping :=
!      Init_Canonical_Aspect;
  
     function Same_Aspect (A1 : Aspect_Id; A2 : Aspect_Id) return Boolean is
     begin
*************** package body Aspects is
*** 662,714 ****
        Aspect_Specifications_Hash_Table.Set (N, L);
     end Set_Aspect_Specifications;
  
-    ----------------------------------------
-    -- Set_Aspect_Specifications_No_Check --
-    ----------------------------------------
- 
-    procedure Set_Aspect_Specifications_No_Check (N : Node_Id; L : List_Id) is
-    begin
-       pragma Assert (Permits_Aspect_Specifications (N));
-       pragma Assert (L /= No_List);
- 
-       Set_Has_Aspects (N);
-       Set_Parent (L, N);
-       Aspect_Specifications_Hash_Table.Set (N, L);
-    end Set_Aspect_Specifications_No_Check;
- 
-    ---------------
-    -- Tree_Read --
-    ---------------
- 
-    procedure Tree_Read is
-       Node : Node_Id;
-       List : List_Id;
-    begin
-       loop
-          Tree_Read_Int (Int (Node));
-          Tree_Read_Int (Int (List));
-          exit when List = No_List;
-          Set_Aspect_Specifications_No_Check (Node, List);
-       end loop;
-    end Tree_Read;
- 
-    ----------------
-    -- Tree_Write --
-    ----------------
- 
-    procedure Tree_Write is
-       Node : Node_Id := Empty;
-       List : List_Id;
-    begin
-       Aspect_Specifications_Hash_Table.Get_First (Node, List);
-       loop
-          Tree_Write_Int (Int (Node));
-          Tree_Write_Int (Int (List));
-          exit when List = No_List;
-          Aspect_Specifications_Hash_Table.Get_Next (Node, List);
-       end loop;
-    end Tree_Write;
- 
  --  Package initialization sets up Aspect Id hash table
  
  begin
--- 556,561 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/aspects.ads gcc-11.1.0/gcc/ada/aspects.ads
*** gcc-10.3.0/gcc/ada/aspects.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/aspects.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
***************
*** 38,48 ****
  -- Adding New Aspects --
  ------------------------
  
! --  In general, each aspect should have a corresponding pragma, so that the
! --  newly developed functionality is available for Ada versions < Ada 2012.
  --  When both are defined, it is convenient to first transform the aspect into
! --  an equivalent pragma in Sem_Ch13.Analyze_Aspect_Specifications, and then
! --  analyze the pragma in Sem_Prag.Analyze_Pragma.
  
  --  To add a new aspect, you need to do the following
  
--- 32,42 ----
  -- Adding New Aspects --
  ------------------------
  
! --  In general, each aspect should have a corresponding pragma or attribute, so
! --  that the newly developed functionality is available for old Ada versions.
  --  When both are defined, it is convenient to first transform the aspect into
! --  an equivalent pragma or attribute in Sem_Ch13.Analyze_Aspect_Specifications
! --  and then analyze that.
  
  --  To add a new aspect, you need to do the following
  
***************
*** 57,63 ****
  --       treatments later.
  
  --    5. If the semantic analysis of expressions/names in the aspect should not
! --       occur at the point the aspect is defined, add code in the adequate
  --       semantic analysis procedure for the aspect. For example, this is the
  --       case for aspects Pre and Post on subprograms, which are preanalyzed
  --       at the end of the declaration list to which the subprogram belongs,
--- 51,57 ----
  --       treatments later.
  
  --    5. If the semantic analysis of expressions/names in the aspect should not
! --       occur at the point the aspect is defined, add code in the appropriate
  --       semantic analysis procedure for the aspect. For example, this is the
  --       case for aspects Pre and Post on subprograms, which are preanalyzed
  --       at the end of the declaration list to which the subprogram belongs,
*************** package Aspects is
*** 76,81 ****
--- 70,76 ----
       (No_Aspect,                            -- Dummy entry for no aspect
        Aspect_Abstract_State,                -- GNAT
        Aspect_Address,
+       Aspect_Aggregate,
        Aspect_Alignment,
        Aspect_Annotate,                      -- GNAT
        Aspect_Async_Readers,                 -- GNAT
*************** package Aspects is
*** 109,114 ****
--- 104,110 ----
        Aspect_Initial_Condition,             -- GNAT
        Aspect_Initializes,                   -- GNAT
        Aspect_Input,
+       Aspect_Integer_Literal,
        Aspect_Interrupt_Priority,
        Aspect_Invariant,                     -- GNAT
        Aspect_Iterator_Element,
*************** package Aspects is
*** 131,152 ****
--- 127,154 ----
        Aspect_Predicate,                     -- GNAT
        Aspect_Predicate_Failure,
        Aspect_Priority,
+       Aspect_Put_Image,
        Aspect_Read,
+       Aspect_Real_Literal,
        Aspect_Refined_Depends,               -- GNAT
        Aspect_Refined_Global,                -- GNAT
        Aspect_Refined_Post,                  -- GNAT
        Aspect_Refined_State,                 -- GNAT
        Aspect_Relative_Deadline,
+       Aspect_Relaxed_Initialization,        -- GNAT
        Aspect_Scalar_Storage_Order,          -- GNAT
        Aspect_Secondary_Stack_Size,          -- GNAT
        Aspect_Simple_Storage_Pool,           -- GNAT
        Aspect_Size,
        Aspect_Small,
        Aspect_SPARK_Mode,                    -- GNAT
+       Aspect_Stable_Properties,
        Aspect_Static_Predicate,
        Aspect_Storage_Pool,
        Aspect_Storage_Size,
        Aspect_Stream_Size,
+       Aspect_String_Literal,
+       Aspect_Subprogram_Variant,            -- GNAT
        Aspect_Suppress,
        Aspect_Synchronization,
        Aspect_Test_Case,                     -- GNAT
*************** package Aspects is
*** 183,190 ****
--- 185,195 ----
        Aspect_Atomic_Components,
        Aspect_Disable_Controlled,            -- GNAT
        Aspect_Discard_Names,
+       Aspect_CUDA_Global,                   -- GNAT
+       Aspect_Exclusive_Functions,
        Aspect_Export,
        Aspect_Favor_Top_Level,               -- GNAT
+       Aspect_Full_Access_Only,
        Aspect_Independent,
        Aspect_Independent_Components,
        Aspect_Import,
*************** package Aspects is
*** 202,207 ****
--- 207,213 ----
        Aspect_Remote_Access_Type,            -- GNAT
        Aspect_Shared,                        -- GNAT (equivalent to Atomic)
        Aspect_Simple_Storage_Pool_Type,      -- GNAT
+       Aspect_Static,
        Aspect_Suppress_Debug_Info,           -- GNAT
        Aspect_Suppress_Initialization,       -- GNAT
        Aspect_Thread_Local_Storage,          -- GNAT
*************** package Aspects is
*** 212,236 ****
        Aspect_Unreferenced_Objects,          -- GNAT
        Aspect_Volatile,
        Aspect_Volatile_Components,
!       Aspect_Volatile_Full_Access);         -- GNAT
  
     subtype Aspect_Id_Exclude_No_Aspect is
       Aspect_Id range Aspect_Id'Succ (No_Aspect) .. Aspect_Id'Last;
     --  Aspect_Id's excluding No_Aspect
  
     --  The following array indicates aspects that accept 'Class
  
     Class_Aspect_OK : constant array (Aspect_Id) of Boolean :=
!      (Aspect_Input          => True,
!       Aspect_Invariant      => True,
!       Aspect_Output         => True,
!       Aspect_Pre            => True,
!       Aspect_Predicate      => True,
!       Aspect_Post           => True,
!       Aspect_Read           => True,
!       Aspect_Write          => True,
!       Aspect_Type_Invariant => True,
!       others                => False);
  
     --  The following array identifies all implementation defined aspects
  
--- 218,254 ----
        Aspect_Unreferenced_Objects,          -- GNAT
        Aspect_Volatile,
        Aspect_Volatile_Components,
!       Aspect_Volatile_Full_Access,          -- GNAT
!       Aspect_Yield);
  
     subtype Aspect_Id_Exclude_No_Aspect is
       Aspect_Id range Aspect_Id'Succ (No_Aspect) .. Aspect_Id'Last;
     --  Aspect_Id's excluding No_Aspect
  
+    subtype Nonoverridable_Aspect_Id is Aspect_Id with
+      Static_Predicate => Nonoverridable_Aspect_Id in
+        Aspect_Default_Iterator | Aspect_Iterator_Element |
+        Aspect_Implicit_Dereference | Aspect_Constant_Indexing |
+        Aspect_Variable_Indexing | Aspect_Aggregate |
+        Aspect_Max_Entry_Queue_Length
+        --  | Aspect_No_Controlled_Parts
+        --  ??? No_Controlled_Parts not yet in Aspect_Id enumeration
+        ;  --  see RM 13.1.1(18.7)
+ 
     --  The following array indicates aspects that accept 'Class
  
     Class_Aspect_OK : constant array (Aspect_Id) of Boolean :=
!      (Aspect_Input             => True,
!       Aspect_Invariant         => True,
!       Aspect_Output            => True,
!       Aspect_Pre               => True,
!       Aspect_Predicate         => True,
!       Aspect_Post              => True,
!       Aspect_Read              => True,
!       Aspect_Write             => True,
!       Aspect_Stable_Properties => True,
!       Aspect_Type_Invariant    => True,
!       others                   => False);
  
     --  The following array identifies all implementation defined aspects
  
*************** package Aspects is
*** 260,265 ****
--- 278,284 ----
        Aspect_Persistent_BSS             => True,
        Aspect_Predicate                  => True,
        Aspect_Pure_Function              => True,
+       Aspect_Relaxed_Initialization     => True,
        Aspect_Remote_Access_Type         => True,
        Aspect_Scalar_Storage_Order       => True,
        Aspect_Secondary_Stack_Size       => True,
*************** package Aspects is
*** 292,297 ****
--- 311,317 ----
        Aspect_Iterator_Element           => True,
        Aspect_Iterable                   => True,
        Aspect_Variable_Indexing          => True,
+       Aspect_Aggregate                  => True,
        others                            => False);
  
     --  The following array indicates aspects for which multiple occurrences of
*************** package Aspects is
*** 337,342 ****
--- 357,363 ----
       (No_Aspect                         => Optional_Expression,
        Aspect_Abstract_State             => Expression,
        Aspect_Address                    => Expression,
+       Aspect_Aggregate                  => Expression,
        Aspect_Alignment                  => Expression,
        Aspect_Annotate                   => Expression,
        Aspect_Async_Readers              => Optional_Expression,
*************** package Aspects is
*** 370,375 ****
--- 391,397 ----
        Aspect_Initial_Condition          => Expression,
        Aspect_Initializes                => Expression,
        Aspect_Input                      => Name,
+       Aspect_Integer_Literal            => Name,
        Aspect_Interrupt_Priority         => Expression,
        Aspect_Invariant                  => Expression,
        Aspect_Iterable                   => Expression,
*************** package Aspects is
*** 392,413 ****
--- 414,441 ----
        Aspect_Predicate                  => Expression,
        Aspect_Predicate_Failure          => Expression,
        Aspect_Priority                   => Expression,
+       Aspect_Put_Image                  => Name,
        Aspect_Read                       => Name,
+       Aspect_Real_Literal               => Name,
        Aspect_Refined_Depends            => Expression,
        Aspect_Refined_Global             => Expression,
        Aspect_Refined_Post               => Expression,
        Aspect_Refined_State              => Expression,
        Aspect_Relative_Deadline          => Expression,
+       Aspect_Relaxed_Initialization     => Optional_Expression,
        Aspect_Scalar_Storage_Order       => Expression,
        Aspect_Secondary_Stack_Size       => Expression,
        Aspect_Simple_Storage_Pool        => Name,
        Aspect_Size                       => Expression,
        Aspect_Small                      => Expression,
        Aspect_SPARK_Mode                 => Optional_Name,
+       Aspect_Stable_Properties          => Expression,
        Aspect_Static_Predicate           => Expression,
        Aspect_Storage_Pool               => Name,
        Aspect_Storage_Size               => Expression,
        Aspect_Stream_Size                => Expression,
+       Aspect_String_Literal             => Name,
+       Aspect_Subprogram_Variant         => Expression,
        Aspect_Suppress                   => Name,
        Aspect_Synchronization            => Name,
        Aspect_Test_Case                  => Expression,
*************** package Aspects is
*** 423,428 ****
--- 451,596 ----
        Boolean_Aspects                   => Optional_Expression,
        Library_Unit_Aspects              => Optional_Expression);
  
+    --  The following array indicates what aspects are representation aspects
+ 
+    Is_Representation_Aspect : constant array (Aspect_Id) of Boolean :=
+      (No_Aspect                           => False,
+       Aspect_Abstract_State               => False,
+       Aspect_Address                      => True,
+       Aspect_Aggregate                    => False,
+       Aspect_Alignment                    => True,
+       Aspect_Annotate                     => False,
+       Aspect_Async_Readers                => False,
+       Aspect_Async_Writers                => False,
+       Aspect_Attach_Handler               => False,
+       Aspect_Bit_Order                    => True,
+       Aspect_Component_Size               => True,
+       Aspect_Constant_After_Elaboration   => False,
+       Aspect_Constant_Indexing            => False,
+       Aspect_Contract_Cases               => False,
+       Aspect_Convention                   => True,
+       Aspect_CPU                          => False,
+       Aspect_CUDA_Global                  => False,
+       Aspect_Default_Component_Value      => True,
+       Aspect_Default_Initial_Condition    => False,
+       Aspect_Default_Iterator             => False,
+       Aspect_Default_Storage_Pool         => True,
+       Aspect_Default_Value                => True,
+       Aspect_Depends                      => False,
+       Aspect_Dimension                    => False,
+       Aspect_Dimension_System             => False,
+       Aspect_Dispatching_Domain           => False,
+       Aspect_Dynamic_Predicate            => False,
+       Aspect_Effective_Reads              => False,
+       Aspect_Effective_Writes             => False,
+       Aspect_Exclusive_Functions          => False,
+       Aspect_Extensions_Visible           => False,
+       Aspect_External_Name                => False,
+       Aspect_External_Tag                 => False,
+       Aspect_Ghost                        => False,
+       Aspect_Global                       => False,
+       Aspect_Implicit_Dereference         => False,
+       Aspect_Initial_Condition            => False,
+       Aspect_Initializes                  => False,
+       Aspect_Input                        => False,
+       Aspect_Integer_Literal              => False,
+       Aspect_Interrupt_Priority           => False,
+       Aspect_Invariant                    => False,
+       Aspect_Iterable                     => False,
+       Aspect_Iterator_Element             => False,
+       Aspect_Link_Name                    => True,
+       Aspect_Linker_Section               => True,
+       Aspect_Machine_Radix                => True,
+       Aspect_Max_Entry_Queue_Depth        => False,
+       Aspect_Max_Entry_Queue_Length       => False,
+       Aspect_Max_Queue_Length             => False,
+       Aspect_No_Caching                   => False,
+       Aspect_Object_Size                  => True,
+       Aspect_Obsolescent                  => False,
+       Aspect_Output                       => False,
+       Aspect_Part_Of                      => False,
+       Aspect_Post                         => False,
+       Aspect_Postcondition                => False,
+       Aspect_Pre                          => False,
+       Aspect_Precondition                 => False,
+       Aspect_Predicate                    => False,
+       Aspect_Predicate_Failure            => False,
+       Aspect_Priority                     => False,
+       Aspect_Put_Image                    => False,
+       Aspect_Read                         => False,
+       Aspect_Real_Literal                 => False,
+       Aspect_Refined_Depends              => False,
+       Aspect_Refined_Global               => False,
+       Aspect_Refined_Post                 => False,
+       Aspect_Refined_State                => False,
+       Aspect_Relative_Deadline            => False,
+       Aspect_Relaxed_Initialization       => False,
+       Aspect_Scalar_Storage_Order         => True,
+       Aspect_Secondary_Stack_Size         => True,
+       Aspect_Simple_Storage_Pool          => True,
+       Aspect_Size                         => True,
+       Aspect_Small                        => True,
+       Aspect_SPARK_Mode                   => False,
+       Aspect_Stable_Properties            => False,
+       Aspect_Static_Predicate             => False,
+       Aspect_Storage_Pool                 => True,
+       Aspect_Storage_Size                 => True,
+       Aspect_Stream_Size                  => True,
+       Aspect_String_Literal               => False,
+       Aspect_Subprogram_Variant           => False,
+       Aspect_Suppress                     => False,
+       Aspect_Synchronization              => False,
+       Aspect_Test_Case                    => False,
+       Aspect_Type_Invariant               => False,
+       Aspect_Unimplemented                => False,
+       Aspect_Unsuppress                   => False,
+       Aspect_Value_Size                   => True,
+       Aspect_Variable_Indexing            => False,
+       Aspect_Volatile_Function            => False,
+       Aspect_Warnings                     => False,
+       Aspect_Write                        => False,
+ 
+       Library_Unit_Aspects                => False,
+ 
+       Aspect_Asynchronous                 => True,
+       Aspect_Atomic                       => True,
+       Aspect_Atomic_Components            => True,
+       Aspect_Disable_Controlled           => False,
+       Aspect_Discard_Names                => True,
+       Aspect_Export                       => True,
+       Aspect_Favor_Top_Level              => False,
+       Aspect_Full_Access_Only             => True,
+       Aspect_Independent                  => True,
+       Aspect_Independent_Components       => True,
+       Aspect_Import                       => True,
+       Aspect_Inline                       => False,
+       Aspect_Inline_Always                => False,
+       Aspect_Interrupt_Handler            => False,
+       Aspect_Lock_Free                    => False,
+       Aspect_No_Inline                    => False,
+       Aspect_No_Return                    => False,
+       Aspect_No_Tagged_Streams            => False,
+       Aspect_Pack                         => True,
+       Aspect_Persistent_BSS               => True,
+       Aspect_Preelaborable_Initialization => False,
+       Aspect_Pure_Function                => False,
+       Aspect_Remote_Access_Type           => False,
+       Aspect_Shared                       => True,
+       Aspect_Simple_Storage_Pool_Type     => True,
+       Aspect_Static                       => False,
+       Aspect_Suppress_Debug_Info          => False,
+       Aspect_Suppress_Initialization      => False,
+       Aspect_Thread_Local_Storage         => True,
+       Aspect_Unchecked_Union              => True,
+       Aspect_Universal_Aliasing           => False,
+       Aspect_Unmodified                   => False,
+       Aspect_Unreferenced                 => False,
+       Aspect_Unreferenced_Objects         => False,
+       Aspect_Volatile                     => True,
+       Aspect_Volatile_Components          => True,
+       Aspect_Volatile_Full_Access         => True,
+       Aspect_Yield                        => False);
+ 
     -----------------------------------------
     -- Table Linking Names and Aspect_Id's --
     -----------------------------------------
*************** package Aspects is
*** 433,438 ****
--- 601,607 ----
       (No_Aspect                           => No_Name,
        Aspect_Abstract_State               => Name_Abstract_State,
        Aspect_Address                      => Name_Address,
+       Aspect_Aggregate                    => Name_Aggregate,
        Aspect_Alignment                    => Name_Alignment,
        Aspect_All_Calls_Remote             => Name_All_Calls_Remote,
        Aspect_Annotate                     => Name_Annotate,
*************** package Aspects is
*** 449,454 ****
--- 618,624 ----
        Aspect_Contract_Cases               => Name_Contract_Cases,
        Aspect_Convention                   => Name_Convention,
        Aspect_CPU                          => Name_CPU,
+       Aspect_CUDA_Global                  => Name_CUDA_Global,
        Aspect_Default_Component_Value      => Name_Default_Component_Value,
        Aspect_Default_Initial_Condition    => Name_Default_Initial_Condition,
        Aspect_Default_Iterator             => Name_Default_Iterator,
*************** package Aspects is
*** 464,474 ****
--- 634,646 ----
        Aspect_Effective_Reads              => Name_Effective_Reads,
        Aspect_Effective_Writes             => Name_Effective_Writes,
        Aspect_Elaborate_Body               => Name_Elaborate_Body,
+       Aspect_Exclusive_Functions          => Name_Exclusive_Functions,
        Aspect_Export                       => Name_Export,
        Aspect_Extensions_Visible           => Name_Extensions_Visible,
        Aspect_External_Name                => Name_External_Name,
        Aspect_External_Tag                 => Name_External_Tag,
        Aspect_Favor_Top_Level              => Name_Favor_Top_Level,
+       Aspect_Full_Access_Only             => Name_Full_Access_Only,
        Aspect_Ghost                        => Name_Ghost,
        Aspect_Global                       => Name_Global,
        Aspect_Implicit_Dereference         => Name_Implicit_Dereference,
*************** package Aspects is
*** 480,485 ****
--- 652,658 ----
        Aspect_Initial_Condition            => Name_Initial_Condition,
        Aspect_Initializes                  => Name_Initializes,
        Aspect_Input                        => Name_Input,
+       Aspect_Integer_Literal              => Name_Integer_Literal,
        Aspect_Interrupt_Handler            => Name_Interrupt_Handler,
        Aspect_Interrupt_Priority           => Name_Interrupt_Priority,
        Aspect_Invariant                    => Name_Invariant,
*************** package Aspects is
*** 514,525 ****
--- 687,701 ----
        Aspect_Priority                     => Name_Priority,
        Aspect_Pure                         => Name_Pure,
        Aspect_Pure_Function                => Name_Pure_Function,
+       Aspect_Put_Image                    => Name_Put_Image,
        Aspect_Read                         => Name_Read,
+       Aspect_Real_Literal                 => Name_Real_Literal,
        Aspect_Refined_Depends              => Name_Refined_Depends,
        Aspect_Refined_Global               => Name_Refined_Global,
        Aspect_Refined_Post                 => Name_Refined_Post,
        Aspect_Refined_State                => Name_Refined_State,
        Aspect_Relative_Deadline            => Name_Relative_Deadline,
+       Aspect_Relaxed_Initialization       => Name_Relaxed_Initialization,
        Aspect_Remote_Access_Type           => Name_Remote_Access_Type,
        Aspect_Remote_Call_Interface        => Name_Remote_Call_Interface,
        Aspect_Remote_Types                 => Name_Remote_Types,
*************** package Aspects is
*** 532,541 ****
--- 708,721 ----
        Aspect_Size                         => Name_Size,
        Aspect_Small                        => Name_Small,
        Aspect_SPARK_Mode                   => Name_SPARK_Mode,
+       Aspect_Stable_Properties            => Name_Stable_Properties,
+       Aspect_Static                       => Name_Static,
        Aspect_Static_Predicate             => Name_Static_Predicate,
        Aspect_Storage_Pool                 => Name_Storage_Pool,
        Aspect_Storage_Size                 => Name_Storage_Size,
        Aspect_Stream_Size                  => Name_Stream_Size,
+       Aspect_String_Literal               => Name_String_Literal,
+       Aspect_Subprogram_Variant           => Name_Subprogram_Variant,
        Aspect_Suppress                     => Name_Suppress,
        Aspect_Suppress_Debug_Info          => Name_Suppress_Debug_Info,
        Aspect_Suppress_Initialization      => Name_Suppress_Initialization,
*************** package Aspects is
*** 558,564 ****
        Aspect_Volatile_Full_Access         => Name_Volatile_Full_Access,
        Aspect_Volatile_Function            => Name_Volatile_Function,
        Aspect_Warnings                     => Name_Warnings,
!       Aspect_Write                        => Name_Write);
  
     function Get_Aspect_Id (Name : Name_Id) return Aspect_Id;
     pragma Inline (Get_Aspect_Id);
--- 738,745 ----
        Aspect_Volatile_Full_Access         => Name_Volatile_Full_Access,
        Aspect_Volatile_Function            => Name_Volatile_Function,
        Aspect_Warnings                     => Name_Warnings,
!       Aspect_Write                        => Name_Write,
!       Aspect_Yield                        => Name_Yield);
  
     function Get_Aspect_Id (Name : Name_Id) return Aspect_Id;
     pragma Inline (Get_Aspect_Id);
*************** package Aspects is
*** 674,684 ****
--- 855,867 ----
     Aspect_Delay : constant array (Aspect_Id) of Delay_Type :=
       (No_Aspect                           => Always_Delay,
        Aspect_Address                      => Always_Delay,
+       Aspect_Aggregate                    => Always_Delay,
        Aspect_All_Calls_Remote             => Always_Delay,
        Aspect_Asynchronous                 => Always_Delay,
        Aspect_Attach_Handler               => Always_Delay,
        Aspect_Constant_Indexing            => Always_Delay,
        Aspect_CPU                          => Always_Delay,
+       Aspect_CUDA_Global                  => Always_Delay,
        Aspect_Default_Iterator             => Always_Delay,
        Aspect_Default_Storage_Pool         => Always_Delay,
        Aspect_Default_Value                => Always_Delay,
*************** package Aspects is
*** 687,692 ****
--- 870,876 ----
        Aspect_Dispatching_Domain           => Always_Delay,
        Aspect_Dynamic_Predicate            => Always_Delay,
        Aspect_Elaborate_Body               => Always_Delay,
+       Aspect_Exclusive_Functions          => Always_Delay,
        Aspect_External_Name                => Always_Delay,
        Aspect_External_Tag                 => Always_Delay,
        Aspect_Favor_Top_Level              => Always_Delay,
*************** package Aspects is
*** 696,701 ****
--- 880,886 ----
        Aspect_Inline                       => Always_Delay,
        Aspect_Inline_Always                => Always_Delay,
        Aspect_Input                        => Always_Delay,
+       Aspect_Integer_Literal              => Always_Delay,
        Aspect_Interrupt_Handler            => Always_Delay,
        Aspect_Interrupt_Priority           => Always_Delay,
        Aspect_Invariant                    => Always_Delay,
*************** package Aspects is
*** 719,725 ****
--- 904,912 ----
        Aspect_Priority                     => Always_Delay,
        Aspect_Pure                         => Always_Delay,
        Aspect_Pure_Function                => Always_Delay,
+       Aspect_Put_Image                    => Always_Delay,
        Aspect_Read                         => Always_Delay,
+       Aspect_Real_Literal                 => Always_Delay,
        Aspect_Relative_Deadline            => Always_Delay,
        Aspect_Remote_Access_Type           => Always_Delay,
        Aspect_Remote_Call_Interface        => Always_Delay,
*************** package Aspects is
*** 732,737 ****
--- 919,925 ----
        Aspect_Static_Predicate             => Always_Delay,
        Aspect_Storage_Pool                 => Always_Delay,
        Aspect_Stream_Size                  => Always_Delay,
+       Aspect_String_Literal               => Always_Delay,
        Aspect_Suppress                     => Always_Delay,
        Aspect_Suppress_Debug_Info          => Always_Delay,
        Aspect_Suppress_Initialization      => Always_Delay,
*************** package Aspects is
*** 780,797 ****
--- 968,991 ----
        Aspect_Refined_Global               => Never_Delay,
        Aspect_Refined_Post                 => Never_Delay,
        Aspect_Refined_State                => Never_Delay,
+       Aspect_Relaxed_Initialization       => Never_Delay,
        Aspect_SPARK_Mode                   => Never_Delay,
+       Aspect_Stable_Properties            => Always_Delay,
+       Aspect_Static                       => Never_Delay,
+       Aspect_Subprogram_Variant           => Never_Delay,
        Aspect_Synchronization              => Never_Delay,
        Aspect_Test_Case                    => Never_Delay,
        Aspect_Unimplemented                => Never_Delay,
        Aspect_Volatile_Function            => Never_Delay,
        Aspect_Warnings                     => Never_Delay,
+       Aspect_Yield                        => Never_Delay,
  
        Aspect_Alignment                    => Rep_Aspect,
        Aspect_Atomic                       => Rep_Aspect,
        Aspect_Atomic_Components            => Rep_Aspect,
        Aspect_Bit_Order                    => Rep_Aspect,
        Aspect_Component_Size               => Rep_Aspect,
+       Aspect_Full_Access_Only             => Rep_Aspect,
        Aspect_Machine_Radix                => Rep_Aspect,
        Aspect_Object_Size                  => Rep_Aspect,
        Aspect_Pack                         => Rep_Aspect,
*************** package Aspects is
*** 906,923 ****
     --  aspect specification list, the routine has no effect. It is assumed that
     --  both nodes can support aspects.
  
!    function Find_Aspect (Id : Entity_Id; A : Aspect_Id) return Node_Id;
!    --  Find the aspect specification of aspect A associated with entity I.
     --  Return Empty if Id does not have the requested aspect.
  
     function Find_Value_Of_Aspect
!      (Id : Entity_Id;
!       A  : Aspect_Id) return Node_Id;
!    --  Find the value of aspect A associated with entity Id. Return Empty if
!    --  Id does not have the requested aspect.
  
!    function Has_Aspect (Id : Entity_Id; A : Aspect_Id) return Boolean;
!    --  Determine whether entity Id has aspect A
  
     procedure Move_Aspects (From : Node_Id; To : Node_Id);
     --  Relocate the aspect specifications of node From to node To. On entry it
--- 1100,1123 ----
     --  aspect specification list, the routine has no effect. It is assumed that
     --  both nodes can support aspects.
  
!    function Find_Aspect (Id            : Entity_Id;
!                          A             : Aspect_Id;
!                          Class_Present : Boolean := False) return Node_Id;
!    --  Find the aspect specification of aspect A (or A'Class if Class_Present)
!    --  associated with entity I.
     --  Return Empty if Id does not have the requested aspect.
  
     function Find_Value_Of_Aspect
!      (Id            : Entity_Id;
!       A             : Aspect_Id;
!       Class_Present : Boolean := False) return Node_Id;
!    --  Find the value of aspect A (or A'Class, if Class_Present) associated
!    --  with entity Id. Return Empty if Id does not have the requested aspect.
  
!    function Has_Aspect (Id            : Entity_Id;
!                         A             : Aspect_Id;
!                         Class_Present : Boolean := False) return Boolean;
!    --  Determine whether entity Id has aspect A (or A'Class, if Class_Present)
  
     procedure Move_Aspects (From : Node_Id; To : Node_Id);
     --  Relocate the aspect specifications of node From to node To. On entry it
*************** package Aspects is
*** 959,968 ****
     --  node that has its Has_Aspects flag set True on entry, or with L being an
     --  empty list or No_List.
  
-    procedure Tree_Read;
-    --  Reads contents of Aspect_Specifications hash table from the tree file
- 
-    procedure Tree_Write;
-    --  Writes contents of Aspect_Specifications hash table to the tree file
- 
  end Aspects;
--- 1159,1162 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/atree.adb gcc-11.1.0/gcc/ada/atree.adb
*** gcc-10.3.0/gcc/ada/atree.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/atree.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** with Nlists;  use Nlists;
*** 42,48 ****
  with Opt;     use Opt;
  with Output;  use Output;
  with Sinput;  use Sinput;
- with Tree_IO; use Tree_IO;
  
  with GNAT.Heap_Sort_G;
  
--- 36,41 ----
*************** package body Atree is
*** 58,64 ****
     --  assertions this lock has no effect.
  
     Reporting_Proc : Report_Proc := null;
!    --  Record argument to last call to Set_Reporting_Proc
  
     Rewriting_Proc : Rewrite_Proc := null;
     --  This soft link captures the procedure invoked during a node rewrite
--- 51,58 ----
     --  assertions this lock has no effect.
  
     Reporting_Proc : Report_Proc := null;
!    --  Set_Reporting_Proc sets this. Set_Reporting_Proc must be called only
!    --  once.
  
     Rewriting_Proc : Rewrite_Proc := null;
     --  This soft link captures the procedure invoked during a node rewrite
*************** package body Atree is
*** 114,129 ****
     procedure Node_Debug_Output (Op : String; N : Node_Id);
     --  Called by nnd; writes Op followed by information about N
  
-    procedure Print_Statistics;
-    pragma Export (Ada, Print_Statistics);
-    --  Print various statistics on the tables maintained by the package
- 
     -----------------------------
     -- Local Objects and Types --
     -----------------------------
  
!    Node_Count : Nat;
!    --  Count allocated nodes for Num_Nodes function
  
     use Unchecked_Access;
     --  We are allowed to see these from within our own body
--- 108,118 ----
     procedure Node_Debug_Output (Op : String; N : Node_Id);
     --  Called by nnd; writes Op followed by information about N
  
     -----------------------------
     -- Local Objects and Types --
     -----------------------------
  
!    Comes_From_Source_Default : Boolean := False;
  
     use Unchecked_Access;
     --  We are allowed to see these from within our own body
*************** package body Atree is
*** 505,511 ****
  
     --  Note: eventually, this should be a field in the Node directly, but
     --  for now we do not want to disturb the efficiency of a power of 2
!    --  for the node size
  
     package Orig_Nodes is new Table.Table (
        Table_Component_Type => Node_Id,
--- 494,500 ----
  
     --  Note: eventually, this should be a field in the Node directly, but
     --  for now we do not want to disturb the efficiency of a power of 2
!    --  for the node size. ????We are planning to get rid of power-of-2.
  
     package Orig_Nodes is new Table.Table (
        Table_Component_Type => Node_Id,
*************** package body Atree is
*** 542,556 ****
       Table_Increment      => 200,
       Table_Name           => "Paren_Counts");
  
     -----------------------
     -- Local Subprograms --
     -----------------------
  
!    function Allocate_Initialize_Node
!      (Src            : Node_Id;
!       With_Extension : Boolean) return Node_Id;
!    --  Allocate a new node or node extension. If Src is not empty, the
!    --  information for the newly-allocated node is copied from it.
  
     procedure Fix_Parents (Ref_Node, Fix_Node : Node_Id);
     --  Fix up parent pointers for the syntactic children of Fix_Node after a
--- 531,549 ----
       Table_Increment      => 200,
       Table_Name           => "Paren_Counts");
  
+    procedure Set_Paren_Count_Of_Copy (Target, Source : Node_Id);
+    pragma Inline (Set_Paren_Count_Of_Copy);
+    --  Called when copying a node. Makes sure the Paren_Count of the copy is
+    --  correct.
+ 
     -----------------------
     -- Local Subprograms --
     -----------------------
  
!    function Allocate_New_Node return Node_Id;
!    pragma Inline (Allocate_New_Node);
!    --  Allocate a new node or first part of a node extension. Initialize the
!    --  Nodes.Table entry, Flags, Orig_Nodes, and List tables.
  
     procedure Fix_Parents (Ref_Node, Fix_Node : Node_Id);
     --  Fix up parent pointers for the syntactic children of Fix_Node after a
*************** package body Atree is
*** 560,638 ****
     --  Mark arbitrary node or entity N as Ghost when it is created within a
     --  Ghost region.
  
!    ------------------------------
!    -- Allocate_Initialize_Node --
!    ------------------------------
  
!    function Allocate_Initialize_Node
!      (Src            : Node_Id;
!       With_Extension : Boolean) return Node_Id
!    is
!       New_Id : Node_Id;
  
     begin
!       if Present (Src)
!         and then not Has_Extension (Src)
!         and then With_Extension
!         and then Src = Nodes.Last
!       then
!          New_Id := Src;
! 
!       --  We are allocating a new node, or extending a node other than
!       --  Nodes.Last.
! 
!       else
!          if Present (Src) then
!             Nodes.Append (Nodes.Table (Src));
!             Flags.Append (Flags.Table (Src));
!          else
!             Nodes.Append (Default_Node);
!             Flags.Append (Default_Flags);
!          end if;
! 
!          New_Id := Nodes.Last;
!          Orig_Nodes.Append (New_Id);
!          Node_Count := Node_Count + 1;
!       end if;
! 
!       --  Clear Check_Actuals to False
! 
!       Set_Check_Actuals (New_Id, False);
! 
!       --  Specifically copy Paren_Count to deal with creating new table entry
!       --  if the parentheses count is at the maximum possible value already.
! 
!       if Present (Src) and then Nkind (Src) in N_Subexpr then
!          Set_Paren_Count (New_Id, Paren_Count (Src));
!       end if;
! 
!       --  Set extension nodes if required
! 
!       if With_Extension then
!          if Present (Src) and then Has_Extension (Src) then
!             for J in 1 .. Num_Extension_Nodes loop
!                Nodes.Append (Nodes.Table (Src + J));
!                Flags.Append (Flags.Table (Src + J));
!             end loop;
!          else
!             for J in 1 .. Num_Extension_Nodes loop
!                Nodes.Append (Default_Node_Extension);
!                Flags.Append (Default_Flags);
!             end loop;
!          end if;
!       end if;
! 
!       Orig_Nodes.Set_Last (Nodes.Last);
        Allocate_List_Tables (Nodes.Last);
! 
!       --  Invoke the reporting procedure (if available)
! 
!       if Reporting_Proc /= null then
!          Reporting_Proc.all (Target => New_Id, Source => Src);
!       end if;
  
        return New_Id;
!    end Allocate_Initialize_Node;
  
     --------------
     -- Analyzed --
--- 553,580 ----
     --  Mark arbitrary node or entity N as Ghost when it is created within a
     --  Ghost region.
  
!    procedure Report (Target, Source : Node_Id);
!    pragma Inline (Report);
!    --  Invoke the reporting procedure if available
  
!    -----------------------
!    -- Allocate_New_Node --
!    -----------------------
  
+    function Allocate_New_Node return Node_Id is
+       New_Id : Node_Id;
     begin
!       Nodes.Append (Default_Node);
!       New_Id := Nodes.Last;
!       Flags.Append (Default_Flags);
!       Orig_Nodes.Append (New_Id);
!       Nodes.Table (Nodes.Last).Comes_From_Source :=
!         Comes_From_Source_Default;
        Allocate_List_Tables (Nodes.Last);
!       Report (Target => New_Id, Source => Empty);
  
        return New_Id;
!    end Allocate_New_Node;
  
     --------------
     -- Analyzed --
*************** package body Atree is
*** 763,774 ****
  
        Flags.Table (Destination) := Flags.Table (Source);
  
!       --  Specifically set Paren_Count to make sure auxiliary table entry
!       --  gets correctly made if the parentheses count is at the max value.
! 
!       if Nkind (Destination) in N_Subexpr then
!          Set_Paren_Count (Destination, Paren_Count (Source));
!       end if;
  
        --  Deal with copying extension nodes if present. No need to copy flags
        --  table entries, since they are always zero for extending components.
--- 705,711 ----
  
        Flags.Table (Destination) := Flags.Table (Source);
  
!       Set_Paren_Count_Of_Copy (Target => Destination, Source => Source);
  
        --  Deal with copying extension nodes if present. No need to copy flags
        --  table entries, since they are always zero for extending components.
*************** package body Atree is
*** 961,969 ****
  
              --  The following code is a bit kludgy. It would be cleaner to
              --  Add an entry Change_Expanded_Name_To_Selected_Component to
!             --  Sinfo.CN, but that's an earthquake, because it has the wrong
!             --  license, and Atree is used outside the compiler, e.g. in the
!             --  binder and in ASIS, so we don't want to add that dependency.
  
              --  Consequently we have no choice but to hold our noses and do
              --  the change manually. At least we are Atree, so this odd use
--- 898,906 ----
  
              --  The following code is a bit kludgy. It would be cleaner to
              --  Add an entry Change_Expanded_Name_To_Selected_Component to
!             --  Sinfo.CN, but that's delicate because Atree is used in the
!             --  binder, so we don't want to add that dependency.
!             --  ??? Revisit now that ASIS is no longer using this unit.
  
              --  Consequently we have no choice but to hold our noses and do
              --  the change manually. At least we are Atree, so this odd use
*************** package body Atree is
*** 995,1330 ****
        return N_To_E (Nodes.Table (E + 1).Nkind);
     end Ekind;
  
-    --------------
-    -- Ekind_In --
-    --------------
- 
-    function Ekind_In
-      (T  : Entity_Kind;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2;
-    end Ekind_In;
- 
-    function Ekind_In
-      (T  : Entity_Kind;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3;
-    end Ekind_In;
- 
-    function Ekind_In
-      (T  : Entity_Kind;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4;
-    end Ekind_In;
- 
-    function Ekind_In
-      (T  : Entity_Kind;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5;
-    end Ekind_In;
- 
-    function Ekind_In
-      (T  : Entity_Kind;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind;
-       V6 : Entity_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5 or else
-              T = V6;
-    end Ekind_In;
- 
-    function Ekind_In
-      (T  : Entity_Kind;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind;
-       V6 : Entity_Kind;
-       V7 : Entity_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5 or else
-              T = V6 or else
-              T = V7;
-    end Ekind_In;
- 
-    function Ekind_In
-      (T  : Entity_Kind;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind;
-       V6 : Entity_Kind;
-       V7 : Entity_Kind;
-       V8 : Entity_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5 or else
-              T = V6 or else
-              T = V7 or else
-              T = V8;
-    end Ekind_In;
- 
-    function Ekind_In
-      (T  : Entity_Kind;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind;
-       V6 : Entity_Kind;
-       V7 : Entity_Kind;
-       V8 : Entity_Kind;
-       V9 : Entity_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5 or else
-              T = V6 or else
-              T = V7 or else
-              T = V8 or else
-              T = V9;
-    end Ekind_In;
- 
-    function Ekind_In
-      (T   : Entity_Kind;
-       V1  : Entity_Kind;
-       V2  : Entity_Kind;
-       V3  : Entity_Kind;
-       V4  : Entity_Kind;
-       V5  : Entity_Kind;
-       V6  : Entity_Kind;
-       V7  : Entity_Kind;
-       V8  : Entity_Kind;
-       V9  : Entity_Kind;
-       V10 : Entity_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5 or else
-              T = V6 or else
-              T = V7 or else
-              T = V8 or else
-              T = V9 or else
-              T = V10;
-    end Ekind_In;
- 
-    function Ekind_In
-      (T   : Entity_Kind;
-       V1  : Entity_Kind;
-       V2  : Entity_Kind;
-       V3  : Entity_Kind;
-       V4  : Entity_Kind;
-       V5  : Entity_Kind;
-       V6  : Entity_Kind;
-       V7  : Entity_Kind;
-       V8  : Entity_Kind;
-       V9  : Entity_Kind;
-       V10 : Entity_Kind;
-       V11 : Entity_Kind) return Boolean
-    is
-    begin
-       return T = V1  or else
-              T = V2  or else
-              T = V3  or else
-              T = V4  or else
-              T = V5  or else
-              T = V6  or else
-              T = V7  or else
-              T = V8  or else
-              T = V9  or else
-              T = V10 or else
-              T = V11;
-    end Ekind_In;
- 
-    function Ekind_In
-      (E  : Entity_Id;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind) return Boolean
-    is
-    begin
-       return Ekind_In (Ekind (E), V1, V2);
-    end Ekind_In;
- 
-    function Ekind_In
-      (E  : Entity_Id;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind) return Boolean
-    is
-    begin
-       return Ekind_In (Ekind (E), V1, V2, V3);
-    end Ekind_In;
- 
-    function Ekind_In
-      (E  : Entity_Id;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind) return Boolean
-    is
-    begin
-       return Ekind_In (Ekind (E), V1, V2, V3, V4);
-    end Ekind_In;
- 
-    function Ekind_In
-      (E  : Entity_Id;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind) return Boolean
-    is
-    begin
-       return Ekind_In (Ekind (E), V1, V2, V3, V4, V5);
-    end Ekind_In;
- 
-    function Ekind_In
-      (E  : Entity_Id;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind;
-       V6 : Entity_Kind) return Boolean
-    is
-    begin
-       return Ekind_In (Ekind (E), V1, V2, V3, V4, V5, V6);
-    end Ekind_In;
- 
-    function Ekind_In
-      (E  : Entity_Id;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind;
-       V6 : Entity_Kind;
-       V7 : Entity_Kind) return Boolean
-    is
-    begin
-       return Ekind_In (Ekind (E), V1, V2, V3, V4, V5, V6, V7);
-    end Ekind_In;
- 
-    function Ekind_In
-      (E  : Entity_Id;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind;
-       V6 : Entity_Kind;
-       V7 : Entity_Kind;
-       V8 : Entity_Kind) return Boolean
-    is
-    begin
-       return Ekind_In (Ekind (E), V1, V2, V3, V4, V5, V6, V7, V8);
-    end Ekind_In;
- 
-    function Ekind_In
-      (E  : Entity_Id;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind;
-       V6 : Entity_Kind;
-       V7 : Entity_Kind;
-       V8 : Entity_Kind;
-       V9 : Entity_Kind) return Boolean
-    is
-    begin
-       return Ekind_In (Ekind (E), V1, V2, V3, V4, V5, V6, V7, V8, V9);
-    end Ekind_In;
- 
-    function Ekind_In
-      (E   : Entity_Id;
-       V1  : Entity_Kind;
-       V2  : Entity_Kind;
-       V3  : Entity_Kind;
-       V4  : Entity_Kind;
-       V5  : Entity_Kind;
-       V6  : Entity_Kind;
-       V7  : Entity_Kind;
-       V8  : Entity_Kind;
-       V9  : Entity_Kind;
-       V10 : Entity_Kind) return Boolean
-    is
-    begin
-       return Ekind_In (Ekind (E), V1, V2, V3, V4, V5, V6, V7, V8, V9, V10);
-    end Ekind_In;
- 
-    function Ekind_In
-      (E   : Entity_Id;
-       V1  : Entity_Kind;
-       V2  : Entity_Kind;
-       V3  : Entity_Kind;
-       V4  : Entity_Kind;
-       V5  : Entity_Kind;
-       V6  : Entity_Kind;
-       V7  : Entity_Kind;
-       V8  : Entity_Kind;
-       V9  : Entity_Kind;
-       V10 : Entity_Kind;
-       V11 : Entity_Kind) return Boolean
-    is
-    begin
-       return
-         Ekind_In (Ekind (E), V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11);
-    end Ekind_In;
- 
     ------------------
     -- Error_Posted --
     ------------------
--- 932,937 ----
*************** package body Atree is
*** 1387,1398 ****
     -- Extend_Node --
     -----------------
  
!    function Extend_Node (Node : Node_Id) return Entity_Id is
!       Result : Entity_Id;
  
        procedure Debug_Extend_Node;
        pragma Inline (Debug_Extend_Node);
!       --  Debug routine for debug flag N
  
        -----------------------
        -- Debug_Extend_Node --
--- 994,1007 ----
     -- Extend_Node --
     -----------------
  
!    function Extend_Node (Source : Node_Id) return Entity_Id is
!       pragma Assert (Present (Source));
!       pragma Assert (not Has_Extension (Source));
!       New_Id : Entity_Id;
  
        procedure Debug_Extend_Node;
        pragma Inline (Debug_Extend_Node);
!       --  Debug routine for -gnatdn
  
        -----------------------
        -- Debug_Extend_Node --
*************** package body Atree is
*** 1402,1414 ****
        begin
           if Debug_Flag_N then
              Write_Str ("Extend node ");
!             Write_Int (Int (Node));
  
!             if Result = Node then
                 Write_Str (" in place");
              else
                 Write_Str (" copied to ");
!                Write_Int (Int (Result));
              end if;
  
              --  Write_Eol;
--- 1011,1023 ----
        begin
           if Debug_Flag_N then
              Write_Str ("Extend node ");
!             Write_Int (Int (Source));
  
!             if New_Id = Source then
                 Write_Str (" in place");
              else
                 Write_Str (" copied to ");
!                Write_Int (Int (New_Id));
              end if;
  
              --  Write_Eol;
*************** package body Atree is
*** 1418,1429 ****
     --  Start of processing for Extend_Node
  
     begin
!       pragma Assert (not (Has_Extension (Node)));
  
-       Result := Allocate_Initialize_Node (Node, With_Extension => True);
        pragma Debug (Debug_Extend_Node);
  
!       return Result;
     end Extend_Node;
  
     -----------------
--- 1027,1060 ----
     --  Start of processing for Extend_Node
  
     begin
!       --  Optimize the case where Source happens to be the last node; in that
!       --  case, we don't need to move it.
! 
!       if Source = Nodes.Last then
!          New_Id := Source;
!       else
!          Nodes.Append (Nodes.Table (Source));
!          Flags.Append (Flags.Table (Source));
!          New_Id := Nodes.Last;
!          Orig_Nodes.Append (New_Id);
!       end if;
! 
!       Set_Check_Actuals (New_Id, False);
! 
!       --  Set extension nodes
! 
!       for J in 1 .. Num_Extension_Nodes loop
!          Nodes.Append (Default_Node_Extension);
!          Flags.Append (Default_Flags);
!       end loop;
! 
!       Orig_Nodes.Set_Last (Nodes.Last);
!       Allocate_List_Tables (Nodes.Last);
!       Report (Target => New_Id, Source => Source);
  
        pragma Debug (Debug_Extend_Node);
  
!       return New_Id;
     end Extend_Node;
  
     -----------------
*************** package body Atree is
*** 1431,1436 ****
--- 1062,1069 ----
     -----------------
  
     procedure Fix_Parents (Ref_Node, Fix_Node : Node_Id) is
+       pragma Assert (Nkind (Ref_Node) = Nkind (Fix_Node));
+ 
        procedure Fix_Parent (Field : Union_Id);
        --  Fix up one parent pointer. Field is checked to see if it points to
        --  a node, list, or element list that has a parent that points to
*************** package body Atree is
*** 1488,1494 ****
  
     function Get_Comes_From_Source_Default return Boolean is
     begin
!       return Default_Node.Comes_From_Source;
     end Get_Comes_From_Source_Default;
  
     -----------------
--- 1121,1127 ----
  
     function Get_Comes_From_Source_Default return Boolean is
     begin
!       return Comes_From_Source_Default;
     end Get_Comes_From_Source_Default;
  
     -----------------
*************** package body Atree is
*** 1519,1525 ****
        pragma Warnings (Off, Dummy);
  
     begin
-       Node_Count := 0;
        Atree_Private_Part.Nodes.Init;
        Atree_Private_Part.Flags.Init;
        Orig_Nodes.Init;
--- 1152,1157 ----
*************** package body Atree is
*** 1583,1591 ****
        --  We used to Release the tables, as in the comments below, but that is
        --  a waste of time. We're only wasting virtual memory here, and the
        --  release calls copy large amounts of data.
  
-       --  Nodes.Release;
-       Nodes.Locked := True;
        --  Flags.Release;
        Flags.Locked := True;
        --  Orig_Nodes.Release;
--- 1215,1222 ----
        --  We used to Release the tables, as in the comments below, but that is
        --  a waste of time. We're only wasting virtual memory here, and the
        --  release calls copy large amounts of data.
+       --  ???Get rid of Release?
  
        --  Flags.Release;
        Flags.Locked := True;
        --  Orig_Nodes.Release;
*************** package body Atree is
*** 1645,1682 ****
     --------------
  
     function New_Copy (Source : Node_Id) return Node_Id is
!       New_Id : Node_Id := Source;
! 
     begin
!       if Source > Empty_Or_Error then
!          New_Id := Allocate_Initialize_Node (Source, Has_Extension (Source));
  
!          Nodes.Table (New_Id).In_List := False;
!          Nodes.Table (New_Id).Link    := Empty_List_Or_Node;
  
!          --  If the original is marked as a rewrite insertion, then unmark the
!          --  copy, since we inserted the original, not the copy.
  
!          Nodes.Table (New_Id).Rewrite_Ins := False;
!          pragma Debug (New_Node_Debugging_Output (New_Id));
  
!          --  Clear Is_Overloaded since we cannot have semantic interpretations
!          --  of this new node.
  
!          if Nkind (Source) in N_Subexpr then
!             Set_Is_Overloaded (New_Id, False);
!          end if;
  
!          --  Always clear Has_Aspects, the caller must take care of copying
!          --  aspects if this is required for the particular situation.
  
!          Set_Has_Aspects (New_Id, False);
  
!          --  Mark the copy as Ghost depending on the current Ghost region
  
!          Mark_New_Ghost_Node (New_Id);
        end if;
  
        return New_Id;
     end New_Copy;
  
--- 1276,1335 ----
     --------------
  
     function New_Copy (Source : Node_Id) return Node_Id is
!       New_Id : Node_Id;
     begin
!       if Source <= Empty_Or_Error then
!          return Source;
!       end if;
  
!       Nodes.Append (Nodes.Table (Source));
!       Flags.Append (Flags.Table (Source));
!       New_Id := Nodes.Last;
!       Orig_Nodes.Append (New_Id);
!       Set_Check_Actuals (New_Id, False);
!       Set_Paren_Count_Of_Copy (Target => New_Id, Source => Source);
  
!       --  Set extension nodes if required
  
!       if Has_Extension (Source) then
!          for J in 1 .. Num_Extension_Nodes loop
!             Nodes.Append (Nodes.Table (Source + J));
!             Flags.Append (Flags.Table (Source + J));
!          end loop;
!          Orig_Nodes.Set_Last (Nodes.Last);
!       else
!          pragma Assert (Orig_Nodes.Table (Orig_Nodes.Last) = Nodes.Last);
!       end if;
  
!       Allocate_List_Tables (Nodes.Last);
!       Report (Target => New_Id, Source => Source);
  
!       Nodes.Table (New_Id).In_List := False;
!       Nodes.Table (New_Id).Link    := Empty_List_Or_Node;
  
!       --  If the original is marked as a rewrite insertion, then unmark the
!       --  copy, since we inserted the original, not the copy.
  
!       Nodes.Table (New_Id).Rewrite_Ins := False;
!       pragma Debug (New_Node_Debugging_Output (New_Id));
  
!       --  Clear Is_Overloaded since we cannot have semantic interpretations
!       --  of this new node.
  
!       if Nkind (Source) in N_Subexpr then
!          Set_Is_Overloaded (New_Id, False);
        end if;
  
+       --  Always clear Has_Aspects, the caller must take care of copying
+       --  aspects if this is required for the particular situation.
+ 
+       Set_Has_Aspects (New_Id, False);
+ 
+       --  Mark the copy as Ghost depending on the current Ghost region
+ 
+       Mark_New_Ghost_Node (New_Id);
+ 
+       pragma Assert (New_Id /= Source);
        return New_Id;
     end New_Copy;
  
*************** package body Atree is
*** 1688,1717 ****
       (New_Node_Kind : Node_Kind;
        New_Sloc      : Source_Ptr) return Entity_Id
     is
-       Ent : Entity_Id;
- 
-    begin
        pragma Assert (New_Node_Kind in N_Entity);
  
!       Ent := Allocate_Initialize_Node (Empty, With_Extension => True);
  
        --  If this is a node with a real location and we are generating
        --  source nodes, then reset Current_Error_Node. This is useful
        --  if we bomb during parsing to get a error location for the bomb.
  
!       if Default_Node.Comes_From_Source and then New_Sloc > No_Location then
!          Current_Error_Node := Ent;
        end if;
  
!       Nodes.Table (Ent).Nkind := New_Node_Kind;
!       Nodes.Table (Ent).Sloc  := New_Sloc;
!       pragma Debug (New_Node_Debugging_Output (Ent));
  
        --  Mark the new entity as Ghost depending on the current Ghost region
  
!       Mark_New_Ghost_Node (Ent);
  
!       return Ent;
     end New_Entity;
  
     --------------
--- 1341,1375 ----
       (New_Node_Kind : Node_Kind;
        New_Sloc      : Source_Ptr) return Entity_Id
     is
        pragma Assert (New_Node_Kind in N_Entity);
+       New_Id : constant Entity_Id := Allocate_New_Node;
+    begin
+       --  Set extension nodes
  
!       for J in 1 .. Num_Extension_Nodes loop
!          Nodes.Append (Default_Node_Extension);
!          Flags.Append (Default_Flags);
!       end loop;
! 
!       Orig_Nodes.Set_Last (Nodes.Last);
  
        --  If this is a node with a real location and we are generating
        --  source nodes, then reset Current_Error_Node. This is useful
        --  if we bomb during parsing to get a error location for the bomb.
  
!       if  New_Sloc > No_Location and then Comes_From_Source_Default then
!          Current_Error_Node := New_Id;
        end if;
  
!       Nodes.Table (New_Id).Nkind := New_Node_Kind;
!       Nodes.Table (New_Id).Sloc  := New_Sloc;
!       pragma Debug (New_Node_Debugging_Output (New_Id));
  
        --  Mark the new entity as Ghost depending on the current Ghost region
  
!       Mark_New_Ghost_Node (New_Id);
  
!       return New_Id;
     end New_Entity;
  
     --------------
*************** package body Atree is
*** 1722,1750 ****
       (New_Node_Kind : Node_Kind;
        New_Sloc      : Source_Ptr) return Node_Id
     is
-       Nod : Node_Id;
- 
-    begin
        pragma Assert (New_Node_Kind not in N_Entity);
! 
!       Nod := Allocate_Initialize_Node (Empty, With_Extension => False);
!       Nodes.Table (Nod).Nkind := New_Node_Kind;
!       Nodes.Table (Nod).Sloc  := New_Sloc;
!       pragma Debug (New_Node_Debugging_Output (Nod));
  
        --  If this is a node with a real location and we are generating source
        --  nodes, then reset Current_Error_Node. This is useful if we bomb
        --  during parsing to get an error location for the bomb.
  
!       if Default_Node.Comes_From_Source and then New_Sloc > No_Location then
!          Current_Error_Node := Nod;
        end if;
  
        --  Mark the new node as Ghost depending on the current Ghost region
  
!       Mark_New_Ghost_Node (Nod);
  
!       return Nod;
     end New_Node;
  
     -------------------------
--- 1380,1406 ----
       (New_Node_Kind : Node_Kind;
        New_Sloc      : Source_Ptr) return Node_Id
     is
        pragma Assert (New_Node_Kind not in N_Entity);
!       New_Id : constant Node_Id := Allocate_New_Node;
!       pragma Assert (Orig_Nodes.Table (Orig_Nodes.Last) = Nodes.Last);
!    begin
!       Nodes.Table (New_Id).Nkind := New_Node_Kind;
!       Nodes.Table (New_Id).Sloc  := New_Sloc;
!       pragma Debug (New_Node_Debugging_Output (New_Id));
  
        --  If this is a node with a real location and we are generating source
        --  nodes, then reset Current_Error_Node. This is useful if we bomb
        --  during parsing to get an error location for the bomb.
  
!       if Comes_From_Source_Default and then New_Sloc > No_Location then
!          Current_Error_Node := New_Id;
        end if;
  
        --  Mark the new node as Ghost depending on the current Ghost region
  
!       Mark_New_Ghost_Node (New_Id);
  
!       return New_Id;
     end New_Node;
  
     -------------------------
*************** package body Atree is
*** 1784,1953 ****
        return Nodes.Table (N).Nkind;
     end Nkind;
  
-    --------------
-    -- Nkind_In --
-    --------------
- 
-    function Nkind_In
-      (N  : Node_Id;
-       V1 : Node_Kind;
-       V2 : Node_Kind) return Boolean
-    is
-    begin
-       return Nkind_In (Nkind (N), V1, V2);
-    end Nkind_In;
- 
-    function Nkind_In
-      (N  : Node_Id;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind) return Boolean
-    is
-    begin
-       return Nkind_In (Nkind (N), V1, V2, V3);
-    end Nkind_In;
- 
-    function Nkind_In
-      (N  : Node_Id;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind) return Boolean
-    is
-    begin
-       return Nkind_In (Nkind (N), V1, V2, V3, V4);
-    end Nkind_In;
- 
-    function Nkind_In
-      (N  : Node_Id;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind) return Boolean
-    is
-    begin
-       return Nkind_In (Nkind (N), V1, V2, V3, V4, V5);
-    end Nkind_In;
- 
-    function Nkind_In
-      (N  : Node_Id;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind;
-       V6 : Node_Kind) return Boolean
-    is
-    begin
-       return Nkind_In (Nkind (N), V1, V2, V3, V4, V5, V6);
-    end Nkind_In;
- 
-    function Nkind_In
-      (N  : Node_Id;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind;
-       V6 : Node_Kind;
-       V7 : Node_Kind) return Boolean
-    is
-    begin
-       return Nkind_In (Nkind (N), V1, V2, V3, V4, V5, V6, V7);
-    end Nkind_In;
- 
-    function Nkind_In
-      (N  : Node_Id;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind;
-       V6 : Node_Kind;
-       V7 : Node_Kind;
-       V8 : Node_Kind) return Boolean
-    is
-    begin
-       return Nkind_In (Nkind (N), V1, V2, V3, V4, V5, V6, V7, V8);
-    end Nkind_In;
- 
-    function Nkind_In
-      (N  : Node_Id;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind;
-       V6 : Node_Kind;
-       V7 : Node_Kind;
-       V8 : Node_Kind;
-       V9 : Node_Kind) return Boolean
-    is
-    begin
-       return Nkind_In (Nkind (N), V1, V2, V3, V4, V5, V6, V7, V8, V9);
-    end Nkind_In;
- 
-    function Nkind_In
-      (N   : Node_Id;
-       V1  : Node_Kind;
-       V2  : Node_Kind;
-       V3  : Node_Kind;
-       V4  : Node_Kind;
-       V5  : Node_Kind;
-       V6  : Node_Kind;
-       V7  : Node_Kind;
-       V8  : Node_Kind;
-       V9  : Node_Kind;
-       V10 : Node_Kind) return Boolean
-    is
-    begin
-       return Nkind_In (Nkind (N), V1, V2, V3, V4, V5, V6, V7, V8, V9, V10);
-    end Nkind_In;
- 
-    function Nkind_In
-      (N   : Node_Id;
-       V1  : Node_Kind;
-       V2  : Node_Kind;
-       V3  : Node_Kind;
-       V4  : Node_Kind;
-       V5  : Node_Kind;
-       V6  : Node_Kind;
-       V7  : Node_Kind;
-       V8  : Node_Kind;
-       V9  : Node_Kind;
-       V10 : Node_Kind;
-       V11 : Node_Kind) return Boolean
-    is
-    begin
-       return Nkind_In (Nkind (N), V1, V2, V3, V4, V5, V6, V7, V8, V9, V10,
-                                   V11);
-    end Nkind_In;
- 
-    function Nkind_In
-      (N   : Node_Id;
-       V1  : Node_Kind;
-       V2  : Node_Kind;
-       V3  : Node_Kind;
-       V4  : Node_Kind;
-       V5  : Node_Kind;
-       V6  : Node_Kind;
-       V7  : Node_Kind;
-       V8  : Node_Kind;
-       V9  : Node_Kind;
-       V10 : Node_Kind;
-       V11 : Node_Kind;
-       V12 : Node_Kind;
-       V13 : Node_Kind;
-       V14 : Node_Kind;
-       V15 : Node_Kind;
-       V16 : Node_Kind) return Boolean
-    is
-    begin
-       return Nkind_In (Nkind (N), V1, V2, V3, V4, V5, V6, V7, V8, V9, V10,
-                                   V11, V12, V13, V14, V15, V16);
-    end Nkind_In;
- 
     --------
     -- No --
     --------
--- 1440,1445 ----
*************** package body Atree is
*** 1989,2002 ****
        return Nodes.Table (First_Node_Id)'Address;
     end Nodes_Address;
  
!    ---------------
!    -- Num_Nodes --
!    ---------------
  
!    function Num_Nodes return Nat is
     begin
!       return Node_Count;
!    end Num_Nodes;
  
     -------------------
     -- Original_Node --
--- 1481,1498 ----
        return Nodes.Table (First_Node_Id)'Address;
     end Nodes_Address;
  
!    -----------------------------------
!    -- Approx_Num_Nodes_And_Entities --
!    -----------------------------------
  
!    function Approx_Num_Nodes_And_Entities return Nat is
     begin
!       --  This is an overestimate, because entities take up more space, but
!       --  that really doesn't matter; it's not worth subtracting out the
!       --  "extra".
! 
!       return Nat (Nodes.Last - First_Node_Id);
!    end Approx_Num_Nodes_And_Entities;
  
     -------------------
     -- Original_Node --
*************** package body Atree is
*** 2071,2078 ****
  
     procedure Preserve_Comes_From_Source (NewN, OldN : Node_Id) is
     begin
!       Nodes.Table (NewN).Comes_From_Source :=
!         Nodes.Table (OldN).Comes_From_Source;
     end Preserve_Comes_From_Source;
  
     ----------------------
--- 1567,1573 ----
  
     procedure Preserve_Comes_From_Source (NewN, OldN : Node_Id) is
     begin
!       Set_Comes_From_Source (NewN, Comes_From_Source (OldN));
     end Preserve_Comes_From_Source;
  
     ----------------------
*************** package body Atree is
*** 2259,2264 ****
--- 1754,1770 ----
        end if;
     end Replace;
  
+    ------------
+    -- Report --
+    ------------
+ 
+    procedure Report (Target, Source : Node_Id) is
+    begin
+       if Reporting_Proc /= null then
+          Reporting_Proc.all (Target, Source);
+       end if;
+    end Report;
+ 
     -------------
     -- Rewrite --
     -------------
*************** package body Atree is
*** 2391,2397 ****
  
     procedure Set_Comes_From_Source_Default (Default : Boolean) is
     begin
!       Default_Node.Comes_From_Source := Default;
     end Set_Comes_From_Source_Default;
  
     ---------------
--- 1897,1903 ----
  
     procedure Set_Comes_From_Source_Default (Default : Boolean) is
     begin
!       Comes_From_Source_Default := Default;
     end Set_Comes_From_Source_Default;
  
     ---------------
*************** package body Atree is
*** 2479,2484 ****
--- 1985,1992 ----
           Nodes.Table (N).Pflag1 := True;
           Nodes.Table (N).Pflag2 := True;
  
+          --  Search for existing table entry
+ 
           for J in Paren_Counts.First .. Paren_Counts.Last loop
              if N = Paren_Counts.Table (J).Nod then
                 Paren_Counts.Table (J).Count := Val;
*************** package body Atree is
*** 2486,2495 ****
--- 1994,2023 ----
              end if;
           end loop;
  
+          --  No existing table entry; make a new one
+ 
           Paren_Counts.Append ((Nod => N, Count => Val));
        end if;
     end Set_Paren_Count;
  
+    -----------------------------
+    -- Set_Paren_Count_Of_Copy --
+    -----------------------------
+ 
+    procedure Set_Paren_Count_Of_Copy (Target, Source : Node_Id) is
+    begin
+       --  We already copied the two Pflags. We need to update the Paren_Counts
+       --  table only if greater than 2.
+ 
+       if Nkind (Source) in N_Subexpr
+         and then Paren_Count (Source) > 2
+       then
+          Set_Paren_Count (Target, Paren_Count (Source));
+       end if;
+ 
+       pragma Assert (Paren_Count (Target) = Paren_Count (Source));
+    end Set_Paren_Count_Of_Copy;
+ 
     ----------------
     -- Set_Parent --
     ----------------
*************** package body Atree is
*** 2686,2717 ****
        Discard := Traverse (Node);
     end Traverse_Proc;
  
-    ---------------
-    -- Tree_Read --
-    ---------------
- 
-    procedure Tree_Read is
-    begin
-       Tree_Read_Int (Node_Count);
-       Nodes.Tree_Read;
-       Flags.Tree_Read;
-       Orig_Nodes.Tree_Read;
-       Paren_Counts.Tree_Read;
-    end Tree_Read;
- 
-    ----------------
-    -- Tree_Write --
-    ----------------
- 
-    procedure Tree_Write is
-    begin
-       Tree_Write_Int (Node_Count);
-       Nodes.Tree_Write;
-       Flags.Tree_Write;
-       Orig_Nodes.Tree_Write;
-       Paren_Counts.Tree_Write;
-    end Tree_Write;
- 
     ------------------------------
     -- Unchecked Access Package --
     ------------------------------
--- 2214,2219 ----
*************** package body Atree is
*** 9278,9284 ****
  
     procedure Unlock is
     begin
-       Nodes.Locked := False;
        Flags.Locked := False;
        Orig_Nodes.Locked := False;
     end Unlock;
--- 8780,8785 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/atree.ads gcc-11.1.0/gcc/ada/atree.ads
*** gcc-10.3.0/gcc/ada/atree.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/atree.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Atree is
*** 70,76 ****
  
     --  Currently entities are composed of 7 sequentially allocated 32-byte
     --  nodes, considered as a single record. The following definition gives
!    --  the number of extension nodes.
  
     Num_Extension_Nodes : Node_Id := 6;
     --  This value is increased by one if debug flag -gnatd.N is set. This is
--- 64,70 ----
  
     --  Currently entities are composed of 7 sequentially allocated 32-byte
     --  nodes, considered as a single record. The following definition gives
!    --  the number of extension nodes. ????We plan to change this.
  
     Num_Extension_Nodes : Node_Id := 6;
     --  This value is increased by one if debug flag -gnatd.N is set. This is
*************** package Atree is
*** 81,86 ****
--- 75,84 ----
     --  2.01 for the nodes/entities ratio and a 2% increase in compilation time
     --  on average for the GCC-based compiler at -O0 on a 32-bit x86 host.
  
+    procedure Print_Statistics;
+    pragma Export (Ada, Print_Statistics);
+    --  Print various statistics on the tables maintained by the package
+ 
     ----------------------------------------
     -- Definitions of Fields in Tree Node --
     ----------------------------------------
*************** package Atree is
*** 231,242 ****
     function Flags_Address return System.Address;
     --  Return address of Flags table (used in Back_End for Gigi call)
  
!    function Num_Nodes return Nat;
!    --  Total number of nodes allocated, where an entity counts as a single
!    --  node. This count is incremented every time a node or entity is
!    --  allocated, and decremented every time a node or entity is deleted.
!    --  This value is used by Xref and by Treepr to allocate hash tables of
!    --  suitable size for hashing Node_Id values.
  
     -----------------------
     -- Use of Empty Node --
--- 229,237 ----
     function Flags_Address return System.Address;
     --  Return address of Flags table (used in Back_End for Gigi call)
  
!    function Approx_Num_Nodes_And_Entities return Nat;
!    --  This is an approximation to the number of nodes and entities allocated,
!    --  used to determine sizes of hash tables.
  
     -----------------------
     -- Use of Empty Node --
*************** package Atree is
*** 404,413 ****
     --  place, and then for subsequent modifications as required.
  
     procedure Initialize;
!    --  Called at the start of compilation to initialize the allocation of
!    --  the node and list tables and make the standard entries for Empty,
!    --  Error and Error_List. Note that Initialize must not be called if
!    --  Tree_Read is used.
  
     procedure Lock;
     --  Called before the back end is invoked to lock the nodes table
--- 399,406 ----
     --  place, and then for subsequent modifications as required.
  
     procedure Initialize;
!    --  Called at the start of compilation to initialize the allocation of the
!    --  node and list tables and make the entries for Empty and Error.
  
     procedure Lock;
     --  Called before the back end is invoked to lock the nodes table
*************** package Atree is
*** 425,439 ****
     --  Called to unlock entity modifications when assertions are enabled; if
     --  assertions are not enabled calling this subprogram has no effect.
  
-    procedure Tree_Read;
-    --  Initializes internal tables from current tree file using the relevant
-    --  Table.Tree_Read routines. Note that Initialize should not be called if
-    --  Tree_Read is used. Tree_Read includes all necessary initialization.
- 
-    procedure Tree_Write;
-    --  Writes out internal tables to current tree file using the relevant
-    --  Table.Tree_Write routines.
- 
     function New_Node
       (New_Node_Kind : Node_Kind;
        New_Sloc      : Source_Ptr) return Node_Id;
--- 418,423 ----
*************** package Atree is
*** 561,567 ****
     --  semantic chains: Homonym and Next_Entity: the corresponding links must
     --  be adjusted by the caller, according to context.
  
!    function Extend_Node (Node : Node_Id) return Entity_Id;
     --  This function returns a copy of its input node with an extension added.
     --  The fields of the extension are set to Empty. Due to the way extensions
     --  are handled (as four consecutive array elements), it may be necessary
--- 545,551 ----
     --  semantic chains: Homonym and Next_Entity: the corresponding links must
     --  be adjusted by the caller, according to context.
  
!    function Extend_Node (Source : Node_Id) return Entity_Id;
     --  This function returns a copy of its input node with an extension added.
     --  The fields of the extension are set to Empty. Due to the way extensions
     --  are handled (as four consecutive array elements), it may be necessary
*************** package Atree is
*** 680,1013 ****
     function Sloc                         (N : Node_Id) return Source_Ptr;
     pragma Inline (Sloc);
  
-    ---------------------
-    -- Node_Kind Tests --
-    ---------------------
- 
-    --  These are like the functions in Sinfo, but the first argument is a
-    --  Node_Id, and the tested field is Nkind (N).
- 
-    function Nkind_In
-      (N  : Node_Id;
-       V1 : Node_Kind;
-       V2 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (N  : Node_Id;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (N  : Node_Id;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (N  : Node_Id;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (N  : Node_Id;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind;
-       V6 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (N  : Node_Id;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind;
-       V6 : Node_Kind;
-       V7 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (N  : Node_Id;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind;
-       V6 : Node_Kind;
-       V7 : Node_Kind;
-       V8 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (N  : Node_Id;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind;
-       V6 : Node_Kind;
-       V7 : Node_Kind;
-       V8 : Node_Kind;
-       V9 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (N   : Node_Id;
-       V1  : Node_Kind;
-       V2  : Node_Kind;
-       V3  : Node_Kind;
-       V4  : Node_Kind;
-       V5  : Node_Kind;
-       V6  : Node_Kind;
-       V7  : Node_Kind;
-       V8  : Node_Kind;
-       V9  : Node_Kind;
-       V10 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (N   : Node_Id;
-       V1  : Node_Kind;
-       V2  : Node_Kind;
-       V3  : Node_Kind;
-       V4  : Node_Kind;
-       V5  : Node_Kind;
-       V6  : Node_Kind;
-       V7  : Node_Kind;
-       V8  : Node_Kind;
-       V9  : Node_Kind;
-       V10 : Node_Kind;
-       V11 : Node_Kind) return Boolean;
- 
-    --  12..15-parameter versions are not yet needed
- 
-    function Nkind_In
-      (N   : Node_Id;
-       V1  : Node_Kind;
-       V2  : Node_Kind;
-       V3  : Node_Kind;
-       V4  : Node_Kind;
-       V5  : Node_Kind;
-       V6  : Node_Kind;
-       V7  : Node_Kind;
-       V8  : Node_Kind;
-       V9  : Node_Kind;
-       V10 : Node_Kind;
-       V11 : Node_Kind;
-       V12 : Node_Kind;
-       V13 : Node_Kind;
-       V14 : Node_Kind;
-       V15 : Node_Kind;
-       V16 : Node_Kind) return Boolean;
- 
-    pragma Inline (Nkind_In);
-    --  Inline all above functions
- 
-    -----------------------
-    -- Entity_Kind_Tests --
-    -----------------------
- 
-    --  Utility functions to test whether an Entity_Kind value, either given
-    --  directly as the first argument, or the Ekind field of an Entity given
-    --  as the first argument, matches any of the given list of Entity_Kind
-    --  values. Return True if any match, False if no match.
- 
-    function Ekind_In
-      (E  : Entity_Id;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (E  : Entity_Id;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (E  : Entity_Id;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (E  : Entity_Id;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (E  : Entity_Id;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind;
-       V6 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (E  : Entity_Id;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind;
-       V6 : Entity_Kind;
-       V7 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (E  : Entity_Id;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind;
-       V6 : Entity_Kind;
-       V7 : Entity_Kind;
-       V8 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (E  : Entity_Id;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind;
-       V6 : Entity_Kind;
-       V7 : Entity_Kind;
-       V8 : Entity_Kind;
-       V9 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (E   : Entity_Id;
-       V1  : Entity_Kind;
-       V2  : Entity_Kind;
-       V3  : Entity_Kind;
-       V4  : Entity_Kind;
-       V5  : Entity_Kind;
-       V6  : Entity_Kind;
-       V7  : Entity_Kind;
-       V8  : Entity_Kind;
-       V9  : Entity_Kind;
-       V10 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (E   : Entity_Id;
-       V1  : Entity_Kind;
-       V2  : Entity_Kind;
-       V3  : Entity_Kind;
-       V4  : Entity_Kind;
-       V5  : Entity_Kind;
-       V6  : Entity_Kind;
-       V7  : Entity_Kind;
-       V8  : Entity_Kind;
-       V9  : Entity_Kind;
-       V10 : Entity_Kind;
-       V11 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (T  : Entity_Kind;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (T  : Entity_Kind;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (T  : Entity_Kind;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (T  : Entity_Kind;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (T  : Entity_Kind;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind;
-       V6 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (T  : Entity_Kind;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind;
-       V6 : Entity_Kind;
-       V7 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (T  : Entity_Kind;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind;
-       V6 : Entity_Kind;
-       V7 : Entity_Kind;
-       V8 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (T  : Entity_Kind;
-       V1 : Entity_Kind;
-       V2 : Entity_Kind;
-       V3 : Entity_Kind;
-       V4 : Entity_Kind;
-       V5 : Entity_Kind;
-       V6 : Entity_Kind;
-       V7 : Entity_Kind;
-       V8 : Entity_Kind;
-       V9 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (T   : Entity_Kind;
-       V1  : Entity_Kind;
-       V2  : Entity_Kind;
-       V3  : Entity_Kind;
-       V4  : Entity_Kind;
-       V5  : Entity_Kind;
-       V6  : Entity_Kind;
-       V7  : Entity_Kind;
-       V8  : Entity_Kind;
-       V9  : Entity_Kind;
-       V10 : Entity_Kind) return Boolean;
- 
-    function Ekind_In
-      (T   : Entity_Kind;
-       V1  : Entity_Kind;
-       V2  : Entity_Kind;
-       V3  : Entity_Kind;
-       V4  : Entity_Kind;
-       V5  : Entity_Kind;
-       V6  : Entity_Kind;
-       V7  : Entity_Kind;
-       V8  : Entity_Kind;
-       V9  : Entity_Kind;
-       V10 : Entity_Kind;
-       V11 : Entity_Kind) return Boolean;
- 
-    pragma Inline (Ekind_In);
-    --  Inline all above functions
- 
     -----------------------------
     -- Entity Access Functions --
     -----------------------------
--- 664,669 ----
*************** package Atree is
*** 1055,1064 ****
     procedure Set_Original_Node         (N : Node_Id; Val : Node_Id);
     pragma Inline (Set_Original_Node);
     --  Note that this routine is used only in very peculiar cases. In normal
!    --  cases, the Original_Node link is set by calls to Rewrite. We currently
!    --  use it in ASIS mode to manually set the link from pragma expressions to
!    --  their aspect original source expressions, so that the original source
!    --  expressions accessed by ASIS are also semantically analyzed.
  
     procedure Set_Parent                (N : Node_Id; Val : Node_Id);
     pragma Inline (Set_Parent);
--- 711,717 ----
     procedure Set_Original_Node         (N : Node_Id; Val : Node_Id);
     pragma Inline (Set_Original_Node);
     --  Note that this routine is used only in very peculiar cases. In normal
!    --  cases, the Original_Node link is set by calls to Rewrite.
  
     procedure Set_Parent                (N : Node_Id; Val : Node_Id);
     pragma Inline (Set_Parent);
*************** package Atree is
*** 1180,1189 ****
     function Original_Node (Node : Node_Id) return Node_Id;
     pragma Inline (Original_Node);
     --  If Node has not been rewritten, then returns its input argument
!    --  unchanged, else returns the Node for the original subtree. Note that
!    --  this is used extensively by ASIS on the trees constructed in ASIS mode
!    --  to reconstruct the original semantic tree. See section in sinfo.ads
!    --  for requirements on original nodes returned by this function.
     --
     --  Note: Parents are not preserved in original tree nodes that are
     --  retrieved in this way (i.e. their children may have children whose
--- 833,841 ----
     function Original_Node (Node : Node_Id) return Node_Id;
     pragma Inline (Original_Node);
     --  If Node has not been rewritten, then returns its input argument
!    --  unchanged, else returns the Node for the original subtree. See section
!    --  in sinfo.ads for requirements on original nodes returned by this
!    --  function.
     --
     --  Note: Parents are not preserved in original tree nodes that are
     --  retrieved in this way (i.e. their children may have children whose
*************** package Atree is
*** 4185,4191 ****
              --    Field6-11     Holds Field36-Field41
  
           end case;
!       end record;
  
        pragma Pack (Node_Record);
        for Node_Record'Size use 8 * 32;
--- 3837,3844 ----
              --    Field6-11     Holds Field36-Field41
  
           end case;
!       end record; -- Node_Record
!       pragma Suppress_Initialization (Node_Record); -- see package Nodes below
  
        pragma Pack (Node_Record);
        for Node_Record'Size use 8 * 32;
*************** package Atree is
*** 4197,4203 ****
        --  Default value used to initialize default nodes. Note that some of the
        --  fields get overwritten, and in particular, Nkind always gets reset.
  
!       Default_Node : Node_Record := (
           Is_Extension      => False,
           Pflag1            => False,
           Pflag2            => False,
--- 3850,3856 ----
        --  Default value used to initialize default nodes. Note that some of the
        --  fields get overwritten, and in particular, Nkind always gets reset.
  
!       Default_Node : constant Node_Record := (
           Is_Extension      => False,
           Pflag1            => False,
           Pflag2            => False,
*************** package Atree is
*** 4206,4212 ****
           Rewrite_Ins       => False,
           Analyzed          => False,
           Comes_From_Source => False,
-          --  modified by Set_Comes_From_Source_Default
           Error_Posted      => False,
           Flag4             => False,
  
--- 3859,3864 ----
*************** package Atree is
*** 4228,4234 ****
  
           Nkind             => N_Unused_At_Start,
  
!          Sloc              => No_Location,
           Link              => Empty_List_Or_Node,
           Field1            => Empty_List_Or_Node,
           Field2            => Empty_List_Or_Node,
--- 3880,3886 ----
  
           Nkind             => N_Unused_At_Start,
  
!          Sloc              => 0,
           Link              => Empty_List_Or_Node,
           Field1            => Empty_List_Or_Node,
           Field2            => Empty_List_Or_Node,
*************** package Atree is
*** 4280,4296 ****
           Field11           => Empty_List_Or_Node,
           Field12           => Empty_List_Or_Node);
  
!       --  The following defines the extendable array used for the nodes table
!       --  Nodes with extensions use six consecutive entries in the array
  
!       package Nodes is new Table.Table (
!         Table_Component_Type => Node_Record,
!         Table_Index_Type     => Node_Id'Base,
!         Table_Low_Bound      => First_Node_Id,
!         Table_Initial        => Alloc.Nodes_Initial,
!         Table_Increment      => Alloc.Nodes_Increment,
!         Release_Threshold    => Alloc.Nodes_Release_Threshold,
!         Table_Name           => "Nodes");
  
        --  The following is a parallel table to Nodes, which provides 8 more
        --  bits of space that logically belong to the corresponding node. This
--- 3932,3949 ----
           Field11           => Empty_List_Or_Node,
           Field12           => Empty_List_Or_Node);
  
!       --  The following defines the extendable array used for the nodes table.
!       --  Nodes with extensions use multiple consecutive entries in the array
!       --  (see Num_Extension_Nodes).
  
!       package Nodes is new Table.Table
!         (Table_Component_Type => Node_Record,
!          Table_Index_Type     => Node_Id'Base,
!          Table_Low_Bound      => First_Node_Id,
!          Table_Initial        => Alloc.Nodes_Initial,
!          Table_Increment      => Alloc.Nodes_Increment,
!          Release_Threshold    => Alloc.Nodes_Release_Threshold,
!          Table_Name           => "Nodes");
  
        --  The following is a parallel table to Nodes, which provides 8 more
        --  bits of space that logically belong to the corresponding node. This
diff -Nrcpad gcc-10.3.0/gcc/ada/atree.h gcc-11.1.0/gcc/ada/atree.h
*** gcc-10.3.0/gcc/ada/atree.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/atree.h	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/aux-io.c gcc-11.1.0/gcc/ada/aux-io.c
*** gcc-10.3.0/gcc/ada/aux-io.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/aux-io.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 1992-2019, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 1992-2020, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/back_end.adb gcc-11.1.0/gcc/ada/back_end.adb
*** gcc-10.3.0/gcc/ada/back_end.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/back_end.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Back_End is
*** 385,393 ****
              elsif Is_Front_End_Switch (Argv) then
                 Scan_Front_End_Switches (Argv, Args, Next_Arg);
  
-             elsif Argv (Argv'First + 1 .. Argv'Last) = "fopenacc" then
-                Opt.OpenAcc_Enabled := True;
- 
              --  All non-front-end switches are back-end switches
  
              else
--- 385,390 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/back_end.ads gcc-11.1.0/gcc/ada/back_end.ads
*** gcc-10.3.0/gcc/ada/back_end.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/back_end.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Back_End is
*** 67,73 ****
     --  default for all of these in Opt is False).
     --
     --    Opt.Disable_FE_Inline
-    --    Opt.Disable_FE_Inline_Always
     --    Opt.Suppress_Control_Float_Optimizations
     --    Opt.Generate_SCO
     --    Opt.Generate_SCO_Instance_Table
--- 67,72 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/bcheck.adb gcc-11.1.0/gcc/ada/bcheck.adb
*** gcc-10.3.0/gcc/ada/bcheck.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bcheck.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Bcheck is
*** 771,777 ****
        --  Reset when we find a unit that depends on the default and does
        --  not have a local specification of the Optimize_Alignment setting.
  
!       OA_Unit : Unit_Id;
        --  Id of unit from which OA_Setting was set
  
        C : Character;
--- 771,777 ----
        --  Reset when we find a unit that depends on the default and does
        --  not have a local specification of the Optimize_Alignment setting.
  
!       OA_Unit : Unit_Id := No_Unit_Id;
        --  Id of unit from which OA_Setting was set
  
        C : Character;
*************** package body Bcheck is
*** 789,794 ****
--- 789,795 ----
                 null;
  
              else
+                pragma Assert (Present (OA_Unit));
                 Error_Msg_Unit_1 := Units.Table (OA_Unit).Uname;
                 Error_Msg_Unit_2 := Units.Table (U).Uname;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/bcheck.ads gcc-11.1.0/gcc/ada/bcheck.ads
*** gcc-10.3.0/gcc/ada/bcheck.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bcheck.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/binde.adb gcc-11.1.0/gcc/ada/binde.adb
*** gcc-10.3.0/gcc/ada/binde.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/binde.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Binde is
*** 1056,1061 ****
--- 1056,1063 ----
        --  becomes zero, then add to no-predecessor list.
  
        S := UNR.Table (Chosen).Successors;
+       pragma Annotate (CodePeer, Modified, S);
+ 
        while S /= No_Successor loop
           U := Succ.Table (S).After;
           UNR.Table (U).Num_Pred := UNR.Table (U).Num_Pred - 1;
*************** package body Binde is
*** 2390,2395 ****
--- 2392,2399 ----
     begin
        if ST.Reason in Elab_All .. Elab_All_Desirable then
           L := ST.Elab_All_Link;
+          pragma Annotate (CodePeer, Modified, L);
+ 
           while L /= No_Elab_All_Link loop
              Nam := Elab_All_Entries.Table (L).Needed_By;
              Error_Msg_Unit_1 := Nam;
diff -Nrcpad gcc-10.3.0/gcc/ada/binde.ads gcc-11.1.0/gcc/ada/binde.ads
*** gcc-10.3.0/gcc/ada/binde.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/binde.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/binderr.adb gcc-11.1.0/gcc/ada/binderr.adb
*** gcc-10.3.0/gcc/ada/binderr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/binderr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/binderr.ads gcc-11.1.0/gcc/ada/binderr.ads
*** gcc-10.3.0/gcc/ada/binderr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/binderr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/bindgen.adb gcc-11.1.0/gcc/ada/bindgen.adb
*** gcc-10.3.0/gcc/ada/bindgen.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindgen.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Osint;    use Osint;
*** 33,39 ****
  with Osint.B;  use Osint.B;
  with Output;   use Output;
  with Rident;   use Rident;
- with Stringt;  use Stringt;
  with Table;
  with Targparm; use Targparm;
  with Types;    use Types;
--- 33,38 ----
*************** package body Bindgen is
*** 197,202 ****
--- 196,202 ----
     --     Main_CPU                      : Integer;
     --     Default_Sized_SS_Pool         : System.Address;
     --     Binder_Sec_Stacks_Count       : Natural;
+    --     XDR_Stream                    : Integer;
  
     --  Main_Priority is the priority value set by pragma Priority in the main
     --  program. If no such pragma is present, the value is -1.
*************** package body Bindgen is
*** 295,300 ****
--- 295,303 ----
     --  Binder_Sec_Stacks_Count is the number of generated secondary stacks in
     --  the Default_Sized_SS_Pool.
  
+    --  XDR_Stream indicates whether streaming should be performed using the
+    --  XDR protocol. A value of one indicates that XDR streaming is enabled.
+ 
     procedure WBI (Info : String) renames Osint.B.Write_Binder_Info;
     --  Convenient shorthand used throughout
  
*************** package body Bindgen is
*** 457,463 ****
  
        if not Bind_For_Library and not CodePeer_Mode then
           WBI ("      procedure s_stalib_adafinal;");
!          Set_String ("      pragma Import (C, s_stalib_adafinal, ");
           Set_String ("""system__standard_library__adafinal"");");
           Write_Statement_Buffer;
        end if;
--- 460,466 ----
  
        if not Bind_For_Library and not CodePeer_Mode then
           WBI ("      procedure s_stalib_adafinal;");
!          Set_String ("      pragma Import (Ada, s_stalib_adafinal, ");
           Set_String ("""system__standard_library__adafinal"");");
           Write_Statement_Buffer;
        end if;
*************** package body Bindgen is
*** 758,770 ****
                   """__gnat_default_ss_size"");");
           end if;
  
!          WBI ("      Leap_Seconds_Support : Integer;");
!          WBI ("      pragma Import (C, Leap_Seconds_Support, " &
!               """__gl_leap_seconds_support"");");
           WBI ("      Bind_Env_Addr : System.Address;");
           WBI ("      pragma Import (C, Bind_Env_Addr, " &
                """__gl_bind_env_addr"");");
  
           --  Import entry point for elaboration time signal handler
           --  installation, and indication of if it's been called previously.
  
--- 761,781 ----
                   """__gnat_default_ss_size"");");
           end if;
  
!          if Leap_Seconds_Support then
!             WBI ("      Leap_Seconds_Support : Integer;");
!             WBI ("      pragma Import (C, Leap_Seconds_Support, " &
!                  """__gl_leap_seconds_support"");");
!          end if;
! 
           WBI ("      Bind_Env_Addr : System.Address;");
           WBI ("      pragma Import (C, Bind_Env_Addr, " &
                """__gl_bind_env_addr"");");
  
+          if XDR_Stream then
+             WBI ("      XDR_Stream : Integer;");
+             WBI ("      pragma Import (C, XDR_Stream, ""__gl_xdr_stream"");");
+          end if;
+ 
           --  Import entry point for elaboration time signal handler
           --  installation, and indication of if it's been called previously.
  
*************** package body Bindgen is
*** 978,993 ****
           Set_String (";");
           Write_Statement_Buffer;
  
-          Set_String ("      Leap_Seconds_Support := ");
- 
           if Leap_Seconds_Support then
!             Set_Int (1);
!          else
!             Set_Int (0);
           end if;
  
!          Set_String (";");
!          Write_Statement_Buffer;
  
           if Bind_Env_String_Built then
              WBI ("      Bind_Env_Addr := Bind_Env'Address;");
--- 989,1001 ----
           Set_String (";");
           Write_Statement_Buffer;
  
           if Leap_Seconds_Support then
!             WBI ("      Leap_Seconds_Support := 1;");
           end if;
  
!          if XDR_Stream then
!             WBI ("      XDR_Stream := 1;");
!          end if;
  
           if Bind_Env_String_Built then
              WBI ("      Bind_Env_Addr := Bind_Env'Address;");
*************** package body Bindgen is
*** 1152,1170 ****
        procedure Write_Name_With_Len (Nam : Name_Id) is
        begin
           Get_Name_String (Nam);
! 
!          Start_String;
!          Store_String_Char (Character'Val (Name_Len));
!          Store_String_Chars (Name_Buffer (1 .. Name_Len));
! 
!          Write_String_Table_Entry (End_String);
        end Write_Name_With_Len;
  
        --  Local variables
  
!       Amp : Character;
!       KN  : Name_Id := No_Name;
!       VN  : Name_Id := No_Name;
  
     --  Start of processing for Gen_Bind_Env_String
  
--- 1160,1177 ----
        procedure Write_Name_With_Len (Nam : Name_Id) is
        begin
           Get_Name_String (Nam);
!          Write_Str ("Character'Val (");
!          Write_Int (Int (Name_Len));
!          Write_Str (") & """);
!          Write_Str (Name_Buffer (1 .. Name_Len));
!          Write_Char ('"');
        end Write_Name_With_Len;
  
        --  Local variables
  
!       First : Boolean := True;
!       KN    : Name_Id := No_Name;
!       VN    : Name_Id := No_Name;
  
     --  Start of processing for Gen_Bind_Env_String
  
*************** package body Bindgen is
*** 1178,1198 ****
        Set_Special_Output (Write_Bind_Line'Access);
  
        WBI ("   Bind_Env : aliased constant String :=");
!       Amp := ' ';
        while VN /= No_Name loop
!          Write_Str ("     " & Amp & ' ');
           Write_Name_With_Len (KN);
           Write_Str (" & ");
           Write_Name_With_Len (VN);
           Write_Eol;
  
           Bind_Environment.Get_Next (KN, VN);
!          Amp := '&';
        end loop;
        WBI ("     & ASCII.NUL;");
  
        Cancel_Special_Output;
- 
        Bind_Env_String_Built := True;
     end Gen_Bind_Env_String;
  
--- 1185,1210 ----
        Set_Special_Output (Write_Bind_Line'Access);
  
        WBI ("   Bind_Env : aliased constant String :=");
! 
        while VN /= No_Name loop
!          if First then
!             Write_Str ("     ");
!          else
!             Write_Str ("     & ");
!          end if;
! 
           Write_Name_With_Len (KN);
           Write_Str (" & ");
           Write_Name_With_Len (VN);
           Write_Eol;
  
           Bind_Environment.Get_Next (KN, VN);
!          First := False;
        end loop;
+ 
        WBI ("     & ASCII.NUL;");
  
        Cancel_Special_Output;
        Bind_Env_String_Built := True;
     end Gen_Bind_Env_String;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/bindgen.ads gcc-11.1.0/gcc/ada/bindgen.ads
*** gcc-10.3.0/gcc/ada/bindgen.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindgen.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo-augmentors.adb gcc-11.1.0/gcc/ada/bindo-augmentors.adb
*** gcc-10.3.0/gcc/ada/bindo-augmentors.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo-augmentors.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Bindo.Augmentors is
*** 57,63 ****
  
        procedure Visit_Elaboration_Root
          (Inv_Graph : Invocation_Graph;
-          Lib_Graph : Library_Graph;
           Root      : Invocation_Graph_Vertex_Id);
        pragma Inline (Visit_Elaboration_Root);
        --  Start a DFS traversal from elaboration root Root to:
--- 57,62 ----
*************** package body Bindo.Augmentors is
*** 67,75 ****
        --    * Create invocation edges for each such transition where the
        --      successor is Root.
  
!       procedure Visit_Elaboration_Roots
!         (Inv_Graph : Invocation_Graph;
!          Lib_Graph : Library_Graph);
        pragma Inline (Visit_Elaboration_Roots);
        --  Start a DFS traversal from all elaboration roots to:
        --
--- 66,72 ----
        --    * Create invocation edges for each such transition where the
        --      successor is Root.
  
!       procedure Visit_Elaboration_Roots (Inv_Graph : Invocation_Graph);
        pragma Inline (Visit_Elaboration_Roots);
        --  Start a DFS traversal from all elaboration roots to:
        --
*************** package body Bindo.Augmentors is
*** 80,86 ****
  
        procedure Visit_Vertex
          (Inv_Graph                  : Invocation_Graph;
-          Lib_Graph                  : Library_Graph;
           Invoker                    : Invocation_Graph_Vertex_Id;
           Last_Vertex                : Library_Graph_Vertex_Id;
           Root_Vertex                : Library_Graph_Vertex_Id;
--- 77,82 ----
*************** package body Bindo.Augmentors is
*** 113,122 ****
        -- Augment_Library_Graph --
        ---------------------------
  
!       procedure Augment_Library_Graph
!         (Inv_Graph : Invocation_Graph;
!          Lib_Graph : Library_Graph)
!       is
        begin
           pragma Assert (Present (Lib_Graph));
  
--- 109,116 ----
        -- Augment_Library_Graph --
        ---------------------------
  
!       procedure Augment_Library_Graph (Inv_Graph : Invocation_Graph) is
!          Lib_Graph : constant Library_Graph := Get_Lib_Graph (Inv_Graph);
        begin
           pragma Assert (Present (Lib_Graph));
  
*************** package body Bindo.Augmentors is
*** 133,139 ****
           Longest_Path  := 0;
           Total_Visited := 0;
  
!          Visit_Elaboration_Roots (Inv_Graph, Lib_Graph);
           Write_Statistics;
  
           End_Phase (Library_Graph_Augmentation);
--- 127,133 ----
           Longest_Path  := 0;
           Total_Visited := 0;
  
!          Visit_Elaboration_Roots (Inv_Graph);
           Write_Statistics;
  
           End_Phase (Library_Graph_Augmentation);
*************** package body Bindo.Augmentors is
*** 145,153 ****
  
        procedure Visit_Elaboration_Root
          (Inv_Graph : Invocation_Graph;
-          Lib_Graph : Library_Graph;
           Root      : Invocation_Graph_Vertex_Id)
        is
           pragma Assert (Present (Inv_Graph));
           pragma Assert (Present (Lib_Graph));
           pragma Assert (Present (Root));
--- 139,147 ----
  
        procedure Visit_Elaboration_Root
          (Inv_Graph : Invocation_Graph;
           Root      : Invocation_Graph_Vertex_Id)
        is
+          Lib_Graph : constant Library_Graph := Get_Lib_Graph (Inv_Graph);
           pragma Assert (Present (Inv_Graph));
           pragma Assert (Present (Lib_Graph));
           pragma Assert (Present (Root));
*************** package body Bindo.Augmentors is
*** 173,179 ****
  
           Visit_Vertex
             (Inv_Graph                  => Inv_Graph,
-             Lib_Graph                  => Lib_Graph,
              Invoker                    => Root,
              Last_Vertex                => Root_Vertex,
              Root_Vertex                => Root_Vertex,
--- 167,172 ----
*************** package body Bindo.Augmentors is
*** 189,213 ****
        -- Visit_Elaboration_Roots --
        -----------------------------
  
!       procedure Visit_Elaboration_Roots
!         (Inv_Graph : Invocation_Graph;
!          Lib_Graph : Library_Graph)
!       is
           Iter : Elaboration_Root_Iterator;
           Root : Invocation_Graph_Vertex_Id;
  
        begin
-          pragma Assert (Present (Inv_Graph));
-          pragma Assert (Present (Lib_Graph));
- 
           Iter := Iterate_Elaboration_Roots (Inv_Graph);
           while Has_Next (Iter) loop
              Next (Iter, Root);
  
!             Visit_Elaboration_Root
!               (Inv_Graph => Inv_Graph,
!                Lib_Graph => Lib_Graph,
!                Root      => Root);
           end loop;
        end Visit_Elaboration_Roots;
  
--- 182,201 ----
        -- Visit_Elaboration_Roots --
        -----------------------------
  
!       procedure Visit_Elaboration_Roots (Inv_Graph : Invocation_Graph) is
!          Lib_Graph : constant Library_Graph := Get_Lib_Graph (Inv_Graph);
!          pragma Assert (Present (Inv_Graph));
!          pragma Assert (Present (Lib_Graph));
! 
           Iter : Elaboration_Root_Iterator;
           Root : Invocation_Graph_Vertex_Id;
  
        begin
           Iter := Iterate_Elaboration_Roots (Inv_Graph);
           while Has_Next (Iter) loop
              Next (Iter, Root);
  
!             Visit_Elaboration_Root (Inv_Graph => Inv_Graph, Root => Root);
           end loop;
        end Visit_Elaboration_Roots;
  
*************** package body Bindo.Augmentors is
*** 217,223 ****
  
        procedure Visit_Vertex
          (Inv_Graph                  : Invocation_Graph;
-          Lib_Graph                  : Library_Graph;
           Invoker                    : Invocation_Graph_Vertex_Id;
           Last_Vertex                : Library_Graph_Vertex_Id;
           Root_Vertex                : Library_Graph_Vertex_Id;
--- 205,210 ----
*************** package body Bindo.Augmentors is
*** 226,231 ****
--- 213,220 ----
           Internal_Controlled_Action : Boolean;
           Path                       : Natural)
        is
+          Lib_Graph : constant Library_Graph := Get_Lib_Graph (Inv_Graph);
+ 
           New_Path : constant Natural := Path + 1;
  
           Edge           : Invocation_Graph_Edge_Id;
*************** package body Bindo.Augmentors is
*** 300,306 ****
  
              Visit_Vertex
                (Inv_Graph                  => Inv_Graph,
-                Lib_Graph                  => Lib_Graph,
                 Invoker                    => Target (Inv_Graph, Edge),
                 Last_Vertex                => Invoker_Vertex,
                 Root_Vertex                => Root_Vertex,
--- 289,294 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo-augmentors.ads gcc-11.1.0/gcc/ada/bindo-augmentors.ads
*** gcc-10.3.0/gcc/ada/bindo-augmentors.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo-augmentors.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Bindo.Augmentors is
*** 42,52 ****
     ------------------------------
  
     package Library_Graph_Augmentors is
!       procedure Augment_Library_Graph
!         (Inv_Graph : Invocation_Graph;
!          Lib_Graph : Library_Graph);
!       --  Augment library graph Lib_Graph with information from invocation
!       --  graph Inv_Graph as follows:
        --
        --    1) Traverse the invocation graph starting from each elaboration
        --       procedure of unit Root.
--- 42,50 ----
     ------------------------------
  
     package Library_Graph_Augmentors is
!       procedure Augment_Library_Graph (Inv_Graph : Invocation_Graph);
!       --  Augment the library graph of Inv_Graph with information from
!       --  invocation graph Inv_Graph as follows:
        --
        --    1) Traverse the invocation graph starting from each elaboration
        --       procedure of unit Root.
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo-builders.adb gcc-11.1.0/gcc/ada/bindo-builders.adb
*** gcc-10.3.0/gcc/ada/bindo-builders.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo-builders.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Bindo.Builders is
*** 110,116 ****
           Inv_Graph :=
             Create
               (Initial_Vertices => Number_Of_Elaborable_Units,
!               Initial_Edges    => Number_Of_Elaborable_Units);
           Lib_Graph := Lib_G;
  
           For_Each_Elaborable_Unit (Create_Vertices'Access);
--- 110,117 ----
           Inv_Graph :=
             Create
               (Initial_Vertices => Number_Of_Elaborable_Units,
!               Initial_Edges    => Number_Of_Elaborable_Units,
!               Lib_Graph        => Lib_G);
           Lib_Graph := Lib_G;
  
           For_Each_Elaborable_Unit (Create_Vertices'Access);
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo-builders.ads gcc-11.1.0/gcc/ada/bindo-builders.ads
*** gcc-10.3.0/gcc/ada/bindo-builders.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo-builders.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo-diagnostics.adb gcc-11.1.0/gcc/ada/bindo-diagnostics.adb
*** gcc-10.3.0/gcc/ada/bindo-diagnostics.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo-diagnostics.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 25,31 ****
  
  with Binderr;  use Binderr;
  with Debug;    use Debug;
- with Restrict; use Restrict;
  with Rident;   use Rident;
  with Types;    use Types;
  
--- 25,30 ----
*************** package body Bindo.Diagnostics is
*** 44,65 ****
     -- Local subprograms --
     -----------------------
  
!    procedure Diagnose_All_Cycles
!      (Inv_Graph : Invocation_Graph;
!       Lib_Graph : Library_Graph);
     pragma Inline (Diagnose_All_Cycles);
     --  Emit diagnostics for all cycles of library graph G
  
     procedure Diagnose_Cycle
       (Inv_Graph : Invocation_Graph;
-       Lib_Graph : Library_Graph;
        Cycle     : Library_Graph_Cycle_Id);
     pragma Inline (Diagnose_Cycle);
     --  Emit diagnostics for cycle Cycle of library graph G
  
     procedure Find_And_Output_Invocation_Paths
       (Inv_Graph   : Invocation_Graph;
-       Lib_Graph   : Library_Graph;
        Source      : Library_Graph_Vertex_Id;
        Destination : Library_Graph_Vertex_Id);
     pragma Inline (Find_And_Output_Invocation_Paths);
--- 43,60 ----
     -- Local subprograms --
     -----------------------
  
!    procedure Diagnose_All_Cycles (Inv_Graph : Invocation_Graph);
     pragma Inline (Diagnose_All_Cycles);
     --  Emit diagnostics for all cycles of library graph G
  
     procedure Diagnose_Cycle
       (Inv_Graph : Invocation_Graph;
        Cycle     : Library_Graph_Cycle_Id);
     pragma Inline (Diagnose_Cycle);
     --  Emit diagnostics for cycle Cycle of library graph G
  
     procedure Find_And_Output_Invocation_Paths
       (Inv_Graph   : Invocation_Graph;
        Source      : Library_Graph_Vertex_Id;
        Destination : Library_Graph_Vertex_Id);
     pragma Inline (Find_And_Output_Invocation_Paths);
*************** package body Bindo.Diagnostics is
*** 69,75 ****
  
     function Find_Elaboration_Root
       (Inv_Graph : Invocation_Graph;
-       Lib_Graph : Library_Graph;
        Vertex : Library_Graph_Vertex_Id) return Invocation_Graph_Vertex_Id;
     pragma Inline (Find_Elaboration_Root);
     --  Find the elaboration root in invocation graph Inv_Graph that corresponds
--- 64,69 ----
*************** package body Bindo.Diagnostics is
*** 171,177 ****
  
     procedure Output_Invocation_Path
       (Inv_Graph         : Invocation_Graph;
-       Lib_Graph         : Library_Graph;
        Elaborated_Vertex : Library_Graph_Vertex_Id;
        Path              : IGE_Lists.Doubly_Linked_List;
        Path_Id           : in out Nat);
--- 165,170 ----
*************** package body Bindo.Diagnostics is
*** 182,192 ****
  
     procedure Output_Invocation_Path_Transition
       (Inv_Graph : Invocation_Graph;
-       Lib_Graph : Library_Graph;
        Edge      : Invocation_Graph_Edge_Id);
     pragma Inline (Output_Invocation_Path_Transition);
     --  Output a transition through edge Edge of invocation graph G, which is
!    --  part of an invocation path. Lib_Graph is the related library graph.
  
     procedure Output_Invocation_Related_Suggestions
       (G     : Library_Graph;
--- 175,184 ----
  
     procedure Output_Invocation_Path_Transition
       (Inv_Graph : Invocation_Graph;
        Edge      : Invocation_Graph_Edge_Id);
     pragma Inline (Output_Invocation_Path_Transition);
     --  Output a transition through edge Edge of invocation graph G, which is
!    --  part of an invocation path.
  
     procedure Output_Invocation_Related_Suggestions
       (G     : Library_Graph;
*************** package body Bindo.Diagnostics is
*** 197,203 ****
  
     procedure Output_Invocation_Transition
       (Inv_Graph   : Invocation_Graph;
-       Lib_Graph   : Library_Graph;
        Source      : Library_Graph_Vertex_Id;
        Destination : Library_Graph_Vertex_Id);
     pragma Inline (Output_Invocation_Transition);
--- 189,194 ----
*************** package body Bindo.Diagnostics is
*** 222,228 ****
  
     procedure Output_Transition
       (Inv_Graph            : Invocation_Graph;
-       Lib_Graph            : Library_Graph;
        Current_Edge         : Library_Graph_Edge_Id;
        Next_Edge            : Library_Graph_Edge_Id;
        Elaborate_All_Active : Boolean);
--- 213,218 ----
*************** package body Bindo.Diagnostics is
*** 247,253 ****
  
     procedure Visit_Vertex
       (Inv_Graph         : Invocation_Graph;
-       Lib_Graph         : Library_Graph;
        Invoker           : Invocation_Graph_Vertex_Id;
        Invoker_Vertex    : Library_Graph_Vertex_Id;
        Last_Vertex       : Library_Graph_Vertex_Id;
--- 237,242 ----
*************** package body Bindo.Diagnostics is
*** 269,278 ****
     -- Diagnose_All_Cycles --
     -------------------------
  
!    procedure Diagnose_All_Cycles
!      (Inv_Graph : Invocation_Graph;
!       Lib_Graph : Library_Graph)
!    is
        Cycle : Library_Graph_Cycle_Id;
        Iter  : All_Cycle_Iterator;
  
--- 258,266 ----
     -- Diagnose_All_Cycles --
     -------------------------
  
!    procedure Diagnose_All_Cycles (Inv_Graph : Invocation_Graph) is
!       Lib_Graph : constant Library_Graph := Get_Lib_Graph (Inv_Graph);
! 
        Cycle : Library_Graph_Cycle_Id;
        Iter  : All_Cycle_Iterator;
  
*************** package body Bindo.Diagnostics is
*** 284,293 ****
        while Has_Next (Iter) loop
           Next (Iter, Cycle);
  
!          Diagnose_Cycle
!            (Inv_Graph => Inv_Graph,
!             Lib_Graph => Lib_Graph,
!             Cycle     => Cycle);
        end loop;
     end Diagnose_All_Cycles;
  
--- 272,278 ----
        while Has_Next (Iter) loop
           Next (Iter, Cycle);
  
!          Diagnose_Cycle (Inv_Graph => Inv_Graph, Cycle => Cycle);
        end loop;
     end Diagnose_All_Cycles;
  
*************** package body Bindo.Diagnostics is
*** 295,304 ****
     -- Diagnose_Circularities --
     ----------------------------
  
!    procedure Diagnose_Circularities
!      (Inv_Graph : Invocation_Graph;
!       Lib_Graph : Library_Graph)
!    is
     begin
        pragma Assert (Present (Inv_Graph));
        pragma Assert (Present (Lib_Graph));
--- 280,287 ----
     -- Diagnose_Circularities --
     ----------------------------
  
!    procedure Diagnose_Circularities (Inv_Graph : Invocation_Graph) is
!       Lib_Graph : constant Library_Graph := Get_Lib_Graph (Inv_Graph);
     begin
        pragma Assert (Present (Inv_Graph));
        pragma Assert (Present (Lib_Graph));
*************** package body Bindo.Diagnostics is
*** 313,326 ****
        --  switch -d_C (diagnose all cycles) is in effect.
  
        if Debug_Flag_Underscore_CC then
!          Diagnose_All_Cycles (Inv_Graph, Lib_Graph);
  
        --  Otherwise diagnose the most important cycle in the graph
  
        else
           Diagnose_Cycle
             (Inv_Graph => Inv_Graph,
-             Lib_Graph => Lib_Graph,
              Cycle     => Highest_Precedence_Cycle (Lib_Graph));
        end if;
     end Diagnose_Circularities;
--- 296,308 ----
        --  switch -d_C (diagnose all cycles) is in effect.
  
        if Debug_Flag_Underscore_CC then
!          Diagnose_All_Cycles (Inv_Graph);
  
        --  Otherwise diagnose the most important cycle in the graph
  
        else
           Diagnose_Cycle
             (Inv_Graph => Inv_Graph,
              Cycle     => Highest_Precedence_Cycle (Lib_Graph));
        end if;
     end Diagnose_Circularities;
*************** package body Bindo.Diagnostics is
*** 331,339 ****
  
     procedure Diagnose_Cycle
       (Inv_Graph : Invocation_Graph;
-       Lib_Graph : Library_Graph;
        Cycle     : Library_Graph_Cycle_Id)
     is
        pragma Assert (Present (Inv_Graph));
        pragma Assert (Present (Lib_Graph));
        pragma Assert (Present (Cycle));
--- 313,322 ----
  
     procedure Diagnose_Cycle
       (Inv_Graph : Invocation_Graph;
        Cycle     : Library_Graph_Cycle_Id)
     is
+       Lib_Graph : constant Library_Graph := Get_Lib_Graph (Inv_Graph);
+ 
        pragma Assert (Present (Inv_Graph));
        pragma Assert (Present (Lib_Graph));
        pragma Assert (Present (Cycle));
*************** package body Bindo.Diagnostics is
*** 343,349 ****
                                   (G     => Lib_Graph,
                                    Cycle => Cycle);
  
!       Current_Edge : Library_Graph_Edge_Id;
        First_Edge   : Library_Graph_Edge_Id;
        Iter         : Edges_Of_Cycle_Iterator;
        Next_Edge    : Library_Graph_Edge_Id;
--- 326,332 ----
                                   (G     => Lib_Graph,
                                    Cycle => Cycle);
  
!       Current_Edge : Library_Graph_Edge_Id := No_Library_Graph_Edge;
        First_Edge   : Library_Graph_Edge_Id;
        Iter         : Edges_Of_Cycle_Iterator;
        Next_Edge    : Library_Graph_Edge_Id;
*************** package body Bindo.Diagnostics is
*** 382,388 ****
  
           Output_Transition
             (Inv_Graph            => Inv_Graph,
-             Lib_Graph            => Lib_Graph,
              Current_Edge         => Current_Edge,
              Next_Edge            => Next_Edge,
              Elaborate_All_Active => Elaborate_All_Active);
--- 365,370 ----
*************** package body Bindo.Diagnostics is
*** 394,400 ****
  
        Output_Transition
          (Inv_Graph            => Inv_Graph,
-          Lib_Graph            => Lib_Graph,
           Current_Edge         => Current_Edge,
           Next_Edge            => First_Edge,
           Elaborate_All_Active => Elaborate_All_Active);
--- 376,381 ----
*************** package body Bindo.Diagnostics is
*** 415,424 ****
  
     procedure Find_And_Output_Invocation_Paths
       (Inv_Graph   : Invocation_Graph;
-       Lib_Graph   : Library_Graph;
        Source      : Library_Graph_Vertex_Id;
        Destination : Library_Graph_Vertex_Id)
     is
        Path    : IGE_Lists.Doubly_Linked_List;
        Path_Id : Nat;
        Visited : IGV_Sets.Membership_Set;
--- 396,406 ----
  
     procedure Find_And_Output_Invocation_Paths
       (Inv_Graph   : Invocation_Graph;
        Source      : Library_Graph_Vertex_Id;
        Destination : Library_Graph_Vertex_Id)
     is
+       Lib_Graph : constant Library_Graph := Get_Lib_Graph (Inv_Graph);
+ 
        Path    : IGE_Lists.Doubly_Linked_List;
        Path_Id : Nat;
        Visited : IGV_Sets.Membership_Set;
*************** package body Bindo.Diagnostics is
*** 449,459 ****
  
        Visit_Vertex
          (Inv_Graph         => Inv_Graph,
-          Lib_Graph         => Lib_Graph,
           Invoker           =>
             Find_Elaboration_Root
               (Inv_Graph => Inv_Graph,
-               Lib_Graph => Lib_Graph,
                Vertex    => Source),
           Invoker_Vertex    => Source,
           Last_Vertex       => Source,
--- 431,439 ----
*************** package body Bindo.Diagnostics is
*** 473,481 ****
  
     function Find_Elaboration_Root
       (Inv_Graph : Invocation_Graph;
-       Lib_Graph : Library_Graph;
        Vertex    : Library_Graph_Vertex_Id) return Invocation_Graph_Vertex_Id
     is
        Current_Vertex : Invocation_Graph_Vertex_Id;
        Iter           : Elaboration_Root_Iterator;
        Root_Vertex    : Invocation_Graph_Vertex_Id;
--- 453,462 ----
  
     function Find_Elaboration_Root
       (Inv_Graph : Invocation_Graph;
        Vertex    : Library_Graph_Vertex_Id) return Invocation_Graph_Vertex_Id
     is
+       Lib_Graph : constant Library_Graph := Get_Lib_Graph (Inv_Graph);
+ 
        Current_Vertex : Invocation_Graph_Vertex_Id;
        Iter           : Elaboration_Root_Iterator;
        Root_Vertex    : Invocation_Graph_Vertex_Id;
*************** package body Bindo.Diagnostics is
*** 982,992 ****
  
     procedure Output_Invocation_Path
       (Inv_Graph         : Invocation_Graph;
-       Lib_Graph         : Library_Graph;
        Elaborated_Vertex : Library_Graph_Vertex_Id;
        Path              : IGE_Lists.Doubly_Linked_List;
        Path_Id           : in out Nat)
     is
        Edge : Invocation_Graph_Edge_Id;
        Iter : IGE_Lists.Iterator;
  
--- 963,974 ----
  
     procedure Output_Invocation_Path
       (Inv_Graph         : Invocation_Graph;
        Elaborated_Vertex : Library_Graph_Vertex_Id;
        Path              : IGE_Lists.Doubly_Linked_List;
        Path_Id           : in out Nat)
     is
+       Lib_Graph : constant Library_Graph := Get_Lib_Graph (Inv_Graph);
+ 
        Edge : Invocation_Graph_Edge_Id;
        Iter : IGE_Lists.Iterator;
  
*************** package body Bindo.Diagnostics is
*** 1007,1015 ****
           IGE_Lists.Next (Iter, Edge);
  
           Output_Invocation_Path_Transition
!            (Inv_Graph => Inv_Graph,
!             Lib_Graph => Lib_Graph,
!             Edge      => Edge);
        end loop;
  
        Path_Id := Path_Id + 1;
--- 989,995 ----
           IGE_Lists.Next (Iter, Edge);
  
           Output_Invocation_Path_Transition
!            (Inv_Graph => Inv_Graph, Edge => Edge);
        end loop;
  
        Path_Id := Path_Id + 1;
*************** package body Bindo.Diagnostics is
*** 1021,1029 ****
  
     procedure Output_Invocation_Path_Transition
       (Inv_Graph : Invocation_Graph;
-       Lib_Graph : Library_Graph;
        Edge      : Invocation_Graph_Edge_Id)
     is
        pragma Assert (Present (Inv_Graph));
        pragma Assert (Present (Lib_Graph));
        pragma Assert (Present (Edge));
--- 1001,1010 ----
  
     procedure Output_Invocation_Path_Transition
       (Inv_Graph : Invocation_Graph;
        Edge      : Invocation_Graph_Edge_Id)
     is
+       Lib_Graph : constant Library_Graph := Get_Lib_Graph (Inv_Graph);
+ 
        pragma Assert (Present (Inv_Graph));
        pragma Assert (Present (Lib_Graph));
        pragma Assert (Present (Edge));
*************** package body Bindo.Diagnostics is
*** 1162,1168 ****
        --  within the task body on a select or accept statement, eliminating
        --  subsequent invocation edges, thus breaking the cycle.
  
!       if not Restriction_Active (No_Entry_Calls_In_Elaboration_Code)
          and then Contains_Task_Activation (G, Cycle)
        then
           Error_Msg_Info
--- 1143,1149 ----
        --  within the task body on a select or accept statement, eliminating
        --  subsequent invocation edges, thus breaking the cycle.
  
!       if not Cumulative_Restrictions.Set (No_Entry_Calls_In_Elaboration_Code)
          and then Contains_Task_Activation (G, Cycle)
        then
           Error_Msg_Info
*************** package body Bindo.Diagnostics is
*** 1186,1195 ****
  
     procedure Output_Invocation_Transition
       (Inv_Graph   : Invocation_Graph;
-       Lib_Graph   : Library_Graph;
        Source      : Library_Graph_Vertex_Id;
        Destination : Library_Graph_Vertex_Id)
     is
     begin
        pragma Assert (Present (Inv_Graph));
        pragma Assert (Present (Lib_Graph));
--- 1167,1176 ----
  
     procedure Output_Invocation_Transition
       (Inv_Graph   : Invocation_Graph;
        Source      : Library_Graph_Vertex_Id;
        Destination : Library_Graph_Vertex_Id)
     is
+       Lib_Graph : constant Library_Graph := Get_Lib_Graph (Inv_Graph);
     begin
        pragma Assert (Present (Inv_Graph));
        pragma Assert (Present (Lib_Graph));
*************** package body Bindo.Diagnostics is
*** 1203,1209 ****
  
        Find_And_Output_Invocation_Paths
          (Inv_Graph   => Inv_Graph,
-          Lib_Graph   => Lib_Graph,
           Source      => Source,
           Destination => Destination);
     end Output_Invocation_Transition;
--- 1184,1189 ----
*************** package body Bindo.Diagnostics is
*** 1302,1312 ****
  
     procedure Output_Transition
       (Inv_Graph            : Invocation_Graph;
-       Lib_Graph            : Library_Graph;
        Current_Edge         : Library_Graph_Edge_Id;
        Next_Edge            : Library_Graph_Edge_Id;
        Elaborate_All_Active : Boolean)
     is
        pragma Assert (Present (Inv_Graph));
        pragma Assert (Present (Lib_Graph));
        pragma Assert (Present (Current_Edge));
--- 1282,1293 ----
  
     procedure Output_Transition
       (Inv_Graph            : Invocation_Graph;
        Current_Edge         : Library_Graph_Edge_Id;
        Next_Edge            : Library_Graph_Edge_Id;
        Elaborate_All_Active : Boolean)
     is
+       Lib_Graph : constant Library_Graph := Get_Lib_Graph (Inv_Graph);
+ 
        pragma Assert (Present (Inv_Graph));
        pragma Assert (Present (Lib_Graph));
        pragma Assert (Present (Current_Edge));
*************** package body Bindo.Diagnostics is
*** 1353,1359 ****
        elsif Is_Invocation_Edge (Lib_Graph, Current_Edge) then
           Output_Invocation_Transition
             (Inv_Graph   => Inv_Graph,
-             Lib_Graph   => Lib_Graph,
              Source      => Source,
              Destination => Expected_Destination);
  
--- 1334,1339 ----
*************** package body Bindo.Diagnostics is
*** 1466,1472 ****
  
     procedure Visit_Vertex
       (Inv_Graph         : Invocation_Graph;
-       Lib_Graph         : Library_Graph;
        Invoker           : Invocation_Graph_Vertex_Id;
        Invoker_Vertex    : Library_Graph_Vertex_Id;
        Last_Vertex       : Library_Graph_Vertex_Id;
--- 1446,1451 ----
*************** package body Bindo.Diagnostics is
*** 1476,1481 ****
--- 1455,1462 ----
        Path              : IGE_Lists.Doubly_Linked_List;
        Path_Id           : in out Nat)
     is
+       Lib_Graph : constant Library_Graph := Get_Lib_Graph (Inv_Graph);
+ 
        Edge : Invocation_Graph_Edge_Id;
        Iter : Edges_To_Targets_Iterator;
        Targ : Invocation_Graph_Vertex_Id;
*************** package body Bindo.Diagnostics is
*** 1500,1506 ****
        then
           Output_Invocation_Path
             (Inv_Graph         => Inv_Graph,
-             Lib_Graph         => Lib_Graph,
              Elaborated_Vertex => Elaborated_Vertex,
              Path              => Path,
              Path_Id           => Path_Id);
--- 1481,1486 ----
*************** package body Bindo.Diagnostics is
*** 1531,1537 ****
  
              Visit_Vertex
                (Inv_Graph         => Inv_Graph,
-                Lib_Graph         => Lib_Graph,
                 Invoker           => Targ,
                 Invoker_Vertex    => Body_Vertex (Inv_Graph, Targ),
                 Last_Vertex       => Invoker_Vertex,
--- 1511,1516 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo-diagnostics.ads gcc-11.1.0/gcc/ada/bindo-diagnostics.ads
*** gcc-10.3.0/gcc/ada/bindo-diagnostics.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo-diagnostics.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Bindo.Diagnostics is
*** 51,61 ****
     -- API --
     ---------
  
!    procedure Diagnose_Circularities
!      (Inv_Graph : Invocation_Graph;
!       Lib_Graph : Library_Graph);
     pragma Inline (Diagnose_Circularities);
!    --  Diagnose all cycles of library graph Lib_Graph with matching invocation
!    --  graph Inv_Graph.
  
  end Bindo.Diagnostics;
--- 51,59 ----
     -- API --
     ---------
  
!    procedure Diagnose_Circularities (Inv_Graph : Invocation_Graph);
     pragma Inline (Diagnose_Circularities);
!    --  Diagnose all cycles of the library graph of Inv_Graph with matching
!    --  invocation graph Inv_Graph.
  
  end Bindo.Diagnostics;
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo-elaborators.adb gcc-11.1.0/gcc/ada/bindo-elaborators.adb
*** gcc-10.3.0/gcc/ada/bindo-elaborators.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo-elaborators.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Bindo.Elaborators is
*** 733,739 ****
           --  order to discover transitions of the execution flow from a unit
           --  to a unit that result in extra edges within the library graph.
  
!          Augment_Library_Graph (Inv_Graph, Lib_Graph);
  
           --  Create the component graph by collapsing all library items into
           --  library units and traversing the library graph.
--- 733,739 ----
           --  order to discover transitions of the execution flow from a unit
           --  to a unit that result in extra edges within the library graph.
  
!          Augment_Library_Graph (Inv_Graph);
  
           --  Create the component graph by collapsing all library items into
           --  library units and traversing the library graph.
*************** package body Bindo.Elaborators is
*** 780,786 ****
           --  Otherwise the library graph contains at least one circularity
  
           else
!             Diagnose_Circularities (Inv_Graph, Lib_Graph);
           end if;
  
           Destroy (Inv_Graph);
--- 780,786 ----
           --  Otherwise the library graph contains at least one circularity
  
           else
!             Diagnose_Circularities (Inv_Graph);
           end if;
  
           Destroy (Inv_Graph);
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo-elaborators.ads gcc-11.1.0/gcc/ada/bindo-elaborators.ads
*** gcc-10.3.0/gcc/ada/bindo-elaborators.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo-elaborators.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo-graphs.adb gcc-11.1.0/gcc/ada/bindo-graphs.adb
*** gcc-10.3.0/gcc/ada/bindo-graphs.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo-graphs.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Bindo.Graphs is
*** 172,1038 ****
        return Bucket_Range_Type (Vertex);
     end Hash_Library_Graph_Vertex;
  
-    -----------------------
-    -- Invocation_Graphs --
-    -----------------------
- 
-    package body Invocation_Graphs is
- 
-       -----------------------
-       -- Local subprograms --
-       -----------------------
- 
-       procedure Free is
-         new Ada.Unchecked_Deallocation
-               (Invocation_Graph_Attributes, Invocation_Graph);
- 
-       function Get_IGE_Attributes
-         (G    : Invocation_Graph;
-          Edge : Invocation_Graph_Edge_Id)
-          return Invocation_Graph_Edge_Attributes;
-       pragma Inline (Get_IGE_Attributes);
-       --  Obtain the attributes of edge Edge of invocation graph G
- 
-       function Get_IGV_Attributes
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id)
-          return Invocation_Graph_Vertex_Attributes;
-       pragma Inline (Get_IGV_Attributes);
-       --  Obtain the attributes of vertex Vertex of invocation graph G
- 
-       procedure Increment_Invocation_Graph_Edge_Count
-         (G    : Invocation_Graph;
-          Kind : Invocation_Kind);
-       pragma Inline (Increment_Invocation_Graph_Edge_Count);
-       --  Increment the number of edges of king Kind in invocation graph G by
-       --  one.
- 
-       function Is_Elaboration_Root
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Boolean;
-       pragma Inline (Is_Elaboration_Root);
-       --  Determine whether vertex Vertex of invocation graph denotes the
-       --  elaboration procedure of a spec or a body.
- 
-       function Is_Existing_Source_Target_Relation
-         (G   : Invocation_Graph;
-          Rel : Source_Target_Relation) return Boolean;
-       pragma Inline (Is_Existing_Source_Target_Relation);
-       --  Determine whether a source vertex and a target vertex described by
-       --  relation Rel are already related in invocation graph G.
- 
-       procedure Save_Elaboration_Root
-         (G    : Invocation_Graph;
-          Root : Invocation_Graph_Vertex_Id);
-       pragma Inline (Save_Elaboration_Root);
-       --  Save elaboration root Root of invocation graph G
- 
-       procedure Set_Corresponding_Vertex
-         (G      : Invocation_Graph;
-          IS_Id  : Invocation_Signature_Id;
-          Vertex : Invocation_Graph_Vertex_Id);
-       pragma Inline (Set_Corresponding_Vertex);
-       --  Associate vertex Vertex of invocation graph G with signature IS_Id
- 
-       procedure Set_Is_Existing_Source_Target_Relation
-         (G   : Invocation_Graph;
-          Rel : Source_Target_Relation;
-          Val : Boolean := True);
-       pragma Inline (Set_Is_Existing_Source_Target_Relation);
-       --  Mark a source vertex and a target vertex described by relation Rel as
-       --  already related in invocation graph G depending on value Val.
- 
-       procedure Set_IGE_Attributes
-         (G    : Invocation_Graph;
-          Edge : Invocation_Graph_Edge_Id;
-          Val  : Invocation_Graph_Edge_Attributes);
-       pragma Inline (Set_IGE_Attributes);
-       --  Set the attributes of edge Edge of invocation graph G to value Val
- 
-       procedure Set_IGV_Attributes
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id;
-          Val    : Invocation_Graph_Vertex_Attributes);
-       pragma Inline (Set_IGV_Attributes);
-       --  Set the attributes of vertex Vertex of invocation graph G to value
-       --  Val.
- 
-       --------------
-       -- Add_Edge --
-       --------------
- 
-       procedure Add_Edge
-         (G      : Invocation_Graph;
-          Source : Invocation_Graph_Vertex_Id;
-          Target : Invocation_Graph_Vertex_Id;
-          IR_Id  : Invocation_Relation_Id)
-       is
-          pragma Assert (Present (G));
-          pragma Assert (Present (Source));
-          pragma Assert (Present (Target));
-          pragma Assert (Present (IR_Id));
- 
-          Rel : constant Source_Target_Relation :=
-                  (Source => Source,
-                   Target => Target);
- 
-          Edge : Invocation_Graph_Edge_Id;
- 
-       begin
-          --  Nothing to do when the source and target are already related by an
-          --  edge.
- 
-          if Is_Existing_Source_Target_Relation (G, Rel) then
-             return;
-          end if;
- 
-          Edge := Sequence_Next_Edge;
- 
-          --  Add the edge to the underlying graph
- 
-          DG.Add_Edge
-            (G           => G.Graph,
-             E           => Edge,
-             Source      => Source,
-             Destination => Target);
- 
-          --  Build and save the attributes of the edge
- 
-          Set_IGE_Attributes
-            (G    => G,
-             Edge => Edge,
-             Val  => (Relation => IR_Id));
- 
-          --  Mark the source and target as related by the new edge. This
-          --  prevents all further attempts to link the same source and target.
- 
-          Set_Is_Existing_Source_Target_Relation (G, Rel);
- 
-          --  Update the edge statistics
- 
-          Increment_Invocation_Graph_Edge_Count (G, Kind (IR_Id));
-       end Add_Edge;
- 
-       ----------------
-       -- Add_Vertex --
-       ----------------
- 
-       procedure Add_Vertex
-         (G           : Invocation_Graph;
-          IC_Id       : Invocation_Construct_Id;
-          Body_Vertex : Library_Graph_Vertex_Id;
-          Spec_Vertex : Library_Graph_Vertex_Id)
-       is
-          pragma Assert (Present (G));
-          pragma Assert (Present (IC_Id));
-          pragma Assert (Present (Body_Vertex));
-          pragma Assert (Present (Spec_Vertex));
- 
-          Construct_Signature : constant Invocation_Signature_Id :=
-                                  Signature (IC_Id);
-          Vertex : Invocation_Graph_Vertex_Id;
- 
-       begin
-          --  Nothing to do when the construct already has a vertex
- 
-          if Present (Corresponding_Vertex (G, Construct_Signature)) then
-             return;
-          end if;
- 
-          Vertex := Sequence_Next_Vertex;
- 
-          --  Add the vertex to the underlying graph
- 
-          DG.Add_Vertex (G.Graph, Vertex);
- 
-          --  Build and save the attributes of the vertex
- 
-          Set_IGV_Attributes
-            (G      => G,
-             Vertex => Vertex,
-             Val    => (Body_Vertex => Body_Vertex,
-                        Construct   => IC_Id,
-                        Spec_Vertex => Spec_Vertex));
- 
-          --  Associate the construct with its corresponding vertex
- 
-          Set_Corresponding_Vertex (G, Construct_Signature, Vertex);
- 
-          --  Save the vertex for later processing when it denotes a spec or
-          --  body elaboration procedure.
- 
-          if Is_Elaboration_Root (G, Vertex) then
-             Save_Elaboration_Root (G, Vertex);
-          end if;
-       end Add_Vertex;
- 
-       -----------------
-       -- Body_Vertex --
-       -----------------
- 
-       function Body_Vertex
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Library_Graph_Vertex_Id
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Vertex));
- 
-          return Get_IGV_Attributes (G, Vertex).Body_Vertex;
-       end Body_Vertex;
- 
-       ------------
-       -- Column --
-       ------------
- 
-       function Column
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Nat
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Vertex));
- 
-          return Column (Signature (Construct (G, Vertex)));
-       end Column;
- 
-       ---------------
-       -- Construct --
-       ---------------
- 
-       function Construct
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Invocation_Construct_Id
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Vertex));
- 
-          return Get_IGV_Attributes (G, Vertex).Construct;
-       end Construct;
- 
-       --------------------------
-       -- Corresponding_Vertex --
-       --------------------------
- 
-       function Corresponding_Vertex
-         (G     : Invocation_Graph;
-          IS_Id : Invocation_Signature_Id) return Invocation_Graph_Vertex_Id
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (IS_Id));
- 
-          return Signature_Tables.Get (G.Signature_To_Vertex, IS_Id);
-       end Corresponding_Vertex;
- 
-       ------------
-       -- Create --
-       ------------
- 
-       function Create
-         (Initial_Vertices : Positive;
-          Initial_Edges    : Positive) return Invocation_Graph
-       is
-          G : constant Invocation_Graph := new Invocation_Graph_Attributes;
- 
-       begin
-          G.Edge_Attributes     := IGE_Tables.Create       (Initial_Edges);
-          G.Graph               :=
-            DG.Create
-              (Initial_Vertices => Initial_Vertices,
-               Initial_Edges    => Initial_Edges);
-          G.Relations           := Relation_Sets.Create    (Initial_Edges);
-          G.Roots               := IGV_Sets.Create         (Initial_Vertices);
-          G.Signature_To_Vertex := Signature_Tables.Create (Initial_Vertices);
-          G.Vertex_Attributes   := IGV_Tables.Create       (Initial_Vertices);
- 
-          return G;
-       end Create;
- 
-       -------------
-       -- Destroy --
-       -------------
- 
-       procedure Destroy (G : in out Invocation_Graph) is
-       begin
-          pragma Assert (Present (G));
- 
-          IGE_Tables.Destroy       (G.Edge_Attributes);
-          DG.Destroy               (G.Graph);
-          Relation_Sets.Destroy    (G.Relations);
-          IGV_Sets.Destroy         (G.Roots);
-          Signature_Tables.Destroy (G.Signature_To_Vertex);
-          IGV_Tables.Destroy       (G.Vertex_Attributes);
- 
-          Free (G);
-       end Destroy;
- 
-       -----------------------------------
-       -- Destroy_Invocation_Graph_Edge --
-       -----------------------------------
- 
-       procedure Destroy_Invocation_Graph_Edge
-         (Edge : in out Invocation_Graph_Edge_Id)
-       is
-          pragma Unreferenced (Edge);
-       begin
-          null;
-       end Destroy_Invocation_Graph_Edge;
- 
-       ----------------------------------------------
-       -- Destroy_Invocation_Graph_Edge_Attributes --
-       ----------------------------------------------
- 
-       procedure Destroy_Invocation_Graph_Edge_Attributes
-         (Attrs : in out Invocation_Graph_Edge_Attributes)
-       is
-          pragma Unreferenced (Attrs);
-       begin
-          null;
-       end Destroy_Invocation_Graph_Edge_Attributes;
- 
-       -------------------------------------
-       -- Destroy_Invocation_Graph_Vertex --
-       -------------------------------------
- 
-       procedure Destroy_Invocation_Graph_Vertex
-         (Vertex : in out Invocation_Graph_Vertex_Id)
-       is
-          pragma Unreferenced (Vertex);
-       begin
-          null;
-       end Destroy_Invocation_Graph_Vertex;
- 
-       ------------------------------------------------
-       -- Destroy_Invocation_Graph_Vertex_Attributes --
-       ------------------------------------------------
- 
-       procedure Destroy_Invocation_Graph_Vertex_Attributes
-         (Attrs : in out Invocation_Graph_Vertex_Attributes)
-       is
-          pragma Unreferenced (Attrs);
-       begin
-          null;
-       end Destroy_Invocation_Graph_Vertex_Attributes;
- 
-       -----------
-       -- Extra --
-       -----------
- 
-       function Extra
-         (G    : Invocation_Graph;
-          Edge : Invocation_Graph_Edge_Id) return Name_Id
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Edge));
- 
-          return Extra (Relation (G, Edge));
-       end Extra;
- 
-       ------------------------
-       -- Get_IGE_Attributes --
-       ------------------------
- 
-       function Get_IGE_Attributes
-         (G    : Invocation_Graph;
-          Edge : Invocation_Graph_Edge_Id)
-          return Invocation_Graph_Edge_Attributes
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Edge));
- 
-          return IGE_Tables.Get (G.Edge_Attributes, Edge);
-       end Get_IGE_Attributes;
- 
-       ------------------------
-       -- Get_IGV_Attributes --
-       ------------------------
- 
-       function Get_IGV_Attributes
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id)
-          return Invocation_Graph_Vertex_Attributes
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Vertex));
- 
-          return IGV_Tables.Get (G.Vertex_Attributes, Vertex);
-       end Get_IGV_Attributes;
- 
-       --------------
-       -- Has_Next --
-       --------------
- 
-       function Has_Next (Iter : All_Edge_Iterator) return Boolean is
-       begin
-          return DG.Has_Next (DG.All_Edge_Iterator (Iter));
-       end Has_Next;
- 
-       --------------
-       -- Has_Next --
-       --------------
- 
-       function Has_Next (Iter : All_Vertex_Iterator) return Boolean is
-       begin
-          return DG.Has_Next (DG.All_Vertex_Iterator (Iter));
-       end Has_Next;
- 
-       --------------
-       -- Has_Next --
-       --------------
- 
-       function Has_Next (Iter : Edges_To_Targets_Iterator) return Boolean is
-       begin
-          return DG.Has_Next (DG.Outgoing_Edge_Iterator (Iter));
-       end Has_Next;
- 
-       --------------
-       -- Has_Next --
-       --------------
- 
-       function Has_Next (Iter : Elaboration_Root_Iterator) return Boolean is
-       begin
-          return IGV_Sets.Has_Next (IGV_Sets.Iterator (Iter));
-       end Has_Next;
- 
-       -------------------------------
-       -- Hash_Invocation_Signature --
-       -------------------------------
- 
-       function Hash_Invocation_Signature
-         (IS_Id : Invocation_Signature_Id) return Bucket_Range_Type
-       is
-       begin
-          pragma Assert (Present (IS_Id));
- 
-          return Bucket_Range_Type (IS_Id);
-       end Hash_Invocation_Signature;
- 
-       ---------------------------------
-       -- Hash_Source_Target_Relation --
-       ---------------------------------
- 
-       function Hash_Source_Target_Relation
-         (Rel : Source_Target_Relation) return Bucket_Range_Type
-       is
-       begin
-          pragma Assert (Present (Rel.Source));
-          pragma Assert (Present (Rel.Target));
- 
-          return
-            Hash_Two_Keys
-              (Bucket_Range_Type (Rel.Source),
-               Bucket_Range_Type (Rel.Target));
-       end Hash_Source_Target_Relation;
- 
-       -------------------------------------------
-       -- Increment_Invocation_Graph_Edge_Count --
-       -------------------------------------------
- 
-       procedure Increment_Invocation_Graph_Edge_Count
-         (G    : Invocation_Graph;
-          Kind : Invocation_Kind)
-       is
-          pragma Assert (Present (G));
- 
-          Count : Natural renames G.Counts (Kind);
- 
-       begin
-          Count := Count + 1;
-       end Increment_Invocation_Graph_Edge_Count;
- 
-       ---------------------------------
-       -- Invocation_Graph_Edge_Count --
-       ---------------------------------
- 
-       function Invocation_Graph_Edge_Count
-         (G    : Invocation_Graph;
-          Kind : Invocation_Kind) return Natural
-       is
-       begin
-          pragma Assert (Present (G));
- 
-          return G.Counts (Kind);
-       end Invocation_Graph_Edge_Count;
- 
-       -------------------------
-       -- Is_Elaboration_Root --
-       -------------------------
- 
-       function Is_Elaboration_Root
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Boolean
-       is
-          pragma Assert (Present (G));
-          pragma Assert (Present (Vertex));
- 
-          Vertex_Kind : constant Invocation_Construct_Kind :=
-                          Kind (Construct (G, Vertex));
- 
-       begin
-          return
-            Vertex_Kind = Elaborate_Body_Procedure
-              or else
-            Vertex_Kind = Elaborate_Spec_Procedure;
-       end Is_Elaboration_Root;
- 
-       ----------------------------------------
-       -- Is_Existing_Source_Target_Relation --
-       ----------------------------------------
- 
-       function Is_Existing_Source_Target_Relation
-         (G   : Invocation_Graph;
-          Rel : Source_Target_Relation) return Boolean
-       is
-       begin
-          pragma Assert (Present (G));
- 
-          return Relation_Sets.Contains (G.Relations, Rel);
-       end Is_Existing_Source_Target_Relation;
- 
-       -----------------------
-       -- Iterate_All_Edges --
-       -----------------------
- 
-       function Iterate_All_Edges
-         (G : Invocation_Graph) return All_Edge_Iterator
-       is
-       begin
-          pragma Assert (Present (G));
- 
-          return All_Edge_Iterator (DG.Iterate_All_Edges (G.Graph));
-       end Iterate_All_Edges;
- 
-       --------------------------
-       -- Iterate_All_Vertices --
-       --------------------------
- 
-       function Iterate_All_Vertices
-         (G : Invocation_Graph) return All_Vertex_Iterator
-       is
-       begin
-          pragma Assert (Present (G));
- 
-          return All_Vertex_Iterator (DG.Iterate_All_Vertices (G.Graph));
-       end Iterate_All_Vertices;
- 
-       ------------------------------
-       -- Iterate_Edges_To_Targets --
-       ------------------------------
- 
-       function Iterate_Edges_To_Targets
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Edges_To_Targets_Iterator
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Vertex));
- 
-          return
-            Edges_To_Targets_Iterator
-              (DG.Iterate_Outgoing_Edges (G.Graph, Vertex));
-       end Iterate_Edges_To_Targets;
- 
-       -------------------------------
-       -- Iterate_Elaboration_Roots --
-       -------------------------------
- 
-       function Iterate_Elaboration_Roots
-         (G : Invocation_Graph) return Elaboration_Root_Iterator
-       is
-       begin
-          pragma Assert (Present (G));
- 
-          return Elaboration_Root_Iterator (IGV_Sets.Iterate (G.Roots));
-       end Iterate_Elaboration_Roots;
- 
-       ----------
-       -- Kind --
-       ----------
- 
-       function Kind
-         (G    : Invocation_Graph;
-          Edge : Invocation_Graph_Edge_Id) return Invocation_Kind
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Edge));
- 
-          return Kind (Relation (G, Edge));
-       end Kind;
- 
-       ----------
-       -- Line --
-       ----------
- 
-       function Line
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Nat
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Vertex));
- 
-          return Line (Signature (Construct (G, Vertex)));
-       end Line;
- 
-       ----------
-       -- Name --
-       ----------
- 
-       function Name
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Name_Id
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Vertex));
- 
-          return Name (Signature (Construct (G, Vertex)));
-       end Name;
- 
-       ----------
-       -- Next --
-       ----------
- 
-       procedure Next
-         (Iter : in out All_Edge_Iterator;
-          Edge : out Invocation_Graph_Edge_Id)
-       is
-       begin
-          DG.Next (DG.All_Edge_Iterator (Iter), Edge);
-       end Next;
- 
-       ----------
-       -- Next --
-       ----------
- 
-       procedure Next
-         (Iter   : in out All_Vertex_Iterator;
-          Vertex : out Invocation_Graph_Vertex_Id)
-       is
-       begin
-          DG.Next (DG.All_Vertex_Iterator (Iter), Vertex);
-       end Next;
- 
-       ----------
-       -- Next --
-       ----------
- 
-       procedure Next
-         (Iter : in out Edges_To_Targets_Iterator;
-          Edge : out Invocation_Graph_Edge_Id)
-       is
-       begin
-          DG.Next (DG.Outgoing_Edge_Iterator (Iter), Edge);
-       end Next;
- 
-       ----------
-       -- Next --
-       ----------
- 
-       procedure Next
-         (Iter : in out Elaboration_Root_Iterator;
-          Root : out Invocation_Graph_Vertex_Id)
-       is
-       begin
-          IGV_Sets.Next (IGV_Sets.Iterator (Iter), Root);
-       end Next;
- 
-       ---------------------
-       -- Number_Of_Edges --
-       ---------------------
- 
-       function Number_Of_Edges (G : Invocation_Graph) return Natural is
-       begin
-          pragma Assert (Present (G));
- 
-          return DG.Number_Of_Edges (G.Graph);
-       end Number_Of_Edges;
- 
-       --------------------------------
-       -- Number_Of_Edges_To_Targets --
-       --------------------------------
- 
-       function Number_Of_Edges_To_Targets
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Natural
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Vertex));
- 
-          return DG.Number_Of_Outgoing_Edges (G.Graph, Vertex);
-       end Number_Of_Edges_To_Targets;
- 
-       ---------------------------------
-       -- Number_Of_Elaboration_Roots --
-       ---------------------------------
- 
-       function Number_Of_Elaboration_Roots
-         (G : Invocation_Graph) return Natural
-       is
-       begin
-          pragma Assert (Present (G));
- 
-          return IGV_Sets.Size (G.Roots);
-       end Number_Of_Elaboration_Roots;
- 
-       ------------------------
-       -- Number_Of_Vertices --
-       ------------------------
- 
-       function Number_Of_Vertices (G : Invocation_Graph) return Natural is
-       begin
-          pragma Assert (Present (G));
- 
-          return DG.Number_Of_Vertices (G.Graph);
-       end Number_Of_Vertices;
- 
-       -------------
-       -- Present --
-       -------------
- 
-       function Present (G : Invocation_Graph) return Boolean is
-       begin
-          return G /= Nil;
-       end Present;
- 
-       --------------
-       -- Relation --
-       --------------
- 
-       function Relation
-         (G    : Invocation_Graph;
-          Edge : Invocation_Graph_Edge_Id) return Invocation_Relation_Id
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Edge));
- 
-          return Get_IGE_Attributes (G, Edge).Relation;
-       end Relation;
- 
-       ---------------------------
-       -- Save_Elaboration_Root --
-       ---------------------------
- 
-       procedure Save_Elaboration_Root
-         (G    : Invocation_Graph;
-          Root : Invocation_Graph_Vertex_Id)
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Root));
- 
-          IGV_Sets.Insert (G.Roots, Root);
-       end Save_Elaboration_Root;
- 
-       ------------------------------
-       -- Set_Corresponding_Vertex --
-       ------------------------------
- 
-       procedure Set_Corresponding_Vertex
-         (G      : Invocation_Graph;
-          IS_Id  : Invocation_Signature_Id;
-          Vertex : Invocation_Graph_Vertex_Id)
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (IS_Id));
-          pragma Assert (Present (Vertex));
- 
-          Signature_Tables.Put (G.Signature_To_Vertex, IS_Id, Vertex);
-       end Set_Corresponding_Vertex;
- 
-       --------------------------------------------
-       -- Set_Is_Existing_Source_Target_Relation --
-       --------------------------------------------
- 
-       procedure Set_Is_Existing_Source_Target_Relation
-         (G   : Invocation_Graph;
-          Rel : Source_Target_Relation;
-          Val : Boolean := True)
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Rel.Source));
-          pragma Assert (Present (Rel.Target));
- 
-          if Val then
-             Relation_Sets.Insert (G.Relations, Rel);
-          else
-             Relation_Sets.Delete (G.Relations, Rel);
-          end if;
-       end Set_Is_Existing_Source_Target_Relation;
- 
-       ------------------------
-       -- Set_IGE_Attributes --
-       ------------------------
- 
-       procedure Set_IGE_Attributes
-         (G    : Invocation_Graph;
-          Edge : Invocation_Graph_Edge_Id;
-          Val  : Invocation_Graph_Edge_Attributes)
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Edge));
- 
-          IGE_Tables.Put (G.Edge_Attributes, Edge, Val);
-       end Set_IGE_Attributes;
- 
-       ------------------------
-       -- Set_IGV_Attributes --
-       ------------------------
- 
-       procedure Set_IGV_Attributes
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id;
-          Val    : Invocation_Graph_Vertex_Attributes)
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Vertex));
- 
-          IGV_Tables.Put (G.Vertex_Attributes, Vertex, Val);
-       end Set_IGV_Attributes;
- 
-       -----------------
-       -- Spec_Vertex --
-       -----------------
- 
-       function Spec_Vertex
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Library_Graph_Vertex_Id
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Vertex));
- 
-          return Get_IGV_Attributes (G, Vertex).Spec_Vertex;
-       end Spec_Vertex;
- 
-       ------------
-       -- Target --
-       ------------
- 
-       function Target
-         (G      : Invocation_Graph;
-          Edge : Invocation_Graph_Edge_Id) return Invocation_Graph_Vertex_Id
-       is
-       begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Edge));
- 
-          return DG.Destination_Vertex (G.Graph, Edge);
-       end Target;
-    end Invocation_Graphs;
- 
     --------------------
     -- Library_Graphs --
     --------------------
--- 172,177 ----
*************** package body Bindo.Graphs is
*** 1060,1077 ****
        --  corresponding specs or bodies, where the body is a predecessor
        --  and the spec is a successor. Add all edges to list Edges.
  
!       function Add_Edge_With_Return
          (G              : Library_Graph;
           Pred           : Library_Graph_Vertex_Id;
           Succ           : Library_Graph_Vertex_Id;
           Kind           : Library_Graph_Edge_Kind;
           Activates_Task : Boolean) return Library_Graph_Edge_Id;
!       pragma Inline (Add_Edge_With_Return);
        --  Create a new edge in library graph G with source vertex Pred and
        --  destination vertex Succ, and return its handle. Kind denotes the
        --  nature of the edge. Activates_Task should be set when the edge
        --  involves a task activation. If Pred and Succ are already related,
!       --  no edge is created and No_Library_Graph_Edge is returned.
  
        function At_Least_One_Edge_Satisfies
          (G         : Library_Graph;
--- 199,228 ----
        --  corresponding specs or bodies, where the body is a predecessor
        --  and the spec is a successor. Add all edges to list Edges.
  
!       procedure Add_Edge_Kind_Check
!         (G              : Library_Graph;
!          Pred           : Library_Graph_Vertex_Id;
!          Succ           : Library_Graph_Vertex_Id;
!          New_Kind       : Library_Graph_Edge_Kind);
!       --  This is called by Add_Edge in the case where there is already a
!       --  Pred-->Succ edge, to assert that the New_Kind is appropriate. Raises
!       --  Program_Error if a bug is detected. The purpose is to prevent bugs
!       --  where calling Add_Edge in different orders produces different output.
! 
!       function Add_Edge
          (G              : Library_Graph;
           Pred           : Library_Graph_Vertex_Id;
           Succ           : Library_Graph_Vertex_Id;
           Kind           : Library_Graph_Edge_Kind;
           Activates_Task : Boolean) return Library_Graph_Edge_Id;
!       pragma Inline (Add_Edge);
        --  Create a new edge in library graph G with source vertex Pred and
        --  destination vertex Succ, and return its handle. Kind denotes the
        --  nature of the edge. Activates_Task should be set when the edge
        --  involves a task activation. If Pred and Succ are already related,
!       --  no edge is created and No_Library_Graph_Edge is returned, but if
!       --  Activates_Task is True, then the flag of the existing edge is
!       --  updated.
  
        function At_Least_One_Edge_Satisfies
          (G         : Library_Graph;
*************** package body Bindo.Graphs is
*** 1277,1282 ****
--- 428,439 ----
        --    * Cycle_Limit is the upper bound of the number of cycles to be
        --      discovered.
  
+       function Find_Edge
+         (G    : Library_Graph;
+          Pred : Library_Graph_Vertex_Id;
+          Succ : Library_Graph_Vertex_Id) return Library_Graph_Edge_Id;
+       --  There must be an edge Pred-->Succ; this returns it
+ 
        function Find_First_Lower_Precedence_Cycle
          (G     : Library_Graph;
           Cycle : Library_Graph_Cycle_Id) return Library_Graph_Cycle_Id;
*************** package body Bindo.Graphs is
*** 1502,1507 ****
--- 659,669 ----
        --  is the number of invocation edges along the cycle path. Indent is
        --  the desired indentation level for tracing.
  
+       procedure Set_Activates_Task
+         (G    : Library_Graph;
+          Edge : Library_Graph_Edge_Id);
+       --  Set the Activates_Task flag of the Edge to True
+ 
        procedure Set_Component_Attributes
          (G    : Library_Graph;
           Comp : Component_Id;
*************** package body Bindo.Graphs is
*** 1518,1528 ****
  
        procedure Set_Is_Recorded_Edge
          (G   : Library_Graph;
!          Rel : Predecessor_Successor_Relation;
!          Val : Boolean := True);
        pragma Inline (Set_Is_Recorded_Edge);
        --  Mark a predecessor vertex and a successor vertex described by
!       --  relation Rel as already linked depending on value Val.
  
        procedure Set_LGC_Attributes
          (G     : Library_Graph;
--- 680,689 ----
  
        procedure Set_Is_Recorded_Edge
          (G   : Library_Graph;
!          Rel : Predecessor_Successor_Relation);
        pragma Inline (Set_Is_Recorded_Edge);
        --  Mark a predecessor vertex and a successor vertex described by
!       --  relation Rel as already linked.
  
        procedure Set_LGC_Attributes
          (G     : Library_Graph;
*************** package body Bindo.Graphs is
*** 1635,1646 ****
           Edge : Library_Graph_Edge_Id) return Boolean
        is
        begin
!          pragma Assert (Present (G));
!          pragma Assert (Present (Edge));
! 
!          return
!            Kind (G, Edge) = Invocation_Edge
!             and then Get_LGE_Attributes (G, Edge).Activates_Task;
        end Activates_Task;
  
        -------------------------------
--- 796,802 ----
           Edge : Library_Graph_Edge_Id) return Boolean
        is
        begin
!          return Get_LGE_Attributes (G, Edge).Activates_Task;
        end Activates_Task;
  
        -------------------------------
*************** package body Bindo.Graphs is
*** 1674,1680 ****
           --  the body may be visited first, yet Corresponding_Item will still
           --  attempt to create the Body_Before_Spec edge. This is OK because
           --  successor and predecessor are kept consistent in both cases, and
!          --  Add_Edge_With_Return will prevent the creation of the second edge.
  
           --  Assume that no Body_Before_Spec is necessary
  
--- 830,836 ----
           --  the body may be visited first, yet Corresponding_Item will still
           --  attempt to create the Body_Before_Spec edge. This is OK because
           --  successor and predecessor are kept consistent in both cases, and
!          --  Add_Edge will prevent the creation of the second edge.
  
           --  Assume that no Body_Before_Spec is necessary
  
*************** package body Bindo.Graphs is
*** 1684,1690 ****
  
           if Is_Body_With_Spec (G, Vertex) then
              Edge :=
!               Add_Edge_With_Return
                  (G              => G,
                   Pred           => Vertex,
                   Succ           => Corresponding_Item (G, Vertex),
--- 840,846 ----
  
           if Is_Body_With_Spec (G, Vertex) then
              Edge :=
!               Add_Edge
                  (G              => G,
                   Pred           => Vertex,
                   Succ           => Corresponding_Item (G, Vertex),
*************** package body Bindo.Graphs is
*** 1695,1701 ****
  
           elsif Is_Spec_With_Body (G, Vertex) then
              Edge :=
!               Add_Edge_With_Return
                  (G              => G,
                   Pred           => Corresponding_Item (G, Vertex),
                   Succ           => Vertex,
--- 851,857 ----
  
           elsif Is_Spec_With_Body (G, Vertex) then
              Edge :=
!               Add_Edge
                  (G              => G,
                   Pred           => Corresponding_Item (G, Vertex),
                   Succ           => Vertex,
*************** package body Bindo.Graphs is
*** 1745,1774 ****
           Kind           : Library_Graph_Edge_Kind;
           Activates_Task : Boolean)
        is
!          Edge : Library_Graph_Edge_Id;
!          pragma Unreferenced (Edge);
! 
!       begin
!          pragma Assert (Present (G));
!          pragma Assert (Present (Pred));
!          pragma Assert (Present (Succ));
!          pragma Assert (Kind /= No_Edge);
!          pragma Assert (not Activates_Task or else Kind = Invocation_Edge);
! 
!          Edge :=
!            Add_Edge_With_Return
               (G              => G,
                Pred           => Pred,
                Succ           => Succ,
                Kind           => Kind,
                Activates_Task => Activates_Task);
        end Add_Edge;
  
!       --------------------------
!       -- Add_Edge_With_Return --
!       --------------------------
  
!       function Add_Edge_With_Return
          (G              : Library_Graph;
           Pred           : Library_Graph_Vertex_Id;
           Succ           : Library_Graph_Vertex_Id;
--- 901,972 ----
           Kind           : Library_Graph_Edge_Kind;
           Activates_Task : Boolean)
        is
!          Ignore : constant Library_Graph_Edge_Id :=
!            Add_Edge
               (G              => G,
                Pred           => Pred,
                Succ           => Succ,
                Kind           => Kind,
                Activates_Task => Activates_Task);
+       begin
+          null;
        end Add_Edge;
  
!       -------------------------
!       -- Add_Edge_Kind_Check --
!       -------------------------
  
!       procedure Add_Edge_Kind_Check
!         (G              : Library_Graph;
!          Pred           : Library_Graph_Vertex_Id;
!          Succ           : Library_Graph_Vertex_Id;
!          New_Kind       : Library_Graph_Edge_Kind)
!       is
!          Old_Edge : constant Library_Graph_Edge_Id :=
!            Find_Edge (G, Pred, Succ);
!          Old_Kind : constant Library_Graph_Edge_Kind :=
!            Get_LGE_Attributes (G, Old_Edge).Kind;
!          OK : Boolean;
!       begin
!          case New_Kind is
!             when Spec_Before_Body_Edge =>
!                OK := False;
!                --  Spec_Before_Body_Edge comes first, and there is never more
!                --  than one Spec_Before_Body_Edge for a given unit, so we can't
!                --  have a preexisting edge in the Spec_Before_Body_Edge case.
! 
!             when With_Edge | Elaborate_Edge | Elaborate_All_Edge
!               | Forced_Edge | Invocation_Edge =>
!                OK := Old_Kind <= New_Kind;
!                --  These edges are created in the order of the enumeration
!                --  type, and there can be duplicates; hence "<=".
! 
!             when Body_Before_Spec_Edge =>
!                OK := Old_Kind = Body_Before_Spec_Edge
!                --  We call Add_Edge with Body_Before_Spec_Edge twice -- once
!                --  for the spec and once for the body.
! 
!                  or else Old_Kind = Forced_Edge
!                  or else Old_Kind = Invocation_Edge;
!                --  The old one can be Forced_Edge or Invocation_Edge, which
!                --  necessarily results in an elaboration cycle (in the static
!                --  model), but this assertion happens before cycle detection,
!                --  so we need to allow these cases.
! 
!             when No_Edge =>
!                OK := False;
!          end case;
! 
!          if not OK then
!             raise Program_Error with Old_Kind'Img & "-->" & New_Kind'Img;
!          end if;
!       end Add_Edge_Kind_Check;
! 
!       --------------
!       -- Add_Edge --
!       --------------
! 
!       function Add_Edge
          (G              : Library_Graph;
           Pred           : Library_Graph_Vertex_Id;
           Succ           : Library_Graph_Vertex_Id;
*************** package body Bindo.Graphs is
*** 1778,1796 ****
           pragma Assert (Present (G));
           pragma Assert (Present (Pred));
           pragma Assert (Present (Succ));
!          pragma Assert (Kind /= No_Edge);
  
           Rel : constant Predecessor_Successor_Relation :=
!                  (Predecessor => Pred,
!                   Successor   => Succ);
  
           Edge : Library_Graph_Edge_Id;
  
        begin
!          --  Nothing to do when the predecessor and successor are already
!          --  related by an edge.
  
           if Is_Recorded_Edge (G, Rel) then
              return No_Library_Graph_Edge;
           end if;
  
--- 976,1004 ----
           pragma Assert (Present (G));
           pragma Assert (Present (Pred));
           pragma Assert (Present (Succ));
!          pragma Assert (Kind = Invocation_Edge or else not Activates_Task);
!          --  Only invocation edges can activate tasks
  
           Rel : constant Predecessor_Successor_Relation :=
!            (Predecessor => Pred, Successor => Succ);
  
           Edge : Library_Graph_Edge_Id;
  
        begin
!          --  If we already have a Pred-->Succ edge, we don't add another
!          --  one. But we need to update Activates_Task, in order to avoid
!          --  depending on the order of processing of edges. If we have
!          --  Pred-->Succ with Activates_Task=True, and another Pred-->Succ with
!          --  Activates_Task=False, we want Activates_Task to be True no matter
!          --  which order we processed those two Add_Edge calls.
  
           if Is_Recorded_Edge (G, Rel) then
+             pragma Debug (Add_Edge_Kind_Check (G, Pred, Succ, Kind));
+ 
+             if Activates_Task then
+                Set_Activates_Task (G, Find_Edge (G, Pred, Succ));
+             end if;
+ 
              return No_Library_Graph_Edge;
           end if;
  
*************** package body Bindo.Graphs is
*** 1834,1840 ****
           Increment_Library_Graph_Edge_Count (G, Kind);
  
           return Edge;
!       end Add_Edge_With_Return;
  
        ----------------
        -- Add_Vertex --
--- 1042,1048 ----
           Increment_Library_Graph_Edge_Count (G, Kind);
  
           return Edge;
!       end Add_Edge;
  
        ----------------
        -- Add_Vertex --
*************** package body Bindo.Graphs is
*** 3141,3146 ****
--- 2349,2392 ----
           LGV_Lists.Destroy (Visited_Stack);
        end Find_Cycles_In_Component;
  
+       ---------------
+       -- Find_Edge --
+       ---------------
+ 
+       function Find_Edge
+         (G    : Library_Graph;
+          Pred : Library_Graph_Vertex_Id;
+          Succ : Library_Graph_Vertex_Id) return Library_Graph_Edge_Id
+       is
+          Result : Library_Graph_Edge_Id := No_Library_Graph_Edge;
+          Edge : Library_Graph_Edge_Id;
+          Iter : Edges_To_Successors_Iterator :=
+            Iterate_Edges_To_Successors (G, Pred);
+ 
+       begin
+          --  IMPORTANT:
+          --
+          --    * The iteration must run to completion in order to unlock the
+          --      edges to successors.
+ 
+          --  This does a linear search through the successors of Pred.
+          --  Efficiency is not a problem, because this is called only when
+          --  Activates_Task is True, which is rare, and anyway, there aren't
+          --  usually large numbers of successors.
+ 
+          while Has_Next (Iter) loop
+             Next (Iter, Edge);
+ 
+             if Succ = Successor (G, Edge) then
+                pragma Assert (not Present (Result));
+                Result := Edge;
+             end if;
+          end loop;
+ 
+          pragma Assert (Present (Result));
+          return Result;
+       end Find_Edge;
+ 
        ---------------------------------------
        -- Find_First_Lower_Precedence_Cycle --
        ---------------------------------------
*************** package body Bindo.Graphs is
*** 4459,4467 ****
           Edge : Library_Graph_Edge_Id) return Library_Graph_Edge_Kind
        is
        begin
-          pragma Assert (Present (G));
-          pragma Assert (Present (Edge));
- 
           return Get_LGE_Attributes (G, Edge).Kind;
        end Kind;
  
--- 3705,3710 ----
*************** package body Bindo.Graphs is
*** 5097,5102 ****
--- 4340,4360 ----
                and then LGE_Lists.Equal (Left.Path, Right.Path);
        end Same_Library_Graph_Cycle_Attributes;
  
+       ------------------------
+       -- Set_Activates_Task --
+       ------------------------
+ 
+       procedure Set_Activates_Task
+         (G    : Library_Graph;
+          Edge : Library_Graph_Edge_Id)
+       is
+          Attributes : Library_Graph_Edge_Attributes :=
+            Get_LGE_Attributes (G, Edge);
+       begin
+          Attributes.Activates_Task := True;
+          Set_LGE_Attributes (G, Edge, Attributes);
+       end Set_Activates_Task;
+ 
        ------------------------------
        -- Set_Component_Attributes --
        ------------------------------
*************** package body Bindo.Graphs is
*** 5175,5193 ****
  
        procedure Set_Is_Recorded_Edge
          (G   : Library_Graph;
!          Rel : Predecessor_Successor_Relation;
!          Val : Boolean := True)
        is
        begin
           pragma Assert (Present (G));
           pragma Assert (Present (Rel.Predecessor));
           pragma Assert (Present (Rel.Successor));
  
!          if Val then
!             RE_Sets.Insert (G.Recorded_Edges, Rel);
!          else
!             RE_Sets.Delete (G.Recorded_Edges, Rel);
!          end if;
        end Set_Is_Recorded_Edge;
  
        ------------------------
--- 4433,4446 ----
  
        procedure Set_Is_Recorded_Edge
          (G   : Library_Graph;
!          Rel : Predecessor_Successor_Relation)
        is
        begin
           pragma Assert (Present (G));
           pragma Assert (Present (Rel.Predecessor));
           pragma Assert (Present (Rel.Successor));
  
!          RE_Sets.Insert (G.Recorded_Edges, Rel);
        end Set_Is_Recorded_Edge;
  
        ------------------------
*************** package body Bindo.Graphs is
*** 5211,5219 ****
        ------------------------
  
        procedure Set_LGE_Attributes
!         (G      : Library_Graph;
           Edge : Library_Graph_Edge_Id;
!          Val    : Library_Graph_Edge_Attributes)
        is
        begin
           pragma Assert (Present (G));
--- 4464,4472 ----
        ------------------------
  
        procedure Set_LGE_Attributes
!         (G    : Library_Graph;
           Edge : Library_Graph_Edge_Id;
!          Val  : Library_Graph_Edge_Attributes)
        is
        begin
           pragma Assert (Present (G));
*************** package body Bindo.Graphs is
*** 5586,5591 ****
--- 4839,5719 ----
        end Visit;
     end Library_Graphs;
  
+    -----------------------
+    -- Invocation_Graphs --
+    -----------------------
+ 
+    package body Invocation_Graphs is
+ 
+       -----------------------
+       -- Local subprograms --
+       -----------------------
+ 
+       procedure Free is
+         new Ada.Unchecked_Deallocation
+               (Invocation_Graph_Attributes, Invocation_Graph);
+ 
+       function Get_IGE_Attributes
+         (G    : Invocation_Graph;
+          Edge : Invocation_Graph_Edge_Id)
+          return Invocation_Graph_Edge_Attributes;
+       pragma Inline (Get_IGE_Attributes);
+       --  Obtain the attributes of edge Edge of invocation graph G
+ 
+       function Get_IGV_Attributes
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id)
+          return Invocation_Graph_Vertex_Attributes;
+       pragma Inline (Get_IGV_Attributes);
+       --  Obtain the attributes of vertex Vertex of invocation graph G
+ 
+       procedure Increment_Invocation_Graph_Edge_Count
+         (G    : Invocation_Graph;
+          Kind : Invocation_Kind);
+       pragma Inline (Increment_Invocation_Graph_Edge_Count);
+       --  Increment the number of edges of king Kind in invocation graph G by
+       --  one.
+ 
+       function Is_Elaboration_Root
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Boolean;
+       pragma Inline (Is_Elaboration_Root);
+       --  Determine whether vertex Vertex of invocation graph denotes the
+       --  elaboration procedure of a spec or a body.
+ 
+       function Is_Existing_Source_Target_Relation
+         (G   : Invocation_Graph;
+          Rel : Source_Target_Relation) return Boolean;
+       pragma Inline (Is_Existing_Source_Target_Relation);
+       --  Determine whether a source vertex and a target vertex described by
+       --  relation Rel are already related in invocation graph G.
+ 
+       procedure Save_Elaboration_Root
+         (G    : Invocation_Graph;
+          Root : Invocation_Graph_Vertex_Id);
+       pragma Inline (Save_Elaboration_Root);
+       --  Save elaboration root Root of invocation graph G
+ 
+       procedure Set_Corresponding_Vertex
+         (G      : Invocation_Graph;
+          IS_Id  : Invocation_Signature_Id;
+          Vertex : Invocation_Graph_Vertex_Id);
+       pragma Inline (Set_Corresponding_Vertex);
+       --  Associate vertex Vertex of invocation graph G with signature IS_Id
+ 
+       procedure Set_Is_Existing_Source_Target_Relation
+         (G   : Invocation_Graph;
+          Rel : Source_Target_Relation;
+          Val : Boolean := True);
+       pragma Inline (Set_Is_Existing_Source_Target_Relation);
+       --  Mark a source vertex and a target vertex described by relation Rel as
+       --  already related in invocation graph G depending on value Val.
+ 
+       procedure Set_IGE_Attributes
+         (G    : Invocation_Graph;
+          Edge : Invocation_Graph_Edge_Id;
+          Val  : Invocation_Graph_Edge_Attributes);
+       pragma Inline (Set_IGE_Attributes);
+       --  Set the attributes of edge Edge of invocation graph G to value Val
+ 
+       procedure Set_IGV_Attributes
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id;
+          Val    : Invocation_Graph_Vertex_Attributes);
+       pragma Inline (Set_IGV_Attributes);
+       --  Set the attributes of vertex Vertex of invocation graph G to value
+       --  Val.
+ 
+       --------------
+       -- Add_Edge --
+       --------------
+ 
+       procedure Add_Edge
+         (G      : Invocation_Graph;
+          Source : Invocation_Graph_Vertex_Id;
+          Target : Invocation_Graph_Vertex_Id;
+          IR_Id  : Invocation_Relation_Id)
+       is
+          pragma Assert (Present (G));
+          pragma Assert (Present (Source));
+          pragma Assert (Present (Target));
+          pragma Assert (Present (IR_Id));
+ 
+          Rel : constant Source_Target_Relation :=
+                  (Source => Source,
+                   Target => Target);
+ 
+          Edge : Invocation_Graph_Edge_Id;
+ 
+       begin
+          --  Nothing to do when the source and target are already related by an
+          --  edge.
+ 
+          if Is_Existing_Source_Target_Relation (G, Rel) then
+             return;
+          end if;
+ 
+          Edge := Sequence_Next_Edge;
+ 
+          --  Add the edge to the underlying graph
+ 
+          DG.Add_Edge
+            (G           => G.Graph,
+             E           => Edge,
+             Source      => Source,
+             Destination => Target);
+ 
+          --  Build and save the attributes of the edge
+ 
+          Set_IGE_Attributes
+            (G    => G,
+             Edge => Edge,
+             Val  => (Relation => IR_Id));
+ 
+          --  Mark the source and target as related by the new edge. This
+          --  prevents all further attempts to link the same source and target.
+ 
+          Set_Is_Existing_Source_Target_Relation (G, Rel);
+ 
+          --  Update the edge statistics
+ 
+          Increment_Invocation_Graph_Edge_Count (G, Kind (IR_Id));
+       end Add_Edge;
+ 
+       ----------------
+       -- Add_Vertex --
+       ----------------
+ 
+       procedure Add_Vertex
+         (G           : Invocation_Graph;
+          IC_Id       : Invocation_Construct_Id;
+          Body_Vertex : Library_Graph_Vertex_Id;
+          Spec_Vertex : Library_Graph_Vertex_Id)
+       is
+          pragma Assert (Present (G));
+          pragma Assert (Present (IC_Id));
+          pragma Assert (Present (Body_Vertex));
+          pragma Assert (Present (Spec_Vertex));
+ 
+          Construct_Signature : constant Invocation_Signature_Id :=
+                                  Signature (IC_Id);
+          Vertex : Invocation_Graph_Vertex_Id;
+ 
+       begin
+          --  Nothing to do when the construct already has a vertex
+ 
+          if Present (Corresponding_Vertex (G, Construct_Signature)) then
+             return;
+          end if;
+ 
+          Vertex := Sequence_Next_Vertex;
+ 
+          --  Add the vertex to the underlying graph
+ 
+          DG.Add_Vertex (G.Graph, Vertex);
+ 
+          --  Build and save the attributes of the vertex
+ 
+          Set_IGV_Attributes
+            (G      => G,
+             Vertex => Vertex,
+             Val    => (Body_Vertex => Body_Vertex,
+                        Construct   => IC_Id,
+                        Spec_Vertex => Spec_Vertex));
+ 
+          --  Associate the construct with its corresponding vertex
+ 
+          Set_Corresponding_Vertex (G, Construct_Signature, Vertex);
+ 
+          --  Save the vertex for later processing when it denotes a spec or
+          --  body elaboration procedure.
+ 
+          if Is_Elaboration_Root (G, Vertex) then
+             Save_Elaboration_Root (G, Vertex);
+          end if;
+       end Add_Vertex;
+ 
+       -----------------
+       -- Body_Vertex --
+       -----------------
+ 
+       function Body_Vertex
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Library_Graph_Vertex_Id
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Vertex));
+ 
+          return Get_IGV_Attributes (G, Vertex).Body_Vertex;
+       end Body_Vertex;
+ 
+       ------------
+       -- Column --
+       ------------
+ 
+       function Column
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Nat
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Vertex));
+ 
+          return Column (Signature (Construct (G, Vertex)));
+       end Column;
+ 
+       ---------------
+       -- Construct --
+       ---------------
+ 
+       function Construct
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Invocation_Construct_Id
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Vertex));
+ 
+          return Get_IGV_Attributes (G, Vertex).Construct;
+       end Construct;
+ 
+       --------------------------
+       -- Corresponding_Vertex --
+       --------------------------
+ 
+       function Corresponding_Vertex
+         (G     : Invocation_Graph;
+          IS_Id : Invocation_Signature_Id) return Invocation_Graph_Vertex_Id
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (IS_Id));
+ 
+          return Signature_Tables.Get (G.Signature_To_Vertex, IS_Id);
+       end Corresponding_Vertex;
+ 
+       ------------
+       -- Create --
+       ------------
+ 
+       function Create
+         (Initial_Vertices : Positive;
+          Initial_Edges    : Positive;
+          Lib_Graph        : Library_Graphs.Library_Graph)
+         return Invocation_Graph
+       is
+          G : constant Invocation_Graph := new Invocation_Graph_Attributes'
+            (Counts              => <>,
+             Edge_Attributes     => IGE_Tables.Create       (Initial_Edges),
+             Graph               =>
+               DG.Create
+                 (Initial_Vertices => Initial_Vertices,
+                  Initial_Edges    => Initial_Edges),
+             Relations           => Relation_Sets.Create    (Initial_Edges),
+             Roots               => IGV_Sets.Create         (Initial_Vertices),
+             Signature_To_Vertex => Signature_Tables.Create (Initial_Vertices),
+             Vertex_Attributes   => IGV_Tables.Create       (Initial_Vertices),
+             Lib_Graph           => Lib_Graph);
+       begin
+          return G;
+       end Create;
+ 
+       -------------
+       -- Destroy --
+       -------------
+ 
+       procedure Destroy (G : in out Invocation_Graph) is
+       begin
+          pragma Assert (Present (G));
+ 
+          IGE_Tables.Destroy       (G.Edge_Attributes);
+          DG.Destroy               (G.Graph);
+          Relation_Sets.Destroy    (G.Relations);
+          IGV_Sets.Destroy         (G.Roots);
+          Signature_Tables.Destroy (G.Signature_To_Vertex);
+          IGV_Tables.Destroy       (G.Vertex_Attributes);
+ 
+          Free (G);
+       end Destroy;
+ 
+       -----------------------------------
+       -- Destroy_Invocation_Graph_Edge --
+       -----------------------------------
+ 
+       procedure Destroy_Invocation_Graph_Edge
+         (Edge : in out Invocation_Graph_Edge_Id)
+       is
+          pragma Unreferenced (Edge);
+       begin
+          null;
+       end Destroy_Invocation_Graph_Edge;
+ 
+       ----------------------------------------------
+       -- Destroy_Invocation_Graph_Edge_Attributes --
+       ----------------------------------------------
+ 
+       procedure Destroy_Invocation_Graph_Edge_Attributes
+         (Attrs : in out Invocation_Graph_Edge_Attributes)
+       is
+          pragma Unreferenced (Attrs);
+       begin
+          null;
+       end Destroy_Invocation_Graph_Edge_Attributes;
+ 
+       -------------------------------------
+       -- Destroy_Invocation_Graph_Vertex --
+       -------------------------------------
+ 
+       procedure Destroy_Invocation_Graph_Vertex
+         (Vertex : in out Invocation_Graph_Vertex_Id)
+       is
+          pragma Unreferenced (Vertex);
+       begin
+          null;
+       end Destroy_Invocation_Graph_Vertex;
+ 
+       ------------------------------------------------
+       -- Destroy_Invocation_Graph_Vertex_Attributes --
+       ------------------------------------------------
+ 
+       procedure Destroy_Invocation_Graph_Vertex_Attributes
+         (Attrs : in out Invocation_Graph_Vertex_Attributes)
+       is
+          pragma Unreferenced (Attrs);
+       begin
+          null;
+       end Destroy_Invocation_Graph_Vertex_Attributes;
+ 
+       -----------
+       -- Extra --
+       -----------
+ 
+       function Extra
+         (G    : Invocation_Graph;
+          Edge : Invocation_Graph_Edge_Id) return Name_Id
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Edge));
+ 
+          return Extra (Relation (G, Edge));
+       end Extra;
+ 
+       ------------------------
+       -- Get_IGE_Attributes --
+       ------------------------
+ 
+       function Get_IGE_Attributes
+         (G    : Invocation_Graph;
+          Edge : Invocation_Graph_Edge_Id)
+          return Invocation_Graph_Edge_Attributes
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Edge));
+ 
+          return IGE_Tables.Get (G.Edge_Attributes, Edge);
+       end Get_IGE_Attributes;
+ 
+       ------------------------
+       -- Get_IGV_Attributes --
+       ------------------------
+ 
+       function Get_IGV_Attributes
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id)
+          return Invocation_Graph_Vertex_Attributes
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Vertex));
+ 
+          return IGV_Tables.Get (G.Vertex_Attributes, Vertex);
+       end Get_IGV_Attributes;
+ 
+       --------------
+       -- Has_Next --
+       --------------
+ 
+       function Has_Next (Iter : All_Edge_Iterator) return Boolean is
+       begin
+          return DG.Has_Next (DG.All_Edge_Iterator (Iter));
+       end Has_Next;
+ 
+       --------------
+       -- Has_Next --
+       --------------
+ 
+       function Has_Next (Iter : All_Vertex_Iterator) return Boolean is
+       begin
+          return DG.Has_Next (DG.All_Vertex_Iterator (Iter));
+       end Has_Next;
+ 
+       --------------
+       -- Has_Next --
+       --------------
+ 
+       function Has_Next (Iter : Edges_To_Targets_Iterator) return Boolean is
+       begin
+          return DG.Has_Next (DG.Outgoing_Edge_Iterator (Iter));
+       end Has_Next;
+ 
+       --------------
+       -- Has_Next --
+       --------------
+ 
+       function Has_Next (Iter : Elaboration_Root_Iterator) return Boolean is
+       begin
+          return IGV_Sets.Has_Next (IGV_Sets.Iterator (Iter));
+       end Has_Next;
+ 
+       -------------------------------
+       -- Hash_Invocation_Signature --
+       -------------------------------
+ 
+       function Hash_Invocation_Signature
+         (IS_Id : Invocation_Signature_Id) return Bucket_Range_Type
+       is
+       begin
+          pragma Assert (Present (IS_Id));
+ 
+          return Bucket_Range_Type (IS_Id);
+       end Hash_Invocation_Signature;
+ 
+       ---------------------------------
+       -- Hash_Source_Target_Relation --
+       ---------------------------------
+ 
+       function Hash_Source_Target_Relation
+         (Rel : Source_Target_Relation) return Bucket_Range_Type
+       is
+       begin
+          pragma Assert (Present (Rel.Source));
+          pragma Assert (Present (Rel.Target));
+ 
+          return
+            Hash_Two_Keys
+              (Bucket_Range_Type (Rel.Source),
+               Bucket_Range_Type (Rel.Target));
+       end Hash_Source_Target_Relation;
+ 
+       -------------------------------------------
+       -- Increment_Invocation_Graph_Edge_Count --
+       -------------------------------------------
+ 
+       procedure Increment_Invocation_Graph_Edge_Count
+         (G    : Invocation_Graph;
+          Kind : Invocation_Kind)
+       is
+          pragma Assert (Present (G));
+ 
+          Count : Natural renames G.Counts (Kind);
+ 
+       begin
+          Count := Count + 1;
+       end Increment_Invocation_Graph_Edge_Count;
+ 
+       ---------------------------------
+       -- Invocation_Graph_Edge_Count --
+       ---------------------------------
+ 
+       function Invocation_Graph_Edge_Count
+         (G    : Invocation_Graph;
+          Kind : Invocation_Kind) return Natural
+       is
+       begin
+          pragma Assert (Present (G));
+ 
+          return G.Counts (Kind);
+       end Invocation_Graph_Edge_Count;
+ 
+       -------------------------
+       -- Is_Elaboration_Root --
+       -------------------------
+ 
+       function Is_Elaboration_Root
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Boolean
+       is
+          pragma Assert (Present (G));
+          pragma Assert (Present (Vertex));
+ 
+          Vertex_Kind : constant Invocation_Construct_Kind :=
+                          Kind (Construct (G, Vertex));
+ 
+       begin
+          return
+            Vertex_Kind = Elaborate_Body_Procedure
+              or else
+            Vertex_Kind = Elaborate_Spec_Procedure;
+       end Is_Elaboration_Root;
+ 
+       ----------------------------------------
+       -- Is_Existing_Source_Target_Relation --
+       ----------------------------------------
+ 
+       function Is_Existing_Source_Target_Relation
+         (G   : Invocation_Graph;
+          Rel : Source_Target_Relation) return Boolean
+       is
+       begin
+          pragma Assert (Present (G));
+ 
+          return Relation_Sets.Contains (G.Relations, Rel);
+       end Is_Existing_Source_Target_Relation;
+ 
+       -----------------------
+       -- Iterate_All_Edges --
+       -----------------------
+ 
+       function Iterate_All_Edges
+         (G : Invocation_Graph) return All_Edge_Iterator
+       is
+       begin
+          pragma Assert (Present (G));
+ 
+          return All_Edge_Iterator (DG.Iterate_All_Edges (G.Graph));
+       end Iterate_All_Edges;
+ 
+       --------------------------
+       -- Iterate_All_Vertices --
+       --------------------------
+ 
+       function Iterate_All_Vertices
+         (G : Invocation_Graph) return All_Vertex_Iterator
+       is
+       begin
+          pragma Assert (Present (G));
+ 
+          return All_Vertex_Iterator (DG.Iterate_All_Vertices (G.Graph));
+       end Iterate_All_Vertices;
+ 
+       ------------------------------
+       -- Iterate_Edges_To_Targets --
+       ------------------------------
+ 
+       function Iterate_Edges_To_Targets
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Edges_To_Targets_Iterator
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Vertex));
+ 
+          return
+            Edges_To_Targets_Iterator
+              (DG.Iterate_Outgoing_Edges (G.Graph, Vertex));
+       end Iterate_Edges_To_Targets;
+ 
+       -------------------------------
+       -- Iterate_Elaboration_Roots --
+       -------------------------------
+ 
+       function Iterate_Elaboration_Roots
+         (G : Invocation_Graph) return Elaboration_Root_Iterator
+       is
+       begin
+          pragma Assert (Present (G));
+ 
+          return Elaboration_Root_Iterator (IGV_Sets.Iterate (G.Roots));
+       end Iterate_Elaboration_Roots;
+ 
+       ----------
+       -- Kind --
+       ----------
+ 
+       function Kind
+         (G    : Invocation_Graph;
+          Edge : Invocation_Graph_Edge_Id) return Invocation_Kind
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Edge));
+ 
+          return Kind (Relation (G, Edge));
+       end Kind;
+ 
+       -------------------
+       -- Get_Lib_Graph --
+       -------------------
+ 
+       function Get_Lib_Graph
+         (G : Invocation_Graph) return Library_Graphs.Library_Graph
+       is
+          pragma Assert (Present (G));
+       begin
+          return G.Lib_Graph;
+       end Get_Lib_Graph;
+ 
+       ----------
+       -- Line --
+       ----------
+ 
+       function Line
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Nat
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Vertex));
+ 
+          return Line (Signature (Construct (G, Vertex)));
+       end Line;
+ 
+       ----------
+       -- Name --
+       ----------
+ 
+       function Name
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Name_Id
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Vertex));
+ 
+          return Name (Signature (Construct (G, Vertex)));
+       end Name;
+ 
+       ----------
+       -- Next --
+       ----------
+ 
+       procedure Next
+         (Iter : in out All_Edge_Iterator;
+          Edge : out Invocation_Graph_Edge_Id)
+       is
+       begin
+          DG.Next (DG.All_Edge_Iterator (Iter), Edge);
+       end Next;
+ 
+       ----------
+       -- Next --
+       ----------
+ 
+       procedure Next
+         (Iter   : in out All_Vertex_Iterator;
+          Vertex : out Invocation_Graph_Vertex_Id)
+       is
+       begin
+          DG.Next (DG.All_Vertex_Iterator (Iter), Vertex);
+       end Next;
+ 
+       ----------
+       -- Next --
+       ----------
+ 
+       procedure Next
+         (Iter : in out Edges_To_Targets_Iterator;
+          Edge : out Invocation_Graph_Edge_Id)
+       is
+       begin
+          DG.Next (DG.Outgoing_Edge_Iterator (Iter), Edge);
+       end Next;
+ 
+       ----------
+       -- Next --
+       ----------
+ 
+       procedure Next
+         (Iter : in out Elaboration_Root_Iterator;
+          Root : out Invocation_Graph_Vertex_Id)
+       is
+       begin
+          IGV_Sets.Next (IGV_Sets.Iterator (Iter), Root);
+       end Next;
+ 
+       ---------------------
+       -- Number_Of_Edges --
+       ---------------------
+ 
+       function Number_Of_Edges (G : Invocation_Graph) return Natural is
+       begin
+          pragma Assert (Present (G));
+ 
+          return DG.Number_Of_Edges (G.Graph);
+       end Number_Of_Edges;
+ 
+       --------------------------------
+       -- Number_Of_Edges_To_Targets --
+       --------------------------------
+ 
+       function Number_Of_Edges_To_Targets
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Natural
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Vertex));
+ 
+          return DG.Number_Of_Outgoing_Edges (G.Graph, Vertex);
+       end Number_Of_Edges_To_Targets;
+ 
+       ---------------------------------
+       -- Number_Of_Elaboration_Roots --
+       ---------------------------------
+ 
+       function Number_Of_Elaboration_Roots
+         (G : Invocation_Graph) return Natural
+       is
+       begin
+          pragma Assert (Present (G));
+ 
+          return IGV_Sets.Size (G.Roots);
+       end Number_Of_Elaboration_Roots;
+ 
+       ------------------------
+       -- Number_Of_Vertices --
+       ------------------------
+ 
+       function Number_Of_Vertices (G : Invocation_Graph) return Natural is
+       begin
+          pragma Assert (Present (G));
+ 
+          return DG.Number_Of_Vertices (G.Graph);
+       end Number_Of_Vertices;
+ 
+       -------------
+       -- Present --
+       -------------
+ 
+       function Present (G : Invocation_Graph) return Boolean is
+       begin
+          return G /= Nil;
+       end Present;
+ 
+       --------------
+       -- Relation --
+       --------------
+ 
+       function Relation
+         (G    : Invocation_Graph;
+          Edge : Invocation_Graph_Edge_Id) return Invocation_Relation_Id
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Edge));
+ 
+          return Get_IGE_Attributes (G, Edge).Relation;
+       end Relation;
+ 
+       ---------------------------
+       -- Save_Elaboration_Root --
+       ---------------------------
+ 
+       procedure Save_Elaboration_Root
+         (G    : Invocation_Graph;
+          Root : Invocation_Graph_Vertex_Id)
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Root));
+ 
+          IGV_Sets.Insert (G.Roots, Root);
+       end Save_Elaboration_Root;
+ 
+       ------------------------------
+       -- Set_Corresponding_Vertex --
+       ------------------------------
+ 
+       procedure Set_Corresponding_Vertex
+         (G      : Invocation_Graph;
+          IS_Id  : Invocation_Signature_Id;
+          Vertex : Invocation_Graph_Vertex_Id)
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (IS_Id));
+          pragma Assert (Present (Vertex));
+ 
+          Signature_Tables.Put (G.Signature_To_Vertex, IS_Id, Vertex);
+       end Set_Corresponding_Vertex;
+ 
+       --------------------------------------------
+       -- Set_Is_Existing_Source_Target_Relation --
+       --------------------------------------------
+ 
+       procedure Set_Is_Existing_Source_Target_Relation
+         (G   : Invocation_Graph;
+          Rel : Source_Target_Relation;
+          Val : Boolean := True)
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Rel.Source));
+          pragma Assert (Present (Rel.Target));
+ 
+          if Val then
+             Relation_Sets.Insert (G.Relations, Rel);
+          else
+             Relation_Sets.Delete (G.Relations, Rel);
+          end if;
+       end Set_Is_Existing_Source_Target_Relation;
+ 
+       ------------------------
+       -- Set_IGE_Attributes --
+       ------------------------
+ 
+       procedure Set_IGE_Attributes
+         (G    : Invocation_Graph;
+          Edge : Invocation_Graph_Edge_Id;
+          Val  : Invocation_Graph_Edge_Attributes)
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Edge));
+ 
+          IGE_Tables.Put (G.Edge_Attributes, Edge, Val);
+       end Set_IGE_Attributes;
+ 
+       ------------------------
+       -- Set_IGV_Attributes --
+       ------------------------
+ 
+       procedure Set_IGV_Attributes
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id;
+          Val    : Invocation_Graph_Vertex_Attributes)
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Vertex));
+ 
+          IGV_Tables.Put (G.Vertex_Attributes, Vertex, Val);
+       end Set_IGV_Attributes;
+ 
+       -----------------
+       -- Spec_Vertex --
+       -----------------
+ 
+       function Spec_Vertex
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Library_Graph_Vertex_Id
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Vertex));
+ 
+          return Get_IGV_Attributes (G, Vertex).Spec_Vertex;
+       end Spec_Vertex;
+ 
+       ------------
+       -- Target --
+       ------------
+ 
+       function Target
+         (G      : Invocation_Graph;
+          Edge : Invocation_Graph_Edge_Id) return Invocation_Graph_Vertex_Id
+       is
+       begin
+          pragma Assert (Present (G));
+          pragma Assert (Present (Edge));
+ 
+          return DG.Destination_Vertex (G.Graph, Edge);
+       end Target;
+    end Invocation_Graphs;
+ 
     -------------
     -- Present --
     -------------
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo-graphs.ads gcc-11.1.0/gcc/ada/bindo-graphs.ads
*** gcc-10.3.0/gcc/ada/bindo-graphs.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo-graphs.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Bindo.Graphs is
*** 198,675 ****
        "="          => "=",
        Hash         => Hash_Library_Graph_Vertex);
  
-    -----------------------
-    -- Invocation_Graphs --
-    -----------------------
- 
-    package Invocation_Graphs is
- 
-       -----------
-       -- Graph --
-       -----------
- 
-       --  The following type denotes an invocation graph handle. Each instance
-       --  must be created using routine Create.
- 
-       type Invocation_Graph is private;
-       Nil : constant Invocation_Graph;
- 
-       ----------------------
-       -- Graph operations --
-       ----------------------
- 
-       procedure Add_Edge
-         (G      : Invocation_Graph;
-          Source : Invocation_Graph_Vertex_Id;
-          Target : Invocation_Graph_Vertex_Id;
-          IR_Id  : Invocation_Relation_Id);
-       pragma Inline (Add_Edge);
-       --  Create a new edge in invocation graph G with source vertex Source and
-       --  destination vertex Target. IR_Id is the invocation relation the edge
-       --  describes.
- 
-       procedure Add_Vertex
-         (G           : Invocation_Graph;
-          IC_Id       : Invocation_Construct_Id;
-          Body_Vertex : Library_Graph_Vertex_Id;
-          Spec_Vertex : Library_Graph_Vertex_Id);
-       pragma Inline (Add_Vertex);
-       --  Create a new vertex in invocation graph G. IC_Id is the invocation
-       --  construct the vertex describes. Body_Vertex denotes the library graph
-       --  vertex where the invocation construct's body is declared. Spec_Vertex
-       --  is the library graph vertex where the invocation construct's spec is
-       --  declared.
- 
-       function Create
-         (Initial_Vertices : Positive;
-          Initial_Edges    : Positive) return Invocation_Graph;
-       pragma Inline (Create);
-       --  Create a new empty graph with vertex capacity Initial_Vertices and
-       --  edge capacity Initial_Edges.
- 
-       procedure Destroy (G : in out Invocation_Graph);
-       pragma Inline (Destroy);
-       --  Destroy the contents of invocation graph G, rendering it unusable
- 
-       function Present (G : Invocation_Graph) return Boolean;
-       pragma Inline (Present);
-       --  Determine whether invocation graph G exists
- 
-       -----------------------
-       -- Vertex attributes --
-       -----------------------
- 
-       function Body_Vertex
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Library_Graph_Vertex_Id;
-       pragma Inline (Body_Vertex);
-       --  Obtain the library graph vertex where the body of the invocation
-       --  construct represented by vertex Vertex of invocation graph G is
-       --  declared.
- 
-       function Column
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Nat;
-       pragma Inline (Column);
-       --  Obtain the column number where the invocation construct vertex Vertex
-       --  of invocation graph G describes.
- 
-       function Construct
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Invocation_Construct_Id;
-       pragma Inline (Construct);
-       --  Obtain the invocation construct vertex Vertex of invocation graph G
-       --  describes.
- 
-       function Corresponding_Vertex
-         (G     : Invocation_Graph;
-          IS_Id : Invocation_Signature_Id) return Invocation_Graph_Vertex_Id;
-       pragma Inline (Corresponding_Vertex);
-       --  Obtain the vertex of invocation graph G that corresponds to signature
-       --  IS_Id.
- 
-       function Line
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Nat;
-       pragma Inline (Line);
-       --  Obtain the line number where the invocation construct vertex Vertex
-       --  of invocation graph G describes.
- 
-       function Name
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Name_Id;
-       pragma Inline (Name);
-       --  Obtain the name of the construct vertex Vertex of invocation graph G
-       --  describes.
- 
-       function Spec_Vertex
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Library_Graph_Vertex_Id;
-       pragma Inline (Spec_Vertex);
-       --  Obtain the library graph vertex where the spec of the invocation
-       --  construct represented by vertex Vertex of invocation graph G is
-       --  declared.
- 
-       ---------------------
-       -- Edge attributes --
-       ---------------------
- 
-       function Extra
-         (G    : Invocation_Graph;
-          Edge : Invocation_Graph_Edge_Id) return Name_Id;
-       pragma Inline (Extra);
-       --  Obtain the extra name used in error diagnostics of edge Edge of
-       --  invocation graph G.
- 
-       function Kind
-         (G    : Invocation_Graph;
-          Edge : Invocation_Graph_Edge_Id) return Invocation_Kind;
-       pragma Inline (Kind);
-       --  Obtain the nature of edge Edge of invocation graph G
- 
-       function Relation
-         (G    : Invocation_Graph;
-          Edge : Invocation_Graph_Edge_Id) return Invocation_Relation_Id;
-       pragma Inline (Relation);
-       --  Obtain the relation edge Edge of invocation graph G describes
- 
-       function Target
-         (G    : Invocation_Graph;
-          Edge : Invocation_Graph_Edge_Id) return Invocation_Graph_Vertex_Id;
-       pragma Inline (Target);
-       --  Obtain the target vertex edge Edge of invocation graph G designates
- 
-       ----------------
-       -- Statistics --
-       ----------------
- 
-       function Invocation_Graph_Edge_Count
-         (G    : Invocation_Graph;
-          Kind : Invocation_Kind) return Natural;
-       pragma Inline (Invocation_Graph_Edge_Count);
-       --  Obtain the total number of edges of kind Kind in invocation graph G
- 
-       function Number_Of_Edges (G : Invocation_Graph) return Natural;
-       pragma Inline (Number_Of_Edges);
-       --  Obtain the total number of edges in invocation graph G
- 
-       function Number_Of_Edges_To_Targets
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Natural;
-       pragma Inline (Number_Of_Edges_To_Targets);
-       --  Obtain the total number of edges to targets vertex Vertex of
-       --  invocation graph G has.
- 
-       function Number_Of_Elaboration_Roots
-         (G : Invocation_Graph) return Natural;
-       pragma Inline (Number_Of_Elaboration_Roots);
-       --  Obtain the total number of elaboration roots in invocation graph G
- 
-       function Number_Of_Vertices (G : Invocation_Graph) return Natural;
-       pragma Inline (Number_Of_Vertices);
-       --  Obtain the total number of vertices in invocation graph G
- 
-       ---------------
-       -- Iterators --
-       ---------------
- 
-       --  The following type represents an iterator over all edges of an
-       --  invocation graph.
- 
-       type All_Edge_Iterator is private;
- 
-       function Has_Next (Iter : All_Edge_Iterator) return Boolean;
-       pragma Inline (Has_Next);
-       --  Determine whether iterator Iter has more edges to examine
- 
-       function Iterate_All_Edges
-         (G : Invocation_Graph) return All_Edge_Iterator;
-       pragma Inline (Iterate_All_Edges);
-       --  Obtain an iterator over all edges of invocation graph G
- 
-       procedure Next
-         (Iter : in out All_Edge_Iterator;
-          Edge : out Invocation_Graph_Edge_Id);
-       pragma Inline (Next);
-       --  Return the current edge referenced by iterator Iter and advance to
-       --  the next available edge.
- 
-       --  The following type represents an iterator over all vertices of an
-       --  invocation graph.
- 
-       type All_Vertex_Iterator is private;
- 
-       function Has_Next (Iter : All_Vertex_Iterator) return Boolean;
-       pragma Inline (Has_Next);
-       --  Determine whether iterator Iter has more vertices to examine
- 
-       function Iterate_All_Vertices
-         (G : Invocation_Graph) return All_Vertex_Iterator;
-       pragma Inline (Iterate_All_Vertices);
-       --  Obtain an iterator over all vertices of invocation graph G
- 
-       procedure Next
-         (Iter   : in out All_Vertex_Iterator;
-          Vertex : out Invocation_Graph_Vertex_Id);
-       pragma Inline (Next);
-       --  Return the current vertex referenced by iterator Iter and advance
-       --  to the next available vertex.
- 
-       --  The following type represents an iterator over all edges that reach
-       --  targets starting from a particular source vertex.
- 
-       type Edges_To_Targets_Iterator is private;
- 
-       function Has_Next (Iter : Edges_To_Targets_Iterator) return Boolean;
-       pragma Inline (Has_Next);
-       --  Determine whether iterator Iter has more edges to examine
- 
-       function Iterate_Edges_To_Targets
-         (G      : Invocation_Graph;
-          Vertex : Invocation_Graph_Vertex_Id) return Edges_To_Targets_Iterator;
-       pragma Inline (Iterate_Edges_To_Targets);
-       --  Obtain an iterator over all edges to targets with source vertex
-       --  Vertex of invocation graph G.
- 
-       procedure Next
-         (Iter : in out Edges_To_Targets_Iterator;
-          Edge : out Invocation_Graph_Edge_Id);
-       pragma Inline (Next);
-       --  Return the current edge referenced by iterator Iter and advance to
-       --  the next available edge.
- 
-       --  The following type represents an iterator over all vertices of an
-       --  invocation graph that denote the elaboration procedure or a spec or
-       --  a body, referred to as elaboration root.
- 
-       type Elaboration_Root_Iterator is private;
- 
-       function Has_Next (Iter : Elaboration_Root_Iterator) return Boolean;
-       pragma Inline (Has_Next);
-       --  Determine whether iterator Iter has more elaboration roots to examine
- 
-       function Iterate_Elaboration_Roots
-         (G : Invocation_Graph) return Elaboration_Root_Iterator;
-       pragma Inline (Iterate_Elaboration_Roots);
-       --  Obtain an iterator over all elaboration roots of invocation graph G
- 
-       procedure Next
-         (Iter : in out Elaboration_Root_Iterator;
-          Root : out Invocation_Graph_Vertex_Id);
-       pragma Inline (Next);
-       --  Return the current elaboration root referenced by iterator Iter and
-       --  advance to the next available elaboration root.
- 
-    private
- 
-       --------------
-       -- Vertices --
-       --------------
- 
-       procedure Destroy_Invocation_Graph_Vertex
-         (Vertex : in out Invocation_Graph_Vertex_Id);
-       pragma Inline (Destroy_Invocation_Graph_Vertex);
-       --  Destroy invocation graph vertex Vertex
- 
-       --  The following type represents the attributes of an invocation graph
-       --  vertex.
- 
-       type Invocation_Graph_Vertex_Attributes is record
-          Body_Vertex : Library_Graph_Vertex_Id := No_Library_Graph_Vertex;
-          --  Reference to the library graph vertex where the body of this
-          --  vertex resides.
- 
-          Construct : Invocation_Construct_Id := No_Invocation_Construct;
-          --  Reference to the invocation construct this vertex represents
- 
-          Spec_Vertex : Library_Graph_Vertex_Id := No_Library_Graph_Vertex;
-          --  Reference to the library graph vertex where the spec of this
-          --  vertex resides.
-       end record;
- 
-       No_Invocation_Graph_Vertex_Attributes :
-         constant Invocation_Graph_Vertex_Attributes :=
-           (Body_Vertex => No_Library_Graph_Vertex,
-            Construct   => No_Invocation_Construct,
-            Spec_Vertex => No_Library_Graph_Vertex);
- 
-       procedure Destroy_Invocation_Graph_Vertex_Attributes
-         (Attrs : in out Invocation_Graph_Vertex_Attributes);
-       pragma Inline (Destroy_Invocation_Graph_Vertex_Attributes);
-       --  Destroy the contents of attributes Attrs
- 
-       package IGV_Tables is new Dynamic_Hash_Tables
-         (Key_Type              => Invocation_Graph_Vertex_Id,
-          Value_Type            => Invocation_Graph_Vertex_Attributes,
-          No_Value              => No_Invocation_Graph_Vertex_Attributes,
-          Expansion_Threshold   => 1.5,
-          Expansion_Factor      => 2,
-          Compression_Threshold => 0.3,
-          Compression_Factor    => 2,
-          "="                   => "=",
-          Destroy_Value         => Destroy_Invocation_Graph_Vertex_Attributes,
-          Hash                  => Hash_Invocation_Graph_Vertex);
- 
-       -----------
-       -- Edges --
-       -----------
- 
-       procedure Destroy_Invocation_Graph_Edge
-         (Edge : in out Invocation_Graph_Edge_Id);
-       pragma Inline (Destroy_Invocation_Graph_Edge);
-       --  Destroy invocation graph edge Edge
- 
-       --  The following type represents the attributes of an invocation graph
-       --  edge.
- 
-       type Invocation_Graph_Edge_Attributes is record
-          Relation : Invocation_Relation_Id := No_Invocation_Relation;
-          --  Reference to the invocation relation this edge represents
-       end record;
- 
-       No_Invocation_Graph_Edge_Attributes :
-         constant Invocation_Graph_Edge_Attributes :=
-           (Relation => No_Invocation_Relation);
- 
-       procedure Destroy_Invocation_Graph_Edge_Attributes
-         (Attrs : in out Invocation_Graph_Edge_Attributes);
-       pragma Inline (Destroy_Invocation_Graph_Edge_Attributes);
-       --  Destroy the contents of attributes Attrs
- 
-       package IGE_Tables is new Dynamic_Hash_Tables
-         (Key_Type              => Invocation_Graph_Edge_Id,
-          Value_Type            => Invocation_Graph_Edge_Attributes,
-          No_Value              => No_Invocation_Graph_Edge_Attributes,
-          Expansion_Threshold   => 1.5,
-          Expansion_Factor      => 2,
-          Compression_Threshold => 0.3,
-          Compression_Factor    => 2,
-          "="                   => "=",
-          Destroy_Value         => Destroy_Invocation_Graph_Edge_Attributes,
-          Hash                  => Hash_Invocation_Graph_Edge);
- 
-       ---------------
-       -- Relations --
-       ---------------
- 
-       --  The following type represents a relation between a source and target
-       --  vertices.
- 
-       type Source_Target_Relation is record
-          Source : Invocation_Graph_Vertex_Id := No_Invocation_Graph_Vertex;
-          --  The source vertex
- 
-          Target : Invocation_Graph_Vertex_Id := No_Invocation_Graph_Vertex;
-          --  The destination vertex
-       end record;
- 
-       No_Source_Target_Relation :
-         constant Source_Target_Relation :=
-           (Source => No_Invocation_Graph_Vertex,
-            Target => No_Invocation_Graph_Vertex);
- 
-       function Hash_Source_Target_Relation
-         (Rel : Source_Target_Relation) return Bucket_Range_Type;
-       pragma Inline (Hash_Source_Target_Relation);
-       --  Obtain the hash value of key Rel
- 
-       package Relation_Sets is new Membership_Sets
-         (Element_Type => Source_Target_Relation,
-          "="          => "=",
-          Hash         => Hash_Source_Target_Relation);
- 
-       ----------------
-       -- Statistics --
-       ----------------
- 
-       type Invocation_Graph_Edge_Counts is array (Invocation_Kind) of Natural;
- 
-       ----------------
-       -- Signatures --
-       ----------------
- 
-       function Hash_Invocation_Signature
-         (IS_Id : Invocation_Signature_Id) return Bucket_Range_Type;
-       pragma Inline (Hash_Invocation_Signature);
-       --  Obtain the hash value of key IS_Id
- 
-       package Signature_Tables is new Dynamic_Hash_Tables
-         (Key_Type              => Invocation_Signature_Id,
-          Value_Type            => Invocation_Graph_Vertex_Id,
-          No_Value              => No_Invocation_Graph_Vertex,
-          Expansion_Threshold   => 1.5,
-          Expansion_Factor      => 2,
-          Compression_Threshold => 0.3,
-          Compression_Factor    => 2,
-          "="                   => "=",
-          Destroy_Value         => Destroy_Invocation_Graph_Vertex,
-          Hash                  => Hash_Invocation_Signature);
- 
-       -----------------------
-       -- Elaboration roots --
-       -----------------------
- 
-       package IGV_Sets is new Membership_Sets
-         (Element_Type => Invocation_Graph_Vertex_Id,
-          "="          => "=",
-          Hash         => Hash_Invocation_Graph_Vertex);
- 
-       -----------
-       -- Graph --
-       -----------
- 
-       package DG is new Directed_Graphs
-         (Vertex_Id   => Invocation_Graph_Vertex_Id,
-          No_Vertex   => No_Invocation_Graph_Vertex,
-          Hash_Vertex => Hash_Invocation_Graph_Vertex,
-          Same_Vertex => "=",
-          Edge_id     => Invocation_Graph_Edge_Id,
-          No_Edge     => No_Invocation_Graph_Edge,
-          Hash_Edge   => Hash_Invocation_Graph_Edge,
-          Same_Edge   => "=");
- 
-       --  The following type represents the attributes of an invocation graph
- 
-       type Invocation_Graph_Attributes is record
-          Counts : Invocation_Graph_Edge_Counts := (others => 0);
-          --  Edge statistics
- 
-          Edge_Attributes : IGE_Tables.Dynamic_Hash_Table := IGE_Tables.Nil;
-          --  The map of edge -> edge attributes for all edges in the graph
- 
-          Graph : DG.Directed_Graph := DG.Nil;
-          --  The underlying graph describing the relations between edges and
-          --  vertices.
- 
-          Relations : Relation_Sets.Membership_Set := Relation_Sets.Nil;
-          --  The set of relations between source and targets, used to prevent
-          --  duplicate edges in the graph.
- 
-          Roots : IGV_Sets.Membership_Set := IGV_Sets.Nil;
-          --  The set of elaboration root vertices
- 
-          Signature_To_Vertex : Signature_Tables.Dynamic_Hash_Table :=
-                                  Signature_Tables.Nil;
-          --  The map of signature -> vertex
- 
-          Vertex_Attributes : IGV_Tables.Dynamic_Hash_Table := IGV_Tables.Nil;
-          --  The map of vertex -> vertex attributes for all vertices in the
-          --  graph.
-       end record;
- 
-       type Invocation_Graph is access Invocation_Graph_Attributes;
-       Nil : constant Invocation_Graph := null;
- 
-       ---------------
-       -- Iterators --
-       ---------------
- 
-       type All_Edge_Iterator         is new DG.All_Edge_Iterator;
-       type All_Vertex_Iterator       is new DG.All_Vertex_Iterator;
-       type Edges_To_Targets_Iterator is new DG.Outgoing_Edge_Iterator;
-       type Elaboration_Root_Iterator is new IGV_Sets.Iterator;
-    end Invocation_Graphs;
- 
     --------------------
     -- Library_Graphs --
     --------------------
--- 198,203 ----
*************** package Bindo.Graphs is
*** 702,714 ****
  
           No_Cycle_Kind);
  
!       --  The following type represents the various kinds of library edges
  
        type Library_Graph_Edge_Kind is
!         (Body_Before_Spec_Edge,
!          --  Successor denotes spec, Predecessor denotes a body. This is a
!          --  special edge kind used only during the discovery of components.
!          --  Note that a body can never be elaborated before its spec.
  
           Elaborate_Edge,
           --  Successor withs Predecessor, and has pragma Elaborate for it
--- 230,247 ----
  
           No_Cycle_Kind);
  
!       --  The following type represents the various kinds of library edges. The
!       --  order is important here, and corresponds to the order in which edges
!       --  are added to the graph. See Add_Edge_Kind_Check for details. If
!       --  changes are made such that new edge kinds are added or similar, we
!       --  need to make sure this type matches the code in Add_Edge_Kind_Check,
!       --  and Add_Edge_Kind_Check matches the order of edge adding. Likewise,
!       --  if the edge-adding order changes, we need consistency between this
!       --  enumeration type, the edge-adding order, and Add_Edge_Kind_Check.
  
        type Library_Graph_Edge_Kind is
!         (Spec_Before_Body_Edge,
!          --  Successor denotes a body, Predecessor denotes a spec
  
           Elaborate_Edge,
           --  Successor withs Predecessor, and has pragma Elaborate for it
*************** package Bindo.Graphs is
*** 716,721 ****
--- 249,257 ----
           Elaborate_All_Edge,
           --  Successor withs Predecessor, and has pragma Elaborate_All for it
  
+          With_Edge,
+          --  Successor withs Predecessor
+ 
           Forced_Edge,
           --  Successor is forced to with Predecessor by virtue of an existing
           --  elaboration order provided in a file.
*************** package Bindo.Graphs is
*** 724,734 ****
           --  An invocation construct in unit Successor invokes a target in unit
           --  Predecessor.
  
!          Spec_Before_Body_Edge,
!          --  Successor denotes a body, Predecessor denotes a spec
! 
!          With_Edge,
!          --  Successor withs Predecessor
  
           No_Edge);
  
--- 260,269 ----
           --  An invocation construct in unit Successor invokes a target in unit
           --  Predecessor.
  
!          Body_Before_Spec_Edge,
!          --  Successor denotes spec, Predecessor denotes a body. This is a
!          --  special edge kind used only during the discovery of components.
!          --  Note that a body can never be elaborated before its spec.
  
           No_Edge);
  
*************** package Bindo.Graphs is
*** 1724,1727 ****
--- 1259,1744 ----
        type Edges_To_Successors_Iterator is new DG.Outgoing_Edge_Iterator;
     end Library_Graphs;
  
+    -----------------------
+    -- Invocation_Graphs --
+    -----------------------
+ 
+    package Invocation_Graphs is
+ 
+       -----------
+       -- Graph --
+       -----------
+ 
+       --  The following type denotes an invocation graph handle. Each instance
+       --  must be created using routine Create.
+ 
+       type Invocation_Graph is private;
+       Nil : constant Invocation_Graph;
+ 
+       ----------------------
+       -- Graph operations --
+       ----------------------
+ 
+       procedure Add_Edge
+         (G      : Invocation_Graph;
+          Source : Invocation_Graph_Vertex_Id;
+          Target : Invocation_Graph_Vertex_Id;
+          IR_Id  : Invocation_Relation_Id);
+       pragma Inline (Add_Edge);
+       --  Create a new edge in invocation graph G with source vertex Source and
+       --  destination vertex Target. IR_Id is the invocation relation the edge
+       --  describes.
+ 
+       procedure Add_Vertex
+         (G           : Invocation_Graph;
+          IC_Id       : Invocation_Construct_Id;
+          Body_Vertex : Library_Graph_Vertex_Id;
+          Spec_Vertex : Library_Graph_Vertex_Id);
+       pragma Inline (Add_Vertex);
+       --  Create a new vertex in invocation graph G. IC_Id is the invocation
+       --  construct the vertex describes. Body_Vertex denotes the library graph
+       --  vertex where the invocation construct's body is declared. Spec_Vertex
+       --  is the library graph vertex where the invocation construct's spec is
+       --  declared.
+ 
+       function Create
+         (Initial_Vertices : Positive;
+          Initial_Edges    : Positive;
+          Lib_Graph        : Library_Graphs.Library_Graph)
+         return Invocation_Graph;
+       pragma Inline (Create);
+       --  Create a new empty graph with vertex capacity Initial_Vertices
+       --  and edge capacity Initial_Edges. Lib_Graph is the library graph
+       --  corresponding to this invocation graph.
+ 
+       function Get_Lib_Graph
+         (G : Invocation_Graph) return Library_Graphs.Library_Graph;
+       pragma Inline (Get_Lib_Graph);
+       --  Return the library graph corresponding to this invocation graph
+ 
+       procedure Destroy (G : in out Invocation_Graph);
+       pragma Inline (Destroy);
+       --  Destroy the contents of invocation graph G, rendering it unusable
+ 
+       function Present (G : Invocation_Graph) return Boolean;
+       pragma Inline (Present);
+       --  Determine whether invocation graph G exists
+ 
+       -----------------------
+       -- Vertex attributes --
+       -----------------------
+ 
+       function Body_Vertex
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Library_Graph_Vertex_Id;
+       pragma Inline (Body_Vertex);
+       --  Obtain the library graph vertex where the body of the invocation
+       --  construct represented by vertex Vertex of invocation graph G is
+       --  declared.
+ 
+       function Column
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Nat;
+       pragma Inline (Column);
+       --  Obtain the column number where the invocation construct vertex Vertex
+       --  of invocation graph G describes.
+ 
+       function Construct
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Invocation_Construct_Id;
+       pragma Inline (Construct);
+       --  Obtain the invocation construct vertex Vertex of invocation graph G
+       --  describes.
+ 
+       function Corresponding_Vertex
+         (G     : Invocation_Graph;
+          IS_Id : Invocation_Signature_Id) return Invocation_Graph_Vertex_Id;
+       pragma Inline (Corresponding_Vertex);
+       --  Obtain the vertex of invocation graph G that corresponds to signature
+       --  IS_Id.
+ 
+       function Line
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Nat;
+       pragma Inline (Line);
+       --  Obtain the line number where the invocation construct vertex Vertex
+       --  of invocation graph G describes.
+ 
+       function Name
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Name_Id;
+       pragma Inline (Name);
+       --  Obtain the name of the construct vertex Vertex of invocation graph G
+       --  describes.
+ 
+       function Spec_Vertex
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Library_Graph_Vertex_Id;
+       pragma Inline (Spec_Vertex);
+       --  Obtain the library graph vertex where the spec of the invocation
+       --  construct represented by vertex Vertex of invocation graph G is
+       --  declared.
+ 
+       ---------------------
+       -- Edge attributes --
+       ---------------------
+ 
+       function Extra
+         (G    : Invocation_Graph;
+          Edge : Invocation_Graph_Edge_Id) return Name_Id;
+       pragma Inline (Extra);
+       --  Obtain the extra name used in error diagnostics of edge Edge of
+       --  invocation graph G.
+ 
+       function Kind
+         (G    : Invocation_Graph;
+          Edge : Invocation_Graph_Edge_Id) return Invocation_Kind;
+       pragma Inline (Kind);
+       --  Obtain the nature of edge Edge of invocation graph G
+ 
+       function Relation
+         (G    : Invocation_Graph;
+          Edge : Invocation_Graph_Edge_Id) return Invocation_Relation_Id;
+       pragma Inline (Relation);
+       --  Obtain the relation edge Edge of invocation graph G describes
+ 
+       function Target
+         (G    : Invocation_Graph;
+          Edge : Invocation_Graph_Edge_Id) return Invocation_Graph_Vertex_Id;
+       pragma Inline (Target);
+       --  Obtain the target vertex edge Edge of invocation graph G designates
+ 
+       ----------------
+       -- Statistics --
+       ----------------
+ 
+       function Invocation_Graph_Edge_Count
+         (G    : Invocation_Graph;
+          Kind : Invocation_Kind) return Natural;
+       pragma Inline (Invocation_Graph_Edge_Count);
+       --  Obtain the total number of edges of kind Kind in invocation graph G
+ 
+       function Number_Of_Edges (G : Invocation_Graph) return Natural;
+       pragma Inline (Number_Of_Edges);
+       --  Obtain the total number of edges in invocation graph G
+ 
+       function Number_Of_Edges_To_Targets
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Natural;
+       pragma Inline (Number_Of_Edges_To_Targets);
+       --  Obtain the total number of edges to targets vertex Vertex of
+       --  invocation graph G has.
+ 
+       function Number_Of_Elaboration_Roots
+         (G : Invocation_Graph) return Natural;
+       pragma Inline (Number_Of_Elaboration_Roots);
+       --  Obtain the total number of elaboration roots in invocation graph G
+ 
+       function Number_Of_Vertices (G : Invocation_Graph) return Natural;
+       pragma Inline (Number_Of_Vertices);
+       --  Obtain the total number of vertices in invocation graph G
+ 
+       ---------------
+       -- Iterators --
+       ---------------
+ 
+       --  The following type represents an iterator over all edges of an
+       --  invocation graph.
+ 
+       type All_Edge_Iterator is private;
+ 
+       function Has_Next (Iter : All_Edge_Iterator) return Boolean;
+       pragma Inline (Has_Next);
+       --  Determine whether iterator Iter has more edges to examine
+ 
+       function Iterate_All_Edges
+         (G : Invocation_Graph) return All_Edge_Iterator;
+       pragma Inline (Iterate_All_Edges);
+       --  Obtain an iterator over all edges of invocation graph G
+ 
+       procedure Next
+         (Iter : in out All_Edge_Iterator;
+          Edge : out Invocation_Graph_Edge_Id);
+       pragma Inline (Next);
+       --  Return the current edge referenced by iterator Iter and advance to
+       --  the next available edge.
+ 
+       --  The following type represents an iterator over all vertices of an
+       --  invocation graph.
+ 
+       type All_Vertex_Iterator is private;
+ 
+       function Has_Next (Iter : All_Vertex_Iterator) return Boolean;
+       pragma Inline (Has_Next);
+       --  Determine whether iterator Iter has more vertices to examine
+ 
+       function Iterate_All_Vertices
+         (G : Invocation_Graph) return All_Vertex_Iterator;
+       pragma Inline (Iterate_All_Vertices);
+       --  Obtain an iterator over all vertices of invocation graph G
+ 
+       procedure Next
+         (Iter   : in out All_Vertex_Iterator;
+          Vertex : out Invocation_Graph_Vertex_Id);
+       pragma Inline (Next);
+       --  Return the current vertex referenced by iterator Iter and advance
+       --  to the next available vertex.
+ 
+       --  The following type represents an iterator over all edges that reach
+       --  targets starting from a particular source vertex.
+ 
+       type Edges_To_Targets_Iterator is private;
+ 
+       function Has_Next (Iter : Edges_To_Targets_Iterator) return Boolean;
+       pragma Inline (Has_Next);
+       --  Determine whether iterator Iter has more edges to examine
+ 
+       function Iterate_Edges_To_Targets
+         (G      : Invocation_Graph;
+          Vertex : Invocation_Graph_Vertex_Id) return Edges_To_Targets_Iterator;
+       pragma Inline (Iterate_Edges_To_Targets);
+       --  Obtain an iterator over all edges to targets with source vertex
+       --  Vertex of invocation graph G.
+ 
+       procedure Next
+         (Iter : in out Edges_To_Targets_Iterator;
+          Edge : out Invocation_Graph_Edge_Id);
+       pragma Inline (Next);
+       --  Return the current edge referenced by iterator Iter and advance to
+       --  the next available edge.
+ 
+       --  The following type represents an iterator over all vertices of an
+       --  invocation graph that denote the elaboration procedure or a spec or
+       --  a body, referred to as elaboration root.
+ 
+       type Elaboration_Root_Iterator is private;
+ 
+       function Has_Next (Iter : Elaboration_Root_Iterator) return Boolean;
+       pragma Inline (Has_Next);
+       --  Determine whether iterator Iter has more elaboration roots to examine
+ 
+       function Iterate_Elaboration_Roots
+         (G : Invocation_Graph) return Elaboration_Root_Iterator;
+       pragma Inline (Iterate_Elaboration_Roots);
+       --  Obtain an iterator over all elaboration roots of invocation graph G
+ 
+       procedure Next
+         (Iter : in out Elaboration_Root_Iterator;
+          Root : out Invocation_Graph_Vertex_Id);
+       pragma Inline (Next);
+       --  Return the current elaboration root referenced by iterator Iter and
+       --  advance to the next available elaboration root.
+ 
+    private
+ 
+       --------------
+       -- Vertices --
+       --------------
+ 
+       procedure Destroy_Invocation_Graph_Vertex
+         (Vertex : in out Invocation_Graph_Vertex_Id);
+       pragma Inline (Destroy_Invocation_Graph_Vertex);
+       --  Destroy invocation graph vertex Vertex
+ 
+       --  The following type represents the attributes of an invocation graph
+       --  vertex.
+ 
+       type Invocation_Graph_Vertex_Attributes is record
+          Body_Vertex : Library_Graph_Vertex_Id := No_Library_Graph_Vertex;
+          --  Reference to the library graph vertex where the body of this
+          --  vertex resides.
+ 
+          Construct : Invocation_Construct_Id := No_Invocation_Construct;
+          --  Reference to the invocation construct this vertex represents
+ 
+          Spec_Vertex : Library_Graph_Vertex_Id := No_Library_Graph_Vertex;
+          --  Reference to the library graph vertex where the spec of this
+          --  vertex resides.
+       end record;
+ 
+       No_Invocation_Graph_Vertex_Attributes :
+         constant Invocation_Graph_Vertex_Attributes :=
+           (Body_Vertex => No_Library_Graph_Vertex,
+            Construct   => No_Invocation_Construct,
+            Spec_Vertex => No_Library_Graph_Vertex);
+ 
+       procedure Destroy_Invocation_Graph_Vertex_Attributes
+         (Attrs : in out Invocation_Graph_Vertex_Attributes);
+       pragma Inline (Destroy_Invocation_Graph_Vertex_Attributes);
+       --  Destroy the contents of attributes Attrs
+ 
+       package IGV_Tables is new Dynamic_Hash_Tables
+         (Key_Type              => Invocation_Graph_Vertex_Id,
+          Value_Type            => Invocation_Graph_Vertex_Attributes,
+          No_Value              => No_Invocation_Graph_Vertex_Attributes,
+          Expansion_Threshold   => 1.5,
+          Expansion_Factor      => 2,
+          Compression_Threshold => 0.3,
+          Compression_Factor    => 2,
+          "="                   => "=",
+          Destroy_Value         => Destroy_Invocation_Graph_Vertex_Attributes,
+          Hash                  => Hash_Invocation_Graph_Vertex);
+ 
+       -----------
+       -- Edges --
+       -----------
+ 
+       procedure Destroy_Invocation_Graph_Edge
+         (Edge : in out Invocation_Graph_Edge_Id);
+       pragma Inline (Destroy_Invocation_Graph_Edge);
+       --  Destroy invocation graph edge Edge
+ 
+       --  The following type represents the attributes of an invocation graph
+       --  edge.
+ 
+       type Invocation_Graph_Edge_Attributes is record
+          Relation : Invocation_Relation_Id := No_Invocation_Relation;
+          --  Reference to the invocation relation this edge represents
+       end record;
+ 
+       No_Invocation_Graph_Edge_Attributes :
+         constant Invocation_Graph_Edge_Attributes :=
+           (Relation => No_Invocation_Relation);
+ 
+       procedure Destroy_Invocation_Graph_Edge_Attributes
+         (Attrs : in out Invocation_Graph_Edge_Attributes);
+       pragma Inline (Destroy_Invocation_Graph_Edge_Attributes);
+       --  Destroy the contents of attributes Attrs
+ 
+       package IGE_Tables is new Dynamic_Hash_Tables
+         (Key_Type              => Invocation_Graph_Edge_Id,
+          Value_Type            => Invocation_Graph_Edge_Attributes,
+          No_Value              => No_Invocation_Graph_Edge_Attributes,
+          Expansion_Threshold   => 1.5,
+          Expansion_Factor      => 2,
+          Compression_Threshold => 0.3,
+          Compression_Factor    => 2,
+          "="                   => "=",
+          Destroy_Value         => Destroy_Invocation_Graph_Edge_Attributes,
+          Hash                  => Hash_Invocation_Graph_Edge);
+ 
+       ---------------
+       -- Relations --
+       ---------------
+ 
+       --  The following type represents a relation between a source and target
+       --  vertices.
+ 
+       type Source_Target_Relation is record
+          Source : Invocation_Graph_Vertex_Id := No_Invocation_Graph_Vertex;
+          --  The source vertex
+ 
+          Target : Invocation_Graph_Vertex_Id := No_Invocation_Graph_Vertex;
+          --  The destination vertex
+       end record;
+ 
+       No_Source_Target_Relation :
+         constant Source_Target_Relation :=
+           (Source => No_Invocation_Graph_Vertex,
+            Target => No_Invocation_Graph_Vertex);
+ 
+       function Hash_Source_Target_Relation
+         (Rel : Source_Target_Relation) return Bucket_Range_Type;
+       pragma Inline (Hash_Source_Target_Relation);
+       --  Obtain the hash value of key Rel
+ 
+       package Relation_Sets is new Membership_Sets
+         (Element_Type => Source_Target_Relation,
+          "="          => "=",
+          Hash         => Hash_Source_Target_Relation);
+ 
+       ----------------
+       -- Statistics --
+       ----------------
+ 
+       type Invocation_Graph_Edge_Counts is array (Invocation_Kind) of Natural;
+ 
+       ----------------
+       -- Signatures --
+       ----------------
+ 
+       function Hash_Invocation_Signature
+         (IS_Id : Invocation_Signature_Id) return Bucket_Range_Type;
+       pragma Inline (Hash_Invocation_Signature);
+       --  Obtain the hash value of key IS_Id
+ 
+       package Signature_Tables is new Dynamic_Hash_Tables
+         (Key_Type              => Invocation_Signature_Id,
+          Value_Type            => Invocation_Graph_Vertex_Id,
+          No_Value              => No_Invocation_Graph_Vertex,
+          Expansion_Threshold   => 1.5,
+          Expansion_Factor      => 2,
+          Compression_Threshold => 0.3,
+          Compression_Factor    => 2,
+          "="                   => "=",
+          Destroy_Value         => Destroy_Invocation_Graph_Vertex,
+          Hash                  => Hash_Invocation_Signature);
+ 
+       -----------------------
+       -- Elaboration roots --
+       -----------------------
+ 
+       package IGV_Sets is new Membership_Sets
+         (Element_Type => Invocation_Graph_Vertex_Id,
+          "="          => "=",
+          Hash         => Hash_Invocation_Graph_Vertex);
+ 
+       -----------
+       -- Graph --
+       -----------
+ 
+       package DG is new Directed_Graphs
+         (Vertex_Id   => Invocation_Graph_Vertex_Id,
+          No_Vertex   => No_Invocation_Graph_Vertex,
+          Hash_Vertex => Hash_Invocation_Graph_Vertex,
+          Same_Vertex => "=",
+          Edge_id     => Invocation_Graph_Edge_Id,
+          No_Edge     => No_Invocation_Graph_Edge,
+          Hash_Edge   => Hash_Invocation_Graph_Edge,
+          Same_Edge   => "=");
+ 
+       --  The following type represents the attributes of an invocation graph
+ 
+       type Invocation_Graph_Attributes is record
+          Counts : Invocation_Graph_Edge_Counts := (others => 0);
+          --  Edge statistics
+ 
+          Edge_Attributes : IGE_Tables.Dynamic_Hash_Table := IGE_Tables.Nil;
+          --  The map of edge -> edge attributes for all edges in the graph
+ 
+          Graph : DG.Directed_Graph := DG.Nil;
+          --  The underlying graph describing the relations between edges and
+          --  vertices.
+ 
+          Relations : Relation_Sets.Membership_Set := Relation_Sets.Nil;
+          --  The set of relations between source and targets, used to prevent
+          --  duplicate edges in the graph.
+ 
+          Roots : IGV_Sets.Membership_Set := IGV_Sets.Nil;
+          --  The set of elaboration root vertices
+ 
+          Signature_To_Vertex : Signature_Tables.Dynamic_Hash_Table :=
+                                  Signature_Tables.Nil;
+          --  The map of signature -> vertex
+ 
+          Vertex_Attributes : IGV_Tables.Dynamic_Hash_Table := IGV_Tables.Nil;
+          --  The map of vertex -> vertex attributes for all vertices in the
+          --  graph.
+ 
+          Lib_Graph : Library_Graphs.Library_Graph;
+       end record;
+ 
+       type Invocation_Graph is access Invocation_Graph_Attributes;
+       Nil : constant Invocation_Graph := null;
+ 
+       ---------------
+       -- Iterators --
+       ---------------
+ 
+       type All_Edge_Iterator         is new DG.All_Edge_Iterator;
+       type All_Vertex_Iterator       is new DG.All_Vertex_Iterator;
+       type Edges_To_Targets_Iterator is new DG.Outgoing_Edge_Iterator;
+       type Elaboration_Root_Iterator is new IGV_Sets.Iterator;
+    end Invocation_Graphs;
+ 
  end Bindo.Graphs;
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo-units.adb gcc-11.1.0/gcc/ada/bindo-units.adb
*** gcc-10.3.0/gcc/ada/bindo-units.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo-units.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo-units.ads gcc-11.1.0/gcc/ada/bindo-units.ads
*** gcc-10.3.0/gcc/ada/bindo-units.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo-units.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo-validators.adb gcc-11.1.0/gcc/ada/bindo-validators.adb
*** gcc-10.3.0/gcc/ada/bindo-validators.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo-validators.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo-validators.ads gcc-11.1.0/gcc/ada/bindo-validators.ads
*** gcc-10.3.0/gcc/ada/bindo-validators.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo-validators.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo-writers.adb gcc-11.1.0/gcc/ada/bindo-writers.adb
*** gcc-10.3.0/gcc/ada/bindo-writers.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo-writers.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Bindo.Writers is
*** 222,228 ****
           Write_Eol;
  
           Write_Str  ("      Scope = ");
!          Write_Name (Scope (IS_Id));
           Write_Eol;
        end Write_Invocation_Signature;
  
--- 222,228 ----
           Write_Eol;
  
           Write_Str  ("      Scope = ");
!          Write_Name (IS_Scope (IS_Id));
           Write_Eol;
        end Write_Invocation_Signature;
  
*************** package body Bindo.Writers is
*** 927,932 ****
--- 927,936 ----
          (G      : Invocation_Graph;
           Vertex : Invocation_Graph_Vertex_Id)
        is
+          Lib_Graph : constant Library_Graph := Get_Lib_Graph (G);
+ 
+          B : constant Library_Graph_Vertex_Id := Body_Vertex (G, Vertex);
+          S : constant Library_Graph_Vertex_Id := Spec_Vertex (G, Vertex);
        begin
           pragma Assert (Present (G));
           pragma Assert (Present (Vertex));
*************** package body Bindo.Writers is
*** 938,945 ****
           Write_Eol;
  
           Write_Str ("  Body_Vertex (LGV_Id_");
!          Write_Int (Int (Body_Vertex (G, Vertex)));
!          Write_Str (")");
           Write_Eol;
  
           Write_Str ("  Construct (IC_Id_");
--- 942,950 ----
           Write_Eol;
  
           Write_Str ("  Body_Vertex (LGV_Id_");
!          Write_Int (Int (B));
!          Write_Str (") name = ");
!          Write_Name (Name (Lib_Graph, B));
           Write_Eol;
  
           Write_Str ("  Construct (IC_Id_");
*************** package body Bindo.Writers is
*** 948,955 ****
           Write_Eol;
  
           Write_Str ("  Spec_Vertex (LGV_Id_");
!          Write_Int (Int (Spec_Vertex (G, Vertex)));
!          Write_Str (")");
           Write_Eol;
  
           Write_Invocation_Graph_Edges (G, Vertex);
--- 953,961 ----
           Write_Eol;
  
           Write_Str ("  Spec_Vertex (LGV_Id_");
!          Write_Int (Int (S));
!          Write_Str (") name = ");
!          Write_Name (Name (Lib_Graph, S));
           Write_Eol;
  
           Write_Invocation_Graph_Edges (G, Vertex);
*************** package body Bindo.Writers is
*** 1031,1037 ****
        --  output.
  
        procedure Write_Components (G : Library_Graph);
!       pragma Inline (Write_Component);
        --  Write all components of library graph G to standard output
  
        procedure Write_Edges_To_Successors
--- 1037,1043 ----
        --  output.
  
        procedure Write_Components (G : Library_Graph);
!       pragma Inline (Write_Components);
        --  Write all components of library graph G to standard output
  
        procedure Write_Edges_To_Successors
*************** package body Bindo.Writers is
*** 1555,1561 ****
        begin
           pragma Assert (Present (Nam));
  
!          return Bucket_Range_Type (Nam);
        end Hash_File_Name;
  
        ---------------------
--- 1561,1567 ----
        begin
           pragma Assert (Present (Nam));
  
!          return Bucket_Range_Type (abs Nam);
        end Hash_File_Name;
  
        ---------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo-writers.ads gcc-11.1.0/gcc/ada/bindo-writers.ads
*** gcc-10.3.0/gcc/ada/bindo-writers.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo-writers.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo.adb gcc-11.1.0/gcc/ada/bindo.adb
*** gcc-10.3.0/gcc/ada/bindo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/bindo.ads gcc-11.1.0/gcc/ada/bindo.ads
*** gcc-10.3.0/gcc/ada/bindo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindo.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/bindusg.adb gcc-11.1.0/gcc/ada/bindusg.adb
*** gcc-10.3.0/gcc/ada/bindusg.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindusg.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Bindusg is
*** 315,320 ****
--- 315,325 ----
        Write_Line
          ("  -x        Exclude source files (check object consistency only)");
  
+       --  Line for -xdr switch
+ 
+       Write_Line
+         ("  -xdr      Use the XDR protocol for streaming");
+ 
        --  Line for -X switch
  
        Write_Line
diff -Nrcpad gcc-10.3.0/gcc/ada/bindusg.ads gcc-11.1.0/gcc/ada/bindusg.ads
*** gcc-10.3.0/gcc/ada/bindusg.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/bindusg.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/butil.adb gcc-11.1.0/gcc/ada/butil.adb
*** gcc-10.3.0/gcc/ada/butil.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/butil.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/butil.ads gcc-11.1.0/gcc/ada/butil.ads
*** gcc-10.3.0/gcc/ada/butil.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/butil.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/cal.c gcc-11.1.0/gcc/ada/cal.c
*** gcc-10.3.0/gcc/ada/cal.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/cal.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/casing.adb gcc-11.1.0/gcc/ada/casing.adb
*** gcc-10.3.0/gcc/ada/casing.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/casing.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/casing.ads gcc-11.1.0/gcc/ada/casing.ads
*** gcc-10.3.0/gcc/ada/casing.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/casing.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/ceinfo.adb gcc-11.1.0/gcc/ada/ceinfo.adb
*** gcc-10.3.0/gcc/ada/ceinfo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/ceinfo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/checks.adb gcc-11.1.0/gcc/ada/checks.adb
*** gcc-10.3.0/gcc/ada/checks.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/checks.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Einfo;    use Einfo;
*** 30,36 ****
  with Elists;   use Elists;
  with Eval_Fat; use Eval_Fat;
  with Exp_Ch11; use Exp_Ch11;
- with Exp_Ch2;  use Exp_Ch2;
  with Exp_Ch4;  use Exp_Ch4;
  with Exp_Pakd; use Exp_Pakd;
  with Exp_Util; use Exp_Util;
--- 30,35 ----
*************** package body Checks is
*** 223,229 ****
     --  can be referenced and trusted only if ROK is set True.
  
     procedure Apply_Float_Conversion_Check
!      (Ck_Node    : Node_Id;
        Target_Typ : Entity_Id);
     --  The checks on a conversion from a floating-point type to an integer
     --  type are delicate. They have to be performed before conversion, they
--- 222,228 ----
     --  can be referenced and trusted only if ROK is set True.
  
     procedure Apply_Float_Conversion_Check
!      (Expr       : Node_Id;
        Target_Typ : Entity_Id);
     --  The checks on a conversion from a floating-point type to an integer
     --  type are delicate. They have to be performed before conversion, they
*************** package body Checks is
*** 231,237 ****
     --  be taken into account to determine the safe bounds of the operand.
  
     procedure Apply_Selected_Length_Checks
!      (Ck_Node    : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id;
        Do_Static  : Boolean);
--- 230,236 ----
     --  be taken into account to determine the safe bounds of the operand.
  
     procedure Apply_Selected_Length_Checks
!      (Expr       : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id;
        Do_Static  : Boolean);
*************** package body Checks is
*** 240,254 ****
     --  described for the above routines. The Do_Static flag indicates that
     --  only a static check is to be done.
  
!    procedure Apply_Selected_Range_Checks
!      (Ck_Node    : Node_Id;
!       Target_Typ : Entity_Id;
!       Source_Typ : Entity_Id;
!       Do_Static  : Boolean);
!    --  This is the subprogram that does all the work for Apply_Range_Check.
!    --  Expr, Target_Typ and Source_Typ are as described for the above
!    --  routine. The Do_Static flag indicates that only a static check is
!    --  to be done.
  
     type Check_Type is new Check_Id range Access_Check .. Division_Check;
     function Check_Needed (Nod : Node_Id; Check : Check_Type) return Boolean;
--- 239,258 ----
     --  described for the above routines. The Do_Static flag indicates that
     --  only a static check is to be done.
  
!    procedure Compute_Range_For_Arithmetic_Op
!      (Op       : Node_Kind;
!       Lo_Left  : Uint;
!       Hi_Left  : Uint;
!       Lo_Right : Uint;
!       Hi_Right : Uint;
!       OK       : out Boolean;
!       Lo       : out Uint;
!       Hi       : out Uint);
!    --  Given an integer arithmetical operation Op and the range of values of
!    --  its operand(s), try to compute a conservative estimate of the possible
!    --  range of values for the result of the operation. Thus if OK is True on
!    --  return, the result is known to lie in the range Lo .. Hi (inclusive).
!    --  If OK is false, both Lo and Hi are set to No_Uint.
  
     type Check_Type is new Check_Id range Access_Check .. Division_Check;
     function Check_Needed (Nod : Node_Id; Check : Check_Type) return Boolean;
*************** package body Checks is
*** 307,315 ****
     --  To be cleaned up???
  
     function Guard_Access
!      (Cond    : Node_Id;
!       Loc     : Source_Ptr;
!       Ck_Node : Node_Id) return Node_Id;
     --  In the access type case, guard the test with a test to ensure
     --  that the access value is non-null, since the checks do not
     --  not apply to null access values.
--- 311,319 ----
     --  To be cleaned up???
  
     function Guard_Access
!      (Cond : Node_Id;
!       Loc  : Source_Ptr;
!       Expr : Node_Id) return Node_Id;
     --  In the access type case, guard the test with a test to ensure
     --  that the access value is non-null, since the checks do not
     --  not apply to null access values.
*************** package body Checks is
*** 332,338 ****
     --  of an entity, if these checks are suppressed for the entity.
  
     function Selected_Length_Checks
!      (Ck_Node    : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id;
        Warn_Node  : Node_Id) return Check_Result;
--- 336,342 ----
     --  of an entity, if these checks are suppressed for the entity.
  
     function Selected_Length_Checks
!      (Expr       : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id;
        Warn_Node  : Node_Id) return Check_Result;
*************** package body Checks is
*** 345,356 ****
     --  Selected_Range_Checks.
  
     function Selected_Range_Checks
!      (Ck_Node    : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id;
        Warn_Node  : Node_Id) return Check_Result;
!    --  Like Apply_Selected_Range_Checks, except it doesn't modify anything,
!    --  just returns a list of nodes as described in the spec of this package
     --  for the Range_Check function.
  
     ------------------------------
--- 349,360 ----
     --  Selected_Range_Checks.
  
     function Selected_Range_Checks
!      (Expr       : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id;
        Warn_Node  : Node_Id) return Check_Result;
!    --  Like Apply_Range_Check, except it does not modify anything, just
!    --  returns a list of nodes as described in the spec of this package
     --  for the Range_Check function.
  
     ------------------------------
*************** package body Checks is
*** 428,434 ****
           --  Nothing to do for Rem/Mod/Plus (overflow not possible, the check
           --  for zero-divide is a divide check, not an overflow check).
  
!          if Nkind_In (N, N_Op_Rem, N_Op_Mod, N_Op_Plus) then
              return;
           end if;
        end if;
--- 432,438 ----
           --  Nothing to do for Rem/Mod/Plus (overflow not possible, the check
           --  for zero-divide is a divide check, not an overflow check).
  
!          if Nkind (N) in N_Op_Rem | N_Op_Mod | N_Op_Plus then
              return;
           end if;
        end if;
*************** package body Checks is
*** 488,504 ****
       (Checks       : Check_Result;
        Stmts        : List_Id;
        Suppress_Typ : Entity_Id;
!       Static_Sloc  : Source_Ptr;
!       Flag_Node    : Node_Id)
     is
        Checks_On : constant Boolean :=
                      not Index_Checks_Suppressed (Suppress_Typ)
                        or else
                      not Range_Checks_Suppressed (Suppress_Typ);
  
-       Internal_Flag_Node   : constant Node_Id    := Flag_Node;
-       Internal_Static_Sloc : constant Source_Ptr := Static_Sloc;
- 
     begin
        --  For now we just return if Checks_On is false, however this should be
        --  enhanced to check for an always True value in the condition and to
--- 492,504 ----
       (Checks       : Check_Result;
        Stmts        : List_Id;
        Suppress_Typ : Entity_Id;
!       Static_Sloc  : Source_Ptr)
     is
        Checks_On : constant Boolean :=
                      not Index_Checks_Suppressed (Suppress_Typ)
                        or else
                      not Range_Checks_Suppressed (Suppress_Typ);
  
     begin
        --  For now we just return if Checks_On is false, however this should be
        --  enhanced to check for an always True value in the condition and to
*************** package body Checks is
*** 514,528 ****
           if Nkind (Checks (J)) = N_Raise_Constraint_Error
             and then Present (Condition (Checks (J)))
           then
!             if not Has_Dynamic_Range_Check (Internal_Flag_Node) then
!                Append_To (Stmts, Checks (J));
!                Set_Has_Dynamic_Range_Check (Internal_Flag_Node);
!             end if;
! 
           else
              Append_To
                (Stmts,
!                 Make_Raise_Constraint_Error (Internal_Static_Sloc,
                    Reason => CE_Range_Check_Failed));
           end if;
        end loop;
--- 514,524 ----
           if Nkind (Checks (J)) = N_Raise_Constraint_Error
             and then Present (Condition (Checks (J)))
           then
!             Append_To (Stmts, Checks (J));
           else
              Append_To
                (Stmts,
!                 Make_Raise_Constraint_Error (Static_Sloc,
                    Reason => CE_Range_Check_Failed));
           end if;
        end loop;
*************** package body Checks is
*** 539,545 ****
        --  We do not need checks if we are not generating code (i.e. the
        --  expander is not active). This is not just an optimization, there
        --  are cases (e.g. with pragma Debug) where generating the checks
!       --  can cause real trouble).
  
        if not Expander_Active then
           return;
--- 535,541 ----
        --  We do not need checks if we are not generating code (i.e. the
        --  expander is not active). This is not just an optimization, there
        --  are cases (e.g. with pragma Debug) where generating the checks
!       --  can cause real trouble.
  
        if not Expander_Active then
           return;
*************** package body Checks is
*** 588,599 ****
        if Ada_Version >= Ada_2012
           and then not Present (Param_Ent)
           and then Is_Entity_Name (N)
!          and then Ekind_In (Entity (N), 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.
  
--- 584,594 ----
        if Ada_Version >= Ada_2012
           and then not Present (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.
  
*************** package body Checks is
*** 605,637 ****
           return;
  
        --  Only apply the run-time check if the access parameter has an
!       --  associated extra access level parameter and when the level of the
!       --  type is less deep than the level of the access parameter, and
!       --  accessibility checks are not suppressed.
  
        elsif Present (Param_Ent)
!          and then Present (Extra_Accessibility (Param_Ent))
!          and then UI_Gt (Object_Access_Level (N),
!                          Deepest_Type_Access_Level (Typ))
           and then not Accessibility_Checks_Suppressed (Param_Ent)
           and then not Accessibility_Checks_Suppressed (Typ)
        then
           Param_Level :=
!            New_Occurrence_Of (Extra_Accessibility (Param_Ent), Loc);
  
           --  Use the dynamic accessibility parameter for the function's result
           --  when one has been created instead of statically referring to the
           --  deepest type level so as to appropriatly handle the rules for
           --  RM 3.10.2 (10.1/3).
  
!          if Ekind_In (Scope (Param_Ent), E_Function,
!                                          E_Operator,
!                                          E_Subprogram_Type)
!            and then Present (Extra_Accessibility_Of_Result (Scope (Param_Ent)))
           then
!             Type_Level :=
!               New_Occurrence_Of
!                 (Extra_Accessibility_Of_Result (Scope (Param_Ent)), Loc);
           else
              Type_Level :=
                Make_Integer_Literal (Loc, Deepest_Type_Access_Level (Typ));
--- 600,644 ----
           return;
  
        --  Only apply the run-time check if the access parameter has an
!       --  associated extra access level parameter and when accessibility checks
!       --  are enabled.
  
        elsif Present (Param_Ent)
!          and then Present (Get_Dynamic_Accessibility (Param_Ent))
           and then not Accessibility_Checks_Suppressed (Param_Ent)
           and then not Accessibility_Checks_Suppressed (Typ)
        then
+          --  Obtain the parameter's accessibility level
+ 
           Param_Level :=
!            New_Occurrence_Of (Get_Dynamic_Accessibility (Param_Ent), Loc);
  
           --  Use the dynamic accessibility parameter for the function's result
           --  when one has been created instead of statically referring to the
           --  deepest type level so as to appropriatly handle the rules for
           --  RM 3.10.2 (10.1/3).
  
!          if Ekind (Scope (Param_Ent)) = E_Function
!            and then In_Return_Value (N)
!            and then Ekind (Typ) = E_Anonymous_Access_Type
           then
!             --  Associate the level of the result type to the extra result
!             --  accessibility parameter belonging to the current function.
! 
!             if Present (Extra_Accessibility_Of_Result (Scope (Param_Ent))) then
!                Type_Level :=
!                  New_Occurrence_Of
!                    (Extra_Accessibility_Of_Result (Scope (Param_Ent)), Loc);
! 
!             --  In Ada 2005 and earlier modes, a result extra accessibility
!             --  parameter is not generated and no dynamic check is performed.
! 
!             else
!                return;
!             end if;
! 
!          --  Otherwise get the type's accessibility level normally
! 
           else
              Type_Level :=
                Make_Integer_Literal (Loc, Deepest_Type_Access_Level (Typ));
*************** package body Checks is
*** 1017,1024 ****
        --  Now see if an overflow check is required
  
        declare
!          Siz   : constant Int := UI_To_Int (Esize (Rtyp));
!          Dsiz  : constant Int := Siz * 2;
           Opnod : Node_Id;
           Ctyp  : Entity_Id;
           Opnd  : Node_Id;
--- 1024,1030 ----
        --  Now see if an overflow check is required
  
        declare
!          Dsiz  : constant Uint := 2 * Esize (Rtyp);
           Opnod : Node_Id;
           Ctyp  : Entity_Id;
           Opnd  : Node_Id;
*************** package body Checks is
*** 1054,1086 ****
           --  an integer type of sufficient length to hold the largest possible
           --  result.
  
!          --  If the size of check type exceeds the size of Long_Long_Integer,
           --  we use a different approach, expanding to:
  
!          --    typ (xxx_With_Ovflo_Check (Integer_64 (x), Integer (y)))
  
           --  where xxx is Add, Multiply or Subtract as appropriate
  
           --  Find check type if one exists
  
!          if Dsiz <= Standard_Integer_Size then
!             Ctyp := Standard_Integer;
! 
!          elsif Dsiz <= Standard_Long_Long_Integer_Size then
!             Ctyp := Standard_Long_Long_Integer;
  
           --  No check type exists, use runtime call
  
           else
              if Nkind (N) = N_Op_Add then
!                Cent := RE_Add_With_Ovflo_Check;
  
!             elsif Nkind (N) = N_Op_Multiply then
!                Cent := RE_Multiply_With_Ovflo_Check;
  
!             else
!                pragma Assert (Nkind (N) = N_Op_Subtract);
!                Cent := RE_Subtract_With_Ovflo_Check;
              end if;
  
              Rewrite (N,
--- 1060,1106 ----
           --  an integer type of sufficient length to hold the largest possible
           --  result.
  
!          --  If the size of the check type exceeds the maximum integer size,
           --  we use a different approach, expanding to:
  
!          --    typ (xxx_With_Ovflo_Check (Integer_NN (x), Integer_NN (y)))
  
           --  where xxx is Add, Multiply or Subtract as appropriate
  
           --  Find check type if one exists
  
!          if Dsiz <= System_Max_Integer_Size then
!             Ctyp := Integer_Type_For (Dsiz, Uns => False);
  
           --  No check type exists, use runtime call
  
           else
+             if System_Max_Integer_Size = 64 then
+                Ctyp := RTE (RE_Integer_64);
+             else
+                Ctyp := RTE (RE_Integer_128);
+             end if;
+ 
              if Nkind (N) = N_Op_Add then
!                if System_Max_Integer_Size = 64 then
!                   Cent := RE_Add_With_Ovflo_Check64;
!                else
!                   Cent := RE_Add_With_Ovflo_Check128;
!                end if;
  
!             elsif Nkind (N) = N_Op_Subtract then
!                if System_Max_Integer_Size = 64 then
!                   Cent := RE_Subtract_With_Ovflo_Check64;
!                else
!                   Cent := RE_Subtract_With_Ovflo_Check128;
!                end if;
  
!             else pragma Assert (Nkind (N) = N_Op_Multiply);
!                if System_Max_Integer_Size = 64 then
!                   Cent := RE_Multiply_With_Ovflo_Check64;
!                else
!                   Cent := RE_Multiply_With_Ovflo_Check128;
!                end if;
              end if;
  
              Rewrite (N,
*************** package body Checks is
*** 1088,1095 ****
                  Make_Function_Call (Loc,
                    Name => New_Occurrence_Of (RTE (Cent), Loc),
                    Parameter_Associations => New_List (
!                     OK_Convert_To (RTE (RE_Integer_64), Left_Opnd  (N)),
!                     OK_Convert_To (RTE (RE_Integer_64), Right_Opnd (N))))));
  
              Analyze_And_Resolve (N, Typ);
              return;
--- 1108,1115 ----
                  Make_Function_Call (Loc,
                    Name => New_Occurrence_Of (RTE (Cent), Loc),
                    Parameter_Associations => New_List (
!                     OK_Convert_To (Ctyp, Left_Opnd  (N)),
!                     OK_Convert_To (Ctyp, Right_Opnd (N))))));
  
              Analyze_And_Resolve (N, Typ);
              return;
*************** package body Checks is
*** 1207,1213 ****
           --  there is no overflow check that starts from that parent node,
           --  so apply check now.
  
!          if Nkind_In (P, N_If_Expression, N_Case_Expression)
             and then not Is_Signed_Integer_Arithmetic_Op (Parent (P))
           then
              null;
--- 1227,1233 ----
           --  there is no overflow check that starts from that parent node,
           --  so apply check now.
  
!          if Nkind (P) in N_If_Expression | N_Case_Expression
             and then not Is_Signed_Integer_Arithmetic_Op (Parent (P))
           then
              null;
*************** package body Checks is
*** 1968,1974 ****
     --      (1)  The bounds may not be known at compile time
     --      (2)  The check must take into account rounding or truncation.
     --      (3)  The range of type I may not be exactly representable in F.
!    --      (4)  For the rounding case, The end-points I'First - 0.5 and
     --           I'Last + 0.5 may or may not be in range, depending on the
     --           sign of  I'First and I'Last.
     --      (5)  X may be a NaN, which will fail any comparison
--- 1988,1994 ----
     --      (1)  The bounds may not be known at compile time
     --      (2)  The check must take into account rounding or truncation.
     --      (3)  The range of type I may not be exactly representable in F.
!    --      (4)  For the rounding case, the end-points I'First - 0.5 and
     --           I'Last + 0.5 may or may not be in range, depending on the
     --           sign of  I'First and I'Last.
     --      (5)  X may be a NaN, which will fail any comparison
*************** package body Checks is
*** 1999,2015 ****
     --          Hi_OK be True.
  
     procedure Apply_Float_Conversion_Check
!      (Ck_Node    : Node_Id;
        Target_Typ : Entity_Id)
     is
        LB          : constant Node_Id    := Type_Low_Bound (Target_Typ);
        HB          : constant Node_Id    := Type_High_Bound (Target_Typ);
!       Loc         : constant Source_Ptr := Sloc (Ck_Node);
!       Expr_Type   : constant Entity_Id  := Base_Type (Etype (Ck_Node));
        Target_Base : constant Entity_Id  :=
          Implementation_Base_Type (Target_Typ);
  
!       Par : constant Node_Id := Parent (Ck_Node);
        pragma Assert (Nkind (Par) = N_Type_Conversion);
        --  Parent of check node, must be a type conversion
  
--- 2019,2035 ----
     --          Hi_OK be True.
  
     procedure Apply_Float_Conversion_Check
!      (Expr       : Node_Id;
        Target_Typ : Entity_Id)
     is
        LB          : constant Node_Id    := Type_Low_Bound (Target_Typ);
        HB          : constant Node_Id    := Type_High_Bound (Target_Typ);
!       Loc         : constant Source_Ptr := Sloc (Expr);
!       Expr_Type   : constant Entity_Id  := Base_Type (Etype (Expr));
        Target_Base : constant Entity_Id  :=
          Implementation_Base_Type (Target_Typ);
  
!       Par : constant Node_Id := Parent (Expr);
        pragma Assert (Nkind (Par) = N_Type_Conversion);
        --  Parent of check node, must be a type conversion
  
*************** package body Checks is
*** 2049,2055 ****
        --  set the Do_Range check flag, since the range check is taken care of
        --  by the code we will generate.
  
!       Set_Do_Range_Check (Ck_Node, False);
  
        if not Compile_Time_Known_Value (LB)
            or not Compile_Time_Known_Value (HB)
--- 2069,2075 ----
        --  set the Do_Range check flag, since the range check is taken care of
        --  by the code we will generate.
  
!       Set_Do_Range_Check (Expr, False);
  
        if not Compile_Time_Known_Value (LB)
            or not Compile_Time_Known_Value (HB)
*************** package body Checks is
*** 2064,2070 ****
              Temp : constant Entity_Id := Make_Temporary (Loc, 'T', Par);
  
           begin
!             Apply_Float_Conversion_Check (Ck_Node, Target_Base);
              Set_Etype (Temp, Target_Base);
  
              --  Note: Previously the declaration was inserted above the parent
--- 2084,2090 ----
              Temp : constant Entity_Id := Make_Temporary (Loc, 'T', Par);
  
           begin
!             Apply_Float_Conversion_Check (Expr, Target_Base);
              Set_Etype (Temp, Target_Base);
  
              --  Note: Previously the declaration was inserted above the parent
*************** package body Checks is
*** 2105,2125 ****
        --  we can do the comparison with the bounds and the conversion to
        --  an integer type statically. The range checks are unchanged.
  
!       if Nkind (Ck_Node) = N_Real_Literal
!         and then Etype (Ck_Node) = Universal_Real
          and then Is_Integer_Type (Target_Typ)
        then
           declare
!             Int_Val : constant Uint := UR_To_Uint (Realval (Ck_Node));
  
           begin
              if Int_Val <= Ilast and then Int_Val >= Ifirst then
  
                 --  Conversion is safe
  
!                Rewrite (Parent (Ck_Node),
                   Make_Integer_Literal (Loc, UI_To_Int (Int_Val)));
!                Analyze_And_Resolve (Parent (Ck_Node), Target_Typ);
                 return;
              end if;
           end;
--- 2125,2145 ----
        --  we can do the comparison with the bounds and the conversion to
        --  an integer type statically. The range checks are unchanged.
  
!       if Nkind (Expr) = N_Real_Literal
!         and then Etype (Expr) = Universal_Real
          and then Is_Integer_Type (Target_Typ)
        then
           declare
!             Int_Val : constant Uint := UR_To_Uint (Realval (Expr));
  
           begin
              if Int_Val <= Ilast and then Int_Val >= Ifirst then
  
                 --  Conversion is safe
  
!                Rewrite (Parent (Expr),
                   Make_Integer_Literal (Loc, UI_To_Int (Int_Val)));
!                Analyze_And_Resolve (Parent (Expr), Target_Typ);
                 return;
              end if;
           end;
*************** package body Checks is
*** 2140,2162 ****
           Lo_OK := (Ifirst > 0);
  
        else
!          Lo := Machine (Expr_Type, UR_From_Uint (Ifirst), Round_Even, Ck_Node);
           Lo_OK := (Lo >= UR_From_Uint (Ifirst));
        end if;
  
        if Lo_OK then
  
           --  Lo_Chk := (X >= Lo)
  
           Lo_Chk := Make_Op_Ge (Loc,
!                      Left_Opnd => Duplicate_Subexpr_No_Checks (Ck_Node),
                       Right_Opnd => Make_Real_Literal (Loc, Lo));
  
        else
           --  Lo_Chk := (X > Lo)
  
           Lo_Chk := Make_Op_Gt (Loc,
!                      Left_Opnd => Duplicate_Subexpr_No_Checks (Ck_Node),
                       Right_Opnd => Make_Real_Literal (Loc, Lo));
        end if;
  
--- 2160,2191 ----
           Lo_OK := (Ifirst > 0);
  
        else
!          Lo := Machine (Expr_Type, UR_From_Uint (Ifirst), Round_Even, Expr);
           Lo_OK := (Lo >= UR_From_Uint (Ifirst));
        end if;
  
+       --  Saturate the lower bound to that of the expression's type, because
+       --  we do not want to create an out-of-range value but we still need to
+       --  do a comparison to catch NaNs.
+ 
+       if Lo < Expr_Value_R (Type_Low_Bound (Expr_Type)) then
+          Lo := Expr_Value_R (Type_Low_Bound (Expr_Type));
+          Lo_OK := True;
+       end if;
+ 
        if Lo_OK then
  
           --  Lo_Chk := (X >= Lo)
  
           Lo_Chk := Make_Op_Ge (Loc,
!                      Left_Opnd => Duplicate_Subexpr_No_Checks (Expr),
                       Right_Opnd => Make_Real_Literal (Loc, Lo));
  
        else
           --  Lo_Chk := (X > Lo)
  
           Lo_Chk := Make_Op_Gt (Loc,
!                      Left_Opnd => Duplicate_Subexpr_No_Checks (Expr),
                       Right_Opnd => Make_Real_Literal (Loc, Lo));
        end if;
  
*************** package body Checks is
*** 2174,2196 ****
           Hi := UR_From_Uint (Ilast) + Ureal_Half;
           Hi_OK := (Ilast < 0);
        else
!          Hi := Machine (Expr_Type, UR_From_Uint (Ilast), Round_Even, Ck_Node);
           Hi_OK := (Hi <= UR_From_Uint (Ilast));
        end if;
  
        if Hi_OK then
  
           --  Hi_Chk := (X <= Hi)
  
           Hi_Chk := Make_Op_Le (Loc,
!                      Left_Opnd => Duplicate_Subexpr_No_Checks (Ck_Node),
                       Right_Opnd => Make_Real_Literal (Loc, Hi));
  
        else
           --  Hi_Chk := (X < Hi)
  
           Hi_Chk := Make_Op_Lt (Loc,
!                      Left_Opnd => Duplicate_Subexpr_No_Checks (Ck_Node),
                       Right_Opnd => Make_Real_Literal (Loc, Hi));
        end if;
  
--- 2203,2234 ----
           Hi := UR_From_Uint (Ilast) + Ureal_Half;
           Hi_OK := (Ilast < 0);
        else
!          Hi := Machine (Expr_Type, UR_From_Uint (Ilast), Round_Even, Expr);
           Hi_OK := (Hi <= UR_From_Uint (Ilast));
        end if;
  
+       --  Saturate the higher bound to that of the expression's type, because
+       --  we do not want to create an out-of-range value but we still need to
+       --  do a comparison to catch NaNs.
+ 
+       if Hi > Expr_Value_R (Type_High_Bound (Expr_Type)) then
+          Hi := Expr_Value_R (Type_High_Bound (Expr_Type));
+          Hi_OK := True;
+       end if;
+ 
        if Hi_OK then
  
           --  Hi_Chk := (X <= Hi)
  
           Hi_Chk := Make_Op_Le (Loc,
!                      Left_Opnd => Duplicate_Subexpr_No_Checks (Expr),
                       Right_Opnd => Make_Real_Literal (Loc, Hi));
  
        else
           --  Hi_Chk := (X < Hi)
  
           Hi_Chk := Make_Op_Lt (Loc,
!                      Left_Opnd => Duplicate_Subexpr_No_Checks (Expr),
                       Right_Opnd => Make_Real_Literal (Loc, Hi));
        end if;
  
*************** package body Checks is
*** 2208,2214 ****
  
        --  Raise CE if either conditions does not hold
  
!       Insert_Action (Ck_Node,
          Make_Raise_Constraint_Error (Loc,
            Condition => Make_Op_Not (Loc, Make_And_Then (Loc, Lo_Chk, Hi_Chk)),
            Reason    => Reason));
--- 2246,2252 ----
  
        --  Raise CE if either conditions does not hold
  
!       Insert_Action (Expr,
          Make_Raise_Constraint_Error (Loc,
            Condition => Make_Op_Not (Loc, Make_And_Then (Loc, Lo_Chk, Hi_Chk)),
            Reason    => Reason));
*************** package body Checks is
*** 2219,2233 ****
     ------------------------
  
     procedure Apply_Length_Check
!      (Ck_Node    : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id := Empty)
     is
     begin
        Apply_Selected_Length_Checks
!         (Ck_Node, Target_Typ, Source_Typ, Do_Static => False);
     end Apply_Length_Check;
  
     -------------------------------------
     -- Apply_Parameter_Aliasing_Checks --
     -------------------------------------
--- 2257,2299 ----
     ------------------------
  
     procedure Apply_Length_Check
!      (Expr       : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id := Empty)
     is
     begin
        Apply_Selected_Length_Checks
!         (Expr, Target_Typ, Source_Typ, Do_Static => False);
     end Apply_Length_Check;
  
+    --------------------------------------
+    -- Apply_Length_Check_On_Assignment --
+    --------------------------------------
+ 
+    procedure Apply_Length_Check_On_Assignment
+      (Expr       : Node_Id;
+       Target_Typ : Entity_Id;
+       Target     : Node_Id;
+       Source_Typ : Entity_Id := Empty)
+    is
+       Assign : constant Node_Id := Parent (Target);
+ 
+    begin
+       --  No check is needed for the initialization of an object whose
+       --  nominal subtype is unconstrained.
+ 
+       if Is_Constr_Subt_For_U_Nominal (Target_Typ)
+         and then Nkind (Parent (Assign)) = N_Freeze_Entity
+         and then Is_Entity_Name (Target)
+         and then Entity (Target) = Entity (Parent (Assign))
+       then
+          return;
+       end if;
+ 
+       Apply_Selected_Length_Checks
+         (Expr, Target_Typ, Source_Typ, Do_Static => False);
+    end Apply_Length_Check_On_Assignment;
+ 
     -------------------------------------
     -- Apply_Parameter_Aliasing_Checks --
     -------------------------------------
*************** package body Checks is
*** 2644,2651 ****
  
        if not Comes_From_Source (Subp)
  
!          --  Do not process formal subprograms because the corresponding actual
!          --  will receive the proper checks when the instance is analyzed.
  
          or else Is_Formal_Subprogram (Subp)
  
--- 2710,2717 ----
  
        if not Comes_From_Source (Subp)
  
!         --  Do not process formal subprograms because the corresponding actual
!         --  will receive the proper checks when the instance is analyzed.
  
          or else Is_Formal_Subprogram (Subp)
  
*************** package body Checks is
*** 2688,2701 ****
           --    mode IN OUT - Pre, Post => Formal'Valid[_Scalars]
           --    mode    OUT -      Post => Formal'Valid[_Scalars]
  
!          if Check_Validity_Of_Parameters then
!             if Ekind_In (Formal, E_In_Parameter, E_In_Out_Parameter) then
!                Add_Validity_Check (Formal, Name_Precondition, False);
!             end if;
  
!             if Ekind_In (Formal, E_In_Out_Parameter, E_Out_Parameter) then
!                Add_Validity_Check (Formal, Name_Postcondition, False);
!             end if;
           end if;
  
           Next_Formal (Formal);
--- 2754,2765 ----
           --    mode IN OUT - Pre, Post => Formal'Valid[_Scalars]
           --    mode    OUT -      Post => Formal'Valid[_Scalars]
  
!          if Ekind (Formal) in E_In_Parameter | E_In_Out_Parameter then
!             Add_Validity_Check (Formal, Name_Precondition, False);
!          end if;
  
!          if Ekind (Formal) in E_In_Out_Parameter | E_Out_Parameter then
!             Add_Validity_Check (Formal, Name_Postcondition, False);
           end if;
  
           Next_Formal (Formal);
*************** package body Checks is
*** 2705,2711 ****
  
        --    Post => Subp'Result'Valid[_Scalars]
  
!       if Check_Validity_Of_Parameters and then Ekind (Subp) = E_Function then
           Add_Validity_Check (Subp, Name_Postcondition, True);
        end if;
     end Apply_Parameter_Validity_Checks;
--- 2769,2775 ----
  
        --    Post => Subp'Result'Valid[_Scalars]
  
!       if Ekind (Subp) = E_Function then
           Add_Validity_Check (Subp, Name_Postcondition, True);
        end if;
     end Apply_Parameter_Validity_Checks;
*************** package body Checks is
*** 2719,2851 ****
        Typ : Entity_Id;
        Fun : Entity_Id := Empty)
     is
!       S : Entity_Id;
  
     begin
!       if Predicate_Checks_Suppressed (Empty) then
!          return;
! 
!       elsif Predicates_Ignored (Typ) then
!          return;
! 
!       elsif Present (Predicate_Function (Typ)) then
!          S := Current_Scope;
!          while Present (S) and then not Is_Subprogram (S) loop
!             S := Scope (S);
!          end loop;
! 
!          --  A predicate check does not apply within internally generated
!          --  subprograms, such as TSS functions.
  
!          if Within_Internal_Subprogram then
!             return;
  
!          --  If the check appears within the predicate function itself, it
!          --  means that the user specified a check whose formal is the
!          --  predicated subtype itself, rather than some covering type. This
!          --  is likely to be a common error, and thus deserves a warning.
  
!          elsif Present (S) and then S = Predicate_Function (Typ) then
              Error_Msg_NE
!               ("predicate check includes a call to& that requires a "
!                & "predicate check??", Parent (N), Fun);
!             Error_Msg_N
!               ("\this will result in infinite recursion??", Parent (N));
! 
!             if Is_First_Subtype (Typ) then
!                Error_Msg_NE
!                  ("\use an explicit subtype of& to carry the predicate",
!                   Parent (N), Typ);
!             end if;
  
              Insert_Action (N,
                Make_Raise_Storage_Error (Sloc (N),
                  Reason => SE_Infinite_Recursion));
  
!          --  Here for normal case of predicate active
  
!          else
!             --  If the expression is an IN parameter, the predicate will have
!             --  been applied at the point of call. An additional check would
!             --  be redundant, or will lead to out-of-scope references if the
!             --  call appears within an aspect specification for a precondition.
  
!             --  However, if the reference is within the body of the subprogram
!             --  that declares the formal, the predicate can safely be applied,
!             --  which may be necessary for a nested call whose formal has a
!             --  different predicate.
  
!             if Is_Entity_Name (N)
!               and then Ekind (Entity (N)) = E_In_Parameter
!             then
!                declare
!                   In_Body : Boolean := False;
!                   P       : Node_Id := Parent (N);
  
!                begin
!                   while Present (P) loop
!                      if Nkind (P) = N_Subprogram_Body
!                        and then Corresponding_Spec (P) = Scope (Entity (N))
!                      then
!                         In_Body := True;
!                         exit;
!                      end if;
  
!                      P := Parent (P);
!                   end loop;
  
!                   if not In_Body then
!                      return;
!                   end if;
!                end;
              end if;
  
!             --  If the type has a static predicate and the expression is known
!             --  at compile time, see if the expression satisfies the predicate.
  
!             Check_Expression_Against_Static_Predicate (N, Typ);
  
!             if not Expander_Active then
!                return;
!             end if;
  
!             --  For an entity of the type, generate a call to the predicate
!             --  function, unless its type is an actual subtype, which is not
!             --  visible outside of the enclosing subprogram.
  
!             if Is_Entity_Name (N)
!               and then not Is_Actual_Subtype (Typ)
!             then
!                Insert_Action (N,
!                  Make_Predicate_Check
!                    (Typ, New_Occurrence_Of (Entity (N), Sloc (N))));
  
!             --  If the expression is not an entity it may have side effects,
!             --  and the following call will create an object declaration for
!             --  it. We disable checks during its analysis, to prevent an
!             --  infinite recursion.
  
!             --  If the prefix is an aggregate in an assignment, apply the
!             --  check to the LHS after assignment, rather than create a
!             --  redundant temporary. This is only necessary in rare cases
!             --  of array types (including strings) initialized with an
!             --  aggregate with an "others" clause, either coming from source
!             --  or generated by an Initialize_Scalars pragma.
  
!             elsif Nkind (N) = N_Aggregate
!               and then Nkind (Parent (N)) = N_Assignment_Statement
!             then
!                Insert_Action_After (Parent (N),
!                  Make_Predicate_Check
!                    (Typ, Duplicate_Subexpr (Name (Parent (N)))));
  
!             else
!                Insert_Action (N,
!                  Make_Predicate_Check
!                    (Typ, Duplicate_Subexpr (N)), Suppress => All_Checks);
!             end if;
           end if;
        end if;
     end Apply_Predicate_Check;
  
     -----------------------
--- 2783,2936 ----
        Typ : Entity_Id;
        Fun : Entity_Id := Empty)
     is
!       Par : Node_Id;
!       S   : Entity_Id;
  
+       Check_Disabled : constant Boolean := (not Predicate_Enabled (Typ))
+         or else not Predicate_Check_In_Scope (N);
     begin
!       S := Current_Scope;
!       while Present (S) and then not Is_Subprogram (S) loop
!          S := Scope (S);
!       end loop;
  
!       --  If the check appears within the predicate function itself, it means
!       --  that the user specified a check whose formal is the predicated
!       --  subtype itself, rather than some covering type. This is likely to be
!       --  a common error, and thus deserves a warning. We want to emit this
!       --  warning even if predicate checking is disabled (in which case the
!       --  warning is still useful even if it is not strictly accurate).
  
!       if Present (S) and then S = Predicate_Function (Typ) then
!          Error_Msg_NE
!            ("predicate check includes a call to& that requires a "
!             & "predicate check??", Parent (N), Fun);
!          Error_Msg_N
!            ("\this will result in infinite recursion??", Parent (N));
  
!          if Is_First_Subtype (Typ) then
              Error_Msg_NE
!               ("\use an explicit subtype of& to carry the predicate",
!                Parent (N), Typ);
!          end if;
  
+          if not Check_Disabled then
              Insert_Action (N,
                Make_Raise_Storage_Error (Sloc (N),
                  Reason => SE_Infinite_Recursion));
+             return;
+          end if;
+       end if;
  
!       if Check_Disabled then
!          return;
!       end if;
  
!       --  Normal case of predicate active
  
!       --  If the expression is an IN parameter, the predicate will have
!       --  been applied at the point of call. An additional check would
!       --  be redundant, or will lead to out-of-scope references if the
!       --  call appears within an aspect specification for a precondition.
  
!       --  However, if the reference is within the body of the subprogram
!       --  that declares the formal, the predicate can safely be applied,
!       --  which may be necessary for a nested call whose formal has a
!       --  different predicate.
  
!       if Is_Entity_Name (N)
!         and then Ekind (Entity (N)) = E_In_Parameter
!       then
!          declare
!             In_Body : Boolean := False;
!             P       : Node_Id := Parent (N);
  
!          begin
!             while Present (P) loop
!                if Nkind (P) = N_Subprogram_Body
!                  and then
!                    ((Present (Corresponding_Spec (P))
!                       and then
!                         Corresponding_Spec (P) = Scope (Entity (N)))
!                       or else
!                         Defining_Unit_Name (Specification (P)) =
!                           Scope (Entity (N)))
!                then
!                   In_Body := True;
!                   exit;
!                end if;
  
!                P := Parent (P);
!             end loop;
! 
!             if not In_Body then
!                return;
              end if;
+          end;
+       end if;
  
!       --  If the type has a static predicate and the expression is known
!       --  at compile time, see if the expression satisfies the predicate.
  
!       Check_Expression_Against_Static_Predicate (N, Typ);
  
!       if not Expander_Active then
!          return;
!       end if;
  
!       Par := Parent (N);
!       if Nkind (Par) = N_Qualified_Expression then
!          Par := Parent (Par);
!       end if;
  
!       --  For an entity of the type, generate a call to the predicate
!       --  function, unless its type is an actual subtype, which is not
!       --  visible outside of the enclosing subprogram.
  
!       if Is_Entity_Name (N)
!         and then not Is_Actual_Subtype (Typ)
!       then
!          Insert_Action (N,
!            Make_Predicate_Check
!              (Typ, New_Occurrence_Of (Entity (N), Sloc (N))));
!          return;
  
!       elsif Nkind (N) in N_Aggregate | N_Extension_Aggregate then
  
!          --  If the expression is an aggregate in an assignment, apply the
!          --  check to the LHS after the assignment, rather than create a
!          --  redundant temporary. This is only necessary in rare cases
!          --  of array types (including strings) initialized with an
!          --  aggregate with an "others" clause, either coming from source
!          --  or generated by an Initialize_Scalars pragma.
  
!          if Nkind (Par) = N_Assignment_Statement then
!             Insert_Action_After (Par,
!               Make_Predicate_Check
!                 (Typ, Duplicate_Subexpr (Name (Par))));
!             return;
! 
!          --  Similarly, if the expression is an aggregate in an object
!          --  declaration, apply it to the object after the declaration.
!          --  This is only necessary in rare cases of tagged extensions
!          --  initialized with an aggregate with an "others => <>" clause.
! 
!          elsif Nkind (Par) = N_Object_Declaration then
!             Insert_Action_After (Par,
!               Make_Predicate_Check (Typ,
!                 New_Occurrence_Of (Defining_Identifier (Par), Sloc (N))));
!             return;
           end if;
        end if;
+ 
+       --  If the expression is not an entity it may have side effects,
+       --  and the following call will create an object declaration for
+       --  it. We disable checks during its analysis, to prevent an
+       --  infinite recursion.
+ 
+       Insert_Action (N,
+         Make_Predicate_Check
+           (Typ, Duplicate_Subexpr (N)), Suppress => All_Checks);
     end Apply_Predicate_Check;
  
     -----------------------
*************** package body Checks is
*** 2853,2865 ****
     -----------------------
  
     procedure Apply_Range_Check
!      (Ck_Node    : Node_Id;
!       Target_Typ : Entity_Id;
!       Source_Typ : Entity_Id := Empty)
     is
     begin
!       Apply_Selected_Range_Checks
!         (Ck_Node, Target_Typ, Source_Typ, Do_Static => False);
     end Apply_Range_Check;
  
     ------------------------------
--- 2938,3044 ----
     -----------------------
  
     procedure Apply_Range_Check
!      (Expr        : Node_Id;
!       Target_Typ  : Entity_Id;
!       Source_Typ  : Entity_Id := Empty;
!       Insert_Node : Node_Id   := Empty)
     is
+       Checks_On : constant Boolean :=
+                     not Index_Checks_Suppressed (Target_Typ)
+                       or else
+                     not Range_Checks_Suppressed (Target_Typ);
+ 
+       Loc : constant Source_Ptr := Sloc (Expr);
+ 
+       Cond     : Node_Id;
+       R_Cno    : Node_Id;
+       R_Result : Check_Result;
+ 
     begin
!       --  Only apply checks when generating code. In GNATprove mode, we do not
!       --  apply the checks, but we still call Selected_Range_Checks to possibly
!       --  issue errors on SPARK code when a run-time error can be detected at
!       --  compile time.
! 
!       if not GNATprove_Mode then
!          if not Expander_Active or not Checks_On then
!             return;
!          end if;
!       end if;
! 
!       R_Result :=
!         Selected_Range_Checks (Expr, Target_Typ, Source_Typ, Insert_Node);
! 
!       if GNATprove_Mode then
!          return;
!       end if;
! 
!       for J in 1 .. 2 loop
!          R_Cno := R_Result (J);
!          exit when No (R_Cno);
! 
!          --  The range check requires runtime evaluation. Depending on what its
!          --  triggering condition is, the check may be converted into a compile
!          --  time constraint check.
! 
!          if Nkind (R_Cno) = N_Raise_Constraint_Error
!            and then Present (Condition (R_Cno))
!          then
!             Cond := Condition (R_Cno);
! 
!             --  Insert the range check before the related context. Note that
!             --  this action analyses the triggering condition.
! 
!             if Present (Insert_Node) then
!                Insert_Action (Insert_Node, R_Cno);
!             else
!                Insert_Action (Expr, R_Cno);
!             end if;
! 
!             --  The triggering condition evaluates to True, the range check
!             --  can be converted into a compile time constraint check.
! 
!             if Is_Entity_Name (Cond)
!               and then Entity (Cond) = Standard_True
!             then
!                --  Since an N_Range is technically not an expression, we have
!                --  to set one of the bounds to C_E and then just flag the
!                --  N_Range. The warning message will point to the lower bound
!                --  and complain about a range, which seems OK.
! 
!                if Nkind (Expr) = N_Range then
!                   Apply_Compile_Time_Constraint_Error
!                     (Low_Bound (Expr),
!                      "static range out of bounds of}??",
!                      CE_Range_Check_Failed,
!                      Ent => Target_Typ,
!                      Typ => Target_Typ);
! 
!                   Set_Raises_Constraint_Error (Expr);
! 
!                else
!                   Apply_Compile_Time_Constraint_Error
!                     (Expr,
!                      "static value out of range of}??",
!                      CE_Range_Check_Failed,
!                      Ent => Target_Typ,
!                      Typ => Target_Typ);
!                end if;
!             end if;
! 
!          --  The range check raises Constraint_Error explicitly
! 
!          elsif Present (Insert_Node) then
!             R_Cno :=
!               Make_Raise_Constraint_Error (Sloc (Insert_Node),
!                 Reason => CE_Range_Check_Failed);
! 
!             Insert_Action (Insert_Node, R_Cno);
! 
!          else
!             Install_Static_Check (R_Cno, Loc);
!          end if;
!       end loop;
     end Apply_Range_Check;
  
     ------------------------------
*************** package body Checks is
*** 3079,3101 ****
        end if;
  
        --  Return if we know expression is definitely in the range of the target
!       --  type as determined by Determine_Range. Right now we only do this for
!       --  discrete types, and not fixed-point or floating-point types.
! 
!       --  The additional less-precise tests below catch these cases
! 
!       --  In GNATprove_Mode, also deal with the case of a conversion from
!       --  floating-point to integer. It is only possible because analysis
!       --  in GNATprove rules out the possibility of a NaN or infinite value.
  
        --  Note: skip this if we are given a source_typ, since the point of
        --  supplying a Source_Typ is to stop us looking at the expression.
        --  We could sharpen this test to be out parameters only ???
  
        if Is_Discrete_Type (Target_Typ)
-         and then (Is_Discrete_Type (Etype (Expr))
-                    or else (GNATprove_Mode
-                              and then Is_Floating_Point_Type (Etype (Expr))))
          and then not Is_Unconstrained_Subscr_Ref
          and then No (Source_Typ)
        then
--- 3258,3273 ----
        end if;
  
        --  Return if we know expression is definitely in the range of the target
!       --  type as determined by Determine_Range_To_Discrete. Right now we only
!       --  do this for discrete target types, i.e. neither for fixed-point nor
!       --  for floating-point types. But the additional less precise tests below
!       --  catch these cases.
  
        --  Note: skip this if we are given a source_typ, since the point of
        --  supplying a Source_Typ is to stop us looking at the expression.
        --  We could sharpen this test to be out parameters only ???
  
        if Is_Discrete_Type (Target_Typ)
          and then not Is_Unconstrained_Subscr_Ref
          and then No (Source_Typ)
        then
*************** package body Checks is
*** 3139,3173 ****
  
                    --  Otherwise determine range of value
  
!                   if Is_Discrete_Type (Etype (Expr)) then
!                      Determine_Range
!                        (Expr, OK, Lo, Hi, Assume_Valid => True);
! 
!                   --  When converting a float to an integer type, determine the
!                   --  range in real first, and then convert the bounds using
!                   --  UR_To_Uint which correctly rounds away from zero when
!                   --  half way between two integers, as required by normal
!                   --  Ada 95 rounding semantics. It is only possible because
!                   --  analysis in GNATprove rules out the possibility of a NaN
!                   --  or infinite value.
! 
!                   elsif GNATprove_Mode
!                     and then Is_Floating_Point_Type (Etype (Expr))
!                   then
!                      declare
!                         Hir : Ureal;
!                         Lor : Ureal;
! 
!                      begin
!                         Determine_Range_R
!                           (Expr, OK, Lor, Hir, Assume_Valid => True);
! 
!                         if OK then
!                            Lo := UR_To_Uint (Lor);
!                            Hi := UR_To_Uint (Hir);
!                         end if;
!                      end;
!                   end if;
  
                    if OK then
  
--- 3311,3318 ----
  
                    --  Otherwise determine range of value
  
!                   Determine_Range_To_Discrete
!                     (Expr, OK, Lo, Hi, Fixed_Int, Assume_Valid => True);
  
                    if OK then
  
*************** package body Checks is
*** 3185,3191 ****
                          --  provide a wider range.
  
                          if not CodePeer_Mode
!                           or else Target_Typ /= RTE (RE_Priority)
                          then
                             Bad_Value;
                          end if;
--- 3330,3336 ----
                          --  provide a wider range.
  
                          if not CodePeer_Mode
!                           or else not Is_RTE (Target_Typ, RE_Priority)
                          then
                             Bad_Value;
                          end if;
*************** package body Checks is
*** 3210,3219 ****
        --  Check if we can determine at compile time whether Expr is in the
        --  range of the target type. Note that if S_Typ is within the bounds
        --  of Target_Typ then this must be the case. This check is meaningful
!       --  only if this is not a conversion between integer and real types.
  
        if not Is_Unconstrained_Subscr_Ref
!         and then Is_Discrete_Type (S_Typ) = Is_Discrete_Type (Target_Typ)
          and then
            (In_Subrange_Of (S_Typ, Target_Typ, Fixed_Int)
  
--- 3355,3366 ----
        --  Check if we can determine at compile time whether Expr is in the
        --  range of the target type. Note that if S_Typ is within the bounds
        --  of Target_Typ then this must be the case. This check is meaningful
!       --  only if this is not a conversion between integer and real types,
!       --  unless for a fixed-point type if Fixed_Int is set.
  
        if not Is_Unconstrained_Subscr_Ref
!         and then (Is_Discrete_Type (S_Typ) = Is_Discrete_Type (Target_Typ)
!                    or else (Fixed_Int and then Is_Discrete_Type (Target_Typ)))
          and then
            (In_Subrange_Of (S_Typ, Target_Typ, Fixed_Int)
  
*************** package body Checks is
*** 3263,3269 ****
     ----------------------------------
  
     procedure Apply_Selected_Length_Checks
!      (Ck_Node    : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id;
        Do_Static  : Boolean)
--- 3410,3416 ----
     ----------------------------------
  
     procedure Apply_Selected_Length_Checks
!      (Expr       : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id;
        Do_Static  : Boolean)
*************** package body Checks is
*** 3273,3279 ****
                        or else
                      not Length_Checks_Suppressed (Target_Typ);
  
!       Loc : constant Source_Ptr := Sloc (Ck_Node);
  
        Cond     : Node_Id;
        R_Cno    : Node_Id;
--- 3420,3426 ----
                        or else
                      not Length_Checks_Suppressed (Target_Typ);
  
!       Loc : constant Source_Ptr := Sloc (Expr);
  
        Cond     : Node_Id;
        R_Cno    : Node_Id;
*************** package body Checks is
*** 3290,3296 ****
        end if;
  
        R_Result :=
!         Selected_Length_Checks (Ck_Node, Target_Typ, Source_Typ, Empty);
  
        for J in 1 .. 2 loop
           R_Cno := R_Result (J);
--- 3437,3443 ----
        end if;
  
        R_Result :=
!         Selected_Length_Checks (Expr, Target_Typ, Source_Typ, Empty);
  
        for J in 1 .. 2 loop
           R_Cno := R_Result (J);
*************** package body Checks is
*** 3304,3316 ****
           if Ekind (Current_Scope) = E_Package
             and then Is_Compilation_Unit (Current_Scope)
           then
!             Ensure_Defined (Target_Typ, Ck_Node);
  
              if Present (Source_Typ) then
!                Ensure_Defined (Source_Typ, Ck_Node);
  
!             elsif Is_Itype (Etype (Ck_Node)) then
!                Ensure_Defined (Etype (Ck_Node), Ck_Node);
              end if;
           end if;
  
--- 3451,3463 ----
           if Ekind (Current_Scope) = E_Package
             and then Is_Compilation_Unit (Current_Scope)
           then
!             Ensure_Defined (Target_Typ, Expr);
  
              if Present (Source_Typ) then
!                Ensure_Defined (Source_Typ, Expr);
  
!             elsif Is_Itype (Etype (Expr)) then
!                Ensure_Defined (Etype (Expr), Expr);
              end if;
           end if;
  
*************** package body Checks is
*** 3324,3338 ****
  
              --  Case where node does not now have a dynamic check
  
!             if not Has_Dynamic_Length_Check (Ck_Node) then
  
                 --  If checks are on, just insert the check
  
                 if Checks_On then
!                   Insert_Action (Ck_Node, R_Cno);
  
                    if not Do_Static then
!                      Set_Has_Dynamic_Length_Check (Ck_Node);
                    end if;
  
                 --  If checks are off, then analyze the length check after
--- 3471,3485 ----
  
              --  Case where node does not now have a dynamic check
  
!             if not Has_Dynamic_Length_Check (Expr) then
  
                 --  If checks are on, just insert the check
  
                 if Checks_On then
!                   Insert_Action (Expr, R_Cno);
  
                    if not Do_Static then
!                      Set_Has_Dynamic_Length_Check (Expr);
                    end if;
  
                 --  If checks are off, then analyze the length check after
*************** package body Checks is
*** 3341,3347 ****
                 --  compile time warning in this case.
  
                 else
!                   Set_Parent (R_Cno, Ck_Node);
                    Analyze (R_Cno);
                 end if;
              end if;
--- 3488,3494 ----
                 --  compile time warning in this case.
  
                 else
!                   Set_Parent (R_Cno, Expr);
                    Analyze (R_Cno);
                 end if;
              end if;
*************** package body Checks is
*** 3352,3358 ****
                and then Entity (Cond) = Standard_True
              then
                 Apply_Compile_Time_Constraint_Error
!                  (Ck_Node, "wrong length for array of}??",
                    CE_Length_Check_Failed,
                    Ent => Target_Typ,
                    Typ => Target_Typ);
--- 3499,3505 ----
                and then Entity (Cond) = Standard_True
              then
                 Apply_Compile_Time_Constraint_Error
!                  (Expr, "wrong length for array of}??",
                    CE_Length_Check_Failed,
                    Ent => Target_Typ,
                    Typ => Target_Typ);
*************** package body Checks is
*** 3372,3490 ****
        end loop;
     end Apply_Selected_Length_Checks;
  
-    ---------------------------------
-    -- Apply_Selected_Range_Checks --
-    ---------------------------------
- 
-    procedure Apply_Selected_Range_Checks
-      (Ck_Node    : Node_Id;
-       Target_Typ : Entity_Id;
-       Source_Typ : Entity_Id;
-       Do_Static  : Boolean)
-    is
-       Checks_On : constant Boolean :=
-                     not Index_Checks_Suppressed (Target_Typ)
-                       or else
-                     not Range_Checks_Suppressed (Target_Typ);
- 
-       Loc : constant Source_Ptr := Sloc (Ck_Node);
- 
-       Cond     : Node_Id;
-       R_Cno    : Node_Id;
-       R_Result : Check_Result;
- 
-    begin
-       --  Only apply checks when generating code. In GNATprove mode, we do not
-       --  apply the checks, but we still call Selected_Range_Checks to possibly
-       --  issue errors on SPARK code when a run-time error can be detected at
-       --  compile time.
- 
-       if not GNATprove_Mode then
-          if not Expander_Active or not Checks_On then
-             return;
-          end if;
-       end if;
- 
-       R_Result :=
-         Selected_Range_Checks (Ck_Node, Target_Typ, Source_Typ, Empty);
- 
-       if GNATprove_Mode then
-          return;
-       end if;
- 
-       for J in 1 .. 2 loop
-          R_Cno := R_Result (J);
-          exit when No (R_Cno);
- 
-          --  The range check requires runtime evaluation. Depending on what its
-          --  triggering condition is, the check may be converted into a compile
-          --  time constraint check.
- 
-          if Nkind (R_Cno) = N_Raise_Constraint_Error
-            and then Present (Condition (R_Cno))
-          then
-             Cond := Condition (R_Cno);
- 
-             --  Insert the range check before the related context. Note that
-             --  this action analyses the triggering condition.
- 
-             Insert_Action (Ck_Node, R_Cno);
- 
-             --  This old code doesn't make sense, why is the context flagged as
-             --  requiring dynamic range checks now in the middle of generating
-             --  them ???
- 
-             if not Do_Static then
-                Set_Has_Dynamic_Range_Check (Ck_Node);
-             end if;
- 
-             --  The triggering condition evaluates to True, the range check
-             --  can be converted into a compile time constraint check.
- 
-             if Is_Entity_Name (Cond)
-               and then Entity (Cond) = Standard_True
-             then
-                --  Since an N_Range is technically not an expression, we have
-                --  to set one of the bounds to C_E and then just flag the
-                --  N_Range. The warning message will point to the lower bound
-                --  and complain about a range, which seems OK.
- 
-                if Nkind (Ck_Node) = N_Range then
-                   Apply_Compile_Time_Constraint_Error
-                     (Low_Bound (Ck_Node),
-                      "static range out of bounds of}??",
-                      CE_Range_Check_Failed,
-                      Ent => Target_Typ,
-                      Typ => Target_Typ);
- 
-                   Set_Raises_Constraint_Error (Ck_Node);
- 
-                else
-                   Apply_Compile_Time_Constraint_Error
-                     (Ck_Node,
-                      "static value out of range of}??",
-                      CE_Range_Check_Failed,
-                      Ent => Target_Typ,
-                      Typ => Target_Typ);
-                end if;
- 
-             --  If we were only doing a static check, or if checks are not
-             --  on, then we want to delete the check, since it is not needed.
-             --  We do this by replacing the if statement by a null statement
- 
-             elsif Do_Static then
-                Remove_Warning_Messages (R_Cno);
-                Rewrite (R_Cno, Make_Null_Statement (Loc));
-             end if;
- 
-          --  The range check raises Constraint_Error explicitly
- 
-          else
-             Install_Static_Check (R_Cno, Loc);
-          end if;
-       end loop;
-    end Apply_Selected_Range_Checks;
- 
     -------------------------------
     -- Apply_Static_Length_Check --
     -------------------------------
--- 3519,3524 ----
*************** package body Checks is
*** 3523,3529 ****
  
           --  Move to next subscript
  
!          Sub := Next (Sub);
        end loop;
     end Apply_Subscript_Validity_Checks;
  
--- 3557,3563 ----
  
           --  Move to next subscript
  
!          Next (Sub);
        end loop;
     end Apply_Subscript_Validity_Checks;
  
*************** package body Checks is
*** 3566,3572 ****
  
        elsif Is_Scalar_Type (Target_Type) then
           declare
!             Conv_OK  : constant Boolean := Conversion_OK (N);
              --  If the Conversion_OK flag on the type conversion is set and no
              --  floating-point type is involved in the type conversion then
              --  fixed-point values must be read as integral values.
--- 3600,3606 ----
  
        elsif Is_Scalar_Type (Target_Type) then
           declare
!             Conv_OK : constant Boolean := Conversion_OK (N);
              --  If the Conversion_OK flag on the type conversion is set and no
              --  floating-point type is involved in the type conversion then
              --  fixed-point values must be read as integral values.
*************** package body Checks is
*** 3622,3635 ****
                              (Entity (High_Bound (Scalar_Range (Enum_T))));
                       end if;
  
!                      if Last_E <= Last_I then
!                         null;
! 
!                      else
                          Activate_Overflow_Check (N);
                       end if;
                    end;
- 
                 else
                    Activate_Overflow_Check (N);
                 end if;
--- 3656,3665 ----
                              (Entity (High_Bound (Scalar_Range (Enum_T))));
                       end if;
  
!                      if Last_E > Last_I then
                          Activate_Overflow_Check (N);
                       end if;
                    end;
                 else
                    Activate_Overflow_Check (N);
                 end if;
*************** package body Checks is
*** 3642,3655 ****
                   and then not GNATprove_Mode
                 then
                    Apply_Float_Conversion_Check (Expr, Target_Type);
- 
                 else
!                   --  Conversions involving fixed-point types are expanded
!                   --  separately, and do not need a Range_Check flag, except
!                   --  in GNATprove_Mode, where the explicit constraint check
!                   --  will not be generated.
  
                    if GNATprove_Mode
                      or else (not Is_Fixed_Point_Type (Expr_Type)
                                and then not Is_Fixed_Point_Type (Target_Type))
                    then
--- 3672,3687 ----
                   and then not GNATprove_Mode
                 then
                    Apply_Float_Conversion_Check (Expr, Target_Type);
                 else
!                   --  Raw conversions involving fixed-point types are expanded
!                   --  separately and do not need a Range_Check flag yet, except
!                   --  in GNATprove_Mode where this expansion is not performed.
!                   --  This does not apply to conversion where fixed-point types
!                   --  are treated as integers, which are precisely generated by
!                   --  this expansion.
  
                    if GNATprove_Mode
+                     or else Conv_OK
                      or else (not Is_Fixed_Point_Type (Expr_Type)
                                and then not Is_Fixed_Point_Type (Target_Type))
                    then
*************** package body Checks is
*** 3787,3792 ****
--- 3819,3829 ----
        if Inside_A_Generic then
           return;
  
+       --  Nothing to do if the result type is universal integer
+ 
+       elsif Typ = Universal_Integer then
+          return;
+ 
        --  Nothing to do if checks are suppressed
  
        elsif Range_Checks_Suppressed (Typ)
*************** package body Checks is
*** 3885,3890 ****
--- 3922,3934 ----
  
        function Aggregate_Discriminant_Val (Disc : Entity_Id) return Node_Id;
  
+       function Replace_Current_Instance
+         (N : Node_Id) return Traverse_Result;
+       --  Replace a reference to the current instance of the type with the
+       --  corresponding _init formal of the initialization procedure. Note:
+       --  this function relies on us currently being within the initialization
+       --  procedure.
+ 
        --------------------------------
        -- Aggregate_Discriminant_Val --
        --------------------------------
*************** package body Checks is
*** 3912,3917 ****
--- 3956,3981 ----
           raise Program_Error;
        end Aggregate_Discriminant_Val;
  
+       ------------------------------
+       -- Replace_Current_Instance --
+       ------------------------------
+ 
+       function Replace_Current_Instance
+         (N : Node_Id) return Traverse_Result is
+       begin
+          if Is_Entity_Name (N)
+            and then Etype (N) = Entity (N)
+          then
+             Rewrite (N,
+               New_Occurrence_Of (First_Formal (Current_Subprogram), Loc));
+          end if;
+ 
+          return OK;
+       end Replace_Current_Instance;
+ 
+       procedure Search_And_Replace_Current_Instance is new
+         Traverse_Proc (Replace_Current_Instance);
+ 
     --  Start of processing for Build_Discriminant_Checks
  
     begin
*************** package body Checks is
*** 3941,3946 ****
--- 4005,4017 ----
              Dval := Duplicate_Subexpr_No_Checks (Dval);
           end if;
  
+          --  Replace references to the current instance of the type with the
+          --  corresponding _init formal of the initialization procedure.
+ 
+          if Within_Init_Proc then
+             Search_And_Replace_Current_Instance (Dval);
+          end if;
+ 
           --  If we have an Unchecked_Union node, we can infer the discriminants
           --  of the node.
  
*************** package body Checks is
*** 3956,3961 ****
--- 4027,4041 ----
                 Duplicate_Subexpr_No_Checks
                   (Aggregate_Discriminant_Val (Disc_Ent));
  
+          elsif Is_Access_Type (Etype (N)) then
+             Dref :=
+               Make_Selected_Component (Loc,
+                 Prefix        =>
+                   Make_Explicit_Dereference (Loc,
+                     Duplicate_Subexpr_No_Checks (N, Name_Req => True)),
+                 Selector_Name => Make_Identifier (Loc, Chars (Disc_Ent)));
+ 
+             Set_Is_In_Discriminant_Check (Dref);
           else
              Dref :=
                Make_Selected_Component (Loc,
*************** package body Checks is
*** 4002,4010 ****
        function Left_Expression (Op : Node_Id) return Node_Id is
           LE : Node_Id := Left_Opnd (Op);
        begin
!          while Nkind_In (LE, N_Qualified_Expression,
!                              N_Type_Conversion,
!                              N_Expression_With_Actions)
           loop
              LE := Expression (LE);
           end loop;
--- 4082,4090 ----
        function Left_Expression (Op : Node_Id) return Node_Id is
           LE : Node_Id := Left_Opnd (Op);
        begin
!          while Nkind (LE) in N_Qualified_Expression
!                            | N_Type_Conversion
!                            | N_Expression_With_Actions
           loop
              LE := Expression (LE);
           end loop;
*************** package body Checks is
*** 4214,4224 ****
  
     begin
        pragma Assert
!         (Nkind_In (Kind, N_Component_Declaration,
!                          N_Discriminant_Specification,
!                          N_Function_Specification,
!                          N_Object_Declaration,
!                          N_Parameter_Specification));
  
        if Kind = N_Function_Specification then
           Typ := Etype (Defining_Entity (N));
--- 4294,4304 ----
  
     begin
        pragma Assert
!         (Kind in N_Component_Declaration
!                | N_Discriminant_Specification
!                | N_Function_Specification
!                | N_Object_Declaration
!                | N_Parameter_Specification);
  
        if Kind = N_Function_Specification then
           Typ := Etype (Defining_Entity (N));
*************** package body Checks is
*** 4340,4346 ****
                    Apply_Compile_Time_Constraint_Error
                      (N      => Expr,
                       Msg    =>
!                        "(Ada 2005) null not allowed in null-excluding "
                         & "components??",
                       Reason => CE_Null_Not_Allowed);
  
--- 4420,4426 ----
                    Apply_Compile_Time_Constraint_Error
                      (N      => Expr,
                       Msg    =>
!                        "(Ada 2005) NULL not allowed in null-excluding "
                         & "components??",
                       Reason => CE_Null_Not_Allowed);
  
*************** package body Checks is
*** 4348,4354 ****
                    Apply_Compile_Time_Constraint_Error
                      (N      => Expr,
                       Msg    =>
!                        "(Ada 2005) null not allowed in null-excluding "
                         & "objects??",
                       Reason => CE_Null_Not_Allowed);
  
--- 4428,4434 ----
                    Apply_Compile_Time_Constraint_Error
                      (N      => Expr,
                       Msg    =>
!                        "(Ada 2005) NULL not allowed in null-excluding "
                         & "objects??",
                       Reason => CE_Null_Not_Allowed);
  
*************** package body Checks is
*** 4356,4362 ****
                    Apply_Compile_Time_Constraint_Error
                      (N      => Expr,
                       Msg    =>
!                        "(Ada 2005) null not allowed in null-excluding "
                         & "formals??",
                       Reason => CE_Null_Not_Allowed);
  
--- 4436,4442 ----
                    Apply_Compile_Time_Constraint_Error
                      (N      => Expr,
                       Msg    =>
!                        "(Ada 2005) NULL not allowed in null-excluding "
                         & "formals??",
                       Reason => CE_Null_Not_Allowed);
  
*************** package body Checks is
*** 4367,4372 ****
--- 4447,4753 ----
        end if;
     end Null_Exclusion_Static_Checks;
  
+    -------------------------------------
+    -- Compute_Range_For_Arithmetic_Op --
+    -------------------------------------
+ 
+    procedure Compute_Range_For_Arithmetic_Op
+      (Op       : Node_Kind;
+       Lo_Left  : Uint;
+       Hi_Left  : Uint;
+       Lo_Right : Uint;
+       Hi_Right : Uint;
+       OK       : out Boolean;
+       Lo       : out Uint;
+       Hi       : out Uint)
+    is
+       --  Use local variables for possible adjustments
+ 
+       Llo : Uint renames Lo_Left;
+       Lhi : Uint renames Hi_Left;
+       Rlo : Uint := Lo_Right;
+       Rhi : Uint := Hi_Right;
+ 
+    begin
+       --  We will compute a range for the result in almost all cases
+ 
+       OK := True;
+ 
+       case Op is
+ 
+          --  Absolute value
+ 
+          when N_Op_Abs =>
+             Lo := Uint_0;
+             Hi := UI_Max (abs Rlo, abs Rhi);
+ 
+          --  Addition
+ 
+          when N_Op_Add =>
+             Lo := Llo + Rlo;
+             Hi := Lhi + Rhi;
+ 
+          --  Division
+ 
+          when N_Op_Divide =>
+ 
+             --  If the right operand can only be zero, set 0..0
+ 
+             if Rlo = 0 and then Rhi = 0 then
+                Lo := Uint_0;
+                Hi := Uint_0;
+ 
+             --  Possible bounds of division must come from dividing end
+             --  values of the input ranges (four possibilities), provided
+             --  zero is not included in the possible values of the right
+             --  operand.
+ 
+             --  Otherwise, we just consider two intervals of values for
+             --  the right operand: the interval of negative values (up to
+             --  -1) and the interval of positive values (starting at 1).
+             --  Since division by 1 is the identity, and division by -1
+             --  is negation, we get all possible bounds of division in that
+             --  case by considering:
+             --    - all values from the division of end values of input
+             --      ranges;
+             --    - the end values of the left operand;
+             --    - the negation of the end values of the left operand.
+ 
+             else
+                declare
+                   Mrk : constant Uintp.Save_Mark := Mark;
+                   --  Mark so we can release the RR and Ev values
+ 
+                   Ev1 : Uint;
+                   Ev2 : Uint;
+                   Ev3 : Uint;
+                   Ev4 : Uint;
+ 
+                begin
+                   --  Discard extreme values of zero for the divisor, since
+                   --  they will simply result in an exception in any case.
+ 
+                   if Rlo = 0 then
+                      Rlo := Uint_1;
+                   elsif Rhi = 0 then
+                      Rhi := -Uint_1;
+                   end if;
+ 
+                   --  Compute possible bounds coming from dividing end
+                   --  values of the input ranges.
+ 
+                   Ev1 := Llo / Rlo;
+                   Ev2 := Llo / Rhi;
+                   Ev3 := Lhi / Rlo;
+                   Ev4 := Lhi / Rhi;
+ 
+                   Lo := UI_Min (UI_Min (Ev1, Ev2), UI_Min (Ev3, Ev4));
+                   Hi := UI_Max (UI_Max (Ev1, Ev2), UI_Max (Ev3, Ev4));
+ 
+                   --  If the right operand can be both negative or positive,
+                   --  include the end values of the left operand in the
+                   --  extreme values, as well as their negation.
+ 
+                   if Rlo < 0 and then Rhi > 0 then
+                      Ev1 := Llo;
+                      Ev2 := -Llo;
+                      Ev3 := Lhi;
+                      Ev4 := -Lhi;
+ 
+                      Lo := UI_Min (Lo,
+                              UI_Min (UI_Min (Ev1, Ev2), UI_Min (Ev3, Ev4)));
+                      Hi := UI_Max (Hi,
+                              UI_Max (UI_Max (Ev1, Ev2), UI_Max (Ev3, Ev4)));
+                   end if;
+ 
+                   --  Release the RR and Ev values
+ 
+                   Release_And_Save (Mrk, Lo, Hi);
+                end;
+             end if;
+ 
+          --  Exponentiation
+ 
+          when N_Op_Expon =>
+ 
+             --  Discard negative values for the exponent, since they will
+             --  simply result in an exception in any case.
+ 
+             if Rhi < 0 then
+                Rhi := Uint_0;
+             elsif Rlo < 0 then
+                Rlo := Uint_0;
+             end if;
+ 
+             --  Estimate number of bits in result before we go computing
+             --  giant useless bounds. Basically the number of bits in the
+             --  result is the number of bits in the base multiplied by the
+             --  value of the exponent. If this is big enough that the result
+             --  definitely won't fit in Long_Long_Integer, return immediately
+             --  and avoid computing giant bounds.
+ 
+             --  The comparison here is approximate, but conservative, it
+             --  only clicks on cases that are sure to exceed the bounds.
+ 
+             if Num_Bits (UI_Max (abs Llo, abs Lhi)) * Rhi + 1 > 100 then
+                Lo := No_Uint;
+                Hi := No_Uint;
+                OK := False;
+                return;
+ 
+             --  If right operand is zero then result is 1
+ 
+             elsif Rhi = 0 then
+                Lo := Uint_1;
+                Hi := Uint_1;
+ 
+             else
+                --  High bound comes either from exponentiation of largest
+                --  positive value to largest exponent value, or from
+                --  the exponentiation of most negative value to an
+                --  even exponent.
+ 
+                declare
+                   Hi1, Hi2 : Uint;
+ 
+                begin
+                   if Lhi > 0 then
+                      Hi1 := Lhi ** Rhi;
+                   else
+                      Hi1 := Uint_0;
+                   end if;
+ 
+                   if Llo < 0 then
+                      if Rhi mod 2 = 0 then
+                         Hi2 := Llo ** Rhi;
+                      else
+                         Hi2 := Llo ** (Rhi - 1);
+                      end if;
+                   else
+                      Hi2 := Uint_0;
+                   end if;
+ 
+                   Hi := UI_Max (Hi1, Hi2);
+                end;
+ 
+                --  Result can only be negative if base can be negative
+ 
+                if Llo < 0 then
+                   if Rhi mod 2 = 0 then
+                      Lo := Llo ** (Rhi - 1);
+                   else
+                      Lo := Llo ** Rhi;
+                   end if;
+ 
+                --  Otherwise low bound is minimum ** minimum
+ 
+                else
+                   Lo := Llo ** Rlo;
+                end if;
+             end if;
+ 
+          --  Negation
+ 
+          when N_Op_Minus =>
+             Lo := -Rhi;
+             Hi := -Rlo;
+ 
+          --  Mod
+ 
+          when N_Op_Mod =>
+             declare
+                Maxabs : constant Uint := UI_Max (abs Rlo, abs Rhi) - 1;
+                --  This is the maximum absolute value of the result
+ 
+             begin
+                Lo := Uint_0;
+                Hi := Uint_0;
+ 
+                --  The result depends only on the sign and magnitude of
+                --  the right operand, it does not depend on the sign or
+                --  magnitude of the left operand.
+ 
+                if Rlo < 0 then
+                   Lo := -Maxabs;
+                end if;
+ 
+                if Rhi > 0 then
+                   Hi := Maxabs;
+                end if;
+             end;
+ 
+          --  Multiplication
+ 
+          when N_Op_Multiply =>
+ 
+             --  Possible bounds of multiplication must come from multiplying
+             --  end values of the input ranges (four possibilities).
+ 
+             declare
+                Mrk : constant Uintp.Save_Mark := Mark;
+                --  Mark so we can release the Ev values
+ 
+                Ev1 : constant Uint := Llo * Rlo;
+                Ev2 : constant Uint := Llo * Rhi;
+                Ev3 : constant Uint := Lhi * Rlo;
+                Ev4 : constant Uint := Lhi * Rhi;
+ 
+             begin
+                Lo := UI_Min (UI_Min (Ev1, Ev2), UI_Min (Ev3, Ev4));
+                Hi := UI_Max (UI_Max (Ev1, Ev2), UI_Max (Ev3, Ev4));
+ 
+                --  Release the Ev values
+ 
+                Release_And_Save (Mrk, Lo, Hi);
+             end;
+ 
+          --  Plus operator (affirmation)
+ 
+          when N_Op_Plus =>
+             Lo := Rlo;
+             Hi := Rhi;
+ 
+          --  Remainder
+ 
+          when N_Op_Rem =>
+             declare
+                Maxabs : constant Uint := UI_Max (abs Rlo, abs Rhi) - 1;
+                --  This is the maximum absolute value of the result. Note
+                --  that the result range does not depend on the sign of the
+                --  right operand.
+ 
+             begin
+                Lo := Uint_0;
+                Hi := Uint_0;
+ 
+                --  Case of left operand negative, which results in a range
+                --  of -Maxabs .. 0 for those negative values. If there are
+                --  no negative values then Lo value of result is always 0.
+ 
+                if Llo < 0 then
+                   Lo := -Maxabs;
+                end if;
+ 
+                --  Case of left operand positive
+ 
+                if Lhi > 0 then
+                   Hi := Maxabs;
+                end if;
+             end;
+ 
+          --  Subtract
+ 
+          when N_Op_Subtract =>
+             Lo := Llo - Rhi;
+             Hi := Lhi - Rlo;
+ 
+          --  Nothing else should be possible
+ 
+          when others =>
+             raise Program_Error;
+       end case;
+    end Compute_Range_For_Arithmetic_Op;
+ 
     ----------------------------------
     -- Conditional_Statements_Begin --
     ----------------------------------
*************** package body Checks is
*** 4480,4485 ****
--- 4861,4867 ----
     --  Determine size of below cache (power of 2 is more efficient)
  
     Determine_Range_Cache_N    : array (Cache_Index) of Node_Id;
+    Determine_Range_Cache_O    : array (Cache_Index) of Node_Id;
     Determine_Range_Cache_V    : array (Cache_Index) of Boolean;
     Determine_Range_Cache_Lo   : array (Cache_Index) of Uint;
     Determine_Range_Cache_Hi   : array (Cache_Index) of Uint;
*************** package body Checks is
*** 4491,4497 ****
     --  checking calls the routine on the way up the tree, a quadratic behavior
     --  can otherwise be encountered in large expressions. The cache entry for
     --  node N is stored in the (N mod Cache_Size) entry, and can be validated
!    --  by checking the actual node value stored there. The Range_Cache_V array
     --  records the setting of Assume_Valid for the cache entry.
  
     procedure Determine_Range
--- 4873,4881 ----
     --  checking calls the routine on the way up the tree, a quadratic behavior
     --  can otherwise be encountered in large expressions. The cache entry for
     --  node N is stored in the (N mod Cache_Size) entry, and can be validated
!    --  by checking the actual node value stored there. The Range_Cache_O array
!    --  records the setting of Original_Node (N) so that the cache entry does
!    --  not become stale when the node N is rewritten. The Range_Cache_V array
     --  records the setting of Assume_Valid for the cache entry.
  
     procedure Determine_Range
*************** package body Checks is
*** 4501,4511 ****
        Hi           : out Uint;
        Assume_Valid : Boolean := False)
     is
        Typ : Entity_Id := Etype (N);
        --  Type to use, may get reset to base type for possibly invalid entity
  
!       Lo_Left : Uint;
!       Hi_Left : Uint;
        --  Lo and Hi bounds of left operand
  
        Lo_Right : Uint := No_Uint;
--- 4885,4914 ----
        Hi           : out Uint;
        Assume_Valid : Boolean := False)
     is
+       Kind : constant Node_Kind := Nkind (N);
+       --  Kind of node
+ 
+       function Half_Address_Space return Uint;
+       --  The size of half the total addressable memory space in storage units
+       --  (minus one, so that the size fits in a signed integer whose size is
+       --  System_Address_Size, which helps in various cases).
+ 
+       ------------------------
+       -- Half_Address_Space --
+       ------------------------
+ 
+       function Half_Address_Space return Uint is
+       begin
+          return Uint_2 ** (System_Address_Size - 1) - 1;
+       end Half_Address_Space;
+ 
+       --  Local variables
+ 
        Typ : Entity_Id := Etype (N);
        --  Type to use, may get reset to base type for possibly invalid entity
  
!       Lo_Left : Uint := No_Uint;
!       Hi_Left : Uint := No_Uint;
        --  Lo and Hi bounds of left operand
  
        Lo_Right : Uint := No_Uint;
*************** package body Checks is
*** 4531,4559 ****
        Btyp : Entity_Id;
        --  Base type
  
-       function OK_Operands return Boolean;
-       --  Used for binary operators. Determines the ranges of the left and
-       --  right operands, and if they are both OK, returns True, and puts
-       --  the results in Lo_Right, Hi_Right, Lo_Left, Hi_Left.
- 
-       -----------------
-       -- OK_Operands --
-       -----------------
- 
-       function OK_Operands return Boolean is
-       begin
-          Determine_Range
-            (Left_Opnd  (N), OK1, Lo_Left,  Hi_Left, Assume_Valid);
- 
-          if not OK1 then
-             return False;
-          end if;
- 
-          Determine_Range
-            (Right_Opnd (N), OK1, Lo_Right, Hi_Right, Assume_Valid);
-          return OK1;
-       end OK_Operands;
- 
     --  Start of processing for Determine_Range
  
     begin
--- 4934,4939 ----
*************** package body Checks is
*** 4631,4636 ****
--- 5011,5018 ----
  
        if Determine_Range_Cache_N (Cindex) = N
             and then
+          Determine_Range_Cache_O (Cindex) = Original_Node (N)
+            and then
           Determine_Range_Cache_V (Cindex) = Assume_Valid
        then
           Lo := Determine_Range_Cache_Lo (Cindex);
*************** package body Checks is
*** 4686,4692 ****
        --  corresponding base type bound if possible. If we can't get a bound
        --  then we figure we can't determine the range (a peculiar case, that
        --  perhaps cannot happen, but there is no point in bombing in this
!       --  optimization circuit.
  
        --  First the low bound
  
--- 5068,5074 ----
        --  corresponding base type bound if possible. If we can't get a bound
        --  then we figure we can't determine the range (a peculiar case, that
        --  perhaps cannot happen, but there is no point in bombing in this
!       --  optimization circuit).
  
        --  First the low bound
  
*************** package body Checks is
*** 4731,4928 ****
        --  refinement is possible, then Lor and Hir are set to possibly tighter
        --  bounds, and OK1 is set to True.
  
!       case Nkind (N) is
! 
!          --  For unary plus, result is limited by range of operand
! 
!          when N_Op_Plus =>
!             Determine_Range
!               (Right_Opnd (N), OK1, Lor, Hir, Assume_Valid);
  
!          --  For unary minus, determine range of operand, and negate it
  
!          when N_Op_Minus =>
              Determine_Range
                (Right_Opnd (N), OK1, Lo_Right, Hi_Right, Assume_Valid);
  
              if OK1 then
!                Lor := -Hi_Right;
!                Hir := -Lo_Right;
!             end if;
! 
!          --  For binary addition, get range of each operand and do the
!          --  addition to get the result range.
! 
!          when N_Op_Add =>
!             if OK_Operands then
!                Lor := Lo_Left + Lo_Right;
!                Hir := Hi_Left + Hi_Right;
              end if;
  
!          --  Division is tricky. The only case we consider is where the right
!          --  operand is a positive constant, and in this case we simply divide
!          --  the bounds of the left operand
! 
!          when N_Op_Divide =>
!             if OK_Operands then
!                if Lo_Right = Hi_Right
!                  and then Lo_Right > 0
!                then
!                   Lor := Lo_Left / Lo_Right;
!                   Hir := Hi_Left / Lo_Right;
!                else
!                   OK1 := False;
!                end if;
!             end if;
  
!          --  For binary subtraction, get range of each operand and do the worst
!          --  case subtraction to get the result range.
  
!          when N_Op_Subtract =>
!             if OK_Operands then
!                Lor := Lo_Left - Hi_Right;
!                Hir := Hi_Left - Lo_Right;
              end if;
  
!          --  For MOD, if right operand is a positive constant, then result must
!          --  be in the allowable range of mod results.
! 
!          when N_Op_Mod =>
!             if OK_Operands then
!                if Lo_Right = Hi_Right
!                  and then Lo_Right /= 0
!                then
!                   if Lo_Right > 0 then
!                      Lor := Uint_0;
!                      Hir := Lo_Right - 1;
! 
!                   else -- Lo_Right < 0
!                      Lor := Lo_Right + 1;
!                      Hir := Uint_0;
!                   end if;
! 
!                else
!                   OK1 := False;
!                end if;
              end if;
  
!          --  For REM, if right operand is a positive constant, then result must
!          --  be in the allowable range of mod results.
! 
!          when N_Op_Rem =>
!             if OK_Operands then
!                if Lo_Right = Hi_Right and then Lo_Right /= 0 then
!                   declare
!                      Dval : constant Uint := (abs Lo_Right) - 1;
! 
!                   begin
!                      --  The sign of the result depends on the sign of the
!                      --  dividend (but not on the sign of the divisor, hence
!                      --  the abs operation above).
  
!                      if Lo_Left < 0 then
!                         Lor := -Dval;
!                      else
!                         Lor := Uint_0;
!                      end if;
  
!                      if Hi_Left < 0 then
!                         Hir := Uint_0;
!                      else
!                         Hir := Dval;
!                      end if;
!                   end;
  
!                else
!                   OK1 := False;
!                end if;
!             end if;
  
!          --  Attribute reference cases
  
!          when N_Attribute_Reference =>
!             case Attribute_Name (N) is
  
                 --  For Pos/Val attributes, we can refine the range using the
                 --  possible range of values of the attribute expression.
  
!                when Name_Pos
!                   | Name_Val
                 =>
                    Determine_Range
                      (First (Expressions (N)), OK1, Lor, Hir, Assume_Valid);
  
!                --  For Length attribute, use the bounds of the corresponding
!                --  index type to refine the range.
  
!                when Name_Length =>
                    declare
!                      Atyp : Entity_Id := Etype (Prefix (N));
!                      Inum : Nat;
!                      Indx : Node_Id;
  
                       LL, LU : Uint;
                       UL, UU : Uint;
  
                    begin
!                      if Is_Access_Type (Atyp) then
!                         Atyp := Designated_Type (Atyp);
                       end if;
  
                       --  For string literal, we know exact value
  
!                      if Ekind (Atyp) = E_String_Literal_Subtype then
                          OK := True;
!                         Lo := String_Literal_Length (Atyp);
!                         Hi := String_Literal_Length (Atyp);
                          return;
                       end if;
  
!                      --  Otherwise check for expression given
! 
!                      if No (Expressions (N)) then
!                         Inum := 1;
                       else
!                         Inum :=
!                           UI_To_Int (Expr_Value (First (Expressions (N))));
                       end if;
  
!                      Indx := First_Index (Atyp);
!                      for J in 2 .. Inum loop
!                         Indx := Next_Index (Indx);
!                      end loop;
! 
!                      --  If the index type is a formal type or derived from
                       --  one, the bounds are not static.
  
!                      if Is_Generic_Type (Root_Type (Etype (Indx))) then
                          OK := False;
                          return;
                       end if;
  
                       Determine_Range
!                        (Type_Low_Bound (Etype (Indx)), OK1, LL, LU,
!                         Assume_Valid);
  
                       if OK1 then
                          Determine_Range
!                           (Type_High_Bound (Etype (Indx)), OK1, UL, UU,
!                            Assume_Valid);
  
                          if OK1 then
- 
                             --  The maximum value for Length is the biggest
                             --  possible gap between the values of the bounds.
                             --  But of course, this value cannot be negative.
  
                             Hir := UI_Max (Uint_0, UU - LL + 1);
  
!                            --  For constrained arrays, the minimum value for
                             --  Length is taken from the actual value of the
                             --  bounds, since the index will be exactly of this
                             --  subtype.
  
!                            if Is_Constrained (Atyp) then
                                Lor := UI_Max (Uint_0, UL - LU + 1);
  
                             --  For an unconstrained array, the minimum value
--- 5113,5254 ----
        --  refinement is possible, then Lor and Hir are set to possibly tighter
        --  bounds, and OK1 is set to True.
  
!       case Kind is
  
!          --  Unary operation case
  
!          when N_Op_Abs
!             | N_Op_Minus
!             | N_Op_Plus
!          =>
              Determine_Range
                (Right_Opnd (N), OK1, Lo_Right, Hi_Right, Assume_Valid);
  
              if OK1 then
!                Compute_Range_For_Arithmetic_Op
!                  (Kind, Lo_Left, Hi_Left, Lo_Right, Hi_Right, OK1, Lor, Hir);
              end if;
  
!          --  Binary operation case
  
!          when N_Op_Add
!             | N_Op_Divide
!             | N_Op_Expon
!             | N_Op_Mod
!             | N_Op_Multiply
!             | N_Op_Rem
!             | N_Op_Subtract
!          =>
!             Determine_Range
!               (Left_Opnd (N), OK1, Lo_Left, Hi_Left, Assume_Valid);
  
!             if OK1 then
!                Determine_Range
!                  (Right_Opnd (N), OK1, Lo_Right, Hi_Right, Assume_Valid);
              end if;
  
!             if OK1 then
!                Compute_Range_For_Arithmetic_Op
!                  (Kind, Lo_Left, Hi_Left, Lo_Right, Hi_Right, OK1, Lor, Hir);
              end if;
  
!          --  Attribute reference cases
  
!          when N_Attribute_Reference =>
!             case Get_Attribute_Id (Attribute_Name (N)) is
  
!                --  For Min/Max attributes, we can refine the range using the
!                --  possible range of values of the attribute expressions.
  
!                when Attribute_Min
!                   | Attribute_Max
!                =>
!                   Determine_Range
!                     (First (Expressions (N)),
!                      OK1, Lo_Left, Hi_Left, Assume_Valid);
  
!                   if OK1 then
!                      Determine_Range
!                        (Next (First (Expressions (N))),
!                         OK1, Lo_Right, Hi_Right, Assume_Valid);
!                   end if;
  
!                   if OK1 then
!                      Lor := UI_Min (Lo_Left, Lo_Right);
!                      Hir := UI_Max (Hi_Left, Hi_Right);
!                   end if;
  
                 --  For Pos/Val attributes, we can refine the range using the
                 --  possible range of values of the attribute expression.
  
!                when Attribute_Pos
!                   | Attribute_Val
                 =>
                    Determine_Range
                      (First (Expressions (N)), OK1, Lor, Hir, Assume_Valid);
  
!                --  For Length and Range_Length attributes, use the bounds of
!                --  the (corresponding index) type to refine the range.
  
!                when Attribute_Length
!                   | Attribute_Range_Length
!                =>
                    declare
!                      Ptyp : Entity_Id;
!                      Ityp : Entity_Id;
  
                       LL, LU : Uint;
                       UL, UU : Uint;
  
                    begin
!                      Ptyp := Etype (Prefix (N));
!                      if Is_Access_Type (Ptyp) then
!                         Ptyp := Designated_Type (Ptyp);
                       end if;
  
                       --  For string literal, we know exact value
  
!                      if Ekind (Ptyp) = E_String_Literal_Subtype then
                          OK := True;
!                         Lo := String_Literal_Length (Ptyp);
!                         Hi := String_Literal_Length (Ptyp);
                          return;
                       end if;
  
!                      if Is_Array_Type (Ptyp) then
!                         Ityp := Get_Index_Subtype (N);
                       else
!                         Ityp := Ptyp;
                       end if;
  
!                      --  If the (index) type is a formal type or derived from
                       --  one, the bounds are not static.
  
!                      if Is_Generic_Type (Root_Type (Ityp)) then
                          OK := False;
                          return;
                       end if;
  
                       Determine_Range
!                        (Type_Low_Bound (Ityp), OK1, LL, LU, Assume_Valid);
  
                       if OK1 then
                          Determine_Range
!                           (Type_High_Bound (Ityp), OK1, UL, UU, Assume_Valid);
  
                          if OK1 then
                             --  The maximum value for Length is the biggest
                             --  possible gap between the values of the bounds.
                             --  But of course, this value cannot be negative.
  
                             Hir := UI_Max (Uint_0, UU - LL + 1);
  
!                            --  For a constrained array, the minimum value for
                             --  Length is taken from the actual value of the
                             --  bounds, since the index will be exactly of this
                             --  subtype.
  
!                            if Is_Constrained (Ptyp) then
                                Lor := UI_Max (Uint_0, UL - LU + 1);
  
                             --  For an unconstrained array, the minimum value
*************** package body Checks is
*** 4933,4938 ****
--- 5259,5353 ----
                             end if;
                          end if;
                       end if;
+ 
+                      --  Small optimization: the maximum size in storage units
+                      --  an object can have with GNAT is half of the address
+                      --  space, so we can bound the length of an array declared
+                      --  in Interfaces (or its children) because its component
+                      --  size is at least the storage unit and it is meant to
+                      --  be used to interface actual array objects.
+ 
+                      if Is_Array_Type (Ptyp) then
+                         declare
+                            S : constant Entity_Id := Scope (Base_Type (Ptyp));
+                         begin
+                            if Is_RTU (S, Interfaces)
+                              or else (S /= Standard_Standard
+                                        and then Is_RTU (Scope (S), Interfaces))
+                            then
+                               Hir := UI_Min (Hir, Half_Address_Space);
+                            end if;
+                         end;
+                      end if;
+                   end;
+ 
+                --  The maximum default alignment is quite low, but GNAT accepts
+                --  alignment clauses that are fairly large, but not as large as
+                --  the maximum size of objects, see below.
+ 
+                when Attribute_Alignment =>
+                   Lor := Uint_0;
+                   Hir := Half_Address_Space;
+                   OK1 := True;
+ 
+                --  The attribute should have been folded if a component clause
+                --  was specified, so we assume there is none.
+ 
+                when Attribute_Bit
+                   | Attribute_First_Bit
+                =>
+                   Lor := Uint_0;
+                   Hir := UI_From_Int (System_Storage_Unit - 1);
+                   OK1 := True;
+ 
+                --  Likewise about the component clause. Note that Last_Bit
+                --  yields -1 for a field of size 0 if First_Bit is 0.
+ 
+                when Attribute_Last_Bit =>
+                   Lor := Uint_Minus_1;
+                   Hir := Hi;
+                   OK1 := True;
+ 
+                --  Likewise about the component clause for Position. The
+                --  maximum size in storage units that an object can have
+                --  with GNAT is half of the address space.
+ 
+                when Attribute_Max_Size_In_Storage_Elements
+                   | Attribute_Position
+                =>
+                   Lor := Uint_0;
+                   Hir := Half_Address_Space;
+                   OK1 := True;
+ 
+                --  These attributes yield a nonnegative value (we do not set
+                --  the maximum value because it is too large to be useful).
+ 
+                when Attribute_Bit_Position
+                   | Attribute_Component_Size
+                   | Attribute_Object_Size
+                   | Attribute_Size
+                   | Attribute_Value_Size
+                =>
+                   Lor := Uint_0;
+                   Hir := Hi;
+                   OK1 := True;
+ 
+                --  The maximum size is the sum of twice the size of the largest
+                --  integer for every dimension, rounded up to the next multiple
+                --  of the maximum alignment, but we add instead of rounding.
+ 
+                when Attribute_Descriptor_Size =>
+                   declare
+                      Max_Align : constant Pos :=
+                                    Maximum_Alignment * System_Storage_Unit;
+                      Max_Size  : constant Uint :=
+                                    2 * Esize (Universal_Integer);
+                      Ndims     : constant Pos :=
+                                    Number_Dimensions (Etype (Prefix (N)));
+                   begin
+                      Lor := Uint_0;
+                      Hir := Max_Size * Ndims + Max_Align;
+                      OK1 := True;
                    end;
  
                 --  No special handling for other attributes
*************** package body Checks is
*** 4944,4981 ****
              end case;
  
           when N_Type_Conversion =>
  
!             --  For type conversion from one discrete type to another, we can
!             --  refine the range using the converted value.
! 
!             if Is_Discrete_Type (Etype (Expression (N))) then
!                Determine_Range (Expression (N), OK1, Lor, Hir, Assume_Valid);
! 
!             --  When converting a float to an integer type, determine the range
!             --  in real first, and then convert the bounds using UR_To_Uint
!             --  which correctly rounds away from zero when half way between two
!             --  integers, as required by normal Ada 95 rounding semantics. It
!             --  is only possible because analysis in GNATprove rules out the
!             --  possibility of a NaN or infinite value.
! 
!             elsif GNATprove_Mode
!               and then Is_Floating_Point_Type (Etype (Expression (N)))
!             then
!                declare
!                   Lor_Real, Hir_Real : Ureal;
!                begin
!                   Determine_Range_R (Expression (N), OK1, Lor_Real, Hir_Real,
!                                      Assume_Valid);
! 
!                   if OK1 then
!                      Lor := UR_To_Uint (Lor_Real);
!                      Hir := UR_To_Uint (Hir_Real);
!                   end if;
!                end;
! 
!             else
!                OK1 := False;
!             end if;
  
           --  Nothing special to do for all other expression kinds
  
--- 5359,5369 ----
              end case;
  
           when N_Type_Conversion =>
+             --  For a type conversion, we can try to refine the range using the
+             --  converted value.
  
!             Determine_Range_To_Discrete
!               (Expression (N), OK1, Lor, Hir, Conversion_OK (N), Assume_Valid);
  
           --  Nothing special to do for all other expression kinds
  
*************** package body Checks is
*** 5018,5023 ****
--- 5406,5412 ----
        --  Set cache entry for future call and we are all done
  
        Determine_Range_Cache_N  (Cindex) := N;
+       Determine_Range_Cache_O  (Cindex) := Original_Node (N);
        Determine_Range_Cache_V  (Cindex) := Assume_Valid;
        Determine_Range_Cache_Lo (Cindex) := Lo;
        Determine_Range_Cache_Hi (Cindex) := Hi;
*************** package body Checks is
*** 5194,5199 ****
--- 5583,5590 ----
  
        if Determine_Range_Cache_N (Cindex) = N
             and then
+          Determine_Range_Cache_O (Cindex) = Original_Node (N)
+            and then
           Determine_Range_Cache_V (Cindex) = Assume_Valid
        then
           Lo := Determine_Range_Cache_Lo_R (Cindex);
*************** package body Checks is
*** 5465,5470 ****
--- 5856,5862 ----
        --  Set cache entry for future call and we are all done
  
        Determine_Range_Cache_N    (Cindex) := N;
+       Determine_Range_Cache_O    (Cindex) := Original_Node (N);
        Determine_Range_Cache_V    (Cindex) := Assume_Valid;
        Determine_Range_Cache_Lo_R (Cindex) := Lo;
        Determine_Range_Cache_Hi_R (Cindex) := Hi;
*************** package body Checks is
*** 5491,5496 ****
--- 5883,5978 ----
           end if;
     end Determine_Range_R;
  
+    ---------------------------------
+    -- Determine_Range_To_Discrete --
+    ---------------------------------
+ 
+    procedure Determine_Range_To_Discrete
+      (N            : Node_Id;
+       OK           : out Boolean;
+       Lo           : out Uint;
+       Hi           : out Uint;
+       Fixed_Int    : Boolean := False;
+       Assume_Valid : Boolean := False)
+    is
+       Typ : constant Entity_Id := Etype (N);
+ 
+    begin
+       --  For a discrete type, simply defer to Determine_Range
+ 
+       if Is_Discrete_Type (Typ) then
+          Determine_Range (N, OK, Lo, Hi, Assume_Valid);
+ 
+       --  For a fixed point type treated as an integer, we can determine the
+       --  range using the Corresponding_Integer_Value of the bounds of the
+       --  type or base type. This is done by the calls to Expr_Value below.
+ 
+       elsif Is_Fixed_Point_Type (Typ) and then Fixed_Int then
+          declare
+             Btyp, Ftyp : Entity_Id;
+             Bound      : Node_Id;
+ 
+          begin
+             if Assume_Valid then
+                Ftyp := Typ;
+             else
+                Ftyp := Underlying_Type (Base_Type (Typ));
+             end if;
+ 
+             Btyp := Base_Type (Ftyp);
+ 
+             --  First the low bound
+ 
+             Bound := Type_Low_Bound (Ftyp);
+ 
+             if Compile_Time_Known_Value (Bound) then
+                Lo := Expr_Value (Bound);
+             else
+                Lo := Expr_Value (Type_Low_Bound (Btyp));
+             end if;
+ 
+             --  Then the high bound
+ 
+             Bound := Type_High_Bound (Ftyp);
+ 
+             if Compile_Time_Known_Value (Bound) then
+                Hi := Expr_Value (Bound);
+             else
+                Hi := Expr_Value (Type_High_Bound (Btyp));
+             end if;
+ 
+             OK := True;
+          end;
+ 
+       --  For a floating-point type, we can determine the range in real first,
+       --  and then convert the bounds using UR_To_Uint, which correctly rounds
+       --  away from zero when half way between two integers, as required by
+       --  normal Ada 95 rounding semantics. But this is only possible because
+       --  GNATprove's analysis rules out the possibility of a NaN or infinite.
+ 
+       elsif GNATprove_Mode and then Is_Floating_Point_Type (Typ) then
+          declare
+             Lo_Real, Hi_Real : Ureal;
+ 
+          begin
+             Determine_Range_R (N, OK, Lo_Real, Hi_Real, Assume_Valid);
+ 
+             if OK then
+                Lo := UR_To_Uint (Lo_Real);
+                Hi := UR_To_Uint (Hi_Real);
+             else
+                Lo := No_Uint;
+                Hi := No_Uint;
+             end if;
+          end;
+ 
+       else
+          Lo := No_Uint;
+          Hi := No_Uint;
+          OK := False;
+       end if;
+    end Determine_Range_To_Discrete;
+ 
     ------------------------------------
     -- Discriminant_Checks_Suppressed --
     ------------------------------------
*************** package body Checks is
*** 5678,5686 ****
                 Do_Ovflow_Check := False;
  
              --  Despite the comments above, it is worth dealing specially with
!             --  division specially. The only case where integer division can
!             --  overflow is (largest negative number) / (-1). So we will do
!             --  an extra range analysis to see if this is possible.
  
              elsif Nkind (N) = N_Op_Divide then
                 Determine_Range
--- 6160,6168 ----
                 Do_Ovflow_Check := False;
  
              --  Despite the comments above, it is worth dealing specially with
!             --  division. The only case where integer division can overflow is
!             --  (largest negative number) / (-1). So we will do an extra range
!             --  analysis to see if this is possible.
  
              elsif Nkind (N) = N_Op_Divide then
                 Determine_Range
*************** package body Checks is
*** 5700,5705 ****
--- 6182,6198 ----
                       Do_Ovflow_Check := False;
                    end if;
                 end if;
+ 
+             --  Likewise for Abs/Minus, the only case where the operation can
+             --  overflow is when the operand is the largest negative number.
+ 
+             elsif Nkind (N) in N_Op_Abs | N_Op_Minus then
+                Determine_Range
+                  (Right_Opnd (N), OK, Lo, Hi, Assume_Valid => True);
+ 
+                if OK and then Lo > Expr_Value (Type_Low_Bound (Typ)) then
+                   Do_Ovflow_Check := False;
+                end if;
              end if;
  
              --  If no overflow check required, we are done
*************** package body Checks is
*** 5835,5841 ****
        --  Do not set range check flag if parent is assignment statement or
        --  object declaration with Suppress_Assignment_Checks flag set
  
!       if Nkind_In (Parent (N), N_Assignment_Statement, N_Object_Declaration)
          and then Suppress_Assignment_Checks (Parent (N))
        then
           return;
--- 6328,6334 ----
        --  Do not set range check flag if parent is assignment statement or
        --  object declaration with Suppress_Assignment_Checks flag set
  
!       if Nkind (Parent (N)) in N_Assignment_Statement | N_Object_Declaration
          and then Suppress_Assignment_Checks (Parent (N))
        then
           return;
*************** package body Checks is
*** 6196,6204 ****
                 --  If this is an indirect or dispatching call, get signature
                 --  from the subprogram type.
  
!                if Nkind_In (P, N_Entry_Call_Statement,
!                                N_Function_Call,
!                                N_Procedure_Call_Statement)
                 then
                    E := Get_Called_Entity (P);
                    L := Parameter_Associations (P);
--- 6689,6697 ----
                 --  If this is an indirect or dispatching call, get signature
                 --  from the subprogram type.
  
!                if Nkind (P) in N_Entry_Call_Statement
!                              | N_Function_Call
!                              | N_Procedure_Call_Statement
                 then
                    E := Get_Called_Entity (P);
                    L := Parameter_Associations (P);
*************** package body Checks is
*** 6329,6341 ****
        --  Integer and character literals always have valid values, where
        --  appropriate these will be range checked in any case.
  
!       elsif Nkind_In (Expr, N_Integer_Literal, N_Character_Literal) then
           return True;
  
        --  If we have a type conversion or a qualification of a known valid
        --  value, then the result will always be valid.
  
!       elsif Nkind_In (Expr, N_Type_Conversion, N_Qualified_Expression) then
           return Expr_Known_Valid (Expression (Expr));
  
        --  Case of expression is a non-floating-point operator. In this case we
--- 6822,6834 ----
        --  Integer and character literals always have valid values, where
        --  appropriate these will be range checked in any case.
  
!       elsif Nkind (Expr) in N_Integer_Literal | N_Character_Literal then
           return True;
  
        --  If we have a type conversion or a qualification of a known valid
        --  value, then the result will always be valid.
  
!       elsif Nkind (Expr) in N_Type_Conversion | N_Qualified_Expression then
           return Expr_Known_Valid (Expression (Expr));
  
        --  Case of expression is a non-floating-point operator. In this case we
*************** package body Checks is
*** 6515,6523 ****
     -- Generate_Discriminant_Check --
     ---------------------------------
  
-    --  Note: the code for this procedure is derived from the
-    --  Emit_Discriminant_Check Routine in trans.c.
- 
     procedure Generate_Discriminant_Check (N : Node_Id) is
        Loc  : constant Source_Ptr := Sloc (N);
        Pref : constant Node_Id    := Prefix (N);
--- 7008,7013 ----
*************** package body Checks is
*** 6677,6685 ****
        begin
           P := Prefix (N);
           while not Is_Entity_Name (P) loop
!             if not Nkind_In (P, N_Selected_Component,
!                                 N_Indexed_Component)
!             then
                 return Empty;
              end if;
  
--- 7167,7173 ----
        begin
           P := Prefix (N);
           while not Is_Entity_Name (P) loop
!             if Nkind (P) not in N_Selected_Component | N_Indexed_Component then
                 return Empty;
              end if;
  
*************** package body Checks is
*** 6767,6775 ****
  
        else
           declare
!             A_Idx   : Node_Id := Empty;
              A_Range : Node_Id;
!             Ind     : Nat;
              Num     : List_Id;
              Range_N : Node_Id;
  
--- 7255,7263 ----
  
        else
           declare
!             A_Idx   : Node_Id;
              A_Range : Node_Id;
!             Ind     : Pos;
              Num     : List_Id;
              Range_N : Node_Id;
  
*************** package body Checks is
*** 6792,6802 ****
                    if Nkind (A_Idx) = N_Range then
                       A_Range := A_Idx;
  
!                   elsif Nkind (A_Idx) = N_Identifier
!                     or else Nkind (A_Idx) = N_Expanded_Name
!                   then
                       A_Range := Scalar_Range (Entity (A_Idx));
  
                    else pragma Assert (Nkind (A_Idx) = N_Subtype_Indication);
                       A_Range := Range_Expression (Constraint (A_Idx));
                    end if;
--- 7280,7292 ----
                    if Nkind (A_Idx) = N_Range then
                       A_Range := A_Idx;
  
!                   elsif Nkind (A_Idx) in N_Identifier | N_Expanded_Name then
                       A_Range := Scalar_Range (Entity (A_Idx));
  
+                      if Nkind (A_Range) = N_Subtype_Indication then
+                         A_Range := Range_Expression (Constraint (A_Range));
+                      end if;
+ 
                    else pragma Assert (Nkind (A_Idx) = N_Subtype_Indication);
                       A_Range := Range_Expression (Constraint (A_Idx));
                    end if;
*************** package body Checks is
*** 6847,6853 ****
                        Reason => CE_Index_Check_Failed));
                 end if;
  
!                A_Idx := Next_Index (A_Idx);
                 Ind := Ind + 1;
                 Next (Sub);
              end loop;
--- 7337,7343 ----
                        Reason => CE_Index_Check_Failed));
                 end if;
  
!                Next_Index (A_Idx);
                 Ind := Ind + 1;
                 Next (Sub);
              end loop;
*************** package body Checks is
*** 6875,6880 ****
--- 7365,7374 ----
        --  given Suppress argument. Then check the converted value against the
        --  range of the target subtype.
  
+       function Is_Single_Attribute_Reference (N : Node_Id) return Boolean;
+       --  Return True if N is an expression that contains a single attribute
+       --  reference, possibly as operand among only integer literal operands.
+ 
        -----------------------------
        -- Convert_And_Check_Range --
        -----------------------------
*************** package body Checks is
*** 6934,6939 ****
--- 7428,7458 ----
           Set_Etype (N, Target_Base_Type);
        end Convert_And_Check_Range;
  
+       -------------------------------------
+       --  Is_Single_Attribute_Reference  --
+       -------------------------------------
+ 
+       function Is_Single_Attribute_Reference (N : Node_Id) return Boolean is
+       begin
+          if Nkind (N) = N_Attribute_Reference then
+             return True;
+ 
+          elsif Nkind (N) in N_Binary_Op then
+             if Nkind (Right_Opnd (N)) = N_Integer_Literal then
+                return Is_Single_Attribute_Reference (Left_Opnd (N));
+ 
+             elsif Nkind (Left_Opnd (N)) = N_Integer_Literal then
+                return Is_Single_Attribute_Reference (Right_Opnd (N));
+ 
+             else
+                return False;
+             end if;
+ 
+          else
+             return False;
+          end if;
+       end Is_Single_Attribute_Reference;
+ 
     --  Start of processing for Generate_Range_Check
  
     begin
*************** package body Checks is
*** 6949,6955 ****
          --  the target.
  
          and then not
!           (Nkind_In (N, N_Integer_Literal, N_Real_Literal, N_Character_Literal)
               or else
                 (Is_Entity_Name (N)
                   and then Ekind (Entity (N)) = E_Enumeration_Literal))
--- 7468,7475 ----
          --  the target.
  
          and then not
!           (Nkind (N) in
!                N_Integer_Literal | N_Real_Literal | N_Character_Literal
               or else
                 (Is_Entity_Name (N)
                   and then Ekind (Entity (N)) = E_Enumeration_Literal))
*************** package body Checks is
*** 6958,6969 ****
           return;
        end if;
  
!       --  Here a check is needed. If the expander is not active, or if we are
!       --  in GNATProve mode, then simply set the Do_Range_Check flag and we
!       --  are done. In both these cases, we just want to see the range check
!       --  flag set, we do not want to generate the explicit range check code.
  
!       if GNATprove_Mode or else not Expander_Active then
           Set_Do_Range_Check (N);
           return;
        end if;
--- 7478,7489 ----
           return;
        end if;
  
!       --  Here a check is needed. If the expander is not active (which is also
!       --  the case in GNATprove mode), then simply set the Do_Range_Check flag
!       --  and we are done. We just want to see the range check flag set, we do
!       --  not want to generate the explicit range check code.
  
!       if not Expander_Active then
           Set_Do_Range_Check (N);
           return;
        end if;
*************** package body Checks is
*** 6982,6990 ****
        --  We skip the evaluation of attribute references because, after these
        --  runtime checks are generated, the expander may need to rewrite this
        --  node (for example, see Attribute_Max_Size_In_Storage_Elements in
!       --  Expand_N_Attribute_Reference).
  
!       if Nkind (N) /= N_Attribute_Reference
          and then (not Is_Entity_Name (N)
                     or else Treat_As_Volatile (Entity (N)))
        then
--- 7502,7511 ----
        --  We skip the evaluation of attribute references because, after these
        --  runtime checks are generated, the expander may need to rewrite this
        --  node (for example, see Attribute_Max_Size_In_Storage_Elements in
!       --  Expand_N_Attribute_Reference) and, in many cases, their return type
!       --  is universal integer, which is a very large type for a temporary.
  
!       if not Is_Single_Attribute_Reference (N)
          and then (not Is_Entity_Name (N)
                     or else Treat_As_Volatile (Entity (N)))
        then
*************** package body Checks is
*** 7331,7344 ****
     ----------------------
  
     function Get_Range_Checks
!      (Ck_Node    : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id := Empty;
        Warn_Node  : Node_Id   := Empty) return Check_Result
     is
     begin
        return
!         Selected_Range_Checks (Ck_Node, Target_Typ, Source_Typ, Warn_Node);
     end Get_Range_Checks;
  
     ------------------
--- 7852,7865 ----
     ----------------------
  
     function Get_Range_Checks
!      (Expr       : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id := Empty;
        Warn_Node  : Node_Id   := Empty) return Check_Result
     is
     begin
        return
!         Selected_Range_Checks (Expr, Target_Typ, Source_Typ, Warn_Node);
     end Get_Range_Checks;
  
     ------------------
*************** package body Checks is
*** 7346,7361 ****
     ------------------
  
     function Guard_Access
!      (Cond    : Node_Id;
!       Loc     : Source_Ptr;
!       Ck_Node : Node_Id) return Node_Id
     is
     begin
        if Nkind (Cond) = N_Or_Else then
           Set_Paren_Count (Cond, 1);
        end if;
  
!       if Nkind (Ck_Node) = N_Allocator then
           return Cond;
  
        else
--- 7867,7882 ----
     ------------------
  
     function Guard_Access
!      (Cond : Node_Id;
!       Loc  : Source_Ptr;
!       Expr : Node_Id) return Node_Id
     is
     begin
        if Nkind (Cond) = N_Or_Else then
           Set_Paren_Count (Cond, 1);
        end if;
  
!       if Nkind (Expr) = N_Allocator then
           return Cond;
  
        else
*************** package body Checks is
*** 7363,7369 ****
             Make_And_Then (Loc,
               Left_Opnd =>
                 Make_Op_Ne (Loc,
!                  Left_Opnd  => Duplicate_Subexpr_No_Checks (Ck_Node),
                   Right_Opnd => Make_Null (Loc)),
               Right_Opnd => Cond);
        end if;
--- 7884,7890 ----
             Make_And_Then (Loc,
               Left_Opnd =>
                 Make_Op_Ne (Loc,
!                  Left_Opnd  => Duplicate_Subexpr_No_Checks (Expr),
                   Right_Opnd => Make_Null (Loc)),
               Right_Opnd => Cond);
        end if;
*************** package body Checks is
*** 7407,7414 ****
       (Checks       : Check_Result;
        Node         : Node_Id;
        Suppress_Typ : Entity_Id;
!       Static_Sloc  : Source_Ptr := No_Location;
!       Flag_Node    : Node_Id    := Empty;
        Do_Before    : Boolean    := False)
     is
        Checks_On  : constant Boolean :=
--- 7928,7934 ----
       (Checks       : Check_Result;
        Node         : Node_Id;
        Suppress_Typ : Entity_Id;
!       Static_Sloc  : Source_Ptr;
        Do_Before    : Boolean    := False)
     is
        Checks_On  : constant Boolean :=
*************** package body Checks is
*** 7416,7424 ****
                         or else
                       not Range_Checks_Suppressed (Suppress_Typ);
  
!       Check_Node           : Node_Id;
!       Internal_Flag_Node   : Node_Id    := Flag_Node;
!       Internal_Static_Sloc : Source_Ptr := Static_Sloc;
  
     begin
        --  For now we just return if Checks_On is false, however this should be
--- 7936,7942 ----
                         or else
                       not Range_Checks_Suppressed (Suppress_Typ);
  
!       Check_Node : Node_Id;
  
     begin
        --  For now we just return if Checks_On is false, however this should be
*************** package body Checks is
*** 7429,7472 ****
           return;
        end if;
  
-       if Static_Sloc = No_Location then
-          Internal_Static_Sloc := Sloc (Node);
-       end if;
- 
-       if No (Flag_Node) then
-          Internal_Flag_Node := Node;
-       end if;
- 
        for J in 1 .. 2 loop
           exit when No (Checks (J));
  
           if Nkind (Checks (J)) = N_Raise_Constraint_Error
             and then Present (Condition (Checks (J)))
           then
!             if not Has_Dynamic_Range_Check (Internal_Flag_Node) then
!                Check_Node := Checks (J);
!                Mark_Rewrite_Insertion (Check_Node);
! 
!                if Do_Before then
!                   Insert_Before_And_Analyze (Node, Check_Node);
!                else
!                   Insert_After_And_Analyze (Node, Check_Node);
!                end if;
! 
!                Set_Has_Dynamic_Range_Check (Internal_Flag_Node);
!             end if;
! 
           else
              Check_Node :=
!               Make_Raise_Constraint_Error (Internal_Static_Sloc,
                  Reason => CE_Range_Check_Failed);
!             Mark_Rewrite_Insertion (Check_Node);
  
!             if Do_Before then
!                Insert_Before_And_Analyze (Node, Check_Node);
!             else
!                Insert_After_And_Analyze (Node, Check_Node);
!             end if;
           end if;
        end loop;
     end Insert_Range_Checks;
--- 7947,7971 ----
           return;
        end if;
  
        for J in 1 .. 2 loop
           exit when No (Checks (J));
  
           if Nkind (Checks (J)) = N_Raise_Constraint_Error
             and then Present (Condition (Checks (J)))
           then
!             Check_Node := Checks (J);
           else
              Check_Node :=
!               Make_Raise_Constraint_Error (Static_Sloc,
                  Reason => CE_Range_Check_Failed);
!          end if;
  
!          Mark_Rewrite_Insertion (Check_Node);
! 
!          if Do_Before then
!             Insert_Before_And_Analyze (Node, Check_Node);
!          else
!             Insert_After_And_Analyze (Node, Check_Node);
           end if;
        end loop;
     end Insert_Range_Checks;
*************** package body Checks is
*** 8064,8070 ****
        --  Do not generate an elaboration check in compilation modes where
        --  expansion is not desirable.
  
!       if ASIS_Mode or GNATprove_Mode then
           return;
  
        --  Do not generate an elaboration check if all checks have been
--- 8563,8569 ----
        --  Do not generate an elaboration check in compilation modes where
        --  expansion is not desirable.
  
!       if GNATprove_Mode then
           return;
  
        --  Do not generate an elaboration check if all checks have been
*************** package body Checks is
*** 8141,8149 ****
        --  need to be called while elaboration is taking place.
  
        elsif Is_Controlled (Tag_Typ)
!         and then Nam_In (Chars (Subp_Id), Name_Adjust,
!                                           Name_Finalize,
!                                           Name_Initialize)
        then
           return;
        end if;
--- 8640,8647 ----
        --  need to be called while elaboration is taking place.
  
        elsif Is_Controlled (Tag_Typ)
!         and then
!           Chars (Subp_Id) in Name_Adjust | Name_Finalize | Name_Initialize
        then
           return;
        end if;
*************** package body Checks is
*** 8740,8747 ****
  
              else
                 declare
!                   Rtype    : Entity_Id;
!                   pragma Warnings (Off, Rtype);
                    New_Alts : List_Id;
                    New_Exp  : Node_Id;
  
--- 9238,9244 ----
  
              else
                 declare
!                   Rtype    : Entity_Id := Empty;
                    New_Alts : List_Id;
                    New_Exp  : Node_Id;
  
*************** package body Checks is
*** 8771,8776 ****
--- 9268,9274 ----
                        Expression   => Expression (N),
                        Alternatives => New_Alts));
  
+                   pragma Assert (Present (Rtype));
                    Reanalyze (Rtype, Suppress => True);
                 end;
              end if;
*************** package body Checks is
*** 8811,9089 ****
        --  Otherwise compute result range
  
        else
           Bignum_Operands := False;
- 
-          case Nkind (N) is
- 
-             --  Absolute value
- 
-             when N_Op_Abs =>
-                Lo := Uint_0;
-                Hi := UI_Max (abs Rlo, abs Rhi);
- 
-             --  Addition
- 
-             when N_Op_Add =>
-                Lo := Llo + Rlo;
-                Hi := Lhi + Rhi;
- 
-             --  Division
- 
-             when N_Op_Divide =>
- 
-                --  If the right operand can only be zero, set 0..0
- 
-                if Rlo = 0 and then Rhi = 0 then
-                   Lo := Uint_0;
-                   Hi := Uint_0;
- 
-                --  Possible bounds of division must come from dividing end
-                --  values of the input ranges (four possibilities), provided
-                --  zero is not included in the possible values of the right
-                --  operand.
- 
-                --  Otherwise, we just consider two intervals of values for
-                --  the right operand: the interval of negative values (up to
-                --  -1) and the interval of positive values (starting at 1).
-                --  Since division by 1 is the identity, and division by -1
-                --  is negation, we get all possible bounds of division in that
-                --  case by considering:
-                --    - all values from the division of end values of input
-                --      ranges;
-                --    - the end values of the left operand;
-                --    - the negation of the end values of the left operand.
- 
-                else
-                   declare
-                      Mrk : constant Uintp.Save_Mark := Mark;
-                      --  Mark so we can release the RR and Ev values
- 
-                      Ev1 : Uint;
-                      Ev2 : Uint;
-                      Ev3 : Uint;
-                      Ev4 : Uint;
- 
-                   begin
-                      --  Discard extreme values of zero for the divisor, since
-                      --  they will simply result in an exception in any case.
- 
-                      if Rlo = 0 then
-                         Rlo := Uint_1;
-                      elsif Rhi = 0 then
-                         Rhi := -Uint_1;
-                      end if;
- 
-                      --  Compute possible bounds coming from dividing end
-                      --  values of the input ranges.
- 
-                      Ev1 := Llo / Rlo;
-                      Ev2 := Llo / Rhi;
-                      Ev3 := Lhi / Rlo;
-                      Ev4 := Lhi / Rhi;
- 
-                      Lo := UI_Min (UI_Min (Ev1, Ev2), UI_Min (Ev3, Ev4));
-                      Hi := UI_Max (UI_Max (Ev1, Ev2), UI_Max (Ev3, Ev4));
- 
-                      --  If the right operand can be both negative or positive,
-                      --  include the end values of the left operand in the
-                      --  extreme values, as well as their negation.
- 
-                      if Rlo < 0 and then Rhi > 0 then
-                         Ev1 := Llo;
-                         Ev2 := -Llo;
-                         Ev3 := Lhi;
-                         Ev4 := -Lhi;
- 
-                         Min (Lo,
-                              UI_Min (UI_Min (Ev1, Ev2), UI_Min (Ev3, Ev4)));
-                         Max (Hi,
-                              UI_Max (UI_Max (Ev1, Ev2), UI_Max (Ev3, Ev4)));
-                      end if;
- 
-                      --  Release the RR and Ev values
- 
-                      Release_And_Save (Mrk, Lo, Hi);
-                   end;
-                end if;
- 
-             --  Exponentiation
- 
-             when N_Op_Expon =>
- 
-                --  Discard negative values for the exponent, since they will
-                --  simply result in an exception in any case.
- 
-                if Rhi < 0 then
-                   Rhi := Uint_0;
-                elsif Rlo < 0 then
-                   Rlo := Uint_0;
-                end if;
- 
-                --  Estimate number of bits in result before we go computing
-                --  giant useless bounds. Basically the number of bits in the
-                --  result is the number of bits in the base multiplied by the
-                --  value of the exponent. If this is big enough that the result
-                --  definitely won't fit in Long_Long_Integer, switch to bignum
-                --  mode immediately, and avoid computing giant bounds.
- 
-                --  The comparison here is approximate, but conservative, it
-                --  only clicks on cases that are sure to exceed the bounds.
- 
-                if Num_Bits (UI_Max (abs Llo, abs Lhi)) * Rhi + 1 > 100 then
-                   Lo := No_Uint;
-                   Hi := No_Uint;
- 
-                --  If right operand is zero then result is 1
- 
-                elsif Rhi = 0 then
-                   Lo := Uint_1;
-                   Hi := Uint_1;
- 
-                else
-                   --  High bound comes either from exponentiation of largest
-                   --  positive value to largest exponent value, or from
-                   --  the exponentiation of most negative value to an
-                   --  even exponent.
- 
-                   declare
-                      Hi1, Hi2 : Uint;
- 
-                   begin
-                      if Lhi > 0 then
-                         Hi1 := Lhi ** Rhi;
-                      else
-                         Hi1 := Uint_0;
-                      end if;
- 
-                      if Llo < 0 then
-                         if Rhi mod 2 = 0 then
-                            Hi2 := Llo ** Rhi;
-                         else
-                            Hi2 := Llo ** (Rhi - 1);
-                         end if;
-                      else
-                         Hi2 := Uint_0;
-                      end if;
- 
-                      Hi := UI_Max (Hi1, Hi2);
-                   end;
- 
-                   --  Result can only be negative if base can be negative
- 
-                   if Llo < 0 then
-                      if Rhi mod 2 = 0 then
-                         Lo := Llo ** (Rhi - 1);
-                      else
-                         Lo := Llo ** Rhi;
-                      end if;
- 
-                   --  Otherwise low bound is minimum ** minimum
- 
-                   else
-                      Lo := Llo ** Rlo;
-                   end if;
-                end if;
- 
-             --  Negation
- 
-             when N_Op_Minus =>
-                Lo := -Rhi;
-                Hi := -Rlo;
- 
-             --  Mod
- 
-             when N_Op_Mod =>
-                declare
-                   Maxabs : constant Uint := UI_Max (abs Rlo, abs Rhi) - 1;
-                   --  This is the maximum absolute value of the result
- 
-                begin
-                   Lo := Uint_0;
-                   Hi := Uint_0;
- 
-                   --  The result depends only on the sign and magnitude of
-                   --  the right operand, it does not depend on the sign or
-                   --  magnitude of the left operand.
- 
-                   if Rlo < 0 then
-                      Lo := -Maxabs;
-                   end if;
- 
-                   if Rhi > 0 then
-                      Hi := Maxabs;
-                   end if;
-                end;
- 
-             --  Multiplication
- 
-             when N_Op_Multiply =>
- 
-                --  Possible bounds of multiplication must come from multiplying
-                --  end values of the input ranges (four possibilities).
- 
-                declare
-                   Mrk : constant Uintp.Save_Mark := Mark;
-                   --  Mark so we can release the Ev values
- 
-                   Ev1 : constant Uint := Llo * Rlo;
-                   Ev2 : constant Uint := Llo * Rhi;
-                   Ev3 : constant Uint := Lhi * Rlo;
-                   Ev4 : constant Uint := Lhi * Rhi;
- 
-                begin
-                   Lo := UI_Min (UI_Min (Ev1, Ev2), UI_Min (Ev3, Ev4));
-                   Hi := UI_Max (UI_Max (Ev1, Ev2), UI_Max (Ev3, Ev4));
- 
-                   --  Release the Ev values
- 
-                   Release_And_Save (Mrk, Lo, Hi);
-                end;
- 
-             --  Plus operator (affirmation)
- 
-             when N_Op_Plus =>
-                Lo := Rlo;
-                Hi := Rhi;
- 
-             --  Remainder
- 
-             when N_Op_Rem =>
-                declare
-                   Maxabs : constant Uint := UI_Max (abs Rlo, abs Rhi) - 1;
-                   --  This is the maximum absolute value of the result. Note
-                   --  that the result range does not depend on the sign of the
-                   --  right operand.
- 
-                begin
-                   Lo := Uint_0;
-                   Hi := Uint_0;
- 
-                   --  Case of left operand negative, which results in a range
-                   --  of -Maxabs .. 0 for those negative values. If there are
-                   --  no negative values then Lo value of result is always 0.
- 
-                   if Llo < 0 then
-                      Lo := -Maxabs;
-                   end if;
- 
-                   --  Case of left operand positive
- 
-                   if Lhi > 0 then
-                      Hi := Maxabs;
-                   end if;
-                end;
- 
-             --  Subtract
- 
-             when N_Op_Subtract =>
-                Lo := Llo - Rhi;
-                Hi := Lhi - Rlo;
- 
-             --  Nothing else should be possible
- 
-             when others =>
-                raise Program_Error;
-          end case;
        end if;
  
        --  Here for the case where we have not rewritten anything (no bignum
--- 9309,9317 ----
        --  Otherwise compute result range
  
        else
+          Compute_Range_For_Arithmetic_Op
+            (Nkind (N), Llo, Lhi, Rlo, Rhi, OK, Lo, Hi);
           Bignum_Operands := False;
        end if;
  
        --  Here for the case where we have not rewritten anything (no bignum
*************** package body Checks is
*** 9528,9539 ****
     ----------------------------
  
     function Selected_Length_Checks
!      (Ck_Node    : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id;
        Warn_Node  : Node_Id) return Check_Result
     is
!       Loc         : constant Source_Ptr := Sloc (Ck_Node);
        S_Typ       : Entity_Id;
        T_Typ       : Entity_Id;
        Expr_Actual : Node_Id;
--- 9756,9767 ----
     ----------------------------
  
     function Selected_Length_Checks
!      (Expr       : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id;
        Warn_Node  : Node_Id) return Check_Result
     is
!       Loc         : constant Source_Ptr := Sloc (Expr);
        S_Typ       : Entity_Id;
        T_Typ       : Entity_Id;
        Expr_Actual : Node_Id;
*************** package body Checks is
*** 9565,9575 ****
        --    Typ'Length /= Exptyp'Length
  
        function Length_N_Cond
!         (Expr : Node_Id;
           Typ  : Entity_Id;
           Indx : Nat) return Node_Id;
        --  Returns expression to compute:
!       --    Typ'Length /= Expr'Length
  
        function Length_Mismatch_Info_Message
          (Left_Element_Count  : Uint;
--- 9793,9803 ----
        --    Typ'Length /= Exptyp'Length
  
        function Length_N_Cond
!         (Exp  : Node_Id;
           Typ  : Entity_Id;
           Indx : Nat) return Node_Id;
        --  Returns expression to compute:
!       --    Typ'Length /= Exp'Length
  
        function Length_Mismatch_Info_Message
          (Left_Element_Count  : Uint;
*************** package body Checks is
*** 9614,9620 ****
              N := Build_Discriminal_Subtype_Of_Component (E);
  
              if Present (N) then
!                Insert_Action (Ck_Node, N);
                 E1 := Defining_Identifier (N);
              end if;
           end if;
--- 9842,9848 ----
              N := Build_Discriminal_Subtype_Of_Component (E);
  
              if Present (N) then
!                Insert_Action (Expr, N);
                 E1 := Defining_Identifier (N);
              end if;
           end if;
*************** package body Checks is
*** 9753,9759 ****
        -------------------
  
        function Length_N_Cond
!         (Expr : Node_Id;
           Typ  : Entity_Id;
           Indx : Nat) return Node_Id
        is
--- 9981,9987 ----
        -------------------
  
        function Length_N_Cond
!         (Exp  : Node_Id;
           Typ  : Entity_Id;
           Indx : Nat) return Node_Id
        is
*************** package body Checks is
*** 9761,9767 ****
           return
             Make_Op_Ne (Loc,
               Left_Opnd  => Get_E_Length (Typ, Indx),
!              Right_Opnd => Get_N_Length (Expr, Indx));
        end Length_N_Cond;
  
        ----------------------------------
--- 9989,9995 ----
           return
             Make_Op_Ne (Loc,
               Left_Opnd  => Get_E_Length (Typ, Indx),
!              Right_Opnd => Get_N_Length (Exp, Indx));
        end Length_N_Cond;
  
        ----------------------------------
*************** package body Checks is
*** 9841,9859 ****
  
        if Target_Typ = Any_Type
          or else Target_Typ = Any_Composite
!         or else Raises_Constraint_Error (Ck_Node)
        then
           return Ret_Result;
        end if;
  
        if No (Wnode) then
!          Wnode := Ck_Node;
        end if;
  
        T_Typ := Target_Typ;
  
        if No (Source_Typ) then
!          S_Typ := Etype (Ck_Node);
        else
           S_Typ := Source_Typ;
        end if;
--- 10069,10087 ----
  
        if Target_Typ = Any_Type
          or else Target_Typ = Any_Composite
!         or else Raises_Constraint_Error (Expr)
        then
           return Ret_Result;
        end if;
  
        if No (Wnode) then
!          Wnode := Expr;
        end if;
  
        T_Typ := Target_Typ;
  
        if No (Source_Typ) then
!          S_Typ := Etype (Expr);
        else
           S_Typ := Source_Typ;
        end if;
*************** package body Checks is
*** 9869,9875 ****
  
           --  A simple optimization for the null case
  
!          if Known_Null (Ck_Node) then
              return Ret_Result;
           end if;
        end if;
--- 10097,10103 ----
  
           --  A simple optimization for the null case
  
!          if Known_Null (Expr) then
              return Ret_Result;
           end if;
        end if;
*************** package body Checks is
*** 9882,9891 ****
              --  freeze node does not appear within the generated if expression,
              --  but ahead of it.
  
!             Freeze_Before (Ck_Node, T_Typ);
  
!             Expr_Actual := Get_Referenced_Object (Ck_Node);
!             Exptyp      := Get_Actual_Subtype (Ck_Node);
  
              if Is_Access_Type (Exptyp) then
                 Exptyp := Designated_Type (Exptyp);
--- 10110,10119 ----
              --  freeze node does not appear within the generated if expression,
              --  but ahead of it.
  
!             Freeze_Before (Expr, T_Typ);
  
!             Expr_Actual := Get_Referenced_Object (Expr);
!             Exptyp      := Get_Actual_Subtype (Expr);
  
              if Is_Access_Type (Exptyp) then
                 Exptyp := Designated_Type (Exptyp);
*************** package body Checks is
*** 9945,9953 ****
                        not In_Package_Body (Cunit_Entity (Current_Sem_Unit))
                      and then In_Open_Scopes (Scope (Exptyp))
                    then
!                      Ref_Node := Make_Itype_Reference (Sloc (Ck_Node));
                       Set_Itype (Ref_Node, Exptyp);
!                      Insert_Action (Ck_Node, Ref_Node);
                    end if;
  
                    L_Index := First_Index (T_Typ);
--- 10173,10181 ----
                        not In_Package_Body (Cunit_Entity (Current_Sem_Unit))
                      and then In_Open_Scopes (Scope (Exptyp))
                    then
!                      Ref_Node := Make_Itype_Reference (Sloc (Expr));
                       Set_Itype (Ref_Node, Exptyp);
!                      Insert_Action (Expr, Ref_Node);
                    end if;
  
                    L_Index := First_Index (T_Typ);
*************** package body Checks is
*** 10031,10050 ****
              --  the length or range from the expression itself, making sure we
              --  do not evaluate it more than once.
  
!             --  Here Ck_Node is the original expression, or more properly the
              --  result of applying Duplicate_Expr to the original tree, forcing
              --  the result to be a name.
  
              else
                 declare
!                   Ndims : constant Nat := Number_Dimensions (T_Typ);
  
                 begin
                    --  Build the condition for the explicit dereference case
  
                    for Indx in 1 .. Ndims loop
                       Evolve_Or_Else
!                        (Cond, Length_N_Cond (Ck_Node, T_Typ, Indx));
                    end loop;
                 end;
              end if;
--- 10259,10278 ----
              --  the length or range from the expression itself, making sure we
              --  do not evaluate it more than once.
  
!             --  Here Expr is the original expression, or more properly the
              --  result of applying Duplicate_Expr to the original tree, forcing
              --  the result to be a name.
  
              else
                 declare
!                   Ndims : constant Pos := Number_Dimensions (T_Typ);
  
                 begin
                    --  Build the condition for the explicit dereference case
  
                    for Indx in 1 .. Ndims loop
                       Evolve_Or_Else
!                        (Cond, Length_N_Cond (Expr, T_Typ, Indx));
                    end loop;
                 end;
              end if;
*************** package body Checks is
*** 10055,10061 ****
  
        if Present (Cond) then
           if Do_Access then
!             Cond := Guard_Access (Cond, Loc, Ck_Node);
           end if;
  
           Add_Check
--- 10283,10289 ----
  
        if Present (Cond) then
           if Do_Access then
!             Cond := Guard_Access (Cond, Loc, Expr);
           end if;
  
           Add_Check
*************** package body Checks is
*** 10072,10083 ****
     ---------------------------
  
     function Selected_Range_Checks
!      (Ck_Node    : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id;
        Warn_Node  : Node_Id) return Check_Result
     is
!       Loc         : constant Source_Ptr := Sloc (Ck_Node);
        S_Typ       : Entity_Id;
        T_Typ       : Entity_Id;
        Expr_Actual : Node_Id;
--- 10300,10311 ----
     ---------------------------
  
     function Selected_Range_Checks
!      (Expr       : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id;
        Warn_Node  : Node_Id) return Check_Result
     is
!       Loc         : constant Source_Ptr := Sloc (Expr);
        S_Typ       : Entity_Id;
        T_Typ       : Entity_Id;
        Expr_Actual : Node_Id;
*************** package body Checks is
*** 10092,10111 ****
        --  Adds the action given to Ret_Result if N is non-Empty
  
        function Discrete_Range_Cond
!         (Expr : Node_Id;
!          Typ  : Entity_Id) return Node_Id;
        --  Returns expression to compute:
!       --    Low_Bound (Expr) < Typ'First
        --      or else
!       --    High_Bound (Expr) > Typ'Last
  
        function Discrete_Expr_Cond
!         (Expr : Node_Id;
!          Typ  : Entity_Id) return Node_Id;
        --  Returns expression to compute:
!       --    Expr < Typ'First
        --      or else
!       --    Expr > Typ'Last
  
        function Get_E_First_Or_Last
          (Loc  : Source_Ptr;
--- 10320,10339 ----
        --  Adds the action given to Ret_Result if N is non-Empty
  
        function Discrete_Range_Cond
!         (Exp : Node_Id;
!          Typ : Entity_Id) return Node_Id;
        --  Returns expression to compute:
!       --    Low_Bound (Exp) < Typ'First
        --      or else
!       --    High_Bound (Exp) > Typ'Last
  
        function Discrete_Expr_Cond
!         (Exp : Node_Id;
!          Typ : Entity_Id) return Node_Id;
        --  Returns expression to compute:
!       --    Exp < Typ'First
        --      or else
!       --    Exp > Typ'Last
  
        function Get_E_First_Or_Last
          (Loc  : Source_Ptr;
*************** package body Checks is
*** 10142,10152 ****
        --    Exptyp'First /= Typ'First or else Exptyp'Last /= Typ'Last
  
        function Range_N_Cond
!         (Expr : Node_Id;
           Typ  : Entity_Id;
           Indx : Nat) return Node_Id;
        --  Return expression to compute:
!       --    Expr'First < Typ'First or else Expr'Last > Typ'Last
  
        ---------------
        -- Add_Check --
--- 10370,10380 ----
        --    Exptyp'First /= Typ'First or else Exptyp'Last /= Typ'Last
  
        function Range_N_Cond
!         (Exp  : Node_Id;
           Typ  : Entity_Id;
           Indx : Nat) return Node_Id;
        --  Return expression to compute:
!       --    Exp'First < Typ'First or else Exp'Last > Typ'Last
  
        ---------------
        -- Add_Check --
*************** package body Checks is
*** 10173,10180 ****
        -------------------------
  
        function Discrete_Expr_Cond
!         (Expr : Node_Id;
!          Typ  : Entity_Id) return Node_Id
        is
        begin
           return
--- 10401,10408 ----
        -------------------------
  
        function Discrete_Expr_Cond
!         (Exp : Node_Id;
!          Typ : Entity_Id) return Node_Id
        is
        begin
           return
*************** package body Checks is
*** 10183,10189 ****
                 Make_Op_Lt (Loc,
                   Left_Opnd =>
                     Convert_To (Base_Type (Typ),
!                      Duplicate_Subexpr_No_Checks (Expr)),
                   Right_Opnd =>
                     Convert_To (Base_Type (Typ),
                                 Get_E_First_Or_Last (Loc, Typ, 0, Name_First))),
--- 10411,10417 ----
                 Make_Op_Lt (Loc,
                   Left_Opnd =>
                     Convert_To (Base_Type (Typ),
!                      Duplicate_Subexpr_No_Checks (Exp)),
                   Right_Opnd =>
                     Convert_To (Base_Type (Typ),
                                 Get_E_First_Or_Last (Loc, Typ, 0, Name_First))),
*************** package body Checks is
*** 10192,10198 ****
                 Make_Op_Gt (Loc,
                   Left_Opnd =>
                     Convert_To (Base_Type (Typ),
!                      Duplicate_Subexpr_No_Checks (Expr)),
                   Right_Opnd =>
                     Convert_To
                       (Base_Type (Typ),
--- 10420,10426 ----
                 Make_Op_Gt (Loc,
                   Left_Opnd =>
                     Convert_To (Base_Type (Typ),
!                      Duplicate_Subexpr_No_Checks (Exp)),
                   Right_Opnd =>
                     Convert_To
                       (Base_Type (Typ),
*************** package body Checks is
*** 10204,10214 ****
        -------------------------
  
        function Discrete_Range_Cond
!         (Expr : Node_Id;
!          Typ  : Entity_Id) return Node_Id
        is
!          LB : Node_Id := Low_Bound (Expr);
!          HB : Node_Id := High_Bound (Expr);
  
           Left_Opnd  : Node_Id;
           Right_Opnd : Node_Id;
--- 10432,10442 ----
        -------------------------
  
        function Discrete_Range_Cond
!         (Exp : Node_Id;
!          Typ : Entity_Id) return Node_Id
        is
!          LB : Node_Id := Low_Bound (Exp);
!          HB : Node_Id := High_Bound (Exp);
  
           Left_Opnd  : Node_Id;
           Right_Opnd : Node_Id;
*************** package body Checks is
*** 10364,10370 ****
        ------------------
  
        function Range_N_Cond
!         (Expr : Node_Id;
           Typ  : Entity_Id;
           Indx : Nat) return Node_Id
        is
--- 10592,10598 ----
        ------------------
  
        function Range_N_Cond
!         (Exp  : Node_Id;
           Typ  : Entity_Id;
           Indx : Nat) return Node_Id
        is
*************** package body Checks is
*** 10374,10387 ****
               Left_Opnd =>
                 Make_Op_Lt (Loc,
                   Left_Opnd  =>
!                    Get_N_First (Expr, Indx),
                   Right_Opnd =>
                     Get_E_First_Or_Last (Loc, Typ, Indx, Name_First)),
  
               Right_Opnd =>
                 Make_Op_Gt (Loc,
                   Left_Opnd  =>
!                    Get_N_Last (Expr, Indx),
                   Right_Opnd =>
                     Get_E_First_Or_Last (Loc, Typ, Indx, Name_Last)));
        end Range_N_Cond;
--- 10602,10615 ----
               Left_Opnd =>
                 Make_Op_Lt (Loc,
                   Left_Opnd  =>
!                    Get_N_First (Exp, Indx),
                   Right_Opnd =>
                     Get_E_First_Or_Last (Loc, Typ, Indx, Name_First)),
  
               Right_Opnd =>
                 Make_Op_Gt (Loc,
                   Left_Opnd  =>
!                    Get_N_Last (Exp, Indx),
                   Right_Opnd =>
                     Get_E_First_Or_Last (Loc, Typ, Indx, Name_Last)));
        end Range_N_Cond;
*************** package body Checks is
*** 10391,10418 ****
     begin
        --  Checks will be applied only when generating code. In GNATprove mode,
        --  we do not apply the checks, but we still call Selected_Range_Checks
!       --  to possibly issue errors on SPARK code when a run-time error can be
!       --  detected at compile time.
  
!       if not Expander_Active and not GNATprove_Mode then
           return Ret_Result;
        end if;
  
        if Target_Typ = Any_Type
          or else Target_Typ = Any_Composite
!         or else Raises_Constraint_Error (Ck_Node)
        then
           return Ret_Result;
        end if;
  
        if No (Wnode) then
!          Wnode := Ck_Node;
        end if;
  
        T_Typ := Target_Typ;
  
        if No (Source_Typ) then
!          S_Typ := Etype (Ck_Node);
        else
           S_Typ := Source_Typ;
        end if;
--- 10619,10646 ----
     begin
        --  Checks will be applied only when generating code. In GNATprove mode,
        --  we do not apply the checks, but we still call Selected_Range_Checks
!       --  outside of generics to possibly issue errors on SPARK code when a
!       --  run-time error can be detected at compile time.
  
!       if Inside_A_Generic or (not GNATprove_Mode and not Expander_Active) then
           return Ret_Result;
        end if;
  
        if Target_Typ = Any_Type
          or else Target_Typ = Any_Composite
!         or else Raises_Constraint_Error (Expr)
        then
           return Ret_Result;
        end if;
  
        if No (Wnode) then
!          Wnode := Expr;
        end if;
  
        T_Typ := Target_Typ;
  
        if No (Source_Typ) then
!          S_Typ := Etype (Expr);
        else
           S_Typ := Source_Typ;
        end if;
*************** package body Checks is
*** 10422,10428 ****
        end if;
  
        --  The order of evaluating T_Typ before S_Typ seems to be critical
!       --  because S_Typ can be derived from Etype (Ck_Node), if it's not passed
        --  in, and since Node can be an N_Range node, it might be invalid.
        --  Should there be an assert check somewhere for taking the Etype of
        --  an N_Range node ???
--- 10650,10656 ----
        end if;
  
        --  The order of evaluating T_Typ before S_Typ seems to be critical
!       --  because S_Typ can be derived from Etype (Expr), if it's not passed
        --  in, and since Node can be an N_Range node, it might be invalid.
        --  Should there be an assert check somewhere for taking the Etype of
        --  an N_Range node ???
*************** package body Checks is
*** 10434,10440 ****
  
           --  A simple optimization for the null case
  
!          if Known_Null (Ck_Node) then
              return Ret_Result;
           end if;
        end if;
--- 10662,10668 ----
  
           --  A simple optimization for the null case
  
!          if Known_Null (Expr) then
              return Ret_Result;
           end if;
        end if;
*************** package body Checks is
*** 10442,10452 ****
        --  For an N_Range Node, check for a null range and then if not
        --  null generate a range check action.
  
!       if Nkind (Ck_Node) = N_Range then
  
           --  There's no point in checking a range against itself
  
!          if Ck_Node = Scalar_Range (T_Typ) then
              return Ret_Result;
           end if;
  
--- 10670,10680 ----
        --  For an N_Range Node, check for a null range and then if not
        --  null generate a range check action.
  
!       if Nkind (Expr) = N_Range then
  
           --  There's no point in checking a range against itself
  
!          if Expr = Scalar_Range (T_Typ) then
              return Ret_Result;
           end if;
  
*************** package body Checks is
*** 10456,10463 ****
              Known_T_LB : constant Boolean := Compile_Time_Known_Value (T_LB);
              Known_T_HB : constant Boolean := Compile_Time_Known_Value (T_HB);
  
!             LB         : Node_Id := Low_Bound (Ck_Node);
!             HB         : Node_Id := High_Bound (Ck_Node);
              Known_LB   : Boolean := False;
              Known_HB   : Boolean := False;
  
--- 10684,10691 ----
              Known_T_LB : constant Boolean := Compile_Time_Known_Value (T_LB);
              Known_T_HB : constant Boolean := Compile_Time_Known_Value (T_HB);
  
!             LB         : Node_Id := Low_Bound (Expr);
!             HB         : Node_Id := High_Bound (Expr);
              Known_LB   : Boolean := False;
              Known_HB   : Boolean := False;
  
*************** package body Checks is
*** 10541,10547 ****
                       if No (Warn_Node) then
                          Add_Check
                            (Compile_Time_Constraint_Error
!                              (Low_Bound (Ck_Node),
                                "static value out of range of}??", T_Typ));
  
                       else
--- 10769,10775 ----
                       if No (Warn_Node) then
                          Add_Check
                            (Compile_Time_Constraint_Error
!                              (Low_Bound (Expr),
                                "static value out of range of}??", T_Typ));
  
                       else
*************** package body Checks is
*** 10556,10562 ****
                       if No (Warn_Node) then
                          Add_Check
                            (Compile_Time_Constraint_Error
!                              (High_Bound (Ck_Node),
                                "static value out of range of}??", T_Typ));
  
                       else
--- 10784,10790 ----
                       if No (Warn_Node) then
                          Add_Check
                            (Compile_Time_Constraint_Error
!                              (High_Bound (Expr),
                                "static value out of range of}??", T_Typ));
  
                       else
*************** package body Checks is
*** 10570,10577 ****
  
              else
                 declare
!                   LB : Node_Id := Low_Bound (Ck_Node);
!                   HB : Node_Id := High_Bound (Ck_Node);
  
                 begin
                    --  If either bound is a discriminant and we are within the
--- 10798,10805 ----
  
              else
                 declare
!                   LB : Node_Id := Low_Bound (Expr);
!                   HB : Node_Id := High_Bound (Expr);
  
                 begin
                    --  If either bound is a discriminant and we are within the
*************** package body Checks is
*** 10614,10620 ****
                       end if;
                    end if;
  
!                   Cond := Discrete_Range_Cond (Ck_Node, T_Typ);
                    Set_Paren_Count (Cond, 1);
  
                    Cond :=
--- 10842,10848 ----
                       end if;
                    end if;
  
!                   Cond := Discrete_Range_Cond (Expr, T_Typ);
                    Set_Paren_Count (Cond, 1);
  
                    Cond :=
*************** package body Checks is
*** 10641,10647 ****
           --  arbitrary target type, so we do that here.
  
           if Ekind (Base_Type (S_Typ)) /= Ekind (Base_Type (T_Typ)) then
!             Cond := Discrete_Expr_Cond (Ck_Node, T_Typ);
  
           --  For literals, we can tell if the constraint error will be
           --  raised at compile time, so we never need a dynamic check, but
--- 10869,10875 ----
           --  arbitrary target type, so we do that here.
  
           if Ekind (Base_Type (S_Typ)) /= Ekind (Base_Type (T_Typ)) then
!             Cond := Discrete_Expr_Cond (Expr, T_Typ);
  
           --  For literals, we can tell if the constraint error will be
           --  raised at compile time, so we never need a dynamic check, but
*************** package body Checks is
*** 10649,10655 ****
           --  and replace the literal with a raise constraint error
           --  expression. As usual, skip this for access types
  
!          elsif Compile_Time_Known_Value (Ck_Node) and then not Do_Access then
              declare
                 LB : constant Node_Id := Type_Low_Bound (T_Typ);
                 UB : constant Node_Id := Type_High_Bound (T_Typ);
--- 10877,10883 ----
           --  and replace the literal with a raise constraint error
           --  expression. As usual, skip this for access types
  
!          elsif Compile_Time_Known_Value (Expr) and then not Do_Access then
              declare
                 LB : constant Node_Id := Type_Low_Bound (T_Typ);
                 UB : constant Node_Id := Type_High_Bound (T_Typ);
*************** package body Checks is
*** 10665,10681 ****
                 if Static_Bounds then
                    if Is_Floating_Point_Type (S_Typ) then
                       Out_Of_Range :=
!                        (Expr_Value_R (Ck_Node) < Expr_Value_R (LB))
                           or else
!                        (Expr_Value_R (Ck_Node) > Expr_Value_R (UB));
  
                    --  Fixed or discrete type
  
                    else
                       Out_Of_Range :=
!                        Expr_Value (Ck_Node) < Expr_Value (LB)
                           or else
!                        Expr_Value (Ck_Node) > Expr_Value (UB);
                    end if;
  
                    --  Bounds of the type are static and the literal is out of
--- 10893,10909 ----
                 if Static_Bounds then
                    if Is_Floating_Point_Type (S_Typ) then
                       Out_Of_Range :=
!                        (Expr_Value_R (Expr) < Expr_Value_R (LB))
                           or else
!                        (Expr_Value_R (Expr) > Expr_Value_R (UB));
  
                    --  Fixed or discrete type
  
                    else
                       Out_Of_Range :=
!                        Expr_Value (Expr) < Expr_Value (LB)
                           or else
!                        Expr_Value (Expr) > Expr_Value (UB);
                    end if;
  
                    --  Bounds of the type are static and the literal is out of
*************** package body Checks is
*** 10685,10691 ****
                       if No (Warn_Node) then
                          Add_Check
                            (Compile_Time_Constraint_Error
!                              (Ck_Node,
                                "static value out of range of}??", T_Typ));
  
                       else
--- 10913,10919 ----
                       if No (Warn_Node) then
                          Add_Check
                            (Compile_Time_Constraint_Error
!                              (Expr,
                                "static value out of range of}??", T_Typ));
  
                       else
*************** package body Checks is
*** 10697,10703 ****
                    end if;
  
                 else
!                   Cond := Discrete_Expr_Cond (Ck_Node, T_Typ);
                 end if;
              end;
  
--- 10925,10931 ----
                    end if;
  
                 else
!                   Cond := Discrete_Expr_Cond (Expr, T_Typ);
                 end if;
              end;
  
*************** package body Checks is
*** 10707,10713 ****
  
           else
              if not In_Subrange_Of (S_Typ, T_Typ) then
!                Cond := Discrete_Expr_Cond (Ck_Node, T_Typ);
              end if;
           end if;
        end if;
--- 10935,10941 ----
  
           else
              if not In_Subrange_Of (S_Typ, T_Typ) then
!                Cond := Discrete_Expr_Cond (Expr, T_Typ);
              end if;
           end if;
        end if;
*************** package body Checks is
*** 10715,10721 ****
        if Is_Array_Type (T_Typ) and then Is_Array_Type (S_Typ) then
           if Is_Constrained (T_Typ) then
  
!             Expr_Actual := Get_Referenced_Object (Ck_Node);
              Exptyp      := Get_Actual_Subtype (Expr_Actual);
  
              if Is_Access_Type (Exptyp) then
--- 10943,10949 ----
        if Is_Array_Type (T_Typ) and then Is_Array_Type (S_Typ) then
           if Is_Constrained (T_Typ) then
  
!             Expr_Actual := Get_Referenced_Object (Expr);
              Exptyp      := Get_Actual_Subtype (Expr_Actual);
  
              if Is_Access_Type (Exptyp) then
*************** package body Checks is
*** 10742,10748 ****
  
              elsif Is_Constrained (Exptyp) then
                 declare
!                   Ndims : constant Nat := Number_Dimensions (T_Typ);
  
                    L_Index : Node_Id;
                    R_Index : Node_Id;
--- 10970,10976 ----
  
              elsif Is_Constrained (Exptyp) then
                 declare
!                   Ndims : constant Pos := Number_Dimensions (T_Typ);
  
                    L_Index : Node_Id;
                    R_Index : Node_Id;
*************** package body Checks is
*** 10790,10809 ****
              --  the length or range from the expression itself, making sure we
              --  do not evaluate it more than once.
  
!             --  Here Ck_Node is the original expression, or more properly the
              --  result of applying Duplicate_Expr to the original tree,
              --  forcing the result to be a name.
  
              else
                 declare
!                   Ndims : constant Nat := Number_Dimensions (T_Typ);
  
                 begin
                    --  Build the condition for the explicit dereference case
  
                    for Indx in 1 .. Ndims loop
                       Evolve_Or_Else
!                        (Cond, Range_N_Cond (Ck_Node, T_Typ, Indx));
                    end loop;
                 end;
              end if;
--- 11018,11037 ----
              --  the length or range from the expression itself, making sure we
              --  do not evaluate it more than once.
  
!             --  Here Expr is the original expression, or more properly the
              --  result of applying Duplicate_Expr to the original tree,
              --  forcing the result to be a name.
  
              else
                 declare
!                   Ndims : constant Pos := Number_Dimensions (T_Typ);
  
                 begin
                    --  Build the condition for the explicit dereference case
  
                    for Indx in 1 .. Ndims loop
                       Evolve_Or_Else
!                        (Cond, Range_N_Cond (Expr, T_Typ, Indx));
                    end loop;
                 end;
              end if;
*************** package body Checks is
*** 10816,10822 ****
              --  array type, as 4.6(24.15/2) requires the designated subtypes
              --  of the two access types to statically match.
  
!             if Nkind (Parent (Ck_Node)) = N_Type_Conversion
                and then not Do_Access
              then
                 declare
--- 11044,11050 ----
              --  array type, as 4.6(24.15/2) requires the designated subtypes
              --  of the two access types to statically match.
  
!             if Nkind (Parent (Expr)) = N_Type_Conversion
                and then not Do_Access
              then
                 declare
*************** package body Checks is
*** 10825,10831 ****
                    Opnd_Range : Node_Id;
  
                 begin
!                   Opnd_Index := First_Index (Get_Actual_Subtype (Ck_Node));
                    Targ_Index := First_Index (T_Typ);
                    while Present (Opnd_Index) loop
  
--- 11053,11059 ----
                    Opnd_Range : Node_Id;
  
                 begin
!                   Opnd_Index := First_Index (Get_Actual_Subtype (Expr));
                    Targ_Index := First_Index (T_Typ);
                    while Present (Opnd_Index) loop
  
*************** package body Checks is
*** 10896,10902 ****
  
        if Present (Cond) then
           if Do_Access then
!             Cond := Guard_Access (Cond, Loc, Ck_Node);
           end if;
  
           Add_Check
--- 11124,11130 ----
  
        if Present (Cond) then
           if Do_Access then
!             Cond := Guard_Access (Cond, Loc, Expr);
           end if;
  
           Add_Check
*************** package body Checks is
*** 10967,10974 ****
  
     procedure Validity_Check_Range
       (N          : Node_Id;
!       Related_Id : Entity_Id := Empty)
!    is
     begin
        if Validity_Checks_On and Validity_Check_Operands then
           if Nkind (N) = N_Range then
--- 11195,11201 ----
  
     procedure Validity_Check_Range
       (N          : Node_Id;
!       Related_Id : Entity_Id := Empty) is
     begin
        if Validity_Checks_On and Validity_Check_Operands then
           if Nkind (N) = N_Range then
*************** package body Checks is
*** 10985,11001 ****
        end if;
     end Validity_Check_Range;
  
-    --------------------------------
-    -- Validity_Checks_Suppressed --
-    --------------------------------
- 
-    function Validity_Checks_Suppressed (E : Entity_Id) return Boolean is
-    begin
-       if Present (E) and then Checks_May_Be_Suppressed (E) then
-          return Is_Check_Suppressed (E, Validity_Check);
-       else
-          return Scope_Suppress.Suppress (Validity_Check);
-       end if;
-    end Validity_Checks_Suppressed;
- 
  end Checks;
--- 11212,11215 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/checks.ads gcc-11.1.0/gcc/ada/checks.ads
*** gcc-10.3.0/gcc/ada/checks.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/checks.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,32 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  Package containing routines used to deal with runtime checks. These
  --  routines are used both by the semantics and by the expander. In some
! --  cases, checks are enabled simply by setting flags for gigi, and in
! --  other cases the code for the check is expanded.
  
  --  The approach used for range and length checks, in regards to suppressed
  --  checks, is to attempt to detect at compilation time that a constraint
--- 23,32 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  Package containing routines used to deal with run-time checks. These
  --  routines are used both by the semantics and by the expander. In some
! --  cases, checks are enabled simply by setting a flag for the back end,
! --  and in other cases the code for the check is expanded.
  
  --  The approach used for range and length checks, in regards to suppressed
  --  checks, is to attempt to detect at compilation time that a constraint
*************** package Checks is
*** 48,70 ****
     --  Called for each new main source program, to initialize internal
     --  variables used in the package body of the Checks unit.
  
!    function Access_Checks_Suppressed          (E : Entity_Id) return Boolean;
!    function Accessibility_Checks_Suppressed   (E : Entity_Id) return Boolean;
!    function Alignment_Checks_Suppressed       (E : Entity_Id) return Boolean;
!    function Allocation_Checks_Suppressed      (E : Entity_Id) return Boolean;
!    function Atomic_Synchronization_Disabled   (E : Entity_Id) return Boolean;
!    function Discriminant_Checks_Suppressed    (E : Entity_Id) return Boolean;
!    function Division_Checks_Suppressed        (E : Entity_Id) return Boolean;
!    function Duplicated_Tag_Checks_Suppressed  (E : Entity_Id) return Boolean;
!    function Elaboration_Checks_Suppressed     (E : Entity_Id) return Boolean;
!    function Index_Checks_Suppressed           (E : Entity_Id) return Boolean;
!    function Length_Checks_Suppressed          (E : Entity_Id) return Boolean;
!    function Overflow_Checks_Suppressed        (E : Entity_Id) return Boolean;
!    function Predicate_Checks_Suppressed       (E : Entity_Id) return Boolean;
!    function Range_Checks_Suppressed           (E : Entity_Id) return Boolean;
!    function Storage_Checks_Suppressed         (E : Entity_Id) return Boolean;
!    function Tag_Checks_Suppressed             (E : Entity_Id) return Boolean;
!    function Validity_Checks_Suppressed        (E : Entity_Id) return Boolean;
     --  These functions check to see if the named check is suppressed, either
     --  by an active scope suppress setting, or because the check has been
     --  specifically suppressed for the given entity. If no entity is relevant
--- 48,69 ----
     --  Called for each new main source program, to initialize internal
     --  variables used in the package body of the Checks unit.
  
!    function Access_Checks_Suppressed         (E : Entity_Id) return Boolean;
!    function Accessibility_Checks_Suppressed  (E : Entity_Id) return Boolean;
!    function Alignment_Checks_Suppressed      (E : Entity_Id) return Boolean;
!    function Allocation_Checks_Suppressed     (E : Entity_Id) return Boolean;
!    function Atomic_Synchronization_Disabled  (E : Entity_Id) return Boolean;
!    function Discriminant_Checks_Suppressed   (E : Entity_Id) return Boolean;
!    function Division_Checks_Suppressed       (E : Entity_Id) return Boolean;
!    function Duplicated_Tag_Checks_Suppressed (E : Entity_Id) return Boolean;
!    function Elaboration_Checks_Suppressed    (E : Entity_Id) return Boolean;
!    function Index_Checks_Suppressed          (E : Entity_Id) return Boolean;
!    function Length_Checks_Suppressed         (E : Entity_Id) return Boolean;
!    function Overflow_Checks_Suppressed       (E : Entity_Id) return Boolean;
!    function Predicate_Checks_Suppressed      (E : Entity_Id) return Boolean;
!    function Range_Checks_Suppressed          (E : Entity_Id) return Boolean;
!    function Storage_Checks_Suppressed        (E : Entity_Id) return Boolean;
!    function Tag_Checks_Suppressed            (E : Entity_Id) return Boolean;
     --  These functions check to see if the named check is suppressed, either
     --  by an active scope suppress setting, or because the check has been
     --  specifically suppressed for the given entity. If no entity is relevant
*************** package Checks is
*** 179,185 ****
     --  operate anyway since they may generate useful compile time warnings.
  
     procedure Apply_Access_Check (N : Node_Id);
!    --  Determines whether an expression node requires a runtime access
     --  check and if so inserts the appropriate run-time check.
  
     procedure Apply_Accessibility_Check
--- 178,184 ----
     --  operate anyway since they may generate useful compile time warnings.
  
     procedure Apply_Access_Check (N : Node_Id);
!    --  Determines whether an expression node requires a run-time access
     --  check and if so inserts the appropriate run-time check.
  
     procedure Apply_Accessibility_Check
*************** package Checks is
*** 200,206 ****
     --  generated) is prepended to the Actions list of N_Freeze_Entity node N.
     --  Note that the check references E'Alignment, so it cannot be emitted
     --  before N (its freeze node), otherwise this would cause an illegal
!    --  access before elaboration error in GIGI. For the case of a clear overlay
     --  situation, we also check that the size of the overlaying object is not
     --  larger than the overlaid object.
  
--- 199,205 ----
     --  generated) is prepended to the Actions list of N_Freeze_Entity node N.
     --  Note that the check references E'Alignment, so it cannot be emitted
     --  before N (its freeze node), otherwise this would cause an illegal
!    --  access before elaboration error in gigi. For the case of a clear overlay
     --  situation, we also check that the size of the overlaying object is not
     --  larger than the overlaid object.
  
*************** package Checks is
*** 338,345 ****
     --  For that to happen, the possibility of arguments of infinite or NaN
     --  value should be taken into account, which is not the case currently.
  
     procedure Install_Null_Excluding_Check (N : Node_Id);
!    --  Determines whether an access node requires a runtime access check and
     --  if so inserts the appropriate run-time check.
  
     procedure Install_Primitive_Elaboration_Check (Subp_Body : Node_Id);
--- 337,359 ----
     --  For that to happen, the possibility of arguments of infinite or NaN
     --  value should be taken into account, which is not the case currently.
  
+    procedure Determine_Range_To_Discrete
+      (N            : Node_Id;
+       OK           : out Boolean;
+       Lo           : out Uint;
+       Hi           : out Uint;
+       Fixed_Int    : Boolean := False;
+       Assume_Valid : Boolean := False);
+    --  Similar to Determine_Range, but attempts to return a discrete range even
+    --  if N is not of a discrete type by doing a conversion. The Fixed_Int flag
+    --  if set causes any fixed-point values to be treated as though they were
+    --  discrete values (i.e. the underlying integer value is used), in which
+    --  case no conversion is needed. At the current time, this is used only for
+    --  discrete types, for fixed-point types if Fixed_Int is set, and also for
+    --  floating-point types in GNATprove, see Determine_Range_R above.
+ 
     procedure Install_Null_Excluding_Check (N : Node_Id);
!    --  Determines whether an access node requires a run-time access check and
     --  if so inserts the appropriate run-time check.
  
     procedure Install_Primitive_Elaboration_Check (Subp_Body : Node_Id);
*************** package Checks is
*** 445,457 ****
     -------------------------------------------------------
  
     --  Range checks are controlled by the Do_Range_Check flag. The front end
!    --  is responsible for setting this flag in relevant nodes. Originally
!    --  the back end generated all corresponding range checks. But later on
!    --  we decided to generate many range checks in the front end. We are now
!    --  in the transitional phase where some of these checks are still done
!    --  by the back end, but many are done by the front end. It is possible
!    --  that in the future we might move all the checks to the front end. The
!    --  main remaining back end checks are for subscript checking.
  
     --  Overflow checks are similarly controlled by the Do_Overflow_Check flag.
     --  The difference here is that if back end overflow checks are inactive
--- 459,468 ----
     -------------------------------------------------------
  
     --  Range checks are controlled by the Do_Range_Check flag. The front end
!    --  is responsible for setting this flag in relevant nodes. Originally the
!    --  back end generated all the corresponding range checks, but later on we
!    --  decided to generate all the range checks in the front end and this is
!    --  the current situation.
  
     --  Overflow checks are similarly controlled by the Do_Overflow_Check flag.
     --  The difference here is that if back end overflow checks are inactive
*************** package Checks is
*** 529,540 ****
     --                this node is further examined depends on the setting of
     --                the parameter Source_Typ, as described below.
  
-    --    ??? Apply_Length_Check and Apply_Range_Check do not have an Expr
-    --        formal
- 
-    --    ??? Apply_Length_Check and Apply_Range_Check have a Ck_Node formal
-    --        which is undocumented, is it the same as Expr?
- 
     --    Target_Typ  The target type on which the check is to be based. For
     --                example, if we have a scalar range check, then the check
     --                is that we are in range of this type.
--- 540,545 ----
*************** package Checks is
*** 561,567 ****
     --  handled by the caller.
  
     procedure Apply_Length_Check
!      (Ck_Node    : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id := Empty);
     --  This procedure builds a sequence of declarations to do a length check
--- 566,572 ----
     --  handled by the caller.
  
     procedure Apply_Length_Check
!      (Expr       : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id := Empty);
     --  This procedure builds a sequence of declarations to do a length check
*************** package Checks is
*** 578,587 ****
     --  processes it as described above for consistency with the other routines
     --  in this section.
  
!    procedure Apply_Range_Check
!      (Ck_Node    : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id := Empty);
     --  For a Node of kind N_Range, constructs a range check action that tests
     --  first that the range is not null and then that the range is contained in
     --  the Target_Typ range.
--- 583,611 ----
     --  processes it as described above for consistency with the other routines
     --  in this section.
  
!    procedure Apply_Length_Check_On_Assignment
!      (Expr       : Node_Id;
        Target_Typ : Entity_Id;
+       Target     : Node_Id;
        Source_Typ : Entity_Id := Empty);
+    --  Similar to Apply_Length_Check, but takes the target of an assignment for
+    --  which the check is to be done. Used to filter out specific cases where
+    --  the check is superfluous.
+ 
+    procedure Apply_Static_Length_Check
+      (Expr       : Node_Id;
+       Target_Typ : Entity_Id;
+       Source_Typ : Entity_Id := Empty);
+    --  Tries to determine statically whether the two array types source type
+    --  and Target_Typ have the same length. If it can be determined at compile
+    --  time that they do not, then an N_Raise_Constraint_Error node replaces
+    --  Expr, and a warning message is issued.
+ 
+    procedure Apply_Range_Check
+      (Expr        : Node_Id;
+       Target_Typ  : Entity_Id;
+       Source_Typ  : Entity_Id := Empty;
+       Insert_Node : Node_Id   := Empty);
     --  For a Node of kind N_Range, constructs a range check action that tests
     --  first that the range is not null and then that the range is contained in
     --  the Target_Typ range.
*************** package Checks is
*** 606,619 ****
     --  The source type is used by type conversions to unconstrained array
     --  types to retrieve the corresponding bounds.
  
!    procedure Apply_Static_Length_Check
!      (Expr       : Node_Id;
!       Target_Typ : Entity_Id;
!       Source_Typ : Entity_Id := Empty);
!    --  Tries to determine statically whether the two array types source type
!    --  and Target_Typ have the same length. If it can be determined at compile
!    --  time that they do not, then an N_Raise_Constraint_Error node replaces
!    --  Expr, and a warning message is issued.
  
     procedure Apply_Scalar_Range_Check
       (Expr       : Node_Id;
--- 630,637 ----
     --  The source type is used by type conversions to unconstrained array
     --  types to retrieve the corresponding bounds.
  
!    --  Insert_Node indicates the node where the check should be inserted.
!    --  If it is empty, then the check is inserted directly at Expr instead.
  
     procedure Apply_Scalar_Range_Check
       (Expr       : Node_Id;
*************** package Checks is
*** 621,627 ****
        Source_Typ : Entity_Id := Empty;
        Fixed_Int  : Boolean   := False);
     --  For scalar types, determines whether an expression node should be
!    --  flagged as needing a runtime range check. If the node requires such a
     --  check, the Do_Range_Check flag is turned on. The Fixed_Int flag if set
     --  causes any fixed-point values to be treated as though they were discrete
     --  values (i.e. the underlying integer value is used).
--- 639,645 ----
        Source_Typ : Entity_Id := Empty;
        Fixed_Int  : Boolean   := False);
     --  For scalar types, determines whether an expression node should be
!    --  flagged as needing a run-time range check. If the node requires such a
     --  check, the Do_Range_Check flag is turned on. The Fixed_Int flag if set
     --  causes any fixed-point values to be treated as though they were discrete
     --  values (i.e. the underlying integer value is used).
*************** package Checks is
*** 631,637 ****
     --  call to Insert_Range_Checks procedure.
  
     function Get_Range_Checks
!      (Ck_Node    : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id := Empty;
        Warn_Node  : Node_Id   := Empty) return Check_Result;
--- 649,655 ----
     --  call to Insert_Range_Checks procedure.
  
     function Get_Range_Checks
!      (Expr       : Node_Id;
        Target_Typ : Entity_Id;
        Source_Typ : Entity_Id := Empty;
        Warn_Node  : Node_Id   := Empty) return Check_Result;
*************** package Checks is
*** 646,694 ****
       (Checks       : Check_Result;
        Stmts        : List_Id;
        Suppress_Typ : Entity_Id;
!       Static_Sloc  : Source_Ptr;
!       Flag_Node    : Node_Id);
     --  Called to append range checks as returned by a call to Get_Range_Checks.
     --  Stmts is a list to which either the dynamic check is appended or the
     --  raise Constraint_Error statement is appended (for static checks).
!    --  Static_Sloc is the Sloc at which the raise CE node points, Flag_Node is
!    --  used as the node at which to set the Has_Dynamic_Check flag. Checks_On
!    --  is a boolean value that says if range and index checking is on or not.
  
     procedure Insert_Range_Checks
       (Checks       : Check_Result;
        Node         : Node_Id;
        Suppress_Typ : Entity_Id;
!       Static_Sloc  : Source_Ptr := No_Location;
!       Flag_Node    : Node_Id    := Empty;
!       Do_Before    : Boolean    := False);
     --  Called to insert range checks as returned by a call to Get_Range_Checks.
     --  Node is the node after which either the dynamic check is inserted or
     --  the raise Constraint_Error statement is inserted (for static checks).
     --  Suppress_Typ is the type to check to determine if checks are suppressed.
!    --  Static_Sloc, if passed, is the Sloc at which the raise CE node points,
!    --  otherwise Sloc (Node) is used. The Has_Dynamic_Check flag is normally
!    --  set at Node. If Flag_Node is present, then this is used instead as the
!    --  node at which to set the Has_Dynamic_Check flag. Normally the check is
!    --  inserted after, if Do_Before is True, the check is inserted before
!    --  Node.
  
     -----------------------
     -- Expander Routines --
     -----------------------
  
!    --  Some of the earlier processing for checks results in temporarily setting
!    --  the Do_Range_Check flag rather than actually generating checks. Now we
!    --  are moving the generation of such checks into the front end for reasons
!    --  of efficiency and simplicity (there were difficulties in handling this
!    --  in the back end when side effects were present in the expressions being
!    --  checked).
! 
!    --  Probably we could eliminate the Do_Range_Check flag entirely and
!    --  generate the checks earlier, but this is a delicate area and it
!    --  seemed safer to implement the following routines, which are called
!    --  late on in the expansion process. They check the Do_Range_Check flag
!    --  and if it is set, generate the actual checks and reset the flag.
  
     procedure Generate_Range_Check
       (N           : Node_Id;
--- 664,700 ----
       (Checks       : Check_Result;
        Stmts        : List_Id;
        Suppress_Typ : Entity_Id;
!       Static_Sloc  : Source_Ptr);
     --  Called to append range checks as returned by a call to Get_Range_Checks.
     --  Stmts is a list to which either the dynamic check is appended or the
     --  raise Constraint_Error statement is appended (for static checks).
!    --  Suppress_Typ is the type to check to determine if checks are suppressed.
!    --  Static_Sloc is the Sloc at which the raise CE node points.
  
     procedure Insert_Range_Checks
       (Checks       : Check_Result;
        Node         : Node_Id;
        Suppress_Typ : Entity_Id;
!       Static_Sloc  : Source_Ptr;
!       Do_Before    : Boolean := False);
     --  Called to insert range checks as returned by a call to Get_Range_Checks.
     --  Node is the node after which either the dynamic check is inserted or
     --  the raise Constraint_Error statement is inserted (for static checks).
     --  Suppress_Typ is the type to check to determine if checks are suppressed.
!    --  Static_Sloc is the Sloc at which the raise CE node points. Normally the
!    --  checks are inserted after Node; if Do_Before is True, they are before.
  
     -----------------------
     -- Expander Routines --
     -----------------------
  
!    --  In most cases, the processing for range checks done by semantic analysis
!    --  only results in setting the Do_Range_Check flag, rather than actually
!    --  generating checks. The following routines must be called later on in the
!    --  expansion process upon seeing the Do_Range_Check flag; they generate the
!    --  actual checks and reset the flag. The remaining cases where range checks
!    --  are still directly generated during semantic analysis occur as part of
!    --  the processing of constraints in (sub)type and object declarations.
  
     procedure Generate_Range_Check
       (N           : Node_Id;
*************** package Checks is
*** 702,712 ****
     --  if raised.
     --
     --  Note: if the expander is not active, or if we are in GNATprove mode,
!    --  then we do not generate explicit range code. Instead we just turn the
     --  Do_Range_Check flag on, since in these cases that's what we want to see
     --  in the tree (GNATprove in particular depends on this flag being set). If
!    --  we generate the actual range check, then we make sure the flag is off,
!    --  since the code we generate takes complete care of the check.
     --
     --  Historical note: We used to just pass on the Do_Range_Check flag to the
     --  back end to generate the check, but now in code-generation mode we never
--- 708,718 ----
     --  if raised.
     --
     --  Note: if the expander is not active, or if we are in GNATprove mode,
!    --  then we do not generate explicit range checks. Instead we just turn the
     --  Do_Range_Check flag on, since in these cases that's what we want to see
     --  in the tree (GNATprove in particular depends on this flag being set). If
!    --  we generate the actual range checks, then we make sure the flag is off
!    --  afterward, since the code we generate takes complete care of the checks.
     --
     --  Historical note: We used to just pass on the Do_Range_Check flag to the
     --  back end to generate the check, but now in code-generation mode we never
diff -Nrcpad gcc-10.3.0/gcc/ada/cio.c gcc-11.1.0/gcc/ada/cio.c
*** gcc-10.3.0/gcc/ada/cio.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/cio.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/clean.adb gcc-11.1.0/gcc/ada/clean.adb
*** gcc-10.3.0/gcc/ada/clean.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/clean.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/clean.ads gcc-11.1.0/gcc/ada/clean.ads
*** gcc-10.3.0/gcc/ada/clean.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/clean.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/comperr.adb gcc-11.1.0/gcc/ada/comperr.adb
*** gcc-10.3.0/gcc/ada/comperr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/comperr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Comperr is
*** 310,317 ****
                    End_Line;
  
                    Write_Str
!                     ("| http://www.adacore.com/ " &
!                      "section 'send a report'.");
                    End_Line;
  
                    Write_Str
--- 310,317 ----
                    End_Line;
  
                    Write_Str
!                     ("| https://www.adacore.com/login?mode=gap " &
!                      "section 'Create New Ticket'.");
                    End_Line;
  
                    Write_Str
*************** package body Comperr is
*** 325,341 ****
                    End_Line;
  
                    Write_Str
!                     ("| http://www.adacore.com/gnattracker/ " &
!                      "section 'send a report'.");
                    End_Line;
  
                    Write_Str
!                     ("| alternatively submit a bug report by email " &
!                      "to report@adacore.com,");
                    End_Line;
  
                    Write_Str
!                     ("| including your customer number #nnn " &
                       "in the subject line.");
                    End_Line;
                 end if;
--- 325,341 ----
                    End_Line;
  
                    Write_Str
!                     ("| https://www.adacore.com/login " &
!                      "section 'Create New Ticket'.");
                    End_Line;
  
                    Write_Str
!                     ("| Or submit a bug report by email " &
!                      "to report@adacore.com");
                    End_Line;
  
                    Write_Str
!                     ("| and include your customer number #nnn " &
                       "in the subject line.");
                    End_Line;
                 end if;
diff -Nrcpad gcc-10.3.0/gcc/ada/comperr.ads gcc-11.1.0/gcc/ada/comperr.ads
*** gcc-10.3.0/gcc/ada/comperr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/comperr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/contracts.adb gcc-11.1.0/gcc/ada/contracts.adb
*** gcc-10.3.0/gcc/ada/contracts.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/contracts.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2015-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2015-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sem_Disp; use Sem_Disp;
*** 47,52 ****
--- 47,53 ----
  with Sem_Prag; use Sem_Prag;
  with Sem_Util; use Sem_Util;
  with Sinfo;    use Sinfo;
+ with Sinput;   use Sinput;
  with Snames;   use Snames;
  with Stand;    use Stand;
  with Stringt;  use Stringt;
*************** package body Contracts is
*** 61,71 ****
     --
     --    Part_Of
  
     procedure Expand_Subprogram_Contract (Body_Id : Entity_Id);
     --  Expand the contracts of a subprogram body and its correspoding spec (if
     --  any). This routine processes all [refined] pre- and postconditions as
!    --  well as Contract_Cases, invariants and predicates. Body_Id denotes the
!    --  entity of the subprogram body.
  
     -----------------------
     -- Add_Contract_Item --
--- 62,77 ----
     --
     --    Part_Of
  
+    procedure Check_Type_Or_Object_External_Properties
+      (Type_Or_Obj_Id : Entity_Id);
+    --  Perform checking of external properties pragmas that is common to both
+    --  type declarations and object declarations.
+ 
     procedure Expand_Subprogram_Contract (Body_Id : Entity_Id);
     --  Expand the contracts of a subprogram body and its correspoding spec (if
     --  any). This routine processes all [refined] pre- and postconditions as
!    --  well as Contract_Cases, Subprogram_Variant, invariants and predicates.
!    --  Body_Id denotes the entity of the subprogram body.
  
     -----------------------
     -- Add_Contract_Item --
*************** package body Contracts is
*** 149,155 ****
        --    Refined_Post
  
        elsif Is_Entry_Body (Id) then
!          if Nam_In (Prag_Nam, Name_Refined_Depends, Name_Refined_Global) then
              Add_Classification;
  
           elsif Prag_Nam = Name_Refined_Post then
--- 155,161 ----
        --    Refined_Post
  
        elsif Is_Entry_Body (Id) then
!          if Prag_Nam in Name_Refined_Depends | Name_Refined_Global then
              Add_Classification;
  
           elsif Prag_Nam = Name_Refined_Post then
*************** package body Contracts is
*** 174,204 ****
        --    Volatile_Function
  
        elsif Is_Entry_Declaration (Id)
!         or else Ekind_In (Id, E_Function,
!                               E_Generic_Function,
!                               E_Generic_Procedure,
!                               E_Procedure)
        then
!          if Nam_In (Prag_Nam, Name_Attach_Handler, Name_Interrupt_Handler)
!            and then Ekind_In (Id, E_Generic_Procedure, E_Procedure)
           then
              Add_Classification;
  
!          elsif Nam_In (Prag_Nam, Name_Depends,
!                                  Name_Extensions_Visible,
!                                  Name_Global)
           then
              Add_Classification;
  
           elsif Prag_Nam = Name_Volatile_Function
!            and then Ekind_In (Id, E_Function, E_Generic_Function)
           then
              Add_Classification;
  
!          elsif Nam_In (Prag_Nam, Name_Contract_Cases, Name_Test_Case) then
              Add_Contract_Test_Case;
  
!          elsif Nam_In (Prag_Nam, Name_Postcondition, Name_Precondition) then
              Add_Pre_Post_Condition;
  
           --  The pragma is not a proper contract item
--- 180,213 ----
        --    Volatile_Function
  
        elsif Is_Entry_Declaration (Id)
!         or else Ekind (Id) in E_Function
!                             | E_Generic_Function
!                             | E_Generic_Procedure
!                             | E_Procedure
        then
!          if Prag_Nam in Name_Attach_Handler | Name_Interrupt_Handler
!            and then Ekind (Id) in E_Generic_Procedure | E_Procedure
           then
              Add_Classification;
  
!          elsif Prag_Nam in Name_Depends
!                          | Name_Extensions_Visible
!                          | Name_Global
           then
              Add_Classification;
  
           elsif Prag_Nam = Name_Volatile_Function
!            and then Ekind (Id) in E_Function | E_Generic_Function
           then
              Add_Classification;
  
!          elsif Prag_Nam in Name_Contract_Cases
!                          | Name_Subprogram_Variant
!                          | Name_Test_Case
!          then
              Add_Contract_Test_Case;
  
!          elsif Prag_Nam in Name_Postcondition | Name_Precondition then
              Add_Pre_Post_Condition;
  
           --  The pragma is not a proper contract item
*************** package body Contracts is
*** 213,222 ****
        --    Initializes
        --    Part_Of (instantiation only)
  
!       elsif Ekind_In (Id, E_Generic_Package, E_Package) then
!          if Nam_In (Prag_Nam, Name_Abstract_State,
!                               Name_Initial_Condition,
!                               Name_Initializes)
           then
              Add_Classification;
  
--- 222,231 ----
        --    Initializes
        --    Part_Of (instantiation only)
  
!       elsif Is_Package_Or_Generic_Package (Id) then
!          if Prag_Nam in Name_Abstract_State
!                       | Name_Initial_Condition
!                       | Name_Initializes
           then
              Add_Classification;
  
*************** package body Contracts is
*** 244,261 ****
              raise Program_Error;
           end if;
  
!       --  Protected units, the applicable pragmas are:
!       --    Part_Of
  
!       elsif Ekind (Id) = E_Protected_Type then
!          if Prag_Nam = Name_Part_Of then
!             Add_Classification;
  
!          --  The pragma is not a proper contract item
  
!          else
!             raise Program_Error;
!          end if;
  
        --  Subprogram bodies, the applicable pragmas are:
        --    Postcondition
--- 253,285 ----
              raise Program_Error;
           end if;
  
!       --  The four volatility refinement pragmas are ok for all types.
!       --  Part_Of is ok for task types and protected types.
!       --  Depends and Global are ok for task types.
  
!       elsif Is_Type (Id) then
!          declare
!             Is_OK : constant Boolean :=
!               Prag_Nam in Name_Async_Readers
!                         | Name_Async_Writers
!                         | Name_Effective_Reads
!                         | Name_Effective_Writes
!               or else (Ekind (Id) = E_Task_Type
!                          and Prag_Nam in Name_Part_Of
!                                        | Name_Depends
!                                        | Name_Global)
!               or else (Ekind (Id) = E_Protected_Type
!                          and Prag_Nam = Name_Part_Of);
!          begin
!             if Is_OK then
!                Add_Classification;
!             else
  
!                --  The pragma is not a proper contract item
  
!                raise Program_Error;
!             end if;
!          end;
  
        --  Subprogram bodies, the applicable pragmas are:
        --    Postcondition
*************** package body Contracts is
*** 265,276 ****
        --    Refined_Post
  
        elsif Ekind (Id) = E_Subprogram_Body then
!          if Nam_In (Prag_Nam, Name_Refined_Depends, Name_Refined_Global) then
              Add_Classification;
  
!          elsif Nam_In (Prag_Nam, Name_Postcondition,
!                                  Name_Precondition,
!                                  Name_Refined_Post)
           then
              Add_Pre_Post_Condition;
  
--- 289,300 ----
        --    Refined_Post
  
        elsif Ekind (Id) = E_Subprogram_Body then
!          if Prag_Nam in Name_Refined_Depends | Name_Refined_Global then
              Add_Classification;
  
!          elsif Prag_Nam in Name_Postcondition
!                          | Name_Precondition
!                          | Name_Refined_Post
           then
              Add_Pre_Post_Condition;
  
*************** package body Contracts is
*** 285,291 ****
        --    Refined_Global
  
        elsif Ekind (Id) = E_Task_Body then
!          if Nam_In (Prag_Nam, Name_Refined_Depends, Name_Refined_Global) then
              Add_Classification;
  
           --  The pragma is not a proper contract item
--- 309,315 ----
        --    Refined_Global
  
        elsif Ekind (Id) = E_Task_Body then
!          if Prag_Nam in Name_Refined_Depends | Name_Refined_Global then
              Add_Classification;
  
           --  The pragma is not a proper contract item
*************** package body Contracts is
*** 299,314 ****
        --    Global
        --    Part_Of
  
-       elsif Ekind (Id) = E_Task_Type then
-          if Nam_In (Prag_Nam, Name_Depends, Name_Global, Name_Part_Of) then
-             Add_Classification;
- 
-          --  The pragma is not a proper contract item
- 
-          else
-             raise Program_Error;
-          end if;
- 
        --  Variables, the applicable pragmas are:
        --    Async_Readers
        --    Async_Writers
--- 323,328 ----
*************** package body Contracts is
*** 321,335 ****
        --    Part_Of
  
        elsif Ekind (Id) = E_Variable then
!          if Nam_In (Prag_Nam, Name_Async_Readers,
!                               Name_Async_Writers,
!                               Name_Constant_After_Elaboration,
!                               Name_Depends,
!                               Name_Effective_Reads,
!                               Name_Effective_Writes,
!                               Name_Global,
!                               Name_No_Caching,
!                               Name_Part_Of)
           then
              Add_Classification;
  
--- 335,349 ----
        --    Part_Of
  
        elsif Ekind (Id) = E_Variable then
!          if Prag_Nam in Name_Async_Readers
!                       | Name_Async_Writers
!                       | Name_Constant_After_Elaboration
!                       | Name_Depends
!                       | Name_Effective_Reads
!                       | Name_Effective_Writes
!                       | Name_Global
!                       | Name_No_Caching
!                       | Name_Part_Of
           then
              Add_Classification;
  
*************** package body Contracts is
*** 338,343 ****
--- 352,360 ----
           else
              raise Program_Error;
           end if;
+ 
+       else
+          raise Program_Error;
        end if;
     end Add_Contract_Item;
  
*************** package body Contracts is
*** 354,363 ****
  
           --  Entry or subprogram declarations
  
!          if Nkind_In (Decl, N_Abstract_Subprogram_Declaration,
!                             N_Entry_Declaration,
!                             N_Generic_Subprogram_Declaration,
!                             N_Subprogram_Declaration)
           then
              declare
                 Subp_Id : constant Entity_Id := Defining_Entity (Decl);
--- 371,380 ----
  
           --  Entry or subprogram declarations
  
!          if Nkind (Decl) in N_Abstract_Subprogram_Declaration
!                           | N_Entry_Declaration
!                           | N_Generic_Subprogram_Declaration
!                           | N_Subprogram_Declaration
           then
              declare
                 Subp_Id : constant Entity_Id := Defining_Entity (Decl);
*************** package body Contracts is
*** 379,385 ****
  
           --  Entry or subprogram bodies
  
!          elsif Nkind_In (Decl, N_Entry_Body, N_Subprogram_Body) then
              Analyze_Entry_Or_Subprogram_Body_Contract (Defining_Entity (Decl));
  
           --  Objects
--- 396,402 ----
  
           --  Entry or subprogram bodies
  
!          elsif Nkind (Decl) in N_Entry_Body | N_Subprogram_Body then
              Analyze_Entry_Or_Subprogram_Body_Contract (Defining_Entity (Decl));
  
           --  Objects
*************** package body Contracts is
*** 394,401 ****
  
           --  Protected units
  
!          elsif Nkind_In (Decl, N_Protected_Type_Declaration,
!                                N_Single_Protected_Declaration)
           then
              Analyze_Protected_Contract (Defining_Entity (Decl));
  
--- 411,418 ----
  
           --  Protected units
  
!          elsif Nkind (Decl) in N_Protected_Type_Declaration
!                              | N_Single_Protected_Declaration
           then
              Analyze_Protected_Contract (Defining_Entity (Decl));
  
*************** package body Contracts is
*** 406,418 ****
  
           --  Task units
  
!          elsif Nkind_In (Decl, N_Single_Task_Declaration,
!                                N_Task_Type_Declaration)
           then
              Analyze_Task_Contract (Defining_Entity (Decl));
  
           --  For type declarations, we need to do the preanalysis of Iterable
!          --  aspect specifications.
  
           --  Other type aspects need to be resolved here???
  
--- 423,435 ----
  
           --  Task units
  
!          elsif Nkind (Decl) in N_Single_Task_Declaration
!                              | N_Task_Type_Declaration
           then
              Analyze_Task_Contract (Defining_Entity (Decl));
  
           --  For type declarations, we need to do the preanalysis of Iterable
!          --  and the 3 Xxx_Literal aspect specifications.
  
           --  Other type aspects need to be resolved here???
  
*************** package body Contracts is
*** 420,435 ****
             and then Present (Aspect_Specifications (Decl))
           then
              declare
!                E  : constant Entity_Id := Defining_Identifier (Decl);
!                It : constant Node_Id   := Find_Aspect (E, Aspect_Iterable);
  
              begin
                 if Present (It) then
                    Validate_Iterable_Aspect (E, It);
                 end if;
              end;
           end if;
  
           Next (Decl);
        end loop;
     end Analyze_Contracts;
--- 437,477 ----
             and then Present (Aspect_Specifications (Decl))
           then
              declare
!                E  : constant Entity_Id  := Defining_Identifier (Decl);
!                It : constant Node_Id    := Find_Aspect (E, Aspect_Iterable);
!                I_Lit : constant Node_Id :=
!                  Find_Aspect (E, Aspect_Integer_Literal);
!                R_Lit : constant Node_Id :=
!                  Find_Aspect (E, Aspect_Real_Literal);
!                S_Lit : constant Node_Id :=
!                  Find_Aspect (E, Aspect_String_Literal);
  
              begin
                 if Present (It) then
                    Validate_Iterable_Aspect (E, It);
                 end if;
+ 
+                if Present (I_Lit) then
+                   Validate_Literal_Aspect (E, I_Lit);
+                end if;
+                if Present (R_Lit) then
+                   Validate_Literal_Aspect (E, R_Lit);
+                end if;
+                if Present (S_Lit) then
+                   Validate_Literal_Aspect (E, S_Lit);
+                end if;
              end;
           end if;
  
+          if Nkind (Decl) in N_Full_Type_Declaration
+                           | N_Private_Type_Declaration
+                           | N_Task_Type_Declaration
+                           | N_Protected_Type_Declaration
+                           | N_Formal_Type_Declaration
+          then
+             Analyze_Type_Contract (Defining_Identifier (Decl));
+          end if;
+ 
           Next (Decl);
        end loop;
     end Analyze_Contracts;
*************** package body Contracts is
*** 490,496 ****
        --  subprograms.
  
        if SPARK_Mode = On
!         and then Ekind_In (Body_Id, E_Function, E_Generic_Function)
          and then Comes_From_Source (Spec_Id)
          and then not Is_Volatile_Function (Body_Id)
        then
--- 532,538 ----
        --  subprograms.
  
        if SPARK_Mode = On
!         and then Ekind (Body_Id) in E_Function | E_Generic_Function
          and then Comes_From_Source (Spec_Id)
          and then not Is_Volatile_Function (Body_Id)
        then
*************** package body Contracts is
*** 512,519 ****
        end if;
  
        --  Deal with preconditions, [refined] postconditions, Contract_Cases,
!       --  invariants and predicates associated with body and its spec. Do not
!       --  expand the contract of subprogram body stubs.
  
        if Nkind (Body_Decl) = N_Subprogram_Body then
           Expand_Subprogram_Contract (Body_Id);
--- 554,561 ----
        end if;
  
        --  Deal with preconditions, [refined] postconditions, Contract_Cases,
!       --  Subprogram_Variant, invariants and predicates associated with body
!       --  and its spec. Do not expand the contract of subprogram body stubs.
  
        if Nkind (Body_Decl) = N_Subprogram_Body then
           Expand_Subprogram_Contract (Body_Id);
*************** package body Contracts is
*** 540,548 ****
        --  Save the SPARK_Mode-related data to restore on exit
  
        Skip_Assert_Exprs : constant Boolean :=
!                             Ekind_In (Subp_Id, E_Entry, E_Entry_Family)
!                               and then not ASIS_Mode
!                               and then not GNATprove_Mode;
  
        Depends  : Node_Id := Empty;
        Global   : Node_Id := Empty;
--- 582,588 ----
        --  Save the SPARK_Mode-related data to restore on exit
  
        Skip_Assert_Exprs : constant Boolean :=
!                             Is_Entry (Subp_Id) and then not GNATprove_Mode;
  
        Depends  : Node_Id := Empty;
        Global   : Node_Id := Empty;
*************** package body Contracts is
*** 576,582 ****
        elsif Present (Items) then
  
           --  Do not analyze the pre/postconditions of an entry declaration
!          --  unless annotating the original tree for ASIS or GNATprove. The
           --  real analysis occurs when the pre/postconditons are relocated to
           --  the contract wrapper procedure (see Build_Contract_Wrapper).
  
--- 616,622 ----
        elsif Present (Items) then
  
           --  Do not analyze the pre/postconditions of an entry declaration
!          --  unless annotating the original tree for GNATprove. The
           --  real analysis occurs when the pre/postconditons are relocated to
           --  the contract wrapper procedure (see Build_Contract_Wrapper).
  
*************** package body Contracts is
*** 617,623 ****
                       Freeze_Expr_Types
                         (Def_Id => Subp_Id,
                          Typ    => Standard_Boolean,
!                         Expr   => Expression (Corresponding_Aspect (Prag)),
                          N      => Bod);
                    end if;
  
--- 657,665 ----
                       Freeze_Expr_Types
                         (Def_Id => Subp_Id,
                          Typ    => Standard_Boolean,
!                         Expr   =>
!                           Expression
!                             (First (Pragma_Argument_Associations (Prag))),
                          N      => Bod);
                    end if;
  
*************** package body Contracts is
*** 627,633 ****
              end;
           end if;
  
!          --  Analyze contract-cases and test-cases
  
           Prag := Contract_Test_Cases (Items);
           while Present (Prag) loop
--- 669,675 ----
              end;
           end if;
  
!          --  Analyze contract-cases, subprogram-variant and test-cases
  
           Prag := Contract_Test_Cases (Items);
           while Present (Prag) loop
*************** package body Contracts is
*** 636,642 ****
              if Prag_Nam = Name_Contract_Cases then
  
                 --  Do not analyze the contract cases of an entry declaration
!                --  unless annotating the original tree for ASIS or GNATprove.
                 --  The real analysis occurs when the contract cases are moved
                 --  to the contract wrapper procedure (Build_Contract_Wrapper).
  
--- 678,684 ----
              if Prag_Nam = Name_Contract_Cases then
  
                 --  Do not analyze the contract cases of an entry declaration
!                --  unless annotating the original tree for GNATprove.
                 --  The real analysis occurs when the contract cases are moved
                 --  to the contract wrapper procedure (Build_Contract_Wrapper).
  
*************** package body Contracts is
*** 648,653 ****
--- 690,699 ----
                 else
                    Analyze_Contract_Cases_In_Decl_Part (Prag, Freeze_Id);
                 end if;
+ 
+             elsif Prag_Nam = Name_Subprogram_Variant then
+                Analyze_Subprogram_Variant_In_Decl_Part (Prag);
+ 
              else
                 pragma Assert (Prag_Nam = Name_Test_Case);
                 Analyze_Test_Case_In_Decl_Part (Prag);
*************** package body Contracts is
*** 699,705 ****
        --  processed after the analysis of the related subprogram declaration.
  
        if SPARK_Mode = On
!         and then Ekind_In (Subp_Id, E_Function, E_Generic_Function)
          and then Comes_From_Source (Subp_Id)
          and then not Is_Volatile_Function (Subp_Id)
        then
--- 745,751 ----
        --  processed after the analysis of the related subprogram declaration.
  
        if SPARK_Mode = On
!         and then Ekind (Subp_Id) in E_Function | E_Generic_Function
          and then Comes_From_Source (Subp_Id)
          and then not Is_Volatile_Function (Subp_Id)
        then
*************** package body Contracts is
*** 721,726 ****
--- 767,1002 ----
        end if;
     end Analyze_Entry_Or_Subprogram_Contract;
  
+    ----------------------------------------------
+    -- Check_Type_Or_Object_External_Properties --
+    ----------------------------------------------
+ 
+    procedure Check_Type_Or_Object_External_Properties
+      (Type_Or_Obj_Id : Entity_Id)
+    is
+       function Decl_Kind (Is_Type     : Boolean;
+                           Object_Kind : String) return String;
+       --  Returns "type" or Object_Kind, depending on Is_Type
+ 
+       ---------------
+       -- Decl_Kind --
+       ---------------
+ 
+       function Decl_Kind (Is_Type     : Boolean;
+                           Object_Kind : String) return String is
+       begin
+          if Is_Type then
+             return "type";
+          else
+             return Object_Kind;
+          end if;
+       end Decl_Kind;
+ 
+       Is_Type_Id : constant Boolean := Is_Type (Type_Or_Obj_Id);
+ 
+       --  Local variables
+ 
+       AR_Val  : Boolean := False;
+       AW_Val  : Boolean := False;
+       ER_Val  : Boolean := False;
+       EW_Val  : Boolean := False;
+       Seen    : Boolean := False;
+       Prag    : Node_Id;
+       Obj_Typ : Entity_Id;
+ 
+    --  Start of processing for Check_Type_Or_Object_External_Properties
+ 
+    begin
+       --  Analyze all external properties
+ 
+       if Is_Type_Id then
+          Obj_Typ := Type_Or_Obj_Id;
+ 
+          --  If the parent type of a derived type is volatile
+          --  then the derived type inherits volatility-related flags.
+ 
+          if Is_Derived_Type (Type_Or_Obj_Id) then
+             declare
+                Parent_Type : constant Entity_Id :=
+                  Etype (Base_Type (Type_Or_Obj_Id));
+             begin
+                if Is_Effectively_Volatile (Parent_Type) then
+                   AR_Val := Async_Readers_Enabled (Parent_Type);
+                   AW_Val := Async_Writers_Enabled (Parent_Type);
+                   ER_Val := Effective_Reads_Enabled (Parent_Type);
+                   EW_Val := Effective_Writes_Enabled (Parent_Type);
+                end if;
+             end;
+          end if;
+       else
+          Obj_Typ := Etype (Type_Or_Obj_Id);
+       end if;
+ 
+       Prag := Get_Pragma (Type_Or_Obj_Id, Pragma_Async_Readers);
+ 
+       if Present (Prag) then
+          declare
+             Saved_AR_Val : constant Boolean := AR_Val;
+          begin
+             Analyze_External_Property_In_Decl_Part (Prag, AR_Val);
+             Seen := True;
+             if Saved_AR_Val and not AR_Val then
+                Error_Msg_N
+                  ("illegal non-confirming Async_Readers specification",
+                   Prag);
+             end if;
+          end;
+       end if;
+ 
+       Prag := Get_Pragma (Type_Or_Obj_Id, Pragma_Async_Writers);
+ 
+       if Present (Prag) then
+          declare
+             Saved_AW_Val : constant Boolean := AW_Val;
+          begin
+             Analyze_External_Property_In_Decl_Part (Prag, AW_Val);
+             Seen := True;
+             if Saved_AW_Val and not AW_Val then
+                Error_Msg_N
+                  ("illegal non-confirming Async_Writers specification",
+                   Prag);
+             end if;
+          end;
+       end if;
+ 
+       Prag := Get_Pragma (Type_Or_Obj_Id, Pragma_Effective_Reads);
+ 
+       if Present (Prag) then
+          declare
+             Saved_ER_Val : constant Boolean := ER_Val;
+          begin
+             Analyze_External_Property_In_Decl_Part (Prag, ER_Val);
+             Seen := True;
+             if Saved_ER_Val and not ER_Val then
+                Error_Msg_N
+                  ("illegal non-confirming Effective_Reads specification",
+                   Prag);
+             end if;
+          end;
+       end if;
+ 
+       Prag := Get_Pragma (Type_Or_Obj_Id, Pragma_Effective_Writes);
+ 
+       if Present (Prag) then
+          declare
+             Saved_EW_Val : constant Boolean := EW_Val;
+          begin
+             Analyze_External_Property_In_Decl_Part (Prag, EW_Val);
+             Seen := True;
+             if Saved_EW_Val and not EW_Val then
+                Error_Msg_N
+                  ("illegal non-confirming Effective_Writes specification",
+                   Prag);
+             end if;
+          end;
+       end if;
+ 
+       --  Verify the mutual interaction of the various external properties
+ 
+       if Seen then
+          Check_External_Properties
+            (Type_Or_Obj_Id, AR_Val, AW_Val, ER_Val, EW_Val);
+       end if;
+ 
+       --  The following checks are relevant only when SPARK_Mode is on, as
+       --  they are not standard Ada legality rules. Internally generated
+       --  temporaries are ignored, as well as return objects.
+ 
+       if SPARK_Mode = On
+         and then Comes_From_Source (Type_Or_Obj_Id)
+         and then not Is_Return_Object (Type_Or_Obj_Id)
+       then
+          if Is_Effectively_Volatile (Type_Or_Obj_Id) then
+ 
+             --  The declaration of an effectively volatile object or type must
+             --  appear at the library level (SPARK RM 7.1.3(3), C.6(6)).
+ 
+             if not Is_Library_Level_Entity (Type_Or_Obj_Id) then
+                Error_Msg_N
+                  ("effectively volatile "
+                     & Decl_Kind (Is_Type     => Is_Type_Id,
+                                  Object_Kind => "variable")
+                     & " & must be declared at library level "
+                     & "(SPARK RM 7.1.3(3))", Type_Or_Obj_Id);
+ 
+             --  An object of a discriminated type cannot be effectively
+             --  volatile except for protected objects (SPARK RM 7.1.3(5)).
+ 
+             elsif Has_Discriminants (Obj_Typ)
+               and then not Is_Protected_Type (Obj_Typ)
+             then
+                Error_Msg_N
+                 ("discriminated "
+                    & Decl_Kind (Is_Type     => Is_Type_Id,
+                                 Object_Kind => "object")
+                    & " & cannot be volatile",
+                  Type_Or_Obj_Id);
+             end if;
+ 
+             --  An object decl shall be compatible with respect to volatility
+             --  with its type (SPARK RM 7.1.3(2)).
+ 
+             if not Is_Type_Id then
+                if Is_Effectively_Volatile (Obj_Typ) then
+                   Check_Volatility_Compatibility
+                     (Type_Or_Obj_Id, Obj_Typ,
+                      "volatile object", "its type",
+                      Srcpos_Bearer => Type_Or_Obj_Id);
+                end if;
+ 
+             --  A component of a composite type (in this case, the composite
+             --  type is an array type) shall be compatible with respect to
+             --  volatility with the composite type (SPARK RM 7.1.3(6)).
+ 
+             elsif Is_Array_Type (Obj_Typ) then
+                Check_Volatility_Compatibility
+                  (Component_Type (Obj_Typ), Obj_Typ,
+                   "component type", "its enclosing array type",
+                   Srcpos_Bearer => Obj_Typ);
+ 
+             --  A component of a composite type (in this case, the composite
+             --  type is a record type) shall be compatible with respect to
+             --  volatility with the composite type (SPARK RM 7.1.3(6)).
+ 
+             elsif Is_Record_Type (Obj_Typ) then
+                declare
+                   Comp : Entity_Id := First_Component (Obj_Typ);
+                begin
+                   while Present (Comp) loop
+                      Check_Volatility_Compatibility
+                        (Etype (Comp), Obj_Typ,
+                         "record component " & Get_Name_String (Chars (Comp)),
+                         "its enclosing record type",
+                         Srcpos_Bearer => Comp);
+                      Next_Component (Comp);
+                   end loop;
+                end;
+             end if;
+ 
+          --  The type or object is not effectively volatile
+ 
+          else
+             --  A non-effectively volatile type cannot have effectively
+             --  volatile components (SPARK RM 7.1.3(6)).
+ 
+             if Is_Type_Id
+               and then not Is_Effectively_Volatile (Type_Or_Obj_Id)
+               and then Has_Volatile_Component (Type_Or_Obj_Id)
+             then
+                Error_Msg_N
+                  ("non-volatile type & cannot have volatile"
+                     & " components",
+                   Type_Or_Obj_Id);
+             end if;
+          end if;
+       end if;
+    end Check_Type_Or_Object_External_Properties;
+ 
     -----------------------------
     -- Analyze_Object_Contract --
     -----------------------------
*************** package body Contracts is
*** 739,753 ****
        Saved_SMP : constant Node_Id         := SPARK_Mode_Pragma;
        --  Save the SPARK_Mode-related data to restore on exit
  
-       AR_Val   : Boolean := False;
-       AW_Val   : Boolean := False;
-       ER_Val   : Boolean := False;
-       EW_Val   : Boolean := False;
        NC_Val   : Boolean := False;
        Items    : Node_Id;
        Prag     : Node_Id;
        Ref_Elmt : Elmt_Id;
-       Seen     : Boolean := False;
  
     begin
        --  The loop parameter in an element iterator over a formal container
--- 1015,1024 ----
*************** package body Contracts is
*** 814,854 ****
  
        else pragma Assert (Ekind (Obj_Id) = E_Variable);
  
!          --  Analyze all external properties
! 
!          Prag := Get_Pragma (Obj_Id, Pragma_Async_Readers);
! 
!          if Present (Prag) then
!             Analyze_External_Property_In_Decl_Part (Prag, AR_Val);
!             Seen := True;
!          end if;
! 
!          Prag := Get_Pragma (Obj_Id, Pragma_Async_Writers);
! 
!          if Present (Prag) then
!             Analyze_External_Property_In_Decl_Part (Prag, AW_Val);
!             Seen := True;
!          end if;
! 
!          Prag := Get_Pragma (Obj_Id, Pragma_Effective_Reads);
! 
!          if Present (Prag) then
!             Analyze_External_Property_In_Decl_Part (Prag, ER_Val);
!             Seen := True;
!          end if;
! 
!          Prag := Get_Pragma (Obj_Id, Pragma_Effective_Writes);
! 
!          if Present (Prag) then
!             Analyze_External_Property_In_Decl_Part (Prag, EW_Val);
!             Seen := True;
!          end if;
! 
!          --  Verify the mutual interaction of the various external properties
! 
!          if Seen then
!             Check_External_Properties (Obj_Id, AR_Val, AW_Val, ER_Val, EW_Val);
!          end if;
  
           --  Analyze the non-external volatility property No_Caching
  
--- 1085,1092 ----
  
        else pragma Assert (Ekind (Obj_Id) = E_Variable);
  
!          Check_Type_Or_Object_External_Properties
!            (Type_Or_Obj_Id => Obj_Id);
  
           --  Analyze the non-external volatility property No_Caching
  
*************** package body Contracts is
*** 858,867 ****
              Analyze_External_Property_In_Decl_Part (Prag, NC_Val);
           end if;
  
!          --  The anonymous object created for a single concurrent type carries
!          --  pragmas Depends and Globat of the type.
  
!          if Is_Single_Concurrent_Object (Obj_Id) then
  
              --  Analyze Global first, as Depends may mention items classified
              --  in the global categorization.
--- 1096,1105 ----
              Analyze_External_Property_In_Decl_Part (Prag, NC_Val);
           end if;
  
!          --  The anonymous object created for a single task type carries
!          --  pragmas Depends and Global of the type.
  
!          if Is_Single_Task_Object (Obj_Id) then
  
              --  Analyze Global first, as Depends may mention items classified
              --  in the global categorization.
*************** package body Contracts is
*** 912,958 ****
           else
              Check_Missing_Part_Of (Obj_Id);
           end if;
- 
-          --  The following checks are relevant only when SPARK_Mode is on, as
-          --  they are not standard Ada legality rules. Internally generated
-          --  temporaries are ignored.
- 
-          if SPARK_Mode = On and then Comes_From_Source (Obj_Id) then
-             if Is_Effectively_Volatile (Obj_Id) then
- 
-                --  The declaration of an effectively volatile object must
-                --  appear at the library level (SPARK RM 7.1.3(3), C.6(6)).
- 
-                if not Is_Library_Level_Entity (Obj_Id) then
-                   Error_Msg_N
-                     ("volatile variable & must be declared at library level "
-                      & "(SPARK RM 7.1.3(3))", Obj_Id);
- 
-                --  An object of a discriminated type cannot be effectively
-                --  volatile except for protected objects (SPARK RM 7.1.3(5)).
- 
-                elsif Has_Discriminants (Obj_Typ)
-                  and then not Is_Protected_Type (Obj_Typ)
-                then
-                   Error_Msg_N
-                     ("discriminated object & cannot be volatile", Obj_Id);
-                end if;
- 
-             --  The object is not effectively volatile
- 
-             else
-                --  A non-effectively volatile object cannot have effectively
-                --  volatile components (SPARK RM 7.1.3(6)).
- 
-                if not Is_Effectively_Volatile (Obj_Id)
-                  and then Has_Volatile_Component (Obj_Typ)
-                then
-                   Error_Msg_N
-                     ("non-volatile object & cannot have volatile components",
-                      Obj_Id);
-                end if;
-             end if;
-          end if;
        end if;
  
        --  Common checks
--- 1150,1155 ----
*************** package body Contracts is
*** 1239,1244 ****
--- 1436,1442 ----
        --    Global
        --    Postcondition
        --    Precondition
+       --    Subprogram_Variant
        --    Test_Case
  
        else
*************** package body Contracts is
*** 1305,1310 ****
--- 1503,1518 ----
        Restore_SPARK_Mode (Saved_SM, Saved_SMP);
     end Analyze_Task_Contract;
  
+    ---------------------------
+    -- Analyze_Type_Contract --
+    ---------------------------
+ 
+    procedure Analyze_Type_Contract (Type_Id : Entity_Id) is
+    begin
+       Check_Type_Or_Object_External_Properties
+         (Type_Or_Obj_Id => Type_Id);
+    end Analyze_Type_Contract;
+ 
     -----------------------------
     -- Create_Generic_Contract --
     -----------------------------
*************** package body Contracts is
*** 1464,1469 ****
--- 1672,1683 ----
        --  function, Result contains the entity of parameter _Result, to be
        --  used in the creation of procedure _Postconditions.
  
+       procedure Add_Stable_Property_Contracts
+         (Subp_Id : Entity_Id; Class_Present : Boolean);
+       --  Augment postcondition contracts to reflect Stable_Property aspect
+       --  (if Class_Present = False) or Stable_Property'Class aspect (if
+       --  Class_Present = True).
+ 
        procedure Append_Enabled_Item (Item : Node_Id; List : in out List_Id);
        --  Append a node to a list. If there is no list, create a new one. When
        --  the item denotes a pragma, it is added to the list only when it is
*************** package body Contracts is
*** 1670,1682 ****
              Add_Invariant_Access_Checks (Result);
           end if;
  
!          --  Add invariant and predicates for all formals that qualify
  
           Formal := First_Formal (Subp_Id);
           while Present (Formal) loop
              Typ := Etype (Formal);
  
              if Ekind (Formal) /= E_In_Parameter
                or else Is_Access_Type (Typ)
              then
                 if Invariant_Checks_OK (Typ) then
--- 1884,1898 ----
              Add_Invariant_Access_Checks (Result);
           end if;
  
!          --  Add invariant checks for all formals that qualify (see AI05-0289
!          --  and AI12-0044).
  
           Formal := First_Formal (Subp_Id);
           while Present (Formal) loop
              Typ := Etype (Formal);
  
              if Ekind (Formal) /= E_In_Parameter
+               or else Ekind (Subp_Id) = E_Procedure
                or else Is_Access_Type (Typ)
              then
                 if Invariant_Checks_OK (Typ) then
*************** package body Contracts is
*** 1699,1704 ****
--- 1915,2158 ----
           end loop;
        end Add_Invariant_And_Predicate_Checks;
  
+       -----------------------------------
+       -- Add_Stable_Property_Contracts --
+       -----------------------------------
+ 
+       procedure Add_Stable_Property_Contracts
+         (Subp_Id : Entity_Id; Class_Present : Boolean)
+       is
+          Loc         : constant Source_Ptr := Sloc (Subp_Id);
+ 
+          procedure Insert_Stable_Property_Check
+            (Formal : Entity_Id; Property_Function : Entity_Id);
+          --  Build the pragma for one check and insert it in the tree.
+ 
+          function Make_Stable_Property_Condition
+            (Formal : Entity_Id; Property_Function : Entity_Id) return Node_Id;
+          --  Builds tree for "Func (Formal) = Func (Formal)'Old" expression.
+ 
+          function Stable_Properties
+            (Aspect_Bearer : Entity_Id; Negated : out Boolean)
+            return Subprogram_List;
+          --  If no aspect specified, then returns length-zero result.
+          --  Negated indicates that reserved word NOT was specified.
+ 
+          ----------------------------------
+          -- Insert_Stable_Property_Check --
+          ----------------------------------
+ 
+          procedure Insert_Stable_Property_Check
+            (Formal : Entity_Id; Property_Function : Entity_Id) is
+ 
+             Args : constant List_Id :=
+               New_List
+                 (Make_Pragma_Argument_Association
+                    (Sloc => Loc,
+                     Expression =>
+                       Make_Stable_Property_Condition
+                          (Formal            => Formal,
+                           Property_Function => Property_Function)),
+                  Make_Pragma_Argument_Association
+                    (Sloc => Loc,
+                     Expression =>
+                       Make_String_Literal
+                         (Sloc => Loc,
+                          Strval =>
+                            "failed stable property check at "
+                            & Build_Location_String (Loc)
+                            & " for parameter "
+                            & To_String (Fully_Qualified_Name_String
+                                (Formal, Append_NUL => False))
+                            & " and property function "
+                            & To_String (Fully_Qualified_Name_String
+                                (Property_Function, Append_NUL => False))
+                         )));
+ 
+             Prag : constant Node_Id :=
+               Make_Pragma (Loc,
+                 Pragma_Identifier            =>
+                   Make_Identifier (Loc, Name_Postcondition),
+                 Pragma_Argument_Associations => Args,
+                 Class_Present                => Class_Present);
+ 
+             Subp_Decl : Node_Id := Subp_Id;
+          begin
+             --  Enclosing_Declaration may return, for example,
+             --  a N_Procedure_Specification node. Cope with this.
+             loop
+                Subp_Decl := Enclosing_Declaration (Subp_Decl);
+                exit when Is_Declaration (Subp_Decl);
+                Subp_Decl := Parent (Subp_Decl);
+                pragma Assert (Present (Subp_Decl));
+             end loop;
+ 
+             Insert_After_And_Analyze (Subp_Decl, Prag);
+          end Insert_Stable_Property_Check;
+ 
+          ------------------------------------
+          -- Make_Stable_Property_Condition --
+          ------------------------------------
+ 
+          function Make_Stable_Property_Condition
+            (Formal : Entity_Id; Property_Function : Entity_Id) return Node_Id
+          is
+             function Call_Property_Function return Node_Id is
+               (Make_Function_Call
+                  (Loc,
+                   Name                   =>
+                     New_Occurrence_Of (Property_Function, Loc),
+                   Parameter_Associations =>
+                     New_List (New_Occurrence_Of (Formal, Loc))));
+          begin
+             return Make_Op_Eq
+               (Loc,
+                Call_Property_Function,
+                Make_Attribute_Reference
+                  (Loc,
+                   Prefix         => Call_Property_Function,
+                   Attribute_Name => Name_Old));
+          end Make_Stable_Property_Condition;
+ 
+          -----------------------
+          -- Stable_Properties --
+          -----------------------
+ 
+          function Stable_Properties
+            (Aspect_Bearer : Entity_Id; Negated : out Boolean)
+            return Subprogram_List
+          is
+             Aspect_Spec : Node_Id :=
+               Find_Value_Of_Aspect
+                 (Aspect_Bearer, Aspect_Stable_Properties,
+                  Class_Present => Class_Present);
+          begin
+             --  ??? For a derived type, we wish Find_Value_Of_Aspect
+             --  somehow knew that this aspect is not inherited.
+             --  But it doesn't, so we cope with that here.
+             --
+             --  There are probably issues here with inheritance from
+             --  interface types, where just looking for the one parent type
+             --  isn't enough. But this is far from the only work needed for
+             --  Stable_Properties'Class for interface types.
+ 
+             if Is_Derived_Type (Aspect_Bearer) then
+                declare
+                   Parent_Type : constant Entity_Id :=
+                     Etype (Base_Type (Aspect_Bearer));
+                begin
+                   if Aspect_Spec =
+                      Find_Value_Of_Aspect
+                        (Parent_Type, Aspect_Stable_Properties,
+                         Class_Present => Class_Present)
+                   then
+                      --  prevent inheritance
+                      Aspect_Spec := Empty;
+                   end if;
+                end;
+             end if;
+ 
+             if No (Aspect_Spec) then
+                Negated := Aspect_Bearer = Subp_Id;
+                --  This is a little bit subtle.
+                --  We need to assign True in the Subp_Id case in order to
+                --  distinguish between no aspect spec at all vs. an
+                --  explicitly specified "with S_P => []" empty list.
+                --  In both cases Stable_Properties will return a length-0
+                --  array, but the two cases are not equivalent.
+                --  Very roughly speaking the lack of an S_P aspect spec for
+                --  a subprogram would be equivalent to something like
+                --  "with S_P => [not]", where we apply the "not" modifier to
+                --  an empty set of subprograms, if such a construct existed.
+                --  We could just assign True here, but it seems untidy to
+                --  return True in the case of an aspect spec for a type
+                --  (since negation is only allowed for subp S_P aspects).
+ 
+                return (1 .. 0 => <>);
+             else
+                return Parse_Aspect_Stable_Properties
+                         (Aspect_Spec, Negated => Negated);
+             end if;
+          end Stable_Properties;
+ 
+          Formal                  : Entity_Id := First_Formal (Subp_Id);
+          Type_Of_Formal          : Entity_Id;
+ 
+          Subp_Properties_Negated : Boolean;
+          Subp_Properties         : constant Subprogram_List :=
+            Stable_Properties (Subp_Id, Subp_Properties_Negated);
+ 
+          --  start of processing for Add_Stable_Property_Contracts
+ 
+       begin
+          if not (Is_Primitive (Subp_Id) and then Comes_From_Source (Subp_Id))
+          then
+             return;
+          end if;
+ 
+          while Present (Formal) loop
+             Type_Of_Formal := Base_Type (Etype (Formal));
+ 
+             if not Subp_Properties_Negated then
+ 
+                for SPF_Id of Subp_Properties loop
+                   if Type_Of_Formal = Base_Type (Etype (First_Formal (SPF_Id)))
+                      and then Scope (Type_Of_Formal) = Scope (Subp_Id)
+                   then
+                      --  ??? Need to filter out checks for SPFs that are
+                      --  mentioned explicitly in the postcondition of
+                      --  Subp_Id.
+ 
+                      Insert_Stable_Property_Check
+                        (Formal => Formal, Property_Function => SPF_Id);
+                   end if;
+                end loop;
+ 
+             elsif Scope (Type_Of_Formal) = Scope (Subp_Id) then
+                declare
+                   Ignored : Boolean range False .. False;
+ 
+                   Typ_Property_Funcs : constant Subprogram_List :=
+                      Stable_Properties (Type_Of_Formal, Negated => Ignored);
+ 
+                   function Excluded_By_Aspect_Spec_Of_Subp
+                     (SPF_Id : Entity_Id) return Boolean;
+                   --  Examine Subp_Properties to determine whether SPF should
+                   --  be excluded.
+ 
+                   -------------------------------------
+                   -- Excluded_By_Aspect_Spec_Of_Subp --
+                   -------------------------------------
+ 
+                   function Excluded_By_Aspect_Spec_Of_Subp
+                     (SPF_Id : Entity_Id) return Boolean is
+                   begin
+                      pragma Assert (Subp_Properties_Negated);
+                      --  Look through renames for equality test here ???
+                      return  (for some F of Subp_Properties => F = SPF_Id);
+                   end Excluded_By_Aspect_Spec_Of_Subp;
+ 
+                   --  Look through renames for equality test here ???
+                   Subp_Is_Stable_Property_Function : constant Boolean :=
+                     (for some F of Typ_Property_Funcs => F = Subp_Id);
+                begin
+                   if not Subp_Is_Stable_Property_Function then
+                      for SPF_Id of Typ_Property_Funcs loop
+                         if not Excluded_By_Aspect_Spec_Of_Subp (SPF_Id) then
+                            --  ??? Need to filter out checks for SPFs that are
+                            --  mentioned explicitly in the postcondition of
+                            --  Subp_Id.
+                            Insert_Stable_Property_Check
+                              (Formal => Formal, Property_Function => SPF_Id);
+                         end if;
+                      end loop;
+                   end if;
+                end;
+             end if;
+             Next_Formal (Formal);
+          end loop;
+       end Add_Stable_Property_Contracts;
+ 
        -------------------------
        -- Append_Enabled_Item --
        -------------------------
*************** package body Contracts is
*** 1743,1798 ****
           Stmts   : List_Id;
           Result  : Entity_Id)
        is
-          procedure Insert_Before_First_Source_Declaration (Stmt : Node_Id);
-          --  Insert node Stmt before the first source declaration of the
-          --  related subprogram's body. If no such declaration exists, Stmt
-          --  becomes the last declaration.
- 
-          --------------------------------------------
-          -- Insert_Before_First_Source_Declaration --
-          --------------------------------------------
- 
-          procedure Insert_Before_First_Source_Declaration (Stmt : Node_Id) is
-             Decls : constant List_Id := Declarations (Body_Decl);
-             Decl  : Node_Id;
- 
-          begin
-             --  Inspect the declarations of the related subprogram body looking
-             --  for the first source declaration.
- 
-             if Present (Decls) then
-                Decl := First (Decls);
-                while Present (Decl) loop
-                   if Comes_From_Source (Decl) then
-                      Insert_Before (Decl, Stmt);
-                      return;
-                   end if;
- 
-                   Next (Decl);
-                end loop;
- 
-                --  If we get there, then the subprogram body lacks any source
-                --  declarations. The body of _Postconditions now acts as the
-                --  last declaration.
- 
-                Append (Stmt, Decls);
- 
-             --  Ensure that the body has a declaration list
- 
-             else
-                Set_Declarations (Body_Decl, New_List (Stmt));
-             end if;
-          end Insert_Before_First_Source_Declaration;
- 
-          --  Local variables
- 
           Loc       : constant Source_Ptr := Sloc (Body_Decl);
           Params    : List_Id := No_List;
           Proc_Bod  : Node_Id;
           Proc_Decl : Node_Id;
           Proc_Id   : Entity_Id;
           Proc_Spec : Node_Id;
  
        --  Start of processing for Build_Postconditions_Procedure
  
        begin
--- 2197,2219 ----
           Stmts   : List_Id;
           Result  : Entity_Id)
        is
           Loc       : constant Source_Ptr := Sloc (Body_Decl);
+          Last_Decl : Node_Id;
           Params    : List_Id := No_List;
           Proc_Bod  : Node_Id;
           Proc_Decl : Node_Id;
           Proc_Id   : Entity_Id;
           Proc_Spec : Node_Id;
  
+          --  Extra declarations needed to handle interactions between
+          --  postconditions and finalization.
+ 
+          Postcond_Enabled_Decl : Node_Id;
+          Return_Success_Decl   : Node_Id;
+          Result_Obj_Decl       : Node_Id;
+          Result_Obj_Type_Decl  : Node_Id;
+          Result_Obj_Type       : Entity_Id;
+ 
        --  Start of processing for Build_Postconditions_Procedure
  
        begin
*************** package body Contracts is
*** 1802,1807 ****
--- 2223,2251 ----
              return;
           end if;
  
+          --  Otherwise, we generate the postcondition procedure and add
+          --  associated objects and conditions used to coordinate postcondition
+          --  evaluation with finalization.
+ 
+          --  Generate:
+          --
+          --    procedure _postconditions (Return_Exp : Result_Typ);
+          --
+          --    --  Result_Obj_Type created when Result_Type is non-elementary
+          --    [type Result_Obj_Type is access all Result_Typ;]
+          --
+          --    Result_Obj : Result_Obj_Type;
+          --
+          --    Postcond_Enabled            : Boolean := True;
+          --    Return_Success_For_Postcond : Boolean := False;
+          --
+          --    procedure _postconditions (Return_Exp : Result_Typ) is
+          --    begin
+          --       if Postcond_Enabled and then Return_Success_For_Postcond then
+          --          [stmts];
+          --       end if;
+          --    end;
+ 
           Proc_Id := Make_Defining_Identifier (Loc, Name_uPostconditions);
           Set_Debug_Info_Needed   (Proc_Id);
           Set_Postconditions_Proc (Subp_Id, Proc_Id);
*************** package body Contracts is
*** 1839,1850 ****
           --  body. This ensures that the body will not cause any premature
           --  freezing, as it may mention types:
  
           --    procedure Proc (Obj : Array_Typ) is
           --       procedure _postconditions is
           --       begin
           --          ... Obj ...
           --       end _postconditions;
! 
           --       subtype T is Array_Typ (Obj'First (1) .. Obj'Last (1));
           --    begin
  
--- 2283,2296 ----
           --  body. This ensures that the body will not cause any premature
           --  freezing, as it may mention types:
  
+          --  Generate:
+          --
           --    procedure Proc (Obj : Array_Typ) is
           --       procedure _postconditions is
           --       begin
           --          ... Obj ...
           --       end _postconditions;
!          --
           --       subtype T is Array_Typ (Obj'First (1) .. Obj'Last (1));
           --    begin
  
*************** package body Contracts is
*** 1853,1866 ****
           --  order reference. The body of _Postconditions must be placed after
           --  the declaration of Temp to preserve correct visibility.
  
!          Insert_Before_First_Source_Declaration (Proc_Decl);
           Analyze (Proc_Decl);
  
           --  Set an explicit End_Label to override the sloc of the implicit
           --  RETURN statement, and prevent it from inheriting the sloc of one
           --  the postconditions: this would cause confusing debug info to be
           --  produced, interfering with coverage-analysis tools.
  
           Proc_Bod :=
             Make_Subprogram_Body (Loc,
               Specification              =>
--- 2299,2422 ----
           --  order reference. The body of _Postconditions must be placed after
           --  the declaration of Temp to preserve correct visibility.
  
!          Insert_Before_First_Source_Declaration
!            (Proc_Decl, Declarations (Body_Decl));
           Analyze (Proc_Decl);
+          Last_Decl := Proc_Decl;
+ 
+          --  When Result is present (e.g. the postcondition checks apply to a
+          --  function) we make a local object to capture the result, so, if
+          --  needed, we can call the generated postconditions procedure during
+          --  finalization instead of at the point of return.
+ 
+          --  Note: The placement of the following declarations before the
+          --  declaration of the body of the postconditions, but after the
+          --  declaration of the postconditions spec is deliberate and required
+          --  since other code within the expander expects them to be located
+          --  here. Perhaps when more space is available in the tree this will
+          --  no longer be necessary ???
+ 
+          if Present (Result) then
+             --  Elementary result types mean a copy is cheap and preferred over
+             --  using pointers.
+ 
+             if Is_Elementary_Type (Etype (Result)) then
+                Result_Obj_Type := Etype (Result);
+ 
+             --  Otherwise, we create a named access type to capture the result
+ 
+             --  Generate:
+             --
+             --  type Result_Obj_Type is access all [Result_Type];
+ 
+             else
+                Result_Obj_Type := Make_Temporary (Loc, 'R');
+ 
+                Result_Obj_Type_Decl :=
+                  Make_Full_Type_Declaration (Loc,
+                    Defining_Identifier => Result_Obj_Type,
+                    Type_Definition     =>
+                      Make_Access_To_Object_Definition (Loc,
+                        All_Present        => True,
+                        Subtype_Indication => New_Occurrence_Of
+                                                (Etype (Result), Loc)));
+                Insert_After_And_Analyze (Proc_Decl, Result_Obj_Type_Decl);
+                Last_Decl := Result_Obj_Type_Decl;
+             end if;
+ 
+             --  Create the result obj declaration
+ 
+             --  Generate:
+             --
+             --  Result_Object_For_Postcond : Result_Obj_Type;
+ 
+             Result_Obj_Decl :=
+               Make_Object_Declaration (Loc,
+                 Defining_Identifier =>
+                   Make_Defining_Identifier
+                     (Loc, Name_uResult_Object_For_Postcond),
+                 Object_Definition   =>
+                   New_Occurrence_Of
+                     (Result_Obj_Type, Loc));
+             Set_No_Initialization (Result_Obj_Decl);
+             Insert_After_And_Analyze (Last_Decl, Result_Obj_Decl);
+             Last_Decl := Result_Obj_Decl;
+          end if;
+ 
+          --  Build the Postcond_Enabled flag used to delay evaluation of
+          --  postconditions until finalization has been performed when cleanup
+          --  actions are present.
+ 
+          --  Generate:
+          --
+          --    Postcond_Enabled : Boolean := True;
+ 
+          Postcond_Enabled_Decl :=
+            Make_Object_Declaration (Loc,
+              Defining_Identifier =>
+                Make_Defining_Identifier
+                  (Loc, Name_uPostcond_Enabled),
+              Object_Definition   => New_Occurrence_Of (Standard_Boolean, Loc),
+              Expression          => New_Occurrence_Of (Standard_True, Loc));
+          Insert_After_And_Analyze (Last_Decl, Postcond_Enabled_Decl);
+          Last_Decl := Postcond_Enabled_Decl;
+ 
+          --  Create a flag to indicate that return has been reached
+ 
+          --  This is necessary for deciding whether to execute _postconditions
+          --  during finalization.
+ 
+          --  Generate:
+          --
+          --    Return_Success_For_Postcond : Boolean := False;
+ 
+          Return_Success_Decl :=
+            Make_Object_Declaration (Loc,
+              Defining_Identifier =>
+                Make_Defining_Identifier
+                  (Loc, Name_uReturn_Success_For_Postcond),
+              Object_Definition   => New_Occurrence_Of (Standard_Boolean, Loc),
+              Expression          => New_Occurrence_Of (Standard_False, Loc));
+          Insert_After_And_Analyze (Last_Decl, Return_Success_Decl);
+          Last_Decl := Return_Success_Decl;
  
           --  Set an explicit End_Label to override the sloc of the implicit
           --  RETURN statement, and prevent it from inheriting the sloc of one
           --  the postconditions: this would cause confusing debug info to be
           --  produced, interfering with coverage-analysis tools.
  
+          --  Also, wrap the postcondition checks in a conditional which can be
+          --  used to delay their evaluation when clean-up actions are present.
+ 
+          --  Generate:
+          --
+          --    procedure _postconditions is
+          --    begin
+          --       if Postcond_Enabled and then Return_Success_For_Postcond then
+          --          [Stmts];
+          --       end if;
+          --    end;
+ 
           Proc_Bod :=
             Make_Subprogram_Body (Loc,
               Specification              =>
*************** package body Contracts is
*** 1868,1877 ****
               Declarations               => Empty_List,
               Handled_Statement_Sequence =>
                 Make_Handled_Sequence_Of_Statements (Loc,
!                  Statements => Stmts,
!                  End_Label  => Make_Identifier (Loc, Chars (Proc_Id))));
  
-          Insert_After_And_Analyze (Proc_Decl, Proc_Bod);
        end Build_Postconditions_Procedure;
  
        ----------------------------
--- 2424,2445 ----
               Declarations               => Empty_List,
               Handled_Statement_Sequence =>
                 Make_Handled_Sequence_Of_Statements (Loc,
!                  End_Label  => Make_Identifier (Loc, Chars (Proc_Id)),
!                  Statements => New_List (
!                    Make_If_Statement (Loc,
!                      Condition      =>
!                        Make_And_Then (Loc,
!                          Left_Opnd  =>
!                            New_Occurrence_Of
!                              (Defining_Identifier
!                                (Postcond_Enabled_Decl), Loc),
!                          Right_Opnd =>
!                            New_Occurrence_Of
!                              (Defining_Identifier
!                                (Return_Success_Decl), Loc)),
!                       Then_Statements => Stmts))));
!          Insert_After_And_Analyze (Last_Decl, Proc_Bod);
  
        end Build_Postconditions_Procedure;
  
        ----------------------------
*************** package body Contracts is
*** 1894,1907 ****
              if Present (Items) then
                 Prag := Contract_Test_Cases (Items);
                 while Present (Prag) loop
!                   if Pragma_Name (Prag) = Name_Contract_Cases
!                     and then Is_Checked (Prag)
!                   then
!                      Expand_Pragma_Contract_Cases
!                        (CCs     => Prag,
!                         Subp_Id => Subp_Id,
!                         Decls   => Declarations (Body_Decl),
!                         Stmts   => Stmts);
                    end if;
  
                    Prag := Next_Pragma (Prag);
--- 2462,2481 ----
              if Present (Items) then
                 Prag := Contract_Test_Cases (Items);
                 while Present (Prag) loop
!                   if Is_Checked (Prag) then
!                      if Pragma_Name (Prag) = Name_Contract_Cases then
!                         Expand_Pragma_Contract_Cases
!                           (CCs     => Prag,
!                            Subp_Id => Subp_Id,
!                            Decls   => Declarations (Body_Decl),
!                            Stmts   => Stmts);
! 
!                      elsif Pragma_Name (Prag) = Name_Subprogram_Variant then
!                         Expand_Pragma_Subprogram_Variant
!                           (Prag       => Prag,
!                            Subp_Id    => Subp_Id,
!                            Body_Decls => Declarations (Body_Decl));
!                      end if;
                    end if;
  
                    Prag := Next_Pragma (Prag);
*************** package body Contracts is
*** 2166,2172 ****
                    --  A renamed private component is just a component of
                    --  _object, with an arbitrary name.
  
!                   elsif Ekind (Obj) = E_Variable
                      and then Nkind (Pref) = N_Identifier
                      and then Chars (Pref) = Name_uObject
                      and then Nkind (Sel) = N_Identifier
--- 2740,2746 ----
                    --  A renamed private component is just a component of
                    --  _object, with an arbitrary name.
  
!                   elsif Ekind (Obj) in E_Variable | E_Constant
                      and then Nkind (Pref) = N_Identifier
                      and then Chars (Pref) = Name_uObject
                      and then Nkind (Sel) = N_Identifier
*************** package body Contracts is
*** 2391,2399 ****
                Was_Expression_Function (Body_Decl)
                  and then Sloc (Body_Id) /= Sloc (Subp_Id)
                  and then In_Same_Source_Unit (Body_Id, Subp_Id)
!                 and then List_Containing (Body_Decl) /=
!                          List_Containing (Subp_Decl)
!                 and then not In_Instance;
  
              if Present (Items) then
                 Prag := Pre_Post_Conditions (Items);
--- 2965,2971 ----
                Was_Expression_Function (Body_Decl)
                  and then Sloc (Body_Id) /= Sloc (Subp_Id)
                  and then In_Same_Source_Unit (Body_Id, Subp_Id)
!                 and then not In_Same_List (Body_Decl, Subp_Decl);
  
              if Present (Items) then
                 Prag := Pre_Post_Conditions (Items);
*************** package body Contracts is
*** 2407,2413 ****
                          Freeze_Expr_Types
                            (Def_Id => Subp_Id,
                             Typ    => Standard_Boolean,
!                            Expr   => Expression (Corresponding_Aspect (Prag)),
                             N      => Body_Decl);
                       end if;
  
--- 2979,2987 ----
                          Freeze_Expr_Types
                            (Def_Id => Subp_Id,
                             Typ    => Standard_Boolean,
!                            Expr   =>
!                              Expression
!                                (First (Pragma_Argument_Associations (Prag))),
                             N      => Body_Decl);
                       end if;
  
*************** package body Contracts is
*** 2543,2553 ****
        if not Expander_Active then
           return;
  
-       --  ASIS requires an unaltered tree
- 
-       elsif ASIS_Mode then
-          return;
- 
        --  GNATprove does not need the executable semantics of a contract
  
        elsif GNATprove_Mode then
--- 3117,3122 ----
*************** package body Contracts is
*** 2630,2659 ****
        --  Routine _Postconditions holds all contract assertions that must be
        --  verified on exit from the related subprogram.
  
!       --  Step 1: Handle all preconditions. This action must come before the
        --  processing of pragma Contract_Cases because the pragma prepends items
        --  to the body declarations.
  
        Process_Preconditions;
  
!       --  Step 2: Handle all postconditions. This action must come before the
        --  processing of pragma Contract_Cases because the pragma appends items
        --  to list Stmts.
  
        Process_Postconditions (Stmts);
  
!       --  Step 3: Handle pragma Contract_Cases. This action must come before
        --  the processing of invariants and predicates because those append
        --  items to list Stmts.
  
        Process_Contract_Cases (Stmts);
  
!       --  Step 4: Apply invariant and predicate checks on a function result and
        --  all formals. The resulting checks are accumulated in list Stmts.
  
        Add_Invariant_And_Predicate_Checks (Subp_Id, Stmts, Result);
  
!       --  Step 5: Construct procedure _Postconditions
  
        Build_Postconditions_Procedure (Subp_Id, Stmts, Result);
  
--- 3199,3237 ----
        --  Routine _Postconditions holds all contract assertions that must be
        --  verified on exit from the related subprogram.
  
!       --  Step 1: augment contracts list with postconditions associated with
!       --  Stable_Properties and Stable_Properties'Class aspects. This must
!       --  precede Process_Postconditions.
! 
!       for Class_Present in Boolean loop
!          Add_Stable_Property_Contracts
!            (Subp_Id, Class_Present => Class_Present);
!       end loop;
! 
!       --  Step 2: Handle all preconditions. This action must come before the
        --  processing of pragma Contract_Cases because the pragma prepends items
        --  to the body declarations.
  
        Process_Preconditions;
  
!       --  Step 3: Handle all postconditions. This action must come before the
        --  processing of pragma Contract_Cases because the pragma appends items
        --  to list Stmts.
  
        Process_Postconditions (Stmts);
  
!       --  Step 4: Handle pragma Contract_Cases. This action must come before
        --  the processing of invariants and predicates because those append
        --  items to list Stmts.
  
        Process_Contract_Cases (Stmts);
  
!       --  Step 5: Apply invariant and predicate checks on a function result and
        --  all formals. The resulting checks are accumulated in list Stmts.
  
        Add_Invariant_And_Predicate_Checks (Subp_Id, Stmts, Result);
  
!       --  Step 6: Construct procedure _Postconditions
  
        Build_Postconditions_Procedure (Subp_Id, Stmts, Result);
  
*************** package body Contracts is
*** 2669,2675 ****
     procedure Freeze_Previous_Contracts (Body_Decl : Node_Id) is
        function Causes_Contract_Freezing (N : Node_Id) return Boolean;
        pragma Inline (Causes_Contract_Freezing);
!       --  Determine whether arbitrary node N causes contract freezing
  
        procedure Freeze_Contracts;
        pragma Inline (Freeze_Contracts);
--- 3247,3256 ----
     procedure Freeze_Previous_Contracts (Body_Decl : Node_Id) is
        function Causes_Contract_Freezing (N : Node_Id) return Boolean;
        pragma Inline (Causes_Contract_Freezing);
!       --  Determine whether arbitrary node N causes contract freezing. This is
!       --  used as an assertion for the current body declaration that caused
!       --  contract freezing, and as a condition to detect body declaration that
!       --  already caused contract freezing before.
  
        procedure Freeze_Contracts;
        pragma Inline (Freeze_Contracts);
*************** package body Contracts is
*** 2687,2698 ****
  
        function Causes_Contract_Freezing (N : Node_Id) return Boolean is
        begin
!          return Nkind_In (N, N_Entry_Body,
!                              N_Package_Body,
!                              N_Protected_Body,
!                              N_Subprogram_Body,
!                              N_Subprogram_Body_Stub,
!                              N_Task_Body);
        end Causes_Contract_Freezing;
  
        ----------------------
--- 3268,3284 ----
  
        function Causes_Contract_Freezing (N : Node_Id) return Boolean is
        begin
!          --  The following condition matches guards for calls to
!          --  Freeze_Previous_Contracts from routines that analyze various body
!          --  declarations. In particular, it detects expression functions, as
!          --  described in the call from Analyze_Subprogram_Body_Helper.
! 
!          return
!            Comes_From_Source (Original_Node (N))
!              and then
!            Nkind (N) in
!              N_Entry_Body      | N_Package_Body         | N_Protected_Body |
!              N_Subprogram_Body | N_Subprogram_Body_Stub | N_Task_Body;
        end Causes_Contract_Freezing;
  
        ----------------------
*************** package body Contracts is
*** 2727,2736 ****
  
              --  Entry or subprogram declarations
  
!             elsif Nkind_In (Decl, N_Abstract_Subprogram_Declaration,
!                                   N_Entry_Declaration,
!                                   N_Generic_Subprogram_Declaration,
!                                   N_Subprogram_Declaration)
              then
                 Analyze_Entry_Or_Subprogram_Contract
                   (Subp_Id   => Defining_Entity (Decl),
--- 3313,3322 ----
  
              --  Entry or subprogram declarations
  
!             elsif Nkind (Decl) in N_Abstract_Subprogram_Declaration
!                                 | N_Entry_Declaration
!                                 | N_Generic_Subprogram_Declaration
!                                 | N_Subprogram_Declaration
              then
                 Analyze_Entry_Or_Subprogram_Contract
                   (Subp_Id   => Defining_Entity (Decl),
*************** package body Contracts is
*** 2745,2752 ****
  
              --  Protected units
  
!             elsif Nkind_In (Decl, N_Protected_Type_Declaration,
!                                   N_Single_Protected_Declaration)
              then
                 Analyze_Protected_Contract (Defining_Entity (Decl));
  
--- 3331,3338 ----
  
              --  Protected units
  
!             elsif Nkind (Decl) in N_Protected_Type_Declaration
!                                 | N_Single_Protected_Declaration
              then
                 Analyze_Protected_Contract (Defining_Entity (Decl));
  
*************** package body Contracts is
*** 2757,2768 ****
  
              --  Task units
  
!             elsif Nkind_In (Decl, N_Single_Task_Declaration,
!                                   N_Task_Type_Declaration)
              then
                 Analyze_Task_Contract (Defining_Entity (Decl));
              end if;
  
              Prev (Decl);
           end loop;
        end Freeze_Contracts;
--- 3343,3363 ----
  
              --  Task units
  
!             elsif Nkind (Decl) in N_Single_Task_Declaration
!                                 | N_Task_Type_Declaration
              then
                 Analyze_Task_Contract (Defining_Entity (Decl));
              end if;
  
+             if Nkind (Decl) in N_Full_Type_Declaration
+                              | N_Private_Type_Declaration
+                              | N_Task_Type_Declaration
+                              | N_Protected_Type_Declaration
+                              | N_Formal_Type_Declaration
+             then
+                Analyze_Type_Contract (Defining_Identifier (Decl));
+             end if;
+ 
              Prev (Decl);
           end loop;
        end Freeze_Contracts;
*************** package body Contracts is
*** 2843,2848 ****
--- 3438,3518 ----
        Freeze_Contracts;
     end Freeze_Previous_Contracts;
  
+    --------------------------
+    -- Get_Postcond_Enabled --
+    --------------------------
+ 
+    function Get_Postcond_Enabled (Subp : Entity_Id) return Node_Id is
+       Decl : Node_Id;
+    begin
+       Decl :=
+         Next (Unit_Declaration_Node (Postconditions_Proc (Subp)));
+       while Present (Decl) loop
+ 
+          if Nkind (Decl) = N_Object_Declaration
+           and then Chars (Defining_Identifier (Decl))
+                      = Name_uPostcond_Enabled
+          then
+             return Defining_Identifier (Decl);
+          end if;
+ 
+          Next (Decl);
+       end loop;
+ 
+       return Empty;
+    end Get_Postcond_Enabled;
+ 
+    ------------------------------------
+    -- Get_Result_Object_For_Postcond --
+    ------------------------------------
+ 
+    function Get_Result_Object_For_Postcond
+      (Subp : Entity_Id) return Node_Id
+    is
+       Decl : Node_Id;
+    begin
+       Decl :=
+         Next (Unit_Declaration_Node (Postconditions_Proc (Subp)));
+       while Present (Decl) loop
+ 
+          if Nkind (Decl) = N_Object_Declaration
+            and then Chars (Defining_Identifier (Decl))
+                       = Name_uResult_Object_For_Postcond
+          then
+             return Defining_Identifier (Decl);
+          end if;
+ 
+          Next (Decl);
+       end loop;
+ 
+       return Empty;
+    end Get_Result_Object_For_Postcond;
+ 
+    -------------------------------------
+    -- Get_Return_Success_For_Postcond --
+    -------------------------------------
+ 
+    function Get_Return_Success_For_Postcond (Subp : Entity_Id) return Node_Id
+    is
+       Decl : Node_Id;
+    begin
+       Decl :=
+         Next (Unit_Declaration_Node (Postconditions_Proc (Subp)));
+       while Present (Decl) loop
+ 
+          if Nkind (Decl) = N_Object_Declaration
+           and then Chars (Defining_Identifier (Decl))
+                      = Name_uReturn_Success_For_Postcond
+          then
+             return Defining_Identifier (Decl);
+          end if;
+ 
+          Next (Decl);
+       end loop;
+ 
+       return Empty;
+    end Get_Return_Success_For_Postcond;
+ 
     ---------------------------------
     -- Inherit_Subprogram_Contract --
     ---------------------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/contracts.ads gcc-11.1.0/gcc/ada/contracts.ads
*** gcc-10.3.0/gcc/ada/contracts.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/contracts.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2015-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2015-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Contracts is
*** 33,40 ****
     procedure Add_Contract_Item (Prag : Node_Id; Id : Entity_Id);
     --  Add pragma Prag to the contract of a constant, entry, entry family,
     --  [generic] package, package body, protected unit, [generic] subprogram,
!    --  subprogram body, variable or task unit denoted by Id. The following are
!    --  valid pragmas:
     --
     --    Abstract_State
     --    Async_Readers
--- 33,40 ----
     procedure Add_Contract_Item (Prag : Node_Id; Id : Entity_Id);
     --  Add pragma Prag to the contract of a constant, entry, entry family,
     --  [generic] package, package body, protected unit, [generic] subprogram,
!    --  subprogram body, variable, task unit, or type denoted by Id.
!    --  The following are valid pragmas:
     --
     --    Abstract_State
     --    Async_Readers
*************** package Contracts is
*** 69,83 ****
     --  subprogram body Body_Id as if they appeared at the end of a declarative
     --  region. Pragmas in question are:
     --
!    --    Contract_Cases   (stand alone subprogram body)
!    --    Depends          (stand alone subprogram body)
!    --    Global           (stand alone subprogram body)
!    --    Postcondition    (stand alone subprogram body)
!    --    Precondition     (stand alone subprogram body)
     --    Refined_Depends
     --    Refined_Global
     --    Refined_Post
!    --    Test_Case        (stand alone subprogram body)
  
     procedure Analyze_Entry_Or_Subprogram_Contract
       (Subp_Id   : Entity_Id;
--- 69,84 ----
     --  subprogram body Body_Id as if they appeared at the end of a declarative
     --  region. Pragmas in question are:
     --
!    --    Contract_Cases     (stand alone subprogram body)
!    --    Depends            (stand alone subprogram body)
!    --    Global             (stand alone subprogram body)
!    --    Postcondition      (stand alone subprogram body)
!    --    Precondition       (stand alone subprogram body)
     --    Refined_Depends
     --    Refined_Global
     --    Refined_Post
!    --    Subprogram_Variant (stand alone subprogram body)
!    --    Test_Case          (stand alone subprogram body)
  
     procedure Analyze_Entry_Or_Subprogram_Contract
       (Subp_Id   : Entity_Id;
*************** package Contracts is
*** 91,96 ****
--- 92,98 ----
     --    Global
     --    Postcondition
     --    Precondition
+    --    Subprogram_Variant
     --    Test_Case
     --
     --  Freeze_Id is the entity of a [generic] package body or a [generic]
*************** package Contracts is
*** 114,119 ****
--- 116,134 ----
     --  Freeze_Id is the entity of a [generic] package body or a [generic]
     --  subprogram body which "freezes" the contract of Obj_Id.
  
+    procedure Analyze_Type_Contract (Type_Id : Entity_Id);
+    --  Analyze all delayed pragmas chained on the contract of object Obj_Id as
+    --  if they appeared at the end of the declarative region. The pragmas to be
+    --  considered are:
+    --
+    --    Async_Readers
+    --    Async_Writers
+    --    Effective_Reads
+    --    Effective_Writes
+    --
+    --  In the case of a protected or task type, there will also be
+    --  a call to Analyze_Protected_Contract or Analyze_Task_Contract.
+ 
     procedure Analyze_Package_Body_Contract
       (Body_Id   : Entity_Id;
        Freeze_Id : Entity_Id := Empty);
*************** package Contracts is
*** 173,178 ****
--- 188,208 ----
     --  denoted by Body_Decl. In addition, freeze the contract of the nearest
     --  enclosing package body.
  
+    function Get_Postcond_Enabled (Subp : Entity_Id) return Entity_Id;
+    --  Get the defining identifier for a subprogram's Postcond_Enabled
+    --  object created during the expansion of the subprogram's postconditions.
+ 
+    function Get_Result_Object_For_Postcond (Subp : Entity_Id) return Entity_Id;
+    --  Get the defining identifier for a subprogram's
+    --  Result_Object_For_Postcond object created during the expansion of the
+    --  subprogram's postconditions.
+ 
+    function Get_Return_Success_For_Postcond
+      (Subp : Entity_Id) return Entity_Id;
+    --  Get the defining identifier for a subprogram's
+    --  Return_Success_For_Postcond object created during the expansion of the
+    --  subprogram's postconditions.
+ 
     procedure Inherit_Subprogram_Contract
       (Subp      : Entity_Id;
        From_Subp : Entity_Id);
diff -Nrcpad gcc-10.3.0/gcc/ada/csets.adb gcc-11.1.0/gcc/ada/csets.adb
*** gcc-10.3.0/gcc/ada/csets.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/csets.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/csets.ads gcc-11.1.0/gcc/ada/csets.ads
*** gcc-10.3.0/gcc/ada/csets.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/csets.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/csinfo.adb gcc-11.1.0/gcc/ada/csinfo.adb
*** gcc-10.3.0/gcc/ada/csinfo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/csinfo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** procedure CSinfo is
*** 89,98 ****
     Flags : TV.Table (20);
     --  Maps flag numbers to letters
  
!    N_Fields : constant Pattern := BreakX ("JL");
!    E_Fields : constant Pattern := BreakX ("5EFGHIJLOP");
!    U_Fields : constant Pattern := BreakX ("1345EFGHIJKLOPQ");
!    B_Fields : constant Pattern := BreakX ("12345EFGHIJKLOPQ");
  
     Line : VString;
     Bad  : Boolean;
--- 89,98 ----
     Flags : TV.Table (20);
     --  Maps flag numbers to letters
  
!    N_Fields : constant Pattern := BreakX ("J");
!    E_Fields : constant Pattern := BreakX ("5EFGHIJOP");
!    U_Fields : constant Pattern := BreakX ("1345EFGHIJKOPQ");
!    B_Fields : constant Pattern := BreakX ("12345EFGHIJKOPQ");
  
     Line : VString;
     Bad  : Boolean;
*************** begin
*** 215,221 ****
     Set (Special, "First_Itype",                      True);
     Set (Special, "Has_Aspect_Specifications",        True);
     Set (Special, "Has_Dynamic_Itype",                True);
-    Set (Special, "Has_Dynamic_Range_Check",          True);
     Set (Special, "Has_Dynamic_Length_Check",         True);
     Set (Special, "Has_Private_View",                 True);
     Set (Special, "Is_Controlling_Actual",            True);
--- 215,220 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/cstand.adb gcc-11.1.0/gcc/ada/cstand.adb
*** gcc-10.3.0/gcc/ada/cstand.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/cstand.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Urealp;   use Urealp;
*** 48,55 ****
  
  package body CStand is
  
!    Stloc  : constant Source_Ptr := Standard_Location;
!    Staloc : constant Source_Ptr := Standard_ASCII_Location;
     --  Standard abbreviations used throughout this package
  
     Back_End_Float_Types : Elist_Id := No_Elist;
--- 48,55 ----
  
  package body CStand is
  
!    Stloc  : Source_Ptr renames Standard_Location;
!    Staloc : Source_Ptr renames Standard_ASCII_Location;
     --  Standard abbreviations used throughout this package
  
     Back_End_Float_Types : Elist_Id := No_Elist;
*************** package body CStand is
*** 85,98 ****
     --  is the size in bits. The corresponding base type is not built by
     --  this routine but instead must be built by the caller where needed.
  
!    procedure Build_Unsigned_Integer_Type
!      (Uns : Entity_Id;
!       Siz : Nat;
!       Nam : String);
     --  Procedure to build standard predefined unsigned integer subtype. These
     --  subtypes are not user visible, but they are used internally. The first
     --  parameter is the entity for the subtype. The second parameter is the
!    --  size in bits. The third parameter is an identifying name.
  
     procedure Copy_Float_Type (To : Entity_Id; From : Entity_Id);
     --  Build a floating point type, copying representation details from From.
--- 85,95 ----
     --  is the size in bits. The corresponding base type is not built by
     --  this routine but instead must be built by the caller where needed.
  
!    procedure Build_Unsigned_Integer_Type (Uns : Entity_Id; Siz : Nat);
     --  Procedure to build standard predefined unsigned integer subtype. These
     --  subtypes are not user visible, but they are used internally. The first
     --  parameter is the entity for the subtype. The second parameter is the
!    --  size in bits.
  
     procedure Copy_Float_Type (To : Entity_Id; From : Entity_Id);
     --  Build a floating point type, copying representation details from From.
*************** package body CStand is
*** 129,136 ****
     --  These are not generally valid identifier names.
  
     function Identifier_For (S : Standard_Entity_Type) return Node_Id;
!    --  Returns an identifier node with the same name as the defining
!    --  identifier corresponding to the given Standard_Entity_Type value
  
     procedure Make_Component
       (Rec : Entity_Id;
--- 126,133 ----
     --  These are not generally valid identifier names.
  
     function Identifier_For (S : Standard_Entity_Type) return Node_Id;
!    --  Returns an identifier node with the same name as the defining identifier
!    --  corresponding to the given Standard_Entity_Type value.
  
     procedure Make_Component
       (Rec : Entity_Id;
*************** package body CStand is
*** 139,155 ****
     --  Build a record component with the given type and name, and append to
     --  the list of components of Rec.
  
!    function Make_Formal
!      (Typ         : Entity_Id;
!       Formal_Name : String) return Entity_Id;
     --  Construct entity for subprogram formal with given name and type
  
     function Make_Integer (V : Uint) return Node_Id;
     --  Builds integer literal with given value
  
-    procedure Make_Name (Id : Entity_Id; Nam : String);
-    --  Make an entry in the names table for Nam, and set as Chars field of Id
- 
     function New_Operator (Op : Name_Id; Typ : Entity_Id) return Entity_Id;
     --  Build entity for standard operator with given name and type
  
--- 136,147 ----
     --  Build a record component with the given type and name, and append to
     --  the list of components of Rec.
  
!    function Make_Formal (Typ : Entity_Id; Nam : String) return Entity_Id;
     --  Construct entity for subprogram formal with given name and type
  
     function Make_Integer (V : Uint) return Node_Id;
     --  Builds integer literal with given value
  
     function New_Operator (Op : Name_Id; Typ : Entity_Id) return Entity_Id;
     --  Build entity for standard operator with given name and type
  
*************** package body CStand is
*** 157,165 ****
       (New_Node_Kind : Node_Kind := N_Defining_Identifier) return Entity_Id;
     --  Builds a new entity for Standard
  
!    function New_Standard_Entity (S : String) return Entity_Id;
     --  Builds a new entity for Standard with Nkind = N_Defining_Identifier,
!    --  and Chars of this defining identifier set to the given string S.
  
     procedure Print_Standard;
     --  Print representation of package Standard if switch set
--- 149,157 ----
       (New_Node_Kind : Node_Kind := N_Defining_Identifier) return Entity_Id;
     --  Builds a new entity for Standard
  
!    function New_Standard_Entity (Nam : String) return Entity_Id;
     --  Builds a new entity for Standard with Nkind = N_Defining_Identifier,
!    --  and Chars of this defining identifier set to the given string Nam.
  
     procedure Print_Standard;
     --  Print representation of package Standard if switch set
*************** package body CStand is
*** 268,283 ****
  
     procedure Build_Unsigned_Integer_Type
       (Uns : Entity_Id;
!       Siz : Nat;
!       Nam : String)
     is
!       Decl   : Node_Id;
!       R_Node : Node_Id;
  
     begin
-       Decl := New_Node (N_Full_Type_Declaration, Stloc);
        Set_Defining_Identifier (Decl, Uns);
-       Make_Name (Uns, Nam);
  
        Set_Ekind                      (Uns, E_Modular_Integer_Type);
        Set_Scope                      (Uns, Standard_Standard);
--- 260,272 ----
  
     procedure Build_Unsigned_Integer_Type
       (Uns : Entity_Id;
!       Siz : Nat)
     is
!       Decl   : constant Node_Id := New_Node (N_Full_Type_Declaration, Stloc);
!       R_Node : constant Node_Id := New_Node (N_Range, Stloc);
  
     begin
        Set_Defining_Identifier (Decl, Uns);
  
        Set_Ekind                      (Uns, E_Modular_Integer_Type);
        Set_Scope                      (Uns, Standard_Standard);
*************** package body CStand is
*** 289,295 ****
        Set_Size_Known_At_Compile_Time (Uns);
        Set_Is_Known_Valid             (Uns, True);
  
-       R_Node := New_Node (N_Range, Stloc);
        Set_Low_Bound  (R_Node, Make_Integer (Uint_0));
        Set_High_Bound (R_Node, Make_Integer (Modulus (Uns) - 1));
        Set_Etype (Low_Bound  (R_Node), Uns);
--- 278,283 ----
*************** package body CStand is
*** 553,572 ****
        ----------------------
  
        procedure Make_Dummy_Index (E : Entity_Id) is
!          Index : Node_Id;
!          Dummy : List_Id;
! 
!       begin
!          Index :=
             Make_Range (Sloc (E),
               Low_Bound  => Make_Integer (Uint_0),
               High_Bound => Make_Integer (Uint_2 ** Standard_Integer_Size));
-          Set_Etype (Index, Standard_Integer);
-          Set_First_Index (E, Index);
  
           --  Make sure Index is a list as required, so Next_Index is Empty
  
!          Dummy := New_List (Index);
        end Make_Dummy_Index;
  
        ----------------------
--- 541,558 ----
        ----------------------
  
        procedure Make_Dummy_Index (E : Entity_Id) is
!          Index : constant Node_Id :=
             Make_Range (Sloc (E),
               Low_Bound  => Make_Integer (Uint_0),
               High_Bound => Make_Integer (Uint_2 ** Standard_Integer_Size));
  
           --  Make sure Index is a list as required, so Next_Index is Empty
  
!          Dummy : constant List_Id := New_List (Index);
! 
!       begin
!          Set_Etype (Index, Standard_Integer);
!          Set_First_Index (E, Index);
        end Make_Dummy_Index;
  
        ----------------------
*************** package body CStand is
*** 581,586 ****
--- 567,573 ----
                 New_List (
                   Make_Pragma_Argument_Association (Stloc,
                     Expression => New_Occurrence_Of (String_Type, Stloc))));
+ 
        begin
           Append (Prag, Decl_S);
           Record_Rep_Item (String_Type, Prag);
*************** package body CStand is
*** 601,608 ****
              --  Defining identifier node
  
           begin
!             Ident_Node := New_Standard_Entity;
!             Make_Name (Ident_Node, S_Name (3 .. S_Name'Length));
              Standard_Entity (S) := Ident_Node;
           end;
        end loop;
--- 588,594 ----
              --  Defining identifier node
  
           begin
!             Ident_Node := New_Standard_Entity (S_Name (3 .. S_Name'Length));
              Standard_Entity (S) := Ident_Node;
           end;
        end loop;
*************** package body CStand is
*** 733,738 ****
--- 719,729 ----
          (Standard_Long_Long_Integer, Standard_Long_Long_Integer_Size);
        Set_Is_Implementation_Defined (Standard_Long_Long_Integer);
  
+       Build_Signed_Integer_Type
+         (Standard_Long_Long_Long_Integer,
+          Standard_Long_Long_Long_Integer_Size);
+       Set_Is_Implementation_Defined (Standard_Long_Long_Long_Integer);
+ 
        Create_Unconstrained_Base_Type
          (Standard_Short_Short_Integer, E_Signed_Integer_Subtype);
  
*************** package body CStand is
*** 748,753 ****
--- 739,747 ----
        Create_Unconstrained_Base_Type
          (Standard_Long_Long_Integer, E_Signed_Integer_Subtype);
  
+       Create_Unconstrained_Base_Type
+         (Standard_Long_Long_Long_Integer, E_Signed_Integer_Subtype);
+ 
        Create_Float_Types;
  
        --  Create type definition node for type Character. Note that we do not
*************** package body CStand is
*** 1110,1120 ****
  
        --  Create semantic phase entities
  
!       Standard_Void_Type := New_Standard_Entity;
        Set_Ekind       (Standard_Void_Type, E_Void);
        Set_Etype       (Standard_Void_Type, Standard_Void_Type);
        Set_Scope       (Standard_Void_Type, Standard_Standard);
-       Make_Name       (Standard_Void_Type, "_void_type");
  
        --  The type field of packages is set to void
  
--- 1104,1113 ----
  
        --  Create semantic phase entities
  
!       Standard_Void_Type := New_Standard_Entity ("_void_type");
        Set_Ekind       (Standard_Void_Type, E_Void);
        Set_Etype       (Standard_Void_Type, Standard_Void_Type);
        Set_Scope       (Standard_Void_Type, Standard_Standard);
  
        --  The type field of packages is set to void
  
*************** package body CStand is
*** 1124,1130 ****
        --  Standard_A_String is actually used in generated code, so it has a
        --  type name that is reasonable, but does not overlap any Ada name.
  
!       Standard_A_String := New_Standard_Entity;
        Set_Ekind      (Standard_A_String, E_Access_Type);
        Set_Scope      (Standard_A_String, Standard_Standard);
        Set_Etype      (Standard_A_String, Standard_A_String);
--- 1117,1123 ----
        --  Standard_A_String is actually used in generated code, so it has a
        --  type name that is reasonable, but does not overlap any Ada name.
  
!       Standard_A_String := New_Standard_Entity ("access_string");
        Set_Ekind      (Standard_A_String, E_Access_Type);
        Set_Scope      (Standard_A_String, Standard_Standard);
        Set_Etype      (Standard_A_String, Standard_A_String);
*************** package body CStand is
*** 1139,1147 ****
  
        Set_Directly_Designated_Type
                       (Standard_A_String, Standard_String);
-       Make_Name      (Standard_A_String, "access_string");
  
!       Standard_A_Char := New_Standard_Entity;
        Set_Ekind          (Standard_A_Char, E_Access_Type);
        Set_Scope          (Standard_A_Char, Standard_Standard);
        Set_Etype          (Standard_A_Char, Standard_A_String);
--- 1132,1139 ----
  
        Set_Directly_Designated_Type
                       (Standard_A_String, Standard_String);
  
!       Standard_A_Char := New_Standard_Entity ("access_character");
        Set_Ekind          (Standard_A_Char, E_Access_Type);
        Set_Scope          (Standard_A_Char, Standard_Standard);
        Set_Etype          (Standard_A_Char, Standard_A_String);
*************** package body CStand is
*** 1149,1162 ****
        Set_Elem_Alignment (Standard_A_Char);
  
        Set_Directly_Designated_Type (Standard_A_Char, Standard_Character);
-       Make_Name     (Standard_A_Char, "access_character");
  
        --  Standard_Debug_Renaming_Type is used for the special objects created
        --  to encode the names occurring in renaming declarations for use by the
        --  debugger (see exp_dbug.adb). The type is a zero-sized subtype of
        --  Standard.Integer.
  
!       Standard_Debug_Renaming_Type := New_Standard_Entity;
  
        Set_Ekind (Standard_Debug_Renaming_Type, E_Signed_Integer_Subtype);
        Set_Scope (Standard_Debug_Renaming_Type, Standard_Standard);
--- 1141,1153 ----
        Set_Elem_Alignment (Standard_A_Char);
  
        Set_Directly_Designated_Type (Standard_A_Char, Standard_Character);
  
        --  Standard_Debug_Renaming_Type is used for the special objects created
        --  to encode the names occurring in renaming declarations for use by the
        --  debugger (see exp_dbug.adb). The type is a zero-sized subtype of
        --  Standard.Integer.
  
!       Standard_Debug_Renaming_Type := New_Standard_Entity ("_renaming_type");
  
        Set_Ekind (Standard_Debug_Renaming_Type, E_Signed_Integer_Subtype);
        Set_Scope (Standard_Debug_Renaming_Type, Standard_Standard);
*************** package body CStand is
*** 1171,1178 ****
        Set_Is_Constrained  (Standard_Debug_Renaming_Type);
        Set_Has_Size_Clause (Standard_Debug_Renaming_Type);
  
-       Make_Name           (Standard_Debug_Renaming_Type, "_renaming_type");
- 
        --  Note on type names. The type names for the following special types
        --  are constructed so that they will look reasonable should they ever
        --  appear in error messages etc, although in practice the use of the
--- 1162,1167 ----
*************** package body CStand is
*** 1257,1267 ****
        Set_Elem_Alignment    (Any_Fixed);
  
        Any_Integer := New_Standard_Entity ("an integer type");
!       Set_Ekind             (Any_Integer, E_Signed_Integer_Type);
!       Set_Scope             (Any_Integer, Standard_Standard);
!       Set_Etype             (Any_Integer, Standard_Long_Long_Integer);
!       Init_Size             (Any_Integer, Standard_Long_Long_Integer_Size);
!       Set_Elem_Alignment    (Any_Integer);
  
        Set_Integer_Bounds
          (Any_Integer,
--- 1246,1256 ----
        Set_Elem_Alignment    (Any_Fixed);
  
        Any_Integer := New_Standard_Entity ("an integer type");
!       Set_Ekind            (Any_Integer, E_Signed_Integer_Type);
!       Set_Scope            (Any_Integer, Standard_Standard);
!       Set_Etype            (Any_Integer, Standard_Long_Long_Long_Integer);
!       Init_Size            (Any_Integer, Standard_Long_Long_Long_Integer_Size);
!       Set_Elem_Alignment   (Any_Integer);
  
        Set_Integer_Bounds
          (Any_Integer,
*************** package body CStand is
*** 1270,1288 ****
           Hb  => Intval (High_Bound (Scalar_Range (Standard_Integer))));
  
        Any_Modular := New_Standard_Entity ("a modular type");
!       Set_Ekind             (Any_Modular, E_Modular_Integer_Type);
!       Set_Scope             (Any_Modular, Standard_Standard);
!       Set_Etype             (Any_Modular, Standard_Long_Long_Integer);
!       Init_Size             (Any_Modular, Standard_Long_Long_Integer_Size);
!       Set_Elem_Alignment    (Any_Modular);
!       Set_Is_Unsigned_Type  (Any_Modular);
  
        Any_Numeric := New_Standard_Entity ("a numeric type");
!       Set_Ekind             (Any_Numeric, E_Signed_Integer_Type);
!       Set_Scope             (Any_Numeric, Standard_Standard);
!       Set_Etype             (Any_Numeric, Standard_Long_Long_Integer);
!       Init_Size             (Any_Numeric, Standard_Long_Long_Integer_Size);
!       Set_Elem_Alignment    (Any_Numeric);
  
        Any_Real := New_Standard_Entity ("a real type");
        Set_Ekind             (Any_Real, E_Floating_Point_Type);
--- 1259,1277 ----
           Hb  => Intval (High_Bound (Scalar_Range (Standard_Integer))));
  
        Any_Modular := New_Standard_Entity ("a modular type");
!       Set_Ekind            (Any_Modular, E_Modular_Integer_Type);
!       Set_Scope            (Any_Modular, Standard_Standard);
!       Set_Etype            (Any_Modular, Standard_Long_Long_Long_Integer);
!       Init_Size            (Any_Modular, Standard_Long_Long_Long_Integer_Size);
!       Set_Elem_Alignment   (Any_Modular);
!       Set_Is_Unsigned_Type (Any_Modular);
  
        Any_Numeric := New_Standard_Entity ("a numeric type");
!       Set_Ekind            (Any_Numeric, E_Signed_Integer_Type);
!       Set_Scope            (Any_Numeric, Standard_Standard);
!       Set_Etype            (Any_Numeric, Standard_Long_Long_Long_Integer);
!       Init_Size            (Any_Numeric, Standard_Long_Long_Long_Integer_Size);
!       Set_Elem_Alignment   (Any_Numeric);
  
        Any_Real := New_Standard_Entity ("a real type");
        Set_Ekind             (Any_Real, E_Floating_Point_Type);
*************** package body CStand is
*** 1337,1410 ****
        Set_Scope (Standard_Integer_64, Standard_Standard);
        Build_Signed_Integer_Type (Standard_Integer_64, 64);
  
        --  Standard_*_Unsigned subtypes are not user visible, but they are
        --  used internally. They are unsigned types with the same length as
        --  the correspondingly named signed integer types.
  
!       Standard_Short_Short_Unsigned := New_Standard_Entity;
        Build_Unsigned_Integer_Type
!         (Standard_Short_Short_Unsigned,
!          Standard_Short_Short_Integer_Size,
!          "short_short_unsigned");
  
!       Standard_Short_Unsigned := New_Standard_Entity;
        Build_Unsigned_Integer_Type
!         (Standard_Short_Unsigned,
!          Standard_Short_Integer_Size,
!          "short_unsigned");
  
!       Standard_Unsigned := New_Standard_Entity;
        Build_Unsigned_Integer_Type
!         (Standard_Unsigned,
!          Standard_Integer_Size,
!          "unsigned");
  
!       Standard_Long_Unsigned := New_Standard_Entity;
        Build_Unsigned_Integer_Type
!         (Standard_Long_Unsigned,
!          Standard_Long_Integer_Size,
!          "long_unsigned");
  
!       Standard_Long_Long_Unsigned := New_Standard_Entity;
        Build_Unsigned_Integer_Type
!         (Standard_Long_Long_Unsigned,
!          Standard_Long_Long_Integer_Size,
!          "long_long_unsigned");
  
        --  Standard_Unsigned_64 is not user visible, but is used internally. It
!       --  is an unsigned type mod 2**64, 64-bits unsigned, size is 64.
  
!       Standard_Unsigned_64 := New_Standard_Entity;
!       Build_Unsigned_Integer_Type (Standard_Unsigned_64, 64, "unsigned_64");
  
        --  Note: universal integer and universal real are constructed as fully
        --  formed signed numeric types, with parameters corresponding to the
!       --  longest runtime types (Long_Long_Integer and Long_Long_Float). This
!       --  allows Gigi to properly process references to universal types that
!       --  are not folded at compile time.
  
!       Universal_Integer := New_Standard_Entity;
        Decl := New_Node (N_Full_Type_Declaration, Stloc);
        Set_Defining_Identifier (Decl, Universal_Integer);
-       Make_Name (Universal_Integer, "universal_integer");
        Set_Scope (Universal_Integer, Standard_Standard);
        Build_Signed_Integer_Type
!         (Universal_Integer, Standard_Long_Long_Integer_Size);
  
!       Universal_Real := New_Standard_Entity;
        Decl := New_Node (N_Full_Type_Declaration, Stloc);
        Set_Defining_Identifier (Decl, Universal_Real);
-       Make_Name (Universal_Real, "universal_real");
        Set_Scope (Universal_Real, Standard_Standard);
        Copy_Float_Type (Universal_Real, Standard_Long_Long_Float);
  
        --  Note: universal fixed, unlike universal integer and universal real,
        --  is never used at runtime, so it does not need to have bounds set.
  
!       Universal_Fixed := New_Standard_Entity;
        Decl := New_Node (N_Full_Type_Declaration, Stloc);
        Set_Defining_Identifier (Decl, Universal_Fixed);
-       Make_Name            (Universal_Fixed, "universal_fixed");
        Set_Ekind            (Universal_Fixed, E_Ordinary_Fixed_Point_Type);
        Set_Etype            (Universal_Fixed, Universal_Fixed);
        Set_Scope            (Universal_Fixed, Standard_Standard);
--- 1326,1406 ----
        Set_Scope (Standard_Integer_64, Standard_Standard);
        Build_Signed_Integer_Type (Standard_Integer_64, 64);
  
+       Standard_Integer_128 := New_Standard_Entity ("integer_128");
+       Decl := New_Node (N_Full_Type_Declaration, Stloc);
+       Set_Defining_Identifier (Decl, Standard_Integer_128);
+       Set_Scope (Standard_Integer_128, Standard_Standard);
+       Build_Signed_Integer_Type (Standard_Integer_128, 128);
+ 
        --  Standard_*_Unsigned subtypes are not user visible, but they are
        --  used internally. They are unsigned types with the same length as
        --  the correspondingly named signed integer types.
  
!       Standard_Short_Short_Unsigned
!         := New_Standard_Entity ("short_short_unsigned");
        Build_Unsigned_Integer_Type
!         (Standard_Short_Short_Unsigned, Standard_Short_Short_Integer_Size);
  
!       Standard_Short_Unsigned := New_Standard_Entity ("short_unsigned");
        Build_Unsigned_Integer_Type
!         (Standard_Short_Unsigned, Standard_Short_Integer_Size);
  
!       Standard_Unsigned := New_Standard_Entity ("unsigned");
        Build_Unsigned_Integer_Type
!         (Standard_Unsigned, Standard_Integer_Size);
  
!       Standard_Long_Unsigned := New_Standard_Entity ("long_unsigned");
        Build_Unsigned_Integer_Type
!         (Standard_Long_Unsigned, Standard_Long_Integer_Size);
  
!       Standard_Long_Long_Unsigned :=
!         New_Standard_Entity ("long_long_unsigned");
        Build_Unsigned_Integer_Type
!         (Standard_Long_Long_Unsigned, Standard_Long_Long_Integer_Size);
! 
!       Standard_Long_Long_Long_Unsigned :=
!         New_Standard_Entity ("long_long_long_unsigned");
!       Build_Unsigned_Integer_Type
!         (Standard_Long_Long_Long_Unsigned,
!          Standard_Long_Long_Long_Integer_Size);
  
        --  Standard_Unsigned_64 is not user visible, but is used internally. It
!       --  is an unsigned type mod 2**64 with 64 bits size.
  
!       Standard_Unsigned_64 := New_Standard_Entity ("unsigned_64");
!       Build_Unsigned_Integer_Type (Standard_Unsigned_64, 64);
! 
!       --  Standard_Address is not user visible, but is used internally. It is
!       --  an unsigned type mod 2**System_Address_Size with System.Address size.
! 
!       Standard_Address := New_Standard_Entity ("standard_address");
!       Build_Unsigned_Integer_Type (Standard_Address, System_Address_Size);
  
        --  Note: universal integer and universal real are constructed as fully
        --  formed signed numeric types, with parameters corresponding to the
!       --  longest runtime types (Long_Long_Long_Integer and Long_Long_Float).
!       --  This allows Gigi to properly process references to universal types
!       --  that are not folded at compile time.
  
!       Universal_Integer := New_Standard_Entity ("universal_integer");
        Decl := New_Node (N_Full_Type_Declaration, Stloc);
        Set_Defining_Identifier (Decl, Universal_Integer);
        Set_Scope (Universal_Integer, Standard_Standard);
        Build_Signed_Integer_Type
!         (Universal_Integer, Standard_Long_Long_Long_Integer_Size);
  
!       Universal_Real := New_Standard_Entity ("universal_real");
        Decl := New_Node (N_Full_Type_Declaration, Stloc);
        Set_Defining_Identifier (Decl, Universal_Real);
        Set_Scope (Universal_Real, Standard_Standard);
        Copy_Float_Type (Universal_Real, Standard_Long_Long_Float);
  
        --  Note: universal fixed, unlike universal integer and universal real,
        --  is never used at runtime, so it does not need to have bounds set.
  
!       Universal_Fixed := New_Standard_Entity ("universal_fixed");
        Decl := New_Node (N_Full_Type_Declaration, Stloc);
        Set_Defining_Identifier (Decl, Universal_Fixed);
        Set_Ekind            (Universal_Fixed, E_Ordinary_Fixed_Point_Type);
        Set_Etype            (Universal_Fixed, Universal_Fixed);
        Set_Scope            (Universal_Fixed, Standard_Standard);
*************** package body CStand is
*** 1495,1501 ****
        --  known by the run-time. Components of the record are documented in
        --  the declaration in System.Standard_Library.
  
!       Standard_Exception_Type := New_Standard_Entity;
        Set_Ekind       (Standard_Exception_Type, E_Record_Type);
        Set_Etype       (Standard_Exception_Type, Standard_Exception_Type);
        Set_Scope       (Standard_Exception_Type, Standard_Standard);
--- 1491,1497 ----
        --  known by the run-time. Components of the record are documented in
        --  the declaration in System.Standard_Library.
  
!       Standard_Exception_Type := New_Standard_Entity ("exception");
        Set_Ekind       (Standard_Exception_Type, E_Record_Type);
        Set_Etype       (Standard_Exception_Type, Standard_Exception_Type);
        Set_Scope       (Standard_Exception_Type, Standard_Standard);
*************** package body CStand is
*** 1504,1510 ****
        Init_Size_Align (Standard_Exception_Type);
        Set_Size_Known_At_Compile_Time
                        (Standard_Exception_Type, True);
-       Make_Name       (Standard_Exception_Type, "exception");
  
        Make_Component
          (Standard_Exception_Type, Standard_Boolean,   "Not_Handled_By_Others");
--- 1500,1505 ----
*************** package body CStand is
*** 1566,1572 ****
        Build_Exception (S_Tasking_Error);
  
        --  Numeric_Error is a normal exception in Ada 83, but in Ada 95
!       --  it is a renaming of Constraint_Error. Is this test too early???
  
        if Ada_Version = Ada_83 then
           Build_Exception (S_Numeric_Error);
--- 1561,1569 ----
        Build_Exception (S_Tasking_Error);
  
        --  Numeric_Error is a normal exception in Ada 83, but in Ada 95
!       --  it is a renaming of Constraint_Error. This test is too early since
!       --  it doesn't handle pragma Ada_83. But it's not worth the trouble of
!       --  fixing this.
  
        if Ada_Version = Ada_83 then
           Build_Exception (S_Numeric_Error);
*************** package body CStand is
*** 1694,1700 ****
           Set_Etype (Low_Bound  (Scalar_Range (E)), New_Ent);
           Set_Etype (High_Bound (Scalar_Range (E)), New_Ent);
        end if;
- 
     end Create_Unconstrained_Base_Type;
  
     --------------------
--- 1691,1696 ----
*************** package body CStand is
*** 1702,1712 ****
     --------------------
  
     function Identifier_For (S : Standard_Entity_Type) return Node_Id is
!       Ident_Node : Node_Id;
     begin
-       Ident_Node := New_Node (N_Identifier, Stloc);
        Set_Chars (Ident_Node, Chars (Standard_Entity (S)));
        Set_Entity (Ident_Node, Standard_Entity (S));
        return Ident_Node;
     end Identifier_For;
  
--- 1698,1709 ----
     --------------------
  
     function Identifier_For (S : Standard_Entity_Type) return Node_Id is
!       Ident_Node : constant Node_Id := New_Node (N_Identifier, Stloc);
! 
     begin
        Set_Chars (Ident_Node, Chars (Standard_Entity (S)));
        Set_Entity (Ident_Node, Standard_Entity (S));
+ 
        return Ident_Node;
     end Identifier_For;
  
*************** package body CStand is
*** 1719,1734 ****
        Typ : Entity_Id;
        Nam : String)
     is
!       Id : constant Entity_Id := New_Standard_Entity;
  
     begin
!       Set_Ekind                 (Id, E_Component);
!       Set_Etype                 (Id, Typ);
!       Set_Scope                 (Id, Rec);
!       Init_Component_Location   (Id);
! 
        Set_Original_Record_Component (Id, Id);
-       Make_Name (Id, Nam);
        Append_Entity (Id, Rec);
     end Make_Component;
  
--- 1716,1729 ----
        Typ : Entity_Id;
        Nam : String)
     is
!       Id : constant Entity_Id := New_Standard_Entity (Nam);
  
     begin
!       Set_Ekind                     (Id, E_Component);
!       Set_Etype                     (Id, Typ);
!       Set_Scope                     (Id, Rec);
!       Init_Component_Location       (Id);
        Set_Original_Record_Component (Id, Id);
        Append_Entity (Id, Rec);
     end Make_Component;
  
*************** package body CStand is
*** 1736,1755 ****
     -- Make_Formal --
     -----------------
  
!    function Make_Formal
!      (Typ         : Entity_Id;
!       Formal_Name : String) return Entity_Id
!    is
!       Formal : Entity_Id;
  
     begin
-       Formal := New_Standard_Entity;
- 
        Set_Ekind     (Formal, E_In_Parameter);
        Set_Mechanism (Formal, Default_Mechanism);
        Set_Scope     (Formal, Standard_Standard);
        Set_Etype     (Formal, Typ);
-       Make_Name     (Formal, Formal_Name);
  
        return Formal;
     end Make_Formal;
--- 1731,1744 ----
     -- Make_Formal --
     -----------------
  
!    function Make_Formal (Typ : Entity_Id; Nam : String) return Entity_Id is
!       Formal : constant Entity_Id := New_Standard_Entity (Nam);
  
     begin
        Set_Ekind     (Formal, E_In_Parameter);
        Set_Mechanism (Formal, Default_Mechanism);
        Set_Scope     (Formal, Standard_Standard);
        Set_Etype     (Formal, Typ);
  
        return Formal;
     end Make_Formal;
*************** package body CStand is
*** 1760,1794 ****
  
     function Make_Integer (V : Uint) return Node_Id is
        N : constant Node_Id := Make_Integer_Literal (Stloc, V);
     begin
        Set_Is_Static_Expression (N);
        return N;
     end Make_Integer;
  
-    ---------------
-    -- Make_Name --
-    ---------------
- 
-    procedure Make_Name (Id : Entity_Id; Nam : String) is
-    begin
-       for J in 1 .. Nam'Length loop
-          Name_Buffer (J) := Fold_Lower (Nam (Nam'First + (J - 1)));
-       end loop;
- 
-       Name_Len := Nam'Length;
-       Set_Chars (Id, Name_Find);
-    end Make_Name;
- 
     ------------------
     -- New_Operator --
     ------------------
  
     function New_Operator (Op : Name_Id; Typ : Entity_Id) return Entity_Id is
!       Ident_Node : Entity_Id;
  
     begin
-       Ident_Node := Make_Defining_Identifier (Stloc, Op);
- 
        Set_Is_Pure    (Ident_Node, True);
        Set_Ekind      (Ident_Node, E_Operator);
        Set_Etype      (Ident_Node, Typ);
--- 1749,1769 ----
  
     function Make_Integer (V : Uint) return Node_Id is
        N : constant Node_Id := Make_Integer_Literal (Stloc, V);
+ 
     begin
        Set_Is_Static_Expression (N);
+ 
        return N;
     end Make_Integer;
  
     ------------------
     -- New_Operator --
     ------------------
  
     function New_Operator (Op : Name_Id; Typ : Entity_Id) return Entity_Id is
!       Ident_Node : constant Entity_Id := Make_Defining_Identifier (Stloc, Op);
  
     begin
        Set_Is_Pure    (Ident_Node, True);
        Set_Ekind      (Ident_Node, E_Operator);
        Set_Etype      (Ident_Node, Typ);
*************** package body CStand is
*** 1796,1806 ****
        Set_Homonym    (Ident_Node, Get_Name_Entity_Id (Op));
        Set_Convention (Ident_Node, Convention_Intrinsic);
  
!       Set_Is_Immediately_Visible   (Ident_Node, True);
!       Set_Is_Intrinsic_Subprogram  (Ident_Node, True);
  
        Set_Name_Entity_Id (Op, Ident_Node);
        Append_Entity (Ident_Node, Standard_Standard);
        return Ident_Node;
     end New_Operator;
  
--- 1771,1782 ----
        Set_Homonym    (Ident_Node, Get_Name_Entity_Id (Op));
        Set_Convention (Ident_Node, Convention_Intrinsic);
  
!       Set_Is_Immediately_Visible  (Ident_Node, True);
!       Set_Is_Intrinsic_Subprogram (Ident_Node, True);
  
        Set_Name_Entity_Id (Op, Ident_Node);
        Append_Entity (Ident_Node, Standard_Standard);
+ 
        return Ident_Node;
     end New_Operator;
  
*************** package body CStand is
*** 1838,1847 ****
        return E;
     end New_Standard_Entity;
  
!    function New_Standard_Entity (S : String) return Entity_Id is
        Ent : constant Entity_Id := New_Standard_Entity;
     begin
!       Make_Name (Ent, S);
        return Ent;
     end New_Standard_Entity;
  
--- 1814,1830 ----
        return E;
     end New_Standard_Entity;
  
!    function New_Standard_Entity (Nam : String) return Entity_Id is
        Ent : constant Entity_Id := New_Standard_Entity;
+ 
     begin
!       for J in 1 .. Nam'Length loop
!          Name_Buffer (J) := Fold_Lower (Nam (Nam'First + (J - 1)));
!       end loop;
! 
!       Name_Len := Nam'Length;
!       Set_Chars (Ent, Name_Find);
! 
        return Ent;
     end New_Standard_Entity;
  
*************** package body CStand is
*** 1992,1997 ****
--- 1975,1987 ----
        P (";");
        Write_Eol;
  
+       Write_Str ("   type Long_Long_Long_Integer");
+       P_Int_Range (Standard_Long_Long_Long_Integer_Size);
+       Write_Str ("   for Long_Long_Long_Integer'Size use ");
+       Write_Int (Standard_Long_Long_Long_Integer_Size);
+       P (";");
+       Write_Eol;
+ 
        --  Floating point types
  
        P_Float_Type (Standard_Short_Float);
*************** package body CStand is
*** 2076,2095 ****
        pragma Unreferenced (Precision);
        --  See Build_Float_Type for the rationale
  
!       Ent : constant Entity_Id := New_Standard_Entity;
  
     begin
        Set_Defining_Identifier (New_Node (N_Full_Type_Declaration, Stloc), Ent);
-       Make_Name (Ent, Name);
        Set_Scope (Ent, Standard_Standard);
        Build_Float_Type
          (Ent, Pos (Digs), Float_Rep, Int (Size), Int (Alignment / 8));
  
!       if No (Back_End_Float_Types) then
!          Back_End_Float_Types := New_Elmt_List;
!       end if;
! 
!       Append_Elmt (Ent, Back_End_Float_Types);
     end Register_Float_Type;
  
     ----------------------
--- 2066,2080 ----
        pragma Unreferenced (Precision);
        --  See Build_Float_Type for the rationale
  
!       Ent : constant Entity_Id := New_Standard_Entity (Name);
  
     begin
        Set_Defining_Identifier (New_Node (N_Full_Type_Declaration, Stloc), Ent);
        Set_Scope (Ent, Standard_Standard);
        Build_Float_Type
          (Ent, Pos (Digs), Float_Rep, Int (Size), Int (Alignment / 8));
  
!       Append_New_Elmt (Ent, Back_End_Float_Types);
     end Register_Float_Type;
  
     ----------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/cstand.ads gcc-11.1.0/gcc/ada/cstand.ads
*** gcc-10.3.0/gcc/ada/cstand.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/cstand.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/cstreams.c gcc-11.1.0/gcc/ada/cstreams.c
*** gcc-10.3.0/gcc/ada/cstreams.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/cstreams.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *              Auxiliary C functions for Interfaces.C.Streams              *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *              Auxiliary C functions for Interfaces.C.Streams              *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 37,42 ****
--- 37,47 ----
  #define _FILE_OFFSET_BITS 64
  /* the define above will make off_t a 64bit type on GNU/Linux */
  
+ /* Tell Cygwin's <stdio.h> to expose fileno_unlocked() */
+ #if defined(__CYGWIN__) && !defined(__CYGWIN32__) && !defined(_GNU_SOURCE)
+ #define _GNU_SOURCE
+ #endif
+ 
  #include <stdio.h>
  #include <sys/types.h>
  #include <sys/stat.h>
diff -Nrcpad gcc-10.3.0/gcc/ada/ctrl_c.c gcc-11.1.0/gcc/ada/ctrl_c.c
*** gcc-10.3.0/gcc/ada/ctrl_c.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/ctrl_c.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *        Copyright (C) 2002-2019, Free Software Foundation, Inc.           *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *        Copyright (C) 2002-2020, Free Software Foundation, Inc.           *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/debug.adb gcc-11.1.0/gcc/ada/debug.adb
*** gcc-10.3.0/gcc/ada/debug.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/debug.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package body Debug is
*** 69,75 ****
     --  dC   Output debugging information on check suppression
     --  dD   Delete elaboration checks in inner level routines
     --  dE   Apply elaboration checks to predefined units
!    --  dF   Perform the new SPARK checking rules for pointer aliasing
     --  dG   Generate all warnings including those normally suppressed
     --  dH   Hold (kill) call to gigi
     --  dI   Inhibit internal name numbering in gnatG listing
--- 63,69 ----
     --  dC   Output debugging information on check suppression
     --  dD   Delete elaboration checks in inner level routines
     --  dE   Apply elaboration checks to predefined units
!    --  dF   Alternative display for messages over multiple lines
     --  dG   Generate all warnings including those normally suppressed
     --  dH   Hold (kill) call to gigi
     --  dI   Inhibit internal name numbering in gnatG listing
*************** package body Debug is
*** 80,86 ****
     --  dN   No file name information in exception messages
     --  dO   Output immediate error messages
     --  dP   Do not check for controlled objects in preelaborable packages
!    --  dQ   Use old secondary stack method
     --  dR   Bypass check for correct version of s-rpc
     --  dS   Never convert numbers to machine numbers in Sem_Eval
     --  dT   Convert to machine numbers only for constant declarations
--- 74,80 ----
     --  dN   No file name information in exception messages
     --  dO   Output immediate error messages
     --  dP   Do not check for controlled objects in preelaborable packages
!    --  dQ
     --  dR   Bypass check for correct version of s-rpc
     --  dS   Never convert numbers to machine numbers in Sem_Eval
     --  dT   Convert to machine numbers only for constant declarations
*************** package body Debug is
*** 118,134 ****
     --  d.y  Disable implicit pragma Elaborate_All on task bodies
     --  d.z  Restore previous support for frontend handling of Inline_Always
  
!    --  d.A  Read/write Aspect_Specifications hash table to tree
     --  d.B  Generate a bug box on abort_statement
     --  d.C  Generate concatenation call, do not generate inline code
     --  d.D  Disable errors on use of overriding keyword in Ada 95 mode
     --  d.E  Turn selected errors into warnings
     --  d.F  Debug mode for GNATprove
     --  d.G  Ignore calls through generic formal parameters for elaboration
!    --  d.H  GNSA mode for ASIS
     --  d.I  Do not ignore enum representation clauses in CodePeer mode
     --  d.J  Relaxed rules for pragma No_Return
!    --  d.K
     --  d.L  Depend on back end for limited types in if and case expressions
     --  d.M  Relaxed RM semantics
     --  d.N  Add node to all entities
--- 112,128 ----
     --  d.y  Disable implicit pragma Elaborate_All on task bodies
     --  d.z  Restore previous support for frontend handling of Inline_Always
  
!    --  d.A  Print Atree statistics
     --  d.B  Generate a bug box on abort_statement
     --  d.C  Generate concatenation call, do not generate inline code
     --  d.D  Disable errors on use of overriding keyword in Ada 95 mode
     --  d.E  Turn selected errors into warnings
     --  d.F  Debug mode for GNATprove
     --  d.G  Ignore calls through generic formal parameters for elaboration
!    --  d.H  Disable the support for 128-bit integer types on 64-bit platforms
     --  d.I  Do not ignore enum representation clauses in CodePeer mode
     --  d.J  Relaxed rules for pragma No_Return
!    --  d.K  Do not reject components in extensions overlapping with parent
     --  d.L  Depend on back end for limited types in if and case expressions
     --  d.M  Relaxed RM semantics
     --  d.N  Add node to all entities
*************** package body Debug is
*** 147,153 ****
  
     --  d_a  Stop elaboration checks on accept or select statement
     --  d_b
!    --  d_c
     --  d_d
     --  d_e  Ignore entry calls and requeue statements for elaboration
     --  d_f  Issue info messages related to GNATprove usage
--- 141,147 ----
  
     --  d_a  Stop elaboration checks on accept or select statement
     --  d_b
!    --  d_c  CUDA compilation : compile for the host
     --  d_d
     --  d_e  Ignore entry calls and requeue statements for elaboration
     --  d_f  Issue info messages related to GNATprove usage
*************** package body Debug is
*** 170,179 ****
     --  d_w
     --  d_x
     --  d_y
!    --  d_z
  
     --  d_A  Stop generation of ALI file
!    --  d_B
     --  d_C
     --  d_D
     --  d_E
--- 164,173 ----
     --  d_w
     --  d_x
     --  d_y
!    --  d_z  Enable Put_Image on tagged types
  
     --  d_A  Stop generation of ALI file
!    --  d_B  Warn on build-in-place function calls
     --  d_C
     --  d_D
     --  d_E
*************** package body Debug is
*** 193,199 ****
     --  d_S
     --  d_T  Output trace information on invocation path recording
     --  d_U
!    --  d_V
     --  d_W
     --  d_X
     --  d_Y
--- 187,193 ----
     --  d_S
     --  d_T  Output trace information on invocation path recording
     --  d_U
!    --  d_V  Enable verifications on the expanded tree
     --  d_W
     --  d_X
     --  d_Y
*************** package body Debug is
*** 602,613 ****
     --  dE   Apply compile time elaboration checking for with relations between
     --       predefined units. Normally no checks are made.
  
-    --  dF   Disable the new SPARK checking rules for pointer aliasing. This is
-    --       only activated as part of GNATprove mode and on SPARK code. Now
-    --       that pointer support is part of the official SPARK language, this
-    --       switch allows reverting to the previous version of GNATprove
-    --       rejecting pointers.
- 
     --  dG   Generate all warnings. Normally Errout suppresses warnings on
     --       units that are not part of the main extended source, and also
     --       suppresses warnings on instantiations in the main extended
--- 596,601 ----
*************** package body Debug is
*** 655,665 ****
     --       in preelaborable packages, but this restriction is a huge pain,
     --       especially in the predefined library units.
  
-    --  dQ   Use old method for determining what goes on the secondary stack.
-    --       This disables some newer optimizations. The intent is to use this
-    --       temporarily to measure before/after efficiency. ???Remove this
-    --       when we are done (see Sem_Util.Requires_Transient_Scope).
- 
     --  dR   Bypass the check for a proper version of s-rpc being present
     --       to use the -gnatz? switch. This allows debugging of the use
     --       of stubs generation without needing to have GLADE (or some
--- 643,648 ----
*************** package body Debug is
*** 847,856 ****
     --       handling of Inline_Always by the front end on such targets. For the
     --       targets that do not use the GCC back end, this switch is ignored.
  
!    --  d.A  There seems to be a problem with ASIS if we activate the circuit
!    --       for reading and writing the aspect specification hash table, so
!    --       for now, this is controlled by the debug flag d.A. The hash table
!    --       is only written and read if this flag is set.
  
     --  d.B  Generate a bug box when we see an abort_statement, even though
     --       there is no bug. Useful for testing Comperr.Compiler_Abort: write
--- 830,836 ----
     --       handling of Inline_Always by the front end on such targets. For the
     --       targets that do not use the GCC back end, this switch is ignored.
  
!    --  d.A  Print Atree statistics
  
     --  d.B  Generate a bug box when we see an abort_statement, even though
     --       there is no bug. Useful for testing Comperr.Compiler_Abort: write
*************** package body Debug is
*** 892,899 ****
     --       now fixed, but we provide this debug flag to revert to the previous
     --       situation of ignoring such calls to aid in transition.
  
!    --  d.H  Sets ASIS_GNSA_Mode to True. This signals the front end to suppress
!    --       the call to gigi in ASIS_Mode.
  
     --  d.I  Do not ignore enum representation clauses in CodePeer mode.
     --       The default of ignoring representation clauses for enumeration
--- 872,880 ----
     --       now fixed, but we provide this debug flag to revert to the previous
     --       situation of ignoring such calls to aid in transition.
  
!    --  d.H  Disable the support for 128-bit integer types on 64-bit platforms.
!    --       This makes it easier to mimic the behavior of the current compiler
!    --       on 32-bit platforms or of older compilers on 64-bit platforms.
  
     --  d.I  Do not ignore enum representation clauses in CodePeer mode.
     --       The default of ignoring representation clauses for enumeration
*************** package body Debug is
*** 906,911 ****
--- 887,897 ----
     --       for that. If the procedure does in fact return normally, execution
     --       is erroneous, and therefore unpredictable.
  
+    --  d.K  Do not reject components in extensions overlapping with the parent
+    --       component. Such components can be specified by means of a component
+    --       clause but they cannot be fully supported by the GCC type system.
+    --       This switch nevertheless allows them for the sake of compatibility.
+ 
     --  d.L  Normally the front end generates special expansion for conditional
     --       expressions of a limited type. This debug flag removes this special
     --       case expansion, leaving it up to the back end to handle conditional
*************** package body Debug is
*** 1001,1008 ****
--- 987,1001 ----
     --       a call to routine Ada.Synchronous_Task_Control.Suspend_Until_True
     --       or Ada.Synchronous_Barriers.Wait_For_Release.
  
+    --  d_z  Enable the default Put_Image on tagged types that are not
+    --       predefined.
+ 
     --  d_A  Do not generate ALI files by setting Opt.Disable_ALI_File.
  
+    --  d_B  Warn on build-in-place function calls. This allows users to
+    --       inspect their code in case it triggers compiler bugs related
+    --       to build-in-place calls. See known-problem entries for details.
+ 
     --  d_F  The compiler encodes the full path from an invocation construct to
     --       an external target, offering additional information to GNATBIND for
     --       purposes of error diagnostics.
*************** package body Debug is
*** 1015,1023 ****
     --       it is checked, and the progress of the recursive trace through
     --       elaboration calls at compile time.
  
!    --  d_T  The compiler outputs trance information to standard output whenever
     --       an invocation path is recorded.
  
     --  d1   Error messages have node numbers where possible. Normally error
     --       messages have only source locations. This option is useful when
     --       debugging errors caused by expanded code, where the source location
--- 1008,1019 ----
     --       it is checked, and the progress of the recursive trace through
     --       elaboration calls at compile time.
  
!    --  d_T  The compiler outputs trace information to standard output whenever
     --       an invocation path is recorded.
  
+    --  d_V  Enable verification of the expanded code before calling the backend
+    --       and generate error messages on each inconsistency found.
+ 
     --  d1   Error messages have node numbers where possible. Normally error
     --       messages have only source locations. This option is useful when
     --       debugging errors caused by expanded code, where the source location
*************** package body Debug is
*** 1031,1036 ****
--- 1027,1035 ----
     --       flag also suppresses the additional messages explaining why a
     --       non-static expression is non-static (see Sem_Eval.Why_Not_Static).
     --       This avoids having to worry about these messages in ACATS testing.
+    --       Finally, this flag is also used for strict legality check, in
+    --       particular it will generate an error instead a warning when
+    --       encountering an unknown pragma.
  
     --  d3   Causes Comperr to dump the contents of the node for which an abort
     --       was detected (normally only the Node_Id of the node is output).
diff -Nrcpad gcc-10.3.0/gcc/ada/debug.ads gcc-11.1.0/gcc/ada/debug.ads
*** gcc-10.3.0/gcc/ada/debug.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/debug.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/debug_a.adb gcc-11.1.0/gcc/ada/debug_a.adb
*** gcc-10.3.0/gcc/ada/debug_a.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/debug_a.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/debug_a.ads gcc-11.1.0/gcc/ada/debug_a.ads
*** gcc-10.3.0/gcc/ada/debug_a.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/debug_a.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/doc/gnat_rm/implementation_advice.rst gcc-11.1.0/gcc/ada/doc/gnat_rm/implementation_advice.rst
*** gcc-10.3.0/gcc/ada/doc/gnat_rm/implementation_advice.rst	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/doc/gnat_rm/implementation_advice.rst	Tue Apr 27 10:00:12 2021
*************** former provides improved compatibility w
*** 199,209 ****
  supporting this type.  The latter corresponds to the highest precision
  floating-point type supported by the hardware.  On most machines, this
  will be the same as ``Long_Float``, but on some machines, it will
! correspond to the IEEE extended form.  The notable case is all ia32
! (x86) implementations, where ``Long_Long_Float`` corresponds to
! the 80-bit extended precision format supported in hardware on this
! processor.  Note that the 128-bit format on SPARC is not supported,
! since this is a software rather than a hardware format.
  
  .. index:: Multidimensional arrays
  
--- 199,209 ----
  supporting this type.  The latter corresponds to the highest precision
  floating-point type supported by the hardware.  On most machines, this
  will be the same as ``Long_Float``, but on some machines, it will
! correspond to the IEEE extended form.  The notable case is all x86
! implementations, where ``Long_Long_Float`` corresponds to the 80-bit
! extended precision format supported in hardware on this processor.
! Note that the 128-bit format on SPARC is not supported, since this
! is a software rather than a hardware format.
  
  .. index:: Multidimensional arrays
  
*************** RM 13.13.2(1.6): Stream Oriented Attribu
*** 712,754 ****
    to the nearest factor or multiple of the word size that is also a
    multiple of the stream element size."
  
! Followed, except that the number of stream elements is a power of 2.
  The Stream_Size may be used to override the default choice.
  
! However, such an implementation is based on direct binary
! representations and is therefore target- and endianness-dependent.  To
! address this issue, GNAT also supplies an alternate implementation of
! the stream attributes ``Read`` and ``Write``, which uses the
! target-independent XDR standard representation for scalar types.
  
  .. index:: XDR representation
- 
  .. index:: Read attribute
- 
  .. index:: Write attribute
- 
  .. index:: Stream oriented attributes
  
- The XDR implementation is provided as an alternative body of the
- ``System.Stream_Attributes`` package, in the file
- :file:`s-stratt-xdr.adb` in the GNAT library.
- There is no :file:`s-stratt-xdr.ads` file.
- In order to install the XDR implementation, do the following:
- 
- * Replace the default implementation of the
-   ``System.Stream_Attributes`` package with the XDR implementation.
-   For example on a Unix platform issue the commands:
- 
-   .. code-block:: sh
- 
-     $ mv s-stratt.adb s-stratt-default.adb
-     $ mv s-stratt-xdr.adb s-stratt.adb
- 
- 
- *
-   Rebuild the GNAT run-time library as documented in
-   the *GNAT and Libraries* section of the :title:`GNAT User's Guide`.
- 
  RM A.1(52): Names of Predefined Numeric Types
  =============================================
  
--- 712,731 ----
    to the nearest factor or multiple of the word size that is also a
    multiple of the stream element size."
  
! Followed, except that the number of stream elements is 1, 2, 3, 4 or 8.
  The Stream_Size may be used to override the default choice.
  
! The default implementation is based on direct binary representations and is
! therefore target- and endianness-dependent.  To address this issue, GNAT also
! supplies an alternate implementation of the stream attributes ``Read`` and
! ``Write``, which uses the target-independent XDR standard representation for
! scalar types. This XDR alternative can be enabled via the binder switch -xdr.
  
  .. index:: XDR representation
  .. index:: Read attribute
  .. index:: Write attribute
  .. index:: Stream oriented attributes
  
  RM A.1(52): Names of Predefined Numeric Types
  =============================================
  
diff -Nrcpad gcc-10.3.0/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst gcc-11.1.0/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
*** gcc-10.3.0/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst	Tue Apr 27 10:00:12 2021
*************** Aspect Refined_State
*** 464,469 ****
--- 464,476 ----
  
  This aspect is equivalent to :ref:`pragma Refined_State<Pragma-Refined_State>`.
  
+ Aspect Relaxed_Initialization
+ =============================
+ .. index:: Refined_Initialization
+ 
+ For the syntax and semantics of this aspect, see the SPARK 2014 Reference
+ Manual, section 6.10.
+ 
  Aspect Remote_Access_Type
  =========================
  .. index:: Remote_Access_Type
*************** Aspect Unreferenced
*** 557,565 ****
  ===================
  .. index:: Unreferenced
  
! This boolean aspect is equivalent to :ref:`pragma Unreferenced<Pragma-Unreferenced>`. Note that
! in the case of formal parameters, it is not permitted to have aspects for
! a formal parameter, so in this case the pragma form must be used.
  
  Aspect Unreferenced_Objects
  ===========================
--- 564,574 ----
  ===================
  .. index:: Unreferenced
  
! This boolean aspect is equivalent to :ref:`pragma Unreferenced<Pragma-Unreferenced>`.
! 
! When using the ``-gnat2020`` switch, this aspect is also supported on formal
! parameters, which is in particular the only form possible for expression
! functions.
  
  Aspect Unreferenced_Objects
  ===========================
diff -Nrcpad gcc-10.3.0/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst gcc-11.1.0/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
*** gcc-10.3.0/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst	Tue Apr 27 10:00:12 2021
*************** Attribute Bit
*** 93,100 ****
  ``obj'Bit``, where ``obj`` is any object, yields the bit
  offset within the storage unit (byte) that contains the first bit of
  storage allocated for the object.  The value of this attribute is of the
! type *universal_integer*, and is always a non-negative number not
! exceeding the value of ``System.Storage_Unit``.
  
  For an object that is a variable or a constant allocated in a register,
  the value is zero.  (The use of this attribute does not force the
--- 93,100 ----
  ``obj'Bit``, where ``obj`` is any object, yields the bit
  offset within the storage unit (byte) that contains the first bit of
  storage allocated for the object.  The value of this attribute is of the
! type *universal_integer* and is always a nonnegative number smaller
! than ``System.Storage_Unit``.
  
  For an object that is a variable or a constant allocated in a register,
  the value is zero.  (The use of this attribute does not force the
*************** the first element of the array.
*** 241,254 ****
  
  .. code-block:: ada
  
!   type Unconstr_Array is array (Positive range <>) of Boolean;
    Put_Line ("Descriptor size = " & Unconstr_Array'Descriptor_Size'Img);
  
  
! The attribute takes into account any additional padding due to type alignment.
! In the example above, the descriptor contains two values of type
! ``Positive`` representing the low and high bound.  Since ``Positive`` has
! a size of 31 bits and an alignment of 4, the descriptor size is ``2 * Positive'Size + 2`` or 64 bits.
  
  Attribute Elaborated
  ====================
--- 241,256 ----
  
  .. code-block:: ada
  
!   type Unconstr_Array is array (Short_Short_Integer range <>) of Positive;
    Put_Line ("Descriptor size = " & Unconstr_Array'Descriptor_Size'Img);
  
  
! The attribute takes into account any padding due to the alignment of the
! component type. In the example above, the descriptor contains two values
! of type ``Short_Short_Integer`` representing the low and high bound. But,
! since ``Positive`` has an alignment of 4, the size of the descriptor is
! ``2 * Short_Short_Integer'Size`` rounded up to the next multiple of 32,
! which yields a size of 32 bits, i.e. including 16 bits of padding.
  
  Attribute Elaborated
  ====================
*************** Attribute Enum_Rep
*** 336,341 ****
--- 338,346 ----
  
  .. index:: Enum_Rep
  
+ Note that this attribute is now standard in Ada 202x and is available
+ as an implementation defined attribute for earlier Ada versions.
+ 
  For every enumeration subtype ``S``, ``S'Enum_Rep`` denotes a
  function with the following spec:
  
*************** enumeration literal or object.
*** 353,359 ****
  The function returns the representation value for the given enumeration
  value.  This will be equal to value of the ``Pos`` attribute in the
  absence of an enumeration representation clause.  This is a static
! attribute (i.e.,:the result is static if the argument is static).
  
  ``S'Enum_Rep`` can also be used with integer types and objects,
  in which case it simply returns the integer value.  The reason for this
--- 358,364 ----
  The function returns the representation value for the given enumeration
  value.  This will be equal to value of the ``Pos`` attribute in the
  absence of an enumeration representation clause.  This is a static
! attribute (i.e., the result is static if the argument is static).
  
  ``S'Enum_Rep`` can also be used with integer types and objects,
  in which case it simply returns the integer value.  The reason for this
*************** Attribute Enum_Val
*** 371,376 ****
--- 376,384 ----
  
  .. index:: Enum_Val
  
+ Note that this attribute is now standard in Ada 202x and is available
+ as an implementation defined attribute for earlier Ada versions.
+ 
  For every enumeration subtype ``S``, ``S'Enum_Val`` denotes a
  function with the following spec:
  
*************** otherwise.  The intended use of this att
*** 475,480 ****
--- 483,501 ----
  definitions.  If the attribute is applied to a generic private type, it
  indicates whether or not the corresponding actual type has discriminants.
  
+ Attribute Has_Tagged_Values
+ ===========================
+ .. index:: Tagged values, testing for
+ 
+ .. index:: Has_Tagged_Values
+ 
+ The prefix of the ``Has_Tagged_Values`` attribute is a type. The result is a
+ Boolean value which is True if the type is a composite type (array or record)
+ that is either a tagged type or has a subcomponent that is tagged, and is False
+ otherwise. The intended use of this attribute is in conjunction with generic
+ definitions. If the attribute is applied to a generic private type, it
+ indicates whether or not the corresponding actual type has access values.
+ 
  Attribute Img
  =============
  .. index:: Img
*************** that returns the appropriate string when
*** 503,508 ****
--- 524,536 ----
  ``X'Img`` can be renamed as a function-returning-string, or used
  in an instantiation as a function parameter.
  
+ Attribute Initialized
+ =====================
+ .. index:: Initialized
+ 
+ For the syntax and semantics of this attribute, see the SPARK 2014 Reference
+ Manual, section 6.10.
+ 
  Attribute Integer_Value
  =======================
  .. index:: Integer_Value
*************** target.  This is a static value that can
*** 642,647 ****
--- 670,683 ----
  for an object, guaranteeing that it is properly aligned in all
  cases.
  
+ Attribute Max_Integer_Size
+ ==========================
+ .. index:: Max_Integer_Size
+ 
+ ``Standard'Max_Integer_Size`` (``Standard`` is the only permissible
+ prefix) provides the size of the largest supported integer type for
+ the target. The result is a static constant.
+ 
  Attribute Mechanism_Code
  ========================
  .. index:: Return values, passing mechanism
*************** and is static.  For non-scalar types, th
*** 781,788 ****
  
  Attribute Pool_Address
  ======================
- .. index:: Parameters, when passed by reference
- 
  .. index:: Pool_Address
  
  ``X'Pool_Address`` for any object ``X`` returns the address
--- 817,822 ----
*************** for compatibility with Ada 83.  See
*** 1106,1111 ****
--- 1140,1165 ----
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute when applied to floating-point types.
  
+ Attribute Small_Denominator
+ ===========================
+ .. index:: Small
+ 
+ .. index:: Small_Denominator
+ 
+ ``typ'Small_Denominator`` for any fixed-point subtype `typ` yields the
+ denominator in the representation of ``typ'Small`` as a rational number
+ with coprime factors (i.e. as an irreducible fraction).
+ 
+ Attribute Small_Numerator
+ =========================
+ .. index:: Small
+ 
+ .. index:: Small_Numerator
+ 
+ ``typ'Small_Numerator`` for any fixed-point subtype `typ` yields the
+ numerator in the representation of ``typ'Small`` as a rational number
+ with coprime factors (i.e. as an irreducible fraction).
+ 
  Attribute Storage_Unit
  ======================
  .. index:: Storage_Unit
*************** Attribute Word_Size
*** 1608,1611 ****
  ``Standard'Word_Size`` (``Standard`` is the only permissible
  prefix) provides the value ``System.Word_Size``. The result is
  a static constant.
- 
--- 1662,1664 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst gcc-11.1.0/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
*** gcc-10.3.0/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst	Tue Apr 27 10:00:12 2021
*************** Manual, and are summarized in Annex M.
*** 13,20 ****
  A requirement for conforming Ada compilers is that they provide
  documentation describing how the implementation deals with each of these
  issues.  In this chapter you will find each point in Annex M listed,
! followed by a description of how GNAT
! handles the implementation dependence.
  
  You can use this chapter as a guide to minimizing implementation
  dependent features in your programs if portability to other compilers
--- 13,19 ----
  A requirement for conforming Ada compilers is that they provide
  documentation describing how the implementation deals with each of these
  issues.  In this chapter you will find each point in Annex M listed,
! followed by a description of how GNAT handles the implementation dependence.
  
  You can use this chapter as a guide to minimizing implementation
  dependent features in your programs if portability to other compilers
*************** further details.
*** 100,116 ****
    "The predefined integer types declared in
    ``Standard``.  See 3.5.4(25)."
  
! ====================== =======================================
! Type                   Representation
! ====================== =======================================
! *Short_Short_Integer*  8 bit signed
! *Short_Integer*        (Short) 16 bit signed
! *Integer*              32 bit signed
! *Long_Integer*         64 bit signed (on most 64 bit targets,
!                        depending on the C definition of long).
!                        32 bit signed (all other targets)
! *Long_Long_Integer*    64 bit signed
! ====================== =======================================
  
  *
    "Any nonstandard integer types and the operators defined
--- 99,117 ----
    "The predefined integer types declared in
    ``Standard``.  See 3.5.4(25)."
  
! ========================= =======================================
! Type                       Representation
! ========================= =======================================
! *Short_Short_Integer*      8-bit signed
! *Short_Integer*            16-bit signed
! *Integer*                  32-bit signed
! *Long_Integer*             64-bit signed (on most 64-bit targets,
!                            depending on the C definition of long)
!                            32-bit signed (on all other targets)
! *Long_Long_Integer*        64-bit signed
! *Long_Long_Long_Integer*   128-bit signed (on 64-bit targets)
!                            64-bit signed (on 32-bit targets)
! ========================= =======================================
  
  *
    "Any nonstandard integer types and the operators defined
*************** Type                   Representation
*** 146,164 ****
  *
    "The small of an ordinary fixed point type.  See 3.5.9(8)."
  
! ``Fine_Delta`` is 2**(-63)
  
  *
    "What combinations of small, range, and digits are
    supported for fixed point types.  See 3.5.9(10)."
  
! Any combinations are permitted that do not result in a small less than
! ``Fine_Delta`` and do not result in a mantissa larger than 63 bits.
! If the mantissa is larger than 53 bits on machines where Long_Long_Float
! is 64 bits (true of all architectures except ia32), then the output from
! Text_IO is accurate to only 53 bits, rather than the full mantissa.  This
! is because floating-point conversions are used to convert fixed point.
  
  
  *
    "The result of ``Tags.Expanded_Name`` for types declared
--- 147,179 ----
  *
    "The small of an ordinary fixed point type.  See 3.5.9(8)."
  
! The small is the largest power of two that does not exceed the delta.
  
  *
    "What combinations of small, range, and digits are
    supported for fixed point types.  See 3.5.9(10)."
  
! For an ordinary fixed point type, on 32-bit platforms, the small must lie in
! 2.0**(-80) .. 2.0**80 and the range in -9.0E+36 .. 9.0E+36; any combination
! is permitted that does not result in a mantissa larger than 63 bits.
! 
! On 64-bit platforms, the small must lie in 2.0**(-127) .. 2.0**127 and the
! range in -1.0E+76 .. 1.0E+76; any combination is permitted that does not
! result in a mantissa larger than 63 bits, and any combination is permitted
! that results in a mantissa between 64 and 127 bits if the small is the
! ratio of two integers that lie in 1 .. 2.0**127.
! 
! If the small is the ratio of two integers with 64-bit magnitude on 32-bit
! platforms and 128-bit magnitude on 64-bit platforms, which is the case if
! no ``small`` clause is provided, then the operations of the fixed point
! type are entirely implemented by means of integer instructions.  In the
! other cases, some operations, in particular input and output, may be
! implemented by means of floating-point instructions and may be affected
! by accuracy issues on architectures other than x86.
  
+ For a decimal fixed point type, on 32-bit platforms, the small must lie in
+ 1.0E-18 .. 1.0E+18 and the digits in 1 .. 18.  On 64-bit platforms, the
+ small must lie in 1.0E-38 .. 1.0E+38 and the digits in 1 .. 38.
  
  *
    "The result of ``Tags.Expanded_Name`` for types declared
*************** is converted to the target type.
*** 1220,1226 ****
  
  The result is only defined to be in the perfect result set if the result
  can be computed by a single scaling operation involving a scale factor
! representable in 64-bits.
  
  *
    "The result of a fixed point arithmetic operation in
--- 1235,1241 ----
  
  The result is only defined to be in the perfect result set if the result
  can be computed by a single scaling operation involving a scale factor
! representable in 64 bits.
  
  *
    "The result of a fixed point arithmetic operation in
diff -Nrcpad gcc-10.3.0/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst gcc-11.1.0/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
*** gcc-10.3.0/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst	Tue Apr 27 10:00:12 2021
*************** This pragma must appear at the start of
*** 37,43 ****
  handled sequence of statements (right after the ``begin``).  It has
  the effect of deferring aborts for the sequence of statements (but not
  for the declarations or handlers, if any, associated with this statement
! sequence).
  
  .. _Pragma-Abstract_State:
  
--- 37,57 ----
  handled sequence of statements (right after the ``begin``).  It has
  the effect of deferring aborts for the sequence of statements (but not
  for the declarations or handlers, if any, associated with this statement
! sequence). This can also be useful for adding a polling point in Ada code,
! where asynchronous abort of tasks is checked when leaving the statement
! sequence, and is lighter than, for example, using ``delay 0.0;``, since with
! zero-cost exception handling, propagating exceptions (implicitly used to
! implement task abort) cannot be done reliably in an asynchronous way.
! 
! An example of usage would be:
! 
! .. code-block:: ada
! 
!   --  Add a polling point to check for task aborts
! 
!   begin
!      pragma Abort_Defer;
!   end;
  
  .. _Pragma-Abstract_State:
  
*************** Syntax:
*** 89,246 ****
  For the semantics of this pragma, see the entry for aspect ``Abstract_State`` in
  the SPARK 2014 Reference Manual, section 7.1.4.
  
- Pragma Acc_Parallel
- ===================
- Syntax:
- 
- .. code-block:: ada
- 
-   pragma Acc_Parallel [( ACC_PARALLEL_CLAUSE [, ACC_PARALLEL_CLAUSE... ])];
- 
-   ACC_PARALLEL_CLAUSE ::=
-       Acc_If        => boolean_EXPRESSION
-     | Acc_Private   => IDENTIFIERS
-     | Async         => integer_EXPRESSION
-     | Copy          => IDENTIFIERS
-     | Copy_In       => IDENTIFIERS
-     | Copy_Out      => IDENTIFIERS
-     | Create        => IDENTIFIERS
-     | Default       => None
-     | Device_Ptr    => IDENTIFIERS
-     | First_Private => IDENTIFIERS
-     | Num_Gangs     => integer_EXPRESSION
-     | Num_Workers   => integer_EXPRESSION
-     | Present       => IDENTIFIERS
-     | Reduction     => (REDUCTION_RECORD)
-     | Vector_Length => integer_EXPRESSION
-     | Wait          => INTEGERS
- 
-   REDUCTION_RECORD ::=
-       "+"   => IDENTIFIERS
-     | "*"   => IDENTIFIERS
-     | "min" => IDENTIFIERS
-     | "max" => IDENTIFIERS
-     | "or"  => IDENTIFIERS
-     | "and" => IDENTIFIERS
- 
-   IDENTIFIERS ::=
-     | IDENTIFIER
-     | (IDENTIFIER, IDENTIFIERS)
- 
-   INTEGERS ::=
-     | integer_EXPRESSION
-     | (integer_EXPRESSION, INTEGERS)
- 
- Requires the :switch:`-fopenacc` flag.
- 
- Equivalent to the ``parallel`` directive of the OpenAcc standard. This pragma
- should be placed in loops. It offloads the content of the loop to an
- accelerator device.
- 
- For more information about the effect of the clauses, see the OpenAcc
- specification.
- 
- Pragma Acc_Loop
- ===============
- Syntax:
- 
- .. code-block:: ada
- 
-   pragma Acc_Loop [( ACC_LOOP_CLAUSE [, ACC_LOOP_CLAUSE... ])];
- 
-   ACC_LOOP_CLAUSE ::=
-       Auto
-     | Collapse        => INTEGER_LITERAL
-     | Gang            [=> GANG_ARG]
-     | Independent
-     | Private         => IDENTIFIERS
-     | Reduction       => (REDUCTION_RECORD)
-     | Seq
-     | Tile            => SIZE_EXPRESSION
-     | Vector          [=> integer_EXPRESSION]
-     | Worker          [=> integer_EXPRESSION]
- 
-   GANG_ARG ::=
-       integer_EXPRESSION
-     | Static => SIZE_EXPRESSION
- 
-   SIZE_EXPRESSION ::=
-       *
-     | integer_EXPRESSION
- 
- Requires the :switch:`-fopenacc` flag.
- 
- Equivalent to the ``loop`` directive of the OpenAcc standard. This pragma
- should be placed in for loops after the "Acc_Parallel" pragma. It tells the
- compiler how to parallelize the loop.
- 
- For more information about the effect of the clauses, see the OpenAcc
- specification.
- 
- Pragma Acc_Kernels
- ==================
- Syntax:
- 
- .. code-block:: ada
- 
-   pragma Acc_Kernels [( ACC_KERNELS_CLAUSE [, ACC_KERNELS_CLAUSE...])];
- 
-   ACC_KERNELS_CLAUSE ::=
-       Acc_If        => boolean_EXPRESSION
-     | Async         => integer_EXPRESSION
-     | Copy          => IDENTIFIERS
-     | Copy_In       => IDENTIFIERS
-     | Copy_Out      => IDENTIFIERS
-     | Create        => IDENTIFIERS
-     | Default       => None
-     | Device_Ptr    => IDENTIFIERS
-     | Num_Gangs     => integer_EXPRESSION
-     | Num_Workers   => integer_EXPRESSION
-     | Present       => IDENTIFIERS
-     | Vector_Length => integer_EXPRESSION
-     | Wait          => INTEGERS
- 
-   IDENTIFIERS ::=
-     | IDENTIFIER
-     | (IDENTIFIER, IDENTIFIERS)
- 
-   INTEGERS ::=
-     | integer_EXPRESSION
-     | (integer_EXPRESSION, INTEGERS)
- 
- Requires the :switch:`-fopenacc` flag.
- 
- Equivalent to the kernels directive of the OpenAcc standard. This pragma should
- be placed in loops.
- 
- For more information about the effect of the clauses, see the OpenAcc
- specification.
- 
- Pragma Acc_Data
- ===============
- Syntax:
- 
- .. code-block:: ada
- 
-   pragma Acc_Data ([ ACC_DATA_CLAUSE [, ACC_DATA_CLAUSE...]]);
- 
-   ACC_DATA_CLAUSE ::=
-       Copy          => IDENTIFIERS
-     | Copy_In       => IDENTIFIERS
-     | Copy_Out      => IDENTIFIERS
-     | Create        => IDENTIFIERS
-     | Device_Ptr    => IDENTIFIERS
-     | Present       => IDENTIFIERS
- 
- Requires the :switch:`-fopenacc` flag.
- 
- Equivalent to the ``data`` directive of the OpenAcc standard. This pragma
- should be placed in loops.
- 
- For more information about the effect of the clauses, see the OpenAcc
- specification.
- 
- 
  Pragma Ada_83
  =============
  
--- 103,108 ----
*************** Syntax::
*** 572,586 ****
  
    ASSERTION_KIND ::= RM_ASSERTION_KIND | ID_ASSERTION_KIND
  
!   RM_ASSERTION_KIND ::= Assert               |
!                         Static_Predicate     |
!                         Dynamic_Predicate    |
!                         Pre                  |
!                         Pre'Class            |
!                         Post                 |
!                         Post'Class           |
!                         Type_Invariant       |
!                         Type_Invariant'Class
  
    ID_ASSERTION_KIND ::= Assertions           |
                          Assert_And_Cut       |
--- 434,449 ----
  
    ASSERTION_KIND ::= RM_ASSERTION_KIND | ID_ASSERTION_KIND
  
!   RM_ASSERTION_KIND ::= Assert                    |
!                         Static_Predicate          |
!                         Dynamic_Predicate         |
!                         Pre                       |
!                         Pre'Class                 |
!                         Post                      |
!                         Post'Class                |
!                         Type_Invariant            |
!                         Type_Invariant'Class      |
!                         Default_Initial_Condition
  
    ID_ASSERTION_KIND ::= Assertions           |
                          Assert_And_Cut       |
*************** Syntax::
*** 588,593 ****
--- 451,457 ----
                          Contract_Cases       |
                          Debug                |
                          Ghost                |
+                         Initial_Condition    |
                          Invariant            |
                          Invariant'Class      |
                          Loop_Invariant       |
*************** Syntax::
*** 596,602 ****
                          Precondition         |
                          Predicate            |
                          Refined_Post         |
!                         Statement_Assertions
  
    POLICY_IDENTIFIER ::= Check | Disable | Ignore | Suppressible
  
--- 460,467 ----
                          Precondition         |
                          Predicate            |
                          Refined_Post         |
!                         Statement_Assertions |
!                         Subprogram_Variant
  
    POLICY_IDENTIFIER ::= Check | Disable | Ignore | Suppressible
  
*************** support is available, then the code gene
*** 1078,1083 ****
--- 943,950 ----
  indicating that the necessary attribute for implementation of this
  pragma is not available.
  
+ .. _Compile_Time_Error:
+ 
  Pragma Compile_Time_Error
  =========================
  
*************** This pragma can be used to generate addi
*** 1094,1107 ****
  error messages. It
  is particularly useful in generics, where errors can be issued for
  specific problematic instantiations. The first parameter is a boolean
! expression. The pragma is effective only if the value of this expression
! is known at compile time, and has the value True. The set of expressions
  whose values are known at compile time includes all static boolean
  expressions, and also other values which the compiler can determine
  at compile time (e.g., the size of a record type set by an explicit
  size representation clause, or the value of a variable which was
  initialized to a constant and is known not to have been modified).
! If these conditions are met, an error message is generated using
  the value given as the second argument. This string value may contain
  embedded ASCII.LF characters to break the message into multiple lines.
  
--- 961,974 ----
  error messages. It
  is particularly useful in generics, where errors can be issued for
  specific problematic instantiations. The first parameter is a boolean
! expression. The pragma ensures that the value of an expression
! is known at compile time, and has the value False. The set of expressions
  whose values are known at compile time includes all static boolean
  expressions, and also other values which the compiler can determine
  at compile time (e.g., the size of a record type set by an explicit
  size representation clause, or the value of a variable which was
  initialized to a constant and is known not to have been modified).
! If these conditions are not met, an error message is generated using
  the value given as the second argument. This string value may contain
  embedded ASCII.LF characters to break the message into multiple lines.
  
*************** Syntax:
*** 1118,1124 ****
  
  
  Same as pragma Compile_Time_Error, except a warning is issued instead
! of an error message. Note that if this pragma is used in a package that
  is with'ed by a client, the client will get the warning even though it
  is issued by a with'ed package (normally warnings in with'ed units are
  suppressed, but this is a special exception to that rule).
--- 985,994 ----
  
  
  Same as pragma Compile_Time_Error, except a warning is issued instead
! of an error message. If switch *-gnatw_C* is used, a warning is only issued
! if the value of the expression is known to be True at compile time, not when
! the value of the expression is not known at compile time.
! Note that if this pragma is used in a package that
  is with'ed by a client, the client will get the warning even though it
  is issued by a with'ed package (normally warnings in with'ed units are
  suppressed, but this is a special exception to that rule).
*************** of formal parameters are tested, and war
*** 1128,1133 ****
--- 998,1008 ----
  with a first parameter of True is to warn a client about use of a package,
  for example that it is not fully implemented.
  
+ In previous versions of the compiler, combining *-gnatwe* with
+ Compile_Time_Warning resulted in a fatal error. Now the compiler always emits
+ a warning. You can use :ref:`Compile_Time_Error` to force the generation of
+ an error.
+ 
  Pragma Compiler_Unit
  ====================
  
*************** extension mode (the use of Off as a para
*** 2335,2350 ****
  of the *-gnatX* command switch).
  
  In extension mode, the latest version of the Ada language is
! implemented (currently Ada 2012), and in addition a small number
  of GNAT specific extensions are recognized as follows:
  
  
- 
- *Constrained attribute for generic objects*
    The ``Constrained`` attribute is permitted for objects of
    generic types. The result indicates if the corresponding actual
    is constrained.
  
  .. _Pragma-Extensions_Visible:
  
  Pragma Extensions_Visible
--- 2210,2241 ----
  of the *-gnatX* command switch).
  
  In extension mode, the latest version of the Ada language is
! implemented (currently Ada 202x), and in addition a small number
  of GNAT specific extensions are recognized as follows:
  
+ * Constrained attribute for generic objects
  
    The ``Constrained`` attribute is permitted for objects of
    generic types. The result indicates if the corresponding actual
    is constrained.
  
+ * ``Static`` aspect on intrinsic functions
+ 
+   The Ada 202x ``Static`` aspect can be specified on Intrinsic imported
+   functions and the compiler will evaluate some of these intrinsic statically,
+   in particular the ``Shift_Left`` and ``Shift_Right`` intrinsics.
+ 
+ * ``'Reduce`` attribute
+ 
+   This attribute part of the Ada 202x language definition is provided for
+   now under -gnatX to confirm and potentially refine its usage and syntax.
+ 
+ * ``[]`` aggregates
+ 
+   This new aggregate syntax for arrays and containers is provided under -gnatX
+   to experiment and confirm this new language syntax.
+ 
+ 
  .. _Pragma-Extensions_Visible:
  
  Pragma Extensions_Visible
*************** type is potentially persistent.
*** 4651,4698 ****
  If this pragma is used on a target where this feature is not supported,
  then the pragma will be ignored. See also ``pragma Linker_Section``.
  
- Pragma Polling
- ==============
- 
- Syntax:
- 
- 
- .. code-block:: ada
- 
-   pragma Polling (ON | OFF);
- 
- 
- This pragma controls the generation of polling code.  This is normally off.
- If ``pragma Polling (ON)`` is used then periodic calls are generated to
- the routine ``Ada.Exceptions.Poll``.  This routine is a separate unit in the
- runtime library, and can be found in file :file:`a-excpol.adb`.
- 
- Pragma ``Polling`` can appear as a configuration pragma (for example it
- can be placed in the :file:`gnat.adc` file) to enable polling globally, or it
- can be used in the statement or declaration sequence to control polling
- more locally.
- 
- A call to the polling routine is generated at the start of every loop and
- at the start of every subprogram call.  This guarantees that the ``Poll``
- routine is called frequently, and places an upper bound (determined by
- the complexity of the code) on the period between two ``Poll`` calls.
- 
- The primary purpose of the polling interface is to enable asynchronous
- aborts on targets that cannot otherwise support it (for example Windows
- NT), but it may be used for any other purpose requiring periodic polling.
- The standard version is null, and can be replaced by a user program.  This
- will require re-compilation of the ``Ada.Exceptions`` package that can
- be found in files :file:`a-except.ads` and :file:`a-except.adb`.
- 
- A standard alternative unit (in file :file:`4wexcpol.adb` in the standard GNAT
- distribution) is used to enable the asynchronous abort capability on
- targets that do not normally support the capability.  The version of
- ``Poll`` in this file makes a call to the appropriate runtime routine
- to test for an abort condition.
- 
- Note that polling can also be enabled by use of the *-gnatP* switch.
- See the section on switches for gcc in the :title:`GNAT User's Guide`.
- 
  Pragma Post
  ===========
  .. index:: Post
--- 4542,4547 ----
*************** Syntax:
*** 5233,5239 ****
  
  .. code-block:: ada
  
!   pragma Profile (Ravenscar | Restricted | Rational |
                    GNAT_Extended_Ravenscar | GNAT_Ravenscar_EDF );
  
  
--- 5082,5088 ----
  
  .. code-block:: ada
  
!   pragma Profile (Ravenscar | Restricted | Rational | Jorvik |
                    GNAT_Extended_Ravenscar | GNAT_Ravenscar_EDF );
  
  
*************** This pragma is standard in Ada 2005, but
*** 5241,5250 ****
  versions of Ada as an implementation-defined pragma. This is a
  configuration pragma that establishes a set of configuration pragmas
  that depend on the argument. ``Ravenscar`` is standard in Ada 2005.
  The other possibilities (``Restricted``, ``Rational``,
  ``GNAT_Extended_Ravenscar``, ``GNAT_Ravenscar_EDF``)
! are implementation-defined. The set of configuration pragmas
! is defined in the following sections.
  
  
  * Pragma Profile (Ravenscar)
--- 5090,5101 ----
  versions of Ada as an implementation-defined pragma. This is a
  configuration pragma that establishes a set of configuration pragmas
  that depend on the argument. ``Ravenscar`` is standard in Ada 2005.
+ ``Jorvik`` is standard in Ada 202x.
  The other possibilities (``Restricted``, ``Rational``,
  ``GNAT_Extended_Ravenscar``, ``GNAT_Ravenscar_EDF``)
! are implementation-defined.  ``GNAT_Extended_Ravenscar`` is an alias for ``Jorvik``.
! 
! The set of configuration pragmas is defined in the following sections.
  
  
  * Pragma Profile (Ravenscar)
*************** is defined in the following sections.
*** 5314,5320 ****
    * ``Simple_Barriers``
  
    The Ravenscar profile also includes the following restrictions that specify
!   that there are no semantic dependences on the corresponding predefined
    packages:
  
    * ``No_Dependence => Ada.Asynchronous_Task_Control``
--- 5165,5171 ----
    * ``Simple_Barriers``
  
    The Ravenscar profile also includes the following restrictions that specify
!   that there are no semantic dependencies on the corresponding predefined
    packages:
  
    * ``No_Dependence => Ada.Asynchronous_Task_Control``
*************** is defined in the following sections.
*** 5355,5366 ****
    automatically causes the use of a simplified,
    more efficient version of the tasking run-time library.
  
! * Pragma Profile (GNAT_Extended_Ravenscar)
  
!   This profile corresponds to a GNAT specific extension of the
!   Ravenscar profile. The profile may change in the future although
!   only in a compatible way: some restrictions may be removed or
!   relaxed. It is defined as a variation of the Ravenscar profile.
  
    The ``No_Implicit_Heap_Allocations`` restriction has been replaced
    by ``No_Implicit_Task_Allocations`` and
--- 5206,5215 ----
    automatically causes the use of a simplified,
    more efficient version of the tasking run-time library.
  
! * Pragma Profile (Jorvik)
  
!   ``Jorvik`` is the new profile added to the Ada 202x draft standard,
!   previously implemented under the name ``GNAT_Extended_Ravenscar``.
  
    The ``No_Implicit_Heap_Allocations`` restriction has been replaced
    by ``No_Implicit_Task_Allocations`` and
*************** is defined in the following sections.
*** 5372,5377 ****
--- 5221,5233 ----
    The ``Max_Protected_Entries``, ``Max_Entry_Queue_Length``, and
    ``No_Relative_Delay`` restrictions have been removed.
  
+   Details on the rationale for ``Jorvik`` and implications for use may be
+   found in :title:`A New Ravenscar-Based Profile` by P. Rogers, J. Ruiz,
+   T. Gingold and P. Bernardi, in :title:`Reliable Software Technologies --
+   Ada Europe 2017`, Springer-Verlag Lecture Notes in Computer Science,
+   Number 10300.
+ 
+ 
  * Pragma Profile (GNAT_Ravenscar_EDF)
  
    This profile corresponds to the Ravenscar profile but using
*************** expression. The following is an example
*** 6796,6803 ****
       function Sqrt (Arg : Float) return Float;
       pragma Test_Case (Name     => "Test 1",
                         Mode     => Nominal,
!                        Requires => Arg < 10000,
!                        Ensures  => Sqrt'Result < 10);
       ...
    end Math_Functions;
  
--- 6652,6659 ----
       function Sqrt (Arg : Float) return Float;
       pragma Test_Case (Name     => "Test 1",
                         Mode     => Nominal,
!                        Requires => Arg < 10000.0,
!                        Ensures  => Sqrt'Result < 10.0);
       ...
    end Math_Functions;
  
*************** there is no guarantee that all the bits
*** 7439,7450 ****
  is not to the whole object; the compiler is allowed (and generally will)
  access only part of the object in this case.
  
- It is not permissible to specify ``Atomic`` and ``Volatile_Full_Access`` for
- the same type or object.
- 
- It is not permissible to specify ``Volatile_Full_Access`` for a composite
- (record or array) type or object that has an ``Aliased`` subcomponent.
- 
  .. _Pragma-Volatile_Function:
  
  Pragma Volatile_Function
--- 7295,7300 ----
*************** Syntax:
*** 7570,7576 ****
    DETAILS ::= static_string_EXPRESSION
    DETAILS ::= On | Off, static_string_EXPRESSION
  
!   TOOL_NAME ::= GNAT | GNATProve
  
    REASON ::= Reason => STRING_LITERAL {& STRING_LITERAL}
  
--- 7420,7426 ----
    DETAILS ::= static_string_EXPRESSION
    DETAILS ::= On | Off, static_string_EXPRESSION
  
!   TOOL_NAME ::= GNAT | GNATprove
  
    REASON ::= Reason => STRING_LITERAL {& STRING_LITERAL}
  
diff -Nrcpad gcc-10.3.0/gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst gcc-11.1.0/gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
*** gcc-10.3.0/gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst	Tue Apr 27 10:00:12 2021
*************** The formal parameter names can be anythi
*** 217,223 ****
  
  A more convenient way of providing these shift operators is to use
  the Provide_Shift_Operators pragma, which provides the function declarations
! and corresponding pragma Import's for all five shift functions.
  
  .. _Source_Location:
  
--- 217,225 ----
  
  A more convenient way of providing these shift operators is to use
  the Provide_Shift_Operators pragma, which provides the function declarations
! and corresponding pragma Import's for all five shift functions. Note that in
! using these provided shift operations, shifts performed on negative numbers
! will result in modification of the sign bit.
  
  .. _Source_Location:
  
diff -Nrcpad gcc-10.3.0/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst gcc-11.1.0/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
*** gcc-10.3.0/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst	Tue Apr 27 10:00:12 2021
*************** increasing it.  For example, if we have:
*** 195,206 ****
       type My_Boolean is new Boolean;
       for My_Boolean'Size use 32;
  
! then values of this type will always be 32 bits long.  In the case of
! discrete types, the size can be increased up to 64 bits, with the effect
! that the entire specified field is used to hold the value, sign- or
! zero-extended as appropriate.  If more than 64 bits is specified, then
! padding space is allocated after the value, and a warning is issued that
! there are unused bits.
  
  Similarly the size of records and arrays may be increased, and the effect
  is to add padding bits after the value.  This also causes a warning message
--- 195,206 ----
       type My_Boolean is new Boolean;
       for My_Boolean'Size use 32;
  
! then values of this type will always be 32-bit long.  In the case of discrete
! types, the size can be increased up to 64 bits on 32-bit targets and 128 bits
! on 64-bit targets, with the effect that the entire specified field is used to
! hold the value, sign- or zero-extended as appropriate.  If more than 64 bits
! or 128 bits resp. is specified, then padding space is allocated after the
! value, and a warning is issued that there are unused bits.
  
  Similarly the size of records and arrays may be increased, and the effect
  is to add padding bits after the value.  This also causes a warning message
*************** that in each case the base is ``Short_Sh
*** 582,588 ****
  
  Note: the entries marked '*' are not actually specified by the Ada
  Reference Manual, which has nothing to say about size in the dynamic
! case. What GNAT does is to allocate sufficient bits to accomodate any
  possible dynamic values for the bounds at run-time.
  
  So far, so good, but GNAT has to obey the RM rules, so the question is
--- 582,588 ----
  
  Note: the entries marked '*' are not actually specified by the Ada
  Reference Manual, which has nothing to say about size in the dynamic
! case. What GNAT does is to allocate sufficient bits to accommodate any
  possible dynamic values for the bounds at run-time.
  
  So far, so good, but GNAT has to obey the RM rules, so the question is
*************** of this subtype, and must be a multiple
*** 678,685 ****
  
  In addition, component size clauses are allowed which cause the array
  to be packed, by specifying a smaller value.  A first case is for
! component size values in the range 1 through 63.  The value specified
! must not be smaller than the Size of the subtype.  GNAT will accurately
  honor all packing requests in this range.  For example, if we have:
  
  
--- 678,686 ----
  
  In addition, component size clauses are allowed which cause the array
  to be packed, by specifying a smaller value.  A first case is for
! component size values in the range 1 through 63 on 32-bit targets,
! and 1 through 127 on 64-bit targets.  The value specified may not
! be smaller than the Size of the subtype.  GNAT will accurately
  honor all packing requests in this range.  For example, if we have:
  
  
*************** be one of the following cases:
*** 1094,1100 ****
  * Any small simple record type with a static size.
  
  For all these cases, if the component subtype size is in the range
! 1 through 64, then the effect of the pragma ``Pack`` is exactly as though a
  component size were specified giving the component subtype size.
  
  All other types are non-packable, they occupy an integral number of storage
--- 1095,1102 ----
  * Any small simple record type with a static size.
  
  For all these cases, if the component subtype size is in the range
! 1 through 63 on 32-bit targets, and 1 through 127 on 64-bit targets,
! then the effect of the pragma ``Pack`` is exactly as though a
  component size were specified giving the component subtype size.
  
  All other types are non-packable, they occupy an integral number of storage
*************** using an explicit ``Component_Size`` set
*** 1124,1134 ****
  a warning, since the intention of the programmer is clear in this case.
  
  GNAT treats packed arrays in one of two ways.  If the size of the array is
! known at compile time and is less than 64 bits, then internally the array
! is represented as a single modular type, of exactly the appropriate number
! of bits.  If the length is greater than 63 bits, or is not known at compile
! time, then the packed array is represented as an array of bytes, and the
! length is always a multiple of 8 bits.
  
  Note that to represent a packed array as a modular type, the alignment must
  be suitable for the modular type involved. For example, on typical machines
--- 1126,1138 ----
  a warning, since the intention of the programmer is clear in this case.
  
  GNAT treats packed arrays in one of two ways.  If the size of the array is
! known at compile time and is at most 64 bits on 32-bit targets, and at most
! 128 bits on 64-bit targets, then internally the array is represented as a
! single modular type, of exactly the appropriate number of bits.  If the
! length is greater than 64 bits on 32-bit targets, and greater than 128
! bits on 64-bit targets, or is not known at compile time, then the packed
! array is represented as an array of bytes, and its length is always a
! multiple of 8 bits.
  
  Note that to represent a packed array as a modular type, the alignment must
  be suitable for the modular type involved. For example, on typical machines
*************** taken by components.  We distinguish bet
*** 1200,1216 ****
  Components of the following types are considered packable:
  
  * Components of an elementary type are packable unless they are aliased,
!   independent, or of an atomic type.
  
  * Small packed arrays, where the size is statically known, are represented
    internally as modular integers, and so they are also packable.
  
  * Small simple records, where the size is statically known, are also packable.
  
! For all these cases, if the ``'Size`` value is in the range 1 through 64, the
! components occupy the exact number of bits corresponding to this value
! and are packed with no padding bits, i.e. they can start on an arbitrary
! bit boundary.
  
  All other types are non-packable, they occupy an integral number of storage
  units and the only effect of pragma ``Pack`` is to remove alignment gaps.
--- 1204,1220 ----
  Components of the following types are considered packable:
  
  * Components of an elementary type are packable unless they are aliased,
!   independent or atomic.
  
  * Small packed arrays, where the size is statically known, are represented
    internally as modular integers, and so they are also packable.
  
  * Small simple records, where the size is statically known, are also packable.
  
! For all these cases, if the ``'Size`` value is in the range 1 through 64 on
! 32-bit targets, and 1 through 128 on 64-bit targets, the components occupy
! the exact number of bits corresponding to this value and are packed with no
! padding bits, i.e. they can start on an arbitrary bit boundary.
  
  All other types are non-packable, they occupy an integral number of storage
  units and the only effect of pragma ``Pack`` is to remove alignment gaps.
*************** For example, consider the record
*** 1237,1243 ****
       end record;
       pragma Pack (X2);
  
! The representation for the record ``X2`` is as follows:
  
  .. code-block:: ada
  
--- 1241,1247 ----
       end record;
       pragma Pack (X2);
  
! The representation for the record ``X2`` is as follows on 32-bit targets:
  
  .. code-block:: ada
  
*************** The representation for the record ``X2``
*** 1252,1268 ****
    end record;
  
  Studying this example, we see that the packable fields ``L1``
! and ``L2`` are
! of length equal to their sizes, and placed at specific bit boundaries (and
! not byte boundaries) to
! eliminate padding.  But ``L3`` is of a non-packable float type (because
  it is aliased), so it is on the next appropriate alignment boundary.
  
  The next two fields are fully packable, so ``L4`` and ``L5`` are
  minimally packed with no gaps.  However, type ``Rb2`` is a packed
! array that is longer than 64 bits, so it is itself non-packable.  Thus
! the ``L6`` field is aligned to the next byte boundary, and takes an
! integral number of bytes, i.e., 72 bits.
  
  .. _Record_Representation_Clauses:
  
--- 1256,1271 ----
    end record;
  
  Studying this example, we see that the packable fields ``L1``
! and ``L2`` are of length equal to their sizes, and placed at
! specific bit boundaries (and not byte boundaries) to eliminate
! padding.  But ``L3`` is of a non-packable float type (because
  it is aliased), so it is on the next appropriate alignment boundary.
  
  The next two fields are fully packable, so ``L4`` and ``L5`` are
  minimally packed with no gaps.  However, type ``Rb2`` is a packed
! array that is longer than 64 bits, so it is itself non-packable on
! 32-bit targets.  Thus the ``L6`` field is aligned to the next byte
! boundary, and takes an integral number of bytes, i.e., 72 bits.
  
  .. _Record_Representation_Clauses:
  
*************** clauses is that the size must be at leas
*** 1283,1289 ****
  (actually the Value_Size).  There are no restrictions due to alignment,
  and such components may freely cross storage boundaries.
  
! Packed arrays with a size up to and including 64 bits are represented
  internally using a modular type with the appropriate number of bits, and
  thus the same lack of restriction applies.  For example, if you declare:
  
--- 1286,1293 ----
  (actually the Value_Size).  There are no restrictions due to alignment,
  and such components may freely cross storage boundaries.
  
! Packed arrays with a size up to and including 64 bits on 32-bit targets,
! and up to and including 128 bits on 64-bit targets, are represented
  internally using a modular type with the appropriate number of bits, and
  thus the same lack of restriction applies.  For example, if you declare:
  
*************** thus the same lack of restriction applie
*** 1296,1325 ****
  then a component clause for a component of type ``R`` may start on any
  specified bit boundary, and may specify a value of 49 bits or greater.
  
! For packed bit arrays that are longer than 64 bits, there are two
! cases. If the component size is a power of 2 (1,2,4,8,16,32 bits),
! including the important case of single bits or boolean values, then
! there are no limitations on placement of such components, and they
! may start and end at arbitrary bit boundaries.
  
! If the component size is not a power of 2 (e.g., 3 or 5), then
! an array of this type longer than 64 bits must always be placed on
! on a storage unit (byte) boundary and occupy an integral number
! of storage units (bytes). Any component clause that does not
! meet this requirement will be rejected.
  
! Any aliased component, or component of an aliased type, must
! have its normal alignment and size. A component clause that
! does not meet this requirement will be rejected.
  
  The tag field of a tagged type always occupies an address sized field at
  the start of the record.  No component clause may attempt to overlay this
  tag. When a tagged type appears as a component, the tag field must have
  proper alignment
  
! In the case of a record extension ``T1``, of a type ``T``, no component clause applied
! to the type ``T1`` can specify a storage location that would overlap the first
! ``T'Size`` bytes of the record.
  
  For all other component types, including non-bit-packed arrays,
  the component can be placed at an arbitrary bit boundary,
--- 1300,1329 ----
  then a component clause for a component of type ``R`` may start on any
  specified bit boundary, and may specify a value of 49 bits or greater.
  
! For packed bit arrays that are longer than 64 bits on 32-bit targets,
! and longer than 128 bits on 64-bit targets, there are two cases. If the
! component size is a power of 2 (1,2,4,8,16,32,64 bits), including the
! important case of single bits or boolean values, then there are no
! limitations on placement of such components, and they may start and
! end at arbitrary bit boundaries.
  
! If the component size is not a power of 2 (e.g., 3 or 5), then an array
! of this type must always be placed on on a storage unit (byte) boundary
! and occupy an integral number of storage units (bytes). Any component
! clause that does not meet this requirement will be rejected.
  
! Any aliased component, or component of an aliased type, must have its
! normal alignment and size. A component clause that does not meet this
! requirement will be rejected.
  
  The tag field of a tagged type always occupies an address sized field at
  the start of the record.  No component clause may attempt to overlay this
  tag. When a tagged type appears as a component, the tag field must have
  proper alignment
  
! In the case of a record extension ``T1``, of a type ``T``, no component
! clause applied to the type ``T1`` can specify a storage location that
! would overlap the first ``T'Object_Size`` bits of the record.
  
  For all other component types, including non-bit-packed arrays,
  the component can be placed at an arbitrary bit boundary,
*************** Handling of Records with Holes
*** 1350,1357 ****
  .. index:: Handling of Records with Holes
  
  As a result of alignment considerations, records may contain "holes"
! or gaps
! which do not correspond to the data bits of any of the components.
  Record representation clauses can also result in holes in records.
  
  GNAT does not attempt to clear these holes, so in record objects,
--- 1354,1360 ----
  .. index:: Handling of Records with Holes
  
  As a result of alignment considerations, records may contain "holes"
! or gaps which do not correspond to the data bits of any of the components.
  Record representation clauses can also result in holes in records.
  
  GNAT does not attempt to clear these holes, so in record objects,
diff -Nrcpad gcc-10.3.0/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst gcc-11.1.0/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
*** gcc-10.3.0/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst	Tue Apr 27 10:00:12 2021
*************** No_Local_Timing_Events
*** 496,502 ****
  ----------------------
  .. index:: No_Local_Timing_Events
  
! [RM D.7] All objects of type Ada.Timing_Events.Timing_Event are
  declared at the library level.
  
  No_Long_Long_Integers
--- 496,502 ----
  ----------------------
  .. index:: No_Local_Timing_Events
  
! [RM D.7] All objects of type Ada.Real_Time.Timing_Events.Timing_Event are
  declared at the library level.
  
  No_Long_Long_Integers
*************** SPARK_05
*** 1000,1007 ****
  --------
  .. index:: SPARK_05
  
! [GNAT] This restriction checks at compile time that some constructs forbidden
! in SPARK 2005 are not present. Note that SPARK 2005 has been superseded by
  SPARK 2014, whose restrictions are checked by the tool GNATprove. To check that
  a codebase respects SPARK 2014 restrictions, mark the code with pragma or
  aspect ``SPARK_Mode``, and run the tool GNATprove at Stone assurance level, as
--- 1000,1006 ----
  --------
  .. index:: SPARK_05
  
! [GNAT] This restriction no longer has any effect and is superseded by
  SPARK 2014, whose restrictions are checked by the tool GNATprove. To check that
  a codebase respects SPARK 2014 restrictions, mark the code with pragma or
  aspect ``SPARK_Mode``, and run the tool GNATprove at Stone assurance level, as
*************** or equivalently::
*** 1013,1157 ****
  
    gnatprove -P project.gpr --mode=check_all
  
- With restriction ``SPARK_05``, error messages related to SPARK 2005 restriction
- have the form:
- 
- ::
- 
-   violation of restriction "SPARK_05" at <source-location>
-    <error message>
- 
- .. index:: SPARK
- 
- The restriction ``SPARK`` is recognized as a synonym for ``SPARK_05``. This is
- retained for historical compatibility purposes (and an unconditional warning
- will be generated for its use, advising replacement by ``SPARK_05``).
- 
- This is not a replacement for the semantic checks performed by the
- SPARK Examiner tool, as the compiler currently only deals with code,
- not SPARK 2005 annotations, and does not guarantee catching all
- cases of constructs forbidden by SPARK 2005.
- 
- Thus it may well be the case that code which passes the compiler with
- the SPARK 2005 restriction is rejected by the SPARK Examiner, e.g. due to
- the different visibility rules of the Examiner based on SPARK 2005
- ``inherit`` annotations.
- 
- This restriction can be useful in providing an initial filter for code
- developed using SPARK 2005, or in examining legacy code to see how far
- it is from meeting SPARK 2005 restrictions.
- 
- The list below summarizes the checks that are performed when this
- restriction is in force:
- 
- * No block statements
- * No case statements with only an others clause
- * Exit statements in loops must respect the SPARK 2005 language restrictions
- * No goto statements
- * Return can only appear as last statement in function
- * Function must have return statement
- * Loop parameter specification must include subtype mark
- * Prefix of expanded name cannot be a loop statement
- * Abstract subprogram not allowed
- * User-defined operators not allowed
- * Access type parameters not allowed
- * Default expressions for parameters not allowed
- * Default expressions for record fields not allowed
- * No tasking constructs allowed
- * Label needed at end of subprograms and packages
- * No mixing of positional and named parameter association
- * No access types as result type
- * No unconstrained arrays as result types
- * No null procedures
- * Initial and later declarations must be in correct order (declaration can't come after body)
- * No attributes on private types if full declaration not visible
- * No package declaration within package specification
- * No controlled types
- * No discriminant types
- * No overloading
- * Selector name cannot be operator symbol (i.e. operator symbol cannot be prefixed)
- * Access attribute not allowed
- * Allocator not allowed
- * Result of catenation must be String
- * Operands of catenation must be string literal, static char or another catenation
- * No conditional expressions
- * No explicit dereference
- * Quantified expression not allowed
- * Slicing not allowed
- * No exception renaming
- * No generic renaming
- * No object renaming
- * No use clause
- * Aggregates must be qualified
- * Nonstatic choice in array aggregates not allowed
- * The only view conversions which are allowed as in-out parameters are conversions of a tagged type to an ancestor type
- * No mixing of positional and named association in aggregate, no multi choice
- * AND, OR and XOR for arrays only allowed when operands have same static bounds
- * Fixed point operands to * or / must be qualified or converted
- * Comparison operators not allowed for Booleans or arrays (except strings)
- * Equality not allowed for arrays with non-matching static bounds (except strings)
- * Conversion / qualification not allowed for arrays with non-matching static bounds
- * Subprogram declaration only allowed in package spec (unless followed by import)
- * Access types not allowed
- * Incomplete type declaration not allowed
- * Object and subtype declarations must respect SPARK 2005 restrictions
- * Digits or delta constraint not allowed
- * Decimal fixed point type not allowed
- * Aliasing of objects not allowed
- * Modular type modulus must be power of 2
- * Base not allowed on subtype mark
- * Unary operators not allowed on modular types (except not)
- * Untagged record cannot be null
- * No class-wide operations
- * Initialization expressions must respect SPARK 2005 restrictions
- * Nonstatic ranges not allowed except in iteration schemes
- * String subtypes must have lower bound of 1
- * Subtype of Boolean cannot have constraint
- * At most one tagged type or extension per package
- * Interface is not allowed
- * Character literal cannot be prefixed (selector name cannot be character literal)
- * Record aggregate cannot contain 'others'
- * Component association in record aggregate must contain a single choice
- * Ancestor part cannot be a type mark
- * Attributes 'Image, 'Width and 'Value not allowed
- * Functions may not update globals
- * Subprograms may not contain direct calls to themselves (prevents recursion within unit)
- * Call to subprogram not allowed in same unit before body has been seen (prevents recursion within unit)
- 
- The following restrictions are enforced, but note that they are actually more
- strict that the latest SPARK 2005 language definition:
- 
- * No derived types other than tagged type extensions
- * Subtype of unconstrained array must have constraint
- 
- This list summarises the main SPARK 2005 language rules that are not
- currently checked by the SPARK_05 restriction:
- 
- * SPARK 2005 annotations are treated as comments so are not checked at all
- * Based real literals not allowed
- * Objects cannot be initialized at declaration by calls to user-defined functions
- * Objects cannot be initialized at declaration by assignments from variables
- * Objects cannot be initialized at declaration by assignments from indexed/selected components
- * Ranges shall not be null
- * A fixed point delta expression must be a simple expression
- * Restrictions on where renaming declarations may be placed
- * Externals of mode 'out' cannot be referenced
- * Externals of mode 'in' cannot be updated
- * Loop with no iteration scheme or exits only allowed as last statement in main program or task
- * Subprogram cannot have parent unit name
- * SPARK 2005 inherited subprogram must be prefixed with overriding
- * External variables (or functions that reference them) may not be passed as actual parameters
- * Globals must be explicitly mentioned in contract
- * Deferred constants cannot be completed by pragma Import
- * Package initialization cannot read/write variables from other packages
- * Prefix not allowed for entities that are directly visible
- * Identifier declaration can't override inherited package name
- * Cannot use Standard or other predefined packages as identifiers
- * After renaming, cannot use the original name
- * Subprograms can only be renamed to remove package prefix
- * Pragma import must be immediately after entity it names
- * No mutual recursion between multiple units (this can be checked with gnatcheck)
- 
- Note that if a unit is compiled in Ada 95 mode with the SPARK 2005 restriction,
- violations will be reported for constructs forbidden in SPARK 95,
- instead of SPARK 2005.
--- 1012,1014 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/doc/gnat_rm/the_gnat_library.rst gcc-11.1.0/gcc/ada/doc/gnat_rm/the_gnat_library.rst
*** gcc-10.3.0/gcc/ada/doc/gnat_rm/the_gnat_library.rst	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/doc/gnat_rm/the_gnat_library.rst	Tue Apr 27 10:00:12 2021
*************** This package provides subprograms for Te
*** 505,510 ****
--- 505,522 ----
  wide wide strings, avoiding the necessity for an intermediate operation
  with ordinary wide wide strings.
  
+ .. _`Ada.Task_Initialization_(a-tasini.ads)`:
+ 
+ ``Ada.Task_Initialization`` (:file:`a-tasini.ads`)
+ ==================================================
+ 
+ .. index:: Ada.Task_Initialization (a-tasini.ads)
+ 
+ This package provides a way to set a global initialization handler that
+ is automatically invoked whenever a task is activated. Handlers are
+ parameterless procedures. Note that such a handler is only invoked for
+ those tasks activated after the handler is set.
+ 
  .. _`Ada.Text_IO.C_Streams_(a-tiocst.ads)`:
  
  ``Ada.Text_IO.C_Streams`` (:file:`a-tiocst.ads`)
diff -Nrcpad gcc-10.3.0/gcc/ada/doc/gnat_ugn/about_this_guide.rst gcc-11.1.0/gcc/ada/doc/gnat_ugn/about_this_guide.rst
*** gcc-10.3.0/gcc/ada/doc/gnat_ugn/about_this_guide.rst	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/doc/gnat_ugn/about_this_guide.rst	Tue Apr 27 10:00:12 2021
*************** toolset for the full Ada programming lan
*** 14,26 ****
  It documents the features of the compiler and tools, and explains
  how to use them to build Ada applications.
  
! GNAT implements Ada 95, Ada 2005 and Ada 2012, and it may also be
  invoked in Ada 83 compatibility mode.
  By default, GNAT assumes Ada 2012, but you can override with a
  compiler switch (:ref:`Compiling_Different_Versions_of_Ada`)
  to explicitly specify the language version.
  Throughout this manual, references to 'Ada' without a year suffix
! apply to all Ada 95/2005/2012 versions of the language.
  
  What This Guide Contains
  ========================
--- 14,26 ----
  It documents the features of the compiler and tools, and explains
  how to use them to build Ada applications.
  
! GNAT implements Ada 95, Ada 2005, Ada 2012, and Ada 202x, and it may also be
  invoked in Ada 83 compatibility mode.
  By default, GNAT assumes Ada 2012, but you can override with a
  compiler switch (:ref:`Compiling_Different_Versions_of_Ada`)
  to explicitly specify the language version.
  Throughout this manual, references to 'Ada' without a year suffix
! apply to all Ada versions of the language, starting with Ada 95.
  
  What This Guide Contains
  ========================
*************** What You Should Know before Reading This
*** 71,78 ****
  This guide assumes a basic familiarity with the Ada 95 language, as
  described in the International Standard ANSI/ISO/IEC-8652:1995, January
  1995.
- It does not require knowledge of the features introduced by Ada 2005
- or Ada 2012.
  Reference manuals for Ada 95, Ada 2005, and Ada 2012 are included in
  the GNAT documentation package.
  
--- 71,76 ----
*************** following documents:
*** 104,184 ****
    environment Emacs.
  
  
- A Note to Readers of Previous Versions of the Manual
- ====================================================
- 
- In early 2015 the GNAT manuals were transitioned to the
- reStructuredText (rst) / Sphinx documentation generator technology.
- During that process the :title:`GNAT User's Guide` was reorganized
- so that related topics would be described together in the same chapter
- or appendix.  Here's a summary of the major changes realized in
- the new document structure.
- 
- * :ref:`The_GNAT_Compilation_Model` has been extended so that it now covers
-   the following material:
- 
-   - The ``gnatname``, ``gnatkr``, and ``gnatchop`` tools
-   - :ref:`Configuration_Pragmas`
-   - :ref:`GNAT_and_Libraries`
-   - :ref:`Conditional_Compilation` including :ref:`Preprocessing_with_gnatprep`
-     and :ref:`Integrated_Preprocessing`
-   - :ref:`Generating_Ada_Bindings_for_C_and_C++_headers`
-   - :ref:`Using_GNAT_Files_with_External_Tools`
- 
- * :ref:`Building_Executable_Programs_With_GNAT` is a new chapter consolidating
-   the following content:
- 
-   - :ref:`The_GNAT_Make_Program_gnatmake`
-   - :ref:`Compiling_with_GCC`
-   - :ref:`Binding_with_gnatbind`
-   - :ref:`Linking_with_gnatlink`
-   - :ref:`Using_the_GNU_make_Utility`
- 
- * :ref:`GNAT_Utility_Programs` is a new chapter consolidating the information about several
-   GNAT tools:
- 
-   .. only:: PRO or GPL
- 
-     - :ref:`The_File_Cleanup_Utility_gnatclean`
-     - :ref:`The_GNAT_Library_Browser_gnatls`
-     - :ref:`The_Cross-Referencing_Tools_gnatxref_and_gnatfind`
-     - :ref:`The_Ada_to_HTML_Converter_gnathtml`
-     - :ref:`The_Ada-to-XML_Converter_gnat2xml`
-     - :ref:`The_Coding_Standard_Verifier_gnatcheck`
-     - :ref:`The_GNAT_Metrics_Tool_gnatmetric`
-     - :ref:`The_GNAT_Pretty_Printer_gnatpp`
-     - :ref:`The_Body_Stub_Generator_gnatstub`
-     - :ref:`The_Unit_Test_Generator_gnattest`
- 
-   .. only:: FSF
- 
-     - :ref:`The_File_Cleanup_Utility_gnatclean`
-     - :ref:`The_GNAT_Library_Browser_gnatls`
-     - :ref:`The_Cross-Referencing_Tools_gnatxref_and_gnatfind`
-     - :ref:`The_Ada_to_HTML_Converter_gnathtml`
- 
- * :ref:`GNAT_and_Program_Execution` is a new chapter consolidating the following:
- 
-   - :ref:`Running_and_Debugging_Ada_Programs`
-   - :ref:`Profiling`
-   - :ref:`Improving_Performance`
-   - :ref:`Overflow Check Handling in GNAT <Overflow_Check_Handling_in_GNAT>`
-   - :ref:`Performing Dimensionality Analysis in GNAT <Performing_Dimensionality_Analysis_in_GNAT>`
-   - :ref:`Stack_Related_Facilities`
-   - :ref:`Memory_Management_Issues`
- 
- * :ref:`Platform_Specific_Information` is a new appendix consolidating the following:
- 
-   - :ref:`Run_Time_Libraries`
-   - :ref:`Microsoft_Windows_Topics`
-   - :ref:`Mac_OS_Topics`
- 
- * The *Compatibility and Porting Guide* appendix has been moved to the
-   :title:`GNAT Reference Manual`. It now includes a section
-   *Writing Portable Fixed-Point Declarations* which was previously
-   a separate chapter in the :title:`GNAT User's Guide`.
- 
- 
  Conventions
  ===========
  .. index:: Conventions, typographical
--- 102,107 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst gcc-11.1.0/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
*** gcc-10.3.0/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Tue Apr 27 10:00:12 2021
*************** Alphabetical List of All Switches
*** 1517,1522 ****
--- 1517,1529 ----
    an exception because ``Self(Obj)`` produces an anonymous object which does
    not share the memory location of ``Obj``.
  
+ .. index:: -gnateb  (gcc)
+ 
+ :switch:`-gnateb`
+   Store configuration files by their basename in ALI files. This switch is
+   used for instance by gprbuild for distributed builds in order to prevent
+   issues where machine-specific absolute paths could end up being stored in
+   ALI files.
  
  .. index:: -gnatec  (gcc)
  
*************** Alphabetical List of All Switches
*** 1910,1919 ****
    Note that this option should be used only for compiling -- the
    code is likely to malfunction at run time.
  
-   Note that when :switch:`-gnatct` is used to generate trees for input
-   into ASIS tools, these representation clauses are removed
-   from the tree and ignored. This means that the tool will not see them.
- 
  
  .. index:: -gnatjnn  (gcc)
  
--- 1917,1922 ----
*************** Alphabetical List of All Switches
*** 2062,2076 ****
    Cancel effect of previous :switch:`-gnatp` switch.
  
  
- .. index:: -gnatP  (gcc)
- 
- :switch:`-gnatP`
-   Enable polling. This is required on some systems (notably Windows NT) to
-   obtain asynchronous abort and asynchronous transfer of control capability.
-   See ``Pragma_Polling`` in the :title:`GNAT_Reference_Manual` for full
-   details.
- 
- 
  .. index:: -gnatq  (gcc)
  
  :switch:`-gnatq`
--- 2065,2070 ----
*************** Alphabetical List of All Switches
*** 2112,2123 ****
    Print package Standard.
  
  
- .. index:: -gnatt  (gcc)
- 
- :switch:`-gnatt`
-   Generate tree output file.
- 
- 
  .. index:: -gnatT  (gcc)
  
  :switch:`-gnatT{nnn}`
--- 2106,2111 ----
*************** format:
*** 2600,2613 ****
    implies :switch:`-gnatq`, since the semantic phase must be run to get a
    meaningful ALI file.
  
-   In addition, if :switch:`-gnatt` is also specified, then the tree file is
-   generated even if there are illegalities. It may be useful in this case
-   to also specify :switch:`-gnatq` to ensure that full semantic processing
-   occurs. The resulting tree file can be processed by ASIS, for the purpose
-   of providing partial information about illegal units, but if the error
-   causes the tree to be badly malformed, then ASIS may crash during the
-   analysis.
- 
    When :switch:`-gnatQ` is used and the generated :file:`ALI` file is marked as
    being in error, ``gnatmake`` will attempt to recompile the source when it
    finds such an :file:`ALI` file, including with switch :switch:`-gnatc`.
--- 2588,2593 ----
*************** of the pragma in the :title:`GNAT_Refere
*** 3364,3370 ****
  :switch:`-gnatw.K`
    *Suppress warnings on redefinition of names in standard.*
  
!   This switch activates warnings for declarations that declare a name that
    is defined in package Standard.
  
  
--- 3344,3350 ----
  :switch:`-gnatw.K`
    *Suppress warnings on redefinition of names in standard.*
  
!   This switch disables warnings for declarations that declare a name that
    is defined in package Standard.
  
  
*************** of the pragma in the :title:`GNAT_Refere
*** 3892,3899 ****
  
    This switch activates warnings for access to variables which
    may not be properly initialized. The default is that
!   such warnings are generated.
  
  
  .. index:: -gnatwV  (gcc)
  
--- 3872,3885 ----
  
    This switch activates warnings for access to variables which
    may not be properly initialized. The default is that
!   such warnings are generated. This switch will also be emitted when
!   initializing an array or record object via the following aggregate:
  
+   .. code-block:: ada
+ 
+        Array_Or_Record : XXX := (others => <>);
+ 
+   unless the relevant type fully initializes all components.
  
  .. index:: -gnatwV  (gcc)
  
*************** of the pragma in the :title:`GNAT_Refere
*** 3902,3918 ****
  
    This switch suppresses warnings for access to variables which
    may not be properly initialized.
-   For variables of a composite type, the warning can also be suppressed in
-   Ada 2005 by using a default initialization with a box. For example, if
-   Table is an array of records whose components are only partially uninitialized,
-   then the following code:
- 
-   .. code-block:: ada
- 
-        Tab : Table := (others => <>);
- 
-   will suppress warnings on subsequent statements that access components
-   of variable Tab.
  
  
  .. index:: -gnatw.v  (gcc)
--- 3888,3893 ----
*************** to the default checks required by Ada as
*** 4421,4427 ****
  
    All validity checks are turned on.
    That is, :switch:`-gnatVa` is
!   equivalent to ``gnatVcdfimorst``.
  
  
  .. index:: -gnatVc  (gcc)
--- 4396,4402 ----
  
    All validity checks are turned on.
    That is, :switch:`-gnatVa` is
!   equivalent to ``gnatVcdfimoprst``.
  
  
  .. index:: -gnatVc  (gcc)
*************** checks to be performed. The following ch
*** 4839,4845 ****
  
    All keywords must be in lower case (with the exception of keywords
    such as ``digits`` used as attribute names to which this check
!   does not apply).
  
  
  .. index:: -gnatyl (gcc)
--- 4814,4821 ----
  
    All keywords must be in lower case (with the exception of keywords
    such as ``digits`` used as attribute names to which this check
!   does not apply). A single error is reported for each line breaking
!   this rule even if multiple casing issues exist on a same line.
  
  
  .. index:: -gnatyl (gcc)
*************** Subprogram Inlining Control
*** 5695,5715 ****
  Auxiliary Output Control
  ------------------------
  
- .. index:: -gnatt  (gcc)
- .. index:: Writing internal trees
- .. index:: Internal trees, writing to file
- 
- :switch:`-gnatt`
-   Causes GNAT to write the internal tree for a unit to a file (with the
-   extension :file:`.adt`.
-   This not normally required, but is used by separate analysis tools.
-   Typically
-   these tools do the necessary compilations automatically, so you should
-   not have to specify this switch in normal operation.
-   Note that the combination of switches :switch:`-gnatct`
-   generates a tree in the form required by ASIS applications.
- 
- 
  .. index:: -gnatu  (gcc)
  
  :switch:`-gnatu`
--- 5671,5676 ----
*************** be presented in subsequent sections.
*** 6541,6548 ****
    limitations:
  
    * Starting the program's execution in the debugger will cause it to
!     stop at the start of the ``main`` function instead of the main subprogram. 
!     This can be worked around by manually inserting a breakpoint on that 
      subprogram and resuming the program's execution until reaching that breakpoint.
    * Programs using GNAT.Compiler_Version will not link.
  
--- 6502,6509 ----
    limitations:
  
    * Starting the program's execution in the debugger will cause it to
!     stop at the start of the ``main`` function instead of the main subprogram.
!     This can be worked around by manually inserting a breakpoint on that
      subprogram and resuming the program's execution until reaching that breakpoint.
    * Programs using GNAT.Compiler_Version will not link.
  
*************** be presented in subsequent sections.
*** 6744,6749 ****
--- 6705,6721 ----
    Exclude source files (check object consistency only).
  
  
+   .. index:: -xdr  (gnatbind)
+ 
+ :switch:`-xdr`
+   Use the target-independent XDR protocol for stream oriented attributes
+   instead of the default implementation which is based on direct binary
+   representations and is therefore target-and endianness-dependent.
+   However it does not support 128-bit integer types and the exception
+   ``Ada.IO_Exceptions.Device_Error`` is raised if any attempt is made
+   at streaming 128-bit integer types with it.
+ 
+ 
    .. index:: -Xnnn  (gnatbind)
  
  :switch:`-X{nnn}`
diff -Nrcpad gcc-10.3.0/gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst gcc-11.1.0/gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst
*** gcc-10.3.0/gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst	Tue Apr 27 10:00:12 2021
*************** Getting Started with GNAT
*** 9,21 ****
  This chapter describes how to use GNAT's command line interface to build
  executable Ada programs.
  On most platforms a visually oriented Integrated Development Environment
! is also available, the GNAT Programming Studio (GNAT Studio).
  GNAT Studio offers a graphical "look and feel", support for development in
  other programming languages, comprehensive browsing features, and
  many other capabilities.
! For information on GNAT Studio please refer to
! :title:`Using the GNAT Programming Studio`.
  
  
  .. _Running_GNAT:
  
--- 9,50 ----
  This chapter describes how to use GNAT's command line interface to build
  executable Ada programs.
  On most platforms a visually oriented Integrated Development Environment
! is also available: GNAT Studio.
  GNAT Studio offers a graphical "look and feel", support for development in
  other programming languages, comprehensive browsing features, and
  many other capabilities.
! For information on GNAT Studio please refer to the
! :title:`GNAT Studio documentation`.
! 
! 
! .. _System_Requirements:
! 
! System Requirements
! ===================
! 
! Even though any machine can run the GNAT toolset and GNAT Studio IDE, in order
! to get the best experience, we recommend using a machine with as many cores
! as possible since all individual compilations can run in parallel.
! A comfortable setup for a compiler server is a machine with 24 physical cores
! or more, with at least 48 GB of memory (2 GB per core).
! 
! For a desktop machine, a minimum of 4 cores is recommended (8 preferred),
! with at least 2GB per core (so 8 to 16GB).
! 
! In addition, for running and navigating sources in GNAT Studio smoothly, we
! recommend at least 1.5 GB plus 3 GB of RAM per 1 million source line of code.
! In other words, we recommend at least 3 GB for for 500K lines of code and
! 7.5 GB for 2 million lines of code.
  
+ Note that using local and fast drives will also make a difference in terms of
+ build and link time. Network drives such as NFS, SMB, or worse, configuration
+ management filesystems (such as ClearCase dynamic views) should be avoided as
+ much as possible and will produce very degraded performance (typically 2 to 3
+ times slower than on local fast drives). If such slow drives cannot be avoided
+ for accessing the source code, then you should at least configure your project
+ file so that the result of the compilation is stored on a drive local to the
+ machine performing the run. This can be achieved by setting the ``Object_Dir``
+ project file attribute.
  
  .. _Running_GNAT:
  
*************** file corresponding to your Ada program.
*** 96,119 ****
  an 'Ada Library Information' file :file:`hello.ali`,
  which contains additional information used to check
  that an Ada program is consistent.
- To build an executable file,
- use ``gnatbind`` to bind the program
- and ``gnatlink`` to link it. The
- argument to both ``gnatbind`` and ``gnatlink`` is the name of the
- :file:`ALI` file, but the default extension of :file:`.ali` can
- be omitted. This means that in the most common case, the argument
- is simply the name of the main program:
- 
- .. code-block:: sh
  
!   $ gnatbind hello
!   $ gnatlink hello
! 
! A simpler method of carrying out these steps is to use ``gnatmake``,
! a master program that invokes all the required
! compilation, binding and linking tools in the correct order. In particular,
! ``gnatmake`` automatically recompiles any sources that have been
! modified since they were last compiled, or sources that depend
  on such modified sources, so that 'version skew' is avoided.
  
  .. index:: Version skew (avoided by ``gnatmake``)
--- 125,136 ----
  an 'Ada Library Information' file :file:`hello.ali`,
  which contains additional information used to check
  that an Ada program is consistent.
  
! To build an executable file, use either ``gnatmake`` or gprbuild with
! the name of the main file: these tools are builders that will take care of
! all the necessary build steps in the correct order.
! In particular, these builders automatically recompile any sources that have
! been modified since they were last compiled, or sources that depend
  on such modified sources, so that 'version skew' is avoided.
  
  .. index:: Version skew (avoided by ``gnatmake``)
*************** following three separate files:
*** 190,206 ****
  *gmain.adb*
    body of main program
  
- To build an executable version of
- this program, we could use four separate steps to compile, bind, and link
- the program, as follows:
- 
- .. code-block:: sh
- 
-   $ gcc -c gmain.adb
-   $ gcc -c greetings.adb
-   $ gnatbind gmain
-   $ gnatlink gmain
- 
  Note that there is no required order of compilation when using GNAT.
  In particular it is perfectly fine to compile the main program first.
  Also, it is not necessary to compile package specs in the case where
--- 207,212 ----
*************** generation, then use the :switch:`-gnatc
*** 212,277 ****
  
    $ gcc -c greetings.ads -gnatc
  
! Although the compilation can be done in separate steps as in the
! above example, in practice it is almost always more convenient
! to use the ``gnatmake`` tool. All you need to know in this case
! is the name of the main program's source file. The effect of the above four
! commands can be achieved with a single one:
! 
! .. code-block:: sh
! 
!   $ gnatmake gmain.adb
! 
! In the next section we discuss the advantages of using ``gnatmake`` in
! more detail.
! 
! .. _Using_the_gnatmake_Utility:
! 
! Using the ``gnatmake`` Utility
! ==============================
! 
! If you work on a program by compiling single components at a time using
! ``gcc``, you typically keep track of the units you modify. In order to
! build a consistent system, you compile not only these units, but also any
! units that depend on the units you have modified.
! For example, in the preceding case,
! if you edit :file:`gmain.adb`, you only need to recompile that file. But if
! you edit :file:`greetings.ads`, you must recompile both
! :file:`greetings.adb` and :file:`gmain.adb`, because both files contain
! units that depend on :file:`greetings.ads`.
! 
! ``gnatbind`` will warn you if you forget one of these compilation
! steps, so that it is impossible to generate an inconsistent program as a
! result of forgetting to do a compilation. Nevertheless it is tedious and
! error-prone to keep track of dependencies among units.
! One approach to handle the dependency-bookkeeping is to use a
! makefile. However, makefiles present maintenance problems of their own:
! if the dependencies change as you change the program, you must make
! sure that the makefile is kept up-to-date manually, which is also an
! error-prone process.
! 
! The ``gnatmake`` utility takes care of these details automatically.
! Invoke it using either one of the following forms:
  
  .. code-block:: sh
  
    $ gnatmake gmain.adb
-   $ gnatmake gmain
- 
- The argument is the name of the file containing the main program;
- you may omit the extension. ``gnatmake``
- examines the environment, automatically recompiles any files that need
- recompiling, and binds and links the resulting set of object files,
- generating the executable file, :file:`gmain`.
- In a large program, it
- can be extremely helpful to use ``gnatmake``, because working out by hand
- what needs to be recompiled can be difficult.
  
- Note that ``gnatmake`` takes into account all the Ada rules that
- establish dependencies among units. These include dependencies that result
- from inlining subprogram bodies, and from
- generic instantiation. Unlike some other
- Ada make tools, ``gnatmake`` does not rely on the dependencies that were
- found by the compiler on a previous compilation, which may possibly
- be wrong when sources change. ``gnatmake`` determines the exact set of
- dependencies from scratch each time it is run.
--- 218,227 ----
  
    $ gcc -c greetings.ads -gnatc
  
! Although the compilation can be done in separate steps, in practice it is
! almost always more convenient to use the ``gnatmake`` or ``gprbuild`` tools:
  
  .. code-block:: sh
  
    $ gnatmake gmain.adb
  
diff -Nrcpad gcc-10.3.0/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst gcc-11.1.0/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
*** gcc-10.3.0/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst	Tue Apr 27 10:00:12 2021
*************** improves performance for your program.
*** 1840,1846 ****
  
  .. _Floating_Point_Operations:
  
! Floating_Point_Operations
  ^^^^^^^^^^^^^^^^^^^^^^^^^
  
  .. index:: Floating-Point Operations
--- 1840,1846 ----
  
  .. _Floating_Point_Operations:
  
! Floating Point Operations
  ^^^^^^^^^^^^^^^^^^^^^^^^^
  
  .. index:: Floating-Point Operations
diff -Nrcpad gcc-10.3.0/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst gcc-11.1.0/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
*** gcc-10.3.0/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst	Tue Apr 27 10:00:12 2021
*************** This chapter describes a number of utili
*** 14,22 ****
  
    * :ref:`The_File_Cleanup_Utility_gnatclean`
    * :ref:`The_GNAT_Library_Browser_gnatls`
-   * :ref:`The_Cross-Referencing_Tools_gnatxref_and_gnatfind`
-   * :ref:`The_Ada_to_HTML_Converter_gnathtml`
-   * :ref:`The_Ada-to-XML_Converter_gnat2xml`
    * :ref:`The_Coding_Standard_Verifier_gnatcheck`
    * :ref:`The_GNAT_Metrics_Tool_gnatmetric`
    * :ref:`The_GNAT_Pretty_Printer_gnatpp`
--- 14,19 ----
*************** This chapter describes a number of utili
*** 31,38 ****
  
    * :ref:`The_File_Cleanup_Utility_gnatclean`
    * :ref:`The_GNAT_Library_Browser_gnatls`
-   * :ref:`The_Cross-Referencing_Tools_gnatxref_and_gnatfind`
-   * :ref:`The_Ada_to_HTML_Converter_gnathtml`
  
  Other GNAT utilities are described elsewhere in this manual:
  
--- 28,33 ----
*************** building specialized scripts.
*** 472,1770 ****
        /home/comar/local/adainclude/unchconv.ads
  
  
- .. _The_Cross-Referencing_Tools_gnatxref_and_gnatfind:
- 
- The Cross-Referencing Tools ``gnatxref`` and ``gnatfind``
- =========================================================
- 
- .. index:: ! gnatxref
- .. index:: ! gnatfind
- 
- The compiler generates cross-referencing information (unless
- you set the :switch:`-gnatx` switch), which are saved in the :file:`.ali` files.
- This information indicates where in the source each entity is declared and
- referenced. Note that entities in package Standard are not included, but
- entities in all other predefined units are included in the output.
- 
- Before using any of these two tools, you need to compile successfully your
- application, so that GNAT gets a chance to generate the cross-referencing
- information.
- 
- The two tools ``gnatxref`` and ``gnatfind`` take advantage of this
- information to provide the user with the capability to easily locate the
- declaration and references to an entity. These tools are quite similar,
- the difference being that ``gnatfind`` is intended for locating
- definitions and/or references to a specified entity or entities, whereas
- ``gnatxref`` is oriented to generating a full report of all
- cross-references.
- 
- To use these tools, you must not compile your application using the
- :switch:`-gnatx` switch on the ``gnatmake`` command line
- (see :ref:`The_GNAT_Make_Program_gnatmake`). Otherwise, cross-referencing
- information will not be generated.
- 
- .. _gnatxref_Switches:
- 
- ``gnatxref`` Switches
- ---------------------
- 
- The command invocation for ``gnatxref`` is:
- 
-   ::
- 
-       $ gnatxref [ switches ] sourcefile1 [ sourcefile2 ... ]
- 
- where
- 
- ``sourcefile1`` [, ``sourcefile2`` ...]
-   identify the source files for which a report is to be generated. The
-   ``with``\ ed units will be processed too. You must provide at least one file.
- 
-   These file names are considered to be regular expressions, so for instance
-   specifying :file:`source\*.adb` is the same as giving every file in the current
-   directory whose name starts with :file:`source` and whose extension is
-   :file:`adb`.
- 
-   You shouldn't specify any directory name, just base names. ``gnatxref``
-   and ``gnatfind`` will be able to locate these files by themselves using
-   the source path. If you specify directories, no result is produced.
- 
- The following switches are available for ``gnatxref``:
- 
- 
- .. index:: --version (gnatxref)
- 
- :switch:`--version`
-   Display copyright and version, then exit disregarding all other options.
- 
- 
- .. index:: --help (gnatxref)
- 
- :switch:`--help`
-   If :switch:`--version` was not used, display usage, then exit disregarding
-   all other options.
- 
- 
- .. index:: -a (gnatxref)
- 
- :switch:`-a`
-   If this switch is present, ``gnatfind`` and ``gnatxref`` will parse
-   the read-only files found in the library search path. Otherwise, these files
-   will be ignored. This option can be used to protect Gnat sources or your own
-   libraries from being parsed, thus making ``gnatfind`` and ``gnatxref``
-   much faster, and their output much smaller. Read-only here refers to access
-   or permissions status in the file system for the current user.
- 
- 
- .. index:: -aIDIR (gnatxref)
- 
- :switch:`-aI{DIR}`
-   When looking for source files also look in directory DIR. The order in which
-   source file search is undertaken is the same as for ``gnatmake``.
- 
- 
- .. index:: -aODIR (gnatxref)
- 
- :switch:`aO{DIR}`
-   When -searching for library and object files, look in directory
-   DIR. The order in which library files are searched is the same as for
-   ``gnatmake``.
- 
- 
- .. index:: -nostdinc (gnatxref)
- 
- :switch:`-nostdinc`
-   Do not look for sources in the system default directory.
- 
- 
- .. index:: -nostdlib (gnatxref)
- 
- :switch:`-nostdlib`
-   Do not look for library files in the system default directory.
- 
- 
- .. index:: --ext (gnatxref)
- 
- :switch:`--ext={extension}`
-   Specify an alternate ali file extension. The default is ``ali`` and other
-   extensions (e.g. ``gli`` for C/C++ sources) may be specified via this switch.
-   Note that if this switch overrides the default, only the new extension will
-   be considered.
- 
- 
- .. index:: --RTS (gnatxref)
- 
- :switch:`--RTS={rts-path}`
-   Specifies the default location of the runtime library. Same meaning as the
-   equivalent ``gnatmake`` flag (:ref:`Switches_for_gnatmake`).
- 
- 
- .. index:: -d (gnatxref)
- 
- :switch:`-d`
-   If this switch is set ``gnatxref`` will output the parent type
-   reference for each matching derived types.
- 
- 
- .. index:: -f (gnatxref)
- 
- :switch:`-f`
-   If this switch is set, the output file names will be preceded by their
-   directory (if the file was found in the search path). If this switch is
-   not set, the directory will not be printed.
- 
- 
- .. index:: -g (gnatxref)
- 
- :switch:`-g`
-   If this switch is set, information is output only for library-level
-   entities, ignoring local entities. The use of this switch may accelerate
-   ``gnatfind`` and ``gnatxref``.
- 
- 
- .. index:: -IDIR (gnatxref)
- 
- :switch:`-I{DIR}`
-   Equivalent to :switch:`-aODIR -aIDIR`.
- 
- 
- .. index:: -pFILE (gnatxref)
- 
- :switch:`-p{FILE}`
-   Specify a configuration file to use to list the source and object directories.
- 
-   If a file is specified, then the content of the source directory and object
-   directory lines are added as if they had been specified respectively
-   by :switch:`-aI` and :switch:`-aO`.
- 
-   See :ref:`Configuration_Files_for_gnatxref_and_gnatfind` for the syntax
-   of this configuration file.
- 
- :switch:`-u`
-   Output only unused symbols. This may be really useful if you give your
-   main compilation unit on the command line, as ``gnatxref`` will then
-   display every unused entity and 'with'ed package.
- 
- :switch:`-v`
-   Instead of producing the default output, ``gnatxref`` will generate a
-   :file:`tags` file that can be used by vi. For examples how to use this
-   feature, see :ref:`Examples_of_gnatxref_Usage`. The tags file is output
-   to the standard output, thus you will have to redirect it to a file.
- 
- All these switches may be in any order on the command line, and may even
- appear after the file names. They need not be separated by spaces, thus
- you can say ``gnatxref -ag`` instead of ``gnatxref -a -g``.
- 
- .. _gnatfind_Switches:
- 
- ``gnatfind`` Switches
- ---------------------
- 
- The command invocation for ``gnatfind`` is:
- 
-   ::
- 
-     $ gnatfind [ switches ]  pattern[:sourcefile[:line[:column]]]
-           [file1 file2 ...]
- 
- with the following iterpretation of the command arguments:
- 
- *pattern*
-   An entity will be output only if it matches the regular expression found
-   in *pattern*, see :ref:`Regular_Expressions_in_gnatfind_and_gnatxref`.
- 
-   Omitting the pattern is equivalent to specifying ``*``, which
-   will match any entity. Note that if you do not provide a pattern, you
-   have to provide both a sourcefile and a line.
- 
-   Entity names are given in Latin-1, with uppercase/lowercase equivalence
-   for matching purposes. At the current time there is no support for
-   8-bit codes other than Latin-1, or for wide characters in identifiers.
- 
- *sourcefile*
-   ``gnatfind`` will look for references, bodies or declarations
-   of symbols referenced in :file:`sourcefile`, at line ``line``
-   and column ``column``. See :ref:`Examples_of_gnatfind_Usage`
-   for syntax examples.
- 
- *line*
-   A decimal integer identifying the line number containing
-   the reference to the entity (or entities) to be located.
- 
- 
- *column*
-   A decimal integer identifying the exact location on the
-   line of the first character of the identifier for the
-   entity reference. Columns are numbered from 1.
- 
- 
- *file1 file2 ...*
-   The search will be restricted to these source files. If none are given, then
-   the search will be conducted for every library file in the search path.
-   These files must appear only after the pattern or sourcefile.
- 
-   These file names are considered to be regular expressions, so for instance
-   specifying :file:`source\*.adb` is the same as giving every file in the current
-   directory whose name starts with :file:`source` and whose extension is
-   :file:`adb`.
- 
-   The location of the spec of the entity will always be displayed, even if it
-   isn't in one of :file:`file1`, :file:`file2`, ... The
-   occurrences of the entity in the separate units of the ones given on the
-   command line will also be displayed.
- 
-   Note that if you specify at least one file in this part, ``gnatfind`` may
-   sometimes not be able to find the body of the subprograms.
- 
- At least one of 'sourcefile' or 'pattern' has to be present on
- the command line.
- 
- The following switches are available:
- 
- .. index:: --version (gnatfind)
- 
- :switch:`--version`
-   Display copyright and version, then exit disregarding all other options.
- 
- 
- .. index:: --help (gnatfind)
- 
- :switch:`--help`
-   If :switch:`--version` was not used, display usage, then exit disregarding
-   all other options.
- 
- 
- .. index:: -a (gnatfind)
- 
- :switch:`-a`
-   If this switch is present, ``gnatfind`` and ``gnatxref`` will parse
-   the read-only files found in the library search path. Otherwise, these files
-   will be ignored. This option can be used to protect Gnat sources or your own
-   libraries from being parsed, thus making ``gnatfind`` and ``gnatxref``
-   much faster, and their output much smaller. Read-only here refers to access
-   or permission status in the file system for the current user.
- 
- 
- .. index:: -aIDIR (gnatfind)
- 
- :switch:`-aI{DIR}`
-   When looking for source files also look in directory DIR. The order in which
-   source file search is undertaken is the same as for ``gnatmake``.
- 
- 
- .. index:: -aODIR (gnatfind)
- 
- :switch:`-aO{DIR}`
-   When searching for library and object files, look in directory
-   DIR. The order in which library files are searched is the same as for
-   ``gnatmake``.
- 
- 
- .. index:: -nostdinc (gnatfind)
- 
- :switch:`-nostdinc`
-   Do not look for sources in the system default directory.
- 
- 
- .. index:: -nostdlib (gnatfind)
- 
- :switch:`-nostdlib`
-   Do not look for library files in the system default directory.
- 
- 
- .. index:: --ext (gnatfind)
- 
- :switch:`--ext={extension}`
-   Specify an alternate ali file extension. The default is ``ali`` and other
-   extensions may be specified via this switch. Note that if this switch
-   overrides the default, only the new extension will be considered.
- 
- 
- .. index:: --RTS (gnatfind)
- 
- :switch:`--RTS={rts-path}`
-   Specifies the default location of the runtime library. Same meaning as the
-   equivalent ``gnatmake`` flag (:ref:`Switches_for_gnatmake`).
- 
- 
- .. index:: -d (gnatfind)
- 
- :switch:`-d`
-   If this switch is set, then ``gnatfind`` will output the parent type
-   reference for each matching derived types.
- 
- 
- .. index:: -e (gnatfind)
- 
- :switch:`-e`
-   By default, ``gnatfind`` accept the simple regular expression set for
-   ``pattern``. If this switch is set, then the pattern will be
-   considered as full Unix-style regular expression.
- 
- 
- .. index:: -f (gnatfind)
- 
- :switch:`-f`
-   If this switch is set, the output file names will be preceded by their
-   directory (if the file was found in the search path). If this switch is
-   not set, the directory will not be printed.
- 
- 
- .. index:: -g (gnatfind)
- 
- :switch:`-g`
-   If this switch is set, information is output only for library-level
-   entities, ignoring local entities. The use of this switch may accelerate
-   ``gnatfind`` and ``gnatxref``.
- 
- 
- .. index:: -IDIR (gnatfind)
- 
- :switch:`-I{DIR}`
-   Equivalent to :switch:`-aODIR -aIDIR`.
- 
- 
- .. index:: -pFILE (gnatfind)
- 
- :switch:`-p{FILE}`
-   Specify a configuration file to use to list the source and object directories.
- 
-   If a file is specified, then the content of the source directory and object
-   directory lines are added as if they had been specified respectively
-   by :switch:`-aI` and :switch:`-aO`.
- 
-   See :ref:`Configuration_Files_for_gnatxref_and_gnatfind` for the syntax
-   of this configuration file.
- 
- .. index:: -r (gnatfind)
- 
- :switch:`-r`
-   By default, ``gnatfind`` will output only the information about the
-   declaration, body or type completion of the entities. If this switch is
-   set, the ``gnatfind`` will locate every reference to the entities in
-   the files specified on the command line (or in every file in the search
-   path if no file is given on the command line).
- 
- 
- .. index:: -s (gnatfind)
- 
- :switch:`-s`
-   If this switch is set, then ``gnatfind`` will output the content
-   of the Ada source file lines were the entity was found.
- 
- 
- .. index:: -t (gnatfind)
- 
- :switch:`-t`
-   If this switch is set, then ``gnatfind`` will output the type hierarchy for
-   the specified type. It act like -d option but recursively from parent
-   type to parent type. When this switch is set it is not possible to
-   specify more than one file.
- 
- 
- All these switches may be in any order on the command line, and may even
- appear after the file names. They need not be separated by spaces, thus
- you can say ``gnatxref -ag`` instead of
- ``gnatxref -a -g``.
- 
- As stated previously, ``gnatfind`` will search in every directory in the
- search path. You can force it to look only in the current directory if
- you specify ``*`` at the end of the command line.
- 
- .. _Configuration_Files_for_gnatxref_and_gnatfind:
- 
- Configuration Files for ``gnatxref`` and ``gnatfind``
- -----------------------------------------------------
- 
- Configuration files are used by ``gnatxref`` and ``gnatfind`` to specify
- the list of source and object directories to consider. They can be
- specified via the :switch:`-p` switch.
- 
- The following lines can be included, in any order in the file:
- 
- * *src_dir=DIR*
-     [default: ``"./"``].
-     Specifies a directory where to look for source files. Multiple ``src_dir``
-     lines can be specified and they will be searched in the order they
-     are specified.
- 
- * *obj_dir=DIR*
-     [default: ``"./"``].
-     Specifies a directory where to look for object and library files. Multiple
-     ``obj_dir`` lines can be specified, and they will be searched in the order
-     they are specified
- 
- Any other line will be silently ignored.
- 
- .. _Regular_Expressions_in_gnatfind_and_gnatxref:
- 
- Regular Expressions in ``gnatfind`` and ``gnatxref``
- ----------------------------------------------------
- 
- As specified in the section about ``gnatfind``, the pattern can be a
- regular expression. Two kinds of regular expressions
- are recognized:
- 
- * *Globbing pattern*
-     These are the most common regular expression. They are the same as are
-     generally used in a Unix shell command line, or in a DOS session.
- 
-     Here is a more formal grammar:
- 
-     ::
- 
-         regexp ::= term
-         term   ::= elmt            -- matches elmt
-         term   ::= elmt elmt       -- concatenation (elmt then elmt)
-         term   ::= *               -- any string of 0 or more characters
-         term   ::= ?               -- matches any character
-         term   ::= [char {char}]   -- matches any character listed
-         term   ::= [char - char]   -- matches any character in range
- 
- * *Full regular expression*
-     The second set of regular expressions is much more powerful. This is the
-     type of regular expressions recognized by utilities such as ``grep``.
- 
-     The following is the form of a regular expression, expressed in same BNF
-     style as is found in the Ada Reference Manual:
- 
-     ::
- 
-         regexp ::= term {| term}   -- alternation (term or term ...)
- 
-         term ::= item {item}       -- concatenation (item then item)
- 
-         item ::= elmt              -- match elmt
-         item ::= elmt *            -- zero or more elmt's
-         item ::= elmt +            -- one or more elmt's
-         item ::= elmt ?            -- matches elmt or nothing
- 
-         elmt ::= nschar            -- matches given character
-         elmt ::= [nschar {nschar}]   -- matches any character listed
-         elmt ::= [^ nschar {nschar}] -- matches any character not listed
-         elmt ::= [char - char]     -- matches chars in given range
-         elmt ::= \\ char            -- matches given character
-         elmt ::= .                 -- matches any single character
-         elmt ::= ( regexp )        -- parens used for grouping
- 
-         char ::= any character, including special characters
-         nschar ::= any character except ()[].*+?^
- 
-     Here are a few examples:
- 
-       ``abcde|fghi``
-           will match any of the two strings ``abcde`` and ``fghi``,
- 
-       ``abc*d``
-           will match any string like ``abd``, ``abcd``, ``abccd``,
-           ``abcccd``, and so on,
- 
-       ``[a-z]+``
-           will match any string which has only lowercase characters in it (and at
-           least one character.
- 
- 
- .. _Examples_of_gnatxref_Usage:
- 
- Examples of ``gnatxref`` Usage
- ------------------------------
- 
- General Usage
- ^^^^^^^^^^^^^
- 
- For the following examples, we will consider the following units:
- 
-   .. code-block:: ada
- 
-      main.ads:
-      1: with Bar;
-      2: package Main is
-      3:     procedure Foo (B : in Integer);
-      4:     C : Integer;
-      5: private
-      6:     D : Integer;
-      7: end Main;
- 
-      main.adb:
-      1: package body Main is
-      2:     procedure Foo (B : in Integer) is
-      3:     begin
-      4:        C := B;
-      5:        D := B;
-      6:        Bar.Print (B);
-      7:        Bar.Print (C);
-      8:     end Foo;
-      9: end Main;
- 
-      bar.ads:
-      1: package Bar is
-      2:     procedure Print (B : Integer);
-      3: end bar;
- 
- The first thing to do is to recompile your application (for instance, in
- that case just by doing a ``gnatmake main``, so that GNAT generates
- the cross-referencing information.
- You can then issue any of the following commands:
- 
-   * ``gnatxref main.adb``
-     ``gnatxref`` generates cross-reference information for main.adb
-     and every unit 'with'ed by main.adb.
- 
-     The output would be:
- 
-       ::
- 
-           B                                                      Type: Integer
-             Decl: bar.ads           2:22
-           B                                                      Type: Integer
-             Decl: main.ads          3:20
-             Body: main.adb          2:20
-             Ref:  main.adb          4:13     5:13     6:19
-           Bar                                                    Type: Unit
-             Decl: bar.ads           1:9
-             Ref:  main.adb          6:8      7:8
-                  main.ads           1:6
-           C                                                      Type: Integer
-             Decl: main.ads          4:5
-             Modi: main.adb          4:8
-             Ref:  main.adb          7:19
-           D                                                      Type: Integer
-             Decl: main.ads          6:5
-             Modi: main.adb          5:8
-           Foo                                                    Type: Unit
-             Decl: main.ads          3:15
-             Body: main.adb          2:15
-           Main                                                    Type: Unit
-             Decl: main.ads          2:9
-             Body: main.adb          1:14
-           Print                                                   Type: Unit
-             Decl: bar.ads           2:15
-             Ref:  main.adb          6:12     7:12
- 
- 
-     This shows that the entity ``Main`` is declared in main.ads, line 2, column 9,
-     its body is in main.adb, line 1, column 14 and is not referenced any where.
- 
-     The entity ``Print`` is declared in :file:`bar.ads`, line 2, column 15 and it
-     is referenced in :file:`main.adb`, line 6 column 12 and line 7 column 12.
- 
- 
-   * ``gnatxref package1.adb package2.ads``
-     ``gnatxref`` will generates cross-reference information for
-     :file:`package1.adb`, :file:`package2.ads` and any other package ``with``\ ed by any
-     of these.
- 
- 
- Using ``gnatxref`` with ``vi``
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- 
- ``gnatxref`` can generate a tags file output, which can be used
- directly from ``vi``. Note that the standard version of ``vi``
- will not work properly with overloaded symbols. Consider using another
- free implementation of ``vi``, such as ``vim``.
- 
-   ::
- 
-      $ gnatxref -v gnatfind.adb > tags
- 
- 
- The following command will generate the tags file for ``gnatfind`` itself
- (if the sources are in the search path!):
- 
-   ::
- 
-      $ gnatxref -v gnatfind.adb > tags
- 
- From ``vi``, you can then use the command :samp:`:tag {entity}`
- (replacing ``entity`` by whatever you are looking for), and vi will
- display a new file with the corresponding declaration of entity.
- 
- 
- .. _Examples_of_gnatfind_Usage:
- 
- Examples of ``gnatfind`` Usage
- ------------------------------
- 
- * ``gnatfind -f xyz:main.adb``
-   Find declarations for all entities xyz referenced at least once in
-   main.adb. The references are search in every library file in the search
-   path.
- 
-   The directories will be printed as well (as the ``-f``
-   switch is set)
- 
-   The output will look like:
- 
-     ::
- 
-        directory/main.ads:106:14: xyz <= declaration
-        directory/main.adb:24:10: xyz <= body
-        directory/foo.ads:45:23: xyz <= declaration
- 
-   I.e., one of the entities xyz found in main.adb is declared at
-   line 12 of main.ads (and its body is in main.adb), and another one is
-   declared at line 45 of foo.ads
- 
- * ``gnatfind -fs xyz:main.adb``
-   This is the same command as the previous one, but ``gnatfind`` will
-   display the content of the Ada source file lines.
- 
-   The output will look like:
- 
-   ::
- 
-       directory/main.ads:106:14: xyz <= declaration
-          procedure xyz;
-       directory/main.adb:24:10: xyz <= body
-          procedure xyz is
-       directory/foo.ads:45:23: xyz <= declaration
-          xyz : Integer;
- 
-   This can make it easier to find exactly the location your are looking
-   for.
- 
- 
- * ``gnatfind -r "*x*":main.ads:123 foo.adb``
-   Find references to all entities containing an x that are
-   referenced on line 123 of main.ads.
-   The references will be searched only in main.ads and foo.adb.
- 
- 
- * ``gnatfind main.ads:123``
-   Find declarations and bodies for all entities that are referenced on
-   line 123 of main.ads.
- 
-   This is the same as ``gnatfind "*":main.adb:123```
- 
- * ``gnatfind mydir/main.adb:123:45``
-   Find the declaration for the entity referenced at column 45 in
-   line 123 of file main.adb in directory mydir. Note that it
-   is usual to omit the identifier name when the column is given,
-   since the column position identifies a unique reference.
- 
-   The column has to be the beginning of the identifier, and should not
-   point to any character in the middle of the identifier.
- 
- 
- .. _The_Ada_to_HTML_Converter_gnathtml:
- 
- The Ada to HTML Converter ``gnathtml``
- ======================================
- 
- .. index:: ! gnathtml
- 
- ``gnathtml`` is a Perl script that allows Ada source files to be browsed using
- standard Web browsers. For installation information, see :ref:`Installing_gnathtml`.
- 
- Ada reserved keywords are highlighted in a bold font and Ada comments in
- a blue font. Unless your program was compiled with the gcc :switch:`-gnatx`
- switch to suppress the generation of cross-referencing information, user
- defined variables and types will appear in a different color; you will
- be able to click on any identifier and go to its declaration.
- 
- .. _Invoking_gnathtml:
- 
- Invoking ``gnathtml``
- ---------------------
- 
- The command line is as follows:
- 
-   ::
- 
-       $ perl gnathtml.pl [ switches ] ada-files
- 
- You can specify as many Ada files as you want. ``gnathtml`` will generate
- an html file for every ada file, and a global file called :file:`index.htm`.
- This file is an index of every identifier defined in the files.
- 
- The following switches are available:
- 
- .. index:: -83 (gnathtml)
- 
- :samp:`83`
-   Only the Ada 83 subset of keywords will be highlighted.
- 
- .. index:: -cc (gnathtml)
- 
- :samp:`cc {color}`
-   This option allows you to change the color used for comments. The default
-   value is green. The color argument can be any name accepted by html.
- 
- .. index:: -d (gnathtml)
- 
- :samp:`d`
-   If the Ada files depend on some other files (for instance through
-   ``with`` clauses, the latter files will also be converted to html.
-   Only the files in the user project will be converted to html, not the files
-   in the run-time library itself.
- 
- .. index:: -D (gnathtml)
- 
- :samp:`D`
-   This command is the same as :switch:`-d` above, but ``gnathtml`` will
-   also look for files in the run-time library, and generate html files for them.
- 
- .. index:: -ext (gnathtml)
- 
- :samp:`ext {extension}`
-   This option allows you to change the extension of the generated HTML files.
-   If you do not specify an extension, it will default to :file:`htm`.
- 
- .. index:: -f (gnathtml)
- 
- :samp:`f`
-   By default, gnathtml will generate html links only for global entities
-   ('with'ed units, global variables and types,...). If you specify
-   :switch:`-f` on the command line, then links will be generated for local
-   entities too.
- 
- .. index:: -l (gnathtml)
- 
- :samp:`l {number}`
-   If this switch is provided and ``number`` is not 0, then
-   ``gnathtml`` will number the html files every ``number`` line.
- 
- .. index:: -I (gnathtml)
- 
- :samp:`I {dir}`
-   Specify a directory to search for library files (:file:`.ALI` files) and
-   source files. You can provide several -I switches on the command line,
-   and the directories will be parsed in the order of the command line.
- 
- .. index:: -o (gnathtml)
- 
- :samp:`o {dir}`
-   Specify the output directory for html files. By default, gnathtml will
-   saved the generated html files in a subdirectory named :file:`html/`.
- 
- .. index:: -p (gnathtml)
- 
- :samp:`p {file}`
-   If you are using Emacs and the most recent Emacs Ada mode, which provides
-   a full Integrated Development Environment for compiling, checking,
-   running and debugging applications, you may use :file:`.gpr` files
-   to give the directories where Emacs can find sources and object files.
- 
-   Using this switch, you can tell gnathtml to use these files.
-   This allows you to get an html version of your application, even if it
-   is spread over multiple directories.
- 
- .. index:: -sc (gnathtml)
- 
- :samp:`sc {color}`
-   This switch allows you to change the color used for symbol
-   definitions.
-   The default value is red. The color argument can be any name accepted by html.
- 
- .. index:: -t (gnathtml)
- 
- :samp:`t {file}`
-   This switch provides the name of a file. This file contains a list of
-   file names to be converted, and the effect is exactly as though they had
-   appeared explicitly on the command line. This
-   is the recommended way to work around the command line length limit on some
-   systems.
- 
- .. _Installing_gnathtml:
- 
- Installing ``gnathtml``
- -----------------------
- 
- ``Perl`` needs to be installed on your machine to run this script.
- ``Perl`` is freely available for almost every architecture and
- operating system via the Internet.
- 
- On Unix systems, you  may want to modify  the  first line of  the script
- ``gnathtml``,  to explicitly  specify  where Perl
- is located. The syntax of this line is:
- 
-   ::
- 
-      #!full_path_name_to_perl
- 
- Alternatively, you may run the script using the following command line:
- 
-   ::
- 
-      $ perl gnathtml.pl [ switches ] files
- 
- 
- 
- 
- .. -- +---------------------------------------------------------------------+
- .. -- | The following sections are present only in the PRO and GPL editions |
- .. -- +---------------------------------------------------------------------+
- 
- .. only:: PRO or GPL
- 
-   .. _The_Ada-to-XML_converter_gnat2xml:
- 
-   The Ada-to-XML converter ``gnat2xml``
-   =====================================
- 
-   .. index:: ! gnat2xml
-   .. index:: XML generation
- 
-   The ``gnat2xml`` tool is an ASIS-based utility that converts
-   Ada source code into XML.
- 
-   ``gnat2xml`` is a project-aware tool
-   (see :ref:`Using_Project_Files_with_GNAT_Tools` for a description of
-   the project-related switches). The project file package that can specify
-   ``gnat2xml`` switches is named ``gnat2xml``.
- 
-   .. _Switches_for_``gnat2xml``:
- 
-   Switches for ``gnat2xml``
-   -------------------------
- 
-   ``gnat2xml`` takes Ada source code as input, and produces XML
-   that conforms to the schema.
- 
-   Usage:
- 
-     ::
- 
-        $ gnat2xml [options] filenames [-files filename] [-cargs gcc_switches]
- 
-   Options:
- 
-      :switch:`--help`
-           Generate usage information and quit, ignoring all other options
- 
-      :switch:`-h`
-           Same as ``--help``
- 
-      :switch:`--version`
-           Print version and quit, ignoring all other options
- 
-      :switch:`-P{file}`
-           indicates the name of the project file that describes
-           the set of sources to be processed. The exact set of argument
-           sources depends on other options specified, see below.
- 
-      :switch:`-U`
-           If a project file is specified and no argument source is explicitly
-           specified, process all the units of the closure of the argument project.
-           Otherwise this option has no effect.
- 
-      :switch:`-U {main_unit}`
-           If a project file is specified and no argument source
-           is explicitly specified (either directly or by means of :switch:`-files`
-           option), process the closure of units rooted at ``main_unit``.
-           Otherwise this option has no effect.
- 
-      :switch:`-X{name}={value}`
-           Indicates that external variable ``name`` in
-           the argument project has the value ``value``. Has no effect if no
-           project is specified.
- 
-      :switch:`--RTS={rts-path}`
-           Specifies the default location of the runtime
-           library. Same meaning as the equivalent ``gnatmake`` flag
-           (:ref:`Switches_for_gnatmake`).
- 
-      :switch:`--incremental`
-           Incremental processing on a per-file basis. Source files are
-           only processed if they have been modified, or if files they depend
-           on have been modified. This is similar to the way gnatmake/gprbuild
-           only compiles files that need to be recompiled. A project file
-           is required in this mode.
- 
-      :switch:`-j{n}`
-            In :switch:`--incremental` mode, use ``n`` ``gnat2xml``
-            processes to perform XML generation in parallel. If ``n`` is 0, then
-            the maximum number of parallel tree creations is the number of core
-            processors on the platform.
- 
-      :switch:`--output-dir={dir}`
-           Generate one .xml file for each Ada source file, in
-           directory :file:`dir`. (Default is to generate the XML to standard
-           output.)
- 
-      :switch:`-I{include-dir}`
-           Directories to search for dependencies.
-           You can also set the ADA_INCLUDE_PATH environment variable for this.
- 
-      :switch:`--compact`
-           Debugging version, with interspersed source, and a more
-           compact representation of "sloc". This version does not conform
-           to any schema.
- 
-      :switch:`--rep-clauses`
-           generate representation clauses (see :ref:`Generating_Representation_Clauses`).
- 
-      :switch:`-files={filename}`
-          Take as arguments the files listed in text file ``file``.
-          Text file ``file`` may contain empty lines that are ignored.
-          Each nonempty line should contain the name of an existing file.
-          Several such switches may be specified simultaneously.
- 
-      :switch:`--ignore={filename}`
-          Do not process the sources listed in a specified file. This option cannot
-          be used in incremental mode.
- 
-      :switch:`-q`
-          Quiet
- 
-      :switch:`-v`
-          Verbose
- 
-      :switch:`-cargs` ...
-          Options to pass to gcc
- 
-   If a project file is specified and no argument source is explicitly
-   specified, and no :switch:`-U` is specified, then the set of processed
-   sources is all the immediate units of the argument project.
- 
-   Example:
- 
-     ::
- 
-        $ gnat2xml -v -output-dir=xml-files *.ad[sb]
- 
-   The above will create \*.xml files in the :file:`xml-files` subdirectory.
-   For example, if there is an Ada package Mumble.Dumble, whose spec and
-   body source code lives in mumble-dumble.ads and mumble-dumble.adb,
-   the above will produce xml-files/mumble-dumble.ads.xml and
-   xml-files/mumble-dumble.adb.xml.
- 
-   .. _Other_Programs:
- 
-   Other Programs
-   --------------
- 
-   The distribution includes two other programs that are related to
-   ``gnat2xml``:
- 
-   ``gnat2xsd`` is the schema generator, which generates the schema
-   to standard output, based on the structure of Ada as encoded by
-   ASIS. You don't need to run ``gnat2xsd`` in order to use
-   ``gnat2xml``. To generate the schema, type:
- 
- 
-     ::
- 
-         $ gnat2xsd > ada-schema.xsd
- 
- 
-   ``gnat2xml`` generates XML files that will validate against
-   :file:`ada-schema.xsd`.
- 
-   ``xml2gnat`` is a back-translator that translates the XML back into
-   Ada source code. This is primarily for the purpose of testing
-   ``gnat2xml``, rather than for users. The Ada generated by ``xml2gnat``
-   has identical semantics to the original Ada code passed to
-   ``gnat2xml``. It is not textually identical, however --- for example,
-   no attempt is made to preserve the original indentation.
- 
-   The ``xml2gnat`` command line contains a list of the same Ada files
-   passed to gnat2xml (not the names of xml files). The xml files are
-   assumed to be in an 'xml' subdirectory of the directory in which the
-   Ada source files are. So for example, if the Ada source file is
-   some/dir/mumble.adb, then the xml file is found in
-   some/dir/xml/mumble.adb.xml. You should use the :switch:`--output-dir`
-   switch of ``gnat2xml`` to tell it to generate the output in the xml
-   subdirectory, so ``xml2gnat`` can find it.
- 
-   Output goes into subdirectories "generated_ada" and "self_rep" of the
-   output directory, which is the current directory by default, but can
-   be overridden with --output-dir=dir on the command line.
- 
-   .. _Structure_of_the_XML:
- 
-   Structure of the XML
-   --------------------
- 
-   The primary documentation for the structure of the XML generated by
-   ``gnat2xml`` is the schema (see ``gnat2xsd`` above). The
-   following documentation gives additional details needed to understand
-   the schema and therefore the XML.
- 
-   The elements listed under Defining Occurrences, Usage Occurrences, and
-   Other Elements represent the syntactic structure of the Ada program.
-   Element names are given in lower case, with the corresponding element
-   type Capitalized_Like_This. The element and element type names are
-   derived directly from the ASIS enumeration type Flat_Element_Kinds,
-   declared in Asis.Extensions.Flat_Kinds, with the leading ``An_`` or ``A_``
-   removed. For example, the ASIS enumeration literal
-   An_Assignment_Statement corresponds to the XML element
-   assignment_statement of XML type Assignment_Statement.
- 
-   To understand the details of the schema and the corresponding XML, it is
-   necessary to understand the ASIS standard, as well as the GNAT-specific
-   extension to ASIS.
- 
-   A defining occurrence is an identifier (or character literal or operator
-   symbol) declared by a declaration. A usage occurrence is an identifier
-   (or ...) that references such a declared entity. For example, in:
- 
- 
-     .. code-block:: ada
- 
-        type T is range 1..10;
-        X, Y : constant T := 1;
- 
- 
-   The first 'T' is the defining occurrence of a type. The 'X' is the
-   defining occurrence of a constant, as is the 'Y', and the second 'T' is
-   a usage occurrence referring to the defining occurrence of T.
- 
-   Each element has a 'sloc' (source location), and subelements for each
-   syntactic subtree, reflecting the Ada grammar as implemented by ASIS.
-   The types of subelements are as defined in the ASIS standard. For
-   example, for the right-hand side of an assignment_statement we have
-   the following comment in asis-statements.ads:
- 
-     .. code-block:: ada
- 
-         ------------------------------------------------------------------------------
-         --  18.3  function Assignment_Expression
-         ------------------------------------------------------------------------------
- 
-            function Assignment_Expression
-              (Statement : Asis.Statement)
-               return      Asis.Expression;
- 
-         ------------------------------------------------------------------------------
-         ...
-         --  Returns the expression from the right hand side of the assignment.
-         ...
-         --  Returns Element_Kinds:
-         --       An_Expression
- 
- 
-   The corresponding sub-element of type Assignment_Statement is:
- 
-     ::
- 
-         <xsd:element name="assignment_expression_q" type="Expression_Class"/>
- 
-   where Expression_Class is defined by an xsd:choice of all the
-   various kinds of expression.
- 
-   The 'sloc' of each element indicates the starting and ending line and
-   column numbers. Column numbers are character counts; that is, a tab
-   counts as 1, not as however many spaces it might expand to.
- 
-   Subelements of type Element have names ending in '_q' (for ASIS
-   "Query"), and those of type Element_List end in '_ql'
-   ("Query returning  List").
- 
-   Some subelements are 'Boolean'. For example, Private_Type_Definition
-   has has_abstract_q and has_limited_q, to indicate whether those
-   keywords are present, as in ``type T is abstract limited private;``.
-   False is represented by a Nil_Element. True is represented
-   by an element type specific to that query (for example, Abstract and
-   Limited).
- 
-   The root of the tree is a Compilation_Unit, with attributes:
- 
-   * unit_kind, unit_class, and unit_origin. These are strings that match the
-     enumeration literals of types Unit_Kinds, Unit_Classes, and Unit_Origins
-     in package Asis.
- 
-   * unit_full_name is the full expanded name of the unit, starting from a
-     root library unit. So for ``package P.Q.R is ...``,
-     ``unit_full_name="P.Q.R"``. Same for ``separate (P.Q) package R is ...``.
- 
-   * def_name is the same as unit_full_name for library units; for subunits,
-     it is just the simple name.
- 
-   * source_file is the name of the Ada source file. For example, for
-     the spec of ``P.Q.R``, ``source_file="p-q-r.ads"``. This allows one to
-     interpret the source locations --- the 'sloc' of all elements
-     within this Compilation_Unit refers to line and column numbers
-     within the named file.
- 
-   Defining occurrences have these attributes:
- 
-   * def_name is the simple name of the declared entity, as written in the Ada
-     source code.
- 
-   * def is a unique URI of the form:
- 
-     ::
- 
-         ada://kind/fully/qualified/name
- 
-     where:
- 
-     * kind indicates the kind of Ada entity being declared (see below), and
- 
-     * fully/qualified/name, is the fully qualified name of the Ada
-       entity, with each of 'fully', 'qualified', and 'name' being
-       mangled for uniqueness. We do not document the mangling
-       algorithm, which is subject to change; we just guarantee that the
-       names are unique in the face of overloading.
- 
-     * type is the type of the declared object, or ``null`` for
-       declarations of things other than objects.
- 
-   Usage occurrences have these attributes:
- 
-   * ref_name is the same as the def_name of the corresponding defining
-     occurrence. This attribute is not of much use, because of
-     overloading; use ref for lookups, instead.
- 
-   * ref is the same as the def of the corresponding defining
-     occurrence.
- 
-   In summary, ``def_name`` and ``ref_name`` are as in the source
-   code of the declaration, possibly overloaded, whereas ``def`` and
-   ``ref`` are unique-ified.
- 
-   Literal elements have this attribute:
- 
-   * lit_val is the value of the literal as written in the source text,
-     appropriately escaped (e.g. ``"`` |rightarrow| ``&quot;``). This applies
-     only to numeric and string literals. Enumeration literals in Ada are
-     not really "literals" in the usual sense; they are usage occurrences,
-     and have ref_name and ref as described above. Note also that string
-     literals used as operator symbols are treated as defining or usage
-     occurrences, not as literals.
- 
-   Elements that can syntactically represent names and expressions (which
-   includes usage occurrences, plus function calls and so forth) have this
-   attribute:
- 
-   * type. If the element represents an expression or the name of an object,
-     'type' is the 'def' for the defining occurrence of the type of that
-     expression or name. Names of other kinds of entities, such as package
-     names and type names, do not have a type in Ada; these have type="null"
-     in the XML.
- 
-   Pragma elements have this attribute:
- 
-   *  pragma_name is the name of the pragma. For language-defined pragmas, the
-      pragma name is redundant with the element kind (for example, an
-      assert_pragma element necessarily has pragma_name="Assert"). However, all
-      implementation-defined pragmas are lumped together in ASIS as a single
-      element kind (for example, the GNAT-specific pragma Unreferenced is
-      represented by an implementation_defined_pragma element with
-      pragma_name="Unreferenced").
- 
-   Defining occurrences of formal parameters and generic formal objects have this
-   attribute:
- 
-   * mode indicates that the parameter is of mode 'in', 'in out', or 'out'.
- 
-   All elements other than Not_An_Element have this attribute:
- 
-   * checks is a comma-separated list of run-time checks that are needed
-     for that element. The possible checks are: do_accessibility_check,
-     do_discriminant_check,do_division_check,do_length_check,
-     do_overflow_check,do_range_check,do_storage_check,do_tag_check.
- 
-   The "kind" part of the "def" and "ref" attributes is taken from the ASIS
-   enumeration type Flat_Declaration_Kinds, declared in
-   Asis.Extensions.Flat_Kinds, with the leading ``An_`` or ``A_`` removed, and
-   any trailing ``_Declaration`` or ``_Specification`` removed. Thus, the
-   possible kinds are as follows:
- 
-     ::
- 
-         ordinary_type
-         task_type
-         protected_type
-         incomplete_type
-         tagged_incomplete_type
-         private_type
-         private_extension
-         subtype
-         variable
-         constant
-         deferred_constant
-         single_task
-         single_protected
-         integer_number
-         real_number
-         enumeration_literal
-         discriminant
-         component
-         loop_parameter
-         generalized_iterator
-         element_iterator
-         procedure
-         function
-         parameter
-         procedure_body
-         function_body
-         return_variable
-         return_constant
-         null_procedure
-         expression_function
-         package
-         package_body
-         object_renaming
-         exception_renaming
-         package_renaming
-         procedure_renaming
-         function_renaming
-         generic_package_renaming
-         generic_procedure_renaming
-         generic_function_renaming
-         task_body
-         protected_body
-         entry
-         entry_body
-         entry_index
-         procedure_body_stub
-         function_body_stub
-         package_body_stub
-         task_body_stub
-         protected_body_stub
-         exception
-         choice_parameter
-         generic_procedure
-         generic_function
-         generic_package
-         package_instantiation
-         procedure_instantiation
-         function_instantiation
-         formal_object
-         formal_type
-         formal_incomplete_type
-         formal_procedure
-         formal_function
-         formal_package
-         formal_package_declaration_with_box
- 
-   .. _Generating_Representation_Clauses:
- 
-   Generating Representation Clauses
-   ---------------------------------
- 
-   If the :switch:`--rep-clauses` switch is given, ``gnat2xml`` will
-   generate representation clauses for certain types showing the
-   representation chosen by the compiler. The information is produced by
-   the ASIS 'Data Decomposition' facility --- see the
-   ``Asis.Data_Decomposition`` package for details.
- 
-   Not all types are supported. For example, ``Type_Model_Kind`` must
-   be ``A_Simple_Static_Model``. Types declared within generic units
-   have no representation. The clauses that are generated include
-   ``attribute_definition_clauses`` for ``Size`` and
-   ``Component_Size``, as well as
-   ``record_representation_clauses``.
- 
-   There is no guarantee that the generated representation clauses could
-   have actually come from legal Ada code; Ada has some restrictions that
-   are not necessarily obeyed by the generated clauses.
- 
-   The representation clauses are surrounded by comment elements to
-   indicate that they are automatically generated, something like this:
- 
-     ::
- 
-         <comment text="--gen+">
-         ...
-         <attribute_definition_clause>
-         ...
-         <comment text="--gen-">
-         ...
- 
- 
  .. only:: PRO or GPL
  
    .. _The_Coding_Standard_Verifier_gnatcheck:
--- 467,472 ----
*************** Alternatively, you may run the script us
*** 2338,2348 ****
      Do not report the number of public subprograms with complete contracts
  
  
!   :switch:`--contract-all`
      Report the McCabe complexity of public subprograms
  
  
!   :switch:`--no-contract-all`
      Do not report the McCabe complexity of public subprograms
  
  
--- 1040,1050 ----
      Do not report the number of public subprograms with complete contracts
  
  
!   :switch:`--contract-cyclomatic`
      Report the McCabe complexity of public subprograms
  
  
!   :switch:`--no-contract-cyclomatic`
      Do not report the McCabe complexity of public subprograms
  
  
*************** Alternatively, you may run the script us
*** 2790,2796 ****
      Use the specified subdirectory of the project objects file (or of the
      project file directory if the project does not specify an object directory)
      for tool output files. Has no effect if no project is specified as
!     tool argument r if :switch:`--no_objects_dir` is specified.
  
  
    .. index:: --files (gnatmetric)
--- 1492,1498 ----
      Use the specified subdirectory of the project objects file (or of the
      project file directory if the project does not specify an object directory)
      for tool output files. Has no effect if no project is specified as
!     tool argument r if :switch:`--no-objects-dir` is specified.
  
  
    .. index:: --files (gnatmetric)
*************** Alternatively, you may run the script us
*** 3219,3229 ****
  
     :switch:`--comments-fill`
       Fill comment blocks.
  
  
     :switch:`--comments-special`
       Keep unchanged special form comments.
!      This is the default.
  
  
     .. index:: --comments-only (gnatpp)
--- 1921,1932 ----
  
     :switch:`--comments-fill`
       Fill comment blocks.
+      The default is :switch:`--no-comments-fill`.
  
  
     :switch:`--comments-special`
       Keep unchanged special form comments.
!      The default is :switch:`--no-comments-special`.
  
  
     .. index:: --comments-only (gnatpp)
*************** Alternatively, you may run the script us
*** 3245,3250 ****
--- 1948,1961 ----
       Do not place the keyword ``is`` on a separate line in a subprogram body in
       case if the spec occupies more than one line.
  
+    .. index:: --no-separate-return (gnatpp)
+ 
+ 
+    :switch:`--no-separate-return`
+      In :switch:`--no-compact` mode, if a subprogram spec does not fit on
+      one line, try to place the ``return`` on the same line as the last
+      formal parameter.
+ 
     .. index:: --separate-loop (gnatpp)
  
  
*************** Alternatively, you may run the script us
*** 3412,3432 ****
  
     :switch:`--RM-style-spacing`
       Do not insert an extra blank before various occurrences of
!      '(' and ':'. This also turns off alignment.
  
  
!    .. index:: --call_threshold (gnatpp)
  
!    :switch:`--call_threshold={nnn}`
       If the number of parameter associations is greater than ``nnn`` and if at
       least one association uses named notation, start each association from
       a new line. If ``nnn`` is 0, no check for the number of associations
       is made; this is the default.
  
  
!    .. index:: --par_threshold (gnatpp)
  
!    :switch:`--par_threshold={nnn}`
       If the number of parameter specifications is greater than ``nnn``
       (or equal to ``nnn`` in case of a function), start each specification from
       a new line. If ``nnn`` is 0, and :switch:`--no-separate-is` was not specified, then
--- 2123,2171 ----
  
     :switch:`--RM-style-spacing`
       Do not insert an extra blank before various occurrences of
!      '(' and ':'. Alignment is off by default in this mode;
!      use :switch:`--alignment` to turn it on.
  
  
!    .. index:: --compact (gnatpp)
!    .. index:: --no-compact (gnatpp)
  
!    :switch:`--compact`
!      This is the default. In calls and similar, this packs as many
!      subexpressions on the same line as possible. Example:
! 
!      .. code-block:: ada
! 
!         Some_Procedure
!           (Short_One, Another_Short_One,
!            A_Very_Very_Very_Very_Very_Very_Very_Very_Long_One);
! 
!    :switch:`--no-compact`
!      Turns off --compact mode. In calls and similar, if it is necessary
!      to split a line between two subexpressions (because otherwise the
!      construct would exceed --max-line-length), then all such subexpressions
!      are placed on separate lines. Example:
! 
!      .. code-block:: ada
! 
!         Some_Procedure
!           (Short_One,
!            Another_Short_One,
!            A_Very_Very_Very_Very_Very_Very_Very_Very_Long_One);
! 
! 
!    .. index:: --call-threshold (gnatpp)
! 
!    :switch:`--call-threshold={nnn}`
       If the number of parameter associations is greater than ``nnn`` and if at
       least one association uses named notation, start each association from
       a new line. If ``nnn`` is 0, no check for the number of associations
       is made; this is the default.
  
  
!    .. index:: --par-threshold (gnatpp)
  
!    :switch:`--par-threshold={nnn}`
       If the number of parameter specifications is greater than ``nnn``
       (or equal to ``nnn`` in case of a function), start each specification from
       a new line. If ``nnn`` is 0, and :switch:`--no-separate-is` was not specified, then
*************** Alternatively, you may run the script us
*** 4246,4252 ****
    (See :ref:`Using_Project_Files_with_GNAT_Tools` for a description of
    the project-related switches but note that ``gnatstub`` does not support
    the :switch:`-U`, :switch:`-U {main_unit}`, :switch:`--subdirs={dir}`, or
!   :switch:`--no_objects_dir` switches.)
    The project file package that can specify
    ``gnatstub`` switches is named ``gnatstub``.
  
--- 2985,2991 ----
    (See :ref:`Using_Project_Files_with_GNAT_Tools` for a description of
    the project-related switches but note that ``gnatstub`` does not support
    the :switch:`-U`, :switch:`-U {main_unit}`, :switch:`--subdirs={dir}`, or
!   :switch:`--no-objects-dir` switches.)
    The project file package that can specify
    ``gnatstub`` switches is named ``gnatstub``.
  
*************** Alternatively, you may run the script us
*** 4543,4549 ****
    (See :ref:`Using_Project_Files_with_GNAT_Tools` for a description of
    the project-related switches but note that ``gnattest`` does not support
    the :switch:`-U`, :switch:`-eL`, :switch:`--subdirs={dir}`, or
!   :switch:`--no_objects_dir` switches.)
    The project file package that can specify
    ``gnattest`` switches is named ``gnattest``.
  
--- 3282,3288 ----
    (See :ref:`Using_Project_Files_with_GNAT_Tools` for a description of
    the project-related switches but note that ``gnattest`` does not support
    the :switch:`-U`, :switch:`-eL`, :switch:`--subdirs={dir}`, or
!   :switch:`--no-objects-dir` switches.)
    The project file package that can specify
    ``gnattest`` switches is named ``gnattest``.
  
*************** Alternatively, you may run the script us
*** 5634,5642 ****
        Use the ``dir`` subdirectory of the project's object directory (or the ``dir``
        subdirectory of the project file directory if the project does not specify
        an object directory) for tool output files. Has no effect if no project
!       has been specified or if :switch:`--no_objects_dir` is specified.
  
!    :switch:`--no_objects_dir`
        Place all the result files into the current directory (i.e., the directory
        from which the tool invocation command is issued) instead of the project's
        object directory. Has no effect if no project has been specified.
--- 4373,4381 ----
        Use the ``dir`` subdirectory of the project's object directory (or the ``dir``
        subdirectory of the project file directory if the project does not specify
        an object directory) for tool output files. Has no effect if no project
!       has been specified or if :switch:`--no-objects-dir` is specified.
  
!    :switch:`--no-objects-dir`
        Place all the result files into the current directory (i.e., the directory
        from which the tool invocation command is issued) instead of the project's
        object directory. Has no effect if no project has been specified.
diff -Nrcpad gcc-10.3.0/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst gcc-11.1.0/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
*** gcc-10.3.0/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst	Tue Apr 27 10:00:12 2021
*************** The basic compilation model of GNAT requ
*** 1067,1089 ****
  compiler have only one unit and there be a strict correspondence
  between the file name and the unit name.
  
! The ``gnatchop`` utility allows both of these rules to be relaxed,
! allowing GNAT to process files which contain multiple compilation units
! and files with arbitrary file names. ``gnatchop``
! reads the specified file and generates one or more output files,
! containing one unit per file. The unit and the file name correspond,
! as required by GNAT.
  
! If you want to permanently restructure a set of 'foreign' files so that
! they match the GNAT rules, and do the remaining development using the
! GNAT structure, you can simply use ``gnatchop`` once, generate the
! new set of files and work with them from that point on.
  
! Alternatively, if you want to keep your files in the 'foreign' format,
! perhaps to maintain compatibility with some other Ada compilation
! system, you can set up a procedure where you use ``gnatchop`` each
! time you compile, regarding the source files that it writes as temporary
! files that you throw away.
  
  Note that if your file containing multiple units starts with a byte order
  mark (BOM) specifying UTF-8 encoding, then the files generated by gnatchop
--- 1067,1084 ----
  compiler have only one unit and there be a strict correspondence
  between the file name and the unit name.
  
! If you want to keep your files with multiple units,
! perhaps to maintain compatibility with some other Ada compilation system,
! you can use ``gnatname`` to generate or update your project files.
! Generated or modified project files can be processed by GNAT.
  
! See :ref:`Handling_Arbitrary_File_Naming_Conventions_with_gnatname`
! for more details on how to use `gnatname`.
  
! Alternatively, if you want to permanently restructure a set of 'foreign'
! files so that they match the GNAT rules, and do the remaining development
! using the GNAT structure, you can simply use ``gnatchop`` once, generate the
! new set of files and work with them from that point on.
  
  Note that if your file containing multiple units starts with a byte order
  mark (BOM) specifying UTF-8 encoding, then the files generated by gnatchop
*************** recognized by GNAT::
*** 1450,1456 ****
       Overriding_Renamings
       Partition_Elaboration_Policy
       Persistent_BSS
-      Polling
       Prefix_Exception_Messages
       Priority_Specific_Dispatching
       Profile
--- 1445,1450 ----
*************** temporary files that are immediately del
*** 1566,1571 ****
--- 1560,1569 ----
  depend on a file that no longer exists. Such tools include
  ``gprbuild``, ``gnatmake``, and ``gnatcheck``.
  
+ By default, configuration pragma files are stored by their absolute paths in
+ ALI files. You can use the :switch:`-gnateb` switch in order to store them by
+ their basename instead.
+ 
  If you are using project file, a separate mechanism is provided using
  project attributes.
  
*************** Rebuilding the GNAT Run-Time Library
*** 2393,2402 ****
  .. index:: Rebuilding the GNAT Run-Time Library
  .. index:: Run-Time Library, rebuilding
  
! It may be useful to recompile the GNAT library in various contexts, the
! most important one being the use of partition-wide configuration pragmas
! such as ``Normalize_Scalars``. A special Makefile called
! :file:`Makefile.adalib` is provided to that effect and can be found in
  the directory containing the GNAT library. The location of this
  directory depends on the way the GNAT environment has been installed and can
  be determined by means of the command:
--- 2391,2399 ----
  .. index:: Rebuilding the GNAT Run-Time Library
  .. index:: Run-Time Library, rebuilding
  
! It may be useful to recompile the GNAT library in various debugging or
! experimentation contexts. A project file called
! :file:`libada.gpr` is provided to that effect and can be found in
  the directory containing the GNAT library. The location of this
  directory depends on the way the GNAT environment has been installed and can
  be determined by means of the command:
*************** be determined by means of the command:
*** 2405,2414 ****
  
        $ gnatls -v
  
! The last entry in the object search path usually contains the
! gnat library. This Makefile contains its own documentation and in
! particular the set of instructions needed to rebuild a new library and
! to use it.
  
  
  .. index:: ! Conditional compilation
--- 2402,2414 ----
  
        $ gnatls -v
  
! The last entry in the source search path usually contains the
! gnat library (the :file:`adainclude` directory). This project file contains its
! own documentation and in particular the set of instructions needed to rebuild a
! new library and to use it.
! 
! Note that rebuilding the GNAT Run-Time is only recommended for temporary
! experiments or debugging, and is not supported.
  
  
  .. index:: ! Conditional compilation
*************** The following example, provided as part
*** 3953,3959 ****
  to achieve procedural interfacing between Ada and C++ in both
  directions. The C++ class A has two methods. The first method is exported
  to Ada by the means of an extern C wrapper function. The second method
! calls an Ada subprogram. On the Ada side, The C++ calls are modelled by
  a limited record with a layout comparable to the C++ class. The Ada
  subprogram, in turn, calls the C++ method. So, starting from the C++
  main program, the process passes back and forth between the two
--- 3953,3959 ----
  to achieve procedural interfacing between Ada and C++ in both
  directions. The C++ class A has two methods. The first method is exported
  to Ada by the means of an extern C wrapper function. The second method
! calls an Ada subprogram. On the Ada side, the C++ calls are modelled by
  a limited record with a layout comparable to the C++ class. The Ada
  subprogram, in turn, calls the C++ method. So, starting from the C++
  main program, the process passes back and forth between the two
diff -Nrcpad gcc-10.3.0/gcc/ada/einfo.adb gcc-11.1.0/gcc/ada/einfo.adb
*** gcc-10.3.0/gcc/ada/einfo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/einfo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,37 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  --                                                                          --
  ------------------------------------------------------------------------------
  
- pragma Style_Checks (All_Checks);
- --  Turn off subprogram ordering, not used for this unit
- 
  with Atree;   use Atree;
  with Elists;  use Elists;
  with Namet;   use Namet;
--- 6,28 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with Atree;   use Atree;
  with Elists;  use Elists;
  with Namet;   use Namet;
*************** package body Einfo is
*** 282,287 ****
--- 273,279 ----
  
     --    SPARK_Pragma                    Node40
  
+    --    Access_Subprogram_Wrapper       Node41
     --    Original_Protected_Subprogram   Node41
     --    SPARK_Aux_Pragma                Node41
  
*************** package body Einfo is
*** 422,427 ****
--- 414,420 ----
     --    Never_Set_In_Source             Flag115
     --    Is_Visible_Lib_Unit             Flag116
     --    Is_Unchecked_Union              Flag117
+    --    Is_CUDA_Kernel                  Flag118
     --    Has_Convention_Pragma           Flag119
     --    Has_Primitive_Operations        Flag120
  
*************** package body Einfo is
*** 521,528 ****
     --    Known_To_Have_Preelab_Init      Flag207
     --    Must_Have_Preelab_Init          Flag208
     --    Is_Return_Object                Flag209
-    --    Elaborate_Body_Desirable        Flag210
  
     --    Has_Static_Discriminants        Flag211
     --    Has_Pragma_Unreferenced_Objects Flag212
     --    Requires_Overriding             Flag213
--- 514,521 ----
     --    Known_To_Have_Preelab_Init      Flag207
     --    Must_Have_Preelab_Init          Flag208
     --    Is_Return_Object                Flag209
  
+    --    Elaborate_Body_Desirable        Flag210
     --    Has_Static_Discriminants        Flag211
     --    Has_Pragma_Unreferenced_Objects Flag212
     --    Requires_Overriding             Flag213
*************** package body Einfo is
*** 532,539 ****
     --    Suppress_Value_Tracking_On_Call Flag217
     --    Is_Primitive                    Flag218
     --    Has_Initial_Value               Flag219
-    --    Has_Dispatch_Table              Flag220
  
     --    Has_Pragma_Preelab_Init         Flag221
     --    Used_As_Generic_Actual          Flag222
     --    Is_Descendant_Of_Address        Flag223
--- 525,532 ----
     --    Suppress_Value_Tracking_On_Call Flag217
     --    Is_Primitive                    Flag218
     --    Has_Initial_Value               Flag219
  
+    --    Has_Dispatch_Table              Flag220
     --    Has_Pragma_Preelab_Init         Flag221
     --    Used_As_Generic_Actual          Flag222
     --    Is_Descendant_Of_Address        Flag223
*************** package body Einfo is
*** 543,550 ****
     --    Referenced_As_Out_Parameter     Flag227
     --    Has_Thunks                      Flag228
     --    Can_Use_Internal_Rep            Flag229
-    --    Has_Pragma_Inline_Always        Flag230
  
     --    Renamed_In_Spec                 Flag231
     --    Has_Own_Invariants              Flag232
     --    Has_Pragma_Unmodified           Flag233
--- 536,543 ----
     --    Referenced_As_Out_Parameter     Flag227
     --    Has_Thunks                      Flag228
     --    Can_Use_Internal_Rep            Flag229
  
+    --    Has_Pragma_Inline_Always        Flag230
     --    Renamed_In_Spec                 Flag231
     --    Has_Own_Invariants              Flag232
     --    Has_Pragma_Unmodified           Flag233
*************** package body Einfo is
*** 554,561 ****
     --    Warnings_Off_Used_Unmodified    Flag237
     --    Warnings_Off_Used_Unreferenced  Flag238
     --    No_Reordering                   Flag239
-    --    Has_Expanded_Contract           Flag240
  
     --    Optimize_Alignment_Space        Flag241
     --    Optimize_Alignment_Time         Flag242
     --    Overlays_Constant               Flag243
--- 547,554 ----
     --    Warnings_Off_Used_Unmodified    Flag237
     --    Warnings_Off_Used_Unreferenced  Flag238
     --    No_Reordering                   Flag239
  
+    --    Has_Expanded_Contract           Flag240
     --    Optimize_Alignment_Space        Flag241
     --    Optimize_Alignment_Time         Flag242
     --    Overlays_Constant               Flag243
*************** package body Einfo is
*** 565,572 ****
     --    OK_To_Rename                    Flag247
     --    Has_Inheritable_Invariants      Flag248
     --    Is_Safe_To_Reevaluate           Flag249
-    --    Has_Predicates                  Flag250
  
     --    Has_Implicit_Dereference        Flag251
     --    Is_Finalized_Transient          Flag252
     --    Disable_Controlled              Flag253
--- 558,565 ----
     --    OK_To_Rename                    Flag247
     --    Has_Inheritable_Invariants      Flag248
     --    Is_Safe_To_Reevaluate           Flag249
  
+    --    Has_Predicates                  Flag250
     --    Has_Implicit_Dereference        Flag251
     --    Is_Finalized_Transient          Flag252
     --    Disable_Controlled              Flag253
*************** package body Einfo is
*** 576,583 ****
     --    Is_Invariant_Procedure          Flag257
     --    Has_Dynamic_Predicate_Aspect    Flag258
     --    Has_Static_Predicate_Aspect     Flag259
-    --    Has_Loop_Entry_Attributes       Flag260
  
     --    Has_Delayed_Rep_Aspects         Flag261
     --    May_Inherit_Delayed_Rep_Aspects Flag262
     --    Has_Visible_Refinement          Flag263
--- 569,576 ----
     --    Is_Invariant_Procedure          Flag257
     --    Has_Dynamic_Predicate_Aspect    Flag258
     --    Has_Static_Predicate_Aspect     Flag259
  
+    --    Has_Loop_Entry_Attributes       Flag260
     --    Has_Delayed_Rep_Aspects         Flag261
     --    May_Inherit_Delayed_Rep_Aspects Flag262
     --    Has_Visible_Refinement          Flag263
*************** package body Einfo is
*** 587,594 ****
     --    Has_Shift_Operator              Flag267
     --    Is_Independent                  Flag268
     --    Has_Static_Predicate            Flag269
-    --    Stores_Attribute_Old_Prefix     Flag270
  
     --    Has_Protected                   Flag271
     --    SSO_Set_Low_By_Default          Flag272
     --    SSO_Set_High_By_Default         Flag273
--- 580,587 ----
     --    Has_Shift_Operator              Flag267
     --    Is_Independent                  Flag268
     --    Has_Static_Predicate            Flag269
  
+    --    Stores_Attribute_Old_Prefix     Flag270
     --    Has_Protected                   Flag271
     --    SSO_Set_Low_By_Default          Flag272
     --    SSO_Set_High_By_Default         Flag273
*************** package body Einfo is
*** 598,605 ****
     --    Is_Checked_Ghost_Entity         Flag277
     --    Is_Ignored_Ghost_Entity         Flag278
     --    Contains_Ignored_Ghost_Code     Flag279
-    --    Partial_View_Has_Unknown_Discr  Flag280
  
     --    Is_Static_Type                  Flag281
     --    Has_Nested_Subprogram           Flag282
     --    Is_Uplevel_Referenced_Entity    Flag283
--- 591,598 ----
     --    Is_Checked_Ghost_Entity         Flag277
     --    Is_Ignored_Ghost_Entity         Flag278
     --    Contains_Ignored_Ghost_Code     Flag279
  
+    --    Partial_View_Has_Unknown_Discr  Flag280
     --    Is_Static_Type                  Flag281
     --    Has_Nested_Subprogram           Flag282
     --    Is_Uplevel_Referenced_Entity    Flag283
*************** package body Einfo is
*** 609,616 ****
     --    Rewritten_For_C                 Flag287
     --    Predicates_Ignored              Flag288
     --    Has_Timing_Event                Flag289
-    --    Is_Class_Wide_Clone             Flag290
  
     --    Has_Inherited_Invariants        Flag291
     --    Is_Partial_Invariant_Procedure  Flag292
     --    Is_Actual_Subtype               Flag293
--- 602,609 ----
     --    Rewritten_For_C                 Flag287
     --    Predicates_Ignored              Flag288
     --    Has_Timing_Event                Flag289
  
+    --    Is_Class_Wide_Clone             Flag290
     --    Has_Inherited_Invariants        Flag291
     --    Is_Partial_Invariant_Procedure  Flag292
     --    Is_Actual_Subtype               Flag293
*************** package body Einfo is
*** 620,627 ****
     --    Is_Entry_Wrapper                Flag297
     --    Is_Underlying_Full_View         Flag298
     --    Body_Needed_For_Inlining        Flag299
-    --    Has_Private_Extension           Flag300
  
     --    Ignore_SPARK_Mode_Pragmas       Flag301
     --    Is_Initial_Condition_Procedure  Flag302
     --    Suppress_Elaboration_Warnings   Flag303
--- 613,620 ----
     --    Is_Entry_Wrapper                Flag297
     --    Is_Underlying_Full_View         Flag298
     --    Body_Needed_For_Inlining        Flag299
  
+    --    Has_Private_Extension           Flag300
     --    Ignore_SPARK_Mode_Pragmas       Flag301
     --    Is_Initial_Condition_Procedure  Flag302
     --    Suppress_Elaboration_Warnings   Flag303
*************** package body Einfo is
*** 629,635 ****
     --    Is_Activation_Record            Flag305
     --    Needs_Activation_Record         Flag306
     --    Is_Loop_Parameter               Flag307
!    --    Invariants_Ignored              Flag308
  
     --    (unused)                        Flag309
  
--- 622,628 ----
     --    Is_Activation_Record            Flag305
     --    Needs_Activation_Record         Flag306
     --    Is_Loop_Parameter               Flag307
!    --    Has_Yield_Aspect                Flag308
  
     --    (unused)                        Flag309
  
*************** package body Einfo is
*** 713,719 ****
  
     function Abstract_States (Id : E) return L is
     begin
!       pragma Assert (Ekind_In (Id, E_Generic_Package, E_Package));
        return Elist25 (Id);
     end Abstract_States;
  
--- 706,712 ----
  
     function Abstract_States (Id : E) return L is
     begin
!       pragma Assert (Is_Package_Or_Generic_Package (Id));
        return Elist25 (Id);
     end Abstract_States;
  
*************** package body Einfo is
*** 724,758 ****
  
     function Access_Disp_Table (Id : E) return L is
     begin
!       pragma Assert (Ekind_In (Id, E_Record_Subtype,
!                                    E_Record_Type,
!                                    E_Record_Type_With_Private));
        return Elist16 (Implementation_Base_Type (Id));
     end Access_Disp_Table;
  
     function Access_Disp_Table_Elab_Flag (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Record_Subtype,
!                                    E_Record_Type,
!                                    E_Record_Type_With_Private));
        return Node30 (Implementation_Base_Type (Id));
     end Access_Disp_Table_Elab_Flag;
  
     function Activation_Record_Component (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant,
!                                    E_In_Parameter,
!                                    E_In_Out_Parameter,
!                                    E_Loop_Parameter,
!                                    E_Out_Parameter,
!                                    E_Variable));
        return Node31 (Id);
     end Activation_Record_Component;
  
     function Actual_Subtype (Id : E) return E is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Constant, E_Variable, E_Generic_In_Out_Parameter)
             or else Is_Formal (Id));
        return Node17 (Id);
     end Actual_Subtype;
--- 717,757 ----
  
     function Access_Disp_Table (Id : E) return L is
     begin
!       pragma Assert (Ekind (Id) in E_Record_Subtype
!                                  | E_Record_Type
!                                  | E_Record_Type_With_Private);
        return Elist16 (Implementation_Base_Type (Id));
     end Access_Disp_Table;
  
     function Access_Disp_Table_Elab_Flag (Id : E) return E is
     begin
!       pragma Assert (Ekind (Id) in E_Record_Subtype
!                                  | E_Record_Type
!                                  | E_Record_Type_With_Private);
        return Node30 (Implementation_Base_Type (Id));
     end Access_Disp_Table_Elab_Flag;
  
+    function Access_Subprogram_Wrapper (Id : E) return E is
+    begin
+       pragma Assert (Ekind (Id) = E_Subprogram_Type);
+       return Node41 (Id);
+    end Access_Subprogram_Wrapper;
+ 
     function Activation_Record_Component (Id : E) return E is
     begin
!       pragma Assert (Ekind (Id) in E_Constant
!                                  | E_In_Parameter
!                                  | E_In_Out_Parameter
!                                  | E_Loop_Parameter
!                                  | E_Out_Parameter
!                                  | E_Variable);
        return Node31 (Id);
     end Activation_Record_Component;
  
     function Actual_Subtype (Id : E) return E is
     begin
        pragma Assert
!         (Ekind (Id) in E_Constant | E_Variable | E_Generic_In_Out_Parameter
             or else Is_Formal (Id));
        return Node17 (Id);
     end Actual_Subtype;
*************** package body Einfo is
*** 773,782 ****
     begin
        pragma Assert (Is_Type (Id)
                         or else Is_Formal (Id)
!                        or else Ekind_In (Id, E_Loop_Parameter,
!                                              E_Constant,
!                                              E_Exception,
!                                              E_Variable));
        return Uint14 (Id);
     end Alignment;
  
--- 772,781 ----
     begin
        pragma Assert (Is_Type (Id)
                         or else Is_Formal (Id)
!                        or else Ekind (Id) in E_Loop_Parameter
!                                            | E_Constant
!                                            | E_Exception
!                                            | E_Variable);
        return Uint14 (Id);
     end Alignment;
  
*************** package body Einfo is
*** 788,803 ****
  
     function Anonymous_Masters (Id : E) return L is
     begin
!       pragma Assert (Ekind_In (Id, E_Function,
!                                    E_Package,
!                                    E_Procedure,
!                                    E_Subprogram_Body));
        return Elist29 (Id);
     end Anonymous_Masters;
  
     function Anonymous_Object (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Protected_Type, E_Task_Type));
        return Node30 (Id);
     end Anonymous_Object;
  
--- 787,802 ----
  
     function Anonymous_Masters (Id : E) return L is
     begin
!       pragma Assert (Ekind (Id) in E_Function
!                                  | E_Package
!                                  | E_Procedure
!                                  | E_Subprogram_Body);
        return Elist29 (Id);
     end Anonymous_Masters;
  
     function Anonymous_Object (Id : E) return E is
     begin
!       pragma Assert (Ekind (Id) in E_Protected_Type | E_Task_Type);
        return Node30 (Id);
     end Anonymous_Object;
  
*************** package body Einfo is
*** 837,843 ****
  
     function Body_Entity (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package));
        return Node19 (Id);
     end Body_Entity;
  
--- 836,842 ----
  
     function Body_Entity (Id : E) return E is
     begin
!       pragma Assert (Is_Package_Or_Generic_Package (Id));
        return Node19 (Id);
     end Body_Entity;
  
*************** package body Einfo is
*** 864,870 ****
  
     function BIP_Initialization_Call (Id : E) return N is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
        return Node29 (Id);
     end BIP_Initialization_Call;
  
--- 863,869 ----
  
     function BIP_Initialization_Call (Id : E) return N is
     begin
!       pragma Assert (Ekind (Id) in E_Constant | E_Variable);
        return Node29 (Id);
     end BIP_Initialization_Call;
  
*************** package body Einfo is
*** 898,916 ****
  
     function Cloned_Subtype (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Record_Subtype, E_Class_Wide_Subtype));
        return Node16 (Id);
     end Cloned_Subtype;
  
     function Component_Bit_Offset (Id : E) return U is
     begin
!       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
        return Uint11 (Id);
     end Component_Bit_Offset;
  
     function Component_Clause (Id : E) return N is
     begin
!       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
        return Node13 (Id);
     end Component_Clause;
  
--- 897,915 ----
  
     function Cloned_Subtype (Id : E) return E is
     begin
!       pragma Assert (Ekind (Id) in E_Record_Subtype | E_Class_Wide_Subtype);
        return Node16 (Id);
     end Cloned_Subtype;
  
     function Component_Bit_Offset (Id : E) return U is
     begin
!       pragma Assert (Ekind (Id) in E_Component | E_Discriminant);
        return Uint11 (Id);
     end Component_Bit_Offset;
  
     function Component_Clause (Id : E) return N is
     begin
!       pragma Assert (Ekind (Id) in E_Component | E_Discriminant);
        return Node13 (Id);
     end Component_Clause;
  
*************** package body Einfo is
*** 967,973 ****
  
     function Corresponding_Record_Component (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
        return Node21 (Id);
     end Corresponding_Record_Component;
  
--- 966,972 ----
  
     function Corresponding_Record_Component (Id : E) return E is
     begin
!       pragma Assert (Ekind (Id) in E_Component | E_Discriminant);
        return Node21 (Id);
     end Corresponding_Record_Component;
  
*************** package body Einfo is
*** 990,996 ****
  
     function Current_Value (Id : E) return N is
     begin
!       pragma Assert (Ekind (Id) in Object_Kind);
        return Node9 (Id);
     end Current_Value;
  
--- 989,995 ----
  
     function Current_Value (Id : E) return N is
     begin
!       pragma Assert (Is_Object (Id));
        return Node9 (Id);
     end Current_Value;
  
*************** package body Einfo is
*** 1139,1146 ****
  
     function Dispatch_Table_Wrappers (Id : E) return L is
     begin
!       pragma Assert (Ekind_In (Id, E_Record_Type,
!                                    E_Record_Subtype));
        return Elist26 (Implementation_Base_Type (Id));
     end Dispatch_Table_Wrappers;
  
--- 1138,1144 ----
  
     function Dispatch_Table_Wrappers (Id : E) return L is
     begin
!       pragma Assert (Ekind (Id) in E_Record_Type | E_Record_Subtype);
        return Elist26 (Implementation_Base_Type (Id));
     end Dispatch_Table_Wrappers;
  
*************** package body Einfo is
*** 1158,1171 ****
  
     function DT_Position (Id : E) return U is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure)
                         and then Present (DTC_Entity (Id)));
        return Uint15 (Id);
     end DT_Position;
  
     function DTC_Entity (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        return Node16 (Id);
     end DTC_Entity;
  
--- 1156,1169 ----
  
     function DT_Position (Id : E) return U is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure
                         and then Present (DTC_Entity (Id)));
        return Uint15 (Id);
     end DT_Position;
  
     function DTC_Entity (Id : E) return E is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        return Node16 (Id);
     end DTC_Entity;
  
*************** package body Einfo is
*** 1180,1186 ****
        pragma Assert
          (Is_Subprogram (Id)
             or else
!          Ekind_In (Id, E_Entry, E_Entry_Family, E_Package)
             or else
           Is_Generic_Unit (Id));
        return Node13 (Id);
--- 1178,1184 ----
        pragma Assert
          (Is_Subprogram (Id)
             or else
!          Ekind (Id) in E_Entry | E_Entry_Family | E_Package
             or else
           Is_Generic_Unit (Id));
        return Node13 (Id);
*************** package body Einfo is
*** 1191,1197 ****
        pragma Assert
          (Is_Subprogram (Id)
             or else
!          Ekind_In (Id, E_Entry, E_Entry_Family, E_Package)
             or else
           Is_Generic_Unit (Id));
        return Flag174 (Id);
--- 1189,1195 ----
        pragma Assert
          (Is_Subprogram (Id)
             or else
!          Ekind (Id) in E_Entry | E_Entry_Family | E_Package
             or else
           Is_Generic_Unit (Id));
        return Flag174 (Id);
*************** package body Einfo is
*** 1199,1205 ****
  
     function Encapsulating_State (Id : E) return N is
     begin
!       pragma Assert (Ekind_In (Id, E_Abstract_State, E_Constant, E_Variable));
        return Node32 (Id);
     end Encapsulating_State;
  
--- 1197,1203 ----
  
     function Encapsulating_State (Id : E) return N is
     begin
!       pragma Assert (Ekind (Id) in E_Abstract_State | E_Constant | E_Variable);
        return Node32 (Id);
     end Encapsulating_State;
  
*************** package body Einfo is
*** 1249,1288 ****
     function Contains_Ignored_Ghost_Code (Id : E) return B is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Block,
!                        E_Function,
!                        E_Generic_Function,
!                        E_Generic_Package,
!                        E_Generic_Procedure,
!                        E_Package,
!                        E_Package_Body,
!                        E_Procedure,
!                        E_Subprogram_Body));
        return Flag279 (Id);
     end Contains_Ignored_Ghost_Code;
  
     function Contract (Id : E) return N is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,      --  concurrent types
!                        E_Task_Body,
!                        E_Task_Type)
             or else
!          Ekind_In (Id, E_Constant,            --  objects
!                        E_Variable)
             or else
!          Ekind_In (Id, E_Entry,               --  overloadable
!                        E_Entry_Family,
!                        E_Function,
!                        E_Generic_Function,
!                        E_Generic_Procedure,
!                        E_Operator,
!                        E_Procedure,
!                        E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
!                        E_Package,
!                        E_Package_Body)
             or else
           Ekind (Id) = E_Void);                --  special purpose
        return Node34 (Id);
--- 1247,1288 ----
     function Contains_Ignored_Ghost_Code (Id : E) return B is
     begin
        pragma Assert
!         (Ekind (Id) in E_Block
!                      | E_Function
!                      | E_Generic_Function
!                      | E_Generic_Package
!                      | E_Generic_Procedure
!                      | E_Package
!                      | E_Package_Body
!                      | E_Procedure
!                      | E_Subprogram_Body);
        return Flag279 (Id);
     end Contains_Ignored_Ghost_Code;
  
     function Contract (Id : E) return N is
     begin
        pragma Assert
!         (Ekind (Id) in E_Protected_Type       --  concurrent types
!                      | E_Task_Body
!                      | E_Task_Type
             or else
!          Ekind (Id) in E_Constant             --  objects
!                      | E_Variable
             or else
!          Ekind (Id) in E_Entry                --  overloadable
!                      | E_Entry_Family
!                      | E_Function
!                      | E_Generic_Function
!                      | E_Generic_Procedure
!                      | E_Operator
!                      | E_Procedure
!                      | E_Subprogram_Body
             or else
!          Ekind (Id) in E_Generic_Package      --  packages
!                      | E_Package
!                      | E_Package_Body
!            or else
!          Is_Type (Id)                         --  types
             or else
           Ekind (Id) = E_Void);                --  special purpose
        return Node34 (Id);
*************** package body Einfo is
*** 1290,1296 ****
  
     function Contract_Wrapper (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Entry, E_Entry_Family));
        return Node25 (Id);
     end Contract_Wrapper;
  
--- 1290,1296 ----
  
     function Contract_Wrapper (Id : E) return E is
     begin
!       pragma Assert (Is_Entry (Id));
        return Node25 (Id);
     end Contract_Wrapper;
  
*************** package body Einfo is
*** 1326,1338 ****
     function Equivalent_Type (Id : E) return E is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Class_Wide_Type,
!                        E_Class_Wide_Subtype,
!                        E_Access_Subprogram_Type,
!                        E_Access_Protected_Subprogram_Type,
!                        E_Anonymous_Access_Protected_Subprogram_Type,
!                        E_Access_Subprogram_Type,
!                        E_Exception_Type));
        return Node18 (Id);
     end Equivalent_Type;
  
--- 1326,1337 ----
     function Equivalent_Type (Id : E) return E is
     begin
        pragma Assert
!         (Ekind (Id) 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);
        return Node18 (Id);
     end Equivalent_Type;
  
*************** package body Einfo is
*** 1344,1356 ****
     function Extra_Accessibility (Id : E) return E is
     begin
        pragma Assert
!         (Is_Formal (Id) or else Ekind_In (Id, E_Variable, E_Constant));
        return Node13 (Id);
     end Extra_Accessibility;
  
     function Extra_Accessibility_Of_Result (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Operator, E_Subprogram_Type));
        return Node19 (Id);
     end Extra_Accessibility_Of_Result;
  
--- 1343,1356 ----
     function Extra_Accessibility (Id : E) return E is
     begin
        pragma Assert
!         (Is_Formal (Id) or else Ekind (Id) in E_Variable | E_Constant);
        return Node13 (Id);
     end Extra_Accessibility;
  
     function Extra_Accessibility_Of_Result (Id : E) return E is
     begin
!       pragma Assert
!         (Ekind (Id) in E_Function | E_Operator | E_Subprogram_Type);
        return Node19 (Id);
     end Extra_Accessibility_Of_Result;
  
*************** package body Einfo is
*** 1369,1377 ****
     begin
        pragma Assert
          (Is_Overloadable (Id)
!            or else Ekind_In (Id, E_Entry_Family,
!                                  E_Subprogram_Body,
!                                  E_Subprogram_Type));
        return Node28 (Id);
     end Extra_Formals;
  
--- 1369,1377 ----
     begin
        pragma Assert
          (Is_Overloadable (Id)
!            or else Ekind (Id) in E_Entry_Family
!                                | E_Subprogram_Body
!                                | E_Subprogram_Type);
        return Node28 (Id);
     end Extra_Formals;
  
*************** package body Einfo is
*** 1395,1401 ****
  
     function Finalizer (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Package, E_Package_Body));
        return Node28 (Id);
     end Finalizer;
  
--- 1395,1401 ----
  
     function Finalizer (Id : E) return E is
     begin
!       pragma Assert (Ekind (Id) in E_Package | E_Package_Body);
        return Node28 (Id);
     end Finalizer;
  
*************** package body Einfo is
*** 1424,1431 ****
  
     function First_Private_Entity (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package)
!                        or else Ekind (Id) in Concurrent_Kind);
        return Node16 (Id);
     end First_Private_Entity;
  
--- 1424,1431 ----
  
     function First_Private_Entity (Id : E) return E is
     begin
!       pragma Assert (Is_Package_Or_Generic_Package (Id)
!                        or else Is_Concurrent_Type (Id));
        return Node16 (Id);
     end First_Private_Entity;
  
*************** package body Einfo is
*** 1517,1523 ****
     function Has_Constrained_Partial_View (Id : E) return B is
     begin
        pragma Assert (Is_Type (Id));
!       return Flag187 (Id);
     end Has_Constrained_Partial_View;
  
     function Has_Controlled_Component (Id : E) return B is
--- 1517,1523 ----
     function Has_Constrained_Partial_View (Id : E) return B is
     begin
        pragma Assert (Is_Type (Id));
!       return Flag187 (Base_Type (Id));
     end Has_Constrained_Partial_View;
  
     function Has_Controlled_Component (Id : E) return B is
*************** package body Einfo is
*** 1671,1677 ****
  
     function Has_Missing_Return (Id : E) return B is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Generic_Function));
        return Flag142 (Id);
     end Has_Missing_Return;
  
--- 1671,1677 ----
  
     function Has_Missing_Return (Id : E) return B is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Generic_Function);
        return Flag142 (Id);
     end Has_Missing_Return;
  
*************** package body Einfo is
*** 1700,1707 ****
     function Has_Out_Or_In_Out_Parameter (Id : E) return B is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Entry, E_Entry_Family)
!           or else Is_Subprogram_Or_Generic_Subprogram (Id));
        return Flag110 (Id);
     end Has_Out_Or_In_Out_Parameter;
  
--- 1700,1706 ----
     function Has_Out_Or_In_Out_Parameter (Id : E) return B is
     begin
        pragma Assert
!         (Is_Entry (Id) or else Is_Subprogram_Or_Generic_Subprogram (Id));
        return Flag110 (Id);
     end Has_Out_Or_In_Out_Parameter;
  
*************** package body Einfo is
*** 1981,1986 ****
--- 1980,1990 ----
        return Flag182 (Id);
     end Has_Xref_Entry;
  
+    function Has_Yield_Aspect (Id : E) return B is
+    begin
+       return Flag308 (Id);
+    end Has_Yield_Aspect;
+ 
     function Hiding_Loop_Variable (Id : E) return E is
     begin
        pragma Assert (Ekind (Id) = E_Variable);
*************** package body Einfo is
*** 2001,2023 ****
     function Ignore_SPARK_Mode_Pragmas (Id : E) return B is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Body,      --  concurrent types
!                        E_Protected_Type,
!                        E_Task_Body,
!                        E_Task_Type)
            or else
!          Ekind_In (Id, E_Entry,               --  overloadable
!                        E_Entry_Family,
!                        E_Function,
!                        E_Generic_Function,
!                        E_Generic_Procedure,
!                        E_Operator,
!                        E_Procedure,
!                        E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
!                        E_Package,
!                        E_Package_Body));
        return Flag301 (Id);
     end Ignore_SPARK_Mode_Pragmas;
  
--- 2005,2027 ----
     function Ignore_SPARK_Mode_Pragmas (Id : E) return B is
     begin
        pragma Assert
!         (Ekind (Id) in E_Protected_Body      --  concurrent types
!                      | E_Protected_Type
!                      | E_Task_Body
!                      | E_Task_Type
            or else
!          Ekind (Id) in E_Entry               --  overloadable
!                      | E_Entry_Family
!                      | E_Function
!                      | E_Generic_Function
!                      | E_Generic_Procedure
!                      | E_Operator
!                      | E_Procedure
!                      | E_Subprogram_Body
             or else
!          Ekind (Id) in E_Generic_Package     --  packages
!                      | E_Package
!                      | E_Package_Body);
        return Flag301 (Id);
     end Ignore_SPARK_Mode_Pragmas;
  
*************** package body Einfo is
*** 2063,2069 ****
  
     function Initialization_Statements (Id : E) return N is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
        return Node28 (Id);
     end Initialization_Statements;
  
--- 2067,2073 ----
  
     function Initialization_Statements (Id : E) return N is
     begin
!       pragma Assert (Ekind (Id) in E_Constant | E_Variable);
        return Node28 (Id);
     end Initialization_Statements;
  
*************** package body Einfo is
*** 2077,2088 ****
        return Node21 (Id);
     end Interface_Name;
  
-    function Invariants_Ignored (Id : E) return B is
-    begin
-       pragma Assert (Is_Type (Id));
-       return Flag308 (Id);
-    end Invariants_Ignored;
- 
     function Is_Abstract_Subprogram (Id : E) return B is
     begin
        pragma Assert (Is_Overloadable (Id));
--- 2081,2086 ----
*************** package body Einfo is
*** 2147,2153 ****
  
     function Is_Called (Id : E) return B is
     begin
!       pragma Assert (Ekind_In (Id, E_Procedure, E_Function, E_Package));
        return Flag102 (Id);
     end Is_Called;
  
--- 2145,2151 ----
  
     function Is_Called (Id : E) return B is
     begin
!       pragma Assert (Ekind (Id) in E_Procedure | E_Function | E_Package);
        return Flag102 (Id);
     end Is_Called;
  
*************** package body Einfo is
*** 2228,2236 ****
        return Flag74 (Id);
     end Is_CPP_Class;
  
     function Is_DIC_Procedure (Id : E) return B is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        return Flag132 (Id);
     end Is_DIC_Procedure;
  
--- 2226,2240 ----
        return Flag74 (Id);
     end Is_CPP_Class;
  
+    function Is_CUDA_Kernel (Id : E) return B is
+    begin
+       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
+       return Flag118 (Id);
+    end Is_CUDA_Kernel;
+ 
     function Is_DIC_Procedure (Id : E) return B is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        return Flag132 (Id);
     end Is_DIC_Procedure;
  
*************** package body Einfo is
*** 2300,2306 ****
  
     function Is_Finalized_Transient (Id : E) return B is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant, E_Loop_Parameter, E_Variable));
        return Flag252 (Id);
     end Is_Finalized_Transient;
  
--- 2304,2310 ----
  
     function Is_Finalized_Transient (Id : E) return B is
     begin
!       pragma Assert (Ekind (Id) in E_Constant | E_Loop_Parameter | E_Variable);
        return Flag252 (Id);
     end Is_Finalized_Transient;
  
*************** package body Einfo is
*** 2321,2327 ****
  
     function Is_Generic_Actual_Subprogram (Id : E) return B is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        return Flag274 (Id);
     end Is_Generic_Actual_Subprogram;
  
--- 2325,2331 ----
  
     function Is_Generic_Actual_Subprogram (Id : E) return B is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        return Flag274 (Id);
     end Is_Generic_Actual_Subprogram;
  
*************** package body Einfo is
*** 2368,2374 ****
  
     function Is_Ignored_Transient (Id : E) return B is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant, E_Loop_Parameter, E_Variable));
        return Flag295 (Id);
     end Is_Ignored_Transient;
  
--- 2372,2378 ----
  
     function Is_Ignored_Transient (Id : E) return B is
     begin
!       pragma Assert (Ekind (Id) in E_Constant | E_Loop_Parameter | E_Variable);
        return Flag295 (Id);
     end Is_Ignored_Transient;
  
*************** package body Einfo is
*** 2395,2401 ****
  
     function Is_Initial_Condition_Procedure (Id : E) return B is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        return Flag302 (Id);
     end Is_Initial_Condition_Procedure;
  
--- 2399,2405 ----
  
     function Is_Initial_Condition_Procedure (Id : E) return B is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        return Flag302 (Id);
     end Is_Initial_Condition_Procedure;
  
*************** package body Einfo is
*** 2406,2412 ****
  
     function Is_Inlined_Always (Id : E) return B is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        return Flag1 (Id);
     end Is_Inlined_Always;
  
--- 2410,2416 ----
  
     function Is_Inlined_Always (Id : E) return B is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        return Flag1 (Id);
     end Is_Inlined_Always;
  
*************** package body Einfo is
*** 2439,2445 ****
  
     function Is_Invariant_Procedure (Id : E) return B is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        return Flag257 (Id);
     end Is_Invariant_Procedure;
  
--- 2443,2449 ----
  
     function Is_Invariant_Procedure (Id : E) return B is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        return Flag257 (Id);
     end Is_Invariant_Procedure;
  
*************** package body Einfo is
*** 2539,2547 ****
        return Flag215 (Base_Type (Id));
     end Is_Param_Block_Component_Type;
  
     function Is_Partial_Invariant_Procedure (Id : E) return B is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        return Flag292 (Id);
     end Is_Partial_Invariant_Procedure;
  
--- 2543,2574 ----
        return Flag215 (Base_Type (Id));
     end Is_Param_Block_Component_Type;
  
+    function Is_Partial_DIC_Procedure (Id : E) return B is
+       Partial_DIC_Suffix : constant String := "Partial_DIC";
+       DIC_Nam            : constant String := Get_Name_String (Chars (Id));
+ 
+    begin
+       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
+ 
+       --  Instead of adding a new Entity_Id flag (which are in short supply),
+       --  we test the form of the subprogram name. When the node field and flag
+       --  situation is eased, this should be replaced with a flag. ???
+ 
+       if DIC_Nam'Length > Partial_DIC_Suffix'Length
+         and then
+           DIC_Nam
+             (DIC_Nam'Last - Partial_DIC_Suffix'Length + 1 .. DIC_Nam'Last) =
+                Partial_DIC_Suffix
+       then
+          return True;
+       else
+          return False;
+       end if;
+    end Is_Partial_DIC_Procedure;
+ 
     function Is_Partial_Invariant_Procedure (Id : E) return B is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        return Flag292 (Id);
     end Is_Partial_Invariant_Procedure;
  
*************** package body Einfo is
*** 2553,2565 ****
  
     function Is_Predicate_Function (Id : E) return B is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        return Flag255 (Id);
     end Is_Predicate_Function;
  
     function Is_Predicate_Function_M (Id : E) return B is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        return Flag256 (Id);
     end Is_Predicate_Function_M;
  
--- 2580,2592 ----
  
     function Is_Predicate_Function (Id : E) return B is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        return Flag255 (Id);
     end Is_Predicate_Function;
  
     function Is_Predicate_Function_M (Id : E) return B is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        return Flag256 (Id);
     end Is_Predicate_Function_M;
  
*************** package body Einfo is
*** 2570,2584 ****
  
     function Is_Primitive (Id : E) return B is
     begin
!       pragma Assert
!         (Is_Overloadable (Id)
!            or else Ekind_In (Id, E_Generic_Function, E_Generic_Procedure));
        return Flag218 (Id);
     end Is_Primitive;
  
     function Is_Primitive_Wrapper (Id : E) return B is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        return Flag195 (Id);
     end Is_Primitive_Wrapper;
  
--- 2597,2609 ----
  
     function Is_Primitive (Id : E) return B is
     begin
!       pragma Assert (Is_Overloadable (Id) or else Is_Generic_Subprogram (Id));
        return Flag218 (Id);
     end Is_Primitive;
  
     function Is_Primitive_Wrapper (Id : E) return B is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        return Flag195 (Id);
     end Is_Primitive_Wrapper;
  
*************** package body Einfo is
*** 2595,2601 ****
  
     function Is_Private_Primitive (Id : E) return B is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        return Flag245 (Id);
     end Is_Private_Primitive;
  
--- 2620,2626 ----
  
     function Is_Private_Primitive (Id : E) return B is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        return Flag245 (Id);
     end Is_Private_Primitive;
  
*************** package body Einfo is
*** 2781,2787 ****
  
     function Last_Aggregate_Assignment (Id : E) return N is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
        return Node30 (Id);
     end Last_Aggregate_Assignment;
  
--- 2806,2812 ----
  
     function Last_Aggregate_Assignment (Id : E) return N is
     begin
!       pragma Assert (Ekind (Id) in E_Constant | E_Variable);
        return Node30 (Id);
     end Last_Aggregate_Assignment;
  
*************** package body Einfo is
*** 2856,2862 ****
  
     function Minimum_Accessibility (Id : E) return E is
     begin
!       pragma Assert (Ekind (Id) in Formal_Kind);
        return Node24 (Id);
     end Minimum_Accessibility;
  
--- 2881,2887 ----
  
     function Minimum_Accessibility (Id : E) return E is
     begin
!       pragma Assert (Is_Formal (Id));
        return Node24 (Id);
     end Minimum_Accessibility;
  
*************** package body Einfo is
*** 2892,2898 ****
     begin
        pragma Assert
          (Is_Overloadable (Id)
!            or else Ekind_In (Id, E_Subprogram_Type, E_Entry_Family));
        return Flag22 (Id);
     end Needs_No_Actuals;
  
--- 2917,2923 ----
     begin
        pragma Assert
          (Is_Overloadable (Id)
!            or else Ekind (Id) in E_Subprogram_Type | E_Entry_Family);
        return Flag22 (Id);
     end Needs_No_Actuals;
  
*************** package body Einfo is
*** 2972,2990 ****
  
     function Normalized_First_Bit (Id : E) return U is
     begin
!       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
        return Uint8 (Id);
     end Normalized_First_Bit;
  
     function Normalized_Position (Id : E) return U is
     begin
!       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
        return Uint14 (Id);
     end Normalized_Position;
  
     function Normalized_Position_Max (Id : E) return U is
     begin
!       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
        return Uint10 (Id);
     end Normalized_Position_Max;
  
--- 2997,3015 ----
  
     function Normalized_First_Bit (Id : E) return U is
     begin
!       pragma Assert (Ekind (Id) in E_Component | E_Discriminant);
        return Uint8 (Id);
     end Normalized_First_Bit;
  
     function Normalized_Position (Id : E) return U is
     begin
!       pragma Assert (Ekind (Id) in E_Component | E_Discriminant);
        return Uint14 (Id);
     end Normalized_Position;
  
     function Normalized_Position_Max (Id : E) return U is
     begin
!       pragma Assert (Ekind (Id) in E_Component | E_Discriminant);
        return Uint10 (Id);
     end Normalized_Position_Max;
  
*************** package body Einfo is
*** 2997,3010 ****
     function Optimize_Alignment_Space (Id : E) return B is
     begin
        pragma Assert
!         (Is_Type (Id) or else Ekind_In (Id, E_Constant, E_Variable));
        return Flag241 (Id);
     end Optimize_Alignment_Space;
  
     function Optimize_Alignment_Time (Id : E) return B is
     begin
        pragma Assert
!         (Is_Type (Id) or else Ekind_In (Id, E_Constant, E_Variable));
        return Flag242 (Id);
     end Optimize_Alignment_Time;
  
--- 3022,3035 ----
     function Optimize_Alignment_Space (Id : E) return B is
     begin
        pragma Assert
!         (Is_Type (Id) or else Ekind (Id) in E_Constant | E_Variable);
        return Flag241 (Id);
     end Optimize_Alignment_Space;
  
     function Optimize_Alignment_Time (Id : E) return B is
     begin
        pragma Assert
!         (Is_Type (Id) or else Ekind (Id) in E_Constant | E_Variable);
        return Flag242 (Id);
     end Optimize_Alignment_Time;
  
*************** package body Einfo is
*** 3027,3033 ****
  
     function Original_Record_Component (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Void, E_Component, E_Discriminant));
        return Node22 (Id);
     end Original_Record_Component;
  
--- 3052,3058 ----
  
     function Original_Record_Component (Id : E) return E is
     begin
!       pragma Assert (Ekind (Id) in E_Void | E_Component | E_Discriminant);
        return Node22 (Id);
     end Original_Record_Component;
  
*************** package body Einfo is
*** 3038,3050 ****
  
     function Overridden_Operation (Id : E) return E is
     begin
!       pragma Assert (Is_Subprogram (Id) or else Is_Generic_Subprogram (Id));
        return Node26 (Id);
     end Overridden_Operation;
  
     function Package_Instantiation (Id : E) return N is
     begin
!       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package));
        return Node26 (Id);
     end Package_Instantiation;
  
--- 3063,3075 ----
  
     function Overridden_Operation (Id : E) return E is
     begin
!       pragma Assert (Is_Subprogram_Or_Generic_Subprogram (Id));
        return Node26 (Id);
     end Overridden_Operation;
  
     function Package_Instantiation (Id : E) return N is
     begin
!       pragma Assert (Is_Package_Or_Generic_Package (Id));
        return Node26 (Id);
     end Package_Instantiation;
  
*************** package body Einfo is
*** 3062,3068 ****
  
     function Part_Of_Constituents (Id : E) return L is
     begin
!       pragma Assert (Ekind_In (Id, E_Abstract_State, E_Variable));
        return Elist10 (Id);
     end Part_Of_Constituents;
  
--- 3087,3093 ----
  
     function Part_Of_Constituents (Id : E) return L is
     begin
!       pragma Assert (Ekind (Id) in E_Abstract_State | E_Variable);
        return Elist10 (Id);
     end Part_Of_Constituents;
  
*************** package body Einfo is
*** 3086,3103 ****
  
     function Postconditions_Proc (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Entry,
!                                    E_Entry_Family,
!                                    E_Function,
!                                    E_Procedure));
        return Node14 (Id);
     end Postconditions_Proc;
  
     function Predicated_Parent (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Array_Subtype,
!                                    E_Record_Subtype,
!                                    E_Record_Subtype_With_Private));
        return Node38 (Id);
     end Predicated_Parent;
  
--- 3111,3127 ----
  
     function Postconditions_Proc (Id : E) return E is
     begin
!       pragma Assert
!         (Ekind (Id) in E_Entry | E_Entry_Family | E_Function | E_Procedure);
        return Node14 (Id);
     end Postconditions_Proc;
  
     function Predicated_Parent (Id : E) return E is
     begin
!       pragma Assert
!         (Ekind (Id) in E_Array_Subtype  |
!                        E_Record_Subtype |
!                        E_Record_Subtype_With_Private);
        return Node38 (Id);
     end Predicated_Parent;
  
*************** package body Einfo is
*** 3120,3126 ****
  
     function Prival_Link (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
        return Node20 (Id);
     end Prival_Link;
  
--- 3144,3150 ----
  
     function Prival_Link (Id : E) return E is
     begin
!       pragma Assert (Ekind (Id) in E_Constant | E_Variable);
        return Node20 (Id);
     end Prival_Link;
  
*************** package body Einfo is
*** 3132,3138 ****
  
     function Protected_Body_Subprogram (Id : E) return E is
     begin
!       pragma Assert (Is_Subprogram (Id) or else Is_Entry (Id));
        return Node11 (Id);
     end Protected_Body_Subprogram;
  
--- 3156,3162 ----
  
     function Protected_Body_Subprogram (Id : E) return E is
     begin
!       pragma Assert (Is_Subprogram_Or_Entry (Id));
        return Node11 (Id);
     end Protected_Body_Subprogram;
  
*************** package body Einfo is
*** 3144,3159 ****
  
     function Protected_Subprogram (Id : E) return N is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        return Node39 (Id);
     end Protected_Subprogram;
  
     function Protection_Object (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Entry,
!                                    E_Entry_Family,
!                                    E_Function,
!                                    E_Procedure));
        return Node23 (Id);
     end Protection_Object;
  
--- 3168,3181 ----
  
     function Protected_Subprogram (Id : E) return N is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        return Node39 (Id);
     end Protected_Subprogram;
  
     function Protection_Object (Id : E) return E is
     begin
!       pragma Assert
!         (Ekind (Id) in E_Entry | E_Entry_Family | E_Function | E_Procedure);
        return Node23 (Id);
     end Protection_Object;
  
*************** package body Einfo is
*** 3203,3222 ****
  
     function Related_Expression (Id : E) return N is
     begin
!       pragma Assert (Ekind (Id) in Type_Kind
!                        or else Ekind_In (Id, E_Constant, E_Variable));
        return Node24 (Id);
     end Related_Expression;
  
     function Related_Instance (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Package, E_Package_Body));
        return Node15 (Id);
     end Related_Instance;
  
     function Related_Type (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Component, E_Constant, E_Variable));
        return Node27 (Id);
     end Related_Type;
  
--- 3225,3244 ----
  
     function Related_Expression (Id : E) return N is
     begin
!       pragma Assert
!         (Ekind (Id) in Type_Kind | E_Constant | E_Variable | E_Function);
        return Node24 (Id);
     end Related_Expression;
  
     function Related_Instance (Id : E) return E is
     begin
!       pragma Assert (Ekind (Id) in E_Package | E_Package_Body);
        return Node15 (Id);
     end Related_Instance;
  
     function Related_Type (Id : E) return E is
     begin
!       pragma Assert (Ekind (Id) in E_Component | E_Constant | E_Variable);
        return Node27 (Id);
     end Related_Type;
  
*************** package body Einfo is
*** 3304,3309 ****
--- 3326,3338 ----
  
     function Scope_Depth_Value (Id : E) return U is
     begin
+       pragma Assert
+         (Ekind (Id) in
+            Concurrent_Kind | Entry_Kind        | Generic_Unit_Kind |
+            E_Package       | E_Package_Body    | Subprogram_Kind   |
+            E_Block         | E_Subprogram_Body |
+            E_Private_Type .. E_Limited_Private_Subtype             |
+            E_Void          | E_Loop            | E_Return_Statement);
        return Uint22 (Id);
     end Scope_Depth_Value;
  
*************** package body Einfo is
*** 3320,3326 ****
  
     function Size_Check_Code (Id : E) return N is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
        return Node19 (Id);
     end Size_Check_Code;
  
--- 3349,3355 ----
  
     function Size_Check_Code (Id : E) return N is
     begin
!       pragma Assert (Ekind (Id) in E_Constant | E_Variable);
        return Node19 (Id);
     end Size_Check_Code;
  
*************** package body Einfo is
*** 3343,3393 ****
     function SPARK_Aux_Pragma (Id : E) return N is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,      --  concurrent types
!                        E_Task_Type)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
!                        E_Package,
!                        E_Package_Body));
        return Node41 (Id);
     end SPARK_Aux_Pragma;
  
     function SPARK_Aux_Pragma_Inherited (Id : E) return B is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,      --  concurrent types
!                        E_Task_Type)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
!                        E_Package,
!                        E_Package_Body));
        return Flag266 (Id);
     end SPARK_Aux_Pragma_Inherited;
  
     function SPARK_Pragma (Id : E) return N is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Constant,            --  objects
!                        E_Variable)
            or else
!          Ekind_In (Id, E_Abstract_State,      --  overloadable
!                        E_Entry,
!                        E_Entry_Family,
!                        E_Function,
!                        E_Generic_Function,
!                        E_Generic_Procedure,
!                        E_Operator,
!                        E_Procedure,
!                        E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
!                        E_Package,
!                        E_Package_Body)
             or else
!          Ekind (Id) = E_Void                  --  special purpose
             or else
!          Ekind_In (Id, E_Protected_Body,      --  types
!                        E_Task_Body)
             or else
           Is_Type (Id));
        return Node40 (Id);
--- 3372,3422 ----
     function SPARK_Aux_Pragma (Id : E) return N is
     begin
        pragma Assert
!         (Ekind (Id) in E_Protected_Type      --  concurrent types
!                      | E_Task_Type
             or else
!          Ekind (Id) in E_Generic_Package     --  packages
!                      | E_Package
!                      | E_Package_Body);
        return Node41 (Id);
     end SPARK_Aux_Pragma;
  
     function SPARK_Aux_Pragma_Inherited (Id : E) return B is
     begin
        pragma Assert
!         (Ekind (Id) in E_Protected_Type      --  concurrent types
!                      | E_Task_Type
             or else
!          Ekind (Id) in E_Generic_Package     --  packages
!                      | E_Package
!                      | E_Package_Body);
        return Flag266 (Id);
     end SPARK_Aux_Pragma_Inherited;
  
     function SPARK_Pragma (Id : E) return N is
     begin
        pragma Assert
!         (Ekind (Id) in E_Constant            --  objects
!                      | E_Variable
            or else
!          Ekind (Id) in E_Abstract_State      --  overloadable
!                      | E_Entry
!                      | E_Entry_Family
!                      | E_Function
!                      | E_Generic_Function
!                      | E_Generic_Procedure
!                      | E_Operator
!                      | E_Procedure
!                      | E_Subprogram_Body
             or else
!          Ekind (Id) in E_Generic_Package     --  packages
!                      | E_Package
!                      | E_Package_Body
             or else
!          Ekind (Id) = E_Void                 --  special purpose
             or else
!          Ekind (Id) in E_Protected_Body      --  types
!                      | E_Task_Body
             or else
           Is_Type (Id));
        return Node40 (Id);
*************** package body Einfo is
*** 3396,3422 ****
     function SPARK_Pragma_Inherited (Id : E) return B is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Constant,            --  objects
!                        E_Variable)
            or else
!          Ekind_In (Id, E_Abstract_State,      --  overloadable
!                        E_Entry,
!                        E_Entry_Family,
!                        E_Function,
!                        E_Generic_Function,
!                        E_Generic_Procedure,
!                        E_Operator,
!                        E_Procedure,
!                        E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
!                        E_Package,
!                        E_Package_Body)
             or else
!          Ekind (Id) = E_Void                  --  special purpose
             or else
!          Ekind_In (Id, E_Protected_Body,      --  types
!                        E_Task_Body)
             or else
           Is_Type (Id));
        return Flag265 (Id);
--- 3425,3451 ----
     function SPARK_Pragma_Inherited (Id : E) return B is
     begin
        pragma Assert
!         (Ekind (Id) in E_Constant            --  objects
!                      | E_Variable
            or else
!          Ekind (Id) in E_Abstract_State      --  overloadable
!                      | E_Entry
!                      | E_Entry_Family
!                      | E_Function
!                      | E_Generic_Function
!                      | E_Generic_Procedure
!                      | E_Operator
!                      | E_Procedure
!                      | E_Subprogram_Body
             or else
!          Ekind (Id) in E_Generic_Package     --  packages
!                      | E_Package
!                      | E_Package_Body
             or else
!          Ekind (Id) = E_Void                 --  special purpose
             or else
!          Ekind (Id) in E_Protected_Body      --  types
!                      | E_Task_Body
             or else
           Is_Type (Id));
        return Flag265 (Id);
*************** package body Einfo is
*** 3454,3462 ****
  
     function Status_Flag_Or_Transient_Decl (Id : E) return N is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant,
!                                    E_Loop_Parameter,
!                                    E_Variable));
        return Node15 (Id);
     end Status_Flag_Or_Transient_Decl;
  
--- 3483,3490 ----
  
     function Status_Flag_Or_Transient_Decl (Id : E) return N is
     begin
!       pragma Assert
!         (Ekind (Id) in E_Constant | E_Loop_Parameter | E_Variable);
        return Node15 (Id);
     end Status_Flag_Or_Transient_Decl;
  
*************** package body Einfo is
*** 3547,3553 ****
  
     function Thunk_Entity (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure)
                        and then Is_Thunk (Id));
        return Node31 (Id);
     end Thunk_Entity;
--- 3575,3581 ----
  
     function Thunk_Entity (Id : E) return E is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure
                        and then Is_Thunk (Id));
        return Node31 (Id);
     end Thunk_Entity;
*************** package body Einfo is
*** 3621,3642 ****
        return Flag238 (Id);
     end Warnings_Off_Used_Unreferenced;
  
     function Wrapped_Entity (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure)
                         and then Is_Primitive_Wrapper (Id));
        return Node27 (Id);
     end Wrapped_Entity;
  
-    function Was_Hidden (Id : E) return B is
-    begin
-       return Flag196 (Id);
-    end Was_Hidden;
- 
     ------------------------------
     -- Classification Functions --
     ------------------------------
  
     function Is_Access_Type                      (Id : E) return B is
     begin
        return Ekind (Id) in Access_Kind;
--- 3649,3675 ----
        return Flag238 (Id);
     end Warnings_Off_Used_Unreferenced;
  
+    function Was_Hidden (Id : E) return B is
+    begin
+       return Flag196 (Id);
+    end Was_Hidden;
+ 
     function Wrapped_Entity (Id : E) return E is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure
                         and then Is_Primitive_Wrapper (Id));
        return Node27 (Id);
     end Wrapped_Entity;
  
     ------------------------------
     -- Classification Functions --
     ------------------------------
  
+    function Is_Access_Object_Type               (Id : E) return B is
+    begin
+       return Is_Access_Type (Id) and then not Is_Access_Subprogram_Type (Id);
+    end Is_Access_Object_Type;
+ 
     function Is_Access_Type                      (Id : E) return B is
     begin
        return Ekind (Id) in Access_Kind;
*************** package body Einfo is
*** 3787,3792 ****
--- 3820,3831 ----
        return Ekind (Id) in Modular_Integer_Kind;
     end Is_Modular_Integer_Type;
  
+    function Is_Named_Access_Type                (Id : E) return B is
+    begin
+       return Ekind (Id) in E_Access_Type ..
+                              E_Access_Protected_Subprogram_Type;
+    end Is_Named_Access_Type;
+ 
     function Is_Named_Number                     (Id : E) return B is
     begin
        return Ekind (Id) in Named_Kind;
*************** package body Einfo is
*** 3883,3889 ****
  
     procedure Set_Abstract_States (Id : E; V : L) is
     begin
!       pragma Assert (Ekind_In (Id, E_Generic_Package, E_Package));
        Set_Elist25 (Id, V);
     end Set_Abstract_States;
  
--- 3922,3928 ----
  
     procedure Set_Abstract_States (Id : E; V : L) is
     begin
!       pragma Assert (Is_Package_Or_Generic_Package (Id));
        Set_Elist25 (Id, V);
     end Set_Abstract_States;
  
*************** package body Einfo is
*** 3908,3913 ****
--- 3947,3958 ----
        Set_Node30 (Id, V);
     end Set_Access_Disp_Table_Elab_Flag;
  
+    procedure Set_Access_Subprogram_Wrapper (Id : E; V : E) is
+    begin
+       pragma Assert (Ekind (Id) = E_Subprogram_Type);
+       Set_Node41 (Id, V);
+    end Set_Access_Subprogram_Wrapper;
+ 
     procedure Set_Anonymous_Designated_Type (Id : E; V : E) is
     begin
        pragma Assert (Ekind (Id) = E_Variable);
*************** package body Einfo is
*** 3916,3931 ****
  
     procedure Set_Anonymous_Masters (Id : E; V : L) is
     begin
!       pragma Assert (Ekind_In (Id, E_Function,
!                                    E_Package,
!                                    E_Procedure,
!                                    E_Subprogram_Body));
        Set_Elist29 (Id, V);
     end Set_Anonymous_Masters;
  
     procedure Set_Anonymous_Object (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Protected_Type, E_Task_Type));
        Set_Node30 (Id, V);
     end Set_Anonymous_Object;
  
--- 3961,3975 ----
  
     procedure Set_Anonymous_Masters (Id : E; V : L) is
     begin
!       pragma Assert
!         (Ekind (Id)
!            in E_Function | E_Package | E_Procedure | E_Subprogram_Body);
        Set_Elist29 (Id, V);
     end Set_Anonymous_Masters;
  
     procedure Set_Anonymous_Object (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in E_Protected_Type | E_Task_Type);
        Set_Node30 (Id, V);
     end Set_Anonymous_Object;
  
*************** package body Einfo is
*** 3952,3970 ****
  
     procedure Set_Activation_Record_Component (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant,
!                                    E_In_Parameter,
!                                    E_In_Out_Parameter,
!                                    E_Loop_Parameter,
!                                    E_Out_Parameter,
!                                    E_Variable));
        Set_Node31 (Id, V);
     end Set_Activation_Record_Component;
  
     procedure Set_Actual_Subtype (Id : E; V : E) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Constant, E_Variable, E_Generic_In_Out_Parameter)
             or else Is_Formal (Id));
        Set_Node17 (Id, V);
     end Set_Actual_Subtype;
--- 3996,4015 ----
  
     procedure Set_Activation_Record_Component (Id : E; V : E) is
     begin
!       pragma Assert
!         (Ekind (Id) in E_Constant
!                      | E_In_Parameter
!                      | E_In_Out_Parameter
!                      | E_Loop_Parameter
!                      | E_Out_Parameter
!                      | E_Variable);
        Set_Node31 (Id, V);
     end Set_Activation_Record_Component;
  
     procedure Set_Actual_Subtype (Id : E; V : E) is
     begin
        pragma Assert
!         (Ekind (Id) in E_Constant | E_Variable | E_Generic_In_Out_Parameter
             or else Is_Formal (Id));
        Set_Node17 (Id, V);
     end Set_Actual_Subtype;
*************** package body Einfo is
*** 3985,3994 ****
     begin
        pragma Assert (Is_Type (Id)
                         or else Is_Formal (Id)
!                        or else Ekind_In (Id, E_Loop_Parameter,
!                                              E_Constant,
!                                              E_Exception,
!                                              E_Variable));
        Set_Uint14 (Id, V);
     end Set_Alignment;
  
--- 4030,4039 ----
     begin
        pragma Assert (Is_Type (Id)
                         or else Is_Formal (Id)
!                        or else Ekind (Id) in E_Loop_Parameter
!                                            | E_Constant
!                                            | E_Exception
!                                            | E_Variable);
        Set_Uint14 (Id, V);
     end Set_Alignment;
  
*************** package body Einfo is
*** 4006,4012 ****
  
     procedure Set_Body_Entity (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package));
        Set_Node19 (Id, V);
     end Set_Body_Entity;
  
--- 4051,4057 ----
  
     procedure Set_Body_Entity (Id : E; V : E) is
     begin
!       pragma Assert (Is_Package_Or_Generic_Package (Id));
        Set_Node19 (Id, V);
     end Set_Body_Entity;
  
*************** package body Einfo is
*** 4033,4039 ****
  
     procedure Set_BIP_Initialization_Call (Id : E; V : N) is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
        Set_Node29 (Id, V);
     end Set_BIP_Initialization_Call;
  
--- 4078,4084 ----
  
     procedure Set_BIP_Initialization_Call (Id : E; V : N) is
     begin
!       pragma Assert (Ekind (Id) in E_Constant | E_Variable);
        Set_Node29 (Id, V);
     end Set_BIP_Initialization_Call;
  
*************** package body Einfo is
*** 4074,4092 ****
  
     procedure Set_Cloned_Subtype (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Record_Subtype, E_Class_Wide_Subtype));
        Set_Node16 (Id, V);
     end Set_Cloned_Subtype;
  
     procedure Set_Component_Bit_Offset (Id : E; V : U) is
     begin
!       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
        Set_Uint11 (Id, V);
     end Set_Component_Bit_Offset;
  
     procedure Set_Component_Clause (Id : E; V : N) is
     begin
!       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
        Set_Node13 (Id, V);
     end Set_Component_Clause;
  
--- 4119,4137 ----
  
     procedure Set_Cloned_Subtype (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in E_Record_Subtype | E_Class_Wide_Subtype);
        Set_Node16 (Id, V);
     end Set_Cloned_Subtype;
  
     procedure Set_Component_Bit_Offset (Id : E; V : U) is
     begin
!       pragma Assert (Ekind (Id) in E_Component | E_Discriminant);
        Set_Uint11 (Id, V);
     end Set_Component_Bit_Offset;
  
     procedure Set_Component_Clause (Id : E; V : N) is
     begin
!       pragma Assert (Ekind (Id) in E_Component | E_Discriminant);
        Set_Node13 (Id, V);
     end Set_Component_Clause;
  
*************** package body Einfo is
*** 4105,4152 ****
     procedure Set_Contains_Ignored_Ghost_Code (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Block,
!                        E_Function,
!                        E_Generic_Function,
!                        E_Generic_Package,
!                        E_Generic_Procedure,
!                        E_Package,
!                        E_Package_Body,
!                        E_Procedure,
!                        E_Subprogram_Body));
        Set_Flag279 (Id, V);
     end Set_Contains_Ignored_Ghost_Code;
  
     procedure Set_Contract (Id : E; V : N) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,      --  concurrent types
!                        E_Task_Body,
!                        E_Task_Type)
             or else
!          Ekind_In (Id, E_Constant,            --  objects
!                        E_Variable)
             or else
!          Ekind_In (Id, E_Entry,               --  overloadable
!                        E_Entry_Family,
!                        E_Function,
!                        E_Generic_Function,
!                        E_Generic_Procedure,
!                        E_Operator,
!                        E_Procedure,
!                        E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
!                        E_Package,
!                        E_Package_Body)
             or else
!          Ekind (Id) = E_Void);                --  special purpose
        Set_Node34 (Id, V);
     end Set_Contract;
  
     procedure Set_Contract_Wrapper (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Entry, E_Entry_Family));
        Set_Node25 (Id, V);
     end Set_Contract_Wrapper;
  
--- 4150,4201 ----
     procedure Set_Contains_Ignored_Ghost_Code (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Ekind (Id) in E_Block
!                      | E_Function
!                      | E_Generic_Function
!                      | E_Generic_Package
!                      | E_Generic_Procedure
!                      | E_Package
!                      | E_Package_Body
!                      | E_Procedure
!                      | E_Subprogram_Body);
        Set_Flag279 (Id, V);
     end Set_Contains_Ignored_Ghost_Code;
  
     procedure Set_Contract (Id : E; V : N) is
     begin
        pragma Assert
!         (Ekind (Id) in E_Protected_Type      --  concurrent types
!                      | E_Task_Body
!                      | E_Task_Type
             or else
!          Ekind (Id) in E_Constant            --  objects
!                      | E_Variable
             or else
!          Ekind (Id) in E_Entry               --  overloadable
!                      | E_Entry_Family
!                      | E_Function
!                      | E_Generic_Function
!                      | E_Generic_Procedure
!                      | E_Operator
!                      | E_Procedure
!                      | E_Subprogram_Body
             or else
!          Ekind (Id) in E_Generic_Package     --  packages
!                      | E_Package
!                      | E_Package_Body
! 
             or else
!          Is_Type (Id)                        -- types
! 
!            or else
!          Ekind (Id) = E_Void);               --  special purpose
        Set_Node34 (Id, V);
     end Set_Contract;
  
     procedure Set_Contract_Wrapper (Id : E; V : E) is
     begin
!       pragma Assert (Is_Entry (Id));
        Set_Node25 (Id, V);
     end Set_Contract_Wrapper;
  
*************** package body Einfo is
*** 4186,4198 ****
  
     procedure Set_Corresponding_Protected_Entry (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Void, E_Subprogram_Body));
        Set_Node18 (Id, V);
     end Set_Corresponding_Protected_Entry;
  
     procedure Set_Corresponding_Record_Component (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
        Set_Node21 (Id, V);
     end Set_Corresponding_Record_Component;
  
--- 4235,4247 ----
  
     procedure Set_Corresponding_Protected_Entry (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in E_Void | E_Subprogram_Body);
        Set_Node18 (Id, V);
     end Set_Corresponding_Protected_Entry;
  
     procedure Set_Corresponding_Record_Component (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in E_Component | E_Discriminant);
        Set_Node21 (Id, V);
     end Set_Corresponding_Record_Component;
  
*************** package body Einfo is
*** 4275,4281 ****
     procedure Set_Delay_Subprogram_Descriptors (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Is_Subprogram (Id) or else Ekind_In (Id, E_Package, E_Package_Body));
  
        Set_Flag50 (Id, V);
     end Set_Delay_Subprogram_Descriptors;
--- 4324,4330 ----
     procedure Set_Delay_Subprogram_Descriptors (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Is_Subprogram (Id) or else Ekind (Id) in E_Package | E_Package_Body);
  
        Set_Flag50 (Id, V);
     end Set_Delay_Subprogram_Descriptors;
*************** package body Einfo is
*** 4383,4395 ****
  
     procedure Set_DT_Position (Id : E; V : U) is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        Set_Uint15 (Id, V);
     end Set_DT_Position;
  
     procedure Set_DTC_Entity (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        Set_Node16 (Id, V);
     end Set_DTC_Entity;
  
--- 4432,4444 ----
  
     procedure Set_DT_Position (Id : E; V : U) is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        Set_Uint15 (Id, V);
     end Set_DT_Position;
  
     procedure Set_DTC_Entity (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        Set_Node16 (Id, V);
     end Set_DTC_Entity;
  
*************** package body Einfo is
*** 4404,4410 ****
        pragma Assert
          (Is_Subprogram (Id)
             or else
!          Ekind_In (Id, E_Entry, E_Entry_Family, E_Package)
             or else
           Is_Generic_Unit (Id));
        Set_Node13 (Id, V);
--- 4453,4459 ----
        pragma Assert
          (Is_Subprogram (Id)
             or else
!          Ekind (Id) in E_Entry | E_Entry_Family | E_Package
             or else
           Is_Generic_Unit (Id));
        Set_Node13 (Id, V);
*************** package body Einfo is
*** 4415,4421 ****
        pragma Assert
          (Is_Subprogram (Id)
             or else
!          Ekind_In (Id, E_Entry, E_Entry_Family, E_Package)
             or else
           Is_Generic_Unit (Id));
        Set_Flag174 (Id, V);
--- 4464,4470 ----
        pragma Assert
          (Is_Subprogram (Id)
             or else
!          Ekind (Id) in E_Entry | E_Entry_Family | E_Package
             or else
           Is_Generic_Unit (Id));
        Set_Flag174 (Id, V);
*************** package body Einfo is
*** 4423,4429 ****
  
     procedure Set_Encapsulating_State (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Abstract_State, E_Constant, E_Variable));
        Set_Node32 (Id, V);
     end Set_Encapsulating_State;
  
--- 4472,4478 ----
  
     procedure Set_Encapsulating_State (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in E_Abstract_State | E_Constant | E_Variable);
        Set_Node32 (Id, V);
     end Set_Encapsulating_State;
  
*************** package body Einfo is
*** 4502,4513 ****
     procedure Set_Equivalent_Type (Id : E; V : E) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Class_Wide_Type,
!                        E_Class_Wide_Subtype,
!                        E_Access_Protected_Subprogram_Type,
!                        E_Anonymous_Access_Protected_Subprogram_Type,
!                        E_Access_Subprogram_Type,
!                        E_Exception_Type));
        Set_Node18 (Id, V);
     end Set_Equivalent_Type;
  
--- 4551,4562 ----
     procedure Set_Equivalent_Type (Id : E; V : E) is
     begin
        pragma Assert
!         (Ekind (Id) in E_Class_Wide_Type
!                      | E_Class_Wide_Subtype
!                      | E_Access_Protected_Subprogram_Type
!                      | E_Anonymous_Access_Protected_Subprogram_Type
!                      | E_Access_Subprogram_Type
!                      | E_Exception_Type);
        Set_Node18 (Id, V);
     end Set_Equivalent_Type;
  
*************** package body Einfo is
*** 4519,4531 ****
     procedure Set_Extra_Accessibility (Id : E; V : E) is
     begin
        pragma Assert
!         (Is_Formal (Id) or else Ekind_In (Id, E_Variable, E_Constant));
        Set_Node13 (Id, V);
     end Set_Extra_Accessibility;
  
     procedure Set_Extra_Accessibility_Of_Result (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Operator, E_Subprogram_Type));
        Set_Node19 (Id, V);
     end Set_Extra_Accessibility_Of_Result;
  
--- 4568,4581 ----
     procedure Set_Extra_Accessibility (Id : E; V : E) is
     begin
        pragma Assert
!         (Is_Formal (Id) or else Ekind (Id) in E_Variable | E_Constant);
        Set_Node13 (Id, V);
     end Set_Extra_Accessibility;
  
     procedure Set_Extra_Accessibility_Of_Result (Id : E; V : E) is
     begin
!       pragma Assert
!         (Ekind (Id) in E_Function | E_Operator | E_Subprogram_Type);
        Set_Node19 (Id, V);
     end Set_Extra_Accessibility_Of_Result;
  
*************** package body Einfo is
*** 4544,4552 ****
     begin
        pragma Assert
          (Is_Overloadable (Id)
!            or else Ekind_In (Id, E_Entry_Family,
!                                  E_Subprogram_Body,
!                                  E_Subprogram_Type));
        Set_Node28 (Id, V);
     end Set_Extra_Formals;
  
--- 4594,4602 ----
     begin
        pragma Assert
          (Is_Overloadable (Id)
!            or else Ekind (Id) in E_Entry_Family
!                                | E_Subprogram_Body
!                                | E_Subprogram_Type);
        Set_Node28 (Id, V);
     end Set_Extra_Formals;
  
*************** package body Einfo is
*** 4564,4570 ****
  
     procedure Set_Finalizer (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Package, E_Package_Body));
        Set_Node28 (Id, V);
     end Set_Finalizer;
  
--- 4614,4620 ----
  
     procedure Set_Finalizer (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in E_Package | E_Package_Body);
        Set_Node28 (Id, V);
     end Set_Finalizer;
  
*************** package body Einfo is
*** 4593,4600 ****
  
     procedure Set_First_Private_Entity (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package)
!                        or else Ekind (Id) in Concurrent_Kind);
        Set_Node16 (Id, V);
     end Set_First_Private_Entity;
  
--- 4643,4650 ----
  
     procedure Set_First_Private_Entity (Id : E; V : E) is
     begin
!       pragma Assert (Is_Package_Or_Generic_Package (Id)
!                        or else Is_Concurrent_Type (Id));
        Set_Node16 (Id, V);
     end Set_First_Private_Entity;
  
*************** package body Einfo is
*** 4617,4623 ****
     procedure Set_From_Limited_With (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Is_Type (Id) or else Ekind_In (Id, E_Abstract_State, E_Package));
        Set_Flag159 (Id, V);
     end Set_From_Limited_With;
  
--- 4667,4673 ----
     procedure Set_From_Limited_With (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Is_Type (Id) or else Ekind (Id) in E_Abstract_State | E_Package);
        Set_Flag159 (Id, V);
     end Set_From_Limited_With;
  
*************** package body Einfo is
*** 4779,4788 ****
  
     procedure Set_Has_Expanded_Contract (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind_In (Id, E_Entry,
!                                    E_Entry_Family,
!                                    E_Function,
!                                    E_Procedure));
        Set_Flag240 (Id, V);
     end Set_Has_Expanded_Contract;
  
--- 4829,4836 ----
  
     procedure Set_Has_Expanded_Contract (Id : E; V : B := True) is
     begin
!       pragma Assert
!         (Ekind (Id) in E_Entry | E_Entry_Family | E_Function | E_Procedure);
        Set_Flag240 (Id, V);
     end Set_Has_Expanded_Contract;
  
*************** package body Einfo is
*** 4837,4843 ****
  
     procedure Set_Has_Initial_Value (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind_In (Id, E_Variable, E_Out_Parameter));
        Set_Flag219 (Id, V);
     end Set_Has_Initial_Value;
  
--- 4885,4891 ----
  
     procedure Set_Has_Initial_Value (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind (Id) in E_Variable | E_Out_Parameter);
        Set_Flag219 (Id, V);
     end Set_Has_Initial_Value;
  
*************** package body Einfo is
*** 4860,4866 ****
  
     procedure Set_Has_Missing_Return (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Generic_Function));
        Set_Flag142 (Id, V);
     end Set_Has_Missing_Return;
  
--- 4908,4914 ----
  
     procedure Set_Has_Missing_Return (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Generic_Function);
        Set_Flag142 (Id, V);
     end Set_Has_Missing_Return;
  
*************** package body Einfo is
*** 4890,4896 ****
     procedure Set_Has_Out_Or_In_Out_Parameter (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Entry, E_Entry_Family)
            or else Is_Subprogram_Or_Generic_Subprogram (Id));
        Set_Flag110 (Id, V);
     end Set_Has_Out_Or_In_Out_Parameter;
--- 4938,4944 ----
     procedure Set_Has_Out_Or_In_Out_Parameter (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Is_Entry (Id)
            or else Is_Subprogram_Or_Generic_Subprogram (Id));
        Set_Flag110 (Id, V);
     end Set_Has_Out_Or_In_Out_Parameter;
*************** package body Einfo is
*** 5180,5185 ****
--- 5228,5240 ----
        Set_Flag182 (Id, V);
     end Set_Has_Xref_Entry;
  
+    procedure Set_Has_Yield_Aspect (Id : E; V : B := True) is
+    begin
+       pragma Assert
+         (Is_Entry (Id) or else Is_Subprogram_Or_Generic_Subprogram (Id));
+       Set_Flag308 (Id, V);
+    end Set_Has_Yield_Aspect;
+ 
     procedure Set_Hiding_Loop_Variable (Id : E; V : E) is
     begin
        pragma Assert (Ekind (Id) = E_Variable);
*************** package body Einfo is
*** 5207,5229 ****
     procedure Set_Ignore_SPARK_Mode_Pragmas (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Body,      --  concurrent types
!                        E_Protected_Type,
!                        E_Task_Body,
!                        E_Task_Type)
            or else
!          Ekind_In (Id, E_Entry,               --  overloadable
!                        E_Entry_Family,
!                        E_Function,
!                        E_Generic_Function,
!                        E_Generic_Procedure,
!                        E_Operator,
!                        E_Procedure,
!                        E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
!                        E_Package,
!                        E_Package_Body));
        Set_Flag301 (Id, V);
     end Set_Ignore_SPARK_Mode_Pragmas;
  
--- 5262,5284 ----
     procedure Set_Ignore_SPARK_Mode_Pragmas (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Ekind (Id) in E_Protected_Body      --  concurrent types
!                      | E_Protected_Type
!                      | E_Task_Body
!                      | E_Task_Type
            or else
!          Ekind (Id) in E_Entry               --  overloadable
!                      | E_Entry_Family
!                      | E_Function
!                      | E_Generic_Function
!                      | E_Generic_Procedure
!                      | E_Operator
!                      | E_Procedure
!                      | E_Subprogram_Body
             or else
!          Ekind (Id) in E_Generic_Package     --  packages
!                      | E_Package
!                      | E_Package_Body);
        Set_Flag301 (Id, V);
     end Set_Ignore_SPARK_Mode_Pragmas;
  
*************** package body Einfo is
*** 5238,5244 ****
        pragma Assert
          (Is_Internal (Id)
             and then Is_Hidden (Id)
!            and then (Ekind_In (Id, E_Procedure, E_Function)));
        Set_Node25 (Id, V);
     end Set_Interface_Alias;
  
--- 5293,5299 ----
        pragma Assert
          (Is_Internal (Id)
             and then Is_Hidden (Id)
!            and then (Ekind (Id) in E_Procedure | E_Function));
        Set_Node25 (Id, V);
     end Set_Interface_Alias;
  
*************** package body Einfo is
*** 5270,5276 ****
        --  an aggregate used as the initialization expression for an object
        --  declaration, and this occurs before the Ekind for the object is set.
  
!       pragma Assert (Ekind_In (Id, E_Void, E_Constant, E_Variable));
        Set_Node28 (Id, V);
     end Set_Initialization_Statements;
  
--- 5325,5331 ----
        --  an aggregate used as the initialization expression for an object
        --  declaration, and this occurs before the Ekind for the object is set.
  
!       pragma Assert (Ekind (Id) in E_Void | E_Constant | E_Variable);
        Set_Node28 (Id, V);
     end Set_Initialization_Statements;
  
*************** package body Einfo is
*** 5284,5295 ****
        Set_Node21 (Id, V);
     end Set_Interface_Name;
  
-    procedure Set_Invariants_Ignored (Id : E; V : B := True) is
-    begin
-       pragma Assert (Is_Type (Id));
-       Set_Flag308 (Id, V);
-    end Set_Invariants_Ignored;
- 
     procedure Set_Is_Abstract_Subprogram (Id : E; V : B := True) is
     begin
        pragma Assert (Is_Overloadable (Id));
--- 5339,5344 ----
*************** package body Einfo is
*** 5363,5369 ****
  
     procedure Set_Is_Called (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind_In (Id, E_Procedure, E_Function, E_Package));
        Set_Flag102 (Id, V);
     end Set_Is_Called;
  
--- 5412,5418 ----
  
     procedure Set_Is_Called (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind (Id) in E_Procedure | E_Function | E_Package);
        Set_Flag102 (Id, V);
     end Set_Is_Called;
  
*************** package body Einfo is
*** 5450,5455 ****
--- 5499,5510 ----
        Set_Flag74 (Id, V);
     end Set_Is_CPP_Class;
  
+    procedure Set_Is_CUDA_Kernel (Id : E; V : B := True) is
+    begin
+       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
+       Set_Flag118 (Id, V);
+    end Set_Is_CUDA_Kernel;
+ 
     procedure Set_Is_DIC_Procedure (Id : E; V : B := True) is
     begin
        pragma Assert (Ekind (Id) = E_Procedure);
*************** package body Einfo is
*** 5529,5535 ****
  
     procedure Set_Is_Finalized_Transient (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant, E_Loop_Parameter, E_Variable));
        Set_Flag252 (Id, V);
     end Set_Is_Finalized_Transient;
  
--- 5584,5590 ----
  
     procedure Set_Is_Finalized_Transient (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind (Id) in E_Constant | E_Loop_Parameter | E_Variable);
        Set_Flag252 (Id, V);
     end Set_Is_Finalized_Transient;
  
*************** package body Einfo is
*** 5551,5557 ****
  
     procedure Set_Is_Generic_Actual_Subprogram (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        Set_Flag274 (Id, V);
     end Set_Is_Generic_Actual_Subprogram;
  
--- 5606,5612 ----
  
     procedure Set_Is_Generic_Actual_Subprogram (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        Set_Flag274 (Id, V);
     end Set_Is_Generic_Actual_Subprogram;
  
*************** package body Einfo is
*** 5579,5585 ****
  
     procedure Set_Is_Hidden_Non_Overridden_Subpgm (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        Set_Flag2 (Id, V);
     end Set_Is_Hidden_Non_Overridden_Subpgm;
  
--- 5634,5640 ----
  
     procedure Set_Is_Hidden_Non_Overridden_Subpgm (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        Set_Flag2 (Id, V);
     end Set_Is_Hidden_Non_Overridden_Subpgm;
  
*************** package body Einfo is
*** 5599,5605 ****
  
     procedure Set_Is_Ignored_Transient (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant, E_Loop_Parameter, E_Variable));
        Set_Flag295 (Id, V);
     end Set_Is_Ignored_Transient;
  
--- 5654,5660 ----
  
     procedure Set_Is_Ignored_Transient (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind (Id) in E_Constant | E_Loop_Parameter | E_Variable);
        Set_Flag295 (Id, V);
     end Set_Is_Ignored_Transient;
  
*************** package body Einfo is
*** 5626,5632 ****
  
     procedure Set_Is_Initial_Condition_Procedure (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        Set_Flag302 (Id, V);
     end Set_Is_Initial_Condition_Procedure;
  
--- 5681,5687 ----
  
     procedure Set_Is_Initial_Condition_Procedure (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        Set_Flag302 (Id, V);
     end Set_Is_Initial_Condition_Procedure;
  
*************** package body Einfo is
*** 5637,5643 ****
  
     procedure Set_Is_Inlined_Always (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        Set_Flag1 (Id, V);
     end Set_Is_Inlined_Always;
  
--- 5692,5698 ----
  
     procedure Set_Is_Inlined_Always (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        Set_Flag1 (Id, V);
     end Set_Is_Inlined_Always;
  
*************** package body Einfo is
*** 5764,5770 ****
  
     procedure Set_Is_Param_Block_Component_Type (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind_In (Id, E_Void, E_General_Access_Type));
        Set_Flag215 (Id, V);
     end Set_Is_Param_Block_Component_Type;
  
--- 5819,5825 ----
  
     procedure Set_Is_Param_Block_Component_Type (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind (Id) in E_Void | E_General_Access_Type);
        Set_Flag215 (Id, V);
     end Set_Is_Param_Block_Component_Type;
  
*************** package body Einfo is
*** 5788,5794 ****
  
     procedure Set_Is_Predicate_Function_M (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        Set_Flag256 (Id, V);
     end Set_Is_Predicate_Function_M;
  
--- 5843,5849 ----
  
     procedure Set_Is_Predicate_Function_M (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        Set_Flag256 (Id, V);
     end Set_Is_Predicate_Function_M;
  
*************** package body Einfo is
*** 5799,5813 ****
  
     procedure Set_Is_Primitive (Id : E; V : B := True) is
     begin
!       pragma Assert
!         (Is_Overloadable (Id)
!            or else Ekind_In (Id, E_Generic_Function, E_Generic_Procedure));
        Set_Flag218 (Id, V);
     end Set_Is_Primitive;
  
     procedure Set_Is_Primitive_Wrapper (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        Set_Flag195 (Id, V);
     end Set_Is_Primitive_Wrapper;
  
--- 5854,5866 ----
  
     procedure Set_Is_Primitive (Id : E; V : B := True) is
     begin
!       pragma Assert (Is_Overloadable (Id) or else Is_Generic_Subprogram (Id));
        Set_Flag218 (Id, V);
     end Set_Is_Primitive;
  
     procedure Set_Is_Primitive_Wrapper (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        Set_Flag195 (Id, V);
     end Set_Is_Primitive_Wrapper;
  
*************** package body Einfo is
*** 5824,5830 ****
  
     procedure Set_Is_Private_Primitive (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        Set_Flag245 (Id, V);
     end Set_Is_Private_Primitive;
  
--- 5877,5883 ----
  
     procedure Set_Is_Private_Primitive (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        Set_Flag245 (Id, V);
     end Set_Is_Private_Primitive;
  
*************** package body Einfo is
*** 5898,5913 ****
     begin
        pragma Assert
          (Is_Type (Id)
!            or else Ekind_In (Id, E_Exception,
!                                  E_Variable,
!                                  E_Constant,
!                                  E_Void));
        Set_Flag28 (Id, V);
     end Set_Is_Statically_Allocated;
  
     procedure Set_Is_Tag (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind_In (Id, E_Component, E_Constant, E_Variable));
        Set_Flag78 (Id, V);
     end Set_Is_Tag;
  
--- 5951,5964 ----
     begin
        pragma Assert
          (Is_Type (Id)
!            or else
!              Ekind (Id) in E_Exception | E_Variable | E_Constant | E_Void);
        Set_Flag28 (Id, V);
     end Set_Is_Statically_Allocated;
  
     procedure Set_Is_Tag (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind (Id) in E_Component | E_Constant | E_Variable);
        Set_Flag78 (Id, V);
     end Set_Is_Tag;
  
*************** package body Einfo is
*** 5964,5970 ****
     procedure Set_Is_Uplevel_Referenced_Entity (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Constant, E_Loop_Parameter, E_Variable)
            or else Is_Formal (Id)
            or else Is_Type (Id));
        Set_Flag283 (Id, V);
--- 6015,6021 ----
     procedure Set_Is_Uplevel_Referenced_Entity (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Ekind (Id) in E_Constant | E_Loop_Parameter | E_Variable
            or else Is_Formal (Id)
            or else Is_Type (Id));
        Set_Flag283 (Id, V);
*************** package body Einfo is
*** 6021,6027 ****
  
     procedure Set_Last_Aggregate_Assignment (Id : E; V : N) is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
        Set_Node30 (Id, V);
     end Set_Last_Aggregate_Assignment;
  
--- 6072,6078 ----
  
     procedure Set_Last_Aggregate_Assignment (Id : E; V : N) is
     begin
!       pragma Assert (Ekind (Id) in E_Constant | E_Variable);
        Set_Node30 (Id, V);
     end Set_Last_Aggregate_Assignment;
  
*************** package body Einfo is
*** 6038,6044 ****
  
     procedure Set_Limited_View (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) = E_Package);
        Set_Node23 (Id, V);
     end Set_Limited_View;
  
--- 6089,6096 ----
  
     procedure Set_Limited_View (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) = E_Package
!         and then not Is_Generic_Instance (Id));
        Set_Node23 (Id, V);
     end Set_Limited_View;
  
*************** package body Einfo is
*** 6097,6103 ****
  
     procedure Set_Minimum_Accessibility (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in Formal_Kind);
        Set_Node24 (Id, V);
     end Set_Minimum_Accessibility;
  
--- 6149,6155 ----
  
     procedure Set_Minimum_Accessibility (Id : E; V : E) is
     begin
!       pragma Assert (Is_Formal (Id));
        Set_Node24 (Id, V);
     end Set_Minimum_Accessibility;
  
*************** package body Einfo is
*** 6133,6139 ****
     begin
        pragma Assert
          (Is_Overloadable (Id)
!            or else Ekind_In (Id, E_Subprogram_Type, E_Entry_Family));
        Set_Flag22 (Id, V);
     end Set_Needs_No_Actuals;
  
--- 6185,6191 ----
     begin
        pragma Assert
          (Is_Overloadable (Id)
!            or else Ekind (Id) in E_Subprogram_Type | E_Entry_Family);
        Set_Flag22 (Id, V);
     end Set_Needs_No_Actuals;
  
*************** package body Einfo is
*** 6173,6180 ****
  
     procedure Set_No_Return (Id : E; V : B := True) is
     begin
!       pragma Assert
!         (V = False or else Ekind_In (Id, E_Procedure, E_Generic_Procedure));
        Set_Flag113 (Id, V);
     end Set_No_Return;
  
--- 6225,6231 ----
  
     procedure Set_No_Return (Id : E; V : B := True) is
     begin
!       pragma Assert (Is_Subprogram_Or_Generic_Subprogram (Id));
        Set_Flag113 (Id, V);
     end Set_No_Return;
  
*************** package body Einfo is
*** 6200,6206 ****
     begin
        pragma Assert
          (Ekind (Id) in Incomplete_Kind
!           or else Ekind_In (Id, E_Abstract_State, E_Class_Wide_Type));
        Set_Node19 (Id, V);
     end Set_Non_Limited_View;
  
--- 6251,6257 ----
     begin
        pragma Assert
          (Ekind (Id) in Incomplete_Kind
!           or else Ekind (Id) in E_Abstract_State | E_Class_Wide_Type);
        Set_Node19 (Id, V);
     end Set_Non_Limited_View;
  
*************** package body Einfo is
*** 6214,6232 ****
  
     procedure Set_Normalized_First_Bit (Id : E; V : U) is
     begin
!       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
        Set_Uint8 (Id, V);
     end Set_Normalized_First_Bit;
  
     procedure Set_Normalized_Position (Id : E; V : U) is
     begin
!       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
        Set_Uint14 (Id, V);
     end Set_Normalized_Position;
  
     procedure Set_Normalized_Position_Max (Id : E; V : U) is
     begin
!       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
        Set_Uint10 (Id, V);
     end Set_Normalized_Position_Max;
  
--- 6265,6283 ----
  
     procedure Set_Normalized_First_Bit (Id : E; V : U) is
     begin
!       pragma Assert (Ekind (Id) in E_Component | E_Discriminant);
        Set_Uint8 (Id, V);
     end Set_Normalized_First_Bit;
  
     procedure Set_Normalized_Position (Id : E; V : U) is
     begin
!       pragma Assert (Ekind (Id) in E_Component | E_Discriminant);
        Set_Uint14 (Id, V);
     end Set_Normalized_Position;
  
     procedure Set_Normalized_Position_Max (Id : E; V : U) is
     begin
!       pragma Assert (Ekind (Id) in E_Component | E_Discriminant);
        Set_Uint10 (Id, V);
     end Set_Normalized_Position_Max;
  
*************** package body Einfo is
*** 6239,6252 ****
     procedure Set_Optimize_Alignment_Space (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Is_Type (Id) or else Ekind_In (Id, E_Constant, E_Variable));
        Set_Flag241 (Id, V);
     end Set_Optimize_Alignment_Space;
  
     procedure Set_Optimize_Alignment_Time (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Is_Type (Id) or else Ekind_In (Id, E_Constant, E_Variable));
        Set_Flag242 (Id, V);
     end Set_Optimize_Alignment_Time;
  
--- 6290,6303 ----
     procedure Set_Optimize_Alignment_Space (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Is_Type (Id) or else Ekind (Id) in E_Constant | E_Variable);
        Set_Flag241 (Id, V);
     end Set_Optimize_Alignment_Space;
  
     procedure Set_Optimize_Alignment_Time (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Is_Type (Id) or else Ekind (Id) in E_Constant | E_Variable);
        Set_Flag242 (Id, V);
     end Set_Optimize_Alignment_Time;
  
*************** package body Einfo is
*** 6264,6276 ****
  
     procedure Set_Original_Protected_Subprogram (Id : E; V : N) is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        Set_Node41 (Id, V);
     end Set_Original_Protected_Subprogram;
  
     procedure Set_Original_Record_Component (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Void, E_Component, E_Discriminant));
        Set_Node22 (Id, V);
     end Set_Original_Record_Component;
  
--- 6315,6327 ----
  
     procedure Set_Original_Protected_Subprogram (Id : E; V : N) is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        Set_Node41 (Id, V);
     end Set_Original_Protected_Subprogram;
  
     procedure Set_Original_Record_Component (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in E_Void | E_Component | E_Discriminant);
        Set_Node22 (Id, V);
     end Set_Original_Record_Component;
  
*************** package body Einfo is
*** 6281,6293 ****
  
     procedure Set_Overridden_Operation (Id : E; V : E) is
     begin
!       pragma Assert (Is_Subprogram (Id) or else Is_Generic_Subprogram (Id));
        Set_Node26 (Id, V);
     end Set_Overridden_Operation;
  
     procedure Set_Package_Instantiation (Id : E; V : N) is
     begin
!       pragma Assert (Ekind_In (Id, E_Void, E_Generic_Package, E_Package));
        Set_Node26 (Id, V);
     end Set_Package_Instantiation;
  
--- 6332,6344 ----
  
     procedure Set_Overridden_Operation (Id : E; V : E) is
     begin
!       pragma Assert (Is_Subprogram_Or_Generic_Subprogram (Id));
        Set_Node26 (Id, V);
     end Set_Overridden_Operation;
  
     procedure Set_Package_Instantiation (Id : E; V : N) is
     begin
!       pragma Assert (Ekind (Id) in E_Void | E_Generic_Package | E_Package);
        Set_Node26 (Id, V);
     end Set_Package_Instantiation;
  
*************** package body Einfo is
*** 6305,6311 ****
  
     procedure Set_Part_Of_Constituents (Id : E; V : L) is
     begin
!       pragma Assert (Ekind_In (Id, E_Abstract_State, E_Variable));
        Set_Elist10 (Id, V);
     end Set_Part_Of_Constituents;
  
--- 6356,6362 ----
  
     procedure Set_Part_Of_Constituents (Id : E; V : L) is
     begin
!       pragma Assert (Ekind (Id) in E_Abstract_State | E_Variable);
        Set_Elist10 (Id, V);
     end Set_Part_Of_Constituents;
  
*************** package body Einfo is
*** 6329,6346 ****
  
     procedure Set_Postconditions_Proc (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Entry,
!                                    E_Entry_Family,
!                                    E_Function,
!                                    E_Procedure));
        Set_Node14 (Id, V);
     end Set_Postconditions_Proc;
  
     procedure Set_Predicated_Parent (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Array_Subtype,
!                                    E_Record_Subtype,
!                                    E_Record_Subtype_With_Private));
        Set_Node38 (Id, V);
     end Set_Predicated_Parent;
  
--- 6380,6395 ----
  
     procedure Set_Postconditions_Proc (Id : E; V : E) is
     begin
!       pragma Assert
!         (Ekind (Id) in E_Entry | E_Entry_Family | E_Function | E_Procedure);
        Set_Node14 (Id, V);
     end Set_Postconditions_Proc;
  
     procedure Set_Predicated_Parent (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in E_Array_Subtype
!                                  | E_Record_Subtype
!                                  | E_Record_Subtype_With_Private);
        Set_Node38 (Id, V);
     end Set_Predicated_Parent;
  
*************** package body Einfo is
*** 6364,6370 ****
  
     procedure Set_Prival_Link (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
        Set_Node20 (Id, V);
     end Set_Prival_Link;
  
--- 6413,6419 ----
  
     procedure Set_Prival_Link (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in E_Constant | E_Variable);
        Set_Node20 (Id, V);
     end Set_Prival_Link;
  
*************** package body Einfo is
*** 6381,6387 ****
  
     procedure Set_Protected_Body_Subprogram (Id : E; V : E) is
     begin
!       pragma Assert (Is_Subprogram (Id) or else Is_Entry (Id));
        Set_Node11 (Id, V);
     end Set_Protected_Body_Subprogram;
  
--- 6430,6436 ----
  
     procedure Set_Protected_Body_Subprogram (Id : E; V : E) is
     begin
!       pragma Assert (Is_Subprogram_Or_Entry (Id));
        Set_Node11 (Id, V);
     end Set_Protected_Body_Subprogram;
  
*************** package body Einfo is
*** 6393,6408 ****
  
     procedure Set_Protected_Subprogram (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        Set_Node39 (Id, V);
     end Set_Protected_Subprogram;
  
     procedure Set_Protection_Object (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Entry,
!                                    E_Entry_Family,
!                                    E_Function,
!                                    E_Procedure));
        Set_Node23 (Id, V);
     end Set_Protection_Object;
  
--- 6442,6457 ----
  
     procedure Set_Protected_Subprogram (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure);
        Set_Node39 (Id, V);
     end Set_Protected_Subprogram;
  
     procedure Set_Protection_Object (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in E_Entry
!                                  | E_Entry_Family
!                                  | E_Function
!                                  | E_Procedure);
        Set_Node23 (Id, V);
     end Set_Protection_Object;
  
*************** package body Einfo is
*** 6452,6471 ****
  
     procedure Set_Related_Expression (Id : E; V : N) is
     begin
!       pragma Assert (Ekind (Id) in Type_Kind
!                        or else Ekind_In (Id, E_Constant, E_Variable, E_Void));
        Set_Node24 (Id, V);
     end Set_Related_Expression;
  
     procedure Set_Related_Instance (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Package, E_Package_Body));
        Set_Node15 (Id, V);
     end Set_Related_Instance;
  
     procedure Set_Related_Type (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Component, E_Constant, E_Variable));
        Set_Node27 (Id, V);
     end Set_Related_Type;
  
--- 6501,6521 ----
  
     procedure Set_Related_Expression (Id : E; V : N) is
     begin
!       pragma Assert
!         (Ekind (Id) in
!            Type_Kind | E_Constant | E_Variable | E_Function | E_Void);
        Set_Node24 (Id, V);
     end Set_Related_Expression;
  
     procedure Set_Related_Instance (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in E_Package | E_Package_Body);
        Set_Node15 (Id, V);
     end Set_Related_Instance;
  
     procedure Set_Related_Type (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in E_Component | E_Constant | E_Variable);
        Set_Node27 (Id, V);
     end Set_Related_Type;
  
*************** package body Einfo is
*** 6556,6562 ****
  
     procedure Set_Scope_Depth_Value (Id : E; V : U) is
     begin
!       pragma Assert (not Is_Record_Type (Id));
        Set_Uint22 (Id, V);
     end Set_Scope_Depth_Value;
  
--- 6606,6618 ----
  
     procedure Set_Scope_Depth_Value (Id : E; V : U) is
     begin
!       pragma Assert
!         (Ekind (Id) in
!            Concurrent_Kind | Entry_Kind        | Generic_Unit_Kind |
!            E_Package       | E_Package_Body    | Subprogram_Kind   |
!            E_Block         | E_Subprogram_Body |
!            E_Private_Type .. E_Limited_Private_Subtype             |
!            E_Void          | E_Loop            | E_Return_Statement);
        Set_Uint22 (Id, V);
     end Set_Scope_Depth_Value;
  
*************** package body Einfo is
*** 6573,6579 ****
  
     procedure Set_Size_Check_Code (Id : E; V : N) is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
        Set_Node19 (Id, V);
     end Set_Size_Check_Code;
  
--- 6629,6635 ----
  
     procedure Set_Size_Check_Code (Id : E; V : N) is
     begin
!       pragma Assert (Ekind (Id) in E_Constant | E_Variable);
        Set_Node19 (Id, V);
     end Set_Size_Check_Code;
  
*************** package body Einfo is
*** 6596,6646 ****
     procedure Set_SPARK_Aux_Pragma (Id : E; V : N) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,      --  concurrent types
!                        E_Task_Type)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
!                        E_Package,
!                        E_Package_Body));
        Set_Node41 (Id, V);
     end Set_SPARK_Aux_Pragma;
  
     procedure Set_SPARK_Aux_Pragma_Inherited (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,      --  concurrent types
!                        E_Task_Type)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
!                        E_Package,
!                        E_Package_Body));
        Set_Flag266 (Id, V);
     end Set_SPARK_Aux_Pragma_Inherited;
  
     procedure Set_SPARK_Pragma (Id : E; V : N) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Constant,            --  objects
!                        E_Variable)
            or else
!          Ekind_In (Id, E_Abstract_State,      --  overloadable
!                        E_Entry,
!                        E_Entry_Family,
!                        E_Function,
!                        E_Generic_Function,
!                        E_Generic_Procedure,
!                        E_Operator,
!                        E_Procedure,
!                        E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
!                        E_Package,
!                        E_Package_Body)
             or else
!          Ekind (Id) = E_Void                  --  special purpose
             or else
!          Ekind_In (Id, E_Protected_Body,      --  types
!                        E_Task_Body)
             or else
           Is_Type (Id));
        Set_Node40 (Id, V);
--- 6652,6702 ----
     procedure Set_SPARK_Aux_Pragma (Id : E; V : N) is
     begin
        pragma Assert
!         (Ekind (Id) in E_Protected_Type      --  concurrent types
!                      | E_Task_Type
             or else
!          Ekind (Id) in E_Generic_Package     --  packages
!                      | E_Package
!                      | E_Package_Body);
        Set_Node41 (Id, V);
     end Set_SPARK_Aux_Pragma;
  
     procedure Set_SPARK_Aux_Pragma_Inherited (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Ekind (Id) in E_Protected_Type      --  concurrent types
!                      | E_Task_Type
             or else
!          Ekind (Id) in E_Generic_Package     --  packages
!                      | E_Package
!                      | E_Package_Body);
        Set_Flag266 (Id, V);
     end Set_SPARK_Aux_Pragma_Inherited;
  
     procedure Set_SPARK_Pragma (Id : E; V : N) is
     begin
        pragma Assert
!         (Ekind (Id) in E_Constant            --  objects
!                      | E_Variable
            or else
!          Ekind (Id) in E_Abstract_State      --  overloadable
!                      | E_Entry
!                      | E_Entry_Family
!                      | E_Function
!                      | E_Generic_Function
!                      | E_Generic_Procedure
!                      | E_Operator
!                      | E_Procedure
!                      | E_Subprogram_Body
             or else
!          Ekind (Id) in E_Generic_Package     --  packages
!                      | E_Package
!                      | E_Package_Body
             or else
!          Ekind (Id) = E_Void                 --  special purpose
             or else
!          Ekind (Id) in E_Protected_Body      --  types
!                      | E_Task_Body
             or else
           Is_Type (Id));
        Set_Node40 (Id, V);
*************** package body Einfo is
*** 6649,6675 ****
     procedure Set_SPARK_Pragma_Inherited (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Constant,            --  objects
!                        E_Variable)
            or else
!          Ekind_In (Id, E_Abstract_State,      --  overloadable
!                        E_Entry,
!                        E_Entry_Family,
!                        E_Function,
!                        E_Generic_Function,
!                        E_Generic_Procedure,
!                        E_Operator,
!                        E_Procedure,
!                        E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
!                        E_Package,
!                        E_Package_Body)
             or else
!          Ekind (Id) = E_Void                  --  special purpose
             or else
!          Ekind_In (Id, E_Protected_Body,      --  types
!                        E_Task_Body)
             or else
           Is_Type (Id));
        Set_Flag265 (Id, V);
--- 6705,6731 ----
     procedure Set_SPARK_Pragma_Inherited (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Ekind (Id) in E_Constant            --  objects
!                      | E_Variable
            or else
!          Ekind (Id) in E_Abstract_State      --  overloadable
!                      | E_Entry
!                      | E_Entry_Family
!                      | E_Function
!                      | E_Generic_Function
!                      | E_Generic_Procedure
!                      | E_Operator
!                      | E_Procedure
!                      | E_Subprogram_Body
             or else
!          Ekind (Id) in E_Generic_Package     --  packages
!                      | E_Package
!                      | E_Package_Body
             or else
!          Ekind (Id) = E_Void                 --  special purpose
             or else
!          Ekind (Id) in E_Protected_Body      --  types
!                      | E_Task_Body
             or else
           Is_Type (Id));
        Set_Flag265 (Id, V);
*************** package body Einfo is
*** 6712,6720 ****
  
     procedure Set_Status_Flag_Or_Transient_Decl (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant,
!                                    E_Loop_Parameter,
!                                    E_Variable));
        Set_Node15 (Id, V);
     end Set_Status_Flag_Or_Transient_Decl;
  
--- 6768,6776 ----
  
     procedure Set_Status_Flag_Or_Transient_Decl (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in E_Constant
!                                  | E_Loop_Parameter
!                                  | E_Variable);
        Set_Node15 (Id, V);
     end Set_Status_Flag_Or_Transient_Decl;
  
*************** package body Einfo is
*** 6746,6752 ****
  
     procedure Set_Stores_Attribute_Old_Prefix (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind (Id) = E_Constant);
        Set_Flag270 (Id, V);
     end Set_Stores_Attribute_Old_Prefix;
  
--- 6802,6810 ----
  
     procedure Set_Stores_Attribute_Old_Prefix (Id : E; V : B := True) is
     begin
!       pragma Assert (Is_Type (Id)
!                       or else (Ekind (Id) in E_Constant
!                                            | E_Variable));
        Set_Flag270 (Id, V);
     end Set_Stores_Attribute_Old_Prefix;
  
*************** package body Einfo is
*** 6809,6815 ****
  
     procedure Set_Thunk_Entity (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure)
                         and then Is_Thunk (Id));
        Set_Node31 (Id, V);
     end Set_Thunk_Entity;
--- 6867,6873 ----
  
     procedure Set_Thunk_Entity (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure
                         and then Is_Thunk (Id));
        Set_Node31 (Id, V);
     end Set_Thunk_Entity;
*************** package body Einfo is
*** 6891,6897 ****
  
     procedure Set_Wrapped_Entity (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure)
                         and then Is_Primitive_Wrapper (Id));
        Set_Node27 (Id, V);
     end Set_Wrapped_Entity;
--- 6949,6955 ----
  
     procedure Set_Wrapped_Entity (Id : E; V : E) is
     begin
!       pragma Assert (Ekind (Id) in E_Function | E_Procedure
                         and then Is_Primitive_Wrapper (Id));
        Set_Node27 (Id, V);
     end Set_Wrapped_Entity;
*************** package body Einfo is
*** 7311,7317 ****
        end if;
  
        loop
!          if Nkind_In (P, N_Selected_Component, N_Expanded_Name)
             or else (Nkind (P) = N_Defining_Program_Unit_Name
                       and then Is_Child_Unit (Id))
           then
--- 7369,7375 ----
        end if;
  
        loop
!          if Nkind (P) in N_Selected_Component | N_Expanded_Name
             or else (Nkind (P) = N_Defining_Program_Unit_Name
                       and then Is_Child_Unit (Id))
           then
*************** package body Einfo is
*** 7327,7333 ****
     ---------------------
  
     function Designated_Type (Id : E) return E is
!       Desig_Type : E;
  
     begin
        Desig_Type := Directly_Designated_Type (Id);
--- 7385,7391 ----
     ---------------------
  
     function Designated_Type (Id : E) return E is
!       Desig_Type : Entity_Id;
  
     begin
        Desig_Type := Directly_Designated_Type (Id);
*************** package body Einfo is
*** 7368,7374 ****
           while Present (Subp_Elmt) loop
              Subp_Id := Node (Subp_Elmt);
  
!             if Is_DIC_Procedure (Subp_Id) then
                 return Subp_Id;
              end if;
  
--- 7426,7438 ----
           while Present (Subp_Elmt) loop
              Subp_Id := Node (Subp_Elmt);
  
!             --  Currently the flag Is_DIC_Procedure is set for both normal DIC
!             --  check procedures as well as for partial DIC check procedures,
!             --  and we don't have a flag for the partial procedures.
! 
!             if Is_DIC_Procedure (Subp_Id)
!               and then not Is_Partial_DIC_Procedure (Subp_Id)
!             then
                 return Subp_Id;
              end if;
  
*************** package body Einfo is
*** 7394,7400 ****
     ---------------------
  
     function First_Component (Id : E) return E is
!       Comp_Id : E;
  
     begin
        pragma Assert
--- 7458,7464 ----
     ---------------------
  
     function First_Component (Id : E) return E is
!       Comp_Id : Entity_Id;
  
     begin
        pragma Assert
*************** package body Einfo is
*** 7405,7411 ****
        Comp_Id := First_Entity (Id);
        while Present (Comp_Id) loop
           exit when Ekind (Comp_Id) = E_Component;
!          Comp_Id := Next_Entity (Comp_Id);
        end loop;
  
        return Comp_Id;
--- 7469,7475 ----
        Comp_Id := First_Entity (Id);
        while Present (Comp_Id) loop
           exit when Ekind (Comp_Id) = E_Component;
!          Next_Entity (Comp_Id);
        end loop;
  
        return Comp_Id;
*************** package body Einfo is
*** 7416,7422 ****
     -------------------------------------
  
     function First_Component_Or_Discriminant (Id : E) return E is
!       Comp_Id : E;
  
     begin
        pragma Assert
--- 7480,7486 ----
     -------------------------------------
  
     function First_Component_Or_Discriminant (Id : E) return E is
!       Comp_Id : Entity_Id;
  
     begin
        pragma Assert
*************** package body Einfo is
*** 7427,7434 ****
  
        Comp_Id := First_Entity (Id);
        while Present (Comp_Id) loop
!          exit when Ekind_In (Comp_Id, E_Component, E_Discriminant);
!          Comp_Id := Next_Entity (Comp_Id);
        end loop;
  
        return Comp_Id;
--- 7491,7498 ----
  
        Comp_Id := First_Entity (Id);
        while Present (Comp_Id) loop
!          exit when Ekind (Comp_Id) in E_Component | E_Discriminant;
!          Next_Entity (Comp_Id);
        end loop;
  
        return Comp_Id;
*************** package body Einfo is
*** 7439,7453 ****
     ------------------
  
     function First_Formal (Id : E) return E is
!       Formal : E;
  
     begin
        pragma Assert
          (Is_Generic_Subprogram (Id)
             or else Is_Overloadable (Id)
!            or else Ekind_In (Id, E_Entry_Family,
!                                  E_Subprogram_Body,
!                                  E_Subprogram_Type));
  
        if Ekind (Id) = E_Enumeration_Literal then
           return Empty;
--- 7503,7517 ----
     ------------------
  
     function First_Formal (Id : E) return E is
!       Formal : Entity_Id;
  
     begin
        pragma Assert
          (Is_Generic_Subprogram (Id)
             or else Is_Overloadable (Id)
!            or else Ekind (Id) in E_Entry_Family
!                                | E_Subprogram_Body
!                                | E_Subprogram_Type);
  
        if Ekind (Id) = E_Enumeration_Literal then
           return Empty;
*************** package body Einfo is
*** 7480,7494 ****
     ------------------------------
  
     function First_Formal_With_Extras (Id : E) return E is
!       Formal : E;
  
     begin
        pragma Assert
          (Is_Generic_Subprogram (Id)
             or else Is_Overloadable (Id)
!            or else Ekind_In (Id, E_Entry_Family,
!                                  E_Subprogram_Body,
!                                  E_Subprogram_Type));
  
        if Ekind (Id) = E_Enumeration_Literal then
           return Empty;
--- 7544,7558 ----
     ------------------------------
  
     function First_Formal_With_Extras (Id : E) return E is
!       Formal : Entity_Id;
  
     begin
        pragma Assert
          (Is_Generic_Subprogram (Id)
             or else Is_Overloadable (Id)
!            or else Ekind (Id) in E_Entry_Family
!                                | E_Subprogram_Body
!                                | E_Subprogram_Type);
  
        if Ekind (Id) = E_Enumeration_Literal then
           return Empty;
*************** package body Einfo is
*** 7621,7630 ****
                   Id = Pragma_Refined_State              or else
                   Id = Pragma_Volatile_Function;
  
!       --  Contract / test case pragmas
  
        Is_CTC : constant Boolean :=
                    Id = Pragma_Contract_Cases            or else
                    Id = Pragma_Test_Case;
  
        --  Pre / postcondition pragmas
--- 7685,7695 ----
                   Id = Pragma_Refined_State              or else
                   Id = Pragma_Volatile_Function;
  
!       --  Contract / subprogram variant / test case pragmas
  
        Is_CTC : constant Boolean :=
                    Id = Pragma_Contract_Cases            or else
+                   Id = Pragma_Subprogram_Variant        or else
                    Id = Pragma_Test_Case;
  
        --  Pre / postcondition pragmas
*************** package body Einfo is
*** 7755,7761 ****
              return True;
           end if;
  
!          Ent := Next_Entity (Ent);
        end loop;
  
        return False;
--- 7820,7826 ----
              return True;
           end if;
  
!          Next_Entity (Ent);
        end loop;
  
        return False;
*************** package body Einfo is
*** 7810,7815 ****
--- 7875,7891 ----
     end Has_Invariants;
  
     --------------------------
+    -- Has_Limited_View --
+    --------------------------
+ 
+    function Has_Limited_View (Id : E) return B is
+    begin
+       return Ekind (Id) = E_Package
+         and then not Is_Generic_Instance (Id)
+         and then Present (Limited_View (Id));
+    end Has_Limited_View;
+ 
+    --------------------------
     -- Has_Non_Limited_View --
     --------------------------
  
*************** package body Einfo is
*** 7827,7833 ****
  
     function Has_Non_Null_Abstract_State (Id : E) return B is
     begin
!       pragma Assert (Ekind_In (Id, E_Generic_Package, E_Package));
  
        return
          Present (Abstract_States (Id))
--- 7903,7909 ----
  
     function Has_Non_Null_Abstract_State (Id : E) return B is
     begin
!       pragma Assert (Is_Package_Or_Generic_Package (Id));
  
        return
          Present (Abstract_States (Id))
*************** package body Einfo is
*** 7863,7869 ****
     -----------------------------
  
     function Has_Null_Abstract_State (Id : E) return B is
!       pragma Assert (Ekind_In (Id, E_Generic_Package, E_Package));
  
        States : constant Elist_Id := Abstract_States (Id);
  
--- 7939,7945 ----
     -----------------------------
  
     function Has_Null_Abstract_State (Id : E) return B is
!       pragma Assert (Is_Package_Or_Generic_Package (Id));
  
        States : constant Elist_Id := Abstract_States (Id);
  
*************** package body Einfo is
*** 8003,8017 ****
        return Empty;
     end Invariant_Procedure;
  
-    ----------------------
-    -- Is_Atomic_Or_VFA --
-    ----------------------
- 
-    function Is_Atomic_Or_VFA (Id : E) return B is
-    begin
-       return Is_Atomic (Id) or else Is_Volatile_Full_Access (Id);
-    end Is_Atomic_Or_VFA;
- 
     ------------------
     -- Is_Base_Type --
     ------------------
--- 8079,8084 ----
*************** package body Einfo is
*** 8058,8064 ****
  
     function Is_Constant_Object (Id : E) return B is
     begin
!       return Ekind_In (Id, E_Constant, E_In_Parameter, E_Loop_Parameter);
     end Is_Constant_Object;
  
     -------------------
--- 8125,8131 ----
  
     function Is_Constant_Object (Id : E) return B is
     begin
!       return Ekind (Id) in E_Constant | E_In_Parameter | E_Loop_Parameter;
     end Is_Constant_Object;
  
     -------------------
*************** package body Einfo is
*** 8076,8082 ****
  
     function Is_Discriminal (Id : E) return B is
     begin
!       return Ekind_In (Id, E_Constant, E_In_Parameter)
                 and then Present (Discriminal_Link (Id));
     end Is_Discriminal;
  
--- 8143,8149 ----
  
     function Is_Discriminal (Id : E) return B is
     begin
!       return Ekind (Id) in E_Constant | E_In_Parameter
                 and then Present (Discriminal_Link (Id));
     end Is_Discriminal;
  
*************** package body Einfo is
*** 8118,8126 ****
     begin
        --  Identifiers, operator symbols, expanded names are entity names
  
!       return Kind = N_Identifier
!         or else Kind = N_Operator_Symbol
!         or else Kind = N_Expanded_Name
  
        --  Attribute references are entity names if they refer to an entity.
        --  Note that we don't do this by testing for the presence of the
--- 8185,8191 ----
     begin
        --  Identifiers, operator symbols, expanded names are entity names
  
!       return Kind in N_Identifier | N_Operator_Symbol | N_Expanded_Name
  
        --  Attribute references are entity names if they refer to an entity.
        --  Note that we don't do this by testing for the presence of the
*************** package body Einfo is
*** 8138,8148 ****
     function Is_Elaboration_Target (Id : Entity_Id) return Boolean is
     begin
        return
!         Ekind_In (Id, E_Constant, E_Package, E_Variable)
!           or else Is_Entry        (Id)
!           or else Is_Generic_Unit (Id)
!           or else Is_Subprogram   (Id)
!           or else Is_Task_Type    (Id);
     end Is_Elaboration_Target;
  
     -----------------------
--- 8203,8212 ----
     function Is_Elaboration_Target (Id : Entity_Id) return Boolean is
     begin
        return
!         Ekind (Id) in E_Constant | E_Package | E_Variable
!           or else Is_Generic_Unit        (Id)
!           or else Is_Subprogram_Or_Entry (Id)
!           or else Is_Task_Type           (Id);
     end Is_Elaboration_Target;
  
     -----------------------
*************** package body Einfo is
*** 8170,8175 ****
--- 8234,8248 ----
        return Ekind (Id) = E_Procedure and then Chars (Id) = Name_uFinalizer;
     end Is_Finalizer;
  
+    ----------------------
+    -- Is_Full_Access --
+    ----------------------
+ 
+    function Is_Full_Access (Id : E) return B is
+    begin
+       return Is_Atomic (Id) or else Is_Volatile_Full_Access (Id);
+    end Is_Full_Access;
+ 
     -------------------
     -- Is_Null_State --
     -------------------
*************** package body Einfo is
*** 8180,8185 ****
--- 8253,8267 ----
          Ekind (Id) = E_Abstract_State and then Nkind (Parent (Id)) = N_Null;
     end Is_Null_State;
  
+    -----------------------------------
+    -- Is_Package_Or_Generic_Package --
+    -----------------------------------
+ 
+    function Is_Package_Or_Generic_Package (Id : E) return B is
+    begin
+       return Ekind (Id) in E_Generic_Package | E_Package;
+    end Is_Package_Or_Generic_Package;
+ 
     ---------------------
     -- Is_Packed_Array --
     ---------------------
*************** package body Einfo is
*** 8189,8210 ****
        return Is_Array_Type (Id) and then Is_Packed (Id);
     end Is_Packed_Array;
  
-    -----------------------------------
-    -- Is_Package_Or_Generic_Package --
-    -----------------------------------
- 
-    function Is_Package_Or_Generic_Package (Id : E) return B is
-    begin
-       return Ekind_In (Id, E_Generic_Package, E_Package);
-    end Is_Package_Or_Generic_Package;
- 
     ---------------
     -- Is_Prival --
     ---------------
  
     function Is_Prival (Id : E) return B is
     begin
!       return Ekind_In (Id, E_Constant, E_Variable)
                 and then Present (Prival_Link (Id));
     end Is_Prival;
  
--- 8271,8283 ----
        return Is_Array_Type (Id) and then Is_Packed (Id);
     end Is_Packed_Array;
  
     ---------------
     -- Is_Prival --
     ---------------
  
     function Is_Prival (Id : E) return B is
     begin
!       return Ekind (Id) in E_Constant | E_Variable
                 and then Present (Prival_Link (Id));
     end Is_Prival;
  
*************** package body Einfo is
*** 8244,8270 ****
            and then Is_Protected_Type (Corresponding_Concurrent_Type (Id));
     end Is_Protected_Record_Type;
  
     --------------------------------
     -- Is_Standard_Character_Type --
     --------------------------------
  
     function Is_Standard_Character_Type (Id : E) return B is
     begin
!       if Is_Type (Id) then
!          declare
!             R : constant Entity_Id := Root_Type (Id);
!          begin
!             return
!               R = Standard_Character
!                 or else
!               R = Standard_Wide_Character
!                 or else
!               R = Standard_Wide_Wide_Character;
!          end;
! 
!       else
!          return False;
!       end if;
     end Is_Standard_Character_Type;
  
     -----------------------------
--- 8317,8346 ----
            and then Is_Protected_Type (Corresponding_Concurrent_Type (Id));
     end Is_Protected_Record_Type;
  
+    -------------------------------------
+    -- Is_Relaxed_Initialization_State --
+    -------------------------------------
+ 
+    function Is_Relaxed_Initialization_State (Id : E) return B is
+    begin
+       --  To qualify, the abstract state must appear with simple option
+       --  "Relaxed_Initialization" (SPARK RM 6.10).
+ 
+       return
+         Ekind (Id) = E_Abstract_State
+           and then Has_Option (Id, Name_Relaxed_Initialization);
+    end Is_Relaxed_Initialization_State;
+ 
     --------------------------------
     -- Is_Standard_Character_Type --
     --------------------------------
  
     function Is_Standard_Character_Type (Id : E) return B is
     begin
!       return Is_Type (Id)
!         and then Root_Type (Id) in Standard_Character
!                                  | Standard_Wide_Character
!                                  | Standard_Wide_Wide_Character;
     end Is_Standard_Character_Type;
  
     -----------------------------
*************** package body Einfo is
*** 8273,8293 ****
  
     function Is_Standard_String_Type (Id : E) return B is
     begin
!       if Is_Type (Id) then
!          declare
!             R : constant Entity_Id := Root_Type (Id);
!          begin
!             return
!               R = Standard_String
!                 or else
!               R = Standard_Wide_String
!                 or else
!               R = Standard_Wide_Wide_String;
!          end;
! 
!       else
!          return False;
!       end if;
     end Is_Standard_String_Type;
  
     --------------------
--- 8349,8358 ----
  
     function Is_Standard_String_Type (Id : E) return B is
     begin
!       return Is_Type (Id)
!         and then Root_Type (Id) in Standard_String
!                                  | Standard_Wide_String
!                                  | Standard_Wide_Wide_String;
     end Is_Standard_String_Type;
  
     --------------------
*************** package body Einfo is
*** 8378,8391 ****
     -----------------
  
     function Last_Formal (Id : E) return E is
!       Formal : E;
  
     begin
        pragma Assert
          (Is_Overloadable (Id)
!           or else Ekind_In (Id, E_Entry_Family,
!                                 E_Subprogram_Body,
!                                 E_Subprogram_Type));
  
        if Ekind (Id) = E_Enumeration_Literal then
           return Empty;
--- 8443,8456 ----
     -----------------
  
     function Last_Formal (Id : E) return E is
!       Formal : Entity_Id;
  
     begin
        pragma Assert
          (Is_Overloadable (Id)
!           or else Ekind (Id) in E_Entry_Family
!                               | E_Subprogram_Body
!                               | E_Subprogram_Type);
  
        if Ekind (Id) = E_Enumeration_Literal then
           return Empty;
*************** package body Einfo is
*** 8395,8401 ****
  
           if Present (Formal) then
              while Present (Next_Formal (Formal)) loop
!                Formal := Next_Formal (Formal);
              end loop;
           end if;
  
--- 8460,8466 ----
  
           if Present (Formal) then
              while Present (Next_Formal (Formal)) loop
!                Next_Formal (Formal);
              end loop;
           end if;
  
*************** package body Einfo is
*** 8416,8459 ****
        Set_Next_Entity (First, Second);     --  First --> Second
     end Link_Entities;
  
-    ----------------------
-    -- Model_Emin_Value --
-    ----------------------
- 
-    function Model_Emin_Value (Id : E) return Uint is
-    begin
-       return Machine_Emin_Value (Id);
-    end Model_Emin_Value;
- 
-    -------------------------
-    -- Model_Epsilon_Value --
-    -------------------------
- 
-    function Model_Epsilon_Value (Id : E) return Ureal is
-       Radix : constant Ureal := UR_From_Uint (Machine_Radix_Value (Id));
-    begin
-       return Radix ** (1 - Model_Mantissa_Value (Id));
-    end Model_Epsilon_Value;
- 
-    --------------------------
-    -- Model_Mantissa_Value --
-    --------------------------
- 
-    function Model_Mantissa_Value (Id : E) return Uint is
-    begin
-       return Machine_Mantissa_Value (Id);
-    end Model_Mantissa_Value;
- 
-    -----------------------
-    -- Model_Small_Value --
-    -----------------------
- 
-    function Model_Small_Value (Id : E) return Ureal is
-       Radix : constant Ureal := UR_From_Uint (Machine_Radix_Value (Id));
-    begin
-       return Radix ** (Model_Emin_Value (Id) - 1);
-    end Model_Small_Value;
- 
     ------------------------
     -- Machine_Emax_Value --
     ------------------------
--- 8481,8486 ----
*************** package body Einfo is
*** 8529,8546 ****
        end case;
     end Machine_Radix_Value;
  
     --------------------
     -- Next_Component --
     --------------------
  
     function Next_Component (Id : E) return E is
!       Comp_Id : E;
  
     begin
        Comp_Id := Next_Entity (Id);
        while Present (Comp_Id) loop
           exit when Ekind (Comp_Id) = E_Component;
!          Comp_Id := Next_Entity (Comp_Id);
        end loop;
  
        return Comp_Id;
--- 8556,8611 ----
        end case;
     end Machine_Radix_Value;
  
+    ----------------------
+    -- Model_Emin_Value --
+    ----------------------
+ 
+    function Model_Emin_Value (Id : E) return Uint is
+    begin
+       return Machine_Emin_Value (Id);
+    end Model_Emin_Value;
+ 
+    -------------------------
+    -- Model_Epsilon_Value --
+    -------------------------
+ 
+    function Model_Epsilon_Value (Id : E) return Ureal is
+       Radix : constant Ureal := UR_From_Uint (Machine_Radix_Value (Id));
+    begin
+       return Radix ** (1 - Model_Mantissa_Value (Id));
+    end Model_Epsilon_Value;
+ 
+    --------------------------
+    -- Model_Mantissa_Value --
+    --------------------------
+ 
+    function Model_Mantissa_Value (Id : E) return Uint is
+    begin
+       return Machine_Mantissa_Value (Id);
+    end Model_Mantissa_Value;
+ 
+    -----------------------
+    -- Model_Small_Value --
+    -----------------------
+ 
+    function Model_Small_Value (Id : E) return Ureal is
+       Radix : constant Ureal := UR_From_Uint (Machine_Radix_Value (Id));
+    begin
+       return Radix ** (Model_Emin_Value (Id) - 1);
+    end Model_Small_Value;
+ 
     --------------------
     -- Next_Component --
     --------------------
  
     function Next_Component (Id : E) return E is
!       Comp_Id : Entity_Id;
  
     begin
        Comp_Id := Next_Entity (Id);
        while Present (Comp_Id) loop
           exit when Ekind (Comp_Id) = E_Component;
!          Next_Entity (Comp_Id);
        end loop;
  
        return Comp_Id;
*************** package body Einfo is
*** 8551,8563 ****
     ------------------------------------
  
     function Next_Component_Or_Discriminant (Id : E) return E is
!       Comp_Id : E;
  
     begin
        Comp_Id := Next_Entity (Id);
        while Present (Comp_Id) loop
!          exit when Ekind_In (Comp_Id, E_Component, E_Discriminant);
!          Comp_Id := Next_Entity (Comp_Id);
        end loop;
  
        return Comp_Id;
--- 8616,8628 ----
     ------------------------------------
  
     function Next_Component_Or_Discriminant (Id : E) return E is
!       Comp_Id : Entity_Id;
  
     begin
        Comp_Id := Next_Entity (Id);
        while Present (Comp_Id) loop
!          exit when Ekind (Comp_Id) in E_Component | E_Discriminant;
!          Next_Entity (Comp_Id);
        end loop;
  
        return Comp_Id;
*************** package body Einfo is
*** 8590,8596 ****
        pragma Assert (Ekind (Id) = E_Discriminant);
  
        loop
!          D := Next_Entity (D);
           if No (D)
             or else (Ekind (D) /= E_Discriminant
                        and then not Is_Itype (D))
--- 8655,8661 ----
        pragma Assert (Ekind (Id) = E_Discriminant);
  
        loop
!          Next_Entity (D);
           if No (D)
             or else (Ekind (D) /= E_Discriminant
                        and then not Is_Itype (D))
*************** package body Einfo is
*** 8610,8616 ****
     -----------------
  
     function Next_Formal (Id : E) return E is
!       P : E;
  
     begin
        --  Follow the chain of declared entities as long as the kind of the
--- 8675,8681 ----
     -----------------
  
     function Next_Formal (Id : E) return E is
!       P : Entity_Id;
  
     begin
        --  Follow the chain of declared entities as long as the kind of the
*************** package body Einfo is
*** 8715,8721 ****
              N := N + 1;
           end if;
  
!          Ent := Next_Entity (Ent);
        end loop;
  
        return N;
--- 8780,8786 ----
              N := N + 1;
           end if;
  
!          Next_Entity (Ent);
        end loop;
  
        return N;
*************** package body Einfo is
*** 8734,8740 ****
        Formal := First_Formal (Id);
        while Present (Formal) loop
           N := N + 1;
!          Formal := Next_Formal (Formal);
        end loop;
  
        return N;
--- 8799,8805 ----
        Formal := First_Formal (Id);
        while Present (Formal) loop
           N := N + 1;
!          Next_Formal (Formal);
        end loop;
  
        return N;
*************** package body Einfo is
*** 8758,8763 ****
--- 8823,8858 ----
        return Ekind (Id);
     end Parameter_Mode;
  
+    ---------------------------
+    -- Partial_DIC_Procedure --
+    ---------------------------
+ 
+    function Partial_DIC_Procedure (Id : E) return E is
+       Subp_Elmt : Elmt_Id;
+       Subp_Id   : Entity_Id;
+       Subps     : Elist_Id;
+ 
+    begin
+       pragma Assert (Is_Type (Id));
+ 
+       Subps := Subprograms_For_Type (Base_Type (Id));
+ 
+       if Present (Subps) then
+          Subp_Elmt := First_Elmt (Subps);
+          while Present (Subp_Elmt) loop
+             Subp_Id := Node (Subp_Elmt);
+ 
+             if Is_Partial_DIC_Procedure (Subp_Id) then
+                return Subp_Id;
+             end if;
+ 
+             Next_Elmt (Subp_Elmt);
+          end loop;
+       end if;
+ 
+       return Empty;
+    end Partial_DIC_Procedure;
+ 
     ---------------------------------
     -- Partial_Invariant_Procedure --
     ---------------------------------
*************** package body Einfo is
*** 8894,8902 ****
        then
           Typ := Full_View (Id);
  
!       elsif Ekind_In (Id, E_Array_Subtype,
!                           E_Record_Subtype,
!                           E_Record_Subtype_With_Private)
          and then Present (Predicated_Parent (Id))
        then
           Typ := Predicated_Parent (Id);
--- 8989,8997 ----
        then
           Typ := Full_View (Id);
  
!       elsif Ekind (Id) in E_Array_Subtype
!                         | E_Record_Subtype
!                         | E_Record_Subtype_With_Private
          and then Present (Predicated_Parent (Id))
        then
           Typ := Predicated_Parent (Id);
*************** package body Einfo is
*** 9074,9080 ****
     ---------------
  
     function Root_Type (Id : E) return E is
!       T, Etyp : E;
  
     begin
        pragma Assert (Nkind (Id) in N_Entity);
--- 9169,9175 ----
     ---------------
  
     function Root_Type (Id : E) return E is
!       T, Etyp : Entity_Id;
  
     begin
        pragma Assert (Nkind (Id) in N_Entity);
*************** package body Einfo is
*** 9237,9244 ****
  
     procedure Set_DIC_Procedure (Id : E; V : E) is
        Base_Typ  : Entity_Id;
-       Subp_Elmt : Elmt_Id;
-       Subp_Id   : Entity_Id;
        Subps     : Elist_Id;
  
     begin
--- 9332,9337 ----
*************** package body Einfo is
*** 9252,9272 ****
           Set_Subprograms_For_Type (Base_Typ, Subps);
        end if;
  
-       Subp_Elmt := First_Elmt (Subps);
        Prepend_Elmt (V, Subps);
  
!       --  Check for a duplicate default initial condition procedure
! 
!       while Present (Subp_Elmt) loop
!          Subp_Id := Node (Subp_Elmt);
! 
!          if Is_DIC_Procedure (Subp_Id) then
!             raise Program_Error;
!          end if;
  
!          Next_Elmt (Subp_Elmt);
!       end loop;
!    end Set_DIC_Procedure;
  
     -----------------------------
     -- Set_Invariant_Procedure --
--- 9345,9361 ----
           Set_Subprograms_For_Type (Base_Typ, Subps);
        end if;
  
        Prepend_Elmt (V, Subps);
+    end Set_DIC_Procedure;
  
!    -------------------------------------
!    -- Set_Partial_Invariant_Procedure --
!    -------------------------------------
  
!    procedure Set_Partial_DIC_Procedure (Id : E; V : E) is
!    begin
!       Set_DIC_Procedure (Id, V);
!    end Set_Partial_DIC_Procedure;
  
     -----------------------------
     -- Set_Invariant_Procedure --
*************** package body Einfo is
*** 9611,9617 ****
              return Empty;
           end if;
  
!       --  For non-incomplete, non-private types, return the type itself Also
        --  for entities that are not types at all return the entity itself.
  
        else
--- 9700,9706 ----
              return Empty;
           end if;
  
!       --  For non-incomplete, non-private types, return the type itself. Also
        --  for entities that are not types at all return the entity itself.
  
        else
*************** package body Einfo is
*** 9793,9803 ****
        W ("Has_Visible_Refinement",          Flag263 (Id));
        W ("Has_Volatile_Components",         Flag87  (Id));
        W ("Has_Xref_Entry",                  Flag182 (Id));
        W ("Ignore_SPARK_Mode_Pragmas",       Flag301 (Id));
        W ("In_Package_Body",                 Flag48  (Id));
        W ("In_Private_Part",                 Flag45  (Id));
        W ("In_Use",                          Flag8   (Id));
-       W ("Invariants_Ignored",              Flag308 (Id));
        W ("Is_Abstract_Subprogram",          Flag19  (Id));
        W ("Is_Abstract_Type",                Flag146 (Id));
        W ("Is_Access_Constant",              Flag69  (Id));
--- 9882,9892 ----
        W ("Has_Visible_Refinement",          Flag263 (Id));
        W ("Has_Volatile_Components",         Flag87  (Id));
        W ("Has_Xref_Entry",                  Flag182 (Id));
+       W ("Has_Yield_Aspect",                Flag308 (Id));
        W ("Ignore_SPARK_Mode_Pragmas",       Flag301 (Id));
        W ("In_Package_Body",                 Flag48  (Id));
        W ("In_Private_Part",                 Flag45  (Id));
        W ("In_Use",                          Flag8   (Id));
        W ("Is_Abstract_Subprogram",          Flag19  (Id));
        W ("Is_Abstract_Type",                Flag146 (Id));
        W ("Is_Access_Constant",              Flag69  (Id));
*************** package body Einfo is
*** 9810,9815 ****
--- 9899,9905 ----
        W ("Is_Atomic",                       Flag85  (Id));
        W ("Is_Bit_Packed_Array",             Flag122 (Id));
        W ("Is_CPP_Class",                    Flag74  (Id));
+       W ("Is_CUDA_Kernel",                  Flag118  (Id));
        W ("Is_Called",                       Flag102 (Id));
        W ("Is_Character_Type",               Flag63  (Id));
        W ("Is_Checked_Ghost_Entity",         Flag277 (Id));
*************** package body Einfo is
*** 10064,10070 ****
  
           when Array_Kind =>
              declare
!                Index : E;
  
              begin
                 Write_Attribute
--- 10154,10160 ----
  
           when Array_Kind =>
              declare
!                Index : Entity_Id;
  
              begin
                 Write_Attribute
*************** package body Einfo is
*** 10166,10172 ****
           when E_Abstract_State =>
              Write_Str ("Refinement_Constituents");
  
!          when E_Return_Statement =>
              Write_Str ("Return_Applies_To");
  
           when others =>
--- 10256,10264 ----
           when E_Abstract_State =>
              Write_Str ("Refinement_Constituents");
  
!          when E_Block
!             | E_Return_Statement
!          =>
              Write_Str ("Return_Applies_To");
  
           when others =>
*************** package body Einfo is
*** 10830,10850 ****
           when Formal_Kind =>
              Write_Str ("Protected_Formal");
  
!          when E_Block
!             | E_Entry
!             | E_Entry_Family
!             | E_Function
!             | E_Generic_Function
!             | E_Generic_Package
!             | E_Generic_Procedure
!             | E_Loop
              | E_Package
              | E_Package_Body
!             | E_Procedure
!             | E_Protected_Type
!             | E_Return_Statement
              | E_Subprogram_Body
!             | E_Task_Type
           =>
              Write_Str ("Scope_Depth_Value");
  
--- 10922,10939 ----
           when Formal_Kind =>
              Write_Str ("Protected_Formal");
  
!          when Concurrent_Kind
!             | Entry_Kind
!             | Generic_Unit_Kind
              | E_Package
              | E_Package_Body
!             | Subprogram_Kind
!             | E_Block
              | E_Subprogram_Body
!             | E_Private_Type .. E_Limited_Private_Subtype
!             | E_Void
!             | E_Loop
!             | E_Return_Statement
           =>
              Write_Str ("Scope_Depth_Value");
  
*************** package body Einfo is
*** 10935,10940 ****
--- 11024,11030 ----
  
           when Type_Kind
              | E_Constant
+             | E_Loop_Parameter
              | E_Variable
           =>
              Write_Str ("Related_Expression");
*************** package body Einfo is
*** 11271,11281 ****
              | E_Package
              | E_Package_Body
              | E_Procedure
-             | E_Protected_Type
              | E_Subprogram_Body
              | E_Task_Body
-             | E_Task_Type
              | E_Variable
              | E_Void
           =>
              Write_Str ("Contract");
--- 11361,11370 ----
              | E_Package
              | E_Package_Body
              | E_Procedure
              | E_Subprogram_Body
              | E_Task_Body
              | E_Variable
+             | Type_Kind
              | E_Void
           =>
              Write_Str ("Contract");
*************** package body Einfo is
*** 11424,11429 ****
--- 11513,11521 ----
           =>
              Write_Str ("SPARK_Aux_Pragma");
  
+          when E_Subprogram_Type =>
+             Write_Str ("Access_Subprogram_Wrapper");
+ 
           when others =>
              Write_Str ("Field41??");
        end case;
*************** package body Einfo is
*** 11442,11448 ****
     begin
        N := Next_Entity (N);
        while Present (N) loop
!          exit when Ekind_In (N, E_Component, E_Discriminant);
           N := Next_Entity (N);
        end loop;
     end Proc_Next_Component_Or_Discriminant;
--- 11534,11540 ----
     begin
        N := Next_Entity (N);
        while Present (N) loop
!          exit when Ekind (N) in E_Component | E_Discriminant;
           N := Next_Entity (N);
        end loop;
     end Proc_Next_Component_Or_Discriminant;
diff -Nrcpad gcc-10.3.0/gcc/ada/einfo.ads gcc-11.1.0/gcc/ada/einfo.ads
*** gcc-10.3.0/gcc/ada/einfo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/einfo.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Einfo is
*** 111,122 ****
  
  --     The function spec must be on a single line
  
! --     There can only be a single statement, contained on a single line,
! --     not counting any pragma Assert statements.
  
! --     This single statement must either be a function call with simple,
! --     single token arguments, or it must be a membership test of the form
! --     a in b, where a and b are single tokens.
  
  --  For functions that are not inlined, there is no restriction on the body,
  --  and XEINFO generates a direct reference in the C header file which allows
--- 105,118 ----
  
  --     The function spec must be on a single line
  
! --     There can only be a single return statement, not counting any pragma
! --     Assert statements, possibly followed by a comment.
  
! --     This single statement must either contain a function call with simple,
! --     single token arguments, or it must contain a membership test of the form
! --     a in b, where a and b are single tokens, or it must contain an equality
! --     or inequality test of single tokens, or it must contain a disjunction of
! --     the preceding constructs.
  
  --  For functions that are not inlined, there is no restriction on the body,
  --  and XEINFO generates a direct reference in the C header file which allows
*************** package Einfo is
*** 264,291 ****
  --  The flag Has_Delayed_Freeze indicates that an entity carries an explicit
  --  freeze node, which appears later in the expanded tree.
  
! --  a) The flag is used by the front-end to trigger expansion actions which
  --  include the generation of that freeze node. Typically this happens at the
  --  end of the current compilation unit, or before the first subprogram body is
! --  encountered in the current unit. See files freeze and exp_ch13 for details
  --  on the actions triggered by a freeze node, which include the construction
  --  of initialization procedures and dispatch tables.
  
! --  b) The presence of a freeze node on an entity is used by the backend to
  --  defer elaboration of the entity until its freeze node is seen. In the
  --  absence of an explicit freeze node, an entity is frozen (and elaborated)
  --  at the point of declaration.
  
  --  For object declarations, the flag is set when an address clause for the
  --  object is encountered. Legality checks on the address expression only take
! --  place at the freeze point of the object.
  
  --  Most types have an explicit freeze node, because they cannot be elaborated
  --  until all representation and operational items that apply to them have been
  --  analyzed. Private types and incomplete types have the flag set as well, as
  --  do task and protected types.
  
! --  Implicit base types created for type derivations, as well as classwide
  --  types created for all tagged types, have the flag set.
  
  --  If a subprogram has an access parameter whose designated type is incomplete
--- 260,288 ----
  --  The flag Has_Delayed_Freeze indicates that an entity carries an explicit
  --  freeze node, which appears later in the expanded tree.
  
! --  a) The flag is used by the front end to trigger expansion activities which
  --  include the generation of that freeze node. Typically this happens at the
  --  end of the current compilation unit, or before the first subprogram body is
! --  encountered in the current unit. See units Freeze and Exp_Ch13 for details
  --  on the actions triggered by a freeze node, which include the construction
  --  of initialization procedures and dispatch tables.
  
! --  b) The presence of a freeze node on an entity is used by the back end to
  --  defer elaboration of the entity until its freeze node is seen. In the
  --  absence of an explicit freeze node, an entity is frozen (and elaborated)
  --  at the point of declaration.
  
  --  For object declarations, the flag is set when an address clause for the
  --  object is encountered. Legality checks on the address expression only take
! --  place at the freeze point of the object. In Ada 2012, the flag is also set
! --  when an address aspect for the object is encountered.
  
  --  Most types have an explicit freeze node, because they cannot be elaborated
  --  until all representation and operational items that apply to them have been
  --  analyzed. Private types and incomplete types have the flag set as well, as
  --  do task and protected types.
  
! --  Implicit base types created for type derivations, as well as class-wide
  --  types created for all tagged types, have the flag set.
  
  --  If a subprogram has an access parameter whose designated type is incomplete
*************** package Einfo is
*** 370,375 ****
--- 367,381 ----
  --       on attribute 'Position applied to an object of the type; it is used by
  --       the IP routine to avoid performing this elaboration twice.
  
+ --    Access_Subprogram_Wrapper (Node41)
+ --       Entity created for access_to_subprogram types that have pre/post
+ --       conditions. Wrapper subprogram is created when analyzing corresponding
+ --       aspect, and inherits said aspects. Body of subprogram includes code
+ --       to check contracts, and a direct call to the designated subprogram.
+ --       The body is part of the freeze actions for the type.
+ --       The Subprogram_Type created for the Access_To_Subprogram carries the
+ --       Access_Subprogram_Wrapper for use in the expansion of indirect calls.
+ 
  --    Activation_Record_Component (Node31)
  --       Defined for E_Variable, E_Constant, E_Loop_Parameter, and formal
  --       parameter entities. Used in Opt.Unnest_Subprogram_Mode, in which case
*************** package Einfo is
*** 414,421 ****
  --       output of certain warnings.
  
  --    Aft_Value (synthesized)
! --       Applies to fixed and decimal types. Computes a universal integer that
! --       holds value of the Aft attribute for the type.
  
  --    Alias (Node18)
  --       Defined in overloadable entities (literals, subprograms, entries) and
--- 420,429 ----
  --       output of certain warnings.
  
  --    Aft_Value (synthesized)
! --       Applies to fixed-point types and subtypes. This yields the value of
! --       the Aft attribute for the type, i.e. the number of decimal digits
! --       needed after the decimal point to accommodate the delta of the type,
! --       unless the delta is greater than 0.1, in which case it is 1.
  
  --    Alias (Node18)
  --       Defined in overloadable entities (literals, subprograms, entries) and
*************** package Einfo is
*** 527,533 ****
  --    Block_Node (Node11)
  --       Defined in block entities. Points to the identifier in the
  --       Block_Statement itself. Used when retrieving the block construct
! --       for finalization purposes, The block entity has an implicit label
  --       declaration in the enclosing declarative part, and has otherwise
  --       no direct connection in the tree with the block statement. The
  --       link is to the identifier (which is an occurrence of the entity)
--- 535,541 ----
  --    Block_Node (Node11)
  --       Defined in block entities. Points to the identifier in the
  --       Block_Statement itself. Used when retrieving the block construct
! --       for finalization purposes, the block entity has an implicit label
  --       declaration in the enclosing declarative part, and has otherwise
  --       no direct connection in the tree with the block statement. The
  --       link is to the identifier (which is an occurrence of the entity)
*************** package Einfo is
*** 580,586 ****
  --       never have a null value. Set for constant access values initialized to
  --       a non-null value. This is also set for all access parameters in Ada 83
  --       and Ada 95 modes, and for access parameters that explicitly exclude
! --       exclude null in Ada 2005 mode.
  --
  --       This is used to avoid unnecessary resetting of the Is_Known_Non_Null
  --       flag for such entities. In Ada 2005 mode, this is also used when
--- 588,594 ----
  --       never have a null value. Set for constant access values initialized to
  --       a non-null value. This is also set for all access parameters in Ada 83
  --       and Ada 95 modes, and for access parameters that explicitly exclude
! --       null in Ada 2005 mode.
  --
  --       This is used to avoid unnecessary resetting of the Is_Known_Non_Null
  --       flag for such entities. In Ada 2005 mode, this is also used when
*************** package Einfo is
*** 733,741 ****
  
  --    Contract (Node34)
  --       Defined in constant, entry, entry family, operator, [generic] package,
! --       package body, protected type, [generic] subprogram, subprogram body,
! --       variable and task type entities. Points to the contract of the entity,
! --       holding various assertion items and data classifiers.
  
  --    Contract_Wrapper (Node25)
  --       Defined in entry and entry family entities. Set only when the entry
--- 741,749 ----
  
  --    Contract (Node34)
  --       Defined in constant, entry, entry family, operator, [generic] package,
! --       package body, protected unit, [generic] subprogram, subprogram body,
! --       variable, task unit, and type entities. Points to the contract of the
! --       entity, holding various assertion items and data classifiers.
  
  --    Contract_Wrapper (Node25)
  --       Defined in entry and entry family entities. Set only when the entry
*************** package Einfo is
*** 811,817 ****
  --       Defined in all object entities. Set in E_Variable, E_Constant, formal
  --       parameters and E_Loop_Parameter entities if we have trackable current
  --       values. Set non-Empty if the (constant) current value of the variable
! --       is known, This value is valid only for references from the same
  --       sequential scope as the entity. The sequential scope of an entity
  --       includes the immediate scope and any contained scopes that are package
  --       specs, package bodies, blocks (at any nesting level) or statement
--- 819,825 ----
  --       Defined in all object entities. Set in E_Variable, E_Constant, formal
  --       parameters and E_Loop_Parameter entities if we have trackable current
  --       values. Set non-Empty if the (constant) current value of the variable
! --       is known. This value is valid only for references from the same
  --       sequential scope as the entity. The sequential scope of an entity
  --       includes the immediate scope and any contained scopes that are package
  --       specs, package bodies, blocks (at any nesting level) or statement
*************** package Einfo is
*** 973,979 ****
  --       list is always empty.
  --       When expansion is disabled the corresponding record type of a
  --       synchronized type is not constructed. In that case, such types
! --       carry this attribute directly, for ASIS use.
  
  --    Directly_Designated_Type (Node20)
  --       Defined in access types. This field points to the type that is
--- 981,987 ----
  --       list is always empty.
  --       When expansion is disabled the corresponding record type of a
  --       synchronized type is not constructed. In that case, such types
! --       carry this attribute directly.
  
  --    Directly_Designated_Type (Node20)
  --       Defined in access types. This field points to the type that is
*************** package Einfo is
*** 1217,1230 ****
  --       for the same literal.
  
  --    Enum_Pos_To_Rep (Node23)
! --       Defined in enumeration types (but not enumeration subtypes). Set to
! --       Empty unless the enumeration type has a non-standard representation
! --       (i.e. at least one literal has a representation value different from
! --       its pos value). In this case, Enum_Pos_To_Rep is the entity for an
! --       array constructed when the type is frozen that maps Pos values to
! --       corresponding Rep values. The index type of this array is Natural,
! --       and the component type is a suitable integer type that holds the
! --       full range of representation values.
  
  --    Equivalent_Type (Node18)
  --       Defined in class wide types and subtypes, access to protected
--- 1225,1240 ----
  --       for the same literal.
  
  --    Enum_Pos_To_Rep (Node23)
! --       Defined in enumeration types, but not enumeration subtypes. Set to
! --       Empty unless the enumeration type has a non-standard representation,
! --       i.e. at least one literal has a representation value different from
! --       its position value. In this case, the alternative is the following:
! --       if the representation is not contiguous, then Enum_Pos_To_Rep is the
! --       entity for an array constant built when the type is frozen that maps
! --       Pos values to corresponding Rep values, whose index type is Natural
! --       and whose component type is the enumeration type itself; or else, if
! --       the representation is contiguous, then Enum_Pos_To_Rep is the entity
! --       of the index type defined above.
  
  --    Equivalent_Type (Node18)
  --       Defined in class wide types and subtypes, access to protected
*************** package Einfo is
*** 1562,1568 ****
  --       Defined for the given type. Note that this flag can be False even
  --       if Component_Size is non-zero (happens in the case of derived types).
  
! --    Has_Constrained_Partial_View (Flag187)
  --       Defined in private type and their completions, when the private
  --       type has no discriminants and the full view has discriminants with
  --       defaults. In Ada 2005 heap-allocated objects of such types are not
--- 1572,1578 ----
  --       Defined for the given type. Note that this flag can be False even
  --       if Component_Size is non-zero (happens in the case of derived types).
  
! --    Has_Constrained_Partial_View (Flag187) [base type only]
  --       Defined in private type and their completions, when the private
  --       type has no discriminants and the full view has discriminants with
  --       defaults. In Ada 2005 heap-allocated objects of such types are not
*************** package Einfo is
*** 1575,1581 ****
  --       in sem_aux is used to test for this case.
  
  --    Has_Contiguous_Rep (Flag181)
! --       Defined in enumeration types. Set if the type as a representation
  --       clause whose entries are successive integers.
  
  --    Has_Controlled_Component (Flag43) [base type only]
--- 1585,1591 ----
  --       in sem_aux is used to test for this case.
  
  --    Has_Contiguous_Rep (Flag181)
! --       Defined in enumeration types. Set if the type has a representation
  --       clause whose entries are successive integers.
  
  --    Has_Controlled_Component (Flag43) [base type only]
*************** package Einfo is
*** 1679,1687 ****
  --       rewritten into something else and subsequently reanalyzed/expanded.
  
  --    Has_Foreign_Convention (synthesized)
! --       Applies to all entities. Determines if the Convention for the
! --       entity is a foreign convention (i.e. is other than Convention_Ada,
! --       Convention_Intrinsic, Convention_Entry or Convention_Protected).
  
  --    Has_Forward_Instantiation (Flag175)
  --       Defined in package entities. Set for packages that instantiate local
--- 1689,1698 ----
  --       rewritten into something else and subsequently reanalyzed/expanded.
  
  --    Has_Foreign_Convention (synthesized)
! --       Applies to all entities. Determines if the Convention for the entity
! --       is a foreign convention, i.e. non-native: other than Convention_Ada,
! --       Convention_Intrinsic, Convention_Entry, Convention_Protected,
! --       Convention_Stubbed and Convention_Ada_Pass_By_(Copy,Reference).
  
  --    Has_Forward_Instantiation (Flag175)
  --       Defined in package entities. Set for packages that instantiate local
*************** package Einfo is
*** 1770,1775 ****
--- 1781,1790 ----
  --       invariant of its own or inherits at least one class-wide invariant
  --       from a parent type or an interface.
  
+ --    Has_Limited_View (synth)
+ --       Defined in all entities. True for non-generic package entities that
+ --       are non-instances and their Limited_View attribute is present.
+ 
  --    Has_Loop_Entry_Attributes (Flag260)
  --       Defined in E_Loop entities. Set when the loop is subject to at least
  --       one attribute 'Loop_Entry. The flag also implies that the loop has
*************** package Einfo is
*** 1799,1806 ****
  --       See documentation in backend for further details.
  
  --    Has_Nested_Subprogram (Flag282)
! --      Defined in subprogram entities. Set for a subprogram which contains at
! --      least one nested subprogram.
  
  --    Has_Non_Limited_View (synth)
  --       Defined in E_Incomplete_Type, E_Incomplete_Subtype, E_Class_Wide_Type,
--- 1814,1821 ----
  --       See documentation in backend for further details.
  
  --    Has_Nested_Subprogram (Flag282)
! --       Defined in subprogram entities. Set for a subprogram which contains at
! --       least one nested subprogram.
  
  --    Has_Non_Limited_View (synth)
  --       Defined in E_Incomplete_Type, E_Incomplete_Subtype, E_Class_Wide_Type,
*************** package Einfo is
*** 1846,1857 ****
  
  --    Has_Own_DIC (Flag3) [base type only]
  --       Defined in all type entities. Set for a private type and its full view
  --       when the type is subject to pragma Default_Initial_Condition.
  
  --    Has_Own_Invariants (Flag232) [base type only]
  --       Defined in all type entities. Set on any type that defines at least
! --       one invariant of its own. The flag is also set on the full view of a
! --       private type for completeness.
  
  --    Has_Partial_Visible_Refinement (Flag296)
  --       Defined in E_Abstract_State entities. Set when a state has at least
--- 1861,1876 ----
  
  --    Has_Own_DIC (Flag3) [base type only]
  --       Defined in all type entities. Set for a private type and its full view
+ --       (and its underlying full view, if the full view is itself private)
  --       when the type is subject to pragma Default_Initial_Condition.
  
  --    Has_Own_Invariants (Flag232) [base type only]
  --       Defined in all type entities. Set on any type that defines at least
! --       one invariant of its own.
! 
! --       Note: this flag is set on both partial and full view of types to which
! --       an Invariant pragma or aspect applies, and on the underlying full view
! --       if the full view is private.
  
  --    Has_Partial_Visible_Refinement (Flag296)
  --       Defined in E_Abstract_State entities. Set when a state has at least
*************** package Einfo is
*** 1971,1977 ****
  --       Predicate aspect from its parent or progenitor types.
  --
  --       Note: this flag is set on both partial and full view of types to which
! --       a Predicate pragma or aspect applies.
  
  --    Has_Primitive_Operations (Flag120) [base type only]
  --       Defined in all type entities. Set if at least one primitive operation
--- 1990,1997 ----
  --       Predicate aspect from its parent or progenitor types.
  --
  --       Note: this flag is set on both partial and full view of types to which
! --       a Predicate pragma or aspect applies, and on the underlying full view
! --       if the full view is private.
  
  --    Has_Primitive_Operations (Flag120) [base type only]
  --       Defined in all type entities. Set if at least one primitive operation
*************** package Einfo is
*** 2170,2175 ****
--- 2190,2199 ----
  --       references an entity with a type reference. See package Lib.Xref for
  --       further details).
  
+ --    Has_Yield_Aspect (Flag308)
+ --       Defined in subprograms, generic subprograms, entries, entry families.
+ --       Set if the entity has aspect Yield.
+ 
  --    Hiding_Loop_Variable (Node8)
  --       Defined in variables. Set only if a variable of a discrete type is
  --       hidden by a loop variable in the same local scope, in which case
*************** package Einfo is
*** 2267,2277 ****
  --       implemented by a tagged type that are not already implemented by the
  --       ancestors (Ada 2005: AI-251).
  
- --    Invariants_Ignored (Flag308)
- --       Defined on all types. Indicates whether the type declaration is in
- --       a context where Assertion_Policy is Ignore, in which case no checks
- --       (static or dynamic) must be generated for objects of the type.
- 
  --    Invariant_Procedure (synthesized)
  --       Defined in types and subtypes. Set for private types and their full
  --       views if one or more [class-wide] invariants apply to the type, or
--- 2291,2296 ----
*************** package Einfo is
*** 2313,2318 ****
--- 2332,2340 ----
  --    Is_Access_Type (synthesized)
  --       Applies to all entities, true for access types and subtypes
  
+ --    Is_Access_Object_Type (synthesized)
+ --       Applies to all entities, true for access-to-object types and subtypes
+ 
  --    Is_Activation_Record (Flag305)
  --       Applies to E_In_Parameters generated in Exp_Unst for nested
  --       subprograms, to mark the added formal that carries the activation
*************** package Einfo is
*** 2354,2365 ****
  --       In the case of private and incomplete types, this flag is set in
  --       both the partial view and the full view.
  
! --    Is_Atomic_Or_VFA (synth)
  --       Defined in all type entities, and also in constants, components and
! --       variables. Set if a pragma Atomic or Shared or Volatile_Full_Access
! --       applies to the entity. For many purposes VFA objects should be treated
! --       the same as Atomic objects, and this predicate is intended for that
! --       usage. In the case of private and incomplete types, the predicate
  --       applies to both the partial view and the full view.
  
  --    Is_Base_Type (synthesized)
--- 2376,2386 ----
  --       In the case of private and incomplete types, this flag is set in
  --       both the partial view and the full view.
  
! --    Is_Full_Access (synth)
  --       Defined in all type entities, and also in constants, components and
! --       variables. Set if an aspect/pragma Atomic/Shared, or an aspect/pragma
! --       Volatile_Full_Access or an Ada 2020 aspect Full_Access_Only applies
! --       to the entity. In the case of private and incomplete types, the flag
  --       applies to both the partial view and the full view.
  
  --    Is_Base_Type (synthesized)
*************** package Einfo is
*** 2486,2491 ****
--- 2507,2516 ----
  --       Defined in all type entities, set only for tagged types to which a
  --       valid pragma Import (CPP, ...) or pragma CPP_Class has been applied.
  
+ --    Is_CUDA_Kernel (Flag118)
+ --       Defined in function and procedure entities. Set if the subprogram is a
+ --       CUDA kernel.
+ 
  --    Is_Decimal_Fixed_Point_Type (synthesized)
  --       Applies to all type entities, true for decimal fixed point
  --       types and subtypes.
*************** package Einfo is
*** 2631,2640 ****
  --       Used to generate constraint checks on calls to these subprograms, even
  --       within an instance of a predefined run-time unit, in which checks
  --       are otherwise suppressed.
- --
- --       The flag is also set on the entity of the expression function created
- --       within an instance, for a function that has external axiomatization,
- --       for use in GNATprove mode.
  
  --    Is_Generic_Actual_Type (Flag94)
  --       Defined in all type and subtype entities. Set in the subtype
--- 2656,2661 ----
*************** package Einfo is
*** 3170,3175 ****
--- 3191,3200 ----
  --       Applies to all entities, true for record types and subtypes,
  --       includes class-wide types and subtypes (which are also records).
  
+ --    Is_Relaxed_Initialization_State (synthesized)
+ --       Applies to all entities, true for abstract states that are subject to
+ --       option Relaxed_Initialization.
+ 
  --    Is_Remote_Call_Interface (Flag62)
  --       Defined in all entities. Set in E_Package and E_Generic_Package
  --       entities to which a pragma Remote_Call_Interface is applied, and
*************** package Einfo is
*** 3394,3402 ****
  
  --    Is_Volatile_Full_Access (Flag285)
  --       Defined in all type entities, and also in constants, components, and
! --       variables. Set if a pragma Volatile_Full_Access applies to the entity.
! --       In the case of private and incomplete types, this flag is set in
! --       both the partial view and the full view.
  
  --    Is_Wrapper_Package (synthesized)
  --       Defined in package entities. Indicates that the package has been
--- 3419,3428 ----
  
  --    Is_Volatile_Full_Access (Flag285)
  --       Defined in all type entities, and also in constants, components, and
! --       variables. Set if an aspect/pragma Volatile_Full_Access or an Ada 2020
! --       aspect Full_Access_Only applies to the entity. In the case of private
! --       and incomplete types, this flag is set in both the partial view and
! --       the full view.
  
  --    Is_Wrapper_Package (synthesized)
  --       Defined in package entities. Indicates that the package has been
*************** package Einfo is
*** 3706,3713 ****
  --       pragma No_Component_Reordering applies.
  
  --    No_Return (Flag113)
! --       Defined in all entities. Always false except in the case of procedures
! --       and generic procedures for which a pragma No_Return is given.
  
  --    No_Strict_Aliasing (Flag136) [base type only]
  --       Defined in access types. Set to direct the backend to avoid any
--- 3732,3739 ----
  --       pragma No_Component_Reordering applies.
  
  --    No_Return (Flag113)
! --       Defined in all entities. Set for subprograms and generic subprograms
! --       to which a valid aspect or pragma No_Return applies.
  
  --    No_Strict_Aliasing (Flag136) [base type only]
  --       Defined in access types. Set to direct the backend to avoid any
*************** package Einfo is
*** 3906,3911 ****
--- 3932,3951 ----
  --       of a single protected/task type, the references are examined as they
  --       must appear only within the type defintion and the corresponding body.
  
+ --    Partial_DIC_Procedure (synthesized)
+ --       Defined in type entities. Set for a private type and its full view
+ --       when the type is subject to pragma Default_Initial_Condition (DIC), or
+ --       when the type inherits a DIC pragma from a parent type. Points to the
+ --       entity of a procedure that takes a single argument of the given type
+ --       and verifies the assertion expression of the DIC pragma at run time.
+ --       When present, the Partial_DIC_Procedure of a type only checks DICs
+ --       associated with the partial (private) view of the type, and is invoked
+ --       by the full DIC_Procedure (which may check additional DICs associated
+ --       with the full view).
+ 
+ --       Note: the reason this is marked as a synthesized attribute is that the
+ --       way this is stored is as an element of the Subprograms_For_Type field.
+ 
  --    Partial_Invariant_Procedure (synthesized)
  --       Defined in types and subtypes. Set for private types when one or more
  --       [class-wide] type invariants apply to them. Points to the entity for a
*************** package Einfo is
*** 4091,4104 ****
  --       only for type-related error messages.
  
  --    Related_Expression (Node24)
! --       Defined in variables and types. When Set for internally generated
! --       entities, it may be used to denote the source expression whose
! --       elaboration created the variable declaration. If set, it is used
  --       for generating clearer messages from CodePeer. It is used on source
  --       entities that are variables in iterator specifications, to provide
  --       a link to the container that is the domain of iteration. This allows
  --       for better cross-reference information when the loop modifies elements
  --       of the container, and suppresses spurious warnings.
  --
  --       Shouldn't it also be used for the same purpose in errout? It seems
  --       odd to have two mechanisms here???
--- 4131,4146 ----
  --       only for type-related error messages.
  
  --    Related_Expression (Node24)
! --       Defined in variables, types and functions. When Set for internally
! --       generated entities, it may be used to denote the source expression
! --       whose elaboration created the variable declaration. If set, it is used
  --       for generating clearer messages from CodePeer. It is used on source
  --       entities that are variables in iterator specifications, to provide
  --       a link to the container that is the domain of iteration. This allows
  --       for better cross-reference information when the loop modifies elements
  --       of the container, and suppresses spurious warnings.
+ --       Finally this node is used on functions specified via the Real_Literal
+ --       aspect, to denote the 2-parameter overloading, if found.
  --
  --       Shouldn't it also be used for the same purpose in errout? It seems
  --       odd to have two mechanisms here???
*************** package Einfo is
*** 4166,4171 ****
--- 4208,4217 ----
  --       RM-6.5(4/2). Note that a (simple) return statement within an
  --       extended_return_statement applies to the extended_return_statement,
  --       even though it causes the whole function to return.
+ --       Also defined in special E_Block entities built as E_Return_Statement
+ --       for extended return statements and attached to the block statement
+ --       by Expand_N_Extended_Return_Statement before being turned into an
+ --       E_Block by semantic analysis.
  
  --    Return_Present (Flag54)
  --       Defined in function and generic function entities. Set if the
*************** package Einfo is
*** 4175,4183 ****
  --       for the function case.
  
  --    Returns_By_Ref (Flag90)
! --       Defined in function entities. Set if the function returns the result
! --       by reference, either because its return type is a by-reference-type
! --       or because the function explicitly uses the secondary stack.
  
  --    Reverse_Bit_Order (Flag164) [base type only]
  --       Defined in all record type entities. Set if entity has a Bit_Order
--- 4221,4230 ----
  --       for the function case.
  
  --    Returns_By_Ref (Flag90)
! --       Defined in subprogram type entities and functions. Set if a function
! --       (or an access-to-function type) returns a result by reference, either
! --       because its return type is a by-reference-type or because the function
! --       explicitly uses the secondary stack.
  
  --    Reverse_Bit_Order (Flag164) [base type only]
  --       Defined in all record type entities. Set if entity has a Bit_Order
*************** package Einfo is
*** 4232,4240 ****
  --       explicit range).
  
  --    Scale_Value (Uint16)
! --       Defined in decimal fixed-point types and subtypes. Contains the scale
! --       for the type (i.e. the value of type'Scale = the number of decimal
! --       digits after the decimal point).
  
  --    Scope (Node3)
  --       Defined in all entities. Points to the entity for the scope (block,
--- 4279,4288 ----
  --       explicit range).
  
  --    Scale_Value (Uint16)
! --       Defined in decimal fixed-point types and subtypes. This holds the
! --       value of the Scale attribute for the type, i.e. the scale of the type
! --       defined as the integer N such that the delta is equal to 10.0**(-N).
! --       Note that, if Scale_Value is positive, then it is equal to Aft_Value.
  
  --    Scope (Node3)
  --       Defined in all entities. Points to the entity for the scope (block,
*************** package Einfo is
*** 4245,4258 ****
  --       the Scope will be Standard.
  
  --    Scope_Depth (synthesized)
! --       Applies to program units, blocks, concurrent types and entries, and
! --       also to record types, i.e. to any entity that can appear on the scope
! --       stack. Yields the scope depth value, which for those entities other
! --       than records is simply the scope depth value, for record entities, it
! --       is the Scope_Depth of the record scope.
  
  --    Scope_Depth_Value (Uint22)
! --       Defined in program units, blocks, concurrent types, and entries.
  --       Indicates the number of scopes that statically enclose the declaration
  --       of the unit or type. Library units have a depth of zero. Note that
  --       record types can act as scopes but do NOT have this field set (see
--- 4293,4308 ----
  --       the Scope will be Standard.
  
  --    Scope_Depth (synthesized)
! --       Applies to program units, blocks, loops, return statements,
! --       concurrent types, private types and entries, and also to record types,
! --       i.e. to any entity that can appear on the scope stack. Yields the
! --       scope depth value, which for those entities other than records is
! --       simply the scope depth value, for record entities, it is the
! --       Scope_Depth of the record scope.
  
  --    Scope_Depth_Value (Uint22)
! --       Defined in program units, blocks, loops, return statements,
! --       concurrent types, private types and entries.
  --       Indicates the number of scopes that statically enclose the declaration
  --       of the unit or type. Library units have a depth of zero. Note that
  --       record types can act as scopes but do NOT have this field set (see
*************** package Einfo is
*** 4453,4460 ****
  --       stored discriminants for the record (sub)type.
  
  --    Stores_Attribute_Old_Prefix (Flag270)
! --       Defined in constants. Set when the constant has been generated to save
! --       the value of attribute 'Old's prefix.
  
  --    Strict_Alignment (Flag145) [implementation base type only]
  --       Defined in all type entities. Indicates that the type is by-reference
--- 4503,4510 ----
  --       stored discriminants for the record (sub)type.
  
  --    Stores_Attribute_Old_Prefix (Flag270)
! --       Defined in constants, variables, and types which are created during
! --       expansion in order to save the value of attribute 'Old's prefix.
  
  --    Strict_Alignment (Flag145) [implementation base type only]
  --       Defined in all type entities. Indicates that the type is by-reference
*************** package Einfo is
*** 4560,4574 ****
  --       Applies to scalar types. Returns the tree node (Node_Id) that contains
  --       the high bound of a scalar type. The returned value is literal for a
  --       base type, but may be an expression in the case of scalar type with
! --       dynamic bounds. Note that in the case of a fixed point type, the high
! --       bound is in units of small, and is an integer.
  
  --    Type_Low_Bound (synthesized)
  --       Applies to scalar types. Returns the tree node (Node_Id) that contains
  --       the low bound of a scalar type. The returned value is literal for a
  --       base type, but may be an expression in the case of scalar type with
! --       dynamic bounds. Note that in the case of a fixed point type, the low
! --       bound is in units of small, and is an integer.
  
  --    Underlying_Full_View (Node19)
  --       Defined in private subtypes that are the completion of other private
--- 4610,4622 ----
  --       Applies to scalar types. Returns the tree node (Node_Id) that contains
  --       the high bound of a scalar type. The returned value is literal for a
  --       base type, but may be an expression in the case of scalar type with
! --       dynamic bounds.
  
  --    Type_Low_Bound (synthesized)
  --       Applies to scalar types. Returns the tree node (Node_Id) that contains
  --       the low bound of a scalar type. The returned value is literal for a
  --       base type, but may be an expression in the case of scalar type with
! --       dynamic bounds.
  
  --    Underlying_Full_View (Node19)
  --       Defined in private subtypes that are the completion of other private
*************** package Einfo is
*** 5184,5193 ****
        --  there are some attributes that are significant for the body entity.
        --  For example, collection of exception handlers.
  
-       E_Protected_Object,
-       --  A protected object, created by an object declaration that declares
-       --  an object of a protected type.
- 
        E_Protected_Body,
        --  A protected body. This entity serves almost no function, since all
        --  semantic analysis uses the protected entity (E_Protected_Type).
--- 5232,5237 ----
*************** package Einfo is
*** 5788,5796 ****
     --    Implementation_Base_Type            (synth)
     --    Invariant_Procedure                 (synth)
     --    Is_Access_Protected_Subprogram_Type (synth)
!    --    Is_Atomic_Or_VFA                    (synth)
     --    Is_Controlled                       (synth)
     --    Object_Size_Clause                  (synth)
     --    Partial_Invariant_Procedure         (synth)
     --    Predicate_Function                  (synth)
     --    Predicate_Function_M                (synth)
--- 5832,5841 ----
     --    Implementation_Base_Type            (synth)
     --    Invariant_Procedure                 (synth)
     --    Is_Access_Protected_Subprogram_Type (synth)
!    --    Is_Full_Access                      (synth)
     --    Is_Controlled                       (synth)
     --    Object_Size_Clause                  (synth)
+    --    Partial_DIC_Procedure               (synth)
     --    Partial_Invariant_Procedure         (synth)
     --    Predicate_Function                  (synth)
     --    Predicate_Function_M                (synth)
*************** package Einfo is
*** 5817,5822 ****
--- 5862,5868 ----
     --    Has_Null_Visible_Refinement         (synth)
     --    Is_External_State                   (synth)
     --    Is_Null_State                       (synth)
+    --    Is_Relaxed_Initialization_State     (synth)
     --    Is_Synchronized_State               (synth)
     --    Partial_Refinement_Constituents     (synth)
  
*************** package Einfo is
*** 5897,5902 ****
--- 5943,5949 ----
     --    (plus type attributes)
  
     --  E_Block
+    --    Return_Applies_To                   (Node8)
     --    Block_Node                          (Node11)
     --    First_Entity                        (Node17)
     --    Last_Entity                         (Node20)
*************** package Einfo is
*** 5953,5959 ****
     --    Is_Volatile                         (Flag16)
     --    Is_Volatile_Full_Access             (Flag285)
     --    Treat_As_Volatile                   (Flag41)
!    --    Is_Atomic_Or_VFA                    (synth)
     --    Next_Component                      (synth)
     --    Next_Component_Or_Discriminant      (synth)
  
--- 6000,6006 ----
     --    Is_Volatile                         (Flag16)
     --    Is_Volatile_Full_Access             (Flag285)
     --    Treat_As_Volatile                   (Flag41)
!    --    Is_Full_Access                      (synth)
     --    Next_Component                      (synth)
     --    Next_Component_Or_Discriminant      (synth)
  
*************** package Einfo is
*** 6007,6014 ****
     --    Treat_As_Volatile                   (Flag41)
     --    Address_Clause                      (synth)
     --    Alignment_Clause                    (synth)
-    --    Is_Atomic_Or_VFA                    (synth)
     --    Is_Elaboration_Target               (synth)
     --    Size_Clause                         (synth)
  
     --  E_Decimal_Fixed_Point_Type
--- 6054,6061 ----
     --    Treat_As_Volatile                   (Flag41)
     --    Address_Clause                      (synth)
     --    Alignment_Clause                    (synth)
     --    Is_Elaboration_Target               (synth)
+    --    Is_Full_Access                      (synth)
     --    Size_Clause                         (synth)
  
     --  E_Decimal_Fixed_Point_Type
*************** package Einfo is
*** 6067,6072 ****
--- 6114,6120 ----
     --    SPARK_Pragma                        (Node40)   (protected kind)
     --    Default_Expressions_Processed       (Flag108)
     --    Entry_Accepted                      (Flag152)
+    --    Has_Yield_Aspect                    (Flag308)
     --    Has_Expanded_Contract               (Flag240)
     --    Ignore_SPARK_Mode_Pragmas           (Flag301)
     --    Is_Elaboration_Checks_OK_Id         (Flag148)
*************** package Einfo is
*** 6204,6213 ****
--- 6252,6263 ----
     --    Has_Nested_Subprogram               (Flag282)
     --    Has_Out_Or_In_Out_Parameter         (Flag110)
     --    Has_Recursive_Call                  (Flag143)
+    --    Has_Yield_Aspect                    (Flag308)
     --    Ignore_SPARK_Mode_Pragmas           (Flag301)
     --    Is_Abstract_Subprogram              (Flag19)   (non-generic case only)
     --    Is_Called                           (Flag102)  (non-generic case only)
     --    Is_Constructor                      (Flag76)
+    --    Is_CUDA_Kernel                      (Flag118)  (non-generic case only)
     --    Is_DIC_Procedure                    (Flag132)  (non-generic case only)
     --    Is_Discrim_SO_Function              (Flag176)
     --    Is_Discriminant_Check_Function      (Flag264)
*************** package Einfo is
*** 6446,6451 ****
--- 6496,6502 ----
     --    Has_Null_Abstract_State             (synth)
     --    Is_Elaboration_Target               (synth)
     --    Is_Wrapper_Package                  (synth)    (non-generic case only)
+    --    Has_Limited_View                    (synth)    (non-generic case only)
     --    Scope_Depth                         (synth)
  
     --  E_Package_Body
*************** package Einfo is
*** 6529,6539 ****
--- 6580,6592 ----
     --    Has_Master_Entity                   (Flag21)
     --    Has_Nested_Block_With_Handler       (Flag101)
     --    Has_Nested_Subprogram               (Flag282)
+    --    Has_Yield_Aspect                    (Flag308)
     --    Ignore_SPARK_Mode_Pragmas           (Flag301)
     --    Is_Abstract_Subprogram              (Flag19)   (non-generic case only)
     --    Is_Asynchronous                     (Flag81)
     --    Is_Called                           (Flag102)  (non-generic case only)
     --    Is_Constructor                      (Flag76)
+    --    Is_CUDA_Kernel                      (Flag118)
     --    Is_DIC_Procedure                    (Flag132)  (non-generic case only)
     --    Is_Elaboration_Checks_OK_Id         (Flag148)
     --    Is_Elaboration_Warnings_OK_Id       (Flag304)
*************** package Einfo is
*** 6548,6553 ****
--- 6601,6607 ----
     --    Is_Invariant_Procedure              (Flag257)  (non-generic case only)
     --    Is_Machine_Code_Subprogram          (Flag137)  (non-generic case only)
     --    Is_Null_Init_Proc                   (Flag178)
+    --    Is_Partial_DIC_Procedure            (synth)    (non-generic case only)
     --    Is_Partial_Invariant_Procedure      (Flag292)  (non-generic case only)
     --    Is_Predicate_Function               (Flag255)  (non-generic case only)
     --    Is_Predicate_Function_M             (Flag256)  (non-generic case only)
*************** package Einfo is
*** 6715,6724 ****
--- 6769,6780 ----
     --    Extra_Accessibility_Of_Result       (Node19)
     --    Directly_Designated_Type            (Node20)
     --    Extra_Formals                       (Node28)
+    --    Access_Subprogram_Wrapper           (Node41)
     --    First_Formal                        (synth)
     --    First_Formal_With_Extras            (synth)
     --    Last_Formal                         (synth)
     --    Number_Formals                      (synth)
+    --    Returns_By_Ref                      (Flag90)
     --    (plus type attributes)
  
     --  E_Task_Body
*************** package Einfo is
*** 6819,6826 ****
     --    Treat_As_Volatile                   (Flag41)
     --    Address_Clause                      (synth)
     --    Alignment_Clause                    (synth)
-    --    Is_Atomic_Or_VFA                    (synth)
     --    Is_Elaboration_Target               (synth)
     --    Size_Clause                         (synth)
  
     --  E_Void
--- 6875,6882 ----
     --    Treat_As_Volatile                   (Flag41)
     --    Address_Clause                      (synth)
     --    Alignment_Clause                    (synth)
     --    Is_Elaboration_Target               (synth)
+    --    Is_Full_Access                      (synth)
     --    Size_Clause                         (synth)
  
     --  E_Void
*************** package Einfo is
*** 7061,7066 ****
--- 7117,7123 ----
     function Accept_Address                      (Id : E) return L;
     function Access_Disp_Table                   (Id : E) return L;
     function Access_Disp_Table_Elab_Flag         (Id : E) return E;
+    function Access_Subprogram_Wrapper           (Id : E) return E;
     function Activation_Record_Component         (Id : E) return E;
     function Actual_Subtype                      (Id : E) return E;
     function Address_Taken                       (Id : E) return B;
*************** package Einfo is
*** 7087,7093 ****
     function Class_Wide_Clone                    (Id : E) return E;
     function Class_Wide_Type                     (Id : E) return E;
     function Cloned_Subtype                      (Id : E) return E;
-    function Component_Alignment                 (Id : E) return C;
     function Component_Bit_Offset                (Id : E) return U;
     function Component_Clause                    (Id : E) return N;
     function Component_Size                      (Id : E) return U;
--- 7144,7149 ----
*************** package Einfo is
*** 7195,7201 ****
     function Has_Delayed_Aspects                 (Id : E) return B;
     function Has_Delayed_Freeze                  (Id : E) return B;
     function Has_Delayed_Rep_Aspects             (Id : E) return B;
-    function Has_DIC                             (Id : E) return B;
     function Has_Discriminants                   (Id : E) return B;
     function Has_Dispatch_Table                  (Id : E) return B;
     function Has_Dynamic_Predicate_Aspect        (Id : E) return B;
--- 7251,7256 ----
*************** package Einfo is
*** 7212,7219 ****
     function Has_Inherited_DIC                   (Id : E) return B;
     function Has_Inherited_Invariants            (Id : E) return B;
     function Has_Initial_Value                   (Id : E) return B;
-    function Has_Interrupt_Handler               (Id : E) return B;
-    function Has_Invariants                      (Id : E) return B;
     function Has_Loop_Entry_Attributes           (Id : E) return B;
     function Has_Machine_Radix_Clause            (Id : E) return B;
     function Has_Master_Entity                   (Id : E) return B;
--- 7267,7272 ----
*************** package Einfo is
*** 7273,7278 ****
--- 7326,7332 ----
     function Has_Visible_Refinement              (Id : E) return B;
     function Has_Volatile_Components             (Id : E) return B;
     function Has_Xref_Entry                      (Id : E) return B;
+    function Has_Yield_Aspect                    (Id : E) return B;
     function Hiding_Loop_Variable                (Id : E) return E;
     function Hidden_In_Formal_Instance           (Id : E) return L;
     function Homonym                             (Id : E) return E;
*************** package Einfo is
*** 7287,7293 ****
     function Interface_Alias                     (Id : E) return E;
     function Interface_Name                      (Id : E) return N;
     function Interfaces                          (Id : E) return L;
-    function Invariants_Ignored                  (Id : E) return B;
     function Is_Abstract_Subprogram              (Id : E) return B;
     function Is_Abstract_Type                    (Id : E) return B;
     function Is_Access_Constant                  (Id : E) return B;
--- 7341,7346 ----
*************** package Einfo is
*** 7298,7304 ****
     function Is_Aliased                          (Id : E) return B;
     function Is_Asynchronous                     (Id : E) return B;
     function Is_Atomic                           (Id : E) return B;
-    function Is_Atomic_Or_VFA                    (Id : E) return B;
     function Is_Bit_Packed_Array                 (Id : E) return B;
     function Is_Called                           (Id : E) return B;
     function Is_Character_Type                   (Id : E) return B;
--- 7351,7356 ----
*************** package Einfo is
*** 7315,7320 ****
--- 7367,7373 ----
     function Is_Controlled_Active                (Id : E) return B;
     function Is_Controlling_Formal               (Id : E) return B;
     function Is_CPP_Class                        (Id : E) return B;
+    function Is_CUDA_Kernel                      (Id : E) return B;
     function Is_Descendant_Of_Address            (Id : E) return B;
     function Is_DIC_Procedure                    (Id : E) return B;
     function Is_Discrim_SO_Function              (Id : E) return B;
*************** package Einfo is
*** 7368,7373 ****
--- 7421,7427 ----
     function Is_Packed_Array_Impl_Type           (Id : E) return B;
     function Is_Potentially_Use_Visible          (Id : E) return B;
     function Is_Param_Block_Component_Type       (Id : E) return B;
+    function Is_Partial_DIC_Procedure            (Id : E) return B;
     function Is_Partial_Invariant_Procedure      (Id : E) return B;
     function Is_Predicate_Function               (Id : E) return B;
     function Is_Predicate_Function_M             (Id : E) return B;
*************** package Einfo is
*** 7558,7563 ****
--- 7612,7618 ----
     --  Is_Generic_Type where the Ekind does not provide the needed
     --  information).
  
+    function Is_Access_Object_Type               (Id : E) return B;
     function Is_Access_Type                      (Id : E) return B;
     function Is_Access_Protected_Subprogram_Type (Id : E) return B;
     function Is_Access_Subprogram_Type           (Id : E) return B;
*************** package Einfo is
*** 7593,7598 ****
--- 7648,7654 ----
     function Is_Integer_Type                     (Id : E) return B;
     function Is_Limited_Record                   (Id : E) return B;
     function Is_Modular_Integer_Type             (Id : E) return B;
+    function Is_Named_Access_Type                (Id : E) return B;
     function Is_Named_Number                     (Id : E) return B;
     function Is_Numeric_Type                     (Id : E) return B;
     function Is_Object                           (Id : E) return B;
*************** package Einfo is
*** 7621,7626 ****
--- 7677,7683 ----
     function Aft_Value                           (Id : E) return U;
     function Alignment_Clause                    (Id : E) return N;
     function Base_Type                           (Id : E) return E;
+    function Component_Alignment                 (Id : E) return C;
     function Declaration_Node                    (Id : E) return N;
     function Designated_Type                     (Id : E) return E;
     function First_Component                     (Id : E) return E;
*************** package Einfo is
*** 7628,7635 ****
--- 7685,7696 ----
     function First_Formal                        (Id : E) return E;
     function First_Formal_With_Extras            (Id : E) return E;
     function Has_Attach_Handler                  (Id : E) return B;
+    function Has_DIC                             (Id : E) return B;
     function Has_Entries                         (Id : E) return B;
     function Has_Foreign_Convention              (Id : E) return B;
+    function Has_Interrupt_Handler               (Id : E) return B;
+    function Has_Invariants                      (Id : E) return B;
+    function Has_Limited_View                    (Id : E) return B;
     function Has_Non_Limited_View                (Id : E) return B;
     function Has_Non_Null_Abstract_State         (Id : E) return B;
     function Has_Non_Null_Visible_Refinement     (Id : E) return B;
*************** package Einfo is
*** 7645,7650 ****
--- 7706,7712 ----
     function Is_Elaboration_Target               (Id : E) return B;
     function Is_External_State                   (Id : E) return B;
     function Is_Finalizer                        (Id : E) return B;
+    function Is_Full_Access                      (Id : E) return B;
     function Is_Null_State                       (Id : E) return B;
     function Is_Package_Or_Generic_Package       (Id : E) return B;
     function Is_Packed_Array                     (Id : E) return B;
*************** package Einfo is
*** 7652,7657 ****
--- 7714,7720 ----
     function Is_Protected_Component              (Id : E) return B;
     function Is_Protected_Interface              (Id : E) return B;
     function Is_Protected_Record_Type            (Id : E) return B;
+    function Is_Relaxed_Initialization_State     (Id : E) return B;
     function Is_Standard_Character_Type          (Id : E) return B;
     function Is_Standard_String_Type             (Id : E) return B;
     function Is_String_Type                      (Id : E) return B;
*************** package Einfo is
*** 7674,7679 ****
--- 7737,7743 ----
     function Next_Discriminant                   (Id : E) return E;
     function Next_Formal                         (Id : E) return E;
     function Next_Formal_With_Extras             (Id : E) return E;
+    function Next_Index                          (Id : N) return N;
     function Next_Literal                        (Id : E) return E;
     function Next_Stored_Discriminant            (Id : E) return E;
     function Number_Dimensions                   (Id : E) return Pos;
*************** package Einfo is
*** 7687,7692 ****
--- 7751,7757 ----
     function Safe_Emax_Value                     (Id : E) return U;
     function Safe_First_Value                    (Id : E) return R;
     function Safe_Last_Value                     (Id : E) return R;
+    function Scope_Depth                         (Id : E) return U;
     function Scope_Depth_Set                     (Id : E) return B;
     function Size_Clause                         (Id : E) return N;
     function Stream_Size_Clause                  (Id : E) return N;
*************** package Einfo is
*** 7767,7772 ****
--- 7832,7838 ----
     procedure Set_Accept_Address                  (Id : E; V : L);
     procedure Set_Access_Disp_Table               (Id : E; V : L);
     procedure Set_Access_Disp_Table_Elab_Flag     (Id : E; V : E);
+    procedure Set_Access_Subprogram_Wrapper       (Id : E; V : E);
     procedure Set_Activation_Record_Component     (Id : E; V : E);
     procedure Set_Actual_Subtype                  (Id : E; V : E);
     procedure Set_Address_Taken                   (Id : E; V : B := True);
*************** package Einfo is
*** 7977,7982 ****
--- 8043,8049 ----
     procedure Set_Has_Visible_Refinement          (Id : E; V : B := True);
     procedure Set_Has_Volatile_Components         (Id : E; V : B := True);
     procedure Set_Has_Xref_Entry                  (Id : E; V : B := True);
+    procedure Set_Has_Yield_Aspect                (Id : E; V : B := True);
     procedure Set_Hiding_Loop_Variable            (Id : E; V : E);
     procedure Set_Hidden_In_Formal_Instance       (Id : E; V : L);
     procedure Set_Homonym                         (Id : E; V : E);
*************** package Einfo is
*** 7991,7997 ****
     procedure Set_Interface_Alias                 (Id : E; V : E);
     procedure Set_Interface_Name                  (Id : E; V : N);
     procedure Set_Interfaces                      (Id : E; V : L);
-    procedure Set_Invariants_Ignored              (Id : E; V : B := True);
     procedure Set_Is_Abstract_Subprogram          (Id : E; V : B := True);
     procedure Set_Is_Abstract_Type                (Id : E; V : B := True);
     procedure Set_Is_Access_Constant              (Id : E; V : B := True);
--- 8058,8063 ----
*************** package Einfo is
*** 8019,8024 ****
--- 8085,8091 ----
     procedure Set_Is_Controlled_Active            (Id : E; V : B := True);
     procedure Set_Is_Controlling_Formal           (Id : E; V : B := True);
     procedure Set_Is_CPP_Class                    (Id : E; V : B := True);
+    procedure Set_Is_CUDA_Kernel                  (Id : E; V : B := True);
     procedure Set_Is_Descendant_Of_Address        (Id : E; V : B := True);
     procedure Set_Is_DIC_Procedure                (Id : E; V : B := True);
     procedure Set_Is_Discrim_SO_Function          (Id : E; V : B := True);
*************** package Einfo is
*** 8259,8270 ****
--- 8326,8339 ----
     ---------------------------------------------------
  
     function DIC_Procedure                        (Id : E) return E;
+    function Partial_DIC_Procedure                (Id : E) return E;
     function Invariant_Procedure                  (Id : E) return E;
     function Partial_Invariant_Procedure          (Id : E) return E;
     function Predicate_Function                   (Id : E) return E;
     function Predicate_Function_M                 (Id : E) return E;
  
     procedure Set_DIC_Procedure                   (Id : E; V : E);
+    procedure Set_Partial_DIC_Procedure           (Id : E; V : E);
     procedure Set_Invariant_Procedure             (Id : E; V : E);
     procedure Set_Partial_Invariant_Procedure     (Id : E; V : E);
     procedure Set_Predicate_Function              (Id : E; V : E);
*************** package Einfo is
*** 8301,8308 ****
     --  entities whose Ekind has not been set yet).
  
     procedure Init_Alignment                (Id : E; V : Int);
-    procedure Init_Component_Size           (Id : E; V : Int);
     procedure Init_Component_Bit_Offset     (Id : E; V : Int);
     procedure Init_Digits_Value             (Id : E; V : Int);
     procedure Init_Esize                    (Id : E; V : Int);
     procedure Init_Normalized_First_Bit     (Id : E; V : Int);
--- 8370,8377 ----
     --  entities whose Ekind has not been set yet).
  
     procedure Init_Alignment                (Id : E; V : Int);
     procedure Init_Component_Bit_Offset     (Id : E; V : Int);
+    procedure Init_Component_Size           (Id : E; V : Int);
     procedure Init_Digits_Value             (Id : E; V : Int);
     procedure Init_Esize                    (Id : E; V : Int);
     procedure Init_Normalized_First_Bit     (Id : E; V : Int);
*************** package Einfo is
*** 8311,8318 ****
     procedure Init_RM_Size                  (Id : E; V : Int);
  
     procedure Init_Alignment                (Id : E);
-    procedure Init_Component_Size           (Id : E);
     procedure Init_Component_Bit_Offset     (Id : E);
     procedure Init_Digits_Value             (Id : E);
     procedure Init_Esize                    (Id : E);
     procedure Init_Normalized_First_Bit     (Id : E);
--- 8380,8387 ----
     procedure Init_RM_Size                  (Id : E; V : Int);
  
     procedure Init_Alignment                (Id : E);
     procedure Init_Component_Bit_Offset     (Id : E);
+    procedure Init_Component_Size           (Id : E);
     procedure Init_Digits_Value             (Id : E);
     procedure Init_Esize                    (Id : E);
     procedure Init_Normalized_First_Bit     (Id : E);
*************** package Einfo is
*** 8320,8325 ****
--- 8389,8402 ----
     procedure Init_Normalized_Position_Max  (Id : E);
     procedure Init_RM_Size                  (Id : E);
  
+    procedure Init_Component_Location (Id : E);
+    --  Initializes all fields describing the location of a component
+    --  (Normalized_Position, Component_Bit_Offset, Normalized_First_Bit,
+    --  Normalized_Position_Max, Esize) to all be Unknown.
+ 
+    procedure Init_Size (Id : E; V : Int);
+    --  Initialize both the Esize and RM_Size fields of E to V
+ 
     procedure Init_Size_Align (Id : E);
     --  This procedure initializes both size fields and the alignment
     --  field to all be Unknown.
*************** package Einfo is
*** 8328,8341 ****
     --  Same as Init_Size_Align except RM_Size field (which is only for types)
     --  is unaffected.
  
-    procedure Init_Size (Id : E; V : Int);
-    --  Initialize both the Esize and RM_Size fields of E to V
- 
-    procedure Init_Component_Location (Id : E);
-    --  Initializes all fields describing the location of a component
-    --  (Normalized_Position, Component_Bit_Offset, Normalized_First_Bit,
-    --  Normalized_Position_Max, Esize) to all be Unknown.
- 
     ---------------
     -- Iterators --
     ---------------
--- 8405,8410 ----
*************** package Einfo is
*** 8470,8475 ****
--- 8539,8545 ----
     --    Refined_Global
     --    Refined_Post
     --    Refined_State
+    --    Subprogram_Variant
     --    Test_Case
     --    Volatile_Function
  
*************** package Einfo is
*** 8522,8539 ****
     --  NOTE: No updates are done to the First_Entity and Last_Entity fields
     --  of the scope.
  
-    function Next_Index (Id : Node_Id) return Node_Id;
-    --  Given an index from a previous call to First_Index or Next_Index,
-    --  returns a node representing the occurrence of the next index subtype,
-    --  or Empty if there are no more index subtypes.
- 
     procedure Remove_Entity (Id : Entity_Id);
     --  Remove entity Id from the entity chain of its scope
  
-    function Scope_Depth (Id : Entity_Id) return Uint;
-    --  Returns the scope depth value of the Id, unless the Id is a record
-    --  type, in which case it returns the scope depth of the record scope.
- 
     function Subtype_Kind (K : Entity_Kind) return Entity_Kind;
     --  Given an entity_kind K this function returns the entity_kind
     --  corresponding to subtype kind of the type represented by K. For
--- 8592,8600 ----
*************** package Einfo is
*** 8595,8603 ****
     --  the given field, depending on the Ekind. No blanks or end of lines are
     --  output, just the characters of the field name.
  
!    --------------------
!    -- Inline Pragmas --
!    --------------------
  
     --  Note that these inline pragmas are referenced by the XEINFO utility
     --  program in preparing the corresponding C header, and only those
--- 8656,8664 ----
     --  the given field, depending on the Ekind. No blanks or end of lines are
     --  output, just the characters of the field name.
  
!    ----------------------------------
!    -- Inline Pragmas for functions --
!    ----------------------------------
  
     --  Note that these inline pragmas are referenced by the XEINFO utility
     --  program in preparing the corresponding C header, and only those
*************** package Einfo is
*** 8608,8613 ****
--- 8669,8675 ----
     pragma Inline (Accept_Address);
     pragma Inline (Access_Disp_Table);
     pragma Inline (Access_Disp_Table_Elab_Flag);
+    pragma Inline (Access_Subprogram_Wrapper);
     pragma Inline (Activation_Record_Component);
     pragma Inline (Actual_Subtype);
     pragma Inline (Address_Taken);
*************** package Einfo is
*** 8644,8649 ****
--- 8706,8713 ----
     pragma Inline (Corresponding_Concurrent_Type);
     pragma Inline (Corresponding_Discriminant);
     pragma Inline (Corresponding_Equality);
+    pragma Inline (Corresponding_Function);
+    pragma Inline (Corresponding_Procedure);
     pragma Inline (Corresponding_Protected_Entry);
     pragma Inline (Corresponding_Record_Component);
     pragma Inline (Corresponding_Record_Type);
*************** package Einfo is
*** 8692,8697 ****
--- 8756,8762 ----
     pragma Inline (Entry_Formal);
     pragma Inline (Entry_Index_Constant);
     pragma Inline (Entry_Index_Type);
+    pragma Inline (Entry_Max_Queue_Lengths_Array);
     pragma Inline (Entry_Parameters_Type);
     pragma Inline (Enum_Pos_To_Rep);
     pragma Inline (Enumeration_Pos);
*************** package Einfo is
*** 8704,8709 ****
--- 8769,8775 ----
     pragma Inline (Extra_Constrained);
     pragma Inline (Extra_Formal);
     pragma Inline (Extra_Formals);
+    pragma Inline (Finalize_Storage_Only);
     pragma Inline (Finalization_Master);
     pragma Inline (Finalizer);
     pragma Inline (First_Entity);
*************** package Einfo is
*** 8736,8741 ****
--- 8802,8808 ----
     pragma Inline (Has_Delayed_Aspects);
     pragma Inline (Has_Delayed_Freeze);
     pragma Inline (Has_Delayed_Rep_Aspects);
+    pragma Inline (Has_DIC);
     pragma Inline (Has_Discriminants);
     pragma Inline (Has_Dispatch_Table);
     pragma Inline (Has_Dynamic_Predicate_Aspect);
*************** package Einfo is
*** 8752,8757 ****
--- 8819,8825 ----
     pragma Inline (Has_Inherited_DIC);
     pragma Inline (Has_Inherited_Invariants);
     pragma Inline (Has_Initial_Value);
+    pragma Inline (Has_Invariants);
     pragma Inline (Has_Loop_Entry_Attributes);
     pragma Inline (Has_Machine_Radix_Clause);
     pragma Inline (Has_Master_Entity);
*************** package Einfo is
*** 8811,8816 ****
--- 8879,8885 ----
     pragma Inline (Has_Visible_Refinement);
     pragma Inline (Has_Volatile_Components);
     pragma Inline (Has_Xref_Entry);
+    pragma Inline (Has_Yield_Aspect);
     pragma Inline (Hiding_Loop_Variable);
     pragma Inline (Hidden_In_Formal_Instance);
     pragma Inline (Homonym);
*************** package Einfo is
*** 8820,8830 ****
     pragma Inline (In_Package_Body);
     pragma Inline (In_Private_Part);
     pragma Inline (In_Use);
     pragma Inline (Inner_Instances);
     pragma Inline (Interface_Alias);
     pragma Inline (Interface_Name);
     pragma Inline (Interfaces);
-    pragma Inline (Invariants_Ignored);
     pragma Inline (Is_Abstract_Subprogram);
     pragma Inline (Is_Abstract_Type);
     pragma Inline (Is_Access_Constant);
--- 8889,8899 ----
     pragma Inline (In_Package_Body);
     pragma Inline (In_Private_Part);
     pragma Inline (In_Use);
+    pragma Inline (Initialization_Statements);
     pragma Inline (Inner_Instances);
     pragma Inline (Interface_Alias);
     pragma Inline (Interface_Name);
     pragma Inline (Interfaces);
     pragma Inline (Is_Abstract_Subprogram);
     pragma Inline (Is_Abstract_Type);
     pragma Inline (Is_Access_Constant);
*************** package Einfo is
*** 8837,8847 ****
     pragma Inline (Is_Ada_2012_Only);
     pragma Inline (Is_Aggregate_Type);
     pragma Inline (Is_Aliased);
     pragma Inline (Is_Array_Type);
     pragma Inline (Is_Assignable);
     pragma Inline (Is_Asynchronous);
     pragma Inline (Is_Atomic);
-    pragma Inline (Is_Atomic_Or_VFA);
     pragma Inline (Is_Bit_Packed_Array);
     pragma Inline (Is_Called);
     pragma Inline (Is_Character_Type);
--- 8906,8916 ----
     pragma Inline (Is_Ada_2012_Only);
     pragma Inline (Is_Aggregate_Type);
     pragma Inline (Is_Aliased);
+    pragma Inline (Is_Anonymous_Access_Type);
     pragma Inline (Is_Array_Type);
     pragma Inline (Is_Assignable);
     pragma Inline (Is_Asynchronous);
     pragma Inline (Is_Atomic);
     pragma Inline (Is_Bit_Packed_Array);
     pragma Inline (Is_Called);
     pragma Inline (Is_Character_Type);
*************** package Einfo is
*** 8863,8868 ****
--- 8932,8938 ----
     pragma Inline (Is_Controlled_Active);
     pragma Inline (Is_Controlling_Formal);
     pragma Inline (Is_CPP_Class);
+    pragma Inline (Is_CUDA_Kernel);
     pragma Inline (Is_Decimal_Fixed_Point_Type);
     pragma Inline (Is_Descendant_Of_Address);
     pragma Inline (Is_DIC_Procedure);
*************** package Einfo is
*** 8891,8896 ****
--- 8961,8967 ----
     pragma Inline (Is_Formal_Object);
     pragma Inline (Is_Formal_Subprogram);
     pragma Inline (Is_Frozen);
+    pragma Inline (Is_Full_Access);
     pragma Inline (Is_Generic_Actual_Subprogram);
     pragma Inline (Is_Generic_Actual_Type);
     pragma Inline (Is_Generic_Instance);
*************** package Einfo is
*** 8973,8978 ****
--- 9044,9051 ----
     pragma Inline (Is_Static_Type);
     pragma Inline (Is_Statically_Allocated);
     pragma Inline (Is_Subprogram);
+    pragma Inline (Is_Subprogram_Or_Entry);
+    pragma Inline (Is_Subprogram_Or_Generic_Subprogram);
     pragma Inline (Is_Tag);
     pragma Inline (Is_Tagged_Type);
     pragma Inline (Is_Task_Type);
*************** package Einfo is
*** 9019,9024 ****
--- 9092,9098 ----
     pragma Inline (Next_Index);
     pragma Inline (Next_Inlined_Subprogram);
     pragma Inline (Next_Literal);
+    pragma Inline (Next_Stored_Discriminant);
     pragma Inline (No_Dynamic_Predicate_On_Actual);
     pragma Inline (No_Pool_Assigned);
     pragma Inline (No_Predicate_On_Actual);
*************** package Einfo is
*** 9137,9153 ****
     pragma Inline (Was_Hidden);
     pragma Inline (Wrapped_Entity);
  
!    pragma Inline (Init_Alignment);
!    pragma Inline (Init_Component_Bit_Offset);
!    pragma Inline (Init_Component_Size);
!    pragma Inline (Init_Digits_Value);
!    pragma Inline (Init_Esize);
!    pragma Inline (Init_RM_Size);
  
     pragma Inline (Set_Abstract_States);
     pragma Inline (Set_Accept_Address);
     pragma Inline (Set_Access_Disp_Table);
     pragma Inline (Set_Access_Disp_Table_Elab_Flag);
     pragma Inline (Set_Activation_Record_Component);
     pragma Inline (Set_Actual_Subtype);
     pragma Inline (Set_Address_Taken);
--- 9211,9295 ----
     pragma Inline (Was_Hidden);
     pragma Inline (Wrapped_Entity);
  
!    --  END XEINFO INLINES
! 
!    --  The following Inline pragmas are *not* read by XEINFO when building the
!    --  C version of this interface automatically (so the C version will end up
!    --  making out of line calls). The pragma scan in XEINFO will be terminated
!    --  on encountering the END XEINFO INLINES line. We inline things here which
!    --  are small, but not of the canonical attribute access/set format that can
!    --  be handled by XEINFO.
! 
!    pragma Inline (Address_Clause);
!    pragma Inline (Alignment_Clause);
!    pragma Inline (Base_Type);
!    pragma Inline (Float_Rep);
!    pragma Inline (Has_Foreign_Convention);
!    pragma Inline (Has_Limited_View);
!    pragma Inline (Has_Non_Limited_View);
!    pragma Inline (Is_Base_Type);
!    pragma Inline (Is_Boolean_Type);
!    pragma Inline (Is_Constant_Object);
!    pragma Inline (Is_Controlled);
!    pragma Inline (Is_Discriminal);
!    pragma Inline (Is_Entity_Name);
!    pragma Inline (Is_Finalizer);
!    pragma Inline (Is_Null_State);
!    pragma Inline (Is_Package_Or_Generic_Package);
!    pragma Inline (Is_Packed_Array);
!    pragma Inline (Is_Prival);
!    pragma Inline (Is_Protected_Component);
!    pragma Inline (Is_Protected_Record_Type);
!    pragma Inline (Is_String_Type);
!    pragma Inline (Is_Task_Record_Type);
!    pragma Inline (Is_Volatile);
!    pragma Inline (Is_Wrapper_Package);
!    pragma Inline (Scope_Depth);
!    pragma Inline (Scope_Depth_Set);
!    pragma Inline (Size_Clause);
!    pragma Inline (Stream_Size_Clause);
!    pragma Inline (Type_High_Bound);
!    pragma Inline (Type_Low_Bound);
! 
!    pragma Inline (Known_Alignment);
!    pragma Inline (Known_Component_Bit_Offset);
!    pragma Inline (Known_Component_Size);
!    pragma Inline (Known_Esize);
!    pragma Inline (Known_Normalized_First_Bit);
!    pragma Inline (Known_Normalized_Position);
!    pragma Inline (Known_Normalized_Position_Max);
!    pragma Inline (Known_RM_Size);
! 
!    pragma Inline (Known_Static_Component_Bit_Offset);
!    pragma Inline (Known_Static_Component_Size);
!    pragma Inline (Known_Static_Esize);
!    pragma Inline (Known_Static_Normalized_First_Bit);
!    pragma Inline (Known_Static_Normalized_Position);
!    pragma Inline (Known_Static_Normalized_Position_Max);
!    pragma Inline (Known_Static_RM_Size);
! 
!    pragma Inline (Unknown_Alignment);
!    pragma Inline (Unknown_Component_Bit_Offset);
!    pragma Inline (Unknown_Component_Size);
!    pragma Inline (Unknown_Esize);
!    pragma Inline (Unknown_Normalized_First_Bit);
!    pragma Inline (Unknown_Normalized_Position);
!    pragma Inline (Unknown_Normalized_Position_Max);
!    pragma Inline (Unknown_RM_Size);
! 
!    -----------------------------------
!    -- Inline Pragmas for procedures --
!    -----------------------------------
! 
!    --  The following inline pragmas are *not* referenced by the XEINFO utility
!    --  program in preparing the corresponding C header, and therefore do *not*
!    --  need to meet the requirements documented in the section on XEINFO.
  
     pragma Inline (Set_Abstract_States);
     pragma Inline (Set_Accept_Address);
     pragma Inline (Set_Access_Disp_Table);
     pragma Inline (Set_Access_Disp_Table_Elab_Flag);
+    pragma Inline (Set_Access_Subprogram_Wrapper);
     pragma Inline (Set_Activation_Record_Component);
     pragma Inline (Set_Actual_Subtype);
     pragma Inline (Set_Address_Taken);
*************** package Einfo is
*** 9184,9189 ****
--- 9326,9333 ----
     pragma Inline (Set_Corresponding_Concurrent_Type);
     pragma Inline (Set_Corresponding_Discriminant);
     pragma Inline (Set_Corresponding_Equality);
+    pragma Inline (Set_Corresponding_Function);
+    pragma Inline (Set_Corresponding_Procedure);
     pragma Inline (Set_Corresponding_Protected_Entry);
     pragma Inline (Set_Corresponding_Record_Component);
     pragma Inline (Set_Corresponding_Record_Type);
*************** package Einfo is
*** 9243,9248 ****
--- 9387,9393 ----
     pragma Inline (Set_Extra_Constrained);
     pragma Inline (Set_Extra_Formal);
     pragma Inline (Set_Extra_Formals);
+    pragma Inline (Set_Finalize_Storage_Only);
     pragma Inline (Set_Finalization_Master);
     pragma Inline (Set_Finalizer);
     pragma Inline (Set_First_Entity);
*************** package Einfo is
*** 9251,9256 ****
--- 9396,9402 ----
     pragma Inline (Set_First_Literal);
     pragma Inline (Set_First_Private_Entity);
     pragma Inline (Set_First_Rep_Item);
+    pragma Inline (Set_Float_Rep);
     pragma Inline (Set_Freeze_Node);
     pragma Inline (Set_From_Limited_With);
     pragma Inline (Set_Full_View);
*************** package Einfo is
*** 9349,9354 ****
--- 9495,9501 ----
     pragma Inline (Set_Has_Visible_Refinement);
     pragma Inline (Set_Has_Volatile_Components);
     pragma Inline (Set_Has_Xref_Entry);
+    pragma Inline (Set_Has_Yield_Aspect);
     pragma Inline (Set_Hiding_Loop_Variable);
     pragma Inline (Set_Hidden_In_Formal_Instance);
     pragma Inline (Set_Homonym);
*************** package Einfo is
*** 9358,9368 ****
     pragma Inline (Set_In_Package_Body);
     pragma Inline (Set_In_Private_Part);
     pragma Inline (Set_In_Use);
     pragma Inline (Set_Inner_Instances);
     pragma Inline (Set_Interface_Alias);
     pragma Inline (Set_Interface_Name);
     pragma Inline (Set_Interfaces);
-    pragma Inline (Set_Invariants_Ignored);
     pragma Inline (Set_Is_Abstract_Subprogram);
     pragma Inline (Set_Is_Abstract_Type);
     pragma Inline (Set_Is_Access_Constant);
--- 9505,9515 ----
     pragma Inline (Set_In_Package_Body);
     pragma Inline (Set_In_Private_Part);
     pragma Inline (Set_In_Use);
+    pragma Inline (Set_Initialization_Statements);
     pragma Inline (Set_Inner_Instances);
     pragma Inline (Set_Interface_Alias);
     pragma Inline (Set_Interface_Name);
     pragma Inline (Set_Interfaces);
     pragma Inline (Set_Is_Abstract_Subprogram);
     pragma Inline (Set_Is_Abstract_Type);
     pragma Inline (Set_Is_Access_Constant);
*************** package Einfo is
*** 9390,9395 ****
--- 9537,9543 ----
     pragma Inline (Set_Is_Controlled_Active);
     pragma Inline (Set_Is_Controlling_Formal);
     pragma Inline (Set_Is_CPP_Class);
+    pragma Inline (Set_Is_CUDA_Kernel);
     pragma Inline (Set_Is_Descendant_Of_Address);
     pragma Inline (Set_Is_DIC_Procedure);
     pragma Inline (Set_Is_Discrim_SO_Function);
*************** package Einfo is
*** 9627,9657 ****
     pragma Inline (Set_Was_Hidden);
     pragma Inline (Set_Wrapped_Entity);
  
!    --  END XEINFO INLINES
! 
!    --  The following Inline pragmas are *not* read by xeinfo when building the
!    --  C version of this interface automatically (so the C version will end up
!    --  making out of line calls). The pragma scan in xeinfo will be terminated
!    --  on encountering the END XEINFO INLINES line. We inline things here which
!    --  are small, but not of the canonical attribute access/set format that can
!    --  be handled by xeinfo.
! 
!    pragma Inline (Base_Type);
!    pragma Inline (Is_Base_Type);
!    pragma Inline (Is_Boolean_Type);
!    pragma Inline (Is_Controlled);
!    pragma Inline (Is_Entity_Name);
!    pragma Inline (Is_Package_Or_Generic_Package);
!    pragma Inline (Is_Packed_Array);
!    pragma Inline (Is_String_Type);
!    pragma Inline (Is_Subprogram_Or_Generic_Subprogram);
!    pragma Inline (Is_Volatile);
!    pragma Inline (Is_Wrapper_Package);
!    pragma Inline (Known_RM_Size);
!    pragma Inline (Known_Static_Component_Bit_Offset);
!    pragma Inline (Known_Static_RM_Size);
!    pragma Inline (Scope_Depth);
!    pragma Inline (Scope_Depth_Set);
!    pragma Inline (Unknown_RM_Size);
  
  end Einfo;
--- 9775,9788 ----
     pragma Inline (Set_Was_Hidden);
     pragma Inline (Set_Wrapped_Entity);
  
!    pragma Inline (Init_Alignment);
!    pragma Inline (Init_Component_Bit_Offset);
!    pragma Inline (Init_Component_Size);
!    pragma Inline (Init_Digits_Value);
!    pragma Inline (Init_Esize);
!    pragma Inline (Init_Normalized_First_Bit);
!    pragma Inline (Init_Normalized_Position);
!    pragma Inline (Init_Normalized_Position_Max);
!    pragma Inline (Init_RM_Size);
  
  end Einfo;
diff -Nrcpad gcc-10.3.0/gcc/ada/elists.adb gcc-11.1.0/gcc/ada/elists.adb
*** gcc-10.3.0/gcc/ada/elists.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/elists.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package body Elists is
*** 373,378 ****
--- 367,430 ----
        return Elists.Last;
     end New_Elmt_List;
  
+    -------------------
+    -- New_Elmt_List --
+    -------------------
+ 
+    function New_Elmt_List (Elmt1 : Node_Or_Entity_Id)
+      return Elist_Id
+    is
+       L : constant Elist_Id := New_Elmt_List;
+    begin
+       Append_Elmt (Elmt1, L);
+       return L;
+    end New_Elmt_List;
+ 
+    -------------------
+    -- New_Elmt_List --
+    -------------------
+ 
+    function New_Elmt_List
+      (Elmt1 : Node_Or_Entity_Id;
+       Elmt2 : Node_Or_Entity_Id) return Elist_Id
+    is
+       L : constant Elist_Id := New_Elmt_List (Elmt1);
+    begin
+       Append_Elmt (Elmt2, L);
+       return L;
+    end New_Elmt_List;
+ 
+    -------------------
+    -- New_Elmt_List --
+    -------------------
+ 
+    function New_Elmt_List
+      (Elmt1 : Node_Or_Entity_Id;
+       Elmt2 : Node_Or_Entity_Id;
+       Elmt3 : Node_Or_Entity_Id) return Elist_Id
+    is
+       L : constant Elist_Id := New_Elmt_List (Elmt1, Elmt2);
+    begin
+       Append_Elmt (Elmt3, L);
+       return L;
+    end New_Elmt_List;
+ 
+    -------------------
+    -- New_Elmt_List --
+    -------------------
+ 
+    function New_Elmt_List
+      (Elmt1 : Node_Or_Entity_Id;
+       Elmt2 : Node_Or_Entity_Id;
+       Elmt3 : Node_Or_Entity_Id;
+       Elmt4 : Node_Or_Entity_Id) return Elist_Id
+    is
+       L : constant Elist_Id := New_Elmt_List (Elmt1, Elmt2, Elmt3);
+    begin
+       Append_Elmt (Elmt4, L);
+       return L;
+    end New_Elmt_List;
+ 
     ---------------
     -- Next_Elmt --
     ---------------
*************** package body Elists is
*** 580,605 ****
        Elmts.Table (Elmt).Node := New_Node;
     end Replace_Elmt;
  
-    ---------------
-    -- Tree_Read --
-    ---------------
- 
-    procedure Tree_Read is
-    begin
-       Elists.Tree_Read;
-       Elmts.Tree_Read;
-    end Tree_Read;
- 
-    ----------------
-    -- Tree_Write --
-    ----------------
- 
-    procedure Tree_Write is
-    begin
-       Elists.Tree_Write;
-       Elmts.Tree_Write;
-    end Tree_Write;
- 
     ------------
     -- Unlock --
     ------------
--- 632,637 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/elists.ads gcc-11.1.0/gcc/ada/elists.ads
*** gcc-10.3.0/gcc/ada/elists.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/elists.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Elists is
*** 57,64 ****
  
     procedure Initialize;
     --  Initialize allocation of element list tables. Called at the start of
!    --  compiling each new main source file. Note that Initialize must not be
!    --  called if Tree_Read is used.
  
     procedure Lock;
     --  Lock tables used for element lists before calling backend
--- 51,57 ----
  
     procedure Initialize;
     --  Initialize allocation of element list tables. Called at the start of
!    --  compiling each new main source file.
  
     procedure Lock;
     --  Lock tables used for element lists before calling backend
*************** package Elists is
*** 66,80 ****
     procedure Unlock;
     --  Unlock list tables, in cases where the back end needs to modify them
  
-    procedure Tree_Read;
-    --  Initializes internal tables from current tree file using the relevant
-    --  Table.Tree_Read routines. Note that Initialize should not be called if
-    --  Tree_Read is used. Tree_Read includes all necessary initialization.
- 
-    procedure Tree_Write;
-    --  Writes out internal tables to current tree file using the relevant
-    --  Table.Tree_Write routines.
- 
     function Last_Elist_Id return Elist_Id;
     --  Returns Id of last allocated element list header
  
--- 59,64 ----
*************** package Elists is
*** 100,105 ****
--- 84,104 ----
     --  a field in some other node which points to an element list where the
     --  list is then subsequently filled in using Append calls.
  
+    function New_Elmt_List (Elmt1 : Node_Or_Entity_Id) return Elist_Id;
+    function New_Elmt_List
+      (Elmt1 : Node_Or_Entity_Id;
+       Elmt2 : Node_Or_Entity_Id) return Elist_Id;
+    function New_Elmt_List
+      (Elmt1 : Node_Or_Entity_Id;
+       Elmt2 : Node_Or_Entity_Id;
+       Elmt3 : Node_Or_Entity_Id) return Elist_Id;
+    function New_Elmt_List
+      (Elmt1 : Node_Or_Entity_Id;
+       Elmt2 : Node_Or_Entity_Id;
+       Elmt3 : Node_Or_Entity_Id;
+       Elmt4 : Node_Or_Entity_Id) return Elist_Id;
+    --  Create a new element list containing the given arguments.
+ 
     function First_Elmt (List : Elist_Id) return Elmt_Id;
     pragma Inline (First_Elmt);
     --  Obtains the first element of the given element list or, if the list has
diff -Nrcpad gcc-10.3.0/gcc/ada/elists.h gcc-11.1.0/gcc/ada/elists.h
*** gcc-10.3.0/gcc/ada/elists.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/elists.h	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2019, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2020, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/env.c gcc-11.1.0/gcc/ada/env.c
*** gcc-10.3.0/gcc/ada/env.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/env.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2005-2019, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2005-2020, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 68,85 ****
         envLib.h on VxWorks MILS and VxWorks 653.  */
      #include <vThreadsData.h>
      #include <envLib.h>
!   #elif (_WRS_VXWORKS_MAJOR <= 6)
!     #include <envLib.h>
!     /* In that mode the following symbol is not defined in any VxWorks
!        include files, prior to vxWorks 7, so we declare it as extern.  */
!     extern char** ppGlobalEnviron;
!   #elif (_WRS_VXWORKS_MAJOR >= 7)
!     /* This should work for kernel mode on VxWorks 7.x.  In 7.2 the tcb
!        is made private, so accessor functions must be used, in 7.0 it
!        is optional but there is no way to distinguish between 7.2
!        and 7.0 since the version.h header file was never updated.  */
      #include <envLib.h>
-     #include <taskLibCommon.h>
    #endif
  #endif
  
--- 68,76 ----
         envLib.h on VxWorks MILS and VxWorks 653.  */
      #include <vThreadsData.h>
      #include <envLib.h>
!   #else
!     /* Kernel mode */
      #include <envLib.h>
    #endif
  #endif
  
*************** __gnat_getenv (char *name, int *len, cha
*** 108,114 ****
  void
  __gnat_setenv (char *name, char *value)
  {
! #if (defined (__vxworks) && defined (__RTP__)) || defined (__APPLE__)
    setenv (name, value, 1);
  
  #else
--- 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
*************** __gnat_setenv (char *name, char *value)
*** 119,127 ****
  
    sprintf (expression, "%s=%s", name, value);
    putenv (expression);
! #if defined (__MINGW32__) || (defined (__vxworks) && ! defined (__RTP__))
!   /* On some systems like MacOS X and Windows, putenv is making a copy of the
!      expression string so we can free it after the call to putenv */
    free (expression);
  #endif
  #endif
--- 111,119 ----
  
    sprintf (expression, "%s=%s", name, value);
    putenv (expression);
! #if defined (__MINGW32__) || defined (__vxworks)
!   /* putenv for Windows and VxWorks 6 kernel modules makes a copy of the
!      expression string, so we need to free it after the call to putenv. */
    free (expression);
  #endif
  #endif
*************** __gnat_environ (void)
*** 144,160 ****
    extern char **environ;
    return environ;
  #else
!   #if defined (__RTP__) || defined (VTHREADS) || (_WRS_VXWORKS_MAJOR <= 6)
      return environ;
!   #elif (_WRS_VXWORKS_MAJOR >= 7)
!     char **task_environ;
! 
!     task_environ = envGet (taskIdSelf ());
! 
!     if (task_environ == NULL)
!        return ppGlobalEnviron;
!     else
!        return task_environ;
    #endif
  #endif
  }
--- 136,151 ----
    extern char **environ;
    return environ;
  #else
!   #if defined (__RTP__) || defined (VTHREADS)
      return environ;
!   #else
!     /* For VxWorks kernel modules use envGet to get the task's environment
!        (either the task's private environment if it has one or the global
!        environment otherwise). taskId parameter of 0 refers to the current
!        task (the VxWorks documentation says to use NULL but the compiler
!        complains that taskId is an int rather than a pointer. Internally,
!        VxWorks uses 0 as well). */
!     return envGet (0);
    #endif
  #endif
  }
*************** __gnat_environ (void)
*** 162,168 ****
  void __gnat_unsetenv (char *name)
  {
  #if defined (__hpux__) || defined (__sun__) \
!      || (defined (__vxworks) && ! defined (__RTP__)) \
       || defined (_AIX) || defined (__Lynx__)
  
    /* On Solaris and HP-UX there is no function to clear an environment
--- 153,160 ----
  void __gnat_unsetenv (char *name)
  {
  #if defined (__hpux__) || defined (__sun__) \
!      || (defined (__vxworks) && ! defined (__RTP__) \
!           && _WRS_VXWORKS_MAJOR <= 6) \
       || defined (_AIX) || defined (__Lynx__)
  
    /* On Solaris and HP-UX there is no function to clear an environment
*************** void __gnat_unsetenv (char *name)
*** 185,191 ****
       if (strlen (env[index]) > size) {
         if (strstr (env[index], name) == env[index] &&
  	   env[index][size] == '=') {
! #if defined (__vxworks) && ! defined (__RTP__)
           /* on Vxworks we are sure that the string has been allocated using
              malloc */
           free (env[index]);
--- 177,183 ----
       if (strlen (env[index]) > size) {
         if (strstr (env[index], name) == env[index] &&
  	   env[index][size] == '=') {
! #if defined (__vxworks)
           /* on Vxworks we are sure that the string has been allocated using
              malloc */
           free (env[index]);
*************** void __gnat_unsetenv (char *name)
*** 218,226 ****
  void __gnat_clearenv (void)
  {
  #if defined (__sun__) \
!   || (defined (__vxworks) && ! defined (__RTP__)) || defined (__Lynx__) \
    || defined (__PikeOS__)
!   /* On Solaris, VxWorks (not RTPs), and Lynx there is no system
       call to unset a variable or to clear the environment so set all
       the entries in the environ table to NULL (see comment in
       __gnat_unsetenv for more explanation). */
--- 210,219 ----
  void __gnat_clearenv (void)
  {
  #if defined (__sun__) \
!   || (defined (__vxworks) && !defined (__RTP__) && _WRS_VXWORKS_MAJOR <= 6) \
!   || defined (__Lynx__) \
    || defined (__PikeOS__)
!   /* On Solaris, VxWorks kernel pre 7, and Lynx there is no system
       call to unset a variable or to clear the environment so set all
       the entries in the environ table to NULL (see comment in
       __gnat_unsetenv for more explanation). */
*************** void __gnat_clearenv (void)
*** 232,238 ****
      index++;
    }
  #elif defined (__MINGW32__) || defined (__FreeBSD__) || defined (__APPLE__) \
!    || (defined (__vxworks) && defined (__RTP__)) || defined (__CYGWIN__) \
     || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__rtems__) \
     || defined (__DragonFly__) || defined (__DJGPP__)
    /* On Windows, FreeBSD and MacOS there is no function to clean all the
--- 225,232 ----
      index++;
    }
  #elif defined (__MINGW32__) || defined (__FreeBSD__) || defined (__APPLE__) \
!    || (defined (__vxworks) && defined (__RTP__) || _WRS_VXWORKS_MAJOR >= 7) \
!    || defined (__CYGWIN__) \
     || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__rtems__) \
     || defined (__DragonFly__) || defined (__DJGPP__)
    /* On Windows, FreeBSD and MacOS there is no function to clean all the
diff -Nrcpad gcc-10.3.0/gcc/ada/env.h gcc-11.1.0/gcc/ada/env.h
*** gcc-10.3.0/gcc/ada/env.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/env.h	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 2009-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 2009-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/err_vars.ads gcc-11.1.0/gcc/ada/err_vars.ads
*** gcc-10.3.0/gcc/ada/err_vars.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/err_vars.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/errno.c gcc-11.1.0/gcc/ada/errno.c
*** gcc-10.3.0/gcc/ada/errno.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/errno.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 1992-2019, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 1992-2020, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/errout.adb gcc-11.1.0/gcc/ada/errout.adb
*** gcc-10.3.0/gcc/ada/errout.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/errout.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Errout is
*** 311,316 ****
--- 311,328 ----
     end Error_Msg;
  
     procedure Error_Msg
+       (Msg : String;
+        Flag_Location : Source_Ptr;
+        Is_Compile_Time_Pragma : Boolean)
+    is
+       Save_Is_Compile_Time_Msg : constant Boolean := Is_Compile_Time_Msg;
+    begin
+       Is_Compile_Time_Msg := Is_Compile_Time_Pragma;
+       Error_Msg (Msg, Flag_Location, Current_Node);
+       Is_Compile_Time_Msg := Save_Is_Compile_Time_Msg;
+    end Error_Msg;
+ 
+    procedure Error_Msg
       (Msg           : String;
        Flag_Location : Source_Ptr;
        N             : Node_Id)
*************** package body Errout is
*** 325,331 ****
     begin
        --  Return if all errors are to be ignored
  
!       if Errors_Must_Be_Ignored then
           return;
        end if;
  
--- 337,343 ----
     begin
        --  Return if all errors are to be ignored
  
!       if Get_Ignore_Errors then
           return;
        end if;
  
*************** package body Errout is
*** 600,605 ****
--- 612,636 ----
        end;
     end Error_Msg;
  
+    ----------------------------------
+    -- Error_Msg_Ada_2005_Extension --
+    ----------------------------------
+ 
+    procedure Error_Msg_Ada_2005_Extension (Extension : String) is
+       Loc : constant Source_Ptr := Token_Ptr;
+    begin
+       if Ada_Version < Ada_2005 then
+          Error_Msg (Extension & " is an Ada 2005 extension", Loc);
+ 
+          if No (Ada_Version_Pragma) then
+             Error_Msg ("\unit must be compiled with -gnat05 switch", Loc);
+          else
+             Error_Msg_Sloc := Sloc (Ada_Version_Pragma);
+             Error_Msg ("\incompatible with Ada version set#", Loc);
+          end if;
+       end if;
+    end Error_Msg_Ada_2005_Extension;
+ 
     --------------------------------
     -- Error_Msg_Ada_2012_Feature --
     --------------------------------
*************** package body Errout is
*** 618,623 ****
--- 649,672 ----
        end if;
     end Error_Msg_Ada_2012_Feature;
  
+    --------------------------------
+    -- Error_Msg_Ada_2020_Feature --
+    --------------------------------
+ 
+    procedure Error_Msg_Ada_2020_Feature (Feature : String; Loc : Source_Ptr) is
+    begin
+       if Ada_Version < Ada_2020 then
+          Error_Msg (Feature & " is an Ada 2020 feature", Loc);
+ 
+          if No (Ada_Version_Pragma) then
+             Error_Msg ("\unit must be compiled with -gnat2020 switch", Loc);
+          else
+             Error_Msg_Sloc := Sloc (Ada_Version_Pragma);
+             Error_Msg ("\incompatible with Ada version set#", Loc);
+          end if;
+       end if;
+    end Error_Msg_Ada_2020_Feature;
+ 
     ------------------
     -- Error_Msg_AP --
     ------------------
*************** package body Errout is
*** 1084,1108 ****
        --  Here we build a new error object
  
        Errors.Append
!         ((Text     => new String'(Msg_Buffer (1 .. Msglen)),
!           Next     => No_Error_Msg,
!           Prev     => No_Error_Msg,
!           Sptr     => Sptr,
!           Optr     => Optr,
!           Sfile    => Get_Source_File_Index (Sptr),
!           Line     => Get_Physical_Line_Number (Sptr),
!           Col      => Get_Column_Number (Sptr),
!           Warn     => Is_Warning_Msg,
!           Info     => Is_Info_Msg,
!           Check    => Is_Check_Msg,
!           Warn_Err => False, -- reset below
!           Warn_Chr => Warning_Msg_Char,
!           Style    => Is_Style_Msg,
!           Serious  => Is_Serious_Error,
!           Uncond   => Is_Unconditional_Msg,
!           Msg_Cont => Continuation,
!           Deleted  => False,
!           Node     => Node));
        Cur_Msg := Errors.Last;
  
        --  Test if warning to be treated as error
--- 1133,1160 ----
        --  Here we build a new error object
  
        Errors.Append
!         ((Text                => new String'(Msg_Buffer (1 .. Msglen)),
!           Next                => No_Error_Msg,
!           Prev                => No_Error_Msg,
!           Sptr                => Sptr,
!           Optr                => Optr,
!           Insertion_Sloc      => (if Has_Insertion_Line then Error_Msg_Sloc
!                                   else No_Location),
!           Sfile               => Get_Source_File_Index (Sptr),
!           Line                => Get_Physical_Line_Number (Sptr),
!           Col                 => Get_Column_Number (Sptr),
!           Compile_Time_Pragma => Is_Compile_Time_Msg,
!           Warn                => Is_Warning_Msg,
!           Info                => Is_Info_Msg,
!           Check               => Is_Check_Msg,
!           Warn_Err            => False, -- reset below
!           Warn_Chr            => Warning_Msg_Char,
!           Style               => Is_Style_Msg,
!           Serious             => Is_Serious_Error,
!           Uncond              => Is_Unconditional_Msg,
!           Msg_Cont            => Continuation,
!           Deleted             => False,
!           Node                => Node));
        Cur_Msg := Errors.Last;
  
        --  Test if warning to be treated as error
*************** package body Errout is
*** 1397,1403 ****
           Last_Killed := True;
        end if;
  
!       Set_Posted (N);
     end Error_Msg_NEL;
  
     ------------------
--- 1449,1457 ----
           Last_Killed := True;
        end if;
  
!       if not Get_Ignore_Errors then
!          Set_Posted (N);
!       end if;
     end Error_Msg_NEL;
  
     ------------------
*************** package body Errout is
*** 1792,1799 ****
     ---------------------
  
     procedure Output_Messages is
!       E        : Error_Msg_Id;
!       Err_Flag : Boolean;
  
        procedure Write_Error_Summary;
        --  Write error summary
--- 1846,1853 ----
     ---------------------
  
     procedure Output_Messages is
! 
!       --  Local subprograms
  
        procedure Write_Error_Summary;
        --  Write error summary
*************** package body Errout is
*** 1804,1809 ****
--- 1858,1871 ----
        procedure Write_Max_Errors;
        --  Write message if max errors reached
  
+       procedure Write_Source_Code_Line (Loc : Source_Ptr);
+       --  Write the source code line corresponding to Loc, as follows:
+       --
+       --  line |  actual code line here with Loc somewhere
+       --       |                             ^ here
+       --
+       --  where the carret on the last line points to location Loc.
+ 
        -------------------------
        -- Write_Error_Summary --
        -------------------------
*************** package body Errout is
*** 1857,1886 ****
              Write_Str (" errors");
           end if;
  
!          if Warnings_Detected - Warning_Info_Messages /= 0 then
!             Write_Str (", ");
!             Write_Int (Warnings_Detected);
!             Write_Str (" warning");
  
!             if Warnings_Detected - Warning_Info_Messages /= 1 then
!                Write_Char ('s');
!             end if;
  
!             if Warning_Mode = Treat_As_Error then
!                Write_Str (" (treated as error");
  
!                if Warnings_Detected /= 1 then
                    Write_Char ('s');
                 end if;
  
!                Write_Char (')');
  
!             elsif Warnings_Treated_As_Errors /= 0 then
!                Write_Str (" (");
!                Write_Int (Warnings_Treated_As_Errors);
!                Write_Str (" treated as errors)");
              end if;
!          end if;
  
           if Warning_Info_Messages + Report_Info_Messages /= 0 then
              Write_Str (", ");
--- 1919,1995 ----
              Write_Str (" errors");
           end if;
  
!          --  We now need to output warnings. When using -gnatwe, all warnings
!          --  should be treated as errors, except for warnings originating from
!          --  the use of the Compile_Time_Warning pragma. Another situation
!          --  where a warning might be treated as an error is when the source
!          --  code contains a Warning_As_Error pragma.
!          --  When warnings are treated as errors, we still log them as
!          --  warnings, but we add a message denoting how many of these warnings
!          --  are also errors.
  
!          declare
!             Warnings_Count : constant Int :=
!                Warnings_Detected - Warning_Info_Messages;
  
!             Compile_Time_Warnings : Int;
!             --  Number of warnings that come from a Compile_Time_Warning
!             --  pragma.
  
!             Non_Compile_Time_Warnings : Int;
!             --  Number of warnings that do not come from a Compile_Time_Warning
!             --  pragmas.
! 
!          begin
!             if Warnings_Count > 0 then
!                Write_Str (", ");
!                Write_Int (Warnings_Count);
!                Write_Str (" warning");
! 
!                if Warnings_Count > 1 then
                    Write_Char ('s');
                 end if;
  
!                Compile_Time_Warnings := Count_Compile_Time_Pragma_Warnings;
!                Non_Compile_Time_Warnings :=
!                   Warnings_Count - Compile_Time_Warnings;
  
!                if Warning_Mode = Treat_As_Error
!                  and then Non_Compile_Time_Warnings > 0
!                then
!                   Write_Str (" (");
! 
!                   if Compile_Time_Warnings > 0 then
!                      Write_Int (Non_Compile_Time_Warnings);
!                      Write_Str (" ");
!                   end if;
! 
!                   Write_Str ("treated as error");
! 
!                   if Non_Compile_Time_Warnings > 1 then
!                      Write_Char ('s');
!                   end if;
! 
!                   Write_Char (')');
! 
!                elsif Warnings_Treated_As_Errors > 0 then
!                   Write_Str (" (");
! 
!                   if Warnings_Treated_As_Errors /= Warnings_Count then
!                      Write_Int (Warnings_Treated_As_Errors);
!                      Write_Str (" ");
!                   end if;
! 
!                   Write_Str ("treated as error");
! 
!                   if Warnings_Treated_As_Errors > 1 then
!                      Write_Str ("s");
!                   end if;
! 
!                   Write_Str (")");
!                end if;
              end if;
!          end;
  
           if Warning_Info_Messages + Report_Info_Messages /= 0 then
              Write_Str (", ");
*************** package body Errout is
*** 1947,1952 ****
--- 2056,2138 ----
           end if;
        end Write_Max_Errors;
  
+       ----------------------------
+       -- Write_Source_Code_Line --
+       ----------------------------
+ 
+       procedure Write_Source_Code_Line (Loc : Source_Ptr) is
+ 
+          function Image (X : Positive; Width : Positive) return String;
+          --  Output number X over Width characters, with whitespace padding.
+          --  Only output the low-order Width digits of X, if X is larger than
+          --  Width digits.
+ 
+          -----------
+          -- Image --
+          -----------
+ 
+          function Image (X : Positive; Width : Positive) return String is
+             Str  : String (1 .. Width);
+             Curr : Natural := X;
+          begin
+             for J in reverse 1 .. Width loop
+                if Curr > 0 then
+                   Str (J) := Character'Val (Character'Pos ('0') + Curr mod 10);
+                   Curr := Curr / 10;
+                else
+                   Str (J) := ' ';
+                end if;
+             end loop;
+ 
+             return Str;
+          end Image;
+ 
+          --  Local variables
+ 
+          Line    : constant Pos     := Pos (Get_Physical_Line_Number (Loc));
+          Col     : constant Natural := Natural (Get_Column_Number (Loc));
+          Width   : constant         := 5;
+ 
+          Buf     : Source_Buffer_Ptr;
+          Cur_Loc : Source_Ptr := Loc;
+ 
+       --  Start of processing for Write_Source_Code_Line
+ 
+       begin
+          if Loc >= First_Source_Ptr then
+             Buf := Source_Text (Get_Source_File_Index (Loc));
+ 
+             --  First line with the actual source code line
+ 
+             Write_Str (Image (Positive (Line), Width => Width));
+             Write_Str (" |");
+             Write_Str (String (Buf (Loc - Source_Ptr (Col) + 1  .. Loc - 1)));
+ 
+             while Cur_Loc <= Buf'Last
+               and then Buf (Cur_Loc) /= ASCII.LF
+             loop
+                Write_Char (Buf (Cur_Loc));
+                Cur_Loc := Cur_Loc + 1;
+             end loop;
+ 
+             Write_Eol;
+ 
+             --  Second line with carret sign pointing to location Loc
+ 
+             Write_Str (String'(1 .. Width => ' '));
+             Write_Str (" |");
+             Write_Str (String'(1 .. Col - 1 => ' '));
+             Write_Str ("^ here");
+             Write_Eol;
+          end if;
+       end Write_Source_Code_Line;
+ 
+       --  Local variables
+ 
+       E          : Error_Msg_Id;
+       Err_Flag   : Boolean;
+       Use_Prefix : Boolean;
+ 
     --  Start of processing for Output_Messages
  
     begin
*************** package body Errout is
*** 1973,1999 ****
  
           E := First_Error_Msg;
           while E /= No_Error_Msg loop
              if not Errors.Table (E).Deleted and then not Debug_Flag_KK then
!                if Full_Path_Name_For_Brief_Errors then
!                   Write_Name (Full_Ref_Name (Errors.Table (E).Sfile));
!                else
!                   Write_Name (Reference_Name (Errors.Table (E).Sfile));
                 end if;
  
!                Write_Char (':');
!                Write_Int (Int (Physical_To_Logical
!                                 (Errors.Table (E).Line,
!                                  Errors.Table (E).Sfile)));
!                Write_Char (':');
  
!                if Errors.Table (E).Col < 10 then
!                   Write_Char ('0');
                 end if;
  
-                Write_Int (Int (Errors.Table (E).Col));
-                Write_Str (": ");
                 Output_Msg_Text (E);
                 Write_Eol;
              end if;
  
              E := Errors.Table (E).Next;
--- 2159,2230 ----
  
           E := First_Error_Msg;
           while E /= No_Error_Msg loop
+ 
+             --  If -gnatdF is used, separate main messages from previous
+             --  messages with a newline (unless it is an info message) and
+             --  make continuation messages follow the main message with only
+             --  an indentation of two space characters, without repeating
+             --  file:line:col: prefix.
+ 
+             Use_Prefix :=
+               not (Debug_Flag_FF and then Errors.Table (E).Msg_Cont);
+ 
              if not Errors.Table (E).Deleted and then not Debug_Flag_KK then
! 
!                if Debug_Flag_FF then
!                   if Errors.Table (E).Msg_Cont then
!                      Write_Str ("  ");
!                   elsif not Errors.Table (E).Info then
!                      Write_Eol;
!                   end if;
                 end if;
  
!                if Use_Prefix then
!                   if Full_Path_Name_For_Brief_Errors then
!                      Write_Name (Full_Ref_Name (Errors.Table (E).Sfile));
!                   else
!                      Write_Name (Reference_Name (Errors.Table (E).Sfile));
!                   end if;
  
!                   Write_Char (':');
!                   Write_Int (Int (Physical_To_Logical
!                              (Errors.Table (E).Line,
!                                 Errors.Table (E).Sfile)));
!                   Write_Char (':');
! 
!                   if Errors.Table (E).Col < 10 then
!                      Write_Char ('0');
!                   end if;
! 
!                   Write_Int (Int (Errors.Table (E).Col));
!                   Write_Str (": ");
                 end if;
  
                 Output_Msg_Text (E);
                 Write_Eol;
+ 
+                --  If -gnatdF is used, write the source code line corresponding
+                --  to the location of the main message (unless it is an info
+                --  message). Also write the source code line corresponding to
+                --  an insertion location inside continuation messages.
+ 
+                if Debug_Flag_FF
+                  and then not Errors.Table (E).Info
+                then
+                   if Errors.Table (E).Msg_Cont then
+                      declare
+                         Loc : constant Source_Ptr :=
+                           Errors.Table (E).Insertion_Sloc;
+                      begin
+                         if Loc /= No_Location then
+                            Write_Source_Code_Line (Loc);
+                         end if;
+                      end;
+ 
+                   else
+                      Write_Source_Code_Line (Errors.Table (E).Sptr);
+                   end if;
+                end if;
              end if;
  
              E := Errors.Table (E).Next;
*************** package body Errout is
*** 2195,2203 ****
        --  must not be treated as errors when -gnatwe is in effect.
  
        if Warning_Mode = Treat_As_Error then
!          Total_Errors_Detected :=
!            Total_Errors_Detected + Warnings_Detected - Warning_Info_Messages;
!          Warnings_Detected := Warning_Info_Messages;
        end if;
     end Output_Messages;
  
--- 2426,2440 ----
        --  must not be treated as errors when -gnatwe is in effect.
  
        if Warning_Mode = Treat_As_Error then
!          declare
!             Compile_Time_Pragma_Warnings : constant Int :=
!                Count_Compile_Time_Pragma_Warnings;
!          begin
!             Total_Errors_Detected := Total_Errors_Detected + Warnings_Detected
!                - Warning_Info_Messages - Compile_Time_Pragma_Warnings;
!             Warnings_Detected :=
!                Warning_Info_Messages + Compile_Time_Pragma_Warnings;
!          end;
        end if;
     end Output_Messages;
  
*************** package body Errout is
*** 3227,3237 ****
              exit when Nkind (P) not in N_Subexpr;
           end loop;
  
!          if Nkind_In (P, N_Pragma_Argument_Association,
!                          N_Component_Association,
!                          N_Discriminant_Association,
!                          N_Generic_Association,
!                          N_Parameter_Association)
           then
              Set_Error_Posted (Parent (P));
           end if;
--- 3464,3474 ----
              exit when Nkind (P) not in N_Subexpr;
           end loop;
  
!          if Nkind (P) in N_Pragma_Argument_Association
!                        | N_Component_Association
!                        | N_Discriminant_Association
!                        | N_Generic_Association
!                        | N_Parameter_Association
           then
              Set_Error_Posted (Parent (P));
           end if;
diff -Nrcpad gcc-10.3.0/gcc/ada/errout.ads gcc-11.1.0/gcc/ada/errout.ads
*** gcc-10.3.0/gcc/ada/errout.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/errout.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Errout is
*** 112,119 ****
     --        already placed an error (not warning) message at that location,
     --        then we assume this is cascaded junk and delete the message.
  
!    --  This normal suppression action may be overridden in cases 2-5 (but not
!    --  in case 1 or 7 by setting All_Errors mode, or by setting the special
     --  unconditional message insertion character (!) as described below.
  
     ---------------------------------------------------------
--- 112,119 ----
     --        already placed an error (not warning) message at that location,
     --        then we assume this is cascaded junk and delete the message.
  
!    --  This normal suppression action may be overridden in cases 2-5 (but
!    --  not in case 1 or 7) by setting All_Errors mode, or by setting the
     --  unconditional message insertion character (!) as described below.
  
     ---------------------------------------------------------
*************** package Errout is
*** 381,392 ****
     --      continuations are being gathered into a single message.
  
     --    Insertion character | (Vertical bar: non-serious error)
!    --      By default, error messages (other than warning messages) are
!    --      considered to be fatal error messages which prevent expansion or
!    --      generation of code in the presence of the -gnatQ switch. If the
!    --      insertion character | appears, the message is considered to be
!    --      non-serious, and does not cause Serious_Errors_Detected to be
!    --      incremented (so expansion is not prevented by such a msg). This
     --      insertion character is ignored in continuation messages.
  
     --    Insertion character ~ (Tilde: insert string)
--- 381,391 ----
     --      continuations are being gathered into a single message.
  
     --    Insertion character | (Vertical bar: non-serious error)
!    --      By default, error messages (but not warning messages) are considered
!    --      to be fatal error messages, which prevent expansion and generation
!    --      of code. If the insertion character | appears, the message is
!    --      considered to be nonserious, and Serious_Errors_Detected is not
!    --      incremented, so expansion is not prevented by such a msg. This
     --      insertion character is ignored in continuation messages.
  
     --    Insertion character ~ (Tilde: insert string)
*************** package Errout is
*** 453,458 ****
--- 452,466 ----
     --  Note that is mandatory that the caller ensure that global variables
     --  are set before the Error_Msg call, otherwise the result is undefined.
  
+    --  Also note that calls to Error_Msg and its variants destroy the value of
+    --  these global variables, as a way to support the inclusion of multiple
+    --  insertion characters of the same type. For example, support for
+    --  multiple characters % for a name in the message (up to 3) is
+    --  implemented by unconditionally shifting the value for Error_Msg_Nam_2
+    --  to Error_Msg_Nam_1 and from Error_Msg_Nam_3 to Error_Msg_Nam_2 after
+    --  dealing with insertion character %. The caller should ensure that all
+    --  global variables are restored if needed prior to calling Error_Msg.
+ 
     Error_Msg_Col : Column_Number renames Err_Vars.Error_Msg_Col;
     --  Column for @ insertion character in message
  
*************** package Errout is
*** 700,705 ****
--- 708,721 ----
     --  or the semantic analyzer. If N is set, points to the relevant node for
     --  this message.
  
+    procedure Error_Msg
+      (Msg                    : String;
+       Flag_Location          : Source_Ptr;
+       Is_Compile_Time_Pragma : Boolean);
+    --  Same as Error_Msg (String, Source_Ptr) except Is_Compile_Time_Pragma
+    --  lets the caller specify whether this is a Compile_Time_Warning or
+    --  Compile_Time_Error pragma.
+ 
     procedure Error_Msg_S (Msg : String);
     --  Output a message at current scan pointer location. This routine can be
     --  called only from the parser, since it references Scan_Ptr.
*************** package Errout is
*** 886,898 ****
     --  overridden interface primitive Iface_Prim) indicating wrong mode of the
     --  first formal (RM 9.4(11.9/3)).
  
     procedure Error_Msg_Ada_2012_Feature (Feature : String; Loc : Source_Ptr);
!    --  If not operating in Ada 2012 mode, posts errors complaining that Feature
!    --  is only supported in Ada 2012, with appropriate suggestions to fix this.
!    --  Loc is the location at which the flag is to be posted. Feature, which
!    --  appears at the start of the first generated message, may contain error
!    --  message insertion characters in the normal manner, and in particular
!    --  may start with | to flag a non-serious error.
  
     procedure dmsg (Id : Error_Msg_Id) renames Erroutc.dmsg;
     --  Debugging routine to dump an error message
--- 902,922 ----
     --  overridden interface primitive Iface_Prim) indicating wrong mode of the
     --  first formal (RM 9.4(11.9/3)).
  
+    procedure Error_Msg_Ada_2005_Extension (Extension : String);
+    --  Analogous to Error_Msg_Ada_2012_Feature, but phrase the message using
+    --  "extension" and not "feature". This routine is only used in the parser,
+    --  so the error is always placed at the Token_Ptr.
+ 
     procedure Error_Msg_Ada_2012_Feature (Feature : String; Loc : Source_Ptr);
!    --  If not operating in Ada 2012 mode or higher, posts errors complaining
!    --  that Feature is only supported in Ada 2012, with appropriate suggestions
!    --  to fix this. Loc is the location at which the flag is to be posted.
!    --  Feature, which appears at the start of the first generated message, may
!    --  contain error message insertion characters in the normal manner, and in
!    --  particular may start with | to flag a non-serious error.
! 
!    procedure Error_Msg_Ada_2020_Feature (Feature : String; Loc : Source_Ptr);
!    --  Analogous to Error_Msg_Ada_2012_Feature
  
     procedure dmsg (Id : Error_Msg_Id) renames Erroutc.dmsg;
     --  Debugging routine to dump an error message
diff -Nrcpad gcc-10.3.0/gcc/ada/erroutc.adb gcc-11.1.0/gcc/ada/erroutc.adb
*** gcc-10.3.0/gcc/ada/erroutc.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/erroutc.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Erroutc is
*** 52,58 ****
     -----------------------
  
     function Matches (S : String; P : String) return Boolean;
!    --  Returns true if the String S patches the pattern P, which can contain
     --  wildcard chars (*). The entire pattern must match the entire string.
     --  Case is ignored in the comparison (so X matches x).
  
--- 52,58 ----
     -----------------------
  
     function Matches (S : String; P : String) return Boolean;
!    --  Returns true if the String S matches the pattern P, which can contain
     --  wildcard chars (*). The entire pattern must match the entire string.
     --  Case is ignored in the comparison (so X matches x).
  
*************** package body Erroutc is
*** 249,262 ****
     ------------------------
  
     function Compilation_Errors return Boolean is
     begin
!       return
!         Total_Errors_Detected /= 0
!           or else (Warnings_Detected - Warning_Info_Messages /= 0
!                     and then Warning_Mode = Treat_As_Error)
!           or else Warnings_Treated_As_Errors /= 0;
     end Compilation_Errors;
  
     ------------------
     -- Debug_Output --
     ------------------
--- 249,296 ----
     ------------------------
  
     function Compilation_Errors return Boolean is
+       Warnings_Count : constant Int
+          := Warnings_Detected - Warning_Info_Messages;
     begin
!       if Total_Errors_Detected /= 0 then
!          return True;
! 
!       elsif Warnings_Treated_As_Errors /= 0 then
!          return True;
! 
!       --  We should never treat warnings that originate from a
!       --  Compile_Time_Warning pragma as an error. Warnings_Count is the sum
!       --  of both "normal" and Compile_Time_Warning warnings. This means that
!       --  there are only one or more non-Compile_Time_Warning warnings when
!       --  Warnings_Count is greater than Count_Compile_Time_Pragma_Warnings.
! 
!       elsif Warning_Mode = Treat_As_Error
!          and then Warnings_Count > Count_Compile_Time_Pragma_Warnings
!       then
!          return True;
!       end if;
! 
!       return False;
     end Compilation_Errors;
  
+    ----------------------------------------
+    -- Count_Compile_Time_Pragma_Warnings  --
+    ----------------------------------------
+ 
+    function Count_Compile_Time_Pragma_Warnings return Int is
+       Result : Int := 0;
+    begin
+       for J in 1 .. Errors.Last loop
+          begin
+             if Errors.Table (J).Warn and Errors.Table (J).Compile_Time_Pragma
+             then
+                Result := Result + 1;
+             end if;
+          end;
+       end loop;
+       return Result;
+    end Count_Compile_Time_Pragma_Warnings;
+ 
     ------------------
     -- Debug_Output --
     ------------------
*************** package body Erroutc is
*** 375,391 ****
           if PPtr = PLast and then P (PPtr) = '*' then
              return True;
  
!             --  Return True if both pattern and string exhausted
  
           elsif PPtr > PLast and then SPtr > Slast then
              return True;
  
!             --  Return False, if one exhausted and not the other
  
           elsif PPtr > PLast or else SPtr > Slast then
              return False;
  
!             --  Case where pattern starts with asterisk
  
           elsif P (PPtr) = '*' then
  
--- 409,425 ----
           if PPtr = PLast and then P (PPtr) = '*' then
              return True;
  
!          --  Return True if both pattern and string exhausted
  
           elsif PPtr > PLast and then SPtr > Slast then
              return True;
  
!          --  Return False, if one exhausted and not the other
  
           elsif PPtr > PLast or else SPtr > Slast then
              return False;
  
!          --  Case where pattern starts with asterisk
  
           elsif P (PPtr) = '*' then
  
*************** package body Erroutc is
*** 401,413 ****
  
              return False;
  
!             --  Dealt with end of string and *, advance if we have a match
  
           elsif Fold_Lower (S (SPtr)) = Fold_Lower (P (PPtr)) then
              SPtr := SPtr + 1;
              PPtr := PPtr + 1;
  
!             --  If first characters do not match, that's decisive
  
           else
              return False;
--- 435,447 ----
  
              return False;
  
!          --  Dealt with end of string and *, advance if we have a match
  
           elsif Fold_Lower (S (SPtr)) = Fold_Lower (P (PPtr)) then
              SPtr := SPtr + 1;
              PPtr := PPtr + 1;
  
!          --  If first characters do not match, that's decisive
  
           else
              return False;
*************** package body Erroutc is
*** 655,663 ****
           Txt := Text;
        end if;
  
        --  For info messages, prefix message with "info: "
  
!       if E_Msg.Info then
           Txt := new String'("info: " & Txt.all);
  
        --  Warning treated as error
--- 689,704 ----
           Txt := Text;
        end if;
  
+       --  If -gnatdF is used, continuation messages follow the main message
+       --  with only an indentation of two space characters, without repeating
+       --  any prefix.
+ 
+       if Debug_Flag_FF and then E_Msg.Msg_Cont then
+          null;
+ 
        --  For info messages, prefix message with "info: "
  
!       elsif E_Msg.Info then
           Txt := new String'("info: " & Txt.all);
  
        --  Warning treated as error
*************** package body Erroutc is
*** 773,809 ****
        J : Natural;
  
     begin
!       --  Nothing to do for continuation line
  
!       if Msg (Msg'First) = '\' then
           return;
-       end if;
  
!       --  Set initial values of globals (may be changed during scan)
  
!       Is_Serious_Error     := True;
!       Is_Unconditional_Msg := False;
!       Is_Warning_Msg       := False;
!       Has_Double_Exclam    := False;
  
!       --  Check style message
  
!       Is_Style_Msg :=
!         Msg'Length > 7 and then Msg (Msg'First .. Msg'First + 6) = "(style)";
  
!       --  Check info message
  
!       Is_Info_Msg :=
!         Msg'Length > 6 and then Msg (Msg'First .. Msg'First + 5) = "info: ";
  
!       --  Check check message
  
!       Is_Check_Msg :=
!         (Msg'Length > 8 and then Msg (Msg'First .. Msg'First + 7) = "medium: ")
!         or else
!           (Msg'Length > 6 and then Msg (Msg'First .. Msg'First + 5) = "high: ")
!         or else
!           (Msg'Length > 5 and then Msg (Msg'First .. Msg'First + 4) = "low: ");
  
        --  Loop through message looking for relevant insertion sequences
  
--- 814,862 ----
        J : Natural;
  
     begin
!       --  Nothing to do for continuation line, unless -gnatdF is set
  
!       if not Debug_Flag_FF and then Msg (Msg'First) = '\' then
           return;
  
!       --  Some global variables are not set for continuation messages, as they
!       --  only make sense for the initial mesage.
  
!       elsif Msg (Msg'First) /= '\' then
  
!          --  Set initial values of globals (may be changed during scan)
  
!          Is_Serious_Error     := True;
!          Is_Unconditional_Msg := False;
!          Is_Warning_Msg       := False;
  
!          --  Check style message
  
!          Is_Style_Msg :=
!            Msg'Length > 7
!              and then Msg (Msg'First .. Msg'First + 6) = "(style)";
  
!          --  Check info message
  
!          Is_Info_Msg :=
!            Msg'Length > 6
!              and then Msg (Msg'First .. Msg'First + 5) = "info: ";
! 
!          --  Check check message
! 
!          Is_Check_Msg :=
!            (Msg'Length > 8
!              and then Msg (Msg'First .. Msg'First + 7) = "medium: ")
!            or else
!            (Msg'Length > 6
!              and then Msg (Msg'First .. Msg'First + 5) = "high: ")
!            or else
!            (Msg'Length > 5
!              and then Msg (Msg'First .. Msg'First + 4) = "low: ");
!       end if;
! 
!       Has_Double_Exclam  := False;
!       Has_Insertion_Line := False;
  
        --  Loop through message looking for relevant insertion sequences
  
*************** package body Erroutc is
*** 862,867 ****
--- 915,926 ----
                 J := J + 1;
              end if;
  
+          --  Insertion line (# insertion)
+ 
+          elsif Msg (J) = '#' then
+             Has_Insertion_Line := True;
+             J := J + 1;
+ 
           --  Non-serious error (| insertion)
  
           elsif Msg (J) = '|' then
diff -Nrcpad gcc-10.3.0/gcc/ada/erroutc.ads gcc-11.1.0/gcc/ada/erroutc.ads
*** gcc-10.3.0/gcc/ada/erroutc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/erroutc.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Erroutc is
*** 51,56 ****
--- 51,64 ----
     --  Set true to indicate that the current message contains the insertion
     --  sequence !! (force warnings even in non-main unit source files).
  
+    Has_Insertion_Line : Boolean := False;
+    --  Set True to indicate that the current message contains the insertion
+    --  character # (insert line number reference).
+ 
+    Is_Compile_Time_Msg : Boolean := False;
+    --  Set true to indicate that the current message originates from a
+    --  Compile_Time_Warning or Compile_Time_Error pragma.
+ 
     Is_Serious_Error : Boolean := False;
     --  Set True for a serious error (i.e. any message that is not a warning
     --  or style message, and that does not contain a | insertion character).
*************** package Erroutc is
*** 205,216 ****
--- 213,231 ----
        --  instantiation copy corresponding to the instantiation referenced by
        --  Sptr).
  
+       Insertion_Sloc : Source_Ptr;
+       --  Location in message for insertion character # when used
+ 
        Line : Physical_Line_Number;
        --  Line number for error message
  
        Col : Column_Number;
        --  Column number for error message
  
+       Compile_Time_Pragma : Boolean;
+       --  True if the message originates from a Compile_Time_Warning or
+       --  Compile_Time_Error pragma
+ 
        Warn : Boolean;
        --  True if warning message
  
*************** package Erroutc is
*** 413,418 ****
--- 428,437 ----
     --  redundant. If so, the message to be deleted and all its continuations
     --  are marked with the Deleted flag set to True.
  
+    function Count_Compile_Time_Pragma_Warnings return Int;
+    --  Returns the number of warnings in the Errors table that were triggered
+    --  by a Compile_Time_Warning pragma.
+ 
     function Get_Warning_Tag (Id : Error_Msg_Id) return String;
     --  Given an error message ID, return tag showing warning message class, or
     --  the null string if this option is not enabled or this is not a warning.
*************** package Erroutc is
*** 458,468 ****
     --    Has_Double_Exclam is set True if the message contains the sequence !!
     --    and is otherwise set False.
     --
     --  We need to know right away these aspects of a message, since we will
     --  test these values before doing the full error scan.
     --
     --  Note that the call has no effect for continuation messages (those whose
!    --  first character is '\'), and all variables are left unchanged.
  
     procedure Purge_Messages (From : Source_Ptr; To : Source_Ptr);
     --  All error messages whose location is in the range From .. To (not
--- 477,491 ----
     --    Has_Double_Exclam is set True if the message contains the sequence !!
     --    and is otherwise set False.
     --
+    --    Has_Insertion_Line is set True if the message contains the character #
+    --    and is otherwise set False.
+    --
     --  We need to know right away these aspects of a message, since we will
     --  test these values before doing the full error scan.
     --
     --  Note that the call has no effect for continuation messages (those whose
!    --  first character is '\'), and all variables are left unchanged, unless
!    --  -gnatdF is set.
  
     procedure Purge_Messages (From : Source_Ptr; To : Source_Ptr);
     --  All error messages whose location is in the range From .. To (not
diff -Nrcpad gcc-10.3.0/gcc/ada/errutil.adb gcc-11.1.0/gcc/ada/errutil.adb
*** gcc-10.3.0/gcc/ada/errutil.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/errutil.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1991-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1991-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Errutil is
*** 203,227 ****
  
        Errors.Append
          (New_Val =>
!            (Text     => new String'(Msg_Buffer (1 .. Msglen)),
!             Next     => No_Error_Msg,
!             Prev     => No_Error_Msg,
!             Sfile    => Get_Source_File_Index (Sptr),
!             Sptr     => Sptr,
!             Optr     => Optr,
!             Line     => Get_Physical_Line_Number (Sptr),
!             Col      => Get_Column_Number (Sptr),
!             Warn     => Is_Warning_Msg,
!             Info     => Is_Info_Msg,
!             Check    => Is_Check_Msg,
!             Warn_Err => Warning_Mode = Treat_As_Error,
!             Warn_Chr => Warning_Msg_Char,
!             Style    => Is_Style_Msg,
!             Serious  => Is_Serious_Error,
!             Uncond   => Is_Unconditional_Msg,
!             Msg_Cont => Continuation,
!             Deleted  => False,
!             Node     => Empty));
  
        Cur_Msg  := Errors.Last;
        Prev_Msg := No_Error_Msg;
--- 203,229 ----
  
        Errors.Append
          (New_Val =>
!            (Text                => new String'(Msg_Buffer (1 .. Msglen)),
!             Next                => No_Error_Msg,
!             Prev                => No_Error_Msg,
!             Sfile               => Get_Source_File_Index (Sptr),
!             Sptr                => Sptr,
!             Optr                => Optr,
!             Insertion_Sloc      => No_Location,
!             Line                => Get_Physical_Line_Number (Sptr),
!             Col                 => Get_Column_Number (Sptr),
!             Compile_Time_Pragma => Is_Compile_Time_Msg,
!             Warn                => Is_Warning_Msg,
!             Info                => Is_Info_Msg,
!             Check               => Is_Check_Msg,
!             Warn_Err            => Warning_Mode = Treat_As_Error,
!             Warn_Chr            => Warning_Msg_Char,
!             Style               => Is_Style_Msg,
!             Serious             => Is_Serious_Error,
!             Uncond              => Is_Unconditional_Msg,
!             Msg_Cont            => Continuation,
!             Deleted             => False,
!             Node                => Empty));
  
        Cur_Msg  := Errors.Last;
        Prev_Msg := No_Error_Msg;
diff -Nrcpad gcc-10.3.0/gcc/ada/errutil.ads gcc-11.1.0/gcc/ada/errutil.ads
*** gcc-10.3.0/gcc/ada/errutil.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/errutil.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,37 ****
  --  Err_Vars. Like Errout, it also uses the common variables and routines
  --  in package Erroutc.
  
! --  This package is used by the preprocessor (gprep.adb) and the project
! --  manager (prj-err.ads).
  
  with Styleg;
  with Types; use Types;
--- 30,36 ----
  --  Err_Vars. Like Errout, it also uses the common variables and routines
  --  in package Erroutc.
  
! --  This package is used by the preprocessor (gprep.adb).
  
  with Styleg;
  with Types; use Types;
diff -Nrcpad gcc-10.3.0/gcc/ada/eval_fat.adb gcc-11.1.0/gcc/ada/eval_fat.adb
*** gcc-10.3.0/gcc/ada/eval_fat.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/eval_fat.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/eval_fat.ads gcc-11.1.0/gcc/ada/eval_fat.ads
*** gcc-10.3.0/gcc/ada/eval_fat.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/eval_fat.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exit.c gcc-11.1.0/gcc/ada/exit.c
*** gcc-10.3.0/gcc/ada/exit.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exit.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_aggr.adb gcc-11.1.0/gcc/ada/exp_aggr.adb
*** gcc-10.3.0/gcc/ada/exp_aggr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_aggr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Aspects;  use Aspects;
  with Atree;    use Atree;
  with Checks;   use Checks;
  with Debug;    use Debug;
*************** with Sem;      use Sem;
*** 52,58 ****
--- 53,62 ----
  with Sem_Aggr; use Sem_Aggr;
  with Sem_Aux;  use Sem_Aux;
  with Sem_Ch3;  use Sem_Ch3;
+ with Sem_Ch8;  use Sem_Ch8;
+ with Sem_Ch13; use Sem_Ch13;
  with Sem_Eval; use Sem_Eval;
+ with Sem_Mech; use Sem_Mech;
  with Sem_Res;  use Sem_Res;
  with Sem_Util; use Sem_Util;
  with Sinfo;    use Sinfo;
*************** package body Exp_Aggr is
*** 85,90 ****
--- 89,100 ----
  
     procedure Expand_Delta_Array_Aggregate  (N : Node_Id; Deltas : List_Id);
     procedure Expand_Delta_Record_Aggregate (N : Node_Id; Deltas : List_Id);
+    procedure Expand_Container_Aggregate (N : Node_Id);
+ 
+    function Get_Base_Object (N : Node_Id) return Entity_Id;
+    --  Return the base object, i.e. the outermost prefix object, that N refers
+    --  to statically, or Empty if it cannot be determined. The assumption is
+    --  that all dereferences are explicit in the tree rooted at N.
  
     function Has_Default_Init_Comps (N : Node_Id) return Boolean;
     --  N is an aggregate (record or array). Checks the presence of default
*************** package body Exp_Aggr is
*** 217,223 ****
     --  defaults. An aggregate for a type with mutable components must be
     --  expanded into individual assignments.
  
!    function In_Place_Assign_OK (N : Node_Id) return Boolean;
     --  Predicate to determine whether an aggregate assignment can be done in
     --  place, because none of the new values can depend on the components of
     --  the target of the assignment.
--- 227,235 ----
     --  defaults. An aggregate for a type with mutable components must be
     --  expanded into individual assignments.
  
!    function In_Place_Assign_OK
!      (N             : Node_Id;
!       Target_Object : Entity_Id := Empty) return Boolean;
     --  Predicate to determine whether an aggregate assignment can be done in
     --  place, because none of the new values can depend on the components of
     --  the target of the assignment.
*************** package body Exp_Aggr is
*** 238,244 ****
     -- Local Subprograms for Array Aggregate Expansion --
     -----------------------------------------------------
  
!    function Aggr_Size_OK (N : Node_Id; Typ : Entity_Id) return Boolean;
     --  Very large static aggregates present problems to the back-end, and are
     --  transformed into assignments and loops. This function verifies that the
     --  total number of components of an aggregate is acceptable for rewriting
--- 250,259 ----
     -- Local Subprograms for Array Aggregate Expansion --
     -----------------------------------------------------
  
!    function Aggr_Assignment_OK_For_Backend (N : Node_Id) return Boolean;
!    --  Returns true if an aggregate assignment can be done by the back end
! 
!    function Aggr_Size_OK (N : Node_Id) return Boolean;
     --  Very large static aggregates present problems to the back-end, and are
     --  transformed into assignments and loops. This function verifies that the
     --  total number of components of an aggregate is acceptable for rewriting
*************** package body Exp_Aggr is
*** 289,307 ****
     --  construct the allocated object on the heap.
  
     procedure Convert_To_Positional
!      (N                    : Node_Id;
!       Max_Others_Replicate : Nat     := 32;
!       Handle_Bit_Packed    : Boolean := False);
     --  If possible, convert named notation to positional notation. This
     --  conversion is possible only in some static cases. If the conversion is
     --  possible, then N is rewritten with the analyzed converted aggregate.
!    --  The parameter Max_Others_Replicate controls the maximum number of
!    --  values corresponding to an others choice that will be converted to
!    --  positional notation (the default of 32 is the normal limit, and reflects
!    --  the fact that normally the loop is better than a lot of separate
!    --  assignments). Note that this limit gets overridden in any case if
!    --  either of the restrictions No_Elaboration_Code or No_Implicit_Loops is
!    --  set. The parameter Handle_Bit_Packed is usually set False (since we do
     --  not expect the back end to handle bit packed arrays, so the normal case
     --  of conversion is pointless), but in the special case of a call from
     --  Packed_Array_Aggregate_Handled, we set this parameter to True, since
--- 304,315 ----
     --  construct the allocated object on the heap.
  
     procedure Convert_To_Positional
!      (N                 : Node_Id;
!       Handle_Bit_Packed : Boolean := False);
     --  If possible, convert named notation to positional notation. This
     --  conversion is possible only in some static cases. If the conversion is
     --  possible, then N is rewritten with the analyzed converted aggregate.
!    --  The parameter Handle_Bit_Packed is usually set False (since we do
     --  not expect the back end to handle bit packed arrays, so the normal case
     --  of conversion is pointless), but in the special case of a call from
     --  Packed_Array_Aggregate_Handled, we set this parameter to True, since
*************** package body Exp_Aggr is
*** 320,325 ****
--- 328,339 ----
     --  an array that is suitable for this optimization: it returns True if Typ
     --  is a two dimensional bit packed array with component size 1, 2, or 4.
  
+    function Max_Aggregate_Size
+      (N            : Node_Id;
+       Default_Size : Nat := 5000) return Nat;
+    --  Return the max size for a static aggregate N. Return Default_Size if no
+    --  other special criteria trigger.
+ 
     function Packed_Array_Aggregate_Handled (N : Node_Id) return Boolean;
     --  Given an array aggregate, this function handles the case of a packed
     --  array aggregate with all constant values, where the aggregate can be
*************** package body Exp_Aggr is
*** 336,346 ****
     --  false if this transformation cannot be performed. THis is similar to,
     --  and reuses part of the machinery in Packed_Array_Aggregate_Handled.
  
     ------------------
     -- Aggr_Size_OK --
     ------------------
  
!    function Aggr_Size_OK (N : Node_Id; Typ : Entity_Id) return Boolean is
        Lo   : Node_Id;
        Hi   : Node_Id;
        Indx : Node_Id;
--- 350,603 ----
     --  false if this transformation cannot be performed. THis is similar to,
     --  and reuses part of the machinery in Packed_Array_Aggregate_Handled.
  
+    ------------------------------------
+    -- Aggr_Assignment_OK_For_Backend --
+    ------------------------------------
+ 
+    --  Back-end processing by Gigi/gcc is possible only if all the following
+    --  conditions are met:
+ 
+    --    1. N consists of a single OTHERS choice, possibly recursively, or
+    --       of a single choice, possibly recursively, if it is surrounded by
+    --       a qualified expression whose subtype mark is unconstrained.
+ 
+    --    2. The array type has no null ranges (the purpose of this is to
+    --       avoid a bogus warning for an out-of-range value).
+ 
+    --    3. The array type has no atomic components
+ 
+    --    4. The component type is elementary
+ 
+    --    5. The component size is a multiple of Storage_Unit
+ 
+    --    6. The component size is Storage_Unit or the value is of the form
+    --       M * (1 + A**1 + A**2 + .. A**(K-1)) where A = 2**(Storage_Unit)
+    --       and M in 0 .. A-1. This can also be viewed as K occurrences of
+    --       the Storage_Unit value M, concatenated together.
+ 
+    --  The ultimate goal is to generate a call to a fast memset routine
+    --  specifically optimized for the target.
+ 
+    function Aggr_Assignment_OK_For_Backend (N : Node_Id) return Boolean is
+       Csiz      : Uint := No_Uint;
+       Ctyp      : Entity_Id;
+       Expr      : Node_Id;
+       High      : Node_Id;
+       Index     : Entity_Id;
+       Low       : Node_Id;
+       Nunits    : Int;
+       Remainder : Uint;
+       Value     : Uint;
+ 
+       function Is_OK_Aggregate (Aggr : Node_Id) return Boolean;
+       --  Return true if Aggr is suitable for back-end assignment
+ 
+       ---------------------
+       -- Is_OK_Aggregate --
+       ---------------------
+ 
+       function Is_OK_Aggregate (Aggr : Node_Id) return Boolean is
+          Assoc : constant List_Id := Component_Associations (Aggr);
+ 
+       begin
+          --  An "others" aggregate is most likely OK, but see below
+ 
+          if Is_Others_Aggregate (Aggr) then
+             null;
+ 
+          --  An aggregate with a single choice requires a qualified expression
+          --  whose subtype mark is an unconstrained type because we need it to
+          --  have the semantics of an "others" aggregate.
+ 
+          elsif Nkind (Parent (N)) = N_Qualified_Expression
+            and then not Is_Constrained (Entity (Subtype_Mark (Parent (N))))
+            and then Is_Single_Aggregate (Aggr)
+          then
+             null;
+ 
+          --  The other cases are not OK
+ 
+          else
+             return False;
+          end if;
+ 
+          --  In any case we do not support an iterated association
+ 
+          return Nkind (First (Assoc)) /= N_Iterated_Component_Association;
+       end Is_OK_Aggregate;
+ 
+    --  Start of processing for Aggr_Assignment_OK_For_Backend
+ 
+    begin
+       --  Back end doesn't know about <>
+ 
+       if Has_Default_Init_Comps (N) then
+          return False;
+       end if;
+ 
+       --  Recurse as far as possible to find the innermost component type
+ 
+       Ctyp := Etype (N);
+       Expr := N;
+       while Is_Array_Type (Ctyp) loop
+          if Nkind (Expr) /= N_Aggregate
+            or else not Is_OK_Aggregate (Expr)
+          then
+             return False;
+          end if;
+ 
+          Index := First_Index (Ctyp);
+          while Present (Index) loop
+             Get_Index_Bounds (Index, Low, High);
+ 
+             if Is_Null_Range (Low, High) then
+                return False;
+             end if;
+ 
+             Next_Index (Index);
+          end loop;
+ 
+          Expr := Expression (First (Component_Associations (Expr)));
+ 
+          for J in 1 .. Number_Dimensions (Ctyp) - 1 loop
+             if Nkind (Expr) /= N_Aggregate
+               or else not Is_OK_Aggregate (Expr)
+             then
+                return False;
+             end if;
+ 
+             Expr := Expression (First (Component_Associations (Expr)));
+          end loop;
+ 
+          if Has_Atomic_Components (Ctyp) then
+             return False;
+          end if;
+ 
+          Csiz := Component_Size (Ctyp);
+          Ctyp := Component_Type (Ctyp);
+ 
+          if Is_Full_Access (Ctyp) then
+             return False;
+          end if;
+       end loop;
+ 
+       --  Access types need to be dealt with specially
+ 
+       if Is_Access_Type (Ctyp) then
+ 
+          --  Component_Size is not set by Layout_Type if the component
+          --  type is an access type ???
+ 
+          Csiz := Esize (Ctyp);
+ 
+          --  Fat pointers are rejected as they are not really elementary
+          --  for the backend.
+ 
+          if Csiz /= System_Address_Size then
+             return False;
+          end if;
+ 
+          --  The supported expressions are NULL and constants, others are
+          --  rejected upfront to avoid being analyzed below, which can be
+          --  problematic for some of them, for example allocators.
+ 
+          if Nkind (Expr) /= N_Null and then not Is_Entity_Name (Expr) then
+             return False;
+          end if;
+ 
+       --  Scalar types are OK if their size is a multiple of Storage_Unit
+ 
+       elsif Is_Scalar_Type (Ctyp) then
+          pragma Assert (Csiz /= No_Uint);
+ 
+          if Csiz mod System_Storage_Unit /= 0 then
+             return False;
+          end if;
+ 
+       --  Composite types are rejected
+ 
+       else
+          return False;
+       end if;
+ 
+       --  If the expression has side effects (e.g. contains calls with
+       --  potential side effects) reject as well. We only preanalyze the
+       --  expression to prevent the removal of intended side effects.
+ 
+       Preanalyze_And_Resolve (Expr, Ctyp);
+ 
+       if not Side_Effect_Free (Expr) then
+          return False;
+       end if;
+ 
+       --  The expression needs to be analyzed if True is returned
+ 
+       Analyze_And_Resolve (Expr, Ctyp);
+ 
+       --  Strip away any conversions from the expression as they simply
+       --  qualify the real expression.
+ 
+       while Nkind (Expr) in N_Unchecked_Type_Conversion | N_Type_Conversion
+       loop
+          Expr := Expression (Expr);
+       end loop;
+ 
+       Nunits := UI_To_Int (Csiz) / System_Storage_Unit;
+ 
+       if Nunits = 1 then
+          return True;
+       end if;
+ 
+       if not Compile_Time_Known_Value (Expr) then
+          return False;
+       end if;
+ 
+       --  The only supported value for floating point is 0.0
+ 
+       if Is_Floating_Point_Type (Ctyp) then
+          return Expr_Value_R (Expr) = Ureal_0;
+       end if;
+ 
+       --  For other types, we can look into the value as an integer, which
+       --  means the representation value for enumeration literals.
+ 
+       Value := Expr_Rep_Value (Expr);
+ 
+       if Has_Biased_Representation (Ctyp) then
+          Value := Value - Expr_Value (Type_Low_Bound (Ctyp));
+       end if;
+ 
+       --  Values 0 and -1 immediately satisfy the last check
+ 
+       if Value = Uint_0 or else Value = Uint_Minus_1 then
+          return True;
+       end if;
+ 
+       --  We need to work with an unsigned value
+ 
+       if Value < 0 then
+          Value := Value + 2**(System_Storage_Unit * Nunits);
+       end if;
+ 
+       Remainder := Value rem 2**System_Storage_Unit;
+ 
+       for J in 1 .. Nunits - 1 loop
+          Value := Value / 2**System_Storage_Unit;
+ 
+          if Value rem 2**System_Storage_Unit /= Remainder then
+             return False;
+          end if;
+       end loop;
+ 
+       return True;
+    end Aggr_Assignment_OK_For_Backend;
+ 
     ------------------
     -- Aggr_Size_OK --
     ------------------
  
!    function Aggr_Size_OK (N : Node_Id) return Boolean is
!       Typ  : constant Entity_Id := Etype (N);
        Lo   : Node_Id;
        Hi   : Node_Id;
        Indx : Node_Id;
*************** package body Exp_Aggr is
*** 429,471 ****
     --  Start of processing for Aggr_Size_OK
  
     begin
!       --  The normal aggregate limit is 500000, but we increase this limit to
!       --  2**24 (about 16 million) if Restrictions (No_Elaboration_Code) or
!       --  Restrictions (No_Implicit_Loops) is specified, since in either case
!       --  we are at risk of declaring the program illegal because of this
!       --  limit. We also increase the limit when Static_Elaboration_Desired,
!       --  given that this means that objects are intended to be placed in data
!       --  memory.
! 
!       --  We also increase the limit if the aggregate is for a packed two-
!       --  dimensional array, because if components are static it is much more
!       --  efficient to construct a one-dimensional equivalent array with static
!       --  components.
! 
!       --  Conversely, we decrease the maximum size if none of the above
!       --  requirements apply, and if the aggregate has a single component
        --  association, which will be more efficient if implemented with a loop.
  
!       --  Finally, we use a small limit in CodePeer mode where we favor loops
!       --  instead of thousands of single assignments (from large aggregates).
! 
!       Max_Aggr_Size := 500000;
! 
!       if CodePeer_Mode then
!          Max_Aggr_Size := 100;
! 
!       elsif Restriction_Active (No_Elaboration_Code)
!         or else Restriction_Active (No_Implicit_Loops)
!         or else Is_Two_Dim_Packed_Array (Typ)
!         or else (Ekind (Current_Scope) = E_Package
!                    and then Static_Elaboration_Desired (Current_Scope))
!       then
!          Max_Aggr_Size := 2 ** 24;
! 
!       elsif No (Expressions (N))
          and then No (Next (First (Component_Associations (N))))
        then
!          Max_Aggr_Size := 5000;
        end if;
  
        Size := UI_From_Int (Component_Count (Component_Type (Typ)));
--- 686,700 ----
     --  Start of processing for Aggr_Size_OK
  
     begin
!       --  We bump the maximum size unless the aggregate has a single component
        --  association, which will be more efficient if implemented with a loop.
  
!       if No (Expressions (N))
          and then No (Next (First (Component_Associations (N))))
        then
!          Max_Aggr_Size := Max_Aggregate_Size (N);
!       else
!          Max_Aggr_Size := Max_Aggregate_Size (N, 500_000);
        end if;
  
        Size := UI_From_Int (Component_Count (Component_Type (Typ)));
*************** package body Exp_Aggr is
*** 629,636 ****
              Expr : Node_Id := Original_Node (N);
  
           begin
!             while Nkind_In (Expr, N_Type_Conversion,
!                                   N_Unchecked_Type_Conversion)
              loop
                 Expr := Original_Node (Expression (Expr));
              end loop;
--- 858,865 ----
              Expr : Node_Id := Original_Node (N);
  
           begin
!             while Nkind (Expr) in
!                     N_Type_Conversion | N_Unchecked_Type_Conversion
              loop
                 Expr := Original_Node (Expression (Expr));
              end loop;
*************** package body Exp_Aggr is
*** 772,778 ****
  
        --  Backend processing is possible
  
-       Set_Size_Known_At_Compile_Time (Etype (N), True);
        return True;
     end Backend_Processing_Possible;
  
--- 1001,1006 ----
*************** package body Exp_Aggr is
*** 1329,1337 ****
              --  the initialization expression denotes. An unanalyzed function
              --  call may appear as an identifier or an indexed component.
  
!             if Nkind_In (Expr, N_Function_Call,
!                                N_Identifier,
!                                N_Indexed_Component)
                and then not Analyzed (Expr)
              then
                 Preanalyze_And_Resolve (Expr, Comp_Typ);
--- 1557,1565 ----
              --  the initialization expression denotes. An unanalyzed function
              --  call may appear as an identifier or an indexed component.
  
!             if Nkind (Expr) in N_Function_Call
!                              | N_Identifier
!                              | N_Indexed_Component
                and then not Analyzed (Expr)
              then
                 Preanalyze_And_Resolve (Expr, Comp_Typ);
*************** package body Exp_Aggr is
*** 1512,1518 ****
           --  default initialized components (otherwise Expr_Q is not present).
  
           if Present (Expr_Q)
!            and then Nkind_In (Expr_Q, N_Aggregate, N_Extension_Aggregate)
           then
              --  At this stage the Expression may not have been analyzed yet
              --  because the array aggregate code has not been updated to use
--- 1740,1746 ----
           --  default initialized components (otherwise Expr_Q is not present).
  
           if Present (Expr_Q)
!            and then Nkind (Expr_Q) in N_Aggregate | N_Extension_Aggregate
           then
              --  At this stage the Expression may not have been analyzed yet
              --  because the array aggregate code has not been updated to use
*************** package body Exp_Aggr is
*** 1667,1672 ****
--- 1895,1916 ----
                    Append_To (Stmts, Init_Call);
                 end if;
              end if;
+ 
+             --  If Default_Initial_Condition applies to the component type,
+             --  add a DIC check after the component is default-initialized,
+             --  as well as after an Initialize procedure is called, in the
+             --  case of components of a controlled type. It will be analyzed
+             --  and resolved before the code for initialization of other
+             --  components.
+ 
+             --  Theoretically this might also be needed for cases where Expr
+             --  is not empty, but a default init still applies, such as for
+             --  Default_Value cases, in which case we won't get here. ???
+ 
+             if Has_DIC (Ctype) and then Present (DIC_Procedure (Ctype)) then
+                Append_To (Stmts,
+                  Build_DIC_Call (Loc, New_Copy_Tree (Indexed_Comp), Ctype));
+             end if;
           end if;
  
           return Add_Loop_Actions (Stmts);
*************** package body Exp_Aggr is
*** 1729,1735 ****
                    Expander_Mode_Save_And_Set (False);
                    Tcopy := New_Copy_Tree (Expr);
                    Set_Parent (Tcopy, N);
!                   Analyze_And_Resolve (Tcopy, Component_Type (Etype (N)));
                    Expander_Mode_Restore;
                 end if;
              end if;
--- 1973,2002 ----
                    Expander_Mode_Save_And_Set (False);
                    Tcopy := New_Copy_Tree (Expr);
                    Set_Parent (Tcopy, N);
! 
!                   --  For iterated_component_association analyze and resolve
!                   --  the expression with name of the index parameter visible.
!                   --  To manipulate scopes, we use entity of the implicit loop.
! 
!                   if Is_Iterated_Component then
!                      declare
!                         Index_Parameter : constant Entity_Id :=
!                           Defining_Identifier (Parent (Expr));
!                      begin
!                         Push_Scope (Scope (Index_Parameter));
!                         Enter_Name (Index_Parameter);
!                         Analyze_And_Resolve
!                           (Tcopy, Component_Type (Etype (N)));
!                         End_Scope;
!                      end;
! 
!                   --  For ordinary component association, just analyze and
!                   --  resolve the expression.
! 
!                   else
!                      Analyze_And_Resolve (Tcopy, Component_Type (Etype (N)));
!                   end if;
! 
                    Expander_Mode_Restore;
                 end if;
              end if;
*************** package body Exp_Aggr is
*** 2043,2054 ****
          and then Is_Bit_Packed_Array (Typ)
          and then Is_Modular_Integer_Type (Packed_Array_Impl_Type (Typ))
        then
!          Append_To (New_Code,
!            Make_Assignment_Statement (Loc,
!              Name       => New_Copy_Tree (Into),
!              Expression =>
!                Unchecked_Convert_To (Typ,
!                  Make_Integer_Literal (Loc, Uint_0))));
        end if;
  
        --  If the component type contains tasks, we need to build a Master
--- 2310,2324 ----
          and then Is_Bit_Packed_Array (Typ)
          and then Is_Modular_Integer_Type (Packed_Array_Impl_Type (Typ))
        then
!          declare
!             Zero : constant Node_Id := Make_Integer_Literal (Loc, Uint_0);
!          begin
!             Analyze_And_Resolve (Zero, Packed_Array_Impl_Type (Typ));
!             Append_To (New_Code,
!               Make_Assignment_Statement (Loc,
!                 Name       => New_Copy_Tree (Into),
!                 Expression => Unchecked_Convert_To (Typ, Zero)));
!          end;
        end if;
  
        --  If the component type contains tasks, we need to build a Master
*************** package body Exp_Aggr is
*** 2106,2112 ****
              Sort_Case_Table (Table);
           end if;
  
!          --  STEP 1 (b):  take care of the whole set of discrete choices
  
           for J in 1 .. Nb_Choices loop
              Low  := Table (J).Choice_Lo;
--- 2376,2382 ----
              Sort_Case_Table (Table);
           end if;
  
!          --  STEP 1 (b): take care of the whole set of discrete choices
  
           for J in 1 .. Nb_Choices loop
              Low  := Table (J).Choice_Lo;
*************** package body Exp_Aggr is
*** 2194,2211 ****
              Next (Expr);
           end loop;
  
!          --  STEP 2 (b): Generate final loop if an others choice is present
           --  Here Nb_Elements gives the offset of the last positional element.
  
           if Present (Component_Associations (N)) then
              Assoc := Last (Component_Associations (N));
  
!             --  Ada 2005 (AI-287)
  
!             Append_List (Gen_While (Add (Nb_Elements, To => Aggr_L),
!                                     Aggr_High,
!                                     Get_Assoc_Expr (Assoc)), --  AI-287
!                          To => New_Code);
           end if;
        end if;
  
--- 2464,2493 ----
              Next (Expr);
           end loop;
  
!          --  STEP 2 (b): Generate final loop if an others choice is present.
           --  Here Nb_Elements gives the offset of the last positional element.
  
           if Present (Component_Associations (N)) then
              Assoc := Last (Component_Associations (N));
  
!             if Nkind (Assoc) = N_Iterated_Component_Association then
!                --  Ada 2020: generate a loop to have a proper scope for
!                --  the identifier that typically appears in the expression.
!                --  The lower bound of the loop is the position after all
!                --  previous positional components.
  
!                Append_List (Gen_Loop (Add (Nb_Elements + 1, To => Aggr_L),
!                                       Aggr_High,
!                                       Expression (Assoc)),
!                             To => New_Code);
!             else
!                --  Ada 2005 (AI-287)
! 
!                Append_List (Gen_While (Add (Nb_Elements, To => Aggr_L),
!                                        Aggr_High,
!                                        Get_Assoc_Expr (Assoc)),
!                             To => New_Code);
!             end if;
           end if;
        end if;
  
*************** package body Exp_Aggr is
*** 2836,2844 ****
           --  the initialization expression denotes. Unanalyzed function calls
           --  may appear as identifiers or indexed components.
  
!          if Nkind_In (Init_Expr, N_Function_Call,
!                                  N_Identifier,
!                                  N_Indexed_Component)
             and then not Analyzed (Init_Expr)
           then
              Preanalyze_And_Resolve (Init_Expr, Comp_Typ);
--- 3118,3126 ----
           --  the initialization expression denotes. Unanalyzed function calls
           --  may appear as identifiers or indexed components.
  
!          if Nkind (Init_Expr) in N_Function_Call
!                                | N_Identifier
!                                | N_Indexed_Component
             and then not Analyzed (Init_Expr)
           then
              Preanalyze_And_Resolve (Init_Expr, Comp_Typ);
*************** package body Exp_Aggr is
*** 3238,3243 ****
--- 3520,3537 ----
                    then
                       Check_Ancestor_Discriminants (Entity (Ancestor));
                    end if;
+ 
+                   --  If ancestor type has Default_Initialization_Condition,
+                   --  add a DIC check after the ancestor object is initialized
+                   --  by default.
+ 
+                   if Has_DIC (Entity (Ancestor))
+                     and then Present (DIC_Procedure (Entity (Ancestor)))
+                   then
+                      Append_To (L,
+                        Build_DIC_Call
+                          (Loc, New_Copy_Tree (Ref), Entity (Ancestor)));
+                   end if;
                 end if;
  
              --  Handle calls to C++ constructors
*************** package body Exp_Aggr is
*** 3262,3269 ****
              --  qualified).
  
              elsif Is_Limited_Type (Etype (Ancestor))
!               and then Nkind_In (Unqualify (Ancestor), N_Aggregate,
!                                                        N_Extension_Aggregate)
              then
                 Ancestor_Is_Expression := True;
  
--- 3556,3563 ----
              --  qualified).
  
              elsif Is_Limited_Type (Etype (Ancestor))
!               and then Nkind (Unqualify (Ancestor)) in
!                          N_Aggregate | N_Extension_Aggregate
              then
                 Ancestor_Is_Expression := True;
  
*************** package body Exp_Aggr is
*** 3295,3302 ****
                 --  If the ancestor part is an aggregate, force its full
                 --  expansion, which was delayed.
  
!                if Nkind_In (Unqualify (Ancestor), N_Aggregate,
!                                                   N_Extension_Aggregate)
                 then
                    Set_Analyzed (Ancestor, False);
                    Set_Analyzed (Expression (Ancestor), False);
--- 3589,3596 ----
                 --  If the ancestor part is an aggregate, force its full
                 --  expansion, which was delayed.
  
!                if Nkind (Unqualify (Ancestor)) in
!                     N_Aggregate | N_Extension_Aggregate
                 then
                    Set_Analyzed (Ancestor, False);
                    Set_Analyzed (Expression (Ancestor), False);
*************** package body Exp_Aggr is
*** 3843,3848 ****
--- 4137,4158 ----
              end;
           end if;
  
+          --  If the component association was specified with a box and the
+          --  component type has a Default_Initial_Condition, then generate
+          --  a call to the DIC procedure.
+ 
+          if Has_DIC (Etype (Selector))
+            and then Was_Default_Init_Box_Association (Comp)
+            and then Present (DIC_Procedure (Etype (Selector)))
+          then
+             Append_To (L,
+               Build_DIC_Call (Loc,
+                 Make_Selected_Component (Loc,
+                   Prefix        => New_Copy_Tree (Target),
+                   Selector_Name => New_Occurrence_Of (Selector, Loc)),
+                 Etype (Selector)));
+          end if;
+ 
           Next (Comp);
        end loop;
  
*************** package body Exp_Aggr is
*** 4126,4146 ****
        Aggr   : Node_Id;
        Target : Node_Id)
     is
-       Aggr_Code : List_Id;
        Typ       : constant Entity_Id := Etype (Aggr);
        Ctyp      : constant Entity_Id := Component_Type (Typ);
  
     begin
!       --  The target is an explicit dereference of the allocated object.
!       --  Generate component assignments to it, as for an aggregate that
!       --  appears on the right-hand side of an assignment statement.
  
!       Aggr_Code :=
!         Build_Array_Aggr_Code (Aggr,
!           Ctype       => Ctyp,
!           Index       => First_Index (Typ),
!           Into        => Target,
!           Scalar_Comp => Is_Scalar_Type (Ctyp));
  
        Insert_Actions_After (Decl, Aggr_Code);
     end Convert_Array_Aggr_In_Allocator;
--- 4436,4476 ----
        Aggr   : Node_Id;
        Target : Node_Id)
     is
        Typ       : constant Entity_Id := Etype (Aggr);
        Ctyp      : constant Entity_Id := Component_Type (Typ);
+       Aggr_Code : List_Id;
+       New_Aggr  : Node_Id;
  
     begin
!       --  The target is an explicit dereference of the allocated object
  
!       --  If the assignment can be done directly by the back end, then
!       --  reset Set_Expansion_Delayed and do not expand further.
! 
!       if not CodePeer_Mode
!         and then not Modify_Tree_For_C
!         and then Aggr_Assignment_OK_For_Backend (Aggr)
!       then
!          New_Aggr := New_Copy_Tree (Aggr);
!          Set_Expansion_Delayed (New_Aggr, False);
! 
!          Aggr_Code :=
!            New_List (
!              Make_OK_Assignment_Statement (Sloc (New_Aggr),
!                Name       => Target,
!                Expression => New_Aggr));
! 
!       --  Or else, generate component assignments to it, as for an aggregate
!       --  that appears on the right-hand side of an assignment statement.
! 
!       else
!          Aggr_Code :=
!            Build_Array_Aggr_Code (Aggr,
!              Ctype       => Ctyp,
!              Index       => First_Index (Typ),
!              Into        => Target,
!              Scalar_Comp => Is_Scalar_Type (Ctyp));
!       end if;
  
        Insert_Actions_After (Decl, Aggr_Code);
     end Convert_Array_Aggr_In_Allocator;
*************** package body Exp_Aggr is
*** 4149,4171 ****
     -- In_Place_Assign_OK --
     ------------------------
  
!    function In_Place_Assign_OK (N : Node_Id) return Boolean is
        Is_Array : constant Boolean := Is_Array_Type (Etype (N));
  
!       Aggr_In : Node_Id;
!       Aggr_Lo : Node_Id;
!       Aggr_Hi : Node_Id;
!       Obj_In  : Node_Id;
!       Obj_Lo  : Node_Id;
!       Obj_Hi  : Node_Id;
  
        function Safe_Aggregate (Aggr : Node_Id) return Boolean;
        --  Check recursively that each component of a (sub)aggregate does not
        --  depend on the variable being assigned to.
  
        function Safe_Component (Expr : Node_Id) return Boolean;
!       --  Verify that an expression cannot depend on the variable being
!       --  assigned to. Room for improvement here (but less than before).
  
        --------------------
        -- Safe_Aggregate --
--- 4479,4518 ----
     -- In_Place_Assign_OK --
     ------------------------
  
!    function In_Place_Assign_OK
!      (N             : Node_Id;
!       Target_Object : Entity_Id := Empty) return Boolean
!    is
        Is_Array : constant Boolean := Is_Array_Type (Etype (N));
  
!       Aggr_In     : Node_Id;
!       Aggr_Lo     : Node_Id;
!       Aggr_Hi     : Node_Id;
!       Obj_In      : Node_Id;
!       Obj_Lo      : Node_Id;
!       Obj_Hi      : Node_Id;
!       Parent_Kind : Node_Kind;
!       Parent_Node : Node_Id;
  
        function Safe_Aggregate (Aggr : Node_Id) return Boolean;
        --  Check recursively that each component of a (sub)aggregate does not
        --  depend on the variable being assigned to.
  
        function Safe_Component (Expr : Node_Id) return Boolean;
!       --  Verify that an expression cannot depend on the target being assigned
!       --  to. Return true for compile-time known values, stand-alone objects,
!       --  parameters passed by copy, calls to functions that return by copy,
!       --  selected components thereof only if the aggregate's type is an array,
!       --  indexed components and slices thereof only if the aggregate's type is
!       --  a record, and simple expressions involving only these as operands.
!       --  This is OK whatever the target because, for a component to overlap
!       --  with the target, it must be either a direct reference to a component
!       --  of the target, in which case there must be a matching selection or
!       --  indexation or slicing, or an indirect reference to such a component,
!       --  which is excluded by the above condition. Additionally, if the target
!       --  is statically known, return true for arbitrarily nested selections,
!       --  indexations or slicings, provided that their ultimate prefix is not
!       --  the target itself.
  
        --------------------
        -- Safe_Aggregate --
*************** package body Exp_Aggr is
*** 4227,4269 ****
        function Safe_Component (Expr : Node_Id) return Boolean is
           Comp : Node_Id := Expr;
  
!          function Check_Component (Comp : Node_Id) return Boolean;
!          --  Do the recursive traversal, after copy
  
           ---------------------
           -- Check_Component --
           ---------------------
  
!          function Check_Component (Comp : Node_Id) return Boolean is
           begin
!             if Is_Overloaded (Comp) then
                 return False;
              end if;
  
!             return Compile_Time_Known_Value (Comp)
  
!               or else (Is_Entity_Name (Comp)
!                         and then Present (Entity (Comp))
!                         and then Ekind (Entity (Comp)) not in Type_Kind
!                         and then No (Renamed_Object (Entity (Comp))))
  
!               or else (Nkind (Comp) = N_Attribute_Reference
!                         and then Check_Component (Prefix (Comp)))
  
!               or else (Nkind (Comp) in N_Binary_Op
!                         and then Check_Component (Left_Opnd  (Comp))
!                         and then Check_Component (Right_Opnd (Comp)))
  
!               or else (Nkind (Comp) in N_Unary_Op
!                         and then Check_Component (Right_Opnd (Comp)))
  
!               or else (Nkind (Comp) = N_Selected_Component
!                         and then Is_Array
!                         and then Check_Component (Prefix (Comp)))
  
!               or else (Nkind_In (Comp, N_Type_Conversion,
!                                        N_Unchecked_Type_Conversion)
!                         and then Check_Component (Expression (Comp)));
           end Check_Component;
  
        --  Start of processing for Safe_Component
--- 4574,4710 ----
        function Safe_Component (Expr : Node_Id) return Boolean is
           Comp : Node_Id := Expr;
  
!          function Check_Component (C : Node_Id; T_OK : Boolean) return Boolean;
!          --  Do the recursive traversal, after copy. If T_OK is True, return
!          --  True for a stand-alone object only if the target is statically
!          --  known and distinct from the object. At the top level, we start
!          --  with T_OK set to False and set it to True at a deeper level only
!          --  if we cannot disambiguate the component here without statically
!          --  knowing the target. Note that this is not optimal, we should do
!          --  something along the lines of Denotes_Same_Prefix for that.
  
           ---------------------
           -- Check_Component --
           ---------------------
  
!          function Check_Component (C : Node_Id; T_OK : Boolean) return Boolean
!          is
! 
!             function SDO (E : Entity_Id) return Uint;
!             --  Return the Scope Depth Of the enclosing dynamic scope of E
! 
!             ---------
!             -- SDO --
!             ---------
! 
!             function SDO (E : Entity_Id) return Uint is
!             begin
!                return Scope_Depth (Enclosing_Dynamic_Scope (E));
!             end SDO;
! 
!          --  Start of processing for Check_Component
! 
           begin
!             if Is_Overloaded (C) then
                 return False;
+ 
+             elsif Compile_Time_Known_Value (C) then
+                return True;
              end if;
  
!             case Nkind (C) is
!                when N_Attribute_Reference =>
!                   return Check_Component (Prefix (C), T_OK);
  
!                when N_Function_Call =>
!                   if Nkind (Name (C)) = N_Explicit_Dereference then
!                      return not Returns_By_Ref (Etype (Name (C)));
!                   else
!                      return not Returns_By_Ref (Entity (Name (C)));
!                   end if;
  
!                when N_Indexed_Component | N_Slice =>
!                   --  In a target record, these operations cannot determine
!                   --  alone a component so we can recurse whatever the target.
!                   return Check_Component (Prefix (C), T_OK or else Is_Array);
  
!                when N_Selected_Component =>
!                   --  In a target array, this operation cannot determine alone
!                   --  a component so we can recurse whatever the target.
!                   return
!                     Check_Component (Prefix (C), T_OK or else not Is_Array);
  
!                when N_Type_Conversion | N_Unchecked_Type_Conversion =>
!                   return Check_Component (Expression (C), T_OK);
  
!                when N_Binary_Op =>
!                   return Check_Component (Left_Opnd (C), T_OK)
!                     and then Check_Component (Right_Opnd (C), T_OK);
  
!                when N_Unary_Op =>
!                   return Check_Component (Right_Opnd (C), T_OK);
! 
!                when others =>
!                   if Is_Entity_Name (C) and then Is_Object (Entity (C)) then
!                      --  Case of a formal parameter component. It's either
!                      --  trivial if passed by copy or very annoying if not,
!                      --  because in the latter case it's almost equivalent
!                      --  to a dereference, so the path-based disambiguation
!                      --  logic is totally off and we always need the target.
! 
!                      if Is_Formal (Entity (C)) then
! 
!                         --  If it is passed by copy, then this is safe
! 
!                         if Mechanism (Entity (C)) = By_Copy then
!                            return True;
! 
!                         --  Otherwise, this is safe if the target is present
!                         --  and is at least as deeply nested as the component.
! 
!                         else
!                            return Present (Target_Object)
!                              and then not Is_Formal (Target_Object)
!                              and then SDO (Target_Object) >= SDO (Entity (C));
!                         end if;
! 
!                      --  For a renamed object, recurse
! 
!                      elsif Present (Renamed_Object (Entity (C))) then
!                         return
!                           Check_Component (Renamed_Object (Entity (C)), T_OK);
! 
!                      --  If this is safe whatever the target, we are done
! 
!                      elsif not T_OK then
!                         return True;
! 
!                      --  If there is no target or the component is the target,
!                      --  this is not safe.
! 
!                      elsif No (Target_Object)
!                        or else Entity (C) = Target_Object
!                      then
!                         return False;
! 
!                      --  Case of a formal parameter target. This is safe if it
!                      --  is at most as deeply nested as the component.
! 
!                      elsif Is_Formal (Target_Object) then
!                         return SDO (Target_Object) <= SDO (Entity (C));
! 
!                      --  For distinct stand-alone objects, this is safe
! 
!                      else
!                         return True;
!                      end if;
! 
!                   --  For anything else than an object, this is not safe
! 
!                   else
!                      return False;
!                   end if;
!             end case;
           end Check_Component;
  
        --  Start of processing for Safe_Component
*************** package body Exp_Aggr is
*** 4280,4290 ****
              if Is_Overloaded (Expr) then
                 return False;
  
-             elsif Nkind (Expr) = N_Aggregate
-                and then not Is_Others_Aggregate (Expr)
-             then
-                return False;
- 
              elsif Nkind (Expr) = N_Allocator then
  
                 --  For now, too complex to analyze
--- 4721,4726 ----
*************** package body Exp_Aggr is
*** 4307,4363 ****
           if Nkind (Comp) = N_Aggregate then
              return Safe_Aggregate (Comp);
           else
!             return Check_Component (Comp);
           end if;
        end Safe_Component;
  
     --  Start of processing for In_Place_Assign_OK
  
     begin
!       --  By-copy semantic cannot be guaranteed for controlled objects or
!       --  objects with discriminants.
  
!       if Needs_Finalization (Etype (N))
!         or else Has_Discriminants (Etype (N))
!       then
           return False;
  
!       elsif Is_Array and then Present (Component_Associations (N)) then
  
!          --  On assignment, sliding can take place, so we cannot do the
!          --  assignment in place unless the bounds of the aggregate are
!          --  statically equal to those of the target.
  
!          --  If the aggregate is given by an others choice, the bounds are
!          --  derived from the left-hand side, and the assignment is safe if
!          --  the expression is.
  
!          if Is_Others_Aggregate (N) then
!             return
!               Safe_Component
!                (Expression (First (Component_Associations (N))));
!          end if;
  
           Aggr_In := First_Index (Etype (N));
  
!          if Nkind (Parent (N)) = N_Assignment_Statement then
!             Obj_In := First_Index (Etype (Name (Parent (N))));
  
!          else
!             --  Context is an allocator. Check bounds of aggregate against
!             --  given type in qualified expression.
  
!             pragma Assert (Nkind (Parent (Parent (N))) = N_Allocator);
!             Obj_In := First_Index (Etype (Entity (Subtype_Mark (Parent (N)))));
           end if;
  
           while Present (Aggr_In) loop
              Get_Index_Bounds (Aggr_In, Aggr_Lo, Aggr_Hi);
              Get_Index_Bounds (Obj_In, Obj_Lo, Obj_Hi);
  
!             if not Compile_Time_Known_Value (Aggr_Lo)
!               or else not Compile_Time_Known_Value (Obj_Lo)
                or else not Compile_Time_Known_Value (Obj_Hi)
                or else Expr_Value (Aggr_Lo) /= Expr_Value (Obj_Lo)
              then
                 return False;
--- 4743,4815 ----
           if Nkind (Comp) = N_Aggregate then
              return Safe_Aggregate (Comp);
           else
!             return Check_Component (Comp, False);
           end if;
        end Safe_Component;
  
     --  Start of processing for In_Place_Assign_OK
  
     begin
!       --  By-copy semantic cannot be guaranteed for controlled objects
  
!       if Needs_Finalization (Etype (N)) then
           return False;
+       end if;
  
!       Parent_Node := Parent (N);
!       Parent_Kind := Nkind (Parent_Node);
  
!       if Parent_Kind = N_Qualified_Expression then
!          Parent_Node := Parent (Parent_Node);
!          Parent_Kind := Nkind (Parent_Node);
!       end if;
  
!       --  On assignment, sliding can take place, so we cannot do the
!       --  assignment in place unless the bounds of the aggregate are
!       --  statically equal to those of the target.
  
!       --  If the aggregate is given by an others choice, the bounds are
!       --  derived from the left-hand side, and the assignment is safe if
!       --  the expression is.
  
+       if Is_Array
+         and then Present (Component_Associations (N))
+         and then not Is_Others_Aggregate (N)
+       then
           Aggr_In := First_Index (Etype (N));
  
!          --  Context is an assignment
  
!          if Parent_Kind = N_Assignment_Statement then
!             Obj_In := First_Index (Etype (Name (Parent_Node)));
  
!          --  Context is an allocator. Check the bounds of the aggregate against
!          --  those of the designated type, except in the case where the type is
!          --  unconstrained (and then we can directly return true, see below).
! 
!          else pragma Assert (Parent_Kind = N_Allocator);
!             declare
!                Desig_Typ : constant Entity_Id :=
!                                          Designated_Type (Etype (Parent_Node));
!             begin
!                if not Is_Constrained (Desig_Typ) then
!                   return True;
!                end if;
! 
!                Obj_In := First_Index (Desig_Typ);
!             end;
           end if;
  
           while Present (Aggr_In) loop
              Get_Index_Bounds (Aggr_In, Aggr_Lo, Aggr_Hi);
              Get_Index_Bounds (Obj_In, Obj_Lo, Obj_Hi);
  
!             --  We require static bounds for the target and a static matching
!             --  of low bound for the aggregate.
! 
!             if not Compile_Time_Known_Value (Obj_Lo)
                or else not Compile_Time_Known_Value (Obj_Hi)
+               or else not Compile_Time_Known_Value (Aggr_Lo)
                or else Expr_Value (Aggr_Lo) /= Expr_Value (Obj_Lo)
              then
                 return False;
*************** package body Exp_Aggr is
*** 4371,4378 ****
              --  diminishing returns) for safely building arrays in place
              --  here.
  
!             elsif Nkind (Parent (N)) = N_Assignment_Statement
!               or else Is_Constrained (Etype (Parent (N)))
              then
                 if not Compile_Time_Known_Value (Aggr_Hi)
                   or else Expr_Value (Aggr_Hi) /= Expr_Value (Obj_Hi)
--- 4823,4830 ----
              --  diminishing returns) for safely building arrays in place
              --  here.
  
!             elsif Parent_Kind = N_Assignment_Statement
!               or else Is_Constrained (Etype (Parent_Node))
              then
                 if not Compile_Time_Known_Value (Aggr_Hi)
                   or else Expr_Value (Aggr_Hi) /= Expr_Value (Obj_Hi)
*************** package body Exp_Aggr is
*** 4386,4394 ****
           end loop;
        end if;
  
!       --  Now check the component values themselves
  
!       return Safe_Aggregate (N);
     end In_Place_Assign_OK;
  
     ----------------------------
--- 4838,4851 ----
           end loop;
        end if;
  
!       --  Now check the component values themselves, except for an allocator
!       --  for which the target is newly allocated memory.
  
!       if Parent_Kind = N_Allocator then
!          return True;
!       else
!          return Safe_Aggregate (N);
!       end if;
     end In_Place_Assign_OK;
  
     ----------------------------
*************** package body Exp_Aggr is
*** 4408,4414 ****
        Parent_Node : Node_Id;
  
     begin
!       pragma Assert (Nkind_In (N, N_Aggregate, N_Extension_Aggregate));
        pragma Assert (not Is_Static_Dispatch_Table_Aggregate (N));
        pragma Assert (Is_Record_Type (Typ));
  
--- 4865,4871 ----
        Parent_Node : Node_Id;
  
     begin
!       pragma Assert (Nkind (N) in N_Aggregate | N_Extension_Aggregate);
        pragma Assert (not Is_Static_Dispatch_Table_Aggregate (N));
        pragma Assert (Is_Record_Type (Typ));
  
*************** package body Exp_Aggr is
*** 4496,4521 ****
        --  assignment.
  
        if Is_Limited_Type (Typ)
!         and then Nkind (Parent (N)) = N_Assignment_Statement
        then
!          Target_Expr := New_Copy_Tree (Name (Parent (N)));
!          Insert_Actions (Parent (N),
             Build_Record_Aggr_Code (N, Typ, Target_Expr));
!          Rewrite (Parent (N), Make_Null_Statement (Loc));
  
!       --  Do not declare a temporary to initialize an aggregate assigned to an
!       --  identifier when in-place assignment is possible, preserving the
        --  by-copy semantic of aggregates. This avoids large stack usage and
        --  generates more efficient code.
  
!       elsif Nkind (Parent (N)) = N_Assignment_Statement
!         and then Nkind (Name (Parent (N))) = N_Identifier
!         and then In_Place_Assign_OK (N)
        then
!          Target_Expr := New_Copy_Tree (Name (Parent (N)));
!          Insert_Actions (Parent (N),
!            Build_Record_Aggr_Code (N, Typ, Target_Expr));
!          Rewrite (Parent (N), Make_Null_Statement (Loc));
  
        else
           Temp := Make_Temporary (Loc, 'A', N);
--- 4953,4991 ----
        --  assignment.
  
        if Is_Limited_Type (Typ)
!         and then Parent_Kind = N_Assignment_Statement
        then
!          Target_Expr := New_Copy_Tree (Name (Parent_Node));
!          Insert_Actions (Parent_Node,
             Build_Record_Aggr_Code (N, Typ, Target_Expr));
!          Rewrite (Parent_Node, Make_Null_Statement (Loc));
  
!       --  Do not declare a temporary to initialize an aggregate assigned to
!       --  a target when in-place assignment is possible, i.e. preserving the
        --  by-copy semantic of aggregates. This avoids large stack usage and
        --  generates more efficient code.
  
!       elsif Parent_Kind = N_Assignment_Statement
!         and then In_Place_Assign_OK (N, Get_Base_Object (Name (Parent_Node)))
        then
!          declare
!             Lhs : constant Node_Id := Name (Parent_Node);
!          begin
!             --  Apply discriminant check if required
! 
!             if Has_Discriminants (Etype (N)) then
!                Apply_Discriminant_Check (N, Etype (Lhs), Lhs);
!             end if;
! 
!             --  The check just above may have replaced the aggregate with a CE
! 
!             if Nkind (N) in N_Aggregate | N_Extension_Aggregate then
!                Target_Expr := New_Copy_Tree (Lhs);
!                Insert_Actions (Parent_Node,
!                  Build_Record_Aggr_Code (N, Typ, Target_Expr));
!                Rewrite (Parent_Node, Make_Null_Statement (Loc));
!             end if;
!          end;
  
        else
           Temp := Make_Temporary (Loc, 'A', N);
*************** package body Exp_Aggr is
*** 4563,4573 ****
     ---------------------------
  
     procedure Convert_To_Positional
!      (N                    : Node_Id;
!       Max_Others_Replicate : Nat     := 32;
!       Handle_Bit_Packed    : Boolean := False)
     is
!       Typ : constant Entity_Id := Etype (N);
  
        Static_Components : Boolean := True;
  
--- 5033,5044 ----
     ---------------------------
  
     procedure Convert_To_Positional
!      (N                 : Node_Id;
!       Handle_Bit_Packed : Boolean := False)
     is
!       Typ                  : constant Entity_Id := Etype (N);
!       Dims                 : constant Nat := Number_Dimensions (Typ);
!       Max_Others_Replicate : constant Nat := Max_Aggregate_Size (N);
  
        Static_Components : Boolean := True;
  
*************** package body Exp_Aggr is
*** 4577,4594 ****
        --  expansion.
  
        function Flatten
!         (N   : Node_Id;
!          Ix  : Node_Id;
!          Ixb : Node_Id) return Boolean;
!       --  Convert the aggregate into a purely positional form if possible. On
!       --  entry the bounds of all dimensions are known to be static, and the
!       --  total number of components is safe enough to expand.
  
!       function Is_Flat (N : Node_Id; Dims : Int) return Boolean;
!       --  Return True iff the array N is flat (which is not trivial in the case
!       --  of multidimensional aggregates).
  
!       function Is_Static_Element (N : Node_Id) return Boolean;
        --  Return True if N, an element of a component association list, i.e.
        --  N_Component_Association or N_Iterated_Component_Association, has a
        --  compile-time known value and can be passed as is to the back-end
--- 5048,5065 ----
        --  expansion.
  
        function Flatten
!         (N    : Node_Id;
!          Dims : Nat;
!          Ix   : Node_Id;
!          Ixb  : Node_Id) return Boolean;
!       --  Convert the aggregate into a purely positional form if possible after
!       --  checking that the bounds of all dimensions are known to be static.
  
!       function Is_Flat (N : Node_Id; Dims : Nat) return Boolean;
!       --  Return True if the aggregate N is flat (which is not trivial in the
!       --  case of multidimensional aggregates).
  
!       function Is_Static_Element (N : Node_Id; Dims : Nat) return Boolean;
        --  Return True if N, an element of a component association list, i.e.
        --  N_Component_Association or N_Iterated_Component_Association, has a
        --  compile-time known value and can be passed as is to the back-end
*************** package body Exp_Aggr is
*** 4632,4638 ****
           then
              Assoc := First (Component_Associations (N));
              while Present (Assoc) loop
!                if not Is_Static_Element (Assoc) then
                    Static_Components := False;
                    exit;
                 end if;
--- 5103,5109 ----
           then
              Assoc := First (Component_Associations (N));
              while Present (Assoc) loop
!                if not Is_Static_Element (Assoc, Dims) then
                    Static_Components := False;
                    exit;
                 end if;
*************** package body Exp_Aggr is
*** 4647,4664 ****
        -------------
  
        function Flatten
!         (N   : Node_Id;
!          Ix  : Node_Id;
!          Ixb : Node_Id) return Boolean
        is
           Loc : constant Source_Ptr := Sloc (N);
           Blo : constant Node_Id    := Type_Low_Bound (Etype (Ixb));
           Lo  : constant Node_Id    := Type_Low_Bound (Etype (Ix));
           Hi  : constant Node_Id    := Type_High_Bound (Etype (Ix));
-          Lov : Uint;
-          Hiv : Uint;
  
!          Others_Present : Boolean := False;
  
        begin
           if Nkind (Original_Node (N)) = N_String_Literal then
--- 5118,5156 ----
        -------------
  
        function Flatten
!         (N    : Node_Id;
!          Dims : Nat;
!          Ix   : Node_Id;
!          Ixb  : Node_Id) return Boolean
        is
           Loc : constant Source_Ptr := Sloc (N);
           Blo : constant Node_Id    := Type_Low_Bound (Etype (Ixb));
           Lo  : constant Node_Id    := Type_Low_Bound (Etype (Ix));
           Hi  : constant Node_Id    := Type_High_Bound (Etype (Ix));
  
!          function Cannot_Flatten_Next_Aggr (Expr : Node_Id) return Boolean;
!          --  Return true if Expr is an aggregate for the next dimension that
!          --  cannot be recursively flattened.
! 
!          ------------------------------
!          -- Cannot_Flatten_Next_Aggr --
!          ------------------------------
! 
!          function Cannot_Flatten_Next_Aggr (Expr : Node_Id) return Boolean is
!          begin
!             return Nkind (Expr) = N_Aggregate
!               and then Present (Next_Index (Ix))
!               and then not
!                 Flatten (Expr, Dims - 1, Next_Index (Ix), Next_Index (Ixb));
!          end Cannot_Flatten_Next_Aggr;
! 
!          --  Local variables
! 
!          Lov            : Uint;
!          Hiv            : Uint;
!          Others_Present : Boolean;
! 
!       --  Start of processing for Flatten
  
        begin
           if Nkind (Original_Node (N)) = N_String_Literal then
*************** package body Exp_Aggr is
*** 4676,4681 ****
--- 5168,5175 ----
  
           --  Check if there is an others choice
  
+          Others_Present := False;
+ 
           if Present (Component_Associations (N)) then
              declare
                 Assoc   : Node_Id;
*************** package body Exp_Aggr is
*** 4736,4741 ****
--- 5230,5236 ----
              --  Used to validate Max_Others_Replicate limit
  
              Elmt         : Node_Id;
+             Expr         : Node_Id;
              Num          : Int := UI_To_Int (Lov);
              Choice_Index : Int;
              Choice       : Node_Id;
*************** package body Exp_Aggr is
*** 4745,4755 ****
              if Present (Expressions (N)) then
                 Elmt := First (Expressions (N));
                 while Present (Elmt) loop
!                   if Nkind (Elmt) = N_Aggregate
!                     and then Present (Next_Index (Ix))
!                     and then
!                       not Flatten (Elmt, Next_Index (Ix), Next_Index (Ixb))
!                   then
                       return False;
                    end if;
  
--- 5240,5249 ----
              if Present (Expressions (N)) then
                 Elmt := First (Expressions (N));
                 while Present (Elmt) loop
!                   --  In the case of a multidimensional array, check that the
!                   --  aggregate can be recursively flattened.
! 
!                   if Cannot_Flatten_Next_Aggr (Elmt) then
                       return False;
                    end if;
  
*************** package body Exp_Aggr is
*** 4768,4784 ****
  
              Elmt := First (Component_Associations (N));
  
!             if Nkind (Expression (Elmt)) = N_Aggregate then
!                if Present (Next_Index (Ix))
!                  and then
!                    not Flatten
!                          (Expression (Elmt), Next_Index (Ix), Next_Index (Ixb))
!                then
                    return False;
                 end if;
-             end if;
  
-             Component_Loop : while Present (Elmt) loop
                 Choice := First (Choice_List (Elmt));
                 Choice_Loop : while Present (Choice) loop
  
--- 5262,5277 ----
  
              Elmt := First (Component_Associations (N));
  
!             Component_Loop : while Present (Elmt) loop
!                Expr := Expression (Elmt);
! 
!                --  In the case of a multidimensional array, check that the
!                --  aggregate can be recursively flattened.
! 
!                if Cannot_Flatten_Next_Aggr (Expr) then
                    return False;
                 end if;
  
                 Choice := First (Choice_List (Elmt));
                 Choice_Loop : while Present (Choice) loop
  
*************** package body Exp_Aggr is
*** 4792,4810 ****
                       --  a loop, we must generate individual assignments and
                       --  no flattening is possible.
  
!                      if Nkind (Expression (Elmt)) = N_Quantified_Expression
!                      then
                          return False;
                       end if;
  
                       for J in Vals'Range loop
                          if No (Vals (J)) then
!                            Vals (J)  := New_Copy_Tree (Expression (Elmt));
                             Rep_Count := Rep_Count + 1;
  
                             --  Check for maximum others replication. Note that
                             --  we skip this test if either of the restrictions
!                            --  No_Elaboration_Code or No_Implicit_Loops is
                             --  active, if this is a preelaborable unit or
                             --  a predefined unit, or if the unit must be
                             --  placed in data memory. This also ensures that
--- 5285,5302 ----
                       --  a loop, we must generate individual assignments and
                       --  no flattening is possible.
  
!                      if Nkind (Expr) = N_Quantified_Expression then
                          return False;
                       end if;
  
                       for J in Vals'Range loop
                          if No (Vals (J)) then
!                            Vals (J)  := New_Copy_Tree (Expr);
                             Rep_Count := Rep_Count + 1;
  
                             --  Check for maximum others replication. Note that
                             --  we skip this test if either of the restrictions
!                            --  No_Implicit_Loops or No_Elaboration_Code is
                             --  active, if this is a preelaborable unit or
                             --  a predefined unit, or if the unit must be
                             --  placed in data memory. This also ensures that
*************** package body Exp_Aggr is
*** 4820,4856 ****
                                --  Check if duplication is always OK and, if so,
                                --  continue processing.
  
!                               if Restriction_Active (No_Elaboration_Code)
!                                 or else Restriction_Active (No_Implicit_Loops)
                                  or else
                                    (Ekind (Current_Scope) = E_Package
!                                     and then Static_Elaboration_Desired
!                                                (Current_Scope))
                                  or else Is_Preelaborated (P)
                                  or else (Ekind (P) = E_Package_Body
                                            and then
!                                             Is_Preelaborated (Spec_Entity (P)))
                                  or else
                                    Is_Predefined_Unit (Get_Source_Unit (P))
                                then
                                   null;
  
!                               --  If duplication is not always OK, continue
!                               --  only if either the element is static or is
!                               --  an aggregate which can itself be flattened,
!                               --  and the replication count is not too high.
! 
!                               elsif (Is_Static_Element (Elmt)
!                                        or else
!                                      (Nkind (Expression (Elmt)) = N_Aggregate
!                                        and then Present (Next_Index (Ix))))
!                                 and then Rep_Count <= Max_Others_Replicate
!                               then
!                                  null;
! 
!                               --  Return False in all the other cases
  
!                               else
                                   return False;
                                end if;
                             end;
--- 5312,5350 ----
                                --  Check if duplication is always OK and, if so,
                                --  continue processing.
  
!                               if Restriction_Active (No_Implicit_Loops) then
!                                  null;
! 
!                               --  If duplication is not always OK, continue
!                               --  only if either the element is static or is
!                               --  an aggregate (we already know it is OK).
! 
!                               elsif not Is_Static_Element (Elmt, Dims)
!                                 and then Nkind (Expr) /= N_Aggregate
!                               then
!                                  return False;
! 
!                               --  Check if duplication is OK for elaboration
!                               --  purposes and, if so, continue processing.
! 
!                               elsif Restriction_Active (No_Elaboration_Code)
                                  or else
                                    (Ekind (Current_Scope) = E_Package
!                                     and then
!                                    Static_Elaboration_Desired (Current_Scope))
                                  or else Is_Preelaborated (P)
                                  or else (Ekind (P) = E_Package_Body
                                            and then
!                                          Is_Preelaborated (Spec_Entity (P)))
                                  or else
                                    Is_Predefined_Unit (Get_Source_Unit (P))
                                then
                                   null;
  
!                               --  Otherwise, check that the replication count
!                               --  is not too high.
  
!                               elsif Rep_Count > Max_Others_Replicate then
                                   return False;
                                end if;
                             end;
*************** package body Exp_Aggr is
*** 4895,4902 ****
                          Choice_Index := UI_To_Int (Expr_Value (Choice));
  
                          if Choice_Index in Vals'Range then
!                            Vals (Choice_Index) :=
!                              New_Copy_Tree (Expression (Elmt));
                             goto Continue;
  
                          --  Choice is statically out-of-range, will be
--- 5389,5395 ----
                          Choice_Index := UI_To_Int (Expr_Value (Choice));
  
                          if Choice_Index in Vals'Range then
!                            Vals (Choice_Index) := New_Copy_Tree (Expr);
                             goto Continue;
  
                          --  Choice is statically out-of-range, will be
*************** package body Exp_Aggr is
*** 4920,4926 ****
                       for J in UI_To_Int (Expr_Value (Lo)) ..
                                UI_To_Int (Expr_Value (Hi))
                       loop
!                         Vals (J) := New_Copy_Tree (Expression (Elmt));
                       end loop;
                    end if;
  
--- 5413,5419 ----
                       for J in UI_To_Int (Expr_Value (Lo)) ..
                                UI_To_Int (Expr_Value (Hi))
                       loop
!                         Vals (J) := New_Copy_Tree (Expr);
                       end loop;
                    end if;
  
*************** package body Exp_Aggr is
*** 4948,4954 ****
        -- Is_Flat --
        -------------
  
!       function Is_Flat (N : Node_Id; Dims : Int) return Boolean is
           Elmt : Node_Id;
  
        begin
--- 5441,5447 ----
        -- Is_Flat --
        -------------
  
!       function Is_Flat (N : Node_Id; Dims : Nat) return Boolean is
           Elmt : Node_Id;
  
        begin
*************** package body Exp_Aggr is
*** 4980,4996 ****
        --  Is_Static_Element  --
        -------------------------
  
!       function Is_Static_Element (N : Node_Id) return Boolean is
           Expr : constant Node_Id := Expression (N);
  
        begin
!          if Nkind_In (Expr, N_Integer_Literal, N_Real_Literal) then
!             return True;
  
!          elsif Is_Entity_Name (Expr)
!            and then Present (Entity (Expr))
!            and then Ekind (Entity (Expr)) = E_Enumeration_Literal
!          then
              return True;
  
           elsif Nkind (N) = N_Iterated_Component_Association then
--- 5473,5485 ----
        --  Is_Static_Element  --
        -------------------------
  
!       function Is_Static_Element (N : Node_Id; Dims : Nat) return Boolean is
           Expr : constant Node_Id := Expression (N);
  
        begin
!          --  In most cases the interesting expressions are unambiguously static
  
!          if Compile_Time_Known_Value (Expr) then
              return True;
  
           elsif Nkind (N) = N_Iterated_Component_Association then
*************** package body Exp_Aggr is
*** 5002,5007 ****
--- 5491,5504 ----
           then
              return True;
  
+          --  However, one may write static expressions that are syntactically
+          --  ambiguous, so preanalyze the expression before checking it again,
+          --  but only at the innermost level for a multidimensional array.
+ 
+          elsif Dims = 1 then
+             Preanalyze_And_Resolve (Expr, Component_Type (Typ));
+             return Compile_Time_Known_Value (Expr);
+ 
           else
              return False;
           end if;
*************** package body Exp_Aggr is
*** 5031,5037 ****
        --  elaboration code, so that the aggregate can be used as the
        --  initial value of a thread-local variable.
  
!       if Is_Flat (N, Number_Dimensions (Typ)) then
           if Static_Array_Aggregate (N) then
              Set_Compile_Time_Known_Aggregate (N);
           end if;
--- 5528,5534 ----
        --  elaboration code, so that the aggregate can be used as the
        --  initial value of a thread-local variable.
  
!       if Is_Flat (N, Dims) then
           if Static_Array_Aggregate (N) then
              Set_Compile_Time_Known_Aggregate (N);
           end if;
*************** package body Exp_Aggr is
*** 5061,5072 ****
        --  compatible with the upper bound of the type, and therefore it is
        --  worth flattening such aggregates as well.
  
!       --  For now the back-end expands these aggregates into individual
!       --  assignments to the target anyway, but it is conceivable that
!       --  it will eventually be able to treat such aggregates statically???
! 
!       if Aggr_Size_OK (N, Typ)
!         and then Flatten (N, First_Index (Typ), First_Index (Base_Type (Typ)))
        then
           if Static_Components then
              Set_Compile_Time_Known_Aggregate (N);
--- 5558,5566 ----
        --  compatible with the upper bound of the type, and therefore it is
        --  worth flattening such aggregates as well.
  
!       if Aggr_Size_OK (N)
!         and then
!           Flatten (N, Dims, First_Index (Typ), First_Index (Base_Type (Typ)))
        then
           if Static_Components then
              Set_Compile_Time_Known_Aggregate (N);
*************** package body Exp_Aggr is
*** 5090,5103 ****
              if Nkind (N) = N_Aggregate and then Present (Expressions (N)) then
                 Expr := First (Expressions (N));
                 while Present (Expr) loop
!                   if Nkind_In (Expr, N_Integer_Literal, N_Real_Literal)
!                     or else
!                       (Is_Entity_Name (Expr)
!                         and then Ekind (Entity (Expr)) = E_Enumeration_Literal)
!                   then
!                      null;
! 
!                   else
                       Error_Msg_N
                         ("non-static object requires elaboration code??", N);
                       exit;
--- 5584,5590 ----
              if Nkind (N) = N_Aggregate and then Present (Expressions (N)) then
                 Expr := First (Expressions (N));
                 while Present (Expr) loop
!                   if not Compile_Time_Known_Value (Expr) then
                       Error_Msg_N
                         ("non-static object requires elaboration code??", N);
                       exit;
*************** package body Exp_Aggr is
*** 5178,5186 ****
        --  If Others_Present (J) is True, then there is an others choice in one
        --  of the subaggregates of N at dimension J.
  
-       function Aggr_Assignment_OK_For_Backend (N : Node_Id) return Boolean;
-       --  Returns true if an aggregate assignment can be done by the back end
- 
        procedure Build_Constrained_Type (Positional : Boolean);
        --  If the subtype is not static or unconstrained, build a constrained
        --  type using the computable sizes of the aggregate and its sub-
--- 5665,5670 ----
*************** package body Exp_Aggr is
*** 5212,5423 ****
        --  built directly into the target of the assignment it must be free
        --  of side effects.
  
-       ------------------------------------
-       -- Aggr_Assignment_OK_For_Backend --
-       ------------------------------------
- 
-       --  Backend processing by Gigi/gcc is possible only if all the following
-       --  conditions are met:
- 
-       --    1. N consists of a single OTHERS choice, possibly recursively
- 
-       --    2. The array type has no null ranges (the purpose of this is to
-       --       avoid a bogus warning for an out-of-range value).
- 
-       --    3. The array type has no atomic components
- 
-       --    4. The component type is elementary
- 
-       --    5. The component size is a multiple of Storage_Unit
- 
-       --    6. The component size is Storage_Unit or the value is of the form
-       --       M * (1 + A**1 + A**2 + .. A**(K-1)) where A = 2**(Storage_Unit)
-       --       and M in 1 .. A-1. This can also be viewed as K occurrences of
-       --       the 8-bit value M, concatenated together.
- 
-       --  The ultimate goal is to generate a call to a fast memset routine
-       --  specifically optimized for the target.
- 
-       function Aggr_Assignment_OK_For_Backend (N : Node_Id) return Boolean is
-          Csiz      : Uint;
-          Ctyp      : Entity_Id;
-          Expr      : Node_Id;
-          High      : Node_Id;
-          Index     : Entity_Id;
-          Low       : Node_Id;
-          Nunits    : Int;
-          Remainder : Uint;
-          Value     : Uint;
- 
-       begin
-          --  Back end doesn't know about <>
- 
-          if Has_Default_Init_Comps (N) then
-             return False;
-          end if;
- 
-          --  Recurse as far as possible to find the innermost component type
- 
-          Ctyp := Etype (N);
-          Expr := N;
-          while Is_Array_Type (Ctyp) loop
-             if Nkind (Expr) /= N_Aggregate
-               or else not Is_Others_Aggregate (Expr)
-             then
-                return False;
-             end if;
- 
-             Index := First_Index (Ctyp);
-             while Present (Index) loop
-                Get_Index_Bounds (Index, Low, High);
- 
-                if Is_Null_Range (Low, High) then
-                   return False;
-                end if;
- 
-                Next_Index (Index);
-             end loop;
- 
-             Expr := Expression (First (Component_Associations (Expr)));
- 
-             for J in 1 .. Number_Dimensions (Ctyp) - 1 loop
-                if Nkind (Expr) /= N_Aggregate
-                  or else not Is_Others_Aggregate (Expr)
-                then
-                   return False;
-                end if;
- 
-                Expr := Expression (First (Component_Associations (Expr)));
-             end loop;
- 
-             if Has_Atomic_Components (Ctyp) then
-                return False;
-             end if;
- 
-             Csiz := Component_Size (Ctyp);
-             Ctyp := Component_Type (Ctyp);
- 
-             if Is_Atomic_Or_VFA (Ctyp) then
-                return False;
-             end if;
-          end loop;
- 
-          --  An Iterated_Component_Association involves a loop (in most cases)
-          --  and is never static.
- 
-          if Nkind (Parent (Expr)) = N_Iterated_Component_Association then
-             return False;
-          end if;
- 
-          --  Access types need to be dealt with specially
- 
-          if Is_Access_Type (Ctyp) then
- 
-             --  Component_Size is not set by Layout_Type if the component
-             --  type is an access type ???
- 
-             Csiz := Esize (Ctyp);
- 
-             --  Fat pointers are rejected as they are not really elementary
-             --  for the backend.
- 
-             if Csiz /= System_Address_Size then
-                return False;
-             end if;
- 
-             --  The supported expressions are NULL and constants, others are
-             --  rejected upfront to avoid being analyzed below, which can be
-             --  problematic for some of them, for example allocators.
- 
-             if Nkind (Expr) /= N_Null and then not Is_Entity_Name (Expr) then
-                return False;
-             end if;
- 
-          --  Scalar types are OK if their size is a multiple of Storage_Unit
- 
-          elsif Is_Scalar_Type (Ctyp) then
-             if Csiz mod System_Storage_Unit /= 0 then
-                return False;
-             end if;
- 
-          --  Composite types are rejected
- 
-          else
-             return False;
-          end if;
- 
-          --  If the expression has side effects (e.g. contains calls with
-          --  potential side effects) reject as well. We only preanalyze the
-          --  expression to prevent the removal of intended side effects.
- 
-          Preanalyze_And_Resolve (Expr, Ctyp);
- 
-          if not Side_Effect_Free (Expr) then
-             return False;
-          end if;
- 
-          --  The expression needs to be analyzed if True is returned
- 
-          Analyze_And_Resolve (Expr, Ctyp);
- 
-          --  Strip away any conversions from the expression as they simply
-          --  qualify the real expression.
- 
-          while Nkind_In (Expr, N_Unchecked_Type_Conversion,
-                                N_Type_Conversion)
-          loop
-             Expr := Expression (Expr);
-          end loop;
- 
-          Nunits := UI_To_Int (Csiz) / System_Storage_Unit;
- 
-          if Nunits = 1 then
-             return True;
-          end if;
- 
-          if not Compile_Time_Known_Value (Expr) then
-             return False;
-          end if;
- 
-          --  The only supported value for floating point is 0.0
- 
-          if Is_Floating_Point_Type (Ctyp) then
-             return Expr_Value_R (Expr) = Ureal_0;
-          end if;
- 
-          --  For other types, we can look into the value as an integer
- 
-          Value := Expr_Value (Expr);
- 
-          if Has_Biased_Representation (Ctyp) then
-             Value := Value - Expr_Value (Type_Low_Bound (Ctyp));
-          end if;
- 
-          --  Values 0 and -1 immediately satisfy the last check
- 
-          if Value = Uint_0 or else Value = Uint_Minus_1 then
-             return True;
-          end if;
- 
-          --  We need to work with an unsigned value
- 
-          if Value < 0 then
-             Value := Value + 2**(System_Storage_Unit * Nunits);
-          end if;
- 
-          Remainder := Value rem 2**System_Storage_Unit;
- 
-          for J in 1 .. Nunits - 1 loop
-             Value := Value / 2**System_Storage_Unit;
- 
-             if Value rem 2**System_Storage_Unit /= Remainder then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end Aggr_Assignment_OK_For_Backend;
- 
        ----------------------------
        -- Build_Constrained_Type --
        ----------------------------
--- 5696,5701 ----
*************** package body Exp_Aggr is
*** 5848,5873 ****
           --       raise Constraint_Error;
           --    end if;
  
           elsif Nb_Elements > Uint_0 then
!             Cond :=
!               Make_Op_Gt (Loc,
!                 Left_Opnd  =>
!                   Make_Op_Add (Loc,
!                     Left_Opnd  =>
!                       Make_Attribute_Reference (Loc,
!                         Prefix         => New_Occurrence_Of (Ind_Typ, Loc),
!                         Attribute_Name => Name_Pos,
!                         Expressions    =>
!                           New_List
!                             (Duplicate_Subexpr_Move_Checks (Aggr_Lo))),
!                 Right_Opnd => Make_Integer_Literal (Loc, Nb_Elements - 1)),
  
!                 Right_Opnd =>
!                   Make_Attribute_Reference (Loc,
!                     Prefix         => New_Occurrence_Of (Ind_Typ, Loc),
!                     Attribute_Name => Name_Pos,
!                     Expressions    => New_List (
!                       Duplicate_Subexpr_Move_Checks (Aggr_Hi))));
  
           --  If we are dealing with an aggregate containing an others choice
           --  and discrete choices we generate the following test:
--- 6126,6176 ----
           --       raise Constraint_Error;
           --    end if;
  
+          --  in the general case, but the following simpler test:
+ 
+          --    [constraint_error when
+          --      Aggr_Lo + (Nb_Elements - 1) > Aggr_Hi];
+ 
+          --  instead if the index type is a signed integer.
+ 
           elsif Nb_Elements > Uint_0 then
!             if Nb_Elements = Uint_1 then
!                Cond :=
!                  Make_Op_Gt (Loc,
!                    Left_Opnd  => Duplicate_Subexpr_Move_Checks (Aggr_Lo),
!                    Right_Opnd => Duplicate_Subexpr_Move_Checks (Aggr_Hi));
  
!             elsif Is_Signed_Integer_Type (Ind_Typ) then
!                Cond :=
!                  Make_Op_Gt (Loc,
!                    Left_Opnd  =>
!                      Make_Op_Add (Loc,
!                        Left_Opnd  => Duplicate_Subexpr_Move_Checks (Aggr_Lo),
!                        Right_Opnd =>
!                          Make_Integer_Literal (Loc, Nb_Elements - 1)),
!                    Right_Opnd => Duplicate_Subexpr_Move_Checks (Aggr_Hi));
! 
!             else
!                Cond :=
!                  Make_Op_Gt (Loc,
!                    Left_Opnd  =>
!                      Make_Op_Add (Loc,
!                        Left_Opnd  =>
!                          Make_Attribute_Reference (Loc,
!                            Prefix         => New_Occurrence_Of (Ind_Typ, Loc),
!                            Attribute_Name => Name_Pos,
!                            Expressions    =>
!                              New_List
!                                (Duplicate_Subexpr_Move_Checks (Aggr_Lo))),
!                    Right_Opnd => Make_Integer_Literal (Loc, Nb_Elements - 1)),
! 
!                    Right_Opnd =>
!                      Make_Attribute_Reference (Loc,
!                        Prefix         => New_Occurrence_Of (Ind_Typ, Loc),
!                        Attribute_Name => Name_Pos,
!                        Expressions    => New_List (
!                          Duplicate_Subexpr_Move_Checks (Aggr_Hi))));
!             end if;
  
           --  If we are dealing with an aggregate containing an others choice
           --  and discrete choices we generate the following test:
*************** package body Exp_Aggr is
*** 5968,5974 ****
           if Is_Entity_Name (N) then
              return True;
  
!          elsif Nkind_In (N, N_Explicit_Dereference, N_Selected_Component)
             and then Safe_Left_Hand_Side (Prefix (N))
           then
              return True;
--- 6271,6277 ----
           if Is_Entity_Name (N) then
              return True;
  
!          elsif Nkind (N) in N_Explicit_Dereference | N_Selected_Component
             and then Safe_Left_Hand_Side (Prefix (N))
           then
              return True;
*************** package body Exp_Aggr is
*** 6153,6167 ****
  
        --  At this point we try to convert to positional form
  
!       if Ekind (Current_Scope) = E_Package
!         and then Static_Elaboration_Desired (Current_Scope)
!       then
!          Convert_To_Positional (N, Max_Others_Replicate => 100);
!       else
!          Convert_To_Positional (N);
!       end if;
  
!       --  if the result is no longer an aggregate (e.g. it may be a string
        --  literal, or a temporary which has the needed value), then we are
        --  done, since there is no longer a nested aggregate.
  
--- 6456,6464 ----
  
        --  At this point we try to convert to positional form
  
!       Convert_To_Positional (N);
  
!       --  If the result is no longer an aggregate (e.g. it may be a string
        --  literal, or a temporary which has the needed value), then we are
        --  done, since there is no longer a nested aggregate.
  
*************** package body Exp_Aggr is
*** 6283,6296 ****
        then
           Maybe_In_Place_OK := False;
  
!       else
           Maybe_In_Place_OK :=
!           (Nkind (Parent (N)) = N_Assignment_Statement
!             and then In_Place_Assign_OK (N))
  
!             or else
!              (Nkind (Parent (Parent (N))) = N_Allocator
!               and then In_Place_Assign_OK (N));
        end if;
  
        --  If this is an array of tasks, it will be expanded into build-in-place
--- 6580,6594 ----
        then
           Maybe_In_Place_OK := False;
  
!       elsif Parent_Kind = N_Assignment_Statement then
           Maybe_In_Place_OK :=
!            In_Place_Assign_OK (N, Get_Base_Object (Name (Parent_Node)));
  
!       elsif Parent_Kind = N_Allocator then
!          Maybe_In_Place_OK := In_Place_Assign_OK (N);
! 
!       else
!          Maybe_In_Place_OK := False;
        end if;
  
        --  If this is an array of tasks, it will be expanded into build-in-place
*************** package body Exp_Aggr is
*** 6307,6316 ****
        --  object. (Note: we don't use a block statement because this would
        --  cause generated freeze nodes to be elaborated in the wrong scope).
  
-       --  Do not perform in-place expansion for SPARK 05 because aggregates are
-       --  expected to appear in qualified form. In-place expansion eliminates
-       --  the qualification and eventually violates this SPARK 05 restiction.
- 
        --  Arrays of limited components must be built in place. The code
        --  previously excluded controlled components but this is an old
        --  oversight: the rules in 7.6 (17) are clear.
--- 6605,6610 ----
*************** package body Exp_Aggr is
*** 6321,6327 ****
          and then not
            Must_Slide (Etype (Defining_Identifier (Parent_Node)), Typ)
          and then not Is_Bit_Packed_Array (Typ)
-         and then not Restriction_Check_Required (SPARK_05)
        then
           In_Place_Assign_OK_For_Declaration := True;
           Tmp := Defining_Identifier (Parent_Node);
--- 6615,6620 ----
*************** package body Exp_Aggr is
*** 6349,6358 ****
              Set_Etype (Tmp, Typ);
           end if;
  
!       elsif Maybe_In_Place_OK
!         and then Nkind (Parent (N)) = N_Qualified_Expression
!         and then Nkind (Parent (Parent (N))) = N_Allocator
!       then
           Set_Expansion_Delayed (N);
           return;
  
--- 6642,6648 ----
              Set_Etype (Tmp, Typ);
           end if;
  
!       elsif Maybe_In_Place_OK and then Parent_Kind = N_Allocator then
           Set_Expansion_Delayed (N);
           return;
  
*************** package body Exp_Aggr is
*** 6360,6366 ****
        --  enclosing construct is expanded.
  
        elsif Maybe_In_Place_OK
!         and then Nkind (Parent (N)) = N_Simple_Return_Statement
        then
           Set_Expansion_Delayed (N);
           return;
--- 6650,6656 ----
        --  enclosing construct is expanded.
  
        elsif Maybe_In_Place_OK
!         and then Parent_Kind = N_Simple_Return_Statement
        then
           Set_Expansion_Delayed (N);
           return;
*************** package body Exp_Aggr is
*** 6368,6376 ****
        --  In the remaining cases the aggregate is the RHS of an assignment
  
        elsif Maybe_In_Place_OK
!         and then Safe_Left_Hand_Side (Name (Parent (N)))
        then
!          Tmp := Name (Parent (N));
  
           if Etype (Tmp) /= Etype (N) then
              Apply_Length_Check (N, Etype (Tmp));
--- 6658,6666 ----
        --  In the remaining cases the aggregate is the RHS of an assignment
  
        elsif Maybe_In_Place_OK
!         and then Safe_Left_Hand_Side (Name (Parent_Node))
        then
!          Tmp := Name (Parent_Node);
  
           if Etype (Tmp) /= Etype (N) then
              Apply_Length_Check (N, Etype (Tmp));
*************** package body Exp_Aggr is
*** 6388,6397 ****
        --  by converting it into a loop over the discrete range of the slice.
  
        elsif Maybe_In_Place_OK
!         and then Nkind (Name (Parent (N))) = N_Slice
          and then Is_Others_Aggregate (N)
        then
!          Tmp := Name (Parent (N));
  
           --  Set type of aggregate to be type of lhs in assignment, in order
           --  to suppress redundant length checks.
--- 6678,6687 ----
        --  by converting it into a loop over the discrete range of the slice.
  
        elsif Maybe_In_Place_OK
!         and then Nkind (Name (Parent_Node)) = N_Slice
          and then Is_Others_Aggregate (N)
        then
!          Tmp := Name (Parent_Node);
  
           --  Set type of aggregate to be type of lhs in assignment, in order
           --  to suppress redundant length checks.
*************** package body Exp_Aggr is
*** 6419,6425 ****
           --  around the aggregate for this purpose.
  
           if Ekind (Current_Scope) = E_Loop
!            and then Nkind (Parent (Parent (N))) = N_Allocator
           then
              Establish_Transient_Scope (N, Manage_Sec_Stack => False);
           end if;
--- 6709,6715 ----
           --  around the aggregate for this purpose.
  
           if Ekind (Current_Scope) = E_Loop
!            and then Parent_Kind = N_Allocator
           then
              Establish_Transient_Scope (N, Manage_Sec_Stack => False);
           end if;
*************** package body Exp_Aggr is
*** 6493,6499 ****
           if Needs_Finalization (Typ)
             and then Is_Entity_Name (Target)
             and then Present (Entity (Target))
!            and then Ekind_In (Entity (Target), E_Constant, E_Variable)
           then
              Set_Last_Aggregate_Assignment (Entity (Target), Last (Aggr_Code));
           end if;
--- 6783,6789 ----
           if Needs_Finalization (Typ)
             and then Is_Entity_Name (Target)
             and then Present (Entity (Target))
!            and then Ekind (Entity (Target)) in E_Constant | E_Variable
           then
              Set_Last_Aggregate_Assignment (Entity (Target), Last (Aggr_Code));
           end if;
*************** package body Exp_Aggr is
*** 6529,6541 ****
        --  If the aggregate has been assigned in place, remove the original
        --  assignment.
  
!       if Nkind (Parent (N)) = N_Assignment_Statement
!         and then Maybe_In_Place_OK
!       then
!          Rewrite (Parent (N), Make_Null_Statement (Loc));
  
!       elsif Nkind (Parent (N)) /= N_Object_Declaration
!         or else Tmp /= Defining_Identifier (Parent (N))
        then
           Rewrite (N, New_Occurrence_Of (Tmp, Loc));
           Analyze_And_Resolve (N, Typ);
--- 6819,6831 ----
        --  If the aggregate has been assigned in place, remove the original
        --  assignment.
  
!       if Parent_Kind = N_Assignment_Statement and then Maybe_In_Place_OK then
!          Rewrite (Parent_Node, Make_Null_Statement (Loc));
  
!       --  Or else, if a temporary was created, replace the aggregate with it
! 
!       elsif Parent_Kind /= N_Object_Declaration
!         or else Tmp /= Defining_Identifier (Parent_Node)
        then
           Rewrite (N, New_Occurrence_Of (Tmp, Loc));
           Analyze_And_Resolve (N, Typ);
*************** package body Exp_Aggr is
*** 6547,6558 ****
     ------------------------
  
     procedure Expand_N_Aggregate (N : Node_Id) is
     begin
        --  Record aggregate case
  
!       if Is_Record_Type (Etype (N)) then
           Expand_Record_Aggregate (N);
  
        --  Array aggregate case
  
        else
--- 6837,6854 ----
     ------------------------
  
     procedure Expand_N_Aggregate (N : Node_Id) is
+       T : constant Entity_Id := Etype (N);
     begin
        --  Record aggregate case
  
!       if Is_Record_Type (T)
!         and then not Is_Private_Type (T)
!       then
           Expand_Record_Aggregate (N);
  
+       elsif Has_Aspect (T, Aspect_Aggregate) then
+          Expand_Container_Aggregate (N);
+ 
        --  Array aggregate case
  
        else
*************** package body Exp_Aggr is
*** 6598,6608 ****
                   and then No (Expressions (N))
                 then
                    declare
!                      T  : constant Entity_Id := Etype (N);
!                      X  : constant Node_Id   := First_Index (T);
!                      EC : constant Node_Id   := Expression (CA);
!                      CV : constant Uint      := Char_Literal_Value (EC);
!                      CC : constant Int       := UI_To_Int (CV);
  
                    begin
                       if Nkind (X) = N_Range
--- 6894,6903 ----
                   and then No (Expressions (N))
                 then
                    declare
!                      X  : constant Node_Id := First_Index (T);
!                      EC : constant Node_Id := Expression (CA);
!                      CV : constant Uint    := Char_Literal_Value (EC);
!                      CC : constant Int     := UI_To_Int (CV);
  
                    begin
                       if Nkind (X) = N_Range
*************** package body Exp_Aggr is
*** 6652,6664 ****
           return;
     end Expand_N_Aggregate;
  
     ------------------------------
     -- Expand_N_Delta_Aggregate --
     ------------------------------
  
     procedure Expand_N_Delta_Aggregate (N : Node_Id) is
        Loc  : constant Source_Ptr := Sloc (N);
!       Typ  : constant Entity_Id  := Etype (N);
        Decl : Node_Id;
  
     begin
--- 6947,7528 ----
           return;
     end Expand_N_Aggregate;
  
+    --------------------------------
+    -- Expand_Container_Aggregate --
+    --------------------------------
+ 
+    procedure Expand_Container_Aggregate (N : Node_Id) is
+       Loc : constant Source_Ptr := Sloc (N);
+       Typ : constant Entity_Id := Etype (N);
+       Asp : constant Node_Id := Find_Value_Of_Aspect (Typ, Aspect_Aggregate);
+ 
+       Empty_Subp          : Node_Id := Empty;
+       Add_Named_Subp      : Node_Id := Empty;
+       Add_Unnamed_Subp    : Node_Id := Empty;
+       New_Indexed_Subp    : Node_Id := Empty;
+       Assign_Indexed_Subp : Node_Id := Empty;
+ 
+       Aggr_Code : constant List_Id   := New_List;
+       Temp      : constant Entity_Id := Make_Temporary (Loc, 'C', N);
+ 
+       Comp      : Node_Id;
+       Decl      : Node_Id;
+       Default   : Node_Id;
+       Init_Stat : Node_Id;
+       Siz       : Int;
+ 
+       function Aggregate_Size return Int;
+       --  Compute number of entries in aggregate, including choices
+       --  that cover a range, as well as iterated constructs.
+       --  Return -1 if the size is not known statically, in which case
+       --  we allocate a default size for the aggregate.
+ 
+       procedure Expand_Iterated_Component (Comp : Node_Id);
+       --  Handle iterated_component_association and iterated_Element
+       --  association by generating a loop over the specified range,
+       --  given either by a loop parameter specification or an iterator
+       --  specification.
+ 
+       --------------------
+       -- Aggregate_Size --
+       --------------------
+ 
+       function Aggregate_Size return Int is
+          Comp   : Node_Id;
+          Choice : Node_Id;
+          Lo, Hi : Node_Id;
+          Siz     : Int := 0;
+ 
+          procedure Add_Range_Size;
+          --  Compute size of component association given by
+          --  range or subtype name.
+ 
+          procedure Add_Range_Size is
+          begin
+             if Nkind (Lo) = N_Integer_Literal then
+                Siz := Siz + UI_To_Int (Intval (Hi))
+                  - UI_To_Int (Intval (Lo)) + 1;
+             end if;
+          end Add_Range_Size;
+ 
+       begin
+          if Present (Expressions (N)) then
+             Siz := List_Length (Expressions (N));
+          end if;
+ 
+          if Present (Component_Associations (N)) then
+             Comp := First (Component_Associations (N));
+ 
+             --  If the component is an Iterated_Element_Association
+             --  it includes an iterator or a loop parameter, possibly
+             --  with a filter, so we do not attempt to compute its
+             --  size. Room for future optimization ???
+ 
+             if Nkind (Comp) = N_Iterated_Element_Association then
+                return -1;
+             end if;
+ 
+             while Present (Comp) loop
+                Choice := First (Choice_List (Comp));
+ 
+                while Present (Choice) loop
+                   Analyze (Choice);
+ 
+                   if Nkind (Choice) = N_Range then
+                      Lo := Low_Bound (Choice);
+                      Hi := High_Bound (Choice);
+                      if Nkind (Lo) /= N_Integer_Literal
+                        or else Nkind (Hi) /= N_Integer_Literal
+                      then
+                         return -1;
+                      else
+                         Add_Range_Size;
+                      end if;
+ 
+                   elsif Is_Entity_Name (Choice)
+                     and then Is_Type (Entity (Choice))
+                   then
+                      Lo := Type_Low_Bound (Entity (Choice));
+                      Hi := Type_High_Bound (Entity (Choice));
+                      if Nkind (Lo) /= N_Integer_Literal
+                        or else Nkind (Hi) /= N_Integer_Literal
+                      then
+                         return -1;
+                      else
+                         Add_Range_Size;
+                      end if;
+ 
+                      Rewrite (Choice,
+                        Make_Range (Loc,
+                          New_Copy_Tree (Lo),
+                          New_Copy_Tree (Hi)));
+ 
+                   else
+                      --  Single choice (syntax excludes a subtype
+                      --  indication).
+ 
+                      Siz := Siz + 1;
+                   end if;
+ 
+                   Next (Choice);
+                end loop;
+                Next (Comp);
+             end loop;
+          end if;
+ 
+          return Siz;
+       end Aggregate_Size;
+ 
+       -------------------------------
+       -- Expand_Iterated_Component --
+       -------------------------------
+ 
+       procedure Expand_Iterated_Component (Comp : Node_Id) is
+          Expr    : constant Node_Id := Expression (Comp);
+ 
+          Key_Expr           : Node_Id := Empty;
+          Loop_Id            : Entity_Id;
+          L_Range            : Node_Id;
+          L_Iteration_Scheme : Node_Id;
+          Loop_Stat          : Node_Id;
+          Params             : List_Id;
+          Stats              : List_Id;
+ 
+       begin
+          if Nkind (Comp) = N_Iterated_Element_Association then
+             Key_Expr := Key_Expression (Comp);
+ 
+             --  We create a new entity as loop identifier in all cases,
+             --  as is done for generated loops elsewhere, as the loop
+             --  structure has been previously analyzed.
+ 
+             if Present (Iterator_Specification (Comp)) then
+ 
+                --  Either an Iterator_Specification of a Loop_Parameter_
+                --  Specification is present.
+ 
+                L_Iteration_Scheme :=
+                  Make_Iteration_Scheme (Loc,
+                    Iterator_Specification => Iterator_Specification (Comp));
+                Loop_Id :=
+                   Make_Defining_Identifier (Loc,
+                     Chars => Chars (Defining_Identifier
+                                (Iterator_Specification (Comp))));
+                Set_Defining_Identifier
+                   (Iterator_Specification (L_Iteration_Scheme), Loop_Id);
+ 
+             else
+                L_Iteration_Scheme :=
+                  Make_Iteration_Scheme (Loc,
+                    Loop_Parameter_Specification =>
+                      Loop_Parameter_Specification (Comp));
+                Loop_Id :=
+                  Make_Defining_Identifier (Loc,
+                    Chars => Chars (Defining_Identifier
+                               (Loop_Parameter_Specification (Comp))));
+                Set_Defining_Identifier
+                  (Loop_Parameter_Specification
+                     (L_Iteration_Scheme), Loop_Id);
+             end if;
+          else
+ 
+             --  Iterated_Component_Association.
+ 
+             Loop_Id :=
+               Make_Defining_Identifier (Loc,
+                 Chars => Chars (Defining_Identifier (Comp)));
+ 
+             if Present (Iterator_Specification (Comp)) then
+                L_Iteration_Scheme :=
+                  Make_Iteration_Scheme (Loc,
+                    Iterator_Specification => Iterator_Specification (Comp));
+ 
+             else
+                --  Loop_Parameter_Specifcation is parsed with a choice list.
+                --  where the range is the first (and only) choice.
+ 
+                L_Range := Relocate_Node (First (Discrete_Choices (Comp)));
+ 
+                L_Iteration_Scheme :=
+                  Make_Iteration_Scheme (Loc,
+                    Loop_Parameter_Specification =>
+                      Make_Loop_Parameter_Specification (Loc,
+                        Defining_Identifier => Loop_Id,
+                        Discrete_Subtype_Definition => L_Range));
+             end if;
+          end if;
+ 
+          --  Build insertion statement. For a positional aggregate, only the
+          --  expression is needed. For a named aggregate, the loop variable,
+          --  whose type is that of the key, is an additional parameter for
+          --  the insertion operation.
+          --  If a Key_Expression is present, it serves as the additional
+          --  parameter. Otherwise the key is given by the loop parameter
+          --  itself.
+ 
+          if Present (Add_Unnamed_Subp) then
+             Stats := New_List
+               (Make_Procedure_Call_Statement (Loc,
+                  Name => New_Occurrence_Of (Entity (Add_Unnamed_Subp), Loc),
+                  Parameter_Associations =>
+                    New_List (New_Occurrence_Of (Temp, Loc),
+                      New_Copy_Tree (Expr))));
+          else
+             --  Named or indexed aggregate, for which a key is present,
+             --  possibly with a specified key_expression.
+ 
+             if Present (Key_Expr) then
+                Params := New_List (New_Occurrence_Of (Temp, Loc),
+                             New_Copy_Tree (Key_Expr),
+                             New_Copy_Tree (Expr));
+             else
+                Params := New_List (New_Occurrence_Of (Temp, Loc),
+                             New_Occurrence_Of (Loop_Id, Loc),
+                             New_Copy_Tree (Expr));
+             end if;
+ 
+             Stats := New_List
+               (Make_Procedure_Call_Statement (Loc,
+                  Name => New_Occurrence_Of (Entity (Add_Named_Subp), Loc),
+                  Parameter_Associations => Params));
+          end if;
+ 
+          Loop_Stat :=  Make_Implicit_Loop_Statement
+                          (Node             => N,
+                           Identifier       => Empty,
+                           Iteration_Scheme => L_Iteration_Scheme,
+                           Statements       => Stats);
+          Append (Loop_Stat, Aggr_Code);
+ 
+       end Expand_Iterated_Component;
+ 
+       --  Start of processing for Expand_Container_Aggregate
+ 
+    begin
+       Parse_Aspect_Aggregate (Asp,
+         Empty_Subp, Add_Named_Subp, Add_Unnamed_Subp,
+         New_Indexed_Subp, Assign_Indexed_Subp);
+ 
+       --  The constructor for bounded containers is a function with
+       --  a parameter that sets the size of the container. If the
+       --  size cannot be determined statically we use a default value.
+ 
+       Siz := Aggregate_Size;
+       if Siz < 0 then
+          Siz := 10;
+       end if;
+ 
+       if Ekind (Entity (Empty_Subp)) = E_Function
+         and then Present (First_Formal (Entity (Empty_Subp)))
+       then
+          Default := Default_Value (First_Formal (Entity (Empty_Subp)));
+          --  If aggregate size is not static, use default value of
+          --  formal parameter for allocation. We assume that this
+          --  (implementation-dependent) value is static, even though
+          --   the AI does not require it ???.
+ 
+          if Siz < 0 then
+             Siz := UI_To_Int (Intval (Default));
+          end if;
+ 
+          Init_Stat :=
+            Make_Object_Declaration (Loc,
+              Defining_Identifier => Temp,
+              Object_Definition   => New_Occurrence_Of (Typ, Loc),
+              Expression => Make_Function_Call (Loc,
+                Name => New_Occurrence_Of (Entity (Empty_Subp), Loc),
+                Parameter_Associations =>
+                  New_List (Make_Integer_Literal (Loc, Siz))));
+ 
+          Append (Init_Stat, Aggr_Code);
+ 
+          --  Use default value when aggregate size is not static.
+ 
+       else
+          Decl :=
+            Make_Object_Declaration (Loc,
+              Defining_Identifier => Temp,
+              Object_Definition   => New_Occurrence_Of (Typ, Loc));
+ 
+          Insert_Action (N, Decl);
+          if Ekind (Entity (Empty_Subp)) = E_Function then
+             Init_Stat := Make_Assignment_Statement (Loc,
+               Name => New_Occurrence_Of (Temp, Loc),
+               Expression => Make_Function_Call (Loc,
+                 Name => New_Occurrence_Of (Entity (Empty_Subp), Loc)));
+          else
+             Init_Stat := Make_Assignment_Statement (Loc,
+               Name => New_Occurrence_Of (Temp, Loc),
+               Expression => New_Occurrence_Of (Entity (Empty_Subp), Loc));
+          end if;
+ 
+          Append (Init_Stat, Aggr_Code);
+       end if;
+ 
+       ---------------------------
+       --  Positional aggregate --
+       ---------------------------
+ 
+       --  If the aggregate is positional the aspect must include
+       --  an Add_Unnamed subprogram.
+ 
+       if Present (Add_Unnamed_Subp)
+         and then No (Component_Associations (N))
+       then
+          if Present (Expressions (N)) then
+             declare
+                Insert : constant Entity_Id := Entity (Add_Unnamed_Subp);
+                Comp   : Node_Id;
+                Stat   : Node_Id;
+ 
+             begin
+                Comp := First (Expressions (N));
+                while Present (Comp) loop
+                   Stat := Make_Procedure_Call_Statement (Loc,
+                     Name => New_Occurrence_Of (Insert, Loc),
+                     Parameter_Associations =>
+                       New_List (New_Occurrence_Of (Temp, Loc),
+                         New_Copy_Tree (Comp)));
+                   Append (Stat, Aggr_Code);
+                   Next (Comp);
+                end loop;
+             end;
+          end if;
+ 
+          --  Iterated component associations may also be present.
+ 
+          Comp := First (Component_Associations (N));
+          while Present (Comp) loop
+             Expand_Iterated_Component (Comp);
+             Next (Comp);
+          end loop;
+ 
+       ---------------------
+       -- Named_Aggregate --
+       ---------------------
+ 
+       elsif Present (Add_Named_Subp) then
+          declare
+             Insert : constant Entity_Id := Entity (Add_Named_Subp);
+             Stat   : Node_Id;
+             Key    : Node_Id;
+          begin
+             Comp := First (Component_Associations (N));
+ 
+             --  Each component association may contain several choices;
+             --  generate an insertion statement for each.
+ 
+             while Present (Comp) loop
+                if Nkind (Comp) in N_Iterated_Component_Association
+                                 | N_Iterated_Element_Association
+                then
+                   Expand_Iterated_Component (Comp);
+                else
+                   Key := First (Choices (Comp));
+ 
+                   while Present (Key) loop
+                      Stat := Make_Procedure_Call_Statement (Loc,
+                        Name => New_Occurrence_Of (Insert, Loc),
+                        Parameter_Associations =>
+                          New_List (New_Occurrence_Of (Temp, Loc),
+                            New_Copy_Tree (Key),
+                            New_Copy_Tree (Expression (Comp))));
+                      Append (Stat, Aggr_Code);
+ 
+                      Next (Key);
+                   end loop;
+                end if;
+ 
+                Next (Comp);
+             end loop;
+          end;
+       end if;
+ 
+       -----------------------
+       -- Indexed_Aggregate --
+       -----------------------
+ 
+       --  For an indexed aggregate there must be an Assigned_Indexeed
+       --  subprogram. Note that unlike array aggregates, a container
+       --  aggregate must be fully positional or fully indexed. In the
+       --  first case the expansion has already taken place.
+ 
+       if Present (Assign_Indexed_Subp)
+         and then Present (Component_Associations (N))
+       then
+          declare
+             Insert : constant Entity_Id := Entity (Assign_Indexed_Subp);
+             Index_Type : constant Entity_Id :=
+                Etype (Next_Formal (First_Formal (Insert)));
+ 
+             function  Expand_Range_Component
+               (Rng  : Node_Id;
+                Expr : Node_Id) return Node_Id;
+             --  Transform a component assoication with a range into an
+             --  explicit loop. If the choice is a subtype name, it is
+             --  rewritten as a range with the corresponding bounds, which
+             --  are known to be static.
+ 
+             Comp   : Node_Id;
+             Index  : Node_Id;
+             Pos    : Int := 0;
+             Stat   : Node_Id;
+             Key    : Node_Id;
+ 
+             -----------------------------
+             -- Expand_Raange_Component --
+             -----------------------------
+ 
+             function Expand_Range_Component
+               (Rng  : Node_Id;
+                Expr : Node_Id) return Node_Id
+             is
+                Loop_Id : constant Entity_Id :=
+                  Make_Temporary (Loc, 'T');
+ 
+                L_Iteration_Scheme : Node_Id;
+                Stats              : List_Id;
+ 
+             begin
+                L_Iteration_Scheme :=
+                  Make_Iteration_Scheme (Loc,
+                    Loop_Parameter_Specification =>
+                      Make_Loop_Parameter_Specification (Loc,
+                        Defining_Identifier => Loop_Id,
+                        Discrete_Subtype_Definition => New_Copy_Tree (Rng)));
+ 
+                Stats := New_List
+                  (Make_Procedure_Call_Statement (Loc,
+                     Name =>
+                       New_Occurrence_Of (Entity (Assign_Indexed_Subp), Loc),
+                     Parameter_Associations =>
+                       New_List (New_Occurrence_Of (Temp, Loc),
+                         New_Occurrence_Of (Loop_Id, Loc),
+                         New_Copy_Tree (Expr))));
+ 
+                return  Make_Implicit_Loop_Statement
+                          (Node             => N,
+                           Identifier       => Empty,
+                           Iteration_Scheme => L_Iteration_Scheme,
+                           Statements       => Stats);
+             end Expand_Range_Component;
+ 
+          begin
+             if Siz > 0 then
+ 
+                --  Modify the call to the constructor to allocate the
+                --  required size for the aggregwte : call the provided
+                --  constructor rather than the Empty aggregate.
+ 
+                Index :=  Make_Op_Add (Loc,
+                  Left_Opnd => New_Copy_Tree (Type_Low_Bound (Index_Type)),
+                  Right_Opnd => Make_Integer_Literal (Loc, Siz - 1));
+ 
+                Set_Expression (Init_Stat,
+                   Make_Function_Call (Loc,
+                     Name =>
+                       New_Occurrence_Of (Entity (New_Indexed_Subp), Loc),
+                     Parameter_Associations =>
+                       New_List (
+                          New_Copy_Tree (Type_Low_Bound (Index_Type)),
+                          Index)));
+             end if;
+ 
+             if Present (Expressions (N)) then
+                Comp := First (Expressions (N));
+ 
+                while Present (Comp) loop
+ 
+                   --  Compute index position for successive components
+                   --  in the list of expressions, and use the indexed
+                   --  assignment procedure for each.
+ 
+                   Index := Make_Op_Add (Loc,
+                     Left_Opnd => Type_Low_Bound (Index_Type),
+                     Right_Opnd => Make_Integer_Literal (Loc, Pos));
+ 
+                   Stat := Make_Procedure_Call_Statement (Loc,
+                     Name => New_Occurrence_Of (Insert, Loc),
+                     Parameter_Associations =>
+                       New_List (New_Occurrence_Of (Temp, Loc),
+                       Index,
+                       New_Copy_Tree (Comp)));
+ 
+                   Pos := Pos + 1;
+ 
+                   Append (Stat, Aggr_Code);
+                   Next (Comp);
+                end loop;
+             end if;
+ 
+             if Present (Component_Associations (N)) then
+                Comp := First (Component_Associations (N));
+ 
+                --  The choice may be a static value, or a range with
+                --  static bounds.
+ 
+                while Present (Comp) loop
+                   if Nkind (Comp) = N_Component_Association then
+                      Key := First (Choices (Comp));
+                      while Present (Key) loop
+ 
+                         --  If the expression is a box, the corresponding
+                         --  component (s) is left uninitialized.
+ 
+                         if Box_Present (Comp) then
+                            goto Next_Key;
+ 
+                         elsif Nkind (Key) = N_Range then
+ 
+                            --  Create loop for tne specified range,
+                            --  with copies of the expression.
+ 
+                            Stat :=
+                              Expand_Range_Component (Key, Expression (Comp));
+ 
+                         else
+                            Stat := Make_Procedure_Call_Statement (Loc,
+                              Name => New_Occurrence_Of
+                                 (Entity (Assign_Indexed_Subp), Loc),
+                                 Parameter_Associations =>
+                                   New_List (New_Occurrence_Of (Temp, Loc),
+                                   New_Copy_Tree (Key),
+                                   New_Copy_Tree (Expression (Comp))));
+                         end if;
+ 
+                         Append (Stat, Aggr_Code);
+ 
+                         <<Next_Key>>
+                         Next (Key);
+                      end loop;
+ 
+                   else
+                      --  Iterated component association. Discard
+                      --  positional insertion procedure.
+ 
+                      Add_Named_Subp := Assign_Indexed_Subp;
+                      Add_Unnamed_Subp := Empty;
+                      Expand_Iterated_Component (Comp);
+                   end if;
+ 
+                   Next (Comp);
+                end loop;
+             end if;
+          end;
+       end if;
+ 
+       Insert_Actions (N, Aggr_Code);
+       Rewrite (N, New_Occurrence_Of (Temp, Loc));
+       Analyze_And_Resolve (N, Typ);
+    end Expand_Container_Aggregate;
+ 
     ------------------------------
     -- Expand_N_Delta_Aggregate --
     ------------------------------
  
     procedure Expand_N_Delta_Aggregate (N : Node_Id) is
        Loc  : constant Source_Ptr := Sloc (N);
!       Typ  : constant Entity_Id  := Etype (Expression (N));
        Decl : Node_Id;
  
     begin
*************** package body Exp_Aggr is
*** 7197,7203 ****
  
                    Comp := First_Component (Typ);
                    while Chars (Comp) /= Name_uParent loop
!                      Comp := Next_Component (Comp);
                    end loop;
  
                    Parent_Name := New_Occurrence_Of (Comp, Loc);
--- 8061,8067 ----
  
                    Comp := First_Component (Typ);
                    while Chars (Comp) /= Name_uParent loop
!                      Next_Component (Comp);
                    end loop;
  
                    Parent_Name := New_Occurrence_Of (Comp, Loc);
*************** package body Exp_Aggr is
*** 7334,7340 ****
                          return False;
                       end if;
  
!                      Indx := Next_Index (Indx);
                    end loop;
                 end if;
              end;
--- 8198,8204 ----
                          return False;
                       end if;
  
!                      Next_Index (Indx);
                    end loop;
                 end if;
              end;
*************** package body Exp_Aggr is
*** 7467,7474 ****
        begin
           Aggr := N;
           while Present (Parent (Aggr))
!            and then Nkind_In (Parent (Aggr), N_Aggregate,
!                                              N_Component_Association)
           loop
              Aggr := Parent (Aggr);
           end loop;
--- 8331,8338 ----
        begin
           Aggr := N;
           while Present (Parent (Aggr))
!            and then Nkind (Parent (Aggr)) in
!                       N_Aggregate | N_Component_Association
           loop
              Aggr := Parent (Aggr);
           end loop;
*************** package body Exp_Aggr is
*** 7483,7495 ****
     --  Start of processing for Expand_Record_Aggregate
  
     begin
!       --  If the aggregate is to be assigned to an atomic/VFA variable, we have
        --  to prevent a piecemeal assignment even if the aggregate is to be
        --  expanded. We create a temporary for the aggregate, and assign the
        --  temporary instead, so that the back end can generate an atomic move
        --  for it.
  
!       if Is_Atomic_VFA_Aggregate (N) then
           return;
  
        --  No special management required for aggregates used to initialize
--- 8347,8359 ----
     --  Start of processing for Expand_Record_Aggregate
  
     begin
!       --  If the aggregate is to be assigned to a full access variable, we have
        --  to prevent a piecemeal assignment even if the aggregate is to be
        --  expanded. We create a temporary for the aggregate, and assign the
        --  temporary instead, so that the back end can generate an atomic move
        --  for it.
  
!       if Is_Full_Access_Aggregate (N) then
           return;
  
        --  No special management required for aggregates used to initialize
*************** package body Exp_Aggr is
*** 7514,7521 ****
        --  aggregates for C++ imported types must be expanded.
  
        elsif Ada_Version >= Ada_2005 and then Is_Limited_View (Typ) then
!          if not Nkind_In (Parent (N), N_Component_Association,
!                                       N_Object_Declaration)
           then
              Convert_To_Assignments (N, Typ);
  
--- 8378,8385 ----
        --  aggregates for C++ imported types must be expanded.
  
        elsif Ada_Version >= Ada_2005 and then Is_Limited_View (Typ) then
!          if Nkind (Parent (N)) not in
!               N_Component_Association | N_Object_Declaration
           then
              Convert_To_Assignments (N, Typ);
  
*************** package body Exp_Aggr is
*** 7531,7537 ****
              Convert_To_Assignments (N, Typ);
  
           --  In all other cases, build a proper aggregate to be handled by
!          --  the back-end
  
           else
              Build_Back_End_Aggregate;
--- 8395,8401 ----
              Convert_To_Assignments (N, Typ);
  
           --  In all other cases, build a proper aggregate to be handled by
!          --  the back-end.
  
           else
              Build_Back_End_Aggregate;
*************** package body Exp_Aggr is
*** 7615,7620 ****
--- 8479,8506 ----
        end if;
     end Expand_Record_Aggregate;
  
+    ---------------------
+    -- Get_Base_Object --
+    ---------------------
+ 
+    function Get_Base_Object (N : Node_Id) return Entity_Id is
+       R : Node_Id;
+ 
+    begin
+       R := Get_Referenced_Object (N);
+ 
+       while Nkind (R) in N_Indexed_Component | N_Selected_Component | N_Slice
+       loop
+          R := Get_Referenced_Object (Prefix (R));
+       end loop;
+ 
+       if Is_Entity_Name (R) and then Is_Object (Entity (R)) then
+          return Entity (R);
+       else
+          return Empty;
+       end if;
+    end Get_Base_Object;
+ 
     ----------------------------
     -- Has_Default_Init_Comps --
     ----------------------------
*************** package body Exp_Aggr is
*** 7625,7631 ****
        Expr  : Node_Id;
  
     begin
!       pragma Assert (Nkind_In (N, N_Aggregate, N_Extension_Aggregate));
  
        if No (Comps) then
           return False;
--- 8511,8517 ----
        Expr  : Node_Id;
  
     begin
!       pragma Assert (Nkind (N) in N_Aggregate | N_Extension_Aggregate);
  
        if No (Comps) then
           return False;
*************** package body Exp_Aggr is
*** 7653,7659 ****
           Expr := Expression (C);
  
           if Present (Expr)
!            and then Nkind_In (Expr, N_Aggregate, N_Extension_Aggregate)
             and then Has_Default_Init_Comps (Expr)
           then
              return True;
--- 8539,8545 ----
           Expr := Expression (C);
  
           if Present (Expr)
!            and then Nkind (Expr) in N_Aggregate | N_Extension_Aggregate
             and then Has_Default_Init_Comps (Expr)
           then
              return True;
*************** package body Exp_Aggr is
*** 7706,7712 ****
           Kind := Nkind (Node);
        end if;
  
!       if not Nkind_In (Kind, N_Aggregate, N_Extension_Aggregate) then
           return False;
        else
           return Expansion_Delayed (Node);
--- 8592,8598 ----
           Kind := Nkind (Node);
        end if;
  
!       if Kind not in N_Aggregate | N_Extension_Aggregate then
           return False;
        else
           return Expansion_Delayed (Node);
*************** package body Exp_Aggr is
*** 7794,7799 ****
--- 8680,8688 ----
                      or else
                    Typ = RTE (RE_Tag_Table)
                      or else
+                   (RTE_Available (RE_Object_Specific_Data)
+                      and then Typ = RTE (RE_Object_Specific_Data))
+                     or else
                    (RTE_Available (RE_Interface_Data)
                       and then Typ = RTE (RE_Interface_Data))
                      or else
*************** package body Exp_Aggr is
*** 7826,7842 ****
        Target : Node_Id) return List_Id
     is
        Aggr_Code : List_Id;
  
     begin
!       if Is_Array_Type (Etype (N)) then
!          Aggr_Code :=
!            Build_Array_Aggr_Code
!              (N           => N,
!               Ctype       => Component_Type (Etype (N)),
!               Index       => First_Index (Typ),
!               Into        => Target,
!               Scalar_Comp => Is_Scalar_Type (Component_Type (Typ)),
!               Indexes     => No_List);
  
        --  Directly or indirectly (e.g. access protected procedure) a record
  
--- 8715,8754 ----
        Target : Node_Id) return List_Id
     is
        Aggr_Code : List_Id;
+       New_Aggr  : Node_Id;
  
     begin
!       if Is_Array_Type (Typ) then
!          --  If the assignment can be done directly by the back end, then
!          --  reset Set_Expansion_Delayed and do not expand further.
! 
!          if not CodePeer_Mode
!            and then not Modify_Tree_For_C
!            and then not Possible_Bit_Aligned_Component (Target)
!            and then not Is_Possibly_Unaligned_Slice (Target)
!            and then Aggr_Assignment_OK_For_Backend (N)
!          then
!             New_Aggr := New_Copy_Tree (N);
!             Set_Expansion_Delayed (New_Aggr, False);
! 
!             Aggr_Code :=
!               New_List (
!                 Make_OK_Assignment_Statement (Sloc (New_Aggr),
!                   Name       => Target,
!                   Expression => New_Aggr));
! 
!          --  Or else, generate component assignments to it
! 
!          else
!             Aggr_Code :=
!               Build_Array_Aggr_Code
!                 (N           => N,
!                  Ctype       => Component_Type (Typ),
!                  Index       => First_Index (Typ),
!                  Into        => Target,
!                  Scalar_Comp => Is_Scalar_Type (Component_Type (Typ)),
!                  Indexes     => No_List);
!          end if;
  
        --  Directly or indirectly (e.g. access protected procedure) a record
  
*************** package body Exp_Aggr is
*** 7852,7858 ****
        if Needs_Finalization (Typ)
          and then Is_Entity_Name (Target)
          and then Present (Entity (Target))
!         and then Ekind_In (Entity (Target), E_Constant, E_Variable)
        then
           Set_Last_Aggregate_Assignment (Entity (Target), Last (Aggr_Code));
        end if;
--- 8764,8770 ----
        if Needs_Finalization (Typ)
          and then Is_Entity_Name (Target)
          and then Present (Entity (Target))
!         and then Ekind (Entity (Target)) in E_Constant | E_Variable
        then
           Set_Last_Aggregate_Assignment (Entity (Target), Last (Aggr_Code));
        end if;
*************** package body Exp_Aggr is
*** 7874,7879 ****
--- 8786,8890 ----
        return Make_Assignment_Statement (Sloc, Name, Expression);
     end Make_OK_Assignment_Statement;
  
+    ------------------------
+    -- Max_Aggregate_Size --
+    ------------------------
+ 
+    function Max_Aggregate_Size
+      (N            : Node_Id;
+       Default_Size : Nat := 5000) return Nat
+    is
+       Typ : constant Entity_Id := Etype (N);
+ 
+       function Use_Small_Size (N : Node_Id) return Boolean;
+       --  True if we should return a very small size, which means large
+       --  aggregates will be implemented as a loop when possible (potentially
+       --  transformed to memset calls).
+ 
+       function Aggr_Context (N : Node_Id) return Node_Id;
+       --  Return the context in which the aggregate appears, not counting
+       --  qualified expressions and similar.
+ 
+       function Aggr_Context (N : Node_Id) return Node_Id is
+          Result : Node_Id := Parent (N);
+       begin
+          if Nkind (Result) in N_Qualified_Expression
+                             | N_Type_Conversion
+                             | N_Unchecked_Type_Conversion
+                             | N_If_Expression
+                             | N_Case_Expression
+                             | N_Component_Association
+                             | N_Aggregate
+          then
+             Result := Aggr_Context (Result);
+          end if;
+ 
+          return Result;
+       end Aggr_Context;
+ 
+       function Use_Small_Size (N : Node_Id) return Boolean is
+          C : constant Node_Id := Aggr_Context (N);
+          --  The decision depends on the context in which the aggregate occurs,
+          --  and for variable declarations, whether we are nested inside a
+          --  subprogram.
+       begin
+          case Nkind (C) is
+             --  True for assignment statements and similar
+ 
+             when N_Assignment_Statement
+                | N_Simple_Return_Statement
+                | N_Allocator
+                | N_Attribute_Reference
+             =>
+                return True;
+ 
+             --  True for nested variable declarations. False for library level
+             --  variables, and for constants (whether or not nested).
+ 
+             when N_Object_Declaration =>
+                return not Constant_Present (C)
+                  and then Ekind (Current_Scope) in Subprogram_Kind;
+ 
+             --  False for all other contexts
+ 
+             when others =>
+                return False;
+          end case;
+       end Use_Small_Size;
+ 
+    --  Start of processing for Max_Aggregate_Size
+ 
+    begin
+       --  We use a small limit in CodePeer mode where we favor loops
+       --  instead of thousands of single assignments (from large aggregates).
+ 
+       --  We also increase the limit to 2**24 (about 16 million) if
+       --  Restrictions (No_Elaboration_Code) or Restrictions
+       --  (No_Implicit_Loops) is specified, since in either case we are at risk
+       --  of declaring the program illegal because of this limit. We also
+       --  increase the limit when Static_Elaboration_Desired, given that this
+       --  means that objects are intended to be placed in data memory.
+ 
+       --  Same if the aggregate is for a packed two-dimensional array, because
+       --  if components are static it is much more efficient to construct a
+       --  one-dimensional equivalent array with static components.
+ 
+       if CodePeer_Mode then
+          return 100;
+       elsif Restriction_Active (No_Elaboration_Code)
+         or else Restriction_Active (No_Implicit_Loops)
+         or else Is_Two_Dim_Packed_Array (Typ)
+         or else (Ekind (Current_Scope) = E_Package
+                    and then Static_Elaboration_Desired (Current_Scope))
+       then
+          return 2 ** 24;
+       elsif Use_Small_Size (N) then
+          return 64;
+       end if;
+ 
+       return Default_Size;
+    end Max_Aggregate_Size;
+ 
     -----------------------
     -- Number_Of_Choices --
     -----------------------
*************** package body Exp_Aggr is
*** 8046,8053 ****
           --  have failed to create a packed value for it.
  
           if Present (Component_Associations (N)) then
!             Convert_To_Positional
!               (N, Max_Others_Replicate => 64, Handle_Bit_Packed => True);
              return Nkind (N) /= N_Aggregate;
           end if;
  
--- 9057,9063 ----
           --  have failed to create a packed value for it.
  
           if Present (Component_Associations (N)) then
!             Convert_To_Positional (N, Handle_Bit_Packed => True);
              return Nkind (N) /= N_Aggregate;
           end if;
  
*************** package body Exp_Aggr is
*** 8592,8598 ****
  
        function Is_Static_Component (Nod : Node_Id) return Boolean is
        begin
!          if Nkind_In (Nod, N_Integer_Literal, N_Real_Literal) then
              return True;
  
           elsif Is_Entity_Name (Nod)
--- 9602,9608 ----
  
        function Is_Static_Component (Nod : Node_Id) return Boolean is
        begin
!          if Nkind (Nod) in N_Integer_Literal | N_Real_Literal then
              return True;
  
           elsif Is_Entity_Name (Nod)
*************** package body Exp_Aggr is
*** 8676,8682 ****
                    return False;
                 end if;
  
!                if not Aggr_Size_OK (N, Typ) then
                    return False;
                 end if;
  
--- 9686,9692 ----
                    return False;
                 end if;
  
!                if not Aggr_Size_OK (N) then
                    return False;
                 end if;
  
*************** package body Exp_Aggr is
*** 8742,8749 ****
           return False;
        end if;
  
!       Convert_To_Positional
!         (N, Max_Others_Replicate => 64, Handle_Bit_Packed => True);
  
        --  Verify that all components are static
  
--- 9752,9758 ----
           return False;
        end if;
  
!       Convert_To_Positional (N, Handle_Bit_Packed => True);
  
        --  Verify that all components are static
  
*************** package body Exp_Aggr is
*** 8858,8869 ****
                    Comp_Val := Comp_Val mod Uint_2 ** Comp_Size;
                    Val := UI_To_Int (Val + Comp_Val * Uint_2 ** Shift);
                    Shift := Shift + Incr;
!                   One_Comp := Next (One_Comp);
                    Packed_Num := Packed_Num + 1;
                 end if;
              end loop;
  
!             One_Dim := Next (One_Dim);
           end loop;
  
           if Packed_Num > 0 then
--- 9867,9878 ----
                    Comp_Val := Comp_Val mod Uint_2 ** Comp_Size;
                    Val := UI_To_Int (Val + Comp_Val * Uint_2 ** Shift);
                    Shift := Shift + Incr;
!                   Next (One_Comp);
                    Packed_Num := Packed_Num + 1;
                 end if;
              end loop;
  
!             Next (One_Dim);
           end loop;
  
           if Packed_Num > 0 then
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_aggr.ads gcc-11.1.0/gcc/ada/exp_aggr.ads
*** gcc-10.3.0/gcc/ada/exp_aggr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_aggr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_atag.adb gcc-11.1.0/gcc/ada/exp_atag.adb
*** gcc-10.3.0/gcc/ada/exp_atag.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_atag.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Atree;    use Atree;
*** 27,33 ****
  with Einfo;    use Einfo;
  with Elists;   use Elists;
  with Exp_Disp; use Exp_Disp;
- with Exp_Util; use Exp_Util;
  with Namet;    use Namet;
  with Nlists;   use Nlists;
  with Nmake;    use Nmake;
--- 27,32 ----
*************** package body Exp_Atag is
*** 57,62 ****
--- 56,64 ----
     --    To_Dispatch_Table_Ptr
     --      (To_Address (Tag_Node) - Tag_Node.Prims_Ptr'Position);
  
+    function Build_Range (Loc : Source_Ptr; Lo, Hi : Nat) return Node_Id;
+    --  Build an N_Range node for [Lo; Hi] with Standard.Natural type
+ 
     function Build_TSD
       (Loc           : Source_Ptr;
        Tag_Node_Addr : Node_Id) return Node_Id;
*************** package body Exp_Atag is
*** 66,71 ****
--- 68,76 ----
     --  Generate: To_Type_Specific_Data_Ptr
     --              (To_Addr_Ptr (Tag_Node_Addr - Typeinfo_Offset).all);
  
+    function Build_Val (Loc : Source_Ptr; V : Uint) return Node_Id;
+    --  Build an N_Integer_Literal node for V with Standard.Natural type
+ 
     ------------------------------------------------
     -- Build_Common_Dispatching_Select_Statements --
     ------------------------------------------------
*************** package body Exp_Atag is
*** 153,264 ****
                Make_Simple_Return_Statement (Loc))));
     end Build_Common_Dispatching_Select_Statements;
  
-    -------------------------
-    -- Build_CW_Membership --
-    -------------------------
- 
-    procedure Build_CW_Membership
-      (Loc          : Source_Ptr;
-       Obj_Tag_Node : in out Node_Id;
-       Typ_Tag_Node : Node_Id;
-       Related_Nod  : Node_Id;
-       New_Node     : out Node_Id)
-    is
-       Tag_Addr : constant Entity_Id := Make_Temporary (Loc, 'D', Obj_Tag_Node);
-       Obj_TSD  : constant Entity_Id := Make_Temporary (Loc, 'D');
-       Typ_TSD  : constant Entity_Id := Make_Temporary (Loc, 'D');
-       Index    : constant Entity_Id := Make_Temporary (Loc, 'D');
- 
-    begin
-       --  Generate:
- 
-       --    Tag_Addr : constant Tag := Address!(Obj_Tag);
-       --    Obj_TSD  : constant Type_Specific_Data_Ptr
-       --                          := Build_TSD (Tag_Addr);
-       --    Typ_TSD  : constant Type_Specific_Data_Ptr
-       --                          := Build_TSD (Address!(Typ_Tag));
-       --    Index    : constant Integer := Obj_TSD.Idepth - Typ_TSD.Idepth
-       --    Index >= 0 and then Obj_TSD.Tags_Table (Index) = Typ'Tag
- 
-       Insert_Action (Related_Nod,
-         Make_Object_Declaration (Loc,
-           Defining_Identifier => Tag_Addr,
-           Constant_Present    => True,
-           Object_Definition   => New_Occurrence_Of (RTE (RE_Address), Loc),
-           Expression          => Unchecked_Convert_To
-                                    (RTE (RE_Address), Obj_Tag_Node)));
- 
-       --  Unchecked_Convert_To relocates Obj_Tag_Node and therefore we must
-       --  update it.
- 
-       Obj_Tag_Node := Expression (Expression (Parent (Tag_Addr)));
- 
-       Insert_Action (Related_Nod,
-         Make_Object_Declaration (Loc,
-           Defining_Identifier => Obj_TSD,
-           Constant_Present    => True,
-           Object_Definition   =>
-             New_Occurrence_Of (RTE (RE_Type_Specific_Data_Ptr), Loc),
-           Expression          =>
-             Build_TSD (Loc, New_Occurrence_Of (Tag_Addr, Loc))),
-         Suppress => All_Checks);
- 
-       Insert_Action (Related_Nod,
-         Make_Object_Declaration (Loc,
-           Defining_Identifier => Typ_TSD,
-           Constant_Present    => True,
-           Object_Definition   =>
-             New_Occurrence_Of (RTE (RE_Type_Specific_Data_Ptr), Loc),
-           Expression          =>
-             Build_TSD (Loc,
-               Unchecked_Convert_To (RTE (RE_Address), Typ_Tag_Node))),
-         Suppress => All_Checks);
- 
-       Insert_Action (Related_Nod,
-         Make_Object_Declaration (Loc,
-           Defining_Identifier => Index,
-           Constant_Present    => True,
-           Object_Definition   => New_Occurrence_Of (Standard_Integer, Loc),
-           Expression =>
-             Make_Op_Subtract (Loc,
-               Left_Opnd =>
-                 Make_Selected_Component (Loc,
-                   Prefix        => New_Occurrence_Of (Obj_TSD, Loc),
-                   Selector_Name =>
-                      New_Occurrence_Of
-                        (RTE_Record_Component (RE_Idepth), Loc)),
- 
-                Right_Opnd =>
-                  Make_Selected_Component (Loc,
-                    Prefix        => New_Occurrence_Of (Typ_TSD, Loc),
-                    Selector_Name =>
-                      New_Occurrence_Of
-                        (RTE_Record_Component (RE_Idepth), Loc)))),
-         Suppress => All_Checks);
- 
-       New_Node :=
-         Make_And_Then (Loc,
-           Left_Opnd =>
-             Make_Op_Ge (Loc,
-               Left_Opnd  => New_Occurrence_Of (Index, Loc),
-               Right_Opnd => Make_Integer_Literal (Loc, Uint_0)),
- 
-           Right_Opnd =>
-             Make_Op_Eq (Loc,
-               Left_Opnd =>
-                 Make_Indexed_Component (Loc,
-                   Prefix      =>
-                     Make_Selected_Component (Loc,
-                       Prefix        => New_Occurrence_Of (Obj_TSD, Loc),
-                       Selector_Name =>
-                         New_Occurrence_Of
-                           (RTE_Record_Component (RE_Tags_Table), Loc)),
-                   Expressions =>
-                     New_List (New_Occurrence_Of (Index, Loc))),
- 
-               Right_Opnd => Typ_Tag_Node));
-    end Build_CW_Membership;
- 
     --------------
     -- Build_DT --
     --------------
--- 158,163 ----
*************** package body Exp_Atag is
*** 287,294 ****
        return
          Make_Selected_Component (Loc,
            Prefix =>
!             Build_TSD (Loc,
!               Unchecked_Convert_To (RTE (RE_Address), Tag_Node)),
            Selector_Name =>
              New_Occurrence_Of
                (RTE_Record_Component (RE_Access_Level), Loc));
--- 186,194 ----
        return
          Make_Selected_Component (Loc,
            Prefix =>
!             Make_Explicit_Dereference (Loc,
!               Build_TSD (Loc,
!                 Unchecked_Convert_To (RTE (RE_Address), Tag_Node))),
            Selector_Name =>
              New_Occurrence_Of
                (RTE_Record_Component (RE_Access_Level), Loc));
*************** package body Exp_Atag is
*** 305,312 ****
     begin
        return
          Make_Selected_Component (Loc,
!           Prefix        =>
!             Build_TSD (Loc, Unchecked_Convert_To (RTE (RE_Address), Tag_Node)),
            Selector_Name =>
              New_Occurrence_Of (RTE_Record_Component (RE_Alignment), Loc));
     end Build_Get_Alignment;
--- 205,214 ----
     begin
        return
          Make_Selected_Component (Loc,
!           Prefix =>
!             Make_Explicit_Dereference (Loc,
!               Build_TSD (Loc,
!                 Unchecked_Convert_To (RTE (RE_Address), Tag_Node))),
            Selector_Name =>
              New_Occurrence_Of (RTE_Record_Component (RE_Alignment), Loc));
     end Build_Get_Alignment;
*************** package body Exp_Atag is
*** 358,364 ****
                        New_Occurrence_Of
                          (RTE (RE_DT_Predef_Prims_Offset), Loc)))))),
            Expressions =>
!             New_List (Make_Integer_Literal (Loc, Position)));
     end Build_Get_Predefined_Prim_Op_Address;
  
     -----------------------------
--- 260,266 ----
                        New_Occurrence_Of
                          (RTE (RE_DT_Predef_Prims_Offset), Loc)))))),
            Expressions =>
!             New_List (Build_Val (Loc, Position)));
     end Build_Get_Predefined_Prim_Op_Address;
  
     -----------------------------
*************** package body Exp_Atag is
*** 428,434 ****
                            (Node (Last_Elmt (Access_Disp_Table (Typ))),
                             New_Occurrence_Of (Typ_Tag, Loc))),
                      Expressions =>
!                        New_List (Make_Integer_Literal (Loc, Prim_Pos))),
  
                 Expression =>
                   Unchecked_Convert_To (RTE (RE_Prim_Ptr),
--- 330,336 ----
                            (Node (Last_Elmt (Access_Disp_Table (Typ))),
                             New_Occurrence_Of (Typ_Tag, Loc))),
                      Expressions =>
!                        New_List (Build_Val (Loc, UI_From_Int (Prim_Pos)))),
  
                 Expression =>
                   Unchecked_Convert_To (RTE (RE_Prim_Ptr),
*************** package body Exp_Atag is
*** 566,572 ****
                                         New_Occurrence_Of (Typ_Tag, Loc))),
                                  Expressions =>
                                     New_List
!                                     (Make_Integer_Literal (Loc, Prim_Pos))),
  
                              Expression =>
                                Unchecked_Convert_To (RTE (RE_Prim_Ptr),
--- 468,474 ----
                                         New_Occurrence_Of (Typ_Tag, Loc))),
                                  Expressions =>
                                     New_List
!                                     (Build_Val (Loc, UI_From_Int (Prim_Pos)))),
  
                              Expression =>
                                Unchecked_Convert_To (RTE (RE_Prim_Ptr),
*************** package body Exp_Atag is
*** 633,660 ****
                   Prefix =>
                     Make_Selected_Component (Loc,
                       Prefix =>
!                        Build_DT (Loc, New_Tag_Node),
                       Selector_Name =>
                         New_Occurrence_Of
                           (RTE_Record_Component (RE_Prims_Ptr), Loc)),
                   Discrete_Range =>
!                    Make_Range (Loc,
!                    Low_Bound  => Make_Integer_Literal (Loc, 1),
!                    High_Bound => Make_Integer_Literal (Loc, Num_Prims))),
  
               Expression =>
                 Make_Slice (Loc,
                   Prefix =>
                     Make_Selected_Component (Loc,
                       Prefix =>
!                        Build_DT (Loc, Old_Tag_Node),
                       Selector_Name =>
                         New_Occurrence_Of
                           (RTE_Record_Component (RE_Prims_Ptr), Loc)),
                   Discrete_Range =>
!                    Make_Range (Loc,
!                      Low_Bound  => Make_Integer_Literal (Loc, 1),
!                      High_Bound => Make_Integer_Literal (Loc, Num_Prims))));
        else
           return
             Make_Assignment_Statement (Loc,
--- 535,560 ----
                   Prefix =>
                     Make_Selected_Component (Loc,
                       Prefix =>
!                        Make_Explicit_Dereference (Loc,
!                          Build_DT (Loc, New_Tag_Node)),
                       Selector_Name =>
                         New_Occurrence_Of
                           (RTE_Record_Component (RE_Prims_Ptr), Loc)),
                   Discrete_Range =>
!                    Build_Range (Loc, 1, Num_Prims)),
  
               Expression =>
                 Make_Slice (Loc,
                   Prefix =>
                     Make_Selected_Component (Loc,
                       Prefix =>
!                        Make_Explicit_Dereference (Loc,
!                          Build_DT (Loc, Old_Tag_Node)),
                       Selector_Name =>
                         New_Occurrence_Of
                           (RTE_Record_Component (RE_Prims_Ptr), Loc)),
                   Discrete_Range =>
!                    Build_Range (Loc, 1, Num_Prims)));
        else
           return
             Make_Assignment_Statement (Loc,
*************** package body Exp_Atag is
*** 665,673 ****
                       (Node (Last_Elmt (Access_Disp_Table (Typ))),
                        New_Tag_Node),
                   Discrete_Range =>
!                    Make_Range (Loc,
!                    Low_Bound  => Make_Integer_Literal (Loc, 1),
!                    High_Bound => Make_Integer_Literal (Loc, Num_Prims))),
  
               Expression =>
                 Make_Slice (Loc,
--- 565,571 ----
                       (Node (Last_Elmt (Access_Disp_Table (Typ))),
                        New_Tag_Node),
                   Discrete_Range =>
!                    Build_Range (Loc, 1, Num_Prims)),
  
               Expression =>
                 Make_Slice (Loc,
*************** package body Exp_Atag is
*** 676,684 ****
                       (Node (Last_Elmt (Access_Disp_Table (Typ))),
                        Old_Tag_Node),
                   Discrete_Range =>
!                    Make_Range (Loc,
!                      Low_Bound  => Make_Integer_Literal (Loc, 1),
!                      High_Bound => Make_Integer_Literal (Loc, Num_Prims))));
        end if;
     end Build_Inherit_Prims;
  
--- 574,580 ----
                       (Node (Last_Elmt (Access_Disp_Table (Typ))),
                        Old_Tag_Node),
                   Discrete_Range =>
!                    Build_Range (Loc, 1, Num_Prims)));
        end if;
     end Build_Inherit_Prims;
  
*************** package body Exp_Atag is
*** 715,721 ****
        New_Node :=
          Make_Indexed_Component (Loc,
            Prefix      => New_Prefix,
!           Expressions => New_List (Make_Integer_Literal (Loc, Position)));
     end Build_Get_Prim_Op_Address;
  
     -----------------------------
--- 611,617 ----
        New_Node :=
          Make_Indexed_Component (Loc,
            Prefix      => New_Prefix,
!           Expressions => New_List (Build_Val (Loc, Position)));
     end Build_Get_Prim_Op_Address;
  
     -----------------------------
*************** package body Exp_Atag is
*** 730,737 ****
        return
          Make_Selected_Component (Loc,
            Prefix =>
!             Build_TSD (Loc,
!               Unchecked_Convert_To (RTE (RE_Address), Tag_Node)),
            Selector_Name =>
              New_Occurrence_Of
                (RTE_Record_Component (RE_Transportable), Loc));
--- 626,634 ----
        return
          Make_Selected_Component (Loc,
            Prefix =>
!             Make_Explicit_Dereference (Loc,
!               Build_TSD (Loc,
!                 Unchecked_Convert_To (RTE (RE_Address), Tag_Node))),
            Selector_Name =>
              New_Occurrence_Of
                (RTE_Record_Component (RE_Transportable), Loc));
*************** package body Exp_Atag is
*** 745,751 ****
       (Loc              : Source_Ptr;
        Old_Tag_Node     : Node_Id;
        New_Tag_Node     : Node_Id;
!       Num_Predef_Prims : Int) return Node_Id
     is
     begin
        return
--- 642,648 ----
       (Loc              : Source_Ptr;
        Old_Tag_Node     : Node_Id;
        New_Tag_Node     : Node_Id;
!       Num_Predef_Prims : Nat) return Node_Id
     is
     begin
        return
*************** package body Exp_Atag is
*** 758,766 ****
                      Make_Explicit_Dereference (Loc,
                        Unchecked_Convert_To (RTE (RE_Addr_Ptr),
                          New_Tag_Node)))),
!               Discrete_Range => Make_Range (Loc,
!                 Make_Integer_Literal (Loc, Uint_1),
!                 Make_Integer_Literal (Loc, Num_Predef_Prims))),
  
            Expression =>
              Make_Slice (Loc,
--- 655,662 ----
                      Make_Explicit_Dereference (Loc,
                        Unchecked_Convert_To (RTE (RE_Addr_Ptr),
                          New_Tag_Node)))),
!               Discrete_Range =>
!                 Build_Range (Loc, 1, Num_Predef_Prims)),
  
            Expression =>
              Make_Slice (Loc,
*************** package body Exp_Atag is
*** 771,779 ****
                        Unchecked_Convert_To (RTE (RE_Addr_Ptr),
                          Old_Tag_Node)))),
                Discrete_Range =>
!                 Make_Range (Loc,
!                   Make_Integer_Literal (Loc, 1),
!                   Make_Integer_Literal (Loc, Num_Predef_Prims))));
     end Build_Inherit_Predefined_Prims;
  
     -------------------------
--- 667,673 ----
                        Unchecked_Convert_To (RTE (RE_Addr_Ptr),
                          Old_Tag_Node)))),
                Discrete_Range =>
!                 Build_Range (Loc, 1, Num_Predef_Prims)));
     end Build_Inherit_Predefined_Prims;
  
     -------------------------
*************** package body Exp_Atag is
*** 808,813 ****
--- 702,724 ----
                    (RTE (RE_DT_Offset_To_Top_Offset), Loc)))));
     end Build_Offset_To_Top;
  
+    -----------------
+    -- Build_Range --
+    -----------------
+ 
+    function Build_Range (Loc : Source_Ptr; Lo, Hi : Nat) return Node_Id is
+       Result : Node_Id;
+ 
+    begin
+       Result :=
+         Make_Range (Loc,
+            Low_Bound  => Build_Val (Loc, UI_From_Int (Lo)),
+            High_Bound => Build_Val (Loc, UI_From_Int (Hi)));
+       Set_Etype (Result, Standard_Natural);
+       Set_Analyzed (Result);
+       return Result;
+    end Build_Range;
+ 
     ------------------------------------------
     -- Build_Set_Predefined_Prim_Op_Address --
     ------------------------------------------
*************** package body Exp_Atag is
*** 828,834 ****
                     Make_Explicit_Dereference (Loc,
                       Unchecked_Convert_To (RTE (RE_Addr_Ptr), Tag_Node))),
                 Expressions =>
!                  New_List (Make_Integer_Literal (Loc, Position))),
  
             Expression => Address_Node);
     end Build_Set_Predefined_Prim_Op_Address;
--- 739,745 ----
                     Make_Explicit_Dereference (Loc,
                       Unchecked_Convert_To (RTE (RE_Addr_Ptr), Tag_Node))),
                 Expressions =>
!                  New_List (Build_Val (Loc, Position))),
  
             Expression => Address_Node);
     end Build_Set_Predefined_Prim_Op_Address;
*************** package body Exp_Atag is
*** 872,879 ****
            Name =>
              Make_Selected_Component (Loc,
                Prefix =>
!                 Build_TSD (Loc,
!                   Unchecked_Convert_To (RTE (RE_Address), Tag_Node)),
                Selector_Name =>
                  New_Occurrence_Of
                    (RTE_Record_Component (RE_Size_Func), Loc)),
--- 783,791 ----
            Name =>
              Make_Selected_Component (Loc,
                Prefix =>
!                 Make_Explicit_Dereference (Loc,
!                   Build_TSD (Loc,
!                     Unchecked_Convert_To (RTE (RE_Address), Tag_Node))),
                Selector_Name =>
                  New_Occurrence_Of
                    (RTE_Record_Component (RE_Size_Func), Loc)),
*************** package body Exp_Atag is
*** 939,942 ****
--- 851,869 ----
                      (RTE (RE_DT_Typeinfo_Ptr_Size), Loc))))));
     end Build_TSD;
  
+    ---------------
+    -- Build_Val --
+    ---------------
+ 
+    function Build_Val (Loc : Source_Ptr; V : Uint) return Node_Id is
+       Result : Node_Id;
+ 
+    begin
+       Result := Make_Integer_Literal (Loc, V);
+       Set_Etype (Result, Standard_Natural);
+       Set_Is_Static_Expression (Result);
+       Set_Analyzed (Result);
+       return Result;
+    end Build_Val;
+ 
  end Exp_Atag;
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_atag.ads gcc-11.1.0/gcc/ada/exp_atag.ads
*** gcc-10.3.0/gcc/ada/exp_atag.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_atag.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Atag is
*** 41,64 ****
     --  timed, asynchronous, and conditional select and append them to Stmts.
     --  Typ is the tagged type used for dispatching calls.
  
-    procedure Build_CW_Membership
-      (Loc          : Source_Ptr;
-       Obj_Tag_Node : in out Node_Id;
-       Typ_Tag_Node : Node_Id;
-       Related_Nod  : Node_Id;
-       New_Node     : out Node_Id);
-    --  Build code that returns true if Obj_Tag is in Typ_Tag'Class. Each DT
-    --  has a table of ancestors and its inheritance level (Idepth). Obj is in
-    --  Typ'Class if Typ'Tag is found in the table of ancestors referenced by
-    --  Obj'Tag. Knowing the level of inheritance of both types, this can be
-    --  computed in constant time by the formula:
-    --
-    --   Index := TSD (Obj'Tag).Idepth - TSD (Typ'Tag).Idepth;
-    --   Index >= 0 and then TSD (Obj'Tag).Tags_Table (Index) = Typ'Tag
-    --
-    --  Related_Nod is the node where the implicit declaration of variable Index
-    --  is inserted. Obj_Tag_Node is relocated.
- 
     function Build_Get_Access_Level
       (Loc      : Source_Ptr;
        Tag_Node : Node_Id) return Node_Id;
--- 41,46 ----
*************** package Exp_Atag is
*** 112,118 ****
       (Loc              : Source_Ptr;
        Old_Tag_Node     : Node_Id;
        New_Tag_Node     : Node_Id;
!       Num_Predef_Prims : Int) return Node_Id;
     --  Build code that inherits the predefined primitives of the parent.
     --
     --  Generates: Predefined_DT (New_T).D (All_Predefined_Prims) :=
--- 94,100 ----
       (Loc              : Source_Ptr;
        Old_Tag_Node     : Node_Id;
        New_Tag_Node     : Node_Id;
!       Num_Predef_Prims : Nat) return Node_Id;
     --  Build code that inherits the predefined primitives of the parent.
     --
     --  Generates: Predefined_DT (New_T).D (All_Predefined_Prims) :=
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_attr.adb gcc-11.1.0/gcc/ada/exp_attr.adb
*** gcc-10.3.0/gcc/ada/exp_attr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_attr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Checks;   use Checks;
*** 29,35 ****
  with Einfo;    use Einfo;
  with Elists;   use Elists;
  with Exp_Atag; use Exp_Atag;
- with Exp_Ch2;  use Exp_Ch2;
  with Exp_Ch3;  use Exp_Ch3;
  with Exp_Ch6;  use Exp_Ch6;
  with Exp_Ch9;  use Exp_Ch9;
--- 29,34 ----
*************** with Exp_Dist; use Exp_Dist;
*** 37,42 ****
--- 36,42 ----
  with Exp_Imgv; use Exp_Imgv;
  with Exp_Pakd; use Exp_Pakd;
  with Exp_Strm; use Exp_Strm;
+ with Exp_Put_Image;
  with Exp_Tss;  use Exp_Tss;
  with Exp_Util; use Exp_Util;
  with Expander; use Expander;
*************** with Tbuild;   use Tbuild;
*** 67,72 ****
--- 67,73 ----
  with Ttypes;   use Ttypes;
  with Uintp;    use Uintp;
  with Uname;    use Uname;
+ with Urealp;   use Urealp;
  with Validsw;  use Validsw;
  
  package body Exp_Attr is
*************** package body Exp_Attr is
*** 78,85 ****
     function Build_Array_VS_Func
       (Attr       : Node_Id;
        Formal_Typ : Entity_Id;
!       Array_Typ  : Entity_Id;
!       Comp_Typ   : Entity_Id) return Entity_Id;
     --  Validate the components of an array type by means of a function. Return
     --  the entity of the validation function. The parameters are as follows:
     --
--- 79,85 ----
     function Build_Array_VS_Func
       (Attr       : Node_Id;
        Formal_Typ : Entity_Id;
!       Array_Typ  : Entity_Id) return Entity_Id;
     --  Validate the components of an array type by means of a function. Return
     --  the entity of the validation function. The parameters are as follows:
     --
*************** package body Exp_Attr is
*** 90,97 ****
     --      parameter.
     --
     --    * Array_Typ - the array type whose components are to be validated
-    --
-    --    * Comp_Typ - the component type of the array
  
     function Build_Disp_Get_Task_Id_Call (Actual : Node_Id) return Node_Id;
     --  Build a call to Disp_Get_Task_Id, passing Actual as actual parameter
--- 90,95 ----
*************** package body Exp_Attr is
*** 139,144 ****
--- 137,148 ----
     --  special-case code that shuffles partial and full views in the middle
     --  of semantic analysis and expansion.
  
+    function Default_Streaming_Unavailable (Typ : Entity_Id) return Boolean;
+    --
+    --  In most cases, references to unavailable streaming attributes
+    --  are rejected at compile time. In some obscure cases involving
+    --  generics and formal derived types, the problem is dealt with at runtime.
+ 
     procedure Expand_Access_To_Protected_Op
       (N    : Node_Id;
        Pref : Node_Id;
*************** package body Exp_Attr is
*** 191,200 ****
     procedure Expand_Update_Attribute (N : Node_Id);
     --  Handle the expansion of attribute Update
  
-    function Get_Index_Subtype (N : Node_Id) return Entity_Id;
-    --  Used for Last, Last, and Length, when the prefix is an array type.
-    --  Obtains the corresponding index subtype.
- 
     procedure Find_Fat_Info
       (T        : Entity_Id;
        Fat_Type : out Entity_Id;
--- 195,200 ----
*************** package body Exp_Attr is
*** 240,249 ****
     function Build_Array_VS_Func
       (Attr       : Node_Id;
        Formal_Typ : Entity_Id;
!       Array_Typ  : Entity_Id;
!       Comp_Typ   : Entity_Id) return Entity_Id
     is
!       Loc : constant Source_Ptr := Sloc (Attr);
  
        function Validate_Component
          (Obj_Id  : Entity_Id;
--- 240,250 ----
     function Build_Array_VS_Func
       (Attr       : Node_Id;
        Formal_Typ : Entity_Id;
!       Array_Typ  : Entity_Id) return Entity_Id
     is
!       Loc      : constant Source_Ptr := Sloc (Attr);
!       Comp_Typ : constant Entity_Id :=
!         Validated_View (Component_Type (Array_Typ));
  
        function Validate_Component
          (Obj_Id  : Entity_Id;
*************** package body Exp_Attr is
*** 538,547 ****
           --  Comes_From_Source is not correct because this will eliminate the
           --  components within the corresponding record of a protected type.
  
!          if Nam_In (Field_Nam, Name_uObject,
!                                Name_uParent,
!                                Name_uTag)
!          then
              null;
  
           --  Do not process fields without any scalar components
--- 539,545 ----
           --  Comes_From_Source is not correct because this will eliminate the
           --  components within the corresponding record of a protected type.
  
!          if Field_Nam in Name_uObject | Name_uParent | Name_uTag then
              null;
  
           --  Do not process fields without any scalar components
*************** package body Exp_Attr is
*** 740,746 ****
        --  Use the root type when dealing with a class-wide type
  
        if Is_Class_Wide_Type (Typ) then
!          Typ := Root_Type (Typ);
        end if;
  
        Typ_Decl := Declaration_Node (Typ);
--- 738,744 ----
        --  Use the root type when dealing with a class-wide type
  
        if Is_Class_Wide_Type (Typ) then
!          Typ := Validated_View (Root_Type (Typ));
        end if;
  
        Typ_Decl := Declaration_Node (Typ);
*************** package body Exp_Attr is
*** 936,941 ****
--- 934,957 ----
     end Compile_Stream_Body_In_Scope;
  
     -----------------------------------
+    -- Default_Streaming_Unavailable --
+    -----------------------------------
+ 
+    function Default_Streaming_Unavailable (Typ : Entity_Id) return Boolean is
+       Btyp : constant Entity_Id := Implementation_Base_Type (Typ);
+    begin
+       if Is_Immutably_Limited_Type (Btyp)
+         and then not Is_Tagged_Type (Btyp)
+         and then not (Ekind (Btyp) = E_Record_Type
+                       and then Present (Corresponding_Concurrent_Type (Btyp)))
+       then
+          pragma Assert (In_Instance_Body);
+          return True;
+       end if;
+       return False;
+    end Default_Streaming_Unavailable;
+ 
+    -----------------------------------
     -- Expand_Access_To_Protected_Op --
     -----------------------------------
  
*************** package body Exp_Attr is
*** 946,957 ****
     is
        --  The value of the attribute_reference is a record containing two
        --  fields: an access to the protected object, and an access to the
!       --  subprogram itself. The prefix is a selected component.
  
        Loc     : constant Source_Ptr := Sloc (N);
        Agg     : Node_Id;
        Btyp    : constant Entity_Id := Base_Type (Typ);
!       Sub     : Entity_Id;
        Sub_Ref : Node_Id;
        E_T     : constant Entity_Id := Equivalent_Type (Btyp);
        Acc     : constant Entity_Id :=
--- 962,996 ----
     is
        --  The value of the attribute_reference is a record containing two
        --  fields: an access to the protected object, and an access to the
!       --  subprogram itself. The prefix is an identifier or a selected
!       --  component.
! 
!       function Has_By_Protected_Procedure_Prefixed_View return Boolean;
!       --  Determine whether Pref denotes the prefixed class-wide interface
!       --  view of a procedure with synchronization kind By_Protected_Procedure.
! 
!       ----------------------------------------------
!       -- Has_By_Protected_Procedure_Prefixed_View --
!       ----------------------------------------------
! 
!       function Has_By_Protected_Procedure_Prefixed_View return Boolean is
!       begin
!          return Nkind (Pref) = N_Selected_Component
!            and then Nkind (Prefix (Pref)) in N_Has_Entity
!            and then Present (Entity (Prefix (Pref)))
!            and then Is_Class_Wide_Type (Etype (Entity (Prefix (Pref))))
!            and then (Is_Synchronized_Interface (Etype (Entity (Prefix (Pref))))
!                        or else
!                      Is_Protected_Interface (Etype (Entity (Prefix (Pref)))))
!            and then Is_By_Protected_Procedure (Entity (Selector_Name (Pref)));
!       end Has_By_Protected_Procedure_Prefixed_View;
! 
!       --  Local variables
  
        Loc     : constant Source_Ptr := Sloc (N);
        Agg     : Node_Id;
        Btyp    : constant Entity_Id := Base_Type (Typ);
!       Sub     : Entity_Id          := Empty;
        Sub_Ref : Node_Id;
        E_T     : constant Entity_Id := Equivalent_Type (Btyp);
        Acc     : constant Entity_Id :=
*************** package body Exp_Attr is
*** 1020,1025 ****
--- 1059,1081 ----
                  Attribute_Name => Name_Address);
           end if;
  
+       elsif Has_By_Protected_Procedure_Prefixed_View then
+          Obj_Ref :=
+            Make_Attribute_Reference (Loc,
+              Prefix => Relocate_Node (Prefix (Pref)),
+                Attribute_Name => Name_Address);
+ 
+          --  Analyze the object address with expansion disabled. Required
+          --  because its expansion would displace the pointer to the object,
+          --  which is not correct at this stage since the object type is a
+          --  class-wide interface type and we are dispatching a call to a
+          --  thunk (which would erroneously displace the pointer again).
+ 
+          Expander_Mode_Save_And_Set (False);
+          Analyze (Obj_Ref);
+          Set_Analyzed (Obj_Ref);
+          Expander_Mode_Restore;
+ 
        --  Case where the prefix is not an entity name. Find the
        --  version of the protected operation to be called from
        --  outside the protected object.
*************** package body Exp_Attr is
*** 1036,1061 ****
                 Attribute_Name => Name_Address);
        end if;
  
!       Sub_Ref :=
!         Make_Attribute_Reference (Loc,
!           Prefix         => Sub,
!           Attribute_Name => Name_Access);
  
!       --  We set the type of the access reference to the already generated
!       --  access_to_subprogram type, and declare the reference analyzed, to
!       --  prevent further expansion when the enclosing aggregate is analyzed.
  
!       Set_Etype (Sub_Ref, Acc);
!       Set_Analyzed (Sub_Ref);
  
!       Agg :=
!         Make_Aggregate (Loc,
!           Expressions => New_List (Obj_Ref, Sub_Ref));
  
!       --  Sub_Ref has been marked as analyzed, but we still need to make sure
!       --  Sub is correctly frozen.
  
!       Freeze_Before (N, Entity (Sub));
  
        Rewrite (N, Agg);
        Analyze_And_Resolve (N, E_T);
--- 1092,1155 ----
                 Attribute_Name => Name_Address);
        end if;
  
!       if Has_By_Protected_Procedure_Prefixed_View then
!          declare
!             Ctrl_Tag  : Node_Id := Duplicate_Subexpr (Prefix (Pref));
!             Prim_Addr : Node_Id;
!             Subp      : constant Entity_Id := Entity (Selector_Name (Pref));
!             Typ       : constant Entity_Id :=
!                           Etype (Etype (Entity (Prefix (Pref))));
!          begin
!             --  The target subprogram is a thunk; retrieve its address from
!             --  its secondary dispatch table slot.
  
!             Build_Get_Prim_Op_Address (Loc,
!               Typ      => Typ,
!               Tag_Node => Ctrl_Tag,
!               Position => DT_Position (Subp),
!               New_Node => Prim_Addr);
  
!             --  Mark the access to the target subprogram as an access to the
!             --  dispatch table and perform an unchecked type conversion to such
!             --  access type. This is required to allow the backend to properly
!             --  identify and handle the access to the dispatch table slot on
!             --  targets where the dispatch table contains descriptors (instead
!             --  of pointers).
  
!             Set_Is_Dispatch_Table_Entity (Acc);
!             Sub_Ref := Unchecked_Convert_To (Acc, Prim_Addr);
!             Analyze (Sub_Ref);
  
!             Agg :=
!               Make_Aggregate (Loc,
!                 Expressions => New_List (Obj_Ref, Sub_Ref));
!          end;
  
!       --  Common case
! 
!       else
!          Sub_Ref :=
!            Make_Attribute_Reference (Loc,
!              Prefix         => Sub,
!              Attribute_Name => Name_Access);
! 
!          --  We set the type of the access reference to the already generated
!          --  access_to_subprogram type, and declare the reference analyzed,
!          --  to prevent further expansion when the enclosing aggregate is
!          --  analyzed.
! 
!          Set_Etype (Sub_Ref, Acc);
!          Set_Analyzed (Sub_Ref);
! 
!          Agg :=
!            Make_Aggregate (Loc,
!              Expressions => New_List (Obj_Ref, Sub_Ref));
! 
!          --  Sub_Ref has been marked as analyzed, but we still need to make
!          --  sure Sub is correctly frozen.
! 
!          Freeze_Before (N, Entity (Sub));
!       end if;
  
        Rewrite (N, Agg);
        Analyze_And_Resolve (N, E_T);
*************** package body Exp_Attr is
*** 1096,1107 ****
            Selector_Name => Make_Identifier (Loc, Nam));
  
        --  The generated call is given the provided set of parameters, and then
!       --  wrapped in a conversion which converts the result to the target type
!       --  We use the base type as the target because a range check may be
!       --  required.
  
        Rewrite (N,
!         Unchecked_Convert_To (Base_Type (Etype (N)),
            Make_Function_Call (Loc,
              Name                   => Fnm,
              Parameter_Associations => Args)));
--- 1190,1199 ----
            Selector_Name => Make_Identifier (Loc, Nam));
  
        --  The generated call is given the provided set of parameters, and then
!       --  wrapped in a conversion which converts the result to the target type.
  
        Rewrite (N,
!         Convert_To (Typ,
            Make_Function_Call (Loc,
              Name                   => Fnm,
              Parameter_Associations => Args)));
*************** package body Exp_Attr is
*** 1118,1124 ****
     --  by Expand_Fpt_Attribute
  
     procedure Expand_Fpt_Attribute_R (N : Node_Id) is
!       E1  : constant Node_Id    := First (Expressions (N));
        Ftp : Entity_Id;
        Pkg : RE_Id;
     begin
--- 1210,1216 ----
     --  by Expand_Fpt_Attribute
  
     procedure Expand_Fpt_Attribute_R (N : Node_Id) is
!       E1  : constant Node_Id := First (Expressions (N));
        Ftp : Entity_Id;
        Pkg : RE_Id;
     begin
*************** package body Exp_Attr is
*** 1138,1147 ****
     --  by Expand_Fpt_Attribute
  
     procedure Expand_Fpt_Attribute_RI (N : Node_Id) is
!       E1  : constant Node_Id   := First (Expressions (N));
        Ftp : Entity_Id;
        Pkg : RE_Id;
-       E2  : constant Node_Id   := Next (E1);
     begin
        Find_Fat_Info (Etype (E1), Ftp, Pkg);
        Expand_Fpt_Attribute
--- 1230,1239 ----
     --  by Expand_Fpt_Attribute
  
     procedure Expand_Fpt_Attribute_RI (N : Node_Id) is
!       E1  : constant Node_Id := First (Expressions (N));
!       E2  : constant Node_Id := Next (E1);
        Ftp : Entity_Id;
        Pkg : RE_Id;
     begin
        Find_Fat_Info (Etype (E1), Ftp, Pkg);
        Expand_Fpt_Attribute
*************** package body Exp_Attr is
*** 1436,1457 ****
                 Insert_Action (Loop_Stmt, Func_Decl);
                 Pop_Scope;
  
!                --  The analysis of the condition may have generated itypes
!                --  that are now used within the function: Adjust their
!                --  scopes accordingly so that their use appears in their
!                --  scope of definition.
  
                 declare
!                   Ityp : Entity_Id;
  
                 begin
!                   Ityp := First_Entity (Loop_Id);
  
!                   while Present (Ityp) loop
!                      if Is_Itype (Ityp) then
!                         Set_Scope (Ityp, Func_Id);
                       end if;
!                      Next_Entity (Ityp);
                    end loop;
                 end;
  
--- 1528,1563 ----
                 Insert_Action (Loop_Stmt, Func_Decl);
                 Pop_Scope;
  
!                --  The analysis of the condition may have generated entities
!                --  (such as itypes) that are now used within the function.
!                --  Adjust their scopes accordingly so that their use appears
!                --  in their scope of definition.
  
                 declare
!                   Ent : Entity_Id;
  
                 begin
!                   Ent := First_Entity (Loop_Id);
  
!                   while Present (Ent) loop
!                      --  Various entities that now occur within the function
!                      --  need to have their scope reset, but not all entities
!                      --  associated with Loop_Id are now inside the function.
!                      --  The function entity itself and loop parameters can
!                      --  be outside the function, and there may be others.
!                      --  It's not clear how the determination of what entity
!                      --  scopes need to be adjusted can be made accurately.
!                      --  Perhaps it will be necessary to traverse the function
!                      --  body to find the exact entities whose scopes need to
!                      --  be reset to the function's Entity_Id. ???
! 
!                      if Ekind (Ent) /= E_Loop_Parameter
!                        and then Ent /= Func_Id
!                      then
!                         Set_Scope (Ent, Func_Id);
                       end if;
! 
!                      Next_Entity (Ent);
                    end loop;
                 end;
  
*************** package body Exp_Attr is
*** 1724,1746 ****
     ----------------------------------
  
     procedure Expand_N_Attribute_Reference (N : Node_Id) is
!       Loc   : constant Source_Ptr   := Sloc (N);
!       Typ   : constant Entity_Id    := Etype (N);
!       Btyp  : constant Entity_Id    := Base_Type (Typ);
!       Pref  : constant Node_Id      := Prefix (N);
!       Ptyp  : constant Entity_Id    := Etype (Pref);
!       Exprs : constant List_Id      := Expressions (N);
!       Id    : constant Attribute_Id := Get_Attribute_Id (Attribute_Name (N));
  
!       procedure Rewrite_Stream_Proc_Call (Pname : Entity_Id);
!       --  Rewrites a stream attribute for Read, Write or Output with the
!       --  procedure call. Pname is the entity for the procedure to call.
  
!       ------------------------------
!       -- Rewrite_Stream_Proc_Call --
!       ------------------------------
  
!       procedure Rewrite_Stream_Proc_Call (Pname : Entity_Id) is
           Item       : constant Node_Id   := Next (First (Exprs));
           Item_Typ   : constant Entity_Id := Etype (Item);
           Formal     : constant Entity_Id := Next_Formal (First_Formal (Pname));
--- 1830,1867 ----
     ----------------------------------
  
     procedure Expand_N_Attribute_Reference (N : Node_Id) is
!       Loc   : constant Source_Ptr := Sloc (N);
!       Pref  : constant Node_Id    := Prefix (N);
!       Exprs : constant List_Id    := Expressions (N);
  
!       function Get_Integer_Type (Typ : Entity_Id) return Entity_Id;
!       --  Return a small integer type appropriate for the enumeration type
  
!       procedure Rewrite_Attribute_Proc_Call (Pname : Entity_Id);
!       --  Rewrites an attribute for Read, Write, Output, or Put_Image with a
!       --  call to the appropriate TSS procedure. Pname is the entity for the
!       --  procedure to call.
  
!       ----------------------
!       -- Get_Integer_Type --
!       ----------------------
! 
!       function Get_Integer_Type (Typ : Entity_Id) return Entity_Id is
!          Siz     : constant Uint := Esize (Base_Type (Typ));
! 
!       begin
!          --  We need to accommodate invalid values of the base type since we
!          --  accept them for Enum_Rep and Pos, so we reason on the Esize. And
!          --  we use an unsigned type since the enumeration type is unsigned.
! 
!          return Small_Integer_Type_For (Siz, Uns => True);
!       end Get_Integer_Type;
! 
!       ---------------------------------
!       -- Rewrite_Attribute_Proc_Call --
!       ---------------------------------
! 
!       procedure Rewrite_Attribute_Proc_Call (Pname : Entity_Id) is
           Item       : constant Node_Id   := Next (First (Exprs));
           Item_Typ   : constant Entity_Id := Etype (Item);
           Formal     : constant Entity_Id := Next_Formal (First_Formal (Pname));
*************** package body Exp_Attr is
*** 1835,1842 ****
              end if;
           end if;
  
!          --  The stream operation to call may be a renaming created by an
!          --  attribute definition clause, and may not be frozen yet. Ensure
           --  that it has the necessary extra formals.
  
           if not Is_Frozen (Pname) then
--- 1956,1963 ----
              end if;
           end if;
  
!          --  The stream operation to call might be a renaming created by an
!          --  attribute definition clause, and might not be frozen yet. Ensure
           --  that it has the necessary extra formals.
  
           if not Is_Frozen (Pname) then
*************** package body Exp_Attr is
*** 1851,1857 ****
               Parameter_Associations => Exprs));
  
           Analyze (N);
!       end Rewrite_Stream_Proc_Call;
  
     --  Start of processing for Expand_N_Attribute_Reference
  
--- 1972,1983 ----
               Parameter_Associations => Exprs));
  
           Analyze (N);
!       end Rewrite_Attribute_Proc_Call;
! 
!       Typ  : constant Entity_Id    := Etype (N);
!       Btyp : constant Entity_Id    := Base_Type (Typ);
!       Ptyp : constant Entity_Id    := Etype (Pref);
!       Id   : constant Attribute_Id := Get_Attribute_Id (Attribute_Name (N));
  
     --  Start of processing for Expand_N_Attribute_Reference
  
*************** package body Exp_Attr is
*** 1911,1918 ****
  
        if Is_Protected_Self_Reference (Pref)
          and then not
!           (Nkind_In (Parent (N), N_Index_Or_Discriminant_Constraint,
!                                  N_Discriminant_Association)
              and then Nkind (Parent (Parent (Parent (Parent (N))))) =
                                                        N_Component_Definition)
  
--- 2037,2044 ----
  
        if Is_Protected_Self_Reference (Pref)
          and then not
!           (Nkind (Parent (N)) in N_Index_Or_Discriminant_Constraint
!                                | N_Discriminant_Association
              and then Nkind (Parent (Parent (Parent (Parent (N))))) =
                                                        N_Component_Definition)
  
*************** package body Exp_Attr is
*** 1981,1989 ****
  
              begin
                 Obj_Name := N;
!                while Nkind_In (Obj_Name, N_Selected_Component,
!                                          N_Indexed_Component,
!                                          N_Slice)
                 loop
                    Obj_Name := Prefix (Obj_Name);
                 end loop;
--- 2107,2115 ----
  
              begin
                 Obj_Name := N;
!                while Nkind (Obj_Name) in N_Selected_Component
!                                        | N_Indexed_Component
!                                        | N_Slice
                 loop
                    Obj_Name := Prefix (Obj_Name);
                 end loop;
*************** package body Exp_Attr is
*** 2151,2157 ****
  
                          begin
                             Subp := Current_Scope;
!                            while Ekind_In (Subp, E_Loop, E_Block) loop
                                Subp := Scope (Subp);
                             end loop;
  
--- 2277,2283 ----
  
                          begin
                             Subp := Current_Scope;
!                            while Ekind (Subp) in E_Loop | E_Block loop
                                Subp := Scope (Subp);
                             end loop;
  
*************** package body Exp_Attr is
*** 2232,2238 ****
                and then Is_Entity_Name (Prefix (Enc_Object))
                and then (Ekind (Btyp) = E_General_Access_Type
                           or else Is_Local_Anonymous_Access (Btyp))
!               and then Ekind (Entity (Prefix (Enc_Object))) in Formal_Kind
                and then Ekind (Etype (Entity (Prefix (Enc_Object))))
                           = E_Anonymous_Access_Type
                and then Present (Extra_Accessibility
--- 2358,2364 ----
                and then Is_Entity_Name (Prefix (Enc_Object))
                and then (Ekind (Btyp) = E_General_Access_Type
                           or else Is_Local_Anonymous_Access (Btyp))
!               and then Is_Formal (Entity (Prefix (Enc_Object)))
                and then Ekind (Etype (Entity (Prefix (Enc_Object))))
                           = E_Anonymous_Access_Type
                and then Present (Extra_Accessibility
*************** package body Exp_Attr is
*** 2459,2470 ****
  
              New_Node := Build_Get_Alignment (Loc, New_Node);
  
              --  Case where the context is a specific integer type with which
!             --  the original attribute was compatible. The function has a
!             --  specific type as well, so to preserve the compatibility we
!             --  must convert explicitly.
  
!             if Typ /= Standard_Integer then
                 New_Node := Convert_To (Typ, New_Node);
              end if;
  
--- 2585,2604 ----
  
              New_Node := Build_Get_Alignment (Loc, New_Node);
  
+             --  Case where the context is an unchecked conversion to a specific
+             --  integer type. We directly convert from the alignment's type.
+ 
+             if Nkind (Parent (N)) = N_Unchecked_Type_Conversion then
+                Rewrite (N, New_Node);
+                Analyze_And_Resolve (N);
+                return;
+ 
              --  Case where the context is a specific integer type with which
!             --  the original attribute was compatible. But the alignment has a
!             --  specific type in a-tags.ads (Standard.Natural) so, in order to
!             --  preserve type compatibility, we must convert explicitly.
  
!             elsif Typ /= Standard_Natural then
                 New_Node := Convert_To (Typ, New_Node);
              end if;
  
*************** package body Exp_Attr is
*** 2480,2485 ****
--- 2614,2632 ----
           end if;
        end Alignment;
  
+       ---------------------------
+       -- Asm_Input, Asm_Output --
+       ---------------------------
+ 
+       --  The Asm_Input and Asm_Output attributes are not expanded at this
+       --  stage, but will be eliminated in the expansion of the Asm call,
+       --  see Exp_Intr for details. So the back end will never see them.
+ 
+       when Attribute_Asm_Input
+          | Attribute_Asm_Output
+       =>
+          null;
+ 
        ---------
        -- Bit --
        ---------
*************** package body Exp_Attr is
*** 2498,2531 ****
        -- Bit_Position --
        ------------------
  
!       --  We compute this if a component clause was present, otherwise we leave
!       --  the computation up to the back end, since we don't know what layout
!       --  will be chosen.
! 
!       --  Note that the attribute can apply to a naked record component
!       --  in generated code (i.e. the prefix is an identifier that
!       --  references the component or discriminant entity).
! 
!       when Attribute_Bit_Position => Bit_Position : declare
!          CE : Entity_Id;
! 
!       begin
!          if Nkind (Pref) = N_Identifier then
!             CE := Entity (Pref);
!          else
!             CE := Entity (Selector_Name (Pref));
!          end if;
! 
!          if Known_Static_Component_Bit_Offset (CE) then
!             Rewrite (N,
!               Make_Integer_Literal (Loc,
!                 Intval => Component_Bit_Offset (CE)));
!             Analyze_And_Resolve (N, Typ);
  
!          else
!             Apply_Universal_Integer_Attribute_Checks (N);
!          end if;
!       end Bit_Position;
  
        ------------------
        -- Body_Version --
--- 2645,2655 ----
        -- Bit_Position --
        ------------------
  
!       --  We leave the computation up to the back end, since we don't know what
!       --  layout will be chosen if no component clause was specified.
  
!       when Attribute_Bit_Position =>
!          Apply_Universal_Integer_Attribute_Checks (N);
  
        ------------------
        -- Body_Version --
*************** package body Exp_Attr is
*** 2699,2705 ****
           Id_Kind    : constant Entity_Id := RTE (RO_AT_Task_Id);
           Ent        : constant Entity_Id := Entity (Pref);
           Conctype   : constant Entity_Id := Scope (Ent);
!          Nest_Depth : Integer := 0;
           Name       : Node_Id;
           S          : Entity_Id;
  
--- 2823,2829 ----
           Id_Kind    : constant Entity_Id := RTE (RO_AT_Task_Id);
           Ent        : constant Entity_Id := Entity (Pref);
           Conctype   : constant Entity_Id := Scope (Ent);
!          Nest_Depth : Nat := 0;
           Name       : Node_Id;
           S          : Entity_Id;
  
*************** package body Exp_Attr is
*** 2762,2773 ****
                      New_Occurrence_Of (RTE (RE_Task_Entry_Caller), Loc),
                    Parameter_Associations => New_List (
                      Make_Integer_Literal (Loc,
!                       Intval => Int (Nest_Depth))))));
           end if;
  
           Analyze_And_Resolve (N, Id_Kind);
        end Caller;
  
        -------------
        -- Compose --
        -------------
--- 2886,2906 ----
                      New_Occurrence_Of (RTE (RE_Task_Entry_Caller), Loc),
                    Parameter_Associations => New_List (
                      Make_Integer_Literal (Loc,
!                       Intval => Nest_Depth)))));
           end if;
  
           Analyze_And_Resolve (N, Id_Kind);
        end Caller;
  
+       --------------------
+       -- Component_Size --
+       --------------------
+ 
+       --  Component_Size is handled by the back end
+ 
+       when Attribute_Component_Size =>
+          Apply_Universal_Integer_Attribute_Checks (N);
+ 
        -------------
        -- Compose --
        -------------
*************** package body Exp_Attr is
*** 2791,2798 ****
        when Attribute_Constrained => Constrained : declare
           Formal_Ent : constant Entity_Id := Param_Entity (Pref);
  
-       --  Start of processing for Constrained
- 
        begin
           --  Reference to a parameter where the value is passed as an extra
           --  actual, corresponding to the extra formal referenced by the
--- 2924,2929 ----
*************** package body Exp_Attr is
*** 2806,2824 ****
           then
              Rewrite (N,
                New_Occurrence_Of
!                 (Extra_Constrained (Formal_Ent), Sloc (N)));
  
           --  If the prefix is an access to object, the attribute applies to
           --  the designated object, so rewrite with an explicit dereference.
  
!          elsif Is_Access_Type (Etype (Pref))
             and then
               (not Is_Entity_Name (Pref) or else Is_Object (Entity (Pref)))
           then
              Rewrite (Pref,
                Make_Explicit_Dereference (Loc, Relocate_Node (Pref)));
-             Analyze_And_Resolve (N, Standard_Boolean);
-             return;
  
           --  For variables with a Extra_Constrained field, we use the
           --  corresponding entity.
--- 2937,2953 ----
           then
              Rewrite (N,
                New_Occurrence_Of
!                 (Extra_Constrained (Formal_Ent), Loc));
  
           --  If the prefix is an access to object, the attribute applies to
           --  the designated object, so rewrite with an explicit dereference.
  
!          elsif Is_Access_Type (Ptyp)
             and then
               (not Is_Entity_Name (Pref) or else Is_Object (Entity (Pref)))
           then
              Rewrite (Pref,
                Make_Explicit_Dereference (Loc, Relocate_Node (Pref)));
  
           --  For variables with a Extra_Constrained field, we use the
           --  corresponding entity.
*************** package body Exp_Attr is
*** 2829,2835 ****
           then
              Rewrite (N,
                New_Occurrence_Of
!                 (Extra_Constrained (Entity (Pref)), Sloc (N)));
  
           --  For all other cases, we can tell at compile time
  
--- 2958,2964 ----
           then
              Rewrite (N,
                New_Occurrence_Of
!                 (Extra_Constrained (Entity (Pref)), Loc));
  
           --  For all other cases, we can tell at compile time
  
*************** package body Exp_Attr is
*** 2846,2853 ****
              Rewrite (N,
                New_Occurrence_Of
                  (Boolean_Literals
!                    (Exp_Util.Attribute_Constrained_Static_Value
!                       (Pref)), Sloc (N)));
           end if;
  
           Analyze_And_Resolve (N, Standard_Boolean);
--- 2975,2981 ----
              Rewrite (N,
                New_Occurrence_Of
                  (Boolean_Literals
!                    (Exp_Util.Attribute_Constrained_Static_Value (Pref)), Loc));
           end if;
  
           Analyze_And_Resolve (N, Standard_Boolean);
*************** package body Exp_Attr is
*** 2858,2864 ****
        ---------------
  
        --  Transforms 'Copy_Sign into a call to the floating-point attribute
!       --  function Copy_Sign in Fat_xxx (where xxx is the root type)
  
        when Attribute_Copy_Sign =>
           Expand_Fpt_Attribute_RR (N);
--- 2986,2992 ----
        ---------------
  
        --  Transforms 'Copy_Sign into a call to the floating-point attribute
!       --  function Copy_Sign in Fat_xxx (where xxx is the root type).
  
        when Attribute_Copy_Sign =>
           Expand_Fpt_Attribute_RR (N);
*************** package body Exp_Attr is
*** 2971,2994 ****
        -- Descriptor_Size --
        ---------------------
  
!       when Attribute_Descriptor_Size =>
! 
!          --  Attribute Descriptor_Size is handled by the back end when applied
!          --  to an unconstrained array type.
! 
!          if Is_Array_Type (Ptyp)
!            and then not Is_Constrained (Ptyp)
!          then
!             Apply_Universal_Integer_Attribute_Checks (N);
! 
!          --  For any other type, the descriptor size is 0 because there is no
!          --  actual descriptor, but the result is not formally static.
  
!          else
!             Rewrite (N, Make_Integer_Literal (Loc, 0));
!             Analyze (N);
!             Set_Is_Static_Expression (N, False);
!          end if;
  
        ---------------
        -- Elab_Body --
--- 3099,3108 ----
        -- Descriptor_Size --
        ---------------------
  
!       --  Descriptor_Size is handled by the back end
  
!       when Attribute_Descriptor_Size =>
!          Apply_Universal_Integer_Attribute_Checks (N);
  
        ---------------
        -- Elab_Body --
*************** package body Exp_Attr is
*** 3138,3169 ****
              Expr := Pref;
           end if;
  
!          --  If the expression is an enumeration literal, it is replaced by the
!          --  literal value.
! 
!          if Nkind (Expr) in N_Has_Entity
!            and then Ekind (Entity (Expr)) = E_Enumeration_Literal
!          then
!             Rewrite (N,
!               Make_Integer_Literal (Loc, Enumeration_Rep (Entity (Expr))));
! 
!          --  If this is a renaming of a literal, recover the representation
!          --  of the original. If it renames an expression there is nothing to
!          --  fold.
! 
!          elsif Nkind (Expr) in N_Has_Entity
!            and then Ekind (Entity (Expr)) = E_Constant
!            and then Present (Renamed_Object (Entity (Expr)))
!            and then Is_Entity_Name (Renamed_Object (Entity (Expr)))
!            and then Ekind (Entity (Renamed_Object (Entity (Expr)))) =
!                       E_Enumeration_Literal
!          then
!             Rewrite (N,
!               Make_Integer_Literal (Loc,
!                 Enumeration_Rep (Entity (Renamed_Object (Entity (Expr))))));
! 
!          --  If not constant-folded above, Enum_Type'Enum_Rep (X) or
!          --  X'Enum_Rep expands to
  
           --    target-type (X)
  
--- 3252,3259 ----
              Expr := Pref;
           end if;
  
!          --  If not constant-folded, Enum_Type'Enum_Rep (X) or X'Enum_Rep
!          --  expands to
  
           --    target-type (X)
  
*************** package body Exp_Attr is
*** 3174,3184 ****
           --  make sure that the analyzer does not complain about what otherwise
           --  might be an illegal conversion.
  
           else
!             Rewrite (N, OK_Convert_To (Typ, Relocate_Node (Expr)));
           end if;
  
-          Set_Etype (N, Typ);
           Analyze_And_Resolve (N, Typ);
        end Enum_Rep;
  
--- 3264,3282 ----
           --  make sure that the analyzer does not complain about what otherwise
           --  might be an illegal conversion.
  
+          --  However the target type is universal integer in most cases, which
+          --  is a very large type, so in the case of an enumeration type, we
+          --  first convert to a small signed integer type in order not to lose
+          --  the size information.
+ 
+          if Is_Enumeration_Type (Ptyp) then
+             Rewrite (N, OK_Convert_To (Get_Integer_Type (Ptyp), Expr));
+             Convert_To_And_Rewrite (Typ, N);
+ 
           else
!             Rewrite (N, OK_Convert_To (Typ, Expr));
           end if;
  
           Analyze_And_Resolve (N, Typ);
        end Enum_Rep;
  
*************** package body Exp_Attr is
*** 3269,3279 ****
           function Calculate_Header_Size return Node_Id is
           begin
              --  Generate:
!             --    Universal_Integer
!             --      (Header_Size_With_Padding (Pref'Alignment))
  
              return
!               Convert_To (Universal_Integer,
                  Make_Function_Call (Loc,
                    Name                   =>
                      New_Occurrence_Of (RTE (RE_Header_Size_With_Padding), Loc),
--- 3367,3376 ----
           function Calculate_Header_Size return Node_Id is
           begin
              --  Generate:
!             --    Typ (Header_Size_With_Padding (Pref'Alignment))
  
              return
!               Convert_To (Typ,
                  Make_Function_Call (Loc,
                    Name                   =>
                      New_Occurrence_Of (RTE (RE_Header_Size_With_Padding), Loc),
*************** package body Exp_Attr is
*** 3288,3294 ****
  
           Size : Entity_Id;
  
!       --  Start of Finalization_Size
  
        begin
           --  An object of a class-wide type first requires a runtime check to
--- 3385,3391 ----
  
           Size : Entity_Id;
  
!       --  Start of processing for Finalization_Size
  
        begin
           --  An object of a class-wide type first requires a runtime check to
*************** package body Exp_Attr is
*** 3301,3309 ****
           --    Size : Integer := 0;
           --
           --    if Needs_Finalization (Pref'Tag) then
!          --       Size :=
!          --         Universal_Integer
!          --           (Header_Size_With_Padding (Pref'Alignment));
           --    end if;
           --
           --  and the attribute reference is replaced with a reference to Size.
--- 3398,3404 ----
           --    Size : Integer := 0;
           --
           --    if Needs_Finalization (Pref'Tag) then
!          --       Size := Integer (Header_Size_With_Padding (Pref'Alignment));
           --    end if;
           --
           --  and the attribute reference is replaced with a reference to Size.
*************** package body Exp_Attr is
*** 3325,3332 ****
                --  Generate:
                --    if Needs_Finalization (Pref'Tag) then
                --       Size :=
!               --         Universal_Integer
!               --           (Header_Size_With_Padding (Pref'Alignment));
                --    end if;
  
                Make_If_Statement (Loc,
--- 3420,3426 ----
                --  Generate:
                --    if Needs_Finalization (Pref'Tag) then
                --       Size :=
!               --         Integer (Header_Size_With_Padding (Pref'Alignment));
                --    end if;
  
                Make_If_Statement (Loc,
*************** package body Exp_Attr is
*** 3343,3349 ****
                  Then_Statements        => New_List (
                     Make_Assignment_Statement (Loc,
                       Name       => New_Occurrence_Of (Size, Loc),
!                      Expression => Calculate_Header_Size)))));
  
              Rewrite (N, New_Occurrence_Of (Size, Loc));
  
--- 3437,3445 ----
                  Then_Statements        => New_List (
                     Make_Assignment_Statement (Loc,
                       Name       => New_Occurrence_Of (Size, Loc),
!                      Expression =>
!                        Convert_To
!                          (Standard_Integer, Calculate_Header_Size))))));
  
              Rewrite (N, New_Occurrence_Of (Size, Loc));
  
*************** package body Exp_Attr is
*** 3367,3408 ****
           Analyze_And_Resolve (N, Typ);
        end Finalization_Size;
  
!       -----------
!       -- First --
!       -----------
! 
!       when Attribute_First =>
  
           --  If the prefix type is a constrained packed array type which
           --  already has a Packed_Array_Impl_Type representation defined, then
!          --  replace this attribute with a direct reference to 'First of the
!          --  appropriate index subtype (since otherwise the back end will try
!          --  to give us the value of 'First for this implementation type).
  
!          if Is_Constrained_Packed_Array (Ptyp) then
              Rewrite (N,
                Make_Attribute_Reference (Loc,
!                 Attribute_Name => Name_First,
                  Prefix         =>
                    New_Occurrence_Of (Get_Index_Subtype (N), Loc)));
              Analyze_And_Resolve (N, Typ);
  
           --  For access type, apply access check as needed
  
           elsif Is_Access_Type (Ptyp) then
              Apply_Access_Check (N);
  
!          --  For scalar type, if low bound is a reference to an entity, just
           --  replace with a direct reference. Note that we can only have a
           --  reference to a constant entity at this stage, anything else would
           --  have already been rewritten.
  
           elsif Is_Scalar_Type (Ptyp) then
              declare
!                Lo : constant Node_Id := Type_Low_Bound (Ptyp);
              begin
!                if Is_Entity_Name (Lo) then
!                   Rewrite (N, New_Occurrence_Of (Entity (Lo), Loc));
                 end if;
              end;
           end if;
--- 3463,3546 ----
           Analyze_And_Resolve (N, Typ);
        end Finalization_Size;
  
!       -----------------
!       -- First, Last --
!       -----------------
  
+       when Attribute_First
+          | Attribute_Last
+       =>
           --  If the prefix type is a constrained packed array type which
           --  already has a Packed_Array_Impl_Type representation defined, then
!          --  replace this attribute with a direct reference to the attribute of
!          --  the appropriate index subtype (since otherwise the back end will
!          --  try to give us the value of 'First for this implementation type).
!          --  Do not do this if Ptyp depends on a discriminant as its bounds
!          --  are only available through N.
  
!          if Is_Constrained_Packed_Array (Ptyp)
!            and then not Size_Depends_On_Discriminant (Ptyp)
!          then
              Rewrite (N,
                Make_Attribute_Reference (Loc,
!                 Attribute_Name => Attribute_Name (N),
                  Prefix         =>
                    New_Occurrence_Of (Get_Index_Subtype (N), Loc)));
              Analyze_And_Resolve (N, Typ);
  
+          --  For a constrained array type, if the bound is a reference to an
+          --  entity which is not a discriminant, just replace with a direct
+          --  reference. Note that this must be in keeping with what is done
+          --  for scalar types in order for range checks to be elided in loops.
+ 
+          --  However, avoid doing it if the array type is public because, in
+          --  this case, we effectively rely on the back end to create public
+          --  symbols with consistent names across units for the array bounds.
+ 
+          elsif Is_Array_Type (Ptyp)
+            and then Is_Constrained (Ptyp)
+            and then not Is_Public (Ptyp)
+          then
+             declare
+                Bnd : Node_Id;
+ 
+             begin
+                if Id = Attribute_First then
+                   Bnd := Type_Low_Bound (Get_Index_Subtype (N));
+                else
+                   Bnd := Type_High_Bound (Get_Index_Subtype (N));
+                end if;
+ 
+                if Is_Entity_Name (Bnd)
+                  and then Ekind (Entity (Bnd)) /= E_Discriminant
+                then
+                   Rewrite (N, New_Occurrence_Of (Entity (Bnd), Loc));
+                end if;
+             end;
+ 
           --  For access type, apply access check as needed
  
           elsif Is_Access_Type (Ptyp) then
              Apply_Access_Check (N);
  
!          --  For scalar type, if the bound is a reference to an entity, just
           --  replace with a direct reference. Note that we can only have a
           --  reference to a constant entity at this stage, anything else would
           --  have already been rewritten.
  
           elsif Is_Scalar_Type (Ptyp) then
              declare
!                Bnd : Node_Id;
! 
              begin
!                if Id = Attribute_First then
!                   Bnd := Type_Low_Bound (Ptyp);
!                else
!                   Bnd := Type_High_Bound (Ptyp);
!                end if;
! 
!                if Is_Entity_Name (Bnd) then
!                   Rewrite (N, New_Occurrence_Of (Entity (Bnd), Loc));
                 end if;
              end;
           end if;
*************** package body Exp_Attr is
*** 3411,3452 ****
        -- First_Bit --
        ---------------
  
!       --  Compute this if component clause was present, otherwise we leave the
!       --  computation to be completed in the back-end, since we don't know what
!       --  layout will be chosen.
! 
!       when Attribute_First_Bit => First_Bit_Attr : declare
!          CE : constant Entity_Id := Entity (Selector_Name (Pref));
! 
!       begin
!          --  In Ada 2005 (or later) if we have the non-default bit order, then
!          --  we return the original value as given in the component clause
!          --  (RM 2005 13.5.2(3/2)).
! 
!          if Present (Component_Clause (CE))
!            and then Ada_Version >= Ada_2005
!            and then Reverse_Bit_Order (Scope (CE))
!          then
!             Rewrite (N,
!               Make_Integer_Literal (Loc,
!                 Intval => Expr_Value (First_Bit (Component_Clause (CE)))));
!             Analyze_And_Resolve (N, Typ);
! 
!          --  Otherwise (Ada 83/95 or Ada 2005 or later with default bit order),
!          --  rewrite with normalized value if we know it statically.
! 
!          elsif Known_Static_Component_Bit_Offset (CE) then
!             Rewrite (N,
!               Make_Integer_Literal (Loc,
!                 Component_Bit_Offset (CE) mod System_Storage_Unit));
!             Analyze_And_Resolve (N, Typ);
! 
!          --  Otherwise left to back end, just do universal integer checks
  
!          else
!             Apply_Universal_Integer_Attribute_Checks (N);
!          end if;
!       end First_Bit_Attr;
  
        --------------------------------
        -- Fixed_Value, Integer_Value --
--- 3549,3559 ----
        -- First_Bit --
        ---------------
  
!       --  We leave the computation up to the back end, since we don't know what
!       --  layout will be chosen if no component clause was specified.
  
!       when Attribute_First_Bit =>
!          Apply_Universal_Integer_Attribute_Checks (N);
  
        --------------------------------
        -- Fixed_Value, Integer_Value --
*************** package body Exp_Attr is
*** 3509,3539 ****
  
        --  expands into
  
!       --    Result_Type (System.Fore (Universal_Real (Type'First)),
!       --                              Universal_Real (Type'Last))
  
        --  Note that we know that the type is a nonstatic subtype, or Fore would
!       --  have itself been computed dynamically in Eval_Attribute.
  
        when Attribute_Fore =>
!          Rewrite (N,
!            Convert_To (Typ,
!              Make_Function_Call (Loc,
!                Name                   =>
!                  New_Occurrence_Of (RTE (RE_Fore), Loc),
  
!                Parameter_Associations => New_List (
!                  Convert_To (Universal_Real,
!                    Make_Attribute_Reference (Loc,
!                      Prefix         => New_Occurrence_Of (Ptyp, Loc),
!                      Attribute_Name => Name_First)),
  
!                  Convert_To (Universal_Real,
!                    Make_Attribute_Reference (Loc,
!                      Prefix         => New_Occurrence_Of (Ptyp, Loc),
!                      Attribute_Name => Name_Last))))));
  
!          Analyze_And_Resolve (N, Typ);
  
        --------------
        -- Fraction --
--- 3616,3760 ----
  
        --  expands into
  
!       --    System.Fore_xx (ftyp (Typ'First), ftyp (Typ'Last) [,pm])
! 
!       --    For decimal fixed-point types
!       --      xx   = Decimal{32,64,128}
!       --      ftyp = Integer_{32,64,128}
!       --      pm   = Typ'Scale
! 
!       --    For the most common ordinary fixed-point types
!       --      xx   = Fixed{32,64,128}
!       --      ftyp = Integer_{32,64,128}
!       --      pm   = numerator of Typ'Small
!       --             denominator of Typ'Small
!       --             min (scale of Typ'Small, 0)
! 
!       --    For other ordinary fixed-point types
!       --      xx   = Real
!       --      ftyp = Universal_Real
!       --      pm   = none
  
        --  Note that we know that the type is a nonstatic subtype, or Fore would
!       --  have been computed statically in Eval_Attribute.
  
        when Attribute_Fore =>
!          declare
!             Arg_List : List_Id;
!             Fid      : RE_Id;
!             Ftyp     : Entity_Id;
  
!          begin
!             if Is_Decimal_Fixed_Point_Type (Ptyp) then
!                if Esize (Ptyp) <= 32 then
!                   Fid  := RE_Fore_Decimal32;
!                   Ftyp := RTE (RE_Integer_32);
!                elsif Esize (Ptyp) <= 64 then
!                   Fid  := RE_Fore_Decimal64;
!                   Ftyp := RTE (RE_Integer_64);
!                else
!                   Fid  := RE_Fore_Decimal128;
!                   Ftyp := RTE (RE_Integer_128);
!                end if;
  
!             else
!                declare
!                   Num : constant Uint := Norm_Num (Small_Value (Ptyp));
!                   Den : constant Uint := Norm_Den (Small_Value (Ptyp));
!                   Max : constant Uint := UI_Max (Num, Den);
!                   Min : constant Uint := UI_Min (Num, Den);
!                   Siz : constant Uint := Esize (Ptyp);
  
!                begin
!                   if Siz <= 32
!                     and then Max <= Uint_2 ** 31
!                     and then (Min = Uint_1
!                                or else Num < Den
!                                or else Num < Uint_10 ** 8)
!                   then
!                      Fid  := RE_Fore_Fixed32;
!                      Ftyp := RTE (RE_Integer_32);
!                   elsif Siz <= 64
!                     and then Max <= Uint_2 ** 63
!                     and then (Min = Uint_1
!                                or else Num < Den
!                                or else Num < Uint_10 ** 17)
!                   then
!                      Fid  := RE_Fore_Fixed64;
!                      Ftyp := RTE (RE_Integer_64);
!                   elsif System_Max_Integer_Size = 128
!                     and then Max <= Uint_2 ** 127
!                     and then (Min = Uint_1
!                                or else Num < Den
!                                or else Num < Uint_10 ** 37)
!                   then
!                      Fid  := RE_Fore_Fixed128;
!                      Ftyp := RTE (RE_Integer_128);
!                   else
!                      Fid  := RE_Fore_Real;
!                      Ftyp := Universal_Real;
!                   end if;
!                end;
!             end if;
! 
!             Arg_List := New_List (
!               Convert_To (Ftyp,
!                 Make_Attribute_Reference (Loc,
!                   Prefix         => New_Occurrence_Of (Ptyp, Loc),
!                   Attribute_Name => Name_First)));
! 
!             Append_To (Arg_List,
!               Convert_To (Ftyp,
!                 Make_Attribute_Reference (Loc,
!                   Prefix         => New_Occurrence_Of (Ptyp, Loc),
!                   Attribute_Name => Name_Last)));
! 
!             --  For decimal, append Scale and also set to do literal conversion
! 
!             if Is_Decimal_Fixed_Point_Type (Ptyp) then
!                Set_Conversion_OK (First (Arg_List));
!                Set_Conversion_OK (Next (First (Arg_List)));
! 
!                Append_To (Arg_List,
!                  Make_Integer_Literal (Loc, Scale_Value (Ptyp)));
! 
!             --  For ordinary fixed-point types, append Num, Den and Scale
!             --  parameters and also set to do literal conversion
! 
!             elsif Fid /= RE_Fore_Real then
!                Set_Conversion_OK (First (Arg_List));
!                Set_Conversion_OK (Next (First (Arg_List)));
! 
!                Append_To (Arg_List,
!                  Make_Integer_Literal (Loc, -Norm_Num (Small_Value (Ptyp))));
! 
!                Append_To (Arg_List,
!                  Make_Integer_Literal (Loc, -Norm_Den (Small_Value (Ptyp))));
! 
!                declare
!                   Val   : Ureal := Small_Value (Ptyp);
!                   Scale : Int   := 0;
! 
!                begin
!                   while Val >= Ureal_10 loop
!                      Val := Val / Ureal_10;
!                      Scale := Scale - 1;
!                   end loop;
! 
!                   Append_To (Arg_List,
!                      Make_Integer_Literal (Loc, UI_From_Int (Scale)));
!                end;
!             end if;
! 
!             Rewrite (N,
!               Convert_To (Typ,
!                 Make_Function_Call (Loc,
!                   Name                   =>
!                     New_Occurrence_Of (RTE (Fid), Loc),
!                   Parameter_Associations => Arg_List)));
! 
!             Analyze_And_Resolve (N, Typ);
!          end;
  
        --------------
        -- Fraction --
*************** package body Exp_Attr is
*** 3550,3565 ****
        --------------
  
        when Attribute_From_Any => From_Any : declare
-          P_Type : constant Entity_Id := Etype (Pref);
           Decls  : constant List_Id   := New_List;
  
        begin
           Rewrite (N,
!            Build_From_Any_Call (P_Type,
               Relocate_Node (First (Exprs)),
               Decls));
           Insert_Actions (N, Decls);
!          Analyze_And_Resolve (N, P_Type);
        end From_Any;
  
        ----------------------
--- 3771,3785 ----
        --------------
  
        when Attribute_From_Any => From_Any : declare
           Decls  : constant List_Id   := New_List;
  
        begin
           Rewrite (N,
!            Build_From_Any_Call (Ptyp,
               Relocate_Node (First (Exprs)),
               Decls));
           Insert_Actions (N, Decls);
!          Analyze_And_Resolve (N, Ptyp);
        end From_Any;
  
        ----------------------
*************** package body Exp_Attr is
*** 3586,3591 ****
--- 3806,3812 ----
  
           --    (X'address = Y'address)
           --      and then (X'Size = Y'Size)
+          --      and then (X'Size /= 0)      (AI12-0077)
  
           --  If both arguments have the same Etype the second conjunct can be
           --  omitted.
*************** package body Exp_Attr is
*** 3605,3631 ****
               Attribute_Name => Name_Size,
               Prefix         => New_Copy_Tree (X));
  
-          Y_Size :=
-            Make_Attribute_Reference (Loc,
-              Attribute_Name => Name_Size,
-              Prefix         => New_Copy_Tree (Y));
- 
           if Etype (X) = Etype (Y) then
              Rewrite (N,
!               Make_Op_Eq (Loc,
!                 Left_Opnd  => X_Addr,
!                 Right_Opnd => Y_Addr));
           else
              Rewrite (N,
!               Make_Op_And (Loc,
                  Left_Opnd  =>
                    Make_Op_Eq (Loc,
                      Left_Opnd  => X_Addr,
                      Right_Opnd => Y_Addr),
                  Right_Opnd =>
!                   Make_Op_Eq (Loc,
!                     Left_Opnd  => X_Size,
!                     Right_Opnd => Y_Size)));
           end if;
  
           Analyze_And_Resolve (N, Standard_Boolean);
--- 3826,3864 ----
               Attribute_Name => Name_Size,
               Prefix         => New_Copy_Tree (X));
  
           if Etype (X) = Etype (Y) then
              Rewrite (N,
!               Make_And_Then (Loc,
!                 Left_Opnd  =>
!                   Make_Op_Eq (Loc,
!                     Left_Opnd  => X_Addr,
!                     Right_Opnd => Y_Addr),
!                 Right_Opnd =>
!                   Make_Op_Ne (Loc,
!                     Left_Opnd  => X_Size,
!                     Right_Opnd => Make_Integer_Literal (Loc, 0))));
           else
+             Y_Size :=
+               Make_Attribute_Reference (Loc,
+                 Attribute_Name => Name_Size,
+                 Prefix         => New_Copy_Tree (Y));
+ 
              Rewrite (N,
!               Make_And_Then (Loc,
                  Left_Opnd  =>
                    Make_Op_Eq (Loc,
                      Left_Opnd  => X_Addr,
                      Right_Opnd => Y_Addr),
                  Right_Opnd =>
!                   Make_And_Then (Loc,
!                     Left_Opnd  =>
!                       Make_Op_Eq (Loc,
!                         Left_Opnd  => X_Size,
!                         Right_Opnd => Y_Size),
!                     Right_Opnd =>
!                       Make_Op_Ne (Loc,
!                         Left_Opnd  => New_Copy_Tree (X_Size),
!                         Right_Opnd => Make_Integer_Literal (Loc, 0)))));
           end if;
  
           Analyze_And_Resolve (N, Standard_Boolean);
*************** package body Exp_Attr is
*** 3687,3694 ****
        -- Image --
        -----------
  
-       --  Image attribute is handled in separate unit Exp_Imgv
- 
        when Attribute_Image =>
  
           --  Leave attribute unexpanded in CodePeer mode: the gnat2scil
--- 3920,3925 ----
*************** package body Exp_Attr is
*** 3698,3704 ****
              return;
           end if;
  
!          Expand_Image_Attribute (N);
  
        ---------
        -- Img --
--- 3929,3935 ----
              return;
           end if;
  
!          Exp_Imgv.Expand_Image_Attribute (N);
  
        ---------
        -- Img --
*************** package body Exp_Attr is
*** 3707,3713 ****
        --  X'Img is expanded to typ'Image (X), where typ is the type of X
  
        when Attribute_Img =>
!          Expand_Image_Attribute (N);
  
        -----------
        -- Input --
--- 3938,3971 ----
        --  X'Img is expanded to typ'Image (X), where typ is the type of X
  
        when Attribute_Img =>
!          Exp_Imgv.Expand_Image_Attribute (N);
! 
!       -----------------
!       -- Initialized --
!       -----------------
! 
!       --  For execution, we could either implement an approximation of this
!       --  aspect, or use Valid_Scalars as a first approximation. For now we do
!       --  the latter.
! 
!       when Attribute_Initialized =>
! 
!          --  Do not expand 'Initialized in CodePeer mode, it will be handled
!          --  by the back-end directly.
! 
!          if CodePeer_Mode then
!             return;
!          end if;
! 
!          Rewrite
!            (N,
!             Make_Attribute_Reference
!               (Sloc           => Loc,
!                Prefix         => Pref,
!                Attribute_Name => Name_Valid_Scalars,
!                Expressions    => Exprs));
! 
!          Analyze_And_Resolve (N);
  
        -----------
        -- Input --
*************** package body Exp_Attr is
*** 3830,3835 ****
--- 4088,4105 ----
                 Analyze_And_Resolve (N, B_Type);
                 return;
  
+             --  Limited types
+ 
+             elsif Default_Streaming_Unavailable (U_Type) then
+                --  Do the same thing here as is done above in the
+                --  case where a No_Streams restriction is active.
+ 
+                Rewrite (N,
+                  Make_Raise_Program_Error (Sloc (N),
+                    Reason => PE_Stream_Operation_Not_Allowed));
+                Set_Etype (N, B_Type);
+                return;
+ 
              --  Elementary types
  
              elsif Is_Elementary_Type (U_Type) then
*************** package body Exp_Attr is
*** 3837,3862 ****
                 --  A special case arises if we have a defined _Read routine,
                 --  since in this case we are required to call this routine.
  
!                declare
!                   Typ : Entity_Id := P_Type;
!                begin
!                   if Present (Full_View (Typ)) then
!                      Typ := Full_View (Typ);
!                   end if;
! 
!                   if Present (TSS (Base_Type (Typ), TSS_Stream_Read)) then
!                      Build_Record_Or_Elementary_Input_Function
!                        (Loc, Typ, Decl, Fname, Use_Underlying => False);
!                      Insert_Action (N, Decl);
  
!                   --  For normal cases, we call the I_xxx routine directly
  
!                   else
!                      Rewrite (N, Build_Elementary_Input_Call (N));
!                      Analyze_And_Resolve (N, P_Type);
!                      return;
!                   end if;
!                end;
  
              --  Array type case
  
--- 4107,4124 ----
                 --  A special case arises if we have a defined _Read routine,
                 --  since in this case we are required to call this routine.
  
!                if Present (Find_Inherited_TSS (P_Type, TSS_Stream_Read)) then
!                   Build_Record_Or_Elementary_Input_Function
!                     (Loc, P_Type, Decl, Fname);
!                   Insert_Action (N, Decl);
  
!                --  For normal cases, we call the I_xxx routine directly
  
!                else
!                   Rewrite (N, Build_Elementary_Input_Call (N));
!                   Analyze_And_Resolve (N, P_Type);
!                   return;
!                end if;
  
              --  Array type case
  
*************** package body Exp_Attr is
*** 4051,4138 ****
  
           Analyze_And_Resolve (N);
  
-       ----------
-       -- Last --
-       ----------
- 
-       when Attribute_Last =>
- 
-          --  If the prefix type is a constrained packed array type which
-          --  already has a Packed_Array_Impl_Type representation defined, then
-          --  replace this attribute with a direct reference to 'Last of the
-          --  appropriate index subtype (since otherwise the back end will try
-          --  to give us the value of 'Last for this implementation type).
- 
-          if Is_Constrained_Packed_Array (Ptyp) then
-             Rewrite (N,
-               Make_Attribute_Reference (Loc,
-                 Attribute_Name => Name_Last,
-                 Prefix => New_Occurrence_Of (Get_Index_Subtype (N), Loc)));
-             Analyze_And_Resolve (N, Typ);
- 
-          --  For access type, apply access check as needed
- 
-          elsif Is_Access_Type (Ptyp) then
-             Apply_Access_Check (N);
- 
-          --  For scalar type, if low bound is a reference to an entity, just
-          --  replace with a direct reference. Note that we can only have a
-          --  reference to a constant entity at this stage, anything else would
-          --  have already been rewritten.
- 
-          elsif Is_Scalar_Type (Ptyp) then
-             declare
-                Hi : constant Node_Id := Type_High_Bound (Ptyp);
-             begin
-                if Is_Entity_Name (Hi) then
-                   Rewrite (N, New_Occurrence_Of (Entity (Hi), Loc));
-                end if;
-             end;
-          end if;
- 
        --------------
        -- Last_Bit --
        --------------
  
!       --  We compute this if a component clause was present, otherwise we leave
!       --  the computation up to the back end, since we don't know what layout
!       --  will be chosen.
! 
!       when Attribute_Last_Bit => Last_Bit_Attr : declare
!          CE : constant Entity_Id := Entity (Selector_Name (Pref));
! 
!       begin
!          --  In Ada 2005 (or later) if we have the non-default bit order, then
!          --  we return the original value as given in the component clause
!          --  (RM 2005 13.5.2(3/2)).
! 
!          if Present (Component_Clause (CE))
!            and then Ada_Version >= Ada_2005
!            and then Reverse_Bit_Order (Scope (CE))
!          then
!             Rewrite (N,
!               Make_Integer_Literal (Loc,
!                 Intval => Expr_Value (Last_Bit (Component_Clause (CE)))));
!             Analyze_And_Resolve (N, Typ);
! 
!          --  Otherwise (Ada 83/95 or Ada 2005 or later with default bit order),
!          --  rewrite with normalized value if we know it statically.
! 
!          elsif Known_Static_Component_Bit_Offset (CE)
!            and then Known_Static_Esize (CE)
!          then
!             Rewrite (N,
!               Make_Integer_Literal (Loc,
!                Intval => (Component_Bit_Offset (CE) mod System_Storage_Unit)
!                                 + Esize (CE) - 1));
!             Analyze_And_Resolve (N, Typ);
! 
!          --  Otherwise leave to back end, just apply universal integer checks
  
!          else
!             Apply_Universal_Integer_Attribute_Checks (N);
!          end if;
!       end Last_Bit_Attr;
  
        ------------------
        -- Leading_Part --
--- 4313,4327 ----
  
           Analyze_And_Resolve (N);
  
        --------------
        -- Last_Bit --
        --------------
  
!       --  We leave the computation up to the back end, since we don't know what
!       --  layout will be chosen if no component clause was specified.
  
!       when Attribute_Last_Bit =>
!          Apply_Universal_Integer_Attribute_Checks (N);
  
        ------------------
        -- Leading_Part --
*************** package body Exp_Attr is
*** 4161,4167 ****
        begin
           --  Processing for packed array types
  
!          if Is_Array_Type (Ptyp) and then Is_Packed (Ptyp) then
              Ityp := Get_Index_Subtype (N);
  
              --  If the index type, Ityp, is an enumeration type with holes,
--- 4350,4356 ----
        begin
           --  Processing for packed array types
  
!          if Is_Packed_Array (Ptyp) then
              Ityp := Get_Index_Subtype (N);
  
              --  If the index type, Ityp, is an enumeration type with holes,
*************** package body Exp_Attr is
*** 4259,4265 ****
                 Xtyp : Entity_Id;
  
              begin
!                if Is_Array_Type (Dtyp) and then Is_Packed (Dtyp) then
                    Xtyp := Get_Index_Subtype (N);
  
                    Rewrite (N,
--- 4448,4454 ----
                 Xtyp : Entity_Id;
  
              begin
!                if Is_Packed_Array (Dtyp) then
                    Xtyp := Get_Index_Subtype (N);
  
                    Rewrite (N,
*************** package body Exp_Attr is
*** 4411,4416 ****
--- 4600,4606 ----
        when Attribute_Max_Size_In_Storage_Elements => declare
           Typ  : constant Entity_Id := Etype (N);
           Attr : Node_Id;
+          Atyp : Entity_Id;
  
           Conversion_Added : Boolean := False;
           --  A flag which tracks whether the original attribute has been
*************** package body Exp_Attr is
*** 4451,4466 ****
           then
              Set_Header_Size_Added (Attr);
  
              --  Generate:
              --    P'Max_Size_In_Storage_Elements +
!             --      Universal_Integer
!             --        (Header_Size_With_Padding (Ptyp'Alignment))
  
              Rewrite (Attr,
                Make_Op_Add (Loc,
                  Left_Opnd  => Relocate_Node (Attr),
                  Right_Opnd =>
!                   Convert_To (Universal_Integer,
                      Make_Function_Call (Loc,
                        Name                   =>
                          New_Occurrence_Of
--- 4641,4657 ----
           then
              Set_Header_Size_Added (Attr);
  
+             Atyp := Etype (Attr);
+ 
              --  Generate:
              --    P'Max_Size_In_Storage_Elements +
!             --      Atyp (Header_Size_With_Padding (Ptyp'Alignment))
  
              Rewrite (Attr,
                Make_Op_Add (Loc,
                  Left_Opnd  => Relocate_Node (Attr),
                  Right_Opnd =>
!                   Convert_To (Atyp,
                      Make_Function_Call (Loc,
                        Name                   =>
                          New_Occurrence_Of
*************** package body Exp_Attr is
*** 4472,4487 ****
                              New_Occurrence_Of (Ptyp, Loc),
                            Attribute_Name => Name_Alignment))))));
  
              --  Add a conversion to the target type
  
              if not Conversion_Added then
!                Rewrite (Attr,
!                  Make_Type_Conversion (Loc,
!                    Subtype_Mark => New_Occurrence_Of (Typ, Loc),
!                    Expression   => Relocate_Node (Attr)));
              end if;
  
-             Analyze (Attr);
              return;
           end if;
        end;
--- 4663,4676 ----
                              New_Occurrence_Of (Ptyp, Loc),
                            Attribute_Name => Name_Alignment))))));
  
+             Analyze_And_Resolve (Attr, Atyp);
+ 
              --  Add a conversion to the target type
  
              if not Conversion_Added then
!                Convert_To_And_Rewrite (Typ, Attr);
              end if;
  
              return;
           end if;
        end;
*************** package body Exp_Attr is
*** 4544,4550 ****
           --    b) The integer value is negative. In this case, we know that the
           --    result is modulus + value, where the value might be as small as
           --    -modulus. The trouble is what type do we use to do the subtract.
!          --    No type will do, since modulus can be as big as 2**64, and no
           --    integer type accommodates this value. Let's do bit of algebra
  
           --         modulus + value
--- 4733,4739 ----
           --    b) The integer value is negative. In this case, we know that the
           --    result is modulus + value, where the value might be as small as
           --    -modulus. The trouble is what type do we use to do the subtract.
!          --    No type will do, since modulus can be as big as 2**128, and no
           --    integer type accommodates this value. Let's do bit of algebra
  
           --         modulus + value
*************** package body Exp_Attr is
*** 4618,4627 ****
--- 4807,4819 ----
           Typ     : constant Entity_Id := Etype (N);
           CW_Temp : Entity_Id;
           CW_Typ  : Entity_Id;
+          Decl    : Node_Id;
           Ins_Nod : Node_Id;
           Subp    : Node_Id;
           Temp    : Entity_Id;
  
+          use Old_Attr_Util.Conditional_Evaluation;
+          use Old_Attr_Util.Indirect_Temps;
        begin
           --  Generating C code we don't need to expand this attribute when
           --  we are analyzing the internally built nested postconditions
*************** package body Exp_Attr is
*** 4705,4714 ****
              Ins_Nod := First (Declarations (Ins_Nod));
           end if;
  
           --  Preserve the tag of the prefix by offering a specific view of the
           --  class-wide version of the prefix.
  
!          if Is_Tagged_Type (Typ) then
  
              --  Generate:
              --    CW_Temp : constant Typ'Class := Typ'Class (Pref);
--- 4897,4956 ----
              Ins_Nod := First (Declarations (Ins_Nod));
           end if;
  
+          if Eligible_For_Conditional_Evaluation (N) then
+             declare
+                Eval_Stmts : constant List_Id := New_List;
+ 
+                procedure Append_For_Indirect_Temp
+                  (N : Node_Id; Is_Eval_Stmt : Boolean);
+                --  Append either a declaration (which is to be elaborated
+                --  unconditionally) or an evaluation statement (which is
+                --  to be executed conditionally).
+ 
+                -------------------------------
+                --  Append_For_Indirect_Temp --
+                -------------------------------
+ 
+                procedure Append_For_Indirect_Temp
+                  (N : Node_Id; Is_Eval_Stmt : Boolean)
+                is
+                begin
+                   if Is_Eval_Stmt then
+                      Append_To (Eval_Stmts, N);
+                   else
+                      Insert_Before_And_Analyze (Ins_Nod, N);
+                   end if;
+                end Append_For_Indirect_Temp;
+ 
+                procedure Declare_Indirect_Temporary is new
+                  Declare_Indirect_Temp
+                    (Append_Item => Append_For_Indirect_Temp);
+             begin
+                Declare_Indirect_Temporary
+                  (Attr_Prefix => Pref, Indirect_Temp => Temp);
+ 
+                Insert_Before_And_Analyze (
+                  Ins_Nod,
+                  Make_If_Statement
+                    (Sloc            => Loc,
+                     Condition       => Conditional_Evaluation_Condition  (N),
+                     Then_Statements => Eval_Stmts));
+ 
+                Rewrite (N, Indirect_Temp_Value
+                              (Temp => Temp,
+                               Typ  => Etype (Pref),
+                               Loc  => Loc));
+ 
+                if Present (Subp) then
+                   Pop_Scope;
+                end if;
+                return;
+             end;
+ 
           --  Preserve the tag of the prefix by offering a specific view of the
           --  class-wide version of the prefix.
  
!          elsif Is_Tagged_Type (Typ) then
  
              --  Generate:
              --    CW_Temp : constant Typ'Class := Typ'Class (Pref);
*************** package body Exp_Attr is
*** 4716,4728 ****
              CW_Temp := Make_Temporary (Loc, 'T');
              CW_Typ  := Class_Wide_Type (Typ);
  
!             Insert_Before_And_Analyze (Ins_Nod,
                Make_Object_Declaration (Loc,
                  Defining_Identifier => CW_Temp,
                  Constant_Present    => True,
                  Object_Definition   => New_Occurrence_Of (CW_Typ, Loc),
                  Expression          =>
!                   Convert_To (CW_Typ, Relocate_Node (Pref))));
  
              --  Generate:
              --    Temp : Typ renames Typ (CW_Temp);
--- 4958,4972 ----
              CW_Temp := Make_Temporary (Loc, 'T');
              CW_Typ  := Class_Wide_Type (Typ);
  
!             Decl :=
                Make_Object_Declaration (Loc,
                  Defining_Identifier => CW_Temp,
                  Constant_Present    => True,
                  Object_Definition   => New_Occurrence_Of (CW_Typ, Loc),
                  Expression          =>
!                   Convert_To (CW_Typ, Relocate_Node (Pref)));
! 
!             Insert_Before_And_Analyze (Ins_Nod, Decl);
  
              --  Generate:
              --    Temp : Typ renames Typ (CW_Temp);
*************** package body Exp_Attr is
*** 4734,4751 ****
                  Name                =>
                    Convert_To (Typ, New_Occurrence_Of (CW_Temp, Loc))));
  
           --  Non-tagged case
  
           else
              --  Generate:
              --    Temp : constant Typ := Pref;
  
!             Insert_Before_And_Analyze (Ins_Nod,
                Make_Object_Declaration (Loc,
                  Defining_Identifier => Temp,
                  Constant_Present    => True,
                  Object_Definition   => New_Occurrence_Of (Typ, Loc),
!                 Expression          => Relocate_Node (Pref)));
           end if;
  
           if Present (Subp) then
--- 4978,5000 ----
                  Name                =>
                    Convert_To (Typ, New_Occurrence_Of (CW_Temp, Loc))));
  
+             Set_Stores_Attribute_Old_Prefix (CW_Temp);
+ 
           --  Non-tagged case
  
           else
              --  Generate:
              --    Temp : constant Typ := Pref;
  
!             Decl :=
                Make_Object_Declaration (Loc,
                  Defining_Identifier => Temp,
                  Constant_Present    => True,
                  Object_Definition   => New_Occurrence_Of (Typ, Loc),
!                 Expression          => Relocate_Node (Pref));
! 
!             Insert_Before_And_Analyze (Ins_Nod, Decl);
! 
           end if;
  
           if Present (Subp) then
*************** package body Exp_Attr is
*** 4757,4763 ****
           --  to reflect the new placement of the prefix.
  
           if Validity_Checks_On and then Validity_Check_Operands then
!             Ensure_Valid (Pref);
           end if;
  
           Rewrite (N, New_Occurrence_Of (Temp, Loc));
--- 5006,5012 ----
           --  to reflect the new placement of the prefix.
  
           if Validity_Checks_On and then Validity_Check_Operands then
!             Ensure_Valid (Expression (Decl));
           end if;
  
           Rewrite (N, New_Occurrence_Of (Temp, Loc));
*************** package body Exp_Attr is
*** 4769,4795 ****
  
        when Attribute_Overlaps_Storage => Overlaps_Storage : declare
           Loc : constant Source_Ptr := Sloc (N);
  
-          X   : constant Node_Id := Prefix (N);
-          Y   : constant Node_Id := First (Expressions (N));
           --  The arguments
  
           X_Addr, Y_Addr : Node_Id;
!          --  the expressions for their integer addresses
  
           X_Size, Y_Size : Node_Id;
!          --  the expressions for their sizes
  
           Cond : Node_Id;
  
        begin
           --  Attribute expands into:
  
!          --    if X'Address < Y'address then
!          --      (X'address + X'Size - 1) >= Y'address
!          --    else
!          --      (Y'address + Y'size - 1) >= X'Address
!          --    end if;
  
           --  with the proper address operations. We convert addresses to
           --  integer addresses to use predefined arithmetic. The size is
--- 5018,5048 ----
  
        when Attribute_Overlaps_Storage => Overlaps_Storage : declare
           Loc : constant Source_Ptr := Sloc (N);
+          X   : constant Node_Id    := Prefix (N);
+          Y   : constant Node_Id    := First (Expressions (N));
  
           --  The arguments
  
           X_Addr, Y_Addr : Node_Id;
! 
!          --  The expressions for their integer addresses
  
           X_Size, Y_Size : Node_Id;
! 
!          --  The expressions for their sizes
  
           Cond : Node_Id;
  
        begin
           --  Attribute expands into:
  
!          --    (if X'Size = 0 or else Y'Size = 0 then
!          --       False
!          --     else
!          --       (if X'Address <= Y'Address then
!          --         (X'Address + X'Size - 1) >= Y'Address
!          --        else
!          --         (Y'Address + Y'Size - 1) >= X'Address))
  
           --  with the proper address operations. We convert addresses to
           --  integer addresses to use predefined arithmetic. The size is
*************** package body Exp_Attr is
*** 4832,4860 ****
                Left_Opnd  => X_Addr,
                Right_Opnd => Y_Addr);
  
           Rewrite (N,
             Make_If_Expression (Loc, New_List (
-              Cond,
  
!              Make_Op_Ge (Loc,
!                Left_Opnd   =>
!                  Make_Op_Add (Loc,
!                    Left_Opnd  => New_Copy_Tree (X_Addr),
!                    Right_Opnd =>
!                      Make_Op_Subtract (Loc,
!                        Left_Opnd  => X_Size,
!                        Right_Opnd => Make_Integer_Literal (Loc, 1))),
!                Right_Opnd => Y_Addr),
  
!              Make_Op_Ge (Loc,
                 Left_Opnd  =>
!                  Make_Op_Add (Loc,
!                    Left_Opnd  => New_Copy_Tree (Y_Addr),
!                    Right_Opnd =>
!                      Make_Op_Subtract (Loc,
!                        Left_Opnd  => Y_Size,
!                        Right_Opnd => Make_Integer_Literal (Loc, 1))),
!                Right_Opnd => X_Addr))));
  
           Analyze_And_Resolve (N, Standard_Boolean);
        end Overlaps_Storage;
--- 5085,5146 ----
                Left_Opnd  => X_Addr,
                Right_Opnd => Y_Addr);
  
+          --  Perform the rewriting
+ 
           Rewrite (N,
             Make_If_Expression (Loc, New_List (
  
!              --  Generate a check for zero-sized things like a null record with
!              --  size zero or an array with zero length since they have no
!              --  opportunity of overlapping.
  
!              --  Without this check, a zero-sized object can trigger a false
!              --  runtime result if it's compared against another object in
!              --  its declarative region, due to the zero-sized object having
!              --  the same address.
! 
!              Make_Or_Else (Loc,
                 Left_Opnd  =>
!                  Make_Op_Eq (Loc,
!                    Left_Opnd  =>
!                      Make_Attribute_Reference (Loc,
!                        Attribute_Name => Name_Size,
!                        Prefix         => New_Copy_Tree (X)),
!                    Right_Opnd => Make_Integer_Literal (Loc, 0)),
!                Right_Opnd =>
!                  Make_Op_Eq (Loc,
!                    Left_Opnd  =>
!                      Make_Attribute_Reference (Loc,
!                        Attribute_Name => Name_Size,
!                        Prefix         => New_Copy_Tree (Y)),
!                    Right_Opnd => Make_Integer_Literal (Loc, 0))),
! 
!              New_Occurrence_Of (Standard_False, Loc),
! 
!              --  Non-zero-size overlap check
! 
!              Make_If_Expression (Loc, New_List (
!                Cond,
! 
!                Make_Op_Ge (Loc,
!                  Left_Opnd   =>
!                    Make_Op_Add (Loc,
!                     Left_Opnd  => New_Copy_Tree (X_Addr),
!                      Right_Opnd =>
!                        Make_Op_Subtract (Loc,
!                          Left_Opnd  => X_Size,
!                          Right_Opnd => Make_Integer_Literal (Loc, 1))),
!                  Right_Opnd => Y_Addr),
! 
!                Make_Op_Ge (Loc,
!                  Left_Opnd   =>
!                    Make_Op_Add (Loc,
!                      Left_Opnd  => New_Copy_Tree (Y_Addr),
!                      Right_Opnd =>
!                        Make_Op_Subtract (Loc,
!                          Left_Opnd  => Y_Size,
!                          Right_Opnd => Make_Integer_Literal (Loc, 1))),
!                  Right_Opnd => X_Addr))))));
  
           Analyze_And_Resolve (N, Standard_Boolean);
        end Overlaps_Storage;
*************** package body Exp_Attr is
*** 4936,4941 ****
--- 5222,5239 ----
                 Analyze (N);
                 return;
  
+             --  Limited types
+ 
+             elsif Default_Streaming_Unavailable (U_Type) then
+                --  Do the same thing here as is done above in the
+                --  case where a No_Streams restriction is active.
+ 
+                Rewrite (N,
+                  Make_Raise_Program_Error (Sloc (N),
+                    Reason => PE_Stream_Operation_Not_Allowed));
+                Set_Etype (N, Standard_Void_Type);
+                return;
+ 
              --  For elementary types, we call the W_xxx routine directly. Note
              --  that the effect of Write and Output is identical for the case
              --  of an elementary type (there are no discriminants or bounds).
*************** package body Exp_Attr is
*** 4945,4970 ****
                 --  A special case arises if we have a defined _Write routine,
                 --  since in this case we are required to call this routine.
  
!                declare
!                   Typ : Entity_Id := P_Type;
!                begin
!                   if Present (Full_View (Typ)) then
!                      Typ := Full_View (Typ);
!                   end if;
! 
!                   if Present (TSS (Base_Type (Typ), TSS_Stream_Write)) then
!                      Build_Record_Or_Elementary_Output_Procedure
!                        (Loc, Typ, Decl, Pname);
!                      Insert_Action (N, Decl);
  
!                   --  For normal cases, we call the W_xxx routine directly
  
!                   else
!                      Rewrite (N, Build_Elementary_Write_Call (N));
!                      Analyze (N);
!                      return;
!                   end if;
!                end;
  
              --  Array type case
  
--- 5243,5260 ----
                 --  A special case arises if we have a defined _Write routine,
                 --  since in this case we are required to call this routine.
  
!                if Present (Find_Inherited_TSS (P_Type, TSS_Stream_Write)) then
!                   Build_Record_Or_Elementary_Output_Procedure
!                     (Loc, P_Type, Decl, Pname);
!                   Insert_Action (N, Decl);
  
!                --  For normal cases, we call the W_xxx routine directly
  
!                else
!                   Rewrite (N, Build_Elementary_Write_Call (N));
!                   Analyze (N);
!                   return;
!                end if;
  
              --  Array type case
  
*************** package body Exp_Attr is
*** 5086,5104 ****
  
           --  If we fall through, Pname is the name of the procedure to call
  
!          Rewrite_Stream_Proc_Call (Pname);
        end Output;
  
        ---------
        -- Pos --
        ---------
  
-       --  For enumeration types with a standard representation, Pos is
-       --  handled by the back end.
- 
        --  For enumeration types, with a non-standard representation we generate
        --  a call to the _Rep_To_Pos function created when the type was frozen.
!       --  The call has the form
  
        --    _rep_to_pos (expr, flag)
  
--- 5376,5391 ----
  
           --  If we fall through, Pname is the name of the procedure to call
  
!          Rewrite_Attribute_Proc_Call (Pname);
        end Output;
  
        ---------
        -- Pos --
        ---------
  
        --  For enumeration types, with a non-standard representation we generate
        --  a call to the _Rep_To_Pos function created when the type was frozen.
!       --  The call has the form:
  
        --    _rep_to_pos (expr, flag)
  
*************** package body Exp_Attr is
*** 5106,5122 ****
        --  Program_Error to be raised if the expression has an invalid
        --  representation, and False if range checks are suppressed.
  
!       --  For integer types, Pos is equivalent to a simple integer
!       --  conversion and we rewrite it as such
  
        when Attribute_Pos => Pos : declare
!          Etyp : Entity_Id := Base_Type (Entity (Pref));
  
        begin
           --  Deal with zero/non-zero boolean values
  
           if Is_Boolean_Type (Etyp) then
!             Adjust_Condition (First (Exprs));
              Etyp := Standard_Boolean;
              Set_Prefix (N, New_Occurrence_Of (Standard_Boolean, Loc));
           end if;
--- 5393,5413 ----
        --  Program_Error to be raised if the expression has an invalid
        --  representation, and False if range checks are suppressed.
  
!       --  For enumeration types with a standard representation, Pos can be
!       --  rewritten as a simple conversion with Conversion_OK set.
! 
!       --  For integer types, Pos is equivalent to a simple integer conversion
!       --  and we rewrite it as such.
  
        when Attribute_Pos => Pos : declare
!          Expr : constant Node_Id := First (Exprs);
!          Etyp : Entity_Id := Base_Type (Ptyp);
  
        begin
           --  Deal with zero/non-zero boolean values
  
           if Is_Boolean_Type (Etyp) then
!             Adjust_Condition (Expr);
              Etyp := Standard_Boolean;
              Set_Prefix (N, New_Occurrence_Of (Standard_Boolean, Loc));
           end if;
*************** package body Exp_Attr is
*** 5136,5200 ****
                         New_Occurrence_Of (TSS (Etyp, TSS_Rep_To_Pos), Loc),
                       Parameter_Associations => Exprs)));
  
!                Analyze_And_Resolve (N, Typ);
  
!             --  Standard enumeration type (do universal integer check)
  
              else
!                Apply_Universal_Integer_Attribute_Checks (N);
              end if;
  
           --  Deal with integer types (replace by conversion)
  
           elsif Is_Integer_Type (Etyp) then
!             Rewrite (N, Convert_To (Typ, First (Exprs)));
!             Analyze_And_Resolve (N, Typ);
           end if;
  
        end Pos;
  
        --------------
        -- Position --
        --------------
  
!       --  We compute this if a component clause was present, otherwise we leave
!       --  the computation up to the back end, since we don't know what layout
!       --  will be chosen.
! 
!       when Attribute_Position => Position_Attr : declare
!          CE : constant Entity_Id := Entity (Selector_Name (Pref));
! 
!       begin
!          if Present (Component_Clause (CE)) then
! 
!             --  In Ada 2005 (or later) if we have the non-default bit order,
!             --  then we return the original value as given in the component
!             --  clause (RM 2005 13.5.2(2/2)).
! 
!             if Ada_Version >= Ada_2005
!               and then Reverse_Bit_Order (Scope (CE))
!             then
!                Rewrite (N,
!                   Make_Integer_Literal (Loc,
!                     Intval => Expr_Value (Position (Component_Clause (CE)))));
! 
!             --  Otherwise (Ada 83 or 95, or default bit order specified in
!             --  later Ada version), return the normalized value.
! 
!             else
!                Rewrite (N,
!                  Make_Integer_Literal (Loc,
!                    Intval => Component_Bit_Offset (CE) / System_Storage_Unit));
!             end if;
! 
!             Analyze_And_Resolve (N, Typ);
! 
!          --  If back end is doing things, just apply universal integer checks
  
!          else
!             Apply_Universal_Integer_Attribute_Checks (N);
!          end if;
!       end Position_Attr;
  
        ----------
        -- Pred --
--- 5427,5469 ----
                         New_Occurrence_Of (TSS (Etyp, TSS_Rep_To_Pos), Loc),
                       Parameter_Associations => Exprs)));
  
!             --  Standard enumeration type (replace by conversion)
  
!             --  This is simply a direct conversion from the enumeration type to
!             --  the target integer type, which is treated by the back end as a
!             --  normal integer conversion, treating the enumeration type as an
!             --  integer, which is exactly what we want. We set Conversion_OK to
!             --  make sure that the analyzer does not complain about what might
!             --  be an illegal conversion.
! 
!             --  However the target type is universal integer in most cases,
!             --  which is a very large type, so we first convert to a small
!             --  signed integer type in order not to lose the size information.
  
              else
!                Rewrite (N, OK_Convert_To (Get_Integer_Type (Ptyp), Expr));
!                Convert_To_And_Rewrite (Typ, N);
! 
              end if;
  
           --  Deal with integer types (replace by conversion)
  
           elsif Is_Integer_Type (Etyp) then
!             Rewrite (N, Convert_To (Typ, Expr));
           end if;
  
+          Analyze_And_Resolve (N, Typ);
        end Pos;
  
        --------------
        -- Position --
        --------------
  
!       --  We leave the computation up to the back end, since we don't know what
!       --  layout will be chosen if no component clause was specified.
  
!       when Attribute_Position =>
!          Apply_Universal_Integer_Attribute_Checks (N);
  
        ----------
        -- Pred --
*************** package body Exp_Attr is
*** 5208,5251 ****
           Etyp : constant Entity_Id := Base_Type (Ptyp);
  
        begin
- 
           --  For enumeration types with non-standard representations, we
!          --  expand typ'Pred (x) into
  
           --    Pos_To_Rep (Rep_To_Pos (x) - 1)
  
!          --    If the representation is contiguous, we compute instead
!          --    Lit1 + Rep_to_Pos (x -1), to catch invalid representations.
!          --    The conversion function Enum_Pos_To_Rep is defined on the
!          --    base type, not the subtype, so we have to use the base type
!          --    explicitly for this and other enumeration attributes.
  
!          if Is_Enumeration_Type (Ptyp)
             and then Present (Enum_Pos_To_Rep (Etyp))
           then
              if Has_Contiguous_Rep (Etyp) then
!                Rewrite (N,
!                   Unchecked_Convert_To (Ptyp,
!                      Make_Op_Add (Loc,
!                         Left_Opnd  =>
!                          Make_Integer_Literal (Loc,
!                            Enumeration_Rep (First_Literal (Ptyp))),
!                         Right_Opnd =>
!                           Make_Function_Call (Loc,
!                             Name =>
!                               New_Occurrence_Of
!                                (TSS (Etyp, TSS_Rep_To_Pos), Loc),
  
!                             Parameter_Associations =>
!                               New_List (
!                                 Unchecked_Convert_To (Ptyp,
!                                   Make_Op_Subtract (Loc,
!                                     Left_Opnd =>
!                                      Unchecked_Convert_To (Standard_Integer,
!                                        Relocate_Node (First (Exprs))),
!                                     Right_Opnd =>
!                                       Make_Integer_Literal (Loc, 1))),
!                                 Rep_To_Pos_Flag (Ptyp, Loc))))));
  
              else
                 --  Add Boolean parameter True, to request program error if
--- 5477,5509 ----
           Etyp : constant Entity_Id := Base_Type (Ptyp);
  
        begin
           --  For enumeration types with non-standard representations, we
!          --  expand typ'Pred (x) into:
  
           --    Pos_To_Rep (Rep_To_Pos (x) - 1)
  
!          --  if the representation is non-contiguous, and just x - 1 if it is
!          --  after having dealt with constraint checking.
  
!          if Is_Enumeration_Type (Etyp)
             and then Present (Enum_Pos_To_Rep (Etyp))
           then
              if Has_Contiguous_Rep (Etyp) then
!                if not Range_Checks_Suppressed (Ptyp) then
!                   Set_Do_Range_Check (First (Exprs), False);
!                   Expand_Pred_Succ_Attribute (N);
!                end if;
  
!                Rewrite (N,
!                  Unchecked_Convert_To (Etyp,
!                     Make_Op_Subtract (Loc,
!                        Left_Opnd  =>
!                          Unchecked_Convert_To (
!                            Integer_Type_For
!                              (Esize (Etyp), Is_Unsigned_Type (Etyp)),
!                            First (Exprs)),
!                        Right_Opnd =>
!                          Make_Integer_Literal (Loc, 1))));
  
              else
                 --  Add Boolean parameter True, to request program error if
*************** package body Exp_Attr is
*** 5269,5275 ****
                      Right_Opnd => Make_Integer_Literal (Loc, 1)))));
              end if;
  
!             Analyze_And_Resolve (N, Typ);
  
           --  For floating-point, we transform 'Pred into a call to the Pred
           --  floating-point attribute function in Fat_xxx (xxx is root type).
--- 5527,5535 ----
                      Right_Opnd => Make_Integer_Literal (Loc, 1)))));
              end if;
  
!             --  Suppress checks since they have all been done above
! 
!             Analyze_And_Resolve (N, Typ, Suppress => All_Checks);
  
           --  For floating-point, we transform 'Pred into a call to the Pred
           --  floating-point attribute function in Fat_xxx (xxx is root type).
*************** package body Exp_Attr is
*** 5407,5412 ****
--- 5667,5770 ----
           Analyze_And_Resolve (N, Typ, Suppress => Access_Check);
        end Priority;
  
+       ---------------
+       -- Put_Image --
+       ---------------
+ 
+       when Attribute_Put_Image => Put_Image : declare
+          use Exp_Put_Image;
+          U_Type : constant Entity_Id := Underlying_Type (Entity (Pref));
+          Pname  : Entity_Id;
+          Decl   : Node_Id;
+ 
+       begin
+          --  If no underlying type, we have an error that will be diagnosed
+          --  elsewhere, so here we just completely ignore the expansion.
+ 
+          if No (U_Type) then
+             return;
+          end if;
+ 
+          --  If there is a TSS for Put_Image, just call it. This is true for
+          --  tagged types (if enabled) and if there is a user-specified
+          --  Put_Image.
+ 
+          Pname := TSS (U_Type, TSS_Put_Image);
+          if No (Pname) then
+             if Is_Tagged_Type (U_Type) and then Is_Derived_Type (U_Type) then
+                Pname := Find_Optional_Prim_Op (U_Type, TSS_Put_Image);
+             else
+                Pname := Find_Inherited_TSS (U_Type, TSS_Put_Image);
+             end if;
+          end if;
+ 
+          if No (Pname) then
+             --  If Put_Image is disabled, call the "unknown" version
+ 
+             if not Enable_Put_Image (U_Type) then
+                Rewrite (N, Build_Unknown_Put_Image_Call (N));
+                Analyze (N);
+                return;
+ 
+             --  For elementary types, we call the routine in System.Put_Images
+             --  directly.
+ 
+             elsif Is_Elementary_Type (U_Type) then
+                Rewrite (N, Build_Elementary_Put_Image_Call (N));
+                Analyze (N);
+                return;
+ 
+             elsif Is_Standard_String_Type (U_Type) then
+                Rewrite (N, Build_String_Put_Image_Call (N));
+                Analyze (N);
+                return;
+ 
+             elsif Is_Array_Type (U_Type) then
+                Build_Array_Put_Image_Procedure (N, U_Type, Decl, Pname);
+                Insert_Action (N, Decl);
+ 
+             --  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);
+ 
+                --  ????Need Find_Optional_Prim_Op instead of Find_Prim_Op,
+                --  because we might be deriving from a predefined type, which
+                --  currently has Enable_Put_Image False.
+ 
+                if No (Pname) then
+                   Rewrite (N, Build_Unknown_Put_Image_Call (N));
+                   Analyze (N);
+                   return;
+                end if;
+ 
+             elsif Is_Protected_Type (U_Type) then
+                Rewrite (N, Build_Protected_Put_Image_Call (N));
+                Analyze (N);
+                return;
+ 
+             elsif Is_Task_Type (U_Type) then
+                Rewrite (N, Build_Task_Put_Image_Call (N));
+                Analyze (N);
+                return;
+ 
+             --  All other record type cases
+ 
+             else
+                pragma Assert (Is_Record_Type (U_Type));
+                Build_Record_Put_Image_Procedure
+                  (Loc, Full_Base (U_Type), Decl, Pname);
+                Insert_Action (N, Decl);
+             end if;
+          end if;
+ 
+          --  If we fall through, Pname is the procedure to be called
+ 
+          Rewrite_Attribute_Proc_Call (Pname);
+       end Put_Image;
+ 
        ------------------
        -- Range_Length --
        ------------------
*************** package body Exp_Attr is
*** 5471,5519 ****
  
        when Attribute_Reduce =>
           declare
!             Loc     : constant Source_Ptr := Sloc (N);
!             E1      : constant Node_Id := First (Expressions (N));
!             E2      : constant Node_Id := Next (E1);
!             Bnn     : constant Entity_Id := Make_Temporary (Loc, 'B', N);
!             Typ     : constant Entity_Id := Etype (N);
              New_Loop : Node_Id;
  
!          --  If the prefix is an aggregwte, its unique component is sn
!          --  Iterated_Element, and we create a loop out of its itertor.
  
           begin
              if Nkind (Prefix (N)) = N_Aggregate then
                 declare
                    Stream  : constant Node_Id :=
!                      First (Component_Associations (Prefix (N)));
!                   Id      : constant Node_Id := Defining_Identifier (Stream);
                    Expr    : constant Node_Id := Expression (Stream);
!                   Ch      : constant Node_Id :=
!                                First (Discrete_Choices (Stream));
                 begin
!                   New_Loop := Make_Loop_Statement (Loc,
!                     Iteration_Scheme =>
                        Make_Iteration_Scheme (Loc,
                          Iterator_Specification => Empty,
                          Loop_Parameter_Specification =>
                            Make_Loop_Parameter_Specification  (Loc,
                              Defining_Identifier => New_Copy (Id),
                              Discrete_Subtype_Definition =>
!                               Relocate_Node (Ch))),
                        End_Label => Empty,
!                       Statements => New_List (
!                         Make_Assignment_Statement (Loc,
!                           Name => New_Occurrence_Of (Bnn, Loc),
!                           Expression => Make_Function_Call (Loc,
!                             Name => New_Occurrence_Of (Entity (E1), Loc),
!                             Parameter_Associations => New_List (
!                               New_Occurrence_Of (Bnn, Loc),
!                               Relocate_Node (Expr))))));
                 end;
              else
!                --  If the prefix is a name we construct an element iterwtor
!                --  over it. Its expansion will verify that it is an array
!                --  or a container with the proper aspects.
  
                 declare
                    Iter : Node_Id;
--- 5829,5937 ----
  
        when Attribute_Reduce =>
           declare
!             Loc : constant Source_Ptr := Sloc (N);
!             E1  : constant Node_Id := First (Expressions (N));
!             E2  : constant Node_Id := Next (E1);
!             Bnn : constant Entity_Id := Make_Temporary (Loc, 'B', N);
!             Typ : constant Entity_Id := Etype (N);
! 
              New_Loop : Node_Id;
+             Stat     : Node_Id;
  
!             function Build_Stat (Comp : Node_Id) return Node_Id;
!             --  The reducer can be a function, a procedure whose first
!             --  parameter is in-out, or an attribute that is a function,
!             --  which (for now) can only be Min/Max. This subprogram
!             --  builds the corresponding computation for the generated loop.
! 
!             ----------------
!             -- Build_Stat --
!             ----------------
! 
!             function Build_Stat (Comp : Node_Id) return Node_Id is
!             begin
!                if Nkind (E1) = N_Attribute_Reference then
!                   Stat := Make_Assignment_Statement (Loc,
!                             Name => New_Occurrence_Of (Bnn, Loc),
!                             Expression => Make_Attribute_Reference (Loc,
!                               Attribute_Name => Attribute_Name (E1),
!                               Prefix => New_Copy (Prefix (E1)),
!                               Expressions => New_List (
!                                 New_Occurrence_Of (Bnn, Loc),
!                                 Comp)));
! 
!                elsif Ekind (Entity (E1)) = E_Procedure then
!                   Stat := Make_Procedure_Call_Statement (Loc,
!                             Name => New_Occurrence_Of (Entity (E1), Loc),
!                                Parameter_Associations => New_List (
!                                  New_Occurrence_Of (Bnn, Loc),
!                                  Comp));
!                else
!                   Stat := Make_Assignment_Statement (Loc,
!                             Name => New_Occurrence_Of (Bnn, Loc),
!                             Expression => Make_Function_Call (Loc,
!                               Name => New_Occurrence_Of (Entity (E1), Loc),
!                               Parameter_Associations => New_List (
!                                 New_Occurrence_Of (Bnn, Loc),
!                                 Comp)));
!                end if;
! 
!                return Stat;
!             end Build_Stat;
! 
!          --  If the prefix is an aggregate, its unique component is an
!          --  Iterated_Element, and we create a loop out of its iterator.
!          --  The iterated_component_association is parsed as a loop parameter
!          --  specification with "in" or as a container iterator with "of".
  
           begin
              if Nkind (Prefix (N)) = N_Aggregate then
                 declare
                    Stream  : constant Node_Id :=
!                               First (Component_Associations (Prefix (N)));
                    Expr    : constant Node_Id := Expression (Stream);
!                   Id      : constant Node_Id := Defining_Identifier (Stream);
!                   It_Spec : constant Node_Id :=
!                                              Iterator_Specification (Stream);
!                   Ch      : Node_Id;
!                   Iter    : Node_Id;
! 
                 begin
!                   --  Iteration may be given by an element iterator:
! 
!                   if Nkind (Stream) = N_Iterated_Component_Association
!                       and then Present (It_Spec)
!                       and then Of_Present (It_Spec)
!                   then
!                      Iter :=
!                        Make_Iteration_Scheme (Loc,
!                          Iterator_Specification =>
!                            Relocate_Node (It_Spec),
!                          Loop_Parameter_Specification => Empty);
! 
!                   else
!                      Ch   := First (Discrete_Choices (Stream));
!                      Iter :=
                        Make_Iteration_Scheme (Loc,
                          Iterator_Specification => Empty,
                          Loop_Parameter_Specification =>
                            Make_Loop_Parameter_Specification  (Loc,
                              Defining_Identifier => New_Copy (Id),
                              Discrete_Subtype_Definition =>
!                               Relocate_Node (Ch)));
!                   end if;
! 
!                   New_Loop := Make_Loop_Statement (Loc,
!                     Iteration_Scheme => Iter,
                        End_Label => Empty,
!                       Statements =>
!                         New_List (Build_Stat (Relocate_Node (Expr))));
                 end;
+ 
              else
!                --  If the prefix is a name, we construct an element iterator
!                --  over it. Its expansion will verify that it is an array or
!                --  a container with the proper aspects.
  
                 declare
                    Iter : Node_Id;
*************** package body Exp_Attr is
*** 5534,5546 ****
                          Loop_Parameter_Specification => Empty),
                        End_Label => Empty,
                        Statements => New_List (
!                         Make_Assignment_Statement (Loc,
!                           Name => New_Occurrence_Of (Bnn, Loc),
!                           Expression => Make_Function_Call (Loc,
!                             Name => New_Occurrence_Of (Entity (E1), Loc),
!                             Parameter_Associations => New_List (
!                               New_Occurrence_Of (Bnn, Loc),
!                               New_Occurrence_Of (Elem, Loc))))));
                 end;
              end if;
  
--- 5952,5958 ----
                          Loop_Parameter_Specification => Empty),
                        End_Label => Empty,
                        Statements => New_List (
!                         Build_Stat (New_Occurrence_Of (Elem, Loc))));
                 end;
              end if;
  
*************** package body Exp_Attr is
*** 5654,5659 ****
--- 6066,6083 ----
                 Analyze (N);
                 return;
  
+             --  Limited types
+ 
+             elsif Default_Streaming_Unavailable (U_Type) then
+                --  Do the same thing here as is done above in the
+                --  case where a No_Streams restriction is active.
+ 
+                Rewrite (N,
+                  Make_Raise_Program_Error (Sloc (N),
+                    Reason => PE_Stream_Operation_Not_Allowed));
+                Set_Etype (N, B_Type);
+                return;
+ 
              --  For elementary types, we call the I_xxx routine using the first
              --  parameter and then assign the result into the second parameter.
              --  We set Assignment_OK to deal with the conversion case.
*************** package body Exp_Attr is
*** 5737,5743 ****
              end if;
           end if;
  
!          Rewrite_Stream_Proc_Call (Pname);
        end Read;
  
        ---------
--- 6161,6167 ----
              end if;
           end if;
  
!          Rewrite_Attribute_Proc_Call (Pname);
        end Read;
  
        ---------
*************** package body Exp_Attr is
*** 5772,5791 ****
        -- Round --
        -----------
  
!       --  The handling of the Round attribute is quite delicate. The processing
!       --  in Sem_Attr introduced a conversion to universal real, reflecting the
!       --  semantics of Round, but we do not want anything to do with universal
!       --  real at runtime, since this corresponds to using floating-point
!       --  arithmetic.
  
        --  What we have now is that the Etype of the Round attribute correctly
        --  indicates the final result type. The operand of the Round is the
        --  conversion to universal real, described above, and the operand of
        --  this conversion is the actual operand of Round, which may be the
!       --  special case of a fixed point multiplication or division (Etype =
!       --  universal fixed)
  
!       --  The exapander will expand first the operand of the conversion, then
        --  the conversion, and finally the round attribute itself, since we
        --  always work inside out. But we cannot simply process naively in this
        --  order. In the semantic world where universal fixed and real really
--- 6196,6214 ----
        -- Round --
        -----------
  
!       --  The handling of the Round attribute is delicate when the operand is
!       --  universal fixed. In this case, the processing in Sem_Attr introduced
!       --  a conversion to universal real, reflecting the semantics of Round,
!       --  but we do not want anything to do with universal real at run time,
!       --  since this corresponds to using floating-point arithmetic.
  
        --  What we have now is that the Etype of the Round attribute correctly
        --  indicates the final result type. The operand of the Round is the
        --  conversion to universal real, described above, and the operand of
        --  this conversion is the actual operand of Round, which may be the
!       --  special case of a fixed point multiplication or division.
  
!       --  The expander will expand first the operand of the conversion, then
        --  the conversion, and finally the round attribute itself, since we
        --  always work inside out. But we cannot simply process naively in this
        --  order. In the semantic world where universal fixed and real really
*************** package body Exp_Attr is
*** 5793,5806 ****
        --  implementation world, where universal real is a floating-point type,
        --  we would get the wrong result.
  
!       --  So the approach is as follows. First, when expanding a multiply or
!       --  divide whose type is universal fixed, we do nothing at all, instead
!       --  deferring the operation till later.
! 
!       --  The actual processing is done in Expand_N_Type_Conversion which
!       --  handles the special case of Round by looking at its parent to see if
!       --  it is a Round attribute, and if it is, handling the conversion (or
!       --  its fixed multiply/divide child) in an appropriate manner.
  
        --  This means that by the time we get to expanding the Round attribute
        --  itself, the Round is nothing more than a type conversion (and will
--- 6216,6228 ----
        --  implementation world, where universal real is a floating-point type,
        --  we would get the wrong result.
  
!       --  So the approach is as follows. When expanding a multiply or divide
!       --  whose type is universal fixed, Fixup_Universal_Fixed_Operation will
!       --  look up and skip the conversion to universal real if its parent is
!       --  a Round attribute, taking information from this attribute node. In
!       --  the other cases, Expand_N_Type_Conversion does the same by looking
!       --  at its parent to see if it is a Round attribute, before calling the
!       --  fixed-point expansion routine.
  
        --  This means that by the time we get to expanding the Round attribute
        --  itself, the Round is nothing more than a type conversion (and will
*************** package body Exp_Attr is
*** 5808,5815 ****
        --  appropriate conversion operation.
  
        when Attribute_Round =>
!          Rewrite (N,
!            Convert_To (Etype (N), Relocate_Node (First (Exprs))));
           Analyze_And_Resolve (N);
  
        --------------
--- 6230,6241 ----
        --  appropriate conversion operation.
  
        when Attribute_Round =>
!          if Etype (First (Exprs)) = Etype (N) then
!             Rewrite (N, Relocate_Node (First (Exprs)));
!          else
!             Rewrite (N, Convert_To (Etype (N), First (Exprs)));
!             Set_Rounded_Result (N);
!          end if;
           Analyze_And_Resolve (N);
  
        --------------
*************** package body Exp_Attr is
*** 5835,5845 ****
        when Attribute_Scaling =>
           Expand_Fpt_Attribute_RI (N);
  
!       -------------------------
!       -- Simple_Storage_Pool --
!       -------------------------
  
!       when Attribute_Simple_Storage_Pool =>
           Rewrite (N,
             Make_Type_Conversion (Loc,
               Subtype_Mark => New_Occurrence_Of (Etype (N), Loc),
--- 6261,6271 ----
        when Attribute_Scaling =>
           Expand_Fpt_Attribute_RI (N);
  
!       ----------------------------------------
!       -- Simple_Storage_Pool & Storage_Pool --
!       ----------------------------------------
  
!       when Attribute_Simple_Storage_Pool | Attribute_Storage_Pool =>
           Rewrite (N,
             Make_Type_Conversion (Loc,
               Subtype_Mark => New_Occurrence_Of (Etype (N), Loc),
*************** package body Exp_Attr is
*** 5916,5922 ****
                    then
                       Set_Attribute_Name (N, Name_Object_Size);
  
!                   --  In all other cases, Size and VADS_Size are the sane
  
                    else
                       Set_Attribute_Name (N, Name_Size);
--- 6342,6348 ----
                    then
                       Set_Attribute_Name (N, Name_Object_Size);
  
!                   --  In all other cases, Size and VADS_Size are the same
  
                    else
                       Set_Attribute_Name (N, Name_Size);
*************** package body Exp_Attr is
*** 5976,5997 ****
           end Size;
  
        ------------------
-       -- Storage_Pool --
-       ------------------
- 
-       when Attribute_Storage_Pool =>
-          Rewrite (N,
-            Make_Type_Conversion (Loc,
-              Subtype_Mark => New_Occurrence_Of (Etype (N), Loc),
-              Expression   => New_Occurrence_Of (Entity (N), Loc)));
-          Analyze_And_Resolve (N, Typ);
- 
-       ------------------
        -- Storage_Size --
        ------------------
  
        when Attribute_Storage_Size => Storage_Size : declare
!          Alloc_Op  : Entity_Id := Empty;
  
        begin
  
--- 6402,6412 ----
           end Size;
  
        ------------------
        -- Storage_Size --
        ------------------
  
        when Attribute_Storage_Size => Storage_Size : declare
!          Alloc_Op : Entity_Id := Empty;
  
        begin
  
*************** package body Exp_Attr is
*** 6005,6016 ****
           if Is_Access_Type (Ptyp) then
              if Present (Storage_Size_Variable (Root_Type (Ptyp))) then
                 Rewrite (N,
!                  Make_Attribute_Reference (Loc,
!                    Prefix => New_Occurrence_Of (Typ, Loc),
!                    Attribute_Name => Name_Max,
!                    Expressions => New_List (
!                      Make_Integer_Literal (Loc, 0),
!                      Convert_To (Typ,
                         New_Occurrence_Of
                           (Storage_Size_Variable (Root_Type (Ptyp)), Loc)))));
  
--- 6420,6432 ----
           if Is_Access_Type (Ptyp) then
              if Present (Storage_Size_Variable (Root_Type (Ptyp))) then
                 Rewrite (N,
!                  Convert_To (Typ,
!                    Make_Attribute_Reference (Loc,
!                      Prefix => New_Occurrence_Of
!                        (Etype (Storage_Size_Variable (Root_Type (Ptyp))), Loc),
!                      Attribute_Name => Name_Max,
!                      Expressions => New_List (
!                        Make_Integer_Literal (Loc, 0),
                         New_Occurrence_Of
                           (Storage_Size_Variable (Root_Type (Ptyp)), Loc)))));
  
*************** package body Exp_Attr is
*** 6063,6069 ****
  
                 else
                    Rewrite (N,
!                     OK_Convert_To (Typ,
                        Make_Function_Call (Loc,
                          Name =>
                            New_Occurrence_Of (Alloc_Op, Loc),
--- 6479,6485 ----
  
                 else
                    Rewrite (N,
!                     Convert_To (Typ,
                        Make_Function_Call (Loc,
                          Name =>
                            New_Occurrence_Of (Alloc_Op, Loc),
*************** package body Exp_Attr is
*** 6184,6222 ****
  
        begin
           --  For enumeration types with non-standard representations, we
!          --  expand typ'Succ (x) into
  
           --    Pos_To_Rep (Rep_To_Pos (x) + 1)
  
!          --    If the representation is contiguous, we compute instead
!          --    Lit1 + Rep_to_Pos (x+1), to catch invalid representations.
  
!          if Is_Enumeration_Type (Ptyp)
             and then Present (Enum_Pos_To_Rep (Etyp))
           then
              if Has_Contiguous_Rep (Etyp) then
                 Rewrite (N,
!                   Unchecked_Convert_To (Ptyp,
!                      Make_Op_Add (Loc,
!                         Left_Opnd  =>
!                          Make_Integer_Literal (Loc,
!                            Enumeration_Rep (First_Literal (Ptyp))),
!                         Right_Opnd =>
!                           Make_Function_Call (Loc,
!                             Name =>
!                               New_Occurrence_Of
!                                (TSS (Etyp, TSS_Rep_To_Pos), Loc),
  
-                             Parameter_Associations =>
-                               New_List (
-                                 Unchecked_Convert_To (Ptyp,
-                                   Make_Op_Add (Loc,
-                                   Left_Opnd =>
-                                     Unchecked_Convert_To (Standard_Integer,
-                                       Relocate_Node (First (Exprs))),
-                                   Right_Opnd =>
-                                     Make_Integer_Literal (Loc, 1))),
-                                 Rep_To_Pos_Flag (Ptyp, Loc))))));
              else
                 --  Add Boolean parameter True, to request program error if
                 --  we have a bad representation on our hands. Add False if
--- 6600,6632 ----
  
        begin
           --  For enumeration types with non-standard representations, we
!          --  expand typ'Pred (x) into:
  
           --    Pos_To_Rep (Rep_To_Pos (x) + 1)
  
!          --  if the representation is non-contiguous, and just x + 1 if it is
!          --  after having dealt with constraint checking.
  
!          if Is_Enumeration_Type (Etyp)
             and then Present (Enum_Pos_To_Rep (Etyp))
           then
              if Has_Contiguous_Rep (Etyp) then
+                if not Range_Checks_Suppressed (Ptyp) then
+                   Set_Do_Range_Check (First (Exprs), False);
+                   Expand_Pred_Succ_Attribute (N);
+                end if;
+ 
                 Rewrite (N,
!                  Unchecked_Convert_To (Etyp,
!                     Make_Op_Add (Loc,
!                        Left_Opnd  =>
!                          Unchecked_Convert_To (
!                            Integer_Type_For
!                              (Esize (Etyp), Is_Unsigned_Type (Etyp)),
!                            First (Exprs)),
!                        Right_Opnd =>
!                          Make_Integer_Literal (Loc, 1))));
  
              else
                 --  Add Boolean parameter True, to request program error if
                 --  we have a bad representation on our hands. Add False if
*************** package body Exp_Attr is
*** 6239,6245 ****
                         Right_Opnd => Make_Integer_Literal (Loc, 1)))));
              end if;
  
!             Analyze_And_Resolve (N, Typ);
  
           --  For floating-point, we transform 'Succ into a call to the Succ
           --  floating-point attribute function in Fat_xxx (xxx is root type)
--- 6649,6657 ----
                         Right_Opnd => Make_Integer_Literal (Loc, 1)))));
              end if;
  
!             --  Suppress checks since they have all been done above
! 
!             Analyze_And_Resolve (N, Typ, Suppress => All_Checks);
  
           --  For floating-point, we transform 'Succ into a call to the Succ
           --  floating-point attribute function in Fat_xxx (xxx is root type)
*************** package body Exp_Attr is
*** 6415,6427 ****
        ------------
  
        when Attribute_To_Any => To_Any : declare
!          P_Type : constant Entity_Id := Etype (Pref);
!          Decls  : constant List_Id   := New_List;
        begin
           Rewrite (N,
             Build_To_Any_Call
               (Loc,
!               Convert_To (P_Type,
                Relocate_Node (First (Exprs))), Decls));
           Insert_Actions (N, Decls);
           Analyze_And_Resolve (N, RTE (RE_Any));
--- 6827,6838 ----
        ------------
  
        when Attribute_To_Any => To_Any : declare
!          Decls : constant List_Id := New_List;
        begin
           Rewrite (N,
             Build_To_Any_Call
               (Loc,
!               Convert_To (Ptyp,
                Relocate_Node (First (Exprs))), Decls));
           Insert_Actions (N, Decls);
           Analyze_And_Resolve (N, RTE (RE_Any));
*************** package body Exp_Attr is
*** 6445,6454 ****
        --------------
  
        when Attribute_TypeCode => TypeCode : declare
!          P_Type : constant Entity_Id := Etype (Pref);
!          Decls  : constant List_Id   := New_List;
        begin
!          Rewrite (N, Build_TypeCode_Call (Loc, P_Type, Decls));
           Insert_Actions (N, Decls);
           Analyze_And_Resolve (N, RTE (RE_TypeCode));
        end TypeCode;
--- 6856,6864 ----
        --------------
  
        when Attribute_TypeCode => TypeCode : declare
!          Decls : constant List_Id := New_List;
        begin
!          Rewrite (N, Build_TypeCode_Call (Loc, Ptyp, Decls));
           Insert_Actions (N, Decls);
           Analyze_And_Resolve (N, RTE (RE_TypeCode));
        end TypeCode;
*************** package body Exp_Attr is
*** 6484,6546 ****
        -- Val --
        ---------
  
!       --  For enumeration types with a standard representation, and for all
!       --  other types, Val is handled by the back end. For enumeration types
!       --  with a non-standard representation we use the _Pos_To_Rep array that
!       --  was created when the type was frozen.
  
        when Attribute_Val => Val : declare
!          Etyp : constant Entity_Id := Base_Type (Entity (Pref));
  
        begin
!          if Is_Enumeration_Type (Etyp)
!            and then Present (Enum_Pos_To_Rep (Etyp))
!          then
!             if Has_Contiguous_Rep (Etyp) then
!                declare
!                   Rep_Node : constant Node_Id :=
!                     Unchecked_Convert_To (Etyp,
!                        Make_Op_Add (Loc,
!                          Left_Opnd =>
!                             Make_Integer_Literal (Loc,
!                               Enumeration_Rep (First_Literal (Etyp))),
!                          Right_Opnd =>
!                           (Convert_To (Standard_Integer,
!                              Relocate_Node (First (Exprs))))));
  
!                begin
!                   Rewrite (N,
!                      Unchecked_Convert_To (Etyp,
!                          Make_Op_Add (Loc,
!                            Left_Opnd =>
!                              Make_Integer_Literal (Loc,
!                                Enumeration_Rep (First_Literal (Etyp))),
!                            Right_Opnd =>
!                              Make_Function_Call (Loc,
!                                Name =>
!                                  New_Occurrence_Of
!                                    (TSS (Etyp, TSS_Rep_To_Pos), Loc),
!                                Parameter_Associations => New_List (
!                                  Rep_Node,
!                                  Rep_To_Pos_Flag (Etyp, Loc))))));
!                end;
  
!             else
                 Rewrite (N,
                   Make_Indexed_Component (Loc,
!                    Prefix => New_Occurrence_Of (Enum_Pos_To_Rep (Etyp), Loc),
                     Expressions => New_List (
!                      Convert_To (Standard_Integer,
!                        Relocate_Node (First (Exprs))))));
!             end if;
  
!             Analyze_And_Resolve (N, Typ);
  
!          --  If the argument is marked as requiring a range check then generate
!          --  it here.
  
!          elsif Do_Range_Check (First (Exprs)) then
!             Generate_Range_Check (First (Exprs), Etyp, CE_Range_Check_Failed);
           end if;
        end Val;
  
--- 6894,6992 ----
        -- Val --
        ---------
  
!       --  For enumeration types with a non-standard representation we use the
!       --  _Pos_To_Rep array that was created when the type was frozen, unless
!       --  the representation is contiguous in which case we use an addition.
! 
!       --  For enumeration types with a standard representation, Val can be
!       --  rewritten as a simple conversion with Conversion_OK set.
! 
!       --  For integer types, Val is equivalent to a simple integer conversion
!       --  and we rewrite it as such.
  
        when Attribute_Val => Val : declare
!          Etyp : constant Entity_Id := Base_Type (Ptyp);
!          Expr : constant Node_Id := First (Exprs);
!          Rtyp : Entity_Id;
  
        begin
!          --  Case of enumeration type
  
!          if Is_Enumeration_Type (Etyp) then
  
!             --  Non-contiguous non-standard enumeration type
! 
!             if Present (Enum_Pos_To_Rep (Etyp))
!               and then not Has_Contiguous_Rep (Etyp)
!             then
                 Rewrite (N,
                   Make_Indexed_Component (Loc,
!                    Prefix =>
!                      New_Occurrence_Of (Enum_Pos_To_Rep (Etyp), Loc),
                     Expressions => New_List (
!                      Convert_To (Standard_Integer, Expr))));
  
!                Analyze_And_Resolve (N, Typ);
  
!             --  Standard or contiguous non-standard enumeration type
  
!             else
!                --  If the argument is marked as requiring a range check then
!                --  generate it here, after looking through a conversion to
!                --  universal integer, if any.
! 
!                if Do_Range_Check (Expr) then
!                   if Present (Enum_Pos_To_Rep (Etyp)) then
!                      Rtyp := Enum_Pos_To_Rep (Etyp);
!                   else
!                      Rtyp := Etyp;
!                   end if;
! 
!                   if Nkind (Expr) = N_Type_Conversion
!                      and then Entity (Subtype_Mark (Expr)) = Universal_Integer
!                   then
!                      Generate_Range_Check
!                        (Expression (Expr), Rtyp, CE_Range_Check_Failed);
! 
!                   else
!                      Generate_Range_Check (Expr, Rtyp, CE_Range_Check_Failed);
!                   end if;
! 
!                   Set_Do_Range_Check (Expr, False);
!                end if;
! 
!                --  Contiguous non-standard enumeration type
! 
!                if Present (Enum_Pos_To_Rep (Etyp)) then
!                   Rewrite (N,
!                     Unchecked_Convert_To (Etyp,
!                       Make_Op_Add (Loc,
!                         Left_Opnd =>
!                           Make_Integer_Literal (Loc,
!                             Enumeration_Rep (First_Literal (Etyp))),
!                         Right_Opnd =>
!                           Unchecked_Convert_To (
!                             Integer_Type_For
!                               (Esize (Etyp), Is_Unsigned_Type (Etyp)),
!                             Expr))));
! 
!                --  Standard enumeration type
! 
!                else
!                   Rewrite (N, OK_Convert_To (Typ, Expr));
!                end if;
! 
!                --  Suppress checks since the range check was done above
!                --  and it guarantees that the addition cannot overflow.
! 
!                Analyze_And_Resolve (N, Typ, Suppress => All_Checks);
!             end if;
! 
!          --  Deal with integer types
! 
!          elsif Is_Integer_Type (Etyp) then
!             Rewrite (N, Convert_To (Typ, Expr));
!             Analyze_And_Resolve (N, Typ);
           end if;
        end Val;
  
*************** package body Exp_Attr is
*** 6902,6928 ****
           --  correct, even though a value greater than 127 looks signed to a
           --  signed comparison.
  
-          elsif Is_Unsigned_Type (Ptyp)
-            or else (Is_Private_Type (Ptyp) and then Is_Unsigned_Type (Btyp))
-          then
-             if Esize (Ptyp) <= 32 then
-                PBtyp := RTE (RE_Unsigned_32);
-             else
-                PBtyp := RTE (RE_Unsigned_64);
-             end if;
- 
-             Rewrite (N, Make_Range_Test);
- 
-          --  Signed types
- 
           else
!             if Esize (Ptyp) <= Esize (Standard_Integer) then
!                PBtyp := Standard_Integer;
!             else
!                PBtyp := Universal_Integer;
!             end if;
! 
!             Rewrite (N, Make_Range_Test);
           end if;
  
           --  If a predicate is present, then we do the predicate test, even if
--- 7348,7363 ----
           --  correct, even though a value greater than 127 looks signed to a
           --  signed comparison.
  
           else
!             declare
!                Uns : constant Boolean
!                        := Is_Unsigned_Type (Ptyp)
!                             or else (Is_Private_Type (Ptyp)
!                                       and then Is_Unsigned_Type (Btyp));
!             begin
!                PBtyp := Integer_Type_For (Esize (Ptyp), Uns);
!                Rewrite (N, Make_Range_Test);
!             end;
           end if;
  
           --  If a predicate is present, then we do the predicate test, even if
*************** package body Exp_Attr is
*** 6950,6965 ****
        -------------------
  
        when Attribute_Valid_Scalars => Valid_Scalars : declare
!          Val_Typ  : constant Entity_Id := Validated_View (Ptyp);
!          Comp_Typ : Entity_Id;
!          Expr     : Node_Id;
  
        begin
           --  Assume that the prefix does not need validation
  
           Expr := Empty;
  
!          --  Attribute 'Valid_Scalars is not supported on private tagged types
  
           if Is_Private_Type (Ptyp) and then Is_Tagged_Type (Ptyp) then
              null;
--- 7385,7400 ----
        -------------------
  
        when Attribute_Valid_Scalars => Valid_Scalars : declare
!          Val_Typ : constant Entity_Id := Validated_View (Ptyp);
!          Expr    : Node_Id;
  
        begin
           --  Assume that the prefix does not need validation
  
           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;
*************** package body Exp_Attr is
*** 6982,7006 ****
                    Unchecked_Convert_To (Val_Typ, New_Copy_Tree (Pref)),
                  Attribute_Name => Name_Valid);
  
           --  Validate the scalar components of an array by iterating over all
           --  dimensions of the array while checking individual components.
  
           elsif Is_Array_Type (Val_Typ) then
!             Comp_Typ := Validated_View (Component_Type (Val_Typ));
! 
!             if Scalar_Part_Present (Comp_Typ) then
!                Expr :=
!                  Make_Function_Call (Loc,
!                    Name                   =>
!                      New_Occurrence_Of
!                        (Build_Array_VS_Func
!                          (Attr       => N,
!                           Formal_Typ => Ptyp,
!                           Array_Typ  => Val_Typ,
!                           Comp_Typ   => Comp_Typ),
!                        Loc),
!                    Parameter_Associations => New_List (Pref));
!             end if;
  
           --  Validate the scalar components, discriminants of a record type by
           --  examining the structure of a record type.
--- 7417,7442 ----
                    Unchecked_Convert_To (Val_Typ, New_Copy_Tree (Pref)),
                  Attribute_Name => Name_Valid);
  
+             --  Required by LLVM although the sizes are the same???
+ 
+             if Nkind (Prefix (Expr)) = N_Unchecked_Type_Conversion then
+                Set_No_Truncation (Prefix (Expr));
+             end if;
+ 
           --  Validate the scalar components of an array by iterating over all
           --  dimensions of the array while checking individual components.
  
           elsif Is_Array_Type (Val_Typ) then
!             Expr :=
!               Make_Function_Call (Loc,
!                 Name                   =>
!                   New_Occurrence_Of
!                     (Build_Array_VS_Func
!                       (Attr       => N,
!                        Formal_Typ => Ptyp,
!                        Array_Typ  => Val_Typ),
!                     Loc),
!                 Parameter_Associations => New_List (Pref));
  
           --  Validate the scalar components, discriminants of a record type by
           --  examining the structure of a record type.
*************** package body Exp_Attr is
*** 7034,7041 ****
        -- Value --
        -----------
  
-       --  Value attribute is handled in separate unit Exp_Imgv
- 
        when Attribute_Value =>
           Exp_Imgv.Expand_Value_Attribute (N);
  
--- 7470,7475 ----
*************** package body Exp_Attr is
*** 7055,7062 ****
        -- Wide_Image --
        ----------------
  
-       --  Wide_Image attribute is handled in separate unit Exp_Imgv
- 
        when Attribute_Wide_Image =>
           --  Leave attribute unexpanded in CodePeer mode: the gnat2scil
           --  back-end knows how to handle this attribute directly.
--- 7489,7494 ----
*************** package body Exp_Attr is
*** 7071,7078 ****
        -- Wide_Wide_Image --
        ---------------------
  
-       --  Wide_Wide_Image attribute is handled in separate unit Exp_Imgv
- 
        when Attribute_Wide_Wide_Image =>
           --  Leave attribute unexpanded in CodePeer mode: the gnat2scil
           --  back-end knows how to handle this attribute directly.
--- 7503,7508 ----
*************** package body Exp_Attr is
*** 7165,7172 ****
        -- Wide_Wide_Width --
        ---------------------
  
-       --  Wide_Wide_Width attribute is handled in separate unit Exp_Imgv
- 
        when Attribute_Wide_Wide_Width =>
           Exp_Imgv.Expand_Width_Attribute (N, Wide_Wide);
  
--- 7595,7600 ----
*************** package body Exp_Attr is
*** 7174,7181 ****
        -- Wide_Width --
        ----------------
  
-       --  Wide_Width attribute is handled in separate unit Exp_Imgv
- 
        when Attribute_Wide_Width =>
           Exp_Imgv.Expand_Width_Attribute (N, Wide);
  
--- 7602,7607 ----
*************** package body Exp_Attr is
*** 7183,7190 ****
        -- Width --
        -----------
  
-       --  Width attribute is handled in separate unit Exp_Imgv
- 
        when Attribute_Width =>
           Exp_Imgv.Expand_Width_Attribute (N, Normal);
  
--- 7609,7614 ----
*************** package body Exp_Attr is
*** 7265,7270 ****
--- 7689,7706 ----
                 Analyze (N);
                 return;
  
+             --  Limited types
+ 
+             elsif Default_Streaming_Unavailable (U_Type) then
+                --  Do the same thing here as is done above in the
+                --  case where a No_Streams restriction is active.
+ 
+                Rewrite (N,
+                  Make_Raise_Program_Error (Sloc (N),
+                    Reason => PE_Stream_Operation_Not_Allowed));
+                Set_Etype (N, U_Type);
+                return;
+ 
              --  For elementary types, we call the W_xxx routine directly
  
              elsif Is_Elementary_Type (U_Type) then
*************** package body Exp_Attr is
*** 7331,7386 ****
  
           --  If we fall through, Pname is the procedure to be called
  
!          Rewrite_Stream_Proc_Call (Pname);
        end Write;
  
-       --  Component_Size is handled by the back end, unless the component size
-       --  is known at compile time, which is always true in the packed array
-       --  case. It is important that the packed array case is handled in the
-       --  front end (see Eval_Attribute) since the back end would otherwise get
-       --  confused by the equivalent packed array type.
- 
-       when Attribute_Component_Size =>
-          null;
- 
        --  The following attributes are handled by the back end (except that
        --  static cases have already been evaluated during semantic processing,
        --  but in any case the back end should not count on this).
  
!       --  The back end also handles the non-class-wide cases of Size
! 
!       when Attribute_Bit_Order
!          | Attribute_Code_Address
!          | Attribute_Definite
           | Attribute_Deref
           | Attribute_Null_Parameter
           | Attribute_Passed_By_Reference
           | Attribute_Pool_Address
-          | Attribute_Scalar_Storage_Order
        =>
           null;
  
-       --  The following attributes are also handled by the back end, but return
-       --  a universal integer result, so may need a conversion for checking
-       --  that the result is in range.
- 
-       when Attribute_Aft
-          | Attribute_Max_Alignment_For_Allocation
-       =>
-          Apply_Universal_Integer_Attribute_Checks (N);
- 
        --  The following attributes should not appear at this stage, since they
        --  have already been handled by the analyzer (and properly rewritten
!       --  with corresponding values or entities to represent the right values)
  
        when Attribute_Abort_Signal
           | Attribute_Address_Size
           | Attribute_Atomic_Always_Lock_Free
           | Attribute_Base
           | Attribute_Class
           | Attribute_Compiler_Version
           | Attribute_Default_Bit_Order
           | Attribute_Default_Scalar_Storage_Order
           | Attribute_Delta
           | Attribute_Denorm
           | Attribute_Digits
--- 7767,7802 ----
  
           --  If we fall through, Pname is the procedure to be called
  
!          Rewrite_Attribute_Proc_Call (Pname);
        end Write;
  
        --  The following attributes are handled by the back end (except that
        --  static cases have already been evaluated during semantic processing,
        --  but in any case the back end should not count on this).
  
!       when Attribute_Code_Address
           | Attribute_Deref
           | Attribute_Null_Parameter
           | Attribute_Passed_By_Reference
           | Attribute_Pool_Address
        =>
           null;
  
        --  The following attributes should not appear at this stage, since they
        --  have already been handled by the analyzer (and properly rewritten
!       --  with corresponding values or entities to represent the right values).
  
        when Attribute_Abort_Signal
           | Attribute_Address_Size
+          | Attribute_Aft
           | Attribute_Atomic_Always_Lock_Free
           | Attribute_Base
+          | Attribute_Bit_Order
           | Attribute_Class
           | Attribute_Compiler_Version
           | Attribute_Default_Bit_Order
           | Attribute_Default_Scalar_Storage_Order
+          | Attribute_Definite
           | Attribute_Delta
           | Attribute_Denorm
           | Attribute_Digits
*************** package body Exp_Attr is
*** 7402,7407 ****
--- 7818,7825 ----
           | Attribute_Machine_Overflows
           | Attribute_Machine_Radix
           | Attribute_Machine_Rounds
+          | Attribute_Max_Alignment_For_Allocation
+          | Attribute_Max_Integer_Size
           | Attribute_Maximum_Alignment
           | Attribute_Model_Emin
           | Attribute_Model_Epsilon
*************** package body Exp_Attr is
*** 7416,7424 ****
--- 7834,7845 ----
           | Attribute_Safe_Large
           | Attribute_Safe_Last
           | Attribute_Safe_Small
+          | Attribute_Scalar_Storage_Order
           | Attribute_Scale
           | Attribute_Signed_Zeros
           | Attribute_Small
+          | Attribute_Small_Denominator
+          | Attribute_Small_Numerator
           | Attribute_Storage_Unit
           | Attribute_Stub_Type
           | Attribute_System_Allocator_Alignment
*************** package body Exp_Attr is
*** 7431,7445 ****
           | Attribute_Word_Size
        =>
           raise Program_Error;
- 
-       --  The Asm_Input and Asm_Output attributes are not expanded at this
-       --  stage, but will be eliminated in the expansion of the Asm call, see
-       --  Exp_Intr for details. So the back end will never see these either.
- 
-       when Attribute_Asm_Input
-          | Attribute_Asm_Output
-       =>
-          null;
        end case;
  
     --  Note: as mentioned earlier, individual sections of the above case
--- 7852,7857 ----
*************** package body Exp_Attr is
*** 7482,7488 ****
           Cnam := Name_Last;
        end if;
  
!       if not Nkind_In (P, N_Assignment_Statement, N_Object_Declaration)
          or else not Suppress_Assignment_Checks (P)
        then
           Insert_Action (N,
--- 7894,7900 ----
           Cnam := Name_Last;
        end if;
  
!       if Nkind (P) not in N_Assignment_Statement | N_Object_Declaration
          or else not Suppress_Assignment_Checks (P)
        then
           Insert_Action (N,
*************** package body Exp_Attr is
*** 7505,7521 ****
     ---------------------------
  
     procedure Expand_Size_Attribute (N : Node_Id) is
!       Loc   : constant Source_Ptr   := Sloc (N);
!       Typ   : constant Entity_Id    := Etype (N);
!       Pref  : constant Node_Id      := Prefix (N);
!       Ptyp  : constant Entity_Id    := Etype (Pref);
!       Id    : constant Attribute_Id := Get_Attribute_Id (Attribute_Name (N));
!       Siz   : Uint;
  
     begin
        --  Case of known RM_Size of a type
  
!       if (Id = Attribute_Size or else Id = Attribute_Value_Size)
          and then Is_Entity_Name (Pref)
          and then Is_Type (Entity (Pref))
          and then Known_Static_RM_Size (Entity (Pref))
--- 7917,7933 ----
     ---------------------------
  
     procedure Expand_Size_Attribute (N : Node_Id) is
!       Loc  : constant Source_Ptr   := Sloc (N);
!       Typ  : constant Entity_Id    := Etype (N);
!       Pref : constant Node_Id      := Prefix (N);
!       Ptyp : constant Entity_Id    := Etype (Pref);
!       Id   : constant Attribute_Id := Get_Attribute_Id (Attribute_Name (N));
!       Siz  : Uint;
  
     begin
        --  Case of known RM_Size of a type
  
!       if Id in Attribute_Size | Attribute_Value_Size
          and then Is_Entity_Name (Pref)
          and then Is_Type (Entity (Pref))
          and then Known_Static_RM_Size (Entity (Pref))
*************** package body Exp_Attr is
*** 7577,7584 ****
  
           if Is_Entity_Name (Pref)
             and then Is_Formal (Entity (Pref))
!            and then Is_Array_Type (Ptyp)
!            and then Is_Packed (Ptyp)
           then
              Rewrite (N,
                Make_Attribute_Reference (Loc,
--- 7989,7995 ----
  
           if Is_Entity_Name (Pref)
             and then Is_Formal (Entity (Pref))
!            and then Is_Packed_Array (Ptyp)
           then
              Rewrite (N,
                Make_Attribute_Reference (Loc,
*************** package body Exp_Attr is
*** 7592,7600 ****
           --  type, but also a hint to the actual constrained type.
  
           elsif Nkind (Pref) = N_Explicit_Dereference
!            and then Is_Array_Type (Ptyp)
             and then not Is_Constrained (Ptyp)
-            and then Is_Packed (Ptyp)
           then
              Set_Actual_Designated_Subtype (Pref, Get_Actual_Subtype (Pref));
  
--- 8003,8010 ----
           --  type, but also a hint to the actual constrained type.
  
           elsif Nkind (Pref) = N_Explicit_Dereference
!            and then Is_Packed_Array (Ptyp)
             and then not Is_Constrained (Ptyp)
           then
              Set_Actual_Designated_Subtype (Pref, Get_Actual_Subtype (Pref));
  
*************** package body Exp_Attr is
*** 7867,7872 ****
--- 8277,8285 ----
           while Present (Comp) loop
              if Nkind (Comp) = N_Range then
                 Process_Range_Update (Temp, Comp, Expr, Typ);
+             elsif Nkind (Comp) = N_Subtype_Indication then
+                Process_Range_Update
+                  (Temp, Range_Expression (Constraint (Comp)), Expr, Typ);
              else
                 Process_Component_Or_Element_Update (Temp, Comp, Expr, Typ);
              end if;
*************** package body Exp_Attr is
*** 7898,7924 ****
        --  All we do is use the root type (historically this dealt with
        --  VAX-float .. to be cleaned up further later ???)
  
!       Fat_Type := Rtyp;
! 
!       if Fat_Type = Standard_Short_Float then
!          Fat_Pkg := RE_Attr_Short_Float;
! 
!       elsif Fat_Type = Standard_Float then
!          Fat_Pkg := RE_Attr_Float;
  
!       elsif Fat_Type = Standard_Long_Float then
!          Fat_Pkg := RE_Attr_Long_Float;
  
!       elsif Fat_Type = Standard_Long_Long_Float then
!          Fat_Pkg := RE_Attr_Long_Long_Float;
  
           --  Universal real (which is its own root type) is treated as being
           --  equivalent to Standard.Long_Long_Float, since it is defined to
           --  have the same precision as the longest Float type.
  
!       elsif Fat_Type = Universal_Real then
           Fat_Type := Standard_Long_Long_Float;
!          Fat_Pkg := RE_Attr_Long_Long_Float;
  
        else
           raise Program_Error;
--- 8311,8335 ----
        --  All we do is use the root type (historically this dealt with
        --  VAX-float .. to be cleaned up further later ???)
  
!       if Rtyp = Standard_Short_Float or else Rtyp = Standard_Float then
!          Fat_Type := Standard_Float;
!          Fat_Pkg  := RE_Attr_Float;
  
!       elsif Rtyp = Standard_Long_Float then
!          Fat_Type := Standard_Long_Float;
!          Fat_Pkg  := RE_Attr_Long_Float;
  
!       elsif Rtyp = Standard_Long_Long_Float then
!          Fat_Type := Standard_Long_Long_Float;
!          Fat_Pkg  := RE_Attr_Long_Long_Float;
  
           --  Universal real (which is its own root type) is treated as being
           --  equivalent to Standard.Long_Long_Float, since it is defined to
           --  have the same precision as the longest Float type.
  
!       elsif Rtyp = Universal_Real then
           Fat_Type := Standard_Long_Long_Float;
!          Fat_Pkg  := RE_Attr_Long_Long_Float;
  
        else
           raise Program_Error;
*************** package body Exp_Attr is
*** 8323,8357 ****
        return BT;
     end Full_Base;
  
-    -----------------------
-    -- Get_Index_Subtype --
-    -----------------------
- 
-    function Get_Index_Subtype (N : Node_Id) return Node_Id is
-       P_Type : Entity_Id := Etype (Prefix (N));
-       Indx   : Node_Id;
-       J      : Int;
- 
-    begin
-       if Is_Access_Type (P_Type) then
-          P_Type := Designated_Type (P_Type);
-       end if;
- 
-       if No (Expressions (N)) then
-          J := 1;
-       else
-          J := UI_To_Int (Expr_Value (First (Expressions (N))));
-       end if;
- 
-       Indx := First_Index (P_Type);
-       while J > 1 loop
-          Next_Index (Indx);
-          J := J - 1;
-       end loop;
- 
-       return Etype (Indx);
-    end Get_Index_Subtype;
- 
     -------------------------------
     -- Get_Stream_Convert_Pragma --
     -------------------------------
--- 8734,8739 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_attr.ads gcc-11.1.0/gcc/ada/exp_attr.ads
*** gcc-10.3.0/gcc/ada/exp_attr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_attr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_cg.adb gcc-11.1.0/gcc/ada/exp_cg.adb
*** gcc-10.3.0/gcc/ada/exp_cg.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_cg.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_CG is
*** 81,87 ****
     --  Determines if E is a predefined primitive operation.
     --  Note: This routine should replace the routine with the same name that is
     --  currently available in exp_disp because it extends its functionality to
!    --  handle fully qualified names ???
  
     function Slot_Number (Prim : Entity_Id) return Uint;
     --  Returns the slot number associated with Prim. For predefined primitives
--- 81,87 ----
     --  Determines if E is a predefined primitive operation.
     --  Note: This routine should replace the routine with the same name that is
     --  currently available in exp_disp because it extends its functionality to
!    --  handle fully qualified names. It's actually in Sem_Util. ???
  
     function Slot_Number (Prim : Entity_Id) return Uint;
     --  Returns the slot number associated with Prim. For predefined primitives
*************** package body Exp_CG is
*** 261,273 ****
             or else TSS_Name = TSS_Stream_Write
             or else TSS_Name = TSS_Stream_Input
             or else TSS_Name = TSS_Stream_Output
             or else TSS_Name = TSS_Deep_Adjust
             or else TSS_Name = TSS_Deep_Finalize
           then
              return True;
  
           elsif not Has_Fully_Qualified_Name (E) then
!             if Nam_In (Chars (E), Name_uSize, Name_uAlignment, Name_uAssign)
                or else
                  (Chars (E) = Name_Op_Eq
                    and then Etype (First_Formal (E)) = Etype (Last_Formal (E)))
--- 261,274 ----
             or else TSS_Name = TSS_Stream_Write
             or else TSS_Name = TSS_Stream_Input
             or else TSS_Name = TSS_Stream_Output
+            or else TSS_Name = TSS_Put_Image
             or else TSS_Name = TSS_Deep_Adjust
             or else TSS_Name = TSS_Deep_Finalize
           then
              return True;
  
           elsif not Has_Fully_Qualified_Name (E) then
!             if Chars (E) in Name_uSize | Name_uAlignment | Name_uAssign
                or else
                  (Chars (E) = Name_Op_Eq
                    and then Etype (First_Formal (E)) = Etype (Last_Formal (E)))
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_cg.ads gcc-11.1.0/gcc/ada/exp_cg.ads
*** gcc-10.3.0/gcc/ada/exp_cg.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_cg.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2010-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2010-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch10.ads gcc-11.1.0/gcc/ada/exp_ch10.ads
*** gcc-10.3.0/gcc/ada/exp_ch10.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch10.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch11.adb gcc-11.1.0/gcc/ada/exp_ch11.adb
*** gcc-10.3.0/gcc/ada/exp_ch11.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch11.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Ch11 is
*** 189,195 ****
        Handlrs       : constant List_Id    := Exception_Handlers (HSS);
        Loc           : constant Source_Ptr := Sloc (HSS);
        Handler       : Node_Id;
-       Others_Choice : Boolean;
        Obj_Decl      : Node_Id;
        Next_Handler  : Node_Id;
  
--- 189,194 ----
*************** package body Exp_Ch11 is
*** 197,208 ****
        --  This procedure handles the expansion of exception handlers for the
        --  optimization of local raise statements into goto statements.
  
-       procedure Prepend_Call_To_Handler
-         (Proc : RE_Id;
-          Args : List_Id := No_List);
-       --  Routine to prepend a call to the procedure referenced by Proc at
-       --  the start of the handler code for the current Handler.
- 
        procedure Replace_Raise_By_Goto (Raise_S : Node_Id; Goto_L1 : Node_Id);
        --  Raise_S is a raise statement (possibly expanded, and possibly of the
        --  form of a Raise_xxx_Error node with a condition. This procedure is
--- 196,201 ----
*************** package body Exp_Ch11 is
*** 850,885 ****
           end;
        end Expand_Local_Exception_Handlers;
  
-       -----------------------------
-       -- Prepend_Call_To_Handler --
-       -----------------------------
- 
-       procedure Prepend_Call_To_Handler
-         (Proc : RE_Id;
-          Args : List_Id := No_List)
-       is
-          Ent : constant Entity_Id := RTE (Proc);
- 
-       begin
-          --  If we have no Entity, then we are probably in no run time mode or
-          --  some weird error has occurred. In either case do nothing. Note use
-          --  of No_Location to hide this code from the debugger, so single
-          --  stepping doesn't jump back and forth.
- 
-          if Present (Ent) then
-             declare
-                Call : constant Node_Id :=
-                         Make_Procedure_Call_Statement (No_Location,
-                           Name => New_Occurrence_Of (RTE (Proc), No_Location),
-                           Parameter_Associations => Args);
- 
-             begin
-                Prepend_To (Statements (Handler), Call);
-                Analyze (Call, Suppress => All_Checks);
-             end;
-          end if;
-       end Prepend_Call_To_Handler;
- 
        ---------------------------
        -- Replace_Raise_By_Goto --
        ---------------------------
--- 843,848 ----
*************** package body Exp_Ch11 is
*** 1089,1132 ****
                         (Statements (Handler), Suppress => All_Checks);
                    end;
                 end if;
- 
-                --  For the normal case, we have to worry about the state of
-                --  abort deferral. Generally, we defer abort during runtime
-                --  handling of exceptions. When control is passed to the
-                --  handler, then in the normal case we undefer aborts. In
-                --  any case this entire handling is relevant only if aborts
-                --  are allowed.
- 
-                if Abort_Allowed
-                  and then not ZCX_Exceptions
-                then
-                   --  There are some special cases in which we do not do the
-                   --  undefer. In particular a finalization (AT END) handler
-                   --  wants to operate with aborts still deferred.
- 
-                   --  We also suppress the call if this is the special handler
-                   --  for Abort_Signal, since if we are aborting, we want to
-                   --  keep aborts deferred (one abort is enough).
- 
-                   --  If abort really needs to be deferred the expander must
-                   --  add this call explicitly, see
-                   --  Expand_N_Asynchronous_Select.
- 
-                   Others_Choice :=
-                     Nkind (First (Exception_Choices (Handler))) =
-                                                          N_Others_Choice;
- 
-                   if (Others_Choice
-                        or else Entity (First (Exception_Choices (Handler))) /=
-                                                          Stand.Abort_Signal)
-                     and then not
-                       (Others_Choice
-                         and then
-                           All_Others (First (Exception_Choices (Handler))))
-                   then
-                      Prepend_Call_To_Handler (RE_Abort_Undefer);
-                   end if;
-                end if;
              end if;
           end if;
  
--- 1052,1057 ----
*************** package body Exp_Ch11 is
*** 1426,1434 ****
        --  objects of controlled types, for example. We do not want to clean up
        --  the return object.
  
!       if not Nkind_In (Parent (N), N_Accept_Statement,
!                                    N_Extended_Return_Statement,
!                                    N_Package_Body)
          and then not Delay_Cleanups (Current_Scope)
          and then not Is_Thunk (Current_Scope)
        then
--- 1351,1359 ----
        --  objects of controlled types, for example. We do not want to clean up
        --  the return object.
  
!       if Nkind (Parent (N)) not in N_Accept_Statement
!                                  | N_Extended_Return_Statement
!                                  | N_Package_Body
          and then not Delay_Cleanups (Current_Scope)
          and then not Is_Thunk (Current_Scope)
        then
*************** package body Exp_Ch11 is
*** 1505,1511 ****
               Actions     => New_List (
                 Make_Simple_Return_Statement (Loc,
                   Expression => New_Occurrence_Of (Standard_False, Loc))),
!               Expression => RCE));
  
        else
           Rewrite (N,
--- 1430,1436 ----
               Actions     => New_List (
                 Make_Simple_Return_Statement (Loc,
                   Expression => New_Occurrence_Of (Standard_False, Loc))),
!                Expression => RCE));
  
        else
           Rewrite (N,
*************** package body Exp_Ch11 is
*** 1514,1520 ****
                 Make_Raise_Statement (Loc,
                   Name       => Name (N),
                   Expression => Expression (N))),
!               Expression => RCE));
        end if;
  
        Analyze_And_Resolve (N, Typ);
--- 1439,1445 ----
                 Make_Raise_Statement (Loc,
                   Name       => Name (N),
                   Expression => Expression (N))),
!                Expression => RCE));
        end if;
  
        Analyze_And_Resolve (N, Typ);
*************** package body Exp_Ch11 is
*** 1553,1559 ****
     begin
        --  Processing for locally handled exception (exclude reraise case)
  
!       if Present (Name (N)) and then Nkind (Name (N)) = N_Identifier then
           if Debug_Flag_Dot_G
             or else Restriction_Active (No_Exception_Propagation)
           then
--- 1478,1484 ----
     begin
        --  Processing for locally handled exception (exclude reraise case)
  
!       if Present (Name (N)) and then Is_Entity_Name (Name (N)) then
           if Debug_Flag_Dot_G
             or else Restriction_Active (No_Exception_Propagation)
           then
*************** package body Exp_Ch11 is
*** 1657,1663 ****
        --  but this is also faster in all modes). Propagate Comes_From_Source
        --  flag to the new node.
  
!       if Present (Name (N)) and then Nkind (Name (N)) = N_Identifier then
           Src := Comes_From_Source (N);
  
           if Entity (Name (N)) = Standard_Constraint_Error then
--- 1582,1588 ----
        --  but this is also faster in all modes). Propagate Comes_From_Source
        --  flag to the new node.
  
!       if Present (Name (N)) and then Is_Entity_Name (Name (N)) then
           Src := Comes_From_Source (N);
  
           if Entity (Name (N)) = Standard_Constraint_Error then
*************** package body Exp_Ch11 is
*** 1689,1695 ****
  
        --  where location_string identifies the file/line of the raise
  
!       if Present (Name (N)) then
           declare
              Id : Entity_Id := Entity (Name (N));
              Buf : Bounded_String;
--- 1614,1620 ----
  
        --  where location_string identifies the file/line of the raise
  
!       if Present (Name (N)) and then Is_Entity_Name (Name (N)) then
           declare
              Id : Entity_Id := Entity (Name (N));
              Buf : Bounded_String;
*************** package body Exp_Ch11 is
*** 1939,1946 ****
           then
              return Empty;
  
!             --  Test for handled sequence of statements with at least one
!             --  exception handler which might be the one we are looking for.
  
           elsif Nkind (P) = N_Handled_Sequence_Of_Statements
             and then Present (Exception_Handlers (P))
--- 1864,1871 ----
           then
              return Empty;
  
!          --  Test for handled sequence of statements with at least one
!          --  exception handler which might be the one we are looking for.
  
           elsif Nkind (P) = N_Handled_Sequence_Of_Statements
             and then Present (Exception_Handlers (P))
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch11.ads gcc-11.1.0/gcc/ada/exp_ch11.ads
*** gcc-10.3.0/gcc/ada/exp_ch11.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch11.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch12.adb gcc-11.1.0/gcc/ada/exp_ch12.adb
*** gcc-10.3.0/gcc/ada/exp_ch12.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch12.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch12.ads gcc-11.1.0/gcc/ada/exp_ch12.ads
*** gcc-10.3.0/gcc/ada/exp_ch12.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch12.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch13.adb gcc-11.1.0/gcc/ada/exp_ch13.adb
*** gcc-10.3.0/gcc/ada/exp_ch13.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch13.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Ch13 is
*** 582,590 ****
              Install_Visible_Declarations (E_Scope);
           end if;
  
!          if Is_Package_Or_Generic_Package (E_Scope) or else
!             Is_Protected_Type (E_Scope)             or else
!             Is_Task_Type (E_Scope)
           then
              Install_Private_Declarations (E_Scope);
           end if;
--- 582,589 ----
              Install_Visible_Declarations (E_Scope);
           end if;
  
!          if Is_Concurrent_Type (E_Scope)
!            or else Is_Package_Or_Generic_Package (E_Scope)
           then
              Install_Private_Declarations (E_Scope);
           end if;
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch13.ads gcc-11.1.0/gcc/ada/exp_ch13.ads
*** gcc-10.3.0/gcc/ada/exp_ch13.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch13.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch2.adb gcc-11.1.0/gcc/ada/exp_ch2.adb
*** gcc-10.3.0/gcc/ada/exp_ch2.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch2.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Ch2 is
*** 122,129 ****
        Val : Node_Id;
        Op  : Node_Kind;
  
-    --  Start of processing for Expand_Current_Value
- 
     begin
        if True
  
--- 122,127 ----
*************** package body Exp_Ch2 is
*** 162,172 ****
  
           and then not (Nkind (Parent (N)) = N_Attribute_Reference
                          and then
!                           (Nam_In (Attribute_Name (Parent (N)),
!                                    Name_Asm_Input,
!                                    Name_Asm_Output)
                              or else Prefix (Parent (N)) = N))
- 
        then
           --  Case of Current_Value is a compile time known value
  
--- 160,168 ----
  
           and then not (Nkind (Parent (N)) = N_Attribute_Reference
                          and then
!                           (Attribute_Name (Parent (N)) in Name_Asm_Input
!                                                         | Name_Asm_Output
                              or else Prefix (Parent (N)) = N))
        then
           --  Case of Current_Value is a compile time known value
  
*************** package body Exp_Ch2 is
*** 342,349 ****
--- 338,380 ----
     -----------------------------
  
     procedure Expand_Entity_Reference (N : Node_Id) is
+ 
+       function Is_Object_Renaming_Name (N : Node_Id) return Boolean;
+       --  Indicates that N occurs (after accounting for qualified expressions
+       --  and type conversions) as the name of an object renaming declaration.
+       --  We don't want to fold values in that case.
+ 
+       -----------------------------
+       -- Is_Object_Renaming_Name --
+       -----------------------------
+ 
+       function Is_Object_Renaming_Name (N : Node_Id) return Boolean is
+          Trailer : Node_Id := N;
+          Rover   : Node_Id;
+       begin
+          loop
+             Rover := Parent (Trailer);
+             case Nkind (Rover) is
+                when N_Qualified_Expression | N_Type_Conversion =>
+                   --  Conservative for type conversions; only necessary if
+                   --  conversion does not introduce a new object (as opposed
+                   --  to a new view of an existing object).
+                   null;
+                when N_Object_Renaming_Declaration =>
+                   return Trailer = Name (Rover);
+                when others =>
+                   return False; -- the usual case
+             end case;
+             Trailer := Rover;
+          end loop;
+       end Is_Object_Renaming_Name;
+ 
+       --  Local variables
+ 
        E : constant Entity_Id := Entity (N);
  
+    --  Start of processing for Expand_Entity_Reference
+ 
     begin
        --  Defend against errors
  
*************** package body Exp_Ch2 is
*** 408,414 ****
        --  Set Atomic_Sync_Required if necessary for atomic variable. Note that
        --  this processing does NOT apply to Volatile_Full_Access variables.
  
!       if Nkind_In (N, N_Identifier, N_Expanded_Name)
          and then Ekind (E) = E_Variable
          and then (Is_Atomic (E) or else Is_Atomic (Etype (E)))
        then
--- 439,445 ----
        --  Set Atomic_Sync_Required if necessary for atomic variable. Note that
        --  this processing does NOT apply to Volatile_Full_Access variables.
  
!       if Nkind (N) in N_Identifier | N_Expanded_Name
          and then Ekind (E) = E_Variable
          and then (Is_Atomic (E) or else Is_Atomic (Etype (E)))
        then
*************** package body Exp_Ch2 is
*** 445,454 ****
           end;
        end if;
  
!       --  Interpret possible Current_Value for variable case
  
        if Is_Assignable (E)
          and then Present (Current_Value (E))
        then
           Expand_Current_Value (N);
  
--- 476,492 ----
           end;
        end if;
  
!       --  Interpret possible Current_Value for variable case. The
!       --  Is_Object_Renaming_Name test is needed for cases such as
!       --    X : Integer := 1;
!       --    Y : Integer renames Integer'(X);
!       --  where the value of Y is changed by any subsequent assignments to X.
!       --  In cases like this, we do not want to use Current_Value even though
!       --  it is available.
  
        if Is_Assignable (E)
          and then Present (Current_Value (E))
+         and then not Is_Object_Renaming_Name (N)
        then
           Expand_Current_Value (N);
  
*************** package body Exp_Ch2 is
*** 514,521 ****
           --  ??? passing a formal as actual for a mode IN formal is
           --  considered as an assignment?
  
!          if Nkind_In (Parent (N), N_Procedure_Call_Statement,
!                                   N_Entry_Call_Statement)
             or else (Nkind (Parent (N)) = N_Assignment_Statement
                        and then N = Name (Parent (N)))
           then
--- 552,559 ----
           --  ??? passing a formal as actual for a mode IN formal is
           --  considered as an assignment?
  
!          if Nkind (Parent (N)) in
!               N_Procedure_Call_Statement | N_Entry_Call_Statement
             or else (Nkind (Parent (N)) = N_Assignment_Statement
                        and then N = Name (Parent (N)))
           then
*************** package body Exp_Ch2 is
*** 531,539 ****
           --  which case there is an implicit dereference, and the formal itself
           --  is not being assigned to).
  
!          elsif Nkind_In (Parent (N), N_Selected_Component,
!                                      N_Indexed_Component,
!                                      N_Slice)
             and then N = Prefix (Parent (N))
             and then not Is_Access_Type (Etype (N))
             and then In_Assignment_Context (Parent (N))
--- 569,576 ----
           --  which case there is an implicit dereference, and the formal itself
           --  is not being assigned to).
  
!          elsif Nkind (Parent (N)) in
!                  N_Selected_Component | N_Indexed_Component | N_Slice
             and then N = Prefix (Parent (N))
             and then not Is_Access_Type (Etype (N))
             and then In_Assignment_Context (Parent (N))
*************** package body Exp_Ch2 is
*** 722,819 ****
        Analyze_And_Resolve (N, T);
     end Expand_Renaming;
  
-    ------------------
-    -- Param_Entity --
-    ------------------
- 
-    --  This would be trivial, simply a test for an identifier that was a
-    --  reference to a formal, if it were not for the fact that a previous call
-    --  to Expand_Entry_Parameter will have modified the reference to the
-    --  identifier. A formal of a protected entity is rewritten as
- 
-    --    typ!(recobj).rec.all'Constrained
- 
-    --  where rec is a selector whose Entry_Formal link points to the formal
- 
-    --  If the type of the entry parameter has a representation clause, then an
-    --  extra temp is involved (see below).
- 
-    --  For a formal of a task entity, the formal is rewritten as a local
-    --  renaming.
- 
-    --  In addition, a formal that is marked volatile because it is aliased
-    --  through an address clause is rewritten as dereference as well.
- 
-    function Param_Entity (N : Node_Id) return Entity_Id is
-       Renamed_Obj : Node_Id;
- 
-    begin
-       --  Simple reference case
- 
-       if Nkind_In (N, N_Identifier, N_Expanded_Name) then
-          if Is_Formal (Entity (N)) then
-             return Entity (N);
- 
-          --  Handle renamings of formal parameters and formals of tasks that
-          --  are rewritten as renamings.
- 
-          elsif Nkind (Parent (Entity (N))) = N_Object_Renaming_Declaration then
-             Renamed_Obj := Get_Referenced_Object (Renamed_Object (Entity (N)));
- 
-             if Is_Entity_Name (Renamed_Obj)
-               and then Is_Formal (Entity (Renamed_Obj))
-             then
-                return Entity (Renamed_Obj);
- 
-             elsif
-               Nkind (Parent (Parent (Entity (N)))) = N_Accept_Statement
-             then
-                return Entity (N);
-             end if;
-          end if;
- 
-       else
-          if Nkind (N) = N_Explicit_Dereference then
-             declare
-                P    : Node_Id := Prefix (N);
-                S    : Node_Id;
-                E    : Entity_Id;
-                Decl : Node_Id;
- 
-             begin
-                --  If the type of an entry parameter has a representation
-                --  clause, then the prefix is not a selected component, but
-                --  instead a reference to a temp pointing at the selected
-                --  component. In this case, set P to be the initial value of
-                --  that temp.
- 
-                if Nkind (P) = N_Identifier then
-                   E := Entity (P);
- 
-                   if Ekind (E) = E_Constant then
-                      Decl := Parent (E);
- 
-                      if Nkind (Decl) = N_Object_Declaration then
-                         P := Expression (Decl);
-                      end if;
-                   end if;
-                end if;
- 
-                if Nkind (P) = N_Selected_Component then
-                   S := Selector_Name (P);
- 
-                   if Present (Entry_Formal (Entity (S))) then
-                      return Entry_Formal (Entity (S));
-                   end if;
- 
-                elsif Nkind (Original_Node (N)) = N_Identifier then
-                   return Param_Entity (Original_Node (N));
-                end if;
-             end;
-          end if;
-       end if;
- 
-       return (Empty);
-    end Param_Entity;
- 
  end Exp_Ch2;
--- 759,762 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch2.ads gcc-11.1.0/gcc/ada/exp_ch2.ads
*** gcc-10.3.0/gcc/ada/exp_ch2.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch2.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Ch2 is
*** 32,45 ****
     procedure Expand_N_Identifier     (N : Node_Id);
     procedure Expand_N_Real_Literal   (N : Node_Id);
  
-    function Param_Entity (N : Node_Id) return Entity_Id;
-    --  Given an expression N, determines if the expression is a reference
-    --  to a formal (of a subprogram or entry), and if so returns the Id
-    --  of the corresponding formal entity, otherwise returns Empty. The
-    --  reason that this is in Exp_Ch2 is that it has to deal with the case
-    --  where the reference is to an entry formal, and has been expanded
-    --  already. Since Exp_Ch2 is in charge of the expansion, it is best
-    --  suited to knowing how to detect this case. Also handles the case
-    --  of references to renamings of formals.
- 
  end Exp_Ch2;
--- 32,35 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch3.adb gcc-11.1.0/gcc/ada/exp_ch3.adb
*** gcc-10.3.0/gcc/ada/exp_ch3.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch3.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Exp_Ch9;  use Exp_Ch9;
*** 37,42 ****
--- 37,43 ----
  with Exp_Dbug; use Exp_Dbug;
  with Exp_Disp; use Exp_Disp;
  with Exp_Dist; use Exp_Dist;
+ with Exp_Put_Image;
  with Exp_Smem; use Exp_Smem;
  with Exp_Strm; use Exp_Strm;
  with Exp_Tss;  use Exp_Tss;
*************** package body Exp_Ch3 is
*** 183,193 ****
     --  E is a type, it has components that have no static initialization.
     --  if E is an entity, its initial expression is not compile-time known.
  
!    function Init_Formals (Typ : Entity_Id) return List_Id;
     --  This function builds the list of formals for an initialization routine.
     --  The first formal is always _Init with the given type. For task value
     --  record types and types containing tasks, three additional formals are
!    --  added:
     --
     --    _Master    : Master_Id
     --    _Chain     : in out Activation_Chain
--- 184,194 ----
     --  E is a type, it has components that have no static initialization.
     --  if E is an entity, its initial expression is not compile-time known.
  
!    function Init_Formals (Typ : Entity_Id; Proc_Id : Entity_Id) return List_Id;
     --  This function builds the list of formals for an initialization routine.
     --  The first formal is always _Init with the given type. For task value
     --  record types and types containing tasks, three additional formals are
!    --  added and Proc_Id is decorated with attribute Has_Master_Entity:
     --
     --    _Master    : Master_Id
     --    _Chain     : in out Activation_Chain
*************** package body Exp_Ch3 is
*** 265,270 ****
--- 266,272 ----
     --     typSW          provides result of 'Write attribute
     --     typSI          provides result of 'Input attribute
     --     typSO          provides result of 'Output attribute
+    --     typPI          provides result of 'Put_Image attribute
     --
     --  The following entries are additionally present for non-limited tagged
     --  types, and implement additional dispatching operations for predefined
*************** package body Exp_Ch3 is
*** 513,518 ****
--- 515,590 ----
        end loop;
     end Adjust_Discriminants;
  
+    ------------------------------------------
+    -- Build_Access_Subprogram_Wrapper_Body --
+    ------------------------------------------
+ 
+    procedure Build_Access_Subprogram_Wrapper_Body
+      (Decl     : Node_Id;
+       New_Decl : Node_Id)
+    is
+       Loc       : constant Source_Ptr := Sloc (Decl);
+       Actuals   : constant List_Id    := New_List;
+       Type_Def  : constant Node_Id    := Type_Definition (Decl);
+       Type_Id   : constant Entity_Id  := Defining_Identifier (Decl);
+       Spec_Node : constant Node_Id    :=
+                     Copy_Subprogram_Spec (Specification (New_Decl));
+       --  This copy creates new identifiers for formals and subprogram.
+ 
+       Act       : Node_Id;
+       Body_Node : Node_Id;
+       Call_Stmt : Node_Id;
+       Ptr       : Entity_Id;
+ 
+    begin
+       if not Expander_Active then
+          return;
+       end if;
+ 
+       --  Create List of actuals for indirect call. The last parameter of the
+       --  subprogram declaration is the access value for the indirect call.
+ 
+       Act := First (Parameter_Specifications (Spec_Node));
+ 
+       while Present (Act) loop
+          exit when Act = Last (Parameter_Specifications (Spec_Node));
+          Append_To (Actuals,
+            Make_Identifier (Loc, Chars (Defining_Identifier (Act))));
+          Next (Act);
+       end loop;
+ 
+       Ptr :=
+         Defining_Identifier
+           (Last (Parameter_Specifications (Specification (New_Decl))));
+ 
+       if Nkind (Type_Def) = N_Access_Procedure_Definition then
+          Call_Stmt := Make_Procedure_Call_Statement (Loc,
+            Name =>
+               Make_Explicit_Dereference
+                 (Loc, New_Occurrence_Of (Ptr, Loc)),
+            Parameter_Associations => Actuals);
+       else
+          Call_Stmt := Make_Simple_Return_Statement (Loc,
+            Expression =>
+              Make_Function_Call (Loc,
+            Name => Make_Explicit_Dereference
+                     (Loc, New_Occurrence_Of (Ptr, Loc)),
+            Parameter_Associations => Actuals));
+       end if;
+ 
+       Body_Node := Make_Subprogram_Body (Loc,
+         Specification => Spec_Node,
+         Declarations  => New_List,
+         Handled_Statement_Sequence =>
+           Make_Handled_Sequence_Of_Statements (Loc,
+             Statements    => New_List (Call_Stmt)));
+ 
+       --  Place body in list of freeze actions for the type.
+ 
+       Ensure_Freeze_Node (Type_Id);
+       Append_Freeze_Actions (Type_Id, New_List (Body_Node));
+    end Build_Access_Subprogram_Wrapper_Body;
+ 
     ---------------------------
     -- Build_Array_Init_Proc --
     ---------------------------
*************** package body Exp_Ch3 is
*** 599,622 ****
        ------------------------
  
        function Init_One_Dimension (N : Int) return List_Id is
!          Index : Entity_Id;
  
        begin
           --  If the component does not need initializing, then there is nothing
           --  to do here, so we return a null body. This occurs when generating
           --  the dummy Init_Proc needed for Initialize_Scalars processing.
  
           if not Has_Non_Null_Base_Init_Proc (Comp_Type)
             and then not Comp_Simple_Init
             and then not Has_Task (Comp_Type)
             and then not Has_Default_Aspect (A_Type)
           then
!             return New_List (Make_Null_Statement (Loc));
  
           --  If all dimensions dealt with, we simply initialize the component
  
           elsif N > Number_Dimensions (A_Type) then
!             return Init_Component;
  
           --  Here we generate the required loop
  
--- 671,760 ----
        ------------------------
  
        function Init_One_Dimension (N : Int) return List_Id is
!          Index       : Entity_Id;
!          DIC_Call    : Node_Id;
!          Result_List : List_Id;
! 
!          function Possible_DIC_Call return Node_Id;
!          --  If the component type has Default_Initial_Conditions and a DIC
!          --  procedure that is not an empty body, then builds a call to the
!          --  DIC procedure and returns it.
! 
!          -----------------------
!          -- Possible_DIC_Call --
!          -----------------------
! 
!          function Possible_DIC_Call return Node_Id is
!          begin
!             --  When the component's type has a Default_Initial_Condition, then
!             --  create a call for the DIC check.
! 
!             if Has_DIC (Comp_Type)
!               --  In GNATprove mode, the component DICs are checked by other
!               --  means. They should not be added to the record type DIC
!               --  procedure, so that the procedure can be used to check the
!               --  record type invariants or DICs if any.
! 
!               and then not GNATprove_Mode
! 
!               --  DIC checks for components of controlled types are done later
!               --  (see Exp_Ch7.Make_Deep_Array_Body).
! 
!               and then not Is_Controlled (Comp_Type)
! 
!               and then Present (DIC_Procedure (Comp_Type))
! 
!               and then not Has_Null_Body (DIC_Procedure (Comp_Type))
!             then
!                return
!                  Build_DIC_Call (Loc,
!                    Make_Indexed_Component (Loc,
!                      Prefix      => Make_Identifier (Loc, Name_uInit),
!                      Expressions => Index_List),
!                    Comp_Type);
!             else
!                return Empty;
!             end if;
!          end Possible_DIC_Call;
! 
!       --  Start of processing for Init_One_Dimension
  
        begin
           --  If the component does not need initializing, then there is nothing
           --  to do here, so we return a null body. This occurs when generating
           --  the dummy Init_Proc needed for Initialize_Scalars processing.
+          --  An exception is if component type has a Default_Initial_Condition,
+          --  in which case we generate a call to the type's DIC procedure.
  
           if not Has_Non_Null_Base_Init_Proc (Comp_Type)
             and then not Comp_Simple_Init
             and then not Has_Task (Comp_Type)
             and then not Has_Default_Aspect (A_Type)
+            and then (not Has_DIC (Comp_Type)
+                       or else N > Number_Dimensions (A_Type))
           then
!             DIC_Call := Possible_DIC_Call;
! 
!             if Present (DIC_Call) then
!                return New_List (DIC_Call);
!             else
!                return New_List (Make_Null_Statement (Loc));
!             end if;
  
           --  If all dimensions dealt with, we simply initialize the component
+          --  and append a call to component type's DIC procedure when needed.
  
           elsif N > Number_Dimensions (A_Type) then
!             DIC_Call := Possible_DIC_Call;
! 
!             if Present (DIC_Call) then
!                Result_List := Init_Component;
!                Append (DIC_Call, Result_List);
!                return Result_List;
! 
!             else
!                return Init_Component;
!             end if;
  
           --  Here we generate the required loop
  
*************** package body Exp_Ch3 is
*** 681,686 ****
--- 819,825 ----
        --    3. Tasks are present
        --    4. The type is marked as a public entity
        --    5. The array type has a Default_Component_Value aspect
+       --    6. The array component type has a Default_Initialization_Condition
  
        --  The reason for the public entity test is to deal properly with the
        --  Initialize_Scalars pragma. This pragma can be set in the client and
*************** package body Exp_Ch3 is
*** 699,705 ****
        Has_Default_Init := Has_Non_Null_Base_Init_Proc (Comp_Type)
                              or else Comp_Simple_Init
                              or else Has_Task (Comp_Type)
!                             or else Has_Default_Aspect (A_Type);
  
        if Has_Default_Init
          or else (not Restriction_Active (No_Initialize_Scalars)
--- 838,845 ----
        Has_Default_Init := Has_Non_Null_Base_Init_Proc (Comp_Type)
                              or else Comp_Simple_Init
                              or else Has_Task (Comp_Type)
!                             or else Has_Default_Aspect (A_Type)
!                             or else Has_DIC (Comp_Type);
  
        if Has_Default_Init
          or else (not Restriction_Active (No_Initialize_Scalars)
*************** package body Exp_Ch3 is
*** 728,734 ****
           end if;
  
           Body_Stmts := Init_One_Dimension (1);
!          Parameters := Init_Formals (A_Type);
  
           Discard_Node (
             Make_Subprogram_Body (Loc,
--- 868,874 ----
           end if;
  
           Body_Stmts := Init_One_Dimension (1);
!          Parameters := Init_Formals (A_Type, Proc_Id);
  
           Discard_Node (
             Make_Subprogram_Body (Loc,
*************** package body Exp_Ch3 is
*** 1209,1214 ****
--- 1349,1365 ----
              then
                 Initialization_Warning (T);
                 return Empty;
+ 
+                --  We need to return empty if the type has predicates because
+                --  this would otherwise duplicate calls to the predicate
+                --  function. If the type hasn't been frozen before being
+                --  referenced in the current record, the extraneous call to
+                --  the predicate function would be inserted somewhere before
+                --  the predicate function is elaborated, which would result in
+                --  an invalid tree.
+ 
+             elsif Has_Predicates (Etype (Comp)) then
+                return Empty;
              end if;
  
           elsif Is_Scalar_Type (Etype (Comp)) then
*************** package body Exp_Ch3 is
*** 1252,1257 ****
--- 1403,1433 ----
        return Agg;
     end Build_Equivalent_Record_Aggregate;
  
+    ----------------------------
+    -- Init_Proc_Level_Formal --
+    ----------------------------
+ 
+    function Init_Proc_Level_Formal (Proc : Entity_Id) return Entity_Id is
+       Form : Entity_Id;
+    begin
+       --  Move through the formals of the initialization procedure Proc to find
+       --  the extra accessibility level parameter associated with the object
+       --  being initialized.
+ 
+       Form := First_Formal (Proc);
+       while Present (Form) loop
+          if Chars (Form) = Name_uInit_Level then
+             return Form;
+          end if;
+ 
+          Next_Formal (Form);
+       end loop;
+ 
+       --  No formal was found, return Empty
+ 
+       return Empty;
+    end Init_Proc_Level_Formal;
+ 
     -------------------------------
     -- Build_Initialization_Call --
     -------------------------------
*************** package body Exp_Ch3 is
*** 1689,1694 ****
--- 1865,1888 ----
             New_Copy_List (Parameter_Associations (Constructor_Ref)));
        end if;
  
+       --  Pass the extra accessibility level parameter associated with the
+       --  level of the object being initialized when required.
+ 
+       --  When no entity is present for Id_Ref it may not have been fully
+       --  analyzed, so allow the default value of standard standard to be
+       --  passed ???
+ 
+       if Is_Entity_Name (Id_Ref)
+         and then Present (Init_Proc_Level_Formal (Proc))
+       then
+          Append_To (Args,
+            Make_Parameter_Association (Loc,
+              Selector_Name             =>
+                Make_Identifier (Loc, Name_uInit_Level),
+              Explicit_Actual_Parameter =>
+                Accessibility_Level (Id_Ref, Dynamic_Level)));
+       end if;
+ 
        Append_To (Res,
          Make_Procedure_Call_Statement (Loc,
            Name                   => New_Occurrence_Of (Proc, Loc),
*************** package body Exp_Ch3 is
*** 1819,1865 ****
           Lhs      : Node_Id;
           Res      : List_Id;
  
-          function Replace_Discr_Ref (N : Node_Id) return Traverse_Result;
-          --  Analysis of the aggregate has replaced discriminants by their
-          --  corresponding discriminals, but these are irrelevant when the
-          --  component has a mutable type and is initialized with an aggregate.
-          --  Instead, they must be replaced by the values supplied in the
-          --  aggregate, that will be assigned during the expansion of the
-          --  assignment.
- 
-          -----------------------
-          -- Replace_Discr_Ref --
-          -----------------------
- 
-          function Replace_Discr_Ref (N : Node_Id) return Traverse_Result is
-             Val : Node_Id;
- 
-          begin
-             if Is_Entity_Name (N)
-               and then Present (Entity (N))
-               and then Is_Formal (Entity (N))
-               and then Present (Discriminal_Link (Entity (N)))
-             then
-                Val :=
-                  Make_Selected_Component (Default_Loc,
-                    Prefix        => New_Copy_Tree (Lhs),
-                    Selector_Name =>
-                      New_Occurrence_Of
-                        (Discriminal_Link (Entity (N)), Default_Loc));
- 
-                if Present (Val) then
-                   Rewrite (N, New_Copy_Tree (Val));
-                end if;
-             end if;
- 
-             return OK;
-          end Replace_Discr_Ref;
- 
-          procedure Replace_Discriminant_References is
-            new Traverse_Proc (Replace_Discr_Ref);
- 
-       --  Start of processing for Build_Assignment
- 
        begin
           Lhs :=
             Make_Selected_Component (Default_Loc,
--- 2013,2018 ----
*************** package body Exp_Ch3 is
*** 1867,1888 ****
               Selector_Name => New_Occurrence_Of (Id, Default_Loc));
           Set_Assignment_OK (Lhs);
  
-          if Nkind (Exp) = N_Aggregate
-            and then Has_Discriminants (Typ)
-            and then not Is_Constrained (Base_Type (Typ))
-          then
-             --  The aggregate may provide new values for the discriminants
-             --  of the component, and other components may depend on those
-             --  discriminants. Previous analysis of those expressions have
-             --  replaced the discriminants by the formals of the initialization
-             --  procedure for the type, but these are irrelevant in the
-             --  enclosing initialization procedure: those discriminant
-             --  references must be replaced by the values provided in the
-             --  aggregate.
- 
-             Replace_Discriminant_References (Exp);
-          end if;
- 
           --  Case of an access attribute applied to the current instance.
           --  Replace the reference to the type by a reference to the actual
           --  object. (Note that this handles the case of the top level of
--- 2020,2025 ----
*************** package body Exp_Ch3 is
*** 1893,1900 ****
           --  traversing the expression. ???
  
           if Kind = N_Attribute_Reference
!            and then Nam_In (Attribute_Name (Default), Name_Unchecked_Access,
!                                                       Name_Unrestricted_Access)
             and then Is_Entity_Name (Prefix (Default))
             and then Is_Type (Entity (Prefix (Default)))
             and then Entity (Prefix (Default)) = Rec_Type
--- 2030,2037 ----
           --  traversing the expression. ???
  
           if Kind = N_Attribute_Reference
!            and then Attribute_Name (Default) in Name_Unchecked_Access
!                                               | Name_Unrestricted_Access
             and then Is_Entity_Name (Prefix (Default))
             and then Is_Type (Entity (Prefix (Default)))
             and then Entity (Prefix (Default)) = Rec_Type
*************** package body Exp_Ch3 is
*** 1957,1963 ****
           end if;
  
           if Needs_Finalization (Typ)
!            and then not (Nkind_In (Kind, N_Aggregate, N_Extension_Aggregate))
             and then not Is_Build_In_Place_Function_Call (Exp)
           then
              Adj_Call :=
--- 2094,2100 ----
           end if;
  
           if Needs_Finalization (Typ)
!            and then Kind not in N_Aggregate | N_Extension_Aggregate
             and then not Is_Build_In_Place_Function_Call (Exp)
           then
              Adj_Call :=
*************** package body Exp_Ch3 is
*** 1978,1986 ****
           --  which provides for a better error message.
  
           if Comes_From_Source (Exp)
!            and then Has_Predicates (Typ)
!            and then not Predicate_Checks_Suppressed (Empty)
!            and then not Predicates_Ignored (Typ)
           then
              Append (Make_Predicate_Check (Typ, Exp), Res);
           end if;
--- 2115,2121 ----
           --  which provides for a better error message.
  
           if Comes_From_Source (Exp)
!            and then Predicate_Enabled (Typ)
           then
              Append (Make_Predicate_Check (Typ, Exp), Res);
           end if;
*************** package body Exp_Ch3 is
*** 2230,2237 ****
                            Prefix         =>
                              Make_Selected_Component (Loc,
                                Prefix        =>
!                                 Unchecked_Convert_To (Acc_Type,
!                                   Make_Identifier (Loc, Name_uO)),
                                Selector_Name =>
                                  New_Occurrence_Of (Iface_Comp, Loc)),
                            Attribute_Name => Name_Position))))));
--- 2365,2373 ----
                            Prefix         =>
                              Make_Selected_Component (Loc,
                                Prefix        =>
!                                 Make_Explicit_Dereference (Loc,
!                                   Unchecked_Convert_To (Acc_Type,
!                                     Make_Identifier (Loc, Name_uO))),
                                Selector_Name =>
                                  New_Occurrence_Of (Iface_Comp, Loc)),
                            Attribute_Name => Name_Position))))));
*************** package body Exp_Ch3 is
*** 2410,2416 ****
           Proc_Spec_Node := New_Node (N_Procedure_Specification, Loc);
           Set_Defining_Unit_Name (Proc_Spec_Node, Proc_Id);
  
!          Parameters := Init_Formals (Rec_Type);
           Append_List_To (Parameters,
             Build_Discriminant_Formals (Rec_Type, True));
  
--- 2546,2552 ----
           Proc_Spec_Node := New_Node (N_Procedure_Specification, Loc);
           Set_Defining_Unit_Name (Proc_Spec_Node, Proc_Id);
  
!          Parameters := Init_Formals (Rec_Type, Proc_Id);
           Append_List_To (Parameters,
             Build_Discriminant_Formals (Rec_Type, True));
  
*************** package body Exp_Ch3 is
*** 2431,2436 ****
--- 2567,2587 ----
                    New_Occurrence_Of (Standard_True, Loc)));
           end if;
  
+          --  Create an extra accessibility parameter to capture the level of
+          --  the object being initialized when its type is a limited record.
+ 
+          if Is_Limited_Record (Rec_Type) then
+             Append_To (Parameters,
+               Make_Parameter_Specification (Loc,
+                 Defining_Identifier => Make_Defining_Identifier
+                                          (Loc, Name_uInit_Level),
+                 Parameter_Type      =>
+                   New_Occurrence_Of (Standard_Natural, Loc),
+                 Expression          =>
+                   Make_Integer_Literal
+                     (Loc, Scope_Depth (Standard_Standard))));
+          end if;
+ 
           Set_Parameter_Specifications (Proc_Spec_Node, Parameters);
           Set_Specification (Body_Node, Proc_Spec_Node);
           Set_Declarations (Body_Node, Decls);
*************** package body Exp_Ch3 is
*** 2824,2839 ****
        ---------------------------
  
        function Build_Init_Statements (Comp_List : Node_Id) return List_Id is
!          Checks       : constant List_Id := New_List;
!          Actions      : List_Id          := No_List;
!          Counter_Id   : Entity_Id        := Empty;
!          Comp_Loc     : Source_Ptr;
!          Decl         : Node_Id;
!          Has_POC      : Boolean;
!          Id           : Entity_Id;
!          Parent_Stmts : List_Id;
!          Stmts        : List_Id;
!          Typ          : Entity_Id;
  
           procedure Increment_Counter (Loc : Source_Ptr);
           --  Generate an "increment by one" statement for the current counter
--- 2975,2990 ----
        ---------------------------
  
        function Build_Init_Statements (Comp_List : Node_Id) return List_Id is
!          Checks             : constant List_Id := New_List;
!          Actions            : List_Id          := No_List;
!          Counter_Id         : Entity_Id        := Empty;
!          Comp_Loc           : Source_Ptr;
!          Decl               : Node_Id;
!          Has_Late_Init_Comp : Boolean;
!          Id                 : Entity_Id;
!          Parent_Stmts       : List_Id;
!          Stmts              : List_Id;
!          Typ                : Entity_Id;
  
           procedure Increment_Counter (Loc : Source_Ptr);
           --  Generate an "increment by one" statement for the current counter
*************** package body Exp_Ch3 is
*** 2844,2849 ****
--- 2995,3006 ----
           --  creates a new defining Id, adds an object declaration and sets
           --  the Id generator for the next variant.
  
+          function Requires_Late_Initialization
+            (Decl     : Node_Id;
+             Rec_Type : Entity_Id) return Boolean;
+          --  Return whether the given Decl requires late initialization, as
+          --  defined by 3.3.1 (8.1/5).
+ 
           -----------------------
           -- Increment_Counter --
           -----------------------
*************** package body Exp_Ch3 is
*** 2890,2895 ****
--- 3047,3204 ----
                    Make_Integer_Literal (Loc, 0)));
           end Make_Counter;
  
+          ----------------------------------
+          -- Requires_Late_Initialization --
+          ----------------------------------
+ 
+          function Requires_Late_Initialization
+            (Decl     : Node_Id;
+             Rec_Type : Entity_Id) return Boolean
+          is
+             References_Current_Instance : Boolean := False;
+             Has_Access_Discriminant     : Boolean := False;
+             Has_Internal_Call           : Boolean := False;
+ 
+             function Find_Access_Discriminant
+               (N : Node_Id) return Traverse_Result;
+             --  Look for a name denoting an access discriminant
+ 
+             function Find_Current_Instance
+               (N : Node_Id) return Traverse_Result;
+             --  Look for a reference to the current instance of the type
+ 
+             function Find_Internal_Call
+               (N : Node_Id) return Traverse_Result;
+             --  Look for an internal protected function call
+ 
+             ------------------------------
+             -- Find_Access_Discriminant --
+             ------------------------------
+ 
+             function Find_Access_Discriminant
+               (N : Node_Id) return Traverse_Result is
+             begin
+                if Is_Entity_Name (N)
+                  and then Denotes_Discriminant (N)
+                  and then Is_Access_Type (Etype (N))
+                then
+                   Has_Access_Discriminant := True;
+                   return Abandon;
+                else
+                   return OK;
+                end if;
+             end Find_Access_Discriminant;
+ 
+             ---------------------------
+             -- Find_Current_Instance --
+             ---------------------------
+ 
+             function Find_Current_Instance
+               (N : Node_Id) return Traverse_Result is
+             begin
+                if Nkind (N) = N_Attribute_Reference
+                  and then Is_Access_Type (Etype (N))
+                  and then Is_Entity_Name (Prefix (N))
+                  and then Is_Type (Entity (Prefix (N)))
+                then
+                   References_Current_Instance := True;
+                   return Abandon;
+                else
+                   return OK;
+                end if;
+             end Find_Current_Instance;
+ 
+             ------------------------
+             -- Find_Internal_Call --
+             ------------------------
+ 
+             function Find_Internal_Call (N : Node_Id) return Traverse_Result is
+ 
+                function Call_Scope (N : Node_Id) return Entity_Id;
+                --  Return the scope enclosing a given call node N
+ 
+                ----------------
+                -- Call_Scope --
+                ----------------
+ 
+                function Call_Scope (N : Node_Id) return Entity_Id is
+                   Nam : constant Node_Id := Name (N);
+                begin
+                   if Nkind (Nam) = N_Selected_Component then
+                      return Scope (Entity (Prefix (Nam)));
+                   else
+                      return Scope (Entity (Nam));
+                   end if;
+                end Call_Scope;
+ 
+             begin
+                if Nkind (N) = N_Function_Call
+                  and then Call_Scope (N)
+                             = Corresponding_Concurrent_Type (Rec_Type)
+                then
+                   Has_Internal_Call := True;
+                   return Abandon;
+                else
+                   return OK;
+                end if;
+             end Find_Internal_Call;
+ 
+             procedure Search_Access_Discriminant is new
+               Traverse_Proc (Find_Access_Discriminant);
+ 
+             procedure Search_Current_Instance is new
+               Traverse_Proc (Find_Current_Instance);
+ 
+             procedure Search_Internal_Call is new
+               Traverse_Proc (Find_Internal_Call);
+ 
+          begin
+             --  A component of an object is said to require late initialization
+             --  if:
+ 
+             --  it has an access discriminant value constrained by a per-object
+             --  expression;
+ 
+             if Has_Access_Constraint (Defining_Identifier (Decl))
+               and then No (Expression (Decl))
+             then
+                return True;
+ 
+             elsif Present (Expression (Decl)) then
+ 
+                --  it has an initialization expression that includes a name
+                --  denoting an access discriminant;
+ 
+                Search_Access_Discriminant (Expression (Decl));
+ 
+                if Has_Access_Discriminant then
+                   return True;
+                end if;
+ 
+                --  or it has an initialization expression that includes a
+                --  reference to the current instance of the type either by
+                --  name...
+ 
+                Search_Current_Instance (Expression (Decl));
+ 
+                if References_Current_Instance then
+                   return True;
+                end if;
+ 
+                --  ...or implicitly as the target object of a call.
+ 
+                if Is_Protected_Record_Type (Rec_Type) then
+                   Search_Internal_Call (Expression (Decl));
+ 
+                   if Has_Internal_Call then
+                      return True;
+                   end if;
+                end if;
+             end if;
+ 
+             return False;
+          end Requires_Late_Initialization;
+ 
        --  Start of processing for Build_Init_Statements
  
        begin
*************** package body Exp_Ch3 is
*** 2943,2952 ****
  
           --  Loop through components, skipping pragmas, in 2 steps. The first
           --  step deals with regular components. The second step deals with
!          --  components that have per object constraints and no explicit
!          --  initialization.
  
!          Has_POC := False;
  
           --  First pass : regular components
  
--- 3252,3260 ----
  
           --  Loop through components, skipping pragmas, in 2 steps. The first
           --  step deals with regular components. The second step deals with
!          --  components that require late initialization.
  
!          Has_Late_Init_Comp := False;
  
           --  First pass : regular components
  
*************** package body Exp_Ch3 is
*** 2959,2969 ****
              Id  := Defining_Identifier (Decl);
              Typ := Etype (Id);
  
!             --  Leave any processing of per-object constrained component for
!             --  the second pass.
  
!             if Has_Access_Constraint (Id) and then No (Expression (Decl)) then
!                Has_POC := True;
  
              --  Regular component cases
  
--- 3267,3277 ----
              Id  := Defining_Identifier (Decl);
              Typ := Etype (Id);
  
!             --  Leave any processing of component requiring late initialization
!             --  for the second pass.
  
!             if Requires_Late_Initialization (Decl, Rec_Type) then
!                Has_Late_Init_Comp := True;
  
              --  Regular component cases
  
*************** package body Exp_Ch3 is
*** 3004,3013 ****
  
                 elsif Ekind (Scope (Id)) = E_Record_Type
                   and then Present (Corresponding_Concurrent_Type (Scope (Id)))
!                  and then Nam_In (Chars (Id), Name_uCPU,
!                                               Name_uDispatching_Domain,
!                                               Name_uPriority,
!                                               Name_uSecondary_Stack_Size)
                 then
                    declare
                       Exp   : Node_Id;
--- 3312,3321 ----
  
                 elsif Ekind (Scope (Id)) = E_Record_Type
                   and then Present (Corresponding_Concurrent_Type (Scope (Id)))
!                  and then Chars (Id) in Name_uCPU
!                                       | Name_uDispatching_Domain
!                                       | Name_uPriority
!                                       | Name_uSecondary_Stack_Size
                 then
                    declare
                       Exp   : Node_Id;
*************** package body Exp_Ch3 is
*** 3141,3146 ****
--- 3449,3486 ----
                    Actions := No_List;
                 end if;
  
+                --  When the component's type has a Default_Initial_Condition,
+                --  and the component is default initialized, then check the
+                --  DIC here.
+ 
+                if Has_DIC (Typ)
+                  and then not Present (Expression (Decl))
+                  and then Present (DIC_Procedure (Typ))
+                  and then not Has_Null_Body (DIC_Procedure (Typ))
+ 
+                  --  The DICs of ancestors are checked as part of the type's
+                  --  DIC procedure.
+ 
+                  and then Chars (Id) /= Name_uParent
+ 
+                  --  In GNATprove mode, the component DICs are checked by other
+                  --  means. They should not be added to the record type DIC
+                  --  procedure, so that the procedure can be used to check the
+                  --  record type invariants or DICs if any.
+ 
+                  and then not GNATprove_Mode
+                then
+                   Append_New_To (Actions,
+                      Build_DIC_Call
+                        (Comp_Loc,
+                         Make_Selected_Component (Comp_Loc,
+                           Prefix        =>
+                             Make_Identifier (Comp_Loc, Name_uInit),
+                           Selector_Name =>
+                             New_Occurrence_Of (Id, Comp_Loc)),
+                         Typ));
+                end if;
+ 
                 if Present (Checks) then
                    if Chars (Id) = Name_uParent then
                       Append_List_To (Parent_Stmts, Checks);
*************** package body Exp_Ch3 is
*** 3265,3283 ****
                Make_Initialize_Protection (Rec_Type));
           end if;
  
!          --  Second pass: components with per-object constraints
  
!          if Has_POC then
              Decl := First_Non_Pragma (Component_Items (Comp_List));
              while Present (Decl) loop
                 Comp_Loc := Sloc (Decl);
                 Id := Defining_Identifier (Decl);
                 Typ := Etype (Id);
  
!                if Has_Access_Constraint (Id)
!                  and then No (Expression (Decl))
!                then
!                   if Has_Non_Null_Base_Init_Proc (Typ) then
                       Append_List_To (Stmts,
                         Build_Initialization_Call (Comp_Loc,
                           Make_Selected_Component (Comp_Loc,
--- 3605,3625 ----
                Make_Initialize_Protection (Rec_Type));
           end if;
  
!          --  Second pass: components that require late initialization
  
!          if Has_Late_Init_Comp then
              Decl := First_Non_Pragma (Component_Items (Comp_List));
              while Present (Decl) loop
                 Comp_Loc := Sloc (Decl);
                 Id := Defining_Identifier (Decl);
                 Typ := Etype (Id);
  
!                if Requires_Late_Initialization (Decl, Rec_Type) then
!                   if Present (Expression (Decl)) then
!                      Append_List_To (Stmts,
!                        Build_Assignment (Id, Expression (Decl)));
! 
!                   elsif Has_Non_Null_Base_Init_Proc (Typ) then
                       Append_List_To (Stmts,
                         Build_Initialization_Call (Comp_Loc,
                           Make_Selected_Component (Comp_Loc,
*************** package body Exp_Ch3 is
*** 3300,3306 ****
  
                          Increment_Counter (Comp_Loc);
                       end if;
- 
                    elsif Component_Needs_Simple_Initialization (Typ) then
                       Append_List_To (Stmts,
                         Build_Assignment
--- 3642,3647 ----
*************** package body Exp_Ch3 is
*** 4454,4459 ****
--- 4795,4802 ----
  
        procedure Check_Attr (Nam : Name_Id; TSS_Nam : TSS_Name_Type) is
        begin
+          --  Move this check to sem???
+ 
           if not Stream_Attribute_Available (Etype (Comp), TSS_Nam) then
              Error_Msg_Name_1 := Nam;
              Error_Msg_N
*************** package body Exp_Ch3 is
*** 4503,4508 ****
--- 4846,4892 ----
        end if;
     end Clean_Task_Names;
  
+    ----------------------------------------
+    -- Ensure_Activation_Chain_And_Master --
+    ----------------------------------------
+ 
+    procedure Ensure_Activation_Chain_And_Master (Obj_Decl : Node_Id) is
+       Def_Id : constant Entity_Id := Defining_Identifier (Obj_Decl);
+       Expr   : constant Node_Id   := Expression (Obj_Decl);
+       Expr_Q : Node_Id;
+       Typ    : constant Entity_Id := Etype (Def_Id);
+ 
+    begin
+       pragma Assert (Nkind (Obj_Decl) = N_Object_Declaration);
+ 
+       if Might_Have_Tasks (Typ) then
+          Build_Activation_Chain_Entity (Obj_Decl);
+ 
+          if Has_Task (Typ) then
+             Build_Master_Entity (Def_Id);
+ 
+          --  Handle objects initialized with BIP function calls
+ 
+          elsif Present (Expr) then
+             if Nkind (Expr) = N_Qualified_Expression then
+                Expr_Q := Expression (Expr);
+             else
+                Expr_Q := Expr;
+             end if;
+ 
+             if Is_Build_In_Place_Function_Call (Expr_Q)
+               or else Present (Unqual_BIP_Iface_Function_Call (Expr_Q))
+               or else
+                 (Nkind (Expr_Q) = N_Reference
+                    and then
+                  Is_Build_In_Place_Function_Call (Prefix (Expr_Q)))
+             then
+                Build_Master_Entity (Def_Id);
+             end if;
+          end if;
+       end if;
+    end Ensure_Activation_Chain_And_Master;
+ 
     ------------------------------
     -- Expand_Freeze_Array_Type --
     ------------------------------
*************** package body Exp_Ch3 is
*** 4670,4675 ****
--- 5054,5060 ----
        Ent           : Entity_Id;
        Fent          : Entity_Id;
        Is_Contiguous : Boolean;
+       Index_Typ     : Entity_Id;
        Ityp          : Entity_Id;
        Last_Repval   : Uint;
        Lst           : List_Id;
*************** package body Exp_Ch3 is
*** 4686,4766 ****
  
        Ent := First_Literal (Typ);
        Last_Repval := Enumeration_Rep (Ent);
! 
        Next_Literal (Ent);
        while Present (Ent) loop
           if Enumeration_Rep (Ent) - Last_Repval /= 1 then
              Is_Contiguous := False;
-             exit;
           else
              Last_Repval := Enumeration_Rep (Ent);
           end if;
  
           Next_Literal (Ent);
        end loop;
  
        if Is_Contiguous then
           Set_Has_Contiguous_Rep (Typ);
!          Ent := First_Literal (Typ);
!          Num := 1;
!          Lst := New_List (New_Occurrence_Of (Ent, Sloc (Ent)));
  
        else
           --  Build list of literal references
  
           Lst := New_List;
-          Num := 0;
- 
           Ent := First_Literal (Typ);
           while Present (Ent) loop
              Append_To (Lst, New_Occurrence_Of (Ent, Sloc (Ent)));
-             Num := Num + 1;
              Next_Literal (Ent);
           end loop;
-       end if;
- 
-       --  Now build an array declaration
  
!       --    typA : array (Natural range 0 .. num - 1) of ctype :=
!       --             (v, v, v, v, v, ....)
  
!       --  where ctype is the corresponding integer type. If the representation
!       --  is contiguous, we only keep the first literal, which provides the
!       --  offset for Pos_To_Rep computations.
  
!       Arr :=
!         Make_Defining_Identifier (Loc,
!           Chars => New_External_Name (Chars (Typ), 'A'));
  
!       Append_Freeze_Action (Typ,
!         Make_Object_Declaration (Loc,
!           Defining_Identifier => Arr,
!           Constant_Present    => True,
  
!           Object_Definition   =>
!             Make_Constrained_Array_Definition (Loc,
!               Discrete_Subtype_Definitions => New_List (
!                 Make_Subtype_Indication (Loc,
!                   Subtype_Mark => New_Occurrence_Of (Standard_Natural, Loc),
!                   Constraint   =>
!                     Make_Range_Constraint (Loc,
!                       Range_Expression =>
!                         Make_Range (Loc,
!                           Low_Bound  =>
!                             Make_Integer_Literal (Loc, 0),
!                           High_Bound =>
!                             Make_Integer_Literal (Loc, Num - 1))))),
  
!               Component_Definition =>
!                 Make_Component_Definition (Loc,
!                   Aliased_Present => False,
!                   Subtype_Indication => New_Occurrence_Of (Typ, Loc))),
  
!           Expression =>
!             Make_Aggregate (Loc,
!               Expressions => Lst)));
  
!       Set_Enum_Pos_To_Rep (Typ, Arr);
  
        --  Now we build the function that converts representation values to
        --  position values. This function has the form:
--- 5071,5169 ----
  
        Ent := First_Literal (Typ);
        Last_Repval := Enumeration_Rep (Ent);
!       Num := 1;
        Next_Literal (Ent);
+ 
        while Present (Ent) loop
           if Enumeration_Rep (Ent) - Last_Repval /= 1 then
              Is_Contiguous := False;
           else
              Last_Repval := Enumeration_Rep (Ent);
           end if;
  
+          Num := Num + 1;
           Next_Literal (Ent);
        end loop;
  
        if Is_Contiguous then
           Set_Has_Contiguous_Rep (Typ);
! 
!          --  Now build a subtype declaration
! 
!          --    subtype typI is new Natural range 0 .. num - 1
! 
!          Index_Typ :=
!            Make_Defining_Identifier (Loc,
!              Chars => New_External_Name (Chars (Typ), 'I'));
! 
!          Append_Freeze_Action (Typ,
!            Make_Subtype_Declaration (Loc,
!              Defining_Identifier => Index_Typ,
!              Subtype_Indication =>
!                Make_Subtype_Indication (Loc,
!                  Subtype_Mark =>
!                    New_Occurrence_Of (Standard_Natural,  Loc),
!                  Constraint  =>
!                    Make_Range_Constraint (Loc,
!                      Range_Expression =>
!                        Make_Range (Loc,
!                          Low_Bound  =>
!                            Make_Integer_Literal (Loc, 0),
!                          High_Bound =>
!                            Make_Integer_Literal (Loc, Num - 1))))));
! 
!          Set_Enum_Pos_To_Rep (Typ, Index_Typ);
  
        else
           --  Build list of literal references
  
           Lst := New_List;
           Ent := First_Literal (Typ);
           while Present (Ent) loop
              Append_To (Lst, New_Occurrence_Of (Ent, Sloc (Ent)));
              Next_Literal (Ent);
           end loop;
  
!          --  Now build an array declaration
  
!          --    typA : constant array (Natural range 0 .. num - 1) of typ :=
!          --             (v, v, v, v, v, ....)
  
!          Arr :=
!            Make_Defining_Identifier (Loc,
!              Chars => New_External_Name (Chars (Typ), 'A'));
  
!          Append_Freeze_Action (Typ,
!            Make_Object_Declaration (Loc,
!              Defining_Identifier => Arr,
!              Constant_Present    => True,
  
!              Object_Definition   =>
!                Make_Constrained_Array_Definition (Loc,
!                  Discrete_Subtype_Definitions => New_List (
!                    Make_Subtype_Indication (Loc,
!                      Subtype_Mark =>
!                        New_Occurrence_Of (Standard_Natural, Loc),
!                      Constraint   =>
!                        Make_Range_Constraint (Loc,
!                          Range_Expression =>
!                            Make_Range (Loc,
!                              Low_Bound  =>
!                                Make_Integer_Literal (Loc, 0),
!                              High_Bound =>
!                                Make_Integer_Literal (Loc, Num - 1))))),
  
!                  Component_Definition =>
!                    Make_Component_Definition (Loc,
!                      Aliased_Present => False,
!                      Subtype_Indication => New_Occurrence_Of (Typ, Loc))),
  
!              Expression =>
!                Make_Aggregate (Loc,
!                  Expressions => Lst)));
  
!          Set_Enum_Pos_To_Rep (Typ, Arr);
!       end if;
  
        --  Now we build the function that converts representation values to
        --  position values. This function has the form:
*************** package body Exp_Ch3 is
*** 4793,4824 ****
  
        --  Is this right??? What about No_Exception_Propagation???
  
!       --  Representations are signed
  
        if Enumeration_Rep (First_Literal (Typ)) < 0 then
- 
-          --  The underlying type is signed. Reset the Is_Unsigned_Type
-          --  explicitly, because it might have been inherited from
-          --  parent type.
- 
           Set_Is_Unsigned_Type (Typ, False);
- 
-          if Esize (Typ) <= Standard_Integer_Size then
-             Ityp := Standard_Integer;
-          else
-             Ityp := Universal_Integer;
-          end if;
- 
-       --  Representations are unsigned
- 
-       else
-          if Esize (Typ) <= Standard_Integer_Size then
-             Ityp := RTE (RE_Unsigned);
-          else
-             Ityp := RTE (RE_Long_Long_Unsigned);
-          end if;
        end if;
  
        --  The body of the function is a case statement. First collect case
        --  alternatives, or optimize the contiguous case.
  
--- 5196,5210 ----
  
        --  Is this right??? What about No_Exception_Propagation???
  
!       --  The underlying type is signed. Reset the Is_Unsigned_Type explicitly
!       --  because it might have been inherited from the parent type.
  
        if Enumeration_Rep (First_Literal (Typ)) < 0 then
           Set_Is_Unsigned_Type (Typ, False);
        end if;
  
+       Ityp := Integer_Type_For (Esize (Typ), Is_Unsigned_Type (Typ));
+ 
        --  The body of the function is a case statement. First collect case
        --  alternatives, or optimize the contiguous case.
  
*************** package body Exp_Ch3 is
*** 5503,5509 ****
           --  limited-with'ed package, we need to use the nonlimited view in
           --  case it has tasks.
  
!          if Ekind (Desig_Typ) in Incomplete_Kind
             and then Present (Non_Limited_View (Desig_Typ))
           then
              Desig_Typ := Non_Limited_View (Desig_Typ);
--- 5889,5895 ----
           --  limited-with'ed package, we need to use the nonlimited view in
           --  case it has tasks.
  
!          if Is_Incomplete_Type (Desig_Typ)
             and then Present (Non_Limited_View (Desig_Typ))
           then
              Desig_Typ := Non_Limited_View (Desig_Typ);
*************** package body Exp_Ch3 is
*** 5513,5519 ****
           --  record parameter for an entry declaration. No master is created
           --  for such a type.
  
!          if Comes_From_Source (N) and then Has_Task (Desig_Typ) then
              Build_Master_Entity (Ptr_Typ);
              Build_Master_Renaming (Ptr_Typ);
  
--- 5899,5905 ----
           --  record parameter for an entry declaration. No master is created
           --  for such a type.
  
!          if Has_Task (Desig_Typ) then
              Build_Master_Entity (Ptr_Typ);
              Build_Master_Renaming (Ptr_Typ);
  
*************** package body Exp_Ch3 is
*** 5527,5538 ****
           --  Suppress the master creation for access types created for entry
           --  formal parameters (parameter block component types). Seems like
           --  suppression should be more general for compiler-generated types,
!          --  but testing Comes_From_Source, like the code above does, 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)
-            and then Tasking_Allowed
           then
              Build_Class_Wide_Master (Ptr_Typ);
           end if;
--- 5913,5923 ----
           --  Suppress the master creation for access types created for entry
           --  formal parameters (parameter block component types). Seems like
           --  suppression should be more general for compiler-generated types,
!          --  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_Class_Wide_Master (Ptr_Typ);
           end if;
*************** package body Exp_Ch3 is
*** 5579,5585 ****
           declare
              Comp  : Entity_Id;
              First : Boolean;
!             M_Id  : Entity_Id;
              Typ   : Entity_Id;
  
           begin
--- 5964,5970 ----
           declare
              Comp  : Entity_Id;
              First : Boolean;
!             M_Id  : Entity_Id := Empty;
              Typ   : Entity_Id;
  
           begin
*************** package body Exp_Ch3 is
*** 5597,5603 ****
                 Typ := Etype (Comp);
  
                 if Ekind (Typ) = E_Anonymous_Access_Type
!                  and then Has_Task (Available_View (Designated_Type (Typ)))
                   and then No (Master_Id (Typ))
                 then
                    --  Ensure that the record or array type have a _master
--- 5982,5989 ----
                 Typ := Etype (Comp);
  
                 if Ekind (Typ) = E_Anonymous_Access_Type
!                  and then Might_Have_Tasks
!                             (Available_View (Designated_Type (Typ)))
                   and then No (Master_Id (Typ))
                 then
                    --  Ensure that the record or array type have a _master
*************** package body Exp_Ch3 is
*** 5612,5617 ****
--- 5998,6004 ----
                    --  Reuse the same master to service any additional types
  
                    else
+                      pragma Assert (Present (M_Id));
                       Set_Master_Id (Typ, M_Id);
                    end if;
                 end if;
*************** package body Exp_Ch3 is
*** 6431,6439 ****
          and then Building_Static_Dispatch_Tables
          and then Is_Library_Level_Entity (Def_Id)
          and then Is_Library_Level_Tagged_Type (Base_Typ)
!         and then Ekind_In (Base_Typ, E_Record_Type,
!                                      E_Protected_Type,
!                                      E_Task_Type)
          and then not Has_Dispatch_Table (Base_Typ)
        then
           declare
--- 6818,6826 ----
          and then Building_Static_Dispatch_Tables
          and then Is_Library_Level_Entity (Def_Id)
          and then Is_Library_Level_Tagged_Type (Base_Typ)
!         and then Ekind (Base_Typ) in E_Record_Type
!                                    | E_Protected_Type
!                                    | E_Task_Type
          and then not Has_Dispatch_Table (Base_Typ)
        then
           declare
*************** package body Exp_Ch3 is
*** 6458,6472 ****
           Init_After := Make_Shared_Var_Procs (N);
        end if;
  
!       --  If tasks being declared, make sure we have an activation chain
        --  defined for the tasks (has no effect if we already have one), and
!       --  also that a Master variable is established and that the appropriate
!       --  enclosing construct is established as a task master.
  
!       if Has_Task (Typ) then
!          Build_Activation_Chain_Entity (N);
!          Build_Master_Entity (Def_Id);
!       end if;
  
        --  If No_Implicit_Heap_Allocations or No_Implicit_Task_Allocations
        --  restrictions are active then default-sized secondary stacks are
--- 6845,6856 ----
           Init_After := Make_Shared_Var_Procs (N);
        end if;
  
!       --  If tasks are being declared, make sure we have an activation chain
        --  defined for the tasks (has no effect if we already have one), and
!       --  also that a Master variable is established (and that the appropriate
!       --  enclosing construct is established as a task master).
  
!       Ensure_Activation_Chain_And_Master (N);
  
        --  If No_Implicit_Heap_Allocations or No_Implicit_Task_Allocations
        --  restrictions are active then default-sized secondary stacks are
*************** package body Exp_Ch3 is
*** 6483,6493 ****
        --  of the stacks in this scenario, the stacks of the first array are
        --  not counted.
  
!       if Has_Task (Typ)
          and then not Restriction_Active (No_Secondary_Stack)
          and then (Restriction_Active (No_Implicit_Heap_Allocations)
            or else Restriction_Active (No_Implicit_Task_Allocations))
!         and then not (Ekind_In (Ekind (Typ), E_Array_Type, E_Array_Subtype)
                        and then (Has_Init_Expression (N)))
        then
           declare
--- 6867,6877 ----
        --  of the stacks in this scenario, the stacks of the first array are
        --  not counted.
  
!       if Might_Have_Tasks (Typ)
          and then not Restriction_Active (No_Secondary_Stack)
          and then (Restriction_Active (No_Implicit_Heap_Allocations)
            or else Restriction_Active (No_Implicit_Task_Allocations))
!         and then not (Ekind (Typ) in E_Array_Type | E_Array_Subtype
                        and then (Has_Init_Expression (N)))
        then
           declare
*************** package body Exp_Ch3 is
*** 6609,6617 ****
              --  An aggregate that must be built in place is not resolved and
              --  expanded until the enclosing construct is expanded. This will
              --  happen when the aggregate is limited and the declared object
!             --  has a following address clause.
  
!             if Is_Limited_Type (Typ) and then not Analyzed (Expr) then
                 Resolve (Expr, Typ);
              end if;
  
--- 6993,7005 ----
              --  An aggregate that must be built in place is not resolved and
              --  expanded until the enclosing construct is expanded. This will
              --  happen when the aggregate is limited and the declared object
!             --  has a following address clause; it happens also when generating
!             --  C code for an aggregate that has an alignment or address clause
!             --  (see Analyze_Object_Declaration).
  
!             if (Is_Limited_Type (Typ) or else Modify_Tree_For_C)
!               and then not Analyzed (Expr)
!             then
                 Resolve (Expr, Typ);
              end if;
  
*************** package body Exp_Ch3 is
*** 7058,7069 ****
  
                 --  If we cannot convert the expression into a renaming we must
                 --  consider it an internal error because the backend does not
!                --  have support to handle it. Also, when a raise expression is
!                --  encountered we ignore it since it doesn't return a value and
!                --  thus cannot trigger a copy.
  
!                elsif Nkind (Original_Node (Expr_Q)) /= N_Raise_Expression then
!                   pragma Assert (False);
                    raise Program_Error;
                 end if;
  
--- 7446,7457 ----
  
                 --  If we cannot convert the expression into a renaming we must
                 --  consider it an internal error because the backend does not
!                --  have support to handle it. But avoid crashing on a raise
!                --  expression or conditional expression.
  
!                elsif Nkind (Original_Node (Expr_Q)) not in
!                  N_Raise_Expression | N_If_Expression | N_Case_Expression
!                then
                    raise Program_Error;
                 end if;
  
*************** package body Exp_Ch3 is
*** 7150,7172 ****
                          Chars =>
                            New_External_Name (Chars (Def_Id), Suffix => "L"));
  
-             Level_Expr : Node_Id;
              Level_Decl : Node_Id;
  
           begin
              Set_Ekind (Level, Ekind (Def_Id));
              Set_Etype (Level, Standard_Natural);
              Set_Scope (Level, Scope (Def_Id));
  
              if No (Expr) then
  
!                --  Set accessibility level of null
  
!                Level_Expr :=
!                  Make_Integer_Literal (Loc, Scope_Depth (Standard_Standard));
  
              else
!                Level_Expr := Dynamic_Accessibility_Level (Expr);
              end if;
  
              Level_Decl :=
--- 7538,7572 ----
                          Chars =>
                            New_External_Name (Chars (Def_Id), Suffix => "L"));
  
              Level_Decl : Node_Id;
+             Level_Expr : Node_Id;
  
           begin
              Set_Ekind (Level, Ekind (Def_Id));
              Set_Etype (Level, Standard_Natural);
              Set_Scope (Level, Scope (Def_Id));
  
+             --  Set accessibility level of null
+ 
              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
  
              else
!                Level_Expr := Accessibility_Level (Expr, Dynamic_Level);
              end if;
  
              Level_Decl :=
*************** package body Exp_Ch3 is
*** 7195,7205 ****
        if Comes_From_Source (Def_Id)
          and then Has_DIC (Typ)
          and then Present (DIC_Procedure (Typ))
          and then not Has_Init_Expression (N)
        then
           declare
!             DIC_Call : constant Node_Id := Build_DIC_Call (Loc, Def_Id, Typ);
! 
           begin
              if Present (Next_N) then
                 Insert_Before_And_Analyze (Next_N, DIC_Call);
--- 7595,7608 ----
        if Comes_From_Source (Def_Id)
          and then Has_DIC (Typ)
          and then Present (DIC_Procedure (Typ))
+         and then not Has_Null_Body (DIC_Procedure (Typ))
          and then not Has_Init_Expression (N)
+         and then not Is_Imported (Def_Id)
        then
           declare
!             DIC_Call : constant Node_Id :=
!                          Build_DIC_Call
!                            (Loc, New_Occurrence_Of (Def_Id, Loc), Typ);
           begin
              if Present (Next_N) then
                 Insert_Before_And_Analyze (Next_N, DIC_Call);
*************** package body Exp_Ch3 is
*** 7241,7249 ****
              --  debug information, even though it is defined by a generated
              --  renaming that does not come from source.
  
!             if Comes_From_Source (Defining_Identifier (N)) then
!                Set_Debug_Info_Needed (Defining_Identifier (N));
!             end if;
  
              --  Now call the routine to generate debug info for the renaming
  
--- 7644,7650 ----
              --  debug information, even though it is defined by a generated
              --  renaming that does not come from source.
  
!             Set_Debug_Info_Defining_Id (N);
  
              --  Now call the routine to generate debug info for the renaming
  
*************** package body Exp_Ch3 is
*** 7268,7277 ****
     -- Expand_N_Subtype_Indication --
     ---------------------------------
  
!    --  Add a check on the range of the subtype. The static case is partially
!    --  duplicated by Process_Range_Expr_In_Decl in Sem_Ch3, but we still need
!    --  to check here for the static case in order to avoid generating
!    --  extraneous expanded code. Also deal with validity checking.
  
     procedure Expand_N_Subtype_Indication (N : Node_Id) is
        Ran : constant Node_Id   := Range_Expression (Constraint (N));
--- 7669,7675 ----
     -- Expand_N_Subtype_Indication --
     ---------------------------------
  
!    --  Add a check on the range of the subtype and deal with validity checking
  
     procedure Expand_N_Subtype_Indication (N : Node_Id) is
        Ran : constant Node_Id   := Range_Expression (Constraint (N));
*************** package body Exp_Ch3 is
*** 7282,7288 ****
           Validity_Check_Range (Range_Expression (Constraint (N)));
        end if;
  
!       if Nkind_In (Parent (N), N_Constrained_Array_Definition, N_Slice) then
           Apply_Range_Check (Ran, Typ);
        end if;
     end Expand_N_Subtype_Indication;
--- 7680,7691 ----
           Validity_Check_Range (Range_Expression (Constraint (N)));
        end if;
  
!       --  Do not duplicate the work of Process_Range_Expr_In_Decl in Sem_Ch3
! 
!       if Nkind (Parent (N)) in N_Constrained_Array_Definition | N_Slice
!         and then Nkind (Parent (Parent (N))) not in
!                    N_Full_Type_Declaration | N_Object_Declaration
!       then
           Apply_Range_Check (Ran, Typ);
        end if;
     end Expand_N_Subtype_Indication;
*************** package body Exp_Ch3 is
*** 7714,7720 ****
  
        --  See GNAT Pool packages in the Run-Time for more details
  
!       elsif Ekind_In (Def_Id, E_Access_Type, E_General_Access_Type) then
           declare
              Loc        : constant Source_Ptr := Sloc (N);
              Desig_Type : constant Entity_Id  := Designated_Type (Def_Id);
--- 8117,8123 ----
  
        --  See GNAT Pool packages in the Run-Time for more details
  
!       elsif Ekind (Def_Id) in E_Access_Type | E_General_Access_Type then
           declare
              Loc        : constant Source_Ptr := Sloc (N);
              Desig_Type : constant Entity_Id  := Designated_Type (Def_Id);
*************** package body Exp_Ch3 is
*** 7833,7893 ****
  
              elsif Ada_Version >= Ada_2012
                and then Present (Associated_Storage_Pool (Def_Id))
! 
!               --  Omit this check for the case of a configurable run-time that
!               --  does not provide package System.Storage_Pools.Subpools.
! 
!               and then RTE_Available (RE_Root_Storage_Pool_With_Subpools)
              then
                 declare
                    Loc   : constant Source_Ptr := Sloc (Def_Id);
                    Pool  : constant Entity_Id :=
                              Associated_Storage_Pool (Def_Id);
-                   RSPWS : constant Entity_Id :=
-                             RTE (RE_Root_Storage_Pool_With_Subpools);
  
                 begin
                    --  It is known that the accessibility level of the access
                    --  type is deeper than that of the pool.
  
!                   if Type_Access_Level (Def_Id) > Object_Access_Level (Pool)
                      and then not Accessibility_Checks_Suppressed (Def_Id)
                      and then not Accessibility_Checks_Suppressed (Pool)
                    then
!                      --  Static case: the pool is known to be a descendant of
!                      --  Root_Storage_Pool_With_Subpools.
! 
!                      if Is_Ancestor (RSPWS, Etype (Pool)) then
!                         Error_Msg_N
!                           ("??subpool access type has deeper accessibility "
!                            & "level than pool", Def_Id);
! 
!                         Append_Freeze_Action (Def_Id,
!                           Make_Raise_Program_Error (Loc,
!                             Reason => PE_Accessibility_Check_Failed));
! 
!                      --  Dynamic case: when the pool is of a class-wide type,
!                      --  it may or may not support subpools depending on the
!                      --  path of derivation. Generate:
  
                       --    if Def_Id in RSPWS'Class then
                       --       raise Program_Error;
                       --    end if;
  
!                      elsif Is_Class_Wide_Type (Etype (Pool)) then
!                         Append_Freeze_Action (Def_Id,
!                           Make_If_Statement (Loc,
!                             Condition       =>
!                               Make_In (Loc,
!                                 Left_Opnd  => New_Occurrence_Of (Pool, Loc),
!                                 Right_Opnd =>
!                                   New_Occurrence_Of
!                                     (Class_Wide_Type (RSPWS), Loc)),
! 
!                             Then_Statements => New_List (
!                               Make_Raise_Program_Error (Loc,
!                                 Reason => PE_Accessibility_Check_Failed))));
!                      end if;
                    end if;
                 end;
              end if;
--- 8236,8280 ----
  
              elsif Ada_Version >= Ada_2012
                and then Present (Associated_Storage_Pool (Def_Id))
!               and then RTU_Loaded (System_Storage_Pools_Subpools)
              then
                 declare
                    Loc   : constant Source_Ptr := Sloc (Def_Id);
                    Pool  : constant Entity_Id :=
                              Associated_Storage_Pool (Def_Id);
  
                 begin
                    --  It is known that the accessibility level of the access
                    --  type is deeper than that of the pool.
  
!                   if Type_Access_Level (Def_Id)
!                        > Static_Accessibility_Level (Pool, Object_Decl_Level)
!                     and then Is_Class_Wide_Type (Etype (Pool))
                      and then not Accessibility_Checks_Suppressed (Def_Id)
                      and then not Accessibility_Checks_Suppressed (Pool)
                    then
!                      --  When the pool is of a class-wide type, it may or may
!                      --  not support subpools depending on the path of
!                      --  derivation. Generate:
  
                       --    if Def_Id in RSPWS'Class then
                       --       raise Program_Error;
                       --    end if;
  
!                      Append_Freeze_Action (Def_Id,
!                        Make_If_Statement (Loc,
!                          Condition       =>
!                            Make_In (Loc,
!                              Left_Opnd  => New_Occurrence_Of (Pool, Loc),
!                              Right_Opnd =>
!                                New_Occurrence_Of
!                                  (Class_Wide_Type
!                                    (RTE
!                                      (RE_Root_Storage_Pool_With_Subpools)),
!                                   Loc)),
!                          Then_Statements => New_List (
!                            Make_Raise_Program_Error (Loc,
!                              Reason => PE_Accessibility_Check_Failed))));
                    end if;
                 end;
              end if;
*************** package body Exp_Ch3 is
*** 7896,7903 ****
              --  Taft-amendment types, which potentially have controlled
              --  components), expand the list controller object that will store
              --  the dynamically allocated objects. Don't do this transformation
!             --  for expander-generated access types, but do it for types that
!             --  are the full view of types derived from other private types.
              --  Also suppress the list controller in the case of a designated
              --  type with convention Java, since this is used when binding to
              --  Java API specs, where there's no equivalent of a finalization
--- 8283,8291 ----
              --  Taft-amendment types, which potentially have controlled
              --  components), expand the list controller object that will store
              --  the dynamically allocated objects. Don't do this transformation
!             --  for expander-generated access types, except do it for types
!             --  that are the full view of types derived from other private
!             --  types and for access types used to implement indirect temps.
              --  Also suppress the list controller in the case of a designated
              --  type with convention Java, since this is used when binding to
              --  Java API specs, where there's no equivalent of a finalization
*************** package body Exp_Ch3 is
*** 7906,7911 ****
--- 8294,8301 ----
  
              if not Comes_From_Source (Def_Id)
                and then not Has_Private_Declaration (Def_Id)
+               and then not Old_Attr_Util.Indirect_Temps
+                              .Is_Access_Type_For_Indirect_Temp (Def_Id)
              then
                 null;
  
*************** package body Exp_Ch3 is
*** 7986,7998 ****
        Process_Pending_Access_Types (Def_Id);
        Freeze_Stream_Operations (N, Def_Id);
  
-       --  Generate the [spec and] body of the procedure tasked with the runtime
-       --  verification of pragma Default_Initial_Condition's expression.
- 
-       if Has_DIC (Def_Id) then
-          Build_DIC_Procedure_Body (Def_Id, For_Freeze => True);
-       end if;
- 
        --  Generate the [spec and] body of the invariant procedure tasked with
        --  the runtime verification of all invariants that pertain to the type.
        --  This includes invariants on the partial and full view, inherited
--- 8376,8381 ----
*************** package body Exp_Ch3 is
*** 8018,8031 ****
        --  subprograms, which may involve local declarations of local
        --  subtypes to which these checks do not apply.
  
!       elsif Has_Invariants (Def_Id) then
!          if Within_Internal_Subprogram
!            or else (Ekind (Current_Scope) = E_Function
!                      and then Is_Predicate_Function (Current_Scope))
!          then
!             null;
!          else
!             Build_Invariant_Procedure_Body (Def_Id);
           end if;
        end if;
  
--- 8401,8424 ----
        --  subprograms, which may involve local declarations of local
        --  subtypes to which these checks do not apply.
  
!       else
!          if Has_Invariants (Def_Id) then
!             if not Predicate_Check_In_Scope (Def_Id)
!               or else (Ekind (Current_Scope) = E_Function
!                         and then Is_Predicate_Function (Current_Scope))
!             then
!                null;
!             else
!                Build_Invariant_Procedure_Body (Def_Id);
!             end if;
!          end if;
! 
!          --  Generate the [spec and] body of the procedure tasked with the
!          --  run-time verification of pragma Default_Initial_Condition's
!          --  expression.
! 
!          if Has_DIC (Def_Id) then
!             Build_DIC_Procedure_Body (Def_Id);
           end if;
        end if;
  
*************** package body Exp_Ch3 is
*** 8280,8287 ****
                 Scal_Typ := Name_Unsigned_16;
              elsif Size_To_Use <= 32 then
                 Scal_Typ := Name_Unsigned_32;
!             else
                 Scal_Typ := Name_Unsigned_64;
              end if;
  
           --  Signed types
--- 8673,8682 ----
                 Scal_Typ := Name_Unsigned_16;
              elsif Size_To_Use <= 32 then
                 Scal_Typ := Name_Unsigned_32;
!             elsif Size_To_Use <= 64 then
                 Scal_Typ := Name_Unsigned_64;
+             else
+                Scal_Typ := Name_Unsigned_128;
              end if;
  
           --  Signed types
*************** package body Exp_Ch3 is
*** 8293,8300 ****
                 Scal_Typ := Name_Signed_16;
              elsif Size_To_Use <= 32 then
                 Scal_Typ := Name_Signed_32;
!             else
                 Scal_Typ := Name_Signed_64;
              end if;
           end if;
  
--- 8688,8697 ----
                 Scal_Typ := Name_Signed_16;
              elsif Size_To_Use <= 32 then
                 Scal_Typ := Name_Signed_32;
!             elsif Size_To_Use <= 64 then
                 Scal_Typ := Name_Signed_64;
+             else
+                Scal_Typ := Name_Signed_128;
              end if;
           end if;
  
*************** package body Exp_Ch3 is
*** 8348,8357 ****
           then
              Expr := Make_Integer_Literal (Loc, 2 ** Size_To_Use - 1);
  
!             --  Resolve as Unsigned_64, because the largest number we can
!             --  generate is out of range of universal integer.
  
!             Analyze_And_Resolve (Expr, RTE (RE_Unsigned_64));
  
           --  Case of signed types
  
--- 8745,8754 ----
           then
              Expr := Make_Integer_Literal (Loc, 2 ** Size_To_Use - 1);
  
!             --  Resolve as Long_Long_Long_Unsigned, because the largest number
!             --  we can generate is out of range of universal integer.
  
!             Analyze_And_Resolve (Expr, Standard_Long_Long_Long_Unsigned);
  
           --  Case of signed types
  
*************** package body Exp_Ch3 is
*** 8397,8403 ****
           --  If the initial value is null or an aggregate, qualify it with the
           --  underlying type in order to provide a proper context.
  
!          if Nkind_In (Expr, N_Aggregate, N_Null) then
              Expr :=
                Make_Qualified_Expression (Loc,
                  Subtype_Mark => New_Occurrence_Of (Under_Typ, Loc),
--- 8794,8800 ----
           --  If the initial value is null or an aggregate, qualify it with the
           --  underlying type in order to provide a proper context.
  
!          if Nkind (Expr) in N_Aggregate | N_Null then
              Expr :=
                Make_Qualified_Expression (Loc,
                  Subtype_Mark => New_Occurrence_Of (Under_Typ, Loc),
*************** package body Exp_Ch3 is
*** 8438,8448 ****
              Size_To_Use := Size;
           end if;
  
!          --  The maximum size to use is 64 bits. This will create values of
!          --  type Unsigned_64 and the range must fit this type.
  
!          if Size_To_Use /= No_Uint and then Size_To_Use > Uint_64 then
!             Size_To_Use := Uint_64;
           end if;
  
           if Normalize_Scalars and then not IV_Attribute then
--- 8835,8848 ----
              Size_To_Use := Size;
           end if;
  
!          --  The maximum size to use is System_Max_Integer_Size bits. This
!          --  will create values of type Long_Long_Long_Unsigned and the range
!          --  must fit this type.
  
!          if Size_To_Use /= No_Uint
!            and then Size_To_Use > System_Max_Integer_Size
!          then
!             Size_To_Use := UI_From_Int (System_Max_Integer_Size);
           end if;
  
           if Normalize_Scalars and then not IV_Attribute then
*************** package body Exp_Ch3 is
*** 8624,8636 ****
  
                 if Warning_Needed then
                    Error_Msg_N
!                     ("Objects of the type cannot be initialized statically "
                       & "by default??", Parent (E));
                 end if;
              end if;
  
           else
!             Error_Msg_N ("Object cannot be initialized statically??", E);
           end if;
        end if;
     end Initialization_Warning;
--- 9024,9036 ----
  
                 if Warning_Needed then
                    Error_Msg_N
!                     ("objects of the type cannot be initialized statically "
                       & "by default??", Parent (E));
                 end if;
              end if;
  
           else
!             Error_Msg_N ("object cannot be initialized statically??", E);
           end if;
        end if;
     end Initialization_Warning;
*************** package body Exp_Ch3 is
*** 8639,8645 ****
     -- Init_Formals --
     ------------------
  
!    function Init_Formals (Typ : Entity_Id) return List_Id is
        Loc        : constant Source_Ptr := Sloc (Typ);
        Unc_Arr    : constant Boolean :=
                       Is_Array_Type (Typ) and then not Is_Constrained (Typ);
--- 9039,9046 ----
     -- Init_Formals --
     ------------------
  
!    function Init_Formals (Typ : Entity_Id; Proc_Id : Entity_Id) return List_Id
!    is
        Loc        : constant Source_Ptr := Sloc (Typ);
        Unc_Arr    : constant Boolean :=
                       Is_Array_Type (Typ) and then not Is_Constrained (Typ);
*************** package body Exp_Ch3 is
*** 8648,8656 ****
                         or else (Is_Record_Type (Typ)
                                   and then Is_Protected_Record_Type (Typ));
        With_Task  : constant Boolean :=
!                      Has_Task (Typ)
!                        or else (Is_Record_Type (Typ)
!                                  and then Is_Task_Record_Type (Typ));
        Formals : List_Id;
  
     begin
--- 9049,9059 ----
                         or else (Is_Record_Type (Typ)
                                   and then Is_Protected_Record_Type (Typ));
        With_Task  : constant Boolean :=
!                      not Global_No_Tasking
!                        and then
!                      (Has_Task (Typ)
!                         or else (Is_Record_Type (Typ)
!                                    and then Is_Task_Record_Type (Typ)));
        Formals : List_Id;
  
     begin
*************** package body Exp_Ch3 is
*** 8679,8684 ****
--- 9082,9089 ----
               Parameter_Type      =>
                 New_Occurrence_Of (RTE (RE_Master_Id), Loc)));
  
+          Set_Has_Master_Entity (Proc_Id);
+ 
           --  Add _Chain (not done for sequential elaboration policy, see
           --  comment for Create_Restricted_Task_Sequential in s-tarest.ads).
  
*************** package body Exp_Ch3 is
*** 9013,9018 ****
--- 9418,9425 ----
                    end loop;
  
                    pragma Assert (Present (Comp));
+ 
+                   --  Move this check to sem???
                    Error_Msg_Node_2 := Comp;
                    Error_Msg_NE
                      ("parent type & with dynamic component & cannot be parent"
*************** package body Exp_Ch3 is
*** 9176,9181 ****
--- 9583,9613 ----
               (Is_Null_Extension (Etype (Subp))
                 and then Etype (Alias (Subp)) /= Etype (Subp))
           then
+             --  If there is a non-overloadable homonym in the current
+             --  scope, the implicit declaration remains invisible.
+             --  We check the current entity with the same name, or its
+             --  homonym in case the derivation takes place after the
+             --  hiding object declaration.
+ 
+             if Present (Current_Entity (Subp)) then
+                declare
+                   Curr : constant Entity_Id := Current_Entity (Subp);
+                   Prev : constant Entity_Id := Homonym (Curr);
+                begin
+                   if (Comes_From_Source (Curr)
+                     and then Scope (Curr) = Current_Scope
+                     and then not Is_Overloadable (Curr))
+                   or else
+                     (Present (Prev)
+                       and then Comes_From_Source (Prev)
+                       and then Scope (Prev) = Current_Scope
+                       and then not Is_Overloadable (Prev))
+                   then
+                      goto Next_Prim;
+                   end if;
+                end;
+             end if;
+ 
              Formal_List := No_List;
              Formal := First_Formal (Subp);
  
*************** package body Exp_Ch3 is
*** 9559,9568 ****
                 begin
                    --  Build equality code with a user-defined operator, if
                    --  available, and with the predefined "=" otherwise. For
!                   --  compatibility with older Ada versions, and preserve the
!                   --  workings of some ASIS tools, we also use the predefined
!                   --  operation if the component-type equality is abstract,
!                   --  rather than raising Program_Error.
  
                    if Ada_Version < Ada_2012 then
                       Next_Test := Make_Op_Ne (Loc, Lhs, Rhs);
--- 9991,9999 ----
                 begin
                    --  Build equality code with a user-defined operator, if
                    --  available, and with the predefined "=" otherwise. For
!                   --  compatibility with older Ada versions, we also use the
!                   --  predefined operation if the component-type equality is
!                   --  abstract, rather than raising Program_Error.
  
                    if Ada_Version < Ada_2012 then
                       Next_Test := Make_Op_Ne (Loc, Lhs, Rhs);
*************** package body Exp_Ch3 is
*** 9901,9906 ****
--- 10332,10339 ----
        --  Set to True if Tag_Typ has a primitive that renames the predefined
        --  equality operator. Used to implement (RM 8-5-4(8)).
  
+       use Exp_Put_Image;
+ 
     --  Start of processing for Make_Predefined_Primitive_Specs
  
     begin
*************** package body Exp_Ch3 is
*** 9918,9923 ****
--- 10351,10367 ----
  
          Ret_Type => Standard_Long_Long_Integer));
  
+       --  Spec of Put_Image
+ 
+       if Enable_Put_Image (Tag_Typ)
+         and then No (TSS (Tag_Typ, TSS_Put_Image))
+       then
+          Append_To (Res, Predef_Spec_Or_Body (Loc,
+            Tag_Typ => Tag_Typ,
+            Name    => Make_TSS_Name (Tag_Typ, TSS_Put_Image),
+            Profile => Build_Put_Image_Profile (Loc, Tag_Typ)));
+       end if;
+ 
        --  Specs for dispatching stream attributes
  
        declare
*************** package body Exp_Ch3 is
*** 10216,10230 ****
        New_Ref  : Node_Id;
  
     begin
!       --  This expansion activity is called during analysis, but cannot
!       --  be applied in ASIS mode when other expansion is disabled.
  
        if Is_Tagged_Type (Typ)
         and then not Is_Class_Wide_Type (Typ)
         and then not Is_CPP_Class (Typ)
         and then Tagged_Type_Expansion
         and then Nkind (Expr) /= N_Aggregate
-        and then not ASIS_Mode
         and then (Nkind (Expr) /= N_Qualified_Expression
                    or else Nkind (Expression (Expr)) /= N_Aggregate)
        then
--- 10660,10672 ----
        New_Ref  : Node_Id;
  
     begin
!       --  This expansion activity is called during analysis.
  
        if Is_Tagged_Type (Typ)
         and then not Is_Class_Wide_Type (Typ)
         and then not Is_CPP_Class (Typ)
         and then Tagged_Type_Expansion
         and then Nkind (Expr) /= N_Aggregate
         and then (Nkind (Expr) /= N_Qualified_Expression
                    or else Nkind (Expression (Expr)) /= N_Aggregate)
        then
*************** package body Exp_Ch3 is
*** 10429,10434 ****
--- 10871,10878 ----
  
        pragma Warnings (Off, Ent);
  
+       use Exp_Put_Image;
+ 
     begin
        pragma Assert (not Is_Interface (Tag_Typ));
  
*************** package body Exp_Ch3 is
*** 10511,10516 ****
--- 10955,10969 ----
  
        Append_To (Res, Decl);
  
+       --  Body of Put_Image
+ 
+       if Enable_Put_Image (Tag_Typ)
+         and then No (TSS (Tag_Typ, TSS_Put_Image))
+       then
+          Build_Record_Put_Image_Procedure (Loc, Tag_Typ, Decl, Ent);
+          Append_To (Res, Decl);
+       end if;
+ 
        --  Bodies for Dispatching stream IO routines. We need these only for
        --  non-limited types (in the limited case there is no dispatching).
        --  We also skip them if dispatching or finalization are not available
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch3.ads gcc-11.1.0/gcc/ada/exp_ch3.ads
*** gcc-10.3.0/gcc/ada/exp_ch3.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch3.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Ch3 is
*** 46,51 ****
--- 46,61 ----
     procedure Expand_Record_Extension (T : Entity_Id; Def : Node_Id);
     --  Add a field _parent in the extension part of the record
  
+    procedure Build_Access_Subprogram_Wrapper_Body
+      (Decl     : Node_Id;
+       New_Decl : Node_Id);
+    --  Build the wrapper body, which holds the indirect call through an access-
+    --  to-subprogram, and whose expansion incorporates the contracts of the
+    --  access type declaration. Called from Build_Access_Subprogram_Wrapper.
+    --  Building the wrapper is done during analysis to perform proper semantic
+    --  checks on the relevant aspects. The wrapper body could be simplified to
+    --  a null body when expansion is disabled ???
+ 
     procedure Build_Discr_Checking_Funcs (N : Node_Id);
     --  Builds function which checks whether the component name is consistent
     --  with the current discriminants. N is the full type declaration node,
*************** package Exp_Ch3 is
*** 91,96 ****
--- 101,113 ----
     --  Build the body of the equality function Body_Id for the untagged variant
     --  record Typ with the given parameters specification list.
  
+    procedure Ensure_Activation_Chain_And_Master (Obj_Decl : Node_Id);
+    --  If tasks are being declared (or might be declared) by the given object
+    --  declaration then ensure to have an activation chain defined for the
+    --  tasks (has no effect if we already have one), and also that a Master
+    --  variable is established (and that the appropriate enclosing construct
+    --  is established as a task master).
+ 
     function Freeze_Type (N : Node_Id) return Boolean;
     --  This function executes the freezing actions associated with the given
     --  freeze type node N and returns True if the node is to be deleted. We
*************** package Exp_Ch3 is
*** 118,123 ****
--- 135,145 ----
     --  type is valid only when Normalize_Scalars or Initialize_Scalars is
     --  active, or if N is the node for a 'Invalid_Value attribute node.
  
+    function Init_Proc_Level_Formal (Proc : Entity_Id) return Entity_Id;
+    --  Fetch the extra formal from an initalization procedure "proc"
+    --  corresponding to the level of the object being initialized. When none
+    --  is present Empty is returned.
+ 
     procedure Init_Secondary_Tags
       (Typ            : Entity_Id;
        Target         : Node_Id;
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch4.adb gcc-11.1.0/gcc/ada/exp_ch4.adb
*** gcc-10.3.0/gcc/ada/exp_ch4.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch4.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Elists;   use Elists;
*** 31,37 ****
  with Errout;   use Errout;
  with Exp_Aggr; use Exp_Aggr;
  with Exp_Atag; use Exp_Atag;
- with Exp_Ch2;  use Exp_Ch2;
  with Exp_Ch3;  use Exp_Ch3;
  with Exp_Ch6;  use Exp_Ch6;
  with Exp_Ch7;  use Exp_Ch7;
--- 31,36 ----
*************** package body Exp_Ch4 is
*** 99,105 ****
  
     procedure Expand_Allocator_Expression (N : Node_Id);
     --  Subsidiary to Expand_N_Allocator, for the case when the expression
!    --  is a qualified expression or an aggregate.
  
     procedure Expand_Array_Comparison (N : Node_Id);
     --  This routine handles expansion of the comparison operators (N_Op_Lt,
--- 98,104 ----
  
     procedure Expand_Allocator_Expression (N : Node_Id);
     --  Subsidiary to Expand_N_Allocator, for the case when the expression
!    --  is a qualified expression.
  
     procedure Expand_Array_Comparison (N : Node_Id);
     --  This routine handles expansion of the comparison operators (N_Op_Lt,
*************** package body Exp_Ch4 is
*** 224,234 ****
     --  skipped if the operation is done in Bignum mode but that's fine, since
     --  the Bignum call takes care of everything.
  
     procedure Optimize_Length_Comparison (N : Node_Id);
     --  Given an expression, if it is of the form X'Length op N (or the other
!    --  way round), where N is known at compile time to be 0 or 1, and X is a
!    --  simple entity, and op is a comparison operator, optimizes it into a
!    --  comparison of First and Last.
  
     procedure Process_If_Case_Statements (N : Node_Id; Stmts : List_Id);
     --  Inspect and process statement list Stmt of if or case expression N for
--- 223,239 ----
     --  skipped if the operation is done in Bignum mode but that's fine, since
     --  the Bignum call takes care of everything.
  
+    procedure Narrow_Large_Operation (N : Node_Id);
+    --  Try to compute the result of a large operation in a narrower type than
+    --  its nominal type. This is mainly aimed at getting rid of operations done
+    --  in Universal_Integer that can be generated for attributes.
+ 
     procedure Optimize_Length_Comparison (N : Node_Id);
     --  Given an expression, if it is of the form X'Length op N (or the other
!    --  way round), where N is known at compile time to be 0 or 1, or something
!    --  else where the value is known to be nonnegative and in the 32-bit range,
!    --  and X is a simple entity, and op is a comparison operator, optimizes it
!    --  into a comparison of X'First and X'Last.
  
     procedure Process_If_Case_Statements (N : Node_Id; Stmts : List_Id);
     --  Inspect and process statement list Stmt of if or case expression N for
*************** package body Exp_Ch4 is
*** 780,789 ****
  
        --  Local variables
  
-       Aggr_In_Place : constant Boolean   := Is_Delayed_Aggregate (Exp);
        Indic         : constant Node_Id   := Subtype_Mark (Expression (N));
        T             : constant Entity_Id := Entity (Indic);
        Adj_Call      : Node_Id;
        Node          : Node_Id;
        Tag_Assign    : Node_Id;
        Temp          : Entity_Id;
--- 785,794 ----
  
        --  Local variables
  
        Indic         : constant Node_Id   := Subtype_Mark (Expression (N));
        T             : constant Entity_Id := Entity (Indic);
        Adj_Call      : Node_Id;
+       Aggr_In_Place : Boolean;
        Node          : Node_Id;
        Tag_Assign    : Node_Id;
        Temp          : Entity_Id;
*************** package body Exp_Ch4 is
*** 807,841 ****
           return;
        end if;
  
!       --  In the case of an Ada 2012 allocator whose initial value comes from a
!       --  function call, pass "the accessibility level determined by the point
!       --  of call" (AI05-0234) to the function. Conceptually, this belongs in
!       --  Expand_Call but it couldn't be done there (because the Etype of the
!       --  allocator wasn't set then) so we generate the parameter here. See
!       --  the Boolean variable Defer in (a block within) Expand_Call.
  
!       if Ada_Version >= Ada_2012 and then Nkind (Exp) = N_Function_Call then
!          declare
!             Subp : Entity_Id;
  
!          begin
!             if Nkind (Name (Exp)) = N_Explicit_Dereference then
!                Subp := Designated_Type (Etype (Prefix (Name (Exp))));
!             else
!                Subp := Entity (Name (Exp));
!             end if;
  
!             Subp := Ultimate_Alias (Subp);
  
!             if Present (Extra_Accessibility_Of_Result (Subp)) then
!                Add_Extra_Actual_To_Call
!                  (Subprogram_Call => Exp,
!                   Extra_Formal    => Extra_Accessibility_Of_Result (Subp),
!                   Extra_Actual    => Dynamic_Accessibility_Level (PtrT));
!             end if;
!          end;
        end if;
  
        --  Case of tagged type or type requiring finalization
  
        if Is_Tagged_Type (T) or else Needs_Finalization (T) then
--- 812,888 ----
           return;
        end if;
  
!       --  If we have:
!       --    type A is access T1;
!       --    X : A := new T2'(...);
!       --  T1 and T2 can be different subtypes, and we might need to check
!       --  both constraints. First check against the type of the qualified
!       --  expression.
  
!       Apply_Constraint_Check (Exp, T, No_Sliding => True);
  
!       Apply_Predicate_Check (Exp, T);
  
!       --  Check that any anonymous access discriminants are suitable
!       --  for use in an allocator.
  
!       --  Note: This check is performed here instead of during analysis so that
!       --  we can check against the fully resolved etype of Exp.
! 
!       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
!          --  an instance.
! 
!          if In_Instance then
!             Insert_Action (N,
!               Make_Raise_Program_Error (Loc,
!                 Reason => PE_Accessibility_Check_Failed));
! 
!             Error_Msg_N ("anonymous access discriminant is too deep for use"
!                          & " in allocator<<", N);
!             Error_Msg_N ("\Program_Error [<<", N);
! 
!          --  Otherwise, make the error static
! 
!          else
!             Error_Msg_N ("anonymous access discriminant is too deep for use"
!                           & " in allocator", N);
!          end if;
!       end if;
! 
!       if Do_Range_Check (Exp) then
!          Generate_Range_Check (Exp, T, CE_Range_Check_Failed);
!       end if;
! 
!       --  A check is also needed in cases where the designated subtype is
!       --  constrained and differs from the subtype given in the qualified
!       --  expression. Note that the check on the qualified expression does
!       --  not allow sliding, but this check does (a relaxation from Ada 83).
! 
!       if Is_Constrained (DesigT)
!         and then not Subtypes_Statically_Match (T, DesigT)
!       then
!          Apply_Constraint_Check (Exp, DesigT, No_Sliding => False);
! 
!          Apply_Predicate_Check (Exp, DesigT);
! 
!          if Do_Range_Check (Exp) then
!             Generate_Range_Check (Exp, DesigT, CE_Range_Check_Failed);
!          end if;
        end if;
  
+       if Nkind (Exp) = N_Raise_Constraint_Error then
+          Rewrite (N, New_Copy (Exp));
+          Set_Etype (N, PtrT);
+          return;
+       end if;
+ 
+       Aggr_In_Place := Is_Delayed_Aggregate (Exp);
+ 
        --  Case of tagged type or type requiring finalization
  
        if Is_Tagged_Type (T) or else Needs_Finalization (T) then
*************** package body Exp_Ch4 is
*** 936,943 ****
                 --  the original allocator node. This is for proper handling of
                 --  restriction No_Implicit_Heap_Allocations.
  
!                Set_Comes_From_Source
!                  (Expression (Temp_Decl), Comes_From_Source (N));
  
                 Set_No_Initialization (Expression (Temp_Decl));
                 Insert_Action (N, Temp_Decl);
--- 983,990 ----
                 --  the original allocator node. This is for proper handling of
                 --  restriction No_Implicit_Heap_Allocations.
  
!                Preserve_Comes_From_Source
!                  (Expression (Temp_Decl), N);
  
                 Set_No_Initialization (Expression (Temp_Decl));
                 Insert_Action (N, Temp_Decl);
*************** package body Exp_Ch4 is
*** 1073,1079 ****
  
           elsif Is_Tagged_Type (T) and then not Is_Class_Wide_Type (T) then
              TagT := T;
!             TagR := New_Occurrence_Of (Temp, Loc);
  
           elsif Is_Private_Type (T)
             and then Is_Tagged_Type (Underlying_Type (T))
--- 1120,1128 ----
  
           elsif Is_Tagged_Type (T) and then not Is_Class_Wide_Type (T) then
              TagT := T;
!             TagR :=
!               Make_Explicit_Dereference (Loc,
!                 Prefix => New_Occurrence_Of (Temp, Loc));
  
           elsif Is_Private_Type (T)
             and then Is_Tagged_Type (Underlying_Type (T))
*************** package body Exp_Ch4 is
*** 1215,1256 ****
        else
           Build_Allocate_Deallocate_Proc (N, True);
  
-          --  If we have:
-          --    type A is access T1;
-          --    X : A := new T2'(...);
-          --  T1 and T2 can be different subtypes, and we might need to check
-          --  both constraints. First check against the type of the qualified
-          --  expression.
- 
-          Apply_Constraint_Check (Exp, T, No_Sliding => True);
- 
-          if Do_Range_Check (Exp) then
-             Generate_Range_Check (Exp, DesigT, CE_Range_Check_Failed);
-          end if;
- 
-          --  A check is also needed in cases where the designated subtype is
-          --  constrained and differs from the subtype given in the qualified
-          --  expression. Note that the check on the qualified expression does
-          --  not allow sliding, but this check does (a relaxation from Ada 83).
- 
-          if Is_Constrained (DesigT)
-            and then not Subtypes_Statically_Match (T, DesigT)
-          then
-             Apply_Constraint_Check
-               (Exp, DesigT, No_Sliding => False);
- 
-             if Do_Range_Check (Exp) then
-                Generate_Range_Check (Exp, DesigT, CE_Range_Check_Failed);
-             end if;
-          end if;
- 
           --  For an access to unconstrained packed array, GIGI needs to see an
           --  expression with a constrained subtype in order to compute the
           --  proper size for the allocator.
  
!          if Is_Array_Type (T)
             and then not Is_Constrained (T)
-            and then Is_Packed (T)
           then
              declare
                 ConstrT      : constant Entity_Id := Make_Temporary (Loc, 'A');
--- 1264,1275 ----
        else
           Build_Allocate_Deallocate_Proc (N, True);
  
           --  For an access to unconstrained packed array, GIGI needs to see an
           --  expression with a constrained subtype in order to compute the
           --  proper size for the allocator.
  
!          if Is_Packed_Array (T)
             and then not Is_Constrained (T)
           then
              declare
                 ConstrT      : constant Entity_Id := Make_Temporary (Loc, 'A');
*************** package body Exp_Ch4 is
*** 1359,1374 ****
        --  except that we avoid this for targets for which are not addressable
        --  by bytes.
  
!       if not Is_Bit_Packed_Array (Typ1)
!         and then Byte_Addressable
!       then
           --  The call we generate is:
  
           --  Compare_Array_xn[_Unaligned]
           --    (left'address, right'address, left'length, right'length) <op> 0
  
           --  x = U for unsigned, S for signed
!          --  n = 8,16,32,64 for component size
           --  Add _Unaligned if length < 4 and component size is 8.
           --  <op> is the standard comparison operator
  
--- 1378,1391 ----
        --  except that we avoid this for targets for which are not addressable
        --  by bytes.
  
!       if not Is_Bit_Packed_Array (Typ1) and then Byte_Addressable then
           --  The call we generate is:
  
           --  Compare_Array_xn[_Unaligned]
           --    (left'address, right'address, left'length, right'length) <op> 0
  
           --  x = U for unsigned, S for signed
!          --  n = 8,16,32,64,128 for component size
           --  Add _Unaligned if length < 4 and component size is 8.
           --  <op> is the standard comparison operator
  
*************** package body Exp_Ch4 is
*** 1405,1416 ****
                 Comp := RE_Compare_Array_S32;
              end if;
  
!          else pragma Assert (Component_Size (Typ1) = 64);
              if Is_Unsigned_Type (Ctyp) then
                 Comp := RE_Compare_Array_U64;
              else
                 Comp := RE_Compare_Array_S64;
              end if;
           end if;
  
           if RTE_Available (Comp) then
--- 1422,1440 ----
                 Comp := RE_Compare_Array_S32;
              end if;
  
!          elsif Component_Size (Typ1) = 64 then
              if Is_Unsigned_Type (Ctyp) then
                 Comp := RE_Compare_Array_U64;
              else
                 Comp := RE_Compare_Array_S64;
              end if;
+ 
+          else pragma Assert (Component_Size (Typ1) = 128);
+             if Is_Unsigned_Type (Ctyp) then
+                Comp := RE_Compare_Array_U128;
+             else
+                Comp := RE_Compare_Array_S128;
+             end if;
           end if;
  
           if RTE_Available (Comp) then
*************** package body Exp_Ch4 is
*** 2006,2039 ****
              Ctyp         : constant Entity_Id := Component_Type (Ltyp);
              L, R         : Node_Id;
              TestL, TestH : Node_Id;
-             Index_List   : List_Id;
  
           begin
-             Index_List := New_List (New_Copy_Tree (Low_Bound (First_Idx)));
- 
              L :=
                Make_Indexed_Component (Loc,
                  Prefix      => New_Copy_Tree (New_Lhs),
!                 Expressions => Index_List);
  
              R :=
                Make_Indexed_Component (Loc,
                  Prefix      => New_Copy_Tree (New_Rhs),
!                 Expressions => Index_List);
  
              TestL := Expand_Composite_Equality (Nod, Ctyp, L, R, Bodies);
  
-             Index_List := New_List (New_Copy_Tree (High_Bound (First_Idx)));
- 
              L :=
                Make_Indexed_Component (Loc,
                  Prefix      => New_Lhs,
!                 Expressions => Index_List);
  
              R :=
                Make_Indexed_Component (Loc,
                  Prefix      => New_Rhs,
!                 Expressions => Index_List);
  
              TestH := Expand_Composite_Equality (Nod, Ctyp, L, R, Bodies);
  
--- 2030,2062 ----
              Ctyp         : constant Entity_Id := Component_Type (Ltyp);
              L, R         : Node_Id;
              TestL, TestH : Node_Id;
  
           begin
              L :=
                Make_Indexed_Component (Loc,
                  Prefix      => New_Copy_Tree (New_Lhs),
!                 Expressions =>
!                   New_List (New_Copy_Tree (Low_Bound (First_Idx))));
  
              R :=
                Make_Indexed_Component (Loc,
                  Prefix      => New_Copy_Tree (New_Rhs),
!                 Expressions =>
!                   New_List (New_Copy_Tree (Low_Bound (First_Idx))));
  
              TestL := Expand_Composite_Equality (Nod, Ctyp, L, R, Bodies);
  
              L :=
                Make_Indexed_Component (Loc,
                  Prefix      => New_Lhs,
!                 Expressions =>
!                   New_List (New_Copy_Tree (High_Bound (First_Idx))));
  
              R :=
                Make_Indexed_Component (Loc,
                  Prefix      => New_Rhs,
!                 Expressions =>
!                   New_List (New_Copy_Tree (High_Bound (First_Idx))));
  
              TestH := Expand_Composite_Equality (Nod, Ctyp, L, R, Bodies);
  
*************** package body Exp_Ch4 is
*** 2160,2180 ****
           then
              return;
           else
- 
              Func_Body := Make_Boolean_Array_Op (Etype (L), N);
              Func_Name := Defining_Unit_Name (Specification (Func_Body));
              Insert_Action (N, Func_Body);
  
              --  Now rewrite the expression with a call
  
!             Rewrite (N,
!               Make_Function_Call (Loc,
!                 Name                   => New_Occurrence_Of (Func_Name, Loc),
!                 Parameter_Associations =>
!                   New_List (
!                     L,
!                     Make_Type_Conversion
!                       (Loc, New_Occurrence_Of (Etype (L), Loc), R))));
  
              Analyze_And_Resolve (N, Typ);
           end if;
--- 2183,2236 ----
           then
              return;
           else
              Func_Body := Make_Boolean_Array_Op (Etype (L), N);
              Func_Name := Defining_Unit_Name (Specification (Func_Body));
              Insert_Action (N, Func_Body);
  
              --  Now rewrite the expression with a call
  
!             if Transform_Function_Array then
!                declare
!                   Temp_Id : constant Entity_Id := Make_Temporary (Loc, 'T');
!                   Call    : Node_Id;
!                   Decl    : Node_Id;
! 
!                begin
!                   --  Generate:
!                   --    Temp : ...;
! 
!                   Decl :=
!                     Make_Object_Declaration (Loc,
!                       Defining_Identifier => Temp_Id,
!                       Object_Definition   =>
!                         New_Occurrence_Of (Etype (L), Loc));
! 
!                   --  Generate:
!                   --    Proc_Call (L, R, Temp);
! 
!                   Call :=
!                     Make_Procedure_Call_Statement (Loc,
!                       Name => New_Occurrence_Of (Func_Name, Loc),
!                       Parameter_Associations =>
!                         New_List (
!                           L,
!                           Make_Type_Conversion
!                             (Loc, New_Occurrence_Of (Etype (L), Loc), R),
!                           New_Occurrence_Of (Temp_Id, Loc)));
! 
!                   Insert_Actions (Parent (N), New_List (Decl, Call));
!                   Rewrite (N, New_Occurrence_Of (Temp_Id, Loc));
!                end;
!             else
!                Rewrite (N,
!                  Make_Function_Call (Loc,
!                    Name => New_Occurrence_Of (Func_Name, Loc),
!                    Parameter_Associations =>
!                      New_List (
!                        L,
!                        Make_Type_Conversion
!                          (Loc, New_Occurrence_Of (Etype (L), Loc), R))));
!             end if;
  
              Analyze_And_Resolve (N, Typ);
           end if;
*************** package body Exp_Ch4 is
*** 2814,2820 ****
        --  to just do a Copy_Node to get an appropriate copy. The extra zeroth
        --  entry always is set to zero. The length is of type Artyp.
  
!       Low_Bound : Node_Id;
        --  A tree node representing the low bound of the result (of type Ityp).
        --  This is either an integer literal node, or an identifier reference to
        --  a constant entity initialized to the appropriate value.
--- 2870,2876 ----
        --  to just do a Copy_Node to get an appropriate copy. The extra zeroth
        --  entry always is set to zero. The length is of type Artyp.
  
!       Low_Bound : Node_Id := Empty;
        --  A tree node representing the low bound of the result (of type Ityp).
        --  This is either an integer literal node, or an identifier reference to
        --  a constant entity initialized to the appropriate value.
*************** package body Exp_Ch4 is
*** 2834,2840 ****
        High_Bound : Node_Id := Empty;
        --  A tree node representing the high bound of the result (of type Ityp)
  
!       Result : Node_Id;
        --  Result of the concatenation (of type Ityp)
  
        Actions : constant List_Id := New_List;
--- 2890,2896 ----
        High_Bound : Node_Id := Empty;
        --  A tree node representing the high bound of the result (of type Ityp)
  
!       Result : Node_Id := Empty;
        --  Result of the concatenation (of type Ityp)
  
        Actions : constant List_Id := New_List;
*************** package body Exp_Ch4 is
*** 2947,2958 ****
  
        --  Local Declarations
  
!       Opnd_Typ : Entity_Id;
!       Ent      : Entity_Id;
!       Len      : Uint;
!       J        : Nat;
!       Clen     : Node_Id;
!       Set      : Boolean;
  
     --  Start of processing for Expand_Concatenate
  
--- 3003,3015 ----
  
        --  Local Declarations
  
!       Opnd_Typ   : Entity_Id;
!       Subtyp_Ind : Entity_Id;
!       Ent        : Entity_Id;
!       Len        : Uint;
!       J          : Nat;
!       Clen       : Node_Id;
!       Set        : Boolean;
  
     --  Start of processing for Expand_Concatenate
  
*************** package body Exp_Ch4 is
*** 2990,3012 ****
  
        --  For modular types, we use a 32-bit modular type for types whose size
        --  is in the range 1-31 bits. For 32-bit unsigned types, we use the
!       --  identity type, and for larger unsigned types we use 64-bits.
  
        elsif Is_Modular_Integer_Type (Ityp) then
!          if RM_Size (Ityp) < RM_Size (Standard_Unsigned) then
              Artyp := Standard_Unsigned;
!          elsif RM_Size (Ityp) = RM_Size (Standard_Unsigned) then
              Artyp := Ityp;
           else
!             Artyp := RTE (RE_Long_Long_Unsigned);
           end if;
  
        --  Similar treatment for signed types
  
        else
!          if RM_Size (Ityp) < RM_Size (Standard_Integer) then
              Artyp := Standard_Integer;
!          elsif RM_Size (Ityp) = RM_Size (Standard_Integer) then
              Artyp := Ityp;
           else
              Artyp := Standard_Long_Long_Integer;
--- 3047,3069 ----
  
        --  For modular types, we use a 32-bit modular type for types whose size
        --  is in the range 1-31 bits. For 32-bit unsigned types, we use the
!       --  identity type, and for larger unsigned types we use a 64-bit type.
  
        elsif Is_Modular_Integer_Type (Ityp) then
!          if RM_Size (Ityp) < Standard_Integer_Size then
              Artyp := Standard_Unsigned;
!          elsif RM_Size (Ityp) = Standard_Integer_Size then
              Artyp := Ityp;
           else
!             Artyp := Standard_Long_Long_Unsigned;
           end if;
  
        --  Similar treatment for signed types
  
        else
!          if RM_Size (Ityp) < Standard_Integer_Size then
              Artyp := Standard_Integer;
!          elsif RM_Size (Ityp) = Standard_Integer_Size then
              Artyp := Ityp;
           else
              Artyp := Standard_Long_Long_Integer;
*************** package body Exp_Ch4 is
*** 3365,3370 ****
--- 3422,3429 ----
           end;
        end if;
  
+       pragma Assert (Present (Low_Bound));
+ 
        --  Now we can safely compute the upper bound, normally
        --  Low_Bound + Length - 1.
  
*************** package body Exp_Ch4 is
*** 3423,3450 ****
        --  Initialize_Scalars is enabled. Also since this is the actual result
        --  entity, we make sure we have debug information for the result.
  
        Ent := Make_Temporary (Loc, 'S');
        Set_Is_Internal       (Ent);
        Set_Debug_Info_Needed (Ent);
  
!       --  If the bound is statically known to be out of range, we do not want
!       --  to abort, we want a warning and a runtime constraint error. Note that
!       --  we have arranged that the result will not be treated as a static
!       --  constant, so we won't get an illegality during this insertion.
  
!       Insert_Action (Cnode,
!         Make_Object_Declaration (Loc,
!           Defining_Identifier => Ent,
!           Object_Definition   =>
!             Make_Subtype_Indication (Loc,
!               Subtype_Mark => New_Occurrence_Of (Atyp, Loc),
!               Constraint   =>
!                 Make_Index_Or_Discriminant_Constraint (Loc,
!                   Constraints => New_List (
!                     Make_Range (Loc,
!                       Low_Bound  => Low_Bound,
!                       High_Bound => High_Bound))))),
!         Suppress => All_Checks);
  
        --  If the result of the concatenation appears as the initializing
        --  expression of an object declaration, we can just rename the
--- 3482,3586 ----
        --  Initialize_Scalars is enabled. Also since this is the actual result
        --  entity, we make sure we have debug information for the result.
  
+       Subtyp_Ind :=
+         Make_Subtype_Indication (Loc,
+           Subtype_Mark => New_Occurrence_Of (Atyp, Loc),
+           Constraint   =>
+             Make_Index_Or_Discriminant_Constraint (Loc,
+               Constraints => New_List (
+                 Make_Range (Loc,
+                   Low_Bound  => Low_Bound,
+                   High_Bound => High_Bound))));
+ 
        Ent := Make_Temporary (Loc, 'S');
        Set_Is_Internal       (Ent);
        Set_Debug_Info_Needed (Ent);
  
!       --  If we are concatenating strings and the current scope already uses
!       --  the secondary stack, allocate the resulting string also on the
!       --  secondary stack to avoid putting too much pressure on the primary
!       --  stack.
!       --  Don't do this if -gnatd.h is set, as this will break the wrapping of
!       --  Cnode in an Expression_With_Actions, see Expand_N_Op_Concat.
  
!       if Atyp = Standard_String
!         and then Uses_Sec_Stack (Current_Scope)
!         and then RTE_Available (RE_SS_Pool)
!         and then not Debug_Flag_Dot_H
!       then
!          --  Generate:
!          --     subtype Axx is ...;
!          --     type Ayy is access Axx;
!          --     Rxx : Ayy := new <subtype> [storage_pool = ss_pool];
!          --     Sxx : <subtype> renames Rxx.all;
! 
!          declare
!             Alloc   : Node_Id;
!             ConstrT : constant Entity_Id := Make_Temporary (Loc, 'A');
!             Acc_Typ : constant Entity_Id := Make_Temporary (Loc, 'A');
!             Temp    : Entity_Id;
! 
!          begin
!             Insert_Action (Cnode,
!               Make_Subtype_Declaration (Loc,
!                 Defining_Identifier => ConstrT,
!                 Subtype_Indication  => Subtyp_Ind),
!               Suppress => All_Checks);
!             Freeze_Itype (ConstrT, Cnode);
! 
!             Insert_Action (Cnode,
!               Make_Full_Type_Declaration (Loc,
!                 Defining_Identifier => Acc_Typ,
!                 Type_Definition     =>
!                   Make_Access_To_Object_Definition (Loc,
!                     Subtype_Indication => New_Occurrence_Of (ConstrT, Loc))),
!               Suppress => All_Checks);
!             Alloc :=
!               Make_Allocator (Loc,
!                 Expression => New_Occurrence_Of (ConstrT, Loc));
! 
!             --  Allocate on the secondary stack. This is currently done
!             --  only for type String, which normally doesn't have default
!             --  initialization, but we need to Set_No_Initialization in case
!             --  of Initialize_Scalars or Normalize_Scalars; otherwise, the
!             --  allocator will get transformed and will not use the secondary
!             --  stack.
! 
!             Set_Storage_Pool (Alloc, RTE (RE_SS_Pool));
!             Set_Procedure_To_Call (Alloc, RTE (RE_SS_Allocate));
!             Set_No_Initialization (Alloc);
! 
!             Temp := Make_Temporary (Loc, 'R', Alloc);
!             Insert_Action (Cnode,
!               Make_Object_Declaration (Loc,
!                 Defining_Identifier => Temp,
!                 Object_Definition   => New_Occurrence_Of (Acc_Typ, Loc),
!                 Expression          => Alloc),
!               Suppress => All_Checks);
! 
!             Insert_Action (Cnode,
!               Make_Object_Renaming_Declaration (Loc,
!                 Defining_Identifier => Ent,
!                 Subtype_Mark        => New_Occurrence_Of (ConstrT, Loc),
!                 Name                =>
!                   Make_Explicit_Dereference (Loc,
!                     Prefix => New_Occurrence_Of (Temp, Loc))),
!               Suppress => All_Checks);
!          end;
!       else
!          --  If the bound is statically known to be out of range, we do not
!          --  want to abort, we want a warning and a runtime constraint error.
!          --  Note that we have arranged that the result will not be treated as
!          --  a static constant, so we won't get an illegality during this
!          --  insertion.
!          --  We also enable checks (in particular range checks) in case the
!          --  bounds of Subtyp_Ind are out of range.
! 
!          Insert_Action (Cnode,
!            Make_Object_Declaration (Loc,
!              Defining_Identifier => Ent,
!              Object_Definition   => Subtyp_Ind));
!       end if;
  
        --  If the result of the concatenation appears as the initializing
        --  expression of an object declaration, we can just rename the
*************** package body Exp_Ch4 is
*** 3621,3626 ****
--- 3757,3763 ----
        Result := New_Occurrence_Of (Ent, Loc);
  
     <<Done>>
+       pragma Assert (Present (Result));
        Rewrite (Cnode, Result);
        Analyze_And_Resolve (Cnode, Atyp);
  
*************** package body Exp_Ch4 is
*** 4130,4136 ****
           --  we avoid never-ending loops expanding them, and we also ensure
           --  the back end never receives nonbinary modular type expressions.
  
!          if Nkind_In (Nkind (N), N_Op_And, N_Op_Or, N_Op_Xor) then
              Set_Left_Opnd (Op_Expr,
                Unchecked_Convert_To (Standard_Unsigned,
                  New_Copy_Tree (Left_Opnd (N))));
--- 4267,4273 ----
           --  we avoid never-ending loops expanding them, and we also ensure
           --  the back end never receives nonbinary modular type expressions.
  
!          if Nkind (N) in N_Op_And | N_Op_Or | N_Op_Xor then
              Set_Left_Opnd (Op_Expr,
                Unchecked_Convert_To (Standard_Unsigned,
                  New_Copy_Tree (Left_Opnd (N))));
*************** package body Exp_Ch4 is
*** 4146,4152 ****
              --  errors on large legal literals of the type.
  
              if Modulus (Etype (N)) > UI_From_Int (Int (Integer'Last)) then
!                Target_Type := Standard_Long_Integer;
              else
                 Target_Type := Standard_Integer;
              end if;
--- 4283,4289 ----
              --  errors on large legal literals of the type.
  
              if Modulus (Etype (N)) > UI_From_Int (Int (Integer'Last)) then
!                Target_Type := Standard_Long_Long_Integer;
              else
                 Target_Type := Standard_Integer;
              end if;
*************** package body Exp_Ch4 is
*** 4369,4376 ****
           declare
              Idx : Node_Id := First_Index (E);
              Len : Node_Id;
!             Res : Node_Id;
!             pragma Warnings (Off, Res);
  
           begin
              for J in 1 .. Number_Dimensions (E) loop
--- 4506,4512 ----
           declare
              Idx : Node_Id := First_Index (E);
              Len : Node_Id;
!             Res : Node_Id := Empty;
  
           begin
              for J in 1 .. Number_Dimensions (E) loop
*************** package body Exp_Ch4 is
*** 4443,4448 ****
--- 4579,4585 ----
                    Res := Len;
  
                 else
+                   pragma Assert (Present (Res));
                    Res :=
                      Make_Op_Multiply (Loc,
                        Left_Opnd  => Res,
*************** package body Exp_Ch4 is
*** 4483,4492 ****
                         and then Nkind (Associated_Node_For_Itype (PtrT)) =
                                    N_Object_Declaration)
        then
!          Error_Msg_N ("?use of an anonymous access type allocator", N);
        end if;
  
!       --  RM E.2.3(22). We enforce that the expected type of an allocator
        --  shall not be a remote access-to-class-wide-limited-private type
  
        --  Why is this being done at expansion time, seems clearly wrong ???
--- 4620,4629 ----
                         and then Nkind (Associated_Node_For_Itype (PtrT)) =
                                    N_Object_Declaration)
        then
!          Error_Msg_N ("??use of an anonymous access type allocator", N);
        end if;
  
!       --  RM E.2.2(17). We enforce that the expected type of an allocator
        --  shall not be a remote access-to-class-wide-limited-private type
  
        --  Why is this being done at expansion time, seems clearly wrong ???
*************** package body Exp_Ch4 is
*** 4513,4523 ****
           --  lifetime of the object must be associated with the named access
           --  type. Use the finalization-related attributes of this type.
  
!          if Nkind_In (Parent (N), N_Type_Conversion,
!                                   N_Unchecked_Type_Conversion)
!            and then Ekind_In (Etype (Parent (N)), E_Access_Subtype,
!                                                   E_Access_Type,
!                                                   E_General_Access_Type)
           then
              Rel_Typ := Etype (Parent (N));
           else
--- 4650,4660 ----
           --  lifetime of the object must be associated with the named access
           --  type. Use the finalization-related attributes of this type.
  
!          if Nkind (Parent (N)) in N_Type_Conversion
!                                 | N_Unchecked_Type_Conversion
!            and then Ekind (Etype (Parent (N))) in E_Access_Subtype
!                                                 | E_Access_Type
!                                                 | E_General_Access_Type
           then
              Rel_Typ := Etype (Parent (N));
           else
*************** package body Exp_Ch4 is
*** 4792,4810 ****
        end if;
  
        --  Handle case of qualified expression (other than optimization above)
-       --  First apply constraint checks, because the bounds or discriminants
-       --  in the aggregate might not match the subtype mark in the allocator.
  
        if Nkind (Expression (N)) = N_Qualified_Expression then
-          declare
-             Exp : constant Node_Id   := Expression (Expression (N));
-             Typ : constant Entity_Id := Etype (Expression (N));
- 
-          begin
-             Apply_Constraint_Check (Exp, Typ);
-             Apply_Predicate_Check  (Exp, Typ);
-          end;
- 
           Expand_Allocator_Expression (N);
           return;
        end if;
--- 4929,4936 ----
*************** package body Exp_Ch4 is
*** 4837,4842 ****
--- 4963,4984 ----
           Temp_Type : Entity_Id;
  
        begin
+          --  Apply constraint checks against designated subtype (RM 4.8(10/2))
+          --  but ignore the expression if the No_Initialization flag is set.
+          --  Discriminant checks will be generated by the expansion below.
+ 
+          if Is_Array_Type (Dtyp) and then not No_Initialization (N) then
+             Apply_Constraint_Check (Expression (N), Dtyp, No_Sliding => True);
+ 
+             Apply_Predicate_Check (Expression (N), Dtyp);
+ 
+             if Nkind (Expression (N)) = N_Raise_Constraint_Error then
+                Rewrite (N, New_Copy (Expression (N)));
+                Set_Etype (N, PtrT);
+                return;
+             end if;
+          end if;
+ 
           if No_Initialization (N) then
  
              --  Even though this might be a simple allocation, create a custom
*************** package body Exp_Ch4 is
*** 5026,5045 ****
                       --  The designated type was an incomplete type, and the
                       --  access type did not get expanded. Salvage it now.
  
!                      if not Restriction_Active (No_Task_Hierarchy) then
!                         if Present (Parent (Base_Type (PtrT))) then
!                            Expand_N_Full_Type_Declaration
!                              (Parent (Base_Type (PtrT)));
  
!                         --  The only other possibility is an itype. For this
!                         --  case, the master must exist in the context. This is
!                         --  the case when the allocator initializes an access
!                         --  component in an init-proc.
  
!                         else
!                            pragma Assert (Is_Itype (PtrT));
!                            Build_Master_Renaming (PtrT, N);
!                         end if;
                       end if;
                    end if;
  
--- 5168,5185 ----
                       --  The designated type was an incomplete type, and the
                       --  access type did not get expanded. Salvage it now.
  
!                      if Present (Parent (Base_Type (PtrT))) then
!                         Expand_N_Full_Type_Declaration
!                           (Parent (Base_Type (PtrT)));
  
!                      --  The only other possibility is an itype. For this
!                      --  case, the master must exist in the context. This is
!                      --  the case when the allocator initializes an access
!                      --  component in an init-proc.
  
!                      else
!                         pragma Assert (Is_Itype (PtrT));
!                         Build_Master_Renaming (PtrT, N);
                       end if;
                    end if;
  
*************** package body Exp_Ch4 is
*** 5062,5069 ****
                                  New_Occurrence_Of
                                    (Entity (Nam), Sloc (Nam)), T);
  
!                         elsif Nkind_In (Nam, N_Indexed_Component,
!                                              N_Selected_Component)
                            and then Is_Entity_Name (Prefix (Nam))
                          then
                             Decls :=
--- 5202,5209 ----
                                  New_Occurrence_Of
                                    (Entity (Nam), Sloc (Nam)), T);
  
!                         elsif Nkind (Nam) in N_Indexed_Component
!                                            | N_Selected_Component
                            and then Is_Entity_Name (Prefix (Nam))
                          then
                             Decls :=
*************** package body Exp_Ch4 is
*** 5248,5253 ****
--- 5388,5411 ----
  
                 Rewrite (N, New_Occurrence_Of (Temp, Loc));
                 Analyze_And_Resolve (N, PtrT);
+ 
+                --  When designated type has Default_Initial_Condition aspects,
+                --  make a call to the type's DIC procedure to perform the
+                --  checks. Theoretically this might also be needed for cases
+                --  where the type doesn't have an init proc, but those should
+                --  be very uncommon, and for now we only support the init proc
+                --  case. ???
+ 
+                if Has_DIC (Dtyp)
+                  and then Present (DIC_Procedure (Dtyp))
+                  and then not Has_Null_Body (DIC_Procedure (Dtyp))
+                then
+                   Insert_Action (N,
+                                  Build_DIC_Call (Loc,
+                                    Make_Explicit_Dereference (Loc,
+                                      Prefix => New_Occurrence_Of (Temp, Loc)),
+                                  Dtyp));
+                end if;
              end if;
           end if;
        end;
*************** package body Exp_Ch4 is
*** 5309,5315 ****
        Case_Stmt  : Node_Id;
        Decl       : Node_Id;
        Expr       : Node_Id;
!       Target     : Entity_Id;
        Target_Typ : Entity_Id;
  
        In_Predicate : Boolean := False;
--- 5467,5473 ----
        Case_Stmt  : Node_Id;
        Decl       : Node_Id;
        Expr       : Node_Id;
!       Target     : Entity_Id := Empty;
        Target_Typ : Entity_Id;
  
        In_Predicate : Boolean := False;
*************** package body Exp_Ch4 is
*** 5333,5339 ****
        --  to which it applies has a static predicate aspect, do not expand,
        --  because it will be converted to the proper predicate form later.
  
!       if Ekind_In (Current_Scope, E_Function, E_Procedure)
          and then Is_Predicate_Function (Current_Scope)
        then
           In_Predicate := True;
--- 5491,5497 ----
        --  to which it applies has a static predicate aspect, do not expand,
        --  because it will be converted to the proper predicate form later.
  
!       if Ekind (Current_Scope) in E_Function | E_Procedure
          and then Is_Predicate_Function (Current_Scope)
        then
           In_Predicate := True;
*************** package body Exp_Ch4 is
*** 5766,5776 ****
        Elsex : constant Node_Id    := Next (Thenx);
        Typ   : constant Entity_Id  := Etype (N);
  
!       Actions : List_Id;
!       Decl    : Node_Id;
!       Expr    : Node_Id;
!       New_If  : Node_Id;
!       New_N   : Node_Id;
  
     begin
        --  Check for MINIMIZED/ELIMINATED overflow mode
--- 5924,5944 ----
        Elsex : constant Node_Id    := Next (Thenx);
        Typ   : constant Entity_Id  := Etype (N);
  
!       Actions      : List_Id;
!       Decl         : Node_Id;
!       Expr         : Node_Id;
!       New_If       : Node_Id;
!       New_N        : Node_Id;
! 
!       --  Determine if we are dealing with a special case of a conditional
!       --  expression used as an actual for an anonymous access type which
!       --  forces us to transform the if expression into an expression with
!       --  actions in order to create a temporary to capture the level of the
!       --  expression in each branch.
! 
!       Force_Expand : constant Boolean := Is_Anonymous_Access_Actual (N);
! 
!    --  Start of processing for Expand_N_If_Expression
  
     begin
        --  Check for MINIMIZED/ELIMINATED overflow mode
*************** package body Exp_Ch4 is
*** 5970,5978 ****
           end;
  
        --  For other types, we only need to expand if there are other actions
!       --  associated with either branch.
  
!       elsif Present (Then_Actions (N)) or else Present (Else_Actions (N)) then
  
           --  We now wrap the actions into the appropriate expression
  
--- 6138,6150 ----
           end;
  
        --  For other types, we only need to expand if there are other actions
!       --  associated with either branch or we need to force expansion to deal
!       --  with if expressions used as an actual of an anonymous access type.
  
!       elsif Present (Then_Actions (N))
!         or else Present (Else_Actions (N))
!         or else Force_Expand
!       then
  
           --  We now wrap the actions into the appropriate expression
  
*************** package body Exp_Ch4 is
*** 6046,6051 ****
--- 6218,6279 ----
                 Analyze_And_Resolve (Elsex, Typ);
              end if;
  
+             --  We must force expansion into an expression with actions when
+             --  an if expression gets used directly as an actual for an
+             --  anonymous access type.
+ 
+             if Force_Expand then
+                declare
+                   Cnn  : constant Entity_Id := Make_Temporary (Loc, 'C');
+                   Acts : List_Id;
+                begin
+                   Acts := New_List;
+ 
+                   --  Generate:
+                   --    Cnn : Ann;
+ 
+                   Decl :=
+                     Make_Object_Declaration (Loc,
+                       Defining_Identifier => Cnn,
+                       Object_Definition   => New_Occurrence_Of (Typ, Loc));
+                   Append_To (Acts, Decl);
+ 
+                   Set_No_Initialization (Decl);
+ 
+                   --  Generate:
+                   --    if Cond then
+                   --       Cnn := <Thenx>;
+                   --    else
+                   --       Cnn := <Elsex>;
+                   --    end if;
+ 
+                   New_If :=
+                     Make_Implicit_If_Statement (N,
+                       Condition       => Relocate_Node (Cond),
+                       Then_Statements => New_List (
+                         Make_Assignment_Statement (Sloc (Thenx),
+                           Name       => New_Occurrence_Of (Cnn, Sloc (Thenx)),
+                           Expression => Relocate_Node (Thenx))),
+ 
+                       Else_Statements => New_List (
+                         Make_Assignment_Statement (Sloc (Elsex),
+                           Name       => New_Occurrence_Of (Cnn, Sloc (Elsex)),
+                           Expression => Relocate_Node (Elsex))));
+                   Append_To (Acts, New_If);
+ 
+                   --  Generate:
+                   --    do
+                   --       ...
+                   --    in Cnn end;
+ 
+                   Rewrite (N,
+                     Make_Expression_With_Actions (Loc,
+                       Expression => New_Occurrence_Of (Cnn, Loc),
+                       Actions    => Acts));
+                   Analyze_And_Resolve (N, Typ);
+                end;
+             end if;
+ 
              return;
           end if;
  
*************** package body Exp_Ch4 is
*** 6132,6139 ****
                 --  to consider???
  
                 loop
!                   if Nkind_In (Obj_Ref, N_Type_Conversion,
!                                         N_Unchecked_Type_Conversion)
                    then
                       Obj_Ref := Expression (Obj_Ref);
                    else
--- 6360,6367 ----
                 --  to consider???
  
                 loop
!                   if Nkind (Obj_Ref) in
!                        N_Type_Conversion | N_Unchecked_Type_Conversion
                    then
                       Obj_Ref := Expression (Obj_Ref);
                    else
*************** package body Exp_Ch4 is
*** 6457,6462 ****
--- 6685,6696 ----
              end if;
           end;
  
+          --  Try to narrow the operation
+ 
+          if Ltyp = Universal_Integer and then Nkind (N) = N_In then
+             Narrow_Large_Operation (N);
+          end if;
+ 
           --  For all other cases of an explicit range, nothing to be done
  
           goto Leave;
*************** package body Exp_Ch4 is
*** 6465,6476 ****
  
        else
           declare
!             Typ       : Entity_Id        := Etype (Rop);
!             Is_Acc    : constant Boolean := Is_Access_Type (Typ);
!             Cond      : Node_Id          := Empty;
!             New_N     : Node_Id;
!             Obj       : Node_Id          := Lop;
!             SCIL_Node : Node_Id;
  
           begin
              Remove_Side_Effects (Obj);
--- 6699,6711 ----
  
        else
           declare
!             Typ                  : Entity_Id        := Etype (Rop);
!             Is_Acc               : constant Boolean := Is_Access_Type (Typ);
!             Check_Null_Exclusion : Boolean;
!             Cond                 : Node_Id          := Empty;
!             New_N                : Node_Id;
!             Obj                  : Node_Id          := Lop;
!             SCIL_Node            : Node_Id;
  
           begin
              Remove_Side_Effects (Obj);
*************** package body Exp_Ch4 is
*** 6523,6557 ****
  
                 goto Leave;
  
!             --  Ada 2005 (AI-216): Program_Error is raised when evaluating
!             --  a membership test if the subtype mark denotes a constrained
!             --  Unchecked_Union subtype and the expression lacks inferable
!             --  discriminants.
  
              elsif Is_Unchecked_Union (Base_Type (Typ))
                and then Is_Constrained (Typ)
                and then not Has_Inferable_Discriminants (Lop)
              then
!                Insert_Action (N,
!                  Make_Raise_Program_Error (Loc,
!                    Reason => PE_Unchecked_Union_Restriction));
! 
!                --  Prevent Gigi from generating incorrect code by rewriting the
!                --  test as False. What is this undocumented thing about ???
  
-                Rewrite (N, New_Occurrence_Of (Standard_False, Loc));
                 goto Leave;
              end if;
  
              --  Here we have a non-scalar type
  
              if Is_Acc then
                 Typ := Designated_Type (Typ);
              end if;
  
              if not Is_Constrained (Typ) then
!                Rewrite (N, New_Occurrence_Of (Standard_True, Loc));
!                Analyze_And_Resolve (N, Restyp);
  
              --  For the constrained array case, we have to check the subscripts
              --  for an exact match if the lengths are non-zero (the lengths
--- 6758,6800 ----
  
                 goto Leave;
  
!             --  Ada 2005 (AI95-0216 amended by AI12-0162): Program_Error is
!             --  raised when evaluating an individual membership test if the
!             --  subtype mark denotes a constrained Unchecked_Union subtype
!             --  and the expression lacks inferable discriminants.
  
              elsif Is_Unchecked_Union (Base_Type (Typ))
                and then Is_Constrained (Typ)
                and then not Has_Inferable_Discriminants (Lop)
              then
!                Rewrite (N,
!                  Make_Expression_With_Actions (Loc,
!                    Actions    =>
!                      New_List (Make_Raise_Program_Error (Loc,
!                        Reason => PE_Unchecked_Union_Restriction)),
!                    Expression =>
!                      New_Occurrence_Of (Standard_False, Loc)));
!                Analyze_And_Resolve (N, Restyp);
  
                 goto Leave;
              end if;
  
              --  Here we have a non-scalar type
  
              if Is_Acc then
+ 
+                --  If the null exclusion checks are not compatible, need to
+                --  perform further checks. In other words, we cannot have
+                --  Ltyp including null and Typ excluding null. All other cases
+                --  are OK.
+ 
+                Check_Null_Exclusion :=
+                  Can_Never_Be_Null (Typ) and then not Can_Never_Be_Null (Ltyp);
                 Typ := Designated_Type (Typ);
              end if;
  
              if not Is_Constrained (Typ) then
!                Cond := New_Occurrence_Of (Standard_True, Loc);
  
              --  For the constrained array case, we have to check the subscripts
              --  for an exact match if the lengths are non-zero (the lengths
*************** package body Exp_Ch4 is
*** 6607,6625 ****
                             Build_Attribute_Reference
                               (New_Occurrence_Of (Typ, Loc), Name_Last, J)));
                    end loop;
- 
-                   if Is_Acc then
-                      Cond :=
-                        Make_Or_Else (Loc,
-                          Left_Opnd  =>
-                            Make_Op_Eq (Loc,
-                              Left_Opnd  => Obj,
-                              Right_Opnd => Make_Null (Loc)),
-                          Right_Opnd => Cond);
-                   end if;
- 
-                   Rewrite (N, Cond);
-                   Analyze_And_Resolve (N, Restyp);
                 end Check_Subscripts;
  
              --  These are the cases where constraint checks may be required,
--- 6850,6855 ----
*************** package body Exp_Ch4 is
*** 6635,6658 ****
                 if Has_Discriminants (Typ) then
                    Cond := Make_Op_Not (Loc,
                      Right_Opnd => Build_Discriminant_Checks (Obj, Typ));
- 
-                   if Is_Acc then
-                      Cond := Make_Or_Else (Loc,
-                        Left_Opnd  =>
-                          Make_Op_Eq (Loc,
-                            Left_Opnd  => Obj,
-                            Right_Opnd => Make_Null (Loc)),
-                        Right_Opnd => Cond);
-                   end if;
- 
                 else
                    Cond := New_Occurrence_Of (Standard_True, Loc);
                 end if;
  
!                Rewrite (N, Cond);
!                Analyze_And_Resolve (N, Restyp);
              end if;
  
              --  Ada 2012 (AI05-0149): Handle membership tests applied to an
              --  expression of an anonymous access type. This can involve an
              --  accessibility test and a tagged type membership test in the
--- 6865,6896 ----
                 if Has_Discriminants (Typ) then
                    Cond := Make_Op_Not (Loc,
                      Right_Opnd => Build_Discriminant_Checks (Obj, Typ));
                 else
                    Cond := New_Occurrence_Of (Standard_True, Loc);
                 end if;
+             end if;
  
!             if Is_Acc then
!                if Check_Null_Exclusion then
!                   Cond := Make_And_Then (Loc,
!                     Left_Opnd  =>
!                       Make_Op_Ne (Loc,
!                         Left_Opnd  => Obj,
!                         Right_Opnd => Make_Null (Loc)),
!                     Right_Opnd => Cond);
!                else
!                   Cond := Make_Or_Else (Loc,
!                     Left_Opnd  =>
!                       Make_Op_Eq (Loc,
!                         Left_Opnd  => Obj,
!                         Right_Opnd => Make_Null (Loc)),
!                     Right_Opnd => Cond);
!                end if;
              end if;
  
+             Rewrite (N, Cond);
+             Analyze_And_Resolve (N, Restyp);
+ 
              --  Ada 2012 (AI05-0149): Handle membership tests applied to an
              --  expression of an anonymous access type. This can involve an
              --  accessibility test and a tagged type membership test in the
*************** package body Exp_Ch4 is
*** 6689,6741 ****
                    --  Apply an accessibility check if the access object has an
                    --  associated access level and when the level of the type is
                    --  less deep than the level of the access parameter. This
!                   --  only occur for access parameters and stand-alone objects
!                   --  of an anonymous access type.
  
                    else
!                      if Present (Expr_Entity)
!                        and then
!                          Present
!                            (Effective_Extra_Accessibility (Expr_Entity))
!                        and then UI_Gt (Object_Access_Level (Lop),
!                                        Type_Access_Level (Rtyp))
!                      then
!                         Param_Level :=
!                           New_Occurrence_Of
!                             (Effective_Extra_Accessibility (Expr_Entity), Loc);
  
!                         Type_Level :=
!                           Make_Integer_Literal (Loc, Type_Access_Level (Rtyp));
  
!                         --  Return True only if the accessibility level of the
!                         --  expression entity is not deeper than the level of
!                         --  the tested access type.
  
!                         Rewrite (N,
!                           Make_And_Then (Loc,
!                             Left_Opnd  => Relocate_Node (N),
!                             Right_Opnd => Make_Op_Le (Loc,
!                                             Left_Opnd  => Param_Level,
!                                             Right_Opnd => Type_Level)));
  
!                         Analyze_And_Resolve (N);
!                      end if;
  
                       --  If the designated type is tagged, do tagged membership
                       --  operation.
  
-                      --  *** NOTE: we have to check not null before doing the
-                      --  tagged membership test (but maybe that can be done
-                      --  inside Tagged_Membership?).
- 
                       if Is_Tagged_Type (Typ) then
-                         Rewrite (N,
-                           Make_And_Then (Loc,
-                             Left_Opnd  => Relocate_Node (N),
-                             Right_Opnd =>
-                               Make_Op_Ne (Loc,
-                                 Left_Opnd  => Obj,
-                                 Right_Opnd => Make_Null (Loc))));
  
                          --  No expansion will be performed for VM targets, as
                          --  the VM back ends will handle the membership tests
--- 6927,6959 ----
                    --  Apply an accessibility check if the access object has an
                    --  associated access level and when the level of the type is
                    --  less deep than the level of the access parameter. This
!                   --  can only occur for access parameters and stand-alone
!                   --  objects of an anonymous access type.
  
                    else
!                      Param_Level := Accessibility_Level
!                                       (Expr_Entity, Dynamic_Level);
  
!                      Type_Level :=
!                        Make_Integer_Literal (Loc, Type_Access_Level (Rtyp));
  
!                      --  Return True only if the accessibility level of the
!                      --  expression entity is not deeper than the level of
!                      --  the tested access type.
  
!                      Rewrite (N,
!                        Make_And_Then (Loc,
!                          Left_Opnd  => Relocate_Node (N),
!                          Right_Opnd => Make_Op_Le (Loc,
!                                          Left_Opnd  => Param_Level,
!                                          Right_Opnd => Type_Level)));
  
!                      Analyze_And_Resolve (N);
  
                       --  If the designated type is tagged, do tagged membership
                       --  operation.
  
                       if Is_Tagged_Type (Typ) then
  
                          --  No expansion will be performed for VM targets, as
                          --  the VM back ends will handle the membership tests
*************** package body Exp_Ch4 is
*** 6861,6867 ****
        Typ : constant Entity_Id  := Etype (N);
        P   : constant Node_Id    := Prefix (N);
        T   : constant Entity_Id  := Etype (P);
-       Atp : Entity_Id;
  
     begin
        --  A special optimization, if we have an indexed component that is
--- 7079,7084 ----
*************** package body Exp_Ch4 is
*** 6910,6929 ****
           Make_Build_In_Place_Iface_Call_In_Anonymous_Context (P);
        end if;
  
-       --  If the prefix is an access type, then we unconditionally rewrite if
-       --  as an explicit dereference. This simplifies processing for several
-       --  cases, including packed array cases and certain cases in which checks
-       --  must be generated. We used to try to do this only when it was
-       --  necessary, but it cleans up the code to do it all the time.
- 
-       if Is_Access_Type (T) then
-          Insert_Explicit_Dereference (P);
-          Analyze_And_Resolve (P, Designated_Type (T));
-          Atp := Designated_Type (T);
-       else
-          Atp := T;
-       end if;
- 
        --  Generate index and validity checks
  
        Generate_Index_Checks (N);
--- 7127,7132 ----
*************** package body Exp_Ch4 is
*** 6935,6942 ****
        --  If selecting from an array with atomic components, and atomic sync
        --  is not suppressed for this array type, set atomic sync flag.
  
!       if (Has_Atomic_Components (Atp)
!            and then not Atomic_Synchronization_Disabled (Atp))
          or else (Is_Atomic (Typ)
                    and then not Atomic_Synchronization_Disabled (Typ))
          or else (Is_Entity_Name (P)
--- 7138,7145 ----
        --  If selecting from an array with atomic components, and atomic sync
        --  is not suppressed for this array type, set atomic sync flag.
  
!       if (Has_Atomic_Components (T)
!            and then not Atomic_Synchronization_Disabled (T))
          or else (Is_Atomic (Typ)
                    and then not Atomic_Synchronization_Disabled (Typ))
          or else (Is_Entity_Name (P)
*************** package body Exp_Ch4 is
*** 7005,7013 ****
                 return;
  
              elsif Nkind (Parnt) = N_Attribute_Reference
!               and then Nam_In (Attribute_Name (Parnt), Name_Address,
!                                                        Name_Bit,
!                                                        Name_Size)
                and then Prefix (Parnt) = Child
              then
                 return;
--- 7208,7216 ----
                 return;
  
              elsif Nkind (Parnt) = N_Attribute_Reference
!               and then Attribute_Name (Parnt) in Name_Address
!                                                | Name_Bit
!                                                | Name_Size
                and then Prefix (Parnt) = Child
              then
                 return;
*************** package body Exp_Ch4 is
*** 7147,7152 ****
--- 7350,7356 ----
     procedure Expand_N_Op_Abs (N : Node_Id) is
        Loc  : constant Source_Ptr := Sloc (N);
        Expr : constant Node_Id    := Right_Opnd (N);
+       Typ  : constant Entity_Id  := Etype (N);
  
     begin
        Unary_Op_Validity_Checks (N);
*************** package body Exp_Ch4 is
*** 7158,7166 ****
           return;
        end if;
  
        --  Deal with software overflow checking
  
!       if Is_Signed_Integer_Type (Etype (N))
          and then Do_Overflow_Check (N)
        then
           --  The only case to worry about is when the argument is equal to the
--- 7362,7380 ----
           return;
        end if;
  
+       --  Try to narrow the operation
+ 
+       if Typ = Universal_Integer then
+          Narrow_Large_Operation (N);
+ 
+          if Nkind (N) /= N_Op_Abs then
+             return;
+          end if;
+       end if;
+ 
        --  Deal with software overflow checking
  
!       if Is_Signed_Integer_Type (Typ)
          and then Do_Overflow_Check (N)
        then
           --  The only case to worry about is when the argument is equal to the
*************** package body Exp_Ch4 is
*** 7220,7225 ****
--- 7434,7449 ----
           end if;
        end if;
  
+       --  Try to narrow the operation
+ 
+       if Typ = Universal_Integer then
+          Narrow_Large_Operation (N);
+ 
+          if Nkind (N) /= N_Op_Add then
+             return;
+          end if;
+       end if;
+ 
        --  Arithmetic overflow checks for signed integer/fixed point types
  
        if Is_Signed_Integer_Type (Typ) or else Is_Fixed_Point_Type (Typ) then
*************** package body Exp_Ch4 is
*** 7397,7402 ****
--- 7621,7636 ----
           return;
        end if;
  
+       --  Try to narrow the operation
+ 
+       if Typ = Universal_Integer then
+          Narrow_Large_Operation (N);
+ 
+          if Nkind (N) /= N_Op_Divide then
+             return;
+          end if;
+       end if;
+ 
        --  Convert x / 2 ** y to Shift_Right (x, y). Note that the fact that
        --  Is_Power_Of_2_For_Shift is set means that we know that our left
        --  operand is an unsigned integer, as required for this to work.
*************** package body Exp_Ch4 is
*** 7429,7444 ****
  
        if Is_Fixed_Point_Type (Typ) then
  
!          --  No special processing if Treat_Fixed_As_Integer is set, since
!          --  from a semantic point of view such operations are simply integer
!          --  operations and will be treated that way.
! 
!          if not Treat_Fixed_As_Integer (N) then
!             if Is_Integer_Type (Rtyp) then
!                Expand_Divide_Fixed_By_Integer_Giving_Fixed (N);
!             else
!                Expand_Divide_Fixed_By_Fixed_Giving_Fixed (N);
!             end if;
           end if;
  
           --  Deal with divide-by-zero check if back end cannot handle them
--- 7663,7672 ----
  
        if Is_Fixed_Point_Type (Typ) then
  
!          if Is_Integer_Type (Rtyp) then
!             Expand_Divide_Fixed_By_Integer_Giving_Fixed (N);
!          else
!             Expand_Divide_Fixed_By_Fixed_Giving_Fixed (N);
           end if;
  
           --  Deal with divide-by-zero check if back end cannot handle them
*************** package body Exp_Ch4 is
*** 7462,7473 ****
                    Reason  => CE_Divide_By_Zero));
           end if;
  
!       --  Other cases of division of fixed-point operands. Again we exclude the
!       --  case where Treat_Fixed_As_Integer is set.
  
!       elsif (Is_Fixed_Point_Type (Ltyp) or else Is_Fixed_Point_Type (Rtyp))
!         and then not Treat_Fixed_As_Integer (N)
!       then
           if Is_Integer_Type (Typ) then
              Expand_Divide_Fixed_By_Fixed_Giving_Integer (N);
           else
--- 7690,7698 ----
                    Reason  => CE_Divide_By_Zero));
           end if;
  
!       --  Other cases of division of fixed-point operands
  
!       elsif Is_Fixed_Point_Type (Ltyp) or else Is_Fixed_Point_Type (Rtyp) then
           if Is_Integer_Type (Typ) then
              Expand_Divide_Fixed_By_Fixed_Giving_Integer (N);
           else
*************** package body Exp_Ch4 is
*** 7910,7916 ****
                 if Is_Equality (E, Typ) then
                    return E;
                 end if;
!                E := Next_Entity (E);
              end loop;
           end loop;
  
--- 8135,8141 ----
                 if Is_Equality (E, Typ) then
                    return E;
                 end if;
!                Next_Entity (E);
              end loop;
           end loop;
  
*************** package body Exp_Ch4 is
*** 8171,8182 ****
           --  Where the component type is elementary we can use a block bit
           --  comparison (if supported on the target) exception in the case
           --  of floating-point (negative zero issues require element by
!          --  element comparison), and atomic/VFA types (where we must be sure
           --  to load elements independently) and possibly unaligned arrays.
  
           elsif Is_Elementary_Type (Component_Type (Typl))
             and then not Is_Floating_Point_Type (Component_Type (Typl))
!            and then not Is_Atomic_Or_VFA (Component_Type (Typl))
             and then not Is_Possibly_Unaligned_Object (Lhs)
             and then not Is_Possibly_Unaligned_Slice (Lhs)
             and then not Is_Possibly_Unaligned_Object (Rhs)
--- 8396,8407 ----
           --  Where the component type is elementary we can use a block bit
           --  comparison (if supported on the target) exception in the case
           --  of floating-point (negative zero issues require element by
!          --  element comparison), and full access types (where we must be sure
           --  to load elements independently) and possibly unaligned arrays.
  
           elsif Is_Elementary_Type (Component_Type (Typl))
             and then not Is_Floating_Point_Type (Component_Type (Typl))
!            and then not Is_Full_Access (Component_Type (Typl))
             and then not Is_Possibly_Unaligned_Object (Lhs)
             and then not Is_Possibly_Unaligned_Slice (Lhs)
             and then not Is_Possibly_Unaligned_Object (Rhs)
*************** package body Exp_Ch4 is
*** 8342,8354 ****
        --  records because there may be padding or undefined fields.
  
        elsif Unnest_Subprogram_Mode
!         and then Ekind_In (Typl, E_Class_Wide_Type,
!                                  E_Class_Wide_Subtype,
!                                  E_Access_Subprogram_Type,
!                                  E_Access_Protected_Subprogram_Type,
!                                  E_Anonymous_Access_Protected_Subprogram_Type,
!                                  E_Access_Subprogram_Type,
!                                  E_Exception_Type)
          and then Present (Equivalent_Type (Typl))
          and then Is_Record_Type (Equivalent_Type (Typl))
        then
--- 8567,8578 ----
        --  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))
        then
*************** package body Exp_Ch4 is
*** 8369,8374 ****
--- 8593,8604 ----
  
        Rewrite_Comparison (N);
  
+       --  Try to narrow the operation
+ 
+       if Typl = Universal_Integer and then Nkind (N) = N_Op_Eq then
+          Narrow_Large_Operation (N);
+       end if;
+ 
        --  Special optimization of length comparison
  
        Optimize_Length_Comparison (N);
*************** package body Exp_Ch4 is
*** 8641,8647 ****
          --  We only handle cases where the right type is a integer
  
          and then Is_Integer_Type (Root_Type (Exptyp))
!         and then Esize (Root_Type (Exptyp)) <= Esize (Standard_Integer)
  
          --  This transformation is not applicable for a modular type with a
          --  nonbinary modulus because we do not handle modular reduction in
--- 8871,8877 ----
          --  We only handle cases where the right type is a integer
  
          and then Is_Integer_Type (Root_Type (Exptyp))
!         and then Esize (Root_Type (Exptyp)) <= Standard_Integer_Size
  
          --  This transformation is not applicable for a modular type with a
          --  nonbinary modulus because we do not handle modular reduction in
*************** package body Exp_Ch4 is
*** 8655,8661 ****
           --  too tricky to combine the overflow check at the parent level.
  
           if not Ovflo
!            and then Nkind_In (Parent (N), N_Op_Divide, N_Op_Multiply)
           then
              declare
                 P : constant Node_Id := Parent (N);
--- 8885,8891 ----
           --  too tricky to combine the overflow check at the parent level.
  
           if not Ovflo
!            and then Nkind (Parent (N)) in N_Op_Divide | N_Op_Multiply
           then
              declare
                 P : constant Node_Id := Parent (N);
*************** package body Exp_Ch4 is
*** 8724,8731 ****
  
                 --  Determine range to see if it can be larger than MaxS
  
!                Determine_Range
!                  (Right_Opnd (N), OK, Lo, Hi, Assume_Valid => True);
                 TestS := (not OK) or else Hi > MaxS;
  
                 --  Signed integer case
--- 8954,8960 ----
  
                 --  Determine range to see if it can be larger than MaxS
  
!                Determine_Range (Exp, OK, Lo, Hi, Assume_Valid => True);
                 TestS := (not OK) or else Hi > MaxS;
  
                 --  Signed integer case
*************** package body Exp_Ch4 is
*** 8742,8748 ****
                         Make_Raise_Constraint_Error (Loc,
                           Condition =>
                             Make_Op_Gt (Loc,
!                              Left_Opnd  => Duplicate_Subexpr (Right_Opnd (N)),
                               Right_Opnd => Make_Integer_Literal (Loc, MaxS)),
                           Reason    => CE_Overflow_Check_Failed));
                    end if;
--- 8971,8977 ----
                         Make_Raise_Constraint_Error (Loc,
                           Condition =>
                             Make_Op_Gt (Loc,
!                              Left_Opnd  => Duplicate_Subexpr (Exp),
                               Right_Opnd => Make_Integer_Literal (Loc, MaxS)),
                           Reason    => CE_Overflow_Check_Failed));
                    end if;
*************** package body Exp_Ch4 is
*** 8752,8758 ****
                    Rewrite (N,
                      Make_Op_Shift_Left (Loc,
                        Left_Opnd  => Make_Integer_Literal (Loc, Uint_1),
!                       Right_Opnd => Right_Opnd (N)));
  
                 --  Modular integer case
  
--- 8981,8987 ----
                    Rewrite (N,
                      Make_Op_Shift_Left (Loc,
                        Left_Opnd  => Make_Integer_Literal (Loc, Uint_1),
!                       Right_Opnd => Exp));
  
                 --  Modular integer case
  
*************** package body Exp_Ch4 is
*** 8770,8776 ****
  
                       Test_Gt :=
                         Make_Op_Gt (Loc,
!                          Left_Opnd  => Duplicate_Subexpr (Right_Opnd (N)),
                           Right_Opnd => Make_Integer_Literal (Loc, MaxS));
  
                       Rewrite (N,
--- 8999,9005 ----
  
                       Test_Gt :=
                         Make_Op_Gt (Loc,
!                          Left_Opnd  => Duplicate_Subexpr (Exp),
                           Right_Opnd => Make_Integer_Literal (Loc, MaxS));
  
                       Rewrite (N,
*************** package body Exp_Ch4 is
*** 8780,8786 ****
                             Make_Integer_Literal (Loc, Uint_0),
                             Make_Op_Shift_Left (Loc,
                               Left_Opnd  => Make_Integer_Literal (Loc, Uint_1),
!                              Right_Opnd => Right_Opnd (N)))));
  
                    --  If we know shift count cannot be greater than MaxS, then
                    --  it is safe to just rewrite as a shift with no test.
--- 9009,9015 ----
                             Make_Integer_Literal (Loc, Uint_0),
                             Make_Op_Shift_Left (Loc,
                               Left_Opnd  => Make_Integer_Literal (Loc, Uint_1),
!                              Right_Opnd => Exp))));
  
                    --  If we know shift count cannot be greater than MaxS, then
                    --  it is safe to just rewrite as a shift with no test.
*************** package body Exp_Ch4 is
*** 8789,8795 ****
                       Rewrite (N,
                         Make_Op_Shift_Left (Loc,
                           Left_Opnd  => Make_Integer_Literal (Loc, Uint_1),
!                          Right_Opnd => Right_Opnd (N)));
                    end if;
                 end if;
  
--- 9018,9024 ----
                       Rewrite (N,
                         Make_Op_Shift_Left (Loc,
                           Left_Opnd  => Make_Integer_Literal (Loc, Uint_1),
!                          Right_Opnd => Exp));
                    end if;
                 end if;
  
*************** package body Exp_Ch4 is
*** 8821,8835 ****
                      Make_Integer_Literal (Loc, Modulus (Rtyp)),
                      Exp))));
  
!          --  Binary modular case, in this case, we call one of two routines,
           --  either the unsigned integer case, or the unsigned long long
!          --  integer case, with a final "and" operation to do the required mod.
  
           else
!             if UI_To_Int (Esize (Rtyp)) <= Standard_Integer_Size then
                 Ent := RTE (RE_Exp_Unsigned);
!             else
                 Ent := RTE (RE_Exp_Long_Long_Unsigned);
              end if;
  
              Rewrite (N,
--- 9050,9067 ----
                      Make_Integer_Literal (Loc, Modulus (Rtyp)),
                      Exp))));
  
!          --  Binary modular case, in this case, we call one of three routines,
           --  either the unsigned integer case, or the unsigned long long
!          --  integer case, or the unsigned long long long integer case, with a
!          --  final "and" operation to do the required mod.
  
           else
!             if Esize (Rtyp) <= Standard_Integer_Size then
                 Ent := RTE (RE_Exp_Unsigned);
!             elsif Esize (Rtyp) <= Standard_Long_Long_Integer_Size then
                 Ent := RTE (RE_Exp_Long_Long_Unsigned);
+             else
+                Ent := RTE (RE_Exp_Long_Long_Long_Unsigned);
              end if;
  
              Rewrite (N,
*************** package body Exp_Ch4 is
*** 8851,8886 ****
           Analyze_And_Resolve (N, Typ);
           return;
  
!       --  Signed integer cases, done using either Integer or Long_Long_Integer.
!       --  It is not worth having routines for Short_[Short_]Integer, since for
!       --  most machines it would not help, and it would generate more code that
!       --  might need certification when a certified run time is required.
  
        --  In the integer cases, we have two routines, one for when overflow
        --  checks are required, and one when they are not required, since there
        --  is a real gain in omitting checks on many machines.
  
!       elsif Rtyp = Base_Type (Standard_Long_Long_Integer)
!         or else (Rtyp = Base_Type (Standard_Long_Integer)
!                   and then
!                     Esize (Standard_Long_Integer) > Esize (Standard_Integer))
!         or else Rtyp = Universal_Integer
!       then
!          Etyp := Standard_Long_Long_Integer;
  
!          if Ovflo then
!             Rent := RE_Exp_Long_Long_Integer;
!          else
!             Rent := RE_Exn_Long_Long_Integer;
!          end if;
  
!       elsif Is_Signed_Integer_Type (Rtyp) then
!          Etyp := Standard_Integer;
  
-          if Ovflo then
-             Rent := RE_Exp_Integer;
           else
!             Rent := RE_Exn_Integer;
           end if;
  
        --  Floating-point cases. We do not need separate routines for the
--- 9083,9125 ----
           Analyze_And_Resolve (N, Typ);
           return;
  
!       --  Signed integer cases, using either Integer, Long_Long_Integer or
!       --  Long_Long_Long_Integer. It is not worth also having routines for
!       --  Short_[Short_]Integer, since for most machines it would not help,
!       --  and it would generate more code that might need certification when
!       --  a certified run time is required.
  
        --  In the integer cases, we have two routines, one for when overflow
        --  checks are required, and one when they are not required, since there
        --  is a real gain in omitting checks on many machines.
  
!       elsif Is_Signed_Integer_Type (Rtyp) then
!          if Esize (Rtyp) <= Standard_Integer_Size then
!             Etyp := Standard_Integer;
  
!             if Ovflo then
!                Rent := RE_Exp_Integer;
!             else
!                Rent := RE_Exn_Integer;
!             end if;
  
!          elsif Esize (Rtyp) <= Standard_Long_Long_Integer_Size then
!             Etyp := Standard_Long_Long_Integer;
! 
!             if Ovflo then
!                Rent := RE_Exp_Long_Long_Integer;
!             else
!                Rent := RE_Exn_Long_Long_Integer;
!             end if;
  
           else
!             Etyp := Standard_Long_Long_Long_Integer;
! 
!             if Ovflo then
!                Rent := RE_Exp_Long_Long_Long_Integer;
!             else
!                Rent := RE_Exn_Long_Long_Long_Integer;
!             end if;
           end if;
  
        --  Floating-point cases. We do not need separate routines for the
*************** package body Exp_Ch4 is
*** 8986,8991 ****
--- 9225,9236 ----
  
        Rewrite_Comparison (N);
  
+       --  Try to narrow the operation
+ 
+       if Typ1 = Universal_Integer and then Nkind (N) = N_Op_Ge then
+          Narrow_Large_Operation (N);
+       end if;
+ 
        Optimize_Length_Comparison (N);
     end Expand_N_Op_Ge;
  
*************** package body Exp_Ch4 is
*** 9029,9034 ****
--- 9274,9285 ----
  
        Rewrite_Comparison (N);
  
+       --  Try to narrow the operation
+ 
+       if Typ1 = Universal_Integer and then Nkind (N) = N_Op_Gt then
+          Narrow_Large_Operation (N);
+       end if;
+ 
        Optimize_Length_Comparison (N);
     end Expand_N_Op_Gt;
  
*************** package body Exp_Ch4 is
*** 9072,9077 ****
--- 9323,9334 ----
  
        Rewrite_Comparison (N);
  
+       --  Try to narrow the operation
+ 
+       if Typ1 = Universal_Integer and then Nkind (N) = N_Op_Le then
+          Narrow_Large_Operation (N);
+       end if;
+ 
        Optimize_Length_Comparison (N);
     end Expand_N_Op_Le;
  
*************** package body Exp_Ch4 is
*** 9115,9120 ****
--- 9372,9383 ----
  
        Rewrite_Comparison (N);
  
+       --  Try to narrow the operation
+ 
+       if Typ1 = Universal_Integer and then Nkind (N) = N_Op_Lt then
+          Narrow_Large_Operation (N);
+       end if;
+ 
        Optimize_Length_Comparison (N);
     end Expand_N_Op_Lt;
  
*************** package body Exp_Ch4 is
*** 9136,9143 ****
           return;
        end if;
  
        if not Backend_Overflow_Checks_On_Target
!          and then Is_Signed_Integer_Type (Etype (N))
           and then Do_Overflow_Check (N)
        then
           --  Software overflow checking expands -expr into (0 - expr)
--- 9399,9416 ----
           return;
        end if;
  
+       --  Try to narrow the operation
+ 
+       if Typ = Universal_Integer then
+          Narrow_Large_Operation (N);
+ 
+          if Nkind (N) /= N_Op_Minus then
+             return;
+          end if;
+       end if;
+ 
        if not Backend_Overflow_Checks_On_Target
!          and then Is_Signed_Integer_Type (Typ)
           and then Do_Overflow_Check (N)
        then
           --  Software overflow checking expands -expr into (0 - expr)
*************** package body Exp_Ch4 is
*** 9185,9191 ****
           return;
        end if;
  
!       if Is_Integer_Type (Etype (N)) then
           Apply_Divide_Checks (N);
  
           --  All done if we don't have a MOD any more, which can happen as a
--- 9458,9474 ----
           return;
        end if;
  
!       --  Try to narrow the operation
! 
!       if Typ = Universal_Integer then
!          Narrow_Large_Operation (N);
! 
!          if Nkind (N) /= N_Op_Mod then
!             return;
!          end if;
!       end if;
! 
!       if Is_Integer_Type (Typ) then
           Apply_Divide_Checks (N);
  
           --  All done if we don't have a MOD any more, which can happen as a
*************** package body Exp_Ch4 is
*** 9560,9565 ****
--- 9843,9858 ----
           return;
        end if;
  
+       --  Try to narrow the operation
+ 
+       if Typ = Universal_Integer then
+          Narrow_Large_Operation (N);
+ 
+          if Nkind (N) /= N_Op_Multiply then
+             return;
+          end if;
+       end if;
+ 
        --  Do required fixup of universal fixed operation
  
        if Typ = Universal_Fixed then
*************** package body Exp_Ch4 is
*** 9571,9605 ****
  
        if Is_Fixed_Point_Type (Typ) then
  
!          --  No special processing if Treat_Fixed_As_Integer is set, since from
!          --  a semantic point of view such operations are simply integer
!          --  operations and will be treated that way.
! 
!          if not Treat_Fixed_As_Integer (N) then
! 
!             --  Case of fixed * integer => fixed
  
!             if Is_Integer_Type (Rtyp) then
!                Expand_Multiply_Fixed_By_Integer_Giving_Fixed (N);
  
!             --  Case of integer * fixed => fixed
  
!             elsif Is_Integer_Type (Ltyp) then
!                Expand_Multiply_Integer_By_Fixed_Giving_Fixed (N);
  
!             --  Case of fixed * fixed => fixed
  
!             else
!                Expand_Multiply_Fixed_By_Fixed_Giving_Fixed (N);
!             end if;
           end if;
  
!       --  Other cases of multiplication of fixed-point operands. Again we
!       --  exclude the cases where Treat_Fixed_As_Integer flag is set.
  
!       elsif (Is_Fixed_Point_Type (Ltyp) or else Is_Fixed_Point_Type (Rtyp))
!         and then not Treat_Fixed_As_Integer (N)
!       then
           if Is_Integer_Type (Typ) then
              Expand_Multiply_Fixed_By_Fixed_Giving_Integer (N);
           else
--- 9864,9888 ----
  
        if Is_Fixed_Point_Type (Typ) then
  
!          --  Case of fixed * integer => fixed
  
!          if Is_Integer_Type (Rtyp) then
!             Expand_Multiply_Fixed_By_Integer_Giving_Fixed (N);
  
!          --  Case of integer * fixed => fixed
  
!          elsif Is_Integer_Type (Ltyp) then
!             Expand_Multiply_Integer_By_Fixed_Giving_Fixed (N);
  
!          --  Case of fixed * fixed => fixed
  
!          else
!             Expand_Multiply_Fixed_By_Fixed_Giving_Fixed (N);
           end if;
  
!       --  Other cases of multiplication of fixed-point operands
  
!       elsif Is_Fixed_Point_Type (Ltyp) or else Is_Fixed_Point_Type (Rtyp) then
           if Is_Integer_Type (Typ) then
              Expand_Multiply_Fixed_By_Fixed_Giving_Integer (N);
           else
*************** package body Exp_Ch4 is
*** 9645,9657 ****
  
        if Is_Elementary_Type (Typ)
          and then Sloc (Entity (N)) = Standard_Location
!         and then not (Ekind_In (Typ, E_Class_Wide_Type,
!                                 E_Class_Wide_Subtype,
!                                 E_Access_Subprogram_Type,
!                                 E_Access_Protected_Subprogram_Type,
!                                 E_Anonymous_Access_Protected_Subprogram_Type,
!                                 E_Access_Subprogram_Type,
!                                 E_Exception_Type)
                          and then Present (Equivalent_Type (Typ))
                          and then Is_Record_Type (Equivalent_Type (Typ)))
        then
--- 9928,9939 ----
  
        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
*************** package body Exp_Ch4 is
*** 9677,9682 ****
--- 9959,9970 ----
  
           Rewrite_Comparison (N);
  
+          --  Try to narrow the operation
+ 
+          if Typ = Universal_Integer and then Nkind (N) = N_Op_Ne then
+             Narrow_Large_Operation (N);
+          end if;
+ 
        --  For all cases other than elementary types, we rewrite node as the
        --  negation of an equality operation, and reanalyze. The equality to be
        --  used is defined in the same scope and has the same signature. This
*************** package body Exp_Ch4 is
*** 9761,9772 ****
     --       return B;
     --     end Nnnn;
  
     --  Here arr is the actual subtype of the parameter (and hence always
!    --  constrained). Then we replace the not with a call to this function.
  
     procedure Expand_N_Op_Not (N : Node_Id) is
        Loc  : constant Source_Ptr := Sloc (N);
!       Typ  : constant Entity_Id  := Etype (N);
        Opnd : Node_Id;
        Arr  : Entity_Id;
        A    : Entity_Id;
--- 10049,10069 ----
     --       return B;
     --     end Nnnn;
  
+    --  or in the case of Transform_Function_Array:
+ 
+    --     procedure Nnnn (A : arr; RESULT : out arr) is
+    --     begin
+    --       for J in a'range loop
+    --          RESULT (J) := not A (J);
+    --       end loop;
+    --     end Nnnn;
+ 
     --  Here arr is the actual subtype of the parameter (and hence always
!    --  constrained). Then we replace the not with a call to this subprogram.
  
     procedure Expand_N_Op_Not (N : Node_Id) is
        Loc  : constant Source_Ptr := Sloc (N);
!       Typ  : constant Entity_Id  := Etype (Right_Opnd (N));
        Opnd : Node_Id;
        Arr  : Entity_Id;
        A    : Entity_Id;
*************** package body Exp_Ch4 is
*** 9825,9831 ****
  
           --  Special case the negation of a binary operation
  
!          elsif Nkind_In (Opnd, N_Op_And, N_Op_Or, N_Op_Xor)
             and then Safe_In_Place_Array_Op
                        (Name (Parent (N)), Left_Opnd (Opnd), Right_Opnd (Opnd))
           then
--- 10122,10128 ----
  
           --  Special case the negation of a binary operation
  
!          elsif Nkind (Opnd) in N_Op_And | N_Op_Or | N_Op_Xor
             and then Safe_In_Place_Array_Op
                        (Name (Parent (N)), Left_Opnd (Opnd), Right_Opnd (Opnd))
           then
*************** package body Exp_Ch4 is
*** 9862,9868 ****
        end if;
  
        A := Make_Defining_Identifier (Loc, Name_uA);
!       B := Make_Defining_Identifier (Loc, Name_uB);
        J := Make_Defining_Identifier (Loc, Name_uJ);
  
        A_J :=
--- 10159,10171 ----
        end if;
  
        A := Make_Defining_Identifier (Loc, Name_uA);
! 
!       if Transform_Function_Array then
!          B := Make_Defining_Identifier (Loc, Name_UP_RESULT);
!       else
!          B := Make_Defining_Identifier (Loc, Name_uB);
!       end if;
! 
        J := Make_Defining_Identifier (Loc, Name_uJ);
  
        A_J :=
*************** package body Exp_Ch4 is
*** 9897,9929 ****
        Func_Name := Make_Temporary (Loc, 'N');
        Set_Is_Inlined (Func_Name);
  
!       Insert_Action (N,
!         Make_Subprogram_Body (Loc,
!           Specification =>
!             Make_Function_Specification (Loc,
!               Defining_Unit_Name => Func_Name,
!               Parameter_Specifications => New_List (
!                 Make_Parameter_Specification (Loc,
!                   Defining_Identifier => A,
!                   Parameter_Type      => New_Occurrence_Of (Typ, Loc))),
!               Result_Definition => New_Occurrence_Of (Typ, Loc)),
  
!           Declarations => New_List (
!             Make_Object_Declaration (Loc,
!               Defining_Identifier => B,
!               Object_Definition   => New_Occurrence_Of (Arr, Loc))),
  
!           Handled_Statement_Sequence =>
!             Make_Handled_Sequence_Of_Statements (Loc,
!               Statements => New_List (
!                 Loop_Statement,
!                 Make_Simple_Return_Statement (Loc,
!                   Expression => Make_Identifier (Loc, Chars (B)))))));
  
!       Rewrite (N,
!         Make_Function_Call (Loc,
!           Name                   => New_Occurrence_Of (Func_Name, Loc),
!           Parameter_Associations => New_List (Opnd)));
  
        Analyze_And_Resolve (N, Typ);
     end Expand_N_Op_Not;
--- 10200,10281 ----
        Func_Name := Make_Temporary (Loc, 'N');
        Set_Is_Inlined (Func_Name);
  
!       if Transform_Function_Array then
!          Insert_Action (N,
!            Make_Subprogram_Body (Loc,
!              Specification =>
!                Make_Procedure_Specification (Loc,
!                  Defining_Unit_Name => Func_Name,
!                  Parameter_Specifications => New_List (
!                    Make_Parameter_Specification (Loc,
!                      Defining_Identifier => A,
!                      Parameter_Type      => New_Occurrence_Of (Typ, Loc)),
!                    Make_Parameter_Specification (Loc,
!                      Defining_Identifier => B,
!                      Out_Present         => True,
!                      Parameter_Type      => New_Occurrence_Of (Typ, Loc)))),
  
!              Declarations => New_List,
  
!              Handled_Statement_Sequence =>
!                Make_Handled_Sequence_Of_Statements (Loc,
!                  Statements => New_List (Loop_Statement))));
  
!          declare
!             Temp_Id : constant Entity_Id := Make_Temporary (Loc, 'T');
!             Call    : Node_Id;
!             Decl    : Node_Id;
! 
!          begin
!             --  Generate:
!             --    Temp : ...;
! 
!             Decl :=
!               Make_Object_Declaration (Loc,
!                 Defining_Identifier => Temp_Id,
!                 Object_Definition   => New_Occurrence_Of (Typ, Loc));
! 
!             --  Generate:
!             --    Proc_Call (Opnd, Temp);
! 
!             Call :=
!               Make_Procedure_Call_Statement (Loc,
!                 Name => New_Occurrence_Of (Func_Name, Loc),
!                 Parameter_Associations =>
!                   New_List (Opnd, New_Occurrence_Of (Temp_Id, Loc)));
! 
!             Insert_Actions (Parent (N), New_List (Decl, Call));
!             Rewrite (N, New_Occurrence_Of (Temp_Id, Loc));
!          end;
!       else
!          Insert_Action (N,
!            Make_Subprogram_Body (Loc,
!              Specification =>
!                Make_Function_Specification (Loc,
!                  Defining_Unit_Name => Func_Name,
!                  Parameter_Specifications => New_List (
!                    Make_Parameter_Specification (Loc,
!                      Defining_Identifier => A,
!                      Parameter_Type      => New_Occurrence_Of (Typ, Loc))),
!                  Result_Definition => New_Occurrence_Of (Typ, Loc)),
! 
!              Declarations => New_List (
!                Make_Object_Declaration (Loc,
!                  Defining_Identifier => B,
!                  Object_Definition   => New_Occurrence_Of (Arr, Loc))),
! 
!              Handled_Statement_Sequence =>
!                Make_Handled_Sequence_Of_Statements (Loc,
!                  Statements => New_List (
!                    Loop_Statement,
!                    Make_Simple_Return_Statement (Loc,
!                      Expression => Make_Identifier (Loc, Chars (B)))))));
! 
!          Rewrite (N,
!            Make_Function_Call (Loc,
!              Name                   => New_Occurrence_Of (Func_Name, Loc),
!              Parameter_Associations => New_List (Opnd)));
!       end if;
  
        Analyze_And_Resolve (N, Typ);
     end Expand_N_Op_Not;
*************** package body Exp_Ch4 is
*** 9959,9964 ****
--- 10311,10318 ----
     ----------------------
  
     procedure Expand_N_Op_Plus (N : Node_Id) is
+       Typ : constant Entity_Id := Etype (N);
+ 
     begin
        Unary_Op_Validity_Checks (N);
  
*************** package body Exp_Ch4 is
*** 9968,9973 ****
--- 10322,10333 ----
           Apply_Arithmetic_Overflow_Check (N);
           return;
        end if;
+ 
+       --  Try to narrow the operation
+ 
+       if Typ = Universal_Integer then
+          Narrow_Large_Operation (N);
+       end if;
     end Expand_N_Op_Plus;
  
     ---------------------
*************** package body Exp_Ch4 is
*** 10001,10006 ****
--- 10361,10376 ----
           return;
        end if;
  
+       --  Try to narrow the operation
+ 
+       if Typ = Universal_Integer then
+          Narrow_Large_Operation (N);
+ 
+          if Nkind (N) /= N_Op_Rem then
+             return;
+          end if;
+       end if;
+ 
        if Is_Integer_Type (Etype (N)) then
           Apply_Divide_Checks (N);
  
*************** package body Exp_Ch4 is
*** 10096,10110 ****
        --  where Bits is the shift count mod Esize (the mod operation here
        --  deals with ludicrous large shift counts, which are apparently OK).
  
!       --  What about nonbinary modulus ???
  
!       declare
!          Loc : constant Source_Ptr := Sloc (N);
!          Rtp : constant Entity_Id  := Etype (Right_Opnd (N));
!          Typ : constant Entity_Id  := Etype (N);
  
-       begin
-          if Modify_Tree_For_C then
              Rewrite (Right_Opnd (N),
                Make_Op_Rem (Loc,
                  Left_Opnd  => Relocate_Node (Right_Opnd (N)),
--- 10466,10482 ----
        --  where Bits is the shift count mod Esize (the mod operation here
        --  deals with ludicrous large shift counts, which are apparently OK).
  
!       if Modify_Tree_For_C then
!          declare
!             Loc : constant Source_Ptr := Sloc (N);
!             Rtp : constant Entity_Id  := Etype (Right_Opnd (N));
!             Typ : constant Entity_Id  := Etype (N);
  
!          begin
!             --  Sem_Intr should prevent getting there with a non binary modulus
! 
!             pragma Assert (not Non_Binary_Modulus (Typ));
  
              Rewrite (Right_Opnd (N),
                Make_Op_Rem (Loc,
                  Left_Opnd  => Relocate_Node (Right_Opnd (N)),
*************** package body Exp_Ch4 is
*** 10129,10136 ****
                            Duplicate_Subexpr_No_Checks (Right_Opnd (N))))));
  
              Analyze_And_Resolve (N, Typ);
!          end if;
!       end;
     end Expand_N_Op_Rotate_Left;
  
     ------------------------------
--- 10501,10508 ----
                            Duplicate_Subexpr_No_Checks (Right_Opnd (N))))));
  
              Analyze_And_Resolve (N, Typ);
!          end;
!       end if;
     end Expand_N_Op_Rotate_Left;
  
     ------------------------------
*************** package body Exp_Ch4 is
*** 10149,10170 ****
        --  where Bits is the shift count mod Esize (the mod operation here
        --  deals with ludicrous large shift counts, which are apparently OK).
  
!       --  What about nonbinary modulus ???
  
!       declare
!          Loc : constant Source_Ptr := Sloc (N);
!          Rtp : constant Entity_Id  := Etype (Right_Opnd (N));
!          Typ : constant Entity_Id  := Etype (N);
  
!       begin
!          Rewrite (Right_Opnd (N),
!            Make_Op_Rem (Loc,
!              Left_Opnd  => Relocate_Node (Right_Opnd (N)),
!              Right_Opnd => Make_Integer_Literal (Loc, Esize (Typ))));
  
!          Analyze_And_Resolve (Right_Opnd (N), Rtp);
  
-          if Modify_Tree_For_C then
              Rewrite (N,
                Make_Op_Or (Loc,
                  Left_Opnd =>
--- 10521,10544 ----
        --  where Bits is the shift count mod Esize (the mod operation here
        --  deals with ludicrous large shift counts, which are apparently OK).
  
!       if Modify_Tree_For_C then
!          declare
!             Loc : constant Source_Ptr := Sloc (N);
!             Rtp : constant Entity_Id  := Etype (Right_Opnd (N));
!             Typ : constant Entity_Id  := Etype (N);
  
!          begin
!             --  Sem_Intr should prevent getting there with a non binary modulus
  
!             pragma Assert (not Non_Binary_Modulus (Typ));
  
!             Rewrite (Right_Opnd (N),
!               Make_Op_Rem (Loc,
!                 Left_Opnd  => Relocate_Node (Right_Opnd (N)),
!                 Right_Opnd => Make_Integer_Literal (Loc, Esize (Typ))));
! 
!             Analyze_And_Resolve (Right_Opnd (N), Rtp);
  
              Rewrite (N,
                Make_Op_Or (Loc,
                  Left_Opnd =>
*************** package body Exp_Ch4 is
*** 10182,10189 ****
                            Duplicate_Subexpr_No_Checks (Right_Opnd (N))))));
  
              Analyze_And_Resolve (N, Typ);
!          end if;
!       end;
     end Expand_N_Op_Rotate_Right;
  
     ----------------------------
--- 10556,10563 ----
                            Duplicate_Subexpr_No_Checks (Right_Opnd (N))))));
  
              Analyze_And_Resolve (N, Typ);
!          end;
!       end if;
     end Expand_N_Op_Rotate_Right;
  
     ----------------------------
*************** package body Exp_Ch4 is
*** 10213,10218 ****
--- 10587,10596 ----
              Hi    : Uint;
  
           begin
+             --  Sem_Intr should prevent getting there with a non binary modulus
+ 
+             pragma Assert (not Non_Binary_Modulus (Typ));
+ 
              if Compile_Time_Known_Value (Right) then
                 if Expr_Value (Right) >= Siz then
                    Rewrite (N, Make_Integer_Literal (Loc, 0));
*************** package body Exp_Ch4 is
*** 10270,10276 ****
        Binary_Op_Validity_Checks (N);
  
        --  If we are in Modify_Tree_For_C mode, there is no shift right
!       --  arithmetic in C, so we rewrite in terms of logical shifts.
  
        --    Shift_Right (Num, Bits) or
        --      (if Num >= Sign
--- 10648,10661 ----
        Binary_Op_Validity_Checks (N);
  
        --  If we are in Modify_Tree_For_C mode, there is no shift right
!       --  arithmetic in C, so we rewrite in terms of logical shifts for
!       --  modular integers, and keep the Shift_Right intrinsic for signed
!       --  integers: even though doing a shift on a signed integer is not
!       --  fully guaranteed by the C standard, this is what C compilers
!       --  implement in practice.
!       --  Consider also taking advantage of this for modular integers by first
!       --  performing an unchecked conversion of the modular integer to a signed
!       --  integer of the same sign, and then convert back.
  
        --    Shift_Right (Num, Bits) or
        --      (if Num >= Sign
*************** package body Exp_Ch4 is
*** 10279,10304 ****
  
        --  Here Mask is all 1 bits (2**size - 1), and Sign is 2**(size - 1)
  
-       --  Note: in almost all C compilers it would work to just shift a
-       --  signed integer right, but it's undefined and we cannot rely on it.
- 
        --  Note: the above works fine for shift counts greater than or equal
        --  to the word size, since in this case (not (Shift_Right (Mask, bits)))
        --  generates all 1'bits.
  
!       --  What about nonbinary modulus ???
  
!       declare
!          Loc   : constant Source_Ptr := Sloc (N);
!          Typ   : constant Entity_Id  := Etype (N);
!          Sign  : constant Uint       := 2 ** (Esize (Typ) - 1);
!          Mask  : constant Uint       := (2 ** Esize (Typ)) - 1;
!          Left  : constant Node_Id    := Left_Opnd (N);
!          Right : constant Node_Id    := Right_Opnd (N);
!          Maskx : Node_Id;
  
!       begin
!          if Modify_Tree_For_C then
  
              --  Here if not (Shift_Right (Mask, bits)) can be computed at
              --  compile time as a single constant.
--- 10664,10687 ----
  
        --  Here Mask is all 1 bits (2**size - 1), and Sign is 2**(size - 1)
  
        --  Note: the above works fine for shift counts greater than or equal
        --  to the word size, since in this case (not (Shift_Right (Mask, bits)))
        --  generates all 1'bits.
  
!       if Modify_Tree_For_C and then Is_Modular_Integer_Type (Etype (N)) then
!          declare
!             Loc   : constant Source_Ptr := Sloc (N);
!             Typ   : constant Entity_Id  := Etype (N);
!             Sign  : constant Uint       := 2 ** (Esize (Typ) - 1);
!             Mask  : constant Uint       := (2 ** Esize (Typ)) - 1;
!             Left  : constant Node_Id    := Left_Opnd (N);
!             Right : constant Node_Id    := Right_Opnd (N);
!             Maskx : Node_Id;
  
!          begin
!             --  Sem_Intr should prevent getting there with a non binary modulus
  
!             pragma Assert (not Non_Binary_Modulus (Typ));
  
              --  Here if not (Shift_Right (Mask, bits)) can be computed at
              --  compile time as a single constant.
*************** package body Exp_Ch4 is
*** 10344,10351 ****
                        Maskx,
                        Make_Integer_Literal (Loc, 0)))));
              Analyze_And_Resolve (N, Typ);
!          end if;
!       end;
     end Expand_N_Op_Shift_Right_Arithmetic;
  
     --------------------------
--- 10727,10734 ----
                        Maskx,
                        Make_Integer_Literal (Loc, 0)))));
              Analyze_And_Resolve (N, Typ);
!          end;
!       end if;
     end Expand_N_Op_Shift_Right_Arithmetic;
  
     --------------------------
*************** package body Exp_Ch4 is
*** 10365,10370 ****
--- 10748,10763 ----
           return;
        end if;
  
+       --  Try to narrow the operation
+ 
+       if Typ = Universal_Integer then
+          Narrow_Large_Operation (N);
+ 
+          if Nkind (N) /= N_Op_Subtract then
+             return;
+          end if;
+       end if;
+ 
        --  N - 0 = N for integer types
  
        if Is_Integer_Type (Typ)
*************** package body Exp_Ch4 is
*** 10440,10445 ****
--- 10833,10842 ----
  
        Apply_Constraint_Check (Operand, Target_Type, No_Sliding => True);
  
+       --  Apply possible predicate check
+ 
+       Apply_Predicate_Check (Operand, Target_Type);
+ 
        if Do_Range_Check (Operand) then
           Generate_Range_Check (Operand, Target_Type, CE_Range_Check_Failed);
        end if;
*************** package body Exp_Ch4 is
*** 10588,10594 ****
        Par   : constant Node_Id    := Parent (N);
        P     : constant Node_Id    := Prefix (N);
        S     : constant Node_Id    := Selector_Name (N);
!       Ptyp  : Entity_Id           := Underlying_Type (Etype (P));
        Disc  : Entity_Id;
        New_N : Node_Id;
        Dcon  : Elmt_Id;
--- 10985,10991 ----
        Par   : constant Node_Id    := Parent (N);
        P     : constant Node_Id    := Prefix (N);
        S     : constant Node_Id    := Selector_Name (N);
!       Ptyp  : constant Entity_Id  := Underlying_Type (Etype (P));
        Disc  : Entity_Id;
        New_N : Node_Id;
        Dcon  : Elmt_Id;
*************** package body Exp_Ch4 is
*** 10639,10659 ****
     --  Start of processing for Expand_N_Selected_Component
  
     begin
-       --  Insert explicit dereference if required
- 
-       if Is_Access_Type (Ptyp) then
- 
-          --  First set prefix type to proper access type, in case it currently
-          --  has a private (non-access) view of this type.
- 
-          Set_Etype (P, Ptyp);
- 
-          Insert_Explicit_Dereference (P);
-          Analyze_And_Resolve (P, Designated_Type (Ptyp));
- 
-          Ptyp := Etype (P);
-       end if;
- 
        --  Deal with discriminant check required
  
        if Do_Discriminant_Check (N) then
--- 11036,11041 ----
*************** package body Exp_Ch4 is
*** 10780,10786 ****
                    --  because the selected component may be a reference to the
                    --  object being initialized, whose discriminant is not yet
                    --  set. This only happens in complex cases involving changes
!                   --  or representation.
  
                    if Disc = Entity (Selector_Name (N))
                      and then (Is_Entity_Name (Dval)
--- 11162,11168 ----
                    --  because the selected component may be a reference to the
                    --  object being initialized, whose discriminant is not yet
                    --  set. This only happens in complex cases involving changes
!                   --  of representation.
  
                    if Disc = Entity (Selector_Name (N))
                      and then (Is_Entity_Name (Dval)
*************** package body Exp_Ch4 is
*** 10792,10806 ****
                       --  constrained by an outer discriminant, which cannot
                       --  be optimized away.
  
!                      if Denotes_Discriminant
!                           (Dval, Check_Concurrent => True)
!                      then
!                         exit Discr_Loop;
! 
!                      elsif Nkind (Original_Node (Dval)) = N_Selected_Component
!                        and then
!                          Denotes_Discriminant
!                            (Selector_Name (Original_Node (Dval)), True)
                       then
                          exit Discr_Loop;
  
--- 11174,11180 ----
                       --  constrained by an outer discriminant, which cannot
                       --  be optimized away.
  
!                      if Denotes_Discriminant (Dval, Check_Concurrent => True)
                       then
                          exit Discr_Loop;
  
*************** package body Exp_Ch4 is
*** 10983,10991 ****
              --  since these are additional cases that do can appear on
              --  procedure actuals.
  
!             elsif Nkind_In (Par, N_Type_Conversion,
!                                  N_Parameter_Association,
!                                  N_Qualified_Expression)
              then
                 Par := Parent (Par);
  
--- 11357,11365 ----
              --  since these are additional cases that do can appear on
              --  procedure actuals.
  
!             elsif Nkind (Par) in N_Type_Conversion
!                                | N_Parameter_Association
!                                | N_Qualified_Expression
              then
                 Par := Parent (Par);
  
*************** package body Exp_Ch4 is
*** 11026,11048 ****
        --  Local variables
  
        Pref     : constant Node_Id := Prefix (N);
-       Pref_Typ : Entity_Id        := Etype (Pref);
  
     --  Start of processing for Expand_N_Slice
  
     begin
-       --  Special handling for access types
- 
-       if Is_Access_Type (Pref_Typ) then
-          Pref_Typ := Designated_Type (Pref_Typ);
- 
-          Rewrite (Pref,
-            Make_Explicit_Dereference (Sloc (N),
-             Prefix => Relocate_Node (Pref)));
- 
-          Analyze_And_Resolve (Pref, Pref_Typ);
-       end if;
- 
        --  Ada 2005 (AI-318-02): If the prefix is a call to a build-in-place
        --  function, then additional actuals must be passed.
  
--- 11400,11409 ----
*************** package body Exp_Ch4 is
*** 11148,11153 ****
--- 11509,11519 ----
        --  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
+       --  statically deeper accessibility rules apply to it.
+ 
        --------------------------
        -- Discrete_Range_Check --
        --------------------------
*************** package body Exp_Ch4 is
*** 11160,11167 ****
           Expr : Node_Id;
           Ityp : Entity_Id;
  
        begin
!          --  Nothing to do if conversion was rewritten
  
           if Nkind (N) /= N_Type_Conversion then
              return;
--- 11526,11578 ----
           Expr : Node_Id;
           Ityp : Entity_Id;
  
+          procedure Generate_Temporary;
+          --  Generate a temporary to facilitate in the C backend the code
+          --  generation of the unchecked conversion since the size of the
+          --  source type may differ from the size of the target type.
+ 
+          ------------------------
+          -- Generate_Temporary --
+          ------------------------
+ 
+          procedure Generate_Temporary is
+          begin
+             if Esize (Etype (Expr)) < Esize (Etype (Ityp)) then
+                declare
+                   Exp_Type : constant Entity_Id := Ityp;
+                   Def_Id   : constant Entity_Id :=
+                                Make_Temporary (Loc, 'R', Expr);
+                   E        : Node_Id;
+                   Res      : Node_Id;
+ 
+                begin
+                   Set_Is_Internal (Def_Id);
+                   Set_Etype (Def_Id, Exp_Type);
+                   Res := New_Occurrence_Of (Def_Id, Loc);
+ 
+                   E :=
+                     Make_Object_Declaration (Loc,
+                       Defining_Identifier => Def_Id,
+                       Object_Definition   => New_Occurrence_Of
+                                                (Exp_Type, Loc),
+                       Constant_Present    => True,
+                       Expression          => Relocate_Node (Expr));
+ 
+                   Set_Assignment_OK (E);
+                   Insert_Action (Expr, E);
+ 
+                   Set_Assignment_OK (Res, Assignment_OK (Expr));
+ 
+                   Rewrite (Expr, Res);
+                   Analyze_And_Resolve (Expr, Exp_Type);
+                end;
+             end if;
+          end Generate_Temporary;
+ 
+       --  Start of processing for Discrete_Range_Check
+ 
        begin
!          --  Nothing more to do if conversion was rewritten
  
           if Nkind (N) /= N_Type_Conversion then
              return;
*************** package body Exp_Ch4 is
*** 11169,11174 ****
--- 11580,11589 ----
  
           Expr := Expression (N);
  
+          --  Clear the Do_Range_Check flag on Expr
+ 
+          Set_Do_Range_Check (Expr, False);
+ 
           --  Nothing to do if range checks suppressed
  
           if Range_Checks_Suppressed (Target_Type) then
*************** package body Exp_Ch4 is
*** 11187,11202 ****
           --  Before we do a range check, we have to deal with treating
           --  a fixed-point operand as an integer. The way we do this
           --  is simply to do an unchecked conversion to an appropriate
!          --  integer type large enough to hold the result.
  
           if Is_Fixed_Point_Type (Etype (Expr)) then
!             if Esize (Base_Type (Etype (Expr))) > Esize (Standard_Integer) then
!                Ityp := Standard_Long_Long_Integer;
!             else
!                Ityp := Standard_Integer;
              end if;
  
-             Set_Do_Range_Check (Expr, False);
              Rewrite (Expr, Unchecked_Convert_To (Ityp, Expr));
           end if;
  
--- 11602,11621 ----
           --  Before we do a range check, we have to deal with treating
           --  a fixed-point operand as an integer. The way we do this
           --  is simply to do an unchecked conversion to an appropriate
!          --  integer type with the smallest size, so that we can suppress
!          --  trivial checks.
  
           if Is_Fixed_Point_Type (Etype (Expr)) then
!             Ityp := Small_Integer_Type_For
!                       (Esize (Base_Type (Etype (Expr))), False);
! 
!             --  Generate a temporary with the integer type to facilitate in the
!             --  C backend the code generation for the unchecked conversion.
! 
!             if Modify_Tree_For_C then
!                Generate_Temporary;
              end if;
  
              Rewrite (Expr, Unchecked_Convert_To (Ityp, Expr));
           end if;
  
*************** package body Exp_Ch4 is
*** 11222,11228 ****
        begin
           --  Nothing else to do if no change of representation
  
!          if Same_Representation (Operand_Type, Target_Type) then
              return;
  
           --  The real change of representation work is done by the assignment
--- 11641,11647 ----
        begin
           --  Nothing else to do if no change of representation
  
!          if Has_Compatible_Representation (Target_Type, Operand_Type) then
              return;
  
           --  The real change of representation work is done by the assignment
*************** package body Exp_Ch4 is
*** 11433,11439 ****
           Tnn    : Entity_Id;
  
        begin
!          --  Nothing to do if conversion was rewritten
  
           if Nkind (N) /= N_Type_Conversion then
              return;
--- 11852,11858 ----
           Tnn    : Entity_Id;
  
        begin
!          --  Nothing more to do if conversion was rewritten
  
           if Nkind (N) /= N_Type_Conversion then
              return;
*************** package body Exp_Ch4 is
*** 11441,11447 ****
  
           Expr := Expression (N);
  
!          --  Clear the flag once for all
  
           Set_Do_Range_Check (Expr, False);
  
--- 11860,11866 ----
  
           Expr := Expression (N);
  
!          --  Clear the Do_Range_Check flag on Expr
  
           Set_Do_Range_Check (Expr, False);
  
*************** package body Exp_Ch4 is
*** 11551,11583 ****
           --  which used to fail when Fix_Val was a bound of the type and
           --  the 'Small was not a representable number.
           --  This transformation requires an integer type large enough to
!          --  accommodate a fixed-point value. This will not be the case
!          --  in systems where Duration is larger than Long_Integer.
  
           if Is_Ordinary_Fixed_Point_Type (Target_Type)
             and then Is_Floating_Point_Type (Etype (Expr))
!            and then RM_Size (Btyp) <= RM_Size (Standard_Long_Integer)
             and then Nkind (Lo) = N_Real_Literal
             and then Nkind (Hi) = N_Real_Literal
           then
              declare
                 Expr_Id : constant Entity_Id := Make_Temporary (Loc, 'T', Conv);
!                Int_Type : Entity_Id;
  
              begin
-                --  Find an integer type of the appropriate size to perform an
-                --  unchecked conversion to the target fixed-point type.
- 
-                if RM_Size (Btyp) > RM_Size (Standard_Integer) then
-                   Int_Type := Standard_Long_Integer;
- 
-                elsif RM_Size (Btyp) > RM_Size (Standard_Short_Integer) then
-                   Int_Type := Standard_Integer;
- 
-                else
-                   Int_Type := Standard_Short_Integer;
-                end if;
- 
                 --  Generate a temporary with the integer value. Required in the
                 --  CCG compiler to ensure that run-time checks reference this
                 --  integer expression (instead of the resulting fixed-point
--- 11970,11989 ----
           --  which used to fail when Fix_Val was a bound of the type and
           --  the 'Small was not a representable number.
           --  This transformation requires an integer type large enough to
!          --  accommodate a fixed-point value.
  
           if Is_Ordinary_Fixed_Point_Type (Target_Type)
             and then Is_Floating_Point_Type (Etype (Expr))
!            and then RM_Size (Btyp) <= System_Max_Integer_Size
             and then Nkind (Lo) = N_Real_Literal
             and then Nkind (Hi) = N_Real_Literal
           then
              declare
                 Expr_Id : constant Entity_Id := Make_Temporary (Loc, 'T', Conv);
!                Int_Typ : constant Entity_Id :=
!                            Small_Integer_Type_For (RM_Size (Btyp), False);
  
              begin
                 --  Generate a temporary with the integer value. Required in the
                 --  CCG compiler to ensure that run-time checks reference this
                 --  integer expression (instead of the resulting fixed-point
*************** package body Exp_Ch4 is
*** 11587,11609 ****
                 Insert_Action (N,
                   Make_Object_Declaration (Loc,
                     Defining_Identifier => Expr_Id,
!                    Object_Definition   => New_Occurrence_Of (Int_Type, Loc),
                     Constant_Present    => True,
                     Expression          =>
!                      Convert_To (Int_Type, Expression (Conv))));
  
                 --  Create integer objects for range checking of result.
  
                 Lo_Arg :=
                   Unchecked_Convert_To
!                    (Int_Type, New_Occurrence_Of (Expr_Id, Loc));
  
                 Lo_Val :=
                   Make_Integer_Literal (Loc, Corresponding_Integer_Value (Lo));
  
                 Hi_Arg :=
                   Unchecked_Convert_To
!                    (Int_Type, New_Occurrence_Of (Expr_Id, Loc));
  
                 Hi_Val :=
                   Make_Integer_Literal (Loc, Corresponding_Integer_Value (Hi));
--- 11993,12015 ----
                 Insert_Action (N,
                   Make_Object_Declaration (Loc,
                     Defining_Identifier => Expr_Id,
!                    Object_Definition   => New_Occurrence_Of (Int_Typ, Loc),
                     Constant_Present    => True,
                     Expression          =>
!                      Convert_To (Int_Typ, Expression (Conv))));
  
                 --  Create integer objects for range checking of result.
  
                 Lo_Arg :=
                   Unchecked_Convert_To
!                    (Int_Typ, New_Occurrence_Of (Expr_Id, Loc));
  
                 Lo_Val :=
                   Make_Integer_Literal (Loc, Corresponding_Integer_Value (Lo));
  
                 Hi_Arg :=
                   Unchecked_Convert_To
!                    (Int_Typ, New_Occurrence_Of (Expr_Id, Loc));
  
                 Hi_Val :=
                   Make_Integer_Literal (Loc, Corresponding_Integer_Value (Hi));
*************** package body Exp_Ch4 is
*** 11671,11683 ****
  
        function Has_Extra_Accessibility (Id : Entity_Id) return Boolean is
        begin
!          if Is_Formal (Id) or else Ekind_In (Id, E_Constant, E_Variable) then
              return Present (Effective_Extra_Accessibility (Id));
           else
              return False;
           end if;
        end Has_Extra_Accessibility;
  
     --  Start of processing for Expand_N_Type_Conversion
  
     begin
--- 12077,12108 ----
  
        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 --
+       ----------------------------------------
+ 
+       function Statically_Deeper_Relation_Applies (Targ_Typ : Entity_Id)
+         return Boolean
+       is
+       begin
+          --  The case where the target type is an anonymous access type is
+          --  ignored since they have different semantics and get covered by
+          --  various runtime checks depending on context.
+ 
+          --  Note, the current implementation of this predicate is incomplete
+          --  and doesn't fully reflect the rules given in RM 3.10.2 (19) and
+          --  (19.1) ???
+ 
+          return Ekind (Targ_Typ) /= E_Anonymous_Access_Type;
+       end Statically_Deeper_Relation_Applies;
+ 
     --  Start of processing for Expand_N_Type_Conversion
  
     begin
*************** package body Exp_Ch4 is
*** 11697,11710 ****
  
        --  Nothing at all to do if conversion is to the identical type so remove
        --  the conversion completely, it is useless, except that it may carry
!       --  an Assignment_OK attribute, which must be propagated to the operand.
  
        if Operand_Type = Target_Type then
           if Assignment_OK (N) then
              Set_Assignment_OK (Operand);
           end if;
  
           Rewrite (N, Relocate_Node (Operand));
           goto Done;
        end if;
  
--- 12122,12139 ----
  
        --  Nothing at all to do if conversion is to the identical type so remove
        --  the conversion completely, it is useless, except that it may carry
!       --  an Assignment_OK attribute, which must be propagated to the operand
!       --  and the Do_Range_Check flag on the operand must be cleared, if any.
  
        if Operand_Type = Target_Type then
           if Assignment_OK (N) then
              Set_Assignment_OK (Operand);
           end if;
  
+          Set_Do_Range_Check (Operand, False);
+ 
           Rewrite (N, Relocate_Node (Operand));
+ 
           goto Done;
        end if;
  
*************** package body Exp_Ch4 is
*** 11742,11747 ****
--- 12171,12209 ----
           Remove_Side_Effects (N);
           Insert_Action (N, Make_Invariant_Call (Duplicate_Subexpr (N)));
           goto Done;
+ 
+       --  AI12-0042: For a view conversion to a class-wide type occurring
+       --  within the immediate scope of T, from a specific type that is
+       --  a descendant of T (including T itself), an invariant check is
+       --  performed on the part of the object that is of type T. (We don't
+       --  need to explicitly check for the operand type being a descendant,
+       --  just that it's a specific type, because the conversion would be
+       --  illegal if it's specific and not a descendant -- downward conversion
+       --  is not allowed).
+ 
+       elsif Is_Class_Wide_Type (Target_Type)
+         and then not Is_Class_Wide_Type (Etype (Expression (N)))
+         and then Present (Invariant_Procedure (Root_Type (Target_Type)))
+         and then Comes_From_Source (N)
+         and then Within_Scope (Find_Enclosing_Scope (N), Scope (Target_Type))
+       then
+          Remove_Side_Effects (N);
+ 
+          --  Perform the invariant check on a conversion to the class-wide
+          --  type's root type.
+ 
+          declare
+             Root_Conv : constant Node_Id :=
+               Make_Type_Conversion (Loc,
+                 Subtype_Mark =>
+                   New_Occurrence_Of (Root_Type (Target_Type), Loc),
+                 Expression   => Duplicate_Subexpr (Expression (N)));
+          begin
+             Set_Etype (Root_Conv, Root_Type (Target_Type));
+ 
+             Insert_Action (N, Make_Invariant_Call (Root_Conv));
+             goto Done;
+          end;
        end if;
  
        --  Here if we may need to expand conversion
*************** package body Exp_Ch4 is
*** 11780,11786 ****
        --  in Checks.Apply_Arithmetic_Overflow_Check, but we catch more cases in
        --  the processing here. Also we still need the Checks circuit, since we
        --  have to be sure not to generate junk overflow checks in the first
!       --  place, since it would be trick to remove them here.
  
        if Integer_Promotion_Possible (N) then
  
--- 12242,12248 ----
        --  in Checks.Apply_Arithmetic_Overflow_Check, but we catch more cases in
        --  the processing here. Also we still need the Checks circuit, since we
        --  have to be sure not to generate junk overflow checks in the first
!       --  place, since it would be tricky to remove them here.
  
        if Integer_Promotion_Possible (N) then
  
*************** package body Exp_Ch4 is
*** 11791,11810 ****
              L, R : Node_Id;
  
           begin
-             R :=
-               Make_Type_Conversion (Loc,
-                 Subtype_Mark => New_Occurrence_Of (Standard_Integer, Loc),
-                 Expression   => Relocate_Node (Right_Opnd (Operand)));
- 
              Opnd := New_Op_Node (Nkind (Operand), Loc);
              Set_Right_Opnd (Opnd, R);
  
              if Nkind (Operand) in N_Binary_Op then
!                L :=
!                  Make_Type_Conversion (Loc,
!                    Subtype_Mark => New_Occurrence_Of (Standard_Integer, Loc),
!                    Expression   => Relocate_Node (Left_Opnd (Operand)));
! 
                 Set_Left_Opnd  (Opnd, L);
              end if;
  
--- 12253,12265 ----
              L, R : Node_Id;
  
           begin
              Opnd := New_Op_Node (Nkind (Operand), Loc);
+ 
+             R := Convert_To (Standard_Integer, Right_Opnd (Operand));
              Set_Right_Opnd (Opnd, R);
  
              if Nkind (Operand) in N_Binary_Op then
!                L := Convert_To (Standard_Integer, Left_Opnd (Operand));
                 Set_Left_Opnd  (Opnd, L);
              end if;
  
*************** package body Exp_Ch4 is
*** 11876,11884 ****
                        or else Attribute_Name (Original_Node (N)) = Name_Access)
           then
              if not Comes_From_Source (N)
!               and then Nkind_In (Parent (N), N_Function_Call,
!                                              N_Parameter_Association,
!                                              N_Procedure_Call_Statement)
                and then Is_Interface (Designated_Type (Target_Type))
                and then Is_Class_Wide_Type (Designated_Type (Target_Type))
              then
--- 12331,12339 ----
                        or else Attribute_Name (Original_Node (N)) = Name_Access)
           then
              if not Comes_From_Source (N)
!               and then Nkind (Parent (N)) in N_Function_Call
!                                            | N_Parameter_Association
!                                            | N_Procedure_Call_Statement
                and then Is_Interface (Designated_Type (Target_Type))
                and then Is_Class_Wide_Type (Designated_Type (Target_Type))
              then
*************** package body Exp_Ch4 is
*** 11886,11892 ****
  
              else
                 Apply_Accessibility_Check
!                  (Operand_Acc, Target_Type, Insert_Node => Operand);
              end if;
  
           --  If the level of the operand type is statically deeper than the
--- 12341,12347 ----
  
              else
                 Apply_Accessibility_Check
!                  (Operand, Target_Type, Insert_Node => Operand);
              end if;
  
           --  If the level of the operand type is statically deeper than the
*************** package body Exp_Ch4 is
*** 11898,11918 ****
           --  Note: warnings are issued by the analyzer for the instance cases
  
           elsif In_Instance_Body
! 
!            --  The case where the target type is an anonymous access type of
!            --  a discriminant is excluded, because the level of such a type
!            --  depends on the context and currently the level returned for such
!            --  types is zero, resulting in warnings about check failures
!            --  in certain legal cases involving class-wide interfaces as the
!            --  designated type (some cases, such as return statements, are
!            --  checked at run time, but not clear if these are handled right
!            --  in general, see 3.10.2(12/2-12.5/3) ???).
! 
!            and then
!              not (Ekind (Target_Type) = E_Anonymous_Access_Type
!                    and then Present (Associated_Node_For_Itype (Target_Type))
!                    and then Nkind (Associated_Node_For_Itype (Target_Type)) =
!                                                   N_Discriminant_Specification)
             and then
               Type_Access_Level (Operand_Type) > Type_Access_Level (Target_Type)
           then
--- 12353,12359 ----
           --  Note: warnings are issued by the analyzer for the instance cases
  
           elsif In_Instance_Body
!            and then Statically_Deeper_Relation_Applies (Target_Type)
             and then
               Type_Access_Level (Operand_Type) > Type_Access_Level (Target_Type)
           then
*************** package body Exp_Ch4 is
*** 11929,11936 ****
             and then Ekind (Operand_Type) = E_Anonymous_Access_Type
             and then Nkind (Operand) = N_Selected_Component
             and then Ekind (Entity (Selector_Name (Operand))) = E_Discriminant
!            and then Object_Access_Level (Operand) >
!                       Type_Access_Level (Target_Type)
           then
              Raise_Accessibility_Error;
              goto Done;
--- 12370,12377 ----
             and then Ekind (Operand_Type) = E_Anonymous_Access_Type
             and then Nkind (Operand) = N_Selected_Component
             and then Ekind (Entity (Selector_Name (Operand))) = E_Discriminant
!            and then Static_Accessibility_Level (Operand, Zero_On_Dynamic_Level)
!                       > Type_Access_Level (Target_Type)
           then
              Raise_Accessibility_Error;
              goto Done;
*************** package body Exp_Ch4 is
*** 11969,11975 ****
           Tagged_Conversion : declare
              Actual_Op_Typ   : Entity_Id;
              Actual_Targ_Typ : Entity_Id;
-             Make_Conversion : Boolean := False;
              Root_Op_Typ     : Entity_Id;
  
              procedure Make_Tag_Check (Targ_Typ : Entity_Id);
--- 12410,12415 ----
*************** package body Exp_Ch4 is
*** 12053,12130 ****
                 goto Done;
              end if;
  
!             if not Tag_Checks_Suppressed (Actual_Targ_Typ) then
! 
!                --  Create a runtime tag check for a downward class-wide type
!                --  conversion.
  
!                if Is_Class_Wide_Type (Actual_Op_Typ)
!                  and then Actual_Op_Typ /= Actual_Targ_Typ
!                  and then Root_Op_Typ /= Actual_Targ_Typ
!                  and then Is_Ancestor (Root_Op_Typ, Actual_Targ_Typ,
!                                        Use_Full_View => True)
!                then
                    Make_Tag_Check (Class_Wide_Type (Actual_Targ_Typ));
!                   Make_Conversion := True;
!                end if;
! 
!                --  AI05-0073: If the result subtype of the function is defined
!                --  by an access_definition designating a specific tagged type
!                --  T, a check is made that the result value is null or the tag
!                --  of the object designated by the result value identifies T.
!                --  Constraint_Error is raised if this check fails.
! 
!                if Nkind (Parent (N)) = N_Simple_Return_Statement then
!                   declare
!                      Func     : Entity_Id;
!                      Func_Typ : Entity_Id;
! 
!                   begin
!                      --  Climb scope stack looking for the enclosing function
! 
!                      Func := Current_Scope;
!                      while Present (Func)
!                        and then Ekind (Func) /= E_Function
!                      loop
!                         Func := Scope (Func);
!                      end loop;
! 
!                      --  The function's return subtype must be defined using
!                      --  an access definition.
! 
!                      if Nkind (Result_Definition (Parent (Func))) =
!                           N_Access_Definition
!                      then
!                         Func_Typ := Directly_Designated_Type (Etype (Func));
! 
!                         --  The return subtype denotes a specific tagged type,
!                         --  in other words, a non class-wide type.
! 
!                         if Is_Tagged_Type (Func_Typ)
!                           and then not Is_Class_Wide_Type (Func_Typ)
!                         then
!                            Make_Tag_Check (Actual_Targ_Typ);
!                            Make_Conversion := True;
!                         end if;
!                      end if;
!                   end;
!                end if;
! 
!                --  We have generated a tag check for either a class-wide type
!                --  conversion or for AI05-0073.
! 
!                if Make_Conversion then
!                   declare
!                      Conv : Node_Id;
!                   begin
!                      Conv :=
!                        Make_Unchecked_Type_Conversion (Loc,
!                          Subtype_Mark => New_Occurrence_Of (Target_Type, Loc),
!                          Expression   => Relocate_Node (Expression (N)));
!                      Rewrite (N, Conv);
!                      Analyze_And_Resolve (N, Target_Type);
!                   end;
!                end if;
              end if;
           end Tagged_Conversion;
  
--- 12493,12518 ----
                 goto Done;
              end if;
  
!             --  Create a runtime tag check for a downward CW type conversion
  
!             if Is_Class_Wide_Type (Actual_Op_Typ)
!               and then Actual_Op_Typ /= Actual_Targ_Typ
!               and then Root_Op_Typ /= Actual_Targ_Typ
!               and then Is_Ancestor
!                          (Root_Op_Typ, Actual_Targ_Typ, Use_Full_View => True)
!               and then not Tag_Checks_Suppressed (Actual_Targ_Typ)
!             then
!                declare
!                   Conv : Node_Id;
!                begin
                    Make_Tag_Check (Class_Wide_Type (Actual_Targ_Typ));
!                   Conv :=
!                     Make_Unchecked_Type_Conversion (Loc,
!                       Subtype_Mark => New_Occurrence_Of (Target_Type, Loc),
!                       Expression   => Relocate_Node (Expression (N)));
!                   Rewrite (N, Conv);
!                   Analyze_And_Resolve (N, Target_Type);
!                end;
              end if;
           end Tagged_Conversion;
  
*************** package body Exp_Ch4 is
*** 12138,12144 ****
        --  These conversions require special expansion and processing, found in
        --  the Exp_Fixd package. We ignore cases where Conversion_OK is set,
        --  since from a semantic point of view, these are simple integer
!       --  conversions, which do not need further processing.
  
        elsif Is_Fixed_Point_Type (Operand_Type)
          and then not Conversion_OK (N)
--- 12526,12534 ----
        --  These conversions require special expansion and processing, found in
        --  the Exp_Fixd package. We ignore cases where Conversion_OK is set,
        --  since from a semantic point of view, these are simple integer
!       --  conversions, which do not need further processing except for the
!       --  generation of range checks, which is performed at the end of this
!       --  procedure.
  
        elsif Is_Fixed_Point_Type (Operand_Type)
          and then not Conversion_OK (N)
*************** package body Exp_Ch4 is
*** 12158,12180 ****
             and then Nkind (Parent (N)) = N_Attribute_Reference
             and then Attribute_Name (Parent (N)) = Name_Round
           then
-             Set_Rounded_Result (N);
              Set_Etype (N, Etype (Parent (N)));
              Target_Type := Etype (N);
           end if;
  
           if Is_Fixed_Point_Type (Target_Type) then
              Expand_Convert_Fixed_To_Fixed (N);
-             Real_Range_Check;
- 
           elsif Is_Integer_Type (Target_Type) then
              Expand_Convert_Fixed_To_Integer (N);
-             Discrete_Range_Check;
- 
           else
              pragma Assert (Is_Floating_Point_Type (Target_Type));
              Expand_Convert_Fixed_To_Float (N);
-             Real_Range_Check;
           end if;
  
        --  Case of conversions to a fixed-point type
--- 12548,12565 ----
             and then Nkind (Parent (N)) = N_Attribute_Reference
             and then Attribute_Name (Parent (N)) = Name_Round
           then
              Set_Etype (N, Etype (Parent (N)));
              Target_Type := Etype (N);
+             Set_Rounded_Result (N);
           end if;
  
           if Is_Fixed_Point_Type (Target_Type) then
              Expand_Convert_Fixed_To_Fixed (N);
           elsif Is_Integer_Type (Target_Type) then
              Expand_Convert_Fixed_To_Integer (N);
           else
              pragma Assert (Is_Floating_Point_Type (Target_Type));
              Expand_Convert_Fixed_To_Float (N);
           end if;
  
        --  Case of conversions to a fixed-point type
*************** package body Exp_Ch4 is
*** 12189,12199 ****
        then
           if Is_Integer_Type (Operand_Type) then
              Expand_Convert_Integer_To_Fixed (N);
-             Real_Range_Check;
           else
              pragma Assert (Is_Floating_Point_Type (Operand_Type));
              Expand_Convert_Float_To_Fixed (N);
-             Real_Range_Check;
           end if;
  
        --  Case of array conversions
--- 12574,12582 ----
*************** package body Exp_Ch4 is
*** 12262,12270 ****
           --  Special processing is required if there is a change of
           --  representation (from enumeration representation clauses).
  
!          if not Same_Representation (Target_Type, Operand_Type) then
  
!             --  Convert: x(y) to x'val (ytyp'val (y))
  
              Rewrite (N,
                Make_Attribute_Reference (Loc,
--- 12645,12655 ----
           --  Special processing is required if there is a change of
           --  representation (from enumeration representation clauses).
  
!          if not Has_Compatible_Representation (Target_Type, Operand_Type)
!            and then not Conversion_OK (N)
!          then
  
!             --  Convert: x(y) to x'val (ytyp'pos (y))
  
              Rewrite (N,
                Make_Attribute_Reference (Loc,
*************** package body Exp_Ch4 is
*** 12344,12349 ****
--- 12729,12736 ----
           then
              Real_Range_Check;
           end if;
+ 
+          pragma Assert (not Do_Range_Check (Expression (N)));
        end if;
  
        --  Here at end of processing
*************** package body Exp_Ch4 is
*** 12355,12362 ****
        --  guard is necessary to prevent infinite recursions when we generate
        --  internal conversions for the purpose of checking predicates.
  
!       if Present (Predicate_Function (Target_Type))
!         and then not Predicates_Ignored (Target_Type)
          and then Target_Type /= Operand_Type
          and then Comes_From_Source (N)
        then
--- 12742,12748 ----
        --  guard is necessary to prevent infinite recursions when we generate
        --  internal conversions for the purpose of checking predicates.
  
!       if Predicate_Enabled (Target_Type)
          and then Target_Type /= Operand_Type
          and then Comes_From_Source (N)
        then
*************** package body Exp_Ch4 is
*** 12364,12377 ****
              New_Expr : constant Node_Id := Duplicate_Subexpr (N);
  
           begin
!             --  Avoid infinite recursion on the subsequent expansion of
!             --  of the copy of the original type conversion. When needed,
!             --  a range check has already been applied to the expression.
  
              Set_Comes_From_Source (New_Expr, False);
              Insert_Action (N,
!                Make_Predicate_Check (Target_Type, New_Expr),
!                Suppress => Range_Check);
           end;
        end if;
     end Expand_N_Type_Conversion;
--- 12750,12763 ----
              New_Expr : constant Node_Id := Duplicate_Subexpr (N);
  
           begin
!             --  Avoid infinite recursion on the subsequent expansion of the
!             --  copy of the original type conversion. When needed, a range
!             --  check has already been applied to the expression.
  
              Set_Comes_From_Source (New_Expr, False);
              Insert_Action (N,
!               Make_Predicate_Check (Target_Type, New_Expr),
!               Suppress => Range_Check);
           end;
        end if;
     end Expand_N_Type_Conversion;
*************** package body Exp_Ch4 is
*** 12421,12476 ****
           return;
        end if;
  
-       --  If we have a conversion of a compile time known value to a target
-       --  type and the value is in range of the target type, then we can simply
-       --  replace the construct by an integer literal of the correct type. We
-       --  only apply this to integer types being converted. Possibly it may
-       --  apply in other cases, but it is too much trouble to worry about.
- 
-       --  Note that we do not do this transformation if the Kill_Range_Check
-       --  flag is set, since then the value may be outside the expected range.
-       --  This happens in the Normalize_Scalars case.
- 
-       --  We also skip this if either the target or operand type is biased
-       --  because in this case, the unchecked conversion is supposed to
-       --  preserve the bit pattern, not the integer value.
- 
-       if Is_Integer_Type (Target_Type)
-         and then not Has_Biased_Representation (Target_Type)
-         and then Is_Integer_Type (Operand_Type)
-         and then not Has_Biased_Representation (Operand_Type)
-         and then Compile_Time_Known_Value (Operand)
-         and then not Kill_Range_Check (N)
-       then
-          declare
-             Val : constant Uint := Expr_Value (Operand);
- 
-          begin
-             if Compile_Time_Known_Value (Type_Low_Bound (Target_Type))
-                  and then
-                Compile_Time_Known_Value (Type_High_Bound (Target_Type))
-                  and then
-                Val >= Expr_Value (Type_Low_Bound (Target_Type))
-                  and then
-                Val <= Expr_Value (Type_High_Bound (Target_Type))
-             then
-                Rewrite (N, Make_Integer_Literal (Sloc (N), Val));
- 
-                --  If Address is the target type, just set the type to avoid a
-                --  spurious type error on the literal when Address is a visible
-                --  integer type.
- 
-                if Is_Descendant_Of_Address (Target_Type) then
-                   Set_Etype (N, Target_Type);
-                else
-                   Analyze_And_Resolve (N, Target_Type);
-                end if;
- 
-                return;
-             end if;
-          end;
-       end if;
- 
        --  Generate an extra temporary for cases unsupported by the C backend
  
        if Modify_Tree_For_C then
--- 12807,12812 ----
*************** package body Exp_Ch4 is
*** 12559,12565 ****
  
              exit when No (Comp);
  
!             exit when Ekind_In (Comp, E_Discriminant, E_Component)
                and then not (
  
                --  Skip inherited components
--- 12895,12901 ----
  
              exit when No (Comp);
  
!             exit when Ekind (Comp) in E_Discriminant | E_Component
                and then not (
  
                --  Skip inherited components
*************** package body Exp_Ch4 is
*** 12698,12703 ****
--- 13034,13047 ----
                Make_Op_Eq (Sloc (Alt),
                  Left_Opnd  => L,
                  Right_Opnd => R);
+ 
+             if Is_Record_Or_Limited_Type (Etype (Alt)) then
+ 
+                --  We reset the Entity in order to use the primitive equality
+                --  of the type, as per RM 4.5.2 (28.1/4).
+ 
+                Set_Entity (Cond, Empty);
+             end if;
           end if;
  
           return Cond;
*************** package body Exp_Ch4 is
*** 12708,12723 ****
     begin
        Remove_Side_Effects (Lop);
  
!       Alt := Last (Alternatives (N));
        Res := Make_Cond (Alt);
  
-       Prev (Alt);
        while Present (Alt) loop
           Res :=
             Make_Or_Else (Sloc (Alt),
!              Left_Opnd  => Make_Cond (Alt),
!              Right_Opnd => Res);
!          Prev (Alt);
        end loop;
  
        Rewrite (N, Res);
--- 13052,13070 ----
     begin
        Remove_Side_Effects (Lop);
  
!       Alt := First (Alternatives (N));
        Res := Make_Cond (Alt);
+       Next (Alt);
+ 
+       --  We use left associativity as in the equivalent boolean case. This
+       --  kind of canonicalization helps the optimizer of the code generator.
  
        while Present (Alt) loop
           Res :=
             Make_Or_Else (Sloc (Alt),
!              Left_Opnd  => Res,
!              Right_Opnd => Make_Cond (Alt));
!          Next (Alt);
        end loop;
  
        Rewrite (N, Res);
*************** package body Exp_Ch4 is
*** 12970,12976 ****
        --  will be to universal real, and our real type comes from the Round
        --  attribute (as well as an indication that we must round the result)
  
!       if Nkind (Parent (Conv)) = N_Attribute_Reference
          and then Attribute_Name (Parent (Conv)) = Name_Round
        then
           Set_Etype (N, Base_Type (Etype (Parent (Conv))));
--- 13317,13324 ----
        --  will be to universal real, and our real type comes from the Round
        --  attribute (as well as an indication that we must round the result)
  
!       if Etype (Conv) = Universal_Real
!         and then Nkind (Parent (Conv)) = N_Attribute_Reference
          and then Attribute_Name (Parent (Conv)) = Name_Round
        then
           Set_Etype (N, Base_Type (Etype (Parent (Conv))));
*************** package body Exp_Ch4 is
*** 13326,13338 ****
             --  value and unary negation. Unary "+" is omitted since it is a
             --  no-op and thus can't overflow.
  
!            and then Nkind_In (Operand, N_Op_Abs,
!                                        N_Op_Add,
!                                        N_Op_Divide,
!                                        N_Op_Expon,
!                                        N_Op_Minus,
!                                        N_Op_Multiply,
!                                        N_Op_Subtract);
     end Integer_Promotion_Possible;
  
     ------------------------------
--- 13674,13682 ----
             --  value and unary negation. Unary "+" is omitted since it is a
             --  no-op and thus can't overflow.
  
!            and then Nkind (Operand) in
!                       N_Op_Abs   | N_Op_Add      | N_Op_Divide | N_Op_Expon |
!                       N_Op_Minus | N_Op_Multiply | N_Op_Subtract;
     end Integer_Promotion_Possible;
  
     ------------------------------
*************** package body Exp_Ch4 is
*** 13612,13617 ****
--- 13956,13970 ----
     --       return C;
     --    end Annn;
  
+    --    or in the case of Transform_Function_Array:
+ 
+    --    procedure Annn (A : typ; B: typ; RESULT: out typ) is
+    --    begin
+    --       for J in A'range loop
+    --          RESULT (J) := A (J) op B (J);
+    --       end loop;
+    --    end Annn;
+ 
     --  Here typ is the boolean array type
  
     function Make_Boolean_Array_Op
*************** package body Exp_Ch4 is
*** 13622,13630 ****
  
        A : constant Entity_Id := Make_Defining_Identifier (Loc, Name_uA);
        B : constant Entity_Id := Make_Defining_Identifier (Loc, Name_uB);
-       C : constant Entity_Id := Make_Defining_Identifier (Loc, Name_uC);
        J : constant Entity_Id := Make_Defining_Identifier (Loc, Name_uJ);
  
        A_J : Node_Id;
        B_J : Node_Id;
        C_J : Node_Id;
--- 13975,13984 ----
  
        A : constant Entity_Id := Make_Defining_Identifier (Loc, Name_uA);
        B : constant Entity_Id := Make_Defining_Identifier (Loc, Name_uB);
        J : constant Entity_Id := Make_Defining_Identifier (Loc, Name_uJ);
  
+       C   : Entity_Id;
+ 
        A_J : Node_Id;
        B_J : Node_Id;
        C_J : Node_Id;
*************** package body Exp_Ch4 is
*** 13636,13641 ****
--- 13990,14001 ----
        Loop_Statement : Node_Id;
  
     begin
+       if Transform_Function_Array then
+          C := Make_Defining_Identifier (Loc, Name_UP_RESULT);
+       else
+          C := Make_Defining_Identifier (Loc, Name_uC);
+       end if;
+ 
        A_J :=
          Make_Indexed_Component (Loc,
            Prefix      => New_Occurrence_Of (A, Loc),
*************** package body Exp_Ch4 is
*** 13698,13725 ****
            Defining_Identifier => B,
            Parameter_Type      => New_Occurrence_Of (Typ, Loc)));
  
        Func_Name := Make_Temporary (Loc, 'A');
        Set_Is_Inlined (Func_Name);
  
!       Func_Body :=
!         Make_Subprogram_Body (Loc,
!           Specification =>
!             Make_Function_Specification (Loc,
!               Defining_Unit_Name       => Func_Name,
!               Parameter_Specifications => Formals,
!               Result_Definition        => New_Occurrence_Of (Typ, Loc)),
  
!           Declarations => New_List (
!             Make_Object_Declaration (Loc,
!               Defining_Identifier => C,
!               Object_Definition   => New_Occurrence_Of (Typ, Loc))),
  
!           Handled_Statement_Sequence =>
!             Make_Handled_Sequence_Of_Statements (Loc,
!               Statements => New_List (
!                 Loop_Statement,
!                 Make_Simple_Return_Statement (Loc,
!                   Expression => New_Occurrence_Of (C, Loc)))));
  
        return Func_Body;
     end Make_Boolean_Array_Op;
--- 14058,14109 ----
            Defining_Identifier => B,
            Parameter_Type      => New_Occurrence_Of (Typ, Loc)));
  
+       if Transform_Function_Array then
+          Append_To (Formals,
+            Make_Parameter_Specification (Loc,
+              Defining_Identifier => C,
+              Out_Present         => True,
+              Parameter_Type      => New_Occurrence_Of (Typ, Loc)));
+       end if;
+ 
        Func_Name := Make_Temporary (Loc, 'A');
        Set_Is_Inlined (Func_Name);
  
!       if Transform_Function_Array then
!          Func_Body :=
!            Make_Subprogram_Body (Loc,
!              Specification =>
!                Make_Procedure_Specification (Loc,
!                  Defining_Unit_Name       => Func_Name,
!                  Parameter_Specifications => Formals),
  
!              Declarations => New_List,
  
!              Handled_Statement_Sequence =>
!                Make_Handled_Sequence_Of_Statements (Loc,
!                  Statements => New_List (Loop_Statement)));
! 
!       else
!          Func_Body :=
!            Make_Subprogram_Body (Loc,
!              Specification =>
!                Make_Function_Specification (Loc,
!                  Defining_Unit_Name       => Func_Name,
!                  Parameter_Specifications => Formals,
!                  Result_Definition        => New_Occurrence_Of (Typ, Loc)),
! 
!              Declarations => New_List (
!                Make_Object_Declaration (Loc,
!                  Defining_Identifier => C,
!                  Object_Definition   => New_Occurrence_Of (Typ, Loc))),
! 
!              Handled_Statement_Sequence =>
!                Make_Handled_Sequence_Of_Statements (Loc,
!                  Statements => New_List (
!                    Loop_Statement,
!                    Make_Simple_Return_Statement (Loc,
!                      Expression => New_Occurrence_Of (C, Loc)))));
!       end if;
  
        return Func_Body;
     end Make_Boolean_Array_Op;
*************** package body Exp_Ch4 is
*** 13735,13740 ****
--- 14119,14351 ----
            and then Overflow_Check_Mode in Minimized_Or_Eliminated;
     end Minimized_Eliminated_Overflow_Check;
  
+    ----------------------------
+    -- Narrow_Large_Operation --
+    ----------------------------
+ 
+    procedure Narrow_Large_Operation (N : Node_Id) is
+       Kind   : constant Node_Kind := Nkind (N);
+       In_Rng : constant Boolean   := Kind = N_In;
+       Binary : constant Boolean   := Kind in N_Binary_Op or else In_Rng;
+       Compar : constant Boolean   := Kind in N_Op_Compare or else In_Rng;
+       R      : constant Node_Id   := Right_Opnd (N);
+       Typ    : constant Entity_Id := Etype (R);
+       Tsiz   : constant Uint      := RM_Size (Typ);
+ 
+       function Get_Size_For_Range (Lo, Hi : Uint) return Uint;
+       --  Return the size of a small signed integer type covering Lo .. Hi.
+       --  The important thing is to return a size lower than that of Typ.
+ 
+       ------------------------
+       -- Get_Size_For_Range --
+       ------------------------
+ 
+       function Get_Size_For_Range (Lo, Hi : Uint) return Uint is
+ 
+          function Is_OK_For_Range (Siz : Uint) return Boolean;
+          --  Return True if a signed integer with given size can cover Lo .. Hi
+ 
+          --------------------------
+          -- Is_OK_For_Range --
+          --------------------------
+ 
+          function Is_OK_For_Range (Siz : Uint) return Boolean is
+             B : constant Uint := Uint_2 ** (Siz - 1);
+ 
+          begin
+             --  Test B = 2 ** (size - 1) (can accommodate -B .. +(B - 1))
+ 
+             return Lo >= -B and then Hi >= -B and then Lo < B and then Hi < B;
+          end Is_OK_For_Range;
+ 
+       begin
+          --  This is (almost always) the size of Integer
+ 
+          if Is_OK_For_Range (Uint_32) then
+             return Uint_32;
+ 
+          --  If the size of Typ is 64 then check 63
+ 
+          elsif Tsiz = Uint_64 and then Is_OK_For_Range (Uint_63) then
+             return Uint_63;
+ 
+          --  This is (almost always) the size of Long_Long_Integer
+ 
+          elsif Is_OK_For_Range (Uint_64) then
+             return Uint_64;
+ 
+          --  If the size of Typ is 128 then check 127
+ 
+          elsif Tsiz = Uint_128 and then Is_OK_For_Range (Uint_127) then
+             return Uint_127;
+ 
+          else
+             return Uint_128;
+          end if;
+       end Get_Size_For_Range;
+ 
+       --  Local variables
+ 
+       L          : Node_Id;
+       Llo, Lhi   : Uint;
+       Rlo, Rhi   : Uint;
+       Lsiz, Rsiz : Uint;
+       Nlo, Nhi   : Uint;
+       Nsiz       : Uint;
+       Ntyp       : Entity_Id;
+       Nop        : Node_Id;
+       OK         : Boolean;
+ 
+    --  Start of processing for Narrow_Large_Operation
+ 
+    begin
+       --  First, determine the range of the left operand, if any
+ 
+       if Binary then
+          L := Left_Opnd (N);
+          Determine_Range (L, OK, Llo, Lhi, Assume_Valid => True);
+          if not OK then
+             return;
+          end if;
+ 
+       else
+          L   := Empty;
+          Llo := Uint_0;
+          Lhi := Uint_0;
+       end if;
+ 
+       --  Second, determine the range of the right operand, which can itself
+       --  be a range, in which case we take the lower bound of the low bound
+       --  and the upper bound of the high bound.
+ 
+       if In_Rng then
+          declare
+             Zlo, Zhi : Uint;
+ 
+          begin
+             Determine_Range
+               (Low_Bound (R), OK, Rlo, Zhi, Assume_Valid => True);
+             if not OK then
+                return;
+             end if;
+ 
+             Determine_Range
+               (High_Bound (R), OK, Zlo, Rhi, Assume_Valid => True);
+             if not OK then
+                return;
+             end if;
+          end;
+ 
+       else
+          Determine_Range (R, OK, Rlo, Rhi, Assume_Valid => True);
+          if not OK then
+             return;
+          end if;
+       end if;
+ 
+       --  Then compute a size suitable for each range
+ 
+       if Binary then
+          Lsiz := Get_Size_For_Range (Llo, Lhi);
+       else
+          Lsiz := Uint_0;
+       end if;
+ 
+       Rsiz := Get_Size_For_Range (Rlo, Rhi);
+ 
+       --  Now compute the size of the narrower type
+ 
+       if Compar then
+          --  The type must be able to accommodate the operands
+ 
+          Nsiz := UI_Max (Lsiz, Rsiz);
+ 
+       else
+          --  The type must be able to accommodate the operand(s) and result.
+ 
+          --  Note that Determine_Range typically does not report the bounds of
+          --  the value as being larger than those of the base type, which means
+          --  that it does not report overflow (see also Enable_Overflow_Check).
+ 
+          Determine_Range (N, OK, Nlo, Nhi, Assume_Valid => True);
+          if not OK then
+             return;
+          end if;
+ 
+          --  Therefore, if Nsiz is not lower than the size of the original type
+          --  here, we cannot be sure that the operation does not overflow.
+ 
+          Nsiz := Get_Size_For_Range (Nlo, Nhi);
+          Nsiz := UI_Max (Nsiz, Lsiz);
+          Nsiz := UI_Max (Nsiz, Rsiz);
+       end if;
+ 
+       --  If the size is not lower than the size of the original type, then
+       --  there is no point in changing the type, except in the case where
+       --  we can remove a conversion to the original type from an operand.
+ 
+       if Nsiz >= Tsiz
+         and then not (Binary
+                        and then Nkind (L) = N_Type_Conversion
+                        and then Entity (Subtype_Mark (L)) = Typ)
+         and then not (Nkind (R) = N_Type_Conversion
+                        and then Entity (Subtype_Mark (R)) = Typ)
+       then
+          return;
+       end if;
+ 
+       --  Now pick the narrower type according to the size. We use the base
+       --  type instead of the first subtype because operations are done in
+       --  the base type, so this avoids the need for useless conversions.
+ 
+       if Nsiz <= System_Max_Integer_Size then
+          Ntyp := Etype (Integer_Type_For (Nsiz, Uns => False));
+       else
+          return;
+       end if;
+ 
+       --  Finally, rewrite the operation in the narrower type
+ 
+       Nop := New_Op_Node (Kind, Sloc (N));
+ 
+       if Binary then
+          Set_Left_Opnd (Nop, Convert_To (Ntyp, L));
+       end if;
+ 
+       if In_Rng then
+          Set_Right_Opnd (Nop,
+            Make_Range (Sloc (N),
+              Convert_To (Ntyp, Low_Bound (R)),
+              Convert_To (Ntyp, High_Bound (R))));
+       else
+          Set_Right_Opnd (Nop, Convert_To (Ntyp, R));
+       end if;
+ 
+       Rewrite (N, Nop);
+ 
+       if Compar then
+          --  Analyze it with the comparison type and checks suppressed since
+          --  the conversions of the operands cannot overflow.
+ 
+          Analyze_And_Resolve
+            (N, Etype (Original_Node (N)), Suppress => Overflow_Check);
+ 
+       else
+          --  Analyze it with the narrower type and checks suppressed, but only
+          --  when we are sure that the operation does not overflow, see above.
+ 
+          if Nsiz < Tsiz then
+             Analyze_And_Resolve (N, Ntyp, Suppress => Overflow_Check);
+          else
+             Analyze_And_Resolve (N, Ntyp);
+          end if;
+ 
+          --  Put back a conversion to the original type
+ 
+          Convert_To_And_Rewrite (Typ, N);
+       end if;
+    end Narrow_Large_Operation;
+ 
     --------------------------------
     -- Optimize_Length_Comparison --
     --------------------------------
*************** package body Exp_Ch4 is
*** 13752,13812 ****
        Is_Zero : Boolean;
        --  True for comparison operand of zero
  
        Comp : Node_Id;
        --  Comparison operand, set only if Is_Zero is false
  
!       Ent : Entity_Id := Empty;
!       --  Entity whose length is being compared
  
!       Index : Node_Id := Empty;
!       --  Integer_Literal node for length attribute expression, or Empty
        --  if there is no such expression present.
  
-       Ityp  : Entity_Id;
-       --  Type of array index to which 'Length is applied
- 
        Op : Node_Kind := Nkind (N);
        --  Kind of comparison operator, gets flipped if operands backwards
  
!       function Is_Optimizable (N : Node_Id) return Boolean;
!       --  Tests N to see if it is an optimizable comparison value (defined as
!       --  constant zero or one, or something else where the value is known to
!       --  be positive and in the range of 32-bits, and where the corresponding
!       --  Length value is also known to be 32-bits. If result is true, sets
!       --  Is_Zero, Ityp, and Comp accordingly.
  
!       function Is_Entity_Length (N : Node_Id) return Boolean;
        --  Tests if N is a length attribute applied to a simple entity. If so,
        --  returns True, and sets Ent to the entity, and Index to the integer
        --  literal provided as an attribute expression, or to Empty if none.
        --  Also returns True if the expression is a generated type conversion
        --  whose expression is of the desired form. This latter case arises
        --  when Apply_Universal_Integer_Attribute_Check installs a conversion
        --  to check for being in range, which is not needed in this context.
        --  Returns False if neither condition holds.
  
!       function Prepare_64 (N : Node_Id) return Node_Id;
!       --  Given a discrete expression, returns a Long_Long_Integer typed
!       --  expression representing the underlying value of the expression.
!       --  This is done with an unchecked conversion to the result type. We
!       --  use unchecked conversion to handle the enumeration type case.
  
        ----------------------
        -- Is_Entity_Length --
        ----------------------
  
!       function Is_Entity_Length (N : Node_Id) return Boolean is
        begin
           if Nkind (N) = N_Attribute_Reference
             and then Attribute_Name (N) = Name_Length
             and then Is_Entity_Name (Prefix (N))
           then
!             Ent := Entity (Prefix (N));
  
              if Present (Expressions (N)) then
!                Index := First (Expressions (N));
              else
!                Index := Empty;
              end if;
  
              return True;
--- 14363,14441 ----
        Is_Zero : Boolean;
        --  True for comparison operand of zero
  
+       Maybe_Superflat : Boolean;
+       --  True if we may be in the dynamic superflat case, i.e. Is_Zero is set
+       --  to false but the comparison operand can be zero at run time. In this
+       --  case, we normally cannot do anything because the canonical formula of
+       --  the length is not valid, but there is one exception: when the operand
+       --  is itself the length of an array with the same bounds as the array on
+       --  the LHS, we can entirely optimize away the comparison.
+ 
        Comp : Node_Id;
        --  Comparison operand, set only if Is_Zero is false
  
!       Ent : array (Pos range 1 .. 2) of Entity_Id := (Empty, Empty);
!       --  Entities whose length is being compared
  
!       Index : array (Pos range 1 .. 2) of Node_Id := (Empty, Empty);
!       --  Integer_Literal nodes for length attribute expressions, or Empty
        --  if there is no such expression present.
  
        Op : Node_Kind := Nkind (N);
        --  Kind of comparison operator, gets flipped if operands backwards
  
!       function Convert_To_Long_Long_Integer (N : Node_Id) return Node_Id;
!       --  Given a discrete expression, returns a Long_Long_Integer typed
!       --  expression representing the underlying value of the expression.
!       --  This is done with an unchecked conversion to Long_Long_Integer.
!       --  We use unchecked conversion to handle the enumeration type case.
  
!       function Is_Entity_Length (N : Node_Id; Num : Pos) return Boolean;
        --  Tests if N is a length attribute applied to a simple entity. If so,
        --  returns True, and sets Ent to the entity, and Index to the integer
        --  literal provided as an attribute expression, or to Empty if none.
+       --  Num is the index designating the relevant slot in Ent and Index.
        --  Also returns True if the expression is a generated type conversion
        --  whose expression is of the desired form. This latter case arises
        --  when Apply_Universal_Integer_Attribute_Check installs a conversion
        --  to check for being in range, which is not needed in this context.
        --  Returns False if neither condition holds.
  
!       function Is_Optimizable (N : Node_Id) return Boolean;
!       --  Tests N to see if it is an optimizable comparison value (defined as
!       --  constant zero or one, or something else where the value is known to
!       --  be nonnegative and in the 32-bit range and where the corresponding
!       --  Length value is also known to be 32 bits). If result is true, sets
!       --  Is_Zero, Maybe_Superflat and Comp accordingly.
! 
!       procedure Rewrite_For_Equal_Lengths;
!       --  Rewrite the comparison of two equal lengths into either True or False
! 
!       ----------------------------------
!       -- Convert_To_Long_Long_Integer --
!       ----------------------------------
! 
!       function Convert_To_Long_Long_Integer (N : Node_Id) return Node_Id is
!       begin
!          return Unchecked_Convert_To (Standard_Long_Long_Integer, N);
!       end Convert_To_Long_Long_Integer;
  
        ----------------------
        -- Is_Entity_Length --
        ----------------------
  
!       function Is_Entity_Length (N : Node_Id; Num : Pos) return Boolean is
        begin
           if Nkind (N) = N_Attribute_Reference
             and then Attribute_Name (N) = Name_Length
             and then Is_Entity_Name (Prefix (N))
           then
!             Ent (Num) := Entity (Prefix (N));
  
              if Present (Expressions (N)) then
!                Index (Num) := First (Expressions (N));
              else
!                Index (Num) := Empty;
              end if;
  
              return True;
*************** package body Exp_Ch4 is
*** 13814,13820 ****
           elsif Nkind (N) = N_Type_Conversion
             and then not Comes_From_Source (N)
           then
!             return Is_Entity_Length (Expression (N));
  
           else
              return False;
--- 14443,14449 ----
           elsif Nkind (N) = N_Type_Conversion
             and then not Comes_From_Source (N)
           then
!             return Is_Entity_Length (Expression (N), Num);
  
           else
              return False;
*************** package body Exp_Ch4 is
*** 13831,13894 ****
           Lo   : Uint;
           Hi   : Uint;
           Indx : Node_Id;
  
        begin
           if Compile_Time_Known_Value (N) then
              Val := Expr_Value (N);
  
              if Val = Uint_0 then
!                Is_Zero := True;
!                Comp    := Empty;
                 return True;
  
              elsif Val = Uint_1 then
!                Is_Zero := False;
!                Comp    := Empty;
                 return True;
              end if;
           end if;
  
!          --  Here we have to make sure of being within 32-bits
  
           Determine_Range (N, OK, Lo, Hi, Assume_Valid => True);
  
           if not OK
!            or else Lo < Uint_1
!            or else Hi > UI_From_Int (Int'Last)
           then
              return False;
           end if;
  
!          --  Comparison value was within range, so now we must check the index
!          --  value to make sure it is also within 32-bits.
  
!          Indx := First_Index (Etype (Ent));
  
!          if Present (Index) then
!             for J in 2 .. UI_To_Int (Intval (Index)) loop
!                Next_Index (Indx);
!             end loop;
!          end if;
  
!          Ityp := Etype (Indx);
  
!          if Esize (Ityp) > 32 then
              return False;
           end if;
  
           Is_Zero := False;
           Comp := N;
           return True;
        end Is_Optimizable;
  
!       ----------------
!       -- Prepare_64 --
!       ----------------
  
!       function Prepare_64 (N : Node_Id) return Node_Id is
        begin
!          return Unchecked_Convert_To (Standard_Long_Long_Integer, N);
!       end Prepare_64;
  
     --  Start of processing for Optimize_Length_Comparison
  
--- 14460,14565 ----
           Lo   : Uint;
           Hi   : Uint;
           Indx : Node_Id;
+          Dbl  : Boolean;
+          Ityp : Entity_Id;
  
        begin
           if Compile_Time_Known_Value (N) then
              Val := Expr_Value (N);
  
              if Val = Uint_0 then
!                Is_Zero         := True;
!                Maybe_Superflat := False;
!                Comp            := Empty;
                 return True;
  
              elsif Val = Uint_1 then
!                Is_Zero         := False;
!                Maybe_Superflat := False;
!                Comp            := Empty;
                 return True;
              end if;
           end if;
  
!          --  Here we have to make sure of being within a 32-bit range (take the
!          --  full unsigned range so the length of 32-bit arrays is accepted).
  
           Determine_Range (N, OK, Lo, Hi, Assume_Valid => True);
  
           if not OK
!            or else Lo < Uint_0
!            or else Hi > Uint_2 ** 32
           then
              return False;
           end if;
  
!          Maybe_Superflat := (Lo = Uint_0);
  
!          --  Tests if N is also a length attribute applied to a simple entity
  
!          Dbl := Is_Entity_Length (N, 2);
  
!          --  We can deal with the superflat case only if N is also a length
  
!          if Maybe_Superflat and then not Dbl then
              return False;
           end if;
  
+          --  Comparison value was within range, so now we must check the index
+          --  value to make sure it is also within 32 bits.
+ 
+          for K in Pos range 1 .. 2 loop
+             Indx := First_Index (Etype (Ent (K)));
+ 
+             if Present (Index (K)) then
+                for J in 2 .. UI_To_Int (Intval (Index (K))) loop
+                   Next_Index (Indx);
+                end loop;
+             end if;
+ 
+             Ityp := Etype (Indx);
+ 
+             if Esize (Ityp) > 32 then
+                return False;
+             end if;
+ 
+             exit when not Dbl;
+          end loop;
+ 
           Is_Zero := False;
           Comp := N;
           return True;
        end Is_Optimizable;
  
!       -------------------------------
!       -- Rewrite_For_Equal_Lengths --
!       -------------------------------
  
!       procedure Rewrite_For_Equal_Lengths is
        begin
!          case Op is
!             when N_Op_Eq
!                | N_Op_Ge
!                | N_Op_Le
!             =>
!                Rewrite (N,
!                  Convert_To (Typ,
!                     New_Occurrence_Of (Standard_True, Sloc (N))));
! 
!             when N_Op_Ne
!                | N_Op_Gt
!                | N_Op_Lt
!             =>
!                Rewrite (N,
!                  Convert_To (Typ,
!                     New_Occurrence_Of (Standard_False, Sloc (N))));
! 
!             when others =>
!                raise Program_Error;
!          end case;
! 
!          Analyze_And_Resolve (N, Typ);
!       end Rewrite_For_Equal_Lengths;
  
     --  Start of processing for Optimize_Length_Comparison
  
*************** package body Exp_Ch4 is
*** 13907,13920 ****
  
        --  Ent'Length op 0/1
  
!       if Is_Entity_Length (Left_Opnd (N))
          and then Is_Optimizable (Right_Opnd (N))
        then
           null;
  
        --  0/1 op Ent'Length
  
!       elsif Is_Entity_Length (Right_Opnd (N))
          and then Is_Optimizable (Left_Opnd (N))
        then
           --  Flip comparison to opposite sense
--- 14578,14591 ----
  
        --  Ent'Length op 0/1
  
!       if Is_Entity_Length (Left_Opnd (N), 1)
          and then Is_Optimizable (Right_Opnd (N))
        then
           null;
  
        --  0/1 op Ent'Length
  
!       elsif Is_Entity_Length (Right_Opnd (N), 1)
          and then Is_Optimizable (Left_Opnd (N))
        then
           --  Flip comparison to opposite sense
*************** package body Exp_Ch4 is
*** 14008,14048 ****
  
        Left :=
          Make_Attribute_Reference (Loc,
!           Prefix         => New_Occurrence_Of (Ent, Loc),
            Attribute_Name => Name_First);
  
!       if Present (Index) then
!          Set_Expressions (Left, New_List (New_Copy (Index)));
        end if;
  
        --  If general value case, then do the addition of (n - 1), and
        --  also add the needed conversions to type Long_Long_Integer.
  
        if Present (Comp) then
!          Left :=
!            Make_Op_Add (Loc,
!              Left_Opnd  => Prepare_64 (Left),
!              Right_Opnd =>
!                Make_Op_Subtract (Loc,
!                  Left_Opnd  => Prepare_64 (Comp),
!                  Right_Opnd => Make_Integer_Literal (Loc, 1)));
!       end if;
  
!       --  Build the Last reference we will use
  
!       Right :=
!         Make_Attribute_Reference (Loc,
!           Prefix         => New_Occurrence_Of (Ent, Loc),
!           Attribute_Name => Name_Last);
  
!       if Present (Index) then
!          Set_Expressions (Right, New_List (New_Copy (Index)));
        end if;
  
        --  If general operand, convert Last reference to Long_Long_Integer
  
        if Present (Comp) then
!          Right := Prepare_64 (Right);
        end if;
  
        --  Check for cases to optimize
--- 14679,14802 ----
  
        Left :=
          Make_Attribute_Reference (Loc,
!           Prefix         => New_Occurrence_Of (Ent (1), Loc),
            Attribute_Name => Name_First);
  
!       if Present (Index (1)) then
!          Set_Expressions (Left, New_List (New_Copy (Index (1))));
!       end if;
! 
!       --  Build the Last reference we will use
! 
!       Right :=
!         Make_Attribute_Reference (Loc,
!           Prefix         => New_Occurrence_Of (Ent (1), Loc),
!           Attribute_Name => Name_Last);
! 
!       if Present (Index (1)) then
!          Set_Expressions (Right, New_List (New_Copy (Index (1))));
        end if;
  
        --  If general value case, then do the addition of (n - 1), and
        --  also add the needed conversions to type Long_Long_Integer.
  
+       --  If n = Y'Length, we rewrite X'First + (n - 1) op X'Last into:
+ 
+       --    Y'Last + (X'First - Y'First) op X'Last
+ 
+       --  in the hope that X'First - Y'First can be computed statically.
+ 
        if Present (Comp) then
!          if Present (Ent (2)) then
!             declare
!                Y_First : constant Node_Id :=
!                  Make_Attribute_Reference (Loc,
!                    Prefix         => New_Occurrence_Of (Ent (2), Loc),
!                    Attribute_Name => Name_First);
!                Y_Last : constant Node_Id :=
!                  Make_Attribute_Reference (Loc,
!                    Prefix         => New_Occurrence_Of (Ent (2), Loc),
!                    Attribute_Name => Name_Last);
!                R : Compare_Result;
  
!             begin
!                if Present (Index (2)) then
!                   Set_Expressions (Y_First, New_List (New_Copy (Index (2))));
!                   Set_Expressions (Y_Last,  New_List (New_Copy (Index (2))));
!                end if;
  
!                Analyze (Left);
!                Analyze (Y_First);
  
!                --  If X'First = Y'First, simplify the above formula into a
!                --  direct comparison of Y'Last and X'Last.
! 
!                R := Compile_Time_Compare (Left, Y_First, Assume_Valid => True);
! 
!                if R = EQ then
!                   Analyze (Right);
!                   Analyze (Y_Last);
! 
!                   R := Compile_Time_Compare
!                                          (Right, Y_Last, Assume_Valid => True);
! 
!                   --  If the pairs of attributes are equal, we are done
! 
!                   if R = EQ then
!                      Rewrite_For_Equal_Lengths;
!                      return;
!                   end if;
! 
!                   --  If the base types are different, convert both operands to
!                   --  Long_Long_Integer, else compare them directly.
! 
!                   if Base_Type (Etype (Right)) /= Base_Type (Etype (Y_Last))
!                   then
!                      Left := Convert_To_Long_Long_Integer (Y_Last);
!                   else
!                      Left := Y_Last;
!                      Comp := Empty;
!                   end if;
! 
!                --  Otherwise, use the above formula as-is
! 
!                else
!                   Left :=
!                     Make_Op_Add (Loc,
!                       Left_Opnd  =>
!                         Convert_To_Long_Long_Integer (Y_Last),
!                       Right_Opnd =>
!                         Make_Op_Subtract (Loc,
!                           Left_Opnd  =>
!                             Convert_To_Long_Long_Integer (Left),
!                           Right_Opnd =>
!                             Convert_To_Long_Long_Integer (Y_First)));
!                end if;
!             end;
! 
!          --  General value case
! 
!          else
!             Left :=
!               Make_Op_Add (Loc,
!                 Left_Opnd  => Convert_To_Long_Long_Integer (Left),
!                 Right_Opnd =>
!                   Make_Op_Subtract (Loc,
!                     Left_Opnd  => Convert_To_Long_Long_Integer (Comp),
!                     Right_Opnd => Make_Integer_Literal (Loc, 1)));
!          end if;
!       end if;
! 
!       --  We cannot do anything in the superflat case past this point
! 
!       if Maybe_Superflat then
!          return;
        end if;
  
        --  If general operand, convert Last reference to Long_Long_Integer
  
        if Present (Comp) then
!          Right := Convert_To_Long_Long_Integer (Right);
        end if;
  
        --  Check for cases to optimize
*************** package body Exp_Ch4 is
*** 14119,14129 ****
           raise Program_Error;
        end if;
  
!       --  Rewrite and finish up
  
        Rewrite (N, Result);
!       Analyze_And_Resolve (N, Typ);
!       return;
     end Optimize_Length_Comparison;
  
     --------------------------------
--- 14873,14882 ----
           raise Program_Error;
        end if;
  
!       --  Rewrite and finish up (we can suppress overflow checks, see above)
  
        Rewrite (N, Result);
!       Analyze_And_Resolve (N, Typ, Suppress => Overflow_Check);
     end Optimize_Length_Comparison;
  
     --------------------------------
*************** package body Exp_Ch4 is
*** 14174,14182 ****
        --  transient object.
  
     begin
!       pragma Assert (Nkind_In (Expr, N_Case_Expression,
!                                      N_Expression_With_Actions,
!                                      N_If_Expression));
  
        --  When the context is a Boolean evaluation, all three nodes capture the
        --  result of their computation in a local temporary:
--- 14927,14935 ----
        --  transient object.
  
     begin
!       pragma Assert (Nkind (Expr) in N_Case_Expression
!                                    | N_Expression_With_Actions
!                                    | N_If_Expression);
  
        --  When the context is a Boolean evaluation, all three nodes capture the
        --  result of their computation in a local temporary:
*************** package body Exp_Ch4 is
*** 14243,14249 ****
        --      <or>
        --    Hook := Obj_Id'Unrestricted_Access;
  
!       if Ekind_In (Obj_Id, E_Constant, E_Variable)
          and then Present (Last_Aggregate_Assignment (Obj_Id))
        then
           Hook_Insert := Last_Aggregate_Assignment (Obj_Id);
--- 14996,15002 ----
        --      <or>
        --    Hook := Obj_Id'Unrestricted_Access;
  
!       if Ekind (Obj_Id) in E_Constant | E_Variable
          and then Present (Last_Aggregate_Assignment (Obj_Id))
        then
           Hook_Insert := Last_Aggregate_Assignment (Obj_Id);
*************** package body Exp_Ch4 is
*** 14307,14312 ****
--- 15060,15073 ----
           return;
        end if;
  
+       --  If both operands are static, then the comparison has been already
+       --  folded in evaluation.
+ 
+       pragma Assert
+         (not Is_Static_Expression (Left_Opnd (N))
+            or else
+          not Is_Static_Expression (Right_Opnd (N)));
+ 
        --  Determine the potential outcome of the comparison assuming that the
        --  operands are valid and emit a warning when the comparison evaluates
        --  to True or False only in the presence of invalid values.
*************** package body Exp_Ch4 is
*** 14322,14328 ****
           True_Result  => True_Result,
           False_Result => False_Result);
  
!       --  The outcome is a decisive False or True, rewrite the operator
  
        if False_Result or True_Result then
           Rewrite (N,
--- 15083,15090 ----
           True_Result  => True_Result,
           False_Result => False_Result);
  
!       --  The outcome is a decisive False or True, rewrite the operator into a
!       --  non-static literal.
  
        if False_Result or True_Result then
           Rewrite (N,
*************** package body Exp_Ch4 is
*** 14330,14335 ****
--- 15092,15098 ----
               New_Occurrence_Of (Boolean_Literals (True_Result), Sloc (N))));
  
           Analyze_And_Resolve (N, Typ);
+          Set_Is_Static_Expression (N, False);
           Warn_On_Known_Condition (N);
        end if;
     end Rewrite_Comparison;
*************** package body Exp_Ch4 is
*** 14377,14383 ****
           elsif Is_Entity_Name (Op) then
              return Is_Unaliased (Op);
  
!          elsif Nkind_In (Op, N_Indexed_Component, N_Selected_Component) then
              return Is_Unaliased (Prefix (Op));
  
           elsif Nkind (Op) = N_Slice then
--- 15140,15146 ----
           elsif Is_Entity_Name (Op) then
              return Is_Unaliased (Op);
  
!          elsif Nkind (Op) in N_Indexed_Component | N_Selected_Component then
              return Is_Unaliased (Prefix (Op));
  
           elsif Nkind (Op) = N_Slice then
*************** package body Exp_Ch4 is
*** 14430,14435 ****
--- 15193,15201 ----
     --  usually implemented by looking in the ancestor tables contained in the
     --  dispatch table pointed by Left_Expr.Tag for Typ'Tag
  
+    --  In both cases if Left_Expr is an access type, we first check whether it
+    --  is null.
+ 
     --  Ada 2005 (AI-251): If it is a class-wide interface type we use the RT
     --  function IW_Membership which is usually implemented by looking in the
     --  table of abstract interface types plus the ancestor table contained in
*************** package body Exp_Ch4 is
*** 14444,14462 ****
        Right : constant Node_Id    := Right_Opnd (N);
        Loc   : constant Source_Ptr := Sloc (N);
  
!       Full_R_Typ : Entity_Id;
!       Left_Type  : Entity_Id;
!       New_Node   : Node_Id;
!       Right_Type : Entity_Id;
!       Obj_Tag    : Node_Id;
  
!    begin
!       SCIL_Node := Empty;
  
!       --  Handle entities from the limited view
  
!       Left_Type  := Available_View (Etype (Left));
!       Right_Type := Available_View (Etype (Right));
  
        --  In the case where the type is an access type, the test is applied
        --  using the designated types (needed in Ada 2012 for implicit anonymous
--- 15210,15226 ----
        Right : constant Node_Id    := Right_Opnd (N);
        Loc   : constant Source_Ptr := Sloc (N);
  
!       --  Handle entities from the limited view
  
!       Orig_Right_Type : constant Entity_Id := Available_View (Etype (Right));
  
!       Full_R_Typ   : Entity_Id;
!       Left_Type    : Entity_Id := Available_View (Etype (Left));
!       Right_Type   : Entity_Id := Orig_Right_Type;
!       Obj_Tag      : Node_Id;
  
!    begin
!       SCIL_Node := Empty;
  
        --  In the case where the type is an access type, the test is applied
        --  using the designated types (needed in Ada 2012 for implicit anonymous
*************** package body Exp_Ch4 is
*** 14530,14536 ****
             or else Is_Interface (Left_Type)
           then
              --  Issue error if IW_Membership operation not available in a
!             --  configurable run time setting.
  
              if not RTE_Available (RE_IW_Membership) then
                 Error_Msg_CRT
--- 15294,15300 ----
             or else Is_Interface (Left_Type)
           then
              --  Issue error if IW_Membership operation not available in a
!             --  configurable run-time setting.
  
              if not RTE_Available (RE_IW_Membership) then
                 Error_Msg_CRT
*************** package body Exp_Ch4 is
*** 14553,14577 ****
           --  Ada 95: Normal case
  
           else
!             Build_CW_Membership (Loc,
!               Obj_Tag_Node => Obj_Tag,
!               Typ_Tag_Node =>
!                  New_Occurrence_Of (
!                    Node (First_Elmt (Access_Disp_Table (Full_R_Typ))),  Loc),
!               Related_Nod => N,
!               New_Node    => New_Node);
  
              --  Generate the SCIL node for this class-wide membership test.
-             --  Done here because the previous call to Build_CW_Membership
-             --  relocates Obj_Tag.
  
              if Generate_SCIL then
                 SCIL_Node := Make_SCIL_Membership_Test (Sloc (N));
                 Set_SCIL_Entity (SCIL_Node, Etype (Right_Type));
                 Set_SCIL_Tag_Value (SCIL_Node, Obj_Tag);
              end if;
- 
-             Result := New_Node;
           end if;
  
        --  Right_Type is not a class-wide type
--- 15317,15348 ----
           --  Ada 95: Normal case
  
           else
!             --  Issue error if CW_Membership operation not available in a
!             --  configurable run-time setting.
! 
!             if not RTE_Available (RE_CW_Membership) then
!                Error_Msg_CRT
!                  ("dynamic membership test on tagged types", N);
!                Result := Empty;
!                return;
!             end if;
! 
!             Result :=
!               Make_Function_Call (Loc,
!                  Name => New_Occurrence_Of (RTE (RE_CW_Membership), Loc),
!                  Parameter_Associations => New_List (
!                    Obj_Tag,
!                    New_Occurrence_Of (
!                      Node (First_Elmt (Access_Disp_Table (Full_R_Typ))),
!                      Loc)));
  
              --  Generate the SCIL node for this class-wide membership test.
  
              if Generate_SCIL then
                 SCIL_Node := Make_SCIL_Membership_Test (Sloc (N));
                 Set_SCIL_Entity (SCIL_Node, Etype (Right_Type));
                 Set_SCIL_Tag_Value (SCIL_Node, Obj_Tag);
              end if;
           end if;
  
        --  Right_Type is not a class-wide type
*************** package body Exp_Ch4 is
*** 14591,14596 ****
--- 15362,15390 ----
                      (Node (First_Elmt (Access_Disp_Table (Full_R_Typ))), Loc));
           end if;
        end if;
+ 
+       --  if Left is an access object then generate test of the form:
+       --    * if Right_Type excludes null: Left /= null and then ...
+       --    * if Right_Type includes null: Left = null or else ...
+ 
+       if Is_Access_Type (Orig_Right_Type) then
+          if Can_Never_Be_Null (Orig_Right_Type) then
+             Result := Make_And_Then (Loc,
+               Left_Opnd  =>
+                 Make_Op_Ne (Loc,
+                   Left_Opnd  => Left,
+                   Right_Opnd => Make_Null (Loc)),
+               Right_Opnd => Result);
+ 
+          else
+             Result := Make_Or_Else (Loc,
+               Left_Opnd  =>
+                 Make_Op_Eq (Loc,
+                   Left_Opnd  => Left,
+                   Right_Opnd => Make_Null (Loc)),
+               Right_Opnd => Result);
+          end if;
+       end if;
     end Tagged_Membership;
  
     ------------------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch4.ads gcc-11.1.0/gcc/ada/exp_ch4.ads
*** gcc-10.3.0/gcc/ada/exp_ch4.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch4.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch5.adb gcc-11.1.0/gcc/ada/exp_ch5.adb
*** gcc-10.3.0/gcc/ada/exp_ch5.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch5.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Checks;   use Checks;
*** 29,35 ****
  with Debug;    use Debug;
  with Einfo;    use Einfo;
  with Elists;   use Elists;
- with Errout;   use Errout;
  with Exp_Aggr; use Exp_Aggr;
  with Exp_Ch6;  use Exp_Ch6;
  with Exp_Ch7;  use Exp_Ch7;
--- 29,34 ----
*************** package body Exp_Ch5 is
*** 279,286 ****
     begin
        return
          Nkind (Rhs) = N_Type_Conversion
!           and then
!             not Same_Representation (Etype (Rhs), Etype (Expression (Rhs)));
     end Change_Of_Representation;
  
     ------------------------------
--- 278,286 ----
     begin
        return
          Nkind (Rhs) = N_Type_Conversion
!           and then not Has_Compatible_Representation
!                          (Target_Type  => Etype (Rhs),
!                           Operand_Type => Etype (Expression (Rhs)));
     end Change_Of_Representation;
  
     ------------------------------
*************** package body Exp_Ch5 is
*** 442,448 ****
        --  respect to the right-hand side as given, not a possible underlying
        --  renamed object, since this would generate incorrect extra checks.
  
!       Apply_Length_Check (Rhs, L_Type);
  
        --  We start by assuming that the move can be done in either direction,
        --  i.e. that the two sides are completely disjoint.
--- 442,448 ----
        --  respect to the right-hand side as given, not a possible underlying
        --  renamed object, since this would generate incorrect extra checks.
  
!       Apply_Length_Check_On_Assignment (Rhs, L_Type, Lhs);
  
        --  We start by assuming that the move can be done in either direction,
        --  i.e. that the two sides are completely disjoint.
*************** package body Exp_Ch5 is
*** 523,533 ****
        elsif Has_Controlled_Component (L_Type) then
           Loop_Required := True;
  
!       --  If object is atomic/VFA, we cannot tolerate a loop
  
!       elsif Is_Atomic_Or_VFA_Object (Act_Lhs)
                or else
!             Is_Atomic_Or_VFA_Object (Act_Rhs)
        then
           return;
  
--- 523,533 ----
        elsif Has_Controlled_Component (L_Type) then
           Loop_Required := True;
  
!       --  If object is full access, we cannot tolerate a loop
  
!       elsif Is_Full_Access_Object (Act_Lhs)
                or else
!             Is_Full_Access_Object (Act_Rhs)
        then
           return;
  
*************** package body Exp_Ch5 is
*** 536,543 ****
  
        elsif Has_Atomic_Components (L_Type)
          or else Has_Atomic_Components (R_Type)
!         or else Is_Atomic_Or_VFA (Component_Type (L_Type))
!         or else Is_Atomic_Or_VFA (Component_Type (R_Type))
        then
           Loop_Required := True;
  
--- 536,543 ----
  
        elsif Has_Atomic_Components (L_Type)
          or else Has_Atomic_Components (R_Type)
!         or else Is_Full_Access (Component_Type (L_Type))
!         or else Is_Full_Access (Component_Type (R_Type))
        then
           Loop_Required := True;
  
*************** package body Exp_Ch5 is
*** 1452,1468 ****
        L_Prefix_Comp : constant Boolean :=
          --  True if the left-hand side is a slice of a component or slice
          Nkind (Name (N)) = N_Slice
!         and then Nkind_In (Prefix (Name (N)),
!                            N_Selected_Component,
!                            N_Indexed_Component,
!                            N_Slice);
        R_Prefix_Comp : constant Boolean :=
          --  Likewise for the right-hand side
          Nkind (Expression (N)) = N_Slice
!         and then Nkind_In (Prefix (Expression (N)),
!                            N_Selected_Component,
!                            N_Indexed_Component,
!                            N_Slice);
     begin
        --  Determine whether Copy_Bitfield is appropriate (will work, and will
        --  be more efficient than component-by-component copy). Copy_Bitfield
--- 1452,1465 ----
        L_Prefix_Comp : constant Boolean :=
          --  True if the left-hand side is a slice of a component or slice
          Nkind (Name (N)) = N_Slice
!           and then Nkind (Prefix (Name (N))) in
!                      N_Selected_Component | N_Indexed_Component | N_Slice;
        R_Prefix_Comp : constant Boolean :=
          --  Likewise for the right-hand side
          Nkind (Expression (N)) = N_Slice
!           and then Nkind (Prefix (Expression (N))) in
!                      N_Selected_Component | N_Indexed_Component | N_Slice;
! 
     begin
        --  Determine whether Copy_Bitfield is appropriate (will work, and will
        --  be more efficient than component-by-component copy). Copy_Bitfield
*************** package body Exp_Ch5 is
*** 1472,1478 ****
        --  there are volatile or independent components. If the Prefix of the
        --  slice is a component or slice, then it might be a part of an object
        --  with some other volatile or independent components, so we disable the
!       --  optimization in that case as well.  We could complicate this code by
        --  actually looking for such volatile and independent components.
  
        if Is_Bit_Packed_Array (L_Type)
--- 1469,1475 ----
        --  there are volatile or independent components. If the Prefix of the
        --  slice is a component or slice, then it might be a part of an object
        --  with some other volatile or independent components, so we disable the
!       --  optimization in that case as well. We could complicate this code by
        --  actually looking for such volatile and independent components.
  
        if Is_Bit_Packed_Array (L_Type)
*************** package body Exp_Ch5 is
*** 1522,1528 ****
        --  be assigned.
  
        elsif Possible_Bit_Aligned_Component (Lhs)
!               or
              Possible_Bit_Aligned_Component (Rhs)
        then
           null;
--- 1519,1525 ----
        --  be assigned.
  
        elsif Possible_Bit_Aligned_Component (Lhs)
!               or else
              Possible_Bit_Aligned_Component (Rhs)
        then
           null;
*************** package body Exp_Ch5 is
*** 1595,1600 ****
--- 1592,1609 ----
              while Present (C) loop
                 if Chars (C) = Chars (Comp) then
                    return C;
+ 
+                --  The component may be a renamed discriminant, in
+                --  which case check against the name of the original
+                --  discriminant of the parent type.
+ 
+                elsif Is_Derived_Type (Scope (Comp))
+                  and then Ekind (Comp) = E_Discriminant
+                  and then Present (Corresponding_Discriminant (Comp))
+                  and then
+                    Chars (C) = Chars (Corresponding_Discriminant (Comp))
+                then
+                   return C;
                 end if;
  
                 Next_Entity (C);
*************** package body Exp_Ch5 is
*** 1614,1627 ****
              CI : constant List_Id := Component_Items (CL);
              VP : constant Node_Id := Variant_Part (CL);
  
!             Alts   : List_Id;
!             DC     : Node_Id;
!             DCH    : List_Id;
!             Expr   : Node_Id;
!             Result : List_Id;
!             V      : Node_Id;
  
           begin
              Result := Make_Field_Assigns (CI);
  
              if Present (VP) then
--- 1623,1649 ----
              CI : constant List_Id := Component_Items (CL);
              VP : constant Node_Id := Variant_Part (CL);
  
!             Constrained_Typ : Entity_Id;
!             Alts            : List_Id;
!             DC              : Node_Id;
!             DCH             : List_Id;
!             Expr            : Node_Id;
!             Result          : List_Id;
!             V               : Node_Id;
  
           begin
+             --  Try to find a constrained type to extract discriminant values
+             --  from, so that the case statement built below gets an
+             --  opportunity to be folded by Expand_N_Case_Statement.
+ 
+             if U_U or else Is_Constrained (Etype (Rhs)) then
+                Constrained_Typ := Etype (Rhs);
+             elsif Is_Constrained (Etype (Expression (N))) then
+                Constrained_Typ := Etype (Expression (N));
+             else
+                Constrained_Typ := Empty;
+             end if;
+ 
              Result := Make_Field_Assigns (CI);
  
              if Present (VP) then
*************** package body Exp_Ch5 is
*** 1643,1659 ****
                    Next_Non_Pragma (V);
                 end loop;
  
!                --  If we have an Unchecked_Union, use the value of the inferred
!                --  discriminant of the variant part expression as the switch
!                --  for the case statement. The case statement may later be
!                --  folded.
! 
!                if U_U then
                    Expr :=
                      New_Copy (Get_Discriminant_Value (
                        Entity (Name (VP)),
!                       Etype (Rhs),
!                       Discriminant_Constraint (Etype (Rhs))));
                 else
                    Expr :=
                      Make_Selected_Component (Loc,
--- 1665,1676 ----
                    Next_Non_Pragma (V);
                 end loop;
  
!                if Present (Constrained_Typ) then
                    Expr :=
                      New_Copy (Get_Discriminant_Value (
                        Entity (Name (VP)),
!                       Constrained_Typ,
!                       Discriminant_Constraint (Constrained_Typ)));
                 else
                    Expr :=
                      Make_Selected_Component (Loc,
*************** package body Exp_Ch5 is
*** 1777,1785 ****
        --  Start of processing for Expand_Assign_Record
  
        begin
!          --  Note that we use the base types for this processing. This results
!          --  in some extra work in the constrained case, but the change of
!          --  representation case is so unusual that it is not worth the effort.
  
           --  First copy the discriminants. This is done unconditionally. It
           --  is required in the unconstrained left side case, and also in the
--- 1794,1803 ----
        --  Start of processing for Expand_Assign_Record
  
        begin
!          --  Note that we need to use the base types for this processing in
!          --  order to retrieve the Type_Definition. In the constrained case,
!          --  we filter out the non relevant fields in
!          --  Make_Component_List_Assign.
  
           --  First copy the discriminants. This is done unconditionally. It
           --  is required in the unconstrained left side case, and also in the
*************** package body Exp_Ch5 is
*** 1815,1821 ****
                       CF := F;
                    end if;
  
!                   if Is_Unchecked_Union (Base_Type (R_Typ)) then
  
                       --  Within an initialization procedure this is the
                       --  assignment to an unchecked union component, in which
--- 1833,1839 ----
                       CF := F;
                    end if;
  
!                   if Is_Unchecked_Union (R_Typ) then
  
                       --  Within an initialization procedure this is the
                       --  assignment to an unchecked union component, in which
*************** package body Exp_Ch5 is
*** 1887,1894 ****
           --  We know the underlying type is a record, but its current view
           --  may be private. We must retrieve the usable record declaration.
  
!          if Nkind_In (Decl, N_Private_Type_Declaration,
!                             N_Private_Extension_Declaration)
             and then Present (Full_View (R_Typ))
           then
              RDef := Type_Definition (Declaration_Node (Full_View (R_Typ)));
--- 1905,1912 ----
           --  We know the underlying type is a record, but its current view
           --  may be private. We must retrieve the usable record declaration.
  
!          if Nkind (Decl) in N_Private_Type_Declaration
!                           | N_Private_Extension_Declaration
             and then Present (Full_View (R_Typ))
           then
              RDef := Type_Definition (Declaration_Node (Full_View (R_Typ)));
*************** package body Exp_Ch5 is
*** 1907,1914 ****
                 Insert_Actions (N,
                   Make_Component_List_Assign (Component_List (RDef), True));
              else
!                Insert_Actions
!                  (N, Make_Component_List_Assign (Component_List (RDef)));
              end if;
  
              Rewrite (N, Make_Null_Statement (Loc));
--- 1925,1932 ----
                 Insert_Actions (N,
                   Make_Component_List_Assign (Component_List (RDef), True));
              else
!                Insert_Actions (N,
!                  Make_Component_List_Assign (Component_List (RDef)));
              end if;
  
              Rewrite (N, Make_Null_Statement (Loc));
*************** package body Exp_Ch5 is
*** 2248,2254 ****
        --  Since P is going to be evaluated more than once, any subscripts
        --  in P must have their evaluation forced.
  
!       if Nkind_In (Lhs, N_Indexed_Component, N_Selected_Component)
          and then Is_Ref_To_Bit_Packed_Array (Prefix (Lhs))
        then
           declare
--- 2266,2272 ----
        --  Since P is going to be evaluated more than once, any subscripts
        --  in P must have their evaluation forced.
  
!       if Nkind (Lhs) in N_Indexed_Component | N_Selected_Component
          and then Is_Ref_To_Bit_Packed_Array (Prefix (Lhs))
        then
           declare
*************** package body Exp_Ch5 is
*** 2284,2291 ****
              loop
                 Set_Analyzed (Exp, False);
  
!                if Nkind_In (Exp, N_Indexed_Component,
!                                  N_Selected_Component)
                 then
                    Exp := Prefix (Exp);
                 else
--- 2302,2308 ----
              loop
                 Set_Analyzed (Exp, False);
  
!                if Nkind (Exp) in N_Indexed_Component | N_Selected_Component
                 then
                    Exp := Prefix (Exp);
                 else
*************** package body Exp_Ch5 is
*** 2448,2485 ****
              if Is_Constrained (Etype (Lhs)) then
                 Apply_Length_Check (Rhs, Etype (Lhs));
              end if;
- 
-             if Nkind (Rhs) = N_Allocator then
-                declare
-                   Target_Typ : constant Entity_Id := Etype (Expression (Rhs));
-                   C_Es       : Check_Result;
- 
-                begin
-                   C_Es :=
-                     Get_Range_Checks
-                       (Lhs,
-                        Target_Typ,
-                        Etype (Designated_Type (Etype (Lhs))));
- 
-                   Insert_Range_Checks
-                     (C_Es,
-                      N,
-                      Target_Typ,
-                      Sloc (Lhs),
-                      Lhs);
-                end;
-             end if;
           end if;
- 
-       --  Apply range check for access type case
- 
-       elsif Is_Access_Type (Etype (Lhs))
-         and then Nkind (Rhs) = N_Allocator
-         and then Nkind (Expression (Rhs)) = N_Qualified_Expression
-       then
-          Analyze_And_Resolve (Expression (Rhs));
-          Apply_Range_Check
-            (Expression (Rhs), Designated_Type (Etype (Lhs)));
        end if;
  
        --  Ada 2005 (AI-231): Generate the run-time check
--- 2465,2471 ----
*************** package body Exp_Ch5 is
*** 2541,2547 ****
                                 Condition =>
                                   Make_Op_Gt (Loc,
                                     Left_Opnd  =>
!                                      Dynamic_Accessibility_Level (Rhs),
                                     Right_Opnd =>
                                       Make_Integer_Literal (Loc,
                                         Intval =>
--- 2527,2533 ----
                                 Condition =>
                                   Make_Op_Gt (Loc,
                                     Left_Opnd  =>
!                                      Accessibility_Level (Rhs, Dynamic_Level),
                                     Right_Opnd =>
                                       Make_Integer_Literal (Loc,
                                         Intval =>
*************** package body Exp_Ch5 is
*** 2557,2563 ****
                                           (Effective_Extra_Accessibility
                                              (Entity (Lhs)), Loc),
                                       Expression =>
!                                         Dynamic_Accessibility_Level (Rhs));
  
           begin
              if not Accessibility_Checks_Suppressed (Entity (Lhs)) then
--- 2543,2550 ----
                                           (Effective_Extra_Accessibility
                                              (Entity (Lhs)), Loc),
                                       Expression =>
!                                        Accessibility_Level
!                                          (Rhs, Dynamic_Level));
  
           begin
              if not Accessibility_Checks_Suppressed (Entity (Lhs)) then
*************** package body Exp_Ch5 is
*** 2665,2689 ****
                           and then
                             not Restriction_Active (No_Dispatching_Calls))
              then
!                if Is_Limited_Type (Typ) then
! 
!                   --  This can happen in an instance when the formal is an
!                   --  extension of a limited interface, and the actual is
!                   --  limited. This is an error according to AI05-0087, but
!                   --  is not caught at the point of instantiation in earlier
!                   --  versions. We also must verify that the limited type does
!                   --  not come from source as corner cases may exist where
!                   --  an assignment was not intended like the pathological case
!                   --  of a raise expression within a return statement.
! 
!                   --  This is wrong, error messages cannot be issued during
!                   --  expansion, since they would be missed in -gnatc mode ???
! 
!                   if Comes_From_Source (N) then
!                      Error_Msg_N
!                        ("assignment not available on limited type", N);
!                   end if;
  
                    return;
                 end if;
  
--- 2652,2664 ----
                           and then
                             not Restriction_Active (No_Dispatching_Calls))
              then
!                --  We should normally not encounter any limited type here,
!                --  except in the corner case where an assignment was not
!                --  intended like the pathological case of a raise expression
!                --  within a return statement.
  
+                if Is_Limited_Type (Typ) then
+                   pragma Assert (not Comes_From_Source (N));
                    return;
                 end if;
  
*************** package body Exp_Ch5 is
*** 2896,2903 ****
              Actual_Rhs : Node_Id := Rhs;
  
           begin
!             while Nkind_In (Actual_Rhs, N_Type_Conversion,
!                                         N_Qualified_Expression)
              loop
                 Actual_Rhs := Expression (Actual_Rhs);
              end loop;
--- 2871,2878 ----
              Actual_Rhs : Node_Id := Rhs;
  
           begin
!             while Nkind (Actual_Rhs) in
!                     N_Type_Conversion | N_Qualified_Expression
              loop
                 Actual_Rhs := Expression (Actual_Rhs);
              end loop;
*************** package body Exp_Ch5 is
*** 2971,2977 ****
                 --  Skip this if left-hand side is an array or record component
                 --  and elementary component validity checks are suppressed.
  
!                if Nkind_In (Lhs, N_Selected_Component, N_Indexed_Component)
                   and then not Validity_Check_Components
                 then
                    null;
--- 2946,2952 ----
                 --  Skip this if left-hand side is an array or record component
                 --  and elementary component validity checks are suppressed.
  
!                if Nkind (Lhs) in N_Selected_Component | N_Indexed_Component
                   and then not Validity_Check_Components
                 then
                    null;
*************** package body Exp_Ch5 is
*** 3150,3156 ****
           if Validity_Check_Default
             and then not Predicates_Ignored (Etype (Expr))
           then
!             Ensure_Valid (Expr);
           end if;
  
           --  If there is only a single alternative, just replace it with the
--- 3125,3159 ----
           if Validity_Check_Default
             and then not Predicates_Ignored (Etype (Expr))
           then
!             --  Recognize the simple case where Expr is an object reference
!             --  and the case statement is directly preceded by an
!             --  "if Obj'Valid then": in this case, do not emit another validity
!             --  check.
! 
!             declare
!                Check_Validity : Boolean := True;
!                Attr           : Node_Id;
!             begin
!                if Nkind (Expr) = N_Identifier
!                  and then Nkind (Parent (N)) = N_If_Statement
!                  and then Nkind (Original_Node (Condition (Parent (N))))
!                            = N_Attribute_Reference
!                  and then No (Prev (N))
!                then
!                   Attr := Original_Node (Condition (Parent (N)));
! 
!                   if Attribute_Name (Attr) = Name_Valid
!                     and then Nkind (Prefix (Attr)) = N_Identifier
!                     and then Entity (Prefix (Attr)) = Entity (Expr)
!                   then
!                      Check_Validity := False;
!                   end if;
!                end if;
! 
!                if Check_Validity then
!                   Ensure_Valid (Expr);
!                end if;
!             end;
           end if;
  
           --  If there is only a single alternative, just replace it with the
*************** package body Exp_Ch5 is
*** 3545,3561 ****
        Analyze (N);
     end Expand_Formal_Container_Element_Loop;
  
-    -----------------------------
-    -- Expand_N_Goto_Statement --
-    -----------------------------
- 
-    --  Add poll before goto if polling active
- 
-    procedure Expand_N_Goto_Statement (N : Node_Id) is
-    begin
-       Generate_Poll_Call (N);
-    end Expand_N_Goto_Statement;
- 
     ---------------------------
     -- Expand_N_If_Statement --
     ---------------------------
--- 3548,3553 ----
*************** package body Exp_Ch5 is
*** 3755,3761 ****
                 --  specific to pure if statements, however (see
                 --  Sem_Ch5.Analyze_If_Statement).
  
!                Set_Comes_From_Source (New_If, Comes_From_Source (N));
                 return;
  
              --  No special processing for that elsif part, move to next
--- 3747,3753 ----
                 --  specific to pure if statements, however (see
                 --  Sem_Ch5.Analyze_If_Statement).
  
!                Preserve_Comes_From_Source (New_If, N);
                 return;
  
              --  No special processing for that elsif part, move to next
*************** package body Exp_Ch5 is
*** 3775,3783 ****
        --  Another optimization, special cases that can be simplified
  
        --     if expression then
!       --        return true;
        --     else
!       --        return false;
        --     end if;
  
        --  can be changed to:
--- 3767,3775 ----
        --  Another optimization, special cases that can be simplified
  
        --     if expression then
!       --        return [standard.]true;
        --     else
!       --        return [standard.]false;
        --     end if;
  
        --  can be changed to:
*************** package body Exp_Ch5 is
*** 3787,3795 ****
        --  and
  
        --     if expression then
!       --        return false;
        --     else
!       --        return true;
        --     end if;
  
        --  can be changed to:
--- 3779,3787 ----
        --  and
  
        --     if expression then
!       --        return [standard.]false;
        --     else
!       --        return [standard.]true;
        --     end if;
  
        --  can be changed to:
*************** package body Exp_Ch5 is
*** 3822,3830 ****
                       Else_Expr : constant Node_Id := Expression (Else_Stm);
  
                    begin
!                      if Nkind (Then_Expr) = N_Identifier
                            and then
!                         Nkind (Else_Expr) = N_Identifier
                       then
                          if Entity (Then_Expr) = Standard_True
                            and then Entity (Else_Expr) = Standard_False
--- 3814,3822 ----
                       Else_Expr : constant Node_Id := Expression (Else_Stm);
  
                    begin
!                      if Nkind (Then_Expr) in N_Expanded_Name | N_Identifier
                            and then
!                         Nkind (Else_Expr) in N_Expanded_Name | N_Identifier
                       then
                          if Entity (Then_Expr) = Standard_True
                            and then Entity (Else_Expr) = Standard_False
*************** package body Exp_Ch5 is
*** 3900,3914 ****
        Array_Dim  : constant Pos        := Number_Dimensions (Array_Typ);
        Id         : constant Entity_Id  := Defining_Identifier (I_Spec);
        Loc        : constant Source_Ptr := Sloc (Isc);
!       Stats      : constant List_Id    := Statements (N);
        Core_Loop  : Node_Id;
        Dim1       : Int;
        Ind_Comp   : Node_Id;
        Iterator   : Entity_Id;
  
-    --  Start of processing for Expand_Iterator_Loop_Over_Array
- 
     begin
        --  for Element of Array loop
  
        --  It requires an internally generated cursor to iterate over the array
--- 3892,3911 ----
        Array_Dim  : constant Pos        := Number_Dimensions (Array_Typ);
        Id         : constant Entity_Id  := Defining_Identifier (I_Spec);
        Loc        : constant Source_Ptr := Sloc (Isc);
!       Stats      : List_Id    := Statements (N);
        Core_Loop  : Node_Id;
        Dim1       : Int;
        Ind_Comp   : Node_Id;
        Iterator   : Entity_Id;
  
     begin
+       if Present (Iterator_Filter (I_Spec)) then
+          pragma Assert (Ada_Version >= Ada_2020);
+          Stats := New_List (Make_If_Statement (Loc,
+             Condition => Iterator_Filter (I_Spec),
+             Then_Statements => Stats));
+       end if;
+ 
        --  for Element of Array loop
  
        --  It requires an internally generated cursor to iterate over the array
*************** package body Exp_Ch5 is
*** 4179,4185 ****
        Elem_Typ : constant Entity_Id   := Etype (Id);
        Id_Kind  : constant Entity_Kind := Ekind (Id);
        Loc      : constant Source_Ptr  := Sloc (N);
!       Stats    : constant List_Id     := Statements (N);
  
        Cursor    : Entity_Id;
        Decl      : Node_Id;
--- 4176,4184 ----
        Elem_Typ : constant Entity_Id   := Etype (Id);
        Id_Kind  : constant Entity_Kind := Ekind (Id);
        Loc      : constant Source_Ptr  := Sloc (N);
! 
!       Stats    : List_Id     := Statements (N);
!       --  Maybe wrapped in a conditional if a filter is present
  
        Cursor    : Entity_Id;
        Decl      : Node_Id;
*************** package body Exp_Ch5 is
*** 4201,4206 ****
--- 4200,4212 ----
        --  The package in which the container type is declared
  
     begin
+       if Present (Iterator_Filter (I_Spec)) then
+          pragma Assert (Ada_Version >= Ada_2020);
+          Stats := New_List (Make_If_Statement (Loc,
+             Condition => Iterator_Filter (I_Spec),
+             Then_Statements => Stats));
+       end if;
+ 
        --  Determine the advancement and initialization steps for the cursor.
        --  Analysis of the expanded loop will verify that the container has a
        --  reverse iterator.
*************** package body Exp_Ch5 is
*** 4349,4358 ****
              Iter_Pack := Scope (Root_Type (Etype (Iter_Type)));
  
              --  Find declarations needed for "for ... of" optimization
  
              Ent := First_Entity (Pack);
              while Present (Ent) loop
!                if Chars (Ent) = Name_Get_Element_Access then
                    Fast_Element_Access_Op := Ent;
  
                 elsif Chars (Ent) = Name_Step
--- 4355,4375 ----
              Iter_Pack := Scope (Root_Type (Etype (Iter_Type)));
  
              --  Find declarations needed for "for ... of" optimization
+             --  These declarations come from GNAT sources or sources
+             --  derived from them. User code may include additional
+             --  overloadings with similar names, and we need to perforn
+             --  some reasonable resolution to find the needed primitives.
+             --  It is unclear whether this mechanism is fragile if a user
+             --  makes arbitrary changes to the private part of a package
+             --  that supports iterators.
  
              Ent := First_Entity (Pack);
              while Present (Ent) loop
!                if Chars (Ent) = Name_Get_Element_Access
!                  and then Present (First_Formal (Ent))
!                  and then Chars (First_Formal (Ent)) = Name_Position
!                  and then No (Next_Formal (First_Formal (Ent)))
!                then
                    Fast_Element_Access_Op := Ent;
  
                 elsif Chars (Ent) = Name_Step
*************** package body Exp_Ch5 is
*** 4629,4635 ****
     --  4. Deal with while loops where Condition_Actions is set
     --  5. Deal with loops over predicated subtypes
     --  6. Deal with loops with iterators over arrays and containers
-    --  7. Insert polling call if required
  
     procedure Expand_N_Loop_Statement (N : Node_Id) is
        Loc    : constant Source_Ptr := Sloc (N);
--- 4646,4651 ----
*************** package body Exp_Ch5 is
*** 4650,4661 ****
           Adjust_Condition (Condition (Scheme));
        end if;
  
-       --  Generate polling call
- 
-       if Is_Non_Empty_List (Statements (N)) then
-          Generate_Poll_Call (First (Statements (N)));
-       end if;
- 
        --  Nothing more to do for plain loop with no iteration scheme
  
        if No (Scheme) then
--- 4666,4671 ----
*************** package body Exp_Ch5 is
*** 4674,4684 ****
--- 4684,4713 ----
              Loop_Id : constant Entity_Id := Defining_Identifier (LPS);
              Ltype   : constant Entity_Id := Etype (Loop_Id);
              Btype   : constant Entity_Id := Base_Type (Ltype);
+             Stats   : constant List_Id   := Statements (N);
              Expr    : Node_Id;
              Decls   : List_Id;
              New_Id  : Entity_Id;
  
           begin
+             --  If Discrete_Subtype_Definition has been rewritten as an
+             --  N_Raise_xxx_Error, rewrite the whole loop as a raise node to
+             --  avoid confusing the code generator down the line.
+ 
+             if Nkind (Discrete_Subtype_Definition (LPS)) in N_Raise_xxx_Error
+             then
+                Rewrite (N, Discrete_Subtype_Definition (LPS));
+                return;
+             end if;
+ 
+             if Present (Iterator_Filter (LPS)) then
+                pragma Assert (Ada_Version >= Ada_2020);
+                Set_Statements (N,
+                   New_List (Make_If_Statement (Loc,
+                     Condition => Iterator_Filter (LPS),
+                     Then_Statements => Stats)));
+             end if;
+ 
              --  Deal with loop over predicates
  
              if Is_Discrete_Type (Ltype)
*************** package body Exp_Ch5 is
*** 4795,4801 ****
                         Declarations => Decls,
                         Handled_Statement_Sequence =>
                           Make_Handled_Sequence_Of_Statements (Loc,
!                            Statements => Statements (N)))),
  
                     End_Label => End_Label (N)));
  
--- 4824,4830 ----
                         Declarations => Decls,
                         Handled_Statement_Sequence =>
                           Make_Handled_Sequence_Of_Statements (Loc,
!                            Statements => Stats))),
  
                     End_Label => End_Label (N)));
  
*************** package body Exp_Ch5 is
*** 4897,4903 ****
           end if;
        end if;
  
!       --  When the iteration scheme mentiones attribute 'Loop_Entry, the loop
        --  is transformed into a conditional block where the original loop is
        --  the sole statement. Inspect the statements of the nested loop for
        --  controlled objects.
--- 4926,4932 ----
           end if;
        end if;
  
!       --  When the iteration scheme mentions attribute 'Loop_Entry, the loop
        --  is transformed into a conditional block where the original loop is
        --  the sole statement. Inspect the statements of the nested loop for
        --  controlled objects.
*************** package body Exp_Ch5 is
*** 4921,4933 ****
     --  mode, the semantic analyzer may disallow one or both forms.
  
     procedure Expand_Predicated_Loop (N : Node_Id) is
!       Loc     : constant Source_Ptr := Sloc (N);
!       Isc     : constant Node_Id    := Iteration_Scheme (N);
!       LPS     : constant Node_Id    := Loop_Parameter_Specification (Isc);
!       Loop_Id : constant Entity_Id  := Defining_Identifier (LPS);
!       Ltype   : constant Entity_Id  := Etype (Loop_Id);
!       Stat    : constant List_Id    := Static_Discrete_Predicate (Ltype);
!       Stmts   : constant List_Id    := Statements (N);
  
     begin
        --  Case of iteration over non-static predicate, should not be possible
--- 4950,4963 ----
     --  mode, the semantic analyzer may disallow one or both forms.
  
     procedure Expand_Predicated_Loop (N : Node_Id) is
!       Orig_Loop_Id :          Node_Id    := Empty;
!       Loc          : constant Source_Ptr := Sloc (N);
!       Isc          : constant Node_Id    := Iteration_Scheme (N);
!       LPS          : constant Node_Id    := Loop_Parameter_Specification (Isc);
!       Loop_Id      : constant Entity_Id  := Defining_Identifier (LPS);
!       Ltype        : constant Entity_Id  := Etype (Loop_Id);
!       Stat         : constant List_Id    := Static_Discrete_Predicate (Ltype);
!       Stmts        : constant List_Id    := Statements (N);
  
     begin
        --  Case of iteration over non-static predicate, should not be possible
*************** package body Exp_Ch5 is
*** 5206,5212 ****
                  Alternatives => Alts);
              Append_To (Stmts, Cstm);
  
!             --  Rewrite the loop
  
              Set_Suppress_Assignment_Checks (D);
  
--- 5236,5248 ----
                  Alternatives => Alts);
              Append_To (Stmts, Cstm);
  
!             --  Rewrite the loop preserving the loop identifier in case there
!             --  are exit statements referencing it.
! 
!             if Present (Identifier (N)) then
!                Orig_Loop_Id := New_Occurrence_Of
!                                  (Entity (Identifier (N)), Loc);
!             end if;
  
              Set_Suppress_Assignment_Checks (D);
  
*************** package body Exp_Ch5 is
*** 5218,5223 ****
--- 5254,5260 ----
                      Statements => New_List (
                        Make_Loop_Statement (Loc,
                          Statements => Stmts,
+                         Identifier => Orig_Loop_Id,
                          End_Label  => Empty)))));
  
              Analyze (N);
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch5.ads gcc-11.1.0/gcc/ada/exp_ch5.ads
*** gcc-10.3.0/gcc/ada/exp_ch5.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch5.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Ch5 is
*** 32,38 ****
     procedure Expand_N_Block_Statement           (N : Node_Id);
     procedure Expand_N_Case_Statement            (N : Node_Id);
     procedure Expand_N_Exit_Statement            (N : Node_Id);
-    procedure Expand_N_Goto_Statement            (N : Node_Id);
     procedure Expand_N_If_Statement              (N : Node_Id);
     procedure Expand_N_Loop_Statement            (N : Node_Id);
  
--- 32,37 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch6.adb gcc-11.1.0/gcc/ada/exp_ch6.adb
*** gcc-10.3.0/gcc/ada/exp_ch6.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch6.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Elists;    use Elists;
*** 34,40 ****
  with Expander;  use Expander;
  with Exp_Aggr;  use Exp_Aggr;
  with Exp_Atag;  use Exp_Atag;
- with Exp_Ch2;   use Exp_Ch2;
  with Exp_Ch3;   use Exp_Ch3;
  with Exp_Ch7;   use Exp_Ch7;
  with Exp_Ch9;   use Exp_Ch9;
--- 34,39 ----
*************** with Validsw;   use Validsw;
*** 78,83 ****
--- 77,91 ----
  
  package body Exp_Ch6 is
  
+    --  Suffix for BIP formals
+ 
+    BIP_Alloc_Suffix               : constant String := "BIPalloc";
+    BIP_Storage_Pool_Suffix        : constant String := "BIPstoragepool";
+    BIP_Finalization_Master_Suffix : constant String := "BIPfinalizationmaster";
+    BIP_Task_Master_Suffix         : constant String := "BIPtaskmaster";
+    BIP_Activation_Chain_Suffix    : constant String := "BIPactivationchain";
+    BIP_Object_Access_Suffix       : constant String := "BIPaccess";
+ 
     -----------------------
     -- Local Subprograms --
     -----------------------
*************** package body Exp_Ch6 is
*** 137,142 ****
--- 145,160 ----
     --  the activation Chain. Note: Master_Actual can be Empty, but only if
     --  there are no tasks.
  
+    procedure Apply_CW_Accessibility_Check (Exp : Node_Id; Func : Entity_Id);
+    --  Ada 2005 (AI95-344): If the result type is class-wide, insert a check
+    --  that the level of the return expression's underlying type is not deeper
+    --  than the level of the master enclosing the function. Always generate the
+    --  check when the type of the return expression is class-wide, when it's a
+    --  type conversion, or when it's a formal parameter. Otherwise suppress the
+    --  check in the case where the return expression has a specific type whose
+    --  level is known not to be statically deeper than the result type of the
+    --  function.
+ 
     function Caller_Known_Size
       (Func_Call   : Node_Id;
        Result_Subt : Entity_Id) return Boolean;
*************** package body Exp_Ch6 is
*** 146,151 ****
--- 164,175 ----
     --  access discriminants do not require secondary stack use. Note we must
     --  always use the secondary stack for dispatching-on-result calls.
  
+    function Check_BIP_Actuals
+      (Subp_Call : Node_Id;
+       Subp_Id   : Entity_Id) return Boolean;
+    --  Given a subprogram call to the given subprogram return True if the
+    --  names of BIP extra actual and formal parameters match.
+ 
     function Check_Number_Of_Actuals
       (Subp_Call : Node_Id;
        Subp_Id   : Entity_Id) return Boolean;
*************** package body Exp_Ch6 is
*** 244,253 ****
     --  Expand simple return from function. In the case where we are returning
     --  from a function body this is called by Expand_N_Simple_Return_Statement.
  
!    function Has_Unconstrained_Access_Discriminants
!      (Subtyp : Entity_Id) return Boolean;
!    --  Returns True if the given subtype is unconstrained and has one or more
!    --  access discriminants.
  
     procedure Insert_Post_Call_Actions (N : Node_Id; Post_Call : List_Id);
     --  Insert the Post_Call list previously produced by routine Expand_Actuals
--- 268,281 ----
     --  Expand simple return from function. In the case where we are returning
     --  from a function body this is called by Expand_N_Simple_Return_Statement.
  
!    function Has_BIP_Extra_Formal
!      (E    : Entity_Id;
!       Kind : BIP_Formal_Kind) return Boolean;
!    --  Given a frozen subprogram, subprogram type, entry or entry family,
!    --  return True if E has the BIP extra formal associated with Kind. It must
!    --  be invoked with a frozen entity or a subprogram type of a dispatching
!    --  call since we can only rely on the availability of the extra formals
!    --  on these entities.
  
     procedure Insert_Post_Call_Actions (N : Node_Id; Post_Call : List_Id);
     --  Insert the Post_Call list previously produced by routine Expand_Actuals
*************** package body Exp_Ch6 is
*** 277,282 ****
--- 305,314 ----
     --  out of. This ensures that the secondary stack is not released; otherwise
     --  the function result would be reclaimed before returning to the caller.
  
+    procedure Warn_BIP (Func_Call : Node_Id);
+    --  Give a warning on a build-in-place function call if the -gnatd_B switch
+    --  was given.
+ 
     ----------------------------------------------
     -- Add_Access_Actual_To_Build_In_Place_Call --
     ----------------------------------------------
*************** package body Exp_Ch6 is
*** 615,620 ****
--- 647,761 ----
        Add_Extra_Actual_To_Call (Function_Call, Chain_Formal, Chain_Actual);
     end Add_Task_Actuals_To_Build_In_Place_Call;
  
+    ----------------------------------
+    -- Apply_CW_Accessibility_Check --
+    ----------------------------------
+ 
+    procedure Apply_CW_Accessibility_Check (Exp : Node_Id; Func : Entity_Id) is
+       Loc : constant Source_Ptr := Sloc (Exp);
+ 
+    begin
+       if Ada_Version >= Ada_2005
+         and then Tagged_Type_Expansion
+         and then not Scope_Suppress.Suppress (Accessibility_Check)
+         and then
+           (Is_Class_Wide_Type (Etype (Exp))
+             or else Nkind (Exp) in
+                       N_Type_Conversion | N_Unchecked_Type_Conversion
+             or else (Is_Entity_Name (Exp)
+                       and then Is_Formal (Entity (Exp)))
+             or else Scope_Depth (Enclosing_Dynamic_Scope (Etype (Exp))) >
+                       Scope_Depth (Enclosing_Dynamic_Scope (Func)))
+       then
+          declare
+             Tag_Node : Node_Id;
+ 
+          begin
+             --  Ada 2005 (AI-251): In class-wide interface objects we displace
+             --  "this" to reference the base of the object. This is required to
+             --  get access to the TSD of the object.
+ 
+             if Is_Class_Wide_Type (Etype (Exp))
+               and then Is_Interface (Etype (Exp))
+             then
+                --  If the expression is an explicit dereference then we can
+                --  directly displace the pointer to reference the base of
+                --  the object.
+ 
+                if Nkind (Exp) = N_Explicit_Dereference then
+                   Tag_Node :=
+                     Make_Explicit_Dereference (Loc,
+                       Prefix =>
+                         Unchecked_Convert_To (RTE (RE_Tag_Ptr),
+                           Make_Function_Call (Loc,
+                             Name                   =>
+                               New_Occurrence_Of (RTE (RE_Base_Address), Loc),
+                             Parameter_Associations => New_List (
+                               Unchecked_Convert_To (RTE (RE_Address),
+                                 Duplicate_Subexpr (Prefix (Exp)))))));
+ 
+                --  Similar case to the previous one but the expression is a
+                --  renaming of an explicit dereference.
+ 
+                elsif Nkind (Exp) = N_Identifier
+                  and then Present (Renamed_Object (Entity (Exp)))
+                  and then Nkind (Renamed_Object (Entity (Exp)))
+                             = N_Explicit_Dereference
+                then
+                   Tag_Node :=
+                     Make_Explicit_Dereference (Loc,
+                       Prefix =>
+                         Unchecked_Convert_To (RTE (RE_Tag_Ptr),
+                           Make_Function_Call (Loc,
+                             Name                   =>
+                               New_Occurrence_Of (RTE (RE_Base_Address), Loc),
+                             Parameter_Associations => New_List (
+                               Unchecked_Convert_To (RTE (RE_Address),
+                                 Duplicate_Subexpr
+                                   (Prefix
+                                     (Renamed_Object (Entity (Exp)))))))));
+ 
+                --  Common case: obtain the address of the actual object and
+                --  displace the pointer to reference the base of the object.
+ 
+                else
+                   Tag_Node :=
+                     Make_Explicit_Dereference (Loc,
+                       Prefix =>
+                         Unchecked_Convert_To (RTE (RE_Tag_Ptr),
+                           Make_Function_Call (Loc,
+                             Name               =>
+                               New_Occurrence_Of (RTE (RE_Base_Address), Loc),
+                             Parameter_Associations => New_List (
+                               Make_Attribute_Reference (Loc,
+                                 Prefix         => Duplicate_Subexpr (Exp),
+                                 Attribute_Name => Name_Address)))));
+                end if;
+             else
+                Tag_Node :=
+                  Make_Attribute_Reference (Loc,
+                    Prefix         => Duplicate_Subexpr (Exp),
+                    Attribute_Name => Name_Tag);
+             end if;
+ 
+             --  CodePeer does not do anything useful with
+             --  Ada.Tags.Type_Specific_Data components.
+ 
+             if not CodePeer_Mode then
+                Insert_Action (Exp,
+                  Make_Raise_Program_Error (Loc,
+                    Condition =>
+                      Make_Op_Gt (Loc,
+                        Left_Opnd  => Build_Get_Access_Level (Loc, Tag_Node),
+                        Right_Opnd =>
+                          Make_Integer_Literal (Loc,
+                            Scope_Depth (Enclosing_Dynamic_Scope (Func)))),
+                    Reason    => PE_Accessibility_Check_Failed));
+             end if;
+          end;
+       end if;
+    end Apply_CW_Accessibility_Check;
+ 
     -----------------------
     -- BIP_Formal_Suffix --
     -----------------------
*************** package body Exp_Ch6 is
*** 623,647 ****
     begin
        case Kind is
           when BIP_Alloc_Form =>
!             return "BIPalloc";
  
           when BIP_Storage_Pool =>
!             return "BIPstoragepool";
  
           when BIP_Finalization_Master =>
!             return "BIPfinalizationmaster";
  
           when BIP_Task_Master =>
!             return "BIPtaskmaster";
  
           when BIP_Activation_Chain =>
!             return "BIPactivationchain";
  
           when BIP_Object_Access =>
!             return "BIPaccess";
        end case;
     end BIP_Formal_Suffix;
  
     ---------------------------
     -- Build_In_Place_Formal --
     ---------------------------
--- 764,831 ----
     begin
        case Kind is
           when BIP_Alloc_Form =>
!             return BIP_Alloc_Suffix;
  
           when BIP_Storage_Pool =>
!             return BIP_Storage_Pool_Suffix;
  
           when BIP_Finalization_Master =>
!             return BIP_Finalization_Master_Suffix;
  
           when BIP_Task_Master =>
!             return BIP_Task_Master_Suffix;
  
           when BIP_Activation_Chain =>
!             return BIP_Activation_Chain_Suffix;
  
           when BIP_Object_Access =>
!             return BIP_Object_Access_Suffix;
        end case;
     end BIP_Formal_Suffix;
  
+    ---------------------
+    -- BIP_Suffix_Kind --
+    ---------------------
+ 
+    function BIP_Suffix_Kind (E : Entity_Id) return BIP_Formal_Kind is
+       Nam : constant String := Get_Name_String (Chars (E));
+ 
+       function Has_Suffix (Suffix : String) return Boolean;
+       --  Return True if Nam has suffix Suffix
+ 
+       function Has_Suffix (Suffix : String) return Boolean is
+          Len : constant Natural := Suffix'Length;
+       begin
+          return Nam'Length > Len
+            and then Nam (Nam'Last - Len + 1 .. Nam'Last) = Suffix;
+       end Has_Suffix;
+ 
+    --  Start of processing for BIP_Suffix_Kind
+ 
+    begin
+       if Has_Suffix (BIP_Alloc_Suffix) then
+          return BIP_Alloc_Form;
+ 
+       elsif Has_Suffix (BIP_Storage_Pool_Suffix) then
+          return BIP_Storage_Pool;
+ 
+       elsif Has_Suffix (BIP_Finalization_Master_Suffix) then
+          return BIP_Finalization_Master;
+ 
+       elsif Has_Suffix (BIP_Task_Master_Suffix) then
+          return BIP_Task_Master;
+ 
+       elsif Has_Suffix (BIP_Activation_Chain_Suffix) then
+          return BIP_Activation_Chain;
+ 
+       elsif Has_Suffix (BIP_Object_Access_Suffix) then
+          return BIP_Object_Access;
+ 
+       else
+          raise Program_Error;
+       end if;
+    end BIP_Suffix_Kind;
+ 
     ---------------------------
     -- Build_In_Place_Formal --
     ---------------------------
*************** package body Exp_Ch6 is
*** 650,657 ****
       (Func : Entity_Id;
        Kind : BIP_Formal_Kind) return Entity_Id
     is
        Formal_Suffix : constant String := BIP_Formal_Suffix (Kind);
-       Extra_Formal : Entity_Id := Extra_Formals (Func);
  
     begin
        --  Maybe it would be better for each implicit formal of a build-in-place
--- 834,841 ----
       (Func : Entity_Id;
        Kind : BIP_Formal_Kind) return Entity_Id
     is
+       Extra_Formal  : Entity_Id := Extra_Formals (Func);
        Formal_Suffix : constant String := BIP_Formal_Suffix (Kind);
  
     begin
        --  Maybe it would be better for each implicit formal of a build-in-place
*************** package body Exp_Ch6 is
*** 699,707 ****
     is
        Loc : constant Source_Ptr := Sloc (Func_Body);
  
!       Proc_Decl : constant Node_Id   :=
!                     Next (Unit_Declaration_Node (Func_Id));
!       --  It is assumed that the next node following the declaration of the
        --  corresponding subprogram spec is the declaration of the procedure
        --  form.
  
--- 883,890 ----
     is
        Loc : constant Source_Ptr := Sloc (Func_Body);
  
!       Proc_Decl : constant Node_Id := Prev (Unit_Declaration_Node (Func_Id));
!       --  It is assumed that the node before the declaration of the
        --  corresponding subprogram spec is the declaration of the procedure
        --  form.
  
*************** package body Exp_Ch6 is
*** 873,878 ****
--- 1056,1097 ----
          or else not Requires_Transient_Scope (Underlying_Type (Result_Subt));
     end Caller_Known_Size;
  
+    -----------------------
+    -- Check_BIP_Actuals --
+    -----------------------
+ 
+    function Check_BIP_Actuals
+      (Subp_Call : Node_Id;
+       Subp_Id   : Entity_Id) return Boolean
+    is
+       Formal : Entity_Id;
+       Actual : Node_Id;
+ 
+    begin
+       pragma Assert (Nkind (Subp_Call) in N_Entry_Call_Statement
+                                         | N_Function_Call
+                                         | N_Procedure_Call_Statement);
+ 
+       Formal := First_Formal_With_Extras (Subp_Id);
+       Actual := First_Actual (Subp_Call);
+ 
+       while Present (Formal) and then Present (Actual) loop
+          if Is_Build_In_Place_Entity (Formal)
+            and then Nkind (Actual) = N_Identifier
+            and then Is_Build_In_Place_Entity (Entity (Actual))
+            and then BIP_Suffix_Kind (Formal)
+                       /= BIP_Suffix_Kind (Entity (Actual))
+          then
+             return False;
+          end if;
+ 
+          Next_Formal_With_Extras (Formal);
+          Next_Actual (Actual);
+       end loop;
+ 
+       return No (Formal) and then No (Actual);
+    end Check_BIP_Actuals;
+ 
     -----------------------------
     -- Check_Number_Of_Actuals --
     -----------------------------
*************** package body Exp_Ch6 is
*** 885,893 ****
        Actual : Node_Id;
  
     begin
!       pragma Assert (Nkind_In (Subp_Call, N_Entry_Call_Statement,
!                                           N_Function_Call,
!                                           N_Procedure_Call_Statement));
  
        Formal := First_Formal_With_Extras (Subp_Id);
        Actual := First_Actual (Subp_Call);
--- 1104,1112 ----
        Actual : Node_Id;
  
     begin
!       pragma Assert (Nkind (Subp_Call) in N_Entry_Call_Statement
!                                         | N_Function_Call
!                                         | N_Procedure_Call_Statement);
  
        Formal := First_Formal_With_Extras (Subp_Id);
        Actual := First_Actual (Subp_Call);
*************** package body Exp_Ch6 is
*** 1237,1248 ****
        Subp      : Entity_Id;
        Post_Call : out List_Id)
     is
!       Loc       : constant Source_Ptr := Sloc (N);
!       Actual    : Node_Id;
!       Formal    : Entity_Id;
!       N_Node    : Node_Id;
!       E_Actual  : Entity_Id;
!       E_Formal  : Entity_Id;
  
        procedure Add_Call_By_Copy_Code;
        --  For cases where the parameter must be passed by copy, this routine
--- 1456,1467 ----
        Subp      : Entity_Id;
        Post_Call : out List_Id)
     is
!       Loc      : constant Source_Ptr := Sloc (N);
!       Actual   : Node_Id;
!       Formal   : Entity_Id;
!       N_Node   : Node_Id;
!       E_Actual : Entity_Id;
!       E_Formal : Entity_Id;
  
        procedure Add_Call_By_Copy_Code;
        --  For cases where the parameter must be passed by copy, this routine
*************** package body Exp_Ch6 is
*** 1252,1262 ****
        --  also takes care of any constraint checks required for the type
        --  conversion case (on both the way in and the way out).
  
!       procedure Add_Simple_Call_By_Copy_Code (Bit_Packed_Array : Boolean);
        --  This is similar to the above, but is used in cases where we know
        --  that all that is needed is to simply create a temporary and copy
!       --  the value in and out of the temporary. If Bit_Packed_Array is True,
!       --  the procedure is called for a bit-packed array actual.
  
        procedure Add_Validation_Call_By_Copy_Code (Act : Node_Id);
        --  Perform copy-back for actual parameter Act which denotes a validation
--- 1471,1486 ----
        --  also takes care of any constraint checks required for the type
        --  conversion case (on both the way in and the way out).
  
!       procedure Add_Simple_Call_By_Copy_Code (Force : Boolean);
        --  This is similar to the above, but is used in cases where we know
        --  that all that is needed is to simply create a temporary and copy
!       --  the value in and out of the temporary. If Force is True, then the
!       --  procedure may disregard legality considerations.
! 
!       --  ??? We need to do the copy for a bit-packed array because this is
!       --  where the rewriting into a mask-and-shift sequence is done. But of
!       --  course this may break the program if it expects bits to be really
!       --  passed by reference. That's what we have done historically though.
  
        procedure Add_Validation_Call_By_Copy_Code (Act : Node_Id);
        --  Perform copy-back for actual parameter Act which denotes a validation
*************** package body Exp_Ch6 is
*** 1345,1352 ****
  
              Var := Make_Var (Expression (Actual));
  
!             Crep := not Same_Representation
!                           (F_Typ, Etype (Expression (Actual)));
  
           else
              V_Typ := Etype (Actual);
--- 1569,1577 ----
  
              Var := Make_Var (Expression (Actual));
  
!             Crep := not Has_Compatible_Representation
!                           (Target_Type  => F_Typ,
!                            Operand_Type => Etype (Expression (Actual)));
  
           else
              V_Typ := Etype (Actual);
*************** package body Exp_Ch6 is
*** 1451,1456 ****
--- 1676,1700 ----
           then
              Init := New_Occurrence_Of (Var, Loc);
  
+          --  View conversions when the formal type has the Default_Value aspect
+          --  require passing in the value of the conversion's operand. The type
+          --  of that operand also has Default_Value, as required by AI12-0074
+          --  (RM 6.4.1(5.3/4)). The subtype denoted by the subtype_indication
+          --  is changed to the base type of the formal subtype, to ensure that
+          --  the actual's value can be assigned without a constraint check
+          --  (note that no check is done on passing to an out parameter). Also
+          --  note that the two types necessarily share the same ancestor type,
+          --  as required by 6.4.1(5.2/4), so underlying base types will match.
+ 
+          elsif Ekind (Formal) = E_Out_Parameter
+            and then Is_Scalar_Type (Etype (F_Typ))
+            and then Nkind (Actual) = N_Type_Conversion
+            and then Present (Default_Aspect_Value (Etype (F_Typ)))
+          then
+             Indic := New_Occurrence_Of (Base_Type (F_Typ), Loc);
+             Init  := Convert_To
+                        (Base_Type (F_Typ), New_Occurrence_Of (Var, Loc));
+ 
           else
              Init := Empty;
           end if;
*************** package body Exp_Ch6 is
*** 1561,1573 ****
  
                    pragma Assert (Ada_Version >= Ada_2012);
  
!                   if Type_Access_Level (E_Formal) >
!                      Object_Access_Level (Lhs)
!                   then
!                      Append_To (Post_Call,
!                        Make_Raise_Program_Error (Loc,
!                          Reason => PE_Accessibility_Check_Failed));
!                   end if;
  
                    Append_To (Post_Call,
                      Make_Assignment_Statement (Loc,
--- 1805,1811 ----
  
                    pragma Assert (Ada_Version >= Ada_2012);
  
!                   Apply_Accessibility_Check (Lhs, E_Formal, N);
  
                    Append_To (Post_Call,
                      Make_Assignment_Statement (Loc,
*************** package body Exp_Ch6 is
*** 1615,1621 ****
        -- Add_Simple_Call_By_Copy_Code --
        ----------------------------------
  
!       procedure Add_Simple_Call_By_Copy_Code (Bit_Packed_Array : Boolean) is
           Decl   : Node_Id;
           F_Typ  : Entity_Id := Etype (Formal);
           Incod  : Node_Id;
--- 1853,1859 ----
        -- Add_Simple_Call_By_Copy_Code --
        ----------------------------------
  
!       procedure Add_Simple_Call_By_Copy_Code (Force : Boolean) is
           Decl   : Node_Id;
           F_Typ  : Entity_Id := Etype (Formal);
           Incod  : Node_Id;
*************** package body Exp_Ch6 is
*** 1626,1637 ****
           Temp   : Entity_Id;
  
        begin
!          --  ??? We need to do the copy for a bit-packed array because this is
!          --  where the rewriting into a mask-and-shift sequence is done. But of
!          --  course this may break the program if it expects bits to be really
!          --  passed by reference. That's what we have done historically though.
  
!          if not Bit_Packed_Array and then not Is_Legal_Copy then
              return;
           end if;
  
--- 1864,1872 ----
           Temp   : Entity_Id;
  
        begin
!          --  Unless forced not to, check the legality of the copy operation
  
!          if not Force and then not Is_Legal_Copy then
              return;
           end if;
  
*************** package body Exp_Ch6 is
*** 1937,1943 ****
           loop
              Set_Analyzed (Pfx, False);
              exit when
!               not Nkind_In (Pfx, N_Selected_Component, N_Indexed_Component);
              Pfx := Prefix (Pfx);
           end loop;
        end Reset_Packed_Prefix;
--- 2172,2178 ----
           loop
              Set_Analyzed (Pfx, False);
              exit when
!               Nkind (Pfx) not in N_Selected_Component | N_Indexed_Component;
              Pfx := Prefix (Pfx);
           end loop;
        end Reset_Packed_Prefix;
*************** package body Exp_Ch6 is
*** 1954,1966 ****
              return False;
           end if;
  
           --  Check for atomicity mismatch
  
           if Is_Atomic_Object (Actual) and then not Is_Atomic (E_Formal)
           then
              if Comes_From_Source (N) then
                 Error_Msg_N
!                  ("?atomic actual passed by copy (RM C.6(19))", Actual);
              end if;
              return True;
           end if;
--- 2189,2208 ----
              return False;
           end if;
  
+          --  There is no requirement inside initialization procedures and this
+          --  would generate copies for atomic or volatile composite components.
+ 
+          if Inside_Init_Proc then
+             return False;
+          end if;
+ 
           --  Check for atomicity mismatch
  
           if Is_Atomic_Object (Actual) and then not Is_Atomic (E_Formal)
           then
              if Comes_From_Source (N) then
                 Error_Msg_N
!                  ("??atomic actual passed by copy (RM C.6(19))", Actual);
              end if;
              return True;
           end if;
*************** package body Exp_Ch6 is
*** 1971,1977 ****
           then
              if Comes_From_Source (N) then
                 Error_Msg_N
!                  ("?volatile actual passed by copy (RM C.6(19))", Actual);
              end if;
              return True;
           end if;
--- 2213,2219 ----
           then
              if Comes_From_Source (N) then
                 Error_Msg_N
!                  ("??volatile actual passed by copy (RM C.6(19))", Actual);
              end if;
              return True;
           end if;
*************** package body Exp_Ch6 is
*** 2027,2039 ****
  
              --  Ada 2005 (AI-318-02): If the actual parameter is a call to a
              --  build-in-place function, then a temporary return object needs
!             --  to be created and access to it must be passed to the function.
              --  Currently we limit such functions to those with inherently
              --  limited result subtypes, but eventually we plan to expand the
              --  functions that are treated as build-in-place to include other
              --  composite result types.
  
!             if Is_Build_In_Place_Function_Call (Actual) then
                 Make_Build_In_Place_Call_In_Anonymous_Context (Actual);
  
              --  Ada 2005 (AI-318-02): Specialization of the previous case for
--- 2269,2292 ----
  
              --  Ada 2005 (AI-318-02): If the actual parameter is a call to a
              --  build-in-place function, then a temporary return object needs
!             --  to be created and access to it must be passed to the function
!             --  (and ensure that we have an activation chain defined for tasks
!             --  and a Master variable).
! 
              --  Currently we limit such functions to those with inherently
              --  limited result subtypes, but eventually we plan to expand the
              --  functions that are treated as build-in-place to include other
              --  composite result types.
  
!             --  But do not do it here for intrinsic subprograms since this will
!             --  be done properly after the subprogram is expanded.
! 
!             if Is_Intrinsic_Subprogram (Subp) then
!                null;
! 
!             elsif Is_Build_In_Place_Function_Call (Actual) then
!                Build_Activation_Chain_Entity (N);
!                Build_Master_Entity (Etype (Actual));
                 Make_Build_In_Place_Call_In_Anonymous_Context (Actual);
  
              --  Ada 2005 (AI-318-02): Specialization of the previous case for
*************** package body Exp_Ch6 is
*** 2041,2046 ****
--- 2294,2301 ----
              --  object covers interface types.
  
              elsif Present (Unqual_BIP_Iface_Function_Call (Actual)) then
+                Build_Activation_Chain_Entity (N);
+                Build_Master_Entity (Etype (Actual));
                 Make_Build_In_Place_Iface_Call_In_Anonymous_Context (Actual);
              end if;
  
*************** package body Exp_Ch6 is
*** 2103,2119 ****
  
              elsif Nkind (Actual) = N_Type_Conversion
                and then
!                 (Is_Numeric_Type (E_Formal)
!                   or else Is_Access_Type (E_Formal)
!                   or else Is_Enumeration_Type (E_Formal)
                    or else Is_Bit_Packed_Array (Etype (Formal))
                    or else Is_Bit_Packed_Array (Etype (Expression (Actual)))
  
                    --  Also pass by copy if change of representation
  
!                   or else not Same_Representation
!                                 (Etype (Formal),
!                                  Etype (Expression (Actual))))
              then
                 Add_Call_By_Copy_Code;
  
--- 2358,2372 ----
  
              elsif Nkind (Actual) = N_Type_Conversion
                and then
!                 (Is_Elementary_Type (E_Formal)
                    or else Is_Bit_Packed_Array (Etype (Formal))
                    or else Is_Bit_Packed_Array (Etype (Expression (Actual)))
  
                    --  Also pass by copy if change of representation
  
!                   or else not Has_Compatible_Representation
!                                 (Target_Type  => Etype (Formal),
!                                  Operand_Type => Etype (Expression (Actual))))
              then
                 Add_Call_By_Copy_Code;
  
*************** package body Exp_Ch6 is
*** 2123,2129 ****
              --  [in] out parameters.
  
              elsif Is_Ref_To_Bit_Packed_Array (Actual) then
!                Add_Simple_Call_By_Copy_Code (Bit_Packed_Array => True);
  
              --  If a nonscalar actual is possibly bit-aligned, we need a copy
              --  because the back-end cannot cope with such objects. In other
--- 2376,2382 ----
              --  [in] out parameters.
  
              elsif Is_Ref_To_Bit_Packed_Array (Actual) then
!                Add_Simple_Call_By_Copy_Code (Force => True);
  
              --  If a nonscalar actual is possibly bit-aligned, we need a copy
              --  because the back-end cannot cope with such objects. In other
*************** package body Exp_Ch6 is
*** 2139,2145 ****
                  Component_May_Be_Bit_Aligned (Entity (Selector_Name (Actual)))
                and then not Represented_As_Scalar (Etype (Formal))
              then
!                Add_Simple_Call_By_Copy_Code (Bit_Packed_Array => False);
  
              --  References to slices of bit-packed arrays are expanded
  
--- 2392,2398 ----
                  Component_May_Be_Bit_Aligned (Entity (Selector_Name (Actual)))
                and then not Represented_As_Scalar (Etype (Formal))
              then
!                Add_Simple_Call_By_Copy_Code (Force => False);
  
              --  References to slices of bit-packed arrays are expanded
  
*************** package body Exp_Ch6 is
*** 2210,2255 ****
                 Aund : constant Entity_Id := Underlying_Type (E_Actual);
                 Atyp : Entity_Id;
  
-                function Is_Public_Subp return Boolean;
-                --  Check whether the subprogram being called is a visible
-                --  operation of the type of the actual. Used to determine
-                --  whether an invariant check must be generated on the
-                --  caller side.
- 
-                ---------------------
-                --  Is_Public_Subp --
-                ---------------------
- 
-                function Is_Public_Subp return Boolean is
-                   Pack      : constant Entity_Id := Scope (Subp);
-                   Subp_Decl : Node_Id;
- 
-                begin
-                   if not Is_Subprogram (Subp) then
-                      return False;
- 
-                   --  The operation may be inherited, or a primitive of the
-                   --  root type.
- 
-                   elsif
-                     Nkind_In (Parent (Subp), N_Private_Extension_Declaration,
-                                              N_Full_Type_Declaration)
-                   then
-                      Subp_Decl := Parent (Subp);
- 
-                   else
-                      Subp_Decl := Unit_Declaration_Node (Subp);
-                   end if;
- 
-                   return Ekind (Pack) = E_Package
-                     and then
-                       List_Containing (Subp_Decl) =
-                         Visible_Declarations
-                           (Specification (Unit_Declaration_Node (Pack)));
-                end Is_Public_Subp;
- 
-             --  Start of processing for By_Ref_Predicate_Check
- 
              begin
                 if No (Aund) then
                    Atyp := E_Actual;
--- 2463,2468 ----
*************** package body Exp_Ch6 is
*** 2257,2264 ****
                    Atyp := Aund;
                 end if;
  
!                if Has_Predicates (Atyp)
!                  and then Present (Predicate_Function (Atyp))
  
                   --  Skip predicate checks for special cases
  
--- 2470,2476 ----
                    Atyp := Aund;
                 end if;
  
!                if Predicate_Enabled (Atyp)
  
                   --  Skip predicate checks for special cases
  
*************** package body Exp_Ch6 is
*** 2267,2299 ****
                    Append_To (Post_Call,
                      Make_Predicate_Check (Atyp, Actual));
                 end if;
- 
-                --  We generated caller-side invariant checks in two cases:
- 
-                --  a) when calling an inherited operation, where there is an
-                --  implicit view conversion of the actual to the parent type.
- 
-                --  b) When the conversion is explicit
- 
-                --  We treat these cases separately because the required
-                --  conversion for a) is added later when expanding the call.
- 
-                if Has_Invariants (Etype (Actual))
-                   and then
-                     Nkind (Parent (Subp)) = N_Private_Extension_Declaration
-                then
-                   if Comes_From_Source (N) and then Is_Public_Subp then
-                      Append_To (Post_Call, Make_Invariant_Call (Actual));
-                   end if;
- 
-                elsif Nkind (Actual) = N_Type_Conversion
-                  and then Has_Invariants (Etype (Expression (Actual)))
-                then
-                   if Comes_From_Source (N) and then Is_Public_Subp then
-                      Append_To (Post_Call,
-                        Make_Invariant_Call (Expression (Actual)));
-                   end if;
-                end if;
              end By_Ref_Predicate_Check;
  
           --  Processing for IN parameters
--- 2479,2484 ----
*************** package body Exp_Ch6 is
*** 2325,2338 ****
              --  Is this really necessary in all cases???
  
              elsif Is_Ref_To_Bit_Packed_Array (Actual) then
!                Add_Simple_Call_By_Copy_Code (Bit_Packed_Array => True);
  
              --  If a nonscalar actual is possibly unaligned, we need a copy
  
              elsif Is_Possibly_Unaligned_Object (Actual)
                and then not Represented_As_Scalar (Etype (Formal))
              then
!                Add_Simple_Call_By_Copy_Code (Bit_Packed_Array => False);
  
              --  Similarly, we have to expand slices of packed arrays here
              --  because the result must be byte aligned.
--- 2510,2528 ----
              --  Is this really necessary in all cases???
  
              elsif Is_Ref_To_Bit_Packed_Array (Actual) then
!                Add_Simple_Call_By_Copy_Code (Force => True);
! 
!             --  If we have a C++ constructor call, we need to create the object
! 
!             elsif Is_CPP_Constructor_Call (Actual) then
!                Add_Simple_Call_By_Copy_Code (Force => True);
  
              --  If a nonscalar actual is possibly unaligned, we need a copy
  
              elsif Is_Possibly_Unaligned_Object (Actual)
                and then not Represented_As_Scalar (Etype (Formal))
              then
!                Add_Simple_Call_By_Copy_Code (Force => False);
  
              --  Similarly, we have to expand slices of packed arrays here
              --  because the result must be byte aligned.
*************** package body Exp_Ch6 is
*** 2373,2378 ****
--- 2563,2647 ----
              end if;
           end if;
  
+          --  Type-invariant checks for in-out and out parameters, as well as
+          --  for in parameters of procedures (AI05-0289 and AI12-0044).
+ 
+          if Ekind (Formal) /= E_In_Parameter
+            or else Ekind (Subp) = E_Procedure
+          then
+             Caller_Side_Invariant_Checks : declare
+ 
+                function Is_Public_Subp return Boolean;
+                --  Check whether the subprogram being called is a visible
+                --  operation of the type of the actual. Used to determine
+                --  whether an invariant check must be generated on the
+                --  caller side.
+ 
+                ---------------------
+                --  Is_Public_Subp --
+                ---------------------
+ 
+                function Is_Public_Subp return Boolean is
+                   Pack      : constant Entity_Id := Scope (Subp);
+                   Subp_Decl : Node_Id;
+ 
+                begin
+                   if not Is_Subprogram (Subp) then
+                      return False;
+ 
+                   --  The operation may be inherited, or a primitive of the
+                   --  root type.
+ 
+                   elsif
+                     Nkind (Parent (Subp)) in N_Private_Extension_Declaration
+                                            | N_Full_Type_Declaration
+                   then
+                      Subp_Decl := Parent (Subp);
+ 
+                   else
+                      Subp_Decl := Unit_Declaration_Node (Subp);
+                   end if;
+ 
+                   return Ekind (Pack) = E_Package
+                     and then
+                       List_Containing (Subp_Decl) =
+                         Visible_Declarations
+                           (Specification (Unit_Declaration_Node (Pack)));
+                end Is_Public_Subp;
+ 
+             --  Start of processing for Caller_Side_Invariant_Checks
+ 
+             begin
+                --  We generate caller-side invariant checks in two cases:
+ 
+                --  a) when calling an inherited operation, where there is an
+                --  implicit view conversion of the actual to the parent type.
+ 
+                --  b) When the conversion is explicit
+ 
+                --  We treat these cases separately because the required
+                --  conversion for a) is added later when expanding the call.
+ 
+                if Has_Invariants (Etype (Actual))
+                   and then
+                     Nkind (Parent (Etype (Actual)))
+                       = N_Private_Extension_Declaration
+                then
+                   if Comes_From_Source (N) and then Is_Public_Subp then
+                      Append_To (Post_Call, Make_Invariant_Call (Actual));
+                   end if;
+ 
+                elsif Nkind (Actual) = N_Type_Conversion
+                  and then Has_Invariants (Etype (Expression (Actual)))
+                then
+                   if Comes_From_Source (N) and then Is_Public_Subp then
+                      Append_To
+                        (Post_Call, Make_Invariant_Call (Expression (Actual)));
+                   end if;
+                end if;
+             end Caller_Side_Invariant_Checks;
+          end if;
+ 
           Next_Formal (Formal);
           Next_Actual (Actual);
        end loop;
*************** package body Exp_Ch6 is
*** 2385,2397 ****
     procedure Expand_Call (N : Node_Id) is
        Post_Call : List_Id;
  
     begin
!       pragma Assert (Nkind_In (N, N_Entry_Call_Statement,
!                                   N_Function_Call,
!                                   N_Procedure_Call_Statement));
  
!       Expand_Call_Helper (N, Post_Call);
!       Insert_Post_Call_Actions (N, Post_Call);
     end Expand_Call;
  
     ------------------------
--- 2654,2746 ----
     procedure Expand_Call (N : Node_Id) is
        Post_Call : List_Id;
  
+       --  If this is an indirect call through an Access_To_Subprogram
+       --  with contract specifications, it is rewritten as a call to
+       --  the corresponding Access_Subprogram_Wrapper with the same
+       --  actuals, whose body contains a naked indirect call (which
+       --  itself must not be rewritten, to prevent infinite recursion).
+ 
+       Must_Rewrite_Indirect_Call : constant Boolean :=
+         Ada_Version >= Ada_2020
+           and then Nkind (Name (N)) = N_Explicit_Dereference
+           and then Ekind (Etype (Name (N))) = E_Subprogram_Type
+           and then Present
+             (Access_Subprogram_Wrapper (Etype (Name (N))));
+ 
     begin
!       pragma Assert (Nkind (N) in N_Entry_Call_Statement
!                                 | N_Function_Call
!                                 | N_Procedure_Call_Statement);
  
!       --  Check that this is not the call in the body of the wrapper
! 
!       if Must_Rewrite_Indirect_Call
!         and then (not Is_Overloadable (Current_Scope)
!              or else not Is_Access_Subprogram_Wrapper (Current_Scope))
!       then
!          declare
!             Loc      : constant Source_Ptr := Sloc (N);
!             Wrapper  : constant Entity_Id :=
!               Access_Subprogram_Wrapper (Etype (Name (N)));
!             Ptr      : constant Node_Id   := Prefix (Name (N));
!             Ptr_Type : constant Entity_Id := Etype (Ptr);
!             Typ      : constant Entity_Id := Etype (N);
! 
!             New_N    : Node_Id;
!             Parms    : List_Id := Parameter_Associations (N);
!             Ptr_Act  : Node_Id;
! 
!          begin
!             --  The last actual in the call is the pointer itself.
!             --  If the aspect is inherited, convert the pointer to the
!             --  parent type that specifies the contract.
!             --  If the original access_to_subprogram has defaults for
!             --  in_parameters, the call may include named associations, so
!             --  we create one for the pointer as well.
! 
!             if Is_Derived_Type (Ptr_Type)
!               and then Ptr_Type /= Etype (Last_Formal (Wrapper))
!             then
!                Ptr_Act :=
!                 Make_Type_Conversion (Loc,
!                   New_Occurrence_Of
!                     (Etype (Last_Formal (Wrapper)), Loc), Ptr);
! 
!             else
!                Ptr_Act := Ptr;
!             end if;
! 
!             --  Handle parameterless subprogram.
! 
!             if No (Parms) then
!                Parms := New_List;
!             end if;
! 
!             Append
!              (Make_Parameter_Association (Loc,
!                 Selector_Name => Make_Identifier (Loc,
!                    Chars (Last_Formal (Wrapper))),
!                  Explicit_Actual_Parameter => Ptr_Act),
!               Parms);
! 
!             if Nkind (N) = N_Procedure_Call_Statement then
!                New_N := Make_Procedure_Call_Statement (Loc,
!                   Name => New_Occurrence_Of (Wrapper, Loc),
!                   Parameter_Associations => Parms);
!             else
!                New_N := Make_Function_Call (Loc,
!                   Name => New_Occurrence_Of (Wrapper, Loc),
!                   Parameter_Associations => Parms);
!             end if;
! 
!             Rewrite (N, New_N);
!             Analyze_And_Resolve (N, Typ);
!          end;
! 
!       else
!          Expand_Call_Helper (N, Post_Call);
!          Insert_Post_Call_Actions (N, Post_Call);
!       end if;
     end Expand_Call;
  
     ------------------------
*************** package body Exp_Ch6 is
*** 2425,2430 ****
--- 2774,2788 ----
        --  default parameters and for extra actuals (for Extra_Formals). The
        --  argument is an N_Parameter_Association node.
  
+       procedure Add_Cond_Expression_Extra_Actual (Formal : Entity_Id);
+       --  Adds extra accessibility actuals in the case of a conditional
+       --  expression corresponding to Formal.
+ 
+       --  Note: Conditional expressions used as actuals for anonymous access
+       --  formals complicate the process of propagating extra accessibility
+       --  actuals and must be handled in a recursive fashion since they can
+       --  be embedded within each other.
+ 
        procedure Add_Extra_Actual (Expr : Node_Id; EF : Entity_Id);
        --  Adds an extra actual to the list of extra actuals. Expr is the
        --  expression for the value of the actual, EF is the entity for the
*************** package body Exp_Ch6 is
*** 2443,2448 ****
--- 2801,2810 ----
        --  though useless predicate checks will be generally removed by
        --  back-end optimizations.
  
+       procedure Check_Subprogram_Variant;
+       --  Emit a call to the internally generated procedure with checks for
+       --  aspect Subprogrgram_Variant, if present and enabled.
+ 
        function Inherited_From_Formal (S : Entity_Id) return Entity_Id;
        --  Within an instance, a type derived from an untagged formal derived
        --  type inherits from the original parent, not from the actual. The
*************** package body Exp_Ch6 is
*** 2508,2513 ****
--- 2870,3044 ----
           Prev := Actual_Expr;
        end Add_Actual_Parameter;
  
+       --------------------------------------
+       -- Add_Cond_Expression_Extra_Actual --
+       --------------------------------------
+ 
+       procedure Add_Cond_Expression_Extra_Actual
+         (Formal : Entity_Id)
+       is
+          Decl : Node_Id;
+          Lvl  : Entity_Id;
+ 
+          procedure Insert_Level_Assign (Branch : Node_Id);
+          --  Recursively add assignment of the level temporary on each branch
+          --  while moving through nested conditional expressions.
+ 
+          -------------------------
+          -- Insert_Level_Assign --
+          -------------------------
+ 
+          procedure Insert_Level_Assign (Branch : Node_Id) is
+ 
+             procedure Expand_Branch (Res_Assn : Node_Id);
+             --  Perform expansion or iterate further within nested
+             --  conditionals given the object declaration or assignment to
+             --  result object created during expansion which represents a
+             --  branch of the conditional expression.
+ 
+             -------------------
+             -- Expand_Branch --
+             -------------------
+ 
+             procedure Expand_Branch (Res_Assn : Node_Id) is
+             begin
+                pragma Assert (Nkind (Res_Assn) in
+                                N_Assignment_Statement |
+                                N_Object_Declaration);
+ 
+                --  There are more nested conditional expressions so we must go
+                --  deeper.
+ 
+                if Nkind (Expression (Res_Assn)) = N_Expression_With_Actions
+                  and then
+                    Nkind (Original_Node (Expression (Res_Assn)))
+                      in N_Case_Expression | N_If_Expression
+                then
+                   Insert_Level_Assign
+                     (Expression (Res_Assn));
+ 
+                --  Add the level assignment
+ 
+                else
+                   Insert_Before_And_Analyze (Res_Assn,
+                     Make_Assignment_Statement (Loc,
+                       Name       => New_Occurrence_Of (Lvl, Loc),
+                       Expression =>
+                         Accessibility_Level
+                           (Expression (Res_Assn), Dynamic_Level)));
+                end if;
+             end Expand_Branch;
+ 
+             Cond : Node_Id;
+             Alt  : Node_Id;
+ 
+          --  Start of processing for Insert_Level_Assign
+ 
+          begin
+             --  Examine further nested condtionals
+ 
+             pragma Assert (Nkind (Branch) =
+                             N_Expression_With_Actions);
+ 
+             --  Find the relevant statement in the actions
+ 
+             Cond := First (Actions (Branch));
+             while Present (Cond) loop
+                exit when Nkind (Cond) in N_Case_Statement | N_If_Statement;
+                Next (Cond);
+             end loop;
+ 
+             --  The conditional expression may have been optimized away, so
+             --  examine the actions in the branch.
+ 
+             if No (Cond) then
+                Expand_Branch (Last (Actions (Branch)));
+ 
+             --  Iterate through if expression branches
+ 
+             elsif Nkind (Cond) = N_If_Statement then
+                Expand_Branch (Last (Then_Statements (Cond)));
+                Expand_Branch (Last (Else_Statements (Cond)));
+ 
+             --  Iterate through case alternatives
+ 
+             elsif Nkind (Cond) = N_Case_Statement then
+ 
+                Alt := First (Alternatives (Cond));
+                while Present (Alt) loop
+                   Expand_Branch (Last (Statements (Alt)));
+                   Next (Alt);
+                end loop;
+             end if;
+          end Insert_Level_Assign;
+ 
+       --  Start of processing for cond expression case
+ 
+       begin
+          --  Create declaration of a temporary to store the accessibility
+          --  level of each branch of the conditional expression.
+ 
+          Lvl  := Make_Temporary (Loc, 'L');
+          Decl := Make_Object_Declaration (Loc,
+                    Defining_Identifier => Lvl,
+                    Object_Definition   =>
+                      New_Occurrence_Of (Standard_Natural, Loc));
+ 
+          --  Install the declaration and perform necessary expansion if we
+          --  are dealing with a procedure call.
+ 
+          if Nkind (Call_Node) = N_Procedure_Call_Statement then
+             --  Generate:
+             --    Lvl : Natural;
+             --    Call (
+             --     {do
+             --        If_Exp_Res : Typ;
+             --        if Cond then
+             --           Lvl        := 0; --  Access level
+             --           If_Exp_Res := Exp;
+             --        ...
+             --      in If_Exp_Res end;},
+             --      Lvl,
+             --      ...
+             --    )
+ 
+             Insert_Before_And_Analyze (Call_Node, Decl);
+ 
+          --  Ditto for a function call. Note that we do not wrap the function
+          --  call into an expression with action to avoid bad interactions with
+          --  Exp_Ch4.Process_Transient_In_Expression.
+ 
+          else
+             --  Generate:
+             --    Lvl : Natural;  --  placed above the function call
+             --    ...
+             --    Func_Call (
+             --     {do
+             --        If_Exp_Res : Typ
+             --        if Cond then
+             --           Lvl := 0; --  Access level
+             --           If_Exp_Res := Exp;
+             --      in If_Exp_Res end;},
+             --      Lvl,
+             --      ...
+             --    )
+ 
+             Insert_Action (Call_Node, Decl);
+             Analyze (Call_Node);
+          end if;
+ 
+          --  Decorate the conditional expression with assignments to our level
+          --  temporary.
+ 
+          Insert_Level_Assign (Prev);
+ 
+          --  Make our level temporary the passed actual
+ 
+          Add_Extra_Actual
+            (Expr => New_Occurrence_Of (Lvl, Loc),
+             EF   => Extra_Accessibility (Formal));
+       end Add_Cond_Expression_Extra_Actual;
+ 
        ----------------------
        -- Add_Extra_Actual --
        ----------------------
*************** package body Exp_Ch6 is
*** 2568,2574 ****
              if Has_Invariants (Curr_Typ)
                and then Present (Invariant_Procedure (Curr_Typ))
              then
!                --  Verify the invariate of the current type. Generate:
  
                 --    <Curr_Typ>Invariant (Curr_Typ (Arg));
  
--- 3099,3105 ----
              if Has_Invariants (Curr_Typ)
                and then Present (Invariant_Procedure (Curr_Typ))
              then
!                --  Verify the invariant of the current type. Generate:
  
                 --    <Curr_Typ>Invariant (Curr_Typ (Arg));
  
*************** package body Exp_Ch6 is
*** 2586,2593 ****
              Par_Typ := Base_Type (Etype (Curr_Typ));
           end loop;
  
!          if not Is_Empty_List (Inv_Checks) then
!             Insert_Actions_After (N, Inv_Checks);
           end if;
        end Add_View_Conversion_Invariants;
  
--- 3117,3129 ----
              Par_Typ := Base_Type (Etype (Curr_Typ));
           end loop;
  
!          --  If the node is a function call the generated tests have been
!          --  already handled in Insert_Post_Call_Actions.
! 
!          if not Is_Empty_List (Inv_Checks)
!            and then Nkind (Call_Node) = N_Procedure_Call_Statement
!          then
!             Insert_Actions_After (Call_Node, Inv_Checks);
           end if;
        end Add_View_Conversion_Invariants;
  
*************** package body Exp_Ch6 is
*** 2612,2620 ****
           function May_Fold (N : Node_Id) return Traverse_Result is
           begin
              case Nkind (N) is
!                when N_Binary_Op
!                   | N_Unary_Op
!                =>
                    return OK;
  
                 when N_Expanded_Name
--- 3148,3154 ----
           function May_Fold (N : Node_Id) return Traverse_Result is
           begin
              case Nkind (N) is
!                when N_Op =>
                    return OK;
  
                 when N_Expanded_Name
*************** package body Exp_Ch6 is
*** 2698,2703 ****
--- 3232,3268 ----
           end if;
        end Can_Fold_Predicate_Call;
  
+       ------------------------------
+       -- Check_Subprogram_Variant --
+       ------------------------------
+ 
+       procedure Check_Subprogram_Variant is
+          Variant_Prag : constant Node_Id :=
+            Get_Pragma (Current_Scope, Pragma_Subprogram_Variant);
+ 
+          Variant_Proc : Entity_Id;
+ 
+       begin
+          if Present (Variant_Prag) and then Is_Checked (Variant_Prag) then
+ 
+             --  Analysis of the pragma rewrites its argument with a reference
+             --  to the internally generated procedure.
+ 
+             Variant_Proc :=
+               Entity
+                 (Expression
+                    (First
+                       (Pragma_Argument_Associations (Variant_Prag))));
+ 
+             Insert_Action (Call_Node,
+               Make_Procedure_Call_Statement (Loc,
+                  Name                   =>
+                    New_Occurrence_Of (Variant_Proc, Loc),
+                  Parameter_Associations =>
+                    New_Copy_List (Parameter_Associations (Call_Node))));
+          end if;
+       end Check_Subprogram_Variant;
+ 
        ---------------------------
        -- Inherited_From_Formal --
        ---------------------------
*************** package body Exp_Ch6 is
*** 2858,2867 ****
           then
              declare
                 Actual : Node_Id;
!                Formal : Node_Id;
  
              begin
!                Actual := First (Parameter_Associations (N));
                 Formal := First_Formal (Subp);
                 while Present (Actual)
                   and then Present (Formal)
--- 3423,3432 ----
           then
              declare
                 Actual : Node_Id;
!                Formal : Entity_Id;
  
              begin
!                Actual := First (Parameter_Associations (Call_Node));
                 Formal := First_Formal (Subp);
                 while Present (Actual)
                   and then Present (Formal)
*************** package body Exp_Ch6 is
*** 2902,2911 ****
        Actual        : Node_Id;
        Formal        : Entity_Id;
        Orig_Subp     : Entity_Id := Empty;
!       Param_Count   : Natural := 0;
        Parent_Formal : Entity_Id;
        Parent_Subp   : Entity_Id;
-       Pref_Entity   : Entity_Id;
        Scop          : Entity_Id;
        Subp          : Entity_Id;
  
--- 3467,3475 ----
        Actual        : Node_Id;
        Formal        : Entity_Id;
        Orig_Subp     : Entity_Id := Empty;
!       Param_Count   : Positive;
        Parent_Formal : Entity_Id;
        Parent_Subp   : Entity_Id;
        Scop          : Entity_Id;
        Subp          : Entity_Id;
  
*************** package body Exp_Ch6 is
*** 2927,2934 ****
        --  of the dimension I/O packages.
  
        if Ada_Version >= Ada_2012
!         and then
!            Nkind_In (Call_Node, N_Procedure_Call_Statement, N_Function_Call)
          and then Present (Parameter_Associations (Call_Node))
        then
           Expand_Put_Call_With_Symbol (Call_Node);
--- 3491,3497 ----
        --  of the dimension I/O packages.
  
        if Ada_Version >= Ada_2012
!         and then Nkind (Call_Node) in N_Subprogram_Call
          and then Present (Parameter_Associations (Call_Node))
        then
           Expand_Put_Call_With_Symbol (Call_Node);
*************** package body Exp_Ch6 is
*** 3046,3053 ****
           end;
        end if;
  
!       --  if this is a call to a predicate function, try to constant
!       --  fold it.
  
        if Nkind (Call_Node) = N_Function_Call
          and then Is_Entity_Name (Name (Call_Node))
--- 3609,3615 ----
           end;
        end if;
  
!       --  If this is a call to a predicate function, try to constant fold it
  
        if Nkind (Call_Node) = N_Function_Call
          and then Is_Entity_Name (Name (Call_Node))
*************** package body Exp_Ch6 is
*** 3057,3063 ****
           return;
        end if;
  
!       if Modify_Tree_For_C
          and then Nkind (Call_Node) = N_Function_Call
          and then Is_Entity_Name (Name (Call_Node))
        then
--- 3619,3625 ----
           return;
        end if;
  
!       if Transform_Function_Array
          and then Nkind (Call_Node) = N_Function_Call
          and then Is_Entity_Name (Name (Call_Node))
        then
*************** package body Exp_Ch6 is
*** 3073,3081 ****
                 --  For internally generated calls ensure that they reference
                 --  the entity of the spec of the called function (needed since
                 --  the expander may generate calls using the entity of their
!                --  body). See for example Expand_Boolean_Operator().
  
!                if not (Comes_From_Source (Call_Node))
                   and then Nkind (Unit_Declaration_Node (Func_Id)) =
                              N_Subprogram_Body
                 then
--- 3635,3643 ----
                 --  For internally generated calls ensure that they reference
                 --  the entity of the spec of the called function (needed since
                 --  the expander may generate calls using the entity of their
!                --  body).
  
!                if not Comes_From_Source (Call_Node)
                   and then Nkind (Unit_Declaration_Node (Func_Id)) =
                              N_Subprogram_Body
                 then
*************** package body Exp_Ch6 is
*** 3092,3098 ****
              --  are passed by pointer in the generated C code, and we cannot
              --  take a pointer from a subprogram call.
  
!             elsif Nkind (Parent (Call_Node)) in N_Subprogram_Call
                and then Is_Record_Type (Etype (Func_Id))
              then
                 declare
--- 3654,3661 ----
              --  are passed by pointer in the generated C code, and we cannot
              --  take a pointer from a subprogram call.
  
!             elsif Modify_Tree_For_C
!               and then Nkind (Parent (Call_Node)) in N_Subprogram_Call
                and then Is_Record_Type (Etype (Func_Id))
              then
                 declare
*************** package body Exp_Ch6 is
*** 3163,3168 ****
--- 3726,3733 ----
  
              Expand_Actuals (Call_Node, Subp, Post_Call);
              pragma Assert (Is_Empty_List (Post_Call));
+             pragma Assert (Check_Number_Of_Actuals (Call_Node, Subp));
+             pragma Assert (Check_BIP_Actuals (Call_Node, Subp));
              return;
           end;
        end if;
*************** package body Exp_Ch6 is
*** 3226,3233 ****
                    --  as out parameter actuals on calls to stream procedures.
  
                    Act_Prev := Prev;
!                   while Nkind_In (Act_Prev, N_Type_Conversion,
!                                             N_Unchecked_Type_Conversion)
                    loop
                       Act_Prev := Expression (Act_Prev);
                    end loop;
--- 3791,3798 ----
                    --  as out parameter actuals on calls to stream procedures.
  
                    Act_Prev := Prev;
!                   while Nkind (Act_Prev) in N_Type_Conversion
!                                           | N_Unchecked_Type_Conversion
                    loop
                       Act_Prev := Expression (Act_Prev);
                    end loop;
*************** package body Exp_Ch6 is
*** 3262,3268 ****
  
           --  Create possible extra actual for accessibility level
  
!          if Present (Get_Accessibility (Formal)) then
  
              --  Ada 2005 (AI-252): If the actual was rewritten as an Access
              --  attribute, then the original actual may be an aliased object
--- 3827,3833 ----
  
           --  Create possible extra actual for accessibility level
  
!          if Present (Extra_Accessibility (Formal)) then
  
              --  Ada 2005 (AI-252): If the actual was rewritten as an Access
              --  attribute, then the original actual may be an aliased object
*************** package body Exp_Ch6 is
*** 3303,3308 ****
--- 3868,3886 ----
              then
                 Prev_Orig := Prev;
  
+             --  If the actual is an attribute reference that was expanded
+             --  into a reference to an entity, then get accessibility level
+             --  from that entity. AARM 6.1.1(27.d) says "... the implicit
+             --  constant declaration defines the accessibility level of X'Old".
+ 
+             elsif Nkind (Prev_Orig) = N_Attribute_Reference
+               and then Attribute_Name (Prev_Orig) in Name_Old | Name_Loop_Entry
+               and then Is_Entity_Name (Prev)
+               and then Present (Entity (Prev))
+               and then Is_Object (Entity (Prev))
+             then
+                Prev_Orig := Prev;
+ 
              elsif Nkind (Prev_Orig) = N_Type_Conversion then
                 Prev_Orig := Expression (Prev_Orig);
              end if;
*************** package body Exp_Ch6 is
*** 3338,3562 ****
  
                    Add_Extra_Actual
                      (Expr =>
!                        New_Occurrence_Of (Get_Accessibility (Parm_Ent), Loc),
!                      EF   => Get_Accessibility (Formal));
                 end;
  
!             elsif Is_Entity_Name (Prev_Orig) then
! 
!                --  When passing an access parameter, or a renaming of an access
!                --  parameter, as the actual to another access parameter we need
!                --  to pass along the actual's own access level parameter. This
!                --  is done if we are within the scope of the formal access
!                --  parameter (if this is an inlined body the extra formal is
!                --  irrelevant).
! 
!                if (Is_Formal (Entity (Prev_Orig))
!                     or else
!                       (Present (Renamed_Object (Entity (Prev_Orig)))
!                         and then
!                           Is_Entity_Name (Renamed_Object (Entity (Prev_Orig)))
!                         and then
!                           Is_Formal
!                             (Entity (Renamed_Object (Entity (Prev_Orig))))))
!                  and then Ekind (Etype (Prev_Orig)) = E_Anonymous_Access_Type
!                  and then In_Open_Scopes (Scope (Entity (Prev_Orig)))
!                then
!                   declare
!                      Parm_Ent : constant Entity_Id := Param_Entity (Prev_Orig);
! 
!                   begin
!                      pragma Assert (Present (Parm_Ent));
! 
!                      if Present (Get_Accessibility (Parm_Ent)) then
!                         Add_Extra_Actual
!                           (Expr =>
!                              New_Occurrence_Of
!                                (Get_Accessibility (Parm_Ent), Loc),
!                            EF   => Get_Accessibility (Formal));
! 
!                      --  If the actual access parameter does not have an
!                      --  associated extra formal providing its scope level,
!                      --  then treat the actual as having library-level
!                      --  accessibility.
! 
!                      else
!                         Add_Extra_Actual
!                           (Expr =>
!                              Make_Integer_Literal (Loc,
!                                Intval => Scope_Depth (Standard_Standard)),
!                            EF   => Get_Accessibility (Formal));
!                      end if;
!                   end;
! 
!                --  The actual is a normal access value, so just pass the level
!                --  of the actual's access type.
! 
!                else
!                   Add_Extra_Actual
!                     (Expr => Dynamic_Accessibility_Level (Prev_Orig),
!                      EF   => Get_Accessibility (Formal));
!                end if;
! 
!             --  If the actual is an access discriminant, then pass the level
!             --  of the enclosing object (RM05-3.10.2(12.4/2)).
  
!             elsif Nkind (Prev_Orig) = N_Selected_Component
!               and then Ekind (Entity (Selector_Name (Prev_Orig))) =
!                                                        E_Discriminant
!               and then Ekind (Etype (Entity (Selector_Name (Prev_Orig)))) =
!                                                        E_Anonymous_Access_Type
              then
!                Add_Extra_Actual
!                  (Expr =>
!                     Make_Integer_Literal (Loc,
!                       Intval => Object_Access_Level (Prefix (Prev_Orig))),
!                   EF   => Get_Accessibility (Formal));
  
!             --  All other cases
  
              else
!                case Nkind (Prev_Orig) is
!                   when N_Attribute_Reference =>
!                      case Get_Attribute_Id (Attribute_Name (Prev_Orig)) is
!                         --  Ignore 'Result, 'Loop_Entry, and 'Old as they can
!                         --  be used to identify access objects and do not have
!                         --  an effect on accessibility level.
! 
!                         when Attribute_Loop_Entry
!                            | Attribute_Old
!                            | Attribute_Result
!                         =>
!                            null;
! 
!                         --  For X'Access, pass on the level of the prefix X
! 
!                         when Attribute_Access =>
! 
!                            --  Accessibility level of S'Access is that of A
! 
!                            Prev_Orig := Prefix (Prev_Orig);
! 
!                            --  If the expression is a view conversion, the
!                            --  accessibility level is that of the expression.
! 
!                            if Nkind (Original_Node (Prev_Orig)) =
!                                 N_Type_Conversion
!                              and then
!                                Nkind (Expression (Original_Node (Prev_Orig))) =
!                                  N_Explicit_Dereference
!                            then
!                               Prev_Orig :=
!                                 Expression (Original_Node (Prev_Orig));
!                            end if;
! 
!                            --  If this is an Access attribute applied to the
!                            --  the current instance object passed to a type
!                            --  initialization procedure, then use the level
!                            --  of the type itself. This is not really correct,
!                            --  as there should be an extra level parameter
!                            --  passed in with _init formals (only in the case
!                            --  where the type is immutably limited), but we
!                            --  don't have an easy way currently to create such
!                            --  an extra formal (init procs aren't ever frozen).
!                            --  For now we just use the level of the type,
!                            --  which may be too shallow, but that works better
!                            --  than passing Object_Access_Level of the type,
!                            --  which can be one level too deep in some cases.
!                            --  ???
! 
!                            --  A further case that requires special handling
!                            --  is the common idiom E.all'access. If E is a
!                            --  formal of the enclosing subprogram, the
!                            --  accessibility of the expression is that of E.
! 
!                            if Is_Entity_Name (Prev_Orig) then
!                               Pref_Entity := Entity (Prev_Orig);
! 
!                            elsif Nkind (Prev_Orig) = N_Explicit_Dereference
!                              and then Is_Entity_Name (Prefix (Prev_Orig))
!                            then
!                               Pref_Entity := Entity (Prefix ((Prev_Orig)));
! 
!                            else
!                               Pref_Entity := Empty;
!                            end if;
! 
!                            if Is_Entity_Name (Prev_Orig)
!                              and then Is_Type (Entity (Prev_Orig))
!                            then
!                               Add_Extra_Actual
!                                 (Expr =>
!                                    Make_Integer_Literal (Loc,
!                                      Intval =>
!                                        Type_Access_Level (Pref_Entity)),
!                                  EF   => Get_Accessibility (Formal));
! 
!                            elsif Nkind (Prev_Orig) = N_Explicit_Dereference
!                              and then Present (Pref_Entity)
!                              and then Is_Formal (Pref_Entity)
!                              and then Present
!                                         (Get_Accessibility (Pref_Entity))
!                            then
!                               Add_Extra_Actual
!                                 (Expr =>
!                                    New_Occurrence_Of
!                                      (Get_Accessibility (Pref_Entity), Loc),
!                                  EF   => Get_Accessibility (Formal));
! 
!                            else
!                               Add_Extra_Actual
!                                 (Expr =>
!                                    Make_Integer_Literal (Loc,
!                                      Intval =>
!                                        Object_Access_Level (Prev_Orig)),
!                                  EF   => Get_Accessibility (Formal));
!                            end if;
! 
!                         --  Treat the unchecked attributes as library-level
! 
!                         when Attribute_Unchecked_Access
!                            | Attribute_Unrestricted_Access
!                         =>
!                            Add_Extra_Actual
!                              (Expr =>
!                                 Make_Integer_Literal (Loc,
!                                   Intval => Scope_Depth (Standard_Standard)),
!                               EF   => Get_Accessibility (Formal));
! 
!                         --  No other cases of attributes returning access
!                         --  values that can be passed to access parameters.
! 
!                         when others =>
!                            raise Program_Error;
! 
!                      end case;
! 
!                   --  For allocators we pass the level of the execution of the
!                   --  called subprogram, which is one greater than the current
!                   --  scope level. However, according to RM 3.10.2(14/3) this
!                   --  is wrong since for an anonymous allocator defining the
!                   --  value of an access parameter, the accessibility level is
!                   --  that of the innermost master of the call???
! 
!                   when N_Allocator =>
!                      Add_Extra_Actual
!                        (Expr =>
!                           Make_Integer_Literal (Loc,
!                             Intval => Scope_Depth (Current_Scope) + 1),
!                         EF   => Get_Accessibility (Formal));
! 
!                   --  For most other cases we simply pass the level of the
!                   --  actual's access type. The type is retrieved from
!                   --  Prev rather than Prev_Orig, because in some cases
!                   --  Prev_Orig denotes an original expression that has
!                   --  not been analyzed.
! 
!                   when others =>
!                      Add_Extra_Actual
!                        (Expr => Dynamic_Accessibility_Level (Prev),
!                         EF   => Get_Accessibility (Formal));
!                end case;
              end if;
           end if;
  
--- 3916,3940 ----
  
                    Add_Extra_Actual
                      (Expr =>
!                        New_Occurrence_Of
!                          (Get_Dynamic_Accessibility (Parm_Ent), Loc),
!                      EF   => Extra_Accessibility (Formal));
                 end;
  
!             --  Conditional expressions
  
!             elsif Nkind (Prev) = N_Expression_With_Actions
!               and then Nkind (Original_Node (Prev)) in
!                          N_If_Expression | N_Case_Expression
              then
!                Add_Cond_Expression_Extra_Actual (Formal);
  
!             --  Normal case
  
              else
!                Add_Extra_Actual
!                  (Expr => Accessibility_Level (Prev, Dynamic_Level),
!                   EF   => Extra_Accessibility (Formal));
              end if;
           end if;
  
*************** package body Exp_Ch6 is
*** 3603,3609 ****
              then
                 null;
  
!             elsif Nkind_In (Prev, N_Allocator, N_Attribute_Reference) then
                 null;
  
              else
--- 3981,3987 ----
              then
                 null;
  
!             elsif Nkind (Prev) in N_Allocator | N_Attribute_Reference then
                 null;
  
              else
*************** package body Exp_Ch6 is
*** 3635,3642 ****
  
                 begin
                    Nod := Actual;
!                   while Nkind_In (Nod, N_Indexed_Component,
!                                        N_Selected_Component)
                    loop
                       Set_Analyzed (Nod, False);
                       Nod := Prefix (Nod);
--- 4013,4020 ----
  
                 begin
                    Nod := Actual;
!                   while Nkind (Nod) in
!                     N_Indexed_Component | N_Selected_Component
                    loop
                       Set_Analyzed (Nod, False);
                       Nod := Prefix (Nod);
*************** package body Exp_Ch6 is
*** 3743,3749 ****
           --  generating spurious checks on complex expansion such as object
           --  initialization through an extension aggregate.
  
!          if Comes_From_Source (N)
             and then Ekind (Formal) /= E_In_Parameter
             and then Nkind (Actual) = N_Type_Conversion
           then
--- 4121,4127 ----
           --  generating spurious checks on complex expansion such as object
           --  initialization through an extension aggregate.
  
!          if Comes_From_Source (Call_Node)
             and then Ekind (Formal) /= E_In_Parameter
             and then Nkind (Actual) = N_Type_Conversion
           then
*************** package body Exp_Ch6 is
*** 3775,3889 ****
        --  "accessibility level determined by the point of call" (AI05-0234)
        --  passed in to it, then pass it in.
  
!       if Ekind_In (Subp, E_Function, E_Operator, E_Subprogram_Type)
          and then
            Present (Extra_Accessibility_Of_Result (Ultimate_Alias (Subp)))
        then
           declare
!             Ancestor : Node_Id := Parent (Call_Node);
!             Level    : Node_Id := Empty;
!             Defer    : Boolean := False;
  
           begin
!             --  Unimplemented: if Subp returns an anonymous access type, then
! 
!             --    a) if the call is the operand of an explict conversion, then
!             --       the target type of the conversion (a named access type)
!             --       determines the accessibility level pass in;
! 
!             --    b) if the call defines an access discriminant of an object
!             --       (e.g., the discriminant of an object being created by an
!             --       allocator, or the discriminant of a function result),
!             --       then the accessibility level to pass in is that of the
!             --       discriminated object being initialized).
! 
!             --  ???
! 
!             while Nkind (Ancestor) = N_Qualified_Expression
!             loop
!                Ancestor := Parent (Ancestor);
!             end loop;
! 
!             case Nkind (Ancestor) is
!                when N_Allocator =>
! 
!                   --  At this point, we'd like to assign
! 
!                   --    Level := Dynamic_Accessibility_Level (Ancestor);
! 
!                   --  but Etype of Ancestor may not have been set yet,
!                   --  so that doesn't work.
! 
!                   --  Handle this later in Expand_Allocator_Expression.
! 
!                   Defer := True;
! 
!                when N_Object_Declaration
!                   | N_Object_Renaming_Declaration
!                =>
!                   declare
!                      Def_Id : constant Entity_Id :=
!                                 Defining_Identifier (Ancestor);
! 
!                   begin
!                      if Is_Return_Object (Def_Id) then
!                         if Present (Extra_Accessibility_Of_Result
!                                      (Return_Applies_To (Scope (Def_Id))))
!                         then
!                            --  Pass along value that was passed in if the
!                            --  routine we are returning from also has an
!                            --  Accessibility_Of_Result formal.
! 
!                            Level :=
!                              New_Occurrence_Of
!                               (Extra_Accessibility_Of_Result
!                                 (Return_Applies_To (Scope (Def_Id))), Loc);
!                         end if;
!                      else
!                         Level :=
!                           Make_Integer_Literal (Loc,
!                             Intval => Object_Access_Level (Def_Id));
!                      end if;
!                   end;
! 
!                when N_Simple_Return_Statement =>
!                   if Present (Extra_Accessibility_Of_Result
!                                (Return_Applies_To
!                                  (Return_Statement_Entity (Ancestor))))
!                   then
!                      --  Pass along value that was passed in if the returned
!                      --  routine also has an Accessibility_Of_Result formal.
  
!                      Level :=
!                        New_Occurrence_Of
!                          (Extra_Accessibility_Of_Result
!                            (Return_Applies_To
!                              (Return_Statement_Entity (Ancestor))), Loc);
!                   end if;
  
!                when others =>
!                   null;
!             end case;
  
!             if not Defer then
!                if not Present (Level) then
  
!                   --  The "innermost master that evaluates the function call".
  
!                   --  ??? - Should we use Integer'Last here instead in order
!                   --  to deal with (some of) the problems associated with
!                   --  calls to subps whose enclosing scope is unknown (e.g.,
!                   --  Anon_Access_To_Subp_Param.all)?
  
!                   Level :=
!                     Make_Integer_Literal (Loc,
!                       Intval => Scope_Depth (Current_Scope) + 1);
!                end if;
  
                 Add_Extra_Actual
                   (Expr => Level,
!                   EF   =>
!                     Extra_Accessibility_Of_Result (Ultimate_Alias (Subp)));
              end if;
           end;
        end if;
--- 4153,4201 ----
        --  "accessibility level determined by the point of call" (AI05-0234)
        --  passed in to it, then pass it in.
  
!       if Ekind (Subp) in E_Function | E_Operator | E_Subprogram_Type
          and then
            Present (Extra_Accessibility_Of_Result (Ultimate_Alias (Subp)))
        then
           declare
!             Extra_Form : Node_Id := Empty;
!             Level      : Node_Id := Empty;
  
           begin
!             --  Detect cases where the function call has been internally
!             --  generated by examining the original node and return library
!             --  level - taking care to avoid ignoring function calls expanded
!             --  in prefix notation.
  
!             if Nkind (Original_Node (Call_Node)) not in N_Function_Call
!                                                       | N_Selected_Component
!                                                       | N_Indexed_Component
!             then
!                Level := Make_Integer_Literal
!                           (Loc, Scope_Depth (Standard_Standard));
  
!             --  Otherwise get the level normally based on the call node
  
!             else
!                Level := Accessibility_Level (Call_Node, Dynamic_Level);
  
!             end if;
  
!             --  It may be possible that we are re-expanding an already
!             --  expanded call when are are dealing with dispatching ???
  
!             if not Present (Parameter_Associations (Call_Node))
!               or else Nkind (Last (Parameter_Associations (Call_Node)))
!                         /= N_Parameter_Association
!               or else not Is_Accessibility_Actual
!                               (Last (Parameter_Associations (Call_Node)))
!             then
!                Extra_Form := Extra_Accessibility_Of_Result
!                                (Ultimate_Alias (Subp));
  
                 Add_Extra_Actual
                   (Expr => Level,
!                   EF   => Extra_Form);
              end if;
           end;
        end if;
*************** package body Exp_Ch6 is
*** 3921,3926 ****
--- 4233,4240 ----
              if Present (Ass)
                and then Is_Class_Wide_Type (Etype (Name (Ass)))
              then
+                --  Move the error messages below to sem???
+ 
                 if Is_Access_Type (Etype (Call_Node)) then
                    if Designated_Type (Etype (Call_Node)) /=
                      Root_Type (Etype (Name (Ass)))
*************** package body Exp_Ch6 is
*** 3952,3958 ****
        end if;
  
        --  Ada 2005 (AI-251): If some formal is a class-wide interface, expand
!       --  it to point to the correct secondary virtual table
  
        if Nkind (Call_Node) in N_Subprogram_Call
          and then CW_Interface_Formals_Present
--- 4266,4272 ----
        end if;
  
        --  Ada 2005 (AI-251): If some formal is a class-wide interface, expand
!       --  it to point to the correct secondary virtual table.
  
        if Nkind (Call_Node) in N_Subprogram_Call
          and then CW_Interface_Formals_Present
*************** package body Exp_Ch6 is
*** 4068,4075 ****
        --  and reanalyzed (see Expand_Protected_Subprogram_Call).
  
        elsif Is_Protected_Type (Scope (Subp))
!          and then (Ekind (Subp) = E_Procedure
!                     or else Ekind (Subp) = E_Function)
        then
           null;
  
--- 4382,4388 ----
        --  and reanalyzed (see Expand_Protected_Subprogram_Call).
  
        elsif Is_Protected_Type (Scope (Subp))
!          and then Ekind (Subp) in E_Procedure | E_Function
        then
           null;
  
*************** package body Exp_Ch6 is
*** 4087,4092 ****
--- 4400,4417 ----
  
        Expand_Actuals (Call_Node, Subp, Post_Call);
  
+       --  If it is a recursive call then call the internal procedure that
+       --  verifies Subprogram_Variant contract (if present and enabled).
+       --  Detecting calls to subprogram aliases is necessary for recursive
+       --  calls in instances of generic subprograms, where the renaming of
+       --  the current subprogram is called.
+ 
+       if Is_Subprogram (Subp)
+         and then Same_Or_Aliased_Subprograms (Subp, Current_Scope)
+       then
+          Check_Subprogram_Variant;
+       end if;
+ 
        --  Verify that the actuals do not share storage. This check must be done
        --  on the caller side rather that inside the subprogram to avoid issues
        --  of parameter passing.
*************** package body Exp_Ch6 is
*** 4115,4120 ****
--- 4440,4447 ----
  
           Set_Entity (Name (Call_Node), Parent_Subp);
  
+          --  Move this check to sem???
+ 
           if Is_Abstract_Subprogram (Parent_Subp)
             and then not In_Instance
           then
*************** package body Exp_Ch6 is
*** 4144,4152 ****
  
                 procedure Convert (Act : Node_Id; Typ : Entity_Id) is
                 begin
!                   Rewrite (Act, OK_Convert_To (Typ, Relocate_Node (Act)));
!                   Analyze (Act);
!                   Resolve (Act, Typ);
                 end Convert;
  
                 --  Local variables
--- 4471,4478 ----
  
                 procedure Convert (Act : Node_Id; Typ : Entity_Id) is
                 begin
!                   Rewrite (Act, OK_Convert_To (Typ, Act));
!                   Analyze_And_Resolve (Act, Typ);
                 end Convert;
  
                 --  Local variables
*************** package body Exp_Ch6 is
*** 4164,4171 ****
                    Formal_Typ := Etype (Formal);
                    Parent_Typ := Etype (Parent_Formal);
  
!                   --  For an IN parameter of a scalar type, the parent formal
!                   --  type and derived formal type differ or the parent formal
                    --  type and actual type do not match statically.
  
                    if Is_Scalar_Type (Formal_Typ)
--- 4490,4497 ----
                    Formal_Typ := Etype (Formal);
                    Parent_Typ := Etype (Parent_Formal);
  
!                   --  For an IN parameter of a scalar type, the derived formal
!                   --  type and parent formal type differ, and the parent formal
                    --  type and actual type do not match statically.
  
                    if Is_Scalar_Type (Formal_Typ)
*************** package body Exp_Ch6 is
*** 4176,4190 ****
                      and then not Raises_Constraint_Error (Actual)
                    then
                       Convert (Actual, Parent_Typ);
-                      Enable_Range_Check (Actual);
- 
-                      --  If the actual has been marked as requiring a range
-                      --  check, then generate it here.
- 
-                      if Do_Range_Check (Actual) then
-                         Generate_Range_Check
-                           (Actual, Etype (Formal), CE_Range_Check_Failed);
-                      end if;
  
                    --  For access types, the parent formal type and actual type
                    --  differ.
--- 4502,4507 ----
*************** package body Exp_Ch6 is
*** 4206,4221 ****
                          --  inlined.
  
                          Rewrite (Actual,
!                           Unchecked_Convert_To (Parent_Typ,
!                             Relocate_Node (Actual)));
!                         Analyze (Actual);
!                         Resolve (Actual, Parent_Typ);
                       end if;
  
                    --  If there is a change of representation, then generate a
                    --  warning, and do the change of representation.
  
!                   elsif not Same_Representation (Formal_Typ, Parent_Typ) then
                       Error_Msg_N
                         ("??change of representation required", Actual);
                       Convert (Actual, Parent_Typ);
--- 4523,4539 ----
                          --  inlined.
  
                          Rewrite (Actual,
!                           Unchecked_Convert_To (Parent_Typ, Actual));
!                         Analyze_And_Resolve (Actual, Parent_Typ);
                       end if;
  
                    --  If there is a change of representation, then generate a
                    --  warning, and do the change of representation.
  
!                   elsif not Has_Compatible_Representation
!                               (Target_Type  => Formal_Typ,
!                                Operand_Type => Parent_Typ)
!                   then
                       Error_Msg_N
                         ("??change of representation required", Actual);
                       Convert (Actual, Parent_Typ);
*************** package body Exp_Ch6 is
*** 4252,4258 ****
  
        if Nkind (Name (Call_Node)) = N_Explicit_Dereference then
  
!       --  Handle case of access to protected subprogram type
  
           if Is_Access_Protected_Subprogram_Type
                (Base_Type (Etype (Prefix (Name (Call_Node)))))
--- 4570,4576 ----
  
        if Nkind (Name (Call_Node)) = N_Explicit_Dereference then
  
!          --  Handle case of access to protected subprogram type
  
           if Is_Access_Protected_Subprogram_Type
                (Base_Type (Etype (Prefix (Name (Call_Node)))))
*************** package body Exp_Ch6 is
*** 4354,4360 ****
           return;
        end if;
  
!       if Ekind_In (Subp, E_Function, E_Procedure) then
  
           --  We perform a simple optimization on calls for To_Address by
           --  replacing them with an unchecked conversion. Not only is this
--- 4672,4678 ----
           return;
        end if;
  
!       if Ekind (Subp) in E_Function | E_Procedure then
  
           --  We perform a simple optimization on calls for To_Address by
           --  replacing them with an unchecked conversion. Not only is this
*************** package body Exp_Ch6 is
*** 4376,4382 ****
           --  A call to a null procedure is replaced by a null statement, but we
           --  are not allowed to ignore possible side effects of the call, so we
           --  make sure that actuals are evaluated.
!          --  We also suppress this optimization for GNATCoverage.
  
           elsif Is_Null_Procedure (Subp)
             and then not Opt.Suppress_Control_Flow_Optimizations
--- 4694,4700 ----
           --  A call to a null procedure is replaced by a null statement, but we
           --  are not allowed to ignore possible side effects of the call, so we
           --  make sure that actuals are evaluated.
!          --  We also suppress this optimization for GNATcoverage.
  
           elsif Is_Null_Procedure (Subp)
             and then not Opt.Suppress_Control_Flow_Optimizations
*************** package body Exp_Ch6 is
*** 4400,4407 ****
           --  back-end inlining is enabled).
  
           elsif Is_Inlinable_Expression_Function (Subp) then
!             Rewrite (N, New_Copy (Expression_Of_Expression_Function (Subp)));
!             Analyze (N);
              return;
  
           --  Handle front-end inlining
--- 4718,4726 ----
           --  back-end inlining is enabled).
  
           elsif Is_Inlinable_Expression_Function (Subp) then
!             Rewrite
!               (Call_Node, New_Copy (Expression_Of_Expression_Function (Subp)));
!             Analyze (Call_Node);
              return;
  
           --  Handle front-end inlining
*************** package body Exp_Ch6 is
*** 4463,4469 ****
                    --  visible a private entity in the body of the main unit,
                    --  that gigi will see before its sees its proper definition.
  
!                   elsif not (In_Extended_Main_Code_Unit (Call_Node))
                      and then In_Package_Body
                    then
                       Must_Inline := not In_Extended_Main_Source_Unit (Subp);
--- 4782,4788 ----
                    --  visible a private entity in the body of the main unit,
                    --  that gigi will see before its sees its proper definition.
  
!                   elsif not In_Extended_Main_Code_Unit (Call_Node)
                      and then In_Package_Body
                    then
                       Must_Inline := not In_Extended_Main_Source_Unit (Subp);
*************** package body Exp_Ch6 is
*** 4472,4478 ****
  
                    elsif Modify_Tree_For_C
                      and then In_Same_Extended_Unit (Sloc (Bod), Loc)
!                     and then Chars (Name (N)) = Name_uPostconditions
                    then
                       Must_Inline := True;
                    end if;
--- 4791,4797 ----
  
                    elsif Modify_Tree_For_C
                      and then In_Same_Extended_Unit (Sloc (Bod), Loc)
!                     and then Chars (Name (Call_Node)) = Name_uPostconditions
                    then
                       Must_Inline := True;
                    end if;
*************** package body Exp_Ch6 is
*** 4488,4494 ****
  
                    if Front_End_Inlining
                      and then Nkind (Spec) = N_Subprogram_Declaration
!                     and then (In_Extended_Main_Code_Unit (Call_Node))
                      and then No (Body_To_Inline (Spec))
                      and then not Has_Completion (Subp)
                      and then In_Same_Extended_Unit (Sloc (Spec), Loc)
--- 4807,4813 ----
  
                    if Front_End_Inlining
                      and then Nkind (Spec) = N_Subprogram_Declaration
!                     and then In_Extended_Main_Code_Unit (Call_Node)
                      and then No (Body_To_Inline (Spec))
                      and then not Has_Completion (Subp)
                      and then In_Same_Extended_Unit (Sloc (Spec), Loc)
*************** package body Exp_Ch6 is
*** 4570,4587 ****
           --  intermediate result after its use.
  
           elsif Is_Build_In_Place_Function_Call (Call_Node)
!            and then Nkind_In (Parent (Unqual_Conv (Call_Node)),
!                               N_Attribute_Reference,
!                               N_Function_Call,
!                               N_Indexed_Component,
!                               N_Object_Renaming_Declaration,
!                               N_Procedure_Call_Statement,
!                               N_Selected_Component,
!                               N_Slice)
             and then
               (Ekind (Current_Scope) /= E_Loop
!                or else Nkind (Parent (N)) /= N_Function_Call
!                or else not Is_Build_In_Place_Function_Call (Parent (N)))
           then
              Establish_Transient_Scope (Call_Node, Manage_Sec_Stack => True);
           end if;
--- 4889,4907 ----
           --  intermediate result after its use.
  
           elsif Is_Build_In_Place_Function_Call (Call_Node)
!            and then Nkind (Parent (Unqual_Conv (Call_Node))) in
!                       N_Attribute_Reference
!                     | N_Function_Call
!                     | N_Indexed_Component
!                     | N_Object_Renaming_Declaration
!                     | N_Procedure_Call_Statement
!                     | N_Selected_Component
!                     | N_Slice
             and then
               (Ekind (Current_Scope) /= E_Loop
!                or else Nkind (Parent (Call_Node)) /= N_Function_Call
!                or else not Is_Build_In_Place_Function_Call
!                              (Parent (Call_Node)))
           then
              Establish_Transient_Scope (Call_Node, Manage_Sec_Stack => True);
           end if;
*************** package body Exp_Ch6 is
*** 4995,5000 ****
--- 5315,5331 ----
                 Is_Build_In_Place_Function_Call (Exp));
              null;
           end if;
+ 
+          --  Ada 2005 (AI95-344): If the result type is class-wide, then insert
+          --  a check that the level of the return expression's underlying type
+          --  is not deeper than the level of the master enclosing the function.
+ 
+          --  AI12-043: The check is made immediately after the return object
+          --  is created.
+ 
+          if Present (Exp) and then Is_Class_Wide_Type (Ret_Typ) then
+             Apply_CW_Accessibility_Check (Exp, Func_Id);
+          end if;
        else
           Exp := Empty;
        end if;
*************** package body Exp_Ch6 is
*** 5051,5063 ****
        end if;
  
        --  Build a simple_return_statement that returns the return object when
!       --  there is a statement sequence, or no expression, or the result will
!       --  be built in place. Note however that we currently do this for all
!       --  composite cases, even though not all are built in place.
  
        if Present (HSS)
-         or else Is_Composite_Type (Ret_Typ)
          or else No (Exp)
        then
           if No (HSS) then
              Stmts := New_List;
--- 5382,5396 ----
        end if;
  
        --  Build a simple_return_statement that returns the return object when
!       --  there is a statement sequence, or no expression, or the analysis of
!       --  the return object declaration generated extra actions, or the result
!       --  will be built in place. Note however that we currently do this for
!       --  all composite cases, even though they are not built in place.
  
        if Present (HSS)
          or else No (Exp)
+         or else List_Length (Return_Object_Declarations (N)) > 1
+         or else Is_Composite_Type (Ret_Typ)
        then
           if No (HSS) then
              Stmts := New_List;
*************** package body Exp_Ch6 is
*** 5167,5173 ****
                       (Expression (Original_Node (Ret_Obj_Decl)))
  
                    --  It is a BIP object declaration that displaces the pointer
!                   --  to the object to reference a convered interface type.
  
                    or else
                      Present (Unqual_BIP_Iface_Function_Call
--- 5500,5506 ----
                       (Expression (Original_Node (Ret_Obj_Decl)))
  
                    --  It is a BIP object declaration that displaces the pointer
!                   --  to the object to reference a converted interface type.
  
                    or else
                      Present (Unqual_BIP_Iface_Function_Call
*************** package body Exp_Ch6 is
*** 5725,5740 ****
              end;
           end if;
  
!       --  Case where we do not build a block
! 
!       else
!          --  We're about to drop Return_Object_Declarations on the floor, so
!          --  we need to insert it, in case it got expanded into useful code.
!          --  Remove side effects from expression, which may be duplicated in
!          --  subsequent checks (see Expand_Simple_Function_Return).
  
!          Insert_List_Before (N, Return_Object_Declarations (N));
!          Remove_Side_Effects (Exp);
  
           --  Build simple_return_statement that returns the expression directly
  
--- 6058,6068 ----
              end;
           end if;
  
!       --  Case where we do not need to build a block. But we're about to drop
!       --  Return_Object_Declarations on the floor, so assert that it contains
!       --  only the return object declaration.
  
!       else pragma Assert (List_Length (Return_Object_Declarations (N)) = 1);
  
           --  Build simple_return_statement that returns the expression directly
  
*************** package body Exp_Ch6 is
*** 5747,5753 ****
        Set_Comes_From_Extended_Return_Statement (Return_Stmt);
  
        Rewrite (N, Result);
!       Analyze (N, Suppress => All_Checks);
     end Expand_N_Extended_Return_Statement;
  
     ----------------------------
--- 6075,6088 ----
        Set_Comes_From_Extended_Return_Statement (Return_Stmt);
  
        Rewrite (N, Result);
! 
!       --  AI12-043: The checks of 6.5(8.1/3) and 6.5(21/3) are made immediately
!       --  before an object is returned. A predicate that applies to the return
!       --  subtype is checked immediately before an object is returned.
! 
!       --  Suppress access checks to avoid generating extra checks for b-i-p.
! 
!       Analyze (N, Suppress => Access_Check);
     end Expand_N_Extended_Return_Statement;
  
     ----------------------------
*************** package body Exp_Ch6 is
*** 5813,5821 ****
     -- Expand_N_Subprogram_Body --
     ------------------------------
  
-    --  Add poll call if ATC polling is enabled, unless the body will be inlined
-    --  by the back-end.
- 
     --  Add dummy push/pop label nodes at start and end to clear any local
     --  exception indications if local-exception-to-goto optimization is active.
  
--- 6148,6153 ----
*************** package body Exp_Ch6 is
*** 5913,5926 ****
--- 6245,6286 ----
              --  Call the _Postconditions procedure if the related subprogram
              --  has contract assertions that need to be verified on exit.
  
+             --  Also, mark the successful return to signal that postconditions
+             --  need to be evaluated when finalization occurs.
+ 
              if Ekind (Spec_Id) = E_Procedure
                and then Present (Postconditions_Proc (Spec_Id))
              then
+                --  Generate:
+                --
+                --    Return_Success_For_Postcond := True;
+                --    _postconditions;
+ 
+                Insert_Action (Stmt,
+                  Make_Assignment_Statement (Loc,
+                    Name       =>
+                      New_Occurrence_Of
+                       (Get_Return_Success_For_Postcond (Spec_Id), Loc),
+                    Expression => New_Occurrence_Of (Standard_True, Loc)));
+ 
                 Insert_Action (Stmt,
                   Make_Procedure_Call_Statement (Loc,
                     Name =>
                       New_Occurrence_Of (Postconditions_Proc (Spec_Id), Loc)));
              end if;
+ 
+             --  Ada 2020 (AI12-0279): append the call to 'Yield unless this is
+             --  a generic subprogram (since in such case it will be added to
+             --  the instantiations).
+ 
+             if Has_Yield_Aspect (Spec_Id)
+               and then Ekind (Spec_Id) /= E_Generic_Procedure
+               and then RTE_Available (RE_Yield)
+             then
+                Insert_Action (Stmt,
+                  Make_Procedure_Call_Statement (Loc,
+                    New_Occurrence_Of (RTE (RE_Yield), Loc)));
+             end if;
           end if;
        end Add_Return;
  
*************** package body Exp_Ch6 is
*** 6012,6036 ****
           end;
        end if;
  
-       --  Need poll on entry to subprogram if polling enabled. We only do this
-       --  for non-empty subprograms, since it does not seem necessary to poll
-       --  for a dummy null subprogram.
- 
-       if Is_Non_Empty_List (L) then
- 
-          --  Do not add a polling call if the subprogram is to be inlined by
-          --  the back-end, to avoid repeated calls with multiple inlinings.
- 
-          if Is_Inlined (Spec_Id)
-            and then Front_End_Inlining
-            and then Optimization_Level > 1
-          then
-             null;
-          else
-             Generate_Poll_Call (First (L));
-          end if;
-       end if;
- 
        --  Initialize any scalar OUT args if Initialize/Normalize_Scalars
  
        if Init_Or_Norm_Scalars and then Is_Subprogram (Spec_Id) then
--- 6372,6377 ----
*************** package body Exp_Ch6 is
*** 6114,6120 ****
        --  For a procedure, we add a return for all possible syntactic ends of
        --  the subprogram.
  
!       if Ekind_In (Spec_Id, E_Procedure, E_Generic_Procedure) then
           Add_Return (Spec_Id, Statements (HSS));
  
           if Present (Exception_Handlers (HSS)) then
--- 6455,6461 ----
        --  For a procedure, we add a return for all possible syntactic ends of
        --  the subprogram.
  
!       if Ekind (Spec_Id) in E_Procedure | E_Generic_Procedure then
           Add_Return (Spec_Id, Statements (HSS));
  
           if Present (Exception_Handlers (HSS)) then
*************** package body Exp_Ch6 is
*** 6243,6276 ****
        Prot_Bod  : Node_Id;
        Prot_Decl : Node_Id;
        Prot_Id   : Entity_Id;
! 
!    --  Start of processing for Expand_N_Subprogram_Declaration
  
     begin
-       --  In SPARK, subprogram declarations are only allowed in package
-       --  specifications.
- 
-       if Nkind (Parent (N)) /= N_Package_Specification then
-          if Nkind (Parent (N)) = N_Compilation_Unit then
-             Check_SPARK_05_Restriction
-               ("subprogram declaration is not a library item", N);
- 
-          elsif Present (Next (N))
-            and then Nkind (Next (N)) = N_Pragma
-            and then Get_Pragma_Id (Next (N)) = Pragma_Import
-          then
-             --  In SPARK, subprogram declarations are also permitted in
-             --  declarative parts when immediately followed by a corresponding
-             --  pragma Import. We only check here that there is some pragma
-             --  Import.
- 
-             null;
-          else
-             Check_SPARK_05_Restriction
-               ("subprogram declaration is not allowed here", N);
-          end if;
-       end if;
- 
        --  Deal with case of protected subprogram. Do not generate protected
        --  operation if operation is flagged as eliminated.
  
--- 6584,6592 ----
        Prot_Bod  : Node_Id;
        Prot_Decl : Node_Id;
        Prot_Id   : Entity_Id;
!       Typ       : Entity_Id;
  
     begin
        --  Deal with case of protected subprogram. Do not generate protected
        --  operation if operation is flagged as eliminated.
  
*************** package body Exp_Ch6 is
*** 6310,6328 ****
              Analyze (Prot_Decl);
              Freeze_Before (N, Prot_Id);
              Set_Protected_Body_Subprogram (Subp, Prot_Id);
- 
-             --  Create protected operation as well. Even though the operation
-             --  is only accessible within the body, it is possible to make it
-             --  available outside of the protected object by using 'Access to
-             --  provide a callback, so build protected version in all cases.
- 
-             Prot_Decl :=
-               Make_Subprogram_Declaration (Loc,
-                 Specification =>
-                   Build_Protected_Sub_Specification (N, Scop, Protected_Mode));
-             Insert_Before (Prot_Bod, Prot_Decl);
-             Analyze (Prot_Decl);
- 
              Pop_Scope;
           end if;
  
--- 6626,6631 ----
*************** package body Exp_Ch6 is
*** 6356,6365 ****
        --  are not needed by the C generator (and this also produces cleaner
        --  output).
  
!       if Modify_Tree_For_C
          and then Nkind (Specification (N)) = N_Function_Specification
!         and then Is_Array_Type (Etype (Subp))
!         and then Is_Constrained (Etype (Subp))
          and then not Is_Unchecked_Conversion_Instance (Subp)
        then
           Build_Procedure_Form (N);
--- 6659,6670 ----
        --  are not needed by the C generator (and this also produces cleaner
        --  output).
  
!       Typ := Get_Fullest_View (Etype (Subp));
! 
!       if Transform_Function_Array
          and then Nkind (Specification (N)) = N_Function_Specification
!         and then Is_Array_Type (Typ)
!         and then Is_Constrained (Typ)
          and then not Is_Unchecked_Conversion_Instance (Subp)
        then
           Build_Procedure_Form (N);
*************** package body Exp_Ch6 is
*** 6385,6398 ****
        --  Call the _Postconditions procedure if the related subprogram has
        --  contract assertions that need to be verified on exit.
  
!       if Ekind_In (Scope_Id, E_Entry, E_Entry_Family, E_Procedure)
          and then Present (Postconditions_Proc (Scope_Id))
        then
           Insert_Action (N,
             Make_Procedure_Call_Statement (Loc,
               Name => New_Occurrence_Of (Postconditions_Proc (Scope_Id), Loc)));
        end if;
  
        --  If it is a return from a procedure do no extra steps
  
        if Kind = E_Procedure or else Kind = E_Generic_Procedure then
--- 6690,6728 ----
        --  Call the _Postconditions procedure if the related subprogram has
        --  contract assertions that need to be verified on exit.
  
!       --  Also, mark the successful return to signal that postconditions need
!       --  to be evaluated when finalization occurs.
! 
!       if Ekind (Scope_Id) in E_Entry | E_Entry_Family | E_Procedure
          and then Present (Postconditions_Proc (Scope_Id))
        then
+          --  Generate:
+          --
+          --    Return_Success_For_Postcond := True;
+          --    _postconditions;
+ 
+          Insert_Action (N,
+            Make_Assignment_Statement (Loc,
+              Name       =>
+                New_Occurrence_Of
+                 (Get_Return_Success_For_Postcond (Scope_Id), Loc),
+              Expression => New_Occurrence_Of (Standard_True, Loc)));
+ 
           Insert_Action (N,
             Make_Procedure_Call_Statement (Loc,
               Name => New_Occurrence_Of (Postconditions_Proc (Scope_Id), Loc)));
        end if;
  
+       --  Ada 2020 (AI12-0279)
+ 
+       if Has_Yield_Aspect (Scope_Id)
+         and then RTE_Available (RE_Yield)
+       then
+          Insert_Action (N,
+            Make_Procedure_Call_Statement (Loc,
+              New_Occurrence_Of (RTE (RE_Yield), Loc)));
+       end if;
+ 
        --  If it is a return from a procedure do no extra steps
  
        if Kind = E_Procedure or else Kind = E_Generic_Procedure then
*************** package body Exp_Ch6 is
*** 6758,6764 ****
        Exp : Node_Id := Expression (N);
        pragma Assert (Present (Exp));
  
!       Exptyp : constant Entity_Id := Etype (Exp);
        --  The type of the expression (not necessarily the same as R_Type)
  
        Subtype_Ind : Node_Id;
--- 7088,7101 ----
        Exp : Node_Id := Expression (N);
        pragma Assert (Present (Exp));
  
!       Exp_Is_Function_Call : constant Boolean :=
!         Nkind (Exp) = N_Function_Call
!           or else (Nkind (Exp) = N_Explicit_Dereference
!                    and then Is_Entity_Name (Prefix (Exp))
!                    and then Ekind (Entity (Prefix (Exp))) = E_Constant
!                    and then Is_Related_To_Func_Return (Entity (Prefix (Exp))));
! 
!       Exp_Typ : constant Entity_Id := Etype (Exp);
        --  The type of the expression (not necessarily the same as R_Type)
  
        Subtype_Ind : Node_Id;
*************** package body Exp_Ch6 is
*** 6769,6780 ****
        --  of the return object to the specific type on assignments to the
        --  individual components.
  
     begin
        if Is_Class_Wide_Type (R_Type)
!         and then not Is_Class_Wide_Type (Exptyp)
          and then Nkind (Exp) /= N_Type_Conversion
        then
!          Subtype_Ind := New_Occurrence_Of (Exptyp, Loc);
        else
           Subtype_Ind := New_Occurrence_Of (R_Type, Loc);
  
--- 7106,7119 ----
        --  of the return object to the specific type on assignments to the
        --  individual components.
  
+    --  Start of processing for Expand_Simple_Function_Return
+ 
     begin
        if Is_Class_Wide_Type (R_Type)
!         and then not Is_Class_Wide_Type (Exp_Typ)
          and then Nkind (Exp) /= N_Type_Conversion
        then
!          Subtype_Ind := New_Occurrence_Of (Exp_Typ, Loc);
        else
           Subtype_Ind := New_Occurrence_Of (R_Type, Loc);
  
*************** package body Exp_Ch6 is
*** 6784,6790 ****
           --  altogether to prevent tag overwriting.
  
           if Is_Class_Wide_Type (R_Type)
!            and then not Is_Class_Wide_Type (Exptyp)
             and then Nkind (Exp) = N_Type_Conversion
           then
              Exp := Expression (Exp);
--- 7123,7129 ----
           --  altogether to prevent tag overwriting.
  
           if Is_Class_Wide_Type (R_Type)
!            and then not Is_Class_Wide_Type (Exp_Typ)
             and then Nkind (Exp) = N_Type_Conversion
           then
              Exp := Expression (Exp);
*************** package body Exp_Ch6 is
*** 6845,6851 ****
           --  handled by means of simple return statements. This leaves their
           --  expansion simple and clean.
  
!         and then not Is_Thunk (Current_Scope)
        then
           declare
              Return_Object_Entity : constant Entity_Id :=
--- 7184,7190 ----
           --  handled by means of simple return statements. This leaves their
           --  expansion simple and clean.
  
!         and then not Is_Thunk (Scope_Id)
        then
           declare
              Return_Object_Entity : constant Entity_Id :=
*************** package body Exp_Ch6 is
*** 6880,6907 ****
        --  barrier functions for protected types, which turn the condition into
        --  a return statement.
  
!       if Is_Boolean_Type (Exptyp)
!         and then Nonzero_Is_True (Exptyp)
!       then
           Adjust_Condition (Exp);
!          Adjust_Result_Type (Exp, Exptyp);
        end if;
  
        --  Do validity check if enabled for returns
  
!       if Validity_Checks_On
!         and then Validity_Check_Returns
!       then
           Ensure_Valid (Exp);
        end if;
  
        --  Check the result expression of a scalar function against the subtype
        --  of the function by inserting a conversion. This conversion must
        --  eventually be performed for other classes of types, but for now it's
!       --  only done for scalars.
!       --  ???
  
!       if Is_Scalar_Type (Exptyp) then
           Rewrite (Exp, Convert_To (R_Type, Exp));
  
           --  The expression is resolved to ensure that the conversion gets
--- 7219,7241 ----
        --  barrier functions for protected types, which turn the condition into
        --  a return statement.
  
!       if Is_Boolean_Type (Exp_Typ) and then Nonzero_Is_True (Exp_Typ) then
           Adjust_Condition (Exp);
!          Adjust_Result_Type (Exp, Exp_Typ);
        end if;
  
        --  Do validity check if enabled for returns
  
!       if Validity_Checks_On and then Validity_Check_Returns then
           Ensure_Valid (Exp);
        end if;
  
        --  Check the result expression of a scalar function against the subtype
        --  of the function by inserting a conversion. This conversion must
        --  eventually be performed for other classes of types, but for now it's
!       --  only done for scalars ???
  
!       if Is_Scalar_Type (Exp_Typ) and then Exp_Typ /= R_Type then
           Rewrite (Exp, Convert_To (R_Type, Exp));
  
           --  The expression is resolved to ensure that the conversion gets
*************** package body Exp_Ch6 is
*** 6917,6923 ****
        --  it requires a cleanup scope for the secondary stack case).
  
        if Is_Build_In_Place_Function (Scope_Id)
!         or else Is_Limited_Interface (Exptyp)
        then
           null;
  
--- 7251,7257 ----
        --  it requires a cleanup scope for the secondary stack case).
  
        if Is_Build_In_Place_Function (Scope_Id)
!         or else Is_Limited_Interface (Exp_Typ)
        then
           null;
  
*************** package body Exp_Ch6 is
*** 6925,6937 ****
        --  the object is returned by reference and the maximum functionality
        --  required is just to displace the pointer.
  
!       elsif Is_Thunk (Current_Scope) and then Is_Interface (Exptyp) then
           null;
  
        --  If the call is within a thunk and the type is a limited view, the
        --  backend will eventually see the non-limited view of the type.
  
!       elsif Is_Thunk (Current_Scope) and then Is_Incomplete_Type (Exptyp) then
           return;
  
        --  A return statement from an ignored Ghost function does not use the
--- 7259,7271 ----
        --  the object is returned by reference and the maximum functionality
        --  required is just to displace the pointer.
  
!       elsif Is_Thunk (Scope_Id) and then Is_Interface (Exp_Typ) then
           null;
  
        --  If the call is within a thunk and the type is a limited view, the
        --  backend will eventually see the non-limited view of the type.
  
!       elsif Is_Thunk (Scope_Id) and then Is_Incomplete_Type (Exp_Typ) then
           return;
  
        --  A return statement from an ignored Ghost function does not use the
*************** package body Exp_Ch6 is
*** 6950,6960 ****
           --  cause a temporary with maximum size to be created.
  
           declare
!             Ubt  : constant Entity_Id := Underlying_Type (Base_Type (Exptyp));
              Decl : Node_Id;
              Ent  : Entity_Id;
           begin
!             if Nkind (Exp) /= N_Function_Call
                and then Has_Discriminants (Ubt)
                and then not Is_Constrained (Ubt)
                and then not Has_Unchecked_Union (Ubt)
--- 7284,7294 ----
           --  cause a temporary with maximum size to be created.
  
           declare
!             Ubt  : constant Entity_Id := Underlying_Type (Base_Type (Exp_Typ));
              Decl : Node_Id;
              Ent  : Entity_Id;
           begin
!             if not Exp_Is_Function_Call
                and then Has_Discriminants (Ubt)
                and then not Is_Constrained (Ubt)
                and then not Has_Unchecked_Union (Ubt)
*************** package body Exp_Ch6 is
*** 6977,6998 ****
           Set_Enclosing_Sec_Stack_Return (N);
  
           --  Optimize the case where the result is a function call. In this
!          --  case either the result is already on the secondary stack, or is
!          --  already being returned with the stack pointer depressed and no
!          --  further processing is required except to set the By_Ref flag
!          --  to ensure that gigi does not attempt an extra unnecessary copy.
!          --  (actually not just unnecessary but harmfully wrong in the case
!          --  of a controlled type, where gigi does not know how to do a copy).
!          --  To make up for a gcc 2.8.1 deficiency (???), we perform the copy
!          --  for array types if the constrained status of the target type is
!          --  different from that of the expression.
  
!          if Requires_Transient_Scope (Exptyp)
!            and then
!               (not Is_Array_Type (Exptyp)
!                 or else Is_Constrained (Exptyp) = Is_Constrained (R_Type)
!                 or else CW_Or_Has_Controlled_Part (Utyp))
!            and then Nkind (Exp) = N_Function_Call
           then
              Set_By_Ref (N);
  
--- 7311,7324 ----
           Set_Enclosing_Sec_Stack_Return (N);
  
           --  Optimize the case where the result is a function call. In this
!          --  case the result is already on the secondary stack and no further
!          --  processing is required except to set the By_Ref flag to ensure
!          --  that gigi does not attempt an extra unnecessary copy. (Actually
!          --  not just unnecessary but wrong in the case of a controlled type,
!          --  where gigi does not know how to do a copy.)
  
!          if Requires_Transient_Scope (Exp_Typ)
!            and then Exp_Is_Function_Call
           then
              Set_By_Ref (N);
  
*************** package body Exp_Ch6 is
*** 7106,7113 ****
        if Present (Utyp)
          and then Is_Tagged_Type (Utyp)
          and then not Is_Class_Wide_Type (Utyp)
!         and then (Nkind_In (Exp, N_Type_Conversion,
!                                  N_Unchecked_Type_Conversion)
                      or else (Is_Entity_Name (Exp)
                                 and then Is_Formal (Entity (Exp))))
        then
--- 7432,7439 ----
        if Present (Utyp)
          and then Is_Tagged_Type (Utyp)
          and then not Is_Class_Wide_Type (Utyp)
!         and then (Nkind (Exp) in
!                       N_Type_Conversion | N_Unchecked_Type_Conversion
                      or else (Is_Entity_Name (Exp)
                                 and then Is_Formal (Entity (Exp))))
        then
*************** package body Exp_Ch6 is
*** 7162,7286 ****
              end;
           end if;
  
!       --  Ada 2005 (AI-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.
!       --  Always generate the check when the type of the return expression
!       --  is class-wide, when it's a type conversion, or when it's a formal
!       --  parameter. Otherwise, suppress the check in the case where the
!       --  return expression has a specific type whose level is known not to
!       --  be statically deeper than the function's result type.
  
        --  No runtime check needed in interface thunks since it is performed
        --  by the target primitive associated with the thunk.
  
!       --  Note: accessibility check is skipped in the VM case, since there
!       --  does not seem to be any practical way to implement this check.
! 
!       elsif Ada_Version >= Ada_2005
!         and then Tagged_Type_Expansion
!         and then Is_Class_Wide_Type (R_Type)
!         and then not Is_Thunk (Current_Scope)
!         and then not Scope_Suppress.Suppress (Accessibility_Check)
!         and then
!           (Is_Class_Wide_Type (Etype (Exp))
!             or else Nkind_In (Exp, N_Type_Conversion,
!                                    N_Unchecked_Type_Conversion)
!             or else (Is_Entity_Name (Exp)
!                       and then Is_Formal (Entity (Exp)))
!             or else Scope_Depth (Enclosing_Dynamic_Scope (Etype (Exp))) >
!                       Scope_Depth (Enclosing_Dynamic_Scope (Scope_Id)))
        then
!          declare
!             Tag_Node : Node_Id;
! 
!          begin
!             --  Ada 2005 (AI-251): In class-wide interface objects we displace
!             --  "this" to reference the base of the object. This is required to
!             --  get access to the TSD of the object.
! 
!             if Is_Class_Wide_Type (Etype (Exp))
!               and then Is_Interface (Etype (Exp))
!             then
!                --  If the expression is an explicit dereference then we can
!                --  directly displace the pointer to reference the base of
!                --  the object.
! 
!                if Nkind (Exp) = N_Explicit_Dereference then
!                   Tag_Node :=
!                     Make_Explicit_Dereference (Loc,
!                       Prefix =>
!                         Unchecked_Convert_To (RTE (RE_Tag_Ptr),
!                           Make_Function_Call (Loc,
!                             Name                   =>
!                               New_Occurrence_Of (RTE (RE_Base_Address), Loc),
!                             Parameter_Associations => New_List (
!                               Unchecked_Convert_To (RTE (RE_Address),
!                                 Duplicate_Subexpr (Prefix (Exp)))))));
! 
!                --  Similar case to the previous one but the expression is a
!                --  renaming of an explicit dereference.
! 
!                elsif Nkind (Exp) = N_Identifier
!                  and then Present (Renamed_Object (Entity (Exp)))
!                  and then Nkind (Renamed_Object (Entity (Exp)))
!                             = N_Explicit_Dereference
!                then
!                   Tag_Node :=
!                     Make_Explicit_Dereference (Loc,
!                       Prefix =>
!                         Unchecked_Convert_To (RTE (RE_Tag_Ptr),
!                           Make_Function_Call (Loc,
!                             Name                   =>
!                               New_Occurrence_Of (RTE (RE_Base_Address), Loc),
!                             Parameter_Associations => New_List (
!                               Unchecked_Convert_To (RTE (RE_Address),
!                                 Duplicate_Subexpr
!                                   (Prefix
!                                     (Renamed_Object (Entity (Exp)))))))));
! 
!                --  Common case: obtain the address of the actual object and
!                --  displace the pointer to reference the base of the object.
! 
!                else
!                   Tag_Node :=
!                     Make_Explicit_Dereference (Loc,
!                       Prefix =>
!                         Unchecked_Convert_To (RTE (RE_Tag_Ptr),
!                           Make_Function_Call (Loc,
!                             Name               =>
!                               New_Occurrence_Of (RTE (RE_Base_Address), Loc),
!                             Parameter_Associations => New_List (
!                               Make_Attribute_Reference (Loc,
!                                 Prefix         => Duplicate_Subexpr (Exp),
!                                 Attribute_Name => Name_Address)))));
!                end if;
!             else
!                Tag_Node :=
!                  Make_Attribute_Reference (Loc,
!                    Prefix         => Duplicate_Subexpr (Exp),
!                    Attribute_Name => Name_Tag);
!             end if;
! 
!             --  CodePeer does not do anything useful with
!             --  Ada.Tags.Type_Specific_Data components.
! 
!             if not CodePeer_Mode then
!                Insert_Action (Exp,
!                  Make_Raise_Program_Error (Loc,
!                    Condition =>
!                      Make_Op_Gt (Loc,
!                        Left_Opnd  => Build_Get_Access_Level (Loc, Tag_Node),
!                        Right_Opnd =>
!                          Make_Integer_Literal (Loc,
!                            Scope_Depth (Enclosing_Dynamic_Scope (Scope_Id)))),
!                    Reason    => PE_Accessibility_Check_Failed));
!             end if;
!          end;
  
!       --  AI05-0073: If function has a controlling access result, check that
!       --  the tag of the return value, if it is not null, matches designated
!       --  type of return type.
  
        --  The return expression is referenced twice in the code below, so it
        --  must be made free of side effects. Given that different compilers
--- 7488,7514 ----
              end;
           end if;
  
!       --  Ada 2005 (AI95-344): If the result type is class-wide, then insert
        --  a check that the level of the return expression's underlying type
        --  is not deeper than the level of the master enclosing the function.
! 
!       --  AI12-043: The check is made immediately after the return object is
!       --  created. This means that we do not apply it to the simple return
!       --  generated by the expansion of an extended return statement.
  
        --  No runtime check needed in interface thunks since it is performed
        --  by the target primitive associated with the thunk.
  
!       elsif Is_Class_Wide_Type (R_Type)
!         and then not Comes_From_Extended_Return_Statement (N)
!         and then not Is_Thunk (Scope_Id)
        then
!          Apply_CW_Accessibility_Check (Exp, Scope_Id);
  
!       --  Ada 2012 (AI05-0073): If the result subtype of the function is
!       --  defined by an access_definition designating a specific tagged
!       --  type T, a check is made that the result value is null or the tag
!       --  of the object designated by the result value identifies T.
  
        --  The return expression is referenced twice in the code below, so it
        --  must be made free of side effects. Given that different compilers
*************** package body Exp_Ch6 is
*** 7288,7295 ****
        --  perform a copy.
  
        elsif Ekind (R_Type) = E_Anonymous_Access_Type
!         and then Has_Controlling_Result (Scope_Id)
        then
           Insert_Action (N,
             Make_Raise_Constraint_Error (Loc,
               Condition =>
--- 7516,7531 ----
        --  perform a copy.
  
        elsif Ekind (R_Type) = E_Anonymous_Access_Type
!         and then Is_Tagged_Type (Designated_Type (R_Type))
!         and then not Is_Class_Wide_Type (Designated_Type (R_Type))
!         and then Nkind (Original_Node (Exp)) /= N_Null
!         and then not Tag_Checks_Suppressed (Designated_Type (R_Type))
        then
+          --  Generate:
+          --    [Constraint_Error
+          --       when Exp /= null
+          --         and then Exp.all not in Designated_Type]
+ 
           Insert_Action (N,
             Make_Raise_Constraint_Error (Loc,
               Condition =>
*************** package body Exp_Ch6 is
*** 7299,7525 ****
                       Left_Opnd  => Duplicate_Subexpr (Exp),
                       Right_Opnd => Make_Null (Loc)),
  
!                  Right_Opnd => Make_Op_Ne (Loc,
!                    Left_Opnd  =>
!                      Make_Selected_Component (Loc,
!                        Prefix        => Duplicate_Subexpr (Exp),
!                        Selector_Name => Make_Identifier (Loc, Name_uTag)),
! 
!                    Right_Opnd =>
!                      Make_Attribute_Reference (Loc,
!                        Prefix         =>
!                          New_Occurrence_Of (Designated_Type (R_Type), Loc),
!                        Attribute_Name => Name_Tag))),
  
               Reason    => CE_Tag_Check_Failed),
               Suppress  => All_Checks);
        end if;
  
-       --  AI05-0234: RM 6.5(21/3). Check access discriminants to
-       --  ensure that the function result does not outlive an
-       --  object designated by one of it discriminants.
- 
-       if Present (Extra_Accessibility_Of_Result (Scope_Id))
-         and then Has_Unconstrained_Access_Discriminants (R_Type)
-       then
-          declare
-             Discrim_Source : Node_Id;
- 
-             procedure Check_Against_Result_Level (Level : Node_Id);
-             --  Check the given accessibility level against the level
-             --  determined by the point of call. (AI05-0234).
- 
-             --------------------------------
-             -- Check_Against_Result_Level --
-             --------------------------------
- 
-             procedure Check_Against_Result_Level (Level : Node_Id) is
-             begin
-                Insert_Action (N,
-                  Make_Raise_Program_Error (Loc,
-                    Condition =>
-                      Make_Op_Gt (Loc,
-                        Left_Opnd  => Level,
-                        Right_Opnd =>
-                          New_Occurrence_Of
-                            (Extra_Accessibility_Of_Result (Scope_Id), Loc)),
-                        Reason => PE_Accessibility_Check_Failed));
-             end Check_Against_Result_Level;
- 
-          begin
-             Discrim_Source := Exp;
-             while Nkind (Discrim_Source) = N_Qualified_Expression loop
-                Discrim_Source := Expression (Discrim_Source);
-             end loop;
- 
-             if Nkind (Discrim_Source) = N_Identifier
-               and then Is_Return_Object (Entity (Discrim_Source))
-             then
-                Discrim_Source := Entity (Discrim_Source);
- 
-                if Is_Constrained (Etype (Discrim_Source)) then
-                   Discrim_Source := Etype (Discrim_Source);
-                else
-                   Discrim_Source := Expression (Parent (Discrim_Source));
-                end if;
- 
-             elsif Nkind (Discrim_Source) = N_Identifier
-               and then Nkind_In (Original_Node (Discrim_Source),
-                                  N_Aggregate, N_Extension_Aggregate)
-             then
-                Discrim_Source := Original_Node (Discrim_Source);
- 
-             elsif Nkind (Discrim_Source) = N_Explicit_Dereference and then
-               Nkind (Original_Node (Discrim_Source)) = N_Function_Call
-             then
-                Discrim_Source := Original_Node (Discrim_Source);
-             end if;
- 
-             Discrim_Source := Unqual_Conv (Discrim_Source);
- 
-             case Nkind (Discrim_Source) is
-                when N_Defining_Identifier =>
-                   pragma Assert (Is_Composite_Type (Discrim_Source)
-                                   and then Has_Discriminants (Discrim_Source)
-                                   and then Is_Constrained (Discrim_Source));
- 
-                   declare
-                      Discrim   : Entity_Id :=
-                                    First_Discriminant (Base_Type (R_Type));
-                      Disc_Elmt : Elmt_Id   :=
-                                    First_Elmt (Discriminant_Constraint
-                                                  (Discrim_Source));
-                   begin
-                      loop
-                         if Ekind (Etype (Discrim)) =
-                              E_Anonymous_Access_Type
-                         then
-                            Check_Against_Result_Level
-                              (Dynamic_Accessibility_Level (Node (Disc_Elmt)));
-                         end if;
- 
-                         Next_Elmt (Disc_Elmt);
-                         Next_Discriminant (Discrim);
-                         exit when not Present (Discrim);
-                      end loop;
-                   end;
- 
-                when N_Aggregate
-                   | N_Extension_Aggregate
-                =>
-                   --  Unimplemented: extension aggregate case where discrims
-                   --  come from ancestor part, not extension part.
- 
-                   declare
-                      Discrim  : Entity_Id :=
-                                   First_Discriminant (Base_Type (R_Type));
- 
-                      Disc_Exp : Node_Id   := Empty;
- 
-                      Positionals_Exhausted
-                               : Boolean   := not Present (Expressions
-                                                             (Discrim_Source));
- 
-                      function Associated_Expr
-                        (Comp_Id : Entity_Id;
-                         Associations : List_Id) return Node_Id;
- 
-                      --  Given a component and a component associations list,
-                      --  locate the expression for that component; returns
-                      --  Empty if no such expression is found.
- 
-                      ---------------------
-                      -- Associated_Expr --
-                      ---------------------
- 
-                      function Associated_Expr
-                        (Comp_Id : Entity_Id;
-                         Associations : List_Id) return Node_Id
-                      is
-                         Assoc  : Node_Id;
-                         Choice : Node_Id;
- 
-                      begin
-                         --  Simple linear search seems ok here
- 
-                         Assoc := First (Associations);
-                         while Present (Assoc) loop
-                            Choice := First (Choices (Assoc));
-                            while Present (Choice) loop
-                               if (Nkind (Choice) = N_Identifier
-                                    and then Chars (Choice) = Chars (Comp_Id))
-                                 or else (Nkind (Choice) = N_Others_Choice)
-                               then
-                                  return Expression (Assoc);
-                               end if;
- 
-                               Next (Choice);
-                            end loop;
- 
-                            Next (Assoc);
-                         end loop;
- 
-                         return Empty;
-                      end Associated_Expr;
- 
-                   begin
-                      if not Positionals_Exhausted then
-                         Disc_Exp := First (Expressions (Discrim_Source));
-                      end if;
- 
-                      loop
-                         if Positionals_Exhausted then
-                            Disc_Exp :=
-                              Associated_Expr
-                                (Discrim,
-                                 Component_Associations (Discrim_Source));
-                         end if;
- 
-                         if Ekind (Etype (Discrim)) =
-                              E_Anonymous_Access_Type
-                         then
-                            Check_Against_Result_Level
-                              (Dynamic_Accessibility_Level (Disc_Exp));
-                         end if;
- 
-                         Next_Discriminant (Discrim);
-                         exit when not Present (Discrim);
- 
-                         if not Positionals_Exhausted then
-                            Next (Disc_Exp);
-                            Positionals_Exhausted := not Present (Disc_Exp);
-                         end if;
-                      end loop;
-                   end;
- 
-                when N_Function_Call =>
- 
-                   --  No check needed (check performed by callee)
- 
-                   null;
- 
-                when others =>
-                   declare
-                      Level : constant Node_Id :=
-                                Make_Integer_Literal (Loc,
-                                  Object_Access_Level (Discrim_Source));
- 
-                   begin
-                      --  Unimplemented: check for name prefix that includes
-                      --  a dereference of an access value with a dynamic
-                      --  accessibility level (e.g., an access param or a
-                      --  saooaaat) and use dynamic level in that case. For
-                      --  example:
-                      --    return Access_Param.all(Some_Index).Some_Component;
-                      --  ???
- 
-                      Set_Etype (Level, Standard_Natural);
-                      Check_Against_Result_Level (Level);
-                   end;
-             end case;
-          end;
-       end if;
- 
        --  If we are returning a nonscalar object that is possibly unaligned,
        --  then copy the value into a temporary first. This copy may need to
        --  expand to a loop of component operations.
--- 7535,7552 ----
                       Left_Opnd  => Duplicate_Subexpr (Exp),
                       Right_Opnd => Make_Null (Loc)),
  
!                  Right_Opnd =>
!                    Make_Not_In (Loc,
!                      Left_Opnd  =>
!                        Make_Explicit_Dereference (Loc,
!                          Prefix => Duplicate_Subexpr (Exp)),
!                      Right_Opnd =>
!                        New_Occurrence_Of (Designated_Type (R_Type), Loc))),
  
               Reason    => CE_Tag_Check_Failed),
               Suppress  => All_Checks);
        end if;
  
        --  If we are returning a nonscalar object that is possibly unaligned,
        --  then copy the value into a temporary first. This copy may need to
        --  expand to a loop of component operations.
*************** package body Exp_Ch6 is
*** 7567,7572 ****
--- 7594,7634 ----
  
           Force_Evaluation (Exp, Mode => Strict);
  
+          --  Save the return value or a pointer to the return value since we
+          --  may need to call postconditions after finalization when cleanup
+          --  actions are present.
+ 
+          --  Generate:
+          --
+          --    Result_Object_For_Postcond := [Exp]'Unrestricted_Access;
+ 
+          Insert_Action (Exp,
+            Make_Assignment_Statement (Loc,
+              Name       =>
+                New_Occurrence_Of
+                 (Get_Result_Object_For_Postcond (Scope_Id), Loc),
+              Expression =>
+                (if Is_Elementary_Type (Etype (R_Type)) then
+                    New_Copy_Tree (Exp)
+                 else
+                    Make_Attribute_Reference (Loc,
+                      Attribute_Name => Name_Unrestricted_Access,
+                      Prefix         => New_Copy_Tree (Exp)))));
+ 
+          --  Mark the successful return to signal that postconditions need to
+          --  be evaluated when finalization occurs.
+ 
+          --  Generate:
+          --
+          --    Return_Success_For_Postcond := True;
+ 
+          Insert_Action (Exp,
+            Make_Assignment_Statement (Loc,
+              Name       =>
+                New_Occurrence_Of
+                 (Get_Return_Success_For_Postcond (Scope_Id), Loc),
+              Expression => New_Occurrence_Of (Standard_True, Loc)));
+ 
           --  Generate call to _Postconditions
  
           Insert_Action (Exp,
*************** package body Exp_Ch6 is
*** 7585,7595 ****
          and then Comes_From_Extended_Return_Statement (N)
          and then Nkind (Expression (N)) = N_Identifier
          and then Is_Interface (Utyp)
!         and then Utyp /= Underlying_Type (Exptyp)
        then
           Rewrite (Exp, Convert_To (Utyp, Relocate_Node (Exp)));
           Analyze_And_Resolve (Exp);
        end if;
     end Expand_Simple_Function_Return;
  
     -----------------------
--- 7647,7667 ----
          and then Comes_From_Extended_Return_Statement (N)
          and then Nkind (Expression (N)) = N_Identifier
          and then Is_Interface (Utyp)
!         and then Utyp /= Underlying_Type (Exp_Typ)
        then
           Rewrite (Exp, Convert_To (Utyp, Relocate_Node (Exp)));
           Analyze_And_Resolve (Exp);
        end if;
+ 
+       --  Ada 2020 (AI12-0279)
+ 
+       if Has_Yield_Aspect (Scope_Id)
+         and then RTE_Available (RE_Yield)
+       then
+          Insert_Action (N,
+            Make_Procedure_Call_Statement (Loc,
+              New_Occurrence_Of (RTE (RE_Yield), Loc)));
+       end if;
     end Expand_Simple_Function_Return;
  
     -----------------------
*************** package body Exp_Ch6 is
*** 7728,7735 ****
              --  Build_Inherit_Prims takes care of initializing these slots.
  
              elsif Is_Imported (Subp)
!                and then (Convention (Subp) = Convention_CPP
!                            or else Convention (Subp) = Convention_C)
              then
                 null;
  
--- 7800,7806 ----
              --  Build_Inherit_Prims takes care of initializing these slots.
  
              elsif Is_Imported (Subp)
!                and then Convention (Subp) in Convention_C_Family
              then
                 null;
  
*************** package body Exp_Ch6 is
*** 7785,7815 ****
        end if;
     end Freeze_Subprogram;
  
!    --------------------------------------------
!    -- Has_Unconstrained_Access_Discriminants --
!    --------------------------------------------
  
!    function Has_Unconstrained_Access_Discriminants
!      (Subtyp : Entity_Id) return Boolean
     is
!       Discr : Entity_Id;
  
     begin
!       if Has_Discriminants (Subtyp)
!         and then not Is_Constrained (Subtyp)
!       then
!          Discr := First_Discriminant (Subtyp);
!          while Present (Discr) loop
!             if Ekind (Etype (Discr)) = E_Anonymous_Access_Type then
!                return True;
!             end if;
  
!             Next_Discriminant (Discr);
!          end loop;
!       end if;
  
        return False;
!    end Has_Unconstrained_Access_Discriminants;
  
     ------------------------------
     -- Insert_Post_Call_Actions --
--- 7856,7895 ----
        end if;
     end Freeze_Subprogram;
  
!    --------------------------
!    -- Has_BIP_Extra_Formal --
!    --------------------------
  
!    function Has_BIP_Extra_Formal
!      (E    : Entity_Id;
!       Kind : BIP_Formal_Kind) return Boolean
     is
!       Extra_Formal : Entity_Id := Extra_Formals (E);
  
     begin
!       --  We can only rely on the availability of the extra formals in frozen
!       --  entities or in subprogram types of dispatching calls (since their
!       --  extra formals are added when the target subprogram is frozen; see
!       --  Expand_Dispatching_Call).
  
!       pragma Assert (Is_Frozen (E)
!         or else (Ekind (E) = E_Subprogram_Type
!                    and then Is_Dispatch_Table_Entity (E))
!         or else (Is_Dispatching_Operation (E)
!                    and then Is_Frozen (Find_Dispatching_Type (E))));
! 
!       while Present (Extra_Formal) loop
!          if Is_Build_In_Place_Entity (Extra_Formal)
!            and then BIP_Suffix_Kind (Extra_Formal) = Kind
!          then
!             return True;
!          end if;
! 
!          Next_Formal_With_Extras (Extra_Formal);
!       end loop;
  
        return False;
!    end Has_BIP_Extra_Formal;
  
     ------------------------------
     -- Insert_Post_Call_Actions --
*************** package body Exp_Ch6 is
*** 7823,7842 ****
           return;
        end if;
  
!       --  Cases where the call is not a member of a statement list. This
!       --  includes the case where the call is an actual in another function
!       --  call or indexing, i.e. an expression context as well.
  
        if not Is_List_Member (N)
!         or else Nkind_In (Context, N_Function_Call, N_Indexed_Component)
        then
           --  In Ada 2012 the call may be a function call in an expression
           --  (since OUT and IN OUT parameters are now allowed for such calls).
           --  The write-back of (in)-out parameters is handled by the back-end,
           --  but the constraint checks generated when subtypes of formal and
           --  actual don't match must be inserted in the form of assignments.
  
!          if Nkind (Original_Node (N)) = N_Function_Call then
              pragma Assert (Ada_Version >= Ada_2012);
              --  Functions with '[in] out' parameters are only allowed in Ada
              --  2012.
--- 7903,7930 ----
           return;
        end if;
  
!       --  Cases where the call is not a member of a statement list. This also
!       --  includes the cases where the call is an actual in another function
!       --  call, or is an index, or is an operand of an if-expression, i.e. is
!       --  in an expression context.
  
        if not Is_List_Member (N)
!         or else Nkind (Context) in N_Function_Call
!                                  | N_If_Expression
!                                  | N_Indexed_Component
        then
           --  In Ada 2012 the call may be a function call in an expression
           --  (since OUT and IN OUT parameters are now allowed for such calls).
           --  The write-back of (in)-out parameters is handled by the back-end,
           --  but the constraint checks generated when subtypes of formal and
           --  actual don't match must be inserted in the form of assignments.
+          --  Also do this in the case of explicit dereferences, which can occur
+          --  due to rewritings of function calls with controlled results.
  
!          if Nkind (N) = N_Function_Call
!            or else Nkind (Original_Node (N)) = N_Function_Call
!            or else Nkind (N) = N_Explicit_Dereference
!          then
              pragma Assert (Ada_Version >= Ada_2012);
              --  Functions with '[in] out' parameters are only allowed in Ada
              --  2012.
*************** package body Exp_Ch6 is
*** 7860,7872 ****
              --  the write back to be skipped completely.
  
              --  To deal with this, we replace the call by
! 
              --    do
              --       Tnnn : constant function-result-type := function-call;
              --       Post_Call actions
              --    in
              --       Tnnn;
              --    end;
  
              declare
                 Loc   : constant Source_Ptr := Sloc (N);
--- 7948,7975 ----
              --  the write back to be skipped completely.
  
              --  To deal with this, we replace the call by
!             --
              --    do
              --       Tnnn : constant function-result-type := function-call;
              --       Post_Call actions
              --    in
              --       Tnnn;
              --    end;
+             --
+             --   However, that doesn't work if function-result-type requires
+             --   finalization (because function-call's result never gets
+             --   finalized). So in that case, we instead replace the call by
+             --
+             --    do
+             --       type Ref is access all function-result-type;
+             --       Ptr : constant Ref := function-call'Reference;
+             --       Tnnn : constant function-result-type := Ptr.all;
+             --       Finalize (Ptr.all);
+             --       Post_Call actions
+             --    in
+             --       Tnnn;
+             --    end;
+             --
  
              declare
                 Loc   : constant Source_Ptr := Sloc (N);
*************** package body Exp_Ch6 is
*** 7875,7886 ****
                 Name  : constant Node_Id   := Relocate_Node (N);
  
              begin
!                Prepend_To (Post_Call,
!                  Make_Object_Declaration (Loc,
!                    Defining_Identifier => Tnnn,
!                    Object_Definition   => New_Occurrence_Of (FRTyp, Loc),
!                    Constant_Present    => True,
!                    Expression          => Name));
  
                 Rewrite (N,
                   Make_Expression_With_Actions (Loc,
--- 7978,8040 ----
                 Name  : constant Node_Id   := Relocate_Node (N);
  
              begin
!                if Needs_Finalization (FRTyp) then
!                   declare
!                      Ptr_Typ : constant Entity_Id := Make_Temporary (Loc, 'A');
! 
!                      Ptr_Typ_Decl : constant Node_Id :=
!                        Make_Full_Type_Declaration (Loc,
!                          Defining_Identifier => Ptr_Typ,
!                          Type_Definition     =>
!                            Make_Access_To_Object_Definition (Loc,
!                              All_Present        => True,
!                              Subtype_Indication =>
!                                New_Occurrence_Of (FRTyp, Loc)));
! 
!                      Ptr_Obj : constant Entity_Id :=
!                        Make_Temporary (Loc, 'P');
! 
!                      Ptr_Obj_Decl : constant Node_Id :=
!                        Make_Object_Declaration (Loc,
!                          Defining_Identifier => Ptr_Obj,
!                          Object_Definition   =>
!                            New_Occurrence_Of (Ptr_Typ, Loc),
!                          Constant_Present    => True,
!                          Expression          =>
!                            Make_Attribute_Reference (Loc,
!                            Prefix         => Name,
!                            Attribute_Name => Name_Unrestricted_Access));
! 
!                      function Ptr_Dereference return Node_Id is
!                        (Make_Explicit_Dereference (Loc,
!                           Prefix => New_Occurrence_Of (Ptr_Obj, Loc)));
! 
!                      Tnn_Decl : constant Node_Id :=
!                        Make_Object_Declaration (Loc,
!                          Defining_Identifier => Tnnn,
!                          Object_Definition   => New_Occurrence_Of (FRTyp, Loc),
!                          Constant_Present    => True,
!                          Expression          => Ptr_Dereference);
! 
!                      Finalize_Call : constant Node_Id :=
!                        Make_Final_Call
!                          (Obj_Ref => Ptr_Dereference, Typ => FRTyp);
!                   begin
!                      --  Prepend in reverse order
! 
!                      Prepend_To (Post_Call, Finalize_Call);
!                      Prepend_To (Post_Call, Tnn_Decl);
!                      Prepend_To (Post_Call, Ptr_Obj_Decl);
!                      Prepend_To (Post_Call, Ptr_Typ_Decl);
!                   end;
!                else
!                   Prepend_To (Post_Call,
!                     Make_Object_Declaration (Loc,
!                       Defining_Identifier => Tnnn,
!                       Object_Definition   => New_Occurrence_Of (FRTyp, Loc),
!                       Constant_Present    => True,
!                       Expression          => Name));
!                end if;
  
                 Rewrite (N,
                   Make_Expression_With_Actions (Loc,
*************** package body Exp_Ch6 is
*** 7904,7911 ****
           --  corresponding statement list.
  
           else
!             pragma Assert (Nkind_In (Context, N_Entry_Call_Alternative,
!                                               N_Triggering_Alternative));
  
              if Is_Non_Empty_List (Statements (Context)) then
                 Insert_List_Before_And_Analyze
--- 8058,8065 ----
           --  corresponding statement list.
  
           else
!             pragma Assert (Nkind (Context) in N_Entry_Call_Alternative
!                                             | N_Triggering_Alternative);
  
              if Is_Non_Empty_List (Statements (Context)) then
                 Insert_List_Before_And_Analyze
*************** package body Exp_Ch6 is
*** 7921,7926 ****
--- 8075,8081 ----
        --  The only exception is when the function call acts as an actual in a
        --  procedure call. In this case the function call is in a list, but the
        --  post-call actions must be inserted after the procedure call.
+       --  What if the function call is an aggregate component ???
  
        elsif Nkind (Context) = N_Procedure_Call_Statement then
           Insert_Actions_After (Context, Post_Call);
*************** package body Exp_Ch6 is
*** 8002,8007 ****
--- 8157,8163 ----
  
                 if True then
                    Result := Is_Controlled (T)
+                     and then not Is_Generic_Actual_Type (T)
                      and then Present (Enclosing_Subprogram (T))
                      and then not Is_Compilation_Unit (Enclosing_Subprogram (T))
                      and then Ekind (Enclosing_Subprogram (T)) = E_Procedure;
*************** package body Exp_Ch6 is
*** 8015,8020 ****
--- 8171,8204 ----
        end if;
     end Is_Build_In_Place_Result_Type;
  
+    ------------------------------
+    -- Is_Build_In_Place_Entity --
+    ------------------------------
+ 
+    function Is_Build_In_Place_Entity (E : Entity_Id) return Boolean is
+       Nam : constant String := Get_Name_String (Chars (E));
+ 
+       function Has_Suffix (Suffix : String) return Boolean;
+       --  Return True if Nam has suffix Suffix
+ 
+       function Has_Suffix (Suffix : String) return Boolean is
+          Len : constant Natural := Suffix'Length;
+       begin
+          return Nam'Length > Len
+            and then Nam (Nam'Last - Len + 1 .. Nam'Last) = Suffix;
+       end Has_Suffix;
+ 
+    --  Start of processing for Is_Build_In_Place_Entity
+ 
+    begin
+       return Has_Suffix (BIP_Alloc_Suffix)
+         or else Has_Suffix (BIP_Storage_Pool_Suffix)
+         or else Has_Suffix (BIP_Finalization_Master_Suffix)
+         or else Has_Suffix (BIP_Task_Master_Suffix)
+         or else Has_Suffix (BIP_Activation_Chain_Suffix)
+         or else Has_Suffix (BIP_Object_Access_Suffix);
+    end Is_Build_In_Place_Entity;
+ 
     --------------------------------
     -- Is_Build_In_Place_Function --
     --------------------------------
*************** package body Exp_Ch6 is
*** 8033,8039 ****
        --  type whose result subtype is inherently limited. Later this test
        --  may be revised to allow composite nonlimited types.
  
!       if Ekind_In (E, E_Function, E_Generic_Function)
          or else (Ekind (E) = E_Subprogram_Type
                    and then Etype (E) /= Standard_Void_Type)
        then
--- 8217,8223 ----
        --  type whose result subtype is inherently limited. Later this test
        --  may be revised to allow composite nonlimited types.
  
!       if Ekind (E) in E_Function | E_Generic_Function
          or else (Ekind (E) = E_Subprogram_Type
                    and then Etype (E) /= Standard_Void_Type)
        then
*************** package body Exp_Ch6 is
*** 8187,8195 ****
        --  Step past qualification or unchecked conversion (the latter can occur
        --  in cases of calls to 'Input).
  
!       if Nkind_In (Func_Call, N_Qualified_Expression,
!                               N_Type_Conversion,
!                               N_Unchecked_Type_Conversion)
        then
           Func_Call := Expression (Func_Call);
        end if;
--- 8371,8379 ----
        --  Step past qualification or unchecked conversion (the latter can occur
        --  in cases of calls to 'Input).
  
!       if Nkind (Func_Call) in N_Qualified_Expression
!                             | N_Type_Conversion
!                             | N_Unchecked_Type_Conversion
        then
           Func_Call := Expression (Func_Call);
        end if;
*************** package body Exp_Ch6 is
*** 8209,8214 ****
--- 8393,8400 ----
           raise Program_Error;
        end if;
  
+       Warn_BIP (Func_Call);
+ 
        Result_Subt := Available_View (Etype (Function_Id));
  
        --  Create a temp for the function result. In the caller-allocates case,
*************** package body Exp_Ch6 is
*** 8308,8315 ****
  
           Temp_Init := Relocate_Node (Allocator);
  
!          if Nkind_In (Function_Call, N_Type_Conversion,
!                                      N_Unchecked_Type_Conversion)
           then
              Temp_Init := Unchecked_Convert_To (Acc_Type, Temp_Init);
           end if;
--- 8494,8501 ----
  
           Temp_Init := Relocate_Node (Allocator);
  
!          if Nkind (Function_Call) in
!               N_Type_Conversion | N_Unchecked_Type_Conversion
           then
              Temp_Init := Unchecked_Convert_To (Acc_Type, Temp_Init);
           end if;
*************** package body Exp_Ch6 is
*** 8354,8361 ****
        --  that the full types will be compatible, but the types not visibly
        --  compatible.
  
!       elsif Nkind_In (Function_Call, N_Type_Conversion,
!                                      N_Unchecked_Type_Conversion)
        then
           Ref_Func_Call := Unchecked_Convert_To (Acc_Type, Ref_Func_Call);
        end if;
--- 8540,8547 ----
        --  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;
*************** package body Exp_Ch6 is
*** 8380,8386 ****
           --  rather than some outer chain.
  
        begin
!          if Has_Task (Result_Subt) then
              Actions := New_List;
              Build_Task_Allocate_Block_With_Init_Stmts
                (Actions, Allocator, Init_Stmts => New_List (Assign));
--- 8566,8572 ----
           --  rather than some outer chain.
  
        begin
!          if Might_Have_Tasks (Result_Subt) then
              Actions := New_List;
              Build_Task_Allocate_Block_With_Init_Stmts
                (Actions, Allocator, Init_Stmts => New_List (Assign));
*************** package body Exp_Ch6 is
*** 8423,8428 ****
--- 8609,8615 ----
  
        Analyze_And_Resolve (Allocator, Acc_Type);
        pragma Assert (Check_Number_Of_Actuals (Func_Call, Function_Id));
+       pragma Assert (Check_BIP_Actuals (Func_Call, Function_Id));
     end Make_Build_In_Place_Call_In_Allocator;
  
     ---------------------------------------------------
*************** package body Exp_Ch6 is
*** 8464,8469 ****
--- 8651,8658 ----
           raise Program_Error;
        end if;
  
+       Warn_BIP (Func_Call);
+ 
        Result_Subt := Etype (Function_Id);
  
        --  If the build-in-place function returns a controlled object, then the
*************** package body Exp_Ch6 is
*** 8545,8550 ****
--- 8734,8740 ----
             (Func_Call, Function_Id, New_Occurrence_Of (Return_Obj_Id, Loc));
  
           pragma Assert (Check_Number_Of_Actuals (Func_Call, Function_Id));
+          pragma Assert (Check_BIP_Actuals (Func_Call, Function_Id));
  
        --  When the result subtype is unconstrained, the function must allocate
        --  the return object in the secondary stack, so appropriate implicit
*************** package body Exp_Ch6 is
*** 8571,8576 ****
--- 8761,8767 ----
             (Func_Call, Function_Id, Empty);
  
           pragma Assert (Check_Number_Of_Actuals (Func_Call, Function_Id));
+          pragma Assert (Check_BIP_Actuals (Func_Call, Function_Id));
        end if;
     end Make_Build_In_Place_Call_In_Anonymous_Context;
  
*************** package body Exp_Ch6 is
*** 8609,8614 ****
--- 8800,8807 ----
           raise Program_Error;
        end if;
  
+       Warn_BIP (Func_Call);
+ 
        Result_Subt := Etype (Func_Id);
  
        --  When the result subtype is unconstrained, an additional actual must
*************** package body Exp_Ch6 is
*** 8677,8682 ****
--- 8870,8876 ----
  
        Rewrite (Assign, Make_Null_Statement (Loc));
        pragma Assert (Check_Number_Of_Actuals (Func_Call, Func_Id));
+       pragma Assert (Check_BIP_Actuals (Func_Call, Func_Id));
     end Make_Build_In_Place_Call_In_Assignment;
  
     ----------------------------------------------------
*************** package body Exp_Ch6 is
*** 8752,8757 ****
--- 8946,8953 ----
  
        Set_Is_Expanded_Build_In_Place_Call (Func_Call);
  
+       Warn_BIP (Func_Call);
+ 
        --  Create an access type designating the function's result subtype.
        --  We use the type of the original call because it may be a call to an
        --  inherited operation, which the expansion has replaced with the parent
*************** package body Exp_Ch6 is
*** 8809,8815 ****
  
              begin
                 while Present (N)
!                  and then Nkind_In (N, N_Attribute_Reference, N_Pragma)
                 loop
                    Analyze (N);
                    D := N;
--- 9005,9011 ----
  
              begin
                 while Present (N)
!                  and then Nkind (N) in N_Attribute_Reference | N_Pragma
                 loop
                    Analyze (N);
                    D := N;
*************** package body Exp_Ch6 is
*** 9025,9038 ****
  
        --  Finally, create an access object initialized to a reference to the
        --  function call. We know this access value cannot be null, so mark the
!       --  entity accordingly to suppress the access check.
  
        Def_Id := Make_Temporary (Loc, 'R', Func_Call);
        Set_Etype (Def_Id, Ptr_Typ);
        Set_Is_Known_Non_Null (Def_Id);
  
!       if Nkind_In (Function_Call, N_Type_Conversion,
!                                   N_Unchecked_Type_Conversion)
        then
           Res_Decl :=
             Make_Object_Declaration (Loc,
--- 9221,9240 ----
  
        --  Finally, create an access object initialized to a reference to the
        --  function call. We know this access value cannot be null, so mark the
!       --  entity accordingly to suppress the access check. We need to suppress
!       --  warnings, because this can be part of the expansion of "for ... of"
!       --  and similar constructs that generate finalization actions. Such
!       --  finalization actions are safe, because they check a count that
!       --  indicates which objects should be finalized, but the back end
!       --  nonetheless warns about uninitialized objects.
  
        Def_Id := Make_Temporary (Loc, 'R', Func_Call);
+       Set_Warnings_Off (Def_Id);
        Set_Etype (Def_Id, Ptr_Typ);
        Set_Is_Known_Non_Null (Def_Id);
  
!       if Nkind (Function_Call) in N_Type_Conversion
!                                 | N_Unchecked_Type_Conversion
        then
           Res_Decl :=
             Make_Object_Declaration (Loc,
*************** package body Exp_Ch6 is
*** 9073,9079 ****
           --  which prompted the generation of the transient block. To resolve
           --  this scenario, store the build-in-place call.
  
!          if Scope_Is_Transient and then Node_To_Be_Wrapped = Obj_Decl then
              Set_BIP_Initialization_Call (Obj_Def_Id, Res_Decl);
           end if;
  
--- 9275,9281 ----
           --  which prompted the generation of the transient block. To resolve
           --  this scenario, store the build-in-place call.
  
!          if Scope_Is_Transient then
              Set_BIP_Initialization_Call (Obj_Def_Id, Res_Decl);
           end if;
  
*************** package body Exp_Ch6 is
*** 9120,9125 ****
--- 9322,9328 ----
        end if;
  
        pragma Assert (Check_Number_Of_Actuals (Func_Call, Function_Id));
+       pragma Assert (Check_BIP_Actuals (Func_Call, Function_Id));
     end Make_Build_In_Place_Call_In_Object_Declaration;
  
     -------------------------------------------------
*************** package body Exp_Ch6 is
*** 9139,9145 ****
        Tmp_Id    : Entity_Id;
  
     begin
!       --  No action of the call has already been processed
  
        if Is_Expanded_Build_In_Place_Call (BIP_Func_Call) then
           return;
--- 9342,9348 ----
        Tmp_Id    : Entity_Id;
  
     begin
!       --  No action if the call has already been processed
  
        if Is_Expanded_Build_In_Place_Call (BIP_Func_Call) then
           return;
*************** package body Exp_Ch6 is
*** 9157,9162 ****
--- 9360,9366 ----
        Anon_Type := Create_Itype (E_Anonymous_Access_Type, Function_Call);
        Set_Directly_Designated_Type (Anon_Type, Etype (BIP_Func_Call));
        Set_Etype (Anon_Type, Anon_Type);
+       Build_Class_Wide_Master (Anon_Type);
  
        Tmp_Decl :=
          Make_Object_Declaration (Loc,
*************** package body Exp_Ch6 is
*** 9170,9175 ****
--- 9374,9385 ----
                      New_Occurrence_Of (Etype (BIP_Func_Call), Loc),
                    Expression   => New_Copy_Tree (BIP_Func_Call))));
  
+       --  Manually set the associated node for the anonymous access type to
+       --  be its local declaration, to avoid confusing and complicating
+       --  the accessibility machinery.
+ 
+       Set_Associated_Node_For_Itype (Anon_Type, Tmp_Decl);
+ 
        Expander_Mode_Save_And_Set (False);
        Insert_Action (Allocator, Tmp_Decl);
        Expander_Mode_Restore;
*************** package body Exp_Ch6 is
*** 9178,9184 ****
          (Allocator     => Expression (Tmp_Decl),
           Function_Call => Expression (Expression (Tmp_Decl)));
  
!       Rewrite (Allocator, New_Occurrence_Of (Tmp_Id, Loc));
     end Make_Build_In_Place_Iface_Call_In_Allocator;
  
     ---------------------------------------------------------
--- 9388,9399 ----
          (Allocator     => Expression (Tmp_Decl),
           Function_Call => Expression (Expression (Tmp_Decl)));
  
!       --  Add a conversion to displace the pointer to the allocated object
!       --  to reference the corresponding dispatch table.
! 
!       Rewrite (Allocator,
!         Convert_To (Etype (Allocator),
!           New_Occurrence_Of (Tmp_Id, Loc)));
     end Make_Build_In_Place_Iface_Call_In_Allocator;
  
     ---------------------------------------------------------
*************** package body Exp_Ch6 is
*** 9391,9405 ****
        Analyze_And_Resolve (Allocator, Acc_Type);
     end Make_CPP_Constructor_Call_In_Allocator;
  
     ----------------------------
     -- Needs_BIP_Task_Actuals --
     ----------------------------
  
     function Needs_BIP_Task_Actuals (Func_Id : Entity_Id) return Boolean is
        pragma Assert (Is_Build_In_Place_Function (Func_Id));
!       Func_Typ : constant Entity_Id := Underlying_Type (Etype (Func_Id));
     begin
!       return Has_Task (Func_Typ);
     end Needs_BIP_Task_Actuals;
  
     -----------------------------------
--- 9606,9690 ----
        Analyze_And_Resolve (Allocator, Acc_Type);
     end Make_CPP_Constructor_Call_In_Allocator;
  
+    ----------------------
+    -- Might_Have_Tasks --
+    ----------------------
+ 
+    function Might_Have_Tasks (Typ : Entity_Id) return Boolean is
+    begin
+       return not Global_No_Tasking
+         and then not No_Run_Time_Mode
+         and then (Has_Task (Typ)
+                     or else (Is_Class_Wide_Type (Typ)
+                                and then Is_Limited_Record (Typ)))
+ 
+         --  Predefined iterator types do not contain tasks, even when
+         --  class-wide.
+ 
+         and then not (In_Predefined_Unit (Typ)
+                         and then Chars (Typ) in
+                           Name_Find ("Tforward_iteratorC") |
+                           Name_Find ("Treversible_iteratorC"));
+    end Might_Have_Tasks;
+ 
     ----------------------------
     -- Needs_BIP_Task_Actuals --
     ----------------------------
  
     function Needs_BIP_Task_Actuals (Func_Id : Entity_Id) return Boolean is
        pragma Assert (Is_Build_In_Place_Function (Func_Id));
!       Subp_Id  : Entity_Id;
!       Func_Typ : Entity_Id;
! 
     begin
!       if Global_No_Tasking or else No_Run_Time_Mode then
!          return False;
!       end if;
! 
!       --  For thunks we must rely on their target entity; otherwise, given that
!       --  the profile of thunks for functions returning a limited interface
!       --  type returns a class-wide type, we would erroneously add these extra
!       --  formals.
! 
!       if Is_Thunk (Func_Id) then
!          Subp_Id := Thunk_Entity (Func_Id);
! 
!       --  Common case
! 
!       else
!          Subp_Id := Func_Id;
!       end if;
! 
!       Func_Typ := Underlying_Type (Etype (Subp_Id));
! 
!       --  At first sight, for all the following cases, we could add assertions
!       --  to ensure that if Func_Id is frozen then the computed result matches
!       --  with the availability of the task master extra formal; unfortunately
!       --  this is not feasible because we may be precisely freezing this entity
!       --  (that is, Is_Frozen has been set by Freeze_Entity but it has not
!       --  completed its work).
! 
!       if Has_Task (Func_Typ) then
!          return True;
! 
!       elsif Ekind (Func_Id) = E_Function then
!          return Might_Have_Tasks (Func_Typ);
! 
!       --  Handle subprogram type internally generated for dispatching call. We
!       --  cannot rely on the return type of the subprogram type of dispatching
!       --  calls since it is always a class-wide type (cf. Expand_Dispatching_
!       --  Call).
! 
!       elsif Ekind (Func_Id) = E_Subprogram_Type then
!          if Is_Dispatch_Table_Entity (Func_Id) then
!             return Has_BIP_Extra_Formal (Func_Id, BIP_Task_Master);
!          else
!             return Might_Have_Tasks (Func_Typ);
!          end if;
! 
!       else
!          raise Program_Error;
!       end if;
     end Needs_BIP_Task_Actuals;
  
     -----------------------------------
*************** package body Exp_Ch6 is
*** 9439,9582 ****
        return Requires_Transient_Scope (Func_Typ);
     end Needs_BIP_Alloc_Form;
  
-    --------------------------------------
-    -- Needs_Result_Accessibility_Level --
-    --------------------------------------
- 
-    function Needs_Result_Accessibility_Level
-      (Func_Id : Entity_Id) return Boolean
-    is
-       Func_Typ : constant Entity_Id := Underlying_Type (Etype (Func_Id));
- 
-       function Has_Unconstrained_Access_Discriminant_Component
-         (Comp_Typ : Entity_Id) return Boolean;
-       --  Returns True if any component of the type has an unconstrained access
-       --  discriminant.
- 
-       -----------------------------------------------------
-       -- Has_Unconstrained_Access_Discriminant_Component --
-       -----------------------------------------------------
- 
-       function Has_Unconstrained_Access_Discriminant_Component
-         (Comp_Typ :  Entity_Id) return Boolean
-       is
-       begin
-          if not Is_Limited_Type (Comp_Typ) then
-             return False;
- 
-             --  Only limited types can have access discriminants with
-             --  defaults.
- 
-          elsif Has_Unconstrained_Access_Discriminants (Comp_Typ) then
-             return True;
- 
-          elsif Is_Array_Type (Comp_Typ) then
-             return Has_Unconstrained_Access_Discriminant_Component
-                      (Underlying_Type (Component_Type (Comp_Typ)));
- 
-          elsif Is_Record_Type (Comp_Typ) then
-             declare
-                Comp : Entity_Id;
- 
-             begin
-                Comp := First_Component (Comp_Typ);
-                while Present (Comp) loop
-                   if Has_Unconstrained_Access_Discriminant_Component
-                        (Underlying_Type (Etype (Comp)))
-                   then
-                      return True;
-                   end if;
- 
-                   Next_Component (Comp);
-                end loop;
-             end;
-          end if;
- 
-          return False;
-       end Has_Unconstrained_Access_Discriminant_Component;
- 
-       Disable_Coextension_Cases : constant Boolean := True;
-       --  Flag used to temporarily disable a "True" result for types with
-       --  access discriminants and related coextension cases.
- 
-    --  Start of processing for Needs_Result_Accessibility_Level
- 
-    begin
-       --  False if completion unavailable (how does this happen???)
- 
-       if not Present (Func_Typ) then
-          return False;
- 
-       --  False if not a function, also handle enum-lit renames case
- 
-       elsif Func_Typ = Standard_Void_Type
-         or else Is_Scalar_Type (Func_Typ)
-       then
-          return False;
- 
-       --  Handle a corner case, a cross-dialect subp renaming. For example,
-       --  an Ada 2012 renaming of an Ada 2005 subprogram. This can occur when
-       --  an Ada 2005 (or earlier) unit references predefined run-time units.
- 
-       elsif Present (Alias (Func_Id)) then
- 
-          --  Unimplemented: a cross-dialect subp renaming which does not set
-          --  the Alias attribute (e.g., a rename of a dereference of an access
-          --  to subprogram value). ???
- 
-          return Present (Extra_Accessibility_Of_Result (Alias (Func_Id)));
- 
-       --  Remaining cases require Ada 2012 mode
- 
-       elsif Ada_Version < Ada_2012 then
-          return False;
- 
-       --  Handle the situation where a result is an anonymous access type
-       --  RM 3.10.2 (10.3/3).
- 
-       elsif Ekind (Func_Typ) = E_Anonymous_Access_Type then
-          return True;
- 
-       --  The following cases are related to coextensions and do not fully
-       --  cover everything mentioned in RM 3.10.2 (12) ???
- 
-       --  Temporarily disabled ???
- 
-       elsif Disable_Coextension_Cases then
-          return False;
- 
-       --  In the case of, say, a null tagged record result type, the need for
-       --  this extra parameter might not be obvious so this function returns
-       --  True for all tagged types for compatibility reasons.
- 
-       --  A function with, say, a tagged null controlling result type might
-       --  be overridden by a primitive of an extension having an access
-       --  discriminant and the overrider and overridden must have compatible
-       --  calling conventions (including implicitly declared parameters).
- 
-       --  Similarly, values of one access-to-subprogram type might designate
-       --  both a primitive subprogram of a given type and a function which is,
-       --  for example, not a primitive subprogram of any type. Again, this
-       --  requires calling convention compatibility. It might be possible to
-       --  solve these issues by introducing wrappers, but that is not the
-       --  approach that was chosen.
- 
-       elsif Is_Tagged_Type (Func_Typ) then
-          return True;
- 
-       elsif Has_Unconstrained_Access_Discriminants (Func_Typ) then
-          return True;
- 
-       elsif Has_Unconstrained_Access_Discriminant_Component (Func_Typ) then
-          return True;
- 
-       --  False for all other cases
- 
-       else
-          return False;
-       end if;
-    end Needs_Result_Accessibility_Level;
- 
     -------------------------------------
     -- Replace_Renaming_Declaration_Id --
     -------------------------------------
--- 9724,9729 ----
*************** package body Exp_Ch6 is
*** 9636,9642 ****
  
        Last_Formal := First_Formal (Proc_Id);
        while Present (Next_Formal (Last_Formal)) loop
!          Last_Formal := Next_Formal (Last_Formal);
        end loop;
  
        Actuals := Parameter_Associations (N);
--- 9783,9789 ----
  
        Last_Formal := First_Formal (Proc_Id);
        while Present (Next_Formal (Last_Formal)) loop
!          Next_Formal (Last_Formal);
        end loop;
  
        Actuals := Parameter_Associations (N);
*************** package body Exp_Ch6 is
*** 9744,9750 ****
           --  Mark the label of a source or internally generated block or
           --  loop.
  
!          if Nkind_In (P, N_Block_Statement, N_Loop_Statement) then
              Set_Sec_Stack_Needed_For_Return (Entity (Identifier (P)));
  
           --  Mark the enclosing function
--- 9891,9897 ----
           --  Mark the label of a source or internally generated block or
           --  loop.
  
!          if Nkind (P) in N_Block_Statement | N_Loop_Statement then
              Set_Sec_Stack_Needed_For_Return (Entity (Identifier (P)));
  
           --  Mark the enclosing function
*************** package body Exp_Ch6 is
*** 9791,9808 ****
           --  Recurse to handle case of multiple levels of qualification and/or
           --  conversion.
  
!          if Nkind_In (Expr, N_Qualified_Expression,
!                             N_Type_Conversion,
!                             N_Unchecked_Type_Conversion)
           then
              return Unqual_BIP_Function_Call (Expression (Expr));
  
           --  Recurse to handle case of multiple levels of references and
           --  explicit dereferences.
  
!          elsif Nkind_In (Expr, N_Attribute_Reference,
!                                N_Explicit_Dereference,
!                                N_Reference)
           then
              return Unqual_BIP_Function_Call (Prefix (Expr));
  
--- 9938,9955 ----
           --  Recurse to handle case of multiple levels of qualification and/or
           --  conversion.
  
!          if Nkind (Expr) in N_Qualified_Expression
!                           | N_Type_Conversion
!                           | N_Unchecked_Type_Conversion
           then
              return Unqual_BIP_Function_Call (Expression (Expr));
  
           --  Recurse to handle case of multiple levels of references and
           --  explicit dereferences.
  
!          elsif Nkind (Expr) in N_Attribute_Reference
!                              | N_Explicit_Dereference
!                              | N_Reference
           then
              return Unqual_BIP_Function_Call (Prefix (Expr));
  
*************** package body Exp_Ch6 is
*** 9810,9816 ****
  
           elsif Nkind (Expr) = N_Identifier
             and then Present (Entity (Expr))
!            and then Ekind_In (Entity (Expr), E_Constant, E_Variable)
             and then Nkind (Parent (Entity (Expr))) =
                        N_Object_Renaming_Declaration
             and then Present (Renamed_Object (Entity (Expr)))
--- 9957,9963 ----
  
           elsif Nkind (Expr) = N_Identifier
             and then Present (Entity (Expr))
!            and then Ekind (Entity (Expr)) in E_Constant | E_Variable
             and then Nkind (Parent (Entity (Expr))) =
                        N_Object_Renaming_Declaration
             and then Present (Renamed_Object (Entity (Expr)))
*************** package body Exp_Ch6 is
*** 9823,9829 ****
           elsif not On_Object_Declaration
             and then Nkind (Expr) = N_Identifier
             and then Present (Entity (Expr))
!            and then Ekind_In (Entity (Expr), E_Constant, E_Variable)
             and then Nkind (Parent (Entity (Expr))) = N_Object_Declaration
             and then Present (Expression (Parent (Entity (Expr))))
           then
--- 9970,9976 ----
           elsif not On_Object_Declaration
             and then Nkind (Expr) = N_Identifier
             and then Present (Entity (Expr))
!            and then Ekind (Entity (Expr)) in E_Constant | E_Variable
             and then Nkind (Parent (Entity (Expr))) = N_Object_Declaration
             and then Present (Expression (Parent (Entity (Expr))))
           then
*************** package body Exp_Ch6 is
*** 9871,9874 ****
--- 10018,10032 ----
        return Unqual_BIP_Function_Call (Expr);
     end Unqual_BIP_Iface_Function_Call;
  
+    --------------
+    -- Warn_BIP --
+    --------------
+ 
+    procedure Warn_BIP (Func_Call : Node_Id) is
+    begin
+       if Debug_Flag_Underscore_BB then
+          Error_Msg_N ("build-in-place function call??", Func_Call);
+       end if;
+    end Warn_BIP;
+ 
  end Exp_Ch6;
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch6.ads gcc-11.1.0/gcc/ada/exp_ch6.ads
*** gcc-10.3.0/gcc/ada/exp_ch6.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch6.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Ch6 is
*** 102,107 ****
--- 102,110 ----
     --  Ada 2005 (AI-318-02): Returns a string to be used as the suffix of names
     --  for build-in-place formal parameters of the given kind.
  
+    function BIP_Suffix_Kind (E : Entity_Id) return BIP_Formal_Kind;
+    --  Ada 2005 (AI-318-02): Returns the kind of the given BIP extra formal.
+ 
     function Build_In_Place_Formal
       (Func : Entity_Id;
        Kind : BIP_Formal_Kind) return Entity_Id;
*************** package Exp_Ch6 is
*** 117,122 ****
--- 120,128 ----
     --  The returned node is the root of the procedure body which will replace
     --  the original function body, which is not needed for the C program.
  
+    function Is_Build_In_Place_Entity (E : Entity_Id) return Boolean;
+    --  Ada 2005 (AI-318-02): Returns True if E is a BIP entity.
+ 
     function Is_Build_In_Place_Result_Type (Typ : Entity_Id) return Boolean;
     --  Ada 2005 (AI-318-02): Returns True if functions returning the type use
     --  build-in-place protocols. For inherently limited types, this must be
*************** package Exp_Ch6 is
*** 234,239 ****
--- 240,249 ----
     --  the constructor, and the allocator is rewritten to refer to that access
     --  object. Function_Call must denote a call to a CPP_Constructor function.
  
+    function Might_Have_Tasks (Typ : Entity_Id) return Boolean;
+    --  Return True when type Typ has tasks or when it is a limited class-wide
+    --  type (or subtype), since it might have task components.
+ 
     function Needs_BIP_Alloc_Form (Func_Id : Entity_Id) return Boolean;
     --  Ada 2005 (AI-318-02): Return True if the function needs an implicit
     --  BIP_Alloc_Form parameter (see type BIP_Formal_Kind).
*************** package Exp_Ch6 is
*** 247,258 ****
     function Needs_BIP_Task_Actuals (Func_Id : Entity_Id) return Boolean;
     --  Return True if the function returns an object of a type that has tasks.
  
-    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".
- 
     function Unqual_BIP_Iface_Function_Call (Expr : Node_Id) return Node_Id;
     --  Return the inner BIP function call removing any qualification from Expr
     --  including qualified expressions, type conversions, references, unchecked
--- 257,262 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch7.adb gcc-11.1.0/gcc/ada/exp_ch7.adb
*** gcc-10.3.0/gcc/ada/exp_ch7.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch7.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 27,68 ****
  --    - controlled types
  --    - transient scopes
  
! with Atree;    use Atree;
! with Debug;    use Debug;
! with Einfo;    use Einfo;
! with Elists;   use Elists;
! with Errout;   use Errout;
! with Exp_Ch6;  use Exp_Ch6;
! with Exp_Ch9;  use Exp_Ch9;
! with Exp_Ch11; use Exp_Ch11;
! with Exp_Dbug; use Exp_Dbug;
! with Exp_Dist; use Exp_Dist;
! with Exp_Disp; use Exp_Disp;
! with Exp_Prag; use Exp_Prag;
! with Exp_Tss;  use Exp_Tss;
! with Exp_Util; use Exp_Util;
! with Freeze;   use Freeze;
! with Lib;      use Lib;
! with Nlists;   use Nlists;
! with Nmake;    use Nmake;
! with Opt;      use Opt;
! with Output;   use Output;
! with Restrict; use Restrict;
! with Rident;   use Rident;
! with Rtsfind;  use Rtsfind;
! with Sinfo;    use Sinfo;
! with Sem;      use Sem;
! with Sem_Aux;  use Sem_Aux;
! with Sem_Ch3;  use Sem_Ch3;
! with Sem_Ch7;  use Sem_Ch7;
! with Sem_Ch8;  use Sem_Ch8;
! with Sem_Res;  use Sem_Res;
! with Sem_Util; use Sem_Util;
! with Snames;   use Snames;
! with Stand;    use Stand;
! with Tbuild;   use Tbuild;
! with Ttypes;   use Ttypes;
! with Uintp;    use Uintp;
  
  package body Exp_Ch7 is
  
--- 27,69 ----
  --    - controlled types
  --    - transient scopes
  
! with Atree;     use Atree;
! with Contracts; use Contracts;
! with Debug;     use Debug;
! with Einfo;     use Einfo;
! with Elists;    use Elists;
! with Errout;    use Errout;
! with Exp_Ch6;   use Exp_Ch6;
! with Exp_Ch9;   use Exp_Ch9;
! with Exp_Ch11;  use Exp_Ch11;
! with Exp_Dbug;  use Exp_Dbug;
! with Exp_Dist;  use Exp_Dist;
! with Exp_Disp;  use Exp_Disp;
! with Exp_Prag;  use Exp_Prag;
! with Exp_Tss;   use Exp_Tss;
! with Exp_Util;  use Exp_Util;
! with Freeze;    use Freeze;
! with Lib;       use Lib;
! with Nlists;    use Nlists;
! with Nmake;     use Nmake;
! with Opt;       use Opt;
! with Output;    use Output;
! with Restrict;  use Restrict;
! with Rident;    use Rident;
! with Rtsfind;   use Rtsfind;
! with Sinfo;     use Sinfo;
! with Sem;       use Sem;
! with Sem_Aux;   use Sem_Aux;
! with Sem_Ch3;   use Sem_Ch3;
! with Sem_Ch7;   use Sem_Ch7;
! with Sem_Ch8;   use Sem_Ch8;
! with Sem_Res;   use Sem_Res;
! with Sem_Util;  use Sem_Util;
! with Snames;    use Snames;
! with Stand;     use Stand;
! with Tbuild;    use Tbuild;
! with Ttypes;    use Ttypes;
! with Uintp;     use Uintp;
  
  package body Exp_Ch7 is
  
*************** package body Exp_Ch7 is
*** 339,344 ****
--- 340,356 ----
     --  such as for task termination. Fin_Id is the finalizer declaration
     --  entity.
  
+    procedure Build_Finalizer_Helper
+      (N                 : Node_Id;
+       Clean_Stmts       : List_Id;
+       Mark_Id           : Entity_Id;
+       Top_Decls         : List_Id;
+       Defer_Abort       : Boolean;
+       Fin_Id            : out Entity_Id;
+       Finalize_Old_Only : Boolean);
+    --  An internal routine which does all of the heavy lifting on behalf of
+    --  Build_Finalizer.
+ 
     procedure Build_Finalizer_Call (N : Node_Id; Fin_Id : Entity_Id);
     --  N is a construct which contains a handled sequence of statements, Fin_Id
     --  is the entity of a finalizer. Create an At_End handler which covers the
*************** package body Exp_Ch7 is
*** 368,374 ****
     --  Mode such subprograms must be handled as nested inside the (implicit)
     --  elaboration procedure that executes that statement part. To handle
     --  properly uplevel references we construct that subprogram explicitly,
!    --  to contain blocks and inner subprograms, The statement part becomes
     --  a call to this subprogram. This is only done if blocks are present
     --  in the statement list of the body. (It would be nice to unify this
     --  procedure with Check_Unnesting_In_Decls_Or_Stmts, if possible, since
--- 380,386 ----
     --  Mode such subprograms must be handled as nested inside the (implicit)
     --  elaboration procedure that executes that statement part. To handle
     --  properly uplevel references we construct that subprogram explicitly,
!    --  to contain blocks and inner subprograms, the statement part becomes
     --  a call to this subprogram. This is only done if blocks are present
     --  in the statement list of the body. (It would be nice to unify this
     --  procedure with Check_Unnesting_In_Decls_Or_Stmts, if possible, since
*************** package body Exp_Ch7 is
*** 398,403 ****
--- 410,440 ----
     --  actions or secondary-stack management, in which case the nested
     --  subprogram is a finalizer.
  
+    procedure Unnest_If_Statement (If_Stmt : Node_Id);
+    --  The separate statement lists associated with an if-statement (then part,
+    --  elsif parts, else part) may require unnesting if they directly contain
+    --  a subprogram body that references up-level objects. Each statement list
+    --  is traversed to locate such subprogram bodies, and if a part's statement
+    --  list contains a body, then the list is replaced with a new procedure
+    --  containing the part's statements followed by a call to the procedure.
+    --  Furthermore, any nested blocks, loops, or if statements will also be
+    --  traversed to determine the need for further unnesting transformations.
+ 
+    procedure Unnest_Statement_List (Stmts : in out List_Id);
+    --  A list of statements that directly contains a subprogram at its outer
+    --  level, that may reference objects declared in that same statement list,
+    --  is rewritten as a procedure containing the statement list Stmts (which
+    --  includes any such objects as well as the nested subprogram), followed by
+    --  a call to the new procedure, and Stmts becomes the list containing the
+    --  procedure and the call. This ensures that Unnest_Subprogram will later
+    --  properly handle up-level references from the nested subprogram to
+    --  objects declared earlier in statement list, by creating an activation
+    --  record and passing it to the nested subprogram. This procedure also
+    --  resets the Scope of objects declared in the statement list, as well as
+    --  the Scope of the nested subprogram, to refer to the new procedure.
+    --  Also, the new procedure is marked Has_Nested_Subprogram, so this should
+    --  only be called when known that the statement list contains a subprogram.
+ 
     procedure Unnest_Loop (Loop_Stmt : Node_Id);
     --  Top-level Loops that contain nested subprograms with up-level references
     --  need to have activation records. We do this by rewriting the loop as a
*************** package body Exp_Ch7 is
*** 909,915 ****
        elsif Is_Protected_Body then
           declare
              Spec      : constant Node_Id := Parent (Corresponding_Spec (N));
!             Conc_Typ  : Entity_Id;
              Param     : Node_Id;
              Param_Typ : Entity_Id;
  
--- 946,952 ----
        elsif Is_Protected_Body then
           declare
              Spec      : constant Node_Id := Parent (Corresponding_Spec (N));
!             Conc_Typ  : Entity_Id := Empty;
              Param     : Node_Id;
              Param_Typ : Entity_Id;
  
*************** package body Exp_Ch7 is
*** 929,934 ****
--- 966,972 ----
              end loop;
  
              pragma Assert (Present (Param));
+             pragma Assert (Present (Conc_Typ));
  
              --  Historical note: In earlier versions of GNAT, there was code
              --  at this point to generate stuff to service entry queues. It is
*************** package body Exp_Ch7 is
*** 1247,1252 ****
--- 1285,1294 ----
               Object_Definition   =>
                 New_Occurrence_Of (RTE (RE_Finalization_Master), Loc)));
  
+          if Debug_Generated_Code then
+             Set_Debug_Info_Needed (Fin_Mas_Id);
+          end if;
+ 
           --  Set the associated pool and primitive Finalize_Address of the new
           --  finalization master.
  
*************** package body Exp_Ch7 is
*** 1342,1349 ****
              --  Treat use clauses as declarations and insert directly in front
              --  of them.
  
!             if Nkind_In (Insertion_Node, N_Use_Package_Clause,
!                                          N_Use_Type_Clause)
              then
                 Insert_List_Before_And_Analyze (Insertion_Node, Actions);
              else
--- 1384,1391 ----
              --  Treat use clauses as declarations and insert directly in front
              --  of them.
  
!             if Nkind (Insertion_Node) in
!                  N_Use_Package_Clause | N_Use_Type_Clause
              then
                 Insert_List_Before_And_Analyze (Insertion_Node, Actions);
              else
*************** package body Exp_Ch7 is
*** 1367,1386 ****
           else
              Append_Freeze_Actions (Ptr_Typ, Actions);
           end if;
        end;
     end Build_Finalization_Master;
  
!    ---------------------
!    -- Build_Finalizer --
!    ---------------------
  
!    procedure Build_Finalizer
!      (N           : Node_Id;
!       Clean_Stmts : List_Id;
!       Mark_Id     : Entity_Id;
!       Top_Decls   : List_Id;
!       Defer_Abort : Boolean;
!       Fin_Id      : out Entity_Id)
     is
        Acts_As_Clean    : constant Boolean :=
                             Present (Mark_Id)
--- 1409,1440 ----
           else
              Append_Freeze_Actions (Ptr_Typ, Actions);
           end if;
+ 
+          Analyze_List (Actions);
+ 
+          --  When the type the finalization master is being generated for was
+          --  created to store a 'Old object, then mark it as such so its
+          --  finalization can be delayed until after postconditions have been
+          --  checked.
+ 
+          if Stores_Attribute_Old_Prefix (Ptr_Typ) then
+             Set_Stores_Attribute_Old_Prefix (Fin_Mas_Id);
+          end if;
        end;
     end Build_Finalization_Master;
  
!    ----------------------------
!    -- Build_Finalizer_Helper --
!    ----------------------------
  
!    procedure Build_Finalizer_Helper
!      (N                 : Node_Id;
!       Clean_Stmts       : List_Id;
!       Mark_Id           : Entity_Id;
!       Top_Decls         : List_Id;
!       Defer_Abort       : Boolean;
!       Fin_Id            : out Entity_Id;
!       Finalize_Old_Only : Boolean)
     is
        Acts_As_Clean    : constant Boolean :=
                             Present (Mark_Id)
*************** package body Exp_Ch7 is
*** 1590,1595 ****
--- 1644,1653 ----
  
              Set_Etype (Counter_Id, Counter_Typ);
  
+             if Debug_Generated_Code then
+                Set_Debug_Info_Needed (Counter_Id);
+             end if;
+ 
              --  The counter and its type are inserted before the source
              --  declarations of N.
  
*************** package body Exp_Ch7 is
*** 1712,1720 ****
           --  The default name is _finalizer
  
           else
!             Fin_Id :=
!               Make_Defining_Identifier (Loc,
!                 Chars => New_External_Name (Name_uFinalizer));
  
              --  The visibility semantics of AT_END handlers force a strange
              --  separation of spec and body for stack-related finalizers:
--- 1770,1789 ----
           --  The default name is _finalizer
  
           else
!             --  Generation of a finalization procedure exclusively for 'Old
!             --  interally generated constants requires different name since
!             --  there will need to be multiple finalization routines in the
!             --  same scope. See Build_Finalizer for details.
! 
!             if Finalize_Old_Only then
!                Fin_Id :=
!                  Make_Defining_Identifier (Loc,
!                    Chars => New_External_Name (Name_uFinalizer_Old));
!             else
!                Fin_Id :=
!                  Make_Defining_Identifier (Loc,
!                    Chars => New_External_Name (Name_uFinalizer));
!             end if;
  
              --  The visibility semantics of AT_END handlers force a strange
              --  separation of spec and body for stack-related finalizers:
*************** package body Exp_Ch7 is
*** 1752,1758 ****
              --  exactly twice (once on the normal path, and once for
              --  exceptions/abort), so this won't bloat the code too much.
  
!             Set_Is_Inlined  (Fin_Id);
           end if;
  
           --  Step 2: Creation of the finalizer specification
--- 1821,1831 ----
              --  exactly twice (once on the normal path, and once for
              --  exceptions/abort), so this won't bloat the code too much.
  
!             Set_Is_Inlined (Fin_Id);
!          end if;
! 
!          if Debug_Generated_Code then
!             Set_Debug_Info_Needed (Fin_Id);
           end if;
  
           --  Step 2: Creation of the finalizer specification
*************** package body Exp_Ch7 is
*** 1943,1948 ****
--- 2016,2025 ----
  
           Body_Id := Make_Defining_Identifier (Loc, Chars (Fin_Id));
  
+          if Debug_Generated_Code then
+             Set_Debug_Info_Needed (Body_Id);
+          end if;
+ 
           if For_Package then
              Set_Has_Qualified_Name       (Body_Id);
              Set_Has_Fully_Qualified_Name (Body_Id);
*************** package body Exp_Ch7 is
*** 2009,2016 ****
  
              pragma Assert (Present (Spec_Decls));
  
!             Append_To (Spec_Decls, Fin_Spec);
!             Analyze (Fin_Spec);
  
              --  When the finalizer acts solely as a cleanup routine, the body
              --  is inserted right after the spec.
--- 2086,2111 ----
  
              pragma Assert (Present (Spec_Decls));
  
!             --  It maybe possible that we are finalizing 'Old objects which
!             --  exist in the spec declarations. When this is the case the
!             --  Finalizer_Insert_Node will come before the end of the
!             --  Spec_Decls. So, to mitigate this, we insert the finalizer spec
!             --  earlier at the Finalizer_Insert_Nod instead of appending to the
!             --  end of Spec_Decls to prevent its body appearing before its
!             --  corresponding spec.
! 
!             if Present (Finalizer_Insert_Nod)
!               and then List_Containing (Finalizer_Insert_Nod) = Spec_Decls
!             then
!                Insert_After_And_Analyze (Finalizer_Insert_Nod, Fin_Spec);
!                Finalizer_Insert_Nod := Fin_Spec;
! 
!             --  Otherwise, Finalizer_Insert_Nod is not in Spec_Decls
! 
!             else
!                Append_To (Spec_Decls, Fin_Spec);
!                Analyze (Fin_Spec);
!             end if;
  
              --  When the finalizer acts solely as a cleanup routine, the body
              --  is inserted right after the spec.
*************** package body Exp_Ch7 is
*** 2049,2058 ****
                 --  freeze node, the body must be inserted directly after the
                 --  construct.
  
!                if Nkind_In (Last_Top_Level_Ctrl_Construct,
!                               N_Freeze_Entity,
!                               N_Package_Declaration,
!                               N_Package_Body)
                 then
                    Finalizer_Insert_Nod := Last_Top_Level_Ctrl_Construct;
                 end if;
--- 2144,2151 ----
                 --  freeze node, the body must be inserted directly after the
                 --  construct.
  
!                if Nkind (Last_Top_Level_Ctrl_Construct) in
!                     N_Freeze_Entity | N_Package_Declaration | N_Package_Body
                 then
                    Finalizer_Insert_Nod := Last_Top_Level_Ctrl_Construct;
                 end if;
*************** package body Exp_Ch7 is
*** 2154,2163 ****
  
           Decl := Last_Non_Pragma (Decls);
           while Present (Decl) loop
  
              --  Library-level tagged types
  
!             if Nkind (Decl) = N_Full_Type_Declaration then
                 Typ := Defining_Identifier (Decl);
  
                 --  Ignored Ghost types do not need any cleanup actions because
--- 2247,2272 ----
  
           Decl := Last_Non_Pragma (Decls);
           while Present (Decl) loop
+             --  Depending on the value of flag Finalize_Old_Only we determine
+             --  which objects get finalized as part of the current finalizer
+             --  being built.
+ 
+             --  When True, only temporaries capturing the value of attribute
+             --  'Old are finalized and all other cases are ignored.
+ 
+             --  When False, temporary objects used to capture the value of 'Old
+             --  are ignored and all others are considered.
+ 
+             if Finalize_Old_Only
+                  xor (Nkind (Decl) = N_Object_Declaration
+                        and then Stores_Attribute_Old_Prefix
+                                   (Defining_Identifier (Decl)))
+             then
+                null;
  
              --  Library-level tagged types
  
!             elsif Nkind (Decl) = N_Full_Type_Declaration then
                 Typ := Defining_Identifier (Decl);
  
                 --  Ignored Ghost types do not need any cleanup actions because
*************** package body Exp_Ch7 is
*** 2377,2384 ****
                 if Is_Ignored_Ghost_Entity (Typ) then
                    null;
  
!                elsif (Is_Access_Type (Typ)
!                         and then not Is_Access_Subprogram_Type (Typ)
                          and then Needs_Finalization
                                     (Available_View (Designated_Type (Typ))))
                        or else (Is_Type (Typ) and then Needs_Finalization (Typ))
--- 2486,2492 ----
                 if Is_Ignored_Ghost_Entity (Typ) then
                    null;
  
!                elsif (Is_Access_Object_Type (Typ)
                          and then Needs_Finalization
                                     (Available_View (Designated_Type (Typ))))
                        or else (Is_Type (Typ) and then Needs_Finalization (Typ))
*************** package body Exp_Ch7 is
*** 2625,2630 ****
--- 2733,2742 ----
              Set_Finalization_Master     (Ptr_Typ, Fin_Mas_Id);
              Set_Associated_Storage_Pool (Ptr_Typ, Pool_Id);
  
+             if Debug_Generated_Code then
+                Set_Debug_Info_Needed (Pool_Id);
+             end if;
+ 
              --  Create an explicit free statement. Note that the free uses the
              --  caller's pool expressed as a renaming.
  
*************** package body Exp_Ch7 is
*** 2845,2857 ****
  
                 Result := Next (Stmt);
                 while Present (Result) loop
!                   if not Nkind_In (Result, N_Call_Marker,
!                                            N_Raise_Program_Error)
!                   then
!                      exit;
!                   end if;
  
!                   Result := Next (Result);
                 end loop;
  
                 return Result;
--- 2957,2966 ----
  
                 Result := Next (Stmt);
                 while Present (Result) loop
!                   exit when Nkind (Result) not in
!                               N_Call_Marker | N_Raise_Program_Error;
  
!                   Next (Result);
                 end loop;
  
                 return Result;
*************** package body Exp_Ch7 is
*** 2894,2900 ****
              if No_Initialization (Decl) then
                 if No (Expression (Last_Init)) then
                    loop
!                      Last_Init := Next (Last_Init);
                       exit when No (Last_Init);
                       exit when Nkind (Last_Init) = N_Object_Declaration
                         and then Nkind (Expression (Last_Init)) = N_Reference
--- 3003,3009 ----
              if No_Initialization (Decl) then
                 if No (Expression (Last_Init)) then
                    loop
!                      Next (Last_Init);
                       exit when No (Last_Init);
                       exit when Nkind (Last_Init) = N_Object_Declaration
                         and then Nkind (Expression (Last_Init)) = N_Reference
*************** package body Exp_Ch7 is
*** 3045,3051 ****
           --  Insert the counter after all initialization has been done. The
           --  place of insertion depends on the context.
  
!          if Ekind_In (Obj_Id, E_Constant, E_Variable) then
  
              --  The object is initialized by a build-in-place function call.
              --  The counter insertion point is after the function call.
--- 3154,3160 ----
           --  Insert the counter after all initialization has been done. The
           --  place of insertion depends on the context.
  
!          if Ekind (Obj_Id) in E_Constant | E_Variable then
  
              --  The object is initialized by a build-in-place function call.
              --  The counter insertion point is after the function call.
*************** package body Exp_Ch7 is
*** 3137,3142 ****
--- 3246,3259 ----
  
           Append_To (Finalizer_Stmts, Label);
  
+          --  Disable warnings on Obj_Id. This works around an issue where GCC
+          --  is not able to detect that Obj_Id is protected by a counter and
+          --  emits spurious warnings.
+ 
+          if not Comes_From_Source (Obj_Id) then
+             Set_Warnings_Off (Obj_Id);
+          end if;
+ 
           --  Processing for simple protected objects. Such objects require
           --  manual finalization of their lock managers.
  
*************** package body Exp_Ch7 is
*** 3270,3276 ****
                 end;
              end if;
  
!             if Ekind_In (Obj_Id, E_Constant, E_Variable)
                and then Present (Status_Flag_Or_Transient_Decl (Obj_Id))
              then
                 --  Temporaries created for the purpose of "exporting" a
--- 3387,3393 ----
                 end;
              end if;
  
!             if Ekind (Obj_Id) in E_Constant | E_Variable
                and then Present (Status_Flag_Or_Transient_Decl (Obj_Id))
              then
                 --  Temporaries created for the purpose of "exporting" a
*************** package body Exp_Ch7 is
*** 3362,3368 ****
                 New_Occurrence_Of (DT_Ptr, Loc))));
        end Process_Tagged_Type_Declaration;
  
!    --  Start of processing for Build_Finalizer
  
     begin
        Fin_Id := Empty;
--- 3479,3485 ----
                 New_Occurrence_Of (DT_Ptr, Loc))));
        end Process_Tagged_Type_Declaration;
  
!    --  Start of processing for Build_Finalizer_Helper
  
     begin
        Fin_Id := Empty;
*************** package body Exp_Ch7 is
*** 3509,3518 ****
  
        --  Step 3: Finalizer creation
  
!       if Acts_As_Clean or Has_Ctrl_Objs or Has_Tagged_Types then
           Create_Finalizer;
        end if;
!    end Build_Finalizer;
  
     --------------------------
     -- Build_Finalizer_Call --
--- 3626,3635 ----
  
        --  Step 3: Finalizer creation
  
!       if Acts_As_Clean or else Has_Ctrl_Objs or else Has_Tagged_Types then
           Create_Finalizer;
        end if;
!    end Build_Finalizer_Helper;
  
     --------------------------
     -- Build_Finalizer_Call --
*************** package body Exp_Ch7 is
*** 3596,3601 ****
--- 3713,4180 ----
     end Build_Finalizer_Call;
  
     ---------------------
+    -- Build_Finalizer --
+    ---------------------
+ 
+    procedure Build_Finalizer
+      (N           : Node_Id;
+       Clean_Stmts : List_Id;
+       Mark_Id     : Entity_Id;
+       Top_Decls   : List_Id;
+       Defer_Abort : Boolean;
+       Fin_Id      : out Entity_Id)
+    is
+       Def_Ent : constant Entity_Id  := Unique_Defining_Entity (N);
+       Loc     : constant Source_Ptr := Sloc (N);
+ 
+       --  Declarations used for the creation of _finalization_controller
+ 
+       Fin_Old_Id           : Entity_Id := Empty;
+       Fin_Controller_Id    : Entity_Id := Empty;
+       Fin_Controller_Decls : List_Id;
+       Fin_Controller_Stmts : List_Id;
+       Fin_Controller_Body  : Node_Id   := Empty;
+       Fin_Controller_Spec  : Node_Id   := Empty;
+       Postconditions_Call  : Node_Id   := Empty;
+ 
+       --  Defining identifiers for local objects used to store exception info
+ 
+       Raised_Post_Exception_Id         : Entity_Id := Empty;
+       Raised_Finalization_Exception_Id : Entity_Id := Empty;
+       Saved_Exception_Id               : Entity_Id := Empty;
+ 
+    --  Start of processing for Build_Finalizer
+ 
+    begin
+       --  Create the general finalization routine
+ 
+       Build_Finalizer_Helper
+         (N                 => N,
+          Clean_Stmts       => Clean_Stmts,
+          Mark_Id           => Mark_Id,
+          Top_Decls         => Top_Decls,
+          Defer_Abort       => Defer_Abort,
+          Fin_Id            => Fin_Id,
+          Finalize_Old_Only => False);
+ 
+       --  When postconditions are present, expansion gets much more complicated
+       --  due to both the fact that they must be called after finalization and
+       --  that finalization of 'Old objects must occur after the postconditions
+       --  get checked.
+ 
+       --  Additionally, exceptions between general finalization and 'Old
+       --  finalization must be propagated correctly and exceptions which happen
+       --  during _postconditions need to be saved and reraised after
+       --  finalization of 'Old objects.
+ 
+       --  Generate:
+       --
+       --    Postcond_Enabled := False;
+       --
+       --    procedure _finalization_controller is
+       --
+       --       --  Exception capturing and tracking
+       --
+       --       Saved_Exception               : Exception_Occurrence;
+       --       Raised_Post_Exception         : Boolean := False;
+       --       Raised_Finalization_Exception : Boolean := False;
+       --
+       --    --  Start of processing for _finalization_controller
+       --
+       --    begin
+       --       --  Perform general finalization
+       --
+       --       begin
+       --          _finalizer;
+       --       exception
+       --          when others =>
+       --             --  Save the exception
+       --
+       --             Raised_Finalization_Exception := True;
+       --             Save_Occurrence
+       --               (Saved_Exception, Get_Current_Excep.all);
+       --       end;
+       --
+       --       --  Perform postcondition checks after general finalization, but
+       --       --  before finalization of 'Old related objects.
+       --
+       --       if not Raised_Finalization_Exception then
+       --          begin
+       --             --  Re-enable postconditions and check them
+       --
+       --             Postcond_Enabled := True;
+       --             _postconditions [(Result_Obj_For_Postcond[.all])];
+       --          exception
+       --             when others =>
+       --                --  Save the exception
+       --
+       --                Raised_Post_Exception := True;
+       --                Save_Occurrence
+       --                  (Saved_Exception, Get_Current_Excep.all);
+       --          end;
+       --       end if;
+       --
+       --       --  Finally finalize 'Old related objects
+       --
+       --       begin
+       --          _finalizer_old;
+       --       exception
+       --          when others =>
+       --             --  Reraise the previous finalization error if there is
+       --             --  one.
+       --
+       --             if Raised_Finalization_Exception then
+       --                Reraise_Occurrence (Saved_Exception);
+       --             end if;
+       --
+       --             --  Otherwise, reraise the current one
+       --
+       --             raise;
+       --       end;
+       --
+       --       --  Reraise any saved exception
+       --
+       --       if Raised_Finalization_Exception
+       --            or else Raised_Post_Exception
+       --       then
+       --          Reraise_Occurrence (Saved_Exception);
+       --       end if;
+       --    end _finalization_controller;
+ 
+       if Nkind (N) = N_Subprogram_Body
+         and then Present (Postconditions_Proc (Def_Ent))
+       then
+          Fin_Controller_Stmts := New_List;
+          Fin_Controller_Decls := New_List;
+ 
+          --  Build the 'Old finalizer
+ 
+          Build_Finalizer_Helper
+            (N                 => N,
+             Clean_Stmts       => Empty_List,
+             Mark_Id           => Mark_Id,
+             Top_Decls         => Top_Decls,
+             Defer_Abort       => Defer_Abort,
+             Fin_Id            => Fin_Old_Id,
+             Finalize_Old_Only => True);
+ 
+          --  Create local declarations for _finalization_controller needed for
+          --  saving exceptions.
+          --
+          --  Generate:
+          --
+          --    Saved_Exception               : Exception_Occurrence;
+          --    Raised_Post_Exception         : Boolean := False;
+          --    Raised_Finalization_Exception : Boolean := False;
+ 
+          Saved_Exception_Id               := Make_Temporary (Loc, 'S');
+          Raised_Post_Exception_Id         := Make_Temporary (Loc, 'P');
+          Raised_Finalization_Exception_Id := Make_Temporary (Loc, 'F');
+ 
+          Append_List_To (Fin_Controller_Decls, New_List (
+            Make_Object_Declaration (Loc,
+              Defining_Identifier => Saved_Exception_Id,
+              Object_Definition   =>
+                New_Occurrence_Of (RTE (RE_Exception_Occurrence), Loc)),
+            Make_Object_Declaration (Loc,
+              Defining_Identifier => Raised_Post_Exception_Id,
+              Object_Definition   => New_Occurrence_Of (Standard_Boolean, Loc),
+              Expression          => New_Occurrence_Of (Standard_False, Loc)),
+            Make_Object_Declaration (Loc,
+              Defining_Identifier => Raised_Finalization_Exception_Id,
+              Object_Definition   => New_Occurrence_Of (Standard_Boolean, Loc),
+              Expression          => New_Occurrence_Of (Standard_False, Loc))));
+ 
+          --  Call _finalizer and save any exceptions which occur
+ 
+          --  Generate:
+          --
+          --    begin
+          --       _finalizer;
+          --    exception
+          --       when others =>
+          --          Raised_Finalization_Exception := True;
+          --          Save_Occurrence
+          --            (Saved_Exception, Get_Current_Excep.all);
+          --    end;
+ 
+          if Present (Fin_Id) then
+             Append_To (Fin_Controller_Stmts,
+               Make_Block_Statement (Loc,
+                 Handled_Statement_Sequence =>
+                   Make_Handled_Sequence_Of_Statements (Loc,
+                     Statements         => New_List (
+                       Make_Procedure_Call_Statement (Loc,
+                         Name => New_Occurrence_Of (Fin_Id, Loc))),
+                     Exception_Handlers => New_List (
+                       Make_Exception_Handler (Loc,
+                         Exception_Choices => New_List (
+                           Make_Others_Choice (Loc)),
+                         Statements        => New_List (
+                           Make_Assignment_Statement (Loc,
+                             Name       =>
+                               New_Occurrence_Of
+                                 (Raised_Finalization_Exception_Id, Loc),
+                             Expression =>
+                               New_Occurrence_Of (Standard_True, Loc)),
+                           Make_Procedure_Call_Statement (Loc,
+                              Name                   =>
+                                New_Occurrence_Of
+                                  (RTE (RE_Save_Occurrence), Loc),
+                              Parameter_Associations => New_List (
+                                New_Occurrence_Of
+                                  (Saved_Exception_Id, Loc),
+                                Make_Explicit_Dereference (Loc,
+                                  Prefix =>
+                                    Make_Function_Call (Loc,
+                                      Name =>
+                                        Make_Explicit_Dereference (Loc,
+                                          Prefix =>
+                                            New_Occurrence_Of
+                                              (RTE (RE_Get_Current_Excep),
+                                               Loc))))))))))));
+          end if;
+ 
+          --  Create the call to postconditions based on the kind of the current
+          --  subprogram, and the type of the Result_Obj_For_Postcond.
+ 
+          --  Generate:
+          --
+          --    _postconditions (Result_Obj_For_Postcond[.all]);
+          --
+          --   or
+          --
+          --    _postconditions;
+ 
+          if Ekind (Def_Ent) = E_Procedure then
+             Postconditions_Call :=
+               Make_Procedure_Call_Statement (Loc,
+                 Name =>
+                   New_Occurrence_Of
+                     (Postconditions_Proc (Def_Ent), Loc));
+          else
+             Postconditions_Call :=
+               Make_Procedure_Call_Statement (Loc,
+                 Name                   =>
+                   New_Occurrence_Of
+                     (Postconditions_Proc (Def_Ent), Loc),
+                 Parameter_Associations => New_List (
+                   (if Is_Elementary_Type (Etype (Def_Ent)) then
+                       New_Occurrence_Of
+                         (Get_Result_Object_For_Postcond
+                           (Def_Ent), Loc)
+                    else
+                       Make_Explicit_Dereference (Loc,
+                         New_Occurrence_Of
+                           (Get_Result_Object_For_Postcond
+                             (Def_Ent), Loc)))));
+          end if;
+ 
+          --  Call _postconditions when no general finalization exceptions have
+          --  occured taking care to enable the postconditions and save any
+          --  exception occurrences.
+ 
+          --  Generate:
+          --
+          --    if not Raised_Finalization_Exception then
+          --       begin
+          --          Postcond_Enabled := True;
+          --          _postconditions [(Result_Obj_For_Postcond[.all])];
+          --       exception
+          --          when others =>
+          --             Raised_Post_Exception := True;
+          --             Save_Occurrence
+          --               (Saved_Exception, Get_Current_Excep.all);
+          --       end;
+          --    end if;
+ 
+          Append_To (Fin_Controller_Stmts,
+            Make_If_Statement (Loc,
+              Condition       =>
+                Make_Op_Not (Loc,
+                  Right_Opnd =>
+                    New_Occurrence_Of
+                      (Raised_Finalization_Exception_Id, Loc)),
+              Then_Statements => New_List (
+                Make_Block_Statement (Loc,
+                  Handled_Statement_Sequence =>
+                    Make_Handled_Sequence_Of_Statements (Loc,
+                      Statements         => New_List (
+                        Make_Assignment_Statement (Loc,
+                          Name       =>
+                            New_Occurrence_Of
+                              (Get_Postcond_Enabled (Def_Ent), Loc),
+                          Expression =>
+                             New_Occurrence_Of
+                               (Standard_True, Loc)),
+                        Postconditions_Call),
+                      Exception_Handlers => New_List (
+                        Make_Exception_Handler (Loc,
+                          Exception_Choices => New_List (
+                            Make_Others_Choice (Loc)),
+                          Statements        => New_List (
+                            Make_Assignment_Statement (Loc,
+                              Name       =>
+                                New_Occurrence_Of
+                                  (Raised_Post_Exception_Id, Loc),
+                              Expression =>
+                                New_Occurrence_Of (Standard_True, Loc)),
+                            Make_Procedure_Call_Statement (Loc,
+                               Name                   =>
+                                 New_Occurrence_Of
+                                   (RTE (RE_Save_Occurrence), Loc),
+                               Parameter_Associations => New_List (
+                                 New_Occurrence_Of
+                                   (Saved_Exception_Id, Loc),
+                                 Make_Explicit_Dereference (Loc,
+                                   Prefix =>
+                                     Make_Function_Call (Loc,
+                                       Name =>
+                                         Make_Explicit_Dereference (Loc,
+                                           Prefix =>
+                                             New_Occurrence_Of
+                                               (RTE (RE_Get_Current_Excep),
+                                                Loc))))))))))))));
+ 
+          --  Call _finalizer_old and reraise any exception that occurred during
+          --  initial finalization within the exception handler. Otherwise,
+          --  propagate the current exception.
+ 
+          --  Generate:
+          --
+          --    begin
+          --       _finalizer_old;
+          --    exception
+          --       when others =>
+          --          if Raised_Finalization_Exception then
+          --             Reraise_Occurrence (Saved_Exception);
+          --          end if;
+          --          raise;
+          --    end;
+ 
+          if Present (Fin_Old_Id) then
+             Append_To (Fin_Controller_Stmts,
+               Make_Block_Statement (Loc,
+                 Handled_Statement_Sequence =>
+                   Make_Handled_Sequence_Of_Statements (Loc,
+                     Statements         => New_List (
+                       Make_Procedure_Call_Statement (Loc,
+                         Name => New_Occurrence_Of (Fin_Old_Id, Loc))),
+                     Exception_Handlers => New_List (
+                       Make_Exception_Handler (Loc,
+                         Exception_Choices => New_List (
+                           Make_Others_Choice (Loc)),
+                         Statements        => New_List (
+                           Make_If_Statement (Loc,
+                             Condition       =>
+                               New_Occurrence_Of
+                                 (Raised_Finalization_Exception_Id, Loc),
+                             Then_Statements => New_List (
+                               Make_Procedure_Call_Statement (Loc,
+                                 Name                   =>
+                                   New_Occurrence_Of
+                                     (RTE (RE_Reraise_Occurrence), Loc),
+                                 Parameter_Associations => New_List (
+                                   New_Occurrence_Of
+                                     (Saved_Exception_Id, Loc))))),
+                           Make_Raise_Statement (Loc)))))));
+          end if;
+ 
+          --  Once finalization is complete reraise any pending exceptions
+ 
+          --  Generate:
+          --
+          --    if Raised_Post_Exception
+          --      or else Raised_Finalization_Exception
+          --    then
+          --       Reraise_Occurrence (Saved_Exception);
+          --    end if;
+ 
+          Append_To (Fin_Controller_Stmts,
+            Make_If_Statement (Loc,
+              Condition       =>
+                Make_Or_Else (Loc,
+                  Left_Opnd  =>
+                    New_Occurrence_Of
+                      (Raised_Post_Exception_Id, Loc),
+                  Right_Opnd =>
+                    New_Occurrence_Of
+                      (Raised_Finalization_Exception_Id, Loc)),
+              Then_Statements => New_List (
+                Make_Procedure_Call_Statement (Loc,
+                  Name            =>
+                    New_Occurrence_Of (RTE (RE_Reraise_Occurrence), Loc),
+                  Parameter_Associations => New_List (
+                    New_Occurrence_Of
+                      (Saved_Exception_Id, Loc))))));
+ 
+          --  Make the finalization controller subprogram body and declaration.
+ 
+          --  Generate:
+          --    procedure _finalization_controller;
+          --
+          --    procedure _finalization_controller is
+          --    begin
+          --       [Fin_Controller_Stmts];
+          --    end;
+ 
+          Fin_Controller_Id :=
+            Make_Defining_Identifier (Loc,
+              Chars => New_External_Name (Name_uFinalization_Controller));
+ 
+          Fin_Controller_Spec :=
+            Make_Subprogram_Declaration (Loc,
+              Specification =>
+                Make_Procedure_Specification (Loc,
+                  Defining_Unit_Name => Fin_Controller_Id));
+ 
+          Fin_Controller_Body :=
+            Make_Subprogram_Body (Loc,
+              Specification              =>
+                Make_Procedure_Specification (Loc,
+                  Defining_Unit_Name =>
+                    Make_Defining_Identifier (Loc, Chars (Fin_Controller_Id))),
+              Declarations               => Fin_Controller_Decls,
+              Handled_Statement_Sequence =>
+                Make_Handled_Sequence_Of_Statements (Loc,
+                  Statements => Fin_Controller_Stmts));
+ 
+          --  Disable _postconditions calls which get generated before return
+          --  statements to delay their evaluation until after finalization.
+ 
+          --  This is done by way of the local Postcond_Enabled object which is
+          --  initially assigned to True - we then create an assignment within
+          --  the subprogram's declaration to make it False and assign it back
+          --  to True before _postconditions is called within
+          --  _finalization_controller.
+ 
+          --  Generate:
+          --
+          --    Postcond_Enable := False;
+ 
+          Append_To (Top_Decls,
+            Make_Assignment_Statement (Loc,
+              Name       =>
+                New_Occurrence_Of
+                  (Get_Postcond_Enabled (Def_Ent), Loc),
+              Expression =>
+                New_Occurrence_Of
+                  (Standard_False, Loc)));
+ 
+          --  Add the subprogram to the list of declarations an analyze it
+ 
+          Append_To (Top_Decls, Fin_Controller_Spec);
+          Analyze (Fin_Controller_Spec);
+          Insert_After (Fin_Controller_Spec, Fin_Controller_Body);
+          Analyze (Fin_Controller_Body, Suppress => All_Checks);
+ 
+          --  Return the finalization controller as the result Fin_Id
+ 
+          Fin_Id := Fin_Controller_Id;
+       end if;
+    end Build_Finalizer;
+ 
+    ---------------------
     -- Build_Late_Proc --
     ---------------------
  
*************** package body Exp_Ch7 is
*** 3713,3718 ****
--- 4292,4301 ----
            Defining_Identifier => Data.Raised_Id,
            Object_Definition   => New_Occurrence_Of (Standard_Boolean, Loc),
            Expression          => New_Occurrence_Of (Standard_False, Loc)));
+ 
+       if Debug_Generated_Code then
+          Set_Debug_Info_Needed (Data.Raised_Id);
+       end if;
     end Build_Object_Declarations;
  
     ---------------------------
*************** package body Exp_Ch7 is
*** 4081,4100 ****
        procedure Reset_Scopes_To_Block_Elab_Proc (L : List_Id) is
           Id   : Entity_Id;
           Stat : Node_Id;
  
        begin
           Stat := First (L);
           while Present (Stat) loop
              case Nkind (Stat) is
                 when N_Block_Statement =>
!                   Id := Entity (Identifier (Stat));
  
!                   --  The Scope of this block needs to be reset to the new
!                   --  procedure if the block contains nested subprograms.
  
!                   if Present (Id) and then Contains_Subprogram (Id) then
!                      Set_Block_Elab_Proc;
!                      Set_Scope (Id, Block_Elab_Proc);
                    end if;
  
                 when N_Loop_Statement =>
--- 4664,4686 ----
        procedure Reset_Scopes_To_Block_Elab_Proc (L : List_Id) is
           Id   : Entity_Id;
           Stat : Node_Id;
+          Node : Node_Id;
  
        begin
           Stat := First (L);
           while Present (Stat) loop
              case Nkind (Stat) is
                 when N_Block_Statement =>
!                   if Present (Identifier (Stat)) then
!                      Id := Entity (Identifier (Stat));
  
!                      --  The Scope of this block needs to be reset to the new
!                      --  procedure if the block contains nested subprograms.
  
!                      if Present (Id) and then Contains_Subprogram (Id) then
!                         Set_Block_Elab_Proc;
!                         Set_Scope (Id, Block_Elab_Proc);
!                      end if;
                    end if;
  
                 when N_Loop_Statement =>
*************** package body Exp_Ch7 is
*** 4117,4150 ****
  
                 when N_If_Statement =>
                    Reset_Scopes_To_Block_Elab_Proc (Then_Statements (Stat));
- 
                    Reset_Scopes_To_Block_Elab_Proc (Else_Statements (Stat));
  
!                   declare
!                      Elif : Node_Id;
! 
!                   begin
!                      Elif := First (Elsif_Parts (Stat));
!                      while Present (Elif) loop
!                         Reset_Scopes_To_Block_Elab_Proc
!                           (Then_Statements (Elif));
! 
!                         Next (Elif);
!                      end loop;
!                   end;
  
                 when N_Case_Statement =>
!                   declare
!                      Alt : Node_Id;
! 
!                   begin
!                      Alt := First (Alternatives (Stat));
!                      while Present (Alt) loop
!                         Reset_Scopes_To_Block_Elab_Proc (Statements (Alt));
! 
!                         Next (Alt);
!                      end loop;
!                   end;
  
                 --  Reset the Scope of a subprogram occurring at the top level
  
--- 4703,4722 ----
  
                 when N_If_Statement =>
                    Reset_Scopes_To_Block_Elab_Proc (Then_Statements (Stat));
                    Reset_Scopes_To_Block_Elab_Proc (Else_Statements (Stat));
  
!                   Node := First (Elsif_Parts (Stat));
!                   while Present (Node) loop
!                      Reset_Scopes_To_Block_Elab_Proc (Then_Statements (Node));
!                      Next (Node);
!                   end loop;
  
                 when N_Case_Statement =>
!                   Node := First (Alternatives (Stat));
!                   while Present (Node) loop
!                      Reset_Scopes_To_Block_Elab_Proc (Statements (Node));
!                      Next (Node);
!                   end loop;
  
                 --  Reset the Scope of a subprogram occurring at the top level
  
*************** package body Exp_Ch7 is
*** 4238,4243 ****
--- 4810,4826 ----
              then
                 Unnest_Block (Decl_Or_Stmt);
  
+             --  If-statements may contain subprogram bodies at the outer level
+             --  of their statement lists, and the subprograms may make up-level
+             --  references (such as to objects declared in the same statement
+             --  list). Unlike block and loop cases, however, we don't have an
+             --  entity on which to test the Contains_Subprogram flag, so
+             --  Unnest_If_Statement must traverse the statement lists to
+             --  determine whether there are nested subprograms present.
+ 
+             elsif Nkind (Decl_Or_Stmt) = N_If_Statement then
+                Unnest_If_Statement (Decl_Or_Stmt);
+ 
              elsif Nkind (Decl_Or_Stmt) = N_Loop_Statement then
                 declare
                    Id : constant Entity_Id :=
*************** package body Exp_Ch7 is
*** 4361,4367 ****
           if Is_Subprogram (E) then
              return True;
  
!          elsif Ekind_In (E, E_Block, E_Loop)
             and then Contains_Subprogram (E)
           then
              return True;
--- 4944,4950 ----
           if Is_Subprogram (E) then
              return True;
  
!          elsif Ekind (E) in E_Block | E_Loop
             and then Contains_Subprogram (E)
           then
              return True;
*************** package body Exp_Ch7 is
*** 4393,4399 ****
  
        Ftyp := Etype (Fent);
  
!       if Nkind_In (Arg, N_Type_Conversion, N_Unchecked_Type_Conversion) then
           Atyp := Entity (Subtype_Mark (Arg));
        else
           Atyp := Etype (Arg);
--- 4976,4982 ----
  
        Ftyp := Etype (Fent);
  
!       if Nkind (Arg) in N_Type_Conversion | N_Unchecked_Type_Conversion then
           Atyp := Entity (Subtype_Mark (Arg));
        else
           Atyp := Etype (Arg);
*************** package body Exp_Ch7 is
*** 4414,4420 ****
        --  Make_Init_Call, set the target type to the type of the formal
        --  directly, to avoid spurious typing problems.
  
!       elsif Nkind_In (Arg, N_Unchecked_Type_Conversion, N_Type_Conversion)
          and then not Is_Class_Wide_Type (Atyp)
        then
           Set_Subtype_Mark (Arg, New_Occurrence_Of (Ftyp, Sloc (Arg)));
--- 4997,5003 ----
        --  Make_Init_Call, set the target type to the type of the formal
        --  directly, to avoid spurious typing problems.
  
!       elsif Nkind (Arg) in N_Unchecked_Type_Conversion | N_Type_Conversion
          and then not Is_Class_Wide_Type (Atyp)
        then
           Set_Subtype_Mark (Arg, New_Occurrence_Of (Ftyp, Sloc (Arg)));
*************** package body Exp_Ch7 is
*** 4633,4644 ****
  
        function Is_Package_Or_Subprogram (Id : Entity_Id) return Boolean is
        begin
!          return Ekind_In (Id, E_Entry,
!                               E_Entry_Family,
!                               E_Function,
!                               E_Package,
!                               E_Procedure,
!                               E_Subprogram_Body);
        end Is_Package_Or_Subprogram;
  
        --  Local variables
--- 5216,5227 ----
  
        function Is_Package_Or_Subprogram (Id : Entity_Id) return Boolean is
        begin
!          return Ekind (Id) in E_Entry
!                             | E_Entry_Family
!                             | E_Function
!                             | E_Package
!                             | E_Procedure
!                             | E_Subprogram_Body;
        end Is_Package_Or_Subprogram;
  
        --  Local variables
*************** package body Exp_Ch7 is
*** 4711,4721 ****
     ----------------------------
  
     procedure Expand_Cleanup_Actions (N : Node_Id) is
!       pragma Assert (Nkind_In (N, N_Block_Statement,
!                                   N_Entry_Body,
!                                   N_Extended_Return_Statement,
!                                   N_Subprogram_Body,
!                                   N_Task_Body));
  
        Scop : constant Entity_Id := Current_Scope;
  
--- 5294,5305 ----
     ----------------------------
  
     procedure Expand_Cleanup_Actions (N : Node_Id) is
!       pragma Assert
!         (Nkind (N) in N_Block_Statement
!                     | N_Entry_Body
!                     | N_Extended_Return_Statement
!                     | N_Subprogram_Body
!                     | N_Task_Body);
  
        Scop : constant Entity_Id := Current_Scope;
  
*************** package body Exp_Ch7 is
*** 4754,4759 ****
--- 5338,5349 ----
                                   Nkind (N) = N_Block_Statement
                                     and then Present (Cleanup_Actions (N));
  
+       Has_Postcondition      : constant Boolean :=
+                                  Nkind (N) = N_Subprogram_Body
+                                    and then Present
+                                               (Postconditions_Proc
+                                                 (Unique_Defining_Entity (N)));
+ 
        Actions_Required       : constant Boolean :=
                                   Requires_Cleanup_Actions (N, True)
                                     or else Is_Asynchronous_Call
*************** package body Exp_Ch7 is
*** 4887,4893 ****
           Fin_Id    : Entity_Id;
           Mark      : Entity_Id := Empty;
           New_Decls : List_Id;
-          Old_Poll  : Boolean;
  
        begin
           --  If we are generating expanded code for debugging purposes, use the
--- 5477,5482 ----
*************** package body Exp_Ch7 is
*** 4904,4915 ****
              Loc := No_Location;
           end if;
  
-          --  Set polling off. The finalization and cleanup code is executed
-          --  with aborts deferred.
- 
-          Old_Poll := Polling_Required;
-          Polling_Required := False;
- 
           --  A task activation call has already been built for a task
           --  allocation block.
  
--- 5493,5498 ----
*************** package body Exp_Ch7 is
*** 4975,4980 ****
--- 5558,5591 ----
              end;
           end if;
  
+          --  Move the _postconditions subprogram declaration and its associated
+          --  objects into the declarations section so that it is callable
+          --  within _postconditions.
+ 
+          if Has_Postcondition then
+             declare
+                Decl      : Node_Id;
+                Prev_Decl : Node_Id;
+ 
+             begin
+                Decl :=
+                  Prev (Subprogram_Body
+                         (Postconditions_Proc (Current_Subprogram)));
+                while Present (Decl) loop
+                   Prev_Decl := Prev (Decl);
+ 
+                   Remove (Decl);
+                   Prepend_To (New_Decls, Decl);
+ 
+                   exit when Nkind (Decl) = N_Subprogram_Declaration
+                               and then Chars (Corresponding_Body (Decl))
+                                          = Name_uPostconditions;
+ 
+                   Decl := Prev_Decl;
+                end loop;
+             end;
+          end if;
+ 
           --  Ensure the presence of a declaration list in order to successfully
           --  append all original statements to it.
  
*************** package body Exp_Ch7 is
*** 5018,5027 ****
           if Present (Fin_Id) then
              Build_Finalizer_Call (N, Fin_Id);
           end if;
- 
-          --  Restore saved polling mode
- 
-          Polling_Required := Old_Poll;
        end;
     end Expand_Cleanup_Actions;
  
--- 5629,5634 ----
*************** package body Exp_Ch7 is
*** 5305,5313 ****
                 --  of the alternative.
  
                 if Nkind (Parent (Curr)) = N_Entry_Call_Alternative
!                  and then Nkind_In (Parent (Parent (Curr)),
!                                     N_Conditional_Entry_Call,
!                                     N_Timed_Entry_Call)
                 then
                    return Parent (Parent (Curr));
  
--- 5912,5919 ----
                 --  of the alternative.
  
                 if Nkind (Parent (Curr)) = N_Entry_Call_Alternative
!                  and then Nkind (Parent (Parent (Curr))) in
!                             N_Conditional_Entry_Call | N_Timed_Entry_Call
                 then
                    return Parent (Parent (Curr));
  
*************** package body Exp_Ch7 is
*** 5648,5657 ****
                 --      <or>
                 --    Hook := Obj_Id'Unrestricted_Access;
  
!                if Ekind_In (Obj_Id, E_Constant, E_Variable)
!                  and then Present (Last_Aggregate_Assignment (Obj_Id))
!                then
!                   Hook_Insert := Last_Aggregate_Assignment (Obj_Id);
  
                 --  Otherwise the hook seizes the related object immediately
  
--- 6254,6271 ----
                 --      <or>
                 --    Hook := Obj_Id'Unrestricted_Access;
  
!                --  Similarly if we have a build in place call: we must
!                --  initialize Hook only after the call has happened, otherwise
!                --  Obj_Id will not be initialized yet.
! 
!                if Ekind (Obj_Id) in E_Constant | E_Variable then
!                   if Present (Last_Aggregate_Assignment (Obj_Id)) then
!                      Hook_Insert := Last_Aggregate_Assignment (Obj_Id);
!                   elsif Present (BIP_Initialization_Call (Obj_Id)) then
!                      Hook_Insert := BIP_Initialization_Call (Obj_Id);
!                   else
!                      Hook_Insert := Obj_Decl;
!                   end if;
  
                 --  Otherwise the hook seizes the related object immediately
  
*************** package body Exp_Ch7 is
*** 5720,5727 ****
           Blk_Decl  : Node_Id := Empty;
           Blk_Decls : List_Id := No_List;
           Blk_Ins   : Node_Id;
!          Blk_Stmts : List_Id;
!          Loc       : Source_Ptr;
           Obj_Decl  : Node_Id;
  
        --  Start of processing for Process_Transients_In_Scope
--- 6334,6341 ----
           Blk_Decl  : Node_Id := Empty;
           Blk_Decls : List_Id := No_List;
           Blk_Ins   : Node_Id;
!          Blk_Stmts : List_Id := No_List;
!          Loc       : Source_Ptr := No_Location;
           Obj_Decl  : Node_Id;
  
        --  Start of processing for Process_Transients_In_Scope
*************** package body Exp_Ch7 is
*** 5854,5859 ****
--- 6468,6474 ----
                 --  Construct all necessary circuitry to hook and finalize a
                 --  single transient object.
  
+                pragma Assert (Present (Blk_Stmts));
                 Process_Transient_In_Scope
                   (Obj_Decl  => Obj_Decl,
                    Blk_Data  => Blk_Data,
*************** package body Exp_Ch7 is
*** 5875,5880 ****
--- 6490,6498 ----
  
           if Present (Blk_Decl) then
  
+             pragma Assert (Present (Blk_Stmts));
+             pragma Assert (Loc /= No_Location);
+ 
              --  Note that this Abort_Undefer does not require a extra block or
              --  an AT_END handler because each finalization exception is caught
              --  in its own corresponding finalization block. As a result, the
*************** package body Exp_Ch7 is
*** 5914,5920 ****
  
     begin
        --  Nothing to do if the scope does not manage the secondary stack or
!       --  does not contain meaninful actions for insertion.
  
        if not Manage_SS
          and then No (Act_Before)
--- 6532,6538 ----
  
     begin
        --  Nothing to do if the scope does not manage the secondary stack or
!       --  does not contain meaningful actions for insertion.
  
        if not Manage_SS
          and then No (Act_Before)
*************** package body Exp_Ch7 is
*** 6138,6159 ****
        end if;
     end Make_Adjust_Call;
  
-    ----------------------
-    -- Make_Detach_Call --
-    ----------------------
- 
-    function Make_Detach_Call (Obj_Ref : Node_Id) return Node_Id is
-       Loc : constant Source_Ptr := Sloc (Obj_Ref);
- 
-    begin
-       return
-         Make_Procedure_Call_Statement (Loc,
-           Name                   =>
-             New_Occurrence_Of (RTE (RE_Detach), Loc),
-           Parameter_Associations => New_List (
-             Unchecked_Convert_To (RTE (RE_Root_Controlled_Ptr), Obj_Ref)));
-    end Make_Detach_Call;
- 
     ---------------
     -- Make_Call --
     ---------------
--- 6756,6761 ----
*************** package body Exp_Ch7 is
*** 6785,6806 ****
  
           Init_Call := Build_Initialization_Call;
  
!          --  Only create finalization block if there is a non-trivial
!          --  call to initialization.
  
!          if Present (Init_Call)
!            and then Nkind (Init_Call) /= N_Null_Statement
           then
!             Init_Loop :=
!               Make_Block_Statement (Loc,
!                 Handled_Statement_Sequence =>
!                   Make_Handled_Sequence_Of_Statements (Loc,
!                     Statements         => New_List (Init_Call),
!                     Exception_Handlers => New_List (
!                       Make_Exception_Handler (Loc,
!                         Exception_Choices => New_List (
!                           Make_Others_Choice (Loc)),
!                         Statements        => New_List (Final_Block)))));
  
              Append_To (Statements (Handled_Statement_Sequence (Init_Loop)),
                Make_Assignment_Statement (Loc,
--- 7387,7435 ----
  
           Init_Call := Build_Initialization_Call;
  
!          --  Only create finalization block if there is a nontrivial call
!          --  to initialization or a Default_Initial_Condition check to be
!          --  performed.
  
!          if (Present (Init_Call)
!               and then Nkind (Init_Call) /= N_Null_Statement)
!            or else
!              (Has_DIC (Comp_Typ)
!                and then not GNATprove_Mode
!                and then Present (DIC_Procedure (Comp_Typ))
!                and then not Has_Null_Body (DIC_Procedure (Comp_Typ)))
           then
!             declare
!                Init_Stmts : constant List_Id := New_List;
! 
!             begin
!                if Present (Init_Call) then
!                   Append_To (Init_Stmts, Init_Call);
!                end if;
! 
!                if Has_DIC (Comp_Typ)
!                  and then Present (DIC_Procedure (Comp_Typ))
!                then
!                   Append_To
!                     (Init_Stmts,
!                      Build_DIC_Call (Loc,
!                          Make_Indexed_Component (Loc,
!                            Prefix      => Make_Identifier (Loc, Name_V),
!                            Expressions => New_References_To (Index_List, Loc)),
!                          Comp_Typ));
!                end if;
! 
!                Init_Loop :=
!                  Make_Block_Statement (Loc,
!                    Handled_Statement_Sequence =>
!                      Make_Handled_Sequence_Of_Statements (Loc,
!                        Statements         => Init_Stmts,
!                        Exception_Handlers => New_List (
!                          Make_Exception_Handler (Loc,
!                            Exception_Choices => New_List (
!                              Make_Others_Choice (Loc)),
!                            Statements        => New_List (Final_Block)))));
!             end;
  
              Append_To (Statements (Handled_Statement_Sequence (Init_Loop)),
                Make_Assignment_Statement (Loc,
*************** package body Exp_Ch7 is
*** 6866,6871 ****
--- 7495,7504 ----
                   Make_Handled_Sequence_Of_Statements (Loc,
                     Statements => New_List (Init_Loop)));
  
+             if Debug_Generated_Code then
+                Set_Debug_Info_Needed (Counter_Id);
+             end if;
+ 
           --  Otherwise previous errors or a missing full view may prevent the
           --  proper freezing of the component type. If this is the case, there
           --  is no [Deep_]Initialize primitive to call.
*************** package body Exp_Ch7 is
*** 8285,8296 ****
           Ref  := Convert_Concurrent (Ref, Typ);
  
        elsif Is_Private_Type (Typ)
!         and then Present (Full_View (Typ))
!         and then Is_Concurrent_Type (Full_View (Typ))
        then
!          Utyp := Corresponding_Record_Type (Full_View (Typ));
           Atyp := Typ;
!          Ref  := Convert_Concurrent (Ref, Full_View (Typ));
  
        else
           Utyp := Typ;
--- 8918,8929 ----
           Ref  := Convert_Concurrent (Ref, Typ);
  
        elsif Is_Private_Type (Typ)
!         and then Present (Underlying_Type (Typ))
!         and then Is_Concurrent_Type (Underlying_Type (Typ))
        then
!          Utyp := Corresponding_Record_Type (Underlying_Type (Typ));
           Atyp := Typ;
!          Ref  := Convert_Concurrent (Ref, Underlying_Type (Typ));
  
        else
           Utyp := Typ;
*************** package body Exp_Ch7 is
*** 8388,8393 ****
--- 9021,9044 ----
        elsif Is_Tagged_Type (Utyp) then
           Fin_Id := Find_Optional_Prim_Op (Utyp, TSS_Deep_Finalize);
  
+       --  Protected types: these also require finalization even though they
+       --  are not marked controlled explicitly.
+ 
+       elsif Is_Protected_Type (Typ) then
+          --  Protected objects do not need to be finalized on restricted
+          --  runtimes.
+ 
+          if Restricted_Profile then
+             return Empty;
+ 
+          --  ??? Only handle the simple case for now. Will not support a record
+          --  or array containing protected objects.
+ 
+          elsif Is_Simple_Protected_Type (Typ) then
+             Fin_Id := RTE (RE_Finalize_Protection);
+          else
+             raise Program_Error;
+          end if;
        else
           raise Program_Error;
        end if;
*************** package body Exp_Ch7 is
*** 8427,8432 ****
--- 9078,9092 ----
                 end if;
              end;
  
+             --  If the object is unanalyzed, set its expected type for use in
+             --  Convert_View in case an additional conversion is needed.
+ 
+             if No (Etype (Ref))
+               and then Nkind (Ref) /= N_Unchecked_Type_Conversion
+             then
+                Set_Etype (Ref, Typ);
+             end if;
+ 
              Ref := Convert_View (Fin_Id, Ref);
           end if;
  
*************** package body Exp_Ch7 is
*** 8819,8826 ****
        --  The underlying type may not be present due to a missing full view.
        --  In this case freezing did not take place and there is no suitable
        --  [Deep_]Initialize primitive to call.
  
!       if No (Utyp) then
           return Empty;
        end if;
  
--- 9479,9489 ----
        --  The underlying type may not be present due to a missing full view.
        --  In this case freezing did not take place and there is no suitable
        --  [Deep_]Initialize primitive to call.
+       --  If Typ is protected then no additional processing is needed either.
  
!       if No (Utyp)
!         or else Is_Protected_Type (Typ)
!       then
           return Empty;
        end if;
  
*************** package body Exp_Ch7 is
*** 8842,8848 ****
              and then Present (Alias (Proc))
              and then Is_Trivial_Subprogram (Alias (Proc)))
        then
!          return Make_Null_Statement (Loc);
        end if;
  
        --  The object reference may need another conversion depending on the
--- 9505,9511 ----
              and then Present (Alias (Proc))
              and then Is_Trivial_Subprogram (Alias (Proc)))
        then
!          return Empty;
        end if;
  
        --  The object reference may need another conversion depending on the
*************** package body Exp_Ch7 is
*** 8999,9008 ****
           Par : Node_Id := Parent (N);
  
        begin
!          while not (Nkind_In (Par, N_Handled_Sequence_Of_Statements,
!                                    N_Loop_Statement,
!                                    N_Package_Specification)
!                       or else Nkind (Par) in N_Proper_Body)
           loop
              pragma Assert (Present (Par));
              Par := Parent (Par);
--- 9662,9670 ----
           Par : Node_Id := Parent (N);
  
        begin
!          while Nkind (Par) not in
!            N_Handled_Sequence_Of_Statements | N_Loop_Statement |
!            N_Package_Specification          | N_Proper_Body
           loop
              pragma Assert (Present (Par));
              Par := Parent (Par);
*************** package body Exp_Ch7 is
*** 9089,9100 ****
              --  Prevent the search from going too far because transient blocks
              --  are bounded by packages and subprogram scopes.
  
!             elsif Ekind_In (Scop, E_Entry,
!                                   E_Entry_Family,
!                                   E_Function,
!                                   E_Package,
!                                   E_Procedure,
!                                   E_Subprogram_Body)
              then
                 exit;
              end if;
--- 9751,9762 ----
              --  Prevent the search from going too far because transient blocks
              --  are bounded by packages and subprogram scopes.
  
!             elsif Ekind (Scop) in E_Entry
!                                 | E_Entry_Family
!                                 | E_Function
!                                 | E_Package
!                                 | E_Procedure
!                                 | E_Subprogram_Body
              then
                 exit;
              end if;
*************** package body Exp_Ch7 is
*** 9254,9259 ****
--- 9916,9926 ----
            Handled_Statement_Sequence =>
              Handled_Statement_Sequence (Decl));
  
+       --  Handlers in the block may contain nested subprograms that require
+       --  unnesting.
+ 
+       Check_Unnesting_In_Handlers (Local_Body);
+ 
        Rewrite (Decl, Local_Body);
        Analyze (Decl);
        Set_Has_Nested_Subprogram (Local_Proc);
*************** package body Exp_Ch7 is
*** 9281,9286 ****
--- 9948,10041 ----
        end loop;
     end Unnest_Block;
  
+    -------------------------
+    -- Unnest_If_Statement --
+    -------------------------
+ 
+    procedure Unnest_If_Statement (If_Stmt : Node_Id) is
+ 
+       procedure Check_Stmts_For_Subp_Unnesting (Stmts : in out List_Id);
+       --  A list of statements (that may be a list associated with a then,
+       --  elsif, or else part of an if-statement) is traversed at the top
+       --  level to determine whether it contains a subprogram body, and if so,
+       --  the statements will be replaced with a new procedure body containing
+       --  the statements followed by a call to the procedure. The individual
+       --  statements may also be blocks, loops, or other if statements that
+       --  themselves may require contain nested subprograms needing unnesting.
+ 
+       procedure Check_Stmts_For_Subp_Unnesting (Stmts : in out List_Id) is
+          Subp_Found : Boolean := False;
+ 
+       begin
+          if Is_Empty_List (Stmts) then
+             return;
+          end if;
+ 
+          declare
+             Stmt : Node_Id := First (Stmts);
+          begin
+             while Present (Stmt) loop
+                if Nkind (Stmt) = N_Subprogram_Body then
+                   Subp_Found := True;
+                   exit;
+                end if;
+ 
+                Next (Stmt);
+             end loop;
+          end;
+ 
+          --  The statements themselves may be blocks, loops, etc. that in turn
+          --  contain nested subprograms requiring an unnesting transformation.
+          --  We perform this traversal after looking for subprogram bodies, to
+          --  avoid considering procedures created for one of those statements
+          --  (such as a block rewritten as a procedure) as a nested subprogram
+          --  of the statement list (which could result in an unneeded wrapper
+          --  procedure).
+ 
+          Check_Unnesting_In_Decls_Or_Stmts (Stmts);
+ 
+          --  If there was a top-level subprogram body in the statement list,
+          --  then perform an unnesting transformation on the list by replacing
+          --  the statements with a wrapper procedure body containing the
+          --  original statements followed by a call to that procedure.
+ 
+          if Subp_Found then
+             Unnest_Statement_List (Stmts);
+          end if;
+       end Check_Stmts_For_Subp_Unnesting;
+ 
+       --  Local variables
+ 
+       Then_Stmts : List_Id := Then_Statements (If_Stmt);
+       Else_Stmts : List_Id := Else_Statements (If_Stmt);
+ 
+    --  Start of processing for Unnest_If_Statement
+ 
+    begin
+       Check_Stmts_For_Subp_Unnesting (Then_Stmts);
+       Set_Then_Statements (If_Stmt, Then_Stmts);
+ 
+       if not Is_Empty_List (Elsif_Parts (If_Stmt)) then
+          declare
+             Elsif_Part  : Node_Id :=
+                             First (Elsif_Parts (If_Stmt));
+             Elsif_Stmts : List_Id;
+          begin
+             while Present (Elsif_Part) loop
+                Elsif_Stmts := Then_Statements (Elsif_Part);
+ 
+                Check_Stmts_For_Subp_Unnesting (Elsif_Stmts);
+                Set_Then_Statements (Elsif_Part, Elsif_Stmts);
+ 
+                Next (Elsif_Part);
+             end loop;
+          end;
+       end if;
+ 
+       Check_Stmts_For_Subp_Unnesting (Else_Stmts);
+       Set_Else_Statements (If_Stmt, Else_Stmts);
+    end Unnest_If_Statement;
+ 
     -----------------
     -- Unnest_Loop --
     -----------------
*************** package body Exp_Ch7 is
*** 9342,9347 ****
--- 10097,10171 ----
        --  same loop entity that now belongs to the copied loop statement.
     end Unnest_Loop;
  
+    ---------------------------
+    -- Unnest_Statement_List --
+    ---------------------------
+ 
+    procedure Unnest_Statement_List (Stmts : in out List_Id) is
+       Loc        : constant Source_Ptr := Sloc (First (Stmts));
+       Local_Body : Node_Id;
+       Local_Call : Node_Id;
+       Local_Proc : Entity_Id;
+       New_Stmts  : constant List_Id := Empty_List;
+ 
+    begin
+       Local_Proc :=
+         Make_Defining_Identifier (Loc,
+           Chars => New_Internal_Name ('P'));
+ 
+       Local_Body :=
+         Make_Subprogram_Body (Loc,
+           Specification              =>
+             Make_Procedure_Specification (Loc,
+               Defining_Unit_Name => Local_Proc),
+           Declarations               => Empty_List,
+           Handled_Statement_Sequence =>
+             Make_Handled_Sequence_Of_Statements (Loc,
+               Statements => Stmts));
+ 
+       Append_To (New_Stmts, Local_Body);
+ 
+       Analyze (Local_Body);
+ 
+       Set_Has_Nested_Subprogram (Local_Proc);
+ 
+       Local_Call :=
+         Make_Procedure_Call_Statement (Loc,
+           Name => New_Occurrence_Of (Local_Proc, Loc));
+ 
+       Append_To (New_Stmts, Local_Call);
+       Analyze (Local_Call);
+ 
+       --  Traverse the statements, and for any that are declarations or
+       --  subprogram bodies that have entities, set the Scope of those
+       --  entities to the new procedure's Entity_Id.
+ 
+       declare
+          Stmt : Node_Id := First (Stmts);
+ 
+       begin
+          while Present (Stmt) loop
+             case Nkind (Stmt) is
+                when N_Declaration
+                   | N_Renaming_Declaration
+                =>
+                   Set_Scope (Defining_Identifier (Stmt), Local_Proc);
+ 
+                when N_Subprogram_Body =>
+                   Set_Scope
+                     (Defining_Unit_Name (Specification (Stmt)), Local_Proc);
+ 
+                when others =>
+                   null;
+             end case;
+ 
+             Next (Stmt);
+          end loop;
+       end;
+ 
+       Stmts := New_Stmts;
+    end Unnest_Statement_List;
+ 
     --------------------------------
     -- Wrap_Transient_Declaration --
     --------------------------------
*************** package body Exp_Ch7 is
*** 9385,9391 ****
           Manage_SS =>
             Uses_Sec_Stack (Curr_S)
               and then Nkind (N) = N_Object_Declaration
!              and then Ekind_In (Encl_S, E_Package, E_Package_Body)
               and then Is_Library_Level_Entity (Encl_S));
        Pop_Scope;
  
--- 10209,10215 ----
           Manage_SS =>
             Uses_Sec_Stack (Curr_S)
               and then Nkind (N) = N_Object_Declaration
!              and then Ekind (Encl_S) in E_Package | E_Package_Body
               and then Is_Library_Level_Entity (Encl_S));
        Pop_Scope;
  
*************** package body Exp_Ch7 is
*** 9471,9476 ****
--- 10295,10304 ----
                Expression => Expr),
            Par    => Parent (N))));
  
+       if Debug_Generated_Code then
+          Set_Debug_Info_Needed (Temp);
+       end if;
+ 
        Rewrite (N, New_Occurrence_Of (Temp, Loc));
        Analyze_And_Resolve (N, Typ);
     end Wrap_Transient_Expression;
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch7.ads gcc-11.1.0/gcc/ada/exp_ch7.ads
*** gcc-10.3.0/gcc/ada/exp_ch7.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch7.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Ch7 is
*** 175,187 ****
     --  only the components (if any) are adjusted. Return Empty if Adjust or
     --  Deep_Adjust is not available, possibly due to previous errors.
  
-    function Make_Detach_Call (Obj_Ref : Node_Id) return Node_Id;
-    --  Create a call to unhook an object from an arbitrary list. Obj_Ref is the
-    --  object. Generate the following:
-    --
-    --    Ada.Finalization.Heap_Management.Detach
-    --      (System.Finalization_Root.Root_Controlled_Ptr (Obj_Ref));
- 
     function Make_Final_Call
       (Obj_Ref   : Node_Id;
        Typ       : Entity_Id;
--- 175,180 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch8.adb gcc-11.1.0/gcc/ada/exp_ch8.adb
*** gcc-10.3.0/gcc/ada/exp_ch8.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch8.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Ch8 is
*** 101,110 ****
     --  More comments needed for this para ???
  
     procedure Expand_N_Object_Renaming_Declaration (N : Node_Id) is
-       Nam  : constant Node_Id := Name (N);
-       Decl : Node_Id;
-       T    : Entity_Id;
- 
        function Evaluation_Required (Nam : Node_Id) return Boolean;
        --  Determines whether it is necessary to do static name evaluation for
        --  renaming of Nam. It is considered necessary if evaluating the name
--- 101,106 ----
*************** package body Exp_Ch8 is
*** 125,135 ****
           if Modify_Tree_For_C then
              return True;
  
!          elsif Nkind_In (Nam, N_Indexed_Component, N_Slice) then
              if Is_Packed (Etype (Prefix (Nam))) then
                 return True;
  
!             elsif Is_Atomic_Or_VFA_Object (Prefix (Nam)) then
                 return True;
  
              else
--- 121,131 ----
           if Modify_Tree_For_C then
              return True;
  
!          elsif Nkind (Nam) in N_Indexed_Component | N_Slice then
              if Is_Packed (Etype (Prefix (Nam))) then
                 return True;
  
!             elsif Is_Full_Access_Object (Prefix (Nam)) then
                 return True;
  
              else
*************** package body Exp_Ch8 is
*** 152,158 ****
                 then
                    return True;
  
!                elsif Is_Atomic_Or_VFA_Object (Prefix (Nam)) then
                    return True;
  
                 else
--- 148,154 ----
                 then
                    return True;
  
!                elsif Is_Full_Access_Object (Prefix (Nam)) then
                    return True;
  
                 else
*************** package body Exp_Ch8 is
*** 165,170 ****
--- 161,172 ----
           end if;
        end Evaluation_Required;
  
+       --  Local variables
+ 
+       Decl : Node_Id;
+       Nam  : constant Node_Id   := Name (N);
+       T    : constant Entity_Id := Etype (Defining_Identifier (N));
+ 
     --  Start of processing for Expand_N_Object_Renaming_Declaration
  
     begin
*************** package body Exp_Ch8 is
*** 177,184 ****
  
        --  Deal with construction of subtype in class-wide case
  
-       T := Etype (Defining_Identifier (N));
- 
        if Is_Class_Wide_Type (T) then
           Expand_Subtype_From_Expr (N, T, Subtype_Mark (N), Name (N));
           Find_Type (Subtype_Mark (N));
--- 179,184 ----
*************** package body Exp_Ch8 is
*** 209,218 ****
        --  needing debug info if it comes from sources because the current
        --  setting in Freeze_Entity occurs too late. ???
  
!       if Comes_From_Source (Defining_Identifier (N)) then
!          Set_Debug_Info_Needed (Defining_Identifier (N));
!       end if;
! 
        Decl := Debug_Renaming_Declaration (N);
  
        if Present (Decl) then
--- 209,215 ----
        --  needing debug info if it comes from sources because the current
        --  setting in Freeze_Entity occurs too late. ???
  
!       Set_Debug_Info_Defining_Id (N);
        Decl := Debug_Renaming_Declaration (N);
  
        if Present (Decl) then
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch8.ads gcc-11.1.0/gcc/ada/exp_ch8.ads
*** gcc-10.3.0/gcc/ada/exp_ch8.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch8.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch9.adb gcc-11.1.0/gcc/ada/exp_ch9.adb
*** gcc-10.3.0/gcc/ada/exp_ch9.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch9.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,30 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with Aspects;  use Aspects;
  with Atree;    use Atree;
  with Einfo;    use Einfo;
  with Elists;   use Elists;
  with Errout;   use Errout;
--- 23,31 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with Atree;    use Atree;
+ with Aspects;  use Aspects;
+ with Checks;   use Checks;
  with Einfo;    use Einfo;
  with Elists;   use Elists;
  with Errout;   use Errout;
*************** with Sem_Ch6;  use Sem_Ch6;
*** 53,61 ****
  with Sem_Ch8;  use Sem_Ch8;
  with Sem_Ch9;  use Sem_Ch9;
  with Sem_Ch11; use Sem_Ch11;
  with Sem_Elab; use Sem_Elab;
  with Sem_Eval; use Sem_Eval;
- with Sem_Prag; use Sem_Prag;
  with Sem_Res;  use Sem_Res;
  with Sem_Util; use Sem_Util;
  with Sinfo;    use Sinfo;
--- 54,62 ----
  with Sem_Ch8;  use Sem_Ch8;
  with Sem_Ch9;  use Sem_Ch9;
  with Sem_Ch11; use Sem_Ch11;
+ with Sem_Ch13; use Sem_Ch13;
  with Sem_Elab; use Sem_Elab;
  with Sem_Eval; use Sem_Eval;
  with Sem_Res;  use Sem_Res;
  with Sem_Util; use Sem_Util;
  with Sinfo;    use Sinfo;
*************** package body Exp_Ch9 is
*** 435,440 ****
--- 436,443 ----
        Conctyp    : Entity_Id;
        Lo         : Node_Id;
        Hi         : Node_Id) return Boolean;
+    --  Determine whether an entry family is potentially large because one of
+    --  its bounds denotes a discrminant.
  
     function Is_Private_Primitive_Subprogram (Id : Entity_Id) return Boolean;
     --  Determine whether Id is a function or a procedure and is marked as a
*************** package body Exp_Ch9 is
*** 586,592 ****
        --  structure.
  
        if Present (Index) then
!          S := Etype (Discrete_Subtype_Definition (Declaration_Node (Ent)));
  
           Expr :=
             Make_Op_Add (Sloc,
--- 589,603 ----
        --  structure.
  
        if Present (Index) then
!          S := Entry_Index_Type (Ent);
! 
!          --  First make sure the index is in range if requested. The index type
!          --  has been directly set on the prefix, see Resolve_Entry.
! 
!          if Do_Range_Check (Index) then
!             Generate_Range_Check
!               (Index, Etype (Prefix (Parent (Index))), CE_Range_Check_Failed);
!          end if;
  
           Expr :=
             Make_Op_Add (Sloc,
*************** package body Exp_Ch9 is
*** 613,620 ****
              Set_Intval (Num, Intval (Num) + 1);
  
           elsif Ekind (Prev) = E_Entry_Family then
!             S :=
!               Etype (Discrete_Subtype_Definition (Declaration_Node (Prev)));
  
              --  The need for the following full view retrieval stems from this
              --  complex case of nested generics and tasking:
--- 624,630 ----
              Set_Intval (Num, Intval (Num) + 1);
  
           elsif Ekind (Prev) = E_Entry_Family then
!             S := Entry_Index_Type (Prev);
  
              --  The need for the following full view retrieval stems from this
              --  complex case of nested generics and tasking:
*************** package body Exp_Ch9 is
*** 736,743 ****
           Renamed_Formal :=
             Make_Selected_Component (Loc,
               Prefix        =>
!                Unchecked_Convert_To (Entry_Parameters_Type (Ent),
!                  Make_Identifier (Loc, Chars (Ptr))),
               Selector_Name => New_Occurrence_Of (Comp, Loc));
  
           Decl :=
--- 746,754 ----
           Renamed_Formal :=
             Make_Selected_Component (Loc,
               Prefix        =>
!                Make_Explicit_Dereference (Loc,
!                  Unchecked_Convert_To (Entry_Parameters_Type (Ent),
!                    Make_Identifier (Loc, Chars (Ptr)))),
               Selector_Name => New_Occurrence_Of (Comp, Loc));
  
           Decl :=
*************** package body Exp_Ch9 is
*** 826,831 ****
--- 837,852 ----
        Insert_Before (Last (Statements (Stats)), Call);
        Analyze (Call);
  
+       --  Ada 2020 (AI12-0279)
+ 
+       if Has_Yield_Aspect (Entity (Entry_Direct_Name (Astat)))
+         and then RTE_Available (RE_Yield)
+       then
+          Insert_Action_After (Call,
+            Make_Procedure_Call_Statement (Loc,
+              New_Occurrence_Of (RTE (RE_Yield), Loc)));
+       end if;
+ 
        --  If exception handlers are present, then append Complete_Rendezvous
        --  calls to the handlers, and construct the required outer block. As
        --  above, the Sloc is copied from the last statement in the sequence.
*************** package body Exp_Ch9 is
*** 838,843 ****
--- 859,875 ----
                  (Sloc (Last (Statements (Hand))), RE_Complete_Rendezvous);
              Append (Call, Statements (Hand));
              Analyze (Call);
+ 
+             --  Ada 2020 (AI12-0279)
+ 
+             if Has_Yield_Aspect (Entity (Entry_Direct_Name (Astat)))
+               and then RTE_Available (RE_Yield)
+             then
+                Insert_Action_After (Call,
+                  Make_Procedure_Call_Statement (Loc,
+                    New_Occurrence_Of (RTE (RE_Yield), Loc)));
+             end if;
+ 
              Next (Hand);
           end loop;
  
*************** package body Exp_Ch9 is
*** 861,866 ****
--- 893,908 ----
        --  We handle Abort_Signal to make sure that we properly catch the abort
        --  case and wake up the caller.
  
+       Call :=
+         Make_Procedure_Call_Statement (Sloc (Stats),
+           Name                   => New_Occurrence_Of (
+             RTE (RE_Exceptional_Complete_Rendezvous), Sloc (Stats)),
+           Parameter_Associations => New_List (
+             Make_Function_Call (Sloc (Stats),
+               Name =>
+                 New_Occurrence_Of
+                   (RTE (RE_Get_GNAT_Exception), Sloc (Stats)))));
+ 
        Ohandle := Make_Others_Choice (Loc);
        Set_All_Others (Ohandle);
  
*************** package body Exp_Ch9 is
*** 869,883 ****
            Make_Implicit_Exception_Handler (Loc,
              Exception_Choices => New_List (Ohandle),
  
!             Statements => New_List (
!               Make_Procedure_Call_Statement (Sloc (Stats),
!                 Name                   => New_Occurrence_Of (
!                   RTE (RE_Exceptional_Complete_Rendezvous), Sloc (Stats)),
!                 Parameter_Associations => New_List (
!                   Make_Function_Call (Sloc (Stats),
!                     Name =>
!                       New_Occurrence_Of
!                         (RTE (RE_Get_GNAT_Exception), Sloc (Stats)))))))));
  
        Set_Parent (New_S, Astat); -- temp parent for Analyze call
        Analyze_Exception_Handlers (Exception_Handlers (New_S));
--- 911,927 ----
            Make_Implicit_Exception_Handler (Loc,
              Exception_Choices => New_List (Ohandle),
  
!             Statements => New_List (Call))));
! 
!       --  Ada 2020 (AI12-0279)
! 
!       if Has_Yield_Aspect (Entity (Entry_Direct_Name (Astat)))
!         and then RTE_Available (RE_Yield)
!       then
!          Insert_Action_After (Call,
!            Make_Procedure_Call_Statement (Loc,
!              New_Occurrence_Of (RTE (RE_Yield), Loc)));
!       end if;
  
        Set_Parent (New_S, Astat); -- temp parent for Analyze call
        Analyze_Exception_Handlers (Exception_Handlers (New_S));
*************** package body Exp_Ch9 is
*** 928,933 ****
--- 972,983 ----
     --  Start of processing for Build_Activation_Chain_Entity
  
     begin
+       --  No action needed if the run-time has no tasking support
+ 
+       if Global_No_Tasking then
+          return;
+       end if;
+ 
        --  Activation chain is never used for sequential elaboration policy, see
        --  comment for Create_Restricted_Task_Sequential in s-tarest.ads).
  
*************** package body Exp_Ch9 is
*** 1127,1135 ****
        Ren_Decl     : Node_Id;
  
     begin
!       --  Nothing to do if there is no task hierarchy
  
!       if Restriction_Active (No_Task_Hierarchy) then
           return;
        end if;
  
--- 1177,1185 ----
        Ren_Decl     : Node_Id;
  
     begin
!       --  No action needed if the run-time has no tasking support
  
!       if Global_No_Tasking then
           return;
        end if;
  
*************** package body Exp_Ch9 is
*** 1166,1189 ****
        if not Has_Master_Entity (Master_Scope)
          or else No (Current_Entity_In_Scope (Name_Id))
        then
           begin
              Set_Has_Master_Entity (Master_Scope);
  
!             --  Generate:
!             --    _master : constant Integer := Current_Master.all;
  
!             Master_Decl :=
!               Make_Object_Declaration (Loc,
!                 Defining_Identifier =>
!                   Make_Defining_Identifier (Loc, Name_uMaster),
!                 Constant_Present    => True,
!                 Object_Definition   =>
!                   New_Occurrence_Of (Standard_Integer, Loc),
!                 Expression          =>
!                   Make_Explicit_Dereference (Loc,
!                     New_Occurrence_Of (RTE (RE_Current_Master), Loc)));
  
!             Insert_Action (Find_Hook_Context (Related_Node), Master_Decl);
              Analyze (Master_Decl);
  
              --  Mark the containing scope as a task master. Masters associated
--- 1216,1236 ----
        if not Has_Master_Entity (Master_Scope)
          or else No (Current_Entity_In_Scope (Name_Id))
        then
+          declare
+             Ins_Nod : Node_Id;
+ 
           begin
              Set_Has_Master_Entity (Master_Scope);
+             Master_Decl := Build_Master_Declaration (Loc);
  
!             --  Ensure that the master declaration is placed before its use
  
!             Ins_Nod := Find_Hook_Context (Related_Node);
!             while not Is_List_Member (Ins_Nod) loop
!                Ins_Nod := Parent (Ins_Nod);
!             end loop;
  
!             Insert_Before (First (List_Containing (Ins_Nod)), Master_Decl);
              Analyze (Master_Decl);
  
              --  Mark the containing scope as a task master. Masters associated
*************** package body Exp_Ch9 is
*** 1202,1210 ****
                       --  and the environment task is our effective master,
                       --  so nothing to mark.
  
!                      if Nkind_In (Par, N_Block_Statement,
!                                        N_Subprogram_Body,
!                                        N_Task_Body)
                       then
                          Set_Is_Task_Master (Par);
                          exit;
--- 1249,1256 ----
                       --  and the environment task is our effective master,
                       --  so nothing to mark.
  
!                      if Nkind (Par) in
!                           N_Block_Statement | N_Subprogram_Body | N_Task_Body
                       then
                          Set_Is_Task_Master (Par);
                          exit;
*************** package body Exp_Ch9 is
*** 1414,1421 ****
  
           Prag := Pre_Post_Conditions (Items);
           while Present (Prag) loop
!             if Nam_In (Pragma_Name_Unmapped (Prag),
!                        Name_Postcondition, Name_Precondition)
                and then Is_Checked (Prag)
              then
                 Has_Pragma := True;
--- 1460,1467 ----
  
           Prag := Pre_Post_Conditions (Items);
           while Present (Prag) loop
!             if Pragma_Name_Unmapped (Prag) in Name_Postcondition
!                                             | Name_Precondition
                and then Is_Checked (Prag)
              then
                 Has_Pragma := True;
*************** package body Exp_Ch9 is
*** 1677,1683 ****
                 Next (Comp);
              end loop;
  
!             Typ := Etype (Discrete_Subtype_Definition (Parent (Ent)));
              Hi := Type_High_Bound (Typ);
              Lo := Type_Low_Bound  (Typ);
              Large := Is_Potentially_Large_Family
--- 1723,1729 ----
                 Next (Comp);
              end loop;
  
!             Typ := Entry_Index_Type (Ent);
              Hi := Type_High_Bound (Typ);
              Lo := Type_Low_Bound  (Typ);
              Large := Is_Potentially_Large_Family
*************** package body Exp_Ch9 is
*** 1695,1700 ****
--- 1741,1805 ----
        return Ecount;
     end Build_Entry_Count_Expression;
  
+    ------------------------------
+    -- Build_Master_Declaration --
+    ------------------------------
+ 
+    function Build_Master_Declaration (Loc : Source_Ptr) return Node_Id is
+       Master_Decl : Node_Id;
+ 
+    begin
+       --  Generate a dummy master if tasks or tasking hierarchies are
+       --  prohibited.
+ 
+       --    _Master : constant Master_Id := 3;
+ 
+       if not Tasking_Allowed
+         or else Restrictions.Set (No_Task_Hierarchy)
+         or else not RTE_Available (RE_Current_Master)
+       then
+          declare
+             Expr : Node_Id;
+ 
+          begin
+             --  RE_Library_Task_Level is not always available in configurable
+             --  RunTime
+ 
+             if not RTE_Available (RE_Library_Task_Level) then
+                Expr := Make_Integer_Literal (Loc, Uint_3);
+             else
+                Expr := New_Occurrence_Of (RTE (RE_Library_Task_Level), Loc);
+             end if;
+ 
+             Master_Decl :=
+               Make_Object_Declaration (Loc,
+                 Defining_Identifier =>
+                   Make_Defining_Identifier (Loc, Name_uMaster),
+                 Constant_Present    => True,
+                 Object_Definition   =>
+                   New_Occurrence_Of (Standard_Integer, Loc),
+                 Expression          => Expr);
+          end;
+ 
+       --  Generate:
+       --    _master : constant Integer := Current_Master.all;
+ 
+       else
+          Master_Decl :=
+            Make_Object_Declaration (Loc,
+              Defining_Identifier =>
+                Make_Defining_Identifier (Loc, Name_uMaster),
+              Constant_Present    => True,
+              Object_Definition   =>
+                New_Occurrence_Of (Standard_Integer, Loc),
+              Expression          =>
+                Make_Explicit_Dereference (Loc,
+                  New_Occurrence_Of (RTE (RE_Current_Master), Loc)));
+       end if;
+ 
+       return Master_Decl;
+    end Build_Master_Declaration;
+ 
     ---------------------------
     -- Build_Parameter_Block --
     ---------------------------
*************** package body Exp_Ch9 is
*** 2128,2134 ****
              if Present (First_Formal (Iface_Op))
                and then Is_Controlling_Formal (First_Formal (Iface_Op))
              then
!                Iface_Op_Param := Next (Iface_Op_Param);
              end if;
  
              Wrapper_Param := First (Wrapper_Params);
--- 2233,2239 ----
              if Present (First_Formal (Iface_Op))
                and then Is_Controlling_Formal (First_Formal (Iface_Op))
              then
!                Next (Iface_Op_Param);
              end if;
  
              Wrapper_Param := First (Wrapper_Params);
*************** package body Exp_Ch9 is
*** 2213,2219 ****
           if Is_Private_Primitive_Subprogram (Subp_Id)
             and then not Has_Controlling_Result (Subp_Id)
           then
!             Formal := Next (Formal);
           end if;
  
           while Present (Formal) loop
--- 2318,2324 ----
           if Is_Private_Primitive_Subprogram (Subp_Id)
             and then not Has_Controlling_Result (Subp_Id)
           then
!             Next (Formal);
           end if;
  
           while Present (Formal) loop
*************** package body Exp_Ch9 is
*** 2546,2552 ****
        Lo    : Node_Id;
        Hi    : Node_Id;
        Decls : List_Id := New_List;
!       Ret   : Node_Id;
        Spec  : Node_Id;
        Siz   : Node_Id := Empty;
  
--- 2651,2657 ----
        Lo    : Node_Id;
        Hi    : Node_Id;
        Decls : List_Id := New_List;
!       Ret   : Node_Id := Empty;
        Spec  : Node_Id;
        Siz   : Node_Id := Empty;
  
*************** package body Exp_Ch9 is
*** 2677,2683 ****
                 Add_If_Clause (Make_Integer_Literal (Loc, 1));
  
              elsif Ekind (Ent) = E_Entry_Family then
!                E_Typ := Etype (Discrete_Subtype_Definition (Parent (Ent)));
                 Hi := Convert_Discriminant_Ref (Type_High_Bound (E_Typ));
                 Lo := Convert_Discriminant_Ref (Type_Low_Bound  (E_Typ));
                 Add_If_Clause (Family_Size (Loc, Hi, Lo, Typ, False));
--- 2782,2788 ----
                 Add_If_Clause (Make_Integer_Literal (Loc, 1));
  
              elsif Ekind (Ent) = E_Entry_Family then
!                E_Typ := Entry_Index_Type (Ent);
                 Hi := Convert_Discriminant_Ref (Type_High_Bound (E_Typ));
                 Lo := Convert_Discriminant_Ref (Type_Low_Bound  (E_Typ));
                 Add_If_Clause (Family_Size (Loc, Hi, Lo, Typ, False));
*************** package body Exp_Ch9 is
*** 2692,2707 ****
                Make_Simple_Return_Statement (Loc,
                  Expression => Make_Integer_Literal (Loc, 1));
  
!          elsif Nkind (Ret) = N_If_Statement then
  
!             --  Ranges are in increasing order, so last one doesn't need guard
  
!             declare
!                Nod : constant Node_Id := Last (Elsif_Parts (Ret));
!             begin
!                Remove (Nod);
!                Set_Else_Statements (Ret, Then_Statements (Nod));
!             end;
           end if;
        end if;
  
--- 2797,2817 ----
                Make_Simple_Return_Statement (Loc,
                  Expression => Make_Integer_Literal (Loc, 1));
  
!          else
!             pragma Assert (Present (Ret));
  
!             if Nkind (Ret) = N_If_Statement then
  
!                --  Ranges are in increasing order, so last one doesn't need
!                --  guard.
! 
!                declare
!                   Nod : constant Node_Id := Last (Elsif_Parts (Ret));
!                begin
!                   Remove (Nod);
!                   Set_Else_Statements (Ret, Then_Statements (Nod));
!                end;
!             end if;
           end if;
        end if;
  
*************** package body Exp_Ch9 is
*** 3075,3084 ****
                   and then ((Nkind (N) = N_Simple_Return_Statement
                               and then N /= Last (Stmts))
                              or else Nkind (N) = N_Extended_Return_Statement
!                             or else (Nkind_In (N, N_Raise_Constraint_Error,
!                                                   N_Raise_Program_Error,
!                                                   N_Raise_Statement,
!                                                   N_Raise_Storage_Error)
                                        and then Comes_From_Source (N)))
                 then
                    Wrap_Statement (N);
--- 3185,3192 ----
                   and then ((Nkind (N) = N_Simple_Return_Statement
                               and then N /= Last (Stmts))
                              or else Nkind (N) = N_Extended_Return_Statement
!                             or else (Nkind (N) in
!                                        N_Raise_xxx_Error | N_Raise_Statement
                                        and then Comes_From_Source (N)))
                 then
                    Wrap_Statement (N);
*************** package body Exp_Ch9 is
*** 3340,3351 ****
--- 3448,3487 ----
        Par        : Node_Id;
  
     begin
+       --  No action needed if the run-time has no tasking support
+ 
+       if Global_No_Tasking then
+          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;
  
+       --  For transient scopes check if the master entity is already defined
+ 
+       if Is_Type (Obj_Or_Typ)
+         and then Ekind (Scope (Obj_Or_Typ)) = E_Block
+         and then Is_Internal (Scope (Obj_Or_Typ))
+       then
+          declare
+             Master_Scope : constant Entity_Id :=
+                              Find_Master_Scope (Obj_Or_Typ);
+          begin
+             if Has_Master_Entity (Master_Scope)
+               or else Is_Finalizer (Master_Scope)
+             then
+                return;
+             end if;
+ 
+             if Present (Current_Entity_In_Scope (Name_uMaster)) then
+                return;
+             end if;
+          end;
+       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.
*************** package body Exp_Ch9 is
*** 3363,3393 ****
           Find_Enclosing_Context (Par, Context, Context_Id, Decls);
        end if;
  
!       --  Nothing to do if the context already has a master
! 
!       if Has_Master_Entity (Context_Id) then
!          return;
! 
!       --  Nothing to do if tasks or tasking hierarchies are prohibited
  
!       elsif Restriction_Active (No_Tasking)
!         or else Restriction_Active (No_Task_Hierarchy)
        then
           return;
        end if;
  
!       --  Create a master, generate:
!       --    _Master : constant Master_Id := Current_Master.all;
! 
!       Decl :=
!         Make_Object_Declaration (Loc,
!           Defining_Identifier =>
!             Make_Defining_Identifier (Loc, Name_uMaster),
!           Constant_Present    => True,
!           Object_Definition   => New_Occurrence_Of (RTE (RE_Master_Id), Loc),
!           Expression          =>
!             Make_Explicit_Dereference (Loc,
!               New_Occurrence_Of (RTE (RE_Current_Master), Loc)));
  
        --  The master is inserted at the start of the declarative list of the
        --  context.
--- 3499,3514 ----
           Find_Enclosing_Context (Par, Context, Context_Id, Decls);
        end if;
  
!       --  Nothing to do if the context already has a master; internally built
!       --  finalizers don't need a master.
  
!       if Has_Master_Entity (Context_Id)
!         or else Is_Finalizer (Context_Id)
        then
           return;
        end if;
  
!       Decl := Build_Master_Declaration (Loc);
  
        --  The master is inserted at the start of the declarative list of the
        --  context.
*************** package body Exp_Ch9 is
*** 3414,3422 ****
        while Present (Context)
          and then Nkind (Context) /= N_Compilation_Unit
        loop
!          if Nkind_In (Context, N_Block_Statement,
!                                N_Subprogram_Body,
!                                N_Task_Body)
           then
              Set_Is_Task_Master (Context);
              exit;
--- 3535,3542 ----
        while Present (Context)
          and then Nkind (Context) /= N_Compilation_Unit
        loop
!          if Nkind (Context) in
!               N_Block_Statement | N_Subprogram_Body | N_Task_Body
           then
              Set_Is_Task_Master (Context);
              exit;
*************** package body Exp_Ch9 is
*** 3443,3453 ****
        Master_Id   : Entity_Id;
  
     begin
!       --  Nothing to do if tasks or tasking hierarchies are prohibited
  
!       if Restriction_Active (No_Tasking)
!         or else Restriction_Active (No_Task_Hierarchy)
!       then
           return;
        end if;
  
--- 3563,3571 ----
        Master_Id   : Entity_Id;
  
     begin
!       --  No action needed if the run-time has no tasking support
  
!       if Global_No_Tasking then
           return;
        end if;
  
*************** package body Exp_Ch9 is
*** 3455,3472 ****
  
        if Present (Ins_Nod) then
           Context := Ins_Nod;
        elsif Is_Itype (Ptr_Typ) then
           Context := Associated_Node_For_Itype (Ptr_Typ);
        else
           Context := Parent (Ptr_Typ);
        end if;
  
        --  Generate:
        --    <Ptr_Typ>M : Master_Id renames _Master;
  
        Master_Id :=
          Make_Defining_Identifier (Loc,
!           New_External_Name (Chars (Ptr_Typ), 'M'));
  
        Master_Decl :=
          Make_Object_Renaming_Declaration (Loc,
--- 3573,3625 ----
  
        if Present (Ins_Nod) then
           Context := Ins_Nod;
+ 
        elsif Is_Itype (Ptr_Typ) then
           Context := Associated_Node_For_Itype (Ptr_Typ);
+ 
+          --  When the context references a discriminant or a component of a
+          --  private type and we are processing declarations in the private
+          --  part of the enclosing package, we must insert the master renaming
+          --  before the full declaration of the private type; otherwise the
+          --  master renaming would be inserted in the public part of the
+          --  package (and hence before the declaration of _master).
+ 
+          if In_Private_Part (Current_Scope) then
+             declare
+                Ctx : Node_Id := Context;
+ 
+             begin
+                if Nkind (Context) = N_Discriminant_Specification then
+                   Ctx := Parent (Ctx);
+                else
+                   while Nkind (Ctx) in
+                           N_Component_Declaration | N_Component_List
+                   loop
+                      Ctx := Parent (Ctx);
+                   end loop;
+                end if;
+ 
+                if Nkind (Ctx) in N_Private_Type_Declaration
+                                | N_Private_Extension_Declaration
+                then
+                   Context := Parent (Full_View (Defining_Identifier (Ctx)));
+                end if;
+             end;
+          end if;
+ 
        else
           Context := Parent (Ptr_Typ);
        end if;
  
        --  Generate:
        --    <Ptr_Typ>M : Master_Id renames _Master;
+       --  and add a numeric suffix to the name to ensure that it is
+       --  unique in case other access types in nested constructs
+       --  are homonyms of this one.
  
        Master_Id :=
          Make_Defining_Identifier (Loc,
!           New_External_Name (Chars (Ptr_Typ), 'M', -1));
  
        Master_Decl :=
          Make_Object_Renaming_Declaration (Loc,
*************** package body Exp_Ch9 is
*** 3481,3657 ****
        Set_Master_Id (Ptr_Typ, Master_Id);
     end Build_Master_Renaming;
  
-    -----------------------------------------
-    -- Build_Private_Protected_Declaration --
-    -----------------------------------------
- 
-    function Build_Private_Protected_Declaration
-      (N : Node_Id) return Entity_Id
-    is
-       procedure Analyze_Pragmas (From : Node_Id);
-       --  Analyze all pragmas which follow arbitrary node From
- 
-       procedure Move_Pragmas (From : Node_Id; To : Node_Id);
-       --  Find all suitable source pragmas at the top of subprogram body From's
-       --  declarations and insert them after arbitrary node To.
-       --
-       --  Very similar to Move_Pragmas in sem_ch6 ???
- 
-       ---------------------
-       -- Analyze_Pragmas --
-       ---------------------
- 
-       procedure Analyze_Pragmas (From : Node_Id) is
-          Decl : Node_Id;
- 
-       begin
-          Decl := Next (From);
-          while Present (Decl) loop
-             if Nkind (Decl) = N_Pragma then
-                Analyze_Pragma (Decl);
- 
-             --  No candidate pragmas are available for analysis
- 
-             else
-                exit;
-             end if;
- 
-             Next (Decl);
-          end loop;
-       end Analyze_Pragmas;
- 
-       ------------------
-       -- Move_Pragmas --
-       ------------------
- 
-       procedure Move_Pragmas (From : Node_Id; To : Node_Id) is
-          Decl       : Node_Id;
-          Insert_Nod : Node_Id;
-          Next_Decl  : Node_Id;
- 
-       begin
-          pragma Assert (Nkind (From) = N_Subprogram_Body);
- 
-          --  The pragmas are moved in an order-preserving fashion
- 
-          Insert_Nod := To;
- 
-          --  Inspect the declarations of the subprogram body and relocate all
-          --  candidate pragmas.
- 
-          Decl := First (Declarations (From));
-          while Present (Decl) loop
- 
-             --  Preserve the following declaration for iteration purposes, due
-             --  to possible relocation of a pragma.
- 
-             Next_Decl := Next (Decl);
- 
-             --  We add an exception here for Unreferenced pragmas since the
-             --  internally generated spec gets analyzed within
-             --  Build_Private_Protected_Declaration and will lead to spurious
-             --  warnings due to the way references are checked.
- 
-             if Nkind (Decl) = N_Pragma
-               and then Pragma_Name_Unmapped (Decl) /= Name_Unreferenced
-             then
-                Remove (Decl);
-                Insert_After (Insert_Nod, Decl);
-                Insert_Nod := Decl;
- 
-             --  Skip internally generated code
- 
-             elsif not Comes_From_Source (Decl) then
-                null;
- 
-             --  No candidate pragmas are available for relocation
- 
-             else
-                exit;
-             end if;
- 
-             Decl := Next_Decl;
-          end loop;
-       end Move_Pragmas;
- 
-       --  Local variables
- 
-       Body_Id  : constant Entity_Id  := Defining_Entity (N);
-       Loc      : constant Source_Ptr := Sloc (N);
-       Decl     : Node_Id;
-       Formal   : Entity_Id;
-       Formals  : List_Id;
-       Spec     : Node_Id;
-       Spec_Id  : Entity_Id;
- 
-    --  Start of processing for Build_Private_Protected_Declaration
- 
-    begin
-       Formal := First_Formal (Body_Id);
- 
-       --  The protected operation always has at least one formal, namely the
-       --  object itself, but it is only placed in the parameter list if
-       --  expansion is enabled.
- 
-       if Present (Formal) or else Expander_Active then
-          Formals := Copy_Parameter_List (Body_Id);
-       else
-          Formals := No_List;
-       end if;
- 
-       Spec_Id :=
-         Make_Defining_Identifier (Sloc (Body_Id),
-           Chars => Chars (Body_Id));
- 
-       --  Indicate that the entity comes from source, to ensure that cross-
-       --  reference information is properly generated. The body itself is
-       --  rewritten during expansion, and the body entity will not appear in
-       --  calls to the operation.
- 
-       Set_Comes_From_Source (Spec_Id, True);
- 
-       if Nkind (Specification (N)) = N_Procedure_Specification then
-          Spec :=
-            Make_Procedure_Specification (Loc,
-               Defining_Unit_Name       => Spec_Id,
-               Parameter_Specifications => Formals);
-       else
-          Spec :=
-            Make_Function_Specification (Loc,
-              Defining_Unit_Name       => Spec_Id,
-              Parameter_Specifications => Formals,
-              Result_Definition        =>
-                New_Occurrence_Of (Etype (Body_Id), Loc));
-       end if;
- 
-       Decl := Make_Subprogram_Declaration (Loc, Specification => Spec);
-       Set_Corresponding_Body (Decl, Body_Id);
-       Set_Corresponding_Spec (N,    Spec_Id);
- 
-       Insert_Before (N, Decl);
- 
-       --  Associate all aspects and pragmas of the body with the spec. This
-       --  ensures that these annotations apply to the initial declaration of
-       --  the subprogram body.
- 
-       Move_Aspects (From => N, To => Decl);
-       Move_Pragmas (From => N, To => Decl);
- 
-       Analyze (Decl);
- 
-       --  The analysis of the spec may generate pragmas which require manual
-       --  analysis. Since the generation of the spec and the relocation of the
-       --  annotations is driven by the expansion of the stand-alone body, the
-       --  pragmas will not be analyzed in a timely manner. Do this now.
- 
-       Analyze_Pragmas (Decl);
- 
-       Set_Convention     (Spec_Id, Convention_Protected);
-       Set_Has_Completion (Spec_Id);
- 
-       return Spec_Id;
-    end Build_Private_Protected_Declaration;
- 
     ---------------------------
     -- Build_Protected_Entry --
     ---------------------------
--- 3634,3639 ----
*************** package body Exp_Ch9 is
*** 4001,4006 ****
--- 3983,3995 ----
  
        Set_Is_Eliminated (New_Id, Is_Eliminated (Def_Id));
  
+       --  It seems we should set Has_Nested_Subprogram here, but instead we
+       --  currently set it in Expand_N_Protected_Body, because the entity
+       --  created here isn't the one that Corresponding_Spec of the body
+       --  will later be set to, and that's the entity where it's needed. ???
+ 
+       Set_Has_Nested_Subprogram (New_Id, Has_Nested_Subprogram (Def_Id));
+ 
        if Nkind (Specification (Decl)) = N_Procedure_Specification then
           New_Spec :=
             Make_Procedure_Specification (Loc,
*************** package body Exp_Ch9 is
*** 4101,4108 ****
                      Parameter_Associations => Uactuals));
           end if;
  
!          Lock_Kind := RE_Lock_Read_Only;
! 
        else
           Unprot_Call :=
             Make_Procedure_Call_Statement (Loc,
--- 4090,4106 ----
                      Parameter_Associations => Uactuals));
           end if;
  
!          if Has_Aspect (Pid, Aspect_Exclusive_Functions)
!            and then
!              (No (Find_Value_Of_Aspect (Pid, Aspect_Exclusive_Functions))
!                or else
!                  Is_True (Static_Boolean (Find_Value_Of_Aspect
!                    (Pid, Aspect_Exclusive_Functions))))
!          then
!             Lock_Kind := RE_Lock;
!          else
!             Lock_Kind := RE_Lock_Read_Only;
!          end if;
        else
           Unprot_Call :=
             Make_Procedure_Call_Statement (Loc,
*************** package body Exp_Ch9 is
*** 4514,4525 ****
           Ent_Acc := Entry_Parameters_Type (Ent);
           Conctyp := Etype (Concval);
  
-          --  If prefix is an access type, dereference to obtain the task type
- 
-          if Is_Access_Type (Conctyp) then
-             Conctyp := Designated_Type (Conctyp);
-          end if;
- 
           --  Special case for protected subprogram calls
  
           if Is_Protected_Type (Conctyp)
--- 4512,4517 ----
*************** package body Exp_Ch9 is
*** 4963,4971 ****
        Chain := Activation_Chain_Entity (Owner);
  
        --  Nothing to do when there are no tasks to activate. This is indicated
!       --  by a missing activation chain entity.
  
!       if No (Chain) then
           return;
        end if;
  
--- 4955,4976 ----
        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
!       --  it is a ghost entity.
  
!       if No (Chain) or else Is_Ignored_Ghost_Entity (Chain) then
!          return;
! 
!       --  The availability of the activation chain entity does not ensure
!       --  that we have tasks to activate because it may have been declared
!       --  by the frontend to pass a required extra formal to a build-in-place
!       --  subprogram call. If we are within the scope of a protected type and
!       --  pragma Detect_Blocking is active we can assume that no tasks will be
!       --  activated; if tasks are created in a protected object and this pragma
!       --  is active then the frontend emits a warning and Program_Error is
!       --  raised at runtime.
! 
!       elsif Detect_Blocking and then Within_Protected_Type (Current_Scope) then
           return;
        end if;
  
*************** package body Exp_Ch9 is
*** 5255,5277 ****
              Efam_Type := Make_Temporary (Loc, 'F');
  
              declare
!                Bas : Entity_Id :=
!                        Base_Type
!                          (Etype (Discrete_Subtype_Definition (Parent (Efam))));
! 
!                Bas_Decl : Node_Id := Empty;
!                Lo, Hi   : Node_Id;
  
              begin
!                Get_Index_Bounds
!                  (Discrete_Subtype_Definition (Parent (Efam)), Lo, Hi);
  
!                if Is_Potentially_Large_Family (Bas, Conctyp, Lo, Hi) then
!                   Bas := Make_Temporary (Loc, 'B');
  
!                   Bas_Decl :=
                      Make_Subtype_Declaration (Loc,
!                        Defining_Identifier => Bas,
                         Subtype_Indication  =>
                           Make_Subtype_Indication (Loc,
                             Subtype_Mark =>
--- 5260,5280 ----
              Efam_Type := Make_Temporary (Loc, 'F');
  
              declare
!                Eityp : constant Entity_Id := Entry_Index_Type (Efam);
!                Lo    : constant Node_Id   := Type_Low_Bound  (Eityp);
!                Hi    : constant Node_Id   := Type_High_Bound (Eityp);
!                Bdecl : Node_Id;
!                Bityp : Entity_Id;
  
              begin
!                Bityp := Base_Type (Eityp);
  
!                if Is_Potentially_Large_Family (Bityp, Conctyp, Lo, Hi) then
!                   Bityp := Make_Temporary (Loc, 'B');
  
!                   Bdecl :=
                      Make_Subtype_Declaration (Loc,
!                        Defining_Identifier => Bityp,
                         Subtype_Indication  =>
                           Make_Subtype_Indication (Loc,
                             Subtype_Mark =>
*************** package body Exp_Ch9 is
*** 5284,5292 ****
                                   Make_Integer_Literal
                                     (Loc, Entry_Family_Bound - 1)))));
  
!                   Insert_After (Current_Node, Bas_Decl);
!                   Current_Node := Bas_Decl;
!                   Analyze (Bas_Decl);
                 end if;
  
                 Efam_Decl :=
--- 5287,5295 ----
                                   Make_Integer_Literal
                                     (Loc, Entry_Family_Bound - 1)))));
  
!                   Insert_After (Current_Node, Bdecl);
!                   Current_Node := Bdecl;
!                   Analyze (Bdecl);
                 end if;
  
                 Efam_Decl :=
*************** package body Exp_Ch9 is
*** 5295,5301 ****
                     Type_Definition =>
                       Make_Unconstrained_Array_Definition (Loc,
                         Subtype_Marks =>
!                          (New_List (New_Occurrence_Of (Bas, Loc))),
  
                      Component_Definition =>
                        Make_Component_Definition (Loc,
--- 5298,5304 ----
                     Type_Definition =>
                       Make_Unconstrained_Array_Definition (Loc,
                         Subtype_Marks =>
!                          (New_List (New_Occurrence_Of (Bityp, Loc))),
  
                      Component_Definition =>
                        Make_Component_Definition (Loc,
*************** package body Exp_Ch9 is
*** 5324,5333 ****
                          Constraint   =>
                            Make_Index_Or_Discriminant_Constraint (Loc,
                              Constraints => New_List (
!                               New_Occurrence_Of
!                                 (Etype (Discrete_Subtype_Definition
!                                           (Parent (Efam))), Loc)))))));
! 
           end if;
  
           Next_Entity (Efam);
--- 5327,5334 ----
                          Constraint   =>
                            Make_Index_Or_Discriminant_Constraint (Loc,
                              Constraints => New_List (
!                               New_Occurrence_Of (Entry_Index_Type (Efam),
!                                                  Loc)))))));
           end if;
  
           Next_Entity (Efam);
*************** package body Exp_Ch9 is
*** 5592,5598 ****
           --    _object : prot_typVP := prot_typV (_O);
           --    subtype Jnn is <Type of Index> range Low .. High;
  
!          if Nkind_In (Decl, N_Full_Type_Declaration, N_Object_Declaration) then
              Set_Debug_Info_Needed (Defining_Identifier (Decl));
  
           --  Declaration for the Protection object, discriminals, privals, and
--- 5593,5599 ----
           --    _object : prot_typVP := prot_typV (_O);
           --    subtype Jnn is <Type of Index> range Low .. High;
  
!          if Nkind (Decl) in N_Full_Type_Declaration | N_Object_Declaration then
              Set_Debug_Info_Needed (Defining_Identifier (Decl));
  
           --  Declaration for the Protection object, discriminals, privals, and
*************** package body Exp_Ch9 is
*** 5691,5697 ****
        --  using the index subtype which may mention a discriminant.
  
        if Present (Index) then
!          S := Etype (Discrete_Subtype_Definition (Declaration_Node (Ent)));
  
           Expr :=
             Make_Op_Add (Sloc,
--- 5692,5705 ----
        --  using the index subtype which may mention a discriminant.
  
        if Present (Index) then
!          S := Entry_Index_Type (Ent);
! 
!          --  First make sure the index is in range if requested. The index type
!          --  is the pristine Entry_Index_Type of the entry.
! 
!          if Do_Range_Check (Index) then
!             Generate_Range_Check (Index, S, CE_Range_Check_Failed);
!          end if;
  
           Expr :=
             Make_Op_Add (Sloc,
*************** package body Exp_Ch9 is
*** 5721,5727 ****
              Set_Intval (Num, Intval (Num) + 1);
  
           elsif Ekind (Prev) = E_Entry_Family then
!             S := Etype (Discrete_Subtype_Definition (Declaration_Node (Prev)));
              Lo := Type_Low_Bound  (S);
              Hi := Type_High_Bound (S);
  
--- 5729,5735 ----
              Set_Intval (Num, Intval (Num) + 1);
  
           elsif Ekind (Prev) = E_Entry_Family then
!             S := Entry_Index_Type (Prev);
              Lo := Type_Low_Bound  (S);
              Hi := Type_High_Bound (S);
  
*************** package body Exp_Ch9 is
*** 6006,6014 ****
                    Renamed_Formal :=
                       Make_Selected_Component (Loc,
                         Prefix        =>
!                          Unchecked_Convert_To (
!                            Entry_Parameters_Type (Ent),
!                            New_Occurrence_Of (Ann, Loc)),
                         Selector_Name =>
                           New_Occurrence_Of (Comp, Loc));
  
--- 6014,6023 ----
                    Renamed_Formal :=
                       Make_Selected_Component (Loc,
                         Prefix        =>
!                          Make_Explicit_Dereference (Loc,
!                            Unchecked_Convert_To (
!                              Entry_Parameters_Type (Ent),
!                              New_Occurrence_Of (Ann, Loc))),
                         Selector_Name =>
                           New_Occurrence_Of (Comp, Loc));
  
*************** package body Exp_Ch9 is
*** 6129,6140 ****
        --  If so, barrier may not be properly synchronized.
  
        function Is_Pure_Barrier (N : Node_Id) return Traverse_Result;
!       --  Check whether N follows the Pure_Barriers restriction. Return OK if
        --  so.
  
!       function Is_Simple_Barrier_Name (N : Node_Id) return Boolean;
!       --  Check whether entity name N denotes a component of the protected
!       --  object. This is used to check the Simple_Barrier restriction.
  
        ----------------------
        -- Is_Global_Entity --
--- 6138,6149 ----
        --  If so, barrier may not be properly synchronized.
  
        function Is_Pure_Barrier (N : Node_Id) return Traverse_Result;
!       --  Check whether N meets the Pure_Barriers restriction. Return OK if
        --  so.
  
!       function Is_Simple_Barrier (N : Node_Id) return Boolean;
!       --  Check whether N meets the Simple_Barriers restriction. Return OK if
!       --  so.
  
        ----------------------
        -- Is_Global_Entity --
*************** package body Exp_Ch9 is
*** 6167,6173 ****
                 --  this safe. This is a common (if dubious) idiom.
  
                 elsif S = Scope (Prot)
!                  and then Ekind_In (S, E_Package, E_Generic_Package)
                   and then Nkind (Parent (E)) = N_Object_Declaration
                   and then Nkind (Parent (Parent (E))) = N_Package_Body
                 then
--- 6176,6182 ----
                 --  this safe. This is a common (if dubious) idiom.
  
                 elsif S = Scope (Prot)
!                  and then Is_Package_Or_Generic_Package (S)
                   and then Nkind (Parent (E)) = N_Object_Declaration
                   and then Nkind (Parent (Parent (E))) = N_Package_Body
                 then
*************** package body Exp_Ch9 is
*** 6186,6199 ****
        procedure Check_Unprotected_Barrier is
          new Traverse_Proc (Is_Global_Entity);
  
!       ----------------------------
!       -- Is_Simple_Barrier_Name --
!       ----------------------------
  
!       function Is_Simple_Barrier_Name (N : Node_Id) return Boolean is
           Renamed : Node_Id;
  
        begin
           --  Check if the name is a component of the protected object. If
           --  the expander is active, the component has been transformed into a
           --  renaming of _object.all.component. Original_Node is needed in case
--- 6195,6219 ----
        procedure Check_Unprotected_Barrier is
          new Traverse_Proc (Is_Global_Entity);
  
!       -----------------------
!       -- Is_Simple_Barrier --
!       -----------------------
  
!       function Is_Simple_Barrier (N : Node_Id) return Boolean is
           Renamed : Node_Id;
  
        begin
+          if Is_Static_Expression (N) then
+             return True;
+          elsif Ada_Version >= Ada_2020
+            and then Nkind (N) in N_Selected_Component | N_Indexed_Component
+            and then Statically_Names_Object (N)
+          then
+             --  Restriction relaxed in Ada2020 to allow statically named
+             --  subcomponents.
+             return Is_Simple_Barrier (Prefix (N));
+          end if;
+ 
           --  Check if the name is a component of the protected object. If
           --  the expander is active, the component has been transformed into a
           --  renaming of _object.all.component. Original_Node is needed in case
*************** package body Exp_Ch9 is
*** 6216,6225 ****
                Present (Renamed)
                  and then Nkind (Renamed) = N_Selected_Component
                  and then Chars (Prefix (Prefix (Renamed))) = Name_uObject;
           else
              return Is_Protected_Component (Entity (N));
           end if;
!       end Is_Simple_Barrier_Name;
  
        ---------------------
        -- Is_Pure_Barrier --
--- 6236,6247 ----
                Present (Renamed)
                  and then Nkind (Renamed) = N_Selected_Component
                  and then Chars (Prefix (Prefix (Renamed))) = Name_uObject;
+          elsif not Is_Entity_Name (N) then
+             return False;
           else
              return Is_Protected_Component (Entity (N));
           end if;
!       end Is_Simple_Barrier;
  
        ---------------------
        -- Is_Pure_Barrier --
*************** package body Exp_Ch9 is
*** 6231,6258 ****
              when N_Expanded_Name
                 | N_Identifier
              =>
                 if No (Entity (N)) then
                    return Abandon;
  
!                elsif Is_Universal_Numeric_Type (Entity (N)) then
!                   return OK;
                 end if;
  
                 case Ekind (Entity (N)) is
                    when E_Constant
                       | E_Discriminant
!                      | E_Enumeration_Literal
                       | E_Named_Integer
                       | E_Named_Real
                    =>
!                      return OK;
  
                    when E_Component =>
!                      return OK;
  
                    when E_Variable =>
!                      if Is_Simple_Barrier_Name (N) then
!                         return OK;
                       end if;
  
                    when E_Function =>
--- 6253,6289 ----
              when N_Expanded_Name
                 | N_Identifier
              =>
+ 
+                --  Because of N_Expanded_Name case, return Skip instead of OK.
+ 
                 if No (Entity (N)) then
                    return Abandon;
  
!                elsif Is_Numeric_Type (Entity (N)) then
!                   return Skip;
                 end if;
  
                 case Ekind (Entity (N)) is
                    when E_Constant
                       | E_Discriminant
!                   =>
!                      return Skip;
! 
!                   when E_Enumeration_Literal
                       | E_Named_Integer
                       | E_Named_Real
                    =>
!                      if not Is_OK_Static_Expression (N) then
!                         return Abandon;
!                      end if;
!                      return Skip;
  
                    when E_Component =>
!                      return Skip;
  
                    when E_Variable =>
!                      if Is_Simple_Barrier (N) then
!                         return Skip;
                       end if;
  
                    when E_Function =>
*************** package body Exp_Ch9 is
*** 6263,6269 ****
                       if Is_RTE (Entity (N), RE_Protected_Count)
                         or else Is_RTE (Entity (N), RE_Protected_Count_Entry)
                       then
!                         return OK;
                       end if;
  
                    when others =>
--- 6294,6300 ----
                       if Is_RTE (Entity (N), RE_Protected_Count)
                         or else Is_RTE (Entity (N), RE_Protected_Count_Entry)
                       then
!                         return Skip;
                       end if;
  
                    when others =>
*************** package body Exp_Ch9 is
*** 6290,6312 ****
                    return OK;
                 end if;
  
!             when N_Short_Circuit =>
                 return OK;
  
!             when N_Indexed_Component
!                | N_Selected_Component
!             =>
!                if not Is_Access_Type (Etype (Prefix (N))) then
!                   return OK;
                 end if;
  
              when N_Type_Conversion =>
  
!                --  Conversions to Universal_Integer will not raise constraint
!                --  errors.
  
!                if Cannot_Raise_Constraint_Error (N)
!                  or else Etype (N) = Universal_Integer
                 then
                    return OK;
                 end if;
--- 6321,6369 ----
                    return OK;
                 end if;
  
!             when N_Short_Circuit
!               | N_If_Expression
!               | N_Case_Expression
!             =>
                 return OK;
  
!             when N_Indexed_Component | N_Selected_Component =>
!                if Statically_Names_Object (N) then
!                   return Is_Pure_Barrier (Prefix (N));
!                else
!                   return Abandon;
!                end if;
! 
!             when N_Case_Expression_Alternative =>
!                --  do not traverse Discrete_Choices subtree
!                if Is_Pure_Barrier (Expression (N)) /= Abandon then
!                   return Skip;
!                end if;
! 
!             when N_Expression_With_Actions =>
!                --  this may occur in the case of a Count attribute reference
!                if Original_Node (N) /= N
!                  and then Is_Pure_Barrier (Original_Node (N)) /= Abandon
!                then
!                   return Skip;
!                end if;
! 
!             when N_Membership_Test =>
!                if Is_Pure_Barrier (Left_Opnd (N)) /= Abandon
!                  and then All_Membership_Choices_Static (N)
!                then
!                   return Skip;
                 end if;
  
              when N_Type_Conversion =>
  
!                --  Conversions to Universal_Integer do not raise constraint
!                --  errors. Likewise if the expression's type is statically
!                --  compatible with the target's type.
  
!                if Etype (N) = Universal_Integer
!                  or else Subtypes_Statically_Compatible
!                            (Etype (Expression (N)), Etype (N))
                 then
                    return OK;
                 end if;
*************** package body Exp_Ch9 is
*** 6337,6342 ****
--- 6394,6405 ----
           return;
        end if;
  
+       --  Prevent cascaded errors
+ 
+       if Nkind (Cond) = N_Error then
+          return;
+       end if;
+ 
        --  The body of the entry barrier must be analyzed in the context of the
        --  protected object, but its scope is external to it, just as any other
        --  unprotected version of a protected operation. The specification has
*************** package body Exp_Ch9 is
*** 6366,6387 ****
           Analyze_And_Resolve (Cond, Any_Boolean);
        end if;
  
!       --  Check Pure_Barriers restriction
  
!       if Check_Pure_Barriers (Cond) = Abandon then
!          Check_Restriction (Pure_Barriers, Cond);
        end if;
  
!       --  The Ravenscar profile restricts barriers to simple variables declared
!       --  within the protected object. We also allow Boolean constants, since
!       --  these appear in several published examples and are also allowed by
!       --  other compilers.
  
!       --  Note that after analysis variables in this context will be replaced
!       --  by the corresponding prival, that is to say a renaming of a selected
!       --  component of the form _Object.Var. If expansion is disabled, as
!       --  within a generic, we check that the entity appears in the current
!       --  scope.
  
        if Is_Entity_Name (Cond) then
           Cond_Id := Entity (Cond);
--- 6429,6453 ----
           Analyze_And_Resolve (Cond, Any_Boolean);
        end if;
  
!       --  Check Simple_Barriers and Pure_Barriers restrictions.
!       --  Note that it is safe to be calling Check_Restriction from here, even
!       --  though this is part of the expander, since Expand_Entry_Barrier is
!       --  called from Sem_Ch9 even in -gnatc mode.
  
!       if not Is_Simple_Barrier (Cond) then
!          --  flag restriction violation
!          Check_Restriction (Simple_Barriers, Cond);
        end if;
  
!       if Check_Pure_Barriers (Cond) = Abandon then
!          --  flag restriction violation
!          Check_Restriction (Pure_Barriers, Cond);
  
!          --  Emit warning if barrier contains global entities and is thus
!          --  potentially unsynchronized (if Pure_Barriers restrictions
!          --  are met then no need to check for this).
!          Check_Unprotected_Barrier (Cond);
!       end if;
  
        if Is_Entity_Name (Cond) then
           Cond_Id := Entity (Cond);
*************** package body Exp_Ch9 is
*** 6402,6426 ****
              Set_Declarations (Func_Body, Empty_List);
           end if;
  
!          if Cond_Id = Standard_False or else Cond_Id = Standard_True then
!             return;
! 
!          elsif Is_Simple_Barrier_Name (Cond) then
!             return;
!          end if;
        end if;
- 
-       --  It is not a boolean variable or literal, so check the restriction.
-       --  Note that it is safe to be calling Check_Restriction from here, even
-       --  though this is part of the expander, since Expand_Entry_Barrier is
-       --  called from Sem_Ch9 even in -gnatc mode.
- 
-       Check_Restriction (Simple_Barriers, Cond);
- 
-       --  Emit warning if barrier contains global entities and is thus
-       --  potentially unsynchronized.
- 
-       Check_Unprotected_Barrier (Cond);
     end Expand_Entry_Barrier;
  
     ------------------------------
--- 6468,6479 ----
              Set_Declarations (Func_Body, Empty_List);
           end if;
  
!          --  Note that after analysis variables in this context will be
!          --  replaced by the corresponding prival, that is to say a renaming
!          --  of a selected component of the form _Object.Var. If expansion is
!          --  disabled, as within a generic, we check that the entity appears in
!          --  the current scope.
        end if;
     end Expand_Entry_Barrier;
  
     ------------------------------
*************** package body Exp_Ch9 is
*** 6611,6616 ****
--- 6664,6679 ----
  
           Analyze (N);
  
+          --  Ada 2020 (AI12-0279)
+ 
+          if Has_Yield_Aspect (Eent)
+            and then RTE_Available (RE_Yield)
+          then
+             Insert_Action_After (N,
+               Make_Procedure_Call_Statement (Loc,
+                 New_Occurrence_Of (RTE (RE_Yield), Loc)));
+          end if;
+ 
           --  Discard Entry_Address that was created for it, so it will not be
           --  emitted if this accept statement is in the statement part of a
           --  delay alternative.
*************** package body Exp_Ch9 is
*** 6647,6652 ****
--- 6710,6716 ----
           --  must be properly set.
  
           Set_Parent (Block, Parent (N));
+          Set_Parent (Blkent, Block);
  
           --  Prepend call to Accept_Call to main statement sequence If the
           --  accept has exception handlers, the statement sequence is wrapped
*************** package body Exp_Ch9 is
*** 6997,7003 ****
        Enqueue_Call      : Node_Id;
        Formals           : List_Id;
        Hdle              : List_Id;
-       Handler_Stmt      : Node_Id;
        Index             : Node_Id;
        Lim_Typ_Stmts     : List_Id;
        N_Orig            : Node_Id;
--- 7061,7066 ----
*************** package body Exp_Ch9 is
*** 7084,7091 ****
  
        if Nkind (Ecall) = N_Block_Statement then
           Ecall := First (Statements (Handled_Statement_Sequence (Ecall)));
!          while not Nkind_In (Ecall, N_Procedure_Call_Statement,
!                                     N_Entry_Call_Statement)
           loop
              Next (Ecall);
           end loop;
--- 7147,7154 ----
  
        if Nkind (Ecall) = N_Block_Statement then
           Ecall := First (Statements (Handled_Statement_Sequence (Ecall)));
!          while Nkind (Ecall) not in
!                  N_Procedure_Call_Statement | N_Entry_Call_Statement
           loop
              Next (Ecall);
           end loop;
*************** package body Exp_Ch9 is
*** 7098,7106 ****
           if Ada_Version >= Ada_2005
             and then
               (No (Original_Node (Ecall))
!                or else not Nkind_In (Original_Node (Ecall),
!                                      N_Delay_Relative_Statement,
!                                      N_Delay_Until_Statement))
           then
              Extract_Dispatching_Call (Ecall, Call_Ent, Obj, Actuals, Formals);
  
--- 7161,7167 ----
           if Ada_Version >= Ada_2005
             and then
               (No (Original_Node (Ecall))
!                or else Nkind (Original_Node (Ecall)) not in N_Delay_Statement)
           then
              Extract_Dispatching_Call (Ecall, Call_Ent, Obj, Actuals, Formals);
  
*************** package body Exp_Ch9 is
*** 7674,7689 ****
               Has_Created_Identifier => True,
               Is_Asynchronous_Call_Block => True);
  
-          --  Aborts are not deferred at beginning of exception handlers in
-          --  ZCX mode.
- 
-          if ZCX_Exceptions then
-             Handler_Stmt := Make_Null_Statement (Loc);
- 
-          else
-             Handler_Stmt := Build_Runtime_Call (Loc, RE_Abort_Undefer);
-          end if;
- 
           Stmts := New_List (
             Make_Block_Statement (Loc,
               Handled_Statement_Sequence =>
--- 7735,7740 ----
*************** package body Exp_Ch9 is
*** 7700,7710 ****
                     Make_Implicit_Exception_Handler (Loc,
  
                 --  when Abort_Signal =>
!                --     Abort_Undefer.all;
  
                       Exception_Choices =>
                         New_List (New_Occurrence_Of (Stand.Abort_Signal, Loc)),
!                      Statements => New_List (Handler_Stmt))))),
  
           --  if not Cancelled (Bnn) then
           --     triggered statements
--- 7751,7761 ----
                     Make_Implicit_Exception_Handler (Loc,
  
                 --  when Abort_Signal =>
!                --     null;
  
                       Exception_Choices =>
                         New_List (New_Occurrence_Of (Stand.Abort_Signal, Loc)),
!                      Statements => New_List (Make_Null_Statement (Loc)))))),
  
           --  if not Cancelled (Bnn) then
           --     triggered statements
*************** package body Exp_Ch9 is
*** 8089,8095 ****
           --       <else-statements>
           --    end if;
  
!          N_Stats := New_Copy_List_Tree (Statements (Alt));
  
           Prepend_To (N_Stats,
             Make_Implicit_If_Statement (N,
--- 8140,8146 ----
           --       <else-statements>
           --    end if;
  
!          N_Stats := New_Copy_Separate_List (Statements (Alt));
  
           Prepend_To (N_Stats,
             Make_Implicit_If_Statement (N,
*************** package body Exp_Ch9 is
*** 8133,8139 ****
           --    <dispatching-call>;
           --    <triggering-statements>
  
!          Lim_Typ_Stmts := New_Copy_List_Tree (Statements (Alt));
           Prepend_To (Lim_Typ_Stmts, New_Copy_Tree (Blk));
  
           --  Generate:
--- 8184,8190 ----
           --    <dispatching-call>;
           --    <triggering-statements>
  
!          Lim_Typ_Stmts := New_Copy_Separate_List (Statements (Alt));
           Prepend_To (Lim_Typ_Stmts, New_Copy_Tree (Blk));
  
           --  Generate:
*************** package body Exp_Ch9 is
*** 8599,8604 ****
--- 8650,8656 ----
        Disp_Op_Body : Node_Id;
        New_Op_Body  : Node_Id;
        Op_Body      : Node_Id;
+       Op_Decl      : Node_Id;
        Op_Id        : Entity_Id;
  
        function Build_Dispatching_Subprogram_Body
*************** package body Exp_Ch9 is
*** 8735,8785 ****
                    Current_Node := New_Op_Body;
                    Analyze (New_Op_Body);
  
!                   --  Build the corresponding protected operation. It may
!                   --  appear that this is needed only if this is a visible
!                   --  operation of the type, or if it is an interrupt handler,
!                   --  and this was the strategy used previously in GNAT.
  
!                   --  However, the operation may be exported through a 'Access
!                   --  to an external caller. This is the common idiom in code
!                   --  that uses the Ada 2005 Timing_Events package. As a result
!                   --  we need to produce the protected body for both visible
!                   --  and private operations, as well as operations that only
!                   --  have a body in the source, and for which we create a
!                   --  declaration in the protected body itself.
  
                    if Present (Corresponding_Spec (Op_Body)) then
!                      if Lock_Free_Active then
!                         New_Op_Body :=
!                           Build_Lock_Free_Protected_Subprogram_Body
!                             (Op_Body, Pid, Specification (New_Op_Body));
!                      else
!                         New_Op_Body :=
!                           Build_Protected_Subprogram_Body
!                             (Op_Body, Pid, Specification (New_Op_Body));
!                      end if;
  
!                      Insert_After (Current_Node, New_Op_Body);
!                      Analyze (New_Op_Body);
  
!                      Current_Node := New_Op_Body;
  
!                      --  Generate an overriding primitive operation body for
!                      --  this subprogram if the protected type implements an
!                      --  interface.
  
!                      if Ada_Version >= Ada_2005
!                        and then
!                          Present (Interfaces (Corresponding_Record_Type (Pid)))
!                      then
!                         Disp_Op_Body :=
!                           Build_Dispatching_Subprogram_Body
!                             (Op_Body, Pid, New_Op_Body);
  
!                         Insert_After (Current_Node, Disp_Op_Body);
!                         Analyze (Disp_Op_Body);
  
!                         Current_Node := Disp_Op_Body;
                       end if;
                    end if;
                 end if;
--- 8787,8854 ----
                    Current_Node := New_Op_Body;
                    Analyze (New_Op_Body);
  
!                   --  When the original protected body has nested subprograms,
!                   --  the new body also has them, so set the flag accordingly
!                   --  and reset the scopes of the top-level nested subprograms
!                   --  and other declaration entities so that they now refer to
!                   --  the new body's entity. (It would preferable to do this
!                   --  within Build_Protected_Sub_Specification, which is called
!                   --  from Build_Unprotected_Subprogram_Body, but the needed
!                   --  subprogram entity isn't available via Corresponding_Spec
!                   --  until after the above Analyze call.)
  
!                   if Has_Nested_Subprogram (Corresponding_Spec (Op_Body)) then
!                      Set_Has_Nested_Subprogram
!                        (Corresponding_Spec (New_Op_Body));
! 
!                      Reset_Scopes_To
!                        (New_Op_Body, Corresponding_Spec (New_Op_Body));
!                   end if;
! 
!                   --  Build the corresponding protected operation. This is
!                   --  needed only if this is a public or private operation of
!                   --  the type.
! 
!                   --  Why do we need to test for Corresponding_Spec being
!                   --  present here when it's assumed to be set further above
!                   --  in the Is_Eliminated test???
  
                    if Present (Corresponding_Spec (Op_Body)) then
!                      Op_Decl :=
!                        Unit_Declaration_Node (Corresponding_Spec (Op_Body));
  
!                      if Nkind (Parent (Op_Decl)) = N_Protected_Definition then
!                         if Lock_Free_Active then
!                            New_Op_Body :=
!                              Build_Lock_Free_Protected_Subprogram_Body
!                                (Op_Body, Pid, Specification (New_Op_Body));
!                         else
!                            New_Op_Body :=
!                              Build_Protected_Subprogram_Body (
!                                Op_Body, Pid, Specification (New_Op_Body));
!                         end if;
  
!                         Insert_After (Current_Node, New_Op_Body);
!                         Analyze (New_Op_Body);
!                         Current_Node := New_Op_Body;
  
!                         --  Generate an overriding primitive operation body for
!                         --  this subprogram if the protected type implements
!                         --  an interface.
  
!                         if Ada_Version >= Ada_2005
!                           and then Present (Interfaces (
!                                      Corresponding_Record_Type (Pid)))
!                         then
!                            Disp_Op_Body :=
!                              Build_Dispatching_Subprogram_Body (
!                                Op_Body, Pid, New_Op_Body);
  
!                            Insert_After (Current_Node, Disp_Op_Body);
!                            Analyze (Disp_Op_Body);
  
!                            Current_Node := Disp_Op_Body;
!                         end if;
                       end if;
                    end if;
                 end if;
*************** package body Exp_Ch9 is
*** 9992,9997 ****
--- 10061,10067 ----
        Conc_Typ : Entity_Id;
        Concval  : Node_Id;
        Ename    : Node_Id;
+       Enc_Subp : Entity_Id;
        Index    : Node_Id;
        Old_Typ  : Entity_Id;
  
*************** package body Exp_Ch9 is
*** 10044,10051 ****
  
           Acc_Ent := N;
           while Present (Acc_Ent)
!            and then not Nkind_In (Acc_Ent, N_Accept_Statement,
!                                            N_Entry_Body)
           loop
              Acc_Ent := Parent (Acc_Ent);
           end loop;
--- 10114,10120 ----
  
           Acc_Ent := N;
           while Present (Acc_Ent)
!            and then Nkind (Acc_Ent) not in N_Accept_Statement | N_Entry_Body
           loop
              Acc_Ent := Parent (Acc_Ent);
           end loop;
*************** package body Exp_Ch9 is
*** 10209,10216 ****
  
           declare
              Elmt : Elmt_Id;
!             Op   : Entity_Id;
!             pragma Warnings (Off, Op);
  
           begin
              Elmt := First_Elmt (Primitive_Operations (Etype (Conc_Typ)));
--- 10278,10284 ----
  
           declare
              Elmt : Elmt_Id;
!             Op   : Entity_Id := Empty;
  
           begin
              Elmt := First_Elmt (Primitive_Operations (Etype (Conc_Typ)));
*************** package body Exp_Ch9 is
*** 10220,10225 ****
--- 10288,10295 ----
                 Next_Elmt (Elmt);
              end loop;
  
+             pragma Assert (Present (Op));
+ 
              return
                Make_Procedure_Call_Statement (Loc,
                  Name                   => New_Occurrence_Of (Op, Loc),
*************** package body Exp_Ch9 is
*** 10497,10523 ****
        Extract_Entry (N, Concval, Ename, Index);
        Conc_Typ := Etype (Concval);
  
!       --  If the prefix is an access to class-wide type, dereference to get
!       --  object and entry type.
! 
!       if Is_Access_Type (Conc_Typ) then
!          Conc_Typ := Designated_Type (Conc_Typ);
!          Rewrite (Concval,
!            Make_Explicit_Dereference (Loc, Relocate_Node (Concval)));
!          Analyze_And_Resolve (Concval, Conc_Typ);
!       end if;
! 
!       --  Examine the scope stack in order to find nearest enclosing protected
!       --  or task type. This will constitute our invocation source.
  
        Old_Typ := Current_Scope;
        while Present (Old_Typ)
!         and then not Is_Protected_Type (Old_Typ)
!         and then not Is_Task_Type (Old_Typ)
        loop
           Old_Typ := Scope (Old_Typ);
        end loop;
  
        --  Ada 2012 (AI05-0030): We have a dispatching requeue of the form
        --  Concval.Ename where the type of Concval is class-wide concurrent
        --  interface.
--- 10567,10602 ----
        Extract_Entry (N, Concval, Ename, Index);
        Conc_Typ := Etype (Concval);
  
!       --  Examine the scope stack in order to find nearest enclosing concurrent
!       --  type. This will constitute our invocation source.
  
        Old_Typ := Current_Scope;
        while Present (Old_Typ)
!         and then not Is_Concurrent_Type (Old_Typ)
        loop
           Old_Typ := Scope (Old_Typ);
        end loop;
  
+       --  Obtain the innermost enclosing callable construct for use in
+       --  generating a dynamic accessibility check.
+ 
+       Enc_Subp := Current_Scope;
+ 
+       if Ekind (Enc_Subp) not in Entry_Kind | Subprogram_Kind then
+          Enc_Subp := Enclosing_Subprogram (Enc_Subp);
+       end if;
+ 
+       --  Generate a dynamic accessibility check on the target object
+ 
+       Insert_Before_And_Analyze (N,
+         Make_Raise_Program_Error (Loc,
+           Condition =>
+             Make_Op_Gt (Loc,
+               Left_Opnd  => Accessibility_Level (Name (N), Dynamic_Level),
+               Right_Opnd => Make_Integer_Literal (Loc,
+                               Scope_Depth (Enc_Subp))),
+           Reason    => PE_Accessibility_Check_Failed));
+ 
        --  Ada 2012 (AI05-0030): We have a dispatching requeue of the form
        --  Concval.Ename where the type of Concval is class-wide concurrent
        --  interface.
*************** package body Exp_Ch9 is
*** 10630,10636 ****
        Num_Alts       : Nat;
        Num_Accept     : Nat := 0;
        Proc           : Node_Id;
!       Time_Type      : Entity_Id;
        Select_Call    : Node_Id;
  
        Qnam : constant Entity_Id :=
--- 10709,10715 ----
        Num_Alts       : Nat;
        Num_Accept     : Nat := 0;
        Proc           : Node_Id;
!       Time_Type      : Entity_Id := Empty;
        Select_Call    : Node_Id;
  
        Qnam : constant Entity_Id :=
*************** package body Exp_Ch9 is
*** 10918,10924 ****
           --  Accept with no body (followed by trailing statements)
  
           else
!             Alt_Stats := Empty_List;
           end if;
  
           Ensure_Statement_Present (Sloc (Astmt), Alt);
--- 10997,11019 ----
           --  Accept with no body (followed by trailing statements)
  
           else
!             declare
!                Entry_Id : constant Entity_Id :=
!                            Entity (Entry_Direct_Name (Accept_Statement (Alt)));
!             begin
!                --  Ada 2020 (AI12-0279)
! 
!                if Has_Yield_Aspect (Entry_Id)
!                  and then RTE_Available (RE_Yield)
!                then
!                   Alt_Stats :=
!                     New_List (
!                       Make_Procedure_Call_Statement (Sloc (Proc),
!                         New_Occurrence_Of (RTE (RE_Yield), Sloc (Proc))));
!                else
!                   Alt_Stats := Empty_List;
!                end if;
!             end;
           end if;
  
           Ensure_Statement_Present (Sloc (Astmt), Alt);
*************** package body Exp_Ch9 is
*** 11132,11137 ****
--- 11227,11233 ----
                 then
                    null;
                 else
+                   --  Move this check to sem???
                    Error_Msg_NE (
                      "& is not a time type (RM 9.6(6))",
                         Expression (Delay_Statement (Alt)), Time_Type);
*************** package body Exp_Ch9 is
*** 11251,11256 ****
--- 11347,11354 ----
           Delay_Min :=
             Make_Defining_Identifier (Loc, New_External_Name ('D', 3));
  
+          pragma Assert (Present (Time_Type));
+ 
           Append_To (Decls,
             Make_Object_Declaration (Loc,
               Defining_Identifier => Delay_Val,
*************** package body Exp_Ch9 is
*** 12449,12455 ****
        begin
           Ent := First_Entity (Tasktyp);
           while Present (Ent) loop
!             if Ekind_In (Ent, E_Entry, E_Entry_Family) then
                 Build_Contract_Wrapper (Ent, N);
              end if;
  
--- 12547,12553 ----
        begin
           Ent := First_Entity (Tasktyp);
           while Present (Ent) loop
!             if Ekind (Ent) in E_Entry | E_Entry_Family then
                 Build_Contract_Wrapper (Ent, N);
              end if;
  
*************** package body Exp_Ch9 is
*** 12572,12579 ****
     --  global references if within an instantiation.
  
     procedure Expand_N_Timed_Entry_Call (N : Node_Id) is
-       Loc : constant Source_Ptr := Sloc (N);
- 
        Actuals        : List_Id;
        Blk_Typ        : Entity_Id;
        Call           : Node_Id;
--- 12670,12675 ----
*************** package body Exp_Ch9 is
*** 12596,12601 ****
--- 12692,12698 ----
        Index          : Node_Id;
        Is_Disp_Select : Boolean;
        Lim_Typ_Stmts  : List_Id;
+       Loc            : constant Source_Ptr := Sloc (D_Stat);
        N_Stats        : List_Id;
        Obj            : Entity_Id;
        Param          : Node_Id;
*************** package body Exp_Ch9 is
*** 12640,12647 ****
  
        if Nkind (E_Call) = N_Block_Statement then
           E_Call := First (Statements (Handled_Statement_Sequence (E_Call)));
!          while not Nkind_In (E_Call, N_Procedure_Call_Statement,
!                                      N_Entry_Call_Statement)
           loop
              Next (E_Call);
           end loop;
--- 12737,12744 ----
  
        if Nkind (E_Call) = N_Block_Statement then
           E_Call := First (Statements (Handled_Statement_Sequence (E_Call)));
!          while Nkind (E_Call) not in
!                  N_Procedure_Call_Statement | N_Entry_Call_Statement
           loop
              Next (E_Call);
           end loop;
*************** package body Exp_Ch9 is
*** 13344,13355 ****
  
        Context := Parent (N);
        while Present (Context) loop
!          if Nkind_In (Context, N_Entry_Body,
!                                N_Extended_Return_Statement,
!                                N_Package_Body,
!                                N_Package_Declaration,
!                                N_Subprogram_Body,
!                                N_Task_Body)
           then
              exit;
  
--- 13441,13452 ----
  
        Context := Parent (N);
        while Present (Context) loop
!          if Nkind (Context) in N_Entry_Body
!                              | N_Extended_Return_Statement
!                              | N_Package_Body
!                              | N_Package_Declaration
!                              | N_Subprogram_Body
!                              | N_Task_Body
           then
              exit;
  
*************** package body Exp_Ch9 is
*** 13400,13405 ****
--- 13497,13506 ----
           if Nkind (Context) = N_Block_Statement then
              Context_Id := Entity (Identifier (Context));
  
+             if No (Declarations (Context)) then
+                Set_Declarations (Context, New_List);
+             end if;
+ 
           elsif Nkind (Context) = N_Entry_Body then
              Context_Id := Defining_Identifier (Context);
  
*************** package body Exp_Ch9 is
*** 13448,13455 ****
        if Ada_Version >= Ada_2005 then
           while Is_Internal (S) loop
              if Nkind (Parent (S)) = N_Block_Statement
!               and then
!                 Nkind (Original_Node (Parent (S))) = N_Procedure_Call_Statement
              then
                 exit;
  
--- 13549,13555 ----
        if Ada_Version >= Ada_2005 then
           while Is_Internal (S) loop
              if Nkind (Parent (S)) = N_Block_Statement
!               and then Has_Master_Entity (S)
              then
                 exit;
  
*************** package body Exp_Ch9 is
*** 13475,13481 ****
     begin
        First_Op := First (D);
        while Present (First_Op)
!         and then not Nkind_In (First_Op, N_Subprogram_Body, N_Entry_Body)
        loop
           Next (First_Op);
        end loop;
--- 13575,13581 ----
     begin
        First_Op := First (D);
        while Present (First_Op)
!         and then Nkind (First_Op) not in N_Subprogram_Body | N_Entry_Body
        loop
           Next (First_Op);
        end loop;
*************** package body Exp_Ch9 is
*** 13953,13960 ****
        --  of this type should have been removed during semantic analysis.
  
        Pdec := Parent (Ptyp);
!       while not Nkind_In (Pdec, N_Protected_Type_Declaration,
!                                 N_Single_Protected_Declaration)
        loop
           Next (Pdec);
        end loop;
--- 14053,14060 ----
        --  of this type should have been removed during semantic analysis.
  
        Pdec := Parent (Ptyp);
!       while Nkind (Pdec) not in
!               N_Protected_Type_Declaration | N_Single_Protected_Declaration
        loop
           Next (Pdec);
        end loop;
*************** package body Exp_Ch9 is
*** 14385,14392 ****
        --  this type should have been removed during semantic analysis.
  
        Tdec := Parent (Ttyp);
!       while not Nkind_In (Tdec, N_Task_Type_Declaration,
!                                 N_Single_Task_Declaration)
        loop
           Next (Tdec);
        end loop;
--- 14485,14492 ----
        --  this type should have been removed during semantic analysis.
  
        Tdec := Parent (Ttyp);
!       while Nkind (Tdec) not in
!               N_Task_Type_Declaration | N_Single_Task_Declaration
        loop
           Next (Tdec);
        end loop;
*************** package body Exp_Ch9 is
*** 14735,14742 ****
  
        Next_Op := Next (N);
        while Present (Next_Op)
!         and then not Nkind_In (Next_Op,
!            N_Subprogram_Body, N_Entry_Body, N_Expression_Function)
        loop
           Next (Next_Op);
        end loop;
--- 14835,14842 ----
  
        Next_Op := Next (N);
        while Present (Next_Op)
!         and then Nkind (Next_Op) not in
!                    N_Subprogram_Body | N_Entry_Body | N_Expression_Function
        loop
           Next (Next_Op);
        end loop;
*************** package body Exp_Ch9 is
*** 14754,14767 ****
     begin
        Stmt := First (Stats);
        while Nkind (Stmt) /= N_Empty
!         and then (Nkind_In (Stmt, N_Null_Statement, N_Label)
                     or else
                       (Nkind (Stmt) = N_Pragma
                         and then
!                          Nam_In (Pragma_Name_Unmapped (Stmt),
!                                  Name_Unreferenced,
!                                  Name_Unmodified,
!                                  Name_Warnings)))
        loop
           Next (Stmt);
        end loop;
--- 14854,14866 ----
     begin
        Stmt := First (Stats);
        while Nkind (Stmt) /= N_Empty
!         and then (Nkind (Stmt) in N_Null_Statement | N_Label
                     or else
                       (Nkind (Stmt) = N_Pragma
                         and then
!                          Pragma_Name_Unmapped (Stmt) in Name_Unreferenced
!                                                       | Name_Unmodified
!                                                       | Name_Warnings))
        loop
           Next (Stmt);
        end loop;
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_ch9.ads gcc-11.1.0/gcc/ada/exp_ch9.ads
*** gcc-10.3.0/gcc/ada/exp_ch9.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_ch9.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Ch9 is
*** 55,60 ****
--- 55,66 ----
     --  interface, ensure that the designated type has a _master and generate
     --  a renaming of the said master to service the access type.
  
+    function Build_Master_Declaration (Loc : Source_Ptr) return Node_Id;
+    --  For targets supporting tasks, generate:
+    --      _Master : constant Integer := Current_Master.all;
+    --  For targets where tasks or tasking hierarchies are prohibited, generate:
+    --      _Master : constant Master_Id := 3;
+ 
     procedure Build_Master_Entity (Obj_Or_Typ : Entity_Id);
     --  Given the name of an object or a type which is either a task, contains
     --  tasks or designates tasks, create a _master in the appropriate scope
*************** package Exp_Ch9 is
*** 72,88 ****
     --  where _master denotes the task master of the enclosing context. Ins_Nod
     --  is used to provide a specific insertion node for the renaming.
  
-    function Build_Private_Protected_Declaration (N : Node_Id) return Entity_Id;
-    --  A subprogram body without a previous spec that appears in a protected
-    --  body must be expanded separately to create a subprogram declaration
-    --  for it, in order to resolve internal calls to it from other protected
-    --  operations. It would seem that no locking version of the operation is
-    --  needed, but in fact, in Ada 2005 the subprogram may be used in a call-
-    --  back, and therefore a protected version of the operation must be
-    --  generated as well.
-    --
-    --  Possibly factor this with Exp_Dist.Copy_Specification ???
- 
     function Build_Protected_Sub_Specification
       (N        : Node_Id;
        Prot_Typ : Entity_Id;
--- 78,83 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_code.adb gcc-11.1.0/gcc/ada/exp_code.adb
*** gcc-10.3.0/gcc/ada/exp_code.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_code.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_code.ads gcc-11.1.0/gcc/ada/exp_code.ads
*** gcc-10.3.0/gcc/ada/exp_code.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_code.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_dbug.adb gcc-11.1.0/gcc/ada/exp_dbug.adb
*** gcc-10.3.0/gcc/ada/exp_dbug.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_dbug.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Dbug is
*** 133,143 ****
     --  Determine whether the bounds of E match the size of the type. This is
     --  used to determine whether encoding is required for a discrete type.
  
-    function Is_Handled_Scale_Factor (U : Ureal) return Boolean;
-    --  The argument U is the Small_Value of a fixed-point type. This function
-    --  determines whether the back-end can handle this scale factor. When it
-    --  cannot, we have to output a GNAT encoding for the corresponding type.
- 
     procedure Output_Homonym_Numbers_Suffix;
     --  If homonym numbers are stored, then output them into Name_Buffer
  
--- 133,138 ----
*************** package body Exp_Dbug is
*** 247,253 ****
  
        --  Here we check if the static bounds match the natural size, which is
        --  the size passed through with the debugging information. This is the
!       --  Esize rounded up to 8, 16, 32 or 64 as appropriate.
  
        else
           declare
--- 242,248 ----
  
        --  Here we check if the static bounds match the natural size, which is
        --  the size passed through with the debugging information. This is the
!       --  Esize rounded up to 8, 16, 32, 64 or 128 as appropriate.
  
        else
           declare
*************** package body Exp_Dbug is
*** 261,268 ****
                 Siz := Uint_16;
              elsif Esize (E) <= 32 then
                 Siz := Uint_32;
!             else
                 Siz := Uint_64;
              end if;
  
              if Is_Modular_Integer_Type (E) or else Is_Enumeration_Type (E) then
--- 256,265 ----
                 Siz := Uint_16;
              elsif Esize (E) <= 32 then
                 Siz := Uint_32;
!             elsif Esize (E) <= 64 then
                 Siz := Uint_64;
+             else
+                Siz := Uint_128;
              end if;
  
              if Is_Modular_Integer_Type (E) or else Is_Enumeration_Type (E) then
*************** package body Exp_Dbug is
*** 424,430 ****
                    --  anyway, so the renaming entity will be available in
                    --  debuggers.
  
!                   exit when not Ekind_In (Sel_Id, E_Component, E_Discriminant);
  
                    First_Bit := Normalized_First_Bit (Sel_Id);
                    Enable :=
--- 421,427 ----
                    --  anyway, so the renaming entity will be available in
                    --  debuggers.
  
!                   exit when Ekind (Sel_Id) not in E_Component | E_Discriminant;
  
                    First_Bit := Normalized_First_Bit (Sel_Id);
                    Enable :=
*************** package body Exp_Dbug is
*** 592,618 ****
           return Make_Null_Statement (Loc);
     end Debug_Renaming_Declaration;
  
-    -----------------------------
-    -- Is_Handled_Scale_Factor --
-    -----------------------------
- 
-    function Is_Handled_Scale_Factor (U : Ureal) return Boolean is
-    begin
-       --  Keep in sync with gigi (see E_*_Fixed_Point_Type handling in
-       --  decl.c:gnat_to_gnu_entity).
- 
-       if UI_Eq (Numerator (U), Uint_1) then
-          if Rbase (U) = 2 or else Rbase (U) = 10 then
-             return True;
-          end if;
-       end if;
- 
-       return
-         (UI_Is_In_Int_Range (Norm_Num (U))
-            and then
-          UI_Is_In_Int_Range (Norm_Den (U)));
-    end Is_Handled_Scale_Factor;
- 
     ----------------------
     -- Get_Encoded_Name --
     ----------------------
--- 589,594 ----
*************** package body Exp_Dbug is
*** 669,680 ****
  
        Has_Suffix := True;
  
!       --  Fixed-point case: generate GNAT encodings when asked to or when we
!       --  know the back-end will not be able to handle the scale factor.
  
        if Is_Fixed_Point_Type (E)
!         and then (GNAT_Encodings /= DWARF_GNAT_Encodings_Minimal
!                    or else not Is_Handled_Scale_Factor (Small_Value (E)))
        then
           Get_External_Name (E, True, "XF_");
           Add_Real_To_Buffer (Delta_Value (E));
--- 645,654 ----
  
        Has_Suffix := True;
  
!       --  Fixed-point case: generate GNAT encodings when asked to
  
        if Is_Fixed_Point_Type (E)
!         and then GNAT_Encodings = DWARF_GNAT_Encodings_All
        then
           Get_External_Name (E, True, "XF_");
           Add_Real_To_Buffer (Delta_Value (E));
*************** package body Exp_Dbug is
*** 839,849 ****
  
        --  Case of interface name being used
  
!       if Ekind_In (E, E_Constant,
!                       E_Exception,
!                       E_Function,
!                       E_Procedure,
!                       E_Variable)
          and then Present (Interface_Name (E))
          and then No (Address_Clause (E))
          and then not Has_Suffix
--- 813,823 ----
  
        --  Case of interface name being used
  
!       if Ekind (E) in E_Constant
!                     | E_Exception
!                     | E_Function
!                     | E_Procedure
!                     | E_Variable
          and then Present (Interface_Name (E))
          and then No (Address_Clause (E))
          and then not Has_Suffix
*************** package body Exp_Dbug is
*** 874,880 ****
           if Is_Generic_Instance (E)
             and then Is_Subprogram (E)
             and then not Is_Compilation_Unit (Scope (E))
!            and then Ekind_In (Scope (E), E_Package, E_Package_Body)
             and then Present (Related_Instance (Scope (E)))
           then
              E := Related_Instance (Scope (E));
--- 848,854 ----
           if Is_Generic_Instance (E)
             and then Is_Subprogram (E)
             and then not Is_Compilation_Unit (Scope (E))
!            and then Ekind (Scope (E)) in E_Package | E_Package_Body
             and then Present (Related_Instance (Scope (E)))
           then
              E := Related_Instance (Scope (E));
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_dbug.ads gcc-11.1.0/gcc/ada/exp_dbug.ads
*** gcc-10.3.0/gcc/ada/exp_dbug.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_dbug.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_disp.adb gcc-11.1.0/gcc/ada/exp_disp.adb
*** gcc-10.3.0/gcc/ada/exp_disp.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_disp.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Disp is
*** 389,396 ****
              --  Handle full type declarations and derivations of library level
              --  tagged types
  
!             elsif Nkind_In (D, N_Full_Type_Declaration,
!                                N_Derived_Type_Definition)
                and then Is_Library_Level_Tagged_Type (Defining_Entity (D))
                and then Ekind (Defining_Entity (D)) /= E_Record_Subtype
                and then not Is_Private_Type (Defining_Entity (D))
--- 389,396 ----
              --  Handle full type declarations and derivations of library level
              --  tagged types
  
!             elsif Nkind (D) in
!                     N_Full_Type_Declaration | N_Derived_Type_Definition
                and then Is_Library_Level_Tagged_Type (Defining_Entity (D))
                and then Ekind (Defining_Entity (D)) /= E_Record_Subtype
                and then not Is_Private_Type (Defining_Entity (D))
*************** package body Exp_Disp is
*** 643,670 ****
        elsif TSS_Name = TSS_Deep_Finalize then
           return Uint_9;
  
        --  In VM targets unconditionally allow obtaining the position associated
        --  with predefined interface primitives since in these platforms any
        --  tagged type has these primitives.
  
        elsif Ada_Version >= Ada_2005 or else not Tagged_Type_Expansion then
           if Chars (E) = Name_uDisp_Asynchronous_Select then
!             return Uint_10;
  
           elsif Chars (E) = Name_uDisp_Conditional_Select then
!             return Uint_11;
  
           elsif Chars (E) = Name_uDisp_Get_Prim_Op_Kind then
!             return Uint_12;
  
           elsif Chars (E) = Name_uDisp_Get_Task_Id then
!             return Uint_13;
  
           elsif Chars (E) = Name_uDisp_Requeue then
!             return Uint_14;
  
           elsif Chars (E) = Name_uDisp_Timed_Select then
!             return Uint_15;
           end if;
        end if;
  
--- 643,673 ----
        elsif TSS_Name = TSS_Deep_Finalize then
           return Uint_9;
  
+       elsif TSS_Name = TSS_Put_Image then
+          return Uint_10;
+ 
        --  In VM targets unconditionally allow obtaining the position associated
        --  with predefined interface primitives since in these platforms any
        --  tagged type has these primitives.
  
        elsif Ada_Version >= Ada_2005 or else not Tagged_Type_Expansion then
           if Chars (E) = Name_uDisp_Asynchronous_Select then
!             return Uint_11;
  
           elsif Chars (E) = Name_uDisp_Conditional_Select then
!             return Uint_12;
  
           elsif Chars (E) = Name_uDisp_Get_Prim_Op_Kind then
!             return Uint_13;
  
           elsif Chars (E) = Name_uDisp_Get_Task_Id then
!             return Uint_14;
  
           elsif Chars (E) = Name_uDisp_Requeue then
!             return Uint_15;
  
           elsif Chars (E) = Name_uDisp_Timed_Select then
!             return Uint_16;
           end if;
        end if;
  
*************** package body Exp_Disp is
*** 1020,1028 ****
        --  list including the creation of a new set of matching entities.
  
        declare
!          Old_Formal : Entity_Id := First_Formal (Subp);
!          New_Formal : Entity_Id;
!          Extra      : Entity_Id := Empty;
  
        begin
           if Present (Old_Formal) then
--- 1023,1031 ----
        --  list including the creation of a new set of matching entities.
  
        declare
!          Old_Formal  : Entity_Id := First_Formal (Subp);
!          New_Formal  : Entity_Id;
!          Last_Formal : Entity_Id := Empty;
  
        begin
           if Present (Old_Formal) then
*************** package body Exp_Disp is
*** 1046,1052 ****
                 --  errors when the itype is the completion of a type derived
                 --  from a private type.
  
!                Extra := New_Formal;
                 Next_Formal (Old_Formal);
                 exit when No (Old_Formal);
  
--- 1049,1055 ----
                 --  errors when the itype is the completion of a type derived
                 --  from a private type.
  
!                Last_Formal := New_Formal;
                 Next_Formal (Old_Formal);
                 exit when No (Old_Formal);
  
*************** package body Exp_Disp is
*** 1056,1072 ****
              end loop;
  
              Unlink_Next_Entity (New_Formal);
!             Set_Last_Entity (Subp_Typ, Extra);
           end if;
  
           --  Now that the explicit formals have been duplicated, any extra
!          --  formals needed by the subprogram must be created.
  
!          if Present (Extra) then
!             Set_Extra_Formal (Extra, Empty);
!          end if;
  
!          Create_Extra_Formals (Subp_Typ);
        end;
  
        --  Complete description of pointer type, including size information, as
--- 1059,1114 ----
              end loop;
  
              Unlink_Next_Entity (New_Formal);
!             Set_Last_Entity (Subp_Typ, Last_Formal);
           end if;
  
           --  Now that the explicit formals have been duplicated, any extra
!          --  formals needed by the subprogram must be duplicated; we know
!          --  that extra formals are available because they were added when
!          --  the tagged type was frozen (see Expand_Freeze_Record_Type).
  
!          pragma Assert (Is_Frozen (Typ));
  
!          --  Warning: The addition of the extra formals cannot be performed
!          --  here invoking Create_Extra_Formals since we must ensure that all
!          --  the extra formals of the pointer type and the target subprogram
!          --  match (and for functions that return a tagged type the profile of
!          --  the built subprogram type always returns a class-wide type, which
!          --  may affect the addition of some extra formals).
! 
!          if Present (Last_Formal)
!            and then Present (Extra_Formal (Last_Formal))
!          then
!             Old_Formal := Extra_Formal (Last_Formal);
!             New_Formal := New_Copy (Old_Formal);
!             Set_Scope (New_Formal, Subp_Typ);
! 
!             Set_Extra_Formal (Last_Formal, New_Formal);
!             Set_Extra_Formals (Subp_Typ, New_Formal);
! 
!             if Ekind (Subp) = E_Function
!               and then Present (Extra_Accessibility_Of_Result (Subp))
!               and then Extra_Accessibility_Of_Result (Subp) = Old_Formal
!             then
!                Set_Extra_Accessibility_Of_Result (Subp_Typ, New_Formal);
!             end if;
! 
!             Old_Formal := Extra_Formal (Old_Formal);
!             while Present (Old_Formal) loop
!                Set_Extra_Formal (New_Formal, New_Copy (Old_Formal));
!                New_Formal := Extra_Formal (New_Formal);
!                Set_Scope (New_Formal, Subp_Typ);
! 
!                if Ekind (Subp) = E_Function
!                  and then Present (Extra_Accessibility_Of_Result (Subp))
!                  and then Extra_Accessibility_Of_Result (Subp) = Old_Formal
!                then
!                   Set_Extra_Accessibility_Of_Result (Subp_Typ, New_Formal);
!                end if;
! 
!                Old_Formal := Extra_Formal (Old_Formal);
!             end loop;
!          end if;
        end;
  
        --  Complete description of pointer type, including size information, as
*************** package body Exp_Disp is
*** 1111,1116 ****
--- 1153,1166 ----
        then
           Controlling_Tag := Duplicate_Subexpr (Ctrl_Arg);
  
+       elsif Is_Access_Type (Ctrl_Typ) then
+          Controlling_Tag :=
+            Make_Selected_Component (Loc,
+              Prefix        =>
+                Make_Explicit_Dereference (Loc,
+                  Duplicate_Subexpr_Move_Checks (Ctrl_Arg)),
+              Selector_Name => New_Occurrence_Of (DTC_Entity (Subp), Loc));
+ 
        else
           Controlling_Tag :=
             Make_Selected_Component (Loc,
*************** package body Exp_Disp is
*** 1173,1181 ****
           --  the corresponding object or parameter declaration
  
           elsif Nkind (Controlling_Tag) = N_Identifier
!            and then Nkind_In (Parent (Entity (Controlling_Tag)),
!                               N_Object_Declaration,
!                               N_Parameter_Specification)
           then
              Set_SCIL_Controlling_Tag (SCIL_Node,
                Parent (Entity (Controlling_Tag)));
--- 1223,1230 ----
           --  the corresponding object or parameter declaration
  
           elsif Nkind (Controlling_Tag) = N_Identifier
!            and then Nkind (Parent (Entity (Controlling_Tag))) in
!                       N_Object_Declaration | N_Parameter_Specification
           then
              Set_SCIL_Controlling_Tag (SCIL_Node,
                Parent (Entity (Controlling_Tag)));
*************** package body Exp_Disp is
*** 1185,1193 ****
  
           elsif Nkind (Controlling_Tag) = N_Explicit_Dereference
              and then Nkind (Prefix (Controlling_Tag)) = N_Identifier
!             and then Nkind_In (Parent (Entity (Prefix (Controlling_Tag))),
!                                N_Object_Declaration,
!                                N_Parameter_Specification)
           then
              Set_SCIL_Controlling_Tag (SCIL_Node,
                Parent (Entity (Prefix (Controlling_Tag))));
--- 1234,1241 ----
  
           elsif Nkind (Controlling_Tag) = N_Explicit_Dereference
              and then Nkind (Prefix (Controlling_Tag)) = N_Identifier
!             and then Nkind (Parent (Entity (Prefix (Controlling_Tag)))) in
!                        N_Object_Declaration | N_Parameter_Specification
           then
              Set_SCIL_Controlling_Tag (SCIL_Node,
                Parent (Entity (Prefix (Controlling_Tag))));
*************** package body Exp_Disp is
*** 2134,2139 ****
--- 2182,2192 ----
        end loop;
  
        Thunk_Id := Make_Temporary (Loc, 'T');
+ 
+       --  Note: any change to this symbol name needs to be coordinated
+       --  with GNATcoverage, as that tool relies on it to identify
+       --  thunks and exclude them from source coverage analysis.
+ 
        Set_Ekind (Thunk_Id, Ekind (Prim));
        Set_Is_Thunk (Thunk_Id);
        Set_Convention (Thunk_Id, Convention (Prim));
*************** package body Exp_Disp is
*** 3828,3833 ****
--- 3881,3887 ----
        --  tagged type, when one of its primitive operations has a type in its
        --  profile whose full view has not been analyzed yet. More complex cases
        --  involve composite types that have one private unfrozen subcomponent.
+       --  Move this check to sem???
  
        procedure Export_DT (Typ : Entity_Id; DT : Entity_Id; Index : Nat := 0);
        --  Export the dispatch table DT of tagged type Typ. Required to generate
*************** package body Exp_Disp is
*** 4301,4306 ****
--- 4355,4361 ----
              Append_To (Result,
                Make_Object_Declaration (Loc,
                  Defining_Identifier => OSD,
+                 Constant_Present    => True,
                  Object_Definition   =>
                    Make_Subtype_Indication (Loc,
                      Subtype_Mark =>
*************** package body Exp_Disp is
*** 4338,4344 ****
                      Attribute_Name => Name_Alignment)));
  
              --  In secondary dispatch tables the Typeinfo component contains
!             --  the address of the Object Specific Data (see a-tags.ads)
  
              Append_To (DT_Aggr_List,
                Make_Attribute_Reference (Loc,
--- 4393,4399 ----
                      Attribute_Name => Name_Alignment)));
  
              --  In secondary dispatch tables the Typeinfo component contains
!             --  the address of the Object Specific Data (see a-tags.ads).
  
              Append_To (DT_Aggr_List,
                Make_Attribute_Reference (Loc,
*************** package body Exp_Disp is
*** 4680,4695 ****
        end if;
  
        --  Ensure that the value of Max_Predef_Prims defined in a-tags is
!       --  correct. Valid values are 9 under configurable runtime or 15
        --  with full runtime.
  
        if RTE_Available (RE_Interface_Data) then
!          if Max_Predef_Prims /= 15 then
              Error_Msg_N ("run-time library configuration error", Typ);
              goto Leave;
           end if;
        else
!          if Max_Predef_Prims /= 9 then
              Error_Msg_N ("run-time library configuration error", Typ);
              Error_Msg_CRT ("tagged types", Typ);
              goto Leave;
--- 4735,4750 ----
        end if;
  
        --  Ensure that the value of Max_Predef_Prims defined in a-tags is
!       --  correct. Valid values are 10 under configurable runtime or 16
        --  with full runtime.
  
        if RTE_Available (RE_Interface_Data) then
!          if Max_Predef_Prims /= 16 then
              Error_Msg_N ("run-time library configuration error", Typ);
              goto Leave;
           end if;
        else
!          if Max_Predef_Prims /= 10 then
              Error_Msg_N ("run-time library configuration error", Typ);
              Error_Msg_CRT ("tagged types", Typ);
              goto Leave;
*************** package body Exp_Disp is
*** 7186,7192 ****
        --     is used by Build_Get_Prim_Op_Address to expand dispatching calls
        --     through the primary dispatch table.
  
!       if UI_To_Int (DT_Entry_Count (First_Tag_Component (Typ))) = 0 then
           Analyze_List (Result);
  
        --     Generate:
--- 7241,7247 ----
        --     is used by Build_Get_Prim_Op_Address to expand dispatching calls
        --     through the primary dispatch table.
  
!       if DT_Entry_Count (First_Tag_Component (Typ)) = 0 then
           Analyze_List (Result);
  
        --     Generate:
*************** package body Exp_Disp is
*** 8142,8147 ****
--- 8197,8203 ----
              --  We exclude Input and Output stream operations because
              --  Limited_Controlled inherits useless Input and Output stream
              --  operations from Root_Controlled, which can never be overridden.
+             --  Move this check to sem???
  
              if not Is_TSS (Prim, TSS_Stream_Input)
                   and then
*************** package body Exp_Disp is
*** 8504,8510 ****
  
        --  Propagate the value to the wrapped subprogram (if one is present)
  
!       if Ekind_In (Prim, E_Function, E_Procedure)
          and then Is_Primitive_Wrapper (Prim)
          and then Present (Wrapped_Entity (Prim))
          and then Is_Dispatching_Operation (Wrapped_Entity (Prim))
--- 8560,8566 ----
  
        --  Propagate the value to the wrapped subprogram (if one is present)
  
!       if Ekind (Prim) in E_Function | E_Procedure
          and then Is_Primitive_Wrapper (Prim)
          and then Present (Wrapped_Entity (Prim))
          and then Is_Dispatching_Operation (Wrapped_Entity (Prim))
*************** package body Exp_Disp is
*** 8537,8543 ****
  
        --  Propagate the value to the wrapped subprogram (if one is present)
  
!       if Ekind_In (Prim, E_Function, E_Procedure)
          and then Is_Primitive_Wrapper (Prim)
          and then Present (Wrapped_Entity (Prim))
          and then Is_Dispatching_Operation (Wrapped_Entity (Prim))
--- 8593,8599 ----
  
        --  Propagate the value to the wrapped subprogram (if one is present)
  
!       if Ekind (Prim) in E_Function | E_Procedure
          and then Is_Primitive_Wrapper (Prim)
          and then Present (Wrapped_Entity (Prim))
          and then Is_Dispatching_Operation (Wrapped_Entity (Prim))
*************** package body Exp_Disp is
*** 8674,8680 ****
              --  If the DTC_Entity attribute is already set we can also output
              --  the name of the interface covered by this primitive (if any).
  
!             if Ekind_In (Alias (Prim), E_Function, E_Procedure)
                and then Present (DTC_Entity (Alias (Prim)))
                and then Is_Interface (Scope (DTC_Entity (Alias (Prim))))
              then
--- 8730,8736 ----
              --  If the DTC_Entity attribute is already set we can also output
              --  the name of the interface covered by this primitive (if any).
  
!             if Ekind (Alias (Prim)) in E_Function | E_Procedure
                and then Present (DTC_Entity (Alias (Prim)))
                and then Is_Interface (Scope (DTC_Entity (Alias (Prim))))
              then
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_disp.ads gcc-11.1.0/gcc/ada/exp_disp.ads
*** gcc-10.3.0/gcc/ada/exp_disp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_disp.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Disp is
*** 77,113 ****
     --      TSS_Deep_Finalize (9) - implementation of the finalization
     --      operation Finalize for any non-limited tagged type.
  
!    --      _Disp_Asynchronous_Select (10) - used in the expansion of ATC with
     --      dispatching triggers. Null implementation for limited interfaces,
     --      full body generation for types that implement limited interfaces,
     --      not generated for the rest of the cases. See Expand_N_Asynchronous_
     --      Select in Exp_Ch9 for more information.
  
!    --      _Disp_Conditional_Select (11) - used in the expansion of conditional
     --      selects with dispatching triggers. Null implementation for limited
     --      interfaces, full body generation for types that implement limited
     --      interfaces, not generated for the rest of the cases. See Expand_N_
     --      Conditional_Entry_Call in Exp_Ch9 for more information.
  
!    --      _Disp_Get_Prim_Op_Kind (12) - helper routine used in the expansion
     --      of ATC with dispatching triggers. Null implementation for limited
     --      interfaces, full body generation for types that implement limited
     --      interfaces, not generated for the rest of the cases.
  
!    --      _Disp_Get_Task_Id (13) - helper routine used in the expansion of
     --      Abort, attributes 'Callable and 'Terminated for task interface
     --      class-wide types. Full body generation for task types, null
     --      implementation for limited interfaces, not generated for the rest
     --      of the cases. See Expand_N_Attribute_Reference in Exp_Attr and
     --      Expand_N_Abort_Statement in Exp_Ch9 for more information.
  
!    --      _Disp_Requeue (14) - used in the expansion of dispatching requeue
     --      statements. Null implementation is provided for protected, task
     --      and synchronized interfaces. Protected and task types implementing
     --      concurrent interfaces receive full bodies. See Expand_N_Requeue_
     --      Statement in Exp_Ch9 for more information.
  
!    --      _Disp_Timed_Select (15) - used in the expansion of timed selects
     --      with dispatching triggers. Null implementation for limited
     --      interfaces, full body generation for types that implement limited
     --      interfaces, not generated for the rest of the cases. See Expand_N_
--- 77,116 ----
     --      TSS_Deep_Finalize (9) - implementation of the finalization
     --      operation Finalize for any non-limited tagged type.
  
!    --      Put_Image (10) - implementation of Put_Image attribute for any
!    --      tagged type.
! 
!    --      _Disp_Asynchronous_Select (11) - used in the expansion of ATC with
     --      dispatching triggers. Null implementation for limited interfaces,
     --      full body generation for types that implement limited interfaces,
     --      not generated for the rest of the cases. See Expand_N_Asynchronous_
     --      Select in Exp_Ch9 for more information.
  
!    --      _Disp_Conditional_Select (12) - used in the expansion of conditional
     --      selects with dispatching triggers. Null implementation for limited
     --      interfaces, full body generation for types that implement limited
     --      interfaces, not generated for the rest of the cases. See Expand_N_
     --      Conditional_Entry_Call in Exp_Ch9 for more information.
  
!    --      _Disp_Get_Prim_Op_Kind (13) - helper routine used in the expansion
     --      of ATC with dispatching triggers. Null implementation for limited
     --      interfaces, full body generation for types that implement limited
     --      interfaces, not generated for the rest of the cases.
  
!    --      _Disp_Get_Task_Id (14) - helper routine used in the expansion of
     --      Abort, attributes 'Callable and 'Terminated for task interface
     --      class-wide types. Full body generation for task types, null
     --      implementation for limited interfaces, not generated for the rest
     --      of the cases. See Expand_N_Attribute_Reference in Exp_Attr and
     --      Expand_N_Abort_Statement in Exp_Ch9 for more information.
  
!    --      _Disp_Requeue (15) - used in the expansion of dispatching requeue
     --      statements. Null implementation is provided for protected, task
     --      and synchronized interfaces. Protected and task types implementing
     --      concurrent interfaces receive full bodies. See Expand_N_Requeue_
     --      Statement in Exp_Ch9 for more information.
  
!    --      _Disp_Timed_Select (16) - used in the expansion of timed selects
     --      with dispatching triggers. Null implementation for limited
     --      interfaces, full body generation for types that implement limited
     --      interfaces, not generated for the rest of the cases. See Expand_N_
*************** package Exp_Disp is
*** 139,149 ****
     --      Update the value of constant Max_Predef_Prims in a-tags.ads to
     --      indicate the new number of PPOs.
  
     --      Introduce a new predefined name for the new PPO in Snames.ads and
     --      Snames.adb.
  
     --      Categorize the new PPO name as predefined by adding an entry in
!    --      Is_Predefined_Dispatching_Operation in Exp_Disp.
  
     --      Generate the specification of the new PPO in Make_Predefined_
     --      Primitive_Spec in Exp_Ch3.adb. The Is_Internal flag of the defining
--- 142,154 ----
     --      Update the value of constant Max_Predef_Prims in a-tags.ads to
     --      indicate the new number of PPOs.
  
+    --      Update Exp_Disp.Default_Prim_Op_Position.
+ 
     --      Introduce a new predefined name for the new PPO in Snames.ads and
     --      Snames.adb.
  
     --      Categorize the new PPO name as predefined by adding an entry in
!    --      Is_Predefined_Dispatching_Operation in Sem_Util and Exp_Cg.
  
     --      Generate the specification of the new PPO in Make_Predefined_
     --      Primitive_Spec in Exp_Ch3.adb. The Is_Internal flag of the defining
*************** package Exp_Disp is
*** 156,172 ****
     --      If the new PPO requires a thunk, add an entry in Freeze_Subprogram
     --      in Exp_Ch6.adb.
  
!    --      When generating calls to a PPO, use Find_Prim_Op from Exp_Util.ads
     --      to retrieve the entity of the operation directly.
  
-    --  Number of predefined primitive operations added by the Expander
-    --  for a tagged type. If more predefined primitive operations are
-    --  added, the following items must be changed:
- 
-    --    Ada.Tags.Max_Predef_Prims         - indirect use
-    --    Exp_Disp.Default_Prim_Op_Position - indirect use
-    --    Exp_Disp.Set_All_DT_Position      - direct   use
- 
     procedure Apply_Tag_Checks (Call_Node : Node_Id);
     --  Generate checks required on dispatching calls
  
--- 161,169 ----
     --      If the new PPO requires a thunk, add an entry in Freeze_Subprogram
     --      in Exp_Ch6.adb.
  
!    --      When generating calls to a PPO, use Find_Prim_Op from exp_util.ads
     --      to retrieve the entity of the operation directly.
  
     procedure Apply_Tag_Checks (Call_Node : Node_Id);
     --  Generate checks required on dispatching calls
  
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_dist.adb gcc-11.1.0/gcc/ada/exp_dist.adb
*** gcc-10.3.0/gcc/ada/exp_dist.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_dist.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Dist is
*** 902,908 ****
     -- Local variables and structures --
     ------------------------------------
  
!    RCI_Cache : Node_Id;
     --  Needs comments ???
  
     Output_From_Constrained : constant array (Boolean) of Name_Id :=
--- 902,908 ----
     -- Local variables and structures --
     ------------------------------------
  
!    RCI_Cache : Node_Id := Empty;
     --  Needs comments ???
  
     Output_From_Constrained : constant array (Boolean) of Name_Id :=
*************** package body Exp_Dist is
*** 5296,5302 ****
  
     function Hash (F : Name_Id) return Hash_Index is
     begin
!       return Hash_Index (Natural (F) mod Positive (Hash_Index'Last + 1));
     end Hash;
  
     --------------------------
--- 5296,5302 ----
  
     function Hash (F : Name_Id) return Hash_Index is
     begin
!       return Hash_Index (Integer (F) mod Positive (Hash_Index'Last + 1));
     end Hash;
  
     --------------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_dist.ads gcc-11.1.0/gcc/ada/exp_dist.ads
*** gcc-10.3.0/gcc/ada/exp_dist.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_dist.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_fixd.adb gcc-11.1.0/gcc/ada/exp_fixd.adb
*** gcc-10.3.0/gcc/ada/exp_fixd.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_fixd.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sem_Eval; use Sem_Eval;
*** 37,45 ****
  with Sem_Res;  use Sem_Res;
  with Sem_Util; use Sem_Util;
  with Sinfo;    use Sinfo;
- with Snames;   use Snames;
  with Stand;    use Stand;
  with Tbuild;   use Tbuild;
  with Uintp;    use Uintp;
  with Urealp;   use Urealp;
  
--- 37,45 ----
  with Sem_Res;  use Sem_Res;
  with Sem_Util; use Sem_Util;
  with Sinfo;    use Sinfo;
  with Stand;    use Stand;
  with Tbuild;   use Tbuild;
+ with Ttypes;   use Ttypes;
  with Uintp;    use Uintp;
  with Urealp;   use Urealp;
  
*************** package body Exp_Fixd is
*** 56,63 ****
     --  set the Etype values correctly. In addition, setting the Etype ensures
     --  that the analyzer does not try to redetermine the type when the node
     --  is analyzed (which would be wrong, since in the case where we set the
!    --  Treat_Fixed_As_Integer or Conversion_OK flags, it would think it was
!    --  still dealing with a normal fixed-point operation and mess it up).
  
     function Build_Conversion
       (N     : Node_Id;
--- 56,63 ----
     --  set the Etype values correctly. In addition, setting the Etype ensures
     --  that the analyzer does not try to redetermine the type when the node
     --  is analyzed (which would be wrong, since in the case where we set the
!    --  Conversion_OK flag, it would think it was still dealing with a normal
!    --  fixed-point operation and mess it up).
  
     function Build_Conversion
       (N     : Node_Id;
*************** package body Exp_Fixd is
*** 68,74 ****
     --  Build an expression that converts the expression Expr to type Typ,
     --  taking the source location from Sloc (N). If the conversions involve
     --  fixed-point types, then the Conversion_OK flag will be set so that the
!    --  resulting conversions do not get re-expanded. On return the resulting
     --  node has its Etype set. If Rchk is set, then Do_Range_Check is set
     --  in the resulting conversion node. If Trunc is set, then the
     --  Float_Truncate flag is set on the conversion, which must be from
--- 68,74 ----
     --  Build an expression that converts the expression Expr to type Typ,
     --  taking the source location from Sloc (N). If the conversions involve
     --  fixed-point types, then the Conversion_OK flag will be set so that the
!    --  resulting conversions do not get re-expanded. On return, the resulting
     --  node has its Etype set. If Rchk is set, then Do_Range_Check is set
     --  in the resulting conversion node. If Trunc is set, then the
     --  Float_Truncate flag is set on the conversion, which must be from
*************** package body Exp_Fixd is
*** 79,90 ****
     --  expressions, using the source location from Sloc (N). The operands are
     --  either both Universal_Real, in which case Build_Divide differs from
     --  Make_Op_Divide only in that the Etype of the resulting node is set (to
!    --  Universal_Real), or they can be integer types. In this case the integer
!    --  types need not be the same, and Build_Divide converts the operand with
!    --  the smaller sized type to match the type of the other operand and sets
!    --  this as the result type. The Rounded_Result flag of the result in this
!    --  case is set from the Rounded_Result flag of node N. On return, the
!    --  resulting node is analyzed, and has its Etype set.
  
     function Build_Double_Divide
       (N       : Node_Id;
--- 79,91 ----
     --  expressions, using the source location from Sloc (N). The operands are
     --  either both Universal_Real, in which case Build_Divide differs from
     --  Make_Op_Divide only in that the Etype of the resulting node is set (to
!    --  Universal_Real), or they can be integer or fixed-point types. In this
!    --  case the types need not be the same, and Build_Divide chooses a type
!    --  long enough to hold both operands (i.e. the size of the longer of the
!    --  two operand types), and both operands are converted to this type. The
!    --  Etype of the result is also set to this value. The Rounded_Result flag
!    --  of the result in this case is set from the Rounded_Result flag of node
!    --  N. On return, the resulting node has its Etype set.
  
     function Build_Double_Divide
       (N       : Node_Id;
*************** package body Exp_Fixd is
*** 92,98 ****
     --  Returns a node corresponding to the value X/(Y*Z) using the source
     --  location from Sloc (N). The division is rounded if the Rounded_Result
     --  flag of N is set. The integer types of X, Y, Z may be different. On
!    --  return the resulting node is analyzed, and has its Etype set.
  
     procedure Build_Double_Divide_Code
       (N        : Node_Id;
--- 93,99 ----
     --  Returns a node corresponding to the value X/(Y*Z) using the source
     --  location from Sloc (N). The division is rounded if the Rounded_Result
     --  flag of N is set. The integer types of X, Y, Z may be different. On
!    --  return, the resulting node has its Etype set.
  
     procedure Build_Double_Divide_Code
       (N        : Node_Id;
*************** package body Exp_Fixd is
*** 111,123 ****
     --  expressions, using the source location from Sloc (N). The operands are
     --  either both Universal_Real, in which case Build_Multiply differs from
     --  Make_Op_Multiply only in that the Etype of the resulting node is set (to
!    --  Universal_Real), or they can be integer types. In this case the integer
!    --  types need not be the same, and Build_Multiply chooses a type long
!    --  enough to hold the product (i.e. twice the size of the longer of the two
!    --  operand types), and both operands are converted to this type. The Etype
!    --  of the result is also set to this value. However, the result can never
!    --  overflow Integer_64, so this is the largest type that is ever generated.
!    --  On return, the resulting node is analyzed and has its Etype set.
  
     function Build_Rem (N : Node_Id; L, R : Node_Id) return Node_Id;
     --  Builds an N_Op_Rem node from the given left and right operand
--- 112,122 ----
     --  expressions, using the source location from Sloc (N). The operands are
     --  either both Universal_Real, in which case Build_Multiply differs from
     --  Make_Op_Multiply only in that the Etype of the resulting node is set (to
!    --  Universal_Real), or they can be integer or fixed-point types. In this
!    --  case the types need not be the same, and Build_Multiply chooses a type
!    --  long enough to hold the product and both operands are converted to this
!    --  type. The type of the result is also set to this value. On return, the
!    --  resulting node has its Etype set.
  
     function Build_Rem (N : Node_Id; L, R : Node_Id) return Node_Id;
     --  Builds an N_Op_Rem node from the given left and right operand
*************** package body Exp_Fixd is
*** 126,132 ****
     --  operand with the smaller sized type to match the type of the other
     --  operand and sets this as the result type. The result is never rounded
     --  (rem operations cannot be rounded in any case). On return, the resulting
!    --  node is analyzed and has its Etype set.
  
     function Build_Scaled_Divide
       (N       : Node_Id;
--- 125,131 ----
     --  operand with the smaller sized type to match the type of the other
     --  operand and sets this as the result type. The result is never rounded
     --  (rem operations cannot be rounded in any case). On return, the resulting
!    --  node has its Etype set.
  
     function Build_Scaled_Divide
       (N       : Node_Id;
*************** package body Exp_Fixd is
*** 134,140 ****
     --  Returns a node corresponding to the value X*Y/Z using the source
     --  location from Sloc (N). The division is rounded if the Rounded_Result
     --  flag of N is set. The integer types of X, Y, Z may be different. On
!    --  return the resulting node is analyzed and has is Etype set.
  
     procedure Build_Scaled_Divide_Code
       (N        : Node_Id;
--- 133,139 ----
     --  Returns a node corresponding to the value X*Y/Z using the source
     --  location from Sloc (N). The division is rounded if the Rounded_Result
     --  flag of N is set. The integer types of X, Y, Z may be different. On
!    --  return the resulting node has its Etype set.
  
     procedure Build_Scaled_Divide_Code
       (N        : Node_Id;
*************** package body Exp_Fixd is
*** 185,191 ****
     --  Given an operand of fixed-point operation, return an expression that
     --  represents the corresponding Universal_Real value. The expression
     --  can be of integer type, floating-point type, or fixed-point type.
!    --  The expression returned is neither analyzed and resolved. The Etype
     --  of the result is properly set (to Universal_Real).
  
     function Integer_Literal
--- 184,190 ----
     --  Given an operand of fixed-point operation, return an expression that
     --  represents the corresponding Universal_Real value. The expression
     --  can be of integer type, floating-point type, or fixed-point type.
!    --  The expression returned is neither analyzed nor resolved. The Etype
     --  of the result is properly set (to Universal_Real).
  
     function Integer_Literal
*************** package body Exp_Fixd is
*** 193,204 ****
        V        : Uint;
        Negative : Boolean := False) return Node_Id;
     --  Given a non-negative universal integer value, build a typed integer
!    --  literal node, using the smallest applicable standard integer type. If
!    --  and only if Negative is true a negative literal is built. If V exceeds
!    --  2**63-1, the largest value allowed for perfect result set scaling
!    --  factors (see RM G.2.3(22)), then Empty is returned. The node N provides
!    --  the Sloc value for the constructed literal. The Etype of the resulting
!    --  literal is correctly set, and it is marked as analyzed.
  
     function Real_Literal (N : Node_Id; V : Ureal) return Node_Id;
     --  Build a real literal node from the given value, the Etype of the
--- 192,204 ----
        V        : Uint;
        Negative : Boolean := False) return Node_Id;
     --  Given a non-negative universal integer value, build a typed integer
!    --  literal node, using the smallest applicable standard integer type.
!    --  If Negative is true, then a negative literal is built. If V exceeds
!    --  2**(System_Max_Integer_Size - 1) - 1, the largest value allowed for
!    --  perfect result set scaling factors (see RM G.2.3(22)), then Empty is
!    --  returned. The node N provides the Sloc value for the constructed
!    --  literal. The Etype of the resulting literal is correctly set, and it
!    --  is marked as analyzed.
  
     function Real_Literal (N : Node_Id; V : Ureal) return Node_Id;
     --  Build a real literal node from the given value, the Etype of the
*************** package body Exp_Fixd is
*** 261,267 ****
           --  Remove inner conversion if both inner and outer conversions are
           --  to integer types, since the inner one serves no purpose (except
           --  perhaps to set rounding, so we preserve the Rounded_Result flag)
!          --  and also we preserve the range check flag on the inner operand
  
           if Is_Integer_Type (Typ)
             and then Is_Integer_Type (Etype (Expr))
--- 261,268 ----
           --  Remove inner conversion if both inner and outer conversions are
           --  to integer types, since the inner one serves no purpose (except
           --  perhaps to set rounding, so we preserve the Rounded_Result flag)
!          --  and also preserve the Conversion_OK and Do_Range_Check flags of
!          --  the inner conversion.
  
           if Is_Integer_Type (Typ)
             and then Is_Integer_Type (Etype (Expr))
*************** package body Exp_Fixd is
*** 272,277 ****
--- 273,279 ----
                  Subtype_Mark => New_Occurrence_Of (Typ, Loc),
                  Expression   => Expression (Expr));
              Set_Rounded_Result (Result, Rounded_Result_Set (Expr));
+             Set_Conversion_OK  (Result, Conversion_OK (Expr));
              Rcheck := Rcheck or Do_Range_Check (Expr);
  
           --  For all other cases, a simple type conversion will work
*************** package body Exp_Fixd is
*** 317,322 ****
--- 319,327 ----
        Loc         : constant Source_Ptr := Sloc (N);
        Left_Type   : constant Entity_Id  := Base_Type (Etype (L));
        Right_Type  : constant Entity_Id  := Base_Type (Etype (R));
+       Left_Size   : Int;
+       Right_Size  : Int;
+       Rsize       : Int;
        Result_Type : Entity_Id;
        Rnode       : Node_Id;
  
*************** package body Exp_Fixd is
*** 341,373 ****
              return L;
           end if;
  
!          --  If left and right types are the same, no conversion needed
  
!          if Left_Type = Right_Type then
!             Result_Type := Left_Type;
!             Rnode :=
!               Make_Op_Divide (Loc,
!                 Left_Opnd  => L,
!                 Right_Opnd => R);
  
!          --  Use left type if it is the larger of the two
  
!          elsif Esize (Left_Type) >= Esize (Right_Type) then
!             Result_Type := Left_Type;
!             Rnode :=
!               Make_Op_Divide (Loc,
!                 Left_Opnd  => L,
!                 Right_Opnd => Build_Conversion (N, Left_Type, R));
  
!          --  Otherwise right type is larger of the two, us it
  
           else
!             Result_Type := Right_Type;
!             Rnode :=
!               Make_Op_Divide (Loc,
!                 Left_Opnd => Build_Conversion (N, Right_Type, L),
!                 Right_Opnd => R);
           end if;
        end if;
  
        --  We now have a divide node built with Result_Type set. First
--- 346,412 ----
              return L;
           end if;
  
!          --  Otherwise we need to figure out the correct result type size
!          --  First figure out the effective sizes of the operands. Normally
!          --  the effective size of an operand is the RM_Size of the operand.
!          --  But a special case arises with operands whose size is known at
!          --  compile time. In this case, we can use the actual value of the
!          --  operand to get its size if it would fit in signed 8/16/32 bits.
  
!          Left_Size := UI_To_Int (RM_Size (Left_Type));
  
!          if Compile_Time_Known_Value (L) then
!             declare
!                Val : constant Uint := Expr_Value (L);
!             begin
!                if Val < Uint_2 ** 7 then
!                   Left_Size := 8;
!                elsif Val < Uint_2 ** 15 then
!                   Left_Size := 16;
!                elsif Val < Uint_2 ** 31 then
!                   Left_Size := 32;
!                end if;
!             end;
!          end if;
  
!          Right_Size := UI_To_Int (RM_Size (Right_Type));
  
!          if Compile_Time_Known_Value (R) then
!             declare
!                Val : constant Uint := Expr_Value (R);
!             begin
!                if Val <= Int'(2 ** 7) then
!                   Right_Size := 8;
!                elsif Val <= Int'(2 ** 15) then
!                   Right_Size := 16;
!                end if;
!             end;
!          end if;
! 
!          --  Do the operation using the longer of the two sizes
! 
!          Rsize := Int'Max (Left_Size, Right_Size);
! 
!          if Rsize <= 8 then
!             Result_Type := Standard_Integer_8;
! 
!          elsif Rsize <= 16 then
!             Result_Type := Standard_Integer_16;
! 
!          elsif Rsize <= 32 then
!             Result_Type := Standard_Integer_32;
! 
!          elsif Rsize <= 64 or else System_Max_Integer_Size < 128 then
!             Result_Type := Standard_Integer_64;
  
           else
!             Result_Type := Standard_Integer_128;
           end if;
+ 
+          Rnode :=
+             Make_Op_Divide (Loc,
+               Left_Opnd  => Build_Conversion (N, Result_Type, L),
+               Right_Opnd => Build_Conversion (N, Result_Type, R));
        end if;
  
        --  We now have a divide node built with Result_Type set. First
*************** package body Exp_Fixd is
*** 375,396 ****
  
        Set_Etype (Rnode, Base_Type (Result_Type));
  
-       --  Set Treat_Fixed_As_Integer if operation on fixed-point type
-       --  since this is a literal arithmetic operation, to be performed
-       --  by Gigi without any consideration of small values.
- 
-       if Is_Fixed_Point_Type (Result_Type) then
-          Set_Treat_Fixed_As_Integer (Rnode);
-       end if;
- 
        --  The result is rounded if the target of the operation is decimal
        --  and Rounded_Result is set, or if the target of the operation
!       --  is an integer type.
  
!       if Is_Integer_Type (Etype (N))
!         or else Rounded_Result_Set (N)
!       then
!          Set_Rounded_Result (Rnode);
        end if;
  
        return Rnode;
--- 414,434 ----
  
        Set_Etype (Rnode, Base_Type (Result_Type));
  
        --  The result is rounded if the target of the operation is decimal
        --  and Rounded_Result is set, or if the target of the operation
!       --  is an integer type, as determined by Rounded_Result_Set.
  
!       Set_Rounded_Result (Rnode, Rounded_Result_Set (N));
! 
!       --  One more check. We did the divide operation using the longer of
!       --  the two sizes, which is reasonable. However, in the case where the
!       --  two types have unequal sizes, it is impossible for the result of
!       --  a divide operation to be larger than the dividend, so we can put
!       --  a conversion round the result to keep the evolving operation size
!       --  as small as possible.
! 
!       if not Is_Floating_Point_Type (Left_Type) then
!          Rnode := Build_Conversion (N, Left_Type, Rnode);
        end if;
  
        return Rnode;
*************** package body Exp_Fixd is
*** 404,426 ****
       (N       : Node_Id;
        X, Y, Z : Node_Id) return Node_Id
     is
!       Y_Size : constant Nat := UI_To_Int (Esize (Etype (Y)));
!       Z_Size : constant Nat := UI_To_Int (Esize (Etype (Z)));
        Expr   : Node_Id;
  
     begin
!       --  If denominator fits in 64 bits, we can build the operations directly
!       --  without causing any intermediate overflow, so that's what we do.
  
!       if Nat'Max (Y_Size, Z_Size) <= 32 then
!          return
!            Build_Divide (N, X, Build_Multiply (N, Y, Z));
  
        --  Otherwise we use the runtime routine
  
!       --    [Qnn : Interfaces.Integer_64,
!       --     Rnn : Interfaces.Integer_64;
!       --     Double_Divide (X, Y, Z, Qnn, Rnn, Round);
        --     Qnn]
  
        else
--- 442,470 ----
       (N       : Node_Id;
        X, Y, Z : Node_Id) return Node_Id
     is
!       X_Size : constant Nat := UI_To_Int (RM_Size (Etype (X)));
!       Y_Size : constant Nat := UI_To_Int (RM_Size (Etype (Y)));
!       Z_Size : constant Nat := UI_To_Int (RM_Size (Etype (Z)));
!       D_Size : constant Nat := Y_Size + Z_Size;
!       M_Size : constant Nat := Nat'Max (X_Size, Nat'Max (Y_Size, Z_Size));
        Expr   : Node_Id;
  
     begin
!       --  If the denominator fits in Max_Integer_Size bits, we can build the
!       --  operations directly without causing any intermediate overflow. But
!       --  for backward compatibility reasons, we use a 128-bit divide only
!       --  if one of the operands is already larger than 64 bits.
  
!       if D_Size <= System_Max_Integer_Size
!         and then (D_Size <= 64 or else M_Size > 64)
!       then
!          return Build_Divide (N, X, Build_Multiply (N, Y, Z));
  
        --  Otherwise we use the runtime routine
  
!       --    [Qnn : Interfaces.Integer_{64|128};
!       --     Rnn : Interfaces.Integer_{64|128};
!       --     Double_Divide{64|128} (X, Y, Z, Qnn, Rnn, Round);
        --     Qnn]
  
        else
*************** package body Exp_Fixd is
*** 452,469 ****
     -- Build_Double_Divide_Code --
     ------------------------------
  
!    --  If the denominator can be computed in 64-bits, we build
  
     --    [Nnn : constant typ := typ (X);
     --     Dnn : constant typ := typ (Y) * typ (Z)
     --     Qnn : constant typ := Nnn / Dnn;
!    --     Rnn : constant typ := Nnn / Dnn;
  
!    --  If the numerator cannot be computed in 64 bits, we build
  
!    --    [Qnn : typ;
!    --     Rnn : typ;
!    --     Double_Divide (X, Y, Z, Qnn, Rnn, Round);]
  
     procedure Build_Double_Divide_Code
       (N        : Node_Id;
--- 496,513 ----
     -- Build_Double_Divide_Code --
     ------------------------------
  
!    --  If the denominator can be computed in Max_Integer_Size bits, we build
  
     --    [Nnn : constant typ := typ (X);
     --     Dnn : constant typ := typ (Y) * typ (Z)
     --     Qnn : constant typ := Nnn / Dnn;
!    --     Rnn : constant typ := Nnn rem Dnn;
  
!    --  If the denominator cannot be computed in Max_Integer_Size bits, we build
  
!    --    [Qnn : Interfaces.Integer_{64|128};
!    --     Rnn : Interfaces.Integer_{64|128};
!    --     Double_Divide{64|128} (X, Y, Z, Qnn, Rnn, Round);]
  
     procedure Build_Double_Divide_Code
       (N        : Node_Id;
*************** package body Exp_Fixd is
*** 473,482 ****
     is
        Loc    : constant Source_Ptr := Sloc (N);
  
!       X_Size : constant Nat := UI_To_Int (Esize (Etype (X)));
!       Y_Size : constant Nat := UI_To_Int (Esize (Etype (Y)));
!       Z_Size : constant Nat := UI_To_Int (Esize (Etype (Z)));
  
        QR_Siz : Nat;
        QR_Typ : Entity_Id;
  
--- 517,528 ----
     is
        Loc    : constant Source_Ptr := Sloc (N);
  
!       X_Size : constant Nat := UI_To_Int (RM_Size (Etype (X)));
!       Y_Size : constant Nat := UI_To_Int (RM_Size (Etype (Y)));
!       Z_Size : constant Nat := UI_To_Int (RM_Size (Etype (Z)));
!       M_Size : constant Nat := Nat'Max (X_Size, Nat'Max (Y_Size, Z_Size));
  
+       QR_Id  : RE_Id;
        QR_Siz : Nat;
        QR_Typ : Entity_Id;
  
*************** package body Exp_Fixd is
*** 487,508 ****
        Rnd : Entity_Id;
  
     begin
!       --  Find type that will allow computation of numerator
  
!       QR_Siz := Nat'Max (X_Size, 2 * Nat'Max (Y_Size, Z_Size));
  
        if QR_Siz <= 16 then
           QR_Typ := Standard_Integer_16;
        elsif QR_Siz <= 32 then
           QR_Typ := Standard_Integer_32;
        elsif QR_Siz <= 64 then
           QR_Typ := Standard_Integer_64;
  
!       --  For more than 64, bits, we use the 64-bit integer defined in
!       --  Interfaces, so that it can be handled by the runtime routine.
  
!       else
           QR_Typ := RTE (RE_Integer_64);
        end if;
  
        --  Define quotient and remainder, and set their Etypes, so
--- 533,568 ----
        Rnd : Entity_Id;
  
     begin
!       --  Find type that will allow computation of denominator
  
!       QR_Siz := Nat'Max (X_Size, Y_Size + Z_Size);
  
        if QR_Siz <= 16 then
           QR_Typ := Standard_Integer_16;
+          QR_Id  := RE_Null;
+ 
        elsif QR_Siz <= 32 then
           QR_Typ := Standard_Integer_32;
+          QR_Id  := RE_Null;
+ 
        elsif QR_Siz <= 64 then
           QR_Typ := Standard_Integer_64;
+          QR_Id  := RE_Null;
  
!       --  For backward compatibility reasons, we use a 128-bit divide only
!       --  if one of the operands is already larger than 64 bits.
  
!       elsif System_Max_Integer_Size < 128 or else M_Size <= 64 then
           QR_Typ := RTE (RE_Integer_64);
+          QR_Id  := RE_Double_Divide64;
+ 
+       elsif QR_Siz <= 128 then
+          QR_Typ := Standard_Integer_128;
+          QR_Id  := RE_Null;
+ 
+       else
+          QR_Typ := RTE (RE_Integer_128);
+          QR_Id  := RE_Double_Divide128;
        end if;
  
        --  Define quotient and remainder, and set their Etypes, so
*************** package body Exp_Fixd is
*** 514,522 ****
        Set_Etype (Qnn, QR_Typ);
        Set_Etype (Rnn, QR_Typ);
  
!       --  Case that we can compute the denominator in 64 bits
  
!       if QR_Siz <= 64 then
  
           --  Create temporaries for numerator and denominator and set Etypes,
           --  so that New_Occurrence_Of picks them up for Build_xxx calls.
--- 574,582 ----
        Set_Etype (Qnn, QR_Typ);
        Set_Etype (Rnn, QR_Typ);
  
!       --  Case where we can compute the denominator in Max_Integer_Size bits
  
!       if QR_Id = RE_Null then
  
           --  Create temporaries for numerator and denominator and set Etypes,
           --  so that New_Occurrence_Of picks them up for Build_xxx calls.
*************** package body Exp_Fixd is
*** 532,547 ****
               Defining_Identifier => Nnn,
               Object_Definition   => New_Occurrence_Of (QR_Typ, Loc),
               Constant_Present    => True,
!              Expression => Build_Conversion (N, QR_Typ, X)),
  
             Make_Object_Declaration (Loc,
               Defining_Identifier => Dnn,
               Object_Definition   => New_Occurrence_Of (QR_Typ, Loc),
               Constant_Present    => True,
!              Expression =>
!                Build_Multiply (N,
!                  Build_Conversion (N, QR_Typ, Y),
!                  Build_Conversion (N, QR_Typ, Z))));
  
           Quo :=
             Build_Divide (N,
--- 592,604 ----
               Defining_Identifier => Nnn,
               Object_Definition   => New_Occurrence_Of (QR_Typ, Loc),
               Constant_Present    => True,
!              Expression          => Build_Conversion (N, QR_Typ, X)),
  
             Make_Object_Declaration (Loc,
               Defining_Identifier => Dnn,
               Object_Definition   => New_Occurrence_Of (QR_Typ, Loc),
               Constant_Present    => True,
!              Expression          => Build_Multiply (N, Y, Z)));
  
           Quo :=
             Build_Divide (N,
*************** package body Exp_Fixd is
*** 567,574 ****
                   New_Occurrence_Of (Nnn, Loc),
                   New_Occurrence_Of (Dnn, Loc))));
  
!       --  Case where denominator does not fit in 64 bits, so we have to
!       --  call the runtime routine to compute the quotient and remainder
  
        else
           Rnd := Boolean_Literals (Rounded_Result_Set (N));
--- 624,631 ----
                   New_Occurrence_Of (Nnn, Loc),
                   New_Occurrence_Of (Dnn, Loc))));
  
!       --  Case where denominator does not fit in Max_Integer_Size bits, we have
!       --  to call the runtime routine to compute the quotient and remainder.
  
        else
           Rnd := Boolean_Literals (Rounded_Result_Set (N));
*************** package body Exp_Fixd is
*** 583,589 ****
               Object_Definition   => New_Occurrence_Of (QR_Typ, Loc)),
  
             Make_Procedure_Call_Statement (Loc,
!              Name => New_Occurrence_Of (RTE (RE_Double_Divide), Loc),
               Parameter_Associations => New_List (
                 Build_Conversion (N, QR_Typ, X),
                 Build_Conversion (N, QR_Typ, Y),
--- 640,646 ----
               Object_Definition   => New_Occurrence_Of (QR_Typ, Loc)),
  
             Make_Procedure_Call_Statement (Loc,
!              Name => New_Occurrence_Of (RTE (QR_Id), Loc),
               Parameter_Associations => New_List (
                 Build_Conversion (N, QR_Typ, X),
                 Build_Conversion (N, QR_Typ, Y),
*************** package body Exp_Fixd is
*** 637,643 ****
           --  the effective size of an operand is the RM_Size of the operand.
           --  But a special case arises with operands whose size is known at
           --  compile time. In this case, we can use the actual value of the
!          --  operand to get its size if it would fit signed in 8 or 16 bits.
  
           Left_Size := UI_To_Int (RM_Size (Left_Type));
  
--- 694,700 ----
           --  the effective size of an operand is the RM_Size of the operand.
           --  But a special case arises with operands whose size is known at
           --  compile time. In this case, we can use the actual value of the
!          --  operand to get its size if it would fit in signed 8/16/32 bits.
  
           Left_Size := UI_To_Int (RM_Size (Left_Type));
  
*************** package body Exp_Fixd is
*** 645,654 ****
              declare
                 Val : constant Uint := Expr_Value (L);
              begin
!                if Val < Int'(2 ** 7) then
                    Left_Size := 8;
!                elsif Val < Int'(2 ** 15) then
                    Left_Size := 16;
                 end if;
              end;
           end if;
--- 702,713 ----
              declare
                 Val : constant Uint := Expr_Value (L);
              begin
!                if Val < Uint_2 ** 7 then
                    Left_Size := 8;
!                elsif Val < Uint_2 ** 15 then
                    Left_Size := 16;
+                elsif Val < Uint_2 ** 31 then
+                   Left_Size := 32;
                 end if;
              end;
           end if;
*************** package body Exp_Fixd is
*** 667,676 ****
              end;
           end if;
  
!          --  Now the result size must be at least twice the longer of
!          --  the two sizes, to accommodate all possible results.
  
!          Rsize := 2 * Int'Max (Left_Size, Right_Size);
  
           if Rsize <= 8 then
              Result_Type := Standard_Integer_8;
--- 726,735 ----
              end;
           end if;
  
!          --  Now the result size must be at least the sum of the two sizes,
!          --  to accommodate all possible results.
  
!          Rsize := Left_Size + Right_Size;
  
           if Rsize <= 8 then
              Result_Type := Standard_Integer_8;
*************** package body Exp_Fixd is
*** 681,688 ****
           elsif Rsize <= 32 then
              Result_Type := Standard_Integer_32;
  
!          else
              Result_Type := Standard_Integer_64;
           end if;
  
           Rnode :=
--- 740,750 ----
           elsif Rsize <= 32 then
              Result_Type := Standard_Integer_32;
  
!          elsif Rsize <= 64 or else System_Max_Integer_Size < 128 then
              Result_Type := Standard_Integer_64;
+ 
+          else
+             Result_Type := Standard_Integer_128;
           end if;
  
           Rnode :=
*************** package body Exp_Fixd is
*** 696,709 ****
  
        Set_Etype (Rnode, Base_Type (Result_Type));
  
-       --  Set Treat_Fixed_As_Integer if operation on fixed-point type
-       --  since this is a literal arithmetic operation, to be performed
-       --  by Gigi without any consideration of small values.
- 
-       if Is_Fixed_Point_Type (Result_Type) then
-          Set_Treat_Fixed_As_Integer (Rnode);
-       end if;
- 
        return Rnode;
     end Build_Multiply;
  
--- 758,763 ----
*************** package body Exp_Fixd is
*** 752,765 ****
  
        Set_Etype (Rnode, Base_Type (Result_Type));
  
-       --  Set Treat_Fixed_As_Integer if operation on fixed-point type
-       --  since this is a literal arithmetic operation, to be performed
-       --  by Gigi without any consideration of small values.
- 
-       if Is_Fixed_Point_Type (Result_Type) then
-          Set_Treat_Fixed_As_Integer (Rnode);
-       end if;
- 
        --  One more check. We did the rem operation using the larger of the
        --  two types, which is reasonable. However, in the case where the
        --  two types have unequal sizes, it is impossible for the result of
--- 806,811 ----
*************** package body Exp_Fixd is
*** 784,806 ****
       (N       : Node_Id;
        X, Y, Z : Node_Id) return Node_Id
     is
!       X_Size : constant Nat := UI_To_Int (Esize (Etype (X)));
!       Y_Size : constant Nat := UI_To_Int (Esize (Etype (Y)));
        Expr   : Node_Id;
  
     begin
!       --  If numerator fits in 64 bits, we can build the operations directly
!       --  without causing any intermediate overflow, so that's what we do.
  
!       if Nat'Max (X_Size, Y_Size) <= 32 then
!          return
!            Build_Divide (N, Build_Multiply (N, X, Y), Z);
  
        --  Otherwise we use the runtime routine
  
!       --    [Qnn : Integer_64,
!       --     Rnn : Integer_64;
!       --     Scaled_Divide (X, Y, Z, Qnn, Rnn, Round);
        --     Qnn]
  
        else
--- 830,858 ----
       (N       : Node_Id;
        X, Y, Z : Node_Id) return Node_Id
     is
!       X_Size : constant Nat := UI_To_Int (RM_Size (Etype (X)));
!       Y_Size : constant Nat := UI_To_Int (RM_Size (Etype (Y)));
!       Z_Size : constant Nat := UI_To_Int (RM_Size (Etype (Z)));
!       N_Size : constant Nat := X_Size + Y_Size;
!       M_Size : constant Nat := Nat'Max (X_Size, Nat'Max (Y_Size, Z_Size));
        Expr   : Node_Id;
  
     begin
!       --  If the numerator fits in Max_Integer_Size bits, we can build the
!       --  operations directly without causing any intermediate overflow. But
!       --  for backward compatibility reasons, we use a 128-bit divide only
!       --  if one of the operands is already larger than 64 bits.
  
!       if N_Size <= System_Max_Integer_Size
!         and then (N_Size <= 64 or else M_Size > 64)
!       then
!          return Build_Divide (N, Build_Multiply (N, X, Y), Z);
  
        --  Otherwise we use the runtime routine
  
!       --    [Qnn : Integer_{64|128},
!       --     Rnn : Integer_{64|128};
!       --     Scaled_Divide{64|128} (X, Y, Z, Qnn, Rnn, Round);
        --     Qnn]
  
        else
*************** package body Exp_Fixd is
*** 829,846 ****
     -- Build_Scaled_Divide_Code --
     ------------------------------
  
!    --  If the numerator can be computed in 64-bits, we build
  
     --    [Nnn : constant typ := typ (X) * typ (Y);
     --     Dnn : constant typ := typ (Z)
     --     Qnn : constant typ := Nnn / Dnn;
!    --     Rnn : constant typ := Nnn / Dnn;
  
!    --  If the numerator cannot be computed in 64 bits, we build
  
!    --    [Qnn : Interfaces.Integer_64;
!    --     Rnn : Interfaces.Integer_64;
!    --     Scaled_Divide (X, Y, Z, Qnn, Rnn, Round);]
  
     procedure Build_Scaled_Divide_Code
       (N        : Node_Id;
--- 881,898 ----
     -- Build_Scaled_Divide_Code --
     ------------------------------
  
!    --  If the numerator can be computed in Max_Integer_Size bits, we build
  
     --    [Nnn : constant typ := typ (X) * typ (Y);
     --     Dnn : constant typ := typ (Z)
     --     Qnn : constant typ := Nnn / Dnn;
!    --     Rnn : constant typ := Nnn rem Dnn;
  
!    --  If the numerator cannot be computed in Max_Integer_Size bits, we build
  
!    --    [Qnn : Interfaces.Integer_{64|128};
!    --     Rnn : Interfaces.Integer_{64|128};
!    --     Scaled_Divide_{64|128} (X, Y, Z, Qnn, Rnn, Round);]
  
     procedure Build_Scaled_Divide_Code
       (N        : Node_Id;
*************** package body Exp_Fixd is
*** 850,859 ****
     is
        Loc    : constant Source_Ptr := Sloc (N);
  
!       X_Size : constant Nat := UI_To_Int (Esize (Etype (X)));
!       Y_Size : constant Nat := UI_To_Int (Esize (Etype (Y)));
!       Z_Size : constant Nat := UI_To_Int (Esize (Etype (Z)));
  
        QR_Siz : Nat;
        QR_Typ : Entity_Id;
  
--- 902,913 ----
     is
        Loc    : constant Source_Ptr := Sloc (N);
  
!       X_Size : constant Nat := UI_To_Int (RM_Size (Etype (X)));
!       Y_Size : constant Nat := UI_To_Int (RM_Size (Etype (Y)));
!       Z_Size : constant Nat := UI_To_Int (RM_Size (Etype (Z)));
!       M_Size : constant Nat := Nat'Max (X_Size, Nat'Max (Y_Size, Z_Size));
  
+       QR_Id  : RE_Id;
        QR_Siz : Nat;
        QR_Typ : Entity_Id;
  
*************** package body Exp_Fixd is
*** 866,885 ****
     begin
        --  Find type that will allow computation of numerator
  
!       QR_Siz := Nat'Max (X_Size, 2 * Nat'Max (Y_Size, Z_Size));
  
        if QR_Siz <= 16 then
           QR_Typ := Standard_Integer_16;
        elsif QR_Siz <= 32 then
           QR_Typ := Standard_Integer_32;
        elsif QR_Siz <= 64 then
           QR_Typ := Standard_Integer_64;
  
!       --  For more than 64, bits, we use the 64-bit integer defined in
!       --  Interfaces, so that it can be handled by the runtime routine.
  
!       else
           QR_Typ := RTE (RE_Integer_64);
        end if;
  
        --  Define quotient and remainder, and set their Etypes, so
--- 920,953 ----
     begin
        --  Find type that will allow computation of numerator
  
!       QR_Siz := Nat'Max (X_Size + Y_Size, Z_Size);
  
        if QR_Siz <= 16 then
           QR_Typ := Standard_Integer_16;
+          QR_Id  := RE_Null;
+ 
        elsif QR_Siz <= 32 then
           QR_Typ := Standard_Integer_32;
+          QR_Id  := RE_Null;
+ 
        elsif QR_Siz <= 64 then
           QR_Typ := Standard_Integer_64;
+          QR_Id  := RE_Null;
  
!       --  For backward compatibility reasons, we use a 128-bit divide only
!       --  if one of the operands is already larger than 64 bits.
  
!       elsif System_Max_Integer_Size < 128 or else M_Size <= 64 then
           QR_Typ := RTE (RE_Integer_64);
+          QR_Id  := RE_Scaled_Divide64;
+ 
+       elsif QR_Siz <= 128 then
+          QR_Typ := Standard_Integer_128;
+          QR_Id  := RE_Null;
+ 
+       else
+          QR_Typ := RTE (RE_Integer_128);
+          QR_Id  := RE_Scaled_Divide128;
        end if;
  
        --  Define quotient and remainder, and set their Etypes, so
*************** package body Exp_Fixd is
*** 891,899 ****
        Set_Etype (Qnn, QR_Typ);
        Set_Etype (Rnn, QR_Typ);
  
!       --  Case that we can compute the numerator in 64 bits
  
!       if QR_Siz <= 64 then
           Nnn := Make_Temporary (Loc, 'N');
           Dnn := Make_Temporary (Loc, 'D');
  
--- 959,967 ----
        Set_Etype (Qnn, QR_Typ);
        Set_Etype (Rnn, QR_Typ);
  
!       --  Case where we can compute the numerator in Max_Integer_Size bits
  
!       if QR_Id = RE_Null then
           Nnn := Make_Temporary (Loc, 'N');
           Dnn := Make_Temporary (Loc, 'D');
  
*************** package body Exp_Fixd is
*** 907,922 ****
               Defining_Identifier => Nnn,
               Object_Definition   => New_Occurrence_Of (QR_Typ, Loc),
               Constant_Present    => True,
!              Expression =>
!                Build_Multiply (N,
!                  Build_Conversion (N, QR_Typ, X),
!                  Build_Conversion (N, QR_Typ, Y))),
  
             Make_Object_Declaration (Loc,
               Defining_Identifier => Dnn,
               Object_Definition   => New_Occurrence_Of (QR_Typ, Loc),
               Constant_Present    => True,
!              Expression => Build_Conversion (N, QR_Typ, Z)));
  
           Quo :=
             Build_Divide (N,
--- 975,987 ----
               Defining_Identifier => Nnn,
               Object_Definition   => New_Occurrence_Of (QR_Typ, Loc),
               Constant_Present    => True,
!              Expression          => Build_Multiply (N, X, Y)),
  
             Make_Object_Declaration (Loc,
               Defining_Identifier => Dnn,
               Object_Definition   => New_Occurrence_Of (QR_Typ, Loc),
               Constant_Present    => True,
!              Expression          => Build_Conversion (N, QR_Typ, Z)));
  
           Quo :=
             Build_Divide (N,
*************** package body Exp_Fixd is
*** 940,947 ****
                   New_Occurrence_Of (Nnn, Loc),
                   New_Occurrence_Of (Dnn, Loc))));
  
!       --  Case where numerator does not fit in 64 bits, so we have to
!       --  call the runtime routine to compute the quotient and remainder
  
        else
           Rnd := Boolean_Literals (Rounded_Result_Set (N));
--- 1005,1012 ----
                   New_Occurrence_Of (Nnn, Loc),
                   New_Occurrence_Of (Dnn, Loc))));
  
!       --  Case where numerator does not fit in Max_Integer_Size bits, we have
!       --  to call the runtime routine to compute the quotient and remainder.
  
        else
           Rnd := Boolean_Literals (Rounded_Result_Set (N));
*************** package body Exp_Fixd is
*** 956,962 ****
               Object_Definition   => New_Occurrence_Of (QR_Typ, Loc)),
  
             Make_Procedure_Call_Statement (Loc,
!              Name => New_Occurrence_Of (RTE (RE_Scaled_Divide), Loc),
               Parameter_Associations => New_List (
                 Build_Conversion (N, QR_Typ, X),
                 Build_Conversion (N, QR_Typ, Y),
--- 1021,1027 ----
               Object_Definition   => New_Occurrence_Of (QR_Typ, Loc)),
  
             Make_Procedure_Call_Statement (Loc,
!              Name => New_Occurrence_Of (RTE (QR_Id), Loc),
               Parameter_Associations => New_List (
                 Build_Conversion (N, QR_Typ, X),
                 Build_Conversion (N, QR_Typ, Y),
*************** package body Exp_Fixd is
*** 1353,1360 ****
  
           if Present (Lit_Int) then
              Set_Result (N,
!               Build_Multiply (N, Build_Multiply (N, Left, Right),
!                 Lit_Int));
              return;
           end if;
  
--- 1418,1424 ----
  
           if Present (Lit_Int) then
              Set_Result (N,
!               Build_Multiply (N, Build_Multiply (N, Left, Right), Lit_Int));
              return;
           end if;
  
*************** package body Exp_Fixd is
*** 1525,1530 ****
--- 1589,1598 ----
     --  If the small ratio is the reciprocal of a sufficiently small integer,
     --  then the perfect result set is obtained by a single integer division.
  
+    --  If the numerator and denominator of the small ratio are sufficiently
+    --  small integers, then the perfect result set is obtained by a scaled
+    --  divide operation.
+ 
     --  In other cases, we obtain the close result set by calculating the
     --  result in floating-point.
  
*************** package body Exp_Fixd is
*** 1536,1542 ****
        Small_Ratio : Ureal;
        Ratio_Num   : Uint;
        Ratio_Den   : Uint;
!       Lit         : Node_Id;
  
     begin
        if Is_OK_Static_Expression (Expr) then
--- 1604,1611 ----
        Small_Ratio : Ureal;
        Ratio_Num   : Uint;
        Ratio_Den   : Uint;
!       Lit_Num     : Node_Id;
!       Lit_Den     : Node_Id;
  
     begin
        if Is_OK_Static_Expression (Expr) then
*************** package body Exp_Fixd is
*** 1554,1579 ****
              return;
  
           else
!             Lit := Integer_Literal (N, Ratio_Num);
  
!             if Present (Lit) then
!                Set_Result (N, Build_Multiply (N, Expr, Lit));
                 return;
              end if;
           end if;
  
        elsif Ratio_Num = 1 then
!          Lit := Integer_Literal (N, Ratio_Den);
  
!          if Present (Lit) then
!             Set_Result (N, Build_Divide (N, Expr, Lit), Rng_Check);
              return;
           end if;
        end if;
  
!       --  Fall through to use floating-point for the close result set case
!       --  either as a result of the small ratio not being an integer or the
!       --  reciprocal of an integer, or if the integer is out of range.
  
        Set_Result (N,
          Build_Multiply (N,
--- 1623,1658 ----
              return;
  
           else
!             Lit_Num := Integer_Literal (N, Ratio_Num);
  
!             if Present (Lit_Num) then
!                Set_Result (N, Build_Multiply (N, Expr, Lit_Num));
                 return;
              end if;
           end if;
  
        elsif Ratio_Num = 1 then
!          Lit_Den := Integer_Literal (N, Ratio_Den);
  
!          if Present (Lit_Den) then
!             Set_Result (N, Build_Divide (N, Expr, Lit_Den), Rng_Check);
!             return;
!          end if;
! 
!       else
!          Lit_Num := Integer_Literal (N, Ratio_Num);
!          Lit_Den := Integer_Literal (N, Ratio_Den);
! 
!          if Present (Lit_Num) and then Present (Lit_Den) then
!             Set_Result
!               (N, Build_Scaled_Divide (N, Expr, Lit_Num, Lit_Den), Rng_Check);
              return;
           end if;
        end if;
  
!       --  Fall through to use floating-point for the close result set case,
!       --  as a result of the numerator or denominator of the small ratio not
!       --  being a sufficiently small integer.
  
        Set_Result (N,
          Build_Multiply (N,
*************** package body Exp_Fixd is
*** 1629,1634 ****
--- 1708,1717 ----
     --  If the small value is the reciprocal of a sufficiently small integer,
     --  then the perfect result set is obtained by a single integer division.
  
+    --  If the numerator and denominator of the small value are sufficiently
+    --  small integers, then the perfect result set is obtained by a scaled
+    --  divide operation.
+ 
     --  In other cases, we obtain the close result set by calculating the
     --  result in floating-point.
  
*************** package body Exp_Fixd is
*** 1639,1645 ****
        Small       : constant Ureal     := Small_Value (Source_Type);
        Small_Num   : constant Uint      := Norm_Num (Small);
        Small_Den   : constant Uint      := Norm_Den (Small);
!       Lit         : Node_Id;
  
     begin
        if Is_OK_Static_Expression (Expr) then
--- 1722,1729 ----
        Small       : constant Ureal     := Small_Value (Source_Type);
        Small_Num   : constant Uint      := Norm_Num (Small);
        Small_Den   : constant Uint      := Norm_Den (Small);
!       Lit_Num     : Node_Id;
!       Lit_Den     : Node_Id;
  
     begin
        if Is_OK_Static_Expression (Expr) then
*************** package body Exp_Fixd is
*** 1648,1672 ****
        end if;
  
        if Small_Den = 1 then
!          Lit := Integer_Literal (N, Small_Num);
  
!          if Present (Lit) then
!             Set_Result (N, Build_Multiply (N, Expr, Lit), Rng_Check);
              return;
           end if;
  
        elsif Small_Num = 1 then
!          Lit := Integer_Literal (N, Small_Den);
  
!          if Present (Lit) then
!             Set_Result (N, Build_Divide (N, Expr, Lit), Rng_Check);
              return;
           end if;
        end if;
  
!       --  Fall through to use floating-point for the close result set case
!       --  either as a result of the small value not being an integer or the
!       --  reciprocal of an integer, or if the integer is out of range.
  
        Set_Result (N,
          Build_Multiply (N,
--- 1732,1766 ----
        end if;
  
        if Small_Den = 1 then
!          Lit_Num := Integer_Literal (N, Small_Num);
  
!          if Present (Lit_Num) then
!             Set_Result (N, Build_Multiply (N, Expr, Lit_Num), Rng_Check);
              return;
           end if;
  
        elsif Small_Num = 1 then
!          Lit_Den := Integer_Literal (N, Small_Den);
  
!          if Present (Lit_Den) then
!             Set_Result (N, Build_Divide (N, Expr, Lit_Den), Rng_Check);
!             return;
!          end if;
! 
!       else
!          Lit_Num := Integer_Literal (N, Small_Num);
!          Lit_Den := Integer_Literal (N, Small_Den);
! 
!          if Present (Lit_Num) and then Present (Lit_Den) then
!             Set_Result
!               (N, Build_Scaled_Divide (N, Expr, Lit_Num, Lit_Den), Rng_Check);
              return;
           end if;
        end if;
  
!       --  Fall through to use floating-point for the close result set case,
!       --  as a result of the numerator or denominator of the small value not
!       --  being a sufficiently small integer.
  
        Set_Result (N,
          Build_Multiply (N,
*************** package body Exp_Fixd is
*** 1693,1703 ****
  
     procedure Expand_Convert_Float_To_Fixed (N : Node_Id) is
        Expr        : constant Node_Id   := Expression (N);
-       Orig_N      : constant Node_Id   := Original_Node (N);
        Result_Type : constant Entity_Id := Etype (N);
        Rng_Check   : constant Boolean   := Do_Range_Check (N);
        Small       : constant Ureal     := Small_Value (Result_Type);
-       Truncate    : Boolean;
  
     begin
        --  Optimize small = 1, where we can avoid the multiply completely
--- 1787,1795 ----
*************** package body Exp_Fixd is
*** 1712,1726 ****
        --  round.
  
        else
-          if Is_Decimal_Fixed_Point_Type (Result_Type) then
-             Truncate :=
-               Nkind (Orig_N) /= N_Attribute_Reference
-                 or else Get_Attribute_Id
-                           (Attribute_Name (Orig_N)) /= Attribute_Round;
-          else
-             Truncate := False;
-          end if;
- 
           Set_Result
             (N     => N,
              Expr  =>
--- 1804,1809 ----
*************** package body Exp_Fixd is
*** 1729,1735 ****
                   L => Fpt_Value (Expr),
                   R => Real_Literal (N, Ureal_1 / Small)),
              Rchk  => Rng_Check,
!             Trunc => Truncate);
        end if;
     end Expand_Convert_Float_To_Fixed;
  
--- 1812,1819 ----
                   L => Fpt_Value (Expr),
                   R => Real_Literal (N, Ureal_1 / Small)),
              Rchk  => Rng_Check,
!             Trunc => Is_Decimal_Fixed_Point_Type (Result_Type)
!                        and not Rounded_Result (N));
        end if;
     end Expand_Convert_Float_To_Fixed;
  
*************** package body Exp_Fixd is
*** 1748,1753 ****
--- 1832,1841 ----
     --  If the small value is the reciprocal of a sufficiently small integer,
     --  the perfect result set is obtained by a single integer multiplication.
  
+    --  If the numerator and denominator of the small value are sufficiently
+    --  small integers, then the perfect result set is obtained by a scaled
+    --  divide operation.
+ 
     --  In other cases, we obtain the close result set by calculating the
     --  result in floating-point using a multiplication by the reciprocal
     --  of the Result_Small.
*************** package body Exp_Fixd is
*** 1759,1787 ****
        Small       : constant Ureal     := Small_Value (Result_Type);
        Small_Num   : constant Uint      := Norm_Num (Small);
        Small_Den   : constant Uint      := Norm_Den (Small);
!       Lit         : Node_Id;
  
     begin
        if Small_Den = 1 then
!          Lit := Integer_Literal (N, Small_Num);
  
!          if Present (Lit) then
!             Set_Result (N, Build_Divide (N, Expr, Lit), Rng_Check);
              return;
           end if;
  
        elsif Small_Num = 1 then
!          Lit := Integer_Literal (N, Small_Den);
  
!          if Present (Lit) then
!             Set_Result (N, Build_Multiply (N, Expr, Lit), Rng_Check);
              return;
           end if;
        end if;
  
!       --  Fall through to use floating-point for the close result set case
!       --  either as a result of the small value not being an integer or the
!       --  reciprocal of an integer, or if the integer is out of range.
  
        Set_Result (N,
          Build_Multiply (N,
--- 1847,1886 ----
        Small       : constant Ureal     := Small_Value (Result_Type);
        Small_Num   : constant Uint      := Norm_Num (Small);
        Small_Den   : constant Uint      := Norm_Den (Small);
!       Lit_Num     : Node_Id;
!       Lit_Den     : Node_Id;
  
     begin
        if Small_Den = 1 then
!          Lit_Num := Integer_Literal (N, Small_Num);
  
!          if Present (Lit_Num) then
!             Set_Result (N, Build_Divide (N, Expr, Lit_Num), Rng_Check);
              return;
           end if;
  
        elsif Small_Num = 1 then
!          Lit_Den := Integer_Literal (N, Small_Den);
  
!          if Present (Lit_Den) then
!             Set_Result (N, Build_Multiply (N, Expr, Lit_Den), Rng_Check);
!             return;
!          end if;
! 
!       else
!          Lit_Num := Integer_Literal (N, Small_Num);
!          Lit_Den := Integer_Literal (N, Small_Den);
! 
!          if Present (Lit_Num) and then Present (Lit_Den) then
!             Set_Result
!               (N, Build_Scaled_Divide (N, Expr, Lit_Den, Lit_Num), Rng_Check);
              return;
           end if;
        end if;
  
!       --  Fall through to use floating-point for the close result set case,
!       --  as a result of the numerator or denominator of the small value not
!       --  being a sufficiently small integer.
  
        Set_Result (N,
          Build_Multiply (N,
*************** package body Exp_Fixd is
*** 1993,2005 ****
        Right : constant Node_Id := Right_Opnd (N);
  
     begin
-       --  Suppress expansion of a fixed-by-fixed division if the
-       --  operation is supported directly by the target.
- 
-       if Target_Has_Fixed_Ops (Etype (Left), Etype (Right), Etype (N)) then
-          return;
-       end if;
- 
        if Etype (Left) = Universal_Real then
           Do_Divide_Universal_Fixed (N);
  
--- 2092,2097 ----
*************** package body Exp_Fixd is
*** 2163,2175 ****
     --  Start of processing for Expand_Multiply_Fixed_By_Fixed_Giving_Fixed
  
     begin
-       --  Suppress expansion of a fixed-by-fixed multiplication if the
-       --  operation is supported directly by the target.
- 
-       if Target_Has_Fixed_Ops (Etype (Left), Etype (Right), Etype (N)) then
-          return;
-       end if;
- 
        if Etype (Left) = Universal_Real then
           if Nkind (Left) = N_Real_Literal then
              Do_Multiply_Fixed_Universal (N, Left => Right, Right => Left);
--- 2255,2260 ----
*************** package body Exp_Fixd is
*** 2330,2348 ****
     ---------------
  
     function Fpt_Value (N : Node_Id) return Node_Id is
-       Typ   : constant Entity_Id  := Etype (N);
- 
     begin
!       if Is_Integer_Type (Typ)
!         or else Is_Floating_Point_Type (Typ)
!       then
!          return Build_Conversion (N, Universal_Real, N);
! 
!       --  Fixed-point case, must get integer value first
! 
!       else
!          return Build_Conversion (N, Universal_Real, N);
!       end if;
     end Fpt_Value;
  
     ---------------------
--- 2415,2422 ----
     ---------------
  
     function Fpt_Value (N : Node_Id) return Node_Id is
     begin
!       return Build_Conversion (N, Universal_Real, N);
     end Fpt_Value;
  
     ---------------------
*************** package body Exp_Fixd is
*** 2370,2375 ****
--- 2444,2452 ----
        elsif V < Uint_2 ** 63 then
           T := Standard_Integer_64;
  
+       elsif V < Uint_2 ** 127 and then System_Max_Integer_Size = 128 then
+          T := Standard_Integer_128;
+ 
        else
           return Empty;
        end if;
*************** package body Exp_Fixd is
*** 2387,2395 ****
  
        --  We really need to set Analyzed here because we may be creating a
        --  very strange beast, namely an integer literal typed as fixed-point
!       --  and the analyzer won't like that. Probably we should allow the
!       --  Treat_Fixed_As_Integer flag to appear on integer literal nodes
!       --  and teach the analyzer how to handle them ???
  
        Set_Analyzed (L);
        return L;
--- 2464,2470 ----
  
        --  We really need to set Analyzed here because we may be creating a
        --  very strange beast, namely an integer literal typed as fixed-point
!       --  and the analyzer won't like that.
  
        Set_Analyzed (L);
        return L;
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_fixd.ads gcc-11.1.0/gcc/ada/exp_fixd.ads
*** gcc-10.3.0/gcc/ada/exp_fixd.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_fixd.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_imgv.adb gcc-11.1.0/gcc/ada/exp_imgv.adb
*** gcc-10.3.0/gcc/ada/exp_imgv.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_imgv.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Atree;    use Atree;
*** 27,32 ****
--- 27,33 ----
  with Casing;   use Casing;
  with Checks;   use Checks;
  with Einfo;    use Einfo;
+ with Exp_Put_Image;
  with Exp_Util; use Exp_Util;
  with Lib;      use Lib;
  with Namet;    use Namet;
*************** with Urealp;   use Urealp;
*** 48,64 ****
  
  package body Exp_Imgv is
  
-    function Has_Decimal_Small (E : Entity_Id) return Boolean;
-    --  Applies to all entities. True for a Decimal_Fixed_Point_Type, or an
-    --  Ordinary_Fixed_Point_Type with a small that is a negative power of ten.
-    --  Shouldn't this be in einfo.adb or sem_aux.adb???
- 
     procedure Rewrite_Object_Image
       (N         : Node_Id;
        Pref      : Entity_Id;
        Attr_Name : Name_Id;
        Str_Typ   : Entity_Id);
!    --  AI12-00124: Rewrite attribute 'Image when it is applied to an object
     --  reference as an attribute applied to a type. N denotes the node to be
     --  rewritten, Pref denotes the prefix of the 'Image attribute, and Name
     --  and Str_Typ specify which specific string type and 'Image attribute to
--- 49,60 ----
  
  package body Exp_Imgv is
  
     procedure Rewrite_Object_Image
       (N         : Node_Id;
        Pref      : Entity_Id;
        Attr_Name : Name_Id;
        Str_Typ   : Entity_Id);
!    --  AI12-0124: Rewrite attribute 'Image when it is applied to an object
     --  reference as an attribute applied to a type. N denotes the node to be
     --  rewritten, Pref denotes the prefix of the 'Image attribute, and Name
     --  and Str_Typ specify which specific string type and 'Image attribute to
*************** package body Exp_Imgv is
*** 218,238 ****
     --      xx = Boolean
     --      tv = Boolean (Expr)
  
!    --    For signed integer types with size <= Integer'Size
!    --      xx = Integer
!    --      tv = Integer (Expr)
! 
!    --    For other signed integer types
!    --      xx = Long_Long_Integer
!    --      tv = Long_Long_Integer (Expr)
! 
!    --    For modular types with modulus <= System.Unsigned_Types.Unsigned
!    --      xx = Unsigned
!    --      tv = System.Unsigned_Types.Unsigned (Expr)
  
!    --    For other modular integer types
!    --      xx = Long_Long_Unsigned
!    --      tv = System.Unsigned_Types.Long_Long_Unsigned (Expr)
  
     --    For types whose root type is Wide_Character
     --      xx = Wide_Character
--- 214,226 ----
     --      xx = Boolean
     --      tv = Boolean (Expr)
  
!    --    For signed integer types
!    --      xx = [Long_Long_[Long_]]Integer
!    --      tv = [Long_Long_[Long_]]Integer (Expr)
  
!    --    For modular types
!    --      xx = [Long_Long_[Long_]]Unsigned
!    --      tv = System.Unsigned_Types.[Long_Long_[Long_]]Unsigned (Expr)
  
     --    For types whose root type is Wide_Character
     --      xx = Wide_Character
*************** package body Exp_Imgv is
*** 248,269 ****
     --      tv = Long_Long_Float (Expr)
     --      pm = typ'Digits (typ = subtype of expression)
  
!    --    For ordinary fixed-point types
     --      xx = Ordinary_Fixed_Point
     --      tv = Long_Long_Float (Expr)
     --      pm = typ'Aft (typ = subtype of expression)
  
!    --    For decimal fixed-point types with size = Integer'Size
!    --      xx = Decimal
!    --      tv = Integer (Expr)
!    --      pm = typ'Scale (typ = subtype of expression)
! 
!    --    For decimal fixed-point types with size > Integer'Size
!    --      xx = Long_Long_Decimal
!    --      tv = Long_Long_Integer?(Expr) [convert with no scaling]
!    --      pm = typ'Scale (typ = subtype of expression)
! 
!    --  For enumeration types other than those declared packages Standard
     --  or System, Snn, Pnn, are expanded as above, but the call looks like:
  
     --    Image_Enumeration_NN (rt'Pos (X), Snn, Pnn, typS, typI'Address)
--- 236,260 ----
     --      tv = Long_Long_Float (Expr)
     --      pm = typ'Digits (typ = subtype of expression)
  
!    --    For decimal fixed-point types
!    --      xx = Decimal{32,64,128}
!    --      tv = Integer_{32,64,128} (Expr)? [convert with no scaling]
!    --      pm = typ'Scale (typ = subtype of expression)
! 
!    --    For the most common ordinary fixed-point types
!    --      xx = Fixed{32,64,128}
!    --      tv = Integer_{32,64,128} (Expr) [convert with no scaling]
!    --      pm = numerator of typ'Small (typ = subtype of expression)
!    --           denominator of typ'Small
!    --           (Integer_{32,64,128} x typ'Small)'Fore
!    --           typ'Aft
! 
!    --    For other ordinary fixed-point types
     --      xx = Ordinary_Fixed_Point
     --      tv = Long_Long_Float (Expr)
     --      pm = typ'Aft (typ = subtype of expression)
  
!    --  For enumeration types other than those declared in package Standard
     --  or System, Snn, Pnn, are expanded as above, but the call looks like:
  
     --    Image_Enumeration_NN (rt'Pos (X), Snn, Pnn, typS, typI'Address)
*************** package body Exp_Imgv is
*** 474,496 ****
        if Is_Object_Image (Pref) then
           Rewrite_Object_Image (N, Pref, Name_Image, Standard_String);
           return;
  
        --  Enable speed-optimized expansion of user-defined enumeration types
        --  if we are compiling with optimizations enabled and enumeration type
        --  literals are generated. Otherwise the call will be expanded into a
        --  call to the runtime library.
  
!       elsif Optimization_Level > 0
          and then not Global_Discard_Names
!         and then Is_User_Defined_Enumeration_Type (Root_Type (Entity (Pref)))
        then
           Expand_User_Defined_Enumeration_Image;
           return;
        end if;
  
-       Ptyp := Entity (Pref);
-       Rtyp := Root_Type (Ptyp);
- 
        --  Build declarations of Snn and Pnn to be inserted
  
        Ins_List := New_List (
--- 465,499 ----
        if Is_Object_Image (Pref) then
           Rewrite_Object_Image (N, Pref, Name_Image, Standard_String);
           return;
+       end if;
+ 
+       Ptyp := Entity (Pref);
+ 
+       --  Ada 2020 allows 'Image on private types, so fetch the underlying
+       --  type to obtain the structure of the type. We use the base type,
+       --  not the root type, to handle properly derived types, but we use
+       --  the root type for enumeration types, because the literal map is
+       --  attached to the root. Should be inherited ???
+ 
+       if Is_Enumeration_Type (Ptyp) then
+          Rtyp := Underlying_Type (Root_Type (Ptyp));
+       else
+          Rtyp := Underlying_Type (Base_Type (Ptyp));
+       end if;
  
        --  Enable speed-optimized expansion of user-defined enumeration types
        --  if we are compiling with optimizations enabled and enumeration type
        --  literals are generated. Otherwise the call will be expanded into a
        --  call to the runtime library.
  
!       if Optimization_Level > 0
          and then not Global_Discard_Names
!         and then Is_User_Defined_Enumeration_Type (Rtyp)
        then
           Expand_User_Defined_Enumeration_Image;
           return;
        end if;
  
        --  Build declarations of Snn and Pnn to be inserted
  
        Ins_List := New_List (
*************** package body Exp_Imgv is
*** 523,529 ****
  
        Enum_Case := False;
  
!       if Rtyp = Standard_Boolean then
           Imid := RE_Image_Boolean;
           Tent := Rtyp;
  
--- 526,540 ----
  
        Enum_Case := False;
  
!       --  If this is a case where Image should be transformed using Put_Image,
!       --  then do so. See Exp_Put_Image for details.
! 
!       if Exp_Put_Image.Image_Should_Call_Put_Image (N) then
!          Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
!          Analyze_And_Resolve (N, Standard_String, Suppress => All_Checks);
!          return;
! 
!       elsif Rtyp = Standard_Boolean then
           Imid := RE_Image_Boolean;
           Tent := Rtyp;
  
*************** package body Exp_Imgv is
*** 549,583 ****
           Tent := Rtyp;
  
        elsif Is_Signed_Integer_Type (Rtyp) then
!          if Esize (Rtyp) <= Esize (Standard_Integer) then
              Imid := RE_Image_Integer;
              Tent := Standard_Integer;
!          else
              Imid := RE_Image_Long_Long_Integer;
              Tent := Standard_Long_Long_Integer;
           end if;
  
        elsif Is_Modular_Integer_Type (Rtyp) then
           if Modulus (Rtyp) <= Modulus (RTE (RE_Unsigned)) then
              Imid := RE_Image_Unsigned;
              Tent := RTE (RE_Unsigned);
!          else
              Imid := RE_Image_Long_Long_Unsigned;
              Tent := RTE (RE_Long_Long_Unsigned);
           end if;
  
!       elsif Is_Fixed_Point_Type (Rtyp) and then Has_Decimal_Small (Rtyp) then
!          if UI_To_Int (Esize (Rtyp)) <= Standard_Integer_Size then
!             Imid := RE_Image_Decimal;
!             Tent := Standard_Integer;
           else
!             Imid := RE_Image_Long_Long_Decimal;
!             Tent := Standard_Long_Long_Integer;
           end if;
  
        elsif Is_Ordinary_Fixed_Point_Type (Rtyp) then
!          Imid := RE_Image_Ordinary_Fixed_Point;
!          Tent := Standard_Long_Long_Float;
  
        elsif Is_Floating_Point_Type (Rtyp) then
           Imid := RE_Image_Floating_Point;
--- 560,640 ----
           Tent := Rtyp;
  
        elsif Is_Signed_Integer_Type (Rtyp) then
!          if Esize (Rtyp) <= Standard_Integer_Size then
              Imid := RE_Image_Integer;
              Tent := Standard_Integer;
!          elsif Esize (Rtyp) <= Standard_Long_Long_Integer_Size then
              Imid := RE_Image_Long_Long_Integer;
              Tent := Standard_Long_Long_Integer;
+          else
+             Imid := RE_Image_Long_Long_Long_Integer;
+             Tent := Standard_Long_Long_Long_Integer;
           end if;
  
        elsif Is_Modular_Integer_Type (Rtyp) then
           if Modulus (Rtyp) <= Modulus (RTE (RE_Unsigned)) then
              Imid := RE_Image_Unsigned;
              Tent := RTE (RE_Unsigned);
!          elsif Modulus (Rtyp) <= Modulus (RTE (RE_Long_Long_Unsigned)) then
              Imid := RE_Image_Long_Long_Unsigned;
              Tent := RTE (RE_Long_Long_Unsigned);
+          else
+             Imid := RE_Image_Long_Long_Long_Unsigned;
+             Tent := RTE (RE_Long_Long_Long_Unsigned);
           end if;
  
!       elsif Is_Decimal_Fixed_Point_Type (Rtyp) then
!          if Esize (Rtyp) <= 32 then
!             Imid := RE_Image_Decimal32;
!             Tent := RTE (RE_Integer_32);
!          elsif Esize (Rtyp) <= 64 then
!             Imid := RE_Image_Decimal64;
!             Tent := RTE (RE_Integer_64);
           else
!             Imid := RE_Image_Decimal128;
!             Tent := RTE (RE_Integer_128);
           end if;
  
        elsif Is_Ordinary_Fixed_Point_Type (Rtyp) then
!          declare
!             Num : constant Uint := Norm_Num (Small_Value (Rtyp));
!             Den : constant Uint := Norm_Den (Small_Value (Rtyp));
!             Max : constant Uint := UI_Max (Num, Den);
!             Min : constant Uint := UI_Min (Num, Den);
!             Siz : constant Uint := Esize (Rtyp);
! 
!          begin
!             --  Note that we do not use sharp bounds to speed things up
! 
!             if Siz <= 32
!               and then Max <= Uint_2 ** 31
!               and then (Min = Uint_1
!                          or else (Num < Den and then Den <= Uint_2 ** 27)
!                          or else (Den < Num and then Num <= Uint_2 ** 25))
!             then
!                Imid := RE_Image_Fixed32;
!                Tent := RTE (RE_Integer_32);
!             elsif Siz <= 64
!               and then Max <= Uint_2 ** 63
!               and then (Min = Uint_1
!                          or else (Num < Den and then Den <= Uint_2 ** 59)
!                          or else (Den < Num and then Num <= Uint_2 ** 53))
!             then
!                Imid := RE_Image_Fixed64;
!                Tent := RTE (RE_Integer_64);
!             elsif System_Max_Integer_Size = 128
!               and then Max <= Uint_2 ** 127
!               and then (Min = Uint_1
!                          or else (Num < Den and then Den <= Uint_2 ** 123)
!                          or else (Den < Num and then Num <= Uint_2 ** 122))
!             then
!                Imid := RE_Image_Fixed128;
!                Tent := RTE (RE_Integer_128);
!             else
!                Imid := RE_Image_Ordinary_Fixed_Point;
!                Tent := Standard_Long_Long_Float;
!             end if;
!          end;
  
        elsif Is_Floating_Point_Type (Rtyp) then
           Imid := RE_Image_Floating_Point;
*************** package body Exp_Imgv is
*** 586,604 ****
        --  Only other possibility is user-defined enumeration type
  
        else
           if Discard_Names (First_Subtype (Ptyp))
!            or else No (Lit_Strings (Root_Type (Ptyp)))
           then
              --  When pragma Discard_Names applies to the first subtype, build
!             --  (Pref'Pos (Expr))'Img.
  
              Rewrite (N,
                Make_Attribute_Reference (Loc,
                  Prefix =>
!                    Make_Attribute_Reference (Loc,
!                      Prefix         => Pref,
!                      Attribute_Name => Name_Pos,
!                      Expressions    => New_List (Expr)),
                  Attribute_Name =>
                    Name_Img));
              Analyze_And_Resolve (N, Standard_String);
--- 643,666 ----
        --  Only other possibility is user-defined enumeration type
  
        else
+          pragma Assert (Is_Enumeration_Type (Rtyp));
+ 
           if Discard_Names (First_Subtype (Ptyp))
!            or else No (Lit_Strings (Rtyp))
           then
              --  When pragma Discard_Names applies to the first subtype, build
!             --  (Long_Long_Integer (Pref'Pos (Expr)))'Img. The conversion is
!             --  there to avoid applying 'Img directly in Universal_Integer,
!             --  which can be a very large type. See also the handling of 'Val.
  
              Rewrite (N,
                Make_Attribute_Reference (Loc,
                  Prefix =>
!                   Convert_To (Standard_Long_Long_Integer,
!                     Make_Attribute_Reference (Loc,
!                     Prefix         => Pref,
!                     Attribute_Name => Name_Pos,
!                     Expressions    => New_List (Expr))),
                  Attribute_Name =>
                    Name_Img));
              Analyze_And_Resolve (N, Standard_String);
*************** package body Exp_Imgv is
*** 633,646 ****
        --  Build first argument for call
  
        if Enum_Case then
!          Arg_List := New_List (
!            Make_Attribute_Reference (Loc,
!              Attribute_Name => Name_Pos,
!              Prefix         => New_Occurrence_Of (Ptyp, Loc),
!              Expressions    => New_List (Expr)));
  
        else
!          Arg_List := New_List (Convert_To (Tent, Expr));
        end if;
  
        --  Append Snn, Pnn arguments
--- 695,743 ----
        --  Build first argument for call
  
        if Enum_Case then
!          declare
!             T : Entity_Id;
!          begin
!             --  In Ada 2020 we need the underlying type here, because 'Image is
!             --  allowed on private types. We have already checked the version
!             --  when resolving the attribute.
! 
!             if Is_Private_Type (Ptyp) then
!                T := Rtyp;
!             else
!                T := Ptyp;
!             end if;
! 
!             Arg_List := New_List (
!               Make_Attribute_Reference (Loc,
!                 Attribute_Name => Name_Pos,
!                 Prefix         => New_Occurrence_Of (T, Loc),
!                 Expressions    => New_List (Expr)));
!          end;
! 
!       --  AI12-0020: Ada 2020 allows 'Image for all types, including private
!       --  types. If the full type is not a fixed-point type, then it is enough
!       --  to set the Conversion_OK flag. However, that would not work for
!       --  fixed-point types, because that flag changes the run-time semantics
!       --  of fixed-point type conversions; therefore, we must first convert to
!       --  Rtyp, and then to Tent.
  
        else
!          declare
!             Conv : Node_Id;
!          begin
!             if Is_Private_Type (Etype (Expr)) then
!                if Is_Fixed_Point_Type (Rtyp) then
!                   Conv := Convert_To (Tent, OK_Convert_To (Rtyp, Expr));
!                else
!                   Conv := OK_Convert_To (Tent, Expr);
!                end if;
!             else
!                Conv := Convert_To (Tent, Expr);
!             end if;
! 
!             Arg_List := New_List (Conv);
!          end;
        end if;
  
        --  Append Snn, Pnn arguments
*************** package body Exp_Imgv is
*** 679,707 ****
               Prefix         => New_Occurrence_Of (Ptyp, Loc),
               Attribute_Name => Name_Digits));
  
!       --  For ordinary fixed-point types, append Aft parameter
  
!       elsif Is_Ordinary_Fixed_Point_Type (Rtyp) then
!          Append_To (Arg_List,
!            Make_Attribute_Reference (Loc,
!              Prefix         => New_Occurrence_Of (Ptyp, Loc),
!              Attribute_Name => Name_Aft));
  
!          if Has_Decimal_Small (Rtyp) then
              Set_Conversion_OK (First (Arg_List));
-             Set_Etype (First (Arg_List), Tent);
-          end if;
  
!       --  For decimal, append Scale and also set to do literal conversion
  
!       elsif Is_Decimal_Fixed_Point_Type (Rtyp) then
!          Append_To (Arg_List,
!            Make_Attribute_Reference (Loc,
!              Prefix         => New_Occurrence_Of (Ptyp, Loc),
!              Attribute_Name => Name_Scale));
  
!          Set_Conversion_OK (First (Arg_List));
!          Set_Etype (First (Arg_List), Tent);
  
        --  For Wide_Character, append Ada 2005 indication
  
--- 776,820 ----
               Prefix         => New_Occurrence_Of (Ptyp, Loc),
               Attribute_Name => Name_Digits));
  
!       --  For decimal, append Scale and also set to do literal conversion
  
!       elsif Is_Decimal_Fixed_Point_Type (Rtyp) then
!          Set_Conversion_OK (First (Arg_List));
  
!          Append_To (Arg_List, Make_Integer_Literal (Loc, Scale_Value (Ptyp)));
! 
!       --  For ordinary fixed-point types, append Num, Den, Fore, Aft parameters
!       --  and also set to do literal conversion.
! 
!       elsif Is_Ordinary_Fixed_Point_Type (Rtyp) then
!          if Imid /= RE_Image_Ordinary_Fixed_Point then
              Set_Conversion_OK (First (Arg_List));
  
!             Append_To (Arg_List,
!               Make_Integer_Literal (Loc, -Norm_Num (Small_Value (Ptyp))));
  
!             Append_To (Arg_List,
!               Make_Integer_Literal (Loc, -Norm_Den (Small_Value (Ptyp))));
  
!             --  We want to compute the Fore value for the fixed point type
!             --  whose mantissa type is Tent and whose small is typ'Small.
! 
!             declare
!                T : Ureal := Uint_2 ** (Esize (Tent) - 1) * Small_Value (Ptyp);
!                F : Nat   := 2;
! 
!             begin
!                while T >= Ureal_10 loop
!                   F := F + 1;
!                   T := T / Ureal_10;
!                end loop;
! 
!                Append_To (Arg_List,
!                   Make_Integer_Literal (Loc, UI_From_Int (F)));
!             end;
!          end if;
! 
!          Append_To (Arg_List, Make_Integer_Literal (Loc, Aft_Value (Ptyp)));
  
        --  For Wide_Character, append Ada 2005 indication
  
*************** package body Exp_Imgv is
*** 746,752 ****
  
     --    btyp (Value_xx (X))
  
!    --  where btyp is he base type of the prefix
  
     --    For types whose root type is Character
     --      xx = Character
--- 859,865 ----
  
     --    btyp (Value_xx (X))
  
!    --  where btyp is the base type of the prefix
  
     --    For types whose root type is Character
     --      xx = Character
*************** package body Exp_Imgv is
*** 760,779 ****
     --    For types whose root type is Boolean
     --      xx = Boolean
  
!    --    For signed integer types with size <= Integer'Size
!    --      xx = Integer
  
!    --    For other signed integer types
!    --      xx = Long_Long_Integer
  
!    --    For modular types with modulus <= System.Unsigned_Types.Unsigned
!    --      xx = Unsigned
  
!    --    For other modular integer types
!    --      xx = Long_Long_Unsigned
  
!    --    For floating-point types and ordinary fixed-point types
!    --      xx = Real
  
     --  For Wide_[Wide_]Character types, typ'Value (X) expands into:
  
--- 873,895 ----
     --    For types whose root type is Boolean
     --      xx = Boolean
  
!    --    For signed integer types
!    --      xx = [Long_Long_[Long_]]Integer
  
!    --    For modular types
!    --      xx = [Long_Long_[Long_]]Unsigned
  
!    --    For floating-point types
!    --      xx = [Long_[Long_]]Float
  
!    --  For decimal fixed-point types, typ'Value (X) expands into
  
!    --    btyp?(Value_Decimal{32,64,128} (X, typ'Scale));
! 
!    --  For the most common ordinary fixed-point types
! 
!    --    btyp?(Value_Fixed{32,64,128} (X, numerator of S, denominator of S));
!    --    where S = typ'Small
  
     --  For Wide_[Wide_]Character types, typ'Value (X) expands into:
  
*************** package body Exp_Imgv is
*** 781,795 ****
  
     --  where btyp is the base type of the prefix, and EM is the encoding method
  
-    --  For decimal types with size <= Integer'Size, typ'Value (X)
-    --  expands into
- 
-    --    btyp?(Value_Decimal (X, typ'Scale));
- 
-    --  For all other decimal types, typ'Value (X) expands into
- 
-    --    btyp?(Value_Long_Long_Decimal (X, typ'Scale))
- 
     --  For enumeration types other than those derived from types Boolean,
     --  Character, Wide_[Wide_]Character in Standard, typ'Value (X) expands to:
  
--- 897,902 ----
*************** package body Exp_Imgv is
*** 837,869 ****
             Make_Integer_Literal (Loc,
               Intval => Int (Wide_Character_Encoding_Method)));
  
-       elsif     Rtyp = Base_Type (Standard_Short_Short_Integer)
-         or else Rtyp = Base_Type (Standard_Short_Integer)
-         or else Rtyp = Base_Type (Standard_Integer)
-       then
-          Vid := RE_Value_Integer;
- 
        elsif Is_Signed_Integer_Type (Rtyp) then
!          Vid := RE_Value_Long_Long_Integer;
  
        elsif Is_Modular_Integer_Type (Rtyp) then
           if Modulus (Rtyp) <= Modulus (RTE (RE_Unsigned)) then
              Vid := RE_Value_Unsigned;
!          else
              Vid := RE_Value_Long_Long_Unsigned;
           end if;
  
        elsif Is_Decimal_Fixed_Point_Type (Rtyp) then
!          if UI_To_Int (Esize (Rtyp)) <= Standard_Integer_Size then
!             Vid := RE_Value_Decimal;
           else
!             Vid := RE_Value_Long_Long_Decimal;
           end if;
  
!          Append_To (Args,
!            Make_Attribute_Reference (Loc,
!              Prefix => New_Occurrence_Of (Typ, Loc),
!              Attribute_Name => Name_Scale));
  
           Rewrite (N,
             OK_Convert_To (Btyp,
--- 944,977 ----
             Make_Integer_Literal (Loc,
               Intval => Int (Wide_Character_Encoding_Method)));
  
        elsif Is_Signed_Integer_Type (Rtyp) then
!          if Esize (Rtyp) <= Standard_Integer_Size then
!             Vid := RE_Value_Integer;
!          elsif Esize (Rtyp) <= Standard_Long_Long_Integer_Size then
!             Vid := RE_Value_Long_Long_Integer;
!          else
!             Vid := RE_Value_Long_Long_Long_Integer;
!          end if;
  
        elsif Is_Modular_Integer_Type (Rtyp) then
           if Modulus (Rtyp) <= Modulus (RTE (RE_Unsigned)) then
              Vid := RE_Value_Unsigned;
!          elsif Modulus (Rtyp) <= Modulus (RTE (RE_Long_Long_Unsigned)) then
              Vid := RE_Value_Long_Long_Unsigned;
+          else
+             Vid := RE_Value_Long_Long_Long_Unsigned;
           end if;
  
        elsif Is_Decimal_Fixed_Point_Type (Rtyp) then
!          if Esize (Rtyp) <= 32 and then abs (Scale_Value (Rtyp)) <= 9 then
!             Vid := RE_Value_Decimal32;
!          elsif Esize (Rtyp) <= 64 and then abs (Scale_Value (Rtyp)) <= 18 then
!             Vid := RE_Value_Decimal64;
           else
!             Vid := RE_Value_Decimal128;
           end if;
  
!          Append_To (Args, Make_Integer_Literal (Loc, Scale_Value (Rtyp)));
  
           Rewrite (N,
             OK_Convert_To (Btyp,
*************** package body Exp_Imgv is
*** 875,882 ****
           Analyze_And_Resolve (N, Btyp);
           return;
  
!       elsif Is_Real_Type (Rtyp) then
!          Vid := RE_Value_Real;
  
        --  Only other possibility is user-defined enumeration type
  
--- 983,1057 ----
           Analyze_And_Resolve (N, Btyp);
           return;
  
!       elsif Is_Ordinary_Fixed_Point_Type (Rtyp) then
!          declare
!             Num : constant Uint := Norm_Num (Small_Value (Rtyp));
!             Den : constant Uint := Norm_Den (Small_Value (Rtyp));
!             Max : constant Uint := UI_Max (Num, Den);
!             Min : constant Uint := UI_Min (Num, Den);
!             Siz : constant Uint := Esize (Rtyp);
! 
!          begin
!             if Siz <= 32
!               and then Max <= Uint_2 ** 31
!               and then (Min = Uint_1 or else Max <= Uint_2 ** 27)
!             then
!                Vid := RE_Value_Fixed32;
!             elsif Siz <= 64
!               and then Max <= Uint_2 ** 63
!               and then (Min = Uint_1 or else Max <= Uint_2 ** 59)
!             then
!                Vid := RE_Value_Fixed64;
!             elsif System_Max_Integer_Size = 128
!               and then Max <= Uint_2 ** 127
!               and then (Min = Uint_1 or else Max <= Uint_2 ** 123)
!             then
!                Vid := RE_Value_Fixed128;
!             else
!                Vid := RE_Value_Long_Float;
!             end if;
! 
!             if Vid /= RE_Value_Long_Float then
!                Append_To (Args,
!                  Make_Integer_Literal (Loc, -Norm_Num (Small_Value (Rtyp))));
! 
!                Append_To (Args,
!                  Make_Integer_Literal (Loc, -Norm_Den (Small_Value (Rtyp))));
! 
!                Rewrite (N,
!                  OK_Convert_To (Btyp,
!                    Make_Function_Call (Loc,
!                      Name => New_Occurrence_Of (RTE (Vid), Loc),
!                      Parameter_Associations => Args)));
! 
!                Set_Etype (N, Btyp);
!                Analyze_And_Resolve (N, Btyp);
!                return;
!             end if;
!          end;
! 
!       elsif Is_Floating_Point_Type (Rtyp) then
!          --  Short_Float and Float are the same type for GNAT
! 
!          if Rtyp = Standard_Short_Float or else Rtyp = Standard_Float then
!             Vid := RE_Value_Float;
! 
!          --  If Long_Float and Long_Long_Float are the same type, then use the
!          --  implementation of the former, which is faster and more accurate.
! 
!          elsif Rtyp = Standard_Long_Float
!            or else (Rtyp = Standard_Long_Long_Float
!                      and then
!                     Standard_Long_Long_Float_Size = Standard_Long_Float_Size)
!          then
!             Vid := RE_Value_Long_Float;
! 
!          elsif Rtyp = Standard_Long_Long_Float then
!             Vid := RE_Value_Long_Long_Float;
! 
!          else
!             raise Program_Error;
!          end if;
  
        --  Only other possibility is user-defined enumeration type
  
*************** package body Exp_Imgv is
*** 1217,1228 ****
     --      yy = Boolean
  
     --    For signed integer types
!    --      xx = Width_Long_Long_Integer
!    --      yy = Long_Long_Integer
  
     --    For modular integer types
!    --      xx = Width_Long_Long_Unsigned
!    --      yy = Long_Long_Unsigned
  
     --  For types derived from Wide_Character, typ'Width expands into
  
--- 1392,1403 ----
     --      yy = Boolean
  
     --    For signed integer types
!    --      xx = Width_[Long_Long_[Long_]]Integer
!    --      yy = [Long_Long_[Long_]]Integer
  
     --    For modular integer types
!    --      xx = Width_[Long_Long_[Long_]]Unsigned
!    --      yy = [Long_Long_[Long_]]Unsigned
  
     --  For types derived from Wide_Character, typ'Width expands into
  
*************** package body Exp_Imgv is
*** 1260,1266 ****
     --      Wide_Wide_Character (typ'First),
     --      Wide_Wide_Character (typ'Last));
  
!    --  For real types, typ'Width and typ'Wide_[Wide_]Width expand into
  
     --    if Ptyp'First > Ptyp'Last then 0 else btyp'Width end if
  
--- 1435,1445 ----
     --      Wide_Wide_Character (typ'First),
     --      Wide_Wide_Character (typ'Last));
  
!    --  For fixed point types, typ'Width and typ'Wide_[Wide_]Width expand into
! 
!    --    if Ptyp'First > Ptyp'Last then 0 else Ptyp'Fore + 1 + Ptyp'Aft end if
! 
!    --  and for floating point types, they expand into
  
     --    if Ptyp'First > Ptyp'Last then 0 else btyp'Width end if
  
*************** package body Exp_Imgv is
*** 1357,1374 ****
        --  Signed integer types
  
        elsif Is_Signed_Integer_Type (Rtyp) then
!          XX := RE_Width_Long_Long_Integer;
!          YY := Standard_Long_Long_Integer;
  
        --  Modular integer types
  
        elsif Is_Modular_Integer_Type (Rtyp) then
!          XX := RE_Width_Long_Long_Unsigned;
!          YY := RTE (RE_Long_Long_Unsigned);
  
!       --  Real types
  
!       elsif Is_Real_Type (Rtyp) then
           Rewrite (N,
             Make_If_Expression (Loc,
               Expressions => New_List (
--- 1536,1601 ----
        --  Signed integer types
  
        elsif Is_Signed_Integer_Type (Rtyp) then
!          if Esize (Rtyp) <= Standard_Integer_Size then
!             XX := RE_Width_Integer;
!             YY := Standard_Integer;
!          elsif Esize (Rtyp) <= Standard_Long_Long_Integer_Size then
!             XX := RE_Width_Long_Long_Integer;
!             YY := Standard_Long_Long_Integer;
!          else
!             XX := RE_Width_Long_Long_Long_Integer;
!             YY := Standard_Long_Long_Long_Integer;
!          end if;
  
        --  Modular integer types
  
        elsif Is_Modular_Integer_Type (Rtyp) then
!          if Modulus (Rtyp) <= Modulus (RTE (RE_Unsigned)) then
!             XX := RE_Width_Unsigned;
!             YY := RTE (RE_Unsigned);
!          elsif Modulus (Rtyp) <= Modulus (RTE (RE_Long_Long_Unsigned)) then
!             XX := RE_Width_Long_Long_Unsigned;
!             YY := RTE (RE_Long_Long_Unsigned);
!          else
!             XX := RE_Width_Long_Long_Long_Unsigned;
!             YY := RTE (RE_Long_Long_Long_Unsigned);
!          end if;
  
!       --  Fixed point types
  
!       elsif Is_Fixed_Point_Type (Rtyp) then
!          Rewrite (N,
!            Make_If_Expression (Loc,
!              Expressions => New_List (
! 
!                Make_Op_Gt (Loc,
!                  Left_Opnd =>
!                    Make_Attribute_Reference (Loc,
!                      Prefix => New_Occurrence_Of (Ptyp, Loc),
!                      Attribute_Name => Name_First),
! 
!                  Right_Opnd =>
!                    Make_Attribute_Reference (Loc,
!                      Prefix => New_Occurrence_Of (Ptyp, Loc),
!                      Attribute_Name => Name_Last)),
! 
!                Make_Integer_Literal (Loc, 0),
! 
!                Make_Op_Add (Loc,
!                  Make_Attribute_Reference (Loc,
!                    Prefix => New_Occurrence_Of (Ptyp, Loc),
!                    Attribute_Name => Name_Fore),
! 
!                  Make_Op_Add (Loc,
!                    Make_Integer_Literal (Loc, 1),
!                    Make_Integer_Literal (Loc, Aft_Value (Ptyp)))))));
! 
!          Analyze_And_Resolve (N, Typ);
!          return;
! 
!       --  Floating point types
! 
!       elsif Is_Floating_Point_Type (Rtyp) then
           Rewrite (N,
             Make_If_Expression (Loc,
               Expressions => New_List (
*************** package body Exp_Imgv is
*** 1595,1612 ****
        Analyze_And_Resolve (N, Typ);
     end Expand_Width_Attribute;
  
-    -----------------------
-    -- Has_Decimal_Small --
-    -----------------------
- 
-    function Has_Decimal_Small (E : Entity_Id) return Boolean is
-    begin
-       return Is_Decimal_Fixed_Point_Type (E)
-         or else
-           (Is_Ordinary_Fixed_Point_Type (E)
-              and then Ureal_10**Aft_Value (E) * Small_Value (E) = Ureal_1);
-    end Has_Decimal_Small;
- 
     --------------------------
     -- Rewrite_Object_Image --
     --------------------------
--- 1822,1827 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_imgv.ads gcc-11.1.0/gcc/ada/exp_imgv.ads
*** gcc-10.3.0/gcc/ada/exp_imgv.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_imgv.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_intr.adb gcc-11.1.0/gcc/ada/exp_intr.adb
*** gcc-10.3.0/gcc/ada/exp_intr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_intr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Einfo;    use Einfo;
*** 29,35 ****
  with Elists;   use Elists;
  with Expander; use Expander;
  with Exp_Atag; use Exp_Atag;
- with Exp_Ch4;  use Exp_Ch4;
  with Exp_Ch7;  use Exp_Ch7;
  with Exp_Ch11; use Exp_Ch11;
  with Exp_Code; use Exp_Code;
--- 29,34 ----
*************** package body Exp_Intr is
*** 138,144 ****
                 Ent : Entity_Id := Current_Scope;
              begin
                 while Present (Ent) loop
!                   exit when not Ekind_In (Ent, E_Block, E_Loop);
                    Ent := Scope (Ent);
                 end loop;
  
--- 137,143 ----
                 Ent : Entity_Id := Current_Scope;
              begin
                 while Present (Ent) loop
!                   exit when Ekind (Ent) not in E_Block | E_Loop;
                    Ent := Scope (Ent);
                 end loop;
  
*************** package body Exp_Intr is
*** 205,216 ****
           return;
        end if;
  
!       --  Use Unsigned_32 for sizes of 32 or below, else Unsigned_64
  
!       if Siz > 32 then
!          T3 := RTE (RE_Unsigned_64);
!       else
           T3 := RTE (RE_Unsigned_32);
        end if;
  
        --  Copy operator node, and reset type and entity fields, for
--- 204,219 ----
           return;
        end if;
  
!       --  Use the appropriate type for the size
  
!       if Siz <= 32 then
           T3 := RTE (RE_Unsigned_32);
+ 
+       elsif Siz <= 64 then
+          T3 := RTE (RE_Unsigned_64);
+ 
+       else pragma Assert (Siz <= 128);
+          T3 := RTE (RE_Unsigned_128);
        end if;
  
        --  Copy operator node, and reset type and entity fields, for
*************** package body Exp_Intr is
*** 430,457 ****
        --  the tag in the table of ancestor tags.
  
        elsif not Is_Interface (Result_Typ) then
!          declare
!             Obj_Tag_Node : Node_Id := New_Copy_Tree (Tag_Arg);
!             CW_Test_Node : Node_Id;
! 
!          begin
!             Build_CW_Membership (Loc,
!               Obj_Tag_Node => Obj_Tag_Node,
!               Typ_Tag_Node =>
!                 New_Occurrence_Of (
!                    Node (First_Elmt (Access_Disp_Table (
!                                        Root_Type (Result_Typ)))), Loc),
!               Related_Nod => N,
!               New_Node    => CW_Test_Node);
! 
!             Insert_Action (N,
!               Make_Implicit_If_Statement (N,
!                 Condition =>
!                   Make_Op_Not (Loc, CW_Test_Node),
!                 Then_Statements =>
!                   New_List (Make_Raise_Statement (Loc,
!                               New_Occurrence_Of (RTE (RE_Tag_Error), Loc)))));
!          end;
  
        --  Call IW_Membership test if the Result_Type is an abstract interface
        --  to look for the tag in the table of interface tags.
--- 433,453 ----
        --  the tag in the table of ancestor tags.
  
        elsif not Is_Interface (Result_Typ) then
!          Insert_Action (N,
!            Make_Implicit_If_Statement (N,
!              Condition =>
!                Make_Op_Not (Loc,
!                  Make_Function_Call (Loc,
!                     Name => New_Occurrence_Of (RTE (RE_CW_Membership), Loc),
!                     Parameter_Associations => New_List (
!                       New_Copy_Tree (Tag_Arg),
!                       New_Occurrence_Of (
!                         Node (First_Elmt (Access_Disp_Table (
!                                             Root_Type (Result_Typ)))), Loc)))),
!              Then_Statements =>
!                New_List (
!                  Make_Raise_Statement (Loc,
!                    Name => New_Occurrence_Of (RTE (RE_Tag_Error), Loc)))));
  
        --  Call IW_Membership test if the Result_Type is an abstract interface
        --  to look for the tag in the table of interface tags.
*************** package body Exp_Intr is
*** 634,642 ****
        elsif Nam = Name_Generic_Dispatching_Constructor then
           Expand_Dispatching_Constructor_Call (N);
  
!       elsif Nam_In (Nam, Name_Import_Address,
!                          Name_Import_Largest_Value,
!                          Name_Import_Value)
        then
           Expand_Import_Call (N);
  
--- 630,638 ----
        elsif Nam = Name_Generic_Dispatching_Constructor then
           Expand_Dispatching_Constructor_Call (N);
  
!       elsif Nam in Name_Import_Address
!                  | Name_Import_Largest_Value
!                  | Name_Import_Value
        then
           Expand_Import_Call (N);
  
*************** package body Exp_Intr is
*** 670,688 ****
        elsif Nam = Name_To_Pointer then
           Expand_To_Pointer (N);
  
!       elsif Nam_In (Nam, Name_File,
!                          Name_Line,
!                          Name_Source_Location,
!                          Name_Enclosing_Entity,
!                          Name_Compilation_ISO_Date,
!                          Name_Compilation_Date,
!                          Name_Compilation_Time)
        then
           Expand_Source_Info (N, Nam);
  
!          --  If we have a renaming, expand the call to the original operation,
!          --  which must itself be intrinsic, since renaming requires matching
!          --  conventions and this has already been checked.
  
        elsif Present (Alias (E)) then
           Expand_Intrinsic_Call (N, Alias (E));
--- 666,684 ----
        elsif Nam = Name_To_Pointer then
           Expand_To_Pointer (N);
  
!       elsif Nam in Name_File
!                  | Name_Line
!                  | Name_Source_Location
!                  | Name_Enclosing_Entity
!                  | Name_Compilation_ISO_Date
!                  | Name_Compilation_Date
!                  | Name_Compilation_Time
        then
           Expand_Source_Info (N, Nam);
  
!       --  If we have a renaming, expand the call to the original operation,
!       --  which must itself be intrinsic, since renaming requires matching
!       --  conventions and this has already been checked.
  
        elsif Present (Alias (E)) then
           Expand_Intrinsic_Call (N, Alias (E));
*************** package body Exp_Intr is
*** 690,699 ****
        elsif Nkind (N) in N_Binary_Op then
           Expand_Binary_Operator_Call (N);
  
!          --  The only other case is where an external name was specified, since
!          --  this is the only way that an otherwise unrecognized name could
!          --  escape the checking in Sem_Prag. Nothing needs to be done in such
!          --  a case, since we pass such a call to the back end unchanged.
  
        else
           null;
--- 686,695 ----
        elsif Nkind (N) in N_Binary_Op then
           Expand_Binary_Operator_Call (N);
  
!       --  The only other case is where an external name was specified, since
!       --  this is the only way that an otherwise unrecognized name could
!       --  escape the checking in Sem_Prag. Nothing needs to be done in such
!       --  a case, since we pass such a call to the back end unchanged.
  
        else
           null;
*************** package body Exp_Intr is
*** 860,866 ****
     ---------------------------
  
     procedure Expand_Unc_Conversion (N : Node_Id; E : Entity_Id) is
!       Func : constant Entity_Id  := Entity (Name (N));
        Conv : Node_Id;
        Ftyp : Entity_Id;
        Ttyp : Entity_Id;
--- 856,862 ----
     ---------------------------
  
     procedure Expand_Unc_Conversion (N : Node_Id; E : Entity_Id) is
!       Func : constant Entity_Id := Entity (Name (N));
        Conv : Node_Id;
        Ftyp : Entity_Id;
        Ttyp : Entity_Id;
*************** package body Exp_Intr is
*** 911,922 ****
        end if;
  
        Rewrite (N, Unchecked_Convert_To (Ttyp, Conv));
!       Set_Etype (N, Ttyp);
!       Set_Analyzed (N);
! 
!       if Nkind (N) = N_Unchecked_Type_Conversion then
!          Expand_N_Unchecked_Type_Conversion (N);
!       end if;
     end Expand_Unc_Conversion;
  
     -----------------------------
--- 907,913 ----
        end if;
  
        Rewrite (N, Unchecked_Convert_To (Ttyp, Conv));
!       Analyze_And_Resolve (N, Ttyp);
     end Expand_Unc_Conversion;
  
     -----------------------------
*************** package body Exp_Intr is
*** 1232,1240 ****
  
           if Is_Class_Wide_Type (Desig_Typ)
             or else
!             (Is_Array_Type (Desig_Typ)
!               and then not Is_Constrained (Desig_Typ)
!               and then Is_Packed (Desig_Typ))
           then
              declare
                 Deref    : constant Node_Id :=
--- 1223,1230 ----
  
           if Is_Class_Wide_Type (Desig_Typ)
             or else
!             (Is_Packed_Array (Desig_Typ)
!               and then not Is_Constrained (Desig_Typ))
           then
              declare
                 Deref    : constant Node_Id :=
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_intr.ads gcc-11.1.0/gcc/ada/exp_intr.ads
*** gcc-10.3.0/gcc/ada/exp_intr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_intr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_pakd.adb gcc-11.1.0/gcc/ada/exp_pakd.adb
*** gcc-10.3.0/gcc/ada/exp_pakd.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_pakd.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Pakd is
*** 233,240 ****
           elsif T_Size <= 32 then
              Swap_RE := RE_Bswap_32;
  
!          else pragma Assert (T_Size <= 64);
              Swap_RE := RE_Bswap_64;
           end if;
  
           Swap_F := RTE (Swap_RE);
--- 233,243 ----
           elsif T_Size <= 32 then
              Swap_RE := RE_Bswap_32;
  
!          elsif T_Size <= 64 then
              Swap_RE := RE_Bswap_64;
+ 
+          else pragma Assert (T_Size <= 128);
+             Swap_RE := RE_Bswap_128;
           end if;
  
           Swap_F := RTE (Swap_RE);
*************** package body Exp_Pakd is
*** 316,322 ****
  
              --  Integer (subscript) - Integer (Styp'First)
  
!             if Esize (Styp) < Esize (Standard_Integer) then
                 Newsub :=
                   Make_Op_Subtract (Loc,
                     Left_Opnd => Convert_To (Standard_Integer, Newsub),
--- 319,325 ----
  
              --  Integer (subscript) - Integer (Styp'First)
  
!             if Esize (Styp) < Standard_Integer_Size then
                 Newsub :=
                   Make_Op_Subtract (Loc,
                     Left_Opnd => Convert_To (Standard_Integer, Newsub),
*************** package body Exp_Pakd is
*** 469,475 ****
          or else
             (Nkind (Aexp) = N_Indexed_Component
               and then Is_Entity_Name (Prefix (Aexp)))
!         or else Nkind_In (Aexp, N_Explicit_Dereference, N_Function_Call)
        then
           Set_Analyzed (Aexp);
        end if;
--- 472,478 ----
          or else
             (Nkind (Aexp) = N_Indexed_Component
               and then Is_Entity_Name (Prefix (Aexp)))
!         or else Nkind (Aexp) in N_Explicit_Dereference | N_Function_Call
        then
           Set_Analyzed (Aexp);
        end if;
*************** package body Exp_Pakd is
*** 501,508 ****
        --  packed array type. It creates the type and installs it as required.
  
        procedure Set_PB_Type;
!       --  Sets PB_Type to Packed_Bytes{1,2,4} as required by the alignment
!       --  requirements (see documentation in the spec of this package).
  
        -----------------
        -- Install_PAT --
--- 504,512 ----
        --  packed array type. It creates the type and installs it as required.
  
        procedure Set_PB_Type;
!       --  Set PB_Type to [Rev_]Packed_Bytes{1,2,4} as required by the alignment
!       --  and the scalar storage order requirements (see documentation in the
!       --  spec of this package).
  
        -----------------
        -- Install_PAT --
*************** package body Exp_Pakd is
*** 580,593 ****
           Set_Is_Volatile_Full_Access (PAT, Is_Volatile_Full_Access  (Typ));
           Set_Treat_As_Volatile       (PAT, Treat_As_Volatile        (Typ));
  
-          --  For a non-bit-packed array, propagate reverse storage order
-          --  flag from original base type to packed array base type.
- 
-          if not Is_Bit_Packed_Array (Typ) then
-             Set_Reverse_Storage_Order
-               (Etype (PAT), Reverse_Storage_Order (Base_Type (Typ)));
-          end if;
- 
           --  We definitely do not want to delay freezing for packed array
           --  types. This is of particular importance for the itypes that are
           --  generated for record components depending on discriminants where
--- 584,589 ----
*************** package body Exp_Pakd is
*** 616,631 ****
             or else Alignment (Typ) = 1
             or else Component_Alignment (Typ) = Calign_Storage_Unit
           then
!             PB_Type := RTE (RE_Packed_Bytes1);
  
           elsif Csize mod 4 /= 0
             or else Alignment (Typ) = 2
           then
!             PB_Type := RTE (RE_Packed_Bytes2);
  
           else
!             PB_Type := RTE (RE_Packed_Bytes4);
           end if;
        end Set_PB_Type;
  
     --  Start of processing for Create_Packed_Array_Impl_Type
--- 612,647 ----
             or else Alignment (Typ) = 1
             or else Component_Alignment (Typ) = Calign_Storage_Unit
           then
!             if Reverse_Storage_Order (Typ) then
!                PB_Type := RTE (RE_Rev_Packed_Bytes1);
!             else
!                PB_Type := RTE (RE_Packed_Bytes1);
!             end if;
  
           elsif Csize mod 4 /= 0
             or else Alignment (Typ) = 2
           then
!             if Reverse_Storage_Order (Typ) then
!                PB_Type := RTE (RE_Rev_Packed_Bytes2);
!             else
!                PB_Type := RTE (RE_Packed_Bytes2);
!             end if;
  
           else
!             if Reverse_Storage_Order (Typ) then
!                PB_Type := RTE (RE_Rev_Packed_Bytes4);
!             else
!                PB_Type := RTE (RE_Packed_Bytes4);
!             end if;
           end if;
+ 
+          --  The Rev_Packed_Bytes{1,2,4} types cannot be directly declared with
+          --  the reverse scalar storage order in System.Unsigned_Types because
+          --  their component type is aliased and the combination would then be
+          --  flagged as illegal by the compiler. Moreover changing the compiler
+          --  would not address the bootstrap path issue with earlier versions.
+ 
+          Set_Reverse_Storage_Order (PB_Type, Reverse_Storage_Order (Typ));
        end Set_PB_Type;
  
     --  Start of processing for Create_Packed_Array_Impl_Type
*************** package body Exp_Pakd is
*** 797,802 ****
--- 813,822 ----
           end;
  
           Install_PAT;
+ 
+          --  Propagate the reverse storage order flag to the base type
+ 
+          Set_Reverse_Storage_Order (Etype (PAT), Reverse_Storage_Order (Typ));
           return;
  
        --  Case of bit-packing required for unconstrained array. We create
*************** package body Exp_Pakd is
*** 900,921 ****
                 --  The bounds are statically known, and btyp is one of the
                 --  unsigned types, depending on the length.
  
!                if Len_Bits <= Standard_Short_Short_Integer_Size then
!                   Btyp := RTE (RE_Short_Short_Unsigned);
! 
!                elsif Len_Bits <= Standard_Short_Integer_Size then
!                   Btyp := RTE (RE_Short_Unsigned);
! 
!                elsif Len_Bits <= Standard_Integer_Size then
!                   Btyp := RTE (RE_Unsigned);
! 
!                elsif Len_Bits <= Standard_Long_Integer_Size then
!                   Btyp := RTE (RE_Long_Unsigned);
! 
!                else
!                   Btyp := RTE (RE_Long_Long_Unsigned);
!                end if;
! 
                 Lit := Make_Integer_Literal (Loc, 2 ** Len_Bits - 1);
                 Set_Print_In_Hex (Lit);
  
--- 920,926 ----
                 --  The bounds are statically known, and btyp is one of the
                 --  unsigned types, depending on the length.
  
!                Btyp := Small_Integer_Type_For (Len_Bits, Uns => True);
                 Lit := Make_Integer_Literal (Loc, 2 ** Len_Bits - 1);
                 Set_Print_In_Hex (Lit);
  
*************** package body Exp_Pakd is
*** 1251,1258 ****
           --  array type on Obj to get lost. So we save the type of Obj, and
           --  make sure it is reset properly.
  
!          New_Lhs := Duplicate_Subexpr (Obj, Name_Req => True);
!          New_Rhs := Duplicate_Subexpr_No_Checks (Obj);
  
           --  First we deal with the "and"
  
--- 1256,1270 ----
           --  array type on Obj to get lost. So we save the type of Obj, and
           --  make sure it is reset properly.
  
!          declare
!             T : constant Entity_Id := Etype (Obj);
!          begin
!             New_Lhs := Duplicate_Subexpr (Obj, Name_Req => True);
!             New_Rhs := Duplicate_Subexpr_No_Checks (Obj);
!             Set_Etype (Obj, T);
!             Set_Etype (New_Lhs, T);
!             Set_Etype (New_Rhs, T);
!          end;
  
           --  First we deal with the "and"
  
*************** package body Exp_Pakd is
*** 1520,1531 ****
        Get_Base_And_Bit_Offset (Prefix (N), Base, Offset);
  
        Rewrite (N,
!         Unchecked_Convert_To (Universal_Integer,
            Make_Op_Mod (Loc,
              Left_Opnd => Offset,
              Right_Opnd => Make_Integer_Literal (Loc, System_Storage_Unit))));
  
!       Analyze_And_Resolve (N, Universal_Integer);
     end Expand_Packed_Bit_Reference;
  
     ------------------------------------
--- 1532,1543 ----
        Get_Base_And_Bit_Offset (Prefix (N), Base, Offset);
  
        Rewrite (N,
!         Unchecked_Convert_To (Standard_Natural,
            Make_Op_Mod (Loc,
              Left_Opnd => Offset,
              Right_Opnd => Make_Integer_Literal (Loc, System_Storage_Unit))));
  
!       Analyze_And_Resolve (N, Standard_Natural);
     end Expand_Packed_Bit_Reference;
  
     ------------------------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_pakd.ads gcc-11.1.0/gcc/ada/exp_pakd.ads
*** gcc-10.3.0/gcc/ada/exp_pakd.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_pakd.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Pakd is
*** 86,91 ****
--- 86,100 ----
     --    Packed_Bytes{1,2,4} type is made on the basis of alignment needs as
     --    described above for the unconstrained case.
  
+    --  When the packed array (sub)type is specified to have the reverse scalar
+    --  storage order, the Packed_Bytes{1,2,4} references above are replaced
+    --  with Rev_Packed_Bytes{1,2,4}. This is necessary because, although the
+    --  component type is Packed_Byte and therefore endian neutral, the scalar
+    --  storage order of the new type must be compatible with that of an outer
+    --  composite type, if this composite type contains a component whose type
+    --  is the packed array (sub)type and which does not start or does not end
+    --  on a storage unit boundary.
+ 
     --  When a variable of packed array type is allocated, gigi will allocate
     --  the amount of space indicated by the corresponding packed array type.
     --  However, we do NOT attempt to rewrite the types of any references or
*************** package Exp_Pakd is
*** 208,219 ****
     -- Entity Tables for Packed Access Routines --
     ----------------------------------------------
  
!    --  For the cases of component size = 3,5-7,9-15,17-31,33-63 we call library
!    --  routines. These tables provide the entity for the proper routine. They
!    --  are exposed in the spec to allow checking for the presence of the needed
!    --  routine when an array is subject to pragma Pack.
  
!    type E_Array is array (Int range 01 .. 63) of RE_Id;
  
     --  Array of Bits_nn entities. Note that we do not use library routines
     --  for the 8-bit and 16-bit cases, but we still fill in the table, using
--- 217,228 ----
     -- Entity Tables for Packed Access Routines --
     ----------------------------------------------
  
!    --  For the cases of component size = 3,5-7,9-15,17-31,33-63,65-127 we call
!    --  library routines. These tables provide the entity for the right routine.
!    --  They are exposed in the spec to allow checking for the presence of the
!    --  needed routine when an array is subject to pragma Pack.
  
!    type E_Array is array (Int range 1 .. 127) of RE_Id;
  
     --  Array of Bits_nn entities. Note that we do not use library routines
     --  for the 8-bit and 16-bit cases, but we still fill in the table, using
*************** package Exp_Pakd is
*** 283,289 ****
        60 => RE_Bits_60,
        61 => RE_Bits_61,
        62 => RE_Bits_62,
!       63 => RE_Bits_63);
  
     --  Array of Get routine entities. These are used to obtain an element from
     --  a packed array. The N'th entry is used to obtain elements from a packed
--- 292,362 ----
        60 => RE_Bits_60,
        61 => RE_Bits_61,
        62 => RE_Bits_62,
!       63 => RE_Bits_63,
!       64 => RE_Unsigned_64,
!       65 => RE_Bits_65,
!       66 => RE_Bits_66,
!       67 => RE_Bits_67,
!       68 => RE_Bits_68,
!       69 => RE_Bits_69,
!       70 => RE_Bits_70,
!       71 => RE_Bits_71,
!       72 => RE_Bits_72,
!       73 => RE_Bits_73,
!       74 => RE_Bits_74,
!       75 => RE_Bits_75,
!       76 => RE_Bits_76,
!       77 => RE_Bits_77,
!       78 => RE_Bits_78,
!       79 => RE_Bits_79,
!       80 => RE_Bits_80,
!       81 => RE_Bits_81,
!       82 => RE_Bits_82,
!       83 => RE_Bits_83,
!       84 => RE_Bits_84,
!       85 => RE_Bits_85,
!       86 => RE_Bits_86,
!       87 => RE_Bits_87,
!       88 => RE_Bits_88,
!       89 => RE_Bits_89,
!       90 => RE_Bits_90,
!       91 => RE_Bits_91,
!       92 => RE_Bits_92,
!       93 => RE_Bits_93,
!       94 => RE_Bits_94,
!       95 => RE_Bits_95,
!       96 => RE_Bits_96,
!       97 => RE_Bits_97,
!       98 => RE_Bits_98,
!       99 => RE_Bits_99,
!       100 => RE_Bits_100,
!       101 => RE_Bits_101,
!       102 => RE_Bits_102,
!       103 => RE_Bits_103,
!       104 => RE_Bits_104,
!       105 => RE_Bits_105,
!       106 => RE_Bits_106,
!       107 => RE_Bits_107,
!       108 => RE_Bits_108,
!       109 => RE_Bits_109,
!       110 => RE_Bits_110,
!       111 => RE_Bits_111,
!       112 => RE_Bits_112,
!       113 => RE_Bits_113,
!       114 => RE_Bits_114,
!       115 => RE_Bits_115,
!       116 => RE_Bits_116,
!       117 => RE_Bits_117,
!       118 => RE_Bits_118,
!       119 => RE_Bits_119,
!       120 => RE_Bits_120,
!       121 => RE_Bits_121,
!       122 => RE_Bits_122,
!       123 => RE_Bits_123,
!       124 => RE_Bits_124,
!       125 => RE_Bits_125,
!       126 => RE_Bits_126,
!       127 => RE_Bits_127);
  
     --  Array of Get routine entities. These are used to obtain an element from
     --  a packed array. The N'th entry is used to obtain elements from a packed
*************** package Exp_Pakd is
*** 353,359 ****
        60 => RE_Get_60,
        61 => RE_Get_61,
        62 => RE_Get_62,
!       63 => RE_Get_63);
  
     --  Array of Get routine entities to be used in the case where the packed
     --  array is itself a component of a packed structure, and therefore may not
--- 426,496 ----
        60 => RE_Get_60,
        61 => RE_Get_61,
        62 => RE_Get_62,
!       63 => RE_Get_63,
!       64 => RE_Null,
!       65 => RE_Get_65,
!       66 => RE_Get_66,
!       67 => RE_Get_67,
!       68 => RE_Get_68,
!       69 => RE_Get_69,
!       70 => RE_Get_70,
!       71 => RE_Get_71,
!       72 => RE_Get_72,
!       73 => RE_Get_73,
!       74 => RE_Get_74,
!       75 => RE_Get_75,
!       76 => RE_Get_76,
!       77 => RE_Get_77,
!       78 => RE_Get_78,
!       79 => RE_Get_79,
!       80 => RE_Get_80,
!       81 => RE_Get_81,
!       82 => RE_Get_82,
!       83 => RE_Get_83,
!       84 => RE_Get_84,
!       85 => RE_Get_85,
!       86 => RE_Get_86,
!       87 => RE_Get_87,
!       88 => RE_Get_88,
!       89 => RE_Get_89,
!       90 => RE_Get_90,
!       91 => RE_Get_91,
!       92 => RE_Get_92,
!       93 => RE_Get_93,
!       94 => RE_Get_94,
!       95 => RE_Get_95,
!       96 => RE_Get_96,
!       97 => RE_Get_97,
!       98 => RE_Get_98,
!       99 => RE_Get_99,
!       100 => RE_Get_100,
!       101 => RE_Get_101,
!       102 => RE_Get_102,
!       103 => RE_Get_103,
!       104 => RE_Get_104,
!       105 => RE_Get_105,
!       106 => RE_Get_106,
!       107 => RE_Get_107,
!       108 => RE_Get_108,
!       109 => RE_Get_109,
!       110 => RE_Get_110,
!       111 => RE_Get_111,
!       112 => RE_Get_112,
!       113 => RE_Get_113,
!       114 => RE_Get_114,
!       115 => RE_Get_115,
!       116 => RE_Get_116,
!       117 => RE_Get_117,
!       118 => RE_Get_118,
!       119 => RE_Get_119,
!       120 => RE_Get_120,
!       121 => RE_Get_121,
!       122 => RE_Get_122,
!       123 => RE_Get_123,
!       124 => RE_Get_124,
!       125 => RE_Get_125,
!       126 => RE_Get_126,
!       127 => RE_Get_127);
  
     --  Array of Get routine entities to be used in the case where the packed
     --  array is itself a component of a packed structure, and therefore may not
*************** package Exp_Pakd is
*** 423,429 ****
        60 => RE_GetU_60,
        61 => RE_Get_61,
        62 => RE_GetU_62,
!       63 => RE_Get_63);
  
     --  Array of Set routine entities. These are used to assign an element of a
     --  packed array. The N'th entry is used to assign elements for a packed
--- 560,630 ----
        60 => RE_GetU_60,
        61 => RE_Get_61,
        62 => RE_GetU_62,
!       63 => RE_Get_63,
!       64 => RE_Null,
!       65 => RE_Get_65,
!       66 => RE_GetU_66,
!       67 => RE_Get_67,
!       68 => RE_GetU_68,
!       69 => RE_Get_69,
!       70 => RE_GetU_70,
!       71 => RE_Get_71,
!       72 => RE_GetU_72,
!       73 => RE_Get_73,
!       74 => RE_GetU_74,
!       75 => RE_Get_75,
!       76 => RE_GetU_76,
!       77 => RE_Get_77,
!       78 => RE_GetU_78,
!       79 => RE_Get_79,
!       80 => RE_GetU_80,
!       81 => RE_Get_81,
!       82 => RE_GetU_82,
!       83 => RE_Get_83,
!       84 => RE_GetU_84,
!       85 => RE_Get_85,
!       86 => RE_GetU_86,
!       87 => RE_Get_87,
!       88 => RE_GetU_88,
!       89 => RE_Get_89,
!       90 => RE_GetU_90,
!       91 => RE_Get_91,
!       92 => RE_GetU_92,
!       93 => RE_Get_93,
!       94 => RE_GetU_94,
!       95 => RE_Get_95,
!       96 => RE_GetU_96,
!       97 => RE_Get_97,
!       98 => RE_GetU_98,
!       99 => RE_Get_99,
!       100 => RE_GetU_100,
!       101 => RE_Get_101,
!       102 => RE_GetU_102,
!       103 => RE_Get_103,
!       104 => RE_GetU_104,
!       105 => RE_Get_105,
!       106 => RE_GetU_106,
!       107 => RE_Get_107,
!       108 => RE_GetU_108,
!       109 => RE_Get_109,
!       110 => RE_GetU_110,
!       111 => RE_Get_111,
!       112 => RE_GetU_112,
!       113 => RE_Get_113,
!       114 => RE_GetU_114,
!       115 => RE_Get_115,
!       116 => RE_GetU_116,
!       117 => RE_Get_117,
!       118 => RE_GetU_118,
!       119 => RE_Get_119,
!       120 => RE_GetU_120,
!       121 => RE_Get_121,
!       122 => RE_GetU_122,
!       123 => RE_Get_123,
!       124 => RE_GetU_124,
!       125 => RE_Get_125,
!       126 => RE_GetU_126,
!       127 => RE_Get_127);
  
     --  Array of Set routine entities. These are used to assign an element of a
     --  packed array. The N'th entry is used to assign elements for a packed
*************** package Exp_Pakd is
*** 493,499 ****
        60 => RE_Set_60,
        61 => RE_Set_61,
        62 => RE_Set_62,
!       63 => RE_Set_63);
  
     --  Array of Set routine entities to be used in the case where the packed
     --  array is itself a component of a packed structure, and therefore may not
--- 694,764 ----
        60 => RE_Set_60,
        61 => RE_Set_61,
        62 => RE_Set_62,
!       63 => RE_Set_63,
!       64 => RE_Null,
!       65 => RE_Set_65,
!       66 => RE_Set_66,
!       67 => RE_Set_67,
!       68 => RE_Set_68,
!       69 => RE_Set_69,
!       70 => RE_Set_70,
!       71 => RE_Set_71,
!       72 => RE_Set_72,
!       73 => RE_Set_73,
!       74 => RE_Set_74,
!       75 => RE_Set_75,
!       76 => RE_Set_76,
!       77 => RE_Set_77,
!       78 => RE_Set_78,
!       79 => RE_Set_79,
!       80 => RE_Set_80,
!       81 => RE_Set_81,
!       82 => RE_Set_82,
!       83 => RE_Set_83,
!       84 => RE_Set_84,
!       85 => RE_Set_85,
!       86 => RE_Set_86,
!       87 => RE_Set_87,
!       88 => RE_Set_88,
!       89 => RE_Set_89,
!       90 => RE_Set_90,
!       91 => RE_Set_91,
!       92 => RE_Set_92,
!       93 => RE_Set_93,
!       94 => RE_Set_94,
!       95 => RE_Set_95,
!       96 => RE_Set_96,
!       97 => RE_Set_97,
!       98 => RE_Set_98,
!       99 => RE_Set_99,
!       100 => RE_Set_100,
!       101 => RE_Set_101,
!       102 => RE_Set_102,
!       103 => RE_Set_103,
!       104 => RE_Set_104,
!       105 => RE_Set_105,
!       106 => RE_Set_106,
!       107 => RE_Set_107,
!       108 => RE_Set_108,
!       109 => RE_Set_109,
!       110 => RE_Set_110,
!       111 => RE_Set_111,
!       112 => RE_Set_112,
!       113 => RE_Set_113,
!       114 => RE_Set_114,
!       115 => RE_Set_115,
!       116 => RE_Set_116,
!       117 => RE_Set_117,
!       118 => RE_Set_118,
!       119 => RE_Set_119,
!       120 => RE_Set_120,
!       121 => RE_Set_121,
!       122 => RE_Set_122,
!       123 => RE_Set_123,
!       124 => RE_Set_124,
!       125 => RE_Set_125,
!       126 => RE_Set_126,
!       127 => RE_Set_127);
  
     --  Array of Set routine entities to be used in the case where the packed
     --  array is itself a component of a packed structure, and therefore may not
*************** package Exp_Pakd is
*** 563,569 ****
        60 => RE_SetU_60,
        61 => RE_Set_61,
        62 => RE_SetU_62,
!       63 => RE_Set_63);
  
     -----------------
     -- Subprograms --
--- 828,898 ----
        60 => RE_SetU_60,
        61 => RE_Set_61,
        62 => RE_SetU_62,
!       63 => RE_Set_63,
!       64 => RE_Null,
!       65 => RE_Set_65,
!       66 => RE_SetU_66,
!       67 => RE_Set_67,
!       68 => RE_SetU_68,
!       69 => RE_Set_69,
!       70 => RE_SetU_70,
!       71 => RE_Set_71,
!       72 => RE_SetU_72,
!       73 => RE_Set_73,
!       74 => RE_SetU_74,
!       75 => RE_Set_75,
!       76 => RE_SetU_76,
!       77 => RE_Set_77,
!       78 => RE_SetU_78,
!       79 => RE_Set_79,
!       80 => RE_SetU_80,
!       81 => RE_Set_81,
!       82 => RE_SetU_82,
!       83 => RE_Set_83,
!       84 => RE_SetU_84,
!       85 => RE_Set_85,
!       86 => RE_SetU_86,
!       87 => RE_Set_87,
!       88 => RE_SetU_88,
!       89 => RE_Set_89,
!       90 => RE_SetU_90,
!       91 => RE_Set_91,
!       92 => RE_SetU_92,
!       93 => RE_Set_93,
!       94 => RE_SetU_94,
!       95 => RE_Set_95,
!       96 => RE_SetU_96,
!       97 => RE_Set_97,
!       98 => RE_SetU_98,
!       99 => RE_Set_99,
!       100 => RE_SetU_100,
!       101 => RE_Set_101,
!       102 => RE_SetU_102,
!       103 => RE_Set_103,
!       104 => RE_SetU_104,
!       105 => RE_Set_105,
!       106 => RE_SetU_106,
!       107 => RE_Set_107,
!       108 => RE_SetU_108,
!       109 => RE_Set_109,
!       110 => RE_SetU_110,
!       111 => RE_Set_111,
!       112 => RE_SetU_112,
!       113 => RE_Set_113,
!       114 => RE_SetU_114,
!       115 => RE_Set_115,
!       116 => RE_SetU_116,
!       117 => RE_Set_117,
!       118 => RE_SetU_118,
!       119 => RE_Set_119,
!       120 => RE_SetU_120,
!       121 => RE_Set_121,
!       122 => RE_SetU_122,
!       123 => RE_Set_123,
!       124 => RE_SetU_124,
!       125 => RE_Set_125,
!       126 => RE_SetU_126,
!       127 => RE_Set_127);
  
     -----------------
     -- Subprograms --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_prag.adb gcc-11.1.0/gcc/ada/exp_prag.adb
*** gcc-10.3.0/gcc/ada/exp_prag.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_prag.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Casing;   use Casing;
*** 28,33 ****
--- 28,34 ----
  with Checks;   use Checks;
  with Debug;    use Debug;
  with Einfo;    use Einfo;
+ with Elists;   use Elists;
  with Errout;   use Errout;
  with Exp_Ch11; use Exp_Ch11;
  with Exp_Util; use Exp_Util;
*************** package body Exp_Prag is
*** 61,74 ****
     -- Local Subprograms --
     -----------------------
  
!    function Arg1 (N : Node_Id) return Node_Id;
!    function Arg2 (N : Node_Id) return Node_Id;
!    function Arg3 (N : Node_Id) return Node_Id;
     --  Obtain specified pragma argument expression
  
     procedure Expand_Pragma_Abort_Defer             (N : Node_Id);
     procedure Expand_Pragma_Check                   (N : Node_Id);
     procedure Expand_Pragma_Common_Object           (N : Node_Id);
     procedure Expand_Pragma_Import_Or_Interface     (N : Node_Id);
     procedure Expand_Pragma_Inspection_Point        (N : Node_Id);
     procedure Expand_Pragma_Interrupt_Priority      (N : Node_Id);
--- 62,74 ----
     -- Local Subprograms --
     -----------------------
  
!    function Arg_N (N : Node_Id; Arg_Number : Positive) return Node_Id;
     --  Obtain specified pragma argument expression
  
     procedure Expand_Pragma_Abort_Defer             (N : Node_Id);
     procedure Expand_Pragma_Check                   (N : Node_Id);
     procedure Expand_Pragma_Common_Object           (N : Node_Id);
+    procedure Expand_Pragma_CUDA_Execute            (N : Node_Id);
     procedure Expand_Pragma_Import_Or_Interface     (N : Node_Id);
     procedure Expand_Pragma_Inspection_Point        (N : Node_Id);
     procedure Expand_Pragma_Interrupt_Priority      (N : Node_Id);
*************** package body Exp_Prag is
*** 84,96 ****
     --  these cases we want no initialization to occur, but we have already done
     --  the initialization by the time we see the pragma, so we have to undo it.
  
!    ----------
!    -- Arg1 --
!    ----------
  
!    function Arg1 (N : Node_Id) return Node_Id is
!       Arg : constant Node_Id := First (Pragma_Argument_Associations (N));
     begin
        if Present (Arg)
          and then Nkind (Arg) = N_Pragma_Argument_Association
        then
--- 84,107 ----
     --  these cases we want no initialization to occur, but we have already done
     --  the initialization by the time we see the pragma, so we have to undo it.
  
!    -----------
!    -- Arg_N --
!    -----------
  
!    function Arg_N (N : Node_Id; Arg_Number : Positive) return Node_Id is
!       Arg : Node_Id := First (Pragma_Argument_Associations (N));
     begin
+       if No (Arg) then
+          return Empty;
+       end if;
+ 
+       for J in 2 .. Arg_Number loop
+          Next (Arg);
+          if No (Arg) then
+             return Empty;
+          end if;
+       end loop;
+ 
        if Present (Arg)
          and then Nkind (Arg) = N_Pragma_Argument_Association
        then
*************** package body Exp_Prag is
*** 98,163 ****
        else
           return Arg;
        end if;
!    end Arg1;
! 
!    ----------
!    -- Arg2 --
!    ----------
! 
!    function Arg2 (N : Node_Id) return Node_Id is
!       Arg1 : constant Node_Id := First (Pragma_Argument_Associations (N));
! 
!    begin
!       if No (Arg1) then
!          return Empty;
! 
!       else
!          declare
!             Arg : constant Node_Id := Next (Arg1);
!          begin
!             if Present (Arg)
!               and then Nkind (Arg) = N_Pragma_Argument_Association
!             then
!                return Expression (Arg);
!             else
!                return Arg;
!             end if;
!          end;
!       end if;
!    end Arg2;
! 
!    ----------
!    -- Arg3 --
!    ----------
! 
!    function Arg3 (N : Node_Id) return Node_Id is
!       Arg1 : constant Node_Id := First (Pragma_Argument_Associations (N));
! 
!    begin
!       if No (Arg1) then
!          return Empty;
! 
!       else
!          declare
!             Arg : Node_Id := Next (Arg1);
!          begin
!             if No (Arg) then
!                return Empty;
! 
!             else
!                Next (Arg);
! 
!                if Present (Arg)
!                  and then Nkind (Arg) = N_Pragma_Argument_Association
!                then
!                   return Expression (Arg);
!                else
!                   return Arg;
!                end if;
!             end if;
!          end;
!       end if;
!    end Arg3;
  
     ---------------------
     -- Expand_N_Pragma --
--- 109,115 ----
        else
           return Arg;
        end if;
!    end Arg_N;
  
     ---------------------
     -- Expand_N_Pragma --
*************** package body Exp_Prag is
*** 206,211 ****
--- 158,166 ----
           when Pragma_Common_Object =>
              Expand_Pragma_Common_Object (N);
  
+          when Pragma_CUDA_Execute =>
+             Expand_Pragma_CUDA_Execute (N);
+ 
           when Pragma_Import =>
              Expand_Pragma_Import_Or_Interface (N);
  
*************** package body Exp_Prag is
*** 317,324 ****
     --------------------------
  
     procedure Expand_Pragma_Check (N : Node_Id) is
!       Cond : constant Node_Id := Arg2 (N);
!       Nam  : constant Name_Id := Chars (Arg1 (N));
        Msg  : Node_Id;
  
        Loc : constant Source_Ptr := Sloc (First_Node (Cond));
--- 272,279 ----
     --------------------------
  
     procedure Expand_Pragma_Check (N : Node_Id) is
!       Cond : constant Node_Id := Arg_N (N, 2);
!       Nam  : constant Name_Id := Chars (Arg_N (N, 1));
        Msg  : Node_Id;
  
        Loc : constant Source_Ptr := Sloc (First_Node (Cond));
*************** package body Exp_Prag is
*** 470,498 ****
  
        --  Generate the appropriate if statement. Note that we consider this to
        --  be an explicit conditional in the source, not an implicit if, so we
!       --  do not call Make_Implicit_If_Statement.
  
        --  Case where we generate a direct raise
  
        if ((Debug_Flag_Dot_G
              or else Restriction_Active (No_Exception_Propagation))
             and then Present (Find_Local_Handler (RTE (RE_Assert_Failure), N)))
!         or else (Opt.Exception_Locations_Suppressed and then No (Arg3 (N)))
        then
           Rewrite (N,
             Make_If_Statement (Loc,
               Condition       => Make_Op_Not (Loc, Right_Opnd => Cond),
               Then_Statements => New_List (
!                Make_Raise_Statement (Loc,
!                  Name => New_Occurrence_Of (RTE (RE_Assert_Failure), Loc)))));
  
        --  Case where we call the procedure
  
        else
           --  If we have a message given, use it
  
!          if Present (Arg3 (N)) then
!             Msg := Get_Pragma_Arg (Arg3 (N));
  
           --  Here we have no string, so prepare one
  
--- 425,464 ----
  
        --  Generate the appropriate if statement. Note that we consider this to
        --  be an explicit conditional in the source, not an implicit if, so we
!       --  do not call Make_Implicit_If_Statement. Note also that we wrap the
!       --  raise statement in a block statement so that, if the condition is
!       --  evaluated at compile time to False, then the rewriting of the if
!       --  statement will not involve the raise but the block statement, and
!       --  thus not leave a dangling reference to the raise statement in the
!       --  Local_Raise_Statements list of the handler.
  
        --  Case where we generate a direct raise
  
        if ((Debug_Flag_Dot_G
              or else Restriction_Active (No_Exception_Propagation))
             and then Present (Find_Local_Handler (RTE (RE_Assert_Failure), N)))
!         or else (Opt.Exception_Locations_Suppressed and then No (Arg_N (N, 3)))
        then
           Rewrite (N,
             Make_If_Statement (Loc,
               Condition       => Make_Op_Not (Loc, Right_Opnd => Cond),
               Then_Statements => New_List (
!                Make_Block_Statement (Loc,
!                  Handled_Statement_Sequence =>
!                    Make_Handled_Sequence_Of_Statements (Loc,
!                      Statements => New_List (
!                        Make_Raise_Statement (Loc,
!                          Name =>
!                            New_Occurrence_Of (RTE (RE_Assert_Failure),
!                                                                    Loc))))))));
  
        --  Case where we call the procedure
  
        else
           --  If we have a message given, use it
  
!          if Present (Arg_N (N, 3)) then
!             Msg := Get_Pragma_Arg (Arg_N (N, 3));
  
           --  Here we have no string, so prepare one
  
*************** package body Exp_Prag is
*** 520,526 ****
                 --  that the failure is not at the point of occurrence of the
                 --  pragma, unlike the other Check cases.
  
!                elsif Nam_In (Nam, Name_Precondition, Name_Postcondition) then
                    Get_Name_String (Nam);
                    Insert_Str_In_Name_Buffer ("failed ", 1);
                    Add_Str_To_Name_Buffer (" from ");
--- 486,492 ----
                 --  that the failure is not at the point of occurrence of the
                 --  pragma, unlike the other Check cases.
  
!                elsif Nam in Name_Precondition | Name_Postcondition then
                    Get_Name_String (Nam);
                    Insert_Str_In_Name_Buffer ("failed ", 1);
                    Add_Str_To_Name_Buffer (" from ");
*************** package body Exp_Prag is
*** 615,622 ****
     procedure Expand_Pragma_Common_Object (N : Node_Id) is
        Loc : constant Source_Ptr := Sloc (N);
  
!       Internal : constant Node_Id := Arg1 (N);
!       External : constant Node_Id := Arg2 (N);
  
        Psect : Node_Id;
        --  Psect value upper cased as string literal
--- 581,588 ----
     procedure Expand_Pragma_Common_Object (N : Node_Id) is
        Loc : constant Source_Ptr := Sloc (N);
  
!       Internal : constant Node_Id := Arg_N (N, 1);
!       External : constant Node_Id := Arg_N (N, 2);
  
        Psect : Node_Id;
        --  Psect value upper cased as string literal
*************** package body Exp_Prag is
*** 664,669 ****
--- 630,1208 ----
                Expression => New_Copy_Tree (Psect)))));
     end Expand_Pragma_Common_Object;
  
+    --------------------------------
+    -- Expand_Pragma_CUDA_Execute --
+    --------------------------------
+ 
+    --  Pragma CUDA_Execute is expanded in the following manner:
+ 
+    --  Original Code
+ 
+    --    pragma CUDA_Execute (My_Proc (X, Y), Blocks, Grids, Mem, Stream)
+ 
+    --  Expanded Code
+ 
+    --    declare
+    --      Blocks_Id : CUDA.Vector_Types.Dim3 := Blocks;
+    --      Grids_Id  : CUDA.Vector_Types.Dim3 := Grids;
+    --      Mem_Id    : Integer := <Mem or 0>;
+    --      Stream_Id : CUDA.Driver_Types.Stream_T := <Stream or null>;
+    --      X_Id      : <Type of X> := X;
+    --      Y_Id      : <Type of Y> := Y;
+    --      Arg_Id    : Array (1..2) of System.Address :=
+    --        (X'Address,_Id Y'Address);_Id
+    --    begin
+    --      CUDA.Internal.Push_Call_Configuration (
+    --        Grids_Id,
+    --        Blocks_Id,
+    --        Mem_Id,
+    --        Stream_Id);
+    --      CUDA.Internal.Pop_Call_Configuration (
+    --        Grids_Id'address,
+    --        Blocks_Id'address,
+    --        Mem_Id'address,
+    --        Stream_Id'address),
+    --      CUDA.Runtime_Api.Launch_Kernel (
+    --        My_Proc'Address,
+    --        Blocks_Id,
+    --        Grids_Id,
+    --        Arg_Id'Address,
+    --        Mem_Id,
+    --        Stream_Id);
+    --    end;
+ 
+    procedure Expand_Pragma_CUDA_Execute (N : Node_Id) is
+ 
+       Loc : constant Source_Ptr := Sloc (N);
+ 
+       procedure Append_Copies
+         (Params : List_Id;
+          Decls  : List_Id;
+          Copies : Elist_Id);
+       --  For each parameter in list Params, create an object declaration of
+       --  the followinng form:
+       --
+       --    Copy_Id : Param_Typ := Param_Val;
+       --
+       --  Param_Typ is the type of the parameter. Param_Val is the initial
+       --  value of the parameter. The declarations are stored in Decls, the
+       --  entities of the new objects are collected in list Copies.
+ 
+       function Build_Dim3_Declaration
+         (Decl_Id  : Entity_Id;
+          Init_Val : Node_Id) return Node_Id;
+       --  Build an object declaration of the form
+       --
+       --    Decl_Id : CUDA.Internal.Dim3 := Val;
+       --
+       --  Val depends on the nature of Init_Val, as follows:
+       --
+       --    * If Init_Val is of type CUDA.Vector_Types.Dim3, then Val has the
+       --      following form:
+       --
+       --        (Interfaces.C.Unsigned (Val.X),
+       --         Interfaces.C.Unsigned (Val.Y),
+       --         Interfaces.C.Unsigned (Val.Z))
+       --
+       --    * If Init_Val is a single Integer, Val has the following form:
+       --
+       --        (Interfaces.C.Unsigned (Init_Val),
+       --         Interfaces.C.Unsigned (1),
+       --         Interfaces.C.Unsigned (1))
+       --
+       --    * If Init_Val is an aggregate of three values, Val has the
+       --      following form:
+       --
+       --        (Interfaces.C.Unsigned (Val_1),
+       --         Interfaces.C.Unsigned (Val_2),
+       --         Interfaces.C.Unsigned (Val_3))
+ 
+       function Build_Kernel_Args_Declaration
+         (Kernel_Arg : Entity_Id;
+          Var_Ids    : Elist_Id) return Node_Id;
+       --  Given a list of variables, return an object declaration of the
+       --  following form:
+       --
+       --    Kernel_Arg : ... := (Var_1'Address, ..., Var_N'Address);
+ 
+       function Build_Launch_Kernel_Call
+         (Proc       : Entity_Id;
+          Grid_Dims  : Entity_Id;
+          Block_Dims : Entity_Id;
+          Kernel_Arg : Entity_Id;
+          Memory     : Entity_Id;
+          Stream     : Entity_Id) return Node_Id;
+       --  Builds and returns a call to CUDA.Launch_Kernel using the given
+       --  arguments. Proc is the entity of the procedure passed to the
+       --  CUDA_Execute pragma. Grid_Dims and Block_Dims are entities of the
+       --  generated declarations that hold the kernel's dimensions. Args is the
+       --  entity of the temporary array that holds the arguments of the kernel.
+       --  Memory and Stream are the entities of the temporaries that hold the
+       --  fourth and fith arguments of CUDA_Execute or their default values.
+ 
+       function Build_Shared_Memory_Declaration
+         (Decl_Id  : Entity_Id;
+          Init_Val : Node_Id) return Node_Id;
+       --  Builds a declaration the Defining_Identifier of which is Decl_Id, the
+       --  type of which is inferred from CUDA.Internal.Launch_Kernel and the
+       --  value of which is Init_Val if present or null if not.
+ 
+       function Build_Simple_Declaration_With_Default
+          (Decl_Id     : Entity_Id;
+           Init_Val    : Entity_Id;
+           Typ         : Entity_Id;
+           Default_Val : Entity_Id) return Node_Id;
+       --  Build a declaration the Defining_Identifier of which is Decl_Id, the
+       --  Object_Definition of which is Typ, the value of which is Init_Val if
+       --  present or Default otherwise.
+ 
+       function Build_Stream_Declaration
+         (Decl_Id  : Entity_Id;
+          Init_Val : Node_Id) return Node_Id;
+       --  Build a declaration the Defining_Identifier of which is Decl_Id, the
+       --  type of which is Integer, the value of which is Init_Val if present
+       --  and 0 otherwise.
+ 
+       function Etype_Or_Dim3 (N : Node_Id) return Node_Id;
+       --  If N is an aggregate whose type is unknown, return a new occurrence
+       --  of the public Dim3 type. Otherwise, return a new occurrence of N's
+       --  type.
+ 
+       function Get_Nth_Arg_Type
+          (Subprogram : Entity_Id;
+           N          : Positive) return Entity_Id;
+       --  Returns the type of the Nth argument of Subprogram.
+ 
+       function To_Addresses (Elmts : Elist_Id) return List_Id;
+       --  Returns a new list containing each element of Elmts wrapped in an
+       --  'address attribute reference. When passed No_Elist, returns an empty
+       --  list.
+ 
+       -------------------
+       -- Append_Copies --
+       -------------------
+ 
+       procedure Append_Copies
+         (Params : List_Id;
+          Decls  : List_Id;
+          Copies : Elist_Id)
+       is
+          Copy  : Entity_Id;
+          Param : Node_Id;
+          Expr  : Node_Id;
+       begin
+          Param := First (Params);
+          while Present (Param) loop
+             Copy := Make_Temporary (Loc, 'C');
+ 
+             if Nkind (Param) = N_Parameter_Association then
+                Expr := Explicit_Actual_Parameter (Param);
+             else
+                Expr := Param;
+             end if;
+ 
+             Append_To (Decls,
+                Make_Object_Declaration (Loc,
+                  Defining_Identifier => Copy,
+                  Object_Definition   => New_Occurrence_Of (Etype (Expr), Loc),
+                  Expression          => New_Copy_Tree (Expr)));
+ 
+             Append_Elmt (Copy, Copies);
+             Next (Param);
+          end loop;
+       end Append_Copies;
+ 
+       ----------------------------
+       -- Build_Dim3_Declaration --
+       ----------------------------
+ 
+       function Build_Dim3_Declaration
+         (Decl_Id  : Entity_Id;
+          Init_Val : Node_Id) return Node_Id
+       is
+          --  Expressions for each component of the returned Dim3
+          Dim_X    : Node_Id;
+          Dim_Y    : Node_Id;
+          Dim_Z    : Node_Id;
+ 
+          --  Type of CUDA.Internal.Dim3 - inferred from
+          --  RE_Push_Call_Configuration to avoid needing changes in GNAT when
+          --  the CUDA bindings change (this happens frequently).
+          Internal_Dim3 : constant Entity_Id :=
+            Get_Nth_Arg_Type (RTE (RE_Push_Call_Configuration), 1);
+ 
+          --  Entities for each component of external and internal Dim3
+          First_Component  : Entity_Id := First_Entity (RTE (RE_Dim3));
+          Second_Component : Entity_Id := Next_Entity (First_Component);
+          Third_Component  : Entity_Id := Next_Entity (Second_Component);
+       begin
+ 
+          --  Sem_prag.adb ensured that Init_Val is either a Dim3, an
+          --  aggregate of three Any_Integers or Any_Integer.
+ 
+          --  If Init_Val is a Dim3, use each of its components.
+ 
+          if Etype (Init_Val) = RTE (RE_Dim3) then
+             Dim_X := Make_Selected_Component (Loc,
+               Prefix        => New_Occurrence_Of (Entity (Init_Val), Loc),
+               Selector_Name => New_Occurrence_Of (First_Component, Loc));
+ 
+             Dim_Y := Make_Selected_Component (Loc,
+               Prefix        => New_Occurrence_Of (Entity (Init_Val), Loc),
+               Selector_Name => New_Occurrence_Of (Second_Component, Loc));
+ 
+             Dim_Z := Make_Selected_Component (Loc,
+               Prefix        => New_Occurrence_Of (Entity (Init_Val), Loc),
+               Selector_Name => New_Occurrence_Of (Third_Component, Loc));
+          else
+             --  If Init_Val is an aggregate, use each of its arguments
+ 
+             if Nkind (Init_Val) = N_Aggregate then
+                Dim_X := First (Expressions (Init_Val));
+                Dim_Y := Next (Dim_X);
+                Dim_Z := Next (Dim_Y);
+ 
+             --  Otherwise, we know it is an integer and the rest defaults to 1.
+ 
+             else
+                Dim_X := Init_Val;
+                Dim_Y := Make_Integer_Literal (Loc, 1);
+                Dim_Z := Make_Integer_Literal (Loc, 1);
+             end if;
+          end if;
+ 
+          First_Component  := First_Entity (Internal_Dim3);
+          Second_Component := Next_Entity (First_Component);
+          Third_Component  := Next_Entity (Second_Component);
+ 
+          --  Finally return the CUDA.Internal.Dim3 declaration with an
+          --  aggregate initialization expression.
+ 
+          return Make_Object_Declaration (Loc,
+             Defining_Identifier => Decl_Id,
+             Object_Definition   => New_Occurrence_Of (Internal_Dim3, Loc),
+             Expression          => Make_Aggregate (Loc,
+               Expressions => New_List (
+                  Make_Type_Conversion (Loc,
+                    Subtype_Mark =>
+                      New_Occurrence_Of (Etype (First_Component), Loc),
+                    Expression   => New_Copy_Tree (Dim_X)),
+                  Make_Type_Conversion (Loc,
+                    Subtype_Mark =>
+                      New_Occurrence_Of (Etype (Second_Component), Loc),
+                    Expression   => New_Copy_Tree (Dim_Y)),
+                  Make_Type_Conversion (Loc,
+                    Subtype_Mark =>
+                      New_Occurrence_Of (Etype (Third_Component), Loc),
+                    Expression   => New_Copy_Tree (Dim_Z)))));
+       end Build_Dim3_Declaration;
+ 
+       -----------------------------------
+       -- Build_Kernel_Args_Declaration --
+       -----------------------------------
+ 
+       function Build_Kernel_Args_Declaration
+         (Kernel_Arg : Entity_Id;
+          Var_Ids    : Elist_Id) return Node_Id
+       is
+          Vals : constant List_Id := To_Addresses (Var_Ids);
+       begin
+          return
+            Make_Object_Declaration (Loc,
+              Defining_Identifier => Kernel_Arg,
+              Object_Definition   =>
+                Make_Constrained_Array_Definition (Loc,
+                  Discrete_Subtype_Definitions => New_List (
+                    Make_Range (Loc,
+                      Low_Bound  => Make_Integer_Literal (Loc, 1),
+                      High_Bound =>
+                        Make_Integer_Literal (Loc, List_Length (Vals)))),
+                  Component_Definition         =>
+                    Make_Component_Definition (Loc,
+                      Subtype_Indication =>
+                        New_Occurrence_Of (Etype (RTE (RE_Address)), Loc))),
+              Expression          => Make_Aggregate (Loc, Vals));
+       end Build_Kernel_Args_Declaration;
+ 
+       -------------------------------
+       --  Build_Launch_Kernel_Call --
+       -------------------------------
+ 
+       function Build_Launch_Kernel_Call
+         (Proc       : Entity_Id;
+          Grid_Dims  : Entity_Id;
+          Block_Dims : Entity_Id;
+          Kernel_Arg : Entity_Id;
+          Memory     : Entity_Id;
+          Stream     : Entity_Id) return Node_Id is
+       begin
+          return
+            Make_Procedure_Call_Statement (Loc,
+              Name                   =>
+                New_Occurrence_Of (RTE (RE_Launch_Kernel), Loc),
+              Parameter_Associations => New_List (
+                Make_Attribute_Reference (Loc,
+                  Prefix         => New_Occurrence_Of (Proc, Loc),
+                  Attribute_Name => Name_Address),
+                New_Occurrence_Of (Grid_Dims, Loc),
+                New_Occurrence_Of (Block_Dims, Loc),
+                Make_Attribute_Reference (Loc,
+                  Prefix         => New_Occurrence_Of (Kernel_Arg, Loc),
+                  Attribute_Name => Name_Address),
+                New_Occurrence_Of (Memory, Loc),
+                New_Occurrence_Of (Stream, Loc)));
+       end Build_Launch_Kernel_Call;
+ 
+       -------------------------------------
+       -- Build_Shared_Memory_Declaration --
+       -------------------------------------
+ 
+       function Build_Shared_Memory_Declaration
+         (Decl_Id  : Entity_Id;
+          Init_Val : Node_Id) return Node_Id
+       is
+       begin
+          return Build_Simple_Declaration_With_Default
+            (Decl_Id     => Decl_Id,
+             Init_Val    => Init_Val,
+             Typ         =>
+               New_Occurrence_Of
+                 (Get_Nth_Arg_Type (RTE (RE_Launch_Kernel), 5), Loc),
+             Default_Val => Make_Integer_Literal (Loc, 0));
+       end Build_Shared_Memory_Declaration;
+ 
+       -------------------------------------------
+       -- Build_Simple_Declaration_With_Default --
+       -------------------------------------------
+ 
+       function Build_Simple_Declaration_With_Default
+         (Decl_Id     : Entity_Id;
+          Init_Val    : Node_Id;
+          Typ         : Entity_Id;
+          Default_Val : Node_Id) return Node_Id
+       is
+          Value : Node_Id := Init_Val;
+       begin
+          if No (Value) then
+             Value := Default_Val;
+          end if;
+ 
+          return Make_Object_Declaration (Loc,
+            Defining_Identifier => Decl_Id,
+            Object_Definition   => Typ,
+            Expression          => Value);
+       end Build_Simple_Declaration_With_Default;
+ 
+       ------------------------------
+       -- Build_Stream_Declaration --
+       ------------------------------
+ 
+       function Build_Stream_Declaration
+         (Decl_Id  : Entity_Id;
+          Init_Val : Node_Id) return Node_Id
+       is
+       begin
+          return Build_Simple_Declaration_With_Default
+            (Decl_Id     => Decl_Id,
+             Init_Val    => Init_Val,
+             Typ         =>
+               New_Occurrence_Of
+                 (Get_Nth_Arg_Type (RTE (RE_Launch_Kernel), 6), Loc),
+             Default_Val => Make_Null (Loc));
+       end Build_Stream_Declaration;
+ 
+       ------------------------
+       -- Etype_Or_Dim3  --
+       ------------------------
+ 
+       function Etype_Or_Dim3 (N : Node_Id) return Node_Id is
+       begin
+          if Nkind (N) = N_Aggregate and then Is_Composite_Type (Etype (N))
+          then
+             return New_Occurrence_Of (RTE (RE_Dim3), Sloc (N));
+          end if;
+ 
+          return New_Occurrence_Of (Etype (N), Loc);
+       end Etype_Or_Dim3;
+ 
+       ----------------------
+       -- Get_Nth_Arg_Type --
+       ----------------------
+ 
+       function Get_Nth_Arg_Type
+          (Subprogram : Entity_Id;
+           N          : Positive) return Entity_Id
+       is
+          Argument : Entity_Id := First_Entity (Subprogram);
+       begin
+          for J in 2 .. N loop
+             Argument := Next_Entity (Argument);
+          end loop;
+ 
+          return Etype (Argument);
+       end Get_Nth_Arg_Type;
+ 
+       ------------------
+       -- To_Addresses --
+       ------------------
+ 
+       function To_Addresses (Elmts : Elist_Id) return List_Id is
+          Result : constant List_Id := New_List;
+          Elmt   : Elmt_Id;
+       begin
+          if Elmts = No_Elist then
+             return Result;
+          end if;
+ 
+          Elmt := First_Elmt (Elmts);
+          while Present (Elmt) loop
+             Append_To (Result,
+               Make_Attribute_Reference (Loc,
+                 Prefix         => New_Occurrence_Of (Node (Elmt), Loc),
+                 Attribute_Name => Name_Address));
+             Next_Elmt (Elmt);
+          end loop;
+ 
+          return Result;
+       end To_Addresses;
+ 
+       --  Local variables
+ 
+       --  Pragma arguments
+ 
+       Procedure_Call   : constant Node_Id := Get_Pragma_Arg (Arg_N (N, 1));
+       Grid_Dimensions  : constant Node_Id := Get_Pragma_Arg (Arg_N (N, 2));
+       Block_Dimensions : constant Node_Id := Get_Pragma_Arg (Arg_N (N, 3));
+       Shared_Memory    : constant Node_Id := Get_Pragma_Arg (Arg_N (N, 4));
+       CUDA_Stream      : constant Node_Id := Get_Pragma_Arg (Arg_N (N, 5));
+ 
+       --  Entities of objects that will be overwritten by calls to cuda runtime
+       Grids_Id  : constant Entity_Id := Make_Temporary (Loc, 'C');
+       Blocks_Id : constant Entity_Id := Make_Temporary (Loc, 'C');
+       Memory_Id : constant Entity_Id := Make_Temporary (Loc, 'C');
+       Stream_Id : constant Entity_Id := Make_Temporary (Loc, 'C');
+ 
+       --  Entities of objects that capture the value of pragma arguments
+       Temp_Grid  : constant Entity_Id := Make_Temporary (Loc, 'C');
+       Temp_Block : constant Entity_Id := Make_Temporary (Loc, 'C');
+ 
+       --  Declarations for temporary block and grids. These needs to be stored
+       --  in temporary declarations as the expressions will need to be
+       --  referenced multiple times but could have side effects.
+       Temp_Grid_Decl : constant Node_Id := Make_Object_Declaration (Loc,
+         Defining_Identifier => Temp_Grid,
+         Object_Definition   => Etype_Or_Dim3 (Grid_Dimensions),
+         Expression          => Grid_Dimensions);
+       Temp_Block_Decl : constant Node_Id := Make_Object_Declaration (Loc,
+         Defining_Identifier => Temp_Block,
+         Object_Definition   => Etype_Or_Dim3 (Block_Dimensions),
+         Expression          => Block_Dimensions);
+ 
+       --  List holding the entities of the copies of Procedure_Call's
+       --  arguments.
+ 
+       Kernel_Arg_Copies : constant Elist_Id := New_Elmt_List;
+ 
+       --  Entity of the array that contains the address of each of the kernel's
+       --  arguments.
+ 
+       Kernel_Args_Id : constant Entity_Id := Make_Temporary (Loc, 'C');
+ 
+       --  Calls to the CUDA runtime API.
+ 
+       Launch_Kernel_Call : Node_Id;
+       Pop_Call           : Node_Id;
+       Push_Call          : Node_Id;
+ 
+       --  Declaration of all temporaries required for CUDA API Calls.
+ 
+       Blk_Decls  : constant List_Id := New_List;
+ 
+    --  Start of processing for CUDA_Execute
+ 
+    begin
+       --  Append temporary declarations
+ 
+       Append_To (Blk_Decls, Temp_Grid_Decl);
+       Analyze (Temp_Grid_Decl);
+ 
+       Append_To (Blk_Decls, Temp_Block_Decl);
+       Analyze (Temp_Block_Decl);
+ 
+       --  Build parameter declarations for CUDA API calls
+ 
+       Append_To
+         (Blk_Decls,
+          Build_Dim3_Declaration
+            (Grids_Id, New_Occurrence_Of (Temp_Grid, Loc)));
+ 
+       Append_To
+         (Blk_Decls,
+          Build_Dim3_Declaration
+            (Blocks_Id, New_Occurrence_Of (Temp_Block, Loc)));
+ 
+       Append_To
+         (Blk_Decls,
+          Build_Shared_Memory_Declaration (Memory_Id, Shared_Memory));
+ 
+       Append_To
+         (Blk_Decls, Build_Stream_Declaration (Stream_Id, CUDA_Stream));
+ 
+       Append_Copies
+         (Parameter_Associations (Procedure_Call),
+          Blk_Decls,
+          Kernel_Arg_Copies);
+ 
+       Append_To
+         (Blk_Decls,
+          Build_Kernel_Args_Declaration
+            (Kernel_Args_Id, Kernel_Arg_Copies));
+ 
+       --  Build calls to the CUDA API
+ 
+       Push_Call :=
+          Make_Procedure_Call_Statement (Loc,
+            Name                   =>
+              New_Occurrence_Of (RTE (RE_Push_Call_Configuration), Loc),
+            Parameter_Associations => New_List (
+              New_Occurrence_Of (Grids_Id, Loc),
+              New_Occurrence_Of (Blocks_Id, Loc),
+              New_Occurrence_Of (Memory_Id, Loc),
+              New_Occurrence_Of (Stream_Id, Loc)));
+ 
+       Pop_Call :=
+         Make_Procedure_Call_Statement (Loc,
+           Name                   =>
+             New_Occurrence_Of (RTE (RE_Pop_Call_Configuration), Loc),
+           Parameter_Associations => To_Addresses
+             (New_Elmt_List
+               (Grids_Id,
+                Blocks_Id,
+                Memory_Id,
+                Stream_Id)));
+ 
+       Launch_Kernel_Call := Build_Launch_Kernel_Call
+         (Proc       => Entity (Name (Procedure_Call)),
+          Grid_Dims  => Grids_Id,
+          Block_Dims => Blocks_Id,
+          Kernel_Arg => Kernel_Args_Id,
+          Memory     => Memory_Id,
+          Stream     => Stream_Id);
+ 
+       --  Finally make the block that holds declarations and calls
+ 
+       Rewrite (N,
+         Make_Block_Statement (Loc,
+           Declarations               => Blk_Decls,
+           Handled_Statement_Sequence =>
+             Make_Handled_Sequence_Of_Statements (Loc,
+              Statements => New_List (
+                Push_Call,
+                Pop_Call,
+                Launch_Kernel_Call))));
+       Analyze (N);
+    end Expand_Pragma_CUDA_Execute;
+ 
     ----------------------------------
     -- Expand_Pragma_Contract_Cases --
     ----------------------------------
*************** package body Exp_Prag is
*** 942,950 ****
           -----------------------
  
           function Expand_Attributes (N : Node_Id) return Traverse_Result is
!             Decl : Node_Id;
!             Pref : Node_Id;
!             Temp : Entity_Id;
  
           begin
              --  Attribute 'Old
--- 1481,1523 ----
           -----------------------
  
           function Expand_Attributes (N : Node_Id) return Traverse_Result is
!             Decl     : Node_Id;
!             Pref     : Node_Id;
!             Temp     : Entity_Id;
!             Indirect : Boolean := False;
! 
!             use Sem_Util.Old_Attr_Util.Indirect_Temps;
! 
!             procedure Append_For_Indirect_Temp
!               (N : Node_Id; Is_Eval_Stmt : Boolean);
! 
!             --  Append either a declaration (which is to be elaborated
!             --  unconditionally) or an evaluation statement (which is
!             --  to be executed conditionally).
! 
!             -------------------------------
!             --  Append_For_Indirect_Temp --
!             -------------------------------
! 
!             procedure Append_For_Indirect_Temp
!               (N : Node_Id; Is_Eval_Stmt : Boolean)
!             is
!             begin
!                if Is_Eval_Stmt then
!                   Append_To (Eval_Stmts, N);
!                else
!                   Prepend_To (Decls, N);
!                   --  This use of Prepend (as opposed to Append) is why
!                   --  we have the Append_Decls_In_Reverse_Order parameter.
!                end if;
!             end Append_For_Indirect_Temp;
! 
!             procedure Declare_Indirect_Temporary is new
!               Declare_Indirect_Temp (
!                 Append_Item                   => Append_For_Indirect_Temp,
!                 Append_Decls_In_Reverse_Order => True);
! 
!          --  Start of processing for Expand_Attributes
  
           begin
              --  Attribute 'Old
*************** package body Exp_Prag is
*** 953,989 ****
                and then Attribute_Name (N) = Name_Old
              then
                 Pref := Prefix (N);
-                Temp := Make_Temporary (Loc, 'T', Pref);
-                Set_Etype (Temp, Etype (Pref));
  
!                --  Generate a temporary to capture the value of the prefix:
!                --    Temp : <Pref type>;
  
!                Decl :=
!                  Make_Object_Declaration (Loc,
!                    Defining_Identifier => Temp,
!                    Object_Definition   =>
!                      New_Occurrence_Of (Etype (Pref), Loc));
  
!                --  Place that temporary at the beginning of declarations, to
!                --  prevent anomalies in the GNATprove flow-analysis pass in
!                --  the precondition procedure that follows.
  
!                Prepend_To (Decls, Decl);
  
!                --  If the type is unconstrained, the prefix provides its
!                --  value and constraint, so add it to declaration.
  
!                if not Is_Constrained (Etype (Pref))
!                  and then Is_Entity_Name (Pref)
!                then
!                   Set_Expression (Decl, Pref);
!                   Analyze (Decl);
  
!                --  Otherwise add an assignment statement to temporary using
!                --  prefix as RHS.
  
!                else
                    Analyze (Decl);
  
                    if No (Eval_Stmts) then
--- 1526,1574 ----
                and then Attribute_Name (N) = Name_Old
              then
                 Pref := Prefix (N);
  
!                Indirect := Indirect_Temp_Needed (Etype (Pref));
  
!                if Indirect then
!                   if No (Eval_Stmts) then
!                      Eval_Stmts := New_List;
!                   end if;
  
!                   Declare_Indirect_Temporary
!                     (Attr_Prefix   => Pref,
!                      Indirect_Temp => Temp);
  
!                --  Declare a temporary of the prefix type with no explicit
!                --  initial value. If the appropriate contract case is selected
!                --  at run time, then the temporary will be initialized via an
!                --  assignment statement.
  
!                else
!                   Temp := Make_Temporary (Loc, 'T', Pref);
!                   Set_Etype (Temp, Etype (Pref));
  
!                   --  Generate a temporary to capture the value of the prefix:
!                   --    Temp : <Pref type>;
  
!                   Decl :=
!                     Make_Object_Declaration (Loc,
!                       Defining_Identifier => Temp,
!                       Object_Definition   =>
!                         New_Occurrence_Of (Etype (Pref), Loc));
  
!                   --  Place that temporary at the beginning of declarations, to
!                   --  prevent anomalies in the GNATprove flow-analysis pass in
!                   --  the precondition procedure that follows.
! 
!                   Prepend_To (Decls, Decl);
! 
!                   --  Initially Temp is uninitialized (which is required for
!                   --  correctness if default initialization might have side
!                   --  effects). Assign prefix value to temp on Eval_Statement
!                   --  list, so assignment will be executed conditionally.
! 
!                   Set_Ekind (Temp, E_Variable);
!                   Set_Suppress_Initialization (Temp);
                    Analyze (Decl);
  
                    if No (Eval_Stmts) then
*************** package body Exp_Prag is
*** 994,1000 ****
--- 1579,1590 ----
                      Make_Assignment_Statement (Loc,
                        Name       => New_Occurrence_Of (Temp, Loc),
                        Expression => Pref));
+                end if;
+ 
+                --  Mark the temporary as coming from a 'Old reference
  
+                if Present (Temp) then
+                   Set_Stores_Attribute_Old_Prefix (Temp);
                 end if;
  
                 --  Ensure that the prefix is valid
*************** package body Exp_Prag is
*** 1006,1012 ****
                 --  Replace the original attribute 'Old by a reference to the
                 --  generated temporary.
  
!                Rewrite (N, New_Occurrence_Of (Temp, Loc));
  
              --  Attribute 'Result
  
--- 1596,1608 ----
                 --  Replace the original attribute 'Old by a reference to the
                 --  generated temporary.
  
!                if Indirect then
!                   Rewrite (N,
!                     Indirect_Temp_Value
!                       (Temp => Temp, Typ => Etype (Pref), Loc => Loc));
!                else
!                   Rewrite (N, New_Occurrence_Of (Temp, Loc));
!                end if;
  
              --  Attribute 'Result
  
*************** package body Exp_Prag is
*** 1357,1367 ****
        --  Raise Assertion_Error when the corresponding consequence of a case
        --  guard that evaluated to True fails.
  
!       if No (Stmts) then
!          Stmts := New_List;
!       end if;
! 
!       Append_To (Stmts, Conseq_Checks);
  
        In_Assertion_Expr := In_Assertion_Expr - 1;
     end Expand_Pragma_Contract_Cases;
--- 1953,1959 ----
        --  Raise Assertion_Error when the corresponding consequence of a case
        --  guard that evaluated to True fails.
  
!       Append_New_To (Stmts, Conseq_Checks);
  
        In_Assertion_Expr := In_Assertion_Expr - 1;
     end Expand_Pragma_Contract_Cases;
*************** package body Exp_Prag is
*** 1380,1390 ****
        if Relaxed_RM_Semantics
          and then List_Length (Pragma_Argument_Associations (N)) = 2
          and then Pragma_Name (N) = Name_Import
!         and then Nkind (Arg2 (N)) = N_String_Literal
        then
!          Def_Id := Entity (Arg1 (N));
        else
!          Def_Id := Entity (Arg2 (N));
        end if;
  
        --  Variable case (we have to undo any initialization already done)
--- 1972,1982 ----
        if Relaxed_RM_Semantics
          and then List_Length (Pragma_Argument_Associations (N)) = 2
          and then Pragma_Name (N) = Name_Import
!         and then Nkind (Arg_N (N, 2)) = N_String_Literal
        then
!          Def_Id := Entity (Arg_N (N, 1));
        else
!          Def_Id := Entity (Arg_N (N, 2));
        end if;
  
        --  Variable case (we have to undo any initialization already done)
*************** package body Exp_Prag is
*** 1401,1407 ****
  
           declare
              Loc          : constant Source_Ptr := Sloc (N);
!             Rtti_Name    : constant Node_Id    := Arg3 (N);
              Dum          : constant Entity_Id  := Make_Temporary (Loc, 'D');
              Exdata       : List_Id;
              Lang_Char    : Node_Id;
--- 1993,1999 ----
  
           declare
              Loc          : constant Source_Ptr := Sloc (N);
!             Rtti_Name    : constant Node_Id    := Arg_N (N, 3);
              Dum          : constant Entity_Id  := Make_Temporary (Loc, 'D');
              Exdata       : List_Id;
              Lang_Char    : Node_Id;
*************** package body Exp_Prag is
*** 1898,1929 ****
        ---------------------
  
        procedure Process_Variant (Variant : Node_Id; Is_Last : Boolean) is
-          function Make_Op
-            (Loc      : Source_Ptr;
-             Curr_Val : Node_Id;
-             Old_Val  : Node_Id) return Node_Id;
-          --  Generate a comparison between Curr_Val and Old_Val depending on
-          --  the change mode (Increases / Decreases) of the variant.
- 
-          -------------
-          -- Make_Op --
-          -------------
- 
-          function Make_Op
-            (Loc      : Source_Ptr;
-             Curr_Val : Node_Id;
-             Old_Val  : Node_Id) return Node_Id
-          is
-          begin
-             if Chars (Variant) = Name_Increases then
-                return Make_Op_Gt (Loc, Curr_Val, Old_Val);
-             else pragma Assert (Chars (Variant) = Name_Decreases);
-                return Make_Op_Lt (Loc, Curr_Val, Old_Val);
-             end if;
-          end Make_Op;
- 
-          --  Local variables
- 
           Expr     : constant Node_Id    := Expression (Variant);
           Expr_Typ : constant Entity_Id  := Etype (Expr);
           Loc      : constant Source_Ptr := Sloc (Expr);
--- 2490,2495 ----
*************** package body Exp_Prag is
*** 1932,1939 ****
           Old_Id   : Entity_Id;
           Prag     : Node_Id;
  
-       --  Start of processing for Process_Variant
- 
        begin
           --  All temporaries generated in this routine must be inserted before
           --  the related loop statement. Ensure that the proper scope is on the
--- 2498,2503 ----
*************** package body Exp_Prag is
*** 2005,2032 ****
  
           --  Step 3: Store value of the expression from the previous iteration
  
-          if No (Old_Assign) then
-             Old_Assign := New_List;
-          end if;
- 
           --  Generate:
           --    Old := Curr;
  
!          Append_To (Old_Assign,
             Make_Assignment_Statement (Loc,
               Name       => New_Occurrence_Of (Old_Id, Loc),
               Expression => New_Occurrence_Of (Curr_Id, Loc)));
  
           --  Step 4: Store the current value of the expression
  
-          if No (Curr_Assign) then
-             Curr_Assign := New_List;
-          end if;
- 
           --  Generate:
           --    Curr := <Expr>;
  
!          Append_To (Curr_Assign,
             Make_Assignment_Statement (Loc,
               Name       => New_Occurrence_Of (Curr_Id, Loc),
               Expression => Relocate_Node (Expr)));
--- 2569,2588 ----
  
           --  Step 3: Store value of the expression from the previous iteration
  
           --  Generate:
           --    Old := Curr;
  
!          Append_New_To (Old_Assign,
             Make_Assignment_Statement (Loc,
               Name       => New_Occurrence_Of (Old_Id, Loc),
               Expression => New_Occurrence_Of (Curr_Id, Loc)));
  
           --  Step 4: Store the current value of the expression
  
           --  Generate:
           --    Curr := <Expr>;
  
!          Append_New_To (Curr_Assign,
             Make_Assignment_Statement (Loc,
               Name       => New_Occurrence_Of (Curr_Id, Loc),
               Expression => Relocate_Node (Expr)));
*************** package body Exp_Prag is
*** 2044,2050 ****
                   Expression => Make_Identifier (Loc, Name_Loop_Variant)),
                 Make_Pragma_Argument_Association (Loc,
                   Expression =>
!                    Make_Op (Loc,
                       Curr_Val => New_Occurrence_Of (Curr_Id, Loc),
                       Old_Val  => New_Occurrence_Of (Old_Id, Loc)))));
  
--- 2600,2607 ----
                   Expression => Make_Identifier (Loc, Name_Loop_Variant)),
                 Make_Pragma_Argument_Association (Loc,
                   Expression =>
!                    Make_Variant_Comparison (Loc,
!                      Mode     => Chars (Variant),
                       Curr_Val => New_Occurrence_Of (Curr_Id, Loc),
                       Old_Val  => New_Occurrence_Of (Old_Id, Loc)))));
  
*************** package body Exp_Prag is
*** 2219,2236 ****
                            (Make_Function_Call
                               (Loc, New_Occurrence_Of (RTE (RE_Clock), Loc)))),
                      Right_Opnd  =>
!                       Unchecked_Convert_To (Standard_Duration, Arg1 (N)))))));
  
           Analyze (N);
        end if;
     end Expand_Pragma_Relative_Deadline;
  
     -------------------------------------------
     -- Expand_Pragma_Suppress_Initialization --
     -------------------------------------------
  
     procedure Expand_Pragma_Suppress_Initialization (N : Node_Id) is
!       Def_Id : constant Entity_Id  := Entity (Arg1 (N));
  
     begin
        --  Variable case (we have to undo any initialization already done)
--- 2776,3127 ----
                            (Make_Function_Call
                               (Loc, New_Occurrence_Of (RTE (RE_Clock), Loc)))),
                      Right_Opnd  =>
!                       Unchecked_Convert_To (
!                         Standard_Duration,
!                         Arg_N (N, 1)))))));
  
           Analyze (N);
        end if;
     end Expand_Pragma_Relative_Deadline;
  
+    --------------------------------------
+    -- Expand_Pragma_Subprogram_Variant --
+    --------------------------------------
+ 
+    --  Aspect Subprogram_Variant is expanded in the following manner:
+ 
+    --  Original code
+ 
+    --     procedure Proc (Param : T) with
+    --        with Variant (Increases => Incr_Expr,
+    --                      Decreases => Decr_Expr)
+    --        <declarations>
+    --     is
+    --        <source statements>
+    --        Proc (New_Param_Value);
+    --     end Proc;
+ 
+    --  Expanded code
+ 
+    --     procedure Proc (Param : T) is
+    --        Old_Incr : constant <type of Incr_Expr> := <Incr_Expr>;
+    --        Old_Decr : constant <type of Decr_Expr> := <Decr_Expr> ;
+    --
+    --        procedure Variants (Param : T);
+    --
+    --        procedure Variants (Param : T) is
+    --           Curr_Incr : constant <type of Incr_Expr> := <Incr_Expr>;
+    --           Curr_Decr : constant <type of Decr_Expr> := <Decr_Expr>;
+    --        begin
+    --           if Curr_Incr /= Old_Incr then
+    --              pragma Check (Variant, Curr_Incr > Old_Incr);
+    --           else
+    --              pragma Check (Variant, Curr_Decr < Old_Decr);
+    --           end if;
+    --        end Variants;
+    --
+    --        <declarations>
+    --     begin
+    --        <source statements>
+    --        Variants (New_Param_Value);
+    --        Proc (New_Param_Value);
+    --     end Proc;
+ 
+    procedure Expand_Pragma_Subprogram_Variant
+      (Prag       : Node_Id;
+       Subp_Id    : Node_Id;
+       Body_Decls : List_Id)
+    is
+       Curr_Decls : List_Id;
+       If_Stmt    : Node_Id := Empty;
+ 
+       function Formal_Param_Map
+         (Old_Subp : Entity_Id;
+          New_Subp : Entity_Id) return Elist_Id;
+       --  Given two subprogram entities Old_Subp and New_Subp with the same
+       --  number of formal parameters return a list of the form:
+       --
+       --    old formal 1
+       --    new formal 1
+       --    old formal 2
+       --    new formal 2
+       --    ...
+       --
+       --  as required by New_Copy_Tree to replace references to formal
+       --  parameters of Old_Subp with references to formal parameters of
+       --  New_Subp.
+ 
+       procedure Process_Variant
+         (Variant    : Node_Id;
+          Formal_Map : Elist_Id;
+          Prev_Decl  : in out Node_Id;
+          Is_Last    : Boolean);
+       --  Process a single increasing / decreasing termination variant given by
+       --  a component association Variant. Formal_Map is a list of formal
+       --  parameters of the annotated subprogram and of the internal procedure
+       --  that verifies the variant in the format required by New_Copy_Tree.
+       --  The Old_... object created by this routine will be appended after
+       --  Prev_Decl and is stored in this parameter for a next call to this
+       --  routine. Is_Last is True when there are no more variants to process.
+ 
+       ----------------------
+       -- Formal_Param_Map --
+       ----------------------
+ 
+       function Formal_Param_Map
+         (Old_Subp : Entity_Id;
+          New_Subp : Entity_Id) return Elist_Id
+       is
+          Old_Formal : Entity_Id := First_Formal (Old_Subp);
+          New_Formal : Entity_Id := First_Formal (New_Subp);
+ 
+          Param_Map : Elist_Id;
+       begin
+          if Present (Old_Formal) then
+             Param_Map := New_Elmt_List;
+             while Present (Old_Formal) and then Present (New_Formal) loop
+                Append_Elmt (Old_Formal,  Param_Map);
+                Append_Elmt (New_Formal, Param_Map);
+ 
+                Next_Formal (Old_Formal);
+                Next_Formal (New_Formal);
+             end loop;
+ 
+             return Param_Map;
+          else
+             return No_Elist;
+          end if;
+       end Formal_Param_Map;
+ 
+       ---------------------
+       -- Process_Variant --
+       ---------------------
+ 
+       procedure Process_Variant
+         (Variant    : Node_Id;
+          Formal_Map : Elist_Id;
+          Prev_Decl  : in out Node_Id;
+          Is_Last    : Boolean)
+       is
+          Expr     : constant Node_Id    := Expression (Variant);
+          Expr_Typ : constant Entity_Id  := Etype (Expr);
+          Loc      : constant Source_Ptr := Sloc (Expr);
+ 
+          Old_Id    : Entity_Id;
+          Old_Decl  : Node_Id;
+          Curr_Id   : Entity_Id;
+          Curr_Decl : Node_Id;
+          Prag      : Node_Id;
+ 
+       begin
+          --  Create temporaries that store the old values of the associated
+          --  expression.
+ 
+          --  Generate:
+          --    Old : constant <type of Expr> := <Expr>;
+ 
+          Old_Id := Make_Temporary (Loc, 'P');
+ 
+          Old_Decl :=
+            Make_Object_Declaration (Loc,
+              Defining_Identifier => Old_Id,
+              Constant_Present    => True,
+              Object_Definition   => New_Occurrence_Of (Expr_Typ, Loc),
+              Expression          => New_Copy_Tree (Expr));
+ 
+          Insert_After_And_Analyze (Prev_Decl, Old_Decl);
+ 
+          Prev_Decl := Old_Decl;
+ 
+          --  Generate:
+          --    Curr : constant <type of Expr> := <Expr>;
+ 
+          Curr_Id := Make_Temporary (Loc, 'C');
+ 
+          Curr_Decl :=
+            Make_Object_Declaration (Loc,
+              Defining_Identifier => Curr_Id,
+              Constant_Present    => True,
+              Object_Definition   => New_Occurrence_Of (Expr_Typ, Loc),
+              Expression          =>
+                New_Copy_Tree (Expr, Map => Formal_Map));
+ 
+          Append (Curr_Decl, Curr_Decls);
+ 
+          --  Generate:
+          --    pragma Check (Variant, Curr <|> Old);
+ 
+          Prag :=
+            Make_Pragma (Loc,
+              Chars                        => Name_Check,
+              Pragma_Argument_Associations => New_List (
+                Make_Pragma_Argument_Association (Loc,
+                  Expression =>
+                    Make_Identifier (Loc,
+                      Name_Subprogram_Variant)),
+                Make_Pragma_Argument_Association (Loc,
+                  Expression =>
+                    Make_Variant_Comparison (Loc,
+                      Mode     => Chars (First (Choices (Variant))),
+                      Curr_Val => New_Occurrence_Of (Curr_Id, Loc),
+                      Old_Val  => New_Occurrence_Of (Old_Id, Loc)))));
+ 
+          --  Generate:
+          --    if Curr /= Old then
+          --       <Prag>;
+ 
+          if No (If_Stmt) then
+ 
+             --  When there is just one termination variant, do not compare
+             --  the old and current value for equality, just check the
+             --  pragma.
+ 
+             if Is_Last then
+                If_Stmt := Prag;
+             else
+                If_Stmt :=
+                  Make_If_Statement (Loc,
+                    Condition       =>
+                      Make_Op_Ne (Loc,
+                        Left_Opnd  => New_Occurrence_Of (Curr_Id, Loc),
+                        Right_Opnd => New_Occurrence_Of (Old_Id, Loc)),
+                    Then_Statements => New_List (Prag));
+             end if;
+ 
+             --  Generate:
+             --    else
+             --       <Prag>;
+             --    end if;
+ 
+          elsif Is_Last then
+             Set_Else_Statements (If_Stmt, New_List (Prag));
+ 
+             --  Generate:
+             --    elsif Curr /= Old then
+             --       <Prag>;
+ 
+          else
+             if Elsif_Parts (If_Stmt) = No_List then
+                Set_Elsif_Parts (If_Stmt, New_List);
+             end if;
+ 
+             Append_To (Elsif_Parts (If_Stmt),
+               Make_Elsif_Part (Loc,
+               Condition       =>
+               Make_Op_Ne (Loc,
+                 Left_Opnd  => New_Occurrence_Of (Curr_Id, Loc),
+                 Right_Opnd => New_Occurrence_Of (Old_Id, Loc)),
+               Then_Statements => New_List (Prag)));
+          end if;
+       end Process_Variant;
+ 
+       --  Local variables
+ 
+       Loc : constant Source_Ptr := Sloc (Prag);
+ 
+       Aggr         : Node_Id;
+       Formal_Map   : Elist_Id;
+       Last         : Node_Id;
+       Last_Variant : Node_Id;
+       Proc_Bod     : Node_Id;
+       Proc_Decl    : Node_Id;
+       Proc_Id      : Entity_Id;
+       Proc_Spec    : Node_Id;
+       Variant      : Node_Id;
+ 
+    begin
+       --  Do nothing if pragma is not present or is disabled
+ 
+       if Is_Ignored (Prag) then
+          return;
+       end if;
+ 
+       Aggr := Expression (First (Pragma_Argument_Associations (Prag)));
+ 
+       --  The expansion of Subprogram Variant is quite distributed as it
+       --  produces various statements to capture and compare the arguments.
+       --  To preserve the original context, set the Is_Assertion_Expr flag.
+       --  This aids the Ghost legality checks when verifying the placement
+       --  of a reference to a Ghost entity.
+ 
+       In_Assertion_Expr := In_Assertion_Expr + 1;
+ 
+       --  Create declaration of the procedure that compares values of the
+       --  variant expressions captured at the start of subprogram with their
+       --  values at the recursive call of the subprogram.
+ 
+       Proc_Id := Make_Defining_Identifier (Loc, Name_uVariants);
+ 
+       Proc_Spec :=
+         Make_Procedure_Specification
+           (Loc,
+            Defining_Unit_Name       => Proc_Id,
+            Parameter_Specifications => Copy_Parameter_List (Subp_Id));
+ 
+       Proc_Decl :=
+         Make_Subprogram_Declaration (Loc, Proc_Spec);
+ 
+       Insert_Before_First_Source_Declaration (Proc_Decl, Body_Decls);
+       Analyze (Proc_Decl);
+ 
+       --  Create a mapping between formals of the annotated subprogram (which
+       --  are used to compute values of the variant expression at the start of
+       --  subprogram) and formals of the internal procedure (which are used to
+       --  compute values of of the variant expression at the recursive call).
+ 
+       Formal_Map :=
+         Formal_Param_Map (Old_Subp => Subp_Id, New_Subp => Proc_Id);
+ 
+       --  Process invidual increasing / decreasing variants
+ 
+       Last         := Proc_Decl;
+       Curr_Decls   := New_List;
+       Last_Variant := Nlists.Last (Component_Associations (Aggr));
+ 
+       Variant := First (Component_Associations (Aggr));
+       while Present (Variant) loop
+          Process_Variant
+            (Variant    => Variant,
+             Formal_Map => Formal_Map,
+             Prev_Decl  => Last,
+             Is_Last    => Variant = Last_Variant);
+          Next (Variant);
+       end loop;
+ 
+       --  Create a subprogram body with declarations of objects that capture
+       --  the current values of variant expressions at a recursive call and an
+       --  if-then-else statement that compares current with old values.
+ 
+       Proc_Bod :=
+         Make_Subprogram_Body (Loc,
+           Specification              =>
+             Copy_Subprogram_Spec (Proc_Spec),
+           Declarations               => Curr_Decls,
+           Handled_Statement_Sequence =>
+             Make_Handled_Sequence_Of_Statements (Loc,
+               Statements => New_List (If_Stmt),
+               End_Label  => Make_Identifier (Loc, Chars (Proc_Id))));
+ 
+       Insert_After_And_Analyze (Last, Proc_Bod);
+ 
+       --  Restore assertion context
+ 
+       In_Assertion_Expr := In_Assertion_Expr - 1;
+ 
+       --  Rewrite the aspect expression, which is no longer needed, with
+       --  a reference to the procedure that has just been created. We will
+       --  generate a call to this procedure at each recursive call of the
+       --  subprogram that has been annotated with Subprogram_Variant.
+ 
+       Rewrite (Aggr, New_Occurrence_Of (Proc_Id, Loc));
+    end Expand_Pragma_Subprogram_Variant;
+ 
     -------------------------------------------
     -- Expand_Pragma_Suppress_Initialization --
     -------------------------------------------
  
     procedure Expand_Pragma_Suppress_Initialization (N : Node_Id) is
!       Def_Id : constant Entity_Id  := Entity (Arg_N (N, 1));
  
     begin
        --  Variable case (we have to undo any initialization already done)
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_prag.ads gcc-11.1.0/gcc/ada/exp_prag.ads
*** gcc-10.3.0/gcc/ada/exp_prag.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_prag.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Prag is
*** 49,52 ****
--- 49,63 ----
     --  applies to package Pack_Id. N denotes the related package spec or
     --  body.
  
+    procedure Expand_Pragma_Subprogram_Variant
+      (Prag       : Node_Id;
+       Subp_Id    : Entity_Id;
+       Body_Decls : List_Id);
+    --  Given pragma Subprogram_Variant Prag, create the circuitry needed
+    --  to evaluate variant expressions at the subprogram entry and at the
+    --  recursive call. Subp_Id is the related subprogram for which the pragma
+    --  applies and Body_Decls are its body declarations. On exit, the argument
+    --  of Prag is replaced with a reference to procedure with checks for the
+    --  variant expressions.
+ 
  end Exp_Prag;
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_put_image.adb gcc-11.1.0/gcc/ada/exp_put_image.adb
*** gcc-10.3.0/gcc/ada/exp_put_image.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/exp_put_image.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,1045 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                        E X P _ P U T _ I M A G E                         --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --             Copyright (C) 2020, Free Software Foundation, Inc.           --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+ -- for  more details.  You should have  received  a copy of the GNU General --
+ -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+ -- http://www.gnu.org/licenses for a complete copy of the license.          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Atree;    use Atree;
+ with Einfo;    use Einfo;
+ with Exp_Tss;  use Exp_Tss;
+ with Exp_Util;
+ with Debug;    use Debug;
+ with Lib;      use Lib;
+ with Namet;    use Namet;
+ with Nlists;   use Nlists;
+ with Nmake;    use Nmake;
+ with Opt;      use Opt;
+ with Rtsfind;  use Rtsfind;
+ with Sem_Aux;  use Sem_Aux;
+ with Sem_Util; use Sem_Util;
+ with Sinfo;    use Sinfo;
+ with Snames;   use Snames;
+ with Stand;
+ with Tbuild;   use Tbuild;
+ with Ttypes;   use Ttypes;
+ with Uintp;    use Uintp;
+ 
+ package body Exp_Put_Image is
+ 
+    Tagged_Put_Image_Enabled : Boolean renames Debug_Flag_Underscore_Z;
+    --  ???Set True to enable Put_Image for at least some tagged types
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Build_Put_Image_Proc
+      (Loc  : Source_Ptr;
+       Typ  : Entity_Id;
+       Decl : out Node_Id;
+       Pnam : Entity_Id;
+       Stms : List_Id);
+    --  Build an array or record Put_Image procedure. Stms is the list of
+    --  statements for the body and Pnam is the name of the constructed
+    --  procedure. (The declaration list is always null.)
+ 
+    function Make_Put_Image_Name
+      (Loc : Source_Ptr; Typ : Entity_Id) return Entity_Id;
+    --  Return the entity that identifies the Put_Image subprogram for Typ. This
+    --  procedure deals with the difference between tagged types (where a single
+    --  subprogram associated with the type is generated) and all other cases
+    --  (where a subprogram is generated at the point of the attribute
+    --  reference). The Loc parameter is used as the Sloc of the created entity.
+ 
+    function Put_Image_Base_Type (E : Entity_Id) return Entity_Id;
+    --  Returns the base type, except for an array type whose whose first
+    --  subtype is constrained, in which case it returns the first subtype.
+ 
+    -------------------------------------
+    -- Build_Array_Put_Image_Procedure --
+    -------------------------------------
+ 
+    procedure Build_Array_Put_Image_Procedure
+      (Nod  : Node_Id;
+       Typ  : Entity_Id;
+       Decl : out Node_Id;
+       Pnam : out Entity_Id)
+    is
+       Loc  : constant Source_Ptr := Sloc (Nod);
+ 
+       function Wrap_In_Loop
+         (Stms : List_Id;
+          Dim : Pos;
+          Index_Subtype : Entity_Id;
+          Between_Proc : RE_Id) return Node_Id;
+       --  Wrap Stms in a loop and if statement of the form:
+       --
+       --     if V'First (Dim) <= V'Last (Dim) then -- nonempty range?
+       --        declare
+       --           LDim : Index_Type_For_Dim := V'First (Dim);
+       --        begin
+       --           loop
+       --              Stms;
+       --              exit when LDim = V'Last (Dim);
+       --              Between_Proc (S);
+       --              LDim := Index_Type_For_Dim'Succ (LDim);
+       --           end loop;
+       --        end;
+       --     end if;
+       --
+       --  This is called once per dimension, from inner to outer.
+ 
+       function Wrap_In_Loop
+         (Stms : List_Id;
+          Dim : Pos;
+          Index_Subtype : Entity_Id;
+          Between_Proc : RE_Id) return Node_Id
+       is
+          Index : constant Entity_Id :=
+            Make_Defining_Identifier
+              (Loc, Chars => New_External_Name ('L', Dim));
+          Decl : constant Node_Id :=
+            Make_Object_Declaration (Loc,
+              Defining_Identifier => Index,
+              Object_Definition =>
+                New_Occurrence_Of (Index_Subtype, Loc),
+              Expression =>
+                Make_Attribute_Reference (Loc,
+                  Prefix         => Make_Identifier (Loc, Name_V),
+                  Attribute_Name => Name_First,
+                  Expressions => New_List (
+                    Make_Integer_Literal (Loc, Dim))));
+          Loop_Stm : constant Node_Id :=
+            Make_Implicit_Loop_Statement (Nod, Statements => Stms);
+          Exit_Stm : constant Node_Id :=
+            Make_Exit_Statement (Loc,
+              Condition =>
+                Make_Op_Eq (Loc,
+                  Left_Opnd => New_Occurrence_Of (Index, Loc),
+                  Right_Opnd =>
+                    Make_Attribute_Reference (Loc,
+                      Prefix         =>
+                        Make_Identifier (Loc, Name_V),
+                      Attribute_Name => Name_Last,
+                      Expressions => New_List (
+                        Make_Integer_Literal (Loc, Dim)))));
+          Increment : constant Node_Id :=
+            Make_Increment (Loc, Index, Index_Subtype);
+          Between : constant Node_Id :=
+            Make_Procedure_Call_Statement (Loc,
+              Name =>
+                New_Occurrence_Of (RTE (Between_Proc), Loc),
+              Parameter_Associations => New_List
+                (Make_Identifier (Loc, Name_S)));
+          Block : constant Node_Id :=
+            Make_Block_Statement (Loc,
+              Declarations               => New_List (Decl),
+              Handled_Statement_Sequence =>
+                Make_Handled_Sequence_Of_Statements (Loc,
+                  Statements => New_List (Loop_Stm)));
+       begin
+          Append_To (Stms, Exit_Stm);
+          Append_To (Stms, Between);
+          Append_To (Stms, Increment);
+          --  Note that we're appending to the Stms list passed in
+ 
+          return
+            Make_If_Statement (Loc,
+              Condition =>
+                Make_Op_Le (Loc,
+                  Left_Opnd  =>
+                    Make_Attribute_Reference (Loc,
+                      Prefix => Make_Identifier (Loc, Name_V),
+                      Attribute_Name => Name_First,
+                      Expressions => New_List (
+                        Make_Integer_Literal (Loc, Dim))),
+                  Right_Opnd =>
+                    Make_Attribute_Reference (Loc,
+                      Prefix => Make_Identifier (Loc, Name_V),
+                      Attribute_Name => Name_Last,
+                      Expressions => New_List (
+                        Make_Integer_Literal (Loc, Dim)))),
+              Then_Statements => New_List (Block));
+       end Wrap_In_Loop;
+ 
+       Ndim : constant Pos        := Number_Dimensions (Typ);
+       Ctyp : constant Entity_Id  := Component_Type (Typ);
+ 
+       Stm         : Node_Id;
+       Exl         : constant List_Id := New_List;
+       PI_Entity   : Entity_Id;
+ 
+       Indices : array (1 .. Ndim) of Entity_Id;
+ 
+    --  Start of processing for Build_Array_Put_Image_Procedure
+ 
+    begin
+       Pnam :=
+         Make_Defining_Identifier (Loc,
+           Chars => Make_TSS_Name_Local (Typ, TSS_Put_Image));
+ 
+       --  Get the Indices
+ 
+       declare
+          Index_Subtype : Node_Id := First_Index (Typ);
+       begin
+          for Dim in 1 .. Ndim loop
+             Indices (Dim) := Etype (Index_Subtype);
+             Next_Index (Index_Subtype);
+          end loop;
+          pragma Assert (No (Index_Subtype));
+       end;
+ 
+       --  Build the inner attribute call
+ 
+       for Dim in 1 .. Ndim loop
+          Append_To (Exl, Make_Identifier (Loc, New_External_Name ('L', Dim)));
+       end loop;
+ 
+       Stm :=
+         Make_Attribute_Reference (Loc,
+           Prefix => New_Occurrence_Of (Put_Image_Base_Type (Ctyp), Loc),
+           Attribute_Name => Name_Put_Image,
+           Expressions => New_List (
+             Make_Identifier (Loc, Name_S),
+             Make_Indexed_Component (Loc,
+               Prefix      => Make_Identifier (Loc, Name_V),
+               Expressions => Exl)));
+ 
+       --  The corresponding attribute for the component type of the array might
+       --  be user-defined, and frozen after the array type. In that case,
+       --  freeze the Put_Image attribute of the component type, whose
+       --  declaration could not generate any additional freezing actions in any
+       --  case.
+ 
+       PI_Entity := TSS (Base_Type (Ctyp), TSS_Put_Image);
+ 
+       if Present (PI_Entity) and then not Is_Frozen (PI_Entity) then
+          Set_Is_Frozen (PI_Entity);
+       end if;
+ 
+       --  Loop through the dimensions, innermost first, generating a loop for
+       --  each dimension.
+ 
+       declare
+          Stms : List_Id := New_List (Stm);
+       begin
+          for Dim in reverse 1 .. Ndim loop
+             declare
+                New_Stms : constant List_Id := New_List;
+                Between_Proc : RE_Id;
+             begin
+                --  For a one-dimensional array of elementary type, use
+                --  RE_Simple_Array_Between. The same applies to the last
+                --  dimension of a multidimensional array.
+ 
+                if Is_Elementary_Type (Ctyp) and then Dim = Ndim then
+                   Between_Proc := RE_Simple_Array_Between;
+                else
+                   Between_Proc := RE_Array_Between;
+                end if;
+ 
+                Append_To (New_Stms,
+                  Make_Procedure_Call_Statement (Loc,
+                    Name => New_Occurrence_Of (RTE (RE_Array_Before), Loc),
+                    Parameter_Associations => New_List
+                      (Make_Identifier (Loc, Name_S))));
+ 
+                Append_To
+                  (New_Stms,
+                   Wrap_In_Loop (Stms, Dim, Indices (Dim), Between_Proc));
+ 
+                Append_To (New_Stms,
+                  Make_Procedure_Call_Statement (Loc,
+                    Name => New_Occurrence_Of (RTE (RE_Array_After), Loc),
+                    Parameter_Associations => New_List
+                      (Make_Identifier (Loc, Name_S))));
+ 
+                Stms := New_Stms;
+             end;
+          end loop;
+ 
+          Build_Put_Image_Proc (Loc, Typ, Decl, Pnam, Stms);
+       end;
+    end Build_Array_Put_Image_Procedure;
+ 
+    -------------------------------------
+    -- Build_Elementary_Put_Image_Call --
+    -------------------------------------
+ 
+    function Build_Elementary_Put_Image_Call (N : Node_Id) return Node_Id is
+       Loc     : constant Source_Ptr := Sloc (N);
+       P_Type  : constant Entity_Id  := Entity (Prefix (N));
+       U_Type  : constant Entity_Id  := Underlying_Type (P_Type);
+       FST     : constant Entity_Id  := First_Subtype (U_Type);
+       Sink    : constant Node_Id    := First (Expressions (N));
+       Item    : constant Node_Id    := Next (Sink);
+       P_Size  : constant Uint       := Esize (FST);
+       Lib_RE  : RE_Id;
+ 
+    begin
+       if Is_Signed_Integer_Type (U_Type) then
+          if P_Size <= Standard_Integer_Size then
+             Lib_RE := RE_Put_Image_Integer;
+          elsif P_Size <= Standard_Long_Long_Integer_Size then
+             Lib_RE := RE_Put_Image_Long_Long_Integer;
+          else
+             pragma Assert (P_Size <= Standard_Long_Long_Long_Integer_Size);
+             Lib_RE := RE_Put_Image_Long_Long_Long_Integer;
+          end if;
+ 
+       elsif Is_Modular_Integer_Type (U_Type) then
+          if P_Size <= Standard_Integer_Size then -- Yes, Integer
+             Lib_RE := RE_Put_Image_Unsigned;
+          elsif P_Size <= Standard_Long_Long_Integer_Size then
+             Lib_RE := RE_Put_Image_Long_Long_Unsigned;
+          else
+             pragma Assert (P_Size <= Standard_Long_Long_Long_Integer_Size);
+             Lib_RE := RE_Put_Image_Long_Long_Long_Unsigned;
+          end if;
+ 
+       elsif Is_Access_Type (U_Type) then
+          if Is_Access_Protected_Subprogram_Type (Base_Type (U_Type)) then
+             Lib_RE := RE_Put_Image_Access_Prot_Subp;
+          elsif Is_Access_Subprogram_Type (Base_Type (U_Type)) then
+             Lib_RE := RE_Put_Image_Access_Subp;
+          elsif P_Size = System_Address_Size then
+             Lib_RE := RE_Put_Image_Thin_Pointer;
+          else
+             pragma Assert (P_Size = 2 * System_Address_Size);
+             Lib_RE := RE_Put_Image_Fat_Pointer;
+          end if;
+ 
+       else
+          pragma Assert
+            (Is_Enumeration_Type (U_Type) or else Is_Real_Type (U_Type));
+ 
+          --  For other elementary types, generate:
+          --
+          --     Put_Wide_Wide_String (Sink, U_Type'Wide_Wide_Image (Item));
+          --
+          --  It would be more elegant to do it the other way around (define
+          --  '[[Wide_]Wide_]Image in terms of 'Put_Image). But this is easier
+          --  to implement, because we already have support for
+          --  'Wide_Wide_Image. Furthermore, we don't want to remove the
+          --  existing support for '[[Wide_]Wide_]Image, because we don't
+          --  currently plan to support 'Put_Image on restricted runtimes.
+ 
+          --  We can't do this:
+          --
+          --     Put_UTF_8 (Sink, U_Type'Image (Item));
+          --
+          --  because we need to generate UTF-8, but 'Image for enumeration
+          --  types uses the character encoding of the source file.
+          --
+          --  Note that this is putting a leading space for reals.
+ 
+          declare
+             Image : constant Node_Id :=
+               Make_Attribute_Reference (Loc,
+                 Prefix => New_Occurrence_Of (U_Type, Loc),
+                 Attribute_Name => Name_Wide_Wide_Image,
+                 Expressions => New_List (Relocate_Node (Item)));
+             Put_Call : constant Node_Id :=
+               Make_Procedure_Call_Statement (Loc,
+                 Name =>
+                   New_Occurrence_Of (RTE (RE_Put_Wide_Wide_String), Loc),
+                 Parameter_Associations => New_List
+                   (Relocate_Node (Sink), Image));
+          begin
+             return Put_Call;
+          end;
+       end if;
+ 
+       --  Unchecked-convert parameter to the required type (i.e. the type of
+       --  the corresponding parameter), and call the appropriate routine.
+       --  We could use a normal type conversion for scalars, but the
+       --  "unchecked" is needed for access and private types.
+ 
+       declare
+          Libent : constant Entity_Id := RTE (Lib_RE);
+       begin
+          return
+            Make_Procedure_Call_Statement (Loc,
+              Name => New_Occurrence_Of (Libent, Loc),
+              Parameter_Associations => New_List (
+                Relocate_Node (Sink),
+                Unchecked_Convert_To
+                 (Etype (Next_Formal (First_Formal (Libent))),
+                  Relocate_Node (Item))));
+       end;
+    end Build_Elementary_Put_Image_Call;
+ 
+    -------------------------------------
+    -- Build_String_Put_Image_Call --
+    -------------------------------------
+ 
+    function Build_String_Put_Image_Call (N : Node_Id) return Node_Id is
+       Loc     : constant Source_Ptr := Sloc (N);
+       P_Type  : constant Entity_Id  := Entity (Prefix (N));
+       U_Type  : constant Entity_Id  := Underlying_Type (P_Type);
+       R       : constant Entity_Id  := Root_Type (U_Type);
+       Sink    : constant Node_Id    := First (Expressions (N));
+       Item    : constant Node_Id    := Next (Sink);
+       Lib_RE  : RE_Id;
+       use Stand;
+    begin
+       if R = Standard_String then
+          Lib_RE := RE_Put_Image_String;
+       elsif R = Standard_Wide_String then
+          Lib_RE := RE_Put_Image_Wide_String;
+       elsif R = Standard_Wide_Wide_String then
+          Lib_RE := RE_Put_Image_Wide_Wide_String;
+       else
+          raise Program_Error;
+       end if;
+ 
+       --  Convert parameter to the required type (i.e. the type of the
+       --  corresponding parameter), and call the appropriate routine.
+       --  We set the Conversion_OK flag in case the type is private.
+ 
+       declare
+          Libent : constant Entity_Id := RTE (Lib_RE);
+          Conv   : constant Node_Id :=
+            OK_Convert_To
+             (Etype (Next_Formal (First_Formal (Libent))),
+              Relocate_Node (Item));
+       begin
+          return
+            Make_Procedure_Call_Statement (Loc,
+              Name => New_Occurrence_Of (Libent, Loc),
+              Parameter_Associations => New_List (
+                Relocate_Node (Sink),
+                Conv));
+       end;
+    end Build_String_Put_Image_Call;
+ 
+    ------------------------------------
+    -- Build_Protected_Put_Image_Call --
+    ------------------------------------
+ 
+    --  For "Protected_Type'Put_Image (S, Protected_Object)", build:
+    --
+    --    Put_Image_Protected (S);
+    --
+    --  The protected object is not passed.
+ 
+    function Build_Protected_Put_Image_Call (N : Node_Id) return Node_Id is
+       Loc    : constant Source_Ptr := Sloc (N);
+       Sink   : constant Node_Id    := First (Expressions (N));
+       Lib_RE : constant RE_Id      := RE_Put_Image_Protected;
+       Libent : constant Entity_Id  := RTE (Lib_RE);
+    begin
+       return
+         Make_Procedure_Call_Statement (Loc,
+           Name => New_Occurrence_Of (Libent, Loc),
+           Parameter_Associations => New_List (
+             Relocate_Node (Sink)));
+    end Build_Protected_Put_Image_Call;
+ 
+    ------------------------------------
+    -- Build_Task_Put_Image_Call --
+    ------------------------------------
+ 
+    --  For "Task_Type'Put_Image (S, Task_Object)", build:
+    --
+    --    Put_Image_Task (S, Task_Object'Identity);
+    --
+    --  The task object is not passed; its Task_Id is.
+ 
+    function Build_Task_Put_Image_Call (N : Node_Id) return Node_Id is
+       Loc    : constant Source_Ptr := Sloc (N);
+       Sink   : constant Node_Id    := First (Expressions (N));
+       Item   : constant Node_Id    := Next (Sink);
+       Lib_RE : constant RE_Id      := RE_Put_Image_Task;
+       Libent : constant Entity_Id  := RTE (Lib_RE);
+ 
+       Task_Id : constant Node_Id :=
+         Make_Attribute_Reference (Loc,
+           Prefix => Relocate_Node (Item),
+           Attribute_Name => Name_Identity,
+           Expressions => No_List);
+ 
+    begin
+       return
+         Make_Procedure_Call_Statement (Loc,
+           Name => New_Occurrence_Of (Libent, Loc),
+           Parameter_Associations => New_List (
+             Relocate_Node (Sink),
+             Task_Id));
+    end Build_Task_Put_Image_Call;
+ 
+    --------------------------------------
+    -- Build_Record_Put_Image_Procedure --
+    --------------------------------------
+ 
+    --  The form of the record Put_Image procedure is as shown by the
+    --  following example:
+ 
+    --    procedure Put_Image (S : in out Sink'Class; V : Typ) is
+    --    begin
+    --       Component_Type'Put_Image (S, V.component);
+    --       Component_Type'Put_Image (S, V.component);
+    --       ...
+    --       Component_Type'Put_Image (S, V.component);
+    --
+    --       case V.discriminant is
+    --          when choices =>
+    --             Component_Type'Put_Image (S, V.component);
+    --             Component_Type'Put_Image (S, V.component);
+    --             ...
+    --             Component_Type'Put_Image (S, V.component);
+    --
+    --          when choices =>
+    --             Component_Type'Put_Image (S, V.component);
+    --             Component_Type'Put_Image (S, V.component);
+    --             ...
+    --             Component_Type'Put_Image (S, V.component);
+    --          ...
+    --       end case;
+    --    end Put_Image;
+ 
+    procedure Build_Record_Put_Image_Procedure
+      (Loc  : Source_Ptr;
+       Typ  : Entity_Id;
+       Decl : out Node_Id;
+       Pnam : out Entity_Id)
+    is
+       Btyp : constant Entity_Id := Base_Type (Typ);
+       pragma Assert (not Is_Unchecked_Union (Btyp));
+ 
+       First_Time : Boolean := True;
+ 
+       function Make_Component_List_Attributes (CL : Node_Id) return List_Id;
+       --  Returns a sequence of Component_Type'Put_Image attribute_references
+       --  to process the components that are referenced in the given component
+       --  list. Called for the main component list, and then recursively for
+       --  variants.
+ 
+       function Make_Component_Attributes (Clist : List_Id) return List_Id;
+       --  Given Clist, a component items list, construct series of
+       --  Component_Type'Put_Image attribute_references for componentwise
+       --  processing of the corresponding components. Called for the
+       --  discriminants, and then from Make_Component_List_Attributes for each
+       --  list (including in variants).
+ 
+       procedure Append_Component_Attr (Clist : List_Id; C : Entity_Id);
+       --  Given C, the entity for a discriminant or component, build a call to
+       --  Component_Type'Put_Image for the corresponding component value, and
+       --  append it onto Clist. Called from Make_Component_Attributes.
+ 
+       function Make_Component_Name (C : Entity_Id) return Node_Id;
+       --  Create a call that prints "Comp_Name => "
+ 
+       ------------------------------------
+       -- Make_Component_List_Attributes --
+       ------------------------------------
+ 
+       function Make_Component_List_Attributes (CL : Node_Id) return List_Id is
+          CI : constant List_Id := Component_Items (CL);
+          VP : constant Node_Id := Variant_Part (CL);
+ 
+          Result : List_Id;
+          Alts   : List_Id;
+          V      : Node_Id;
+          DC     : Node_Id;
+          DCH    : List_Id;
+          D_Ref  : Node_Id;
+ 
+       begin
+          Result := Make_Component_Attributes (CI);
+ 
+          if Present (VP) then
+             Alts := New_List;
+ 
+             V := First_Non_Pragma (Variants (VP));
+             while Present (V) loop
+                DCH := New_List;
+ 
+                DC := First (Discrete_Choices (V));
+                while Present (DC) loop
+                   Append_To (DCH, New_Copy_Tree (DC));
+                   Next (DC);
+                end loop;
+ 
+                Append_To (Alts,
+                  Make_Case_Statement_Alternative (Loc,
+                    Discrete_Choices => DCH,
+                    Statements =>
+                      Make_Component_List_Attributes (Component_List (V))));
+                Next_Non_Pragma (V);
+             end loop;
+ 
+             --  Note: in the following, we use New_Occurrence_Of for the
+             --  selector, since there are cases in which we make a reference
+             --  to a hidden discriminant that is not visible.
+ 
+             D_Ref :=
+                Make_Selected_Component (Loc,
+                  Prefix        => Make_Identifier (Loc, Name_V),
+                  Selector_Name =>
+                    New_Occurrence_Of (Entity (Name (VP)), Loc));
+ 
+             Append_To (Result,
+               Make_Case_Statement (Loc,
+                 Expression   => D_Ref,
+                 Alternatives => Alts));
+          end if;
+ 
+          return Result;
+       end Make_Component_List_Attributes;
+ 
+       --------------------------------
+       -- Append_Component_Attr --
+       --------------------------------
+ 
+       procedure Append_Component_Attr (Clist : List_Id; C : Entity_Id) is
+          Component_Typ : constant Entity_Id := Put_Image_Base_Type (Etype (C));
+       begin
+          if Ekind (C) /= E_Void then
+             Append_To (Clist,
+               Make_Attribute_Reference (Loc,
+                 Prefix         => New_Occurrence_Of (Component_Typ, Loc),
+                 Attribute_Name => Name_Put_Image,
+                 Expressions    => New_List (
+                   Make_Identifier (Loc, Name_S),
+                   Make_Selected_Component (Loc,
+                     Prefix        => Make_Identifier (Loc, Name_V),
+                     Selector_Name => New_Occurrence_Of (C, Loc)))));
+          end if;
+       end Append_Component_Attr;
+ 
+       -------------------------------
+       -- Make_Component_Attributes --
+       -------------------------------
+ 
+       function Make_Component_Attributes (Clist : List_Id) return List_Id is
+          Item   : Node_Id;
+          Result : List_Id;
+ 
+       begin
+          Result := New_List;
+ 
+          if Present (Clist) then
+             Item := First (Clist);
+ 
+             --  Loop through components, skipping all internal components,
+             --  which are not part of the value (e.g. _Tag), except that we
+             --  don't skip the _Parent, since we do want to process that
+             --  recursively. If _Parent is an interface type, being abstract
+             --  with no components there is no need to handle it.
+ 
+             while Present (Item) loop
+                if Nkind (Item) in
+                     N_Component_Declaration | N_Discriminant_Specification
+                  and then
+                    ((Chars (Defining_Identifier (Item)) = Name_uParent
+                        and then not Is_Interface
+                                       (Etype (Defining_Identifier (Item))))
+                      or else
+                     not Is_Internal_Name (Chars (Defining_Identifier (Item))))
+                then
+                   if First_Time then
+                      First_Time := False;
+                   else
+                      Append_To (Result,
+                        Make_Procedure_Call_Statement (Loc,
+                          Name =>
+                            New_Occurrence_Of (RTE (RE_Record_Between), Loc),
+                          Parameter_Associations => New_List
+                            (Make_Identifier (Loc, Name_S))));
+                   end if;
+ 
+                   Append_To (Result, Make_Component_Name (Item));
+                   Append_Component_Attr (Result, Defining_Identifier (Item));
+                end if;
+ 
+                Next (Item);
+             end loop;
+          end if;
+ 
+          return Result;
+       end Make_Component_Attributes;
+ 
+       -------------------------
+       -- Make_Component_Name --
+       -------------------------
+ 
+       function Make_Component_Name (C : Entity_Id) return Node_Id is
+          Name : constant Name_Id := Chars (Defining_Identifier (C));
+       begin
+          return
+            Make_Procedure_Call_Statement (Loc,
+              Name => New_Occurrence_Of (RTE (RE_Put_UTF_8), Loc),
+              Parameter_Associations => New_List
+                (Make_Identifier (Loc, Name_S),
+                 Make_String_Literal (Loc, Get_Name_String (Name) & " => ")));
+       end Make_Component_Name;
+ 
+       Stms : constant List_Id := New_List;
+       Rdef : Node_Id;
+       Type_Decl : constant Node_Id :=
+         Declaration_Node (Base_Type (Underlying_Type (Btyp)));
+ 
+    --  Start of processing for Build_Record_Put_Image_Procedure
+ 
+    begin
+       Append_To (Stms,
+         Make_Procedure_Call_Statement (Loc,
+           Name => New_Occurrence_Of (RTE (RE_Record_Before), Loc),
+           Parameter_Associations => New_List
+             (Make_Identifier (Loc, Name_S))));
+ 
+       --  Generate Put_Images for the discriminants of the type
+ 
+       Append_List_To (Stms,
+         Make_Component_Attributes (Discriminant_Specifications (Type_Decl)));
+ 
+       Rdef := Type_Definition (Type_Decl);
+ 
+       --  In the record extension case, the components we want, including the
+       --  _Parent component representing the parent type, are to be found in
+       --  the extension. We will process the _Parent component using the type
+       --  of the parent.
+ 
+       if Nkind (Rdef) = N_Derived_Type_Definition then
+          Rdef := Record_Extension_Part (Rdef);
+       end if;
+ 
+       if Present (Component_List (Rdef)) then
+          Append_List_To (Stms,
+            Make_Component_List_Attributes (Component_List (Rdef)));
+       end if;
+ 
+       Append_To (Stms,
+         Make_Procedure_Call_Statement (Loc,
+           Name => New_Occurrence_Of (RTE (RE_Record_After), Loc),
+           Parameter_Associations => New_List
+             (Make_Identifier (Loc, Name_S))));
+ 
+       Pnam := Make_Put_Image_Name (Loc, Btyp);
+       Build_Put_Image_Proc (Loc, Btyp, Decl, Pnam, Stms);
+    end Build_Record_Put_Image_Procedure;
+ 
+    -------------------------------
+    -- Build_Put_Image_Profile --
+    -------------------------------
+ 
+    function Build_Put_Image_Profile
+      (Loc : Source_Ptr; Typ : Entity_Id) return List_Id
+    is
+    begin
+       return New_List (
+         Make_Parameter_Specification (Loc,
+           Defining_Identifier => Make_Defining_Identifier (Loc, Name_S),
+           In_Present          => True,
+           Out_Present         => True,
+           Parameter_Type      =>
+             New_Occurrence_Of (Class_Wide_Type (RTE (RE_Sink)), Loc)),
+ 
+         Make_Parameter_Specification (Loc,
+           Defining_Identifier => Make_Defining_Identifier (Loc, Name_V),
+           Parameter_Type      => New_Occurrence_Of (Typ, Loc)));
+    end Build_Put_Image_Profile;
+ 
+    --------------------------
+    -- Build_Put_Image_Proc --
+    --------------------------
+ 
+    procedure Build_Put_Image_Proc
+      (Loc  : Source_Ptr;
+       Typ  : Entity_Id;
+       Decl : out Node_Id;
+       Pnam : Entity_Id;
+       Stms : List_Id)
+    is
+       Spec : constant Node_Id :=
+         Make_Procedure_Specification (Loc,
+           Defining_Unit_Name => Pnam,
+           Parameter_Specifications => Build_Put_Image_Profile (Loc, Typ));
+    begin
+       Decl :=
+         Make_Subprogram_Body (Loc,
+           Specification              => Spec,
+           Declarations               => Empty_List,
+           Handled_Statement_Sequence =>
+             Make_Handled_Sequence_Of_Statements (Loc,
+               Statements => Stms));
+    end Build_Put_Image_Proc;
+ 
+    ------------------------------------
+    -- Build_Unknown_Put_Image_Call --
+    ------------------------------------
+ 
+    function Build_Unknown_Put_Image_Call (N : Node_Id) return Node_Id is
+       Loc    : constant Source_Ptr := Sloc (N);
+       Sink   : constant Node_Id    := First (Expressions (N));
+       Lib_RE : constant RE_Id      := RE_Put_Image_Unknown;
+       Libent : constant Entity_Id  := RTE (Lib_RE);
+    begin
+       return
+         Make_Procedure_Call_Statement (Loc,
+           Name => New_Occurrence_Of (Libent, Loc),
+           Parameter_Associations => New_List (
+             Relocate_Node (Sink),
+             Make_String_Literal (Loc,
+               Exp_Util.Fully_Qualified_Name_String (
+                 Entity (Prefix (N)), Append_NUL => False))));
+    end Build_Unknown_Put_Image_Call;
+ 
+    ----------------------
+    -- Enable_Put_Image --
+    ----------------------
+ 
+    function Enable_Put_Image (Typ : Entity_Id) return Boolean is
+    begin
+       --  There's a bit of a chicken&egg problem. The compiler is likely to
+       --  have trouble if we refer to the Put_Image of Sink itself, because
+       --  Sink is part of the parameter profile:
+       --
+       --     function Sink'Put_Image (S : in out Sink'Class; V : T);
+       --
+       --  Likewise, the Ada.Strings.Text_Output package, where Sink is
+       --  declared, depends on various other packages, so if we refer to
+       --  Put_Image of types declared in those other packages, we could create
+       --  cyclic dependencies. Therefore, we disable Put_Image for some
+       --  types. It's not clear exactly what types should be disabled. Scalar
+       --  types are OK, even if predefined, because calls to Put_Image of
+       --  scalar types are expanded inline. We certainly want to be able to use
+       --  Integer'Put_Image, for example.
+ 
+       --  ???Temporarily disable to work around bugs:
+       --
+       --  Put_Image does not work for Remote_Types. We check the containing
+       --  package, rather than the type itself, because we want to include
+       --  types in the private part of a Remote_Types package.
+       --
+       --  Put_Image on tagged types triggers some bugs.
+ 
+       if Is_Remote_Types (Scope (Typ))
+         or else (Is_Tagged_Type (Typ) and then In_Predefined_Unit (Typ))
+         or else (Is_Tagged_Type (Typ) and then not Tagged_Put_Image_Enabled)
+       then
+          return False;
+       end if;
+ 
+       --  End of workarounds.
+ 
+       --  No sense in generating code for Put_Image if there are errors. This
+       --  avoids certain cascade errors.
+ 
+       if Total_Errors_Detected > 0 then
+          return False;
+       end if;
+ 
+       --  If type Sink is unavailable in this runtime, disable Put_Image
+       --  altogether.
+ 
+       if No_Run_Time_Mode or else not RTE_Available (RE_Sink) then
+          return False;
+       end if;
+ 
+       --  ???Disable Put_Image on type Sink declared in
+       --  Ada.Strings.Text_Output. Note that we can't call Is_RTU on
+       --  Ada_Strings_Text_Output, because it's not known yet (we might be
+       --  compiling it). But this is insufficient to allow support for tagged
+       --  predefined types.
+ 
+       declare
+          Parent_Scope : constant Entity_Id := Scope (Scope (Typ));
+       begin
+          if Present (Parent_Scope)
+            and then Is_RTU (Parent_Scope, Ada_Strings)
+            and then Chars (Scope (Typ)) = Name_Find ("text_output")
+          then
+             return False;
+          end if;
+       end;
+ 
+       --  Disable for CPP types, because the components are unavailable on the
+       --  Ada side.
+ 
+       if Is_Tagged_Type (Typ)
+         and then Convention (Typ) = Convention_CPP
+         and then Is_CPP_Class (Root_Type (Typ))
+       then
+          return False;
+       end if;
+ 
+       --  Disable for unchecked unions, because there is no way to know the
+       --  discriminant value, and therefore no way to know which components
+       --  should be printed.
+ 
+       if Is_Unchecked_Union (Typ) then
+          return False;
+       end if;
+ 
+       return True;
+    end Enable_Put_Image;
+ 
+    ---------------------------------
+    -- Make_Put_Image_Name --
+    ---------------------------------
+ 
+    function Make_Put_Image_Name
+      (Loc : Source_Ptr; Typ : Entity_Id) return Entity_Id
+    is
+       Sname : Name_Id;
+    begin
+       --  For tagged types, we are dealing with a TSS associated with the
+       --  declaration, so we use the standard primitive function name. For
+       --  other types, generate a local TSS name since we are generating
+       --  the subprogram at the point of use.
+ 
+       if Is_Tagged_Type (Typ) then
+          Sname := Make_TSS_Name (Typ, TSS_Put_Image);
+       else
+          Sname := Make_TSS_Name_Local (Typ, TSS_Put_Image);
+       end if;
+ 
+       return Make_Defining_Identifier (Loc, Sname);
+    end Make_Put_Image_Name;
+ 
+    function Image_Should_Call_Put_Image (N : Node_Id) return Boolean is
+    begin
+       if Ada_Version < Ada_2020 then
+          return False;
+       end if;
+ 
+       --  In Ada 2020, T'Image calls T'Put_Image if there is an explicit
+       --  aspect_specification for Put_Image, or if U_Type'Image is illegal
+       --  in pre-2020 versions of Ada.
+ 
+       declare
+          U_Type : constant Entity_Id := Underlying_Type (Entity (Prefix (N)));
+       begin
+          if Present (TSS (U_Type, TSS_Put_Image)) then
+             return True;
+          end if;
+ 
+          return not Is_Scalar_Type (U_Type);
+       end;
+    end Image_Should_Call_Put_Image;
+ 
+    function Build_Image_Call (N : Node_Id) return Node_Id is
+       --  For T'Image (X) Generate an Expression_With_Actions node:
+       --
+       --     do
+       --        S : Buffer := New_Buffer;
+       --        U_Type'Put_Image (S, X);
+       --        Result : constant String := Get (S);
+       --        Destroy (S);
+       --     in Result end
+       --
+       --  where U_Type is the underlying type, as needed to bypass privacy.
+ 
+       Loc : constant Source_Ptr := Sloc (N);
+       U_Type : constant Entity_Id := Underlying_Type (Entity (Prefix (N)));
+       Sink_Entity : constant Entity_Id :=
+         Make_Defining_Identifier (Loc, Chars => New_Internal_Name ('S'));
+       Sink_Decl : constant Node_Id :=
+         Make_Object_Declaration (Loc,
+           Defining_Identifier => Sink_Entity,
+           Object_Definition =>
+             New_Occurrence_Of (RTE (RE_Buffer), Loc),
+           Expression =>
+             Make_Function_Call (Loc,
+               Name => New_Occurrence_Of (RTE (RE_New_Buffer), Loc),
+               Parameter_Associations => Empty_List));
+       Put_Im : constant Node_Id :=
+         Make_Attribute_Reference (Loc,
+           Prefix         => New_Occurrence_Of (U_Type, Loc),
+           Attribute_Name => Name_Put_Image,
+           Expressions    => New_List (
+             New_Occurrence_Of (Sink_Entity, Loc),
+             New_Copy_Tree (First (Expressions (N)))));
+       Result_Entity : constant Entity_Id :=
+         Make_Defining_Identifier (Loc, Chars => New_Internal_Name ('R'));
+       Result_Decl : constant Node_Id :=
+         Make_Object_Declaration (Loc,
+           Defining_Identifier => Result_Entity,
+           Object_Definition =>
+             New_Occurrence_Of (Stand.Standard_String, Loc),
+           Expression =>
+             Make_Function_Call (Loc,
+               Name => New_Occurrence_Of (RTE (RE_Get), Loc),
+               Parameter_Associations => New_List (
+                 New_Occurrence_Of (Sink_Entity, Loc))));
+       Image : constant Node_Id :=
+         Make_Expression_With_Actions (Loc,
+           Actions => New_List (Sink_Decl, Put_Im, Result_Decl),
+           Expression => New_Occurrence_Of (Result_Entity, Loc));
+    begin
+       return Image;
+    end Build_Image_Call;
+ 
+    ------------------
+    -- Preload_Sink --
+    ------------------
+ 
+    procedure Preload_Sink (Compilation_Unit : Node_Id) is
+    begin
+       --  We can't call RTE (RE_Sink) for at least some predefined units,
+       --  because it would introduce cyclic dependences. The package where Sink
+       --  is declared, for example, and things it depends on.
+       --
+       --  It's only needed for tagged types, so don't do it unless Put_Image is
+       --  enabled for tagged types, and we've seen a tagged type. Note that
+       --  Tagged_Seen is set True by the parser if the "tagged" reserved word
+       --  is seen; this flag tells us whether we have any tagged types.
+       --  It's unfortunate to have this Tagged_Seen processing so scattered
+       --  about, but we need to know if there are tagged types where this is
+       --  called in Analyze_Compilation_Unit, before we have analyzed any type
+       --  declarations. This mechanism also prevents doing RTE (RE_Sink) when
+       --  compiling the compiler itself. Packages Ada.Strings.Text_Output and
+       --  friends are not included in the compiler.
+       --
+       --  Don't do it if type Sink is unavailable in the runtime.
+ 
+       if not In_Predefined_Unit (Compilation_Unit)
+         and then Tagged_Put_Image_Enabled
+         and then Tagged_Seen
+         and then not No_Run_Time_Mode
+         and then RTE_Available (RE_Sink)
+       then
+          declare
+             Ignore : constant Entity_Id := RTE (RE_Sink);
+          begin
+             null;
+          end;
+       end if;
+    end Preload_Sink;
+ 
+    -------------------------
+    -- Put_Image_Base_Type --
+    -------------------------
+ 
+    function Put_Image_Base_Type (E : Entity_Id) return Entity_Id is
+    begin
+       if Is_Array_Type (E) and then Is_First_Subtype (E) then
+          return E;
+       else
+          return Base_Type (E);
+       end if;
+    end Put_Image_Base_Type;
+ 
+ end Exp_Put_Image;
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_put_image.ads gcc-11.1.0/gcc/ada/exp_put_image.ads
*** gcc-10.3.0/gcc/ada/exp_put_image.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/exp_put_image.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,103 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                        E X P _ P U T _ I M A G E                         --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --             Copyright (C) 2020, Free Software Foundation, Inc.           --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+ -- for  more details.  You should have  received  a copy of the GNU General --
+ -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+ -- http://www.gnu.org/licenses for a complete copy of the license.          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Types; use Types;
+ 
+ package Exp_Put_Image is
+ 
+    --  Routines to build Put_Image calls. See Ada.Strings.Text_Output.Utils and
+    --  System.Put_Images for the run-time routines we are generating calls to.
+ 
+    --  For a call to T'Put_Image, if T is elementary, we expand the code
+    --  inline. If T is a tagged type, then Put_Image is a primitive procedure
+    --  of T, and can be dispatched to in the class-wide case. For untagged
+    --  composite types, we generate a procedure the first time we see a call,
+    --  and call it. Subsequent calls call the same procedure. Thus, if there
+    --  are calls to T'Put_Image in different units, there will be duplicates;
+    --  each unit will get a copy of the T'Put_Image procedure.
+ 
+    function Enable_Put_Image (Typ : Entity_Id) return Boolean;
+    --  True if the predefined Put_Image should be enabled for type T. Put_Image
+    --  is always enabled if there is a user-specified one.
+ 
+    function Build_Put_Image_Profile
+      (Loc : Source_Ptr; Typ : Entity_Id) return List_Id;
+    --  Builds the parameter profile for Put_Image. This is used for the tagged
+    --  case to build the spec for the primitive operation.
+ 
+    --  In the following Build_... routines, N is the attribute reference node,
+    --  from which the procedure to call and the parameters to pass can be
+    --  determined.
+ 
+    function Build_Elementary_Put_Image_Call (N : Node_Id) return Node_Id;
+    --  Builds a Put_Image call for an elementary type.
+ 
+    function Build_String_Put_Image_Call (N : Node_Id) return Node_Id;
+    --  Builds a Put_Image call for a standard string type.
+ 
+    function Build_Protected_Put_Image_Call (N : Node_Id) return Node_Id;
+    --  Builds a Put_Image call for a protected type.
+ 
+    function Build_Task_Put_Image_Call (N : Node_Id) return Node_Id;
+    --  Builds a Put_Image call for a task type.
+ 
+    --  The following routines build the Put_Image procedure for composite
+    --  types. Typ is the base type to which the procedure applies (i.e. the
+    --  base type of the Put_Image attribute prefix). The returned results are
+    --  the declaration and name (entity) of the procedure.
+ 
+    procedure Build_Array_Put_Image_Procedure
+      (Nod  : Node_Id;
+       Typ  : Entity_Id;
+       Decl : out Node_Id;
+       Pnam : out Entity_Id);
+    --  Nod provides the Sloc value for the generated code
+ 
+    procedure Build_Record_Put_Image_Procedure
+      (Loc  : Source_Ptr;
+       Typ  : Entity_Id;
+       Decl : out Node_Id;
+       Pnam : out Entity_Id);
+    --  Loc is the location of the subprogram declaration
+ 
+    function Build_Unknown_Put_Image_Call (N : Node_Id) return Node_Id;
+    --  Build a call to Put_Image_Unknown
+ 
+    function Image_Should_Call_Put_Image (N : Node_Id) return Boolean;
+    --  True if T'Image should call T'Put_Image. N is the attribute_reference
+    --  T'Image.
+ 
+    function Build_Image_Call (N : Node_Id) return Node_Id;
+    --  N is a call to T'Image, and this translates it into the appropriate code
+    --  to call T'Put_Image into a buffer and then extract the string from the
+    --  buffer.
+ 
+    procedure Preload_Sink (Compilation_Unit : Node_Id);
+    --  Call RTE (RE_Sink) if necessary, to load the packages involved in
+    --  Put_Image. We need to do this explicitly, fairly early during
+    --  compilation, because otherwise it happens during freezing, which
+    --  triggers visibility bugs in generic instantiations.
+ 
+ end Exp_Put_Image;
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_sel.adb gcc-11.1.0/gcc/ada/exp_sel.adb
*** gcc-10.3.0/gcc/ada/exp_sel.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_sel.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Sel is
*** 70,96 ****
     -------------------------------
  
     function Build_Abort_Block_Handler (Loc : Source_Ptr) return Node_Id is
-       Stmt : Node_Id;
- 
     begin
- 
-       --  With ZCX exceptions, aborts are not defered in handlers. With SJLJ,
-       --  they are deferred at the beginning of Abort_Signal handlers.
- 
-       if ZCX_Exceptions then
-          Stmt := Make_Null_Statement (Loc);
- 
-       else
-          Stmt :=
-            Make_Procedure_Call_Statement (Loc,
-              Name => New_Occurrence_Of (RTE (RE_Abort_Undefer), Loc),
-              Parameter_Associations => No_List);
-       end if;
- 
        return Make_Implicit_Exception_Handler (Loc,
          Exception_Choices =>
            New_List (New_Occurrence_Of (Stand.Abort_Signal, Loc)),
!         Statements        => New_List (Stmt));
     end Build_Abort_Block_Handler;
  
     -------------
--- 70,80 ----
     -------------------------------
  
     function Build_Abort_Block_Handler (Loc : Source_Ptr) return Node_Id is
     begin
        return Make_Implicit_Exception_Handler (Loc,
          Exception_Choices =>
            New_List (New_Occurrence_Of (Stand.Abort_Signal, Loc)),
!         Statements        => New_List (Make_Null_Statement (Loc)));
     end Build_Abort_Block_Handler;
  
     -------------
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_sel.ads gcc-11.1.0/gcc/ada/exp_sel.ads
*** gcc-10.3.0/gcc/ada/exp_sel.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_sel.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Sel is
*** 39,59 ****
     --    begin
     --       Blk
     --    exception
!    --       when Abort_Signal => Abort_Undefer / null;
     --    end;
     --  Abr_Blk_Ent is the name of the generated block, Cln_Blk_Ent is the name
     --  of the encapsulated cleanup block, Blk is the actual block name.
     --  The exception handler code is built by Build_Abort_Block_Handler.
  
     function Build_Abort_Block_Handler (Loc : Source_Ptr) return Node_Id;
!    --  Generate if front-end exception:
!    --    when others =>
!    --      Abort_Undefer;
!    --  or if back-end exception:
     --    when others =>
     --      null;
     --  This is an exception handler to stop propagation of aborts, without
!    --  modifying the deferal level.
  
     function Build_B
       (Loc   : Source_Ptr;
--- 39,56 ----
     --    begin
     --       Blk
     --    exception
!    --       when Abort_Signal => null;
     --    end;
     --  Abr_Blk_Ent is the name of the generated block, Cln_Blk_Ent is the name
     --  of the encapsulated cleanup block, Blk is the actual block name.
     --  The exception handler code is built by Build_Abort_Block_Handler.
  
     function Build_Abort_Block_Handler (Loc : Source_Ptr) return Node_Id;
!    --  Generate:
     --    when others =>
     --      null;
     --  This is an exception handler to stop propagation of aborts, without
!    --  modifying the deferral level.
  
     function Build_B
       (Loc   : Source_Ptr;
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_smem.adb gcc-11.1.0/gcc/ada/exp_smem.adb
*** gcc-10.3.0/gcc/ada/exp_smem.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_smem.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Smem is
*** 372,378 ****
           return False;
  
        else
!          if Ekind_In (Formal, E_Out_Parameter, E_In_Out_Parameter) then
              Insert_Node := Call;
              return True;
           else
--- 372,378 ----
           return False;
  
        else
!          if Ekind (Formal) in E_Out_Parameter | E_In_Out_Parameter then
              Insert_Node := Call;
              return True;
           else
*************** package body Exp_Smem is
*** 454,460 ****
  
        begin
           while Next (Nod) /= After loop
!             Nod := Next (Nod);
           end loop;
  
           return Nod;
--- 454,460 ----
  
        begin
           while Next (Nod) /= After loop
!             Next (Nod);
           end loop;
  
           return Nod;
*************** package body Exp_Smem is
*** 477,483 ****
              return False;
           end if;
  
!       elsif Nkind_In (P, N_Indexed_Component, N_Selected_Component)
          and then N = Prefix (P)
        then
           return On_Lhs_Of_Assignment (P);
--- 477,483 ----
              return False;
           end if;
  
!       elsif Nkind (P) in N_Indexed_Component | N_Selected_Component
          and then N = Prefix (P)
        then
           return On_Lhs_Of_Assignment (P);
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_smem.ads gcc-11.1.0/gcc/ada/exp_smem.ads
*** gcc-10.3.0/gcc/ada/exp_smem.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_smem.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_spark.adb gcc-11.1.0/gcc/ada/exp_spark.adb
*** gcc-10.3.0/gcc/ada/exp_spark.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_spark.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Nlists;   use Nlists;
*** 36,42 ****
  with Nmake;    use Nmake;
  with Rtsfind;  use Rtsfind;
  with Sem;      use Sem;
! with Sem_Eval; use Sem_Eval;
  with Sem_Prag; use Sem_Prag;
  with Sem_Res;  use Sem_Res;
  with Sem_Util; use Sem_Util;
--- 36,42 ----
  with Nmake;    use Nmake;
  with Rtsfind;  use Rtsfind;
  with Sem;      use Sem;
! with Sem_Ch8;  use Sem_Ch8;
  with Sem_Prag; use Sem_Prag;
  with Sem_Res;  use Sem_Res;
  with Sem_Util; use Sem_Util;
*************** package body Exp_SPARK is
*** 53,66 ****
     -----------------------
  
     procedure Expand_SPARK_N_Attribute_Reference (N : Node_Id);
!    --  Replace occurrences of System'To_Address by calls to
!    --  System.Storage_Elements.To_Address
  
     procedure Expand_SPARK_N_Freeze_Type (E : Entity_Id);
     --  Build the DIC procedure of a type when needed, if not already done
  
     procedure Expand_SPARK_N_Loop_Statement (N : Node_Id);
!    --  Perform loop statement-specific expansion
  
     procedure Expand_SPARK_N_Object_Declaration (N : Node_Id);
     --  Perform object-declaration-specific expansion
--- 53,68 ----
     -----------------------
  
     procedure Expand_SPARK_N_Attribute_Reference (N : Node_Id);
!    --  Perform attribute-reference-specific expansion
! 
!    procedure Expand_SPARK_N_Delta_Aggregate (N : Node_Id);
!    --  Perform delta-aggregate-specific expansion
  
     procedure Expand_SPARK_N_Freeze_Type (E : Entity_Id);
     --  Build the DIC procedure of a type when needed, if not already done
  
     procedure Expand_SPARK_N_Loop_Statement (N : Node_Id);
!    --  Perform loop-statement-specific expansion
  
     procedure Expand_SPARK_N_Object_Declaration (N : Node_Id);
     --  Perform object-declaration-specific expansion
*************** package body Exp_SPARK is
*** 71,81 ****
     procedure Expand_SPARK_N_Op_Ne (N : Node_Id);
     --  Rewrite operator /= based on operator = when defined explicitly
  
!    procedure Expand_SPARK_N_Selected_Component (N : Node_Id);
!    --  Insert explicit dereference if required
! 
!    procedure Expand_SPARK_N_Slice_Or_Indexed_Component (N : Node_Id);
!    --  Insert explicit dereference if required
  
     ------------------
     -- Expand_SPARK --
--- 73,80 ----
     procedure Expand_SPARK_N_Op_Ne (N : Node_Id);
     --  Rewrite operator /= based on operator = when defined explicitly
  
!    procedure Expand_SPARK_Delta_Or_Update (Typ : Entity_Id; Aggr : Node_Id);
!    --  Common expansion for attribute Update and delta aggregates
  
     ------------------
     -- Expand_SPARK --
*************** package body Exp_SPARK is
*** 109,114 ****
--- 108,116 ----
           when N_Attribute_Reference =>
              Expand_SPARK_N_Attribute_Reference (N);
  
+          when N_Delta_Aggregate =>
+             Expand_SPARK_N_Delta_Aggregate (N);
+ 
           when N_Expanded_Name
              | N_Identifier
           =>
*************** package body Exp_SPARK is
*** 138,151 ****
                 Expand_SPARK_N_Freeze_Type (Entity (N));
              end if;
  
-          when N_Indexed_Component
-             | N_Slice
-          =>
-             Expand_SPARK_N_Slice_Or_Indexed_Component (N);
- 
-          when N_Selected_Component =>
-             Expand_SPARK_N_Selected_Component (N);
- 
           --  In SPARK mode, no other constructs require expansion
  
           when others =>
--- 140,145 ----
*************** package body Exp_SPARK is
*** 153,158 ****
--- 147,351 ----
        end case;
     end Expand_SPARK;
  
+    ----------------------------------
+    -- Expand_SPARK_Delta_Or_Update --
+    ----------------------------------
+ 
+    procedure Expand_SPARK_Delta_Or_Update
+      (Typ  : Entity_Id;
+       Aggr : Node_Id)
+    is
+       Assoc     : Node_Id;
+       Comp      : Node_Id;
+       Comp_Id   : Entity_Id;
+       Comp_Type : Entity_Id;
+       Expr      : Node_Id;
+       Index     : Node_Id;
+       Index_Typ : Entity_Id;
+       New_Assoc : Node_Id;
+ 
+    begin
+       --  Apply scalar range checks on the updated components, if needed
+ 
+       if Is_Array_Type (Typ) then
+ 
+          --  Multidimensional arrays
+ 
+          if Present (Next_Index (First_Index (Typ))) then
+             Assoc := First (Component_Associations (Aggr));
+ 
+             while Present (Assoc) loop
+                Expr      := Expression (Assoc);
+                Comp_Type := Component_Type (Typ);
+ 
+                if Is_Scalar_Type (Comp_Type) then
+                   Apply_Scalar_Range_Check (Expr, Comp_Type);
+                end if;
+ 
+                --  The current association contains a sequence of indexes
+                --  denoting an element of a multidimensional array:
+                --
+                --    (Index_1, ..., Index_N)
+ 
+                Expr := First (Choices (Assoc));
+ 
+                pragma Assert (Nkind (Aggr) = N_Aggregate);
+ 
+                while Present (Expr) loop
+                   Index     := First (Expressions (Expr));
+                   Index_Typ := First_Index (Typ);
+ 
+                   while Present (Index_Typ) loop
+                      Apply_Scalar_Range_Check (Index, Etype (Index_Typ));
+                      Next (Index);
+                      Next_Index (Index_Typ);
+                   end loop;
+ 
+                   Next (Expr);
+                end loop;
+ 
+                Next (Assoc);
+             end loop;
+ 
+          --  One-dimensional arrays
+ 
+          else
+             Assoc := First (Component_Associations (Aggr));
+ 
+             while Present (Assoc) loop
+                Expr      := Expression (Assoc);
+                Comp_Type := Component_Type (Typ);
+ 
+                --  Analyze expression of the iterated_component_association
+                --  with its index parameter in scope.
+ 
+                if Nkind (Assoc) = N_Iterated_Component_Association then
+                   Push_Scope (Scope (Defining_Identifier (Assoc)));
+                   Enter_Name (Defining_Identifier (Assoc));
+                   Analyze_And_Resolve (Expr, Comp_Type);
+                end if;
+ 
+                if Is_Scalar_Type (Comp_Type) then
+                   Apply_Scalar_Range_Check (Expr, Comp_Type);
+                end if;
+ 
+                --  Restore scope of the iterated_component_association
+ 
+                if Nkind (Assoc) = N_Iterated_Component_Association then
+                   End_Scope;
+                end if;
+ 
+                Index     := First (Choice_List (Assoc));
+                Index_Typ := First_Index (Typ);
+ 
+                while Present (Index) loop
+                   --  If the index denotes a range of elements or a constrained
+                   --  subtype indication, then their low and high bounds
+                   --  already have range checks applied.
+ 
+                   if Nkind (Index) in N_Range | N_Subtype_Indication then
+                      null;
+ 
+                   --  Otherwise the index denotes a single expression where
+                   --  range checks need to be applied or a subtype name
+                   --  (without range constraints) where applying checks is
+                   --  harmless.
+                   --
+                   --  In delta_aggregate and Update attribute on array the
+                   --  others_choice is not allowed.
+ 
+                   else pragma Assert (Nkind (Index) in N_Subexpr);
+                      Apply_Scalar_Range_Check (Index, Etype (Index_Typ));
+                   end if;
+ 
+                   Next (Index);
+                end loop;
+ 
+                Next (Assoc);
+             end loop;
+          end if;
+ 
+       else pragma Assert (Is_Record_Type (Typ));
+ 
+          --  If the aggregate has multiple component choices, e.g.:
+          --
+          --    X'Update (A | B | C => 123)
+          --
+          --  then each component might be of a different type and might or
+          --  might not require a range check. We first rewrite associations
+          --  into single-component choices, e.g.:
+          --
+          --    X'Update (A => 123, B => 123, C => 123)
+          --
+          --  and then apply range checks to individual copies of the
+          --  expressions. We do the same for delta aggregates, accordingly.
+ 
+          --  Iterate over associations of the original aggregate
+ 
+          Assoc := First (Component_Associations (Aggr));
+ 
+          --  Rewrite into a new aggregate and decorate
+ 
+          case Nkind (Aggr) is
+             when N_Aggregate =>
+                Rewrite
+                  (Aggr,
+                   Make_Aggregate
+                     (Sloc                   => Sloc (Aggr),
+                      Component_Associations => New_List));
+ 
+             when N_Delta_Aggregate =>
+                Rewrite
+                  (Aggr,
+                   Make_Delta_Aggregate
+                     (Sloc                   => Sloc (Aggr),
+                      Expression             => Expression (Aggr),
+                      Component_Associations => New_List));
+ 
+             when others =>
+                raise Program_Error;
+          end case;
+ 
+          Set_Etype (Aggr, Typ);
+ 
+          --  Populate the new aggregate with component associations
+ 
+          while Present (Assoc) loop
+             Expr := Expression (Assoc);
+             Comp := First (Choices (Assoc));
+ 
+             while Present (Comp) loop
+                Comp_Id   := Entity (Comp);
+                Comp_Type := Etype (Comp_Id);
+ 
+                New_Assoc :=
+                  Make_Component_Association
+                    (Sloc       => Sloc (Assoc),
+                     Choices    =>
+                       New_List
+                         (New_Occurrence_Of (Comp_Id, Sloc (Comp))),
+                     Expression => New_Copy_Tree (Expr));
+ 
+                --  New association must be attached to the aggregate before we
+                --  analyze it.
+ 
+                Append (New_Assoc, Component_Associations (Aggr));
+ 
+                Analyze_And_Resolve (Expression (New_Assoc), Comp_Type);
+ 
+                if Is_Scalar_Type (Comp_Type) then
+                   Apply_Scalar_Range_Check
+                     (Expression (New_Assoc), Comp_Type);
+                end if;
+ 
+                Next (Comp);
+             end loop;
+ 
+             Next (Assoc);
+          end loop;
+       end if;
+    end Expand_SPARK_Delta_Or_Update;
+ 
     --------------------------------
     -- Expand_SPARK_N_Freeze_Type --
     --------------------------------
*************** package body Exp_SPARK is
*** 164,170 ****
        --  procedure for it as done during regular expansion for compilation.
  
        if Has_DIC (E) and then Is_Tagged_Type (E) then
!          Build_DIC_Procedure_Body (E, For_Freeze => True);
        end if;
     end Expand_SPARK_N_Freeze_Type;
  
--- 357,366 ----
        --  procedure for it as done during regular expansion for compilation.
  
        if Has_DIC (E) and then Is_Tagged_Type (E) then
!          --  Why is this needed for DIC, but not for other aspects (such as
!          --  Type_Invariant)???
! 
!          Build_DIC_Procedure_Body (E);
        end if;
     end Expand_SPARK_N_Freeze_Type;
  
*************** package body Exp_SPARK is
*** 181,325 ****
        Expr    : Node_Id;
  
     begin
!       if Attr_Id = Attribute_To_Address then
! 
!          --  Extract and convert argument to expected type for call
! 
!          Expr :=
!            Make_Type_Conversion (Loc,
!              Subtype_Mark =>
!                New_Occurrence_Of (RTE (RE_Integer_Address), Loc),
!              Expression   => Relocate_Node (First (Expressions (N))));
! 
!          --  Replace attribute reference with call
! 
!          Rewrite (N,
!            Make_Function_Call (Loc,
!              Name                   =>
!                New_Occurrence_Of (RTE (RE_To_Address), Loc),
!              Parameter_Associations => New_List (Expr)));
!          Analyze_And_Resolve (N, Typ);
! 
!       --  Whenever possible, replace a prefix which is an enumeration literal
!       --  by the corresponding literal value.
  
!       elsif Attr_Id = Attribute_Enum_Rep then
!          declare
!             Exprs : constant List_Id := Expressions (N);
!          begin
!             if Is_Non_Empty_List (Exprs) then
!                Expr := First (Exprs);
!             else
!                Expr := Prefix (N);
!             end if;
  
!             --  If the argument is a literal, expand it
  
!             if Nkind (Expr) in N_Has_Entity
!               and then
!                 (Ekind (Entity (Expr)) = E_Enumeration_Literal
!                  or else
!                    (Nkind (Expr) in N_Has_Entity
!                     and then Ekind (Entity (Expr)) = E_Constant
!                     and then Present (Renamed_Object (Entity (Expr)))
!                     and then Is_Entity_Name (Renamed_Object (Entity (Expr)))
!                     and then Ekind (Entity (Renamed_Object (Entity (Expr)))) =
!                       E_Enumeration_Literal))
!             then
!                Exp_Attr.Expand_N_Attribute_Reference (N);
!             end if;
!          end;
  
!       elsif Attr_Id = Attribute_Object_Size
!         or else Attr_Id = Attribute_Size
!         or else Attr_Id = Attribute_Value_Size
!         or else Attr_Id = Attribute_VADS_Size
!       then
!          Exp_Attr.Expand_Size_Attribute (N);
  
!       --  For attributes which return Universal_Integer, introduce a conversion
!       --  to the expected type with the appropriate check flags set.
  
!       elsif Attr_Id = Attribute_Alignment
!         or else Attr_Id = Attribute_Bit
!         or else Attr_Id = Attribute_Bit_Position
!         or else Attr_Id = Attribute_Descriptor_Size
!         or else Attr_Id = Attribute_First_Bit
!         or else Attr_Id = Attribute_Last_Bit
!         or else Attr_Id = Attribute_Length
!         or else Attr_Id = Attribute_Max_Size_In_Storage_Elements
!         or else Attr_Id = Attribute_Pos
!         or else Attr_Id = Attribute_Position
!         or else Attr_Id = Attribute_Range_Length
!         or else Attr_Id = Attribute_Aft
!         or else Attr_Id = Attribute_Max_Alignment_For_Allocation
!       then
!          --  If the expected type is Long_Long_Integer, there will be no check
!          --  flag as the compiler assumes attributes always fit in this type.
!          --  Since in SPARK_Mode we do not take Storage_Error into account, we
!          --  cannot make this assumption and need to produce a check.
!          --  ??? It should be enough to add this check for attributes 'Length
!          --  and 'Range_Length when the type is as big as Long_Long_Integer.
  
!          declare
!             Typ : Entity_Id := Empty;
!          begin
!             if Attr_Id = Attribute_Range_Length then
!                Typ := Etype (Prefix (N));
  
!             elsif Attr_Id = Attribute_Length then
!                Typ := Etype (Prefix (N));
  
!                declare
!                   Indx : Node_Id;
!                   J    : Int;
  
!                begin
!                   if Is_Access_Type (Typ) then
!                      Typ := Designated_Type (Typ);
!                   end if;
  
!                   if No (Expressions (N)) then
!                      J := 1;
!                   else
!                      J := UI_To_Int (Expr_Value (First (Expressions (N))));
!                   end if;
  
!                   Indx := First_Index (Typ);
!                   while J > 1 loop
!                      Next_Index (Indx);
!                      J := J - 1;
!                   end loop;
  
!                   Typ := Etype (Indx);
!                end;
!             end if;
  
!             Apply_Universal_Integer_Attribute_Checks (N);
  
!             if Present (Typ)
!               and then RM_Size (Typ) = RM_Size (Standard_Long_Long_Integer)
              then
!                Set_Do_Overflow_Check (N);
              end if;
-          end;
  
!       elsif Attr_Id = Attribute_Constrained then
! 
!          --  If the prefix is an access to object, the attribute applies to
!          --  the designated object, so rewrite with an explicit dereference.
  
!          if Is_Access_Type (Etype (Pref))
!            and then
!              (not Is_Entity_Name (Pref) or else Is_Object (Entity (Pref)))
!          then
!             Rewrite (Pref,
!                      Make_Explicit_Dereference (Loc, Relocate_Node (Pref)));
!             Analyze_And_Resolve (N, Standard_Boolean);
!          end if;
!       end if;
     end Expand_SPARK_N_Attribute_Reference;
  
     -----------------------------------
     -- Expand_SPARK_N_Loop_Statement --
     -----------------------------------
--- 377,492 ----
        Expr    : Node_Id;
  
     begin
!       case Attr_Id is
!          when Attribute_To_Address =>
  
!             --  Extract and convert argument to expected type for call
  
!             Expr :=
!               Make_Type_Conversion (Loc,
!                 Subtype_Mark =>
!                   New_Occurrence_Of (RTE (RE_Integer_Address), Loc),
!                 Expression   => Relocate_Node (First (Expressions (N))));
  
!             --  Replace attribute reference with call
  
!             Rewrite
!               (N,
!                Make_Function_Call (Loc,
!                  Name                   =>
!                    New_Occurrence_Of (RTE (RE_To_Address), Loc),
!                  Parameter_Associations => New_List (Expr)));
!             Analyze_And_Resolve (N, Typ);
  
!          when Attribute_Object_Size
!             | Attribute_Size
!             | Attribute_Value_Size
!             | Attribute_VADS_Size
!          =>
!             Exp_Attr.Expand_Size_Attribute (N);
  
!          --  For attributes which return Universal_Integer, introduce a
!          --  conversion to the expected type with the appropriate check flags
!          --  set.
  
!          when Attribute_Aft
!             | Attribute_Alignment
!             | Attribute_Bit
!             | Attribute_Bit_Position
!             | Attribute_Descriptor_Size
!             | Attribute_First_Bit
!             | Attribute_Last_Bit
!             | Attribute_Length
!             | Attribute_Max_Alignment_For_Allocation
!             | Attribute_Max_Size_In_Storage_Elements
!             | Attribute_Pos
!             | Attribute_Position
!             | Attribute_Range_Length
!          =>
!             --  If the expected type is Long_Long_Integer, there will be no
!             --  check flag as the compiler assumes attributes always fit in
!             --  this type. Since in SPARK_Mode we do not take Storage_Error
!             --  into account, we cannot make this assumption and need to
!             --  produce a check. ??? It should be enough to add this check for
!             --  attributes 'Length, 'Range_Length and 'Pos when the type is as
!             --  big as Long_Long_Integer.
  
!             declare
!                Typ : Entity_Id;
!             begin
!                if Attr_Id in Attribute_Pos | Attribute_Range_Length then
!                   Typ := Etype (Prefix (N));
  
!                elsif Attr_Id = Attribute_Length then
!                   Typ := Get_Index_Subtype (N);
  
!                else
!                   Typ := Empty;
!                end if;
  
!                Apply_Universal_Integer_Attribute_Checks (N);
  
!                if Present (Typ)
!                  and then RM_Size (Typ) = RM_Size (Standard_Long_Long_Integer)
!                then
!                   --  ??? This should rather be a range check, but this would
!                   --  crash GNATprove which somehow recovers the proper kind
!                   --  of check anyway.
!                   Set_Do_Overflow_Check (N);
!                end if;
!             end;
  
!          when Attribute_Constrained =>
  
!             --  If the prefix is an access to object, the attribute applies to
!             --  the designated object, so rewrite with an explicit dereference.
  
!             if Is_Access_Type (Etype (Pref))
!               and then
!               (not Is_Entity_Name (Pref) or else Is_Object (Entity (Pref)))
              then
!                Rewrite (Pref,
!                         Make_Explicit_Dereference (Loc, Relocate_Node (Pref)));
!                Analyze_And_Resolve (N, Standard_Boolean);
              end if;
  
!          when Attribute_Update =>
!             Expand_SPARK_Delta_Or_Update (Typ, First (Expressions (N)));
  
!          when others =>
!             null;
!       end case;
     end Expand_SPARK_N_Attribute_Reference;
  
+    ------------------------------------
+    -- Expand_SPARK_N_Delta_Aggregate --
+    ------------------------------------
+ 
+    procedure Expand_SPARK_N_Delta_Aggregate (N : Node_Id) is
+    begin
+       Expand_SPARK_Delta_Or_Update (Etype (N), N);
+    end Expand_SPARK_N_Delta_Aggregate;
+ 
     -----------------------------------
     -- Expand_SPARK_N_Loop_Statement --
     -----------------------------------
*************** package body Exp_SPARK is
*** 366,372 ****
          and then Present (DIC_Procedure (Typ))
          and then not Has_Init_Expression (N)
        then
!          Call := Build_DIC_Call (Loc, Obj_Id, Typ);
  
           --  Partially insert the call into the tree by setting its parent
           --  pointer.
--- 533,539 ----
          and then Present (DIC_Procedure (Typ))
          and then not Has_Init_Expression (N)
        then
!          Call := Build_DIC_Call (Loc, New_Occurrence_Of (Obj_Id, Loc), Typ);
  
           --  Partially insert the call into the tree by setting its parent
           --  pointer.
*************** package body Exp_SPARK is
*** 500,506 ****
     begin
        --  Replace a reference to a renaming with the actual renamed object
  
!       if Ekind (Obj_Id) in Object_Kind then
           Ren := Renamed_Object (Obj_Id);
  
           if Present (Ren) then
--- 667,673 ----
     begin
        --  Replace a reference to a renaming with the actual renamed object
  
!       if Is_Object (Obj_Id) then
           Ren := Renamed_Object (Obj_Id);
  
           if Present (Ren) then
*************** package body Exp_SPARK is
*** 533,572 ****
        end if;
     end Expand_SPARK_Potential_Renaming;
  
-    ---------------------------------------
-    -- Expand_SPARK_N_Selected_Component --
-    ---------------------------------------
- 
-    procedure Expand_SPARK_N_Selected_Component (N : Node_Id) is
-       Pref : constant Node_Id   := Prefix (N);
-       Typ  : constant Entity_Id := Underlying_Type (Etype (Pref));
- 
-    begin
-       if Present (Typ) and then Is_Access_Type (Typ) then
- 
-          --  First set prefix type to proper access type, in case it currently
-          --  has a private (non-access) view of this type.
- 
-          Set_Etype (Pref, Typ);
- 
-          Insert_Explicit_Dereference (Pref);
-          Analyze_And_Resolve (Pref, Designated_Type (Typ));
-       end if;
-    end Expand_SPARK_N_Selected_Component;
- 
-    -----------------------------------------------
-    -- Expand_SPARK_N_Slice_Or_Indexed_Component --
-    -----------------------------------------------
- 
-    procedure Expand_SPARK_N_Slice_Or_Indexed_Component (N : Node_Id) is
-       Pref : constant Node_Id   := Prefix (N);
-       Typ  : constant Entity_Id := Etype (Pref);
- 
-    begin
-       if Is_Access_Type (Typ) then
-          Insert_Explicit_Dereference (Pref);
-          Analyze_And_Resolve (Pref, Designated_Type (Typ));
-       end if;
-    end Expand_SPARK_N_Slice_Or_Indexed_Component;
- 
  end Exp_SPARK;
--- 700,703 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_spark.ads gcc-11.1.0/gcc/ada/exp_spark.ads
*** gcc-10.3.0/gcc/ada/exp_spark.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_spark.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_strm.adb gcc-11.1.0/gcc/ada/exp_strm.adb
*** gcc-10.3.0/gcc/ada/exp_strm.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_strm.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Strm is
*** 297,303 ****
          Make_Defining_Identifier (Loc,
            Chars => Make_TSS_Name_Local (Typ, TSS_Stream_Output));
  
!       Build_Stream_Procedure (Loc, Typ, Decl, Pnam, Stms, False);
     end Build_Array_Output_Procedure;
  
     --------------------------------
--- 297,303 ----
          Make_Defining_Identifier (Loc,
            Chars => Make_TSS_Name_Local (Typ, TSS_Stream_Output));
  
!       Build_Stream_Procedure (Loc, Typ, Decl, Pnam, Stms, Outp => False);
     end Build_Array_Output_Procedure;
  
     --------------------------------
*************** package body Exp_Strm is
*** 420,426 ****
        end loop;
  
        Build_Stream_Procedure
!         (Loc, Typ, Decl, Pnam, New_List (Stm), Nam = Name_Read);
     end Build_Array_Read_Write_Procedure;
  
     ---------------------------------
--- 420,426 ----
        end loop;
  
        Build_Stream_Procedure
!         (Loc, Typ, Decl, Pnam, New_List (Stm), Outp => Nam = Name_Read);
     end Build_Array_Read_Write_Procedure;
  
     ---------------------------------
*************** package body Exp_Strm is
*** 569,582 ****
           elsif P_Size <= Standard_Short_Integer_Size then
              Lib_RE := RE_I_SI;
  
           elsif P_Size <= Standard_Integer_Size then
              Lib_RE := RE_I_I;
  
           elsif P_Size <= Standard_Long_Integer_Size then
              Lib_RE := RE_I_LI;
  
!          else
              Lib_RE := RE_I_LLI;
           end if;
  
        --  Unsigned integer types, also includes unsigned fixed-point types
--- 569,588 ----
           elsif P_Size <= Standard_Short_Integer_Size then
              Lib_RE := RE_I_SI;
  
+          elsif P_Size = 24 then
+             Lib_RE := RE_I_I24;
+ 
           elsif P_Size <= Standard_Integer_Size then
              Lib_RE := RE_I_I;
  
           elsif P_Size <= Standard_Long_Integer_Size then
              Lib_RE := RE_I_LI;
  
!          elsif P_Size <= Standard_Long_Long_Integer_Size then
              Lib_RE := RE_I_LLI;
+ 
+          else
+             Lib_RE := RE_I_LLLI;
           end if;
  
        --  Unsigned integer types, also includes unsigned fixed-point types
*************** package body Exp_Strm is
*** 597,610 ****
           elsif P_Size <= Standard_Short_Integer_Size then
              Lib_RE := RE_I_SU;
  
           elsif P_Size <= Standard_Integer_Size then
              Lib_RE := RE_I_U;
  
           elsif P_Size <= Standard_Long_Integer_Size then
              Lib_RE := RE_I_LU;
  
!          else
              Lib_RE := RE_I_LLU;
           end if;
  
        else pragma Assert (Is_Access_Type (U_Type));
--- 603,622 ----
           elsif P_Size <= Standard_Short_Integer_Size then
              Lib_RE := RE_I_SU;
  
+          elsif P_Size = 24 then
+             Lib_RE := RE_I_U24;
+ 
           elsif P_Size <= Standard_Integer_Size then
              Lib_RE := RE_I_U;
  
           elsif P_Size <= Standard_Long_Integer_Size then
              Lib_RE := RE_I_LU;
  
!          elsif P_Size <= Standard_Long_Long_Integer_Size then
              Lib_RE := RE_I_LLU;
+ 
+          else
+             Lib_RE := RE_I_LLLU;
           end if;
  
        else pragma Assert (Is_Access_Type (U_Type));
*************** package body Exp_Strm is
*** 796,809 ****
        then
           if P_Size <= Standard_Short_Short_Integer_Size then
              Lib_RE := RE_W_SSI;
           elsif P_Size <= Standard_Short_Integer_Size then
              Lib_RE := RE_W_SI;
           elsif P_Size <= Standard_Integer_Size then
              Lib_RE := RE_W_I;
           elsif P_Size <= Standard_Long_Integer_Size then
              Lib_RE := RE_W_LI;
!          else
              Lib_RE := RE_W_LLI;
           end if;
  
        --  Unsigned integer types, also includes unsigned fixed-point types
--- 808,831 ----
        then
           if P_Size <= Standard_Short_Short_Integer_Size then
              Lib_RE := RE_W_SSI;
+ 
           elsif P_Size <= Standard_Short_Integer_Size then
              Lib_RE := RE_W_SI;
+ 
+          elsif P_Size = 24 then
+             Lib_RE := RE_W_I24;
+ 
           elsif P_Size <= Standard_Integer_Size then
              Lib_RE := RE_W_I;
+ 
           elsif P_Size <= Standard_Long_Integer_Size then
              Lib_RE := RE_W_LI;
! 
!          elsif P_Size <= Standard_Long_Long_Integer_Size then
              Lib_RE := RE_W_LLI;
+ 
+          else
+             Lib_RE := RE_W_LLLI;
           end if;
  
        --  Unsigned integer types, also includes unsigned fixed-point types
*************** package body Exp_Strm is
*** 820,833 ****
        then
           if P_Size <= Standard_Short_Short_Integer_Size then
              Lib_RE := RE_W_SSU;
           elsif P_Size <= Standard_Short_Integer_Size then
              Lib_RE := RE_W_SU;
           elsif P_Size <= Standard_Integer_Size then
              Lib_RE := RE_W_U;
           elsif P_Size <= Standard_Long_Integer_Size then
              Lib_RE := RE_W_LU;
!          else
              Lib_RE := RE_W_LLU;
           end if;
  
        else pragma Assert (Is_Access_Type (U_Type));
--- 842,865 ----
        then
           if P_Size <= Standard_Short_Short_Integer_Size then
              Lib_RE := RE_W_SSU;
+ 
           elsif P_Size <= Standard_Short_Integer_Size then
              Lib_RE := RE_W_SU;
+ 
+          elsif P_Size = 24 then
+             Lib_RE := RE_W_U24;
+ 
           elsif P_Size <= Standard_Integer_Size then
              Lib_RE := RE_W_U;
+ 
           elsif P_Size <= Standard_Long_Integer_Size then
              Lib_RE := RE_W_LU;
! 
!          elsif P_Size <= Standard_Long_Long_Integer_Size then
              Lib_RE := RE_W_LLU;
+ 
+          else
+             Lib_RE := RE_W_LLLU;
           end if;
  
        else pragma Assert (Is_Access_Type (U_Type));
*************** package body Exp_Strm is
*** 1119,1143 ****
       (Loc            : Source_Ptr;
        Typ            : Entity_Id;
        Decl           : out Node_Id;
!       Fnam           : out Entity_Id;
!       Use_Underlying : Boolean := True)
     is
!       B_Typ      : Entity_Id := Base_Type (Typ);
        Cn         : Name_Id;
        Constr     : List_Id;
        Decls      : List_Id;
        Discr      : Entity_Id;
!       Discr_Elmt : Elmt_Id   := No_Elmt;
        J          : Pos;
        Obj_Decl   : Node_Id;
        Odef       : Node_Id;
        Stms       : List_Id;
  
     begin
-       if Use_Underlying then
-          B_Typ := Underlying_Type (B_Typ);
-       end if;
- 
        Decls  := New_List;
        Constr := New_List;
  
--- 1151,1170 ----
       (Loc            : Source_Ptr;
        Typ            : Entity_Id;
        Decl           : out Node_Id;
!       Fnam           : out Entity_Id)
     is
!       B_Typ      : constant Entity_Id := Underlying_Type (Base_Type (Typ));
        Cn         : Name_Id;
        Constr     : List_Id;
        Decls      : List_Id;
        Discr      : Entity_Id;
!       Discr_Elmt : Elmt_Id            := No_Elmt;
        J          : Pos;
        Obj_Decl   : Node_Id;
        Odef       : Node_Id;
        Stms       : List_Id;
  
     begin
        Decls  := New_List;
        Constr := New_List;
  
*************** package body Exp_Strm is
*** 1325,1331 ****
  
        Pnam := Make_Stream_Subprogram_Name (Loc, Typ, TSS_Stream_Output);
  
!       Build_Stream_Procedure (Loc, Typ, Decl, Pnam, Stms, False);
     end Build_Record_Or_Elementary_Output_Procedure;
  
     ---------------------------------
--- 1352,1358 ----
  
        Pnam := Make_Stream_Subprogram_Name (Loc, Typ, TSS_Stream_Output);
  
!       Build_Stream_Procedure (Loc, Typ, Decl, Pnam, Stms, Outp => False);
     end Build_Record_Or_Elementary_Output_Procedure;
  
     ---------------------------------
*************** package body Exp_Strm is
*** 1590,1596 ****
        end if;
  
        Build_Stream_Procedure
!         (Loc, Typ, Decl, Pnam, Stms, Nam = Name_Read);
     end Build_Record_Read_Write_Procedure;
  
     ----------------------------------
--- 1617,1623 ----
        end if;
  
        Build_Stream_Procedure
!         (Loc, Typ, Decl, Pnam, Stms, Outp => Nam = Name_Read);
     end Build_Record_Read_Write_Procedure;
  
     ----------------------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_strm.ads gcc-11.1.0/gcc/ada/exp_strm.ads
*** gcc-10.3.0/gcc/ada/exp_strm.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_strm.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Strm is
*** 108,121 ****
       (Loc            : Source_Ptr;
        Typ            : Entity_Id;
        Decl           : out Node_Id;
!       Fnam           : out Entity_Id;
!       Use_Underlying : Boolean := True);
     --  Build function for Input attribute for record type or for an elementary
     --  type (the latter is used only in the case where a user-defined Read
     --  routine is defined, since, in other cases, Input calls the appropriate
!    --  runtime library routine directly). The flag Use_Underlying controls
!    --  whether the base type or the underlying type of the base type of Typ is
!    --  used during construction.
  
     procedure Build_Record_Or_Elementary_Output_Procedure
       (Loc  : Source_Ptr;
--- 108,118 ----
       (Loc            : Source_Ptr;
        Typ            : Entity_Id;
        Decl           : out Node_Id;
!       Fnam           : out Entity_Id);
     --  Build function for Input attribute for record type or for an elementary
     --  type (the latter is used only in the case where a user-defined Read
     --  routine is defined, since, in other cases, Input calls the appropriate
!    --  runtime library routine directly).
  
     procedure Build_Record_Or_Elementary_Output_Procedure
       (Loc  : Source_Ptr;
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_tss.adb gcc-11.1.0/gcc/ada/exp_tss.adb
*** gcc-10.3.0/gcc/ada/exp_tss.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_tss.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Tss is
*** 147,173 ****
       (Typ : Entity_Id;
        Nam : TSS_Name_Type) return Entity_Id
     is
!       Btyp : Entity_Id := Typ;
        Proc : Entity_Id;
  
     begin
!       loop
!          Btyp := Base_Type (Btyp);
!          Proc := TSS (Btyp, Nam);
  
!          exit when Present (Proc)
!            or else not Is_Derived_Type (Btyp);
  
!          --  If Typ is a derived type, it may inherit attributes from some
!          --  ancestor.
  
!          Btyp := Etype (Btyp);
!       end loop;
  
!       if No (Proc) then
  
!          --  If nothing else, use the TSS of the root type
  
           Proc := TSS (Base_Type (Underlying_Type (Typ)), Nam);
        end if;
  
--- 147,181 ----
       (Typ : Entity_Id;
        Nam : TSS_Name_Type) return Entity_Id
     is
!       Btyp : Entity_Id;
        Proc : Entity_Id;
  
     begin
!       --  If Typ is a private type, look at the full view
  
!       if Is_Private_Type (Typ) and then Present (Full_View (Typ)) then
!          Btyp := Base_Type (Full_View (Typ));
!       else
!          Btyp := Base_Type (Typ);
!       end if;
  
!       Proc := TSS (Btyp, Nam);
  
!       --  If Typ is a derived type, it may inherit attributes from an ancestor
  
!       if No (Proc) and then Is_Derived_Type (Btyp) then
!          if not Derivation_Too_Early_To_Inherit (Btyp, Nam) then
!             Proc := Find_Inherited_TSS (Etype (Btyp), Nam);
!          elsif Is_Derived_Type (Etype (Btyp)) then
!             --  Skip one link in the derivation chain
!             Proc := Find_Inherited_TSS
!                       (Etype (Base_Type (Etype (Btyp))), Nam);
!          end if;
!       end if;
  
!       --  If nothing else, use the TSS of the root type
  
+       if No (Proc) then
           Proc := TSS (Base_Type (Underlying_Type (Typ)), Nam);
        end if;
  
*************** package body Exp_Tss is
*** 289,300 ****
                    then
                       exit;
  
!                   elsif Ekind_In (Etype (E1),
!                           E_Anonymous_Access_Subprogram_Type,
!                           E_Anonymous_Access_Protected_Subprogram_Type)
!                     and then Ekind_In (Etype (E2),
!                                E_Anonymous_Access_Subprogram_Type,
!                                E_Anonymous_Access_Protected_Subprogram_Type)
                      and then not Conforming_Types
                                     (Etype (E1), Etype (E2), Fully_Conformant)
                    then
--- 297,308 ----
                    then
                       exit;
  
!                   elsif Ekind (Etype (E1)) in
!                           E_Anonymous_Access_Subprogram_Type |
!                           E_Anonymous_Access_Protected_Subprogram_Type
!                     and then Ekind (Etype (E2)) in
!                                E_Anonymous_Access_Subprogram_Type |
!                                E_Anonymous_Access_Protected_Subprogram_Type
                      and then not Conforming_Types
                                     (Etype (E1), Etype (E2), Fully_Conformant)
                    then
*************** package body Exp_Tss is
*** 491,538 ****
                 Subp := Node (Elmt);
  
                 --  For stream subprograms, the TSS entity may be a renaming-
-                --  as-body of an already generated entity. Use that one rather
-                --  the one introduced by the renaming, which is an artifact of
-                --  current stream handling.
- 
-                if Nkind (Parent (Parent (Subp))) =
-                                            N_Subprogram_Renaming_Declaration
-                  and then
-                    Present (Corresponding_Spec (Parent (Parent (Subp))))
-                then
-                   return Corresponding_Spec (Parent (Parent (Subp)));
-                else
-                   return Subp;
-                end if;
- 
-             else
-                Next_Elmt (Elmt);
-             end if;
-          end loop;
-       end if;
- 
-       return Empty;
-    end TSS;
- 
-    function TSS (Typ : Entity_Id; Nam : Name_Id) return Entity_Id is
-       FN   : constant Node_Id := Freeze_Node (Typ);
-       Elmt : Elmt_Id;
-       Subp : Entity_Id;
- 
-    begin
-       if No (FN) then
-          return Empty;
- 
-       elsif No (TSS_Elist (FN)) then
-          return Empty;
- 
-       else
-          Elmt := First_Elmt (TSS_Elist (FN));
-          while Present (Elmt) loop
-             if Chars (Node (Elmt)) = Nam then
-                Subp := Node (Elmt);
- 
-                --  For stream subprograms, the TSS entity may be a renaming-
                 --  as-body of an already generated entity. Use that one rather
                 --  the one introduced by the renaming, which is an artifact of
                 --  current stream handling.
--- 499,504 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_tss.ads gcc-11.1.0/gcc/ada/exp_tss.ads
*** gcc-10.3.0/gcc/ada/exp_tss.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_tss.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Tss is
*** 94,99 ****
--- 94,100 ----
     TSS_Stream_Output      : constant TNT := "SO";  -- Stream Output attribute
     TSS_Stream_Read        : constant TNT := "SR";  -- Stream Read attribute
     TSS_Stream_Write       : constant TNT := "SW";  -- Stream Write attribute
+    TSS_Put_Image          : constant TNT := "PI";  -- Put_Image attribute
     TSS_To_Any             : constant TNT := "TA";  -- PolyORB/DSA To_Any
     TSS_TypeCode           : constant TNT := "TC";  -- PolyORB/DSA TypeCode
  
*************** package Exp_Tss is
*** 116,121 ****
--- 117,123 ----
        TSS_Stream_Output,
        TSS_Stream_Read,
        TSS_Stream_Write,
+       TSS_Put_Image,
        TSS_To_Any,
        TSS_TypeCode);
  
*************** package Exp_Tss is
*** 168,179 ****
     --  be explicitly frozen, so the N_Freeze_Entity node always exists).
  
     function TSS (Typ : Entity_Id; Nam : TSS_Name_Type) return Entity_Id;
!    --  Finds the TSS with the given name associated with the given type
!    --  If no such TSS exists, then Empty is returned;
! 
!    function TSS (Typ : Entity_Id; Nam : Name_Id) return Entity_Id;
!    --  Finds the TSS with the given name associated with the given type. If
!    --  no such TSS exists, then Empty is returned.
  
     function Same_TSS (E1, E2 : Entity_Id) return Boolean;
     --  Returns True if E1 and E2 are the same kind of TSS, even if the names
--- 170,177 ----
     --  be explicitly frozen, so the N_Freeze_Entity node always exists).
  
     function TSS (Typ : Entity_Id; Nam : TSS_Name_Type) return Entity_Id;
!    --  Finds the TSS with the given name associated with the given type.
!    --  If no such TSS exists, then Empty is returned.
  
     function Same_TSS (E1, E2 : Entity_Id) return Boolean;
     --  Returns True if E1 and E2 are the same kind of TSS, even if the names
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_unst.adb gcc-11.1.0/gcc/ada/exp_unst.adb
*** gcc-10.3.0/gcc/ada/exp_unst.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_unst.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2014-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2014-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Unst is
*** 251,268 ****
     -----------------------
  
     function Needs_Fat_Pointer (E : Entity_Id) return Boolean is
!       Typ : Entity_Id;
     begin
!       if Is_Formal (E) then
!          Typ := Etype (E);
!          if Is_Private_Type (Typ) and then Present (Full_View (Typ)) then
!             Typ := Full_View (Typ);
!          end if;
! 
!          return Is_Array_Type (Typ) and then not Is_Constrained (Typ);
!       else
!          return False;
!       end if;
     end Needs_Fat_Pointer;
  
     ----------------
--- 251,259 ----
     -----------------------
  
     function Needs_Fat_Pointer (E : Entity_Id) return Boolean is
!       Typ : constant Entity_Id := Get_Fullest_View (Etype (E));
     begin
!       return Is_Array_Type (Typ) and then not Is_Constrained (Typ);
     end Needs_Fat_Pointer;
  
     ----------------
*************** package body Exp_Unst is
*** 282,288 ****
           --  has been scanned at this point, and thus has an entry in the
           --  subprogram table.
  
!          if E = Sub and then Convention (E) = Convention_Protected then
              E := Protected_Body_Subprogram (E);
           end if;
  
--- 273,279 ----
           --  has been scanned at this point, and thus has an entry in the
           --  subprogram table.
  
!          if E = Sub and then Present (Protected_Body_Subprogram (E)) then
              E := Protected_Body_Subprogram (E);
           end if;
  
*************** package body Exp_Unst is
*** 475,495 ****
              Callee : Entity_Id;
  
              procedure Check_Static_Type
!               (T                : Entity_Id;
                 N                : Node_Id;
                 DT               : in out Boolean;
                 Check_Designated : Boolean := False);
!             --  Given a type T, checks if it is a static type defined as a type
!             --  with no dynamic bounds in sight. If so, the only action is to
!             --  set Is_Static_Type True for T. If T is not a static type, then
!             --  all types with dynamic bounds associated with T are detected,
!             --  and their bounds are marked as uplevel referenced if not at the
!             --  library level, and DT is set True. If N is specified, it's the
!             --  node that will need to be replaced. If not specified, it means
!             --  we can't do a replacement because the bound is implicit.
  
!             --  If Check_Designated is True and T or its full view is an access
!             --  type, check whether the designated type has dynamic bounds.
  
              procedure Note_Uplevel_Ref
                (E      : Entity_Id;
--- 466,488 ----
              Callee : Entity_Id;
  
              procedure Check_Static_Type
!               (In_T             : Entity_Id;
                 N                : Node_Id;
                 DT               : in out Boolean;
                 Check_Designated : Boolean := False);
!             --  Given a type In_T, checks if it is a static type defined as
!             --  a type with no dynamic bounds in sight. If so, the only
!             --  action is to set Is_Static_Type True for In_T. If In_T is
!             --  not a static type, then all types with dynamic bounds
!             --  associated with In_T are detected, and their bounds are
!             --  marked as uplevel referenced if not at the library level,
!             --  and DT is set True. If N is specified, it's the node that
!             --  will need to be replaced. If not specified, it means we
!             --  can't do a replacement because the bound is implicit.
  
!             --  If Check_Designated is True and In_T or its full view
!             --  is an access type, check whether the designated type
!             --  has dynamic bounds.
  
              procedure Note_Uplevel_Ref
                (E      : Entity_Id;
*************** package body Exp_Unst is
*** 509,519 ****
              -----------------------
  
              procedure Check_Static_Type
!               (T                : Entity_Id;
                 N                : Node_Id;
                 DT               : in out Boolean;
                 Check_Designated : Boolean := False)
              is
                 procedure Note_Uplevel_Bound (N : Node_Id; Ref : Node_Id);
                 --  N is the bound of a dynamic type. This procedure notes that
                 --  this bound is uplevel referenced, it can handle references
--- 502,514 ----
              -----------------------
  
              procedure Check_Static_Type
!               (In_T             : Entity_Id;
                 N                : Node_Id;
                 DT               : in out Boolean;
                 Check_Designated : Boolean := False)
              is
+                T : constant Entity_Id := Get_Fullest_View (In_T);
+ 
                 procedure Note_Uplevel_Bound (N : Node_Id; Ref : Node_Id);
                 --  N is the bound of a dynamic type. This procedure notes that
                 --  this bound is uplevel referenced, it can handle references
*************** package body Exp_Unst is
*** 550,557 ****
  
                    --  Attribute or indexed component case
  
!                   elsif Nkind_In (N, N_Attribute_Reference,
!                                      N_Indexed_Component)
                    then
                       Note_Uplevel_Bound (Prefix (N), Ref);
  
--- 545,552 ----
  
                    --  Attribute or indexed component case
  
!                   elsif Nkind (N) in
!                           N_Attribute_Reference | N_Indexed_Component
                    then
                       Note_Uplevel_Bound (Prefix (N), Ref);
  
*************** package body Exp_Unst is
*** 605,612 ****
  
                    --  Explicit dereference and selected component case
  
!                   elsif Nkind_In (N, N_Explicit_Dereference,
!                                      N_Selected_Component)
                    then
                       Note_Uplevel_Bound (Prefix (N), Ref);
  
--- 600,607 ----
  
                    --  Explicit dereference and selected component case
  
!                   elsif Nkind (N) in
!                           N_Explicit_Dereference | N_Selected_Component
                    then
                       Note_Uplevel_Bound (Prefix (N), Ref);
  
*************** package body Exp_Unst is
*** 790,796 ****
                 then
                    return;
  
!                elsif Ekind_In (Callee, E_Entry, E_Entry_Family) then
                    return;
                 end if;
  
--- 785,791 ----
                 then
                    return;
  
!                elsif Ekind (Callee) in E_Entry | E_Entry_Family then
                    return;
                 end if;
  
*************** package body Exp_Unst is
*** 841,849 ****
  
                 --  If we marked this reachable because it's in a synchronized
                 --  unit, we have to mark all enclosing subprograms as reachable
!                --  as well.
  
!                if In_Synchronized_Unit (E) then
                    declare
                       S : Entity_Id := E;
  
--- 836,848 ----
  
                 --  If we marked this reachable because it's in a synchronized
                 --  unit, we have to mark all enclosing subprograms as reachable
!                --  as well. We do the same for subprograms with Address_Taken,
!                --  because otherwise we can run into problems with looking at
!                --  enclosing subprograms in Subps.Table due to their being
!                --  unreachable (the Subp_Index of unreachable subps is later
!                --  set to zero and their entry in Subps.Table is removed).
  
!                if In_Synchronized_Unit (E) or else Address_Taken (E) then
                    declare
                       S : Entity_Id := E;
  
*************** package body Exp_Unst is
*** 878,885 ****
                       --  outside the nested structure do not affect us.
  
                       if Scope_Within (Ent, Subp)
!                         and then Is_Subprogram (Ent)
!                         and then not Is_Imported (Ent)
                       then
                          Append_Unique_Call ((N, Current_Subprogram, Ent));
                       end if;
--- 877,884 ----
                       --  outside the nested structure do not affect us.
  
                       if Scope_Within (Ent, Subp)
!                        and then Is_Subprogram (Ent)
!                        and then not Is_Imported (Ent)
                       then
                          Append_Unique_Call ((N, Current_Subprogram, Ent));
                       end if;
*************** package body Exp_Unst is
*** 894,899 ****
--- 893,900 ----
                       DT     : Boolean := False;
                       Formal : Node_Id;
                       Subp   : Entity_Id;
+                      F_Type : Entity_Id;
+                      A_Type : Entity_Id;
  
                    begin
                       if Nkind (Name (N)) = N_Explicit_Dereference then
*************** package body Exp_Unst is
*** 904,915 ****
  
                       Actual := First_Actual (N);
                       Formal := First_Formal_With_Extras (Subp);
                       while Present (Actual) loop
!                         if Is_Array_Type (Etype (Formal))
!                           and then not Is_Constrained (Etype (Formal))
!                           and then Is_Constrained (Etype (Actual))
                          then
!                            Check_Static_Type (Etype (Actual), Empty, DT);
                          end if;
  
                          Next_Actual (Actual);
--- 905,920 ----
  
                       Actual := First_Actual (N);
                       Formal := First_Formal_With_Extras (Subp);
+ 
                       while Present (Actual) loop
!                         F_Type := Get_Fullest_View (Etype (Formal));
!                         A_Type := Get_Fullest_View (Etype (Actual));
! 
!                         if Is_Array_Type (F_Type)
!                           and then not Is_Constrained (F_Type)
!                           and then Is_Constrained (A_Type)
                          then
!                            Check_Static_Type (A_Type, Empty, DT);
                          end if;
  
                          Next_Actual (Actual);
*************** package body Exp_Unst is
*** 1042,1059 ****
                             --  handled during full traversal. Note that if the
                             --  nominal subtype of the prefix is unconstrained,
                             --  the bound must be obtained from the object, not
!                            --  from the (possibly) uplevel reference.
  
!                            if Is_Constrained (Etype (Prefix (N))) then
!                               declare
!                                  DT : Boolean := False;
!                               begin
                                   Check_Static_Type
!                                    (Etype (Prefix (N)), Empty, DT);
!                               end;
  
!                               return OK;
!                            end if;
  
                          when others =>
                             null;
--- 1047,1076 ----
                             --  handled during full traversal. Note that if the
                             --  nominal subtype of the prefix is unconstrained,
                             --  the bound must be obtained from the object, not
!                            --  from the (possibly) uplevel reference. We call
!                            --  Get_Referenced_Object to deal with prefixes that
!                            --  are object renamings (prefixes that are types
!                            --  can be passed and will simply be returned).  But
!                            --  it's also legal to get the bounds from the type
!                            --  of the prefix, so we have to handle both cases.
  
!                            declare
!                               DT : Boolean := False;
! 
!                            begin
!                               if Is_Constrained
!                                 (Etype (Get_Referenced_Object (Prefix (N))))
!                               then
                                   Check_Static_Type
!                                    (Etype (Get_Referenced_Object (Prefix (N))),
!                                     Empty, DT);
!                               end if;
  
!                               if Is_Constrained (Etype (Prefix (N))) then
!                                  Check_Static_Type
!                                    (Etype (Prefix (N)), Empty, DT);
!                               end if;
!                            end;
  
                          when others =>
                             null;
*************** package body Exp_Unst is
*** 1259,1267 ****
                          --  references to global declarations.
  
                         and then
!                          (Ekind_In (Ent, E_Constant,
!                                          E_Loop_Parameter,
!                                          E_Variable)
  
                             --  Formals are interesting, but not if being used
                             --  as mere names of parameters for name notation
--- 1276,1284 ----
                          --  references to global declarations.
  
                         and then
!                          (Ekind (Ent) in E_Constant
!                                        | E_Loop_Parameter
!                                        | E_Variable
  
                             --  Formals are interesting, but not if being used
                             --  as mere names of parameters for name notation
*************** package body Exp_Unst is
*** 2068,2074 ****
                                   --  or else 'Access for unconstrained array
  
                                   if Needs_Fat_Pointer (Ent) then
!                                     Attr := Name_Access;
                                   else
                                      Attr := Name_Address;
                                   end if;
--- 2085,2091 ----
                                   --  or else 'Access for unconstrained array
  
                                   if Needs_Fat_Pointer (Ent) then
!                                     Attr := Name_Unchecked_Access;
                                   else
                                      Attr := Name_Address;
                                   end if;
*************** package body Exp_Unst is
*** 2093,2099 ****
  
                                      Comp := First_Component (STJ.ARECnT);
                                      while Chars (Comp) /= Chars (Ent) loop
!                                        Comp := Next_Component (Comp);
                                      end loop;
  
                                      Rhs :=
--- 2110,2116 ----
  
                                      Comp := First_Component (STJ.ARECnT);
                                      while Chars (Comp) /= Chars (Ent) loop
!                                        Next_Component (Comp);
                                      end loop;
  
                                      Rhs :=
*************** package body Exp_Unst is
*** 2119,2127 ****
                                   --  N_Loop_Parameter_Specification or to
                                   --  an N_Iterator_Specification.
  
!                                  if Nkind_In
!                                       (Ins, N_Iterator_Specification,
!                                             N_Loop_Parameter_Specification)
                                   then
                                      --  Quantified expression are rewritten as
                                      --  loops during expansion.
--- 2136,2144 ----
                                   --  N_Loop_Parameter_Specification or to
                                   --  an N_Iterator_Specification.
  
!                                  if Nkind (Ins) in
!                                       N_Iterator_Specification |
!                                       N_Loop_Parameter_Specification
                                   then
                                      --  Quantified expression are rewritten as
                                      --  loops during expansion.
*************** package body Exp_Unst is
*** 2354,2362 ****
                 --  processing this dereference
  
                 if Opt.Modify_Tree_For_C
!                  and then Nkind_In (Parent (UPJ.Ref),
!                             N_Type_Conversion,
!                             N_Unchecked_Type_Conversion)
                 then
                    Force_Evaluation (UPJ.Ref, Mode => Strict);
                 end if;
--- 2371,2378 ----
                 --  processing this dereference
  
                 if Opt.Modify_Tree_For_C
!                  and then Nkind (Parent (UPJ.Ref)) in
!                             N_Type_Conversion | N_Unchecked_Type_Conversion
                 then
                    Force_Evaluation (UPJ.Ref, Mode => Strict);
                 end if;
*************** package body Exp_Unst is
*** 2542,2548 ****
  
        function Search_Subprograms (N : Node_Id) return Traverse_Result is
        begin
!          if Nkind_In (N, N_Subprogram_Body, N_Subprogram_Body_Stub) then
              declare
                 Spec_Id : constant Entity_Id := Unique_Defining_Entity (N);
  
--- 2558,2564 ----
  
        function Search_Subprograms (N : Node_Id) return Traverse_Result is
        begin
!          if Nkind (N) in N_Subprogram_Body | N_Subprogram_Body_Stub then
              declare
                 Spec_Id : constant Entity_Id := Unique_Defining_Entity (N);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_unst.ads gcc-11.1.0/gcc/ada/exp_unst.ads
*** gcc-10.3.0/gcc/ada/exp_unst.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_unst.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2014-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2014-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_util.adb gcc-11.1.0/gcc/ada/exp_util.adb
*** gcc-10.3.0/gcc/ada/exp_util.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_util.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Einfo;    use Einfo;
*** 32,38 ****
  with Elists;   use Elists;
  with Errout;   use Errout;
  with Exp_Aggr; use Exp_Aggr;
- with Exp_Ch2;  use Exp_Ch2;
  with Exp_Ch6;  use Exp_Ch6;
  with Exp_Ch7;  use Exp_Ch7;
  with Exp_Ch11; use Exp_Ch11;
--- 32,37 ----
*************** with Sem_Util; use Sem_Util;
*** 61,70 ****
  with Snames;   use Snames;
  with Stand;    use Stand;
  with Stringt;  use Stringt;
- with Targparm; use Targparm;
  with Tbuild;   use Tbuild;
  with Ttypes;   use Ttypes;
- with Urealp;   use Urealp;
  with Validsw;  use Validsw;
  
  with GNAT.HTable;
--- 60,67 ----
*************** package body Exp_Util is
*** 170,175 ****
--- 167,182 ----
     --  Determine whether pragma Default_Initial_Condition denoted by Prag has
     --  an assertion expression that should be verified at run time.
  
+    function Is_Uninitialized_Aggregate
+      (Exp : Node_Id;
+       T   : Entity_Id) return Boolean;
+    --  Determine whether an array aggregate used in an object declaration
+    --  is uninitialized, when the aggregate is declared with a box and
+    --  the component type has no default value. Such an aggregate can be
+    --  optimized away to prevent the copying of uninitialized data, and
+    --  the bounds of the aggregate can be propagated directly to the
+    --  object declaration.
+ 
     function Make_CW_Equivalent_Type
       (T : Entity_Id;
        E : Node_Id) return Entity_Id;
*************** package body Exp_Util is
*** 224,229 ****
--- 231,240 ----
     --  level, and False otherwise. Nested_Constructs is True when any nested
     --  packages declared in L must be processed, and False otherwise.
  
+    function Side_Effect_Free_Attribute (Name : Name_Id) return Boolean;
+    --  Return True if the evaluation of the given attribute is considered
+    --  side-effect free, independently of its prefix and expressions.
+ 
     -------------------------------------
     -- Activate_Atomic_Synchronization --
     -------------------------------------
*************** package body Exp_Util is
*** 321,327 ****
        declare
           Loc : constant Source_Ptr := Sloc (N);
           T   : constant Entity_Id  := Etype (N);
-          Ti  : Entity_Id;
  
        begin
           --  Defend against a call where the argument has no type, or has a
--- 332,337 ----
*************** package body Exp_Util is
*** 353,367 ****
           --  value of type T.
  
           if Nonzero_Is_True (T) or else Has_Non_Standard_Rep (T) then
-             if Esize (T) <= Esize (Standard_Integer) then
-                Ti := Standard_Integer;
-             else
-                Ti := Standard_Long_Long_Integer;
-             end if;
- 
              Rewrite (N,
                Make_Op_Ne (Loc,
!                 Left_Opnd  => Unchecked_Convert_To (Ti, N),
                  Right_Opnd =>
                    Make_Attribute_Reference (Loc,
                      Attribute_Name => Name_Enum_Rep,
--- 363,373 ----
           --  value of type T.
  
           if Nonzero_Is_True (T) or else Has_Non_Standard_Rep (T) then
              Rewrite (N,
                Make_Op_Ne (Loc,
!                 Left_Opnd  =>
!                   Unchecked_Convert_To
!                     (Integer_Type_For (Esize (T), Uns => False), N),
                  Right_Opnd =>
                    Make_Attribute_Reference (Loc,
                      Attribute_Name => Name_Enum_Rep,
*************** package body Exp_Util is
*** 473,481 ****
        end if;
     end Append_Freeze_Actions;
  
!    --------------------------------------
!    -- Attr_Constrained_Statically_True --
!    --------------------------------------
  
     function Attribute_Constrained_Static_Value (Pref : Node_Id) return Boolean
     is
--- 479,487 ----
        end if;
     end Append_Freeze_Actions;
  
!    ----------------------------------------
!    -- Attribute_Constrained_Static_Value --
!    ----------------------------------------
  
     function Attribute_Constrained_Static_Value (Pref : Node_Id) return Boolean
     is
*************** package body Exp_Util is
*** 537,543 ****
  
        if Is_Entity_Name (Pref) then
           declare
!             Ent : constant Entity_Id   := Entity (Pref);
              Res : Boolean;
  
           begin
--- 543,549 ----
  
        if Is_Entity_Name (Pref) then
           declare
!             Ent : constant Entity_Id := Entity (Pref);
              Res : Boolean;
  
           begin
*************** package body Exp_Util is
*** 735,746 ****
  
        --  Local variables
  
!       Desig_Typ    : Entity_Id;
!       Expr         : Node_Id;
!       Needs_Fin    : Boolean;
!       Pool_Id      : Entity_Id;
!       Proc_To_Call : Node_Id := Empty;
!       Ptr_Typ      : Entity_Id;
  
     --  Start of processing for Build_Allocate_Deallocate_Proc
  
--- 741,753 ----
  
        --  Local variables
  
!       Desig_Typ                : Entity_Id;
!       Expr                     : Node_Id;
!       Needs_Fin                : Boolean;
!       Pool_Id                  : Entity_Id;
!       Proc_To_Call             : Node_Id := Empty;
!       Ptr_Typ                  : Entity_Id;
!       Use_Secondary_Stack_Pool : Boolean;
  
     --  Start of processing for Build_Allocate_Deallocate_Proc
  
*************** package body Exp_Util is
*** 805,821 ****
           Desig_Typ := Corresponding_Record_Type (Desig_Typ);
        end if;
  
        --  Do not process allocations / deallocations without a pool
  
        if No (Pool_Id) then
           return;
  
        --  Do not process allocations on / deallocations from the secondary
!       --  stack.
  
!       elsif Is_RTE (Pool_Id, RE_SS_Pool)
!         or else (Nkind (Expr) = N_Allocator
!                   and then Is_RTE (Storage_Pool (Expr), RE_SS_Pool))
        then
           return;
  
--- 812,833 ----
           Desig_Typ := Corresponding_Record_Type (Desig_Typ);
        end if;
  
+       Use_Secondary_Stack_Pool :=
+         Is_RTE (Pool_Id, RE_SS_Pool)
+           or else (Nkind (Expr) = N_Allocator
+                     and then Is_RTE (Storage_Pool (Expr), RE_SS_Pool));
+ 
        --  Do not process allocations / deallocations without a pool
  
        if No (Pool_Id) then
           return;
  
        --  Do not process allocations on / deallocations from the secondary
!       --  stack, except for access types used to implement indirect temps.
  
!       elsif Use_Secondary_Stack_Pool
!         and then not Old_Attr_Util.Indirect_Temps
!                        .Is_Access_Type_For_Indirect_Temp (Ptr_Typ)
        then
           return;
  
*************** package body Exp_Util is
*** 952,958 ****
           Append_To (Actuals, New_Occurrence_Of (Addr_Id, Loc));
           Append_To (Actuals, New_Occurrence_Of (Size_Id, Loc));
  
!          if Is_Allocate or else not Is_Class_Wide_Type (Desig_Typ) then
              Append_To (Actuals, New_Occurrence_Of (Alig_Id, Loc));
  
           --  For deallocation of class-wide types we obtain the value of
--- 964,972 ----
           Append_To (Actuals, New_Occurrence_Of (Addr_Id, Loc));
           Append_To (Actuals, New_Occurrence_Of (Size_Id, Loc));
  
!          if (Is_Allocate or else not Is_Class_Wide_Type (Desig_Typ))
!            and then not Use_Secondary_Stack_Pool
!          then
              Append_To (Actuals, New_Occurrence_Of (Alig_Id, Loc));
  
           --  For deallocation of class-wide types we obtain the value of
*************** package body Exp_Util is
*** 968,973 ****
--- 982,990 ----
              --  into the code that reads the value of alignment from the TSD
              --  (see Expand_N_Attribute_Reference)
  
+             --  In the Use_Secondary_Stack_Pool case, Alig_Id is not
+             --  passed in and therefore must not be referenced.
+ 
              Append_To (Actuals,
                Unchecked_Convert_To (RTE (RE_Storage_Offset),
                  Make_Attribute_Reference (Loc,
*************** package body Exp_Util is
*** 1117,1171 ****
           --  Create a custom Allocate / Deallocate routine which has identical
           --  profile to that of System.Storage_Pools.
  
!          Insert_Action (N,
!            Make_Subprogram_Body (Loc,
!              Specification              =>
! 
!                --  procedure Pnn
! 
!                Make_Procedure_Specification (Loc,
!                  Defining_Unit_Name       => Proc_Id,
!                  Parameter_Specifications => New_List (
! 
!                   --  P : Root_Storage_Pool
! 
!                    Make_Parameter_Specification (Loc,
!                      Defining_Identifier => Make_Temporary (Loc, 'P'),
!                      Parameter_Type      =>
!                        New_Occurrence_Of (RTE (RE_Root_Storage_Pool), Loc)),
! 
!                   --  A : [out] Address
  
!                    Make_Parameter_Specification (Loc,
!                      Defining_Identifier => Addr_Id,
!                      Out_Present         => Is_Allocate,
!                      Parameter_Type      =>
!                        New_Occurrence_Of (RTE (RE_Address), Loc)),
  
!                   --  S : Storage_Count
  
!                    Make_Parameter_Specification (Loc,
!                      Defining_Identifier => Size_Id,
!                      Parameter_Type      =>
!                        New_Occurrence_Of (RTE (RE_Storage_Count), Loc)),
  
!                   --  L : Storage_Count
  
!                    Make_Parameter_Specification (Loc,
!                      Defining_Identifier => Alig_Id,
!                      Parameter_Type      =>
!                        New_Occurrence_Of (RTE (RE_Storage_Count), Loc)))),
  
!              Declarations               => No_List,
  
!              Handled_Statement_Sequence =>
!                Make_Handled_Sequence_Of_Statements (Loc,
!                  Statements => New_List (
!                    Make_Procedure_Call_Statement (Loc,
!                      Name                   =>
!                        New_Occurrence_Of (Proc_To_Call, Loc),
!                      Parameter_Associations => Actuals)))),
!            Suppress => All_Checks);
  
           --  The newly generated Allocate / Deallocate becomes the default
           --  procedure to call when the back end processes the allocation /
--- 1134,1200 ----
           --  Create a custom Allocate / Deallocate routine which has identical
           --  profile to that of System.Storage_Pools.
  
!          declare
!             --  P : Root_Storage_Pool
!             function Pool_Param return Node_Id is (
!               Make_Parameter_Specification (Loc,
!                 Defining_Identifier => Make_Temporary (Loc, 'P'),
!                 Parameter_Type      =>
!                   New_Occurrence_Of (RTE (RE_Root_Storage_Pool), Loc)));
  
!             --  A : [out] Address
!             function Address_Param return Node_Id is (
!               Make_Parameter_Specification (Loc,
!                 Defining_Identifier => Addr_Id,
!                 Out_Present         => Is_Allocate,
!                 Parameter_Type      =>
!                   New_Occurrence_Of (RTE (RE_Address), Loc)));
  
!             --  S : Storage_Count
!             function Size_Param return Node_Id is (
!               Make_Parameter_Specification (Loc,
!                 Defining_Identifier => Size_Id,
!                 Parameter_Type      =>
!                   New_Occurrence_Of (RTE (RE_Storage_Count), Loc)));
  
!             --  L : Storage_Count
!             function Alignment_Param return Node_Id is (
!               Make_Parameter_Specification (Loc,
!                 Defining_Identifier => Alig_Id,
!                 Parameter_Type      =>
!                   New_Occurrence_Of (RTE (RE_Storage_Count), Loc)));
  
!             Formal_Params : List_Id;
!          begin
!             if Use_Secondary_Stack_Pool then
!                --  Gigi expects a different profile in the Secondary_Stack_Pool
!                --  case. There must be no uses of the two missing formals
!                --  (i.e., Pool_Param and Alignment_Param) in this case.
!                Formal_Params := New_List (Address_Param, Size_Param);
!             else
!                Formal_Params := New_List (
!                  Pool_Param, Address_Param, Size_Param, Alignment_Param);
!             end if;
  
!             Insert_Action (N,
!               Make_Subprogram_Body (Loc,
!                 Specification              =>
!                   --  procedure Pnn
!                   Make_Procedure_Specification (Loc,
!                     Defining_Unit_Name       => Proc_Id,
!                     Parameter_Specifications => Formal_Params),
  
!                 Declarations               => No_List,
  
!                 Handled_Statement_Sequence =>
!                   Make_Handled_Sequence_Of_Statements (Loc,
!                     Statements => New_List (
!                       Make_Procedure_Call_Statement (Loc,
!                         Name                   =>
!                           New_Occurrence_Of (Proc_To_Call, Loc),
!                         Parameter_Associations => Actuals)))),
!               Suppress => All_Checks);
!          end;
  
           --  The newly generated Allocate / Deallocate becomes the default
           --  procedure to call when the back end processes the allocation /
*************** package body Exp_Util is
*** 1292,1297 ****
--- 1321,1327 ----
                 --  of the type. In the case of an inherited condition for an
                 --  overriding operation, both the operation and the function
                 --  are given by primitive wrappers.
+                --  Move this check to sem???
  
                 if Ekind (New_E) = E_Function
                   and then Is_Primitive_Wrapper (New_E)
*************** package body Exp_Util is
*** 1322,1327 ****
--- 1352,1358 ----
  
              --  Check that there are no calls left to abstract operations if
              --  the current subprogram is not abstract.
+             --  Move this check to sem???
  
              if Nkind (Parent (N)) = N_Function_Call
                and then N = Name (Parent (N))
*************** package body Exp_Util is
*** 1413,1433 ****
     --------------------
  
     function Build_DIC_Call
!      (Loc    : Source_Ptr;
!       Obj_Id : Entity_Id;
!       Typ    : Entity_Id) return Node_Id
     is
        Proc_Id    : constant Entity_Id := DIC_Procedure (Typ);
        Formal_Typ : constant Entity_Id := Etype (First_Formal (Proc_Id));
  
     begin
        return
          Make_Procedure_Call_Statement (Loc,
            Name                   => New_Occurrence_Of (Proc_Id, Loc),
            Parameter_Associations => New_List (
              Make_Unchecked_Type_Conversion (Loc,
                Subtype_Mark => New_Occurrence_Of (Formal_Typ, Loc),
!               Expression   => New_Occurrence_Of (Obj_Id, Loc))));
     end Build_DIC_Call;
  
     ------------------------------
--- 1444,1470 ----
     --------------------
  
     function Build_DIC_Call
!      (Loc      : Source_Ptr;
!       Obj_Name : Node_Id;
!       Typ      : Entity_Id) return Node_Id
     is
        Proc_Id    : constant Entity_Id := DIC_Procedure (Typ);
        Formal_Typ : constant Entity_Id := Etype (First_Formal (Proc_Id));
  
     begin
+       --  The DIC procedure has a null body if assertions are disabled or
+       --  Assertion_Policy Ignore is in effect. In that case, it would be
+       --  nice to generate a null statement instead of a call to the DIC
+       --  procedure, but doing that seems to interfere with the determination
+       --  of ECRs (early call regions) in SPARK. ???
+ 
        return
          Make_Procedure_Call_Statement (Loc,
            Name                   => New_Occurrence_Of (Proc_Id, Loc),
            Parameter_Associations => New_List (
              Make_Unchecked_Type_Conversion (Loc,
                Subtype_Mark => New_Occurrence_Of (Formal_Typ, Loc),
!               Expression   => Obj_Name)));
     end Build_DIC_Call;
  
     ------------------------------
*************** package body Exp_Util is
*** 1439,1447 ****
     --  Ghost mode.
  
     procedure Build_DIC_Procedure_Body
!      (Typ        : Entity_Id;
!       For_Freeze : Boolean := False)
     is
        procedure Add_DIC_Check
          (DIC_Prag : Node_Id;
           DIC_Expr : Node_Id;
--- 1476,1488 ----
     --  Ghost mode.
  
     procedure Build_DIC_Procedure_Body
!      (Typ         : Entity_Id;
!       Partial_DIC : Boolean := False)
     is
+       Pragmas_Seen : Elist_Id := No_Elist;
+       --  This list contains all DIC pragmas processed so far. The list is used
+       --  to avoid redundant Default_Initial_Condition checks.
+ 
        procedure Add_DIC_Check
          (DIC_Prag : Node_Id;
           DIC_Expr : Node_Id;
*************** package body Exp_Util is
*** 1461,1484 ****
        --  pragma. All generated code is added to list Stmts.
  
        procedure Add_Inherited_Tagged_DIC
!         (DIC_Prag  : Node_Id;
!          Par_Typ   : Entity_Id;
!          Deriv_Typ : Entity_Id;
!          Stmts     : in out List_Id);
        --  Add a runtime check to verify assertion expression DIC_Expr of
!       --  inherited pragma DIC_Prag. This routine applies class-wide pre- and
!       --  postcondition-like runtime semantics to the check. Par_Typ is the
!       --  parent type whose DIC pragma is being inherited. Deriv_Typ is the
!       --  derived type inheriting the DIC pragma. All generated code is added
!       --  to list Stmts.
  
        procedure Add_Own_DIC
          (DIC_Prag : Node_Id;
           DIC_Typ  : Entity_Id;
           Stmts    : in out List_Id);
        --  Add a runtime check to verify the assertion expression of pragma
!       --  DIC_Prag. DIC_Typ is the owner of the DIC pragma. All generated code
!       --  is added to list Stmts.
  
        -------------------
        -- Add_DIC_Check --
--- 1502,1547 ----
        --  pragma. All generated code is added to list Stmts.
  
        procedure Add_Inherited_Tagged_DIC
!         (DIC_Prag : Node_Id;
!          Expr     : Node_Id;
!          Stmts    : in out List_Id);
        --  Add a runtime check to verify assertion expression DIC_Expr of
!       --  inherited pragma DIC_Prag. This routine applies class-wide pre-
!       --  and postcondition-like runtime semantics to the check. Expr is
!       --  the assertion expression after substitition has been performed
!       --  (via Replace_References). All generated code is added to list Stmts.
! 
!       procedure Add_Inherited_DICs
!         (T         : Entity_Id;
!          Priv_Typ  : Entity_Id;
!          Full_Typ  : Entity_Id;
!          Obj_Id    : Entity_Id;
!          Checks    : in out List_Id);
!       --  Generate a DIC check for each inherited Default_Initial_Condition
!       --  coming from all parent types of type T. Priv_Typ and Full_Typ denote
!       --  the partial and full view of the parent type. Obj_Id denotes the
!       --  entity of the _object formal parameter of the DIC procedure. All
!       --  created checks are added to list Checks.
  
        procedure Add_Own_DIC
          (DIC_Prag : Node_Id;
           DIC_Typ  : Entity_Id;
+          Obj_Id   : Entity_Id;
           Stmts    : in out List_Id);
        --  Add a runtime check to verify the assertion expression of pragma
!       --  DIC_Prag. DIC_Typ is the owner of the DIC pragma. Obj_Id is the
!       --  object to substitute in the assertion expression for any references
!       --  to the current instance of the type All generated code is added to
!       --  list Stmts.
! 
!       procedure Add_Parent_DICs
!         (T      : Entity_Id;
!          Obj_Id : Entity_Id;
!          Checks : in out List_Id);
!       --  Generate a Default_Initial_Condition check for each inherited DIC
!       --  aspect coming from all parent types of type T. Obj_Id denotes the
!       --  entity of the _object formal parameter of the DIC procedure. All
!       --  created checks are added to list Checks.
  
        -------------------
        -- Add_DIC_Check --
*************** package body Exp_Util is
*** 1516,1521 ****
--- 1579,1588 ----
                    Make_Pragma_Argument_Association (Loc,
                      Expression => DIC_Expr))));
           end if;
+ 
+          --  Add the pragma to the list of processed pragmas
+ 
+          Append_New_Elmt (DIC_Prag, Pragmas_Seen);
        end Add_DIC_Check;
  
        -----------------------
*************** package body Exp_Util is
*** 1557,1621 ****
        ------------------------------
  
        procedure Add_Inherited_Tagged_DIC
!         (DIC_Prag  : Node_Id;
!          Par_Typ   : Entity_Id;
!          Deriv_Typ : Entity_Id;
!          Stmts     : in out List_Id)
        is
!          Deriv_Proc : constant Entity_Id := DIC_Procedure (Deriv_Typ);
!          DIC_Args   : constant List_Id   :=
!                         Pragma_Argument_Associations (DIC_Prag);
!          DIC_Arg    : constant Node_Id   := First (DIC_Args);
!          DIC_Expr   : constant Node_Id   := Expression_Copy (DIC_Arg);
!          Par_Proc   : constant Entity_Id := DIC_Procedure (Par_Typ);
  
!          Expr : Node_Id;
  
        begin
!          --  The processing of an inherited DIC assertion expression starts off
!          --  with a copy of the original parent expression where all references
!          --  to the parent type have already been replaced with references to
!          --  the _object formal parameter of the parent type's DIC procedure.
  
!          pragma Assert (Present (DIC_Expr));
!          Expr := New_Copy_Tree (DIC_Expr);
  
!          --  Perform the following substitutions:
  
!          --    * Replace a reference to the _object parameter of the parent
!          --      type's DIC procedure with a reference to the _object parameter
!          --      of the derived types' DIC procedure.
  
!          --    * Replace a reference to a discriminant of the parent type with
!          --      a suitable value from the point of view of the derived type.
  
!          --    * Replace a call to an overridden parent primitive with a call
!          --      to the overriding derived type primitive.
  
!          --    * Replace a call to an inherited parent primitive with a call to
!          --      the internally-generated inherited derived type primitive.
  
!          --  Note that primitives defined in the private part are automatically
!          --  handled by the overriding/inheritance mechanism and do not require
!          --  an extra replacement pass.
  
!          pragma Assert (Present (Deriv_Proc) and then Present (Par_Proc));
  
!          Replace_References
!            (Expr      => Expr,
!             Par_Typ   => Par_Typ,
!             Deriv_Typ => Deriv_Typ,
!             Par_Obj   => First_Formal (Par_Proc),
!             Deriv_Obj => First_Formal (Deriv_Proc));
  
!          --  Once the DIC assertion expression is fully processed, add a check
!          --  to the statements of the DIC procedure.
  
!          Add_DIC_Check
!            (DIC_Prag => DIC_Prag,
!             DIC_Expr => Expr,
!             Stmts    => Stmts);
!       end Add_Inherited_Tagged_DIC;
  
        -----------------
        -- Add_Own_DIC --
--- 1624,1795 ----
        ------------------------------
  
        procedure Add_Inherited_Tagged_DIC
!         (DIC_Prag : Node_Id;
!          Expr     : Node_Id;
!          Stmts    : in out List_Id)
        is
!       begin
!          --  Once the DIC assertion expression is fully processed, add a check
!          --  to the statements of the DIC procedure.
  
!          Add_DIC_Check
!            (DIC_Prag => DIC_Prag,
!             DIC_Expr => Expr,
!             Stmts    => Stmts);
!       end Add_Inherited_Tagged_DIC;
! 
!       ------------------------
!       -- Add_Inherited_DICs --
!       ------------------------
! 
!       procedure Add_Inherited_DICs
!         (T         : Entity_Id;
!          Priv_Typ  : Entity_Id;
!          Full_Typ  : Entity_Id;
!          Obj_Id    : Entity_Id;
!          Checks    : in out List_Id)
!       is
!          Deriv_Typ     : Entity_Id;
!          Expr          : Node_Id;
!          Prag          : Node_Id;
!          Prag_Expr     : Node_Id;
!          Prag_Expr_Arg : Node_Id;
!          Prag_Typ      : Node_Id;
!          Prag_Typ_Arg  : Node_Id;
! 
!          Par_Proc : Entity_Id;
!          --  The "partial" invariant procedure of Par_Typ
! 
!          Par_Typ : Entity_Id;
!          --  The suitable view of the parent type used in the substitution of
!          --  type attributes.
  
        begin
!          if not Present (Priv_Typ) and then not Present (Full_Typ) then
!             return;
!          end if;
  
!          --  When the type inheriting the class-wide invariant is a concurrent
!          --  type, use the corresponding record type because it contains all
!          --  primitive operations of the concurrent type and allows for proper
!          --  substitution.
  
!          if Is_Concurrent_Type (T) then
!             Deriv_Typ := Corresponding_Record_Type (T);
!          else
!             Deriv_Typ := T;
!          end if;
  
!          pragma Assert (Present (Deriv_Typ));
  
!          --  Determine which rep item chain to use. Precedence is given to that
!          --  of the parent type's partial view since it usually carries all the
!          --  class-wide invariants.
  
!          if Present (Priv_Typ) then
!             Prag := First_Rep_Item (Priv_Typ);
!          else
!             Prag := First_Rep_Item (Full_Typ);
!          end if;
  
!          while Present (Prag) loop
!             if Nkind (Prag) = N_Pragma
!               and then Pragma_Name (Prag) = Name_Default_Initial_Condition
!             then
!                --  Nothing to do if the pragma was already processed
  
!                if Contains (Pragmas_Seen, Prag) then
!                   return;
!                end if;
  
!                --  Extract arguments of the Default_Initial_Condition pragma
  
!                Prag_Expr_Arg := First (Pragma_Argument_Associations (Prag));
!                Prag_Expr     := Expression_Copy (Prag_Expr_Arg);
  
!                --  Pick up the implicit second argument of the pragma, which
!                --  indicates the type that the pragma applies to.
  
!                Prag_Typ_Arg  := Next (Prag_Expr_Arg);
!                if Present (Prag_Typ_Arg) then
!                   Prag_Typ := Get_Pragma_Arg (Prag_Typ_Arg);
!                else
!                   Prag_Typ := Empty;
!                end if;
! 
!                --  The pragma applies to the partial view of the parent type
! 
!                if Present (Priv_Typ)
!                  and then Present (Prag_Typ)
!                  and then Entity (Prag_Typ) = Priv_Typ
!                then
!                   Par_Typ := Priv_Typ;
! 
!                --  The pragma applies to the full view of the parent type
! 
!                elsif Present (Full_Typ)
!                  and then Present (Prag_Typ)
!                  and then Entity (Prag_Typ) = Full_Typ
!                then
!                   Par_Typ := Full_Typ;
! 
!                --  Otherwise the pragma does not belong to the parent type and
!                --  should not be considered.
! 
!                else
!                   return;
!                end if;
! 
!                --  Substitute references in the DIC expression that are related
!                --  to the partial type with corresponding references related to
!                --  the derived type (call to Replace_References below).
! 
!                Expr := New_Copy_Tree (Prag_Expr);
! 
!                Par_Proc := Partial_DIC_Procedure (Par_Typ);
! 
!                --  If there's not a partial DIC procedure (such as when a
!                --  full type doesn't have its own DIC, but is inherited from
!                --  a type with DIC), get the full DIC procedure.
! 
!                if not Present (Par_Proc) then
!                   Par_Proc := DIC_Procedure (Par_Typ);
!                end if;
! 
!                Replace_References
!                  (Expr      => Expr,
!                   Par_Typ   => Par_Typ,
!                   Deriv_Typ => Deriv_Typ,
!                   Par_Obj   => First_Formal (Par_Proc),
!                   Deriv_Obj => Obj_Id);
! 
!                --  Why are there different actions depending on whether T is
!                --  tagged? Can these be unified? ???
! 
!                if Is_Tagged_Type (T) then
!                   Add_Inherited_Tagged_DIC
!                     (DIC_Prag  => Prag,
!                      Expr      => Expr,
!                      Stmts     => Checks);
! 
!                else
!                   Add_Inherited_DIC
!                     (DIC_Prag  => Prag,
!                      Par_Typ   => Par_Typ,
!                      Deriv_Typ => Deriv_Typ,
!                      Stmts     => Checks);
!                end if;
! 
!                --  Leave as soon as we get a DIC pragma, since we'll visit
!                --  the pragmas of the parents, so will get to any "inherited"
!                --  pragmas that way.
! 
!                return;
!             end if;
! 
!             Next_Rep_Item (Prag);
!          end loop;
!       end Add_Inherited_DICs;
  
        -----------------
        -- Add_Own_DIC --
*************** package body Exp_Util is
*** 1624,1629 ****
--- 1798,1804 ----
        procedure Add_Own_DIC
          (DIC_Prag : Node_Id;
           DIC_Typ  : Entity_Id;
+          Obj_Id   : Entity_Id;
           Stmts    : in out List_Id)
        is
           DIC_Args : constant List_Id   :=
*************** package body Exp_Util is
*** 1631,1675 ****
           DIC_Arg  : constant Node_Id   := First (DIC_Args);
           DIC_Asp  : constant Node_Id   := Corresponding_Aspect (DIC_Prag);
           DIC_Expr : constant Node_Id   := Get_Pragma_Arg (DIC_Arg);
-          DIC_Proc : constant Entity_Id := DIC_Procedure (DIC_Typ);
-          Obj_Id   : constant Entity_Id := First_Formal (DIC_Proc);
- 
-          procedure Preanalyze_Own_DIC_For_ASIS;
-          --  Preanalyze the original DIC expression of an aspect or a source
-          --  pragma for ASIS.
- 
-          ---------------------------------
-          -- Preanalyze_Own_DIC_For_ASIS --
-          ---------------------------------
- 
-          procedure Preanalyze_Own_DIC_For_ASIS is
-             Expr : Node_Id := Empty;
- 
-          begin
-             --  The DIC pragma is a source construct, preanalyze the original
-             --  expression of the pragma.
- 
-             if Comes_From_Source (DIC_Prag) then
-                Expr := DIC_Expr;
- 
-             --  Otherwise preanalyze the expression of the corresponding aspect
- 
-             elsif Present (DIC_Asp) then
-                Expr := Expression (DIC_Asp);
-             end if;
- 
-             --  The expression must be subjected to the same substitutions as
-             --  the copy used in the generation of the runtime check.
- 
-             if Present (Expr) then
-                Replace_Type_References
-                  (Expr   => Expr,
-                   Typ    => DIC_Typ,
-                   Obj_Id => Obj_Id);
- 
-                Preanalyze_Assert_Expression (Expr, Any_Boolean);
-             end if;
-          end Preanalyze_Own_DIC_For_ASIS;
  
           --  Local variables
  
--- 1806,1811 ----
*************** package body Exp_Util is
*** 1717,1728 ****
              Set_Entity (Identifier (DIC_Asp), New_Copy_Tree (Expr));
           end if;
  
-          --  Preanalyze the original DIC expression for ASIS
- 
-          if ASIS_Mode then
-             Preanalyze_Own_DIC_For_ASIS;
-          end if;
- 
           --  Once the DIC assertion expression is fully processed, add a check
           --  to the statements of the DIC procedure.
  
--- 1853,1858 ----
*************** package body Exp_Util is
*** 1732,1737 ****
--- 1862,1927 ----
              Stmts    => Stmts);
        end Add_Own_DIC;
  
+       ---------------------
+       -- Add_Parent_DICs --
+       ---------------------
+ 
+       procedure Add_Parent_DICs
+         (T      : Entity_Id;
+          Obj_Id : Entity_Id;
+          Checks : in out List_Id)
+       is
+          Dummy_1 : Entity_Id;
+          Dummy_2 : Entity_Id;
+ 
+          Curr_Typ : Entity_Id;
+          --  The entity of the current type being examined
+ 
+          Full_Typ : Entity_Id;
+          --  The full view of Par_Typ
+ 
+          Par_Typ : Entity_Id;
+          --  The entity of the parent type
+ 
+          Priv_Typ : Entity_Id;
+          --  The partial view of Par_Typ
+ 
+       begin
+          --  Climb the parent type chain
+ 
+          Curr_Typ := T;
+          loop
+             --  Do not consider subtypes, as they inherit the DICs from their
+             --  base types.
+ 
+             Par_Typ := Base_Type (Etype (Base_Type (Curr_Typ)));
+ 
+             --  Stop the climb once the root of the parent chain is
+             --  reached.
+ 
+             exit when Curr_Typ = Par_Typ;
+ 
+             --  Process the DICs of the parent type
+ 
+             Get_Views (Par_Typ, Priv_Typ, Full_Typ, Dummy_1, Dummy_2);
+ 
+             --  Only try to inherit a DIC pragma from the parent type Par_Typ
+             --  if it Has_Own_DIC pragma. The loop will proceed up the parent
+             --  chain to find all types that have their own DIC.
+ 
+             if Has_Own_DIC (Par_Typ) then
+                Add_Inherited_DICs
+                  (T         => T,
+                   Priv_Typ  => Priv_Typ,
+                   Full_Typ  => Full_Typ,
+                   Obj_Id    => Obj_Id,
+                   Checks    => Checks);
+             end if;
+ 
+             Curr_Typ := Par_Typ;
+          end loop;
+       end Add_Parent_DICs;
+ 
        --  Local variables
  
        Loc : constant Source_Ptr := Sloc (Typ);
*************** package body Exp_Util is
*** 1750,1757 ****
        Proc_Id      : Entity_Id;
        Stmts        : List_Id := No_List;
  
!       Build_Body : Boolean := False;
!       --  Flag set when the type requires a DIC procedure body to be built
  
        Work_Typ : Entity_Id;
        --  The working type
--- 1940,1959 ----
        Proc_Id      : Entity_Id;
        Stmts        : List_Id := No_List;
  
!       CRec_Typ : Entity_Id := Empty;
!       --  The corresponding record type of Full_Typ
! 
!       Full_Typ : Entity_Id := Empty;
!       --  The full view of the working type
! 
!       Obj_Id : Entity_Id := Empty;
!       --  The _object formal parameter of the invariant procedure
! 
!       Part_Proc : Entity_Id := Empty;
!       --  The entity of the "partial" invariant procedure
! 
!       Priv_Typ : Entity_Id := Empty;
!       --  The partial view of the working type
  
        Work_Typ : Entity_Id;
        --  The working type
*************** package body Exp_Util is
*** 1815,1839 ****
           goto Leave;
        end if;
  
!       --  The working type may lack a DIC procedure declaration. This may be
!       --  due to several reasons:
  
!       --    * The working type's own DIC pragma does not contain a verifiable
!       --      assertion expression. In this case there is no need to build a
!       --      DIC procedure because there is nothing to check.
  
!       --    * The working type derives from a parent type. In this case a DIC
!       --      procedure should be built only when the inherited DIC pragma has
!       --      a verifiable assertion expression.
  
!       Proc_Id := DIC_Procedure (Work_Typ);
  
!       --  Build a DIC procedure declaration when the working type derives from
!       --  a parent type.
  
!       if No (Proc_Id) then
!          Build_DIC_Procedure_Declaration (Work_Typ);
!          Proc_Id := DIC_Procedure (Work_Typ);
        end if;
  
        --  At this point there should be a DIC procedure declaration
--- 2017,2057 ----
           goto Leave;
        end if;
  
!       --  Obtain both views of the type
  
!       Get_Views (Work_Typ, Priv_Typ, Full_Typ, Dummy_1, CRec_Typ);
  
!       --  The caller requests a body for the partial DIC procedure
  
!       if Partial_DIC then
!          Proc_Id   := Partial_DIC_Procedure (Work_Typ);
  
!          --  The "full" DIC procedure body was already created
  
!          --  Create a declaration for the "partial" DIC procedure if it
!          --  is not available.
! 
!          if No (Proc_Id) then
!             Build_DIC_Procedure_Declaration
!               (Typ         => Work_Typ,
!                Partial_DIC => True);
! 
!             Proc_Id := Partial_DIC_Procedure (Work_Typ);
!          end if;
! 
!       --  The caller requests a body for the "full" DIC procedure
! 
!       else
!          Proc_Id   := DIC_Procedure (Work_Typ);
!          Part_Proc := Partial_DIC_Procedure (Work_Typ);
! 
!          --  Create a declaration for the "full" DIC procedure if it is
!          --  not available.
! 
!          if No (Proc_Id) then
!             Build_DIC_Procedure_Declaration (Work_Typ);
!             Proc_Id := DIC_Procedure (Work_Typ);
!          end if;
        end if;
  
        --  At this point there should be a DIC procedure declaration
*************** package body Exp_Util is
*** 1853,1975 ****
        Push_Scope (Proc_Id);
        Install_Formals (Proc_Id);
  
!       --  The working type defines its own DIC pragma. Replace the current
!       --  instance of the working type with the formal of the DIC procedure.
!       --  Note that there is no need to consider inherited DIC pragmas from
!       --  parent types because the working type's DIC pragma "hides" all
!       --  inherited DIC pragmas.
  
!       if Has_Own_DIC (Work_Typ) then
!          pragma Assert (DIC_Typ = Work_Typ);
  
!          Add_Own_DIC
!            (DIC_Prag => DIC_Prag,
!             DIC_Typ  => DIC_Typ,
!             Stmts    => Stmts);
  
!          Build_Body := True;
  
!       --  Otherwise the working type inherits a DIC pragma from a parent type.
!       --  This processing is carried out when the type is frozen because the
!       --  state of all parent discriminants is known at that point. Note that
!       --  it is semantically sound to delay the creation of the DIC procedure
!       --  body till the freeze point. If the type has a DIC pragma of its own,
!       --  then the DIC procedure body would have already been constructed at
!       --  the end of the visible declarations and all parent DIC pragmas are
!       --  effectively "hidden" and irrelevant.
  
!       elsif For_Freeze then
!          pragma Assert (Has_Inherited_DIC (Work_Typ));
!          pragma Assert (DIC_Typ /= Work_Typ);
  
!          --  The working type is tagged. The verification of the assertion
!          --  expression is subject to the same semantics as class-wide pre-
!          --  and postconditions.
  
!          if Is_Tagged_Type (Work_Typ) then
!             Add_Inherited_Tagged_DIC
!               (DIC_Prag  => DIC_Prag,
!                Par_Typ   => DIC_Typ,
!                Deriv_Typ => Work_Typ,
!                Stmts     => Stmts);
  
!          --  Otherwise the working type is not tagged. Verify the assertion
!          --  expression of the inherited DIC pragma by directly calling the
!          --  DIC procedure of the parent type.
  
!          else
!             Add_Inherited_DIC
!               (DIC_Prag  => DIC_Prag,
!                Par_Typ   => DIC_Typ,
!                Deriv_Typ => Work_Typ,
!                Stmts     => Stmts);
           end if;
  
!          Build_Body := True;
        end if;
  
        End_Scope;
  
!       if Build_Body then
! 
!          --  Produce an empty completing body in the following cases:
!          --    * Assertions are disabled
!          --    * The DIC Assertion_Policy is Ignore
  
!          if No (Stmts) then
!             Stmts := New_List (Make_Null_Statement (Loc));
!          end if;
  
!          --  Generate:
!          --    procedure <Work_Typ>DIC (_object : <Work_Typ>) is
!          --    begin
!          --       <Stmts>
!          --    end <Work_Typ>DIC;
  
!          Proc_Body :=
!            Make_Subprogram_Body (Loc,
!              Specification                =>
!                Copy_Subprogram_Spec (Parent (Proc_Id)),
!              Declarations                 => Empty_List,
!                Handled_Statement_Sequence =>
!                  Make_Handled_Sequence_Of_Statements (Loc,
!                    Statements => Stmts));
!          Proc_Body_Id := Defining_Entity (Proc_Body);
  
!          --  Perform minor decoration in case the body is not analyzed
  
!          Set_Ekind        (Proc_Body_Id, E_Subprogram_Body);
!          Set_Etype        (Proc_Body_Id, Standard_Void_Type);
!          Set_Scope        (Proc_Body_Id, Current_Scope);
!          Set_SPARK_Pragma (Proc_Body_Id, SPARK_Pragma (Proc_Id));
!          Set_SPARK_Pragma_Inherited
!                           (Proc_Body_Id, SPARK_Pragma_Inherited (Proc_Id));
  
!          --  Link both spec and body to avoid generating duplicates
  
!          Set_Corresponding_Body (Proc_Decl, Proc_Body_Id);
!          Set_Corresponding_Spec (Proc_Body, Proc_Id);
  
!          --  The body should not be inserted into the tree when the context
!          --  is ASIS or a generic unit because it is not part of the template.
!          --  Note that the body must still be generated in order to resolve the
!          --  DIC assertion expression.
  
!          if ASIS_Mode or Inside_A_Generic then
!             null;
  
!          --  Semi-insert the body into the tree for GNATprove by setting its
!          --  Parent field. This allows for proper upstream tree traversals.
  
!          elsif GNATprove_Mode then
!             Set_Parent (Proc_Body, Parent (Declaration_Node (Work_Typ)));
  
!          --  Otherwise the body is part of the freezing actions of the working
!          --  type.
  
!          else
!             Append_Freeze_Action (Work_Typ, Proc_Body);
!          end if;
        end if;
  
     <<Leave>>
--- 2071,2216 ----
        Push_Scope (Proc_Id);
        Install_Formals (Proc_Id);
  
!       Obj_Id := First_Formal (Proc_Id);
!       pragma Assert (Present (Obj_Id));
  
!       --  The "partial" DIC procedure verifies the DICs of the partial view
!       --  only.
  
!       if Partial_DIC then
!          pragma Assert (Present (Priv_Typ));
  
!          if Has_Own_DIC (Work_Typ) then  -- If we're testing this then maybe
!             Add_Own_DIC        -- we shouldn't be calling Find_DIC_Typ above???
!               (DIC_Prag => DIC_Prag,
!                DIC_Typ  => DIC_Typ,  -- Should this just be Work_Typ???
!                Obj_Id   => Obj_Id,
!                Stmts    => Stmts);
!          end if;
  
!       --  Otherwise the "full" DIC procedure verifies the DICs of the full
!       --  view, well as DICs inherited from parent types. In addition, it
!       --  indirectly verifies the DICs of the partial view by calling the
!       --  "partial" DIC procedure.
  
!       else
!          pragma Assert (Present (Full_Typ));
  
!          --  Check the DIC of the partial view by calling the "partial" DIC
!          --  procedure, unless the partial DIC body is empty. Generate:
  
!          --    <Work_Typ>Partial_DIC (_object);
  
!          if Present (Part_Proc) and then not Has_Null_Body (Part_Proc) then
!             Append_New_To (Stmts,
!               Make_Procedure_Call_Statement (Loc,
!                 Name                   => New_Occurrence_Of (Part_Proc, Loc),
!                 Parameter_Associations => New_List (
!                   New_Occurrence_Of (Obj_Id, Loc))));
!          end if;
  
!          --  Derived subtypes do not have a partial view
! 
!          if Present (Priv_Typ) then
! 
!             --  The processing of the "full" DIC procedure intentionally
!             --  skips the partial view because a) this may result in changes of
!             --  visibility and b) lead to duplicate checks. However, when the
!             --  full view is the underlying full view of an untagged derived
!             --  type whose parent type is private, partial DICs appear on
!             --  the rep item chain of the partial view only.
! 
!             --    package Pack_1 is
!             --       type Root ... is private;
!             --    private
!             --       <full view of Root>
!             --    end Pack_1;
! 
!             --    with Pack_1;
!             --    package Pack_2 is
!             --       type Child is new Pack_1.Root with Type_DIC => ...;
!             --       <underlying full view of Child>
!             --    end Pack_2;
! 
!             --  As a result, the processing of the full view must also consider
!             --  all DICs of the partial view.
! 
!             if Is_Untagged_Private_Derivation (Priv_Typ, Full_Typ) then
!                null;
! 
!             --  Otherwise the DICs of the partial view are ignored
! 
!             else
!                --  Ignore the DICs of the partial view by eliminating the view
! 
!                Priv_Typ := Empty;
!             end if;
           end if;
  
!          --  Process inherited Default_Initial_Conditions for all parent types
! 
!          Add_Parent_DICs (Work_Typ, Obj_Id, Stmts);
        end if;
  
        End_Scope;
  
!       --  Produce an empty completing body in the following cases:
!       --    * Assertions are disabled
!       --    * The DIC Assertion_Policy is Ignore
  
!       if No (Stmts) then
!          Stmts := New_List (Make_Null_Statement (Loc));
!       end if;
  
!       --  Generate:
!       --    procedure <Work_Typ>DIC (_object : <Work_Typ>) is
!       --    begin
!       --       <Stmts>
!       --    end <Work_Typ>DIC;
  
!       Proc_Body :=
!         Make_Subprogram_Body (Loc,
!           Specification                =>
!             Copy_Subprogram_Spec (Parent (Proc_Id)),
!           Declarations                 => Empty_List,
!             Handled_Statement_Sequence =>
!               Make_Handled_Sequence_Of_Statements (Loc,
!                 Statements => Stmts));
!       Proc_Body_Id := Defining_Entity (Proc_Body);
  
!       --  Perform minor decoration in case the body is not analyzed
  
!       Set_Ekind        (Proc_Body_Id, E_Subprogram_Body);
!       Set_Etype        (Proc_Body_Id, Standard_Void_Type);
!       Set_Scope        (Proc_Body_Id, Current_Scope);
!       Set_SPARK_Pragma (Proc_Body_Id, SPARK_Pragma (Proc_Id));
!       Set_SPARK_Pragma_Inherited
!                        (Proc_Body_Id, SPARK_Pragma_Inherited (Proc_Id));
  
!       --  Link both spec and body to avoid generating duplicates
  
!       Set_Corresponding_Body (Proc_Decl, Proc_Body_Id);
!       Set_Corresponding_Spec (Proc_Body, Proc_Id);
  
!       --  The body should not be inserted into the tree when the context
!       --  is a generic unit because it is not part of the template.
!       --  Note that the body must still be generated in order to resolve the
!       --  DIC assertion expression.
  
!       if Inside_A_Generic then
!          null;
  
!       --  Semi-insert the body into the tree for GNATprove by setting its
!       --  Parent field. This allows for proper upstream tree traversals.
  
!       elsif GNATprove_Mode then
!          Set_Parent (Proc_Body, Parent (Declaration_Node (Work_Typ)));
  
!       --  Otherwise the body is part of the freezing actions of the working
!       --  type.
  
!       else
!          Append_Freeze_Action (Work_Typ, Proc_Body);
        end if;
  
     <<Leave>>
*************** package body Exp_Util is
*** 1984,1990 ****
     --  replaced by gotos which jump to the end of the routine and restore the
     --  Ghost mode.
  
!    procedure Build_DIC_Procedure_Declaration (Typ : Entity_Id) is
        Loc : constant Source_Ptr := Sloc (Typ);
  
        Saved_GM  : constant Ghost_Mode_Type := Ghost_Mode;
--- 2225,2234 ----
     --  replaced by gotos which jump to the end of the routine and restore the
     --  Ghost mode.
  
!    procedure Build_DIC_Procedure_Declaration
!      (Typ         : Entity_Id;
!       Partial_DIC : Boolean := False)
!    is
        Loc : constant Source_Ptr := Sloc (Typ);
  
        Saved_GM  : constant Ghost_Mode_Type := Ghost_Mode;
*************** package body Exp_Util is
*** 1995,2008 ****
        DIC_Typ   : Entity_Id;
        Proc_Decl : Node_Id;
        Proc_Id   : Entity_Id;
        Typ_Decl  : Node_Id;
  
        CRec_Typ : Entity_Id;
        --  The corresponding record type of Full_Typ
  
-       Full_Base : Entity_Id;
-       --  The base type of Full_Typ
- 
        Full_Typ : Entity_Id;
        --  The full view of working type
  
--- 2239,2250 ----
        DIC_Typ   : Entity_Id;
        Proc_Decl : Node_Id;
        Proc_Id   : Entity_Id;
+       Proc_Nam  : Name_Id;
        Typ_Decl  : Node_Id;
  
        CRec_Typ : Entity_Id;
        --  The corresponding record type of Full_Typ
  
        Full_Typ : Entity_Id;
        --  The full view of working type
  
*************** package body Exp_Util is
*** 2012,2017 ****
--- 2254,2262 ----
        Priv_Typ : Entity_Id;
        --  The partial view of working type
  
+       UFull_Typ : Entity_Id;
+       --  The underlying full view of Full_Typ
+ 
        Work_Typ : Entity_Id;
        --  The working type
  
*************** package body Exp_Util is
*** 2070,2086 ****
  
        if not Is_Verifiable_DIC_Pragma (DIC_Prag) then
           goto Leave;
  
!       --  Nothing to do if the type already has a DIC procedure
  
        elsif Present (DIC_Procedure (Work_Typ)) then
           goto Leave;
        end if;
  
        Proc_Id :=
!         Make_Defining_Identifier (Loc,
!           Chars =>
!             New_External_Name (Chars (Work_Typ), "Default_Initial_Condition"));
  
        --  Perform minor decoration in case the declaration is not analyzed
  
--- 2315,2349 ----
  
        if not Is_Verifiable_DIC_Pragma (DIC_Prag) then
           goto Leave;
+       end if;
  
!       --  Nothing to do if the type already has a "partial" DIC procedure
! 
!       if Partial_DIC then
!          if Present (Partial_DIC_Procedure (Work_Typ)) then
!             goto Leave;
!          end if;
! 
!       --  Nothing to do if the type already has a "full" DIC procedure
  
        elsif Present (DIC_Procedure (Work_Typ)) then
           goto Leave;
        end if;
  
+       --  The caller requests the declaration of the "partial" DIC procedure
+ 
+       if Partial_DIC then
+          Proc_Nam := New_External_Name (Chars (Work_Typ), "Partial_DIC");
+ 
+       --  Otherwise the caller requests the declaration of the "full" DIC
+       --  procedure.
+ 
+       else
+          Proc_Nam := New_External_Name (Chars (Work_Typ), "DIC");
+       end if;
+ 
        Proc_Id :=
!         Make_Defining_Identifier (Loc, Chars => Proc_Nam);
  
        --  Perform minor decoration in case the declaration is not analyzed
  
*************** package body Exp_Util is
*** 2102,2114 ****
  
        --  Obtain all views of the input type
  
!       Get_Views (Work_Typ, Priv_Typ, Full_Typ, Full_Base, CRec_Typ);
  
!       --  Associate the DIC procedure and various relevant flags with all views
  
        Propagate_DIC_Attributes (Priv_Typ,  From_Typ => Work_Typ);
        Propagate_DIC_Attributes (Full_Typ,  From_Typ => Work_Typ);
!       Propagate_DIC_Attributes (Full_Base, From_Typ => Work_Typ);
        Propagate_DIC_Attributes (CRec_Typ,  From_Typ => Work_Typ);
  
        --  The declaration of the DIC procedure must be inserted after the
--- 2365,2377 ----
  
        --  Obtain all views of the input type
  
!       Get_Views (Work_Typ, Priv_Typ, Full_Typ, UFull_Typ, CRec_Typ);
  
!       --  Associate the DIC procedure and various flags with all views
  
        Propagate_DIC_Attributes (Priv_Typ,  From_Typ => Work_Typ);
        Propagate_DIC_Attributes (Full_Typ,  From_Typ => Work_Typ);
!       Propagate_DIC_Attributes (UFull_Typ, From_Typ => Work_Typ);
        Propagate_DIC_Attributes (CRec_Typ,  From_Typ => Work_Typ);
  
        --  The declaration of the DIC procedure must be inserted after the
*************** package body Exp_Util is
*** 2158,2166 ****
                      New_Occurrence_Of (Work_Typ, Loc)))));
  
        --  The declaration should not be inserted into the tree when the context
!       --  is ASIS or a generic unit because it is not part of the template.
  
!       if ASIS_Mode or Inside_A_Generic then
           null;
  
        --  Semi-insert the declaration into the tree for GNATprove by setting
--- 2421,2429 ----
                      New_Occurrence_Of (Work_Typ, Loc)))));
  
        --  The declaration should not be inserted into the tree when the context
!       --  is a generic unit because it is not part of the template.
  
!       if Inside_A_Generic then
           null;
  
        --  Semi-insert the declaration into the tree for GNATprove by setting
*************** package body Exp_Util is
*** 2335,2343 ****
                    --  Generate:
                    --    <Comp_Typ>Invariant (_object (<Indices>));
  
!                   --  Note that the invariant procedure may have a null body if
!                   --  assertions are disabled or Assertion_Policy Ignore is in
!                   --  effect.
  
                    if not Has_Null_Body (Proc_Id) then
                       Append_New_To (Comp_Checks,
--- 2598,2605 ----
                    --  Generate:
                    --    <Comp_Typ>Invariant (_object (<Indices>));
  
!                   --  The invariant procedure has a null body if assertions are
!                   --  disabled or Assertion_Policy Ignore is in effect.
  
                    if not Has_Null_Body (Proc_Id) then
                       Append_New_To (Comp_Checks,
*************** package body Exp_Util is
*** 2775,2781 ****
           Checks    : in out List_Id;
           Priv_Item : Node_Id := Empty)
        is
-          ASIS_Expr     : Node_Id;
           Expr          : Node_Id;
           Prag          : Node_Id;
           Prag_Asp      : Node_Id;
--- 3037,3042 ----
*************** package body Exp_Util is
*** 2854,2876 ****
                    Set_Entity (Identifier (Prag_Asp), New_Copy_Tree (Expr));
                 end if;
  
-                --  Analyze the original invariant expression for ASIS
- 
-                if ASIS_Mode then
-                   ASIS_Expr := Empty;
- 
-                   if Comes_From_Source (Prag) then
-                      ASIS_Expr := Prag_Expr;
-                   elsif Present (Prag_Asp) then
-                      ASIS_Expr := Expression (Prag_Asp);
-                   end if;
- 
-                   if Present (ASIS_Expr) then
-                      Replace_Type_References (ASIS_Expr, T, Obj_Id);
-                      Preanalyze_Assert_Expression (ASIS_Expr, Any_Boolean);
-                   end if;
-                end if;
- 
                 Add_Invariant_Check (Prag, Expr, Checks);
              end if;
  
--- 3115,3120 ----
*************** package body Exp_Util is
*** 3069,3075 ****
              if Produced_Component_Check and then Has_Unchecked_Union (T) then
                 Error_Msg_NE
                   ("invariants cannot be checked on components of "
!                   & "unchecked_union type &?", Comp_Id, T);
              end if;
           end Process_Record_Component;
  
--- 3313,3319 ----
              if Produced_Component_Check and then Has_Unchecked_Union (T) then
                 Error_Msg_NE
                   ("invariants cannot be checked on components of "
!                   & "unchecked_union type &??", Comp_Id, T);
              end if;
           end Process_Record_Component;
  
*************** package body Exp_Util is
*** 3144,3154 ****
     begin
        Work_Typ := Typ;
  
        --  The input type denotes the implementation base type of a constrained
        --  array type. Work with the first subtype as all invariant pragmas are
        --  on its rep item chain.
  
!       if Ekind (Work_Typ) = E_Array_Type and then Is_Itype (Work_Typ) then
           Work_Typ := First_Subtype (Work_Typ);
  
        --  The input type denotes the corresponding record type of a protected
--- 3388,3405 ----
     begin
        Work_Typ := Typ;
  
+       --  Do not process the underlying full view of a private type. There is
+       --  no way to get back to the partial view, plus the body will be built
+       --  by the full view or the base type.
+ 
+       if Is_Underlying_Full_View (Work_Typ) then
+          return;
+ 
        --  The input type denotes the implementation base type of a constrained
        --  array type. Work with the first subtype as all invariant pragmas are
        --  on its rep item chain.
  
!       elsif Ekind (Work_Typ) = E_Array_Type and then Is_Itype (Work_Typ) then
           Work_Typ := First_Subtype (Work_Typ);
  
        --  The input type denotes the corresponding record type of a protected
*************** package body Exp_Util is
*** 3428,3438 ****
        Set_Corresponding_Spec (Proc_Body, Proc_Id);
  
        --  The body should not be inserted into the tree when the context is
!       --  ASIS or a generic unit because it is not part of the template. Note
        --  that the body must still be generated in order to resolve the
        --  invariants.
  
!       if ASIS_Mode or Inside_A_Generic then
           null;
  
        --  Semi-insert the body into the tree for GNATprove by setting its
--- 3679,3689 ----
        Set_Corresponding_Spec (Proc_Body, Proc_Id);
  
        --  The body should not be inserted into the tree when the context is
!       --  a generic unit because it is not part of the template. Note
        --  that the body must still be generated in order to resolve the
        --  invariants.
  
!       if Inside_A_Generic then
           null;
  
        --  Semi-insert the body into the tree for GNATprove by setting its
*************** package body Exp_Util is
*** 3477,3485 ****
        CRec_Typ : Entity_Id;
        --  The corresponding record type of Full_Typ
  
-       Full_Base : Entity_Id;
-       --  The base type of Full_Typ
- 
        Full_Typ : Entity_Id;
        --  The full view of working type
  
--- 3728,3733 ----
*************** package body Exp_Util is
*** 3492,3497 ****
--- 3740,3748 ----
        Priv_Typ : Entity_Id;
        --  The partial view of working type
  
+       UFull_Typ : Entity_Id;
+       --  The underlying full view of Full_Typ
+ 
        Work_Typ : Entity_Id;
        --  The working type
  
*************** package body Exp_Util is
*** 3577,3589 ****
  
        --  Obtain all views of the input type
  
!       Get_Views (Work_Typ, Priv_Typ, Full_Typ, Full_Base, CRec_Typ);
  
!       --  Associate the invariant procedure with all views
  
        Propagate_Invariant_Attributes (Priv_Typ,  From_Typ => Work_Typ);
        Propagate_Invariant_Attributes (Full_Typ,  From_Typ => Work_Typ);
!       Propagate_Invariant_Attributes (Full_Base, From_Typ => Work_Typ);
        Propagate_Invariant_Attributes (CRec_Typ,  From_Typ => Work_Typ);
  
        --  The declaration of the invariant procedure is inserted after the
--- 3828,3840 ----
  
        --  Obtain all views of the input type
  
!       Get_Views (Work_Typ, Priv_Typ, Full_Typ, UFull_Typ, CRec_Typ);
  
!       --  Associate the invariant procedure and various flags with all views
  
        Propagate_Invariant_Attributes (Priv_Typ,  From_Typ => Work_Typ);
        Propagate_Invariant_Attributes (Full_Typ,  From_Typ => Work_Typ);
!       Propagate_Invariant_Attributes (UFull_Typ, From_Typ => Work_Typ);
        Propagate_Invariant_Attributes (CRec_Typ,  From_Typ => Work_Typ);
  
        --  The declaration of the invariant procedure is inserted after the
*************** package body Exp_Util is
*** 3663,3671 ****
                    Parameter_Type      => New_Occurrence_Of (Obj_Typ, Loc)))));
  
        --  The declaration should not be inserted into the tree when the context
!       --  is ASIS or a generic unit because it is not part of the template.
  
!       if ASIS_Mode or Inside_A_Generic then
           null;
  
        --  Semi-insert the declaration into the tree for GNATprove by setting
--- 3914,3922 ----
                    Parameter_Type      => New_Occurrence_Of (Obj_Typ, Loc)))));
  
        --  The declaration should not be inserted into the tree when the context
!       --  is a generic unit because it is not part of the template.
  
!       if Inside_A_Generic then
           null;
  
        --  Semi-insert the declaration into the tree for GNATprove by setting
*************** package body Exp_Util is
*** 3734,3751 ****
  
        --  Add an extra out parameter to carry the function result
  
-       Name_Len := 6;
-       Name_Buffer (1 .. Name_Len) := "RESULT";
        Append_To (Proc_Formals,
          Make_Parameter_Specification (Loc,
            Defining_Identifier =>
!             Make_Defining_Identifier (Loc, Chars => Name_Find),
            Out_Present         => True,
            Parameter_Type      => New_Occurrence_Of (Etype (Subp), Loc)));
  
!       --  The new procedure declaration is inserted immediately after the
!       --  function declaration. The processing in Build_Procedure_Body_Form
!       --  relies on this order.
  
        Proc_Decl :=
          Make_Subprogram_Declaration (Loc,
--- 3985,4002 ----
  
        --  Add an extra out parameter to carry the function result
  
        Append_To (Proc_Formals,
          Make_Parameter_Specification (Loc,
            Defining_Identifier =>
!             Make_Defining_Identifier (Loc, Name_UP_RESULT),
            Out_Present         => True,
            Parameter_Type      => New_Occurrence_Of (Etype (Subp), Loc)));
  
!       --  The new procedure declaration is inserted before the function
!       --  declaration. The processing in Build_Procedure_Body_Form relies on
!       --  this order. Note that we insert before because in the case of a
!       --  function body with no separate spec, we do not want to insert the
!       --  new spec after the body which will later get rewritten.
  
        Proc_Decl :=
          Make_Subprogram_Declaration (Loc,
*************** package body Exp_Util is
*** 3755,3761 ****
                  Make_Defining_Identifier (Loc, Chars (Subp)),
                Parameter_Specifications => Proc_Formals));
  
!       Insert_After_And_Analyze (Unit_Declaration_Node (Subp), Proc_Decl);
  
        --  Entity of procedure must remain invisible so that it does not
        --  overload subsequent references to the original function.
--- 4006,4012 ----
                  Make_Defining_Identifier (Loc, Chars (Subp)),
                Parameter_Specifications => Proc_Formals));
  
!       Insert_Before_And_Analyze (Unit_Declaration_Node (Subp), Proc_Decl);
  
        --  Entity of procedure must remain invisible so that it does not
        --  overload subsequent references to the original function.
*************** package body Exp_Util is
*** 4623,4633 ****
        if not Is_Record_Type (UT) and then not Is_Array_Type (UT) then
           return False;
  
!       --  If we know that we have a small (64 bits or less) record or small
!       --  bit-packed array, then everything is fine, since the back end can
!       --  handle these cases correctly.
  
!       elsif Esize (Comp) <= 64
          and then (Is_Record_Type (UT) or else Is_Bit_Packed_Array (UT))
        then
           return False;
--- 4874,4884 ----
        if not Is_Record_Type (UT) and then not Is_Array_Type (UT) then
           return False;
  
!       --  If we know that we have a small (at most the maximum integer size)
!       --  record or bit-packed array, then everything is fine, since the back
!       --  end can handle these cases correctly.
  
!       elsif Esize (Comp) <= System_Max_Integer_Size
          and then (Is_Record_Type (UT) or else Is_Bit_Packed_Array (UT))
        then
           return False;
*************** package body Exp_Util is
*** 4647,4706 ****
        end if;
     end Component_May_Be_Bit_Aligned;
  
-    ----------------------------------------
-    -- Containing_Package_With_Ext_Axioms --
-    ----------------------------------------
- 
-    function Containing_Package_With_Ext_Axioms
-      (E : Entity_Id) return Entity_Id
-    is
-    begin
-       --  E is the package or generic package which is externally axiomatized
- 
-       if Is_Package_Or_Generic_Package (E)
-         and then Has_Annotate_Pragma_For_External_Axiomatization (E)
-       then
-          return E;
-       end if;
- 
-       --  If E's scope is axiomatized, E is axiomatized
- 
-       if Present (Scope (E)) then
-          declare
-             First_Ax_Parent_Scope : constant Entity_Id :=
-               Containing_Package_With_Ext_Axioms (Scope (E));
-          begin
-             if Present (First_Ax_Parent_Scope) then
-                return First_Ax_Parent_Scope;
-             end if;
-          end;
-       end if;
- 
-       --  Otherwise, if E is a package instance, it is axiomatized if the
-       --  corresponding generic package is axiomatized.
- 
-       if Ekind (E) = E_Package then
-          declare
-             Par  : constant Node_Id := Parent (E);
-             Decl : Node_Id;
- 
-          begin
-             if Nkind (Par) = N_Defining_Program_Unit_Name then
-                Decl := Parent (Par);
-             else
-                Decl := Par;
-             end if;
- 
-             if Present (Generic_Parent (Decl)) then
-                return
-                  Containing_Package_With_Ext_Axioms (Generic_Parent (Decl));
-             end if;
-          end;
-       end if;
- 
-       return Empty;
-    end Containing_Package_With_Ext_Axioms;
- 
     -------------------------------
     -- Convert_To_Actual_Subtype --
     -------------------------------
--- 4898,4903 ----
*************** package body Exp_Util is
*** 4967,4977 ****
  
     procedure Evaluate_Name (Nam : Node_Id) is
     begin
-       --  For an attribute reference or an indexed component, evaluate the
-       --  prefix, which is itself a name, recursively, and then force the
-       --  evaluation of all the subscripts (or attribute expressions).
- 
        case Nkind (Nam) is
           when N_Attribute_Reference
              | N_Indexed_Component
           =>
--- 5164,5179 ----
  
     procedure Evaluate_Name (Nam : Node_Id) is
     begin
        case Nkind (Nam) is
+          --  For an aggregate, force its evaluation
+ 
+          when N_Aggregate =>
+             Force_Evaluation (Nam);
+ 
+          --  For an attribute reference or an indexed component, evaluate the
+          --  prefix, which is itself a name, recursively, and then force the
+          --  evaluation of all the subscripts (or attribute expressions).
+ 
           when N_Attribute_Reference
              | N_Indexed_Component
           =>
*************** package body Exp_Util is
*** 5002,5022 ****
           when N_Explicit_Dereference =>
              Force_Evaluation (Prefix (Nam));
  
!          --  For a function call, we evaluate the call
  
!          when N_Function_Call =>
              Force_Evaluation (Nam);
  
!          --  For a qualified expression, we evaluate the underlying object
!          --  name if any, otherwise we force the evaluation of the underlying
!          --  expression.
  
           when N_Qualified_Expression =>
!             if Is_Object_Reference (Expression (Nam)) then
!                Evaluate_Name (Expression (Nam));
!             else
!                Force_Evaluation (Expression (Nam));
!             end if;
  
           --  For a selected component, we simply evaluate the prefix
  
--- 5204,5220 ----
           when N_Explicit_Dereference =>
              Force_Evaluation (Prefix (Nam));
  
!          --  For a function call, we evaluate the call; same for an operator
  
!          when N_Function_Call
!             | N_Op
!          =>
              Force_Evaluation (Nam);
  
!          --  For a qualified expression, we evaluate the expression
  
           when N_Qualified_Expression =>
!             Evaluate_Name (Expression (Nam));
  
           --  For a selected component, we simply evaluate the prefix
  
*************** package body Exp_Util is
*** 5038,5046 ****
           when N_Type_Conversion =>
              Evaluate_Name (Expression (Nam));
  
!          --  The remaining cases are direct name, operator symbol and character
!          --  literal. In all these cases, we do nothing, since we want to
!          --  reevaluate each time the renamed object is used.
  
           when others =>
              null;
--- 5236,5246 ----
           when N_Type_Conversion =>
              Evaluate_Name (Expression (Nam));
  
!          --  The remaining cases are direct name and character literal. In all
!          --  these cases, we do nothing, since we want to reevaluate each time
!          --  the renamed object is used. ??? There are more remaining cases, at
!          --  least in the GNATprove_Mode, where this routine is called in more
!          --  contexts than in GNAT.
  
           when others =>
              null;
*************** package body Exp_Util is
*** 5110,5116 ****
     -----------------------------------------
  
     procedure Expand_Static_Predicates_In_Choices (N : Node_Id) is
!       pragma Assert (Nkind_In (N, N_Case_Statement_Alternative, N_Variant));
  
        Choices : constant List_Id := Discrete_Choices (N);
  
--- 5310,5316 ----
     -----------------------------------------
  
     procedure Expand_Static_Predicates_In_Choices (N : Node_Id) is
!       pragma Assert (Nkind (N) in N_Case_Statement_Alternative | N_Variant);
  
        Choices : constant List_Id := Discrete_Choices (N);
  
*************** package body Exp_Util is
*** 5420,5426 ****
        then
           null;
  
!       --  For limited objects initialized with build in place function calls,
        --  nothing to be done; otherwise we prematurely introduce an N_Reference
        --  node in the expression initializing the object, which breaks the
        --  circuitry that detects and adds the additional arguments to the
--- 5620,5626 ----
        then
           null;
  
!       --  For limited objects initialized with build-in-place function calls,
        --  nothing to be done; otherwise we prematurely introduce an N_Reference
        --  node in the expression initializing the object, which breaks the
        --  circuitry that detects and adds the additional arguments to the
*************** package body Exp_Util is
*** 5429,5434 ****
--- 5629,5645 ----
        elsif Is_Build_In_Place_Function_Call (Exp) then
           null;
  
+      --  If the expression is an uninitialized aggregate, no need to build
+      --  a subtype from the expression, because this may require the use of
+      --  dynamic memory to create the object.
+ 
+       elsif Is_Uninitialized_Aggregate (Exp, Exp_Typ) then
+          Rewrite (Subtype_Indic, New_Occurrence_Of (Etype (Exp), Sloc (N)));
+          if Nkind (N) = N_Object_Declaration then
+             Set_Expression (N, Empty);
+             Set_No_Initialization (N);
+          end if;
+ 
        else
           Remove_Side_Effects (Exp);
           Rewrite (Subtype_Indic,
*************** package body Exp_Util is
*** 5888,5894 ****
     begin
        S := Scop;
        while Present (S) loop
!          if Ekind_In (S, E_Entry, E_Entry_Family, E_Function, E_Procedure)
             and then Present (Protection_Object (S))
           then
              return Protection_Object (S);
--- 6099,6105 ----
     begin
        S := Scop;
        while Present (S) loop
!          if Ekind (S) in E_Entry | E_Entry_Family | E_Function | E_Procedure
             and then Present (Protection_Object (S))
           then
              return Protection_Object (S);
*************** package body Exp_Util is
*** 5966,5973 ****
           Par := N;
           Top := N;
           while Present (Par) loop
!             if Nkind_In (Original_Node (Par), N_Case_Expression,
!                                               N_If_Expression)
              then
                 Top := Par;
  
--- 6177,6184 ----
           Par := N;
           Top := N;
           while Present (Par) loop
!             if Nkind (Original_Node (Par)) in
!                  N_Case_Expression | N_If_Expression
              then
                 Top := Par;
  
*************** package body Exp_Util is
*** 5988,6000 ****
           Par := Top;
           while Present (Par) loop
              if Is_List_Member (Par)
!               and then not Nkind_In (Par, N_Component_Association,
!                                           N_Discriminant_Association,
!                                           N_Parameter_Association,
!                                           N_Pragma_Argument_Association)
!               and then not Nkind_In (Parent (Par), N_Function_Call,
!                                                    N_Procedure_Call_Statement,
!                                                    N_Entry_Call_Statement)
  
              then
                 return Par;
--- 6199,6211 ----
           Par := Top;
           while Present (Par) loop
              if Is_List_Member (Par)
!               and then Nkind (Par) not in N_Component_Association
!                                         | N_Discriminant_Association
!                                         | N_Parameter_Association
!                                         | N_Pragma_Argument_Association
!               and then Nkind (Parent (Par)) not in N_Function_Call
!                                                  | N_Procedure_Call_Statement
!                                                  | N_Entry_Call_Statement
  
              then
                 return Par;
*************** package body Exp_Util is
*** 6017,6023 ****
              --  Keep climbing past various operators
  
              if Nkind (Parent (Par)) in N_Op
!               or else Nkind_In (Parent (Par), N_And_Then, N_Or_Else)
              then
                 Par := Parent (Par);
              else
--- 6228,6234 ----
              --  Keep climbing past various operators
  
              if Nkind (Parent (Par)) in N_Op
!               or else Nkind (Parent (Par)) in N_And_Then | N_Or_Else
              then
                 Par := Parent (Par);
              else
*************** package body Exp_Util is
*** 6055,6065 ****
  
           while Present (Par) loop
              if Par = Wrapped_Node
!               or else Nkind_In (Par, N_Assignment_Statement,
!                                      N_Object_Declaration,
!                                      N_Pragma,
!                                      N_Procedure_Call_Statement,
!                                      N_Simple_Return_Statement)
              then
                 return Par;
  
--- 6266,6276 ----
  
           while Present (Par) loop
              if Par = Wrapped_Node
!               or else Nkind (Par) in N_Assignment_Statement
!                                    | N_Object_Declaration
!                                    | N_Pragma
!                                    | N_Procedure_Call_Statement
!                                    | N_Simple_Return_Statement
              then
                 return Par;
  
*************** package body Exp_Util is
*** 6249,6274 ****
        return End_String;
     end Fully_Qualified_Name_String;
  
-    ------------------------
-    -- Generate_Poll_Call --
-    ------------------------
- 
-    procedure Generate_Poll_Call (N : Node_Id) is
-    begin
-       --  No poll call if polling not active
- 
-       if not Polling_Required then
-          return;
- 
-       --  Otherwise generate require poll call
- 
-       else
-          Insert_Before_And_Analyze (N,
-            Make_Procedure_Call_Statement (Sloc (N),
-              Name => New_Occurrence_Of (RTE (RE_Poll), Sloc (N))));
-       end if;
-    end Generate_Poll_Call;
- 
     ---------------------------------
     -- Get_Current_Value_Condition --
     ---------------------------------
--- 6460,6465 ----
*************** package body Exp_Util is
*** 6286,6294 ****
        Loc : constant Source_Ptr := Sloc (Var);
        Ent : constant Entity_Id  := Entity (Var);
  
!       procedure Process_Current_Value_Condition
!         (N : Node_Id;
!          S : Boolean);
        --  N is an expression which holds either True (S = True) or False (S =
        --  False) in the condition. This procedure digs out the expression and
        --  if it refers to Ent, sets Op and Val appropriately.
--- 6477,6483 ----
        Loc : constant Source_Ptr := Sloc (Var);
        Ent : constant Entity_Id  := Entity (Var);
  
!       procedure Process_Current_Value_Condition (N : Node_Id; S : Boolean);
        --  N is an expression which holds either True (S = True) or False (S =
        --  False) in the condition. This procedure digs out the expression and
        --  if it refers to Ent, sets Op and Val appropriately.
*************** package body Exp_Util is
*** 6322,6331 ****
              --  Deal with conversions, qualifications, and expressions with
              --  actions.
  
!             while Nkind_In (Cond,
!                     N_Type_Conversion,
!                     N_Qualified_Expression,
!                     N_Expression_With_Actions)
              loop
                 Cond := Expression (Cond);
              end loop;
--- 6511,6519 ----
              --  Deal with conversions, qualifications, and expressions with
              --  actions.
  
!             while Nkind (Cond) in N_Type_Conversion
!                                 | N_Qualified_Expression
!                                 | N_Expression_With_Actions
              loop
                 Cond := Expression (Cond);
              end loop;
*************** package body Exp_Util is
*** 6335,6341 ****
  
           --  Deal with AND THEN and AND cases
  
!          if Nkind_In (Cond, N_And_Then, N_Op_And) then
  
              --  Don't ever try to invert a condition that is of the form of an
              --  AND or AND THEN (since we are not doing sufficiently general
--- 6523,6529 ----
  
           --  Deal with AND THEN and AND cases
  
!          if Nkind (Cond) in N_And_Then | N_Op_And then
  
              --  Don't ever try to invert a condition that is of the form of an
              --  AND or AND THEN (since we are not doing sufficiently general
*************** package body Exp_Util is
*** 6350,6355 ****
--- 6538,6544 ----
              --  Recursively process AND and AND THEN branches
  
              Process_Current_Value_Condition (Left_Opnd (Cond), True);
+             pragma Assert (Op'Valid);
  
              if Op /= N_Empty then
                 return;
*************** package body Exp_Util is
*** 6411,6420 ****
  
              return;
  
!          elsif Nkind_In (Cond,
!                  N_Type_Conversion,
!                  N_Qualified_Expression,
!                  N_Expression_With_Actions)
           then
              Cond := Expression (Cond);
  
--- 6600,6608 ----
  
              return;
  
!          elsif Nkind (Cond) in N_Type_Conversion
!                              | N_Qualified_Expression
!                              | N_Expression_With_Actions
           then
              Cond := Expression (Cond);
  
*************** package body Exp_Util is
*** 6442,6448 ****
  
        --  Immediate return, nothing doing, if this is not an object
  
!       if Ekind (Ent) not in Object_Kind then
           return;
        end if;
  
--- 6630,6647 ----
  
        --  Immediate return, nothing doing, if this is not an object
  
!       if not Is_Object (Ent) then
!          return;
!       end if;
! 
!       --  In GNATprove mode we don't want to use current value optimizer, in
!       --  particular for loop invariant expressions and other assertions that
!       --  act as cut points for proof. The optimizer often folds expressions
!       --  into True/False where they trivially follow from the previous
!       --  assignments, but this deprives proof from the information needed to
!       --  discharge checks that are beyond the scope of the value optimizer.
! 
!       if GNATprove_Mode then
           return;
        end if;
  
*************** package body Exp_Util is
*** 6464,6470 ****
              if Loc < Sloc (CV) then
                 return;
  
!                --  After end of IF statement
  
              elsif Loc >= Sloc (CV) + Text_Ptr (UI_To_Int (End_Span (CV))) then
                 return;
--- 6663,6669 ----
              if Loc < Sloc (CV) then
                 return;
  
!             --  After end of IF statement
  
              elsif Loc >= Sloc (CV) + Text_Ptr (UI_To_Int (End_Span (CV))) then
                 return;
*************** package body Exp_Util is
*** 6632,6637 ****
--- 6831,6865 ----
        end;
     end Get_Current_Value_Condition;
  
+    -----------------------
+    -- Get_Index_Subtype --
+    -----------------------
+ 
+    function Get_Index_Subtype (N : Node_Id) return Node_Id is
+       P_Type : Entity_Id := Etype (Prefix (N));
+       Indx   : Node_Id;
+       J      : Int;
+ 
+    begin
+       if Is_Access_Type (P_Type) then
+          P_Type := Designated_Type (P_Type);
+       end if;
+ 
+       if No (Expressions (N)) then
+          J := 1;
+       else
+          J := UI_To_Int (Expr_Value (First (Expressions (N))));
+       end if;
+ 
+       Indx := First_Index (P_Type);
+       while J > 1 loop
+          Next_Index (Indx);
+          J := J - 1;
+       end loop;
+ 
+       return Etype (Indx);
+    end Get_Index_Subtype;
+ 
     ---------------------
     -- Get_Stream_Size --
     ---------------------
*************** package body Exp_Util is
*** 6643,6649 ****
        if Has_Stream_Size_Clause (E) then
           return Static_Integer (Expression (Stream_Size_Clause (E)));
  
!       --  Otherwise the Stream_Size if the size of the type
  
        else
           return Esize (E);
--- 6871,6877 ----
        if Has_Stream_Size_Clause (E) then
           return Static_Integer (Expression (Stream_Size_Clause (E)));
  
!       --  Otherwise the Stream_Size is the size of the type
  
        else
           return Esize (E);
*************** package body Exp_Util is
*** 6675,6796 ****
        end if;
     end Has_Access_Constraint;
  
-    -----------------------------------------------------
-    -- Has_Annotate_Pragma_For_External_Axiomatization --
-    -----------------------------------------------------
- 
-    function Has_Annotate_Pragma_For_External_Axiomatization
-      (E : Entity_Id) return Boolean
-    is
-       function Is_Annotate_Pragma_For_External_Axiomatization
-         (N : Node_Id) return Boolean;
-       --  Returns whether N is
-       --    pragma Annotate (GNATprove, External_Axiomatization);
- 
-       ----------------------------------------------------
-       -- Is_Annotate_Pragma_For_External_Axiomatization --
-       ----------------------------------------------------
- 
-       --  The general form of pragma Annotate is
- 
-       --    pragma Annotate (IDENTIFIER [, IDENTIFIER {, ARG}]);
-       --    ARG ::= NAME | EXPRESSION
- 
-       --  The first two arguments are by convention intended to refer to an
-       --  external tool and a tool-specific function. These arguments are
-       --  not analyzed.
- 
-       --  The following is used to annotate a package specification which
-       --  GNATprove should treat specially, because the axiomatization of
-       --  this unit is given by the user instead of being automatically
-       --  generated.
- 
-       --    pragma Annotate (GNATprove, External_Axiomatization);
- 
-       function Is_Annotate_Pragma_For_External_Axiomatization
-         (N : Node_Id) return Boolean
-       is
-          Name_GNATprove               : constant String :=
-                                           "gnatprove";
-          Name_External_Axiomatization : constant String :=
-                                           "external_axiomatization";
-          --  Special names
- 
-       begin
-          if Nkind (N) = N_Pragma
-            and then Get_Pragma_Id (N) = Pragma_Annotate
-            and then List_Length (Pragma_Argument_Associations (N)) = 2
-          then
-             declare
-                Arg1 : constant Node_Id :=
-                         First (Pragma_Argument_Associations (N));
-                Arg2 : constant Node_Id := Next (Arg1);
-                Nam1 : Name_Id;
-                Nam2 : Name_Id;
- 
-             begin
-                --  Fill in Name_Buffer with Name_GNATprove first, and then with
-                --  Name_External_Axiomatization so that Name_Find returns the
-                --  corresponding name. This takes care of all possible casings.
- 
-                Name_Len := 0;
-                Add_Str_To_Name_Buffer (Name_GNATprove);
-                Nam1 := Name_Find;
- 
-                Name_Len := 0;
-                Add_Str_To_Name_Buffer (Name_External_Axiomatization);
-                Nam2 := Name_Find;
- 
-                return Chars (Get_Pragma_Arg (Arg1)) = Nam1
-                          and then
-                       Chars (Get_Pragma_Arg (Arg2)) = Nam2;
-             end;
- 
-          else
-             return False;
-          end if;
-       end Is_Annotate_Pragma_For_External_Axiomatization;
- 
-       --  Local variables
- 
-       Decl      : Node_Id;
-       Vis_Decls : List_Id;
-       N         : Node_Id;
- 
-    --  Start of processing for Has_Annotate_Pragma_For_External_Axiomatization
- 
-    begin
-       if Nkind (Parent (E)) = N_Defining_Program_Unit_Name then
-          Decl := Parent (Parent (E));
-       else
-          Decl := Parent (E);
-       end if;
- 
-       Vis_Decls := Visible_Declarations (Decl);
- 
-       N := First (Vis_Decls);
-       while Present (N) loop
- 
-          --  Skip declarations generated by the frontend. Skip all pragmas
-          --  that are not the desired Annotate pragma. Stop the search on
-          --  the first non-pragma source declaration.
- 
-          if Comes_From_Source (N) then
-             if Nkind (N) = N_Pragma then
-                if Is_Annotate_Pragma_For_External_Axiomatization (N) then
-                   return True;
-                end if;
-             else
-                return False;
-             end if;
-          end if;
- 
-          Next (N);
-       end loop;
- 
-       return False;
-    end Has_Annotate_Pragma_For_External_Axiomatization;
- 
     --------------------
     -- Homonym_Number --
     --------------------
--- 6903,6908 ----
*************** package body Exp_Util is
*** 7282,7288 ****
                 --  actions should be inserted outside the complete record
                 --  declaration.
  
!                elsif Nkind_In (Parent (P), N_Variant, N_Record_Definition) then
                    null;
  
                 --  Do not insert freeze nodes within the loop generated for
--- 7394,7400 ----
                 --  actions should be inserted outside the complete record
                 --  declaration.
  
!                elsif Nkind (Parent (P)) in N_Variant | N_Record_Definition then
                    null;
  
                 --  Do not insert freeze nodes within the loop generated for
*************** package body Exp_Util is
*** 7363,7368 ****
--- 7475,7481 ----
  
              when N_Component_Association
                 | N_Iterated_Component_Association
+                | N_Iterated_Element_Association
              =>
                 if Nkind (Parent (P)) = N_Aggregate
                   and then Present (Loop_Actions (P))
*************** package body Exp_Util is
*** 7669,7676 ****
           P := Parent (P);
  
           if Is_List_Member (P) then
!             exit when Nkind_In (Parent (P), N_Package_Specification,
!                                             N_Subprogram_Body);
  
              --  Special handling for handled sequence of statements, we must
              --  insert in the statements not the exception handlers!
--- 7782,7789 ----
           P := Parent (P);
  
           if Is_List_Member (P) then
!             exit when Nkind (Parent (P)) in
!                         N_Package_Specification | N_Subprogram_Body;
  
              --  Special handling for handled sequence of statements, we must
              --  insert in the statements not the exception handlers!
*************** package body Exp_Util is
*** 7745,7769 ****
        return Proc /= Empty;
     end Inside_Init_Proc;
  
!    ----------------------------
!    -- Is_All_Null_Statements --
!    ----------------------------
! 
!    function Is_All_Null_Statements (L : List_Id) return Boolean is
!       Stm : Node_Id;
  
     begin
!       Stm := First (L);
!       while Present (Stm) loop
!          if Nkind (Stm) /= N_Null_Statement then
!             return False;
           end if;
  
!          Next (Stm);
!       end loop;
  
!       return True;
!    end Is_All_Null_Statements;
  
     --------------------------------------------------
     -- Is_Displacement_Of_Object_Or_Function_Result --
--- 7858,7902 ----
        return Proc /= Empty;
     end Inside_Init_Proc;
  
!    ----------------------
!    -- Integer_Type_For --
!    ----------------------
  
+    function Integer_Type_For (S : Uint; Uns : Boolean) return Entity_Id is
     begin
!       pragma Assert (S <= System_Max_Integer_Size);
! 
!       --  This is the canonical 32-bit type
! 
!       if S <= Standard_Integer_Size then
!          if Uns then
!             return Standard_Unsigned;
!          else
!             return Standard_Integer;
           end if;
  
!       --  This is the canonical 64-bit type
  
!       elsif S <= Standard_Long_Long_Integer_Size then
!          if Uns then
!             return Standard_Long_Long_Unsigned;
!          else
!             return Standard_Long_Long_Integer;
!          end if;
! 
!       --  This is the canonical 128-bit type
! 
!       elsif S <= Standard_Long_Long_Long_Integer_Size then
!          if Uns then
!             return Standard_Long_Long_Long_Unsigned;
!          else
!             return Standard_Long_Long_Long_Integer;
!          end if;
! 
!       else
!          raise Program_Error;
!       end if;
!    end Integer_Type_For;
  
     --------------------------------------------------
     -- Is_Displacement_Of_Object_Or_Function_Result --
*************** package body Exp_Util is
*** 7890,7897 ****
              if Nkind (Result) = N_Explicit_Dereference then
                 Result := Prefix (Result);
  
!             elsif Nkind_In (Result, N_Type_Conversion,
!                                     N_Unchecked_Type_Conversion)
              then
                 Result := Expression (Result);
  
--- 8023,8030 ----
              if Nkind (Result) = N_Explicit_Dereference then
                 Result := Prefix (Result);
  
!             elsif Nkind (Result) in
!                     N_Type_Conversion | N_Unchecked_Type_Conversion
              then
                 Result := Expression (Result);
  
*************** package body Exp_Util is
*** 8005,8010 ****
--- 8138,8147 ----
        --  is in the process of being iterated in the statement list starting
        --  from First_Stmt.
  
+       function Is_Part_Of_BIP_Return_Statement (N : Node_Id) return Boolean;
+       --  Return True if N is directly part of a build-in-place return
+       --  statement.
+ 
        ---------------------------
        -- Initialized_By_Access --
        ---------------------------
*************** package body Exp_Util is
*** 8141,8147 ****
  
                 if Nkind (N) = N_Identifier
                   and then Present (Entity (N))
!                  and then Ekind_In (Entity (N), E_Constant, E_Variable)
                 then
                    Ren_Obj := Entity (N);
                    return Abandon;
--- 8278,8284 ----
  
                 if Nkind (N) = N_Identifier
                   and then Present (Entity (N))
!                  and then Ekind (Entity (N)) in E_Constant | E_Variable
                 then
                    Ren_Obj := Entity (N);
                    return Abandon;
*************** package body Exp_Util is
*** 8334,8339 ****
--- 8471,8505 ----
           return False;
        end Is_Iterated_Container;
  
+       -------------------------------------
+       -- Is_Part_Of_BIP_Return_Statement --
+       -------------------------------------
+ 
+       function Is_Part_Of_BIP_Return_Statement (N : Node_Id) return Boolean is
+          Subp    : constant Entity_Id := Current_Subprogram;
+          Context : Node_Id;
+       begin
+          --  First check if N is part of a BIP function
+ 
+          if No (Subp)
+            or else not Is_Build_In_Place_Function (Subp)
+          then
+             return False;
+          end if;
+ 
+          --  Then check whether N is a complete part of a return statement
+          --  Should we consider other node kinds to go up the tree???
+ 
+          Context := N;
+          loop
+             case Nkind (Context) is
+                when N_Expression_With_Actions => Context := Parent (Context);
+                when N_Simple_Return_Statement => return True;
+                when others                    => return False;
+             end case;
+          end loop;
+       end Is_Part_Of_BIP_Return_Statement;
+ 
        --  Local variables
  
        Desig : Entity_Id := Obj_Typ;
*************** package body Exp_Util is
*** 8348,8357 ****
        end if;
  
        return
!         Ekind_In (Obj_Id, E_Constant, E_Variable)
            and then Needs_Finalization (Desig)
            and then Requires_Transient_Scope (Desig)
            and then Nkind (Rel_Node) /= N_Simple_Return_Statement
  
            --  Do not consider a transient object that was already processed
  
--- 8514,8524 ----
        end if;
  
        return
!         Ekind (Obj_Id) in E_Constant | E_Variable
            and then Needs_Finalization (Desig)
            and then Requires_Transient_Scope (Desig)
            and then Nkind (Rel_Node) /= N_Simple_Return_Statement
+           and then not Is_Part_Of_BIP_Return_Statement (Rel_Node)
  
            --  Do not consider a transient object that was already processed
  
*************** package body Exp_Util is
*** 8371,8379 ****
            --  initialized by a function that returns a pointer or acts as a
            --  renaming of another pointer.
  
!           and then
!             (not Is_Access_Type (Obj_Typ)
!                or else not Initialized_By_Access (Obj_Id))
  
            --  Do not consider transient objects which act as indirect aliases
            --  of build-in-place function results.
--- 8538,8545 ----
            --  initialized by a function that returns a pointer or acts as a
            --  renaming of another pointer.
  
!           and then not
!             (Is_Access_Type (Obj_Typ) and then Initialized_By_Access (Obj_Id))
  
            --  Do not consider transient objects which act as indirect aliases
            --  of build-in-place function results.
*************** package body Exp_Util is
*** 8752,8760 ****
     function Is_Related_To_Func_Return (Id : Entity_Id) return Boolean is
        Expr : constant Node_Id := Related_Expression (Id);
     begin
        return
          Present (Expr)
!           and then Nkind (Expr) = N_Explicit_Dereference
            and then Nkind (Parent (Expr)) = N_Simple_Return_Statement;
     end Is_Related_To_Func_Return;
  
--- 8918,8931 ----
     function Is_Related_To_Func_Return (Id : Entity_Id) return Boolean is
        Expr : constant Node_Id := Related_Expression (Id);
     begin
+       --  In the case of a function with a class-wide result that returns
+       --  a call to a function with a specific result, we introduce a
+       --  type conversion for the return expression. We do not want that
+       --  type conversion to influence the result of this function.
+ 
        return
          Present (Expr)
!           and then Nkind (Unqual_Conv (Expr)) = N_Explicit_Dereference
            and then Nkind (Parent (Expr)) = N_Simple_Return_Statement;
     end Is_Related_To_Func_Return;
  
*************** package body Exp_Util is
*** 8774,8780 ****
           return Is_Ref_To_Bit_Packed_Array (Renamed_Object (Entity (N)));
        end if;
  
!       if Nkind_In (N, N_Indexed_Component, N_Selected_Component) then
           if Is_Bit_Packed_Array (Etype (Prefix (N))) then
              Result := True;
           else
--- 8945,8951 ----
           return Is_Ref_To_Bit_Packed_Array (Renamed_Object (Entity (N)));
        end if;
  
!       if Nkind (N) in N_Indexed_Component | N_Selected_Component then
           if Is_Bit_Packed_Array (Etype (Prefix (N))) then
              Result := True;
           else
*************** package body Exp_Util is
*** 8816,8822 ****
        then
           return True;
  
!       elsif Nkind_In (N, N_Indexed_Component, N_Selected_Component) then
           return Is_Ref_To_Bit_Packed_Slice (Prefix (N));
  
        else
--- 8987,8993 ----
        then
           return True;
  
!       elsif Nkind (N) in N_Indexed_Component | N_Selected_Component then
           return Is_Ref_To_Bit_Packed_Slice (Prefix (N));
  
        else
*************** package body Exp_Util is
*** 8834,8840 ****
     begin
        if Kind = N_Object_Renaming_Declaration then
           return True;
!       elsif Nkind_In (Kind, N_Indexed_Component, N_Selected_Component) then
           return Is_Renamed_Object (Pnod);
        else
           return False;
--- 9005,9011 ----
     begin
        if Kind = N_Object_Renaming_Declaration then
           return True;
!       elsif Kind in N_Indexed_Component | N_Selected_Component then
           return Is_Renamed_Object (Pnod);
        else
           return False;
*************** package body Exp_Util is
*** 8846,8852 ****
     --------------------------------------
  
     function Is_Secondary_Stack_BIP_Func_Call (Expr : Node_Id) return Boolean is
-       Alloc_Nam : Name_Id := No_Name;
        Actual    : Node_Id;
        Call      : Node_Id := Expr;
        Formal    : Node_Id;
--- 9017,9022 ----
*************** package body Exp_Util is
*** 8873,8892 ****
                 Formal := Selector_Name (Param);
                 Actual := Explicit_Actual_Parameter (Param);
  
-                --  Construct the name of formal BIPalloc. It is much easier to
-                --  extract the name of the function using an arbitrary formal's
-                --  scope rather than the Name field of Call.
- 
-                if Alloc_Nam = No_Name and then Present (Entity (Formal)) then
-                   Alloc_Nam :=
-                     New_External_Name
-                       (Chars (Scope (Entity (Formal))),
-                        BIP_Formal_Suffix (BIP_Alloc_Form));
-                end if;
- 
                 --  A match for BIPalloc => 2 has been found
  
!                if Chars (Formal) = Alloc_Nam
                   and then Nkind (Actual) = N_Integer_Literal
                   and then Intval (Actual) = Uint_2
                 then
--- 9043,9052 ----
                 Formal := Selector_Name (Param);
                 Actual := Explicit_Actual_Parameter (Param);
  
                 --  A match for BIPalloc => 2 has been found
  
!                if Is_Build_In_Place_Entity (Formal)
!                  and then BIP_Suffix_Kind (Formal) = BIP_Alloc_Form
                   and then Nkind (Actual) = N_Integer_Literal
                   and then Intval (Actual) = Uint_2
                 then
*************** package body Exp_Util is
*** 8918,8923 ****
--- 9078,9124 ----
            and then Etype (Expression (Expr)) = RTE (RE_Tag);
     end Is_Tag_To_Class_Wide_Conversion;
  
+    --------------------------------
+    -- Is_Uninitialized_Aggregate --
+    --------------------------------
+ 
+    function Is_Uninitialized_Aggregate
+      (Exp : Node_Id;
+       T   : Entity_Id) return Boolean
+    is
+       Comp      : Node_Id;
+       Comp_Type : Entity_Id;
+       Typ       : Entity_Id;
+ 
+    begin
+       if Nkind (Exp) /= N_Aggregate then
+          return False;
+       end if;
+ 
+       Preanalyze_And_Resolve (Exp, T);
+       Typ  := Etype (Exp);
+ 
+       if No (Typ)
+         or else Ekind (Typ) /= E_Array_Subtype
+         or else Present (Expressions (Exp))
+         or else No (Component_Associations (Exp))
+       then
+          return False;
+       else
+          Comp_Type := Component_Type (Typ);
+          Comp := First (Component_Associations (Exp));
+ 
+          if not Box_Present (Comp)
+            or else Present (Next (Comp))
+          then
+             return False;
+          end if;
+ 
+          return Is_Scalar_Type (Comp_Type)
+            and then No (Default_Aspect_Component_Value (Typ));
+       end if;
+    end Is_Uninitialized_Aggregate;
+ 
     ----------------------------
     -- Is_Untagged_Derivation --
     ----------------------------
*************** package body Exp_Util is
*** 8961,8966 ****
--- 9162,9174 ----
  
        return
          Present (Args)
+ 
+           --  If there are args, but the first arg is Empty, then treat the
+           --  pragma the same as having no args (there may be a second arg that
+           --  is an implicitly added type arg, and Empty is a placeholder).
+ 
+           and then Present (Get_Pragma_Arg (First (Args)))
+ 
            and then Nkind (Get_Pragma_Arg (First (Args))) /= N_Null;
     end Is_Verifiable_DIC_Pragma;
  
*************** package body Exp_Util is
*** 9003,9009 ****
  
        --  True if volatile component
  
!       elsif Nkind_In (N, N_Indexed_Component, N_Selected_Component) then
           if (Is_Entity_Name (Prefix (N))
                and then Has_Volatile_Components (Entity (Prefix (N))))
             or else (Present (Etype (Prefix (N)))
--- 9211,9217 ----
  
        --  True if volatile component
  
!       elsif Nkind (N) in N_Indexed_Component | N_Selected_Component then
           if (Is_Entity_Name (Prefix (N))
                and then Has_Volatile_Components (Entity (Prefix (N))))
             or else (Present (Etype (Prefix (N)))
*************** package body Exp_Util is
*** 9162,9186 ****
        end if;
     end Kill_Dead_Code;
  
-    ------------------------
-    -- Known_Non_Negative --
-    ------------------------
- 
-    function Known_Non_Negative (Opnd : Node_Id) return Boolean is
-    begin
-       if Is_OK_Static_Expression (Opnd) and then Expr_Value (Opnd) >= 0 then
-          return True;
- 
-       else
-          declare
-             Lo : constant Node_Id := Type_Low_Bound (Etype (Opnd));
-          begin
-             return
-               Is_OK_Static_Expression (Lo) and then Expr_Value (Lo) >= 0;
-          end;
-       end if;
-    end Known_Non_Negative;
- 
     -----------------------------
     -- Make_CW_Equivalent_Type --
     -----------------------------
--- 9370,9375 ----
*************** package body Exp_Util is
*** 9379,9396 ****
     function Make_Invariant_Call (Expr : Node_Id) return Node_Id is
        Loc : constant Source_Ptr := Sloc (Expr);
        Typ : constant Entity_Id  := Base_Type (Etype (Expr));
- 
-       Proc_Id : Entity_Id;
- 
-    begin
        pragma Assert (Has_Invariants (Typ));
! 
!       Proc_Id := Invariant_Procedure (Typ);
        pragma Assert (Present (Proc_Id));
  
!       --  Ignore the invariant if that policy is in effect
! 
!       if Invariants_Ignored (Typ) then
           return Make_Null_Statement (Loc);
        else
           return
--- 9568,9582 ----
     function Make_Invariant_Call (Expr : Node_Id) return Node_Id is
        Loc : constant Source_Ptr := Sloc (Expr);
        Typ : constant Entity_Id  := Base_Type (Etype (Expr));
        pragma Assert (Has_Invariants (Typ));
!       Proc_Id : constant Entity_Id := Invariant_Procedure (Typ);
        pragma Assert (Present (Proc_Id));
+    begin
+       --  The invariant procedure has a null body if assertions are disabled or
+       --  Assertion_Policy Ignore is in effect. In that case, generate a null
+       --  statement instead of a call to the invariant procedure.
  
!       if Has_Null_Body (Proc_Id) then
           return Make_Null_Statement (Loc);
        else
           return
*************** package body Exp_Util is
*** 9606,9612 ****
                        (Next (First (Pragma_Argument_Associations (Item))));
                 end if;
  
!                Item := Next_Rep_Item (Item);
              end loop;
  
              return Empty;
--- 9792,9798 ----
                        (Next (First (Pragma_Argument_Associations (Item))));
                 end if;
  
!                Next_Rep_Item (Item);
              end loop;
  
              return Empty;
*************** package body Exp_Util is
*** 9666,9676 ****
           procedure Replace_Subtype_Reference (N : Node_Id) is
           begin
              Rewrite (N, New_Copy_Tree (Expr));
- 
-             --  We want to treat the node as if it comes from source, so that
-             --  ASIS will not ignore it.
- 
-             Set_Comes_From_Source (N, True);
           end Replace_Subtype_Reference;
  
           procedure Replace_Subtype_References is
--- 9852,9857 ----
*************** package body Exp_Util is
*** 9717,9726 ****
           return Make_Null_Statement (Loc);
        end if;
  
!       --  Do not generate a check within an internal subprogram (stream
!       --  functions and the like, including predicate functions).
  
!       if Within_Internal_Subprogram then
           return Make_Null_Statement (Loc);
        end if;
  
--- 9898,9906 ----
           return Make_Null_Statement (Loc);
        end if;
  
!       --  Do not generate a check within stream functions and the like.
  
!       if not Predicate_Check_In_Scope (Expr) then
           return Make_Null_Statement (Loc);
        end if;
  
*************** package body Exp_Util is
*** 9896,9902 ****
                  Low_Bound  => New_Occurrence_Of (Low_Bound,  Loc),
                  High_Bound => New_Occurrence_Of (High_Bound, Loc)));
  
!             Index_Typ := Next_Index (Index_Typ);
           end loop;
  
        elsif Is_Class_Wide_Type (Unc_Typ) then
--- 10076,10082 ----
                  Low_Bound  => New_Occurrence_Of (Low_Bound,  Loc),
                  High_Bound => New_Occurrence_Of (High_Bound, Loc)));
  
!             Next_Index (Index_Typ);
           end loop;
  
        elsif Is_Class_Wide_Type (Unc_Typ) then
*************** package body Exp_Util is
*** 9957,9962 ****
--- 10137,10160 ----
                Constraints => List_Constr));
     end Make_Subtype_From_Expr;
  
+    -----------------------------
+    -- Make_Variant_Comparison --
+    -----------------------------
+ 
+    function Make_Variant_Comparison
+      (Loc      : Source_Ptr;
+       Mode     : Name_Id;
+       Curr_Val : Node_Id;
+       Old_Val  : Node_Id) return Node_Id
+    is
+    begin
+       if Mode = Name_Increases then
+          return Make_Op_Gt (Loc, Curr_Val, Old_Val);
+       else pragma Assert (Mode = Name_Decreases);
+          return Make_Op_Lt (Loc, Curr_Val, Old_Val);
+       end if;
+    end Make_Variant_Comparison;
+ 
     ---------------
     -- Map_Types --
     ---------------
*************** package body Exp_Util is
*** 10592,10628 ****
  
        --  Unsigned integer cases (includes normal enumeration types)
  
-       elsif Is_Unsigned_Type (Typ) then
-          if Siz <= Esize (Standard_Short_Short_Unsigned) then
-             return Standard_Short_Short_Unsigned;
-          elsif Siz <= Esize (Standard_Short_Unsigned) then
-             return Standard_Short_Unsigned;
-          elsif Siz <= Esize (Standard_Unsigned) then
-             return Standard_Unsigned;
-          elsif Siz <= Esize (Standard_Long_Unsigned) then
-             return Standard_Long_Unsigned;
-          elsif Siz <= Esize (Standard_Long_Long_Unsigned) then
-             return Standard_Long_Long_Unsigned;
-          else
-             raise Program_Error;
-          end if;
- 
-       --  Signed integer cases
- 
        else
!          if Siz <= Esize (Standard_Short_Short_Integer) then
!             return Standard_Short_Short_Integer;
!          elsif Siz <= Esize (Standard_Short_Integer) then
!             return Standard_Short_Integer;
!          elsif Siz <= Esize (Standard_Integer) then
!             return Standard_Integer;
!          elsif Siz <= Esize (Standard_Long_Integer) then
!             return Standard_Long_Integer;
!          elsif Siz <= Esize (Standard_Long_Long_Integer) then
!             return Standard_Long_Long_Integer;
!          else
!             raise Program_Error;
!          end if;
        end if;
     end Matching_Standard_Type;
  
--- 10790,10797 ----
  
        --  Unsigned integer cases (includes normal enumeration types)
  
        else
!          return Small_Integer_Type_For (Siz, Is_Unsigned_Type (Typ));
        end if;
     end Matching_Standard_Type;
  
*************** package body Exp_Util is
*** 10683,10691 ****
        --  initialization, or the object is imported.
  
        --  The same holds for all initialized scalar types and all access types.
!       --  Packed bit arrays of size up to 64 are represented using a modular
!       --  type with an initialization (to zero) and can be processed like other
!       --  initialized scalar types.
  
        --  If the type is controlled, code to attach the object to a
        --  finalization chain is generated at the point of declaration, and
--- 10852,10860 ----
        --  initialization, or the object is imported.
  
        --  The same holds for all initialized scalar types and all access types.
!       --  Packed bit array types of size up to the maximum integer size are
!       --  represented using a modular type with an initialization (to zero) and
!       --  can be processed like other initialized scalar types.
  
        --  If the type is controlled, code to attach the object to a
        --  finalization chain is generated at the point of declaration, and
*************** package body Exp_Util is
*** 10769,10788 ****
        return Res;
     end New_Class_Wide_Subtype;
  
-    --------------------------------
-    -- Non_Limited_Designated_Type --
-    ---------------------------------
- 
-    function Non_Limited_Designated_Type (T : Entity_Id) return Entity_Id is
-       Desig : constant Entity_Id := Designated_Type (T);
-    begin
-       if Has_Non_Limited_View (Desig) then
-          return Non_Limited_View (Desig);
-       else
-          return Desig;
-       end if;
-    end Non_Limited_Designated_Type;
- 
     -----------------------------------
     -- OK_To_Do_Constant_Replacement --
     -----------------------------------
--- 10938,10943 ----
*************** package body Exp_Util is
*** 10879,10890 ****
                 Ptyp : constant Entity_Id := Etype (P);
  
              begin
!                --  If we know the component size and it is not larger than 64,
!                --  then we are definitely OK. The back end does the assignment
!                --  of misaligned small objects correctly.
  
                 if Known_Static_Component_Size (Ptyp)
!                  and then Component_Size (Ptyp) <= 64
                 then
                    return False;
  
--- 11034,11045 ----
                 Ptyp : constant Entity_Id := Etype (P);
  
              begin
!                --  If we know the component size and it is not larger than the
!                --  maximum integer size, then we are OK. The back end does the
!                --  assignment of small misaligned objects correctly.
  
                 if Known_Static_Component_Size (Ptyp)
!                  and then Component_Size (Ptyp) <= System_Max_Integer_Size
                 then
                    return False;
  
*************** package body Exp_Util is
*** 11041,11047 ****
           =>
              --  Check the "then statements" for elsif parts and if statements
  
!             if Nkind_In (N, N_Elsif_Part, N_If_Statement)
                and then not Is_Empty_List (Then_Statements (N))
                and then not Are_Wrapped (Then_Statements (N))
                and then Requires_Cleanup_Actions
--- 11196,11202 ----
           =>
              --  Check the "then statements" for elsif parts and if statements
  
!             if Nkind (N) in N_Elsif_Part | N_If_Statement
                and then not Is_Empty_List (Then_Statements (N))
                and then not Are_Wrapped (Then_Statements (N))
                and then Requires_Cleanup_Actions
*************** package body Exp_Util is
*** 11058,11066 ****
              --  Check the "else statements" for conditional entry calls, if
              --  statements and selective accepts.
  
!             if Nkind_In (N, N_Conditional_Entry_Call,
!                             N_If_Statement,
!                             N_Selective_Accept)
                and then not Is_Empty_List (Else_Statements (N))
                and then not Are_Wrapped (Else_Statements (N))
                and then Requires_Cleanup_Actions
--- 11213,11220 ----
              --  Check the "else statements" for conditional entry calls, if
              --  statements and selective accepts.
  
!             if Nkind (N) in
!                  N_Conditional_Entry_Call | N_If_Statement | N_Selective_Accept
                and then not Is_Empty_List (Else_Statements (N))
                and then not Are_Wrapped (Else_Statements (N))
                and then Requires_Cleanup_Actions
*************** package body Exp_Util is
*** 11269,11274 ****
--- 11423,11434 ----
        --  otherwise it generates an internal temporary. The created temporary
        --  entity is marked as internal.
  
+       function Possible_Side_Effect_In_SPARK (Exp : Node_Id) return Boolean;
+       --  Computes whether a side effect is possible in SPARK, which should
+       --  be handled by removing it from the expression for GNATprove. Note
+       --  that other side effects related to volatile variables are handled
+       --  separately.
+ 
        ---------------------
        -- Build_Temporary --
        ---------------------
*************** package body Exp_Util is
*** 11304,11309 ****
--- 11464,11489 ----
           return Temp_Id;
        end Build_Temporary;
  
+       -----------------------------------
+       -- Possible_Side_Effect_In_SPARK --
+       -----------------------------------
+ 
+       function Possible_Side_Effect_In_SPARK (Exp : Node_Id) return Boolean is
+       begin
+         --  Side-effect removal in SPARK should only occur when not inside a
+         --  generic and not doing a preanalysis, inside an object renaming or
+         --  a type declaration or a for-loop iteration scheme.
+ 
+          return not Inside_A_Generic
+            and then Full_Analysis
+            and then Nkind (Enclosing_Declaration (Exp)) in
+                       N_Full_Type_Declaration
+                     | N_Iterator_Specification
+                     | N_Loop_Parameter_Specification
+                     | N_Object_Renaming_Declaration
+                     | N_Subtype_Declaration;
+       end Possible_Side_Effect_In_SPARK;
+ 
        --  Local variables
  
        Loc          : constant Source_Ptr      := Sloc (Exp);
*************** package body Exp_Util is
*** 11321,11331 ****
     begin
        --  Handle cases in which there is nothing to do. In GNATprove mode,
        --  removal of side effects is useful for the light expansion of
!       --  renamings. This removal should only occur when not inside a
!       --  generic and not doing a preanalysis.
  
        if not Expander_Active
!         and (Inside_A_Generic or not Full_Analysis or not GNATprove_Mode)
        then
           return;
  
--- 11501,11511 ----
     begin
        --  Handle cases in which there is nothing to do. In GNATprove mode,
        --  removal of side effects is useful for the light expansion of
!       --  renamings.
  
        if not Expander_Active
!         and then not
!           (GNATprove_Mode and then Possible_Side_Effect_In_SPARK (Exp))
        then
           return;
  
*************** package body Exp_Util is
*** 11372,11377 ****
--- 11552,11572 ----
  
        Scope_Suppress.Suppress := (others => True);
  
+       --  If this is a side-effect free attribute reference whose expressions
+       --  are also side-effect free and whose prefix is not a name, remove the
+       --  side effects of the prefix. A copy of the prefix is required in this
+       --  case and it is better not to make an additional one for the attribute
+       --  itself, because the return type of many of them is universal integer,
+       --  which is a very large type for a temporary.
+ 
+       if Nkind (Exp) = N_Attribute_Reference
+         and then Side_Effect_Free_Attribute (Attribute_Name (Exp))
+         and then Side_Effect_Free (Expressions (Exp), Name_Req, Variable_Ref)
+         and then not Is_Name_Reference (Prefix (Exp))
+       then
+          Remove_Side_Effects (Prefix (Exp), Name_Req, Variable_Ref);
+          goto Leave;
+ 
        --  If this is an elementary or a small not-by-reference record type, and
        --  we need to capture the value, just make a constant; this is cheap and
        --  objects of both kinds of types can be bit aligned, so it might not be
*************** package body Exp_Util is
*** 11382,11393 ****
        --  anyway, see below). Also do it if we have a volatile reference and
        --  Name_Req is not set (see comments for Side_Effect_Free).
  
!       if (Is_Elementary_Type (Exp_Type)
!            or else (Is_Record_Type (Exp_Type)
!                      and then Known_Static_RM_Size (Exp_Type)
!                      and then RM_Size (Exp_Type) <= 64
!                      and then not Has_Discriminants (Exp_Type)
!                      and then not Is_By_Reference_Type (Exp_Type)))
          and then (Variable_Ref
                     or else (not Is_Name_Reference (Exp)
                               and then Nkind (Exp) /= N_Type_Conversion)
--- 11577,11588 ----
        --  anyway, see below). Also do it if we have a volatile reference and
        --  Name_Req is not set (see comments for Side_Effect_Free).
  
!       elsif (Is_Elementary_Type (Exp_Type)
!               or else (Is_Record_Type (Exp_Type)
!                         and then Known_Static_RM_Size (Exp_Type)
!                         and then RM_Size (Exp_Type) <= System_Max_Integer_Size
!                         and then not Has_Discriminants (Exp_Type)
!                         and then not Is_By_Reference_Type (Exp_Type)))
          and then (Variable_Ref
                     or else (not Is_Name_Reference (Exp)
                               and then Nkind (Exp) /= N_Type_Conversion)
*************** package body Exp_Util is
*** 11475,11486 ****
           goto Leave;
  
        --  If this is a type conversion, leave the type conversion and remove
!       --  the side effects in the expression. This is important in several
!       --  circumstances: for change of representations, and also when this is a
!       --  view conversion to a smaller object, where gigi can end up creating
!       --  its own temporary of the wrong size.
  
!       elsif Nkind (Exp) = N_Type_Conversion then
           Remove_Side_Effects (Expression (Exp), Name_Req, Variable_Ref);
  
           --  Generating C code the type conversion of an access to constrained
--- 11670,11684 ----
           goto Leave;
  
        --  If this is a type conversion, leave the type conversion and remove
!       --  side effects in the expression, unless it is of universal integer,
!       --  which is a very large type for a temporary. This is important in
!       --  several circumstances: for change of representations and also when
!       --  this is a view conversion to a smaller object, where gigi can end
!       --  up creating its own temporary of the wrong size.
  
!       elsif Nkind (Exp) = N_Type_Conversion
!         and then Etype (Expression (Exp)) /= Universal_Integer
!       then
           Remove_Side_Effects (Expression (Exp), Name_Req, Variable_Ref);
  
           --  Generating C code the type conversion of an access to constrained
*************** package body Exp_Util is
*** 11543,11549 ****
              Insert_Action (Exp, E);
           end if;
  
!       --  For expressions that denote names, we can use a renaming scheme.
        --  This is needed for correctness in the case of a volatile object of
        --  a nonvolatile type because the Make_Reference call of the "default"
        --  approach would generate an illegal access value (an access value
--- 11741,11765 ----
              Insert_Action (Exp, E);
           end if;
  
!       --  If this is a packed array component or a selected component with a
!       --  nonstandard representation, we cannot generate a reference because
!       --  the component may be unaligned, so we must use a renaming and this
!       --  renaming is handled by the front end, as the back end may balk at
!       --  the nonstandard representation (see Evaluation_Required in Exp_Ch8).
! 
!       elsif Nkind (Exp) in N_Indexed_Component | N_Selected_Component
!         and then Has_Non_Standard_Rep (Etype (Prefix (Exp)))
!       then
!          Def_Id := Build_Temporary (Loc, 'R', Exp);
!          Res := New_Occurrence_Of (Def_Id, Loc);
! 
!          Insert_Action (Exp,
!            Make_Object_Renaming_Declaration (Loc,
!              Defining_Identifier => Def_Id,
!              Subtype_Mark        => New_Occurrence_Of (Exp_Type, Loc),
!              Name                => Relocate_Node (Exp)));
! 
!       --  For an expression that denotes a name, we can use a renaming scheme.
        --  This is needed for correctness in the case of a volatile object of
        --  a nonvolatile type because the Make_Reference call of the "default"
        --  approach would generate an illegal access value (an access value
*************** package body Exp_Util is
*** 11566,11587 ****
               Subtype_Mark        => New_Occurrence_Of (Exp_Type, Loc),
               Name                => Relocate_Node (Exp)));
  
-          --  If this is a packed reference, or a selected component with
-          --  a nonstandard representation, a reference to the temporary
-          --  will be replaced by a copy of the original expression (see
-          --  Exp_Ch2.Expand_Renaming). Otherwise the temporary must be
-          --  elaborated by gigi, and is of course not to be replaced in-line
-          --  by the expression it renames, which would defeat the purpose of
-          --  removing the side effect.
- 
-          if Nkind_In (Exp, N_Selected_Component, N_Indexed_Component)
-            and then Has_Non_Standard_Rep (Etype (Prefix (Exp)))
-          then
-             null;
-          else
-             Set_Is_Renaming_Of_Object (Def_Id, False);
-          end if;
- 
        --  Avoid generating a variable-sized temporary, by generating the
        --  reference just for the function call. The transformation could be
        --  refined to apply only when the array component is constrained by a
--- 11782,11787 ----
*************** package body Exp_Util is
*** 11597,11611 ****
        --  Otherwise we generate a reference to the expression
  
        else
-          --  An expression which is in SPARK mode is considered side effect
-          --  free if the resulting value is captured by a variable or a
-          --  constant.
- 
-          if GNATprove_Mode
-            and then Nkind (Parent (Exp)) = N_Object_Declaration
-          then
-             goto Leave;
- 
           --  When generating C code we cannot consider side effect free object
           --  declarations that have discriminants and are initialized by means
           --  of a function call since on this target there is no secondary
--- 11797,11802 ----
*************** package body Exp_Util is
*** 11619,11625 ****
           --  be identified here to avoid entering into a never-ending loop
           --  generating internal object declarations.
  
!          elsif Modify_Tree_For_C
             and then Nkind (Parent (Exp)) = N_Object_Declaration
             and then
               (Nkind (Exp) /= N_Function_Call
--- 11810,11816 ----
           --  be identified here to avoid entering into a never-ending loop
           --  generating internal object declarations.
  
!          if Modify_Tree_For_C
             and then Nkind (Parent (Exp)) = N_Object_Declaration
             and then
               (Nkind (Exp) /= N_Function_Call
*************** package body Exp_Util is
*** 12001,12008 ****
                 --  and view swaps, the parent type is taken from the formal
                 --  parameter of the subprogram being called.
  
!                if Nkind_In (Context, N_Function_Call,
!                                      N_Procedure_Call_Statement)
                   and then No (Type_Map.Get (Entity (Name (Context))))
                 then
                    New_Ref :=
--- 12192,12198 ----
                 --  and view swaps, the parent type is taken from the formal
                 --  parameter of the subprogram being called.
  
!                if Nkind (Context) in N_Subprogram_Call
                   and then No (Type_Map.Get (Entity (Name (Context))))
                 then
                    New_Ref :=
*************** package body Exp_Util is
*** 12117,12129 ****
        procedure Replace_Type_Ref (N : Node_Id) is
        begin
           --  Decorate the reference to Typ even though it may be rewritten
!          --  further down. This is done for two reasons:
! 
!          --    * ASIS has all necessary semantic information in the original
!          --      tree.
! 
!          --    * Routines which examine properties of the Original_Node have
!          --      some semantic information.
  
           if Nkind (N) = N_Identifier then
              Set_Entity (N, Typ);
--- 12307,12314 ----
        procedure Replace_Type_Ref (N : Node_Id) is
        begin
           --  Decorate the reference to Typ even though it may be rewritten
!          --  further down. This is done so that routines which examine
!          --  properties of the Original_Node have some semantic information.
  
           if Nkind (N) = N_Identifier then
              Set_Entity (N, Typ);
*************** package body Exp_Util is
*** 12173,12181 ****
        Lib_Level : Boolean) return Boolean
     is
        At_Lib_Level : constant Boolean :=
!                        Lib_Level
!                          and then Nkind_In (N, N_Package_Body,
!                                                N_Package_Specification);
        --  N is at the library level if the top-most context is a package and
        --  the path taken to reach N does not include nonpackage constructs.
  
--- 12358,12365 ----
        Lib_Level : Boolean) return Boolean
     is
        At_Lib_Level : constant Boolean :=
!         Lib_Level
!           and then Nkind (N) in N_Package_Body | N_Package_Specification;
        --  N is at the library level if the top-most context is a package and
        --  the path taken to reach N does not include nonpackage constructs.
  
*************** package body Exp_Util is
*** 12450,12457 ****
              if Is_Ignored_Ghost_Entity (Typ) then
                 null;
  
!             elsif ((Is_Access_Type (Typ)
!                       and then not Is_Access_Subprogram_Type (Typ)
                        and then Needs_Finalization
                                   (Available_View (Designated_Type (Typ))))
                      or else (Is_Type (Typ) and then Needs_Finalization (Typ)))
--- 12634,12640 ----
              if Is_Ignored_Ghost_Entity (Typ) then
                 null;
  
!             elsif ((Is_Access_Object_Type (Typ)
                        and then Needs_Finalization
                                   (Available_View (Designated_Type (Typ))))
                      or else (Is_Type (Typ) and then Needs_Finalization (Typ)))
*************** package body Exp_Util is
*** 12552,12559 ****
  
        if (Nkind (Pexp) = N_Assignment_Statement
             and then Expression (Pexp) = Exp)
!         or else Nkind_In (Pexp, N_Object_Declaration,
!                                 N_Object_Renaming_Declaration)
        then
           return True;
  
--- 12735,12742 ----
  
        if (Nkind (Pexp) = N_Assignment_Statement
             and then Expression (Pexp) = Exp)
!         or else Nkind (Pexp)
!                   in N_Object_Declaration | N_Object_Renaming_Declaration
        then
           return True;
  
*************** package body Exp_Util is
*** 12566,12578 ****
        elsif Nkind (Pexp) = N_Selected_Component
          and then Prefix (Pexp) = Exp
        then
!          if No (Etype (Pexp)) then
!             return True;
!          else
!             return
!               not Has_Discriminants (Etype (Pexp))
!                 or else Is_Constrained (Etype (Pexp));
!          end if;
        end if;
  
        --  Set the output type, this comes from Etype if it is set, otherwise we
--- 12749,12758 ----
        elsif Nkind (Pexp) = N_Selected_Component
          and then Prefix (Pexp) = Exp
        then
!          return No (Etype (Pexp))
!            or else not Is_Type (Etype (Pexp))
!            or else not Has_Discriminants (Etype (Pexp))
!            or else Is_Constrained (Etype (Pexp));
        end if;
  
        --  Set the output type, this comes from Etype if it is set, otherwise we
*************** package body Exp_Util is
*** 12767,12773 ****
                 --  they occur at the same level. If the second one is nested,
                 --  then the decision is neither right nor wrong (it would be
                 --  equally OK to leave the outer one in place, or take the new
!                --  inner one. Really we should record both, but our data
                 --  structures are not that elaborate.
  
                 if Nkind (Current_Value (Ent)) not in N_Subexpr then
--- 12947,12953 ----
                 --  they occur at the same level. If the second one is nested,
                 --  then the decision is neither right nor wrong (it would be
                 --  equally OK to leave the outer one in place, or take the new
!                --  inner one). Really we should record both, but our data
                 --  structures are not that elaborate.
  
                 if Nkind (Current_Value (Ent)) not in N_Subexpr then
*************** package body Exp_Util is
*** 12812,12821 ****
                 Set_Entity_Current_Value (Right_Opnd (Cond));
              end if;
  
!          elsif Nkind_In (Cond,
!                  N_Type_Conversion,
!                  N_Qualified_Expression,
!                  N_Expression_With_Actions)
           then
              Set_Expression_Current_Value (Expression (Cond));
  
--- 12992,13000 ----
                 Set_Entity_Current_Value (Right_Opnd (Cond));
              end if;
  
!          elsif Nkind (Cond) in N_Type_Conversion
!                              | N_Qualified_Expression
!                              | N_Expression_With_Actions
           then
              Set_Expression_Current_Value (Expression (Cond));
  
*************** package body Exp_Util is
*** 12888,12894 ****
              if Nkind (N) = N_Subprogram_Body
                and then Address_Taken (Spec_Id)
                and then
!                 Ekind_In (Scope (Spec_Id), E_Block, E_Procedure, E_Function)
              then
                 declare
                    Loc   : constant Source_Ptr := Sloc (N);
--- 13067,13073 ----
              if Nkind (N) = N_Subprogram_Body
                and then Address_Taken (Spec_Id)
                and then
!                 Ekind (Scope (Spec_Id)) in E_Block | E_Procedure | E_Function
              then
                 declare
                    Loc   : constant Source_Ptr := Sloc (N);
*************** package body Exp_Util is
*** 13112,13118 ****
           elsif Is_Entity_Name (N) then
              return Ekind (Entity (N)) = E_In_Parameter;
  
!          elsif Nkind_In (N, N_Indexed_Component, N_Selected_Component) then
              return Within_In_Parameter (Prefix (N));
  
           else
--- 13291,13297 ----
           elsif Is_Entity_Name (N) then
              return Ekind (Entity (N)) = E_In_Parameter;
  
!          elsif Nkind (N) in N_Indexed_Component | N_Selected_Component then
              return Within_In_Parameter (Prefix (N));
  
           else
*************** package body Exp_Util is
*** 13193,13201 ****
              --  explicit dereference, then the designated object could
              --  be modified by an assignment.
  
!             if Nkind_In (RO, N_Indexed_Component,
!                              N_Explicit_Dereference)
!             then
                 return False;
  
              --  A selected component must have a safe prefix
--- 13372,13378 ----
              --  explicit dereference, then the designated object could
              --  be modified by an assignment.
  
!             if Nkind (RO) in N_Indexed_Component | N_Explicit_Dereference then
                 return False;
  
              --  A selected component must have a safe prefix
*************** package body Exp_Util is
*** 13244,13301 ****
  
        case Nkind (N) is
  
!          --  An attribute reference is side effect free if its expressions
!          --  are side effect free and its prefix is side effect free or
!          --  is an entity reference.
! 
!          --  Is this right? what about x'first where x is a variable???
  
           when N_Attribute_Reference =>
!             Attribute_Reference : declare
! 
!                function Side_Effect_Free_Attribute
!                  (Attribute_Name : Name_Id) return Boolean;
!                --  Returns True if evaluation of the given attribute is
!                --  considered side-effect free (independent of prefix and
!                --  arguments).
! 
!                --------------------------------
!                -- Side_Effect_Free_Attribute --
!                --------------------------------
! 
!                function Side_Effect_Free_Attribute
!                  (Attribute_Name : Name_Id) return Boolean
!                is
!                begin
!                   case Attribute_Name is
!                      when Name_Input =>
!                         return False;
! 
!                      when Name_Image
!                         | Name_Img
!                         | Name_Wide_Image
!                         | Name_Wide_Wide_Image
!                      =>
!                         --  CodePeer doesn't want to see replicated copies of
!                         --  'Image calls.
! 
!                         return not CodePeer_Mode;
! 
!                      when others =>
!                         return True;
!                   end case;
!                end Side_Effect_Free_Attribute;
! 
!             --  Start of processing for Attribute_Reference
! 
!             begin
!                return
!                  Side_Effect_Free (Expressions (N), Name_Req, Variable_Ref)
!                    and then Side_Effect_Free_Attribute (Attribute_Name (N))
!                    and then (Is_Entity_Name (Prefix (N))
!                               or else Side_Effect_Free
!                                         (Prefix (N), Name_Req, Variable_Ref));
!             end Attribute_Reference;
  
           --  A binary operator is side effect free if and both operands are
           --  side effect free. For this purpose binary operators include
--- 13421,13438 ----
  
        case Nkind (N) is
  
!          --  An attribute reference is side-effect free if its expressions
!          --  are side-effect free and its prefix is side-effect free or is
!          --  an entity reference.
  
           when N_Attribute_Reference =>
!             return Side_Effect_Free_Attribute (Attribute_Name (N))
!                      and then
!                    Side_Effect_Free (Expressions (N), Name_Req, Variable_Ref)
!                      and then
!                    (Is_Entity_Name (Prefix (N))
!                       or else
!                     Side_Effect_Free (Prefix (N), Name_Req, Variable_Ref));
  
           --  A binary operator is side effect free if and both operands are
           --  side effect free. For this purpose binary operators include
*************** package body Exp_Util is
*** 13416,13421 ****
--- 13553,13564 ----
           =>
              return True;
  
+          --  An aggregate is side effect free if all its values are compile
+          --  time known.
+ 
+          when N_Aggregate =>
+             return Compile_Time_Known_Aggregate (N);
+ 
           --  We consider that anything else has side effects. This is a bit
           --  crude, but we are pretty close for most common cases, and we
           --  are certainly correct (i.e. we never return True when the
*************** package body Exp_Util is
*** 13454,13459 ****
--- 13597,13626 ----
        end if;
     end Side_Effect_Free;
  
+    --------------------------------
+    -- Side_Effect_Free_Attribute --
+    --------------------------------
+ 
+    function Side_Effect_Free_Attribute (Name : Name_Id) return Boolean is
+    begin
+       case Name is
+          when Name_Input =>
+             return False;
+ 
+          when Name_Image
+             | Name_Img
+             | Name_Wide_Image
+             | Name_Wide_Wide_Image
+          =>
+             --  CodePeer doesn't want to see replicated copies of 'Image calls
+ 
+             return not CodePeer_Mode;
+ 
+          when others =>
+             return True;
+       end case;
+    end Side_Effect_Free_Attribute;
+ 
     ----------------------------------
     -- Silly_Boolean_Array_Not_Test --
     ----------------------------------
*************** package body Exp_Util is
*** 13565,13651 ****
            Reason    => CE_Range_Check_Failed));
     end Silly_Boolean_Array_Xor_Test;
  
!    --------------------------
!    -- Target_Has_Fixed_Ops --
!    --------------------------
! 
!    Integer_Sized_Small : Ureal;
!    --  Set to 2.0 ** -(Integer'Size - 1) the first time that this function is
!    --  called (we don't want to compute it more than once).
! 
!    Long_Integer_Sized_Small : Ureal;
!    --  Set to 2.0 ** -(Long_Integer'Size - 1) the first time that this function
!    --  is called (we don't want to compute it more than once)
! 
!    First_Time_For_THFO : Boolean := True;
!    --  Set to False after first call (if Fractional_Fixed_Ops_On_Target)
  
!    function Target_Has_Fixed_Ops
!      (Left_Typ   : Entity_Id;
!       Right_Typ  : Entity_Id;
!       Result_Typ : Entity_Id) return Boolean
     is
!       function Is_Fractional_Type (Typ : Entity_Id) return Boolean;
!       --  Return True if the given type is a fixed-point type with a small
!       --  value equal to 2 ** (-(T'Object_Size - 1)) and whose values have
!       --  an absolute value less than 1.0. This is currently limited to
!       --  fixed-point types that map to Integer or Long_Integer.
! 
!       ------------------------
!       -- Is_Fractional_Type --
!       ------------------------
! 
!       function Is_Fractional_Type (Typ : Entity_Id) return Boolean is
!       begin
!          if Esize (Typ) = Standard_Integer_Size then
!             return Small_Value (Typ) = Integer_Sized_Small;
! 
!          elsif Esize (Typ) = Standard_Long_Integer_Size then
!             return Small_Value (Typ) = Long_Integer_Sized_Small;
  
           else
!             return False;
           end if;
-       end Is_Fractional_Type;
- 
-    --  Start of processing for Target_Has_Fixed_Ops
  
!    begin
!       --  Return False if Fractional_Fixed_Ops_On_Target is false
  
!       if not Fractional_Fixed_Ops_On_Target then
!          return False;
!       end if;
  
!       --  Here the target has Fractional_Fixed_Ops, if first time, compute
!       --  standard constants used by Is_Fractional_Type.
  
!       if First_Time_For_THFO then
!          First_Time_For_THFO := False;
  
!          Integer_Sized_Small :=
!            UR_From_Components
!              (Num   => Uint_1,
!               Den   => UI_From_Int (Standard_Integer_Size - 1),
!               Rbase => 2);
  
!          Long_Integer_Sized_Small :=
!            UR_From_Components
!              (Num   => Uint_1,
!               Den   => UI_From_Int (Standard_Long_Integer_Size - 1),
!               Rbase => 2);
        end if;
! 
!       --  Return True if target supports fixed-by-fixed multiply/divide for
!       --  fractional fixed-point types (see Is_Fractional_Type) and the operand
!       --  and result types are equivalent fractional types.
! 
!       return Is_Fractional_Type (Base_Type (Left_Typ))
!         and then Is_Fractional_Type (Base_Type (Right_Typ))
!         and then Is_Fractional_Type (Base_Type (Result_Typ))
!         and then Esize (Left_Typ) = Esize (Right_Typ)
!         and then Esize (Left_Typ) = Esize (Result_Typ);
!    end Target_Has_Fixed_Ops;
  
     -------------------
     -- Type_Map_Hash --
--- 13732,13792 ----
            Reason    => CE_Range_Check_Failed));
     end Silly_Boolean_Array_Xor_Test;
  
!    ----------------------------
!    -- Small_Integer_Type_For --
!    ----------------------------
  
!    function Small_Integer_Type_For (S : Uint; Uns : Boolean) return Entity_Id
     is
!    begin
!       pragma Assert (S <= System_Max_Integer_Size);
  
+       if S <= Standard_Short_Short_Integer_Size then
+          if Uns then
+             return Standard_Short_Short_Unsigned;
           else
!             return Standard_Short_Short_Integer;
           end if;
  
!       elsif S <= Standard_Short_Integer_Size then
!          if Uns then
!             return Standard_Short_Unsigned;
!          else
!             return Standard_Short_Integer;
!          end if;
  
!       elsif S <= Standard_Integer_Size then
!          if Uns then
!             return Standard_Unsigned;
!          else
!             return Standard_Integer;
!          end if;
  
!       elsif S <= Standard_Long_Integer_Size then
!          if Uns then
!             return Standard_Long_Unsigned;
!          else
!             return Standard_Long_Integer;
!          end if;
  
!       elsif S <= Standard_Long_Long_Integer_Size then
!          if Uns then
!             return Standard_Long_Long_Unsigned;
!          else
!             return Standard_Long_Long_Integer;
!          end if;
  
!       elsif S <= Standard_Long_Long_Long_Integer_Size then
!          if Uns then
!             return Standard_Long_Long_Long_Unsigned;
!          else
!             return Standard_Long_Long_Long_Integer;
!          end if;
  
!       else
!          raise Program_Error;
        end if;
!    end Small_Integer_Type_For;
  
     -------------------
     -- Type_Map_Hash --
*************** package body Exp_Util is
*** 13734,13741 ****
  
        Par := Parent (N);
        while Present (Par) loop
!          if Nkind_In (Original_Node (Par), N_Case_Expression,
!                                            N_If_Expression)
           then
              return True;
  
--- 13875,13881 ----
  
        Par := Parent (N);
        while Present (Par) loop
!          if Nkind (Original_Node (Par)) in N_Case_Expression | N_If_Expression
           then
              return True;
  
*************** package body Exp_Util is
*** 13751,13761 ****
        return False;
     end Within_Case_Or_If_Expression;
  
!    --------------------------------
!    -- Within_Internal_Subprogram --
!    --------------------------------
  
!    function Within_Internal_Subprogram return Boolean is
        S : Entity_Id;
  
     begin
--- 13891,13901 ----
        return False;
     end Within_Case_Or_If_Expression;
  
!    ------------------------------
!    -- Predicate_Check_In_Scope --
!    ------------------------------
  
!    function Predicate_Check_In_Scope (N : Node_Id) return Boolean is
        S : Entity_Id;
  
     begin
*************** package body Exp_Util is
*** 13764,13773 ****
           S := Scope (S);
        end loop;
  
!       return Present (S)
!         and then Get_TSS_Name (S) /= TSS_Null
!         and then not Is_Predicate_Function (S)
!         and then not Is_Predicate_Function_M (S);
!    end Within_Internal_Subprogram;
  
  end Exp_Util;
--- 13904,13926 ----
           S := Scope (S);
        end loop;
  
!       if Present (S) then
! 
!          --  Predicate checks should only be enabled in init procs for
!          --  expressions coming from source.
! 
!          if Is_Init_Proc (S) then
!             return Comes_From_Source (N);
! 
!          elsif Get_TSS_Name (S) /= TSS_Null
!            and then not Is_Predicate_Function (S)
!            and then not Is_Predicate_Function_M (S)
!          then
!             return False;
!          end if;
!       end if;
! 
!       return True;
!    end Predicate_Check_In_Scope;
  
  end Exp_Util;
diff -Nrcpad gcc-10.3.0/gcc/ada/exp_util.ads gcc-11.1.0/gcc/ada/exp_util.ads
*** gcc-10.3.0/gcc/ada/exp_util.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/exp_util.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Util is
*** 293,315 ****
     --  type is frozen.
  
     function Build_DIC_Call
!      (Loc    : Source_Ptr;
!       Obj_Id : Entity_Id;
!       Typ    : Entity_Id) return Node_Id;
!    --  Build a call to the DIC procedure of type Typ with Obj_Id as the actual
     --  parameter.
  
     procedure Build_DIC_Procedure_Body
!      (Typ        : Entity_Id;
!       For_Freeze : Boolean := False);
     --  Create the body of the procedure which verifies the assertion expression
!    --  of pragma Default_Initial_Condition at run time. Flag For_Freeze should
!    --  be set when the body is constructed as part of the freezing actions for
!    --  Typ.
  
!    procedure Build_DIC_Procedure_Declaration (Typ : Entity_Id);
     --  Create the declaration of the procedure which verifies the assertion
!    --  expression of pragma Default_Initial_Condition at run time.
  
     procedure Build_Invariant_Procedure_Body
       (Typ               : Entity_Id;
--- 293,321 ----
     --  type is frozen.
  
     function Build_DIC_Call
!      (Loc      : Source_Ptr;
!       Obj_Name : Node_Id;
!       Typ      : Entity_Id) return Node_Id;
!    --  Build a call to the DIC procedure for Typ with Obj_Name as the actual
     --  parameter.
  
     procedure Build_DIC_Procedure_Body
!      (Typ         : Entity_Id;
!       Partial_DIC : Boolean := False);
     --  Create the body of the procedure which verifies the assertion expression
!    --  of pragma Default_Initial_Condition at run time. Partial_DIC indicates
!    --  that a partial DIC-checking procedure body should be built, for checking
!    --  a DIC associated with the type's partial view, and which will be called
!    --  by the main DIC procedure.
  
!    procedure Build_DIC_Procedure_Declaration
!      (Typ         : Entity_Id;
!       Partial_DIC : Boolean := False);
     --  Create the declaration of the procedure which verifies the assertion
!    --  expression of pragma Default_Initial_Condition at run time. Partial_DIC
!    --  indicates that a partial DIC-checking procedure should be declared,
!    --  for checking a DIC associated with the type's partial view, and which
!    --  will be called by the main DIC procedure.
  
     procedure Build_Invariant_Procedure_Body
       (Typ               : Entity_Id;
*************** package Exp_Util is
*** 427,437 ****
     --  for trouble using this function and, if so, the assignment is expanded
     --  component-wise, which the back end is required to handle correctly.
  
-    function Containing_Package_With_Ext_Axioms
-      (E : Entity_Id) return Entity_Id;
-    --  Returns the package entity with an external axiomatization containing E,
-    --  if any, or Empty if none.
- 
     procedure Convert_To_Actual_Subtype (Exp : Node_Id);
     --  The Etype of an expression is the nominal type of the expression,
     --  not the actual subtype. Often these are the same, but not always.
--- 433,438 ----
*************** package Exp_Util is
*** 687,696 ****
     --  of entity E, in all upper case, with an ASCII.NUL appended at the end
     --  of the name if Append_NUL is True.
  
-    procedure Generate_Poll_Call (N : Node_Id);
-    --  If polling is active, then a call to the Poll routine is built,
-    --  and then inserted before the given node N and analyzed.
- 
     procedure Get_Current_Value_Condition
       (Var : Node_Id;
        Op  : out Node_Kind;
--- 688,693 ----
*************** package Exp_Util is
*** 724,741 ****
     --  N_Op_Eq), or to determine the result of some other test in other cases
     --  (e.g. no access check required if N_Op_Ne Null).
  
     function Get_Stream_Size (E : Entity_Id) return Uint;
     --  Return the stream size value of the subtype E
  
     function Has_Access_Constraint (E : Entity_Id) return Boolean;
     --  Given object or type E, determine if a discriminant is of an access type
  
-    function Has_Annotate_Pragma_For_External_Axiomatization
-      (E : Entity_Id) return Boolean;
-    --  Returns whether E is a package entity, for which the initial list of
-    --  pragmas at the start of the package declaration contains
-    --    pragma Annotate (GNATprove, External_Axiomatization);
- 
     function Homonym_Number (Subp : Entity_Id) return Pos;
     --  Here subp is the entity for a subprogram. This routine returns the
     --  homonym number used to disambiguate overloaded subprograms in the same
--- 721,736 ----
     --  N_Op_Eq), or to determine the result of some other test in other cases
     --  (e.g. no access check required if N_Op_Ne Null).
  
+    function Get_Index_Subtype (N : Node_Id) return Entity_Id;
+    --  Used for First, Last, and Length, when the prefix is an array type.
+    --  Obtains the corresponding index subtype.
+ 
     function Get_Stream_Size (E : Entity_Id) return Uint;
     --  Return the stream size value of the subtype E
  
     function Has_Access_Constraint (E : Entity_Id) return Boolean;
     --  Given object or type E, determine if a discriminant is of an access type
  
     function Homonym_Number (Subp : Entity_Id) return Pos;
     --  Here subp is the entity for a subprogram. This routine returns the
     --  homonym number used to disambiguate overloaded subprograms in the same
*************** package Exp_Util is
*** 757,766 ****
     --  unconditionally executed, i.e. it is not within a loop or a conditional
     --  or a case statement etc.
  
!    function Is_All_Null_Statements (L : List_Id) return Boolean;
!    --  Return True if all the items of the list are N_Null_Statement nodes.
!    --  False otherwise. True for an empty list. It is an error to call this
!    --  routine with No_List as the argument.
  
     function Is_Displacement_Of_Object_Or_Function_Result
       (Obj_Id : Entity_Id) return Boolean;
--- 752,760 ----
     --  unconditionally executed, i.e. it is not within a loop or a conditional
     --  or a case statement etc.
  
!    function Integer_Type_For (S : Uint; Uns : Boolean) return Entity_Id;
!    --  Return a suitable standard integer type containing at least S bits and
!    --  of the signedness given by Uns.
  
     function Is_Displacement_Of_Object_Or_Function_Result
       (Obj_Id : Entity_Id) return Boolean;
*************** package Exp_Util is
*** 871,881 ****
     --  list. If Warn is True, a warning will be output at the start of N
     --  indicating the deletion of the code.
  
-    function Known_Non_Negative (Opnd : Node_Id) return Boolean;
-    --  Given a node for a subexpression, determines if it represents a value
-    --  that cannot possibly be negative, and if so returns True. A value of
-    --  False means that it is not known if the value is positive or negative.
- 
     function Make_Invariant_Call (Expr : Node_Id) return Node_Id;
     --  Generate a call to the Invariant_Procedure associated with the type of
     --  expression Expr. Expr is passed as an actual parameter in the call.
--- 865,870 ----
*************** package Exp_Util is
*** 906,911 ****
--- 895,909 ----
     --  wide type. Set Related_Id to request an external name for the subtype
     --  rather than an internal temporary.
  
+    function Make_Variant_Comparison
+      (Loc      : Source_Ptr;
+       Mode     : Name_Id;
+       Curr_Val : Node_Id;
+       Old_Val  : Node_Id) return Node_Id;
+    --  Subsidiary to the expansion of pragmas Loop_Variant and
+    --  Subprogram_Variant. Generate a comparison between Curr_Val and Old_Val
+    --  depending on the variant mode (Increases / Decreases).
+ 
     procedure Map_Types (Parent_Type : Entity_Id; Derived_Type : Entity_Id);
     --  Establish the following mapping between the attributes of tagged parent
     --  type Parent_Type and tagged derived type Derived_Type.
*************** package Exp_Util is
*** 947,957 ****
     --  consist of constants, when the object has a nontrivial initialization
     --  or is controlled.
  
-    function Non_Limited_Designated_Type (T : Entity_Id) return Entity_Id;
-    --  An anonymous access type may designate a limited view. Check whether
-    --  non-limited view is available during expansion, to examine components
-    --  or other characteristics of the full type.
- 
     function OK_To_Do_Constant_Replacement (E : Entity_Id) return Boolean;
     --  This function is used when testing whether or not to replace a reference
     --  to entity E by a known constant value. Such replacement must be done
--- 945,950 ----
*************** package Exp_Util is
*** 978,983 ****
--- 971,981 ----
     --  If so, returns the value K, otherwise returns zero. The caller checks
     --  that N is of an integer type.
  
+    function Predicate_Check_In_Scope (N : Node_Id) return Boolean;
+    --  Return True if predicate checks should be generated in the current
+    --  scope on the given node. Will return False for example when the current
+    --  scope is a predefined primitive operation.
+ 
     procedure Process_Statements_For_Controlled_Objects (N : Node_Id);
     --  N is a node which contains a non-handled statement list. Inspect the
     --  statements looking for declarations of controlled objects. If at least
*************** package Exp_Util is
*** 1161,1174 ****
     --  True..True, where a raise of a Constraint_Error exception is required
     --  (RM 4.5.6(6)) and ACATS-tested.
  
!    function Target_Has_Fixed_Ops
!      (Left_Typ   : Entity_Id;
!       Right_Typ  : Entity_Id;
!       Result_Typ : Entity_Id) return Boolean;
!    --  Returns True if and only if the target machine has direct support
!    --  for fixed-by-fixed multiplications and divisions for the given
!    --  operand and result types. This is called in package Exp_Fixd to
!    --  determine whether to expand such operations.
  
     function Type_May_Have_Bit_Aligned_Components
       (Typ : Entity_Id) return Boolean;
--- 1159,1167 ----
     --  True..True, where a raise of a Constraint_Error exception is required
     --  (RM 4.5.6(6)) and ACATS-tested.
  
!    function Small_Integer_Type_For (S : Uint; Uns : Boolean) return Entity_Id;
!    --  Return the smallest standard integer type containing at least S bits and
!    --  of the signedness given by Uns.
  
     function Type_May_Have_Bit_Aligned_Components
       (Typ : Entity_Id) return Boolean;
*************** package Exp_Util is
*** 1191,1203 ****
     function Within_Case_Or_If_Expression (N : Node_Id) return Boolean;
     --  Determine whether arbitrary node N is within a case or an if expression
  
-    function Within_Internal_Subprogram return Boolean;
-    --  Indicates that some expansion is taking place within the body of a
-    --  predefined primitive operation. Some expansion activity (e.g. predicate
-    --  checks) is disabled in such. Because we want to detect invalid uses
-    --  of function calls within predicates (which lead to infinite recursion)
-    --  predicate functions themselves are not considered internal here.
- 
  private
     pragma Inline (Duplicate_Subexpr);
     pragma Inline (Force_Evaluation);
--- 1184,1189 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/expander.adb gcc-11.1.0/gcc/ada/expander.adb
*** gcc-10.3.0/gcc/ada/expander.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/expander.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Expander is
*** 273,281 ****
                 when N_Generic_Instantiation =>
                    Expand_N_Generic_Instantiation (N);
  
-                when N_Goto_Statement =>
-                   Expand_N_Goto_Statement (N);
- 
                 when N_Handled_Sequence_Of_Statements =>
                    Expand_N_Handled_Sequence_Of_Statements (N);
  
--- 273,278 ----
*************** package body Expander is
*** 545,554 ****
  
     procedure Expander_Mode_Restore is
     begin
!       --  Not active (has no effect) in ASIS and GNATprove modes (see comments
        --  in spec of Expander_Mode_Save_And_Set).
  
!       if ASIS_Mode or GNATprove_Mode then
           return;
        end if;
  
--- 542,551 ----
  
     procedure Expander_Mode_Restore is
     begin
!       --  Not active (has no effect) in GNATprove mode (see comments
        --  in spec of Expander_Mode_Save_And_Set).
  
!       if GNATprove_Mode then
           return;
        end if;
  
*************** package body Expander is
*** 572,581 ****
  
     procedure Expander_Mode_Save_And_Set (Status : Boolean) is
     begin
!       --  Not active (has no effect) in ASIS and GNATprove modes (see comments
        --  in spec of Expander_Mode_Save_And_Set).
  
!       if ASIS_Mode or GNATprove_Mode then
           return;
        end if;
  
--- 569,578 ----
  
     procedure Expander_Mode_Save_And_Set (Status : Boolean) is
     begin
!       --  Not active (has no effect) in GNATprove modes (see comments
        --  in spec of Expander_Mode_Save_And_Set).
  
!       if GNATprove_Mode then
           return;
        end if;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/expander.ads gcc-11.1.0/gcc/ada/expander.ads
*** gcc-10.3.0/gcc/ada/expander.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/expander.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 73,81 ****
  --  For nodes other than subexpressions, it is not necessary to preserve the
  --  original tree in the Expand routines, unlike the case for modifications
  --  to the tree made in the semantic analyzer. This is because anyone who is
! --  interested in working with the original tree (like ASIS) is required to
! --  compile in semantics checks only mode. Thus Replace may be freely used
! --  in such instances.
  
  --  For subexpressions, preservation of the original tree is required because
  --  of the need for conformance checking of default expressions, which occurs
--- 73,81 ----
  --  For nodes other than subexpressions, it is not necessary to preserve the
  --  original tree in the Expand routines, unlike the case for modifications
  --  to the tree made in the semantic analyzer. This is because anyone who is
! --  interested in working with the original tree is required to compile in
! --  semantics checks only mode. Thus Replace may be freely used in such
! --  instances.
  
  --  For subexpressions, preservation of the original tree is required because
  --  of the need for conformance checking of default expressions, which occurs
*************** package Expander is
*** 150,169 ****
     --  Saves the current setting of the Expander_Active flag on an internal
     --  stack and then sets the flag to the given value.
     --
!    --  Note: this routine has no effect in ASIS and GNATprove modes. In ASIS
!    --  mode, all expansion activity is always off, since we want the original
!    --  semantic tree for ASIS purposes without any expansion. In GNATprove
!    --  mode, a very light expansion is performed on specific nodes. Both are
!    --  achieved by setting Expander_Active False in ASIS and GNATprove modes.
     --  In situations such as the call to Instantiate_Bodies in Frontend,
     --  Expander_Mode_Save_And_Set may be called to temporarily turn the
!    --  expander on, but this will have no effect in ASIS and GNATprove modes.
  
     procedure Expander_Mode_Restore;
     --  Restores the setting of the Expander_Active flag using the top entry
     --  pushed onto the stack by Expander_Mode_Save_And_Reset, popping the
     --  stack, except that if any errors have been detected, then the state of
!    --  the flag is left set to False. Disabled for ASIS and GNATprove modes
!    --  (see above).
  
  end Expander;
--- 150,166 ----
     --  Saves the current setting of the Expander_Active flag on an internal
     --  stack and then sets the flag to the given value.
     --
!    --  Note: this routine has no effect in GNATprove mode. In this mode,
!    --  a very light expansion is performed on specific nodes and
!    --  Expander_Active is set to False.
     --  In situations such as the call to Instantiate_Bodies in Frontend,
     --  Expander_Mode_Save_And_Set may be called to temporarily turn the
!    --  expander on, but this will have no effect in GNATprove mode.
  
     procedure Expander_Mode_Restore;
     --  Restores the setting of the Expander_Active flag using the top entry
     --  pushed onto the stack by Expander_Mode_Save_And_Reset, popping the
     --  stack, except that if any errors have been detected, then the state of
!    --  the flag is left set to False. Disabled for GNATprove mode (see above).
  
  end Expander;
diff -Nrcpad gcc-10.3.0/gcc/ada/expect.c gcc-11.1.0/gcc/ada/expect.c
*** gcc-10.3.0/gcc/ada/expect.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/expect.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *                     Copyright (C) 2001-2019, AdaCore                     *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *                     Copyright (C) 2001-2020, AdaCore                     *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 39,44 ****
--- 39,45 ----
  #include "system.h"
  #endif
  
+ #include "adaint.h"
  #include <sys/types.h>
  
  #ifdef __MINGW32__
*************** __gnat_waitpid (int pid)
*** 85,95 ****
  {
    HANDLE h = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pid);
    DWORD exitcode = 1;
-   DWORD res;
  
    if (h != NULL)
      {
!       res = WaitForSingleObject (h, INFINITE);
        GetExitCodeProcess (h, &exitcode);
        CloseHandle (h);
      }
--- 86,95 ----
  {
    HANDLE h = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pid);
    DWORD exitcode = 1;
  
    if (h != NULL)
      {
!       (void) WaitForSingleObject (h, INFINITE);
        GetExitCodeProcess (h, &exitcode);
        CloseHandle (h);
      }
*************** __gnat_expect_fork (void)
*** 105,111 ****
  }
  
  void
! __gnat_expect_portable_execvp (int *pid, char *cmd, char *argv[])
  {
    *pid = __gnat_portable_no_block_spawn (argv);
  }
--- 105,112 ----
  }
  
  void
! __gnat_expect_portable_execvp (int *pid, char *cmd ATTRIBUTE_UNUSED,
!                                char *argv[])
  {
    *pid = __gnat_portable_no_block_spawn (argv);
  }
*************** __gnat_pipe (int *fd)
*** 359,365 ****
  int
  __gnat_expect_fork (void)
  {
!   return fork ();
  }
  
  void
--- 360,370 ----
  int
  __gnat_expect_fork (void)
  {
!   int pid = fork();
!   if (pid == 0) {
!     __gnat_in_child_after_fork = 1;
!   }
!   return pid;
  }
  
  void
diff -Nrcpad gcc-10.3.0/gcc/ada/fe.h gcc-11.1.0/gcc/ada/fe.h
*** gcc-10.3.0/gcc/ada/fe.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/fe.h	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** extern int Compiler_Abort (String_Pointe
*** 59,67 ****
--- 59,69 ----
  
  /* debug: */
  
+ #define Debug_Flag_Dot_KK	debug__debug_flag_dot_kk
  #define Debug_Flag_Dot_R	debug__debug_flag_dot_r
  #define Debug_Flag_NN		debug__debug_flag_nn
  
+ extern Boolean Debug_Flag_Dot_KK;
  extern Boolean Debug_Flag_Dot_R;
  extern Boolean Debug_Flag_NN;
  
*************** extern Boolean In_Extended_Main_Code_Uni
*** 190,195 ****
--- 192,198 ----
  #define Ada_Version			opt__ada_version
  #define Back_End_Inlining		opt__back_end_inlining
  #define Debug_Generated_Code		opt__debug_generated_code
+ #define Enable_128bit_Types		opt__enable_128bit_types
  #define Exception_Extra_Info		opt__exception_extra_info
  #define Exception_Locations_Suppressed	opt__exception_locations_suppressed
  #define Exception_Mechanism		opt__exception_mechanism
*************** typedef enum {
*** 210,215 ****
--- 213,219 ----
  extern Ada_Version_Type Ada_Version;
  extern Boolean Back_End_Inlining;
  extern Boolean Debug_Generated_Code;
+ extern Boolean Enable_128bit_Types;
  extern Boolean Exception_Extra_Info;
  extern Boolean Exception_Locations_Suppressed;
  extern Exception_Mechanism_Type Exception_Mechanism;
*************** extern Boolean No_Exception_Handlers_Set
*** 253,261 ****
  
  /* sem_aggr:  */
  
! #define Is_Others_Aggregate	sem_aggr__is_others_aggregate
  
! extern Boolean Is_Others_Aggregate	(Node_Id);
  
  /* sem_aux:  */
  
--- 257,265 ----
  
  /* sem_aggr:  */
  
! #define Is_Single_Aggregate	sem_aggr__is_single_aggregate
  
! extern Boolean Is_Single_Aggregate	(Node_Id);
  
  /* sem_aux:  */
  
*************** extern Boolean Is_Derived_Type			(Entity
*** 278,287 ****
  /* sem_eval: */
  
  #define Compile_Time_Known_Value	sem_eval__compile_time_known_value
- #define Is_OK_Static_Expression		sem_eval__is_ok_static_expression
  
  extern Boolean Compile_Time_Known_Value	(Node_Id);
- extern Boolean Is_OK_Static_Expression	(Node_Id);
  
  /* sem_util: */
  
--- 282,289 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/final.c gcc-11.1.0/gcc/ada/final.c
*** gcc-10.3.0/gcc/ada/final.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/final.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/fmap.adb gcc-11.1.0/gcc/ada/fmap.adb
*** gcc-10.3.0/gcc/ada/fmap.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/fmap.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Fmap is
*** 162,173 ****
  
     function Hash (F : File_Name_Type) return Header_Num is
     begin
!       return Header_Num (Int (F) rem Header_Num'Range_Length);
     end Hash;
  
     function Hash (F : Unit_Name_Type) return Header_Num is
     begin
!       return Header_Num (Int (F) rem Header_Num'Range_Length);
     end Hash;
  
     ----------------
--- 162,173 ----
  
     function Hash (F : File_Name_Type) return Header_Num is
     begin
!       return Header_Num (Int (F) mod Header_Num'Range_Length);
     end Hash;
  
     function Hash (F : Unit_Name_Type) return Header_Num is
     begin
!       return Header_Num (Int (F) mod Header_Num'Range_Length);
     end Hash;
  
     ----------------
diff -Nrcpad gcc-10.3.0/gcc/ada/fmap.ads gcc-11.1.0/gcc/ada/fmap.ads
*** gcc-10.3.0/gcc/ada/fmap.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/fmap.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/fname-sf.adb gcc-11.1.0/gcc/ada/fname-sf.adb
*** gcc-10.3.0/gcc/ada/fname-sf.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/fname-sf.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/fname-sf.ads gcc-11.1.0/gcc/ada/fname-sf.ads
*** gcc-10.3.0/gcc/ada/fname-sf.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/fname-sf.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/fname-uf.adb gcc-11.1.0/gcc/ada/fname-uf.adb
*** gcc-10.3.0/gcc/ada/fname-uf.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/fname-uf.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Fname.UF is
*** 598,604 ****
  
     function SFN_Hash (F : Unit_Name_Type) return SFN_Header_Num is
     begin
!       return SFN_Header_Num (Int (F) rem SFN_Header_Num'Range_Length);
     end SFN_Hash;
  
  begin
--- 598,604 ----
  
     function SFN_Hash (F : Unit_Name_Type) return SFN_Header_Num is
     begin
!       return SFN_Header_Num (Int (F) mod SFN_Header_Num'Range_Length);
     end SFN_Hash;
  
  begin
diff -Nrcpad gcc-10.3.0/gcc/ada/fname-uf.ads gcc-11.1.0/gcc/ada/fname-uf.ads
*** gcc-10.3.0/gcc/ada/fname-uf.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/fname-uf.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/fname.adb gcc-11.1.0/gcc/ada/fname.adb
*** gcc-10.3.0/gcc/ada/fname.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/fname.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,62 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with Alloc;
- with Table;
- with Types; use Types;
- 
  package body Fname is
  
-    -----------------------------
-    -- Dummy Table Definitions --
-    -----------------------------
- 
-    --  The following table was used in old versions of the compiler. We retain
-    --  the declarations here for compatibility with old tree files. The new
-    --  version of the compiler does not use this table, and will write out a
-    --  dummy empty table for Tree_Write.
- 
-    type SFN_Entry is record
-       U : Unit_Name_Type;
-       F : File_Name_Type;
-    end record;
- 
-    package SFN_Table is new Table.Table (
-      Table_Component_Type => SFN_Entry,
-      Table_Index_Type     => Int,
-      Table_Low_Bound      => 0,
-      Table_Initial        => Alloc.SFN_Table_Initial,
-      Table_Increment      => Alloc.SFN_Table_Increment,
-      Table_Name           => "Fname_Dummy_Table");
- 
     function Has_Internal_Extension (Fname : String) return Boolean;
     pragma Inline (Has_Internal_Extension);
     --  True if the extension is appropriate for an internal/predefined unit.
--- 6,30 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  --                                                                          --
  ------------------------------------------------------------------------------
  
  package body Fname is
  
     function Has_Internal_Extension (Fname : String) return Boolean;
     pragma Inline (Has_Internal_Extension);
     --  True if the extension is appropriate for an internal/predefined unit.
*************** package body Fname is
*** 166,176 ****
        Renamings_Included : Boolean := True) return Boolean
     is
     begin
!       --  Definitely false if longer than 12 characters (8.3)
!       --  except for the Interfaces packages
  
        if Fname'Length > 12
          and then Fname (Fname'First .. Fname'First + 1) /= "i-"
        then
           return False;
        end if;
--- 134,146 ----
        Renamings_Included : Boolean := True) return Boolean
     is
     begin
!       --  Definitely false if longer than 12 characters (8.3), except for the
!       --  Interfaces packages and also the implementation units of the 128-bit
!       --  types under System.
  
        if Fname'Length > 12
          and then Fname (Fname'First .. Fname'First + 1) /= "i-"
+         and then Fname (Fname'First .. Fname'First + 1) /= "s-"
        then
           return False;
        end if;
*************** package body Fname is
*** 268,289 ****
        return Result;
     end Is_Predefined_Renaming_File_Name;
  
-    ---------------
-    -- Tree_Read --
-    ---------------
- 
-    procedure Tree_Read is
-    begin
-       SFN_Table.Tree_Read;
-    end Tree_Read;
- 
-    ----------------
-    -- Tree_Write --
-    ----------------
- 
-    procedure Tree_Write is
-    begin
-       SFN_Table.Tree_Write;
-    end Tree_Write;
- 
  end Fname;
--- 238,241 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/fname.ads gcc-11.1.0/gcc/ada/fname.ads
*** gcc-10.3.0/gcc/ada/fname.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/fname.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Fname is
*** 100,113 ****
     function Is_GNAT_File_Name (Fname : File_Name_Type) return Boolean;
     --  True for units in the GNAT hierarchy
  
-    procedure Tree_Read;
-    --  Dummy procedure (reads dummy table values from tree file)
- 
-    procedure Tree_Write;
-    --  Writes out internal tables to current tree file using Tree_Write
-    --  This is actually a dummy routine, since the relevant table is
-    --  no longer used, but we retain it for now, to avoid a tree file
-    --  incompatibility with the 3.13 compiler. Should be removed for
-    --  the 3.14a release ???
- 
  end Fname;
--- 94,97 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/freeze.adb gcc-11.1.0/gcc/ada/freeze.adb
*** gcc-10.3.0/gcc/ada/freeze.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/freeze.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Freeze is
*** 80,87 ****
     --  Typ is a type that is being frozen. If no size clause is given,
     --  but a default Esize has been computed, then this default Esize is
     --  adjusted up if necessary to be consistent with a given alignment,
!    --  but never to a value greater than Long_Long_Integer'Size. This
!    --  is used for all discrete types and for fixed-point types.
  
     procedure Build_And_Analyze_Renamed_Body
       (Decl  : Node_Id;
--- 80,87 ----
     --  Typ is a type that is being frozen. If no size clause is given,
     --  but a default Esize has been computed, then this default Esize is
     --  adjusted up if necessary to be consistent with a given alignment,
!    --  but never to a value greater than System_Max_Integer_Size. This is
!    --  used for all discrete types and for fixed-point types.
  
     procedure Build_And_Analyze_Renamed_Body
       (Decl  : Node_Id;
*************** package body Freeze is
*** 231,239 ****
        if Known_Esize (Typ) and then Known_Alignment (Typ) then
           Align := Alignment_In_Bits (Typ);
  
!          if Align > Esize (Typ)
!            and then Align <= Standard_Long_Long_Integer_Size
!          then
              Set_Esize (Typ, Align);
           end if;
        end if;
--- 231,237 ----
        if Known_Esize (Typ) and then Known_Alignment (Typ) then
           Align := Alignment_In_Bits (Typ);
  
!          if Align > Esize (Typ) and then Align <= System_Max_Integer_Size then
              Set_Esize (Typ, Align);
           end if;
        end if;
*************** package body Freeze is
*** 283,293 ****
  
          and then
            (Present (Interface_Name (Renamed_Subp))
!             or else Nam_In (Chars (Renamed_Subp), Name_Rotate_Left,
!                                                   Name_Rotate_Right,
!                                                   Name_Shift_Left,
!                                                   Name_Shift_Right,
!                                                   Name_Shift_Right_Arithmetic))
        then
           Set_Interface_Name (Ent, Interface_Name (Renamed_Subp));
  
--- 281,291 ----
  
          and then
            (Present (Interface_Name (Renamed_Subp))
!             or else Chars (Renamed_Subp) in Name_Rotate_Left
!                                           | Name_Rotate_Right
!                                           | Name_Shift_Left
!                                           | Name_Shift_Right
!                                           | Name_Shift_Right_Arithmetic)
        then
           Set_Interface_Name (Ent, Interface_Name (Renamed_Subp));
  
*************** package body Freeze is
*** 412,418 ****
        --  as we need to check other conditions for creating a body to inline
        --  in that case, which are controlled in Analyze_Subprogram_Body_Helper.
  
!       if Ekind_In (Old_S, E_Function, E_Procedure)
          and then Nkind (Decl) = N_Subprogram_Declaration
          and then not Is_Generic_Instance (Old_S)
          and then not GNATprove_Mode
--- 410,416 ----
        --  as we need to check other conditions for creating a body to inline
        --  in that case, which are controlled in Analyze_Subprogram_Body_Helper.
  
!       if Ekind (Old_S) in E_Function | E_Procedure
          and then Nkind (Decl) = N_Subprogram_Declaration
          and then not Is_Generic_Instance (Old_S)
          and then not GNATprove_Mode
*************** package body Freeze is
*** 636,642 ****
  
           --  If Rep_Clauses are to be ignored, remove address clause from
           --  list attached to entity, because it may be illegal for gigi,
!          --  for example by breaking order of elaboration..
  
           if Ignore_Rep_Clauses then
              declare
--- 634,640 ----
  
           --  If Rep_Clauses are to be ignored, remove address clause from
           --  list attached to entity, because it may be illegal for gigi,
!          --  for example by breaking order of elaboration.
  
           if Ignore_Rep_Clauses then
              declare
*************** package body Freeze is
*** 652,658 ****
                    while Present (Rep)
                      and then Next_Rep_Item (Rep) /= Addr
                    loop
!                      Rep := Next_Rep_Item (Rep);
                    end loop;
                 end if;
  
--- 650,656 ----
                    while Present (Rep)
                      and then Next_Rep_Item (Rep) /= Addr
                    loop
!                      Next_Rep_Item (Rep);
                    end loop;
                 end if;
  
*************** package body Freeze is
*** 720,727 ****
           --  expansion elsewhere. This exception is necessary to avoid copying
           --  limited objects.
  
!          if Present (Init) and then not Is_Limited_View (Typ) then
! 
              --  Capture initialization value at point of declaration, and make
              --  explicit assignment legal, because object may be a constant.
  
--- 718,726 ----
           --  expansion elsewhere. This exception is necessary to avoid copying
           --  limited objects.
  
!          if Present (Init)
!            and then not Is_Limited_View (Typ)
!          then
              --  Capture initialization value at point of declaration, and make
              --  explicit assignment legal, because object may be a constant.
  
*************** package body Freeze is
*** 758,766 ****
     procedure Check_Compile_Time_Size (T : Entity_Id) is
  
        procedure Set_Small_Size (T : Entity_Id; S : Uint);
!       --  Sets the compile time known size (64 bits or less) in the RM_Size
!       --  field of T, checking for a size clause that was given which attempts
!       --  to give a smaller size.
  
        function Size_Known (T : Entity_Id) return Boolean;
        --  Recursive function that does all the work
--- 757,764 ----
     procedure Check_Compile_Time_Size (T : Entity_Id) is
  
        procedure Set_Small_Size (T : Entity_Id; S : Uint);
!       --  Sets the compile time known size in the RM_Size field of T, checking
!       --  for a size clause that was given which attempts to give a small size.
  
        function Size_Known (T : Entity_Id) return Boolean;
        --  Recursive function that does all the work
*************** package body Freeze is
*** 778,784 ****
  
        procedure Set_Small_Size (T : Entity_Id; S : Uint) is
        begin
!          if S > 64 then
              return;
  
           --  Check for bad size clause given
--- 776,782 ----
  
        procedure Set_Small_Size (T : Entity_Id; S : Uint) is
        begin
!          if S > System_Max_Integer_Size then
              return;
  
           --  Check for bad size clause given
*************** package body Freeze is
*** 848,854 ****
              end if;
  
              --  Check for all indexes static, and also compute possible size
!             --  (in case it is not greater than 64 and may be packable).
  
              declare
                 Size : Uint := Component_Size (T);
--- 846,853 ----
              end if;
  
              --  Check for all indexes static, and also compute possible size
!             --  (in case it is not greater than System_Max_Integer_Size and
!             --  thus may be packable).
  
              declare
                 Size : Uint := Component_Size (T);
*************** package body Freeze is
*** 1077,1084 ****
  
                       --  We can deal with elementary types, small packed arrays
                       --  if the representation is a modular type and also small
!                      --  record types (if the size is not greater than 64, but
!                      --  the condition is checked by Set_Small_Size).
  
                       if Is_Elementary_Type (Ctyp)
                         or else (Is_Array_Type (Ctyp)
--- 1076,1082 ----
  
                       --  We can deal with elementary types, small packed arrays
                       --  if the representation is a modular type and also small
!                      --  record types as checked by Set_Small_Size.
  
                       if Is_Elementary_Type (Ctyp)
                         or else (Is_Array_Type (Ctyp)
*************** package body Freeze is
*** 1610,1616 ****
        Comp  : Entity_Id;
  
     begin
!       if Is_By_Reference_Type (E) then
           Set_Strict_Alignment (E);
  
        elsif Is_Array_Type (E) then
--- 1608,1617 ----
        Comp  : Entity_Id;
  
     begin
!       --  Bit-packed array types do not require strict alignment, even if they
!       --  are by-reference types, because they are accessed in a special way.
! 
!       if Is_By_Reference_Type (E) and then not Is_Bit_Packed_Array (E) then
           Set_Strict_Alignment (E);
  
        elsif Is_Array_Type (E) then
*************** package body Freeze is
*** 1724,1734 ****
        end loop;
     end Check_Unsigned_Type;
  
!    -----------------------------
!    -- Is_Atomic_VFA_Aggregate --
!    -----------------------------
  
!    function Is_Atomic_VFA_Aggregate (N : Node_Id) return Boolean is
        Loc   : constant Source_Ptr := Sloc (N);
        New_N : Node_Id;
        Par   : Node_Id;
--- 1725,1735 ----
        end loop;
     end Check_Unsigned_Type;
  
!    ------------------------------
!    -- Is_Full_Access_Aggregate --
!    ------------------------------
  
!    function Is_Full_Access_Aggregate (N : Node_Id) return Boolean is
        Loc   : constant Source_Ptr := Sloc (N);
        New_N : Node_Id;
        Par   : Node_Id;
*************** package body Freeze is
*** 1752,1760 ****
           when N_Assignment_Statement =>
              Typ := Etype (Name (Par));
  
!             if not Is_Atomic_Or_VFA (Typ)
!               and then not (Is_Entity_Name (Name (Par))
!                              and then Is_Atomic_Or_VFA (Entity (Name (Par))))
              then
                 return False;
              end if;
--- 1753,1760 ----
           when N_Assignment_Statement =>
              Typ := Etype (Name (Par));
  
!             if not Is_Full_Access (Typ)
!               and then not Is_Full_Access_Object (Name (Par))
              then
                 return False;
              end if;
*************** package body Freeze is
*** 1762,1769 ****
           when N_Object_Declaration =>
              Typ := Etype (Defining_Identifier (Par));
  
!             if not Is_Atomic_Or_VFA (Typ)
!               and then not Is_Atomic_Or_VFA (Defining_Identifier (Par))
              then
                 return False;
              end if;
--- 1762,1769 ----
           when N_Object_Declaration =>
              Typ := Etype (Defining_Identifier (Par));
  
!             if not Is_Full_Access (Typ)
!               and then not Is_Full_Access (Defining_Identifier (Par))
              then
                 return False;
              end if;
*************** package body Freeze is
*** 1784,1790 ****
  
        Set_Expression (Par, New_Occurrence_Of (Temp, Loc));
        return True;
!    end Is_Atomic_VFA_Aggregate;
  
     -----------------------------------------------
     -- Explode_Initialization_Compound_Statement --
--- 1784,1790 ----
  
        Set_Expression (Par, New_Occurrence_Of (Temp, Loc));
        return True;
!    end Is_Full_Access_Aggregate;
  
     -----------------------------------------------
     -- Explode_Initialization_Compound_Statement --
*************** package body Freeze is
*** 1894,1901 ****
                 end if;
  
              elsif Ekind (E) in Task_Kind
!               and then Nkind_In (Parent (E), N_Single_Task_Declaration,
!                                              N_Task_Type_Declaration)
              then
                 Push_Scope (E);
                 Freeze_All (First_Entity (E), After);
--- 1894,1901 ----
                 end if;
  
              elsif Ekind (E) in Task_Kind
!               and then Nkind (Parent (E)) in
!                          N_Single_Task_Declaration | N_Task_Type_Declaration
              then
                 Push_Scope (E);
                 Freeze_All (First_Entity (E), After);
*************** package body Freeze is
*** 1957,1963 ****
                          Check_Aspect_At_End_Of_Declarations (Ritem);
                       end if;
  
!                      Ritem := Next_Rep_Item (Ritem);
                    end loop;
                 end;
              end if;
--- 1957,1963 ----
                          Check_Aspect_At_End_Of_Declarations (Ritem);
                       end if;
  
!                      Next_Rep_Item (Ritem);
                    end loop;
                 end;
              end if;
*************** package body Freeze is
*** 1986,2000 ****
                    --  current package, but this body does not freeze incomplete
                    --  types that may be declared in this private part.
  
!                   if (Nkind_In (Bod, N_Entry_Body,
!                                      N_Package_Body,
!                                      N_Protected_Body,
!                                      N_Subprogram_Body,
!                                      N_Task_Body)
!                         or else Nkind (Bod) in N_Body_Stub)
                      and then
!                       List_Containing (After) = List_Containing (Parent (E))
!                     and then Comes_From_Source (Bod)
                    then
                       Error_Msg_Sloc := Sloc (Next (After));
                       Error_Msg_NE
--- 1986,2000 ----
                    --  current package, but this body does not freeze incomplete
                    --  types that may be declared in this private part.
  
!                   if Comes_From_Source (Bod)
!                     and then Nkind (Bod) in N_Entry_Body
!                                           | N_Package_Body
!                                           | N_Protected_Body
!                                           | N_Subprogram_Body
!                                           | N_Task_Body
!                                           | N_Body_Stub
                      and then
!                       In_Same_List (After, Parent (E))
                    then
                       Error_Msg_Sloc := Sloc (Next (After));
                       Error_Msg_NE
*************** package body Freeze is
*** 2202,2208 ****
        --  generated a message on the template.
  
        procedure Check_Suspicious_Modulus (Utype : Entity_Id);
!       --  Give warning for modulus of 8, 16, 32, or 64 given as an explicit
        --  integer literal without an explicit corresponding size clause. The
        --  caller has checked that Utype is a modular integer type.
  
--- 2202,2208 ----
        --  generated a message on the template.
  
        procedure Check_Suspicious_Modulus (Utype : Entity_Id);
!       --  Give warning for modulus of 8, 16, 32, 64 or 128 given as an explicit
        --  integer literal without an explicit corresponding size clause. The
        --  caller has checked that Utype is a modular integer type.
  
*************** package body Freeze is
*** 2373,2380 ****
           begin
              case Nkind (N) is
                 when N_Attribute_Reference =>
!                   if Nam_In (Attribute_Name (N), Name_Access,
!                                                  Name_Unchecked_Access)
                      and then Is_Entity_Name (Prefix (N))
                      and then Is_Type (Entity (Prefix (N)))
                      and then Entity (Prefix (N)) = E
--- 2373,2379 ----
           begin
              case Nkind (N) is
                 when N_Attribute_Reference =>
!                   if Attribute_Name (N) in Name_Access | Name_Unchecked_Access
                      and then Is_Entity_Name (Prefix (N))
                      and then Is_Type (Entity (Prefix (N)))
                      and then Entity (Prefix (N)) = E
*************** package body Freeze is
*** 2573,2585 ****
  
              --  Propagate flags for component type
  
!             if Is_Controlled (Component_Type (Arr))
                or else Has_Controlled_Component (Ctyp)
              then
                 Set_Has_Controlled_Component (Arr);
              end if;
  
!             if Has_Unchecked_Union (Component_Type (Arr)) then
                 Set_Has_Unchecked_Union (Arr);
              end if;
  
--- 2572,2584 ----
  
              --  Propagate flags for component type
  
!             if Is_Controlled (Ctyp)
                or else Has_Controlled_Component (Ctyp)
              then
                 Set_Has_Controlled_Component (Arr);
              end if;
  
!             if Has_Unchecked_Union (Ctyp) then
                 Set_Has_Unchecked_Union (Arr);
              end if;
  
*************** package body Freeze is
*** 2590,2606 ****
              --  that the procedure can be used to check the array type
              --  invariants if any.
  
!             if Has_Invariants (Component_Type (Arr))
                and then not GNATprove_Mode
              then
                 Set_Has_Own_Invariants (Arr);
- 
-                --  The array type is an implementation base type. Propagate the
-                --  same property to the first subtype.
- 
-                if Is_Itype (Arr) then
-                   Set_Has_Own_Invariants (First_Subtype (Arr));
-                end if;
              end if;
  
              --  Warn for pragma Pack overriding foreign convention
--- 2589,2598 ----
              --  that the procedure can be used to check the array type
              --  invariants if any.
  
!             if Has_Invariants (Ctyp)
                and then not GNATprove_Mode
              then
                 Set_Has_Own_Invariants (Arr);
              end if;
  
              --  Warn for pragma Pack overriding foreign convention
*************** package body Freeze is
*** 2627,2638 ****
                 end;
              end if;
  
!             --  Check for Aliased or Atomic_Components/Atomic/VFA with
              --  unsuitable packing or explicit component size clause given.
  
              if (Has_Aliased_Components (Arr)
                   or else Has_Atomic_Components (Arr)
!                  or else Is_Atomic_Or_VFA (Ctyp))
                and then
                  (Has_Component_Size_Clause (Arr) or else Is_Packed (Arr))
              then
--- 2619,2630 ----
                 end;
              end if;
  
!             --  Check for Aliased or Atomic_Components or Full Access with
              --  unsuitable packing or explicit component size clause given.
  
              if (Has_Aliased_Components (Arr)
                   or else Has_Atomic_Components (Arr)
!                  or else Is_Full_Access (Ctyp))
                and then
                  (Has_Component_Size_Clause (Arr) or else Is_Packed (Arr))
              then
*************** package body Freeze is
*** 2640,2647 ****
  
                    procedure Complain_CS (T : String);
                    --  Outputs error messages for incorrect CS clause or pragma
!                   --  Pack for aliased or atomic/VFA components (T is "aliased"
!                   --  or "atomic/vfa");
  
                    -----------------
                    -- Complain_CS --
--- 2632,2639 ----
  
                    procedure Complain_CS (T : String);
                    --  Outputs error messages for incorrect CS clause or pragma
!                   --  Pack for aliased or full access components (T is either
!                   --  "aliased" or "atomic" or "volatile full access");
  
                    -----------------
                    -- Complain_CS --
*************** package body Freeze is
*** 2832,2838 ****
  
                 --  Case of component size that may result in bit packing
  
!                if 1 <= Csiz and then Csiz <= 64 then
                    declare
                       Ent         : constant Entity_Id :=
                                       First_Subtype (Arr);
--- 2824,2830 ----
  
                 --  Case of component size that may result in bit packing
  
!                if 1 <= Csiz and then Csiz <= System_Max_Integer_Size then
                    declare
                       Ent         : constant Entity_Id :=
                                       First_Subtype (Arr);
*************** package body Freeze is
*** 2895,2909 ****
                          end if;
                       end if;
  
!                      --  Bit packing is never needed for 8, 16, 32, 64
  
                       if Addressable (Csiz) then
  
                          --  If the Esize of the component is known and equal to
                          --  the component size then even packing is not needed.
  
!                         if Known_Static_Esize (Component_Type (Arr))
!                           and then Esize (Component_Type (Arr)) = Csiz
                          then
                             --  Here the array was requested to be packed, but
                             --  the packing request had no effect whatsoever,
--- 2887,2901 ----
                          end if;
                       end if;
  
!                      --  Bit packing is never needed for 8, 16, 32, 64 or 128
  
                       if Addressable (Csiz) then
  
                          --  If the Esize of the component is known and equal to
                          --  the component size then even packing is not needed.
  
!                         if Known_Static_Esize (Ctyp)
!                           and then Esize (Ctyp) = Csiz
                          then
                             --  Here the array was requested to be packed, but
                             --  the packing request had no effect whatsoever,
*************** package body Freeze is
*** 2928,2934 ****
  
                       --  Bit packing is not needed for multiples of the storage
                       --  unit if the type is composite because the back end can
!                      --  byte pack composite types.
  
                       elsif Csiz mod System_Storage_Unit = 0
                         and then Is_Composite_Type (Ctyp)
--- 2920,2929 ----
  
                       --  Bit packing is not needed for multiples of the storage
                       --  unit if the type is composite because the back end can
!                      --  byte pack composite types efficiently. That's not true
!                      --  for discrete types because every read would generate a
!                      --  lot of instructions, so we keep using the manipulation
!                      --  routines of the runtime for them.
  
                       elsif Csiz mod System_Storage_Unit = 0
                         and then Is_Composite_Type (Ctyp)
*************** package body Freeze is
*** 3157,3177 ****
  
           <<Skip_Packed>>
  
-          --  For non-packed arrays set the alignment of the array to the
-          --  alignment of the component type if it is unknown. Skip this
-          --  in atomic/VFA case (atomic/VFA arrays may need larger alignments).
- 
-          if not Is_Packed (Arr)
-            and then Unknown_Alignment (Arr)
-            and then Known_Alignment (Ctyp)
-            and then Known_Static_Component_Size (Arr)
-            and then Known_Static_Esize (Ctyp)
-            and then Esize (Ctyp) = Component_Size (Arr)
-            and then not Is_Atomic_Or_VFA (Arr)
-          then
-             Set_Alignment (Arr, Alignment (Component_Type (Arr)));
-          end if;
- 
           --  A Ghost type cannot have a component of protected or task type
           --  (SPARK RM 6.9(19)).
  
--- 3152,3157 ----
*************** package body Freeze is
*** 3190,3198 ****
           procedure Check_Large_Modular_Array (Typ : Entity_Id);
           --  Check that the size of array type Typ can be computed without
           --  overflow, and generates a Storage_Error otherwise. This is only
!          --  relevant for array types whose index is a (mod 2**64) type, where
!          --  wrap-around arithmetic might yield a meaningless value for the
!          --  length of the array, or its corresponding attribute.
  
           procedure Check_Pragma_Thread_Local_Storage (Var_Id : Entity_Id);
           --  Ensure that the initialization state of variable Var_Id subject
--- 3170,3178 ----
           procedure Check_Large_Modular_Array (Typ : Entity_Id);
           --  Check that the size of array type Typ can be computed without
           --  overflow, and generates a Storage_Error otherwise. This is only
!          --  relevant for array types whose index has System_Max_Integer_Size
!          --  bits, where wrap-around arithmetic might yield a meaningless value
!          --  for the length of the array, or its corresponding attribute.
  
           procedure Check_Pragma_Thread_Local_Storage (Var_Id : Entity_Id);
           --  Ensure that the initialization state of variable Var_Id subject
*************** package body Freeze is
*** 3443,3449 ****
           Check_Address_Clause (E);
  
           --  Similar processing is needed for aspects that may affect object
!          --  layout, like Alignment, if there is an initialization expression.
           --  We don't do this if there is a pragma Linker_Section, because it
           --  would prevent the back end from statically initializing the
           --  object; we don't want elaboration code in that case.
--- 3423,3429 ----
           Check_Address_Clause (E);
  
           --  Similar processing is needed for aspects that may affect object
!          --  layout, like Address, if there is an initialization expression.
           --  We don't do this if there is a pragma Linker_Section, because it
           --  would prevent the back end from statically initializing the
           --  object; we don't want elaboration code in that case.
*************** package body Freeze is
*** 3451,3461 ****
           if Has_Delayed_Aspects (E)
             and then Expander_Active
             and then Is_Array_Type (Typ)
!            and then Present (Expression (Parent (E)))
             and then No (Linker_Section_Pragma (E))
           then
              declare
!                Decl : constant Node_Id := Parent (E);
                 Lhs  : constant Node_Id := New_Occurrence_Of (E, Loc);
  
              begin
--- 3431,3441 ----
           if Has_Delayed_Aspects (E)
             and then Expander_Active
             and then Is_Array_Type (Typ)
!            and then Present (Expression (Declaration_Node (E)))
             and then No (Linker_Section_Pragma (E))
           then
              declare
!                Decl : constant Node_Id := Declaration_Node (E);
                 Lhs  : constant Node_Id := New_Occurrence_Of (E, Loc);
  
              begin
*************** package body Freeze is
*** 3674,3682 ****
  
              if Warn_On_Export_Import
                and then Comes_From_Source (E)
!               and then (Convention (E) = Convention_C
!                           or else
!                         Convention (E) = Convention_CPP)
                and then (Is_Imported (E) or else Is_Exported (E))
                and then Convention (E) /= Convention (Formal)
                and then not Has_Warnings_Off (E)
--- 3654,3660 ----
  
              if Warn_On_Export_Import
                and then Comes_From_Source (E)
!               and then Convention (E) in Convention_C_Family
                and then (Is_Imported (E) or else Is_Exported (E))
                and then Convention (E) /= Convention (Formal)
                and then not Has_Warnings_Off (E)
*************** package body Freeze is
*** 3823,3831 ****
              --  Check suspicious return type for C function
  
              if Warn_On_Export_Import
!               and then (Convention (E) = Convention_C
!                           or else
!                         Convention (E) = Convention_CPP)
                and then (Is_Imported (E) or else Is_Exported (E))
              then
                 --  Check suspicious return of fat C pointer
--- 3801,3808 ----
              --  Check suspicious return type for C function
  
              if Warn_On_Export_Import
!               and then Comes_From_Source (E)
!               and then Convention (E) in Convention_C_Family
                and then (Is_Imported (E) or else Is_Exported (E))
              then
                 --  Check suspicious return of fat C pointer
*************** package body Freeze is
*** 4155,4161 ****
  
              --  Handle the component and discriminant case
  
!             if Ekind_In (Comp, E_Component, E_Discriminant) then
                 declare
                    CC : constant Node_Id := Component_Clause (Comp);
  
--- 4132,4138 ----
  
              --  Handle the component and discriminant case
  
!             if Ekind (Comp) in E_Component | E_Discriminant then
                 declare
                    CC : constant Node_Id := Component_Clause (Comp);
  
*************** package body Freeze is
*** 4227,4240 ****
                       elsif CodePeer_Mode then
                          null;
  
-                      --  Omit check if component has a generic type. This can
-                      --  happen in an instantiation within a generic in ASIS
-                      --  mode, where we force freeze actions without full
-                      --  expansion.
- 
-                      elsif Is_Generic_Type (Etype (Comp)) then
-                         null;
- 
                       --  Do the check
  
                       elsif not
--- 4204,4209 ----
*************** package body Freeze is
*** 5226,5232 ****
              --  case, both the body and imported function utilize the same
              --  type.
  
!             if Ekind_In (E, E_Function, E_Generic_Function) then
                 Stmt :=
                   Make_Simple_Return_Statement (Loc,
                     Expression =>
--- 5195,5201 ----
              --  case, both the body and imported function utilize the same
              --  type.
  
!             if Ekind (E) in E_Function | E_Generic_Function then
                 Stmt :=
                   Make_Simple_Return_Statement (Loc,
                     Expression =>
*************** package body Freeze is
*** 5529,5539 ****
           --  than component-wise (the assignment to the temp may be done
           --  component-wise, but that is harmless).
  
!          elsif Is_Atomic_Or_VFA (E)
             and then Nkind (Parent (E)) = N_Object_Declaration
             and then Present (Expression (Parent (E)))
             and then Nkind (Expression (Parent (E))) = N_Aggregate
!            and then Is_Atomic_VFA_Aggregate (Expression (Parent (E)))
           then
              null;
           end if;
--- 5498,5508 ----
           --  than component-wise (the assignment to the temp may be done
           --  component-wise, but that is harmless).
  
!          elsif Is_Full_Access (E)
             and then Nkind (Parent (E)) = N_Object_Declaration
             and then Present (Expression (Parent (E)))
             and then Nkind (Expression (Parent (E))) = N_Aggregate
!            and then Is_Full_Access_Aggregate (Expression (Parent (E)))
           then
              null;
           end if;
*************** package body Freeze is
*** 5596,5605 ****
  
                 begin
                    while Present (Prag) loop
!                      if Nam_In (Pragma_Name_Unmapped (Prag),
!                                 Name_Post,
!                                 Name_Postcondition,
!                                 Name_Refined_Post)
                       then
                          Exp :=
                            Expression
--- 5565,5573 ----
  
                 begin
                    while Present (Prag) loop
!                      if Pragma_Name_Unmapped (Prag) in Name_Post
!                                                      | Name_Postcondition
!                                                      | Name_Refined_Post
                       then
                          Exp :=
                            Expression
*************** package body Freeze is
*** 5673,5679 ****
                    Has_Rep_Pragma (E, Name_Atomic_Components)
                 then
                    Error_Msg_N
!                     ("stand alone atomic constant must be " &
                       "imported (RM C.6(13))", E);
  
                 elsif Has_Rep_Pragma (E, Name_Volatile)
--- 5641,5647 ----
                    Has_Rep_Pragma (E, Name_Atomic_Components)
                 then
                    Error_Msg_N
!                     ("standalone atomic constant must be " &
                       "imported (RM C.6(13))", E);
  
                 elsif Has_Rep_Pragma (E, Name_Volatile)
*************** package body Freeze is
*** 5681,5687 ****
                       Has_Rep_Pragma (E, Name_Volatile_Components)
                 then
                    Error_Msg_N
!                     ("stand alone volatile constant must be " &
                       "imported (RM C.6(13))", E);
                 end if;
              end if;
--- 5649,5655 ----
                       Has_Rep_Pragma (E, Name_Volatile_Components)
                 then
                    Error_Msg_N
!                     ("standalone volatile constant must be " &
                       "imported (RM C.6(13))", E);
                 end if;
              end if;
*************** package body Freeze is
*** 5696,5702 ****
  
              --  Remaining step is to layout objects
  
!             if Ekind_In (E, E_Variable, E_Constant, E_Loop_Parameter)
                or else Is_Formal (E)
              then
                 Layout_Object (E);
--- 5664,5670 ----
  
              --  Remaining step is to layout objects
  
!             if Ekind (E) in E_Variable | E_Constant | E_Loop_Parameter
                or else Is_Formal (E)
              then
                 Layout_Object (E);
*************** package body Freeze is
*** 5707,5713 ****
              --  statement, move them back now directly within the enclosing
              --  statement sequence.
  
!             if Ekind_In (E, E_Constant, E_Variable)
                and then not Has_Delayed_Freeze (E)
              then
                 Explode_Initialization_Compound_Statement (E);
--- 5675,5681 ----
              --  statement, move them back now directly within the enclosing
              --  statement sequence.
  
!             if Ekind (E) in E_Constant | E_Variable
                and then not Has_Delayed_Freeze (E)
              then
                 Explode_Initialization_Compound_Statement (E);
*************** package body Freeze is
*** 5835,5841 ****
                      and then not Has_Pragma_Pack (E)
                      and then not Has_Component_Size_Clause (E)
                      and then Known_Static_RM_Size (Ctyp)
!                     and then Rsiz <= 64
                      and then not (Addressable (Rsiz)
                                     and then Known_Static_Esize (Ctyp)
                                     and then Esize (Ctyp) = Rsiz)
--- 5803,5809 ----
                      and then not Has_Pragma_Pack (E)
                      and then not Has_Component_Size_Clause (E)
                      and then Known_Static_RM_Size (Ctyp)
!                     and then Rsiz <= System_Max_Integer_Size
                      and then not (Addressable (Rsiz)
                                     and then Known_Static_Esize (Ctyp)
                                     and then Esize (Ctyp) = Rsiz)
*************** package body Freeze is
*** 6068,6074 ****
           --  for the case of a private type with record extension (we will do
           --  that later when the full type is frozen).
  
!          elsif Ekind_In (E, E_Record_Type, E_Record_Subtype) then
              if not In_Generic_Scope (E) then
                 Freeze_Record_Type (E);
              end if;
--- 6036,6042 ----
           --  for the case of a private type with record extension (we will do
           --  that later when the full type is frozen).
  
!          elsif Ekind (E) in E_Record_Type | E_Record_Subtype then
              if not In_Generic_Scope (E) then
                 Freeze_Record_Type (E);
              end if;
*************** package body Freeze is
*** 6201,6208 ****
  
                          if Present (F_Node) then
                             Inherit_Freeze_Node
!                              (Fnod => F_Node,
!                               Typ  => Full_View (E));
                          else
                             Set_Has_Delayed_Freeze (Full_View (E), False);
                             Set_Freeze_Node (Full_View (E), Empty);
--- 6169,6175 ----
  
                          if Present (F_Node) then
                             Inherit_Freeze_Node
!                              (Fnod => F_Node, Typ => Full_View (E));
                          else
                             Set_Has_Delayed_Freeze (Full_View (E), False);
                             Set_Freeze_Node (Full_View (E), Empty);
*************** package body Freeze is
*** 6213,6221 ****
                          F_Node := Freeze_Node (Full_View (E));
  
                          if Present (F_Node) then
!                            Inherit_Freeze_Node
!                              (Fnod => F_Node,
!                               Typ  => E);
                          else
                             --  {Incomplete,Private}_Subtypes with Full_Views
                             --  constrained by discriminants.
--- 6180,6186 ----
                          F_Node := Freeze_Node (Full_View (E));
  
                          if Present (F_Node) then
!                            Inherit_Freeze_Node (Fnod => F_Node, Typ => E);
                          else
                             --  {Incomplete,Private}_Subtypes with Full_Views
                             --  constrained by discriminants.
*************** package body Freeze is
*** 6373,6407 ****
           if Is_Fixed_Point_Type (E) then
              Freeze_Fixed_Point_Type (E);
  
-             --  Some error checks required for ordinary fixed-point type. Defer
-             --  these till the freeze-point since we need the small and range
-             --  values. We only do these checks for base types
- 
-             if Is_Ordinary_Fixed_Point_Type (E) and then Is_Base_Type (E) then
-                if Small_Value (E) < Ureal_2_M_80 then
-                   Error_Msg_Name_1 := Name_Small;
-                   Error_Msg_N
-                     ("`&''%` too small, minimum allowed is 2.0'*'*(-80)", E);
- 
-                elsif Small_Value (E) > Ureal_2_80 then
-                   Error_Msg_Name_1 := Name_Small;
-                   Error_Msg_N
-                     ("`&''%` too large, maximum allowed is 2.0'*'*80", E);
-                end if;
- 
-                if Expr_Value_R (Type_Low_Bound (E)) < Ureal_M_10_36 then
-                   Error_Msg_Name_1 := Name_First;
-                   Error_Msg_N
-                     ("`&''%` too small, minimum allowed is -10.0'*'*36", E);
-                end if;
- 
-                if Expr_Value_R (Type_High_Bound (E)) > Ureal_10_36 then
-                   Error_Msg_Name_1 := Name_Last;
-                   Error_Msg_N
-                     ("`&''%` too large, maximum allowed is 10.0'*'*36", E);
-                end if;
-             end if;
- 
           elsif Is_Enumeration_Type (E) then
              Freeze_Enumeration_Type (E);
  
--- 6338,6343 ----
*************** package body Freeze is
*** 6415,6425 ****
              end if;
  
           --  The pool applies to named and anonymous access types, but not
!          --  to subprogram and to  internal types generated for 'Access
           --  references.
  
!          elsif Is_Access_Type (E)
!            and then not Is_Access_Subprogram_Type (E)
             and then Ekind (E) /= E_Access_Attribute_Type
           then
              --  If a pragma Default_Storage_Pool applies, and this type has no
--- 6351,6360 ----
              end if;
  
           --  The pool applies to named and anonymous access types, but not
!          --  to subprogram and to internal types generated for 'Access
           --  references.
  
!          elsif Is_Access_Object_Type (E)
             and then Ekind (E) /= E_Access_Attribute_Type
           then
              --  If a pragma Default_Storage_Pool applies, and this type has no
*************** package body Freeze is
*** 6440,6445 ****
--- 6375,6385 ----
                 if Nkind (Default_Pool) = N_Null then
                    Set_No_Pool_Assigned (E);
  
+                --  Case of pragma Default_Storage_Pool (Standard)
+ 
+                elsif Entity (Default_Pool) = Standard_Standard then
+                   Set_Associated_Storage_Pool (E, RTE (RE_Global_Pool_Object));
+ 
                 --  Case of pragma Default_Storage_Pool (storage_pool_NAME)
  
                 else
*************** package body Freeze is
*** 6651,6659 ****
  
                    begin
                       pragma Assert
!                        (Nam_In (Op_Name, Name_Allocate,
!                                          Name_Deallocate,
!                                          Name_Storage_Size));
  
                       Error_Msg_Name_1 := Op_Name;
  
--- 6591,6599 ----
  
                    begin
                       pragma Assert
!                        (Op_Name in Name_Allocate
!                                  | Name_Deallocate
!                                  | Name_Storage_Size);
  
                       Error_Msg_Name_1 := Op_Name;
  
*************** package body Freeze is
*** 6665,6671 ****
  
                       Op := Get_Name_Entity_Id (Op_Name);
                       while Present (Op) loop
!                         if Ekind_In (Op, E_Function, E_Procedure)
                            and then Scope (Op) = Current_Scope
                          then
                             Formal := First_Entity (Op);
--- 6605,6611 ----
  
                       Op := Get_Name_Entity_Id (Op_Name);
                       while Present (Op) loop
!                         if Ekind (Op) in E_Function | E_Procedure
                            and then Scope (Op) = Current_Scope
                          then
                             Formal := First_Entity (Op);
*************** package body Freeze is
*** 6796,6802 ****
              Check_Strict_Alignment (E);
           end if;
  
!          if Ekind_In (E, E_Record_Type, E_Record_Subtype) then
              declare
                 RC : constant Node_Id := Get_Record_Representation_Clause (E);
              begin
--- 6736,6742 ----
              Check_Strict_Alignment (E);
           end if;
  
!          if Ekind (E) in E_Record_Type | E_Record_Subtype then
              declare
                 RC : constant Node_Id := Get_Record_Representation_Clause (E);
              begin
*************** package body Freeze is
*** 6854,6860 ****
           end if;
  
           --  If the type has a Defaut_Value/Default_Component_Value aspect,
!          --  this is where we analye the expression (after the type is frozen,
           --  since in the case of Default_Value, we are analyzing with the
           --  type itself, and we treat Default_Component_Value similarly for
           --  the sake of uniformity).
--- 6794,6800 ----
           end if;
  
           --  If the type has a Defaut_Value/Default_Component_Value aspect,
!          --  this is where we analyze the expression (after the type is frozen,
           --  since in the case of Default_Value, we are analyzing with the
           --  type itself, and we treat Default_Component_Value similarly for
           --  the sake of uniformity).
*************** package body Freeze is
*** 7080,7089 ****
        --  as well.
  
        function In_Expanded_Body (N : Node_Id) return Boolean;
!       --  Given an N_Handled_Sequence_Of_Statements node N, determines whether
!       --  it is the handled statement sequence of an expander-generated
!       --  subprogram (init proc, stream subprogram, or renaming as body).
!       --  If so, this is not a freezing context.
  
        -----------------------------------------
        -- Find_Aggregate_Component_Desig_Type --
--- 7020,7037 ----
        --  as well.
  
        function In_Expanded_Body (N : Node_Id) return Boolean;
!       --  Given an N_Handled_Sequence_Of_Statements node, determines whether it
!       --  is the statement sequence of an expander-generated subprogram: body
!       --  created for an expression function, for a predicate function, an init
!       --  proc, a stream subprogram, or a renaming as body. If so, this is not
!       --  a freezing context and the entity will be frozen at a later point.
! 
!       function Has_Decl_In_List
!         (E : Entity_Id;
!          N : Node_Id;
!          L : List_Id) return Boolean;
!       --  Determines whether an entity E referenced in node N is declared in
!       --  the list L.
  
        -----------------------------------------
        -- Find_Aggregate_Component_Desig_Type --
*************** package body Freeze is
*** 7124,7142 ****
        ----------------------
  
        function In_Expanded_Body (N : Node_Id) return Boolean is
!          P  : Node_Id;
           Id : Entity_Id;
  
        begin
-          if Nkind (N) = N_Subprogram_Body then
-             P := N;
-          else
-             P := Parent (N);
-          end if;
- 
           if Nkind (P) /= N_Subprogram_Body then
              return False;
  
           else
              Id := Defining_Unit_Name (Specification (P));
  
--- 7072,7097 ----
        ----------------------
  
        function In_Expanded_Body (N : Node_Id) return Boolean is
!          P  : constant Node_Id := Parent (N);
           Id : Entity_Id;
  
        begin
           if Nkind (P) /= N_Subprogram_Body then
              return False;
  
+          --  AI12-0157: An expression function that is a completion is a freeze
+          --  point. If the body is the result of expansion, it is not.
+ 
+          elsif Was_Expression_Function (P) then
+             return not Comes_From_Source (P);
+ 
+          --  This is the body of a generated predicate function
+ 
+          elsif Present (Corresponding_Spec (P))
+            and then Is_Predicate_Function (Corresponding_Spec (P))
+          then
+             return True;
+ 
           else
              Id := Defining_Unit_Name (Specification (P));
  
*************** package body Freeze is
*** 7149,7157 ****
                           or else Is_TSS (Id, TSS_Stream_Output)
                           or else Is_TSS (Id, TSS_Stream_Read)
                           or else Is_TSS (Id, TSS_Stream_Write)
!                          or else Nkind_In (Original_Node (P),
!                                            N_Subprogram_Renaming_Declaration,
!                                            N_Expression_Function))
              then
                 return True;
              else
--- 7104,7111 ----
                           or else Is_TSS (Id, TSS_Stream_Output)
                           or else Is_TSS (Id, TSS_Stream_Read)
                           or else Is_TSS (Id, TSS_Stream_Write)
!                          or else Nkind (Original_Node (P)) =
!                                              N_Subprogram_Renaming_Declaration)
              then
                 return True;
              else
*************** package body Freeze is
*** 7160,7165 ****
--- 7114,7143 ----
           end if;
        end In_Expanded_Body;
  
+       ----------------------
+       -- Has_Decl_In_List --
+       ----------------------
+ 
+       function Has_Decl_In_List
+         (E : Entity_Id;
+          N : Node_Id;
+          L : List_Id) return Boolean
+       is
+          Decl_Node : Node_Id;
+ 
+       begin
+          --  If E is an itype, pretend that it is declared in N
+ 
+          if Is_Itype (E) then
+             Decl_Node := N;
+          else
+             Decl_Node := Declaration_Node (E);
+          end if;
+ 
+          return Is_List_Member (Decl_Node)
+            and then List_Containing (Decl_Node) = L;
+       end Has_Decl_In_List;
+ 
        --  Local variables
  
        In_Spec_Exp : constant Boolean := In_Spec_Expression;
*************** package body Freeze is
*** 7170,7175 ****
--- 7148,7155 ----
        Parent_P  : Node_Id;
        Typ       : Entity_Id;
  
+       Allocator_Typ : Entity_Id := Empty;
+ 
        Freeze_Outside : Boolean := False;
        --  This flag is set true if the entity must be frozen outside the
        --  current subprogram. This happens in the case of expander generated
*************** package body Freeze is
*** 7280,7285 ****
--- 7260,7269 ----
           when N_Allocator =>
              Desig_Typ := Designated_Type (Etype (N));
  
+             if Nkind (Expression (N)) = N_Qualified_Expression then
+                Allocator_Typ := Entity (Subtype_Mark (Expression (N)));
+             end if;
+ 
           when N_Aggregate =>
              if Is_Array_Type (Etype (N))
                and then Is_Access_Type (Component_Type (Etype (N)))
*************** package body Freeze is
*** 7322,7327 ****
--- 7306,7312 ----
        if No (Typ)
          and then No (Nam)
          and then No (Desig_Typ)
+         and then No (Allocator_Typ)
        then
           return;
        end if;
*************** package body Freeze is
*** 7390,7399 ****
                 return;
              end if;
  
!             exit when
!               Nkind (Parent_P) = N_Subprogram_Body
                  and then Unique_Defining_Entity (Parent_P) =
!                            Freeze_Outside_Subp;
  
              P := Parent_P;
           end loop;
--- 7375,7390 ----
                 return;
              end if;
  
!             --  If the parent is a subprogram body, the candidate insertion
!             --  point is just ahead of it.
! 
!             if  Nkind (Parent_P) = N_Subprogram_Body
                  and then Unique_Defining_Entity (Parent_P) =
!                            Freeze_Outside_Subp
!             then
!                P := Parent_P;
!                exit;
!             end if;
  
              P := Parent_P;
           end loop;
*************** package body Freeze is
*** 7474,7480 ****
  
                    --  The case we are looking for is an enumeration literal
  
!                   if Nkind_In (N, N_Identifier, N_Character_Literal)
                      and then Is_Enumeration_Type (Etype (N))
                    then
                       --  If enumeration literal appears directly as the choice,
--- 7465,7471 ----
  
                    --  The case we are looking for is an enumeration literal
  
!                   if Nkind (N) in N_Identifier | N_Character_Literal
                      and then Is_Enumeration_Type (Etype (N))
                    then
                       --  If enumeration literal appears directly as the choice,
*************** package body Freeze is
*** 7515,7567 ****
  
                    if In_Expanded_Body (Parent_P) then
                       declare
!                         Subp : constant Node_Id := Parent (Parent_P);
!                         Spec : Entity_Id;
  
                       begin
                          --  Freeze the entity only when it is declared inside
!                         --  the body of the expander generated procedure.
!                         --  This case is recognized by the scope of the entity
!                         --  or its type, which is either the spec for some
!                         --  enclosing body, or (in the case of init_procs,
!                         --  for which there are no separate specs) the current
!                         --  scope.
  
!                         if Nkind (Subp) = N_Subprogram_Body then
!                            Spec := Corresponding_Spec (Subp);
  
!                            if (Present (Typ) and then Scope (Typ) = Spec)
!                                 or else
!                               (Present (Nam) and then Scope (Nam) = Spec)
!                            then
!                               exit;
  
!                            elsif Present (Typ)
!                              and then Scope (Typ) = Current_Scope
!                              and then Defining_Entity (Subp) = Current_Scope
!                            then
!                               exit;
!                            end if;
!                         end if;
  
!                         --  An expression function may act as a completion of
!                         --  a function declaration. As such, it can reference
!                         --  entities declared between the two views:
  
!                         --     Hidden [];                             -- 1
!                         --     function F return ...;
!                         --     private
!                         --        function Hidden return ...;
!                         --        function F return ... is (Hidden);  -- 2
  
!                         --  Refering to the example above, freezing the
!                         --  expression of F (2) would place Hidden's freeze
!                         --  node (1) in the wrong place. Avoid explicit
!                         --  freezing and let the usual scenarios do the job
!                         --  (for example, reaching the end of the private
!                         --  declarations, or a call to F.)
  
!                         if Nkind (Original_Node (Subp)) = N_Expression_Function
                          then
                             null;
  
--- 7506,7562 ----
  
                    if In_Expanded_Body (Parent_P) then
                       declare
!                         Subp_Body : constant Node_Id := Parent (Parent_P);
!                         Spec_Id   : Entity_Id;
  
                       begin
                          --  Freeze the entity only when it is declared inside
!                         --  the body of the expander generated procedure. This
!                         --  case is recognized by the subprogram scope of the
!                         --  entity or its type, which is either the spec of an
!                         --  enclosing body, or (in the case of init_procs for
!                         --  which there is no separate spec) the current scope.
  
!                         if Nkind (Subp_Body) = N_Subprogram_Body then
!                            declare
!                               S : Entity_Id;
  
!                            begin
!                               Spec_Id := Corresponding_Spec (Subp_Body);
  
!                               if Present (Typ) then
!                                  S := Scope (Typ);
!                               elsif Present (Nam) then
!                                  S := Scope (Nam);
!                               else
!                                  S := Standard_Standard;
!                               end if;
  
!                               while S /= Standard_Standard
!                                 and then not Is_Subprogram (S)
!                               loop
!                                  S := Scope (S);
!                               end loop;
  
!                               if S = Spec_Id then
!                                  exit;
  
!                               elsif Present (Typ)
!                                 and then Scope (Typ) = Current_Scope
!                                 and then
!                                   Defining_Entity (Subp_Body) = Current_Scope
!                               then
!                                  exit;
!                               end if;
!                            end;
!                         end if;
  
!                         --  If the entity is not frozen by an expression
!                         --  function that is not a completion, continue
!                         --  climbing the tree.
! 
!                         if Nkind (Subp_Body) = N_Subprogram_Body
!                           and then Was_Expression_Function (Subp_Body)
                          then
                             null;
  
*************** package body Freeze is
*** 7601,7607 ****
  
                 when N_Abortable_Part
                    | N_Accept_Alternative
-                   | N_And_Then
                    | N_Case_Statement_Alternative
                    | N_Compilation_Unit_Aux
                    | N_Conditional_Entry_Call
--- 7596,7601 ----
*************** package body Freeze is
*** 7612,7643 ****
                    | N_Extended_Return_Statement
                    | N_Freeze_Entity
                    | N_If_Statement
-                   | N_Or_Else
                    | N_Selective_Accept
                    | N_Triggering_Alternative
                 =>
                    exit when Is_List_Member (P);
  
!                --  Freeze nodes produced by an expression coming from the
!                --  Actions list of a N_Expression_With_Actions node must remain
!                --  within the Actions list. Inserting the freeze nodes further
!                --  up the tree may lead to use before declaration issues in the
!                --  case of array types.
  
!                when N_Expression_With_Actions =>
!                   if Is_List_Member (P)
!                     and then List_Containing (P) = Actions (Parent_P)
!                   then
!                      exit;
!                   end if;
  
!                --  Note: N_Loop_Statement is a special case. A type that
!                --  appears in the source can never be frozen in a loop (this
!                --  occurs only because of a loop expanded by the expander), so
!                --  we keep on going. Otherwise we terminate the search. Same
!                --  is true of any entity which comes from source. (if they
!                --  have predefined type, that type does not appear to come
!                --  from source, but the entity should not be frozen here).
  
                 when N_Loop_Statement =>
                    exit when not Comes_From_Source (Etype (N))
--- 7606,7663 ----
                    | N_Extended_Return_Statement
                    | N_Freeze_Entity
                    | N_If_Statement
                    | N_Selective_Accept
                    | N_Triggering_Alternative
                 =>
                    exit when Is_List_Member (P);
  
!                --  The freeze nodes produced by an expression coming from the
!                --  Actions list of an N_Expression_With_Actions, short-circuit
!                --  expression or N_Case_Expression_Alternative node must remain
!                --  within the Actions list if they freeze an entity declared in
!                --  this list, as inserting the freeze nodes further up the tree
!                --  may lead to use before declaration issues for the entity.
  
!                when N_Case_Expression_Alternative
!                   | N_Expression_With_Actions
!                   | N_Short_Circuit
!                =>
!                   exit when (Present (Nam)
!                               and then
!                              Has_Decl_In_List (Nam, P, Actions (Parent_P)))
!                     or else (Present (Typ)
!                               and then
!                              Has_Decl_In_List (Typ, P, Actions (Parent_P)));
  
!                --  Likewise for an N_If_Expression and its two Actions list
! 
!                when N_If_Expression =>
!                   declare
!                      L1 : constant List_Id := Then_Actions (Parent_P);
!                      L2 : constant List_Id := Else_Actions (Parent_P);
! 
!                   begin
!                      exit when (Present (Nam)
!                                  and then
!                                 Has_Decl_In_List (Nam, P, L1))
!                        or else (Present (Typ)
!                                  and then
!                                 Has_Decl_In_List (Typ, P, L1))
!                        or else (Present (Nam)
!                                  and then
!                                 Has_Decl_In_List (Nam, P, L2))
!                        or else (Present (Typ)
!                                  and then
!                                 Has_Decl_In_List (Typ, P, L2));
!                   end;
! 
!                --  N_Loop_Statement is a special case: a type that appears in
!                --  the source can never be frozen in a loop (this occurs only
!                --  because of a loop expanded by the expander), so we keep on
!                --  going. Otherwise we terminate the search. Same is true of
!                --  any entity which comes from source (if it has a predefined
!                --  type, this type does not appear to come from source, but the
!                --  entity should not be frozen here).
  
                 when N_Loop_Statement =>
                    exit when not Comes_From_Source (Etype (N))
*************** package body Freeze is
*** 7756,7761 ****
--- 7776,7789 ----
  
        In_Spec_Expression := False;
  
+       --  Freeze the subtype mark before a qualified expression on an
+       --  allocator as per AARM 13.14(4.a). This is needed in particular to
+       --  generate predicate functions.
+ 
+       if Present (Allocator_Typ) then
+          Freeze_Before (P, Allocator_Typ);
+       end if;
+ 
        --  Freeze the designated type of an allocator (RM 13.14(13))
  
        if Present (Desig_Typ) then
*************** package body Freeze is
*** 7812,7819 ****
  
           function Clone_Id (Node : Node_Id) return Traverse_Result is
           begin
!             if Nkind_In (Node, N_Iterator_Specification,
!                                N_Loop_Parameter_Specification)
              then
                 Set_Defining_Identifier
                   (Node, New_Copy (Defining_Identifier (Node)));
--- 7840,7847 ----
  
           function Clone_Id (Node : Node_Id) return Traverse_Result is
           begin
!             if Nkind (Node) in
!                  N_Iterator_Specification | N_Loop_Parameter_Specification
              then
                 Set_Defining_Identifier
                   (Node, New_Copy (Defining_Identifier (Node)));
*************** package body Freeze is
*** 7900,7910 ****
           --  Check that a type referenced by an entity can be frozen
  
           if Is_Entity_Name (Node) and then Present (Entity (Node)) then
!             Check_And_Freeze_Type (Etype (Entity (Node)));
  
              --  Check that the enclosing record type can be frozen
  
!             if Ekind_In (Entity (Node), E_Component, E_Discriminant) then
                 Check_And_Freeze_Type (Scope (Entity (Node)));
              end if;
  
--- 7928,7947 ----
           --  Check that a type referenced by an entity can be frozen
  
           if Is_Entity_Name (Node) and then Present (Entity (Node)) then
!             --  The entity itself may be a type, as in a membership test
!             --  or an attribute reference. Freezing its own type would be
!             --  incomplete if the entity is derived or an extension.
! 
!             if Is_Type (Entity (Node)) then
!                Check_And_Freeze_Type (Entity (Node));
! 
!             else
!                Check_And_Freeze_Type (Etype (Entity (Node)));
!             end if;
  
              --  Check that the enclosing record type can be frozen
  
!             if Ekind (Entity (Node)) in E_Component | E_Discriminant then
                 Check_And_Freeze_Type (Scope (Entity (Node)));
              end if;
  
*************** package body Freeze is
*** 7930,7939 ****
           if Nkind (Node) in N_Has_Etype
             and then Present (Etype (Node))
             and then Is_Access_Type (Etype (Node))
-            and then Nkind (Parent (Node)) = N_Function_Call
-            and then Node = Controlling_Argument (Parent (Node))
           then
!             Check_And_Freeze_Type (Designated_Type (Etype (Node)));
           end if;
  
           --  No point in posting several errors on the same expression
--- 7967,8002 ----
           if Nkind (Node) in N_Has_Etype
             and then Present (Etype (Node))
             and then Is_Access_Type (Etype (Node))
           then
!             if Nkind (Parent (Node)) = N_Function_Call
!               and then Node = Controlling_Argument (Parent (Node))
!             then
!                Check_And_Freeze_Type (Designated_Type (Etype (Node)));
! 
!             --  An explicit dereference freezes the designated type as well,
!             --  even though that type is not attached to an entity in the
!             --  expression.
! 
!             elsif Nkind (Parent (Node)) = N_Explicit_Dereference then
!                Check_And_Freeze_Type (Designated_Type (Etype (Node)));
!             end if;
! 
!          --  An iterator specification freezes the iterator type, even though
!          --  that type is not attached to an entity in the construct.
! 
!          elsif Nkind (Node) in N_Has_Etype
!            and then Nkind (Parent (Node)) = N_Iterator_Specification
!            and then Node = Name (Parent (Node))
!          then
!             declare
!                Iter : constant Node_Id :=
!                  Find_Value_Of_Aspect (Etype (Node), Aspect_Default_Iterator);
! 
!             begin
!                if Present (Iter) then
!                   Check_And_Freeze_Type (Etype (Iter));
!                end if;
!             end;
           end if;
  
           --  No point in posting several errors on the same expression
*************** package body Freeze is
*** 8030,8035 ****
--- 8093,8104 ----
        --  Returns size of type with given bounds. Also leaves these
        --  bounds set as the current bounds of the Typ.
  
+       function Larger (A, B : Ureal) return Boolean;
+       --  Returns true if A > B with a margin of Typ'Small
+ 
+       function Smaller (A, B : Ureal) return Boolean;
+       --  Returns true if A < B with a margin of Typ'Small
+ 
        -----------
        -- Fsize --
        -----------
*************** package body Freeze is
*** 8041,8046 ****
--- 8110,8133 ----
           return Minimum_Size (Typ);
        end Fsize;
  
+       ------------
+       -- Larger --
+       ------------
+ 
+       function Larger (A, B : Ureal) return Boolean is
+       begin
+          return A > B and then A - Small > B;
+       end Larger;
+ 
+       -------------
+       -- Smaller --
+       -------------
+ 
+       function Smaller (A, B : Ureal) return Boolean is
+       begin
+          return A < B and then A + Small < B;
+       end Smaller;
+ 
     --  Start of processing for Freeze_Fixed_Point_Type
  
     begin
*************** package body Freeze is
*** 8062,8068 ****
           if Present (Atype) then
              Set_Esize (Typ, Esize (Atype));
           else
!             Set_Esize (Typ, Esize (Base_Type (Typ)));
           end if;
        end if;
  
--- 8149,8155 ----
           if Present (Atype) then
              Set_Esize (Typ, Esize (Atype));
           else
!             Set_Esize (Typ, Esize (Btyp));
           end if;
        end if;
  
*************** package body Freeze is
*** 8342,8347 ****
--- 8429,8539 ----
              Set_Realval (Hi, Actual_Hi);
           end Fudge;
  
+          --  Enforce some limitations for ordinary fixed-point types. They come
+          --  from an exact algorithm used to implement Text_IO.Fixed_IO and the
+          --  Fore, Image and Value attributes. The requirement on the Small is
+          --  to lie in the range 2**(-(Siz - 1)) .. 2**(Siz - 1) for a type of
+          --  Siz bits (Siz=32,64,128) and the requirement on the bounds is to
+          --  be smaller in magnitude than 10.0**N * 2**(Siz - 1), where N is
+          --  given by the formula N = floor ((Siz - 1) * log 2 / log 10).
+ 
+          --  If the bounds of a 32-bit type are too large, force 64-bit type
+ 
+          if Actual_Size <= 32
+            and then Small <= Ureal_2_31
+            and then (Smaller (Expr_Value_R (Lo), Ureal_M_2_10_18)
+                       or else Larger (Expr_Value_R (Hi), Ureal_2_10_18))
+          then
+             Actual_Size := 33;
+          end if;
+ 
+          --  If the bounds of a 64-bit type are too large, force 128-bit type
+ 
+          if System_Max_Integer_Size = 128
+            and then Actual_Size <= 64
+            and then Small <= Ureal_2_63
+            and then (Smaller (Expr_Value_R (Lo), Ureal_M_9_10_36)
+                       or else Larger (Expr_Value_R (Hi), Ureal_9_10_36))
+          then
+             Actual_Size := 65;
+          end if;
+ 
+          --  Give error messages for first subtypes and not base types, as the
+          --  bounds of base types are always maximum for their size, see below.
+ 
+          if System_Max_Integer_Size < 128 and then Typ /= Btyp then
+ 
+             --  See the 128-bit case below for the reason why we cannot test
+             --  against the 2**(-63) .. 2**63 range. This quirk should have
+             --  been kludged around as in the 128-bit case below, but it was
+             --  not and we end up with a ludicrous range as a result???
+ 
+             if Small < Ureal_2_M_80 then
+                Error_Msg_Name_1 := Name_Small;
+                Error_Msg_N
+                  ("`&''%` too small, minimum allowed is 2.0'*'*(-80)", Typ);
+ 
+             elsif Small > Ureal_2_80 then
+                Error_Msg_Name_1 := Name_Small;
+                Error_Msg_N
+                  ("`&''%` too large, maximum allowed is 2.0'*'*80", Typ);
+             end if;
+ 
+             if Smaller (Expr_Value_R (Lo), Ureal_M_9_10_36) then
+                Error_Msg_Name_1 := Name_First;
+                Error_Msg_N
+                  ("`&''%` too small, minimum allowed is -9.0E+36", Typ);
+             end if;
+ 
+             if Larger (Expr_Value_R (Hi), Ureal_9_10_36) then
+                Error_Msg_Name_1 := Name_Last;
+                Error_Msg_N
+                  ("`&''%` too large, maximum allowed is 9.0E+36", Typ);
+             end if;
+ 
+          elsif System_Max_Integer_Size = 128 and then Typ /= Btyp then
+ 
+             --  ACATS c35902d tests a delta equal to 2**(-(Max_Mantissa + 1))
+             --  but we cannot really support anything smaller than Fine_Delta
+             --  because of the way we implement I/O for fixed point types???
+ 
+             if Small = Ureal_2_M_128 then
+                null;
+ 
+             elsif Small < Ureal_2_M_127 then
+                Error_Msg_Name_1 := Name_Small;
+                Error_Msg_N
+                  ("`&''%` too small, minimum allowed is 2.0'*'*(-127)", Typ);
+ 
+             elsif Small > Ureal_2_127 then
+                Error_Msg_Name_1 := Name_Small;
+                Error_Msg_N
+                  ("`&''%` too large, maximum allowed is 2.0'*'*127", Typ);
+             end if;
+ 
+             if Actual_Size > 64
+               and then (Norm_Num (Small) > Uint_2 ** 127
+                          or else Norm_Den (Small) > Uint_2 ** 127)
+               and then Small /= Ureal_2_M_128
+             then
+                Error_Msg_Name_1 := Name_Small;
+                Error_Msg_N
+                  ("`&''%` not the ratio of two 128-bit integers", Typ);
+             end if;
+ 
+             if Smaller (Expr_Value_R (Lo), Ureal_M_10_76) then
+                Error_Msg_Name_1 := Name_First;
+                Error_Msg_N
+                  ("`&''%` too small, minimum allowed is -1.0E+76", Typ);
+             end if;
+ 
+             if Larger (Expr_Value_R (Hi), Ureal_10_76) then
+                Error_Msg_Name_1 := Name_Last;
+                Error_Msg_N
+                  ("`&''%` too large, maximum allowed is 1.0E+76", Typ);
+             end if;
+          end if;
+ 
        --  For the decimal case, none of this fudging is required, since there
        --  are no end-point problems in the decimal case (the end-points are
        --  always included).
*************** package body Freeze is
*** 8353,8364 ****
        --  At this stage, the actual size has been calculated and the proper
        --  required bounds are stored in the low and high bounds.
  
!       if Actual_Size > 64 then
           Error_Msg_Uint_1 := UI_From_Int (Actual_Size);
           Error_Msg_N
!            ("size required (^) for type& too large, maximum allowed is 64",
              Typ);
!          Actual_Size := 64;
        end if;
  
        --  Check size against explicit given size
--- 8545,8557 ----
        --  At this stage, the actual size has been calculated and the proper
        --  required bounds are stored in the low and high bounds.
  
!       if Actual_Size > System_Max_Integer_Size then
           Error_Msg_Uint_1 := UI_From_Int (Actual_Size);
+          Error_Msg_Uint_2 := UI_From_Int (System_Max_Integer_Size);
           Error_Msg_N
!            ("size required (^) for type& too large, maximum allowed is ^",
              Typ);
!          Actual_Size := System_Max_Integer_Size;
        end if;
  
        --  Check size against explicit given size
*************** package body Freeze is
*** 8384,8391 ****
              Actual_Size := 16;
           elsif Actual_Size <= 32 then
              Actual_Size := 32;
!          else
              Actual_Size := 64;
           end if;
  
           Init_Esize (Typ, Actual_Size);
--- 8577,8586 ----
              Actual_Size := 16;
           elsif Actual_Size <= 32 then
              Actual_Size := 32;
!          elsif Actual_Size <= 64 then
              Actual_Size := 64;
+          else
+             Actual_Size := 128;
           end if;
  
           Init_Esize (Typ, Actual_Size);
*************** package body Freeze is
*** 8396,8402 ****
        --  the full width of the allocated size in bits, to avoid junk range
        --  checks on intermediate computations.
  
!       if Base_Type (Typ) = Typ then
           Set_Realval (Lo, -(Small * (Uint_2 ** (Actual_Size - 1))));
           Set_Realval (Hi,  (Small * (Uint_2 ** (Actual_Size - 1) - 1)));
        end if;
--- 8591,8597 ----
        --  the full width of the allocated size in bits, to avoid junk range
        --  checks on intermediate computations.
  
!       if Typ = Btyp then
           Set_Realval (Lo, -(Small * (Uint_2 ** (Actual_Size - 1))));
           Set_Realval (Hi,  (Small * (Uint_2 ** (Actual_Size - 1) - 1)));
        end if;
*************** package body Freeze is
*** 8408,8428 ****
        Set_Analyzed (Lo, False);
        Analyze (Lo);
  
!       --  Resolve with universal fixed if the base type, and the base type if
!       --  it is a subtype. Note we can't resolve the base type with itself,
!       --  that would be a reference before definition.
  
        if Typ = Btyp then
           Resolve (Lo, Universal_Fixed);
        else
           Resolve (Lo, Btyp);
        end if;
  
-       --  Set corresponding integer value for bound
- 
-       Set_Corresponding_Integer_Value
-         (Lo, UR_To_Uint (Realval (Lo) / Small));
- 
        --  Similar processing for high bound
  
        Set_Etype (Hi, Empty);
--- 8603,8623 ----
        Set_Analyzed (Lo, False);
        Analyze (Lo);
  
!       --  Resolve with universal fixed if the base type, and with the base
!       --  type if we are freezing a subtype. Note we can't resolve the base
!       --  type with itself, that would be a reference before definition.
!       --  The resolution of the bounds of a subtype, if they are given by real
!       --  literals,  includes the setting of the Corresponding_Integer_Value,
!       --  as for other literals of a fixed-point type.
  
        if Typ = Btyp then
           Resolve (Lo, Universal_Fixed);
+          Set_Corresponding_Integer_Value
+            (Lo, UR_To_Uint (Realval (Lo) / Small));
        else
           Resolve (Lo, Btyp);
        end if;
  
        --  Similar processing for high bound
  
        Set_Etype (Hi, Empty);
*************** package body Freeze is
*** 8431,8443 ****
  
        if Typ = Btyp then
           Resolve (Hi, Universal_Fixed);
        else
           Resolve (Hi, Btyp);
        end if;
  
-       Set_Corresponding_Integer_Value
-         (Hi, UR_To_Uint (Realval (Hi) / Small));
- 
        --  Set type of range to correspond to bounds
  
        Set_Etype (Rng, Etype (Lo));
--- 8626,8637 ----
  
        if Typ = Btyp then
           Resolve (Hi, Universal_Fixed);
+          Set_Corresponding_Integer_Value
+            (Hi, UR_To_Uint (Realval (Hi) / Small));
        else
           Resolve (Hi, Btyp);
        end if;
  
        --  Set type of range to correspond to bounds
  
        Set_Etype (Rng, Etype (Lo));
*************** package body Freeze is
*** 8700,8709 ****
--- 8894,8970 ----
     -----------------------
  
     procedure Freeze_Subprogram (E : Entity_Id) is
+       function Check_Extra_Formals (E : Entity_Id) return Boolean;
+       --  Return True if the decoration of the attributes associated with extra
+       --  formals are properly set.
+ 
        procedure Set_Profile_Convention (Subp_Id : Entity_Id);
        --  Set the conventions of all anonymous access-to-subprogram formals and
        --  result subtype of subprogram Subp_Id to the convention of Subp_Id.
  
+       -------------------------
+       -- Check_Extra_Formals --
+       -------------------------
+ 
+       function Check_Extra_Formals (E : Entity_Id) return Boolean is
+          Last_Formal       : Entity_Id := Empty;
+          Formal            : Entity_Id;
+          Has_Extra_Formals : Boolean := False;
+ 
+       begin
+          --  No check required if expansion is disabled because extra
+          --  formals are only generated when we are generating code.
+          --  See Create_Extra_Formals.
+ 
+          if not Expander_Active then
+             return True;
+          end if;
+ 
+          --  Check attribute Extra_Formal: If available, it must be set only
+          --  on the last formal of E.
+ 
+          Formal := First_Formal (E);
+          while Present (Formal) loop
+             if Present (Extra_Formal (Formal)) then
+                if Has_Extra_Formals then
+                   return False;
+                end if;
+ 
+                Has_Extra_Formals := True;
+             end if;
+ 
+             Last_Formal := Formal;
+             Next_Formal (Formal);
+          end loop;
+ 
+          --  Check attribute Extra_Accessibility_Of_Result
+ 
+          if Ekind (E) in E_Function | E_Subprogram_Type
+            and then Needs_Result_Accessibility_Level (E)
+            and then No (Extra_Accessibility_Of_Result (E))
+          then
+             return False;
+          end if;
+ 
+          --  Check attribute Extra_Formals: If E has extra formals, then this
+          --  attribute must point to the first extra formal of E.
+ 
+          if Has_Extra_Formals then
+             return Present (Extra_Formals (E))
+               and then Present (Extra_Formal (Last_Formal))
+               and then Extra_Formal (Last_Formal) = Extra_Formals (E);
+ 
+          --  When E has no formals, the first extra formal is available through
+          --  the Extra_Formals attribute.
+ 
+          elsif Present (Extra_Formals (E)) then
+             return No (First_Formal (E));
+ 
+          else
+             return True;
+          end if;
+       end Check_Extra_Formals;
+ 
        ----------------------------
        -- Set_Profile_Convention --
        ----------------------------
*************** package body Freeze is
*** 8840,8848 ****
  
        if not Has_Foreign_Convention (E) then
           if No (Extra_Formals (E)) then
!             Create_Extra_Formals (E);
           end if;
  
           Set_Mechanisms (E);
  
           --  If this is convention Ada and a Valued_Procedure, that's odd
--- 9101,9129 ----
  
        if not Has_Foreign_Convention (E) then
           if No (Extra_Formals (E)) then
! 
!             --  Extra formals are shared by derived subprograms; therefore, if
!             --  the ultimate alias of E has been frozen before E then the extra
!             --  formals have been added, but the attribute Extra_Formals is
!             --  still unset (and must be set now).
! 
!             if Present (Alias (E))
!               and then Is_Frozen (Ultimate_Alias (E))
!               and then Present (Extra_Formals (Ultimate_Alias (E)))
!               and then Last_Formal (Ultimate_Alias (E)) = Last_Formal (E)
!             then
!                Set_Extra_Formals (E, Extra_Formals (Ultimate_Alias (E)));
! 
!                if Ekind (E) = E_Function then
!                   Set_Extra_Accessibility_Of_Result (E,
!                     Extra_Accessibility_Of_Result (Ultimate_Alias (E)));
!                end if;
!             else
!                Create_Extra_Formals (E);
!             end if;
           end if;
  
+          pragma Assert (Check_Extra_Formals (E));
           Set_Mechanisms (E);
  
           --  If this is convention Ada and a Valued_Procedure, that's odd
*************** package body Freeze is
*** 8943,8952 ****
           Check_Overriding_Indicator (E, Empty, Is_Primitive (E));
        end if;
  
!       if Modify_Tree_For_C
          and then Nkind (Parent (E)) = N_Function_Specification
!         and then Is_Array_Type (Etype (E))
!         and then Is_Constrained (Etype (E))
          and then not Is_Unchecked_Conversion_Instance (E)
          and then not Rewritten_For_C (E)
        then
--- 9224,9235 ----
           Check_Overriding_Indicator (E, Empty, Is_Primitive (E));
        end if;
  
!       Retype := Get_Fullest_View (Etype (E));
! 
!       if Transform_Function_Array
          and then Nkind (Parent (E)) = N_Function_Specification
!         and then Is_Array_Type (Retype)
!         and then Is_Constrained (Retype)
          and then not Is_Unchecked_Conversion_Instance (E)
          and then not Rewritten_For_C (E)
        then
*************** package body Freeze is
*** 9059,9069 ****
              --  directly.
  
              if Nkind (Dcopy) = N_Identifier
!               or else Nkind_In (Dcopy, N_Expanded_Name,
!                                        N_Integer_Literal,
!                                        N_Character_Literal,
!                                        N_String_Literal,
!                                        N_Real_Literal)
                or else (Nkind (Dcopy) = N_Attribute_Reference
                          and then Attribute_Name (Dcopy) = Name_Null_Parameter)
                or else Known_Null (Dcopy)
--- 9342,9352 ----
              --  directly.
  
              if Nkind (Dcopy) = N_Identifier
!               or else Nkind (Dcopy) in N_Expanded_Name
!                                      | N_Integer_Literal
!                                      | N_Character_Literal
!                                      | N_String_Literal
!                                      | N_Real_Literal
                or else (Nkind (Dcopy) = N_Attribute_Reference
                          and then Attribute_Name (Dcopy) = Name_Null_Parameter)
                or else Known_Null (Dcopy)
diff -Nrcpad gcc-10.3.0/gcc/ada/freeze.ads gcc-11.1.0/gcc/ada/freeze.ads
*** gcc-10.3.0/gcc/ada/freeze.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/freeze.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Freeze is
*** 152,166 ****
     --    occur.
     --
     --    Size is known at compile time, but the actual value of the size is not
!    --    known to the front end or is definitely greater than 64. In this case,
!    --    Size_Known_At_Compile_Time is set, but the RM_Size field is left set
!    --    to zero (to be set by Gigi).
     --
     --    Size is known at compile time, and the actual value of the size is
!    --    known to the front end and is not greater than 64. In this case, the
!    --    flag Size_Known_At_Compile_Time is set, and in addition RM_Size is set
!    --    to the required size, allowing for possible front end packing of an
!    --    array using this type as a component type.
     --
     --  Note: the flag Size_Known_At_Compile_Time is used to determine if the
     --  secondary stack must be used to return a value of the type, and also
--- 152,166 ----
     --    occur.
     --
     --    Size is known at compile time, but the actual value of the size is not
!    --    known to the front end or is greater than System_Max_Integer_Size. In
!    --    this case, Size_Known_At_Compile_Time is set, but the RM_Size field is
!    --    left set to zero (to be set by Gigi).
     --
     --    Size is known at compile time, and the actual value of the size is
!    --    known to the front end and not greater than System_Max_Integer_Size.
!    --    In this case, Size_Known_At_Compile_Time is set, and in addition the
!    --    RM_Size field is set to the required size, allowing for possible front
!    --    end packing of an array using this type as a component type.
     --
     --  Note: the flag Size_Known_At_Compile_Time is used to determine if the
     --  secondary stack must be used to return a value of the type, and also
*************** package Freeze is
*** 174,181 ****
     --  do not allow a size clause if the size would not otherwise be known at
     --  compile time in any case.
  
!    function Is_Atomic_VFA_Aggregate (N : Node_Id) return Boolean;
!    --  If an atomic/VFA object is initialized with an aggregate or is assigned
     --  an aggregate, we have to prevent a piecemeal access or assignment to the
     --  object, even if the aggregate is to be expanded. We create a temporary
     --  for the aggregate, and assign the temporary instead, so that the back
--- 174,181 ----
     --  do not allow a size clause if the size would not otherwise be known at
     --  compile time in any case.
  
!    function Is_Full_Access_Aggregate (N : Node_Id) return Boolean;
!    --  If a full access object is initialized with an aggregate or is assigned
     --  an aggregate, we have to prevent a piecemeal access or assignment to the
     --  object, even if the aggregate is to be expanded. We create a temporary
     --  for the aggregate, and assign the temporary instead, so that the back
diff -Nrcpad gcc-10.3.0/gcc/ada/frontend.adb gcc-11.1.0/gcc/ada/frontend.adb
*** gcc-10.3.0/gcc/ada/frontend.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/frontend.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sinput.L; use Sinput.L;
*** 66,71 ****
--- 66,72 ----
  with SCIL_LL;
  with Tbuild;   use Tbuild;
  with Types;    use Types;
+ with VAST;
  
  procedure Frontend is
  begin
*************** begin
*** 381,386 ****
--- 382,397 ----
           Warn_On_Non_Local_Exception := True;
        end if;
  
+       --  Disable Initialize_Scalars for runtime files to avoid circular
+       --  dependencies.
+ 
+       if Initialize_Scalars
+         and then Fname.Is_Predefined_File_Name (File_Name (Main_Source_File))
+       then
+          Initialize_Scalars   := False;
+          Init_Or_Norm_Scalars := Normalize_Scalars;
+       end if;
+ 
        --  Now on to the semantics. Skip if in syntax only mode
  
        if Operating_Mode /= Check_Syntax then
*************** begin
*** 412,425 ****
  
              --  Cleanup processing after completing main analysis
  
!             --  Comment needed for ASIS mode test and GNATprove mode test???
  
              pragma Assert
                (Operating_Mode = Generate_Code
                  or else Operating_Mode = Check_Semantics);
  
              if Operating_Mode = Generate_Code
!               or else (ASIS_Mode or GNATprove_Mode)
              then
                 Instantiate_Bodies;
              end if;
--- 423,437 ----
  
              --  Cleanup processing after completing main analysis
  
!             --  In GNATprove_Mode we do not perform most expansions but body
!             --  instantiation is needed.
  
              pragma Assert
                (Operating_Mode = Generate_Code
                  or else Operating_Mode = Check_Semantics);
  
              if Operating_Mode = Generate_Code
!               or else GNATprove_Mode
              then
                 Instantiate_Bodies;
              end if;
*************** begin
*** 504,509 ****
--- 516,527 ----
        null;
     end if;
  
+    --  Verify the validity of the tree
+ 
+    if Debug_Flag_Underscore_VV then
+       VAST.Check_Tree (Cunit (Main_Unit));
+    end if;
+ 
     --  Dump the source now. Note that we do this as soon as the analysis
     --  of the tree is complete, because it is not just a dump in the case
     --  of -gnatD, where it rewrites all source locations in the tree.
diff -Nrcpad gcc-10.3.0/gcc/ada/frontend.ads gcc-11.1.0/gcc/ada/frontend.ads
*** gcc-10.3.0/gcc/ada/frontend.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/frontend.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/Make-lang.in gcc-11.1.0/gcc/ada/gcc-interface/Make-lang.in
*** gcc-10.3.0/gcc/ada/gcc-interface/Make-lang.in	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gcc-interface/Make-lang.in	Tue Apr 27 10:00:12 2021
*************** MV = mv
*** 42,48 ****
  MKDIR = mkdir -p
  RM = rm -f
  RMDIR = rm -rf
! 
  
  # Extra flags to pass to recursive makes.
  COMMON_ADAFLAGS= -gnatpg
--- 42,48 ----
  MKDIR = mkdir -p
  RM = rm -f
  RMDIR = rm -rf
! 
  
  # Extra flags to pass to recursive makes.
  COMMON_ADAFLAGS= -gnatpg
*************** ALL_ADAFLAGS = \
*** 68,74 ****
    $(CFLAGS) $(ADA_CFLAGS) $(ADAFLAGS) $(CHECKING_ADAFLAGS) $(WARN_ADAFLAGS)
  FORCE_DEBUG_ADAFLAGS = -g
  ADA_CFLAGS =
! ADA_INCLUDES = -nostdinc -I- -I. -Iada/generated -Iada -I$(srcdir)/ada -I$(srcdir)/ada/gcc-interface -Iada/libgnat -I$(srcdir)/ada/libgnat
  GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc
  GNATLIBCFLAGS= -g -O2 $(TCFLAGS)
  ADA_INCLUDE_DIR = $(libsubdir)/adainclude
--- 68,74 ----
    $(CFLAGS) $(ADA_CFLAGS) $(ADAFLAGS) $(CHECKING_ADAFLAGS) $(WARN_ADAFLAGS)
  FORCE_DEBUG_ADAFLAGS = -g
  ADA_CFLAGS =
! ADA_INCLUDES = -nostdinc -I- -I. -Iada/generated -Iada -Iada/gcc-interface -I$(srcdir)/ada -I$(srcdir)/ada/gcc-interface -Iada/libgnat -I$(srcdir)/ada/libgnat
  GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc
  GNATLIBCFLAGS= -g -O2 $(TCFLAGS)
  ADA_INCLUDE_DIR = $(libsubdir)/adainclude
*************** endif
*** 146,151 ****
--- 146,152 ----
  
  # Define the names for selecting Ada in LANGUAGES.
  ada: gnat1$(exeext) gnatbind$(exeext)
+ ada.serial = gnat1$(exeext)
  
  # Tell GNU Make to ignore these, if they exist.
  .PHONY: ada
*************** GNAT_ADA_OBJS =	\
*** 302,307 ****
--- 303,309 ----
   ada/exp_intr.o	\
   ada/exp_pakd.o	\
   ada/exp_prag.o	\
+  ada/exp_put_image.o	\
   ada/exp_sel.o	\
   ada/exp_smem.o	\
   ada/exp_strm.o	\
*************** GNAT_ADA_OBJS =	\
*** 326,331 ****
--- 328,334 ----
   ada/libgnat/g-u3spch.o	\
   ada/get_targ.o	\
   ada/ghost.o	\
+  ada/gnat_cuda.o \
   ada/libgnat/gnat.o	\
   ada/gnatvsn.o	\
   ada/hostparm.o	\
*************** GNAT_ADA_OBJS =	\
*** 468,480 ****
   ada/stylesw.o	\
   ada/switch-c.o	\
   ada/switch.o	\
!  ada/libgnat/system.o	\
   ada/table.o	\
   ada/targparm.o	\
   ada/tbuild.o	\
-  ada/tree_gen.o	\
-  ada/tree_in.o	\
-  ada/tree_io.o	\
   ada/treepr.o	\
   ada/treeprs.o	\
   ada/ttypes.o	\
--- 471,480 ----
   ada/stylesw.o	\
   ada/switch-c.o	\
   ada/switch.o	\
!  ada/gcc-interface/system.o	\
   ada/table.o	\
   ada/targparm.o	\
   ada/tbuild.o	\
   ada/treepr.o	\
   ada/treeprs.o	\
   ada/ttypes.o	\
*************** GNAT_ADA_OBJS =	\
*** 484,489 ****
--- 484,490 ----
   ada/urealp.o	\
   ada/usage.o	\
   ada/validsw.o	\
+  ada/vast.o	\
   ada/warnsw.o	\
   ada/widechar.o
  
*************** GNATBIND_OBJS = \
*** 628,638 ****
   ada/stylesw.o    \
   ada/switch-b.o   \
   ada/switch.o     \
!  ada/libgnat/system.o     \
   ada/table.o      \
   ada/targext.o    \
   ada/targparm.o   \
-  ada/tree_io.o    \
   ada/types.o      \
   ada/uintp.o      \
   ada/uname.o      \
--- 629,638 ----
   ada/stylesw.o    \
   ada/switch-b.o   \
   ada/switch.o     \
!  ada/gcc-interface/system.o     \
   ada/table.o      \
   ada/targext.o    \
   ada/targparm.o   \
   ada/types.o      \
   ada/uintp.o      \
   ada/uname.o      \
*************** ada/libgnat/s-excmac.adb: $(srcdir)/ada/
*** 668,677 ****
  # Needs to be built with CC=gcc
  # Since the RTL should be built with the latest compiler, remove the
  #  stamp target in the parent directory whenever gnat1 is rebuilt
! gnat1$(exeext): $(TARGET_ADA_SRCS) $(GNAT1_OBJS) $(ADA_BACKEND) libcommon-target.a $(LIBDEPS)
  	+$(GCC_LLINK) -o $@ $(GNAT1_OBJS) $(ADA_BACKEND) \
  	  libcommon-target.a $(LIBS) $(SYSLIBS) $(BACKENDLIBS) $(CFLAGS)
  	$(RM) stamp-gnatlib2-rts stamp-tools
  
  gnatbind$(exeext): ada/b_gnatb.o $(CONFIG_H) $(GNATBIND_OBJS) ggc-none.o libcommon-target.a $(LIBDEPS)
  	+$(GCC_LINK) -o $@ ada/b_gnatb.o $(GNATBIND_OBJS) ggc-none.o libcommon-target.a $(LIBS) $(SYSLIBS) $(CFLAGS)
--- 668,680 ----
  # Needs to be built with CC=gcc
  # Since the RTL should be built with the latest compiler, remove the
  #  stamp target in the parent directory whenever gnat1 is rebuilt
! gnat1$(exeext): $(TARGET_ADA_SRCS) $(GNAT1_OBJS) $(ADA_BACKEND) libcommon-target.a \
! 		$(LIBDEPS) $(ada.prev)
! 	@$(call LINK_PROGRESS,$(INDEX.ada),start)
  	+$(GCC_LLINK) -o $@ $(GNAT1_OBJS) $(ADA_BACKEND) \
  	  libcommon-target.a $(LIBS) $(SYSLIBS) $(BACKENDLIBS) $(CFLAGS)
  	$(RM) stamp-gnatlib2-rts stamp-tools
+ 	@$(call LINK_PROGRESS,$(INDEX.ada),end)
  
  gnatbind$(exeext): ada/b_gnatb.o $(CONFIG_H) $(GNATBIND_OBJS) ggc-none.o libcommon-target.a $(LIBDEPS)
  	+$(GCC_LINK) -o $@ ada/b_gnatb.o $(GNATBIND_OBJS) ggc-none.o libcommon-target.a $(LIBS) $(SYSLIBS) $(CFLAGS)
*************** doc/gnat_rm.pdf: ada/gnat_rm.texi $(gcc_
*** 811,817 ****
  doc/gnat-style.pdf: ada/gnat-style.texi $(gcc_docdir)/include/fdl.texi
  	$(TEXI2PDF) -c -I $(abs_docdir)/include -o $@ $<
  
- 
  # Install hooks:
  # gnat1 is installed elsewhere as part of $(COMPILERS).
  
--- 814,819 ----
*************** ada.maintainer-clean:
*** 905,911 ****
  	-$(RM) ada/nmake.ads
  	-$(RM) ada/treeprs.ads
  	-$(RM) ada/snames.ads ada/snames.adb ada/snames.h
! 
  # Stage hooks:
  # The main makefile has already created stage?/ada
  
--- 907,913 ----
  	-$(RM) ada/nmake.ads
  	-$(RM) ada/treeprs.ads
  	-$(RM) ada/snames.ads ada/snames.adb ada/snames.h
! 
  # Stage hooks:
  # The main makefile has already created stage?/ada
  
*************** $(check_acats_targets): check-acats%:
*** 1002,1008 ****
  	touch $$GCC_RUNTEST_PARALLELIZE_DIR/finished
  
  .PHONY: check-acats $(check_acats_targets)
! 
  # Compiling object files from source files.
  
  # Ada language specific files.
--- 1004,1010 ----
  	touch $$GCC_RUNTEST_PARALLELIZE_DIR/finished
  
  .PHONY: check-acats $(check_acats_targets)
! 
  # Compiling object files from source files.
  
  # Ada language specific files.
*************** ada/sdefault.o : ada/libgnat/ada.ads ada
*** 1040,1047 ****
     ada/libgnat/s-exctab.ads ada/libgnat/s-memory.ads ada/libgnat/s-os_lib.ads ada/libgnat/s-parame.ads \
     ada/libgnat/s-stalib.ads ada/libgnat/s-strops.ads ada/libgnat/s-sopco3.ads ada/libgnat/s-sopco4.ads \
     ada/libgnat/s-sopco5.ads ada/libgnat/s-string.ads ada/libgnat/s-traent.ads ada/libgnat/s-unstyp.ads \
!    ada/libgnat/s-wchcon.ads ada/libgnat/system.ads ada/table.adb ada/table.ads ada/tree_io.ads \
!    ada/types.ads ada/libgnat/unchdeal.ads ada/libgnat/unchconv.ads
  
  # Special flags - see gcc-interface/Makefile.in for the template.
  
--- 1042,1050 ----
     ada/libgnat/s-exctab.ads ada/libgnat/s-memory.ads ada/libgnat/s-os_lib.ads ada/libgnat/s-parame.ads \
     ada/libgnat/s-stalib.ads ada/libgnat/s-strops.ads ada/libgnat/s-sopco3.ads ada/libgnat/s-sopco4.ads \
     ada/libgnat/s-sopco5.ads ada/libgnat/s-string.ads ada/libgnat/s-traent.ads ada/libgnat/s-unstyp.ads \
!    ada/libgnat/s-wchcon.ads ada/table.adb ada/table.ads \
!    ada/types.ads ada/libgnat/unchdeal.ads ada/libgnat/unchconv.ads \
!    ada/gcc-interface/system.ads
  
  # Special flags - see gcc-interface/Makefile.in for the template.
  
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/Makefile.in gcc-11.1.0/gcc/ada/gcc-interface/Makefile.in
*** gcc-10.3.0/gcc/ada/gcc-interface/Makefile.in	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gcc-interface/Makefile.in	Tue Apr 27 10:00:12 2021
*************** NO_INLINE_ADAFLAGS = -fno-inline
*** 110,116 ****
  NO_OMIT_ADAFLAGS = -fno-omit-frame-pointer
  NO_SIBLING_ADAFLAGS = -fno-optimize-sibling-calls
  NO_REORDER_ADAFLAGS = -fno-toplevel-reorder
! GNATLIBFLAGS = -W -Wall -gnatpg -nostdinc
  GNATLIBCFLAGS = -g -O2
  # Pretend that _Unwind_GetIPInfo is available for the target by default.  This
  # should be autodetected during the configuration of libada and passed down to
--- 110,116 ----
  NO_OMIT_ADAFLAGS = -fno-omit-frame-pointer
  NO_SIBLING_ADAFLAGS = -fno-optimize-sibling-calls
  NO_REORDER_ADAFLAGS = -fno-toplevel-reorder
! GNATLIBFLAGS = -W -Wall -gnatg -nostdinc
  GNATLIBCFLAGS = -g -O2
  # Pretend that _Unwind_GetIPInfo is available for the target by default.  This
  # should be autodetected during the configuration of libada and passed down to
*************** endif
*** 216,222 ****
  ifneq ($(xmake_file),)
  include $(xmake_file)
  endif
! 
  # Now figure out from those variables how to compile and link.
  
  all.indirect: Makefile ../gnat1$(exeext)
--- 216,222 ----
  ifneq ($(xmake_file),)
  include $(xmake_file)
  endif
! 
  # Now figure out from those variables how to compile and link.
  
  all.indirect: Makefile ../gnat1$(exeext)
*************** Makefile: ../config.status $(srcdir)/ada
*** 311,324 ****
  # This tells GNU make version 3 not to export all the variables
  # defined in this file into the environment.
  .NOEXPORT:
! 
  # Lists of files for various purposes.
  
  GNATLINK_OBJS = gnatlink.o \
   a-except.o ali.o alloc.o butil.o casing.o csets.o debug.o fmap.o fname.o \
   gnatvsn.o hostparm.o indepsw.o interfac.o i-c.o i-cstrin.o namet.o opt.o \
   osint.o output.o rident.o s-exctab.o s-secsta.o s-stalib.o s-stoele.o \
!  sdefault.o snames.o stylesw.o switch.o system.o table.o targparm.o tree_io.o \
   types.o validsw.o widechar.o
  
  GNATMAKE_OBJS = a-except.o ali.o ali-util.o aspects.o s-casuti.o alloc.o \
--- 311,324 ----
  # This tells GNU make version 3 not to export all the variables
  # defined in this file into the environment.
  .NOEXPORT:
! 
  # Lists of files for various purposes.
  
  GNATLINK_OBJS = gnatlink.o \
   a-except.o ali.o alloc.o butil.o casing.o csets.o debug.o fmap.o fname.o \
   gnatvsn.o hostparm.o indepsw.o interfac.o i-c.o i-cstrin.o namet.o opt.o \
   osint.o output.o rident.o s-exctab.o s-secsta.o s-stalib.o s-stoele.o \
!  sdefault.o snames.o stylesw.o switch.o system.o table.o targparm.o \
   types.o validsw.o widechar.o
  
  GNATMAKE_OBJS = a-except.o ali.o ali-util.o aspects.o s-casuti.o alloc.o \
*************** GNATMAKE_OBJS = a-except.o ali.o ali-uti
*** 330,336 ****
   s-secsta.o s-stalib.o s-stoele.o scans.o scng.o sdefault.o sfn_scan.o \
   s-purexc.o s-htable.o scil_ll.o sem_aux.o sinfo.o sinput.o sinput-c.o \
   snames.o stand.o stringt.o styleg.o stylesw.o system.o validsw.o \
!  switch.o switch-m.o table.o targparm.o tempdir.o tree_io.o types.o uintp.o \
   uname.o urealp.o usage.o widechar.o \
   $(EXTRA_GNATMAKE_OBJS)
  
--- 330,336 ----
   s-secsta.o s-stalib.o s-stoele.o scans.o scng.o sdefault.o sfn_scan.o \
   s-purexc.o s-htable.o scil_ll.o sem_aux.o sinfo.o sinput.o sinput-c.o \
   snames.o stand.o stringt.o styleg.o stylesw.o system.o validsw.o \
!  switch.o switch-m.o table.o targparm.o tempdir.o types.o uintp.o \
   uname.o urealp.o usage.o widechar.o \
   $(EXTRA_GNATMAKE_OBJS)
  
*************** GNATMAKE_OBJS = a-except.o ali.o ali-uti
*** 338,344 ****
  # picks up the right files. For a given target this must be coherent
  # with MULTILIB_DIRNAMES defined in gcc/config/target/t-*.
  
! ifeq ($(strip $(filter-out %x86_64, $(target_cpu))),)
    ifeq ($(strip $(MULTISUBDIR)),/32)
      target_cpu:=i686
    else
--- 338,344 ----
  # picks up the right files. For a given target this must be coherent
  # with MULTILIB_DIRNAMES defined in gcc/config/target/t-*.
  
! ifeq ($(strip $(filter-out x86_64, $(target_cpu))),)
    ifeq ($(strip $(MULTISUBDIR)),/32)
      target_cpu:=i686
    else
*************** ifeq ($(strip $(filter-out %x86_64, $(ta
*** 348,353 ****
--- 348,358 ----
    endif
  endif
  
+ # The SuSE PowerPC64/Linux compiler is actually a 32-bit PowerPC compiler
+ ifeq ($(strip $(filter-out powerpc64 suse linux%, $(target_cpu) $(target_vendor) $(target_os))),)
+   target_cpu:=powerpc
+ endif
+ 
  # Configuration of host tools
  
  # Under linux, host tools need to be linked with -ldl
*************** ADA_RTL_DSO_DIR = $(toolexeclibdir)
*** 895,901 ****
  # need to keep the frame pointer in tracebak.o to pop the stack properly on
  # some targets.
  
! tracebak.o  : tracebak.c tb-gcc.c
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ADA_CFLAGS) $(ALL_CPPFLAGS) \
  	      $(INCLUDES) $(NO_OMIT_ADAFLAGS) $< $(OUTPUT_OPTION)
  
--- 900,906 ----
  # need to keep the frame pointer in tracebak.o to pop the stack properly on
  # some targets.
  
! tracebak.o  : tracebak.c
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ADA_CFLAGS) $(ALL_CPPFLAGS) \
  	      $(INCLUDES) $(NO_OMIT_ADAFLAGS) $< $(OUTPUT_OPTION)
  
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/ada-tree.h gcc-11.1.0/gcc/ada/gcc-interface/ada-tree.h
*** gcc-10.3.0/gcc/ada/gcc-interface/ada-tree.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gcc-interface/ada-tree.h	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** do {							 \
*** 73,87 ****
  #define TYPE_IS_FAT_POINTER_P(NODE) \
    (TREE_CODE (NODE) == RECORD_TYPE && TYPE_FAT_POINTER_P (NODE))
  
! /* For integral types and array types, nonzero if this is a packed array type
!    used for bit-packed types.  Such types should not be extended to a larger
!    size or validated against a specified size.  */
! #define TYPE_PACKED_ARRAY_TYPE_P(NODE) \
    TYPE_LANG_FLAG_0 (TREE_CHECK2 (NODE, INTEGER_TYPE, ARRAY_TYPE))
  
! #define TYPE_IS_PACKED_ARRAY_TYPE_P(NODE) \
    ((TREE_CODE (NODE) == INTEGER_TYPE || TREE_CODE (NODE) == ARRAY_TYPE) \
!    && TYPE_PACKED_ARRAY_TYPE_P (NODE))
  
  /* For FUNCTION_TYPE and METHOD_TYPE, nonzero if the function returns by
     direct reference, i.e. the callee returns a pointer to a memory location
--- 73,87 ----
  #define TYPE_IS_FAT_POINTER_P(NODE) \
    (TREE_CODE (NODE) == RECORD_TYPE && TYPE_FAT_POINTER_P (NODE))
  
! /* For integral types and array types, nonzero if this is an implementation
!    type for a bit-packed array type.  Such types should not be extended to a
!    larger size or validated against a specified size.  */
! #define TYPE_BIT_PACKED_ARRAY_TYPE_P(NODE) \
    TYPE_LANG_FLAG_0 (TREE_CHECK2 (NODE, INTEGER_TYPE, ARRAY_TYPE))
  
! #define BIT_PACKED_ARRAY_TYPE_P(NODE) \
    ((TREE_CODE (NODE) == INTEGER_TYPE || TREE_CODE (NODE) == ARRAY_TYPE) \
!    && TYPE_BIT_PACKED_ARRAY_TYPE_P (NODE))
  
  /* For FUNCTION_TYPE and METHOD_TYPE, nonzero if the function returns by
     direct reference, i.e. the callee returns a pointer to a memory location
*************** do {							 \
*** 196,202 ****
     types.  */
  #define TYPE_IMPL_PACKED_ARRAY_P(NODE) \
    ((TREE_CODE (NODE) == ARRAY_TYPE && TYPE_PACKED (NODE)) \
!    || (TREE_CODE (NODE) == INTEGER_TYPE && TYPE_PACKED_ARRAY_TYPE_P (NODE)))
  
  /* True for types that can hold a debug type.  */
  #define TYPE_CAN_HAVE_DEBUG_TYPE_P(NODE) (!TYPE_IMPL_PACKED_ARRAY_P (NODE))
--- 196,202 ----
     types.  */
  #define TYPE_IMPL_PACKED_ARRAY_P(NODE) \
    ((TREE_CODE (NODE) == ARRAY_TYPE && TYPE_PACKED (NODE)) \
!    || (TREE_CODE (NODE) == INTEGER_TYPE && TYPE_BIT_PACKED_ARRAY_TYPE_P (NODE)))
  
  /* True for types that can hold a debug type.  */
  #define TYPE_CAN_HAVE_DEBUG_TYPE_P(NODE) (!TYPE_IMPL_PACKED_ARRAY_P (NODE))
*************** do {						   \
*** 525,537 ****
  #define SET_DECL_INDUCTION_VAR(NODE, X) \
    SET_DECL_LANG_SPECIFIC (VAR_DECL_CHECK (NODE), X)
  
- /* In a VAR_DECL without the DECL_LOOP_PARM_P flag set and that is a renaming
-    pointer, points to the object being renamed, if any.  */
- #define DECL_RENAMED_OBJECT(NODE) \
-   GET_DECL_LANG_SPECIFIC (VAR_DECL_CHECK (NODE))
- #define SET_DECL_RENAMED_OBJECT(NODE, X) \
-   SET_DECL_LANG_SPECIFIC (VAR_DECL_CHECK (NODE), X)
- 
  /* In a TYPE_DECL, points to the parallel type if any, otherwise 0.  */
  #define DECL_PARALLEL_TYPE(NODE) \
    GET_DECL_LANG_SPECIFIC (TYPE_DECL_CHECK (NODE))
--- 525,530 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/ada.h gcc-11.1.0/gcc/ada/gcc-interface/ada.h
*** gcc-10.3.0/gcc/ada/gcc-interface/ada.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gcc-interface/ada.h	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2013, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/cuintp.c gcc-11.1.0/gcc/ada/gcc-interface/cuintp.c
*** gcc-10.3.0/gcc/ada/gcc-interface/cuintp.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gcc-interface/cuintp.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/decl.c gcc-11.1.0/gcc/ada/gcc-interface/decl.c
*** gcc-10.3.0/gcc/ada/gcc-interface/decl.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gcc-interface/decl.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** static Uint annotate_value (tree);
*** 230,236 ****
  static void annotate_rep (Entity_Id, tree);
  static tree build_position_list (tree, bool, tree, tree, unsigned int, tree);
  static vec<subst_pair> build_subst_list (Entity_Id, Entity_Id, bool);
! static vec<variant_desc> build_variant_list (tree, vec<subst_pair>,
  					     vec<variant_desc>);
  static tree maybe_saturate_size (tree, unsigned int align);
  static tree validate_size (Uint, tree, Entity_Id, enum tree_code, bool, bool,
--- 230,236 ----
  static void annotate_rep (Entity_Id, tree);
  static tree build_position_list (tree, bool, tree, tree, unsigned int, tree);
  static vec<subst_pair> build_subst_list (Entity_Id, Entity_Id, bool);
! static vec<variant_desc> build_variant_list (tree, Node_Id, vec<subst_pair>,
  					     vec<variant_desc>);
  static tree maybe_saturate_size (tree, unsigned int align);
  static tree validate_size (Uint, tree, Entity_Id, enum tree_code, bool, bool,
*************** static tree create_variant_part_from (tr
*** 248,254 ****
  static void copy_and_substitute_in_size (tree, tree, vec<subst_pair>);
  static void copy_and_substitute_in_layout (Entity_Id, Entity_Id, tree, tree,
  					   vec<subst_pair>, bool);
! static void associate_original_type_to_packed_array (tree, Entity_Id);
  static const char *get_entity_char (Entity_Id);
  
  /* The relevant constituents of a subprogram binding to a GCC builtin.  Used
--- 248,254 ----
  static void copy_and_substitute_in_size (tree, tree, vec<subst_pair>);
  static void copy_and_substitute_in_layout (Entity_Id, Entity_Id, tree, tree,
  					   vec<subst_pair>, bool);
! static tree associate_original_type_to_packed_array (tree, Entity_Id);
  static const char *get_entity_char (Entity_Id);
  
  /* The relevant constituents of a subprogram binding to a GCC builtin.  Used
*************** typedef struct {
*** 261,267 ****
  } intrin_binding_t;
  
  static bool intrin_profiles_compatible_p (intrin_binding_t *);
! 
  /* Given GNAT_ENTITY, a GNAT defining identifier node, which denotes some Ada
     entity, return the equivalent GCC tree for that entity (a ..._DECL node)
     and associate the ..._DECL node with the input GNAT defining identifier.
--- 261,267 ----
  } intrin_binding_t;
  
  static bool intrin_profiles_compatible_p (intrin_binding_t *);
! 
  /* Given GNAT_ENTITY, a GNAT defining identifier node, which denotes some Ada
     entity, return the equivalent GCC tree for that entity (a ..._DECL node)
     and associate the ..._DECL node with the input GNAT defining identifier.
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 280,285 ****
--- 280,287 ----
  {
    /* The construct that declared the entity.  */
    const Node_Id gnat_decl = Declaration_Node (gnat_entity);
+   /* The object that the entity renames, if any.  */
+   const Entity_Id gnat_renamed_obj = Renamed_Object (gnat_entity);
    /* The kind of the entity.  */
    const Entity_Kind kind = Ekind (gnat_entity);
    /* True if this is a type.  */
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 327,333 ****
    /* Contains the list of attributes directly attached to the entity.  */
    struct attrib *attr_list = NULL;
  
!   /* Since a use of an Itype is a definition, process it as such if it is in
       the main unit, except for E_Access_Subtype because it's actually a use
       of its base type, see below.  */
    if (!definition
--- 329,335 ----
    /* Contains the list of attributes directly attached to the entity.  */
    struct attrib *attr_list = NULL;
  
!   /* Since a use of an itype is a definition, process it as such if it is in
       the main unit, except for E_Access_Subtype because it's actually a use
       of its base type, see below.  */
    if (!definition
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 375,381 ****
  	    }
  	}
  
!       /* This abort means the Itype has an incorrect scope, i.e. that its
  	 scope does not correspond to the subprogram it is first used in.  */
        gcc_unreachable ();
      }
--- 377,383 ----
  	    }
  	}
  
!       /* This abort means the itype has an incorrect scope, i.e. that its
  	 scope does not correspond to the subprogram it is first used in.  */
        gcc_unreachable ();
      }
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 448,453 ****
--- 450,463 ----
       If we are not defining it, it must be a type or an entity that is defined
       elsewhere or externally, otherwise we should have defined it already.
  
+      In other words, the failure of this assertion typically arises when a
+      reference to an entity (type or object) is made before its declaration,
+      either directly or by means of a freeze node which is incorrectly placed.
+      This can also happen for an entity referenced out of context, for example
+      a parameter outside of the subprogram where it is declared.  GNAT_ENTITY
+      is the N_Defining_Identifier of the entity, the problematic N_Identifier
+      being the argument passed to Identifier_to_gnu in the parent frame.
+ 
       One exception is for an entity, typically an inherited operation, which is
       a local alias for the parent's operation.  It is neither defined, since it
       is an inherited operation, nor public, since it is declared in the current
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 514,520 ****
  	  else if (IN (kind, Access_Kind))
  	    max_esize = POINTER_SIZE * 2;
  	  else
! 	    max_esize = LONG_LONG_TYPE_SIZE;
  
  	  if (esize > max_esize)
  	   esize = max_esize;
--- 524,530 ----
  	  else if (IN (kind, Access_Kind))
  	    max_esize = POINTER_SIZE * 2;
  	  else
! 	    max_esize = Enable_128bit_Types ? 128 : LONG_LONG_TYPE_SIZE;
  
  	  if (esize > max_esize)
  	   esize = max_esize;
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 636,642 ****
  	  && !gnu_expr
  	  && No (Address_Clause (gnat_entity))
  	  && !No_Initialization (gnat_decl)
! 	  && No (Renamed_Object (gnat_entity)))
  	{
  	  gnu_decl = error_mark_node;
  	  saved = true;
--- 646,652 ----
  	  && !gnu_expr
  	  && No (Address_Clause (gnat_entity))
  	  && !No_Initialization (gnat_decl)
! 	  && No (gnat_renamed_obj))
  	{
  	  gnu_decl = error_mark_node;
  	  saved = true;
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 657,677 ****
  
        /* If we have a constant that we are not defining, get the expression it
  	 was defined to represent.  This is necessary to avoid generating dumb
! 	 elaboration code in simple cases, but we may throw it away later if it
  	 is not a constant.  But do not do it for dispatch tables because they
  	 are only referenced indirectly and we need to have a consistent view
  	 of the exported and of the imported declarations of the tables from
  	 external units for them to be properly merged in LTO mode.  Moreover
! 	 simply do not retrieve the expression it if it is an allocator since
  	 the designated type might still be dummy at this point.  Note that we
  	 invoke gnat_to_gnu_external and not gnat_to_gnu because the expression
  	 may contain N_Expression_With_Actions nodes and thus declarations of
! 	 objects from other units that we need to discard.  */
        if (!definition
  	  && !No_Initialization (gnat_decl)
  	  && !Is_Dispatch_Table_Entity (gnat_entity)
  	  && Present (gnat_temp = Expression (gnat_decl))
! 	  && Nkind (gnat_temp) != N_Allocator)
  	gnu_expr = gnat_to_gnu_external (gnat_temp);
  
        /* ... fall through ... */
--- 667,690 ----
  
        /* If we have a constant that we are not defining, get the expression it
  	 was defined to represent.  This is necessary to avoid generating dumb
! 	 elaboration code in simple cases, and we may throw it away later if it
  	 is not a constant.  But do not do it for dispatch tables because they
  	 are only referenced indirectly and we need to have a consistent view
  	 of the exported and of the imported declarations of the tables from
  	 external units for them to be properly merged in LTO mode.  Moreover
! 	 simply do not retrieve the expression if it is an allocator because
  	 the designated type might still be dummy at this point.  Note that we
  	 invoke gnat_to_gnu_external and not gnat_to_gnu because the expression
  	 may contain N_Expression_With_Actions nodes and thus declarations of
! 	 objects from other units that we need to discard.  Note also that we
! 	 need to do it even if we are only annotating types, so as to be able
! 	 to validate representation clauses using constants.  */
        if (!definition
  	  && !No_Initialization (gnat_decl)
  	  && !Is_Dispatch_Table_Entity (gnat_entity)
  	  && Present (gnat_temp = Expression (gnat_decl))
! 	  && Nkind (gnat_temp) != N_Allocator
! 	  && (Is_Elementary_Type (Etype (gnat_entity)) || !type_annotate_only))
  	gnu_expr = gnat_to_gnu_external (gnat_temp);
  
        /* ... fall through ... */
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 692,698 ****
  	     && !Treat_As_Volatile (gnat_entity)
  	     && (((Nkind (gnat_decl) == N_Object_Declaration)
  		  && Present (Expression (gnat_decl)))
! 		 || Present (Renamed_Object (gnat_entity))
  		 || imported_p));
  	bool inner_const_flag = const_flag;
  	bool static_flag = Is_Statically_Allocated (gnat_entity);
--- 705,711 ----
  	     && !Treat_As_Volatile (gnat_entity)
  	     && (((Nkind (gnat_decl) == N_Object_Declaration)
  		  && Present (Expression (gnat_decl)))
! 		 || Present (gnat_renamed_obj)
  		 || imported_p));
  	bool inner_const_flag = const_flag;
  	bool static_flag = Is_Statically_Allocated (gnat_entity);
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 704,723 ****
  	bool mutable_p = false;
  	bool used_by_ref = false;
  	tree gnu_ext_name = NULL_TREE;
- 	tree renamed_obj = NULL_TREE;
  	tree gnu_ada_size = NULL_TREE;
  
  	/* We need to translate the renamed object even though we are only
  	   referencing the renaming.  But it may contain a call for which
  	   we'll generate a temporary to hold the return value and which
  	   is part of the definition of the renaming, so discard it.  */
! 	if (Present (Renamed_Object (gnat_entity)) && !definition)
  	  {
  	    if (kind == E_Exception)
  	      gnu_expr = gnat_to_gnu_entity (Renamed_Entity (gnat_entity),
  					     NULL_TREE, false);
  	    else
! 	      gnu_expr = gnat_to_gnu_external (Renamed_Object (gnat_entity));
  	  }
  
  	/* Get the type after elaborating the renamed object.  */
--- 717,735 ----
  	bool mutable_p = false;
  	bool used_by_ref = false;
  	tree gnu_ext_name = NULL_TREE;
  	tree gnu_ada_size = NULL_TREE;
  
  	/* We need to translate the renamed object even though we are only
  	   referencing the renaming.  But it may contain a call for which
  	   we'll generate a temporary to hold the return value and which
  	   is part of the definition of the renaming, so discard it.  */
! 	if (Present (gnat_renamed_obj) && !definition)
  	  {
  	    if (kind == E_Exception)
  	      gnu_expr = gnat_to_gnu_entity (Renamed_Entity (gnat_entity),
  					     NULL_TREE, false);
  	    else
! 	      gnu_expr = gnat_to_gnu_external (gnat_renamed_obj);
  	  }
  
  	/* Get the type after elaborating the renamed object.  */
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 764,770 ****
  	/* Reject non-renamed objects whose type is an unconstrained array or
  	   any object whose type is a dummy type or void.  */
  	if ((TREE_CODE (gnu_type) == UNCONSTRAINED_ARRAY_TYPE
! 	     && No (Renamed_Object (gnat_entity)))
  	    || TYPE_IS_DUMMY_P (gnu_type)
  	    || TREE_CODE (gnu_type) == VOID_TYPE)
  	  {
--- 776,782 ----
  	/* Reject non-renamed objects whose type is an unconstrained array or
  	   any object whose type is a dummy type or void.  */
  	if ((TREE_CODE (gnu_type) == UNCONSTRAINED_ARRAY_TYPE
! 	     && No (gnat_renamed_obj))
  	    || TYPE_IS_DUMMY_P (gnu_type)
  	    || TREE_CODE (gnu_type) == VOID_TYPE)
  	  {
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 806,812 ****
  	   initializing expression, in which case we can get the size from
  	   that.  Note that the resulting size may still be a variable, so
  	   this may end up with an indirect allocation.  */
! 	if (No (Renamed_Object (gnat_entity))
  	    && CONTAINS_PLACEHOLDER_P (TYPE_SIZE (gnu_type)))
  	  {
  	    if (gnu_expr && kind == E_Constant)
--- 818,824 ----
  	   initializing expression, in which case we can get the size from
  	   that.  Note that the resulting size may still be a variable, so
  	   this may end up with an indirect allocation.  */
! 	if (No (gnat_renamed_obj)
  	    && CONTAINS_PLACEHOLDER_P (TYPE_SIZE (gnu_type)))
  	  {
  	    if (gnu_expr && kind == E_Constant)
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 882,899 ****
  		 && integer_zerop (TYPE_SIZE (gnu_type))
  		 && !TREE_OVERFLOW (TYPE_SIZE (gnu_type))))
  	    && !Is_Constr_Subt_For_UN_Aliased (gnat_type)
! 	    && No (Renamed_Object (gnat_entity))
  	    && No (Address_Clause (gnat_entity)))
  	  gnu_size = bitsize_unit_node;
  
  	/* If this is an object with no specified size and alignment, and
! 	   if either it is atomic or we are not optimizing alignment for
  	   space and it is composite and not an exception, an Out parameter
  	   or a reference to another object, and the size of its type is a
  	   constant, set the alignment to the smallest one which is not
  	   smaller than the size, with an appropriate cap.  */
  	if (!gnu_size && align == 0
! 	    && (Is_Atomic_Or_VFA (gnat_entity)
  		|| (!Optimize_Alignment_Space (gnat_entity)
  		    && kind != E_Exception
  		    && kind != E_Out_Parameter
--- 894,911 ----
  		 && integer_zerop (TYPE_SIZE (gnu_type))
  		 && !TREE_OVERFLOW (TYPE_SIZE (gnu_type))))
  	    && !Is_Constr_Subt_For_UN_Aliased (gnat_type)
! 	    && No (gnat_renamed_obj)
  	    && No (Address_Clause (gnat_entity)))
  	  gnu_size = bitsize_unit_node;
  
  	/* If this is an object with no specified size and alignment, and
! 	   if either it is full access or we are not optimizing alignment for
  	   space and it is composite and not an exception, an Out parameter
  	   or a reference to another object, and the size of its type is a
  	   constant, set the alignment to the smallest one which is not
  	   smaller than the size, with an appropriate cap.  */
  	if (!gnu_size && align == 0
! 	    && (Is_Full_Access (gnat_entity)
  		|| (!Optimize_Alignment_Space (gnat_entity)
  		    && kind != E_Exception
  		    && kind != E_Out_Parameter
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 901,907 ****
  		    && !Is_Constr_Subt_For_UN_Aliased (gnat_type)
  		    && !Is_Exported (gnat_entity)
  		    && !imported_p
! 		    && No (Renamed_Object (gnat_entity))
  		    && No (Address_Clause (gnat_entity))))
  	    && TREE_CODE (TYPE_SIZE (gnu_type)) == INTEGER_CST)
  	  align = promote_object_alignment (gnu_type, gnat_entity);
--- 913,919 ----
  		    && !Is_Constr_Subt_For_UN_Aliased (gnat_type)
  		    && !Is_Exported (gnat_entity)
  		    && !imported_p
! 		    && No (gnat_renamed_obj)
  		    && No (Address_Clause (gnat_entity))))
  	    && TREE_CODE (TYPE_SIZE (gnu_type)) == INTEGER_CST)
  	  align = promote_object_alignment (gnu_type, gnat_entity);
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 945,951 ****
  	   because we don't support dynamic alignment.  */
  	if (align == 0
  	    && Ekind (gnat_type) == E_Class_Wide_Subtype
! 	    && No (Renamed_Object (gnat_entity))
  	    && No (Address_Clause (gnat_entity)))
  	  align = get_target_system_allocator_alignment () * BITS_PER_UNIT;
  
--- 957,963 ----
  	   because we don't support dynamic alignment.  */
  	if (align == 0
  	    && Ekind (gnat_type) == E_Class_Wide_Subtype
! 	    && No (gnat_renamed_obj)
  	    && No (Address_Clause (gnat_entity)))
  	  align = get_target_system_allocator_alignment () * BITS_PER_UNIT;
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 961,967 ****
  	if (align == 0
  	    && MINIMUM_ATOMIC_ALIGNMENT > TYPE_ALIGN (gnu_type)
  	    && !FLOAT_TYPE_P (gnu_type)
! 	    && !const_flag && No (Renamed_Object (gnat_entity))
  	    && !imported_p && No (Address_Clause (gnat_entity))
  	    && kind != E_Out_Parameter
  	    && (gnu_size ? TREE_CODE (gnu_size) == INTEGER_CST
--- 973,979 ----
  	if (align == 0
  	    && MINIMUM_ATOMIC_ALIGNMENT > TYPE_ALIGN (gnu_type)
  	    && !FLOAT_TYPE_P (gnu_type)
! 	    && !const_flag && No (gnat_renamed_obj)
  	    && !imported_p && No (Address_Clause (gnat_entity))
  	    && kind != E_Out_Parameter
  	    && (gnu_size ? TREE_CODE (gnu_size) == INTEGER_CST
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 969,984 ****
  	  align = MINIMUM_ATOMIC_ALIGNMENT;
  #endif
  
! 	/* Make a new type with the desired size and alignment, if needed.
! 	   But do not take into account alignment promotions to compute the
! 	   size of the object.  */
  	tree gnu_object_size = gnu_size ? gnu_size : TYPE_SIZE (gnu_type);
  	if (gnu_size || align > 0)
  	  {
  	    tree orig_type = gnu_type;
  
  	    gnu_type = maybe_pad_type (gnu_type, gnu_size, align, gnat_entity,
! 				       false, false, definition, true);
  
  	    /* If the nominal subtype of the object is unconstrained and its
  	       size is not fixed, compute the Ada size from the Ada size of
--- 981,1005 ----
  	  align = MINIMUM_ATOMIC_ALIGNMENT;
  #endif
  
! 	/* Do not take into account aliased adjustments or alignment promotions
! 	   to compute the size of the object.  */
  	tree gnu_object_size = gnu_size ? gnu_size : TYPE_SIZE (gnu_type);
+ 
+ 	/* If the object is aliased, of a constrained nominal subtype and its
+ 	   size might be zero at run time, we force at least the unit size.  */
+ 	if (Is_Aliased (gnat_entity)
+ 	    && !Is_Constr_Subt_For_UN_Aliased (gnat_type)
+ 	    && Is_Array_Type (Underlying_Type (gnat_type))
+ 	    && !TREE_CONSTANT (gnu_object_size))
+ 	  gnu_size = size_binop (MAX_EXPR, gnu_object_size, bitsize_unit_node);
+ 
+ 	/* Make a new type with the desired size and alignment, if needed.  */
  	if (gnu_size || align > 0)
  	  {
  	    tree orig_type = gnu_type;
  
  	    gnu_type = maybe_pad_type (gnu_type, gnu_size, align, gnat_entity,
! 				       false, definition, true);
  
  	    /* If the nominal subtype of the object is unconstrained and its
  	       size is not fixed, compute the Ada size from the Ada size of
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 996,1002 ****
  	  }
  
  	/* Now check if the type of the object allows atomic access.  */
! 	if (Is_Atomic_Or_VFA (gnat_entity))
  	  check_ok_for_atomic_type (gnu_type, gnat_entity, false);
  
  	/* If this is a renaming, avoid as much as possible to create a new
--- 1017,1023 ----
  	  }
  
  	/* Now check if the type of the object allows atomic access.  */
! 	if (Is_Full_Access (gnat_entity))
  	  check_ok_for_atomic_type (gnu_type, gnat_entity, false);
  
  	/* If this is a renaming, avoid as much as possible to create a new
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1004,1010 ****
  	   renaming can be applied to objects that are not names in Ada.
  	   This processing needs to be applied to the raw expression so as
  	   to make it more likely to rename the underlying object.  */
! 	if (Present (Renamed_Object (gnat_entity)))
  	  {
  	    /* If the renamed object had padding, strip off the reference to
  	       the inner object and reset our type.  */
--- 1025,1031 ----
  	   renaming can be applied to objects that are not names in Ada.
  	   This processing needs to be applied to the raw expression so as
  	   to make it more likely to rename the underlying object.  */
! 	if (Present (gnat_renamed_obj))
  	  {
  	    /* If the renamed object had padding, strip off the reference to
  	       the inner object and reset our type.  */
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1022,1034 ****
  	    else if (type_is_padding_self_referential (TREE_TYPE (gnu_expr)))
  	      gnu_type = TREE_TYPE (gnu_expr);
  
! 	    /* Case 1: if this is a constant renaming stemming from a function
! 	       call, treat it as a normal object whose initial value is what
! 	       is being renamed.  RM 3.3 says that the result of evaluating a
! 	       function call is a constant object.  Therefore, it can be the
! 	       inner object of a constant renaming and the renaming must be
! 	       fully instantiated, i.e. it cannot be a reference to (part of)
! 	       an existing object.  And treat other rvalues the same way.  */
  	    tree inner = gnu_expr;
  	    while (handled_component_p (inner) || CONVERT_EXPR_P (inner))
  	      inner = TREE_OPERAND (inner, 0);
--- 1043,1055 ----
  	    else if (type_is_padding_self_referential (TREE_TYPE (gnu_expr)))
  	      gnu_type = TREE_TYPE (gnu_expr);
  
! 	    /* If this is a constant renaming stemming from a function call,
! 	       treat it as a normal object whose initial value is what is being
! 	       renamed.  RM 3.3 says that the result of evaluating a function
! 	       call is a constant object.  Therefore, it can be the inner
! 	       object of a constant renaming and the renaming must be fully
! 	       instantiated, i.e. it cannot be a reference to (part of) an
! 	       existing object.  And treat other rvalues the same way.  */
  	    tree inner = gnu_expr;
  	    while (handled_component_p (inner) || CONVERT_EXPR_P (inner))
  	      inner = TREE_OPERAND (inner, 0);
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1070,1158 ****
  		    && DECL_RETURN_VALUE_P (inner)))
  	      ;
  
! 	    /* Case 2: if the renaming entity need not be materialized, use
! 	       the elaborated renamed expression for the renaming.  But this
! 	       means that the caller is responsible for evaluating the address
! 	       of the renaming in the correct place for the definition case to
! 	       instantiate the SAVE_EXPRs.  */
! 	    else if (!Materialize_Entity (gnat_entity))
  	      {
! 		tree init = NULL_TREE;
  
! 		gnu_decl
! 		  = elaborate_reference (gnu_expr, gnat_entity, definition,
! 					 &init);
  
! 		/* We cannot evaluate the first arm of a COMPOUND_EXPR in the
! 		   correct place for this case.  */
! 		gcc_assert (!init);
  
! 		/* No DECL_EXPR will be created so the expression needs to be
  		   marked manually because it will likely be shared.  */
  		if (global_bindings_p ())
! 		  MARK_VISITED (gnu_decl);
  
  		/* This assertion will fail if the renamed object isn't aligned
  		   enough as to make it possible to honor the alignment set on
  		   the renaming.  */
  		if (align)
  		  {
! 		    unsigned int ralign = DECL_P (gnu_decl)
! 					  ? DECL_ALIGN (gnu_decl)
! 					  : TYPE_ALIGN (TREE_TYPE (gnu_decl));
  		    gcc_assert (ralign >= align);
  		  }
  
  		/* The expression might not be a DECL so save it manually.  */
  		save_gnu_tree (gnat_entity, gnu_decl, true);
  		saved = true;
  		annotate_object (gnat_entity, gnu_type, NULL_TREE, false);
- 		break;
- 	      }
  
! 	    /* Case 3: otherwise, make a constant pointer to the object we
! 	       are renaming and attach the object to the pointer after it is
! 	       elaborated.  The object will be referenced directly instead
! 	       of indirectly via the pointer to avoid aliasing problems with
! 	       non-addressable entities.  The pointer is called a "renaming"
! 	       pointer in this case.  Note that we also need to preserve the
! 	       volatility of the renamed object through the indirection.  */
! 	    else
! 	      {
! 		tree init = NULL_TREE;
  
! 		if (TREE_THIS_VOLATILE (gnu_expr) && !TYPE_VOLATILE (gnu_type))
! 		  gnu_type
! 		    = change_qualified_type (gnu_type, TYPE_QUAL_VOLATILE);
! 		gnu_type = build_reference_type (gnu_type);
! 		used_by_ref = true;
! 		const_flag = true;
! 		volatile_flag = false;
! 		inner_const_flag = TREE_READONLY (gnu_expr);
! 		gnu_size = NULL_TREE;
  
! 		renamed_obj
! 		  = elaborate_reference (gnu_expr, gnat_entity, definition,
! 					 &init);
  
! 		/* The expression needs to be marked manually because it will
! 		   likely be shared, even for a definition since the ADDR_EXPR
! 		   built below can cause the first few nodes to be folded.  */
! 		if (global_bindings_p ())
! 		  MARK_VISITED (renamed_obj);
  
! 		if (type_annotate_only
! 		    && TREE_CODE (renamed_obj) == ERROR_MARK)
! 		  gnu_expr = NULL_TREE;
! 		else
! 		  {
! 		    gnu_expr
! 		      = build_unary_op (ADDR_EXPR, gnu_type, renamed_obj);
! 		    if (init)
! 		      gnu_expr
! 			= build_compound_expr (TREE_TYPE (gnu_expr), init,
! 					       gnu_expr);
  		  }
  	      }
  	  }
  
--- 1091,1165 ----
  		    && DECL_RETURN_VALUE_P (inner)))
  	      ;
  
! 	    /* Otherwise, this is an lvalue being renamed, so it needs to be
! 	       elaborated as a reference and substituted for the entity.  But
! 	       this means that we must evaluate the address of the renaming
! 	       in the definition case to instantiate the SAVE_EXPRs.  */
! 	    else
  	      {
! 		tree gnu_init = NULL_TREE;
  
! 		if (type_annotate_only && TREE_CODE (gnu_expr) == ERROR_MARK)
! 		  break;
  
! 		gnu_expr
! 		  = elaborate_reference (gnu_expr, gnat_entity, definition,
! 					 &gnu_init);
  
! 		/* No DECL_EXPR might be created so the expression needs to be
  		   marked manually because it will likely be shared.  */
  		if (global_bindings_p ())
! 		  MARK_VISITED (gnu_expr);
  
  		/* This assertion will fail if the renamed object isn't aligned
  		   enough as to make it possible to honor the alignment set on
  		   the renaming.  */
  		if (align)
  		  {
! 		    const unsigned int ralign
! 		      = DECL_P (gnu_expr)
! 			? DECL_ALIGN (gnu_expr)
! 			: TYPE_ALIGN (TREE_TYPE (gnu_expr));
  		    gcc_assert (ralign >= align);
  		  }
  
  		/* The expression might not be a DECL so save it manually.  */
+ 		gnu_decl = gnu_expr;
  		save_gnu_tree (gnat_entity, gnu_decl, true);
  		saved = true;
  		annotate_object (gnat_entity, gnu_type, NULL_TREE, false);
  
! 		/* If this is only a reference to the entity, we are done.  */
! 		if (!definition)
! 		  break;
  
! 		/* Otherwise, emit the initialization statement, if any.  */
! 		if (gnu_init)
! 		  add_stmt (gnu_init);
  
! 		/* If it needs to be materialized for debugging purposes, build
! 		   the entity as indirect reference to the renamed object.  */
! 		if (Materialize_Entity (gnat_entity))
! 		  {
! 		    gnu_type = build_reference_type (gnu_type);
! 		    const_flag = true;
! 		    volatile_flag = false;
  
! 		    gnu_expr = build_unary_op (ADDR_EXPR, gnu_type, gnu_expr);
  
! 		    create_var_decl (gnu_entity_name, gnu_ext_name,
! 				     TREE_TYPE (gnu_expr), gnu_expr,
! 				     const_flag, Is_Public (gnat_entity),
! 				     imported_p, static_flag, volatile_flag,
! 				     artificial_p, debug_info_p, attr_list,
! 				     gnat_entity, false);
  		  }
+ 
+ 		/* Otherwise, instantiate the SAVE_EXPRs if needed.  */
+ 		else if (TREE_SIDE_EFFECTS (gnu_expr))
+ 		  add_stmt (build_unary_op (ADDR_EXPR, NULL_TREE, gnu_expr));
+ 
+ 		break;
  	      }
  	  }
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1241,1246 ****
--- 1248,1254 ----
  		if (TREE_CODE (gnu_address) == POINTER_PLUS_EXPR
  		    && TREE_OPERAND (gnu_address, 1) == off)
  		  gnu_address = TREE_OPERAND (gnu_address, 0);
+ 
  		/* This is the pattern built for an overaligned object.  */
  		else if (TREE_CODE (gnu_address) == POINTER_PLUS_EXPR
  			 && TREE_CODE (TREE_OPERAND (gnu_address, 1))
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1251,1256 ****
--- 1259,1276 ----
  		    = build2 (POINTER_PLUS_EXPR, gnu_type,
  			      TREE_OPERAND (gnu_address, 0),
  			      TREE_OPERAND (TREE_OPERAND (gnu_address, 1), 0));
+ 
+ 		/* We make an exception for an absolute address but we warn
+ 		   that there is a descriptor at the start of the object.  */
+ 		else if (TREE_CODE (gnu_address) == INTEGER_CST)
+ 		  {
+ 		    post_error_ne ("??aliased object& with unconstrained "
+ 				   "array nominal subtype", gnat_clause,
+ 				   gnat_entity);
+ 		    post_error ("\\starts with a descriptor whose size is "
+ 				"given by ''Descriptor_Size", gnat_clause);
+ 		  }
+ 
  		else
  		  {
  		    post_error_ne ("aliased object& with unconstrained array "
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1516,1522 ****
  			     imported_p || !definition, static_flag,
  			     volatile_flag, artificial_p,
  			     debug_info_p && definition, attr_list,
! 			     gnat_entity, !renamed_obj);
  	DECL_BY_REF_P (gnu_decl) = used_by_ref;
  	DECL_POINTS_TO_READONLY_P (gnu_decl) = used_by_ref && inner_const_flag;
  	DECL_CAN_NEVER_BE_NULL_P (gnu_decl) = Can_Never_Be_Null (gnat_entity);
--- 1536,1542 ----
  			     imported_p || !definition, static_flag,
  			     volatile_flag, artificial_p,
  			     debug_info_p && definition, attr_list,
! 			     gnat_entity, true);
  	DECL_BY_REF_P (gnu_decl) = used_by_ref;
  	DECL_POINTS_TO_READONLY_P (gnu_decl) = used_by_ref && inner_const_flag;
  	DECL_CAN_NEVER_BE_NULL_P (gnu_decl) = Can_Never_Be_Null (gnat_entity);
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1544,1553 ****
  	else if (kind == E_Loop_Parameter)
  	  DECL_LOOP_PARM_P (gnu_decl) = 1;
  
- 	/* If this is a renaming pointer, attach the renamed object to it.  */
- 	if (renamed_obj)
- 	  SET_DECL_RENAMED_OBJECT (gnu_decl, renamed_obj);
- 
  	/* If this is a constant and we are defining it or it generates a real
  	   symbol at the object level and we are referencing it, we may want
  	   or need to have a true variable to represent it:
--- 1564,1569 ----
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1727,1753 ****
  
  	gnu_type = make_signed_type (esize);
  
- 	/* Try to decode the scale factor and to save it for the fixed-point
- 	   types debug hook.  */
- 
- 	/* There are various ways to describe the scale factor, however there
- 	   are cases where back-end internals cannot hold it.  In such cases,
- 	   we output invalid scale factor for such cases (i.e. the 0/0
- 	   rational constant) but we expect GNAT to output GNAT encodings,
- 	   then.  Thus, keep this in sync with
- 	   Exp_Dbug.Is_Handled_Scale_Factor.  */
- 
  	/* When encoded as 1/2**N or 1/10**N, describe the scale factor as a
  	   binary or decimal scale: it is easier to read for humans.  */
  	if (UI_Eq (Numerator (gnat_small_value), Uint_1)
  	    && (Rbase (gnat_small_value) == 2
  		|| Rbase (gnat_small_value) == 10))
  	  {
! 	    /* Given RM restrictions on 'Small values, we assume here that
! 	       the denominator fits in an int.  */
! 	    const tree base = build_int_cst (integer_type_node,
! 					     Rbase (gnat_small_value));
! 	    const tree exponent
  	      = build_int_cst (integer_type_node,
  			       UI_To_Int (Denominator (gnat_small_value)));
  	    scale_factor
--- 1743,1757 ----
  
  	gnu_type = make_signed_type (esize);
  
  	/* When encoded as 1/2**N or 1/10**N, describe the scale factor as a
  	   binary or decimal scale: it is easier to read for humans.  */
  	if (UI_Eq (Numerator (gnat_small_value), Uint_1)
  	    && (Rbase (gnat_small_value) == 2
  		|| Rbase (gnat_small_value) == 10))
  	  {
! 	    tree base
! 	      = build_int_cst (integer_type_node, Rbase (gnat_small_value));
! 	    tree exponent
  	      = build_int_cst (integer_type_node,
  			       UI_To_Int (Denominator (gnat_small_value)));
  	    scale_factor
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1757,1785 ****
  				base, exponent));
  	  }
  
! 	/* Default to arbitrary scale factors descriptions.  */
  	else
  	  {
! 	    const Uint num = Norm_Num (gnat_small_value);
! 	    const Uint den = Norm_Den (gnat_small_value);
  
! 	    if (UI_Is_In_Int_Range (num) && UI_Is_In_Int_Range (den))
! 	      {
! 		const tree gnu_num
! 		  = build_int_cst (integer_type_node,
! 				   UI_To_Int (Norm_Num (gnat_small_value)));
! 		const tree gnu_den
! 		  = build_int_cst (integer_type_node,
! 				   UI_To_Int (Norm_Den (gnat_small_value)));
! 		scale_factor = build2 (RDIV_EXPR, integer_type_node,
! 				       gnu_num, gnu_den);
! 	      }
! 	    else
! 	      /* If compiler internals cannot represent arbitrary scale
! 		 factors, output an invalid scale factor so that debugger
! 		 don't try to handle them but so that we still have a type
! 		 in the output.  Note that GNAT  */
! 	      scale_factor = integer_zero_node;
  	  }
  
  	TYPE_FIXED_POINT_P (gnu_type) = 1;
--- 1761,1779 ----
  				base, exponent));
  	  }
  
! 	/* Use the arbitrary scale factor description.  Note that we support
! 	   a Small_Value whose magnitude is larger than 64-bit even on 32-bit
! 	   platforms, so we unconditionally use a (dummy) 128-bit type.  */
  	else
  	  {
! 	    const Uint gnat_num = Norm_Num (gnat_small_value);
! 	    const Uint gnat_den = Norm_Den (gnat_small_value);
! 	    tree gnu_small_type = make_unsigned_type (128);
! 	    tree gnu_num = UI_To_gnu (gnat_num, gnu_small_type);
! 	    tree gnu_den = UI_To_gnu (gnat_den, gnu_small_type);
  
! 	    scale_factor
! 	      = build2 (RDIV_EXPR, gnu_small_type, gnu_num, gnu_den);
  	  }
  
  	TYPE_FIXED_POINT_P (gnu_type) = 1;
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1847,1854 ****
  	gnat_to_gnu_entity (Ancestor_Subtype (gnat_entity), gnu_expr, false);
  
        /* Set the precision to the Esize except for bit-packed arrays.  */
!       if (Is_Packed_Array_Impl_Type (gnat_entity)
! 	  && Is_Bit_Packed_Array (Original_Array_Type (gnat_entity)))
  	esize = UI_To_Int (RM_Size (gnat_entity));
  
        /* Boolean types with foreign convention have precision 1.  */
--- 1841,1847 ----
  	gnat_to_gnu_entity (Ancestor_Subtype (gnat_entity), gnu_expr, false);
  
        /* Set the precision to the Esize except for bit-packed arrays.  */
!       if (Is_Packed_Array_Impl_Type (gnat_entity))
  	esize = UI_To_Int (RM_Size (gnat_entity));
  
        /* Boolean types with foreign convention have precision 1.  */
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1925,1935 ****
        TYPE_STUB_DECL (gnu_type)
  	= create_type_stub_decl (gnu_entity_name, gnu_type);
  
-       /* For a packed array, make the original array type a parallel/debug
- 	 type.  */
-       if (debug_info_p && Is_Packed_Array_Impl_Type (gnat_entity))
- 	associate_original_type_to_packed_array (gnu_type, gnat_entity);
- 
      discrete_type:
  
        /* We have to handle clauses that under-align the type specially.  */
--- 1918,1923 ----
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1951,1969 ****
  	 such values), we only get the good bits, since the unused bits
  	 are uninitialized.  Both goals are accomplished by wrapping up
  	 the modular type in an enclosing record type.  */
!       if (Is_Packed_Array_Impl_Type (gnat_entity)
! 	  && Is_Bit_Packed_Array (Original_Array_Type (gnat_entity)))
  	{
! 	  tree gnu_field_type, gnu_field;
  
  	  /* Set the RM size before wrapping up the original type.  */
  	  SET_TYPE_RM_SIZE (gnu_type,
  			    UI_To_gnu (RM_Size (gnat_entity), bitsizetype));
- 	  TYPE_PACKED_ARRAY_TYPE_P (gnu_type) = 1;
  
  	  /* Create a stripped-down declaration, mainly for debugging.  */
! 	  create_type_decl (gnu_entity_name, gnu_type, true, debug_info_p,
! 			    gnat_entity);
  
  	  /* Now save it and build the enclosing record type.  */
  	  gnu_field_type = gnu_type;
--- 1939,1968 ----
  	 such values), we only get the good bits, since the unused bits
  	 are uninitialized.  Both goals are accomplished by wrapping up
  	 the modular type in an enclosing record type.  */
!       if (Is_Packed_Array_Impl_Type (gnat_entity))
  	{
! 	  tree gnu_field_type, gnu_field, t;
! 
! 	  gcc_assert (Is_Bit_Packed_Array (Original_Array_Type (gnat_entity)));
! 	  TYPE_BIT_PACKED_ARRAY_TYPE_P (gnu_type) = 1;
! 
! 	  /* Make the original array type a parallel/debug type.  */
! 	  if (debug_info_p)
! 	    {
! 	      tree gnu_name
! 		= associate_original_type_to_packed_array (gnu_type,
! 							   gnat_entity);
! 	      if (gnu_name)
! 		gnu_entity_name = gnu_name;
! 	    }
  
  	  /* Set the RM size before wrapping up the original type.  */
  	  SET_TYPE_RM_SIZE (gnu_type,
  			    UI_To_gnu (RM_Size (gnat_entity), bitsizetype));
  
  	  /* Create a stripped-down declaration, mainly for debugging.  */
! 	  t = create_type_decl (gnu_entity_name, gnu_type, true, debug_info_p,
! 				gnat_entity);
  
  	  /* Now save it and build the enclosing record type.  */
  	  gnu_field_type = gnu_type;
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2002,2016 ****
  	  finish_record_type (gnu_type, gnu_field, 2, false);
  	  TYPE_JUSTIFIED_MODULAR_P (gnu_type) = 1;
  
  	  if (debug_info_p)
  	    {
- 	      /* Make the original array type a parallel/debug type.  */
- 	      associate_original_type_to_packed_array (gnu_type, gnat_entity);
- 
- 	      /* Since GNU_TYPE is a padding type around the packed array
- 		 implementation type, the padded type is its debug type.  */
  	      if (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
  		SET_TYPE_DEBUG_TYPE (gnu_type, gnu_field_type);
  	    }
  	}
  
--- 2001,2015 ----
  	  finish_record_type (gnu_type, gnu_field, 2, false);
  	  TYPE_JUSTIFIED_MODULAR_P (gnu_type) = 1;
  
+ 	  /* Make the original array type a parallel/debug type.  Note that
+ 	     gnat_get_array_descr_info needs a TYPE_IMPL_PACKED_ARRAY_P type
+ 	     so we use an intermediate step for standard DWARF.  */
  	  if (debug_info_p)
  	    {
  	      if (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
  		SET_TYPE_DEBUG_TYPE (gnu_type, gnu_field_type);
+ 	      else if (DECL_PARALLEL_TYPE (t))
+ 		add_parallel_type (gnu_type, DECL_PARALLEL_TYPE (t));
  	    }
  	}
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2024,2032 ****
  	  /* Set the RM size before wrapping the type.  */
  	  SET_TYPE_RM_SIZE (gnu_type, gnu_size);
  
  	  gnu_type
  	    = maybe_pad_type (gnu_type, TYPE_SIZE (gnu_type), align,
! 			      gnat_entity, false, true, definition, false);
  
  	  TYPE_PACKED (gnu_type) = 1;
  	  SET_TYPE_ADA_SIZE (gnu_type, gnu_size);
--- 2023,2035 ----
  	  /* Set the RM size before wrapping the type.  */
  	  SET_TYPE_RM_SIZE (gnu_type, gnu_size);
  
+ 	  /* Create a stripped-down declaration, mainly for debugging.  */
+ 	  create_type_decl (gnu_entity_name, gnu_type, true, debug_info_p,
+ 			    gnat_entity);
+ 
  	  gnu_type
  	    = maybe_pad_type (gnu_type, TYPE_SIZE (gnu_type), align,
! 			      gnat_entity, false, definition, false);
  
  	  TYPE_PACKED (gnu_type) = 1;
  	  SET_TYPE_ADA_SIZE (gnu_type, gnu_size);
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2081,2096 ****
  
        /* Array Types and Subtypes
  
! 	 Unconstrained array types are represented by E_Array_Type and
! 	 constrained array types are represented by E_Array_Subtype.  There
! 	 are no actual objects of an unconstrained array type; all we have
! 	 are pointers to that type.
  
! 	 The following fields are defined on array types and subtypes:
  
! 		Component_Type     Component type of the array.
! 		Number_Dimensions  Number of dimensions (an int).
! 		First_Index	   Type of first index.  */
  
      case E_Array_Type:
        {
--- 2084,2111 ----
  
        /* Array Types and Subtypes
  
! 	 In GNAT unconstrained array types are represented by E_Array_Type and
! 	 constrained array types are represented by E_Array_Subtype.  They are
! 	 translated into UNCONSTRAINED_ARRAY_TYPE and ARRAY_TYPE respectively.
! 	 But there are no actual objects of an unconstrained array type; all we
! 	 have are pointers to that type.  In addition to the type node itself,
! 	 4 other types associated with it are built in the process:
  
! 	   1. the array type (suffix XUA) containing the actual data,
  
! 	   2. the template type (suffix XUB) containng the bounds,
! 
! 	   3. the fat pointer type (suffix XUP) representing a pointer or a
! 	      reference to the unconstrained array type:
! 		XUP = struct { XUA *, XUB * }
! 
! 	   4. the object record type (suffix XUT) containing bounds and data:
! 		XUT = struct { XUB, XUA }
! 
! 	 The bounds of the array type XUA (de)reference the XUB * field of a
! 	 PLACEHOLDER_EXPR for the fat pointer type XUP, so the array type XUA
! 	 is to be interpreted in the context of the fat pointer type XUB for
! 	 debug info purposes.  */
  
      case E_Array_Type:
        {
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2102,2109 ****
  	tree gnu_template_reference, gnu_template_fields, gnu_fat_type;
  	tree *gnu_index_types = XALLOCAVEC (tree, ndim);
  	tree *gnu_temp_fields = XALLOCAVEC (tree, ndim);
! 	tree gnu_max_size = size_one_node, tem, t;
! 	Entity_Id gnat_index, gnat_name;
  	int index;
  	tree comp_type;
  
--- 2117,2124 ----
  	tree gnu_template_reference, gnu_template_fields, gnu_fat_type;
  	tree *gnu_index_types = XALLOCAVEC (tree, ndim);
  	tree *gnu_temp_fields = XALLOCAVEC (tree, ndim);
! 	tree gnu_max_size = size_one_node, tem, obj;
! 	Entity_Id gnat_index;
  	int index;
  	tree comp_type;
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2177,2183 ****
  	    TREE_TYPE (tem) = ptr_type_node;
  	    TREE_TYPE (DECL_CHAIN (tem)) = gnu_ptr_template;
  	    TYPE_DECL_SUPPRESS_DEBUG (TYPE_STUB_DECL (gnu_fat_type)) = 0;
! 	    for (t = gnu_fat_type; t; t = TYPE_NEXT_VARIANT (t))
  	      SET_TYPE_UNCONSTRAINED_ARRAY (t, gnu_type);
  	  }
  	else
--- 2192,2198 ----
  	    TREE_TYPE (tem) = ptr_type_node;
  	    TREE_TYPE (DECL_CHAIN (tem)) = gnu_ptr_template;
  	    TYPE_DECL_SUPPRESS_DEBUG (TYPE_STUB_DECL (gnu_fat_type)) = 0;
! 	    for (tree t = gnu_fat_type; t; t = TYPE_NEXT_VARIANT (t))
  	      SET_TYPE_UNCONSTRAINED_ARRAY (t, gnu_type);
  	  }
  	else
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2196,2201 ****
--- 2211,2232 ----
  	    SET_TYPE_UNCONSTRAINED_ARRAY (gnu_fat_type, gnu_type);
  	  }
  
+ 	/* If the GNAT encodings are used, give the fat pointer type a name.
+ 	   If this is a packed array, tell the debugger how to interpret the
+ 	   underlying bits by fetching that of the implementation type.  But
+ 	   in any case, mark it as artificial so the debugger can skip it.  */
+ 	const Entity_Id gnat_name
+ 	  = (Present (Packed_Array_Impl_Type (gnat_entity))
+ 	     && gnat_encodings != DWARF_GNAT_ENCODINGS_MINIMAL)
+ 	    ? Packed_Array_Impl_Type (gnat_entity)
+ 	    : gnat_entity;
+ 	tree xup_name
+ 	  = (gnat_encodings != DWARF_GNAT_ENCODINGS_MINIMAL)
+ 	    ? create_concat_name (gnat_name, "XUP")
+ 	    : gnu_entity_name;
+ 	create_type_decl (xup_name, gnu_fat_type, true, debug_info_p,
+ 			  gnat_entity);
+ 
  	/* Build a reference to the template from a PLACEHOLDER_EXPR that
  	   is the fat pointer.  This will be used to access the individual
  	   fields once we build them.  */
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2297,2302 ****
--- 2328,2334 ----
  	    = chainon (gnu_template_fields, gnu_temp_fields[index]);
  	finish_record_type (gnu_template_type, gnu_template_fields, 0,
  			    debug_info_p);
+ 	TYPE_CONTEXT (gnu_template_type) = current_function_decl;
  
  	/* If Component_Size is not already specified, annotate it with the
  	   size of the component.  */
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2352,2365 ****
  	if (TYPE_ALIAS_SET_KNOWN_P (gnu_fat_type))
  	  record_component_aliases (gnu_fat_type);
  
- 	/* The result type is an UNCONSTRAINED_ARRAY_TYPE that indicates the
- 	   corresponding fat pointer.  */
- 	TREE_TYPE (gnu_type) = gnu_fat_type;
- 	TYPE_POINTER_TO (gnu_type) = gnu_fat_type;
- 	TYPE_REFERENCE_TO (gnu_type) = gnu_fat_type;
- 	SET_TYPE_MODE (gnu_type, BLKmode);
- 	SET_TYPE_ALIGN (gnu_type, TYPE_ALIGN (tem));
- 
  	/* If the maximum size doesn't overflow, use it.  */
  	if (gnu_max_size
  	    && TREE_CODE (gnu_max_size) == INTEGER_CST
--- 2384,2389 ----
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2367,2388 ****
  	    && compare_tree_int (gnu_max_size, TYPE_ARRAY_SIZE_LIMIT) <= 0)
  	  TYPE_ARRAY_MAX_SIZE (tem) = gnu_max_size;
  
  	create_type_decl (create_concat_name (gnat_entity, "XUA"), tem,
  			  artificial_p, debug_info_p, gnat_entity);
! 
! 	/* If told to generate GNAT encodings for them (GDB rely on them at the
! 	   moment): give the fat pointer type a name.  If this is a packed
! 	   array, tell the debugger how to interpret the underlying bits.  */
! 	if (Present (Packed_Array_Impl_Type (gnat_entity)))
! 	  gnat_name = Packed_Array_Impl_Type (gnat_entity);
! 	else
! 	  gnat_name = gnat_entity;
! 	tree xup_name
! 	  = (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
! 	    ? get_entity_name (gnat_name)
! 	    : create_concat_name (gnat_name, "XUP");
! 	create_type_decl (xup_name, gnu_fat_type, artificial_p, debug_info_p,
! 			  gnat_entity);
  
  	/* Create the type to be designated by thin pointers: a record type for
  	   the array and its template.  We used to shift the fields to have the
--- 2391,2401 ----
  	    && compare_tree_int (gnu_max_size, TYPE_ARRAY_SIZE_LIMIT) <= 0)
  	  TYPE_ARRAY_MAX_SIZE (tem) = gnu_max_size;
  
+ 	/* See the above description for the rationale.  */
  	create_type_decl (create_concat_name (gnat_entity, "XUA"), tem,
  			  artificial_p, debug_info_p, gnat_entity);
! 	TYPE_CONTEXT (tem) = gnu_fat_type;
! 	TYPE_CONTEXT (TYPE_POINTER_TO (tem)) = gnu_fat_type;
  
  	/* Create the type to be designated by thin pointers: a record type for
  	   the array and its template.  We used to shift the fields to have the
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2393,2406 ****
  	   don't have to name them as a GNAT encoding, except if specifically
  	   asked to.  */
  	tree xut_name
! 	  = (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
! 	    ? get_entity_name (gnat_name)
! 	    : create_concat_name (gnat_name, "XUT");
! 	tem = build_unc_object_type (gnu_template_type, tem, xut_name,
  				     debug_info_p);
  
! 	SET_TYPE_UNCONSTRAINED_ARRAY (tem, gnu_type);
! 	TYPE_OBJECT_RECORD_TYPE (gnu_type) = tem;
        }
        break;
  
--- 2406,2427 ----
  	   don't have to name them as a GNAT encoding, except if specifically
  	   asked to.  */
  	tree xut_name
! 	  = (gnat_encodings != DWARF_GNAT_ENCODINGS_MINIMAL)
! 	    ? create_concat_name (gnat_name, "XUT")
! 	    : gnu_entity_name;
! 	obj = build_unc_object_type (gnu_template_type, tem, xut_name,
  				     debug_info_p);
  
! 	SET_TYPE_UNCONSTRAINED_ARRAY (obj, gnu_type);
! 	TYPE_OBJECT_RECORD_TYPE (gnu_type) = obj;
! 
! 	/* The result type is an UNCONSTRAINED_ARRAY_TYPE that indicates the
! 	   corresponding fat pointer.  */
! 	TREE_TYPE (gnu_type) = gnu_fat_type;
! 	TYPE_POINTER_TO (gnu_type) = gnu_fat_type;
! 	TYPE_REFERENCE_TO (gnu_type) = gnu_fat_type;
! 	SET_TYPE_MODE (gnu_type, BLKmode);
! 	SET_TYPE_ALIGN (gnu_type, TYPE_ALIGN (tem));
        }
        break;
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2686,2691 ****
--- 2707,2728 ----
  		set_reverse_storage_order_on_array_type (gnu_type);
  	      if (array_type_has_nonaliased_component (gnu_type, gnat_entity))
  		set_nonaliased_component_on_array_type (gnu_type);
+ 
+ 	      /* Kludge to remove the TREE_OVERFLOW flag for the sake of LTO
+ 		 on maximally-sized array types designed by access types.  */
+ 	      if (integer_zerop (TYPE_SIZE (gnu_type))
+ 		  && TREE_OVERFLOW (TYPE_SIZE (gnu_type))
+ 		  && Is_Itype (gnat_entity)
+ 		  && (gnat_temp = Associated_Node_For_Itype (gnat_entity))
+ 		  && IN (Nkind (gnat_temp), N_Declaration)
+ 		  && Is_Access_Type (Defining_Entity (gnat_temp))
+ 		  && Is_Entity_Name (First_Index (gnat_entity))
+ 		  && UI_To_Int (RM_Size (Entity (First_Index (gnat_entity))))
+ 		     == BITS_PER_WORD)
+ 		{
+ 		  TYPE_SIZE (gnu_type) = bitsize_zero_node;
+ 		  TYPE_SIZE_UNIT (gnu_type) = size_zero_node;
+ 		}
  	    }
  
  	  /* Attach the TYPE_STUB_DECL in case we have a parallel type.  */
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2728,2733 ****
--- 2765,2788 ----
  		}
  	    }
  
+ 	  /* Set the TYPE_PACKED flag on packed array types and also on their
+ 	     implementation types, so that the DWARF back-end can output the
+ 	     appropriate description for them.  */
+ 	  TYPE_PACKED (gnu_type)
+ 	    = (Is_Packed (gnat_entity)
+ 	       || Is_Packed_Array_Impl_Type (gnat_entity));
+ 
+ 	  TYPE_BIT_PACKED_ARRAY_TYPE_P (gnu_type)
+ 	    = (Is_Packed_Array_Impl_Type (gnat_entity)
+ 	       && Is_Bit_Packed_Array (Original_Array_Type (gnat_entity)));
+ 
+ 	  /* If the maximum size doesn't overflow, use it.  */
+ 	  if (gnu_max_size
+ 	      && TREE_CODE (gnu_max_size) == INTEGER_CST
+ 	      && !TREE_OVERFLOW (gnu_max_size)
+ 	      && compare_tree_int (gnu_max_size, TYPE_ARRAY_SIZE_LIMIT) <= 0)
+ 	    TYPE_ARRAY_MAX_SIZE (gnu_type) = gnu_max_size;
+ 
  	  /* If we need to write out a record type giving the names of the
  	     bounds for debugging purposes, do it now and make the record
  	     type a parallel type.  This is not needed for a packed array
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2762,2805 ****
  	    }
  
  	  /* If this is a packed array type, make the original array type a
! 	     parallel/debug type.  Otherwise, if such GNAT encodings are
! 	     required, do it for the base array type if it isn't artificial to
! 	     make sure it is kept in the debug info.  */
  	  if (debug_info_p)
  	    {
  	      if (Is_Packed_Array_Impl_Type (gnat_entity))
! 		associate_original_type_to_packed_array (gnu_type,
! 							 gnat_entity);
! 	      else
  		{
  		  tree gnu_base_decl
  		    = gnat_to_gnu_entity (Etype (gnat_entity), NULL_TREE,
  					  false);
! 		  if (!DECL_ARTIFICIAL (gnu_base_decl)
! 		      && gnat_encodings != DWARF_GNAT_ENCODINGS_MINIMAL)
  		    add_parallel_type (gnu_type,
  				       TREE_TYPE (TREE_TYPE (gnu_base_decl)));
  		}
  	    }
  
- 	  TYPE_PACKED_ARRAY_TYPE_P (gnu_type)
- 	    = (Is_Packed_Array_Impl_Type (gnat_entity)
- 	       && Is_Bit_Packed_Array (Original_Array_Type (gnat_entity)));
- 
- 	/* Tag top-level ARRAY_TYPE nodes for packed arrays and their
- 	   implementation types as such so that the debug information back-end
- 	   can output the appropriate description for them.  */
- 	  TYPE_PACKED (gnu_type)
- 	    = (Is_Packed (gnat_entity)
- 	       || Is_Packed_Array_Impl_Type (gnat_entity));
- 
- 	  /* If the maximum size doesn't overflow, use it.  */
- 	  if (gnu_max_size
- 	      && TREE_CODE (gnu_max_size) == INTEGER_CST
- 	      && !TREE_OVERFLOW (gnu_max_size)
- 	      && compare_tree_int (gnu_max_size, TYPE_ARRAY_SIZE_LIMIT) <= 0)
- 	    TYPE_ARRAY_MAX_SIZE (gnu_type) = gnu_max_size;
- 
  	  /* Set our alias set to that of our base type.  This gives all
  	     array subtypes the same alias set.  */
  	  relate_alias_sets (gnu_type, gnu_base_type, ALIAS_SET_COPY);
--- 2817,2848 ----
  	    }
  
  	  /* If this is a packed array type, make the original array type a
! 	     parallel/debug type.  Otherwise, if GNAT encodings are used, do
! 	     it for the base array type if it is not artificial to make sure
! 	     that it is kept in the debug info.  */
  	  if (debug_info_p)
  	    {
  	      if (Is_Packed_Array_Impl_Type (gnat_entity))
! 		{
! 		  tree gnu_name
! 		    = associate_original_type_to_packed_array (gnu_type,
! 							       gnat_entity);
! 		  if (gnu_name)
! 		    gnu_entity_name = gnu_name;
! 		}
! 
! 	      else if (gnat_encodings != DWARF_GNAT_ENCODINGS_MINIMAL)
  		{
  		  tree gnu_base_decl
  		    = gnat_to_gnu_entity (Etype (gnat_entity), NULL_TREE,
  					  false);
! 
! 		  if (!DECL_ARTIFICIAL (gnu_base_decl))
  		    add_parallel_type (gnu_type,
  				       TREE_TYPE (TREE_TYPE (gnu_base_decl)));
  		}
  	    }
  
  	  /* Set our alias set to that of our base type.  This gives all
  	     array subtypes the same alias set.  */
  	  relate_alias_sets (gnu_type, gnu_base_type, ALIAS_SET_COPY);
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2815,2821 ****
  		{
  		  const int quals
  		    = TYPE_QUAL_VOLATILE
! 		      | (Is_Atomic_Or_VFA (gnat_entity) ? TYPE_QUAL_ATOMIC : 0);
  		  gnu_type = change_qualified_type (gnu_type, quals);
  		}
  	      /* Make it artificial only if the base type was artificial too.
--- 2858,2864 ----
  		{
  		  const int quals
  		    = TYPE_QUAL_VOLATILE
! 		      | (Is_Full_Access (gnat_entity) ? TYPE_QUAL_ATOMIC : 0);
  		  gnu_type = change_qualified_type (gnu_type, quals);
  		}
  	      /* Make it artificial only if the base type was artificial too.
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2935,2949 ****
  
      /* Record Types and Subtypes
  
-        The following fields are defined on record types:
- 
- 		Has_Discriminants	True if the record has discriminants
- 		First_Discriminant      Points to head of list of discriminants
- 		First_Entity		Points to head of list of fields
- 		Is_Tagged_Type		True if the record is tagged
- 
-        Implementation of Ada records and discriminated records:
- 
         A record type definition is transformed into the equivalent of a C
         struct definition.  The fields that are the discriminants which are
         found in the Full_Type_Declaration node and the elements of the
--- 2978,2983 ----
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3357,3363 ****
  
  	    /* If there are entities in the chain corresponding to components
  	       that we did not elaborate, ensure we elaborate their types if
! 	       they are Itypes.  */
  	    for (gnat_temp = First_Entity (gnat_entity);
  		 Present (gnat_temp);
  		 gnat_temp = Next_Entity (gnat_temp))
--- 3391,3397 ----
  
  	    /* If there are entities in the chain corresponding to components
  	       that we did not elaborate, ensure we elaborate their types if
! 	       they are itypes.  */
  	    for (gnat_temp = First_Entity (gnat_entity);
  		 Present (gnat_temp);
  		 gnat_temp = Next_Entity (gnat_temp))
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3443,3449 ****
  
  	  /* When the subtype has discriminants and these discriminants affect
  	     the initial shape it has inherited, factor them in.  But for an
! 	     Unchecked_Union (it must be an Itype), just return the type.  */
  	  if (Has_Discriminants (gnat_entity)
  	      && Stored_Constraint (gnat_entity) != No_Elist
  	      && Is_Record_Type (gnat_base_type)
--- 3477,3483 ----
  
  	  /* When the subtype has discriminants and these discriminants affect
  	     the initial shape it has inherited, factor them in.  But for an
! 	     Unchecked_Union (it must be an itype), just return the type.  */
  	  if (Has_Discriminants (gnat_entity)
  	      && Stored_Constraint (gnat_entity) != No_Elist
  	      && Is_Record_Type (gnat_base_type)
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3455,3472 ****
  
  	      gnu_type = make_node (RECORD_TYPE);
  	      TYPE_NAME (gnu_type) = gnu_entity_name;
- 	      if (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
- 		{
- 		  /* Use the ultimate base record type as the debug type.
- 		     Subtypes and derived types bring no useful
- 		     information.  */
- 		  Entity_Id gnat_debug_type = gnat_entity;
- 		  while (Etype (gnat_debug_type) != gnat_debug_type)
- 		    gnat_debug_type = Etype (gnat_debug_type);
- 		  tree gnu_debug_type
- 		    = TYPE_MAIN_VARIANT (gnat_to_gnu_type (gnat_debug_type));
- 		  SET_TYPE_DEBUG_TYPE (gnu_type, gnu_debug_type);
- 		}
  	      TYPE_PACKED (gnu_type) = TYPE_PACKED (gnu_base_type);
  	      TYPE_REVERSE_STORAGE_ORDER (gnu_type)
  		= Reverse_Storage_Order (gnat_entity);
--- 3489,3494 ----
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3496,3502 ****
  		 we are asked to output such 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 (gnat_encodings != DWARF_GNAT_ENCODINGS_MINIMAL)
  		{
  		  tree gnu_subtype_marker = make_node (RECORD_TYPE);
  		  tree gnu_unpad_base_name
--- 3518,3525 ----
  		 we are asked to output such 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_MINIMAL)
  		{
  		  tree gnu_subtype_marker = make_node (RECORD_TYPE);
  		  tree gnu_unpad_base_name
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3527,3532 ****
--- 3550,3562 ----
  					 true, debug_info_p,
  					 NULL, gnat_entity);
  		}
+ 
+ 	      /* Or else, if the subtype is artificial and 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_MINIMAL)
+ 		SET_TYPE_DEBUG_TYPE (gnu_type, gnu_unpad_base_type);
  	    }
  
  	  /* Otherwise, go down all the components in the new type and make
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3930,3945 ****
  	   of its type, so we must elaborate that type now.  */
  	if (Present (Alias (gnat_entity)))
  	  {
! 	    const Entity_Id gnat_renamed = Renamed_Object (gnat_entity);
  
! 	    if (Ekind (Alias (gnat_entity)) == E_Enumeration_Literal)
! 	      gnat_to_gnu_entity (Etype (Alias (gnat_entity)), NULL_TREE,
! 				  false);
  
! 	    gnu_decl
! 	      = gnat_to_gnu_entity (Alias (gnat_entity), gnu_expr, false);
  
! 	    /* Elaborate any Itypes in the parameters of this entity.  */
  	    for (gnat_temp = First_Formal_With_Extras (gnat_entity);
  		 Present (gnat_temp);
  		 gnat_temp = Next_Formal_With_Extras (gnat_temp))
--- 3960,3973 ----
  	   of its type, so we must elaborate that type now.  */
  	if (Present (Alias (gnat_entity)))
  	  {
! 	    const Entity_Id gnat_alias = Alias (gnat_entity);
  
! 	    if (Ekind (gnat_alias) == E_Enumeration_Literal)
! 	      gnat_to_gnu_entity (Etype (gnat_alias), NULL_TREE, false);
  
! 	    gnu_decl = gnat_to_gnu_entity (gnat_alias, gnu_expr, false);
  
! 	    /* Elaborate any itypes in the parameters of this entity.  */
  	    for (gnat_temp = First_Formal_With_Extras (gnat_entity);
  		 Present (gnat_temp);
  		 gnat_temp = Next_Formal_With_Extras (gnat_temp))
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3947,3970 ****
  		gnat_to_gnu_entity (Etype (gnat_temp), NULL_TREE, false);
  
  	    /* Materialize renamed subprograms in the debugging information
! 	       when the renamed object is compile time known.  We can consider
  	       such renamings as imported declarations.
  
! 	       Because the parameters in generics instantiation are generally
! 	       materialized as renamings, we ofter end up having both the
  	       renamed subprogram and the renaming in the same context and with
! 	       the same name: in this case, renaming is both useless debug-wise
  	       and potentially harmful as name resolution in the debugger could
  	       return twice the same entity!  So avoid this case.  */
! 	    if (debug_info_p && !artificial_p
  		&& !(get_debug_scope (gnat_entity, NULL)
! 		       == get_debug_scope (gnat_renamed, NULL)
! 		     && Name_Equals (Chars (gnat_entity),
! 				     Chars (gnat_renamed)))
! 		&& Present (gnat_renamed)
! 		&& (Ekind (gnat_renamed) == E_Function
! 		    || Ekind (gnat_renamed) == E_Procedure)
! 		&& gnu_decl
  		&& TREE_CODE (gnu_decl) == FUNCTION_DECL)
  	      {
  		tree decl = build_decl (input_location, IMPORTED_DECL,
--- 3975,3996 ----
  		gnat_to_gnu_entity (Etype (gnat_temp), NULL_TREE, false);
  
  	    /* Materialize renamed subprograms in the debugging information
! 	       when the renamed object is known at compile time; we consider
  	       such renamings as imported declarations.
  
! 	       Because the parameters in generic instantiations are generally
! 	       materialized as renamings, we often end up having both the
  	       renamed subprogram and the renaming in the same context and with
! 	       the same name; in this case, renaming is both useless debug-wise
  	       and potentially harmful as name resolution in the debugger could
  	       return twice the same entity!  So avoid this case.  */
! 	    if (debug_info_p
! 		&& !artificial_p
! 		&& (Ekind (gnat_alias) == E_Function
! 		    || Ekind (gnat_alias) == E_Procedure)
  		&& !(get_debug_scope (gnat_entity, NULL)
! 		     == get_debug_scope (gnat_alias, NULL)
! 		     && Name_Equals (Chars (gnat_entity), Chars (gnat_alias)))
  		&& TREE_CODE (gnu_decl) == FUNCTION_DECL)
  	      {
  		tree decl = build_decl (input_location, IMPORTED_DECL,
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4327,4351 ****
  			       gnat_entity);
  	    }
  	}
!       else if (Is_Atomic_Or_VFA (gnat_entity) && !gnu_size
  	       && tree_fits_uhwi_p (TYPE_SIZE (gnu_type))
  	       && integer_pow2p (TYPE_SIZE (gnu_type)))
  	align = MIN (BIGGEST_ALIGNMENT,
  		     tree_to_uhwi (TYPE_SIZE (gnu_type)));
!       else if (Is_Atomic_Or_VFA (gnat_entity) && gnu_size
  	       && tree_fits_uhwi_p (gnu_size)
  	       && integer_pow2p (gnu_size))
  	align = MIN (BIGGEST_ALIGNMENT, tree_to_uhwi (gnu_size));
  
!       /* See if we need to pad the type.  If we did, and made a record,
! 	 the name of the new type may be changed.  So get it back for
! 	 us when we make the new TYPE_DECL below.  */
        if (gnu_size || align > 0)
! 	gnu_type = maybe_pad_type (gnu_type, gnu_size, align, gnat_entity,
! 				   false, !gnu_decl, definition, false);
  
!       if (TYPE_IS_PADDING_P (gnu_type))
! 	gnu_entity_name = TYPE_IDENTIFIER (gnu_type);
  
        /* Now set the RM size of the type.  We cannot do it before padding
  	 because we need to accept arbitrary RM sizes on integral types.  */
--- 4353,4382 ----
  			       gnat_entity);
  	    }
  	}
!       else if (Is_Full_Access (gnat_entity) && !gnu_size
  	       && tree_fits_uhwi_p (TYPE_SIZE (gnu_type))
  	       && integer_pow2p (TYPE_SIZE (gnu_type)))
  	align = MIN (BIGGEST_ALIGNMENT,
  		     tree_to_uhwi (TYPE_SIZE (gnu_type)));
!       else if (Is_Full_Access (gnat_entity) && gnu_size
  	       && tree_fits_uhwi_p (gnu_size)
  	       && integer_pow2p (gnu_size))
  	align = MIN (BIGGEST_ALIGNMENT, tree_to_uhwi (gnu_size));
  
!       /* See if we need to pad the type.  If we did and built a new type,
! 	 then create a stripped-down declaration for the original type,
! 	 mainly for debugging, unless there was already one.  */
        if (gnu_size || align > 0)
! 	{
! 	  tree orig_type = gnu_type;
  
! 	  gnu_type = maybe_pad_type (gnu_type, gnu_size, align, gnat_entity,
! 				     false, definition, false);
! 
! 	  if (gnu_type != orig_type && !gnu_decl)
! 	    create_type_decl (gnu_entity_name, orig_type, true, debug_info_p,
! 			      gnat_entity);
! 	}
  
        /* Now set the RM size of the type.  We cannot do it before padding
  	 because we need to accept arbitrary RM sizes on integral types.  */
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4563,4569 ****
  	    }
  
        /* Now check if the type allows atomic access.  */
!       if (Is_Atomic_Or_VFA (gnat_entity))
  	check_ok_for_atomic_type (gnu_type, gnat_entity, false);
  
        /* If this is not an unconstrained array type, set some flags.  */
--- 4594,4600 ----
  	    }
  
        /* Now check if the type allows atomic access.  */
!       if (Is_Full_Access (gnat_entity))
  	check_ok_for_atomic_type (gnu_type, gnat_entity, false);
  
        /* If this is not an unconstrained array type, set some flags.  */
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4681,4687 ****
  	{
  	  const int quals
  	    = TYPE_QUAL_VOLATILE
! 	      | (Is_Atomic_Or_VFA (gnat_entity) ? TYPE_QUAL_ATOMIC : 0);
  	  /* This is required by free_lang_data_in_type to disable the ODR.  */
  	  if (TREE_CODE (gnu_type) == ENUMERAL_TYPE)
  	    TYPE_STUB_DECL (gnu_type)
--- 4712,4718 ----
  	{
  	  const int quals
  	    = TYPE_QUAL_VOLATILE
! 	      | (Is_Full_Access (gnat_entity) ? TYPE_QUAL_ATOMIC : 0);
  	  /* This is required by free_lang_data_in_type to disable the ODR.  */
  	  if (TREE_CODE (gnu_type) == ENUMERAL_TYPE)
  	    TYPE_STUB_DECL (gnu_type)
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4812,4818 ****
      force_global--;
  
    /* If this is a packed array type whose original array type is itself
!      an Itype without freeze node, make sure the latter is processed.  */
    if (Is_Packed_Array_Impl_Type (gnat_entity)
        && Is_Itype (Original_Array_Type (gnat_entity))
        && No (Freeze_Node (Original_Array_Type (gnat_entity)))
--- 4843,4849 ----
      force_global--;
  
    /* If this is a packed array type whose original array type is itself
!      an itype without freeze node, make sure the latter is processed.  */
    if (Is_Packed_Array_Impl_Type (gnat_entity)
        && Is_Itype (Original_Array_Type (gnat_entity))
        && No (Freeze_Node (Original_Array_Type (gnat_entity)))
*************** gnat_to_gnu_component_type (Entity_Id gn
*** 5102,5114 ****
  			    bool debug_info_p)
  {
    const Entity_Id gnat_type = Component_Type (gnat_array);
    tree gnu_type = gnat_to_gnu_type (gnat_type);
-   bool has_packed_components = Is_Bit_Packed_Array (gnat_array);
    tree gnu_comp_size;
    unsigned int max_align;
  
    /* If an alignment is specified, use it as a cap on the component type
!      so that it can be honored for the whole type.  But ignore it for the
       original type of packed array types.  */
    if (No (Packed_Array_Impl_Type (gnat_array))
        && Known_Alignment (gnat_array))
--- 5133,5146 ----
  			    bool debug_info_p)
  {
    const Entity_Id gnat_type = Component_Type (gnat_array);
+   const bool is_bit_packed = Is_Bit_Packed_Array (gnat_array);
    tree gnu_type = gnat_to_gnu_type (gnat_type);
    tree gnu_comp_size;
+   bool has_packed_components;
    unsigned int max_align;
  
    /* If an alignment is specified, use it as a cap on the component type
!      so that it can be honored for the whole type, but ignore it for the
       original type of packed array types.  */
    if (No (Packed_Array_Impl_Type (gnat_array))
        && Known_Alignment (gnat_array))
*************** gnat_to_gnu_component_type (Entity_Id gn
*** 5118,5126 ****
  
    /* Try to get a packable form of the component if needed.  */
    if ((Is_Packed (gnat_array) || Has_Component_Size_Clause (gnat_array))
        && !Has_Aliased_Components (gnat_array)
        && !Strict_Alignment (gnat_type)
-       && !has_packed_components
        && RECORD_OR_UNION_TYPE_P (gnu_type)
        && !TYPE_FAT_POINTER_P (gnu_type)
        && tree_fits_uhwi_p (TYPE_SIZE (gnu_type)))
--- 5150,5158 ----
  
    /* Try to get a packable form of the component if needed.  */
    if ((Is_Packed (gnat_array) || Has_Component_Size_Clause (gnat_array))
+       && !is_bit_packed
        && !Has_Aliased_Components (gnat_array)
        && !Strict_Alignment (gnat_type)
        && RECORD_OR_UNION_TYPE_P (gnu_type)
        && !TYPE_FAT_POINTER_P (gnu_type)
        && tree_fits_uhwi_p (TYPE_SIZE (gnu_type)))
*************** gnat_to_gnu_component_type (Entity_Id gn
*** 5128,5133 ****
--- 5160,5167 ----
        gnu_type = make_packable_type (gnu_type, false, max_align);
        has_packed_components = true;
      }
+   else
+     has_packed_components = is_bit_packed;
  
    /* Get and validate any specified Component_Size.  */
    gnu_comp_size
*************** gnat_to_gnu_component_type (Entity_Id gn
*** 5150,5158 ****
      gnu_comp_size = bitsize_unit_node;
  
    /* Honor the component size.  This is not needed for bit-packed arrays.  */
!   if (gnu_comp_size && !Is_Bit_Packed_Array (gnat_array))
      {
        tree orig_type = gnu_type;
  
        gnu_type = make_type_from_size (gnu_type, gnu_comp_size, false);
        if (max_align > 0 && TYPE_ALIGN (gnu_type) > max_align)
--- 5184,5193 ----
      gnu_comp_size = bitsize_unit_node;
  
    /* Honor the component size.  This is not needed for bit-packed arrays.  */
!   if (gnu_comp_size && !is_bit_packed)
      {
        tree orig_type = gnu_type;
+       unsigned int gnu_comp_align;
  
        gnu_type = make_type_from_size (gnu_type, gnu_comp_size, false);
        if (max_align > 0 && TYPE_ALIGN (gnu_type) > max_align)
*************** gnat_to_gnu_component_type (Entity_Id gn
*** 5160,5167 ****
        else
  	orig_type = gnu_type;
  
!       gnu_type = maybe_pad_type (gnu_type, gnu_comp_size, 0, gnat_array,
! 				 true, false, definition, true);
  
        /* If a padding record was made, declare it now since it will never be
  	 declared otherwise.  This is necessary to ensure that its subtrees
--- 5195,5216 ----
        else
  	orig_type = gnu_type;
  
!       /* We need to make sure that the size is a multiple of the alignment.
! 	 But we do not misalign the component type because of the alignment
! 	 of the array type here; this either must have been done earlier in
! 	 the packed case or should be rejected in the non-packed case.  */
!       if (TREE_CODE (gnu_comp_size) == INTEGER_CST)
! 	{
! 	  const unsigned HOST_WIDE_INT int_size = tree_to_uhwi (gnu_comp_size);
! 	  gnu_comp_align = int_size & -int_size;
! 	  if (gnu_comp_align > TYPE_ALIGN (gnu_type))
! 	    gnu_comp_align = 0;
! 	}
!        else
! 	 gnu_comp_align = 0;
! 
!       gnu_type = maybe_pad_type (gnu_type, gnu_comp_size, gnu_comp_align,
! 				 gnat_array, true, definition, true);
  
        /* If a padding record was made, declare it now since it will never be
  	 declared otherwise.  This is necessary to ensure that its subtrees
*************** gnat_to_gnu_component_type (Entity_Id gn
*** 5188,5194 ****
  	    = size_binop (MAX_EXPR, TYPE_SIZE (gnu_type), bitsize_unit_node);
  	  TYPE_PADDING_FOR_COMPONENT (gnu_type)
  	    = maybe_pad_type (gnu_type, gnu_comp_size, 0, gnat_array,
! 			      true, false, definition, true);
  	  gnu_type = TYPE_PADDING_FOR_COMPONENT (gnu_type);
  	  create_type_decl (TYPE_NAME (gnu_type), gnu_type, true, debug_info_p,
  			    gnat_array);
--- 5237,5243 ----
  	    = size_binop (MAX_EXPR, TYPE_SIZE (gnu_type), bitsize_unit_node);
  	  TYPE_PADDING_FOR_COMPONENT (gnu_type)
  	    = maybe_pad_type (gnu_type, gnu_comp_size, 0, gnat_array,
! 			      true, definition, true);
  	  gnu_type = TYPE_PADDING_FOR_COMPONENT (gnu_type);
  	  create_type_decl (TYPE_NAME (gnu_type), gnu_type, true, debug_info_p,
  			    gnat_array);
*************** gnat_to_gnu_component_type (Entity_Id gn
*** 5196,5202 ****
      }
  
    /* Now check if the type of the component allows atomic access.  */
!   if (Has_Atomic_Components (gnat_array) || Is_Atomic_Or_VFA (gnat_type))
      check_ok_for_atomic_type (gnu_type, gnat_array, true);
  
    /* If the component type is a padded type made for a non-bit-packed array
--- 5245,5251 ----
      }
  
    /* Now check if the type of the component allows atomic access.  */
!   if (Has_Atomic_Components (gnat_array) || Is_Full_Access (gnat_type))
      check_ok_for_atomic_type (gnu_type, gnat_array, true);
  
    /* If the component type is a padded type made for a non-bit-packed array
*************** gnat_to_gnu_component_type (Entity_Id gn
*** 5204,5211 ****
       storage order to the padding type since it is the innermost enclosing
       aggregate type around the scalar.  */
    if (TYPE_IS_PADDING_P (gnu_type)
        && Reverse_Storage_Order (gnat_array)
-       && !Is_Bit_Packed_Array (gnat_array)
        && Is_Scalar_Type (gnat_type))
      gnu_type = set_reverse_storage_order_on_pad_type (gnu_type);
  
--- 5253,5260 ----
       storage order to the padding type since it is the innermost enclosing
       aggregate type around the scalar.  */
    if (TYPE_IS_PADDING_P (gnu_type)
+       && !is_bit_packed
        && Reverse_Storage_Order (gnat_array)
        && Is_Scalar_Type (gnat_type))
      gnu_type = set_reverse_storage_order_on_pad_type (gnu_type);
  
*************** gnat_to_gnu_param (Entity_Id gnat_param,
*** 5339,5357 ****
        tree unpadded_type = TREE_TYPE (TYPE_FIELDS (gnu_param_type));
  
        if (foreign
! 	  || (!must_pass_by_ref (unpadded_type)
! 	      && mech != By_Reference
  	      && (mech == By_Copy || !default_pass_by_ref (unpadded_type))
  	      && TYPE_ALIGN (unpadded_type) >= TYPE_ALIGN (gnu_param_type)))
  	gnu_param_type = unpadded_type;
      }
  
-   /* If this is a read-only parameter, make a variant of the type that is
-      read-only.  ??? However, if this is a self-referential type, the type
-      can be very complex, so skip it for now.  */
-   if (ro_param && !CONTAINS_PLACEHOLDER_P (TYPE_SIZE (gnu_param_type)))
-     gnu_param_type = change_qualified_type (gnu_param_type, TYPE_QUAL_CONST);
- 
    /* For foreign conventions, pass arrays as pointers to the element type.
       First check for unconstrained array and get the underlying array.  */
    if (foreign && TREE_CODE (gnu_param_type) == UNCONSTRAINED_ARRAY_TYPE)
--- 5388,5400 ----
        tree unpadded_type = TREE_TYPE (TYPE_FIELDS (gnu_param_type));
  
        if (foreign
! 	  || (mech != By_Reference
! 	      && !must_pass_by_ref (unpadded_type)
  	      && (mech == By_Copy || !default_pass_by_ref (unpadded_type))
  	      && TYPE_ALIGN (unpadded_type) >= TYPE_ALIGN (gnu_param_type)))
  	gnu_param_type = unpadded_type;
      }
  
    /* For foreign conventions, pass arrays as pointers to the element type.
       First check for unconstrained array and get the underlying array.  */
    if (foreign && TREE_CODE (gnu_param_type) == UNCONSTRAINED_ARRAY_TYPE)
*************** gnat_to_gnu_param (Entity_Id gnat_param,
*** 5368,5378 ****
  	gnu_param_type = TREE_TYPE (gnu_param_type);
  
        gnu_param_type = TREE_TYPE (gnu_param_type);
- 
-       if (ro_param)
- 	gnu_param_type
- 	  = change_qualified_type (gnu_param_type, TYPE_QUAL_CONST);
- 
        gnu_param_type = build_pointer_type (gnu_param_type);
        by_component_ptr = true;
      }
--- 5411,5416 ----
*************** gnat_to_gnu_param (Entity_Id gnat_param,
*** 5439,5445 ****
        && (!type_requires_init_of_formal (Etype (gnat_param))
  	  || Is_Init_Proc (gnat_subprog)
  	  || by_return))
!     return gnu_param_type;
  
    gnu_param = create_param_decl (gnu_param_name, gnu_param_type);
    TREE_READONLY (gnu_param) = ro_param || by_ref || by_component_ptr;
--- 5477,5486 ----
        && (!type_requires_init_of_formal (Etype (gnat_param))
  	  || Is_Init_Proc (gnat_subprog)
  	  || by_return))
!     {
!       Set_Mechanism (gnat_param, By_Copy);
!       return gnu_param_type;
!     }
  
    gnu_param = create_param_decl (gnu_param_name, gnu_param_type);
    TREE_READONLY (gnu_param) = ro_param || by_ref || by_component_ptr;
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 5701,5706 ****
--- 5742,5748 ----
  {
    const Entity_Kind kind = Ekind (gnat_subprog);
    const bool method_p = is_cplusplus_method (gnat_subprog);
+   const bool variadic = IN (Convention (gnat_subprog), Convention_C_Variadic);
    Entity_Id gnat_return_type = Etype (gnat_subprog);
    Entity_Id gnat_param;
    tree gnu_type = present_gnu_tree (gnat_subprog)
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 5733,5739 ****
    bool return_by_invisi_ref_p = false;
    bool return_unconstrained_p = false;
    bool incomplete_profile_p = false;
!   unsigned int num;
  
    /* Look into the return type and get its associated GCC tree if it is not
       void, and then compute various flags for the subprogram type.  But make
--- 5775,5781 ----
    bool return_by_invisi_ref_p = false;
    bool return_unconstrained_p = false;
    bool incomplete_profile_p = false;
!   int num;
  
    /* Look into the return type and get its associated GCC tree if it is not
       void, and then compute various flags for the subprogram type.  But make
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 5835,5842 ****
  	    }
  
  	  gnu_return_type = maybe_pad_type (gnu_return_type, max_return_size,
! 					    0, gnat_subprog, false, false,
! 					    definition, true);
  
  	  /* Declare it now since it will never be declared otherwise.  This
  	     is necessary to ensure that its subtrees are properly marked.  */
--- 5877,5884 ----
  	    }
  
  	  gnu_return_type = maybe_pad_type (gnu_return_type, max_return_size,
! 					    0, gnat_subprog, false, definition,
! 					    true);
  
  	  /* Declare it now since it will never be declared otherwise.  This
  	     is necessary to ensure that its subtrees are properly marked.  */
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 5903,5908 ****
--- 5945,5955 ----
        tree gnu_param, gnu_param_type;
        bool cico = false;
  
+       /* For a variadic C function, do not build unnamed parameters.  */
+       if (variadic
+ 	  && num == (Convention (gnat_subprog) - Convention_C_Variadic_0))
+ 	break;
+ 
        /* Fetch an existing parameter with complete type and reuse it.  But we
  	 didn't save the CICO property so we can only do it for In parameters
  	 or parameters passed by reference.  */
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 6136,6142 ****
  
    /* The lists have been built in reverse.  */
    gnu_param_type_list = nreverse (gnu_param_type_list);
!   gnu_param_type_list = chainon (gnu_param_type_list, void_list_node);
    gnu_param_list = nreverse (gnu_param_list);
    gnu_cico_list = nreverse (gnu_cico_list);
  
--- 6183,6190 ----
  
    /* The lists have been built in reverse.  */
    gnu_param_type_list = nreverse (gnu_param_type_list);
!   if (!variadic)
!     gnu_param_type_list = chainon (gnu_param_type_list, void_list_node);
    gnu_param_list = nreverse (gnu_param_list);
    gnu_cico_list = nreverse (gnu_cico_list);
  
*************** update_n_elem (tree n_elem, tree min, tr
*** 6522,6528 ****
  
    return n_elem;
  }
! 
  /* Given GNAT_ENTITY, elaborate all expressions that are required to
     be elaborated at the point of its definition, but do nothing else.  */
  
--- 6570,6576 ----
  
    return n_elem;
  }
! 
  /* Given GNAT_ENTITY, elaborate all expressions that are required to
     be elaborated at the point of its definition, but do nothing else.  */
  
*************** elaborate_entity (Entity_Id gnat_entity)
*** 6579,6585 ****
  
      }
  }
! 
  /* Prepend to ATTR_LIST an entry for an attribute with provided TYPE,
     NAME, ARGS and ERROR_POINT.  */
  
--- 6627,6633 ----
  
      }
  }
! 
  /* Prepend to ATTR_LIST an entry for an attribute with provided TYPE,
     NAME, ARGS and ERROR_POINT.  */
  
*************** prepend_attributes (struct attrib **attr
*** 6694,6700 ****
      if (Nkind (gnat_temp) == N_Pragma)
        prepend_one_attribute_pragma (attr_list, gnat_temp);
  }
! 
  /* Given a GNAT tree GNAT_EXPR, for an expression which is a value within a
     type definition (either a bound or a discriminant value) for GNAT_ENTITY,
     return the GCC tree to use for that expression.  S is the suffix to use
--- 6742,6748 ----
      if (Nkind (gnat_temp) == N_Pragma)
        prepend_one_attribute_pragma (attr_list, gnat_temp);
  }
! 
  /* Given a GNAT tree GNAT_EXPR, for an expression which is a value within a
     type definition (either a bound or a discriminant value) for GNAT_ENTITY,
     return the GCC tree to use for that expression.  S is the suffix to use
*************** elaborate_expression (Node_Id gnat_expr,
*** 6718,6730 ****
    /* If we don't need a value and this is static or a discriminant,
       we don't need to do anything.  */
    if (!need_value
!       && (Is_OK_Static_Expression (gnat_expr)
  	  || (Nkind (gnat_expr) == N_Identifier
  	      && Ekind (Entity (gnat_expr)) == E_Discriminant)))
      return NULL_TREE;
  
    /* If it's a static expression, we don't need a variable for debugging.  */
!   if (need_debug && Is_OK_Static_Expression (gnat_expr))
      need_debug = false;
  
    /* Otherwise, convert this tree to its GCC equivalent and elaborate it.  */
--- 6766,6778 ----
    /* If we don't need a value and this is static or a discriminant,
       we don't need to do anything.  */
    if (!need_value
!       && (Compile_Time_Known_Value (gnat_expr)
  	  || (Nkind (gnat_expr) == N_Identifier
  	      && Ekind (Entity (gnat_expr)) == E_Discriminant)))
      return NULL_TREE;
  
    /* If it's a static expression, we don't need a variable for debugging.  */
!   if (need_debug && Compile_Time_Known_Value (gnat_expr))
      need_debug = false;
  
    /* Otherwise, convert this tree to its GCC equivalent and elaborate it.  */
*************** elaborate_expression_1 (tree gnu_expr, E
*** 6789,6794 ****
--- 6837,6854 ----
  			 && Nkind (Associated_Node_For_Itype (gnat_entity))
  			    == N_Loop_Parameter_Specification));
  
+   /* If the GNAT encodings are not used, we don't need a variable for debug
+      info purposes if the expression is a constant or another variable, but
+      we need to be careful because we do not generate debug info for external
+      variables so DECL_IGNORED_P is not stable across units.  */
+   if (need_debug
+       && gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL
+       && (TREE_CONSTANT (gnu_expr)
+ 	  || (!expr_public_p
+ 	      && DECL_P (gnu_expr)
+ 	      && !DECL_IGNORED_P (gnu_expr))))
+     need_debug = false;
+ 
    /* Now create it, possibly only for debugging purposes.  */
    if (use_variable || need_debug)
      {
*************** elaborate_expression_1 (tree gnu_expr, E
*** 6809,6818 ****
  	 variable only if the variable is used by the generated code.
  	 Returning the variable ensures the caller will use it in generated
  	 code.  Note that there is no need for a location if the debug info
! 	 contains an integer constant.
! 	 TODO: when the encoding-based debug scheme is dropped, move this
! 	 condition to the top-level IF block: we will not need to create a
! 	 variable anymore in such cases, then.  */
        if (use_variable || (need_debug && !TREE_CONSTANT (gnu_expr)))
  	return gnu_decl;
      }
--- 6869,6875 ----
  	 variable only if the variable is used by the generated code.
  	 Returning the variable ensures the caller will use it in generated
  	 code.  Note that there is no need for a location if the debug info
! 	 contains an integer constant.  */
        if (use_variable || (need_debug && !TREE_CONSTANT (gnu_expr)))
  	return gnu_decl;
      }
*************** elaborate_reference (tree ref, Entity_Id
*** 6892,6898 ****
    struct er_data er = { gnat_entity, definition, 0 };
    return gnat_rewrite_reference (ref, elaborate_reference_1, &er, init);
  }
! 
  /* Given a GNU tree and a GNAT list of choices, generate an expression to test
     the value passed against the list of choices.  */
  
--- 6949,6955 ----
    struct er_data er = { gnat_entity, definition, 0 };
    return gnat_rewrite_reference (ref, elaborate_reference_1, &er, init);
  }
! 
  /* Given a GNU tree and a GNAT list of choices, generate an expression to test
     the value passed against the list of choices.  */
  
*************** choices_to_gnu (tree gnu_operand, Node_I
*** 6989,6995 ****
  
    return gnu_result;
  }
! 
  /* Adjust PACKED setting as passed to gnat_to_gnu_field for a field of
     type FIELD_TYPE to be placed in RECORD_TYPE.  Return the result.  */
  
--- 7046,7052 ----
  
    return gnu_result;
  }
! 
  /* Adjust PACKED setting as passed to gnat_to_gnu_field for a field of
     type FIELD_TYPE to be placed in RECORD_TYPE.  Return the result.  */
  
*************** gnat_to_gnu_field (Entity_Id gnat_field,
*** 7043,7051 ****
    const Entity_Id gnat_field_type = Etype (gnat_field);
    tree gnu_field_type = gnat_to_gnu_type (gnat_field_type);
    tree gnu_field_id = get_entity_name (gnat_field);
-   const bool is_atomic
-     = (Is_Atomic_Or_VFA (gnat_field) || Is_Atomic_Or_VFA (gnat_field_type));
    const bool is_aliased = Is_Aliased (gnat_field);
    const bool is_independent
      = (Is_Independent (gnat_field) || Is_Independent (gnat_field_type));
    const bool is_volatile
--- 7100,7108 ----
    const Entity_Id gnat_field_type = Etype (gnat_field);
    tree gnu_field_type = gnat_to_gnu_type (gnat_field_type);
    tree gnu_field_id = get_entity_name (gnat_field);
    const bool is_aliased = Is_Aliased (gnat_field);
+   const bool is_full_access
+     = (Is_Full_Access (gnat_field) || Is_Full_Access (gnat_field_type));
    const bool is_independent
      = (Is_Independent (gnat_field) || Is_Independent (gnat_field_type));
    const bool is_volatile
*************** gnat_to_gnu_field (Entity_Id gnat_field,
*** 7060,7066 ****
       only constraint is the implementation advice whereby only the bits of
       the components should be accessed if they both start and end on byte
       boundaries, but that should be guaranteed by the GCC memory model.
!      Note that we have some redundancies (is_atomic => is_independent,
       is_aliased => is_independent and is_by_ref => is_strict_alignment)
       so the following formula is sufficient.  */
    const bool needs_strict_alignment = (is_independent || is_strict_alignment);
--- 7117,7123 ----
       only constraint is the implementation advice whereby only the bits of
       the components should be accessed if they both start and end on byte
       boundaries, but that should be guaranteed by the GCC memory model.
!      Note that we have some redundancies (is_full_access => is_independent,
       is_aliased => is_independent and is_by_ref => is_strict_alignment)
       so the following formula is sufficient.  */
    const bool needs_strict_alignment = (is_independent || is_strict_alignment);
*************** gnat_to_gnu_field (Entity_Id gnat_field,
*** 7069,7078 ****
    bool is_bitfield;
  
    /* The qualifier to be used in messages.  */
!   if (is_atomic)
!     field_s = "atomic&";
!   else if (is_aliased)
      field_s = "aliased&";
    else if (is_independent)
      field_s = "independent&";
    else if (is_by_ref)
--- 7126,7141 ----
    bool is_bitfield;
  
    /* The qualifier to be used in messages.  */
!   if (is_aliased)
      field_s = "aliased&";
+   else if (is_full_access)
+     {
+       if (Is_Volatile_Full_Access (gnat_field)
+ 	  || Is_Volatile_Full_Access (gnat_field_type))
+ 	field_s = "volatile full access&";
+       else
+ 	field_s = "atomic&";
+     }
    else if (is_independent)
      field_s = "independent&";
    else if (is_by_ref)
*************** gnat_to_gnu_field (Entity_Id gnat_field,
*** 7083,7089 ****
      field_s = "&";
  
    /* The message to be used for incompatible size.  */
!   if (is_atomic || is_aliased)
      size_s = "size for %s must be ^";
    else if (field_s)
      size_s = "size for %s too small{, minimum allowed is ^}";
--- 7146,7152 ----
      field_s = "&";
  
    /* The message to be used for incompatible size.  */
!   if (is_aliased || is_full_access)
      size_s = "size for %s must be ^";
    else if (field_s)
      size_s = "size for %s too small{, minimum allowed is ^}";
*************** gnat_to_gnu_field (Entity_Id gnat_field,
*** 7175,7188 ****
      }
  
    /* Now check if the type of the field allows atomic access.  */
!   if (Is_Atomic_Or_VFA (gnat_field))
      {
        const unsigned int align
  	= promote_object_alignment (gnu_field_type, gnat_field);
        if (align > 0)
  	gnu_field_type
  	  = maybe_pad_type (gnu_field_type, NULL_TREE, align, gnat_field,
! 			    false, false, definition, true);
        check_ok_for_atomic_type (gnu_field_type, gnat_field, false);
      }
  
--- 7238,7251 ----
      }
  
    /* Now check if the type of the field allows atomic access.  */
!   if (Is_Full_Access (gnat_field))
      {
        const unsigned int align
  	= promote_object_alignment (gnu_field_type, gnat_field);
        if (align > 0)
  	gnu_field_type
  	  = maybe_pad_type (gnu_field_type, NULL_TREE, align, gnat_field,
! 			    false, definition, true);
        check_ok_for_atomic_type (gnu_field_type, gnat_field, false);
      }
  
*************** gnat_to_gnu_field (Entity_Id gnat_field,
*** 7191,7202 ****
      {
        Entity_Id gnat_parent = Parent_Subtype (gnat_record_type);
  
!       /* Ensure the position does not overlap with the parent subtype, if there
! 	 is one.  This test is omitted if the parent of the tagged type has a
! 	 full rep clause since, in this case, component clauses are allowed to
! 	 overlay the space allocated for the parent type and the front-end has
! 	 checked that there are no overlapping components.  */
!       if (Present (gnat_parent) && !Is_Fully_Repped_Tagged_Type (gnat_parent))
  	{
  	  tree gnu_parent = gnat_to_gnu_type (gnat_parent);
  
--- 7254,7265 ----
      {
        Entity_Id gnat_parent = Parent_Subtype (gnat_record_type);
  
!       /* Ensure the position doesn't overlap with the parent subtype if there
! 	 is one.  It would be impossible to build CONSTRUCTORs and accessing
! 	 the parent could clobber the component in the extension if directly
! 	 done.  We accept it with -gnatd.K for the sake of compatibility.  */
!       if (Present (gnat_parent)
! 	  && !(Debug_Flag_Dot_KK && Is_Fully_Repped_Tagged_Type (gnat_parent)))
  	{
  	  tree gnu_parent = gnat_to_gnu_type (gnat_parent);
  
*************** gnat_to_gnu_field (Entity_Id gnat_field,
*** 7271,7277 ****
  	      /* If the size is lower than that of the type, or greater for
  		 atomic and aliased, then error out and reset the size.  */
  	      else if ((cmp = tree_int_cst_compare (gnu_size, type_size)) < 0
! 		       || (cmp > 0 && (is_atomic || is_aliased)))
  		{
  		  char s[128];
  		  snprintf (s, sizeof (s), size_s, field_s);
--- 7334,7340 ----
  	      /* If the size is lower than that of the type, or greater for
  		 atomic and aliased, then error out and reset the size.  */
  	      else if ((cmp = tree_int_cst_compare (gnu_size, type_size)) < 0
! 		       || (cmp > 0 && (is_aliased || is_full_access)))
  		{
  		  char s[128];
  		  snprintf (s, sizeof (s), size_s, field_s);
*************** gnat_to_gnu_field (Entity_Id gnat_field,
*** 7343,7349 ****
  
        orig_field_type = gnu_field_type;
        gnu_field_type = maybe_pad_type (gnu_field_type, gnu_size, 0, gnat_field,
! 				       false, false, definition, true);
  
        /* If a padding record was made, declare it now since it will never be
  	 declared otherwise.  This is necessary to ensure that its subtrees
--- 7406,7412 ----
  
        orig_field_type = gnu_field_type;
        gnu_field_type = maybe_pad_type (gnu_field_type, gnu_size, 0, gnat_field,
! 				       false, definition, true);
  
        /* If a padding record was made, declare it now since it will never be
  	 declared otherwise.  This is necessary to ensure that its subtrees
*************** gnat_to_gnu_field (Entity_Id gnat_field,
*** 7396,7402 ****
  
    return gnu_field;
  }
! 
  /* Return true if at least one member of COMPONENT_LIST needs strict
     alignment.  */
  
--- 7459,7465 ----
  
    return gnu_field;
  }
! 
  /* Return true if at least one member of COMPONENT_LIST needs strict
     alignment.  */
  
*************** components_to_record (Node_Id gnat_compo
*** 8403,8409 ****
  
    return (gnu_rep_list && !p_gnu_rep_list) || variants_have_rep;
  }
! 
  /* Given GNU_SIZE, a GCC tree representing a size, return a Uint to be
     placed into an Esize, Component_Bit_Offset, or Component_Size value
     in the GNAT tree.  */
--- 8466,8472 ----
  
    return (gnu_rep_list && !p_gnu_rep_list) || variants_have_rep;
  }
! 
  /* Given GNU_SIZE, a GCC tree representing a size, return a Uint to be
     placed into an Esize, Component_Bit_Offset, or Component_Size value
     in the GNAT tree.  */
*************** annotate_rep (Entity_Id gnat_entity, tre
*** 8771,8777 ****
  	  }
        }
  }
! 
  /* Scan all fields in GNU_TYPE and return a TREE_LIST where TREE_PURPOSE is
     the FIELD_DECL and TREE_VALUE a TREE_VEC containing the byte position, the
     value to be placed into DECL_OFFSET_ALIGN and the bit position.  The list
--- 8834,8840 ----
  	  }
        }
  }
! 
  /* Scan all fields in GNU_TYPE and return a TREE_LIST where TREE_PURPOSE is
     the FIELD_DECL and TREE_VALUE a TREE_VEC containing the byte position, the
     value to be placed into DECL_OFFSET_ALIGN and the bit position.  The list
*************** build_subst_list (Entity_Id gnat_subtype
*** 8863,8882 ****
    return gnu_list;
  }
  
! /* Scan all fields in QUAL_UNION_TYPE and return a list describing the
!    variants of QUAL_UNION_TYPE that are still relevant after applying
!    the substitutions described in SUBST_LIST.  GNU_LIST is a pre-existing
     list to be prepended to the newly created entries.  */
  
  static vec<variant_desc>
! build_variant_list (tree qual_union_type, vec<subst_pair> subst_list,
! 		    vec<variant_desc> gnu_list)
  {
    tree gnu_field;
  
!   for (gnu_field = TYPE_FIELDS (qual_union_type);
         gnu_field;
!        gnu_field = DECL_CHAIN (gnu_field))
      {
        tree qual = DECL_QUALIFIER (gnu_field);
        unsigned int i;
--- 8926,8954 ----
    return gnu_list;
  }
  
! /* Scan all fields in {GNU_QUAL_UNION_TYPE,GNAT_VARIANT_PART} and return a list
!    describing the variants of GNU_QUAL_UNION_TYPE that are still relevant after
!    applying the substitutions described in SUBST_LIST.  GNU_LIST is an existing
     list to be prepended to the newly created entries.  */
  
  static vec<variant_desc>
! build_variant_list (tree gnu_qual_union_type, Node_Id gnat_variant_part,
! 		    vec<subst_pair> subst_list, vec<variant_desc> gnu_list)
  {
+   Node_Id gnat_variant;
    tree gnu_field;
  
!   for (gnu_field = TYPE_FIELDS (gnu_qual_union_type),
!        gnat_variant
! 	= Present (gnat_variant_part)
! 	  ? First_Non_Pragma (Variants (gnat_variant_part))
! 	  : Empty;
         gnu_field;
!        gnu_field = DECL_CHAIN (gnu_field),
!        gnat_variant
! 	= Present (gnat_variant_part)
! 	  ? Next_Non_Pragma (gnat_variant)
! 	  : Empty)
      {
        tree qual = DECL_QUALIFIER (gnu_field);
        unsigned int i;
*************** build_variant_list (tree qual_union_type
*** 8895,8905 ****
  
  	  gnu_list.safe_push (v);
  
  	  /* Recurse on the variant subpart of the variant, if any.  */
  	  variant_subpart = get_variant_part (variant_type);
  	  if (variant_subpart)
! 	    gnu_list = build_variant_list (TREE_TYPE (variant_subpart),
! 					   subst_list, gnu_list);
  
  	  /* If the new qualifier is unconditionally true, the subsequent
  	     variants cannot be accessed.  */
--- 8967,8987 ----
  
  	  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.  */
  	  variant_subpart = get_variant_part (variant_type);
  	  if (variant_subpart)
! 	    gnu_list
! 	      = build_variant_list (TREE_TYPE (variant_subpart),
! 				    Present (gnat_variant)
! 				    ? Variant_Part
! 				      (Component_List (gnat_variant))
! 				    : Empty,
! 				    subst_list,
! 				    gnu_list);
  
  	  /* If the new qualifier is unconditionally true, the subsequent
  	     variants cannot be accessed.  */
*************** build_variant_list (tree qual_union_type
*** 8910,8916 ****
  
    return gnu_list;
  }
! 
  /* If SIZE has overflowed, return the maximum valid size, which is the upper
     bound of the signed sizetype in bits, rounded down to ALIGN.  Otherwise
     return SIZE unmodified.  */
--- 8992,8998 ----
  
    return gnu_list;
  }
! 
  /* If SIZE has overflowed, return the maximum valid size, which is the upper
     bound of the signed sizetype in bits, rounded down to ALIGN.  Otherwise
     return SIZE unmodified.  */
*************** validate_size (Uint uint_size, tree gnu_
*** 8999,9009 ****
        return NULL_TREE;
      }
  
!   /* If this is an integral type or a packed array type, the front-end has
!      already verified the size, so we need not do it here (which would mean
!      checking against the bounds).  However, if this is an aliased object,
!      it may not be smaller than the type of the object.  */
!   if ((INTEGRAL_TYPE_P (gnu_type) || TYPE_IS_PACKED_ARRAY_TYPE_P (gnu_type))
        && !(kind == VAR_DECL && Is_Aliased (gnat_object)))
      return size;
  
--- 9081,9091 ----
        return NULL_TREE;
      }
  
!   /* If this is an integral type or a bit-packed array type, the front-end has
!      already verified the size, so we need not do it again (which would mean
!      checking against the bounds).  However, if this is an aliased object, it
!      may not be smaller than the type of the object.  */
!   if ((INTEGRAL_TYPE_P (gnu_type) || BIT_PACKED_ARRAY_TYPE_P (gnu_type))
        && !(kind == VAR_DECL && Is_Aliased (gnat_object)))
      return size;
  
*************** validate_size (Uint uint_size, tree gnu_
*** 9054,9060 ****
  
    return size;
  }
! 
  /* Similarly, but both validate and process a value of RM size.  This routine
     is only called for types.  */
  
--- 9136,9142 ----
  
    return size;
  }
! 
  /* Similarly, but both validate and process a value of RM size.  This routine
     is only called for types.  */
  
*************** set_rm_size (Uint uint_size, tree gnu_ty
*** 9103,9118 ****
  
    /* Issue an error either if the old size of the object isn't a constant or
       if the new size is smaller than it.  The front-end has already verified
!      this for scalar and packed array types.  */
    if (TREE_CODE (old_size) != INTEGER_CST
        || TREE_OVERFLOW (old_size)
        || (AGGREGATE_TYPE_P (gnu_type)
! 	  && !(TREE_CODE (gnu_type) == ARRAY_TYPE
! 	       && TYPE_PACKED_ARRAY_TYPE_P (gnu_type))
  	  && !(TYPE_IS_PADDING_P (gnu_type)
! 	       && TREE_CODE (TREE_TYPE (TYPE_FIELDS (gnu_type))) == ARRAY_TYPE
! 	       && TYPE_PACKED_ARRAY_TYPE_P
! 		  (TREE_TYPE (TYPE_FIELDS (gnu_type))))
  	  && tree_int_cst_lt (size, old_size)))
      {
        if (Present (gnat_attr_node))
--- 9185,9197 ----
  
    /* Issue an error either if the old size of the object isn't a constant or
       if the new size is smaller than it.  The front-end has already verified
!      this for scalar and bit-packed array types.  */
    if (TREE_CODE (old_size) != INTEGER_CST
        || TREE_OVERFLOW (old_size)
        || (AGGREGATE_TYPE_P (gnu_type)
! 	  && !BIT_PACKED_ARRAY_TYPE_P (gnu_type)
  	  && !(TYPE_IS_PADDING_P (gnu_type)
! 	       && BIT_PACKED_ARRAY_TYPE_P (TREE_TYPE (TYPE_FIELDS (gnu_type))))
  	  && tree_int_cst_lt (size, old_size)))
      {
        if (Present (gnat_attr_node))
*************** set_rm_size (Uint uint_size, tree gnu_ty
*** 9134,9140 ****
  	   && !TYPE_FAT_POINTER_P (gnu_type))
      SET_TYPE_ADA_SIZE (gnu_type, size);
  }
! 
  /* ALIGNMENT is a Uint giving the alignment specified for GNAT_ENTITY,
     a type or object whose present alignment is ALIGN.  If this alignment is
     valid, return it.  Otherwise, give an error and return ALIGN.  */
--- 9213,9219 ----
  	   && !TYPE_FAT_POINTER_P (gnu_type))
      SET_TYPE_ADA_SIZE (gnu_type, size);
  }
! 
  /* ALIGNMENT is a Uint giving the alignment specified for GNAT_ENTITY,
     a type or object whose present alignment is ALIGN.  If this alignment is
     valid, return it.  Otherwise, give an error and return ALIGN.  */
*************** validate_alignment (Uint alignment, Enti
*** 9227,9233 ****
  
    return align;
  }
! 
  /* Promote the alignment of GNU_TYPE corresponding to GNAT_ENTITY.  Return
     a positive value on success or zero on failure.  */
  
--- 9306,9312 ----
  
    return align;
  }
! 
  /* Promote the alignment of GNU_TYPE corresponding to GNAT_ENTITY.  Return
     a positive value on success or zero on failure.  */
  
*************** promote_object_alignment (tree gnu_type,
*** 9241,9248 ****
       the NRV optimization for it.  No point in jumping through all the hoops
       needed in order to support BIGGEST_ALIGNMENT if we don't really have to.
       So we cap to the smallest alignment that corresponds to a known efficient
!      memory access pattern, except for Atomic and Volatile_Full_Access.  */
!   if (Is_Atomic_Or_VFA (gnat_entity))
      {
        size_cap = UINT_MAX;
        align_cap = BIGGEST_ALIGNMENT;
--- 9320,9327 ----
       the NRV optimization for it.  No point in jumping through all the hoops
       needed in order to support BIGGEST_ALIGNMENT if we don't really have to.
       So we cap to the smallest alignment that corresponds to a known efficient
!      memory access pattern, except for a full access entity.  */
!   if (Is_Full_Access (gnat_entity))
      {
        size_cap = UINT_MAX;
        align_cap = BIGGEST_ALIGNMENT;
*************** promote_object_alignment (tree gnu_type,
*** 9274,9280 ****
  
    return align;
  }
! 
  /* Verify that TYPE is something we can implement atomically.  If not, issue
     an error for GNAT_ENTITY.  COMPONENT_P is true if we are being called to
     process a component type.  */
--- 9353,9359 ----
  
    return align;
  }
! 
  /* Verify that TYPE is something we can implement atomically.  If not, issue
     an error for GNAT_ENTITY.  COMPONENT_P is true if we are being called to
     process a component type.  */
*************** check_ok_for_atomic_type (tree type, Ent
*** 9342,9348 ****
      post_error_ne ("atomic access to & cannot be guaranteed",
  		   gnat_error_point, gnat_entity);
  }
! 
  
  /* Helper for the intrin compatibility checks family.  Evaluate whether
     two types are definitely incompatible.  */
--- 9421,9427 ----
      post_error_ne ("atomic access to & cannot be guaranteed",
  		   gnat_error_point, gnat_entity);
  }
! 
  
  /* Helper for the intrin compatibility checks family.  Evaluate whether
     two types are definitely incompatible.  */
*************** intrin_profiles_compatible_p (intrin_bin
*** 9497,9503 ****
  
    return return_compatible_p && arglists_compatible_p;
  }
! 
  /* Return a FIELD_DECL node modeled on OLD_FIELD.  FIELD_TYPE is its type
     and RECORD_TYPE is the type of the parent.  If SIZE is nonzero, it is the
     specified size for this field.  POS_LIST is a position list describing
--- 9576,9582 ----
  
    return return_compatible_p && arglists_compatible_p;
  }
! 
  /* Return a FIELD_DECL node modeled on OLD_FIELD.  FIELD_TYPE is its type
     and RECORD_TYPE is the type of the parent.  If SIZE is nonzero, it is the
     specified size for this field.  POS_LIST is a position list describing
*************** copy_and_substitute_in_layout (Entity_Id
*** 9794,9800 ****
  			       Entity_Id gnat_old_type,
  			       tree gnu_new_type,
  			       tree gnu_old_type,
! 			       vec<subst_pair> gnu_subst_list,
  			       bool debug_info_p)
  {
    const bool is_subtype = (Ekind (gnat_new_type) == E_Record_Subtype);
--- 9873,9879 ----
  			       Entity_Id gnat_old_type,
  			       tree gnu_new_type,
  			       tree gnu_old_type,
! 			       vec<subst_pair> subst_list,
  			       bool debug_info_p)
  {
    const bool is_subtype = (Ekind (gnat_new_type) == E_Record_Subtype);
*************** copy_and_substitute_in_layout (Entity_Id
*** 9813,9823 ****
       build a new qualified union for the variants that are still relevant.  */
    if (gnu_variant_part)
      {
        variant_desc *v;
        unsigned int i;
  
!       gnu_variant_list = build_variant_list (TREE_TYPE (gnu_variant_part),
! 					     gnu_subst_list, vNULL);
  
        /* If all the qualifiers are unconditionally true, the innermost variant
  	 is statically selected.  */
--- 9892,9909 ----
       build a new qualified union for the variants that are still relevant.  */
    if (gnu_variant_part)
      {
+       const Node_Id gnat_decl = Declaration_Node (gnat_new_type);
        variant_desc *v;
        unsigned int i;
  
!       gnu_variant_list
! 	= build_variant_list (TREE_TYPE (gnu_variant_part),
! 			      is_subtype
! 			      ? Empty
! 			      : Variant_Part
! 				(Component_List (Type_Definition (gnat_decl))),
! 			      subst_list,
! 			      vNULL);
  
        /* If all the qualifiers are unconditionally true, the innermost variant
  	 is statically selected.  */
*************** copy_and_substitute_in_layout (Entity_Id
*** 9843,9850 ****
  			     IDENTIFIER_POINTER (suffix));
  	    TYPE_REVERSE_STORAGE_ORDER (new_variant)
  	      = TYPE_REVERSE_STORAGE_ORDER (gnu_new_type);
! 	    copy_and_substitute_in_size (new_variant, old_variant,
! 					 gnu_subst_list);
  	    v->new_type = new_variant;
  	  }
      }
--- 9929,9935 ----
  			     IDENTIFIER_POINTER (suffix));
  	    TYPE_REVERSE_STORAGE_ORDER (new_variant)
  	      = TYPE_REVERSE_STORAGE_ORDER (gnu_new_type);
! 	    copy_and_substitute_in_size (new_variant, old_variant, subst_list);
  	    v->new_type = new_variant;
  	  }
      }
*************** copy_and_substitute_in_layout (Entity_Id
*** 9955,9961 ****
  	gnu_field
  	  = create_field_decl_from (gnu_old_field, gnu_field_type,
  				    gnu_cont_type, gnu_size,
! 				    gnu_pos_list, gnu_subst_list);
  	gnu_pos = DECL_FIELD_OFFSET (gnu_field);
  
  	/* If the context is a variant, put it in the new variant directly.  */
--- 10040,10046 ----
  	gnu_field
  	  = create_field_decl_from (gnu_old_field, gnu_field_type,
  				    gnu_cont_type, gnu_size,
! 				    gnu_pos_list, subst_list);
  	gnu_pos = DECL_FIELD_OFFSET (gnu_field);
  
  	/* If the context is a variant, put it in the new variant directly.  */
*************** copy_and_substitute_in_layout (Entity_Id
*** 10042,10061 ****
        tree new_variant_part
  	= create_variant_part_from (gnu_variant_part, gnu_variant_list,
  				    gnu_new_type, gnu_pos_list,
! 				    gnu_subst_list, debug_info_p);
        DECL_CHAIN (new_variant_part) = gnu_field_list;
        gnu_field_list = new_variant_part;
      }
  
    gnu_variant_list.release ();
!   gnu_subst_list.release ();
  
    /* If NEW_TYPE is a subtype, it inherits all the attributes from OLD_TYPE.
       Otherwise sizes and alignment must be computed independently.  */
    finish_record_type (gnu_new_type, nreverse (gnu_field_list),
  		      is_subtype ? 2 : 1, debug_info_p);
  
!   /* Now go through the entities again looking for Itypes that we have not yet
       elaborated (e.g. Etypes of fields that have Original_Components).  */
    for (Entity_Id gnat_field = First_Entity (gnat_new_type);
         Present (gnat_field);
--- 10127,10146 ----
        tree new_variant_part
  	= create_variant_part_from (gnu_variant_part, gnu_variant_list,
  				    gnu_new_type, gnu_pos_list,
! 				    subst_list, debug_info_p);
        DECL_CHAIN (new_variant_part) = gnu_field_list;
        gnu_field_list = new_variant_part;
      }
  
    gnu_variant_list.release ();
!   subst_list.release ();
  
    /* If NEW_TYPE is a subtype, it inherits all the attributes from OLD_TYPE.
       Otherwise sizes and alignment must be computed independently.  */
    finish_record_type (gnu_new_type, nreverse (gnu_field_list),
  		      is_subtype ? 2 : 1, debug_info_p);
  
!   /* Now go through the entities again looking for itypes that we have not yet
       elaborated (e.g. Etypes of fields that have Original_Components).  */
    for (Entity_Id gnat_field = First_Entity (gnat_new_type);
         Present (gnat_field);
*************** copy_and_substitute_in_layout (Entity_Id
*** 10067,10107 ****
        gnat_to_gnu_entity (Etype (gnat_field), NULL_TREE, false);
  }
  
! /* Associate to GNU_TYPE, the translation of GNAT_ENTITY, which is
!    the implementation type of a packed array type (Is_Packed_Array_Impl_Type),
!    the original array type if it has been translated.  This association is a
!    parallel type for GNAT encodings or a debug type for standard DWARF.  Note
!    that for standard DWARF, we also want to get the original type name.  */
  
! static void
  associate_original_type_to_packed_array (tree gnu_type, Entity_Id gnat_entity)
  {
!   Entity_Id gnat_original_array_type
      = Underlying_Type (Original_Array_Type (gnat_entity));
    tree gnu_original_array_type;
  
    if (!present_gnu_tree (gnat_original_array_type))
!     return;
  
    gnu_original_array_type = gnat_to_gnu_type (gnat_original_array_type);
  
    if (TYPE_IS_DUMMY_P (gnu_original_array_type))
!     return;
  
    if (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
      {
!       tree original_name = TYPE_NAME (gnu_original_array_type);
  
        if (TREE_CODE (original_name) == TYPE_DECL)
  	original_name = DECL_NAME (original_name);
! 
!       SET_TYPE_ORIGINAL_PACKED_ARRAY (gnu_type, gnu_original_array_type);
!       TYPE_NAME (gnu_type) = original_name;
      }
    else
!     add_parallel_type (gnu_type, gnu_original_array_type);
  }
! 
  /* Given a type T, a FIELD_DECL F, and a replacement value R, return an
     equivalent type with adjusted size expressions where all occurrences
     of references to F in a PLACEHOLDER_EXPR have been replaced by R.
--- 10152,10196 ----
        gnat_to_gnu_entity (Etype (gnat_field), NULL_TREE, false);
  }
  
! /* Associate to the implementation type of a packed array type specified by
!    GNU_TYPE, which is the translation of GNAT_ENTITY, the original array type
!    if it has been translated.  This association is a parallel type for GNAT
!    encodings or a debug type for standard DWARF.  Note that for standard DWARF,
!    we also want to get the original type name and therefore we return it.  */
  
! static tree
  associate_original_type_to_packed_array (tree gnu_type, Entity_Id gnat_entity)
  {
!   const Entity_Id gnat_original_array_type
      = Underlying_Type (Original_Array_Type (gnat_entity));
    tree gnu_original_array_type;
  
    if (!present_gnu_tree (gnat_original_array_type))
!     return NULL_TREE;
  
    gnu_original_array_type = gnat_to_gnu_type (gnat_original_array_type);
  
    if (TYPE_IS_DUMMY_P (gnu_original_array_type))
!     return NULL_TREE;
! 
!   gcc_assert (TYPE_IMPL_PACKED_ARRAY_P (gnu_type));
  
    if (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
      {
!       SET_TYPE_ORIGINAL_PACKED_ARRAY (gnu_type, gnu_original_array_type);
  
+       tree original_name = TYPE_NAME (gnu_original_array_type);
        if (TREE_CODE (original_name) == TYPE_DECL)
  	original_name = DECL_NAME (original_name);
!       return original_name;
      }
    else
!     {
!       add_parallel_type (gnu_type, gnu_original_array_type);
!       return NULL_TREE;
!     }
  }
! 
  /* Given a type T, a FIELD_DECL F, and a replacement value R, return an
     equivalent type with adjusted size expressions where all occurrences
     of references to F in a PLACEHOLDER_EXPR have been replaced by R.
*************** substitute_in_type (tree t, tree f, tree
*** 10262,10268 ****
        return t;
      }
  }
! 
  /* Return the RM size of GNU_TYPE.  This is the actual number of bits
     needed to represent the object.  */
  
--- 10351,10357 ----
        return t;
      }
  }
! 
  /* Return the RM size of GNU_TYPE.  This is the actual number of bits
     needed to represent the object.  */
  
*************** rm_size (tree gnu_type)
*** 10291,10297 ****
    /* For other types, this is just the size.  */
    return TYPE_SIZE (gnu_type);
  }
! 
  /* Return the name to be used for GNAT_ENTITY.  If a type, create a
     fully-qualified name, possibly with type information encoding.
     Otherwise, return the name.  */
--- 10380,10386 ----
    /* For other types, this is just the size.  */
    return TYPE_SIZE (gnu_type);
  }
! 
  /* Return the name to be used for GNAT_ENTITY.  If a type, create a
     fully-qualified name, possibly with type information encoding.
     Otherwise, return the name.  */
*************** create_concat_name (Entity_Id gnat_entit
*** 10319,10325 ****
  {
    const Entity_Kind kind = Ekind (gnat_entity);
    const bool has_suffix = (suffix != NULL);
!   String_Template temp = {1, has_suffix ? strlen (suffix) : 0};
    String_Pointer sp = {suffix, &temp};
  
    Get_External_Name (gnat_entity, has_suffix, sp);
--- 10408,10414 ----
  {
    const Entity_Kind kind = Ekind (gnat_entity);
    const bool has_suffix = (suffix != NULL);
!   String_Template temp = {1, has_suffix ? (int) strlen (suffix) : 0};
    String_Pointer sp = {suffix, &temp};
  
    Get_External_Name (gnat_entity, has_suffix, sp);
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/gadaint.h gcc-11.1.0/gcc/ada/gcc-interface/gadaint.h
*** gcc-10.3.0/gcc/ada/gcc-interface/gadaint.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gcc-interface/gadaint.h	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *           Copyright (C) 2010-2011, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *           Copyright (C) 2010-2020, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/gigi.h gcc-11.1.0/gcc/ada/gcc-interface/gigi.h
*** gcc-10.3.0/gcc/ada/gcc-interface/gigi.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gcc-interface/gigi.h	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** extern tree make_type_from_size (tree ty
*** 138,151 ****
     if needed.  We have already verified that SIZE and ALIGN are large enough.
     GNAT_ENTITY is used to name the resulting record and to issue a warning.
     IS_COMPONENT_TYPE is true if this is being done for the component type of
!    an array.  IS_USER_TYPE is true if the original type needs to be completed.
!    DEFINITION is true if this type is being defined.  SET_RM_SIZE is true if
!    the RM size of the resulting type is to be set to SIZE too; in this case,
!    the padded type is canonicalized before being returned.  */
  extern tree maybe_pad_type (tree type, tree size, unsigned int align,
  			    Entity_Id gnat_entity, bool is_component_type,
! 			    bool is_user_type, bool definition,
! 			    bool set_rm_size);
  
  /* Return true if padded TYPE was built with an RM size.  */
  extern bool pad_type_has_rm_size (tree type);
--- 138,149 ----
     if needed.  We have already verified that SIZE and ALIGN are large enough.
     GNAT_ENTITY is used to name the resulting record and to issue a warning.
     IS_COMPONENT_TYPE is true if this is being done for the component type of
!    an array.  DEFINITION is true if this type is being defined.  SET_RM_SIZE
!    is true if the RM size of the resulting type is to be set to SIZE too; in
!    this case, the padded type is canonicalized before being returned.  */
  extern tree maybe_pad_type (tree type, tree size, unsigned int align,
  			    Entity_Id gnat_entity, bool is_component_type,
! 			    bool definition, bool set_rm_size);
  
  /* Return true if padded TYPE was built with an RM size.  */
  extern bool pad_type_has_rm_size (tree type);
*************** extern int double_scalar_alignment;
*** 327,333 ****
  
  /* True if floating-point arithmetics may use wider intermediate results.  */
  extern bool fp_arith_may_widen;
! 
  /* Data structures used to represent attributes.  */
  
  enum attrib_type
--- 325,331 ----
  
  /* True if floating-point arithmetics may use wider intermediate results.  */
  extern bool fp_arith_may_widen;
! 
  /* Data structures used to represent attributes.  */
  
  enum attrib_type
*************** enum standard_datatypes
*** 392,397 ****
--- 390,398 ----
    /* Function decl node for 64-bit multiplication with overflow checking.  */
    ADT_mulv64_decl,
  
+   /* Function decl node for 128-bit multiplication with overflow checking.  */
+   ADT_mulv128_decl,
+ 
    /* Identifier for the name of the _Parent field in tagged record types.  */
    ADT_parent_name_id,
  
*************** extern GTY(()) tree gnat_raise_decls_ext
*** 464,469 ****
--- 465,471 ----
  #define free_decl gnat_std_decls[(int) ADT_free_decl]
  #define realloc_decl gnat_std_decls[(int) ADT_realloc_decl]
  #define mulv64_decl gnat_std_decls[(int) ADT_mulv64_decl]
+ #define mulv128_decl gnat_std_decls[(int) ADT_mulv128_decl]
  #define parent_name_id gnat_std_decls[(int) ADT_parent_name_id]
  #define exception_data_name_id gnat_std_decls[(int) ADT_exception_data_name_id]
  #define jmpbuf_type gnat_std_decls[(int) ADT_jmpbuf_type]
*************** extern Pos get_target_short_size (void);
*** 1037,1042 ****
--- 1039,1045 ----
  extern Pos get_target_int_size (void);
  extern Pos get_target_long_size (void);
  extern Pos get_target_long_long_size (void);
+ extern Pos get_target_long_long_long_size (void);
  extern Pos get_target_pointer_size (void);
  extern Pos get_target_maximum_default_alignment (void);
  extern Pos get_target_system_allocator_alignment (void);
*************** extern void enumerate_modes (void (*f) (
*** 1065,1084 ****
  #define gigi_checking_assert(EXPR) \
    gcc_checking_assert ((EXPR) || type_annotate_only)
  
- /* If EXP's type is a VECTOR_TYPE, return EXP converted to the associated
-    TYPE_REPRESENTATIVE_ARRAY.  */
- 
- static inline tree
- maybe_vector_array (tree exp)
- {
-   tree etype = TREE_TYPE (exp);
- 
-   if (VECTOR_TYPE_P (etype))
-     exp = convert (TYPE_REPRESENTATIVE_ARRAY (etype), exp);
- 
-   return exp;
- }
- 
  /* Return the smallest power of 2 larger than X.  */
  
  static inline unsigned HOST_WIDE_INT
--- 1068,1073 ----
*************** gnat_signed_type_for (tree type_node)
*** 1144,1149 ****
--- 1133,1165 ----
    return gnat_signed_or_unsigned_type_for (0, type_node);
  }
  
+ /* Like build_qualified_type, but TYPE_QUALS is added to the existing
+    qualifiers on TYPE.  */
+ 
+ static inline tree
+ change_qualified_type (tree type, int type_quals)
+ {
+   /* Qualifiers must be put on the associated array type.  */
+   if (TREE_CODE (type) == UNCONSTRAINED_ARRAY_TYPE)
+     return type;
+ 
+   return build_qualified_type (type, TYPE_QUALS (type) | type_quals);
+ }
+ 
+ /* If EXPR's type is a VECTOR_TYPE, return EXPR converted to the associated
+    TYPE_REPRESENTATIVE_ARRAY.  */
+ 
+ static inline tree
+ maybe_vector_array (tree expr)
+ {
+   tree type = TREE_TYPE (expr);
+ 
+   if (VECTOR_TYPE_P (type))
+     expr = convert (TYPE_REPRESENTATIVE_ARRAY (type), expr);
+ 
+   return expr;
+ }
+ 
  /* Adjust the character type TYPE if need be.  */
  
  static inline tree
*************** maybe_debug_type (tree type)
*** 1186,1200 ****
    return type;
  }
  
! /* Like build_qualified_type, but TYPE_QUALS is added to the existing
!    qualifiers on TYPE.  */
  
  static inline tree
! change_qualified_type (tree type, int type_quals)
  {
!   /* Qualifiers must be put on the associated array type.  */
!   if (TREE_CODE (type) == UNCONSTRAINED_ARRAY_TYPE)
!     return type;
  
!   return build_qualified_type (type, TYPE_QUALS (type) | type_quals);
  }
--- 1202,1224 ----
    return type;
  }
  
! /* Remove the padding around EXPR if need be.  */
  
  static inline tree
! maybe_padded_object (tree expr)
  {
!   tree type = TREE_TYPE (expr);
  
!   if (TYPE_IS_PADDING_P (type))
!     expr = convert (TREE_TYPE (TYPE_FIELDS (type)), expr);
! 
!   return expr;
! }
! 
! /* Return the type of operand #0 of EXPR.  */
! 
! static inline tree
! operand_type (tree expr)
! {
!   return TREE_TYPE (TREE_OPERAND (expr, 0));
  }
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/lang-specs.h gcc-11.1.0/gcc/ada/gcc-interface/lang-specs.h
*** gcc-10.3.0/gcc/ada/gcc-interface/lang-specs.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gcc-interface/lang-specs.h	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *           Copyright (C) 1992-2018, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *           Copyright (C) 1992-2020, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 23,28 ****
--- 23,32 ----
   *                                                                          *
   ****************************************************************************/
  
+ /* Pass -d* flags to the actual compiler, but mapping non-Ada
+    extensions to .ada in dump file names.  */
+ #define ADA_DUMPS_OPTIONS DUMPS_OPTIONS ("%{!.adb:%{!.ads:.ada}}")
+ 
  /* This is the contribution to the `default_compilers' array in gcc.c for
     GNAT.  */
  
***************
*** 34,50 ****
   %{!S:%{!c:%e-c or -S required for Ada}}\
   gnat1 %{I*} %{k8:-gnatk8} %{Wall:-gnatwa} %{w:-gnatws} %{!Q:-quiet}\
      %{nostdinc*} %{nostdlib*}\
!     -dumpbase %{.adb:%b.adb}%{.ads:%b.ads}%{!.adb:%{!.ads:%b.ada}}\
!     %{fcompare-debug-second:%:compare-debug-auxbase-opt(%b) -gnatd_A} \
!     %{!fcompare-debug-second:%{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}}} \
!     %{O*} %{W*} %{w} %{p} %{pg:-p} %{d*} \
      %{coverage:-fprofile-arcs -ftest-coverage} "
  #if defined(TARGET_VXWORKS_RTP)
     "%{fRTS=rtp|fRTS=rtp-smp|fRTS=ravenscar-cert-rtp:-mrtp} "
  #endif
     "%{gnatea:-gnatez} %{g*&m*&f*} "
     "%1 %{!S:%{o*:%w%*-gnatO}} \
!     %i %{S:%W{o*}%{!o*:-o %b.s}} \
      %{gnatc*|gnats*: -o %j} %{-param*} \
      %{!gnatc*:%{!gnats*:%(invoke_as)}}", 0, 0, 0},
  
--- 38,52 ----
   %{!S:%{!c:%e-c or -S required for Ada}}\
   gnat1 %{I*} %{k8:-gnatk8} %{Wall:-gnatwa} %{w:-gnatws} %{!Q:-quiet}\
      %{nostdinc*} %{nostdlib*}\
!     %{fcompare-debug-second:-gnatd_A} \
!     %{O*} %{W*} %{w} %{p} %{pg:-p} " ADA_DUMPS_OPTIONS " \
      %{coverage:-fprofile-arcs -ftest-coverage} "
  #if defined(TARGET_VXWORKS_RTP)
     "%{fRTS=rtp|fRTS=rtp-smp|fRTS=ravenscar-cert-rtp:-mrtp} "
  #endif
     "%{gnatea:-gnatez} %{g*&m*&f*} "
     "%1 %{!S:%{o*:%w%*-gnatO}} \
!     %i %{S:%W{o*}%{!o*:-o %w%b.s}} \
      %{gnatc*|gnats*: -o %j} %{-param*} \
      %{!gnatc*:%{!gnats*:%(invoke_as)}}", 0, 0, 0},
  
***************
*** 53,61 ****
   %{!c:%e-c required for gnat2why}\
   gnat1why %{I*} %{k8:-gnatk8} %{!Q:-quiet}\
      %{nostdinc*} %{nostdlib*}\
!     -dumpbase %{.adb:%b.adb}%{.ads:%b.ads}%{!.adb:%{!.ads:%b.ada}}\
!     %{o*:-auxbase-strip %*}%{!o*:-auxbase %b} \
!     %{a} %{d*} \
      %{gnatea:-gnatez} %{g*&m*&f*} \
      %1 %{o*:%w%*-gnatO} \
      %i \
--- 55,61 ----
   %{!c:%e-c required for gnat2why}\
   gnat1why %{I*} %{k8:-gnatk8} %{!Q:-quiet}\
      %{nostdinc*} %{nostdlib*}\
!     %{a} " ADA_DUMPS_OPTIONS " \
      %{gnatea:-gnatez} %{g*&m*&f*} \
      %1 %{o*:%w%*-gnatO} \
      %i \
***************
*** 66,74 ****
   %{!c:%e-c required for gnat2scil}\
   gnat1scil %{I*} %{k8:-gnatk8} %{!Q:-quiet}\
      %{nostdinc*} %{nostdlib*}\
!     -dumpbase %{.adb:%b.adb}%{.ads:%b.ads}%{!.adb:%{!.ads:%b.ada}}\
!     %{o*:-auxbase-strip %*}%{!o*:-auxbase %b} \
!     %{a} %{d*} \
      %{gnatea:-gnatez} %{g*&m*&f*} \
      %1 %{o*:%w%*-gnatO} \
      %i \
--- 66,72 ----
   %{!c:%e-c required for gnat2scil}\
   gnat1scil %{I*} %{k8:-gnatk8} %{!Q:-quiet}\
      %{nostdinc*} %{nostdlib*}\
!     %{a} " ADA_DUMPS_OPTIONS " \
      %{gnatea:-gnatez} %{g*&m*&f*} \
      %1 %{o*:%w%*-gnatO} \
      %i \
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/lang.opt gcc-11.1.0/gcc/ada/gcc-interface/lang.opt
*** gcc-10.3.0/gcc/ada/gcc-interface/lang.opt	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gcc-interface/lang.opt	Tue Apr 27 10:00:12 2021
*************** fbuiltin-printf
*** 104,111 ****
  Ada Undocumented
  Ignored.
  
- fopenacc
- Ada LTO
- ; Documented in C but it should be: Enable OpenACC support
- 
  ; This comment is to ensure we retain the blank line above.
--- 104,107 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/misc.c gcc-11.1.0/gcc/ada/gcc-interface/misc.c
*** gcc-10.3.0/gcc/ada/gcc-interface/misc.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gcc-interface/misc.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                           C Implementation File                          *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                           C Implementation File                          *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 35,40 ****
--- 35,41 ----
  #include "stor-layout.h"
  #include "print-tree.h"
  #include "toplev.h"
+ #include "tree-pass.h"
  #include "langhooks.h"
  #include "langhooks-def.h"
  #include "plugin.h"
***************
*** 47,52 ****
--- 48,54 ----
  #include "atree.h"
  #include "namet.h"
  #include "nlists.h"
+ #include "snames.h"
  #include "uintp.h"
  #include "fe.h"
  #include "sinfo.h"
*************** gnat_handle_option (size_t scode, const
*** 164,170 ****
        /* These are handled by the front-end.  */
        break;
  
-     case OPT_fopenacc:
      case OPT_fshort_enums:
      case OPT_fsigned_char:
      case OPT_funsigned_char:
--- 166,171 ----
*************** internal_error_function (diagnostic_cont
*** 307,312 ****
--- 308,316 ----
    /* Warn if plugins present.  */
    warn_if_plugins ();
  
+   /* Dump the representation of the function.  */
+   emergency_dump_function ();
+ 
    /* Reset the pretty-printer.  */
    pp_clear_output_area (context->printer);
  
*************** gnat_init (void)
*** 366,371 ****
--- 370,378 ----
    sbitsize_one_node = sbitsize_int (1);
    sbitsize_unit_node = sbitsize_int (BITS_PER_UNIT);
  
+   /* In Ada, we do not use location ranges.  */
+   line_table->default_range_bits = 0;
+ 
    /* Register our internal error function.  */
    global_dc->internal_error = &internal_error_function;
  
*************** gnat_init_gcc_eh (void)
*** 417,423 ****
      }
    else
      {
!       flag_non_call_exceptions = 1;
        flag_aggressive_loop_optimizations = 0;
        warn_aggressive_loop_optimizations = 0;
      }
--- 424,431 ----
      }
    else
      {
!       if (!global_options_set.x_flag_non_call_exceptions)
!         flag_non_call_exceptions = 1;
        flag_aggressive_loop_optimizations = 0;
        warn_aggressive_loop_optimizations = 0;
      }
*************** gnat_print_decl (FILE *file, tree node,
*** 466,474 ****
        if (DECL_LOOP_PARM_P (node))
  	print_node (file, "induction var", DECL_INDUCTION_VAR (node),
  		    indent + 4);
-       else
- 	print_node (file, "renamed object", DECL_RENAMED_OBJECT (node),
- 		    indent + 4);
        break;
  
      default:
--- 474,479 ----
*************** gnat_printable_name (tree decl, int verb
*** 557,563 ****
  
    __gnat_decode (coded_name, ada_name, 0);
  
!   if (verbosity == 2 && !DECL_IS_BUILTIN (decl))
      {
        Set_Identifier_Casing (ada_name, DECL_SOURCE_FILE (decl));
        return ggc_strdup (Name_Buffer);
--- 562,568 ----
  
    __gnat_decode (coded_name, ada_name, 0);
  
!   if (verbosity == 2 && !DECL_IS_UNDECLARED_BUILTIN (decl))
      {
        Set_Identifier_Casing (ada_name, DECL_SOURCE_FILE (decl));
        return ggc_strdup (Name_Buffer);
*************** gnat_enum_underlying_base_type (const_tr
*** 601,620 ****
  static tree
  gnat_get_debug_type (const_tree type)
  {
!   if (TYPE_CAN_HAVE_DEBUG_TYPE_P (type) && TYPE_DEBUG_TYPE (type))
!     {
!       type = TYPE_DEBUG_TYPE (type);
! 
!       /* ??? The get_debug_type language hook is processed after the array
! 	 descriptor language hook, so if there is an array behind this type,
! 	 the latter is supposed to handle it.  Still, we can get here with
! 	 a type we are not supposed to handle (e.g. when the DWARF back-end
! 	 processes the type of a variable), so keep this guard.  */
!       if (type && TYPE_CAN_HAVE_DEBUG_TYPE_P (type))
! 	return const_cast<tree> (type);
!     }
! 
!   return NULL_TREE;
  }
  
  /* Provide information in INFO for debugging output about the TYPE fixed-point
--- 606,615 ----
  static tree
  gnat_get_debug_type (const_tree type)
  {
!   if (TYPE_CAN_HAVE_DEBUG_TYPE_P (type))
!     return TYPE_DEBUG_TYPE (type);
!   else
!     return NULL_TREE;
  }
  
  /* Provide information in INFO for debugging output about the TYPE fixed-point
*************** gnat_get_fixed_point_type_info (const_tr
*** 626,635 ****
  {
    tree scale_factor;
  
!   /* GDB cannot handle fixed-point types yet, so rely on GNAT encodings
!      instead for it.  */
    if (!TYPE_IS_FIXED_POINT_P (type)
!       || gnat_encodings != DWARF_GNAT_ENCODINGS_MINIMAL)
      return false;
  
    scale_factor = TYPE_SCALE_FACTOR (type);
--- 621,629 ----
  {
    tree scale_factor;
  
!   /* Do nothing if the GNAT encodings are used.  */
    if (!TYPE_IS_FIXED_POINT_P (type)
!       || gnat_encodings == DWARF_GNAT_ENCODINGS_ALL)
      return false;
  
    scale_factor = TYPE_SCALE_FACTOR (type);
*************** gnat_get_fixed_point_type_info (const_tr
*** 637,662 ****
    /* We expect here only a finite set of pattern.  See fixed-point types
       handling in gnat_to_gnu_entity.  */
  
-   /* Put invalid values when compiler internals cannot represent the scale
-      factor.  */
-   if (scale_factor == integer_zero_node)
-     {
-       info->scale_factor_kind = fixed_point_scale_factor_arbitrary;
-       info->scale_factor.arbitrary.numerator = 0;
-       info->scale_factor.arbitrary.denominator = 0;
-       return true;
-     }
- 
    if (TREE_CODE (scale_factor) == RDIV_EXPR)
      {
!       const tree num = TREE_OPERAND (scale_factor, 0);
!       const tree den = TREE_OPERAND (scale_factor, 1);
  
        /* See if we have a binary or decimal scale.  */
        if (TREE_CODE (den) == POWER_EXPR)
  	{
! 	  const tree base = TREE_OPERAND (den, 0);
! 	  const tree exponent = TREE_OPERAND (den, 1);
  
  	  /* We expect the scale factor to be 1 / 2 ** N or 1 / 10 ** N.  */
  	  gcc_assert (num == integer_one_node
--- 631,646 ----
    /* We expect here only a finite set of pattern.  See fixed-point types
       handling in gnat_to_gnu_entity.  */
  
    if (TREE_CODE (scale_factor) == RDIV_EXPR)
      {
!       tree num = TREE_OPERAND (scale_factor, 0);
!       tree den = TREE_OPERAND (scale_factor, 1);
  
        /* See if we have a binary or decimal scale.  */
        if (TREE_CODE (den) == POWER_EXPR)
  	{
! 	  tree base = TREE_OPERAND (den, 0);
! 	  tree exponent = TREE_OPERAND (den, 1);
  
  	  /* We expect the scale factor to be 1 / 2 ** N or 1 / 10 ** N.  */
  	  gcc_assert (num == integer_one_node
*************** gnat_get_fixed_point_type_info (const_tr
*** 686,693 ****
  		  && TREE_CODE (den) == INTEGER_CST);
  
        info->scale_factor_kind = fixed_point_scale_factor_arbitrary;
!       info->scale_factor.arbitrary.numerator = tree_to_uhwi (num);
!       info->scale_factor.arbitrary.denominator = tree_to_shwi (den);
        return true;
      }
  
--- 670,677 ----
  		  && TREE_CODE (den) == INTEGER_CST);
  
        info->scale_factor_kind = fixed_point_scale_factor_arbitrary;
!       info->scale_factor.arbitrary.numerator = num;
!       info->scale_factor.arbitrary.denominator = den;
        return true;
      }
  
*************** static bool
*** 785,798 ****
  gnat_get_array_descr_info (const_tree const_type,
  			   struct array_descr_info *info)
  {
-   bool convention_fortran_p;
-   bool is_array = false;
-   bool is_fat_ptr = false;
-   bool is_packed_array = false;
    tree type = const_cast<tree> (const_type);
!   const_tree first_dimen = NULL_TREE;
!   const_tree last_dimen = NULL_TREE;
!   const_tree dimen;
    int i;
  
    /* Temporaries created in the first pass and used in the second one for thin
--- 769,777 ----
  gnat_get_array_descr_info (const_tree const_type,
  			   struct array_descr_info *info)
  {
    tree type = const_cast<tree> (const_type);
!   tree first_dimen, dimen;
!   bool is_packed_array, is_array;
    int i;
  
    /* Temporaries created in the first pass and used in the second one for thin
*************** gnat_get_array_descr_info (const_tree co
*** 802,810 ****
    tree thinptr_template_expr = NULL_TREE;
    tree thinptr_bound_field = NULL_TREE;
  
-   /* ??? See gnat_get_debug_type.  */
-   type = maybe_debug_type (type);
- 
    /* If we have an implementation type for a packed array, get the orignial
       array type.  */
    if (TYPE_IMPL_PACKED_ARRAY_P (type) && TYPE_ORIGINAL_PACKED_ARRAY (type))
--- 781,786 ----
*************** gnat_get_array_descr_info (const_tree co
*** 812,817 ****
--- 788,795 ----
        type = TYPE_ORIGINAL_PACKED_ARRAY (type);
        is_packed_array = true;
      }
+   else
+     is_packed_array = false;
  
    /* First pass: gather all information about this array except everything
       related to dimensions.  */
*************** gnat_get_array_descr_info (const_tree co
*** 823,876 ****
      {
        is_array = true;
        first_dimen = type;
-       info->data_location = NULL_TREE;
      }
  
!   else if (TYPE_IS_FAT_POINTER_P (type)
! 	   && gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
!     {
!       const tree ua_type = TYPE_UNCONSTRAINED_ARRAY (type);
! 
!       /* This will be our base object address.  */
!       const tree placeholder_expr = build0 (PLACEHOLDER_EXPR, type);
! 
!       /* We assume below that maybe_unconstrained_array returns an INDIRECT_REF
! 	 node.  */
!       const tree ua_val
!         = maybe_unconstrained_array (build_unary_op (INDIRECT_REF,
! 						     ua_type,
! 						     placeholder_expr));
! 
!       is_fat_ptr = true;
!       first_dimen = TREE_TYPE (ua_val);
! 
!       /* Get the *address* of the array, not the array itself.  */
!       info->data_location = TREE_OPERAND (ua_val, 0);
!     }
! 
!   /* Unlike fat pointers (which appear for unconstrained arrays passed in
!      argument), thin pointers are used only for array access types, so we want
!      them to appear in the debug info as pointers to an array type.  That's why
!      we match only the RECORD_TYPE here instead of the POINTER_TYPE with the
!      TYPE_IS_THIN_POINTER_P predicate.  */
    else if (TREE_CODE (type) == RECORD_TYPE
  	   && TYPE_CONTAINS_TEMPLATE_P (type)
  	   && gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
      {
        /* This will be our base object address.  Note that we assume that
! 	 pointers to these will actually point to the array field (thin
  	 pointers are shifted).  */
!       const tree placeholder_expr = build0 (PLACEHOLDER_EXPR, type);
!       const tree placeholder_addr
!         = build_unary_op (ADDR_EXPR, NULL_TREE, placeholder_expr);
  
!       const tree bounds_field = TYPE_FIELDS (type);
!       const tree bounds_type = TREE_TYPE (bounds_field);
!       const tree array_field = DECL_CHAIN (bounds_field);
!       const tree array_type = TREE_TYPE (array_field);
  
!       /* Shift the thin pointer address to get the address of the template.  */
!       const tree shift_amount
  	= fold_build1 (NEGATE_EXPR, sizetype, byte_position (array_field));
        tree template_addr
  	= build_binary_op (POINTER_PLUS_EXPR, TREE_TYPE (placeholder_addr),
--- 801,827 ----
      {
        is_array = true;
        first_dimen = type;
      }
  
!   /* As well as array types embedded in a record type with their bounds.  */
    else if (TREE_CODE (type) == RECORD_TYPE
  	   && TYPE_CONTAINS_TEMPLATE_P (type)
  	   && gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
      {
        /* This will be our base object address.  Note that we assume that
! 	 pointers to this will actually point to the array field (thin
  	 pointers are shifted).  */
!       tree placeholder_expr = build0 (PLACEHOLDER_EXPR, type);
!       tree placeholder_addr
! 	= build_unary_op (ADDR_EXPR, NULL_TREE, placeholder_expr);
  
!       tree bounds_field = TYPE_FIELDS (type);
!       tree bounds_type = TREE_TYPE (bounds_field);
!       tree array_field = DECL_CHAIN (bounds_field);
!       tree array_type = TREE_TYPE (array_field);
  
!       /* Shift back the address to get the address of the template.  */
!       tree shift_amount
  	= fold_build1 (NEGATE_EXPR, sizetype, byte_position (array_field));
        tree template_addr
  	= build_binary_op (POINTER_PLUS_EXPR, TREE_TYPE (placeholder_addr),
*************** gnat_get_array_descr_info (const_tree co
*** 878,923 ****
        template_addr
  	= fold_convert (TYPE_POINTER_TO (bounds_type), template_addr);
  
!       first_dimen = array_type;
! 
!       /* The thin pointer is already the pointer to the array data, so there's
! 	 no need for a specific "data location" expression.  */
!       info->data_location = NULL_TREE;
! 
!       thinptr_template_expr = build_unary_op (INDIRECT_REF,
! 					      bounds_type,
! 					      template_addr);
        thinptr_bound_field = TYPE_FIELDS (bounds_type);
      }
    else
      return false;
  
    /* Second pass: compute the remaining information: dimensions and
       corresponding bounds.  */
  
-   if (TYPE_PACKED (first_dimen))
-     is_packed_array = true;
    /* If this array has fortran convention, it's arranged in column-major
       order, so our view here has reversed dimensions.  */
!   convention_fortran_p = TYPE_CONVENTION_FORTRAN_P (first_dimen);
    /* ??? For row major ordering, we probably want to emit nothing and
       instead specify it as the default in Dw_TAG_compile_unit.  */
    info->ordering = (convention_fortran_p
  		    ? array_descr_ordering_column_major
  		    : array_descr_ordering_row_major);
  
!   /* Count how many dimensions this array has.  */
!   for (i = 0, dimen = first_dimen; ; ++i, dimen = TREE_TYPE (dimen))
      {
!       if (i > 0
! 	  && (TREE_CODE (dimen) != ARRAY_TYPE
! 	      || !TYPE_MULTI_ARRAY_P (dimen)))
! 	break;
!       last_dimen = dimen;
      }
- 
    info->ndimensions = i;
!   info->rank = NULL_TREE;
  
    /* Too many dimensions?  Give up generating proper description: yield instead
       nested arrays.  Note that in this case, this hook is invoked once on each
--- 829,872 ----
        template_addr
  	= fold_convert (TYPE_POINTER_TO (bounds_type), template_addr);
  
!       thinptr_template_expr
! 	= build_unary_op (INDIRECT_REF, NULL_TREE, template_addr);
        thinptr_bound_field = TYPE_FIELDS (bounds_type);
+ 
+       is_array = false;
+       first_dimen = array_type;
      }
+ 
    else
      return false;
  
    /* Second pass: compute the remaining information: dimensions and
       corresponding bounds.  */
  
    /* If this array has fortran convention, it's arranged in column-major
       order, so our view here has reversed dimensions.  */
!   const bool convention_fortran_p = TYPE_CONVENTION_FORTRAN_P (first_dimen);
! 
!   if (TYPE_PACKED (first_dimen))
!     is_packed_array = true;
! 
    /* ??? For row major ordering, we probably want to emit nothing and
       instead specify it as the default in Dw_TAG_compile_unit.  */
    info->ordering = (convention_fortran_p
  		    ? array_descr_ordering_column_major
  		    : array_descr_ordering_row_major);
+   info->rank = NULL_TREE;
  
!   /* Count the number of dimensions and determine the element type.  */
!   i = 1;
!   dimen = TREE_TYPE (first_dimen);
!   while (TREE_CODE (dimen) == ARRAY_TYPE && TYPE_MULTI_ARRAY_P (dimen))
      {
!       i++;
!       dimen = TREE_TYPE (dimen);
      }
    info->ndimensions = i;
!   info->element_type = dimen;
  
    /* Too many dimensions?  Give up generating proper description: yield instead
       nested arrays.  Note that in this case, this hook is invoked once on each
*************** gnat_get_array_descr_info (const_tree co
*** 927,938 ****
        || TYPE_MULTI_ARRAY_P (first_dimen))
      {
        info->ndimensions = 1;
!       last_dimen = first_dimen;
      }
  
!   info->element_type = TREE_TYPE (last_dimen);
! 
!   /* Now iterate over all dimensions in source-order and fill the info
       structure.  */
    for (i = (convention_fortran_p ? info->ndimensions - 1 : 0),
         dimen = first_dimen;
--- 876,885 ----
        || TYPE_MULTI_ARRAY_P (first_dimen))
      {
        info->ndimensions = 1;
!       info->element_type = TREE_TYPE (first_dimen);
      }
  
!   /* Now iterate over all dimensions in source order and fill the info
       structure.  */
    for (i = (convention_fortran_p ? info->ndimensions - 1 : 0),
         dimen = first_dimen;
*************** gnat_get_array_descr_info (const_tree co
*** 943,949 ****
        /* We are interested in the stored bounds for the debug info.  */
        tree index_type = TYPE_INDEX_TYPE (TYPE_DOMAIN (dimen));
  
!       if (is_array || is_fat_ptr)
  	{
  	  /* GDB does not handle very well the self-referencial bound
  	     expressions we are able to generate here for XUA types (they are
--- 890,896 ----
        /* We are interested in the stored bounds for the debug info.  */
        tree index_type = TYPE_INDEX_TYPE (TYPE_DOMAIN (dimen));
  
!       if (is_array)
  	{
  	  /* GDB does not handle very well the self-referencial bound
  	     expressions we are able to generate here for XUA types (they are
*************** gnat_get_array_descr_info (const_tree co
*** 994,999 ****
--- 941,947 ----
    /* These are Fortran-specific fields.  They make no sense here.  */
    info->allocated = NULL_TREE;
    info->associated = NULL_TREE;
+   info->data_location = NULL_TREE;
  
    if (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
      {
*************** get_array_bit_stride (tree comp_type)
*** 1048,1053 ****
--- 996,1008 ----
    if (INTEGRAL_TYPE_P (comp_type))
      return TYPE_RM_SIZE (comp_type);
  
+   /* Likewise for record or union types.  */
+   if (RECORD_OR_UNION_TYPE_P (comp_type) && !TYPE_FAT_POINTER_P (comp_type))
+     return TYPE_ADA_SIZE (comp_type);
+ 
+   /* The gnat_get_array_descr_info debug hook expects a debug tyoe.  */
+   comp_type = maybe_debug_type (comp_type);
+ 
    /* Otherwise, see if this is an array we can analyze; if it's not, punt.  */
    memset (&info, 0, sizeof (info));
    if (!gnat_get_array_descr_info (comp_type, &info) || !info.stride)
*************** must_pass_by_ref (tree gnu_type)
*** 1185,1191 ****
  void
  enumerate_modes (void (*f) (const char *, int, int, int, int, int, int, int))
  {
!   const tree c_types[]
      = { float_type_node, double_type_node, long_double_type_node };
    const char *const c_names[]
      = { "float", "double", "long double" };
--- 1140,1146 ----
  void
  enumerate_modes (void (*f) (const char *, int, int, int, int, int, int, int))
  {
!   tree const c_types[]
      = { float_type_node, double_type_node, long_double_type_node };
    const char *const c_names[]
      = { "float", "double", "long double" };
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/system.ads gcc-11.1.0/gcc/ada/gcc-interface/system.ads
*** gcc-10.3.0/gcc/ada/gcc-interface/system.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/gcc-interface/system.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,184 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                        GNAT RUN-TIME COMPONENTS                          --
+ --                                                                          --
+ --                               S Y S T E M                                --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                            (Compiler Version)                            --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT. The copyright notice above, and the license provisions that follow --
+ -- apply solely to the  contents of the part following the private keyword. --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This version of System is a generic version that is used in building the
+ --  compiler. Right now, we have a host/target problem if we try to use the
+ --  "proper" System, and since the compiler itself does not care about most
+ --  System parameters, this generic version works fine.
+ 
+ pragma Restrictions (No_Implicit_Dynamic_Code);
+ --  We want to avoid trampolines in the compiler, so it can be used in systems
+ --  which prevent execution of code on the stack, e.g. in windows environments
+ --  with DEP (Data Execution Protection) enabled.
+ 
+ pragma Restrictions (No_Finalization);
+ --  Use restriction No_Finalization to avoid pulling finalization (not allowed
+ --  in GNAT) inside sem_spark.adb, when defining type Perm_Tree_Access as an
+ --  access type on incomplete type Perm_Tree_Wrapper (which is required for
+ --  defining a recursive type).
+ 
+ package System is
+    pragma Pure;
+    --  Note that we take advantage of the implementation permission to make
+    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
+    --  2005, this is Pure in any case (AI-362).
+ 
+    pragma No_Elaboration_Code_All;
+    --  Allow the use of that restriction in units that WITH this unit
+ 
+    type Name is (SYSTEM_NAME_GNAT);
+    System_Name : constant Name := SYSTEM_NAME_GNAT;
+ 
+    --  System-Dependent Named Numbers
+ 
+    Min_Int               : constant := Long_Long_Integer'First;
+    Max_Int               : constant := Long_Long_Integer'Last;
+ 
+    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
+    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
+ 
+    Max_Base_Digits       : constant := Long_Long_Float'Digits;
+    Max_Digits            : constant := Long_Long_Float'Digits;
+ 
+    Max_Mantissa          : constant := 63;
+    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
+ 
+    Tick                  : constant := 0.01;
+ 
+    --  Storage-related Declarations
+ 
+    type Address is private;
+    --  Note that we do NOT add pragma Preelaborable_Initialization in this
+    --  version of System, since it is used for the compiler only, and typical
+    --  earlier bootstrap compilers don't support this pragma. We don't need
+    --  it in this context, so there is no problem in omitting it.
+    Null_Address : constant Address;
+ 
+    Storage_Unit : constant := Standard'Storage_Unit;
+    Word_Size    : constant := Standard'Word_Size;
+    Memory_Size  : constant := 2 ** Standard'Address_Size;
+ 
+    --  Address comparison
+ 
+    function "<"  (Left, Right : Address) return Boolean;
+    function "<=" (Left, Right : Address) return Boolean;
+    function ">"  (Left, Right : Address) return Boolean;
+    function ">=" (Left, Right : Address) return Boolean;
+    function "="  (Left, Right : Address) return Boolean;
+ 
+    pragma Import (Intrinsic, "<");
+    pragma Import (Intrinsic, "<=");
+    pragma Import (Intrinsic, ">");
+    pragma Import (Intrinsic, ">=");
+    pragma Import (Intrinsic, "=");
+ 
+    --  Other System-Dependent Declarations
+ 
+    type Bit_Order is (High_Order_First, Low_Order_First);
+    Default_Bit_Order : constant Bit_Order :=
+                          Bit_Order'Val (Standard'Default_Bit_Order);
+    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
+ 
+    --  Priority-related Declarations (RM D.1)
+ 
+    Max_Priority           : constant Positive := 30;
+    Max_Interrupt_Priority : constant Positive := 31;
+ 
+    subtype Any_Priority       is Integer      range  0 .. 31;
+    subtype Priority           is Any_Priority range  0 .. 30;
+    subtype Interrupt_Priority is Any_Priority range 31 .. 31;
+ 
+    Default_Priority : constant Priority := 15;
+ 
+ private
+ 
+    type Address is mod Memory_Size;
+    Null_Address : constant Address := 0;
+ 
+    --------------------------------------
+    -- System Implementation Parameters --
+    --------------------------------------
+ 
+    --  These parameters provide information about the target that is used by
+    --  the compiler. They are in the private part of System, where they can be
+    --  accessed using the special circuitry in the Targparm unit whose source
+    --  should be consulted for more detailed descriptions of the individual
+    --  switch values.
+ 
+    --  This version of system.ads is used only for building the compiler.
+    --  We really ought to use the proper target system (i.e. the one that
+    --  corresponds to the host for the compiler), but that causes as yet
+    --  unsolved makefile problems. For the most part the setting of these
+    --  parameters is not too critical for the compiler version (e.g. we
+    --  do not use floating-point anyway in the compiler).
+ 
+    AAMP                      : constant Boolean := False;
+    Backend_Divide_Checks     : constant Boolean := False;
+    Backend_Overflow_Checks   : constant Boolean := False;
+    Command_Line_Args         : constant Boolean := True;
+    Configurable_Run_Time     : constant Boolean := False;
+    Denorm                    : constant Boolean := True;
+    Duration_32_Bits          : constant Boolean := False;
+    Exit_Status_Supported     : constant Boolean := True;
+    Fractional_Fixed_Ops      : constant Boolean := False;
+    Frontend_Layout           : constant Boolean := False;
+    Machine_Overflows         : constant Boolean := False;
+    Machine_Rounds            : constant Boolean := True;
+    Preallocated_Stacks       : constant Boolean := False;
+    Signed_Zeros              : constant Boolean := True;
+    Stack_Check_Default       : constant Boolean := False;
+    Stack_Check_Probes        : constant Boolean := False;
+    Stack_Check_Limits        : constant Boolean := False;
+    Support_Aggregates        : constant Boolean := True;
+    Support_Composite_Assign  : constant Boolean := True;
+    Support_Composite_Compare : constant Boolean := True;
+    Support_Long_Shifts       : constant Boolean := True;
+    Always_Compatible_Rep     : constant Boolean := True;
+    Suppress_Standard_Library : constant Boolean := False;
+    Use_Ada_Main_Program_Name : constant Boolean := False;
+    Frontend_Exceptions       : constant Boolean := False;
+    ZCX_By_Default            : constant Boolean := True;
+ 
+    --  Obsolete entries, to be removed eventually (bootstrap issues)
+ 
+    Front_End_ZCX_Support     : constant Boolean := False;
+    High_Integrity_Mode       : constant Boolean := False;
+    Long_Shifts_Inlined       : constant Boolean := True;
+    Functions_Return_By_DSP   : constant Boolean := False;
+    Support_64_Bit_Divides    : constant Boolean := True;
+    GCC_ZCX_Support           : constant Boolean := True;
+ 
+ end System;
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/targtyps.c gcc-11.1.0/gcc/ada/gcc-interface/targtyps.c
*** gcc-10.3.0/gcc/ada/gcc-interface/targtyps.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gcc-interface/targtyps.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                                  Body                                    *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                                  Body                                    *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 29,34 ****
--- 29,35 ----
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
+ #include "target.h"
  #include "tree.h"
  
  #include "ada.h"
*************** get_target_long_long_size (void)
*** 95,100 ****
--- 96,110 ----
  }
  
  Pos
+ get_target_long_long_long_size (void)
+ {
+   if (targetm.scalar_mode_supported_p (TImode))
+     return GET_MODE_BITSIZE (TImode);
+   else
+     return LONG_LONG_TYPE_SIZE;
+ }
+ 
+ Pos
  get_target_pointer_size (void)
  {
    return POINTER_SIZE;
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/trans.c gcc-11.1.0/gcc/ada/gcc-interface/trans.c
*** gcc-10.3.0/gcc/ada/gcc-interface/trans.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gcc-interface/trans.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 50,55 ****
--- 50,56 ----
  #include "gomp-constants.h"
  #include "stringpool.h"
  #include "attribs.h"
+ #include "tree-nested.h"
  
  #include "ada.h"
  #include "adadecode.h"
*************** static bool addressable_p (tree, tree);
*** 242,249 ****
  static tree assoc_to_constructor (Entity_Id, Node_Id, tree);
  static tree pos_to_constructor (Node_Id, tree);
  static void validate_unchecked_conversion (Node_Id);
- static Node_Id adjust_for_implicit_deref (Node_Id);
- static tree maybe_implicit_deref (tree);
  static void set_expr_location_from_node (tree, Node_Id, bool = false);
  static void set_gnu_expr_location_from_node (tree, Node_Id);
  static bool set_end_locus_from_node (tree, Node_Id);
--- 243,248 ----
*************** static tree build_raise_check (int, enum
*** 252,268 ****
  static tree create_init_temporary (const char *, tree, tree *, Node_Id);
  static bool maybe_make_gnu_thunk (Entity_Id gnat_thunk, tree gnu_thunk);
  
- /* Hooks for debug info back-ends, only supported and used in a restricted set
-    of configurations.  */
- static const char *extract_encoding (const char *) ATTRIBUTE_UNUSED;
- static const char *decode_name (const char *) ATTRIBUTE_UNUSED;
- 
  /* This makes gigi's file_info_ptr visible in this translation unit,
     so that Sloc_to_locus can look it up when deciding whether to map
     decls to instances.  */
  
  static struct File_Info_Type *file_map;
  
  /* This is the main program of the back-end.  It sets up all the table
     structures and then generates code.  */
  
--- 251,277 ----
  static tree create_init_temporary (const char *, tree, tree *, Node_Id);
  static bool maybe_make_gnu_thunk (Entity_Id gnat_thunk, tree gnu_thunk);
  
  /* This makes gigi's file_info_ptr visible in this translation unit,
     so that Sloc_to_locus can look it up when deciding whether to map
     decls to instances.  */
  
  static struct File_Info_Type *file_map;
  
+ /* Return the string of the identifier allocated for the file name Id.  */
+ 
+ static const char*
+ File_Name_to_gnu (Name_Id Id)
+ {
+   /* __gnat_to_canonical_file_spec translates file names from pragmas
+      Source_Reference that contain host style syntax not understood by GDB.  */
+   const char *name = __gnat_to_canonical_file_spec (Get_Name_String (Id));
+ 
+   /* Use the identifier table to make a permanent copy of the file name as
+      the name table gets reallocated after Gigi returns but before all the
+      debugging information is output.  */
+   return IDENTIFIER_POINTER (get_identifier (name));
+ }
+ 
  /* This is the main program of the back-end.  It sets up all the table
     structures and then generates code.  */
  
*************** gigi (Node_Id gnat_root,
*** 316,338 ****
  
    for (i = 0; i < number_file; i++)
      {
-       /* Use the identifier table to make a permanent copy of the filename as
- 	 the name table gets reallocated after Gigi returns but before all the
- 	 debugging information is output.  The __gnat_to_canonical_file_spec
- 	 call translates filenames from pragmas Source_Reference that contain
- 	 host style syntax not understood by gdb.  */
-       const char *filename
- 	= IDENTIFIER_POINTER
- 	   (get_identifier
- 	    (__gnat_to_canonical_file_spec
- 	     (Get_Name_String (file_info_ptr[i].File_Name))));
- 
        /* We rely on the order isomorphism between files and line maps.  */
!       gcc_assert ((int) LINEMAPS_ORDINARY_USED (line_table) == i);
  
        /* We create the line map for a source file at once, with a fixed number
  	 of columns chosen to avoid jumping over the next power of 2.  */
!       linemap_add (line_table, LC_ENTER, 0, filename, 1);
        linemap_line_start (line_table, file_info_ptr[i].Num_Source_Lines, 252);
        linemap_position_for_column (line_table, 252 - 1);
        linemap_add (line_table, LC_LEAVE, 0, NULL, 0);
--- 325,342 ----
  
    for (i = 0; i < number_file; i++)
      {
        /* We rely on the order isomorphism between files and line maps.  */
!       if ((int) LINEMAPS_ORDINARY_USED (line_table) != i)
! 	{
! 	  gcc_assert (i > 0);
! 	  error ("%s contains too many lines",
! 		 File_Name_to_gnu (file_info_ptr[i - 1].File_Name));
! 	}
  
        /* We create the line map for a source file at once, with a fixed number
  	 of columns chosen to avoid jumping over the next power of 2.  */
!       linemap_add (line_table, LC_ENTER, 0,
! 		   File_Name_to_gnu (file_info_ptr[i].File_Name), 1);
        linemap_line_start (line_table, file_info_ptr[i].Num_Source_Lines, 252);
        linemap_position_for_column (line_table, 252 - 1);
        linemap_add (line_table, LC_LEAVE, 0, NULL, 0);
*************** gigi (Node_Id gnat_root,
*** 441,446 ****
--- 445,463 ----
  			   NULL_TREE, is_default, true, true, true, false,
  			   false, NULL, Empty);
  
+   if (Enable_128bit_Types)
+     {
+       tree int128_type = gnat_type_for_size (128, 0);
+       mulv128_decl
+ 	= create_subprog_decl (get_identifier ("__gnat_mulv128"), NULL_TREE,
+ 			       build_function_type_list (int128_type,
+ 							 int128_type,
+ 							 int128_type,
+ 							 NULL_TREE),
+ 			       NULL_TREE, is_default, true, true, true, false,
+ 			       false, NULL, Empty);
+     }
+ 
    /* Name of the _Parent field in tagged record types.  */
    parent_name_id = get_identifier (Get_Name_String (Name_uParent));
  
*************** gigi (Node_Id gnat_root,
*** 626,632 ****
        constructor_elt *elt;
  
        fdesc_type_node = make_node (RECORD_TYPE);
!       vec_safe_grow (null_vec, TARGET_VTABLE_USES_DESCRIPTORS);
        elt = (null_vec->address () + TARGET_VTABLE_USES_DESCRIPTORS - 1);
  
        for (j = 0; j < TARGET_VTABLE_USES_DESCRIPTORS; j++)
--- 643,649 ----
        constructor_elt *elt;
  
        fdesc_type_node = make_node (RECORD_TYPE);
!       vec_safe_grow (null_vec, TARGET_VTABLE_USES_DESCRIPTORS, true);
        elt = (null_vec->address () + TARGET_VTABLE_USES_DESCRIPTORS - 1);
  
        for (j = 0; j < TARGET_VTABLE_USES_DESCRIPTORS; j++)
*************** gigi (Node_Id gnat_root,
*** 680,686 ****
  
    /* Save the current optimization options again after the above possible
       global_options changes.  */
!   optimization_default_node = build_optimization_node (&global_options);
    optimization_current_node = optimization_default_node;
  
    /* Now translate the compilation unit proper.  */
--- 697,704 ----
  
    /* Save the current optimization options again after the above possible
       global_options changes.  */
!   optimization_default_node
!     = build_optimization_node (&global_options, &global_options_set);
    optimization_current_node = optimization_default_node;
  
    /* Now translate the compilation unit proper.  */
*************** gigi (Node_Id gnat_root,
*** 722,728 ****
    /* We cannot track the location of errors past this point.  */
    Current_Error_Node = Empty;
  }
! 
  /* Return a subprogram decl corresponding to __gnat_rcheck_xx for the given
     CHECK if KIND is EXCEPTION_SIMPLE, or else to __gnat_rcheck_xx_ext.  */
  
--- 740,746 ----
    /* We cannot track the location of errors past this point.  */
    Current_Error_Node = Empty;
  }
! 
  /* Return a subprogram decl corresponding to __gnat_rcheck_xx for the given
     CHECK if KIND is EXCEPTION_SIMPLE, or else to __gnat_rcheck_xx_ext.  */
  
*************** build_raise_check (int check, enum excep
*** 766,772 ****
  
    return result;
  }
! 
  /* Return a positive value if an lvalue is required for GNAT_NODE, which is
     an N_Attribute_Reference.  */
  
--- 784,790 ----
  
    return result;
  }
! 
  /* Return a positive value if an lvalue is required for GNAT_NODE, which is
     an N_Attribute_Reference.  */
  
*************** lvalue_required_for_attribute_p (Node_Id
*** 775,782 ****
  {
    switch (Get_Attribute_Id (Attribute_Name (gnat_node)))
      {
-     case Attr_Pos:
-     case Attr_Val:
      case Attr_Pred:
      case Attr_Succ:
      case Attr_First:
--- 793,798 ----
*************** lvalue_required_p (Node_Id gnat_node, tr
*** 871,878 ****
  
        /* ... fall through ... */
  
      case N_Slice:
!       /* Only the array expression can require an lvalue.  */
        if (Prefix (gnat_parent) != gnat_node)
  	return 0;
  
--- 887,895 ----
  
        /* ... fall through ... */
  
+     case N_Selected_Component:
      case N_Slice:
!       /* Only the prefix expression can require an lvalue.  */
        if (Prefix (gnat_parent) != gnat_node)
  	return 0;
  
*************** lvalue_required_p (Node_Id gnat_node, tr
*** 880,890 ****
  				get_unpadded_type (Etype (gnat_parent)),
  				constant, address_of_constant);
  
-     case N_Selected_Component:
-       return lvalue_required_p (gnat_parent,
- 				get_unpadded_type (Etype (gnat_parent)),
- 				constant, address_of_constant);
- 
      case N_Object_Renaming_Declaration:
        /* We need to preserve addresses through a renaming.  */
        return 1;
--- 897,902 ----
*************** lvalue_required_p (Node_Id gnat_node, tr
*** 894,900 ****
  	 the actual assignment might end up being done component-wise.  */
        return (!constant
  	      ||(Is_Composite_Type (Underlying_Type (Etype (gnat_node)))
! 		 && Is_Atomic_Or_VFA (Defining_Entity (gnat_parent)))
  	      /* We don't use a constructor if this is a class-wide object
  		 because the effective type of the object is the equivalent
  		 type of the class-wide subtype and it smashes most of the
--- 906,912 ----
  	 the actual assignment might end up being done component-wise.  */
        return (!constant
  	      ||(Is_Composite_Type (Underlying_Type (Etype (gnat_node)))
! 		 && Is_Full_Access (Defining_Entity (gnat_parent)))
  	      /* We don't use a constructor if this is a class-wide object
  		 because the effective type of the object is the equivalent
  		 type of the class-wide subtype and it smashes most of the
*************** lvalue_required_p (Node_Id gnat_node, tr
*** 909,915 ****
  	      || Name (gnat_parent) == gnat_node
  	      || (Is_Composite_Type (Underlying_Type (Etype (gnat_node)))
  		  && Is_Entity_Name (Name (gnat_parent))
! 		  && Is_Atomic_Or_VFA (Entity (Name (gnat_parent)))));
  
      case N_Unchecked_Type_Conversion:
  	if (!constant)
--- 921,927 ----
  	      || Name (gnat_parent) == gnat_node
  	      || (Is_Composite_Type (Underlying_Type (Etype (gnat_node)))
  		  && Is_Entity_Name (Name (gnat_parent))
! 		  && Is_Full_Access (Entity (Name (gnat_parent)))));
  
      case N_Unchecked_Type_Conversion:
  	if (!constant)
*************** lvalue_required_p (Node_Id gnat_node, tr
*** 925,936 ****
  			       get_unpadded_type (Etype (gnat_parent)),
  			       constant, address_of_constant);
  
-     case N_Allocator:
-       /* We should only reach here through the N_Qualified_Expression case.
- 	 Force an lvalue for composite types since a block-copy to the newly
- 	 allocated area of memory is made.  */
-       return Is_Composite_Type (Underlying_Type (Etype (gnat_node)));
- 
     case N_Explicit_Dereference:
        /* We look through dereferences for address of constant because we need
  	 to handle the special cases listed above.  */
--- 937,942 ----
*************** lvalue_required_p (Node_Id gnat_node, tr
*** 948,953 ****
--- 954,1027 ----
    gcc_unreachable ();
  }
  
+ /* Return true if an lvalue should be used for GNAT_NODE.  GNU_TYPE is the type
+    that will be used for GNAT_NODE in the translated GNU tree and is assumed to
+    be an aggregate type.
+ 
+    The function climbs up the GNAT tree starting from the node and returns true
+    upon encountering a node that makes it doable to decide.  lvalue_required_p
+    should have been previously invoked on the arguments and returned false.  */
+ 
+ static bool
+ lvalue_for_aggregate_p (Node_Id gnat_node, tree gnu_type)
+ {
+   Node_Id gnat_parent = Parent (gnat_node);
+ 
+   switch (Nkind (gnat_parent))
+     {
+     case N_Parameter_Association:
+     case N_Function_Call:
+     case N_Procedure_Call_Statement:
+       /* Even if the parameter is by copy, prefer an lvalue.  */
+       return true;
+ 
+     case N_Simple_Return_Statement:
+       /* Likewise for a return value.  */
+       return true;
+ 
+     case N_Indexed_Component:
+     case N_Selected_Component:
+       /* If an elementary component is used, take it from the constant.  */
+       if (!Is_Composite_Type (Underlying_Type (Etype (gnat_parent))))
+ 	return false;
+ 
+       /* ... fall through ... */
+ 
+     case N_Slice:
+       return lvalue_for_aggregate_p (gnat_parent,
+ 				     get_unpadded_type (Etype (gnat_parent)));
+ 
+     case N_Object_Declaration:
+       /* For an aggregate object declaration, return false consistently.  */
+       return false;
+ 
+     case N_Assignment_Statement:
+       /* For an aggregate assignment, decide based on the size.  */
+       {
+ 	const HOST_WIDE_INT size = int_size_in_bytes (gnu_type);
+ 	return size < 0 || size >= param_large_stack_frame / 4;
+       }
+ 
+     case N_Unchecked_Type_Conversion:
+     case N_Type_Conversion:
+     case N_Qualified_Expression:
+       return lvalue_for_aggregate_p (gnat_parent,
+ 				     get_unpadded_type (Etype (gnat_parent)));
+ 
+     case N_Allocator:
+       /* We should only reach here through the N_Qualified_Expression case.
+ 	 Force an lvalue for aggregate types since a block-copy to the newly
+ 	 allocated area of memory is made.  */
+       return true;
+ 
+     default:
+       return false;
+     }
+ 
+   gcc_unreachable ();
+ }
+ 
+ 
  /* Return true if T is a constant DECL node that can be safely replaced
     by its initializer.  */
  
*************** Identifier_to_gnu (Node_Id gnat_node, tr
*** 1195,1219 ****
  					  true)))
  	gnu_result = DECL_INITIAL (gnu_result);
  
!       /* If it's a renaming pointer, get to the renamed object.  */
!       if (TREE_CODE (gnu_result) == VAR_DECL
!           && !DECL_LOOP_PARM_P (gnu_result)
! 	  && DECL_RENAMED_OBJECT (gnu_result))
! 	gnu_result = DECL_RENAMED_OBJECT (gnu_result);
! 
!       /* Otherwise, do the final dereference.  */
!       else
! 	{
! 	  gnu_result = build_unary_op (INDIRECT_REF, NULL_TREE, gnu_result);
  
! 	  if ((TREE_CODE (gnu_result) == INDIRECT_REF
! 	       || TREE_CODE (gnu_result) == UNCONSTRAINED_ARRAY_REF)
! 	      && No (Address_Clause (gnat_entity)))
! 	    TREE_THIS_NOTRAP (gnu_result) = 1;
  
! 	  if (read_only)
! 	    TREE_READONLY (gnu_result) = 1;
! 	}
      }
  
    /* If we have a constant declaration and its initializer, try to return the
--- 1269,1284 ----
  					  true)))
  	gnu_result = DECL_INITIAL (gnu_result);
  
!       /* Do the final dereference.  */
!       gnu_result = build_unary_op (INDIRECT_REF, NULL_TREE, gnu_result);
  
!       if ((TREE_CODE (gnu_result) == INDIRECT_REF
! 	   || TREE_CODE (gnu_result) == UNCONSTRAINED_ARRAY_REF)
! 	  && No (Address_Clause (gnat_entity)))
! 	TREE_THIS_NOTRAP (gnu_result) = 1;
  
!       if (read_only)
! 	TREE_READONLY (gnu_result) = 1;
      }
  
    /* If we have a constant declaration and its initializer, try to return the
*************** Identifier_to_gnu (Node_Id gnat_node, tr
*** 1232,1238 ****
        if ((!constant_only || address_of_constant) && require_lvalue < 0)
  	require_lvalue
  	  = lvalue_required_p (gnat_node, gnu_result_type, true,
! 			       address_of_constant);
  
        /* Finally retrieve the initializer if this is deemed valid.  */
        if ((constant_only && !address_of_constant) || !require_lvalue)
--- 1297,1305 ----
        if ((!constant_only || address_of_constant) && require_lvalue < 0)
  	require_lvalue
  	  = lvalue_required_p (gnat_node, gnu_result_type, true,
! 			       address_of_constant)
! 	    || (AGGREGATE_TYPE_P (gnu_result_type)
! 		&& lvalue_for_aggregate_p (gnat_node, gnu_result_type));
  
        /* Finally retrieve the initializer if this is deemed valid.  */
        if ((constant_only && !address_of_constant) || !require_lvalue)
*************** Identifier_to_gnu (Node_Id gnat_node, tr
*** 1275,1508 ****
  
    return gnu_result;
  }
- 
- /* If GNAT_EXPR is an N_Identifier, N_Integer_Literal or N_Operator_Symbol,
-    call FN on it.  If GNAT_EXPR is an aggregate, call FN on each of its
-    elements.  In both cases, pass GNU_EXPR and DATA as additional arguments.
- 
-    This function is used everywhere OpenAcc pragmas are processed if these
-    pragmas can accept aggregates.  */
- 
- static tree
- Iterate_Acc_Clause_Arg (Node_Id gnat_expr, tree gnu_expr,
- 			tree (*fn)(Node_Id, tree, void*),
- 			void* data)
- {
-   switch (Nkind (gnat_expr))
-     {
-     case N_Aggregate:
-       if (Present (Expressions (gnat_expr)))
- 	{
- 	  for (Node_Id gnat_list_expr = First (Expressions (gnat_expr));
- 	       Present (gnat_list_expr);
- 	       gnat_list_expr = Next (gnat_list_expr))
- 	    gnu_expr = fn (gnat_list_expr, gnu_expr, data);
- 	}
-       else if (Present (Component_Associations (gnat_expr)))
- 	{
- 	  for (Node_Id gnat_list_expr = First (Component_Associations
- 					       (gnat_expr));
- 	       Present (gnat_list_expr);
- 	       gnat_list_expr = Next (gnat_list_expr))
- 	    gnu_expr = fn (Expression (gnat_list_expr), gnu_expr, data);
- 	}
-       else
- 	gcc_unreachable ();
-       break;
- 
-     case N_Identifier:
-     case N_Integer_Literal:
-     case N_Operator_Symbol:
-       gnu_expr = fn (gnat_expr, gnu_expr, data);
-       break;
- 
-     default:
-       gcc_unreachable ();
-     }
- 
-   return gnu_expr;
- }
- 
- /* Same as gnat_to_gnu for a GNAT_NODE referenced within an OpenAcc directive,
-    undoing transformations that are inappropriate for such context.  */
- 
- tree
- Acc_gnat_to_gnu (Node_Id gnat_node)
- {
-   tree gnu_result = gnat_to_gnu (gnat_node);
- 
-     /* If gnat_node is an identifier for a boolean, gnat_to_gnu might have
-        turned it into `identifier != 0`.  Since arguments to OpenAcc pragmas
-        need to be writable, we need to return the identifier residing in such
-        expressions rather than the expression itself.  */
-     if (Nkind (gnat_node) == N_Identifier
- 	&& TREE_CODE (gnu_result) == NE_EXPR
- 	&& TREE_CODE (TREE_TYPE (TREE_OPERAND (gnu_result, 0))) == BOOLEAN_TYPE
- 	&& integer_zerop (TREE_OPERAND (gnu_result, 1)))
-       gnu_result = TREE_OPERAND (gnu_result, 0);
- 
-   return gnu_result;
- }
- 
- /* Turn GNAT_EXPR into a tree node representing an OMP data clause and chain
-    it to GNU_CLAUSES, a list of pre-existing OMP clauses.  GNAT_EXPR should be
-    a N_Identifier, this is enforced by the frontend.
- 
-    This function is called every time translation of an argument for an OpenAcc
-    clause (e.g. Acc_Parallel(Copy => My_Identifier)) is needed.  */
- 
- static tree
- Acc_Data_to_gnu (Node_Id gnat_expr, tree gnu_clauses, void* data)
- {
-   const enum gomp_map_kind kind = *((enum gomp_map_kind*) data);
-   tree gnu_clause
-     = build_omp_clause (EXPR_LOCATION(gnu_loop_stack->last ()->stmt),
- 		        OMP_CLAUSE_MAP);
- 
-   gcc_assert (Nkind (gnat_expr) == N_Identifier);
-   OMP_CLAUSE_DECL (gnu_clause)
-     = gnat_to_gnu_entity (Entity (gnat_expr), NULL_TREE, false);
- 
-   TREE_ADDRESSABLE (OMP_CLAUSE_DECL (gnu_clause)) = 1;
-   OMP_CLAUSE_SET_MAP_KIND (gnu_clause, kind);
-   OMP_CLAUSE_CHAIN (gnu_clause) = gnu_clauses;
- 
-   return gnu_clause;
- }
- 
- /* Turn GNAT_EXPR into a tree node representing an OMP clause and chain it to
-    GNU_CLAUSES, a list of existing OMP clauses.
- 
-    This function is used for parsing arguments of non-data clauses (e.g.
-    Acc_Parallel(Wait => gnatexpr)).  */
- 
- static tree
- Acc_Var_to_gnu (Node_Id gnat_expr, tree gnu_clauses, void* data)
- {
-   const enum omp_clause_code kind = *((enum omp_clause_code*) data);
-   tree gnu_clause
-     = build_omp_clause (EXPR_LOCATION (gnu_loop_stack->last ()->stmt), kind);
- 
-   OMP_CLAUSE_DECL (gnu_clause) = Acc_gnat_to_gnu (gnat_expr);
-   OMP_CLAUSE_CHAIN (gnu_clause) = gnu_clauses;
- 
-   return gnu_clause;
- }
- 
- /* Turn GNAT_EXPR into a tree OMP clause representing a reduction clause.
-    GNAT_EXPR has to be a N_Identifier, this is enforced by the frontend.
- 
-    For example, GNAT_EXPR could be My_Identifier in the following pragma:
-    Acc_Parallel(Reduction => ("+" => My_Identifier)).  */
- 
- static tree
- Acc_Reduc_Var_to_gnu (Node_Id gnat_expr, tree gnu_clauses, void* data)
- {
-   const tree_code code = *((tree_code*) data);
-   tree gnu_clause
-     = build_omp_clause (EXPR_LOCATION (gnu_loop_stack->last ()->stmt),
- 			OMP_CLAUSE_REDUCTION);
- 
-   OMP_CLAUSE_DECL (gnu_clause) = Acc_gnat_to_gnu (gnat_expr);
-   OMP_CLAUSE_REDUCTION_CODE (gnu_clause) = code;
-   OMP_CLAUSE_CHAIN (gnu_clause) = gnu_clauses;
- 
-   return gnu_clause;
- }
- 
- /* Turn GNAT_EXPR into a list of OMP reduction clauses.  GNAT_EXPR has to
-    follow the structure of a reduction clause, e.g. ("+" => Identifier).  */
- 
- static tree
- Acc_Reduc_to_gnu (Node_Id gnat_expr)
- {
-   tree gnu_clauses = NULL_TREE;
- 
-   for (Node_Id gnat_op = First (Component_Associations (gnat_expr));
-        Present (gnat_op);
-        gnat_op = Next (gnat_op))
-     {
-       tree_code code = ERROR_MARK;
-       String_Id str = Strval (First (Choices (gnat_op)));
-       switch (Get_String_Char (str, 1))
- 	{
- 	case '+':
- 	  code = PLUS_EXPR;
- 	  break;
- 	case '*':
- 	  code = MULT_EXPR;
- 	  break;
- 	case 'm':
- 	  if (Get_String_Char (str, 2) == 'i'
- 	      && Get_String_Char (str, 3) == 'n')
- 	    code = MIN_EXPR;
- 	  else if (Get_String_Char (str, 2) == 'a'
- 		   && Get_String_Char (str, 3) == 'x')
- 	    code = MAX_EXPR;
- 	  break;
- 	case 'a':
- 	  if (Get_String_Char (str, 2) == 'n'
- 	      && Get_String_Char (str, 3) == 'd')
- 	    code = TRUTH_ANDIF_EXPR;
- 	  break;
- 	case 'o':
- 	  if (Get_String_Char (str, 2) == 'r')
- 	    code = TRUTH_ORIF_EXPR;
- 	  break;
- 	default:
- 	  gcc_unreachable ();
- 	}
- 
-       /* Unsupported reduction operation.  This should have been
- 	 caught in sem_prag.adb.  */
-       gcc_assert (code != ERROR_MARK);
- 
-       gnu_clauses = Iterate_Acc_Clause_Arg (Expression (gnat_op),
- 					    gnu_clauses,
- 					    Acc_Reduc_Var_to_gnu,
- 					    &code);
-     }
- 
-   return gnu_clauses;
- }
- 
- /* Turn GNAT_EXPR, either '*' or an integer literal, into a tree_cons.  This is
-    only used by Acc_Size_List_to_gnu.  */
- 
- static tree
- Acc_Size_Expr_to_gnu (Node_Id gnat_expr, tree gnu_clauses, void *)
- {
-   tree gnu_expr;
- 
-   if (Nkind (gnat_expr) == N_Operator_Symbol
-       && Get_String_Char (Strval (gnat_expr), 1) == '*')
-     gnu_expr = integer_zero_node;
-   else
-     gnu_expr = Acc_gnat_to_gnu (gnat_expr);
- 
-   return tree_cons (NULL_TREE, gnu_expr, gnu_clauses);
- }
- 
- /* Turn GNAT_EXPR, an aggregate of either '*' or integer literals, into an OMP
-    clause node.
- 
-    This function is used for the Tile clause of the Loop directive.  This is
-    what GNAT_EXPR might look like: (1, 1, '*').  */
- 
- static tree
- Acc_Size_List_to_gnu (Node_Id gnat_expr)
- {
-   tree gnu_clause
-     = build_omp_clause (EXPR_LOCATION (gnu_loop_stack->last ()->stmt),
- 		        OMP_CLAUSE_TILE);
-   tree gnu_list = Iterate_Acc_Clause_Arg (gnat_expr, NULL_TREE,
- 					  Acc_Size_Expr_to_gnu,
- 					  NULL);
- 
-   OMP_CLAUSE_TILE_LIST (gnu_clause) = nreverse (gnu_list);
- 
-   return gnu_clause;
- }
  
  /* Subroutine of gnat_to_gnu to process gnat_node, an N_Pragma.  Return
     any statements we generate.  */
--- 1342,1347 ----
*************** Pragma_to_gnu (Node_Id gnat_node)
*** 1575,1853 ****
  	}
        break;
  
-     case Pragma_Acc_Loop:
-       {
- 	if (!flag_openacc)
- 	  break;
- 
- 	tree gnu_clauses = gnu_loop_stack->last ()->omp_loop_clauses;
- 
- 	if (!Present (Pragma_Argument_Associations (gnat_node)))
- 	  break;
- 
- 	for (gnat_temp = First (Pragma_Argument_Associations (gnat_node));
- 	     Present (gnat_temp);
- 	     gnat_temp = Next (gnat_temp))
- 	  {
- 	    Node_Id gnat_expr = Expression (gnat_temp);
- 	    tree gnu_clause = NULL_TREE;
- 	    enum omp_clause_code kind;
- 
- 	    if (Chars (gnat_temp) == No_Name)
- 	      {
- 		/* The clause is an identifier without a parameter.  */
- 		switch (Chars (gnat_expr))
- 		  {
- 		  case Name_Auto:
- 		    kind = OMP_CLAUSE_AUTO;
- 		    break;
- 		  case Name_Gang:
- 		    kind = OMP_CLAUSE_GANG;
- 		    break;
- 		  case Name_Independent:
- 		    kind = OMP_CLAUSE_INDEPENDENT;
- 		    break;
- 		  case Name_Seq:
- 		    kind = OMP_CLAUSE_SEQ;
- 		    break;
- 		  case Name_Vector:
- 		    kind = OMP_CLAUSE_VECTOR;
- 		    break;
- 		  case Name_Worker:
- 		    kind = OMP_CLAUSE_WORKER;
- 		    break;
- 		  default:
- 		    gcc_unreachable ();
- 		  }
- 		gnu_clause = build_omp_clause (EXPR_LOCATION
- 					       (gnu_loop_stack->last ()->stmt),
- 					       kind);
- 	      }
- 	    else
- 	      {
- 		/* The clause is an identifier parameter(s).  */
- 		switch (Chars (gnat_temp))
- 		  {
- 		  case Name_Collapse:
- 		    gnu_clause = build_omp_clause
- 		      (EXPR_LOCATION (gnu_loop_stack->last ()->stmt),
- 		       OMP_CLAUSE_COLLAPSE);
- 		    OMP_CLAUSE_COLLAPSE_EXPR (gnu_clause) =
- 		      Acc_gnat_to_gnu (gnat_expr);
- 		    break;
- 		  case Name_Device_Type:
- 		    /* Unimplemented by GCC yet.  */
- 		    gcc_unreachable ();
- 		    break;
- 		  case Name_Independent:
- 		    gnu_clause = build_omp_clause
- 		      (EXPR_LOCATION (gnu_loop_stack->last ()->stmt),
- 		       OMP_CLAUSE_INDEPENDENT);
- 		    break;
- 		  case Name_Acc_Private:
- 		    kind = OMP_CLAUSE_PRIVATE;
- 		    gnu_clause = Iterate_Acc_Clause_Arg (gnat_expr, 0,
- 							 Acc_Var_to_gnu,
- 							 &kind);
- 		    break;
- 		  case Name_Reduction:
- 		    gnu_clause = Acc_Reduc_to_gnu (gnat_expr);
- 		    break;
- 		  case Name_Tile:
- 		    gnu_clause = Acc_Size_List_to_gnu (gnat_expr);
- 		    break;
- 		  case Name_Gang:
- 		  case Name_Vector:
- 		  case Name_Worker:
- 		    /* These are for the Loop+Kernel combination, which is
- 		       unimplemented by the frontend for now.  */
- 		  default:
- 		    gcc_unreachable ();
- 		  }
- 	      }
- 	    OMP_CLAUSE_CHAIN (gnu_clause) = gnu_clauses;
- 	    gnu_clauses = gnu_clause;
- 	  }
- 	gnu_loop_stack->last ()->omp_loop_clauses = gnu_clauses;
-       }
-     break;
- 
-     /* Grouping the transformation of these pragmas together makes sense
-        because they are mutually exclusive, share most of their clauses and
-        the verification that each clause can legally appear for the pragma has
-        been done in the frontend.  */
-     case Pragma_Acc_Data:
-     case Pragma_Acc_Kernels:
-     case Pragma_Acc_Parallel:
-       {
- 	if (!flag_openacc)
- 	  break;
- 
- 	tree gnu_clauses = gnu_loop_stack->last ()->omp_construct_clauses;
- 	if (id == Pragma_Acc_Data)
- 	  gnu_loop_stack->last ()->omp_code = OACC_DATA;
- 	else if (id == Pragma_Acc_Kernels)
- 	  gnu_loop_stack->last ()->omp_code = OACC_KERNELS;
- 	else if (id == Pragma_Acc_Parallel)
- 	  gnu_loop_stack->last ()->omp_code = OACC_PARALLEL;
- 	else
- 	  gcc_unreachable ();
- 
- 	if (!Present (Pragma_Argument_Associations (gnat_node)))
- 	  break;
- 
- 	for (gnat_temp = First (Pragma_Argument_Associations (gnat_node));
- 	    Present (gnat_temp);
- 	    gnat_temp = Next (gnat_temp))
- 	  {
- 	    Node_Id gnat_expr = Expression (gnat_temp);
- 	    tree gnu_clause;
- 	    enum omp_clause_code clause_code;
- 	    enum gomp_map_kind map_kind;
- 
- 	    switch (Chars (gnat_temp))
- 	      {
- 	      case Name_Async:
- 		gnu_clause = build_omp_clause
- 		  (EXPR_LOCATION (gnu_loop_stack->last ()->stmt),
- 		   OMP_CLAUSE_ASYNC);
- 		OMP_CLAUSE_ASYNC_EXPR (gnu_clause) =
- 		  Acc_gnat_to_gnu (gnat_expr);
- 		OMP_CLAUSE_CHAIN (gnu_clause) = gnu_clauses;
- 		gnu_clauses = gnu_clause;
- 		break;
- 
- 	      case Name_Num_Gangs:
- 		gnu_clause = build_omp_clause
- 		  (EXPR_LOCATION (gnu_loop_stack->last ()->stmt),
- 		   OMP_CLAUSE_NUM_GANGS);
- 		OMP_CLAUSE_NUM_GANGS_EXPR (gnu_clause) =
- 		  Acc_gnat_to_gnu (gnat_expr);
- 		OMP_CLAUSE_CHAIN (gnu_clause) = gnu_clauses;
- 		gnu_clauses = gnu_clause;
- 		break;
- 
- 	      case Name_Num_Workers:
- 		gnu_clause = build_omp_clause
- 		  (EXPR_LOCATION (gnu_loop_stack->last ()->stmt),
- 		   OMP_CLAUSE_NUM_WORKERS);
- 		OMP_CLAUSE_NUM_WORKERS_EXPR (gnu_clause) =
- 		  Acc_gnat_to_gnu (gnat_expr);
- 		OMP_CLAUSE_CHAIN (gnu_clause) = gnu_clauses;
- 		gnu_clauses = gnu_clause;
- 		break;
- 
- 	      case Name_Vector_Length:
- 		gnu_clause = build_omp_clause
- 		  (EXPR_LOCATION (gnu_loop_stack->last ()->stmt),
- 		   OMP_CLAUSE_VECTOR_LENGTH);
- 		OMP_CLAUSE_VECTOR_LENGTH_EXPR (gnu_clause) =
- 		  Acc_gnat_to_gnu (gnat_expr);
- 		OMP_CLAUSE_CHAIN (gnu_clause) = gnu_clauses;
- 		gnu_clauses = gnu_clause;
- 		break;
- 
- 	      case Name_Wait:
- 		clause_code = OMP_CLAUSE_WAIT;
- 		gnu_clauses = Iterate_Acc_Clause_Arg (gnat_expr, gnu_clauses,
- 						      Acc_Var_to_gnu,
- 						      &clause_code);
- 		break;
- 
- 	      case Name_Acc_If:
- 		gnu_clause = build_omp_clause (EXPR_LOCATION
- 					       (gnu_loop_stack->last ()->stmt),
- 					       OMP_CLAUSE_IF);
- 		OMP_CLAUSE_IF_MODIFIER (gnu_clause) = ERROR_MARK;
- 		OMP_CLAUSE_IF_EXPR (gnu_clause) = Acc_gnat_to_gnu (gnat_expr);
- 		OMP_CLAUSE_CHAIN (gnu_clause) = gnu_clauses;
- 		gnu_clauses = gnu_clause;
- 		break;
- 
- 	      case Name_Copy:
- 		map_kind = GOMP_MAP_FORCE_TOFROM;
- 		gnu_clauses = Iterate_Acc_Clause_Arg (gnat_expr, gnu_clauses,
- 						      Acc_Data_to_gnu,
- 						      &map_kind);
- 		break;
- 
- 	      case Name_Copy_In:
- 		map_kind = GOMP_MAP_FORCE_TO;
- 		gnu_clauses = Iterate_Acc_Clause_Arg (gnat_expr, gnu_clauses,
- 						      Acc_Data_to_gnu,
- 						      &map_kind);
- 		break;
- 
- 	      case Name_Copy_Out:
- 		map_kind = GOMP_MAP_FORCE_FROM;
- 		gnu_clauses = Iterate_Acc_Clause_Arg (gnat_expr, gnu_clauses,
- 						      Acc_Data_to_gnu,
- 						      &map_kind);
- 		break;
- 
- 	      case Name_Present:
- 		map_kind = GOMP_MAP_FORCE_PRESENT;
- 		gnu_clauses = Iterate_Acc_Clause_Arg (gnat_expr, gnu_clauses,
- 						      Acc_Data_to_gnu,
- 						      &map_kind);
- 		break;
- 
- 	      case Name_Create:
- 		map_kind = GOMP_MAP_FORCE_ALLOC;
- 		gnu_clauses = Iterate_Acc_Clause_Arg (gnat_expr, gnu_clauses,
- 						      Acc_Data_to_gnu,
- 						      &map_kind);
- 		break;
- 
- 	      case Name_Device_Ptr:
- 		map_kind = GOMP_MAP_FORCE_DEVICEPTR;
- 		gnu_clauses = Iterate_Acc_Clause_Arg (gnat_expr, gnu_clauses,
- 						      Acc_Data_to_gnu,
- 						      &map_kind);
- 		break;
- 
- 	      case Name_Acc_Private:
- 		clause_code = OMP_CLAUSE_PRIVATE;
- 		gnu_clauses = Iterate_Acc_Clause_Arg (gnat_expr, gnu_clauses,
- 						      Acc_Var_to_gnu,
- 						      &clause_code);
- 		break;
- 
- 	      case Name_First_Private:
- 		clause_code = OMP_CLAUSE_FIRSTPRIVATE;
- 		gnu_clauses = Iterate_Acc_Clause_Arg (gnat_expr, gnu_clauses,
- 						      Acc_Var_to_gnu,
- 						      &clause_code);
- 		break;
- 
- 	      case Name_Default:
- 		gnu_clause = build_omp_clause (EXPR_LOCATION
- 					       (gnu_loop_stack->last ()->stmt),
- 					       OMP_CLAUSE_DEFAULT);
- 		OMP_CLAUSE_CHAIN (gnu_clause) = gnu_clauses;
- 		/* The standard also accepts "present" but this isn't
- 		   implemented in GCC yet.  */
- 		OMP_CLAUSE_DEFAULT_KIND (gnu_clause) = OMP_CLAUSE_DEFAULT_NONE;
- 		OMP_CLAUSE_CHAIN (gnu_clause) = gnu_clauses;
- 		gnu_clauses = gnu_clause;
- 		break;
- 
- 	      case Name_Reduction:
- 		gnu_clauses = Acc_Reduc_to_gnu(gnat_expr);
- 		break;
- 
- 	      case Name_Detach:
- 	      case Name_Attach:
- 	      case Name_Device_Type:
- 		/* Unimplemented by GCC.  */
- 	      default:
- 		gcc_unreachable ();
- 	      }
- 	  }
- 	gnu_loop_stack->last ()->omp_construct_clauses = gnu_clauses;
-       }
-       break;
- 
      case Pragma_Loop_Optimize:
        for (gnat_temp = First (Pragma_Argument_Associations (gnat_node));
  	   Present (gnat_temp);
--- 1414,1419 ----
*************** Pragma_to_gnu (Node_Id gnat_node)
*** 2042,2048 ****
  
    return gnu_result;
  }
! 
  /* Check the inline status of nested function FNDECL wrt its parent function.
  
     If a non-inline nested function is referenced from an inline external
--- 1608,1614 ----
  
    return gnu_result;
  }
! 
  /* Check the inline status of nested function FNDECL wrt its parent function.
  
     If a non-inline nested function is referenced from an inline external
*************** check_inlining_for_nested_subprog (tree
*** 2088,2094 ****
        DECL_UNINLINABLE (parent_decl) = 1;
      }
  }
! 
  /* Return an expression for the length of TYPE, an integral type, computed in
     RESULT_TYPE, another integral type.
  
--- 1654,1660 ----
        DECL_UNINLINABLE (parent_decl) = 1;
      }
  }
! 
  /* Return an expression for the length of TYPE, an integral type, computed in
     RESULT_TYPE, another integral type.
  
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 2144,2160 ****
  
    switch (attribute)
      {
-     case Attr_Pos:
-     case Attr_Val:
-       /* These are just conversions since representation clauses for
- 	 enumeration types are handled in the front-end.  */
-       gnu_expr = gnat_to_gnu (First (Expressions (gnat_node)));
-       if (attribute == Attr_Pos)
- 	gnu_expr = maybe_character_value (gnu_expr);
-       gnu_result_type = get_unpadded_type (Etype (gnat_node));
-       gnu_result = convert (gnu_result_type, gnu_expr);
-       break;
- 
      case Attr_Pred:
      case Attr_Succ:
        /* These just add or subtract the constant 1 since representation
--- 1710,1715 ----
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 2212,2218 ****
  	      gnu_result = build1 (INDIRECT_REF, gnu_result_type, gnu_result);
  	    }
  
! 	  vec_safe_grow (gnu_vec, TARGET_VTABLE_USES_DESCRIPTORS);
  	  elt = (gnu_vec->address () + TARGET_VTABLE_USES_DESCRIPTORS - 1);
  	  for (gnu_field = TYPE_FIELDS (gnu_result_type), i = 0;
  	       i < TARGET_VTABLE_USES_DESCRIPTORS;
--- 1767,1773 ----
  	      gnu_result = build1 (INDIRECT_REF, gnu_result_type, gnu_result);
  	    }
  
! 	  vec_safe_grow (gnu_vec, TARGET_VTABLE_USES_DESCRIPTORS, true);
  	  elt = (gnu_vec->address () + TARGET_VTABLE_USES_DESCRIPTORS - 1);
  	  for (gnu_field = TYPE_FIELDS (gnu_result_type), i = 0;
  	       i < TARGET_VTABLE_USES_DESCRIPTORS;
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 2242,2247 ****
--- 1797,1805 ----
      case Attr_Access:
      case Attr_Unchecked_Access:
      case Attr_Code_Address:
+       /* Taking the address of a type does not make sense.  */
+       gcc_assert (TREE_CODE (gnu_prefix) != TYPE_DECL);
+ 
        gnu_result_type = get_unpadded_type (Etype (gnat_node));
        gnu_result
  	= build_unary_op (((attribute == Attr_Address
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 2503,2509 ****
      case Attr_Range_Length:
        prefix_unused = true;
  
!       if (INTEGRAL_TYPE_P (gnu_type) || TREE_CODE (gnu_type) == REAL_TYPE)
  	{
  	  gnu_result_type = get_unpadded_type (Etype (gnat_node));
  
--- 2061,2067 ----
      case Attr_Range_Length:
        prefix_unused = true;
  
!       if (INTEGRAL_TYPE_P (gnu_type) || SCALAR_FLOAT_TYPE_P (gnu_type))
  	{
  	  gnu_result_type = get_unpadded_type (Etype (gnat_node));
  
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 2527,2534 ****
  	Entity_Id gnat_param = Empty;
  	bool unconstrained_ptr_deref = false;
  
! 	/* Make sure any implicit dereference gets done.  */
! 	gnu_prefix = maybe_implicit_deref (gnu_prefix);
  	gnu_prefix = maybe_unconstrained_array (gnu_prefix);
  
  	/* We treat unconstrained array In parameters specially.  We also note
--- 2085,2091 ----
  	Entity_Id gnat_param = Empty;
  	bool unconstrained_ptr_deref = false;
  
! 	gnu_prefix = maybe_padded_object (gnu_prefix);
  	gnu_prefix = maybe_unconstrained_array (gnu_prefix);
  
  	/* We treat unconstrained array In parameters specially.  We also note
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 2893,2903 ****
        break;
  
      case Attr_Component_Size:
!       if (TREE_CODE (gnu_prefix) == COMPONENT_REF
! 	  && TYPE_IS_PADDING_P (TREE_TYPE (TREE_OPERAND (gnu_prefix, 0))))
! 	gnu_prefix = TREE_OPERAND (gnu_prefix, 0);
! 
!       gnu_prefix = maybe_implicit_deref (gnu_prefix);
        gnu_type = TREE_TYPE (gnu_prefix);
  
        if (TREE_CODE (gnu_type) == UNCONSTRAINED_ARRAY_TYPE)
--- 2450,2456 ----
        break;
  
      case Attr_Component_Size:
!       gnu_prefix = maybe_padded_object (gnu_prefix);
        gnu_type = TREE_TYPE (gnu_prefix);
  
        if (TREE_CODE (gnu_type) == UNCONSTRAINED_ARRAY_TYPE)
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 2934,2940 ****
  	= build_unary_op (INDIRECT_REF, NULL_TREE,
  			  convert (build_pointer_type (gnu_result_type),
  				   integer_zero_node));
-       TREE_PRIVATE (gnu_result) = 1;
        break;
  
      case Attr_Mechanism_Code:
--- 2487,2492 ----
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 3047,3053 ****
    *gnu_result_type_p = gnu_result_type;
    return gnu_result;
  }
! 
  /* Subroutine of gnat_to_gnu to translate gnat_node, an N_Case_Statement,
     to a GCC tree, which is returned.  */
  
--- 2599,2605 ----
    *gnu_result_type_p = gnu_result_type;
    return gnu_result;
  }
! 
  /* Subroutine of gnat_to_gnu to translate gnat_node, an N_Case_Statement,
     to a GCC tree, which is returned.  */
  
*************** Case_Statement_to_gnu (Node_Id gnat_node
*** 3172,3178 ****
  
    return gnu_result;
  }
! 
  /* Return true if we are in the body of a loop.  */
  
  static inline bool
--- 2724,2730 ----
  
    return gnu_result;
  }
! 
  /* Return true if we are in the body of a loop.  */
  
  static inline bool
*************** independent_iterations_p (tree stmt_list
*** 3372,3519 ****
    return true;
  }
  
- /* Helper for Loop_Statement_to_gnu to translate the body of a loop,
-    designated by GNAT_LOOP, to which an Acc_Loop pragma applies.  The pragma
-    arguments might instruct us to collapse a nest of loops, where computation
-    statements are expected only within the innermost loop, as in:
- 
-    for I in 1 .. 5 loop
-       pragma Acc_Parallel;
-       pragma Acc_Loop(Collapse => 3);
-       for J in 1 .. 8 loop
-          for K in 1 .. 4 loop
-             X (I, J, K) := Y (I, J, K) + 2;
-          end loop;
-       end loop;
-    end loop;
- 
-    We expect the top of gnu_loop_stack to hold a pointer to the loop info
-    setup for the translation of GNAT_LOOP, which holds a pointer to the
-    initial gnu loop stmt node.  We return the new gnu loop statement to
-    use.  */
- 
- static tree
- Acc_Loop_to_gnu (Node_Id gnat_loop)
- {
-   tree acc_loop = make_node (OACC_LOOP);
-   tree acc_bind_expr = NULL_TREE;
-   Node_Id cur_loop = gnat_loop;
-   int collapse_count = 1;
-   tree initv;
-   tree condv;
-   tree incrv;
- 
-   /* Parse the pragmas, adding clauses to the current gnu_loop_stack through
-      side effects.  */
-   for (Node_Id tmp = First (Statements (gnat_loop));
-        Present (tmp) && Nkind (tmp) == N_Pragma;
-        tmp = Next (tmp))
-     Pragma_to_gnu(tmp);
- 
-   /* Find the number of loops that should be collapsed.  */
-   for (tree tmp = gnu_loop_stack->last ()->omp_loop_clauses; tmp ;
-        tmp = OMP_CLAUSE_CHAIN (tmp))
-     if (OMP_CLAUSE_CODE (tmp) == OMP_CLAUSE_COLLAPSE)
-       collapse_count = tree_to_shwi (OMP_CLAUSE_COLLAPSE_EXPR (tmp));
-     else if (OMP_CLAUSE_CODE (tmp) == OMP_CLAUSE_TILE)
-       collapse_count = list_length (OMP_CLAUSE_TILE_LIST (tmp));
- 
-   initv = make_tree_vec (collapse_count);
-   condv = make_tree_vec (collapse_count);
-   incrv = make_tree_vec (collapse_count);
- 
-   start_stmt_group ();
-   gnat_pushlevel ();
- 
-   /* For each nested loop that should be collapsed ...  */
-   for (int count = 0; count < collapse_count; ++count)
-     {
-       Node_Id lps =
-         Loop_Parameter_Specification (Iteration_Scheme (cur_loop));
-       tree low =
-         Acc_gnat_to_gnu (Low_Bound (Discrete_Subtype_Definition (lps)));
-       tree high =
-         Acc_gnat_to_gnu (High_Bound (Discrete_Subtype_Definition (lps)));
-       tree variable =
- 	gnat_to_gnu_entity (Defining_Identifier (lps), NULL_TREE, true);
- 
-       /* Build the initial value of the variable of the invariant.  */
-       TREE_VEC_ELT (initv, count) = build2 (MODIFY_EXPR,
- 					    TREE_TYPE (variable),
- 					    variable,
- 					    low);
-       add_stmt (TREE_VEC_ELT (initv, count));
- 
-       /* Build the invariant of the loop.  */
-       TREE_VEC_ELT (condv, count) = build2 (LE_EXPR,
- 					    boolean_type_node,
- 					    variable,
- 					    high);
- 
-       /* Build the incrementation expression of the loop.  */
-       TREE_VEC_ELT (incrv, count) =
- 	build2 (MODIFY_EXPR,
- 		TREE_TYPE (variable),
- 		variable,
- 		build2 (PLUS_EXPR,
- 			TREE_TYPE (variable),
- 			variable,
- 			build_int_cst (TREE_TYPE (variable), 1)));
- 
-       /* Don't process the innermost loop because its statements belong to
-          another statement group.  */
-       if (count < collapse_count - 1)
- 	/* Process the current loop's body.  */
- 	for (Node_Id stmt = First (Statements (cur_loop));
- 	     Present (stmt); stmt = Next (stmt))
- 	  {
- 	    /* If we are processsing the outermost loop, it is ok for it to
- 	       contain pragmas.  */
- 	    if (Nkind (stmt) == N_Pragma && count == 0)
- 	      ;
- 	    /* The frontend might have inserted a N_Object_Declaration in the
- 	       loop's body to declare the iteration variable of the next loop.
- 	       It will need to be hoisted before the collapsed loops.  */
- 	    else if (Nkind (stmt) == N_Object_Declaration)
- 	      Acc_gnat_to_gnu (stmt);
- 	    else if (Nkind (stmt) == N_Loop_Statement)
- 	      cur_loop = stmt;
- 	    /* Every other kind of statement is prohibited in collapsed
-                loops.  */
- 	    else if (count < collapse_count - 1)
- 	      gcc_unreachable();
- 	  }
-     }
-   gnat_poplevel ();
-   acc_bind_expr = end_stmt_group ();
- 
-   /* Parse the innermost loop.  */
-   start_stmt_group();
-   for (Node_Id stmt = First (Statements (cur_loop));
-        Present (stmt);
-        stmt = Next (stmt))
-     {
-       /* When the innermost loop is the only loop, do not parse the pragmas
-          again.  */
-       if (Nkind (stmt) == N_Pragma && collapse_count == 1)
- 	continue;
-       add_stmt (Acc_gnat_to_gnu (stmt));
-     }
- 
-   TREE_TYPE (acc_loop) = void_type_node;
-   OMP_FOR_INIT (acc_loop) = initv;
-   OMP_FOR_COND (acc_loop) = condv;
-   OMP_FOR_INCR (acc_loop) = incrv;
-   OMP_FOR_BODY (acc_loop) = end_stmt_group ();
-   OMP_FOR_PRE_BODY (acc_loop) = NULL;
-   OMP_FOR_ORIG_DECLS (acc_loop) = NULL;
-   OMP_FOR_CLAUSES (acc_loop) = gnu_loop_stack->last ()->omp_loop_clauses;
- 
-   BIND_EXPR_BODY (acc_bind_expr) = acc_loop;
- 
-   return acc_bind_expr;
- }
- 
  /* Helper for Loop_Statement_to_gnu, to translate the body of a loop not
     subject to any sort of parallelization directive or restriction, designated
     by GNAT_NODE.
--- 2924,2929 ----
*************** Loop_Statement_to_gnu (Node_Id gnat_node
*** 3910,3943 ****
    gnu_loop_info->stmt = gnu_loop_stmt;
  
    /* Perform the core loop body translation.  */
!   if (Is_OpenAcc_Loop (gnat_node))
!     gnu_loop_stmt = Acc_Loop_to_gnu (gnat_node);
!   else
!     gnu_loop_stmt = Regular_Loop_to_gnu (gnat_node, &gnu_cond_expr);
! 
!   /* A gnat_node that has its OpenAcc_Environment flag set needs to be
!      offloaded.  Note that the OpenAcc_Loop flag is not necessarily set.  */
!   if (Is_OpenAcc_Environment (gnat_node))
!     {
!       tree_code code = gnu_loop_stack->last ()->omp_code;
!       tree tmp = make_node (code);
!       TREE_TYPE (tmp) = void_type_node;
!       if (code == OACC_PARALLEL || code == OACC_KERNELS)
! 	{
! 	  OMP_BODY (tmp) = gnu_loop_stmt;
! 	  OMP_CLAUSES (tmp) = gnu_loop_stack->last ()->omp_construct_clauses;
! 	}
!       else if (code == OACC_DATA)
! 	{
! 	  OACC_DATA_BODY (tmp) = gnu_loop_stmt;
! 	  OACC_DATA_CLAUSES (tmp) =
! 	    gnu_loop_stack->last ()->omp_construct_clauses;
! 	}
!       else
! 	gcc_unreachable();
!       set_expr_location_from_node (tmp, gnat_node);
!       gnu_loop_stmt = tmp;
!     }
  
    /* If we have an outer COND_EXPR, that's our result and this loop is its
       "true" statement.  Otherwise, the result is the LOOP_STMT.  */
--- 3320,3326 ----
    gnu_loop_info->stmt = gnu_loop_stmt;
  
    /* Perform the core loop body translation.  */
!   gnu_loop_stmt = Regular_Loop_to_gnu (gnat_node, &gnu_cond_expr);
  
    /* If we have an outer COND_EXPR, that's our result and this loop is its
       "true" statement.  Otherwise, the result is the LOOP_STMT.  */
*************** Loop_Statement_to_gnu (Node_Id gnat_node
*** 3954,3960 ****
  
    return gnu_result;
  }
! 
  /* This page implements a form of Named Return Value optimization modeled
     on the C++ optimization of the same name.  The main difference is that
     we disregard any semantical considerations when applying it here, the
--- 3337,3343 ----
  
    return gnu_result;
  }
! 
  /* This page implements a form of Named Return Value optimization modeled
     on the C++ optimization of the same name.  The main difference is that
     we disregard any semantical considerations when applying it here, the
*************** finalize_nrv_unc_r (tree *tp, int *walk_
*** 4288,4294 ****
  static void
  walk_nesting_tree (struct cgraph_node *node, walk_tree_fn func, void *data)
  {
!   for (node = node->nested; node; node = node->next_nested)
      {
        walk_tree_without_duplicates (&DECL_SAVED_TREE (node->decl), func, data);
        walk_nesting_tree (node, func, data);
--- 3671,3678 ----
  static void
  walk_nesting_tree (struct cgraph_node *node, walk_tree_fn func, void *data)
  {
!   for (node = first_nested_function (node);
!        node; node = next_nested_function (node))
      {
        walk_tree_without_duplicates (&DECL_SAVED_TREE (node->decl), func, data);
        walk_nesting_tree (node, func, data);
*************** build_return_expr (tree ret_obj, tree re
*** 4445,4451 ****
  
    return build1 (RETURN_EXPR, void_type_node, result_expr);
  }
! 
  /* Subroutine of gnat_to_gnu to process gnat_node, an N_Subprogram_Body.  We
     don't return anything.  */
  
--- 3829,3835 ----
  
    return build1 (RETURN_EXPR, void_type_node, result_expr);
  }
! 
  /* Subroutine of gnat_to_gnu to process gnat_node, an N_Subprogram_Body.  We
     don't return anything.  */
  
*************** Subprogram_Body_to_gnu (Node_Id gnat_nod
*** 4609,4614 ****
--- 3993,4003 ----
    gnat_poplevel ();
    gnu_result = end_stmt_group ();
  
+   /* Attempt setting the end_locus of our GCC body tree, typically a BIND_EXPR,
+      then the end_locus of our GCC subprogram declaration tree.  */
+   set_end_locus_from_node (gnu_result, gnat_node);
+   set_end_locus_from_node (gnu_subprog_decl, gnat_node);
+ 
    /* If we populated the parameter attributes cache, we need to make sure that
       the cached expressions are evaluated on all the possible paths leading to
       their uses.  So we force their evaluation on entry of the function.  */
*************** Subprogram_Body_to_gnu (Node_Id gnat_nod
*** 4703,4714 ****
  
    gnu_return_label_stack->pop ();
  
-   /* Attempt setting the end_locus of our GCC body tree, typically a
-      BIND_EXPR or STATEMENT_LIST, then the end_locus of our GCC subprogram
-      declaration tree.  */
-   set_end_locus_from_node (gnu_result, gnat_node);
-   set_end_locus_from_node (gnu_subprog_decl, gnat_node);
- 
    /* On SEH targets, install an exception handler around the main entry
       point to catch unhandled exceptions.  */
    if (DECL_NAME (gnu_subprog_decl) == main_identifier_node
--- 4092,4097 ----
*************** Subprogram_Body_to_gnu (Node_Id gnat_nod
*** 4770,4776 ****
    else
      rest_of_subprog_body_compilation (gnu_subprog_decl);
  }
! 
  /* The type of an atomic access.  */
  
  typedef enum { NOT_ATOMIC, SIMPLE_ATOMIC, OUTER_ATOMIC } atomic_acces_t;
--- 4153,4159 ----
    else
      rest_of_subprog_body_compilation (gnu_subprog_decl);
  }
! 
  /* The type of an atomic access.  */
  
  typedef enum { NOT_ATOMIC, SIMPLE_ATOMIC, OUTER_ATOMIC } atomic_acces_t;
*************** not_atomic:
*** 4960,4967 ****
    *type = NOT_ATOMIC;
    *sync = false;
  }
! 
! /* Return true if GNAT_NODE requires simple atomic access and, if so, set SYNC
     according to the associated synchronization setting.  */
  
  static inline bool
--- 4343,4350 ----
    *type = NOT_ATOMIC;
    *sync = false;
  }
! 
! /* Return true if GNAT_NODE requires simple atomic access and, if so, set SYNC
     according to the associated synchronization setting.  */
  
  static inline bool
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 5034,5042 ****
    tree gnu_after_list = NULL_TREE;
    tree gnu_retval = NULL_TREE;
    tree gnu_call, gnu_result;
-   bool by_descriptor = false;
    bool went_into_elab_proc = false;
    bool pushed_binding_level = false;
    Entity_Id gnat_formal;
    Node_Id gnat_actual;
    atomic_acces_t aa_type;
--- 4417,4426 ----
    tree gnu_after_list = NULL_TREE;
    tree gnu_retval = NULL_TREE;
    tree gnu_call, gnu_result;
    bool went_into_elab_proc = false;
    bool pushed_binding_level = false;
+   bool variadic;
+   bool by_descriptor;
    Entity_Id gnat_formal;
    Node_Id gnat_actual;
    atomic_acces_t aa_type;
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 5082,5101 ****
       entity being called.  */
    if (Nkind (Name (gnat_node)) == N_Explicit_Dereference)
      {
        gnat_formal = First_Formal_With_Extras (Etype (Name (gnat_node)));
  
        /* If the access type doesn't require foreign-compatible representation,
  	 be prepared for descriptors.  */
!       if (targetm.calls.custom_function_descriptors > 0
! 	  && Can_Use_Internal_Rep
! 	     (Underlying_Type (Etype (Prefix (Name (gnat_node))))))
! 	by_descriptor = true;
      }
    else if (Nkind (Name (gnat_node)) == N_Attribute_Reference)
!     /* Assume here that this must be 'Elab_Body or 'Elab_Spec.  */
!     gnat_formal = Empty;
    else
!     gnat_formal = First_Formal_With_Extras (Entity (Name (gnat_node)));
  
    /* The lifetime of the temporaries created for the call ends right after the
       return value is copied, so we can give them the scope of the elaboration
--- 4466,4497 ----
       entity being called.  */
    if (Nkind (Name (gnat_node)) == N_Explicit_Dereference)
      {
+       const Entity_Id gnat_prefix_type
+ 	= Underlying_Type (Etype (Prefix (Name (gnat_node))));
+ 
        gnat_formal = First_Formal_With_Extras (Etype (Name (gnat_node)));
+       variadic = IN (Convention (gnat_prefix_type), Convention_C_Variadic);
  
        /* If the access type doesn't require foreign-compatible representation,
  	 be prepared for descriptors.  */
!       by_descriptor
! 	= targetm.calls.custom_function_descriptors > 0
! 	  && Can_Use_Internal_Rep (gnat_prefix_type);
      }
    else if (Nkind (Name (gnat_node)) == N_Attribute_Reference)
!     {
!       /* Assume here that this must be 'Elab_Body or 'Elab_Spec.  */
!       gnat_formal = Empty;
!       variadic = false;
!       by_descriptor = false;
!     }
    else
!     {
!       gnat_formal = First_Formal_With_Extras (Entity (Name (gnat_node)));
!       variadic
! 	= IN (Convention (Entity (Name (gnat_node))), Convention_C_Variadic);
!       by_descriptor = false;
!     }
  
    /* The lifetime of the temporaries created for the call ends right after the
       return value is copied, so we can give them the scope of the elaboration
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 5126,5132 ****
  	  and the return type has variable size, because the gimplifier
  	  doesn't handle these cases.
  
!        4. There is no target and we have misaligned In Out or Out parameters
  	  passed by reference, because we need to preserve the return value
  	  before copying back the parameters.  However, in this case, we'll
  	  defer creating the temporary, see below.
--- 4522,4532 ----
  	  and the return type has variable size, because the gimplifier
  	  doesn't handle these cases.
  
!        4. There is a target which is a bit-field and the function returns an
! 	  unconstrained record type with default discriminant, because the
! 	  return may copy more data than the bit-field can contain.
! 
!        5. There is no target and we have misaligned In Out or Out parameters
  	  passed by reference, because we need to preserve the return value
  	  before copying back the parameters.  However, in this case, we'll
  	  defer creating the temporary, see below.
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 5149,5155 ****
  		  || (TREE_CODE (TREE_TYPE (gnu_target)) == ARRAY_TYPE
  		      && TREE_CODE (TYPE_SIZE (TREE_TYPE (gnu_target)))
  			 == INTEGER_CST))
! 	      && TREE_CODE (TYPE_SIZE (gnu_result_type)) != INTEGER_CST)))
      {
        gnu_retval = create_temporary ("R", gnu_result_type);
        DECL_RETURN_VALUE_P (gnu_retval) = 1;
--- 4549,4559 ----
  		  || (TREE_CODE (TREE_TYPE (gnu_target)) == ARRAY_TYPE
  		      && TREE_CODE (TYPE_SIZE (TREE_TYPE (gnu_target)))
  			 == INTEGER_CST))
! 	      && TREE_CODE (TYPE_SIZE (gnu_result_type)) != INTEGER_CST)
! 	  || (gnu_target
! 	      && TREE_CODE (gnu_target) == COMPONENT_REF
! 	      && DECL_BIT_FIELD (TREE_OPERAND (gnu_target, 1))
! 	      && type_is_padding_self_referential (gnu_result_type))))
      {
        gnu_retval = create_temporary ("R", gnu_result_type);
        DECL_RETURN_VALUE_P (gnu_retval) = 1;
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 5417,5423 ****
  	 subprogram.  */
        else if (is_true_formal_parm && DECL_BY_COMPONENT_PTR_P (gnu_formal))
  	{
! 	  gnu_actual = maybe_implicit_deref (gnu_actual);
  	  gnu_actual = maybe_unconstrained_array (gnu_actual);
  
  	  /* Take the address of the object and convert to the proper pointer
--- 4821,4827 ----
  	 subprogram.  */
        else if (is_true_formal_parm && DECL_BY_COMPONENT_PTR_P (gnu_formal))
  	{
! 	  gnu_actual = maybe_padded_object (gnu_actual);
  	  gnu_actual = maybe_unconstrained_array (gnu_actual);
  
  	  /* Take the address of the object and convert to the proper pointer
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 5430,5480 ****
  	  gnu_actual = build_unary_op (ADDR_EXPR, gnu_formal_type, gnu_actual);
  	}
  
!       /* Otherwise the parameter is passed by copy.  */
!       else
  	{
- 	  tree gnu_size;
- 
  	  if (!in_param)
  	    gnu_name_list = tree_cons (NULL_TREE, gnu_name, gnu_name_list);
  
! 	  /* If we didn't create a PARM_DECL for the formal, this means that
! 	     it is an Out parameter not passed by reference and that need not
! 	     be copied in.  In this case, the value of the actual need not be
! 	     read.  However, we still need to make sure that its side-effects
! 	     are evaluated before the call, so we evaluate its address.  */
! 	  if (!is_true_formal_parm)
  	    {
! 	      if (TREE_SIDE_EFFECTS (gnu_name))
! 		{
! 		  tree addr = build_unary_op (ADDR_EXPR, NULL_TREE, gnu_name);
! 		  append_to_statement_list (addr, &gnu_stmt_list);
! 		}
! 	      continue;
  	    }
  
! 	  gnu_actual = convert (gnu_formal_type, gnu_actual);
  
! 	  /* If this is 'Null_Parameter, pass a zero even though we are
! 	     dereferencing it.  */
! 	  if (TREE_CODE (gnu_actual) == INDIRECT_REF
! 	      && TREE_PRIVATE (gnu_actual)
! 	      && (gnu_size = TYPE_SIZE (TREE_TYPE (gnu_actual)))
! 	      && TREE_CODE (gnu_size) == INTEGER_CST
! 	      && compare_tree_int (gnu_size, BITS_PER_WORD) <= 0)
  	    {
! 	      tree type_for_size
! 		= gnat_type_for_size (TREE_INT_CST_LOW (gnu_size), 1);
  	      gnu_actual
! 		= unchecked_convert (DECL_ARG_TYPE (gnu_formal),
! 				     build_int_cst (type_for_size, 0),
! 				     false);
  	    }
  
! 	  /* If this is a front-end built-in function, there is no need to
! 	     convert to the type used to pass the argument.  */
! 	  else if (!frontend_builtin)
! 	    gnu_actual = convert (DECL_ARG_TYPE (gnu_formal), gnu_actual);
  	}
  
        gnu_actual_vec.safe_push (gnu_actual);
--- 4834,4943 ----
  	  gnu_actual = build_unary_op (ADDR_EXPR, gnu_formal_type, gnu_actual);
  	}
  
!       /* Then see if the parameter is passed by copy.  */
!       else if (is_true_formal_parm)
  	{
  	  if (!in_param)
  	    gnu_name_list = tree_cons (NULL_TREE, gnu_name, gnu_name_list);
  
! 	  gnu_actual = convert (gnu_formal_type, gnu_actual);
! 
! 	  /* If this is a front-end built-in function, there is no need to
! 	     convert to the type used to pass the argument.  */
! 	  if (!frontend_builtin)
! 	    gnu_actual = convert (DECL_ARG_TYPE (gnu_formal), gnu_actual);
! 	}
! 
!       /* Then see if this is an unnamed parameter in a variadic C function.  */
!       else if (variadic)
! 	{
! 	  /* This is based on the processing done in gnat_to_gnu_param, but
! 	     we expect the mechanism to be set in (almost) all cases.  */
! 	  const Mechanism_Type mech = Mechanism (gnat_formal);
! 
! 	  /* Strip off possible padding type.  */
! 	  if (TYPE_IS_PADDING_P (gnu_formal_type))
! 	    gnu_formal_type = TREE_TYPE (TYPE_FIELDS (gnu_formal_type));
! 
! 	  /* Arrays are passed as pointers to element type.  First check for
! 	     unconstrained array and get the underlying array.  */
! 	  if (TREE_CODE (gnu_formal_type) == UNCONSTRAINED_ARRAY_TYPE)
! 	    gnu_formal_type
! 	      = TREE_TYPE
! 		(TREE_TYPE (TYPE_FIELDS (TREE_TYPE (gnu_formal_type))));
! 
! 	  /* Arrays are passed as pointers to element type.  */
! 	  if (mech != By_Copy && TREE_CODE (gnu_formal_type) == ARRAY_TYPE)
  	    {
! 	      gnu_actual = maybe_padded_object (gnu_actual);
! 	      gnu_actual = maybe_unconstrained_array (gnu_actual);
! 
! 	      /* Strip off any multi-dimensional entries, then strip
! 		 off the last array to get the component type.  */
! 	      while (TREE_CODE (TREE_TYPE (gnu_formal_type)) == ARRAY_TYPE
! 		     && TYPE_MULTI_ARRAY_P (TREE_TYPE (gnu_formal_type)))
! 		gnu_formal_type = TREE_TYPE (gnu_formal_type);
! 
! 	      gnu_formal_type = TREE_TYPE (gnu_formal_type);
! 	      gnu_formal_type = build_pointer_type (gnu_formal_type);
! 	      gnu_actual
! 		= build_unary_op (ADDR_EXPR, gnu_formal_type, gnu_actual);
  	    }
  
! 	  /* Fat pointers are passed as thin pointers.  */
! 	  else if (TYPE_IS_FAT_POINTER_P (gnu_formal_type))
! 	    gnu_formal_type
! 	      = make_type_from_size (gnu_formal_type,
! 				     size_int (POINTER_SIZE), 0);
  
! 	  /* If we were requested or muss pass by reference, do so.
! 	     If we were requested to pass by copy, do so.
! 	     Otherwise, pass In Out or Out parameters or aggregates by
! 	     reference.  */
! 	  else if (mech == By_Reference
! 		   || must_pass_by_ref (gnu_formal_type)
! 		   || (mech != By_Copy
! 		       && (!in_param || AGGREGATE_TYPE_P (gnu_formal_type))))
  	    {
! 	      gnu_formal_type = build_reference_type (gnu_formal_type);
  	      gnu_actual
! 		= build_unary_op (ADDR_EXPR, gnu_formal_type, gnu_actual);
  	    }
  
! 	  /* Otherwise pass by copy after applying default C promotions.  */
! 	  else
! 	    {
! 	      if (INTEGRAL_TYPE_P (gnu_formal_type)
! 		  && TYPE_PRECISION (gnu_formal_type)
! 		     < TYPE_PRECISION (integer_type_node))
! 		gnu_formal_type = integer_type_node;
! 
! 	      else if (SCALAR_FLOAT_TYPE_P (gnu_formal_type)
! 		       && TYPE_PRECISION (gnu_formal_type)
! 			  < TYPE_PRECISION (double_type_node))
! 		gnu_formal_type = double_type_node;
! 	    }
! 
! 	  gnu_actual = convert (gnu_formal_type, gnu_actual);
! 	}
! 
!       /* If we didn't create a PARM_DECL for the formal, this means that
! 	 it is an Out parameter not passed by reference and that need not
! 	 be copied in.  In this case, the value of the actual need not be
! 	 read.  However, we still need to make sure that its side-effects
! 	 are evaluated before the call, so we evaluate its address.  */
!       else
! 	{
! 	  if (!in_param)
! 	    gnu_name_list = tree_cons (NULL_TREE, gnu_name, gnu_name_list);
! 
! 	  if (TREE_SIDE_EFFECTS (gnu_name))
! 	    {
! 	      tree addr = build_unary_op (ADDR_EXPR, NULL_TREE, gnu_name);
! 	      append_to_statement_list (addr, &gnu_stmt_list);
! 	    }
! 
! 	  continue;
  	}
  
        gnu_actual_vec.safe_push (gnu_actual);
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 5595,5605 ****
  	    tree gnu_actual
  	      = maybe_unconstrained_array (TREE_VALUE (gnu_name_list));
  
! 	    /* If the result is a padded type, remove the padding.  */
! 	    if (TYPE_IS_PADDING_P (TREE_TYPE (gnu_result)))
! 	      gnu_result
! 		= convert (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (gnu_result))),
! 			   gnu_result);
  
  	    /* If the actual is a type conversion, the real target object is
  	       denoted by the inner Expression and we need to convert the
--- 5058,5065 ----
  	    tree gnu_actual
  	      = maybe_unconstrained_array (TREE_VALUE (gnu_name_list));
  
! 	    /* If the result is padded, remove the padding.  */
! 	    gnu_result = maybe_padded_object (gnu_result);
  
  	    /* If the actual is a type conversion, the real target object is
  	       denoted by the inner Expression and we need to convert the
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 5762,5768 ****
  
    return gnu_result;
  }
! 
  /* Subroutine of gnat_to_gnu to translate gnat_node, an
     N_Handled_Sequence_Of_Statements, to a GCC tree, which is returned.  */
  
--- 5222,5228 ----
  
    return gnu_result;
  }
! 
  /* Subroutine of gnat_to_gnu to translate gnat_node, an
     N_Handled_Sequence_Of_Statements, to a GCC tree, which is returned.  */
  
*************** Handled_Sequence_Of_Statements_to_gnu (N
*** 6001,6007 ****
  
    return gnu_result;
  }
! 
  /* Subroutine of gnat_to_gnu to translate gnat_node, an N_Exception_Handler,
     to a GCC tree, which is returned.  This is the variant for front-end sjlj
     exception handling.  */
--- 5461,5467 ----
  
    return gnu_result;
  }
! 
  /* Subroutine of gnat_to_gnu to translate gnat_node, an N_Exception_Handler,
     to a GCC tree, which is returned.  This is the variant for front-end sjlj
     exception handling.  */
*************** Exception_Handler_to_gnu_fe_sjlj (Node_I
*** 6070,6076 ****
  
    return build3 (COND_EXPR, void_type_node, gnu_choice, gnu_body, NULL_TREE);
  }
! 
  /* Return true if no statement in GNAT_LIST can alter the control flow.  */
  
  static bool
--- 5530,5536 ----
  
    return build3 (COND_EXPR, void_type_node, gnu_choice, gnu_body, NULL_TREE);
  }
! 
  /* Return true if no statement in GNAT_LIST can alter the control flow.  */
  
  static bool
*************** Exception_Handler_to_gnu_gcc (Node_Id gn
*** 6277,6283 ****
    return
      build2 (CATCH_EXPR, void_type_node, gnu_etypes_list, end_stmt_group ());
  }
! 
  /* Subroutine of gnat_to_gnu to generate code for an N_Compilation unit.  */
  
  static void
--- 5737,5743 ----
    return
      build2 (CATCH_EXPR, void_type_node, gnu_etypes_list, end_stmt_group ());
  }
! 
  /* Subroutine of gnat_to_gnu to generate code for an N_Compilation unit.  */
  
  static void
*************** Compilation_Unit_to_gnu (Node_Id gnat_no
*** 6407,6413 ****
    /* Force the processing for all nodes that remain in the queue.  */
    process_deferred_decl_context (true);
  }
! 
  /* Mark COND, a boolean expression, as predicating a call to a noreturn
     function, i.e. predict that it is very likely false, and return it.
  
--- 5867,5873 ----
    /* Force the processing for all nodes that remain in the queue.  */
    process_deferred_decl_context (true);
  }
! 
  /* Mark COND, a boolean expression, as predicating a call to a noreturn
     function, i.e. predict that it is very likely false, and return it.
  
*************** static tree
*** 6466,6478 ****
  Raise_Error_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p)
  {
    const Node_Kind kind = Nkind (gnat_node);
-   const int reason = UI_To_Int (Reason (gnat_node));
    const Node_Id gnat_cond = Condition (gnat_node);
    const bool with_extra_info
      = Exception_Extra_Info
        && !No_Exception_Handlers_Set ()
        && No (get_exception_label (kind));
    tree gnu_result = NULL_TREE, gnu_cond = NULL_TREE;
  
    /* The following processing is not required for correctness.  Its purpose is
       to give more precise error messages and to record some information.  */
--- 5926,5939 ----
  Raise_Error_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p)
  {
    const Node_Kind kind = Nkind (gnat_node);
    const Node_Id gnat_cond = Condition (gnat_node);
+   const int reason = UI_To_Int (Reason (gnat_node));
    const bool with_extra_info
      = Exception_Extra_Info
        && !No_Exception_Handlers_Set ()
        && No (get_exception_label (kind));
    tree gnu_result = NULL_TREE, gnu_cond = NULL_TREE;
+   Node_Id gnat_rcond;
  
    /* The following processing is not required for correctness.  Its purpose is
       to give more precise error messages and to record some information.  */
*************** Raise_Error_to_gnu (Node_Id gnat_node, t
*** 6486,6536 ****
      case CE_Index_Check_Failed:
      case CE_Range_Check_Failed:
      case CE_Invalid_Data:
!       if (Present (gnat_cond) && Nkind (gnat_cond) == N_Op_Not)
  	{
! 	  Node_Id gnat_index, gnat_type;
! 	  tree gnu_type, gnu_index, gnu_low_bound, gnu_high_bound, disp;
! 	  bool neg_p;
  	  struct loop_info_d *loop;
  
! 	  switch (Nkind (Right_Opnd (gnat_cond)))
  	    {
  	    case N_In:
! 	      Range_to_gnu (Right_Opnd (Right_Opnd (gnat_cond)),
  			    &gnu_low_bound, &gnu_high_bound);
  	      break;
  
  	    case N_Op_Ge:
! 	      gnu_low_bound = gnat_to_gnu (Right_Opnd (Right_Opnd (gnat_cond)));
! 	      gnu_high_bound = NULL_TREE;
  	      break;
  
  	    case N_Op_Le:
! 	      gnu_low_bound = NULL_TREE;
! 	      gnu_high_bound = gnat_to_gnu (Right_Opnd (Right_Opnd (gnat_cond)));
  	      break;
  
  	    default:
! 	      goto common;
  	    }
  
! 	  gnat_index = Left_Opnd (Right_Opnd (gnat_cond));
! 	  gnat_type = Etype (gnat_index);
! 	  gnu_type = maybe_character_type (get_unpadded_type (gnat_type));
! 	  gnu_index = gnat_to_gnu (gnat_index);
! 
  	  if (TREE_TYPE (gnu_index) != gnu_type)
  	    {
! 	      if (gnu_low_bound)
! 		gnu_low_bound = convert (gnu_type, gnu_low_bound);
! 	      if (gnu_high_bound)
! 		gnu_high_bound = convert (gnu_type, gnu_high_bound);
  	      gnu_index = convert (gnu_type, gnu_index);
  	    }
  
  	  if (with_extra_info
- 	      && gnu_low_bound
- 	      && gnu_high_bound
  	      && Known_Esize (gnat_type)
  	      && UI_To_Int (Esize (gnat_type)) <= 32)
  	    gnu_result
--- 5947,5997 ----
      case CE_Index_Check_Failed:
      case CE_Range_Check_Failed:
      case CE_Invalid_Data:
!       if (No (gnat_cond) || Nkind (gnat_cond) != N_Op_Not)
! 	break;
!       gnat_rcond = Right_Opnd (gnat_cond);
!       if (Nkind (gnat_rcond) == N_In
! 	  || Nkind (gnat_rcond) == N_Op_Ge
! 	  || Nkind (gnat_rcond) == N_Op_Le)
  	{
! 	  const Node_Id gnat_index = Left_Opnd (gnat_rcond);
! 	  const Node_Id gnat_type = Etype (gnat_index);
! 	  tree gnu_index = gnat_to_gnu (gnat_index);
! 	  tree gnu_type = get_unpadded_type (gnat_type);
! 	  tree gnu_low_bound, gnu_high_bound, disp;
  	  struct loop_info_d *loop;
+ 	  bool neg_p;
  
! 	  switch (Nkind (gnat_rcond))
  	    {
  	    case N_In:
! 	      Range_to_gnu (Right_Opnd (gnat_rcond),
  			    &gnu_low_bound, &gnu_high_bound);
  	      break;
  
  	    case N_Op_Ge:
! 	      gnu_low_bound = gnat_to_gnu (Right_Opnd (gnat_rcond));
! 	      gnu_high_bound = TYPE_MAX_VALUE (gnu_type);
  	      break;
  
  	    case N_Op_Le:
! 	      gnu_low_bound = TYPE_MIN_VALUE (gnu_type);
! 	      gnu_high_bound = gnat_to_gnu (Right_Opnd (gnat_rcond));
  	      break;
  
  	    default:
! 	      gcc_unreachable ();
  	    }
  
! 	  gnu_type = maybe_character_type (gnu_type);
  	  if (TREE_TYPE (gnu_index) != gnu_type)
  	    {
! 	      gnu_low_bound = convert (gnu_type, gnu_low_bound);
! 	      gnu_high_bound = convert (gnu_type, gnu_high_bound);
  	      gnu_index = convert (gnu_type, gnu_index);
  	    }
  
  	  if (with_extra_info
  	      && Known_Esize (gnat_type)
  	      && UI_To_Int (Esize (gnat_type)) <= 32)
  	    gnu_result
*************** Raise_Error_to_gnu (Node_Id gnat_node, t
*** 6595,6602 ****
        break;
      }
  
!   /* The following processing does the common work.  */
! common:
    if (!gnu_result)
      gnu_result = build_call_raise (reason, gnat_node, kind);
    set_expr_location_from_node (gnu_result, gnat_node);
--- 6056,6063 ----
        break;
      }
  
!   /* The following processing does the real work, but we must nevertheless make
!      sure not to override the result of the previous processing.  */
    if (!gnu_result)
      gnu_result = build_call_raise (reason, gnat_node, kind);
    set_expr_location_from_node (gnu_result, gnat_node);
*************** common:
*** 6620,6626 ****
  
    return gnu_result;
  }
! 
  /* Return true if GNAT_NODE is on the LHS of an assignment or an actual
     parameter of a call.  */
  
--- 6081,6087 ----
  
    return gnu_result;
  }
! 
  /* Return true if GNAT_NODE is on the LHS of an assignment or an actual
     parameter of a call.  */
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6923,6941 ****
  	  int i;
  	  char *string;
  	  if (length >= ALLOCA_THRESHOLD)
! 	    string = XNEWVEC (char, length + 1);
  	  else
! 	    string = (char *) alloca (length + 1);
  
  	  /* Build the string with the characters in the literal.  Note
  	     that Ada strings are 1-origin.  */
  	  for (i = 0; i < length; i++)
  	    string[i] = Get_String_Char (gnat_string, i + 1);
  
- 	  /* Put a null at the end of the string in case it's in a context
- 	     where GCC will want to treat it as a C string.  */
- 	  string[i] = 0;
- 
  	  gnu_result = build_string (length, string);
  
  	  /* Strings in GCC don't normally have types, but we want
--- 6384,6398 ----
  	  int i;
  	  char *string;
  	  if (length >= ALLOCA_THRESHOLD)
! 	    string = XNEWVEC (char, length);
  	  else
! 	    string = (char *) alloca (length);
  
  	  /* Build the string with the characters in the literal.  Note
  	     that Ada strings are 1-origin.  */
  	  for (i = 0; i < length; i++)
  	    string[i] = Get_String_Char (gnat_string, i + 1);
  
  	  gnu_result = build_string (length, string);
  
  	  /* Strings in GCC don't normally have types, but we want
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7012,7017 ****
--- 6469,6475 ----
  
  	  gnu_expr = gnat_to_gnu (Expression (gnat_node));
  
+ 	  /* First deal with erroneous expressions.  */
  	  if (TREE_CODE (gnu_expr) == ERROR_MARK)
  	    {
  	      /* If this is a named number for which we cannot manipulate
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7021,7026 ****
--- 6479,6489 ----
  	      else if (type_annotate_only)
  		gnu_expr = NULL_TREE;
  	    }
+ 
+ 	  /* Then a special case: we do not want the SLOC of the expression
+ 	     of the tag to pop up every time it is referenced somewhere.  */
+ 	  else if (EXPR_P (gnu_expr) && Is_Tag (gnat_temp))
+ 	    SET_EXPR_LOCATION (gnu_expr, UNKNOWN_LOCATION);
  	}
        else
  	gnu_expr = NULL_TREE;
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7070,7100 ****
  		&& (Is_Array_Type (Etype (gnat_temp))
  		    || Is_Record_Type (Etype (gnat_temp))
  		    || Is_Concurrent_Type (Etype (gnat_temp)))))
! 	{
! 	  tree gnu_temp
! 	    = gnat_to_gnu_entity (gnat_temp,
! 				  gnat_to_gnu (Renamed_Object (gnat_temp)),
! 				  true);
! 	  /* See case 2 of renaming in gnat_to_gnu_entity.  */
! 	  if (TREE_SIDE_EFFECTS (gnu_temp))
! 	    gnu_result = build_unary_op (ADDR_EXPR, NULL_TREE, gnu_temp);
! 	}
        break;
  
      case N_Exception_Renaming_Declaration:
        gnat_temp = Defining_Entity (gnat_node);
        gnu_result = alloc_stmt_list ();
  
-       /* See the above case for the rationale.  */
        if (Present (Renamed_Entity (gnat_temp)))
! 	{
! 	  tree gnu_temp
! 	    = gnat_to_gnu_entity (gnat_temp,
! 				  gnat_to_gnu (Renamed_Entity (gnat_temp)),
! 				  true);
! 	  if (TREE_SIDE_EFFECTS (gnu_temp))
! 	    gnu_result = build_unary_op (ADDR_EXPR, NULL_TREE, gnu_temp);
! 	}
        break;
  
      case N_Subprogram_Renaming_Declaration:
--- 6533,6551 ----
  		&& (Is_Array_Type (Etype (gnat_temp))
  		    || Is_Record_Type (Etype (gnat_temp))
  		    || Is_Concurrent_Type (Etype (gnat_temp)))))
! 	gnat_to_gnu_entity (gnat_temp,
! 			    gnat_to_gnu (Renamed_Object (gnat_temp)),
! 			    true);
        break;
  
      case N_Exception_Renaming_Declaration:
        gnat_temp = Defining_Entity (gnat_node);
        gnu_result = alloc_stmt_list ();
  
        if (Present (Renamed_Entity (gnat_temp)))
! 	gnat_to_gnu_entity (gnat_temp,
! 			    gnat_to_gnu (Renamed_Entity (gnat_temp)),
! 			    true);
        break;
  
      case N_Subprogram_Renaming_Declaration:
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7155,7168 ****
  
      case N_Indexed_Component:
        {
! 	tree gnu_array_object
! 	  = gnat_to_gnu (adjust_for_implicit_deref (Prefix (gnat_node)));
  	tree gnu_type;
! 	int ndim;
! 	int i;
  	Node_Id *gnat_expr_array;
  
! 	gnu_array_object = maybe_implicit_deref (gnu_array_object);
  
  	/* Convert vector inputs to their representative array type, to fit
  	   what the code below expects.  */
--- 6606,6618 ----
  
      case N_Indexed_Component:
        {
! 	tree gnu_array_object = gnat_to_gnu ((Prefix (gnat_node)));
  	tree gnu_type;
! 	int ndim, i;
  	Node_Id *gnat_expr_array;
  
! 	gnu_array_object = maybe_padded_object (gnu_array_object);
! 	gnu_array_object = maybe_unconstrained_array (gnu_array_object);
  
  	/* Convert vector inputs to their representative array type, to fit
  	   what the code below expects.  */
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7173,7186 ****
  	    gnu_array_object = maybe_vector_array (gnu_array_object);
  	  }
  
- 	gnu_array_object = maybe_unconstrained_array (gnu_array_object);
- 
- 	/* If we got a padded type, remove it too.  */
- 	if (TYPE_IS_PADDING_P (TREE_TYPE (gnu_array_object)))
- 	  gnu_array_object
- 	    = convert (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (gnu_array_object))),
- 		       gnu_array_object);
- 
  	/* The failure of this assertion will very likely come from a missing
  	   expansion for a packed array access.  */
  	gcc_assert (TREE_CODE (TREE_TYPE (gnu_array_object)) == ARRAY_TYPE);
--- 6623,6628 ----
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7233,7244 ****
  
      case N_Slice:
        {
! 	tree gnu_array_object
! 	  = gnat_to_gnu (adjust_for_implicit_deref (Prefix (gnat_node)));
  
  	gnu_result_type = get_unpadded_type (Etype (gnat_node));
  
! 	gnu_array_object = maybe_implicit_deref (gnu_array_object);
  	gnu_array_object = maybe_unconstrained_array (gnu_array_object);
  
  	gnu_expr = TYPE_MIN_VALUE (TYPE_DOMAIN (gnu_result_type));
--- 6675,6685 ----
  
      case N_Slice:
        {
! 	tree gnu_array_object = gnat_to_gnu (Prefix (gnat_node));
  
  	gnu_result_type = get_unpadded_type (Etype (gnat_node));
  
! 	gnu_array_object = maybe_padded_object (gnu_array_object);
  	gnu_array_object = maybe_unconstrained_array (gnu_array_object);
  
  	gnu_expr = TYPE_MIN_VALUE (TYPE_DOMAIN (gnu_result_type));
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7258,7269 ****
  
      case N_Selected_Component:
        {
! 	Entity_Id gnat_prefix
! 	  = adjust_for_implicit_deref (Prefix (gnat_node));
  	Entity_Id gnat_field = Entity (Selector_Name (gnat_node));
  	tree gnu_prefix = gnat_to_gnu (gnat_prefix);
  
! 	gnu_prefix = maybe_implicit_deref (gnu_prefix);
  
  	/* gnat_to_gnu_entity does not save the GNU tree made for renamed
  	   discriminants so avoid making recursive calls on each reference
--- 6699,6709 ----
  
      case N_Selected_Component:
        {
! 	const Entity_Id gnat_prefix = Prefix (gnat_node);
  	Entity_Id gnat_field = Entity (Selector_Name (gnat_node));
  	tree gnu_prefix = gnat_to_gnu (gnat_prefix);
  
! 	gnu_prefix = maybe_padded_object (gnu_prefix);
  
  	/* gnat_to_gnu_entity does not save the GNU tree made for renamed
  	   discriminants so avoid making recursive calls on each reference
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7733,7744 ****
  
  	else if (Nkind (gnat_temp) == N_Qualified_Expression)
  	  {
! 	    Entity_Id gnat_desig_type
  	      = Designated_Type (Underlying_Type (Etype (gnat_node)));
  
! 	    /* The flag is effectively only set on the base types.  */
! 	    ignore_init_type
! 	      = Has_Constrained_Partial_View (Base_Type (gnat_desig_type));
  
  	    gnu_init = gnat_to_gnu (Expression (gnat_temp));
  	    gnu_init = maybe_unconstrained_array (gnu_init);
--- 7173,7182 ----
  
  	else if (Nkind (gnat_temp) == N_Qualified_Expression)
  	  {
! 	    const Entity_Id gnat_desig_type
  	      = Designated_Type (Underlying_Type (Etype (gnat_node)));
  
! 	    ignore_init_type = Has_Constrained_Partial_View (gnat_desig_type);
  
  	    gnu_init = gnat_to_gnu (Expression (gnat_temp));
  	    gnu_init = maybe_unconstrained_array (gnu_init);
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7822,7846 ****
        else
  	{
  	  const Node_Id gnat_expr = Expression (gnat_node);
  	  const Entity_Id gnat_type
  	    = Underlying_Type (Etype (Name (gnat_node)));
- 	  const bool regular_array_type_p
- 	    = (Is_Array_Type (gnat_type) && !Is_Bit_Packed_Array (gnat_type));
  	  const bool use_memset_p
! 	    = (regular_array_type_p
! 	       && Nkind (gnat_expr) == N_Aggregate
! 	       && Is_Others_Aggregate (gnat_expr));
  
! 	  /* If we'll use memset, we need to find the inner expression.  */
  	  if (use_memset_p)
  	    {
! 	      Node_Id gnat_inner
! 		= Expression (First (Component_Associations (gnat_expr)));
! 	      while (Nkind (gnat_inner) == N_Aggregate
! 		     && Is_Others_Aggregate (gnat_inner))
! 		gnat_inner
! 		  = Expression (First (Component_Associations (gnat_inner)));
! 	      gnu_rhs = gnat_to_gnu (gnat_inner);
  	    }
  	  else
  	    gnu_rhs = maybe_unconstrained_array (gnat_to_gnu (gnat_expr));
--- 7260,7286 ----
        else
  	{
  	  const Node_Id gnat_expr = Expression (gnat_node);
+ 	  const Node_Id gnat_inner
+ 	    = Nkind (gnat_expr) == N_Qualified_Expression
+ 	      ? Expression (gnat_expr)
+ 	      : gnat_expr;
  	  const Entity_Id gnat_type
  	    = Underlying_Type (Etype (Name (gnat_node)));
  	  const bool use_memset_p
! 	    = Is_Array_Type (gnat_type)
! 	      && Nkind (gnat_inner) == N_Aggregate
! 	      && Is_Single_Aggregate (gnat_inner);
  
! 	  /* If we use memset, we need to find the innermost expression.  */
  	  if (use_memset_p)
  	    {
! 	      gnat_temp = gnat_inner;
! 	      do {
! 		gnat_temp
! 		  = Expression (First (Component_Associations (gnat_temp)));
! 	      } while (Nkind (gnat_temp) == N_Aggregate
! 		       && Is_Single_Aggregate (gnat_temp));
! 	      gnu_rhs = gnat_to_gnu (gnat_temp);
  	    }
  	  else
  	    gnu_rhs = maybe_unconstrained_array (gnat_to_gnu (gnat_expr));
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7898,7904 ****
  	     not completely disjoint, play safe and use memmove.  But don't do
  	     it for a bit-packed array as it might not be byte-aligned.  */
  	  if (TREE_CODE (gnu_result) == MODIFY_EXPR
! 	      && regular_array_type_p
  	      && !(Forwards_OK (gnat_node) && Backwards_OK (gnat_node)))
  	    {
  	      tree to = TREE_OPERAND (gnu_result, 0);
--- 7338,7345 ----
  	     not completely disjoint, play safe and use memmove.  But don't do
  	     it for a bit-packed array as it might not be byte-aligned.  */
  	  if (TREE_CODE (gnu_result) == MODIFY_EXPR
! 	      && Is_Array_Type (gnat_type)
! 	      && !Is_Bit_Packed_Array (gnat_type)
  	      && !(Forwards_OK (gnat_node) && Backwards_OK (gnat_node)))
  	    {
  	      tree to = TREE_OPERAND (gnu_result, 0);
*************** gnat_to_gnu (Node_Id gnat_node)
*** 8585,8596 ****
        break;
  
      case N_Free_Statement:
        if (!type_annotate_only)
  	{
! 	  tree gnu_ptr
! 	    = gnat_to_gnu (adjust_for_implicit_deref (Expression (gnat_node)));
! 	  tree gnu_ptr_type = TREE_TYPE (gnu_ptr);
! 	  tree gnu_obj_type, gnu_actual_obj_type;
  
  	  /* If this is a thin pointer, we must first dereference it to create
  	     a fat pointer, then go back below to a thin pointer.  The reason
--- 8026,8046 ----
        break;
  
      case N_Free_Statement:
+       gnat_temp = Expression (gnat_node);
+ 
        if (!type_annotate_only)
  	{
! 	  tree gnu_ptr, gnu_ptr_type, gnu_obj_type, gnu_actual_obj_type;
! 
! 	  const Entity_Id gnat_desig_type
! 	    = Designated_Type (Underlying_Type (Etype (gnat_temp)));
! 
! 	  /* Make sure the designated type is complete before dereferencing,
! 	     in case it is a Taft Amendment type.  */
! 	  (void) gnat_to_gnu_entity (gnat_desig_type, NULL_TREE, false);
! 
! 	  gnu_ptr = gnat_to_gnu (gnat_temp);
! 	  gnu_ptr_type = TREE_TYPE (gnu_ptr);
  
  	  /* If this is a thin pointer, we must first dereference it to create
  	     a fat pointer, then go back below to a thin pointer.  The reason
*************** gnat_to_gnu (Node_Id gnat_node)
*** 8700,8707 ****
  	  || kind == N_Indexed_Component
  	  || kind == N_Selected_Component)
        && TREE_CODE (get_base_type (gnu_result_type)) == BOOLEAN_TYPE
!       && !lvalue_required_p (gnat_node, gnu_result_type, false, false)
!       && Nkind (Parent (gnat_node)) != N_Variant_Part)
      {
        gnu_result
  	= build_binary_op (NE_EXPR, gnu_result_type,
--- 8150,8158 ----
  	  || kind == N_Indexed_Component
  	  || 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_Variant_Part
!       && !lvalue_required_p (gnat_node, gnu_result_type, false, false))
      {
        gnu_result
  	= build_binary_op (NE_EXPR, gnu_result_type,
*************** gnat_to_gnu (Node_Id gnat_node)
*** 8762,8768 ****
         1. If this is the LHS of an assignment or an actual parameter of a
  	  call, return the result almost unmodified since the RHS will have
  	  to be converted to our type in that case, unless the result type
! 	  has a simpler size.  Likewise if there is just a no-op unchecked
  	  conversion in-between.  Similarly, don't convert integral types
  	  that are the operands of an unchecked conversion since we need
  	  to ignore those conversions (for 'Valid).
--- 8213,8220 ----
         1. If this is the LHS of an assignment or an actual parameter of a
  	  call, return the result almost unmodified since the RHS will have
  	  to be converted to our type in that case, unless the result type
! 	  has a simpler size or for array types because this size might be
! 	  changed in-between. Likewise if there is just a no-op unchecked
  	  conversion in-between.  Similarly, don't convert integral types
  	  that are the operands of an unchecked conversion since we need
  	  to ignore those conversions (for 'Valid).
*************** gnat_to_gnu (Node_Id gnat_node)
*** 8797,8819 ****
  	      && !AGGREGATE_TYPE_P (TREE_TYPE (gnu_result))))
        && !(TYPE_SIZE (gnu_result_type)
  	   && TYPE_SIZE (TREE_TYPE (gnu_result))
! 	   && (AGGREGATE_TYPE_P (gnu_result_type)
! 	       == AGGREGATE_TYPE_P (TREE_TYPE (gnu_result)))
  	   && ((TREE_CODE (TYPE_SIZE (gnu_result_type)) == INTEGER_CST
  		&& (TREE_CODE (TYPE_SIZE (TREE_TYPE (gnu_result)))
  		    != INTEGER_CST))
  	       || (TREE_CODE (TYPE_SIZE (gnu_result_type)) != INTEGER_CST
  		   && !CONTAINS_PLACEHOLDER_P (TYPE_SIZE (gnu_result_type))
  		   && (CONTAINS_PLACEHOLDER_P
! 		       (TYPE_SIZE (TREE_TYPE (gnu_result))))))
  	   && !(TREE_CODE (gnu_result_type) == RECORD_TYPE
  		&& TYPE_JUSTIFIED_MODULAR_P (gnu_result_type))))
      {
        /* Remove padding only if the inner object is of self-referential
  	 size: in that case it must be an object of unconstrained type
  	 with a default discriminant and we want to avoid copying too
! 	 much data.  */
!       if (type_is_padding_self_referential (TREE_TYPE (gnu_result)))
  	gnu_result = convert (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (gnu_result))),
  			      gnu_result);
      }
--- 8249,8275 ----
  	      && !AGGREGATE_TYPE_P (TREE_TYPE (gnu_result))))
        && !(TYPE_SIZE (gnu_result_type)
  	   && TYPE_SIZE (TREE_TYPE (gnu_result))
! 	   && AGGREGATE_TYPE_P (gnu_result_type)
! 	      == AGGREGATE_TYPE_P (TREE_TYPE (gnu_result))
  	   && ((TREE_CODE (TYPE_SIZE (gnu_result_type)) == INTEGER_CST
  		&& (TREE_CODE (TYPE_SIZE (TREE_TYPE (gnu_result)))
  		    != INTEGER_CST))
  	       || (TREE_CODE (TYPE_SIZE (gnu_result_type)) != INTEGER_CST
  		   && !CONTAINS_PLACEHOLDER_P (TYPE_SIZE (gnu_result_type))
  		   && (CONTAINS_PLACEHOLDER_P
! 		       (TYPE_SIZE (TREE_TYPE (gnu_result)))))
! 	       || (TREE_CODE (gnu_result_type) == ARRAY_TYPE
! 		   && TREE_CODE (TREE_TYPE (gnu_result)) == ARRAY_TYPE))
  	   && !(TREE_CODE (gnu_result_type) == RECORD_TYPE
  		&& TYPE_JUSTIFIED_MODULAR_P (gnu_result_type))))
      {
        /* Remove padding only if the inner object is of self-referential
  	 size: in that case it must be an object of unconstrained type
  	 with a default discriminant and we want to avoid copying too
! 	 much data.  But do not remove it if it is already too small.  */
!       if (type_is_padding_self_referential (TREE_TYPE (gnu_result))
! 	  && !(TREE_CODE (gnu_result) == COMPONENT_REF
! 	       && DECL_BIT_FIELD (TREE_OPERAND (gnu_result, 1))))
  	gnu_result = convert (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (gnu_result))),
  			      gnu_result);
      }
*************** gnat_to_gnu (Node_Id gnat_node)
*** 8827,8835 ****
  	       && TREE_CODE (TREE_TYPE (gnu_result)) == RECORD_TYPE))
      {
        /* Remove any padding.  */
!       if (TYPE_IS_PADDING_P (TREE_TYPE (gnu_result)))
! 	gnu_result = convert (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (gnu_result))),
! 			      gnu_result);
      }
  
    else if (gnu_result == error_mark_node || gnu_result_type == void_type_node)
--- 8283,8289 ----
  	       && TREE_CODE (TREE_TYPE (gnu_result)) == RECORD_TYPE))
      {
        /* Remove any padding.  */
!       gnu_result = maybe_padded_object (gnu_result);
      }
  
    else if (gnu_result == error_mark_node || gnu_result_type == void_type_node)
*************** gnat_to_gnu_external (Node_Id gnat_node)
*** 8894,8900 ****
  
    return gnu_result;
  }
! 
  /* Return true if the statement list STMT_LIST is empty.  */
  
  static bool
--- 8348,8354 ----
  
    return gnu_result;
  }
! 
  /* Return true if the statement list STMT_LIST is empty.  */
  
  static bool
*************** insert_code_for (Node_Id gnat_node)
*** 8938,8944 ****
  
    save_gnu_tree (gnat_node, NULL_TREE, true);
  }
! 
  /* Start a new statement group chained to the previous group.  */
  
  void
--- 8392,8398 ----
  
    save_gnu_tree (gnat_node, NULL_TREE, true);
  }
! 
  /* Start a new statement group chained to the previous group.  */
  
  void
*************** add_decl_expr (tree gnu_decl, Node_Id gn
*** 9056,9065 ****
  	  DECL_READONLY_ONCE_ELAB (gnu_decl) = 1;
  	}
  
!       /* If GNU_DECL has a padded type, convert it to the unpadded
! 	 type so the assignment is done properly.  */
!       if (TYPE_IS_PADDING_P (type))
! 	gnu_decl = convert (TREE_TYPE (TYPE_FIELDS (type)), gnu_decl);
  
        gnu_stmt = build_binary_op (INIT_EXPR, NULL_TREE, gnu_decl, gnu_init);
        add_stmt_with_node (gnu_stmt, gnat_node);
--- 8510,8517 ----
  	  DECL_READONLY_ONCE_ELAB (gnu_decl) = 1;
  	}
  
!       /* Remove any padding so the assignment is done properly.  */
!       gnu_decl = maybe_padded_object (gnu_decl);
  
        gnu_stmt = build_binary_op (INIT_EXPR, NULL_TREE, gnu_decl, gnu_init);
        add_stmt_with_node (gnu_stmt, gnat_node);
*************** add_cleanup (tree gnu_cleanup, Node_Id g
*** 9108,9113 ****
--- 8560,8566 ----
  {
    if (Present (gnat_node))
      set_expr_location_from_node (gnu_cleanup, gnat_node, true);
+ 
    /* An EH_ELSE_EXPR must be by itself, and that's all we need when we
       use it.  The assert below makes sure that is so.  Should we ever
       need more than that, we could combine EH_ELSE_EXPRs, and copy
*************** build_stmt_group (List_Id gnat_list, boo
*** 9212,9218 ****
  
    return end_stmt_group ();
  }
! 
  /* Generate GIMPLE in place for the expression at *EXPR_P.  */
  
  int
--- 8665,8671 ----
  
    return end_stmt_group ();
  }
! 
  /* Generate GIMPLE in place for the expression at *EXPR_P.  */
  
  int
*************** gnat_gimplify_stmt (tree *stmt_p)
*** 9461,9467 ****
        gcc_unreachable ();
      }
  }
! 
  /* Force a reference to each of the entities in GNAT_PACKAGE recursively.
  
     This routine is exclusively called in type_annotate mode, to compute DDA
--- 8914,8920 ----
        gcc_unreachable ();
      }
  }
! 
  /* Force a reference to each of the entities in GNAT_PACKAGE recursively.
  
     This routine is exclusively called in type_annotate mode, to compute DDA
*************** elaborate_all_entities (Node_Id gnat_nod
*** 9587,9593 ****
    if (Nkind (Unit (gnat_node)) == N_Package_Body)
      elaborate_all_entities (Library_Unit (gnat_node));
  }
! 
  /* Do the processing of GNAT_NODE, an N_Freeze_Entity.  */
  
  static void
--- 9040,9046 ----
    if (Nkind (Unit (gnat_node)) == N_Package_Body)
      elaborate_all_entities (Library_Unit (gnat_node));
  }
! 
  /* Do the processing of GNAT_NODE, an N_Freeze_Entity.  */
  
  static void
*************** process_freeze_entity (Node_Id gnat_node
*** 9727,9733 ****
  	used_types_insert (TREE_TYPE (gnu_new));
      }
  }
! 
  /* Elaborate decls in the lists GNAT_DECLS and GNAT_DECLS2, if present.
     We make two passes, one to elaborate anything other than bodies (but
     we declare a function if there was no spec).  The second pass
--- 9180,9186 ----
  	used_types_insert (TREE_TYPE (gnu_new));
      }
  }
! 
  /* Elaborate decls in the lists GNAT_DECLS and GNAT_DECLS2, if present.
     We make two passes, one to elaborate anything other than bodies (but
     we declare a function if there was no spec).  The second pass
*************** process_decls (List_Id gnat_decls, List_
*** 9862,9868 ****
  	      add_stmt (gnat_to_gnu (gnat_decl));
  	  }
  }
! 
  /* Make a unary operation of kind CODE using build_unary_op, but guard
     the operation by an overflow check.  CODE can be one of NEGATE_EXPR
     or ABS_EXPR.  GNU_TYPE is the type desired for the result.  Usually
--- 9315,9321 ----
  	      add_stmt (gnat_to_gnu (gnat_decl));
  	  }
  }
! 
  /* Make a unary operation of kind CODE using build_unary_op, but guard
     the operation by an overflow check.  CODE can be one of NEGATE_EXPR
     or ABS_EXPR.  GNU_TYPE is the type desired for the result.  Usually
*************** build_binary_op_trapv (enum tree_code co
*** 9940,9945 ****
--- 9393,9407 ----
  						       convert (int64, rhs)));
  	}
  
+       /* Likewise for a 128-bit mult and a 64-bit target.  */
+       else if (code == MULT_EXPR && precision == 128 && BITS_PER_WORD < 128)
+ 	{
+ 	  tree int128 = gnat_type_for_size (128, 0);
+ 	  return convert (gnu_type, build_call_n_expr (mulv128_decl, 2,
+ 						       convert (int128, lhs),
+ 						       convert (int128, rhs)));
+ 	}
+ 
        enum internal_fn icode;
  
        switch (code)
*************** emit_check (tree gnu_cond, tree gnu_expr
*** 10101,10107 ****
  			 : build_int_cst (TREE_TYPE (gnu_expr), 0)),
  		 gnu_expr);
  }
! 
  /* Return an expression that converts GNU_EXPR to GNAT_TYPE, doing overflow
     checks if OVERFLOW_P is true.  If TRUNCATE_P is true, do a fp-to-integer
     conversion with truncation, otherwise round.  GNAT_NODE is the GNAT node
--- 9563,9569 ----
  			 : build_int_cst (TREE_TYPE (gnu_expr), 0)),
  		 gnu_expr);
  }
! 
  /* Return an expression that converts GNU_EXPR to GNAT_TYPE, doing overflow
     checks if OVERFLOW_P is true.  If TRUNCATE_P is true, do a fp-to-integer
     conversion with truncation, otherwise round.  GNAT_NODE is the GNAT node
*************** convert_with_check (Entity_Id gnat_type,
*** 10286,10292 ****
  
    return convert (gnu_type, gnu_result);
  }
! 
  /* Return true if GNU_EXPR can be directly addressed.  This is the case
     unless it is an expression involving computation or if it involves a
     reference to a bitfield or to an object not sufficiently aligned for
--- 9748,9754 ----
  
    return convert (gnu_type, gnu_result);
  }
! 
  /* Return true if GNU_EXPR can be directly addressed.  This is the case
     unless it is an expression involving computation or if it involves a
     reference to a bitfield or to an object not sufficiently aligned for
*************** addressable_p (tree gnu_expr, tree gnu_t
*** 10464,10470 ****
        return false;
      }
  }
! 
  /* Do the processing for the declaration of a GNAT_ENTITY, a type or subtype.
     If a Freeze node exists for the entity, delay the bulk of the processing.
     Otherwise make a GCC type for GNAT_ENTITY and set up the correspondence.  */
--- 9926,9932 ----
        return false;
      }
  }
! 
  /* Do the processing for the declaration of a GNAT_ENTITY, a type or subtype.
     If a Freeze node exists for the entity, delay the bulk of the processing.
     Otherwise make a GCC type for GNAT_ENTITY and set up the correspondence.  */
*************** process_type (Entity_Id gnat_entity)
*** 10548,10554 ****
  			 TREE_TYPE (gnu_new));
      }
  }
! 
  /* Subroutine of assoc_to_constructor: VALUES is a list of field associations,
     some of which are from RECORD_TYPE.  Return a CONSTRUCTOR consisting of the
     associations that are from RECORD_TYPE.  If we see an internal record, make
--- 10010,10016 ----
  			 TREE_TYPE (gnu_new));
      }
  }
! 
  /* Subroutine of assoc_to_constructor: VALUES is a list of field associations,
     some of which are from RECORD_TYPE.  Return a CONSTRUCTOR consisting of the
     associations that are from RECORD_TYPE.  If we see an internal record, make
*************** pos_to_constructor (Node_Id gnat_expr, t
*** 10702,10708 ****
  
    return gnat_build_constructor (gnu_array_type, gnu_expr_vec);
  }
! 
  /* Process a N_Validate_Unchecked_Conversion node.  */
  
  static void
--- 10164,10170 ----
  
    return gnat_build_constructor (gnu_array_type, gnu_expr_vec);
  }
! 
  /* Process a N_Validate_Unchecked_Conversion node.  */
  
  static void
*************** validate_unchecked_conversion (Node_Id g
*** 10761,10800 ****
  	}
      }
  }
- 
- /* EXP is to be used in a context where access objects are implicitly
-    dereferenced.  Handle the cases when it is an access object.  */
  
- static Node_Id
- adjust_for_implicit_deref (Node_Id exp)
- {
-   Entity_Id type = Underlying_Type (Etype (exp));
- 
-   /* Make sure the designated type is complete before dereferencing.  */
-   if (Is_Access_Type (type))
-     gnat_to_gnu_entity (Designated_Type (type), NULL_TREE, false);
- 
-   return exp;
- }
- 
- /* EXP is to be treated as an array or record.  Handle the cases when it is
-    an access object and perform the required dereferences.  */
- 
- static tree
- maybe_implicit_deref (tree exp)
- {
-   /* If the type is a pointer, dereference it.  */
-   if (POINTER_TYPE_P (TREE_TYPE (exp))
-       || TYPE_IS_FAT_POINTER_P (TREE_TYPE (exp)))
-     exp = build_unary_op (INDIRECT_REF, NULL_TREE, exp);
- 
-   /* If we got a padded type, remove it too.  */
-   if (TYPE_IS_PADDING_P (TREE_TYPE (exp)))
-     exp = convert (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (exp))), exp);
- 
-   return exp;
- }
- 
  /* Convert SLOC into LOCUS.  Return true if SLOC corresponds to a
     source code location and false if it doesn't.  If CLEAR_COLUMN is
     true, set the column information to 0.  If DECL is given and SLOC
--- 10223,10229 ----
*************** set_end_locus_from_node (tree gnu_node,
*** 10976,11003 ****
        return false;
      }
  }
- 
- /* Return a colon-separated list of encodings contained in encoded Ada
-    name.  */
- 
- static const char *
- extract_encoding (const char *name)
- {
-   char *encoding = (char *) ggc_alloc_atomic (strlen (name));
-   get_encoding (name, encoding);
-   return encoding;
- }
  
- /* Extract the Ada name from an encoded name.  */
- 
- static const char *
- decode_name (const char *name)
- {
-   char *decoded = (char *) ggc_alloc_atomic (strlen (name) * 2 + 60);
-   __gnat_decode (name, decoded, 0);
-   return decoded;
- }
- 
  /* Post an error message.  MSG is the error message, properly annotated.
     NODE is the node at which to post the error and the node to use for the
     '&' substitution.  */
--- 10405,10411 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/utils.c gcc-11.1.0/gcc/ada/gcc-interface/utils.c
*** gcc-10.3.0/gcc/ada/gcc-interface/utils.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gcc-interface/utils.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 50,55 ****
--- 50,56 ----
  #include "types.h"
  #include "atree.h"
  #include "nlists.h"
+ #include "snames.h"
  #include "uintp.h"
  #include "fe.h"
  #include "sinfo.h"
*************** static tree handle_nonnull_attribute (tr
*** 91,96 ****
--- 92,98 ----
  static tree handle_sentinel_attribute (tree *, tree, tree, int, bool *);
  static tree handle_noreturn_attribute (tree *, tree, tree, int, bool *);
  static tree handle_stack_protect_attribute (tree *, tree, tree, int, bool *);
+ static tree handle_no_stack_protector_attribute (tree *, tree, tree, int, bool *);
  static tree handle_noinline_attribute (tree *, tree, tree, int, bool *);
  static tree handle_noclone_attribute (tree *, tree, tree, int, bool *);
  static tree handle_noicf_attribute (tree *, tree, tree, int, bool *);
*************** static const struct attribute_spec::excl
*** 115,120 ****
--- 117,129 ----
    { NULL  , false, false, false }
  };
  
+ static const struct attribute_spec::exclusions attr_stack_protect_exclusions[] =
+ {
+   { "stack_protect", true, false, false },
+   { "no_stack_protector", true, false, false },
+   { NULL, false, false, false },
+ };
+ 
  /* Fake handler for attributes we don't properly support, typically because
     they'd require dragging a lot of the common-c front-end circuitry.  */
  static tree fake_attribute_handler (tree *, tree, tree, int, bool *);
*************** const struct attribute_spec gnat_interna
*** 140,146 ****
    { "noreturn",     0, 0,  true,  false, false, false,
      handle_noreturn_attribute, NULL },
    { "stack_protect",0, 0, true,  false, false, false,
!     handle_stack_protect_attribute, NULL },
    { "noinline",     0, 0,  true,  false, false, false,
      handle_noinline_attribute, NULL },
    { "noclone",      0, 0,  true,  false, false, false,
--- 149,159 ----
    { "noreturn",     0, 0,  true,  false, false, false,
      handle_noreturn_attribute, NULL },
    { "stack_protect",0, 0, true,  false, false, false,
!     handle_stack_protect_attribute,
!     attr_stack_protect_exclusions },
!   { "no_stack_protector",0, 0, true,  false, false, false,
!     handle_no_stack_protector_attribute,
!     attr_stack_protect_exclusions },
    { "noinline",     0, 0,  true,  false, false, false,
      handle_noinline_attribute, NULL },
    { "noclone",      0, 0,  true,  false, false, false,
*************** static GTY(()) vec<tree, va_gc> *builtin
*** 258,263 ****
--- 271,299 ----
  /* A chain of unused BLOCK nodes. */
  static GTY((deletable)) tree free_block_chain;
  
+ /* A hash table of packable types.  It is modelled on the generic type
+    hash table in tree.c, which must thus be used as a reference.  */
+ 
+ struct GTY((for_user)) packable_type_hash
+ {
+   hashval_t hash;
+   tree type;
+ };
+ 
+ struct packable_type_hasher : ggc_cache_ptr_hash<packable_type_hash>
+ {
+   static inline hashval_t hash (packable_type_hash *t) { return t->hash; }
+   static bool equal (packable_type_hash *a, packable_type_hash *b);
+ 
+   static int
+   keep_cache_entry (packable_type_hash *&t)
+   {
+     return ggc_marked_p (t->type);
+   }
+ };
+ 
+ static GTY ((cache)) hash_table<packable_type_hasher> *packable_type_hash_table;
+ 
  /* A hash table of padded types.  It is modelled on the generic type
     hash table in tree.c, which must thus be used as a reference.  */
  
*************** add_deferred_decl_context (tree decl, En
*** 321,327 ****
     computed.  */
  static void add_deferred_type_context (struct deferred_decl_context_node *n,
  				       tree type);
! 
  /* Initialize data structures of the utils.c module.  */
  
  void
--- 357,363 ----
     computed.  */
  static void add_deferred_type_context (struct deferred_decl_context_node *n,
  				       tree type);
! 
  /* Initialize data structures of the utils.c module.  */
  
  void
*************** init_gnat_utils (void)
*** 333,338 ****
--- 369,377 ----
    /* Initialize the association of GNAT nodes to GCC trees as dummies.  */
    dummy_node_table = ggc_cleared_vec_alloc<tree> (max_gnat_nodes);
  
+   /* Initialize the hash table of packable types.  */
+   packable_type_hash_table = hash_table<packable_type_hasher>::create_ggc (512);
+ 
    /* Initialize the hash table of padded types.  */
    pad_type_hash_table = hash_table<pad_type_hasher>::create_ggc (512);
  }
*************** destroy_gnat_utils (void)
*** 350,360 ****
    ggc_free (dummy_node_table);
    dummy_node_table = NULL;
  
    /* Destroy the hash table of padded types.  */
    pad_type_hash_table->empty ();
    pad_type_hash_table = NULL;
  }
! 
  /* GNAT_ENTITY is a GNAT tree node for an entity.  Associate GNU_DECL, a GCC
     tree node, with GNAT_ENTITY.  If GNU_DECL is not a ..._DECL node, abort.
     If NO_CHECK is true, the latter check is suppressed.
--- 389,403 ----
    ggc_free (dummy_node_table);
    dummy_node_table = NULL;
  
+   /* Destroy the hash table of packable types.  */
+   packable_type_hash_table->empty ();
+   packable_type_hash_table = NULL;
+ 
    /* Destroy the hash table of padded types.  */
    pad_type_hash_table->empty ();
    pad_type_hash_table = NULL;
  }
! 
  /* GNAT_ENTITY is a GNAT tree node for an entity.  Associate GNU_DECL, a GCC
     tree node, with GNAT_ENTITY.  If GNU_DECL is not a ..._DECL node, abort.
     If NO_CHECK is true, the latter check is suppressed.
*************** present_gnu_tree (Entity_Id gnat_entity)
*** 395,401 ****
  {
    return PRESENT_GNU_TREE (gnat_entity);
  }
! 
  /* Make a dummy type corresponding to GNAT_TYPE.  */
  
  tree
--- 438,444 ----
  {
    return PRESENT_GNU_TREE (gnat_entity);
  }
! 
  /* Make a dummy type corresponding to GNAT_TYPE.  */
  
  tree
*************** build_dummy_unc_pointer_types (Entity_Id
*** 495,501 ****
    TYPE_REFERENCE_TO (gnu_desig_type) = gnu_fat_type;
    TYPE_OBJECT_RECORD_TYPE (gnu_desig_type) = gnu_object_type;
  }
! 
  /* Return true if we are in the global binding level.  */
  
  bool
--- 538,544 ----
    TYPE_REFERENCE_TO (gnu_desig_type) = gnu_fat_type;
    TYPE_OBJECT_RECORD_TYPE (gnu_desig_type) = gnu_object_type;
  }
! 
  /* Return true if we are in the global binding level.  */
  
  bool
*************** gnat_zaplevel (void)
*** 625,631 ****
    level->chain = free_binding_level;
    free_binding_level = level;
  }
! 
  /* Set the context of TYPE and its parallel types (if any) to CONTEXT.  */
  
  static void
--- 668,674 ----
    level->chain = free_binding_level;
    free_binding_level = level;
  }
! 
  /* Set the context of TYPE and its parallel types (if any) to CONTEXT.  */
  
  static void
*************** gnat_pushdecl (tree decl, Node_Id gnat_n
*** 866,871 ****
--- 909,917 ----
  	     their GNAT encodings.  */
  	  if (TREE_CODE (t) == ARRAY_TYPE && !TYPE_NAME (t))
  	    TYPE_NAME (t) = DECL_NAME (decl);
+ 	  /* Remark the canonical fat pointer type as artificial.  */
+ 	  if (TYPE_IS_FAT_POINTER_P (t))
+ 	    TYPE_ARTIFICIAL (t) = 1;
  	  t = NULL_TREE;
  	}
        else if (TYPE_NAME (t)
*************** gnat_pushdecl (tree decl, Node_Id gnat_n
*** 894,900 ****
  	    }
      }
  }
! 
  /* Create a record type that contains a SIZE bytes long field of TYPE with a
     starting bit position so that it is aligned to ALIGN bits, and leaving at
     least ROOM bytes free before the field.  BASE_ALIGN is the alignment the
--- 940,946 ----
  	    }
      }
  }
! 
  /* Create a record type that contains a SIZE bytes long field of TYPE with a
     starting bit position so that it is aligned to ALIGN bits, and leaving at
     least ROOM bytes free before the field.  BASE_ALIGN is the alignment the
*************** make_aligning_type (tree type, unsigned
*** 988,993 ****
--- 1034,1104 ----
    return record_type;
  }
  
+ /* Return true iff the packable types are equivalent.  */
+ 
+ bool
+ packable_type_hasher::equal (packable_type_hash *t1, packable_type_hash *t2)
+ {
+   tree type1, type2;
+ 
+   if (t1->hash != t2->hash)
+     return 0;
+ 
+   type1 = t1->type;
+   type2 = t2->type;
+ 
+   /* We consider that packable types are equivalent if they have the same name,
+      size, alignment, RM size and storage order. Taking the mode into account
+      is redundant since it is determined by the others.  */
+   return
+     TYPE_NAME (type1) == TYPE_NAME (type2)
+     && TYPE_SIZE (type1) == TYPE_SIZE (type2)
+     && TYPE_ALIGN (type1) == TYPE_ALIGN (type2)
+     && TYPE_ADA_SIZE (type1) == TYPE_ADA_SIZE (type2)
+     && TYPE_REVERSE_STORAGE_ORDER (type1) == TYPE_REVERSE_STORAGE_ORDER (type2);
+ }
+ 
+ /* Compute the hash value for the packable TYPE.  */
+ 
+ static hashval_t
+ hash_packable_type (tree type)
+ {
+   hashval_t hashcode;
+ 
+   hashcode = iterative_hash_expr (TYPE_NAME (type), 0);
+   hashcode = iterative_hash_expr (TYPE_SIZE (type), hashcode);
+   hashcode = iterative_hash_hashval_t (TYPE_ALIGN (type), hashcode);
+   hashcode = iterative_hash_expr (TYPE_ADA_SIZE (type), hashcode);
+   hashcode
+     = iterative_hash_hashval_t (TYPE_REVERSE_STORAGE_ORDER (type), hashcode);
+ 
+   return hashcode;
+ }
+ 
+ /* Look up the packable TYPE in the hash table and return its canonical version
+    if it exists; otherwise, insert it into the hash table.  */
+ 
+ static tree
+ canonicalize_packable_type (tree type)
+ {
+   const hashval_t hashcode = hash_packable_type (type);
+   struct packable_type_hash in, *h, **slot;
+ 
+   in.hash = hashcode;
+   in.type = type;
+   slot = packable_type_hash_table->find_slot_with_hash (&in, hashcode, INSERT);
+   h = *slot;
+   if (!h)
+     {
+       h = ggc_alloc<packable_type_hash> ();
+       h->hash = hashcode;
+       h->type = type;
+       *slot = h;
+     }
+ 
+   return h->type;
+ }
+ 
  /* TYPE is an ARRAY_TYPE that is being used as the type of a field in a packed
     record.  See if we can rewrite it as a type that has non-BLKmode, which we
     can pack tighter in the packed record.  If so, return the new type; if not,
*************** make_packable_type (tree type, bool in_r
*** 1067,1082 ****
      }
    else
      {
!       tree type_size = TYPE_ADA_SIZE (type);
        /* Do not try to shrink the size if the RM size is not constant.  */
!       if (TYPE_CONTAINS_TEMPLATE_P (type)
! 	  || !tree_fits_uhwi_p (type_size))
  	return type;
  
        /* Round the RM size up to a unit boundary to get the minimal size
  	 for a BLKmode record.  Give up if it's already the size and we
  	 don't need to lower the alignment.  */
!       new_size = tree_to_uhwi (type_size);
        new_size = (new_size + BITS_PER_UNIT - 1) & -BITS_PER_UNIT;
        if (new_size == size && (max_align == 0 || align <= max_align))
  	return type;
--- 1178,1193 ----
      }
    else
      {
!       tree ada_size = TYPE_ADA_SIZE (type);
! 
        /* Do not try to shrink the size if the RM size is not constant.  */
!       if (TYPE_CONTAINS_TEMPLATE_P (type) || !tree_fits_uhwi_p (ada_size))
  	return type;
  
        /* Round the RM size up to a unit boundary to get the minimal size
  	 for a BLKmode record.  Give up if it's already the size and we
  	 don't need to lower the alignment.  */
!       new_size = tree_to_uhwi (ada_size);
        new_size = (new_size + BITS_PER_UNIT - 1) & -BITS_PER_UNIT;
        if (new_size == size && (max_align == 0 || align <= max_align))
  	return type;
*************** make_packable_type (tree type, bool in_r
*** 1122,1128 ****
  	  && TYPE_ADA_SIZE (new_field_type))
  	new_field_size = TYPE_ADA_SIZE (new_field_type);
        else
! 	new_field_size = DECL_SIZE (field);
  
        /* This is a layout with full representation, alignment and size clauses
  	 so we simply pass 0 as PACKED like gnat_to_gnu_field in this case.  */
--- 1233,1245 ----
  	  && TYPE_ADA_SIZE (new_field_type))
  	new_field_size = TYPE_ADA_SIZE (new_field_type);
        else
! 	{
! 	  new_field_size = DECL_SIZE (field);
! 
! 	  /* Make sure not to use too small a type for the size.  */
! 	  if (TYPE_MODE (new_field_type) == BLKmode)
! 	    new_field_type = TREE_TYPE (field);
! 	}
  
        /* This is a layout with full representation, alignment and size clauses
  	 so we simply pass 0 as PACKED like gnat_to_gnu_field in this case.  */
*************** make_packable_type (tree type, bool in_r
*** 1165,1172 ****
      SET_DECL_PARALLEL_TYPE (TYPE_STUB_DECL (new_type),
  			    DECL_PARALLEL_TYPE (TYPE_STUB_DECL (type)));
  
!   /* Try harder to get a packable type if necessary, for example
!      in case the record itself contains a BLKmode field.  */
    if (in_record && TYPE_MODE (new_type) == BLKmode)
      SET_TYPE_MODE (new_type,
  		   mode_for_size_tree (TYPE_SIZE (new_type),
--- 1282,1289 ----
      SET_DECL_PARALLEL_TYPE (TYPE_STUB_DECL (new_type),
  			    DECL_PARALLEL_TYPE (TYPE_STUB_DECL (type)));
  
!   /* Try harder to get a packable type if necessary, for example in case
!      the record itself contains a BLKmode field.  */
    if (in_record && TYPE_MODE (new_type) == BLKmode)
      SET_TYPE_MODE (new_type,
  		   mode_for_size_tree (TYPE_SIZE (new_type),
*************** make_packable_type (tree type, bool in_r
*** 1176,1182 ****
    if (TYPE_MODE (new_type) == BLKmode && new_size >= size && max_align == 0)
      return type;
  
!   return new_type;
  }
  
  /* Return true if TYPE has an unsigned representation.  This needs to be used
--- 1293,1303 ----
    if (TYPE_MODE (new_type) == BLKmode && new_size >= size && max_align == 0)
      return type;
  
!   /* If the packable type is named, we canonicalize it by means of the hash
!      table.  This is consistent with the language semantics and ensures that
!      gigi and the middle-end have a common view of these packable types.  */
!   return
!     TYPE_NAME (new_type) ? canonicalize_packable_type (new_type) : new_type;
  }
  
  /* Return true if TYPE has an unsigned representation.  This needs to be used
*************** make_type_from_size (tree type, tree siz
*** 1235,1245 ****
        if (size == 0)
  	size = 1;
  
!       /* Only do something if the type isn't a packed array type and doesn't
! 	 already have the proper size and the size isn't too large.  */
!       if (TYPE_IS_PACKED_ARRAY_TYPE_P (type)
  	  || (TYPE_PRECISION (type) == size && biased_p == for_biased)
! 	  || size > LONG_LONG_TYPE_SIZE)
  	break;
  
        biased_p |= for_biased;
--- 1356,1366 ----
        if (size == 0)
  	size = 1;
  
!       /* Only do something if the type is not a bit-packed array type and does
! 	 not already have the proper size and the size is not too large.  */
!       if (BIT_PACKED_ARRAY_TYPE_P (type)
  	  || (TYPE_PRECISION (type) == size && biased_p == for_biased)
! 	  || size > (Enable_128bit_Types ? 128 : LONG_LONG_TYPE_SIZE))
  	break;
  
        biased_p |= for_biased;
*************** pad_type_hasher::equal (pad_type_hash *t
*** 1305,1311 ****
    type1 = t1->type;
    type2 = t2->type;
  
!   /* We consider that the padded types are equivalent if they pad the same type
       and have the same size, alignment, RM size and storage order.  Taking the
       mode into account is redundant since it is determined by the others.  */
    return
--- 1426,1432 ----
    type1 = t1->type;
    type2 = t2->type;
  
!   /* We consider that padded types are equivalent if they pad the same type
       and have the same size, alignment, RM size and storage order.  Taking the
       mode into account is redundant since it is determined by the others.  */
    return
*************** hash_pad_type (tree type)
*** 1328,1333 ****
--- 1449,1456 ----
    hashcode = iterative_hash_expr (TYPE_SIZE (type), hashcode);
    hashcode = iterative_hash_hashval_t (TYPE_ALIGN (type), hashcode);
    hashcode = iterative_hash_expr (TYPE_ADA_SIZE (type), hashcode);
+   hashcode
+     = iterative_hash_hashval_t (TYPE_REVERSE_STORAGE_ORDER (type), hashcode);
  
    return hashcode;
  }
*************** canonicalize_pad_type (tree type)
*** 1360,1374 ****
     if needed.  We have already verified that SIZE and ALIGN are large enough.
     GNAT_ENTITY is used to name the resulting record and to issue a warning.
     IS_COMPONENT_TYPE is true if this is being done for the component type of
!    an array.  IS_USER_TYPE is true if the original type needs to be completed.
!    DEFINITION is true if this type is being defined.  SET_RM_SIZE is true if
!    the RM size of the resulting type is to be set to SIZE too; in this case,
!    the padded type is canonicalized before being returned.  */
  
  tree
  maybe_pad_type (tree type, tree size, unsigned int align,
  		Entity_Id gnat_entity, bool is_component_type,
! 		bool is_user_type, bool definition, bool set_rm_size)
  {
    tree orig_size = TYPE_SIZE (type);
    unsigned int orig_align = TYPE_ALIGN (type);
--- 1483,1496 ----
     if needed.  We have already verified that SIZE and ALIGN are large enough.
     GNAT_ENTITY is used to name the resulting record and to issue a warning.
     IS_COMPONENT_TYPE is true if this is being done for the component type of
!    an array.  DEFINITION is true if this type is being defined.  SET_RM_SIZE
!    is true if the RM size of the resulting type is to be set to SIZE too; in
!    this case, the padded type is canonicalized before being returned.  */
  
  tree
  maybe_pad_type (tree type, tree size, unsigned int align,
  		Entity_Id gnat_entity, bool is_component_type,
! 		bool definition, bool set_rm_size)
  {
    tree orig_size = TYPE_SIZE (type);
    unsigned int orig_align = TYPE_ALIGN (type);
*************** maybe_pad_type (tree type, tree size, un
*** 1412,1442 ****
    if (align == 0 && !size)
      return type;
  
-   /* If requested, complete the original type and give it a name.  */
-   if (is_user_type)
-     create_type_decl (get_entity_name (gnat_entity), type,
- 		      !Comes_From_Source (gnat_entity),
- 		      !(TYPE_NAME (type)
- 			&& TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
- 			&& DECL_IGNORED_P (TYPE_NAME (type))),
- 		      gnat_entity);
- 
    /* We used to modify the record in place in some cases, but that could
       generate incorrect debugging information.  So make a new record
       type and name.  */
    record = make_node (RECORD_TYPE);
    TYPE_PADDING_P (record) = 1;
  
!   /* ??? Padding types around packed array implementation types will be
!      considered as root types in the array descriptor language hook (see
!      gnat_get_array_descr_info). Give them the original packed array type
!      name so that the one coming from sources appears in the debugging
!      information.  */
!   if (TYPE_IMPL_PACKED_ARRAY_P (type)
!       && TYPE_ORIGINAL_PACKED_ARRAY (type)
!       && gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
!     TYPE_NAME (record) = TYPE_NAME (TYPE_ORIGINAL_PACKED_ARRAY (type));
!   else if (Present (gnat_entity))
      TYPE_NAME (record) = create_concat_name (gnat_entity, "PAD");
  
    SET_TYPE_ALIGN (record, align ? align : orig_align);
--- 1534,1546 ----
    if (align == 0 && !size)
      return type;
  
    /* We used to modify the record in place in some cases, but that could
       generate incorrect debugging information.  So make a new record
       type and name.  */
    record = make_node (RECORD_TYPE);
    TYPE_PADDING_P (record) = 1;
  
!   if (Present (gnat_entity))
      TYPE_NAME (record) = create_concat_name (gnat_entity, "PAD");
  
    SET_TYPE_ALIGN (record, align ? align : orig_align);
*************** maybe_pad_type (tree type, tree size, un
*** 1504,1509 ****
--- 1608,1614 ----
  	}
      }
  
+   /* Make the inner type the debug type of the padded type.  */
    if (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
      SET_TYPE_DEBUG_TYPE (record, maybe_debug_type (type));
  
*************** set_reverse_storage_order_on_pad_type (t
*** 1672,1678 ****
    TYPE_REVERSE_STORAGE_ORDER (type) = 1;
    return canonicalize_pad_type (type);
  }
! 
  /* Relate the alias sets of GNU_NEW_TYPE and GNU_OLD_TYPE according to OP.
     If this is a multi-dimensional array type, do this recursively.
  
--- 1777,1783 ----
    TYPE_REVERSE_STORAGE_ORDER (type) = 1;
    return canonicalize_pad_type (type);
  }
! 
  /* Relate the alias sets of GNU_NEW_TYPE and GNU_OLD_TYPE according to OP.
     If this is a multi-dimensional array type, do this recursively.
  
*************** relate_alias_sets (tree gnu_new_type, tr
*** 1747,1753 ****
  
    record_component_aliases (gnu_new_type);
  }
! 
  /* Record TYPE as a builtin type for Ada.  NAME is the name of the type.
     ARTIFICIAL_P is true if the type was generated by the compiler.  */
  
--- 1852,1858 ----
  
    record_component_aliases (gnu_new_type);
  }
! 
  /* Record TYPE as a builtin type for Ada.  NAME is the name of the type.
     ARTIFICIAL_P is true if the type was generated by the compiler.  */
  
*************** record_builtin_type (const char *name, t
*** 1763,1769 ****
    if (debug_hooks->type_decl)
      debug_hooks->type_decl (type_decl, false);
  }
! 
  /* Finish constructing the character type CHAR_TYPE.
  
    In Ada character types are enumeration types and, as a consequence, are
--- 1868,1874 ----
    if (debug_hooks->type_decl)
      debug_hooks->type_decl (type_decl, false);
  }
! 
  /* Finish constructing the character type CHAR_TYPE.
  
    In Ada character types are enumeration types and, as a consequence, are
*************** split_plus (tree in, tree *pvar)
*** 2459,2465 ****
    else
      return bitsize_zero_node;
  }
! 
  /* Return a copy of TYPE but safe to modify in any way.  */
  
  tree
--- 2564,2570 ----
    else
      return bitsize_zero_node;
  }
! 
  /* Return a copy of TYPE but safe to modify in any way.  */
  
  tree
*************** copy_type (tree type)
*** 2475,2481 ****
      }
  
    /* And the contents of the language-specific slot if needed.  */
!   if ((INTEGRAL_TYPE_P (type) || TREE_CODE (type) == REAL_TYPE)
        && TYPE_RM_VALUES (type))
      {
        TYPE_RM_VALUES (new_type) = NULL_TREE;
--- 2580,2586 ----
      }
  
    /* And the contents of the language-specific slot if needed.  */
!   if ((INTEGRAL_TYPE_P (type) || SCALAR_FLOAT_TYPE_P (type))
        && TYPE_RM_VALUES (type))
      {
        TYPE_RM_VALUES (new_type) = NULL_TREE;
*************** copy_type (tree type)
*** 2496,2502 ****
  
    return new_type;
  }
! 
  /* Return a subtype of sizetype with range MIN to MAX and whose
     TYPE_INDEX_TYPE is INDEX.  GNAT_NODE is used for the position
     of the associated TYPE_DECL.  */
--- 2601,2607 ----
  
    return new_type;
  }
! 
  /* Return a subtype of sizetype with range MIN to MAX and whose
     TYPE_INDEX_TYPE is INDEX.  GNAT_NODE is used for the position
     of the associated TYPE_DECL.  */
*************** create_range_type (tree type, tree min,
*** 2535,2542 ****
  
    return range_type;
  }
! 
! /* Return an extra subtype of TYPE with range MIN to MAX.  */
  
  tree
  create_extra_subtype (tree type, tree min, tree max)
--- 2640,2647 ----
  
    return range_type;
  }
! 
! /* Return an extra subtype of TYPE with range MIN to MAX.  */
  
  tree
  create_extra_subtype (tree type, tree min, tree max)
*************** create_extra_subtype (tree type, tree mi
*** 2553,2559 ****
  
    return subtype;
  }
! 
  /* Return a TYPE_DECL node suitable for the TYPE_STUB_DECL field of TYPE.
     NAME gives the name of the type to be used in the declaration.  */
  
--- 2658,2664 ----
  
    return subtype;
  }
! 
  /* Return a TYPE_DECL node suitable for the TYPE_STUB_DECL field of TYPE.
     NAME gives the name of the type to be used in the declaration.  */
  
*************** create_type_decl (tree name, tree type,
*** 2619,2625 ****
  
    return type_decl;
  }
! 
  /* Return a VAR_DECL or CONST_DECL node.
  
     NAME gives the name of the variable.  ASM_NAME is its assembler name
--- 2724,2730 ----
  
    return type_decl;
  }
! 
  /* Return a VAR_DECL or CONST_DECL node.
  
     NAME gives the name of the variable.  ASM_NAME is its assembler name
*************** create_var_decl (tree name, tree asm_nam
*** 2787,2793 ****
  
    return var_decl;
  }
! 
  /* Return true if TYPE, an aggregate type, contains (or is) an array.
     If SELF_REFERENTIAL is true, then an additional requirement on the
     array is that it be self-referential.  */
--- 2892,2898 ----
  
    return var_decl;
  }
! 
  /* Return true if TYPE, an aggregate type, contains (or is) an array.
     If SELF_REFERENTIAL is true, then an additional requirement on the
     array is that it be self-referential.  */
*************** create_field_decl (tree name, tree type,
*** 2957,2963 ****
        unsigned int known_align;
  
        if (tree_fits_uhwi_p (pos))
! 	known_align = tree_to_uhwi (pos) & - tree_to_uhwi (pos);
        else
  	known_align = BITS_PER_UNIT;
  
--- 3062,3068 ----
        unsigned int known_align;
  
        if (tree_fits_uhwi_p (pos))
! 	known_align = tree_to_uhwi (pos) & -tree_to_uhwi (pos);
        else
  	known_align = BITS_PER_UNIT;
  
*************** create_field_decl (tree name, tree type,
*** 2998,3004 ****
  
    return field_decl;
  }
! 
  /* Return a PARM_DECL node with NAME and TYPE.  */
  
  tree
--- 3103,3109 ----
  
    return field_decl;
  }
! 
  /* Return a PARM_DECL node with NAME and TYPE.  */
  
  tree
*************** create_param_decl (tree name, tree type)
*** 3032,3038 ****
    DECL_ARG_TYPE (param_decl) = type;
    return param_decl;
  }
! 
  /* Process the attributes in ATTR_LIST for NODE, which is either a DECL or
     a TYPE.  If IN_PLACE is true, the tree pointed to by NODE should not be
     changed.  GNAT_NODE is used for the position of error messages.  */
--- 3137,3143 ----
    DECL_ARG_TYPE (param_decl) = type;
    return param_decl;
  }
! 
  /* Process the attributes in ATTR_LIST for NODE, which is either a DECL or
     a TYPE.  If IN_PLACE is true, the tree pointed to by NODE should not be
     changed.  GNAT_NODE is used for the position of error messages.  */
*************** compute_deferred_decl_context (Entity_Id
*** 3160,3166 ****
  
    if (TREE_CODE (context) == TYPE_DECL)
      {
!       const tree context_type = TREE_TYPE (context);
  
        /* Skip dummy types: only the final ones can appear in the context
  	 chain.  */
--- 3265,3271 ----
  
    if (TREE_CODE (context) == TYPE_DECL)
      {
!       tree context_type = TREE_TYPE (context);
  
        /* Skip dummy types: only the final ones can appear in the context
  	 chain.  */
*************** create_label_decl (tree name, Node_Id gn
*** 3321,3327 ****
  
    return label_decl;
  }
! 
  /* Return a FUNCTION_DECL node.  NAME is the name of the subprogram, ASM_NAME
     its assembler name, TYPE its type (a FUNCTION_TYPE or METHOD_TYPE node),
     PARAM_DECL_LIST the list of its parameters (a list of PARM_DECL nodes
--- 3426,3432 ----
  
    return label_decl;
  }
! 
  /* Return a FUNCTION_DECL node.  NAME is the name of the subprogram, ASM_NAME
     its assembler name, TYPE its type (a FUNCTION_TYPE or METHOD_TYPE node),
     PARAM_DECL_LIST the list of its parameters (a list of PARM_DECL nodes
*************** finish_subprog_decl (tree decl, tree asm
*** 3465,3471 ****
  	DECL_NAME (decl) = main_identifier_node;
      }
  }
! 
  /* Set up the framework for generating code for SUBPROG_DECL, a subprogram
     body.  This routine needs to be invoked before processing the declarations
     appearing in the subprogram.  */
--- 3570,3576 ----
  	DECL_NAME (decl) = main_identifier_node;
      }
  }
! 
  /* Set up the framework for generating code for SUBPROG_DECL, a subprogram
     body.  This routine needs to be invoked before processing the declarations
     appearing in the subprogram.  */
*************** fntype_same_flags_p (const_tree t, tree
*** 3731,3737 ****
  	 && TYPE_RETURN_BY_DIRECT_REF_P (t) == return_by_direct_ref_p
  	 && TREE_ADDRESSABLE (t) == return_by_invisi_ref_p;
  }
! 
  /* EXP is an expression for the size of an object.  If this size contains
     discriminant references, replace them with the maximum (if MAX_P) or
     minimum (if !MAX_P) possible value of the discriminant.
--- 3836,3842 ----
  	 && TYPE_RETURN_BY_DIRECT_REF_P (t) == return_by_direct_ref_p
  	 && TREE_ADDRESSABLE (t) == return_by_invisi_ref_p;
  }
! 
  /* EXP is an expression for the size of an object.  If this size contains
     discriminant references, replace them with the maximum (if MAX_P) or
     minimum (if !MAX_P) possible value of the discriminant.
*************** max_size (tree exp, bool max_p)
*** 3943,3949 ****
  
    gcc_unreachable ();
  }
! 
  /* Build a template of type TEMPLATE_TYPE from the array bounds of ARRAY_TYPE.
     EXPR is an expression that we can use to locate any PLACEHOLDER_EXPRs.
     Return a constructor for the template.  */
--- 4048,4054 ----
  
    gcc_unreachable ();
  }
! 
  /* Build a template of type TEMPLATE_TYPE from the array bounds of ARRAY_TYPE.
     EXPR is an expression that we can use to locate any PLACEHOLDER_EXPRs.
     Return a constructor for the template.  */
*************** build_template (tree template_type, tree
*** 4009,4015 ****
  
    return gnat_build_constructor (template_type, template_elts);
  }
! 
  /* Return true if TYPE is suitable for the element type of a vector.  */
  
  static bool
--- 4114,4120 ----
  
    return gnat_build_constructor (template_type, template_elts);
  }
! 
  /* Return true if TYPE is suitable for the element type of a vector.  */
  
  static bool
*************** build_vector_type_for_array (tree array_
*** 4099,4105 ****
    TYPE_REPRESENTATIVE_ARRAY (vector_type) = array_type;
    return vector_type;
  }
! 
  /* Build a type to be used to represent an aliased object whose nominal type
     is an unconstrained array.  This consists of a RECORD_TYPE containing a
     field of TEMPLATE_TYPE and a field of OBJECT_TYPE, which is an ARRAY_TYPE.
--- 4204,4210 ----
    TYPE_REPRESENTATIVE_ARRAY (vector_type) = array_type;
    return vector_type;
  }
! 
  /* Build a type to be used to represent an aliased object whose nominal type
     is an unconstrained array.  This consists of a RECORD_TYPE containing a
     field of TEMPLATE_TYPE and a field of OBJECT_TYPE, which is an ARRAY_TYPE.
*************** tree
*** 4111,4117 ****
  build_unc_object_type (tree template_type, tree object_type, tree name,
  		       bool debug_info_p)
  {
-   tree decl;
    tree type = make_node (RECORD_TYPE);
    tree template_field
      = create_field_decl (get_identifier ("BOUNDS"), template_type, type,
--- 4216,4221 ----
*************** build_unc_object_type (tree template_typ
*** 4127,4138 ****
  
    /* Declare it now since it will never be declared otherwise.  This is
       necessary to ensure that its subtrees are properly marked.  */
!   decl = create_type_decl (name, type, true, debug_info_p, Empty);
! 
!   /* template_type will not be used elsewhere than here, so to keep the debug
!      info clean and in order to avoid scoping issues, make decl its
!      context.  */
!   gnat_set_type_context (template_type, decl);
  
    return type;
  }
--- 4231,4237 ----
  
    /* Declare it now since it will never be declared otherwise.  This is
       necessary to ensure that its subtrees are properly marked.  */
!   create_type_decl (name, type, true, debug_info_p, Empty);
  
    return type;
  }
*************** build_unc_object_type_from_ptr (tree thi
*** 4155,4161 ****
    return
      build_unc_object_type (template_type, object_type, name, debug_info_p);
  }
! 
  /* Update anything previously pointing to OLD_TYPE to point to NEW_TYPE.
     In the normal case this is just two adjustments, but we have more to
     do if NEW_TYPE is an UNCONSTRAINED_ARRAY_TYPE.  */
--- 4254,4260 ----
    return
      build_unc_object_type (template_type, object_type, name, debug_info_p);
  }
! 
  /* Update anything previously pointing to OLD_TYPE to point to NEW_TYPE.
     In the normal case this is just two adjustments, but we have more to
     do if NEW_TYPE is an UNCONSTRAINED_ARRAY_TYPE.  */
*************** update_pointer_to (tree old_type, tree n
*** 4286,4292 ****
        TYPE_REFERENCE_TO (old_type) = NULL_TREE;
      }
  }
! 
  /* Convert EXPR, a pointer to a constrained array, into a pointer to an
     unconstrained one.  This involves making or finding a template.  */
  
--- 4385,4391 ----
        TYPE_REFERENCE_TO (old_type) = NULL_TREE;
      }
  }
! 
  /* Convert EXPR, a pointer to a constrained array, into a pointer to an
     unconstrained one.  This involves making or finding a template.  */
  
*************** convert_to_fat_pointer (tree type, tree
*** 4390,4396 ****
    CONSTRUCTOR_APPEND_ELT (v, DECL_CHAIN (TYPE_FIELDS (type)), template_addr);
    return gnat_build_constructor (type, v);
  }
! 
  /* Create an expression whose value is that of EXPR,
     converted to type TYPE.  The TREE_TYPE of the value
     is always TYPE.  This function implements all reasonable
--- 4489,4495 ----
    CONSTRUCTOR_APPEND_ELT (v, DECL_CHAIN (TYPE_FIELDS (type)), template_addr);
    return gnat_build_constructor (type, v);
  }
! 
  /* Create an expression whose value is that of EXPR,
     converted to type TYPE.  The TREE_TYPE of the value
     is always TYPE.  This function implements all reasonable
*************** convert (tree type, tree expr)
*** 4806,4812 ****
  	   && smaller_form_type_p (etype, type))
      {
        expr = convert (maybe_pad_type (etype, TYPE_SIZE (type), 0, Empty,
! 				      false, false, false, true),
  		      expr);
        return build1 (VIEW_CONVERT_EXPR, type, expr);
      }
--- 4905,4911 ----
  	   && smaller_form_type_p (etype, type))
      {
        expr = convert (maybe_pad_type (etype, TYPE_SIZE (type), 0, Empty,
! 				      false, false, true),
  		      expr);
        return build1 (VIEW_CONVERT_EXPR, type, expr);
      }
*************** convert (tree type, tree expr)
*** 4837,4846 ****
  					  convert (TREE_TYPE (type),
  						   TYPE_MIN_VALUE (type))));
  
-       /* ... fall through ... */
- 
-     case ENUMERAL_TYPE:
-     case BOOLEAN_TYPE:
        /* If we are converting an additive expression to an integer type
  	 with lower precision, be wary of the optimization that can be
  	 applied by convert_to_integer.  There are 2 problematic cases:
--- 4936,4941 ----
*************** convert (tree type, tree expr)
*** 4852,4859 ****
  	     intermediate conversion that changes the sign could
  	     be inserted and thus introduce an artificial overflow
  	     at compile time when the placeholder is substituted.  */
!       if (code == INTEGER_TYPE
! 	  && ecode == INTEGER_TYPE
  	  && TYPE_PRECISION (type) < TYPE_PRECISION (etype)
  	  && (TREE_CODE (expr) == PLUS_EXPR || TREE_CODE (expr) == MINUS_EXPR))
  	{
--- 4947,4953 ----
  	     intermediate conversion that changes the sign could
  	     be inserted and thus introduce an artificial overflow
  	     at compile time when the placeholder is substituted.  */
!       if (ecode == INTEGER_TYPE
  	  && TYPE_PRECISION (type) < TYPE_PRECISION (etype)
  	  && (TREE_CODE (expr) == PLUS_EXPR || TREE_CODE (expr) == MINUS_EXPR))
  	{
*************** convert (tree type, tree expr)
*** 4862,4872 ****
  	  if ((TREE_CODE (TREE_TYPE (op0)) == INTEGER_TYPE
  	       && TYPE_BIASED_REPRESENTATION_P (TREE_TYPE (op0)))
  	      || CONTAINS_PLACEHOLDER_P (expr))
! 	    return build1 (NOP_EXPR, type, expr);
  	}
  
        return fold (convert_to_integer (type, expr));
  
      case POINTER_TYPE:
      case REFERENCE_TYPE:
        /* If converting between two thin pointers, adjust if needed to account
--- 4956,4973 ----
  	  if ((TREE_CODE (TREE_TYPE (op0)) == INTEGER_TYPE
  	       && TYPE_BIASED_REPRESENTATION_P (TREE_TYPE (op0)))
  	      || CONTAINS_PLACEHOLDER_P (expr))
! 	    return fold_convert (type, expr);
  	}
  
+       /* ... fall through ... */
+ 
+     case ENUMERAL_TYPE:
        return fold (convert_to_integer (type, expr));
  
+     case BOOLEAN_TYPE:
+       /* Do not use convert_to_integer with boolean types.  */
+       return fold_convert_loc (EXPR_LOCATION (expr), type, expr);
+ 
      case POINTER_TYPE:
      case REFERENCE_TYPE:
        /* If converting between two thin pointers, adjust if needed to account
*************** convert_to_index_type (tree expr)
*** 5077,5083 ****
  
    return convert (sizetype, expr);
  }
! 
  /* Remove all conversions that are done in EXP.  This includes converting
     from a padded type or to a justified modular type.  If TRUE_ADDRESS
     is true, always return the address of the containing object even if
--- 5178,5184 ----
  
    return convert (sizetype, expr);
  }
! 
  /* Remove all conversions that are done in EXP.  This includes converting
     from a padded type or to a justified modular type.  If TRUE_ADDRESS
     is true, always return the address of the containing object even if
*************** remove_conversions (tree exp, bool true_
*** 5112,5118 ****
  
    return exp;
  }
! 
  /* If EXP's type is an UNCONSTRAINED_ARRAY_TYPE, return an expression that
     refers to the underlying array.  If it has TYPE_CONTAINS_TEMPLATE_P,
     likewise return an expression pointing to the underlying array.  */
--- 5213,5219 ----
  
    return exp;
  }
! 
  /* If EXP's type is an UNCONSTRAINED_ARRAY_TYPE, return an expression that
     refers to the underlying array.  If it has TYPE_CONTAINS_TEMPLATE_P,
     likewise return an expression pointing to the underlying array.  */
*************** maybe_unconstrained_array (tree exp)
*** 5188,5198 ****
  
  	  exp = build_component_ref (exp, DECL_CHAIN (TYPE_FIELDS (type)),
  				     false);
- 	  type = TREE_TYPE (exp);
  
! 	  /* If the array type is padded, convert to the unpadded type.  */
! 	  if (TYPE_IS_PADDING_P (type))
! 	    exp = convert (TREE_TYPE (TYPE_FIELDS (type)), exp);
  	}
        break;
  
--- 5289,5297 ----
  
  	  exp = build_component_ref (exp, DECL_CHAIN (TYPE_FIELDS (type)),
  				     false);
  
! 	  /* If the array is padded, remove the padding.  */
! 	  exp = maybe_padded_object (exp);
  	}
        break;
  
*************** maybe_unconstrained_array (tree exp)
*** 5202,5208 ****
  
    return exp;
  }
! 
  /* Return true if EXPR is an expression that can be folded as an operand
     of a VIEW_CONVERT_EXPR.  See ada-tree.h for a complete rationale.  */
  
--- 5301,5307 ----
  
    return exp;
  }
! 
  /* Return true if EXPR is an expression that can be folded as an operand
     of a VIEW_CONVERT_EXPR.  See ada-tree.h for a complete rationale.  */
  
*************** unchecked_convert (tree type, tree expr,
*** 5428,5441 ****
        if (c < 0)
  	{
  	  expr = convert (maybe_pad_type (etype, TYPE_SIZE (type), 0, Empty,
! 					  false, false, false, true),
  			  expr);
  	  expr = unchecked_convert (type, expr, notrunc_p);
  	}
        else
  	{
  	  tree rec_type = maybe_pad_type (type, TYPE_SIZE (etype), 0, Empty,
! 					  false, false, false, true);
  	  expr = unchecked_convert (rec_type, expr, notrunc_p);
  	  expr = build_component_ref (expr, TYPE_FIELDS (rec_type), false);
  	}
--- 5527,5540 ----
        if (c < 0)
  	{
  	  expr = convert (maybe_pad_type (etype, TYPE_SIZE (type), 0, Empty,
! 					  false, false, true),
  			  expr);
  	  expr = unchecked_convert (type, expr, notrunc_p);
  	}
        else
  	{
  	  tree rec_type = maybe_pad_type (type, TYPE_SIZE (etype), 0, Empty,
! 					  false, false, true);
  	  expr = unchecked_convert (rec_type, expr, notrunc_p);
  	  expr = build_component_ref (expr, TYPE_FIELDS (rec_type), false);
  	}
*************** unchecked_convert (tree type, tree expr,
*** 5453,5466 ****
        if (c < 0)
  	{
  	  expr = convert (maybe_pad_type (etype, new_size, 0, Empty,
! 					  false, false, false, true),
  			  expr);
  	  expr = unchecked_convert (type, expr, notrunc_p);
  	}
        else
  	{
  	  tree rec_type = maybe_pad_type (type, TYPE_SIZE (etype), 0, Empty,
! 					  false, false, false, true);
  	  expr = unchecked_convert (rec_type, expr, notrunc_p);
  	  expr = build_component_ref (expr, TYPE_FIELDS (rec_type), false);
  	}
--- 5552,5565 ----
        if (c < 0)
  	{
  	  expr = convert (maybe_pad_type (etype, new_size, 0, Empty,
! 					  false, false, true),
  			  expr);
  	  expr = unchecked_convert (type, expr, notrunc_p);
  	}
        else
  	{
  	  tree rec_type = maybe_pad_type (type, TYPE_SIZE (etype), 0, Empty,
! 					  false, false, true);
  	  expr = unchecked_convert (rec_type, expr, notrunc_p);
  	  expr = build_component_ref (expr, TYPE_FIELDS (rec_type), false);
  	}
*************** unchecked_convert (tree type, tree expr,
*** 5505,5511 ****
  	   && TYPE_ALIGN (etype) < TYPE_ALIGN (type))
      {
        expr = convert (maybe_pad_type (etype, NULL_TREE, TYPE_ALIGN (type),
! 				      Empty, false, false, false, true),
  		      expr);
        return unchecked_convert (type, expr, notrunc_p);
      }
--- 5604,5610 ----
  	   && TYPE_ALIGN (etype) < TYPE_ALIGN (type))
      {
        expr = convert (maybe_pad_type (etype, NULL_TREE, TYPE_ALIGN (type),
! 				      Empty, false, false, true),
  		      expr);
        return unchecked_convert (type, expr, notrunc_p);
      }
*************** unchecked_convert (tree type, tree expr,
*** 5522,5528 ****
  	       || tree_int_cst_lt (TYPE_SIZE (etype), TYPE_SIZE (type))))
      {
        expr = convert (maybe_pad_type (etype, TYPE_SIZE (type), 0,
! 				      Empty, false, false, false, true),
  		      expr);
        return unchecked_convert (type, expr, notrunc_p);
      }
--- 5621,5627 ----
  	       || tree_int_cst_lt (TYPE_SIZE (etype), TYPE_SIZE (type))))
      {
        expr = convert (maybe_pad_type (etype, TYPE_SIZE (type), 0,
! 				      Empty, false, false, true),
  		      expr);
        return unchecked_convert (type, expr, notrunc_p);
      }
*************** unchecked_convert (tree type, tree expr,
*** 5596,5602 ****
  
    return expr;
  }
! 
  /* Return the appropriate GCC tree code for the specified GNAT_TYPE,
     the latter being a record type as predicated by Is_Record_Type.  */
  
--- 5695,5701 ----
  
    return expr;
  }
! 
  /* Return the appropriate GCC tree code for the specified GNAT_TYPE,
     the latter being a record type as predicated by Is_Record_Type.  */
  
*************** gnat_write_global_declarations (void)
*** 5828,5834 ****
  	  }
      }
  
!   /* Output debug information for all global type declarations first.  This
       ensures that global types whose compilation hasn't been finalized yet,
       for example pointers to Taft amendment types, have their compilation
       finalized in the right context.  */
--- 5927,5942 ----
  	  }
      }
  
!   /* First output the integral global variables, so that they can be referenced
!      as bounds by the global dynamic types.  Skip external variables, unless we
!      really need to emit debug info for them:, e.g. imported variables.  */
!   FOR_EACH_VEC_SAFE_ELT (global_decls, i, iter)
!     if (TREE_CODE (iter) == VAR_DECL
! 	&& INTEGRAL_TYPE_P (TREE_TYPE (iter))
! 	&& (!DECL_EXTERNAL (iter) || !DECL_IGNORED_P (iter)))
!       rest_of_decl_compilation (iter, true, 0);
! 
!   /* Now output debug information for the global type declarations.  This
       ensures that global types whose compilation hasn't been finalized yet,
       for example pointers to Taft amendment types, have their compilation
       finalized in the right context.  */
*************** gnat_write_global_declarations (void)
*** 5836,5865 ****
      if (TREE_CODE (iter) == TYPE_DECL && !DECL_IGNORED_P (iter))
        debug_hooks->type_decl (iter, false);
  
!   /* Output imported functions.  */
    FOR_EACH_VEC_SAFE_ELT (global_decls, i, iter)
!     if (TREE_CODE (iter) == FUNCTION_DECL
! 	&& DECL_EXTERNAL (iter)
! 	&& DECL_INITIAL (iter) == NULL
! 	&& !DECL_IGNORED_P (iter)
! 	&& DECL_FUNCTION_IS_DEF (iter))
!       debug_hooks->early_global_decl (iter);
  
!   /* Output global constants.  */
    FOR_EACH_VEC_SAFE_ELT (global_decls, i, iter)
      if (TREE_CODE (iter) == CONST_DECL && !DECL_IGNORED_P (iter))
        debug_hooks->early_global_decl (iter);
  
!   /* Then output the global variables.  We need to do that after the debug
!      information for global types is emitted so that they are finalized.  Skip
!      external global variables, unless we need to emit debug info for them:
!      this is useful for imported variables, for instance.  */
    FOR_EACH_VEC_SAFE_ELT (global_decls, i, iter)
!     if (TREE_CODE (iter) == VAR_DECL
! 	&& (!DECL_EXTERNAL (iter) || !DECL_IGNORED_P (iter)))
!       rest_of_decl_compilation (iter, true, 0);
  
!   /* Output the imported modules/declarations.  In GNAT, these are only
       materializing subprogram.  */
    FOR_EACH_VEC_SAFE_ELT (global_decls, i, iter)
     if (TREE_CODE (iter) == IMPORTED_DECL && !DECL_IGNORED_P (iter))
--- 5944,5972 ----
      if (TREE_CODE (iter) == TYPE_DECL && !DECL_IGNORED_P (iter))
        debug_hooks->type_decl (iter, false);
  
!   /* Then output the other global variables.  We need to do that after the
!      information for global types is emitted so that they are finalized.  */
    FOR_EACH_VEC_SAFE_ELT (global_decls, i, iter)
!     if (TREE_CODE (iter) == VAR_DECL
! 	&& !INTEGRAL_TYPE_P (TREE_TYPE (iter))
! 	&& (!DECL_EXTERNAL (iter) || !DECL_IGNORED_P (iter)))
!       rest_of_decl_compilation (iter, true, 0);
  
!   /* Output debug information for the global constants.  */
    FOR_EACH_VEC_SAFE_ELT (global_decls, i, iter)
      if (TREE_CODE (iter) == CONST_DECL && !DECL_IGNORED_P (iter))
        debug_hooks->early_global_decl (iter);
  
!   /* Output it for the imported functions.  */
    FOR_EACH_VEC_SAFE_ELT (global_decls, i, iter)
!     if (TREE_CODE (iter) == FUNCTION_DECL
! 	&& DECL_EXTERNAL (iter)
! 	&& DECL_INITIAL (iter) == NULL
! 	&& !DECL_IGNORED_P (iter)
! 	&& DECL_FUNCTION_IS_DEF (iter))
!       debug_hooks->early_global_decl (iter);
  
!   /* Output it for the imported modules/declarations.  In GNAT, these are only
       materializing subprogram.  */
    FOR_EACH_VEC_SAFE_ELT (global_decls, i, iter)
     if (TREE_CODE (iter) == IMPORTED_DECL && !DECL_IGNORED_P (iter))
*************** handle_stack_protect_attribute (tree *no
*** 6473,6478 ****
--- 6580,6602 ----
    return NULL_TREE;
  }
  
+ /* Handle a "no_stack_protector" attribute; arguments as in
+    struct attribute_spec.handler.  */
+ 
+ static tree
+ handle_no_stack_protector_attribute (tree *node, tree name, tree, int,
+ 				   bool *no_add_attrs)
+ {
+   if (TREE_CODE (*node) != FUNCTION_DECL)
+     {
+       warning (OPT_Wattributes, "%qE attribute ignored", name);
+       *no_add_attrs = true;
+     }
+ 
+   return NULL_TREE;
+ }
+ 
+ 
  /* Handle a "noinline" attribute; arguments as in
     struct attribute_spec.handler.  */
  
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/utils2.c gcc-11.1.0/gcc/ada/gcc-interface/utils2.c
*** gcc-10.3.0/gcc/ada/gcc-interface/utils2.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gcc-interface/utils2.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 32,37 ****
--- 32,38 ----
  #include "alias.h"
  #include "tree.h"
  #include "inchash.h"
+ #include "builtins.h"
  #include "fold-const.h"
  #include "stor-layout.h"
  #include "stringpool.h"
*************** get_base_type (tree type)
*** 72,78 ****
  
    return type;
  }
! 
  /* EXP is a GCC tree representing an address.  See if we can find how strictly
     the object at this address is aligned and, if so, return the alignment of
     the object in bits.  Otherwise return 0.  */
--- 73,79 ----
  
    return type;
  }
! 
  /* EXP is a GCC tree representing an address.  See if we can find how strictly
     the object at this address is aligned and, if so, return the alignment of
     the object in bits.  Otherwise return 0.  */
*************** known_alignment (tree exp)
*** 167,173 ****
        break;
  
      case ADDR_EXPR:
!       this_alignment = expr_align (TREE_OPERAND (exp, 0));
        break;
  
      case CALL_EXPR:
--- 168,177 ----
        break;
  
      case ADDR_EXPR:
!       if (DECL_P (TREE_OPERAND (exp, 0)))
! 	this_alignment = DECL_ALIGN (TREE_OPERAND (exp, 0));
!       else
! 	this_alignment = get_object_alignment (TREE_OPERAND (exp, 0));
        break;
  
      case CALL_EXPR:
*************** known_alignment (tree exp)
*** 199,205 ****
  
    return this_alignment;
  }
! 
  /* We have a comparison or assignment operation on two types, T1 and T2, which
     are either both array types or both record types.  T1 is assumed to be for
     the left hand side operand, and T2 for the right hand side.  Return the
--- 203,209 ----
  
    return this_alignment;
  }
! 
  /* We have a comparison or assignment operation on two types, T1 and T2, which
     are either both array types or both record types.  T1 is assumed to be for
     the left hand side operand, and T2 for the right hand side.  Return the
*************** find_common_type (tree t1, tree t2)
*** 267,273 ****
       could cause a bad self-referential reference.  */
    return NULL_TREE;
  }
! 
  /* Return an expression tree representing an equality comparison of A1 and A2,
     two objects of type ARRAY_TYPE.  The result should be of type RESULT_TYPE.
  
--- 271,277 ----
       could cause a bad self-referential reference.  */
    return NULL_TREE;
  }
! 
  /* Return an expression tree representing an equality comparison of A1 and A2,
     two objects of type ARRAY_TYPE.  The result should be of type RESULT_TYPE.
  
*************** compare_fat_pointers (location_t loc, tr
*** 529,535 ****
  			  build_binary_op (TRUTH_ORIF_EXPR, result_type,
  					   p1_array_is_null, same_bounds));
  }
! 
  /* Compute the result of applying OP_CODE to LHS and RHS, where both are of
     type TYPE.  We know that TYPE is a modular type with a nonbinary
     modulus.  */
--- 533,539 ----
  			  build_binary_op (TRUTH_ORIF_EXPR, result_type,
  					   p1_array_is_null, same_bounds));
  }
! 
  /* Compute the result of applying OP_CODE to LHS and RHS, where both are of
     type TYPE.  We know that TYPE is a modular type with a nonbinary
     modulus.  */
*************** nonbinary_modular_operation (enum tree_c
*** 625,631 ****
  
    return convert (type, result);
  }
! 
  /* This page contains routines that implement the Ada semantics with regard
     to atomic objects.  They are fully piggybacked on the middle-end support
     for atomic loads and stores.
--- 629,635 ----
  
    return convert (type, result);
  }
! 
  /* This page contains routines that implement the Ada semantics with regard
     to atomic objects.  They are fully piggybacked on the middle-end support
     for atomic loads and stores.
*************** build_load_modify_store (tree dest, tree
*** 824,830 ****
    /* Something went wrong earlier if we have not found the atomic load.  */
    gcc_unreachable ();
  }
! 
  /* Make a binary operation of kind OP_CODE.  RESULT_TYPE is the type
     desired for the result.  Usually the operation is to be performed
     in that type.  For INIT_EXPR and MODIFY_EXPR, RESULT_TYPE must be
--- 828,834 ----
    /* Something went wrong earlier if we have not found the atomic load.  */
    gcc_unreachable ();
  }
! 
  /* Make a binary operation of kind OP_CODE.  RESULT_TYPE is the type
     desired for the result.  Usually the operation is to be performed
     in that type.  For INIT_EXPR and MODIFY_EXPR, RESULT_TYPE must be
*************** build_binary_op (enum tree_code op_code,
*** 871,901 ****
  
        /* If there were integral or pointer conversions on the LHS, remove
  	 them; we'll be putting them back below if needed.  Likewise for
! 	 conversions between array and record types, except for justified
! 	 modular types.  But don't do this if the right operand is not
! 	 BLKmode (for packed arrays) unless we are not changing the mode.  */
        while ((CONVERT_EXPR_P (left_operand)
  	      || TREE_CODE (left_operand) == VIEW_CONVERT_EXPR)
  	     && (((INTEGRAL_TYPE_P (left_type)
  		   || POINTER_TYPE_P (left_type))
! 		  && (INTEGRAL_TYPE_P (TREE_TYPE
! 				       (TREE_OPERAND (left_operand, 0)))
! 		      || POINTER_TYPE_P (TREE_TYPE
! 					 (TREE_OPERAND (left_operand, 0)))))
! 		 || (((TREE_CODE (left_type) == RECORD_TYPE
! 		       && !TYPE_JUSTIFIED_MODULAR_P (left_type))
! 		      || TREE_CODE (left_type) == ARRAY_TYPE)
! 		     && ((TREE_CODE (TREE_TYPE
! 				     (TREE_OPERAND (left_operand, 0)))
! 			  == RECORD_TYPE)
! 			 || (TREE_CODE (TREE_TYPE
! 					(TREE_OPERAND (left_operand, 0)))
! 			     == ARRAY_TYPE))
  		     && (TYPE_MODE (right_type) == BLKmode
! 			 || (TYPE_MODE (left_type)
! 			     == TYPE_MODE (TREE_TYPE
! 					   (TREE_OPERAND
! 					    (left_operand, 0))))))))
  	{
  	  left_operand = TREE_OPERAND (left_operand, 0);
  	  left_type = TREE_TYPE (left_operand);
--- 875,895 ----
  
        /* If there were integral or pointer conversions on the LHS, remove
  	 them; we'll be putting them back below if needed.  Likewise for
! 	 conversions between record types, except for justified modular types.
! 	 But don't do this if the right operand is not BLKmode (for packed
! 	 arrays) unless we are not changing the mode.  */
        while ((CONVERT_EXPR_P (left_operand)
  	      || TREE_CODE (left_operand) == VIEW_CONVERT_EXPR)
  	     && (((INTEGRAL_TYPE_P (left_type)
  		   || POINTER_TYPE_P (left_type))
! 		  && (INTEGRAL_TYPE_P (operand_type (left_operand))
! 		      || POINTER_TYPE_P (operand_type (left_operand))))
! 		 || (TREE_CODE (left_type) == RECORD_TYPE
! 		     && !TYPE_JUSTIFIED_MODULAR_P (left_type)
! 		     && TREE_CODE (operand_type (left_operand)) == RECORD_TYPE
  		     && (TYPE_MODE (right_type) == BLKmode
! 			 || TYPE_MODE (left_type)
! 			    == TYPE_MODE (operand_type (left_operand))))))
  	{
  	  left_operand = TREE_OPERAND (left_operand, 0);
  	  left_type = TREE_TYPE (left_operand);
*************** build_binary_op (enum tree_code op_code,
*** 917,924 ****
  	       && TREE_CONSTANT (TYPE_SIZE (left_type))
  	       && ((TREE_CODE (right_operand) == COMPONENT_REF
  		    && TYPE_MAIN_VARIANT (left_type)
! 		       == TYPE_MAIN_VARIANT
! 			  (TREE_TYPE (TREE_OPERAND (right_operand, 0))))
  		   || (TREE_CODE (right_operand) == CONSTRUCTOR
  		       && !CONTAINS_PLACEHOLDER_P
  			   (DECL_SIZE (TYPE_FIELDS (left_type)))))
--- 911,917 ----
  	       && TREE_CONSTANT (TYPE_SIZE (left_type))
  	       && ((TREE_CODE (right_operand) == COMPONENT_REF
  		    && TYPE_MAIN_VARIANT (left_type)
! 		       == TYPE_MAIN_VARIANT (operand_type (right_operand)))
  		   || (TREE_CODE (right_operand) == CONSTRUCTOR
  		       && !CONTAINS_PLACEHOLDER_P
  			   (DECL_SIZE (TYPE_FIELDS (left_type)))))
*************** build_binary_op (enum tree_code op_code,
*** 972,993 ****
  	      || TREE_CODE (result) == ARRAY_RANGE_REF)
  	    while (handled_component_p (result))
  	      result = TREE_OPERAND (result, 0);
  	  else if (TREE_CODE (result) == REALPART_EXPR
  		   || TREE_CODE (result) == IMAGPART_EXPR
  		   || (CONVERT_EXPR_P (result)
  		       && (((TREE_CODE (restype)
! 			     == TREE_CODE (TREE_TYPE
! 					   (TREE_OPERAND (result, 0))))
! 			     && (TYPE_MODE (TREE_TYPE
! 					    (TREE_OPERAND (result, 0)))
! 				 == TYPE_MODE (restype)))
  			   || TYPE_ALIGN_OK (restype))))
  	    result = TREE_OPERAND (result, 0);
  	  else if (TREE_CODE (result) == VIEW_CONVERT_EXPR)
  	    {
  	      TREE_ADDRESSABLE (result) = 1;
  	      result = TREE_OPERAND (result, 0);
  	    }
  	  else
  	    break;
  	}
--- 965,987 ----
  	      || TREE_CODE (result) == ARRAY_RANGE_REF)
  	    while (handled_component_p (result))
  	      result = TREE_OPERAND (result, 0);
+ 
  	  else if (TREE_CODE (result) == REALPART_EXPR
  		   || TREE_CODE (result) == IMAGPART_EXPR
  		   || (CONVERT_EXPR_P (result)
  		       && (((TREE_CODE (restype)
! 			     == TREE_CODE (operand_type (result))
! 			     && TYPE_MODE (restype)
! 				== TYPE_MODE (operand_type (result))))
  			   || TYPE_ALIGN_OK (restype))))
  	    result = TREE_OPERAND (result, 0);
+ 
  	  else if (TREE_CODE (result) == VIEW_CONVERT_EXPR)
  	    {
  	      TREE_ADDRESSABLE (result) = 1;
  	      result = TREE_OPERAND (result, 0);
  	    }
+ 
  	  else
  	    break;
  	}
*************** build_binary_op (enum tree_code op_code,
*** 1036,1043 ****
        /* For a range, make sure the element type is consistent.  */
        if (op_code == ARRAY_RANGE_REF
  	  && TREE_TYPE (operation_type) != TREE_TYPE (left_type))
! 	operation_type = build_array_type (TREE_TYPE (left_type),
! 					   TYPE_DOMAIN (operation_type));
  
        /* Then convert the right operand to its base type.  This will prevent
  	 unneeded sign conversions when sizetype is wider than integer.  */
--- 1030,1044 ----
        /* For a range, make sure the element type is consistent.  */
        if (op_code == ARRAY_RANGE_REF
  	  && TREE_TYPE (operation_type) != TREE_TYPE (left_type))
! 	{
! 	  operation_type
! 	    = build_nonshared_array_type (TREE_TYPE (left_type),
! 					  TYPE_DOMAIN (operation_type));
! 	  /* Declare it now since it will never be declared otherwise.  This
! 	     is necessary to ensure that its subtrees are properly marked.  */
! 	  create_type_decl (TYPE_NAME (operation_type), operation_type, true,
! 			    false, Empty);
! 	}
  
        /* Then convert the right operand to its base type.  This will prevent
  	 unneeded sign conversions when sizetype is wider than integer.  */
*************** build_binary_op (enum tree_code op_code,
*** 1322,1328 ****
  
    return result;
  }
! 
  /* Similar, but for unary operations.  */
  
  tree
--- 1323,1329 ----
  
    return result;
  }
! 
  /* Similar, but for unary operations.  */
  
  tree
*************** build_unary_op (enum tree_code op_code,
*** 1682,1688 ****
  
    return result;
  }
! 
  /* Similar, but for COND_EXPR.  */
  
  tree
--- 1683,1689 ----
  
    return result;
  }
! 
  /* Similar, but for COND_EXPR.  */
  
  tree
*************** build_compound_expr (tree result_type, t
*** 1757,1763 ****
  
    return result;
  }
! 
  /* Conveniently construct a function call expression.  FNDECL names the
     function to be called, N is the number of arguments, and the "..."
     parameters are the argument expressions.  Unlike build_call_expr
--- 1758,1764 ----
  
    return result;
  }
! 
  /* Conveniently construct a function call expression.  FNDECL names the
     function to be called, N is the number of arguments, and the "..."
     parameters are the argument expressions.  Unlike build_call_expr
*************** build_call_n_expr (tree fndecl, int n, .
*** 1775,1781 ****
    va_end (ap);
    return fn;
  }
! 
  /* Build a goto to LABEL for a raise, with an optional call to Local_Raise.
     MSG gives the exception's identity for the call to Local_Raise, if any.  */
  
--- 1776,1782 ----
    va_end (ap);
    return fn;
  }
! 
  /* Build a goto to LABEL for a raise, with an optional call to Local_Raise.
     MSG gives the exception's identity for the call to Local_Raise, if any.  */
  
*************** build_call_raise_range (int msg, Node_Id
*** 1923,1929 ****
  		       convert (integer_type_node, first),
  		       convert (integer_type_node, last));
  }
! 
  /* qsort comparer for the bit positions of two constructor elements
     for record components.  */
  
--- 1924,1930 ----
  		       convert (integer_type_node, first),
  		       convert (integer_type_node, last));
  }
! 
  /* qsort comparer for the bit positions of two constructor elements
     for record components.  */
  
*************** gnat_build_constructor (tree type, vec<c
*** 1986,1992 ****
    TREE_READONLY (result) = TYPE_READONLY (type) || read_only || allconstant;
    return result;
  }
! 
  /* Return a COMPONENT_REF to access FIELD in RECORD, or NULL_TREE if the field
     is not found in the record.  Don't fold the result if NO_FOLD is true.  */
  
--- 1987,1993 ----
    TREE_READONLY (result) = TYPE_READONLY (type) || read_only || allconstant;
    return result;
  }
! 
  /* Return a COMPONENT_REF to access FIELD in RECORD, or NULL_TREE if the field
     is not found in the record.  Don't fold the result if NO_FOLD is true.  */
  
*************** build_simple_component_ref (tree record,
*** 1996,2001 ****
--- 1997,2004 ----
    tree type = TYPE_MAIN_VARIANT (TREE_TYPE (record));
    tree ref;
  
+   /* The failure of this assertion will very likely come from a missing
+      insertion of an explicit dereference.  */
    gcc_assert (RECORD_OR_UNION_TYPE_P (type) && COMPLETE_TYPE_P (type));
  
    /* Try to fold a conversion from another record or union type unless the type
*************** build_component_ref (tree record, tree f
*** 2110,2116 ****
  		 build_call_raise (CE_Discriminant_Check_Failed, Empty,
  				   N_Raise_Constraint_Error));
  }
! 
  /* Helper for build_call_alloc_dealloc, with arguments to be interpreted
     identically.  Process the case where a GNAT_PROC to call is provided.  */
  
--- 2113,2119 ----
  		 build_call_raise (CE_Discriminant_Check_Failed, Empty,
  				   N_Raise_Constraint_Error));
  }
! 
  /* Helper for build_call_alloc_dealloc, with arguments to be interpreted
     identically.  Process the case where a GNAT_PROC to call is provided.  */
  
*************** build_call_alloc_dealloc (tree gnu_obj,
*** 2323,2329 ****
        return maybe_wrap_malloc (gnu_size, gnu_type, gnat_node);
      }
  }
! 
  /* Build a GCC tree that corresponds to allocating an object of TYPE whose
     initial value is INIT, if INIT is nonzero.  Convert the expression to
     RESULT_TYPE, which must be some pointer type, and return the result.
--- 2326,2332 ----
        return maybe_wrap_malloc (gnu_size, gnu_type, gnat_node);
      }
  }
! 
  /* Build a GCC tree that corresponds to allocating an object of TYPE whose
     initial value is INIT, if INIT is nonzero.  Convert the expression to
     RESULT_TYPE, which must be some pointer type, and return the result.
*************** build_allocator (tree type, tree init, t
*** 2454,2460 ****
  
    return storage;
  }
! 
  /* Indicate that we need to take the address of T and that it therefore
     should not be allocated in a register.  Return true if successful.  */
  
--- 2457,2463 ----
  
    return storage;
  }
! 
  /* Indicate that we need to take the address of T and that it therefore
     should not be allocated in a register.  Return true if successful.  */
  
*************** gnat_mark_addressable (tree t)
*** 2502,2508 ****
  	return true;
      }
  }
! 
  /* Return true if EXP is a stable expression for the purpose of the functions
     below and, therefore, can be returned unmodified by them.  We accept things
     that are actual constants or that have already been handled.  */
--- 2505,2511 ----
  	return true;
      }
  }
! 
  /* Return true if EXP is a stable expression for the purpose of the functions
     below and, therefore, can be returned unmodified by them.  We accept things
     that are actual constants or that have already been handled.  */
*************** is_simple_additive_expression (tree expr
*** 2916,2922 ****
  tree
  gnat_invariant_expr (tree expr)
  {
!   const tree type = TREE_TYPE (expr);
    tree add, cst;
    bool minus_p;
  
--- 2919,2925 ----
  tree
  gnat_invariant_expr (tree expr)
  {
!   tree type = TREE_TYPE (expr);
    tree add, cst;
    bool minus_p;
  
*************** gnat_invariant_expr (tree expr)
*** 2930,2937 ****
      {
        expr = DECL_INITIAL (expr);
        /* Look into CONSTRUCTORs built to initialize padded types.  */
!       if (TYPE_IS_PADDING_P (TREE_TYPE (expr)))
! 	expr = convert (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (expr))), expr);
        expr = remove_conversions (expr, false);
      }
  
--- 2933,2939 ----
      {
        expr = DECL_INITIAL (expr);
        /* Look into CONSTRUCTORs built to initialize padded types.  */
!       expr = maybe_padded_object (expr);
        expr = remove_conversions (expr, false);
      }
  
diff -Nrcpad gcc-10.3.0/gcc/ada/get_scos.adb gcc-11.1.0/gcc/ada/get_scos.adb
*** gcc-10.3.0/gcc/ada/get_scos.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/get_scos.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/get_scos.ads gcc-11.1.0/gcc/ada/get_scos.ads
*** gcc-10.3.0/gcc/ada/get_scos.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/get_scos.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/get_targ.adb gcc-11.1.0/gcc/ada/get_targ.adb
*** gcc-10.3.0/gcc/ada/get_targ.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/get_targ.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Get_Targ is
*** 126,131 ****
--- 126,143 ----
        return C_Get_Long_Long_Size;
     end Get_Long_Long_Size;
  
+    -----------------------------
+    -- Get_Long_Long_Long_Size --
+    -----------------------------
+ 
+    function Get_Long_Long_Long_Size return Pos is
+       function C_Get_Long_Long_Long_Size return Pos;
+       pragma Import (C, C_Get_Long_Long_Long_Size,
+                         "get_target_long_long_long_size");
+    begin
+       return C_Get_Long_Long_Long_Size;
+    end Get_Long_Long_Long_Size;
+ 
     ----------------------
     -- Get_Pointer_Size --
     ----------------------
*************** package body Get_Targ is
*** 266,287 ****
        return null;
     end Get_Back_End_Config_File;
  
-    ----------------------
-    -- Digits_From_Size --
-    ----------------------
- 
-    function Digits_From_Size (Size : Pos) return Pos is
-    begin
-       case Size is
-          when  32    => return  6;
-          when  48    => return  9;
-          when  64    => return 15;
-          when  96    => return 18;
-          when 128    => return 18;
-          when others => raise Program_Error;
-       end case;
-    end Digits_From_Size;
- 
     -----------------------------
     -- Get_Max_Unaligned_Field --
     -----------------------------
--- 278,283 ----
*************** package body Get_Targ is
*** 302,320 ****
        Enumerate_Modes (Call_Back);
     end Register_Back_End_Types;
  
-    ---------------------
-    -- Width_From_Size --
-    ---------------------
- 
-    function Width_From_Size (Size : Pos) return Pos is
-    begin
-       case Size is
-          when  8     => return  4;
-          when 16     => return  6;
-          when 32     => return 11;
-          when 64     => return 21;
-          when others => raise Program_Error;
-       end case;
-    end Width_From_Size;
- 
  end Get_Targ;
--- 298,301 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/get_targ.ads gcc-11.1.0/gcc/ada/get_targ.ads
*** gcc-10.3.0/gcc/ada/get_targ.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/get_targ.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Get_Targ is
*** 68,73 ****
--- 68,76 ----
     function Get_Long_Long_Size             return Pos;
     --  Size of Standard.Long_Long_Integer
  
+    function Get_Long_Long_Long_Size        return Pos;
+    --  Size of Standard.Long_Long_Long_Integer
+ 
     function Get_Pointer_Size               return Pos;
     --  Size of System.Address
  
*************** package Get_Targ is
*** 112,121 ****
     --  Returns the maximum supported size in bits for a field that is
     --  not aligned on a storage unit boundary.
  
-    function Width_From_Size  (Size : Pos) return Pos;
-    function Digits_From_Size (Size : Pos) return Pos;
-    --  Calculate values for 'Width or 'Digits from 'Size
- 
     type C_String is array (0 .. 255) of aliased Character;
     pragma Convention (C, C_String);
  
--- 115,120 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/ghost.adb gcc-11.1.0/gcc/ada/ghost.adb
*** gcc-10.3.0/gcc/ada/ghost.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/ghost.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2014-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2014-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Nlists;   use Nlists;
*** 34,40 ****
  with Nmake;    use Nmake;
  with Sem;      use Sem;
  with Sem_Aux;  use Sem_Aux;
- with Sem_Ch8;  use Sem_Ch8;
  with Sem_Disp; use Sem_Disp;
  with Sem_Eval; use Sem_Eval;
  with Sem_Prag; use Sem_Prag;
--- 34,39 ----
*************** package body Ghost is
*** 65,70 ****
--- 64,75 ----
     -- Local subprograms --
     -----------------------
  
+    function Whole_Object_Ref (Ref : Node_Id) return Node_Id;
+    --  For a name that denotes an object, returns a name that denotes the whole
+    --  object, declared by an object declaration, formal parameter declaration,
+    --  etc. For example, for P.X.Comp (J), if P is a package X is a record
+    --  object, this returns P.X.
+ 
     function Ghost_Entity (Ref : Node_Id) return Entity_Id;
     pragma Inline (Ghost_Entity);
     --  Obtain the entity of a Ghost entity from reference Ref. Return Empty if
*************** package body Ghost is
*** 370,381 ****
                 --  treated as Ghost when they contain a reference to a Ghost
                 --  entity (SPARK RM 6.9(11)).
  
!                elsif Nam_In (Prag_Nam, Name_Global,
!                                        Name_Depends,
!                                        Name_Initializes,
!                                        Name_Refined_Global,
!                                        Name_Refined_Depends,
!                                        Name_Refined_State)
                 then
                    return True;
                 end if;
--- 375,386 ----
                 --  treated as Ghost when they contain a reference to a Ghost
                 --  entity (SPARK RM 6.9(11)).
  
!                elsif Prag_Nam in Name_Global
!                                | Name_Depends
!                                | Name_Initializes
!                                | Name_Refined_Global
!                                | Name_Refined_Depends
!                                | Name_Refined_State
                 then
                    return True;
                 end if;
*************** package body Ghost is
*** 1009,1018 ****
        ----------------------------
  
        function Ultimate_Original_Node (Nod : Node_Id) return Node_Id is
!          Res : Node_Id;
! 
        begin
-          Res := Nod;
           while Original_Node (Res) /= Res loop
              Res := Original_Node (Res);
           end loop;
--- 1014,1021 ----
        ----------------------------
  
        function Ultimate_Original_Node (Nod : Node_Id) return Node_Id is
!          Res : Node_Id := Nod;
        begin
           while Original_Node (Res) /= Res loop
              Res := Original_Node (Res);
           end loop;
*************** package body Ghost is
*** 1124,1138 ****
        --  When the context is a [generic] package declaration, pragma Ghost
        --  resides in the visible declarations.
  
!       if Nkind_In (N, N_Generic_Package_Declaration,
!                       N_Package_Declaration)
        then
           Decl := First (Visible_Declarations (Specification (N)));
  
        --  When the context is a package or a subprogram body, pragma Ghost
        --  resides in the declarative part.
  
!       elsif Nkind_In (N, N_Package_Body, N_Subprogram_Body) then
           Decl := First (Declarations (N));
  
        --  Otherwise pragma Ghost appears in the declarations following N
--- 1127,1140 ----
        --  When the context is a [generic] package declaration, pragma Ghost
        --  resides in the visible declarations.
  
!       if Nkind (N) in N_Generic_Package_Declaration | N_Package_Declaration
        then
           Decl := First (Visible_Declarations (Specification (N)));
  
        --  When the context is a package or a subprogram body, pragma Ghost
        --  resides in the declarative part.
  
!       elsif Nkind (N) in N_Package_Body | N_Subprogram_Body then
           Decl := First (Declarations (N));
  
        --  Otherwise pragma Ghost appears in the declarations following N
*************** package body Ghost is
*** 1177,1237 ****
     -----------------------------------
  
     procedure Mark_And_Set_Ghost_Assignment (N : Node_Id) is
!       Orig_Lhs : constant Node_Id := Name (N);
!       Orig_Ref : constant Node_Id := Ultimate_Prefix (Orig_Lhs);
! 
!       Id  : Entity_Id;
!       Ref : Node_Id;
  
     begin
!       --  A reference to a whole Ghost object (SPARK RM 6.9(1)) appears as an
!       --  identifier. If the reference has not been analyzed yet, preanalyze a
!       --  copy of the reference to discover the nature of its entity.
! 
!       if Nkind (Orig_Ref) = N_Identifier and then not Analyzed (Orig_Ref) then
!          Ref := New_Copy_Tree (Orig_Ref);
! 
!          --  Alter the assignment statement by setting its left-hand side to
!          --  the copy.
! 
!          Set_Name   (N, Ref);
!          Set_Parent (Ref, N);
! 
!          --  Preanalysis is carried out by looking for a Ghost entity while
!          --  suppressing all possible side effects.
! 
!          Find_Direct_Name
!            (N            => Ref,
!             Errors_OK    => False,
!             Marker_OK    => False,
!             Reference_OK => False);
! 
!          --  Restore the original state of the assignment statement
  
!          Set_Name (N, Orig_Lhs);
  
!       --  A potential reference to a Ghost entity is already properly resolved
!       --  when the left-hand side is analyzed.
  
!       else
!          Ref := Orig_Ref;
!       end if;
  
!       --  An assignment statement becomes Ghost when its target denotes a Ghost
!       --  object. Install the Ghost mode of the target.
  
!       Id := Ghost_Entity (Ref);
  
!       if Present (Id) then
!          if Is_Checked_Ghost_Entity (Id) then
!             Install_Ghost_Region (Check, N);
  
!          elsif Is_Ignored_Ghost_Entity (Id) then
!             Install_Ghost_Region (Ignore, N);
  
!             Set_Is_Ignored_Ghost_Node (N);
!             Record_Ignored_Ghost_Node (N);
!          end if;
        end if;
     end Mark_And_Set_Ghost_Assignment;
  
--- 1179,1251 ----
     -----------------------------------
  
     procedure Mark_And_Set_Ghost_Assignment (N : Node_Id) is
!       --  A ghost assignment is an assignment whose left-hand side denotes a
!       --  ghost object. Subcomponents are not marked "ghost", so we need to
!       --  find the containing "whole" object. So, for "P.X.Comp (J) := ...",
!       --  where P is a package, X is a record, and Comp is an array, we need
!       --  to check the ghost flags of X.
  
+       Orig_Lhs : constant Node_Id := Name (N);
     begin
!       --  Ghost assignments are irrelevant when the expander is inactive, and
!       --  processing them in that mode can lead to spurious errors.
  
!       if Expander_Active then
!          if not Analyzed (Orig_Lhs)
!            and then Nkind (Orig_Lhs) = N_Indexed_Component
!            and then Nkind (Prefix (Orig_Lhs)) = N_Selected_Component
!            and then Nkind (Prefix (Prefix (Orig_Lhs))) =
!            N_Indexed_Component
!          then
!             Analyze (Orig_Lhs);
!          end if;
  
!          --  Make sure Lhs is at least preanalyzed, so we can tell whether
!          --  it denotes a ghost variable. In some cases we need to do a full
!          --  analysis, or else the back end gets confused. Note that in the
!          --  preanalysis case, we are preanalyzing a copy of the left-hand
!          --  side name, temporarily attached to the tree.
  
!          declare
!             Lhs : constant Node_Id :=
!               (if Analyzed (Orig_Lhs) then Orig_Lhs
!                else New_Copy_Tree (Orig_Lhs));
!          begin
!             if not Analyzed (Lhs) then
!                Set_Name   (N, Lhs);
!                Set_Parent (Lhs, N);
!                Preanalyze_Without_Errors (Lhs);
!                Set_Name (N, Orig_Lhs);
!             end if;
  
!             declare
!                Whole : constant Node_Id := Whole_Object_Ref (Lhs);
!                Id    : Entity_Id;
!             begin
!                if Is_Entity_Name (Whole) then
!                   Id := Entity (Whole);
  
!                   if Present (Id) then
!                      --  Left-hand side denotes a Checked ghost entity, so
!                      --  install the region.
  
!                      if Is_Checked_Ghost_Entity (Id) then
!                         Install_Ghost_Region (Check, N);
  
!                      --  Left-hand side denotes an Ignored ghost entity, so
!                      --  install the region, and mark the assignment statement
!                      --  as an ignored ghost assignment, so it will be removed
!                      --  later.
  
!                      elsif Is_Ignored_Ghost_Entity (Id) then
!                         Install_Ghost_Region (Ignore, N);
!                         Set_Is_Ignored_Ghost_Node (N);
!                         Record_Ignored_Ghost_Node (N);
!                      end if;
!                   end if;
!                end if;
!             end;
!          end;
        end if;
     end Mark_And_Set_Ghost_Assignment;
  
*************** package body Ghost is
*** 1363,1377 ****
        --  A child package or subprogram declaration becomes Ghost when its
        --  parent is Ghost (SPARK RM 6.9(2)).
  
!       elsif Nkind_In (N, N_Generic_Function_Renaming_Declaration,
!                          N_Generic_Package_Declaration,
!                          N_Generic_Package_Renaming_Declaration,
!                          N_Generic_Procedure_Renaming_Declaration,
!                          N_Generic_Subprogram_Declaration,
!                          N_Package_Declaration,
!                          N_Package_Renaming_Declaration,
!                          N_Subprogram_Declaration,
!                          N_Subprogram_Renaming_Declaration)
          and then Present (Parent_Spec (N))
        then
           Par_Id := Defining_Entity (Unit (Parent_Spec (N)));
--- 1377,1391 ----
        --  A child package or subprogram declaration becomes Ghost when its
        --  parent is Ghost (SPARK RM 6.9(2)).
  
!       elsif Nkind (N) in N_Generic_Function_Renaming_Declaration
!                        | N_Generic_Package_Declaration
!                        | N_Generic_Package_Renaming_Declaration
!                        | N_Generic_Procedure_Renaming_Declaration
!                        | N_Generic_Subprogram_Declaration
!                        | N_Package_Declaration
!                        | N_Package_Renaming_Declaration
!                        | N_Subprogram_Declaration
!                        | N_Subprogram_Renaming_Declaration
          and then Present (Parent_Spec (N))
        then
           Par_Id := Defining_Entity (Unit (Parent_Spec (N)));
*************** package body Ghost is
*** 1569,1582 ****
        --  ??? could extra formal parameters cause a Ghost leak?
  
        if Mark_Formals
!         and then Nkind_In (N, N_Abstract_Subprogram_Declaration,
!                               N_Formal_Abstract_Subprogram_Declaration,
!                               N_Formal_Concrete_Subprogram_Declaration,
!                               N_Generic_Subprogram_Declaration,
!                               N_Subprogram_Body,
!                               N_Subprogram_Body_Stub,
!                               N_Subprogram_Declaration,
!                               N_Subprogram_Renaming_Declaration)
        then
           Param := First (Parameter_Specifications (Specification (N)));
           while Present (Param) loop
--- 1583,1596 ----
        --  ??? could extra formal parameters cause a Ghost leak?
  
        if Mark_Formals
!         and then Nkind (N) in N_Abstract_Subprogram_Declaration
!                             | N_Formal_Abstract_Subprogram_Declaration
!                             | N_Formal_Concrete_Subprogram_Declaration
!                             | N_Generic_Subprogram_Declaration
!                             | N_Subprogram_Body
!                             | N_Subprogram_Body_Stub
!                             | N_Subprogram_Declaration
!                             | N_Subprogram_Renaming_Declaration
        then
           Param := First (Parameter_Specifications (Specification (N)));
           while Present (Param) loop
*************** package body Ghost is
*** 1659,1665 ****
        --      subject to any Ghost annotation.
  
        else
!          pragma Assert (Nam_In (Mode, Name_Disable, Name_None, No_Name));
           return None;
        end if;
     end Name_To_Ghost_Mode;
--- 1673,1679 ----
        --      subject to any Ghost annotation.
  
        else
!          pragma Assert (Mode in Name_Disable | Name_None | No_Name);
           return None;
        end if;
     end Name_To_Ghost_Mode;
*************** package body Ghost is
*** 1678,1697 ****
        if Is_Body (N)
          or else Is_Declaration (N)
          or else Nkind (N) in N_Generic_Instantiation
!         or else Nkind (N) in N_Push_Pop_xxx_Label
!         or else Nkind (N) in N_Raise_xxx_Error
!         or else Nkind (N) in N_Representation_Clause
!         or else Nkind (N) in N_Statement_Other_Than_Procedure_Call
!         or else Nkind_In (N, N_Call_Marker,
!                              N_Freeze_Entity,
!                              N_Freeze_Generic_Entity,
!                              N_Itype_Reference,
!                              N_Pragma,
!                              N_Procedure_Call_Statement,
!                              N_Use_Package_Clause,
!                              N_Use_Type_Clause,
!                              N_Variable_Reference_Marker,
!                              N_With_Clause)
        then
           --  Only ignored Ghost nodes must be recorded in the table
  
--- 1692,1711 ----
        if Is_Body (N)
          or else Is_Declaration (N)
          or else Nkind (N) in N_Generic_Instantiation
!                            | N_Push_Pop_xxx_Label
!                            | N_Raise_xxx_Error
!                            | N_Representation_Clause
!                            | N_Statement_Other_Than_Procedure_Call
!                            | N_Call_Marker
!                            | N_Freeze_Entity
!                            | N_Freeze_Generic_Entity
!                            | N_Itype_Reference
!                            | N_Pragma
!                            | N_Procedure_Call_Statement
!                            | N_Use_Package_Clause
!                            | N_Use_Type_Clause
!                            | N_Variable_Reference_Marker
!                            | N_With_Clause
        then
           --  Only ignored Ghost nodes must be recorded in the table
  
*************** package body Ghost is
*** 1815,1821 ****
        --  The Ghost mode of a [generic] freeze node depends on the Ghost mode
        --  of the entity being frozen.
  
!       elsif Nkind_In (N, N_Freeze_Entity, N_Freeze_Generic_Entity) then
           Set_Ghost_Mode_From_Entity (Entity (N));
  
        --  The Ghost mode of a pragma depends on the associated entity. The
--- 1829,1835 ----
        --  The Ghost mode of a [generic] freeze node depends on the Ghost mode
        --  of the entity being frozen.
  
!       elsif Nkind (N) in N_Freeze_Entity | N_Freeze_Generic_Entity then
           Set_Ghost_Mode_From_Entity (Entity (N));
  
        --  The Ghost mode of a pragma depends on the associated entity. The
*************** package body Ghost is
*** 1856,1859 ****
--- 1870,1893 ----
        end if;
     end Set_Is_Ghost_Entity;
  
+    ----------------------
+    -- Whole_Object_Ref --
+    ----------------------
+ 
+    function Whole_Object_Ref (Ref : Node_Id) return Node_Id is
+    begin
+       if Nkind (Ref) in N_Indexed_Component | N_Slice
+         or else (Nkind (Ref) = N_Selected_Component
+                    and then Is_Object_Reference (Prefix (Ref)))
+       then
+          if Is_Access_Type (Etype (Prefix (Ref))) then
+             return Ref;
+          else
+             return Whole_Object_Ref (Prefix (Ref));
+          end if;
+       else
+          return Ref;
+       end if;
+    end Whole_Object_Ref;
+ 
  end Ghost;
diff -Nrcpad gcc-10.3.0/gcc/ada/ghost.ads gcc-11.1.0/gcc/ada/ghost.ads
*** gcc-10.3.0/gcc/ada/ghost.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/ghost.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2014-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2014-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnat1drv.adb gcc-11.1.0/gcc/ada/gnat1drv.adb
*** gcc-10.3.0/gcc/ada/gnat1drv.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnat1drv.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Stringt;
*** 74,80 ****
  with Stylesw;   use Stylesw;
  with Targparm;  use Targparm;
  with Tbuild;
- with Tree_Gen;
  with Treepr;    use Treepr;
  with Ttypes;
  with Types;     use Types;
--- 74,79 ----
*************** procedure Gnat1drv is
*** 168,173 ****
--- 167,173 ----
  
        if Debug_Flag_Dot_U then
           Modify_Tree_For_C := True;
+          Transform_Function_Array := True;
        end if;
  
        --  -gnatd_A disables generation of ALI files
*************** procedure Gnat1drv is
*** 180,185 ****
--- 180,186 ----
  
        if Generate_C_Code then
           Modify_Tree_For_C := True;
+          Transform_Function_Array := True;
           Unnest_Subprogram_Mode := True;
           Building_Static_Dispatch_Tables := False;
           Minimize_Expression_With_Actions := True;
*************** procedure Gnat1drv is
*** 217,248 ****
           CodePeer_Mode := False;
        end if;
  
-       --  Set ASIS mode if -gnatt and -gnatc are set
- 
-       if Operating_Mode = Check_Semantics and then Tree_Output then
-          ASIS_Mode := True;
- 
-          --  Set ASIS GNSA mode if -gnatd.H is set
- 
-          if Debug_Flag_Dot_HH then
-             ASIS_GNSA_Mode := True;
-          end if;
- 
-          --  Turn off inlining in ASIS mode, since ASIS cannot handle the extra
-          --  information in the trees caused by inlining being active.
- 
-          --  More specifically, the tree seems to be malformed from the ASIS
-          --  point of view if -gnatc and -gnatn appear together???
- 
-          Inline_Active := False;
- 
-          --  Turn off SCIL generation and CodePeer mode in semantics mode,
-          --  since SCIL requires front-end expansion.
- 
-          Generate_SCIL := False;
-          CodePeer_Mode := False;
-       end if;
- 
        --  SCIL mode needs to disable front-end inlining since the generated
        --  trees (in particular order and consistency between specs compiled
        --  as part of a main unit or as part of a with-clause) are causing
--- 218,223 ----
*************** procedure Gnat1drv is
*** 273,281 ****
           --  this way when we are doing CodePeer tests on existing test suites
           --  that may have -gnateg set, to avoid the need for special casing.
  
!          Modify_Tree_For_C      := False;
!          Generate_C_Code        := False;
!          Unnest_Subprogram_Mode := False;
  
           --  Turn off inlining, confuses CodePeer output and gains nothing
  
--- 248,257 ----
           --  this way when we are doing CodePeer tests on existing test suites
           --  that may have -gnateg set, to avoid the need for special casing.
  
!          Modify_Tree_For_C        := False;
!          Transform_Function_Array := False;
!          Generate_C_Code          := False;
!          Unnest_Subprogram_Mode   := False;
  
           --  Turn off inlining, confuses CodePeer output and gains nothing
  
*************** procedure Gnat1drv is
*** 369,378 ****
  
           Xref_Active := True;
  
-          --  Polling mode forced off, since it generates confusing junk
- 
-          Polling_Required := False;
- 
           --  Set operating mode to Generate_Code to benefit from full front-end
           --  expansion (e.g. generics).
  
--- 345,350 ----
*************** procedure Gnat1drv is
*** 406,412 ****
           --  Always perform semantics and generate ali files in CodePeer mode,
           --  so that a gnatmake -c -k will proceed further when possible.
  
!          Force_ALI_Tree_File := True;
           Try_Semantics := True;
  
           --  Make the Ada front end more liberal so that the compiler will
--- 378,384 ----
           --  Always perform semantics and generate ali files in CodePeer mode,
           --  so that a gnatmake -c -k will proceed further when possible.
  
!          Force_ALI_File := True;
           Try_Semantics := True;
  
           --  Make the Ada front end more liberal so that the compiler will
*************** procedure Gnat1drv is
*** 485,493 ****
           --  this way when we are doing GNATprove tests on existing test suites
           --  that may have -gnateg set, to avoid the need for special casing.
  
!          Modify_Tree_For_C := False;
!          Generate_C_Code := False;
!          Unnest_Subprogram_Mode := False;
  
           --  Turn off inlining, which would confuse formal verification output
           --  and gain nothing.
--- 457,466 ----
           --  this way when we are doing GNATprove tests on existing test suites
           --  that may have -gnateg set, to avoid the need for special casing.
  
!          Modify_Tree_For_C        := False;
!          Transform_Function_Array := False;
!          Generate_C_Code          := False;
!          Unnest_Subprogram_Mode   := False;
  
           --  Turn off inlining, which would confuse formal verification output
           --  and gain nothing.
*************** procedure Gnat1drv is
*** 558,567 ****
  
           Xref_Active := True;
  
-          --  Polling mode forced off, since it generates confusing junk
- 
-          Polling_Required := False;
- 
           --  Set operating mode to Check_Semantics, but a light front-end
           --  expansion is still performed.
  
--- 531,536 ----
*************** procedure Gnat1drv is
*** 655,665 ****
  
        --  Set and check exception mechanism. This is only meaningful when
        --  compiling, and in particular not meaningful for special modes used
!       --  for program analysis rather than compilation: ASIS mode, CodePeer
!       --  mode and GNATprove mode.
  
        if Operating_Mode = Generate_Code
!         and then not (ASIS_Mode or CodePeer_Mode or GNATprove_Mode)
        then
           case Targparm.Frontend_Exceptions_On_Target is
              when True =>
--- 624,634 ----
  
        --  Set and check exception mechanism. This is only meaningful when
        --  compiling, and in particular not meaningful for special modes used
!       --  for program analysis rather than compilation: CodePeer mode and
!       --  GNATprove mode.
  
        if Operating_Mode = Generate_Code
!         and then not (CodePeer_Mode or GNATprove_Mode)
        then
           case Targparm.Frontend_Exceptions_On_Target is
              when True =>
*************** procedure Gnat1drv is
*** 803,812 ****
  
          not Generate_C_Code
  
-         --  No back-end inlining available in ASIS mode
- 
-         and then not ASIS_Mode
- 
          --  No back-end inlining in GNATprove mode, since it just confuses
          --  the formal verification process.
  
--- 772,777 ----
*************** procedure Gnat1drv is
*** 838,843 ****
--- 803,824 ----
           Set_Standard_Output;
        end if;
  
+       --  Enable or disable the support for 128-bit types. It is automatically
+       --  enabled if the back end supports them, unless -gnatd.H is specified.
+ 
+       Enable_128bit_Types := Ttypes.Standard_Long_Long_Long_Integer_Size = 128;
+ 
+       if Enable_128bit_Types and then Debug_Flag_Dot_HH then
+          Enable_128bit_Types := False;
+ 
+          Ttypes.Standard_Long_Long_Long_Integer_Size :=
+            Ttypes.Standard_Long_Long_Integer_Size;
+          Ttypes.System_Max_Integer_Size :=
+            Ttypes.Standard_Long_Long_Integer_Size;
+          Ttypes.System_Max_Binary_Modulus_Power :=
+            Ttypes.Standard_Long_Long_Integer_Size;
+       end if;
+ 
        --  Finally capture adjusted value of Suppress_Options as the initial
        --  value for Scope_Suppress, which will be modified as we move from
        --  scope to scope (by Suppress/Unsuppress/Overflow_Checks pragmas).
*************** procedure Gnat1drv is
*** 1039,1053 ****
        --  by the backend where possible).
  
        Sem_Ch13.Validate_Address_Clauses;
- 
-       --  Validate independence pragmas (again using values annotated by the
-       --  back end for component layout where possible) but only for non-GCC
-       --  back ends, as this is done a priori for GCC back ends.
-       --  ??? We use to test for AAMP_On_Target which is now gone, consider
-       --
-       --  if AAMP_On_Target then
-       --     Sem_Ch13.Validate_Independence;
-       --  end if;
     end Post_Compilation_Validation_Checks;
  
     -----------------------------------
--- 1020,1025 ----
*************** begin
*** 1106,1114 ****
        --  Initialize all packages. For the most part, these initialization
        --  calls can be made in any order. Exceptions are as follows:
  
!       --  Lib.Initialize need to be called before Scan_Compiler_Arguments,
        --  because it initializes a table filled by Scan_Compiler_Arguments.
  
        Osint.Initialize;
        Fmap.Reset_Tables;
        Lib.Initialize;
--- 1078,1090 ----
        --  Initialize all packages. For the most part, these initialization
        --  calls can be made in any order. Exceptions are as follows:
  
!       --  Lib.Initialize needs to be called before Scan_Compiler_Arguments,
        --  because it initializes a table filled by Scan_Compiler_Arguments.
  
+       --  Atree.Initialize needs to be called after Scan_Compiler_Arguments,
+       --  because the value specified by the -gnaten switch is used by
+       --  Atree.Initialize.
+ 
        Osint.Initialize;
        Fmap.Reset_Tables;
        Lib.Initialize;
*************** begin
*** 1301,1309 ****
  
           --  Generate ALI file if specially requested
  
!          if Opt.Force_ALI_Tree_File then
              Write_ALI (Object => False);
-             Tree_Gen;
           end if;
  
           Exit_Program (E_Errors);
--- 1277,1284 ----
  
           --  Generate ALI file if specially requested
  
!          if Opt.Force_ALI_File then
              Write_ALI (Object => False);
           end if;
  
           Exit_Program (E_Errors);
*************** begin
*** 1338,1344 ****
           Treepr.Tree_Dump;
           Errout.Finalize (Last_Call => True);
           Errout.Output_Messages;
-          Tree_Gen;
           Namet.Finalize;
           Check_Rep_Info;
  
--- 1313,1318 ----
*************** begin
*** 1379,1386 ****
        --  We can generate code for a package declaration or a subprogram
        --  declaration only if it does not required a body.
  
!       elsif Nkind_In (Main_Unit_Kind, N_Package_Declaration,
!                                       N_Subprogram_Declaration)
          and then
            (not Body_Required (Main_Unit_Node)
               or else Distribution_Stub_Mode = Generate_Caller_Stub_Body)
--- 1353,1359 ----
        --  We can generate code for a package declaration or a subprogram
        --  declaration only if it does not required a body.
  
!       elsif Main_Unit_Kind in N_Package_Declaration | N_Subprogram_Declaration
          and then
            (not Body_Required (Main_Unit_Node)
               or else Distribution_Stub_Mode = Generate_Caller_Stub_Body)
*************** begin
*** 1390,1397 ****
        --  We can generate code for a generic package declaration of a generic
        --  subprogram declaration only if does not require a body.
  
!       elsif Nkind_In (Main_Unit_Kind, N_Generic_Package_Declaration,
!                                       N_Generic_Subprogram_Declaration)
          and then not Body_Required (Main_Unit_Node)
        then
           Back_End_Mode := Generate_Object;
--- 1363,1370 ----
        --  We can generate code for a generic package declaration of a generic
        --  subprogram declaration only if does not require a body.
  
!       elsif Main_Unit_Kind in
!               N_Generic_Package_Declaration | N_Generic_Subprogram_Declaration
          and then not Body_Required (Main_Unit_Node)
        then
           Back_End_Mode := Generate_Object;
*************** begin
*** 1399,1406 ****
        --  Compilation units that are renamings do not require bodies, so we can
        --  generate code for them.
  
!       elsif Nkind_In (Main_Unit_Kind, N_Package_Renaming_Declaration,
!                                       N_Subprogram_Renaming_Declaration)
        then
           Back_End_Mode := Generate_Object;
  
--- 1372,1379 ----
        --  Compilation units that are renamings do not require bodies, so we can
        --  generate code for them.
  
!       elsif Main_Unit_Kind in N_Package_Renaming_Declaration |
!                               N_Subprogram_Renaming_Declaration
        then
           Back_End_Mode := Generate_Object;
  
*************** begin
*** 1491,1497 ****
  
                 --  Force generation of ALI file, for backward compatibility
  
!                Opt.Force_ALI_Tree_File := True;
  
              elsif Main_Unit_Kind = N_Subunit then
                 Write_Str (" (subunit)");
--- 1464,1470 ----
  
                 --  Force generation of ALI file, for backward compatibility
  
!                Opt.Force_ALI_File := True;
  
              elsif Main_Unit_Kind = N_Subunit then
                 Write_Str (" (subunit)");
*************** begin
*** 1513,1519 ****
  
                 --  Force generation of ALI file, for backward compatibility
  
!                Opt.Force_ALI_Tree_File := True;
  
              --  Only other case is a package spec
  
--- 1486,1492 ----
  
                 --  Force generation of ALI file, for backward compatibility
  
!                Opt.Force_ALI_File := True;
  
              --  Only other case is a package spec
  
*************** begin
*** 1529,1535 ****
           Errout.Finalize (Last_Call => True);
           Errout.Output_Messages;
           Treepr.Tree_Dump;
-          Tree_Gen;
  
           --  Generate ALI file if specially requested, or for missing subunits,
           --  subunits or predefined generic. For ignored ghost code, the object
--- 1502,1507 ----
*************** begin
*** 1538,1544 ****
           --  an object file without an ALI file.
  
           if Is_Ignored_Ghost_Unit (Main_Unit_Node)
!            or else Opt.Force_ALI_Tree_File
           then
              Write_ALI (Object => Is_Ignored_Ghost_Unit (Main_Unit_Node));
           end if;
--- 1510,1516 ----
           --  an object file without an ALI file.
  
           if Is_Ignored_Ghost_Unit (Main_Unit_Node)
!            or else Opt.Force_ALI_File
           then
              Write_ALI (Object => Is_Ignored_Ghost_Unit (Main_Unit_Node));
           end if;
*************** begin
*** 1553,1560 ****
           Exit_Program (Ecode);
        end if;
  
!       --  In -gnatc mode we only do annotation if -gnatt or -gnatR is also set,
!       --  or if -gnatwz is enabled (default setting) and there is an unchecked
        --  conversion that involves a type whose size is not statically known,
        --  as indicated by Back_Annotate_Rep_Info being set to True.
  
--- 1525,1532 ----
           Exit_Program (Ecode);
        end if;
  
!       --  In -gnatc mode we only do annotation if -gnatR is also set, or if
!       --  -gnatwz is enabled (default setting) and there is an unchecked
        --  conversion that involves a type whose size is not statically known,
        --  as indicated by Back_Annotate_Rep_Info being set to True.
  
*************** begin
*** 1564,1588 ****
        --  Annotation is suppressed for targets where front-end layout is
        --  enabled, because the front end determines representations.
  
-       --  The back end is not invoked in ASIS mode with GNSA because all type
-       --  representation information will be provided by the GNSA back end, not
-       --  gigi.
- 
        --  A special back end is always called in CodePeer and GNATprove modes,
        --  unless this is a subunit.
  
        if Back_End_Mode = Declarations_Only
          and then
            (not (Back_Annotate_Rep_Info or Generate_SCIL or GNATprove_Mode)
!             or else Main_Unit_Kind = N_Subunit
!             or else ASIS_GNSA_Mode)
        then
           Post_Compilation_Validation_Checks;
           Errout.Finalize (Last_Call => True);
           Errout.Output_Messages;
           Write_ALI (Object => False);
           Tree_Dump;
-          Tree_Gen;
           Namet.Finalize;
  
           if not (Generate_SCIL or GNATprove_Mode) then
--- 1536,1554 ----
        --  Annotation is suppressed for targets where front-end layout is
        --  enabled, because the front end determines representations.
  
        --  A special back end is always called in CodePeer and GNATprove modes,
        --  unless this is a subunit.
  
        if Back_End_Mode = Declarations_Only
          and then
            (not (Back_Annotate_Rep_Info or Generate_SCIL or GNATprove_Mode)
!             or else Main_Unit_Kind = N_Subunit)
        then
           Post_Compilation_Validation_Checks;
           Errout.Finalize (Last_Call => True);
           Errout.Output_Messages;
           Write_ALI (Object => False);
           Tree_Dump;
           Namet.Finalize;
  
           if not (Generate_SCIL or GNATprove_Mode) then
*************** begin
*** 1701,1713 ****
           Back_End.Gen_Or_Update_Object_File;
        end if;
  
!       --  Generate ASIS tree after writing the ALI file, since in ASIS mode,
!       --  Write_ALI may in fact result in further tree decoration from the
!       --  original tree file. Note that we dump the tree just before generating
!       --  it, so that the dump will exactly reflect what is written out.
  
        Treepr.Tree_Dump;
-       Tree_Gen;
  
        --  Finalize name table and we are all done
  
--- 1667,1678 ----
           Back_End.Gen_Or_Update_Object_File;
        end if;
  
!       --  Generate tree after writing the ALI file, since Write_ALI may in
!       --  fact result in further tree decoration from the original tree file.
!       --  Note that we dump the tree just before generating it, so that the
!       --  dump will exactly reflect what is written out.
  
        Treepr.Tree_Dump;
  
        --  Finalize name table and we are all done
  
*************** begin
*** 1742,1748 ****
     end;
  
     <<End_Of_Program>>
!    null;
  
  --  The outer exception handler handles an unrecoverable error
  
--- 1707,1716 ----
     end;
  
     <<End_Of_Program>>
! 
!    if Debug_Flag_Dot_AA then
!       Atree.Print_Statistics;
!    end if;
  
  --  The outer exception handler handles an unrecoverable error
  
diff -Nrcpad gcc-10.3.0/gcc/ada/gnat1drv.ads gcc-11.1.0/gcc/ada/gnat1drv.ads
*** gcc-10.3.0/gcc/ada/gnat1drv.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnat1drv.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnat_cuda.adb gcc-11.1.0/gcc/ada/gnat_cuda.adb
*** gcc-10.3.0/gcc/ada/gnat_cuda.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/gnat_cuda.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,586 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                                 C U D A                                  --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+ -- for  more details.  You should have  received  a copy of the GNU General --
+ -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+ -- http://www.gnu.org/licenses for a complete copy of the license.          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package defines CUDA-specific datastructures and functions.
+ 
+ with Atree;    use Atree;
+ with Debug;    use Debug;
+ with Elists;   use Elists;
+ with Namet;    use Namet;
+ with Nlists;   use Nlists;
+ with Nmake;    use Nmake;
+ with Rtsfind;  use Rtsfind;
+ with Sinfo;    use Sinfo;
+ with Stringt;  use Stringt;
+ with Tbuild;   use Tbuild;
+ with Uintp;    use Uintp;
+ with Sem;      use Sem;
+ with Sem_Util; use Sem_Util;
+ with Snames;   use Snames;
+ 
+ with GNAT.HTable;
+ 
+ package body GNAT_CUDA is
+ 
+    --------------------------------------
+    -- Hash Table for CUDA_Global nodes --
+    --------------------------------------
+ 
+    type Hash_Range is range 0 .. 510;
+    --  Size of hash table headers
+ 
+    function Hash (F : Entity_Id) return Hash_Range;
+    --  Hash function for hash table
+ 
+    package CUDA_Kernels_Table is new
+      GNAT.HTable.Simple_HTable
+        (Header_Num => Hash_Range,
+         Element    => Elist_Id,
+         No_Element => No_Elist,
+         Key        => Entity_Id,
+         Hash       => Hash,
+         Equal      => "=");
+    --  The keys of this table are package entities whose bodies contain at
+    --  least one procedure marked with aspect CUDA_Global. The values are
+    --  Elists of the marked procedures.
+ 
+    function Get_CUDA_Kernels (Pack_Id : Entity_Id) return Elist_Id;
+    --  Returns an Elist of all procedures marked with pragma CUDA_Global that
+    --  are declared within package body Pack_Body. Returns No_Elist if
+    --  Pack_Id does not contain such procedures.
+ 
+    procedure Set_CUDA_Kernels
+      (Pack_Id : Entity_Id;
+       Kernels : Elist_Id);
+    --  Stores Kernels as the list of kernels belonging to the package entity
+    --  Pack_Id. Pack_Id must not have a list of kernels.
+ 
+    ---------------------
+    -- Add_CUDA_Kernel --
+    ---------------------
+ 
+    procedure Add_CUDA_Kernel
+      (Pack_Id : Entity_Id;
+       Kernel  : Entity_Id)
+    is
+       Kernels : Elist_Id := Get_CUDA_Kernels (Pack_Id);
+    begin
+       if Kernels = No_Elist then
+          Kernels := New_Elmt_List;
+          Set_CUDA_Kernels (Pack_Id, Kernels);
+       end if;
+       Append_Elmt (Kernel, Kernels);
+    end Add_CUDA_Kernel;
+ 
+    ----------
+    -- Hash --
+    ----------
+ 
+    function Hash (F : Entity_Id) return Hash_Range is
+    begin
+       return Hash_Range (F mod 511);
+    end Hash;
+ 
+    ----------------------
+    -- Get_CUDA_Kernels --
+    ----------------------
+ 
+    function Get_CUDA_Kernels (Pack_Id : Entity_Id) return Elist_Id is
+    begin
+       return CUDA_Kernels_Table.Get (Pack_Id);
+    end Get_CUDA_Kernels;
+ 
+    ------------------------------------------
+    -- Build_And_Insert_CUDA_Initialization --
+    ------------------------------------------
+ 
+    procedure Build_And_Insert_CUDA_Initialization (N : Node_Id) is
+ 
+       --  For the following kernel declaration:
+       --
+       --  package body <Package_Name> is
+       --     procedure <Proc_Name> (X : Integer) with CUDA_Global;
+       --  end package;
+       --
+       --  Insert the following declarations:
+       --
+       --     Fat_Binary : System.Address;
+       --     pragma Import
+       --        (Convention    => C,
+       --         Entity        => Fat_Binary,
+       --         External_Name => "_binary_<Package_Name>_fatbin_start");
+       --
+       --     Wrapper : Fatbin_Wrapper :=
+       --       (16#466243b1#, 1, Fat_Binary'Address, System.Null_Address);
+       --
+       --     Proc_Symbol_Name : Interfaces.C.Strings.Chars_Ptr :=
+       --       Interfaces.C.Strings.New_Char_Array("<Proc_Name>");
+       --
+       --     Fat_Binary_Handle : System.Address :=
+       --       CUDA.Internal.Register_Fat_Binary (Wrapper'Address);
+       --
+       --     procedure Initialize_CUDA_Kernel is
+       --     begin
+       --        CUDA.Internal.Register_Function
+       --           (Fat_Binary_Handle,
+       --            <Proc_Name>'Address,
+       --            Proc_Symbol_Name,
+       --            Proc_Symbol_Name,
+       --            -1,
+       --            System.Null_Address,
+       --            System.Null_Address,
+       --            System.Null_Address,
+       --            System.Null_Address,
+       --            System.Null_Address);
+       --        CUDA.Internal.Register_Fat_Binary_End (Fat_Binary_Handle);
+       --     end Initialize_CUDA_Kernel;
+       --
+       --  Proc_Symbol_Name is the name of the procedure marked with
+       --  CUDA_Global. The CUDA runtime uses this in order to be able to find
+       --  kernels in the fat binary, so it has to match the name of the
+       --  procedure symbol compiled by GNAT_LLVM. When looking at the code
+       --  generated by NVCC, it seems that the CUDA runtime also needs the name
+       --  of the procedure symbol of the host. Fortuantely, the procedures are
+       --  named the same way whether they are compiled for the host or the
+       --  device, so we use Vector_Add_Name to specify the name of the symbol
+       --  for both the host and the device. The meaning of the rest of the
+       --  arguments is unknown.
+ 
+       function Build_CUDA_Init_Proc
+         (Init_Id      : Entity_Id;
+          CUDA_Kernels : Elist_Id;
+          Handle_Id    : Entity_Id;
+          Pack_Decls   : List_Id) return Node_Id;
+       --  Create the declaration of Init_Id, the function that binds each
+       --  kernel present in CUDA_Kernels with the fat binary Handle_Id and then
+       --  tells the CUDA runtime that no new function will be bound to the fat
+       --  binary.
+ 
+       function Build_Fat_Binary_Declaration
+         (Bin_Id : Entity_Id) return Node_Id;
+       --  Create a declaration for Bin_Id, the entity that represents the fat
+       --  binary, i.e.:
+       --
+       --    Bin_Id : System.Address;
+ 
+       function Build_Fat_Binary_Handle_Declaration
+         (Handle_Id  : Entity_Id;
+          Wrapper_Id : Entity_Id) return Node_Id;
+       --  Create the declaration of Handle_Id, a System.Address that will
+       --  receive the results of passing the address of Wrapper_Id to
+       --  CUDA.Register_Fat_Binary, i.e.:
+       --
+       --    Handle_Id : System.Address :=
+       --      CUDA.Register_Fat_Binary (Wrapper_Id'Address)
+ 
+       function Build_Fat_Binary_Wrapper_Declaration
+         (Wrapper_Id : Entity_Id;
+          Bin_Id     : Entity_Id) return Node_Id;
+       --  Create the declaration of the fat binary wrapper Wrapper_Id, which
+       --  holds magic numbers and Bin_Id'Address, i.e.:
+       --
+       --     Wrapper_Id : System.Address :=
+       --       (16#466243b1#, 1, Bin_Id'Address, System.Null_Address);
+ 
+       function Build_Import_Pragma
+         (Bin_Id    : Entity_Id;
+          Pack_Body : Node_Id) return Node_Id;
+       --  Create a pragma that will bind the fat binary Bin_Id to its external
+       --  symbol. N is the package body Bin_Id belongs to, i.e.:
+       --
+       --     pragma Import
+       --        (Convention    => C,
+       --         Entity        => Bin_Id,
+       --         External_Name => "_binary_<Pack_Body's name>_fatbin_start");
+ 
+       function Build_Kernel_Name_Declaration
+         (Kernel : Entity_Id) return Node_Id;
+       --  Create the declaration of a C string that contains the name of
+       --  Kernel's symbol, i.e.:
+       --
+       --     Kernel : Interfaces.C.Strings.Chars_Ptr :=
+       --       Interfaces.C.Strings.New_Char_Array("<Kernel's name>");
+ 
+       function Build_Register_Procedure_Call
+         (Loc         : Source_Ptr;
+          Bin         : Entity_Id;
+          Kernel      : Entity_Id;
+          Kernel_Name : Entity_Id) return Node_Id;
+       --  Return a call to CUDA.Internal.Register_Function that binds Kernel
+       --  (the entity of a procedure) to the symbol described by the C string
+       --  Kernel_Name in the fat binary Bin, using Loc as location.
+ 
+       --------------------------
+       -- Build_CUDA_Init_Proc --
+       --------------------------
+ 
+       function Build_CUDA_Init_Proc
+         (Init_Id      : Entity_Id;
+          CUDA_Kernels : Elist_Id;
+          Handle_Id    : Entity_Id;
+          Pack_Decls   : List_Id) return Node_Id
+       is
+          Loc : constant Source_Ptr := Sloc (Init_Id);
+ 
+          Stmts : constant List_Id := New_List;
+          --  List of statements that will be used by the cuda initialization
+          --  function.
+ 
+          New_Stmt : Node_Id;
+          --  Temporary variable to hold the various newly-created nodes.
+ 
+          Kernel_Elmt : Elmt_Id;
+          Kernel_Id   : Entity_Id;
+ 
+       begin
+          --  For each CUDA_Global function, declare a C string that holds
+          --  its symbol's name (i.e. packagename __ functionname).
+ 
+          --  Also create a function call to CUDA.Internal.Register_Function
+          --  that takes the declared C string, a pointer to the function and
+          --  the fat binary handle.
+ 
+          Kernel_Elmt := First_Elmt (CUDA_Kernels);
+          while Present (Kernel_Elmt) loop
+             Kernel_Id := Node (Kernel_Elmt);
+ 
+             New_Stmt :=
+               Build_Kernel_Name_Declaration (Kernel_Id);
+             Append (New_Stmt, Pack_Decls);
+             Analyze (New_Stmt);
+ 
+             Append_To (Stmts,
+               Build_Register_Procedure_Call (Loc,
+                 Bin         => Handle_Id,
+                 Kernel      => Kernel_Id,
+                 Kernel_Name => Defining_Entity (New_Stmt)));
+ 
+             Next_Elmt (Kernel_Elmt);
+          end loop;
+ 
+          --  Finish the CUDA initialization function: add a call to
+          --  register_fat_binary_end, to let the CUDA runtime know that we
+          --  won't be registering any other symbol with the current fat binary.
+ 
+          Append_To (Stmts,
+            Make_Procedure_Call_Statement (Loc,
+              Name                   =>
+                New_Occurrence_Of (RTE (RE_Register_Fat_Binary_End), Loc),
+              Parameter_Associations =>
+                New_List (New_Occurrence_Of (Handle_Id, Loc))));
+ 
+          --  Now that we have all the declarations and calls we need, we can
+          --  build and and return the initialization procedure.
+ 
+          return
+            Make_Subprogram_Body (Loc,
+              Specification              =>
+                Make_Procedure_Specification (Loc, Init_Id),
+              Declarations               => New_List,
+              Handled_Statement_Sequence =>
+                Make_Handled_Sequence_Of_Statements (Loc, Stmts));
+       end Build_CUDA_Init_Proc;
+ 
+       ----------------------------------
+       -- Build_Fat_Binary_Declaration --
+       ----------------------------------
+ 
+       function Build_Fat_Binary_Declaration
+         (Bin_Id : Entity_Id) return Node_Id
+       is
+       begin
+          return
+            Make_Object_Declaration (Sloc (Bin_Id),
+              Defining_Identifier => Bin_Id,
+              Object_Definition   =>
+                New_Occurrence_Of (RTE (RE_Address), Sloc (Bin_Id)));
+       end Build_Fat_Binary_Declaration;
+ 
+       -----------------------------------------
+       -- Build_Fat_Binary_Handle_Declaration --
+       -----------------------------------------
+ 
+       function Build_Fat_Binary_Handle_Declaration
+         (Handle_Id  : Entity_Id;
+          Wrapper_Id : Entity_Id) return Node_Id
+       is
+          Loc : constant Source_Ptr := Sloc (Handle_Id);
+       begin
+          --  Generate:
+          --    Handle_Id : System.Address :=
+          --      CUDA.Register_Fat_Binary (Wrapper_Id'Address);
+ 
+          return
+            Make_Object_Declaration (Loc,
+              Defining_Identifier => Handle_Id,
+              Object_Definition   => New_Occurrence_Of (RTE (RE_Address), Loc),
+              Expression          =>
+                Make_Function_Call (Loc,
+                  Name                   =>
+                    New_Occurrence_Of (RTE (RE_Register_Fat_Binary), Loc),
+                  Parameter_Associations => New_List (
+                    Make_Attribute_Reference (Loc,
+                      Prefix         =>
+                        New_Occurrence_Of (Wrapper_Id, Loc),
+                      Attribute_Name => Name_Address))));
+       end Build_Fat_Binary_Handle_Declaration;
+ 
+       ------------------------------------------
+       -- Build_Fat_Binary_Wrapper_Declaration --
+       ------------------------------------------
+ 
+       function Build_Fat_Binary_Wrapper_Declaration
+         (Wrapper_Id : Entity_Id;
+          Bin_Id     : Entity_Id) return Node_Id
+       is
+          Loc : constant Source_Ptr := Sloc (Wrapper_Id);
+       begin
+          return
+            Make_Object_Declaration (Loc,
+              Defining_Identifier => Wrapper_Id,
+              Object_Definition   =>
+                New_Occurrence_Of (RTE (RE_Fatbin_Wrapper), Loc),
+              Expression          =>
+                Make_Aggregate (Loc,
+                  Expressions => New_List (
+                    Make_Integer_Literal (Loc, UI_From_Int (16#466243b1#)),
+                    Make_Integer_Literal (Loc, UI_From_Int (1)),
+                    Make_Attribute_Reference (Loc,
+                      Prefix         => New_Occurrence_Of (Bin_Id, Loc),
+                      Attribute_Name => Name_Address),
+                    New_Occurrence_Of (RTE (RE_Null_Address), Loc))));
+       end Build_Fat_Binary_Wrapper_Declaration;
+ 
+       -------------------------
+       -- Build_Import_Pragma --
+       -------------------------
+ 
+       function Build_Import_Pragma
+         (Bin_Id    : Entity_Id;
+          Pack_Body : Node_Id) return Node_Id
+       is
+          Loc             : constant Source_Ptr := Sloc (Bin_Id);
+          External_Symbol : String_Id;
+       begin
+          Start_String;
+          Store_String_Chars
+            ("_binary_"
+             & Get_Name_String (Chars (Defining_Unit_Name (Pack_Body)))
+             & "_fatbin_start");
+          External_Symbol := End_String;
+ 
+          return
+            Make_Pragma (Loc,
+              Pragma_Identifier            =>
+                Make_Identifier (Loc, Name_Import),
+              Pragma_Argument_Associations => New_List (
+                Make_Pragma_Argument_Association (Loc,
+                  Chars      => Name_Convention,
+                  Expression => Make_Identifier (Loc, Name_C)),
+                Make_Pragma_Argument_Association (Loc,
+                  Chars      => Name_Entity,
+                  Expression => New_Occurrence_Of (Bin_Id, Loc)),
+                Make_Pragma_Argument_Association (Loc,
+                  Chars      => Name_External_Name,
+                  Expression => Make_String_Literal (Loc, External_Symbol))));
+       end Build_Import_Pragma;
+ 
+       -------------------------------------
+       -- Build_Kernel_Name_Declaration --
+       -------------------------------------
+ 
+       function Build_Kernel_Name_Declaration
+         (Kernel : Entity_Id) return Node_Id
+       is
+          Loc : constant Source_Ptr := Sloc (Kernel);
+ 
+          Package_Name : constant String :=
+            Get_Name_String (Chars (Scope (Kernel)));
+ 
+          Symbol_Name : constant String := Get_Name_String (Chars (Kernel));
+ 
+          Kernel_Name : String_Id;
+       begin
+          Start_String;
+          Store_String_Chars (Package_Name & "__" & Symbol_Name);
+          Kernel_Name := End_String;
+ 
+          return
+            Make_Object_Declaration (Loc,
+              Defining_Identifier => Make_Temporary (Loc, 'C'),
+              Object_Definition   =>
+                New_Occurrence_Of (RTE (RE_Chars_Ptr), Loc),
+              Expression          =>
+                Make_Function_Call (Loc,
+                  Name                   =>
+                    New_Occurrence_Of (RTE (RE_New_Char_Array), Loc),
+                  Parameter_Associations => New_List (
+                    Make_String_Literal (Loc, Kernel_Name))));
+       end Build_Kernel_Name_Declaration;
+ 
+       -----------------------------------
+       -- Build_Register_Procedure_Call --
+       -----------------------------------
+ 
+       function Build_Register_Procedure_Call
+         (Loc         : Source_Ptr;
+          Bin         : Entity_Id;
+          Kernel      : Entity_Id;
+          Kernel_Name : Entity_Id) return Node_Id
+       is
+          Args : constant List_Id := New_List;
+       begin
+          --  First argument: the handle of the fat binary.
+ 
+          Append (New_Occurrence_Of (Bin, Loc), Args);
+ 
+          --  Second argument: the host address of the function that is
+          --  marked with CUDA_Global.
+ 
+          Append_To (Args,
+            Make_Attribute_Reference (Loc,
+              Prefix         => New_Occurrence_Of (Kernel, Loc),
+              Attribute_Name => Name_Address));
+ 
+          --  Third argument, the name of the function on the host.
+ 
+          Append (New_Occurrence_Of (Kernel_Name, Loc), Args);
+ 
+          --  Fourth argument, the name of the function on the device.
+ 
+          Append (New_Occurrence_Of (Kernel_Name, Loc), Args);
+ 
+          --  Fith argument: -1. Meaning unknown - this has been copied from
+          --  LLVM.
+ 
+          Append (Make_Integer_Literal (Loc, UI_From_Int (-1)), Args);
+ 
+          --  Args 6, 7, 8, 9, 10: Null pointers. Again, meaning unknown.
+ 
+          for Arg_Count in 1 .. 5 loop
+             Append_To (Args, New_Occurrence_Of (RTE (RE_Null_Address), Loc));
+          end loop;
+ 
+          --  Build the call to CUDARegisterFunction, passing the argument
+          --  list we just built.
+ 
+          return
+            Make_Procedure_Call_Statement (Loc,
+              Name                   =>
+                New_Occurrence_Of (RTE (RE_Register_Function), Loc),
+              Parameter_Associations => Args);
+       end Build_Register_Procedure_Call;
+ 
+       --  Local declarations
+ 
+       Loc : constant Source_Ptr := Sloc (N);
+ 
+       Spec_Id : constant Node_Id := Corresponding_Spec (N);
+       --  The specification of the package we're adding a cuda init func to.
+ 
+       Pack_Decls : constant List_Id := Declarations (N);
+ 
+       CUDA_Node_List : constant Elist_Id := Get_CUDA_Kernels (Spec_Id);
+       --  CUDA nodes that belong to the package.
+ 
+       CUDA_Init_Func : Entity_Id;
+       --  Entity of the cuda init func.
+ 
+       Fat_Binary : Entity_Id;
+       --  Entity of the fat binary of N. Bound to said fat binary by a pragma.
+ 
+       Fat_Binary_Handle : Entity_Id;
+       --  Entity of the result of passing the fat binary wrapper to.
+       --  CUDA.Register_Fat_Binary.
+ 
+       Fat_Binary_Wrapper : Entity_Id;
+       --  Entity of a record that holds a bunch of magic numbers and a
+       --  reference to Fat_Binary.
+ 
+       New_Stmt : Node_Id;
+       --  Node to store newly-created declarations
+ 
+    --  Start of processing for Build_And_Insert_CUDA_Initialization
+ 
+    begin
+       if CUDA_Node_List = No_Elist or not Debug_Flag_Underscore_C then
+          return;
+       end if;
+ 
+       Fat_Binary := Make_Temporary (Loc, 'C');
+       New_Stmt := Build_Fat_Binary_Declaration (Fat_Binary);
+       Append_To (Pack_Decls, New_Stmt);
+       Analyze (New_Stmt);
+ 
+       New_Stmt := Build_Import_Pragma (Fat_Binary, N);
+       Append_To (Pack_Decls, New_Stmt);
+       Analyze (New_Stmt);
+ 
+       Fat_Binary_Wrapper := Make_Temporary (Loc, 'C');
+       New_Stmt :=
+         Build_Fat_Binary_Wrapper_Declaration
+           (Wrapper_Id => Fat_Binary_Wrapper,
+            Bin_Id     => Fat_Binary);
+       Append_To (Pack_Decls, New_Stmt);
+       Analyze (New_Stmt);
+ 
+       Fat_Binary_Handle := Make_Temporary (Loc, 'C');
+       New_Stmt :=
+         Build_Fat_Binary_Handle_Declaration
+           (Fat_Binary_Handle, Fat_Binary_Wrapper);
+       Append_To (Pack_Decls, New_Stmt);
+       Analyze (New_Stmt);
+ 
+       CUDA_Init_Func := Make_Temporary (Loc, 'C');
+       New_Stmt :=
+         Build_CUDA_Init_Proc
+           (Init_Id      => CUDA_Init_Func,
+            CUDA_Kernels => CUDA_Node_List,
+            Handle_Id    => Fat_Binary_Handle,
+            Pack_Decls   => Pack_Decls);
+       Append_To (Pack_Decls, New_Stmt);
+       Analyze (New_Stmt);
+ 
+       New_Stmt :=
+         Make_Procedure_Call_Statement (Loc,
+           Name => New_Occurrence_Of (CUDA_Init_Func, Loc));
+       Append_To (Pack_Decls, New_Stmt);
+       Analyze (New_Stmt);
+    end Build_And_Insert_CUDA_Initialization;
+ 
+    --------------------
+    -- Set_CUDA_Nodes --
+    --------------------
+ 
+    procedure Set_CUDA_Kernels
+      (Pack_Id : Entity_Id;
+       Kernels : Elist_Id)
+    is
+    begin
+       pragma Assert (Get_CUDA_Kernels (Pack_Id) = No_Elist);
+       CUDA_Kernels_Table.Set (Pack_Id, Kernels);
+    end Set_CUDA_Kernels;
+ 
+ end GNAT_CUDA;
diff -Nrcpad gcc-10.3.0/gcc/ada/gnat_cuda.ads gcc-11.1.0/gcc/ada/gnat_cuda.ads
*** gcc-10.3.0/gcc/ada/gnat_cuda.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/gnat_cuda.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,107 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                                 C U D A                                  --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+ -- for  more details.  You should have  received  a copy of the GNU General --
+ -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+ -- http://www.gnu.org/licenses for a complete copy of the license.          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package defines CUDA-specific datastructures and subprograms.
+ --
+ --  Compiling for CUDA requires compiling for two targets. One is the CPU (more
+ --  frequently named "host"), the other is the GPU (the "device"). Compiling
+ --  for the host requires compiling the whole program. Compiling for the device
+ --  only requires compiling packages that contain CUDA kernels.
+ --
+ --  When compiling for the device, GNAT-LLVM is used. It produces assembly
+ --  tailored to Nvidia's GPU (NVPTX). This NVPTX code is then assembled into
+ --  an object file by ptxas, an assembler provided by Nvidia. This object file
+ --  is then combined with its source code into a fat binary by a tool named
+ --  `fatbin`, also provided by Nvidia. The resulting fat binary is turned into
+ --  a regular object file by the host's linker and linked with the program that
+ --  executes on the host.
+ --
+ --  A CUDA kernel is a procedure marked with the CUDA_Global pragma or aspect.
+ --  CUDA_Global does not have any effect when compiling for the device. When
+ --  compiling for the host, the frontend stores procedures marked with
+ --  CUDA_Global in a hash table the key of which is the Node_Id of the package
+ --  body that contains the CUDA_Global procedure. This is done in sem_prag.adb.
+ --  Once the declarations of a package body have been analyzed, variable, type
+ --  and procedure declarations necessary for the initialization of the CUDA
+ --  runtime are appended to the package that contains the CUDA_Global
+ --  procedure.
+ --
+ --  These declarations are used to register the CUDA kernel with the CUDA
+ --  runtime when the program is launched. Registering a CUDA kernel with the
+ --  CUDA runtime requires multiple function calls:
+ --  - The first one registers the fat binary which corresponds to the package
+ --    with the CUDA runtime.
+ --  - Then, as many function calls as there are kernels in order to bind them
+ --    with the fat binary.
+ --    fat binary.
+ --  - The last call lets the CUDA runtime know that we are done initializing
+ --    CUDA.
+ --  Expansion of the CUDA_Global aspect is triggered in sem_ch7.adb, during
+ --  analysis of the package. All of this expansion is performed in the
+ --  Insert_CUDA_Initialization procedure defined in GNAT_CUDA.
+ --
+ --  Once a CUDA package is initialized, its kernels are ready to be used.
+ --  Launching CUDA kernels is done by using the CUDA_Execute pragma. When
+ --  compiling for the host, the CUDA_Execute pragma is expanded into a declare
+ --  block which performs calls to the CUDA runtime functions.
+ --  - The first one pushes a "launch configuration" on the "configuration
+ --    stack" of the CUDA runtime.
+ --  - The second call pops this call configuration, making it effective.
+ --  - The third call actually launches the kernel.
+ --  Light validation of the CUDA_Execute pragma is performed in sem_prag.adb
+ --  and expansion is performed in exp_prag.adb.
+ 
+ with Types; use Types;
+ 
+ package GNAT_CUDA is
+ 
+    procedure Add_CUDA_Kernel (Pack_Id : Entity_Id; Kernel : Entity_Id);
+    --  Add Kernel to the list of CUDA_Global nodes that belong to Pack_Id.
+    --  Kernel is a procedure entity marked with CUDA_Global, Pack_Id is the
+    --  entity of its parent package body.
+ 
+    procedure Build_And_Insert_CUDA_Initialization (N : Node_Id);
+    --  Builds declarations necessary for CUDA initialization and inserts them
+    --  in N, the package body that contains CUDA_Global nodes. These
+    --  declarations are:
+    --
+    --    * A symbol to hold the pointer to the CUDA fat binary
+    --
+    --    * A type definition for a wrapper that contains the pointer to the
+    --      CUDA fat binary
+    --
+    --    * An object of the aforementioned type to hold the aforementioned
+    --      pointer.
+    --
+    --    * For each CUDA_Global procedure in the package, a declaration of a C
+    --      string containing the function's name.
+    --
+    --    * A function that takes care of calling CUDA functions that register
+    --      CUDA_Global procedures with the runtime.
+    --
+    --    * A boolean that holds the result of the call to the aforementioned
+    --      function.
+ 
+ end GNAT_CUDA;
diff -Nrcpad gcc-10.3.0/gcc/ada/gnat_rm.texi gcc-11.1.0/gcc/ada/gnat_rm.texi
*** gcc-10.3.0/gcc/ada/gnat_rm.texi	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnat_rm.texi	Tue Apr 27 10:00:12 2021
***************
*** 21,31 ****
  
  @copying
  @quotation
! GNAT Reference Manual , Dec 10, 2019
  
  AdaCore
  
! Copyright @copyright{} 2008-2020, Free Software Foundation
  @end quotation
  
  @end copying
--- 21,31 ----
  
  @copying
  @quotation
! GNAT Reference Manual , Dec 11, 2020
  
  AdaCore
  
! Copyright @copyright{} 2008-2021, Free Software Foundation
  @end quotation
  
  @end copying
*************** Implementation Defined Pragmas
*** 97,106 ****
  
  * Pragma Abort_Defer:: 
  * Pragma Abstract_State:: 
- * Pragma Acc_Parallel:: 
- * Pragma Acc_Loop:: 
- * Pragma Acc_Kernels:: 
- * Pragma Acc_Data:: 
  * Pragma Ada_83:: 
  * Pragma Ada_95:: 
  * Pragma Ada_05:: 
--- 97,102 ----
*************** Implementation Defined Pragmas
*** 226,232 ****
  * Pragma Part_Of:: 
  * Pragma Passive:: 
  * Pragma Persistent_BSS:: 
- * Pragma Polling:: 
  * Pragma Post:: 
  * Pragma Postcondition:: 
  * Pragma Post_Class:: 
--- 222,227 ----
*************** Implementation Defined Aspects
*** 346,351 ****
--- 341,347 ----
  * Aspect Refined_Global:: 
  * Aspect Refined_Post:: 
  * Aspect Refined_State:: 
+ * Aspect Relaxed_Initialization:: 
  * Aspect Remote_Access_Type:: 
  * Aspect Secondary_Stack_Size:: 
  * Aspect Scalar_Storage_Order:: 
*************** Implementation Defined Attributes
*** 398,404 ****
--- 394,402 ----
  * Attribute From_Any:: 
  * Attribute Has_Access_Values:: 
  * Attribute Has_Discriminants:: 
+ * Attribute Has_Tagged_Values:: 
  * Attribute Img:: 
+ * Attribute Initialized:: 
  * Attribute Integer_Value:: 
  * Attribute Invalid_Value:: 
  * Attribute Iterable:: 
*************** Implementation Defined Attributes
*** 409,414 ****
--- 407,413 ----
  * Attribute Machine_Size:: 
  * Attribute Mantissa:: 
  * Attribute Maximum_Alignment:: 
+ * Attribute Max_Integer_Size:: 
  * Attribute Mechanism_Code:: 
  * Attribute Null_Parameter:: 
  * Attribute Object_Size:: 
*************** Implementation Defined Attributes
*** 424,429 ****
--- 423,430 ----
  * Attribute Scalar_Storage_Order:: 
  * Attribute Simple_Storage_Pool:: 
  * Attribute Small:: 
+ * Attribute Small_Denominator:: 
+ * Attribute Small_Numerator:: 
  * Attribute Storage_Unit:: 
  * Attribute Stub_Type:: 
  * Attribute System_Allocator_Alignment:: 
*************** The GNAT Library
*** 715,720 ****
--- 716,722 ----
  * Ada.Strings.Unbounded.Text_IO (a-suteio.ads): Ada Strings Unbounded Text_IO a-suteio ads. 
  * Ada.Strings.Wide_Unbounded.Wide_Text_IO (a-swuwti.ads): Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads. 
  * Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO (a-szuzti.ads): Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads. 
+ * Ada.Task_Initialization (a-tasini.ads): Ada Task_Initialization a-tasini ads. 
  * Ada.Text_IO.C_Streams (a-tiocst.ads): Ada Text_IO C_Streams a-tiocst ads. 
  * Ada.Text_IO.Reset_Standard_Files (a-tirsfi.ads): Ada Text_IO Reset_Standard_Files a-tirsfi ads. 
  * Ada.Wide_Characters.Unicode (a-wichun.ads): Ada Wide_Characters Unicode a-wichun ads. 
*************** consideration, the use of these pragmas
*** 1174,1183 ****
  @menu
  * Pragma Abort_Defer:: 
  * Pragma Abstract_State:: 
- * Pragma Acc_Parallel:: 
- * Pragma Acc_Loop:: 
- * Pragma Acc_Kernels:: 
- * Pragma Acc_Data:: 
  * Pragma Ada_83:: 
  * Pragma Ada_95:: 
  * Pragma Ada_05:: 
--- 1176,1181 ----
*************** consideration, the use of these pragmas
*** 1303,1309 ****
  * Pragma Part_Of:: 
  * Pragma Passive:: 
  * Pragma Persistent_BSS:: 
- * Pragma Polling:: 
  * Pragma Post:: 
  * Pragma Postcondition:: 
  * Pragma Post_Class:: 
--- 1301,1306 ----
*************** This pragma must appear at the start of
*** 1400,1408 ****
  handled sequence of statements (right after the @code{begin}).  It has
  the effect of deferring aborts for the sequence of statements (but not
  for the declarations or handlers, if any, associated with this statement
! sequence).
  
! @node Pragma Abstract_State,Pragma Acc_Parallel,Pragma Abort_Defer,Implementation Defined Pragmas
  @anchor{gnat_rm/implementation_defined_pragmas pragma-abstract-state}@anchor{1c}@anchor{gnat_rm/implementation_defined_pragmas id2}@anchor{1d}
  @section Pragma Abstract_State
  
--- 1397,1419 ----
  handled sequence of statements (right after the @code{begin}).  It has
  the effect of deferring aborts for the sequence of statements (but not
  for the declarations or handlers, if any, associated with this statement
! sequence). This can also be useful for adding a polling point in Ada code,
! where asynchronous abort of tasks is checked when leaving the statement
! sequence, and is lighter than, for example, using @code{delay 0.0;}, since with
! zero-cost exception handling, propagating exceptions (implicitly used to
! implement task abort) cannot be done reliably in an asynchronous way.
  
! An example of usage would be:
! 
! @example
! --  Add a polling point to check for task aborts
! 
! begin
!    pragma Abort_Defer;
! end;
! @end example
! 
! @node Pragma Abstract_State,Pragma Ada_83,Pragma Abort_Defer,Implementation Defined Pragmas
  @anchor{gnat_rm/implementation_defined_pragmas pragma-abstract-state}@anchor{1c}@anchor{gnat_rm/implementation_defined_pragmas id2}@anchor{1d}
  @section Pragma Abstract_State
  
*************** ABSTRACT_STATE ::= name
*** 1452,1622 ****
  For the semantics of this pragma, see the entry for aspect @code{Abstract_State} in
  the SPARK 2014 Reference Manual, section 7.1.4.
  
! @node Pragma Acc_Parallel,Pragma Acc_Loop,Pragma Abstract_State,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-acc-parallel}@anchor{1e}
! @section Pragma Acc_Parallel
! 
! 
! Syntax:
! 
! @example
! pragma Acc_Parallel [( ACC_PARALLEL_CLAUSE [, ACC_PARALLEL_CLAUSE... ])];
! 
! ACC_PARALLEL_CLAUSE ::=
!     Acc_If        => boolean_EXPRESSION
!   | Acc_Private   => IDENTIFIERS
!   | Async         => integer_EXPRESSION
!   | Copy          => IDENTIFIERS
!   | Copy_In       => IDENTIFIERS
!   | Copy_Out      => IDENTIFIERS
!   | Create        => IDENTIFIERS
!   | Default       => None
!   | Device_Ptr    => IDENTIFIERS
!   | First_Private => IDENTIFIERS
!   | Num_Gangs     => integer_EXPRESSION
!   | Num_Workers   => integer_EXPRESSION
!   | Present       => IDENTIFIERS
!   | Reduction     => (REDUCTION_RECORD)
!   | Vector_Length => integer_EXPRESSION
!   | Wait          => INTEGERS
! 
! REDUCTION_RECORD ::=
!     "+"   => IDENTIFIERS
!   | "*"   => IDENTIFIERS
!   | "min" => IDENTIFIERS
!   | "max" => IDENTIFIERS
!   | "or"  => IDENTIFIERS
!   | "and" => IDENTIFIERS
! 
! IDENTIFIERS ::=
!   | IDENTIFIER
!   | (IDENTIFIER, IDENTIFIERS)
! 
! INTEGERS ::=
!   | integer_EXPRESSION
!   | (integer_EXPRESSION, INTEGERS)
! @end example
! 
! Requires the @code{-fopenacc} flag.
! 
! Equivalent to the @code{parallel} directive of the OpenAcc standard. This pragma
! should be placed in loops. It offloads the content of the loop to an
! accelerator device.
! 
! For more information about the effect of the clauses, see the OpenAcc
! specification.
! 
! @node Pragma Acc_Loop,Pragma Acc_Kernels,Pragma Acc_Parallel,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-acc-loop}@anchor{1f}
! @section Pragma Acc_Loop
! 
! 
! Syntax:
! 
! @example
! pragma Acc_Loop [( ACC_LOOP_CLAUSE [, ACC_LOOP_CLAUSE... ])];
! 
! ACC_LOOP_CLAUSE ::=
!     Auto
!   | Collapse        => INTEGER_LITERAL
!   | Gang            [=> GANG_ARG]
!   | Independent
!   | Private         => IDENTIFIERS
!   | Reduction       => (REDUCTION_RECORD)
!   | Seq
!   | Tile            => SIZE_EXPRESSION
!   | Vector          [=> integer_EXPRESSION]
!   | Worker          [=> integer_EXPRESSION]
! 
! GANG_ARG ::=
!     integer_EXPRESSION
!   | Static => SIZE_EXPRESSION
! 
! SIZE_EXPRESSION ::=
!     *
!   | integer_EXPRESSION
! @end example
! 
! Requires the @code{-fopenacc} flag.
! 
! Equivalent to the @code{loop} directive of the OpenAcc standard. This pragma
! should be placed in for loops after the "Acc_Parallel" pragma. It tells the
! compiler how to parallelize the loop.
! 
! For more information about the effect of the clauses, see the OpenAcc
! specification.
! 
! @node Pragma Acc_Kernels,Pragma Acc_Data,Pragma Acc_Loop,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-acc-kernels}@anchor{20}
! @section Pragma Acc_Kernels
! 
! 
! Syntax:
! 
! @example
! pragma Acc_Kernels [( ACC_KERNELS_CLAUSE [, ACC_KERNELS_CLAUSE...])];
! 
! ACC_KERNELS_CLAUSE ::=
!     Acc_If        => boolean_EXPRESSION
!   | Async         => integer_EXPRESSION
!   | Copy          => IDENTIFIERS
!   | Copy_In       => IDENTIFIERS
!   | Copy_Out      => IDENTIFIERS
!   | Create        => IDENTIFIERS
!   | Default       => None
!   | Device_Ptr    => IDENTIFIERS
!   | Num_Gangs     => integer_EXPRESSION
!   | Num_Workers   => integer_EXPRESSION
!   | Present       => IDENTIFIERS
!   | Vector_Length => integer_EXPRESSION
!   | Wait          => INTEGERS
! 
! IDENTIFIERS ::=
!   | IDENTIFIER
!   | (IDENTIFIER, IDENTIFIERS)
! 
! INTEGERS ::=
!   | integer_EXPRESSION
!   | (integer_EXPRESSION, INTEGERS)
! @end example
! 
! Requires the @code{-fopenacc} flag.
! 
! Equivalent to the kernels directive of the OpenAcc standard. This pragma should
! be placed in loops.
! 
! For more information about the effect of the clauses, see the OpenAcc
! specification.
! 
! @node Pragma Acc_Data,Pragma Ada_83,Pragma Acc_Kernels,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-acc-data}@anchor{21}
! @section Pragma Acc_Data
! 
! 
! Syntax:
! 
! @example
! pragma Acc_Data ([ ACC_DATA_CLAUSE [, ACC_DATA_CLAUSE...]]);
! 
! ACC_DATA_CLAUSE ::=
!     Copy          => IDENTIFIERS
!   | Copy_In       => IDENTIFIERS
!   | Copy_Out      => IDENTIFIERS
!   | Create        => IDENTIFIERS
!   | Device_Ptr    => IDENTIFIERS
!   | Present       => IDENTIFIERS
! @end example
! 
! Requires the @code{-fopenacc} flag.
! 
! Equivalent to the @code{data} directive of the OpenAcc standard. This pragma
! should be placed in loops.
! 
! For more information about the effect of the clauses, see the OpenAcc
! specification.
! 
! @node Pragma Ada_83,Pragma Ada_95,Pragma Acc_Data,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-83}@anchor{22}
  @section Pragma Ada_83
  
  
--- 1463,1470 ----
  For the semantics of this pragma, see the entry for aspect @code{Abstract_State} in
  the SPARK 2014 Reference Manual, section 7.1.4.
  
! @node Pragma Ada_83,Pragma Ada_95,Pragma Abstract_State,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-83}@anchor{1e}
  @section Pragma Ada_83
  
  
*************** by GNAT in Ada 83 mode will in fact comp
*** 1645,1651 ****
  required by Ada 83.
  
  @node Pragma Ada_95,Pragma Ada_05,Pragma Ada_83,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-95}@anchor{23}
  @section Pragma Ada_95
  
  
--- 1493,1499 ----
  required by Ada 83.
  
  @node Pragma Ada_95,Pragma Ada_05,Pragma Ada_83,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-95}@anchor{1f}
  @section Pragma Ada_95
  
  
*************** itself uses Ada 95 features, but which i
*** 1664,1670 ****
  either Ada 83 or Ada 95 programs.
  
  @node Pragma Ada_05,Pragma Ada_2005,Pragma Ada_95,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-05}@anchor{24}
  @section Pragma Ada_05
  
  
--- 1512,1518 ----
  either Ada 83 or Ada 95 programs.
  
  @node Pragma Ada_05,Pragma Ada_2005,Pragma Ada_95,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-05}@anchor{20}
  @section Pragma Ada_05
  
  
*************** otherwise legal pre-Ada_2005 programs. T
*** 1693,1699 ****
  intended for exclusive use in the GNAT run-time library.
  
  @node Pragma Ada_2005,Pragma Ada_12,Pragma Ada_05,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-2005}@anchor{25}
  @section Pragma Ada_2005
  
  
--- 1541,1547 ----
  intended for exclusive use in the GNAT run-time library.
  
  @node Pragma Ada_2005,Pragma Ada_12,Pragma Ada_05,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-2005}@anchor{21}
  @section Pragma Ada_2005
  
  
*************** This configuration pragma is a synonym f
*** 1707,1713 ****
  same syntax and effect.
  
  @node Pragma Ada_12,Pragma Ada_2012,Pragma Ada_2005,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-12}@anchor{26}
  @section Pragma Ada_12
  
  
--- 1555,1561 ----
  same syntax and effect.
  
  @node Pragma Ada_12,Pragma Ada_2012,Pragma Ada_2005,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-12}@anchor{22}
  @section Pragma Ada_12
  
  
*************** otherwise legal pre-Ada_2012 programs. T
*** 1738,1744 ****
  intended for exclusive use in the GNAT run-time library.
  
  @node Pragma Ada_2012,Pragma Aggregate_Individually_Assign,Pragma Ada_12,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-2012}@anchor{27}
  @section Pragma Ada_2012
  
  
--- 1586,1592 ----
  intended for exclusive use in the GNAT run-time library.
  
  @node Pragma Ada_2012,Pragma Aggregate_Individually_Assign,Pragma Ada_12,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-2012}@anchor{23}
  @section Pragma Ada_2012
  
  
*************** This configuration pragma is a synonym f
*** 1752,1758 ****
  same syntax and effect.
  
  @node Pragma Aggregate_Individually_Assign,Pragma Allow_Integer_Address,Pragma Ada_2012,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-aggregate-individually-assign}@anchor{28}
  @section Pragma Aggregate_Individually_Assign
  
  
--- 1600,1606 ----
  same syntax and effect.
  
  @node Pragma Aggregate_Individually_Assign,Pragma Allow_Integer_Address,Pragma Ada_2012,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-aggregate-individually-assign}@anchor{24}
  @section Pragma Aggregate_Individually_Assign
  
  
*************** this behavior so that record aggregates
*** 1768,1774 ****
  individual assignment statements.
  
  @node Pragma Allow_Integer_Address,Pragma Annotate,Pragma Aggregate_Individually_Assign,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-allow-integer-address}@anchor{29}
  @section Pragma Allow_Integer_Address
  
  
--- 1616,1622 ----
  individual assignment statements.
  
  @node Pragma Allow_Integer_Address,Pragma Annotate,Pragma Aggregate_Individually_Assign,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-allow-integer-address}@anchor{25}
  @section Pragma Allow_Integer_Address
  
  
*************** rather than rejected to allow common set
*** 1818,1824 ****
  in the two situations.
  
  @node Pragma Annotate,Pragma Assert,Pragma Allow_Integer_Address,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-annotate}@anchor{2a}@anchor{gnat_rm/implementation_defined_pragmas id3}@anchor{2b}
  @section Pragma Annotate
  
  
--- 1666,1672 ----
  in the two situations.
  
  @node Pragma Annotate,Pragma Assert,Pragma Allow_Integer_Address,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-annotate}@anchor{26}@anchor{gnat_rm/implementation_defined_pragmas id3}@anchor{27}
  @section Pragma Annotate
  
  
*************** affect the compilation process in any wa
*** 1853,1859 ****
  a configuration pragma.
  
  @node Pragma Assert,Pragma Assert_And_Cut,Pragma Annotate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assert}@anchor{2c}
  @section Pragma Assert
  
  
--- 1701,1707 ----
  a configuration pragma.
  
  @node Pragma Assert,Pragma Assert_And_Cut,Pragma Annotate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assert}@anchor{28}
  @section Pragma Assert
  
  
*************** of Ada, and the DISABLE policy is an imp
*** 1919,1925 ****
  addition.
  
  @node Pragma Assert_And_Cut,Pragma Assertion_Policy,Pragma Assert,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assert-and-cut}@anchor{2d}
  @section Pragma Assert_And_Cut
  
  
--- 1767,1773 ----
  addition.
  
  @node Pragma Assert_And_Cut,Pragma Assertion_Policy,Pragma Assert,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assert-and-cut}@anchor{29}
  @section Pragma Assert_And_Cut
  
  
*************** formal verification. The pragma also ser
*** 1946,1952 ****
  documentation.
  
  @node Pragma Assertion_Policy,Pragma Assume,Pragma Assert_And_Cut,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assertion-policy}@anchor{2e}
  @section Pragma Assertion_Policy
  
  
--- 1794,1800 ----
  documentation.
  
  @node Pragma Assertion_Policy,Pragma Assume,Pragma Assert_And_Cut,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assertion-policy}@anchor{2a}
  @section Pragma Assertion_Policy
  
  
*************** pragma Assertion_Policy (
*** 1961,1975 ****
  
  ASSERTION_KIND ::= RM_ASSERTION_KIND | ID_ASSERTION_KIND
  
! RM_ASSERTION_KIND ::= Assert               |
!                       Static_Predicate     |
!                       Dynamic_Predicate    |
!                       Pre                  |
!                       Pre'Class            |
!                       Post                 |
!                       Post'Class           |
!                       Type_Invariant       |
!                       Type_Invariant'Class
  
  ID_ASSERTION_KIND ::= Assertions           |
                        Assert_And_Cut       |
--- 1809,1824 ----
  
  ASSERTION_KIND ::= RM_ASSERTION_KIND | ID_ASSERTION_KIND
  
! RM_ASSERTION_KIND ::= Assert                    |
!                       Static_Predicate          |
!                       Dynamic_Predicate         |
!                       Pre                       |
!                       Pre'Class                 |
!                       Post                      |
!                       Post'Class                |
!                       Type_Invariant            |
!                       Type_Invariant'Class      |
!                       Default_Initial_Condition
  
  ID_ASSERTION_KIND ::= Assertions           |
                        Assert_And_Cut       |
*************** ID_ASSERTION_KIND ::= Assertions
*** 1977,1982 ****
--- 1826,1832 ----
                        Contract_Cases       |
                        Debug                |
                        Ghost                |
+                       Initial_Condition    |
                        Invariant            |
                        Invariant'Class      |
                        Loop_Invariant       |
*************** ID_ASSERTION_KIND ::= Assertions
*** 1985,1991 ****
                        Precondition         |
                        Predicate            |
                        Refined_Post         |
!                       Statement_Assertions
  
  POLICY_IDENTIFIER ::= Check | Disable | Ignore | Suppressible
  @end example
--- 1835,1842 ----
                        Precondition         |
                        Predicate            |
                        Refined_Post         |
!                       Statement_Assertions |
!                       Subprogram_Variant
  
  POLICY_IDENTIFIER ::= Check | Disable | Ignore | Suppressible
  @end example
*************** applies to @code{Assert}, @code{Assert_A
*** 2030,2036 ****
  @code{Assume}, @code{Loop_Invariant}, and @code{Loop_Variant}.
  
  @node Pragma Assume,Pragma Assume_No_Invalid_Values,Pragma Assertion_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assume}@anchor{2f}
  @section Pragma Assume
  
  
--- 1881,1887 ----
  @code{Assume}, @code{Loop_Invariant}, and @code{Loop_Variant}.
  
  @node Pragma Assume,Pragma Assume_No_Invalid_Values,Pragma Assertion_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assume}@anchor{2b}
  @section Pragma Assume
  
  
*************** is met, and documents the need to ensure
*** 2064,2070 ****
  reference to information outside the program.
  
  @node Pragma Assume_No_Invalid_Values,Pragma Async_Readers,Pragma Assume,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assume-no-invalid-values}@anchor{30}
  @section Pragma Assume_No_Invalid_Values
  
  
--- 1915,1921 ----
  reference to information outside the program.
  
  @node Pragma Assume_No_Invalid_Values,Pragma Async_Readers,Pragma Assume,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assume-no-invalid-values}@anchor{2c}
  @section Pragma Assume_No_Invalid_Values
  
  
*************** is erroneous so there are no guarantees
*** 2117,2123 ****
  case, and it is recommended that these two options not be used together.
  
  @node Pragma Async_Readers,Pragma Async_Writers,Pragma Assume_No_Invalid_Values,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-async-readers}@anchor{31}@anchor{gnat_rm/implementation_defined_pragmas id4}@anchor{32}
  @section Pragma Async_Readers
  
  
--- 1968,1974 ----
  case, and it is recommended that these two options not be used together.
  
  @node Pragma Async_Readers,Pragma Async_Writers,Pragma Assume_No_Invalid_Values,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-async-readers}@anchor{2d}@anchor{gnat_rm/implementation_defined_pragmas id4}@anchor{2e}
  @section Pragma Async_Readers
  
  
*************** For the semantics of this pragma, see th
*** 2131,2137 ****
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Async_Writers,Pragma Attribute_Definition,Pragma Async_Readers,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id5}@anchor{33}@anchor{gnat_rm/implementation_defined_pragmas pragma-async-writers}@anchor{34}
  @section Pragma Async_Writers
  
  
--- 1982,1988 ----
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Async_Writers,Pragma Attribute_Definition,Pragma Async_Readers,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id5}@anchor{2f}@anchor{gnat_rm/implementation_defined_pragmas pragma-async-writers}@anchor{30}
  @section Pragma Async_Writers
  
  
*************** For the semantics of this pragma, see th
*** 2145,2151 ****
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Attribute_Definition,Pragma C_Pass_By_Copy,Pragma Async_Writers,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-attribute-definition}@anchor{35}
  @section Pragma Attribute_Definition
  
  
--- 1996,2002 ----
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Attribute_Definition,Pragma C_Pass_By_Copy,Pragma Async_Writers,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-attribute-definition}@anchor{31}
  @section Pragma Attribute_Definition
  
  
*************** code to be written that takes advantage
*** 2171,2177 ****
  compilable with earlier compilers.
  
  @node Pragma C_Pass_By_Copy,Pragma Check,Pragma Attribute_Definition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-c-pass-by-copy}@anchor{36}
  @section Pragma C_Pass_By_Copy
  
  
--- 2022,2028 ----
  compilable with earlier compilers.
  
  @node Pragma C_Pass_By_Copy,Pragma Check,Pragma Attribute_Definition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-c-pass-by-copy}@anchor{32}
  @section Pragma C_Pass_By_Copy
  
  
*************** You can also pass records by copy by spe
*** 2215,2221 ****
  passing mechanisms on a parameter by parameter basis.
  
  @node Pragma Check,Pragma Check_Float_Overflow,Pragma C_Pass_By_Copy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check}@anchor{37}
  @section Pragma Check
  
  
--- 2066,2072 ----
  passing mechanisms on a parameter by parameter basis.
  
  @node Pragma Check,Pragma Check_Float_Overflow,Pragma C_Pass_By_Copy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check}@anchor{33}
  @section Pragma Check
  
  
*************** of these identifiers in @code{Assertion_
*** 2254,2260 ****
  pragmas, where they are used to refer to sets of assertions.
  
  @node Pragma Check_Float_Overflow,Pragma Check_Name,Pragma Check,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-float-overflow}@anchor{38}
  @section Pragma Check_Float_Overflow
  
  
--- 2105,2111 ----
  pragmas, where they are used to refer to sets of assertions.
  
  @node Pragma Check_Float_Overflow,Pragma Check_Name,Pragma Check,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-float-overflow}@anchor{34}
  @section Pragma Check_Float_Overflow
  
  
*************** This mode can also be set by use of the
*** 2310,2316 ****
  switch @emph{-gnateF}.
  
  @node Pragma Check_Name,Pragma Check_Policy,Pragma Check_Float_Overflow,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-name}@anchor{39}
  @section Pragma Check_Name
  
  
--- 2161,2167 ----
  switch @emph{-gnateF}.
  
  @node Pragma Check_Name,Pragma Check_Policy,Pragma Check_Float_Overflow,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-name}@anchor{35}
  @section Pragma Check_Name
  
  
*************** Check names introduced by this pragma ar
*** 2346,2352 ****
  switches (in particular -gnatp) in the usual manner.
  
  @node Pragma Check_Policy,Pragma Comment,Pragma Check_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-policy}@anchor{3a}
  @section Pragma Check_Policy
  
  
--- 2197,2203 ----
  switches (in particular -gnatp) in the usual manner.
  
  @node Pragma Check_Policy,Pragma Comment,Pragma Check_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-policy}@anchor{36}
  @section Pragma Check_Policy
  
  
*************** policy setting @code{DISABLE} causes the
*** 2426,2432 ****
  @code{Check} pragma to be completely ignored and not analyzed.
  
  @node Pragma Comment,Pragma Common_Object,Pragma Check_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-comment}@anchor{3b}
  @section Pragma Comment
  
  
--- 2277,2283 ----
  @code{Check} pragma to be completely ignored and not analyzed.
  
  @node Pragma Comment,Pragma Common_Object,Pragma Check_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-comment}@anchor{37}
  @section Pragma Comment
  
  
*************** anywhere in the main source unit), and i
*** 2445,2451 ****
  is used, all comments are retained.
  
  @node Pragma Common_Object,Pragma Compile_Time_Error,Pragma Comment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-common-object}@anchor{3c}
  @section Pragma Common_Object
  
  
--- 2296,2302 ----
  is used, all comments are retained.
  
  @node Pragma Common_Object,Pragma Compile_Time_Error,Pragma Comment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-common-object}@anchor{38}
  @section Pragma Common_Object
  
  
*************** indicating that the necessary attribute
*** 2477,2483 ****
  pragma is not available.
  
  @node Pragma Compile_Time_Error,Pragma Compile_Time_Warning,Pragma Common_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-compile-time-error}@anchor{3d}
  @section Pragma Compile_Time_Error
  
  
--- 2328,2334 ----
  pragma is not available.
  
  @node Pragma Compile_Time_Error,Pragma Compile_Time_Warning,Pragma Common_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-compile-time-error}@anchor{39}@anchor{gnat_rm/implementation_defined_pragmas compile-time-error}@anchor{3a}
  @section Pragma Compile_Time_Error
  
  
*************** This pragma can be used to generate addi
*** 2492,2510 ****
  error messages. It
  is particularly useful in generics, where errors can be issued for
  specific problematic instantiations. The first parameter is a boolean
! expression. The pragma is effective only if the value of this expression
! is known at compile time, and has the value True. The set of expressions
  whose values are known at compile time includes all static boolean
  expressions, and also other values which the compiler can determine
  at compile time (e.g., the size of a record type set by an explicit
  size representation clause, or the value of a variable which was
  initialized to a constant and is known not to have been modified).
! If these conditions are met, an error message is generated using
  the value given as the second argument. This string value may contain
  embedded ASCII.LF characters to break the message into multiple lines.
  
  @node Pragma Compile_Time_Warning,Pragma Compiler_Unit,Pragma Compile_Time_Error,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-compile-time-warning}@anchor{3e}
  @section Pragma Compile_Time_Warning
  
  
--- 2343,2361 ----
  error messages. It
  is particularly useful in generics, where errors can be issued for
  specific problematic instantiations. The first parameter is a boolean
! expression. The pragma ensures that the value of an expression
! is known at compile time, and has the value False. The set of expressions
  whose values are known at compile time includes all static boolean
  expressions, and also other values which the compiler can determine
  at compile time (e.g., the size of a record type set by an explicit
  size representation clause, or the value of a variable which was
  initialized to a constant and is known not to have been modified).
! If these conditions are not met, an error message is generated using
  the value given as the second argument. This string value may contain
  embedded ASCII.LF characters to break the message into multiple lines.
  
  @node Pragma Compile_Time_Warning,Pragma Compiler_Unit,Pragma Compile_Time_Error,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-compile-time-warning}@anchor{3b}
  @section Pragma Compile_Time_Warning
  
  
*************** pragma Compile_Time_Warning
*** 2516,2522 ****
  @end example
  
  Same as pragma Compile_Time_Error, except a warning is issued instead
! of an error message. Note that if this pragma is used in a package that
  is with'ed by a client, the client will get the warning even though it
  is issued by a with'ed package (normally warnings in with'ed units are
  suppressed, but this is a special exception to that rule).
--- 2367,2376 ----
  @end example
  
  Same as pragma Compile_Time_Error, except a warning is issued instead
! of an error message. If switch @emph{-gnatw_C} is used, a warning is only issued
! if the value of the expression is known to be True at compile time, not when
! the value of the expression is not known at compile time.
! Note that if this pragma is used in a package that
  is with'ed by a client, the client will get the warning even though it
  is issued by a with'ed package (normally warnings in with'ed units are
  suppressed, but this is a special exception to that rule).
*************** of formal parameters are tested, and war
*** 2526,2533 ****
  with a first parameter of True is to warn a client about use of a package,
  for example that it is not fully implemented.
  
  @node Pragma Compiler_Unit,Pragma Compiler_Unit_Warning,Pragma Compile_Time_Warning,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-compiler-unit}@anchor{3f}
  @section Pragma Compiler_Unit
  
  
--- 2380,2392 ----
  with a first parameter of True is to warn a client about use of a package,
  for example that it is not fully implemented.
  
+ In previous versions of the compiler, combining @emph{-gnatwe} with
+ Compile_Time_Warning resulted in a fatal error. Now the compiler always emits
+ a warning. You can use @ref{3a,,Pragma Compile_Time_Error} to force the generation of
+ an error.
+ 
  @node Pragma Compiler_Unit,Pragma Compiler_Unit_Warning,Pragma Compile_Time_Warning,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-compiler-unit}@anchor{3c}
  @section Pragma Compiler_Unit
  
  
*************** retained so that old versions of the GNA
*** 2542,2548 ****
  be compiled with newer versions of the compiler.
  
  @node Pragma Compiler_Unit_Warning,Pragma Complete_Representation,Pragma Compiler_Unit,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-compiler-unit-warning}@anchor{40}
  @section Pragma Compiler_Unit_Warning
  
  
--- 2401,2407 ----
  be compiled with newer versions of the compiler.
  
  @node Pragma Compiler_Unit_Warning,Pragma Complete_Representation,Pragma Compiler_Unit,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-compiler-unit-warning}@anchor{3d}
  @section Pragma Compiler_Unit_Warning
  
  
*************** version of GNAT. For the exact list of r
*** 2560,2566 ****
  and references to Check_Compiler_Unit.
  
  @node Pragma Complete_Representation,Pragma Complex_Representation,Pragma Compiler_Unit_Warning,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-complete-representation}@anchor{41}
  @section Pragma Complete_Representation
  
  
--- 2419,2425 ----
  and references to Check_Compiler_Unit.
  
  @node Pragma Complete_Representation,Pragma Complex_Representation,Pragma Compiler_Unit_Warning,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-complete-representation}@anchor{3e}
  @section Pragma Complete_Representation
  
  
*************** complete, and that this invariant is mai
*** 2579,2585 ****
  added to the record in the future.
  
  @node Pragma Complex_Representation,Pragma Component_Alignment,Pragma Complete_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-complex-representation}@anchor{42}
  @section Pragma Complex_Representation
  
  
--- 2438,2444 ----
  added to the record in the future.
  
  @node Pragma Complex_Representation,Pragma Component_Alignment,Pragma Complete_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-complex-representation}@anchor{3f}
  @section Pragma Complex_Representation
  
  
*************** records by pointer, and the use of this
*** 2601,2607 ****
  this type in floating-point registers.
  
  @node Pragma Component_Alignment,Pragma Constant_After_Elaboration,Pragma Complex_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-component-alignment}@anchor{43}
  @section Pragma Component_Alignment
  
  
--- 2460,2466 ----
  this type in floating-point registers.
  
  @node Pragma Component_Alignment,Pragma Constant_After_Elaboration,Pragma Complex_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-component-alignment}@anchor{40}
  @section Pragma Component_Alignment
  
  
*************** pragma @code{Pack}, pragma @code{Compone
*** 2692,2698 ****
  clause), the GNAT uses the default alignment as described previously.
  
  @node Pragma Constant_After_Elaboration,Pragma Contract_Cases,Pragma Component_Alignment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id6}@anchor{44}@anchor{gnat_rm/implementation_defined_pragmas pragma-constant-after-elaboration}@anchor{45}
  @section Pragma Constant_After_Elaboration
  
  
--- 2551,2557 ----
  clause), the GNAT uses the default alignment as described previously.
  
  @node Pragma Constant_After_Elaboration,Pragma Contract_Cases,Pragma Component_Alignment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id6}@anchor{41}@anchor{gnat_rm/implementation_defined_pragmas pragma-constant-after-elaboration}@anchor{42}
  @section Pragma Constant_After_Elaboration
  
  
*************** For the semantics of this pragma, see th
*** 2706,2712 ****
  @code{Constant_After_Elaboration} in the SPARK 2014 Reference Manual, section 3.3.1.
  
  @node Pragma Contract_Cases,Pragma Convention_Identifier,Pragma Constant_After_Elaboration,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id7}@anchor{46}@anchor{gnat_rm/implementation_defined_pragmas pragma-contract-cases}@anchor{47}
  @section Pragma Contract_Cases
  
  
--- 2565,2571 ----
  @code{Constant_After_Elaboration} in the SPARK 2014 Reference Manual, section 3.3.1.
  
  @node Pragma Contract_Cases,Pragma Convention_Identifier,Pragma Constant_After_Elaboration,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id7}@anchor{43}@anchor{gnat_rm/implementation_defined_pragmas pragma-contract-cases}@anchor{44}
  @section Pragma Contract_Cases
  
  
*************** and that the consequence for this case s
*** 2791,2797 ****
  returns.
  
  @node Pragma Convention_Identifier,Pragma CPP_Class,Pragma Contract_Cases,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-convention-identifier}@anchor{48}
  @section Pragma Convention_Identifier
  
  
--- 2650,2656 ----
  returns.
  
  @node Pragma Convention_Identifier,Pragma CPP_Class,Pragma Contract_Cases,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-convention-identifier}@anchor{45}
  @section Pragma Convention_Identifier
  
  
*************** define a convention identifier @code{Lib
*** 2827,2833 ****
  would be used system-wide.
  
  @node Pragma CPP_Class,Pragma CPP_Constructor,Pragma Convention_Identifier,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-class}@anchor{49}
  @section Pragma CPP_Class
  
  
--- 2686,2692 ----
  would be used system-wide.
  
  @node Pragma CPP_Class,Pragma CPP_Constructor,Pragma Convention_Identifier,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-class}@anchor{46}
  @section Pragma CPP_Class
  
  
*************** functions (see pragma @code{CPP_Construc
*** 2852,2865 ****
  limited if not explicitly declared as limited or derived from a limited
  type, and an error is issued in that case.
  
! See @ref{4a,,Interfacing to C++} for related information.
  
  Note: Pragma @code{CPP_Class} is currently obsolete. It is supported
  for backward compatibility but its functionality is available
  using pragma @code{Import} with @code{Convention} = @code{CPP}.
  
  @node Pragma CPP_Constructor,Pragma CPP_Virtual,Pragma CPP_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-constructor}@anchor{4b}
  @section Pragma CPP_Constructor
  
  
--- 2711,2724 ----
  limited if not explicitly declared as limited or derived from a limited
  type, and an error is issued in that case.
  
! See @ref{47,,Interfacing to C++} for related information.
  
  Note: Pragma @code{CPP_Class} is currently obsolete. It is supported
  for backward compatibility but its functionality is available
  using pragma @code{Import} with @code{Convention} = @code{CPP}.
  
  @node Pragma CPP_Constructor,Pragma CPP_Virtual,Pragma CPP_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-constructor}@anchor{48}
  @section Pragma CPP_Constructor
  
  
*************** on the Ada side and the type is implicit
*** 2910,2916 ****
  Pragma @code{CPP_Constructor} is intended primarily for automatic generation
  using an automatic binding generator tool (such as the @code{-fdump-ada-spec}
  GCC switch).
! See @ref{4a,,Interfacing to C++} for more related information.
  
  Note: The use of functions returning class-wide types for constructors is
  currently obsolete. They are supported for backward compatibility. The
--- 2769,2775 ----
  Pragma @code{CPP_Constructor} is intended primarily for automatic generation
  using an automatic binding generator tool (such as the @code{-fdump-ada-spec}
  GCC switch).
! See @ref{47,,Interfacing to C++} for more related information.
  
  Note: The use of functions returning class-wide types for constructors is
  currently obsolete. They are supported for backward compatibility. The
*************** because the imported C++ constructors al
*** 2919,2925 ****
  that is, they never return an object whose type is a descendant of type T.
  
  @node Pragma CPP_Virtual,Pragma CPP_Vtable,Pragma CPP_Constructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-virtual}@anchor{4c}
  @section Pragma CPP_Virtual
  
  
--- 2778,2784 ----
  that is, they never return an object whose type is a descendant of type T.
  
  @node Pragma CPP_Virtual,Pragma CPP_Vtable,Pragma CPP_Constructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-virtual}@anchor{49}
  @section Pragma CPP_Virtual
  
  
*************** purposes. It used to be required to ensu
*** 2932,2941 ****
  is no longer required for that purpose because GNAT generates
  the same object layout as the G++ compiler by default.
  
! See @ref{4a,,Interfacing to C++} for related information.
  
  @node Pragma CPP_Vtable,Pragma CPU,Pragma CPP_Virtual,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-vtable}@anchor{4d}
  @section Pragma CPP_Vtable
  
  
--- 2791,2800 ----
  is no longer required for that purpose because GNAT generates
  the same object layout as the G++ compiler by default.
  
! See @ref{47,,Interfacing to C++} for related information.
  
  @node Pragma CPP_Vtable,Pragma CPU,Pragma CPP_Virtual,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-vtable}@anchor{4a}
  @section Pragma CPP_Vtable
  
  
*************** It used to be required to ensure compati
*** 2947,2956 ****
  is no longer required for that purpose because GNAT generates
  the same object layout as the G++ compiler by default.
  
! See @ref{4a,,Interfacing to C++} for related information.
  
  @node Pragma CPU,Pragma Deadline_Floor,Pragma CPP_Vtable,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpu}@anchor{4e}
  @section Pragma CPU
  
  
--- 2806,2815 ----
  is no longer required for that purpose because GNAT generates
  the same object layout as the G++ compiler by default.
  
! See @ref{47,,Interfacing to C++} for related information.
  
  @node Pragma CPU,Pragma Deadline_Floor,Pragma CPP_Vtable,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpu}@anchor{4b}
  @section Pragma CPU
  
  
*************** versions of Ada as an implementation-def
*** 2965,2971 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Deadline_Floor,Pragma Default_Initial_Condition,Pragma CPU,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-deadline-floor}@anchor{4f}
  @section Pragma Deadline_Floor
  
  
--- 2824,2830 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Deadline_Floor,Pragma Default_Initial_Condition,Pragma CPU,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-deadline-floor}@anchor{4c}
  @section Pragma Deadline_Floor
  
  
*************** deadline inherited by a task when the ta
*** 2980,2986 ****
  It is effective only when the EDF scheduling policy is used.
  
  @node Pragma Default_Initial_Condition,Pragma Debug,Pragma Deadline_Floor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id8}@anchor{50}@anchor{gnat_rm/implementation_defined_pragmas pragma-default-initial-condition}@anchor{51}
  @section Pragma Default_Initial_Condition
  
  
--- 2839,2845 ----
  It is effective only when the EDF scheduling policy is used.
  
  @node Pragma Default_Initial_Condition,Pragma Debug,Pragma Deadline_Floor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id8}@anchor{4d}@anchor{gnat_rm/implementation_defined_pragmas pragma-default-initial-condition}@anchor{4e}
  @section Pragma Default_Initial_Condition
  
  
*************** For the semantics of this pragma, see th
*** 2994,3000 ****
  @code{Default_Initial_Condition} in the SPARK 2014 Reference Manual, section 7.3.3.
  
  @node Pragma Debug,Pragma Debug_Policy,Pragma Default_Initial_Condition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-debug}@anchor{52}
  @section Pragma Debug
  
  
--- 2853,2859 ----
  @code{Default_Initial_Condition} in the SPARK 2014 Reference Manual, section 7.3.3.
  
  @node Pragma Debug,Pragma Debug_Policy,Pragma Default_Initial_Condition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-debug}@anchor{4f}
  @section Pragma Debug
  
  
*************** or by use of the pragma @code{Check_Poli
*** 3022,3028 ****
  @code{Debug}.
  
  @node Pragma Debug_Policy,Pragma Default_Scalar_Storage_Order,Pragma Debug,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-debug-policy}@anchor{53}
  @section Pragma Debug_Policy
  
  
--- 2881,2887 ----
  @code{Debug}.
  
  @node Pragma Debug_Policy,Pragma Default_Scalar_Storage_Order,Pragma Debug,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-debug-policy}@anchor{50}
  @section Pragma Debug_Policy
  
  
*************** with a first argument of @code{Debug}. I
*** 3037,3043 ****
  compatibility reasons.
  
  @node Pragma Default_Scalar_Storage_Order,Pragma Default_Storage_Pool,Pragma Debug_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-default-scalar-storage-order}@anchor{54}
  @section Pragma Default_Scalar_Storage_Order
  
  
--- 2896,2902 ----
  compatibility reasons.
  
  @node Pragma Default_Scalar_Storage_Order,Pragma Default_Storage_Pool,Pragma Debug_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-default-scalar-storage-order}@anchor{51}
  @section Pragma Default_Scalar_Storage_Order
  
  
*************** it may significantly degrade the run-tim
*** 3110,3116 ****
  the default scalar storage order ought to be changed only on a local basis.
  
  @node Pragma Default_Storage_Pool,Pragma Depends,Pragma Default_Scalar_Storage_Order,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-default-storage-pool}@anchor{55}
  @section Pragma Default_Storage_Pool
  
  
--- 2969,2975 ----
  the default scalar storage order ought to be changed only on a local basis.
  
  @node Pragma Default_Storage_Pool,Pragma Depends,Pragma Default_Scalar_Storage_Order,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-default-storage-pool}@anchor{52}
  @section Pragma Default_Storage_Pool
  
  
*************** versions of Ada as an implementation-def
*** 3127,3133 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Depends,Pragma Detect_Blocking,Pragma Default_Storage_Pool,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-depends}@anchor{56}@anchor{gnat_rm/implementation_defined_pragmas id9}@anchor{57}
  @section Pragma Depends
  
  
--- 2986,2992 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Depends,Pragma Detect_Blocking,Pragma Default_Storage_Pool,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-depends}@anchor{53}@anchor{gnat_rm/implementation_defined_pragmas id9}@anchor{54}
  @section Pragma Depends
  
  
*************** For the semantics of this pragma, see th
*** 3160,3166 ****
  SPARK 2014 Reference Manual, section 6.1.5.
  
  @node Pragma Detect_Blocking,Pragma Disable_Atomic_Synchronization,Pragma Depends,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-detect-blocking}@anchor{58}
  @section Pragma Detect_Blocking
  
  
--- 3019,3025 ----
  SPARK 2014 Reference Manual, section 6.1.5.
  
  @node Pragma Detect_Blocking,Pragma Disable_Atomic_Synchronization,Pragma Depends,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-detect-blocking}@anchor{55}
  @section Pragma Detect_Blocking
  
  
*************** blocking operations within a protected o
*** 3178,3184 ****
  if that happens.
  
  @node Pragma Disable_Atomic_Synchronization,Pragma Dispatching_Domain,Pragma Detect_Blocking,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-disable-atomic-synchronization}@anchor{59}
  @section Pragma Disable_Atomic_Synchronization
  
  
--- 3037,3043 ----
  if that happens.
  
  @node Pragma Disable_Atomic_Synchronization,Pragma Dispatching_Domain,Pragma Detect_Blocking,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-disable-atomic-synchronization}@anchor{56}
  @section Pragma Disable_Atomic_Synchronization
  
  
*************** till the end of the scope. If an @code{E
*** 3204,3210 ****
  the action applies only to that entity.
  
  @node Pragma Dispatching_Domain,Pragma Effective_Reads,Pragma Disable_Atomic_Synchronization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-dispatching-domain}@anchor{5a}
  @section Pragma Dispatching_Domain
  
  
--- 3063,3069 ----
  the action applies only to that entity.
  
  @node Pragma Dispatching_Domain,Pragma Effective_Reads,Pragma Disable_Atomic_Synchronization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-dispatching-domain}@anchor{57}
  @section Pragma Dispatching_Domain
  
  
*************** versions of Ada as an implementation-def
*** 3219,3225 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Effective_Reads,Pragma Effective_Writes,Pragma Dispatching_Domain,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id10}@anchor{5b}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-reads}@anchor{5c}
  @section Pragma Effective_Reads
  
  
--- 3078,3084 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Effective_Reads,Pragma Effective_Writes,Pragma Dispatching_Domain,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id10}@anchor{58}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-reads}@anchor{59}
  @section Pragma Effective_Reads
  
  
*************** For the semantics of this pragma, see th
*** 3233,3239 ****
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Effective_Writes,Pragma Elaboration_Checks,Pragma Effective_Reads,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id11}@anchor{5d}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-writes}@anchor{5e}
  @section Pragma Effective_Writes
  
  
--- 3092,3098 ----
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Effective_Writes,Pragma Elaboration_Checks,Pragma Effective_Reads,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id11}@anchor{5a}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-writes}@anchor{5b}
  @section Pragma Effective_Writes
  
  
*************** For the semantics of this pragma, see th
*** 3247,3253 ****
  in the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Elaboration_Checks,Pragma Eliminate,Pragma Effective_Writes,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-elaboration-checks}@anchor{5f}
  @section Pragma Elaboration_Checks
  
  
--- 3106,3112 ----
  in the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Elaboration_Checks,Pragma Eliminate,Pragma Effective_Writes,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-elaboration-checks}@anchor{5c}
  @section Pragma Elaboration_Checks
  
  
*************** effect. If the pragma argument is @code{
*** 3284,3290 ****
  is in effect.
  
  @node Pragma Eliminate,Pragma Enable_Atomic_Synchronization,Pragma Elaboration_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-eliminate}@anchor{60}
  @section Pragma Eliminate
  
  
--- 3143,3149 ----
  is in effect.
  
  @node Pragma Eliminate,Pragma Enable_Atomic_Synchronization,Pragma Elaboration_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-eliminate}@anchor{5d}
  @section Pragma Eliminate
  
  
*************** pragma Eliminate (Q, Proc,
*** 3444,3450 ****
  @end quotation
  
  @node Pragma Enable_Atomic_Synchronization,Pragma Export_Function,Pragma Eliminate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-enable-atomic-synchronization}@anchor{61}
  @section Pragma Enable_Atomic_Synchronization
  
  
--- 3303,3309 ----
  @end quotation
  
  @node Pragma Enable_Atomic_Synchronization,Pragma Export_Function,Pragma Eliminate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-enable-atomic-synchronization}@anchor{5e}
  @section Pragma Enable_Atomic_Synchronization
  
  
*************** till the end of the scope. If an @code{E
*** 3472,3478 ****
  the action applies only to that entity.
  
  @node Pragma Export_Function,Pragma Export_Object,Pragma Enable_Atomic_Synchronization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-function}@anchor{62}
  @section Pragma Export_Function
  
  
--- 3331,3337 ----
  the action applies only to that entity.
  
  @node Pragma Export_Function,Pragma Export_Object,Pragma Enable_Atomic_Synchronization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-function}@anchor{5f}
  @section Pragma Export_Function
  
  
*************** string. In this case, no external name i
*** 3544,3550 ****
  still allows the specification of parameter mechanisms.
  
  @node Pragma Export_Object,Pragma Export_Procedure,Pragma Export_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-object}@anchor{63}
  @section Pragma Export_Object
  
  
--- 3403,3409 ----
  still allows the specification of parameter mechanisms.
  
  @node Pragma Export_Object,Pragma Export_Procedure,Pragma Export_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-object}@anchor{60}
  @section Pragma Export_Object
  
  
*************** of portability), but it is not required.
*** 3569,3575 ****
  but otherwise ignored by GNAT.
  
  @node Pragma Export_Procedure,Pragma Export_Value,Pragma Export_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-procedure}@anchor{64}
  @section Pragma Export_Procedure
  
  
--- 3428,3434 ----
  but otherwise ignored by GNAT.
  
  @node Pragma Export_Procedure,Pragma Export_Value,Pragma Export_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-procedure}@anchor{61}
  @section Pragma Export_Procedure
  
  
*************** string. In this case, no external name i
*** 3622,3628 ****
  still allows the specification of parameter mechanisms.
  
  @node Pragma Export_Value,Pragma Export_Valued_Procedure,Pragma Export_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-value}@anchor{65}
  @section Pragma Export_Value
  
  
--- 3481,3487 ----
  still allows the specification of parameter mechanisms.
  
  @node Pragma Export_Value,Pragma Export_Valued_Procedure,Pragma Export_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-value}@anchor{62}
  @section Pragma Export_Value
  
  
*************** the application. This pragma is currentl
*** 3643,3649 ****
  AAMP target and is ignored for other targets.
  
  @node Pragma Export_Valued_Procedure,Pragma Extend_System,Pragma Export_Value,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-valued-procedure}@anchor{66}
  @section Pragma Export_Valued_Procedure
  
  
--- 3502,3508 ----
  AAMP target and is ignored for other targets.
  
  @node Pragma Export_Valued_Procedure,Pragma Extend_System,Pragma Export_Value,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-valued-procedure}@anchor{63}
  @section Pragma Export_Valued_Procedure
  
  
*************** string. In this case, no external name i
*** 3701,3707 ****
  still allows the specification of parameter mechanisms.
  
  @node Pragma Extend_System,Pragma Extensions_Allowed,Pragma Export_Valued_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-extend-system}@anchor{67}
  @section Pragma Extend_System
  
  
--- 3560,3566 ----
  still allows the specification of parameter mechanisms.
  
  @node Pragma Extend_System,Pragma Extensions_Allowed,Pragma Export_Valued_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-extend-system}@anchor{64}
  @section Pragma Extend_System
  
  
*************** for compiling System units, as explained
*** 3752,3758 ****
  GNAT User's Guide.
  
  @node Pragma Extensions_Allowed,Pragma Extensions_Visible,Pragma Extend_System,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-allowed}@anchor{68}
  @section Pragma Extensions_Allowed
  
  
--- 3611,3617 ----
  GNAT User's Guide.
  
  @node Pragma Extensions_Allowed,Pragma Extensions_Visible,Pragma Extend_System,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-allowed}@anchor{65}
  @section Pragma Extensions_Allowed
  
  
*************** extension mode (the use of Off as a para
*** 3771,3791 ****
  of the @emph{-gnatX} command switch).
  
  In extension mode, the latest version of the Ada language is
! implemented (currently Ada 2012), and in addition a small number
  of GNAT specific extensions are recognized as follows:
  
  
! @table @asis
  
! @item @emph{Constrained attribute for generic objects}
  
  The @code{Constrained} attribute is permitted for objects of
  generic types. The result indicates if the corresponding actual
  is constrained.
! @end table
  
  @node Pragma Extensions_Visible,Pragma External,Pragma Extensions_Allowed,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id12}@anchor{69}@anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-visible}@anchor{6a}
  @section Pragma Extensions_Visible
  
  
--- 3630,3670 ----
  of the @emph{-gnatX} command switch).
  
  In extension mode, the latest version of the Ada language is
! implemented (currently Ada 202x), and in addition a small number
  of GNAT specific extensions are recognized as follows:
  
  
! @itemize *
  
! @item 
! Constrained attribute for generic objects
  
  The @code{Constrained} attribute is permitted for objects of
  generic types. The result indicates if the corresponding actual
  is constrained.
! 
! @item 
! @code{Static} aspect on intrinsic functions
! 
! The Ada 202x @code{Static} aspect can be specified on Intrinsic imported
! functions and the compiler will evaluate some of these intrinsic statically,
! in particular the @code{Shift_Left} and @code{Shift_Right} intrinsics.
! 
! @item 
! @code{'Reduce} attribute
! 
! This attribute part of the Ada 202x language definition is provided for
! now under -gnatX to confirm and potentially refine its usage and syntax.
! 
! @item 
! @code{[]} aggregates
! 
! This new aggregate syntax for arrays and containers is provided under -gnatX
! to experiment and confirm this new language syntax.
! @end itemize
  
  @node Pragma Extensions_Visible,Pragma External,Pragma Extensions_Allowed,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id12}@anchor{66}@anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-visible}@anchor{67}
  @section Pragma Extensions_Visible
  
  
*************** For the semantics of this pragma, see th
*** 3799,3805 ****
  in the SPARK 2014 Reference Manual, section 6.1.7.
  
  @node Pragma External,Pragma External_Name_Casing,Pragma Extensions_Visible,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-external}@anchor{6b}
  @section Pragma External
  
  
--- 3678,3684 ----
  in the SPARK 2014 Reference Manual, section 6.1.7.
  
  @node Pragma External,Pragma External_Name_Casing,Pragma Extensions_Visible,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-external}@anchor{68}
  @section Pragma External
  
  
*************** used this pragma for exactly the same pu
*** 3820,3826 ****
  @code{Export} before the latter was standardized.
  
  @node Pragma External_Name_Casing,Pragma Fast_Math,Pragma External,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-external-name-casing}@anchor{6c}
  @section Pragma External_Name_Casing
  
  
--- 3699,3705 ----
  @code{Export} before the latter was standardized.
  
  @node Pragma External_Name_Casing,Pragma Fast_Math,Pragma External,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-external-name-casing}@anchor{69}
  @section Pragma External_Name_Casing
  
  
*************** pragma External_Name_Casing (Uppercase,
*** 3909,3915 ****
  to enforce the upper casing of all external symbols.
  
  @node Pragma Fast_Math,Pragma Favor_Top_Level,Pragma External_Name_Casing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-fast-math}@anchor{6d}
  @section Pragma Fast_Math
  
  
--- 3788,3794 ----
  to enforce the upper casing of all external symbols.
  
  @node Pragma Fast_Math,Pragma Favor_Top_Level,Pragma External_Name_Casing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-fast-math}@anchor{6a}
  @section Pragma Fast_Math
  
  
*************** under control of the pragma, rather than
*** 3938,3944 ****
  @end table
  
  @node Pragma Favor_Top_Level,Pragma Finalize_Storage_Only,Pragma Fast_Math,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id13}@anchor{6e}@anchor{gnat_rm/implementation_defined_pragmas pragma-favor-top-level}@anchor{6f}
  @section Pragma Favor_Top_Level
  
  
--- 3817,3823 ----
  @end table
  
  @node Pragma Favor_Top_Level,Pragma Finalize_Storage_Only,Pragma Fast_Math,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id13}@anchor{6b}@anchor{gnat_rm/implementation_defined_pragmas pragma-favor-top-level}@anchor{6c}
  @section Pragma Favor_Top_Level
  
  
*************** When this pragma is used, dynamically ge
*** 3957,3963 ****
  targets for nested subprograms. See restriction @code{No_Implicit_Dynamic_Code}.
  
  @node Pragma Finalize_Storage_Only,Pragma Float_Representation,Pragma Favor_Top_Level,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-finalize-storage-only}@anchor{70}
  @section Pragma Finalize_Storage_Only
  
  
--- 3836,3842 ----
  targets for nested subprograms. See restriction @code{No_Implicit_Dynamic_Code}.
  
  @node Pragma Finalize_Storage_Only,Pragma Float_Representation,Pragma Favor_Top_Level,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-finalize-storage-only}@anchor{6d}
  @section Pragma Finalize_Storage_Only
  
  
*************** name. Note that this pragma does not sup
*** 3977,3983 ****
  heap-allocated objects (see pragma @code{No_Heap_Finalization}).
  
  @node Pragma Float_Representation,Pragma Ghost,Pragma Finalize_Storage_Only,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-float-representation}@anchor{71}
  @section Pragma Float_Representation
  
  
--- 3856,3862 ----
  heap-allocated objects (see pragma @code{No_Heap_Finalization}).
  
  @node Pragma Float_Representation,Pragma Ghost,Pragma Finalize_Storage_Only,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-float-representation}@anchor{6e}
  @section Pragma Float_Representation
  
  
*************** No other value of digits is permitted.
*** 4012,4018 ****
  @end itemize
  
  @node Pragma Ghost,Pragma Global,Pragma Float_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ghost}@anchor{72}@anchor{gnat_rm/implementation_defined_pragmas id14}@anchor{73}
  @section Pragma Ghost
  
  
--- 3891,3897 ----
  @end itemize
  
  @node Pragma Ghost,Pragma Global,Pragma Float_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ghost}@anchor{6f}@anchor{gnat_rm/implementation_defined_pragmas id14}@anchor{70}
  @section Pragma Ghost
  
  
*************** For the semantics of this pragma, see th
*** 4026,4032 ****
  2014 Reference Manual, section 6.9.
  
  @node Pragma Global,Pragma Ident,Pragma Ghost,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-global}@anchor{74}@anchor{gnat_rm/implementation_defined_pragmas id15}@anchor{75}
  @section Pragma Global
  
  
--- 3905,3911 ----
  2014 Reference Manual, section 6.9.
  
  @node Pragma Global,Pragma Ident,Pragma Ghost,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-global}@anchor{71}@anchor{gnat_rm/implementation_defined_pragmas id15}@anchor{72}
  @section Pragma Global
  
  
*************** For the semantics of this pragma, see th
*** 4051,4057 ****
  SPARK 2014 Reference Manual, section 6.1.4.
  
  @node Pragma Ident,Pragma Ignore_Pragma,Pragma Global,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ident}@anchor{76}
  @section Pragma Ident
  
  
--- 3930,3936 ----
  SPARK 2014 Reference Manual, section 6.1.4.
  
  @node Pragma Ident,Pragma Ignore_Pragma,Pragma Global,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ident}@anchor{73}
  @section Pragma Ident
  
  
*************** This pragma is identical in effect to pr
*** 4065,4071 ****
  for compatibility with other Ada compilers providing this pragma.
  
  @node Pragma Ignore_Pragma,Pragma Implementation_Defined,Pragma Ident,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ignore-pragma}@anchor{77}
  @section Pragma Ignore_Pragma
  
  
--- 3944,3950 ----
  for compatibility with other Ada compilers providing this pragma.
  
  @node Pragma Ignore_Pragma,Pragma Implementation_Defined,Pragma Ident,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ignore-pragma}@anchor{74}
  @section Pragma Ignore_Pragma
  
  
*************** pragma allows such pragmas to be ignored
*** 4085,4091 ****
  mode, or during porting of legacy code.
  
  @node Pragma Implementation_Defined,Pragma Implemented,Pragma Ignore_Pragma,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implementation-defined}@anchor{78}
  @section Pragma Implementation_Defined
  
  
--- 3964,3970 ----
  mode, or during porting of legacy code.
  
  @node Pragma Implementation_Defined,Pragma Implemented,Pragma Ignore_Pragma,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implementation-defined}@anchor{75}
  @section Pragma Implementation_Defined
  
  
*************** for the purpose of implementing the No_I
*** 4112,4118 ****
  restriction.
  
  @node Pragma Implemented,Pragma Implicit_Packing,Pragma Implementation_Defined,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implemented}@anchor{79}
  @section Pragma Implemented
  
  
--- 3991,3997 ----
  restriction.
  
  @node Pragma Implemented,Pragma Implicit_Packing,Pragma Implementation_Defined,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implemented}@anchor{76}
  @section Pragma Implemented
  
  
*************** By_Any shares the behavior of By_Entry a
*** 4158,4164 ****
  the target's overriding subprogram kind.
  
  @node Pragma Implicit_Packing,Pragma Import_Function,Pragma Implemented,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implicit-packing}@anchor{7a}
  @section Pragma Implicit_Packing
  
  
--- 4037,4043 ----
  the target's overriding subprogram kind.
  
  @node Pragma Implicit_Packing,Pragma Import_Function,Pragma Implemented,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implicit-packing}@anchor{77}
  @section Pragma Implicit_Packing
  
  
*************** sufficient. The use of pragma Implicit_P
*** 4212,4218 ****
  declaration to compile without an explicit pragma Pack.
  
  @node Pragma Import_Function,Pragma Import_Object,Pragma Implicit_Packing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-function}@anchor{7b}
  @section Pragma Import_Function
  
  
--- 4091,4097 ----
  declaration to compile without an explicit pragma Pack.
  
  @node Pragma Import_Function,Pragma Import_Object,Pragma Implicit_Packing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-function}@anchor{78}
  @section Pragma Import_Function
  
  
*************** notation.  If the mechanism is not speci
*** 4277,4283 ****
  is used.
  
  @node Pragma Import_Object,Pragma Import_Procedure,Pragma Import_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-object}@anchor{7c}
  @section Pragma Import_Object
  
  
--- 4156,4162 ----
  is used.
  
  @node Pragma Import_Object,Pragma Import_Procedure,Pragma Import_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-object}@anchor{79}
  @section Pragma Import_Object
  
  
*************** point of view).  @code{size} is syntax c
*** 4303,4309 ****
  GNAT.
  
  @node Pragma Import_Procedure,Pragma Import_Valued_Procedure,Pragma Import_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-procedure}@anchor{7d}
  @section Pragma Import_Procedure
  
  
--- 4182,4188 ----
  GNAT.
  
  @node Pragma Import_Procedure,Pragma Import_Valued_Procedure,Pragma Import_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-procedure}@anchor{7a}
  @section Pragma Import_Procedure
  
  
*************** applies to a procedure rather than a fun
*** 4343,4349 ****
  @code{Result_Type} and @code{Result_Mechanism} are not permitted.
  
  @node Pragma Import_Valued_Procedure,Pragma Independent,Pragma Import_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-valued-procedure}@anchor{7e}
  @section Pragma Import_Valued_Procedure
  
  
--- 4222,4228 ----
  @code{Result_Type} and @code{Result_Mechanism} are not permitted.
  
  @node Pragma Import_Valued_Procedure,Pragma Independent,Pragma Import_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-valued-procedure}@anchor{7b}
  @section Pragma Import_Valued_Procedure
  
  
*************** pragma Import that specifies the desired
*** 4396,4402 ****
  default convention is Ada, which is almost certainly not what is required.
  
  @node Pragma Independent,Pragma Independent_Components,Pragma Import_Valued_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-independent}@anchor{7f}
  @section Pragma Independent
  
  
--- 4275,4281 ----
  default convention is Ada, which is almost certainly not what is required.
  
  @node Pragma Independent,Pragma Independent_Components,Pragma Import_Valued_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-independent}@anchor{7c}
  @section Pragma Independent
  
  
*************** constraints on the representation of the
*** 4418,4424 ****
  tight packing).
  
  @node Pragma Independent_Components,Pragma Initial_Condition,Pragma Independent,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-independent-components}@anchor{80}
  @section Pragma Independent_Components
  
  
--- 4297,4303 ----
  tight packing).
  
  @node Pragma Independent_Components,Pragma Initial_Condition,Pragma Independent,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-independent-components}@anchor{7d}
  @section Pragma Independent_Components
  
  
*************** constraints on the representation of the
*** 4439,4445 ****
  tight packing).
  
  @node Pragma Initial_Condition,Pragma Initialize_Scalars,Pragma Independent_Components,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id16}@anchor{81}@anchor{gnat_rm/implementation_defined_pragmas pragma-initial-condition}@anchor{82}
  @section Pragma Initial_Condition
  
  
--- 4318,4324 ----
  tight packing).
  
  @node Pragma Initial_Condition,Pragma Initialize_Scalars,Pragma Independent_Components,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id16}@anchor{7e}@anchor{gnat_rm/implementation_defined_pragmas pragma-initial-condition}@anchor{7f}
  @section Pragma Initial_Condition
  
  
*************** For the semantics of this pragma, see th
*** 4453,4459 ****
  in the SPARK 2014 Reference Manual, section 7.1.6.
  
  @node Pragma Initialize_Scalars,Pragma Initializes,Pragma Initial_Condition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-initialize-scalars}@anchor{83}
  @section Pragma Initialize_Scalars
  
  
--- 4332,4338 ----
  in the SPARK 2014 Reference Manual, section 7.1.6.
  
  @node Pragma Initialize_Scalars,Pragma Initializes,Pragma Initial_Condition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-initialize-scalars}@anchor{80}
  @section Pragma Initialize_Scalars
  
  
*************** good idea to turn on stack checking (see
*** 4562,4568 ****
  GNAT User's Guide) when using this pragma.
  
  @node Pragma Initializes,Pragma Inline_Always,Pragma Initialize_Scalars,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-initializes}@anchor{84}@anchor{gnat_rm/implementation_defined_pragmas id17}@anchor{85}
  @section Pragma Initializes
  
  
--- 4441,4447 ----
  GNAT User's Guide) when using this pragma.
  
  @node Pragma Initializes,Pragma Inline_Always,Pragma Initialize_Scalars,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-initializes}@anchor{81}@anchor{gnat_rm/implementation_defined_pragmas id17}@anchor{82}
  @section Pragma Initializes
  
  
*************** For the semantics of this pragma, see th
*** 4589,4595 ****
  SPARK 2014 Reference Manual, section 7.1.5.
  
  @node Pragma Inline_Always,Pragma Inline_Generic,Pragma Initializes,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id18}@anchor{86}@anchor{gnat_rm/implementation_defined_pragmas pragma-inline-always}@anchor{87}
  @section Pragma Inline_Always
  
  
--- 4468,4474 ----
  SPARK 2014 Reference Manual, section 7.1.5.
  
  @node Pragma Inline_Always,Pragma Inline_Generic,Pragma Initializes,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id18}@anchor{83}@anchor{gnat_rm/implementation_defined_pragmas pragma-inline-always}@anchor{84}
  @section Pragma Inline_Always
  
  
*************** apply this pragma to a primitive operati
*** 4608,4614 ****
  restrictions, the compiler is allowed to remove the out-of-line body of @code{NAME}.
  
  @node Pragma Inline_Generic,Pragma Interface,Pragma Inline_Always,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-inline-generic}@anchor{88}
  @section Pragma Inline_Generic
  
  
--- 4487,4493 ----
  restrictions, the compiler is allowed to remove the out-of-line body of @code{NAME}.
  
  @node Pragma Inline_Generic,Pragma Interface,Pragma Inline_Always,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-inline-generic}@anchor{85}
  @section Pragma Inline_Generic
  
  
*************** than to check that the given names are a
*** 4626,4632 ****
  generic instances.
  
  @node Pragma Interface,Pragma Interface_Name,Pragma Inline_Generic,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interface}@anchor{89}
  @section Pragma Interface
  
  
--- 4505,4511 ----
  generic instances.
  
  @node Pragma Interface,Pragma Interface_Name,Pragma Inline_Generic,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interface}@anchor{86}
  @section Pragma Interface
  
  
*************** maintaining Ada 83/Ada 95 compatibility
*** 4653,4659 ****
  Ada 83 compilers.
  
  @node Pragma Interface_Name,Pragma Interrupt_Handler,Pragma Interface,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interface-name}@anchor{8a}
  @section Pragma Interface_Name
  
  
--- 4532,4538 ----
  Ada 83 compilers.
  
  @node Pragma Interface_Name,Pragma Interrupt_Handler,Pragma Interface,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interface-name}@anchor{87}
  @section Pragma Interface_Name
  
  
*************** for an interfaced subprogram, and is pro
*** 4672,4678 ****
  least one of @code{External_Name} or @code{Link_Name}.
  
  @node Pragma Interrupt_Handler,Pragma Interrupt_State,Pragma Interface_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-handler}@anchor{8b}
  @section Pragma Interrupt_Handler
  
  
--- 4551,4557 ----
  least one of @code{External_Name} or @code{Link_Name}.
  
  @node Pragma Interrupt_Handler,Pragma Interrupt_State,Pragma Interface_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-handler}@anchor{88}
  @section Pragma Interrupt_Handler
  
  
*************** when this pragma is applied to a nonprot
*** 4692,4698 ****
  maskable interrupts, in place of the normal return instruction.
  
  @node Pragma Interrupt_State,Pragma Invariant,Pragma Interrupt_Handler,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-state}@anchor{8c}
  @section Pragma Interrupt_State
  
  
--- 4571,4577 ----
  maskable interrupts, in place of the normal return instruction.
  
  @node Pragma Interrupt_State,Pragma Invariant,Pragma Interrupt_Handler,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-state}@anchor{89}
  @section Pragma Interrupt_State
  
  
*************** with an application's runtime behavior i
*** 4778,4784 ****
  and in the case of the signal used to implement the @code{abort} statement.
  
  @node Pragma Invariant,Pragma Keep_Names,Pragma Interrupt_State,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id19}@anchor{8d}@anchor{gnat_rm/implementation_defined_pragmas pragma-invariant}@anchor{8e}
  @section Pragma Invariant
  
  
--- 4657,4663 ----
  and in the case of the signal used to implement the @code{abort} statement.
  
  @node Pragma Invariant,Pragma Keep_Names,Pragma Interrupt_State,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id19}@anchor{8a}@anchor{gnat_rm/implementation_defined_pragmas pragma-invariant}@anchor{8b}
  @section Pragma Invariant
  
  
*************** For further details on the use of this p
*** 4817,4823 ****
  of the Type_Invariant aspect.
  
  @node Pragma Keep_Names,Pragma License,Pragma Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-keep-names}@anchor{8f}
  @section Pragma Keep_Names
  
  
--- 4696,4702 ----
  of the Type_Invariant aspect.
  
  @node Pragma Keep_Names,Pragma License,Pragma Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-keep-names}@anchor{8c}
  @section Pragma Keep_Names
  
  
*************** use a @code{Discard_Names} pragma in the
*** 4837,4843 ****
  want to retain the names for specific enumeration types.
  
  @node Pragma License,Pragma Link_With,Pragma Keep_Names,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-license}@anchor{90}
  @section Pragma License
  
  
--- 4716,4722 ----
  want to retain the names for specific enumeration types.
  
  @node Pragma License,Pragma Link_With,Pragma Keep_Names,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-license}@anchor{8d}
  @section Pragma License
  
  
*************** GPL, but no warning for @code{GNAT.Socke
*** 4932,4938 ****
  run time, and is therefore licensed under the modified GPL.
  
  @node Pragma Link_With,Pragma Linker_Alias,Pragma License,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-link-with}@anchor{91}
  @section Pragma Link_With
  
  
--- 4811,4817 ----
  run time, and is therefore licensed under the modified GPL.
  
  @node Pragma Link_With,Pragma Linker_Alias,Pragma License,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-link-with}@anchor{8e}
  @section Pragma Link_With
  
  
*************** separate arguments to the linker. In add
*** 4956,4962 ****
  multiple arguments, with the same effect as successive pragmas.
  
  @node Pragma Linker_Alias,Pragma Linker_Constructor,Pragma Link_With,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-alias}@anchor{92}
  @section Pragma Linker_Alias
  
  
--- 4835,4841 ----
  multiple arguments, with the same effect as successive pragmas.
  
  @node Pragma Linker_Alias,Pragma Linker_Constructor,Pragma Link_With,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-alias}@anchor{8f}
  @section Pragma Linker_Alias
  
  
*************** end p;
*** 4997,5003 ****
  @end example
  
  @node Pragma Linker_Constructor,Pragma Linker_Destructor,Pragma Linker_Alias,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-constructor}@anchor{93}
  @section Pragma Linker_Constructor
  
  
--- 4876,4882 ----
  @end example
  
  @node Pragma Linker_Constructor,Pragma Linker_Destructor,Pragma Linker_Alias,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-constructor}@anchor{90}
  @section Pragma Linker_Constructor
  
  
*************** listed above. Where possible, the use of
*** 5027,5033 ****
  to the use of this pragma.
  
  @node Pragma Linker_Destructor,Pragma Linker_Section,Pragma Linker_Constructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-destructor}@anchor{94}
  @section Pragma Linker_Destructor
  
  
--- 4906,4912 ----
  to the use of this pragma.
  
  @node Pragma Linker_Destructor,Pragma Linker_Section,Pragma Linker_Constructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-destructor}@anchor{91}
  @section Pragma Linker_Destructor
  
  
*************** See @code{pragma Linker_Constructor} for
*** 5050,5056 ****
  because of these specific contexts.
  
  @node Pragma Linker_Section,Pragma Lock_Free,Pragma Linker_Destructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id20}@anchor{95}@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-section}@anchor{96}
  @section Pragma Linker_Section
  
  
--- 4929,4935 ----
  because of these specific contexts.
  
  @node Pragma Linker_Section,Pragma Lock_Free,Pragma Linker_Destructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id20}@anchor{92}@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-section}@anchor{93}
  @section Pragma Linker_Section
  
  
*************** end IO_Card;
*** 5124,5130 ****
  @end example
  
  @node Pragma Lock_Free,Pragma Loop_Invariant,Pragma Linker_Section,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id21}@anchor{97}@anchor{gnat_rm/implementation_defined_pragmas pragma-lock-free}@anchor{98}
  @section Pragma Lock_Free
  
  
--- 5003,5009 ----
  @end example
  
  @node Pragma Lock_Free,Pragma Loop_Invariant,Pragma Linker_Section,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id21}@anchor{94}@anchor{gnat_rm/implementation_defined_pragmas pragma-lock-free}@anchor{95}
  @section Pragma Lock_Free
  
  
*************** Function calls and attribute references
*** 5176,5182 ****
  @end itemize
  
  @node Pragma Loop_Invariant,Pragma Loop_Optimize,Pragma Lock_Free,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-invariant}@anchor{99}
  @section Pragma Loop_Invariant
  
  
--- 5055,5061 ----
  @end itemize
  
  @node Pragma Loop_Invariant,Pragma Loop_Optimize,Pragma Lock_Free,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-invariant}@anchor{96}
  @section Pragma Loop_Invariant
  
  
*************** attribute can only be used within the ex
*** 5209,5215 ****
  pragma. For full details, see documentation of attribute @code{Loop_Entry}.
  
  @node Pragma Loop_Optimize,Pragma Loop_Variant,Pragma Loop_Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-optimize}@anchor{9a}
  @section Pragma Loop_Optimize
  
  
--- 5088,5094 ----
  pragma. For full details, see documentation of attribute @code{Loop_Entry}.
  
  @node Pragma Loop_Optimize,Pragma Loop_Variant,Pragma Loop_Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-optimize}@anchor{97}
  @section Pragma Loop_Optimize
  
  
*************** compiler in order to enable the relevant
*** 5271,5277 ****
  vectorization.
  
  @node Pragma Loop_Variant,Pragma Machine_Attribute,Pragma Loop_Optimize,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-variant}@anchor{9b}
  @section Pragma Loop_Variant
  
  
--- 5150,5156 ----
  vectorization.
  
  @node Pragma Loop_Variant,Pragma Machine_Attribute,Pragma Loop_Optimize,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-variant}@anchor{98}
  @section Pragma Loop_Variant
  
  
*************** The @code{Loop_Entry} attribute may be u
*** 5318,5324 ****
  @code{Loop_Variant} pragma to refer to values on entry to the loop.
  
  @node Pragma Machine_Attribute,Pragma Main,Pragma Loop_Variant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-machine-attribute}@anchor{9c}
  @section Pragma Machine_Attribute
  
  
--- 5197,5203 ----
  @code{Loop_Variant} pragma to refer to values on entry to the loop.
  
  @node Pragma Machine_Attribute,Pragma Main,Pragma Loop_Variant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-machine-attribute}@anchor{99}
  @section Pragma Machine_Attribute
  
  
*************** which may make this pragma unusable for
*** 5344,5350 ****
  For further information see @cite{GNU Compiler Collection (GCC) Internals}.
  
  @node Pragma Main,Pragma Main_Storage,Pragma Machine_Attribute,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-main}@anchor{9d}
  @section Pragma Main
  
  
--- 5223,5229 ----
  For further information see @cite{GNU Compiler Collection (GCC) Internals}.
  
  @node Pragma Main,Pragma Main_Storage,Pragma Machine_Attribute,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-main}@anchor{9a}
  @section Pragma Main
  
  
*************** This pragma is provided for compatibilit
*** 5364,5370 ****
  no effect in GNAT, other than being syntax checked.
  
  @node Pragma Main_Storage,Pragma Max_Queue_Length,Pragma Main,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-main-storage}@anchor{9e}
  @section Pragma Main_Storage
  
  
--- 5243,5249 ----
  no effect in GNAT, other than being syntax checked.
  
  @node Pragma Main_Storage,Pragma Max_Queue_Length,Pragma Main,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-main-storage}@anchor{9b}
  @section Pragma Main_Storage
  
  
*************** This pragma is provided for compatibilit
*** 5383,5389 ****
  no effect in GNAT, other than being syntax checked.
  
  @node Pragma Max_Queue_Length,Pragma No_Body,Pragma Main_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id22}@anchor{9f}@anchor{gnat_rm/implementation_defined_pragmas pragma-max-queue-length}@anchor{a0}
  @section Pragma Max_Queue_Length
  
  
--- 5262,5268 ----
  no effect in GNAT, other than being syntax checked.
  
  @node Pragma Max_Queue_Length,Pragma No_Body,Pragma Main_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id22}@anchor{9c}@anchor{gnat_rm/implementation_defined_pragmas pragma-max-queue-length}@anchor{9d}
  @section Pragma Max_Queue_Length
  
  
*************** entry.
*** 5401,5407 ****
  A value of -1 represents no additional restriction on queue length.
  
  @node Pragma No_Body,Pragma No_Caching,Pragma Max_Queue_Length,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-body}@anchor{a1}
  @section Pragma No_Body
  
  
--- 5280,5286 ----
  A value of -1 represents no additional restriction on queue length.
  
  @node Pragma No_Body,Pragma No_Caching,Pragma Max_Queue_Length,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-body}@anchor{9e}
  @section Pragma No_Body
  
  
*************** dummy body with a No_Body pragma ensures
*** 5424,5430 ****
  earlier versions of the package body.
  
  @node Pragma No_Caching,Pragma No_Component_Reordering,Pragma No_Body,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-caching}@anchor{a2}@anchor{gnat_rm/implementation_defined_pragmas id23}@anchor{a3}
  @section Pragma No_Caching
  
  
--- 5303,5309 ----
  earlier versions of the package body.
  
  @node Pragma No_Caching,Pragma No_Component_Reordering,Pragma No_Body,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-caching}@anchor{9f}@anchor{gnat_rm/implementation_defined_pragmas id23}@anchor{a0}
  @section Pragma No_Caching
  
  
*************** For the semantics of this pragma, see th
*** 5438,5444 ****
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma No_Component_Reordering,Pragma No_Elaboration_Code_All,Pragma No_Caching,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-component-reordering}@anchor{a4}
  @section Pragma No_Component_Reordering
  
  
--- 5317,5323 ----
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma No_Component_Reordering,Pragma No_Elaboration_Code_All,Pragma No_Caching,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-component-reordering}@anchor{a1}
  @section Pragma No_Component_Reordering
  
  
*************** declared in units to which the pragma ap
*** 5457,5463 ****
  that this pragma be used consistently within a partition.
  
  @node Pragma No_Elaboration_Code_All,Pragma No_Heap_Finalization,Pragma No_Component_Reordering,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id24}@anchor{a5}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-elaboration-code-all}@anchor{a6}
  @section Pragma No_Elaboration_Code_All
  
  
--- 5336,5342 ----
  that this pragma be used consistently within a partition.
  
  @node Pragma No_Elaboration_Code_All,Pragma No_Heap_Finalization,Pragma No_Component_Reordering,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id24}@anchor{a2}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-elaboration-code-all}@anchor{a3}
  @section Pragma No_Elaboration_Code_All
  
  
*************** current unit, it must also have the No_E
*** 5476,5482 ****
  It may be applied to package or subprogram specs or their generic versions.
  
  @node Pragma No_Heap_Finalization,Pragma No_Inline,Pragma No_Elaboration_Code_All,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-heap-finalization}@anchor{a7}
  @section Pragma No_Heap_Finalization
  
  
--- 5355,5361 ----
  It may be applied to package or subprogram specs or their generic versions.
  
  @node Pragma No_Heap_Finalization,Pragma No_Inline,Pragma No_Elaboration_Code_All,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-heap-finalization}@anchor{a4}
  @section Pragma No_Heap_Finalization
  
  
*************** lose its @code{No_Heap_Finalization} pra
*** 5508,5514 ****
  appear at the library level.
  
  @node Pragma No_Inline,Pragma No_Return,Pragma No_Heap_Finalization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id25}@anchor{a8}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-inline}@anchor{a9}
  @section Pragma No_Inline
  
  
--- 5387,5393 ----
  appear at the library level.
  
  @node Pragma No_Inline,Pragma No_Return,Pragma No_Heap_Finalization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id25}@anchor{a5}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-inline}@anchor{a6}
  @section Pragma No_Inline
  
  
*************** in particular it is not subject to the u
*** 5526,5532 ****
  pragma @code{Inline_Always} for the same @code{NAME}.
  
  @node Pragma No_Return,Pragma No_Strict_Aliasing,Pragma No_Inline,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-return}@anchor{aa}
  @section Pragma No_Return
  
  
--- 5405,5411 ----
  pragma @code{Inline_Always} for the same @code{NAME}.
  
  @node Pragma No_Return,Pragma No_Strict_Aliasing,Pragma No_Inline,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-return}@anchor{a7}
  @section Pragma No_Return
  
  
*************** available in all earlier versions of Ada
*** 5553,5559 ****
  pragma.
  
  @node Pragma No_Strict_Aliasing,Pragma No_Tagged_Streams,Pragma No_Return,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-strict-aliasing}@anchor{ab}
  @section Pragma No_Strict_Aliasing
  
  
--- 5432,5438 ----
  pragma.
  
  @node Pragma No_Strict_Aliasing,Pragma No_Tagged_Streams,Pragma No_Return,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-strict-aliasing}@anchor{a8}
  @section Pragma No_Strict_Aliasing
  
  
*************** in the @cite{GNAT User's Guide}.
*** 5575,5581 ****
  This pragma currently has no effects on access to unconstrained array types.
  
  @node Pragma No_Tagged_Streams,Pragma Normalize_Scalars,Pragma No_Strict_Aliasing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-tagged-streams}@anchor{ac}@anchor{gnat_rm/implementation_defined_pragmas id26}@anchor{ad}
  @section Pragma No_Tagged_Streams
  
  
--- 5454,5460 ----
  This pragma currently has no effects on access to unconstrained array types.
  
  @node Pragma No_Tagged_Streams,Pragma Normalize_Scalars,Pragma No_Strict_Aliasing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-tagged-streams}@anchor{a9}@anchor{gnat_rm/implementation_defined_pragmas id26}@anchor{aa}
  @section Pragma No_Tagged_Streams
  
  
*************** with empty strings. This is useful to av
*** 5614,5620 ****
  level but has a negative impact on the debuggability of tagged types.
  
  @node Pragma Normalize_Scalars,Pragma Obsolescent,Pragma No_Tagged_Streams,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-normalize-scalars}@anchor{ae}
  @section Pragma Normalize_Scalars
  
  
--- 5493,5499 ----
  level but has a negative impact on the debuggability of tagged types.
  
  @node Pragma Normalize_Scalars,Pragma Obsolescent,Pragma No_Tagged_Streams,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-normalize-scalars}@anchor{ab}
  @section Pragma Normalize_Scalars
  
  
*************** will always generate an invalid value if
*** 5696,5702 ****
  @end table
  
  @node Pragma Obsolescent,Pragma Optimize_Alignment,Pragma Normalize_Scalars,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-obsolescent}@anchor{af}@anchor{gnat_rm/implementation_defined_pragmas id27}@anchor{b0}
  @section Pragma Obsolescent
  
  
--- 5575,5581 ----
  @end table
  
  @node Pragma Obsolescent,Pragma Optimize_Alignment,Pragma Normalize_Scalars,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-obsolescent}@anchor{ac}@anchor{gnat_rm/implementation_defined_pragmas id27}@anchor{ad}
  @section Pragma Obsolescent
  
  
*************** So if you specify @code{Entity =>} for t
*** 5792,5798 ****
  argument is present, it must be preceded by @code{Message =>}.
  
  @node Pragma Optimize_Alignment,Pragma Ordered,Pragma Obsolescent,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-optimize-alignment}@anchor{b1}
  @section Pragma Optimize_Alignment
  
  
--- 5671,5677 ----
  argument is present, it must be preceded by @code{Message =>}.
  
  @node Pragma Optimize_Alignment,Pragma Ordered,Pragma Obsolescent,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-optimize-alignment}@anchor{ae}
  @section Pragma Optimize_Alignment
  
  
*************** latter are compiled by default in pragma
*** 5878,5884 ****
  pragma appears at the start of the file.
  
  @node Pragma Ordered,Pragma Overflow_Mode,Pragma Optimize_Alignment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ordered}@anchor{b2}
  @section Pragma Ordered
  
  
--- 5757,5763 ----
  pragma appears at the start of the file.
  
  @node Pragma Ordered,Pragma Overflow_Mode,Pragma Optimize_Alignment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ordered}@anchor{af}
  @section Pragma Ordered
  
  
*************** For additional information please refer
*** 5970,5976 ****
  @emph{-gnatw.u} switch in the GNAT User's Guide.
  
  @node Pragma Overflow_Mode,Pragma Overriding_Renamings,Pragma Ordered,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-overflow-mode}@anchor{b3}
  @section Pragma Overflow_Mode
  
  
--- 5849,5855 ----
  @emph{-gnatw.u} switch in the GNAT User's Guide.
  
  @node Pragma Overflow_Mode,Pragma Overriding_Renamings,Pragma Ordered,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-overflow-mode}@anchor{b0}
  @section Pragma Overflow_Mode
  
  
*************** The pragma @code{Unsuppress (Overflow_Ch
*** 6009,6015 ****
  overflow checking, but does not affect the overflow mode.
  
  @node Pragma Overriding_Renamings,Pragma Partition_Elaboration_Policy,Pragma Overflow_Mode,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-overriding-renamings}@anchor{b4}
  @section Pragma Overriding_Renamings
  
  
--- 5888,5894 ----
  overflow checking, but does not affect the overflow mode.
  
  @node Pragma Overriding_Renamings,Pragma Partition_Elaboration_Policy,Pragma Overflow_Mode,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-overriding-renamings}@anchor{b1}
  @section Pragma Overriding_Renamings
  
  
*************** RM 8.3 (15) stipulates that an overridde
*** 6044,6050 ****
  declaration of the overriding operation.
  
  @node Pragma Partition_Elaboration_Policy,Pragma Part_Of,Pragma Overriding_Renamings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-partition-elaboration-policy}@anchor{b5}
  @section Pragma Partition_Elaboration_Policy
  
  
--- 5923,5929 ----
  declaration of the overriding operation.
  
  @node Pragma Partition_Elaboration_Policy,Pragma Part_Of,Pragma Overriding_Renamings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-partition-elaboration-policy}@anchor{b2}
  @section Pragma Partition_Elaboration_Policy
  
  
*************** versions of Ada as an implementation-def
*** 6061,6067 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Part_Of,Pragma Passive,Pragma Partition_Elaboration_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id28}@anchor{b6}@anchor{gnat_rm/implementation_defined_pragmas pragma-part-of}@anchor{b7}
  @section Pragma Part_Of
  
  
--- 5940,5946 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Part_Of,Pragma Passive,Pragma Partition_Elaboration_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id28}@anchor{b3}@anchor{gnat_rm/implementation_defined_pragmas pragma-part-of}@anchor{b4}
  @section Pragma Part_Of
  
  
*************** For the semantics of this pragma, see th
*** 6077,6083 ****
  SPARK 2014 Reference Manual, section 7.2.6.
  
  @node Pragma Passive,Pragma Persistent_BSS,Pragma Part_Of,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-passive}@anchor{b8}
  @section Pragma Passive
  
  
--- 5956,5962 ----
  SPARK 2014 Reference Manual, section 7.2.6.
  
  @node Pragma Passive,Pragma Persistent_BSS,Pragma Part_Of,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-passive}@anchor{b5}
  @section Pragma Passive
  
  
*************** optimized.  GNAT does not attempt to opt
*** 6100,6107 ****
  For more information on the subject of passive tasks, see the section
  'Passive Task Optimization' in the GNAT Users Guide.
  
! @node Pragma Persistent_BSS,Pragma Polling,Pragma Passive,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id29}@anchor{b9}@anchor{gnat_rm/implementation_defined_pragmas pragma-persistent-bss}@anchor{ba}
  @section Pragma Persistent_BSS
  
  
--- 5979,5986 ----
  For more information on the subject of passive tasks, see the section
  'Passive Task Optimization' in the GNAT Users Guide.
  
! @node Pragma Persistent_BSS,Pragma Post,Pragma Passive,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id29}@anchor{b6}@anchor{gnat_rm/implementation_defined_pragmas pragma-persistent-bss}@anchor{b7}
  @section Pragma Persistent_BSS
  
  
*************** type is potentially persistent.
*** 6131,6180 ****
  If this pragma is used on a target where this feature is not supported,
  then the pragma will be ignored. See also @code{pragma Linker_Section}.
  
! @node Pragma Polling,Pragma Post,Pragma Persistent_BSS,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-polling}@anchor{bb}
! @section Pragma Polling
! 
! 
! Syntax:
! 
! @example
! pragma Polling (ON | OFF);
! @end example
! 
! This pragma controls the generation of polling code.  This is normally off.
! If @code{pragma Polling (ON)} is used then periodic calls are generated to
! the routine @code{Ada.Exceptions.Poll}.  This routine is a separate unit in the
! runtime library, and can be found in file @code{a-excpol.adb}.
! 
! Pragma @code{Polling} can appear as a configuration pragma (for example it
! can be placed in the @code{gnat.adc} file) to enable polling globally, or it
! can be used in the statement or declaration sequence to control polling
! more locally.
! 
! A call to the polling routine is generated at the start of every loop and
! at the start of every subprogram call.  This guarantees that the @code{Poll}
! routine is called frequently, and places an upper bound (determined by
! the complexity of the code) on the period between two @code{Poll} calls.
! 
! The primary purpose of the polling interface is to enable asynchronous
! aborts on targets that cannot otherwise support it (for example Windows
! NT), but it may be used for any other purpose requiring periodic polling.
! The standard version is null, and can be replaced by a user program.  This
! will require re-compilation of the @code{Ada.Exceptions} package that can
! be found in files @code{a-except.ads} and @code{a-except.adb}.
! 
! A standard alternative unit (in file @code{4wexcpol.adb} in the standard GNAT
! distribution) is used to enable the asynchronous abort capability on
! targets that do not normally support the capability.  The version of
! @code{Poll} in this file makes a call to the appropriate runtime routine
! to test for an abort condition.
! 
! Note that polling can also be enabled by use of the @emph{-gnatP} switch.
! See the section on switches for gcc in the @cite{GNAT User's Guide}.
! 
! @node Pragma Post,Pragma Postcondition,Pragma Polling,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-post}@anchor{bc}
  @section Pragma Post
  
  
--- 6010,6017 ----
  If this pragma is used on a target where this feature is not supported,
  then the pragma will be ignored. See also @code{pragma Linker_Section}.
  
! @node Pragma Post,Pragma Postcondition,Pragma Persistent_BSS,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-post}@anchor{b8}
  @section Pragma Post
  
  
*************** appear at the start of the declarations
*** 6199,6205 ****
  (preceded only by other pragmas).
  
  @node Pragma Postcondition,Pragma Post_Class,Pragma Post,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-postcondition}@anchor{bd}
  @section Pragma Postcondition
  
  
--- 6036,6042 ----
  (preceded only by other pragmas).
  
  @node Pragma Postcondition,Pragma Post_Class,Pragma Post,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-postcondition}@anchor{b9}
  @section Pragma Postcondition
  
  
*************** Ada 2012, and has been retained in its o
*** 6364,6370 ****
  compatibility purposes.
  
  @node Pragma Post_Class,Pragma Rename_Pragma,Pragma Postcondition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-post-class}@anchor{be}
  @section Pragma Post_Class
  
  
--- 6201,6207 ----
  compatibility purposes.
  
  @node Pragma Post_Class,Pragma Rename_Pragma,Pragma Postcondition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-post-class}@anchor{ba}
  @section Pragma Post_Class
  
  
*************** policy that controls this pragma is @cod
*** 6399,6405 ****
  @code{Post_Class}.
  
  @node Pragma Rename_Pragma,Pragma Pre,Pragma Post_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-rename-pragma}@anchor{bf}
  @section Pragma Rename_Pragma
  
  
--- 6236,6242 ----
  @code{Post_Class}.
  
  @node Pragma Rename_Pragma,Pragma Pre,Pragma Post_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-rename-pragma}@anchor{bb}
  @section Pragma Rename_Pragma
  
  
*************** Pragma Inline_Only will not necessarily
*** 6438,6444 ****
  compiler; it's up to you to make sure the semantics are close enough.
  
  @node Pragma Pre,Pragma Precondition,Pragma Rename_Pragma,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-pre}@anchor{c0}
  @section Pragma Pre
  
  
--- 6275,6281 ----
  compiler; it's up to you to make sure the semantics are close enough.
  
  @node Pragma Pre,Pragma Precondition,Pragma Rename_Pragma,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-pre}@anchor{bc}
  @section Pragma Pre
  
  
*************** appear at the start of the declarations
*** 6463,6469 ****
  (preceded only by other pragmas).
  
  @node Pragma Precondition,Pragma Predicate,Pragma Pre,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-precondition}@anchor{c1}
  @section Pragma Precondition
  
  
--- 6300,6306 ----
  (preceded only by other pragmas).
  
  @node Pragma Precondition,Pragma Predicate,Pragma Pre,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-precondition}@anchor{bd}
  @section Pragma Precondition
  
  
*************** Ada 2012, and has been retained in its o
*** 6522,6528 ****
  compatibility purposes.
  
  @node Pragma Predicate,Pragma Predicate_Failure,Pragma Precondition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-predicate}@anchor{c2}@anchor{gnat_rm/implementation_defined_pragmas id30}@anchor{c3}
  @section Pragma Predicate
  
  
--- 6359,6365 ----
  compatibility purposes.
  
  @node Pragma Predicate,Pragma Predicate_Failure,Pragma Precondition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-predicate}@anchor{be}@anchor{gnat_rm/implementation_defined_pragmas id30}@anchor{bf}
  @section Pragma Predicate
  
  
*************** defined for subtype B). When following t
*** 6576,6582 ****
  use of predicates should be avoided.
  
  @node Pragma Predicate_Failure,Pragma Preelaborable_Initialization,Pragma Predicate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-predicate-failure}@anchor{c4}
  @section Pragma Predicate_Failure
  
  
--- 6413,6419 ----
  use of predicates should be avoided.
  
  @node Pragma Predicate_Failure,Pragma Preelaborable_Initialization,Pragma Predicate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-predicate-failure}@anchor{c0}
  @section Pragma Predicate_Failure
  
  
*************** the language-defined
*** 6593,6599 ****
  @code{Predicate_Failure} aspect, and shares its restrictions and semantics.
  
  @node Pragma Preelaborable_Initialization,Pragma Prefix_Exception_Messages,Pragma Predicate_Failure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-preelaborable-initialization}@anchor{c5}
  @section Pragma Preelaborable_Initialization
  
  
--- 6430,6436 ----
  @code{Predicate_Failure} aspect, and shares its restrictions and semantics.
  
  @node Pragma Preelaborable_Initialization,Pragma Prefix_Exception_Messages,Pragma Predicate_Failure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-preelaborable-initialization}@anchor{c1}
  @section Pragma Preelaborable_Initialization
  
  
*************** versions of Ada as an implementation-def
*** 6608,6614 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Prefix_Exception_Messages,Pragma Pre_Class,Pragma Preelaborable_Initialization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-prefix-exception-messages}@anchor{c6}
  @section Pragma Prefix_Exception_Messages
  
  
--- 6445,6451 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Prefix_Exception_Messages,Pragma Pre_Class,Pragma Preelaborable_Initialization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-prefix-exception-messages}@anchor{c2}
  @section Pragma Prefix_Exception_Messages
  
  
*************** prefixing in this case, you can always c
*** 6639,6645 ****
  @code{GNAT.Source_Info.Enclosing_Entity} and prepend the string manually.
  
  @node Pragma Pre_Class,Pragma Priority_Specific_Dispatching,Pragma Prefix_Exception_Messages,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-pre-class}@anchor{c7}
  @section Pragma Pre_Class
  
  
--- 6476,6482 ----
  @code{GNAT.Source_Info.Enclosing_Entity} and prepend the string manually.
  
  @node Pragma Pre_Class,Pragma Priority_Specific_Dispatching,Pragma Prefix_Exception_Messages,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-pre-class}@anchor{c3}
  @section Pragma Pre_Class
  
  
*************** policy that controls this pragma is @cod
*** 6674,6680 ****
  @code{Pre_Class}.
  
  @node Pragma Priority_Specific_Dispatching,Pragma Profile,Pragma Pre_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-priority-specific-dispatching}@anchor{c8}
  @section Pragma Priority_Specific_Dispatching
  
  
--- 6511,6517 ----
  @code{Pre_Class}.
  
  @node Pragma Priority_Specific_Dispatching,Pragma Profile,Pragma Pre_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-priority-specific-dispatching}@anchor{c4}
  @section Pragma Priority_Specific_Dispatching
  
  
*************** versions of Ada as an implementation-def
*** 6698,6711 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Profile,Pragma Profile_Warnings,Pragma Priority_Specific_Dispatching,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-profile}@anchor{c9}
  @section Pragma Profile
  
  
  Syntax:
  
  @example
! pragma Profile (Ravenscar | Restricted | Rational |
                  GNAT_Extended_Ravenscar | GNAT_Ravenscar_EDF );
  @end example
  
--- 6535,6548 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Profile,Pragma Profile_Warnings,Pragma Priority_Specific_Dispatching,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-profile}@anchor{c5}
  @section Pragma Profile
  
  
  Syntax:
  
  @example
! pragma Profile (Ravenscar | Restricted | Rational | Jorvik |
                  GNAT_Extended_Ravenscar | GNAT_Ravenscar_EDF );
  @end example
  
*************** This pragma is standard in Ada 2005, but
*** 6713,6722 ****
  versions of Ada as an implementation-defined pragma. This is a
  configuration pragma that establishes a set of configuration pragmas
  that depend on the argument. @code{Ravenscar} is standard in Ada 2005.
  The other possibilities (@code{Restricted}, @code{Rational},
  @code{GNAT_Extended_Ravenscar}, @code{GNAT_Ravenscar_EDF})
! are implementation-defined. The set of configuration pragmas
! is defined in the following sections.
  
  
  @itemize *
--- 6550,6561 ----
  versions of Ada as an implementation-defined pragma. This is a
  configuration pragma that establishes a set of configuration pragmas
  that depend on the argument. @code{Ravenscar} is standard in Ada 2005.
+ @code{Jorvik} is standard in Ada 202x.
  The other possibilities (@code{Restricted}, @code{Rational},
  @code{GNAT_Extended_Ravenscar}, @code{GNAT_Ravenscar_EDF})
! are implementation-defined.  @code{GNAT_Extended_Ravenscar} is an alias for @code{Jorvik}.
! 
! The set of configuration pragmas is defined in the following sections.
  
  
  @itemize *
*************** No rendezvous statements are allowed.
*** 6816,6822 ****
  @end itemize
  
  The Ravenscar profile also includes the following restrictions that specify
! that there are no semantic dependences on the corresponding predefined
  packages:
  
  
--- 6655,6661 ----
  @end itemize
  
  The Ravenscar profile also includes the following restrictions that specify
! that there are no semantic dependencies on the corresponding predefined
  packages:
  
  
*************** automatically causes the use of a simpli
*** 6868,6879 ****
  more efficient version of the tasking run-time library.
  
  @item 
! Pragma Profile (GNAT_Extended_Ravenscar)
  
! This profile corresponds to a GNAT specific extension of the
! Ravenscar profile. The profile may change in the future although
! only in a compatible way: some restrictions may be removed or
! relaxed. It is defined as a variation of the Ravenscar profile.
  
  The @code{No_Implicit_Heap_Allocations} restriction has been replaced
  by @code{No_Implicit_Task_Allocations} and
--- 6707,6716 ----
  more efficient version of the tasking run-time library.
  
  @item 
! Pragma Profile (Jorvik)
  
! @code{Jorvik} is the new profile added to the Ada 202x draft standard,
! previously implemented under the name @code{GNAT_Extended_Ravenscar}.
  
  The @code{No_Implicit_Heap_Allocations} restriction has been replaced
  by @code{No_Implicit_Task_Allocations} and
*************** The @code{Simple_Barriers} restriction h
*** 6885,6890 ****
--- 6722,6732 ----
  The @code{Max_Protected_Entries}, @code{Max_Entry_Queue_Length}, and
  @code{No_Relative_Delay} restrictions have been removed.
  
+ Details on the rationale for @code{Jorvik} and implications for use may be
+ found in @cite{A New Ravenscar-Based Profile} by P. Rogers, J. Ruiz,
+ T. Gingold and P. Bernardi, in @cite{Reliable Software Technologies -- Ada Europe 2017}, Springer-Verlag Lecture Notes in Computer Science,
+ Number 10300.
+ 
  @item 
  Pragma Profile (GNAT_Ravenscar_EDF)
  
*************** conforming Ada constructs.  The profile
*** 6972,6978 ****
  @end itemize
  
  @node Pragma Profile_Warnings,Pragma Propagate_Exceptions,Pragma Profile,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-profile-warnings}@anchor{ca}
  @section Pragma Profile_Warnings
  
  
--- 6814,6820 ----
  @end itemize
  
  @node Pragma Profile_Warnings,Pragma Propagate_Exceptions,Pragma Profile,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-profile-warnings}@anchor{c6}
  @section Pragma Profile_Warnings
  
  
*************** violations of the profile generate warni
*** 6990,6996 ****
  of error messages.
  
  @node Pragma Propagate_Exceptions,Pragma Provide_Shift_Operators,Pragma Profile_Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-propagate-exceptions}@anchor{cb}
  @section Pragma Propagate_Exceptions
  
  
--- 6832,6838 ----
  of error messages.
  
  @node Pragma Propagate_Exceptions,Pragma Provide_Shift_Operators,Pragma Profile_Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-propagate-exceptions}@anchor{c7}
  @section Pragma Propagate_Exceptions
  
  
*************** purposes. It used to be used in connecti
*** 7009,7015 ****
  a now-obsolete mechanism for implementation of exceptions.
  
  @node Pragma Provide_Shift_Operators,Pragma Psect_Object,Pragma Propagate_Exceptions,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-provide-shift-operators}@anchor{cc}
  @section Pragma Provide_Shift_Operators
  
  
--- 6851,6857 ----
  a now-obsolete mechanism for implementation of exceptions.
  
  @node Pragma Provide_Shift_Operators,Pragma Psect_Object,Pragma Propagate_Exceptions,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-provide-shift-operators}@anchor{c8}
  @section Pragma Provide_Shift_Operators
  
  
*************** including the function declarations for
*** 7029,7035 ****
  with the pragma Import (Intrinsic, ...) statements.
  
  @node Pragma Psect_Object,Pragma Pure_Function,Pragma Provide_Shift_Operators,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-psect-object}@anchor{cd}
  @section Pragma Psect_Object
  
  
--- 6871,6877 ----
  with the pragma Import (Intrinsic, ...) statements.
  
  @node Pragma Psect_Object,Pragma Pure_Function,Pragma Provide_Shift_Operators,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-psect-object}@anchor{c9}
  @section Pragma Psect_Object
  
  
*************** EXTERNAL_SYMBOL ::=
*** 7049,7055 ****
  This pragma is identical in effect to pragma @code{Common_Object}.
  
  @node Pragma Pure_Function,Pragma Rational,Pragma Psect_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-pure-function}@anchor{ce}@anchor{gnat_rm/implementation_defined_pragmas id31}@anchor{cf}
  @section Pragma Pure_Function
  
  
--- 6891,6897 ----
  This pragma is identical in effect to pragma @code{Common_Object}.
  
  @node Pragma Pure_Function,Pragma Rational,Pragma Psect_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-pure-function}@anchor{ca}@anchor{gnat_rm/implementation_defined_pragmas id31}@anchor{cb}
  @section Pragma Pure_Function
  
  
*************** unit is not a Pure unit in the categoriz
*** 7111,7117 ****
  thus marked is free to @code{with} non-pure units.
  
  @node Pragma Rational,Pragma Ravenscar,Pragma Pure_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-rational}@anchor{d0}
  @section Pragma Rational
  
  
--- 6953,6959 ----
  thus marked is free to @code{with} non-pure units.
  
  @node Pragma Rational,Pragma Ravenscar,Pragma Pure_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-rational}@anchor{cc}
  @section Pragma Rational
  
  
*************** pragma Profile (Rational);
*** 7129,7135 ****
  @end example
  
  @node Pragma Ravenscar,Pragma Refined_Depends,Pragma Rational,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ravenscar}@anchor{d1}
  @section Pragma Ravenscar
  
  
--- 6971,6977 ----
  @end example
  
  @node Pragma Ravenscar,Pragma Refined_Depends,Pragma Rational,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ravenscar}@anchor{cd}
  @section Pragma Ravenscar
  
  
*************** pragma Profile (Ravenscar);
*** 7149,7155 ****
  which is the preferred method of setting the @code{Ravenscar} profile.
  
  @node Pragma Refined_Depends,Pragma Refined_Global,Pragma Ravenscar,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-refined-depends}@anchor{d2}@anchor{gnat_rm/implementation_defined_pragmas id32}@anchor{d3}
  @section Pragma Refined_Depends
  
  
--- 6991,6997 ----
  which is the preferred method of setting the @code{Ravenscar} profile.
  
  @node Pragma Refined_Depends,Pragma Refined_Global,Pragma Ravenscar,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-refined-depends}@anchor{ce}@anchor{gnat_rm/implementation_defined_pragmas id32}@anchor{cf}
  @section Pragma Refined_Depends
  
  
*************** For the semantics of this pragma, see th
*** 7182,7188 ****
  the SPARK 2014 Reference Manual, section 6.1.5.
  
  @node Pragma Refined_Global,Pragma Refined_Post,Pragma Refined_Depends,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-refined-global}@anchor{d4}@anchor{gnat_rm/implementation_defined_pragmas id33}@anchor{d5}
  @section Pragma Refined_Global
  
  
--- 7024,7030 ----
  the SPARK 2014 Reference Manual, section 6.1.5.
  
  @node Pragma Refined_Global,Pragma Refined_Post,Pragma Refined_Depends,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-refined-global}@anchor{d0}@anchor{gnat_rm/implementation_defined_pragmas id33}@anchor{d1}
  @section Pragma Refined_Global
  
  
*************** For the semantics of this pragma, see th
*** 7207,7213 ****
  the SPARK 2014 Reference Manual, section 6.1.4.
  
  @node Pragma Refined_Post,Pragma Refined_State,Pragma Refined_Global,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-refined-post}@anchor{d6}@anchor{gnat_rm/implementation_defined_pragmas id34}@anchor{d7}
  @section Pragma Refined_Post
  
  
--- 7049,7055 ----
  the SPARK 2014 Reference Manual, section 6.1.4.
  
  @node Pragma Refined_Post,Pragma Refined_State,Pragma Refined_Global,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-refined-post}@anchor{d2}@anchor{gnat_rm/implementation_defined_pragmas id34}@anchor{d3}
  @section Pragma Refined_Post
  
  
*************** For the semantics of this pragma, see th
*** 7221,7227 ****
  the SPARK 2014 Reference Manual, section 7.2.7.
  
  @node Pragma Refined_State,Pragma Relative_Deadline,Pragma Refined_Post,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-refined-state}@anchor{d8}@anchor{gnat_rm/implementation_defined_pragmas id35}@anchor{d9}
  @section Pragma Refined_State
  
  
--- 7063,7069 ----
  the SPARK 2014 Reference Manual, section 7.2.7.
  
  @node Pragma Refined_State,Pragma Relative_Deadline,Pragma Refined_Post,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-refined-state}@anchor{d4}@anchor{gnat_rm/implementation_defined_pragmas id35}@anchor{d5}
  @section Pragma Refined_State
  
  
*************** For the semantics of this pragma, see th
*** 7247,7253 ****
  the SPARK 2014 Reference Manual, section 7.2.2.
  
  @node Pragma Relative_Deadline,Pragma Remote_Access_Type,Pragma Refined_State,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-relative-deadline}@anchor{da}
  @section Pragma Relative_Deadline
  
  
--- 7089,7095 ----
  the SPARK 2014 Reference Manual, section 7.2.2.
  
  @node Pragma Relative_Deadline,Pragma Remote_Access_Type,Pragma Refined_State,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-relative-deadline}@anchor{d6}
  @section Pragma Relative_Deadline
  
  
*************** versions of Ada as an implementation-def
*** 7262,7268 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Remote_Access_Type,Pragma Restricted_Run_Time,Pragma Relative_Deadline,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id36}@anchor{db}@anchor{gnat_rm/implementation_defined_pragmas pragma-remote-access-type}@anchor{dc}
  @section Pragma Remote_Access_Type
  
  
--- 7104,7110 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Remote_Access_Type,Pragma Restricted_Run_Time,Pragma Relative_Deadline,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id36}@anchor{d7}@anchor{gnat_rm/implementation_defined_pragmas pragma-remote-access-type}@anchor{d8}
  @section Pragma Remote_Access_Type
  
  
*************** pertaining to remote access to class-wid
*** 7288,7294 ****
  actual type must be a remote access to class-wide type.
  
  @node Pragma Restricted_Run_Time,Pragma Restriction_Warnings,Pragma Remote_Access_Type,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-restricted-run-time}@anchor{dd}
  @section Pragma Restricted_Run_Time
  
  
--- 7130,7136 ----
  actual type must be a remote access to class-wide type.
  
  @node Pragma Restricted_Run_Time,Pragma Restriction_Warnings,Pragma Remote_Access_Type,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-restricted-run-time}@anchor{d9}
  @section Pragma Restricted_Run_Time
  
  
*************** which is the preferred method of setting
*** 7309,7315 ****
  profile.
  
  @node Pragma Restriction_Warnings,Pragma Reviewable,Pragma Restricted_Run_Time,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-restriction-warnings}@anchor{de}
  @section Pragma Restriction_Warnings
  
  
--- 7151,7157 ----
  profile.
  
  @node Pragma Restriction_Warnings,Pragma Reviewable,Pragma Restricted_Run_Time,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-restriction-warnings}@anchor{da}
  @section Pragma Restriction_Warnings
  
  
*************** generating a warning, but any other use
*** 7347,7353 ****
  defined pragmas will cause a warning to be generated.
  
  @node Pragma Reviewable,Pragma Secondary_Stack_Size,Pragma Restriction_Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-reviewable}@anchor{df}
  @section Pragma Reviewable
  
  
--- 7189,7195 ----
  defined pragmas will cause a warning to be generated.
  
  @node Pragma Reviewable,Pragma Secondary_Stack_Size,Pragma Restriction_Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-reviewable}@anchor{db}
  @section Pragma Reviewable
  
  
*************** comprehensive messages identifying possi
*** 7451,7457 ****
  information.
  
  @node Pragma Secondary_Stack_Size,Pragma Share_Generic,Pragma Reviewable,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id37}@anchor{e0}@anchor{gnat_rm/implementation_defined_pragmas pragma-secondary-stack-size}@anchor{e1}
  @section Pragma Secondary_Stack_Size
  
  
--- 7293,7299 ----
  information.
  
  @node Pragma Secondary_Stack_Size,Pragma Share_Generic,Pragma Reviewable,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id37}@anchor{dc}@anchor{gnat_rm/implementation_defined_pragmas pragma-secondary-stack-size}@anchor{dd}
  @section Pragma Secondary_Stack_Size
  
  
*************** Note the pragma cannot appear when the r
*** 7487,7493 ****
  is in effect.
  
  @node Pragma Share_Generic,Pragma Shared,Pragma Secondary_Stack_Size,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-share-generic}@anchor{e2}
  @section Pragma Share_Generic
  
  
--- 7329,7335 ----
  is in effect.
  
  @node Pragma Share_Generic,Pragma Shared,Pragma Secondary_Stack_Size,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-share-generic}@anchor{de}
  @section Pragma Share_Generic
  
  
*************** than to check that the given names are a
*** 7505,7511 ****
  generic instances.
  
  @node Pragma Shared,Pragma Short_Circuit_And_Or,Pragma Share_Generic,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id38}@anchor{e3}@anchor{gnat_rm/implementation_defined_pragmas pragma-shared}@anchor{e4}
  @section Pragma Shared
  
  
--- 7347,7353 ----
  generic instances.
  
  @node Pragma Shared,Pragma Short_Circuit_And_Or,Pragma Share_Generic,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id38}@anchor{df}@anchor{gnat_rm/implementation_defined_pragmas pragma-shared}@anchor{e0}
  @section Pragma Shared
  
  
*************** This pragma is provided for compatibilit
*** 7513,7519 ****
  semantics are identical to pragma Atomic.
  
  @node Pragma Short_Circuit_And_Or,Pragma Short_Descriptors,Pragma Shared,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-short-circuit-and-or}@anchor{e5}
  @section Pragma Short_Circuit_And_Or
  
  
--- 7355,7361 ----
  semantics are identical to pragma Atomic.
  
  @node Pragma Short_Circuit_And_Or,Pragma Short_Descriptors,Pragma Shared,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-short-circuit-and-or}@anchor{e1}
  @section Pragma Short_Circuit_And_Or
  
  
*************** within the file being compiled, it appli
*** 7532,7538 ****
  There is no requirement that all units in a partition use this option.
  
  @node Pragma Short_Descriptors,Pragma Simple_Storage_Pool_Type,Pragma Short_Circuit_And_Or,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-short-descriptors}@anchor{e6}
  @section Pragma Short_Descriptors
  
  
--- 7374,7380 ----
  There is no requirement that all units in a partition use this option.
  
  @node Pragma Short_Descriptors,Pragma Simple_Storage_Pool_Type,Pragma Short_Circuit_And_Or,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-short-descriptors}@anchor{e2}
  @section Pragma Short_Descriptors
  
  
*************** This pragma is provided for compatibilit
*** 7546,7552 ****
  is recognized but ignored by all current versions of GNAT.
  
  @node Pragma Simple_Storage_Pool_Type,Pragma Source_File_Name,Pragma Short_Descriptors,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-simple-storage-pool-type}@anchor{e7}@anchor{gnat_rm/implementation_defined_pragmas id39}@anchor{e8}
  @section Pragma Simple_Storage_Pool_Type
  
  
--- 7388,7394 ----
  is recognized but ignored by all current versions of GNAT.
  
  @node Pragma Simple_Storage_Pool_Type,Pragma Source_File_Name,Pragma Short_Descriptors,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-simple-storage-pool-type}@anchor{e3}@anchor{gnat_rm/implementation_defined_pragmas id39}@anchor{e4}
  @section Pragma Simple_Storage_Pool_Type
  
  
*************** storage-management discipline).
*** 7600,7606 ****
  
  An object of a simple storage pool type can be associated with an access
  type by specifying the attribute
! @ref{e9,,Simple_Storage_Pool}. For example:
  
  @example
  My_Pool : My_Simple_Storage_Pool_Type;
--- 7442,7448 ----
  
  An object of a simple storage pool type can be associated with an access
  type by specifying the attribute
! @ref{e5,,Simple_Storage_Pool}. For example:
  
  @example
  My_Pool : My_Simple_Storage_Pool_Type;
*************** type Acc is access My_Data_Type;
*** 7610,7620 ****
  for Acc'Simple_Storage_Pool use My_Pool;
  @end example
  
! See attribute @ref{e9,,Simple_Storage_Pool}
  for further details.
  
  @node Pragma Source_File_Name,Pragma Source_File_Name_Project,Pragma Simple_Storage_Pool_Type,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name}@anchor{ea}@anchor{gnat_rm/implementation_defined_pragmas id40}@anchor{eb}
  @section Pragma Source_File_Name
  
  
--- 7452,7462 ----
  for Acc'Simple_Storage_Pool use My_Pool;
  @end example
  
! See attribute @ref{e5,,Simple_Storage_Pool}
  for further details.
  
  @node Pragma Source_File_Name,Pragma Source_File_Name_Project,Pragma Simple_Storage_Pool_Type,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name}@anchor{e6}@anchor{gnat_rm/implementation_defined_pragmas id40}@anchor{e7}
  @section Pragma Source_File_Name
  
  
*************** aware of these pragmas, and so other too
*** 7706,7725 ****
  be aware of the intended naming conventions. If you are using project files,
  file naming is controlled by Source_File_Name_Project pragmas, which are
  usually supplied automatically by the project manager. A pragma
! Source_File_Name cannot appear after a @ref{ec,,Pragma Source_File_Name_Project}.
  
  For more details on the use of the @code{Source_File_Name} pragma, see the
  sections on @cite{Using Other File Names} and @cite{Alternative File Naming Schemes}
  in the @cite{GNAT User's Guide}.
  
  @node Pragma Source_File_Name_Project,Pragma Source_Reference,Pragma Source_File_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name-project}@anchor{ec}@anchor{gnat_rm/implementation_defined_pragmas id41}@anchor{ed}
  @section Pragma Source_File_Name_Project
  
  
  This pragma has the same syntax and semantics as pragma Source_File_Name.
  It is only allowed as a stand-alone configuration pragma.
! It cannot appear after a @ref{ea,,Pragma Source_File_Name}, and
  most importantly, once pragma Source_File_Name_Project appears,
  no further Source_File_Name pragmas are allowed.
  
--- 7548,7567 ----
  be aware of the intended naming conventions. If you are using project files,
  file naming is controlled by Source_File_Name_Project pragmas, which are
  usually supplied automatically by the project manager. A pragma
! Source_File_Name cannot appear after a @ref{e8,,Pragma Source_File_Name_Project}.
  
  For more details on the use of the @code{Source_File_Name} pragma, see the
  sections on @cite{Using Other File Names} and @cite{Alternative File Naming Schemes}
  in the @cite{GNAT User's Guide}.
  
  @node Pragma Source_File_Name_Project,Pragma Source_Reference,Pragma Source_File_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name-project}@anchor{e8}@anchor{gnat_rm/implementation_defined_pragmas id41}@anchor{e9}
  @section Pragma Source_File_Name_Project
  
  
  This pragma has the same syntax and semantics as pragma Source_File_Name.
  It is only allowed as a stand-alone configuration pragma.
! It cannot appear after a @ref{e6,,Pragma Source_File_Name}, and
  most importantly, once pragma Source_File_Name_Project appears,
  no further Source_File_Name pragmas are allowed.
  
*************** Source_File_Name or Source_File_Name_Pro
*** 7731,7737 ****
  known to the project manager).
  
  @node Pragma Source_Reference,Pragma SPARK_Mode,Pragma Source_File_Name_Project,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-source-reference}@anchor{ee}
  @section Pragma Source_Reference
  
  
--- 7573,7579 ----
  known to the project manager).
  
  @node Pragma Source_Reference,Pragma SPARK_Mode,Pragma Source_File_Name_Project,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-source-reference}@anchor{ea}
  @section Pragma Source_Reference
  
  
*************** string expression other than a string li
*** 7755,7761 ****
  is needed for error messages issued by all phases of the compiler.
  
  @node Pragma SPARK_Mode,Pragma Static_Elaboration_Desired,Pragma Source_Reference,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-spark-mode}@anchor{ef}@anchor{gnat_rm/implementation_defined_pragmas id42}@anchor{f0}
  @section Pragma SPARK_Mode
  
  
--- 7597,7603 ----
  is needed for error messages issued by all phases of the compiler.
  
  @node Pragma SPARK_Mode,Pragma Static_Elaboration_Desired,Pragma Source_Reference,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-spark-mode}@anchor{eb}@anchor{gnat_rm/implementation_defined_pragmas id42}@anchor{ec}
  @section Pragma SPARK_Mode
  
  
*************** SPARK_Mode (@code{Off}), then that pragm
*** 7837,7843 ****
  the package body.
  
  @node Pragma Static_Elaboration_Desired,Pragma Stream_Convert,Pragma SPARK_Mode,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-static-elaboration-desired}@anchor{f1}
  @section Pragma Static_Elaboration_Desired
  
  
--- 7679,7685 ----
  the package body.
  
  @node Pragma Static_Elaboration_Desired,Pragma Stream_Convert,Pragma SPARK_Mode,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-static-elaboration-desired}@anchor{ed}
  @section Pragma Static_Elaboration_Desired
  
  
*************** construction of larger aggregates with s
*** 7861,7867 ****
  choice.)
  
  @node Pragma Stream_Convert,Pragma Style_Checks,Pragma Static_Elaboration_Desired,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-stream-convert}@anchor{f2}
  @section Pragma Stream_Convert
  
  
--- 7703,7709 ----
  choice.)
  
  @node Pragma Stream_Convert,Pragma Style_Checks,Pragma Static_Elaboration_Desired,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-stream-convert}@anchor{ee}
  @section Pragma Stream_Convert
  
  
*************** the pragma is silently ignored, and the
*** 7938,7944 ****
  attributes is used instead.
  
  @node Pragma Style_Checks,Pragma Subtitle,Pragma Stream_Convert,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-style-checks}@anchor{f3}
  @section Pragma Style_Checks
  
  
--- 7780,7786 ----
  attributes is used instead.
  
  @node Pragma Style_Checks,Pragma Subtitle,Pragma Stream_Convert,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-style-checks}@anchor{ef}
  @section Pragma Style_Checks
  
  
*************** Rf2 : Integer := ARG;      -- OK, no err
*** 8011,8017 ****
  @end example
  
  @node Pragma Subtitle,Pragma Suppress,Pragma Style_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-subtitle}@anchor{f4}
  @section Pragma Subtitle
  
  
--- 7853,7859 ----
  @end example
  
  @node Pragma Subtitle,Pragma Suppress,Pragma Style_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-subtitle}@anchor{f0}
  @section Pragma Subtitle
  
  
*************** This pragma is recognized for compatibil
*** 8025,8031 ****
  but is ignored by GNAT.
  
  @node Pragma Suppress,Pragma Suppress_All,Pragma Subtitle,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress}@anchor{f5}
  @section Pragma Suppress
  
  
--- 7867,7873 ----
  but is ignored by GNAT.
  
  @node Pragma Suppress,Pragma Suppress_All,Pragma Subtitle,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress}@anchor{f1}
  @section Pragma Suppress
  
  
*************** Of course, run-time checks are omitted w
*** 8098,8104 ****
  that they will not fail, whether or not checks are suppressed.
  
  @node Pragma Suppress_All,Pragma Suppress_Debug_Info,Pragma Suppress,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-all}@anchor{f6}
  @section Pragma Suppress_All
  
  
--- 7940,7946 ----
  that they will not fail, whether or not checks are suppressed.
  
  @node Pragma Suppress_All,Pragma Suppress_Debug_Info,Pragma Suppress,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-all}@anchor{f2}
  @section Pragma Suppress_All
  
  
*************** The use of the standard Ada pragma @code
*** 8117,8123 ****
  as a normal configuration pragma is the preferred usage in GNAT.
  
  @node Pragma Suppress_Debug_Info,Pragma Suppress_Exception_Locations,Pragma Suppress_All,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-debug-info}@anchor{f7}@anchor{gnat_rm/implementation_defined_pragmas id43}@anchor{f8}
  @section Pragma Suppress_Debug_Info
  
  
--- 7959,7965 ----
  as a normal configuration pragma is the preferred usage in GNAT.
  
  @node Pragma Suppress_Debug_Info,Pragma Suppress_Exception_Locations,Pragma Suppress_All,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-debug-info}@anchor{f3}@anchor{gnat_rm/implementation_defined_pragmas id43}@anchor{f4}
  @section Pragma Suppress_Debug_Info
  
  
*************** for the specified entity. It is intended
*** 8132,8138 ****
  the debugger, and navigating around debugger problems.
  
  @node Pragma Suppress_Exception_Locations,Pragma Suppress_Initialization,Pragma Suppress_Debug_Info,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-exception-locations}@anchor{f9}
  @section Pragma Suppress_Exception_Locations
  
  
--- 7974,7980 ----
  the debugger, and navigating around debugger problems.
  
  @node Pragma Suppress_Exception_Locations,Pragma Suppress_Initialization,Pragma Suppress_Debug_Info,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-exception-locations}@anchor{f5}
  @section Pragma Suppress_Exception_Locations
  
  
*************** a partition, so it is fine to have some
*** 8155,8161 ****
  with this pragma and others compiled in normal mode without it.
  
  @node Pragma Suppress_Initialization,Pragma Task_Name,Pragma Suppress_Exception_Locations,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id44}@anchor{fa}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-initialization}@anchor{fb}
  @section Pragma Suppress_Initialization
  
  
--- 7997,8003 ----
  with this pragma and others compiled in normal mode without it.
  
  @node Pragma Suppress_Initialization,Pragma Task_Name,Pragma Suppress_Exception_Locations,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id44}@anchor{f6}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-initialization}@anchor{f7}
  @section Pragma Suppress_Initialization
  
  
*************** is suppressed, just as though its subtyp
*** 8200,8206 ****
  Suppress_Initialization, as described above.
  
  @node Pragma Task_Name,Pragma Task_Storage,Pragma Suppress_Initialization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-task-name}@anchor{fc}
  @section Pragma Task_Name
  
  
--- 8042,8048 ----
  Suppress_Initialization, as described above.
  
  @node Pragma Task_Name,Pragma Task_Storage,Pragma Suppress_Initialization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-task-name}@anchor{f8}
  @section Pragma Task_Name
  
  
*************** end;
*** 8256,8262 ****
  @end example
  
  @node Pragma Task_Storage,Pragma Test_Case,Pragma Task_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-task-storage}@anchor{fd}
  @section Pragma Task_Storage
  
  
--- 8098,8104 ----
  @end example
  
  @node Pragma Task_Storage,Pragma Test_Case,Pragma Task_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-task-storage}@anchor{f9}
  @section Pragma Task_Storage
  
  
*************** created, depending on the target.  This
*** 8276,8282 ****
  type.
  
  @node Pragma Test_Case,Pragma Thread_Local_Storage,Pragma Task_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-test-case}@anchor{fe}@anchor{gnat_rm/implementation_defined_pragmas id45}@anchor{ff}
  @section Pragma Test_Case
  
  
--- 8118,8124 ----
  type.
  
  @node Pragma Test_Case,Pragma Thread_Local_Storage,Pragma Task_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-test-case}@anchor{fa}@anchor{gnat_rm/implementation_defined_pragmas id45}@anchor{fb}
  @section Pragma Test_Case
  
  
*************** package Math_Functions is
*** 8317,8324 ****
     function Sqrt (Arg : Float) return Float;
     pragma Test_Case (Name     => "Test 1",
                       Mode     => Nominal,
!                      Requires => Arg < 10000,
!                      Ensures  => Sqrt'Result < 10);
     ...
  end Math_Functions;
  @end example
--- 8159,8166 ----
     function Sqrt (Arg : Float) return Float;
     pragma Test_Case (Name     => "Test 1",
                       Mode     => Nominal,
!                      Requires => Arg < 10000.0,
!                      Ensures  => Sqrt'Result < 10.0);
     ...
  end Math_Functions;
  @end example
*************** postcondition. Mode @code{Robustness} in
*** 8332,8338 ****
  postcondition of the subprogram should be ignored for this test case.
  
  @node Pragma Thread_Local_Storage,Pragma Time_Slice,Pragma Test_Case,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-thread-local-storage}@anchor{100}@anchor{gnat_rm/implementation_defined_pragmas id46}@anchor{101}
  @section Pragma Thread_Local_Storage
  
  
--- 8174,8180 ----
  postcondition of the subprogram should be ignored for this test case.
  
  @node Pragma Thread_Local_Storage,Pragma Time_Slice,Pragma Test_Case,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-thread-local-storage}@anchor{fc}@anchor{gnat_rm/implementation_defined_pragmas id46}@anchor{fd}
  @section Pragma Thread_Local_Storage
  
  
*************** If this pragma is used on a system where
*** 8370,8376 ****
  then an error message will be generated and the program will be rejected.
  
  @node Pragma Time_Slice,Pragma Title,Pragma Thread_Local_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-time-slice}@anchor{102}
  @section Pragma Time_Slice
  
  
--- 8212,8218 ----
  then an error message will be generated and the program will be rejected.
  
  @node Pragma Time_Slice,Pragma Title,Pragma Thread_Local_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-time-slice}@anchor{fe}
  @section Pragma Time_Slice
  
  
*************** It is ignored if it is used in a system
*** 8386,8392 ****
  or if it appears in other than the main program unit.
  
  @node Pragma Title,Pragma Type_Invariant,Pragma Time_Slice,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-title}@anchor{103}
  @section Pragma Title
  
  
--- 8228,8234 ----
  or if it appears in other than the main program unit.
  
  @node Pragma Title,Pragma Type_Invariant,Pragma Time_Slice,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-title}@anchor{ff}
  @section Pragma Title
  
  
*************** notation is used, and named and position
*** 8411,8417 ****
  following the normal rules for procedure calls in Ada.
  
  @node Pragma Type_Invariant,Pragma Type_Invariant_Class,Pragma Title,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant}@anchor{104}
  @section Pragma Type_Invariant
  
  
--- 8253,8259 ----
  following the normal rules for procedure calls in Ada.
  
  @node Pragma Type_Invariant,Pragma Type_Invariant_Class,Pragma Title,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant}@anchor{100}
  @section Pragma Type_Invariant
  
  
*************** controlled by the assertion identifier @
*** 8432,8438 ****
  rather than @code{Invariant}.
  
  @node Pragma Type_Invariant_Class,Pragma Unchecked_Union,Pragma Type_Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id47}@anchor{105}@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant-class}@anchor{106}
  @section Pragma Type_Invariant_Class
  
  
--- 8274,8280 ----
  rather than @code{Invariant}.
  
  @node Pragma Type_Invariant_Class,Pragma Unchecked_Union,Pragma Type_Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id47}@anchor{101}@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant-class}@anchor{102}
  @section Pragma Type_Invariant_Class
  
  
*************** policy that controls this pragma is @cod
*** 8459,8465 ****
  not @code{Type_Invariant_Class}.
  
  @node Pragma Unchecked_Union,Pragma Unevaluated_Use_Of_Old,Pragma Type_Invariant_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unchecked-union}@anchor{107}
  @section Pragma Unchecked_Union
  
  
--- 8301,8307 ----
  not @code{Type_Invariant_Class}.
  
  @node Pragma Unchecked_Union,Pragma Unevaluated_Use_Of_Old,Pragma Type_Invariant_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unchecked-union}@anchor{103}
  @section Pragma Unchecked_Union
  
  
*************** version in all language modes (Ada 83, A
*** 8479,8485 ****
  details, consult the Ada 2012 Reference Manual, section B.3.3.
  
  @node Pragma Unevaluated_Use_Of_Old,Pragma Unimplemented_Unit,Pragma Unchecked_Union,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unevaluated-use-of-old}@anchor{108}
  @section Pragma Unevaluated_Use_Of_Old
  
  
--- 8321,8327 ----
  details, consult the Ada 2012 Reference Manual, section B.3.3.
  
  @node Pragma Unevaluated_Use_Of_Old,Pragma Unimplemented_Unit,Pragma Unchecked_Union,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unevaluated-use-of-old}@anchor{104}
  @section Pragma Unevaluated_Use_Of_Old
  
  
*************** uses up to the end of the corresponding
*** 8534,8540 ****
  sequence of package declarations.
  
  @node Pragma Unimplemented_Unit,Pragma Universal_Aliasing,Pragma Unevaluated_Use_Of_Old,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unimplemented-unit}@anchor{109}
  @section Pragma Unimplemented_Unit
  
  
--- 8376,8382 ----
  sequence of package declarations.
  
  @node Pragma Unimplemented_Unit,Pragma Universal_Aliasing,Pragma Unevaluated_Use_Of_Old,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unimplemented-unit}@anchor{105}
  @section Pragma Unimplemented_Unit
  
  
*************** The abort only happens if code is being
*** 8554,8560 ****
  specs of unimplemented packages in syntax or semantic checking mode.
  
  @node Pragma Universal_Aliasing,Pragma Universal_Data,Pragma Unimplemented_Unit,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-universal-aliasing}@anchor{10a}@anchor{gnat_rm/implementation_defined_pragmas id48}@anchor{10b}
  @section Pragma Universal_Aliasing
  
  
--- 8396,8402 ----
  specs of unimplemented packages in syntax or semantic checking mode.
  
  @node Pragma Universal_Aliasing,Pragma Universal_Data,Pragma Unimplemented_Unit,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-universal-aliasing}@anchor{106}@anchor{gnat_rm/implementation_defined_pragmas id48}@anchor{107}
  @section Pragma Universal_Aliasing
  
  
*************** situations in which it must be suppresse
*** 8573,8579 ****
  @code{Optimization and Strict Aliasing} in the @cite{GNAT User's Guide}.
  
  @node Pragma Universal_Data,Pragma Unmodified,Pragma Universal_Aliasing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-universal-data}@anchor{10c}@anchor{gnat_rm/implementation_defined_pragmas id49}@anchor{10d}
  @section Pragma Universal_Data
  
  
--- 8415,8421 ----
  @code{Optimization and Strict Aliasing} in the @cite{GNAT User's Guide}.
  
  @node Pragma Universal_Data,Pragma Unmodified,Pragma Universal_Aliasing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-universal-data}@anchor{108}@anchor{gnat_rm/implementation_defined_pragmas id49}@anchor{109}
  @section Pragma Universal_Data
  
  
*************** of this pragma is also available by appl
*** 8597,8603 ****
  compilations of units where universal addressing of the data is desired.
  
  @node Pragma Unmodified,Pragma Unreferenced,Pragma Universal_Data,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id50}@anchor{10e}@anchor{gnat_rm/implementation_defined_pragmas pragma-unmodified}@anchor{10f}
  @section Pragma Unmodified
  
  
--- 8439,8445 ----
  compilations of units where universal addressing of the data is desired.
  
  @node Pragma Unmodified,Pragma Unreferenced,Pragma Universal_Data,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id50}@anchor{10a}@anchor{gnat_rm/implementation_defined_pragmas pragma-unmodified}@anchor{10b}
  @section Pragma Unmodified
  
  
*************** Thus it is never necessary to use @code{
*** 8631,8637 ****
  variables, though it is harmless to do so.
  
  @node Pragma Unreferenced,Pragma Unreferenced_Objects,Pragma Unmodified,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced}@anchor{110}@anchor{gnat_rm/implementation_defined_pragmas id51}@anchor{111}
  @section Pragma Unreferenced
  
  
--- 8473,8479 ----
  variables, though it is harmless to do so.
  
  @node Pragma Unreferenced,Pragma Unreferenced_Objects,Pragma Unmodified,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced}@anchor{10c}@anchor{gnat_rm/implementation_defined_pragmas id51}@anchor{10d}
  @section Pragma Unreferenced
  
  
*************** Note that if a warning is desired for al
*** 8675,8681 ****
  regardless of whether they occur in the same unit as the subprogram
  declaration, then this pragma should not be used (calls from another
  unit would not be flagged); pragma Obsolescent can be used instead
! for this purpose, see @ref{af,,Pragma Obsolescent}.
  
  The second form of pragma @code{Unreferenced} is used within a context
  clause. In this case the arguments must be unit names of units previously
--- 8517,8523 ----
  regardless of whether they occur in the same unit as the subprogram
  declaration, then this pragma should not be used (calls from another
  unit would not be flagged); pragma Obsolescent can be used instead
! for this purpose, see @ref{ac,,Pragma Obsolescent}.
  
  The second form of pragma @code{Unreferenced} is used within a context
  clause. In this case the arguments must be unit names of units previously
*************** Thus it is never necessary to use @code{
*** 8691,8697 ****
  variables, though it is harmless to do so.
  
  @node Pragma Unreferenced_Objects,Pragma Unreserve_All_Interrupts,Pragma Unreferenced,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced-objects}@anchor{112}@anchor{gnat_rm/implementation_defined_pragmas id52}@anchor{113}
  @section Pragma Unreferenced_Objects
  
  
--- 8533,8539 ----
  variables, though it is harmless to do so.
  
  @node Pragma Unreferenced_Objects,Pragma Unreserve_All_Interrupts,Pragma Unreferenced,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced-objects}@anchor{10e}@anchor{gnat_rm/implementation_defined_pragmas id52}@anchor{10f}
  @section Pragma Unreferenced_Objects
  
  
*************** compiler will automatically suppress unw
*** 8716,8722 ****
  not being referenced.
  
  @node Pragma Unreserve_All_Interrupts,Pragma Unsuppress,Pragma Unreferenced_Objects,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unreserve-all-interrupts}@anchor{114}
  @section Pragma Unreserve_All_Interrupts
  
  
--- 8558,8564 ----
  not being referenced.
  
  @node Pragma Unreserve_All_Interrupts,Pragma Unsuppress,Pragma Unreferenced_Objects,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unreserve-all-interrupts}@anchor{110}
  @section Pragma Unreserve_All_Interrupts
  
  
*************** handled, see pragma @code{Interrupt_Stat
*** 8752,8758 ****
  of the @code{Unreserve_All_Interrupts} pragma.
  
  @node Pragma Unsuppress,Pragma Use_VADS_Size,Pragma Unreserve_All_Interrupts,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unsuppress}@anchor{115}
  @section Pragma Unsuppress
  
  
--- 8594,8600 ----
  of the @code{Unreserve_All_Interrupts} pragma.
  
  @node Pragma Unsuppress,Pragma Use_VADS_Size,Pragma Unreserve_All_Interrupts,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unsuppress}@anchor{111}
  @section Pragma Unsuppress
  
  
*************** number of implementation-defined check n
*** 8788,8794 ****
  @code{Suppress} for full details.
  
  @node Pragma Use_VADS_Size,Pragma Unused,Pragma Unsuppress,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-use-vads-size}@anchor{116}
  @section Pragma Use_VADS_Size
  
  
--- 8630,8636 ----
  @code{Suppress} for full details.
  
  @node Pragma Use_VADS_Size,Pragma Unused,Pragma Unsuppress,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-use-vads-size}@anchor{112}
  @section Pragma Use_VADS_Size
  
  
*************** as implemented in the VADS compiler.  Se
*** 8812,8818 ****
  attribute for further details.
  
  @node Pragma Unused,Pragma Validity_Checks,Pragma Use_VADS_Size,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unused}@anchor{117}@anchor{gnat_rm/implementation_defined_pragmas id53}@anchor{118}
  @section Pragma Unused
  
  
--- 8654,8660 ----
  attribute for further details.
  
  @node Pragma Unused,Pragma Validity_Checks,Pragma Use_VADS_Size,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unused}@anchor{113}@anchor{gnat_rm/implementation_defined_pragmas id53}@anchor{114}
  @section Pragma Unused
  
  
*************** Thus it is never necessary to use @code{
*** 8846,8852 ****
  variables, though it is harmless to do so.
  
  @node Pragma Validity_Checks,Pragma Volatile,Pragma Unused,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-validity-checks}@anchor{119}
  @section Pragma Validity_Checks
  
  
--- 8688,8694 ----
  variables, though it is harmless to do so.
  
  @node Pragma Validity_Checks,Pragma Volatile,Pragma Unused,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-validity-checks}@anchor{115}
  @section Pragma Validity_Checks
  
  
*************** A := C;                       -- C will
*** 8902,8908 ****
  @end example
  
  @node Pragma Volatile,Pragma Volatile_Full_Access,Pragma Validity_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id54}@anchor{11a}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile}@anchor{11b}
  @section Pragma Volatile
  
  
--- 8744,8750 ----
  @end example
  
  @node Pragma Volatile,Pragma Volatile_Full_Access,Pragma Validity_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id54}@anchor{116}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile}@anchor{117}
  @section Pragma Volatile
  
  
*************** implementation of pragma Volatile is upw
*** 8920,8926 ****
  implementation in DEC Ada 83.
  
  @node Pragma Volatile_Full_Access,Pragma Volatile_Function,Pragma Volatile,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id55}@anchor{11c}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-full-access}@anchor{11d}
  @section Pragma Volatile_Full_Access
  
  
--- 8762,8768 ----
  implementation in DEC Ada 83.
  
  @node Pragma Volatile_Full_Access,Pragma Volatile_Function,Pragma Volatile,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id55}@anchor{118}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-full-access}@anchor{119}
  @section Pragma Volatile_Full_Access
  
  
*************** there is no guarantee that all the bits
*** 8945,8958 ****
  is not to the whole object; the compiler is allowed (and generally will)
  access only part of the object in this case.
  
- It is not permissible to specify @code{Atomic} and @code{Volatile_Full_Access} for
- the same type or object.
- 
- It is not permissible to specify @code{Volatile_Full_Access} for a composite
- (record or array) type or object that has an @code{Aliased} subcomponent.
- 
  @node Pragma Volatile_Function,Pragma Warning_As_Error,Pragma Volatile_Full_Access,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id56}@anchor{11e}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-function}@anchor{11f}
  @section Pragma Volatile_Function
  
  
--- 8787,8794 ----
  is not to the whole object; the compiler is allowed (and generally will)
  access only part of the object in this case.
  
  @node Pragma Volatile_Function,Pragma Warning_As_Error,Pragma Volatile_Full_Access,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id56}@anchor{11a}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-function}@anchor{11b}
  @section Pragma Volatile_Function
  
  
*************** For the semantics of this pragma, see th
*** 8966,8972 ****
  in the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Warning_As_Error,Pragma Warnings,Pragma Volatile_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-warning-as-error}@anchor{120}
  @section Pragma Warning_As_Error
  
  
--- 8802,8808 ----
  in the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Warning_As_Error,Pragma Warnings,Pragma Volatile_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-warning-as-error}@anchor{11c}
  @section Pragma Warning_As_Error
  
  
*************** you can use multiple pragma Warning_As_E
*** 9006,9012 ****
  
  The above use of patterns to match the message applies only to warning
  messages generated by the front end. This pragma can also be applied to
! warnings provided by the back end and mentioned in @ref{121,,Pragma Warnings}.
  By using a single full @emph{-Wxxx} switch in the pragma, such warnings
  can also be treated as errors.
  
--- 8842,8848 ----
  
  The above use of patterns to match the message applies only to warning
  messages generated by the front end. This pragma can also be applied to
! warnings provided by the back end and mentioned in @ref{11d,,Pragma Warnings}.
  By using a single full @emph{-Wxxx} switch in the pragma, such warnings
  can also be treated as errors.
  
*************** the tag is changed from "warning:" to "e
*** 9056,9062 ****
  "[warning-as-error]" is appended to the end of the message.
  
  @node Pragma Warnings,Pragma Weak_External,Pragma Warning_As_Error,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id57}@anchor{122}@anchor{gnat_rm/implementation_defined_pragmas pragma-warnings}@anchor{121}
  @section Pragma Warnings
  
  
--- 8892,8898 ----
  "[warning-as-error]" is appended to the end of the message.
  
  @node Pragma Warnings,Pragma Weak_External,Pragma Warning_As_Error,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id57}@anchor{11e}@anchor{gnat_rm/implementation_defined_pragmas pragma-warnings}@anchor{11d}
  @section Pragma Warnings
  
  
*************** DETAILS ::= On | Off, local_NAME
*** 9070,9076 ****
  DETAILS ::= static_string_EXPRESSION
  DETAILS ::= On | Off, static_string_EXPRESSION
  
! TOOL_NAME ::= GNAT | GNATProve
  
  REASON ::= Reason => STRING_LITERAL @{& STRING_LITERAL@}
  @end example
--- 8906,8912 ----
  DETAILS ::= static_string_EXPRESSION
  DETAILS ::= On | Off, static_string_EXPRESSION
  
! TOOL_NAME ::= GNAT | GNATprove
  
  REASON ::= Reason => STRING_LITERAL @{& STRING_LITERAL@}
  @end example
*************** selectively for each tool, and as a cons
*** 9212,9218 ****
  Warnings with switch @code{-gnatw.w}.
  
  @node Pragma Weak_External,Pragma Wide_Character_Encoding,Pragma Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-weak-external}@anchor{123}
  @section Pragma Weak_External
  
  
--- 9048,9054 ----
  Warnings with switch @code{-gnatw.w}.
  
  @node Pragma Weak_External,Pragma Wide_Character_Encoding,Pragma Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-weak-external}@anchor{11f}
  @section Pragma Weak_External
  
  
*************** end External_Module;
*** 9263,9269 ****
  @end example
  
  @node Pragma Wide_Character_Encoding,,Pragma Weak_External,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-wide-character-encoding}@anchor{124}
  @section Pragma Wide_Character_Encoding
  
  
--- 9099,9105 ----
  @end example
  
  @node Pragma Wide_Character_Encoding,,Pragma Weak_External,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-wide-character-encoding}@anchor{120}
  @section Pragma Wide_Character_Encoding
  
  
*************** encoding within that file, and does not
*** 9294,9300 ****
  or subunits.
  
  @node Implementation Defined Aspects,Implementation Defined Attributes,Implementation Defined Pragmas,Top
! @anchor{gnat_rm/implementation_defined_aspects implementation-defined-aspects}@anchor{125}@anchor{gnat_rm/implementation_defined_aspects doc}@anchor{126}@anchor{gnat_rm/implementation_defined_aspects id1}@anchor{127}
  @chapter Implementation Defined Aspects
  
  
--- 9130,9136 ----
  or subunits.
  
  @node Implementation Defined Aspects,Implementation Defined Attributes,Implementation Defined Pragmas,Top
! @anchor{gnat_rm/implementation_defined_aspects implementation-defined-aspects}@anchor{121}@anchor{gnat_rm/implementation_defined_aspects doc}@anchor{122}@anchor{gnat_rm/implementation_defined_aspects id1}@anchor{123}
  @chapter Implementation Defined Aspects
  
  
*************** or attribute definition clause.
*** 9389,9394 ****
--- 9225,9231 ----
  * Aspect Refined_Global:: 
  * Aspect Refined_Post:: 
  * Aspect Refined_State:: 
+ * Aspect Relaxed_Initialization:: 
  * Aspect Remote_Access_Type:: 
  * Aspect Secondary_Stack_Size:: 
  * Aspect Scalar_Storage_Order:: 
*************** or attribute definition clause.
*** 9413,9419 ****
  @end menu
  
  @node Aspect Abstract_State,Aspect Annotate,,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-abstract-state}@anchor{128}
  @section Aspect Abstract_State
  
  
--- 9250,9256 ----
  @end menu
  
  @node Aspect Abstract_State,Aspect Annotate,,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-abstract-state}@anchor{124}
  @section Aspect Abstract_State
  
  
*************** or attribute definition clause.
*** 9422,9428 ****
  This aspect is equivalent to @ref{1c,,pragma Abstract_State}.
  
  @node Aspect Annotate,Aspect Async_Readers,Aspect Abstract_State,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-annotate}@anchor{129}
  @section Aspect Annotate
  
  
--- 9259,9265 ----
  This aspect is equivalent to @ref{1c,,pragma Abstract_State}.
  
  @node Aspect Annotate,Aspect Async_Readers,Aspect Abstract_State,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-annotate}@anchor{125}
  @section Aspect Annotate
  
  
*************** This aspect is equivalent to @ref{1c,,pr
*** 9430,9436 ****
  
  There are three forms of this aspect (where ID is an identifier,
  and ARG is a general expression),
! corresponding to @ref{2a,,pragma Annotate}.
  
  
  @table @asis
--- 9267,9273 ----
  
  There are three forms of this aspect (where ID is an identifier,
  and ARG is a general expression),
! corresponding to @ref{26,,pragma Annotate}.
  
  
  @table @asis
*************** Equivalent to @code{pragma Annotate (ID,
*** 9449,9511 ****
  @end table
  
  @node Aspect Async_Readers,Aspect Async_Writers,Aspect Annotate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-async-readers}@anchor{12a}
  @section Aspect Async_Readers
  
  
  @geindex Async_Readers
  
! This boolean aspect is equivalent to @ref{31,,pragma Async_Readers}.
  
  @node Aspect Async_Writers,Aspect Constant_After_Elaboration,Aspect Async_Readers,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-async-writers}@anchor{12b}
  @section Aspect Async_Writers
  
  
  @geindex Async_Writers
  
! This boolean aspect is equivalent to @ref{34,,pragma Async_Writers}.
  
  @node Aspect Constant_After_Elaboration,Aspect Contract_Cases,Aspect Async_Writers,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-constant-after-elaboration}@anchor{12c}
  @section Aspect Constant_After_Elaboration
  
  
  @geindex Constant_After_Elaboration
  
! This aspect is equivalent to @ref{45,,pragma Constant_After_Elaboration}.
  
  @node Aspect Contract_Cases,Aspect Depends,Aspect Constant_After_Elaboration,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-contract-cases}@anchor{12d}
  @section Aspect Contract_Cases
  
  
  @geindex Contract_Cases
  
! This aspect is equivalent to @ref{47,,pragma Contract_Cases}, the sequence
  of clauses being enclosed in parentheses so that syntactically it is an
  aggregate.
  
  @node Aspect Depends,Aspect Default_Initial_Condition,Aspect Contract_Cases,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-depends}@anchor{12e}
  @section Aspect Depends
  
  
  @geindex Depends
  
! This aspect is equivalent to @ref{56,,pragma Depends}.
  
  @node Aspect Default_Initial_Condition,Aspect Dimension,Aspect Depends,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-default-initial-condition}@anchor{12f}
  @section Aspect Default_Initial_Condition
  
  
  @geindex Default_Initial_Condition
  
! This aspect is equivalent to @ref{51,,pragma Default_Initial_Condition}.
  
  @node Aspect Dimension,Aspect Dimension_System,Aspect Default_Initial_Condition,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-dimension}@anchor{130}
  @section Aspect Dimension
  
  
--- 9286,9348 ----
  @end table
  
  @node Aspect Async_Readers,Aspect Async_Writers,Aspect Annotate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-async-readers}@anchor{126}
  @section Aspect Async_Readers
  
  
  @geindex Async_Readers
  
! This boolean aspect is equivalent to @ref{2d,,pragma Async_Readers}.
  
  @node Aspect Async_Writers,Aspect Constant_After_Elaboration,Aspect Async_Readers,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-async-writers}@anchor{127}
  @section Aspect Async_Writers
  
  
  @geindex Async_Writers
  
! This boolean aspect is equivalent to @ref{30,,pragma Async_Writers}.
  
  @node Aspect Constant_After_Elaboration,Aspect Contract_Cases,Aspect Async_Writers,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-constant-after-elaboration}@anchor{128}
  @section Aspect Constant_After_Elaboration
  
  
  @geindex Constant_After_Elaboration
  
! This aspect is equivalent to @ref{42,,pragma Constant_After_Elaboration}.
  
  @node Aspect Contract_Cases,Aspect Depends,Aspect Constant_After_Elaboration,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-contract-cases}@anchor{129}
  @section Aspect Contract_Cases
  
  
  @geindex Contract_Cases
  
! This aspect is equivalent to @ref{44,,pragma Contract_Cases}, the sequence
  of clauses being enclosed in parentheses so that syntactically it is an
  aggregate.
  
  @node Aspect Depends,Aspect Default_Initial_Condition,Aspect Contract_Cases,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-depends}@anchor{12a}
  @section Aspect Depends
  
  
  @geindex Depends
  
! This aspect is equivalent to @ref{53,,pragma Depends}.
  
  @node Aspect Default_Initial_Condition,Aspect Dimension,Aspect Depends,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-default-initial-condition}@anchor{12b}
  @section Aspect Default_Initial_Condition
  
  
  @geindex Default_Initial_Condition
  
! This aspect is equivalent to @ref{4e,,pragma Default_Initial_Condition}.
  
  @node Aspect Dimension,Aspect Dimension_System,Aspect Default_Initial_Condition,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-dimension}@anchor{12c}
  @section Aspect Dimension
  
  
*************** Note that when the dimensioned type is a
*** 9541,9547 ****
  dimension value must be an integer literal.
  
  @node Aspect Dimension_System,Aspect Disable_Controlled,Aspect Dimension,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-dimension-system}@anchor{131}
  @section Aspect Dimension_System
  
  
--- 9378,9384 ----
  dimension value must be an integer literal.
  
  @node Aspect Dimension_System,Aspect Disable_Controlled,Aspect Dimension,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-dimension-system}@anchor{12d}
  @section Aspect Dimension_System
  
  
*************** See section 'Performing Dimensionality A
*** 9601,9607 ****
  Guide for detailed examples of use of the dimension system.
  
  @node Aspect Disable_Controlled,Aspect Effective_Reads,Aspect Dimension_System,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-disable-controlled}@anchor{132}
  @section Aspect Disable_Controlled
  
  
--- 9438,9444 ----
  Guide for detailed examples of use of the dimension system.
  
  @node Aspect Disable_Controlled,Aspect Effective_Reads,Aspect Dimension_System,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-disable-controlled}@anchor{12e}
  @section Aspect Disable_Controlled
  
  
*************** where for example you might want a recor
*** 9614,9723 ****
  whether some run-time check is enabled or suppressed.
  
  @node Aspect Effective_Reads,Aspect Effective_Writes,Aspect Disable_Controlled,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-effective-reads}@anchor{133}
  @section Aspect Effective_Reads
  
  
  @geindex Effective_Reads
  
! This aspect is equivalent to @ref{5c,,pragma Effective_Reads}.
  
  @node Aspect Effective_Writes,Aspect Extensions_Visible,Aspect Effective_Reads,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-effective-writes}@anchor{134}
  @section Aspect Effective_Writes
  
  
  @geindex Effective_Writes
  
! This aspect is equivalent to @ref{5e,,pragma Effective_Writes}.
  
  @node Aspect Extensions_Visible,Aspect Favor_Top_Level,Aspect Effective_Writes,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-extensions-visible}@anchor{135}
  @section Aspect Extensions_Visible
  
  
  @geindex Extensions_Visible
  
! This aspect is equivalent to @ref{6a,,pragma Extensions_Visible}.
  
  @node Aspect Favor_Top_Level,Aspect Ghost,Aspect Extensions_Visible,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-favor-top-level}@anchor{136}
  @section Aspect Favor_Top_Level
  
  
  @geindex Favor_Top_Level
  
! This boolean aspect is equivalent to @ref{6f,,pragma Favor_Top_Level}.
  
  @node Aspect Ghost,Aspect Global,Aspect Favor_Top_Level,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-ghost}@anchor{137}
  @section Aspect Ghost
  
  
  @geindex Ghost
  
! This aspect is equivalent to @ref{72,,pragma Ghost}.
  
  @node Aspect Global,Aspect Initial_Condition,Aspect Ghost,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-global}@anchor{138}
  @section Aspect Global
  
  
  @geindex Global
  
! This aspect is equivalent to @ref{74,,pragma Global}.
  
  @node Aspect Initial_Condition,Aspect Initializes,Aspect Global,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initial-condition}@anchor{139}
  @section Aspect Initial_Condition
  
  
  @geindex Initial_Condition
  
! This aspect is equivalent to @ref{82,,pragma Initial_Condition}.
  
  @node Aspect Initializes,Aspect Inline_Always,Aspect Initial_Condition,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initializes}@anchor{13a}
  @section Aspect Initializes
  
  
  @geindex Initializes
  
! This aspect is equivalent to @ref{84,,pragma Initializes}.
  
  @node Aspect Inline_Always,Aspect Invariant,Aspect Initializes,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-inline-always}@anchor{13b}
  @section Aspect Inline_Always
  
  
  @geindex Inline_Always
  
! This boolean aspect is equivalent to @ref{87,,pragma Inline_Always}.
  
  @node Aspect Invariant,Aspect Invariant'Class,Aspect Inline_Always,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant}@anchor{13c}
  @section Aspect Invariant
  
  
  @geindex Invariant
  
! This aspect is equivalent to @ref{8e,,pragma Invariant}. It is a
  synonym for the language defined aspect @code{Type_Invariant} except
  that it is separately controllable using pragma @code{Assertion_Policy}.
  
  @node Aspect Invariant'Class,Aspect Iterable,Aspect Invariant,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant-class}@anchor{13d}
  @section Aspect Invariant'Class
  
  
  @geindex Invariant'Class
  
! This aspect is equivalent to @ref{106,,pragma Type_Invariant_Class}. It is a
  synonym for the language defined aspect @code{Type_Invariant'Class} except
  that it is separately controllable using pragma @code{Assertion_Policy}.
  
  @node Aspect Iterable,Aspect Linker_Section,Aspect Invariant'Class,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-iterable}@anchor{13e}
  @section Aspect Iterable
  
  
--- 9451,9560 ----
  whether some run-time check is enabled or suppressed.
  
  @node Aspect Effective_Reads,Aspect Effective_Writes,Aspect Disable_Controlled,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-effective-reads}@anchor{12f}
  @section Aspect Effective_Reads
  
  
  @geindex Effective_Reads
  
! This aspect is equivalent to @ref{59,,pragma Effective_Reads}.
  
  @node Aspect Effective_Writes,Aspect Extensions_Visible,Aspect Effective_Reads,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-effective-writes}@anchor{130}
  @section Aspect Effective_Writes
  
  
  @geindex Effective_Writes
  
! This aspect is equivalent to @ref{5b,,pragma Effective_Writes}.
  
  @node Aspect Extensions_Visible,Aspect Favor_Top_Level,Aspect Effective_Writes,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-extensions-visible}@anchor{131}
  @section Aspect Extensions_Visible
  
  
  @geindex Extensions_Visible
  
! This aspect is equivalent to @ref{67,,pragma Extensions_Visible}.
  
  @node Aspect Favor_Top_Level,Aspect Ghost,Aspect Extensions_Visible,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-favor-top-level}@anchor{132}
  @section Aspect Favor_Top_Level
  
  
  @geindex Favor_Top_Level
  
! This boolean aspect is equivalent to @ref{6c,,pragma Favor_Top_Level}.
  
  @node Aspect Ghost,Aspect Global,Aspect Favor_Top_Level,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-ghost}@anchor{133}
  @section Aspect Ghost
  
  
  @geindex Ghost
  
! This aspect is equivalent to @ref{6f,,pragma Ghost}.
  
  @node Aspect Global,Aspect Initial_Condition,Aspect Ghost,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-global}@anchor{134}
  @section Aspect Global
  
  
  @geindex Global
  
! This aspect is equivalent to @ref{71,,pragma Global}.
  
  @node Aspect Initial_Condition,Aspect Initializes,Aspect Global,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initial-condition}@anchor{135}
  @section Aspect Initial_Condition
  
  
  @geindex Initial_Condition
  
! This aspect is equivalent to @ref{7f,,pragma Initial_Condition}.
  
  @node Aspect Initializes,Aspect Inline_Always,Aspect Initial_Condition,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initializes}@anchor{136}
  @section Aspect Initializes
  
  
  @geindex Initializes
  
! This aspect is equivalent to @ref{81,,pragma Initializes}.
  
  @node Aspect Inline_Always,Aspect Invariant,Aspect Initializes,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-inline-always}@anchor{137}
  @section Aspect Inline_Always
  
  
  @geindex Inline_Always
  
! This boolean aspect is equivalent to @ref{84,,pragma Inline_Always}.
  
  @node Aspect Invariant,Aspect Invariant'Class,Aspect Inline_Always,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant}@anchor{138}
  @section Aspect Invariant
  
  
  @geindex Invariant
  
! This aspect is equivalent to @ref{8b,,pragma Invariant}. It is a
  synonym for the language defined aspect @code{Type_Invariant} except
  that it is separately controllable using pragma @code{Assertion_Policy}.
  
  @node Aspect Invariant'Class,Aspect Iterable,Aspect Invariant,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant-class}@anchor{139}
  @section Aspect Invariant'Class
  
  
  @geindex Invariant'Class
  
! This aspect is equivalent to @ref{102,,pragma Type_Invariant_Class}. It is a
  synonym for the language defined aspect @code{Type_Invariant'Class} except
  that it is separately controllable using pragma @code{Assertion_Policy}.
  
  @node Aspect Iterable,Aspect Linker_Section,Aspect Invariant'Class,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-iterable}@anchor{13a}
  @section Aspect Iterable
  
  
*************** function Get_Element (Cont : Container;
*** 9797,9913 ****
  This aspect is used in the GNAT-defined formal container packages.
  
  @node Aspect Linker_Section,Aspect Lock_Free,Aspect Iterable,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-linker-section}@anchor{13f}
  @section Aspect Linker_Section
  
  
  @geindex Linker_Section
  
! This aspect is equivalent to @ref{96,,pragma Linker_Section}.
  
  @node Aspect Lock_Free,Aspect Max_Queue_Length,Aspect Linker_Section,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-lock-free}@anchor{140}
  @section Aspect Lock_Free
  
  
  @geindex Lock_Free
  
! This boolean aspect is equivalent to @ref{98,,pragma Lock_Free}.
  
  @node Aspect Max_Queue_Length,Aspect No_Caching,Aspect Lock_Free,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-max-queue-length}@anchor{141}
  @section Aspect Max_Queue_Length
  
  
  @geindex Max_Queue_Length
  
! This aspect is equivalent to @ref{a0,,pragma Max_Queue_Length}.
  
  @node Aspect No_Caching,Aspect No_Elaboration_Code_All,Aspect Max_Queue_Length,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-caching}@anchor{142}
  @section Aspect No_Caching
  
  
  @geindex No_Caching
  
! This boolean aspect is equivalent to @ref{a2,,pragma No_Caching}.
  
  @node Aspect No_Elaboration_Code_All,Aspect No_Inline,Aspect No_Caching,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all}@anchor{143}
  @section Aspect No_Elaboration_Code_All
  
  
  @geindex No_Elaboration_Code_All
  
! This aspect is equivalent to @ref{a6,,pragma No_Elaboration_Code_All}
  for a program unit.
  
  @node Aspect No_Inline,Aspect No_Tagged_Streams,Aspect No_Elaboration_Code_All,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-inline}@anchor{144}
  @section Aspect No_Inline
  
  
  @geindex No_Inline
  
! This boolean aspect is equivalent to @ref{a9,,pragma No_Inline}.
  
  @node Aspect No_Tagged_Streams,Aspect Object_Size,Aspect No_Inline,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-tagged-streams}@anchor{145}
  @section Aspect No_Tagged_Streams
  
  
  @geindex No_Tagged_Streams
  
! This aspect is equivalent to @ref{ac,,pragma No_Tagged_Streams} with an
  argument specifying a root tagged type (thus this aspect can only be
  applied to such a type).
  
  @node Aspect Object_Size,Aspect Obsolescent,Aspect No_Tagged_Streams,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{146}
  @section Aspect Object_Size
  
  
  @geindex Object_Size
  
! This aspect is equivalent to @ref{147,,attribute Object_Size}.
  
  @node Aspect Obsolescent,Aspect Part_Of,Aspect Object_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{148}
  @section Aspect Obsolescent
  
  
  @geindex Obsolsecent
  
! This aspect is equivalent to @ref{af,,pragma Obsolescent}. Note that the
  evaluation of this aspect happens at the point of occurrence, it is not
  delayed until the freeze point.
  
  @node Aspect Part_Of,Aspect Persistent_BSS,Aspect Obsolescent,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-part-of}@anchor{149}
  @section Aspect Part_Of
  
  
  @geindex Part_Of
  
! This aspect is equivalent to @ref{b7,,pragma Part_Of}.
  
  @node Aspect Persistent_BSS,Aspect Predicate,Aspect Part_Of,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-persistent-bss}@anchor{14a}
  @section Aspect Persistent_BSS
  
  
  @geindex Persistent_BSS
  
! This boolean aspect is equivalent to @ref{ba,,pragma Persistent_BSS}.
  
  @node Aspect Predicate,Aspect Pure_Function,Aspect Persistent_BSS,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{14b}
  @section Aspect Predicate
  
  
  @geindex Predicate
  
! This aspect is equivalent to @ref{c2,,pragma Predicate}. It is thus
  similar to the language defined aspects @code{Dynamic_Predicate}
  and @code{Static_Predicate} except that whether the resulting
  predicate is static or dynamic is controlled by the form of the
--- 9634,9750 ----
  This aspect is used in the GNAT-defined formal container packages.
  
  @node Aspect Linker_Section,Aspect Lock_Free,Aspect Iterable,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-linker-section}@anchor{13b}
  @section Aspect Linker_Section
  
  
  @geindex Linker_Section
  
! This aspect is equivalent to @ref{93,,pragma Linker_Section}.
  
  @node Aspect Lock_Free,Aspect Max_Queue_Length,Aspect Linker_Section,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-lock-free}@anchor{13c}
  @section Aspect Lock_Free
  
  
  @geindex Lock_Free
  
! This boolean aspect is equivalent to @ref{95,,pragma Lock_Free}.
  
  @node Aspect Max_Queue_Length,Aspect No_Caching,Aspect Lock_Free,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-max-queue-length}@anchor{13d}
  @section Aspect Max_Queue_Length
  
  
  @geindex Max_Queue_Length
  
! This aspect is equivalent to @ref{9d,,pragma Max_Queue_Length}.
  
  @node Aspect No_Caching,Aspect No_Elaboration_Code_All,Aspect Max_Queue_Length,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-caching}@anchor{13e}
  @section Aspect No_Caching
  
  
  @geindex No_Caching
  
! This boolean aspect is equivalent to @ref{9f,,pragma No_Caching}.
  
  @node Aspect No_Elaboration_Code_All,Aspect No_Inline,Aspect No_Caching,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all}@anchor{13f}
  @section Aspect No_Elaboration_Code_All
  
  
  @geindex No_Elaboration_Code_All
  
! This aspect is equivalent to @ref{a3,,pragma No_Elaboration_Code_All}
  for a program unit.
  
  @node Aspect No_Inline,Aspect No_Tagged_Streams,Aspect No_Elaboration_Code_All,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-inline}@anchor{140}
  @section Aspect No_Inline
  
  
  @geindex No_Inline
  
! This boolean aspect is equivalent to @ref{a6,,pragma No_Inline}.
  
  @node Aspect No_Tagged_Streams,Aspect Object_Size,Aspect No_Inline,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-tagged-streams}@anchor{141}
  @section Aspect No_Tagged_Streams
  
  
  @geindex No_Tagged_Streams
  
! This aspect is equivalent to @ref{a9,,pragma No_Tagged_Streams} with an
  argument specifying a root tagged type (thus this aspect can only be
  applied to such a type).
  
  @node Aspect Object_Size,Aspect Obsolescent,Aspect No_Tagged_Streams,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{142}
  @section Aspect Object_Size
  
  
  @geindex Object_Size
  
! This aspect is equivalent to @ref{143,,attribute Object_Size}.
  
  @node Aspect Obsolescent,Aspect Part_Of,Aspect Object_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{144}
  @section Aspect Obsolescent
  
  
  @geindex Obsolsecent
  
! This aspect is equivalent to @ref{ac,,pragma Obsolescent}. Note that the
  evaluation of this aspect happens at the point of occurrence, it is not
  delayed until the freeze point.
  
  @node Aspect Part_Of,Aspect Persistent_BSS,Aspect Obsolescent,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-part-of}@anchor{145}
  @section Aspect Part_Of
  
  
  @geindex Part_Of
  
! This aspect is equivalent to @ref{b4,,pragma Part_Of}.
  
  @node Aspect Persistent_BSS,Aspect Predicate,Aspect Part_Of,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-persistent-bss}@anchor{146}
  @section Aspect Persistent_BSS
  
  
  @geindex Persistent_BSS
  
! This boolean aspect is equivalent to @ref{b7,,pragma Persistent_BSS}.
  
  @node Aspect Predicate,Aspect Pure_Function,Aspect Persistent_BSS,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{147}
  @section Aspect Predicate
  
  
  @geindex Predicate
  
! This aspect is equivalent to @ref{be,,pragma Predicate}. It is thus
  similar to the language defined aspects @code{Dynamic_Predicate}
  and @code{Static_Predicate} except that whether the resulting
  predicate is static or dynamic is controlled by the form of the
*************** expression. It is also separately contro
*** 9915,10153 ****
  @code{Assertion_Policy}.
  
  @node Aspect Pure_Function,Aspect Refined_Depends,Aspect Predicate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-pure-function}@anchor{14c}
  @section Aspect Pure_Function
  
  
  @geindex Pure_Function
  
! This boolean aspect is equivalent to @ref{ce,,pragma Pure_Function}.
  
  @node Aspect Refined_Depends,Aspect Refined_Global,Aspect Pure_Function,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-depends}@anchor{14d}
  @section Aspect Refined_Depends
  
  
  @geindex Refined_Depends
  
! This aspect is equivalent to @ref{d2,,pragma Refined_Depends}.
  
  @node Aspect Refined_Global,Aspect Refined_Post,Aspect Refined_Depends,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-global}@anchor{14e}
  @section Aspect Refined_Global
  
  
  @geindex Refined_Global
  
! This aspect is equivalent to @ref{d4,,pragma Refined_Global}.
  
  @node Aspect Refined_Post,Aspect Refined_State,Aspect Refined_Global,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-post}@anchor{14f}
  @section Aspect Refined_Post
  
  
  @geindex Refined_Post
  
! This aspect is equivalent to @ref{d6,,pragma Refined_Post}.
  
! @node Aspect Refined_State,Aspect Remote_Access_Type,Aspect Refined_Post,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{150}
  @section Aspect Refined_State
  
  
  @geindex Refined_State
  
! This aspect is equivalent to @ref{d8,,pragma Refined_State}.
  
! @node Aspect Remote_Access_Type,Aspect Secondary_Stack_Size,Aspect Refined_State,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{151}
  @section Aspect Remote_Access_Type
  
  
  @geindex Remote_Access_Type
  
! This aspect is equivalent to @ref{dc,,pragma Remote_Access_Type}.
  
  @node Aspect Secondary_Stack_Size,Aspect Scalar_Storage_Order,Aspect Remote_Access_Type,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{152}
  @section Aspect Secondary_Stack_Size
  
  
  @geindex Secondary_Stack_Size
  
! This aspect is equivalent to @ref{e1,,pragma Secondary_Stack_Size}.
  
  @node Aspect Scalar_Storage_Order,Aspect Shared,Aspect Secondary_Stack_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{153}
  @section Aspect Scalar_Storage_Order
  
  
  @geindex Scalar_Storage_Order
  
! This aspect is equivalent to a @ref{154,,attribute Scalar_Storage_Order}.
  
  @node Aspect Shared,Aspect Simple_Storage_Pool,Aspect Scalar_Storage_Order,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-shared}@anchor{155}
  @section Aspect Shared
  
  
  @geindex Shared
  
! This boolean aspect is equivalent to @ref{e4,,pragma Shared}
  and is thus a synonym for aspect @code{Atomic}.
  
  @node Aspect Simple_Storage_Pool,Aspect Simple_Storage_Pool_Type,Aspect Shared,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool}@anchor{156}
  @section Aspect Simple_Storage_Pool
  
  
  @geindex Simple_Storage_Pool
  
! This aspect is equivalent to @ref{e9,,attribute Simple_Storage_Pool}.
  
  @node Aspect Simple_Storage_Pool_Type,Aspect SPARK_Mode,Aspect Simple_Storage_Pool,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type}@anchor{157}
  @section Aspect Simple_Storage_Pool_Type
  
  
  @geindex Simple_Storage_Pool_Type
  
! This boolean aspect is equivalent to @ref{e7,,pragma Simple_Storage_Pool_Type}.
  
  @node Aspect SPARK_Mode,Aspect Suppress_Debug_Info,Aspect Simple_Storage_Pool_Type,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-spark-mode}@anchor{158}
  @section Aspect SPARK_Mode
  
  
  @geindex SPARK_Mode
  
! This aspect is equivalent to @ref{ef,,pragma SPARK_Mode} and
  may be specified for either or both of the specification and body
  of a subprogram or package.
  
  @node Aspect Suppress_Debug_Info,Aspect Suppress_Initialization,Aspect SPARK_Mode,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-suppress-debug-info}@anchor{159}
  @section Aspect Suppress_Debug_Info
  
  
  @geindex Suppress_Debug_Info
  
! This boolean aspect is equivalent to @ref{f7,,pragma Suppress_Debug_Info}.
  
  @node Aspect Suppress_Initialization,Aspect Test_Case,Aspect Suppress_Debug_Info,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-suppress-initialization}@anchor{15a}
  @section Aspect Suppress_Initialization
  
  
  @geindex Suppress_Initialization
  
! This boolean aspect is equivalent to @ref{fb,,pragma Suppress_Initialization}.
  
  @node Aspect Test_Case,Aspect Thread_Local_Storage,Aspect Suppress_Initialization,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-test-case}@anchor{15b}
  @section Aspect Test_Case
  
  
  @geindex Test_Case
  
! This aspect is equivalent to @ref{fe,,pragma Test_Case}.
  
  @node Aspect Thread_Local_Storage,Aspect Universal_Aliasing,Aspect Test_Case,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-thread-local-storage}@anchor{15c}
  @section Aspect Thread_Local_Storage
  
  
  @geindex Thread_Local_Storage
  
! This boolean aspect is equivalent to @ref{100,,pragma Thread_Local_Storage}.
  
  @node Aspect Universal_Aliasing,Aspect Universal_Data,Aspect Thread_Local_Storage,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{15d}
  @section Aspect Universal_Aliasing
  
  
  @geindex Universal_Aliasing
  
! This boolean aspect is equivalent to @ref{10a,,pragma Universal_Aliasing}.
  
  @node Aspect Universal_Data,Aspect Unmodified,Aspect Universal_Aliasing,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-universal-data}@anchor{15e}
  @section Aspect Universal_Data
  
  
  @geindex Universal_Data
  
! This aspect is equivalent to @ref{10c,,pragma Universal_Data}.
  
  @node Aspect Unmodified,Aspect Unreferenced,Aspect Universal_Data,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{15f}
  @section Aspect Unmodified
  
  
  @geindex Unmodified
  
! This boolean aspect is equivalent to @ref{10f,,pragma Unmodified}.
  
  @node Aspect Unreferenced,Aspect Unreferenced_Objects,Aspect Unmodified,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced}@anchor{160}
  @section Aspect Unreferenced
  
  
  @geindex Unreferenced
  
! This boolean aspect is equivalent to @ref{110,,pragma Unreferenced}. Note that
! in the case of formal parameters, it is not permitted to have aspects for
! a formal parameter, so in this case the pragma form must be used.
  
  @node Aspect Unreferenced_Objects,Aspect Value_Size,Aspect Unreferenced,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{161}
  @section Aspect Unreferenced_Objects
  
  
  @geindex Unreferenced_Objects
  
! This boolean aspect is equivalent to @ref{112,,pragma Unreferenced_Objects}.
  
  @node Aspect Value_Size,Aspect Volatile_Full_Access,Aspect Unreferenced_Objects,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-value-size}@anchor{162}
  @section Aspect Value_Size
  
  
  @geindex Value_Size
  
! This aspect is equivalent to @ref{163,,attribute Value_Size}.
  
  @node Aspect Volatile_Full_Access,Aspect Volatile_Function,Aspect Value_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-volatile-full-access}@anchor{164}
  @section Aspect Volatile_Full_Access
  
  
  @geindex Volatile_Full_Access
  
! This boolean aspect is equivalent to @ref{11d,,pragma Volatile_Full_Access}.
  
  @node Aspect Volatile_Function,Aspect Warnings,Aspect Volatile_Full_Access,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-volatile-function}@anchor{165}
  @section Aspect Volatile_Function
  
  
  @geindex Volatile_Function
  
! This boolean aspect is equivalent to @ref{11f,,pragma Volatile_Function}.
  
  @node Aspect Warnings,,Aspect Volatile_Function,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-warnings}@anchor{166}
  @section Aspect Warnings
  
  
  @geindex Warnings
  
! This aspect is equivalent to the two argument form of @ref{121,,pragma Warnings},
  where the first argument is @code{ON} or @code{OFF} and the second argument
  is the entity.
  
  @node Implementation Defined Attributes,Standard and Implementation Defined Restrictions,Implementation Defined Aspects,Top
! @anchor{gnat_rm/implementation_defined_attributes doc}@anchor{167}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{168}
  @chapter Implementation Defined Attributes
  
  
--- 9752,10002 ----
  @code{Assertion_Policy}.
  
  @node Aspect Pure_Function,Aspect Refined_Depends,Aspect Predicate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-pure-function}@anchor{148}
  @section Aspect Pure_Function
  
  
  @geindex Pure_Function
  
! This boolean aspect is equivalent to @ref{ca,,pragma Pure_Function}.
  
  @node Aspect Refined_Depends,Aspect Refined_Global,Aspect Pure_Function,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-depends}@anchor{149}
  @section Aspect Refined_Depends
  
  
  @geindex Refined_Depends
  
! This aspect is equivalent to @ref{ce,,pragma Refined_Depends}.
  
  @node Aspect Refined_Global,Aspect Refined_Post,Aspect Refined_Depends,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-global}@anchor{14a}
  @section Aspect Refined_Global
  
  
  @geindex Refined_Global
  
! This aspect is equivalent to @ref{d0,,pragma Refined_Global}.
  
  @node Aspect Refined_Post,Aspect Refined_State,Aspect Refined_Global,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-post}@anchor{14b}
  @section Aspect Refined_Post
  
  
  @geindex Refined_Post
  
! This aspect is equivalent to @ref{d2,,pragma Refined_Post}.
  
! @node Aspect Refined_State,Aspect Relaxed_Initialization,Aspect Refined_Post,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{14c}
  @section Aspect Refined_State
  
  
  @geindex Refined_State
  
! This aspect is equivalent to @ref{d4,,pragma Refined_State}.
  
! @node Aspect Relaxed_Initialization,Aspect Remote_Access_Type,Aspect Refined_State,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-relaxed-initialization}@anchor{14d}
! @section Aspect Relaxed_Initialization
! 
! 
! @geindex Refined_Initialization
! 
! For the syntax and semantics of this aspect, see the SPARK 2014 Reference
! Manual, section 6.10.
! 
! @node Aspect Remote_Access_Type,Aspect Secondary_Stack_Size,Aspect Relaxed_Initialization,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{14e}
  @section Aspect Remote_Access_Type
  
  
  @geindex Remote_Access_Type
  
! This aspect is equivalent to @ref{d8,,pragma Remote_Access_Type}.
  
  @node Aspect Secondary_Stack_Size,Aspect Scalar_Storage_Order,Aspect Remote_Access_Type,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{14f}
  @section Aspect Secondary_Stack_Size
  
  
  @geindex Secondary_Stack_Size
  
! This aspect is equivalent to @ref{dd,,pragma Secondary_Stack_Size}.
  
  @node Aspect Scalar_Storage_Order,Aspect Shared,Aspect Secondary_Stack_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{150}
  @section Aspect Scalar_Storage_Order
  
  
  @geindex Scalar_Storage_Order
  
! This aspect is equivalent to a @ref{151,,attribute Scalar_Storage_Order}.
  
  @node Aspect Shared,Aspect Simple_Storage_Pool,Aspect Scalar_Storage_Order,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-shared}@anchor{152}
  @section Aspect Shared
  
  
  @geindex Shared
  
! This boolean aspect is equivalent to @ref{e0,,pragma Shared}
  and is thus a synonym for aspect @code{Atomic}.
  
  @node Aspect Simple_Storage_Pool,Aspect Simple_Storage_Pool_Type,Aspect Shared,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool}@anchor{153}
  @section Aspect Simple_Storage_Pool
  
  
  @geindex Simple_Storage_Pool
  
! This aspect is equivalent to @ref{e5,,attribute Simple_Storage_Pool}.
  
  @node Aspect Simple_Storage_Pool_Type,Aspect SPARK_Mode,Aspect Simple_Storage_Pool,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type}@anchor{154}
  @section Aspect Simple_Storage_Pool_Type
  
  
  @geindex Simple_Storage_Pool_Type
  
! This boolean aspect is equivalent to @ref{e3,,pragma Simple_Storage_Pool_Type}.
  
  @node Aspect SPARK_Mode,Aspect Suppress_Debug_Info,Aspect Simple_Storage_Pool_Type,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-spark-mode}@anchor{155}
  @section Aspect SPARK_Mode
  
  
  @geindex SPARK_Mode
  
! This aspect is equivalent to @ref{eb,,pragma SPARK_Mode} and
  may be specified for either or both of the specification and body
  of a subprogram or package.
  
  @node Aspect Suppress_Debug_Info,Aspect Suppress_Initialization,Aspect SPARK_Mode,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-suppress-debug-info}@anchor{156}
  @section Aspect Suppress_Debug_Info
  
  
  @geindex Suppress_Debug_Info
  
! This boolean aspect is equivalent to @ref{f3,,pragma Suppress_Debug_Info}.
  
  @node Aspect Suppress_Initialization,Aspect Test_Case,Aspect Suppress_Debug_Info,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-suppress-initialization}@anchor{157}
  @section Aspect Suppress_Initialization
  
  
  @geindex Suppress_Initialization
  
! This boolean aspect is equivalent to @ref{f7,,pragma Suppress_Initialization}.
  
  @node Aspect Test_Case,Aspect Thread_Local_Storage,Aspect Suppress_Initialization,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-test-case}@anchor{158}
  @section Aspect Test_Case
  
  
  @geindex Test_Case
  
! This aspect is equivalent to @ref{fa,,pragma Test_Case}.
  
  @node Aspect Thread_Local_Storage,Aspect Universal_Aliasing,Aspect Test_Case,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-thread-local-storage}@anchor{159}
  @section Aspect Thread_Local_Storage
  
  
  @geindex Thread_Local_Storage
  
! This boolean aspect is equivalent to @ref{fc,,pragma Thread_Local_Storage}.
  
  @node Aspect Universal_Aliasing,Aspect Universal_Data,Aspect Thread_Local_Storage,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{15a}
  @section Aspect Universal_Aliasing
  
  
  @geindex Universal_Aliasing
  
! This boolean aspect is equivalent to @ref{106,,pragma Universal_Aliasing}.
  
  @node Aspect Universal_Data,Aspect Unmodified,Aspect Universal_Aliasing,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-universal-data}@anchor{15b}
  @section Aspect Universal_Data
  
  
  @geindex Universal_Data
  
! This aspect is equivalent to @ref{108,,pragma Universal_Data}.
  
  @node Aspect Unmodified,Aspect Unreferenced,Aspect Universal_Data,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{15c}
  @section Aspect Unmodified
  
  
  @geindex Unmodified
  
! This boolean aspect is equivalent to @ref{10b,,pragma Unmodified}.
  
  @node Aspect Unreferenced,Aspect Unreferenced_Objects,Aspect Unmodified,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced}@anchor{15d}
  @section Aspect Unreferenced
  
  
  @geindex Unreferenced
  
! This boolean aspect is equivalent to @ref{10c,,pragma Unreferenced}.
! 
! When using the @code{-gnat2020} switch, this aspect is also supported on formal
! parameters, which is in particular the only form possible for expression
! functions.
  
  @node Aspect Unreferenced_Objects,Aspect Value_Size,Aspect Unreferenced,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{15e}
  @section Aspect Unreferenced_Objects
  
  
  @geindex Unreferenced_Objects
  
! This boolean aspect is equivalent to @ref{10e,,pragma Unreferenced_Objects}.
  
  @node Aspect Value_Size,Aspect Volatile_Full_Access,Aspect Unreferenced_Objects,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-value-size}@anchor{15f}
  @section Aspect Value_Size
  
  
  @geindex Value_Size
  
! This aspect is equivalent to @ref{160,,attribute Value_Size}.
  
  @node Aspect Volatile_Full_Access,Aspect Volatile_Function,Aspect Value_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-volatile-full-access}@anchor{161}
  @section Aspect Volatile_Full_Access
  
  
  @geindex Volatile_Full_Access
  
! This boolean aspect is equivalent to @ref{119,,pragma Volatile_Full_Access}.
  
  @node Aspect Volatile_Function,Aspect Warnings,Aspect Volatile_Full_Access,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-volatile-function}@anchor{162}
  @section Aspect Volatile_Function
  
  
  @geindex Volatile_Function
  
! This boolean aspect is equivalent to @ref{11b,,pragma Volatile_Function}.
  
  @node Aspect Warnings,,Aspect Volatile_Function,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-warnings}@anchor{163}
  @section Aspect Warnings
  
  
  @geindex Warnings
  
! This aspect is equivalent to the two argument form of @ref{11d,,pragma Warnings},
  where the first argument is @code{ON} or @code{OFF} and the second argument
  is the entity.
  
  @node Implementation Defined Attributes,Standard and Implementation Defined Restrictions,Implementation Defined Aspects,Top
! @anchor{gnat_rm/implementation_defined_attributes doc}@anchor{164}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{165}
  @chapter Implementation Defined Attributes
  
  
*************** consideration, you should minimize the u
*** 10200,10206 ****
--- 10049,10057 ----
  * Attribute From_Any:: 
  * Attribute Has_Access_Values:: 
  * Attribute Has_Discriminants:: 
+ * Attribute Has_Tagged_Values:: 
  * Attribute Img:: 
+ * Attribute Initialized:: 
  * Attribute Integer_Value:: 
  * Attribute Invalid_Value:: 
  * Attribute Iterable:: 
*************** consideration, you should minimize the u
*** 10211,10216 ****
--- 10062,10068 ----
  * Attribute Machine_Size:: 
  * Attribute Mantissa:: 
  * Attribute Maximum_Alignment:: 
+ * Attribute Max_Integer_Size:: 
  * Attribute Mechanism_Code:: 
  * Attribute Null_Parameter:: 
  * Attribute Object_Size:: 
*************** consideration, you should minimize the u
*** 10226,10231 ****
--- 10078,10085 ----
  * Attribute Scalar_Storage_Order:: 
  * Attribute Simple_Storage_Pool:: 
  * Attribute Small:: 
+ * Attribute Small_Denominator:: 
+ * Attribute Small_Numerator:: 
  * Attribute Storage_Unit:: 
  * Attribute Stub_Type:: 
  * Attribute System_Allocator_Alignment:: 
*************** consideration, you should minimize the u
*** 10248,10254 ****
  @end menu
  
  @node Attribute Abort_Signal,Attribute Address_Size,,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{169}
  @section Attribute Abort_Signal
  
  
--- 10102,10108 ----
  @end menu
  
  @node Attribute Abort_Signal,Attribute Address_Size,,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{166}
  @section Attribute Abort_Signal
  
  
*************** completely outside the normal semantics
*** 10262,10268 ****
  intercept the abort exception).
  
  @node Attribute Address_Size,Attribute Asm_Input,Attribute Abort_Signal,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-address-size}@anchor{16a}
  @section Attribute Address_Size
  
  
--- 10116,10122 ----
  intercept the abort exception).
  
  @node Attribute Address_Size,Attribute Asm_Input,Attribute Abort_Signal,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-address-size}@anchor{167}
  @section Attribute Address_Size
  
  
*************** reference to System.Address'Size is nons
*** 10278,10284 ****
  is a private type.
  
  @node Attribute Asm_Input,Attribute Asm_Output,Attribute Address_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-asm-input}@anchor{16b}
  @section Attribute Asm_Input
  
  
--- 10132,10138 ----
  is a private type.
  
  @node Attribute Asm_Input,Attribute Asm_Output,Attribute Address_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-asm-input}@anchor{168}
  @section Attribute Asm_Input
  
  
*************** to be a static expression, and is the co
*** 10292,10301 ****
  value to be used as the input argument.  The possible values for the
  constant are the same as those used in the RTL, and are dependent on
  the configuration file used to built the GCC back end.
! @ref{16c,,Machine Code Insertions}
  
  @node Attribute Asm_Output,Attribute Atomic_Always_Lock_Free,Attribute Asm_Input,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-asm-output}@anchor{16d}
  @section Attribute Asm_Output
  
  
--- 10146,10155 ----
  value to be used as the input argument.  The possible values for the
  constant are the same as those used in the RTL, and are dependent on
  the configuration file used to built the GCC back end.
! @ref{169,,Machine Code Insertions}
  
  @node Attribute Asm_Output,Attribute Atomic_Always_Lock_Free,Attribute Asm_Input,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-asm-output}@anchor{16a}
  @section Attribute Asm_Output
  
  
*************** result.  The possible values for constra
*** 10311,10320 ****
  the RTL, and are dependent on the configuration file used to build the
  GCC back end.  If there are no output operands, then this argument may
  either be omitted, or explicitly given as @code{No_Output_Operands}.
! @ref{16c,,Machine Code Insertions}
  
  @node Attribute Atomic_Always_Lock_Free,Attribute Bit,Attribute Asm_Output,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free}@anchor{16e}
  @section Attribute Atomic_Always_Lock_Free
  
  
--- 10165,10174 ----
  the RTL, and are dependent on the configuration file used to build the
  GCC back end.  If there are no output operands, then this argument may
  either be omitted, or explicitly given as @code{No_Output_Operands}.
! @ref{169,,Machine Code Insertions}
  
  @node Attribute Atomic_Always_Lock_Free,Attribute Bit,Attribute Asm_Output,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free}@anchor{16b}
  @section Attribute Atomic_Always_Lock_Free
  
  
*************** and False otherwise.  The result indicat
*** 10326,10332 ****
  supported by the target for the given type.
  
  @node Attribute Bit,Attribute Bit_Position,Attribute Atomic_Always_Lock_Free,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-bit}@anchor{16f}
  @section Attribute Bit
  
  
--- 10180,10186 ----
  supported by the target for the given type.
  
  @node Attribute Bit,Attribute Bit_Position,Attribute Atomic_Always_Lock_Free,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-bit}@anchor{16c}
  @section Attribute Bit
  
  
*************** supported by the target for the given ty
*** 10335,10342 ****
  @code{obj'Bit}, where @code{obj} is any object, yields the bit
  offset within the storage unit (byte) that contains the first bit of
  storage allocated for the object.  The value of this attribute is of the
! type @emph{universal_integer}, and is always a non-negative number not
! exceeding the value of @code{System.Storage_Unit}.
  
  For an object that is a variable or a constant allocated in a register,
  the value is zero.  (The use of this attribute does not force the
--- 10189,10196 ----
  @code{obj'Bit}, where @code{obj} is any object, yields the bit
  offset within the storage unit (byte) that contains the first bit of
  storage allocated for the object.  The value of this attribute is of the
! type @emph{universal_integer} and is always a nonnegative number smaller
! than @code{System.Storage_Unit}.
  
  For an object that is a variable or a constant allocated in a register,
  the value is zero.  (The use of this attribute does not force the
*************** This attribute is designed to be compati
*** 10357,10363 ****
  and implementation of the @code{Bit} attribute.
  
  @node Attribute Bit_Position,Attribute Code_Address,Attribute Bit,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-bit-position}@anchor{170}
  @section Attribute Bit_Position
  
  
--- 10211,10217 ----
  and implementation of the @code{Bit} attribute.
  
  @node Attribute Bit_Position,Attribute Code_Address,Attribute Bit,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-bit-position}@anchor{16d}
  @section Attribute Bit_Position
  
  
*************** type @emph{universal_integer}.  The valu
*** 10372,10378 ****
  the containing record @code{R}.
  
  @node Attribute Code_Address,Attribute Compiler_Version,Attribute Bit_Position,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-code-address}@anchor{171}
  @section Attribute Code_Address
  
  
--- 10226,10232 ----
  the containing record @code{R}.
  
  @node Attribute Code_Address,Attribute Compiler_Version,Attribute Bit_Position,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-code-address}@anchor{16e}
  @section Attribute Code_Address
  
  
*************** the same value as is returned by the cor
*** 10415,10421 ****
  attribute.
  
  @node Attribute Compiler_Version,Attribute Constrained,Attribute Code_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{172}
  @section Attribute Compiler_Version
  
  
--- 10269,10275 ----
  attribute.
  
  @node Attribute Compiler_Version,Attribute Constrained,Attribute Code_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{16f}
  @section Attribute Compiler_Version
  
  
*************** prefix) yields a static string identifyi
*** 10426,10432 ****
  being used to compile the unit containing the attribute reference.
  
  @node Attribute Constrained,Attribute Default_Bit_Order,Attribute Compiler_Version,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-constrained}@anchor{173}
  @section Attribute Constrained
  
  
--- 10280,10286 ----
  being used to compile the unit containing the attribute reference.
  
  @node Attribute Constrained,Attribute Default_Bit_Order,Attribute Compiler_Version,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-constrained}@anchor{170}
  @section Attribute Constrained
  
  
*************** record type without discriminants is alw
*** 10441,10447 ****
  compatible with older Ada compilers, including notably DEC Ada.
  
  @node Attribute Default_Bit_Order,Attribute Default_Scalar_Storage_Order,Attribute Constrained,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-default-bit-order}@anchor{174}
  @section Attribute Default_Bit_Order
  
  
--- 10295,10301 ----
  compatible with older Ada compilers, including notably DEC Ada.
  
  @node Attribute Default_Bit_Order,Attribute Default_Scalar_Storage_Order,Attribute Constrained,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-default-bit-order}@anchor{171}
  @section Attribute Default_Bit_Order
  
  
*************** as a @code{Pos} value (0 for @code{High_
*** 10458,10464 ****
  @code{Default_Bit_Order} in package @code{System}.
  
  @node Attribute Default_Scalar_Storage_Order,Attribute Deref,Attribute Default_Bit_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order}@anchor{175}
  @section Attribute Default_Scalar_Storage_Order
  
  
--- 10312,10318 ----
  @code{Default_Bit_Order} in package @code{System}.
  
  @node Attribute Default_Scalar_Storage_Order,Attribute Deref,Attribute Default_Bit_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order}@anchor{172}
  @section Attribute Default_Scalar_Storage_Order
  
  
*************** equal to @code{Default_Bit_Order} if uns
*** 10475,10481 ****
  @code{System.Bit_Order} value. This is a static attribute.
  
  @node Attribute Deref,Attribute Descriptor_Size,Attribute Default_Scalar_Storage_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-deref}@anchor{176}
  @section Attribute Deref
  
  
--- 10329,10335 ----
  @code{System.Bit_Order} value. This is a static attribute.
  
  @node Attribute Deref,Attribute Descriptor_Size,Attribute Default_Scalar_Storage_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-deref}@anchor{173}
  @section Attribute Deref
  
  
*************** a named access-to-@cite{typ} type, excep
*** 10488,10494 ****
  used on the left side of an assignment.
  
  @node Attribute Descriptor_Size,Attribute Elaborated,Attribute Deref,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-descriptor-size}@anchor{177}
  @section Attribute Descriptor_Size
  
  
--- 10342,10348 ----
  used on the left side of an assignment.
  
  @node Attribute Descriptor_Size,Attribute Elaborated,Attribute Deref,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-descriptor-size}@anchor{174}
  @section Attribute Descriptor_Size
  
  
*************** array descriptor contains bounds informa
*** 10505,10521 ****
  the first element of the array.
  
  @example
! type Unconstr_Array is array (Positive range <>) of Boolean;
  Put_Line ("Descriptor size = " & Unconstr_Array'Descriptor_Size'Img);
  @end example
  
! The attribute takes into account any additional padding due to type alignment.
! In the example above, the descriptor contains two values of type
! @code{Positive} representing the low and high bound.  Since @code{Positive} has
! a size of 31 bits and an alignment of 4, the descriptor size is @code{2 * Positive'Size + 2} or 64 bits.
  
  @node Attribute Elaborated,Attribute Elab_Body,Attribute Descriptor_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{178}
  @section Attribute Elaborated
  
  
--- 10359,10377 ----
  the first element of the array.
  
  @example
! type Unconstr_Array is array (Short_Short_Integer range <>) of Positive;
  Put_Line ("Descriptor size = " & Unconstr_Array'Descriptor_Size'Img);
  @end example
  
! The attribute takes into account any padding due to the alignment of the
! component type. In the example above, the descriptor contains two values
! of type @code{Short_Short_Integer} representing the low and high bound. But,
! since @code{Positive} has an alignment of 4, the size of the descriptor is
! @code{2 * Short_Short_Integer'Size} rounded up to the next multiple of 32,
! which yields a size of 32 bits, i.e. including 16 bits of padding.
  
  @node Attribute Elaborated,Attribute Elab_Body,Attribute Descriptor_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{175}
  @section Attribute Elaborated
  
  
*************** units has been completed.  An exception
*** 10530,10536 ****
  elaboration, the value is always False for such units.
  
  @node Attribute Elab_Body,Attribute Elab_Spec,Attribute Elaborated,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-body}@anchor{179}
  @section Attribute Elab_Body
  
  
--- 10386,10392 ----
  elaboration, the value is always False for such units.
  
  @node Attribute Elab_Body,Attribute Elab_Spec,Attribute Elaborated,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-body}@anchor{176}
  @section Attribute Elab_Body
  
  
*************** e.g., if it is necessary to do selective
*** 10546,10552 ****
  error.
  
  @node Attribute Elab_Spec,Attribute Elab_Subp_Body,Attribute Elab_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-spec}@anchor{17a}
  @section Attribute Elab_Spec
  
  
--- 10402,10408 ----
  error.
  
  @node Attribute Elab_Spec,Attribute Elab_Subp_Body,Attribute Elab_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-spec}@anchor{177}
  @section Attribute Elab_Spec
  
  
*************** Ada code, e.g., if it is necessary to do
*** 10562,10568 ****
  some error.
  
  @node Attribute Elab_Subp_Body,Attribute Emax,Attribute Elab_Spec,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-subp-body}@anchor{17b}
  @section Attribute Elab_Subp_Body
  
  
--- 10418,10424 ----
  some error.
  
  @node Attribute Elab_Subp_Body,Attribute Emax,Attribute Elab_Spec,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-subp-body}@anchor{178}
  @section Attribute Elab_Subp_Body
  
  
*************** elaboration procedure by the binder in C
*** 10576,10582 ****
  otherwise.
  
  @node Attribute Emax,Attribute Enabled,Attribute Elab_Subp_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{17c}
  @section Attribute Emax
  
  
--- 10432,10438 ----
  otherwise.
  
  @node Attribute Emax,Attribute Enabled,Attribute Elab_Subp_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{179}
  @section Attribute Emax
  
  
*************** the Ada 83 reference manual for an exact
*** 10589,10595 ****
  this attribute.
  
  @node Attribute Enabled,Attribute Enum_Rep,Attribute Emax,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{17d}
  @section Attribute Enabled
  
  
--- 10445,10451 ----
  this attribute.
  
  @node Attribute Enabled,Attribute Enum_Rep,Attribute Emax,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{17a}
  @section Attribute Enabled
  
  
*************** a @code{pragma Suppress} or @code{pragma
*** 10613,10619 ****
  the package or subprogram, controlling whether the check will be present.
  
  @node Attribute Enum_Rep,Attribute Enum_Val,Attribute Enabled,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enum-rep}@anchor{17e}
  @section Attribute Enum_Rep
  
  
--- 10469,10475 ----
  the package or subprogram, controlling whether the check will be present.
  
  @node Attribute Enum_Rep,Attribute Enum_Val,Attribute Enabled,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enum-rep}@anchor{17b}
  @section Attribute Enum_Rep
  
  
*************** the package or subprogram, controlling w
*** 10621,10626 ****
--- 10477,10485 ----
  
  @geindex Enum_Rep
  
+ Note that this attribute is now standard in Ada 202x and is available
+ as an implementation defined attribute for earlier Ada versions.
+ 
  For every enumeration subtype @code{S}, @code{S'Enum_Rep} denotes a
  function with the following spec:
  
*************** enumeration literal or object.
*** 10637,10643 ****
  The function returns the representation value for the given enumeration
  value.  This will be equal to value of the @code{Pos} attribute in the
  absence of an enumeration representation clause.  This is a static
! attribute (i.e.,:the result is static if the argument is static).
  
  @code{S'Enum_Rep} can also be used with integer types and objects,
  in which case it simply returns the integer value.  The reason for this
--- 10496,10502 ----
  The function returns the representation value for the given enumeration
  value.  This will be equal to value of the @code{Pos} attribute in the
  absence of an enumeration representation clause.  This is a static
! attribute (i.e., the result is static if the argument is static).
  
  @code{S'Enum_Rep} can also be used with integer types and objects,
  in which case it simply returns the integer value.  The reason for this
*************** integer calculation is done at run time,
*** 10650,10656 ****
  may raise @code{Constraint_Error}.
  
  @node Attribute Enum_Val,Attribute Epsilon,Attribute Enum_Rep,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enum-val}@anchor{17f}
  @section Attribute Enum_Val
  
  
--- 10509,10515 ----
  may raise @code{Constraint_Error}.
  
  @node Attribute Enum_Val,Attribute Epsilon,Attribute Enum_Rep,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enum-val}@anchor{17c}
  @section Attribute Enum_Val
  
  
*************** may raise @code{Constraint_Error}.
*** 10658,10663 ****
--- 10517,10525 ----
  
  @geindex Enum_Val
  
+ Note that this attribute is now standard in Ada 202x and is available
+ as an implementation defined attribute for earlier Ada versions.
+ 
  For every enumeration subtype @code{S}, @code{S'Enum_Val} denotes a
  function with the following spec:
  
*************** absence of an enumeration representation
*** 10673,10679 ****
  attribute (i.e., the result is static if the argument is static).
  
  @node Attribute Epsilon,Attribute Fast_Math,Attribute Enum_Val,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-epsilon}@anchor{180}
  @section Attribute Epsilon
  
  
--- 10535,10541 ----
  attribute (i.e., the result is static if the argument is static).
  
  @node Attribute Epsilon,Attribute Fast_Math,Attribute Enum_Val,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-epsilon}@anchor{17d}
  @section Attribute Epsilon
  
  
*************** the Ada 83 reference manual for an exact
*** 10686,10692 ****
  this attribute.
  
  @node Attribute Fast_Math,Attribute Finalization_Size,Attribute Epsilon,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{181}
  @section Attribute Fast_Math
  
  
--- 10548,10554 ----
  this attribute.
  
  @node Attribute Fast_Math,Attribute Finalization_Size,Attribute Epsilon,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{17e}
  @section Attribute Fast_Math
  
  
*************** prefix) yields a static Boolean value th
*** 10697,10703 ****
  @code{Fast_Math} is active, and False otherwise.
  
  @node Attribute Finalization_Size,Attribute Fixed_Value,Attribute Fast_Math,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-finalization-size}@anchor{182}
  @section Attribute Finalization_Size
  
  
--- 10559,10565 ----
  @code{Fast_Math} is active, and False otherwise.
  
  @node Attribute Finalization_Size,Attribute Fixed_Value,Attribute Fast_Math,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-finalization-size}@anchor{17f}
  @section Attribute Finalization_Size
  
  
*************** class-wide type whose tag denotes a type
*** 10715,10721 ****
  Note that only heap-allocated objects contain finalization data.
  
  @node Attribute Fixed_Value,Attribute From_Any,Attribute Finalization_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fixed-value}@anchor{183}
  @section Attribute Fixed_Value
  
  
--- 10577,10583 ----
  Note that only heap-allocated objects contain finalization data.
  
  @node Attribute Fixed_Value,Attribute From_Any,Attribute Finalization_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fixed-value}@anchor{180}
  @section Attribute Fixed_Value
  
  
*************** This attribute is primarily intended for
*** 10742,10748 ****
  input-output functions for fixed-point values.
  
  @node Attribute From_Any,Attribute Has_Access_Values,Attribute Fixed_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-from-any}@anchor{184}
  @section Attribute From_Any
  
  
--- 10604,10610 ----
  input-output functions for fixed-point values.
  
  @node Attribute From_Any,Attribute Has_Access_Values,Attribute Fixed_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-from-any}@anchor{181}
  @section Attribute From_Any
  
  
*************** This internal attribute is used for the
*** 10752,10758 ****
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Has_Access_Values,Attribute Has_Discriminants,Attribute From_Any,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-access-values}@anchor{185}
  @section Attribute Has_Access_Values
  
  
--- 10614,10620 ----
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Has_Access_Values,Attribute Has_Discriminants,Attribute From_Any,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-access-values}@anchor{182}
  @section Attribute Has_Access_Values
  
  
*************** The intended use of this attribute is in
*** 10769,10776 ****
  definitions.  If the attribute is applied to a generic private type, it
  indicates whether or not the corresponding actual type has access values.
  
! @node Attribute Has_Discriminants,Attribute Img,Attribute Has_Access_Values,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{186}
  @section Attribute Has_Discriminants
  
  
--- 10631,10638 ----
  definitions.  If the attribute is applied to a generic private type, it
  indicates whether or not the corresponding actual type has access values.
  
! @node Attribute Has_Discriminants,Attribute Has_Tagged_Values,Attribute Has_Access_Values,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{183}
  @section Attribute Has_Discriminants
  
  
*************** otherwise.  The intended use of this att
*** 10785,10792 ****
  definitions.  If the attribute is applied to a generic private type, it
  indicates whether or not the corresponding actual type has discriminants.
  
! @node Attribute Img,Attribute Integer_Value,Attribute Has_Discriminants,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{187}
  @section Attribute Img
  
  
--- 10647,10671 ----
  definitions.  If the attribute is applied to a generic private type, it
  indicates whether or not the corresponding actual type has discriminants.
  
! @node Attribute Has_Tagged_Values,Attribute Img,Attribute Has_Discriminants,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-tagged-values}@anchor{184}
! @section Attribute Has_Tagged_Values
! 
! 
! @geindex Tagged values
! @geindex testing for
! 
! @geindex Has_Tagged_Values
! 
! The prefix of the @code{Has_Tagged_Values} attribute is a type. The result is a
! Boolean value which is True if the type is a composite type (array or record)
! that is either a tagged type or has a subcomponent that is tagged, and is False
! otherwise. The intended use of this attribute is in conjunction with generic
! definitions. If the attribute is applied to a generic private type, it
! indicates whether or not the corresponding actual type has access values.
! 
! @node Attribute Img,Attribute Initialized,Attribute Has_Tagged_Values,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{185}
  @section Attribute Img
  
  
*************** that returns the appropriate string when
*** 10815,10822 ****
  @code{X'Img} can be renamed as a function-returning-string, or used
  in an instantiation as a function parameter.
  
! @node Attribute Integer_Value,Attribute Invalid_Value,Attribute Img,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{188}
  @section Attribute Integer_Value
  
  
--- 10694,10711 ----
  @code{X'Img} can be renamed as a function-returning-string, or used
  in an instantiation as a function parameter.
  
! @node Attribute Initialized,Attribute Integer_Value,Attribute Img,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-initialized}@anchor{186}
! @section Attribute Initialized
! 
! 
! @geindex Initialized
! 
! For the syntax and semantics of this attribute, see the SPARK 2014 Reference
! Manual, section 6.10.
! 
! @node Attribute Integer_Value,Attribute Invalid_Value,Attribute Initialized,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{187}
  @section Attribute Integer_Value
  
  
*************** This attribute is primarily intended for
*** 10844,10850 ****
  standard input-output functions for fixed-point values.
  
  @node Attribute Invalid_Value,Attribute Iterable,Attribute Integer_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-invalid-value}@anchor{189}
  @section Attribute Invalid_Value
  
  
--- 10733,10739 ----
  standard input-output functions for fixed-point values.
  
  @node Attribute Invalid_Value,Attribute Iterable,Attribute Integer_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-invalid-value}@anchor{188}
  @section Attribute Invalid_Value
  
  
*************** including the ability to modify the valu
*** 10858,10864 ****
  relevant environment variables at run time.
  
  @node Attribute Iterable,Attribute Large,Attribute Invalid_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-iterable}@anchor{18a}
  @section Attribute Iterable
  
  
--- 10747,10753 ----
  relevant environment variables at run time.
  
  @node Attribute Iterable,Attribute Large,Attribute Invalid_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-iterable}@anchor{189}
  @section Attribute Iterable
  
  
*************** relevant environment variables at run ti
*** 10867,10873 ****
  Equivalent to Aspect Iterable.
  
  @node Attribute Large,Attribute Library_Level,Attribute Iterable,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{18b}
  @section Attribute Large
  
  
--- 10756,10762 ----
  Equivalent to Aspect Iterable.
  
  @node Attribute Large,Attribute Library_Level,Attribute Iterable,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{18a}
  @section Attribute Large
  
  
*************** the Ada 83 reference manual for an exact
*** 10880,10886 ****
  this attribute.
  
  @node Attribute Library_Level,Attribute Lock_Free,Attribute Large,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-library-level}@anchor{18c}
  @section Attribute Library_Level
  
  
--- 10769,10775 ----
  this attribute.
  
  @node Attribute Library_Level,Attribute Lock_Free,Attribute Large,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-library-level}@anchor{18b}
  @section Attribute Library_Level
  
  
*************** end Gen;
*** 10906,10912 ****
  @end example
  
  @node Attribute Lock_Free,Attribute Loop_Entry,Attribute Library_Level,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-lock-free}@anchor{18d}
  @section Attribute Lock_Free
  
  
--- 10795,10801 ----
  @end example
  
  @node Attribute Lock_Free,Attribute Loop_Entry,Attribute Library_Level,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-lock-free}@anchor{18c}
  @section Attribute Lock_Free
  
  
*************** end Gen;
*** 10916,10922 ****
  pragma @code{Lock_Free} applies to P.
  
  @node Attribute Loop_Entry,Attribute Machine_Size,Attribute Lock_Free,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-loop-entry}@anchor{18e}
  @section Attribute Loop_Entry
  
  
--- 10805,10811 ----
  pragma @code{Lock_Free} applies to P.
  
  @node Attribute Loop_Entry,Attribute Machine_Size,Attribute Lock_Free,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-loop-entry}@anchor{18d}
  @section Attribute Loop_Entry
  
  
*************** entry. This copy is not performed if the
*** 10946,10952 ****
  corresponding pragmas are ignored or disabled.
  
  @node Attribute Machine_Size,Attribute Mantissa,Attribute Loop_Entry,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-machine-size}@anchor{18f}
  @section Attribute Machine_Size
  
  
--- 10835,10841 ----
  corresponding pragmas are ignored or disabled.
  
  @node Attribute Machine_Size,Attribute Mantissa,Attribute Loop_Entry,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-machine-size}@anchor{18e}
  @section Attribute Machine_Size
  
  
*************** This attribute is identical to the @code
*** 10956,10962 ****
  provided for compatibility with the DEC Ada 83 attribute of this name.
  
  @node Attribute Mantissa,Attribute Maximum_Alignment,Attribute Machine_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-mantissa}@anchor{190}
  @section Attribute Mantissa
  
  
--- 10845,10851 ----
  provided for compatibility with the DEC Ada 83 attribute of this name.
  
  @node Attribute Mantissa,Attribute Maximum_Alignment,Attribute Machine_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-mantissa}@anchor{18f}
  @section Attribute Mantissa
  
  
*************** The @code{Mantissa} attribute is provide
*** 10968,10975 ****
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
! @node Attribute Maximum_Alignment,Attribute Mechanism_Code,Attribute Mantissa,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-maximum-alignment}@anchor{191}@anchor{gnat_rm/implementation_defined_attributes id2}@anchor{192}
  @section Attribute Maximum_Alignment
  
  
--- 10857,10864 ----
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
! @node Attribute Maximum_Alignment,Attribute Max_Integer_Size,Attribute Mantissa,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-maximum-alignment}@anchor{190}@anchor{gnat_rm/implementation_defined_attributes id2}@anchor{191}
  @section Attribute Maximum_Alignment
  
  
*************** target.  This is a static value that can
*** 10984,10990 ****
  for an object, guaranteeing that it is properly aligned in all
  cases.
  
! @node Attribute Mechanism_Code,Attribute Null_Parameter,Attribute Maximum_Alignment,Implementation Defined Attributes
  @anchor{gnat_rm/implementation_defined_attributes attribute-mechanism-code}@anchor{193}
  @section Attribute Mechanism_Code
  
--- 10873,10890 ----
  for an object, guaranteeing that it is properly aligned in all
  cases.
  
! @node Attribute Max_Integer_Size,Attribute Mechanism_Code,Attribute Maximum_Alignment,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-max-integer-size}@anchor{192}
! @section Attribute Max_Integer_Size
! 
! 
! @geindex Max_Integer_Size
! 
! @code{Standard'Max_Integer_Size} (@code{Standard} is the only permissible
! prefix) provides the size of the largest supported integer type for
! the target. The result is a static constant.
! 
! @node Attribute Mechanism_Code,Attribute Null_Parameter,Attribute Max_Integer_Size,Implementation Defined Attributes
  @anchor{gnat_rm/implementation_defined_attributes attribute-mechanism-code}@anchor{193}
  @section Attribute Mechanism_Code
  
*************** There is no way of indicating this witho
*** 11041,11047 ****
  attribute.
  
  @node Attribute Object_Size,Attribute Old,Attribute Null_Parameter,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{147}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{195}
  @section Attribute Object_Size
  
  
--- 10941,10947 ----
  attribute.
  
  @node Attribute Object_Size,Attribute Old,Attribute Null_Parameter,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{143}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{195}
  @section Attribute Object_Size
  
  
*************** and is static.  For non-scalar types, th
*** 11146,11154 ****
  @section Attribute Pool_Address
  
  
- @geindex Parameters
- @geindex when passed by reference
- 
  @geindex Pool_Address
  
  @code{X'Pool_Address} for any object @code{X} returns the address
--- 11046,11051 ----
*************** the Ada 83 reference manual for an exact
*** 11302,11308 ****
  this attribute.
  
  @node Attribute Scalar_Storage_Order,Attribute Simple_Storage_Pool,Attribute Safe_Small,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes id4}@anchor{19f}@anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{154}
  @section Attribute Scalar_Storage_Order
  
  
--- 11199,11205 ----
  this attribute.
  
  @node Attribute Scalar_Storage_Order,Attribute Simple_Storage_Pool,Attribute Safe_Small,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes id4}@anchor{19f}@anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{151}
  @section Attribute Scalar_Storage_Order
  
  
*************** Note that debuggers may be unable to dis
*** 11425,11431 ****
  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{e9}@anchor{gnat_rm/implementation_defined_attributes id5}@anchor{1a0}
  @section Attribute Simple_Storage_Pool
  
  
--- 11322,11328 ----
  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{e5}@anchor{gnat_rm/implementation_defined_attributes id5}@anchor{1a0}
  @section Attribute Simple_Storage_Pool
  
  
*************** parameter. The detailed semantics of suc
*** 11487,11493 ****
  as defined in section 13.11.2 of the Ada Reference Manual, except that the
  term @emph{simple storage pool} is substituted for @emph{storage pool}.
  
! @node Attribute Small,Attribute Storage_Unit,Attribute Simple_Storage_Pool,Implementation Defined Attributes
  @anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{1a1}
  @section Attribute Small
  
--- 11384,11390 ----
  as defined in section 13.11.2 of the Ada Reference Manual, except that the
  term @emph{simple storage pool} is substituted for @emph{storage pool}.
  
! @node Attribute Small,Attribute Small_Denominator,Attribute Simple_Storage_Pool,Implementation Defined Attributes
  @anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{1a1}
  @section Attribute Small
  
*************** for compatibility with Ada 83.  See
*** 11503,11510 ****
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute when applied to floating-point types.
  
! @node Attribute Storage_Unit,Attribute Stub_Type,Attribute Small,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-storage-unit}@anchor{1a2}
  @section Attribute Storage_Unit
  
  
--- 11400,11433 ----
  the Ada 83 reference manual for an exact description of the semantics of
  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{1a2}
! @section Attribute Small_Denominator
! 
! 
! @geindex Small
! 
! @geindex Small_Denominator
! 
! @code{typ'Small_Denominator} for any fixed-point subtype @cite{typ} yields the
! denominator in the representation of @code{typ'Small} as a rational number
! 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{1a3}
! @section Attribute Small_Numerator
! 
! 
! @geindex Small
! 
! @geindex Small_Numerator
! 
! @code{typ'Small_Numerator} for any fixed-point subtype @cite{typ} yields the
! numerator in the representation of @code{typ'Small} as a rational number
! 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{1a4}
  @section Attribute Storage_Unit
  
  
*************** this attribute when applied to floating-
*** 11514,11520 ****
  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{1a3}
  @section Attribute Stub_Type
  
  
--- 11437,11443 ----
  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{1a5}
  @section Attribute Stub_Type
  
  
*************** unit @code{System.Partition_Interface}.
*** 11538,11544 ****
  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{1a4}
  @section Attribute System_Allocator_Alignment
  
  
--- 11461,11467 ----
  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{1a6}
  @section Attribute System_Allocator_Alignment
  
  
*************** with alignment too large or to enable a
*** 11555,11561 ****
  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{1a5}
  @section Attribute Target_Name
  
  
--- 11478,11484 ----
  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{1a7}
  @section Attribute Target_Name
  
  
*************** standard gcc target name without the ter
*** 11568,11574 ****
  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{1a6}
  @section Attribute To_Address
  
  
--- 11491,11497 ----
  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{1a8}
  @section Attribute To_Address
  
  
*************** modular manner (e.g., -1 means the same
*** 11591,11597 ****
  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{1a7}
  @section Attribute To_Any
  
  
--- 11514,11520 ----
  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{1a9}
  @section Attribute To_Any
  
  
*************** This internal attribute is used for the
*** 11601,11607 ****
  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{1a8}
  @section Attribute Type_Class
  
  
--- 11524,11530 ----
  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{1aa}
  @section Attribute Type_Class
  
  
*************** applies to all concurrent types.  This a
*** 11631,11637 ****
  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{1a9}
  @section Attribute Type_Key
  
  
--- 11554,11560 ----
  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{1ab}
  @section Attribute Type_Key
  
  
*************** about the type or subtype. This provides
*** 11643,11649 ****
  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{1aa}
  @section Attribute TypeCode
  
  
--- 11566,11572 ----
  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{1ac}
  @section Attribute TypeCode
  
  
*************** This internal attribute is used for the
*** 11653,11659 ****
  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{1ab}
  @section Attribute Unconstrained_Array
  
  
--- 11576,11582 ----
  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{1ad}
  @section Attribute Unconstrained_Array
  
  
*************** still static, and yields the result of a
*** 11667,11673 ****
  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{1ac}
  @section Attribute Universal_Literal_String
  
  
--- 11590,11596 ----
  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{1ae}
  @section Attribute Universal_Literal_String
  
  
*************** end;
*** 11695,11701 ****
  @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{1ad}
  @section Attribute Unrestricted_Access
  
  
--- 11618,11624 ----
  @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{1af}
  @section Attribute Unrestricted_Access
  
  
*************** In general this is a risky approach. It
*** 11882,11888 ****
  of GNAT to another, so are best avoided if possible.
  
  @node Attribute Update,Attribute Valid_Scalars,Attribute Unrestricted_Access,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1ae}
  @section Attribute Update
  
  
--- 11805,11811 ----
  of GNAT to another, so are best avoided if possible.
  
  @node Attribute Update,Attribute Valid_Scalars,Attribute Unrestricted_Access,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1b0}
  @section Attribute Update
  
  
*************** A := A'Update ((1, 2) => 20, (3, 4) => 3
*** 11963,11969 ****
  which changes element (1,2) to 20 and (3,4) to 30.
  
  @node Attribute Valid_Scalars,Attribute VADS_Size,Attribute Update,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1af}
  @section Attribute Valid_Scalars
  
  
--- 11886,11892 ----
  which changes element (1,2) to 20 and (3,4) to 30.
  
  @node Attribute Valid_Scalars,Attribute VADS_Size,Attribute Update,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1b1}
  @section Attribute Valid_Scalars
  
  
*************** write a function with a single use of th
*** 11997,12003 ****
  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{1b0}
  @section Attribute VADS_Size
  
  
--- 11920,11926 ----
  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{1b2}
  @section Attribute VADS_Size
  
  
*************** gives the result that would be obtained
*** 12017,12023 ****
  the corresponding type.
  
  @node Attribute Value_Size,Attribute Wchar_T_Size,Attribute VADS_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1b1}@anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{163}
  @section Attribute Value_Size
  
  
--- 11940,11946 ----
  the corresponding type.
  
  @node Attribute Value_Size,Attribute Wchar_T_Size,Attribute VADS_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1b3}@anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{160}
  @section Attribute Value_Size
  
  
*************** a value of the given subtype.  It is the
*** 12031,12037 ****
  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{1b2}
  @section Attribute Wchar_T_Size
  
  
--- 11954,11960 ----
  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{1b4}
  @section Attribute Wchar_T_Size
  
  
*************** primarily for constructing the definitio
*** 12043,12049 ****
  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{1b3}
  @section Attribute Word_Size
  
  
--- 11966,11972 ----
  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{1b5}
  @section Attribute Word_Size
  
  
*************** prefix) provides the value @code{System.
*** 12054,12060 ****
  a static constant.
  
  @node Standard and Implementation Defined Restrictions,Implementation Advice,Implementation Defined Attributes,Top
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9}@anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1b4}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1b5}
  @chapter Standard and Implementation Defined Restrictions
  
  
--- 11977,11983 ----
  a static constant.
  
  @node Standard and Implementation Defined Restrictions,Implementation Advice,Implementation Defined Attributes,Top
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9}@anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1b6}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1b7}
  @chapter Standard and Implementation Defined Restrictions
  
  
*************** language defined or GNAT-specific, are l
*** 12083,12089 ****
  @end menu
  
  @node Partition-Wide Restrictions,Program Unit Level Restrictions,,Standard and Implementation Defined Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1b6}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1b7}
  @section Partition-Wide Restrictions
  
  
--- 12006,12012 ----
  @end menu
  
  @node Partition-Wide Restrictions,Program Unit Level Restrictions,,Standard and Implementation Defined Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1b8}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1b9}
  @section Partition-Wide Restrictions
  
  
*************** then all compilation units in the partit
*** 12172,12178 ****
  @end menu
  
  @node Immediate_Reclamation,Max_Asynchronous_Select_Nesting,,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1b8}
  @subsection Immediate_Reclamation
  
  
--- 12095,12101 ----
  @end menu
  
  @node Immediate_Reclamation,Max_Asynchronous_Select_Nesting,,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1ba}
  @subsection Immediate_Reclamation
  
  
*************** deallocation, any storage reserved at ru
*** 12184,12190 ****
  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{1b9}
  @subsection Max_Asynchronous_Select_Nesting
  
  
--- 12107,12113 ----
  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{1bb}
  @subsection Max_Asynchronous_Select_Nesting
  
  
*************** detected at compile time. Violations of
*** 12196,12202 ****
  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{1ba}
  @subsection Max_Entry_Queue_Length
  
  
--- 12119,12125 ----
  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{1bc}
  @subsection Max_Entry_Queue_Length
  
  
*************** compatibility purposes (and a warning wi
*** 12217,12223 ****
  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{1bb}
  @subsection Max_Protected_Entries
  
  
--- 12140,12146 ----
  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{1bd}
  @subsection Max_Protected_Entries
  
  
*************** bounds of every entry family of a protec
*** 12228,12234 ****
  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{1bc}
  @subsection Max_Select_Alternatives
  
  
--- 12151,12157 ----
  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{1be}
  @subsection Max_Select_Alternatives
  
  
*************** defined by a discriminant of a subtype w
*** 12237,12243 ****
  [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{1bd}
  @subsection Max_Storage_At_Blocking
  
  
--- 12160,12166 ----
  [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{1bf}
  @subsection Max_Storage_At_Blocking
  
  
*************** Storage_Size that can be retained by a b
*** 12248,12254 ****
  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{1be}
  @subsection Max_Task_Entries
  
  
--- 12171,12177 ----
  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{1c0}
  @subsection Max_Task_Entries
  
  
*************** defined by a discriminant of a subtype w
*** 12261,12267 ****
  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{1bf}
  @subsection Max_Tasks
  
  
--- 12184,12190 ----
  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{1c1}
  @subsection Max_Tasks
  
  
*************** time. Violations of this restriction wit
*** 12274,12280 ****
  Storage_Error to be raised.
  
  @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{1c0}
  @subsection No_Abort_Statements
  
  
--- 12197,12203 ----
  Storage_Error to be raised.
  
  @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{1c2}
  @subsection No_Abort_Statements
  
  
*************** Storage_Error to be raised.
*** 12284,12290 ****
  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{1c1}
  @subsection No_Access_Parameter_Allocators
  
  
--- 12207,12213 ----
  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{1c3}
  @subsection No_Access_Parameter_Allocators
  
  
*************** occurrences of an allocator as the actua
*** 12295,12301 ****
  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{1c2}
  @subsection No_Access_Subprograms
  
  
--- 12218,12224 ----
  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{1c4}
  @subsection No_Access_Subprograms
  
  
*************** parameter.
*** 12305,12311 ****
  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{1c3}
  @subsection No_Allocators
  
  
--- 12228,12234 ----
  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{1c5}
  @subsection No_Allocators
  
  
*************** declarations of access-to-subprogram typ
*** 12315,12321 ****
  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{1c4}
  @subsection No_Anonymous_Allocators
  
  
--- 12238,12244 ----
  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{1c6}
  @subsection No_Anonymous_Allocators
  
  
*************** occurrences of an allocator.
*** 12325,12331 ****
  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{1c5}
  @subsection No_Asynchronous_Control
  
  
--- 12248,12254 ----
  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{1c7}
  @subsection No_Asynchronous_Control
  
  
*************** occurrences of an allocator of anonymous
*** 12335,12341 ****
  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{1c6}
  @subsection No_Calendar
  
  
--- 12258,12264 ----
  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{1c8}
  @subsection No_Calendar
  
  
*************** dependences on the predefined package As
*** 12345,12351 ****
  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{1c7}
  @subsection No_Coextensions
  
  
--- 12268,12274 ----
  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{1c9}
  @subsection No_Coextensions
  
  
*************** dependences on package Calendar.
*** 12355,12361 ****
  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{1c8}
  @subsection No_Default_Initialization
  
  
--- 12278,12284 ----
  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{1ca}
  @subsection No_Default_Initialization
  
  
*************** is to prohibit all cases of variables de
*** 12372,12378 ****
  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{1c9}
  @subsection No_Delay
  
  
--- 12295,12301 ----
  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{1cb}
  @subsection No_Delay
  
  
*************** initializer (including the case of OUT s
*** 12382,12388 ****
  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{1ca}
  @subsection No_Dependence
  
  
--- 12305,12311 ----
  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{1cc}
  @subsection No_Dependence
  
  
*************** delay statements and no semantic depende
*** 12392,12398 ****
  dependences on a library unit.
  
  @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{1cb}
  @subsection No_Direct_Boolean_Operators
  
  
--- 12315,12321 ----
  dependences on a library unit.
  
  @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{1cd}
  @subsection No_Direct_Boolean_Operators
  
  
*************** protocol requires the use of short-circu
*** 12405,12411 ****
  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{1cc}
  @subsection No_Dispatch
  
  
--- 12328,12334 ----
  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{1ce}
  @subsection No_Dispatch
  
  
*************** composite boolean operations.
*** 12415,12421 ****
  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{1cd}
  @subsection No_Dispatching_Calls
  
  
--- 12338,12344 ----
  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{1cf}
  @subsection No_Dispatching_Calls
  
  
*************** end Example;
*** 12476,12482 ****
  @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{1ce}
  @subsection No_Dynamic_Attachment
  
  
--- 12399,12405 ----
  @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{1d0}
  @subsection No_Dynamic_Attachment
  
  
*************** compatibility purposes (and a warning wi
*** 12495,12501 ****
  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{1cf}
  @subsection No_Dynamic_Priorities
  
  
--- 12418,12424 ----
  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{1d1}
  @subsection No_Dynamic_Priorities
  
  
*************** warnings on obsolescent features are act
*** 12504,12510 ****
  [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{1d0}
  @subsection No_Entry_Calls_In_Elaboration_Code
  
  
--- 12427,12433 ----
  [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{1d2}
  @subsection No_Entry_Calls_In_Elaboration_Code
  
  
*************** restriction, the compiler can assume tha
*** 12516,12522 ****
  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{1d1}
  @subsection No_Enumeration_Maps
  
  
--- 12439,12445 ----
  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{1d3}
  @subsection No_Enumeration_Maps
  
  
*************** enumeration maps are used (that is Image
*** 12527,12533 ****
  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{1d2}
  @subsection No_Exception_Handlers
  
  
--- 12450,12456 ----
  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{1d4}
  @subsection No_Exception_Handlers
  
  
*************** statement generated by the compiler). Th
*** 12552,12558 ****
  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{1d3}
  @subsection No_Exception_Propagation
  
  
--- 12475,12481 ----
  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{1d5}
  @subsection No_Exception_Propagation
  
  
*************** the package GNAT.Current_Exception is no
*** 12569,12575 ****
  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{1d4}
  @subsection No_Exception_Registration
  
  
--- 12492,12498 ----
  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{1d6}
  @subsection No_Exception_Registration
  
  
*************** code is simplified by omitting the other
*** 12583,12589 ****
  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{1d5}
  @subsection No_Exceptions
  
  
--- 12506,12512 ----
  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{1d7}
  @subsection No_Exceptions
  
  
*************** raise statements and no exception handle
*** 12594,12600 ****
  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{1d6}
  @subsection No_Finalization
  
  
--- 12517,12523 ----
  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{1d8}
  @subsection No_Finalization
  
  
*************** object or a nested component, either dec
*** 12635,12641 ****
  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{1d7}
  @subsection No_Fixed_Point
  
  
--- 12558,12564 ----
  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{1d9}
  @subsection No_Fixed_Point
  
  
*************** deallocation of a controlled object no l
*** 12645,12651 ****
  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{1d8}
  @subsection No_Floating_Point
  
  
--- 12568,12574 ----
  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{1da}
  @subsection No_Floating_Point
  
  
*************** occurrences of fixed point types and ope
*** 12655,12661 ****
  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{1d9}
  @subsection No_Implicit_Conditionals
  
  
--- 12578,12584 ----
  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{1db}
  @subsection No_Implicit_Conditionals
  
  
*************** normal manner. Constructs generating imp
*** 12671,12677 ****
  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{1da}
  @subsection No_Implicit_Dynamic_Code
  
  
--- 12594,12600 ----
  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{1dc}
  @subsection No_Implicit_Dynamic_Code
  
  
*************** foreign-language convention; primitive o
*** 12701,12707 ****
  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{1db}
  @subsection No_Implicit_Heap_Allocations
  
  
--- 12624,12630 ----
  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{1dd}
  @subsection No_Implicit_Heap_Allocations
  
  
*************** types.
*** 12710,12716 ****
  [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{1dc}
  @subsection No_Implicit_Protected_Object_Allocations
  
  
--- 12633,12639 ----
  [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{1de}
  @subsection No_Implicit_Protected_Object_Allocations
  
  
*************** types.
*** 12720,12726 ****
  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{1dd}
  @subsection No_Implicit_Task_Allocations
  
  
--- 12643,12649 ----
  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{1df}
  @subsection No_Implicit_Task_Allocations
  
  
*************** protected object.
*** 12729,12735 ****
  [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{1de}
  @subsection No_Initialize_Scalars
  
  
--- 12652,12658 ----
  [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{1e0}
  @subsection No_Initialize_Scalars
  
  
*************** code, and in particular eliminates dummy
*** 12741,12747 ****
  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{1df}
  @subsection No_IO
  
  
--- 12664,12670 ----
  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{1e1}
  @subsection No_IO
  
  
*************** dependences on any of the library units
*** 12752,12758 ****
  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{1e0}
  @subsection No_Local_Allocators
  
  
--- 12675,12681 ----
  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{1e2}
  @subsection No_Local_Allocators
  
  
*************** occurrences of an allocator in subprogra
*** 12763,12769 ****
  and entry bodies.
  
  @node No_Local_Protected_Objects,No_Local_Timing_Events,No_Local_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1e1}
  @subsection No_Local_Protected_Objects
  
  
--- 12686,12692 ----
  and entry bodies.
  
  @node No_Local_Protected_Objects,No_Local_Timing_Events,No_Local_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1e3}
  @subsection No_Local_Protected_Objects
  
  
*************** and entry bodies.
*** 12773,12789 ****
  only declared at the library level.
  
  @node No_Local_Timing_Events,No_Long_Long_Integers,No_Local_Protected_Objects,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{1e2}
  @subsection No_Local_Timing_Events
  
  
  @geindex No_Local_Timing_Events
  
! [RM D.7] All objects of type Ada.Timing_Events.Timing_Event are
  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{1e3}
  @subsection No_Long_Long_Integers
  
  
--- 12696,12712 ----
  only declared at the library level.
  
  @node No_Local_Timing_Events,No_Long_Long_Integers,No_Local_Protected_Objects,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{1e4}
  @subsection No_Local_Timing_Events
  
  
  @geindex No_Local_Timing_Events
  
! [RM D.7] All objects of type Ada.Real_Time.Timing_Events.Timing_Event are
  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{1e5}
  @subsection No_Long_Long_Integers
  
  
*************** implicit base type is Long_Long_Integer,
*** 12795,12801 ****
  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{1e4}
  @subsection No_Multiple_Elaboration
  
  
--- 12718,12724 ----
  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{1e6}
  @subsection No_Multiple_Elaboration
  
  
*************** possible, including non-Ada main program
*** 12811,12817 ****
  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{1e5}
  @subsection No_Nested_Finalization
  
  
--- 12734,12740 ----
  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{1e7}
  @subsection No_Nested_Finalization
  
  
*************** permitted and will be diagnosed by the b
*** 12820,12826 ****
  [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{1e6}
  @subsection No_Protected_Type_Allocators
  
  
--- 12743,12749 ----
  [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{1e8}
  @subsection No_Protected_Type_Allocators
  
  
*************** permitted and will be diagnosed by the b
*** 12830,12836 ****
  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{1e7}
  @subsection No_Protected_Types
  
  
--- 12753,12759 ----
  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{1e9}
  @subsection No_Protected_Types
  
  
*************** expressions that attempt to allocate pro
*** 12840,12846 ****
  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{1e8}
  @subsection No_Recursion
  
  
--- 12763,12769 ----
  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{1ea}
  @subsection No_Recursion
  
  
*************** declarations of protected types or prote
*** 12850,12856 ****
  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{1e9}
  @subsection No_Reentrancy
  
  
--- 12773,12779 ----
  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{1eb}
  @subsection No_Reentrancy
  
  
*************** part of its execution.
*** 12860,12866 ****
  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{1ea}
  @subsection No_Relative_Delay
  
  
--- 12783,12789 ----
  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{1ec}
  @subsection No_Relative_Delay
  
  
*************** relative statements and prevents express
*** 12871,12877 ****
  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{1eb}
  @subsection No_Requeue_Statements
  
  
--- 12794,12800 ----
  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{1ed}
  @subsection No_Requeue_Statements
  
  
*************** compatibility purposes (and a warning wi
*** 12889,12895 ****
  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{1ec}
  @subsection No_Secondary_Stack
  
  
--- 12812,12818 ----
  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{1ee}
  @subsection No_Secondary_Stack
  
  
*************** stack is used to implement functions ret
*** 12902,12908 ****
  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{1ed}
  @subsection No_Select_Statements
  
  
--- 12825,12831 ----
  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{1ef}
  @subsection No_Select_Statements
  
  
*************** secondary stacks for tasks (excluding th
*** 12912,12918 ****
  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{1ee}
  @subsection No_Specific_Termination_Handlers
  
  
--- 12835,12841 ----
  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{1f0}
  @subsection No_Specific_Termination_Handlers
  
  
*************** kind are permitted, that is the keyword
*** 12922,12928 ****
  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{1ef}
  @subsection No_Specification_of_Aspect
  
  
--- 12845,12851 ----
  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{1f1}
  @subsection No_Specification_of_Aspect
  
  
*************** specification, attribute definition clau
*** 12933,12939 ****
  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{1f0}
  @subsection No_Standard_Allocators_After_Elaboration
  
  
--- 12856,12862 ----
  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{1f2}
  @subsection No_Standard_Allocators_After_Elaboration
  
  
*************** library items of the partition has compl
*** 12945,12951 ****
  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{1f1}
  @subsection No_Standard_Storage_Pools
  
  
--- 12868,12874 ----
  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{1f3}
  @subsection No_Standard_Storage_Pools
  
  
*************** have an explicit Storage_Pool attribute
*** 12957,12963 ****
  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{1f2}
  @subsection No_Stream_Optimizations
  
  
--- 12880,12886 ----
  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{1f4}
  @subsection No_Stream_Optimizations
  
  
*************** due to their superior performance. When
*** 12970,12976 ****
  compiler performs all IO operations on a per-character basis.
  
  @node No_Streams,No_Task_Allocators,No_Stream_Optimizations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{1f3}
  @subsection No_Streams
  
  
--- 12893,12899 ----
  compiler performs all IO operations on a per-character basis.
  
  @node No_Streams,No_Task_Allocators,No_Stream_Optimizations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{1f5}
  @subsection No_Streams
  
  
*************** unit declaring a tagged type should be c
*** 12991,12997 ****
  though this is not required.
  
  @node No_Task_Allocators,No_Task_At_Interrupt_Priority,No_Streams,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{1f4}
  @subsection No_Task_Allocators
  
  
--- 12914,12920 ----
  though this is not required.
  
  @node No_Task_Allocators,No_Task_At_Interrupt_Priority,No_Streams,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{1f6}
  @subsection No_Task_Allocators
  
  
*************** though this is not required.
*** 13001,13007 ****
  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{1f5}
  @subsection No_Task_At_Interrupt_Priority
  
  
--- 12924,12930 ----
  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{1f7}
  @subsection No_Task_At_Interrupt_Priority
  
  
*************** a consequence, the tasks are always crea
*** 13013,13019 ****
  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{1f6}
  @subsection No_Task_Attributes_Package
  
  
--- 12936,12942 ----
  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{1f8}
  @subsection No_Task_Attributes_Package
  
  
*************** compatibility purposes (and a warning wi
*** 13030,13036 ****
  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{1f7}
  @subsection No_Task_Hierarchy
  
  
--- 12953,12959 ----
  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{1f9}
  @subsection No_Task_Hierarchy
  
  
*************** warnings on obsolescent features are act
*** 13040,13046 ****
  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{1f8}
  @subsection No_Task_Termination
  
  
--- 12963,12969 ----
  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{1fa}
  @subsection No_Task_Termination
  
  
*************** directly on the environment task of the
*** 13049,13055 ****
  [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{1f9}
  @subsection No_Tasking
  
  
--- 12972,12978 ----
  [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{1fb}
  @subsection No_Tasking
  
  
*************** and cause an error message to be output
*** 13062,13068 ****
  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{1fa}
  @subsection No_Terminate_Alternatives
  
  
--- 12985,12991 ----
  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{1fc}
  @subsection No_Terminate_Alternatives
  
  
*************** binder.
*** 13071,13077 ****
  [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{1fb}
  @subsection No_Unchecked_Access
  
  
--- 12994,13000 ----
  [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{1fd}
  @subsection No_Unchecked_Access
  
  
*************** binder.
*** 13081,13087 ****
  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{1fc}
  @subsection No_Unchecked_Conversion
  
  
--- 13004,13010 ----
  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{1fe}
  @subsection No_Unchecked_Conversion
  
  
*************** occurrences of the Unchecked_Access attr
*** 13091,13097 ****
  dependences on the predefined generic function Unchecked_Conversion.
  
  @node No_Unchecked_Deallocation,No_Use_Of_Entity,No_Unchecked_Conversion,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{1fd}
  @subsection No_Unchecked_Deallocation
  
  
--- 13014,13020 ----
  dependences on the predefined generic function Unchecked_Conversion.
  
  @node No_Unchecked_Deallocation,No_Use_Of_Entity,No_Unchecked_Conversion,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{1ff}
  @subsection No_Unchecked_Deallocation
  
  
*************** dependences on the predefined generic fu
*** 13101,13107 ****
  dependences on the predefined generic procedure Unchecked_Deallocation.
  
  @node No_Use_Of_Entity,Pure_Barriers,No_Unchecked_Deallocation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{1fe}
  @subsection No_Use_Of_Entity
  
  
--- 13024,13030 ----
  dependences on the predefined generic procedure Unchecked_Deallocation.
  
  @node No_Use_Of_Entity,Pure_Barriers,No_Unchecked_Deallocation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{200}
  @subsection No_Use_Of_Entity
  
  
*************** No_Use_Of_Entity => Ada.Text_IO.Put_Line
*** 13121,13127 ****
  @end example
  
  @node Pure_Barriers,Simple_Barriers,No_Use_Of_Entity,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{1ff}
  @subsection Pure_Barriers
  
  
--- 13044,13050 ----
  @end example
  
  @node Pure_Barriers,Simple_Barriers,No_Use_Of_Entity,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{201}
  @subsection Pure_Barriers
  
  
*************** but still ensures absence of side effect
*** 13172,13178 ****
  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{200}
  @subsection Simple_Barriers
  
  
--- 13095,13101 ----
  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{202}
  @subsection Simple_Barriers
  
  
*************** compatibility purposes (and a warning wi
*** 13191,13197 ****
  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{201}
  @subsection Static_Priorities
  
  
--- 13114,13120 ----
  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{203}
  @subsection Static_Priorities
  
  
*************** are static, and that there are no depend
*** 13202,13208 ****
  @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{202}
  @subsection Static_Storage_Size
  
  
--- 13125,13131 ----
  @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{204}
  @subsection Static_Storage_Size
  
  
*************** are static, and that there are no depend
*** 13212,13218 ****
  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 program-unit-level-restrictions}@anchor{203}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{204}
  @section Program Unit Level Restrictions
  
  
--- 13135,13141 ----
  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 program-unit-level-restrictions}@anchor{205}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{206}
  @section Program Unit Level Restrictions
  
  
*************** other compilation units in the partition
*** 13242,13248 ****
  @end menu
  
  @node No_Elaboration_Code,No_Dynamic_Sized_Objects,,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{205}
  @subsection No_Elaboration_Code
  
  
--- 13165,13171 ----
  @end menu
  
  @node No_Elaboration_Code,No_Dynamic_Sized_Objects,,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{207}
  @subsection No_Elaboration_Code
  
  
*************** associated with the unit. This counter i
*** 13298,13304 ****
  before elaboration and to control multiple elaboration attempts.
  
  @node No_Dynamic_Sized_Objects,No_Entry_Queue,No_Elaboration_Code,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{206}
  @subsection No_Dynamic_Sized_Objects
  
  
--- 13221,13227 ----
  before elaboration and to control multiple elaboration attempts.
  
  @node No_Dynamic_Sized_Objects,No_Entry_Queue,No_Elaboration_Code,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{208}
  @subsection No_Dynamic_Sized_Objects
  
  
*************** access discriminants. It is often a good
*** 13316,13322 ****
  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{207}
  @subsection No_Entry_Queue
  
  
--- 13239,13245 ----
  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{209}
  @subsection No_Entry_Queue
  
  
*************** checked at compile time.  A program exec
*** 13329,13335 ****
  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{208}
  @subsection No_Implementation_Aspect_Specifications
  
  
--- 13252,13258 ----
  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{20a}
  @subsection No_Implementation_Aspect_Specifications
  
  
*************** GNAT-defined aspects are present.  With
*** 13340,13346 ****
  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{209}
  @subsection No_Implementation_Attributes
  
  
--- 13263,13269 ----
  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{20b}
  @subsection No_Implementation_Attributes
  
  
*************** attributes that can be used are those de
*** 13352,13358 ****
  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{20a}
  @subsection No_Implementation_Identifiers
  
  
--- 13275,13281 ----
  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{20c}
  @subsection No_Implementation_Identifiers
  
  
*************** implementation-defined identifiers (mark
*** 13363,13369 ****
  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{20b}
  @subsection No_Implementation_Pragmas
  
  
--- 13286,13292 ----
  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{20d}
  @subsection No_Implementation_Pragmas
  
  
*************** GNAT-defined pragmas are present.  With
*** 13374,13380 ****
  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{20c}
  @subsection No_Implementation_Restrictions
  
  
--- 13297,13303 ----
  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{20e}
  @subsection No_Implementation_Restrictions
  
  
*************** are present.  With this restriction, the
*** 13386,13392 ****
  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{20d}
  @subsection No_Implementation_Units
  
  
--- 13309,13315 ----
  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{20f}
  @subsection No_Implementation_Units
  
  
*************** mention in the context clause of any imp
*** 13397,13403 ****
  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{20e}
  @subsection No_Implicit_Aliasing
  
  
--- 13320,13326 ----
  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{210}
  @subsection No_Implicit_Aliasing
  
  
*************** to be aliased, and in such cases, it can
*** 13412,13418 ****
  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{20f}
  @subsection No_Implicit_Loops
  
  
--- 13335,13341 ----
  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{211}
  @subsection No_Implicit_Loops
  
  
*************** arrays larger than about 5000 scalar com
*** 13429,13435 ****
  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{210}
  @subsection No_Obsolescent_Features
  
  
--- 13352,13358 ----
  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{212}
  @subsection No_Obsolescent_Features
  
  
*************** is set in the spec of a package, it will
*** 13439,13445 ****
  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{211}
  @subsection No_Wide_Characters
  
  
--- 13362,13368 ----
  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{213}
  @subsection No_Wide_Characters
  
  
*************** appear in the program (that is literals
*** 13453,13459 ****
  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{212}
  @subsection Static_Dispatch_Tables
  
  
--- 13376,13382 ----
  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{214}
  @subsection Static_Dispatch_Tables
  
  
*************** type @code{Character}).
*** 13463,13476 ****
  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{213}
  @subsection SPARK_05
  
  
  @geindex SPARK_05
  
! [GNAT] This restriction checks at compile time that some constructs forbidden
! in SPARK 2005 are not present. Note that SPARK 2005 has been superseded by
  SPARK 2014, whose restrictions are checked by the tool GNATprove. To check that
  a codebase respects SPARK 2014 restrictions, mark the code with pragma or
  aspect @code{SPARK_Mode}, and run the tool GNATprove at Stone assurance level, as
--- 13386,13398 ----
  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{215}
  @subsection SPARK_05
  
  
  @geindex SPARK_05
  
! [GNAT] This restriction no longer has any effect and is superseded by
  SPARK 2014, whose restrictions are checked by the tool GNATprove. To check that
  a codebase respects SPARK 2014 restrictions, mark the code with pragma or
  aspect @code{SPARK_Mode}, and run the tool GNATprove at Stone assurance level, as
*************** or equivalently:
*** 13486,13843 ****
  gnatprove -P project.gpr --mode=check_all
  @end example
  
- With restriction @code{SPARK_05}, error messages related to SPARK 2005 restriction
- have the form:
- 
- @example
- violation of restriction "SPARK_05" at <source-location>
-  <error message>
- @end example
- 
- @geindex SPARK
- 
- The restriction @code{SPARK} is recognized as a synonym for @code{SPARK_05}. This is
- retained for historical compatibility purposes (and an unconditional warning
- will be generated for its use, advising replacement by @code{SPARK_05}).
- 
- This is not a replacement for the semantic checks performed by the
- SPARK Examiner tool, as the compiler currently only deals with code,
- not SPARK 2005 annotations, and does not guarantee catching all
- cases of constructs forbidden by SPARK 2005.
- 
- Thus it may well be the case that code which passes the compiler with
- the SPARK 2005 restriction is rejected by the SPARK Examiner, e.g. due to
- the different visibility rules of the Examiner based on SPARK 2005
- @code{inherit} annotations.
- 
- This restriction can be useful in providing an initial filter for code
- developed using SPARK 2005, or in examining legacy code to see how far
- it is from meeting SPARK 2005 restrictions.
- 
- The list below summarizes the checks that are performed when this
- restriction is in force:
- 
- 
- @itemize *
- 
- @item 
- No block statements
- 
- @item 
- No case statements with only an others clause
- 
- @item 
- Exit statements in loops must respect the SPARK 2005 language restrictions
- 
- @item 
- No goto statements
- 
- @item 
- Return can only appear as last statement in function
- 
- @item 
- Function must have return statement
- 
- @item 
- Loop parameter specification must include subtype mark
- 
- @item 
- Prefix of expanded name cannot be a loop statement
- 
- @item 
- Abstract subprogram not allowed
- 
- @item 
- User-defined operators not allowed
- 
- @item 
- Access type parameters not allowed
- 
- @item 
- Default expressions for parameters not allowed
- 
- @item 
- Default expressions for record fields not allowed
- 
- @item 
- No tasking constructs allowed
- 
- @item 
- Label needed at end of subprograms and packages
- 
- @item 
- No mixing of positional and named parameter association
- 
- @item 
- No access types as result type
- 
- @item 
- No unconstrained arrays as result types
- 
- @item 
- No null procedures
- 
- @item 
- Initial and later declarations must be in correct order (declaration can't come after body)
- 
- @item 
- No attributes on private types if full declaration not visible
- 
- @item 
- No package declaration within package specification
- 
- @item 
- No controlled types
- 
- @item 
- No discriminant types
- 
- @item 
- No overloading
- 
- @item 
- Selector name cannot be operator symbol (i.e. operator symbol cannot be prefixed)
- 
- @item 
- Access attribute not allowed
- 
- @item 
- Allocator not allowed
- 
- @item 
- Result of catenation must be String
- 
- @item 
- Operands of catenation must be string literal, static char or another catenation
- 
- @item 
- No conditional expressions
- 
- @item 
- No explicit dereference
- 
- @item 
- Quantified expression not allowed
- 
- @item 
- Slicing not allowed
- 
- @item 
- No exception renaming
- 
- @item 
- No generic renaming
- 
- @item 
- No object renaming
- 
- @item 
- No use clause
- 
- @item 
- Aggregates must be qualified
- 
- @item 
- Nonstatic choice in array aggregates not allowed
- 
- @item 
- The only view conversions which are allowed as in-out parameters are conversions of a tagged type to an ancestor type
- 
- @item 
- No mixing of positional and named association in aggregate, no multi choice
- 
- @item 
- AND, OR and XOR for arrays only allowed when operands have same static bounds
- 
- @item 
- Fixed point operands to * or / must be qualified or converted
- 
- @item 
- Comparison operators not allowed for Booleans or arrays (except strings)
- 
- @item 
- Equality not allowed for arrays with non-matching static bounds (except strings)
- 
- @item 
- Conversion / qualification not allowed for arrays with non-matching static bounds
- 
- @item 
- Subprogram declaration only allowed in package spec (unless followed by import)
- 
- @item 
- Access types not allowed
- 
- @item 
- Incomplete type declaration not allowed
- 
- @item 
- Object and subtype declarations must respect SPARK 2005 restrictions
- 
- @item 
- Digits or delta constraint not allowed
- 
- @item 
- Decimal fixed point type not allowed
- 
- @item 
- Aliasing of objects not allowed
- 
- @item 
- Modular type modulus must be power of 2
- 
- @item 
- Base not allowed on subtype mark
- 
- @item 
- Unary operators not allowed on modular types (except not)
- 
- @item 
- Untagged record cannot be null
- 
- @item 
- No class-wide operations
- 
- @item 
- Initialization expressions must respect SPARK 2005 restrictions
- 
- @item 
- Nonstatic ranges not allowed except in iteration schemes
- 
- @item 
- String subtypes must have lower bound of 1
- 
- @item 
- Subtype of Boolean cannot have constraint
- 
- @item 
- At most one tagged type or extension per package
- 
- @item 
- Interface is not allowed
- 
- @item 
- Character literal cannot be prefixed (selector name cannot be character literal)
- 
- @item 
- Record aggregate cannot contain 'others'
- 
- @item 
- Component association in record aggregate must contain a single choice
- 
- @item 
- Ancestor part cannot be a type mark
- 
- @item 
- Attributes 'Image, 'Width and 'Value not allowed
- 
- @item 
- Functions may not update globals
- 
- @item 
- Subprograms may not contain direct calls to themselves (prevents recursion within unit)
- 
- @item 
- Call to subprogram not allowed in same unit before body has been seen (prevents recursion within unit)
- @end itemize
- 
- The following restrictions are enforced, but note that they are actually more
- strict that the latest SPARK 2005 language definition:
- 
- 
- @itemize *
- 
- @item 
- No derived types other than tagged type extensions
- 
- @item 
- Subtype of unconstrained array must have constraint
- @end itemize
- 
- This list summarises the main SPARK 2005 language rules that are not
- currently checked by the SPARK_05 restriction:
- 
- 
- @itemize *
- 
- @item 
- SPARK 2005 annotations are treated as comments so are not checked at all
- 
- @item 
- Based real literals not allowed
- 
- @item 
- Objects cannot be initialized at declaration by calls to user-defined functions
- 
- @item 
- Objects cannot be initialized at declaration by assignments from variables
- 
- @item 
- Objects cannot be initialized at declaration by assignments from indexed/selected components
- 
- @item 
- Ranges shall not be null
- 
- @item 
- A fixed point delta expression must be a simple expression
- 
- @item 
- Restrictions on where renaming declarations may be placed
- 
- @item 
- Externals of mode 'out' cannot be referenced
- 
- @item 
- Externals of mode 'in' cannot be updated
- 
- @item 
- Loop with no iteration scheme or exits only allowed as last statement in main program or task
- 
- @item 
- Subprogram cannot have parent unit name
- 
- @item 
- SPARK 2005 inherited subprogram must be prefixed with overriding
- 
- @item 
- External variables (or functions that reference them) may not be passed as actual parameters
- 
- @item 
- Globals must be explicitly mentioned in contract
- 
- @item 
- Deferred constants cannot be completed by pragma Import
- 
- @item 
- Package initialization cannot read/write variables from other packages
- 
- @item 
- Prefix not allowed for entities that are directly visible
- 
- @item 
- Identifier declaration can't override inherited package name
- 
- @item 
- Cannot use Standard or other predefined packages as identifiers
- 
- @item 
- After renaming, cannot use the original name
- 
- @item 
- Subprograms can only be renamed to remove package prefix
- 
- @item 
- Pragma import must be immediately after entity it names
- 
- @item 
- No mutual recursion between multiple units (this can be checked with gnatcheck)
- @end itemize
- 
- Note that if a unit is compiled in Ada 95 mode with the SPARK 2005 restriction,
- violations will be reported for constructs forbidden in SPARK 95,
- instead of SPARK 2005.
- 
  @node Implementation Advice,Implementation Defined Characteristics,Standard and Implementation Defined Restrictions,Top
! @anchor{gnat_rm/implementation_advice doc}@anchor{214}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a}@anchor{gnat_rm/implementation_advice id1}@anchor{215}
  @chapter Implementation Advice
  
  
--- 13408,13415 ----
  gnatprove -P project.gpr --mode=check_all
  @end example
  
  @node Implementation Advice,Implementation Defined Characteristics,Standard and Implementation Defined Restrictions,Top
! @anchor{gnat_rm/implementation_advice doc}@anchor{216}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a}@anchor{gnat_rm/implementation_advice id1}@anchor{217}
  @chapter Implementation Advice
  
  
*************** case the text describes what GNAT does a
*** 13934,13940 ****
  @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{216}
  @section RM 1.1.3(20): Error Detection
  
  
--- 13506,13512 ----
  @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{218}
  @section RM 1.1.3(20): Error Detection
  
  
*************** or diagnosed at compile time.
*** 13951,13957 ****
  @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{217}
  @section RM 1.1.3(31): Child Units
  
  
--- 13523,13529 ----
  @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{219}
  @section RM 1.1.3(31): Child Units
  
  
*************** Followed.
*** 13967,13973 ****
  @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{218}
  @section RM 1.1.5(12): Bounded Errors
  
  
--- 13539,13545 ----
  @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{21a}
  @section RM 1.1.5(12): Bounded Errors
  
  
*************** runtime.
*** 13984,13990 ****
  @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{219}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{21a}
  @section RM 2.8(16): Pragmas
  
  
--- 13556,13562 ----
  @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{21b}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{21c}
  @section RM 2.8(16): Pragmas
  
  
*************** that this advice not be followed.  For d
*** 14097,14103 ****
  @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{21b}
  @section RM 2.8(17-19): Pragmas
  
  
--- 13669,13675 ----
  @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{21d}
  @section RM 2.8(17-19): Pragmas
  
  
*************** replacing @code{library_items}."
*** 14118,14131 ****
  @end itemize
  @end quotation
  
! See @ref{21a,,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{21c}
  @section RM 3.5.2(5): Alternative Character Sets
  
  
--- 13690,13703 ----
  @end itemize
  @end quotation
  
! See @ref{21c,,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{21e}
  @section RM 3.5.2(5): Alternative Character Sets
  
  
*************** there is no such restriction.
*** 14153,14159 ****
  @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{21d}
  @section RM 3.5.4(28): Integer Types
  
  
--- 13725,13731 ----
  @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{21f}
  @section RM 3.5.4(28): Integer Types
  
  
*************** are supported for convenient interface t
*** 14172,14178 ****
  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{21e}
  @section RM 3.5.4(29): Integer Types
  
  
--- 13744,13750 ----
  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{220}
  @section RM 3.5.4(29): Integer Types
  
  
*************** Followed.
*** 14188,14194 ****
  @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{21f}
  @section RM 3.5.5(8): Enumeration Values
  
  
--- 13760,13766 ----
  @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{221}
  @section RM 3.5.5(8): Enumeration Values
  
  
*************** Followed.
*** 14208,14214 ****
  @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{220}
  @section RM 3.5.7(17): Float Types
  
  
--- 13780,13786 ----
  @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{222}
  @section RM 3.5.7(17): Float Types
  
  
*************** former provides improved compatibility w
*** 14226,14236 ****
  supporting this type.  The latter corresponds to the highest precision
  floating-point type supported by the hardware.  On most machines, this
  will be the same as @code{Long_Float}, but on some machines, it will
! correspond to the IEEE extended form.  The notable case is all ia32
! (x86) implementations, where @code{Long_Long_Float} corresponds to
! the 80-bit extended precision format supported in hardware on this
! processor.  Note that the 128-bit format on SPARC is not supported,
! since this is a software rather than a hardware format.
  
  @geindex Multidimensional arrays
  
--- 13798,13808 ----
  supporting this type.  The latter corresponds to the highest precision
  floating-point type supported by the hardware.  On most machines, this
  will be the same as @code{Long_Float}, but on some machines, it will
! correspond to the IEEE extended form.  The notable case is all x86
! implementations, where @code{Long_Long_Float} corresponds to the 80-bit
! extended precision format supported in hardware on this processor.
! Note that the 128-bit format on SPARC is not supported, since this
! is a software rather than a hardware format.
  
  @geindex Multidimensional arrays
  
*************** since this is a software rather than a h
*** 14238,14244 ****
  @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{221}
  @section RM 3.6.2(11): Multidimensional Arrays
  
  
--- 13810,13816 ----
  @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{223}
  @section RM 3.6.2(11): Multidimensional Arrays
  
  
*************** Followed.
*** 14256,14262 ****
  @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{222}
  @section RM 9.6(30-31): Duration'Small
  
  
--- 13828,13834 ----
  @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{224}
  @section RM 9.6(30-31): Duration'Small
  
  
*************** it need not be the same time base as use
*** 14277,14283 ****
  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{223}
  @section RM 10.2.1(12): Consistent Representation
  
  
--- 13849,13855 ----
  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{225}
  @section RM 10.2.1(12): Consistent Representation
  
  
*************** advice without severely impacting effici
*** 14299,14305 ****
  @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{224}
  @section RM 11.4.1(19): Exception Information
  
  
--- 13871,13877 ----
  @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{226}
  @section RM 11.4.1(19): Exception Information
  
  
*************** Pragma @code{Discard_Names}.
*** 14330,14336 ****
  @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{225}
  @section RM 11.5(28): Suppression of Checks
  
  
--- 13902,13908 ----
  @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{227}
  @section RM 11.5(28): Suppression of Checks
  
  
*************** Followed.
*** 14345,14351 ****
  @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{226}
  @section RM 13.1 (21-24): Representation Clauses
  
  
--- 13917,13923 ----
  @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{228}
  @section RM 13.1 (21-24): Representation Clauses
  
  
*************** Followed.
*** 14394,14400 ****
  @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{227}
  @section RM 13.2(6-8): Packed Types
  
  
--- 13966,13972 ----
  @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{229}
  @section RM 13.2(6-8): Packed Types
  
  
*************** Followed.
*** 14433,14439 ****
  @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{228}
  @section RM 13.3(14-19): Address Clauses
  
  
--- 14005,14011 ----
  @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{22a}
  @section RM 13.3(14-19): Address Clauses
  
  
*************** Followed.
*** 14486,14492 ****
  @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{229}
  @section RM 13.3(29-35): Alignment Clauses
  
  
--- 14058,14064 ----
  @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{22b}
  @section RM 13.3(29-35): Alignment Clauses
  
  
*************** Followed.
*** 14543,14549 ****
  @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{22a}
  @section RM 13.3(42-43): Size Clauses
  
  
--- 14115,14121 ----
  @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{22c}
  @section RM 13.3(42-43): Size Clauses
  
  
*************** object's @code{Alignment} (if the @code{
*** 14561,14567 ****
  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{22b}
  @section RM 13.3(50-56): Size Clauses
  
  
--- 14133,14139 ----
  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{22d}
  @section RM 13.3(50-56): Size Clauses
  
  
*************** Followed.
*** 14612,14618 ****
  @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{22c}
  @section RM 13.3(71-73): Component Size Clauses
  
  
--- 14184,14190 ----
  @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{22e}
  @section RM 13.3(71-73): Component Size Clauses
  
  
*************** Followed.
*** 14646,14652 ****
  @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{22d}
  @section RM 13.4(9-10): Enumeration Representation Clauses
  
  
--- 14218,14224 ----
  @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{22f}
  @section RM 13.4(9-10): Enumeration Representation Clauses
  
  
*************** Followed.
*** 14668,14674 ****
  @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{22e}
  @section RM 13.5.1(17-22): Record Representation Clauses
  
  
--- 14240,14246 ----
  @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{230}
  @section RM 13.5.1(17-22): Record Representation Clauses
  
  
*************** and all mentioned features are implement
*** 14728,14734 ****
  @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{22f}
  @section RM 13.5.2(5): Storage Place Attributes
  
  
--- 14300,14306 ----
  @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{231}
  @section RM 13.5.2(5): Storage Place Attributes
  
  
*************** Followed.  There are no such components
*** 14748,14754 ****
  @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{230}
  @section RM 13.5.3(7-8): Bit Ordering
  
  
--- 14320,14326 ----
  @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{232}
  @section RM 13.5.3(7-8): Bit Ordering
  
  
*************** Thus non-default bit ordering is not sup
*** 14768,14774 ****
  @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{231}
  @section RM 13.7(37): Address as Private
  
  
--- 14340,14346 ----
  @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{233}
  @section RM 13.7(37): Address as Private
  
  
*************** Followed.
*** 14786,14792 ****
  @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{232}
  @section RM 13.7.1(16): Address Operations
  
  
--- 14358,14364 ----
  @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{234}
  @section RM 13.7.1(16): Address Operations
  
  
*************** operation raises @code{Program_Error}, s
*** 14804,14810 ****
  @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{233}
  @section RM 13.9(14-17): Unchecked Conversion
  
  
--- 14376,14382 ----
  @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{235}
  @section RM 13.9(14-17): Unchecked Conversion
  
  
*************** Followed.
*** 14848,14854 ****
  @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{234}
  @section RM 13.11(23-25): Implicit Heap Usage
  
  
--- 14420,14426 ----
  @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{236}
  @section RM 13.11(23-25): Implicit Heap Usage
  
  
*************** Followed.
*** 14899,14905 ****
  @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{235}
  @section RM 13.11.2(17): Unchecked Deallocation
  
  
--- 14471,14477 ----
  @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{237}
  @section RM 13.11.2(17): Unchecked Deallocation
  
  
*************** Followed.
*** 14914,14920 ****
  @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{236}
  @section RM 13.13.2(1.6): Stream Oriented Attributes
  
  
--- 14486,14492 ----
  @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{238}
  @section RM 13.13.2(1.6): Stream Oriented Attributes
  
  
*************** to the nearest factor or multiple of the
*** 14927,14940 ****
  multiple of the stream element size."
  @end quotation
  
! Followed, except that the number of stream elements is a power of 2.
  The Stream_Size may be used to override the default choice.
  
! However, such an implementation is based on direct binary
! representations and is therefore target- and endianness-dependent.  To
! address this issue, GNAT also supplies an alternate implementation of
! the stream attributes @code{Read} and @code{Write}, which uses the
! target-independent XDR standard representation for scalar types.
  
  @geindex XDR representation
  
--- 14499,14512 ----
  multiple of the stream element size."
  @end quotation
  
! Followed, except that the number of stream elements is 1, 2, 3, 4 or 8.
  The Stream_Size may be used to override the default choice.
  
! The default implementation is based on direct binary representations and is
! therefore target- and endianness-dependent.  To address this issue, GNAT also
! supplies an alternate implementation of the stream attributes @code{Read} and
! @code{Write}, which uses the target-independent XDR standard representation for
! scalar types. This XDR alternative can be enabled via the binder switch -xdr.
  
  @geindex XDR representation
  
*************** target-independent XDR standard represen
*** 14944,14975 ****
  
  @geindex Stream oriented attributes
  
- The XDR implementation is provided as an alternative body of the
- @code{System.Stream_Attributes} package, in the file
- @code{s-stratt-xdr.adb} in the GNAT library.
- There is no @code{s-stratt-xdr.ads} file.
- In order to install the XDR implementation, do the following:
- 
- 
- @itemize *
- 
- @item 
- Replace the default implementation of the
- @code{System.Stream_Attributes} package with the XDR implementation.
- For example on a Unix platform issue the commands:
- 
- @example
- $ mv s-stratt.adb s-stratt-default.adb
- $ mv s-stratt-xdr.adb s-stratt.adb
- @end example
- 
- @item 
- Rebuild the GNAT run-time library as documented in
- the @emph{GNAT and Libraries} section of the @cite{GNAT User's Guide}.
- @end itemize
- 
  @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{237}
  @section RM A.1(52): Names of Predefined Numeric Types
  
  
--- 14516,14523 ----
  
  @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{239}
  @section RM A.1(52): Names of Predefined Numeric Types
  
  
*************** Followed.
*** 14987,14993 ****
  @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{238}
  @section RM A.3.2(49): @code{Ada.Characters.Handling}
  
  
--- 14535,14541 ----
  @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{23a}
  @section RM A.3.2(49): @code{Ada.Characters.Handling}
  
  
*************** Followed.  GNAT provides no such localiz
*** 15004,15010 ****
  @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{239}
  @section RM A.4.4(106): Bounded-Length String Handling
  
  
--- 14552,14558 ----
  @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{23b}
  @section RM A.4.4(106): Bounded-Length String Handling
  
  
*************** Followed.  No implicit pointers or dynam
*** 15019,15025 ****
  @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{23a}
  @section RM A.5.2(46-47): Random Number Generation
  
  
--- 14567,14573 ----
  @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{23c}
  @section RM A.5.2(46-47): Random Number Generation
  
  
*************** condition here to hold true.
*** 15048,15054 ****
  @geindex Get_Immediate
  
  @node RM A 10 7 23 Get_Immediate,RM B 1 39-41 Pragma Export,RM A 5 2 46-47 Random Number Generation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{23b}
  @section RM A.10.7(23): @code{Get_Immediate}
  
  
--- 14596,14602 ----
  @geindex Get_Immediate
  
  @node RM A 10 7 23 Get_Immediate,RM B 1 39-41 Pragma Export,RM A 5 2 46-47 Random Number Generation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{23d}
  @section RM A.10.7(23): @code{Get_Immediate}
  
  
*************** this functionality.
*** 15072,15078 ****
  @geindex Export
  
  @node RM B 1 39-41 Pragma Export,RM B 2 12-13 Package Interfaces,RM A 10 7 23 Get_Immediate,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{23c}
  @section RM B.1(39-41): Pragma @code{Export}
  
  
--- 14620,14626 ----
  @geindex Export
  
  @node RM B 1 39-41 Pragma Export,RM B 2 12-13 Package Interfaces,RM A 10 7 23 Get_Immediate,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{23e}
  @section RM B.1(39-41): Pragma @code{Export}
  
  
*************** Followed.
*** 15120,15126 ****
  @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{23d}
  @section RM B.2(12-13): Package @code{Interfaces}
  
  
--- 14668,14674 ----
  @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{23f}
  @section RM B.2(12-13): Package @code{Interfaces}
  
  
*************** Followed.  GNAT provides all the package
*** 15150,15156 ****
  @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{23e}
  @section RM B.3(63-71): Interfacing with C
  
  
--- 14698,14704 ----
  @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{240}
  @section RM B.3(63-71): Interfacing with C
  
  
*************** Followed.
*** 15238,15244 ****
  @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{23f}
  @section RM B.4(95-98): Interfacing with COBOL
  
  
--- 14786,14792 ----
  @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{241}
  @section RM B.4(95-98): Interfacing with COBOL
  
  
*************** Followed.
*** 15279,15285 ****
  @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{240}
  @section RM B.5(22-26): Interfacing with Fortran
  
  
--- 14827,14833 ----
  @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{242}
  @section RM B.5(22-26): Interfacing with Fortran
  
  
*************** Followed.
*** 15330,15336 ****
  @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{241}
  @section RM C.1(3-5): Access to Machine Operations
  
  
--- 14878,14884 ----
  @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{243}
  @section RM C.1(3-5): Access to Machine Operations
  
  
*************** object that is specified as exported."
*** 15365,15371 ****
  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{242}
  @section RM C.1(10-16): Access to Machine Operations
  
  
--- 14913,14919 ----
  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{244}
  @section RM C.1(10-16): Access to Machine Operations
  
  
*************** Followed on any target supporting such o
*** 15426,15432 ****
  @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{243}
  @section RM C.3(28): Interrupt Support
  
  
--- 14974,14980 ----
  @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{245}
  @section RM C.3(28): Interrupt Support
  
  
*************** of interrupt blocking.
*** 15444,15450 ****
  @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{244}
  @section RM C.3.1(20-21): Protected Procedure Handlers
  
  
--- 14992,14998 ----
  @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{246}
  @section RM C.3.1(20-21): Protected Procedure Handlers
  
  
*************** Followed.  Compile time warnings are giv
*** 15470,15476 ****
  @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{245}
  @section RM C.3.2(25): Package @code{Interrupts}
  
  
--- 15018,15024 ----
  @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{247}
  @section RM C.3.2(25): Package @code{Interrupts}
  
  
*************** Followed.
*** 15488,15494 ****
  @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{246}
  @section RM C.4(14): Pre-elaboration Requirements
  
  
--- 15036,15042 ----
  @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{248}
  @section RM C.4(14): Pre-elaboration Requirements
  
  
*************** Followed.  Executable code is generated
*** 15504,15510 ****
  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{247}
  @section RM C.5(8): Pragma @code{Discard_Names}
  
  
--- 15052,15058 ----
  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{249}
  @section RM C.5(8): Pragma @code{Discard_Names}
  
  
*************** Followed.
*** 15522,15528 ****
  @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{248}
  @section RM C.7.2(30): The Package Task_Attributes
  
  
--- 15070,15076 ----
  @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{24a}
  @section RM C.7.2(30): The Package Task_Attributes
  
  
*************** Not followed.  This implementation is no
*** 15543,15549 ****
  @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{249}
  @section RM D.3(17): Locking Policies
  
  
--- 15091,15097 ----
  @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{24b}
  @section RM D.3(17): Locking Policies
  
  
*************** whose names (@code{Inheritance_Locking}
*** 15560,15566 ****
  @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{24a}
  @section RM D.4(16): Entry Queuing Policies
  
  
--- 15108,15114 ----
  @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{24c}
  @section RM D.4(16): Entry Queuing Policies
  
  
*************** Followed.  No such implementation-define
*** 15575,15581 ****
  @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{24b}
  @section RM D.6(9-10): Preemptive Abort
  
  
--- 15123,15129 ----
  @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{24d}
  @section RM D.6(9-10): Preemptive Abort
  
  
*************** Followed.
*** 15601,15607 ****
  @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{24c}
  @section RM D.7(21): Tasking Restrictions
  
  
--- 15149,15155 ----
  @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{24e}
  @section RM D.7(21): Tasking Restrictions
  
  
*************** pragma @code{Profile (Restricted)} for m
*** 15620,15626 ****
  @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{24d}
  @section RM D.8(47-49): Monotonic Time
  
  
--- 15168,15174 ----
  @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{24f}
  @section RM D.8(47-49): Monotonic Time
  
  
*************** Followed.
*** 15655,15661 ****
  @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{24e}
  @section RM E.5(28-29): Partition Communication Subsystem
  
  
--- 15203,15209 ----
  @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{250}
  @section RM E.5(28-29): Partition Communication Subsystem
  
  
*************** GNAT.
*** 15683,15689 ****
  @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{24f}
  @section RM F(7): COBOL Support
  
  
--- 15231,15237 ----
  @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{251}
  @section RM F(7): COBOL Support
  
  
*************** Followed.
*** 15703,15709 ****
  @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{250}
  @section RM F.1(2): Decimal Radix Support
  
  
--- 15251,15257 ----
  @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{252}
  @section RM F.1(2): Decimal Radix Support
  
  
*************** representations.
*** 15719,15725 ****
  @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{251}
  @section RM G: Numerics
  
  
--- 15267,15273 ----
  @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{253}
  @section RM G: Numerics
  
  
*************** Followed.
*** 15739,15745 ****
  @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{252}
  @section RM G.1.1(56-58): Complex Types
  
  
--- 15287,15293 ----
  @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{254}
  @section RM G.1.1(56-58): Complex Types
  
  
*************** Followed.
*** 15801,15807 ****
  @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{253}
  @section RM G.1.2(49): Complex Elementary Functions
  
  
--- 15349,15355 ----
  @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{255}
  @section RM G.1.2(49): Complex Elementary Functions
  
  
*************** Followed.
*** 15823,15829 ****
  @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{254}
  @section RM G.2.4(19): Accuracy Requirements
  
  
--- 15371,15377 ----
  @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{256}
  @section RM G.2.4(19): Accuracy Requirements
  
  
*************** Followed.
*** 15847,15853 ****
  @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{255}
  @section RM G.2.6(15): Complex Arithmetic Accuracy
  
  
--- 15395,15401 ----
  @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{257}
  @section RM G.2.6(15): Complex Arithmetic Accuracy
  
  
*************** Followed.
*** 15865,15871 ****
  @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{256}
  @section RM H.6(15/2): Pragma Partition_Elaboration_Policy
  
  
--- 15413,15419 ----
  @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{258}
  @section RM H.6(15/2): Pragma Partition_Elaboration_Policy
  
  
*************** immediately terminated."
*** 15880,15886 ****
  Not followed.
  
  @node Implementation Defined Characteristics,Intrinsic Subprograms,Implementation Advice,Top
! @anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b}@anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{257}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{258}
  @chapter Implementation Defined Characteristics
  
  
--- 15428,15434 ----
  Not followed.
  
  @node Implementation Defined Characteristics,Intrinsic Subprograms,Implementation Advice,Top
! @anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b}@anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{259}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{25a}
  @chapter Implementation Defined Characteristics
  
  
*************** Manual, and are summarized in Annex M.
*** 15893,15900 ****
  A requirement for conforming Ada compilers is that they provide
  documentation describing how the implementation deals with each of these
  issues.  In this chapter you will find each point in Annex M listed,
! followed by a description of how GNAT
! handles the implementation dependence.
  
  You can use this chapter as a guide to minimizing implementation
  dependent features in your programs if portability to other compilers
--- 15441,15447 ----
  A requirement for conforming Ada compilers is that they provide
  documentation describing how the implementation deals with each of these
  issues.  In this chapter you will find each point in Annex M listed,
! followed by a description of how GNAT handles the implementation dependence.
  
  You can use this chapter as a guide to minimizing implementation
  dependent features in your programs if portability to other compilers
*************** further details.
*** 16029,16035 ****
  @end itemize
  
  
! @multitable {xxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @headitem
  
  Type
--- 15576,15582 ----
  @end itemize
  
  
! @multitable {xxxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @headitem
  
  Type
*************** Representation
*** 16044,16050 ****
  
  @tab
  
! 8 bit signed
  
  @item
  
--- 15591,15597 ----
  
  @tab
  
! 8-bit signed
  
  @item
  
*************** Representation
*** 16052,16058 ****
  
  @tab
  
! (Short) 16 bit signed
  
  @item
  
--- 15599,15605 ----
  
  @tab
  
! 16-bit signed
  
  @item
  
*************** Representation
*** 16060,16066 ****
  
  @tab
  
! 32 bit signed
  
  @item
  
--- 15607,15613 ----
  
  @tab
  
! 32-bit signed
  
  @item
  
*************** Representation
*** 16068,16076 ****
  
  @tab
  
! 64 bit signed (on most 64 bit targets,
! depending on the C definition of long).
! 32 bit signed (all other targets)
  
  @item
  
--- 15615,15623 ----
  
  @tab
  
! 64-bit signed (on most 64-bit targets,
! depending on the C definition of long)
! 32-bit signed (on all other targets)
  
  @item
  
*************** depending on the C definition of long).
*** 16078,16084 ****
  
  @tab
  
! 64 bit signed
  
  @end multitable
  
--- 15625,15640 ----
  
  @tab
  
! 64-bit signed
! 
! @item
! 
! @emph{Long_Long_Long_Integer}
! 
! @tab
! 
! 128-bit signed (on 64-bit targets)
! 64-bit signed (on 32-bit targets)
  
  @end multitable
  
*************** Representation
*** 16173,16179 ****
  "The small of an ordinary fixed point type.  See 3.5.9(8)."
  @end itemize
  
! @code{Fine_Delta} is 2**(-63)
  
  
  @itemize *
--- 15729,15735 ----
  "The small of an ordinary fixed point type.  See 3.5.9(8)."
  @end itemize
  
! The small is the largest power of two that does not exceed the delta.
  
  
  @itemize *
*************** Representation
*** 16183,16194 ****
  supported for fixed point types.  See 3.5.9(10)."
  @end itemize
  
! Any combinations are permitted that do not result in a small less than
! @code{Fine_Delta} and do not result in a mantissa larger than 63 bits.
! If the mantissa is larger than 53 bits on machines where Long_Long_Float
! is 64 bits (true of all architectures except ia32), then the output from
! Text_IO is accurate to only 53 bits, rather than the full mantissa.  This
! is because floating-point conversions are used to convert fixed point.
  
  
  @itemize *
--- 15739,15765 ----
  supported for fixed point types.  See 3.5.9(10)."
  @end itemize
  
! For an ordinary fixed point type, on 32-bit platforms, the small must lie in
! 2.0**(-80) .. 2.0**80 and the range in -9.0E+36 .. 9.0E+36; any combination
! is permitted that does not result in a mantissa larger than 63 bits.
! 
! On 64-bit platforms, the small must lie in 2.0**(-127) .. 2.0**127 and the
! range in -1.0E+76 .. 1.0E+76; any combination is permitted that does not
! result in a mantissa larger than 63 bits, and any combination is permitted
! that results in a mantissa between 64 and 127 bits if the small is the
! ratio of two integers that lie in 1 .. 2.0**127.
! 
! If the small is the ratio of two integers with 64-bit magnitude on 32-bit
! platforms and 128-bit magnitude on 64-bit platforms, which is the case if
! no @code{small} clause is provided, then the operations of the fixed point
! type are entirely implemented by means of integer instructions.  In the
! other cases, some operations, in particular input and output, may be
! implemented by means of floating-point instructions and may be affected
! by accuracy issues on architectures other than x86.
! 
! For a decimal fixed point type, on 32-bit platforms, the small must lie in
! 1.0E-18 .. 1.0E+18 and the digits in 1 .. 18.  On 64-bit platforms, the
! small must lie in 1.0E-38 .. 1.0E+38 and the digits in 1 .. 38.
  
  
  @itemize *
*************** When the @code{Pattern} parameter is not
*** 17076,17082 ****
  according to the syntax of regular expressions as defined in the
  @code{GNAT.Regexp} package.
  
! See @ref{259,,GNAT.Regexp (g-regexp.ads)}.
  
  
  @itemize *
--- 16647,16653 ----
  according to the syntax of regular expressions as defined in the
  @code{GNAT.Regexp} package.
  
! See @ref{25b,,GNAT.Regexp (g-regexp.ads)}.
  
  
  @itemize *
*************** perfect result set.  See G.2.3(22)."
*** 18010,18016 ****
  
  The result is only defined to be in the perfect result set if the result
  can be computed by a single scaling operation involving a scale factor
! representable in 64-bits.
  
  
  @itemize *
--- 17581,17587 ----
  
  The result is only defined to be in the perfect result set if the result
  can be computed by a single scaling operation involving a scale factor
! representable in 64 bits.
  
  
  @itemize *
*************** H.4(27)."
*** 18124,18130 ****
  There are no restrictions on pragma @code{Restrictions}.
  
  @node Intrinsic Subprograms,Representation Clauses and Pragmas,Implementation Defined Characteristics,Top
! @anchor{gnat_rm/intrinsic_subprograms doc}@anchor{25a}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{25b}
  @chapter Intrinsic Subprograms
  
  
--- 17695,17701 ----
  There are no restrictions on pragma @code{Restrictions}.
  
  @node Intrinsic Subprograms,Representation Clauses and Pragmas,Implementation Defined Characteristics,Top
! @anchor{gnat_rm/intrinsic_subprograms doc}@anchor{25c}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{25d}
  @chapter Intrinsic Subprograms
  
  
*************** Ada standard does not require Ada compil
*** 18162,18168 ****
  @end menu
  
  @node Intrinsic Operators,Compilation_ISO_Date,,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id2}@anchor{25c}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{25d}
  @section Intrinsic Operators
  
  
--- 17733,17739 ----
  @end menu
  
  @node Intrinsic Operators,Compilation_ISO_Date,,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id2}@anchor{25e}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{25f}
  @section Intrinsic Operators
  
  
*************** It is also possible to specify such oper
*** 18193,18199 ****
  full views are appropriate arithmetic types.
  
  @node Compilation_ISO_Date,Compilation_Date,Intrinsic Operators,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id3}@anchor{25e}@anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{25f}
  @section Compilation_ISO_Date
  
  
--- 17764,17770 ----
  full views are appropriate arithmetic types.
  
  @node Compilation_ISO_Date,Compilation_Date,Intrinsic Operators,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id3}@anchor{260}@anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{261}
  @section Compilation_ISO_Date
  
  
*************** application program should simply call t
*** 18207,18213 ****
  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{260}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{261}
  @section Compilation_Date
  
  
--- 17778,17784 ----
  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{262}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{263}
  @section Compilation_Date
  
  
*************** Same as Compilation_ISO_Date, except the
*** 18217,18223 ****
  MMM DD YYYY.
  
  @node Compilation_Time,Enclosing_Entity,Compilation_Date,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{262}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{263}
  @section Compilation_Time
  
  
--- 17788,17794 ----
  MMM DD YYYY.
  
  @node Compilation_Time,Enclosing_Entity,Compilation_Date,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{264}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{265}
  @section Compilation_Time
  
  
*************** application program should simply call t
*** 18231,18237 ****
  the current compilation (in local time format HH:MM:SS).
  
  @node Enclosing_Entity,Exception_Information,Compilation_Time,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id6}@anchor{264}@anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{265}
  @section Enclosing_Entity
  
  
--- 17802,17808 ----
  the current compilation (in local time format HH:MM:SS).
  
  @node Enclosing_Entity,Exception_Information,Compilation_Time,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id6}@anchor{266}@anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{267}
  @section Enclosing_Entity
  
  
*************** application program should simply call t
*** 18245,18251 ****
  the current subprogram, package, task, entry, or protected subprogram.
  
  @node Exception_Information,Exception_Message,Enclosing_Entity,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id7}@anchor{266}@anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{267}
  @section Exception_Information
  
  
--- 17816,17822 ----
  the current subprogram, package, task, entry, or protected subprogram.
  
  @node Exception_Information,Exception_Message,Enclosing_Entity,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id7}@anchor{268}@anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{269}
  @section Exception_Information
  
  
*************** so an application program should simply
*** 18259,18265 ****
  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{268}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{269}
  @section Exception_Message
  
  
--- 17830,17836 ----
  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{26a}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{26b}
  @section Exception_Message
  
  
*************** so an application program should simply
*** 18273,18279 ****
  the message associated with the current exception.
  
  @node Exception_Name,File,Exception_Message,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{26a}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{26b}
  @section Exception_Name
  
  
--- 17844,17850 ----
  the message associated with the current exception.
  
  @node Exception_Name,File,Exception_Message,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{26c}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{26d}
  @section Exception_Name
  
  
*************** so an application program should simply
*** 18287,18293 ****
  the name of the current exception.
  
  @node File,Line,Exception_Name,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id10}@anchor{26c}@anchor{gnat_rm/intrinsic_subprograms file}@anchor{26d}
  @section File
  
  
--- 17858,17864 ----
  the name of the current exception.
  
  @node File,Line,Exception_Name,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id10}@anchor{26e}@anchor{gnat_rm/intrinsic_subprograms file}@anchor{26f}
  @section File
  
  
*************** application program should simply call t
*** 18301,18307 ****
  file.
  
  @node Line,Shifts and Rotates,File,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id11}@anchor{26e}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{26f}
  @section Line
  
  
--- 17872,17878 ----
  file.
  
  @node Line,Shifts and Rotates,File,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id11}@anchor{270}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{271}
  @section Line
  
  
*************** application program should simply call t
*** 18315,18321 ****
  source line.
  
  @node Shifts and Rotates,Source_Location,Line,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{270}@anchor{gnat_rm/intrinsic_subprograms id12}@anchor{271}
  @section Shifts and Rotates
  
  
--- 17886,17892 ----
  source line.
  
  @node Shifts and Rotates,Source_Location,Line,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{272}@anchor{gnat_rm/intrinsic_subprograms id12}@anchor{273}
  @section Shifts and Rotates
  
  
*************** The formal parameter names can be anythi
*** 18351,18360 ****
  
  A more convenient way of providing these shift operators is to use
  the Provide_Shift_Operators pragma, which provides the function declarations
! and corresponding pragma Import's for all five shift functions.
  
  @node Source_Location,,Shifts and Rotates,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{272}@anchor{gnat_rm/intrinsic_subprograms id13}@anchor{273}
  @section Source_Location
  
  
--- 17922,17933 ----
  
  A more convenient way of providing these shift operators is to use
  the Provide_Shift_Operators pragma, which provides the function declarations
! and corresponding pragma Import's for all five shift functions. Note that in
! using these provided shift operations, shifts performed on negative numbers
! will result in modification of the sign bit.
  
  @node Source_Location,,Shifts and Rotates,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{274}@anchor{gnat_rm/intrinsic_subprograms id13}@anchor{275}
  @section Source_Location
  
  
*************** application program should simply call t
*** 18368,18374 ****
  source file location.
  
  @node Representation Clauses and Pragmas,Standard Library Routines,Intrinsic Subprograms,Top
! @anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d}@anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{274}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{275}
  @chapter Representation Clauses and Pragmas
  
  
--- 17941,17947 ----
  source file location.
  
  @node Representation Clauses and Pragmas,Standard Library Routines,Intrinsic Subprograms,Top
! @anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d}@anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{276}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{277}
  @chapter Representation Clauses and Pragmas
  
  
*************** and this section describes the additiona
*** 18414,18420 ****
  @end menu
  
  @node Alignment Clauses,Size Clauses,,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{276}@anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{277}
  @section Alignment Clauses
  
  
--- 17987,17993 ----
  @end menu
  
  @node Alignment Clauses,Size Clauses,,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{278}@anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{279}
  @section Alignment Clauses
  
  
*************** For elementary types, the alignment is t
*** 18436,18442 ****
  objects of the type divided by @code{Storage_Unit},
  and the maximum alignment supported by the target.
  (This maximum alignment is given by the GNAT-specific attribute
! @code{Standard'Maximum_Alignment}; see @ref{191,,Attribute Maximum_Alignment}.)
  
  @geindex Maximum_Alignment attribute
  
--- 18009,18015 ----
  objects of the type divided by @code{Storage_Unit},
  and the maximum alignment supported by the target.
  (This maximum alignment is given by the GNAT-specific attribute
! @code{Standard'Maximum_Alignment}; see @ref{190,,Attribute Maximum_Alignment}.)
  
  @geindex Maximum_Alignment attribute
  
*************** assumption is non-portable, and other co
*** 18545,18551 ****
  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{278}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{279}
  @section Size Clauses
  
  
--- 18118,18124 ----
  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{27a}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{27b}
  @section Size Clauses
  
  
*************** type My_Boolean is new Boolean;
*** 18603,18614 ****
  for My_Boolean'Size use 32;
  @end example
  
! then values of this type will always be 32 bits long.  In the case of
! discrete types, the size can be increased up to 64 bits, with the effect
! that the entire specified field is used to hold the value, sign- or
! zero-extended as appropriate.  If more than 64 bits is specified, then
! padding space is allocated after the value, and a warning is issued that
! there are unused bits.
  
  Similarly the size of records and arrays may be increased, and the effect
  is to add padding bits after the value.  This also causes a warning message
--- 18176,18187 ----
  for My_Boolean'Size use 32;
  @end example
  
! then values of this type will always be 32-bit long.  In the case of discrete
! types, the size can be increased up to 64 bits on 32-bit targets and 128 bits
! on 64-bit targets, with the effect that the entire specified field is used to
! hold the value, sign- or zero-extended as appropriate.  If more than 64 bits
! or 128 bits resp. is specified, then padding space is allocated after the
! value, and a warning is issued that there are unused bits.
  
  Similarly the size of records and arrays may be increased, and the effect
  is to add padding bits after the value.  This also causes a warning message
*************** if it is known that a Size value can be
*** 18622,18628 ****
  type Integer.
  
  @node Storage_Size Clauses,Size of Variant Record Objects,Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{27a}@anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{27b}
  @section Storage_Size Clauses
  
  
--- 18195,18201 ----
  type Integer.
  
  @node Storage_Size Clauses,Size of Variant Record Objects,Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{27c}@anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{27d}
  @section Storage_Size Clauses
  
  
*************** Of course in practice, there will not be
*** 18695,18701 ****
  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{27c}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{27d}
  @section Size of Variant Record Objects
  
  
--- 18268,18274 ----
  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{27e}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{27f}
  @section Size of Variant Record Objects
  
  
*************** the maximum size, regardless of the curr
*** 18805,18811 ****
  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 id6}@anchor{27e}@anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{27f}
  @section Biased Representation
  
  
--- 18378,18384 ----
  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 id6}@anchor{280}@anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{281}
  @section Biased Representation
  
  
*************** biased representation can be used for al
*** 18843,18849 ****
  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{280}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{281}
  @section Value_Size and Object_Size Clauses
  
  
--- 18416,18422 ----
  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{282}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{283}
  @section Value_Size and Object_Size Clauses
  
  
*************** Value_Size
*** 19078,19084 ****
  
  Note: the entries marked '*' are not actually specified by the Ada
  Reference Manual, which has nothing to say about size in the dynamic
! case. What GNAT does is to allocate sufficient bits to accomodate any
  possible dynamic values for the bounds at run-time.
  
  So far, so good, but GNAT has to obey the RM rules, so the question is
--- 18651,18657 ----
  
  Note: the entries marked '*' are not actually specified by the Ada
  Reference Manual, which has nothing to say about size in the dynamic
! case. What GNAT does is to allocate sufficient bits to accommodate any
  possible dynamic values for the bounds at run-time.
  
  So far, so good, but GNAT has to obey the RM rules, so the question is
*************** definition clause forces biased represen
*** 19159,19165 ****
  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 id8}@anchor{282}@anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{283}
  @section Component_Size Clauses
  
  
--- 18732,18738 ----
  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 id8}@anchor{284}@anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{285}
  @section Component_Size Clauses
  
  
*************** of this subtype, and must be a multiple
*** 19172,19179 ****
  
  In addition, component size clauses are allowed which cause the array
  to be packed, by specifying a smaller value.  A first case is for
! component size values in the range 1 through 63.  The value specified
! must not be smaller than the Size of the subtype.  GNAT will accurately
  honor all packing requests in this range.  For example, if we have:
  
  @example
--- 18745,18753 ----
  
  In addition, component size clauses are allowed which cause the array
  to be packed, by specifying a smaller value.  A first case is for
! component size values in the range 1 through 63 on 32-bit targets,
! and 1 through 127 on 64-bit targets.  The value specified may not
! be smaller than the Size of the subtype.  GNAT will accurately
  honor all packing requests in this range.  For example, if we have:
  
  @example
*************** and a pragma Pack for the same array typ
*** 19206,19212 ****
  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{284}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{285}
  @section Bit_Order Clauses
  
  
--- 18780,18786 ----
  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{286}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{287}
  @section Bit_Order Clauses
  
  
*************** if desired.  The following section conta
*** 19312,19318 ****
  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 id10}@anchor{286}@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{287}
  @section Effect of Bit_Order on Byte Ordering
  
  
--- 18886,18892 ----
  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 id10}@anchor{288}@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{289}
  @section Effect of Bit_Order on Byte Ordering
  
  
*************** to set the boolean constant @code{Master
*** 19569,19575 ****
  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 pragma-pack-for-arrays}@anchor{288}@anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{289}
  @section Pragma Pack for Arrays
  
  
--- 19143,19149 ----
  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 pragma-pack-for-arrays}@anchor{28a}@anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{28b}
  @section Pragma Pack for Arrays
  
  
*************** Any small simple record type with a stat
*** 19593,19599 ****
  @end itemize
  
  For all these cases, if the component subtype size is in the range
! 1 through 64, then the effect of the pragma @code{Pack} is exactly as though a
  component size were specified giving the component subtype size.
  
  All other types are non-packable, they occupy an integral number of storage
--- 19167,19174 ----
  @end itemize
  
  For all these cases, if the component subtype size is in the range
! 1 through 63 on 32-bit targets, and 1 through 127 on 64-bit targets,
! then the effect of the pragma @code{Pack} is exactly as though a
  component size were specified giving the component subtype size.
  
  All other types are non-packable, they occupy an integral number of storage
*************** using an explicit @code{Component_Size}
*** 19623,19633 ****
  a warning, since the intention of the programmer is clear in this case.
  
  GNAT treats packed arrays in one of two ways.  If the size of the array is
! known at compile time and is less than 64 bits, then internally the array
! is represented as a single modular type, of exactly the appropriate number
! of bits.  If the length is greater than 63 bits, or is not known at compile
! time, then the packed array is represented as an array of bytes, and the
! length is always a multiple of 8 bits.
  
  Note that to represent a packed array as a modular type, the alignment must
  be suitable for the modular type involved. For example, on typical machines
--- 19198,19210 ----
  a warning, since the intention of the programmer is clear in this case.
  
  GNAT treats packed arrays in one of two ways.  If the size of the array is
! known at compile time and is at most 64 bits on 32-bit targets, and at most
! 128 bits on 64-bit targets, then internally the array is represented as a
! single modular type, of exactly the appropriate number of bits.  If the
! length is greater than 64 bits on 32-bit targets, and greater than 128
! bits on 64-bit targets, or is not known at compile time, then the packed
! array is represented as an array of bytes, and its length is always a
! multiple of 8 bits.
  
  Note that to represent a packed array as a modular type, the alignment must
  be suitable for the modular type involved. For example, on typical machines
*************** Here 31-bit packing is achieved as requi
*** 19686,19692 ****
  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 pragma-pack-for-records}@anchor{28a}@anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{28b}
  @section Pragma Pack for Records
  
  
--- 19263,19269 ----
  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 pragma-pack-for-records}@anchor{28c}@anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{28d}
  @section Pragma Pack for Records
  
  
*************** Components of the following types are co
*** 19703,19709 ****
  
  @item 
  Components of an elementary type are packable unless they are aliased,
! independent, or of an atomic type.
  
  @item 
  Small packed arrays, where the size is statically known, are represented
--- 19280,19286 ----
  
  @item 
  Components of an elementary type are packable unless they are aliased,
! independent or atomic.
  
  @item 
  Small packed arrays, where the size is statically known, are represented
*************** internally as modular integers, and so t
*** 19713,19722 ****
  Small simple records, where the size is statically known, are also packable.
  @end itemize
  
! For all these cases, if the @code{'Size} value is in the range 1 through 64, the
! components occupy the exact number of bits corresponding to this value
! and are packed with no padding bits, i.e. they can start on an arbitrary
! bit boundary.
  
  All other types are non-packable, they occupy an integral number of storage
  units and the only effect of pragma @code{Pack} is to remove alignment gaps.
--- 19290,19299 ----
  Small simple records, where the size is statically known, are also packable.
  @end itemize
  
! For all these cases, if the @code{'Size} value is in the range 1 through 64 on
! 32-bit targets, and 1 through 128 on 64-bit targets, the components occupy
! the exact number of bits corresponding to this value and are packed with no
! padding bits, i.e. they can start on an arbitrary bit boundary.
  
  All other types are non-packable, they occupy an integral number of storage
  units and the only effect of pragma @code{Pack} is to remove alignment gaps.
*************** end record;
*** 19743,19749 ****
  pragma Pack (X2);
  @end example
  
! The representation for the record @code{X2} is as follows:
  
  @example
  for X2'Size use 224;
--- 19320,19326 ----
  pragma Pack (X2);
  @end example
  
! The representation for the record @code{X2} is as follows on 32-bit targets:
  
  @example
  for X2'Size use 224;
*************** end record;
*** 19758,19777 ****
  @end example
  
  Studying this example, we see that the packable fields @code{L1}
! and @code{L2} are
! of length equal to their sizes, and placed at specific bit boundaries (and
! not byte boundaries) to
! eliminate padding.  But @code{L3} is of a non-packable float type (because
  it is aliased), so it is on the next appropriate alignment boundary.
  
  The next two fields are fully packable, so @code{L4} and @code{L5} are
  minimally packed with no gaps.  However, type @code{Rb2} is a packed
! array that is longer than 64 bits, so it is itself non-packable.  Thus
! the @code{L6} field is aligned to the next byte 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{28c}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{28d}
  @section Record Representation Clauses
  
  
--- 19335,19353 ----
  @end example
  
  Studying this example, we see that the packable fields @code{L1}
! and @code{L2} are of length equal to their sizes, and placed at
! specific bit boundaries (and not byte boundaries) to eliminate
! padding.  But @code{L3} is of a non-packable float type (because
  it is aliased), so it is on the next appropriate alignment boundary.
  
  The next two fields are fully packable, so @code{L4} and @code{L5} are
  minimally packed with no gaps.  However, type @code{Rb2} is a packed
! array that is longer than 64 bits, so it is itself non-packable on
! 32-bit targets.  Thus the @code{L6} field is aligned to the next byte
! 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{28e}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{28f}
  @section Record Representation Clauses
  
  
*************** clauses is that the size must be at leas
*** 19789,19795 ****
  (actually the Value_Size).  There are no restrictions due to alignment,
  and such components may freely cross storage boundaries.
  
! Packed arrays with a size up to and including 64 bits are represented
  internally using a modular type with the appropriate number of bits, and
  thus the same lack of restriction applies.  For example, if you declare:
  
--- 19365,19372 ----
  (actually the Value_Size).  There are no restrictions due to alignment,
  and such components may freely cross storage boundaries.
  
! Packed arrays with a size up to and including 64 bits on 32-bit targets,
! and up to and including 128 bits on 64-bit targets, are represented
  internally using a modular type with the appropriate number of bits, and
  thus the same lack of restriction applies.  For example, if you declare:
  
*************** for R'Size use 49;
*** 19802,19831 ****
  then a component clause for a component of type @code{R} may start on any
  specified bit boundary, and may specify a value of 49 bits or greater.
  
! For packed bit arrays that are longer than 64 bits, there are two
! cases. If the component size is a power of 2 (1,2,4,8,16,32 bits),
! including the important case of single bits or boolean values, then
! there are no limitations on placement of such components, and they
! may start and end at arbitrary bit boundaries.
  
! If the component size is not a power of 2 (e.g., 3 or 5), then
! an array of this type longer than 64 bits must always be placed on
! on a storage unit (byte) boundary and occupy an integral number
! of storage units (bytes). Any component clause that does not
! meet this requirement will be rejected.
  
! Any aliased component, or component of an aliased type, must
! have its normal alignment and size. A component clause that
! does not meet this requirement will be rejected.
  
  The tag field of a tagged type always occupies an address sized field at
  the start of the record.  No component clause may attempt to overlay this
  tag. When a tagged type appears as a component, the tag field must have
  proper alignment
  
! In the case of a record extension @code{T1}, of a type @code{T}, no component clause applied
! to the type @code{T1} can specify a storage location that would overlap the first
! @code{T'Size} bytes of the record.
  
  For all other component types, including non-bit-packed arrays,
  the component can be placed at an arbitrary bit boundary,
--- 19379,19408 ----
  then a component clause for a component of type @code{R} may start on any
  specified bit boundary, and may specify a value of 49 bits or greater.
  
! For packed bit arrays that are longer than 64 bits on 32-bit targets,
! and longer than 128 bits on 64-bit targets, there are two cases. If the
! component size is a power of 2 (1,2,4,8,16,32,64 bits), including the
! important case of single bits or boolean values, then there are no
! limitations on placement of such components, and they may start and
! end at arbitrary bit boundaries.
  
! If the component size is not a power of 2 (e.g., 3 or 5), then an array
! of this type must always be placed on on a storage unit (byte) boundary
! and occupy an integral number of storage units (bytes). Any component
! clause that does not meet this requirement will be rejected.
  
! Any aliased component, or component of an aliased type, must have its
! normal alignment and size. A component clause that does not meet this
! requirement will be rejected.
  
  The tag field of a tagged type always occupies an address sized field at
  the start of the record.  No component clause may attempt to overlay this
  tag. When a tagged type appears as a component, the tag field must have
  proper alignment
  
! In the case of a record extension @code{T1}, of a type @code{T}, no component
! clause applied to the type @code{T1} can specify a storage location that
! would overlap the first @code{T'Object_Size} bits of the record.
  
  For all other component types, including non-bit-packed arrays,
  the component can be placed at an arbitrary bit boundary,
*************** end record;
*** 19849,19863 ****
  @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{28e}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{28f}
  @section Handling of Records with Holes
  
  
  @geindex Handling of Records with Holes
  
  As a result of alignment considerations, records may contain "holes"
! or gaps
! which do not correspond to the data bits of any of the components.
  Record representation clauses can also result in holes in records.
  
  GNAT does not attempt to clear these holes, so in record objects,
--- 19426,19439 ----
  @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{290}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{291}
  @section Handling of Records with Holes
  
  
  @geindex Handling of Records with Holes
  
  As a result of alignment considerations, records may contain "holes"
! or gaps which do not correspond to the data bits of any of the components.
  Record representation clauses can also result in holes in records.
  
  GNAT does not attempt to clear these holes, so in record objects,
*************** for Hrec'Size use 64;
*** 19926,19932 ****
  @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{290}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{291}
  @section Enumeration Clauses
  
  
--- 19502,19508 ----
  @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{292}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{293}
  @section Enumeration Clauses
  
  
*************** the overhead of converting representatio
*** 19969,19975 ****
  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 id16}@anchor{292}@anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{293}
  @section Address Clauses
  
  
--- 19545,19551 ----
  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 id16}@anchor{294}@anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{295}
  @section Address Clauses
  
  
*************** then the program compiles without the wa
*** 20298,20304 ****
  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{294}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{295}
  @section Use of Address Clauses for Memory-Mapped I/O
  
  
--- 19874,19880 ----
  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{296}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{297}
  @section Use of Address Clauses for Memory-Mapped I/O
  
  
*************** provides the pragma @code{Volatile_Full_
*** 20356,20362 ****
  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 id18}@anchor{296}@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{297}
  @section Effect of Convention on Representation
  
  
--- 19932,19938 ----
  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 id18}@anchor{298}@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{299}
  @section Effect of Convention on Representation
  
  
*************** when one of these values is read, any no
*** 20434,20440 ****
  @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{298}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{299}
  @section Conventions and Anonymous Access Types
  
  
--- 20010,20016 ----
  @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{29a}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{29b}
  @section Conventions and Anonymous Access Types
  
  
*************** package ConvComp is
*** 20510,20516 ****
  @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 id20}@anchor{29a}@anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{29b}
  @section Determining the Representations chosen by GNAT
  
  
--- 20086,20092 ----
  @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 id20}@anchor{29c}@anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{29d}
  @section Determining the Representations chosen by GNAT
  
  
*************** generated by the compiler into the origi
*** 20662,20668 ****
  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 standard-library-routines}@anchor{e}@anchor{gnat_rm/standard_library_routines doc}@anchor{29c}@anchor{gnat_rm/standard_library_routines id1}@anchor{29d}
  @chapter Standard Library Routines
  
  
--- 20238,20244 ----
  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 standard-library-routines}@anchor{e}@anchor{gnat_rm/standard_library_routines doc}@anchor{29e}@anchor{gnat_rm/standard_library_routines id1}@anchor{29f}
  @chapter Standard Library Routines
  
  
*************** For packages in Interfaces and System, a
*** 21486,21492 ****
  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 the-implementation-of-standard-i-o}@anchor{f}@anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{29e}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{29f}
  @chapter The Implementation of Standard I/O
  
  
--- 21062,21068 ----
  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 the-implementation-of-standard-i-o}@anchor{f}@anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{2a0}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{2a1}
  @chapter The Implementation of Standard I/O
  
  
*************** these additional facilities are also des
*** 21538,21544 ****
  @end menu
  
  @node Standard I/O Packages,FORM Strings,,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2a0}@anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2a1}
  @section Standard I/O Packages
  
  
--- 21114,21120 ----
  @end menu
  
  @node Standard I/O Packages,FORM Strings,,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2a2}@anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2a3}
  @section Standard I/O Packages
  
  
*************** flush the common I/O streams and in part
*** 21609,21615 ****
  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{2a2}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2a3}
  @section FORM Strings
  
  
--- 21185,21191 ----
  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{2a4}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2a5}
  @section FORM Strings
  
  
*************** unrecognized keyword appears in a form s
*** 21635,21641 ****
  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{2a4}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2a5}
  @section Direct_IO
  
  
--- 21211,21217 ----
  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{2a6}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2a7}
  @section Direct_IO
  
  
*************** There is no limit on the size of Direct_
*** 21655,21661 ****
  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 sequential-io}@anchor{2a6}@anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2a7}
  @section Sequential_IO
  
  
--- 21231,21237 ----
  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 sequential-io}@anchor{2a8}@anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2a9}
  @section Sequential_IO
  
  
*************** using Stream_IO, and this is the preferr
*** 21702,21708 ****
  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{2a8}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2a9}
  @section Text_IO
  
  
--- 21278,21284 ----
  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{2aa}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2ab}
  @section Text_IO
  
  
*************** the file.
*** 21785,21791 ****
  @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{2aa}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2ab}
  @subsection Stream Pointer Positioning
  
  
--- 21361,21367 ----
  @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{2ac}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2ad}
  @subsection Stream Pointer Positioning
  
  
*************** between two Ada files, then the differen
*** 21821,21827 ****
  situations.
  
  @node Reading and Writing Non-Regular Files,Get_Immediate,Stream Pointer Positioning,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2ac}@anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2ad}
  @subsection Reading and Writing Non-Regular Files
  
  
--- 21397,21403 ----
  situations.
  
  @node Reading and Writing Non-Regular Files,Get_Immediate,Stream Pointer Positioning,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2ae}@anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2af}
  @subsection Reading and Writing Non-Regular Files
  
  
*************** to read data past that end of
*** 21872,21878 ****
  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{2ae}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2af}
  @subsection Get_Immediate
  
  
--- 21448,21454 ----
  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{2b0}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2b1}
  @subsection Get_Immediate
  
  
*************** possible), it is undefined whether the F
*** 21890,21896 ****
  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{2b0}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2b1}
  @subsection Treating Text_IO Files as Streams
  
  
--- 21466,21472 ----
  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{2b2}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2b3}
  @subsection Treating Text_IO Files as Streams
  
  
*************** skipped and the effect is similar to tha
*** 21906,21912 ****
  @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{2b2}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2b3}
  @subsection Text_IO Extensions
  
  
--- 21482,21488 ----
  @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{2b4}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2b5}
  @subsection Text_IO Extensions
  
  
*************** the string is to be read.
*** 21934,21940 ****
  @end itemize
  
  @node Text_IO Facilities for Unbounded Strings,,Text_IO Extensions,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2b4}@anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2b5}
  @subsection Text_IO Facilities for Unbounded Strings
  
  
--- 21510,21516 ----
  @end itemize
  
  @node Text_IO Facilities for Unbounded Strings,,Text_IO Extensions,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2b6}@anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2b7}
  @subsection Text_IO Facilities for Unbounded Strings
  
  
*************** files @code{a-szuzti.ads} and @code{a-sz
*** 21982,21988 ****
  @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 wide-text-io}@anchor{2b6}@anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2b7}
  @section Wide_Text_IO
  
  
--- 21558,21564 ----
  @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 wide-text-io}@anchor{2b8}@anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2b9}
  @section Wide_Text_IO
  
  
*************** input also causes Constraint_Error to be
*** 22229,22240 ****
  @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 stream-pointer-positioning-1}@anchor{2b8}@anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2b9}
  @subsection Stream Pointer Positioning
  
  
  @code{Ada.Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{2a9,,Text_IO}).  There is one additional
  case:
  
  If @code{Ada.Wide_Text_IO.Look_Ahead} reads a character outside the
--- 21805,21816 ----
  @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 stream-pointer-positioning-1}@anchor{2ba}@anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2bb}
  @subsection Stream Pointer Positioning
  
  
  @code{Ada.Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{2ab,,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
*** 22253,22259 ****
  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 reading-and-writing-non-regular-files-1}@anchor{2ba}@anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2bb}
  @subsection Reading and Writing Non-Regular Files
  
  
--- 21829,21835 ----
  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 reading-and-writing-non-regular-files-1}@anchor{2bc}@anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2bd}
  @subsection Reading and Writing Non-Regular Files
  
  
*************** treated as data characters), and @code{E
*** 22264,22270 ****
  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{2bc}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2bd}
  @section Wide_Wide_Text_IO
  
  
--- 21840,21846 ----
  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{2be}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2bf}
  @section Wide_Wide_Text_IO
  
  
*************** input also causes Constraint_Error to be
*** 22433,22444 ****
  @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 stream-pointer-positioning-2}@anchor{2be}@anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2bf}
  @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{2a9,,Text_IO}).  There is one additional
  case:
  
  If @code{Ada.Wide_Wide_Text_IO.Look_Ahead} reads a character outside the
--- 22009,22020 ----
  @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 stream-pointer-positioning-2}@anchor{2c0}@anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2c1}
  @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{2ab,,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
*** 22457,22463 ****
  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{2c0}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2c1}
  @subsection Reading and Writing Non-Regular Files
  
  
--- 22033,22039 ----
  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{2c2}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2c3}
  @subsection Reading and Writing Non-Regular Files
  
  
*************** treated as data characters), and @code{E
*** 22468,22474 ****
  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{2c2}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2c3}
  @section Stream_IO
  
  
--- 22044,22050 ----
  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{2c4}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2c5}
  @section Stream_IO
  
  
*************** manner described for stream attributes.
*** 22490,22496 ****
  @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{2c4}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2c5}
  @section Text Translation
  
  
--- 22066,22072 ----
  @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{2c6}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2c7}
  @section Text Translation
  
  
*************** mode. (corresponds to_O_U16TEXT).
*** 22524,22530 ****
  @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{2c6}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2c7}
  @section Shared Files
  
  
--- 22100,22106 ----
  @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{2c8}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2c9}
  @section Shared Files
  
  
*************** heterogeneous input-output.  Although th
*** 22587,22593 ****
  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{2c8}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2c9}
  @section Filenames encoding
  
  
--- 22163,22169 ----
  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{2ca}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2cb}
  @section Filenames encoding
  
  
*************** platform. On the other Operating Systems
*** 22627,22633 ****
  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{2ca}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2cb}
  @section File content encoding
  
  
--- 22203,22209 ----
  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{2cc}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2cd}
  @section File content encoding
  
  
*************** Unicode 8-bit encoding
*** 22660,22666 ****
  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 open-modes}@anchor{2cc}@anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2cd}
  @section Open Modes
  
  
--- 22236,22242 ----
  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 open-modes}@anchor{2ce}@anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2cf}
  @section Open Modes
  
  
*************** subsequently requires switching from rea
*** 22763,22769 ****
  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 operations-on-c-streams}@anchor{2ce}@anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2cf}
  @section Operations on C Streams
  
  
--- 22339,22345 ----
  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 operations-on-c-streams}@anchor{2d0}@anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2d1}
  @section Operations on C Streams
  
  
*************** end Interfaces.C_Streams;
*** 22923,22929 ****
  @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 interfacing-to-c-streams}@anchor{2d0}@anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2d1}
  @section Interfacing to C Streams
  
  
--- 22499,22505 ----
  @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 interfacing-to-c-streams}@anchor{2d2}@anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2d3}
  @section Interfacing to C Streams
  
  
*************** imported from a C program, allowing an A
*** 23016,23022 ****
  existing C file.
  
  @node The GNAT Library,Interfacing to Other Languages,The Implementation of Standard I/O,Top
! @anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10}@anchor{gnat_rm/the_gnat_library doc}@anchor{2d2}@anchor{gnat_rm/the_gnat_library id1}@anchor{2d3}
  @chapter The GNAT Library
  
  
--- 22592,22598 ----
  existing C file.
  
  @node The GNAT Library,Interfacing to Other Languages,The Implementation of Standard I/O,Top
! @anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10}@anchor{gnat_rm/the_gnat_library doc}@anchor{2d4}@anchor{gnat_rm/the_gnat_library id1}@anchor{2d5}
  @chapter The GNAT Library
  
  
*************** of GNAT, and will generate a warning mes
*** 23078,23083 ****
--- 22654,22660 ----
  * Ada.Strings.Unbounded.Text_IO (a-suteio.ads): Ada Strings Unbounded Text_IO a-suteio ads. 
  * Ada.Strings.Wide_Unbounded.Wide_Text_IO (a-swuwti.ads): Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads. 
  * Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO (a-szuzti.ads): Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads. 
+ * Ada.Task_Initialization (a-tasini.ads): Ada Task_Initialization a-tasini ads. 
  * Ada.Text_IO.C_Streams (a-tiocst.ads): Ada Text_IO C_Streams a-tiocst ads. 
  * Ada.Text_IO.Reset_Standard_Files (a-tirsfi.ads): Ada Text_IO Reset_Standard_Files a-tirsfi ads. 
  * Ada.Wide_Characters.Unicode (a-wichun.ads): Ada Wide_Characters Unicode a-wichun ads. 
*************** of GNAT, and will generate a warning mes
*** 23209,23215 ****
  @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 id2}@anchor{2d4}@anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2d5}
  @section @code{Ada.Characters.Latin_9} (@code{a-chlat9.ads})
  
  
--- 22786,22792 ----
  @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 id2}@anchor{2d6}@anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2d7}
  @section @code{Ada.Characters.Latin_9} (@code{a-chlat9.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 23226,23232 ****
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Latin_1 a-cwila1 ads,Ada Characters Wide_Latin_9 a-cwila1 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{2d6}@anchor{gnat_rm/the_gnat_library id3}@anchor{2d7}
  @section @code{Ada.Characters.Wide_Latin_1} (@code{a-cwila1.ads})
  
  
--- 22803,22809 ----
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Latin_1 a-cwila1 ads,Ada Characters Wide_Latin_9 a-cwila1 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{2d8}@anchor{gnat_rm/the_gnat_library id3}@anchor{2d9}
  @section @code{Ada.Characters.Wide_Latin_1} (@code{a-cwila1.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 23243,23249 ****
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Latin_9 a-cwila1 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 id4}@anchor{2d8}@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila1-ads}@anchor{2d9}
  @section @code{Ada.Characters.Wide_Latin_9} (@code{a-cwila1.ads})
  
  
--- 22820,22826 ----
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Latin_9 a-cwila1 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 id4}@anchor{2da}@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila1-ads}@anchor{2db}
  @section @code{Ada.Characters.Wide_Latin_9} (@code{a-cwila1.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 23260,23266 ****
  (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-cwila1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{2da}@anchor{gnat_rm/the_gnat_library id5}@anchor{2db}
  @section @code{Ada.Characters.Wide_Wide_Latin_1} (@code{a-chzla1.ads})
  
  
--- 22837,22843 ----
  (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-cwila1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{2dc}@anchor{gnat_rm/the_gnat_library id5}@anchor{2dd}
  @section @code{Ada.Characters.Wide_Wide_Latin_1} (@code{a-chzla1.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 23277,23283 ****
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Containers Formal_Doubly_Linked_Lists a-cfdlli 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{2dc}@anchor{gnat_rm/the_gnat_library id6}@anchor{2dd}
  @section @code{Ada.Characters.Wide_Wide_Latin_9} (@code{a-chzla9.ads})
  
  
--- 22854,22860 ----
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Containers Formal_Doubly_Linked_Lists a-cfdlli 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{2de}@anchor{gnat_rm/the_gnat_library id6}@anchor{2df}
  @section @code{Ada.Characters.Wide_Wide_Latin_9} (@code{a-chzla9.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 23294,23300 ****
  (RM A.3.3(27)).
  
  @node Ada Containers Formal_Doubly_Linked_Lists a-cfdlli ads,Ada Containers Formal_Hashed_Maps a-cfhama ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id7}@anchor{2de}@anchor{gnat_rm/the_gnat_library ada-containers-formal-doubly-linked-lists-a-cfdlli-ads}@anchor{2df}
  @section @code{Ada.Containers.Formal_Doubly_Linked_Lists} (@code{a-cfdlli.ads})
  
  
--- 22871,22877 ----
  (RM A.3.3(27)).
  
  @node Ada Containers Formal_Doubly_Linked_Lists a-cfdlli ads,Ada Containers Formal_Hashed_Maps a-cfhama ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id7}@anchor{2e0}@anchor{gnat_rm/the_gnat_library ada-containers-formal-doubly-linked-lists-a-cfdlli-ads}@anchor{2e1}
  @section @code{Ada.Containers.Formal_Doubly_Linked_Lists} (@code{a-cfdlli.ads})
  
  
*************** efficient version than the one defined i
*** 23313,23319 ****
  does not have the complex overhead required to detect cursor tampering.
  
  @node Ada Containers Formal_Hashed_Maps a-cfhama ads,Ada Containers Formal_Hashed_Sets a-cfhase ads,Ada Containers Formal_Doubly_Linked_Lists a-cfdlli ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id8}@anchor{2e0}@anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-maps-a-cfhama-ads}@anchor{2e1}
  @section @code{Ada.Containers.Formal_Hashed_Maps} (@code{a-cfhama.ads})
  
  
--- 22890,22896 ----
  does not have the complex overhead required to detect cursor tampering.
  
  @node Ada Containers Formal_Hashed_Maps a-cfhama ads,Ada Containers Formal_Hashed_Sets a-cfhase ads,Ada Containers Formal_Doubly_Linked_Lists a-cfdlli ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id8}@anchor{2e2}@anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-maps-a-cfhama-ads}@anchor{2e3}
  @section @code{Ada.Containers.Formal_Hashed_Maps} (@code{a-cfhama.ads})
  
  
*************** efficient version than the one defined i
*** 23332,23338 ****
  does not have the complex overhead required to detect cursor tampering.
  
  @node Ada Containers Formal_Hashed_Sets a-cfhase ads,Ada Containers Formal_Ordered_Maps a-cforma ads,Ada Containers Formal_Hashed_Maps a-cfhama ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id9}@anchor{2e2}@anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-sets-a-cfhase-ads}@anchor{2e3}
  @section @code{Ada.Containers.Formal_Hashed_Sets} (@code{a-cfhase.ads})
  
  
--- 22909,22915 ----
  does not have the complex overhead required to detect cursor tampering.
  
  @node Ada Containers Formal_Hashed_Sets a-cfhase ads,Ada Containers Formal_Ordered_Maps a-cforma ads,Ada Containers Formal_Hashed_Maps a-cfhama ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id9}@anchor{2e4}@anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-sets-a-cfhase-ads}@anchor{2e5}
  @section @code{Ada.Containers.Formal_Hashed_Sets} (@code{a-cfhase.ads})
  
  
*************** efficient version than the one defined i
*** 23351,23357 ****
  does not have the complex overhead required to detect cursor tampering.
  
  @node Ada Containers Formal_Ordered_Maps a-cforma ads,Ada Containers Formal_Ordered_Sets a-cforse ads,Ada Containers Formal_Hashed_Sets a-cfhase ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id10}@anchor{2e4}@anchor{gnat_rm/the_gnat_library ada-containers-formal-ordered-maps-a-cforma-ads}@anchor{2e5}
  @section @code{Ada.Containers.Formal_Ordered_Maps} (@code{a-cforma.ads})
  
  
--- 22928,22934 ----
  does not have the complex overhead required to detect cursor tampering.
  
  @node Ada Containers Formal_Ordered_Maps a-cforma ads,Ada Containers Formal_Ordered_Sets a-cforse ads,Ada Containers Formal_Hashed_Sets a-cfhase ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id10}@anchor{2e6}@anchor{gnat_rm/the_gnat_library ada-containers-formal-ordered-maps-a-cforma-ads}@anchor{2e7}
  @section @code{Ada.Containers.Formal_Ordered_Maps} (@code{a-cforma.ads})
  
  
*************** efficient version than the one defined i
*** 23370,23376 ****
  does not have the complex overhead required to detect cursor tampering.
  
  @node Ada Containers Formal_Ordered_Sets a-cforse ads,Ada Containers Formal_Vectors a-cofove ads,Ada Containers Formal_Ordered_Maps a-cforma ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-formal-ordered-sets-a-cforse-ads}@anchor{2e6}@anchor{gnat_rm/the_gnat_library id11}@anchor{2e7}
  @section @code{Ada.Containers.Formal_Ordered_Sets} (@code{a-cforse.ads})
  
  
--- 22947,22953 ----
  does not have the complex overhead required to detect cursor tampering.
  
  @node Ada Containers Formal_Ordered_Sets a-cforse ads,Ada Containers Formal_Vectors a-cofove ads,Ada Containers Formal_Ordered_Maps a-cforma ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-formal-ordered-sets-a-cforse-ads}@anchor{2e8}@anchor{gnat_rm/the_gnat_library id11}@anchor{2e9}
  @section @code{Ada.Containers.Formal_Ordered_Sets} (@code{a-cforse.ads})
  
  
*************** efficient version than the one defined i
*** 23389,23395 ****
  does not have the complex overhead required to detect cursor tampering.
  
  @node Ada Containers Formal_Vectors a-cofove ads,Ada Containers Formal_Indefinite_Vectors a-cfinve ads,Ada Containers Formal_Ordered_Sets a-cforse ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id12}@anchor{2e8}@anchor{gnat_rm/the_gnat_library ada-containers-formal-vectors-a-cofove-ads}@anchor{2e9}
  @section @code{Ada.Containers.Formal_Vectors} (@code{a-cofove.ads})
  
  
--- 22966,22972 ----
  does not have the complex overhead required to detect cursor tampering.
  
  @node Ada Containers Formal_Vectors a-cofove ads,Ada Containers Formal_Indefinite_Vectors a-cfinve ads,Ada Containers Formal_Ordered_Sets a-cforse ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id12}@anchor{2ea}@anchor{gnat_rm/the_gnat_library ada-containers-formal-vectors-a-cofove-ads}@anchor{2eb}
  @section @code{Ada.Containers.Formal_Vectors} (@code{a-cofove.ads})
  
  
*************** efficient version than the one defined i
*** 23408,23414 ****
  does not have the complex overhead required to detect cursor tampering.
  
  @node Ada Containers Formal_Indefinite_Vectors a-cfinve ads,Ada Containers Functional_Vectors a-cofuve ads,Ada Containers Formal_Vectors a-cofove ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id13}@anchor{2ea}@anchor{gnat_rm/the_gnat_library ada-containers-formal-indefinite-vectors-a-cfinve-ads}@anchor{2eb}
  @section @code{Ada.Containers.Formal_Indefinite_Vectors} (@code{a-cfinve.ads})
  
  
--- 22985,22991 ----
  does not have the complex overhead required to detect cursor tampering.
  
  @node Ada Containers Formal_Indefinite_Vectors a-cfinve ads,Ada Containers Functional_Vectors a-cofuve ads,Ada Containers Formal_Vectors a-cofove ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id13}@anchor{2ec}@anchor{gnat_rm/the_gnat_library ada-containers-formal-indefinite-vectors-a-cfinve-ads}@anchor{2ed}
  @section @code{Ada.Containers.Formal_Indefinite_Vectors} (@code{a-cfinve.ads})
  
  
*************** efficient version than the one defined i
*** 23427,23433 ****
  does not have the complex overhead required to detect cursor tampering.
  
  @node Ada Containers Functional_Vectors a-cofuve ads,Ada Containers Functional_Sets a-cofuse ads,Ada Containers Formal_Indefinite_Vectors a-cfinve ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id14}@anchor{2ec}@anchor{gnat_rm/the_gnat_library ada-containers-functional-vectors-a-cofuve-ads}@anchor{2ed}
  @section @code{Ada.Containers.Functional_Vectors} (@code{a-cofuve.ads})
  
  
--- 23004,23010 ----
  does not have the complex overhead required to detect cursor tampering.
  
  @node Ada Containers Functional_Vectors a-cofuve ads,Ada Containers Functional_Sets a-cofuse ads,Ada Containers Formal_Indefinite_Vectors a-cfinve ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id14}@anchor{2ee}@anchor{gnat_rm/the_gnat_library ada-containers-functional-vectors-a-cofuve-ads}@anchor{2ef}
  @section @code{Ada.Containers.Functional_Vectors} (@code{a-cofuve.ads})
  
  
*************** and annotations, so that they can be rem
*** 23449,23455 ****
  specification of this unit is compatible with SPARK 2014.
  
  @node Ada Containers Functional_Sets a-cofuse ads,Ada Containers Functional_Maps a-cofuma ads,Ada Containers Functional_Vectors a-cofuve ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-functional-sets-a-cofuse-ads}@anchor{2ee}@anchor{gnat_rm/the_gnat_library id15}@anchor{2ef}
  @section @code{Ada.Containers.Functional_Sets} (@code{a-cofuse.ads})
  
  
--- 23026,23032 ----
  specification of this unit is compatible with SPARK 2014.
  
  @node Ada Containers Functional_Sets a-cofuse ads,Ada Containers Functional_Maps a-cofuma ads,Ada Containers Functional_Vectors a-cofuve ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-functional-sets-a-cofuse-ads}@anchor{2f0}@anchor{gnat_rm/the_gnat_library id15}@anchor{2f1}
  @section @code{Ada.Containers.Functional_Sets} (@code{a-cofuse.ads})
  
  
*************** and annotations, so that they can be rem
*** 23471,23477 ****
  specification of this unit is compatible with SPARK 2014.
  
  @node Ada Containers Functional_Maps a-cofuma ads,Ada Containers Bounded_Holders a-coboho ads,Ada Containers Functional_Sets a-cofuse ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id16}@anchor{2f0}@anchor{gnat_rm/the_gnat_library ada-containers-functional-maps-a-cofuma-ads}@anchor{2f1}
  @section @code{Ada.Containers.Functional_Maps} (@code{a-cofuma.ads})
  
  
--- 23048,23054 ----
  specification of this unit is compatible with SPARK 2014.
  
  @node Ada Containers Functional_Maps a-cofuma ads,Ada Containers Bounded_Holders a-coboho ads,Ada Containers Functional_Sets a-cofuse ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id16}@anchor{2f2}@anchor{gnat_rm/the_gnat_library ada-containers-functional-maps-a-cofuma-ads}@anchor{2f3}
  @section @code{Ada.Containers.Functional_Maps} (@code{a-cofuma.ads})
  
  
*************** and annotations, so that they can be rem
*** 23493,23499 ****
  specification of this unit is compatible with SPARK 2014.
  
  @node Ada Containers Bounded_Holders a-coboho ads,Ada Command_Line Environment a-colien ads,Ada Containers Functional_Maps a-cofuma ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{2f2}@anchor{gnat_rm/the_gnat_library id17}@anchor{2f3}
  @section @code{Ada.Containers.Bounded_Holders} (@code{a-coboho.ads})
  
  
--- 23070,23076 ----
  specification of this unit is compatible with SPARK 2014.
  
  @node Ada Containers Bounded_Holders a-coboho ads,Ada Command_Line Environment a-colien ads,Ada Containers Functional_Maps a-cofuma ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{2f4}@anchor{gnat_rm/the_gnat_library id17}@anchor{2f5}
  @section @code{Ada.Containers.Bounded_Holders} (@code{a-coboho.ads})
  
  
*************** This child of @code{Ada.Containers} defi
*** 23505,23511 ****
  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{2f4}@anchor{gnat_rm/the_gnat_library id18}@anchor{2f5}
  @section @code{Ada.Command_Line.Environment} (@code{a-colien.ads})
  
  
--- 23082,23088 ----
  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{2f6}@anchor{gnat_rm/the_gnat_library id18}@anchor{2f7}
  @section @code{Ada.Command_Line.Environment} (@code{a-colien.ads})
  
  
*************** provides a mechanism for obtaining envir
*** 23518,23524 ****
  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 id19}@anchor{2f6}@anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{2f7}
  @section @code{Ada.Command_Line.Remove} (@code{a-colire.ads})
  
  
--- 23095,23101 ----
  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 id19}@anchor{2f8}@anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{2f9}
  @section @code{Ada.Command_Line.Remove} (@code{a-colire.ads})
  
  
*************** to further calls on the subprograms in @
*** 23536,23542 ****
  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 id20}@anchor{2f8}@anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{2f9}
  @section @code{Ada.Command_Line.Response_File} (@code{a-clrefi.ads})
  
  
--- 23113,23119 ----
  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 id20}@anchor{2fa}@anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{2fb}
  @section @code{Ada.Command_Line.Response_File} (@code{a-clrefi.ads})
  
  
*************** Using a response file allow passing a se
*** 23556,23562 ****
  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 id21}@anchor{2fa}@anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{2fb}
  @section @code{Ada.Direct_IO.C_Streams} (@code{a-diocst.ads})
  
  
--- 23133,23139 ----
  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 id21}@anchor{2fc}@anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{2fd}
  @section @code{Ada.Direct_IO.C_Streams} (@code{a-diocst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 23571,23577 ****
  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 id22}@anchor{2fc}@anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{2fd}
  @section @code{Ada.Exceptions.Is_Null_Occurrence} (@code{a-einuoc.ads})
  
  
--- 23148,23154 ----
  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 id22}@anchor{2fe}@anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{2ff}
  @section @code{Ada.Exceptions.Is_Null_Occurrence} (@code{a-einuoc.ads})
  
  
*************** exception occurrence (@code{Null_Occurre
*** 23585,23591 ****
  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 id23}@anchor{2fe}@anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{2ff}
  @section @code{Ada.Exceptions.Last_Chance_Handler} (@code{a-elchha.ads})
  
  
--- 23162,23168 ----
  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 id23}@anchor{300}@anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{301}
  @section @code{Ada.Exceptions.Last_Chance_Handler} (@code{a-elchha.ads})
  
  
*************** exceptions (hence the name last chance),
*** 23599,23605 ****
  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{300}@anchor{gnat_rm/the_gnat_library id24}@anchor{301}
  @section @code{Ada.Exceptions.Traceback} (@code{a-exctra.ads})
  
  
--- 23176,23182 ----
  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{302}@anchor{gnat_rm/the_gnat_library id24}@anchor{303}
  @section @code{Ada.Exceptions.Traceback} (@code{a-exctra.ads})
  
  
*************** give a traceback array of addresses base
*** 23612,23618 ****
  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{302}@anchor{gnat_rm/the_gnat_library id25}@anchor{303}
  @section @code{Ada.Sequential_IO.C_Streams} (@code{a-siocst.ads})
  
  
--- 23189,23195 ----
  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{304}@anchor{gnat_rm/the_gnat_library id25}@anchor{305}
  @section @code{Ada.Sequential_IO.C_Streams} (@code{a-siocst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 23627,23633 ****
  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 id26}@anchor{304}@anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{305}
  @section @code{Ada.Streams.Stream_IO.C_Streams} (@code{a-ssicst.ads})
  
  
--- 23204,23210 ----
  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 id26}@anchor{306}@anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{307}
  @section @code{Ada.Streams.Stream_IO.C_Streams} (@code{a-ssicst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 23642,23648 ****
  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{306}@anchor{gnat_rm/the_gnat_library id27}@anchor{307}
  @section @code{Ada.Strings.Unbounded.Text_IO} (@code{a-suteio.ads})
  
  
--- 23219,23225 ----
  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{308}@anchor{gnat_rm/the_gnat_library id27}@anchor{309}
  @section @code{Ada.Strings.Unbounded.Text_IO} (@code{a-suteio.ads})
  
  
*************** strings, avoiding the necessity for an i
*** 23659,23665 ****
  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 id28}@anchor{308}@anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{309}
  @section @code{Ada.Strings.Wide_Unbounded.Wide_Text_IO} (@code{a-swuwti.ads})
  
  
--- 23236,23242 ----
  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 id28}@anchor{30a}@anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{30b}
  @section @code{Ada.Strings.Wide_Unbounded.Wide_Text_IO} (@code{a-swuwti.ads})
  
  
*************** This package provides subprograms for Te
*** 23675,23682 ****
  wide strings, avoiding the necessity for an intermediate operation
  with ordinary wide strings.
  
! @node Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Text_IO C_Streams a-tiocst ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id29}@anchor{30a}@anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{30b}
  @section @code{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} (@code{a-szuzti.ads})
  
  
--- 23252,23259 ----
  wide strings, avoiding the necessity for an intermediate operation
  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 id29}@anchor{30c}@anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{30d}
  @section @code{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} (@code{a-szuzti.ads})
  
  
*************** This package provides subprograms for Te
*** 23692,23699 ****
  wide wide strings, avoiding the necessity for an intermediate operation
  with ordinary wide wide strings.
  
! @node Ada Text_IO C_Streams a-tiocst ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{30c}@anchor{gnat_rm/the_gnat_library id30}@anchor{30d}
  @section @code{Ada.Text_IO.C_Streams} (@code{a-tiocst.ads})
  
  
--- 23269,23288 ----
  wide wide strings, avoiding the necessity for an intermediate operation
  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{30e}@anchor{gnat_rm/the_gnat_library id30}@anchor{30f}
! @section @code{Ada.Task_Initialization} (@code{a-tasini.ads})
! 
! 
! @geindex Ada.Task_Initialization (a-tasini.ads)
! 
! This package provides a way to set a global initialization handler that
! is automatically invoked whenever a task is activated. Handlers are
! parameterless procedures. Note that such a handler is only invoked for
! 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{310}@anchor{gnat_rm/the_gnat_library id31}@anchor{311}
  @section @code{Ada.Text_IO.C_Streams} (@code{a-tiocst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 23708,23714 ****
  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{30e}@anchor{gnat_rm/the_gnat_library id31}@anchor{30f}
  @section @code{Ada.Text_IO.Reset_Standard_Files} (@code{a-tirsfi.ads})
  
  
--- 23297,23303 ----
  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{312}@anchor{gnat_rm/the_gnat_library id32}@anchor{313}
  @section @code{Ada.Text_IO.Reset_Standard_Files} (@code{a-tirsfi.ads})
  
  
*************** execution (for example a standard input
*** 23723,23729 ****
  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 id32}@anchor{310}@anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{311}
  @section @code{Ada.Wide_Characters.Unicode} (@code{a-wichun.ads})
  
  
--- 23312,23318 ----
  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 id33}@anchor{314}@anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{315}
  @section @code{Ada.Wide_Characters.Unicode} (@code{a-wichun.ads})
  
  
*************** This package provides subprograms that a
*** 23736,23742 ****
  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{312}@anchor{gnat_rm/the_gnat_library id33}@anchor{313}
  @section @code{Ada.Wide_Text_IO.C_Streams} (@code{a-wtcstr.ads})
  
  
--- 23325,23331 ----
  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 id34}@anchor{316}@anchor{gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads}@anchor{317}
  @section @code{Ada.Wide_Text_IO.C_Streams} (@code{a-wtcstr.ads})
  
  
*************** extracted from a file opened on the Ada
*** 23751,23757 ****
  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{314}@anchor{gnat_rm/the_gnat_library id34}@anchor{315}
  @section @code{Ada.Wide_Text_IO.Reset_Standard_Files} (@code{a-wrstfi.ads})
  
  
--- 23340,23346 ----
  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{318}@anchor{gnat_rm/the_gnat_library id35}@anchor{319}
  @section @code{Ada.Wide_Text_IO.Reset_Standard_Files} (@code{a-wrstfi.ads})
  
  
*************** execution (for example a standard input
*** 23766,23772 ****
  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 id35}@anchor{316}@anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{317}
  @section @code{Ada.Wide_Wide_Characters.Unicode} (@code{a-zchuni.ads})
  
  
--- 23355,23361 ----
  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 id36}@anchor{31a}@anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{31b}
  @section @code{Ada.Wide_Wide_Characters.Unicode} (@code{a-zchuni.ads})
  
  
*************** This package provides subprograms that a
*** 23779,23785 ****
  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 id36}@anchor{318}@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{319}
  @section @code{Ada.Wide_Wide_Text_IO.C_Streams} (@code{a-ztcstr.ads})
  
  
--- 23368,23374 ----
  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 id37}@anchor{31c}@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{31d}
  @section @code{Ada.Wide_Wide_Text_IO.C_Streams} (@code{a-ztcstr.ads})
  
  
*************** extracted from a file opened on the Ada
*** 23794,23800 ****
  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 id37}@anchor{31a}@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{31b}
  @section @code{Ada.Wide_Wide_Text_IO.Reset_Standard_Files} (@code{a-zrstfi.ads})
  
  
--- 23383,23389 ----
  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{31e}@anchor{gnat_rm/the_gnat_library id38}@anchor{31f}
  @section @code{Ada.Wide_Wide_Text_IO.Reset_Standard_Files} (@code{a-zrstfi.ads})
  
  
*************** change during execution (for example a s
*** 23809,23815 ****
  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{31c}@anchor{gnat_rm/the_gnat_library id38}@anchor{31d}
  @section @code{GNAT.Altivec} (@code{g-altive.ads})
  
  
--- 23398,23404 ----
  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{320}@anchor{gnat_rm/the_gnat_library id39}@anchor{321}
  @section @code{GNAT.Altivec} (@code{g-altive.ads})
  
  
*************** definitions of constants and types commo
*** 23822,23828 ****
  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{31e}@anchor{gnat_rm/the_gnat_library id39}@anchor{31f}
  @section @code{GNAT.Altivec.Conversions} (@code{g-altcon.ads})
  
  
--- 23411,23417 ----
  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{322}@anchor{gnat_rm/the_gnat_library id40}@anchor{323}
  @section @code{GNAT.Altivec.Conversions} (@code{g-altcon.ads})
  
  
*************** binding.
*** 23833,23839 ****
  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{320}@anchor{gnat_rm/the_gnat_library id40}@anchor{321}
  @section @code{GNAT.Altivec.Vector_Operations} (@code{g-alveop.ads})
  
  
--- 23422,23428 ----
  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 id41}@anchor{324}@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{325}
  @section @code{GNAT.Altivec.Vector_Operations} (@code{g-alveop.ads})
  
  
*************** library. The hard binding is provided as
*** 23847,23853 ****
  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{322}@anchor{gnat_rm/the_gnat_library id41}@anchor{323}
  @section @code{GNAT.Altivec.Vector_Types} (@code{g-alvety.ads})
  
  
--- 23436,23442 ----
  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{326}@anchor{gnat_rm/the_gnat_library id42}@anchor{327}
  @section @code{GNAT.Altivec.Vector_Types} (@code{g-alvety.ads})
  
  
*************** This package exposes the various vector
*** 23859,23865 ****
  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{324}@anchor{gnat_rm/the_gnat_library id42}@anchor{325}
  @section @code{GNAT.Altivec.Vector_Views} (@code{g-alvevi.ads})
  
  
--- 23448,23454 ----
  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{328}@anchor{gnat_rm/the_gnat_library id43}@anchor{329}
  @section @code{GNAT.Altivec.Vector_Views} (@code{g-alvevi.ads})
  
  
*************** vector elements and provides a simple wa
*** 23874,23880 ****
  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{326}@anchor{gnat_rm/the_gnat_library id43}@anchor{327}
  @section @code{GNAT.Array_Split} (@code{g-arrspl.ads})
  
  
--- 23463,23469 ----
  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{32a}@anchor{gnat_rm/the_gnat_library id44}@anchor{32b}
  @section @code{GNAT.Array_Split} (@code{g-arrspl.ads})
  
  
*************** an array wherever the separators appear,
*** 23887,23893 ****
  to the resulting slices.
  
  @node GNAT AWK g-awk ads,GNAT Bind_Environment g-binenv ads,GNAT Array_Split g-arrspl ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id44}@anchor{328}@anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{329}
  @section @code{GNAT.AWK} (@code{g-awk.ads})
  
  
--- 23476,23482 ----
  to the resulting slices.
  
  @node GNAT AWK g-awk ads,GNAT Bind_Environment g-binenv ads,GNAT Array_Split g-arrspl ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id45}@anchor{32c}@anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{32d}
  @section @code{GNAT.AWK} (@code{g-awk.ads})
  
  
*************** or more files containing formatted data.
*** 23902,23908 ****
  where each record is a line and a field is a data element in this line.
  
  @node GNAT Bind_Environment g-binenv ads,GNAT Branch_Prediction g-brapre ads,GNAT AWK g-awk ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{32a}@anchor{gnat_rm/the_gnat_library id45}@anchor{32b}
  @section @code{GNAT.Bind_Environment} (@code{g-binenv.ads})
  
  
--- 23491,23497 ----
  where each record is a line and a field is a data element in this line.
  
  @node GNAT Bind_Environment g-binenv ads,GNAT Branch_Prediction g-brapre ads,GNAT AWK g-awk ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id46}@anchor{32e}@anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{32f}
  @section @code{GNAT.Bind_Environment} (@code{g-binenv.ads})
  
  
*************** These associations can be specified usin
*** 23915,23921 ****
  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 id46}@anchor{32c}@anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{32d}
  @section @code{GNAT.Branch_Prediction} (@code{g-brapre.ads})
  
  
--- 23504,23510 ----
  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 id47}@anchor{330}@anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{331}
  @section @code{GNAT.Branch_Prediction} (@code{g-brapre.ads})
  
  
*************** line switch.
*** 23926,23932 ****
  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 id47}@anchor{32e}@anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{32f}
  @section @code{GNAT.Bounded_Buffers} (@code{g-boubuf.ads})
  
  
--- 23515,23521 ----
  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{332}@anchor{gnat_rm/the_gnat_library id48}@anchor{333}
  @section @code{GNAT.Bounded_Buffers} (@code{g-boubuf.ads})
  
  
*************** useful directly or as parts of the imple
*** 23941,23947 ****
  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{330}@anchor{gnat_rm/the_gnat_library id48}@anchor{331}
  @section @code{GNAT.Bounded_Mailboxes} (@code{g-boumai.ads})
  
  
--- 23530,23536 ----
  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{334}@anchor{gnat_rm/the_gnat_library id49}@anchor{335}
  @section @code{GNAT.Bounded_Mailboxes} (@code{g-boumai.ads})
  
  
*************** such as mailboxes.
*** 23954,23960 ****
  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{332}@anchor{gnat_rm/the_gnat_library id49}@anchor{333}
  @section @code{GNAT.Bubble_Sort} (@code{g-bubsor.ads})
  
  
--- 23543,23549 ----
  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{336}@anchor{gnat_rm/the_gnat_library id50}@anchor{337}
  @section @code{GNAT.Bubble_Sort} (@code{g-bubsor.ads})
  
  
*************** data items.  Exchange and comparison pro
*** 23969,23975 ****
  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 id50}@anchor{334}@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{335}
  @section @code{GNAT.Bubble_Sort_A} (@code{g-busora.ads})
  
  
--- 23558,23564 ----
  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 id51}@anchor{338}@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{339}
  @section @code{GNAT.Bubble_Sort_A} (@code{g-busora.ads})
  
  
*************** access-to-procedure values. This is an o
*** 23985,23991 ****
  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{336}@anchor{gnat_rm/the_gnat_library id51}@anchor{337}
  @section @code{GNAT.Bubble_Sort_G} (@code{g-busorg.ads})
  
  
--- 23574,23580 ----
  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{33a}@anchor{gnat_rm/the_gnat_library id52}@anchor{33b}
  @section @code{GNAT.Bubble_Sort_G} (@code{g-busorg.ads})
  
  
*************** if the procedures can be inlined, at the
*** 24001,24007 ****
  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{338}@anchor{gnat_rm/the_gnat_library id52}@anchor{339}
  @section @code{GNAT.Byte_Order_Mark} (@code{g-byorma.ads})
  
  
--- 23590,23596 ----
  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{33c}@anchor{gnat_rm/the_gnat_library id53}@anchor{33d}
  @section @code{GNAT.Byte_Order_Mark} (@code{g-byorma.ads})
  
  
*************** the encoding of the string. The routine
*** 24017,24023 ****
  sequences for various UCS input formats.
  
  @node GNAT Byte_Swapping g-bytswa ads,GNAT Calendar g-calend ads,GNAT Byte_Order_Mark g-byorma ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{33a}@anchor{gnat_rm/the_gnat_library id53}@anchor{33b}
  @section @code{GNAT.Byte_Swapping} (@code{g-bytswa.ads})
  
  
--- 23606,23612 ----
  sequences for various UCS input formats.
  
  @node GNAT Byte_Swapping g-bytswa ads,GNAT Calendar g-calend ads,GNAT Byte_Order_Mark g-byorma ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{33e}@anchor{gnat_rm/the_gnat_library id54}@anchor{33f}
  @section @code{GNAT.Byte_Swapping} (@code{g-bytswa.ads})
  
  
*************** General routines for swapping the bytes
*** 24031,24037 ****
  Machine-specific implementations are available in some cases.
  
  @node GNAT Calendar g-calend ads,GNAT Calendar Time_IO g-catiio ads,GNAT Byte_Swapping g-bytswa ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id54}@anchor{33c}@anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{33d}
  @section @code{GNAT.Calendar} (@code{g-calend.ads})
  
  
--- 23620,23626 ----
  Machine-specific implementations are available in some cases.
  
  @node GNAT Calendar g-calend ads,GNAT Calendar Time_IO g-catiio ads,GNAT Byte_Swapping g-bytswa ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id55}@anchor{340}@anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{341}
  @section @code{GNAT.Calendar} (@code{g-calend.ads})
  
  
*************** Also provides conversion of @code{Ada.Ca
*** 24045,24051 ****
  C @code{timeval} format.
  
  @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 id55}@anchor{33e}@anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{33f}
  @section @code{GNAT.Calendar.Time_IO} (@code{g-catiio.ads})
  
  
--- 23634,23640 ----
  C @code{timeval} format.
  
  @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 id56}@anchor{342}@anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{343}
  @section @code{GNAT.Calendar.Time_IO} (@code{g-catiio.ads})
  
  
*************** C @code{timeval} format.
*** 24056,24062 ****
  @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 id56}@anchor{340}@anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{341}
  @section @code{GNAT.CRC32} (@code{g-crc32.ads})
  
  
--- 23645,23651 ----
  @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 id57}@anchor{344}@anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{345}
  @section @code{GNAT.CRC32} (@code{g-crc32.ads})
  
  
*************** of this algorithm see
*** 24073,24079 ****
  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 id57}@anchor{342}@anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{343}
  @section @code{GNAT.Case_Util} (@code{g-casuti.ads})
  
  
--- 23662,23668 ----
  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 id58}@anchor{346}@anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{347}
  @section @code{GNAT.Case_Util} (@code{g-casuti.ads})
  
  
*************** without the overhead of the full casing
*** 24088,24094 ****
  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 id58}@anchor{344}@anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{345}
  @section @code{GNAT.CGI} (@code{g-cgi.ads})
  
  
--- 23677,23683 ----
  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 id59}@anchor{348}@anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{349}
  @section @code{GNAT.CGI} (@code{g-cgi.ads})
  
  
*************** builds a table whose index is the key an
*** 24103,24109 ****
  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{346}@anchor{gnat_rm/the_gnat_library id59}@anchor{347}
  @section @code{GNAT.CGI.Cookie} (@code{g-cgicoo.ads})
  
  
--- 23692,23698 ----
  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{34a}@anchor{gnat_rm/the_gnat_library id60}@anchor{34b}
  @section @code{GNAT.CGI.Cookie} (@code{g-cgicoo.ads})
  
  
*************** Common Gateway Interface (CGI).  It expo
*** 24118,24124 ****
  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{348}@anchor{gnat_rm/the_gnat_library id60}@anchor{349}
  @section @code{GNAT.CGI.Debug} (@code{g-cgideb.ads})
  
  
--- 23707,23713 ----
  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{34c}@anchor{gnat_rm/the_gnat_library id61}@anchor{34d}
  @section @code{GNAT.CGI.Debug} (@code{g-cgideb.ads})
  
  
*************** This is a package to help debugging CGI
*** 24130,24136 ****
  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 id61}@anchor{34a}@anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{34b}
  @section @code{GNAT.Command_Line} (@code{g-comlin.ads})
  
  
--- 23719,23725 ----
  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 id62}@anchor{34e}@anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{34f}
  @section @code{GNAT.Command_Line} (@code{g-comlin.ads})
  
  
*************** including the ability to scan for named
*** 24143,24149 ****
  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{34c}@anchor{gnat_rm/the_gnat_library id62}@anchor{34d}
  @section @code{GNAT.Compiler_Version} (@code{g-comver.ads})
  
  
--- 23732,23738 ----
  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{350}@anchor{gnat_rm/the_gnat_library id63}@anchor{351}
  @section @code{GNAT.Compiler_Version} (@code{g-comver.ads})
  
  
*************** of the compiler if a consistent tool set
*** 24161,24167 ****
  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{34e}@anchor{gnat_rm/the_gnat_library id63}@anchor{34f}
  @section @code{GNAT.Ctrl_C} (@code{g-ctrl_c.ads})
  
  
--- 23750,23756 ----
  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 id64}@anchor{352}@anchor{gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads}@anchor{353}
  @section @code{GNAT.Ctrl_C} (@code{g-ctrl_c.ads})
  
  
*************** of a partition).
*** 24172,24178 ****
  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 id64}@anchor{350}@anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{351}
  @section @code{GNAT.Current_Exception} (@code{g-curexc.ads})
  
  
--- 23761,23767 ----
  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 id65}@anchor{354}@anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{355}
  @section @code{GNAT.Current_Exception} (@code{g-curexc.ads})
  
  
*************** This is particularly useful in simulatin
*** 24189,24195 ****
  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{352}@anchor{gnat_rm/the_gnat_library id65}@anchor{353}
  @section @code{GNAT.Debug_Pools} (@code{g-debpoo.ads})
  
  
--- 23778,23784 ----
  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{356}@anchor{gnat_rm/the_gnat_library id66}@anchor{357}
  @section @code{GNAT.Debug_Pools} (@code{g-debpoo.ads})
  
  
*************** problems.
*** 24206,24212 ****
  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{354}@anchor{gnat_rm/the_gnat_library id66}@anchor{355}
  @section @code{GNAT.Debug_Utilities} (@code{g-debuti.ads})
  
  
--- 23795,23801 ----
  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{358}@anchor{gnat_rm/the_gnat_library id67}@anchor{359}
  @section @code{GNAT.Debug_Utilities} (@code{g-debuti.ads})
  
  
*************** to and from string images of address val
*** 24219,24225 ****
  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 id67}@anchor{356}@anchor{gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads}@anchor{357}
  @section @code{GNAT.Decode_String} (@code{g-decstr.ads})
  
  
--- 23808,23814 ----
  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{35a}@anchor{gnat_rm/the_gnat_library id68}@anchor{35b}
  @section @code{GNAT.Decode_String} (@code{g-decstr.ads})
  
  
*************** Useful in conjunction with Unicode chara
*** 24243,24249 ****
  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{358}@anchor{gnat_rm/the_gnat_library id68}@anchor{359}
  @section @code{GNAT.Decode_UTF8_String} (@code{g-deutst.ads})
  
  
--- 23832,23838 ----
  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{35c}@anchor{gnat_rm/the_gnat_library id69}@anchor{35d}
  @section @code{GNAT.Decode_UTF8_String} (@code{g-deutst.ads})
  
  
*************** preinstantiation for UTF-8. See next ent
*** 24264,24270 ****
  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 id69}@anchor{35a}@anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{35b}
  @section @code{GNAT.Directory_Operations} (@code{g-dirope.ads})
  
  
--- 23853,23859 ----
  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 id70}@anchor{35e}@anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{35f}
  @section @code{GNAT.Directory_Operations} (@code{g-dirope.ads})
  
  
*************** the current directory, making new direct
*** 24277,24283 ****
  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 id70}@anchor{35c}@anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{35d}
  @section @code{GNAT.Directory_Operations.Iteration} (@code{g-diopit.ads})
  
  
--- 23866,23872 ----
  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 id71}@anchor{360}@anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{361}
  @section @code{GNAT.Directory_Operations.Iteration} (@code{g-diopit.ads})
  
  
*************** A child unit of GNAT.Directory_Operation
*** 24289,24295 ****
  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 id71}@anchor{35e}@anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{35f}
  @section @code{GNAT.Dynamic_HTables} (@code{g-dynhta.ads})
  
  
--- 23878,23884 ----
  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 id72}@anchor{362}@anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{363}
  @section @code{GNAT.Dynamic_HTables} (@code{g-dynhta.ads})
  
  
*************** dynamic instances of the hash table, whi
*** 24307,24313 ****
  @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{360}@anchor{gnat_rm/the_gnat_library id72}@anchor{361}
  @section @code{GNAT.Dynamic_Tables} (@code{g-dyntab.ads})
  
  
--- 23896,23902 ----
  @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{364}@anchor{gnat_rm/the_gnat_library id73}@anchor{365}
  @section @code{GNAT.Dynamic_Tables} (@code{g-dyntab.ads})
  
  
*************** dynamic instances of the table, while an
*** 24327,24333 ****
  @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 id73}@anchor{362}@anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{363}
  @section @code{GNAT.Encode_String} (@code{g-encstr.ads})
  
  
--- 23916,23922 ----
  @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 id74}@anchor{366}@anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{367}
  @section @code{GNAT.Encode_String} (@code{g-encstr.ads})
  
  
*************** encoding method. Useful in conjunction w
*** 24349,24355 ****
  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{364}@anchor{gnat_rm/the_gnat_library id74}@anchor{365}
  @section @code{GNAT.Encode_UTF8_String} (@code{g-enutst.ads})
  
  
--- 23938,23944 ----
  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{368}@anchor{gnat_rm/the_gnat_library id75}@anchor{369}
  @section @code{GNAT.Encode_UTF8_String} (@code{g-enutst.ads})
  
  
*************** Note there is a preinstantiation for UTF
*** 24370,24376 ****
  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{366}@anchor{gnat_rm/the_gnat_library id75}@anchor{367}
  @section @code{GNAT.Exception_Actions} (@code{g-excact.ads})
  
  
--- 23959,23965 ----
  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{36a}@anchor{gnat_rm/the_gnat_library id76}@anchor{36b}
  @section @code{GNAT.Exception_Actions} (@code{g-excact.ads})
  
  
*************** for specific exceptions, or when any exc
*** 24383,24389 ****
  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{368}@anchor{gnat_rm/the_gnat_library id76}@anchor{369}
  @section @code{GNAT.Exception_Traces} (@code{g-exctra.ads})
  
  
--- 23972,23978 ----
  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{36c}@anchor{gnat_rm/the_gnat_library id77}@anchor{36d}
  @section @code{GNAT.Exception_Traces} (@code{g-exctra.ads})
  
  
*************** Provides an interface allowing to contro
*** 24397,24403 ****
  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 id77}@anchor{36a}@anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{36b}
  @section @code{GNAT.Exceptions} (@code{g-except.ads})
  
  
--- 23986,23992 ----
  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 id78}@anchor{36e}@anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{36f}
  @section @code{GNAT.Exceptions} (@code{g-except.ads})
  
  
*************** predefined exceptions, and for example a
*** 24418,24424 ****
  @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 id78}@anchor{36c}@anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{36d}
  @section @code{GNAT.Expect} (@code{g-expect.ads})
  
  
--- 24007,24013 ----
  @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 id79}@anchor{370}@anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{371}
  @section @code{GNAT.Expect} (@code{g-expect.ads})
  
  
*************** It is not implemented for cross ports, a
*** 24434,24440 ****
  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 id79}@anchor{36e}@anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{36f}
  @section @code{GNAT.Expect.TTY} (@code{g-exptty.ads})
  
  
--- 24023,24029 ----
  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 id80}@anchor{372}@anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{373}
  @section @code{GNAT.Expect.TTY} (@code{g-exptty.ads})
  
  
*************** ports. It is not implemented for cross p
*** 24446,24452 ****
  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 id80}@anchor{370}@anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{371}
  @section @code{GNAT.Float_Control} (@code{g-flocon.ads})
  
  
--- 24035,24041 ----
  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 id81}@anchor{374}@anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{375}
  @section @code{GNAT.Float_Control} (@code{g-flocon.ads})
  
  
*************** library calls may cause this mode to be
*** 24460,24466 ****
  in this package can be used to reestablish the required mode.
  
  @node GNAT Formatted_String g-forstr ads,GNAT Heap_Sort g-heasor ads,GNAT Float_Control g-flocon ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id81}@anchor{372}@anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{373}
  @section @code{GNAT.Formatted_String} (@code{g-forstr.ads})
  
  
--- 24049,24055 ----
  in this package can be used to reestablish the required mode.
  
  @node GNAT Formatted_String g-forstr ads,GNAT Heap_Sort g-heasor ads,GNAT Float_Control g-flocon ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id82}@anchor{376}@anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{377}
  @section @code{GNAT.Formatted_String} (@code{g-forstr.ads})
  
  
*************** derived from Integer, Float or enumerati
*** 24475,24481 ****
  formatted string.
  
  @node GNAT Heap_Sort g-heasor ads,GNAT Heap_Sort_A g-hesora ads,GNAT Formatted_String g-forstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{374}@anchor{gnat_rm/the_gnat_library id82}@anchor{375}
  @section @code{GNAT.Heap_Sort} (@code{g-heasor.ads})
  
  
--- 24064,24070 ----
  formatted string.
  
  @node GNAT Heap_Sort g-heasor ads,GNAT Heap_Sort_A g-hesora ads,GNAT Formatted_String g-forstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id83}@anchor{378}@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{379}
  @section @code{GNAT.Heap_Sort} (@code{g-heasor.ads})
  
  
*************** access-to-procedure values.  The algorit
*** 24489,24495 ****
  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 id83}@anchor{376}@anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{377}
  @section @code{GNAT.Heap_Sort_A} (@code{g-hesora.ads})
  
  
--- 24078,24084 ----
  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{37a}@anchor{gnat_rm/the_gnat_library id84}@anchor{37b}
  @section @code{GNAT.Heap_Sort_A} (@code{g-hesora.ads})
  
  
*************** This differs from @code{GNAT.Heap_Sort}
*** 24505,24511 ****
  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 id84}@anchor{378}@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{379}
  @section @code{GNAT.Heap_Sort_G} (@code{g-hesorg.ads})
  
  
--- 24094,24100 ----
  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 id85}@anchor{37c}@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{37d}
  @section @code{GNAT.Heap_Sort_G} (@code{g-hesorg.ads})
  
  
*************** if the procedures can be inlined, at the
*** 24519,24525 ****
  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 id85}@anchor{37a}@anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{37b}
  @section @code{GNAT.HTable} (@code{g-htable.ads})
  
  
--- 24108,24114 ----
  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 id86}@anchor{37e}@anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{37f}
  @section @code{GNAT.HTable} (@code{g-htable.ads})
  
  
*************** data.  Provides two approaches, one a si
*** 24532,24538 ****
  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 id86}@anchor{37c}@anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{37d}
  @section @code{GNAT.IO} (@code{g-io.ads})
  
  
--- 24121,24127 ----
  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 id87}@anchor{380}@anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{381}
  @section @code{GNAT.IO} (@code{g-io.ads})
  
  
*************** Standard_Input, and writing characters,
*** 24548,24554 ****
  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 id87}@anchor{37e}@anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{37f}
  @section @code{GNAT.IO_Aux} (@code{g-io_aux.ads})
  
  
--- 24137,24143 ----
  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 id88}@anchor{382}@anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{383}
  @section @code{GNAT.IO_Aux} (@code{g-io_aux.ads})
  
  
*************** Provides some auxiliary functions for us
*** 24562,24568 ****
  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 id88}@anchor{380}@anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{381}
  @section @code{GNAT.Lock_Files} (@code{g-locfil.ads})
  
  
--- 24151,24157 ----
  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 id89}@anchor{384}@anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{385}
  @section @code{GNAT.Lock_Files} (@code{g-locfil.ads})
  
  
*************** Provides a general interface for using f
*** 24576,24582 ****
  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 id89}@anchor{382}@anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{383}
  @section @code{GNAT.MBBS_Discrete_Random} (@code{g-mbdira.ads})
  
  
--- 24165,24171 ----
  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 id90}@anchor{386}@anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{387}
  @section @code{GNAT.MBBS_Discrete_Random} (@code{g-mbdira.ads})
  
  
*************** The original implementation of @code{Ada
*** 24588,24594 ****
  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 id90}@anchor{384}@anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{385}
  @section @code{GNAT.MBBS_Float_Random} (@code{g-mbflra.ads})
  
  
--- 24177,24183 ----
  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 id91}@anchor{388}@anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{389}
  @section @code{GNAT.MBBS_Float_Random} (@code{g-mbflra.ads})
  
  
*************** The original implementation of @code{Ada
*** 24600,24606 ****
  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 id91}@anchor{386}@anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{387}
  @section @code{GNAT.MD5} (@code{g-md5.ads})
  
  
--- 24189,24195 ----
  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 id92}@anchor{38a}@anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{38b}
  @section @code{GNAT.MD5} (@code{g-md5.ads})
  
  
*************** the HMAC-MD5 message authentication func
*** 24613,24619 ****
  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 id92}@anchor{388}@anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{389}
  @section @code{GNAT.Memory_Dump} (@code{g-memdum.ads})
  
  
--- 24202,24208 ----
  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 id93}@anchor{38c}@anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{38d}
  @section @code{GNAT.Memory_Dump} (@code{g-memdum.ads})
  
  
*************** standard output or standard error files.
*** 24626,24632 ****
  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{38a}@anchor{gnat_rm/the_gnat_library id93}@anchor{38b}
  @section @code{GNAT.Most_Recent_Exception} (@code{g-moreex.ads})
  
  
--- 24215,24221 ----
  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{38e}@anchor{gnat_rm/the_gnat_library id94}@anchor{38f}
  @section @code{GNAT.Most_Recent_Exception} (@code{g-moreex.ads})
  
  
*************** various logging purposes, including dupl
*** 24640,24646 ****
  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{38c}@anchor{gnat_rm/the_gnat_library id94}@anchor{38d}
  @section @code{GNAT.OS_Lib} (@code{g-os_lib.ads})
  
  
--- 24229,24235 ----
  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{390}@anchor{gnat_rm/the_gnat_library id95}@anchor{391}
  @section @code{GNAT.OS_Lib} (@code{g-os_lib.ads})
  
  
*************** including a portable spawn procedure, an
*** 24656,24662 ****
  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{38e}@anchor{gnat_rm/the_gnat_library id95}@anchor{38f}
  @section @code{GNAT.Perfect_Hash_Generators} (@code{g-pehage.ads})
  
  
--- 24245,24251 ----
  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{392}@anchor{gnat_rm/the_gnat_library id96}@anchor{393}
  @section @code{GNAT.Perfect_Hash_Generators} (@code{g-pehage.ads})
  
  
*************** hashcode are in the same order. These ha
*** 24674,24680 ****
  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{390}@anchor{gnat_rm/the_gnat_library id96}@anchor{391}
  @section @code{GNAT.Random_Numbers} (@code{g-rannum.ads})
  
  
--- 24263,24269 ----
  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{394}@anchor{gnat_rm/the_gnat_library id97}@anchor{395}
  @section @code{GNAT.Random_Numbers} (@code{g-rannum.ads})
  
  
*************** Provides random number capabilities whic
*** 24686,24692 ****
  standard Ada library and are more convenient to use.
  
  @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{259}@anchor{gnat_rm/the_gnat_library id97}@anchor{392}
  @section @code{GNAT.Regexp} (@code{g-regexp.ads})
  
  
--- 24275,24281 ----
  standard Ada library and are more convenient to use.
  
  @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 id98}@anchor{396}@anchor{gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads}@anchor{25b}
  @section @code{GNAT.Regexp} (@code{g-regexp.ads})
  
  
*************** simplest of the three pattern matching p
*** 24702,24708 ****
  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 id98}@anchor{393}@anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{394}
  @section @code{GNAT.Registry} (@code{g-regist.ads})
  
  
--- 24291,24297 ----
  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 id99}@anchor{397}@anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{398}
  @section @code{GNAT.Registry} (@code{g-regist.ads})
  
  
*************** registry API, but at a lower level of ab
*** 24716,24722 ****
  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 id99}@anchor{395}@anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{396}
  @section @code{GNAT.Regpat} (@code{g-regpat.ads})
  
  
--- 24305,24311 ----
  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 id100}@anchor{399}@anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{39a}
  @section @code{GNAT.Regpat} (@code{g-regpat.ads})
  
  
*************** from the original V7 style regular expre
*** 24731,24737 ****
  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 id100}@anchor{397}@anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{398}
  @section @code{GNAT.Rewrite_Data} (@code{g-rewdat.ads})
  
  
--- 24320,24326 ----
  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 id101}@anchor{39b}@anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{39c}
  @section @code{GNAT.Rewrite_Data} (@code{g-rewdat.ads})
  
  
*************** full content to be processed is not load
*** 24745,24751 ****
  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 id101}@anchor{399}@anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{39a}
  @section @code{GNAT.Secondary_Stack_Info} (@code{g-sestin.ads})
  
  
--- 24334,24340 ----
  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{39d}@anchor{gnat_rm/the_gnat_library id102}@anchor{39e}
  @section @code{GNAT.Secondary_Stack_Info} (@code{g-sestin.ads})
  
  
*************** Provide the capability to query the high
*** 24757,24763 ****
  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 id102}@anchor{39b}@anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{39c}
  @section @code{GNAT.Semaphores} (@code{g-semaph.ads})
  
  
--- 24346,24352 ----
  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 id103}@anchor{39f}@anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{3a0}
  @section @code{GNAT.Semaphores} (@code{g-semaph.ads})
  
  
*************** secondary stack.
*** 24768,24774 ****
  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{39d}@anchor{gnat_rm/the_gnat_library id103}@anchor{39e}
  @section @code{GNAT.Serial_Communications} (@code{g-sercom.ads})
  
  
--- 24357,24363 ----
  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{3a1}@anchor{gnat_rm/the_gnat_library id104}@anchor{3a2}
  @section @code{GNAT.Serial_Communications} (@code{g-sercom.ads})
  
  
*************** Provides a simple interface to send and
*** 24780,24786 ****
  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{39f}@anchor{gnat_rm/the_gnat_library id104}@anchor{3a0}
  @section @code{GNAT.SHA1} (@code{g-sha1.ads})
  
  
--- 24369,24375 ----
  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{3a3}@anchor{gnat_rm/the_gnat_library id105}@anchor{3a4}
  @section @code{GNAT.SHA1} (@code{g-sha1.ads})
  
  
*************** and RFC 3174, and the HMAC-SHA1 message
*** 24793,24799 ****
  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{3a1}@anchor{gnat_rm/the_gnat_library id105}@anchor{3a2}
  @section @code{GNAT.SHA224} (@code{g-sha224.ads})
  
  
--- 24382,24388 ----
  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{3a5}@anchor{gnat_rm/the_gnat_library id106}@anchor{3a6}
  @section @code{GNAT.SHA224} (@code{g-sha224.ads})
  
  
*************** and the HMAC-SHA224 message authenticati
*** 24806,24812 ****
  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{3a3}@anchor{gnat_rm/the_gnat_library id106}@anchor{3a4}
  @section @code{GNAT.SHA256} (@code{g-sha256.ads})
  
  
--- 24395,24401 ----
  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{3a7}@anchor{gnat_rm/the_gnat_library id107}@anchor{3a8}
  @section @code{GNAT.SHA256} (@code{g-sha256.ads})
  
  
*************** and the HMAC-SHA256 message authenticati
*** 24819,24825 ****
  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{3a5}@anchor{gnat_rm/the_gnat_library id107}@anchor{3a6}
  @section @code{GNAT.SHA384} (@code{g-sha384.ads})
  
  
--- 24408,24414 ----
  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 id108}@anchor{3a9}@anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{3aa}
  @section @code{GNAT.SHA384} (@code{g-sha384.ads})
  
  
*************** and the HMAC-SHA384 message authenticati
*** 24832,24838 ****
  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 id108}@anchor{3a7}@anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{3a8}
  @section @code{GNAT.SHA512} (@code{g-sha512.ads})
  
  
--- 24421,24427 ----
  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 id109}@anchor{3ab}@anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{3ac}
  @section @code{GNAT.SHA512} (@code{g-sha512.ads})
  
  
*************** and the HMAC-SHA512 message authenticati
*** 24845,24851 ****
  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 id109}@anchor{3a9}@anchor{gnat_rm/the_gnat_library gnat-signals-g-signal-ads}@anchor{3aa}
  @section @code{GNAT.Signals} (@code{g-signal.ads})
  
  
--- 24434,24440 ----
  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{3ad}@anchor{gnat_rm/the_gnat_library id110}@anchor{3ae}
  @section @code{GNAT.Signals} (@code{g-signal.ads})
  
  
*************** Provides the ability to manipulate the b
*** 24857,24863 ****
  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{3ab}@anchor{gnat_rm/the_gnat_library id110}@anchor{3ac}
  @section @code{GNAT.Sockets} (@code{g-socket.ads})
  
  
--- 24446,24452 ----
  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{3af}@anchor{gnat_rm/the_gnat_library id111}@anchor{3b0}
  @section @code{GNAT.Sockets} (@code{g-socket.ads})
  
  
*************** on all native GNAT ports and on VxWorks
*** 24872,24878 ****
  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{3ad}@anchor{gnat_rm/the_gnat_library id111}@anchor{3ae}
  @section @code{GNAT.Source_Info} (@code{g-souinf.ads})
  
  
--- 24461,24467 ----
  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{3b1}@anchor{gnat_rm/the_gnat_library id112}@anchor{3b2}
  @section @code{GNAT.Source_Info} (@code{g-souinf.ads})
  
  
*************** subprograms yielding the date and time o
*** 24886,24892 ****
  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 id112}@anchor{3af}@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads}@anchor{3b0}
  @section @code{GNAT.Spelling_Checker} (@code{g-speche.ads})
  
  
--- 24475,24481 ----
  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{3b3}@anchor{gnat_rm/the_gnat_library id113}@anchor{3b4}
  @section @code{GNAT.Spelling_Checker} (@code{g-speche.ads})
  
  
*************** Provides a function for determining whet
*** 24898,24904 ****
  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{3b1}@anchor{gnat_rm/the_gnat_library id113}@anchor{3b2}
  @section @code{GNAT.Spelling_Checker_Generic} (@code{g-spchge.ads})
  
  
--- 24487,24493 ----
  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{3b5}@anchor{gnat_rm/the_gnat_library id114}@anchor{3b6}
  @section @code{GNAT.Spelling_Checker_Generic} (@code{g-spchge.ads})
  
  
*************** determining whether one string is a plau
*** 24911,24917 ****
  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{3b3}@anchor{gnat_rm/the_gnat_library id114}@anchor{3b4}
  @section @code{GNAT.Spitbol.Patterns} (@code{g-spipat.ads})
  
  
--- 24500,24506 ----
  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{3b7}@anchor{gnat_rm/the_gnat_library id115}@anchor{3b8}
  @section @code{GNAT.Spitbol.Patterns} (@code{g-spipat.ads})
  
  
*************** the SNOBOL4 dynamic pattern construction
*** 24927,24933 ****
  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{3b5}@anchor{gnat_rm/the_gnat_library id115}@anchor{3b6}
  @section @code{GNAT.Spitbol} (@code{g-spitbo.ads})
  
  
--- 24516,24522 ----
  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 id116}@anchor{3b9}@anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{3ba}
  @section @code{GNAT.Spitbol} (@code{g-spitbo.ads})
  
  
*************** useful for constructing arbitrary mappin
*** 24942,24948 ****
  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 id116}@anchor{3b7}@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{3b8}
  @section @code{GNAT.Spitbol.Table_Boolean} (@code{g-sptabo.ads})
  
  
--- 24531,24537 ----
  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{3bb}@anchor{gnat_rm/the_gnat_library id117}@anchor{3bc}
  @section @code{GNAT.Spitbol.Table_Boolean} (@code{g-sptabo.ads})
  
  
*************** for type @code{Standard.Boolean}, giving
*** 24957,24963 ****
  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{3b9}@anchor{gnat_rm/the_gnat_library id117}@anchor{3ba}
  @section @code{GNAT.Spitbol.Table_Integer} (@code{g-sptain.ads})
  
  
--- 24546,24552 ----
  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{3bd}@anchor{gnat_rm/the_gnat_library id118}@anchor{3be}
  @section @code{GNAT.Spitbol.Table_Integer} (@code{g-sptain.ads})
  
  
*************** for type @code{Standard.Integer}, giving
*** 24974,24980 ****
  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 id118}@anchor{3bb}@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3bc}
  @section @code{GNAT.Spitbol.Table_VString} (@code{g-sptavs.ads})
  
  
--- 24563,24569 ----
  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 id119}@anchor{3bf}@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3c0}
  @section @code{GNAT.Spitbol.Table_VString} (@code{g-sptavs.ads})
  
  
*************** a variable length string type, giving an
*** 24991,24997 ****
  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 id119}@anchor{3bd}@anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3be}
  @section @code{GNAT.SSE} (@code{g-sse.ads})
  
  
--- 24580,24586 ----
  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 id120}@anchor{3c1}@anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3c2}
  @section @code{GNAT.SSE} (@code{g-sse.ads})
  
  
*************** targets.  It exposes vector component ty
*** 25003,25009 ****
  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{3bf}@anchor{gnat_rm/the_gnat_library id120}@anchor{3c0}
  @section @code{GNAT.SSE.Vector_Types} (@code{g-ssvety.ads})
  
  
--- 24592,24598 ----
  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{3c3}@anchor{gnat_rm/the_gnat_library id121}@anchor{3c4}
  @section @code{GNAT.SSE.Vector_Types} (@code{g-ssvety.ads})
  
  
*************** introduction to the binding contents and
*** 25012,25018 ****
  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{3c1}@anchor{gnat_rm/the_gnat_library id121}@anchor{3c2}
  @section @code{GNAT.String_Hash} (@code{g-strhas.ads})
  
  
--- 24601,24607 ----
  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{3c5}@anchor{gnat_rm/the_gnat_library id122}@anchor{3c6}
  @section @code{GNAT.String_Hash} (@code{g-strhas.ads})
  
  
*************** Provides a generic hash function working
*** 25024,25030 ****
  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{3c3}@anchor{gnat_rm/the_gnat_library id122}@anchor{3c4}
  @section @code{GNAT.Strings} (@code{g-string.ads})
  
  
--- 24613,24619 ----
  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 id123}@anchor{3c7}@anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3c8}
  @section @code{GNAT.Strings} (@code{g-string.ads})
  
  
*************** Common String access types and related s
*** 25034,25040 ****
  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{3c5}@anchor{gnat_rm/the_gnat_library id123}@anchor{3c6}
  @section @code{GNAT.String_Split} (@code{g-strspl.ads})
  
  
--- 24623,24629 ----
  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{3c9}@anchor{gnat_rm/the_gnat_library id124}@anchor{3ca}
  @section @code{GNAT.String_Split} (@code{g-strspl.ads})
  
  
*************** to the resulting slices. This package is
*** 25048,25054 ****
  @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 id124}@anchor{3c7}@anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3c8}
  @section @code{GNAT.Table} (@code{g-table.ads})
  
  
--- 24637,24643 ----
  @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 id125}@anchor{3cb}@anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3cc}
  @section @code{GNAT.Table} (@code{g-table.ads})
  
  
*************** while an instantiation of @code{GNAT.Dyn
*** 25068,25074 ****
  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 id125}@anchor{3c9}@anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3ca}
  @section @code{GNAT.Task_Lock} (@code{g-tasloc.ads})
  
  
--- 24657,24663 ----
  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 id126}@anchor{3cd}@anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3ce}
  @section @code{GNAT.Task_Lock} (@code{g-tasloc.ads})
  
  
*************** single global task lock.  Appropriate fo
*** 25085,25091 ****
  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 id126}@anchor{3cb}@anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3cc}
  @section @code{GNAT.Time_Stamp} (@code{g-timsta.ads})
  
  
--- 24674,24680 ----
  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 id127}@anchor{3cf}@anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3d0}
  @section @code{GNAT.Time_Stamp} (@code{g-timsta.ads})
  
  
*************** represents the current date and time in
*** 25100,25106 ****
  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 id127}@anchor{3cd}@anchor{gnat_rm/the_gnat_library gnat-threads-g-thread-ads}@anchor{3ce}
  @section @code{GNAT.Threads} (@code{g-thread.ads})
  
  
--- 24689,24695 ----
  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{3d1}@anchor{gnat_rm/the_gnat_library id128}@anchor{3d2}
  @section @code{GNAT.Threads} (@code{g-thread.ads})
  
  
*************** further details if your program has thre
*** 25117,25123 ****
  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 id128}@anchor{3cf}@anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3d0}
  @section @code{GNAT.Traceback} (@code{g-traceb.ads})
  
  
--- 24706,24712 ----
  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 id129}@anchor{3d3}@anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3d4}
  @section @code{GNAT.Traceback} (@code{g-traceb.ads})
  
  
*************** Provides a facility for obtaining non-sy
*** 25129,25135 ****
  in various debugging situations.
  
  @node GNAT Traceback Symbolic g-trasym ads,GNAT UTF_32 g-table ads,GNAT Traceback g-traceb ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3d1}@anchor{gnat_rm/the_gnat_library id129}@anchor{3d2}
  @section @code{GNAT.Traceback.Symbolic} (@code{g-trasym.ads})
  
  
--- 24718,24724 ----
  in various debugging situations.
  
  @node GNAT Traceback Symbolic g-trasym ads,GNAT UTF_32 g-table ads,GNAT Traceback g-traceb ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id130}@anchor{3d5}@anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3d6}
  @section @code{GNAT.Traceback.Symbolic} (@code{g-trasym.ads})
  
  
*************** in various debugging situations.
*** 25138,25144 ****
  @geindex Trace back facilities
  
  @node GNAT UTF_32 g-table ads,GNAT Wide_Spelling_Checker g-u3spch ads,GNAT Traceback Symbolic g-trasym ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id130}@anchor{3d3}@anchor{gnat_rm/the_gnat_library gnat-utf-32-g-table-ads}@anchor{3d4}
  @section @code{GNAT.UTF_32} (@code{g-table.ads})
  
  
--- 24727,24733 ----
  @geindex Trace back facilities
  
  @node GNAT UTF_32 g-table ads,GNAT Wide_Spelling_Checker g-u3spch ads,GNAT Traceback Symbolic g-trasym ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id131}@anchor{3d7}@anchor{gnat_rm/the_gnat_library gnat-utf-32-g-table-ads}@anchor{3d8}
  @section @code{GNAT.UTF_32} (@code{g-table.ads})
  
  
*************** lower case to upper case fold routine co
*** 25157,25163 ****
  the Ada 2005 rules for identifier equivalence.
  
  @node GNAT Wide_Spelling_Checker g-u3spch ads,GNAT Wide_Spelling_Checker g-wispch ads,GNAT UTF_32 g-table ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-u3spch-ads}@anchor{3d5}@anchor{gnat_rm/the_gnat_library id131}@anchor{3d6}
  @section @code{GNAT.Wide_Spelling_Checker} (@code{g-u3spch.ads})
  
  
--- 24746,24752 ----
  the Ada 2005 rules for identifier equivalence.
  
  @node GNAT Wide_Spelling_Checker g-u3spch ads,GNAT Wide_Spelling_Checker g-wispch ads,GNAT UTF_32 g-table ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-u3spch-ads}@anchor{3d9}@anchor{gnat_rm/the_gnat_library id132}@anchor{3da}
  @section @code{GNAT.Wide_Spelling_Checker} (@code{g-u3spch.ads})
  
  
*************** near misspelling of another wide wide st
*** 25170,25176 ****
  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 Wide_Spelling_Checker g-u3spch ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3d7}@anchor{gnat_rm/the_gnat_library id132}@anchor{3d8}
  @section @code{GNAT.Wide_Spelling_Checker} (@code{g-wispch.ads})
  
  
--- 24759,24765 ----
  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 Wide_Spelling_Checker g-u3spch ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3db}@anchor{gnat_rm/the_gnat_library id133}@anchor{3dc}
  @section @code{GNAT.Wide_Spelling_Checker} (@code{g-wispch.ads})
  
  
*************** Provides a function for determining whet
*** 25182,25188 ****
  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 id133}@anchor{3d9}@anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3da}
  @section @code{GNAT.Wide_String_Split} (@code{g-wistsp.ads})
  
  
--- 24771,24777 ----
  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 id134}@anchor{3dd}@anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3de}
  @section @code{GNAT.Wide_String_Split} (@code{g-wistsp.ads})
  
  
*************** to the resulting slices. This package is
*** 25196,25202 ****
  @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{3db}@anchor{gnat_rm/the_gnat_library id134}@anchor{3dc}
  @section @code{GNAT.Wide_Wide_Spelling_Checker} (@code{g-zspche.ads})
  
  
--- 24785,24791 ----
  @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{3df}@anchor{gnat_rm/the_gnat_library id135}@anchor{3e0}
  @section @code{GNAT.Wide_Wide_Spelling_Checker} (@code{g-zspche.ads})
  
  
*************** Provides a function for determining whet
*** 25208,25214 ****
  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{3dd}@anchor{gnat_rm/the_gnat_library id135}@anchor{3de}
  @section @code{GNAT.Wide_Wide_String_Split} (@code{g-zistsp.ads})
  
  
--- 24797,24803 ----
  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{3e1}@anchor{gnat_rm/the_gnat_library id136}@anchor{3e2}
  @section @code{GNAT.Wide_Wide_String_Split} (@code{g-zistsp.ads})
  
  
*************** to the resulting slices. This package is
*** 25222,25228 ****
  @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 interfaces-c-extensions-i-cexten-ads}@anchor{3df}@anchor{gnat_rm/the_gnat_library id136}@anchor{3e0}
  @section @code{Interfaces.C.Extensions} (@code{i-cexten.ads})
  
  
--- 24811,24817 ----
  @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 interfaces-c-extensions-i-cexten-ads}@anchor{3e3}@anchor{gnat_rm/the_gnat_library id137}@anchor{3e4}
  @section @code{Interfaces.C.Extensions} (@code{i-cexten.ads})
  
  
*************** for use with either manually or automati
*** 25233,25239 ****
  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 interfaces-c-streams-i-cstrea-ads}@anchor{3e1}@anchor{gnat_rm/the_gnat_library id137}@anchor{3e2}
  @section @code{Interfaces.C.Streams} (@code{i-cstrea.ads})
  
  
--- 24822,24828 ----
  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 id138}@anchor{3e5}@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{3e6}
  @section @code{Interfaces.C.Streams} (@code{i-cstrea.ads})
  
  
*************** This package is a binding for the most c
*** 25246,25252 ****
  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 id138}@anchor{3e3}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{3e4}
  @section @code{Interfaces.Packed_Decimal} (@code{i-pacdec.ads})
  
  
--- 24835,24841 ----
  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 interfaces-packed-decimal-i-pacdec-ads}@anchor{3e7}@anchor{gnat_rm/the_gnat_library id139}@anchor{3e8}
  @section @code{Interfaces.Packed_Decimal} (@code{i-pacdec.ads})
  
  
*************** from a packed decimal format compatible
*** 25261,25267 ****
  mainframes.
  
  @node Interfaces VxWorks i-vxwork ads,Interfaces VxWorks Int_Connection i-vxinco ads,Interfaces Packed_Decimal i-pacdec ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id139}@anchor{3e5}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3e6}
  @section @code{Interfaces.VxWorks} (@code{i-vxwork.ads})
  
  
--- 24850,24856 ----
  mainframes.
  
  @node Interfaces VxWorks i-vxwork ads,Interfaces VxWorks Int_Connection i-vxinco ads,Interfaces Packed_Decimal i-pacdec ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3e9}@anchor{gnat_rm/the_gnat_library id140}@anchor{3ea}
  @section @code{Interfaces.VxWorks} (@code{i-vxwork.ads})
  
  
*************** In particular, it interfaces with the
*** 25277,25283 ****
  VxWorks hardware interrupt facilities.
  
  @node Interfaces VxWorks Int_Connection i-vxinco ads,Interfaces VxWorks IO i-vxwoio ads,Interfaces VxWorks i-vxwork ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library interfaces-vxworks-int-connection-i-vxinco-ads}@anchor{3e7}@anchor{gnat_rm/the_gnat_library id140}@anchor{3e8}
  @section @code{Interfaces.VxWorks.Int_Connection} (@code{i-vxinco.ads})
  
  
--- 24866,24872 ----
  VxWorks hardware interrupt facilities.
  
  @node Interfaces VxWorks Int_Connection i-vxinco ads,Interfaces VxWorks IO i-vxwoio ads,Interfaces VxWorks i-vxwork ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library interfaces-vxworks-int-connection-i-vxinco-ads}@anchor{3eb}@anchor{gnat_rm/the_gnat_library id141}@anchor{3ec}
  @section @code{Interfaces.VxWorks.Int_Connection} (@code{i-vxinco.ads})
  
  
*************** intConnect() with a custom routine for i
*** 25293,25299 ****
  handlers.
  
  @node Interfaces VxWorks IO i-vxwoio ads,System Address_Image s-addima ads,Interfaces VxWorks Int_Connection i-vxinco ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{3e9}@anchor{gnat_rm/the_gnat_library id141}@anchor{3ea}
  @section @code{Interfaces.VxWorks.IO} (@code{i-vxwoio.ads})
  
  
--- 24882,24888 ----
  handlers.
  
  @node Interfaces VxWorks IO i-vxwoio ads,System Address_Image s-addima ads,Interfaces VxWorks Int_Connection i-vxinco ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{3ed}@anchor{gnat_rm/the_gnat_library id142}@anchor{3ee}
  @section @code{Interfaces.VxWorks.IO} (@code{i-vxwoio.ads})
  
  
*************** function codes. A particular use of this
*** 25316,25322 ****
  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 system-address-image-s-addima-ads}@anchor{3eb}@anchor{gnat_rm/the_gnat_library id142}@anchor{3ec}
  @section @code{System.Address_Image} (@code{s-addima.ads})
  
  
--- 24905,24911 ----
  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 system-address-image-s-addima-ads}@anchor{3ef}@anchor{gnat_rm/the_gnat_library id143}@anchor{3f0}
  @section @code{System.Address_Image} (@code{s-addima.ads})
  
  
*************** function that gives an (implementation d
*** 25332,25338 ****
  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 system-assertions-s-assert-ads}@anchor{3ed}@anchor{gnat_rm/the_gnat_library id143}@anchor{3ee}
  @section @code{System.Assertions} (@code{s-assert.ads})
  
  
--- 24921,24927 ----
  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 id144}@anchor{3f1}@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{3f2}
  @section @code{System.Assertions} (@code{s-assert.ads})
  
  
*************** by an run-time assertion failure, as wel
*** 25348,25354 ****
  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 id144}@anchor{3ef}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{3f0}
  @section @code{System.Atomic_Counters} (@code{s-atocou.ads})
  
  
--- 24937,24943 ----
  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 id145}@anchor{3f3}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{3f4}
  @section @code{System.Atomic_Counters} (@code{s-atocou.ads})
  
  
*************** on most targets, including all Alpha, ia
*** 25362,25368 ****
  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 system-memory-s-memory-ads}@anchor{3f1}@anchor{gnat_rm/the_gnat_library id145}@anchor{3f2}
  @section @code{System.Memory} (@code{s-memory.ads})
  
  
--- 24951,24957 ----
  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 system-memory-s-memory-ads}@anchor{3f5}@anchor{gnat_rm/the_gnat_library id146}@anchor{3f6}
  @section @code{System.Memory} (@code{s-memory.ads})
  
  
*************** calls to this unit may be made for low l
*** 25380,25386 ****
  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 id146}@anchor{3f3}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{3f4}
  @section @code{System.Multiprocessors} (@code{s-multip.ads})
  
  
--- 24969,24975 ----
  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 id147}@anchor{3f7}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{3f8}
  @section @code{System.Multiprocessors} (@code{s-multip.ads})
  
  
*************** in GNAT we also make it available in Ada
*** 25393,25399 ****
  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 system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{3f5}@anchor{gnat_rm/the_gnat_library id147}@anchor{3f6}
  @section @code{System.Multiprocessors.Dispatching_Domains} (@code{s-mudido.ads})
  
  
--- 24982,24988 ----
  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 system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{3f9}@anchor{gnat_rm/the_gnat_library id148}@anchor{3fa}
  @section @code{System.Multiprocessors.Dispatching_Domains} (@code{s-mudido.ads})
  
  
*************** in GNAT we also make it available in Ada
*** 25406,25412 ****
  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 id148}@anchor{3f7}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{3f8}
  @section @code{System.Partition_Interface} (@code{s-parint.ads})
  
  
--- 24995,25001 ----
  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 id149}@anchor{3fb}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{3fc}
  @section @code{System.Partition_Interface} (@code{s-parint.ads})
  
  
*************** is used primarily in a distribution cont
*** 25419,25425 ****
  with @code{GLADE}.
  
  @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 id149}@anchor{3f9}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{3fa}
  @section @code{System.Pool_Global} (@code{s-pooglo.ads})
  
  
--- 25008,25014 ----
  with @code{GLADE}.
  
  @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 id150}@anchor{3fd}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{3fe}
  @section @code{System.Pool_Global} (@code{s-pooglo.ads})
  
  
*************** declared. It uses malloc/free to allocat
*** 25436,25442 ****
  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 system-pool-local-s-pooloc-ads}@anchor{3fb}@anchor{gnat_rm/the_gnat_library id150}@anchor{3fc}
  @section @code{System.Pool_Local} (@code{s-pooloc.ads})
  
  
--- 25025,25031 ----
  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 system-pool-local-s-pooloc-ads}@anchor{3ff}@anchor{gnat_rm/the_gnat_library id151}@anchor{400}
  @section @code{System.Pool_Local} (@code{s-pooloc.ads})
  
  
*************** a list of allocated blocks, so that all
*** 25453,25459 ****
  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 system-restrictions-s-restri-ads}@anchor{3fd}@anchor{gnat_rm/the_gnat_library id151}@anchor{3fe}
  @section @code{System.Restrictions} (@code{s-restri.ads})
  
  
--- 25042,25048 ----
  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 id152}@anchor{401}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{402}
  @section @code{System.Restrictions} (@code{s-restri.ads})
  
  
*************** compiler determined information on which
*** 25469,25475 ****
  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 system-rident-s-rident-ads}@anchor{3ff}@anchor{gnat_rm/the_gnat_library id152}@anchor{400}
  @section @code{System.Rident} (@code{s-rident.ads})
  
  
--- 25058,25064 ----
  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 system-rident-s-rident-ads}@anchor{403}@anchor{gnat_rm/the_gnat_library id153}@anchor{404}
  @section @code{System.Rident} (@code{s-rident.ads})
  
  
*************** since the necessary instantiation is inc
*** 25485,25491 ****
  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 id153}@anchor{401}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{402}
  @section @code{System.Strings.Stream_Ops} (@code{s-ststop.ads})
  
  
--- 25074,25080 ----
  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 id154}@anchor{405}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{406}
  @section @code{System.Strings.Stream_Ops} (@code{s-ststop.ads})
  
  
*************** stream attributes are applied to string
*** 25501,25507 ****
  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 system-unsigned-types-s-unstyp-ads}@anchor{403}@anchor{gnat_rm/the_gnat_library id154}@anchor{404}
  @section @code{System.Unsigned_Types} (@code{s-unstyp.ads})
  
  
--- 25090,25096 ----
  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 system-unsigned-types-s-unstyp-ads}@anchor{407}@anchor{gnat_rm/the_gnat_library id155}@anchor{408}
  @section @code{System.Unsigned_Types} (@code{s-unstyp.ads})
  
  
*************** also contains some related definitions f
*** 25514,25520 ****
  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 system-wch-cnv-s-wchcnv-ads}@anchor{405}@anchor{gnat_rm/the_gnat_library id155}@anchor{406}
  @section @code{System.Wch_Cnv} (@code{s-wchcnv.ads})
  
  
--- 25103,25109 ----
  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 system-wch-cnv-s-wchcnv-ads}@anchor{409}@anchor{gnat_rm/the_gnat_library id156}@anchor{40a}
  @section @code{System.Wch_Cnv} (@code{s-wchcnv.ads})
  
  
*************** encoding method.  It uses definitions in
*** 25535,25541 ****
  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 id156}@anchor{407}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{408}
  @section @code{System.Wch_Con} (@code{s-wchcon.ads})
  
  
--- 25124,25130 ----
  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 id157}@anchor{40b}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{40c}
  @section @code{System.Wch_Con} (@code{s-wchcon.ads})
  
  
*************** in ordinary strings.  These definitions
*** 25547,25553 ****
  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 interfacing-to-other-languages}@anchor{11}@anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{409}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{40a}
  @chapter Interfacing to Other Languages
  
  
--- 25136,25142 ----
  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 interfacing-to-other-languages}@anchor{11}@anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{40d}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{40e}
  @chapter Interfacing to Other Languages
  
  
*************** provided.
*** 25565,25571 ****
  @end menu
  
  @node Interfacing to C,Interfacing to C++,,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{40b}@anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{40c}
  @section Interfacing to C
  
  
--- 25154,25160 ----
  @end menu
  
  @node Interfacing to C,Interfacing to C++,,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{40f}@anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{410}
  @section Interfacing to C
  
  
*************** of the length corresponding to the @code
*** 25705,25711 ****
  @end itemize
  
  @node Interfacing to C++,Interfacing to COBOL,Interfacing to C,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{40d}@anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{4a}
  @section Interfacing to C++
  
  
--- 25294,25300 ----
  @end itemize
  
  @node Interfacing to C++,Interfacing to COBOL,Interfacing to C,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{411}@anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{47}
  @section Interfacing to C++
  
  
*************** The @code{External_Name} is the name of
*** 25762,25768 ****
  cover a specific C++ exception in an exception handler.
  
  @node Interfacing to COBOL,Interfacing to Fortran,Interfacing to C++,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{40e}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{40f}
  @section Interfacing to COBOL
  
  
--- 25351,25357 ----
  cover a specific C++ exception in an exception handler.
  
  @node Interfacing to COBOL,Interfacing to Fortran,Interfacing to C++,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{412}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{413}
  @section Interfacing to COBOL
  
  
*************** Interfacing to COBOL is achieved as desc
*** 25770,25776 ****
  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{410}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{411}
  @section Interfacing to Fortran
  
  
--- 25359,25365 ----
  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{414}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{415}
  @section Interfacing to Fortran
  
  
*************** multi-dimensional array causes the array
*** 25780,25786 ****
  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 interfacing-to-non-gnat-ada-code}@anchor{412}@anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{413}
  @section Interfacing to non-GNAT Ada code
  
  
--- 25369,25375 ----
  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 interfacing-to-non-gnat-ada-code}@anchor{416}@anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{417}
  @section Interfacing to non-GNAT Ada code
  
  
*************** values or simple record types without va
*** 25804,25810 ****
  types with fixed bounds.
  
  @node Specialized Needs Annexes,Implementation of Specific Ada Features,Interfacing to Other Languages,Top
! @anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12}@anchor{gnat_rm/specialized_needs_annexes doc}@anchor{414}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{415}
  @chapter Specialized Needs Annexes
  
  
--- 25393,25399 ----
  types with fixed bounds.
  
  @node Specialized Needs Annexes,Implementation of Specific Ada Features,Interfacing to Other Languages,Top
! @anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12}@anchor{gnat_rm/specialized_needs_annexes doc}@anchor{418}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{419}
  @chapter Specialized Needs Annexes
  
  
*************** in Ada 2005) is fully implemented.
*** 25845,25851 ****
  @end table
  
  @node Implementation of Specific Ada Features,Implementation of Ada 2012 Features,Specialized Needs Annexes,Top
! @anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{13}@anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{416}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{417}
  @chapter Implementation of Specific Ada Features
  
  
--- 25434,25440 ----
  @end table
  
  @node Implementation of Specific Ada Features,Implementation of Ada 2012 Features,Specialized Needs Annexes,Top
! @anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{13}@anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{41a}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{41b}
  @chapter Implementation of Specific Ada Features
  
  
*************** facilities.
*** 25863,25869 ****
  @end menu
  
  @node Machine Code Insertions,GNAT Implementation of Tasking,,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{16c}@anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{418}
  @section Machine Code Insertions
  
  
--- 25452,25458 ----
  @end menu
  
  @node Machine Code Insertions,GNAT Implementation of Tasking,,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{169}@anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{41c}
  @section Machine Code Insertions
  
  
*************** according to normal visibility rules. In
*** 26031,26037 ****
  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 id3}@anchor{419}@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{41a}
  @section GNAT Implementation of Tasking
  
  
--- 25620,25626 ----
  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 id3}@anchor{41d}@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{41e}
  @section GNAT Implementation of Tasking
  
  
*************** to compliance with the Real-Time Systems
*** 26047,26053 ****
  @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 mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{41b}@anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{41c}
  @subsection Mapping Ada Tasks onto the Underlying Kernel Threads
  
  
--- 25636,25642 ----
  @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 mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{41f}@anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{420}
  @subsection Mapping Ada Tasks onto the Underlying Kernel Threads
  
  
*************** support this functionality when the pare
*** 26116,26122 ****
  @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 id5}@anchor{41d}@anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{41e}
  @subsection Ensuring Compliance with the Real-Time Annex
  
  
--- 25705,25711 ----
  @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 id5}@anchor{421}@anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{422}
  @subsection Ensuring Compliance with the Real-Time Annex
  
  
*************** placed at the end.
*** 26167,26173 ****
  @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{41f}
  @subsection Support for Locking Policies
  
  
--- 25756,25762 ----
  @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{423}
  @subsection Support for Locking Policies
  
  
*************** then ceiling locking is used.
*** 26201,26207 ****
  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 id6}@anchor{420}@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{421}
  @section GNAT Implementation of Shared Passive Packages
  
  
--- 25790,25796 ----
  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 id6}@anchor{424}@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{425}
  @section GNAT Implementation of Shared Passive Packages
  
  
*************** This is used to provide the required loc
*** 26299,26305 ****
  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{422}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{423}
  @section Code Generation for Array Aggregates
  
  
--- 25888,25894 ----
  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{426}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{427}
  @section Code Generation for Array Aggregates
  
  
*************** component values and static subtypes als
*** 26330,26336 ****
  @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 static-constant-aggregates-with-static-bounds}@anchor{424}@anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{425}
  @subsection Static constant aggregates with static bounds
  
  
--- 25919,25925 ----
  @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 static-constant-aggregates-with-static-bounds}@anchor{428}@anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{429}
  @subsection Static constant aggregates with static bounds
  
  
*************** Zero2: constant two_dim := (others => (o
*** 26377,26383 ****
  @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{426}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{427}
  @subsection Constant aggregates with unconstrained nominal types
  
  
--- 25966,25972 ----
  @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{42a}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{42b}
  @subsection Constant aggregates with unconstrained nominal types
  
  
*************** Cr_Unc : constant One_Unc := (12,24,36);
*** 26392,26398 ****
  @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 id10}@anchor{428}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{429}
  @subsection Aggregates with static bounds
  
  
--- 25981,25987 ----
  @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 id10}@anchor{42c}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{42d}
  @subsection Aggregates with static bounds
  
  
*************** end loop;
*** 26420,26426 ****
  @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 id11}@anchor{42a}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{42b}
  @subsection Aggregates with nonstatic bounds
  
  
--- 26009,26015 ----
  @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 id11}@anchor{42e}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{42f}
  @subsection Aggregates with nonstatic bounds
  
  
*************** have to be applied to sub-arrays individ
*** 26431,26437 ****
  compatible subtypes.
  
  @node Aggregates in assignment statements,,Aggregates with nonstatic bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{42c}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{42d}
  @subsection Aggregates in assignment statements
  
  
--- 26020,26026 ----
  compatible subtypes.
  
  @node Aggregates in assignment statements,,Aggregates with nonstatic bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{430}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{431}
  @subsection Aggregates in assignment statements
  
  
*************** a temporary (created either by the front
*** 26473,26479 ****
  that temporary will be copied onto the target.
  
  @node The Size of Discriminated Records with Default Discriminants,Strict Conformance to the Ada Reference Manual,Code Generation for Array Aggregates,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{42e}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{42f}
  @section The Size of Discriminated Records with Default Discriminants
  
  
--- 26062,26068 ----
  that temporary will be copied onto the target.
  
  @node The Size of Discriminated Records with Default Discriminants,Strict Conformance to the Ada Reference Manual,Code Generation for Array Aggregates,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{432}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{433}
  @section The Size of Discriminated Records with Default Discriminants
  
  
*************** say) must be consistent, so it is impera
*** 26553,26559 ****
  remain invariant.
  
  @node 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 strict-conformance-to-the-ada-reference-manual}@anchor{430}@anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{431}
  @section Strict Conformance to the Ada Reference Manual
  
  
--- 26142,26148 ----
  remain invariant.
  
  @node 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 strict-conformance-to-the-ada-reference-manual}@anchor{434}@anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{435}
  @section Strict Conformance to the Ada Reference Manual
  
  
*************** behavior (although at the cost of a sign
*** 26580,26586 ****
  infinite and NaN values are properly generated.
  
  @node Implementation of Ada 2012 Features,Obsolescent Features,Implementation of Specific Ada Features,Top
! @anchor{gnat_rm/implementation_of_ada_2012_features doc}@anchor{432}@anchor{gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features}@anchor{14}@anchor{gnat_rm/implementation_of_ada_2012_features id1}@anchor{433}
  @chapter Implementation of Ada 2012 Features
  
  
--- 26169,26175 ----
  infinite and NaN values are properly generated.
  
  @node Implementation of Ada 2012 Features,Obsolescent Features,Implementation of Specific Ada Features,Top
! @anchor{gnat_rm/implementation_of_ada_2012_features doc}@anchor{436}@anchor{gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features}@anchor{14}@anchor{gnat_rm/implementation_of_ada_2012_features id1}@anchor{437}
  @chapter Implementation of Ada 2012 Features
  
  
*************** RM References:  H.04 (8/1)
*** 28746,28752 ****
  @end itemize
  
  @node Obsolescent Features,Compatibility and Porting Guide,Implementation of Ada 2012 Features,Top
! @anchor{gnat_rm/obsolescent_features id1}@anchor{434}@anchor{gnat_rm/obsolescent_features doc}@anchor{435}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{15}
  @chapter Obsolescent Features
  
  
--- 28335,28341 ----
  @end itemize
  
  @node Obsolescent Features,Compatibility and Porting Guide,Implementation of Ada 2012 Features,Top
! @anchor{gnat_rm/obsolescent_features id1}@anchor{438}@anchor{gnat_rm/obsolescent_features doc}@anchor{439}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{15}
  @chapter Obsolescent Features
  
  
*************** compatibility purposes.
*** 28765,28771 ****
  @end menu
  
  @node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{436}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{437}
  @section pragma No_Run_Time
  
  
--- 28354,28360 ----
  @end menu
  
  @node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{43a}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{43b}
  @section pragma No_Run_Time
  
  
*************** preferred usage is to use an appropriate
*** 28778,28784 ****
  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 id3}@anchor{438}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{439}
  @section pragma Ravenscar
  
  
--- 28367,28373 ----
  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 id3}@anchor{43c}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{43d}
  @section pragma Ravenscar
  
  
*************** The pragma @code{Ravenscar} has exactly
*** 28787,28793 ****
  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 pragma-restricted-run-time}@anchor{43a}@anchor{gnat_rm/obsolescent_features id4}@anchor{43b}
  @section pragma Restricted_Run_Time
  
  
--- 28376,28382 ----
  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 pragma-restricted-run-time}@anchor{43e}@anchor{gnat_rm/obsolescent_features id4}@anchor{43f}
  @section pragma Restricted_Run_Time
  
  
*************** preferred since the Ada 2005 pragma @cod
*** 28797,28803 ****
  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 pragma-task-info}@anchor{43c}@anchor{gnat_rm/obsolescent_features id5}@anchor{43d}
  @section pragma Task_Info
  
  
--- 28386,28392 ----
  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 pragma-task-info}@anchor{440}@anchor{gnat_rm/obsolescent_features id5}@anchor{441}
  @section pragma Task_Info
  
  
*************** in the spec of package System.Task_Info
*** 28823,28829 ****
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{43e}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{43f}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
--- 28412,28418 ----
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{442}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{443}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
*************** to support the @code{Task_Info} pragma.
*** 28833,28839 ****
  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 compatibility-and-porting-guide}@anchor{16}@anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{440}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{441}
  @chapter Compatibility and Porting Guide
  
  
--- 28422,28428 ----
  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 compatibility-and-porting-guide}@anchor{16}@anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{444}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{445}
  @chapter Compatibility and Porting Guide
  
  
*************** applications developed in other Ada envi
*** 28855,28861 ****
  @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{442}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{443}
  @section Writing Portable Fixed-Point Declarations
  
  
--- 28444,28450 ----
  @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{446}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{447}
  @section Writing Portable Fixed-Point Declarations
  
  
*************** If you follow this scheme you will be gu
*** 28977,28983 ****
  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{444}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{445}
  @section Compatibility with Ada 83
  
  
--- 28566,28572 ----
  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{448}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{449}
  @section Compatibility with Ada 83
  
  
*************** following subsections treat the most lik
*** 29005,29011 ****
  @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{446}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{447}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
--- 28594,28600 ----
  @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{44a}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{44b}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
*************** the fix is usually simply to add the @co
*** 29105,29111 ****
  @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 more-deterministic-semantics}@anchor{448}@anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{449}
  @subsection More deterministic semantics
  
  
--- 28694,28700 ----
  @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 more-deterministic-semantics}@anchor{44c}@anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{44d}
  @subsection More deterministic semantics
  
  
*************** which open select branches are executed.
*** 29133,29139 ****
  @end itemize
  
  @node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{44a}@anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{44b}
  @subsection Changed semantics
  
  
--- 28722,28728 ----
  @end itemize
  
  @node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{44e}@anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{44f}
  @subsection Changed semantics
  
  
*************** covers only the restricted range.
*** 29175,29181 ****
  @end itemize
  
  @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{44c}@anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{44d}
  @subsection Other language compatibility issues
  
  
--- 28764,28770 ----
  @end itemize
  
  @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{450}@anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{451}
  @subsection Other language compatibility issues
  
  
*************** include @code{pragma Interface} and the
*** 29208,29214 ****
  @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{44e}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{44f}
  @section Compatibility between Ada 95 and Ada 2005
  
  
--- 28797,28803 ----
  @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{452}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{453}
  @section Compatibility between Ada 95 and Ada 2005
  
  
*************** can declare a function returning a value
*** 29280,29286 ****
  @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 implementation-dependent-characteristics}@anchor{450}@anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{451}
  @section Implementation-dependent characteristics
  
  
--- 28869,28875 ----
  @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 implementation-dependent-characteristics}@anchor{454}@anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{455}
  @section Implementation-dependent characteristics
  
  
*************** transition from certain Ada 83 compilers
*** 29303,29309 ****
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{452}@anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{453}
  @subsection Implementation-defined pragmas
  
  
--- 28892,28898 ----
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{456}@anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{457}
  @subsection Implementation-defined pragmas
  
  
*************** avoiding compiler rejection of units tha
*** 29325,29331 ****
  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{454}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{455}
  @subsection Implementation-defined attributes
  
  
--- 28914,28920 ----
  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{458}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{459}
  @subsection Implementation-defined attributes
  
  
*************** Ada 83, GNAT supplies the attributes @co
*** 29339,29345 ****
  @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{456}@anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{457}
  @subsection Libraries
  
  
--- 28928,28934 ----
  @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{45a}@anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{45b}
  @subsection Libraries
  
  
*************** be preferable to retrofit the applicatio
*** 29368,29374 ****
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{458}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{459}
  @subsection Elaboration order
  
  
--- 28957,28963 ----
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{45c}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{45d}
  @subsection Elaboration order
  
  
*************** pragmas either globally (as an effect of
*** 29404,29410 ****
  @end itemize
  
  @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{45a}@anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{45b}
  @subsection Target-specific aspects
  
  
--- 28993,28999 ----
  @end itemize
  
  @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{45e}@anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{45f}
  @subsection Target-specific aspects
  
  
*************** on the robustness of the original design
*** 29417,29426 ****
  Ada 2005 and Ada 2012) 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{45c,,Representation Clauses}.
  
  @node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{45d}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{45e}
  @section Compatibility with Other Ada Systems
  
  
--- 29006,29015 ----
  Ada 2005 and Ada 2012) 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{460,,Representation Clauses}.
  
  @node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{461}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{462}
  @section Compatibility with Other Ada Systems
  
  
*************** far beyond this minimal set, as describe
*** 29463,29469 ****
  @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 representation-clauses}@anchor{45c}@anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{45f}
  @section Representation Clauses
  
  
--- 29052,29058 ----
  @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 representation-clauses}@anchor{460}@anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{463}
  @section Representation Clauses
  
  
*************** with thin pointers.
*** 29556,29562 ****
  @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{460}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{461}
  @section Compatibility with HP Ada 83
  
  
--- 29145,29151 ----
  @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{464}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{465}
  @section Compatibility with HP Ada 83
  
  
*************** extension of package System.
*** 29586,29592 ****
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license doc}@anchor{462}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{463}
  @chapter GNU Free Documentation License
  
  
--- 29175,29181 ----
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license doc}@anchor{466}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{467}
  @chapter GNU Free Documentation License
  
  
diff -Nrcpad gcc-10.3.0/gcc/ada/gnat_ugn.texi gcc-11.1.0/gcc/ada/gnat_ugn.texi
*** gcc-10.3.0/gcc/ada/gnat_ugn.texi	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnat_ugn.texi	Tue Apr 27 10:00:12 2021
***************
*** 21,31 ****
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , Dec 10, 2019
  
  AdaCore
  
! Copyright @copyright{} 2008-2020, Free Software Foundation
  @end quotation
  
  @end copying
--- 21,31 ----
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , Dec 11, 2020
  
  AdaCore
  
! Copyright @copyright{} 2008-2021, Free Software Foundation
  @end quotation
  
  @end copying
*************** Copyright @copyright{} 2008-2020, Free S
*** 41,47 ****
  @c %** end of user preamble
  
  @ifnottex
! @node Top
  @top GNAT User's Guide for Native Platforms
  @insertcopying
  @end ifnottex
--- 41,47 ----
  @c %** end of user preamble
  
  @ifnottex
! @node Top, About This Guide
  @top GNAT User's Guide for Native Platforms
  @insertcopying
  @end ifnottex
*************** About This Guide
*** 85,99 ****
  * What This Guide Contains:: 
  * What You Should Know before Reading This Guide:: 
  * Related Information:: 
- * A Note to Readers of Previous Versions of the Manual:: 
  * Conventions:: 
  
  Getting Started with GNAT
  
  * Running GNAT:: 
  * Running a Simple Ada Program:: 
  * Running a Program with Multiple Units:: 
- * Using the gnatmake Utility:: 
  
  The GNAT Compilation Model
  
--- 85,98 ----
  * What This Guide Contains:: 
  * What You Should Know before Reading This Guide:: 
  * Related Information:: 
  * Conventions:: 
  
  Getting Started with GNAT
  
+ * System Requirements:: 
  * Running GNAT:: 
  * Running a Simple Ada Program:: 
  * Running a Program with Multiple Units:: 
  
  The GNAT Compilation Model
  
*************** GNAT Utility Programs
*** 313,320 ****
  
  * The File Cleanup Utility gnatclean:: 
  * The GNAT Library Browser gnatls:: 
- * The Cross-Referencing Tools gnatxref and gnatfind:: 
- * The Ada to HTML Converter gnathtml:: 
  
  The File Cleanup Utility gnatclean
  
--- 312,317 ----
*************** The GNAT Library Browser gnatls
*** 327,351 ****
  * Switches for gnatls:: 
  * Example of gnatls Usage:: 
  
- The Cross-Referencing Tools gnatxref and gnatfind
- 
- * gnatxref Switches:: 
- * gnatfind Switches:: 
- * Configuration Files for gnatxref and gnatfind:: 
- * Regular Expressions in gnatfind and gnatxref:: 
- * Examples of gnatxref Usage:: 
- * Examples of gnatfind Usage:: 
- 
- Examples of gnatxref Usage
- 
- * General Usage:: 
- * Using gnatxref with vi:: 
- 
- The Ada to HTML Converter gnathtml
- 
- * Invoking gnathtml:: 
- * Installing gnathtml:: 
- 
  GNAT and Program Execution
  
  * Running and Debugging Ada Programs:: 
--- 324,329 ----
*************** Performance Considerations
*** 403,409 ****
  * Optimization Levels:: 
  * Debugging Optimized Code:: 
  * Inlining of Subprograms:: 
! * Floating_Point_Operations:: 
  * Vectorization of loops:: 
  * Other Optimization Switches:: 
  * Optimization and Strict Aliasing:: 
--- 381,387 ----
  * Optimization Levels:: 
  * Debugging Optimized Code:: 
  * Inlining of Subprograms:: 
! * Floating Point Operations:: 
  * Vectorization of loops:: 
  * Other Optimization Switches:: 
  * Optimization and Strict Aliasing:: 
*************** toolset for the full Ada programming lan
*** 571,589 ****
  It documents the features of the compiler and tools, and explains
  how to use them to build Ada applications.
  
! GNAT implements Ada 95, Ada 2005 and Ada 2012, and it may also be
  invoked in Ada 83 compatibility mode.
  By default, GNAT assumes Ada 2012, but you can override with a
  compiler switch (@ref{6,,Compiling Different Versions of Ada})
  to explicitly specify the language version.
  Throughout this manual, references to 'Ada' without a year suffix
! apply to all Ada 95/2005/2012 versions of the language.
  
  @menu
  * What This Guide Contains:: 
  * What You Should Know before Reading This Guide:: 
  * Related Information:: 
- * A Note to Readers of Previous Versions of the Manual:: 
  * Conventions:: 
  
  @end menu
--- 549,566 ----
  It documents the features of the compiler and tools, and explains
  how to use them to build Ada applications.
  
! GNAT implements Ada 95, Ada 2005, Ada 2012, and Ada 202x, and it may also be
  invoked in Ada 83 compatibility mode.
  By default, GNAT assumes Ada 2012, but you can override with a
  compiler switch (@ref{6,,Compiling Different Versions of Ada})
  to explicitly specify the language version.
  Throughout this manual, references to 'Ada' without a year suffix
! apply to all Ada versions of the language, starting with Ada 95.
  
  @menu
  * What This Guide Contains:: 
  * What You Should Know before Reading This Guide:: 
  * Related Information:: 
  * Conventions:: 
  
  @end menu
*************** in an Ada program.
*** 656,667 ****
  This guide assumes a basic familiarity with the Ada 95 language, as
  described in the International Standard ANSI/ISO/IEC-8652:1995, January
  1995.
- It does not require knowledge of the features introduced by Ada 2005
- or Ada 2012.
  Reference manuals for Ada 95, Ada 2005, and Ada 2012 are included in
  the GNAT documentation package.
  
! @node Related Information,A Note to Readers of Previous Versions of the Manual,What You Should Know before Reading This Guide,About This Guide
  @anchor{gnat_ugn/about_this_guide related-information}@anchor{12}
  @section Related Information
  
--- 633,642 ----
  This guide assumes a basic familiarity with the Ada 95 language, as
  described in the International Standard ANSI/ISO/IEC-8652:1995, January
  1995.
  Reference manuals for Ada 95, Ada 2005, and Ada 2012 are included in
  the GNAT documentation package.
  
! @node Related Information,Conventions,What You Should Know before Reading This Guide,About This Guide
  @anchor{gnat_ugn/about_this_guide related-information}@anchor{12}
  @section Related Information
  
*************** for full information on the extensible e
*** 699,843 ****
  environment Emacs.
  @end itemize
  
! @node A Note to Readers of Previous Versions of the Manual,Conventions,Related Information,About This Guide
! @anchor{gnat_ugn/about_this_guide a-note-to-readers-of-previous-versions-of-the-manual}@anchor{13}
! @section A Note to Readers of Previous Versions of the Manual
! 
! 
! In early 2015 the GNAT manuals were transitioned to the
! reStructuredText (rst) / Sphinx documentation generator technology.
! During that process the @cite{GNAT User's Guide} was reorganized
! so that related topics would be described together in the same chapter
! or appendix.  Here's a summary of the major changes realized in
! the new document structure.
! 
! 
! @itemize *
! 
! @item 
! @ref{9,,The GNAT Compilation Model} has been extended so that it now covers
! the following material:
! 
! 
! @itemize -
! 
! @item 
! The @code{gnatname}, @code{gnatkr}, and @code{gnatchop} tools
! 
! @item 
! @ref{14,,Configuration Pragmas}
! 
! @item 
! @ref{15,,GNAT and Libraries}
! 
! @item 
! @ref{16,,Conditional Compilation} including @ref{17,,Preprocessing with gnatprep}
! and @ref{18,,Integrated Preprocessing}
! 
! @item 
! @ref{19,,Generating Ada Bindings for C and C++ headers}
! 
! @item 
! @ref{1a,,Using GNAT Files with External Tools}
! @end itemize
! 
! @item 
! @ref{a,,Building Executable Programs with GNAT} is a new chapter consolidating
! the following content:
! 
! 
! @itemize -
! 
! @item 
! @ref{1b,,Building with gnatmake}
! 
! @item 
! @ref{1c,,Compiling with gcc}
! 
! @item 
! @ref{1d,,Binding with gnatbind}
! 
! @item 
! @ref{1e,,Linking with gnatlink}
! 
! @item 
! @ref{1f,,Using the GNU make Utility}
! @end itemize
! 
! @item 
! @ref{b,,GNAT Utility Programs} is a new chapter consolidating the information about several
! GNAT tools:
! 
! 
! 
! @itemize -
! 
! @item 
! @ref{20,,The File Cleanup Utility gnatclean}
! 
! @item 
! @ref{21,,The GNAT Library Browser gnatls}
! 
! @item 
! @ref{22,,The Cross-Referencing Tools gnatxref and gnatfind}
! 
! @item 
! @ref{23,,The Ada to HTML Converter gnathtml}
! @end itemize
! 
! @item 
! @ref{c,,GNAT and Program Execution} is a new chapter consolidating the following:
! 
! 
! @itemize -
! 
! @item 
! @ref{24,,Running and Debugging Ada Programs}
! 
! @item 
! @ref{25,,Profiling}
! 
! @item 
! @ref{26,,Improving Performance}
! 
! @item 
! @ref{27,,Overflow Check Handling in GNAT}
! 
! @item 
! @ref{28,,Performing Dimensionality Analysis in GNAT}
! 
! @item 
! @ref{29,,Stack Related Facilities}
! 
! @item 
! @ref{2a,,Memory Management Issues}
! @end itemize
! 
! @item 
! @ref{d,,Platform-Specific Information} is a new appendix consolidating the following:
! 
! 
! @itemize -
! 
! @item 
! @ref{2b,,Run-Time Libraries}
! 
! @item 
! @ref{2c,,Microsoft Windows Topics}
! 
! @item 
! @ref{2d,,Mac OS Topics}
! @end itemize
! 
! @item 
! The @emph{Compatibility and Porting Guide} appendix has been moved to the
! @cite{GNAT Reference Manual}. It now includes a section
! @emph{Writing Portable Fixed-Point Declarations} which was previously
! a separate chapter in the @cite{GNAT User's Guide}.
! @end itemize
! 
! @node Conventions,,A Note to Readers of Previous Versions of the Manual,About This Guide
! @anchor{gnat_ugn/about_this_guide conventions}@anchor{2e}
  @section Conventions
  
  
--- 674,681 ----
  environment Emacs.
  @end itemize
  
! @node Conventions,,Related Information,About This Guide
! @anchor{gnat_ugn/about_this_guide conventions}@anchor{13}
  @section Conventions
  
  
*************** the '\' character should be used instead
*** 890,919 ****
  @end itemize
  
  @node Getting Started with GNAT,The GNAT Compilation Model,About This Guide,Top
! @anchor{gnat_ugn/getting_started_with_gnat getting-started-with-gnat}@anchor{8}@anchor{gnat_ugn/getting_started_with_gnat doc}@anchor{2f}@anchor{gnat_ugn/getting_started_with_gnat id1}@anchor{30}
  @chapter Getting Started with GNAT
  
  
  This chapter describes how to use GNAT's command line interface to build
  executable Ada programs.
  On most platforms a visually oriented Integrated Development Environment
! is also available, the GNAT Programming Studio (GNAT Studio).
  GNAT Studio offers a graphical "look and feel", support for development in
  other programming languages, comprehensive browsing features, and
  many other capabilities.
! For information on GNAT Studio please refer to
! @cite{Using the GNAT Programming Studio}.
  
  @menu
  * Running GNAT:: 
  * Running a Simple Ada Program:: 
  * Running a Program with Multiple Units:: 
- * Using the gnatmake Utility:: 
  
  @end menu
  
! @node Running GNAT,Running a Simple Ada Program,,Getting Started with GNAT
! @anchor{gnat_ugn/getting_started_with_gnat running-gnat}@anchor{31}@anchor{gnat_ugn/getting_started_with_gnat id2}@anchor{32}
  @section Running GNAT
  
  
--- 728,786 ----
  @end itemize
  
  @node Getting Started with GNAT,The GNAT Compilation Model,About This Guide,Top
! @anchor{gnat_ugn/getting_started_with_gnat getting-started-with-gnat}@anchor{8}@anchor{gnat_ugn/getting_started_with_gnat doc}@anchor{14}@anchor{gnat_ugn/getting_started_with_gnat id1}@anchor{15}
  @chapter Getting Started with GNAT
  
  
  This chapter describes how to use GNAT's command line interface to build
  executable Ada programs.
  On most platforms a visually oriented Integrated Development Environment
! is also available: GNAT Studio.
  GNAT Studio offers a graphical "look and feel", support for development in
  other programming languages, comprehensive browsing features, and
  many other capabilities.
! For information on GNAT Studio please refer to the
! @cite{GNAT Studio documentation}.
  
  @menu
+ * System Requirements:: 
  * Running GNAT:: 
  * Running a Simple Ada Program:: 
  * Running a Program with Multiple Units:: 
  
  @end menu
  
! @node System Requirements,Running GNAT,,Getting Started with GNAT
! @anchor{gnat_ugn/getting_started_with_gnat id2}@anchor{16}@anchor{gnat_ugn/getting_started_with_gnat system-requirements}@anchor{17}
! @section System Requirements
! 
! 
! Even though any machine can run the GNAT toolset and GNAT Studio IDE, in order
! to get the best experience, we recommend using a machine with as many cores
! as possible since all individual compilations can run in parallel.
! A comfortable setup for a compiler server is a machine with 24 physical cores
! or more, with at least 48 GB of memory (2 GB per core).
! 
! For a desktop machine, a minimum of 4 cores is recommended (8 preferred),
! with at least 2GB per core (so 8 to 16GB).
! 
! In addition, for running and navigating sources in GNAT Studio smoothly, we
! recommend at least 1.5 GB plus 3 GB of RAM per 1 million source line of code.
! In other words, we recommend at least 3 GB for for 500K lines of code and
! 7.5 GB for 2 million lines of code.
! 
! Note that using local and fast drives will also make a difference in terms of
! build and link time. Network drives such as NFS, SMB, or worse, configuration
! management filesystems (such as ClearCase dynamic views) should be avoided as
! much as possible and will produce very degraded performance (typically 2 to 3
! times slower than on local fast drives). If such slow drives cannot be avoided
! for accessing the source code, then you should at least configure your project
! file so that the result of the compilation is stored on a drive local to the
! machine performing the run. This can be achieved by setting the @code{Object_Dir}
! project file attribute.
! 
! @node Running GNAT,Running a Simple Ada Program,System Requirements,Getting Started with GNAT
! @anchor{gnat_ugn/getting_started_with_gnat running-gnat}@anchor{18}@anchor{gnat_ugn/getting_started_with_gnat id3}@anchor{19}
  @section Running GNAT
  
  
*************** utility program that, given the name of
*** 938,944 ****
  performs the necessary compilation, binding and linking steps.
  
  @node Running a Simple Ada Program,Running a Program with Multiple Units,Running GNAT,Getting Started with GNAT
! @anchor{gnat_ugn/getting_started_with_gnat running-a-simple-ada-program}@anchor{33}@anchor{gnat_ugn/getting_started_with_gnat id3}@anchor{34}
  @section Running a Simple Ada Program
  
  
--- 805,811 ----
  performs the necessary compilation, binding and linking steps.
  
  @node Running a Simple Ada Program,Running a Program with Multiple Units,Running GNAT,Getting Started with GNAT
! @anchor{gnat_ugn/getting_started_with_gnat running-a-simple-ada-program}@anchor{1a}@anchor{gnat_ugn/getting_started_with_gnat id4}@anchor{1b}
  @section Running a Simple Ada Program
  
  
*************** extension is @code{ads} for a
*** 967,978 ****
  spec and @code{adb} for a body.
  You can override this default file naming convention by use of the
  special pragma @code{Source_File_Name} (for further information please
! see @ref{35,,Using Other File Names}).
  Alternatively, if you want to rename your files according to this default
  convention, which is probably more convenient if you will be using GNAT
  for all your compilations, then the @code{gnatchop} utility
  can be used to generate correctly-named source files
! (see @ref{36,,Renaming Files with gnatchop}).
  
  You can compile the program using the following command (@code{$} is used
  as the command prompt in the examples in this document):
--- 834,845 ----
  spec and @code{adb} for a body.
  You can override this default file naming convention by use of the
  special pragma @code{Source_File_Name} (for further information please
! see @ref{1c,,Using Other File Names}).
  Alternatively, if you want to rename your files according to this default
  convention, which is probably more convenient if you will be using GNAT
  for all your compilations, then the @code{gnatchop} utility
  can be used to generate correctly-named source files
! (see @ref{1d,,Renaming Files with gnatchop}).
  
  You can compile the program using the following command (@code{$} is used
  as the command prompt in the examples in this document):
*************** file corresponding to your Ada program.
*** 998,1021 ****
  an 'Ada Library Information' file @code{hello.ali},
  which contains additional information used to check
  that an Ada program is consistent.
- To build an executable file,
- use @code{gnatbind} to bind the program
- and @code{gnatlink} to link it. The
- argument to both @code{gnatbind} and @code{gnatlink} is the name of the
- @code{ALI} file, but the default extension of @code{.ali} can
- be omitted. This means that in the most common case, the argument
- is simply the name of the main program:
- 
- @example
- $ gnatbind hello
- $ gnatlink hello
- @end example
  
! A simpler method of carrying out these steps is to use @code{gnatmake},
! a master program that invokes all the required
! compilation, binding and linking tools in the correct order. In particular,
! @code{gnatmake} automatically recompiles any sources that have been
! modified since they were last compiled, or sources that depend
  on such modified sources, so that 'version skew' is avoided.
  
  @geindex Version skew (avoided by `@w{`}gnatmake`@w{`})
--- 865,876 ----
  an 'Ada Library Information' file @code{hello.ali},
  which contains additional information used to check
  that an Ada program is consistent.
  
! To build an executable file, use either @code{gnatmake} or gprbuild with
! the name of the main file: these tools are builders that will take care of
! all the necessary build steps in the correct order.
! In particular, these builders automatically recompile any sources that have
! been modified since they were last compiled, or sources that depend
  on such modified sources, so that 'version skew' is avoided.
  
  @geindex Version skew (avoided by `@w{`}gnatmake`@w{`})
*************** Hello WORLD!
*** 1042,1049 ****
  
  appear in response to this command.
  
! @node Running a Program with Multiple Units,Using the gnatmake Utility,Running a Simple Ada Program,Getting Started with GNAT
! @anchor{gnat_ugn/getting_started_with_gnat id4}@anchor{37}@anchor{gnat_ugn/getting_started_with_gnat running-a-program-with-multiple-units}@anchor{38}
  @section Running a Program with Multiple Units
  
  
--- 897,904 ----
  
  appear in response to this command.
  
! @node Running a Program with Multiple Units,,Running a Simple Ada Program,Getting Started with GNAT
! @anchor{gnat_ugn/getting_started_with_gnat id5}@anchor{1e}@anchor{gnat_ugn/getting_started_with_gnat running-a-program-with-multiple-units}@anchor{1f}
  @section Running a Program with Multiple Units
  
  
*************** body of package @code{Greetings}
*** 1096,1112 ****
  body of main program
  @end table
  
- To build an executable version of
- this program, we could use four separate steps to compile, bind, and link
- the program, as follows:
- 
- @example
- $ gcc -c gmain.adb
- $ gcc -c greetings.adb
- $ gnatbind gmain
- $ gnatlink gmain
- @end example
- 
  Note that there is no required order of compilation when using GNAT.
  In particular it is perfectly fine to compile the main program first.
  Also, it is not necessary to compile package specs in the case where
--- 951,956 ----
*************** generation, then use the @code{-gnatc} s
*** 1118,1191 ****
  $ gcc -c greetings.ads -gnatc
  @end example
  
! Although the compilation can be done in separate steps as in the
! above example, in practice it is almost always more convenient
! to use the @code{gnatmake} tool. All you need to know in this case
! is the name of the main program's source file. The effect of the above four
! commands can be achieved with a single one:
! 
! @example
! $ gnatmake gmain.adb
! @end example
! 
! In the next section we discuss the advantages of using @code{gnatmake} in
! more detail.
! 
! @node Using the gnatmake Utility,,Running a Program with Multiple Units,Getting Started with GNAT
! @anchor{gnat_ugn/getting_started_with_gnat using-the-gnatmake-utility}@anchor{39}@anchor{gnat_ugn/getting_started_with_gnat id5}@anchor{3a}
! @section Using the @code{gnatmake} Utility
! 
! 
! If you work on a program by compiling single components at a time using
! @code{gcc}, you typically keep track of the units you modify. In order to
! build a consistent system, you compile not only these units, but also any
! units that depend on the units you have modified.
! For example, in the preceding case,
! if you edit @code{gmain.adb}, you only need to recompile that file. But if
! you edit @code{greetings.ads}, you must recompile both
! @code{greetings.adb} and @code{gmain.adb}, because both files contain
! units that depend on @code{greetings.ads}.
! 
! @code{gnatbind} will warn you if you forget one of these compilation
! steps, so that it is impossible to generate an inconsistent program as a
! result of forgetting to do a compilation. Nevertheless it is tedious and
! error-prone to keep track of dependencies among units.
! One approach to handle the dependency-bookkeeping is to use a
! makefile. However, makefiles present maintenance problems of their own:
! if the dependencies change as you change the program, you must make
! sure that the makefile is kept up-to-date manually, which is also an
! error-prone process.
! 
! The @code{gnatmake} utility takes care of these details automatically.
! Invoke it using either one of the following forms:
  
  @example
  $ gnatmake gmain.adb
- $ gnatmake gmain
  @end example
  
- The argument is the name of the file containing the main program;
- you may omit the extension. @code{gnatmake}
- examines the environment, automatically recompiles any files that need
- recompiling, and binds and links the resulting set of object files,
- generating the executable file, @code{gmain}.
- In a large program, it
- can be extremely helpful to use @code{gnatmake}, because working out by hand
- what needs to be recompiled can be difficult.
- 
- Note that @code{gnatmake} takes into account all the Ada rules that
- establish dependencies among units. These include dependencies that result
- from inlining subprogram bodies, and from
- generic instantiation. Unlike some other
- Ada make tools, @code{gnatmake} does not rely on the dependencies that were
- found by the compiler on a previous compilation, which may possibly
- be wrong when sources change. @code{gnatmake} determines the exact set of
- dependencies from scratch each time it is run.
- 
  @c -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit
  
  @node The GNAT Compilation Model,Building Executable Programs with GNAT,Getting Started with GNAT,Top
! @anchor{gnat_ugn/the_gnat_compilation_model doc}@anchor{3b}@anchor{gnat_ugn/the_gnat_compilation_model the-gnat-compilation-model}@anchor{9}@anchor{gnat_ugn/the_gnat_compilation_model id1}@anchor{3c}
  @chapter The GNAT Compilation Model
  
  
--- 962,978 ----
  $ gcc -c greetings.ads -gnatc
  @end example
  
! Although the compilation can be done in separate steps, in practice it is
! almost always more convenient to use the @code{gnatmake} or @code{gprbuild} tools:
  
  @example
  $ gnatmake gmain.adb
  @end example
  
  @c -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit
  
  @node The GNAT Compilation Model,Building Executable Programs with GNAT,Getting Started with GNAT,Top
! @anchor{gnat_ugn/the_gnat_compilation_model doc}@anchor{20}@anchor{gnat_ugn/the_gnat_compilation_model the-gnat-compilation-model}@anchor{9}@anchor{gnat_ugn/the_gnat_compilation_model id1}@anchor{21}
  @chapter The GNAT Compilation Model
  
  
*************** Topics related to source file makeup and
*** 1209,1252 ****
  @itemize *
  
  @item 
! @ref{3d,,Source Representation}
  
  @item 
! @ref{3e,,Foreign Language Representation}
  
  @item 
! @ref{3f,,File Naming Topics and Utilities}
  @end itemize
  
  @item 
! @ref{14,,Configuration Pragmas}
  
  @item 
! @ref{40,,Generating Object Files}
  
  @item 
! @ref{41,,Source Dependencies}
  
  @item 
! @ref{42,,The Ada Library Information Files}
  
  @item 
! @ref{43,,Binding an Ada Program}
  
  @item 
! @ref{15,,GNAT and Libraries}
  
  @item 
! @ref{16,,Conditional Compilation}
  
  @item 
! @ref{44,,Mixed Language Programming}
  
  @item 
! @ref{45,,GNAT and Other Compilation Models}
  
  @item 
! @ref{1a,,Using GNAT Files with External Tools}
  @end itemize
  
  @menu
--- 996,1039 ----
  @itemize *
  
  @item 
! @ref{22,,Source Representation}
  
  @item 
! @ref{23,,Foreign Language Representation}
  
  @item 
! @ref{24,,File Naming Topics and Utilities}
  @end itemize
  
  @item 
! @ref{25,,Configuration Pragmas}
  
  @item 
! @ref{26,,Generating Object Files}
  
  @item 
! @ref{27,,Source Dependencies}
  
  @item 
! @ref{28,,The Ada Library Information Files}
  
  @item 
! @ref{29,,Binding an Ada Program}
  
  @item 
! @ref{2a,,GNAT and Libraries}
  
  @item 
! @ref{2b,,Conditional Compilation}
  
  @item 
! @ref{2c,,Mixed Language Programming}
  
  @item 
! @ref{2d,,GNAT and Other Compilation Models}
  
  @item 
! @ref{2e,,Using GNAT Files with External Tools}
  @end itemize
  
  @menu
*************** Topics related to source file makeup and
*** 1267,1273 ****
  @end menu
  
  @node Source Representation,Foreign Language Representation,,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model source-representation}@anchor{3d}@anchor{gnat_ugn/the_gnat_compilation_model id2}@anchor{46}
  @section Source Representation
  
  
--- 1054,1060 ----
  @end menu
  
  @node Source Representation,Foreign Language Representation,,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model source-representation}@anchor{22}@anchor{gnat_ugn/the_gnat_compilation_model id2}@anchor{2f}
  @section Source Representation
  
  
*************** Topics related to source file makeup and
*** 1282,1288 ****
  Ada source programs are represented in standard text files, using
  Latin-1 coding. Latin-1 is an 8-bit code that includes the familiar
  7-bit ASCII set, plus additional characters used for
! representing foreign languages (see @ref{3e,,Foreign Language Representation}
  for support of non-USA character sets). The format effector characters
  are represented using their standard ASCII encodings, as follows:
  
--- 1069,1075 ----
  Ada source programs are represented in standard text files, using
  Latin-1 coding. Latin-1 is an 8-bit code that includes the familiar
  7-bit ASCII set, plus additional characters used for
! representing foreign languages (see @ref{23,,Foreign Language Representation}
  for support of non-USA character sets). The format effector characters
  are represented using their standard ASCII encodings, as follows:
  
*************** compilation units) is represented using
*** 1393,1405 ****
  you will place each subunit or child unit in a separate file.
  
  @node Foreign Language Representation,File Naming Topics and Utilities,Source Representation,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model foreign-language-representation}@anchor{3e}@anchor{gnat_ugn/the_gnat_compilation_model id3}@anchor{47}
  @section Foreign Language Representation
  
  
  GNAT supports the standard character sets defined in Ada as well as
  several other non-standard character sets for use in localized versions
! of the compiler (@ref{48,,Character Set Control}).
  
  @menu
  * Latin-1:: 
--- 1180,1192 ----
  you will place each subunit or child unit in a separate file.
  
  @node Foreign Language Representation,File Naming Topics and Utilities,Source Representation,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model foreign-language-representation}@anchor{23}@anchor{gnat_ugn/the_gnat_compilation_model id3}@anchor{30}
  @section Foreign Language Representation
  
  
  GNAT supports the standard character sets defined in Ada as well as
  several other non-standard character sets for use in localized versions
! of the compiler (@ref{31,,Character Set Control}).
  
  @menu
  * Latin-1:: 
*************** of the compiler (@ref{48,,Character Set
*** 1410,1416 ****
  @end menu
  
  @node Latin-1,Other 8-Bit Codes,,Foreign Language Representation
! @anchor{gnat_ugn/the_gnat_compilation_model id4}@anchor{49}@anchor{gnat_ugn/the_gnat_compilation_model latin-1}@anchor{4a}
  @subsection Latin-1
  
  
--- 1197,1203 ----
  @end menu
  
  @node Latin-1,Other 8-Bit Codes,,Foreign Language Representation
! @anchor{gnat_ugn/the_gnat_compilation_model id4}@anchor{32}@anchor{gnat_ugn/the_gnat_compilation_model latin-1}@anchor{33}
  @subsection Latin-1
  
  
*************** string literals. In addition, the extend
*** 1433,1439 ****
  letters can be used in identifiers.
  
  @node Other 8-Bit Codes,Wide_Character Encodings,Latin-1,Foreign Language Representation
! @anchor{gnat_ugn/the_gnat_compilation_model other-8-bit-codes}@anchor{4b}@anchor{gnat_ugn/the_gnat_compilation_model id5}@anchor{4c}
  @subsection Other 8-Bit Codes
  
  
--- 1220,1226 ----
  letters can be used in identifiers.
  
  @node Other 8-Bit Codes,Wide_Character Encodings,Latin-1,Foreign Language Representation
! @anchor{gnat_ugn/the_gnat_compilation_model other-8-bit-codes}@anchor{34}@anchor{gnat_ugn/the_gnat_compilation_model id5}@anchor{35}
  @subsection Other 8-Bit Codes
  
  
*************** the GNAT compiler sources. You will need
*** 1550,1556 ****
  of GNAT to obtain this file.
  
  @node Wide_Character Encodings,Wide_Wide_Character Encodings,Other 8-Bit Codes,Foreign Language Representation
! @anchor{gnat_ugn/the_gnat_compilation_model id6}@anchor{4d}@anchor{gnat_ugn/the_gnat_compilation_model wide-character-encodings}@anchor{4e}
  @subsection Wide_Character Encodings
  
  
--- 1337,1343 ----
  of GNAT to obtain this file.
  
  @node Wide_Character Encodings,Wide_Wide_Character Encodings,Other 8-Bit Codes,Foreign Language Representation
! @anchor{gnat_ugn/the_gnat_compilation_model id6}@anchor{36}@anchor{gnat_ugn/the_gnat_compilation_model wide-character-encodings}@anchor{37}
  @subsection Wide_Character Encodings
  
  
*************** use of the upper half of the Latin-1 set
*** 1661,1667 ****
  @end cartouche
  
  @node Wide_Wide_Character Encodings,,Wide_Character Encodings,Foreign Language Representation
! @anchor{gnat_ugn/the_gnat_compilation_model id7}@anchor{4f}@anchor{gnat_ugn/the_gnat_compilation_model wide-wide-character-encodings}@anchor{50}
  @subsection Wide_Wide_Character Encodings
  
  
--- 1448,1454 ----
  @end cartouche
  
  @node Wide_Wide_Character Encodings,,Wide_Character Encodings,Foreign Language Representation
! @anchor{gnat_ugn/the_gnat_compilation_model id7}@anchor{38}@anchor{gnat_ugn/the_gnat_compilation_model wide-wide-character-encodings}@anchor{39}
  @subsection Wide_Wide_Character Encodings
  
  
*************** ACATS (Ada Conformity Assessment Test Su
*** 1713,1719 ****
  @end table
  
  @node File Naming Topics and Utilities,Configuration Pragmas,Foreign Language Representation,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model id8}@anchor{51}@anchor{gnat_ugn/the_gnat_compilation_model file-naming-topics-and-utilities}@anchor{3f}
  @section File Naming Topics and Utilities
  
  
--- 1500,1506 ----
  @end table
  
  @node File Naming Topics and Utilities,Configuration Pragmas,Foreign Language Representation,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model id8}@anchor{3a}@anchor{gnat_ugn/the_gnat_compilation_model file-naming-topics-and-utilities}@anchor{24}
  @section File Naming Topics and Utilities
  
  
*************** source files correspond to the Ada compi
*** 1732,1738 ****
  @end menu
  
  @node File Naming Rules,Using Other File Names,,File Naming Topics and Utilities
! @anchor{gnat_ugn/the_gnat_compilation_model file-naming-rules}@anchor{52}@anchor{gnat_ugn/the_gnat_compilation_model id9}@anchor{53}
  @subsection File Naming Rules
  
  
--- 1519,1525 ----
  @end menu
  
  @node File Naming Rules,Using Other File Names,,File Naming Topics and Utilities
! @anchor{gnat_ugn/the_gnat_compilation_model file-naming-rules}@anchor{3b}@anchor{gnat_ugn/the_gnat_compilation_model id9}@anchor{3c}
  @subsection File Naming Rules
  
  
*************** unit names are long (for example, if chi
*** 1841,1847 ****
  heavily nested). An option is available to shorten such long file names
  (called file name 'krunching'). This may be particularly useful when
  programs being developed with GNAT are to be used on operating systems
! with limited file name lengths. @ref{54,,Using gnatkr}.
  
  Of course, no file shortening algorithm can guarantee uniqueness over
  all possible unit names; if file name krunching is used, it is your
--- 1628,1634 ----
  heavily nested). An option is available to shorten such long file names
  (called file name 'krunching'). This may be particularly useful when
  programs being developed with GNAT are to be used on operating systems
! with limited file name lengths. @ref{3d,,Using gnatkr}.
  
  Of course, no file shortening algorithm can guarantee uniqueness over
  all possible unit names; if file name krunching is used, it is your
*************** can specify the exact file names that yo
*** 1850,1856 ****
  in the next section. Finally, if your Ada programs are migrating from a
  compiler with a different naming convention, you can use the gnatchop
  utility to produce source files that follow the GNAT naming conventions.
! (For details see @ref{36,,Renaming Files with gnatchop}.)
  
  Note: in the case of Windows or Mac OS operating systems, case is not
  significant. So for example on Windows if the canonical name is
--- 1637,1643 ----
  in the next section. Finally, if your Ada programs are migrating from a
  compiler with a different naming convention, you can use the gnatchop
  utility to produce source files that follow the GNAT naming conventions.
! (For details see @ref{1d,,Renaming Files with gnatchop}.)
  
  Note: in the case of Windows or Mac OS operating systems, case is not
  significant. So for example on Windows if the canonical name is
*************** if you want to use other than canonicall
*** 1860,1866 ****
  you need to follow the procedures described in the next section.
  
  @node Using Other File Names,Alternative File Naming Schemes,File Naming Rules,File Naming Topics and Utilities
! @anchor{gnat_ugn/the_gnat_compilation_model id10}@anchor{55}@anchor{gnat_ugn/the_gnat_compilation_model using-other-file-names}@anchor{35}
  @subsection Using Other File Names
  
  
--- 1647,1653 ----
  you need to follow the procedures described in the next section.
  
  @node Using Other File Names,Alternative File Naming Schemes,File Naming Rules,File Naming Topics and Utilities
! @anchor{gnat_ugn/the_gnat_compilation_model id10}@anchor{3e}@anchor{gnat_ugn/the_gnat_compilation_model using-other-file-names}@anchor{1c}
  @subsection Using Other File Names
  
  
*************** normally it will be placed in the @code{
*** 1898,1904 ****
  file used to hold configuration
  pragmas that apply to a complete compilation environment.
  For more details on how the @code{gnat.adc} file is created and used
! see @ref{56,,Handling of Configuration Pragmas}.
  
  @geindex gnat.adc
  
--- 1685,1691 ----
  file used to hold configuration
  pragmas that apply to a complete compilation environment.
  For more details on how the @code{gnat.adc} file is created and used
! see @ref{3f,,Handling of Configuration Pragmas}.
  
  @geindex gnat.adc
  
*************** then it must be included in the @code{gn
*** 1920,1926 ****
  be omitted.
  
  @node Alternative File Naming Schemes,Handling Arbitrary File Naming Conventions with gnatname,Using Other File Names,File Naming Topics and Utilities
! @anchor{gnat_ugn/the_gnat_compilation_model id11}@anchor{57}@anchor{gnat_ugn/the_gnat_compilation_model alternative-file-naming-schemes}@anchor{58}
  @subsection Alternative File Naming Schemes
  
  
--- 1707,1713 ----
  be omitted.
  
  @node Alternative File Naming Schemes,Handling Arbitrary File Naming Conventions with gnatname,Using Other File Names,File Naming Topics and Utilities
! @anchor{gnat_ugn/the_gnat_compilation_model id11}@anchor{40}@anchor{gnat_ugn/the_gnat_compilation_model alternative-file-naming-schemes}@anchor{41}
  @subsection Alternative File Naming Schemes
  
  
*************** pragma Source_File_Name
*** 2064,2070 ****
  @geindex gnatname
  
  @node Handling Arbitrary File Naming Conventions with gnatname,File Name Krunching with gnatkr,Alternative File Naming Schemes,File Naming Topics and Utilities
! @anchor{gnat_ugn/the_gnat_compilation_model handling-arbitrary-file-naming-conventions-with-gnatname}@anchor{59}@anchor{gnat_ugn/the_gnat_compilation_model id12}@anchor{5a}
  @subsection Handling Arbitrary File Naming Conventions with @code{gnatname}
  
  
--- 1851,1857 ----
  @geindex gnatname
  
  @node Handling Arbitrary File Naming Conventions with gnatname,File Name Krunching with gnatkr,Alternative File Naming Schemes,File Naming Topics and Utilities
! @anchor{gnat_ugn/the_gnat_compilation_model handling-arbitrary-file-naming-conventions-with-gnatname}@anchor{42}@anchor{gnat_ugn/the_gnat_compilation_model id12}@anchor{43}
  @subsection Handling Arbitrary File Naming Conventions with @code{gnatname}
  
  
*************** pragma Source_File_Name
*** 2079,2085 ****
  @end menu
  
  @node Arbitrary File Naming Conventions,Running gnatname,,Handling Arbitrary File Naming Conventions with gnatname
! @anchor{gnat_ugn/the_gnat_compilation_model arbitrary-file-naming-conventions}@anchor{5b}@anchor{gnat_ugn/the_gnat_compilation_model id13}@anchor{5c}
  @subsubsection Arbitrary File Naming Conventions
  
  
--- 1866,1872 ----
  @end menu
  
  @node Arbitrary File Naming Conventions,Running gnatname,,Handling Arbitrary File Naming Conventions with gnatname
! @anchor{gnat_ugn/the_gnat_compilation_model arbitrary-file-naming-conventions}@anchor{44}@anchor{gnat_ugn/the_gnat_compilation_model id13}@anchor{45}
  @subsubsection Arbitrary File Naming Conventions
  
  
*************** does not need additional information.
*** 2090,2100 ****
  
  When the source file names do not follow the standard GNAT default file naming
  conventions, the GNAT compiler must be given additional information through
! a configuration pragmas file (@ref{14,,Configuration Pragmas})
  or a project file.
  When the non-standard file naming conventions are well-defined,
  a small number of pragmas @code{Source_File_Name} specifying a naming pattern
! (@ref{58,,Alternative File Naming Schemes}) may be sufficient. However,
  if the file naming conventions are irregular or arbitrary, a number
  of pragma @code{Source_File_Name} for individual compilation units
  must be defined.
--- 1877,1887 ----
  
  When the source file names do not follow the standard GNAT default file naming
  conventions, the GNAT compiler must be given additional information through
! a configuration pragmas file (@ref{25,,Configuration Pragmas})
  or a project file.
  When the non-standard file naming conventions are well-defined,
  a small number of pragmas @code{Source_File_Name} specifying a naming pattern
! (@ref{41,,Alternative File Naming Schemes}) may be sufficient. However,
  if the file naming conventions are irregular or arbitrary, a number
  of pragma @code{Source_File_Name} for individual compilation units
  must be defined.
*************** GNAT provides a tool @code{gnatname} to
*** 2104,2110 ****
  set of files.
  
  @node Running gnatname,Switches for gnatname,Arbitrary File Naming Conventions,Handling Arbitrary File Naming Conventions with gnatname
! @anchor{gnat_ugn/the_gnat_compilation_model running-gnatname}@anchor{5d}@anchor{gnat_ugn/the_gnat_compilation_model id14}@anchor{5e}
  @subsubsection Running @code{gnatname}
  
  
--- 1891,1897 ----
  set of files.
  
  @node Running gnatname,Switches for gnatname,Arbitrary File Naming Conventions,Handling Arbitrary File Naming Conventions with gnatname
! @anchor{gnat_ugn/the_gnat_compilation_model running-gnatname}@anchor{46}@anchor{gnat_ugn/the_gnat_compilation_model id14}@anchor{47}
  @subsubsection Running @code{gnatname}
  
  
*************** with pragmas @code{Source_File_Name} for
*** 2155,2161 ****
  unit.
  
  @node Switches for gnatname,Examples of gnatname Usage,Running gnatname,Handling Arbitrary File Naming Conventions with gnatname
! @anchor{gnat_ugn/the_gnat_compilation_model id15}@anchor{5f}@anchor{gnat_ugn/the_gnat_compilation_model switches-for-gnatname}@anchor{60}
  @subsubsection Switches for @code{gnatname}
  
  
--- 1942,1948 ----
  unit.
  
  @node Switches for gnatname,Examples of gnatname Usage,Running gnatname,Handling Arbitrary File Naming Conventions with gnatname
! @anchor{gnat_ugn/the_gnat_compilation_model id15}@anchor{48}@anchor{gnat_ugn/the_gnat_compilation_model switches-for-gnatname}@anchor{49}
  @subsubsection Switches for @code{gnatname}
  
  
*************** except those whose names end with @code{
*** 2338,2344 ****
  @end table
  
  @node Examples of gnatname Usage,,Switches for gnatname,Handling Arbitrary File Naming Conventions with gnatname
! @anchor{gnat_ugn/the_gnat_compilation_model examples-of-gnatname-usage}@anchor{61}@anchor{gnat_ugn/the_gnat_compilation_model id16}@anchor{62}
  @subsubsection Examples of @code{gnatname} Usage
  
  
--- 2125,2131 ----
  @end table
  
  @node Examples of gnatname Usage,,Switches for gnatname,Handling Arbitrary File Naming Conventions with gnatname
! @anchor{gnat_ugn/the_gnat_compilation_model examples-of-gnatname-usage}@anchor{4a}@anchor{gnat_ugn/the_gnat_compilation_model id16}@anchor{4b}
  @subsubsection Examples of @code{gnatname} Usage
  
  
*************** even in conjunction with one or several
*** 2364,2370 ****
  are used in this example.
  
  @node File Name Krunching with gnatkr,Renaming Files with gnatchop,Handling Arbitrary File Naming Conventions with gnatname,File Naming Topics and Utilities
! @anchor{gnat_ugn/the_gnat_compilation_model file-name-krunching-with-gnatkr}@anchor{63}@anchor{gnat_ugn/the_gnat_compilation_model id17}@anchor{64}
  @subsection File Name Krunching with @code{gnatkr}
  
  
--- 2151,2157 ----
  are used in this example.
  
  @node File Name Krunching with gnatkr,Renaming Files with gnatchop,Handling Arbitrary File Naming Conventions with gnatname,File Naming Topics and Utilities
! @anchor{gnat_ugn/the_gnat_compilation_model file-name-krunching-with-gnatkr}@anchor{4c}@anchor{gnat_ugn/the_gnat_compilation_model id17}@anchor{4d}
  @subsection File Name Krunching with @code{gnatkr}
  
  
*************** applying this shortening.
*** 2385,2391 ****
  @end menu
  
  @node About gnatkr,Using gnatkr,,File Name Krunching with gnatkr
! @anchor{gnat_ugn/the_gnat_compilation_model id18}@anchor{65}@anchor{gnat_ugn/the_gnat_compilation_model about-gnatkr}@anchor{66}
  @subsubsection About @code{gnatkr}
  
  
--- 2172,2178 ----
  @end menu
  
  @node About gnatkr,Using gnatkr,,File Name Krunching with gnatkr
! @anchor{gnat_ugn/the_gnat_compilation_model id18}@anchor{4e}@anchor{gnat_ugn/the_gnat_compilation_model about-gnatkr}@anchor{4f}
  @subsubsection About @code{gnatkr}
  
  
*************** The @code{gnatkr} utility can be used to
*** 2423,2429 ****
  a given file, when krunched to a specified maximum length.
  
  @node Using gnatkr,Krunching Method,About gnatkr,File Name Krunching with gnatkr
! @anchor{gnat_ugn/the_gnat_compilation_model id19}@anchor{67}@anchor{gnat_ugn/the_gnat_compilation_model using-gnatkr}@anchor{54}
  @subsubsection Using @code{gnatkr}
  
  
--- 2210,2216 ----
  a given file, when krunched to a specified maximum length.
  
  @node Using gnatkr,Krunching Method,About gnatkr,File Name Krunching with gnatkr
! @anchor{gnat_ugn/the_gnat_compilation_model id19}@anchor{50}@anchor{gnat_ugn/the_gnat_compilation_model using-gnatkr}@anchor{3d}
  @subsubsection Using @code{gnatkr}
  
  
*************** The output is the krunched name. The out
*** 2460,2466 ****
  original argument was a file name with an extension.
  
  @node Krunching Method,Examples of gnatkr Usage,Using gnatkr,File Name Krunching with gnatkr
! @anchor{gnat_ugn/the_gnat_compilation_model id20}@anchor{68}@anchor{gnat_ugn/the_gnat_compilation_model krunching-method}@anchor{69}
  @subsubsection Krunching Method
  
  
--- 2247,2253 ----
  original argument was a file name with an extension.
  
  @node Krunching Method,Examples of gnatkr Usage,Using gnatkr,File Name Krunching with gnatkr
! @anchor{gnat_ugn/the_gnat_compilation_model id20}@anchor{51}@anchor{gnat_ugn/the_gnat_compilation_model krunching-method}@anchor{52}
  @subsubsection Krunching Method
  
  
*************** program @code{gnatkr} is supplied for co
*** 2590,2596 ****
  krunched name of a file.
  
  @node Examples of gnatkr Usage,,Krunching Method,File Name Krunching with gnatkr
! @anchor{gnat_ugn/the_gnat_compilation_model id21}@anchor{6a}@anchor{gnat_ugn/the_gnat_compilation_model examples-of-gnatkr-usage}@anchor{6b}
  @subsubsection Examples of @code{gnatkr} Usage
  
  
--- 2377,2383 ----
  krunched name of a file.
  
  @node Examples of gnatkr Usage,,Krunching Method,File Name Krunching with gnatkr
! @anchor{gnat_ugn/the_gnat_compilation_model id21}@anchor{53}@anchor{gnat_ugn/the_gnat_compilation_model examples-of-gnatkr-usage}@anchor{54}
  @subsubsection Examples of @code{gnatkr} Usage
  
  
*************** $ gnatkr very_long_unit_name.ads/count=0
*** 2604,2610 ****
  @end example
  
  @node Renaming Files with gnatchop,,File Name Krunching with gnatkr,File Naming Topics and Utilities
! @anchor{gnat_ugn/the_gnat_compilation_model id22}@anchor{6c}@anchor{gnat_ugn/the_gnat_compilation_model renaming-files-with-gnatchop}@anchor{36}
  @subsection Renaming Files with @code{gnatchop}
  
  
--- 2391,2397 ----
  @end example
  
  @node Renaming Files with gnatchop,,File Name Krunching with gnatkr,File Naming Topics and Utilities
! @anchor{gnat_ugn/the_gnat_compilation_model id22}@anchor{55}@anchor{gnat_ugn/the_gnat_compilation_model renaming-files-with-gnatchop}@anchor{1d}
  @subsection Renaming Files with @code{gnatchop}
  
  
*************** files to meet the standard GNAT default
*** 2624,2630 ****
  @end menu
  
  @node Handling Files with Multiple Units,Operating gnatchop in Compilation Mode,,Renaming Files with gnatchop
! @anchor{gnat_ugn/the_gnat_compilation_model id23}@anchor{6d}@anchor{gnat_ugn/the_gnat_compilation_model handling-files-with-multiple-units}@anchor{6e}
  @subsubsection Handling Files with Multiple Units
  
  
--- 2411,2417 ----
  @end menu
  
  @node Handling Files with Multiple Units,Operating gnatchop in Compilation Mode,,Renaming Files with gnatchop
! @anchor{gnat_ugn/the_gnat_compilation_model id23}@anchor{56}@anchor{gnat_ugn/the_gnat_compilation_model handling-files-with-multiple-units}@anchor{57}
  @subsubsection Handling Files with Multiple Units
  
  
*************** The basic compilation model of GNAT requ
*** 2632,2654 ****
  compiler have only one unit and there be a strict correspondence
  between the file name and the unit name.
  
! The @code{gnatchop} utility allows both of these rules to be relaxed,
! allowing GNAT to process files which contain multiple compilation units
! and files with arbitrary file names. @code{gnatchop}
! reads the specified file and generates one or more output files,
! containing one unit per file. The unit and the file name correspond,
! as required by GNAT.
  
! If you want to permanently restructure a set of 'foreign' files so that
! they match the GNAT rules, and do the remaining development using the
! GNAT structure, you can simply use @code{gnatchop} once, generate the
! new set of files and work with them from that point on.
  
! Alternatively, if you want to keep your files in the 'foreign' format,
! perhaps to maintain compatibility with some other Ada compilation
! system, you can set up a procedure where you use @code{gnatchop} each
! time you compile, regarding the source files that it writes as temporary
! files that you throw away.
  
  Note that if your file containing multiple units starts with a byte order
  mark (BOM) specifying UTF-8 encoding, then the files generated by gnatchop
--- 2419,2436 ----
  compiler have only one unit and there be a strict correspondence
  between the file name and the unit name.
  
! If you want to keep your files with multiple units,
! perhaps to maintain compatibility with some other Ada compilation system,
! you can use @code{gnatname} to generate or update your project files.
! Generated or modified project files can be processed by GNAT.
  
! See @ref{42,,Handling Arbitrary File Naming Conventions with gnatname}
! for more details on how to use @cite{gnatname}.
  
! Alternatively, if you want to permanently restructure a set of 'foreign'
! files so that they match the GNAT rules, and do the remaining development
! using the GNAT structure, you can simply use @code{gnatchop} once, generate the
! new set of files and work with them from that point on.
  
  Note that if your file containing multiple units starts with a byte order
  mark (BOM) specifying UTF-8 encoding, then the files generated by gnatchop
*************** will each start with a copy of this BOM,
*** 2656,2662 ****
  automatically in UTF-8 mode without needing to specify an explicit encoding.
  
  @node Operating gnatchop in Compilation Mode,Command Line for gnatchop,Handling Files with Multiple Units,Renaming Files with gnatchop
! @anchor{gnat_ugn/the_gnat_compilation_model operating-gnatchop-in-compilation-mode}@anchor{6f}@anchor{gnat_ugn/the_gnat_compilation_model id24}@anchor{70}
  @subsubsection Operating gnatchop in Compilation Mode
  
  
--- 2438,2444 ----
  automatically in UTF-8 mode without needing to specify an explicit encoding.
  
  @node Operating gnatchop in Compilation Mode,Command Line for gnatchop,Handling Files with Multiple Units,Renaming Files with gnatchop
! @anchor{gnat_ugn/the_gnat_compilation_model operating-gnatchop-in-compilation-mode}@anchor{58}@anchor{gnat_ugn/the_gnat_compilation_model id24}@anchor{59}
  @subsubsection Operating gnatchop in Compilation Mode
  
  
*************** should apply to all subsequent compilati
*** 2689,2695 ****
  environment. Using GNAT, the current directory, possibly containing a
  @code{gnat.adc} file is the representation
  of a compilation environment. For more information on the
! @code{gnat.adc} file, see @ref{56,,Handling of Configuration Pragmas}.
  
  Second, in compilation mode, if @code{gnatchop}
  is given a file that starts with
--- 2471,2477 ----
  environment. Using GNAT, the current directory, possibly containing a
  @code{gnat.adc} file is the representation
  of a compilation environment. For more information on the
! @code{gnat.adc} file, see @ref{3f,,Handling of Configuration Pragmas}.
  
  Second, in compilation mode, if @code{gnatchop}
  is given a file that starts with
*************** switch provides the required behavior, a
*** 2716,2722 ****
  in which GNAT processes the ACVC tests.
  
  @node Command Line for gnatchop,Switches for gnatchop,Operating gnatchop in Compilation Mode,Renaming Files with gnatchop
! @anchor{gnat_ugn/the_gnat_compilation_model id25}@anchor{71}@anchor{gnat_ugn/the_gnat_compilation_model command-line-for-gnatchop}@anchor{72}
  @subsubsection Command Line for @code{gnatchop}
  
  
--- 2498,2504 ----
  in which GNAT processes the ACVC tests.
  
  @node Command Line for gnatchop,Switches for gnatchop,Operating gnatchop in Compilation Mode,Renaming Files with gnatchop
! @anchor{gnat_ugn/the_gnat_compilation_model id25}@anchor{5a}@anchor{gnat_ugn/the_gnat_compilation_model command-line-for-gnatchop}@anchor{5b}
  @subsubsection Command Line for @code{gnatchop}
  
  
*************** no source files written
*** 2790,2796 ****
  @end example
  
  @node Switches for gnatchop,Examples of gnatchop Usage,Command Line for gnatchop,Renaming Files with gnatchop
! @anchor{gnat_ugn/the_gnat_compilation_model switches-for-gnatchop}@anchor{73}@anchor{gnat_ugn/the_gnat_compilation_model id26}@anchor{74}
  @subsubsection Switches for @code{gnatchop}
  
  
--- 2572,2578 ----
  @end example
  
  @node Switches for gnatchop,Examples of gnatchop Usage,Command Line for gnatchop,Renaming Files with gnatchop
! @anchor{gnat_ugn/the_gnat_compilation_model switches-for-gnatchop}@anchor{5c}@anchor{gnat_ugn/the_gnat_compilation_model id26}@anchor{5d}
  @subsubsection Switches for @code{gnatchop}
  
  
*************** no attempt is made to add the prefix to
*** 2956,2962 ****
  @end table
  
  @node Examples of gnatchop Usage,,Switches for gnatchop,Renaming Files with gnatchop
! @anchor{gnat_ugn/the_gnat_compilation_model id27}@anchor{75}@anchor{gnat_ugn/the_gnat_compilation_model examples-of-gnatchop-usage}@anchor{76}
  @subsubsection Examples of @code{gnatchop} Usage
  
  
--- 2738,2744 ----
  @end table
  
  @node Examples of gnatchop Usage,,Switches for gnatchop,Renaming Files with gnatchop
! @anchor{gnat_ugn/the_gnat_compilation_model id27}@anchor{5e}@anchor{gnat_ugn/the_gnat_compilation_model examples-of-gnatchop-usage}@anchor{5f}
  @subsubsection Examples of @code{gnatchop} Usage
  
  
*************** be the one that is output, and earlier d
*** 2997,3003 ****
  unit will be skipped.
  
  @node Configuration Pragmas,Generating Object Files,File Naming Topics and Utilities,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model id28}@anchor{77}@anchor{gnat_ugn/the_gnat_compilation_model configuration-pragmas}@anchor{14}
  @section Configuration Pragmas
  
  
--- 2779,2785 ----
  unit will be skipped.
  
  @node Configuration Pragmas,Generating Object Files,File Naming Topics and Utilities,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model id28}@anchor{60}@anchor{gnat_ugn/the_gnat_compilation_model configuration-pragmas}@anchor{25}
  @section Configuration Pragmas
  
  
*************** Overflow_Mode
*** 3068,3074 ****
  Overriding_Renamings
  Partition_Elaboration_Policy
  Persistent_BSS
- Polling
  Prefix_Exception_Messages
  Priority_Specific_Dispatching
  Profile
--- 2850,2855 ----
*************** Wide_Character_Encoding
*** 3108,3114 ****
  @end menu
  
  @node Handling of Configuration Pragmas,The Configuration Pragmas Files,,Configuration Pragmas
! @anchor{gnat_ugn/the_gnat_compilation_model id29}@anchor{78}@anchor{gnat_ugn/the_gnat_compilation_model handling-of-configuration-pragmas}@anchor{56}
  @subsection Handling of Configuration Pragmas
  
  
--- 2889,2895 ----
  @end menu
  
  @node Handling of Configuration Pragmas,The Configuration Pragmas Files,,Configuration Pragmas
! @anchor{gnat_ugn/the_gnat_compilation_model id29}@anchor{61}@anchor{gnat_ugn/the_gnat_compilation_model handling-of-configuration-pragmas}@anchor{3f}
  @subsection Handling of Configuration Pragmas
  
  
*************** all compilations performed in a given co
*** 3119,3125 ****
  GNAT also provides the @code{gnatchop} utility to provide an automatic
  way to handle configuration pragmas following the semantics for
  compilations (that is, files with multiple units), described in the RM.
! See @ref{6f,,Operating gnatchop in Compilation Mode} for details.
  However, for most purposes, it will be more convenient to edit the
  @code{gnat.adc} file that contains configuration pragmas directly,
  as described in the following section.
--- 2900,2906 ----
  GNAT also provides the @code{gnatchop} utility to provide an automatic
  way to handle configuration pragmas following the semantics for
  compilations (that is, files with multiple units), described in the RM.
! See @ref{58,,Operating gnatchop in Compilation Mode} for details.
  However, for most purposes, it will be more convenient to edit the
  @code{gnat.adc} file that contains configuration pragmas directly,
  as described in the following section.
*************** relevant units). It can appear on a subu
*** 3149,3155 ****
  appeared in the body of spec.
  
  @node The Configuration Pragmas Files,,Handling of Configuration Pragmas,Configuration Pragmas
! @anchor{gnat_ugn/the_gnat_compilation_model the-configuration-pragmas-files}@anchor{79}@anchor{gnat_ugn/the_gnat_compilation_model id30}@anchor{7a}
  @subsection The Configuration Pragmas Files
  
  
--- 2930,2936 ----
  appeared in the body of spec.
  
  @node The Configuration Pragmas Files,,Handling of Configuration Pragmas,Configuration Pragmas
! @anchor{gnat_ugn/the_gnat_compilation_model the-configuration-pragmas-files}@anchor{62}@anchor{gnat_ugn/the_gnat_compilation_model id30}@anchor{63}
  @subsection The Configuration Pragmas Files
  
  
*************** temporary files that are immediately del
*** 3189,3194 ****
--- 2970,2979 ----
  depend on a file that no longer exists. Such tools include
  @code{gprbuild}, @code{gnatmake}, and @code{gnatcheck}.
  
+ By default, configuration pragma files are stored by their absolute paths in
+ ALI files. You can use the @code{-gnateb} switch in order to store them by
+ their basename instead.
+ 
  If you are using project file, a separate mechanism is provided using
  project attributes.
  
*************** project attributes.
*** 3196,3202 ****
  @c See :ref:`Specifying_Configuration_Pragmas` for more details.
  
  @node Generating Object Files,Source Dependencies,Configuration Pragmas,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model generating-object-files}@anchor{40}@anchor{gnat_ugn/the_gnat_compilation_model id31}@anchor{7b}
  @section Generating Object Files
  
  
--- 2981,2987 ----
  @c See :ref:`Specifying_Configuration_Pragmas` for more details.
  
  @node Generating Object Files,Source Dependencies,Configuration Pragmas,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model generating-object-files}@anchor{26}@anchor{gnat_ugn/the_gnat_compilation_model id31}@anchor{64}
  @section Generating Object Files
  
  
*************** part of the process of building a progra
*** 3267,3273 ****
  checking mode, use the @code{-gnatc} switch.
  
  @node Source Dependencies,The Ada Library Information Files,Generating Object Files,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model id32}@anchor{7c}@anchor{gnat_ugn/the_gnat_compilation_model source-dependencies}@anchor{41}
  @section Source Dependencies
  
  
--- 3052,3058 ----
  checking mode, use the @code{-gnatc} switch.
  
  @node Source Dependencies,The Ada Library Information Files,Generating Object Files,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model id32}@anchor{65}@anchor{gnat_ugn/the_gnat_compilation_model source-dependencies}@anchor{27}
  @section Source Dependencies
  
  
*************** recompilations is done automatically whe
*** 3362,3368 ****
  @end itemize
  
  @node The Ada Library Information Files,Binding an Ada Program,Source Dependencies,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model id33}@anchor{7d}@anchor{gnat_ugn/the_gnat_compilation_model the-ada-library-information-files}@anchor{42}
  @section The Ada Library Information Files
  
  
--- 3147,3153 ----
  @end itemize
  
  @node The Ada Library Information Files,Binding an Ada Program,Source Dependencies,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model id33}@anchor{66}@anchor{gnat_ugn/the_gnat_compilation_model the-ada-library-information-files}@anchor{28}
  @section The Ada Library Information Files
  
  
*************** see the source of the body of unit @code
*** 3430,3436 ****
  @code{lib-writ.adb} in the GNAT compiler sources.
  
  @node Binding an Ada Program,GNAT and Libraries,The Ada Library Information Files,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model id34}@anchor{7e}@anchor{gnat_ugn/the_gnat_compilation_model binding-an-ada-program}@anchor{43}
  @section Binding an Ada Program
  
  
--- 3215,3221 ----
  @code{lib-writ.adb} in the GNAT compiler sources.
  
  @node Binding an Ada Program,GNAT and Libraries,The Ada Library Information Files,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model id34}@anchor{67}@anchor{gnat_ugn/the_gnat_compilation_model binding-an-ada-program}@anchor{29}
  @section Binding an Ada Program
  
  
*************** using the object from the main program f
*** 3466,3472 ****
  object files for the Ada units of the program.
  
  @node GNAT and Libraries,Conditional Compilation,Binding an Ada Program,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model gnat-and-libraries}@anchor{15}@anchor{gnat_ugn/the_gnat_compilation_model id35}@anchor{7f}
  @section GNAT and Libraries
  
  
--- 3251,3257 ----
  object files for the Ada units of the program.
  
  @node GNAT and Libraries,Conditional Compilation,Binding an Ada Program,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model gnat-and-libraries}@anchor{2a}@anchor{gnat_ugn/the_gnat_compilation_model id35}@anchor{68}
  @section GNAT and Libraries
  
  
*************** Project Manager facility (see the @emph{
*** 3486,3492 ****
  @end menu
  
  @node Introduction to Libraries in GNAT,General Ada Libraries,,GNAT and Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model introduction-to-libraries-in-gnat}@anchor{80}@anchor{gnat_ugn/the_gnat_compilation_model id36}@anchor{81}
  @subsection Introduction to Libraries in GNAT
  
  
--- 3271,3277 ----
  @end menu
  
  @node Introduction to Libraries in GNAT,General Ada Libraries,,GNAT and Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model introduction-to-libraries-in-gnat}@anchor{69}@anchor{gnat_ugn/the_gnat_compilation_model id36}@anchor{6a}
  @subsection Introduction to Libraries in GNAT
  
  
*************** In the GNAT environment, a library has t
*** 3513,3519 ****
  Source files,
  
  @item 
! @code{ALI} files (see @ref{42,,The Ada Library Information Files}), and
  
  @item 
  Object files, an archive or a shared library.
--- 3298,3304 ----
  Source files,
  
  @item 
! @code{ALI} files (see @ref{28,,The Ada Library Information Files}), and
  
  @item 
  Object files, an archive or a shared library.
*************** an external user to make use of the libr
*** 3525,3531 ****
  reflecting the library services along with all the units needed to compile
  those specs, which can include generic bodies or any body implementing an
  inlined routine. In the case of @emph{stand-alone libraries} those exposed
! units are called @emph{interface units} (@ref{82,,Stand-alone Ada Libraries}).
  
  All compilation units comprising an application, including those in a library,
  need to be elaborated in an order partially defined by Ada's semantics. GNAT
--- 3310,3316 ----
  reflecting the library services along with all the units needed to compile
  those specs, which can include generic bodies or any body implementing an
  inlined routine. In the case of @emph{stand-alone libraries} those exposed
! units are called @emph{interface units} (@ref{6b,,Stand-alone Ada Libraries}).
  
  All compilation units comprising an application, including those in a library,
  need to be elaborated in an order partially defined by Ada's semantics. GNAT
*************** library elaboration routine is produced
*** 3536,3542 ****
  using the library.
  
  @node General Ada Libraries,Stand-alone Ada Libraries,Introduction to Libraries in GNAT,GNAT and Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model general-ada-libraries}@anchor{83}@anchor{gnat_ugn/the_gnat_compilation_model id37}@anchor{84}
  @subsection General Ada Libraries
  
  
--- 3321,3327 ----
  using the library.
  
  @node General Ada Libraries,Stand-alone Ada Libraries,Introduction to Libraries in GNAT,GNAT and Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model general-ada-libraries}@anchor{6c}@anchor{gnat_ugn/the_gnat_compilation_model id37}@anchor{6d}
  @subsection General Ada Libraries
  
  
*************** using the library.
*** 3548,3554 ****
  @end menu
  
  @node Building a library,Installing a library,,General Ada Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model building-a-library}@anchor{85}@anchor{gnat_ugn/the_gnat_compilation_model id38}@anchor{86}
  @subsubsection Building a library
  
  
--- 3333,3339 ----
  @end menu
  
  @node Building a library,Installing a library,,General Ada Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model building-a-library}@anchor{6e}@anchor{gnat_ugn/the_gnat_compilation_model id38}@anchor{6f}
  @subsubsection Building a library
  
  
*************** for this task. In special cases where th
*** 3630,3636 ****
  steps are discussed below.
  
  There are various possibilities for compiling the units that make up the
! library: for example with a Makefile (@ref{1f,,Using the GNU make Utility}) or
  with a conventional script. For simple libraries, it is also possible to create
  a dummy main program which depends upon all the packages that comprise the
  interface of the library. This dummy main program can then be given to
--- 3415,3421 ----
  steps are discussed below.
  
  There are various possibilities for compiling the units that make up the
! library: for example with a Makefile (@ref{70,,Using the GNU make Utility}) or
  with a conventional script. For simple libraries, it is also possible to create
  a dummy main program which depends upon all the packages that comprise the
  interface of the library. This dummy main program can then be given to
*************** or @code{lib@emph{xxx}.so} (or @code{lib
*** 3681,3687 ****
  be accessed by the directive @code{-l@emph{xxx}} at link time.
  
  @node Installing a library,Using a library,Building a library,General Ada Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model installing-a-library}@anchor{87}@anchor{gnat_ugn/the_gnat_compilation_model id39}@anchor{88}
  @subsubsection Installing a library
  
  
--- 3466,3472 ----
  be accessed by the directive @code{-l@emph{xxx}} at link time.
  
  @node Installing a library,Using a library,Building a library,General Ada Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model installing-a-library}@anchor{71}@anchor{gnat_ugn/the_gnat_compilation_model id39}@anchor{72}
  @subsubsection Installing a library
  
  
*************** process (see the @emph{Installing a Libr
*** 3696,3702 ****
  When project files are not an option, it is also possible, but not recommended,
  to install the library so that the sources needed to use the library are on the
  Ada source path and the ALI files & libraries be on the Ada Object path (see
! @ref{89,,Search Paths and the Run-Time Library (RTL)}. Alternatively, the system
  administrator can place general-purpose libraries in the default compiler
  paths, by specifying the libraries' location in the configuration files
  @code{ada_source_path} and @code{ada_object_path}. These configuration files
--- 3481,3487 ----
  When project files are not an option, it is also possible, but not recommended,
  to install the library so that the sources needed to use the library are on the
  Ada source path and the ALI files & libraries be on the Ada Object path (see
! @ref{73,,Search Paths and the Run-Time Library (RTL)}. Alternatively, the system
  administrator can place general-purpose libraries in the default compiler
  paths, by specifying the libraries' location in the configuration files
  @code{ada_source_path} and @code{ada_object_path}. These configuration files
*************** library must be installed before the GNA
*** 3738,3744 ****
  any part of it.
  
  @node Using a library,,Installing a library,General Ada Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model using-a-library}@anchor{8a}@anchor{gnat_ugn/the_gnat_compilation_model id40}@anchor{8b}
  @subsubsection Using a library
  
  
--- 3523,3529 ----
  any part of it.
  
  @node Using a library,,Installing a library,General Ada Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model using-a-library}@anchor{74}@anchor{gnat_ugn/the_gnat_compilation_model id40}@anchor{75}
  @subsubsection Using a library
  
  
*************** left to the tools having visibility over
*** 3777,3784 ****
  
  In order to use an Ada library manually, you need to make sure that this
  library is on both your source and object path
! (see @ref{89,,Search Paths and the Run-Time Library (RTL)}
! and @ref{8c,,Search Paths for gnatbind}). Furthermore, when the objects are grouped
  in an archive or a shared library, you need to specify the desired
  library at link time.
  
--- 3562,3569 ----
  
  In order to use an Ada library manually, you need to make sure that this
  library is on both your source and object path
! (see @ref{73,,Search Paths and the Run-Time Library (RTL)}
! and @ref{76,,Search Paths for gnatbind}). Furthermore, when the objects are grouped
  in an archive or a shared library, you need to specify the desired
  library at link time.
  
*************** in the directory @code{share/examples/gn
*** 3832,3838 ****
  install area.
  
  @node Stand-alone Ada Libraries,Rebuilding the GNAT Run-Time Library,General Ada Libraries,GNAT and Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model stand-alone-ada-libraries}@anchor{82}@anchor{gnat_ugn/the_gnat_compilation_model id41}@anchor{8d}
  @subsection Stand-alone Ada Libraries
  
  
--- 3617,3623 ----
  install area.
  
  @node Stand-alone Ada Libraries,Rebuilding the GNAT Run-Time Library,General Ada Libraries,GNAT and Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model stand-alone-ada-libraries}@anchor{6b}@anchor{gnat_ugn/the_gnat_compilation_model id41}@anchor{77}
  @subsection Stand-alone Ada Libraries
  
  
*************** install area.
*** 3847,3853 ****
  @end menu
  
  @node Introduction to Stand-alone Libraries,Building a Stand-alone Library,,Stand-alone Ada Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model introduction-to-stand-alone-libraries}@anchor{8e}@anchor{gnat_ugn/the_gnat_compilation_model id42}@anchor{8f}
  @subsubsection Introduction to Stand-alone Libraries
  
  
--- 3632,3638 ----
  @end menu
  
  @node Introduction to Stand-alone Libraries,Building a Stand-alone Library,,Stand-alone Ada Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model introduction-to-stand-alone-libraries}@anchor{78}@anchor{gnat_ugn/the_gnat_compilation_model id42}@anchor{79}
  @subsubsection Introduction to Stand-alone Libraries
  
  
*************** Stand-alone libraries are also well suit
*** 3882,3888 ****
  main routine is not written in Ada.
  
  @node Building a Stand-alone Library,Creating a Stand-alone Library to be used in a non-Ada context,Introduction to Stand-alone Libraries,Stand-alone Ada Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model id43}@anchor{90}@anchor{gnat_ugn/the_gnat_compilation_model building-a-stand-alone-library}@anchor{91}
  @subsubsection Building a Stand-alone Library
  
  
--- 3667,3673 ----
  main routine is not written in Ada.
  
  @node Building a Stand-alone Library,Creating a Stand-alone Library to be used in a non-Ada context,Introduction to Stand-alone Libraries,Stand-alone Ada Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model id43}@anchor{7a}@anchor{gnat_ugn/the_gnat_compilation_model building-a-stand-alone-library}@anchor{7b}
  @subsubsection Building a Stand-alone Library
  
  
*************** read-only.
*** 4001,4010 ****
  @end itemize
  
  Using SALs is not different from using other libraries
! (see @ref{8a,,Using a library}).
  
  @node Creating a Stand-alone Library to be used in a non-Ada context,Restrictions in Stand-alone Libraries,Building a Stand-alone Library,Stand-alone Ada Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model creating-a-stand-alone-library-to-be-used-in-a-non-ada-context}@anchor{92}@anchor{gnat_ugn/the_gnat_compilation_model id44}@anchor{93}
  @subsubsection Creating a Stand-alone Library to be used in a non-Ada context
  
  
--- 3786,3795 ----
  @end itemize
  
  Using SALs is not different from using other libraries
! (see @ref{74,,Using a library}).
  
  @node Creating a Stand-alone Library to be used in a non-Ada context,Restrictions in Stand-alone Libraries,Building a Stand-alone Library,Stand-alone Ada Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model creating-a-stand-alone-library-to-be-used-in-a-non-ada-context}@anchor{7c}@anchor{gnat_ugn/the_gnat_compilation_model id44}@anchor{7d}
  @subsubsection Creating a Stand-alone Library to be used in a non-Ada context
  
  
*************** must be ensured at the application level
*** 4089,4095 ****
  system services like a mutex or a critical-section.
  
  @node Restrictions in Stand-alone Libraries,,Creating a Stand-alone Library to be used in a non-Ada context,Stand-alone Ada Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model id45}@anchor{94}@anchor{gnat_ugn/the_gnat_compilation_model restrictions-in-stand-alone-libraries}@anchor{95}
  @subsubsection Restrictions in Stand-alone Libraries
  
  
--- 3874,3880 ----
  system services like a mutex or a critical-section.
  
  @node Restrictions in Stand-alone Libraries,,Creating a Stand-alone Library to be used in a non-Ada context,Stand-alone Ada Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model id45}@anchor{7e}@anchor{gnat_ugn/the_gnat_compilation_model restrictions-in-stand-alone-libraries}@anchor{7f}
  @subsubsection Restrictions in Stand-alone Libraries
  
  
*************** In practice these attributes are rarely
*** 4135,4141 ****
  to be a consideration.
  
  @node Rebuilding the GNAT Run-Time Library,,Stand-alone Ada Libraries,GNAT and Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model id46}@anchor{96}@anchor{gnat_ugn/the_gnat_compilation_model rebuilding-the-gnat-run-time-library}@anchor{97}
  @subsection Rebuilding the GNAT Run-Time Library
  
  
--- 3920,3926 ----
  to be a consideration.
  
  @node Rebuilding the GNAT Run-Time Library,,Stand-alone Ada Libraries,GNAT and Libraries
! @anchor{gnat_ugn/the_gnat_compilation_model id46}@anchor{80}@anchor{gnat_ugn/the_gnat_compilation_model rebuilding-the-gnat-run-time-library}@anchor{81}
  @subsection Rebuilding the GNAT Run-Time Library
  
  
*************** to be a consideration.
*** 4149,4158 ****
  @geindex Run-Time Library
  @geindex rebuilding
  
! It may be useful to recompile the GNAT library in various contexts, the
! most important one being the use of partition-wide configuration pragmas
! such as @code{Normalize_Scalars}. A special Makefile called
! @code{Makefile.adalib} is provided to that effect and can be found in
  the directory containing the GNAT library. The location of this
  directory depends on the way the GNAT environment has been installed and can
  be determined by means of the command:
--- 3934,3942 ----
  @geindex Run-Time Library
  @geindex rebuilding
  
! It may be useful to recompile the GNAT library in various debugging or
! experimentation contexts. A project file called
! @code{libada.gpr} is provided to that effect and can be found in
  the directory containing the GNAT library. The location of this
  directory depends on the way the GNAT environment has been installed and can
  be determined by means of the command:
*************** be determined by means of the command:
*** 4161,4175 ****
  $ gnatls -v
  @end example
  
! The last entry in the object search path usually contains the
! gnat library. This Makefile contains its own documentation and in
! particular the set of instructions needed to rebuild a new library and
! to use it.
  
  @geindex Conditional compilation
  
  @node Conditional Compilation,Mixed Language Programming,GNAT and Libraries,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model id47}@anchor{98}@anchor{gnat_ugn/the_gnat_compilation_model conditional-compilation}@anchor{16}
  @section Conditional Compilation
  
  
--- 3945,3962 ----
  $ gnatls -v
  @end example
  
! The last entry in the source search path usually contains the
! gnat library (the @code{adainclude} directory). This project file contains its
! own documentation and in particular the set of instructions needed to rebuild a
! new library and to use it.
! 
! Note that rebuilding the GNAT Run-Time is only recommended for temporary
! experiments or debugging, and is not supported.
  
  @geindex Conditional compilation
  
  @node Conditional Compilation,Mixed Language Programming,GNAT and Libraries,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model id47}@anchor{82}@anchor{gnat_ugn/the_gnat_compilation_model conditional-compilation}@anchor{2b}
  @section Conditional Compilation
  
  
*************** gnatprep preprocessor utility.
*** 4186,4192 ****
  @end menu
  
  @node Modeling Conditional Compilation in Ada,Preprocessing with gnatprep,,Conditional Compilation
! @anchor{gnat_ugn/the_gnat_compilation_model modeling-conditional-compilation-in-ada}@anchor{99}@anchor{gnat_ugn/the_gnat_compilation_model id48}@anchor{9a}
  @subsection Modeling Conditional Compilation in Ada
  
  
--- 3973,3979 ----
  @end menu
  
  @node Modeling Conditional Compilation in Ada,Preprocessing with gnatprep,,Conditional Compilation
! @anchor{gnat_ugn/the_gnat_compilation_model modeling-conditional-compilation-in-ada}@anchor{83}@anchor{gnat_ugn/the_gnat_compilation_model id48}@anchor{84}
  @subsection Modeling Conditional Compilation in Ada
  
  
*************** be achieved using Ada in general, and GN
*** 4237,4243 ****
  @end menu
  
  @node Use of Boolean Constants,Debugging - A Special Case,,Modeling Conditional Compilation in Ada
! @anchor{gnat_ugn/the_gnat_compilation_model id49}@anchor{9b}@anchor{gnat_ugn/the_gnat_compilation_model use-of-boolean-constants}@anchor{9c}
  @subsubsection Use of Boolean Constants
  
  
--- 4024,4030 ----
  @end menu
  
  @node Use of Boolean Constants,Debugging - A Special Case,,Modeling Conditional Compilation in Ada
! @anchor{gnat_ugn/the_gnat_compilation_model id49}@anchor{85}@anchor{gnat_ugn/the_gnat_compilation_model use-of-boolean-constants}@anchor{86}
  @subsubsection Use of Boolean Constants
  
  
*************** Then any other unit requiring conditiona
*** 4281,4287 ****
  of @code{Config} to make the constants visible.
  
  @node Debugging - A Special Case,Conditionalizing Declarations,Use of Boolean Constants,Modeling Conditional Compilation in Ada
! @anchor{gnat_ugn/the_gnat_compilation_model debugging-a-special-case}@anchor{9d}@anchor{gnat_ugn/the_gnat_compilation_model id50}@anchor{9e}
  @subsubsection Debugging - A Special Case
  
  
--- 4068,4074 ----
  of @code{Config} to make the constants visible.
  
  @node Debugging - A Special Case,Conditionalizing Declarations,Use of Boolean Constants,Modeling Conditional Compilation in Ada
! @anchor{gnat_ugn/the_gnat_compilation_model debugging-a-special-case}@anchor{87}@anchor{gnat_ugn/the_gnat_compilation_model id50}@anchor{88}
  @subsubsection Debugging - A Special Case
  
  
*************** end if;
*** 4394,4400 ****
  @end example
  
  @node Conditionalizing Declarations,Use of Alternative Implementations,Debugging - A Special Case,Modeling Conditional Compilation in Ada
! @anchor{gnat_ugn/the_gnat_compilation_model conditionalizing-declarations}@anchor{9f}@anchor{gnat_ugn/the_gnat_compilation_model id51}@anchor{a0}
  @subsubsection Conditionalizing Declarations
  
  
--- 4181,4187 ----
  @end example
  
  @node Conditionalizing Declarations,Use of Alternative Implementations,Debugging - A Special Case,Modeling Conditional Compilation in Ada
! @anchor{gnat_ugn/the_gnat_compilation_model conditionalizing-declarations}@anchor{89}@anchor{gnat_ugn/the_gnat_compilation_model id51}@anchor{8a}
  @subsubsection Conditionalizing Declarations
  
  
*************** constant was introduced as @code{System.
*** 4459,4465 ****
  need to define this one yourself).
  
  @node Use of Alternative Implementations,Preprocessing,Conditionalizing Declarations,Modeling Conditional Compilation in Ada
! @anchor{gnat_ugn/the_gnat_compilation_model use-of-alternative-implementations}@anchor{a1}@anchor{gnat_ugn/the_gnat_compilation_model id52}@anchor{a2}
  @subsubsection Use of Alternative Implementations
  
  
--- 4246,4252 ----
  need to define this one yourself).
  
  @node Use of Alternative Implementations,Preprocessing,Conditionalizing Declarations,Modeling Conditional Compilation in Ada
! @anchor{gnat_ugn/the_gnat_compilation_model use-of-alternative-implementations}@anchor{8b}@anchor{gnat_ugn/the_gnat_compilation_model id52}@anchor{8c}
  @subsubsection Use of Alternative Implementations
  
  
*************** The same idea can also be implemented us
*** 4593,4599 ****
  calls.
  
  @node Preprocessing,,Use of Alternative Implementations,Modeling Conditional Compilation in Ada
! @anchor{gnat_ugn/the_gnat_compilation_model preprocessing}@anchor{a3}@anchor{gnat_ugn/the_gnat_compilation_model id53}@anchor{a4}
  @subsubsection Preprocessing
  
  
--- 4380,4386 ----
  calls.
  
  @node Preprocessing,,Use of Alternative Implementations,Modeling Conditional Compilation in Ada
! @anchor{gnat_ugn/the_gnat_compilation_model preprocessing}@anchor{8d}@anchor{gnat_ugn/the_gnat_compilation_model id53}@anchor{8e}
  @subsubsection Preprocessing
  
  
*************** The preprocessor may be used in two sepa
*** 4616,4622 ****
  separately from the compiler, to generate a separate output source file
  that is then fed to the compiler as a separate step. This is the
  @code{gnatprep} utility, whose use is fully described in
! @ref{17,,Preprocessing with gnatprep}.
  
  The preprocessing language allows such constructs as
  
--- 4403,4409 ----
  separately from the compiler, to generate a separate output source file
  that is then fed to the compiler as a separate step. This is the
  @code{gnatprep} utility, whose use is fully described in
! @ref{8f,,Preprocessing with gnatprep}.
  
  The preprocessing language allows such constructs as
  
*************** often more convenient. In this approach
*** 4636,4645 ****
  the compilation process. The compiler is given the preprocessor input which
  includes @code{#if} lines etc, and then the compiler carries out the
  preprocessing internally and processes the resulting output.
! For more details on this approach, see @ref{18,,Integrated Preprocessing}.
  
  @node Preprocessing with gnatprep,Integrated Preprocessing,Modeling Conditional Compilation in Ada,Conditional Compilation
! @anchor{gnat_ugn/the_gnat_compilation_model id54}@anchor{a5}@anchor{gnat_ugn/the_gnat_compilation_model preprocessing-with-gnatprep}@anchor{17}
  @subsection Preprocessing with @code{gnatprep}
  
  
--- 4423,4432 ----
  the compilation process. The compiler is given the preprocessor input which
  includes @code{#if} lines etc, and then the compiler carries out the
  preprocessing internally and processes the resulting output.
! For more details on this approach, see @ref{90,,Integrated Preprocessing}.
  
  @node Preprocessing with gnatprep,Integrated Preprocessing,Modeling Conditional Compilation in Ada,Conditional Compilation
! @anchor{gnat_ugn/the_gnat_compilation_model id54}@anchor{91}@anchor{gnat_ugn/the_gnat_compilation_model preprocessing-with-gnatprep}@anchor{8f}
  @subsection Preprocessing with @code{gnatprep}
  
  
*************** preprocessing.
*** 4652,4658 ****
  Although designed for use with GNAT, @code{gnatprep} does not depend on any
  special GNAT features.
  For further discussion of conditional compilation in general, see
! @ref{16,,Conditional Compilation}.
  
  @menu
  * Preprocessing Symbols:: 
--- 4439,4445 ----
  Although designed for use with GNAT, @code{gnatprep} does not depend on any
  special GNAT features.
  For further discussion of conditional compilation in general, see
! @ref{2b,,Conditional Compilation}.
  
  @menu
  * Preprocessing Symbols:: 
*************** For further discussion of conditional co
*** 4664,4670 ****
  @end menu
  
  @node Preprocessing Symbols,Using gnatprep,,Preprocessing with gnatprep
! @anchor{gnat_ugn/the_gnat_compilation_model id55}@anchor{a6}@anchor{gnat_ugn/the_gnat_compilation_model preprocessing-symbols}@anchor{a7}
  @subsubsection Preprocessing Symbols
  
  
--- 4451,4457 ----
  @end menu
  
  @node Preprocessing Symbols,Using gnatprep,,Preprocessing with gnatprep
! @anchor{gnat_ugn/the_gnat_compilation_model id55}@anchor{92}@anchor{gnat_ugn/the_gnat_compilation_model preprocessing-symbols}@anchor{93}
  @subsubsection Preprocessing Symbols
  
  
*************** normal Ada (case-insensitive) rules for
*** 4674,4680 ****
  all characters need to be in the ASCII set (no accented letters).
  
  @node Using gnatprep,Switches for gnatprep,Preprocessing Symbols,Preprocessing with gnatprep
! @anchor{gnat_ugn/the_gnat_compilation_model using-gnatprep}@anchor{a8}@anchor{gnat_ugn/the_gnat_compilation_model id56}@anchor{a9}
  @subsubsection Using @code{gnatprep}
  
  
--- 4461,4467 ----
  all characters need to be in the ASCII set (no accented letters).
  
  @node Using gnatprep,Switches for gnatprep,Preprocessing Symbols,Preprocessing with gnatprep
! @anchor{gnat_ugn/the_gnat_compilation_model using-gnatprep}@anchor{94}@anchor{gnat_ugn/the_gnat_compilation_model id56}@anchor{95}
  @subsubsection Using @code{gnatprep}
  
  
*************** optional, and can be replaced by the use
*** 4732,4738 ****
  @end itemize
  
  @node Switches for gnatprep,Form of Definitions File,Using gnatprep,Preprocessing with gnatprep
! @anchor{gnat_ugn/the_gnat_compilation_model switches-for-gnatprep}@anchor{aa}@anchor{gnat_ugn/the_gnat_compilation_model id57}@anchor{ab}
  @subsubsection Switches for @code{gnatprep}
  
  
--- 4519,4525 ----
  @end itemize
  
  @node Switches for gnatprep,Form of Definitions File,Using gnatprep,Preprocessing with gnatprep
! @anchor{gnat_ugn/the_gnat_compilation_model switches-for-gnatprep}@anchor{96}@anchor{gnat_ugn/the_gnat_compilation_model id57}@anchor{97}
  @subsubsection Switches for @code{gnatprep}
  
  
*************** deleted lines are completely removed fro
*** 4883,4889 ****
  specified, in which case -b is assumed.
  
  @node Form of Definitions File,Form of Input Text for gnatprep,Switches for gnatprep,Preprocessing with gnatprep
! @anchor{gnat_ugn/the_gnat_compilation_model form-of-definitions-file}@anchor{ac}@anchor{gnat_ugn/the_gnat_compilation_model id58}@anchor{ad}
  @subsubsection Form of Definitions File
  
  
--- 4670,4676 ----
  specified, in which case -b is assumed.
  
  @node Form of Definitions File,Form of Input Text for gnatprep,Switches for gnatprep,Preprocessing with gnatprep
! @anchor{gnat_ugn/the_gnat_compilation_model form-of-definitions-file}@anchor{98}@anchor{gnat_ugn/the_gnat_compilation_model id58}@anchor{99}
  @subsubsection Form of Definitions File
  
  
*************** the usual @code{--},
*** 4913,4919 ****
  and comments may be added to the definitions lines.
  
  @node Form of Input Text for gnatprep,,Form of Definitions File,Preprocessing with gnatprep
! @anchor{gnat_ugn/the_gnat_compilation_model id59}@anchor{ae}@anchor{gnat_ugn/the_gnat_compilation_model form-of-input-text-for-gnatprep}@anchor{af}
  @subsubsection Form of Input Text for @code{gnatprep}
  
  
--- 4700,4706 ----
  and comments may be added to the definitions lines.
  
  @node Form of Input Text for gnatprep,,Form of Definitions File,Preprocessing with gnatprep
! @anchor{gnat_ugn/the_gnat_compilation_model id59}@anchor{9a}@anchor{gnat_ugn/the_gnat_compilation_model form-of-input-text-for-gnatprep}@anchor{9b}
  @subsubsection Form of Input Text for @code{gnatprep}
  
  
*************** Header : String := $XYZ;
*** 5045,5051 ****
  and then the substitution will occur as desired.
  
  @node Integrated Preprocessing,,Preprocessing with gnatprep,Conditional Compilation
! @anchor{gnat_ugn/the_gnat_compilation_model id60}@anchor{b0}@anchor{gnat_ugn/the_gnat_compilation_model integrated-preprocessing}@anchor{18}
  @subsection Integrated Preprocessing
  
  
--- 4832,4838 ----
  and then the substitution will occur as desired.
  
  @node Integrated Preprocessing,,Preprocessing with gnatprep,Conditional Compilation
! @anchor{gnat_ugn/the_gnat_compilation_model id60}@anchor{9c}@anchor{gnat_ugn/the_gnat_compilation_model integrated-preprocessing}@anchor{90}
  @subsection Integrated Preprocessing
  
  
*************** because @code{gnatmake} cannot compute t
*** 5106,5112 ****
  preprocessing.
  
  The actual preprocessing function is described in detail in
! @ref{17,,Preprocessing with gnatprep}. This section explains the switches
  that relate to integrated preprocessing.
  
  @geindex -gnatep (gcc)
--- 4893,4899 ----
  preprocessing.
  
  The actual preprocessing function is described in detail in
! @ref{8f,,Preprocessing with gnatprep}. This section explains the switches
  that relate to integrated preprocessing.
  
  @geindex -gnatep (gcc)
*************** lines starting with the character '*'.
*** 5205,5211 ****
  
  After the file name or '*', an optional literal string specifies the name of
  the definition file to be used for preprocessing
! (@ref{ac,,Form of Definitions File}). The definition files are found by the
  compiler in one of the source directories. In some cases, when compiling
  a source in a directory other than the current directory, if the definition
  file is in the current directory, it may be necessary to add the current
--- 4992,4998 ----
  
  After the file name or '*', an optional literal string specifies the name of
  the definition file to be used for preprocessing
! (@ref{98,,Form of Definitions File}). The definition files are found by the
  compiler in one of the source directories. In some cases, when compiling
  a source in a directory other than the current directory, if the definition
  file is in the current directory, it may be necessary to add the current
*************** the output file will be @code{foo.adb.pr
*** 5297,5303 ****
  @end table
  
  @node Mixed Language Programming,GNAT and Other Compilation Models,Conditional Compilation,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model mixed-language-programming}@anchor{44}@anchor{gnat_ugn/the_gnat_compilation_model id61}@anchor{b1}
  @section Mixed Language Programming
  
  
--- 5084,5090 ----
  @end table
  
  @node Mixed Language Programming,GNAT and Other Compilation Models,Conditional Compilation,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model mixed-language-programming}@anchor{2c}@anchor{gnat_ugn/the_gnat_compilation_model id61}@anchor{9d}
  @section Mixed Language Programming
  
  
*************** with a focus on combining Ada with C or
*** 5316,5322 ****
  @end menu
  
  @node Interfacing to C,Calling Conventions,,Mixed Language Programming
! @anchor{gnat_ugn/the_gnat_compilation_model interfacing-to-c}@anchor{b2}@anchor{gnat_ugn/the_gnat_compilation_model id62}@anchor{b3}
  @subsection Interfacing to C
  
  
--- 5103,5109 ----
  @end menu
  
  @node Interfacing to C,Calling Conventions,,Mixed Language Programming
! @anchor{gnat_ugn/the_gnat_compilation_model interfacing-to-c}@anchor{9e}@anchor{gnat_ugn/the_gnat_compilation_model id62}@anchor{9f}
  @subsection Interfacing to C
  
  
*************** $ gnatmake my_main.adb -largs file1.o fi
*** 5427,5433 ****
  If the main program is in a language other than Ada, then you may have
  more than one entry point into the Ada subsystem. You must use a special
  binder option to generate callable routines that initialize and
! finalize the Ada units (@ref{b4,,Binding with Non-Ada Main Programs}).
  Calls to the initialization and finalization routines must be inserted
  in the main program, or some other appropriate point in the code. The
  call to initialize the Ada units must occur before the first Ada
--- 5214,5220 ----
  If the main program is in a language other than Ada, then you may have
  more than one entry point into the Ada subsystem. You must use a special
  binder option to generate callable routines that initialize and
! finalize the Ada units (@ref{a0,,Binding with Non-Ada Main Programs}).
  Calls to the initialization and finalization routines must be inserted
  in the main program, or some other appropriate point in the code. The
  call to initialize the Ada units must occur before the first Ada
*************** GNAT linker not to include the standard
*** 5543,5549 ****
  @code{-nostartfiles} switch to @code{gnatlink}.
  
  @node Calling Conventions,Building Mixed Ada and C++ Programs,Interfacing to C,Mixed Language Programming
! @anchor{gnat_ugn/the_gnat_compilation_model calling-conventions}@anchor{b5}@anchor{gnat_ugn/the_gnat_compilation_model id63}@anchor{b6}
  @subsection Calling Conventions
  
  
--- 5330,5336 ----
  @code{-nostartfiles} switch to @code{gnatlink}.
  
  @node Calling Conventions,Building Mixed Ada and C++ Programs,Interfacing to C,Mixed Language Programming
! @anchor{gnat_ugn/the_gnat_compilation_model calling-conventions}@anchor{a1}@anchor{gnat_ugn/the_gnat_compilation_model id63}@anchor{a2}
  @subsection Calling Conventions
  
  
*************** identifier (for example in an @code{Impo
*** 5867,5873 ****
  meaning as Fortran.
  
  @node Building Mixed Ada and C++ Programs,Generating Ada Bindings for C and C++ headers,Calling Conventions,Mixed Language Programming
! @anchor{gnat_ugn/the_gnat_compilation_model id64}@anchor{b7}@anchor{gnat_ugn/the_gnat_compilation_model building-mixed-ada-and-c-programs}@anchor{b8}
  @subsection Building Mixed Ada and C++ Programs
  
  
--- 5654,5660 ----
  meaning as Fortran.
  
  @node Building Mixed Ada and C++ Programs,Generating Ada Bindings for C and C++ headers,Calling Conventions,Mixed Language Programming
! @anchor{gnat_ugn/the_gnat_compilation_model id64}@anchor{a3}@anchor{gnat_ugn/the_gnat_compilation_model building-mixed-ada-and-c-programs}@anchor{a4}
  @subsection Building Mixed Ada and C++ Programs
  
  
*************** challenge.  This section gives a few hin
*** 5885,5891 ****
  @end menu
  
  @node Interfacing to C++,Linking a Mixed C++ & Ada Program,,Building Mixed Ada and C++ Programs
! @anchor{gnat_ugn/the_gnat_compilation_model id65}@anchor{b9}@anchor{gnat_ugn/the_gnat_compilation_model id66}@anchor{ba}
  @subsubsection Interfacing to C++
  
  
--- 5672,5678 ----
  @end menu
  
  @node Interfacing to C++,Linking a Mixed C++ & Ada Program,,Building Mixed Ada and C++ Programs
! @anchor{gnat_ugn/the_gnat_compilation_model id65}@anchor{a5}@anchor{gnat_ugn/the_gnat_compilation_model id66}@anchor{a6}
  @subsubsection Interfacing to C++
  
  
*************** Interfacing can be done at 3 levels: sim
*** 5897,5903 ****
  classes. In the first two cases, GNAT offers a specific @code{Convention C_Plus_Plus}
  (or @code{CPP}) that behaves exactly like @code{Convention C}.
  Usually, C++ mangles the names of subprograms. To generate proper mangled
! names automatically, see @ref{19,,Generating Ada Bindings for C and C++ headers}).
  This problem can also be addressed manually in two ways:
  
  
--- 5684,5690 ----
  classes. In the first two cases, GNAT offers a specific @code{Convention C_Plus_Plus}
  (or @code{CPP}) that behaves exactly like @code{Convention C}.
  Usually, C++ mangles the names of subprograms. To generate proper mangled
! names automatically, see @ref{a7,,Generating Ada Bindings for C and C++ headers}).
  This problem can also be addressed manually in two ways:
  
  
*************** Interfacing at the class level can be ac
*** 5916,5922 ****
  pragmas such as @code{CPP_Constructor}.  See the @cite{GNAT_Reference_Manual} for additional information.
  
  @node Linking a Mixed C++ & Ada Program,A Simple Example,Interfacing to C++,Building Mixed Ada and C++ Programs
! @anchor{gnat_ugn/the_gnat_compilation_model linking-a-mixed-c-ada-program}@anchor{bb}@anchor{gnat_ugn/the_gnat_compilation_model linking-a-mixed-c-and-ada-program}@anchor{bc}
  @subsubsection Linking a Mixed C++ & Ada Program
  
  
--- 5703,5709 ----
  pragmas such as @code{CPP_Constructor}.  See the @cite{GNAT_Reference_Manual} for additional information.
  
  @node Linking a Mixed C++ & Ada Program,A Simple Example,Interfacing to C++,Building Mixed Ada and C++ Programs
! @anchor{gnat_ugn/the_gnat_compilation_model linking-a-mixed-c-ada-program}@anchor{a8}@anchor{gnat_ugn/the_gnat_compilation_model linking-a-mixed-c-and-ada-program}@anchor{a9}
  @subsubsection Linking a Mixed C++ & Ada Program
  
  
*************** which has a large knowledge base and kno
*** 6031,6037 ****
  together automatically in most cases.
  
  @node A Simple Example,Interfacing with C++ constructors,Linking a Mixed C++ & Ada Program,Building Mixed Ada and C++ Programs
! @anchor{gnat_ugn/the_gnat_compilation_model id67}@anchor{bd}@anchor{gnat_ugn/the_gnat_compilation_model a-simple-example}@anchor{be}
  @subsubsection A Simple Example
  
  
--- 5818,5824 ----
  together automatically in most cases.
  
  @node A Simple Example,Interfacing with C++ constructors,Linking a Mixed C++ & Ada Program,Building Mixed Ada and C++ Programs
! @anchor{gnat_ugn/the_gnat_compilation_model id67}@anchor{aa}@anchor{gnat_ugn/the_gnat_compilation_model a-simple-example}@anchor{ab}
  @subsubsection A Simple Example
  
  
*************** The following example, provided as part
*** 6039,6045 ****
  to achieve procedural interfacing between Ada and C++ in both
  directions. The C++ class A has two methods. The first method is exported
  to Ada by the means of an extern C wrapper function. The second method
! calls an Ada subprogram. On the Ada side, The C++ calls are modelled by
  a limited record with a layout comparable to the C++ class. The Ada
  subprogram, in turn, calls the C++ method. So, starting from the C++
  main program, the process passes back and forth between the two
--- 5826,5832 ----
  to achieve procedural interfacing between Ada and C++ in both
  directions. The C++ class A has two methods. The first method is exported
  to Ada by the means of an extern C wrapper function. The second method
! calls an Ada subprogram. On the Ada side, the C++ calls are modelled by
  a limited record with a layout comparable to the C++ class. The Ada
  subprogram, in turn, calls the C++ method. So, starting from the C++
  main program, the process passes back and forth between the two
*************** end Simple_Cpp_Interface;
*** 6160,6166 ****
  @end example
  
  @node Interfacing with C++ constructors,Interfacing with C++ at the Class Level,A Simple Example,Building Mixed Ada and C++ Programs
! @anchor{gnat_ugn/the_gnat_compilation_model id68}@anchor{bf}@anchor{gnat_ugn/the_gnat_compilation_model interfacing-with-c-constructors}@anchor{c0}
  @subsubsection Interfacing with C++ constructors
  
  
--- 5947,5953 ----
  @end example
  
  @node Interfacing with C++ constructors,Interfacing with C++ at the Class Level,A Simple Example,Building Mixed Ada and C++ Programs
! @anchor{gnat_ugn/the_gnat_compilation_model id68}@anchor{ac}@anchor{gnat_ugn/the_gnat_compilation_model interfacing-with-c-constructors}@anchor{ad}
  @subsubsection Interfacing with C++ constructors
  
  
*************** public:
*** 6187,6194 ****
  
  For this purpose we can write the following package spec (further
  information on how to build this spec is available in
! @ref{c1,,Interfacing with C++ at the Class Level} and
! @ref{19,,Generating Ada Bindings for C and C++ headers}).
  
  @example
  with Interfaces.C; use Interfaces.C;
--- 5974,5981 ----
  
  For this purpose we can write the following package spec (further
  information on how to build this spec is available in
! @ref{ae,,Interfacing with C++ at the Class Level} and
! @ref{a7,,Generating Ada Bindings for C and C++ headers}).
  
  @example
  with Interfaces.C; use Interfaces.C;
*************** by means of a limited aggregate. Any fur
*** 6357,6363 ****
  the constructor can be placed inside the construct.
  
  @node Interfacing with C++ at the Class Level,,Interfacing with C++ constructors,Building Mixed Ada and C++ Programs
! @anchor{gnat_ugn/the_gnat_compilation_model interfacing-with-c-at-the-class-level}@anchor{c1}@anchor{gnat_ugn/the_gnat_compilation_model id69}@anchor{c2}
  @subsubsection Interfacing with C++ at the Class Level
  
  
--- 6144,6150 ----
  the constructor can be placed inside the construct.
  
  @node Interfacing with C++ at the Class Level,,Interfacing with C++ constructors,Building Mixed Ada and C++ Programs
! @anchor{gnat_ugn/the_gnat_compilation_model interfacing-with-c-at-the-class-level}@anchor{ae}@anchor{gnat_ugn/the_gnat_compilation_model id69}@anchor{af}
  @subsubsection Interfacing with C++ at the Class Level
  
  
*************** int main ()
*** 6603,6609 ****
  @end example
  
  @node Generating Ada Bindings for C and C++ headers,Generating C Headers for Ada Specifications,Building Mixed Ada and C++ Programs,Mixed Language Programming
! @anchor{gnat_ugn/the_gnat_compilation_model id70}@anchor{c3}@anchor{gnat_ugn/the_gnat_compilation_model generating-ada-bindings-for-c-and-c-headers}@anchor{19}
  @subsection Generating Ada Bindings for C and C++ headers
  
  
--- 6390,6396 ----
  @end example
  
  @node Generating Ada Bindings for C and C++ headers,Generating C Headers for Ada Specifications,Building Mixed Ada and C++ Programs,Mixed Language Programming
! @anchor{gnat_ugn/the_gnat_compilation_model id70}@anchor{b0}@anchor{gnat_ugn/the_gnat_compilation_model generating-ada-bindings-for-c-and-c-headers}@anchor{a7}
  @subsection Generating Ada Bindings for C and C++ headers
  
  
*************** even if your code is compiled using earl
*** 6654,6660 ****
  @end menu
  
  @node Running the Binding Generator,Generating Bindings for C++ Headers,,Generating Ada Bindings for C and C++ headers
! @anchor{gnat_ugn/the_gnat_compilation_model id71}@anchor{c4}@anchor{gnat_ugn/the_gnat_compilation_model running-the-binding-generator}@anchor{c5}
  @subsubsection Running the Binding Generator
  
  
--- 6441,6447 ----
  @end menu
  
  @node Running the Binding Generator,Generating Bindings for C++ Headers,,Generating Ada Bindings for C and C++ headers
! @anchor{gnat_ugn/the_gnat_compilation_model id71}@anchor{b1}@anchor{gnat_ugn/the_gnat_compilation_model running-the-binding-generator}@anchor{b2}
  @subsubsection Running the Binding Generator
  
  
*************** $ g++ -c -fdump-ada-spec readline1.h
*** 6748,6754 ****
  @end example
  
  @node Generating Bindings for C++ Headers,Switches,Running the Binding Generator,Generating Ada Bindings for C and C++ headers
! @anchor{gnat_ugn/the_gnat_compilation_model id72}@anchor{c6}@anchor{gnat_ugn/the_gnat_compilation_model generating-bindings-for-c-headers}@anchor{c7}
  @subsubsection Generating Bindings for C++ Headers
  
  
--- 6535,6541 ----
  @end example
  
  @node Generating Bindings for C++ Headers,Switches,Running the Binding Generator,Generating Ada Bindings for C and C++ headers
! @anchor{gnat_ugn/the_gnat_compilation_model id72}@anchor{b3}@anchor{gnat_ugn/the_gnat_compilation_model generating-bindings-for-c-headers}@anchor{b4}
  @subsubsection Generating Bindings for C++ Headers
  
  
*************** use Class_Dog;
*** 6849,6855 ****
  @end example
  
  @node Switches,,Generating Bindings for C++ Headers,Generating Ada Bindings for C and C++ headers
! @anchor{gnat_ugn/the_gnat_compilation_model switches}@anchor{c8}@anchor{gnat_ugn/the_gnat_compilation_model switches-for-ada-binding-generation}@anchor{c9}
  @subsubsection Switches
  
  
--- 6636,6642 ----
  @end example
  
  @node Switches,,Generating Bindings for C++ Headers,Generating Ada Bindings for C and C++ headers
! @anchor{gnat_ugn/the_gnat_compilation_model switches}@anchor{b5}@anchor{gnat_ugn/the_gnat_compilation_model switches-for-ada-binding-generation}@anchor{b6}
  @subsubsection Switches
  
  
*************** Extract comments from headers and genera
*** 6897,6903 ****
  @end table
  
  @node Generating C Headers for Ada Specifications,,Generating Ada Bindings for C and C++ headers,Mixed Language Programming
! @anchor{gnat_ugn/the_gnat_compilation_model generating-c-headers-for-ada-specifications}@anchor{ca}@anchor{gnat_ugn/the_gnat_compilation_model id73}@anchor{cb}
  @subsection Generating C Headers for Ada Specifications
  
  
--- 6684,6690 ----
  @end table
  
  @node Generating C Headers for Ada Specifications,,Generating Ada Bindings for C and C++ headers,Mixed Language Programming
! @anchor{gnat_ugn/the_gnat_compilation_model generating-c-headers-for-ada-specifications}@anchor{b7}@anchor{gnat_ugn/the_gnat_compilation_model id73}@anchor{b8}
  @subsection Generating C Headers for Ada Specifications
  
  
*************** Subprogram declarations
*** 6940,6946 ****
  @end menu
  
  @node Running the C Header Generator,,,Generating C Headers for Ada Specifications
! @anchor{gnat_ugn/the_gnat_compilation_model running-the-c-header-generator}@anchor{cc}
  @subsubsection Running the C Header Generator
  
  
--- 6727,6733 ----
  @end menu
  
  @node Running the C Header Generator,,,Generating C Headers for Ada Specifications
! @anchor{gnat_ugn/the_gnat_compilation_model running-the-c-header-generator}@anchor{b9}
  @subsubsection Running the C Header Generator
  
  
*************** You can then @code{include} @code{pack1.
*** 7008,7014 ****
  call subprograms, reference objects, and constants.
  
  @node GNAT and Other Compilation Models,Using GNAT Files with External Tools,Mixed Language Programming,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model id74}@anchor{cd}@anchor{gnat_ugn/the_gnat_compilation_model gnat-and-other-compilation-models}@anchor{45}
  @section GNAT and Other Compilation Models
  
  
--- 6795,6801 ----
  call subprograms, reference objects, and constants.
  
  @node GNAT and Other Compilation Models,Using GNAT Files with External Tools,Mixed Language Programming,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model id74}@anchor{ba}@anchor{gnat_ugn/the_gnat_compilation_model gnat-and-other-compilation-models}@anchor{2d}
  @section GNAT and Other Compilation Models
  
  
*************** used for Ada 83.
*** 7024,7030 ****
  @end menu
  
  @node Comparison between GNAT and C/C++ Compilation Models,Comparison between GNAT and Conventional Ada Library Models,,GNAT and Other Compilation Models
! @anchor{gnat_ugn/the_gnat_compilation_model comparison-between-gnat-and-c-c-compilation-models}@anchor{ce}@anchor{gnat_ugn/the_gnat_compilation_model id75}@anchor{cf}
  @subsection Comparison between GNAT and C/C++ Compilation Models
  
  
--- 6811,6817 ----
  @end menu
  
  @node Comparison between GNAT and C/C++ Compilation Models,Comparison between GNAT and Conventional Ada Library Models,,GNAT and Other Compilation Models
! @anchor{gnat_ugn/the_gnat_compilation_model comparison-between-gnat-and-c-c-compilation-models}@anchor{bb}@anchor{gnat_ugn/the_gnat_compilation_model id75}@anchor{bc}
  @subsection Comparison between GNAT and C/C++ Compilation Models
  
  
*************** elaboration, a C++ compiler would simply
*** 7058,7064 ****
  malfunctioned at run time.
  
  @node Comparison between GNAT and Conventional Ada Library Models,,Comparison between GNAT and C/C++ Compilation Models,GNAT and Other Compilation Models
! @anchor{gnat_ugn/the_gnat_compilation_model comparison-between-gnat-and-conventional-ada-library-models}@anchor{d0}@anchor{gnat_ugn/the_gnat_compilation_model id76}@anchor{d1}
  @subsection Comparison between GNAT and Conventional Ada Library Models
  
  
--- 6845,6851 ----
  malfunctioned at run time.
  
  @node Comparison between GNAT and Conventional Ada Library Models,,Comparison between GNAT and C/C++ Compilation Models,GNAT and Other Compilation Models
! @anchor{gnat_ugn/the_gnat_compilation_model comparison-between-gnat-and-conventional-ada-library-models}@anchor{bd}@anchor{gnat_ugn/the_gnat_compilation_model id76}@anchor{be}
  @subsection Comparison between GNAT and Conventional Ada Library Models
  
  
*************** of rules saying what source files must b
*** 7126,7132 ****
  compiled.
  
  @node Using GNAT Files with External Tools,,GNAT and Other Compilation Models,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model using-gnat-files-with-external-tools}@anchor{1a}@anchor{gnat_ugn/the_gnat_compilation_model id77}@anchor{d2}
  @section Using GNAT Files with External Tools
  
  
--- 6913,6919 ----
  compiled.
  
  @node Using GNAT Files with External Tools,,GNAT and Other Compilation Models,The GNAT Compilation Model
! @anchor{gnat_ugn/the_gnat_compilation_model using-gnat-files-with-external-tools}@anchor{2e}@anchor{gnat_ugn/the_gnat_compilation_model id77}@anchor{bf}
  @section Using GNAT Files with External Tools
  
  
*************** used with tools designed for other langu
*** 7140,7146 ****
  @end menu
  
  @node Using Other Utility Programs with GNAT,The External Symbol Naming Scheme of GNAT,,Using GNAT Files with External Tools
! @anchor{gnat_ugn/the_gnat_compilation_model using-other-utility-programs-with-gnat}@anchor{d3}@anchor{gnat_ugn/the_gnat_compilation_model id78}@anchor{d4}
  @subsection Using Other Utility Programs with GNAT
  
  
--- 6927,6933 ----
  @end menu
  
  @node Using Other Utility Programs with GNAT,The External Symbol Naming Scheme of GNAT,,Using GNAT Files with External Tools
! @anchor{gnat_ugn/the_gnat_compilation_model using-other-utility-programs-with-gnat}@anchor{c0}@anchor{gnat_ugn/the_gnat_compilation_model id78}@anchor{c1}
  @subsection Using Other Utility Programs with GNAT
  
  
*************** gprof (a profiling program), gdb (the FS
*** 7155,7161 ****
  as Purify.
  
  @node The External Symbol Naming Scheme of GNAT,,Using Other Utility Programs with GNAT,Using GNAT Files with External Tools
! @anchor{gnat_ugn/the_gnat_compilation_model the-external-symbol-naming-scheme-of-gnat}@anchor{d5}@anchor{gnat_ugn/the_gnat_compilation_model id79}@anchor{d6}
  @subsection The External Symbol Naming Scheme of GNAT
  
  
--- 6942,6948 ----
  as Purify.
  
  @node The External Symbol Naming Scheme of GNAT,,Using Other Utility Programs with GNAT,Using GNAT Files with External Tools
! @anchor{gnat_ugn/the_gnat_compilation_model the-external-symbol-naming-scheme-of-gnat}@anchor{c2}@anchor{gnat_ugn/the_gnat_compilation_model id79}@anchor{c3}
  @subsection The External Symbol Naming Scheme of GNAT
  
  
*************** the external name of this procedure will
*** 7214,7236 ****
  @c -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit
  
  @node Building Executable Programs with GNAT,GNAT Utility Programs,The GNAT Compilation Model,Top
! @anchor{gnat_ugn/building_executable_programs_with_gnat building-executable-programs-with-gnat}@anchor{a}@anchor{gnat_ugn/building_executable_programs_with_gnat doc}@anchor{d7}@anchor{gnat_ugn/building_executable_programs_with_gnat id1}@anchor{d8}
  @chapter Building Executable Programs with GNAT
  
  
  This chapter describes first the gnatmake tool
! (@ref{1b,,Building with gnatmake}),
  which automatically determines the set of sources
  needed by an Ada compilation unit and executes the necessary
  (re)compilations, binding and linking.
  It also explains how to use each tool individually: the
! compiler (gcc, see @ref{1c,,Compiling with gcc}),
! binder (gnatbind, see @ref{1d,,Binding with gnatbind}),
! and linker (gnatlink, see @ref{1e,,Linking with gnatlink})
  to build executable programs.
  Finally, this chapter provides examples of
  how to make use of the general GNU make mechanism
! in a GNAT context (see @ref{1f,,Using the GNU make Utility}).
  
  
  @menu
--- 7001,7023 ----
  @c -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit
  
  @node Building Executable Programs with GNAT,GNAT Utility Programs,The GNAT Compilation Model,Top
! @anchor{gnat_ugn/building_executable_programs_with_gnat building-executable-programs-with-gnat}@anchor{a}@anchor{gnat_ugn/building_executable_programs_with_gnat doc}@anchor{c4}@anchor{gnat_ugn/building_executable_programs_with_gnat id1}@anchor{c5}
  @chapter Building Executable Programs with GNAT
  
  
  This chapter describes first the gnatmake tool
! (@ref{c6,,Building with gnatmake}),
  which automatically determines the set of sources
  needed by an Ada compilation unit and executes the necessary
  (re)compilations, binding and linking.
  It also explains how to use each tool individually: the
! compiler (gcc, see @ref{c7,,Compiling with gcc}),
! binder (gnatbind, see @ref{c8,,Binding with gnatbind}),
! and linker (gnatlink, see @ref{c9,,Linking with gnatlink})
  to build executable programs.
  Finally, this chapter provides examples of
  how to make use of the general GNU make mechanism
! in a GNAT context (see @ref{70,,Using the GNU make Utility}).
  
  
  @menu
*************** in a GNAT context (see @ref{1f,,Using th
*** 7245,7251 ****
  @end menu
  
  @node Building with gnatmake,Compiling with gcc,,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat the-gnat-make-program-gnatmake}@anchor{1b}@anchor{gnat_ugn/building_executable_programs_with_gnat building-with-gnatmake}@anchor{d9}
  @section Building with @code{gnatmake}
  
  
--- 7032,7038 ----
  @end menu
  
  @node Building with gnatmake,Compiling with gcc,,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat the-gnat-make-program-gnatmake}@anchor{c6}@anchor{gnat_ugn/building_executable_programs_with_gnat building-with-gnatmake}@anchor{ca}
  @section Building with @code{gnatmake}
  
  
*************** to @code{gnatmake}.
*** 7309,7315 ****
  @end menu
  
  @node Running gnatmake,Switches for gnatmake,,Building with gnatmake
! @anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatmake}@anchor{da}@anchor{gnat_ugn/building_executable_programs_with_gnat id2}@anchor{db}
  @subsection Running @code{gnatmake}
  
  
--- 7096,7102 ----
  @end menu
  
  @node Running gnatmake,Switches for gnatmake,,Building with gnatmake
! @anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatmake}@anchor{cb}@anchor{gnat_ugn/building_executable_programs_with_gnat id2}@anchor{cc}
  @subsection Running @code{gnatmake}
  
  
*************** be searched for in the specified directo
*** 7337,7350 ****
  source file will first be searched in the directory where
  @code{gnatmake} was invoked and if it is not found, it will be search on
  the source path of the compiler as described in
! @ref{89,,Search Paths and the Run-Time Library (RTL)}.
  
  All @code{gnatmake} output (except when you specify @code{-M}) is sent to
  @code{stderr}. The output produced by the
  @code{-M} switch is sent to @code{stdout}.
  
  @node Switches for gnatmake,Mode Switches for gnatmake,Running gnatmake,Building with gnatmake
! @anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatmake}@anchor{dc}@anchor{gnat_ugn/building_executable_programs_with_gnat id3}@anchor{dd}
  @subsection Switches for @code{gnatmake}
  
  
--- 7124,7137 ----
  source file will first be searched in the directory where
  @code{gnatmake} was invoked and if it is not found, it will be search on
  the source path of the compiler as described in
! @ref{73,,Search Paths and the Run-Time Library (RTL)}.
  
  All @code{gnatmake} output (except when you specify @code{-M}) is sent to
  @code{stderr}. The output produced by the
  @code{-M} switch is sent to @code{stdout}.
  
  @node Switches for gnatmake,Mode Switches for gnatmake,Running gnatmake,Building with gnatmake
! @anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatmake}@anchor{cd}@anchor{gnat_ugn/building_executable_programs_with_gnat id3}@anchor{ce}
  @subsection Switches for @code{gnatmake}
  
  
*************** then instead object files and ALI files
*** 7718,7724 ****
  in place. This means that once a large project is organized into separate
  directories in the desired manner, then @code{gnatmake} will automatically
  maintain and update this organization. If no ALI files are found on the
! Ada object path (see @ref{89,,Search Paths and the Run-Time Library (RTL)}),
  the new object and ALI files are created in the
  directory containing the source being compiled. If another organization
  is desired, where objects and sources are kept in different directories,
--- 7505,7511 ----
  in place. This means that once a large project is organized into separate
  directories in the desired manner, then @code{gnatmake} will automatically
  maintain and update this organization. If no ALI files are found on the
! Ada object path (see @ref{73,,Search Paths and the Run-Time Library (RTL)}),
  the new object and ALI files are created in the
  directory containing the source being compiled. If another organization
  is desired, where objects and sources are kept in different directories,
*************** Verbosity level High. Equivalent to -v.
*** 7984,7990 ****
  @item @code{-vP@emph{x}}
  
  Indicate the verbosity of the parsing of GNAT project files.
! See @ref{de,,Switches Related to Project Files}.
  @end table
  
  @geindex -x (gnatmake)
--- 7771,7777 ----
  @item @code{-vP@emph{x}}
  
  Indicate the verbosity of the parsing of GNAT project files.
! See @ref{cf,,Switches Related to Project Files}.
  @end table
  
  @geindex -x (gnatmake)
*************** command line need to be sources of a pro
*** 8008,8014 ****
  Indicate that external variable @code{name} has the value @code{value}.
  The Project Manager will use this value for occurrences of
  @code{external(name)} when parsing the project file.
! @ref{de,,Switches Related to Project Files}.
  @end table
  
  @geindex -z (gnatmake)
--- 7795,7801 ----
  Indicate that external variable @code{name} has the value @code{value}.
  The Project Manager will use this value for occurrences of
  @code{external(name)} when parsing the project file.
! @ref{cf,,Switches Related to Project Files}.
  @end table
  
  @geindex -z (gnatmake)
*************** is passed to @code{gcc} (e.g., @code{-O}
*** 8042,8048 ****
  
  When looking for source files also look in directory @code{dir}.
  The order in which source files search is undertaken is
! described in @ref{89,,Search Paths and the Run-Time Library (RTL)}.
  @end table
  
  @geindex -aL (gnatmake)
--- 7829,7835 ----
  
  When looking for source files also look in directory @code{dir}.
  The order in which source files search is undertaken is
! described in @ref{73,,Search Paths and the Run-Time Library (RTL)}.
  @end table
  
  @geindex -aL (gnatmake)
*************** ALI files.
*** 8074,8080 ****
  
  When searching for library and object files, look in directory
  @code{dir}. The order in which library files are searched is described in
! @ref{8c,,Search Paths for gnatbind}.
  @end table
  
  @geindex Search paths
--- 7861,7867 ----
  
  When searching for library and object files, look in directory
  @code{dir}. The order in which library files are searched is described in
! @ref{76,,Search Paths for gnatbind}.
  @end table
  
  @geindex Search paths
*************** The selected path is handled like a norm
*** 8179,8185 ****
  @end table
  
  @node Mode Switches for gnatmake,Notes on the Command Line,Switches for gnatmake,Building with gnatmake
! @anchor{gnat_ugn/building_executable_programs_with_gnat id4}@anchor{df}@anchor{gnat_ugn/building_executable_programs_with_gnat mode-switches-for-gnatmake}@anchor{e0}
  @subsection Mode Switches for @code{gnatmake}
  
  
--- 7966,7972 ----
  @end table
  
  @node Mode Switches for gnatmake,Notes on the Command Line,Switches for gnatmake,Building with gnatmake
! @anchor{gnat_ugn/building_executable_programs_with_gnat id4}@anchor{d0}@anchor{gnat_ugn/building_executable_programs_with_gnat mode-switches-for-gnatmake}@anchor{d1}
  @subsection Mode Switches for @code{gnatmake}
  
  
*************** or @code{-largs}.
*** 8239,8245 ****
  @end table
  
  @node Notes on the Command Line,How gnatmake Works,Mode Switches for gnatmake,Building with gnatmake
! @anchor{gnat_ugn/building_executable_programs_with_gnat id5}@anchor{e1}@anchor{gnat_ugn/building_executable_programs_with_gnat notes-on-the-command-line}@anchor{e2}
  @subsection Notes on the Command Line
  
  
--- 8026,8032 ----
  @end table
  
  @node Notes on the Command Line,How gnatmake Works,Mode Switches for gnatmake,Building with gnatmake
! @anchor{gnat_ugn/building_executable_programs_with_gnat id5}@anchor{d2}@anchor{gnat_ugn/building_executable_programs_with_gnat notes-on-the-command-line}@anchor{d3}
  @subsection Notes on the Command Line
  
  
*************** that the debugging information may be ou
*** 8309,8315 ****
  @end itemize
  
  @node How gnatmake Works,Examples of gnatmake Usage,Notes on the Command Line,Building with gnatmake
! @anchor{gnat_ugn/building_executable_programs_with_gnat id6}@anchor{e3}@anchor{gnat_ugn/building_executable_programs_with_gnat how-gnatmake-works}@anchor{e4}
  @subsection How @code{gnatmake} Works
  
  
--- 8096,8102 ----
  @end itemize
  
  @node How gnatmake Works,Examples of gnatmake Usage,Notes on the Command Line,Building with gnatmake
! @anchor{gnat_ugn/building_executable_programs_with_gnat id6}@anchor{d4}@anchor{gnat_ugn/building_executable_programs_with_gnat how-gnatmake-works}@anchor{d5}
  @subsection How @code{gnatmake} Works
  
  
*************** When invoking @code{gnatmake} with sever
*** 8349,8362 ****
  imported by several of the executables, it will be recompiled at most once.
  
  Note: when using non-standard naming conventions
! (@ref{35,,Using Other File Names}), changing through a configuration pragmas
  file the version of a source and invoking @code{gnatmake} to recompile may
  have no effect, if the previous version of the source is still accessible
  by @code{gnatmake}. It may be necessary to use the switch
  -f.
  
  @node Examples of gnatmake Usage,,How gnatmake Works,Building with gnatmake
! @anchor{gnat_ugn/building_executable_programs_with_gnat examples-of-gnatmake-usage}@anchor{e5}@anchor{gnat_ugn/building_executable_programs_with_gnat id7}@anchor{e6}
  @subsection Examples of @code{gnatmake} Usage
  
  
--- 8136,8149 ----
  imported by several of the executables, it will be recompiled at most once.
  
  Note: when using non-standard naming conventions
! (@ref{1c,,Using Other File Names}), changing through a configuration pragmas
  file the version of a source and invoking @code{gnatmake} to recompile may
  have no effect, if the previous version of the source is still accessible
  by @code{gnatmake}. It may be necessary to use the switch
  -f.
  
  @node Examples of gnatmake Usage,,How gnatmake Works,Building with gnatmake
! @anchor{gnat_ugn/building_executable_programs_with_gnat examples-of-gnatmake-usage}@anchor{d6}@anchor{gnat_ugn/building_executable_programs_with_gnat id7}@anchor{d7}
  @subsection Examples of @code{gnatmake} Usage
  
  
*************** displaying commands it is executing.
*** 8388,8394 ****
  @end table
  
  @node Compiling with gcc,Compiler Switches,Building with gnatmake,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat compiling-with-gcc}@anchor{1c}@anchor{gnat_ugn/building_executable_programs_with_gnat id8}@anchor{e7}
  @section Compiling with @code{gcc}
  
  
--- 8175,8181 ----
  @end table
  
  @node Compiling with gcc,Compiler Switches,Building with gnatmake,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat compiling-with-gcc}@anchor{c7}@anchor{gnat_ugn/building_executable_programs_with_gnat id8}@anchor{d8}
  @section Compiling with @code{gcc}
  
  
*************** that can be used to control the behavior
*** 8405,8411 ****
  @end menu
  
  @node Compiling Programs,Search Paths and the Run-Time Library RTL,,Compiling with gcc
! @anchor{gnat_ugn/building_executable_programs_with_gnat compiling-programs}@anchor{e8}@anchor{gnat_ugn/building_executable_programs_with_gnat id9}@anchor{e9}
  @subsection Compiling Programs
  
  
--- 8192,8198 ----
  @end menu
  
  @node Compiling Programs,Search Paths and the Run-Time Library RTL,,Compiling with gcc
! @anchor{gnat_ugn/building_executable_programs_with_gnat compiling-programs}@anchor{d9}@anchor{gnat_ugn/building_executable_programs_with_gnat id9}@anchor{da}
  @subsection Compiling Programs
  
  
*************** calls @code{gnat1} (the Ada compiler) tw
*** 8518,8528 ****
  The compiler generates two object files @code{x.o} and @code{y.o}
  and the two ALI files @code{x.ali} and @code{y.ali}.
  
! Any switches apply to all the files listed, see @ref{ea,,Compiler Switches} for a
  list of available @code{gcc} switches.
  
  @node Search Paths and the Run-Time Library RTL,Order of Compilation Issues,Compiling Programs,Compiling with gcc
! @anchor{gnat_ugn/building_executable_programs_with_gnat id10}@anchor{eb}@anchor{gnat_ugn/building_executable_programs_with_gnat search-paths-and-the-run-time-library-rtl}@anchor{89}
  @subsection Search Paths and the Run-Time Library (RTL)
  
  
--- 8305,8315 ----
  The compiler generates two object files @code{x.o} and @code{y.o}
  and the two ALI files @code{x.ali} and @code{y.ali}.
  
! Any switches apply to all the files listed, see @ref{db,,Compiler Switches} for a
  list of available @code{gcc} switches.
  
  @node Search Paths and the Run-Time Library RTL,Order of Compilation Issues,Compiling Programs,Compiling with gcc
! @anchor{gnat_ugn/building_executable_programs_with_gnat id10}@anchor{dc}@anchor{gnat_ugn/building_executable_programs_with_gnat search-paths-and-the-run-time-library-rtl}@anchor{73}
  @subsection Search Paths and the Run-Time Library (RTL)
  
  
*************** names separated by colons (semicolons wh
*** 8579,8585 ****
  The content of the @code{ada_source_path} file which is part of the GNAT
  installation tree and is used to store standard libraries such as the
  GNAT Run Time Library (RTL) source files.
! @ref{87,,Installing a library}
  @end itemize
  
  Specifying the switch @code{-I-}
--- 8366,8372 ----
  The content of the @code{ada_source_path} file which is part of the GNAT
  installation tree and is used to store standard libraries such as the
  GNAT Run Time Library (RTL) source files.
! @ref{71,,Installing a library}
  @end itemize
  
  Specifying the switch @code{-I-}
*************** in compiling sources from multiple direc
*** 8621,8627 ****
  development environments much more flexible.
  
  @node Order of Compilation Issues,Examples,Search Paths and the Run-Time Library RTL,Compiling with gcc
! @anchor{gnat_ugn/building_executable_programs_with_gnat id11}@anchor{ec}@anchor{gnat_ugn/building_executable_programs_with_gnat order-of-compilation-issues}@anchor{ed}
  @subsection Order of Compilation Issues
  
  
--- 8408,8414 ----
  development environments much more flexible.
  
  @node Order of Compilation Issues,Examples,Search Paths and the Run-Time Library RTL,Compiling with gcc
! @anchor{gnat_ugn/building_executable_programs_with_gnat id11}@anchor{dd}@anchor{gnat_ugn/building_executable_programs_with_gnat order-of-compilation-issues}@anchor{de}
  @subsection Order of Compilation Issues
  
  
*************** source files on which it depends.
*** 8649,8655 ****
  
  @item 
  There is no library as such, apart from the ALI files
! (@ref{42,,The Ada Library Information Files}, for information on the format
  of these files). For now we find it convenient to create separate ALI files,
  but eventually the information therein may be incorporated into the object
  file directly.
--- 8436,8442 ----
  
  @item 
  There is no library as such, apart from the ALI files
! (@ref{28,,The Ada Library Information Files}, for information on the format
  of these files). For now we find it convenient to create separate ALI files,
  but eventually the information therein may be incorporated into the object
  file directly.
*************** described above), or you will receive a
*** 8662,8668 ****
  @end itemize
  
  @node Examples,,Order of Compilation Issues,Compiling with gcc
! @anchor{gnat_ugn/building_executable_programs_with_gnat id12}@anchor{ee}@anchor{gnat_ugn/building_executable_programs_with_gnat examples}@anchor{ef}
  @subsection Examples
  
  
--- 8449,8455 ----
  @end itemize
  
  @node Examples,,Order of Compilation Issues,Compiling with gcc
! @anchor{gnat_ugn/building_executable_programs_with_gnat id12}@anchor{df}@anchor{gnat_ugn/building_executable_programs_with_gnat examples}@anchor{e0}
  @subsection Examples
  
  
*************** Compile the subunit in file @code{abc-de
*** 8690,8696 ****
  mode.
  
  @node Compiler Switches,Linker Switches,Compiling with gcc,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat compiler-switches}@anchor{f0}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gcc}@anchor{ea}
  @section Compiler Switches
  
  
--- 8477,8483 ----
  mode.
  
  @node Compiler Switches,Linker Switches,Compiling with gcc,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat compiler-switches}@anchor{e1}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gcc}@anchor{db}
  @section Compiler Switches
  
  
*************** compilation units.
*** 8729,8735 ****
  @end menu
  
  @node Alphabetical List of All Switches,Output and Error Message Control,,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id13}@anchor{f1}@anchor{gnat_ugn/building_executable_programs_with_gnat alphabetical-list-of-all-switches}@anchor{f2}
  @subsection Alphabetical List of All Switches
  
  
--- 8516,8522 ----
  @end menu
  
  @node Alphabetical List of All Switches,Output and Error Message Control,,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id13}@anchor{e2}@anchor{gnat_ugn/building_executable_programs_with_gnat alphabetical-list-of-all-switches}@anchor{e3}
  @subsection Alphabetical List of All Switches
  
  
*************** and thus producing inferior code.
*** 8914,8920 ****
  
  Causes the compiler to avoid assumptions regarding non-aliasing
  of objects of different types. See
! @ref{f3,,Optimization and Strict Aliasing} for details.
  @end table
  
  @geindex -fno-strict-overflow (gcc)
--- 8701,8707 ----
  
  Causes the compiler to avoid assumptions regarding non-aliasing
  of objects of different types. See
! @ref{e4,,Optimization and Strict Aliasing} for details.
  @end table
  
  @geindex -fno-strict-overflow (gcc)
*************** for very peculiar cases of low-level pro
*** 8940,8946 ****
  @item @code{-fstack-check}
  
  Activates stack checking.
! See @ref{f4,,Stack Overflow Checking} for details.
  @end table
  
  @geindex -fstack-usage (gcc)
--- 8727,8733 ----
  @item @code{-fstack-check}
  
  Activates stack checking.
! See @ref{e5,,Stack Overflow Checking} for details.
  @end table
  
  @geindex -fstack-usage (gcc)
*************** See @ref{f4,,Stack Overflow Checking} fo
*** 8951,8957 ****
  @item @code{-fstack-usage}
  
  Makes the compiler output stack usage information for the program, on a
! per-subprogram basis. See @ref{f5,,Static Stack Usage Analysis} for details.
  @end table
  
  @geindex -g (gcc)
--- 8738,8744 ----
  @item @code{-fstack-usage}
  
  Makes the compiler output stack usage information for the program, on a
! per-subprogram basis. See @ref{e6,,Static Stack Usage Analysis} for details.
  @end table
  
  @geindex -g (gcc)
*************** Generate brief messages to @code{stderr}
*** 9081,9087 ****
  @item @code{-gnatB}
  
  Assume no invalid (bad) values except for 'Valid attribute use
! (@ref{f6,,Validity Checking}).
  @end table
  
  @geindex -gnatc (gcc)
--- 8868,8874 ----
  @item @code{-gnatB}
  
  Assume no invalid (bad) values except for 'Valid attribute use
! (@ref{e7,,Validity Checking}).
  @end table
  
  @geindex -gnatc (gcc)
*************** an exception because @code{Self(Obj)} pr
*** 9185,9190 ****
--- 8972,8990 ----
  not share the memory location of @code{Obj}.
  @end table
  
+ @geindex -gnateb (gcc)
+ 
+ 
+ @table @asis
+ 
+ @item @code{-gnateb}
+ 
+ Store configuration files by their basename in ALI files. This switch is
+ used for instance by gprbuild for distributed builds in order to prevent
+ issues where machine-specific absolute paths could end up being stored in
+ ALI files.
+ @end table
+ 
  @geindex -gnatec (gcc)
  
  
*************** not share the memory location of @code{O
*** 9194,9200 ****
  
  Specify a configuration pragma file
  (the equal sign is optional)
! (@ref{79,,The Configuration Pragmas Files}).
  @end table
  
  @geindex -gnateC (gcc)
--- 8994,9000 ----
  
  Specify a configuration pragma file
  (the equal sign is optional)
! (@ref{62,,The Configuration Pragmas Files}).
  @end table
  
  @geindex -gnateC (gcc)
*************** Disable atomic synchronization
*** 9227,9233 ****
  @item @code{-gnateDsymbol[=@emph{value}]}
  
  Defines a symbol, associated with @code{value}, for preprocessing.
! (@ref{18,,Integrated Preprocessing}).
  @end table
  
  @geindex -gnateE (gcc)
--- 9027,9033 ----
  @item @code{-gnateDsymbol[=@emph{value}]}
  
  Defines a symbol, associated with @code{value}, for preprocessing.
! (@ref{90,,Integrated Preprocessing}).
  @end table
  
  @geindex -gnateE (gcc)
*************** for unconstrained predefined types. See
*** 9276,9282 ****
  
  The @code{-gnatc} switch must always be specified before this switch, e.g.
  @code{-gnatceg}. Generate a C header from the Ada input file. See
! @ref{ca,,Generating C Headers for Ada Specifications} for more
  information.
  @end quotation
  
--- 9076,9082 ----
  
  The @code{-gnatc} switch must always be specified before this switch, e.g.
  @code{-gnatceg}. Generate a C header from the Ada input file. See
! @ref{b7,,Generating C Headers for Ada Specifications} for more
  information.
  @end quotation
  
*************** This switch turns off the info messages
*** 9350,9356 ****
  
  Specify a mapping file
  (the equal sign is optional)
! (@ref{f7,,Units to Sources Mapping Files}).
  @end table
  
  @geindex -gnatep (gcc)
--- 9150,9156 ----
  
  Specify a mapping file
  (the equal sign is optional)
! (@ref{e8,,Units to Sources Mapping Files}).
  @end table
  
  @geindex -gnatep (gcc)
*************** Specify a mapping file
*** 9362,9368 ****
  
  Specify a preprocessing data file
  (the equal sign is optional)
! (@ref{18,,Integrated Preprocessing}).
  @end table
  
  @geindex -gnateP (gcc)
--- 9162,9168 ----
  
  Specify a preprocessing data file
  (the equal sign is optional)
! (@ref{90,,Integrated Preprocessing}).
  @end table
  
  @geindex -gnateP (gcc)
*************** support this switch.
*** 9560,9566 ****
  @item @code{-gnateV}
  
  Check that all actual parameters of a subprogram call are valid according to
! the rules of validity checking (@ref{f6,,Validity Checking}).
  @end table
  
  @geindex -gnateY (gcc)
--- 9360,9366 ----
  @item @code{-gnateV}
  
  Check that all actual parameters of a subprogram call are valid according to
! the rules of validity checking (@ref{e7,,Validity Checking}).
  @end table
  
  @geindex -gnateY (gcc)
*************** For further details see @ref{f,,Elaborat
*** 9664,9670 ****
  
  Identifier character set (@code{c} = 1/2/3/4/8/9/p/f/n/w).
  For details of the possible selections for @code{c},
! see @ref{48,,Character Set Control}.
  @end table
  
  @geindex -gnatI (gcc)
--- 9464,9470 ----
  
  Identifier character set (@code{c} = 1/2/3/4/8/9/p/f/n/w).
  For details of the possible selections for @code{c},
! see @ref{31,,Character Set Control}.
  @end table
  
  @geindex -gnatI (gcc)
*************** Object_Size, Scalar_Storage_Order, Size,
*** 9686,9695 ****
  and Value_Size. Pragma Default_Scalar_Storage_Order is also ignored.
  Note that this option should be used only for compiling -- the
  code is likely to malfunction at run time.
- 
- Note that when @code{-gnatct} is used to generate trees for input
- into ASIS tools, these representation clauses are removed
- from the tree and ignored. This means that the tool will not see them.
  @end table
  
  @geindex -gnatjnn (gcc)
--- 9486,9491 ----
*************** overflow checking is enabled.
*** 9917,9923 ****
  Note that division by zero is a separate check that is not
  controlled by this switch (divide-by-zero checking is on by default).
  
! See also @ref{f8,,Specifying the Desired Mode}.
  @end table
  
  @geindex -gnatp (gcc)
--- 9713,9719 ----
  Note that division by zero is a separate check that is not
  controlled by this switch (divide-by-zero checking is on by default).
  
! See also @ref{e9,,Specifying the Desired Mode}.
  @end table
  
  @geindex -gnatp (gcc)
*************** See also @ref{f8,,Specifying the Desired
*** 9927,9933 ****
  
  @item @code{-gnatp}
  
! Suppress all checks. See @ref{f9,,Run-Time Checks} for details. This switch
  has no effect if cancelled by a subsequent @code{-gnat-p} switch.
  @end table
  
--- 9723,9729 ----
  
  @item @code{-gnatp}
  
! Suppress all checks. See @ref{ea,,Run-Time Checks} for details. This switch
  has no effect if cancelled by a subsequent @code{-gnat-p} switch.
  @end table
  
*************** has no effect if cancelled by a subseque
*** 9941,9959 ****
  Cancel effect of previous @code{-gnatp} switch.
  @end table
  
- @geindex -gnatP (gcc)
- 
- 
- @table @asis
- 
- @item @code{-gnatP}
- 
- Enable polling. This is required on some systems (notably Windows NT) to
- obtain asynchronous abort and asynchronous transfer of control capability.
- See @code{Pragma_Polling} in the @cite{GNAT_Reference_Manual} for full
- details.
- @end table
- 
  @geindex -gnatq (gcc)
  
  
--- 9737,9742 ----
*************** Syntax check only.
*** 10019,10034 ****
  Print package Standard.
  @end table
  
- @geindex -gnatt (gcc)
- 
- 
- @table @asis
- 
- @item @code{-gnatt}
- 
- Generate tree output file.
- @end table
- 
  @geindex -gnatT (gcc)
  
  
--- 9802,9807 ----
*************** Verbose mode. Full error output with sou
*** 10076,10082 ****
  
  @item @code{-gnatV}
  
! Control level of validity checking (@ref{f6,,Validity Checking}).
  @end table
  
  @geindex -gnatw (gcc)
--- 9849,9855 ----
  
  @item @code{-gnatV}
  
! Control level of validity checking (@ref{e7,,Validity Checking}).
  @end table
  
  @geindex -gnatw (gcc)
*************** Control level of validity checking (@ref
*** 10089,10095 ****
  Warning mode where
  @code{xxx} is a string of option letters that denotes
  the exact warnings that
! are enabled or disabled (@ref{fa,,Warning Message Control}).
  @end table
  
  @geindex -gnatW (gcc)
--- 9862,9868 ----
  Warning mode where
  @code{xxx} is a string of option letters that denotes
  the exact warnings that
! are enabled or disabled (@ref{eb,,Warning Message Control}).
  @end table
  
  @geindex -gnatW (gcc)
*************** Enable GNAT implementation extensions an
*** 10130,10136 ****
  
  @item @code{-gnaty}
  
! Enable built-in style checks (@ref{fb,,Style Checking}).
  @end table
  
  @geindex -gnatz (gcc)
--- 9903,9909 ----
  
  @item @code{-gnaty}
  
! Enable built-in style checks (@ref{ec,,Style Checking}).
  @end table
  
  @geindex -gnatz (gcc)
*************** Distribution stub generation and compila
*** 10155,10161 ****
  
  Direct GNAT to search the @code{dir} directory for source files needed by
  the current compilation
! (see @ref{89,,Search Paths and the Run-Time Library (RTL)}).
  @end table
  
  @geindex -I- (gcc)
--- 9928,9934 ----
  
  Direct GNAT to search the @code{dir} directory for source files needed by
  the current compilation
! (see @ref{73,,Search Paths and the Run-Time Library (RTL)}).
  @end table
  
  @geindex -I- (gcc)
*************** the current compilation
*** 10169,10175 ****
  
  Except for the source file named in the command line, do not look for source
  files in the directory containing the source file named in the command line
! (see @ref{89,,Search Paths and the Run-Time Library (RTL)}).
  @end table
  
  @geindex -o (gcc)
--- 9942,9948 ----
  
  Except for the source file named in the command line, do not look for source
  files in the directory containing the source file named in the command line
! (see @ref{73,,Search Paths and the Run-Time Library (RTL)}).
  @end table
  
  @geindex -o (gcc)
*************** Optimize space usage
*** 10273,10279 ****
  @end multitable
  
  
! See also @ref{fc,,Optimization Levels}.
  @end table
  
  @geindex -pass-exit-codes (gcc)
--- 10046,10052 ----
  @end multitable
  
  
! See also @ref{ed,,Optimization Levels}.
  @end table
  
  @geindex -pass-exit-codes (gcc)
*************** exit status.
*** 10295,10301 ****
  @item @code{--RTS=@emph{rts-path}}
  
  Specifies the default location of the run-time library. Same meaning as the
! equivalent @code{gnatmake} flag (@ref{dc,,Switches for gnatmake}).
  @end table
  
  @geindex -S (gcc)
--- 10068,10074 ----
  @item @code{--RTS=@emph{rts-path}}
  
  Specifies the default location of the run-time library. Same meaning as the
! equivalent @code{gnatmake} flag (@ref{cd,,Switches for gnatmake}).
  @end table
  
  @geindex -S (gcc)
*************** as warning mode modifiers (see descripti
*** 10421,10427 ****
  @item 
  Once a 'V' appears in the string (that is a use of the @code{-gnatV}
  switch), then all further characters in the switch are interpreted
! as validity checking options (@ref{f6,,Validity Checking}).
  
  @item 
  Option 'em', 'ec', 'ep', 'l=' and 'R' must be the last options in
--- 10194,10200 ----
  @item 
  Once a 'V' appears in the string (that is a use of the @code{-gnatV}
  switch), then all further characters in the switch are interpreted
! as validity checking options (@ref{e7,,Validity Checking}).
  
  @item 
  Option 'em', 'ec', 'ep', 'l=' and 'R' must be the last options in
*************** a combined list of options.
*** 10429,10435 ****
  @end itemize
  
  @node Output and Error Message Control,Warning Message Control,Alphabetical List of All Switches,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id14}@anchor{fd}@anchor{gnat_ugn/building_executable_programs_with_gnat output-and-error-message-control}@anchor{fe}
  @subsection Output and Error Message Control
  
  
--- 10202,10208 ----
  @end itemize
  
  @node Output and Error Message Control,Warning Message Control,Alphabetical List of All Switches,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id14}@anchor{ee}@anchor{gnat_ugn/building_executable_programs_with_gnat output-and-error-message-control}@anchor{ef}
  @subsection Output and Error Message Control
  
  
*************** environments) that are driven from the @
*** 10715,10728 ****
  implies @code{-gnatq}, since the semantic phase must be run to get a
  meaningful ALI file.
  
- In addition, if @code{-gnatt} is also specified, then the tree file is
- generated even if there are illegalities. It may be useful in this case
- to also specify @code{-gnatq} to ensure that full semantic processing
- occurs. The resulting tree file can be processed by ASIS, for the purpose
- of providing partial information about illegal units, but if the error
- causes the tree to be badly malformed, then ASIS may crash during the
- analysis.
- 
  When @code{-gnatQ} is used and the generated @code{ALI} file is marked as
  being in error, @code{gnatmake} will attempt to recompile the source when it
  finds such an @code{ALI} file, including with switch @code{-gnatc}.
--- 10488,10493 ----
*************** since ALI files are never generated if @
*** 10732,10738 ****
  @end table
  
  @node Warning Message Control,Debugging and Assertion Control,Output and Error Message Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat warning-message-control}@anchor{fa}@anchor{gnat_ugn/building_executable_programs_with_gnat id15}@anchor{ff}
  @subsection Warning Message Control
  
  
--- 10497,10503 ----
  @end table
  
  @node Warning Message Control,Debugging and Assertion Control,Output and Error Message Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat warning-message-control}@anchor{eb}@anchor{gnat_ugn/building_executable_programs_with_gnat id15}@anchor{f0}
  @subsection Warning Message Control
  
  
*************** not included in this check.
*** 11742,11748 ****
  
  @emph{Suppress warnings on redefinition of names in standard.}
  
! This switch activates warnings for declarations that declare a name that
  is defined in package Standard.
  @end table
  
--- 11507,11513 ----
  
  @emph{Suppress warnings on redefinition of names in standard.}
  
! This switch disables warnings for declarations that declare a name that
  is defined in package Standard.
  @end table
  
*************** that no warnings are given for compariso
*** 12476,12482 ****
  
  This switch activates warnings for access to variables which
  may not be properly initialized. The default is that
! such warnings are generated.
  @end table
  
  @geindex -gnatwV (gcc)
--- 12241,12254 ----
  
  This switch activates warnings for access to variables which
  may not be properly initialized. The default is that
! such warnings are generated. This switch will also be emitted when
! initializing an array or record object via the following aggregate:
! 
! @example
! Array_Or_Record : XXX := (others => <>);
! @end example
! 
! unless the relevant type fully initializes all components.
  @end table
  
  @geindex -gnatwV (gcc)
*************** such warnings are generated.
*** 12490,12506 ****
  
  This switch suppresses warnings for access to variables which
  may not be properly initialized.
- For variables of a composite type, the warning can also be suppressed in
- Ada 2005 by using a default initialization with a box. For example, if
- Table is an array of records whose components are only partially uninitialized,
- then the following code:
- 
- @example
- Tab : Table := (others => <>);
- @end example
- 
- will suppress warnings on subsequent statements that access components
- of variable Tab.
  @end table
  
  @geindex -gnatw.v (gcc)
--- 12262,12267 ----
*************** used in conjunction with an optimization
*** 12837,12843 ****
  @item @code{-Wstack-usage=@emph{len}}
  
  Warn if the stack usage of a subprogram might be larger than @code{len} bytes.
! See @ref{f5,,Static Stack Usage Analysis} for details.
  @end table
  
  @geindex -Wall (gcc)
--- 12598,12604 ----
  @item @code{-Wstack-usage=@emph{len}}
  
  Warn if the stack usage of a subprogram might be larger than @code{len} bytes.
! See @ref{e6,,Static Stack Usage Analysis} for details.
  @end table
  
  @geindex -Wall (gcc)
*************** When no switch @code{-gnatw} is used, th
*** 13035,13041 ****
  @end quotation
  
  @node Debugging and Assertion Control,Validity Checking,Warning Message Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat debugging-and-assertion-control}@anchor{100}@anchor{gnat_ugn/building_executable_programs_with_gnat id16}@anchor{101}
  @subsection Debugging and Assertion Control
  
  
--- 12796,12802 ----
  @end quotation
  
  @node Debugging and Assertion Control,Validity Checking,Warning Message Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat debugging-and-assertion-control}@anchor{f1}@anchor{gnat_ugn/building_executable_programs_with_gnat id16}@anchor{f2}
  @subsection Debugging and Assertion Control
  
  
*************** is @code{False}, the exception @code{Ass
*** 13124,13130 ****
  @end table
  
  @node Validity Checking,Style Checking,Debugging and Assertion Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat validity-checking}@anchor{f6}@anchor{gnat_ugn/building_executable_programs_with_gnat id17}@anchor{102}
  @subsection Validity Checking
  
  
--- 12885,12891 ----
  @end table
  
  @node Validity Checking,Style Checking,Debugging and Assertion Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat validity-checking}@anchor{e7}@anchor{gnat_ugn/building_executable_programs_with_gnat id17}@anchor{f3}
  @subsection Validity Checking
  
  
*************** to the default checks required by Ada as
*** 13186,13192 ****
  
  All validity checks are turned on.
  That is, @code{-gnatVa} is
! equivalent to @code{gnatVcdfimorst}.
  @end table
  
  @geindex -gnatVc (gcc)
--- 12947,12953 ----
  
  All validity checks are turned on.
  That is, @code{-gnatVa} is
! equivalent to @code{gnatVcdfimoprst}.
  @end table
  
  @geindex -gnatVc (gcc)
*************** the validity checking mode at the progra
*** 13413,13419 ****
  temporary disabling of validity checks.
  
  @node Style Checking,Run-Time Checks,Validity Checking,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id18}@anchor{103}@anchor{gnat_ugn/building_executable_programs_with_gnat style-checking}@anchor{fb}
  @subsection Style Checking
  
  
--- 13174,13180 ----
  temporary disabling of validity checks.
  
  @node Style Checking,Run-Time Checks,Validity Checking,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id18}@anchor{f4}@anchor{gnat_ugn/building_executable_programs_with_gnat style-checking}@anchor{ec}
  @subsection Style Checking
  
  
*************** but not @code{in} on its own.
*** 13720,13726 ****
  
  All keywords must be in lower case (with the exception of keywords
  such as @code{digits} used as attribute names to which this check
! does not apply).
  @end table
  
  @geindex -gnatyl (gcc)
--- 13481,13488 ----
  
  All keywords must be in lower case (with the exception of keywords
  such as @code{digits} used as attribute names to which this check
! does not apply). A single error is reported for each line breaking
! this rule even if multiple casing issues exist on a same line.
  @end table
  
  @geindex -gnatyl (gcc)
*************** built-in standard style check options ar
*** 14135,14141 ****
  The switch @code{-gnatyN} clears any previously set style checks.
  
  @node Run-Time Checks,Using gcc for Syntax Checking,Style Checking,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat run-time-checks}@anchor{f9}@anchor{gnat_ugn/building_executable_programs_with_gnat id19}@anchor{104}
  @subsection Run-Time Checks
  
  
--- 13897,13903 ----
  The switch @code{-gnatyN} clears any previously set style checks.
  
  @node Run-Time Checks,Using gcc for Syntax Checking,Style Checking,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat run-time-checks}@anchor{ea}@anchor{gnat_ugn/building_executable_programs_with_gnat id19}@anchor{f5}
  @subsection Run-Time Checks
  
  
*************** on subprogram calls and generic instanti
*** 14329,14335 ****
  Note that @code{-gnatE} is not necessary for safety, because in the
  default mode, GNAT ensures statically that the checks would not fail.
  For full details of the effect and use of this switch,
! @ref{1c,,Compiling with gcc}.
  @end table
  
  @geindex -fstack-check (gcc)
--- 14091,14097 ----
  Note that @code{-gnatE} is not necessary for safety, because in the
  default mode, GNAT ensures statically that the checks would not fail.
  For full details of the effect and use of this switch,
! @ref{c7,,Compiling with gcc}.
  @end table
  
  @geindex -fstack-check (gcc)
*************** For full details of the effect and use o
*** 14345,14351 ****
  @item @code{-fstack-check}
  
  Activates stack overflow checking. For full details of the effect and use of
! this switch see @ref{f4,,Stack Overflow Checking}.
  @end table
  
  @geindex Unsuppress
--- 14107,14113 ----
  @item @code{-fstack-check}
  
  Activates stack overflow checking. For full details of the effect and use of
! this switch see @ref{e5,,Stack Overflow Checking}.
  @end table
  
  @geindex Unsuppress
*************** checks) or @code{Unsuppress} (to add bac
*** 14356,14362 ****
  the program source.
  
  @node Using gcc for Syntax Checking,Using gcc for Semantic Checking,Run-Time Checks,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id20}@anchor{105}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gcc-for-syntax-checking}@anchor{106}
  @subsection Using @code{gcc} for Syntax Checking
  
  
--- 14118,14124 ----
  the program source.
  
  @node Using gcc for Syntax Checking,Using gcc for Semantic Checking,Run-Time Checks,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id20}@anchor{f6}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gcc-for-syntax-checking}@anchor{f7}
  @subsection Using @code{gcc} for Syntax Checking
  
  
*************** Normally, GNAT allows only a single unit
*** 14409,14419 ****
  restriction does not apply in syntax-check-only mode, and it is possible
  to check a file containing multiple compilation units concatenated
  together. This is primarily used by the @code{gnatchop} utility
! (@ref{36,,Renaming Files with gnatchop}).
  @end table
  
  @node Using gcc for Semantic Checking,Compiling Different Versions of Ada,Using gcc for Syntax Checking,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id21}@anchor{107}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gcc-for-semantic-checking}@anchor{108}
  @subsection Using @code{gcc} for Semantic Checking
  
  
--- 14171,14181 ----
  restriction does not apply in syntax-check-only mode, and it is possible
  to check a file containing multiple compilation units concatenated
  together. This is primarily used by the @code{gnatchop} utility
! (@ref{1d,,Renaming Files with gnatchop}).
  @end table
  
  @node Using gcc for Semantic Checking,Compiling Different Versions of Ada,Using gcc for Syntax Checking,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id21}@anchor{f8}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gcc-for-semantic-checking}@anchor{f9}
  @subsection Using @code{gcc} for Semantic Checking
  
  
*************** semantic restrictions on file structurin
*** 14438,14450 ****
  
  @item 
  The needed source files must be accessible
! (see @ref{89,,Search Paths and the Run-Time Library (RTL)}).
  
  @item 
  Each file must contain only one compilation unit.
  
  @item 
! The file name and unit name must match (@ref{52,,File Naming Rules}).
  @end itemize
  
  The output consists of error messages as appropriate. No object file is
--- 14200,14212 ----
  
  @item 
  The needed source files must be accessible
! (see @ref{73,,Search Paths and the Run-Time Library (RTL)}).
  
  @item 
  Each file must contain only one compilation unit.
  
  @item 
! The file name and unit name must match (@ref{3b,,File Naming Rules}).
  @end itemize
  
  The output consists of error messages as appropriate. No object file is
*************** and specifications where a separate body
*** 14460,14466 ****
  @end table
  
  @node Compiling Different Versions of Ada,Character Set Control,Using gcc for Semantic Checking,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat compiling-different-versions-of-ada}@anchor{6}@anchor{gnat_ugn/building_executable_programs_with_gnat id22}@anchor{109}
  @subsection Compiling Different Versions of Ada
  
  
--- 14222,14228 ----
  @end table
  
  @node Compiling Different Versions of Ada,Character Set Control,Using gcc for Semantic Checking,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat compiling-different-versions-of-ada}@anchor{6}@anchor{gnat_ugn/building_executable_programs_with_gnat id22}@anchor{fa}
  @subsection Compiling Different Versions of Ada
  
  
*************** extensions, see the GNAT reference manua
*** 14594,14600 ****
  @end table
  
  @node Character Set Control,File Naming Control,Compiling Different Versions of Ada,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id23}@anchor{10a}@anchor{gnat_ugn/building_executable_programs_with_gnat character-set-control}@anchor{48}
  @subsection Character Set Control
  
  
--- 14356,14362 ----
  @end table
  
  @node Character Set Control,File Naming Control,Compiling Different Versions of Ada,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id23}@anchor{fb}@anchor{gnat_ugn/building_executable_programs_with_gnat character-set-control}@anchor{31}
  @subsection Character Set Control
  
  
*************** allowed in identifiers
*** 14705,14711 ****
  @end multitable
  
  
! See @ref{3e,,Foreign Language Representation} for full details on the
  implementation of these character sets.
  @end table
  
--- 14467,14473 ----
  @end multitable
  
  
! See @ref{23,,Foreign Language Representation} for full details on the
  implementation of these character sets.
  @end table
  
*************** Brackets encoding only (default value)
*** 14773,14779 ****
  
  
  For full details on these encoding
! methods see @ref{4e,,Wide_Character Encodings}.
  Note that brackets coding is always accepted, even if one of the other
  options is specified, so for example @code{-gnatW8} specifies that both
  brackets and UTF-8 encodings will be recognized. The units that are
--- 14535,14541 ----
  
  
  For full details on these encoding
! methods see @ref{37,,Wide_Character Encodings}.
  Note that brackets coding is always accepted, even if one of the other
  options is specified, so for example @code{-gnatW8} specifies that both
  brackets and UTF-8 encodings will be recognized. The units that are
*************** comments are ended by an appropriate (CR
*** 14821,14827 ****
  This is a common mode for many programs with foreign language comments.
  
  @node File Naming Control,Subprogram Inlining Control,Character Set Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat file-naming-control}@anchor{10b}@anchor{gnat_ugn/building_executable_programs_with_gnat id24}@anchor{10c}
  @subsection File Naming Control
  
  
--- 14583,14589 ----
  This is a common mode for many programs with foreign language comments.
  
  @node File Naming Control,Subprogram Inlining Control,Character Set Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat file-naming-control}@anchor{fc}@anchor{gnat_ugn/building_executable_programs_with_gnat id24}@anchor{fd}
  @subsection File Naming Control
  
  
*************** Activates file name 'krunching'. @code{n
*** 14837,14847 ****
  including the @code{.ads} or @code{.adb} extension). The default is not
  to enable file name krunching.
  
! For the source file naming rules, @ref{52,,File Naming Rules}.
  @end table
  
  @node Subprogram Inlining Control,Auxiliary Output Control,File Naming Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat subprogram-inlining-control}@anchor{10d}@anchor{gnat_ugn/building_executable_programs_with_gnat id25}@anchor{10e}
  @subsection Subprogram Inlining Control
  
  
--- 14599,14609 ----
  including the @code{.ads} or @code{.adb} extension). The default is not
  to enable file name krunching.
  
! For the source file naming rules, @ref{3b,,File Naming Rules}.
  @end table
  
  @node Subprogram Inlining Control,Auxiliary Output Control,File Naming Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat subprogram-inlining-control}@anchor{fe}@anchor{gnat_ugn/building_executable_programs_with_gnat id25}@anchor{ff}
  @subsection Subprogram Inlining Control
  
  
*************** If you specify this switch the compiler
*** 14874,14880 ****
  creating an extra source dependency for the resulting object file, and
  where possible, the call will be inlined.
  For further details on when inlining is possible
! see @ref{10f,,Inlining of Subprograms}.
  @end table
  
  @geindex -gnatN (gcc)
--- 14636,14642 ----
  creating an extra source dependency for the resulting object file, and
  where possible, the call will be inlined.
  For further details on when inlining is possible
! see @ref{100,,Inlining of Subprograms}.
  @end table
  
  @geindex -gnatN (gcc)
*************** inlining, but that is no longer the case
*** 14895,14926 ****
  @end table
  
  @node Auxiliary Output Control,Debugging Control,Subprogram Inlining Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat auxiliary-output-control}@anchor{110}@anchor{gnat_ugn/building_executable_programs_with_gnat id26}@anchor{111}
  @subsection Auxiliary Output Control
  
  
- @geindex -gnatt (gcc)
- 
- @geindex Writing internal trees
- 
- @geindex Internal trees
- @geindex writing to file
- 
- 
- @table @asis
- 
- @item @code{-gnatt}
- 
- Causes GNAT to write the internal tree for a unit to a file (with the
- extension @code{.adt}.
- This not normally required, but is used by separate analysis tools.
- Typically
- these tools do the necessary compilations automatically, so you should
- not have to specify this switch in normal operation.
- Note that the combination of switches @code{-gnatct}
- generates a tree in the form required by ASIS applications.
- @end table
- 
  @geindex -gnatu (gcc)
  
  
--- 14657,14666 ----
  @end table
  
  @node Auxiliary Output Control,Debugging Control,Subprogram Inlining Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat auxiliary-output-control}@anchor{101}@anchor{gnat_ugn/building_executable_programs_with_gnat id26}@anchor{102}
  @subsection Auxiliary Output Control
  
  
  @geindex -gnatu (gcc)
  
  
*************** An object file has been generated for ev
*** 14987,14993 ****
  @end table
  
  @node Debugging Control,Exception Handling Control,Auxiliary Output Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat debugging-control}@anchor{112}@anchor{gnat_ugn/building_executable_programs_with_gnat id27}@anchor{113}
  @subsection Debugging Control
  
  
--- 14727,14733 ----
  @end table
  
  @node Debugging Control,Exception Handling Control,Auxiliary Output Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat debugging-control}@anchor{103}@anchor{gnat_ugn/building_executable_programs_with_gnat id27}@anchor{104}
  @subsection Debugging Control
  
  
*************** encodings for the rest.
*** 15336,15342 ****
  @end table
  
  @node Exception Handling Control,Units to Sources Mapping Files,Debugging Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id28}@anchor{114}@anchor{gnat_ugn/building_executable_programs_with_gnat exception-handling-control}@anchor{115}
  @subsection Exception Handling Control
  
  
--- 15076,15082 ----
  @end table
  
  @node Exception Handling Control,Units to Sources Mapping Files,Debugging Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id28}@anchor{105}@anchor{gnat_ugn/building_executable_programs_with_gnat exception-handling-control}@anchor{106}
  @subsection Exception Handling Control
  
  
*************** is available for the target in use, othe
*** 15404,15414 ****
  
  The same option @code{--RTS} must be used both for @code{gcc}
  and @code{gnatbind}. Passing this option to @code{gnatmake}
! (@ref{dc,,Switches for gnatmake}) will ensure the required consistency
  through the compilation and binding steps.
  
  @node Units to Sources Mapping Files,Code Generation Control,Exception Handling Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id29}@anchor{116}@anchor{gnat_ugn/building_executable_programs_with_gnat units-to-sources-mapping-files}@anchor{f7}
  @subsection Units to Sources Mapping Files
  
  
--- 15144,15154 ----
  
  The same option @code{--RTS} must be used both for @code{gcc}
  and @code{gnatbind}. Passing this option to @code{gnatmake}
! (@ref{cd,,Switches for gnatmake}) will ensure the required consistency
  through the compilation and binding steps.
  
  @node Units to Sources Mapping Files,Code Generation Control,Exception Handling Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id29}@anchor{107}@anchor{gnat_ugn/building_executable_programs_with_gnat units-to-sources-mapping-files}@anchor{e8}
  @subsection Units to Sources Mapping Files
  
  
*************** mapping file and communicates it to the
*** 15460,15466 ****
  @end table
  
  @node Code Generation Control,,Units to Sources Mapping Files,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat code-generation-control}@anchor{117}@anchor{gnat_ugn/building_executable_programs_with_gnat id30}@anchor{118}
  @subsection Code Generation Control
  
  
--- 15200,15206 ----
  @end table
  
  @node Code Generation Control,,Units to Sources Mapping Files,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat code-generation-control}@anchor{108}@anchor{gnat_ugn/building_executable_programs_with_gnat id30}@anchor{109}
  @subsection Code Generation Control
  
  
*************** there is no point in using @code{-m} swi
*** 15489,15495 ****
  unless you actually see a performance improvement.
  
  @node Linker Switches,Binding with gnatbind,Compiler Switches,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat linker-switches}@anchor{119}@anchor{gnat_ugn/building_executable_programs_with_gnat id31}@anchor{11a}
  @section Linker Switches
  
  
--- 15229,15235 ----
  unless you actually see a performance improvement.
  
  @node Linker Switches,Binding with gnatbind,Compiler Switches,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat linker-switches}@anchor{10a}@anchor{gnat_ugn/building_executable_programs_with_gnat id31}@anchor{10b}
  @section Linker Switches
  
  
*************** platforms.
*** 15509,15515 ****
  @end table
  
  @node Binding with gnatbind,Linking with gnatlink,Linker Switches,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat binding-with-gnatbind}@anchor{1d}@anchor{gnat_ugn/building_executable_programs_with_gnat id32}@anchor{11b}
  @section Binding with @code{gnatbind}
  
  
--- 15249,15255 ----
  @end table
  
  @node Binding with gnatbind,Linking with gnatlink,Linker Switches,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat binding-with-gnatbind}@anchor{c8}@anchor{gnat_ugn/building_executable_programs_with_gnat id32}@anchor{10c}
  @section Binding with @code{gnatbind}
  
  
*************** to be read by the @code{gnatlink} utilit
*** 15560,15566 ****
  @end menu
  
  @node Running gnatbind,Switches for gnatbind,,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatbind}@anchor{11c}@anchor{gnat_ugn/building_executable_programs_with_gnat id33}@anchor{11d}
  @subsection Running @code{gnatbind}
  
  
--- 15300,15306 ----
  @end menu
  
  @node Running gnatbind,Switches for gnatbind,,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatbind}@anchor{10d}@anchor{gnat_ugn/building_executable_programs_with_gnat id33}@anchor{10e}
  @subsection Running @code{gnatbind}
  
  
*************** Ada code provided the @code{-g} switch i
*** 15645,15651 ****
  @code{gnatbind} and @code{gnatlink}.
  
  @node Switches for gnatbind,Command-Line Access,Running gnatbind,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id34}@anchor{11e}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatbind}@anchor{11f}
  @subsection Switches for @code{gnatbind}
  
  
--- 15385,15391 ----
  @code{gnatbind} and @code{gnatlink}.
  
  @node Switches for gnatbind,Command-Line Access,Running gnatbind,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id34}@anchor{10f}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatbind}@anchor{110}
  @subsection Switches for @code{gnatbind}
  
  
*************** Currently the same as @code{-Ea}.
*** 15840,15846 ****
  
  @item @code{-f@emph{elab-order}}
  
! Force elaboration order. For further details see @ref{120,,Elaboration Control}
  and @ref{f,,Elaboration Order Handling in GNAT}.
  @end table
  
--- 15580,15586 ----
  
  @item @code{-f@emph{elab-order}}
  
! Force elaboration order. For further details see @ref{111,,Elaboration Control}
  and @ref{f,,Elaboration Order Handling in GNAT}.
  @end table
  
*************** Legacy elaboration order model enabled.
*** 15889,15895 ****
  @item @code{-H32}
  
  Use 32-bit allocations for @code{__gnat_malloc} (and thus for access types).
! For further details see @ref{121,,Dynamic Allocation Control}.
  @end table
  
  @geindex -H64 (gnatbind)
--- 15629,15635 ----
  @item @code{-H32}
  
  Use 32-bit allocations for @code{__gnat_malloc} (and thus for access types).
! For further details see @ref{112,,Dynamic Allocation Control}.
  @end table
  
  @geindex -H64 (gnatbind)
*************** For further details see @ref{121,,Dynami
*** 15902,15908 ****
  @item @code{-H64}
  
  Use 64-bit allocations for @code{__gnat_malloc} (and thus for access types).
! For further details see @ref{121,,Dynamic Allocation Control}.
  
  @geindex -I (gnatbind)
  
--- 15642,15648 ----
  @item @code{-H64}
  
  Use 64-bit allocations for @code{__gnat_malloc} (and thus for access types).
! For further details see @ref{112,,Dynamic Allocation Control}.
  
  @geindex -I (gnatbind)
  
*************** Output chosen elaboration order.
*** 15929,15939 ****
  @item @code{-L@emph{xxx}}
  
  Bind the units for library building. In this case the @code{adainit} and
! @code{adafinal} procedures (@ref{b4,,Binding with Non-Ada Main Programs})
  are renamed to @code{@emph{xxx}init} and
  @code{@emph{xxx}final}.
  Implies -n.
! (@ref{15,,GNAT and Libraries}, for more details.)
  
  @geindex -M (gnatbind)
  
--- 15669,15679 ----
  @item @code{-L@emph{xxx}}
  
  Bind the units for library building. In this case the @code{adainit} and
! @code{adafinal} procedures (@ref{a0,,Binding with Non-Ada Main Programs})
  are renamed to @code{@emph{xxx}init} and
  @code{@emph{xxx}final}.
  Implies -n.
! (@ref{2a,,GNAT and Libraries}, for more details.)
  
  @geindex -M (gnatbind)
  
*************** Do not look for library files in the sys
*** 16000,16006 ****
  @item @code{--RTS=@emph{rts-path}}
  
  Specifies the default location of the run-time library. Same meaning as the
! equivalent @code{gnatmake} flag (@ref{dc,,Switches for gnatmake}).
  
  @geindex -o (gnatbind)
  
--- 15740,15746 ----
  @item @code{--RTS=@emph{rts-path}}
  
  Specifies the default location of the run-time library. Same meaning as the
! equivalent @code{gnatmake} flag (@ref{cd,,Switches for gnatmake}).
  
  @geindex -o (gnatbind)
  
*************** Enable dynamic stack usage, with @code{n
*** 16154,16160 ****
  at program termination. A result is generated when a task
  terminates. Results that can't be stored are displayed on the fly, at
  task termination. This option is currently not supported on Itanium
! platforms. (See @ref{122,,Dynamic Stack Usage Analysis} for details.)
  
  @geindex -v (gnatbind)
  
--- 15894,15900 ----
  at program termination. A result is generated when a task
  terminates. Results that can't be stored are displayed on the fly, at
  task termination. This option is currently not supported on Itanium
! platforms. (See @ref{113,,Dynamic Stack Usage Analysis} for details.)
  
  @geindex -v (gnatbind)
  
*************** Override default wide character encoding
*** 16189,16194 ****
--- 15929,15945 ----
  
  Exclude source files (check object consistency only).
  
+ @geindex -xdr (gnatbind)
+ 
+ @item @code{-xdr}
+ 
+ Use the target-independent XDR protocol for stream oriented attributes
+ instead of the default implementation which is based on direct binary
+ representations and is therefore target-and endianness-dependent.
+ However it does not support 128-bit integer types and the exception
+ @code{Ada.IO_Exceptions.Device_Error} is raised if any attempt is made
+ at streaming 128-bit integer types with it.
+ 
  @geindex -Xnnn (gnatbind)
  
  @item @code{-X@emph{nnn}}
*************** no arguments.
*** 16223,16229 ****
  @end menu
  
  @node Consistency-Checking Modes,Binder Error Message Control,,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat consistency-checking-modes}@anchor{123}@anchor{gnat_ugn/building_executable_programs_with_gnat id35}@anchor{124}
  @subsubsection Consistency-Checking Modes
  
  
--- 15974,15980 ----
  @end menu
  
  @node Consistency-Checking Modes,Binder Error Message Control,,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat consistency-checking-modes}@anchor{114}@anchor{gnat_ugn/building_executable_programs_with_gnat id35}@anchor{115}
  @subsubsection Consistency-Checking Modes
  
  
*************** case the checking against sources has al
*** 16277,16283 ****
  @end table
  
  @node Binder Error Message Control,Elaboration Control,Consistency-Checking Modes,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id36}@anchor{125}@anchor{gnat_ugn/building_executable_programs_with_gnat binder-error-message-control}@anchor{126}
  @subsubsection Binder Error Message Control
  
  
--- 16028,16034 ----
  @end table
  
  @node Binder Error Message Control,Elaboration Control,Consistency-Checking Modes,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id36}@anchor{116}@anchor{gnat_ugn/building_executable_programs_with_gnat binder-error-message-control}@anchor{117}
  @subsubsection Binder Error Message Control
  
  
*************** with extreme care.
*** 16387,16393 ****
  @end table
  
  @node Elaboration Control,Output Control,Binder Error Message Control,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id37}@anchor{127}@anchor{gnat_ugn/building_executable_programs_with_gnat elaboration-control}@anchor{120}
  @subsubsection Elaboration Control
  
  
--- 16138,16144 ----
  @end table
  
  @node Elaboration Control,Output Control,Binder Error Message Control,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id37}@anchor{118}@anchor{gnat_ugn/building_executable_programs_with_gnat elaboration-control}@anchor{111}
  @subsubsection Elaboration Control
  
  
*************** debugging/experimental use.
*** 16472,16478 ****
  @end table
  
  @node Output Control,Dynamic Allocation Control,Elaboration Control,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat output-control}@anchor{128}@anchor{gnat_ugn/building_executable_programs_with_gnat id38}@anchor{129}
  @subsubsection Output Control
  
  
--- 16223,16229 ----
  @end table
  
  @node Output Control,Dynamic Allocation Control,Elaboration Control,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat output-control}@anchor{119}@anchor{gnat_ugn/building_executable_programs_with_gnat id38}@anchor{11a}
  @subsubsection Output Control
  
  
*************** be used to improve code generation in so
*** 16553,16559 ****
  @end table
  
  @node Dynamic Allocation Control,Binding with Non-Ada Main Programs,Output Control,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat dynamic-allocation-control}@anchor{121}@anchor{gnat_ugn/building_executable_programs_with_gnat id39}@anchor{12a}
  @subsubsection Dynamic Allocation Control
  
  
--- 16304,16310 ----
  @end table
  
  @node Dynamic Allocation Control,Binding with Non-Ada Main Programs,Output Control,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat dynamic-allocation-control}@anchor{112}@anchor{gnat_ugn/building_executable_programs_with_gnat id39}@anchor{11b}
  @subsubsection Dynamic Allocation Control
  
  
*************** unless explicitly overridden by a @code{
*** 16579,16585 ****
  These switches are only effective on VMS platforms.
  
  @node Binding with Non-Ada Main Programs,Binding Programs with No Main Subprogram,Dynamic Allocation Control,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat binding-with-non-ada-main-programs}@anchor{b4}@anchor{gnat_ugn/building_executable_programs_with_gnat id40}@anchor{12b}
  @subsubsection Binding with Non-Ada Main Programs
  
  
--- 16330,16336 ----
  These switches are only effective on VMS platforms.
  
  @node Binding with Non-Ada Main Programs,Binding Programs with No Main Subprogram,Dynamic Allocation Control,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat binding-with-non-ada-main-programs}@anchor{a0}@anchor{gnat_ugn/building_executable_programs_with_gnat id40}@anchor{11c}
  @subsubsection Binding with Non-Ada Main Programs
  
  
*************** program is in Ada, and that the task of
*** 16588,16594 ****
  corresponding function @code{main} that invokes this Ada main
  program. GNAT also supports the building of executable programs where
  the main program is not in Ada, but some of the called routines are
! written in Ada and compiled using GNAT (@ref{44,,Mixed Language Programming}).
  The following switch is used in this situation:
  
  @quotation
--- 16339,16345 ----
  corresponding function @code{main} that invokes this Ada main
  program. GNAT also supports the building of executable programs where
  the main program is not in Ada, but some of the called routines are
! written in Ada and compiled using GNAT (@ref{2c,,Mixed Language Programming}).
  The following switch is used in this situation:
  
  @quotation
*************** side effect is that this could be the wr
*** 16675,16681 ****
  where floating point computation could be broken after this call.
  
  @node Binding Programs with No Main Subprogram,,Binding with Non-Ada Main Programs,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat binding-programs-with-no-main-subprogram}@anchor{12c}@anchor{gnat_ugn/building_executable_programs_with_gnat id41}@anchor{12d}
  @subsubsection Binding Programs with No Main Subprogram
  
  
--- 16426,16432 ----
  where floating point computation could be broken after this call.
  
  @node Binding Programs with No Main Subprogram,,Binding with Non-Ada Main Programs,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat binding-programs-with-no-main-subprogram}@anchor{11d}@anchor{gnat_ugn/building_executable_programs_with_gnat id41}@anchor{11e}
  @subsubsection Binding Programs with No Main Subprogram
  
  
*************** the binder switch
*** 16706,16712 ****
  @end table
  
  @node Command-Line Access,Search Paths for gnatbind,Switches for gnatbind,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id42}@anchor{12e}@anchor{gnat_ugn/building_executable_programs_with_gnat command-line-access}@anchor{12f}
  @subsection Command-Line Access
  
  
--- 16457,16463 ----
  @end table
  
  @node Command-Line Access,Search Paths for gnatbind,Switches for gnatbind,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id42}@anchor{11f}@anchor{gnat_ugn/building_executable_programs_with_gnat command-line-access}@anchor{120}
  @subsection Command-Line Access
  
  
*************** required, your main program must set @co
*** 16736,16742 ****
  it.
  
  @node Search Paths for gnatbind,Examples of gnatbind Usage,Command-Line Access,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat search-paths-for-gnatbind}@anchor{8c}@anchor{gnat_ugn/building_executable_programs_with_gnat id43}@anchor{130}
  @subsection Search Paths for @code{gnatbind}
  
  
--- 16487,16493 ----
  it.
  
  @node Search Paths for gnatbind,Examples of gnatbind Usage,Command-Line Access,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat search-paths-for-gnatbind}@anchor{76}@anchor{gnat_ugn/building_executable_programs_with_gnat id43}@anchor{121}
  @subsection Search Paths for @code{gnatbind}
  
  
*************** The binder takes the name of an ALI file
*** 16744,16750 ****
  locate source files as well as other ALI files to verify object consistency.
  
  For source files, it follows exactly the same search rules as @code{gcc}
! (see @ref{89,,Search Paths and the Run-Time Library (RTL)}). For ALI files the
  directories searched are:
  
  
--- 16495,16501 ----
  locate source files as well as other ALI files to verify object consistency.
  
  For source files, it follows exactly the same search rules as @code{gcc}
! (see @ref{73,,Search Paths and the Run-Time Library (RTL)}). For ALI files the
  directories searched are:
  
  
*************** of GNAT).
*** 16793,16799 ****
  The content of the @code{ada_object_path} file which is part of the GNAT
  installation tree and is used to store standard libraries such as the
  GNAT Run-Time Library (RTL) unless the switch @code{-nostdlib} is
! specified. See @ref{87,,Installing a library}
  @end itemize
  
  @geindex -I (gnatbind)
--- 16544,16550 ----
  The content of the @code{ada_object_path} file which is part of the GNAT
  installation tree and is used to store standard libraries such as the
  GNAT Run-Time Library (RTL) unless the switch @code{-nostdlib} is
! specified. See @ref{71,,Installing a library}
  @end itemize
  
  @geindex -I (gnatbind)
*************** in compiling sources from multiple direc
*** 16840,16846 ****
  development environments much more flexible.
  
  @node Examples of gnatbind Usage,,Search Paths for gnatbind,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id44}@anchor{131}@anchor{gnat_ugn/building_executable_programs_with_gnat examples-of-gnatbind-usage}@anchor{132}
  @subsection Examples of @code{gnatbind} Usage
  
  
--- 16591,16597 ----
  development environments much more flexible.
  
  @node Examples of gnatbind Usage,,Search Paths for gnatbind,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id44}@anchor{122}@anchor{gnat_ugn/building_executable_programs_with_gnat examples-of-gnatbind-usage}@anchor{123}
  @subsection Examples of @code{gnatbind} Usage
  
  
*************** since gnatlink will not be able to find
*** 16869,16875 ****
  @end quotation
  
  @node Linking with gnatlink,Using the GNU make Utility,Binding with gnatbind,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat id45}@anchor{133}@anchor{gnat_ugn/building_executable_programs_with_gnat linking-with-gnatlink}@anchor{1e}
  @section Linking with @code{gnatlink}
  
  
--- 16620,16626 ----
  @end quotation
  
  @node Linking with gnatlink,Using the GNU make Utility,Binding with gnatbind,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat id45}@anchor{124}@anchor{gnat_ugn/building_executable_programs_with_gnat linking-with-gnatlink}@anchor{c9}
  @section Linking with @code{gnatlink}
  
  
*************** generated by the @code{gnatbind} to dete
*** 16890,16896 ****
  @end menu
  
  @node Running gnatlink,Switches for gnatlink,,Linking with gnatlink
! @anchor{gnat_ugn/building_executable_programs_with_gnat id46}@anchor{134}@anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatlink}@anchor{135}
  @subsection Running @code{gnatlink}
  
  
--- 16641,16647 ----
  @end menu
  
  @node Running gnatlink,Switches for gnatlink,,Linking with gnatlink
! @anchor{gnat_ugn/building_executable_programs_with_gnat id46}@anchor{125}@anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatlink}@anchor{126}
  @subsection Running @code{gnatlink}
  
  
*************** $ gnatlink my_prog -Wl,-Map,MAPFILE
*** 16949,16956 ****
  
  Using @code{linker options} it is possible to set the program stack and
  heap size.
! See @ref{136,,Setting Stack Size from gnatlink} and
! @ref{137,,Setting Heap Size from gnatlink}.
  
  @code{gnatlink} determines the list of objects required by the Ada
  program and prepends them to the list of objects passed to the linker.
--- 16700,16707 ----
  
  Using @code{linker options} it is possible to set the program stack and
  heap size.
! See @ref{127,,Setting Stack Size from gnatlink} and
! @ref{128,,Setting Heap Size from gnatlink}.
  
  @code{gnatlink} determines the list of objects required by the Ada
  program and prepends them to the list of objects passed to the linker.
*************** program and prepends them to the list of
*** 16959,16965 ****
  presented to the linker.
  
  @node Switches for gnatlink,,Running gnatlink,Linking with gnatlink
! @anchor{gnat_ugn/building_executable_programs_with_gnat id47}@anchor{138}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatlink}@anchor{139}
  @subsection Switches for @code{gnatlink}
  
  
--- 16710,16716 ----
  presented to the linker.
  
  @node Switches for gnatlink,,Running gnatlink,Linking with gnatlink
! @anchor{gnat_ugn/building_executable_programs_with_gnat id47}@anchor{129}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatlink}@anchor{12a}
  @subsection Switches for @code{gnatlink}
  
  
*************** switch.
*** 17154,17160 ****
  @end table
  
  @node Using the GNU make Utility,,Linking with gnatlink,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat using-the-gnu-make-utility}@anchor{1f}@anchor{gnat_ugn/building_executable_programs_with_gnat id48}@anchor{13a}
  @section Using the GNU @code{make} Utility
  
  
--- 16905,16911 ----
  @end table
  
  @node Using the GNU make Utility,,Linking with gnatlink,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat using-the-gnu-make-utility}@anchor{70}@anchor{gnat_ugn/building_executable_programs_with_gnat id48}@anchor{12b}
  @section Using the GNU @code{make} Utility
  
  
*************** switch.
*** 17163,17169 ****
  
  This chapter offers some examples of makefiles that solve specific
  problems. It does not explain how to write a makefile, nor does it try to replace the
! @code{gnatmake} utility (@ref{1b,,Building with gnatmake}).
  
  All the examples in this section are specific to the GNU version of
  make. Although @code{make} is a standard utility, and the basic language
--- 16914,16920 ----
  
  This chapter offers some examples of makefiles that solve specific
  problems. It does not explain how to write a makefile, nor does it try to replace the
! @code{gnatmake} utility (@ref{c6,,Building with gnatmake}).
  
  All the examples in this section are specific to the GNU version of
  make. Although @code{make} is a standard utility, and the basic language
*************** is the same, these examples use some adv
*** 17179,17185 ****
  @end menu
  
  @node Using gnatmake in a Makefile,Automatically Creating a List of Directories,,Using the GNU make Utility
! @anchor{gnat_ugn/building_executable_programs_with_gnat using-gnatmake-in-a-makefile}@anchor{13b}@anchor{gnat_ugn/building_executable_programs_with_gnat id49}@anchor{13c}
  @subsection Using gnatmake in a Makefile
  
  
--- 16930,16936 ----
  @end menu
  
  @node Using gnatmake in a Makefile,Automatically Creating a List of Directories,,Using the GNU make Utility
! @anchor{gnat_ugn/building_executable_programs_with_gnat using-gnatmake-in-a-makefile}@anchor{12c}@anchor{gnat_ugn/building_executable_programs_with_gnat id49}@anchor{12d}
  @subsection Using gnatmake in a Makefile
  
  
*************** the appropriate directories.
*** 17198,17204 ****
  
  Note that you should also read the example on how to automatically
  create the list of directories
! (@ref{13d,,Automatically Creating a List of Directories})
  which might help you in case your project has a lot of subdirectories.
  
  @example
--- 16949,16955 ----
  
  Note that you should also read the example on how to automatically
  create the list of directories
! (@ref{12e,,Automatically Creating a List of Directories})
  which might help you in case your project has a lot of subdirectories.
  
  @example
*************** clean::
*** 17278,17284 ****
  @end example
  
  @node Automatically Creating a List of Directories,Generating the Command Line Switches,Using gnatmake in a Makefile,Using the GNU make Utility
! @anchor{gnat_ugn/building_executable_programs_with_gnat id50}@anchor{13e}@anchor{gnat_ugn/building_executable_programs_with_gnat automatically-creating-a-list-of-directories}@anchor{13d}
  @subsection Automatically Creating a List of Directories
  
  
--- 17029,17035 ----
  @end example
  
  @node Automatically Creating a List of Directories,Generating the Command Line Switches,Using gnatmake in a Makefile,Using the GNU make Utility
! @anchor{gnat_ugn/building_executable_programs_with_gnat id50}@anchor{12f}@anchor{gnat_ugn/building_executable_programs_with_gnat automatically-creating-a-list-of-directories}@anchor{12e}
  @subsection Automatically Creating a List of Directories
  
  
*************** DIRS := $@{shell find $@{ROOT_DIRECTORY@
*** 17351,17362 ****
  @end example
  
  @node Generating the Command Line Switches,Overcoming Command Line Length Limits,Automatically Creating a List of Directories,Using the GNU make Utility
! @anchor{gnat_ugn/building_executable_programs_with_gnat id51}@anchor{13f}@anchor{gnat_ugn/building_executable_programs_with_gnat generating-the-command-line-switches}@anchor{140}
  @subsection Generating the Command Line Switches
  
  
  Once you have created the list of directories as explained in the
! previous section (@ref{13d,,Automatically Creating a List of Directories}),
  you can easily generate the command line arguments to pass to gnatmake.
  
  For the sake of completeness, this example assumes that the source path
--- 17102,17113 ----
  @end example
  
  @node Generating the Command Line Switches,Overcoming Command Line Length Limits,Automatically Creating a List of Directories,Using the GNU make Utility
! @anchor{gnat_ugn/building_executable_programs_with_gnat id51}@anchor{130}@anchor{gnat_ugn/building_executable_programs_with_gnat generating-the-command-line-switches}@anchor{131}
  @subsection Generating the Command Line Switches
  
  
  Once you have created the list of directories as explained in the
! previous section (@ref{12e,,Automatically Creating a List of Directories}),
  you can easily generate the command line arguments to pass to gnatmake.
  
  For the sake of completeness, this example assumes that the source path
*************** all:
*** 17377,17383 ****
  @end example
  
  @node Overcoming Command Line Length Limits,,Generating the Command Line Switches,Using the GNU make Utility
! @anchor{gnat_ugn/building_executable_programs_with_gnat overcoming-command-line-length-limits}@anchor{141}@anchor{gnat_ugn/building_executable_programs_with_gnat id52}@anchor{142}
  @subsection Overcoming Command Line Length Limits
  
  
--- 17128,17134 ----
  @end example
  
  @node Overcoming Command Line Length Limits,,Generating the Command Line Switches,Using the GNU make Utility
! @anchor{gnat_ugn/building_executable_programs_with_gnat overcoming-command-line-length-limits}@anchor{132}@anchor{gnat_ugn/building_executable_programs_with_gnat id52}@anchor{133}
  @subsection Overcoming Command Line Length Limits
  
  
*************** even none on most systems).
*** 17392,17398 ****
  
  It assumes that you have created a list of directories in your Makefile,
  using one of the methods presented in
! @ref{13d,,Automatically Creating a List of Directories}.
  For the sake of completeness, we assume that the object
  path (where the ALI files are found) is different from the sources patch.
  
--- 17143,17149 ----
  
  It assumes that you have created a list of directories in your Makefile,
  using one of the methods presented in
! @ref{12e,,Automatically Creating a List of Directories}.
  For the sake of completeness, we assume that the object
  path (where the ALI files are found) is different from the sources patch.
  
*************** all:
*** 17435,17441 ****
  @end example
  
  @node GNAT Utility Programs,GNAT and Program Execution,Building Executable Programs with GNAT,Top
! @anchor{gnat_ugn/gnat_utility_programs doc}@anchor{143}@anchor{gnat_ugn/gnat_utility_programs gnat-utility-programs}@anchor{b}@anchor{gnat_ugn/gnat_utility_programs id1}@anchor{144}
  @chapter GNAT Utility Programs
  
  
--- 17186,17192 ----
  @end example
  
  @node GNAT Utility Programs,GNAT and Program Execution,Building Executable Programs with GNAT,Top
! @anchor{gnat_ugn/gnat_utility_programs doc}@anchor{134}@anchor{gnat_ugn/gnat_utility_programs gnat-utility-programs}@anchor{b}@anchor{gnat_ugn/gnat_utility_programs id1}@anchor{135}
  @chapter GNAT Utility Programs
  
  
*************** This chapter describes a number of utili
*** 17446,17461 ****
  @itemize *
  
  @item 
! @ref{20,,The File Cleanup Utility gnatclean}
! 
! @item 
! @ref{21,,The GNAT Library Browser gnatls}
! 
! @item 
! @ref{22,,The Cross-Referencing Tools gnatxref and gnatfind}
  
  @item 
! @ref{23,,The Ada to HTML Converter gnathtml}
  @end itemize
  
  Other GNAT utilities are described elsewhere in this manual:
--- 17197,17206 ----
  @itemize *
  
  @item 
! @ref{136,,The File Cleanup Utility gnatclean}
  
  @item 
! @ref{137,,The GNAT Library Browser gnatls}
  @end itemize
  
  Other GNAT utilities are described elsewhere in this manual:
*************** Other GNAT utilities are described elsew
*** 17464,17491 ****
  @itemize *
  
  @item 
! @ref{59,,Handling Arbitrary File Naming Conventions with gnatname}
  
  @item 
! @ref{63,,File Name Krunching with gnatkr}
  
  @item 
! @ref{36,,Renaming Files with gnatchop}
  
  @item 
! @ref{17,,Preprocessing with gnatprep}
  @end itemize
  
  @menu
  * The File Cleanup Utility gnatclean:: 
  * The GNAT Library Browser gnatls:: 
- * The Cross-Referencing Tools gnatxref and gnatfind:: 
- * The Ada to HTML Converter gnathtml:: 
  
  @end menu
  
  @node The File Cleanup Utility gnatclean,The GNAT Library Browser gnatls,,GNAT Utility Programs
! @anchor{gnat_ugn/gnat_utility_programs id2}@anchor{145}@anchor{gnat_ugn/gnat_utility_programs the-file-cleanup-utility-gnatclean}@anchor{20}
  @section The File Cleanup Utility @code{gnatclean}
  
  
--- 17209,17234 ----
  @itemize *
  
  @item 
! @ref{42,,Handling Arbitrary File Naming Conventions with gnatname}
  
  @item 
! @ref{4c,,File Name Krunching with gnatkr}
  
  @item 
! @ref{1d,,Renaming Files with gnatchop}
  
  @item 
! @ref{8f,,Preprocessing with gnatprep}
  @end itemize
  
  @menu
  * The File Cleanup Utility gnatclean:: 
  * The GNAT Library Browser gnatls:: 
  
  @end menu
  
  @node The File Cleanup Utility gnatclean,The GNAT Library Browser gnatls,,GNAT Utility Programs
! @anchor{gnat_ugn/gnat_utility_programs id2}@anchor{138}@anchor{gnat_ugn/gnat_utility_programs the-file-cleanup-utility-gnatclean}@anchor{136}
  @section The File Cleanup Utility @code{gnatclean}
  
  
*************** generated files and executable files.
*** 17505,17511 ****
  @end menu
  
  @node Running gnatclean,Switches for gnatclean,,The File Cleanup Utility gnatclean
! @anchor{gnat_ugn/gnat_utility_programs running-gnatclean}@anchor{146}@anchor{gnat_ugn/gnat_utility_programs id3}@anchor{147}
  @subsection Running @code{gnatclean}
  
  
--- 17248,17254 ----
  @end menu
  
  @node Running gnatclean,Switches for gnatclean,,The File Cleanup Utility gnatclean
! @anchor{gnat_ugn/gnat_utility_programs running-gnatclean}@anchor{139}@anchor{gnat_ugn/gnat_utility_programs id3}@anchor{13a}
  @subsection Running @code{gnatclean}
  
  
*************** the linker. In informative-only mode, sp
*** 17529,17535 ****
  normal mode is listed, but no file is actually deleted.
  
  @node Switches for gnatclean,,Running gnatclean,The File Cleanup Utility gnatclean
! @anchor{gnat_ugn/gnat_utility_programs id4}@anchor{148}@anchor{gnat_ugn/gnat_utility_programs switches-for-gnatclean}@anchor{149}
  @subsection Switches for @code{gnatclean}
  
  
--- 17272,17278 ----
  normal mode is listed, but no file is actually deleted.
  
  @node Switches for gnatclean,,Running gnatclean,The File Cleanup Utility gnatclean
! @anchor{gnat_ugn/gnat_utility_programs id4}@anchor{13b}@anchor{gnat_ugn/gnat_utility_programs switches-for-gnatclean}@anchor{13c}
  @subsection Switches for @code{gnatclean}
  
  
*************** Verbose mode.
*** 17680,17686 ****
  @item @code{-vP@emph{x}}
  
  Indicates the verbosity of the parsing of GNAT project files.
! @ref{de,,Switches Related to Project Files}.
  @end table
  
  @geindex -X (gnatclean)
--- 17423,17429 ----
  @item @code{-vP@emph{x}}
  
  Indicates the verbosity of the parsing of GNAT project files.
! @ref{cf,,Switches Related to Project Files}.
  @end table
  
  @geindex -X (gnatclean)
*************** Indicates the verbosity of the parsing o
*** 17693,17699 ****
  Indicates that external variable @code{name} has the value @code{value}.
  The Project Manager will use this value for occurrences of
  @code{external(name)} when parsing the project file.
! See @ref{de,,Switches Related to Project Files}.
  @end table
  
  @geindex -aO (gnatclean)
--- 17436,17442 ----
  Indicates that external variable @code{name} has the value @code{value}.
  The Project Manager will use this value for occurrences of
  @code{external(name)} when parsing the project file.
! See @ref{cf,,Switches Related to Project Files}.
  @end table
  
  @geindex -aO (gnatclean)
*************** Do not look for ALI or object files in t
*** 17730,17737 ****
  where @code{gnatclean} was invoked.
  @end table
  
! @node The GNAT Library Browser gnatls,The Cross-Referencing Tools gnatxref and gnatfind,The File Cleanup Utility gnatclean,GNAT Utility Programs
! @anchor{gnat_ugn/gnat_utility_programs the-gnat-library-browser-gnatls}@anchor{21}@anchor{gnat_ugn/gnat_utility_programs id5}@anchor{14a}
  @section The GNAT Library Browser @code{gnatls}
  
  
--- 17473,17480 ----
  where @code{gnatclean} was invoked.
  @end table
  
! @node The GNAT Library Browser gnatls,,The File Cleanup Utility gnatclean,GNAT Utility Programs
! @anchor{gnat_ugn/gnat_utility_programs the-gnat-library-browser-gnatls}@anchor{137}@anchor{gnat_ugn/gnat_utility_programs id5}@anchor{13d}
  @section The GNAT Library Browser @code{gnatls}
  
  
*************** as well as various characteristics.
*** 17752,17758 ****
  @end menu
  
  @node Running gnatls,Switches for gnatls,,The GNAT Library Browser gnatls
! @anchor{gnat_ugn/gnat_utility_programs id6}@anchor{14b}@anchor{gnat_ugn/gnat_utility_programs running-gnatls}@anchor{14c}
  @subsection Running @code{gnatls}
  
  
--- 17495,17501 ----
  @end menu
  
  @node Running gnatls,Switches for gnatls,,The GNAT Library Browser gnatls
! @anchor{gnat_ugn/gnat_utility_programs id6}@anchor{13e}@anchor{gnat_ugn/gnat_utility_programs running-gnatls}@anchor{13f}
  @subsection Running @code{gnatls}
  
  
*************** $ gnatls switches object_or_ali_file
*** 17766,17772 ****
  @end quotation
  
  The main argument is the list of object or @code{ali} files
! (see @ref{42,,The Ada Library Information Files})
  for which information is requested.
  
  In normal mode, without additional option, @code{gnatls} produces a
--- 17509,17515 ----
  @end quotation
  
  The main argument is the list of object or @code{ali} files
! (see @ref{28,,The Ada Library Information Files})
  for which information is requested.
  
  In normal mode, without additional option, @code{gnatls} produces a
*************** version of the same source that has been
*** 17832,17838 ****
  @end table
  
  @node Switches for gnatls,Example of gnatls Usage,Running gnatls,The GNAT Library Browser gnatls
! @anchor{gnat_ugn/gnat_utility_programs id7}@anchor{14d}@anchor{gnat_ugn/gnat_utility_programs switches-for-gnatls}@anchor{14e}
  @subsection Switches for @code{gnatls}
  
  
--- 17575,17581 ----
  @end table
  
  @node Switches for gnatls,Example of gnatls Usage,Running gnatls,The GNAT Library Browser gnatls
! @anchor{gnat_ugn/gnat_utility_programs id7}@anchor{140}@anchor{gnat_ugn/gnat_utility_programs switches-for-gnatls}@anchor{141}
  @subsection Switches for @code{gnatls}
  
  
*************** Several such switches may be specified s
*** 17947,17953 ****
  @item @code{-aO@emph{dir}}, @code{-aI@emph{dir}}, @code{-I@emph{dir}}, @code{-I-}, @code{-nostdinc}
  
  Source path manipulation. Same meaning as the equivalent @code{gnatmake}
! flags (@ref{dc,,Switches for gnatmake}).
  @end table
  
  @geindex -aP (gnatls)
--- 17690,17696 ----
  @item @code{-aO@emph{dir}}, @code{-aI@emph{dir}}, @code{-I@emph{dir}}, @code{-I-}, @code{-nostdinc}
  
  Source path manipulation. Same meaning as the equivalent @code{gnatmake}
! flags (@ref{cd,,Switches for gnatmake}).
  @end table
  
  @geindex -aP (gnatls)
*************** Add @code{dir} at the beginning of the p
*** 17968,17974 ****
  @item @code{--RTS=@emph{rts-path}}
  
  Specifies the default location of the runtime library. Same meaning as the
! equivalent @code{gnatmake} flag (@ref{dc,,Switches for gnatmake}).
  @end table
  
  @geindex -v (gnatls)
--- 17711,17717 ----
  @item @code{--RTS=@emph{rts-path}}
  
  Specifies the default location of the runtime library. Same meaning as the
! equivalent @code{gnatmake} flag (@ref{cd,,Switches for gnatmake}).
  @end table
  
  @geindex -v (gnatls)
*************** by the user.
*** 18014,18020 ****
  @end table
  
  @node Example of gnatls Usage,,Switches for gnatls,The GNAT Library Browser gnatls
! @anchor{gnat_ugn/gnat_utility_programs id8}@anchor{14f}@anchor{gnat_ugn/gnat_utility_programs example-of-gnatls-usage}@anchor{150}
  @subsection Example of @code{gnatls} Usage
  
  
--- 17757,17763 ----
  @end table
  
  @node Example of gnatls Usage,,Switches for gnatls,The GNAT Library Browser gnatls
! @anchor{gnat_ugn/gnat_utility_programs id8}@anchor{142}@anchor{gnat_ugn/gnat_utility_programs example-of-gnatls-usage}@anchor{143}
  @subsection Example of @code{gnatls} Usage
  
  
*************** instr.ads
*** 18093,19232 ****
  @end example
  @end quotation
  
- @node The Cross-Referencing Tools gnatxref and gnatfind,The Ada to HTML Converter gnathtml,The GNAT Library Browser gnatls,GNAT Utility Programs
- @anchor{gnat_ugn/gnat_utility_programs the-cross-referencing-tools-gnatxref-and-gnatfind}@anchor{22}@anchor{gnat_ugn/gnat_utility_programs id9}@anchor{151}
- @section The Cross-Referencing Tools @code{gnatxref} and @code{gnatfind}
- 
- 
- @geindex gnatxref
- 
- @geindex gnatfind
- 
- The compiler generates cross-referencing information (unless
- you set the @code{-gnatx} switch), which are saved in the @code{.ali} files.
- This information indicates where in the source each entity is declared and
- referenced. Note that entities in package Standard are not included, but
- entities in all other predefined units are included in the output.
- 
- Before using any of these two tools, you need to compile successfully your
- application, so that GNAT gets a chance to generate the cross-referencing
- information.
- 
- The two tools @code{gnatxref} and @code{gnatfind} take advantage of this
- information to provide the user with the capability to easily locate the
- declaration and references to an entity. These tools are quite similar,
- the difference being that @code{gnatfind} is intended for locating
- definitions and/or references to a specified entity or entities, whereas
- @code{gnatxref} is oriented to generating a full report of all
- cross-references.
- 
- To use these tools, you must not compile your application using the
- @code{-gnatx} switch on the @code{gnatmake} command line
- (see @ref{1b,,Building with gnatmake}). Otherwise, cross-referencing
- information will not be generated.
- 
- @menu
- * gnatxref Switches:: 
- * gnatfind Switches:: 
- * Configuration Files for gnatxref and gnatfind:: 
- * Regular Expressions in gnatfind and gnatxref:: 
- * Examples of gnatxref Usage:: 
- * Examples of gnatfind Usage:: 
- 
- @end menu
- 
- @node gnatxref Switches,gnatfind Switches,,The Cross-Referencing Tools gnatxref and gnatfind
- @anchor{gnat_ugn/gnat_utility_programs id10}@anchor{152}@anchor{gnat_ugn/gnat_utility_programs gnatxref-switches}@anchor{153}
- @subsection @code{gnatxref} Switches
- 
- 
- The command invocation for @code{gnatxref} is:
- 
- @quotation
- 
- @example
- $ gnatxref [ switches ] sourcefile1 [ sourcefile2 ... ]
- @end example
- @end quotation
- 
- where
- 
- 
- @table @asis
- 
- @item @code{sourcefile1} [, @code{sourcefile2} ...]
- 
- identify the source files for which a report is to be generated. The
- @code{with}ed units will be processed too. You must provide at least one file.
- 
- These file names are considered to be regular expressions, so for instance
- specifying @code{source*.adb} is the same as giving every file in the current
- directory whose name starts with @code{source} and whose extension is
- @code{adb}.
- 
- You shouldn't specify any directory name, just base names. @code{gnatxref}
- and @code{gnatfind} will be able to locate these files by themselves using
- the source path. If you specify directories, no result is produced.
- @end table
- 
- The following switches are available for @code{gnatxref}:
- 
- @geindex --version (gnatxref)
- 
- 
- @table @asis
- 
- @item @code{--version}
- 
- Display copyright and version, then exit disregarding all other options.
- @end table
- 
- @geindex --help (gnatxref)
- 
- 
- @table @asis
- 
- @item @code{--help}
- 
- If @code{--version} was not used, display usage, then exit disregarding
- all other options.
- @end table
- 
- @geindex -a (gnatxref)
- 
- 
- @table @asis
- 
- @item @code{-a}
- 
- If this switch is present, @code{gnatfind} and @code{gnatxref} will parse
- the read-only files found in the library search path. Otherwise, these files
- will be ignored. This option can be used to protect Gnat sources or your own
- libraries from being parsed, thus making @code{gnatfind} and @code{gnatxref}
- much faster, and their output much smaller. Read-only here refers to access
- or permissions status in the file system for the current user.
- @end table
- 
- @geindex -aIDIR (gnatxref)
- 
- 
- @table @asis
- 
- @item @code{-aI@emph{DIR}}
- 
- When looking for source files also look in directory DIR. The order in which
- source file search is undertaken is the same as for @code{gnatmake}.
- @end table
- 
- @geindex -aODIR (gnatxref)
- 
- 
- @table @asis
- 
- @item @code{aO@emph{DIR}}
- 
- When -searching for library and object files, look in directory
- DIR. The order in which library files are searched is the same as for
- @code{gnatmake}.
- @end table
- 
- @geindex -nostdinc (gnatxref)
- 
- 
- @table @asis
- 
- @item @code{-nostdinc}
- 
- Do not look for sources in the system default directory.
- @end table
- 
- @geindex -nostdlib (gnatxref)
- 
- 
- @table @asis
- 
- @item @code{-nostdlib}
- 
- Do not look for library files in the system default directory.
- @end table
- 
- @geindex --ext (gnatxref)
- 
- 
- @table @asis
- 
- @item @code{--ext=@emph{extension}}
- 
- Specify an alternate ali file extension. The default is @code{ali} and other
- extensions (e.g. @code{gli} for C/C++ sources) may be specified via this switch.
- Note that if this switch overrides the default, only the new extension will
- be considered.
- @end table
- 
- @geindex --RTS (gnatxref)
- 
- 
- @table @asis
- 
- @item @code{--RTS=@emph{rts-path}}
- 
- Specifies the default location of the runtime library. Same meaning as the
- equivalent @code{gnatmake} flag (@ref{dc,,Switches for gnatmake}).
- @end table
- 
- @geindex -d (gnatxref)
- 
- 
- @table @asis
- 
- @item @code{-d}
- 
- If this switch is set @code{gnatxref} will output the parent type
- reference for each matching derived types.
- @end table
- 
- @geindex -f (gnatxref)
- 
- 
- @table @asis
- 
- @item @code{-f}
- 
- If this switch is set, the output file names will be preceded by their
- directory (if the file was found in the search path). If this switch is
- not set, the directory will not be printed.
- @end table
- 
- @geindex -g (gnatxref)
- 
- 
- @table @asis
- 
- @item @code{-g}
- 
- If this switch is set, information is output only for library-level
- entities, ignoring local entities. The use of this switch may accelerate
- @code{gnatfind} and @code{gnatxref}.
- @end table
- 
- @geindex -IDIR (gnatxref)
- 
- 
- @table @asis
- 
- @item @code{-I@emph{DIR}}
- 
- Equivalent to @code{-aODIR -aIDIR}.
- @end table
- 
- @geindex -pFILE (gnatxref)
- 
- 
- @table @asis
- 
- @item @code{-p@emph{FILE}}
- 
- Specify a configuration file to use to list the source and object directories.
- 
- If a file is specified, then the content of the source directory and object
- directory lines are added as if they had been specified respectively
- by @code{-aI} and @code{-aO}.
- 
- See @ref{154,,Configuration Files for gnatxref and gnatfind} for the syntax
- of this configuration file.
- 
- @item @code{-u}
- 
- Output only unused symbols. This may be really useful if you give your
- main compilation unit on the command line, as @code{gnatxref} will then
- display every unused entity and 'with'ed package.
- 
- @item @code{-v}
- 
- Instead of producing the default output, @code{gnatxref} will generate a
- @code{tags} file that can be used by vi. For examples how to use this
- feature, see @ref{155,,Examples of gnatxref Usage}. The tags file is output
- to the standard output, thus you will have to redirect it to a file.
- @end table
- 
- All these switches may be in any order on the command line, and may even
- appear after the file names. They need not be separated by spaces, thus
- you can say @code{gnatxref -ag} instead of @code{gnatxref -a -g}.
- 
- @node gnatfind Switches,Configuration Files for gnatxref and gnatfind,gnatxref Switches,The Cross-Referencing Tools gnatxref and gnatfind
- @anchor{gnat_ugn/gnat_utility_programs id11}@anchor{156}@anchor{gnat_ugn/gnat_utility_programs gnatfind-switches}@anchor{157}
- @subsection @code{gnatfind} Switches
- 
- 
- The command invocation for @code{gnatfind} is:
- 
- @quotation
- 
- @example
- $ gnatfind [ switches ]  pattern[:sourcefile[:line[:column]]]
-       [file1 file2 ...]
- @end example
- @end quotation
- 
- with the following iterpretation of the command arguments:
- 
- 
- @table @asis
- 
- @item @emph{pattern}
- 
- An entity will be output only if it matches the regular expression found
- in @emph{pattern}, see @ref{158,,Regular Expressions in gnatfind and gnatxref}.
- 
- Omitting the pattern is equivalent to specifying @code{*}, which
- will match any entity. Note that if you do not provide a pattern, you
- have to provide both a sourcefile and a line.
- 
- Entity names are given in Latin-1, with uppercase/lowercase equivalence
- for matching purposes. At the current time there is no support for
- 8-bit codes other than Latin-1, or for wide characters in identifiers.
- 
- @item @emph{sourcefile}
- 
- @code{gnatfind} will look for references, bodies or declarations
- of symbols referenced in @code{sourcefile}, at line @code{line}
- and column @code{column}. See @ref{159,,Examples of gnatfind Usage}
- for syntax examples.
- 
- @item @emph{line}
- 
- A decimal integer identifying the line number containing
- the reference to the entity (or entities) to be located.
- 
- @item @emph{column}
- 
- A decimal integer identifying the exact location on the
- line of the first character of the identifier for the
- entity reference. Columns are numbered from 1.
- 
- @item @emph{file1 file2 ...}
- 
- The search will be restricted to these source files. If none are given, then
- the search will be conducted for every library file in the search path.
- These files must appear only after the pattern or sourcefile.
- 
- These file names are considered to be regular expressions, so for instance
- specifying @code{source*.adb} is the same as giving every file in the current
- directory whose name starts with @code{source} and whose extension is
- @code{adb}.
- 
- The location of the spec of the entity will always be displayed, even if it
- isn't in one of @code{file1}, @code{file2}, ... The
- occurrences of the entity in the separate units of the ones given on the
- command line will also be displayed.
- 
- Note that if you specify at least one file in this part, @code{gnatfind} may
- sometimes not be able to find the body of the subprograms.
- @end table
- 
- At least one of 'sourcefile' or 'pattern' has to be present on
- the command line.
- 
- The following switches are available:
- 
- @geindex --version (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{--version}
- 
- Display copyright and version, then exit disregarding all other options.
- @end table
- 
- @geindex --help (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{--help}
- 
- If @code{--version} was not used, display usage, then exit disregarding
- all other options.
- @end table
- 
- @geindex -a (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{-a}
- 
- If this switch is present, @code{gnatfind} and @code{gnatxref} will parse
- the read-only files found in the library search path. Otherwise, these files
- will be ignored. This option can be used to protect Gnat sources or your own
- libraries from being parsed, thus making @code{gnatfind} and @code{gnatxref}
- much faster, and their output much smaller. Read-only here refers to access
- or permission status in the file system for the current user.
- @end table
- 
- @geindex -aIDIR (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{-aI@emph{DIR}}
- 
- When looking for source files also look in directory DIR. The order in which
- source file search is undertaken is the same as for @code{gnatmake}.
- @end table
- 
- @geindex -aODIR (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{-aO@emph{DIR}}
- 
- When searching for library and object files, look in directory
- DIR. The order in which library files are searched is the same as for
- @code{gnatmake}.
- @end table
- 
- @geindex -nostdinc (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{-nostdinc}
- 
- Do not look for sources in the system default directory.
- @end table
- 
- @geindex -nostdlib (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{-nostdlib}
- 
- Do not look for library files in the system default directory.
- @end table
- 
- @geindex --ext (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{--ext=@emph{extension}}
- 
- Specify an alternate ali file extension. The default is @code{ali} and other
- extensions may be specified via this switch. Note that if this switch
- overrides the default, only the new extension will be considered.
- @end table
- 
- @geindex --RTS (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{--RTS=@emph{rts-path}}
- 
- Specifies the default location of the runtime library. Same meaning as the
- equivalent @code{gnatmake} flag (@ref{dc,,Switches for gnatmake}).
- @end table
- 
- @geindex -d (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{-d}
- 
- If this switch is set, then @code{gnatfind} will output the parent type
- reference for each matching derived types.
- @end table
- 
- @geindex -e (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{-e}
- 
- By default, @code{gnatfind} accept the simple regular expression set for
- @code{pattern}. If this switch is set, then the pattern will be
- considered as full Unix-style regular expression.
- @end table
- 
- @geindex -f (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{-f}
- 
- If this switch is set, the output file names will be preceded by their
- directory (if the file was found in the search path). If this switch is
- not set, the directory will not be printed.
- @end table
- 
- @geindex -g (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{-g}
- 
- If this switch is set, information is output only for library-level
- entities, ignoring local entities. The use of this switch may accelerate
- @code{gnatfind} and @code{gnatxref}.
- @end table
- 
- @geindex -IDIR (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{-I@emph{DIR}}
- 
- Equivalent to @code{-aODIR -aIDIR}.
- @end table
- 
- @geindex -pFILE (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{-p@emph{FILE}}
- 
- Specify a configuration file to use to list the source and object directories.
- 
- If a file is specified, then the content of the source directory and object
- directory lines are added as if they had been specified respectively
- by @code{-aI} and @code{-aO}.
- 
- See @ref{154,,Configuration Files for gnatxref and gnatfind} for the syntax
- of this configuration file.
- @end table
- 
- @geindex -r (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{-r}
- 
- By default, @code{gnatfind} will output only the information about the
- declaration, body or type completion of the entities. If this switch is
- set, the @code{gnatfind} will locate every reference to the entities in
- the files specified on the command line (or in every file in the search
- path if no file is given on the command line).
- @end table
- 
- @geindex -s (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{-s}
- 
- If this switch is set, then @code{gnatfind} will output the content
- of the Ada source file lines were the entity was found.
- @end table
- 
- @geindex -t (gnatfind)
- 
- 
- @table @asis
- 
- @item @code{-t}
- 
- If this switch is set, then @code{gnatfind} will output the type hierarchy for
- the specified type. It act like -d option but recursively from parent
- type to parent type. When this switch is set it is not possible to
- specify more than one file.
- @end table
- 
- All these switches may be in any order on the command line, and may even
- appear after the file names. They need not be separated by spaces, thus
- you can say @code{gnatxref -ag} instead of
- @code{gnatxref -a -g}.
- 
- As stated previously, @code{gnatfind} will search in every directory in the
- search path. You can force it to look only in the current directory if
- you specify @code{*} at the end of the command line.
- 
- @node Configuration Files for gnatxref and gnatfind,Regular Expressions in gnatfind and gnatxref,gnatfind Switches,The Cross-Referencing Tools gnatxref and gnatfind
- @anchor{gnat_ugn/gnat_utility_programs configuration-files-for-gnatxref-and-gnatfind}@anchor{154}@anchor{gnat_ugn/gnat_utility_programs id12}@anchor{15a}
- @subsection Configuration Files for @code{gnatxref} and @code{gnatfind}
- 
- 
- Configuration files are used by @code{gnatxref} and @code{gnatfind} to specify
- the list of source and object directories to consider. They can be
- specified via the @code{-p} switch.
- 
- The following lines can be included, in any order in the file:
- 
- 
- @itemize *
- 
- @item 
- 
- @table @asis
- 
- @item @emph{src_dir=DIR}
- 
- [default: @code{"./"}].
- Specifies a directory where to look for source files. Multiple @code{src_dir}
- lines can be specified and they will be searched in the order they
- are specified.
- @end table
- 
- @item 
- 
- @table @asis
- 
- @item @emph{obj_dir=DIR}
- 
- [default: @code{"./"}].
- Specifies a directory where to look for object and library files. Multiple
- @code{obj_dir} lines can be specified, and they will be searched in the order
- they are specified
- @end table
- @end itemize
- 
- Any other line will be silently ignored.
- 
- @node Regular Expressions in gnatfind and gnatxref,Examples of gnatxref Usage,Configuration Files for gnatxref and gnatfind,The Cross-Referencing Tools gnatxref and gnatfind
- @anchor{gnat_ugn/gnat_utility_programs id13}@anchor{15b}@anchor{gnat_ugn/gnat_utility_programs regular-expressions-in-gnatfind-and-gnatxref}@anchor{158}
- @subsection Regular Expressions in @code{gnatfind} and @code{gnatxref}
- 
- 
- As specified in the section about @code{gnatfind}, the pattern can be a
- regular expression. Two kinds of regular expressions
- are recognized:
- 
- 
- @itemize *
- 
- @item 
- 
- @table @asis
- 
- @item @emph{Globbing pattern}
- 
- These are the most common regular expression. They are the same as are
- generally used in a Unix shell command line, or in a DOS session.
- 
- Here is a more formal grammar:
- 
- @example
- regexp ::= term
- term   ::= elmt            -- matches elmt
- term   ::= elmt elmt       -- concatenation (elmt then elmt)
- term   ::= *               -- any string of 0 or more characters
- term   ::= ?               -- matches any character
- term   ::= [char @{char@}]   -- matches any character listed
- term   ::= [char - char]   -- matches any character in range
- @end example
- @end table
- 
- @item 
- 
- @table @asis
- 
- @item @emph{Full regular expression}
- 
- The second set of regular expressions is much more powerful. This is the
- type of regular expressions recognized by utilities such as @code{grep}.
- 
- The following is the form of a regular expression, expressed in same BNF
- style as is found in the Ada Reference Manual:
- 
- @example
- regexp ::= term @{| term@}   -- alternation (term or term ...)
- 
- term ::= item @{item@}       -- concatenation (item then item)
- 
- item ::= elmt              -- match elmt
- item ::= elmt *            -- zero or more elmt's
- item ::= elmt +            -- one or more elmt's
- item ::= elmt ?            -- matches elmt or nothing
- 
- elmt ::= nschar            -- matches given character
- elmt ::= [nschar @{nschar@}]   -- matches any character listed
- elmt ::= [^ nschar @{nschar@}] -- matches any character not listed
- elmt ::= [char - char]     -- matches chars in given range
- elmt ::= \\ char            -- matches given character
- elmt ::= .                 -- matches any single character
- elmt ::= ( regexp )        -- parens used for grouping
- 
- char ::= any character, including special characters
- nschar ::= any character except ()[].*+?^
- @end example
- 
- Here are a few examples:
- 
- @quotation
- 
- 
- @table @asis
- 
- @item @code{abcde|fghi}
- 
- will match any of the two strings @code{abcde} and @code{fghi},
- 
- @item @code{abc*d}
- 
- will match any string like @code{abd}, @code{abcd}, @code{abccd},
- @code{abcccd}, and so on,
- 
- @item @code{[a-z]+}
- 
- will match any string which has only lowercase characters in it (and at
- least one character.
- @end table
- @end quotation
- @end table
- @end itemize
- 
- @node Examples of gnatxref Usage,Examples of gnatfind Usage,Regular Expressions in gnatfind and gnatxref,The Cross-Referencing Tools gnatxref and gnatfind
- @anchor{gnat_ugn/gnat_utility_programs examples-of-gnatxref-usage}@anchor{155}@anchor{gnat_ugn/gnat_utility_programs id14}@anchor{15c}
- @subsection Examples of @code{gnatxref} Usage
- 
- 
- @menu
- * General Usage:: 
- * Using gnatxref with vi:: 
- 
- @end menu
- 
- @node General Usage,Using gnatxref with vi,,Examples of gnatxref Usage
- @anchor{gnat_ugn/gnat_utility_programs general-usage}@anchor{15d}
- @subsubsection General Usage
- 
- 
- For the following examples, we will consider the following units:
- 
- @quotation
- 
- @example
- main.ads:
- 1: with Bar;
- 2: package Main is
- 3:     procedure Foo (B : in Integer);
- 4:     C : Integer;
- 5: private
- 6:     D : Integer;
- 7: end Main;
- 
- main.adb:
- 1: package body Main is
- 2:     procedure Foo (B : in Integer) is
- 3:     begin
- 4:        C := B;
- 5:        D := B;
- 6:        Bar.Print (B);
- 7:        Bar.Print (C);
- 8:     end Foo;
- 9: end Main;
- 
- bar.ads:
- 1: package Bar is
- 2:     procedure Print (B : Integer);
- 3: end bar;
- @end example
- @end quotation
- 
- The first thing to do is to recompile your application (for instance, in
- that case just by doing a @code{gnatmake main}, so that GNAT generates
- the cross-referencing information.
- You can then issue any of the following commands:
- 
- @quotation
- 
- 
- @itemize *
- 
- @item 
- @code{gnatxref main.adb}
- @code{gnatxref} generates cross-reference information for main.adb
- and every unit 'with'ed by main.adb.
- 
- The output would be:
- 
- @quotation
- 
- @example
- B                                                      Type: Integer
-   Decl: bar.ads           2:22
- B                                                      Type: Integer
-   Decl: main.ads          3:20
-   Body: main.adb          2:20
-   Ref:  main.adb          4:13     5:13     6:19
- Bar                                                    Type: Unit
-   Decl: bar.ads           1:9
-   Ref:  main.adb          6:8      7:8
-        main.ads           1:6
- C                                                      Type: Integer
-   Decl: main.ads          4:5
-   Modi: main.adb          4:8
-   Ref:  main.adb          7:19
- D                                                      Type: Integer
-   Decl: main.ads          6:5
-   Modi: main.adb          5:8
- Foo                                                    Type: Unit
-   Decl: main.ads          3:15
-   Body: main.adb          2:15
- Main                                                    Type: Unit
-   Decl: main.ads          2:9
-   Body: main.adb          1:14
- Print                                                   Type: Unit
-   Decl: bar.ads           2:15
-   Ref:  main.adb          6:12     7:12
- @end example
- @end quotation
- 
- This shows that the entity @code{Main} is declared in main.ads, line 2, column 9,
- its body is in main.adb, line 1, column 14 and is not referenced any where.
- 
- The entity @code{Print} is declared in @code{bar.ads}, line 2, column 15 and it
- is referenced in @code{main.adb}, line 6 column 12 and line 7 column 12.
- 
- @item 
- @code{gnatxref package1.adb package2.ads}
- @code{gnatxref} will generates cross-reference information for
- @code{package1.adb}, @code{package2.ads} and any other package @code{with}ed by any
- of these.
- @end itemize
- @end quotation
- 
- @node Using gnatxref with vi,,General Usage,Examples of gnatxref Usage
- @anchor{gnat_ugn/gnat_utility_programs using-gnatxref-with-vi}@anchor{15e}
- @subsubsection Using @code{gnatxref} with @code{vi}
- 
- 
- @code{gnatxref} can generate a tags file output, which can be used
- directly from @code{vi}. Note that the standard version of @code{vi}
- will not work properly with overloaded symbols. Consider using another
- free implementation of @code{vi}, such as @code{vim}.
- 
- @quotation
- 
- @example
- $ gnatxref -v gnatfind.adb > tags
- @end example
- @end quotation
- 
- The following command will generate the tags file for @code{gnatfind} itself
- (if the sources are in the search path!):
- 
- @quotation
- 
- @example
- $ gnatxref -v gnatfind.adb > tags
- @end example
- @end quotation
- 
- From @code{vi}, you can then use the command @code{:tag @emph{entity}}
- (replacing @code{entity} by whatever you are looking for), and vi will
- display a new file with the corresponding declaration of entity.
- 
- @node Examples of gnatfind Usage,,Examples of gnatxref Usage,The Cross-Referencing Tools gnatxref and gnatfind
- @anchor{gnat_ugn/gnat_utility_programs id15}@anchor{15f}@anchor{gnat_ugn/gnat_utility_programs examples-of-gnatfind-usage}@anchor{159}
- @subsection Examples of @code{gnatfind} Usage
- 
- 
- 
- @itemize *
- 
- @item 
- @code{gnatfind -f xyz:main.adb}
- Find declarations for all entities xyz referenced at least once in
- main.adb. The references are search in every library file in the search
- path.
- 
- The directories will be printed as well (as the @code{-f}
- switch is set)
- 
- The output will look like:
- 
- @quotation
- 
- @example
- directory/main.ads:106:14: xyz <= declaration
- directory/main.adb:24:10: xyz <= body
- directory/foo.ads:45:23: xyz <= declaration
- @end example
- @end quotation
- 
- I.e., one of the entities xyz found in main.adb is declared at
- line 12 of main.ads (and its body is in main.adb), and another one is
- declared at line 45 of foo.ads
- 
- @item 
- @code{gnatfind -fs xyz:main.adb}
- This is the same command as the previous one, but @code{gnatfind} will
- display the content of the Ada source file lines.
- 
- The output will look like:
- 
- @example
- directory/main.ads:106:14: xyz <= declaration
-    procedure xyz;
- directory/main.adb:24:10: xyz <= body
-    procedure xyz is
- directory/foo.ads:45:23: xyz <= declaration
-    xyz : Integer;
- @end example
- 
- This can make it easier to find exactly the location your are looking
- for.
- 
- @item 
- @code{gnatfind -r "*x*":main.ads:123 foo.adb}
- Find references to all entities containing an x that are
- referenced on line 123 of main.ads.
- The references will be searched only in main.ads and foo.adb.
- 
- @item 
- @code{gnatfind main.ads:123}
- Find declarations and bodies for all entities that are referenced on
- line 123 of main.ads.
- 
- This is the same as @code{gnatfind "*":main.adb:123`}
- 
- @item 
- @code{gnatfind mydir/main.adb:123:45}
- Find the declaration for the entity referenced at column 45 in
- line 123 of file main.adb in directory mydir. Note that it
- is usual to omit the identifier name when the column is given,
- since the column position identifies a unique reference.
- 
- The column has to be the beginning of the identifier, and should not
- point to any character in the middle of the identifier.
- @end itemize
- 
- @node The Ada to HTML Converter gnathtml,,The Cross-Referencing Tools gnatxref and gnatfind,GNAT Utility Programs
- @anchor{gnat_ugn/gnat_utility_programs the-ada-to-html-converter-gnathtml}@anchor{23}@anchor{gnat_ugn/gnat_utility_programs id16}@anchor{160}
- @section The Ada to HTML Converter @code{gnathtml}
- 
- 
- @geindex gnathtml
- 
- @code{gnathtml} is a Perl script that allows Ada source files to be browsed using
- standard Web browsers. For installation information, see @ref{161,,Installing gnathtml}.
- 
- Ada reserved keywords are highlighted in a bold font and Ada comments in
- a blue font. Unless your program was compiled with the gcc @code{-gnatx}
- switch to suppress the generation of cross-referencing information, user
- defined variables and types will appear in a different color; you will
- be able to click on any identifier and go to its declaration.
- 
- @menu
- * Invoking gnathtml:: 
- * Installing gnathtml:: 
- 
- @end menu
- 
- @node Invoking gnathtml,Installing gnathtml,,The Ada to HTML Converter gnathtml
- @anchor{gnat_ugn/gnat_utility_programs invoking-gnathtml}@anchor{162}@anchor{gnat_ugn/gnat_utility_programs id17}@anchor{163}
- @subsection Invoking @code{gnathtml}
- 
- 
- The command line is as follows:
- 
- @quotation
- 
- @example
- $ perl gnathtml.pl [ switches ] ada-files
- @end example
- @end quotation
- 
- You can specify as many Ada files as you want. @code{gnathtml} will generate
- an html file for every ada file, and a global file called @code{index.htm}.
- This file is an index of every identifier defined in the files.
- 
- The following switches are available:
- 
- @geindex -83 (gnathtml)
- 
- 
- @table @asis
- 
- @item @code{83}
- 
- Only the Ada 83 subset of keywords will be highlighted.
- @end table
- 
- @geindex -cc (gnathtml)
- 
- 
- @table @asis
- 
- @item @code{cc @emph{color}}
- 
- This option allows you to change the color used for comments. The default
- value is green. The color argument can be any name accepted by html.
- @end table
- 
- @geindex -d (gnathtml)
- 
- 
- @table @asis
- 
- @item @code{d}
- 
- If the Ada files depend on some other files (for instance through
- @code{with} clauses, the latter files will also be converted to html.
- Only the files in the user project will be converted to html, not the files
- in the run-time library itself.
- @end table
- 
- @geindex -D (gnathtml)
- 
- 
- @table @asis
- 
- @item @code{D}
- 
- This command is the same as @code{-d} above, but @code{gnathtml} will
- also look for files in the run-time library, and generate html files for them.
- @end table
- 
- @geindex -ext (gnathtml)
- 
- 
- @table @asis
- 
- @item @code{ext @emph{extension}}
- 
- This option allows you to change the extension of the generated HTML files.
- If you do not specify an extension, it will default to @code{htm}.
- @end table
- 
- @geindex -f (gnathtml)
- 
- 
- @table @asis
- 
- @item @code{f}
- 
- By default, gnathtml will generate html links only for global entities
- ('with'ed units, global variables and types,...). If you specify
- @code{-f} on the command line, then links will be generated for local
- entities too.
- @end table
- 
- @geindex -l (gnathtml)
- 
- 
- @table @asis
- 
- @item @code{l @emph{number}}
- 
- If this switch is provided and @code{number} is not 0, then
- @code{gnathtml} will number the html files every @code{number} line.
- @end table
- 
- @geindex -I (gnathtml)
- 
- 
- @table @asis
- 
- @item @code{I @emph{dir}}
- 
- Specify a directory to search for library files (@code{.ALI} files) and
- source files. You can provide several -I switches on the command line,
- and the directories will be parsed in the order of the command line.
- @end table
- 
- @geindex -o (gnathtml)
- 
- 
- @table @asis
- 
- @item @code{o @emph{dir}}
- 
- Specify the output directory for html files. By default, gnathtml will
- saved the generated html files in a subdirectory named @code{html/}.
- @end table
- 
- @geindex -p (gnathtml)
- 
- 
- @table @asis
- 
- @item @code{p @emph{file}}
- 
- If you are using Emacs and the most recent Emacs Ada mode, which provides
- a full Integrated Development Environment for compiling, checking,
- running and debugging applications, you may use @code{.gpr} files
- to give the directories where Emacs can find sources and object files.
- 
- Using this switch, you can tell gnathtml to use these files.
- This allows you to get an html version of your application, even if it
- is spread over multiple directories.
- @end table
- 
- @geindex -sc (gnathtml)
- 
- 
- @table @asis
- 
- @item @code{sc @emph{color}}
- 
- This switch allows you to change the color used for symbol
- definitions.
- The default value is red. The color argument can be any name accepted by html.
- @end table
- 
- @geindex -t (gnathtml)
- 
- 
- @table @asis
- 
- @item @code{t @emph{file}}
- 
- This switch provides the name of a file. This file contains a list of
- file names to be converted, and the effect is exactly as though they had
- appeared explicitly on the command line. This
- is the recommended way to work around the command line length limit on some
- systems.
- @end table
- 
- @node Installing gnathtml,,Invoking gnathtml,The Ada to HTML Converter gnathtml
- @anchor{gnat_ugn/gnat_utility_programs installing-gnathtml}@anchor{161}@anchor{gnat_ugn/gnat_utility_programs id18}@anchor{164}
- @subsection Installing @code{gnathtml}
- 
- 
- @code{Perl} needs to be installed on your machine to run this script.
- @code{Perl} is freely available for almost every architecture and
- operating system via the Internet.
- 
- On Unix systems, you  may want to modify  the  first line of  the script
- @code{gnathtml},  to explicitly  specify  where Perl
- is located. The syntax of this line is:
- 
- @quotation
- 
- @example
- #!full_path_name_to_perl
- @end example
- @end quotation
- 
- Alternatively, you may run the script using the following command line:
- 
- @quotation
- 
- @example
- $ perl gnathtml.pl [ switches ] files
- @end example
- @end quotation
- 
- @c -- +---------------------------------------------------------------------+
- 
- @c -- | The following sections are present only in the PRO and GPL editions |
- 
- @c -- +---------------------------------------------------------------------+
- 
- 
  
  
  
--- 17836,17841 ----
*************** $ perl gnathtml.pl [ switches ] files
*** 19237,19243 ****
  @c -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit
  
  @node GNAT and Program Execution,Platform-Specific Information,GNAT Utility Programs,Top
! @anchor{gnat_ugn/gnat_and_program_execution gnat-and-program-execution}@anchor{c}@anchor{gnat_ugn/gnat_and_program_execution doc}@anchor{165}@anchor{gnat_ugn/gnat_and_program_execution id1}@anchor{166}
  @chapter GNAT and Program Execution
  
  
--- 17846,17852 ----
  @c -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit
  
  @node GNAT and Program Execution,Platform-Specific Information,GNAT Utility Programs,Top
! @anchor{gnat_ugn/gnat_and_program_execution gnat-and-program-execution}@anchor{c}@anchor{gnat_ugn/gnat_and_program_execution doc}@anchor{144}@anchor{gnat_ugn/gnat_and_program_execution id1}@anchor{145}
  @chapter GNAT and Program Execution
  
  
*************** This chapter covers several topics:
*** 19247,19271 ****
  @itemize *
  
  @item 
! @ref{167,,Running and Debugging Ada Programs}
  
  @item 
! @ref{25,,Profiling}
  
  @item 
! @ref{168,,Improving Performance}
  
  @item 
! @ref{169,,Overflow Check Handling in GNAT}
  
  @item 
! @ref{16a,,Performing Dimensionality Analysis in GNAT}
  
  @item 
! @ref{16b,,Stack Related Facilities}
  
  @item 
! @ref{16c,,Memory Management Issues}
  @end itemize
  
  @menu
--- 17856,17880 ----
  @itemize *
  
  @item 
! @ref{146,,Running and Debugging Ada Programs}
  
  @item 
! @ref{147,,Profiling}
  
  @item 
! @ref{148,,Improving Performance}
  
  @item 
! @ref{149,,Overflow Check Handling in GNAT}
  
  @item 
! @ref{14a,,Performing Dimensionality Analysis in GNAT}
  
  @item 
! @ref{14b,,Stack Related Facilities}
  
  @item 
! @ref{14c,,Memory Management Issues}
  @end itemize
  
  @menu
*************** This chapter covers several topics:
*** 19280,19286 ****
  @end menu
  
  @node Running and Debugging Ada Programs,Profiling,,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id2}@anchor{167}@anchor{gnat_ugn/gnat_and_program_execution running-and-debugging-ada-programs}@anchor{24}
  @section Running and Debugging Ada Programs
  
  
--- 17889,17895 ----
  @end menu
  
  @node Running and Debugging Ada Programs,Profiling,,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id2}@anchor{146}@anchor{gnat_ugn/gnat_and_program_execution running-and-debugging-ada-programs}@anchor{14d}
  @section Running and Debugging Ada Programs
  
  
*************** the incorrect user program.
*** 19334,19340 ****
  @end menu
  
  @node The GNAT Debugger GDB,Running GDB,,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution the-gnat-debugger-gdb}@anchor{16d}@anchor{gnat_ugn/gnat_and_program_execution id3}@anchor{16e}
  @subsection The GNAT Debugger GDB
  
  
--- 17943,17949 ----
  @end menu
  
  @node The GNAT Debugger GDB,Running GDB,,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution the-gnat-debugger-gdb}@anchor{14e}@anchor{gnat_ugn/gnat_and_program_execution id3}@anchor{14f}
  @subsection The GNAT Debugger GDB
  
  
*************** the debugging information and can respon
*** 19391,19397 ****
  variables, and more generally to report on the state of execution.
  
  @node Running GDB,Introduction to GDB Commands,The GNAT Debugger GDB,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id4}@anchor{16f}@anchor{gnat_ugn/gnat_and_program_execution running-gdb}@anchor{170}
  @subsection Running GDB
  
  
--- 18000,18006 ----
  variables, and more generally to report on the state of execution.
  
  @node Running GDB,Introduction to GDB Commands,The GNAT Debugger GDB,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id4}@anchor{150}@anchor{gnat_ugn/gnat_and_program_execution running-gdb}@anchor{151}
  @subsection Running GDB
  
  
*************** exactly as if the debugger were not pres
*** 19418,19424 ****
  describes some of the additional commands that can be given to @code{GDB}.
  
  @node Introduction to GDB Commands,Using Ada Expressions,Running GDB,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution introduction-to-gdb-commands}@anchor{171}@anchor{gnat_ugn/gnat_and_program_execution id5}@anchor{172}
  @subsection Introduction to GDB Commands
  
  
--- 18027,18033 ----
  describes some of the additional commands that can be given to @code{GDB}.
  
  @node Introduction to GDB Commands,Using Ada Expressions,Running GDB,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution introduction-to-gdb-commands}@anchor{152}@anchor{gnat_ugn/gnat_and_program_execution id5}@anchor{153}
  @subsection Introduction to GDB Commands
  
  
*************** Note that most commands can be abbreviat
*** 19626,19632 ****
  (for example, c for continue, bt for backtrace).
  
  @node Using Ada Expressions,Calling User-Defined Subprograms,Introduction to GDB Commands,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id6}@anchor{173}@anchor{gnat_ugn/gnat_and_program_execution using-ada-expressions}@anchor{174}
  @subsection Using Ada Expressions
  
  
--- 18235,18241 ----
  (for example, c for continue, bt for backtrace).
  
  @node Using Ada Expressions,Calling User-Defined Subprograms,Introduction to GDB Commands,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id6}@anchor{154}@anchor{gnat_ugn/gnat_and_program_execution using-ada-expressions}@anchor{155}
  @subsection Using Ada Expressions
  
  
*************** their packages, regardless of context. W
*** 19664,19670 ****
  For details on the supported Ada syntax, see @cite{Debugging with GDB}.
  
  @node Calling User-Defined Subprograms,Using the next Command in a Function,Using Ada Expressions,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id7}@anchor{175}@anchor{gnat_ugn/gnat_and_program_execution calling-user-defined-subprograms}@anchor{176}
  @subsection Calling User-Defined Subprograms
  
  
--- 18273,18279 ----
  For details on the supported Ada syntax, see @cite{Debugging with GDB}.
  
  @node Calling User-Defined Subprograms,Using the next Command in a Function,Using Ada Expressions,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id7}@anchor{156}@anchor{gnat_ugn/gnat_and_program_execution calling-user-defined-subprograms}@anchor{157}
  @subsection Calling User-Defined Subprograms
  
  
*************** elements directly from GDB, you can writ
*** 19723,19729 ****
  the elements in the desired format.
  
  @node Using the next Command in a Function,Stopping When Ada Exceptions Are Raised,Calling User-Defined Subprograms,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution using-the-next-command-in-a-function}@anchor{177}@anchor{gnat_ugn/gnat_and_program_execution id8}@anchor{178}
  @subsection Using the @emph{next} Command in a Function
  
  
--- 18332,18338 ----
  the elements in the desired format.
  
  @node Using the next Command in a Function,Stopping When Ada Exceptions Are Raised,Calling User-Defined Subprograms,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution using-the-next-command-in-a-function}@anchor{158}@anchor{gnat_ugn/gnat_and_program_execution id8}@anchor{159}
  @subsection Using the @emph{next} Command in a Function
  
  
*************** The value returned is always that from t
*** 19746,19752 ****
  that was stepped through.
  
  @node Stopping When Ada Exceptions Are Raised,Ada Tasks,Using the next Command in a Function,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution stopping-when-ada-exceptions-are-raised}@anchor{179}@anchor{gnat_ugn/gnat_and_program_execution id9}@anchor{17a}
  @subsection Stopping When Ada Exceptions Are Raised
  
  
--- 18355,18361 ----
  that was stepped through.
  
  @node Stopping When Ada Exceptions Are Raised,Ada Tasks,Using the next Command in a Function,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution stopping-when-ada-exceptions-are-raised}@anchor{15a}@anchor{gnat_ugn/gnat_and_program_execution id9}@anchor{15b}
  @subsection Stopping When Ada Exceptions Are Raised
  
  
*************** argument, prints out only those exceptio
*** 19803,19809 ****
  @geindex Tasks (in gdb)
  
  @node Ada Tasks,Debugging Generic Units,Stopping When Ada Exceptions Are Raised,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution ada-tasks}@anchor{17b}@anchor{gnat_ugn/gnat_and_program_execution id10}@anchor{17c}
  @subsection Ada Tasks
  
  
--- 18412,18418 ----
  @geindex Tasks (in gdb)
  
  @node Ada Tasks,Debugging Generic Units,Stopping When Ada Exceptions Are Raised,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution ada-tasks}@anchor{15c}@anchor{gnat_ugn/gnat_and_program_execution id10}@anchor{15d}
  @subsection Ada Tasks
  
  
*************** see @cite{Debugging with GDB}.
*** 19890,19896 ****
  @geindex Generics
  
  @node Debugging Generic Units,Remote Debugging with gdbserver,Ada Tasks,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution debugging-generic-units}@anchor{17d}@anchor{gnat_ugn/gnat_and_program_execution id11}@anchor{17e}
  @subsection Debugging Generic Units
  
  
--- 18499,18505 ----
  @geindex Generics
  
  @node Debugging Generic Units,Remote Debugging with gdbserver,Ada Tasks,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution debugging-generic-units}@anchor{15e}@anchor{gnat_ugn/gnat_and_program_execution id11}@anchor{15f}
  @subsection Debugging Generic Units
  
  
*************** other units.
*** 19949,19955 ****
  @geindex Remote Debugging with gdbserver
  
  @node Remote Debugging with gdbserver,GNAT Abnormal Termination or Failure to Terminate,Debugging Generic Units,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution remote-debugging-with-gdbserver}@anchor{17f}@anchor{gnat_ugn/gnat_and_program_execution id12}@anchor{180}
  @subsection Remote Debugging with gdbserver
  
  
--- 18558,18564 ----
  @geindex Remote Debugging with gdbserver
  
  @node Remote Debugging with gdbserver,GNAT Abnormal Termination or Failure to Terminate,Debugging Generic Units,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution remote-debugging-with-gdbserver}@anchor{160}@anchor{gnat_ugn/gnat_and_program_execution id12}@anchor{161}
  @subsection Remote Debugging with gdbserver
  
  
*************** GNAT provides support for gdbserver on x
*** 20007,20013 ****
  @geindex Abnormal Termination or Failure to Terminate
  
  @node GNAT Abnormal Termination or Failure to Terminate,Naming Conventions for GNAT Source Files,Remote Debugging with gdbserver,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution gnat-abnormal-termination-or-failure-to-terminate}@anchor{181}@anchor{gnat_ugn/gnat_and_program_execution id13}@anchor{182}
  @subsection GNAT Abnormal Termination or Failure to Terminate
  
  
--- 18616,18622 ----
  @geindex Abnormal Termination or Failure to Terminate
  
  @node GNAT Abnormal Termination or Failure to Terminate,Naming Conventions for GNAT Source Files,Remote Debugging with gdbserver,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution gnat-abnormal-termination-or-failure-to-terminate}@anchor{162}@anchor{gnat_ugn/gnat_and_program_execution id13}@anchor{163}
  @subsection GNAT Abnormal Termination or Failure to Terminate
  
  
*************** Finally, you can start
*** 20062,20068 ****
  @code{gdb} directly on the @code{gnat1} executable. @code{gnat1} is the
  front-end of GNAT, and can be run independently (normally it is just
  called from @code{gcc}). You can use @code{gdb} on @code{gnat1} as you
! would on a C program (but @ref{16d,,The GNAT Debugger GDB} for caveats). The
  @code{where} command is the first line of attack; the variable
  @code{lineno} (seen by @code{print lineno}), used by the second phase of
  @code{gnat1} and by the @code{gcc} backend, indicates the source line at
--- 18671,18677 ----
  @code{gdb} directly on the @code{gnat1} executable. @code{gnat1} is the
  front-end of GNAT, and can be run independently (normally it is just
  called from @code{gcc}). You can use @code{gdb} on @code{gnat1} as you
! would on a C program (but @ref{14e,,The GNAT Debugger GDB} for caveats). The
  @code{where} command is the first line of attack; the variable
  @code{lineno} (seen by @code{print lineno}), used by the second phase of
  @code{gnat1} and by the @code{gcc} backend, indicates the source line at
*************** the source file.
*** 20071,20077 ****
  @end itemize
  
  @node Naming Conventions for GNAT Source Files,Getting Internal Debugging Information,GNAT Abnormal Termination or Failure to Terminate,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution naming-conventions-for-gnat-source-files}@anchor{183}@anchor{gnat_ugn/gnat_and_program_execution id14}@anchor{184}
  @subsection Naming Conventions for GNAT Source Files
  
  
--- 18680,18686 ----
  @end itemize
  
  @node Naming Conventions for GNAT Source Files,Getting Internal Debugging Information,GNAT Abnormal Termination or Failure to Terminate,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution naming-conventions-for-gnat-source-files}@anchor{164}@anchor{gnat_ugn/gnat_and_program_execution id14}@anchor{165}
  @subsection Naming Conventions for GNAT Source Files
  
  
*************** the other @code{.c} files are modificati
*** 20152,20158 ****
  @end itemize
  
  @node Getting Internal Debugging Information,Stack Traceback,Naming Conventions for GNAT Source Files,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id15}@anchor{185}@anchor{gnat_ugn/gnat_and_program_execution getting-internal-debugging-information}@anchor{186}
  @subsection Getting Internal Debugging Information
  
  
--- 18761,18767 ----
  @end itemize
  
  @node Getting Internal Debugging Information,Stack Traceback,Naming Conventions for GNAT Source Files,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id15}@anchor{166}@anchor{gnat_ugn/gnat_and_program_execution getting-internal-debugging-information}@anchor{167}
  @subsection Getting Internal Debugging Information
  
  
*************** are replaced with run-time calls.
*** 20180,20186 ****
  @geindex stack unwinding
  
  @node Stack Traceback,Pretty-Printers for the GNAT runtime,Getting Internal Debugging Information,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution stack-traceback}@anchor{187}@anchor{gnat_ugn/gnat_and_program_execution id16}@anchor{188}
  @subsection Stack Traceback
  
  
--- 18789,18795 ----
  @geindex stack unwinding
  
  @node Stack Traceback,Pretty-Printers for the GNAT runtime,Getting Internal Debugging Information,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution stack-traceback}@anchor{168}@anchor{gnat_ugn/gnat_and_program_execution id16}@anchor{169}
  @subsection Stack Traceback
  
  
*************** is enabled, and no exception is raised d
*** 20209,20215 ****
  @end menu
  
  @node Non-Symbolic Traceback,Symbolic Traceback,,Stack Traceback
! @anchor{gnat_ugn/gnat_and_program_execution non-symbolic-traceback}@anchor{189}@anchor{gnat_ugn/gnat_and_program_execution id17}@anchor{18a}
  @subsubsection Non-Symbolic Traceback
  
  
--- 18818,18824 ----
  @end menu
  
  @node Non-Symbolic Traceback,Symbolic Traceback,,Stack Traceback
! @anchor{gnat_ugn/gnat_and_program_execution non-symbolic-traceback}@anchor{16a}@anchor{gnat_ugn/gnat_and_program_execution id17}@anchor{16b}
  @subsubsection Non-Symbolic Traceback
  
  
*************** From this traceback we can see that the
*** 20336,20342 ****
  @code{stb.adb} at line 5, which was reached from a procedure call in
  @code{stb.adb} at line 10, and so on. The @code{b~std.adb} is the binder file,
  which contains the call to the main program.
! @ref{11c,,Running gnatbind}. The remaining entries are assorted runtime routines,
  and the output will vary from platform to platform.
  
  It is also possible to use @code{GDB} with these traceback addresses to debug
--- 18945,18951 ----
  @code{stb.adb} at line 5, which was reached from a procedure call in
  @code{stb.adb} at line 10, and so on. The @code{b~std.adb} is the binder file,
  which contains the call to the main program.
! @ref{10d,,Running gnatbind}. The remaining entries are assorted runtime routines,
  and the output will vary from platform to platform.
  
  It is also possible to use @code{GDB} with these traceback addresses to debug
*************** need to be specified in C format, with a
*** 20494,20500 ****
  @geindex symbolic
  
  @node Symbolic Traceback,,Non-Symbolic Traceback,Stack Traceback
! @anchor{gnat_ugn/gnat_and_program_execution id18}@anchor{18b}@anchor{gnat_ugn/gnat_and_program_execution symbolic-traceback}@anchor{18c}
  @subsubsection Symbolic Traceback
  
  
--- 19103,19109 ----
  @geindex symbolic
  
  @node Symbolic Traceback,,Non-Symbolic Traceback,Stack Traceback
! @anchor{gnat_ugn/gnat_and_program_execution id18}@anchor{16c}@anchor{gnat_ugn/gnat_and_program_execution symbolic-traceback}@anchor{16d}
  @subsubsection Symbolic Traceback
  
  
*************** which will also be printed if an unhandl
*** 20622,20628 ****
  program.
  
  @node Pretty-Printers for the GNAT runtime,,Stack Traceback,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id19}@anchor{18d}@anchor{gnat_ugn/gnat_and_program_execution pretty-printers-for-the-gnat-runtime}@anchor{18e}
  @subsection Pretty-Printers for the GNAT runtime
  
  
--- 19231,19237 ----
  program.
  
  @node Pretty-Printers for the GNAT runtime,,Stack Traceback,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id19}@anchor{16e}@anchor{gnat_ugn/gnat_and_program_execution pretty-printers-for-the-gnat-runtime}@anchor{16f}
  @subsection Pretty-Printers for the GNAT runtime
  
  
*************** for more information.
*** 20729,20735 ****
  @geindex Profiling
  
  @node Profiling,Improving Performance,Running and Debugging Ada Programs,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution profiling}@anchor{25}@anchor{gnat_ugn/gnat_and_program_execution id20}@anchor{18f}
  @section Profiling
  
  
--- 19338,19344 ----
  @geindex Profiling
  
  @node Profiling,Improving Performance,Running and Debugging Ada Programs,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution profiling}@anchor{147}@anchor{gnat_ugn/gnat_and_program_execution id20}@anchor{170}
  @section Profiling
  
  
*************** This section describes how to use the @c
*** 20745,20751 ****
  @end menu
  
  @node Profiling an Ada Program with gprof,,,Profiling
! @anchor{gnat_ugn/gnat_and_program_execution id21}@anchor{190}@anchor{gnat_ugn/gnat_and_program_execution profiling-an-ada-program-with-gprof}@anchor{191}
  @subsection Profiling an Ada Program with gprof
  
  
--- 19354,19360 ----
  @end menu
  
  @node Profiling an Ada Program with gprof,,,Profiling
! @anchor{gnat_ugn/gnat_and_program_execution id21}@anchor{171}@anchor{gnat_ugn/gnat_and_program_execution profiling-an-ada-program-with-gprof}@anchor{172}
  @subsection Profiling an Ada Program with gprof
  
  
*************** to interpret the results.
*** 20799,20805 ****
  @end menu
  
  @node Compilation for profiling,Program execution,,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution id22}@anchor{192}@anchor{gnat_ugn/gnat_and_program_execution compilation-for-profiling}@anchor{193}
  @subsubsection Compilation for profiling
  
  
--- 19408,19414 ----
  @end menu
  
  @node Compilation for profiling,Program execution,,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution id22}@anchor{173}@anchor{gnat_ugn/gnat_and_program_execution compilation-for-profiling}@anchor{174}
  @subsubsection Compilation for profiling
  
  
*************** be profiled; if you need to profile your
*** 20827,20833 ****
  gnatmake switch to force full recompilation.
  
  @node Program execution,Running gprof,Compilation for profiling,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution program-execution}@anchor{194}@anchor{gnat_ugn/gnat_and_program_execution id23}@anchor{195}
  @subsubsection Program execution
  
  
--- 19436,19442 ----
  gnatmake switch to force full recompilation.
  
  @node Program execution,Running gprof,Compilation for profiling,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution program-execution}@anchor{175}@anchor{gnat_ugn/gnat_and_program_execution id23}@anchor{176}
  @subsubsection Program execution
  
  
*************** generated in the directory where the pro
*** 20842,20848 ****
  already exists, it will be overwritten.
  
  @node Running gprof,Interpretation of profiling results,Program execution,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution running-gprof}@anchor{196}@anchor{gnat_ugn/gnat_and_program_execution id24}@anchor{197}
  @subsubsection Running gprof
  
  
--- 19451,19457 ----
  already exists, it will be overwritten.
  
  @node Running gprof,Interpretation of profiling results,Program execution,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution running-gprof}@anchor{177}@anchor{gnat_ugn/gnat_and_program_execution id24}@anchor{178}
  @subsubsection Running gprof
  
  
*************** may be given; only one @code{function_na
*** 20955,20961 ****
  @end table
  
  @node Interpretation of profiling results,,Running gprof,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution id25}@anchor{198}@anchor{gnat_ugn/gnat_and_program_execution interpretation-of-profiling-results}@anchor{199}
  @subsubsection Interpretation of profiling results
  
  
--- 19564,19570 ----
  @end table
  
  @node Interpretation of profiling results,,Running gprof,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution id25}@anchor{179}@anchor{gnat_ugn/gnat_and_program_execution interpretation-of-profiling-results}@anchor{17a}
  @subsubsection Interpretation of profiling results
  
  
*************** and the subprograms that it calls. It al
*** 20972,20978 ****
  spent in each of those callers/called subprograms.
  
  @node Improving Performance,Overflow Check Handling in GNAT,Profiling,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution improving-performance}@anchor{26}@anchor{gnat_ugn/gnat_and_program_execution id26}@anchor{168}
  @section Improving Performance
  
  
--- 19581,19587 ----
  spent in each of those callers/called subprograms.
  
  @node Improving Performance,Overflow Check Handling in GNAT,Profiling,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution improving-performance}@anchor{17b}@anchor{gnat_ugn/gnat_and_program_execution id26}@anchor{148}
  @section Improving Performance
  
  
*************** which can reduce the size of program exe
*** 20993,20999 ****
  @end menu
  
  @node Performance Considerations,Text_IO Suggestions,,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution performance-considerations}@anchor{19a}@anchor{gnat_ugn/gnat_and_program_execution id27}@anchor{19b}
  @subsection Performance Considerations
  
  
--- 19602,19608 ----
  @end menu
  
  @node Performance Considerations,Text_IO Suggestions,,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution performance-considerations}@anchor{17c}@anchor{gnat_ugn/gnat_and_program_execution id27}@anchor{17d}
  @subsection Performance Considerations
  
  
*************** some guidelines on debugging optimized c
*** 21043,21049 ****
  * Optimization Levels:: 
  * Debugging Optimized Code:: 
  * Inlining of Subprograms:: 
! * Floating_Point_Operations:: 
  * Vectorization of loops:: 
  * Other Optimization Switches:: 
  * Optimization and Strict Aliasing:: 
--- 19652,19658 ----
  * Optimization Levels:: 
  * Debugging Optimized Code:: 
  * Inlining of Subprograms:: 
! * Floating Point Operations:: 
  * Vectorization of loops:: 
  * Other Optimization Switches:: 
  * Optimization and Strict Aliasing:: 
*************** some guidelines on debugging optimized c
*** 21054,21060 ****
  @end menu
  
  @node Controlling Run-Time Checks,Use of Restrictions,,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id28}@anchor{19c}@anchor{gnat_ugn/gnat_and_program_execution controlling-run-time-checks}@anchor{19d}
  @subsubsection Controlling Run-Time Checks
  
  
--- 19663,19669 ----
  @end menu
  
  @node Controlling Run-Time Checks,Use of Restrictions,,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id28}@anchor{17e}@anchor{gnat_ugn/gnat_and_program_execution controlling-run-time-checks}@anchor{17f}
  @subsubsection Controlling Run-Time Checks
  
  
*************** necessary checking is done at compile ti
*** 21068,21074 ****
  @geindex -gnato (gcc)
  
  The gnat switch, @code{-gnatp} allows this default to be modified. See
! @ref{f9,,Run-Time Checks}.
  
  Our experience is that the default is suitable for most development
  purposes.
--- 19677,19683 ----
  @geindex -gnato (gcc)
  
  The gnat switch, @code{-gnatp} allows this default to be modified. See
! @ref{ea,,Run-Time Checks}.
  
  Our experience is that the default is suitable for most development
  purposes.
*************** remove checks) or @code{pragma Unsuppres
*** 21106,21112 ****
  checks) in the program source.
  
  @node Use of Restrictions,Optimization Levels,Controlling Run-Time Checks,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id29}@anchor{19e}@anchor{gnat_ugn/gnat_and_program_execution use-of-restrictions}@anchor{19f}
  @subsubsection Use of Restrictions
  
  
--- 19715,19721 ----
  checks) in the program source.
  
  @node Use of Restrictions,Optimization Levels,Controlling Run-Time Checks,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id29}@anchor{180}@anchor{gnat_ugn/gnat_and_program_execution use-of-restrictions}@anchor{181}
  @subsubsection Use of Restrictions
  
  
*************** that this also means that you can write
*** 21141,21147 ****
  possibility of an immediate abort at any point.
  
  @node Optimization Levels,Debugging Optimized Code,Use of Restrictions,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id30}@anchor{1a0}@anchor{gnat_ugn/gnat_and_program_execution optimization-levels}@anchor{fc}
  @subsubsection Optimization Levels
  
  
--- 19750,19756 ----
  possibility of an immediate abort at any point.
  
  @node Optimization Levels,Debugging Optimized Code,Use of Restrictions,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id30}@anchor{182}@anchor{gnat_ugn/gnat_and_program_execution optimization-levels}@anchor{ed}
  @subsubsection Optimization Levels
  
  
*************** the slowest compilation time.
*** 21222,21228 ****
  
  Full optimization as in @code{-O2};
  also uses more aggressive automatic inlining of subprograms within a unit
! (@ref{10f,,Inlining of Subprograms}) and attempts to vectorize loops.
  @end table
  
  @item 
--- 19831,19837 ----
  
  Full optimization as in @code{-O2};
  also uses more aggressive automatic inlining of subprograms within a unit
! (@ref{100,,Inlining of Subprograms}) and attempts to vectorize loops.
  @end table
  
  @item 
*************** levels.
*** 21262,21271 ****
  Note regarding the use of @code{-O3}: The use of this optimization level
  ought not to be automatically preferred over that of level @code{-O2},
  since it often results in larger executables which may run more slowly.
! See further discussion of this point in @ref{10f,,Inlining of Subprograms}.
  
  @node Debugging Optimized Code,Inlining of Subprograms,Optimization Levels,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution debugging-optimized-code}@anchor{1a1}@anchor{gnat_ugn/gnat_and_program_execution id31}@anchor{1a2}
  @subsubsection Debugging Optimized Code
  
  
--- 19871,19880 ----
  Note regarding the use of @code{-O3}: The use of this optimization level
  ought not to be automatically preferred over that of level @code{-O2},
  since it often results in larger executables which may run more slowly.
! See further discussion of this point in @ref{100,,Inlining of Subprograms}.
  
  @node Debugging Optimized Code,Inlining of Subprograms,Optimization Levels,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution debugging-optimized-code}@anchor{183}@anchor{gnat_ugn/gnat_and_program_execution id31}@anchor{184}
  @subsubsection Debugging Optimized Code
  
  
*************** Note that if you use @code{-g} you can t
*** 21392,21399 ****
  on the resulting executable,
  which removes both debugging information and global symbols.
  
! @node Inlining of Subprograms,Floating_Point_Operations,Debugging Optimized Code,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id32}@anchor{1a3}@anchor{gnat_ugn/gnat_and_program_execution inlining-of-subprograms}@anchor{10f}
  @subsubsection Inlining of Subprograms
  
  
--- 20001,20008 ----
  on the resulting executable,
  which removes both debugging information and global symbols.
  
! @node Inlining of Subprograms,Floating Point Operations,Debugging Optimized Code,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id32}@anchor{185}@anchor{gnat_ugn/gnat_and_program_execution inlining-of-subprograms}@anchor{100}
  @subsubsection Inlining of Subprograms
  
  
*************** automatically assume that @code{-O3} is
*** 21531,21539 ****
  indeed you should use @code{-O3} only if tests show that it actually
  improves performance for your program.
  
! @node Floating_Point_Operations,Vectorization of loops,Inlining of Subprograms,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution floating-point-operations}@anchor{1a4}@anchor{gnat_ugn/gnat_and_program_execution id33}@anchor{1a5}
! @subsubsection Floating_Point_Operations
  
  
  @geindex Floating-Point Operations
--- 20140,20148 ----
  indeed you should use @code{-O3} only if tests show that it actually
  improves performance for your program.
  
! @node Floating Point Operations,Vectorization of loops,Inlining of Subprograms,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution floating-point-operations}@anchor{186}@anchor{gnat_ugn/gnat_and_program_execution id33}@anchor{187}
! @subsubsection Floating Point Operations
  
  
  @geindex Floating-Point Operations
*************** Note that the ABI has the same form for
*** 21579,21586 ****
  so it is permissible to mix units compiled with and without these
  switches.
  
! @node Vectorization of loops,Other Optimization Switches,Floating_Point_Operations,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id34}@anchor{1a6}@anchor{gnat_ugn/gnat_and_program_execution vectorization-of-loops}@anchor{1a7}
  @subsubsection Vectorization of loops
  
  
--- 20188,20195 ----
  so it is permissible to mix units compiled with and without these
  switches.
  
! @node Vectorization of loops,Other Optimization Switches,Floating Point Operations,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id34}@anchor{188}@anchor{gnat_ugn/gnat_and_program_execution vectorization-of-loops}@anchor{189}
  @subsubsection Vectorization of loops
  
  
*************** placed immediately within the loop will
*** 21731,21737 ****
  omit the non-vectorized version of the loop as well as the run-time test.
  
  @node Other Optimization Switches,Optimization and Strict Aliasing,Vectorization of loops,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution other-optimization-switches}@anchor{1a8}@anchor{gnat_ugn/gnat_and_program_execution id35}@anchor{1a9}
  @subsubsection Other Optimization Switches
  
  
--- 20340,20346 ----
  omit the non-vectorized version of the loop as well as the run-time test.
  
  @node Other Optimization Switches,Optimization and Strict Aliasing,Vectorization of loops,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution other-optimization-switches}@anchor{18a}@anchor{gnat_ugn/gnat_and_program_execution id35}@anchor{18b}
  @subsubsection Other Optimization Switches
  
  
*************** the @emph{Submodel Options} section in t
*** 21748,21754 ****
  chapter of @cite{Using the GNU Compiler Collection (GCC)}.
  
  @node Optimization and Strict Aliasing,Aliased Variables and Optimization,Other Optimization Switches,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution optimization-and-strict-aliasing}@anchor{f3}@anchor{gnat_ugn/gnat_and_program_execution id36}@anchor{1aa}
  @subsubsection Optimization and Strict Aliasing
  
  
--- 20357,20363 ----
  chapter of @cite{Using the GNU Compiler Collection (GCC)}.
  
  @node Optimization and Strict Aliasing,Aliased Variables and Optimization,Other Optimization Switches,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution optimization-and-strict-aliasing}@anchor{e4}@anchor{gnat_ugn/gnat_and_program_execution id36}@anchor{18c}
  @subsubsection Optimization and Strict Aliasing
  
  
*************** review any uses of unchecked conversion
*** 21988,21994 ****
  particularly if you are getting the warnings described above.
  
  @node Aliased Variables and Optimization,Atomic Variables and Optimization,Optimization and Strict Aliasing,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id37}@anchor{1ab}@anchor{gnat_ugn/gnat_and_program_execution aliased-variables-and-optimization}@anchor{1ac}
  @subsubsection Aliased Variables and Optimization
  
  
--- 20597,20603 ----
  particularly if you are getting the warnings described above.
  
  @node Aliased Variables and Optimization,Atomic Variables and Optimization,Optimization and Strict Aliasing,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id37}@anchor{18d}@anchor{gnat_ugn/gnat_and_program_execution aliased-variables-and-optimization}@anchor{18e}
  @subsubsection Aliased Variables and Optimization
  
  
*************** This means that the above example will i
*** 22046,22052 ****
  that is, it will produce the expected results.
  
  @node Atomic Variables and Optimization,Passive Task Optimization,Aliased Variables and Optimization,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution atomic-variables-and-optimization}@anchor{1ad}@anchor{gnat_ugn/gnat_and_program_execution id38}@anchor{1ae}
  @subsubsection Atomic Variables and Optimization
  
  
--- 20655,20661 ----
  that is, it will produce the expected results.
  
  @node Atomic Variables and Optimization,Passive Task Optimization,Aliased Variables and Optimization,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution atomic-variables-and-optimization}@anchor{18f}@anchor{gnat_ugn/gnat_and_program_execution id38}@anchor{190}
  @subsubsection Atomic Variables and Optimization
  
  
*************** such synchronization code is not require
*** 22127,22133 ****
  useful to disable it.
  
  @node Passive Task Optimization,,Atomic Variables and Optimization,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution passive-task-optimization}@anchor{1af}@anchor{gnat_ugn/gnat_and_program_execution id39}@anchor{1b0}
  @subsubsection Passive Task Optimization
  
  
--- 20736,20742 ----
  useful to disable it.
  
  @node Passive Task Optimization,,Atomic Variables and Optimization,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution passive-task-optimization}@anchor{191}@anchor{gnat_ugn/gnat_and_program_execution id39}@anchor{192}
  @subsubsection Passive Task Optimization
  
  
*************** that typically clients of the tasks who
*** 22172,22178 ****
  to be modified, only the task definition itself.
  
  @node Text_IO Suggestions,Reducing Size of Executables with Unused Subprogram/Data Elimination,Performance Considerations,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution text-io-suggestions}@anchor{1b1}@anchor{gnat_ugn/gnat_and_program_execution id40}@anchor{1b2}
  @subsection @code{Text_IO} Suggestions
  
  
--- 20781,20787 ----
  to be modified, only the task definition itself.
  
  @node Text_IO Suggestions,Reducing Size of Executables with Unused Subprogram/Data Elimination,Performance Considerations,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution text-io-suggestions}@anchor{193}@anchor{gnat_ugn/gnat_and_program_execution id40}@anchor{194}
  @subsection @code{Text_IO} Suggestions
  
  
*************** of the standard output file, or change t
*** 22195,22201 ****
  be buffered using @code{Interfaces.C_Streams.setvbuf}.
  
  @node Reducing Size of Executables with Unused Subprogram/Data Elimination,,Text_IO Suggestions,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution id41}@anchor{1b3}@anchor{gnat_ugn/gnat_and_program_execution reducing-size-of-executables-with-unused-subprogram-data-elimination}@anchor{1b4}
  @subsection Reducing Size of Executables with Unused Subprogram/Data Elimination
  
  
--- 20804,20810 ----
  be buffered using @code{Interfaces.C_Streams.setvbuf}.
  
  @node Reducing Size of Executables with Unused Subprogram/Data Elimination,,Text_IO Suggestions,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution id41}@anchor{195}@anchor{gnat_ugn/gnat_and_program_execution reducing-size-of-executables-with-unused-subprogram-data-elimination}@anchor{196}
  @subsection Reducing Size of Executables with Unused Subprogram/Data Elimination
  
  
*************** your executable just by setting options
*** 22212,22218 ****
  @end menu
  
  @node About unused subprogram/data elimination,Compilation options,,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution id42}@anchor{1b5}@anchor{gnat_ugn/gnat_and_program_execution about-unused-subprogram-data-elimination}@anchor{1b6}
  @subsubsection About unused subprogram/data elimination
  
  
--- 20821,20827 ----
  @end menu
  
  @node About unused subprogram/data elimination,Compilation options,,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution id42}@anchor{197}@anchor{gnat_ugn/gnat_and_program_execution about-unused-subprogram-data-elimination}@anchor{198}
  @subsubsection About unused subprogram/data elimination
  
  
*************** architecture and on all cross platforms
*** 22228,22234 ****
  In both cases GNU binutils version 2.16 or later are required to enable it.
  
  @node Compilation options,Example of unused subprogram/data elimination,About unused subprogram/data elimination,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution id43}@anchor{1b7}@anchor{gnat_ugn/gnat_and_program_execution compilation-options}@anchor{1b8}
  @subsubsection Compilation options
  
  
--- 20837,20843 ----
  In both cases GNU binutils version 2.16 or later are required to enable it.
  
  @node Compilation options,Example of unused subprogram/data elimination,About unused subprogram/data elimination,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution id43}@anchor{199}@anchor{gnat_ugn/gnat_and_program_execution compilation-options}@anchor{19a}
  @subsubsection Compilation options
  
  
*************** The GNAT static library is now compiled
*** 22267,22273 ****
  and data of the GNAT library from your executable.
  
  @node Example of unused subprogram/data elimination,,Compilation options,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution example-of-unused-subprogram-data-elimination}@anchor{1b9}@anchor{gnat_ugn/gnat_and_program_execution id44}@anchor{1ba}
  @subsubsection Example of unused subprogram/data elimination
  
  
--- 20876,20882 ----
  and data of the GNAT library from your executable.
  
  @node Example of unused subprogram/data elimination,,Compilation options,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution example-of-unused-subprogram-data-elimination}@anchor{19b}@anchor{gnat_ugn/gnat_and_program_execution id44}@anchor{19c}
  @subsubsection Example of unused subprogram/data elimination
  
  
*************** appropriate options.
*** 22337,22343 ****
  @geindex Checks (overflow)
  
  @node Overflow Check Handling in GNAT,Performing Dimensionality Analysis in GNAT,Improving Performance,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id45}@anchor{169}@anchor{gnat_ugn/gnat_and_program_execution overflow-check-handling-in-gnat}@anchor{27}
  @section Overflow Check Handling in GNAT
  
  
--- 20946,20952 ----
  @geindex Checks (overflow)
  
  @node Overflow Check Handling in GNAT,Performing Dimensionality Analysis in GNAT,Improving Performance,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id45}@anchor{149}@anchor{gnat_ugn/gnat_and_program_execution overflow-check-handling-in-gnat}@anchor{19d}
  @section Overflow Check Handling in GNAT
  
  
*************** This section explains how to control the
*** 22353,22359 ****
  @end menu
  
  @node Background,Management of Overflows in GNAT,,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution id46}@anchor{1bb}@anchor{gnat_ugn/gnat_and_program_execution background}@anchor{1bc}
  @subsection Background
  
  
--- 20962,20968 ----
  @end menu
  
  @node Background,Management of Overflows in GNAT,,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution id46}@anchor{19e}@anchor{gnat_ugn/gnat_and_program_execution background}@anchor{19f}
  @subsection Background
  
  
*************** exception raised because of the intermed
*** 22479,22485 ****
  would prefer this precondition to be considered True at run time).
  
  @node Management of Overflows in GNAT,Specifying the Desired Mode,Background,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution id47}@anchor{1bd}@anchor{gnat_ugn/gnat_and_program_execution management-of-overflows-in-gnat}@anchor{1be}
  @subsection Management of Overflows in GNAT
  
  
--- 21088,21094 ----
  would prefer this precondition to be considered True at run time).
  
  @node Management of Overflows in GNAT,Specifying the Desired Mode,Background,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution id47}@anchor{1a0}@anchor{gnat_ugn/gnat_and_program_execution management-of-overflows-in-gnat}@anchor{1a1}
  @subsection Management of Overflows in GNAT
  
  
*************** out in the normal manner (with infinite
*** 22593,22599 ****
  range checks).
  
  @node Specifying the Desired Mode,Default Settings,Management of Overflows in GNAT,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution specifying-the-desired-mode}@anchor{f8}@anchor{gnat_ugn/gnat_and_program_execution id48}@anchor{1bf}
  @subsection Specifying the Desired Mode
  
  
--- 21202,21208 ----
  range checks).
  
  @node Specifying the Desired Mode,Default Settings,Management of Overflows in GNAT,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution specifying-the-desired-mode}@anchor{e9}@anchor{gnat_ugn/gnat_and_program_execution id48}@anchor{1a2}
  @subsection Specifying the Desired Mode
  
  
*************** causing all intermediate operations to b
*** 22717,22723 ****
  type (@code{STRICT} mode).
  
  @node Default Settings,Implementation Notes,Specifying the Desired Mode,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution id49}@anchor{1c0}@anchor{gnat_ugn/gnat_and_program_execution default-settings}@anchor{1c1}
  @subsection Default Settings
  
  
--- 21326,21332 ----
  type (@code{STRICT} mode).
  
  @node Default Settings,Implementation Notes,Specifying the Desired Mode,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution id49}@anchor{1a3}@anchor{gnat_ugn/gnat_and_program_execution default-settings}@anchor{1a4}
  @subsection Default Settings
  
  
*************** checking, but it has no effect on the me
*** 22764,22770 ****
  intermediate results.
  
  @node Implementation Notes,,Default Settings,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution implementation-notes}@anchor{1c2}@anchor{gnat_ugn/gnat_and_program_execution id50}@anchor{1c3}
  @subsection Implementation Notes
  
  
--- 21373,21379 ----
  intermediate results.
  
  @node Implementation Notes,,Default Settings,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution implementation-notes}@anchor{1a5}@anchor{gnat_ugn/gnat_and_program_execution id50}@anchor{1a6}
  @subsection Implementation Notes
  
  
*************** platforms for which @code{Long_Long_Inte
*** 22812,22818 ****
  platforms).
  
  @node Performing Dimensionality Analysis in GNAT,Stack Related Facilities,Overflow Check Handling in GNAT,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution performing-dimensionality-analysis-in-gnat}@anchor{28}@anchor{gnat_ugn/gnat_and_program_execution id51}@anchor{16a}
  @section Performing Dimensionality Analysis in GNAT
  
  
--- 21421,21427 ----
  platforms).
  
  @node Performing Dimensionality Analysis in GNAT,Stack Related Facilities,Overflow Check Handling in GNAT,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution performing-dimensionality-analysis-in-gnat}@anchor{1a7}@anchor{gnat_ugn/gnat_and_program_execution id51}@anchor{14a}
  @section Performing Dimensionality Analysis in GNAT
  
  
*************** passing (the dimension vector for the ac
*** 23199,23205 ****
  dimension vector for the formal parameter).
  
  @node Stack Related Facilities,Memory Management Issues,Performing Dimensionality Analysis in GNAT,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution stack-related-facilities}@anchor{29}@anchor{gnat_ugn/gnat_and_program_execution id52}@anchor{16b}
  @section Stack Related Facilities
  
  
--- 21808,21814 ----
  dimension vector for the formal parameter).
  
  @node Stack Related Facilities,Memory Management Issues,Performing Dimensionality Analysis in GNAT,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution stack-related-facilities}@anchor{1a8}@anchor{gnat_ugn/gnat_and_program_execution id52}@anchor{14b}
  @section Stack Related Facilities
  
  
*************** particular, it deals with dynamic and st
*** 23215,23221 ****
  @end menu
  
  @node Stack Overflow Checking,Static Stack Usage Analysis,,Stack Related Facilities
! @anchor{gnat_ugn/gnat_and_program_execution id53}@anchor{1c4}@anchor{gnat_ugn/gnat_and_program_execution stack-overflow-checking}@anchor{f4}
  @subsection Stack Overflow Checking
  
  
--- 21824,21830 ----
  @end menu
  
  @node Stack Overflow Checking,Static Stack Usage Analysis,,Stack Related Facilities
! @anchor{gnat_ugn/gnat_and_program_execution id53}@anchor{1a9}@anchor{gnat_ugn/gnat_and_program_execution stack-overflow-checking}@anchor{e5}
  @subsection Stack Overflow Checking
  
  
*************** If the space is exceeded, then a @code{S
*** 23252,23258 ****
  
  For declared tasks, the default stack size is defined by the GNAT runtime,
  whose size may be modified at bind time through the @code{-d} bind switch
! (@ref{11f,,Switches for gnatbind}). Task specific stack sizes may be set using the
  @code{Storage_Size} pragma.
  
  For the environment task, the stack size is determined by the operating system.
--- 21861,21867 ----
  
  For declared tasks, the default stack size is defined by the GNAT runtime,
  whose size may be modified at bind time through the @code{-d} bind switch
! (@ref{110,,Switches for gnatbind}). Task specific stack sizes may be set using the
  @code{Storage_Size} pragma.
  
  For the environment task, the stack size is determined by the operating system.
*************** Consequently, to modify the size of the
*** 23260,23266 ****
  operating system documentation.
  
  @node Static Stack Usage Analysis,Dynamic Stack Usage Analysis,Stack Overflow Checking,Stack Related Facilities
! @anchor{gnat_ugn/gnat_and_program_execution id54}@anchor{1c5}@anchor{gnat_ugn/gnat_and_program_execution static-stack-usage-analysis}@anchor{f5}
  @subsection Static Stack Usage Analysis
  
  
--- 21869,21875 ----
  operating system documentation.
  
  @node Static Stack Usage Analysis,Dynamic Stack Usage Analysis,Stack Overflow Checking,Stack Related Facilities
! @anchor{gnat_ugn/gnat_and_program_execution id54}@anchor{1aa}@anchor{gnat_ugn/gnat_and_program_execution static-stack-usage-analysis}@anchor{e6}
  @subsection Static Stack Usage Analysis
  
  
*************** subprogram whose stack usage might be la
*** 23309,23315 ****
  bytes.  The wording is in keeping with the qualifier documented above.
  
  @node Dynamic Stack Usage Analysis,,Static Stack Usage Analysis,Stack Related Facilities
! @anchor{gnat_ugn/gnat_and_program_execution id55}@anchor{1c6}@anchor{gnat_ugn/gnat_and_program_execution dynamic-stack-usage-analysis}@anchor{122}
  @subsection Dynamic Stack Usage Analysis
  
  
--- 21918,21924 ----
  bytes.  The wording is in keeping with the qualifier documented above.
  
  @node Dynamic Stack Usage Analysis,,Static Stack Usage Analysis,Stack Related Facilities
! @anchor{gnat_ugn/gnat_and_program_execution id55}@anchor{1ab}@anchor{gnat_ugn/gnat_and_program_execution dynamic-stack-usage-analysis}@anchor{113}
  @subsection Dynamic Stack Usage Analysis
  
  
*************** The package @code{GNAT.Task_Stack_Usage}
*** 23391,23397 ****
  stack-usage reports at run time. See its body for the details.
  
  @node Memory Management Issues,,Stack Related Facilities,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id56}@anchor{16c}@anchor{gnat_ugn/gnat_and_program_execution memory-management-issues}@anchor{2a}
  @section Memory Management Issues
  
  
--- 22000,22006 ----
  stack-usage reports at run time. See its body for the details.
  
  @node Memory Management Issues,,Stack Related Facilities,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id56}@anchor{14c}@anchor{gnat_ugn/gnat_and_program_execution memory-management-issues}@anchor{1ac}
  @section Memory Management Issues
  
  
*************** incorrect uses of access values (includi
*** 23407,23413 ****
  @end menu
  
  @node Some Useful Memory Pools,The GNAT Debug Pool Facility,,Memory Management Issues
! @anchor{gnat_ugn/gnat_and_program_execution id57}@anchor{1c7}@anchor{gnat_ugn/gnat_and_program_execution some-useful-memory-pools}@anchor{1c8}
  @subsection Some Useful Memory Pools
  
  
--- 22016,22022 ----
  @end menu
  
  @node Some Useful Memory Pools,The GNAT Debug Pool Facility,,Memory Management Issues
! @anchor{gnat_ugn/gnat_and_program_execution id57}@anchor{1ad}@anchor{gnat_ugn/gnat_and_program_execution some-useful-memory-pools}@anchor{1ae}
  @subsection Some Useful Memory Pools
  
  
*************** for T1'Storage_Size use 10_000;
*** 23488,23494 ****
  @end quotation
  
  @node The GNAT Debug Pool Facility,,Some Useful Memory Pools,Memory Management Issues
! @anchor{gnat_ugn/gnat_and_program_execution id58}@anchor{1c9}@anchor{gnat_ugn/gnat_and_program_execution the-gnat-debug-pool-facility}@anchor{1ca}
  @subsection The GNAT Debug Pool Facility
  
  
--- 22097,22103 ----
  @end quotation
  
  @node The GNAT Debug Pool Facility,,Some Useful Memory Pools,Memory Management Issues
! @anchor{gnat_ugn/gnat_and_program_execution id58}@anchor{1af}@anchor{gnat_ugn/gnat_and_program_execution the-gnat-debug-pool-facility}@anchor{1b0}
  @subsection The GNAT Debug Pool Facility
  
  
*************** Debug Pool info:
*** 23651,23657 ****
  @c -- E.g. Ada |nbsp| 95
  
  @node Platform-Specific Information,Example of Binder Output File,GNAT and Program Execution,Top
! @anchor{gnat_ugn/platform_specific_information platform-specific-information}@anchor{d}@anchor{gnat_ugn/platform_specific_information doc}@anchor{1cb}@anchor{gnat_ugn/platform_specific_information id1}@anchor{1cc}
  @chapter Platform-Specific Information
  
  
--- 22260,22266 ----
  @c -- E.g. Ada |nbsp| 95
  
  @node Platform-Specific Information,Example of Binder Output File,GNAT and Program Execution,Top
! @anchor{gnat_ugn/platform_specific_information platform-specific-information}@anchor{d}@anchor{gnat_ugn/platform_specific_information doc}@anchor{1b1}@anchor{gnat_ugn/platform_specific_information id1}@anchor{1b2}
  @chapter Platform-Specific Information
  
  
*************** topics related to the GNAT implementatio
*** 23669,23675 ****
  @end menu
  
  @node Run-Time Libraries,Specifying a Run-Time Library,,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information id2}@anchor{1cd}@anchor{gnat_ugn/platform_specific_information run-time-libraries}@anchor{2b}
  @section Run-Time Libraries
  
  
--- 22278,22284 ----
  @end menu
  
  @node Run-Time Libraries,Specifying a Run-Time Library,,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information id2}@anchor{1b3}@anchor{gnat_ugn/platform_specific_information run-time-libraries}@anchor{1b4}
  @section Run-Time Libraries
  
  
*************** are supplied on various GNAT platforms.
*** 23730,23736 ****
  @end menu
  
  @node Summary of Run-Time Configurations,,,Run-Time Libraries
! @anchor{gnat_ugn/platform_specific_information summary-of-run-time-configurations}@anchor{1ce}@anchor{gnat_ugn/platform_specific_information id3}@anchor{1cf}
  @subsection Summary of Run-Time Configurations
  
  
--- 22339,22345 ----
  @end menu
  
  @node Summary of Run-Time Configurations,,,Run-Time Libraries
! @anchor{gnat_ugn/platform_specific_information summary-of-run-time-configurations}@anchor{1b5}@anchor{gnat_ugn/platform_specific_information id3}@anchor{1b6}
  @subsection Summary of Run-Time Configurations
  
  
*************** ZCX
*** 23830,23836 ****
  
  
  @node Specifying a Run-Time Library,GNU/Linux Topics,Run-Time Libraries,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information specifying-a-run-time-library}@anchor{1d0}@anchor{gnat_ugn/platform_specific_information id4}@anchor{1d1}
  @section Specifying a Run-Time Library
  
  
--- 22439,22445 ----
  
  
  @node Specifying a Run-Time Library,GNU/Linux Topics,Run-Time Libraries,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information specifying-a-run-time-library}@anchor{1b7}@anchor{gnat_ugn/platform_specific_information id4}@anchor{1b8}
  @section Specifying a Run-Time Library
  
  
*************** Alternatively, you can specify @code{rts
*** 23917,23923 ****
  
  Selecting another run-time library temporarily can be
  achieved by using the @code{--RTS} switch, e.g., @code{--RTS=sjlj}
! @anchor{gnat_ugn/platform_specific_information choosing-the-scheduling-policy}@anchor{1d2}
  @geindex SCHED_FIFO scheduling policy
  
  @geindex SCHED_RR scheduling policy
--- 22526,22532 ----
  
  Selecting another run-time library temporarily can be
  achieved by using the @code{--RTS} switch, e.g., @code{--RTS=sjlj}
! @anchor{gnat_ugn/platform_specific_information choosing-the-scheduling-policy}@anchor{1b9}
  @geindex SCHED_FIFO scheduling policy
  
  @geindex SCHED_RR scheduling policy
*************** achieved by using the @code{--RTS} switc
*** 23930,23936 ****
  @end menu
  
  @node Choosing the Scheduling Policy,,,Specifying a Run-Time Library
! @anchor{gnat_ugn/platform_specific_information id5}@anchor{1d3}
  @subsection Choosing the Scheduling Policy
  
  
--- 22539,22545 ----
  @end menu
  
  @node Choosing the Scheduling Policy,,,Specifying a Run-Time Library
! @anchor{gnat_ugn/platform_specific_information id5}@anchor{1ba}
  @subsection Choosing the Scheduling Policy
  
  
*************** Program_Error.
*** 23989,23995 ****
  @geindex GNU/Linux
  
  @node GNU/Linux Topics,Microsoft Windows Topics,Specifying a Run-Time Library,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information id6}@anchor{1d4}@anchor{gnat_ugn/platform_specific_information gnu-linux-topics}@anchor{1d5}
  @section GNU/Linux Topics
  
  
--- 22598,22604 ----
  @geindex GNU/Linux
  
  @node GNU/Linux Topics,Microsoft Windows Topics,Specifying a Run-Time Library,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information id6}@anchor{1bb}@anchor{gnat_ugn/platform_specific_information gnu-linux-topics}@anchor{1bc}
  @section GNU/Linux Topics
  
  
*************** This section describes topics that are s
*** 24001,24007 ****
  @end menu
  
  @node Required Packages on GNU/Linux,,,GNU/Linux Topics
! @anchor{gnat_ugn/platform_specific_information id7}@anchor{1d6}@anchor{gnat_ugn/platform_specific_information required-packages-on-gnu-linux}@anchor{1d7}
  @subsection Required Packages on GNU/Linux
  
  
--- 22610,22616 ----
  @end menu
  
  @node Required Packages on GNU/Linux,,,GNU/Linux Topics
! @anchor{gnat_ugn/platform_specific_information id7}@anchor{1bd}@anchor{gnat_ugn/platform_specific_information required-packages-on-gnu-linux}@anchor{1be}
  @subsection Required Packages on GNU/Linux
  
  
*************** for those packages.
*** 24037,24043 ****
  @geindex Windows
  
  @node Microsoft Windows Topics,Mac OS Topics,GNU/Linux Topics,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information microsoft-windows-topics}@anchor{2c}@anchor{gnat_ugn/platform_specific_information id8}@anchor{1d8}
  @section Microsoft Windows Topics
  
  
--- 22646,22652 ----
  @geindex Windows
  
  @node Microsoft Windows Topics,Mac OS Topics,GNU/Linux Topics,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information microsoft-windows-topics}@anchor{1bf}@anchor{gnat_ugn/platform_specific_information id8}@anchor{1c0}
  @section Microsoft Windows Topics
  
  
*************** platforms.
*** 24058,24064 ****
  @end menu
  
  @node Using GNAT on Windows,Using a network installation of GNAT,,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information using-gnat-on-windows}@anchor{1d9}@anchor{gnat_ugn/platform_specific_information id9}@anchor{1da}
  @subsection Using GNAT on Windows
  
  
--- 22667,22673 ----
  @end menu
  
  @node Using GNAT on Windows,Using a network installation of GNAT,,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information using-gnat-on-windows}@anchor{1c1}@anchor{gnat_ugn/platform_specific_information id9}@anchor{1c2}
  @subsection Using GNAT on Windows
  
  
*************** uninstall or integrate different GNAT pr
*** 24135,24141 ****
  @end itemize
  
  @node Using a network installation of GNAT,CONSOLE and WINDOWS subsystems,Using GNAT on Windows,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information id10}@anchor{1db}@anchor{gnat_ugn/platform_specific_information using-a-network-installation-of-gnat}@anchor{1dc}
  @subsection Using a network installation of GNAT
  
  
--- 22744,22750 ----
  @end itemize
  
  @node Using a network installation of GNAT,CONSOLE and WINDOWS subsystems,Using GNAT on Windows,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information id10}@anchor{1c3}@anchor{gnat_ugn/platform_specific_information using-a-network-installation-of-gnat}@anchor{1c4}
  @subsection Using a network installation of GNAT
  
  
*************** transfer of large amounts of data across
*** 24162,24168 ****
  serious performance penalty.
  
  @node CONSOLE and WINDOWS subsystems,Temporary Files,Using a network installation of GNAT,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information id11}@anchor{1dd}@anchor{gnat_ugn/platform_specific_information console-and-windows-subsystems}@anchor{1de}
  @subsection CONSOLE and WINDOWS subsystems
  
  
--- 22771,22777 ----
  serious performance penalty.
  
  @node CONSOLE and WINDOWS subsystems,Temporary Files,Using a network installation of GNAT,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information id11}@anchor{1c5}@anchor{gnat_ugn/platform_specific_information console-and-windows-subsystems}@anchor{1c6}
  @subsection CONSOLE and WINDOWS subsystems
  
  
*************** $ gnatmake winprog -largs -mwindows
*** 24187,24193 ****
  @end quotation
  
  @node Temporary Files,Disabling Command Line Argument Expansion,CONSOLE and WINDOWS subsystems,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information id12}@anchor{1df}@anchor{gnat_ugn/platform_specific_information temporary-files}@anchor{1e0}
  @subsection Temporary Files
  
  
--- 22796,22802 ----
  @end quotation
  
  @node Temporary Files,Disabling Command Line Argument Expansion,CONSOLE and WINDOWS subsystems,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information id12}@anchor{1c7}@anchor{gnat_ugn/platform_specific_information temporary-files}@anchor{1c8}
  @subsection Temporary Files
  
  
*************** environments where you may not have writ
*** 24226,24232 ****
  directories.
  
  @node Disabling Command Line Argument Expansion,Windows Socket Timeouts,Temporary Files,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information disabling-command-line-argument-expansion}@anchor{1e1}
  @subsection Disabling Command Line Argument Expansion
  
  
--- 22835,22841 ----
  directories.
  
  @node Disabling Command Line Argument Expansion,Windows Socket Timeouts,Temporary Files,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information disabling-command-line-argument-expansion}@anchor{1c9}
  @subsection Disabling Command Line Argument Expansion
  
  
*************** Ada.Command_Line.Argument (1) -> "'*.txt
*** 24297,24303 ****
  @end example
  
  @node Windows Socket Timeouts,Mixed-Language Programming on Windows,Disabling Command Line Argument Expansion,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information windows-socket-timeouts}@anchor{1e2}
  @subsection Windows Socket Timeouts
  
  
--- 22906,22912 ----
  @end example
  
  @node Windows Socket Timeouts,Mixed-Language Programming on Windows,Disabling Command Line Argument Expansion,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information windows-socket-timeouts}@anchor{1ca}
  @subsection Windows Socket Timeouts
  
  
*************** shorter than 500 ms is needed on these W
*** 24343,24349 ****
  Check_Selector should be added before any socket read or write operations.
  
  @node Mixed-Language Programming on Windows,Windows Specific Add-Ons,Windows Socket Timeouts,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information id13}@anchor{1e3}@anchor{gnat_ugn/platform_specific_information mixed-language-programming-on-windows}@anchor{1e4}
  @subsection Mixed-Language Programming on Windows
  
  
--- 22952,22958 ----
  Check_Selector should be added before any socket read or write operations.
  
  @node Mixed-Language Programming on Windows,Windows Specific Add-Ons,Windows Socket Timeouts,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information id13}@anchor{1cb}@anchor{gnat_ugn/platform_specific_information mixed-language-programming-on-windows}@anchor{1cc}
  @subsection Mixed-Language Programming on Windows
  
  
*************** to use the Microsoft tools for your C++
*** 24365,24381 ****
  Encapsulate your C++ code in a DLL to be linked with your Ada
  application. In this case, use the Microsoft or whatever environment to
  build the DLL and use GNAT to build your executable
! (@ref{1e5,,Using DLLs with GNAT}).
  
  @item 
  Or you can encapsulate your Ada code in a DLL to be linked with the
  other part of your application. In this case, use GNAT to build the DLL
! (@ref{1e6,,Building DLLs with GNAT Project files}) and use the Microsoft
  or whatever environment to build your executable.
  @end itemize
  
  In addition to the description about C main in
! @ref{44,,Mixed Language Programming} section, if the C main uses a
  stand-alone library it is required on x86-windows to
  setup the SEH context. For this the C main must looks like this:
  
--- 22974,22990 ----
  Encapsulate your C++ code in a DLL to be linked with your Ada
  application. In this case, use the Microsoft or whatever environment to
  build the DLL and use GNAT to build your executable
! (@ref{1cd,,Using DLLs with GNAT}).
  
  @item 
  Or you can encapsulate your Ada code in a DLL to be linked with the
  other part of your application. In this case, use GNAT to build the DLL
! (@ref{1ce,,Building DLLs with GNAT Project files}) and use the Microsoft
  or whatever environment to build your executable.
  @end itemize
  
  In addition to the description about C main in
! @ref{2c,,Mixed Language Programming} section, if the C main uses a
  stand-alone library it is required on x86-windows to
  setup the SEH context. For this the C main must looks like this:
  
*************** native SEH support is used.
*** 24427,24433 ****
  @end menu
  
  @node Windows Calling Conventions,Introduction to Dynamic Link Libraries DLLs,,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information windows-calling-conventions}@anchor{1e7}@anchor{gnat_ugn/platform_specific_information id14}@anchor{1e8}
  @subsubsection Windows Calling Conventions
  
  
--- 23036,23042 ----
  @end menu
  
  @node Windows Calling Conventions,Introduction to Dynamic Link Libraries DLLs,,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information windows-calling-conventions}@anchor{1cf}@anchor{gnat_ugn/platform_specific_information id14}@anchor{1d0}
  @subsubsection Windows Calling Conventions
  
  
*************** are available for Windows:
*** 24472,24478 ****
  @end menu
  
  @node C Calling Convention,Stdcall Calling Convention,,Windows Calling Conventions
! @anchor{gnat_ugn/platform_specific_information c-calling-convention}@anchor{1e9}@anchor{gnat_ugn/platform_specific_information id15}@anchor{1ea}
  @subsubsection @code{C} Calling Convention
  
  
--- 23081,23087 ----
  @end menu
  
  @node C Calling Convention,Stdcall Calling Convention,,Windows Calling Conventions
! @anchor{gnat_ugn/platform_specific_information c-calling-convention}@anchor{1d1}@anchor{gnat_ugn/platform_specific_information id15}@anchor{1d2}
  @subsubsection @code{C} Calling Convention
  
  
*************** is missing, as in the above example, thi
*** 24514,24523 ****
  When importing a variable defined in C, you should always use the @code{C}
  calling convention unless the object containing the variable is part of a
  DLL (in which case you should use the @code{Stdcall} calling
! convention, @ref{1eb,,Stdcall Calling Convention}).
  
  @node Stdcall Calling Convention,Win32 Calling Convention,C Calling Convention,Windows Calling Conventions
! @anchor{gnat_ugn/platform_specific_information stdcall-calling-convention}@anchor{1eb}@anchor{gnat_ugn/platform_specific_information id16}@anchor{1ec}
  @subsubsection @code{Stdcall} Calling Convention
  
  
--- 23123,23132 ----
  When importing a variable defined in C, you should always use the @code{C}
  calling convention unless the object containing the variable is part of a
  DLL (in which case you should use the @code{Stdcall} calling
! convention, @ref{1d3,,Stdcall Calling Convention}).
  
  @node Stdcall Calling Convention,Win32 Calling Convention,C Calling Convention,Windows Calling Conventions
! @anchor{gnat_ugn/platform_specific_information stdcall-calling-convention}@anchor{1d3}@anchor{gnat_ugn/platform_specific_information id16}@anchor{1d4}
  @subsubsection @code{Stdcall} Calling Convention
  
  
*************** Note that to ease building cross-platfor
*** 24614,24620 ****
  will be handled as a @code{C} calling convention on non-Windows platforms.
  
  @node Win32 Calling Convention,DLL Calling Convention,Stdcall Calling Convention,Windows Calling Conventions
! @anchor{gnat_ugn/platform_specific_information win32-calling-convention}@anchor{1ed}@anchor{gnat_ugn/platform_specific_information id17}@anchor{1ee}
  @subsubsection @code{Win32} Calling Convention
  
  
--- 23223,23229 ----
  will be handled as a @code{C} calling convention on non-Windows platforms.
  
  @node Win32 Calling Convention,DLL Calling Convention,Stdcall Calling Convention,Windows Calling Conventions
! @anchor{gnat_ugn/platform_specific_information win32-calling-convention}@anchor{1d5}@anchor{gnat_ugn/platform_specific_information id17}@anchor{1d6}
  @subsubsection @code{Win32} Calling Convention
  
  
*************** This convention, which is GNAT-specific
*** 24622,24628 ****
  @code{Stdcall} calling convention described above.
  
  @node DLL Calling Convention,,Win32 Calling Convention,Windows Calling Conventions
! @anchor{gnat_ugn/platform_specific_information id18}@anchor{1ef}@anchor{gnat_ugn/platform_specific_information dll-calling-convention}@anchor{1f0}
  @subsubsection @code{DLL} Calling Convention
  
  
--- 23231,23237 ----
  @code{Stdcall} calling convention described above.
  
  @node DLL Calling Convention,,Win32 Calling Convention,Windows Calling Conventions
! @anchor{gnat_ugn/platform_specific_information id18}@anchor{1d7}@anchor{gnat_ugn/platform_specific_information dll-calling-convention}@anchor{1d8}
  @subsubsection @code{DLL} Calling Convention
  
  
*************** This convention, which is GNAT-specific
*** 24630,24636 ****
  @code{Stdcall} calling convention described above.
  
  @node Introduction to Dynamic Link Libraries DLLs,Using DLLs with GNAT,Windows Calling Conventions,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id19}@anchor{1f1}@anchor{gnat_ugn/platform_specific_information introduction-to-dynamic-link-libraries-dlls}@anchor{1f2}
  @subsubsection Introduction to Dynamic Link Libraries (DLLs)
  
  
--- 23239,23245 ----
  @code{Stdcall} calling convention described above.
  
  @node Introduction to Dynamic Link Libraries DLLs,Using DLLs with GNAT,Windows Calling Conventions,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id19}@anchor{1d9}@anchor{gnat_ugn/platform_specific_information introduction-to-dynamic-link-libraries-dlls}@anchor{1da}
  @subsubsection Introduction to Dynamic Link Libraries (DLLs)
  
  
*************** As a side note, an interesting differenc
*** 24714,24723 ****
  Unix shared libraries, is the fact that on most Unix systems all public
  routines are exported by default in a Unix shared library, while under
  Windows it is possible (but not required) to list exported routines in
! a definition file (see @ref{1f3,,The Definition File}).
  
  @node Using DLLs with GNAT,Building DLLs with GNAT Project files,Introduction to Dynamic Link Libraries DLLs,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id20}@anchor{1f4}@anchor{gnat_ugn/platform_specific_information using-dlls-with-gnat}@anchor{1e5}
  @subsubsection Using DLLs with GNAT
  
  
--- 23323,23332 ----
  Unix shared libraries, is the fact that on most Unix systems all public
  routines are exported by default in a Unix shared library, while under
  Windows it is possible (but not required) to list exported routines in
! a definition file (see @ref{1db,,The Definition File}).
  
  @node Using DLLs with GNAT,Building DLLs with GNAT Project files,Introduction to Dynamic Link Libraries DLLs,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id20}@anchor{1dc}@anchor{gnat_ugn/platform_specific_information using-dlls-with-gnat}@anchor{1cd}
  @subsubsection Using DLLs with GNAT
  
  
*************** example a fictitious DLL called @code{AP
*** 24808,24814 ****
  @end menu
  
  @node Creating an Ada Spec for the DLL Services,Creating an Import Library,,Using DLLs with GNAT
! @anchor{gnat_ugn/platform_specific_information id21}@anchor{1f5}@anchor{gnat_ugn/platform_specific_information creating-an-ada-spec-for-the-dll-services}@anchor{1f6}
  @subsubsection Creating an Ada Spec for the DLL Services
  
  
--- 23417,23423 ----
  @end menu
  
  @node Creating an Ada Spec for the DLL Services,Creating an Import Library,,Using DLLs with GNAT
! @anchor{gnat_ugn/platform_specific_information id21}@anchor{1dd}@anchor{gnat_ugn/platform_specific_information creating-an-ada-spec-for-the-dll-services}@anchor{1de}
  @subsubsection Creating an Ada Spec for the DLL Services
  
  
*************** end API;
*** 24848,24854 ****
  @end quotation
  
  @node Creating an Import Library,,Creating an Ada Spec for the DLL Services,Using DLLs with GNAT
! @anchor{gnat_ugn/platform_specific_information id22}@anchor{1f7}@anchor{gnat_ugn/platform_specific_information creating-an-import-library}@anchor{1f8}
  @subsubsection Creating an Import Library
  
  
--- 23457,23463 ----
  @end quotation
  
  @node Creating an Import Library,,Creating an Ada Spec for the DLL Services,Using DLLs with GNAT
! @anchor{gnat_ugn/platform_specific_information id22}@anchor{1df}@anchor{gnat_ugn/platform_specific_information creating-an-import-library}@anchor{1e0}
  @subsubsection Creating an Import Library
  
  
*************** as in this case it is possible to link d
*** 24862,24868 ****
  DLL. Otherwise read on.
  
  @geindex Definition file
! @anchor{gnat_ugn/platform_specific_information the-definition-file}@anchor{1f3}
  @subsubheading The Definition File
  
  
--- 23471,23477 ----
  DLL. Otherwise read on.
  
  @geindex Definition file
! @anchor{gnat_ugn/platform_specific_information the-definition-file}@anchor{1db}
  @subsubheading The Definition File
  
  
*************** EXPORTS
*** 24910,24926 ****
  @end table
  
  Note that you must specify the correct suffix (@code{@@@emph{nn}})
! (see @ref{1e7,,Windows Calling Conventions}) for a Stdcall
  calling convention function in the exported symbols list.
  
  There can actually be other sections in a definition file, but these
  sections are not relevant to the discussion at hand.
! @anchor{gnat_ugn/platform_specific_information create-def-file-automatically}@anchor{1f9}
  @subsubheading Creating a Definition File Automatically
  
  
  You can automatically create the definition file @code{API.def}
! (see @ref{1f3,,The Definition File}) from a DLL.
  For that use the @code{dlltool} program as follows:
  
  @quotation
--- 23519,23535 ----
  @end table
  
  Note that you must specify the correct suffix (@code{@@@emph{nn}})
! (see @ref{1cf,,Windows Calling Conventions}) for a Stdcall
  calling convention function in the exported symbols list.
  
  There can actually be other sections in a definition file, but these
  sections are not relevant to the discussion at hand.
! @anchor{gnat_ugn/platform_specific_information create-def-file-automatically}@anchor{1e1}
  @subsubheading Creating a Definition File Automatically
  
  
  You can automatically create the definition file @code{API.def}
! (see @ref{1db,,The Definition File}) from a DLL.
  For that use the @code{dlltool} program as follows:
  
  @quotation
*************** $ dlltool API.dll -z API.def --export-al
*** 24930,24936 ****
  @end example
  
  Note that if some routines in the DLL have the @code{Stdcall} convention
! (@ref{1e7,,Windows Calling Conventions}) with stripped @code{@@@emph{nn}}
  suffix then you'll have to edit @code{api.def} to add it, and specify
  @code{-k} to @code{gnatdll} when creating the import library.
  
--- 23539,23545 ----
  @end example
  
  Note that if some routines in the DLL have the @code{Stdcall} convention
! (@ref{1cf,,Windows Calling Conventions}) with stripped @code{@@@emph{nn}}
  suffix then you'll have to edit @code{api.def} to add it, and specify
  @code{-k} to @code{gnatdll} when creating the import library.
  
*************** tells you what symbol is expected. You j
*** 24954,24966 ****
  definition file and add the right suffix.
  @end itemize
  @end quotation
! @anchor{gnat_ugn/platform_specific_information gnat-style-import-library}@anchor{1fa}
  @subsubheading GNAT-Style Import Library
  
  
  To create a static import library from @code{API.dll} with the GNAT tools
  you should create the .def file, then use @code{gnatdll} tool
! (see @ref{1fb,,Using gnatdll}) as follows:
  
  @quotation
  
--- 23563,23575 ----
  definition file and add the right suffix.
  @end itemize
  @end quotation
! @anchor{gnat_ugn/platform_specific_information gnat-style-import-library}@anchor{1e2}
  @subsubheading GNAT-Style Import Library
  
  
  To create a static import library from @code{API.dll} with the GNAT tools
  you should create the .def file, then use @code{gnatdll} tool
! (see @ref{1e3,,Using gnatdll}) as follows:
  
  @quotation
  
*************** definition file name is @code{xyz.def},
*** 24976,24990 ****
  be @code{libxyz.a}. Note that in the previous example option
  @code{-e} could have been removed because the name of the definition
  file (before the @code{.def} suffix) is the same as the name of the
! DLL (@ref{1fb,,Using gnatdll} for more information about @code{gnatdll}).
  @end quotation
! @anchor{gnat_ugn/platform_specific_information msvs-style-import-library}@anchor{1fc}
  @subsubheading Microsoft-Style Import Library
  
  
  A Microsoft import library is needed only if you plan to make an
  Ada DLL available to applications developed with Microsoft
! tools (@ref{1e4,,Mixed-Language Programming on Windows}).
  
  To create a Microsoft-style import library for @code{API.dll} you
  should create the .def file, then build the actual import library using
--- 23585,23599 ----
  be @code{libxyz.a}. Note that in the previous example option
  @code{-e} could have been removed because the name of the definition
  file (before the @code{.def} suffix) is the same as the name of the
! DLL (@ref{1e3,,Using gnatdll} for more information about @code{gnatdll}).
  @end quotation
! @anchor{gnat_ugn/platform_specific_information msvs-style-import-library}@anchor{1e4}
  @subsubheading Microsoft-Style Import Library
  
  
  A Microsoft import library is needed only if you plan to make an
  Ada DLL available to applications developed with Microsoft
! tools (@ref{1cc,,Mixed-Language Programming on Windows}).
  
  To create a Microsoft-style import library for @code{API.dll} you
  should create the .def file, then build the actual import library using
*************** See the Microsoft documentation for furt
*** 25008,25014 ****
  @end quotation
  
  @node Building DLLs with GNAT Project files,Building DLLs with GNAT,Using DLLs with GNAT,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id23}@anchor{1fd}@anchor{gnat_ugn/platform_specific_information building-dlls-with-gnat-project-files}@anchor{1e6}
  @subsubsection Building DLLs with GNAT Project files
  
  
--- 23617,23623 ----
  @end quotation
  
  @node Building DLLs with GNAT Project files,Building DLLs with GNAT,Using DLLs with GNAT,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id23}@anchor{1e5}@anchor{gnat_ugn/platform_specific_information building-dlls-with-gnat-project-files}@anchor{1ce}
  @subsubsection Building DLLs with GNAT Project files
  
  
*************** when inside the @code{DllMain} routine w
*** 25024,25030 ****
  of shared libraries, so it is not possible to have library level tasks in SALs.
  
  @node Building DLLs with GNAT,Building DLLs with gnatdll,Building DLLs with GNAT Project files,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information building-dlls-with-gnat}@anchor{1fe}@anchor{gnat_ugn/platform_specific_information id24}@anchor{1ff}
  @subsubsection Building DLLs with GNAT
  
  
--- 23633,23639 ----
  of shared libraries, so it is not possible to have library level tasks in SALs.
  
  @node Building DLLs with GNAT,Building DLLs with gnatdll,Building DLLs with GNAT Project files,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information building-dlls-with-gnat}@anchor{1e6}@anchor{gnat_ugn/platform_specific_information id24}@anchor{1e7}
  @subsubsection Building DLLs with GNAT
  
  
*************** $ gcc -shared -shared-libgcc -o api.dll
*** 25055,25061 ****
  It is important to note that in this case all symbols found in the
  object files are automatically exported. It is possible to restrict
  the set of symbols to export by passing to @code{gcc} a definition
! file (see @ref{1f3,,The Definition File}).
  For example:
  
  @example
--- 23664,23670 ----
  It is important to note that in this case all symbols found in the
  object files are automatically exported. It is possible to restrict
  the set of symbols to export by passing to @code{gcc} a definition
! file (see @ref{1db,,The Definition File}).
  For example:
  
  @example
*************** $ gnatmake main -Iapilib -bargs -shared
*** 25093,25099 ****
  @end quotation
  
  @node Building DLLs with gnatdll,Ada DLLs and Finalization,Building DLLs with GNAT,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information building-dlls-with-gnatdll}@anchor{200}@anchor{gnat_ugn/platform_specific_information id25}@anchor{201}
  @subsubsection Building DLLs with gnatdll
  
  
--- 23702,23708 ----
  @end quotation
  
  @node Building DLLs with gnatdll,Ada DLLs and Finalization,Building DLLs with GNAT,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information building-dlls-with-gnatdll}@anchor{1e8}@anchor{gnat_ugn/platform_specific_information id25}@anchor{1e9}
  @subsubsection Building DLLs with gnatdll
  
  
*************** $ gnatmake main -Iapilib -bargs -shared
*** 25101,25108 ****
  @geindex building
  
  Note that it is preferred to use GNAT Project files
! (@ref{1e6,,Building DLLs with GNAT Project files}) or the built-in GNAT
! DLL support (@ref{1fe,,Building DLLs with GNAT}) or to build DLLs.
  
  This section explains how to build DLLs containing Ada code using
  @code{gnatdll}. These DLLs will be referred to as Ada DLLs in the
--- 23710,23717 ----
  @geindex building
  
  Note that it is preferred to use GNAT Project files
! (@ref{1ce,,Building DLLs with GNAT Project files}) or the built-in GNAT
! DLL support (@ref{1e6,,Building DLLs with GNAT}) or to build DLLs.
  
  This section explains how to build DLLs containing Ada code using
  @code{gnatdll}. These DLLs will be referred to as Ada DLLs in the
*************** non-Ada applications are as follows:
*** 25118,25137 ****
  You need to mark each Ada entity exported by the DLL with a @code{C} or
  @code{Stdcall} calling convention to avoid any Ada name mangling for the
  entities exported by the DLL
! (see @ref{202,,Exporting Ada Entities}). You can
  skip this step if you plan to use the Ada DLL only from Ada applications.
  
  @item 
  Your Ada code must export an initialization routine which calls the routine
  @code{adainit} generated by @code{gnatbind} to perform the elaboration of
! the Ada code in the DLL (@ref{203,,Ada DLLs and Elaboration}). The initialization
  routine exported by the Ada DLL must be invoked by the clients of the DLL
  to initialize the DLL.
  
  @item 
  When useful, the DLL should also export a finalization routine which calls
  routine @code{adafinal} generated by @code{gnatbind} to perform the
! finalization of the Ada code in the DLL (@ref{204,,Ada DLLs and Finalization}).
  The finalization routine exported by the Ada DLL must be invoked by the
  clients of the DLL when the DLL services are no further needed.
  
--- 23727,23746 ----
  You need to mark each Ada entity exported by the DLL with a @code{C} or
  @code{Stdcall} calling convention to avoid any Ada name mangling for the
  entities exported by the DLL
! (see @ref{1ea,,Exporting Ada Entities}). You can
  skip this step if you plan to use the Ada DLL only from Ada applications.
  
  @item 
  Your Ada code must export an initialization routine which calls the routine
  @code{adainit} generated by @code{gnatbind} to perform the elaboration of
! the Ada code in the DLL (@ref{1eb,,Ada DLLs and Elaboration}). The initialization
  routine exported by the Ada DLL must be invoked by the clients of the DLL
  to initialize the DLL.
  
  @item 
  When useful, the DLL should also export a finalization routine which calls
  routine @code{adafinal} generated by @code{gnatbind} to perform the
! finalization of the Ada code in the DLL (@ref{1ec,,Ada DLLs and Finalization}).
  The finalization routine exported by the Ada DLL must be invoked by the
  clients of the DLL when the DLL services are no further needed.
  
*************** of the programming languages to which yo
*** 25141,25151 ****
  
  @item 
  You must provide a definition file listing the exported entities
! (@ref{1f3,,The Definition File}).
  
  @item 
  Finally you must use @code{gnatdll} to produce the DLL and the import
! library (@ref{1fb,,Using gnatdll}).
  @end itemize
  
  Note that a relocatable DLL stripped using the @code{strip}
--- 23750,23760 ----
  
  @item 
  You must provide a definition file listing the exported entities
! (@ref{1db,,The Definition File}).
  
  @item 
  Finally you must use @code{gnatdll} to produce the DLL and the import
! library (@ref{1e3,,Using gnatdll}).
  @end itemize
  
  Note that a relocatable DLL stripped using the @code{strip}
*************** chapter of the @emph{GPRbuild User's Gui
*** 25165,25171 ****
  @end menu
  
  @node Limitations When Using Ada DLLs from Ada,Exporting Ada Entities,,Building DLLs with gnatdll
! @anchor{gnat_ugn/platform_specific_information limitations-when-using-ada-dlls-from-ada}@anchor{205}
  @subsubsection Limitations When Using Ada DLLs from Ada
  
  
--- 23774,23780 ----
  @end menu
  
  @node Limitations When Using Ada DLLs from Ada,Exporting Ada Entities,,Building DLLs with gnatdll
! @anchor{gnat_ugn/platform_specific_information limitations-when-using-ada-dlls-from-ada}@anchor{1ed}
  @subsubsection Limitations When Using Ada DLLs from Ada
  
  
*************** It is completely safe to exchange plain
*** 25186,25192 ****
  Windows object handles, etc.
  
  @node Exporting Ada Entities,Ada DLLs and Elaboration,Limitations When Using Ada DLLs from Ada,Building DLLs with gnatdll
! @anchor{gnat_ugn/platform_specific_information exporting-ada-entities}@anchor{202}@anchor{gnat_ugn/platform_specific_information id26}@anchor{206}
  @subsubsection Exporting Ada Entities
  
  
--- 23795,23801 ----
  Windows object handles, etc.
  
  @node Exporting Ada Entities,Ada DLLs and Elaboration,Limitations When Using Ada DLLs from Ada,Building DLLs with gnatdll
! @anchor{gnat_ugn/platform_specific_information exporting-ada-entities}@anchor{1ea}@anchor{gnat_ugn/platform_specific_information id26}@anchor{1ee}
  @subsubsection Exporting Ada Entities
  
  
*************** end API;
*** 25286,25295 ****
  Note that if you do not export the Ada entities with a @code{C} or
  @code{Stdcall} convention you will have to provide the mangled Ada names
  in the definition file of the Ada DLL
! (@ref{207,,Creating the Definition File}).
  
  @node Ada DLLs and Elaboration,,Exporting Ada Entities,Building DLLs with gnatdll
! @anchor{gnat_ugn/platform_specific_information ada-dlls-and-elaboration}@anchor{203}@anchor{gnat_ugn/platform_specific_information id27}@anchor{208}
  @subsubsection Ada DLLs and Elaboration
  
  
--- 23895,23904 ----
  Note that if you do not export the Ada entities with a @code{C} or
  @code{Stdcall} convention you will have to provide the mangled Ada names
  in the definition file of the Ada DLL
! (@ref{1ef,,Creating the Definition File}).
  
  @node Ada DLLs and Elaboration,,Exporting Ada Entities,Building DLLs with gnatdll
! @anchor{gnat_ugn/platform_specific_information ada-dlls-and-elaboration}@anchor{1eb}@anchor{gnat_ugn/platform_specific_information id27}@anchor{1f0}
  @subsubsection Ada DLLs and Elaboration
  
  
*************** To achieve this you must export an initi
*** 25304,25313 ****
  (@code{Initialize_API} in the previous example), which must be invoked
  before using any of the DLL services. This elaboration routine must call
  the Ada elaboration routine @code{adainit} generated by the GNAT binder
! (@ref{b4,,Binding with Non-Ada Main Programs}). See the body of
  @code{Initialize_Api} for an example. Note that the GNAT binder is
  automatically invoked during the DLL build process by the @code{gnatdll}
! tool (@ref{1fb,,Using gnatdll}).
  
  When a DLL is loaded, Windows systematically invokes a routine called
  @code{DllMain}. It would therefore be possible to call @code{adainit}
--- 23913,23922 ----
  (@code{Initialize_API} in the previous example), which must be invoked
  before using any of the DLL services. This elaboration routine must call
  the Ada elaboration routine @code{adainit} generated by the GNAT binder
! (@ref{a0,,Binding with Non-Ada Main Programs}). See the body of
  @code{Initialize_Api} for an example. Note that the GNAT binder is
  automatically invoked during the DLL build process by the @code{gnatdll}
! tool (@ref{1e3,,Using gnatdll}).
  
  When a DLL is loaded, Windows systematically invokes a routine called
  @code{DllMain}. It would therefore be possible to call @code{adainit}
*************** time), which means that the GNAT run-tim
*** 25320,25326 ****
  newly created task to complete its initialization.
  
  @node Ada DLLs and Finalization,Creating a Spec for Ada DLLs,Building DLLs with gnatdll,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id28}@anchor{209}@anchor{gnat_ugn/platform_specific_information ada-dlls-and-finalization}@anchor{204}
  @subsubsection Ada DLLs and Finalization
  
  
--- 23929,23935 ----
  newly created task to complete its initialization.
  
  @node Ada DLLs and Finalization,Creating a Spec for Ada DLLs,Building DLLs with gnatdll,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id28}@anchor{1f1}@anchor{gnat_ugn/platform_specific_information ada-dlls-and-finalization}@anchor{1ec}
  @subsubsection Ada DLLs and Finalization
  
  
*************** invoke the DLL finalization routine, if
*** 25331,25344 ****
  routine is in charge of releasing all resources acquired by the DLL. In the
  case of the Ada code contained in the DLL, this is achieved by calling
  routine @code{adafinal} generated by the GNAT binder
! (@ref{b4,,Binding with Non-Ada Main Programs}).
  See the body of @code{Finalize_Api} for an
  example. As already pointed out the GNAT binder is automatically invoked
  during the DLL build process by the @code{gnatdll} tool
! (@ref{1fb,,Using gnatdll}).
  
  @node Creating a Spec for Ada DLLs,GNAT and Windows Resources,Ada DLLs and Finalization,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id29}@anchor{20a}@anchor{gnat_ugn/platform_specific_information creating-a-spec-for-ada-dlls}@anchor{20b}
  @subsubsection Creating a Spec for Ada DLLs
  
  
--- 23940,23953 ----
  routine is in charge of releasing all resources acquired by the DLL. In the
  case of the Ada code contained in the DLL, this is achieved by calling
  routine @code{adafinal} generated by the GNAT binder
! (@ref{a0,,Binding with Non-Ada Main Programs}).
  See the body of @code{Finalize_Api} for an
  example. As already pointed out the GNAT binder is automatically invoked
  during the DLL build process by the @code{gnatdll} tool
! (@ref{1e3,,Using gnatdll}).
  
  @node Creating a Spec for Ada DLLs,GNAT and Windows Resources,Ada DLLs and Finalization,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id29}@anchor{1f2}@anchor{gnat_ugn/platform_specific_information creating-a-spec-for-ada-dlls}@anchor{1f3}
  @subsubsection Creating a Spec for Ada DLLs
  
  
*************** end API;
*** 25396,25402 ****
  @end menu
  
  @node Creating the Definition File,Using gnatdll,,Creating a Spec for Ada DLLs
! @anchor{gnat_ugn/platform_specific_information creating-the-definition-file}@anchor{207}@anchor{gnat_ugn/platform_specific_information id30}@anchor{20c}
  @subsubsection Creating the Definition File
  
  
--- 24005,24011 ----
  @end menu
  
  @node Creating the Definition File,Using gnatdll,,Creating a Spec for Ada DLLs
! @anchor{gnat_ugn/platform_specific_information creating-the-definition-file}@anchor{1ef}@anchor{gnat_ugn/platform_specific_information id30}@anchor{1f4}
  @subsubsection Creating the Definition File
  
  
*************** EXPORTS
*** 25432,25438 ****
  @end quotation
  
  @node Using gnatdll,,Creating the Definition File,Creating a Spec for Ada DLLs
! @anchor{gnat_ugn/platform_specific_information using-gnatdll}@anchor{1fb}@anchor{gnat_ugn/platform_specific_information id31}@anchor{20d}
  @subsubsection Using @code{gnatdll}
  
  
--- 24041,24047 ----
  @end quotation
  
  @node Using gnatdll,,Creating the Definition File,Creating a Spec for Ada DLLs
! @anchor{gnat_ugn/platform_specific_information using-gnatdll}@anchor{1e3}@anchor{gnat_ugn/platform_specific_information id31}@anchor{1f5}
  @subsubsection Using @code{gnatdll}
  
  
*************** Help mode. Displays @code{gnatdll} switc
*** 25530,25536 ****
  
  Direct @code{gnatdll} to search the @code{dir} directory for source and
  object files needed to build the DLL.
! (@ref{89,,Search Paths and the Run-Time Library (RTL)}).
  
  @geindex -k (gnatdll)
  
--- 24139,24145 ----
  
  Direct @code{gnatdll} to search the @code{dir} directory for source and
  object files needed to build the DLL.
! (@ref{73,,Search Paths and the Run-Time Library (RTL)}).
  
  @geindex -k (gnatdll)
  
*************** asks @code{gnatlink} to generate the rou
*** 25643,25649 ****
  is loaded into memory.
  
  @item 
! @code{gnatdll} uses @code{dlltool} (see @ref{20e,,Using dlltool}) to build the
  export table (@code{api.exp}). The export table contains the relocation
  information in a form which can be used during the final link to ensure
  that the Windows loader is able to place the DLL anywhere in memory.
--- 24252,24258 ----
  is loaded into memory.
  
  @item 
! @code{gnatdll} uses @code{dlltool} (see @ref{1f6,,Using dlltool}) to build the
  export table (@code{api.exp}). The export table contains the relocation
  information in a form which can be used during the final link to ensure
  that the Windows loader is able to place the DLL anywhere in memory.
*************** $ gnatbind -n api
*** 25682,25688 ****
  $ gnatlink api api.exp -o api.dll -mdll
  @end example
  @end itemize
! @anchor{gnat_ugn/platform_specific_information using-dlltool}@anchor{20e}
  @subsubheading Using @code{dlltool}
  
  
--- 24291,24297 ----
  $ gnatlink api api.exp -o api.dll -mdll
  @end example
  @end itemize
! @anchor{gnat_ugn/platform_specific_information using-dlltool}@anchor{1f6}
  @subsubheading Using @code{dlltool}
  
  
*************** DLL in the static import library generat
*** 25741,25747 ****
  @item @code{-k}
  
  Kill @code{@@@emph{nn}} from exported names
! (@ref{1e7,,Windows Calling Conventions}
  for a discussion about @code{Stdcall}-style symbols.
  @end table
  
--- 24350,24356 ----
  @item @code{-k}
  
  Kill @code{@@@emph{nn}} from exported names
! (@ref{1cf,,Windows Calling Conventions}
  for a discussion about @code{Stdcall}-style symbols.
  @end table
  
*************** Use @code{assembler-name} as the assembl
*** 25797,25803 ****
  @end table
  
  @node GNAT and Windows Resources,Using GNAT DLLs from Microsoft Visual Studio Applications,Creating a Spec for Ada DLLs,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information gnat-and-windows-resources}@anchor{20f}@anchor{gnat_ugn/platform_specific_information id32}@anchor{210}
  @subsubsection GNAT and Windows Resources
  
  
--- 24406,24412 ----
  @end table
  
  @node GNAT and Windows Resources,Using GNAT DLLs from Microsoft Visual Studio Applications,Creating a Spec for Ada DLLs,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information gnat-and-windows-resources}@anchor{1f7}@anchor{gnat_ugn/platform_specific_information id32}@anchor{1f8}
  @subsubsection GNAT and Windows Resources
  
  
*************** the corresponding Microsoft documentatio
*** 25892,25898 ****
  @end menu
  
  @node Building Resources,Compiling Resources,,GNAT and Windows Resources
! @anchor{gnat_ugn/platform_specific_information building-resources}@anchor{211}@anchor{gnat_ugn/platform_specific_information id33}@anchor{212}
  @subsubsection Building Resources
  
  
--- 24501,24507 ----
  @end menu
  
  @node Building Resources,Compiling Resources,,GNAT and Windows Resources
! @anchor{gnat_ugn/platform_specific_information building-resources}@anchor{1f9}@anchor{gnat_ugn/platform_specific_information id33}@anchor{1fa}
  @subsubsection Building Resources
  
  
*************** complete description of the resource scr
*** 25912,25918 ****
  Microsoft documentation.
  
  @node Compiling Resources,Using Resources,Building Resources,GNAT and Windows Resources
! @anchor{gnat_ugn/platform_specific_information compiling-resources}@anchor{213}@anchor{gnat_ugn/platform_specific_information id34}@anchor{214}
  @subsubsection Compiling Resources
  
  
--- 24521,24527 ----
  Microsoft documentation.
  
  @node Compiling Resources,Using Resources,Building Resources,GNAT and Windows Resources
! @anchor{gnat_ugn/platform_specific_information compiling-resources}@anchor{1fb}@anchor{gnat_ugn/platform_specific_information id34}@anchor{1fc}
  @subsubsection Compiling Resources
  
  
*************** $ windres -i myres.res -o myres.o
*** 25954,25960 ****
  @end quotation
  
  @node Using Resources,,Compiling Resources,GNAT and Windows Resources
! @anchor{gnat_ugn/platform_specific_information using-resources}@anchor{215}@anchor{gnat_ugn/platform_specific_information id35}@anchor{216}
  @subsubsection Using Resources
  
  
--- 24563,24569 ----
  @end quotation
  
  @node Using Resources,,Compiling Resources,GNAT and Windows Resources
! @anchor{gnat_ugn/platform_specific_information using-resources}@anchor{1fd}@anchor{gnat_ugn/platform_specific_information id35}@anchor{1fe}
  @subsubsection Using Resources
  
  
*************** $ gnatmake myprog -largs myres.o
*** 25974,25980 ****
  @end quotation
  
  @node Using GNAT DLLs from Microsoft Visual Studio Applications,Debugging a DLL,GNAT and Windows Resources,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information using-gnat-dll-from-msvs}@anchor{217}@anchor{gnat_ugn/platform_specific_information using-gnat-dlls-from-microsoft-visual-studio-applications}@anchor{218}
  @subsubsection Using GNAT DLLs from Microsoft Visual Studio Applications
  
  
--- 24583,24589 ----
  @end quotation
  
  @node Using GNAT DLLs from Microsoft Visual Studio Applications,Debugging a DLL,GNAT and Windows Resources,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information using-gnat-dll-from-msvs}@anchor{1ff}@anchor{gnat_ugn/platform_specific_information using-gnat-dlls-from-microsoft-visual-studio-applications}@anchor{200}
  @subsubsection Using GNAT DLLs from Microsoft Visual Studio Applications
  
  
*************** $ gprbuild -p mylib.gpr
*** 26008,26014 ****
  @item 
  Produce a .def file for the symbols you need to interface with, either by
  hand or automatically with possibly some manual adjustments
! (see @ref{1f9,,Creating Definition File Automatically}):
  @end enumerate
  
  @quotation
--- 24617,24623 ----
  @item 
  Produce a .def file for the symbols you need to interface with, either by
  hand or automatically with possibly some manual adjustments
! (see @ref{1e1,,Creating Definition File Automatically}):
  @end enumerate
  
  @quotation
*************** $ dlltool libmylib.dll -z libmylib.def -
*** 26025,26031 ****
  Make sure that MSVS command-line tools are accessible on the path.
  
  @item 
! Create the Microsoft-style import library (see @ref{1fc,,MSVS-Style Import Library}):
  @end enumerate
  
  @quotation
--- 24634,24640 ----
  Make sure that MSVS command-line tools are accessible on the path.
  
  @item 
! Create the Microsoft-style import library (see @ref{1e4,,MSVS-Style Import Library}):
  @end enumerate
  
  @quotation
*************** or copy the DLL into into the directory
*** 26067,26073 ****
  @end enumerate
  
  @node Debugging a DLL,Setting Stack Size from gnatlink,Using GNAT DLLs from Microsoft Visual Studio Applications,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id36}@anchor{219}@anchor{gnat_ugn/platform_specific_information debugging-a-dll}@anchor{21a}
  @subsubsection Debugging a DLL
  
  
--- 24676,24682 ----
  @end enumerate
  
  @node Debugging a DLL,Setting Stack Size from gnatlink,Using GNAT DLLs from Microsoft Visual Studio Applications,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id36}@anchor{201}@anchor{gnat_ugn/platform_specific_information debugging-a-dll}@anchor{202}
  @subsubsection Debugging a DLL
  
  
*************** tools suite used to build the DLL.
*** 26105,26111 ****
  @end menu
  
  @node Program and DLL Both Built with GCC/GNAT,Program Built with Foreign Tools and DLL Built with GCC/GNAT,,Debugging a DLL
! @anchor{gnat_ugn/platform_specific_information id37}@anchor{21b}@anchor{gnat_ugn/platform_specific_information program-and-dll-both-built-with-gcc-gnat}@anchor{21c}
  @subsubsection Program and DLL Both Built with GCC/GNAT
  
  
--- 24714,24720 ----
  @end menu
  
  @node Program and DLL Both Built with GCC/GNAT,Program Built with Foreign Tools and DLL Built with GCC/GNAT,,Debugging a DLL
! @anchor{gnat_ugn/platform_specific_information id37}@anchor{203}@anchor{gnat_ugn/platform_specific_information program-and-dll-both-built-with-gcc-gnat}@anchor{204}
  @subsubsection Program and DLL Both Built with GCC/GNAT
  
  
*************** the process. Let's suppose here that the
*** 26115,26121 ****
  @code{ada_main} and that in the DLL there is an entry point named
  @code{ada_dll}.
  
! The DLL (@ref{1f2,,Introduction to Dynamic Link Libraries (DLLs)}) and
  program must have been built with the debugging information (see GNAT -g
  switch). Here are the step-by-step instructions for debugging it:
  
--- 24724,24730 ----
  @code{ada_main} and that in the DLL there is an entry point named
  @code{ada_dll}.
  
! The DLL (@ref{1da,,Introduction to Dynamic Link Libraries (DLLs)}) and
  program must have been built with the debugging information (see GNAT -g
  switch). Here are the step-by-step instructions for debugging it:
  
*************** Set a breakpoint inside the DLL
*** 26152,26161 ****
  
  At this stage a breakpoint is set inside the DLL. From there on
  you can use the standard approach to debug the whole program
! (@ref{24,,Running and Debugging Ada Programs}).
  
  @node Program Built with Foreign Tools and DLL Built with GCC/GNAT,,Program and DLL Both Built with GCC/GNAT,Debugging a DLL
! @anchor{gnat_ugn/platform_specific_information program-built-with-foreign-tools-and-dll-built-with-gcc-gnat}@anchor{21d}@anchor{gnat_ugn/platform_specific_information id38}@anchor{21e}
  @subsubsection Program Built with Foreign Tools and DLL Built with GCC/GNAT
  
  
--- 24761,24770 ----
  
  At this stage a breakpoint is set inside the DLL. From there on
  you can use the standard approach to debug the whole program
! (@ref{14d,,Running and Debugging Ada Programs}).
  
  @node Program Built with Foreign Tools and DLL Built with GCC/GNAT,,Program and DLL Both Built with GCC/GNAT,Debugging a DLL
! @anchor{gnat_ugn/platform_specific_information program-built-with-foreign-tools-and-dll-built-with-gcc-gnat}@anchor{205}@anchor{gnat_ugn/platform_specific_information id38}@anchor{206}
  @subsubsection Program Built with Foreign Tools and DLL Built with GCC/GNAT
  
  
*************** example some C code built with Microsoft
*** 26172,26178 ****
  DLL named @code{test.dll} containing an Ada entry point named
  @code{ada_dll}.
  
! The DLL (see @ref{1f2,,Introduction to Dynamic Link Libraries (DLLs)}) must have
  been built with debugging information (see the GNAT @code{-g} option).
  
  @subsubheading Debugging the DLL Directly
--- 24781,24787 ----
  DLL named @code{test.dll} containing an Ada entry point named
  @code{ada_dll}.
  
! The DLL (see @ref{1da,,Introduction to Dynamic Link Libraries (DLLs)}) must have
  been built with debugging information (see the GNAT @code{-g} option).
  
  @subsubheading Debugging the DLL Directly
*************** Continue the program.
*** 26238,26244 ****
  
  This will run the program until it reaches the breakpoint that has been
  set. From that point you can use the standard way to debug a program
! as described in (@ref{24,,Running and Debugging Ada Programs}).
  @end itemize
  
  It is also possible to debug the DLL by attaching to a running process.
--- 24847,24853 ----
  
  This will run the program until it reaches the breakpoint that has been
  set. From that point you can use the standard way to debug a program
! as described in (@ref{14d,,Running and Debugging Ada Programs}).
  @end itemize
  
  It is also possible to debug the DLL by attaching to a running process.
*************** Continue process execution.
*** 26308,26317 ****
  This last step will resume the process execution, and stop at
  the breakpoint we have set. From there you can use the standard
  approach to debug a program as described in
! @ref{24,,Running and Debugging Ada Programs}.
  
  @node Setting Stack Size from gnatlink,Setting Heap Size from gnatlink,Debugging a DLL,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information setting-stack-size-from-gnatlink}@anchor{136}@anchor{gnat_ugn/platform_specific_information id39}@anchor{21f}
  @subsubsection Setting Stack Size from @code{gnatlink}
  
  
--- 24917,24926 ----
  This last step will resume the process execution, and stop at
  the breakpoint we have set. From there you can use the standard
  approach to debug a program as described in
! @ref{14d,,Running and Debugging Ada Programs}.
  
  @node Setting Stack Size from gnatlink,Setting Heap Size from gnatlink,Debugging a DLL,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information setting-stack-size-from-gnatlink}@anchor{127}@anchor{gnat_ugn/platform_specific_information id39}@anchor{207}
  @subsubsection Setting Stack Size from @code{gnatlink}
  
  
*************** because the comma is a separator for thi
*** 26354,26360 ****
  @end itemize
  
  @node Setting Heap Size from gnatlink,,Setting Stack Size from gnatlink,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information setting-heap-size-from-gnatlink}@anchor{137}@anchor{gnat_ugn/platform_specific_information id40}@anchor{220}
  @subsubsection Setting Heap Size from @code{gnatlink}
  
  
--- 24963,24969 ----
  @end itemize
  
  @node Setting Heap Size from gnatlink,,Setting Stack Size from gnatlink,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information setting-heap-size-from-gnatlink}@anchor{128}@anchor{gnat_ugn/platform_specific_information id40}@anchor{208}
  @subsubsection Setting Heap Size from @code{gnatlink}
  
  
*************** because the comma is a separator for thi
*** 26387,26393 ****
  @end itemize
  
  @node Windows Specific Add-Ons,,Mixed-Language Programming on Windows,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information windows-specific-add-ons}@anchor{221}@anchor{gnat_ugn/platform_specific_information win32-specific-addons}@anchor{222}
  @subsection Windows Specific Add-Ons
  
  
--- 24996,25002 ----
  @end itemize
  
  @node Windows Specific Add-Ons,,Mixed-Language Programming on Windows,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information windows-specific-add-ons}@anchor{209}@anchor{gnat_ugn/platform_specific_information win32-specific-addons}@anchor{20a}
  @subsection Windows Specific Add-Ons
  
  
*************** This section describes the Windows speci
*** 26400,26406 ****
  @end menu
  
  @node Win32Ada,wPOSIX,,Windows Specific Add-Ons
! @anchor{gnat_ugn/platform_specific_information win32ada}@anchor{223}@anchor{gnat_ugn/platform_specific_information id41}@anchor{224}
  @subsubsection Win32Ada
  
  
--- 25009,25015 ----
  @end menu
  
  @node Win32Ada,wPOSIX,,Windows Specific Add-Ons
! @anchor{gnat_ugn/platform_specific_information win32ada}@anchor{20b}@anchor{gnat_ugn/platform_specific_information id41}@anchor{20c}
  @subsubsection Win32Ada
  
  
*************** gprbuild p.gpr
*** 26431,26437 ****
  @end quotation
  
  @node wPOSIX,,Win32Ada,Windows Specific Add-Ons
! @anchor{gnat_ugn/platform_specific_information id42}@anchor{225}@anchor{gnat_ugn/platform_specific_information wposix}@anchor{226}
  @subsubsection wPOSIX
  
  
--- 25040,25046 ----
  @end quotation
  
  @node wPOSIX,,Win32Ada,Windows Specific Add-Ons
! @anchor{gnat_ugn/platform_specific_information id42}@anchor{20d}@anchor{gnat_ugn/platform_specific_information wposix}@anchor{20e}
  @subsubsection wPOSIX
  
  
*************** gprbuild p.gpr
*** 26464,26470 ****
  @end quotation
  
  @node Mac OS Topics,,Microsoft Windows Topics,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information mac-os-topics}@anchor{2d}@anchor{gnat_ugn/platform_specific_information id43}@anchor{227}
  @section Mac OS Topics
  
  
--- 25073,25079 ----
  @end quotation
  
  @node Mac OS Topics,,Microsoft Windows Topics,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information mac-os-topics}@anchor{20f}@anchor{gnat_ugn/platform_specific_information id43}@anchor{210}
  @section Mac OS Topics
  
  
*************** platform.
*** 26479,26485 ****
  @end menu
  
  @node Codesigning the Debugger,,,Mac OS Topics
! @anchor{gnat_ugn/platform_specific_information codesigning-the-debugger}@anchor{228}
  @subsection Codesigning the Debugger
  
  
--- 25088,25094 ----
  @end menu
  
  @node Codesigning the Debugger,,,Mac OS Topics
! @anchor{gnat_ugn/platform_specific_information codesigning-the-debugger}@anchor{211}
  @subsection Codesigning the Debugger
  
  
*************** the location where you installed GNAT.
*** 26560,26566 ****
  in the Unix group @code{_developer}.
  
  @node Example of Binder Output File,Elaboration Order Handling in GNAT,Platform-Specific Information,Top
! @anchor{gnat_ugn/example_of_binder_output example-of-binder-output-file}@anchor{e}@anchor{gnat_ugn/example_of_binder_output doc}@anchor{229}@anchor{gnat_ugn/example_of_binder_output id1}@anchor{22a}
  @chapter Example of Binder Output File
  
  
--- 25169,25175 ----
  in the Unix group @code{_developer}.
  
  @node Example of Binder Output File,Elaboration Order Handling in GNAT,Platform-Specific Information,Top
! @anchor{gnat_ugn/example_of_binder_output example-of-binder-output-file}@anchor{e}@anchor{gnat_ugn/example_of_binder_output doc}@anchor{212}@anchor{gnat_ugn/example_of_binder_output id1}@anchor{213}
  @chapter Example of Binder Output File
  
  
*************** elaboration code in your own application
*** 27312,27318 ****
  @c -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit
  
  @node Elaboration Order Handling in GNAT,Inline Assembler,Example of Binder Output File,Top
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-order-handling-in-gnat}@anchor{f}@anchor{gnat_ugn/elaboration_order_handling_in_gnat doc}@anchor{22b}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id1}@anchor{22c}
  @chapter Elaboration Order Handling in GNAT
  
  
--- 25921,25927 ----
  @c -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit
  
  @node Elaboration Order Handling in GNAT,Inline Assembler,Example of Binder Output File,Top
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-order-handling-in-gnat}@anchor{f}@anchor{gnat_ugn/elaboration_order_handling_in_gnat doc}@anchor{214}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id1}@anchor{215}
  @chapter Elaboration Order Handling in GNAT
  
  
*************** GNAT, either automatically or with expli
*** 27342,27348 ****
  @end menu
  
  @node Elaboration Code,Elaboration Order,,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-code}@anchor{22d}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id2}@anchor{22e}
  @section Elaboration Code
  
  
--- 25951,25957 ----
  @end menu
  
  @node Elaboration Code,Elaboration Order,,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-code}@anchor{216}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id2}@anchor{217}
  @section Elaboration Code
  
  
*************** elaborated.
*** 27490,27496 ****
  @end itemize
  
  @node Elaboration Order,Checking the Elaboration Order,Elaboration Code,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-order}@anchor{22f}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id3}@anchor{230}
  @section Elaboration Order
  
  
--- 26099,26105 ----
  @end itemize
  
  @node Elaboration Order,Checking the Elaboration Order,Elaboration Code,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-order}@anchor{218}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id3}@anchor{219}
  @section Elaboration Order
  
  
*************** however a compiler may not always find s
*** 27659,27665 ****
  respect to control and data flow.
  
  @node Checking the Elaboration Order,Controlling the Elaboration Order in Ada,Elaboration Order,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id4}@anchor{231}@anchor{gnat_ugn/elaboration_order_handling_in_gnat checking-the-elaboration-order}@anchor{232}
  @section Checking the Elaboration Order
  
  
--- 26268,26274 ----
  respect to control and data flow.
  
  @node Checking the Elaboration Order,Controlling the Elaboration Order in Ada,Elaboration Order,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id4}@anchor{21a}@anchor{gnat_ugn/elaboration_order_handling_in_gnat checking-the-elaboration-order}@anchor{21b}
  @section Checking the Elaboration Order
  
  
*************** order.
*** 27720,27726 ****
  @end itemize
  
  @node Controlling the Elaboration Order in Ada,Controlling the Elaboration Order in GNAT,Checking the Elaboration Order,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat controlling-the-elaboration-order-in-ada}@anchor{233}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id5}@anchor{234}
  @section Controlling the Elaboration Order in Ada
  
  
--- 26329,26335 ----
  @end itemize
  
  @node Controlling the Elaboration Order in Ada,Controlling the Elaboration Order in GNAT,Checking the Elaboration Order,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat controlling-the-elaboration-order-in-ada}@anchor{21c}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id5}@anchor{21d}
  @section Controlling the Elaboration Order in Ada
  
  
*************** is that the program continues to stay in
*** 28048,28054 ****
  orders exist) even if maintenance changes the bodies of targets.
  
  @node Controlling the Elaboration Order in GNAT,Mixing Elaboration Models,Controlling the Elaboration Order in Ada,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id6}@anchor{235}@anchor{gnat_ugn/elaboration_order_handling_in_gnat controlling-the-elaboration-order-in-gnat}@anchor{236}
  @section Controlling the Elaboration Order in GNAT
  
  
--- 26657,26663 ----
  orders exist) even if maintenance changes the bodies of targets.
  
  @node Controlling the Elaboration Order in GNAT,Mixing Elaboration Models,Controlling the Elaboration Order in Ada,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id6}@anchor{21e}@anchor{gnat_ugn/elaboration_order_handling_in_gnat controlling-the-elaboration-order-in-gnat}@anchor{21f}
  @section Controlling the Elaboration Order in GNAT
  
  
*************** The dynamic, legacy, and static models c
*** 28178,28184 ****
  may not diagnose certain elaboration issues or install run-time checks.
  
  @node Mixing Elaboration Models,ABE Diagnostics,Controlling the Elaboration Order in GNAT,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat mixing-elaboration-models}@anchor{237}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id7}@anchor{238}
  @section Mixing Elaboration Models
  
  
--- 26787,26793 ----
  may not diagnose certain elaboration issues or install run-time checks.
  
  @node Mixing Elaboration Models,ABE Diagnostics,Controlling the Elaboration Order in GNAT,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat mixing-elaboration-models}@anchor{220}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id7}@anchor{221}
  @section Mixing Elaboration Models
  
  
*************** warning:   "y.ads" which has static elab
*** 28225,28231 ****
  The warnings can be suppressed by binder switch @code{-ws}.
  
  @node ABE Diagnostics,SPARK Diagnostics,Mixing Elaboration Models,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat abe-diagnostics}@anchor{239}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id8}@anchor{23a}
  @section ABE Diagnostics
  
  
--- 26834,26840 ----
  The warnings can be suppressed by binder switch @code{-ws}.
  
  @node ABE Diagnostics,SPARK Diagnostics,Mixing Elaboration Models,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat abe-diagnostics}@anchor{222}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id8}@anchor{223}
  @section ABE Diagnostics
  
  
*************** declaration @code{Safe} because the body
*** 28332,28338 ****
  elaborated at that point.
  
  @node SPARK Diagnostics,Elaboration Circularities,ABE Diagnostics,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat spark-diagnostics}@anchor{23b}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id9}@anchor{23c}
  @section SPARK Diagnostics
  
  
--- 26941,26947 ----
  elaborated at that point.
  
  @node SPARK Diagnostics,Elaboration Circularities,ABE Diagnostics,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat spark-diagnostics}@anchor{224}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id9}@anchor{225}
  @section SPARK Diagnostics
  
  
*************** rules.
*** 28358,28364 ****
  @end quotation
  
  @node Elaboration Circularities,Resolving Elaboration Circularities,SPARK Diagnostics,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id10}@anchor{23d}@anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-circularities}@anchor{23e}
  @section Elaboration Circularities
  
  
--- 26967,26973 ----
  @end quotation
  
  @node Elaboration Circularities,Resolving Elaboration Circularities,SPARK Diagnostics,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id10}@anchor{226}@anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-circularities}@anchor{227}
  @section Elaboration Circularities
  
  
*************** This section enumerates various tactics
*** 28458,28464 ****
  @end itemize
  
  @node Resolving Elaboration Circularities,Elaboration-related Compiler Switches,Elaboration Circularities,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id11}@anchor{23f}@anchor{gnat_ugn/elaboration_order_handling_in_gnat resolving-elaboration-circularities}@anchor{240}
  @section Resolving Elaboration Circularities
  
  
--- 27067,27073 ----
  @end itemize
  
  @node Resolving Elaboration Circularities,Elaboration-related Compiler Switches,Elaboration Circularities,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id11}@anchor{228}@anchor{gnat_ugn/elaboration_order_handling_in_gnat resolving-elaboration-circularities}@anchor{229}
  @section Resolving Elaboration Circularities
  
  
*************** Use the relaxed dynamic-elaboration mode
*** 28729,28735 ****
  @end itemize
  
  @node Elaboration-related Compiler Switches,Summary of Procedures for Elaboration Control,Resolving Elaboration Circularities,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id12}@anchor{241}@anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-related-compiler-switches}@anchor{242}
  @section Elaboration-related Compiler Switches
  
  
--- 27338,27344 ----
  @end itemize
  
  @node Elaboration-related Compiler Switches,Summary of Procedures for Elaboration Control,Resolving Elaboration Circularities,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id12}@anchor{22a}@anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-related-compiler-switches}@anchor{22b}
  @section Elaboration-related Compiler Switches
  
  
*************** checks. The example above will still fai
*** 28910,28916 ****
  @end table
  
  @node Summary of Procedures for Elaboration Control,Inspecting the Chosen Elaboration Order,Elaboration-related Compiler Switches,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id13}@anchor{243}@anchor{gnat_ugn/elaboration_order_handling_in_gnat summary-of-procedures-for-elaboration-control}@anchor{244}
  @section Summary of Procedures for Elaboration Control
  
  
--- 27519,27525 ----
  @end table
  
  @node Summary of Procedures for Elaboration Control,Inspecting the Chosen Elaboration Order,Elaboration-related Compiler Switches,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id13}@anchor{22c}@anchor{gnat_ugn/elaboration_order_handling_in_gnat summary-of-procedures-for-elaboration-control}@anchor{22d}
  @section Summary of Procedures for Elaboration Control
  
  
*************** Use the relaxed dynamic elaboration mode
*** 28968,28974 ****
  @end itemize
  
  @node Inspecting the Chosen Elaboration Order,,Summary of Procedures for Elaboration Control,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id14}@anchor{245}@anchor{gnat_ugn/elaboration_order_handling_in_gnat inspecting-the-chosen-elaboration-order}@anchor{246}
  @section Inspecting the Chosen Elaboration Order
  
  
--- 27577,27583 ----
  @end itemize
  
  @node Inspecting the Chosen Elaboration Order,,Summary of Procedures for Elaboration Control,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id14}@anchor{22e}@anchor{gnat_ugn/elaboration_order_handling_in_gnat inspecting-the-chosen-elaboration-order}@anchor{22f}
  @section Inspecting the Chosen Elaboration Order
  
  
*************** gdbstr (body)
*** 29111,29117 ****
  @end quotation
  
  @node Inline Assembler,GNU Free Documentation License,Elaboration Order Handling in GNAT,Top
! @anchor{gnat_ugn/inline_assembler inline-assembler}@anchor{10}@anchor{gnat_ugn/inline_assembler doc}@anchor{247}@anchor{gnat_ugn/inline_assembler id1}@anchor{248}
  @chapter Inline Assembler
  
  
--- 27720,27726 ----
  @end quotation
  
  @node Inline Assembler,GNU Free Documentation License,Elaboration Order Handling in GNAT,Top
! @anchor{gnat_ugn/inline_assembler inline-assembler}@anchor{10}@anchor{gnat_ugn/inline_assembler doc}@anchor{230}@anchor{gnat_ugn/inline_assembler id1}@anchor{231}
  @chapter Inline Assembler
  
  
*************** and with assembly language programming.
*** 29170,29176 ****
  @end menu
  
  @node Basic Assembler Syntax,A Simple Example of Inline Assembler,,Inline Assembler
! @anchor{gnat_ugn/inline_assembler id2}@anchor{249}@anchor{gnat_ugn/inline_assembler basic-assembler-syntax}@anchor{24a}
  @section Basic Assembler Syntax
  
  
--- 27779,27785 ----
  @end menu
  
  @node Basic Assembler Syntax,A Simple Example of Inline Assembler,,Inline Assembler
! @anchor{gnat_ugn/inline_assembler id2}@anchor{232}@anchor{gnat_ugn/inline_assembler basic-assembler-syntax}@anchor{233}
  @section Basic Assembler Syntax
  
  
*************** Intel: Destination first; for example @c
*** 29286,29292 ****
  
  
  @node A Simple Example of Inline Assembler,Output Variables in Inline Assembler,Basic Assembler Syntax,Inline Assembler
! @anchor{gnat_ugn/inline_assembler a-simple-example-of-inline-assembler}@anchor{24b}@anchor{gnat_ugn/inline_assembler id3}@anchor{24c}
  @section A Simple Example of Inline Assembler
  
  
--- 27895,27901 ----
  
  
  @node A Simple Example of Inline Assembler,Output Variables in Inline Assembler,Basic Assembler Syntax,Inline Assembler
! @anchor{gnat_ugn/inline_assembler a-simple-example-of-inline-assembler}@anchor{234}@anchor{gnat_ugn/inline_assembler id3}@anchor{235}
  @section A Simple Example of Inline Assembler
  
  
*************** If there are no errors, @code{as} will g
*** 29435,29441 ****
  @code{nothing.out}.
  
  @node Output Variables in Inline Assembler,Input Variables in Inline Assembler,A Simple Example of Inline Assembler,Inline Assembler
! @anchor{gnat_ugn/inline_assembler id4}@anchor{24d}@anchor{gnat_ugn/inline_assembler output-variables-in-inline-assembler}@anchor{24e}
  @section Output Variables in Inline Assembler
  
  
--- 28044,28050 ----
  @code{nothing.out}.
  
  @node Output Variables in Inline Assembler,Input Variables in Inline Assembler,A Simple Example of Inline Assembler,Inline Assembler
! @anchor{gnat_ugn/inline_assembler id4}@anchor{236}@anchor{gnat_ugn/inline_assembler output-variables-in-inline-assembler}@anchor{237}
  @section Output Variables in Inline Assembler
  
  
*************** end Get_Flags_3;
*** 29802,29808 ****
  @end quotation
  
  @node Input Variables in Inline Assembler,Inlining Inline Assembler Code,Output Variables in Inline Assembler,Inline Assembler
! @anchor{gnat_ugn/inline_assembler id5}@anchor{24f}@anchor{gnat_ugn/inline_assembler input-variables-in-inline-assembler}@anchor{250}
  @section Input Variables in Inline Assembler
  
  
--- 28411,28417 ----
  @end quotation
  
  @node Input Variables in Inline Assembler,Inlining Inline Assembler Code,Output Variables in Inline Assembler,Inline Assembler
! @anchor{gnat_ugn/inline_assembler id5}@anchor{238}@anchor{gnat_ugn/inline_assembler input-variables-in-inline-assembler}@anchor{239}
  @section Input Variables in Inline Assembler
  
  
*************** _increment__incr.1:
*** 29891,29897 ****
  @end quotation
  
  @node Inlining Inline Assembler Code,Other Asm Functionality,Input Variables in Inline Assembler,Inline Assembler
! @anchor{gnat_ugn/inline_assembler id6}@anchor{251}@anchor{gnat_ugn/inline_assembler inlining-inline-assembler-code}@anchor{252}
  @section Inlining Inline Assembler Code
  
  
--- 28500,28506 ----
  @end quotation
  
  @node Inlining Inline Assembler Code,Other Asm Functionality,Input Variables in Inline Assembler,Inline Assembler
! @anchor{gnat_ugn/inline_assembler id6}@anchor{23a}@anchor{gnat_ugn/inline_assembler inlining-inline-assembler-code}@anchor{23b}
  @section Inlining Inline Assembler Code
  
  
*************** movl %esi,%eax
*** 29962,29968 ****
  thus saving the overhead of stack frame setup and an out-of-line call.
  
  @node Other Asm Functionality,,Inlining Inline Assembler Code,Inline Assembler
! @anchor{gnat_ugn/inline_assembler other-asm-functionality}@anchor{253}@anchor{gnat_ugn/inline_assembler id7}@anchor{254}
  @section Other @code{Asm} Functionality
  
  
--- 28571,28577 ----
  thus saving the overhead of stack frame setup and an out-of-line call.
  
  @node Other Asm Functionality,,Inlining Inline Assembler Code,Inline Assembler
! @anchor{gnat_ugn/inline_assembler other-asm-functionality}@anchor{23c}@anchor{gnat_ugn/inline_assembler id7}@anchor{23d}
  @section Other @code{Asm} Functionality
  
  
*************** and @code{Volatile}, which inhibits unwa
*** 29977,29983 ****
  @end menu
  
  @node The Clobber Parameter,The Volatile Parameter,,Other Asm Functionality
! @anchor{gnat_ugn/inline_assembler the-clobber-parameter}@anchor{255}@anchor{gnat_ugn/inline_assembler id8}@anchor{256}
  @subsection The @code{Clobber} Parameter
  
  
--- 28586,28592 ----
  @end menu
  
  @node The Clobber Parameter,The Volatile Parameter,,Other Asm Functionality
! @anchor{gnat_ugn/inline_assembler the-clobber-parameter}@anchor{23e}@anchor{gnat_ugn/inline_assembler id8}@anchor{23f}
  @subsection The @code{Clobber} Parameter
  
  
*************** Use 'register' name @code{memory} if you
*** 30041,30047 ****
  @end itemize
  
  @node The Volatile Parameter,,The Clobber Parameter,Other Asm Functionality
! @anchor{gnat_ugn/inline_assembler the-volatile-parameter}@anchor{257}@anchor{gnat_ugn/inline_assembler id9}@anchor{258}
  @subsection The @code{Volatile} Parameter
  
  
--- 28650,28656 ----
  @end itemize
  
  @node The Volatile Parameter,,The Clobber Parameter,Other Asm Functionality
! @anchor{gnat_ugn/inline_assembler the-volatile-parameter}@anchor{240}@anchor{gnat_ugn/inline_assembler id9}@anchor{241}
  @subsection The @code{Volatile} Parameter
  
  
*************** to @code{True} only if the compiler's op
*** 30077,30083 ****
  problems.
  
  @node GNU Free Documentation License,Index,Inline Assembler,Top
! @anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license doc}@anchor{259}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{25a}
  @chapter GNU Free Documentation License
  
  
--- 28686,28692 ----
  problems.
  
  @node GNU Free Documentation License,Index,Inline Assembler,Top
! @anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license doc}@anchor{242}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{243}
  @chapter GNU Free Documentation License
  
  
*************** to permit their use in free software.
*** 30565,30572 ****
  
  @printindex ge
  
- @anchor{de}@w{                              }
  @anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{                              }
  
  @c %**end of body
  @bye
--- 29174,29181 ----
  
  @printindex ge
  
  @anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{                              }
+ @anchor{cf}@w{                              }
  
  @c %**end of body
  @bye
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatbind.adb gcc-11.1.0/gcc/ada/gnatbind.adb
*** gcc-10.3.0/gcc/ada/gnatbind.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatbind.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** procedure Gnatbind is
*** 221,226 ****
--- 221,229 ----
           No_Use_Of_Pragma                => False,
           --  Requires a parameter value, not a count
  
+          SPARK_05                        => False,
+          --  Obsolete restriction
+ 
           others                          => True);
  
        Additional_Restrictions_Listed : Boolean := False;
*************** procedure Gnatbind is
*** 235,242 ****
        ------------------------------
  
        function Restriction_Could_Be_Set (R : Restriction_Id) return Boolean is
!          CR : Restrictions_Info renames Cumulative_Restrictions;
! 
        begin
           case R is
  
--- 238,245 ----
        ------------------------------
  
        function Restriction_Could_Be_Set (R : Restriction_Id) return Boolean is
!          CR     : Restrictions_Info renames Cumulative_Restrictions;
!          Result : Boolean;
        begin
           case R is
  
*************** procedure Gnatbind is
*** 244,254 ****
  
              when All_Boolean_Restrictions =>
  
!                --  The condition for listing a boolean restriction as an
!                --  additional restriction that could be set is that it is
!                --  not violated by any unit, and not already set.
  
!                return CR.Violated (R) = False and then CR.Set (R) = False;
  
              --  Parameter restriction
  
--- 247,265 ----
  
              when All_Boolean_Restrictions =>
  
!                --  Print it if not violated by any unit, and not already set...
  
!                Result := not CR.Violated (R) and then not CR.Set (R);
! 
!                --  ...except that for No_Tasks_Unassigned_To_CPU, we don't want
!                --  to print it if it would violate the restriction post
!                --  compilation.
! 
!                if R = No_Tasks_Unassigned_To_CPU
!                  and then ALIs.Table (ALIs.First).Main_CPU = No_Main_CPU
!                then
!                   Result := False;
!                end if;
  
              --  Parameter restriction
  
*************** procedure Gnatbind is
*** 258,275 ****
                 --  unknown, the restriction can definitely not be listed.
  
                 if CR.Violated (R) and then CR.Unknown (R) then
!                   return False;
  
                 --  We can list the restriction if it is not set
  
                 elsif not CR.Set (R) then
!                   return True;
  
                 --  We can list the restriction if is set to a greater value
                 --  than the maximum value known for the violation.
  
                 else
!                   return CR.Value (R) > CR.Count (R);
                 end if;
  
              --  No other values for R possible
--- 269,286 ----
                 --  unknown, the restriction can definitely not be listed.
  
                 if CR.Violated (R) and then CR.Unknown (R) then
!                   Result := False;
  
                 --  We can list the restriction if it is not set
  
                 elsif not CR.Set (R) then
!                   Result := True;
  
                 --  We can list the restriction if is set to a greater value
                 --  than the maximum value known for the violation.
  
                 else
!                   Result := CR.Value (R) > CR.Count (R);
                 end if;
  
              --  No other values for R possible
*************** procedure Gnatbind is
*** 277,282 ****
--- 288,295 ----
              when others =>
                 raise Program_Error;
           end case;
+ 
+          return Result;
        end Restriction_Could_Be_Set;
  
     --  Start of processing for List_Applicable_Restrictions
*************** procedure Gnatbind is
*** 496,501 ****
--- 509,519 ----
              Opt.Bind_Alternate_Main_Name := True;
              Opt.Alternate_Main_Name := new String'(Argv (3 .. Argv'Last));
  
+          --  -xdr
+ 
+          elsif Argv (2 .. Argv'Last) = "xdr" then
+             Opt.XDR_Stream := True;
+ 
           --  All other options are single character and are handled by
           --  Scan_Binder_Switches.
  
*************** begin
*** 873,878 ****
--- 891,907 ----
        --  mode where we want to be more flexible.
  
        if not CodePeer_Mode then
+          --  AI12-0117-1, "Restriction No_Tasks_Unassigned_To_CPU":
+          --  If the restriction No_Tasks_Unassigned_To_CPU applies, then
+          --  check that the main subprogram has a CPU assigned.
+ 
+          if Cumulative_Restrictions.Set (No_Tasks_Unassigned_To_CPU)
+            and then ALIs.Table (ALIs.First).Main_CPU = No_Main_CPU
+          then
+             Error_Msg ("No_Tasks_Unassigned_To_CPU restriction requires CPU" &
+                          " aspect to be specified for main procedure");
+          end if;
+ 
           Check_Duplicated_Subunits;
           Check_Versions;
           Check_Consistency;
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatbind.ads gcc-11.1.0/gcc/ada/gnatbind.ads
*** gcc-10.3.0/gcc/ada/gnatbind.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatbind.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatchop.adb gcc-11.1.0/gcc/ada/gnatchop.adb
*** gcc-10.3.0/gcc/ada/gnatchop.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatchop.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatclean.adb gcc-11.1.0/gcc/ada/gnatclean.adb
*** gcc-10.3.0/gcc/ada/gnatclean.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatclean.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatcmd.adb gcc-11.1.0/gcc/ada/gnatcmd.adb
*** gcc-10.3.0/gcc/ada/gnatcmd.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatcmd.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatcmd.ads gcc-11.1.0/gcc/ada/gnatcmd.ads
*** gcc-10.3.0/gcc/ada/gnatcmd.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatcmd.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatdll.adb gcc-11.1.0/gcc/ada/gnatdll.adb
*** gcc-10.3.0/gcc/ada/gnatdll.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatdll.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatfind.adb gcc-11.1.0/gcc/ada/gnatfind.adb
*** gcc-10.3.0/gcc/ada/gnatfind.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatfind.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatkr.adb gcc-11.1.0/gcc/ada/gnatkr.adb
*** gcc-10.3.0/gcc/ada/gnatkr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatkr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatkr.ads gcc-11.1.0/gcc/ada/gnatkr.ads
*** gcc-10.3.0/gcc/ada/gnatkr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatkr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatlink.adb gcc-11.1.0/gcc/ada/gnatlink.adb
*** gcc-10.3.0/gcc/ada/gnatlink.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatlink.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatlink.ads gcc-11.1.0/gcc/ada/gnatlink.ads
*** gcc-10.3.0/gcc/ada/gnatlink.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatlink.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatls.adb gcc-11.1.0/gcc/ada/gnatls.adb
*** gcc-10.3.0/gcc/ada/gnatls.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatls.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatls.ads gcc-11.1.0/gcc/ada/gnatls.ads
*** gcc-10.3.0/gcc/ada/gnatls.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatls.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                S p e c                                   --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                S p e c                                   --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatmake.adb gcc-11.1.0/gcc/ada/gnatmake.adb
*** gcc-10.3.0/gcc/ada/gnatmake.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatmake.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatmake.ads gcc-11.1.0/gcc/ada/gnatmake.ads
*** gcc-10.3.0/gcc/ada/gnatmake.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatmake.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatname.adb gcc-11.1.0/gcc/ada/gnatname.adb
*** gcc-10.3.0/gcc/ada/gnatname.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatname.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** procedure Gnatname is
*** 681,686 ****
--- 681,688 ----
                                               Sources.Last
                                loop
                                   Current_Source := Sources.Table (Index);
+                                  pragma Annotate
+                                    (CodePeer, Modified, Current_Source);
  
                                   if Opt.Verbose_Mode then
                                      if Current_Source.Spec then
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatname.ads gcc-11.1.0/gcc/ada/gnatname.ads
*** gcc-10.3.0/gcc/ada/gnatname.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatname.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatprep.adb gcc-11.1.0/gcc/ada/gnatprep.adb
*** gcc-10.3.0/gcc/ada/gnatprep.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatprep.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatprep.ads gcc-11.1.0/gcc/ada/gnatprep.ads
*** gcc-10.3.0/gcc/ada/gnatprep.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatprep.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatvsn.adb gcc-11.1.0/gcc/ada/gnatvsn.adb
*** gcc-10.3.0/gcc/ada/gnatvsn.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatvsn.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatvsn.ads gcc-11.1.0/gcc/ada/gnatvsn.ads
*** gcc-10.3.0/gcc/ada/gnatvsn.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatvsn.ads	Tue Apr 27 10:00:12 2021
***************
*** 13,28 ****
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 13,22 ----
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Gnatvsn is
*** 38,51 ****
     --  Static string identifying this version, that can be used as an argument
     --  to e.g. pragma Ident.
  
!    Library_Version : constant String := "10";
     --  Library version. It needs to be updated whenever the major version
     --  number is changed.
     --
     --  Note: Makefile.in uses the library version string to construct the
     --  soname value.
  
!    Current_Year : constant String := "2020";
     --  Used in printing copyright messages
  
     Verbose_Library_Version : constant String := "GNAT Lib v" & Library_Version;
--- 32,45 ----
     --  Static string identifying this version, that can be used as an argument
     --  to e.g. pragma Ident.
  
!    Library_Version : constant String := "11";
     --  Library version. It needs to be updated whenever the major version
     --  number is changed.
     --
     --  Note: Makefile.in uses the library version string to construct the
     --  soname value.
  
!    Current_Year : constant String := "2021";
     --  Used in printing copyright messages
  
     Verbose_Library_Version : constant String := "GNAT Lib v" & Library_Version;
diff -Nrcpad gcc-10.3.0/gcc/ada/gnatxref.adb gcc-11.1.0/gcc/ada/gnatxref.adb
*** gcc-10.3.0/gcc/ada/gnatxref.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gnatxref.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gprep.adb gcc-11.1.0/gcc/ada/gprep.adb
*** gcc-10.3.0/gcc/ada/gprep.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gprep.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gprep.ads gcc-11.1.0/gcc/ada/gprep.ads
*** gcc-10.3.0/gcc/ada/gprep.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gprep.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/gsocket.h gcc-11.1.0/gcc/ada/gsocket.h
*** gcc-10.3.0/gcc/ada/gsocket.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/gsocket.h	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *         Copyright (C) 2004-2019, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *         Copyright (C) 2004-2020, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 80,85 ****
--- 80,91 ----
  #define FD_SETSIZE 1024
  
  #ifdef __MINGW32__
+ /* winsock2.h allows WSAPoll related definitions only when
+  * _WIN32_WINNT >= 0x0600 */
+ #if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600
+ #define _WIN32_WINNT 0x0600
+ #endif
+ 
  #include <winsock2.h>
  #include <ws2tcpip.h>
  #include <versionhelpers.h>
diff -Nrcpad gcc-10.3.0/gcc/ada/hostparm.ads gcc-11.1.0/gcc/ada/hostparm.ads
*** gcc-10.3.0/gcc/ada/hostparm.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/hostparm.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/impunit.adb gcc-11.1.0/gcc/ada/impunit.adb
*** gcc-10.3.0/gcc/ada/impunit.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/impunit.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2000-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2000-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Impunit is
*** 146,151 ****
--- 146,153 ----
      ("a-llfwti", T),  -- Ada.Long_Long_Float_Wide_Text_IO
      ("a-llitio", T),  -- Ada.Long_Long_Integer_Text_IO
      ("a-lliwti", F),  -- Ada.Long_Long_Integer_Wide_Text_IO
+     ("a-llltio", T),  -- Ada.Long_Long_Long_Integer_Text_IO
+     ("a-lllwti", F),  -- Ada.Long_Long_Long_Integer_Wide_Text_IO
      ("a-nlcefu", F),  -- Ada.Long_Complex_Elementary_Functions
      ("a-nlcoty", T),  -- Ada.Numerics.Long_Complex_Types
      ("a-nlelfu", T),  -- Ada.Numerics.Long_Elementary_Functions
*************** package body Impunit is
*** 181,186 ****
--- 183,189 ----
      ("a-ssicst", F),  -- Ada.Streams.Stream_IO.C_Streams
      ("a-suteio", F),  -- Ada.Strings.Unbounded.Text_IO
      ("a-swuwti", F),  -- Ada.Strings.Wide_Unbounded.Wide_Text_IO
+     ("a-tasini", F),  -- Ada.Task_Initialization
      ("a-tiocst", F),  -- Ada.Text_IO.C_Streams
      ("a-wtcstr", F),  -- Ada.Wide_Text_IO.C_Streams
  
*************** package body Impunit is
*** 218,224 ****
      ("a-tifiio", F),  -- Ada.Text_IO.Fixed_IO
      ("a-tiflio", F),  -- Ada.Text_IO.Float_IO
      ("a-tiinio", F),  -- Ada.Text_IO.Integer_IO
-     ("a-tiinio", F),  -- Ada.Text_IO.Integer_IO
      ("a-timoio", F),  -- Ada.Text_IO.Modular_IO
      ("a-wtdeio", F),  -- Ada.Wide_Text_IO.Decimal_IO
      ("a-wtenio", F),  -- Ada.Wide_Text_IO.Enumeration_IO
--- 221,226 ----
*************** package body Impunit is
*** 308,313 ****
--- 310,316 ----
      ("g-sha512", F),  -- GNAT.SHA512
      ("g-signal", F),  -- GNAT.Signals
      ("g-socket", F),  -- GNAT.Sockets
+     ("g-socpol", F),  -- GNAT.Sockets.Poll
      ("g-souinf", F),  -- GNAT.Source_Info
      ("g-speche", F),  -- GNAT.Spell_Checker
      ("g-spchge", F),  -- GNAT.Spell_Checker_Generic
*************** package body Impunit is
*** 502,507 ****
--- 505,511 ----
      ("a-llctio", T),  -- Ada.Long_Long_Complex_Text_IO
      ("a-llfzti", T),  -- Ada.Long_Long_Float_Wide_Wide_Text_IO
      ("a-llizti", T),  -- Ada.Long_Long_Integer_Wide_Wide_Text_IO
+     ("a-lllzti", T),  -- Ada.Long_Long_Long_Integer_Wide_Wide_Text_IO
      ("a-nlcoar", T),  -- Ada.Numerics.Long_Complex_Arrays
      ("a-nllcar", T),  -- Ada.Numerics.Long_Long_Complex_Arrays
      ("a-nllrar", T),  -- Ada.Numerics.Long_Long_Real_Arrays
*************** package body Impunit is
*** 620,633 ****
     --  The following units should be used only in Ada 202X mode
  
     Non_Imp_File_Names_2X : constant File_List := (
-     ("a-stteou", T),  -- Ada.Strings.Text_Output
      ("a-nubinu", T),  -- Ada.Numerics.Big_Numbers
      ("a-nbnbin", T),  -- Ada.Numerics.Big_Numbers.Big_Integers
      ("a-nbnbre", T),  -- Ada.Numerics.Big_Numbers.Big_Reals
      ("s-aotase", T),  -- System.Atomic_Operations.Test_And_Set
      ("s-atoope", T),  -- System.Atomic_Operations
!     ("s-atopar", T),  -- System.Atomic_Operations.Arithmetic
!     ("s-atopex", T)); -- System.Atomic_Operations.Exchange
  
     -----------------------
     -- Alternative Units --
--- 624,648 ----
     --  The following units should be used only in Ada 202X mode
  
     Non_Imp_File_Names_2X : constant File_List := (
      ("a-nubinu", T),  -- Ada.Numerics.Big_Numbers
      ("a-nbnbin", T),  -- Ada.Numerics.Big_Numbers.Big_Integers
      ("a-nbnbre", T),  -- Ada.Numerics.Big_Numbers.Big_Reals
+     ("s-aoinar", T),  -- System.Atomic_Operations.Integer_Arithmetic
+     ("s-aomoar", T),  -- System.Atomic_Operations.Modular_Arithmetic
      ("s-aotase", T),  -- System.Atomic_Operations.Test_And_Set
      ("s-atoope", T),  -- System.Atomic_Operations
!     ("s-atopex", T),  -- System.Atomic_Operations.Exchange
!     ("a-stteou", T),  -- Ada.Strings.Text_Output
!     ("a-stouut", T),  -- Ada.Strings.Text_Output.Utils
!     ("a-stoubu", T),  -- Ada.Strings.Text_Output.Buffers
!     ("a-stoufi", T),  -- Ada.Strings.Text_Output.Files
!     ("a-stobfi", T),  -- Ada.Strings.Text_Output.Basic_Files
!     ("a-stobbu", T),  -- Ada.Strings.Text_Output.Bit_Buckets
!     ("a-stoufo", T),  -- Ada.Strings.Text_Output.Formatting
!     ("a-strsto", T),  -- Ada.Streams.Storage
!     ("a-ststbo", T),  -- Ada.Streams.Storage.Bounded
!     ("a-ststun", T)   -- Ada.Streams.Storage.Unbounded
!    );
  
     -----------------------
     -- Alternative Units --
*************** package body Impunit is
*** 676,682 ****
     function Get_Kind_Of_File (File : String) return Kind_Of_Unit is
        pragma Assert (File'First = 1);
  
!       Buffer : String (1 .. 8);
  
     begin
        Error_Msg_Strlen := 0;
--- 691,697 ----
     function Get_Kind_Of_File (File : String) return Kind_Of_Unit is
        pragma Assert (File'First = 1);
  
!       Buffer : String (1 .. 9);
  
     begin
        Error_Msg_Strlen := 0;
*************** package body Impunit is
*** 690,702 ****
           return Ada_95_Unit;
        end if;
  
-       --  If length of file name is greater than 12, not predefined. The value
-       --  12 here is an 8 char name with extension .ads.
- 
-       if File'Length > 12 then
-          return Not_Predefined_Unit;
-       end if;
- 
        --  Not predefined if file name does not start with a- g- s- i-
  
        if File'Length < 3
--- 705,710 ----
*************** package body Impunit is
*** 710,715 ****
--- 718,733 ----
           return Not_Predefined_Unit;
        end if;
  
+       --  If length of file name is greater than 12, not predefined. The value
+       --  12 here is an 8 char name with extension .ads. The exception of 13 is
+       --  for the implementation units of the 128-bit types under System.
+ 
+       if File'Length > 12
+         and then not (File'Length = 13 and then File (1) = 's')
+       then
+          return Not_Predefined_Unit;
+       end if;
+ 
        --  Not predefined if file name does not end in .ads. This can happen
        --  when non-standard file names are being used.
  
*************** package body Impunit is
*** 728,734 ****
        --  See if name is in 95 list
  
        for J in Non_Imp_File_Names_95'Range loop
!          if Buffer = Non_Imp_File_Names_95 (J).Fname then
              return Ada_95_Unit;
           end if;
        end loop;
--- 746,752 ----
        --  See if name is in 95 list
  
        for J in Non_Imp_File_Names_95'Range loop
!          if Buffer (1 .. 8) = Non_Imp_File_Names_95 (J).Fname then
              return Ada_95_Unit;
           end if;
        end loop;
*************** package body Impunit is
*** 736,742 ****
        --  See if name is in 2005 list
  
        for J in Non_Imp_File_Names_05'Range loop
!          if Buffer = Non_Imp_File_Names_05 (J).Fname then
              return Ada_2005_Unit;
           end if;
        end loop;
--- 754,760 ----
        --  See if name is in 2005 list
  
        for J in Non_Imp_File_Names_05'Range loop
!          if Buffer (1 .. 8) = Non_Imp_File_Names_05 (J).Fname then
              return Ada_2005_Unit;
           end if;
        end loop;
*************** package body Impunit is
*** 744,750 ****
        --  See if name is in 2012 list
  
        for J in Non_Imp_File_Names_12'Range loop
!          if Buffer = Non_Imp_File_Names_12 (J).Fname then
              return Ada_2012_Unit;
           end if;
        end loop;
--- 762,768 ----
        --  See if name is in 2012 list
  
        for J in Non_Imp_File_Names_12'Range loop
!          if Buffer (1 .. 8) = Non_Imp_File_Names_12 (J).Fname then
              return Ada_2012_Unit;
           end if;
        end loop;
*************** package body Impunit is
*** 752,758 ****
        --  See if name is in 202X list
  
        for J in Non_Imp_File_Names_2X'Range loop
!          if Buffer = Non_Imp_File_Names_2X (J).Fname then
              return Ada_202X_Unit;
           end if;
        end loop;
--- 770,776 ----
        --  See if name is in 202X list
  
        for J in Non_Imp_File_Names_2X'Range loop
!          if Buffer (1 .. 8) = Non_Imp_File_Names_2X (J).Fname then
              return Ada_202X_Unit;
           end if;
        end loop;
*************** package body Impunit is
*** 916,928 ****
           return True;
        end if;
  
-       --  If length of file name is greater than 12, then it's a user unit
-       --  and not a GNAT implementation defined unit.
- 
-       if Name_Len > 12 then
-          return True;
-       end if;
- 
        --  Implementation defined if unit in the gnat hierarchy
  
        if (Name_Len = 8 and then Name_Buffer (1 .. 8) = "gnat.ads")
--- 934,939 ----
*************** package body Impunit is
*** 944,949 ****
--- 955,970 ----
           return True;
        end if;
  
+       --  If length of file name is greater than 12, not predefined. The value
+       --  12 here is an 8 char name with extension .ads. The exception of 13 is
+       --  for the implementation units of the 128-bit types under System.
+ 
+       if Name_Len > 12
+         and then not (Name_Len = 13 and then Name_Buffer (1) = 's')
+       then
+          return True;
+       end if;
+ 
        --  Not impl-defined if file name does not end in .ads. This can happen
        --  when non-standard file names are being used.
  
*************** package body Impunit is
*** 978,984 ****
  
        for J in Non_Imp_File_Names_12'Range loop
           if Name_Buffer (1 .. 8) = Non_Imp_File_Names_12 (J).Fname then
!             return Non_Imp_File_Names_95 (J).RMdef
                and then Ada_Version >= Ada_2012;
           end if;
        end loop;
--- 999,1005 ----
  
        for J in Non_Imp_File_Names_12'Range loop
           if Name_Buffer (1 .. 8) = Non_Imp_File_Names_12 (J).Fname then
!             return Non_Imp_File_Names_12 (J).RMdef
                and then Ada_Version >= Ada_2012;
           end if;
        end loop;
diff -Nrcpad gcc-10.3.0/gcc/ada/impunit.ads gcc-11.1.0/gcc/ada/impunit.ads
*** gcc-10.3.0/gcc/ada/impunit.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/impunit.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/indepsw-aix.adb gcc-11.1.0/gcc/ada/indepsw-aix.adb
*** gcc-10.3.0/gcc/ada/indepsw-aix.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/indepsw-aix.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,29 ****
  --                                 B o d y                                  --
  --                              (AIX version)                               --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 7,23 ----
  --                                 B o d y                                  --
  --                              (AIX version)                               --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/indepsw-darwin.adb gcc-11.1.0/gcc/ada/indepsw-darwin.adb
*** gcc-10.3.0/gcc/ada/indepsw-darwin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/indepsw-darwin.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,29 ****
  --                                 B o d y                                  --
  --                            (Darwin version)                              --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 7,23 ----
  --                                 B o d y                                  --
  --                            (Darwin version)                              --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/indepsw-gnu.adb gcc-11.1.0/gcc/ada/indepsw-gnu.adb
*** gcc-10.3.0/gcc/ada/indepsw-gnu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/indepsw-gnu.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,29 ****
  --                                 B o d y                                  --
  --                              (GNU version)                               --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 7,23 ----
  --                                 B o d y                                  --
  --                              (GNU version)                               --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/indepsw.adb gcc-11.1.0/gcc/ada/indepsw.adb
*** gcc-10.3.0/gcc/ada/indepsw.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/indepsw.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/indepsw.ads gcc-11.1.0/gcc/ada/indepsw.ads
*** gcc-10.3.0/gcc/ada/indepsw.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/indepsw.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/init.c gcc-11.1.0/gcc/ada/init.c
*** gcc-10.3.0/gcc/ada/init.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/init.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** int   __gl_default_stack_size
*** 122,127 ****
--- 122,128 ----
  int   __gl_leap_seconds_support          = 0;
  int   __gl_canonical_streams             = 0;
  char *__gl_bind_env_addr                 = NULL;
+ int   __gl_xdr_stream                    = 0;
  
  /* This value is not used anymore, but kept for bootstrapping purpose.  */
  int   __gl_zero_cost_exceptions          = 0;
diff -Nrcpad gcc-10.3.0/gcc/ada/initialize.c gcc-11.1.0/gcc/ada/initialize.c
*** gcc-10.3.0/gcc/ada/initialize.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/initialize.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/inline.adb gcc-11.1.0/gcc/ada/inline.adb
*** gcc-10.3.0/gcc/ada/inline.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/inline.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sem_Ch8;  use Sem_Ch8;
*** 47,52 ****
--- 47,53 ----
  with Sem_Ch10; use Sem_Ch10;
  with Sem_Ch12; use Sem_Ch12;
  with Sem_Prag; use Sem_Prag;
+ with Sem_Res;  use Sem_Res;
  with Sem_Util; use Sem_Util;
  with Sinfo;    use Sinfo;
  with Sinput;   use Sinput;
*************** package body Inline is
*** 265,270 ****
--- 266,284 ----
     --  Make entry in Inlined table for subprogram E, or return table index
     --  that already holds E.
  
+    procedure Establish_Actual_Mapping_For_Inlined_Call
+      (N                     : Node_Id;
+       Subp                  : Entity_Id;
+       Decls                 : List_Id;
+       Body_Or_Expr_To_Check : Node_Id);
+    --  Establish a mapping from formals to actuals in the call N for the target
+    --  subprogram Subp, and create temporaries or renamings when needed for the
+    --  actuals that are expressions (except for actuals given by simple entity
+    --  names or literals) or that are scalars that require copying to preserve
+    --  semantics. Any temporary objects that are created are inserted in Decls.
+    --  Body_Or_Expr_To_Check indicates the target body (or possibly expression
+    --  of an expression function), which may be traversed to count formal uses.
+ 
     function Get_Code_Unit_Entity (E : Entity_Id) return Entity_Id;
     pragma Inline (Get_Code_Unit_Entity);
     --  Return the entity node for the unit containing E. Always return the spec
*************** package body Inline is
*** 303,312 ****
--- 317,331 ----
     --    Refined_Global
     --    Refined_Depends
     --    Refined_Post
+    --    Subprogram_Variant
     --    Test_Case
     --    Unmodified
     --    Unreferenced
  
+    procedure Reset_Actual_Mapping_For_Inlined_Call (Subp : Entity_Id);
+    --  Reset the Renamed_Object flags on the formals of Subp, which can be set
+    --  by a call to Establish_Actual_Mapping_For_Inlined_Call.
+ 
     ------------------------------
     -- Deferred Cleanup Actions --
     ------------------------------
*************** package body Inline is
*** 852,858 ****
              return;
           end if;
  
!          Elmt := Next_Elmt (Elmt);
        end loop;
  
        Append_Elmt (Scop, To_Clean);
--- 871,877 ----
              return;
           end if;
  
!          Next_Elmt (Elmt);
        end loop;
  
        Append_Elmt (Scop, To_Clean);
*************** package body Inline is
*** 1926,1935 ****
     -------------------
  
     procedure Cannot_Inline
!      (Msg        : String;
!       N          : Node_Id;
!       Subp       : Entity_Id;
!       Is_Serious : Boolean := False)
     is
     begin
        --  In GNATprove mode, inlining is the technical means by which the
--- 1945,1955 ----
     -------------------
  
     procedure Cannot_Inline
!      (Msg           : String;
!       N             : Node_Id;
!       Subp          : Entity_Id;
!       Is_Serious    : Boolean := False;
!       Suppress_Info : Boolean := False)
     is
     begin
        --  In GNATprove mode, inlining is the technical means by which the
*************** package body Inline is
*** 1952,1958 ****
              New_Msg (1 .. Len2) := "info: no contextual analysis of";
              New_Msg (Len2 + 1 .. Msg'Length + Len2 - Len1) :=
                Msg (Msg'First + Len1 .. Msg'Last);
!             Cannot_Inline (New_Msg, N, Subp, Is_Serious);
              return;
           end;
        end if;
--- 1972,1978 ----
              New_Msg (1 .. Len2) := "info: no contextual analysis of";
              New_Msg (Len2 + 1 .. Msg'Length + Len2 - Len1) :=
                Msg (Msg'First + Len1 .. Msg'Last);
!             Cannot_Inline (New_Msg, N, Subp, Is_Serious, Suppress_Info);
              return;
           end;
        end if;
*************** package body Inline is
*** 1973,1986 ****
           then
              null;
  
!          --  In GNATprove mode, issue a warning when -gnatd_f is set, and
!          --  indicate that the subprogram is not always inlined by setting
!          --  flag Is_Inlined_Always to False.
  
           elsif GNATprove_Mode then
              Set_Is_Inlined_Always (Subp, False);
  
!             if Debug_Flag_Underscore_F then
                 Error_Msg_NE (Msg, N, Subp);
              end if;
  
--- 1993,2006 ----
           then
              null;
  
!          --  In GNATprove mode, issue an info message when -gnatd_f is set and
!          --  Suppress_Info is False, and indicate that the subprogram is not
!          --  always inlined by setting flag Is_Inlined_Always to False.
  
           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;
  
*************** package body Inline is
*** 2003,2016 ****
  
           Error_Msg_NE (Msg (Msg'First .. Msg'Last - 1), N, Subp);
  
!       --  In GNATprove mode, issue a warning when -gnatd_f is set, and
!       --  indicate that the subprogram is not always inlined by setting
!       --  flag Is_Inlined_Always to False.
  
        elsif GNATprove_Mode then
           Set_Is_Inlined_Always (Subp, False);
  
!          if Debug_Flag_Underscore_F then
              Error_Msg_NE (Msg, N, Subp);
           end if;
  
--- 2023,2036 ----
  
           Error_Msg_NE (Msg (Msg'First .. Msg'Last - 1), N, Subp);
  
!       --  In GNATprove mode, issue an info message when -gnatd_f is set and
!       --  Suppress_Info is False, and indicate that the subprogram is not
!       --  always inlined by setting flag Is_Inlined_Always to False.
  
        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;
  
*************** package body Inline is
*** 2775,2783 ****
           else
              Decl := Unit_Declaration_Node (Scop);
  
!             if Nkind_In (Decl, N_Subprogram_Declaration,
!                                N_Task_Type_Declaration,
!                                N_Subprogram_Body_Stub)
              then
                 Decl := Unit_Declaration_Node (Corresponding_Body (Decl));
              end if;
--- 2795,2803 ----
           else
              Decl := Unit_Declaration_Node (Scop);
  
!             if Nkind (Decl) in N_Subprogram_Declaration
!                              | N_Task_Type_Declaration
!                              | N_Subprogram_Body_Stub
              then
                 Decl := Unit_Declaration_Node (Corresponding_Body (Decl));
              end if;
*************** package body Inline is
*** 2787,2796 ****
           Expand_Cleanup_Actions (Decl);
           End_Scope;
  
!          Elmt := Next_Elmt (Elmt);
        end loop;
     end Cleanup_Scopes;
  
     -------------------------
     -- Expand_Inlined_Call --
     -------------------------
--- 2807,3106 ----
           Expand_Cleanup_Actions (Decl);
           End_Scope;
  
!          Next_Elmt (Elmt);
        end loop;
     end Cleanup_Scopes;
  
+    procedure Establish_Actual_Mapping_For_Inlined_Call
+      (N                     : Node_Id;
+       Subp                  : Entity_Id;
+       Decls                 : List_Id;
+       Body_Or_Expr_To_Check : Node_Id)
+    is
+ 
+       function Formal_Is_Used_Once (Formal : Entity_Id) return Boolean;
+       --  Determine whether a formal parameter is used only once in
+       --  Body_Or_Expr_To_Check.
+ 
+       -------------------------
+       -- Formal_Is_Used_Once --
+       -------------------------
+ 
+       function Formal_Is_Used_Once (Formal : Entity_Id) return Boolean is
+          Use_Counter : Int := 0;
+ 
+          function Count_Uses (N : Node_Id) return Traverse_Result;
+          --  Traverse the tree and count the uses of the formal parameter.
+          --  In this case, for optimization purposes, we do not need to
+          --  continue the traversal once more than one use is encountered.
+ 
+          ----------------
+          -- Count_Uses --
+          ----------------
+ 
+          function Count_Uses (N : Node_Id) return Traverse_Result is
+          begin
+             --  The original node is an identifier
+ 
+             if Nkind (N) = N_Identifier
+               and then Present (Entity (N))
+ 
+                --  Original node's entity points to the one in the copied body
+ 
+               and then Nkind (Entity (N)) = N_Identifier
+               and then Present (Entity (Entity (N)))
+ 
+                --  The entity of the copied node is the formal parameter
+ 
+               and then Entity (Entity (N)) = Formal
+             then
+                Use_Counter := Use_Counter + 1;
+ 
+                if Use_Counter > 1 then
+ 
+                   --  Denote more than one use and abandon the traversal
+ 
+                   Use_Counter := 2;
+                   return Abandon;
+ 
+                end if;
+             end if;
+ 
+             return OK;
+          end Count_Uses;
+ 
+          procedure Count_Formal_Uses is new Traverse_Proc (Count_Uses);
+ 
+       --  Start of processing for Formal_Is_Used_Once
+ 
+       begin
+          Count_Formal_Uses (Body_Or_Expr_To_Check);
+          return Use_Counter = 1;
+       end Formal_Is_Used_Once;
+ 
+       -- Local Data --
+ 
+       F        : Entity_Id;
+       A        : Node_Id;
+       Decl     : Node_Id;
+       Loc      : constant Source_Ptr := Sloc (N);
+       New_A    : Node_Id;
+       Temp     : Entity_Id;
+       Temp_Typ : Entity_Id;
+ 
+    --  Start of processing for Establish_Actual_Mapping_For_Inlined_Call
+ 
+    begin
+       F := First_Formal (Subp);
+       A := First_Actual (N);
+       while Present (F) loop
+          if Present (Renamed_Object (F)) then
+ 
+             --  If expander is active, it is an error to try to inline a
+             --  recursive program. In GNATprove mode, just indicate that the
+             --  inlining will not happen, and mark the subprogram as not always
+             --  inlined.
+ 
+             if GNATprove_Mode then
+                Cannot_Inline
+                  ("cannot inline call to recursive subprogram?", N, Subp);
+                Set_Is_Inlined_Always (Subp, False);
+             else
+                Error_Msg_N
+                  ("cannot inline call to recursive subprogram", N);
+             end if;
+ 
+             return;
+          end if;
+ 
+          --  Reset Last_Assignment for any parameters of mode out or in out, to
+          --  prevent spurious warnings about overwriting for assignments to the
+          --  formal in the inlined code.
+ 
+          if Is_Entity_Name (A) and then Ekind (F) /= E_In_Parameter then
+ 
+             --  In GNATprove mode a protected component acting as an actual
+             --  subprogram parameter will appear as inlined-for-proof. However,
+             --  its E_Component entity is not an assignable object, so the
+             --  assertion in Set_Last_Assignment will fail. We just omit the
+             --  call to Set_Last_Assignment, because GNATprove flags useless
+             --  assignments with its own flow analysis.
+             --
+             --  In GNAT mode such a problem does not occur, because protected
+             --  components are inlined via object renamings whose entity kind
+             --  E_Variable is assignable.
+ 
+             if Is_Assignable (Entity (A)) then
+                Set_Last_Assignment (Entity (A), Empty);
+             else
+                pragma Assert
+                  (GNATprove_Mode and then Is_Protected_Component (Entity (A)));
+             end if;
+          end if;
+ 
+          --  If the argument may be a controlling argument in a call within
+          --  the inlined body, we must preserve its class-wide nature to ensure
+          --  that dynamic dispatching will take place subsequently. If the
+          --  formal has a constraint, then it must be preserved to retain the
+          --  semantics of the body.
+ 
+          if Is_Class_Wide_Type (Etype (F))
+            or else (Is_Access_Type (Etype (F))
+                      and then Is_Class_Wide_Type (Designated_Type (Etype (F))))
+          then
+             Temp_Typ := Etype (F);
+ 
+          elsif Base_Type (Etype (F)) = Base_Type (Etype (A))
+            and then Etype (F) /= Base_Type (Etype (F))
+            and then Is_Constrained (Etype (F))
+          then
+             Temp_Typ := Etype (F);
+ 
+          else
+             Temp_Typ := Etype (A);
+          end if;
+ 
+          --  If the actual is a simple name or a literal, no need to
+          --  create a temporary, object can be used directly.
+ 
+          --  If the actual is a literal and the formal has its address taken,
+          --  we cannot pass the literal itself as an argument, so its value
+          --  must be captured in a temporary. Skip this optimization in
+          --  GNATprove mode, to make sure any check on a type conversion
+          --  will be issued.
+ 
+          if (Is_Entity_Name (A)
+               and then
+                 (not Is_Scalar_Type (Etype (A))
+                   or else Ekind (Entity (A)) = E_Enumeration_Literal)
+               and then not GNATprove_Mode)
+ 
+          --  When the actual is an identifier and the corresponding formal is
+          --  used only once in the original body, the formal can be substituted
+          --  directly with the actual parameter. Skip this optimization in
+          --  GNATprove mode, to make sure any check on a type conversion
+          --  will be issued.
+ 
+            or else
+              (Nkind (A) = N_Identifier
+                and then Formal_Is_Used_Once (F)
+                and then not GNATprove_Mode)
+ 
+            or else
+              (Nkind (A) in
+                 N_Real_Literal | N_Integer_Literal | N_Character_Literal
+                and then not Address_Taken (F))
+          then
+             if Etype (F) /= Etype (A) then
+                Set_Renamed_Object
+                  (F, Unchecked_Convert_To (Etype (F), Relocate_Node (A)));
+             else
+                Set_Renamed_Object (F, A);
+             end if;
+ 
+          else
+             Temp := Make_Temporary (Loc, 'C');
+ 
+             --  If the actual for an in/in-out parameter is a view conversion,
+             --  make it into an unchecked conversion, given that an untagged
+             --  type conversion is not a proper object for a renaming.
+ 
+             --  In-out conversions that involve real conversions have already
+             --  been transformed in Expand_Actuals.
+ 
+             if Nkind (A) = N_Type_Conversion
+               and then Ekind (F) /= E_In_Parameter
+             then
+                New_A :=
+                  Make_Unchecked_Type_Conversion (Loc,
+                    Subtype_Mark => New_Occurrence_Of (Etype (F), Loc),
+                    Expression   => Relocate_Node (Expression (A)));
+ 
+             --  In GNATprove mode, keep the most precise type of the actual for
+             --  the temporary variable, when the formal type is unconstrained.
+             --  Otherwise, the AST may contain unexpected assignment statements
+             --  to a temporary variable of unconstrained type renaming a local
+             --  variable of constrained type, which is not expected by
+             --  GNATprove.
+ 
+             elsif Etype (F) /= Etype (A)
+               and then (not GNATprove_Mode or else Is_Constrained (Etype (F)))
+             then
+                New_A    := Unchecked_Convert_To (Etype (F), Relocate_Node (A));
+                Temp_Typ := Etype (F);
+ 
+             else
+                New_A := Relocate_Node (A);
+             end if;
+ 
+             Set_Sloc (New_A, Sloc (N));
+ 
+             --  If the actual has a by-reference type, it cannot be copied,
+             --  so its value is captured in a renaming declaration. Otherwise
+             --  declare a local constant initialized with the actual.
+ 
+             --  We also use a renaming declaration for expressions of an array
+             --  type that is not bit-packed, both for efficiency reasons and to
+             --  respect the semantics of the call: in most cases the original
+             --  call will pass the parameter by reference, and thus the inlined
+             --  code will have the same semantics.
+ 
+             --  Finally, we need a renaming declaration in the case of limited
+             --  types for which initialization cannot be by copy either.
+ 
+             if Ekind (F) = E_In_Parameter
+               and then not Is_By_Reference_Type (Etype (A))
+               and then not Is_Limited_Type (Etype (A))
+               and then
+                 (not Is_Array_Type (Etype (A))
+                   or else not Is_Object_Reference (A)
+                   or else Is_Bit_Packed_Array (Etype (A)))
+             then
+                Decl :=
+                  Make_Object_Declaration (Loc,
+                    Defining_Identifier => Temp,
+                    Constant_Present    => True,
+                    Object_Definition   => New_Occurrence_Of (Temp_Typ, Loc),
+                    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,
+                    Subtype_Mark        => New_Occurrence_Of (Temp_Typ, Loc),
+                    Name                => New_A);
+             end if;
+ 
+             Append (Decl, Decls);
+             Set_Renamed_Object (F, Temp);
+          end if;
+ 
+          Next_Formal (F);
+          Next_Actual (A);
+       end loop;
+    end Establish_Actual_Mapping_For_Inlined_Call;
+ 
     -------------------------
     -- Expand_Inlined_Call --
     -------------------------
*************** package body Inline is
*** 2816,2830 ****
        Blk      : Node_Id;
        Decl     : Node_Id;
        Exit_Lab : Entity_Id := Empty;
-       F        : Entity_Id;
-       A        : Node_Id;
        Lab_Decl : Node_Id   := Empty;
        Lab_Id   : Node_Id;
-       New_A    : Node_Id;
        Num_Ret  : Nat       := 0;
        Ret_Type : Entity_Id;
        Temp     : Entity_Id;
-       Temp_Typ : Entity_Id;
  
        Is_Unc      : Boolean;
        Is_Unc_Decl : Boolean;
--- 3126,3136 ----
*************** package body Inline is
*** 2890,2898 ****
        --  If procedure body has no local variables, inline body without
        --  creating block, otherwise rewrite call with block.
  
-       function Formal_Is_Used_Once (Formal : Entity_Id) return Boolean;
-       --  Determine whether a formal parameter is used only once in Orig_Bod
- 
        -----------------------------------
        -- Declare_Postconditions_Result --
        -----------------------------------
--- 3196,3201 ----
*************** package body Inline is
*** 3093,3102 ****
                 --  and string literals, and attributes that yield a universal
                 --  type, because those must be resolved to a specific type.
  
!                if Nkind_In (Expression (N), N_Aggregate,
!                                             N_Character_Literal,
!                                             N_Null,
!                                             N_String_Literal)
                   or else Yields_Universal_Type (Expression (N))
                 then
                    Ret :=
--- 3396,3405 ----
                 --  and string literals, and attributes that yield a universal
                 --  type, because those must be resolved to a specific type.
  
!                if Nkind (Expression (N)) in N_Aggregate
!                                           | N_Character_Literal
!                                           | N_Null
!                                           | N_String_Literal
                   or else Yields_Universal_Type (Expression (N))
                 then
                    Ret :=
*************** package body Inline is
*** 3409,3470 ****
           end if;
        end Rewrite_Procedure_Call;
  
-       -------------------------
-       -- Formal_Is_Used_Once --
-       -------------------------
- 
-       function Formal_Is_Used_Once (Formal : Entity_Id) return Boolean is
-          Use_Counter : Int := 0;
- 
-          function Count_Uses (N : Node_Id) return Traverse_Result;
-          --  Traverse the tree and count the uses of the formal parameter.
-          --  In this case, for optimization purposes, we do not need to
-          --  continue the traversal once more than one use is encountered.
- 
-          ----------------
-          -- Count_Uses --
-          ----------------
- 
-          function Count_Uses (N : Node_Id) return Traverse_Result is
-          begin
-             --  The original node is an identifier
- 
-             if Nkind (N) = N_Identifier
-               and then Present (Entity (N))
- 
-                --  Original node's entity points to the one in the copied body
- 
-               and then Nkind (Entity (N)) = N_Identifier
-               and then Present (Entity (Entity (N)))
- 
-                --  The entity of the copied node is the formal parameter
- 
-               and then Entity (Entity (N)) = Formal
-             then
-                Use_Counter := Use_Counter + 1;
- 
-                if Use_Counter > 1 then
- 
-                   --  Denote more than one use and abandon the traversal
- 
-                   Use_Counter := 2;
-                   return Abandon;
- 
-                end if;
-             end if;
- 
-             return OK;
-          end Count_Uses;
- 
-          procedure Count_Formal_Uses is new Traverse_Proc (Count_Uses);
- 
-       --  Start of processing for Formal_Is_Used_Once
- 
-       begin
-          Count_Formal_Uses (Orig_Bod);
-          return Use_Counter = 1;
-       end Formal_Is_Used_Once;
- 
     --  Start of processing for Expand_Inlined_Call
  
     begin
--- 3712,3717 ----
*************** package body Inline is
*** 3500,3507 ****
           return;
        end if;
  
!       if Nkind (Orig_Bod) = N_Defining_Identifier
!         or else Nkind (Orig_Bod) = N_Defining_Operator_Symbol
        then
           --  Subprogram is renaming_as_body. Calls occurring after the renaming
           --  can be replaced with calls to the renamed entity directly, because
--- 3747,3754 ----
           return;
        end if;
  
!       if Nkind (Orig_Bod) in N_Defining_Identifier
!                            | N_Defining_Operator_Symbol
        then
           --  Subprogram is renaming_as_body. Calls occurring after the renaming
           --  can be replaced with calls to the renamed entity directly, because
*************** package body Inline is
*** 3694,3891 ****
        --  Create temporaries for the actuals that are expressions, or that are
        --  scalars and require copying to preserve semantics.
  
!       F := First_Formal (Subp);
!       A := First_Actual (N);
!       while Present (F) loop
!          if Present (Renamed_Object (F)) then
! 
!             --  If expander is active, it is an error to try to inline a
!             --  recursive program. In GNATprove mode, just indicate that the
!             --  inlining will not happen, and mark the subprogram as not always
!             --  inlined.
! 
!             if GNATprove_Mode then
!                Cannot_Inline
!                  ("cannot inline call to recursive subprogram?", N, Subp);
!                Set_Is_Inlined_Always (Subp, False);
!             else
!                Error_Msg_N
!                  ("cannot inline call to recursive subprogram", N);
!             end if;
! 
!             return;
!          end if;
! 
!          --  Reset Last_Assignment for any parameters of mode out or in out, to
!          --  prevent spurious warnings about overwriting for assignments to the
!          --  formal in the inlined code.
! 
!          if Is_Entity_Name (A) and then Ekind (F) /= E_In_Parameter then
!             Set_Last_Assignment (Entity (A), Empty);
!          end if;
! 
!          --  If the argument may be a controlling argument in a call within
!          --  the inlined body, we must preserve its classwide nature to insure
!          --  that dynamic dispatching take place subsequently. If the formal
!          --  has a constraint it must be preserved to retain the semantics of
!          --  the body.
! 
!          if Is_Class_Wide_Type (Etype (F))
!            or else (Is_Access_Type (Etype (F))
!                      and then Is_Class_Wide_Type (Designated_Type (Etype (F))))
!          then
!             Temp_Typ := Etype (F);
! 
!          elsif Base_Type (Etype (F)) = Base_Type (Etype (A))
!            and then Etype (F) /= Base_Type (Etype (F))
!            and then Is_Constrained (Etype (F))
!          then
!             Temp_Typ := Etype (F);
! 
!          else
!             Temp_Typ := Etype (A);
!          end if;
! 
!          --  If the actual is a simple name or a literal, no need to
!          --  create a temporary, object can be used directly.
! 
!          --  If the actual is a literal and the formal has its address taken,
!          --  we cannot pass the literal itself as an argument, so its value
!          --  must be captured in a temporary. Skip this optimization in
!          --  GNATprove mode, to make sure any check on a type conversion
!          --  will be issued.
! 
!          if (Is_Entity_Name (A)
!               and then
!                 (not Is_Scalar_Type (Etype (A))
!                   or else Ekind (Entity (A)) = E_Enumeration_Literal)
!               and then not GNATprove_Mode)
! 
!          --  When the actual is an identifier and the corresponding formal is
!          --  used only once in the original body, the formal can be substituted
!          --  directly with the actual parameter. Skip this optimization in
!          --  GNATprove mode, to make sure any check on a type conversion
!          --  will be issued.
! 
!            or else
!              (Nkind (A) = N_Identifier
!                and then Formal_Is_Used_Once (F)
!                and then not GNATprove_Mode)
! 
!            or else
!              (Nkind_In (A, N_Real_Literal,
!                            N_Integer_Literal,
!                            N_Character_Literal)
!                and then not Address_Taken (F))
!          then
!             if Etype (F) /= Etype (A) then
!                Set_Renamed_Object
!                  (F, Unchecked_Convert_To (Etype (F), Relocate_Node (A)));
!             else
!                Set_Renamed_Object (F, A);
!             end if;
! 
!          else
!             Temp := Make_Temporary (Loc, 'C');
! 
!             --  If the actual for an in/in-out parameter is a view conversion,
!             --  make it into an unchecked conversion, given that an untagged
!             --  type conversion is not a proper object for a renaming.
! 
!             --  In-out conversions that involve real conversions have already
!             --  been transformed in Expand_Actuals.
! 
!             if Nkind (A) = N_Type_Conversion
!               and then Ekind (F) /= E_In_Parameter
!             then
!                New_A :=
!                  Make_Unchecked_Type_Conversion (Loc,
!                    Subtype_Mark => New_Occurrence_Of (Etype (F), Loc),
!                    Expression   => Relocate_Node (Expression (A)));
! 
!             --  In GNATprove mode, keep the most precise type of the actual for
!             --  the temporary variable, when the formal type is unconstrained.
!             --  Otherwise, the AST may contain unexpected assignment statements
!             --  to a temporary variable of unconstrained type renaming a local
!             --  variable of constrained type, which is not expected by
!             --  GNATprove.
! 
!             elsif Etype (F) /= Etype (A)
!               and then (not GNATprove_Mode or else Is_Constrained (Etype (F)))
!             then
!                New_A    := Unchecked_Convert_To (Etype (F), Relocate_Node (A));
!                Temp_Typ := Etype (F);
! 
!             else
!                New_A := Relocate_Node (A);
!             end if;
! 
!             Set_Sloc (New_A, Sloc (N));
! 
!             --  If the actual has a by-reference type, it cannot be copied,
!             --  so its value is captured in a renaming declaration. Otherwise
!             --  declare a local constant initialized with the actual.
! 
!             --  We also use a renaming declaration for expressions of an array
!             --  type that is not bit-packed, both for efficiency reasons and to
!             --  respect the semantics of the call: in most cases the original
!             --  call will pass the parameter by reference, and thus the inlined
!             --  code will have the same semantics.
! 
!             --  Finally, we need a renaming declaration in the case of limited
!             --  types for which initialization cannot be by copy either.
! 
!             if Ekind (F) = E_In_Parameter
!               and then not Is_By_Reference_Type (Etype (A))
!               and then not Is_Limited_Type (Etype (A))
!               and then
!                 (not Is_Array_Type (Etype (A))
!                   or else not Is_Object_Reference (A)
!                   or else Is_Bit_Packed_Array (Etype (A)))
!             then
!                Decl :=
!                  Make_Object_Declaration (Loc,
!                    Defining_Identifier => Temp,
!                    Constant_Present    => True,
!                    Object_Definition   => New_Occurrence_Of (Temp_Typ, Loc),
!                    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,
!                    Subtype_Mark        => New_Occurrence_Of (Temp_Typ, Loc),
!                    Name                => New_A);
!             end if;
! 
!             Append (Decl, Decls);
!             Set_Renamed_Object (F, Temp);
!          end if;
! 
!          Next_Formal (F);
!          Next_Actual (A);
!       end loop;
  
        --  Establish target of function call. If context is not assignment or
        --  declaration, create a temporary as a target. The declaration for the
--- 3941,3947 ----
        --  Create temporaries for the actuals that are expressions, or that are
        --  scalars and require copying to preserve semantics.
  
!       Establish_Actual_Mapping_For_Inlined_Call (N, Subp, Decls, Orig_Bod);
  
        --  Establish target of function call. If context is not assignment or
        --  declaration, create a temporary as a target. The declaration for the
*************** package body Inline is
*** 4103,4109 ****
  
                 Reset_Dispatching_Calls (Blk);
  
!                Analyze (Blk, Suppress => All_Checks);
                 Style_Check := Style;
              end;
  
--- 4159,4173 ----
  
                 Reset_Dispatching_Calls (Blk);
  
!                --  In GNATprove mode, always consider checks on, even for
!                --  predefined units.
! 
!                if GNATprove_Mode then
!                   Analyze (Blk);
!                else
!                   Analyze (Blk, Suppress => All_Checks);
!                end if;
! 
                 Style_Check := Style;
              end;
  
*************** package body Inline is
*** 4140,4150 ****
  
        --  Cleanup mapping between formals and actuals for other expansions
  
!       F := First_Formal (Subp);
!       while Present (F) loop
!          Set_Renamed_Object (F, Empty);
!          Next_Formal (F);
!       end loop;
     end Expand_Inlined_Call;
  
     --------------------------
--- 4204,4210 ----
  
        --  Cleanup mapping between formals and actuals for other expansions
  
!       Reset_Actual_Mapping_For_Inlined_Call (Subp);
     end Expand_Inlined_Call;
  
     --------------------------
*************** package body Inline is
*** 4192,4198 ****
           then
              Conv := Current_Entity (Id);
  
!          elsif Nkind_In (Id, N_Selected_Component, N_Expanded_Name)
             and then Chars (Selector_Name (Id)) = Name_Unchecked_Conversion
           then
              Conv := Current_Entity (Selector_Name (Id));
--- 4252,4258 ----
           then
              Conv := Current_Entity (Id);
  
!          elsif Nkind (Id) in N_Selected_Component | N_Expanded_Name
             and then Chars (Selector_Name (Id)) = Name_Unchecked_Conversion
           then
              Conv := Current_Entity (Selector_Name (Id));
*************** package body Inline is
*** 4324,4336 ****
  
        S := First (Stats);
        while Present (S) loop
!          if Nkind_In (S, N_Abort_Statement,
!                          N_Asynchronous_Select,
!                          N_Conditional_Entry_Call,
!                          N_Delay_Relative_Statement,
!                          N_Delay_Until_Statement,
!                          N_Selective_Accept,
!                          N_Timed_Entry_Call)
           then
              Cannot_Inline
                ("cannot inline & (non-allowed statement)?", S, Subp);
--- 4384,4396 ----
  
        S := First (Stats);
        while Present (S) loop
!          if Nkind (S) in N_Abort_Statement
!                        | N_Asynchronous_Select
!                        | N_Conditional_Entry_Call
!                        | N_Delay_Relative_Statement
!                        | N_Delay_Until_Statement
!                        | N_Selective_Accept
!                        | N_Timed_Entry_Call
           then
              Cannot_Inline
                ("cannot inline & (non-allowed statement)?", S, Subp);
*************** package body Inline is
*** 4590,4595 ****
--- 4650,4782 ----
        Backend_Not_Inlined_Subps := No_Elist;
     end Initialize;
  
+    ---------------------------------
+    -- Inline_Static_Function_Call --
+    ---------------------------------
+ 
+    procedure Inline_Static_Function_Call (N : Node_Id; Subp : Entity_Id) is
+ 
+       function Replace_Formal (N : Node_Id) return Traverse_Result;
+       --  Replace each occurrence of a formal with the corresponding actual,
+       --  using the mapping created by Establish_Mapping_For_Inlined_Call.
+ 
+       function Reset_Sloc (Nod : Node_Id) return Traverse_Result;
+       --  Reset the Sloc of a node to that of the call itself, so that errors
+       --  will be flagged on the call to the static expression function itself
+       --  rather than on the expression of the function's declaration.
+ 
+       --------------------
+       -- Replace_Formal --
+       --------------------
+ 
+       function Replace_Formal (N : Node_Id) return Traverse_Result is
+          A   : Entity_Id;
+          E   : Entity_Id;
+ 
+       begin
+          if Is_Entity_Name (N) and then Present (Entity (N)) then
+             E := Entity (N);
+ 
+             if Is_Formal (E) and then Scope (E) = Subp then
+                A := Renamed_Object (E);
+ 
+                if Nkind (A) = N_Defining_Identifier then
+                   Rewrite (N, New_Occurrence_Of (A, Sloc (N)));
+ 
+                --  Literal cases
+ 
+                else
+                   Rewrite (N, New_Copy (A));
+                end if;
+             end if;
+ 
+             return Skip;
+ 
+          else
+             return OK;
+          end if;
+       end Replace_Formal;
+ 
+       procedure Replace_Formals is new Traverse_Proc (Replace_Formal);
+ 
+       ------------------
+       -- Process_Sloc --
+       ------------------
+ 
+       function Reset_Sloc (Nod : Node_Id) return Traverse_Result is
+       begin
+          Set_Sloc (Nod, Sloc (N));
+          Set_Comes_From_Source (Nod, False);
+ 
+          return OK;
+       end Reset_Sloc;
+ 
+       procedure Reset_Slocs is new Traverse_Proc (Reset_Sloc);
+ 
+    --  Start of processing for Inline_Static_Function_Call
+ 
+    begin
+       pragma Assert (Is_Static_Function_Call (N));
+ 
+       declare
+          Decls     : constant List_Id := New_List;
+          Func_Expr : constant Node_Id :=
+                        Expression_Of_Expression_Function (Subp);
+          Expr_Copy : constant Node_Id := New_Copy_Tree (Func_Expr);
+ 
+       begin
+          --  Create a mapping from formals to actuals, also creating temps in
+          --  Decls, when needed, to hold the actuals.
+ 
+          Establish_Actual_Mapping_For_Inlined_Call (N, Subp, Decls, Func_Expr);
+ 
+          --  Ensure that the copy has the same parent as the call (this seems
+          --  to matter when GNATprove_Mode is set and there are nested static
+          --  calls; prevents blowups in Insert_Actions, though it's not clear
+          --  exactly why this is needed???).
+ 
+          Set_Parent (Expr_Copy, Parent (N));
+ 
+          Insert_Actions (N, Decls);
+ 
+          --  Now substitute actuals for their corresponding formal references
+          --  within the expression.
+ 
+          Replace_Formals (Expr_Copy);
+ 
+          Reset_Slocs (Expr_Copy);
+ 
+          --  Apply a qualified expression with the function's result subtype,
+          --  to ensure that we check the expression against any constraint
+          --  or predicate, which will cause the call to be illegal if the
+          --  folded expression doesn't satisfy them. (The predicate case
+          --  might not get checked if the subtype hasn't been frozen yet,
+          --  which can happen if this static expression happens to be what
+          --  causes the freezing, because Has_Static_Predicate doesn't get
+          --  set on the subtype until it's frozen and Build_Predicates is
+          --  called. It's not clear how to address this case. ???)
+ 
+          Rewrite (Expr_Copy,
+            Make_Qualified_Expression (Sloc (Expr_Copy),
+              Subtype_Mark =>
+                New_Occurrence_Of (Etype (N), Sloc (Expr_Copy)),
+              Expression =>
+                Relocate_Node (Expr_Copy)));
+ 
+          Set_Etype (Expr_Copy, Etype (N));
+ 
+          Analyze_And_Resolve (Expr_Copy, Etype (N));
+ 
+          --  Finally rewrite the function call as the folded static result
+ 
+          Rewrite (N, Expr_Copy);
+ 
+          --  Cleanup mapping between formals and actuals for other expansions
+ 
+          Reset_Actual_Mapping_For_Inlined_Call (Subp);
+       end;
+    end Inline_Static_Function_Call;
+ 
     ------------------------
     -- Instantiate_Bodies --
     ------------------------
*************** package body Inline is
*** 4943,4960 ****
              end if;
  
              if Present (Item_Id)
!               and then Nam_In (Chars (Item_Id), Name_Contract_Cases,
!                                                 Name_Global,
!                                                 Name_Depends,
!                                                 Name_Postcondition,
!                                                 Name_Precondition,
!                                                 Name_Refined_Global,
!                                                 Name_Refined_Depends,
!                                                 Name_Refined_Post,
!                                                 Name_Test_Case,
!                                                 Name_Unmodified,
!                                                 Name_Unreferenced,
!                                                 Name_Unused)
              then
                 Remove (Item);
              end if;
--- 5130,5148 ----
              end if;
  
              if Present (Item_Id)
!               and then Chars (Item_Id) in Name_Contract_Cases
!                                         | Name_Global
!                                         | Name_Depends
!                                         | Name_Postcondition
!                                         | Name_Precondition
!                                         | Name_Refined_Global
!                                         | Name_Refined_Depends
!                                         | Name_Refined_Post
!                                         | Name_Subprogram_Variant
!                                         | Name_Test_Case
!                                         | Name_Unmodified
!                                         | Name_Unreferenced
!                                         | Name_Unused
              then
                 Remove (Item);
              end if;
*************** package body Inline is
*** 4994,4997 ****
--- 5182,5199 ----
        end loop;
     end Remove_Dead_Instance;
  
+    -------------------------------------------
+    -- Reset_Actual_Mapping_For_Inlined_Call --
+    -------------------------------------------
+ 
+    procedure Reset_Actual_Mapping_For_Inlined_Call (Subp : Entity_Id) is
+       F : Entity_Id := First_Formal (Subp);
+ 
+    begin
+       while Present (F) loop
+          Set_Renamed_Object (F, Empty);
+          Next_Formal (F);
+       end loop;
+    end Reset_Actual_Mapping_For_Inlined_Call;
+ 
  end Inline;
diff -Nrcpad gcc-10.3.0/gcc/ada/inline.ads gcc-11.1.0/gcc/ada/inline.ads
*** gcc-10.3.0/gcc/ada/inline.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/inline.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Inline is
*** 154,168 ****
     --  its treatment of the subprogram.
  
     procedure Cannot_Inline
!      (Msg        : String;
!       N          : Node_Id;
!       Subp       : Entity_Id;
!       Is_Serious : Boolean := False);
     --  This procedure is called if the node N, an instance of a call to
     --  subprogram Subp, cannot be inlined. Msg is the message to be issued,
     --  which ends with ? (it does not end with ?p?, this routine takes care of
!    --  the need to change ? to ?p?). The behavior of this routine depends on
!    --  the value of Back_End_Inlining:
     --
     --    * If Back_End_Inlining is not set (ie. legacy frontend inlining model)
     --      then if Subp has a pragma Always_Inlined, then an error message is
--- 154,170 ----
     --  its treatment of the subprogram.
  
     procedure Cannot_Inline
!      (Msg           : String;
!       N             : Node_Id;
!       Subp          : Entity_Id;
!       Is_Serious    : Boolean := False;
!       Suppress_Info : Boolean := False);
     --  This procedure is called if the node N, an instance of a call to
     --  subprogram Subp, cannot be inlined. Msg is the message to be issued,
     --  which ends with ? (it does not end with ?p?, this routine takes care of
!    --  the need to change ? to ?p?). Suppress_Info is set to True to prevent
!    --  issuing an info message in GNATprove mode. The behavior of this routine
!    --  depends on the value of Back_End_Inlining:
     --
     --    * If Back_End_Inlining is not set (ie. legacy frontend inlining model)
     --      then if Subp has a pragma Always_Inlined, then an error message is
*************** package Inline is
*** 227,232 ****
--- 229,240 ----
     --  Check a list of statements, Stats, that make inlining of Subp not
     --  worthwhile, including any tasking statement, nested at any level.
  
+    procedure Inline_Static_Function_Call
+      (N : Node_Id; Subp : Entity_Id);
+    --  Evaluate static call to a static function Subp, substituting actuals in
+    --  place of references to their corresponding formals and rewriting the
+    --  call N as a fully folded and static result expression.
+ 
     procedure List_Inlining_Info;
     --  Generate listing of calls inlined by the frontend plus listing of
     --  calls to inline subprograms passed to the backend.
diff -Nrcpad gcc-10.3.0/gcc/ada/itypes.adb gcc-11.1.0/gcc/ada/itypes.adb
*** gcc-10.3.0/gcc/ada/itypes.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/itypes.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 24,30 ****
  ------------------------------------------------------------------------------
  
  with Atree;    use Atree;
- with Opt;      use Opt;
  with Sem;      use Sem;
  with Sinfo;    use Sinfo;
  with Stand;    use Stand;
--- 24,29 ----
*************** package body Itypes is
*** 70,78 ****
        Set_Is_Itype (Typ);
        Set_Associated_Node_For_Itype (Typ, Related_Nod);
  
!       if In_Deleted_Code
!         and then not ASIS_Mode
!       then
           Set_Is_Frozen (Typ);
        end if;
  
--- 69,75 ----
        Set_Is_Itype (Typ);
        Set_Associated_Node_For_Itype (Typ, Related_Nod);
  
!       if In_Deleted_Code then
           Set_Is_Frozen (Typ);
        end if;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/itypes.ads gcc-11.1.0/gcc/ada/itypes.ads
*** gcc-10.3.0/gcc/ada/itypes.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/itypes.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/krunch.adb gcc-11.1.0/gcc/ada/krunch.adb
*** gcc-10.3.0/gcc/ada/krunch.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/krunch.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** begin
*** 73,78 ****
--- 67,81 ----
        Curlen := Len - 17;
        Krlen := 8;
  
+    elsif Len >= 27
+      and then Buffer (1 .. 27) = "ada-long_long_long_integer_"
+    then
+       Startloc := 3;
+       Buffer (2 .. Len - 2) := Buffer (4 .. Len);
+       Buffer (18 .. Len - 10) := Buffer (26 .. Len - 2);
+       Curlen := Len - 10;
+       Krlen := 8;
+ 
     elsif Len >= 4 and then Buffer (1 .. 4) = "ada-" then
        Startloc := 3;
        Buffer (2 .. Len - 2) := Buffer (4 .. Len);
*************** begin
*** 89,95 ****
        Startloc := 3;
        Buffer (2 .. Len - 5) := Buffer (7 .. Len);
        Curlen := Len - 5;
!       Krlen  := 8;
  
     elsif Len >= 11 and then Buffer (1 .. 11) = "interfaces-" then
        Startloc := 3;
--- 92,114 ----
        Startloc := 3;
        Buffer (2 .. Len - 5) := Buffer (7 .. Len);
        Curlen := Len - 5;
!       if Buffer (Curlen - 2 .. Curlen) = "128"
!         or else Buffer (3 .. 9) = "exn_lll"
!         or else Buffer (3 .. 9) = "exp_lll"
!         or else Buffer (3 .. 9) = "img_lll"
!         or else Buffer (3 .. 9) = "val_lll"
!         or else Buffer (3 .. 9) = "wid_lll"
!         or else (Buffer (3 .. 6) = "pack" and then Curlen = 10)
!       then
!          if Buffer (3 .. 15) = "compare_array" then
!             Buffer (3 .. 4) := "ca";
!             Buffer (5 .. Curlen - 11) := Buffer (16 .. Curlen);
!             Curlen := Curlen - 11;
!          end if;
!          Krlen := 9;
!       else
!          Krlen := 8;
!       end if;
  
     elsif Len >= 11 and then Buffer (1 .. 11) = "interfaces-" then
        Startloc := 3;
diff -Nrcpad gcc-10.3.0/gcc/ada/krunch.ads gcc-11.1.0/gcc/ada/krunch.ads
*** gcc-10.3.0/gcc/ada/krunch.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/krunch.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
***************
*** 114,119 ****
--- 108,119 ----
  --  we replace the prefix ada.wide_wide_text_io- by a-zt- and then
  --  the normal crunching rules are applied.
  
+ --  An additional trick is used for Ada.Long_Long_Long_Integer_*_IO, where
+ --  the Integer word is dropped.
+ 
+ --  The units implementing the support of 128-bit types are crunched to 9 and
+ --  System.Compare_Array_* is replaced with System.CA_* before crunching.
+ 
  --  These are the only irregularity required (so far) to keep the file names
  --  unique in the standard predefined libraries.
  
diff -Nrcpad gcc-10.3.0/gcc/ada/layout.adb gcc-11.1.0/gcc/ada/layout.adb
*** gcc-10.3.0/gcc/ada/layout.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/layout.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Layout is
*** 378,389 ****
                          Init_Esize (E, S);
                          exit;
  
!                      --  If the RM_Size is greater than 64 (happens only when
!                      --  strange values are specified by the user, then Esize
!                      --  is simply a copy of RM_Size, it will be further
!                      --  refined later on)
  
!                      elsif S = 64 then
                          Set_Esize (E, RM_Size (E));
                          exit;
  
--- 378,389 ----
                          Init_Esize (E, S);
                          exit;
  
!                      --  If the RM_Size is greater than System_Max_Integer_Size
!                      --  (happens only when strange values are specified by the
!                      --  user), then Esize is simply a copy of RM_Size, it will
!                      --  be further refined later on).
  
!                      elsif S = System_Max_Integer_Size then
                          Set_Esize (E, RM_Size (E));
                          exit;
  
*************** package body Layout is
*** 436,446 ****
           end if;
  
           --  For array base types, set the component size if object size of the
!          --  component type is known and is a small power of 2 (8, 16, 32, 64),
!          --  since this is what will always be used, except if a very large
!          --  alignment was specified and so Adjust_Esize_For_Alignment gave up
!          --  because, in this case, the object size is not a multiple of the
!          --  alignment and, therefore, cannot be the component size.
  
           if Ekind (E) = E_Array_Type and then Unknown_Component_Size (E) then
              declare
--- 436,446 ----
           end if;
  
           --  For array base types, set the component size if object size of the
!          --  component type is known and is a small power of 2 (8, 16, 32, 64
!          --  or 128), since this is what will always be used, except if a very
!          --  large alignment was specified and so Adjust_Esize_For_Alignment
!          --  gave up because, in this case, the object size is not a multiple
!          --  of the alignment and, therefore, cannot be the component size.
  
           if Ekind (E) = E_Array_Type and then Unknown_Component_Size (E) then
              declare
*************** package body Layout is
*** 455,461 ****
                   and then Known_Static_Esize (CT)
                   and then not (Known_Alignment (CT)
                                  and then Alignment_In_Bits (CT) >
!                                            Standard_Long_Long_Integer_Size)
                 then
                    declare
                       S : constant Uint := Esize (CT);
--- 455,461 ----
                   and then Known_Static_Esize (CT)
                   and then not (Known_Alignment (CT)
                                  and then Alignment_In_Bits (CT) >
!                                            System_Max_Integer_Size)
                 then
                    declare
                       S : constant Uint := Esize (CT);
*************** package body Layout is
*** 467,472 ****
--- 467,488 ----
                 end if;
              end;
           end if;
+ 
+          --  For non-packed arrays set the alignment of the array to the
+          --  alignment of the component type if it is unknown. Skip this
+          --  in full access case since a larger alignment may be needed.
+ 
+          if Is_Array_Type (E)
+            and then not Is_Packed (E)
+            and then Unknown_Alignment (E)
+            and then Known_Alignment (Component_Type (E))
+            and then Known_Static_Component_Size (E)
+            and then Known_Static_Esize (Component_Type (E))
+            and then Component_Size (E) = Esize (Component_Type (E))
+            and then not Is_Full_Access (E)
+          then
+             Set_Alignment (E, Alignment (Component_Type (E)));
+          end if;
        end if;
  
        --  Even if the backend performs the layout, we still do a little in
*************** package body Layout is
*** 489,499 ****
  
        elsif Is_Array_Type (E) then
  
!          --  For arrays that are required to be atomic/VFA, we do the same
!          --  processing as described above for short records, since we
!          --  really need to have the alignment set for the whole array.
  
!          if Is_Atomic_Or_VFA (E) and then not Debug_Flag_Q then
              Set_Composite_Alignment (E);
           end if;
  
--- 505,515 ----
  
        elsif Is_Array_Type (E) then
  
!          --  For arrays that are required to be full access, we do the same
!          --  processing as described above for short records, since we really
!          --  need to have the alignment set for the whole array.
  
!          if Is_Full_Access (E) and then not Debug_Flag_Q then
              Set_Composite_Alignment (E);
           end if;
  
*************** package body Layout is
*** 599,607 ****
          and then Is_Record_Type (E)
          and then Is_Packed (E)
        then
!          --  No effect for record with atomic/VFA components
  
!          if Is_Atomic_Or_VFA (E) then
              Error_Msg_N ("Optimize_Alignment has no effect for &??", E);
  
              if Is_Atomic (E) then
--- 615,623 ----
          and then Is_Record_Type (E)
          and then Is_Packed (E)
        then
!          --  No effect for record with full access components
  
!          if Is_Full_Access (E) then
              Error_Msg_N ("Optimize_Alignment has no effect for &??", E);
  
              if Is_Atomic (E) then
*************** package body Layout is
*** 624,630 ****
              return;
           end if;
  
!          --  No effect if any component is atomic/VFA or is a by-reference type
  
           declare
              Ent : Entity_Id;
--- 640,646 ----
              return;
           end if;
  
!          --  No effect if a component is full access or of a by-reference type
  
           declare
              Ent : Entity_Id;
*************** package body Layout is
*** 633,640 ****
              Ent := First_Component_Or_Discriminant (E);
              while Present (Ent) loop
                 if Is_By_Reference_Type (Etype (Ent))
!                  or else Is_Atomic_Or_VFA (Etype (Ent))
!                  or else Is_Atomic_Or_VFA (Ent)
                 then
                    Error_Msg_N ("Optimize_Alignment has no effect for &??", E);
  
--- 649,656 ----
              Ent := First_Component_Or_Discriminant (E);
              while Present (Ent) loop
                 if Is_By_Reference_Type (Etype (Ent))
!                  or else Is_Full_Access (Etype (Ent))
!                  or else Is_Full_Access (Ent)
                 then
                    Error_Msg_N ("Optimize_Alignment has no effect for &??", E);
  
*************** package body Layout is
*** 644,650 ****
                          & "components present??", E);
                    else
                       Error_Msg_N
!                        ("\pragma is ignored if bolatile full access "
                          & "components present??", E);
                    end if;
  
--- 660,666 ----
                          & "components present??", E);
                    else
                       Error_Msg_N
!                        ("\pragma is ignored if volatile full access "
                          & "components present??", E);
                    end if;
  
*************** package body Layout is
*** 740,748 ****
  
        --  Further processing for record types only to reduce the alignment
        --  set by the above processing in some specific cases. We do not
!       --  do this for atomic/VFA records, since we need max alignment there,
  
!       if Is_Record_Type (E) and then not Is_Atomic_Or_VFA (E) then
  
           --  For records, there is generally no point in setting alignment
           --  higher than word size since we cannot do better than move by
--- 756,764 ----
  
        --  Further processing for record types only to reduce the alignment
        --  set by the above processing in some specific cases. We do not
!       --  do this for full access records, since we need max alignment there,
  
!       if Is_Record_Type (E) and then not Is_Full_Access (E) then
  
           --  For records, there is generally no point in setting alignment
           --  higher than word size since we cannot do better than move by
diff -Nrcpad gcc-10.3.0/gcc/ada/layout.ads gcc-11.1.0/gcc/ada/layout.ads
*** gcc-10.3.0/gcc/ada/layout.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/layout.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/lib-list.adb gcc-11.1.0/gcc/ada/lib-list.adb
*** gcc-10.3.0/gcc/ada/lib-list.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/lib-list.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/lib-load.adb gcc-11.1.0/gcc/ada/lib-load.adb
*** gcc-10.3.0/gcc/ada/lib-load.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/lib-load.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Lib.Load is
*** 551,557 ****
        --  Note: Unit_Name (Main_Unit) is not set if we are parsing gnat.adc.
  
        if Present (Error_Node)
!         and then Unit_Name (Main_Unit) /= No_Unit_Name
        then
           --  It seems like In_Extended_Main_Source_Unit (Error_Node) would
           --  do the trick here, but that's wrong, it is much too early to
--- 551,557 ----
        --  Note: Unit_Name (Main_Unit) is not set if we are parsing gnat.adc.
  
        if Present (Error_Node)
!         and then Present (Unit_Name (Main_Unit))
        then
           --  It seems like In_Extended_Main_Source_Unit (Error_Node) would
           --  do the trick here, but that's wrong, it is much too early to
*************** package body Lib.Load is
*** 646,652 ****
                    else
                       Error_Msg_File_1 := Fname;
                       Error_Msg_Unit_1 := Uname_Actual;
!                      Error_Msg ("File{ does not contain unit$", Load_Msg_Sloc);
                    end if;
  
                    Write_Dependency_Chain;
--- 646,652 ----
                    else
                       Error_Msg_File_1 := Fname;
                       Error_Msg_Unit_1 := Uname_Actual;
!                      Error_Msg ("file{ does not contain unit$", Load_Msg_Sloc);
                    end if;
  
                    Write_Dependency_Chain;
diff -Nrcpad gcc-10.3.0/gcc/ada/lib-load.ads gcc-11.1.0/gcc/ada/lib-load.ads
*** gcc-10.3.0/gcc/ada/lib-load.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/lib-load.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/lib-sort.adb gcc-11.1.0/gcc/ada/lib-sort.adb
*** gcc-10.3.0/gcc/ada/lib-sort.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/lib-sort.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/lib-util.adb gcc-11.1.0/gcc/ada/lib-util.adb
*** gcc-10.3.0/gcc/ada/lib-util.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/lib-util.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/lib-util.ads gcc-11.1.0/gcc/ada/lib-util.ads
*** gcc-10.3.0/gcc/ada/lib-util.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/lib-util.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/lib-writ.adb gcc-11.1.0/gcc/ada/lib-writ.adb
*** gcc-10.3.0/gcc/ada/lib-writ.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/lib-writ.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Lib.Writ is
*** 268,284 ****
        --  Collect with lines for entries in the context clause of the given
        --  compilation unit, Cunit.
  
-       procedure Update_Tables_From_ALI_File;
-       --  Given an up to date ALI file (see Up_To_Date_ALI_file_Exists
-       --  function), update tables from the ALI information, including
-       --  specifically the Compilation_Switches table.
- 
-       function Up_To_Date_ALI_File_Exists return Boolean;
-       --  If there exists an ALI file that is up to date, then this function
-       --  initializes the tables in the ALI spec to contain information on
-       --  this file (using Scan_ALI) and returns True. If no file exists,
-       --  or the file is not up to date, then False is returned.
- 
        procedure Write_Unit_Information (Unit_Num : Unit_Number_Type);
        --  Write out the library information for one unit for which code is
        --  generated (includes unit line and with lines).
--- 268,273 ----
*************** package body Lib.Writ is
*** 397,472 ****
           end loop;
        end Collect_Withs;
  
-       --------------------------------
-       -- Up_To_Date_ALI_File_Exists --
-       --------------------------------
- 
-       function Up_To_Date_ALI_File_Exists return Boolean is
-          Name : File_Name_Type;
-          Text : Text_Buffer_Ptr;
-          Id   : Sdep_Id;
-          Sind : Source_File_Index;
- 
-       begin
-          Opt.Check_Object_Consistency := True;
-          Read_Library_Info (Name, Text);
- 
-          --  Return if we could not find an ALI file
- 
-          if Text = null then
-             return False;
-          end if;
- 
-          --  Return if ALI file has bad format
- 
-          Initialize_ALI;
- 
-          if Scan_ALI (Name, Text, False, Err => True) = No_ALI_Id then
-             return False;
-          end if;
- 
-          --  If we have an OK ALI file, check if it is up to date
-          --  Note that we assume that the ALI read has all the entries
-          --  we have in our table, plus some additional ones (that can
-          --  come from expansion).
- 
-          Id := First_Sdep_Entry;
-          for J in 1 .. Num_Sdep loop
-             Sind := Source_Index (Sdep_Table (J));
- 
-             while Sdep.Table (Id).Sfile /= File_Name (Sind) loop
-                if Id = Sdep.Last then
-                   return False;
-                else
-                   Id := Id + 1;
-                end if;
-             end loop;
- 
-             if Sdep.Table (Id).Stamp /= Time_Stamp (Sind) then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end Up_To_Date_ALI_File_Exists;
- 
-       ---------------------------------
-       -- Update_Tables_From_ALI_File --
-       ---------------------------------
- 
-       procedure Update_Tables_From_ALI_File is
-       begin
-          --  Build Compilation_Switches table
- 
-          Compilation_Switches.Init;
- 
-          for J in First_Arg_Entry .. Args.Last loop
-             Compilation_Switches.Increment_Last;
-             Compilation_Switches.Table (Compilation_Switches.Last) :=
-               Args.Table (J);
-          end loop;
-       end Update_Tables_From_ALI_File;
- 
        ----------------------------
        -- Write_Unit_Information --
        ----------------------------
--- 386,391 ----
*************** package body Lib.Writ is
*** 562,568 ****
           Write_Info_Str (" O");
           Write_Info_Char (OA_Setting (Unit_Num));
  
!          if Ekind_In (Uent, E_Package, E_Package_Body)
             and then Present (Finalizer (Uent))
           then
              Write_Info_Str (" PF");
--- 481,487 ----
           Write_Info_Str (" O");
           Write_Info_Char (OA_Setting (Unit_Num));
  
!          if Ekind (Uent) in E_Package | E_Package_Body
             and then Present (Finalizer (Uent))
           then
              Write_Info_Str (" PF");
*************** package body Lib.Writ is
*** 918,924 ****
              --  preprocessing data and definition files, there is no Unit_Name,
              --  check for that first.
  
!             if Unit_Name (J) /= No_Unit_Name
                and then (With_Flags (J) or else Unit_Name (J) = Pname)
              then
                 Num_Withs := Num_Withs + 1;
--- 837,843 ----
              --  preprocessing data and definition files, there is no Unit_Name,
              --  check for that first.
  
!             if Present (Unit_Name (J))
                and then (With_Flags (J) or else Unit_Name (J) = Pname)
              then
                 Num_Withs := Num_Withs + 1;
*************** package body Lib.Writ is
*** 1095,1102 ****
           return;
        end if;
  
!       --  Build sorted source dependency table. We do this right away, because
!       --  it is referenced by Up_To_Date_ALI_File_Exists.
  
        for Unum in Units.First .. Last_Unit loop
           if Cunit_Entity (Unum) = Empty
--- 1014,1020 ----
           return;
        end if;
  
!       --  Build sorted source dependency table.
  
        for Unum in Units.First .. Last_Unit loop
           if Cunit_Entity (Unum) = Empty
*************** package body Lib.Writ is
*** 1130,1149 ****
  
        Lib.Sort (Sdep_Table (1 .. Num_Sdep));
  
!       --  If we are not generating code, and there is an up to date ALI file
!       --  file accessible, read it, and acquire the compilation arguments from
!       --  this file. In GNATprove mode, always generate the ALI file, which
!       --  contains a special section for formal verification.
! 
!       if Operating_Mode /= Generate_Code and then not GNATprove_Mode then
!          if Up_To_Date_ALI_File_Exists then
!             Update_Tables_From_ALI_File;
!             return;
!          end if;
!       end if;
! 
!       --  Otherwise acquire compilation arguments and prepare to write out a
!       --  new ali file.
  
        Create_Output_Library_Info;
  
--- 1048,1055 ----
  
        Lib.Sort (Sdep_Table (1 .. Num_Sdep));
  
!       --  Acquire compilation arguments and prepare to write out a new ali
!       --  file.
  
        Create_Output_Library_Info;
  
*************** package body Lib.Writ is
*** 1219,1227 ****
  
              if Nkind (U) = N_Subprogram_Body
                and then Present (Corresponding_Spec (U))
!               and then
!                 Ekind_In (Corresponding_Spec (U), E_Generic_Procedure,
!                                                   E_Generic_Function)
              then
                 null;
  
--- 1125,1131 ----
  
              if Nkind (U) = N_Subprogram_Body
                and then Present (Corresponding_Spec (U))
!               and then Is_Generic_Subprogram (Corresponding_Spec (U))
              then
                 null;
  
*************** package body Lib.Writ is
*** 1572,1582 ****
              --  Normal case of a unit entry with a source index
  
              if Sind > No_Source_File then
-                --  We never want directory information in ALI files
-                --  ???But back out this change temporarily until
-                --  gprbuild is fixed.
  
!                if False then
                    Fname := Strip_Directory (File_Name (Sind));
                 else
                    Fname := File_Name (Sind);
--- 1476,1483 ----
              --  Normal case of a unit entry with a source index
  
              if Sind > No_Source_File then
  
!                if Config_Files_Store_Basename then
                    Fname := Strip_Directory (File_Name (Sind));
                 else
                    Fname := File_Name (Sind);
*************** package body Lib.Writ is
*** 1823,1829 ****
  
        --  scope
  
!       Write_Info_Name (Scope (IS_Id));
        Write_Info_Char (' ');
  
        --  line
--- 1724,1730 ----
  
        --  scope
  
!       Write_Info_Name (IS_Scope (IS_Id));
        Write_Info_Char (' ');
  
        --  line
diff -Nrcpad gcc-10.3.0/gcc/ada/lib-writ.ads gcc-11.1.0/gcc/ada/lib-writ.ads
*** gcc-10.3.0/gcc/ada/lib-writ.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/lib-writ.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Lib.Writ is
*** 1051,1064 ****
     procedure Write_ALI (Object : Boolean);
     --  This procedure writes the library information for the current main unit
     --  The Object parameter is true if an object file is created, and false
!    --  otherwise. Note that the pseudo-object file generated in GNATProve mode
     --  does count as an object file from this point of view.
-    --
-    --  Note: in the case where we are not generating code (-gnatc mode), this
-    --  routine only writes an ALI file if it cannot find an existing up to
-    --  date ALI file. If it *can* find an existing up to date ALI file, then
-    --  it reads this file and sets the Lib.Compilation_Arguments table from
-    --  the A lines in this file.
  
     procedure Add_Preprocessing_Dependency (S : Source_File_Index);
     --  Indicate that there is a dependency to be added on a preprocessing data
--- 1051,1058 ----
     procedure Write_ALI (Object : Boolean);
     --  This procedure writes the library information for the current main unit
     --  The Object parameter is true if an object file is created, and false
!    --  otherwise. Note that the pseudo-object file generated in GNATprove mode
     --  does count as an object file from this point of view.
  
     procedure Add_Preprocessing_Dependency (S : Source_File_Index);
     --  Indicate that there is a dependency to be added on a preprocessing data
diff -Nrcpad gcc-10.3.0/gcc/ada/lib-xref-spark_specific.adb gcc-11.1.0/gcc/ada/lib-xref-spark_specific.adb
*** gcc-10.3.0/gcc/ada/lib-xref-spark_specific.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/lib-xref-spark_specific.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body SPARK_Specific is
*** 181,191 ****
        --  If N is the defining identifier for a subprogram, then return the
        --  enclosing subprogram or package, not this subprogram.
  
!       if Nkind_In (N, N_Defining_Identifier, N_Defining_Operator_Symbol)
!         and then (Ekind (N) in Entry_Kind
!                    or else Ekind (N) = E_Subprogram_Body
!                    or else Ekind (N) in Generic_Subprogram_Kind
!                    or else Ekind (N) in Subprogram_Kind)
        then
           Context := Parent (Unit_Declaration_Node (N));
  
--- 181,191 ----
        --  If N is the defining identifier for a subprogram, then return the
        --  enclosing subprogram or package, not this subprogram.
  
!       if Nkind (N) in N_Defining_Identifier | N_Defining_Operator_Symbol
!         and then Ekind (N) in Entry_Kind
!                             | E_Subprogram_Body
!                             | Generic_Subprogram_Kind
!                             | Subprogram_Kind
        then
           Context := Parent (Unit_Declaration_Node (N));
  
*************** package body SPARK_Specific is
*** 291,300 ****
  
        procedure Create_Heap is
        begin
!          Name_Len := Name_Of_Heap_Variable'Length;
!          Name_Buffer (1 .. Name_Len) := Name_Of_Heap_Variable;
! 
!          Heap := Make_Defining_Identifier (Standard_Location, Name_Enter);
  
           Set_Ekind       (Heap, E_Variable);
           Set_Is_Internal (Heap, True);
--- 291,300 ----
  
        procedure Create_Heap is
        begin
!          Heap :=
!            Make_Defining_Identifier
!              (Standard_Location,
!               Name_Enter (Name_Of_Heap_Variable));
  
           Set_Ekind       (Heap, E_Variable);
           Set_Is_Internal (Heap, True);
diff -Nrcpad gcc-10.3.0/gcc/ada/lib-xref.adb gcc-11.1.0/gcc/ada/lib-xref.adb
*** gcc-10.3.0/gcc/ada/lib-xref.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/lib-xref.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Lib.Xref is
*** 53,58 ****
--- 53,66 ----
     -- Declarations --
     ------------------
  
+    package Deferred_References is new Table.Table (
+      Table_Component_Type => Deferred_Reference_Entry,
+      Table_Index_Type     => Int,
+      Table_Low_Bound      => 0,
+      Table_Initial        => 512,
+      Table_Increment      => 200,
+      Table_Name           => "Name_Deferred_References");
+ 
     --  The Xref table is used to record references. The Loc field is set
     --  to No_Location for a definition entry.
  
*************** package body Lib.Xref is
*** 199,204 ****
--- 207,227 ----
        end if;
     end Add_Entry;
  
+    ---------------------
+    -- Defer_Reference --
+    ---------------------
+ 
+    procedure Defer_Reference (Deferred_Reference : Deferred_Reference_Entry) is
+    begin
+       --  If Get_Ignore_Errors, then we are in Preanalyze_Without_Errors, and
+       --  we should not record cross references, because that will cause
+       --  duplicates when we call Analyze.
+ 
+       if not Get_Ignore_Errors then
+          Deferred_References.Append (Deferred_Reference);
+       end if;
+    end Defer_Reference;
+ 
     -----------
     -- Equal --
     -----------
*************** package body Lib.Xref is
*** 569,578 ****
                 P := Parent (P);
  
                 if Nkind (P) = N_Pragma then
!                   if Nam_In (Pragma_Name_Unmapped (P),
!                              Name_Warnings,
!                              Name_Unmodified,
!                              Name_Unreferenced)
                    then
                       return False;
                    end if;
--- 592,600 ----
                 P := Parent (P);
  
                 if Nkind (P) = N_Pragma then
!                   if Pragma_Name_Unmapped (P) in Name_Warnings
!                                                | Name_Unmodified
!                                                | Name_Unreferenced
                    then
                       return False;
                    end if;
*************** package body Lib.Xref is
*** 596,602 ****
     --  Start of processing for Generate_Reference
  
     begin
!       pragma Assert (Nkind (E) in N_Entity);
        Find_Actual (N, Formal, Call);
  
        if Present (Formal) then
--- 618,637 ----
     --  Start of processing for Generate_Reference
  
     begin
!       --  If Get_Ignore_Errors, then we are in Preanalyze_Without_Errors, and
!       --  we should not record cross references, because that will cause
!       --  duplicates when we call Analyze.
! 
!       if Get_Ignore_Errors then
!          return;
!       end if;
! 
!       --  May happen in case of severe errors
! 
!       if Nkind (E) not in N_Entity then
!          return;
!       end if;
! 
        Find_Actual (N, Formal, Call);
  
        if Present (Formal) then
*************** package body Lib.Xref is
*** 784,790 ****
                 end if;
  
              --  For the left hand of an assignment case, we do nothing here.
!             --  The processing for Analyze_Assignment_Statement will set the
              --  Referenced_As_LHS flag.
  
              else
--- 819,825 ----
                 end if;
  
              --  For the left hand of an assignment case, we do nothing here.
!             --  The processing for Analyze_Assignment will set the
              --  Referenced_As_LHS flag.
  
              else
*************** package body Lib.Xref is
*** 911,917 ****
              --  since the attribute acts as an anonymous alias of the function
              --  result and not as a real reference to the function.
  
!             elsif Ekind_In (E, E_Function, E_Generic_Function)
                and then Is_Entity_Name (N)
                and then Is_Attribute_Result (Parent (N))
              then
--- 946,952 ----
              --  since the attribute acts as an anonymous alias of the function
              --  result and not as a real reference to the function.
  
!             elsif Ekind (E) in E_Function | E_Generic_Function
                and then Is_Entity_Name (N)
                and then Is_Attribute_Result (Parent (N))
              then
*************** package body Lib.Xref is
*** 1006,1023 ****
  
          and then Typ /= ' '
        then
!          if Nkind_In (N, N_Identifier,
!                          N_Defining_Identifier,
!                          N_Defining_Operator_Symbol,
!                          N_Operator_Symbol,
!                          N_Defining_Character_Literal)
!            or else Nkind (N) in N_Op
             or else (Nkind (N) = N_Character_Literal
                       and then Sloc (Entity (N)) /= Standard_Location)
           then
              Nod := N;
  
!          elsif Nkind_In (N, N_Expanded_Name, N_Selected_Component) then
              Nod := Selector_Name (N);
  
           else
--- 1041,1058 ----
  
          and then Typ /= ' '
        then
!          if Nkind (N) in N_Identifier
!                        | N_Defining_Identifier
!                        | N_Defining_Operator_Symbol
!                        | N_Operator_Symbol
!                        | N_Defining_Character_Literal
!                        | N_Op
             or else (Nkind (N) = N_Character_Literal
                       and then Sloc (Entity (N)) /= Standard_Location)
           then
              Nod := N;
  
!          elsif Nkind (N) in N_Expanded_Name | N_Selected_Component then
              Nod := Selector_Name (N);
  
           else
*************** package body Lib.Xref is
*** 1135,1141 ****
              --  reads/writes of private protected components) and not worth the
              --  effort.
  
!             if Ekind_In (Ent, E_Abstract_State, E_Constant, E_Variable)
                and then Present (Encapsulating_State (Ent))
                and then Is_Single_Concurrent_Object (Encapsulating_State (Ent))
              then
--- 1170,1176 ----
              --  reads/writes of private protected components) and not worth the
              --  effort.
  
!             if Ekind (Ent) in E_Abstract_State | E_Constant | E_Variable
                and then Present (Encapsulating_State (Ent))
                and then Is_Single_Concurrent_Object (Encapsulating_State (Ent))
              then
*************** package body Lib.Xref is
*** 1652,1658 ****
        begin
           --  Generate language name from convention
  
!          if Conv  = Convention_C then
              Language_Name := Name_C;
  
           elsif Conv = Convention_CPP then
--- 1687,1693 ----
        begin
           --  Generate language name from convention
  
!          if Conv = Convention_C or else Conv in Convention_C_Variadic then
              Language_Name := Name_C;
  
           elsif Conv = Convention_CPP then
*************** package body Lib.Xref is
*** 2314,2328 ****
                    --  Special handling for access parameters and objects and
                    --  components of an anonymous access type.
  
!                   if Ekind_In (Etype (XE.Key.Ent),
!                                E_Anonymous_Access_Type,
!                                E_Anonymous_Access_Subprogram_Type,
!                                E_Anonymous_Access_Protected_Subprogram_Type)
                    then
                       if Is_Formal (XE.Key.Ent)
                         or else
!                          Ekind_In
!                            (XE.Key.Ent, E_Variable, E_Constant, E_Component)
                       then
                          Ctyp := 'p';
                       end if;
--- 2349,2363 ----
                    --  Special handling for access parameters and objects and
                    --  components of an anonymous access type.
  
!                   if Ekind (Etype (XE.Key.Ent)) in
!                                E_Anonymous_Access_Type
!                              | E_Anonymous_Access_Subprogram_Type
!                              | E_Anonymous_Access_Protected_Subprogram_Type
                    then
                       if Is_Formal (XE.Key.Ent)
                         or else
!                          Ekind (XE.Key.Ent) in
!                            E_Variable | E_Constant | E_Component
                       then
                          Ctyp := 'p';
                       end if;
diff -Nrcpad gcc-10.3.0/gcc/ada/lib-xref.ads gcc-11.1.0/gcc/ada/lib-xref.ads
*** gcc-10.3.0/gcc/ada/lib-xref.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/lib-xref.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Lib.Xref is
*** 514,520 ****
  
        E_Package_Body                               => ' ',
        E_Protected_Body                             => ' ',
-       E_Protected_Object                           => ' ',
        E_Subprogram_Body                            => ' ',
        E_Task_Body                                  => ' ');
  
--- 514,519 ----
*************** package Lib.Xref is
*** 592,599 ****
  
     --  What we do in such cases is to gather nodes, where we would have liked
     --  to call Generate_Reference but we couldn't because we didn't know enough
!    --  into this table, Then we deal with generating references later on when
!    --  we have sufficient information to do it right.
  
     type Deferred_Reference_Entry is record
        E : Entity_Id;
--- 591,598 ----
  
     --  What we do in such cases is to gather nodes, where we would have liked
     --  to call Generate_Reference but we couldn't because we didn't know enough
!    --  into a table, then we deal with generating references later on when we
!    --  have sufficient information to do it right.
  
     type Deferred_Reference_Entry is record
        E : Entity_Id;
*************** package Lib.Xref is
*** 601,613 ****
     end record;
     --  One entry, E, N are as required for Generate_Reference call
  
!    package Deferred_References is new Table.Table (
!      Table_Component_Type => Deferred_Reference_Entry,
!      Table_Index_Type     => Int,
!      Table_Low_Bound      => 0,
!      Table_Initial        => 512,
!      Table_Increment      => 200,
!      Table_Name           => "Name_Deferred_References");
  
     procedure Process_Deferred_References;
     --  This procedure is called from Frontend to process these table entries.
--- 600,607 ----
     end record;
     --  One entry, E, N are as required for Generate_Reference call
  
!    procedure Defer_Reference (Deferred_Reference : Deferred_Reference_Entry);
!    --  Add one entry to the deferred reference table
  
     procedure Process_Deferred_References;
     --  This procedure is called from Frontend to process these table entries.
diff -Nrcpad gcc-10.3.0/gcc/ada/lib.adb gcc-11.1.0/gcc/ada/lib.adb
*** gcc-10.3.0/gcc/ada/lib.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/lib.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** with Sinfo;    use Sinfo;
*** 43,49 ****
  with Sinput;   use Sinput;
  with Stand;    use Stand;
  with Stringt;  use Stringt;
- with Tree_IO;  use Tree_IO;
  with Uname;    use Uname;
  with Widechar; use Widechar;
  
--- 37,42 ----
*************** package body Lib is
*** 282,288 ****
     begin
        --  First unregister the old name, if any
  
!       if Old_N /= No_Unit_Name and then Unit_Names.Get (Old_N) = U then
           Unit_Names.Set (Old_N, No_Unit);
        end if;
  
--- 275,281 ----
     begin
        --  First unregister the old name, if any
  
!       if Present (Old_N) and then Unit_Names.Get (Old_N) = U then
           Unit_Names.Set (Old_N, No_Unit);
        end if;
  
*************** package body Lib is
*** 363,368 ****
--- 356,367 ----
           --  Step 2: Check subunits. If a subunit is instantiated, follow the
           --  instantiation chain rather than the stub chain.
  
+          --  Note that we must handle the case where the subunit exists in the
+          --  same body as the main unit (which may happen when Naming gets
+          --  manually specified within a project file or through tools like
+          --  gprname). Otherwise, we will have an infinite loop jumping around
+          --  the same file.
+ 
           Unit1 := Unit (Cunit (Unum1));
           Unit2 := Unit (Cunit (Unum2));
           Inst1 := Instantiation (Sind1);
*************** package body Lib is
*** 385,405 ****
                    Length_Of_Name (Unit_Name (Unum2))
                 then
                    Sloc2 := Sloc (Corresponding_Stub (Unit2));
-                   Unum2 := Get_Source_Unit (Sloc2);
-                   goto Continue;
  
                 else
                    Sloc1 := Sloc (Corresponding_Stub (Unit1));
!                   Unum1 := Get_Source_Unit (Sloc1);
!                   goto Continue;
                 end if;
  
              --  Sloc1 in subunit, Sloc2 not
  
              else
                 Sloc1 := Sloc (Corresponding_Stub (Unit1));
!                Unum1 := Get_Source_Unit (Sloc1);
!                goto Continue;
              end if;
  
           --  Sloc2 in subunit, Sloc1 not
--- 384,418 ----
                    Length_Of_Name (Unit_Name (Unum2))
                 then
                    Sloc2 := Sloc (Corresponding_Stub (Unit2));
  
+                   if Unum2 /= Get_Source_Unit (Sloc2) then
+                      Unum2 := Get_Source_Unit (Sloc2);
+                      goto Continue;
+                   else
+                      null; --  Unum2 already designates the correct unit
+                   end if;
                 else
                    Sloc1 := Sloc (Corresponding_Stub (Unit1));
! 
!                   if Unum1 /= Get_Source_Unit (Sloc1) then
!                      Unum1 := Get_Source_Unit (Sloc1);
!                      goto Continue;
!                   else
!                      null; --  Unum1 already designates the correct unit
!                   end if;
                 end if;
  
              --  Sloc1 in subunit, Sloc2 not
  
              else
                 Sloc1 := Sloc (Corresponding_Stub (Unit1));
! 
!                if Unum1 /= Get_Source_Unit (Sloc1) then
!                   Unum1 := Get_Source_Unit (Sloc1);
!                   goto Continue;
!                else
!                   null; --  Unum1 already designates the correct unit
!                end if;
              end if;
  
           --  Sloc2 in subunit, Sloc1 not
*************** package body Lib is
*** 409,416 ****
             and then Inst2 = No_Location
           then
              Sloc2 := Sloc (Corresponding_Stub (Unit2));
!             Unum2 := Get_Source_Unit (Sloc2);
!             goto Continue;
           end if;
  
           --  Step 3: Check instances. The two locations may yield a common
--- 422,434 ----
             and then Inst2 = No_Location
           then
              Sloc2 := Sloc (Corresponding_Stub (Unit2));
! 
!             if Unum2 /= Get_Source_Unit (Sloc2) then
!                Unum2 := Get_Source_Unit (Sloc2);
!                goto Continue;
!             else
!                null; --  Unum2 already designates the correct unit
!             end if;
           end if;
  
           --  Step 3: Check instances. The two locations may yield a common
*************** package body Lib is
*** 1254,1303 ****
        TSN := TSN + 1;
     end Synchronize_Serial_Number;
  
-    ---------------
-    -- Tree_Read --
-    ---------------
- 
-    procedure Tree_Read is
-       N : Nat;
-       S : String_Ptr;
- 
-    begin
-       Units.Tree_Read;
- 
-       --  Read Compilation_Switches table. First release the memory occupied
-       --  by the previously loaded switches.
- 
-       for J in Compilation_Switches.First .. Compilation_Switches.Last loop
-          Free (Compilation_Switches.Table (J));
-       end loop;
- 
-       Tree_Read_Int (N);
-       Compilation_Switches.Set_Last (N);
- 
-       for J in 1 .. N loop
-          Tree_Read_Str (S);
-          Compilation_Switches.Table (J) := S;
-       end loop;
-    end Tree_Read;
- 
-    ----------------
-    -- Tree_Write --
-    ----------------
- 
-    procedure Tree_Write is
-    begin
-       Units.Tree_Write;
- 
-       --  Write Compilation_Switches table
- 
-       Tree_Write_Int (Compilation_Switches.Last);
- 
-       for J in 1 .. Compilation_Switches.Last loop
-          Tree_Write_Str (Compilation_Switches.Table (J));
-       end loop;
-    end Tree_Write;
- 
     --------------------
     -- Unit_Name_Hash --
     --------------------
--- 1272,1277 ----
*************** package body Lib is
*** 1380,1386 ****
             and then (Nkind (Context_Item) /= N_With_Clause
                        or else Limited_Present (Context_Item))
           loop
!             Context_Item := Next (Context_Item);
           end loop;
  
           if Present (Context_Item) then
--- 1354,1360 ----
             and then (Nkind (Context_Item) /= N_With_Clause
                        or else Limited_Present (Context_Item))
           loop
!             Next (Context_Item);
           end loop;
  
           if Present (Context_Item) then
*************** package body Lib is
*** 1404,1410 ****
                    Write_Eol;
                 end if;
  
!                Context_Item := Next (Context_Item);
              end loop;
  
              Outdent;
--- 1378,1384 ----
                    Write_Eol;
                 end if;
  
!                Next (Context_Item);
              end loop;
  
              Outdent;
diff -Nrcpad gcc-10.3.0/gcc/ada/lib.ads gcc-11.1.0/gcc/ada/lib.ads
*** gcc-10.3.0/gcc/ada/lib.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/lib.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Lib is
*** 537,543 ****
  
     function Get_Compilation_Switch (N : Pos) return String_Ptr;
     --  Return the Nth stored compilation switch, or null if less than N
!    --  switches have been stored. Used by ASIS and back ends written in Ada.
  
     function Generic_May_Lack_ALI (Unum : Unit_Number_Type) return Boolean;
     --  Generic units must be separately compiled. Since we always use
--- 531,537 ----
  
     function Get_Compilation_Switch (N : Pos) return String_Ptr;
     --  Return the Nth stored compilation switch, or null if less than N
!    --  switches have been stored. Used by back ends written in Ada.
  
     function Generic_May_Lack_ALI (Unum : Unit_Number_Type) return Boolean;
     --  Generic units must be separately compiled. Since we always use
*************** package Lib is
*** 755,768 ****
     --  important to keep the serial numbers synchronized in the two cases (e.g.
     --  when the references in a package and a client must be kept consistent).
  
-    procedure Tree_Read;
-    --  Initializes internal tables from current tree file using the relevant
-    --  Table.Tree_Read routines.
- 
-    procedure Tree_Write;
-    --  Writes out internal tables to current tree file using the relevant
-    --  Table.Tree_Write routines.
- 
     procedure Unlock;
     --  Unlock internal tables, in cases where the back end needs to modify them
  
--- 749,754 ----
*************** private
*** 998,1009 ****
     --  The following table records the compilation switches used to compile
     --  the main unit. The table includes only switches. It excludes -o
     --  switches as well as artifacts of the gcc/gnat1 interface such as
!    --  -quiet, -dumpbase, or -auxbase.
  
     --  This table is set as part of the compiler argument scanning in
     --  Back_End. It can also be reset in -gnatc mode from the data in an
!    --  existing ali file, and is read and written by the Tree_Read and
!    --  Tree_Write routines for ASIS.
  
     package Compilation_Switches is new Table.Table (
       Table_Component_Type => String_Ptr,
--- 984,994 ----
     --  The following table records the compilation switches used to compile
     --  the main unit. The table includes only switches. It excludes -o
     --  switches as well as artifacts of the gcc/gnat1 interface such as
!    --  -quiet, or -dumpbase.
  
     --  This table is set as part of the compiler argument scanning in
     --  Back_End. It can also be reset in -gnatc mode from the data in an
!    --  existing ali file.
  
     package Compilation_Switches is new Table.Table (
       Table_Component_Type => String_Ptr,
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-astaco.adb gcc-11.1.0/gcc/ada/libgnarl/a-astaco.adb
*** gcc-10.3.0/gcc/ada/libgnarl/a-astaco.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-astaco.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-dispat.adb gcc-11.1.0/gcc/ada/libgnarl/a-dispat.adb
*** gcc-10.3.0/gcc/ada/libgnarl/a-dispat.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-dispat.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2015-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2015-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-dynpri.adb gcc-11.1.0/gcc/ada/libgnarl/a-dynpri.adb
*** gcc-10.3.0/gcc/ada/libgnarl/a-dynpri.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-dynpri.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,37 ****
  
  with System.Task_Primitives.Operations;
  with System.Tasking;
- with System.Parameters;
  with System.Soft_Links;
  
  with Ada.Unchecked_Conversion;
--- 31,36 ----
*************** package body Ada.Dynamic_Priorities is
*** 41,47 ****
     package STPO renames System.Task_Primitives.Operations;
     package SSL renames System.Soft_Links;
  
-    use System.Parameters;
     use System.Tasking;
  
     function Convert_Ids is new
--- 40,45 ----
*************** package body Ada.Dynamic_Priorities is
*** 103,112 ****
  
        SSL.Abort_Defer.all;
  
-       if Single_Lock then
-          STPO.Lock_RTS;
-       end if;
- 
        STPO.Write_Lock (Target);
  
        Target.Common.Base_Priority := Priority;
--- 101,106 ----
*************** package body Ada.Dynamic_Priorities is
*** 141,150 ****
  
        STPO.Unlock (Target);
  
-       if Single_Lock then
-          STPO.Unlock_RTS;
-       end if;
- 
        if STPO.Self = Target and then Yield_Needed then
  
           --  Yield is needed to enforce FIFO task dispatching
--- 135,140 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-etgrbu.ads gcc-11.1.0/gcc/ada/libgnarl/a-etgrbu.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-etgrbu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-etgrbu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2015-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2015-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-exetim__darwin.adb gcc-11.1.0/gcc/ada/libgnarl/a-exetim__darwin.adb
*** gcc-10.3.0/gcc/ada/libgnarl/a-exetim__darwin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-exetim__darwin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-exetim__default.ads gcc-11.1.0/gcc/ada/libgnarl/a-exetim__default.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-exetim__default.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-exetim__default.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-exetim__mingw.adb gcc-11.1.0/gcc/ada/libgnarl/a-exetim__mingw.adb
*** gcc-10.3.0/gcc/ada/libgnarl/a-exetim__mingw.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-exetim__mingw.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-exetim__mingw.ads gcc-11.1.0/gcc/ada/libgnarl/a-exetim__mingw.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-exetim__mingw.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-exetim__mingw.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-exetim__posix.adb gcc-11.1.0/gcc/ada/libgnarl/a-exetim__posix.adb
*** gcc-10.3.0/gcc/ada/libgnarl/a-exetim__posix.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-exetim__posix.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-interr.adb gcc-11.1.0/gcc/ada/libgnarl/a-interr.adb
*** gcc-10.3.0/gcc/ada/libgnarl/a-interr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-interr.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-interr.ads gcc-11.1.0/gcc/ada/libgnarl/a-interr.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-interr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-interr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-intnam.ads gcc-11.1.0/gcc/ada/libgnarl/a-intnam.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-intnam.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-intnam.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-intnam__aix.ads gcc-11.1.0/gcc/ada/libgnarl/a-intnam__aix.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-intnam__aix.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-intnam__aix.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-intnam__darwin.ads gcc-11.1.0/gcc/ada/libgnarl/a-intnam__darwin.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-intnam__darwin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-intnam__darwin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-intnam__dragonfly.ads gcc-11.1.0/gcc/ada/libgnarl/a-intnam__dragonfly.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-intnam__dragonfly.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-intnam__dragonfly.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-intnam__dummy.ads gcc-11.1.0/gcc/ada/libgnarl/a-intnam__dummy.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-intnam__dummy.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-intnam__dummy.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                           (No Tasking Version)                           --
  --                                                                          --
! --          Copyright (C) 1991-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                           (No Tasking Version)                           --
  --                                                                          --
! --          Copyright (C) 1991-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-intnam__freebsd.ads gcc-11.1.0/gcc/ada/libgnarl/a-intnam__freebsd.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-intnam__freebsd.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-intnam__freebsd.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-intnam__hpux.ads gcc-11.1.0/gcc/ada/libgnarl/a-intnam__hpux.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-intnam__hpux.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-intnam__hpux.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-intnam__linux.ads gcc-11.1.0/gcc/ada/libgnarl/a-intnam__linux.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-intnam__linux.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-intnam__linux.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-intnam__lynxos.ads gcc-11.1.0/gcc/ada/libgnarl/a-intnam__lynxos.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-intnam__lynxos.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-intnam__lynxos.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-intnam__mingw.ads gcc-11.1.0/gcc/ada/libgnarl/a-intnam__mingw.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-intnam__mingw.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-intnam__mingw.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-intnam__qnx.ads gcc-11.1.0/gcc/ada/libgnarl/a-intnam__qnx.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-intnam__qnx.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-intnam__qnx.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-intnam__rtems.ads gcc-11.1.0/gcc/ada/libgnarl/a-intnam__rtems.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-intnam__rtems.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-intnam__rtems.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 1991-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 1991-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-intnam__solaris.ads gcc-11.1.0/gcc/ada/libgnarl/a-intnam__solaris.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-intnam__solaris.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-intnam__solaris.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-intnam__vxworks.ads gcc-11.1.0/gcc/ada/libgnarl/a-intnam__vxworks.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-intnam__vxworks.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-intnam__vxworks.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-reatim.adb gcc-11.1.0/gcc/ada/libgnarl/a-reatim.adb
*** gcc-10.3.0/gcc/ada/libgnarl/a-reatim.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-reatim.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-reatim.ads gcc-11.1.0/gcc/ada/libgnarl/a-reatim.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-reatim.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-reatim.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-retide.adb gcc-11.1.0/gcc/ada/libgnarl/a-retide.adb
*** gcc-10.3.0/gcc/ada/libgnarl/a-retide.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-retide.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-retide.ads gcc-11.1.0/gcc/ada/libgnarl/a-retide.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-retide.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-retide.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-rttiev.adb gcc-11.1.0/gcc/ada/libgnarl/a-rttiev.adb
*** gcc-10.3.0/gcc/ada/libgnarl/a-rttiev.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-rttiev.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2005-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2005-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-rttiev.ads gcc-11.1.0/gcc/ada/libgnarl/a-rttiev.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-rttiev.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-rttiev.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2005-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2005-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-synbar.adb gcc-11.1.0/gcc/ada/libgnarl/a-synbar.adb
*** gcc-10.3.0/gcc/ada/libgnarl/a-synbar.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-synbar.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
***************
*** 33,39 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! package body Ada.Synchronous_Barriers is
  
     protected body Synchronous_Barrier is
  
--- 33,39 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! package body Ada.Synchronous_Barriers with SPARK_Mode => Off is
  
     protected body Synchronous_Barrier is
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-synbar.ads gcc-11.1.0/gcc/ada/libgnarl/a-synbar.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-synbar.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-synbar.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
***************
*** 33,39 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! package Ada.Synchronous_Barriers is
     pragma Preelaborate (Synchronous_Barriers);
  
     subtype Barrier_Limit is Positive range 1 .. Positive'Last;
--- 33,39 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! package Ada.Synchronous_Barriers with SPARK_Mode => Off is
     pragma Preelaborate (Synchronous_Barriers);
  
     subtype Barrier_Limit is Positive range 1 .. Positive'Last;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-synbar__posix.adb gcc-11.1.0/gcc/ada/libgnarl/a-synbar__posix.adb
*** gcc-10.3.0/gcc/ada/libgnarl/a-synbar__posix.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-synbar__posix.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
***************
*** 37,43 ****
  
  with Interfaces.C; use Interfaces.C;
  
! package body Ada.Synchronous_Barriers is
  
     --------------------
     -- POSIX barriers --
--- 37,43 ----
  
  with Interfaces.C; use Interfaces.C;
  
! package body Ada.Synchronous_Barriers with SPARK_Mode => Off is
  
     --------------------
     -- POSIX barriers --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-synbar__posix.ads gcc-11.1.0/gcc/ada/libgnarl/a-synbar__posix.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-synbar__posix.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-synbar__posix.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with System;
*** 39,45 ****
  private with Ada.Finalization;
  private with Interfaces.C;
  
! package Ada.Synchronous_Barriers is
     pragma Preelaborate (Synchronous_Barriers);
  
     subtype Barrier_Limit is Positive range 1 .. Positive'Last;
--- 39,45 ----
  private with Ada.Finalization;
  private with Interfaces.C;
  
! package Ada.Synchronous_Barriers with SPARK_Mode => Off is
     pragma Preelaborate (Synchronous_Barriers);
  
     subtype Barrier_Limit is Positive range 1 .. Positive'Last;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-sytaco.adb gcc-11.1.0/gcc/ada/libgnarl/a-sytaco.adb
*** gcc-10.3.0/gcc/ada/libgnarl/a-sytaco.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-sytaco.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-sytaco.ads gcc-11.1.0/gcc/ada/libgnarl/a-sytaco.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-sytaco.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-sytaco.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-tasatt.adb gcc-11.1.0/gcc/ada/libgnarl/a-tasatt.adb
*** gcc-10.3.0/gcc/ada/libgnarl/a-tasatt.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-tasatt.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2014-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2014-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-tasatt.ads gcc-11.1.0/gcc/ada/libgnarl/a-tasatt.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-tasatt.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-tasatt.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2014-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2014-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-taside.adb gcc-11.1.0/gcc/ada/libgnarl/a-taside.adb
*** gcc-10.3.0/gcc/ada/libgnarl/a-taside.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-taside.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,36 ****
  ------------------------------------------------------------------------------
  
  with System.Address_Image;
- with System.Parameters;
  with System.Soft_Links;
  with System.Task_Primitives;
  with System.Task_Primitives.Operations;
--- 30,35 ----
*************** pragma Warnings (On);
*** 48,56 ****
  package body Ada.Task_Identification with
    SPARK_Mode => Off
  is
- 
-    use System.Parameters;
- 
     package STPO renames System.Task_Primitives.Operations;
  
     -----------------------
--- 47,52 ----
*************** is
*** 165,184 ****
           raise Program_Error;
        else
           System.Soft_Links.Abort_Defer.all;
- 
-          if Single_Lock then
-             STPO.Lock_RTS;
-          end if;
- 
           STPO.Write_Lock (Id);
           Result := Id.Callable;
           STPO.Unlock (Id);
- 
-          if Single_Lock then
-             STPO.Unlock_RTS;
-          end if;
- 
           System.Soft_Links.Abort_Undefer.all;
           return Result;
        end if;
     end Is_Callable;
--- 161,171 ----
           raise Program_Error;
        else
           System.Soft_Links.Abort_Defer.all;
           STPO.Write_Lock (Id);
           Result := Id.Callable;
           STPO.Unlock (Id);
           System.Soft_Links.Abort_Undefer.all;
+ 
           return Result;
        end if;
     end Is_Callable;
*************** is
*** 198,217 ****
           raise Program_Error;
        else
           System.Soft_Links.Abort_Defer.all;
- 
-          if Single_Lock then
-             STPO.Lock_RTS;
-          end if;
- 
           STPO.Write_Lock (Id);
           Result := Id.Common.State = Terminated;
           STPO.Unlock (Id);
- 
-          if Single_Lock then
-             STPO.Unlock_RTS;
-          end if;
- 
           System.Soft_Links.Abort_Undefer.all;
           return Result;
        end if;
     end Is_Terminated;
--- 185,195 ----
           raise Program_Error;
        else
           System.Soft_Links.Abort_Defer.all;
           STPO.Write_Lock (Id);
           Result := Id.Common.State = Terminated;
           STPO.Unlock (Id);
           System.Soft_Links.Abort_Undefer.all;
+ 
           return Result;
        end if;
     end Is_Terminated;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-taside.ads gcc-11.1.0/gcc/ada/libgnarl/a-taside.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-taside.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-taside.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-tasini.adb gcc-11.1.0/gcc/ada/libgnarl/a-tasini.adb
*** gcc-10.3.0/gcc/ada/libgnarl/a-tasini.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnarl/a-tasini.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,46 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --              A D A . T A S K _ I N I T I A L I Z A T I O N               --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --             Copyright (C) 2020, Free Software Foundation, Inc.           --
+ --                                                                          --
+ -- GNARL is free software; you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Unchecked_Conversion;
+ with System.Tasking;
+ 
+ package body Ada.Task_Initialization is
+ 
+    function To_STIH is new Ada.Unchecked_Conversion
+      (Initialization_Handler, System.Tasking.Initialization_Handler);
+ 
+    --------------------------------
+    -- Set_Initialization_Handler --
+    --------------------------------
+ 
+    procedure Set_Initialization_Handler (Handler : Initialization_Handler) is
+    begin
+       System.Tasking.Global_Initialization_Handler := To_STIH (Handler);
+    end Set_Initialization_Handler;
+ 
+ end Ada.Task_Initialization;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-tasini.ads gcc-11.1.0/gcc/ada/libgnarl/a-tasini.ads
*** gcc-10.3.0/gcc/ada/libgnarl/a-tasini.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnarl/a-tasini.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,42 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --              A D A . T A S K _ I N I T I A L I Z A T I O N               --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --             Copyright (C) 2020, Free Software Foundation, Inc.           --
+ --                                                                          --
+ -- GNARL is free software; you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides a way to set up a global initialization handler
+ --  when tasks start.
+ 
+ package Ada.Task_Initialization is
+    pragma Preelaborate (Task_Initialization);
+ 
+    type Initialization_Handler is access procedure;
+ 
+    procedure Set_Initialization_Handler (Handler : Initialization_Handler);
+    --  Set the global task initialization handler to Handler
+ 
+ private
+    pragma Favor_Top_Level (Initialization_Handler);
+ end Ada.Task_Initialization;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/a-taster.adb gcc-11.1.0/gcc/ada/libgnarl/a-taster.adb
*** gcc-10.3.0/gcc/ada/libgnarl/a-taster.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/a-taster.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,37 ****
  
  with System.Tasking;
  with System.Task_Primitives.Operations;
- with System.Parameters;
  with System.Soft_Links;
  
  with Ada.Unchecked_Conversion;
--- 31,36 ----
*************** package body Ada.Task_Termination is
*** 43,50 ****
     package STPO renames System.Task_Primitives.Operations;
     package SSL  renames System.Soft_Links;
  
-    use System.Parameters;
- 
     -----------------------
     -- Local subprograms --
     -----------------------
--- 42,47 ----
*************** package body Ada.Task_Termination is
*** 82,102 ****
  
     begin
        SSL.Abort_Defer.all;
- 
-       if Single_Lock then
-          STPO.Lock_RTS;
-       end if;
- 
        STPO.Write_Lock (Self);
  
        Self.Common.Fall_Back_Handler := To_ST (Handler);
  
        STPO.Unlock (Self);
- 
-       if Single_Lock then
-          STPO.Unlock_RTS;
-       end if;
- 
        SSL.Abort_Undefer.all;
     end Set_Dependents_Fallback_Handler;
  
--- 79,89 ----
*************** package body Ada.Task_Termination is
*** 123,143 ****
  
           begin
              SSL.Abort_Defer.all;
- 
-             if Single_Lock then
-                STPO.Lock_RTS;
-             end if;
- 
              STPO.Write_Lock (Target);
  
              Target.Common.Specific_Handler := To_ST (Handler);
  
              STPO.Unlock (Target);
- 
-             if Single_Lock then
-                STPO.Unlock_RTS;
-             end if;
- 
              SSL.Abort_Undefer.all;
           end;
        end if;
--- 110,120 ----
*************** package body Ada.Task_Termination is
*** 166,186 ****
  
           begin
              SSL.Abort_Defer.all;
- 
-             if Single_Lock then
-                STPO.Lock_RTS;
-             end if;
- 
              STPO.Write_Lock (Target);
  
              TH := To_TT (Target.Common.Specific_Handler);
  
              STPO.Unlock (Target);
- 
-             if Single_Lock then
-                STPO.Unlock_RTS;
-             end if;
- 
              SSL.Abort_Undefer.all;
  
              return TH;
--- 143,153 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/g-boubuf.adb gcc-11.1.0/gcc/ada/libgnarl/g-boubuf.adb
*** gcc-10.3.0/gcc/ada/libgnarl/g-boubuf.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/g-boubuf.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/g-boubuf.ads gcc-11.1.0/gcc/ada/libgnarl/g-boubuf.ads
*** gcc-10.3.0/gcc/ada/libgnarl/g-boubuf.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/g-boubuf.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/g-boumai.ads gcc-11.1.0/gcc/ada/libgnarl/g-boumai.ads
*** gcc-10.3.0/gcc/ada/libgnarl/g-boumai.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/g-boumai.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/g-semaph.adb gcc-11.1.0/gcc/ada/libgnarl/g-semaph.adb
*** gcc-10.3.0/gcc/ada/libgnarl/g-semaph.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/g-semaph.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/g-semaph.ads gcc-11.1.0/gcc/ada/libgnarl/g-semaph.ads
*** gcc-10.3.0/gcc/ada/libgnarl/g-semaph.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/g-semaph.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/g-signal.adb gcc-11.1.0/gcc/ada/libgnarl/g-signal.adb
*** gcc-10.3.0/gcc/ada/libgnarl/g-signal.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/g-signal.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/g-signal.ads gcc-11.1.0/gcc/ada/libgnarl/g-signal.ads
*** gcc-10.3.0/gcc/ada/libgnarl/g-signal.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/g-signal.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/g-tastus.ads gcc-11.1.0/gcc/ada/libgnarl/g-tastus.ads
*** gcc-10.3.0/gcc/ada/libgnarl/g-tastus.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/g-tastus.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/g-thread.adb gcc-11.1.0/gcc/ada/libgnarl/g-thread.adb
*** gcc-10.3.0/gcc/ada/libgnarl/g-thread.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/g-thread.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                    Copyright (C) 1998-2019, AdaCore                      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                    Copyright (C) 1998-2020, AdaCore                      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/g-thread.ads gcc-11.1.0/gcc/ada/libgnarl/g-thread.ads
*** gcc-10.3.0/gcc/ada/libgnarl/g-thread.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/g-thread.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/i-vxinco.adb gcc-11.1.0/gcc/ada/libgnarl/i-vxinco.adb
*** gcc-10.3.0/gcc/ada/libgnarl/i-vxinco.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/i-vxinco.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --                        Copyright (C) 2016-2019, AdaCore                  --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --                        Copyright (C) 2016-2020, AdaCore                  --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/i-vxinco.ads gcc-11.1.0/gcc/ada/libgnarl/i-vxinco.ads
*** gcc-10.3.0/gcc/ada/libgnarl/i-vxinco.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/i-vxinco.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --                        Copyright (C) 2016-2019, AdaCore                  --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --                        Copyright (C) 2016-2020, AdaCore                  --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/libgnarl.gpr gcc-11.1.0/gcc/ada/libgnarl/libgnarl.gpr
*** gcc-10.3.0/gcc/ada/libgnarl/libgnarl.gpr	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnarl/libgnarl.gpr	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,28 ----
+ with "libgnat_common";
+ 
+ library project Libgnarl is
+ 
+    for Languages use ("Ada", "C");
+    for Source_Dirs use (".");
+    for Source_List_File use "libgnarl.lst";
+    for Object_Dir use "../obj-" & Libgnat_Common.Library_Kind;
+ 
+    for Library_Name use "gnarl";
+    for Library_Dir use "../adalib";
+    for Library_Kind use Libgnat_Common.Library_Kind;
+ 
+    package Compiler is
+ 
+       for Switches ("C") use Libgnat_Common.C_Flags;
+       for Switches ("Ada") use Libgnat_Common.Ada_Flags;
+ 
+       for Switches ("s-tasdeb.adb") use
+         Libgnat_Common.Ada_Flags &
+         Libgnat_Common.Force_Debug &
+         Libgnat_Common.No_Opt;
+       --  Compile s-tasdeb.o without optimization and with debug info so that
+       --  it is always possible to set conditional breakpoints on tasks.
+ 
+    end Compiler;
+ 
+ end Libgnarl;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-inmaop.ads gcc-11.1.0/gcc/ada/libgnarl/s-inmaop.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-inmaop.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-inmaop.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-inmaop__dummy.adb gcc-11.1.0/gcc/ada/libgnarl/s-inmaop__dummy.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-inmaop__dummy.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-inmaop__dummy.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-inmaop__posix.adb gcc-11.1.0/gcc/ada/libgnarl/s-inmaop__posix.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-inmaop__posix.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-inmaop__posix.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-inmaop__vxworks.adb gcc-11.1.0/gcc/ada/libgnarl/s-inmaop__vxworks.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-inmaop__vxworks.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-inmaop__vxworks.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-interr.adb gcc-11.1.0/gcc/ada/libgnarl/s-interr.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-interr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-interr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Interrupts is
*** 1288,1298 ****
  
        loop
           System.Tasking.Initialization.Defer_Abort (Self_ID);
- 
-          if Single_Lock then
-             POP.Lock_RTS;
-          end if;
- 
           POP.Write_Lock (Self_ID);
  
           if User_Handler (Interrupt).H = null
--- 1288,1293 ----
*************** package body System.Interrupts is
*** 1327,1336 ****
              Self_ID.Common.State := Interrupt_Server_Blocked_On_Event_Flag;
              POP.Unlock (Self_ID);
  
-             if Single_Lock then
-                POP.Unlock_RTS;
-             end if;
- 
              --  Avoid race condition when terminating application and
              --  System.Parameters.No_Abort is True.
  
--- 1322,1327 ----
*************** package body System.Interrupts is
*** 1347,1364 ****
                 --  Inform the Interrupt_Manager of wakeup from above sigwait
  
                 POP.Abort_Task (Interrupt_Manager_ID);
- 
-                if Single_Lock then
-                   POP.Lock_RTS;
-                end if;
- 
                 POP.Write_Lock (Self_ID);
  
              else
-                if Single_Lock then
-                   POP.Lock_RTS;
-                end if;
- 
                 POP.Write_Lock (Self_ID);
  
                 if Ret_Interrupt /= Interrupt then
--- 1338,1346 ----
*************** package body System.Interrupts is
*** 1383,1399 ****
                       --  RTS calls should not be made with self being locked
  
                       POP.Unlock (Self_ID);
- 
-                      if Single_Lock then
-                         POP.Unlock_RTS;
-                      end if;
- 
                       Tmp_Handler.all;
- 
-                      if Single_Lock then
-                         POP.Lock_RTS;
-                      end if;
- 
                       POP.Write_Lock (Self_ID);
  
                    elsif User_Entry (Interrupt).T /= Null_Task then
--- 1365,1371 ----
*************** package body System.Interrupts is
*** 1402,1411 ****
  
                       --  RTS calls should not be made with self being locked
  
-                      if Single_Lock then
-                         POP.Unlock_RTS;
-                      end if;
- 
                       POP.Unlock (Self_ID);
  
                       System.Tasking.Rendezvous.Call_Simple
--- 1374,1379 ----
*************** package body System.Interrupts is
*** 1413,1422 ****
  
                       POP.Write_Lock (Self_ID);
  
-                      if Single_Lock then
-                         POP.Lock_RTS;
-                      end if;
- 
                    else
                       --  This is a situation that this task wakes up receiving
                       --  an Interrupt and before it gets the lock the Interrupt
--- 1381,1386 ----
*************** package body System.Interrupts is
*** 1432,1442 ****
           end if;
  
           POP.Unlock (Self_ID);
- 
-          if Single_Lock then
-             POP.Unlock_RTS;
-          end if;
- 
           System.Tasking.Initialization.Undefer_Abort (Self_ID);
  
           if Self_ID.Pending_Action then
--- 1396,1401 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-interr.ads gcc-11.1.0/gcc/ada/libgnarl/s-interr.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-interr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-interr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-interr__dummy.adb gcc-11.1.0/gcc/ada/libgnarl/s-interr__dummy.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-interr__dummy.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-interr__dummy.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-interr__hwint.adb gcc-11.1.0/gcc/ada/libgnarl/s-interr__hwint.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-interr__hwint.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-interr__hwint.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-interr__sigaction.adb gcc-11.1.0/gcc/ada/libgnarl/s-interr__sigaction.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-interr__sigaction.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-interr__sigaction.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.Tasking.Utilities;
*** 42,52 ****
  with System.Tasking.Rendezvous;
  with System.Tasking.Initialization;
  with System.Interrupt_Management;
- with System.Parameters;
  
  package body System.Interrupts is
  
-    use Parameters;
     use Tasking;
     use System.OS_Interface;
     use Interfaces.C;
--- 42,50 ----
*************** package body System.Interrupts is
*** 644,664 ****
           end loop;
  
           Initialization.Defer_Abort (Self_Id);
- 
-          if Single_Lock then
-             STPO.Lock_RTS;
-          end if;
- 
           STPO.Write_Lock (Self_Id);
           Self_Id.Common.State := Interrupt_Server_Idle_Sleep;
           STPO.Sleep (Self_Id, Interrupt_Server_Idle_Sleep);
           Self_Id.Common.State := Runnable;
           STPO.Unlock (Self_Id);
- 
-          if Single_Lock then
-             STPO.Unlock_RTS;
-          end if;
- 
           Initialization.Undefer_Abort (Self_Id);
  
           --  Undefer abort here to allow a window for this task to be aborted
--- 642,652 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-interr__vxworks.adb gcc-11.1.0/gcc/ada/libgnarl/s-interr__vxworks.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-interr__vxworks.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-interr__vxworks.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-intman.ads gcc-11.1.0/gcc/ada/libgnarl/s-intman.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-intman.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-intman.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-intman__android.adb gcc-11.1.0/gcc/ada/libgnarl/s-intman__android.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-intman__android.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-intman__android.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 2014-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 2014-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-intman__dummy.adb gcc-11.1.0/gcc/ada/libgnarl/s-intman__dummy.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-intman__dummy.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-intman__dummy.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-intman__lynxos.adb gcc-11.1.0/gcc/ada/libgnarl/s-intman__lynxos.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-intman__lynxos.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-intman__lynxos.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-intman__mingw.adb gcc-11.1.0/gcc/ada/libgnarl/s-intman__mingw.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-intman__mingw.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-intman__mingw.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1991-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1991-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-intman__posix.adb gcc-11.1.0/gcc/ada/libgnarl/s-intman__posix.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-intman__posix.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-intman__posix.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-intman__qnx.adb gcc-11.1.0/gcc/ada/libgnarl/s-intman__qnx.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-intman__qnx.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-intman__qnx.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-intman__solaris.adb gcc-11.1.0/gcc/ada/libgnarl/s-intman__solaris.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-intman__solaris.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-intman__solaris.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-intman__susv3.adb gcc-11.1.0/gcc/ada/libgnarl/s-intman__susv3.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-intman__susv3.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-intman__susv3.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-intman__vxworks.adb gcc-11.1.0/gcc/ada/libgnarl/s-intman__vxworks.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-intman__vxworks.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-intman__vxworks.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-intman__vxworks.ads gcc-11.1.0/gcc/ada/libgnarl/s-intman__vxworks.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-intman__vxworks.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-intman__vxworks.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-linux.ads gcc-11.1.0/gcc/ada/libgnarl/s-linux.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-linux.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-linux.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2008-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2008-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-linux__alpha.ads gcc-11.1.0/gcc/ada/libgnarl/s-linux__alpha.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-linux__alpha.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-linux__alpha.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-linux__android.ads gcc-11.1.0/gcc/ada/libgnarl/s-linux__android.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-linux__android.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-linux__android.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --            Copyright (C) 2014-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --            Copyright (C) 2014-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-linux__hppa.ads gcc-11.1.0/gcc/ada/libgnarl/s-linux__hppa.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-linux__hppa.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-linux__hppa.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2008-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2008-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-linux__mips.ads gcc-11.1.0/gcc/ada/libgnarl/s-linux__mips.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-linux__mips.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-linux__mips.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2009-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2009-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-linux__riscv.ads gcc-11.1.0/gcc/ada/libgnarl/s-linux__riscv.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-linux__riscv.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-linux__riscv.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2009-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2009-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-linux__sparc.ads gcc-11.1.0/gcc/ada/libgnarl/s-linux__sparc.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-linux__sparc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-linux__sparc.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2009-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2009-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-linux__x32.ads gcc-11.1.0/gcc/ada/libgnarl/s-linux__x32.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-linux__x32.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-linux__x32.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2013-2019, Free Software Foundation, Inc.         --
  --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2013-2020, Free Software Foundation, Inc.         --
  --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-mudido.adb gcc-11.1.0/gcc/ada/libgnarl/s-mudido.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-mudido.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-mudido.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-mudido__affinity.adb gcc-11.1.0/gcc/ada/libgnarl/s-mudido__affinity.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-mudido__affinity.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-mudido__affinity.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__aix.adb gcc-11.1.0/gcc/ada/libgnarl/s-osinte__aix.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__aix.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__aix.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,40 ****
  
  --  This is a AIX (Native) version of this package
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  package body System.OS_Interface is
  
     use Interfaces.C;
--- 31,36 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__aix.ads gcc-11.1.0/gcc/ada/libgnarl/s-osinte__aix.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__aix.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__aix.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__android.adb gcc-11.1.0/gcc/ada/libgnarl/s-osinte__android.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__android.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__android.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,40 ****
  
  --  This is an Android version of this package.
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during
- --  tasking operations. It causes infinite loops and other problems.
- 
  --  This package encapsulates all direct interfaces to OS services
  --  that are needed by children of System.
  
--- 31,36 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__android.ads gcc-11.1.0/gcc/ada/libgnarl/s-osinte__android.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__android.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__android.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__darwin.adb gcc-11.1.0/gcc/ada/libgnarl/s-osinte__darwin.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__darwin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__darwin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,40 ****
  
  --  This is a Darwin Threads version of this package
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during
- --  tasking operations. It causes infinite loops and other problems.
- 
  with Interfaces.C.Extensions;
  
  package body System.OS_Interface is
--- 31,36 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__darwin.ads gcc-11.1.0/gcc/ada/libgnarl/s-osinte__darwin.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__darwin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__darwin.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__dragonfly.adb gcc-11.1.0/gcc/ada/libgnarl/s-osinte__dragonfly.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__dragonfly.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__dragonfly.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --          Copyright (C) 1991-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --          Copyright (C) 1991-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__dragonfly.ads gcc-11.1.0/gcc/ada/libgnarl/s-osinte__dragonfly.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__dragonfly.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__dragonfly.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                   S p e c                                --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                   S p e c                                --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__dummy.ads gcc-11.1.0/gcc/ada/libgnarl/s-osinte__dummy.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__dummy.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__dummy.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__freebsd.adb gcc-11.1.0/gcc/ada/libgnarl/s-osinte__freebsd.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__freebsd.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__freebsd.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --          Copyright (C) 1991-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --          Copyright (C) 1991-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__freebsd.ads gcc-11.1.0/gcc/ada/libgnarl/s-osinte__freebsd.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__freebsd.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__freebsd.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                   S p e c                                --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                   S p e c                                --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__gnu.adb gcc-11.1.0/gcc/ada/libgnarl/s-osinte__gnu.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__gnu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__gnu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --          Copyright (C) 2015-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --          Copyright (C) 2015-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,40 ****
  
  --  This is the GNU/Hurd version of this package.
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during
- --  tasking operations. It causes infinite loops and other problems.
- 
  --  This package encapsulates all direct interfaces to OS services
  --  that are needed by children of System.
  
--- 31,36 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__gnu.ads gcc-11.1.0/gcc/ada/libgnarl/s-osinte__gnu.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__gnu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__gnu.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__hpux-dce.adb gcc-11.1.0/gcc/ada/libgnarl/s-osinte__hpux-dce.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__hpux-dce.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__hpux-dce.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,42 ****
  --  This is a DCE version of this package.
  --  Currently HP-UX and SNI use this file
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during
- --  tasking operations. It causes infinite loops and other problems.
- 
  --  This package encapsulates all direct interfaces to OS services
  --  that are needed by children of System.
  
--- 33,38 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__hpux-dce.ads gcc-11.1.0/gcc/ada/libgnarl/s-osinte__hpux-dce.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__hpux-dce.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__hpux-dce.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__hpux.ads gcc-11.1.0/gcc/ada/libgnarl/s-osinte__hpux.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__hpux.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__hpux.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --               Copyright (C) 1991-2017, Florida State University          --
! --            Copyright (C) 1995-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --               Copyright (C) 1991-2017, Florida State University          --
! --            Copyright (C) 1995-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads gcc-11.1.0/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --               Copyright (C) 1991-1994, Florida State University          --
! --            Copyright (C) 1995-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --               Copyright (C) 1991-1994, Florida State University          --
! --            Copyright (C) 1995-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__linux.ads gcc-11.1.0/gcc/ada/libgnarl/s-osinte__linux.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__linux.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__linux.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.OS_Interface is
*** 278,286 ****
     PR_GET_NAME : constant := 16;
  
     function prctl
!      (option                 : int;
!       arg2, arg3, arg4, arg5 : unsigned_long := 0) return int;
!    pragma Import (C, prctl);
  
     -------------
     -- Threads --
--- 278,286 ----
     PR_GET_NAME : constant := 16;
  
     function prctl
!      (option : int;
!       arg    : unsigned_long) return int;
!    pragma Import (C_Variadic_1, prctl, "prctl");
  
     -------------
     -- Threads --
*************** package System.OS_Interface is
*** 314,319 ****
--- 314,321 ----
     -- Stack --
     -----------
  
+    subtype char_array is Interfaces.C.char_array;
+ 
     type stack_t is record
        ss_sp    : System.Address;
        ss_flags : int;
*************** package System.OS_Interface is
*** 326,338 ****
        oss : access stack_t) return int;
     pragma Import (C, sigaltstack, "sigaltstack");
  
-    Alternate_Stack : aliased System.Address;
-    pragma Import (C, Alternate_Stack, "__gnat_alternate_stack");
-    --  The alternate signal stack for stack overflows
- 
     Alternate_Stack_Size : constant := 32 * 1024;
     --  This must be in keeping with init.c:__gnat_alternate_stack
  
     function Get_Stack_Base (thread : pthread_t) return Address;
     pragma Inline (Get_Stack_Base);
     --  This is a dummy procedure to share some GNULLI files
--- 328,340 ----
        oss : access stack_t) return int;
     pragma Import (C, sigaltstack, "sigaltstack");
  
     Alternate_Stack_Size : constant := 32 * 1024;
     --  This must be in keeping with init.c:__gnat_alternate_stack
  
+    Alternate_Stack : aliased char_array (1 .. Alternate_Stack_Size);
+    pragma Import (C, Alternate_Stack, "__gnat_alternate_stack");
+    --  The alternate signal stack for stack overflows
+ 
     function Get_Stack_Base (thread : pthread_t) return Address;
     pragma Inline (Get_Stack_Base);
     --  This is a dummy procedure to share some GNULLI files
*************** private
*** 634,641 ****
  
     type pid_t is new int;
  
-    subtype char_array is Interfaces.C.char_array;
- 
     type pthread_attr_t is record
        Data : char_array (1 .. OS_Constants.PTHREAD_ATTR_SIZE);
     end record;
--- 636,641 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__lynxos178.adb gcc-11.1.0/gcc/ada/libgnarl/s-osinte__lynxos178.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__lynxos178.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__lynxos178.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,40 ****
  
  --  Version of System.OS_Interface for LynxOS-178 (POSIX Threads)
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It may cause infinite loops and other problems.
- 
  package body System.OS_Interface is
  
     ------------------
--- 31,36 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__lynxos178e.ads gcc-11.1.0/gcc/ada/libgnarl/s-osinte__lynxos178e.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__lynxos178e.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__lynxos178e.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.Multiprocessors;
*** 47,56 ****
  package System.OS_Interface is
     pragma Preelaborate;
  
-    pragma Linker_Options ("-mthreads");
-    --  Selects the POSIX 1.c runtime, rather than the non-threading runtime or
-    --  the deprecated legacy threads library.
- 
     subtype int            is Interfaces.C.int;
     subtype short          is Interfaces.C.short;
     subtype long           is Interfaces.C.long;
--- 47,52 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__mingw.ads gcc-11.1.0/gcc/ada/libgnarl/s-osinte__mingw.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__mingw.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__mingw.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__posix.adb gcc-11.1.0/gcc/ada/libgnarl/s-osinte__posix.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__posix.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__posix.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                   B o d y                                --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                   B o d y                                --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,41 ****
  
  --  This version is for POSIX-like operating systems
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during
- --  tasking operations. It causes infinite loops and other problems.
- 
  --  This package encapsulates all direct interfaces to OS services
  --  that are needed by children of System.
  
--- 32,37 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__qnx.adb gcc-11.1.0/gcc/ada/libgnarl/s-osinte__qnx.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__qnx.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__qnx.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                   B o d y                                --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                   B o d y                                --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,41 ****
  
  --  This version is for QNX operating systems
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during
- --  tasking operations. It causes infinite loops and other problems.
- 
  --  This package encapsulates all direct interfaces to OS services
  --  that are needed by children of System.
  
--- 32,37 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__qnx.ads gcc-11.1.0/gcc/ada/libgnarl/s-osinte__qnx.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__qnx.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__qnx.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__rtems.adb gcc-11.1.0/gcc/ada/libgnarl/s-osinte__rtems.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__rtems.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__rtems.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 40,50 ****
  --  This package encapsulates all direct interfaces to OS services
  --  that are needed by children of System.
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during
- --  tasking operations. It causes infinite loops and other problems.
- 
  with Interfaces.C; use Interfaces.C;
  package body System.OS_Interface is
  
     -----------------
--- 40,47 ----
  --  This package encapsulates all direct interfaces to OS services
  --  that are needed by children of System.
  
  with Interfaces.C; use Interfaces.C;
+ 
  package body System.OS_Interface is
  
     -----------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__rtems.ads gcc-11.1.0/gcc/ada/libgnarl/s-osinte__rtems.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__rtems.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__rtems.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__solaris.adb gcc-11.1.0/gcc/ada/libgnarl/s-osinte__solaris.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__solaris.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__solaris.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 35,44 ****
  --  This package encapsulates all direct interfaces to OS services
  --  that are needed by children of System.
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during
- --  tasking operations. It causes infinite loops and other problems.
- 
  with Interfaces.C; use Interfaces.C;
  
  package body System.OS_Interface is
--- 35,40 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__solaris.ads gcc-11.1.0/gcc/ada/libgnarl/s-osinte__solaris.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__solaris.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__solaris.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Unchecked_Conversion;
*** 45,53 ****
  package System.OS_Interface is
     pragma Preelaborate;
  
-    pragma Linker_Options ("-lposix4");
-    pragma Linker_Options ("-lthread");
- 
     subtype int            is Interfaces.C.int;
     subtype short          is Interfaces.C.short;
     subtype long           is Interfaces.C.long;
--- 45,50 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__vxworks.adb gcc-11.1.0/gcc/ada/libgnarl/s-osinte__vxworks.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__vxworks.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__vxworks.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --         Copyright (C) 1997-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --         Copyright (C) 1997-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 34,43 ****
  --  This package encapsulates all direct interfaces to OS services that are
  --  needed by children of System.
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  package body System.OS_Interface is
  
     use type Interfaces.C.int;
--- 34,39 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__vxworks.ads gcc-11.1.0/gcc/ada/libgnarl/s-osinte__vxworks.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__vxworks.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__vxworks.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                   S p e c                                --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                   S p e c                                --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-osinte__x32.adb gcc-11.1.0/gcc/ada/libgnarl/s-osinte__x32.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-osinte__x32.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-osinte__x32.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                   B o d y                                --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                   B o d y                                --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,45 ****
  
  --  This version is for Linux/x32
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during
- --  tasking operations. It causes infinite loops and other problems.
- 
  --  This package encapsulates all direct interfaces to OS services
  --  that are needed by children of System.
  
  with Interfaces.C; use Interfaces.C;
  package body System.OS_Interface is
  
     --------------------
--- 32,42 ----
  
  --  This version is for Linux/x32
  
  --  This package encapsulates all direct interfaces to OS services
  --  that are needed by children of System.
  
  with Interfaces.C; use Interfaces.C;
+ 
  package body System.OS_Interface is
  
     --------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-proinf.adb gcc-11.1.0/gcc/ada/libgnarl/s-proinf.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-proinf.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-proinf.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-proinf.ads gcc-11.1.0/gcc/ada/libgnarl/s-proinf.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-proinf.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-proinf.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 1996-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 1996-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-qnx.ads gcc-11.1.0/gcc/ada/libgnarl/s-qnx.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-qnx.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-qnx.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2017-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2017-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-solita.adb gcc-11.1.0/gcc/ada/libgnarl/s-solita.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-solita.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-solita.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Style_Checks (All_Checks);
*** 33,43 ****
  --  Turn off subprogram alpha ordering check, since we group soft link bodies
  --  and dummy soft link bodies together separately in this unit.
  
- pragma Polling (Off);
- --  Turn polling off for this package. We don't need polling during any of the
- --  routines in this package, and more to the point, if we try to poll it can
- --  cause infinite loops.
- 
  with Ada.Exceptions;
  with Ada.Exceptions.Is_Null_Occurrence;
  
--- 33,38 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-solita.ads gcc-11.1.0/gcc/ada/libgnarl/s-solita.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-solita.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-solita.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-stusta.adb gcc-11.1.0/gcc/ada/libgnarl/s-stusta.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-stusta.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-stusta.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --           Copyright (C) 2009-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --           Copyright (C) 2009-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-stusta.ads gcc-11.1.0/gcc/ada/libgnarl/s-stusta.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-stusta.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-stusta.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2009-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2009-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taasde.adb gcc-11.1.0/gcc/ada/libgnarl/s-taasde.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-taasde.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taasde.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1998-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1998-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,38 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during
- --  tasking operations. It causes infinite loops and other problems.
- 
  with Ada.Unchecked_Conversion;
  with Ada.Task_Identification;
  
--- 29,34 ----
*************** package body System.Tasking.Async_Delays
*** 51,58 ****
     package STI renames System.Tasking.Initialization;
     package OSP renames System.OS_Primitives;
  
-    use Parameters;
- 
     function To_System is new Ada.Unchecked_Conversion
       (Ada.Task_Identification.Task_Id, Task_Id);
  
--- 47,52 ----
*************** package body System.Tasking.Async_Delays
*** 118,128 ****
        --  Remove self from timer queue
  
        STI.Defer_Abort_Nestable (D.Self_Id);
- 
-       if Single_Lock then
-          STPO.Lock_RTS;
-       end if;
- 
        STPO.Write_Lock (Timer_Server_ID);
        Dpred := D.Pred;
        Dsucc := D.Succ;
--- 112,117 ----
*************** package body System.Tasking.Async_Delays
*** 141,151 ****
        STPO.Write_Lock (D.Self_Id);
        STU.Exit_One_ATC_Level (D.Self_Id);
        STPO.Unlock (D.Self_Id);
- 
-       if Single_Lock then
-          STPO.Unlock_RTS;
-       end if;
- 
        STI.Undefer_Abort_Nestable (D.Self_Id);
     end Cancel_Async_Delay;
  
--- 130,135 ----
*************** package body System.Tasking.Async_Delays
*** 217,227 ****
        D.Level := Self_Id.ATC_Nesting_Level;
        D.Self_Id := Self_Id;
        D.Resume_Time := T;
- 
-       if Single_Lock then
-          STPO.Lock_RTS;
-       end if;
- 
        STPO.Write_Lock (Timer_Server_ID);
  
        --  Previously, there was code here to dynamically create
--- 201,206 ----
*************** package body System.Tasking.Async_Delays
*** 258,267 ****
        end if;
  
        STPO.Unlock (Timer_Server_ID);
- 
-       if Single_Lock then
-          STPO.Unlock_RTS;
-       end if;
     end Time_Enqueue;
  
     ---------------
--- 237,242 ----
*************** package body System.Tasking.Async_Delays
*** 305,315 ****
  
        loop
           STI.Defer_Abort (Timer_Server_ID);
- 
-          if Single_Lock then
-             STPO.Lock_RTS;
-          end if;
- 
           STPO.Write_Lock (Timer_Server_ID);
  
           --  The timer server needs to catch pending aborts after finalization
--- 280,285 ----
*************** package body System.Tasking.Async_Delays
*** 383,393 ****
           --  an actual delay in this server.
  
           STPO.Unlock (Timer_Server_ID);
- 
-          if Single_Lock then
-             STPO.Unlock_RTS;
-          end if;
- 
           STI.Undefer_Abort (Timer_Server_ID);
        end loop;
     end Timer_Server;
--- 353,358 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taasde.ads gcc-11.1.0/gcc/ada/libgnarl/s-taasde.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-taasde.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taasde.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tadeca.adb gcc-11.1.0/gcc/ada/libgnarl/s-tadeca.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tadeca.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tadeca.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tadeca.ads gcc-11.1.0/gcc/ada/libgnarl/s-tadeca.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tadeca.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tadeca.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tadert.adb gcc-11.1.0/gcc/ada/libgnarl/s-tadert.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tadert.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tadert.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tadert.ads gcc-11.1.0/gcc/ada/libgnarl/s-tadert.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tadert.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tadert.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                S p e c                                   --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                S p e c                                   --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taenca.adb gcc-11.1.0/gcc/ada/libgnarl/s-taenca.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-taenca.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taenca.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.Tasking.Protected_Objects.En
*** 35,47 ****
  with System.Tasking.Protected_Objects.Operations;
  with System.Tasking.Queuing;
  with System.Tasking.Utilities;
- with System.Parameters;
  
  package body System.Tasking.Entry_Calls is
  
     package STPO renames System.Task_Primitives.Operations;
  
-    use Parameters;
     use Protected_Objects.Entries;
     use Protected_Objects.Operations;
  
--- 35,45 ----
*************** package body System.Tasking.Entry_Calls
*** 71,94 ****
     --  permitted. Since the server cannot be obtained reliably, it must be
     --  obtained unreliably and then checked again once it has been locked.
     --
-    --  If Single_Lock and server is a PO, release RTS_Lock
-    --
     --  This should only be called by the Entry_Call.Self.
     --  It should be holding no other ATCB locks at the time.
  
     procedure Unlock_Server (Entry_Call : Entry_Call_Link);
     --  STPO.Unlock the server targeted by Entry_Call. The server must
     --  be locked before calling this.
-    --
-    --  If Single_Lock and server is a PO, take RTS_Lock on exit.
  
     procedure Unlock_And_Update_Server
       (Self_ID    : Task_Id;
        Entry_Call : Entry_Call_Link);
     --  Similar to Unlock_Server, but services entry calls if the
     --  server is a protected object.
-    --
-    --  If Single_Lock and server is a PO, take RTS_Lock on exit.
  
     procedure Check_Pending_Actions_For_Entry_Call
       (Self_ID    : Task_Id;
--- 69,86 ----
*************** package body System.Tasking.Entry_Calls
*** 200,218 ****
                 --  We had very bad luck, interleaving with TWO different
                 --  requeue operations. Go around the loop and try again.
  
!                if Single_Lock then
!                   STPO.Unlock_RTS;
!                   STPO.Yield;
!                   STPO.Lock_RTS;
!                else
!                   STPO.Yield;
!                end if;
  
              else
-                if Single_Lock then
-                   STPO.Unlock_RTS;
-                end if;
- 
                 Lock_Entries_With_Status (Test_PO, Ceiling_Violation);
  
                 --  ???
--- 192,200 ----
                 --  We had very bad luck, interleaving with TWO different
                 --  requeue operations. Go around the loop and try again.
  
!                STPO.Yield;
  
              else
                 Lock_Entries_With_Status (Test_PO, Ceiling_Violation);
  
                 --  ???
*************** package body System.Tasking.Entry_Calls
*** 232,241 ****
                       Old_Base_Priority : System.Any_Priority;
  
                    begin
-                      if Single_Lock then
-                         STPO.Lock_RTS;
-                      end if;
- 
                       STPO.Write_Lock (Current_Task);
                       Old_Base_Priority := Current_Task.Common.Base_Priority;
                       Current_Task.New_Base_Priority := Test_PO.Ceiling;
--- 214,219 ----
*************** package body System.Tasking.Entry_Calls
*** 243,252 ****
                         (Current_Task);
                       STPO.Unlock (Current_Task);
  
-                      if Single_Lock then
-                         STPO.Unlock_RTS;
-                      end if;
- 
                       --  Following lock should not fail
  
                       Lock_Entries (Test_PO);
--- 221,226 ----
*************** package body System.Tasking.Entry_Calls
*** 258,267 ****
  
                 exit when To_Address (Test_PO) = Entry_Call.Called_PO;
                 Unlock_Entries (Test_PO);
- 
-                if Single_Lock then
-                   STPO.Lock_RTS;
-                end if;
              end if;
  
           else
--- 232,237 ----
*************** package body System.Tasking.Entry_Calls
*** 343,353 ****
  
        pragma Assert (Entry_Call.Mode = Asynchronous_Call);
        Initialization.Defer_Abort_Nestable (Self_ID);
- 
-       if Single_Lock then
-          STPO.Lock_RTS;
-       end if;
- 
        STPO.Write_Lock (Self_ID);
        Entry_Call.Cancellation_Attempted := True;
  
--- 313,318 ----
*************** package body System.Tasking.Entry_Calls
*** 357,369 ****
  
        Entry_Calls.Wait_For_Completion (Entry_Call);
        STPO.Unlock (Self_ID);
- 
-       if Single_Lock then
-          STPO.Unlock_RTS;
-       end if;
- 
        Succeeded := Entry_Call.State = Cancelled;
- 
        Initialization.Undefer_Abort_Nestable (Self_ID);
  
        --  Ideally, abort should no longer be deferred at this point, so we
--- 322,328 ----
*************** package body System.Tasking.Entry_Calls
*** 401,426 ****
           if Called_PO.Pending_Action then
              Called_PO.Pending_Action := False;
              Caller := STPO.Self;
- 
-             if Single_Lock then
-                STPO.Lock_RTS;
-             end if;
- 
              STPO.Write_Lock (Caller);
              Caller.New_Base_Priority := Called_PO.Old_Base_Priority;
              Initialization.Change_Base_Priority (Caller);
              STPO.Unlock (Caller);
- 
-             if Single_Lock then
-                STPO.Unlock_RTS;
-             end if;
           end if;
  
           Unlock_Entries (Called_PO);
- 
-          if Single_Lock then
-             STPO.Lock_RTS;
-          end if;
        end if;
     end Unlock_And_Update_Server;
  
--- 360,372 ----
*************** package body System.Tasking.Entry_Calls
*** 441,466 ****
           if Called_PO.Pending_Action then
              Called_PO.Pending_Action := False;
              Caller := STPO.Self;
- 
-             if Single_Lock then
-                STPO.Lock_RTS;
-             end if;
- 
              STPO.Write_Lock (Caller);
              Caller.New_Base_Priority := Called_PO.Old_Base_Priority;
              Initialization.Change_Base_Priority (Caller);
              STPO.Unlock (Caller);
- 
-             if Single_Lock then
-                STPO.Unlock_RTS;
-             end if;
           end if;
  
           Unlock_Entries (Called_PO);
- 
-          if Single_Lock then
-             STPO.Lock_RTS;
-          end if;
        end if;
     end Unlock_Server;
  
--- 387,399 ----
*************** package body System.Tasking.Entry_Calls
*** 481,501 ****
        --  a chance of getting ready immediately, using Unlock & Yield.
        --  See similar action in Wait_For_Call & Timed_Selective_Wait.
  
!       if Single_Lock then
!          STPO.Unlock_RTS;
!       else
!          STPO.Unlock (Self_Id);
!       end if;
  
        if Entry_Call.State < Done then
           STPO.Yield;
        end if;
  
!       if Single_Lock then
!          STPO.Lock_RTS;
!       else
!          STPO.Write_Lock (Self_Id);
!       end if;
  
        loop
           Check_Pending_Actions_For_Entry_Call (Self_Id, Entry_Call);
--- 414,426 ----
        --  a chance of getting ready immediately, using Unlock & Yield.
        --  See similar action in Wait_For_Call & Timed_Selective_Wait.
  
!       STPO.Unlock (Self_Id);
  
        if Entry_Call.State < Done then
           STPO.Yield;
        end if;
  
!       STPO.Write_Lock (Self_Id);
  
        loop
           Check_Pending_Actions_For_Entry_Call (Self_Id, Entry_Call);
*************** package body System.Tasking.Entry_Calls
*** 507,513 ****
  
        Self_Id.Common.State := Runnable;
        Utilities.Exit_One_ATC_Level (Self_Id);
- 
     end Wait_For_Completion;
  
     --------------------------------------
--- 432,437 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taenca.ads gcc-11.1.0/gcc/ada/libgnarl/s-taenca.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-taenca.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taenca.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Tasking.Entry_Calls is
*** 61,68 ****
        Call    : Entry_Call_Link);
     --  This procedure suspends the calling task until the specified entry
     --  call is queued abortably or completes.
!    --  Abortion must be deferred when calling this procedure, and the global
!    --  RTS lock taken when Single_Lock.
  
     procedure Try_To_Cancel_Entry_Call (Succeeded : out Boolean);
     pragma Inline (Try_To_Cancel_Entry_Call);
--- 61,67 ----
        Call    : Entry_Call_Link);
     --  This procedure suspends the calling task until the specified entry
     --  call is queued abortably or completes.
!    --  Abortion must be deferred when calling this procedure.
  
     procedure Try_To_Cancel_Entry_Call (Succeeded : out Boolean);
     pragma Inline (Try_To_Cancel_Entry_Call);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taprob.adb gcc-11.1.0/gcc/ada/libgnarl/s-taprob.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-taprob.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taprob.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,39 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  with System.Task_Primitives.Operations;
  with System.Soft_Links.Tasking;
  
--- 30,35 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taprob.ads gcc-11.1.0/gcc/ada/libgnarl/s-taprob.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-taprob.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taprob.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taprop.ads gcc-11.1.0/gcc/ada/libgnarl/s-taprop.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-taprop.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taprop.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Task_Primitives.Operation
*** 181,191 ****
     procedure Write_Lock
       (L                 : not null access Lock;
        Ceiling_Violation : out Boolean);
!    procedure Write_Lock
!      (L           : not null access RTS_Lock;
!       Global_Lock : Boolean := False);
!    procedure Write_Lock
!      (T : ST.Task_Id);
     pragma Inline (Write_Lock);
     --  Lock a lock object for write access. After this operation returns,
     --  the calling task holds write permission for the lock object. No other
--- 181,188 ----
     procedure Write_Lock
       (L                 : not null access Lock;
        Ceiling_Violation : out Boolean);
!    procedure Write_Lock (L : not null access RTS_Lock);
!    procedure Write_Lock (T : ST.Task_Id);
     pragma Inline (Write_Lock);
     --  Lock a lock object for write access. After this operation returns,
     --  the calling task holds write permission for the lock object. No other
*************** package System.Task_Primitives.Operation
*** 198,206 ****
     --  operation failed, which will happen if there is a priority ceiling
     --  violation.
     --
-    --  For the operation on RTS_Lock, Global_Lock should be set to True
-    --  if L is a global lock (Single_RTS_Lock, Global_Task_Lock).
-    --
     --  For the operation on ST.Task_Id, the lock is the special lock object
     --  associated with that task's ATCB. This lock has effective ceiling
     --  priority high enough that it is safe to call by a task with any
--- 195,200 ----
*************** package System.Task_Primitives.Operation
*** 235,245 ****
  
     procedure Unlock
       (L : not null access Lock);
!    procedure Unlock
!      (L           : not null access RTS_Lock;
!       Global_Lock : Boolean := False);
!    procedure Unlock
!      (T : ST.Task_Id);
     pragma Inline (Unlock);
     --  Unlock a locked lock object
     --
--- 229,236 ----
  
     procedure Unlock
       (L : not null access Lock);
!    procedure Unlock (L : not null access RTS_Lock);
!    procedure Unlock (T : ST.Task_Id);
     pragma Inline (Unlock);
     --  Unlock a locked lock object
     --
*************** package System.Task_Primitives.Operation
*** 249,257 ****
     --  read or write permission. (That is, matching pairs of Lock and Unlock
     --  operations on each lock object must be properly nested.)
  
-    --  For the operation on RTS_Lock, Global_Lock should be set to True if L
-    --  is a global lock (Single_RTS_Lock, Global_Task_Lock).
-    --
     --  Note that Write_Lock for RTS_Lock does not have an out-parameter.
     --  RTS_Locks are used in situations where we have not made provision for
     --  recovery from ceiling violations. We do not expect them to occur inside
--- 240,245 ----
*************** package System.Task_Primitives.Operation
*** 424,433 ****
  
     --  Following two routines are used for possible operations needed to be
     --  setup/cleared upon entrance/exit of RTS while maintaining a single
!    --  thread of control in the RTS. Since we intend these routines to be used
!    --  for implementing the Single_Lock RTS, Lock_RTS should follow the first
!    --  Defer_Abort operation entering RTS. In the same fashion Unlock_RTS
!    --  should precede the last Undefer_Abort exiting RTS.
     --
     --  These routines also replace the functions Lock/Unlock_All_Tasks_List
  
--- 412,418 ----
  
     --  Following two routines are used for possible operations needed to be
     --  setup/cleared upon entrance/exit of RTS while maintaining a single
!    --  thread of control in the RTS.
     --
     --  These routines also replace the functions Lock/Unlock_All_Tasks_List
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taprop__dummy.adb gcc-11.1.0/gcc/ada/libgnarl/s-taprop__dummy.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-taprop__dummy.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taprop__dummy.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 34,43 ****
  --  This package contains all the GNULL primitives that interface directly with
  --  the underlying OS.
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  package body System.Task_Primitives.Operations is
  
     use System.Tasking;
--- 34,39 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taprop__hpux-dce.adb gcc-11.1.0/gcc/ada/libgnarl/s-taprop__hpux-dce.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-taprop__hpux-dce.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taprop__hpux-dce.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 34,43 ****
  --  This package contains all the GNULL primitives that interface directly with
  --  the underlying OS.
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  with Ada.Unchecked_Conversion;
  
  with Interfaces.C;
--- 34,39 ----
*************** package body System.Task_Primitives.Oper
*** 83,89 ****
     Single_RTS_Lock : aliased RTS_Lock;
     --  This is a lock to allow only one thread of control in the RTS at
     --  a time; it is used to execute in mutual exclusion from all other tasks.
!    --  Used mainly in Single_Lock mode, but also to protect All_Tasks_List
  
     Environment_Task_Id : Task_Id;
     --  A variable to hold Task_Id for the environment task
--- 79,85 ----
     Single_RTS_Lock : aliased RTS_Lock;
     --  This is a lock to allow only one thread of control in the RTS at
     --  a time; it is used to execute in mutual exclusion from all other tasks.
!    --  Used to protect All_Tasks_List
  
     Environment_Task_Id : Task_Id;
     --  A variable to hold Task_Id for the environment task
*************** package body System.Task_Primitives.Oper
*** 325,349 ****
        Ceiling_Violation := False;
     end Write_Lock;
  
!    procedure Write_Lock
!      (L           : not null access RTS_Lock;
!       Global_Lock : Boolean := False)
!    is
        Result : Interfaces.C.int;
     begin
!       if not Single_Lock or else Global_Lock then
!          Result := pthread_mutex_lock (L);
!          pragma Assert (Result = 0);
!       end if;
     end Write_Lock;
  
     procedure Write_Lock (T : Task_Id) is
        Result : Interfaces.C.int;
     begin
!       if not Single_Lock then
!          Result := pthread_mutex_lock (T.Common.LL.L'Access);
!          pragma Assert (Result = 0);
!       end if;
     end Write_Lock;
  
     ---------------
--- 321,338 ----
        Ceiling_Violation := False;
     end Write_Lock;
  
!    procedure Write_Lock (L : not null access RTS_Lock) is
        Result : Interfaces.C.int;
     begin
!       Result := pthread_mutex_lock (L);
!       pragma Assert (Result = 0);
     end Write_Lock;
  
     procedure Write_Lock (T : Task_Id) is
        Result : Interfaces.C.int;
     begin
!       Result := pthread_mutex_lock (T.Common.LL.L'Access);
!       pragma Assert (Result = 0);
     end Write_Lock;
  
     ---------------
*************** package body System.Task_Primitives.Oper
*** 369,393 ****
        pragma Assert (Result = 0);
     end Unlock;
  
!    procedure Unlock
!      (L           : not null access RTS_Lock;
!       Global_Lock : Boolean := False)
!    is
        Result : Interfaces.C.int;
     begin
!       if not Single_Lock or else Global_Lock then
!          Result := pthread_mutex_unlock (L);
!          pragma Assert (Result = 0);
!       end if;
     end Unlock;
  
     procedure Unlock (T : Task_Id) is
        Result : Interfaces.C.int;
     begin
!       if not Single_Lock then
!          Result := pthread_mutex_unlock (T.Common.LL.L'Access);
!          pragma Assert (Result = 0);
!       end if;
     end Unlock;
  
     -----------------
--- 358,375 ----
        pragma Assert (Result = 0);
     end Unlock;
  
!    procedure Unlock (L : not null access RTS_Lock) is
        Result : Interfaces.C.int;
     begin
!       Result := pthread_mutex_unlock (L);
!       pragma Assert (Result = 0);
     end Unlock;
  
     procedure Unlock (T : Task_Id) is
        Result : Interfaces.C.int;
     begin
!       Result := pthread_mutex_unlock (T.Common.LL.L'Access);
!       pragma Assert (Result = 0);
     end Unlock;
  
     -----------------
*************** package body System.Task_Primitives.Oper
*** 421,429 ****
        Result :=
          pthread_cond_wait
            (cond  => Self_ID.Common.LL.CV'Access,
!            mutex => (if Single_Lock
!                      then Single_RTS_Lock'Access
!                      else Self_ID.Common.LL.L'Access));
  
        --  EINTR is not considered a failure
  
--- 403,409 ----
        Result :=
          pthread_cond_wait
            (cond  => Self_ID.Common.LL.CV'Access,
!            mutex => Self_ID.Common.LL.L'Access);
  
        --  EINTR is not considered a failure
  
*************** package body System.Task_Primitives.Oper
*** 467,475 ****
              Result :=
                pthread_cond_timedwait
                  (cond    => Self_ID.Common.LL.CV'Access,
!                  mutex   => (if Single_Lock
!                              then Single_RTS_Lock'Access
!                              else Self_ID.Common.LL.L'Access),
                   abstime => Request'Access);
  
              exit when Abs_Time <= Monotonic_Clock;
--- 447,453 ----
              Result :=
                pthread_cond_timedwait
                  (cond    => Self_ID.Common.LL.CV'Access,
!                  mutex   => Self_ID.Common.LL.L'Access,
                   abstime => Request'Access);
  
              exit when Abs_Time <= Monotonic_Clock;
*************** package body System.Task_Primitives.Oper
*** 504,513 ****
        pragma Warnings (Off, Result);
  
     begin
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        Write_Lock (Self_ID);
  
        Abs_Time :=
--- 482,487 ----
*************** package body System.Task_Primitives.Oper
*** 525,533 ****
              Result :=
                pthread_cond_timedwait
                  (cond    => Self_ID.Common.LL.CV'Access,
!                  mutex   => (if Single_Lock
!                              then Single_RTS_Lock'Access
!                              else Self_ID.Common.LL.L'Access),
                   abstime => Request'Access);
  
              exit when Abs_Time <= Monotonic_Clock;
--- 499,505 ----
              Result :=
                pthread_cond_timedwait
                  (cond    => Self_ID.Common.LL.CV'Access,
!                  mutex   => Self_ID.Common.LL.L'Access,
                   abstime => Request'Access);
  
              exit when Abs_Time <= Monotonic_Clock;
*************** package body System.Task_Primitives.Oper
*** 541,551 ****
        end if;
  
        Unlock (Self_ID);
- 
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        Result := sched_yield;
     end Timed_Delay;
  
--- 513,518 ----
*************** package body System.Task_Primitives.Oper
*** 733,758 ****
        Cond_Attr  : aliased pthread_condattr_t;
  
     begin
!       if not Single_Lock then
!          Result := pthread_mutexattr_init (Mutex_Attr'Access);
!          pragma Assert (Result = 0 or else Result = ENOMEM);
! 
!          if Result = 0 then
!             Result :=
!               pthread_mutex_init
!                 (Self_ID.Common.LL.L'Access, Mutex_Attr'Access);
!             pragma Assert (Result = 0 or else Result = ENOMEM);
!          end if;
  
!          if Result /= 0 then
!             Succeeded := False;
!             return;
!          end if;
  
!          Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
!          pragma Assert (Result = 0);
        end if;
  
        Result := pthread_condattr_init (Cond_Attr'Access);
        pragma Assert (Result = 0 or else Result = ENOMEM);
  
--- 700,723 ----
        Cond_Attr  : aliased pthread_condattr_t;
  
     begin
!       Result := pthread_mutexattr_init (Mutex_Attr'Access);
!       pragma Assert (Result = 0 or else Result = ENOMEM);
  
!       if Result = 0 then
!          Result :=
!            pthread_mutex_init
!              (Self_ID.Common.LL.L'Access, Mutex_Attr'Access);
!          pragma Assert (Result = 0 or else Result = ENOMEM);
!       end if;
  
!       if Result /= 0 then
!          Succeeded := False;
!          return;
        end if;
  
+       Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
+       pragma Assert (Result = 0);
+ 
        Result := pthread_condattr_init (Cond_Attr'Access);
        pragma Assert (Result = 0 or else Result = ENOMEM);
  
*************** package body System.Task_Primitives.Oper
*** 767,776 ****
        if Result = 0 then
           Succeeded := True;
        else
!          if not Single_Lock then
!             Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
!             pragma Assert (Result = 0);
!          end if;
  
           Succeeded := False;
        end if;
--- 732,739 ----
        if Result = 0 then
           Succeeded := True;
        else
!          Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
!          pragma Assert (Result = 0);
  
           Succeeded := False;
        end if;
*************** package body System.Task_Primitives.Oper
*** 841,850 ****
        Result : Interfaces.C.int;
  
     begin
!       if not Single_Lock then
!          Result := pthread_mutex_destroy (T.Common.LL.L'Access);
!          pragma Assert (Result = 0);
!       end if;
  
        Result := pthread_cond_destroy (T.Common.LL.CV'Access);
        pragma Assert (Result = 0);
--- 804,811 ----
        Result : Interfaces.C.int;
  
     begin
!       Result := pthread_mutex_destroy (T.Common.LL.L'Access);
!       pragma Assert (Result = 0);
  
        Result := pthread_cond_destroy (T.Common.LL.CV'Access);
        pragma Assert (Result = 0);
*************** package body System.Task_Primitives.Oper
*** 1093,1099 ****
  
     procedure Lock_RTS is
     begin
!       Write_Lock (Single_RTS_Lock'Access, Global_Lock => True);
     end Lock_RTS;
  
     ----------------
--- 1054,1060 ----
  
     procedure Lock_RTS is
     begin
!       Write_Lock (Single_RTS_Lock'Access);
     end Lock_RTS;
  
     ----------------
*************** package body System.Task_Primitives.Oper
*** 1102,1108 ****
  
     procedure Unlock_RTS is
     begin
!       Unlock (Single_RTS_Lock'Access, Global_Lock => True);
     end Unlock_RTS;
  
     ------------------
--- 1063,1069 ----
  
     procedure Unlock_RTS is
     begin
!       Unlock (Single_RTS_Lock'Access);
     end Unlock_RTS;
  
     ------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taprop__linux.adb gcc-11.1.0/gcc/ada/libgnarl/s-taprop__linux.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-taprop__linux.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taprop__linux.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 34,43 ****
  --  This package contains all the GNULL primitives that interface directly with
  --  the underlying OS.
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  with Interfaces.C; use Interfaces; use type Interfaces.C.int;
  
  with System.Task_Info;
--- 34,39 ----
*************** package body System.Task_Primitives.Oper
*** 75,81 ****
     Single_RTS_Lock : aliased RTS_Lock;
     --  This is a lock to allow only one thread of control in the RTS at
     --  a time; it is used to execute in mutual exclusion from all other tasks.
!    --  Used mainly in Single_Lock mode, but also to protect All_Tasks_List
  
     Environment_Task_Id : Task_Id;
     --  A variable to hold Task_Id for the environment task
--- 71,77 ----
     Single_RTS_Lock : aliased RTS_Lock;
     --  This is a lock to allow only one thread of control in the RTS at
     --  a time; it is used to execute in mutual exclusion from all other tasks.
!    --  Used to protect All_Tasks_List
  
     Environment_Task_Id : Task_Id;
     --  A variable to hold Task_Id for the environment task
*************** package body System.Task_Primitives.Oper
*** 243,251 ****
        return Ceiling_Support;
     end Get_Ceiling_Support;
  
!    pragma Warnings (Off, "non-static call not allowed in preelaborated unit");
     Ceiling_Support : constant Boolean := Get_Ceiling_Support;
!    pragma Warnings (On, "non-static call not allowed in preelaborated unit");
     --  True if the locking policy is Ceiling_Locking, and the current process
     --  has permission to use this policy. The process has permission if it is
     --  running as 'root', or if the capability was set by the setcap command,
--- 239,247 ----
        return Ceiling_Support;
     end Get_Ceiling_Support;
  
!    pragma Warnings (Off, "non-preelaborable call not allowed*");
     Ceiling_Support : constant Boolean := Get_Ceiling_Support;
!    pragma Warnings (On, "non-preelaborable call not allowed*");
     --  True if the locking policy is Ceiling_Locking, and the current process
     --  has permission to use this policy. The process has permission if it is
     --  running as 'root', or if the capability was set by the setcap command,
*************** package body System.Task_Primitives.Oper
*** 304,310 ****
  
     procedure Lock_RTS is
     begin
!       Write_Lock (Single_RTS_Lock'Access, Global_Lock => True);
     end Lock_RTS;
  
     ----------------
--- 300,306 ----
  
     procedure Lock_RTS is
     begin
!       Write_Lock (Single_RTS_Lock'Access);
     end Lock_RTS;
  
     ----------------
*************** package body System.Task_Primitives.Oper
*** 313,319 ****
  
     procedure Unlock_RTS is
     begin
!       Unlock (Single_RTS_Lock'Access, Global_Lock => True);
     end Unlock_RTS;
  
     -----------------
--- 309,315 ----
  
     procedure Unlock_RTS is
     begin
!       Unlock (Single_RTS_Lock'Access);
     end Unlock_RTS;
  
     -----------------
*************** package body System.Task_Primitives.Oper
*** 484,508 ****
        Ceiling_Violation := Result = EINVAL;
     end Write_Lock;
  
!    procedure Write_Lock
!      (L           : not null access RTS_Lock;
!       Global_Lock : Boolean := False)
!    is
        Result : C.int;
     begin
!       if not Single_Lock or else Global_Lock then
!          Result := pthread_mutex_lock (L);
!          pragma Assert (Result = 0);
!       end if;
     end Write_Lock;
  
     procedure Write_Lock (T : Task_Id) is
        Result : C.int;
     begin
!       if not Single_Lock then
!          Result := pthread_mutex_lock (T.Common.LL.L'Access);
!          pragma Assert (Result = 0);
!       end if;
     end Write_Lock;
  
     ---------------
--- 480,497 ----
        Ceiling_Violation := Result = EINVAL;
     end Write_Lock;
  
!    procedure Write_Lock (L : not null access RTS_Lock) is
        Result : C.int;
     begin
!       Result := pthread_mutex_lock (L);
!       pragma Assert (Result = 0);
     end Write_Lock;
  
     procedure Write_Lock (T : Task_Id) is
        Result : C.int;
     begin
!       Result := pthread_mutex_lock (T.Common.LL.L'Access);
!       pragma Assert (Result = 0);
     end Write_Lock;
  
     ---------------
*************** package body System.Task_Primitives.Oper
*** 542,566 ****
        pragma Assert (Result = 0);
     end Unlock;
  
!    procedure Unlock
!      (L           : not null access RTS_Lock;
!       Global_Lock : Boolean := False)
!    is
        Result : C.int;
     begin
!       if not Single_Lock or else Global_Lock then
!          Result := pthread_mutex_unlock (L);
!          pragma Assert (Result = 0);
!       end if;
     end Unlock;
  
     procedure Unlock (T : Task_Id) is
        Result : C.int;
     begin
!       if not Single_Lock then
!          Result := pthread_mutex_unlock (T.Common.LL.L'Access);
!          pragma Assert (Result = 0);
!       end if;
     end Unlock;
  
     -----------------
--- 531,548 ----
        pragma Assert (Result = 0);
     end Unlock;
  
!    procedure Unlock (L : not null access RTS_Lock) is
        Result : C.int;
     begin
!       Result := pthread_mutex_unlock (L);
!       pragma Assert (Result = 0);
     end Unlock;
  
     procedure Unlock (T : Task_Id) is
        Result : C.int;
     begin
!       Result := pthread_mutex_unlock (T.Common.LL.L'Access);
!       pragma Assert (Result = 0);
     end Unlock;
  
     -----------------
*************** package body System.Task_Primitives.Oper
*** 596,604 ****
        Result :=
          pthread_cond_wait
            (cond  => Self_ID.Common.LL.CV'Access,
!            mutex => (if Single_Lock
!                      then Single_RTS_Lock'Access
!                      else Self_ID.Common.LL.L'Access));
  
        --  EINTR is not considered a failure
  
--- 578,584 ----
        Result :=
          pthread_cond_wait
            (cond  => Self_ID.Common.LL.CV'Access,
!            mutex => Self_ID.Common.LL.L'Access);
  
        --  EINTR is not considered a failure
  
*************** package body System.Task_Primitives.Oper
*** 860,872 ****
  
        Self_ID.Common.LL.Thread := Null_Thread_Id;
  
!       if not Single_Lock then
!          if Init_Mutex
!            (Self_ID.Common.LL.L'Access, Any_Priority'Last) /= 0
!          then
!             Succeeded := False;
!             return;
!          end if;
        end if;
  
        Result := pthread_condattr_init (Cond_Attr'Access);
--- 840,848 ----
  
        Self_ID.Common.LL.Thread := Null_Thread_Id;
  
!       if Init_Mutex (Self_ID.Common.LL.L'Access, Any_Priority'Last) /= 0 then
!          Succeeded := False;
!          return;
        end if;
  
        Result := pthread_condattr_init (Cond_Attr'Access);
*************** package body System.Task_Primitives.Oper
*** 885,894 ****
        if Result = 0 then
           Succeeded := True;
        else
!          if not Single_Lock then
!             Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
!             pragma Assert (Result = 0);
!          end if;
  
           Succeeded := False;
        end if;
--- 861,868 ----
        if Result = 0 then
           Succeeded := True;
        else
!          Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
!          pragma Assert (Result = 0);
  
           Succeeded := False;
        end if;
*************** package body System.Task_Primitives.Oper
*** 1070,1079 ****
        Result : C.int;
  
     begin
!       if not Single_Lock then
!          Result := pthread_mutex_destroy (T.Common.LL.L'Access);
!          pragma Assert (Result = 0);
!       end if;
  
        Result := pthread_cond_destroy (T.Common.LL.CV'Access);
        pragma Assert (Result = 0);
--- 1044,1051 ----
        Result : C.int;
  
     begin
!       Result := pthread_mutex_destroy (T.Common.LL.L'Access);
!       pragma Assert (Result = 0);
  
        Result := pthread_cond_destroy (T.Common.LL.CV'Access);
        pragma Assert (Result = 0);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taprop__mingw.adb gcc-11.1.0/gcc/ada/libgnarl/s-taprop__mingw.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-taprop__mingw.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taprop__mingw.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 34,43 ****
  --  This package contains all the GNULL primitives that interface directly with
  --  the underlying OS.
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  with Interfaces.C;
  with Interfaces.C.Strings;
  
--- 34,39 ----
*************** package body System.Task_Primitives.Oper
*** 111,117 ****
     Single_RTS_Lock : aliased RTS_Lock;
     --  This is a lock to allow only one thread of control in the RTS at
     --  a time; it is used to execute in mutual exclusion from all other tasks.
!    --  Used mainly in Single_Lock mode, but also to protect All_Tasks_List
  
     Time_Slice_Val : Integer;
     pragma Import (C, Time_Slice_Val, "__gl_time_slice_val");
--- 107,113 ----
     Single_RTS_Lock : aliased RTS_Lock;
     --  This is a lock to allow only one thread of control in the RTS at
     --  a time; it is used to execute in mutual exclusion from all other tasks.
!    --  Used to protect All_Tasks_List
  
     Time_Slice_Val : Integer;
     pragma Import (C, Time_Slice_Val, "__gl_time_slice_val");
*************** package body System.Task_Primitives.Oper
*** 290,296 ****
  
        Result_Bool := ResetEvent (HANDLE (Cond.all));
        pragma Assert (Result_Bool = Win32.TRUE);
!       Unlock (L, Global_Lock => True);
  
        --  No problem if we are interrupted here: if the condition is signaled,
        --  WaitForSingleObject will simply not block
--- 286,292 ----
  
        Result_Bool := ResetEvent (HANDLE (Cond.all));
        pragma Assert (Result_Bool = Win32.TRUE);
!       Unlock (L);
  
        --  No problem if we are interrupted here: if the condition is signaled,
        --  WaitForSingleObject will simply not block
*************** package body System.Task_Primitives.Oper
*** 298,304 ****
        Result := WaitForSingleObject (HANDLE (Cond.all), Wait_Infinite);
        pragma Assert (Result = 0);
  
!       Write_Lock (L, Global_Lock => True);
     end Cond_Wait;
  
     ---------------------
--- 294,300 ----
        Result := WaitForSingleObject (HANDLE (Cond.all), Wait_Infinite);
        pragma Assert (Result = 0);
  
!       Write_Lock (L);
     end Cond_Wait;
  
     ---------------------
*************** package body System.Task_Primitives.Oper
*** 330,336 ****
  
        Result := ResetEvent (HANDLE (Cond.all));
        pragma Assert (Result = Win32.TRUE);
!       Unlock (L, Global_Lock => True);
  
        --  No problem if we are interrupted here: if the condition is signaled,
        --  WaitForSingleObject will simply not block.
--- 326,332 ----
  
        Result := ResetEvent (HANDLE (Cond.all));
        pragma Assert (Result = Win32.TRUE);
!       Unlock (L);
  
        --  No problem if we are interrupted here: if the condition is signaled,
        --  WaitForSingleObject will simply not block.
*************** package body System.Task_Primitives.Oper
*** 355,361 ****
           end if;
        end if;
  
!       Write_Lock (L, Global_Lock => True);
  
        --  Ensure post-condition
  
--- 351,357 ----
           end if;
        end if;
  
!       Write_Lock (L);
  
        --  Ensure post-condition
  
*************** package body System.Task_Primitives.Oper
*** 465,485 ****
        Ceiling_Violation := False;
     end Write_Lock;
  
!    procedure Write_Lock
!      (L           : not null access RTS_Lock;
!       Global_Lock : Boolean := False)
!    is
     begin
!       if not Single_Lock or else Global_Lock then
!          EnterCriticalSection (L);
!       end if;
     end Write_Lock;
  
     procedure Write_Lock (T : Task_Id) is
     begin
!       if not Single_Lock then
!          EnterCriticalSection (T.Common.LL.L'Access);
!       end if;
     end Write_Lock;
  
     ---------------
--- 461,474 ----
        Ceiling_Violation := False;
     end Write_Lock;
  
!    procedure Write_Lock (L : not null access RTS_Lock) is
     begin
!       EnterCriticalSection (L);
     end Write_Lock;
  
     procedure Write_Lock (T : Task_Id) is
     begin
!       EnterCriticalSection (T.Common.LL.L'Access);
     end Write_Lock;
  
     ---------------
*************** package body System.Task_Primitives.Oper
*** 501,519 ****
        LeaveCriticalSection (L.Mutex'Access);
     end Unlock;
  
!    procedure Unlock
!      (L : not null access RTS_Lock; Global_Lock : Boolean := False) is
     begin
!       if not Single_Lock or else Global_Lock then
!          LeaveCriticalSection (L);
!       end if;
     end Unlock;
  
     procedure Unlock (T : Task_Id) is
     begin
!       if not Single_Lock then
!          LeaveCriticalSection (T.Common.LL.L'Access);
!       end if;
     end Unlock;
  
     -----------------
--- 490,503 ----
        LeaveCriticalSection (L.Mutex'Access);
     end Unlock;
  
!    procedure Unlock (L : not null access RTS_Lock) is
     begin
!       LeaveCriticalSection (L);
     end Unlock;
  
     procedure Unlock (T : Task_Id) is
     begin
!       LeaveCriticalSection (T.Common.LL.L'Access);
     end Unlock;
  
     -----------------
*************** package body System.Task_Primitives.Oper
*** 544,554 ****
     begin
        pragma Assert (Self_ID = Self);
  
!       if Single_Lock then
!          Cond_Wait (Self_ID.Common.LL.CV'Access, Single_RTS_Lock'Access);
!       else
!          Cond_Wait (Self_ID.Common.LL.CV'Access, Self_ID.Common.LL.L'Access);
!       end if;
  
        if Self_ID.Deferral_Level = 0
          and then Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
--- 528,534 ----
     begin
        pragma Assert (Self_ID = Self);
  
!       Cond_Wait (Self_ID.Common.LL.CV'Access, Self_ID.Common.LL.L'Access);
  
        if Self_ID.Deferral_Level = 0
          and then Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
*************** package body System.Task_Primitives.Oper
*** 599,617 ****
           loop
              exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
  
!             if Single_Lock then
!                Cond_Timed_Wait
!                  (Self_ID.Common.LL.CV'Access,
!                   Single_RTS_Lock'Access,
!                   Rel_Time, Local_Timedout, Result);
!             else
!                Cond_Timed_Wait
!                  (Self_ID.Common.LL.CV'Access,
!                   Self_ID.Common.LL.L'Access,
!                   Rel_Time, Local_Timedout, Result);
!             end if;
! 
              Check_Time := Monotonic_Clock;
              exit when Abs_Time <= Check_Time;
  
              if not Local_Timedout then
--- 579,590 ----
           loop
              exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
  
!             Cond_Timed_Wait
!               (Self_ID.Common.LL.CV'Access,
!                Self_ID.Common.LL.L'Access,
!                Rel_Time, Local_Timedout, Result);
              Check_Time := Monotonic_Clock;
+ 
              exit when Abs_Time <= Check_Time;
  
              if not Local_Timedout then
*************** package body System.Task_Primitives.Oper
*** 645,654 ****
        pragma Unreferenced (Timedout, Result);
  
     begin
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        Write_Lock (Self_ID);
  
        if Mode = Relative then
--- 618,623 ----
*************** package body System.Task_Primitives.Oper
*** 665,683 ****
           loop
              exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
  
!             if Single_Lock then
!                Cond_Timed_Wait
!                  (Self_ID.Common.LL.CV'Access,
!                   Single_RTS_Lock'Access,
!                   Rel_Time, Timedout, Result);
!             else
!                Cond_Timed_Wait
!                  (Self_ID.Common.LL.CV'Access,
!                   Self_ID.Common.LL.L'Access,
!                   Rel_Time, Timedout, Result);
!             end if;
! 
              Check_Time := Monotonic_Clock;
              exit when Abs_Time <= Check_Time;
  
              Rel_Time := Abs_Time - Check_Time;
--- 634,645 ----
           loop
              exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
  
!             Cond_Timed_Wait
!               (Self_ID.Common.LL.CV'Access,
!                Self_ID.Common.LL.L'Access,
!                Rel_Time, Timedout, Result);
              Check_Time := Monotonic_Clock;
+ 
              exit when Abs_Time <= Check_Time;
  
              Rel_Time := Abs_Time - Check_Time;
*************** package body System.Task_Primitives.Oper
*** 687,697 ****
        end if;
  
        Unlock (Self_ID);
- 
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        Yield;
     end Timed_Delay;
  
--- 649,654 ----
*************** package body System.Task_Primitives.Oper
*** 845,854 ****
        Self_ID.Common.LL.Thread := Null_Thread_Id;
  
        Initialize_Cond (Self_ID.Common.LL.CV'Access);
! 
!       if not Single_Lock then
!          Initialize_Lock (Self_ID.Common.LL.L'Access, ATCB_Level);
!       end if;
  
        Succeeded := True;
     end Initialize_TCB;
--- 802,808 ----
        Self_ID.Common.LL.Thread := Null_Thread_Id;
  
        Initialize_Cond (Self_ID.Common.LL.CV'Access);
!       Initialize_Lock (Self_ID.Common.LL.L'Access, ATCB_Level);
  
        Succeeded := True;
     end Initialize_TCB;
*************** package body System.Task_Primitives.Oper
*** 976,985 ****
        pragma Unreferenced (Succeeded);
  
     begin
!       if not Single_Lock then
!          Finalize_Lock (T.Common.LL.L'Access);
!       end if;
! 
        Finalize_Cond (T.Common.LL.CV'Access);
  
        if T.Known_Tasks_Index /= -1 then
--- 930,936 ----
        pragma Unreferenced (Succeeded);
  
     begin
!       Finalize_Lock (T.Common.LL.L'Access);
        Finalize_Cond (T.Common.LL.CV'Access);
  
        if T.Known_Tasks_Index /= -1 then
*************** package body System.Task_Primitives.Oper
*** 1035,1041 ****
  
     procedure Lock_RTS is
     begin
!       Write_Lock (Single_RTS_Lock'Access, Global_Lock => True);
     end Lock_RTS;
  
     ----------------
--- 986,992 ----
  
     procedure Lock_RTS is
     begin
!       Write_Lock (Single_RTS_Lock'Access);
     end Lock_RTS;
  
     ----------------
*************** package body System.Task_Primitives.Oper
*** 1044,1050 ****
  
     procedure Unlock_RTS is
     begin
!       Unlock (Single_RTS_Lock'Access, Global_Lock => True);
     end Unlock_RTS;
  
     ----------------
--- 995,1001 ----
  
     procedure Unlock_RTS is
     begin
!       Unlock (Single_RTS_Lock'Access);
     end Unlock_RTS;
  
     ----------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taprop__posix.adb gcc-11.1.0/gcc/ada/libgnarl/s-taprop__posix.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-taprop__posix.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taprop__posix.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 40,49 ****
  --  For configurations where SCHED_FIFO and priority ceiling are not a
  --  requirement, this file can also be used (e.g AiX threads)
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  with Ada.Unchecked_Conversion;
  
  with Interfaces.C;
--- 40,45 ----
*************** package body System.Task_Primitives.Oper
*** 82,88 ****
     Single_RTS_Lock : aliased RTS_Lock;
     --  This is a lock to allow only one thread of control in the RTS at
     --  a time; it is used to execute in mutual exclusion from all other tasks.
!    --  Used mainly in Single_Lock mode, but also to protect All_Tasks_List
  
     Environment_Task_Id : Task_Id;
     --  A variable to hold Task_Id for the environment task
--- 78,84 ----
     Single_RTS_Lock : aliased RTS_Lock;
     --  This is a lock to allow only one thread of control in the RTS at
     --  a time; it is used to execute in mutual exclusion from all other tasks.
!    --  Used to protect All_Tasks_List
  
     Environment_Task_Id : Task_Id;
     --  A variable to hold Task_Id for the environment task
*************** package body System.Task_Primitives.Oper
*** 443,467 ****
        pragma Assert (Result = 0 or else Ceiling_Violation);
     end Write_Lock;
  
!    procedure Write_Lock
!      (L           : not null access RTS_Lock;
!       Global_Lock : Boolean := False)
!    is
        Result : Interfaces.C.int;
     begin
!       if not Single_Lock or else Global_Lock then
!          Result := pthread_mutex_lock (L);
!          pragma Assert (Result = 0);
!       end if;
     end Write_Lock;
  
     procedure Write_Lock (T : Task_Id) is
        Result : Interfaces.C.int;
     begin
!       if not Single_Lock then
!          Result := pthread_mutex_lock (T.Common.LL.L'Access);
!          pragma Assert (Result = 0);
!       end if;
     end Write_Lock;
  
     ---------------
--- 439,456 ----
        pragma Assert (Result = 0 or else Ceiling_Violation);
     end Write_Lock;
  
!    procedure Write_Lock (L : not null access RTS_Lock) is
        Result : Interfaces.C.int;
     begin
!       Result := pthread_mutex_lock (L);
!       pragma Assert (Result = 0);
     end Write_Lock;
  
     procedure Write_Lock (T : Task_Id) is
        Result : Interfaces.C.int;
     begin
!       Result := pthread_mutex_lock (T.Common.LL.L'Access);
!       pragma Assert (Result = 0);
     end Write_Lock;
  
     ---------------
*************** package body System.Task_Primitives.Oper
*** 485,508 ****
        pragma Assert (Result = 0);
     end Unlock;
  
!    procedure Unlock
!      (L : not null access RTS_Lock; Global_Lock : Boolean := False)
!    is
        Result : Interfaces.C.int;
     begin
!       if not Single_Lock or else Global_Lock then
!          Result := pthread_mutex_unlock (L);
!          pragma Assert (Result = 0);
!       end if;
     end Unlock;
  
     procedure Unlock (T : Task_Id) is
        Result : Interfaces.C.int;
     begin
!       if not Single_Lock then
!          Result := pthread_mutex_unlock (T.Common.LL.L'Access);
!          pragma Assert (Result = 0);
!       end if;
     end Unlock;
  
     -----------------
--- 474,491 ----
        pragma Assert (Result = 0);
     end Unlock;
  
!    procedure Unlock (L : not null access RTS_Lock) is
        Result : Interfaces.C.int;
     begin
!       Result := pthread_mutex_unlock (L);
!       pragma Assert (Result = 0);
     end Unlock;
  
     procedure Unlock (T : Task_Id) is
        Result : Interfaces.C.int;
     begin
!       Result := pthread_mutex_unlock (T.Common.LL.L'Access);
!       pragma Assert (Result = 0);
     end Unlock;
  
     -----------------
*************** package body System.Task_Primitives.Oper
*** 536,544 ****
        Result :=
          pthread_cond_wait
            (cond  => Self_ID.Common.LL.CV'Access,
!            mutex => (if Single_Lock
!                      then Single_RTS_Lock'Access
!                      else Self_ID.Common.LL.L'Access));
  
        --  EINTR is not considered a failure
  
--- 519,525 ----
        Result :=
          pthread_cond_wait
            (cond  => Self_ID.Common.LL.CV'Access,
!            mutex => Self_ID.Common.LL.L'Access);
  
        --  EINTR is not considered a failure
  
*************** package body System.Task_Primitives.Oper
*** 728,775 ****
        Next_Serial_Number := Next_Serial_Number + 1;
        pragma Assert (Next_Serial_Number /= 0);
  
!       if not Single_Lock then
!          Result := pthread_mutexattr_init (Mutex_Attr'Access);
!          pragma Assert (Result = 0 or else Result = ENOMEM);
! 
!          if Result = 0 then
!             if Locking_Policy = 'C' then
!                Result :=
!                  pthread_mutexattr_setprotocol
!                    (Mutex_Attr'Access,
!                     PTHREAD_PRIO_PROTECT);
!                pragma Assert (Result = 0);
  
!                Result :=
!                  pthread_mutexattr_setprioceiling
!                    (Mutex_Attr'Access,
!                     Interfaces.C.int (System.Any_Priority'Last));
!                pragma Assert (Result = 0);
  
!             elsif Locking_Policy = 'I' then
!                Result :=
!                  pthread_mutexattr_setprotocol
!                    (Mutex_Attr'Access,
!                     PTHREAD_PRIO_INHERIT);
!                pragma Assert (Result = 0);
!             end if;
  
              Result :=
!               pthread_mutex_init
!                 (Self_ID.Common.LL.L'Access,
!                  Mutex_Attr'Access);
!             pragma Assert (Result = 0 or else Result = ENOMEM);
           end if;
  
!          if Result /= 0 then
!             Succeeded := False;
!             return;
!          end if;
  
!          Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
!          pragma Assert (Result = 0);
        end if;
  
        Result := pthread_condattr_init (Cond_Attr'Access);
        pragma Assert (Result = 0 or else Result = ENOMEM);
  
--- 709,754 ----
        Next_Serial_Number := Next_Serial_Number + 1;
        pragma Assert (Next_Serial_Number /= 0);
  
!       Result := pthread_mutexattr_init (Mutex_Attr'Access);
!       pragma Assert (Result = 0 or else Result = ENOMEM);
  
!       if Result = 0 then
!          if Locking_Policy = 'C' then
!             Result :=
!               pthread_mutexattr_setprotocol
!                 (Mutex_Attr'Access,
!                  PTHREAD_PRIO_PROTECT);
!             pragma Assert (Result = 0);
  
!             Result :=
!               pthread_mutexattr_setprioceiling
!                 (Mutex_Attr'Access,
!                  Interfaces.C.int (System.Any_Priority'Last));
!             pragma Assert (Result = 0);
  
+          elsif Locking_Policy = 'I' then
              Result :=
!               pthread_mutexattr_setprotocol
!                 (Mutex_Attr'Access,
!                  PTHREAD_PRIO_INHERIT);
!             pragma Assert (Result = 0);
           end if;
  
!          Result :=
!            pthread_mutex_init
!                 (Self_ID.Common.LL.L'Access,
!               Mutex_Attr'Access);
!          pragma Assert (Result = 0 or else Result = ENOMEM);
!       end if;
  
!       if Result /= 0 then
!          Succeeded := False;
!          return;
        end if;
  
+       Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
+       pragma Assert (Result = 0);
+ 
        Result := pthread_condattr_init (Cond_Attr'Access);
        pragma Assert (Result = 0 or else Result = ENOMEM);
  
*************** package body System.Task_Primitives.Oper
*** 786,796 ****
        if Result = 0 then
           Succeeded := True;
        else
!          if not Single_Lock then
!             Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
!             pragma Assert (Result = 0);
!          end if;
! 
           Succeeded := False;
        end if;
  
--- 765,772 ----
        if Result = 0 then
           Succeeded := True;
        else
!          Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
!          pragma Assert (Result = 0);
           Succeeded := False;
        end if;
  
*************** package body System.Task_Primitives.Oper
*** 915,924 ****
        Result : Interfaces.C.int;
  
     begin
!       if not Single_Lock then
!          Result := pthread_mutex_destroy (T.Common.LL.L'Access);
!          pragma Assert (Result = 0);
!       end if;
  
        Result := pthread_cond_destroy (T.Common.LL.CV'Access);
        pragma Assert (Result = 0);
--- 891,898 ----
        Result : Interfaces.C.int;
  
     begin
!       Result := pthread_mutex_destroy (T.Common.LL.L'Access);
!       pragma Assert (Result = 0);
  
        Result := pthread_cond_destroy (T.Common.LL.CV'Access);
        pragma Assert (Result = 0);
*************** package body System.Task_Primitives.Oper
*** 1212,1218 ****
  
     procedure Lock_RTS is
     begin
!       Write_Lock (Single_RTS_Lock'Access, Global_Lock => True);
     end Lock_RTS;
  
     ----------------
--- 1186,1192 ----
  
     procedure Lock_RTS is
     begin
!       Write_Lock (Single_RTS_Lock'Access);
     end Lock_RTS;
  
     ----------------
*************** package body System.Task_Primitives.Oper
*** 1221,1227 ****
  
     procedure Unlock_RTS is
     begin
!       Unlock (Single_RTS_Lock'Access, Global_Lock => True);
     end Unlock_RTS;
  
     ------------------
--- 1195,1201 ----
  
     procedure Unlock_RTS is
     begin
!       Unlock (Single_RTS_Lock'Access);
     end Unlock_RTS;
  
     ------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taprop__qnx.adb gcc-11.1.0/gcc/ada/libgnarl/s-taprop__qnx.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-taprop__qnx.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taprop__qnx.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 40,49 ****
  --  For configurations where SCHED_FIFO and priority ceiling are not a
  --  requirement, this file can also be used (e.g AiX threads)
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  with Ada.Unchecked_Conversion;
  
  with Interfaces.C;
--- 40,45 ----
*************** package body System.Task_Primitives.Oper
*** 82,88 ****
     Single_RTS_Lock : aliased RTS_Lock;
     --  This is a lock to allow only one thread of control in the RTS at
     --  a time; it is used to execute in mutual exclusion from all other tasks.
!    --  Used mainly in Single_Lock mode, but also to protect All_Tasks_List
  
     Environment_Task_Id : Task_Id;
     --  A variable to hold Task_Id for the environment task
--- 78,84 ----
     Single_RTS_Lock : aliased RTS_Lock;
     --  This is a lock to allow only one thread of control in the RTS at
     --  a time; it is used to execute in mutual exclusion from all other tasks.
!    --  Used to protect All_Tasks_List
  
     Environment_Task_Id : Task_Id;
     --  A variable to hold Task_Id for the environment task
*************** package body System.Task_Primitives.Oper
*** 458,482 ****
        end if;
     end Write_Lock;
  
!    procedure Write_Lock
!      (L           : not null access RTS_Lock;
!       Global_Lock : Boolean := False)
!    is
        Result : Interfaces.C.int;
     begin
!       if not Single_Lock or else Global_Lock then
!          Result := pthread_mutex_lock (L);
!          pragma Assert (Result = 0);
!       end if;
     end Write_Lock;
  
     procedure Write_Lock (T : Task_Id) is
        Result : Interfaces.C.int;
     begin
!       if not Single_Lock then
!          Result := pthread_mutex_lock (T.Common.LL.L'Access);
!          pragma Assert (Result = 0);
!       end if;
     end Write_Lock;
  
     ---------------
--- 454,471 ----
        end if;
     end Write_Lock;
  
!    procedure Write_Lock (L : not null access RTS_Lock) is
        Result : Interfaces.C.int;
     begin
!       Result := pthread_mutex_lock (L);
!       pragma Assert (Result = 0);
     end Write_Lock;
  
     procedure Write_Lock (T : Task_Id) is
        Result : Interfaces.C.int;
     begin
!       Result := pthread_mutex_lock (T.Common.LL.L'Access);
!       pragma Assert (Result = 0);
     end Write_Lock;
  
     ---------------
*************** package body System.Task_Primitives.Oper
*** 500,523 ****
        pragma Assert (Result = 0);
     end Unlock;
  
!    procedure Unlock
!      (L : not null access RTS_Lock; Global_Lock : Boolean := False)
!    is
        Result : Interfaces.C.int;
     begin
!       if not Single_Lock or else Global_Lock then
!          Result := pthread_mutex_unlock (L);
!          pragma Assert (Result = 0);
!       end if;
     end Unlock;
  
     procedure Unlock (T : Task_Id) is
        Result : Interfaces.C.int;
     begin
!       if not Single_Lock then
!          Result := pthread_mutex_unlock (T.Common.LL.L'Access);
!          pragma Assert (Result = 0);
!       end if;
     end Unlock;
  
     -----------------
--- 489,506 ----
        pragma Assert (Result = 0);
     end Unlock;
  
!    procedure Unlock (L : not null access RTS_Lock) is
        Result : Interfaces.C.int;
     begin
!       Result := pthread_mutex_unlock (L);
!       pragma Assert (Result = 0);
     end Unlock;
  
     procedure Unlock (T : Task_Id) is
        Result : Interfaces.C.int;
     begin
!       Result := pthread_mutex_unlock (T.Common.LL.L'Access);
!       pragma Assert (Result = 0);
     end Unlock;
  
     -----------------
*************** package body System.Task_Primitives.Oper
*** 551,559 ****
        Result :=
          pthread_cond_wait
            (cond  => Self_ID.Common.LL.CV'Access,
!            mutex => (if Single_Lock
!                      then Single_RTS_Lock'Access
!                      else Self_ID.Common.LL.L'Access));
  
        --  EINTR is not considered a failure
  
--- 534,540 ----
        Result :=
          pthread_cond_wait
            (cond  => Self_ID.Common.LL.CV'Access,
!            mutex => Self_ID.Common.LL.L'Access);
  
        --  EINTR is not considered a failure
  
*************** package body System.Task_Primitives.Oper
*** 713,720 ****
     -- Initialize_TCB --
     --------------------
  
!    procedure Initialize_TCB (Self_ID : Task_Id; Succeeded : out Boolean)
!    is
        Result     : Interfaces.C.int;
        Cond_Attr  : aliased pthread_condattr_t;
  
--- 694,700 ----
     -- Initialize_TCB --
     --------------------
  
!    procedure Initialize_TCB (Self_ID : Task_Id; Succeeded : out Boolean) is
        Result     : Interfaces.C.int;
        Cond_Attr  : aliased pthread_condattr_t;
  
*************** package body System.Task_Primitives.Oper
*** 725,738 ****
        Next_Serial_Number := Next_Serial_Number + 1;
        pragma Assert (Next_Serial_Number /= 0);
  
!       if not Single_Lock then
!          Result := Init_Mutex (Self_ID.Common.LL.L'Access, Any_Priority'Last);
!          pragma Assert (Result = 0);
  
!          if Result /= 0 then
!             Succeeded := False;
!             return;
!          end if;
        end if;
  
        Result := pthread_condattr_init (Cond_Attr'Access);
--- 705,716 ----
        Next_Serial_Number := Next_Serial_Number + 1;
        pragma Assert (Next_Serial_Number /= 0);
  
!       Result := Init_Mutex (Self_ID.Common.LL.L'Access, Any_Priority'Last);
!       pragma Assert (Result = 0);
  
!       if Result /= 0 then
!          Succeeded := False;
!          return;
        end if;
  
        Result := pthread_condattr_init (Cond_Attr'Access);
*************** package body System.Task_Primitives.Oper
*** 751,760 ****
        if Result = 0 then
           Succeeded := True;
        else
!          if not Single_Lock then
!             Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
!             pragma Assert (Result = 0);
!          end if;
  
           Succeeded := False;
        end if;
--- 729,736 ----
        if Result = 0 then
           Succeeded := True;
        else
!          Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
!          pragma Assert (Result = 0);
  
           Succeeded := False;
        end if;
*************** package body System.Task_Primitives.Oper
*** 894,903 ****
        Result : Interfaces.C.int;
  
     begin
!       if not Single_Lock then
!          Result := pthread_mutex_destroy (T.Common.LL.L'Access);
!          pragma Assert (Result = 0);
!       end if;
  
        Result := pthread_cond_destroy (T.Common.LL.CV'Access);
        pragma Assert (Result = 0);
--- 870,877 ----
        Result : Interfaces.C.int;
  
     begin
!       Result := pthread_mutex_destroy (T.Common.LL.L'Access);
!       pragma Assert (Result = 0);
  
        Result := pthread_cond_destroy (T.Common.LL.CV'Access);
        pragma Assert (Result = 0);
*************** package body System.Task_Primitives.Oper
*** 1191,1197 ****
  
     procedure Lock_RTS is
     begin
!       Write_Lock (Single_RTS_Lock'Access, Global_Lock => True);
     end Lock_RTS;
  
     ----------------
--- 1165,1171 ----
  
     procedure Lock_RTS is
     begin
!       Write_Lock (Single_RTS_Lock'Access);
     end Lock_RTS;
  
     ----------------
*************** package body System.Task_Primitives.Oper
*** 1200,1206 ****
  
     procedure Unlock_RTS is
     begin
!       Unlock (Single_RTS_Lock'Access, Global_Lock => True);
     end Unlock_RTS;
  
     ------------------
--- 1174,1180 ----
  
     procedure Unlock_RTS is
     begin
!       Unlock (Single_RTS_Lock'Access);
     end Unlock_RTS;
  
     ------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taprop__solaris.adb gcc-11.1.0/gcc/ada/libgnarl/s-taprop__solaris.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-taprop__solaris.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taprop__solaris.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 34,43 ****
  --  This package contains all the GNULL primitives that interface directly with
  --  the underlying OS.
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  with Interfaces.C;
  
  with System.Multiprocessors;
--- 34,39 ----
*************** package body System.Task_Primitives.Oper
*** 91,97 ****
     Single_RTS_Lock : aliased RTS_Lock;
     --  This is a lock to allow only one thread of control in the RTS at
     --  a time; it is used to execute in mutual exclusion from all other tasks.
!    --  Used mainly in Single_Lock mode, but also to protect All_Tasks_List
  
     Next_Serial_Number : Task_Serial_Number := 100;
     --  We start at 100, to reserve some special values for
--- 87,93 ----
     Single_RTS_Lock : aliased RTS_Lock;
     --  This is a lock to allow only one thread of control in the RTS at
     --  a time; it is used to execute in mutual exclusion from all other tasks.
!    --  Used to protect All_Tasks_List
  
     Next_Serial_Number : Task_Serial_Number := 100;
     --  We start at 100, to reserve some special values for
*************** package body System.Task_Primitives.Oper
*** 653,681 ****
        pragma Assert (Record_Lock (Lock_Ptr (L)));
     end Write_Lock;
  
!    procedure Write_Lock
!      (L          : not null access RTS_Lock;
!      Global_Lock : Boolean := False)
!    is
        Result : Interfaces.C.int;
     begin
!       if not Single_Lock or else Global_Lock then
!          pragma Assert (Check_Lock (To_Lock_Ptr (RTS_Lock_Ptr (L))));
!          Result := mutex_lock (L.L'Access);
!          pragma Assert (Result = 0);
!          pragma Assert (Record_Lock (To_Lock_Ptr (RTS_Lock_Ptr (L))));
!       end if;
     end Write_Lock;
  
     procedure Write_Lock (T : Task_Id) is
        Result : Interfaces.C.int;
     begin
!       if not Single_Lock then
!          pragma Assert (Check_Lock (To_Lock_Ptr (T.Common.LL.L'Access)));
!          Result := mutex_lock (T.Common.LL.L.L'Access);
!          pragma Assert (Result = 0);
!          pragma Assert (Record_Lock (To_Lock_Ptr (T.Common.LL.L'Access)));
!       end if;
     end Write_Lock;
  
     ---------------
--- 649,670 ----
        pragma Assert (Record_Lock (Lock_Ptr (L)));
     end Write_Lock;
  
!    procedure Write_Lock (L : not null access RTS_Lock) is
        Result : Interfaces.C.int;
     begin
!       pragma Assert (Check_Lock (To_Lock_Ptr (RTS_Lock_Ptr (L))));
!       Result := mutex_lock (L.L'Access);
!       pragma Assert (Result = 0);
!       pragma Assert (Record_Lock (To_Lock_Ptr (RTS_Lock_Ptr (L))));
     end Write_Lock;
  
     procedure Write_Lock (T : Task_Id) is
        Result : Interfaces.C.int;
     begin
!       pragma Assert (Check_Lock (To_Lock_Ptr (T.Common.LL.L'Access)));
!       Result := mutex_lock (T.Common.LL.L.L'Access);
!       pragma Assert (Result = 0);
!       pragma Assert (Record_Lock (To_Lock_Ptr (T.Common.LL.L'Access)));
     end Write_Lock;
  
     ---------------
*************** package body System.Task_Primitives.Oper
*** 717,743 ****
        end if;
     end Unlock;
  
!    procedure Unlock
!      (L           : not null access RTS_Lock;
!       Global_Lock : Boolean := False)
!    is
        Result : Interfaces.C.int;
     begin
!       if not Single_Lock or else Global_Lock then
!          pragma Assert (Check_Unlock (To_Lock_Ptr (RTS_Lock_Ptr (L))));
!          Result := mutex_unlock (L.L'Access);
!          pragma Assert (Result = 0);
!       end if;
     end Unlock;
  
     procedure Unlock (T : Task_Id) is
        Result : Interfaces.C.int;
     begin
!       if not Single_Lock then
!          pragma Assert (Check_Unlock (To_Lock_Ptr (T.Common.LL.L'Access)));
!          Result := mutex_unlock (T.Common.LL.L.L'Access);
!          pragma Assert (Result = 0);
!       end if;
     end Unlock;
  
     -----------------
--- 706,725 ----
        end if;
     end Unlock;
  
!    procedure Unlock (L : not null access RTS_Lock) is
        Result : Interfaces.C.int;
     begin
!       pragma Assert (Check_Unlock (To_Lock_Ptr (RTS_Lock_Ptr (L))));
!       Result := mutex_unlock (L.L'Access);
!       pragma Assert (Result = 0);
     end Unlock;
  
     procedure Unlock (T : Task_Id) is
        Result : Interfaces.C.int;
     begin
!       pragma Assert (Check_Unlock (To_Lock_Ptr (T.Common.LL.L'Access)));
!       Result := mutex_unlock (T.Common.LL.L.L'Access);
!       pragma Assert (Result = 0);
     end Unlock;
  
     -----------------
*************** package body System.Task_Primitives.Oper
*** 929,942 ****
  
        Self_ID.Common.LL.Thread := Null_Thread_Id;
  
!       if not Single_Lock then
!          Result :=
!            mutex_init
!              (Self_ID.Common.LL.L.L'Access, USYNC_THREAD, System.Null_Address);
!          Self_ID.Common.LL.L.Level :=
!            Private_Task_Serial_Number (Self_ID.Serial_Number);
!          pragma Assert (Result = 0 or else Result = ENOMEM);
!       end if;
  
        if Result = 0 then
           Result := cond_init (Self_ID.Common.LL.CV'Access, USYNC_THREAD, 0);
--- 911,922 ----
  
        Self_ID.Common.LL.Thread := Null_Thread_Id;
  
!       Result :=
!         mutex_init
!           (Self_ID.Common.LL.L.L'Access, USYNC_THREAD, System.Null_Address);
!       Self_ID.Common.LL.L.Level :=
!         Private_Task_Serial_Number (Self_ID.Serial_Number);
!       pragma Assert (Result = 0 or else Result = ENOMEM);
  
        if Result = 0 then
           Result := cond_init (Self_ID.Common.LL.CV'Access, USYNC_THREAD, 0);
*************** package body System.Task_Primitives.Oper
*** 946,955 ****
        if Result = 0 then
           Succeeded := True;
        else
!          if not Single_Lock then
!             Result := mutex_destroy (Self_ID.Common.LL.L.L'Access);
!             pragma Assert (Result = 0);
!          end if;
  
           Succeeded := False;
        end if;
--- 926,933 ----
        if Result = 0 then
           Succeeded := True;
        else
!          Result := mutex_destroy (Self_ID.Common.LL.L.L'Access);
!          pragma Assert (Result = 0);
  
           Succeeded := False;
        end if;
*************** package body System.Task_Primitives.Oper
*** 1049,1058 ****
     begin
        T.Common.LL.Thread := Null_Thread_Id;
  
!       if not Single_Lock then
!          Result := mutex_destroy (T.Common.LL.L.L'Access);
!          pragma Assert (Result = 0);
!       end if;
  
        Result := cond_destroy (T.Common.LL.CV'Access);
        pragma Assert (Result = 0);
--- 1027,1034 ----
     begin
        T.Common.LL.Thread := Null_Thread_Id;
  
!       Result := mutex_destroy (T.Common.LL.L.L'Access);
!       pragma Assert (Result = 0);
  
        Result := cond_destroy (T.Common.LL.CV'Access);
        pragma Assert (Result = 0);
*************** package body System.Task_Primitives.Oper
*** 1107,1121 ****
     begin
        pragma Assert (Check_Sleep (Reason));
  
!       if Single_Lock then
!          Result :=
!            cond_wait
!              (Self_ID.Common.LL.CV'Access, Single_RTS_Lock.L'Access);
!       else
!          Result :=
!            cond_wait
!              (Self_ID.Common.LL.CV'Access, Self_ID.Common.LL.L.L'Access);
!       end if;
  
        pragma Assert
          (Record_Wakeup (To_Lock_Ptr (Self_ID.Common.LL.L'Access), Reason));
--- 1083,1091 ----
     begin
        pragma Assert (Check_Sleep (Reason));
  
!       Result :=
!         cond_wait
!           (Self_ID.Common.LL.CV'Access, Self_ID.Common.LL.L.L'Access);
  
        pragma Assert
          (Record_Wakeup (To_Lock_Ptr (Self_ID.Common.LL.L'Access), Reason));
*************** package body System.Task_Primitives.Oper
*** 1221,1241 ****
           loop
              exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
  
!             if Single_Lock then
!                Result :=
!                  cond_timedwait
!                    (Self_ID.Common.LL.CV'Access,
!                     Single_RTS_Lock.L'Access, Request'Access);
!             else
!                Result :=
!                  cond_timedwait
!                    (Self_ID.Common.LL.CV'Access,
!                     Self_ID.Common.LL.L.L'Access, Request'Access);
!             end if;
! 
              Yielded := True;
- 
              Check_Time := Monotonic_Clock;
              exit when Abs_Time <= Check_Time or else Check_Time < Base_Time;
  
              if Result = 0 or Result = EINTR then
--- 1191,1203 ----
           loop
              exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
  
!             Result :=
!               cond_timedwait
!                 (Self_ID.Common.LL.CV'Access,
!                  Self_ID.Common.LL.L.L'Access, Request'Access);
              Yielded := True;
              Check_Time := Monotonic_Clock;
+ 
              exit when Abs_Time <= Check_Time or else Check_Time < Base_Time;
  
              if Result = 0 or Result = EINTR then
*************** package body System.Task_Primitives.Oper
*** 1271,1280 ****
        Yielded    : Boolean := False;
  
     begin
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        Write_Lock (Self_ID);
  
        Abs_Time :=
--- 1233,1238 ----
*************** package body System.Task_Primitives.Oper
*** 1291,1313 ****
           loop
              exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
  
!             if Single_Lock then
!                Result :=
!                  cond_timedwait
!                    (Self_ID.Common.LL.CV'Access,
!                     Single_RTS_Lock.L'Access,
!                     Request'Access);
!             else
!                Result :=
!                  cond_timedwait
!                    (Self_ID.Common.LL.CV'Access,
!                     Self_ID.Common.LL.L.L'Access,
!                     Request'Access);
!             end if;
! 
              Yielded := True;
- 
              Check_Time := Monotonic_Clock;
              exit when Abs_Time <= Check_Time or else Check_Time < Base_Time;
  
              pragma Assert
--- 1249,1262 ----
           loop
              exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
  
!             Result :=
!               cond_timedwait
!                 (Self_ID.Common.LL.CV'Access,
!                  Self_ID.Common.LL.L.L'Access,
!                  Request'Access);
              Yielded := True;
              Check_Time := Monotonic_Clock;
+ 
              exit when Abs_Time <= Check_Time or else Check_Time < Base_Time;
  
              pragma Assert
*************** package body System.Task_Primitives.Oper
*** 1325,1334 ****
  
        Unlock (Self_ID);
  
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        if not Yielded then
           thr_yield;
        end if;
--- 1274,1279 ----
*************** package body System.Task_Primitives.Oper
*** 1412,1421 ****
           return False;
        end if;
  
-       if Single_Lock then
-          return True;
-       end if;
- 
        --  Check that TCB lock order rules are satisfied
  
        P := Self_ID.Common.LL.Locks;
--- 1357,1362 ----
*************** package body System.Task_Primitives.Oper
*** 1451,1460 ****
  
        L.Owner := To_Owner_ID (To_Address (Self_ID));
  
-       if Single_Lock then
-          return True;
-       end if;
- 
        --  Check that TCB lock order rules are satisfied
  
        P := Self_ID.Common.LL.Locks;
--- 1392,1397 ----
*************** package body System.Task_Primitives.Oper
*** 1485,1494 ****
           return False;
        end if;
  
-       if Single_Lock then
-          return True;
-       end if;
- 
        --  Check that caller is holding own lock, on top of list
  
        if Self_ID.Common.LL.Locks /=
--- 1422,1427 ----
*************** package body System.Task_Primitives.Oper
*** 1528,1537 ****
  
        L.Owner := To_Owner_ID (To_Address (Self_ID));
  
-       if Single_Lock then
-          return True;
-       end if;
- 
        --  Check that TCB lock order rules are satisfied
  
        P := Self_ID.Common.LL.Locks;
--- 1461,1466 ----
*************** package body System.Task_Primitives.Oper
*** 1880,1886 ****
  
     procedure Lock_RTS is
     begin
!       Write_Lock (Single_RTS_Lock'Access, Global_Lock => True);
     end Lock_RTS;
  
     ----------------
--- 1809,1815 ----
  
     procedure Lock_RTS is
     begin
!       Write_Lock (Single_RTS_Lock'Access);
     end Lock_RTS;
  
     ----------------
*************** package body System.Task_Primitives.Oper
*** 1889,1895 ****
  
     procedure Unlock_RTS is
     begin
!       Unlock (Single_RTS_Lock'Access, Global_Lock => True);
     end Unlock_RTS;
  
     ------------------
--- 1818,1824 ----
  
     procedure Unlock_RTS is
     begin
!       Unlock (Single_RTS_Lock'Access);
     end Unlock_RTS;
  
     ------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taprop__vxworks.adb gcc-11.1.0/gcc/ada/libgnarl/s-taprop__vxworks.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-taprop__vxworks.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taprop__vxworks.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 34,43 ****
  --  This package contains all the GNULL primitives that interface directly with
  --  the underlying OS.
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  with Ada.Unchecked_Conversion;
  
  with Interfaces.C;
--- 34,39 ----
*************** package body System.Task_Primitives.Oper
*** 101,107 ****
     Single_RTS_Lock : aliased RTS_Lock;
     --  This is a lock to allow only one thread of control in the RTS at a
     --  time; it is used to execute in mutual exclusion from all other tasks.
!    --  Used mainly in Single_Lock mode, but also to protect All_Tasks_List
  
     Time_Slice_Val : Integer;
     pragma Import (C, Time_Slice_Val, "__gl_time_slice_val");
--- 97,103 ----
     Single_RTS_Lock : aliased RTS_Lock;
     --  This is a lock to allow only one thread of control in the RTS at a
     --  time; it is used to execute in mutual exclusion from all other tasks.
!    --  Used to protect All_Tasks_List
  
     Time_Slice_Val : Integer;
     pragma Import (C, Time_Slice_Val, "__gl_time_slice_val");
*************** package body System.Task_Primitives.Oper
*** 374,398 ****
        pragma Assert (Result = 0);
     end Write_Lock;
  
!    procedure Write_Lock
!      (L           : not null access RTS_Lock;
!       Global_Lock : Boolean := False)
!    is
        Result : int;
     begin
!       if not Single_Lock or else Global_Lock then
!          Result := semTake (L.Mutex, WAIT_FOREVER);
!          pragma Assert (Result = 0);
!       end if;
     end Write_Lock;
  
     procedure Write_Lock (T : Task_Id) is
        Result : int;
     begin
!       if not Single_Lock then
!          Result := semTake (T.Common.LL.L.Mutex, WAIT_FOREVER);
!          pragma Assert (Result = 0);
!       end if;
     end Write_Lock;
  
     ---------------
--- 370,387 ----
        pragma Assert (Result = 0);
     end Write_Lock;
  
!    procedure Write_Lock (L : not null access RTS_Lock) is
        Result : int;
     begin
!       Result := semTake (L.Mutex, WAIT_FOREVER);
!       pragma Assert (Result = 0);
     end Write_Lock;
  
     procedure Write_Lock (T : Task_Id) is
        Result : int;
     begin
!       Result := semTake (T.Common.LL.L.Mutex, WAIT_FOREVER);
!       pragma Assert (Result = 0);
     end Write_Lock;
  
     ---------------
*************** package body System.Task_Primitives.Oper
*** 401,408 ****
  
     procedure Read_Lock
       (L                 : not null access Lock;
!       Ceiling_Violation : out Boolean)
!    is
     begin
        Write_Lock (L, Ceiling_Violation);
     end Read_Lock;
--- 390,396 ----
  
     procedure Read_Lock
       (L                 : not null access Lock;
!       Ceiling_Violation : out Boolean) is
     begin
        Write_Lock (L, Ceiling_Violation);
     end Read_Lock;
*************** package body System.Task_Primitives.Oper
*** 418,442 ****
        pragma Assert (Result = 0);
     end Unlock;
  
!    procedure Unlock
!      (L           : not null access RTS_Lock;
!       Global_Lock : Boolean := False)
!    is
        Result : int;
     begin
!       if not Single_Lock or else Global_Lock then
!          Result := semGive (L.Mutex);
!          pragma Assert (Result = 0);
!       end if;
     end Unlock;
  
     procedure Unlock (T : Task_Id) is
        Result : int;
     begin
!       if not Single_Lock then
!          Result := semGive (T.Common.LL.L.Mutex);
!          pragma Assert (Result = 0);
!       end if;
     end Unlock;
  
     -----------------
--- 406,423 ----
        pragma Assert (Result = 0);
     end Unlock;
  
!    procedure Unlock (L : not null access RTS_Lock) is
        Result : int;
     begin
!       Result := semGive (L.Mutex);
!       pragma Assert (Result = 0);
     end Unlock;
  
     procedure Unlock (T : Task_Id) is
        Result : int;
     begin
!       Result := semGive (T.Common.LL.L.Mutex);
!       pragma Assert (Result = 0);
     end Unlock;
  
     -----------------
*************** package body System.Task_Primitives.Oper
*** 468,477 ****
  
        --  Release the mutex before sleeping
  
!       Result :=
!         semGive (if Single_Lock
!                  then Single_RTS_Lock.Mutex
!                  else Self_ID.Common.LL.L.Mutex);
        pragma Assert (Result = 0);
  
        --  Perform a blocking operation to take the CV semaphore. Note that a
--- 449,455 ----
  
        --  Release the mutex before sleeping
  
!       Result := semGive (Self_ID.Common.LL.L.Mutex);
        pragma Assert (Result = 0);
  
        --  Perform a blocking operation to take the CV semaphore. Note that a
*************** package body System.Task_Primitives.Oper
*** 484,493 ****
  
        --  Take the mutex back
  
!       Result :=
!         semTake ((if Single_Lock
!                   then Single_RTS_Lock.Mutex
!                   else Self_ID.Common.LL.L.Mutex), WAIT_FOREVER);
        pragma Assert (Result = 0);
     end Sleep;
  
--- 462,468 ----
  
        --  Take the mutex back
  
!       Result := semTake (Self_ID.Common.LL.L.Mutex, WAIT_FOREVER);
        pragma Assert (Result = 0);
     end Sleep;
  
*************** package body System.Task_Primitives.Oper
*** 540,549 ****
           loop
              --  Release the mutex before sleeping
  
!             Result :=
!               semGive (if Single_Lock
!                        then Single_RTS_Lock.Mutex
!                        else Self_ID.Common.LL.L.Mutex);
              pragma Assert (Result = 0);
  
              --  Perform a blocking operation to take the CV semaphore. Note
--- 515,521 ----
           loop
              --  Release the mutex before sleeping
  
!             Result := semGive (Self_ID.Common.LL.L.Mutex);
              pragma Assert (Result = 0);
  
              --  Perform a blocking operation to take the CV semaphore. Note
*************** package body System.Task_Primitives.Oper
*** 583,592 ****
  
              --  Take the mutex back
  
!             Result :=
!               semTake ((if Single_Lock
!                         then Single_RTS_Lock.Mutex
!                         else Self_ID.Common.LL.L.Mutex), WAIT_FOREVER);
              pragma Assert (Result = 0);
  
              exit when Timedout or Wakeup;
--- 555,561 ----
  
              --  Take the mutex back
  
!             Result := semTake (Self_ID.Common.LL.L.Mutex, WAIT_FOREVER);
              pragma Assert (Result = 0);
  
              exit when Timedout or Wakeup;
*************** package body System.Task_Primitives.Oper
*** 597,612 ****
  
           --  Should never hold a lock while yielding
  
!          if Single_Lock then
!             Result := semGive (Single_RTS_Lock.Mutex);
!             Result := taskDelay (0);
!             Result := semTake (Single_RTS_Lock.Mutex, WAIT_FOREVER);
! 
!          else
!             Result := semGive (Self_ID.Common.LL.L.Mutex);
!             Result := taskDelay (0);
!             Result := semTake (Self_ID.Common.LL.L.Mutex, WAIT_FOREVER);
!          end if;
        end if;
     end Timed_Sleep;
  
--- 566,574 ----
  
           --  Should never hold a lock while yielding
  
!          Result := semGive (Self_ID.Common.LL.L.Mutex);
!          Result := taskDelay (0);
!          Result := semTake (Self_ID.Common.LL.L.Mutex, WAIT_FOREVER);
        end if;
     end Timed_Sleep;
  
*************** package body System.Task_Primitives.Oper
*** 653,662 ****
  
           --  Modifying State, locking the TCB
  
!          Result :=
!            semTake ((if Single_Lock
!                      then Single_RTS_Lock.Mutex
!                      else Self_ID.Common.LL.L.Mutex), WAIT_FOREVER);
  
           pragma Assert (Result = 0);
  
--- 615,621 ----
  
           --  Modifying State, locking the TCB
  
!          Result := semTake (Self_ID.Common.LL.L.Mutex, WAIT_FOREVER);
  
           pragma Assert (Result = 0);
  
*************** package body System.Task_Primitives.Oper
*** 668,677 ****
  
              --  Release the TCB before sleeping
  
!             Result :=
!               semGive (if Single_Lock
!                        then Single_RTS_Lock.Mutex
!                        else Self_ID.Common.LL.L.Mutex);
              pragma Assert (Result = 0);
  
              exit when Aborted;
--- 627,633 ----
  
              --  Release the TCB before sleeping
  
!             Result := semGive (Self_ID.Common.LL.L.Mutex);
              pragma Assert (Result = 0);
  
              exit when Aborted;
*************** package body System.Task_Primitives.Oper
*** 697,707 ****
              --  Take back the lock after having slept, to protect further
              --  access to Self_ID.
  
!             Result :=
!               semTake
!                 ((if Single_Lock
!                   then Single_RTS_Lock.Mutex
!                   else Self_ID.Common.LL.L.Mutex), WAIT_FOREVER);
  
              pragma Assert (Result = 0);
  
--- 653,659 ----
              --  Take back the lock after having slept, to protect further
              --  access to Self_ID.
  
!             Result := semTake (Self_ID.Common.LL.L.Mutex, WAIT_FOREVER);
  
              pragma Assert (Result = 0);
  
*************** package body System.Task_Primitives.Oper
*** 710,720 ****
  
           Self_ID.Common.State := Runnable;
  
!          Result :=
!            semGive
!              (if Single_Lock
!               then Single_RTS_Lock.Mutex
!               else Self_ID.Common.LL.L.Mutex);
  
        else
           Result := taskDelay (0);
--- 662,668 ----
  
           Self_ID.Common.State := Runnable;
  
!          Result := semGive (Self_ID.Common.LL.L.Mutex);
  
        else
           Result := taskDelay (0);
*************** package body System.Task_Primitives.Oper
*** 875,884 ****
  
        else
           Succeeded := True;
! 
!          if not Single_Lock then
!             Initialize_Lock (Self_ID.Common.LL.L'Access, ATCB_Level);
!          end if;
        end if;
     end Initialize_TCB;
  
--- 823,829 ----
  
        else
           Succeeded := True;
!          Initialize_Lock (Self_ID.Common.LL.L'Access, ATCB_Level);
        end if;
     end Initialize_TCB;
  
*************** package body System.Task_Primitives.Oper
*** 996,1005 ****
        Result : int;
  
     begin
!       if not Single_Lock then
!          Result := semDelete (T.Common.LL.L.Mutex);
!          pragma Assert (Result = 0);
!       end if;
  
        T.Common.LL.Thread := Null_Thread_Id;
  
--- 941,948 ----
        Result : int;
  
     begin
!       Result := semDelete (T.Common.LL.L.Mutex);
!       pragma Assert (Result = 0);
  
        T.Common.LL.Thread := Null_Thread_Id;
  
*************** package body System.Task_Primitives.Oper
*** 1251,1257 ****
  
     procedure Lock_RTS is
     begin
!       Write_Lock (Single_RTS_Lock'Access, Global_Lock => True);
     end Lock_RTS;
  
     ----------------
--- 1194,1200 ----
  
     procedure Lock_RTS is
     begin
!       Write_Lock (Single_RTS_Lock'Access);
     end Lock_RTS;
  
     ----------------
*************** package body System.Task_Primitives.Oper
*** 1260,1266 ****
  
     procedure Unlock_RTS is
     begin
!       Unlock (Single_RTS_Lock'Access, Global_Lock => True);
     end Unlock_RTS;
  
     ------------------
--- 1203,1209 ----
  
     procedure Unlock_RTS is
     begin
!       Unlock (Single_RTS_Lock'Access);
     end Unlock_RTS;
  
     ------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tarest.adb gcc-11.1.0/gcc/ada/libgnarl/s-tarest.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tarest.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tarest.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1999-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1999-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Style_Checks (All_Checks);
*** 39,48 ****
  --  This package represents the high level tasking interface used by the
  --  compiler to expand Ada 95 tasking constructs into simpler run time calls.
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during
- --  tasking operations. It causes infinite loops and other problems.
- 
  with Ada.Exceptions;
  
  with System.Task_Primitives.Operations;
--- 39,44 ----
*************** package body System.Tasking.Restricted.S
*** 62,68 ****
  
     use Ada.Exceptions;
  
-    use Parameters;
     use Task_Primitives.Operations;
  
     Tasks_Activation_Chain : Task_Id;
--- 58,63 ----
*************** package body System.Tasking.Restricted.S
*** 153,159 ****
          Self_ID.Common.Global_Task_Lock_Nesting + 1;
  
        if Self_ID.Common.Global_Task_Lock_Nesting = 1 then
!          STPO.Write_Lock (Global_Task_Lock'Access, Global_Lock => True);
        end if;
     end Task_Lock;
  
--- 148,154 ----
          Self_ID.Common.Global_Task_Lock_Nesting + 1;
  
        if Self_ID.Common.Global_Task_Lock_Nesting = 1 then
!          STPO.Write_Lock (Global_Task_Lock'Access);
        end if;
     end Task_Lock;
  
*************** package body System.Tasking.Restricted.S
*** 170,176 ****
          Self_ID.Common.Global_Task_Lock_Nesting - 1;
  
        if Self_ID.Common.Global_Task_Lock_Nesting = 0 then
!          STPO.Unlock (Global_Task_Lock'Access, Global_Lock => True);
        end if;
     end Task_Unlock;
  
--- 165,171 ----
          Self_ID.Common.Global_Task_Lock_Nesting - 1;
  
        if Self_ID.Common.Global_Task_Lock_Nesting = 0 then
!          STPO.Unlock (Global_Task_Lock'Access);
        end if;
     end Task_Unlock;
  
*************** package body System.Tasking.Restricted.S
*** 265,284 ****
           TH : Termination_Handler := null;
  
        begin
-          if Single_Lock then
-             Lock_RTS;
-          end if;
- 
           Write_Lock (Self_ID.Common.Parent);
  
           TH := Self_ID.Common.Parent.Common.Fall_Back_Handler;
  
           Unlock (Self_ID.Common.Parent);
  
-          if Single_Lock then
-             Unlock_RTS;
-          end if;
- 
           --  Execute the task termination handler if we found it
  
           if TH /= null then
--- 260,271 ----
*************** package body System.Tasking.Restricted.S
*** 347,356 ****
        pragma Assert (Self_ID = Environment_Task);
        pragma Assert (Self_ID.Common.Wait_Count = 0);
  
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        --  Lock self, to prevent activated tasks from racing ahead before we
        --  finish activating the chain.
  
--- 334,339 ----
*************** package body System.Tasking.Restricted.S
*** 403,412 ****
  
        Self_ID.Common.State := Runnable;
        Unlock (Self_ID);
- 
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
     end Activate_Tasks;
  
     ------------------------------------
--- 386,391 ----
*************** package body System.Tasking.Restricted.S
*** 423,432 ****
        Activator : constant Task_Id := Self_ID.Common.Activator;
  
     begin
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        Write_Lock (Activator);
        Write_Lock (Self_ID);
  
--- 402,407 ----
*************** package body System.Tasking.Restricted.S
*** 449,458 ****
        Unlock (Self_ID);
        Unlock (Activator);
  
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        --  After the activation, active priority should be the same as base
        --  priority. We must unlock the Activator first, though, since it should
        --  not wait if we have lower priority.
--- 424,429 ----
*************** package body System.Tasking.Restricted.S
*** 533,542 ****
              else System.Multiprocessors.CPU_Range (CPU));
        end if;
  
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        Write_Lock (Self_ID);
  
        --  With no task hierarchy, the parent of all non-Environment tasks that
--- 504,509 ----
*************** package body System.Tasking.Restricted.S
*** 554,564 ****
  
        if not Success then
           Unlock (Self_ID);
- 
-          if Single_Lock then
-             Unlock_RTS;
-          end if;
- 
           raise Program_Error;
        end if;
  
--- 521,526 ----
*************** package body System.Tasking.Restricted.S
*** 581,590 ****
  
        Unlock (Self_ID);
  
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        --  Create TSD as early as possible in the creation of a task, since
        --  it may be used by the operation of Ada code within the task. If the
        --  compiler has not allocated a secondary stack, a stack will be
--- 543,548 ----
*************** package body System.Tasking.Restricted.S
*** 681,690 ****
     begin
        pragma Assert (Self_ID = STPO.Environment_Task);
  
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        --  Handle normal task termination by the environment task, but only for
        --  the normal task termination. In the case of Abnormal and
        --  Unhandled_Exception they must have been handled before, and the task
--- 639,644 ----
*************** package body System.Tasking.Restricted.S
*** 705,714 ****
        Sleep (Self_ID, Master_Completion_Sleep);
        Unlock (Self_ID);
  
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        --  Should never return from Master Completion Sleep
  
        raise Program_Error;
--- 659,664 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tarest.ads gcc-11.1.0/gcc/ada/libgnarl/s-tarest.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tarest.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tarest.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasdeb.adb gcc-11.1.0/gcc/ada/libgnarl/s-tasdeb.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasdeb.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasdeb.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasdeb.ads gcc-11.1.0/gcc/ada/libgnarl/s-tasdeb.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasdeb.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasdeb.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasinf.adb gcc-11.1.0/gcc/ada/libgnarl/s-tasinf.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasinf.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasinf.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                           (Compiler Interface)                           --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                           (Compiler Interface)                           --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasinf.ads gcc-11.1.0/gcc/ada/libgnarl/s-tasinf.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasinf.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasinf.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasinf__linux.adb gcc-11.1.0/gcc/ada/libgnarl/s-tasinf__linux.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasinf__linux.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasinf__linux.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2009-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2009-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasinf__linux.ads gcc-11.1.0/gcc/ada/libgnarl/s-tasinf__linux.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasinf__linux.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasinf__linux.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2007-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2007-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasinf__mingw.adb gcc-11.1.0/gcc/ada/libgnarl/s-tasinf__mingw.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasinf__mingw.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasinf__mingw.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasinf__mingw.ads gcc-11.1.0/gcc/ada/libgnarl/s-tasinf__mingw.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasinf__mingw.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasinf__mingw.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2007-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2007-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasinf__solaris.adb gcc-11.1.0/gcc/ada/libgnarl/s-tasinf__solaris.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasinf__solaris.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasinf__solaris.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasinf__solaris.ads gcc-11.1.0/gcc/ada/libgnarl/s-tasinf__solaris.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasinf__solaris.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasinf__solaris.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasinf__vxworks.ads gcc-11.1.0/gcc/ada/libgnarl/s-tasinf__vxworks.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasinf__vxworks.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasinf__vxworks.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasini.adb gcc-11.1.0/gcc/ada/libgnarl/s-tasini.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasini.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasini.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Style_Checks (All_Checks);
*** 33,50 ****
  --  Turn off subprogram alpha ordering check, since we group soft link bodies
  --  and dummy soft link bodies together separately in this unit.
  
- pragma Polling (Off);
- --  Turn polling off for this package. We don't need polling during any of the
- --  routines in this package, and more to the point, if we try to poll it can
- --  cause infinite loops.
- 
  with System.Task_Primitives;
  with System.Task_Primitives.Operations;
  with System.Soft_Links;
  with System.Soft_Links.Tasking;
  with System.Tasking.Debug;
  with System.Tasking.Task_Attributes;
- with System.Parameters;
  
  with System.Secondary_Stack;
  pragma Elaborate_All (System.Secondary_Stack);
--- 33,44 ----
*************** package body System.Tasking.Initializati
*** 244,261 ****
  
           Self_ID.Deferral_Level := Self_ID.Deferral_Level + 1;
  
-          if Single_Lock then
-             Lock_RTS;
-          end if;
- 
           Write_Lock (Self_ID);
           Self_ID.Pending_Action := False;
           Unlock (Self_ID);
  
-          if Single_Lock then
-             Unlock_RTS;
-          end if;
- 
           --  Restore the original Deferral value
  
           Self_ID.Deferral_Level := Self_ID.Deferral_Level - 1;
--- 238,247 ----
*************** package body System.Tasking.Initializati
*** 309,315 ****
     procedure Final_Task_Unlock (Self_ID : Task_Id) is
     begin
        pragma Assert (Self_ID.Common.Global_Task_Lock_Nesting = 1);
!       Unlock (Global_Task_Lock'Access, Global_Lock => True);
     end Final_Task_Unlock;
  
     --------------
--- 295,301 ----
     procedure Final_Task_Unlock (Self_ID : Task_Id) is
     begin
        pragma Assert (Self_ID.Common.Global_Task_Lock_Nesting = 1);
!       Unlock (Global_Task_Lock'Access);
     end Final_Task_Unlock;
  
     --------------
*************** package body System.Tasking.Initializati
*** 563,569 ****
  
        if Self_ID.Common.Global_Task_Lock_Nesting = 1 then
           Defer_Abort_Nestable (Self_ID);
!          Write_Lock (Global_Task_Lock'Access, Global_Lock => True);
        end if;
     end Task_Lock;
  
--- 549,555 ----
  
        if Self_ID.Common.Global_Task_Lock_Nesting = 1 then
           Defer_Abort_Nestable (Self_ID);
!          Write_Lock (Global_Task_Lock'Access);
        end if;
     end Task_Lock;
  
*************** package body System.Tasking.Initializati
*** 593,599 ****
          Self_ID.Common.Global_Task_Lock_Nesting - 1;
  
        if Self_ID.Common.Global_Task_Lock_Nesting = 0 then
!          Unlock (Global_Task_Lock'Access, Global_Lock => True);
           Undefer_Abort_Nestable (Self_ID);
        end if;
     end Task_Unlock;
--- 579,585 ----
          Self_ID.Common.Global_Task_Lock_Nesting - 1;
  
        if Self_ID.Common.Global_Task_Lock_Nesting = 0 then
!          Unlock (Global_Task_Lock'Access);
           Undefer_Abort_Nestable (Self_ID);
        end if;
     end Task_Unlock;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasini.ads gcc-11.1.0/gcc/ada/libgnarl/s-tasini.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasini.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasini.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taskin.adb gcc-11.1.0/gcc/ada/libgnarl/s-taskin.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-taskin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taskin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,38 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  with System.Task_Primitives.Operations;
  with System.Storage_Elements;
  
--- 29,34 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taskin.ads gcc-11.1.0/gcc/ada/libgnarl/s-taskin.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-taskin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taskin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Tasking is
*** 368,373 ****
--- 368,381 ----
     --  Used to represent protected procedures to be executed when task
     --  terminates.
  
+    type Initialization_Handler is access procedure;
+    pragma Favor_Top_Level (Initialization_Handler);
+    --  Use to represent procedures to be executed at task initialization.
+ 
+    Global_Initialization_Handler : Initialization_Handler := null;
+    pragma Atomic (Global_Initialization_Handler);
+    --  Global handler called when each task initializes.
+ 
     ------------------------------------
     -- Dispatching domain definitions --
     ------------------------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taspri__dummy.ads gcc-11.1.0/gcc/ada/libgnarl/s-taspri__dummy.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-taspri__dummy.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taspri__dummy.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,40 ****
  
  --  This is a no tasking version of this package
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  package System.Task_Primitives is
     pragma Preelaborate;
  
--- 31,36 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taspri__hpux-dce.ads gcc-11.1.0/gcc/ada/libgnarl/s-taspri__hpux-dce.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-taspri__hpux-dce.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taspri__hpux-dce.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,42 ****
  
  --  This package provides low-level support for most tasking features
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  with System.OS_Interface;
  
  package System.Task_Primitives is
--- 33,38 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taspri__lynxos.ads gcc-11.1.0/gcc/ada/libgnarl/s-taspri__lynxos.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-taspri__lynxos.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taspri__lynxos.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 S p e c                                  --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,41 ****
  
  --  This is LynxOS Family version of this package.
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  with System.OS_Interface;
  
  package System.Task_Primitives is
--- 32,37 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taspri__mingw.ads gcc-11.1.0/gcc/ada/libgnarl/s-taspri__mingw.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-taspri__mingw.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taspri__mingw.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,40 ****
  
  --  This is a NT (native) version of this package
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  with System.OS_Interface;
  with System.Win32;
  
--- 31,36 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads gcc-11.1.0/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 35,44 ****
  
  --  Note: this file can only be used for POSIX compliant systems
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  with System.OS_Interface;
  
  package System.Task_Primitives is
--- 35,40 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taspri__posix.ads gcc-11.1.0/gcc/ada/libgnarl/s-taspri__posix.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-taspri__posix.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taspri__posix.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 S p e c                                  --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 34,43 ****
  
  --  Note: this file can only be used for POSIX compliant systems
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  with System.OS_Interface;
  
  package System.Task_Primitives is
--- 34,39 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taspri__solaris.ads gcc-11.1.0/gcc/ada/libgnarl/s-taspri__solaris.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-taspri__solaris.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taspri__solaris.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,42 ****
  
  --  This package provides low-level support for most tasking features
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  with Ada.Unchecked_Conversion;
  
  with System.OS_Interface;
--- 33,38 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-taspri__vxworks.ads gcc-11.1.0/gcc/ada/libgnarl/s-taspri__vxworks.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-taspri__vxworks.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-taspri__vxworks.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,40 ****
  
  --  This is a VxWorks version of this package
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  with System.OS_Interface;
  
  package System.Task_Primitives is
--- 31,36 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasque.adb gcc-11.1.0/gcc/ada/libgnarl/s-tasque.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasque.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasque.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 35,45 ****
  
  with System.Task_Primitives.Operations;
  with System.Tasking.Initialization;
- with System.Parameters;
  
  package body System.Tasking.Queuing is
  
-    use Parameters;
     use Task_Primitives.Operations;
     use Protected_Objects;
     use Protected_Objects.Entries;
--- 35,43 ----
*************** package body System.Tasking.Queuing is
*** 68,82 ****
     procedure Broadcast_Program_Error
       (Self_ID      : Task_Id;
        Object       : Protection_Entries_Access;
!       Pending_Call : Entry_Call_Link;
!       RTS_Locked   : Boolean := False)
     is
        Entry_Call : Entry_Call_Link;
     begin
-       if Single_Lock and then not RTS_Locked then
-          Lock_RTS;
-       end if;
- 
        if Pending_Call /= null then
           Send_Program_Error (Self_ID, Pending_Call);
        end if;
--- 66,75 ----
     procedure Broadcast_Program_Error
       (Self_ID      : Task_Id;
        Object       : Protection_Entries_Access;
!       Pending_Call : Entry_Call_Link)
     is
        Entry_Call : Entry_Call_Link;
     begin
        if Pending_Call /= null then
           Send_Program_Error (Self_ID, Pending_Call);
        end if;
*************** package body System.Tasking.Queuing is
*** 91,100 ****
              Dequeue_Head (Object.Entry_Queues (E), Entry_Call);
           end loop;
        end loop;
- 
-       if Single_Lock and then not RTS_Locked then
-          Unlock_RTS;
-       end if;
     end Broadcast_Program_Error;
  
     -----------------
--- 84,89 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasque.ads gcc-11.1.0/gcc/ada/libgnarl/s-tasque.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasque.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasque.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Tasking.Queuing is
*** 38,50 ****
     procedure Broadcast_Program_Error
       (Self_ID      : Task_Id;
        Object       : POE.Protection_Entries_Access;
!       Pending_Call : Entry_Call_Link;
!       RTS_Locked   : Boolean := False);
     --  Raise Program_Error in all tasks calling the protected entries of Object
     --  The exception will not be raised immediately for the calling task; it
     --  will be deferred until it calls Check_Exception.
-    --  RTS_Locked indicates whether the global RTS lock is taken (only
-    --  relevant if Single_Lock is True).
  
     procedure Enqueue (E : in out Entry_Queue; Call : Entry_Call_Link);
     --  Enqueue Call at the end of entry_queue E
--- 38,47 ----
     procedure Broadcast_Program_Error
       (Self_ID      : Task_Id;
        Object       : POE.Protection_Entries_Access;
!       Pending_Call : Entry_Call_Link);
     --  Raise Program_Error in all tasks calling the protected entries of Object
     --  The exception will not be raised immediately for the calling task; it
     --  will be deferred until it calls Check_Exception.
  
     procedure Enqueue (E : in out Entry_Queue; Call : Entry_Call_Link);
     --  Enqueue Call at the end of entry_queue E
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasren.adb gcc-11.1.0/gcc/ada/libgnarl/s-tasren.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasren.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasren.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.Tasking.Utilities;
*** 37,43 ****
  with System.Tasking.Protected_Objects.Operations;
  with System.Tasking.Debug;
  with System.Restrictions;
- with System.Parameters;
  
  package body System.Tasking.Rendezvous is
  
--- 37,42 ----
*************** package body System.Tasking.Rendezvous i
*** 45,51 ****
     package POO renames Protected_Objects.Operations;
     package POE renames Protected_Objects.Entries;
  
-    use Parameters;
     use Task_Primitives.Operations;
  
     type Select_Treatment is (
--- 44,49 ----
*************** package body System.Tasking.Rendezvous i
*** 155,165 ****
  
     begin
        Initialization.Defer_Abort (Self_Id);
- 
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        STPO.Write_Lock (Self_Id);
  
        if not Self_Id.Callable then
--- 153,158 ----
*************** package body System.Tasking.Rendezvous i
*** 168,178 ****
           pragma Assert (Self_Id.Pending_Action);
  
           STPO.Unlock (Self_Id);
- 
-          if Single_Lock then
-             Unlock_RTS;
-          end if;
- 
           Initialization.Undefer_Abort (Self_Id);
  
           --  Should never get here ???
--- 161,166 ----
*************** package body System.Tasking.Rendezvous i
*** 221,233 ****
        --  return, we will start the rendezvous.
  
        STPO.Unlock (Self_Id);
- 
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        Initialization.Undefer_Abort (Self_Id);
- 
     end Accept_Call;
  
     --------------------
--- 209,215 ----
*************** package body System.Tasking.Rendezvous i
*** 242,252 ****
  
     begin
        Initialization.Defer_Abort_Nestable (Self_Id);
- 
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        STPO.Write_Lock (Self_Id);
  
        if not Self_Id.Callable then
--- 224,229 ----
*************** package body System.Tasking.Rendezvous i
*** 255,265 ****
           pragma Assert (Self_Id.Pending_Action);
  
           STPO.Unlock (Self_Id);
- 
-          if Single_Lock then
-             Unlock_RTS;
-          end if;
- 
           Initialization.Undefer_Abort_Nestable (Self_Id);
  
           --  Should never get here ???
--- 232,237 ----
*************** package body System.Tasking.Rendezvous i
*** 303,312 ****
           STPO.Unlock (Caller);
        end if;
  
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        Initialization.Undefer_Abort_Nestable (Self_Id);
     end Accept_Trivial;
  
--- 275,280 ----
*************** package body System.Tasking.Rendezvous i
*** 401,420 ****
  
        --  Note: the caller will undefer abort on return (see WARNING above)
  
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        if not Task_Do_Or_Queue (Self_Id, Entry_Call) then
           STPO.Write_Lock (Self_Id);
           Utilities.Exit_One_ATC_Level (Self_Id);
           STPO.Unlock (Self_Id);
- 
-          if Single_Lock then
-             Unlock_RTS;
-          end if;
- 
           Local_Undefer_Abort (Self_Id);
           raise Tasking_Error;
        end if;
  
--- 369,380 ----
  
        --  Note: the caller will undefer abort on return (see WARNING above)
  
        if not Task_Do_Or_Queue (Self_Id, Entry_Call) then
           STPO.Write_Lock (Self_Id);
           Utilities.Exit_One_ATC_Level (Self_Id);
           STPO.Unlock (Self_Id);
           Local_Undefer_Abort (Self_Id);
+ 
           raise Tasking_Error;
        end if;
  
*************** package body System.Tasking.Rendezvous i
*** 426,436 ****
          (Debug.Trace (Self_Id, "Call_Synchronous: done waiting", 'R'));
        Rendezvous_Successful := Entry_Call.State = Done;
        STPO.Unlock (Self_Id);
- 
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        Local_Undefer_Abort (Self_Id);
        Entry_Calls.Check_Exception (Self_Id, Entry_Call);
     end Call_Synchronous;
--- 386,391 ----
*************** package body System.Tasking.Rendezvous i
*** 445,464 ****
  
     begin
        Initialization.Defer_Abort_Nestable (Self_Id);
- 
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        STPO.Write_Lock (T);
        Result := T.Callable;
        STPO.Unlock (T);
- 
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        Initialization.Undefer_Abort_Nestable (Self_Id);
        return Result;
     end Callable;
  
--- 400,410 ----
  
     begin
        Initialization.Defer_Abort_Nestable (Self_Id);
        STPO.Write_Lock (T);
        Result := T.Callable;
        STPO.Unlock (T);
        Initialization.Undefer_Abort_Nestable (Self_Id);
+ 
        return Result;
     end Callable;
  
*************** package body System.Tasking.Rendezvous i
*** 527,554 ****
        pragma Debug
          (Debug.Trace (Self_Id, "Local_Complete_Rendezvous", 'R'));
  
!       if Ex = Ada.Exceptions.Null_Id then
! 
!          --  The call came from normal end-of-rendezvous, so abort is not yet
!          --  deferred.
! 
!          Initialization.Defer_Abort (Self_Id);
! 
!       elsif ZCX_By_Default then
! 
!          --  With ZCX, aborts are not automatically deferred in handlers
! 
!          Initialization.Defer_Abort (Self_Id);
!       end if;
  
        --  We need to clean up any accepts which Self may have been serving when
        --  it was aborted.
  
        if Ex = Standard'Abort_Signal'Identity then
-          if Single_Lock then
-             Lock_RTS;
-          end if;
- 
           while Entry_Call /= null loop
              Entry_Call.Exception_To_Raise := Tasking_Error'Identity;
  
--- 473,484 ----
        pragma Debug
          (Debug.Trace (Self_Id, "Local_Complete_Rendezvous", 'R'));
  
!       Initialization.Defer_Abort (Self_Id);
  
        --  We need to clean up any accepts which Self may have been serving when
        --  it was aborted.
  
        if Ex = Standard'Abort_Signal'Identity then
           while Entry_Call /= null loop
              Entry_Call.Exception_To_Raise := Tasking_Error'Identity;
  
*************** package body System.Tasking.Rendezvous i
*** 568,578 ****
              STPO.Unlock (Caller);
              Entry_Call := Entry_Call.Acceptor_Prev_Call;
           end loop;
- 
-          if Single_Lock then
-             Unlock_RTS;
-          end if;
- 
        else
           Caller := Entry_Call.Self;
  
--- 498,503 ----
*************** package body System.Tasking.Rendezvous i
*** 588,610 ****
  
                 --  Requeue to another task entry
  
-                if Single_Lock then
-                   Lock_RTS;
-                end if;
- 
                 if not Task_Do_Or_Queue (Self_Id, Entry_Call) then
-                   if Single_Lock then
-                      Unlock_RTS;
-                   end if;
- 
                    Initialization.Undefer_Abort (Self_Id);
                    raise Tasking_Error;
                 end if;
- 
-                if Single_Lock then
-                   Unlock_RTS;
-                end if;
- 
              else
                 --  Requeue to a protected entry
  
--- 513,522 ----
*************** package body System.Tasking.Rendezvous i
*** 614,633 ****
                 if Ceiling_Violation then
                    pragma Assert (Ex = Ada.Exceptions.Null_Id);
                    Entry_Call.Exception_To_Raise := Program_Error'Identity;
- 
-                   if Single_Lock then
-                      Lock_RTS;
-                   end if;
- 
                    STPO.Write_Lock (Caller);
                    Initialization.Wakeup_Entry_Caller
                      (Self_Id, Entry_Call, Done);
                    STPO.Unlock (Caller);
  
-                   if Single_Lock then
-                      Unlock_RTS;
-                   end if;
- 
                 else
                    POO.PO_Do_Or_Queue (Self_Id, Called_PO, Entry_Call);
                    POO.PO_Service_Entries (Self_Id, Called_PO);
--- 526,536 ----
*************** package body System.Tasking.Rendezvous i
*** 642,652 ****
  
              Self_Id.Common.Call := Entry_Call.Acceptor_Prev_Call;
              Entry_Call.Exception_To_Raise := Ex;
- 
-             if Single_Lock then
-                Lock_RTS;
-             end if;
- 
              STPO.Write_Lock (Caller);
  
              --  Done with Caller locked to make sure that Wakeup is not lost
--- 545,550 ----
*************** package body System.Tasking.Rendezvous i
*** 661,671 ****
              Initialization.Wakeup_Entry_Caller (Self_Id, Entry_Call, Done);
  
              STPO.Unlock (Caller);
- 
-             if Single_Lock then
-                Unlock_RTS;
-             end if;
- 
              Entry_Calls.Reset_Priority (Self_Id, Acceptor_Prev_Priority);
           end if;
        end if;
--- 559,564 ----
*************** package body System.Tasking.Rendezvous i
*** 733,743 ****
  
     begin
        Initialization.Defer_Abort (Self_Id);
- 
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        STPO.Write_Lock (Self_Id);
  
        if not Self_Id.Callable then
--- 626,631 ----
*************** package body System.Tasking.Rendezvous i
*** 747,756 ****
  
           STPO.Unlock (Self_Id);
  
-          if Single_Lock then
-             Unlock_RTS;
-          end if;
- 
           --  ??? In some cases abort is deferred more than once. Need to
           --  figure out why this happens.
  
--- 635,640 ----
*************** package body System.Tasking.Rendezvous i
*** 902,911 ****
  
                 STPO.Unlock (Self_Id);
  
-                if Single_Lock then
-                   Unlock_RTS;
-                end if;
- 
                 Index := Self_Id.Chosen_Index;
                 Initialization.Undefer_Abort_Nestable (Self_Id);
  
--- 786,791 ----
*************** package body System.Tasking.Rendezvous i
*** 961,981 ****
  
              else
                 STPO.Unlock (Self_Id);
- 
-                if Single_Lock then
-                   Unlock_RTS;
-                end if;
- 
                 Initialization.Undefer_Abort (Self_Id);
!                raise Program_Error with
!                  "entry call not a delay mode";
              end if;
        end case;
  
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        --  Caller has been chosen
  
        --  Self_Id.Common.Call should already be updated by the Caller.
--- 841,851 ----
  
              else
                 STPO.Unlock (Self_Id);
                 Initialization.Undefer_Abort (Self_Id);
!                raise Program_Error with "entry call not a delay mode";
              end if;
        end case;
  
        --  Caller has been chosen
  
        --  Self_Id.Common.Call should already be updated by the Caller.
*************** package body System.Tasking.Rendezvous i
*** 1018,1036 ****
  
     begin
        Initialization.Defer_Abort (Self_Id);
- 
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        STPO.Write_Lock (Self_Id);
        Return_Count := Queuing.Count_Waiting (Self_Id.Entry_Queues (E));
        STPO.Unlock (Self_Id);
- 
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        Initialization.Undefer_Abort (Self_Id);
  
        return Return_Count;
--- 888,896 ----
*************** package body System.Tasking.Rendezvous i
*** 1306,1324 ****
           Entry_Call.Exception_To_Raise := Ada.Exceptions.Null_Id;
           Entry_Call.With_Abort := True;
  
-          if Single_Lock then
-             Lock_RTS;
-          end if;
- 
           if not Task_Do_Or_Queue (Self_Id, Entry_Call) then
              STPO.Write_Lock (Self_Id);
              Utilities.Exit_One_ATC_Level (Self_Id);
              STPO.Unlock (Self_Id);
- 
-             if Single_Lock then
-                Unlock_RTS;
-             end if;
- 
              Initialization.Undefer_Abort (Self_Id);
  
              raise Tasking_Error;
--- 1166,1175 ----
*************** package body System.Tasking.Rendezvous i
*** 1335,1344 ****
              Entry_Calls.Wait_Until_Abortable (Self_Id, Entry_Call);
           end if;
  
-          if Single_Lock then
-             Unlock_RTS;
-          end if;
- 
           --  Note: following assignment needs to be atomic
  
           Rendezvous_Successful := Entry_Call.State = Done;
--- 1186,1191 ----
*************** package body System.Tasking.Rendezvous i
*** 1392,1401 ****
  
        --  If we are aborted here, the effect will be pending
  
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        STPO.Write_Lock (Self_Id);
  
        if not Self_Id.Callable then
--- 1239,1244 ----
*************** package body System.Tasking.Rendezvous i
*** 1404,1414 ****
           pragma Assert (Self_Id.Pending_Action);
  
           STPO.Unlock (Self_Id);
- 
-          if Single_Lock then
-             Unlock_RTS;
-          end if;
- 
           Initialization.Undefer_Abort (Self_Id);
  
           --  Should never get here ???
--- 1247,1252 ----
*************** package body System.Tasking.Rendezvous i
*** 1484,1504 ****
              --  caller a chance of getting ready immediately, using Unlock
              --  Yield. See similar action in Wait_For_Completion/Wait_For_Call.
  
!             if Single_Lock then
!                Unlock_RTS;
!             else
!                Unlock (Self_Id);
!             end if;
  
              if Self_Id.Open_Accepts /= null then
                 Yield;
              end if;
  
!             if Single_Lock then
!                Lock_RTS;
!             else
!                Write_Lock (Self_Id);
!             end if;
  
              --  Check if this task has been aborted while the lock was released
  
--- 1322,1334 ----
              --  caller a chance of getting ready immediately, using Unlock
              --  Yield. See similar action in Wait_For_Completion/Wait_For_Call.
  
!             Unlock (Self_Id);
  
              if Self_Id.Open_Accepts /= null then
                 Yield;
              end if;
  
!             Write_Lock (Self_Id);
  
              --  Check if this task has been aborted while the lock was released
  
*************** package body System.Tasking.Rendezvous i
*** 1574,1583 ****
              null;
        end case;
  
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        if not Yielded then
           Yield;
        end if;
--- 1404,1409 ----
*************** package body System.Tasking.Rendezvous i
*** 1657,1675 ****
  
        --  Note: the caller will undefer abort on return (see WARNING above)
  
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        if not Task_Do_Or_Queue (Self_Id, Entry_Call) then
           STPO.Write_Lock (Self_Id);
           Utilities.Exit_One_ATC_Level (Self_Id);
           STPO.Unlock (Self_Id);
- 
-          if Single_Lock then
-             Unlock_RTS;
-          end if;
- 
           Initialization.Undefer_Abort (Self_Id);
  
           raise Tasking_Error;
--- 1483,1492 ----
*************** package body System.Tasking.Rendezvous i
*** 1680,1689 ****
          (Entry_Call, Timeout, Mode, Yielded);
        Unlock (Self_Id);
  
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        --  ??? Do we need to yield in case Yielded is False
  
        Rendezvous_Successful := Entry_Call.State = Done;
--- 1497,1502 ----
*************** package body System.Tasking.Rendezvous i
*** 1703,1723 ****
        --  a chance of getting ready immediately, using Unlock & Yield.
        --  See similar action in Wait_For_Completion & Timed_Selective_Wait.
  
!       if Single_Lock then
!          Unlock_RTS;
!       else
!          Unlock (Self_Id);
!       end if;
  
        if Self_Id.Open_Accepts /= null then
           Yield;
        end if;
  
!       if Single_Lock then
!          Lock_RTS;
!       else
!          Write_Lock (Self_Id);
!       end if;
  
        --  Check if this task has been aborted while the lock was released
  
--- 1516,1528 ----
        --  a chance of getting ready immediately, using Unlock & Yield.
        --  See similar action in Wait_For_Completion & Timed_Selective_Wait.
  
!       Unlock (Self_Id);
  
        if Self_Id.Open_Accepts /= null then
           Yield;
        end if;
  
!       Write_Lock (Self_Id);
  
        --  Check if this task has been aborted while the lock was released
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasren.ads gcc-11.1.0/gcc/ada/libgnarl/s-tasren.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasren.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasren.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Tasking.Rendezvous is
*** 317,324 ****
     function Task_Do_Or_Queue
       (Self_ID    : Task_Id;
        Entry_Call : Entry_Call_Link) return Boolean;
!    --  Call this only with abort deferred and holding no locks, except
!    --  the global RTS lock when Single_Lock is True which must be owned.
     --  Returns False iff the call cannot be served or queued, as is the
     --  case if the caller is not callable; i.e., a False return value
     --  indicates that Tasking_Error should be raised.
--- 317,323 ----
     function Task_Do_Or_Queue
       (Self_ID    : Task_Id;
        Entry_Call : Entry_Call_Link) return Boolean;
!    --  Call this only with abort deferred and holding no locks.
     --  Returns False iff the call cannot be served or queued, as is the
     --  case if the caller is not callable; i.e., a False return value
     --  indicates that Tasking_Error should be raised.
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasres.ads gcc-11.1.0/gcc/ada/libgnarl/s-tasres.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasres.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasres.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 1998-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 1998-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tassta.adb gcc-11.1.0/gcc/ada/libgnarl/s-tassta.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tassta.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tassta.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,38 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  pragma Partition_Elaboration_Policy (Concurrent);
  --  This package only implements the concurrent elaboration policy. This pragma
  --  will enforce it (and detect conflicts with user specified policy).
--- 29,34 ----
*************** package body System.Tasking.Stages is
*** 74,80 ****
  
     use Ada.Exceptions;
  
-    use Parameters;
     use Secondary_Stack;
     use Task_Primitives;
     use Task_Primitives.Operations;
--- 70,75 ----
*************** package body System.Tasking.Stages is
*** 341,349 ****
           C := C.Common.Activation_Link;
        end loop;
  
!       if not Single_Lock then
!          Unlock_RTS;
!       end if;
  
        --  Close the entries of any tasks that failed thread creation, and count
        --  those that have not finished activation.
--- 336,342 ----
           C := C.Common.Activation_Link;
        end loop;
  
!       Unlock_RTS;
  
        --  Close the entries of any tasks that failed thread creation, and count
        --  those that have not finished activation.
*************** package body System.Tasking.Stages is
*** 382,391 ****
        Self_ID.Common.State := Runnable;
        Unlock (Self_ID);
  
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        --  Remove the tasks from the chain
  
        Chain_Access.T_ID := null;
--- 375,380 ----
*************** package body System.Tasking.Stages is
*** 406,422 ****
  
     begin
        Initialization.Defer_Abort_Nestable (Self_ID);
- 
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        Vulnerable_Complete_Activation (Self_ID);
- 
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        Initialization.Undefer_Abort_Nestable (Self_ID);
  
        --  ??? Why do we need to allow for nested deferral here?
--- 395,401 ----
*************** package body System.Tasking.Stages is
*** 846,857 ****
        --  Force termination of "independent" library-level server tasks
  
        Lock_RTS;
- 
        Abort_Dependents (Self_ID);
! 
!       if not Single_Lock then
!          Unlock_RTS;
!       end if;
  
        --  We need to explicitly wait for the task to be terminated here
        --  because on true concurrent system, we may end this procedure before
--- 825,832 ----
        --  Force termination of "independent" library-level server tasks
  
        Lock_RTS;
        Abort_Dependents (Self_ID);
!       Unlock_RTS;
  
        --  We need to explicitly wait for the task to be terminated here
        --  because on true concurrent system, we may end this procedure before
*************** package body System.Tasking.Stages is
*** 891,900 ****
  
        Unlock (Self_ID);
  
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        --  Complete the environment task
  
        Vulnerable_Complete_Task (Self_ID);
--- 866,871 ----
*************** package body System.Tasking.Stages is
*** 1125,1135 ****
              --  stack analysis.
  
              Big_Overflow_Guard : constant := 64 * 1024 + 8 * 1024;
!             Small_Stack_Limit  : constant := 64 * 1024;
!             --  ??? These three values are experimental, and seem to work on
!             --  most platforms. They still need to be analyzed further. They
!             --  also need documentation, what are they and why does the logic
!             --  differ depending on whether the stack is large or small???
  
              Pattern_Size : Natural :=
                               Natural (Self_ID.Common.
--- 1096,1105 ----
              --  stack analysis.
  
              Big_Overflow_Guard : constant := 64 * 1024 + 8 * 1024;
!             --  These two values are experimental, and seem to work on most
!             --  platforms. They still need to be analyzed further. They also
!             --  need documentation, what are they and why does the logic differ
!             --  depending on whether the stack is large or small???
  
              Pattern_Size : Natural :=
                               Natural (Self_ID.Common.
*************** package body System.Tasking.Stages is
*** 1152,1158 ****
                 --  Adjustments for inner frames
  
                 Pattern_Size := Pattern_Size -
!                  (if Pattern_Size < Small_Stack_Limit
                      then Small_Overflow_Guard
                      else Big_Overflow_Guard);
              else
--- 1122,1128 ----
                 --  Adjustments for inner frames
  
                 Pattern_Size := Pattern_Size -
!                  (if Pattern_Size < Big_Overflow_Guard
                      then Small_Overflow_Guard
                      else Big_Overflow_Guard);
              else
*************** package body System.Tasking.Stages is
*** 1212,1217 ****
--- 1182,1193 ----
           --  we do not call Set_Jmpbuf_Address (which needs Self) before we
           --  set Self in Enter_Task
  
+          --  Call the initialization hook if any
+ 
+          if Global_Initialization_Handler /= null then
+             Global_Initialization_Handler.all;
+          end if;
+ 
           --  Call the task body procedure
  
           --  The task body is called with abort still deferred. That
*************** package body System.Tasking.Stages is
*** 1294,1303 ****
        --  the environment task. The task termination code for the environment
        --  task is executed by SSL.Task_Termination_Handler.
  
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        Write_Lock (Self_ID);
  
        if Self_ID.Common.Specific_Handler /= null then
--- 1270,1275 ----
*************** package body System.Tasking.Stages is
*** 1320,1329 ****
  
        Unlock (Self_ID);
  
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        --  Execute the task termination handler if we found it
  
        if TH /= null then
--- 1292,1297 ----
*************** package body System.Tasking.Stages is
*** 1393,1418 ****
  
        Initialization.Task_Lock (Self_ID);
  
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        Master_Of_Task := Self_ID.Master_Of_Task;
  
        --  Check if the current task is an independent task If so, decrement
        --  the Independent_Task_Count value.
  
        if Master_Of_Task = Independent_Task_Level then
!          if Single_Lock then
!             Utilities.Independent_Task_Count :=
!               Utilities.Independent_Task_Count - 1;
! 
!          else
!             Write_Lock (Environment_Task);
!             Utilities.Independent_Task_Count :=
!               Utilities.Independent_Task_Count - 1;
!             Unlock (Environment_Task);
!          end if;
        end if;
  
        --  Unprotect the guard page if needed
--- 1361,1376 ----
  
        Initialization.Task_Lock (Self_ID);
  
        Master_Of_Task := Self_ID.Master_Of_Task;
  
        --  Check if the current task is an independent task If so, decrement
        --  the Independent_Task_Count value.
  
        if Master_Of_Task = Independent_Task_Level then
!          Write_Lock (Environment_Task);
!          Utilities.Independent_Task_Count :=
!            Utilities.Independent_Task_Count - 1;
!          Unlock (Environment_Task);
        end if;
  
        --  Unprotect the guard page if needed
*************** package body System.Tasking.Stages is
*** 1422,1431 ****
        Utilities.Make_Passive (Self_ID, Task_Completed => True);
        Deallocate := Self_ID.Free_On_Termination;
  
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        pragma Assert (Check_Exit (Self_ID));
  
        SSL.Destroy_TSD (Self_ID.Common.Compiler_Data);
--- 1380,1385 ----
*************** package body System.Tasking.Stages is
*** 1454,1473 ****
  
     begin
        Initialization.Defer_Abort_Nestable (Self_ID);
- 
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        Write_Lock (T);
        Result := T.Common.State = Terminated;
        Unlock (T);
- 
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        Initialization.Undefer_Abort_Nestable (Self_ID);
        return Result;
     end Terminated;
  
--- 1408,1418 ----
  
     begin
        Initialization.Defer_Abort_Nestable (Self_ID);
        Write_Lock (T);
        Result := T.Common.State = Terminated;
        Unlock (T);
        Initialization.Undefer_Abort_Nestable (Self_ID);
+ 
        return Result;
     end Terminated;
  
*************** package body System.Tasking.Stages is
*** 1600,1609 ****
  
        function Check_Unactivated_Tasks return Boolean is
        begin
!          if not Single_Lock then
!             Lock_RTS;
!          end if;
! 
           Write_Lock (Self_ID);
  
           C := All_Tasks_List;
--- 1545,1551 ----
  
        function Check_Unactivated_Tasks return Boolean is
        begin
!          Lock_RTS;
           Write_Lock (Self_ID);
  
           C := All_Tasks_List;
*************** package body System.Tasking.Stages is
*** 1626,1635 ****
           end loop;
  
           Unlock (Self_ID);
! 
!          if not Single_Lock then
!             Unlock_RTS;
!          end if;
  
           return True;
        end Check_Unactivated_Tasks;
--- 1568,1574 ----
           end loop;
  
           Unlock (Self_ID);
!          Unlock_RTS;
  
           return True;
        end Check_Unactivated_Tasks;
*************** package body System.Tasking.Stages is
*** 1698,1707 ****
  
        Self_ID.Common.State := Master_Completion_Sleep;
        Unlock (Self_ID);
! 
!       if not Single_Lock then
!          Unlock_RTS;
!       end if;
  
        --  Wait until dependent tasks are all terminated or ready to terminate.
        --  While waiting, the task may be awakened if the task's priority needs
--- 1637,1643 ----
  
        Self_ID.Common.State := Master_Completion_Sleep;
        Unlock (Self_ID);
!       Unlock_RTS;
  
        --  Wait until dependent tasks are all terminated or ready to terminate.
        --  While waiting, the task may be awakened if the task's priority needs
*************** package body System.Tasking.Stages is
*** 1718,1732 ****
           if Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
             and then not Self_ID.Dependents_Aborted
           then
!             if Single_Lock then
!                Abort_Dependents (Self_ID);
!             else
!                Unlock (Self_ID);
!                Lock_RTS;
!                Abort_Dependents (Self_ID);
!                Unlock_RTS;
!                Write_Lock (Self_ID);
!             end if;
           else
              pragma Debug
                (Debug.Trace (Self_ID, "master_completion_sleep", 'C'));
--- 1654,1664 ----
           if Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
             and then not Self_ID.Dependents_Aborted
           then
!             Unlock (Self_ID);
!             Lock_RTS;
!             Abort_Dependents (Self_ID);
!             Unlock_RTS;
!             Write_Lock (Self_ID);
           else
              pragma Debug
                (Debug.Trace (Self_ID, "master_completion_sleep", 'C'));
*************** package body System.Tasking.Stages is
*** 1753,1762 ****
  
           --  Force any remaining dependents to terminate by aborting them
  
!          if not Single_Lock then
!             Lock_RTS;
!          end if;
! 
           Abort_Dependents (Self_ID);
  
           --  Above, when we "abort" the dependents we are simply using this
--- 1685,1691 ----
  
           --  Force any remaining dependents to terminate by aborting them
  
!          Lock_RTS;
           Abort_Dependents (Self_ID);
  
           --  Above, when we "abort" the dependents we are simply using this
*************** package body System.Tasking.Stages is
*** 1801,1810 ****
  
           Self_ID.Common.State := Master_Phase_2_Sleep;
           Unlock (Self_ID);
! 
!          if not Single_Lock then
!             Unlock_RTS;
!          end if;
  
           --  Wait for all counted tasks to finish terminating themselves
  
--- 1730,1736 ----
  
           Self_ID.Common.State := Master_Phase_2_Sleep;
           Unlock (Self_ID);
!          Unlock_RTS;
  
           --  Wait for all counted tasks to finish terminating themselves
  
*************** package body System.Tasking.Stages is
*** 1828,1837 ****
        --  locks. Instead, we put those ATCBs to be freed onto a temporary list,
        --  called To_Be_Freed.
  
!       if not Single_Lock then
!          Lock_RTS;
!       end if;
! 
        C := All_Tasks_List;
        P := null;
        while C /= null loop
--- 1754,1760 ----
        --  locks. Instead, we put those ATCBs to be freed onto a temporary list,
        --  called To_Be_Freed.
  
!       Lock_RTS;
        C := All_Tasks_List;
        P := null;
        while C /= null loop
*************** package body System.Tasking.Stages is
*** 1986,1995 ****
  
        pragma Debug (Debug.Trace (Self_ID, "V_Complete_Task", 'C'));
  
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        Write_Lock (Self_ID);
        Self_ID.Callable := False;
  
--- 1909,1914 ----
*************** package body System.Tasking.Stages is
*** 2005,2014 ****
           Vulnerable_Complete_Activation (Self_ID);
        end if;
  
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        --  If Self_ID.Master_Within = Self_ID.Master_Of_Task + 2 we may have
        --  dependent tasks for which we need to wait. Otherwise we just exit.
  
--- 1924,1929 ----
*************** package body System.Tasking.Stages is
*** 2035,2052 ****
     begin
        pragma Debug (Debug.Trace (Self, "Vulnerable_Free_Task", 'C', T));
  
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        Write_Lock (T);
        Initialization.Finalize_Attributes (T);
        Unlock (T);
  
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        System.Task_Primitives.Operations.Finalize_TCB (T);
     end Vulnerable_Free_Task;
  
--- 1950,1959 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tassta.ads gcc-11.1.0/gcc/ada/libgnarl/s-tassta.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tassta.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tassta.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasuti.adb gcc-11.1.0/gcc/ada/libgnarl/s-tasuti.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasuti.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasuti.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,53 ****
  
  --  These declarations are not part of the GNARLI
  
- pragma Polling (Off);
- --  Turn off polling, we do not want ATC polling to take place during tasking
- --  operations. It causes infinite loops and other problems.
- 
  with System.Tasking.Debug;
  with System.Task_Primitives.Operations;
  with System.Tasking.Initialization;
  with System.Tasking.Queuing;
- with System.Parameters;
  
  package body System.Tasking.Utilities is
  
     package STPO renames System.Task_Primitives.Operations;
  
-    use Parameters;
     use Tasking.Debug;
     use Task_Primitives;
     use Task_Primitives.Operations;
--- 33,47 ----
*************** package body System.Tasking.Utilities is
*** 58,64 ****
  
     --  Similar to Locked_Abort_To_Level (Self_ID, T, Level_Completed_Task),
     --  but:
!    --    (1) caller should be holding no locks except RTS_Lock when Single_Lock
     --    (2) may be called for tasks that have not yet been activated
     --    (3) always aborts whole task
  
--- 52,58 ----
  
     --  Similar to Locked_Abort_To_Level (Self_ID, T, Level_Completed_Task),
     --  but:
!    --    (1) caller should be holding no locks
     --    (2) may be called for tasks that have not yet been activated
     --    (3) always aborts whole task
  
*************** package body System.Tasking.Utilities is
*** 248,258 ****
        end if;
  
        Initialization.Defer_Abort (Self_Id);
- 
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        Write_Lock (Environment_Task);
        Write_Lock (Self_Id);
  
--- 242,247 ----
*************** package body System.Tasking.Utilities is
*** 277,287 ****
        pragma Assert (Environment_Task.Common.State /= Master_Completion_Sleep);
  
        Unlock (Environment_Task);
- 
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        Initialization.Undefer_Abort (Self_Id);
  
        --  Return True. Actually the return value is junk, since we expect it
--- 266,271 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tasuti.ads gcc-11.1.0/gcc/ada/libgnarl/s-tasuti.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tasuti.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tasuti.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Tasking.Utilities is
*** 102,108 ****
  
     procedure Cancel_Queued_Entry_Calls (T : Task_Id);
     --  Cancel any entry calls queued on target task.
!    --  Call this while holding T's lock (or RTS_Lock in Single_Lock mode).
  
     procedure Exit_One_ATC_Level (Self_ID : Task_Id);
     pragma Inline (Exit_One_ATC_Level);
--- 102,108 ----
  
     procedure Cancel_Queued_Entry_Calls (T : Task_Id);
     --  Cancel any entry calls queued on target task.
!    --  Call this while holding T's lock.
  
     procedure Exit_One_ATC_Level (Self_ID : Task_Id);
     pragma Inline (Exit_One_ATC_Level);
*************** package System.Tasking.Utilities is
*** 124,130 ****
     procedure Make_Passive (Self_ID : Task_Id; Task_Completed : Boolean);
     --  Update counts to indicate current task is either terminated or
     --  accepting on a terminate alternative. Call holding no locks except
!    --  Global_Task_Lock when calling from Terminate_Task, and RTS_Lock when
!    --  Single_Lock is True.
  
  end System.Tasking.Utilities;
--- 124,129 ----
     procedure Make_Passive (Self_ID : Task_Id; Task_Completed : Boolean);
     --  Update counts to indicate current task is either terminated or
     --  accepting on a terminate alternative. Call holding no locks except
!    --  Global_Task_Lock when calling from Terminate_Task.
  
  end System.Tasking.Utilities;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tataat.adb gcc-11.1.0/gcc/ada/libgnarl/s-tataat.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tataat.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tataat.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 2014-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 2014-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tataat.ads gcc-11.1.0/gcc/ada/libgnarl/s-tataat.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tataat.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tataat.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --            Copyright (C) 2014-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --            Copyright (C) 2014-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tpinop.adb gcc-11.1.0/gcc/ada/libgnarl/s-tpinop.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tpinop.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tpinop.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tpinop.ads gcc-11.1.0/gcc/ada/libgnarl/s-tpinop.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tpinop.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tpinop.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tpoaal.adb gcc-11.1.0/gcc/ada/libgnarl/s-tpoaal.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tpoaal.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tpoaal.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --        Copyright (C) 2011-2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --        Copyright (C) 2011-2020, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tpoben.adb gcc-11.1.0/gcc/ada/libgnarl/s-tpoben.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tpoben.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tpoben.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                               B o d y                                    --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                               B o d y                                    --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 43,49 ****
  
  with System.Task_Primitives.Operations;
  with System.Restrictions;
- with System.Parameters;
  
  with System.Tasking.Initialization;
  pragma Elaborate_All (System.Tasking.Initialization);
--- 43,48 ----
*************** package body System.Tasking.Protected_Ob
*** 53,59 ****
  
     package STPO renames System.Task_Primitives.Operations;
  
-    use Parameters;
     use Task_Primitives.Operations;
  
     ----------------
--- 52,57 ----
*************** package body System.Tasking.Protected_Ob
*** 81,90 ****
  
        STPO.Write_Lock (Object.L'Unrestricted_Access, Ceiling_Violation);
  
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        if Ceiling_Violation then
  
           --  Dip our own priority down to ceiling of lock. See similar code in
--- 79,84 ----
*************** package body System.Tasking.Protected_Ob
*** 95,115 ****
           Self_ID.New_Base_Priority := Object.Ceiling;
           Initialization.Change_Base_Priority (Self_ID);
           STPO.Unlock (Self_ID);
- 
-          if Single_Lock then
-             Unlock_RTS;
-          end if;
- 
           STPO.Write_Lock (Object.L'Unrestricted_Access, Ceiling_Violation);
  
           if Ceiling_Violation then
              raise Program_Error with "ceiling violation";
           end if;
  
-          if Single_Lock then
-             Lock_RTS;
-          end if;
- 
           Object.Old_Base_Priority := Old_Base_Priority;
           Object.Pending_Action := True;
        end if;
--- 89,100 ----
*************** package body System.Tasking.Protected_Ob
*** 133,145 ****
        end loop;
  
        Object.Finalized := True;
- 
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        STPO.Unlock (Object.L'Unrestricted_Access);
- 
        STPO.Finalize_Lock (Object.L'Unrestricted_Access);
     end Finalize;
  
--- 118,124 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tpoben.ads gcc-11.1.0/gcc/ada/libgnarl/s-tpoben.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tpoben.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tpoben.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tpobmu.adb gcc-11.1.0/gcc/ada/libgnarl/s-tpobmu.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tpobmu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tpobmu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                     M U L T I P R O C E S S O R S                        --
  --                               B o d y                                    --
  --                                                                          --
! --                       Copyright (C) 2010-2019, AdaCore                   --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                     M U L T I P R O C E S S O R S                        --
  --                               B o d y                                    --
  --                                                                          --
! --                       Copyright (C) 2010-2020, AdaCore                   --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tpobmu.ads gcc-11.1.0/gcc/ada/libgnarl/s-tpobmu.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tpobmu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tpobmu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                     M U L T I P R O C E S S O R S                        --
  --                                S p e c                                   --
  --                                                                          --
! --                     Copyright (C) 2010-2019, AdaCore                     --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                     M U L T I P R O C E S S O R S                        --
  --                                S p e c                                   --
  --                                                                          --
! --                     Copyright (C) 2010-2020, AdaCore                     --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tpobop.adb gcc-11.1.0/gcc/ada/libgnarl/s-tpobop.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tpobop.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tpobop.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1998-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1998-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.Tasking.Queuing;
*** 48,54 ****
  with System.Tasking.Rendezvous;
  with System.Tasking.Utilities;
  with System.Tasking.Debug;
- with System.Parameters;
  with System.Restrictions;
  
  with System.Tasking.Initialization;
--- 48,53 ----
*************** package body System.Tasking.Protected_Ob
*** 59,65 ****
  
     package STPO renames System.Task_Primitives.Operations;
  
-    use Parameters;
     use Ada.Exceptions;
     use Entries;
  
--- 58,63 ----
*************** package body System.Tasking.Protected_Ob
*** 248,264 ****
           Entry_Call.Exception_To_Raise := Ex;
  
           if Ex /= Ada.Exceptions.Null_Id then
- 
-             --  An exception was raised and abort was deferred, so adjust
-             --  before propagating, otherwise the task will stay with deferral
-             --  enabled for its remaining life.
- 
              Self_Id := STPO.Self;
- 
-             if not ZCX_By_Default then
-                Initialization.Undefer_Abort_Nestable (Self_Id);
-             end if;
- 
              Transfer_Occurrence
                (Entry_Call.Self.Common.Compiler_Data.Current_Excep'Access,
                 Self_Id.Common.Compiler_Data.Current_Excep);
--- 246,252 ----
*************** package body System.Tasking.Protected_Ob
*** 313,331 ****
              --  Body of current entry served call to completion
  
              Object.Call_In_Progress := null;
- 
-             if Single_Lock then
-                STPO.Lock_RTS;
-             end if;
- 
              STPO.Write_Lock (Entry_Call.Self);
              Initialization.Wakeup_Entry_Caller (Self_ID, Entry_Call, Done);
              STPO.Unlock (Entry_Call.Self);
  
-             if Single_Lock then
-                STPO.Unlock_RTS;
-             end if;
- 
           else
              Requeue_Call (Self_ID, Object, Entry_Call);
           end if;
--- 301,310 ----
*************** package body System.Tasking.Protected_Ob
*** 353,371 ****
                 --  Max_Queue_Length bound, raise Program_Error.
  
                 Entry_Call.Exception_To_Raise := Program_Error'Identity;
- 
-                if Single_Lock then
-                   STPO.Lock_RTS;
-                end if;
- 
                 STPO.Write_Lock (Entry_Call.Self);
                 Initialization.Wakeup_Entry_Caller (Self_ID, Entry_Call, Done);
                 STPO.Unlock (Entry_Call.Self);
  
-                if Single_Lock then
-                   STPO.Unlock_RTS;
-                end if;
- 
                 return;
              end if;
           end if;
--- 332,341 ----
*************** package body System.Tasking.Protected_Ob
*** 379,396 ****
        else
           --  Conditional_Call and With_Abort
  
-          if Single_Lock then
-             STPO.Lock_RTS;
-          end if;
- 
           STPO.Write_Lock (Entry_Call.Self);
           pragma Assert (Entry_Call.State /= Not_Yet_Abortable);
           Initialization.Wakeup_Entry_Caller (Self_ID, Entry_Call, Cancelled);
           STPO.Unlock (Entry_Call.Self);
- 
-          if Single_Lock then
-             STPO.Unlock_RTS;
-          end if;
        end if;
  
     exception
--- 349,358 ----
*************** package body System.Tasking.Protected_Ob
*** 437,444 ****
  
           exception
              when others =>
!                Queuing.Broadcast_Program_Error
!                  (Self_ID, Object, Entry_Call);
           end;
  
           if Object.Call_In_Progress = null then
--- 399,405 ----
  
           exception
              when others =>
!                Queuing.Broadcast_Program_Error (Self_ID, Object, Entry_Call);
           end;
  
           if Object.Call_In_Progress = null then
*************** package body System.Tasking.Protected_Ob
*** 448,465 ****
           else
              Object.Call_In_Progress := null;
              Caller := Entry_Call.Self;
- 
-             if Single_Lock then
-                STPO.Lock_RTS;
-             end if;
- 
              STPO.Write_Lock (Caller);
              Initialization.Wakeup_Entry_Caller (Self_ID, Entry_Call, Done);
              STPO.Unlock (Caller);
- 
-             if Single_Lock then
-                STPO.Unlock_RTS;
-             end if;
           end if;
        end loop;
  
--- 409,417 ----
*************** package body System.Tasking.Protected_Ob
*** 608,625 ****
  
           --  Once State >= Done it will not change any more
  
-          if Single_Lock then
-             STPO.Lock_RTS;
-          end if;
- 
           STPO.Write_Lock (Self_ID);
           Utilities.Exit_One_ATC_Level (Self_ID);
           STPO.Unlock (Self_ID);
  
-          if Single_Lock then
-             STPO.Unlock_RTS;
-          end if;
- 
           Block.Enqueued := False;
           Block.Cancelled := Entry_Call.State = Cancelled;
           Initialization.Undefer_Abort_Nestable (Self_ID);
--- 560,569 ----
*************** package body System.Tasking.Protected_Ob
*** 640,652 ****
           --  Try to avoid an expensive call
  
           if not Initially_Abortable then
!             if Single_Lock then
!                STPO.Lock_RTS;
!                Entry_Calls.Wait_Until_Abortable (Self_ID, Entry_Call);
!                STPO.Unlock_RTS;
!             else
!                Entry_Calls.Wait_Until_Abortable (Self_ID, Entry_Call);
!             end if;
           end if;
  
        else
--- 584,590 ----
           --  Try to avoid an expensive call
  
           if not Initially_Abortable then
!             Entry_Calls.Wait_Until_Abortable (Self_ID, Entry_Call);
           end if;
  
        else
*************** package body System.Tasking.Protected_Ob
*** 654,669 ****
              when Conditional_Call
                 | Simple_Call
              =>
!                if Single_Lock then
!                   STPO.Lock_RTS;
!                   Entry_Calls.Wait_For_Completion (Entry_Call);
!                   STPO.Unlock_RTS;
! 
!                else
!                   STPO.Write_Lock (Self_ID);
!                   Entry_Calls.Wait_For_Completion (Entry_Call);
!                   STPO.Unlock (Self_ID);
!                end if;
  
                 Block.Cancelled := Entry_Call.State = Cancelled;
  
--- 592,600 ----
              when Conditional_Call
                 | Simple_Call
              =>
!                STPO.Write_Lock (Self_ID);
!                Entry_Calls.Wait_For_Completion (Entry_Call);
!                STPO.Unlock (Self_ID);
  
                 Block.Cancelled := Entry_Call.State = Cancelled;
  
*************** package body System.Tasking.Protected_Ob
*** 700,720 ****
  
           --  Call is to be requeued to a task entry
  
-          if Single_Lock then
-             STPO.Lock_RTS;
-          end if;
- 
           Result := Rendezvous.Task_Do_Or_Queue (Self_Id, Entry_Call);
  
           if not Result then
!             Queuing.Broadcast_Program_Error
!               (Self_Id, Object, Entry_Call, RTS_Locked => True);
!          end if;
! 
!          if Single_Lock then
!             STPO.Unlock_RTS;
           end if;
- 
        else
           --  Call should be requeued to a PO
  
--- 631,641 ----
  
           --  Call is to be requeued to a task entry
  
           Result := Rendezvous.Task_Do_Or_Queue (Self_Id, Entry_Call);
  
           if not Result then
!             Queuing.Broadcast_Program_Error (Self_Id, Object, Entry_Call);
           end if;
        else
           --  Call should be requeued to a PO
  
*************** package body System.Tasking.Protected_Ob
*** 767,785 ****
  
                    Entry_Call.Exception_To_Raise := Program_Error'Identity;
  
-                   if Single_Lock then
-                      STPO.Lock_RTS;
-                   end if;
- 
                    STPO.Write_Lock (Entry_Call.Self);
                    Initialization.Wakeup_Entry_Caller
                      (Self_Id, Entry_Call, Done);
                    STPO.Unlock (Entry_Call.Self);
  
-                   if Single_Lock then
-                      STPO.Unlock_RTS;
-                   end if;
- 
                 else
                    Queuing.Enqueue
                      (New_Object.Entry_Queues (E), Entry_Call);
--- 688,698 ----
*************** package body System.Tasking.Protected_Ob
*** 993,1015 ****
  
        PO_Do_Or_Queue (Self_Id, Object, Entry_Call);
        PO_Service_Entries (Self_Id, Object);
! 
!       if Single_Lock then
!          STPO.Lock_RTS;
!       else
!          STPO.Write_Lock (Self_Id);
!       end if;
  
        --  Try to avoid waiting for completed or cancelled calls
  
        if Entry_Call.State >= Done then
           Utilities.Exit_One_ATC_Level (Self_Id);
! 
!          if Single_Lock then
!             STPO.Unlock_RTS;
!          else
!             STPO.Unlock (Self_Id);
!          end if;
  
           Entry_Call_Successful := Entry_Call.State = Done;
           Initialization.Undefer_Abort_Nestable (Self_Id);
--- 906,918 ----
  
        PO_Do_Or_Queue (Self_Id, Object, Entry_Call);
        PO_Service_Entries (Self_Id, Object);
!       STPO.Write_Lock (Self_Id);
  
        --  Try to avoid waiting for completed or cancelled calls
  
        if Entry_Call.State >= Done then
           Utilities.Exit_One_ATC_Level (Self_Id);
!          STPO.Unlock (Self_Id);
  
           Entry_Call_Successful := Entry_Call.State = Done;
           Initialization.Undefer_Abort_Nestable (Self_Id);
*************** package body System.Tasking.Protected_Ob
*** 1019,1030 ****
  
        Entry_Calls.Wait_For_Completion_With_Timeout
          (Entry_Call, Timeout, Mode, Yielded);
! 
!       if Single_Lock then
!          STPO.Unlock_RTS;
!       else
!          STPO.Unlock (Self_Id);
!       end if;
  
        --  ??? Do we need to yield in case Yielded is False
  
--- 922,928 ----
  
        Entry_Calls.Wait_For_Completion_With_Timeout
          (Entry_Call, Timeout, Mode, Yielded);
!       STPO.Unlock (Self_Id);
  
        --  ??? Do we need to yield in case Yielded is False
  
*************** package body System.Tasking.Protected_Ob
*** 1075,1084 ****
           if Old < Was_Abortable and then
             Entry_Call.State = Now_Abortable
           then
-             if Single_Lock then
-                STPO.Lock_RTS;
-             end if;
- 
              STPO.Write_Lock (Entry_Call.Self);
  
              if Entry_Call.Self.Common.State = Async_Select_Sleep then
--- 973,978 ----
*************** package body System.Tasking.Protected_Ob
*** 1086,1096 ****
              end if;
  
              STPO.Unlock (Entry_Call.Self);
- 
-             if Single_Lock then
-                STPO.Unlock_RTS;
-             end if;
- 
           end if;
  
        elsif Entry_Call.Mode = Conditional_Call then
--- 980,985 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tpobop.ads gcc-11.1.0/gcc/ada/libgnarl/s-tpobop.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tpobop.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tpobop.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tpopmo.adb gcc-11.1.0/gcc/ada/libgnarl/s-tpopmo.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tpopmo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tpopmo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Monotonic is
*** 193,201 ****
                 Result :=
                   pthread_cond_timedwait
                     (cond    => Self_ID.Common.LL.CV'Access,
!                     mutex   => (if Single_Lock
!                                 then Single_RTS_Lock'Access
!                                 else Self_ID.Common.LL.L'Access),
                      abstime => Request'Access);
  
                 case Result is
--- 193,199 ----
                 Result :=
                   pthread_cond_timedwait
                     (cond    => Self_ID.Common.LL.CV'Access,
!                     mutex   => Self_ID.Common.LL.L'Access,
                      abstime => Request'Access);
  
                 case Result is
*************** package body Monotonic is
*** 244,253 ****
        Exit_Outer : Boolean := False;
  
     begin
-       if Single_Lock then
-          Lock_RTS;
-       end if;
- 
        Write_Lock (Self_ID);
  
        Compute_Deadline
--- 242,247 ----
*************** package body Monotonic is
*** 286,294 ****
                 Result :=
                   pthread_cond_timedwait
                     (cond    => Self_ID.Common.LL.CV'Access,
!                     mutex   => (if Single_Lock
!                                 then Single_RTS_Lock'Access
!                                 else Self_ID.Common.LL.L'Access),
                      abstime => Request'Access);
  
                 case Result is
--- 280,286 ----
                 Result :=
                   pthread_cond_timedwait
                     (cond    => Self_ID.Common.LL.CV'Access,
!                     mutex   => Self_ID.Common.LL.L'Access,
                      abstime => Request'Access);
  
                 case Result is
*************** package body Monotonic is
*** 314,324 ****
        end if;
  
        Unlock (Self_ID);
- 
-       if Single_Lock then
-          Unlock_RTS;
-       end if;
- 
        pragma Unreferenced (Result);
        Result := sched_yield;
     end Timed_Delay;
--- 306,311 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb gcc-11.1.0/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tpopsp__posix.adb gcc-11.1.0/gcc/ada/libgnarl/s-tpopsp__posix.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tpopsp__posix.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tpopsp__posix.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tpopsp__solaris.adb gcc-11.1.0/gcc/ada/libgnarl/s-tpopsp__solaris.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tpopsp__solaris.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tpopsp__solaris.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tpopsp__tls.adb gcc-11.1.0/gcc/ada/libgnarl/s-tpopsp__tls.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tpopsp__tls.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tpopsp__tls.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb gcc-11.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb gcc-11.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tpopsp__vxworks.adb gcc-11.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tpopsp__vxworks.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tporft.adb gcc-11.1.0/gcc/ada/libgnarl/s-tporft.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tporft.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tporft.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** begin
*** 53,58 ****
--- 53,59 ----
  
     Local_ATCB.Common.LL.Thread := Thread;
     Local_ATCB.Common.Current_Priority := System.Priority'First;
+    Local_ATCB.Common.Global_Task_Lock_Nesting := 0;
     Specific.Set (Local_ATCB'Unchecked_Access);
  
     --  It is now safe to use an allocator
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tposen.adb gcc-11.1.0/gcc/ada/libgnarl/s-tposen.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-tposen.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tposen.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --         Copyright (C) 1998-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --         Copyright (C) 1998-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Style_Checks (All_Checks);
*** 52,75 ****
  --  performed at compile time, and is relatively cheap (see PO_Do_Or_Queue,
  --  Service_Entry).
  
- pragma Polling (Off);
- --  Turn off polling, we do not want polling to take place during tasking
- --  operations. It can cause infinite loops and other problems.
- 
  pragma Suppress (All_Checks);
  --  Why is this required ???
  
  with Ada.Exceptions;
  
  with System.Task_Primitives.Operations;
- with System.Parameters;
  
  package body System.Tasking.Protected_Objects.Single_Entry is
  
     package STPO renames System.Task_Primitives.Operations;
  
-    use Parameters;
- 
     -----------------------
     -- Local Subprograms --
     -----------------------
--- 52,68 ----
*************** package body System.Tasking.Protected_Ob
*** 143,160 ****
  
     begin
        Entry_Call.Exception_To_Raise := Program_Error'Identity;
- 
-       if Single_Lock then
-          STPO.Lock_RTS;
-       end if;
- 
        STPO.Write_Lock (Caller);
        Wakeup_Entry_Caller (Entry_Call);
        STPO.Unlock (Caller);
- 
-       if Single_Lock then
-          STPO.Unlock_RTS;
-       end if;
     end Send_Program_Error;
  
     -------------------------
--- 136,144 ----
*************** package body System.Tasking.Protected_Ob
*** 286,303 ****
             (Object.Compiler_Info, Entry_Call.Uninterpreted_Data, 1);
           Object.Call_In_Progress := null;
  
-          if Single_Lock then
-             STPO.Lock_RTS;
-          end if;
- 
           STPO.Write_Lock (Entry_Call.Self);
           Wakeup_Entry_Caller (Entry_Call);
           STPO.Unlock (Entry_Call.Self);
  
-          if Single_Lock then
-             STPO.Unlock_RTS;
-          end if;
- 
        else
           pragma Assert (Entry_Call.Mode = Simple_Call);
  
--- 270,279 ----
*************** package body System.Tasking.Protected_Ob
*** 370,386 ****
        pragma Assert (Entry_Call.State /= Cancelled);
  
        if Entry_Call.State /= Done then
-          if Single_Lock then
-             STPO.Lock_RTS;
-          end if;
- 
           STPO.Write_Lock (Self_Id);
           Wait_For_Completion (Entry_Call'Access);
           STPO.Unlock (Self_Id);
- 
-          if Single_Lock then
-             STPO.Unlock_RTS;
-          end if;
        end if;
  
        Check_Exception (Self_Id, Entry_Call'Access);
--- 346,354 ----
*************** package body System.Tasking.Protected_Ob
*** 427,444 ****
           Caller := Entry_Call.Self;
           Unlock_Entry (Object);
  
-          if Single_Lock then
-             STPO.Lock_RTS;
-          end if;
- 
           STPO.Write_Lock (Caller);
           Wakeup_Entry_Caller (Entry_Call);
           STPO.Unlock (Caller);
  
-          if Single_Lock then
-             STPO.Unlock_RTS;
-          end if;
- 
        else
           --  Just unlock the entry
  
--- 395,404 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-tposen.ads gcc-11.1.0/gcc/ada/libgnarl/s-tposen.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-tposen.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-tposen.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-vxwext.adb gcc-11.1.0/gcc/ada/libgnarl/s-vxwext.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-vxwext.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-vxwext.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --           Copyright (C) 2009-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --           Copyright (C) 2009-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-vxwext.ads gcc-11.1.0/gcc/ada/libgnarl/s-vxwext.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-vxwext.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-vxwext.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNARL is free software;  you can redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNARL is free software;  you can redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb gcc-11.1.0/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --          Copyright (C) 2008-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --          Copyright (C) 2008-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-vxwext__kernel.adb gcc-11.1.0/gcc/ada/libgnarl/s-vxwext__kernel.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-vxwext__kernel.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-vxwext__kernel.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNARL is free software;  you can redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNARL is free software;  you can redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-vxwext__kernel.ads gcc-11.1.0/gcc/ada/libgnarl/s-vxwext__kernel.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-vxwext__kernel.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-vxwext__kernel.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNARL is free software;  you can redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNARL is free software;  you can redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-vxwext__noints.adb gcc-11.1.0/gcc/ada/libgnarl/s-vxwext__noints.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-vxwext__noints.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-vxwext__noints.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb gcc-11.1.0/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-vxwext__rtp.adb gcc-11.1.0/gcc/ada/libgnarl/s-vxwext__rtp.adb
*** gcc-10.3.0/gcc/ada/libgnarl/s-vxwext__rtp.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-vxwext__rtp.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNARL is free software;  you can redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNARL is free software;  you can redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-vxwext__rtp.ads gcc-11.1.0/gcc/ada/libgnarl/s-vxwext__rtp.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-vxwext__rtp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-vxwext__rtp.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNARL is free software;  you can redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNARL is free software;  you can redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-vxwext__vthreads.ads gcc-11.1.0/gcc/ada/libgnarl/s-vxwext__vthreads.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-vxwext__vthreads.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-vxwext__vthreads.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-vxwork__aarch64.ads gcc-11.1.0/gcc/ada/libgnarl/s-vxwork__aarch64.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-vxwork__aarch64.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-vxwork__aarch64.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software;  you can redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software;  you can redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-vxwork__arm.ads gcc-11.1.0/gcc/ada/libgnarl/s-vxwork__arm.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-vxwork__arm.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-vxwork__arm.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software;  you can redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software;  you can redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-vxwork__ppc.ads gcc-11.1.0/gcc/ada/libgnarl/s-vxwork__ppc.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-vxwork__ppc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-vxwork__ppc.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software;  you can redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software;  you can redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/s-vxwork__x86.ads gcc-11.1.0/gcc/ada/libgnarl/s-vxwork__x86.ads
*** gcc-10.3.0/gcc/ada/libgnarl/s-vxwork__x86.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/s-vxwork__x86.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software;  you can  redistribute it and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software;  you can  redistribute it and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnarl/thread.c gcc-11.1.0/gcc/ada/libgnarl/thread.c
*** gcc-10.3.0/gcc/ada/libgnarl/thread.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnarl/thread.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 2011-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 2011-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-assert.adb gcc-11.1.0/gcc/ada/libgnat/a-assert.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-assert.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-assert.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-assert.ads gcc-11.1.0/gcc/ada/libgnat/a-assert.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-assert.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-assert.ads	Tue Apr 27 10:00:12 2021
***************
*** 4,10 ****
  --                                                                          --
  --                       A D A . A S S E R T I O N S                        --
  --                                                                          --
! --            Copyright (C) 2015-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
--- 4,10 ----
  --                                                                          --
  --                       A D A . A S S E R T I O N S                        --
  --                                                                          --
! --            Copyright (C) 2015-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-btgbso.adb gcc-11.1.0/gcc/ada/libgnat/a-btgbso.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-btgbso.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-btgbso.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-btgbso.ads gcc-11.1.0/gcc/ada/libgnat/a-btgbso.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-btgbso.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-btgbso.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-calari.adb gcc-11.1.0/gcc/ada/libgnat/a-calari.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-calari.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-calari.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2006-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2006-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-calari.ads gcc-11.1.0/gcc/ada/libgnat/a-calari.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-calari.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-calari.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2005-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT.  In accordance with the copyright of that document, you can freely --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2005-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT.  In accordance with the copyright of that document, you can freely --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-calcon.adb gcc-11.1.0/gcc/ada/libgnat/a-calcon.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-calcon.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-calcon.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --        Copyright (C) 2008-2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --        Copyright (C) 2008-2020, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,36 ****
  ------------------------------------------------------------------------------
  
  with Interfaces.C;            use Interfaces.C;
- with Interfaces.C.Extensions; use Interfaces.C.Extensions;
  
  package body Ada.Calendar.Conversions is
  
--- 30,35 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-calcon.ads gcc-11.1.0/gcc/ada/libgnat/a-calcon.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-calcon.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-calcon.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2008-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2008-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,39 ****
  --  time models - Time, Duration, struct tm and struct timespec.
  
  with Interfaces.C;
- with Interfaces.C.Extensions;
  
  package Ada.Calendar.Conversions is
  
--- 33,38 ----
*************** package Ada.Calendar.Conversions is
*** 112,118 ****
     --  fit into a Time value.
  
     function To_Unix_Nano_Time
!      (Ada_Time : Time) return Interfaces.C.Extensions.long_long;
     --  Convert a time value represented as number of time units since the Ada
     --  implementation-defined Epoch to a value relative to the Unix Epoch. The
     --  units of the result are nanoseconds. Raises Time_Error if the result
--- 111,117 ----
     --  fit into a Time value.
  
     function To_Unix_Nano_Time
!      (Ada_Time : Time) return Interfaces.C.long_long;
     --  Convert a time value represented as number of time units since the Ada
     --  implementation-defined Epoch to a value relative to the Unix Epoch. The
     --  units of the result are nanoseconds. Raises Time_Error if the result
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-caldel.adb gcc-11.1.0/gcc/ada/libgnat/a-caldel.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-caldel.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-caldel.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** begin
*** 103,108 ****
--- 103,110 ----
     --  this soft link, or this will be overridden during the elaboration of
     --  System.Tasking.Initialization
  
+    pragma Annotate (CodePeer, Modified, SSL.Timed_Delay);
+ 
     if SSL.Timed_Delay = null then
        SSL.Timed_Delay := Timed_Delay_NT'Access;
     end if;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-caldel.ads gcc-11.1.0/gcc/ada/libgnat/a-caldel.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-caldel.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-caldel.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-calend.adb gcc-11.1.0/gcc/ada/libgnat/a-calend.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-calend.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-calend.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 167,175 ****
     Secs_In_Non_Leap_Year : constant := 365 * Secs_In_Day;
     Nanos_In_Four_Years   : constant := Secs_In_Four_Years * Nano;
  
!    --  Lower and upper bound of Ada time. The zero (0) value of type Time is
!    --  positioned at year 2150. Note that the lower and upper bound account
!    --  for the non-leap centennial years.
  
     Ada_Low  : constant Time_Rep := -(61 * 366 + 188 * 365) * Nanos_In_Day;
     Ada_High : constant Time_Rep :=  (60 * 366 + 190 * 365) * Nanos_In_Day;
--- 167,175 ----
     Secs_In_Non_Leap_Year : constant := 365 * Secs_In_Day;
     Nanos_In_Four_Years   : constant := Secs_In_Four_Years * Nano;
  
!    --  Lower and upper bound of Ada time. Note that the lower and upper bound
!    --  account for the non-leap centennial years. See "Implementation of Time"
!    --  in the spec for what the zero value represents.
  
     Ada_Low  : constant Time_Rep := -(61 * 366 + 188 * 365) * Nanos_In_Day;
     Ada_High : constant Time_Rep :=  (60 * 366 + 190 * 365) * Nanos_In_Day;
*************** is
*** 435,452 ****
        if End_T < Leap_Second_Times (1) then
           Elapsed_Leaps := 0;
           Next_Leap     := Leap_Second_Times (1);
-          return;
  
        elsif Start_T > Leap_Second_Times (Leap_Seconds_Count) then
           Elapsed_Leaps := 0;
           Next_Leap     := End_Of_Time;
-          return;
-       end if;
  
!       --  Perform the calculations only if the start date is within the leap
!       --  second occurrences table.
! 
!       if Start_T <= Leap_Second_Times (Leap_Seconds_Count) then
  
           --    1    2                  N - 1   N
           --  +----+----+--  . . .  --+-------+---+
--- 435,448 ----
        if End_T < Leap_Second_Times (1) then
           Elapsed_Leaps := 0;
           Next_Leap     := Leap_Second_Times (1);
  
        elsif Start_T > Leap_Second_Times (Leap_Seconds_Count) then
           Elapsed_Leaps := 0;
           Next_Leap     := End_Of_Time;
  
!       else
!          --  Perform the calculations only if the start date is within the leap
!          --  second occurrences table.
  
           --    1    2                  N - 1   N
           --  +----+----+--  . . .  --+-------+---+
*************** is
*** 480,488 ****
           end if;
  
           Elapsed_Leaps := End_Index - Start_Index;
- 
-       else
-          Elapsed_Leaps := 0;
        end if;
     end Cumulative_Leap_Seconds;
  
--- 476,481 ----
*************** is
*** 763,768 ****
--- 756,762 ----
          (Secs_T'Unchecked_Access,
           Flag'Unchecked_Access,
           Offset'Unchecked_Access);
+       pragma Annotate (CodePeer, Modified, Offset);
  
        return Long_Integer (Offset);
     end UTC_Time_Offset;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-calend.ads gcc-11.1.0/gcc/ada/libgnat/a-calend.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-calend.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-calend.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 157,172 ****
     -- Implementation of Time --
     ----------------------------
  
!    --  Time is represented as a signed 64 bit integer count of nanoseconds
!    --  since the start of Ada time (1901-01-01 00:00:00.0 UTC). Time values
!    --  produced by Time_Of are internally normalized to UTC regardless of their
!    --  local time zone. This representation ensures correct handling of leap
!    --  seconds as well as performing arithmetic. In Ada 95, Split and Time_Of
!    --  will treat a time value as being in the local time zone, in Ada 2005,
!    --  Split and Time_Of will treat a time value as being in the designated
!    --  time zone by the formal parameter or in UTC by default. The size of the
!    --  type is large enough to cover the Ada 2005 range of time (1901-01-01
!    --  00:00:00.0 UTC - 2399-12-31-23:59:59.999999999 UTC).
  
     ------------------
     -- Leap Seconds --
--- 157,176 ----
     -- Implementation of Time --
     ----------------------------
  
!    --  Time is represented as a signed 64 bit signed integer count of
!    --  nanoseconds since the "epoch" 2150-01-01 00:00:00 UTC. Thus a value of 0
!    --  represents the epoch.  As of this writing, the epoch is in the future,
!    --  so Time values returned by Clock will be negative.
!    --
!    --  Time values produced by Time_Of are internally normalized to UTC
!    --  regardless of their local time zone. This representation ensures correct
!    --  handling of leap seconds as well as performing arithmetic. In Ada 95,
!    --  Split and Time_Of will treat a time value as being in the local time
!    --  zone, in Ada 2005, Split and Time_Of will treat a time value as being in
!    --  the designated time zone by the formal parameter or in UTC by
!    --  default. The size of the type is large enough to cover the Ada
!    --  range of time (1901-01-01T00:00:00.0 UTC - 2399-12-31T23:59:59.999999999
!    --  UTC).
  
     ------------------
     -- Leap Seconds --
*************** private
*** 234,241 ****
  
     function Epoch_Offset return Time_Rep;
     pragma Inline (Epoch_Offset);
!    --  Return the difference between 2150-1-1 UTC and 1970-1-1 UTC expressed in
!    --  nanoseconds. Note that year 2100 is non-leap.
  
     Days_In_Month : constant array (Month_Number) of Day_Number :=
                       (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
--- 238,245 ----
  
     function Epoch_Offset return Time_Rep;
     pragma Inline (Epoch_Offset);
!    --  Return the difference between our epoch and 1970-1-1 UTC (the Unix
!    --  epoch) expressed in nanoseconds. Note that year 2100 is non-leap.
  
     Days_In_Month : constant array (Month_Number) of Day_Number :=
                       (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-calfor.adb gcc-11.1.0/gcc/ada/libgnat/a-calfor.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-calfor.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-calfor.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2006-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2006-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-calfor.ads gcc-11.1.0/gcc/ada/libgnat/a-calfor.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-calfor.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-calfor.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2005-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT.  In accordance with the copyright of that document, you can freely --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2005-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT.  In accordance with the copyright of that document, you can freely --
*************** package Ada.Calendar.Formatting is
*** 206,211 ****
--- 206,219 ----
     --  prefixed with a minus sign. If abs Elapsed_Time represents 100 hours or
     --  more, Time_Error is raised.
  
+    function Local_Image
+      (Date                  : Time;
+       Include_Time_Fraction : Boolean := False) return String
+    is (Image (Date,
+               Include_Time_Fraction,
+               Time_Zones.Local_Time_Offset (Date)));
+    --  Returns a string form of Date relative to the local time offset.
+ 
     function Value (Elapsed_Time : String) return Duration;
     --  Returns a Duration value for the image given as Elapsed_Time.
     --  Constraint_Error is raised if the string is not formatted as described
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-catizo.adb gcc-11.1.0/gcc/ada/libgnat/a-catizo.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-catizo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-catizo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2009-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2009-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Calendar.Time_Zones is
*** 38,48 ****
     --  All operations in this package are target and time representation
     --  independent, thus only one source file is needed for multiple targets.
  
!    ---------------------
!    -- UTC_Time_Offset --
!    ---------------------
  
!    function UTC_Time_Offset (Date : Time := Clock) return Time_Offset is
        Offset_L : constant Long_Integer :=
          Time_Zones_Operations.UTC_Time_Offset (Date);
        Offset   : Time_Offset;
--- 38,48 ----
     --  All operations in this package are target and time representation
     --  independent, thus only one source file is needed for multiple targets.
  
!    -----------------------
!    -- Local_Time_Offset --
!    -----------------------
  
!    function Local_Time_Offset (Date : Time := Clock) return Time_Offset is
        Offset_L : constant Long_Integer :=
          Time_Zones_Operations.UTC_Time_Offset (Date);
        Offset   : Time_Offset;
*************** package body Ada.Calendar.Time_Zones is
*** 64,69 ****
        end if;
  
        return Offset;
!    end UTC_Time_Offset;
  
  end Ada.Calendar.Time_Zones;
--- 64,69 ----
        end if;
  
        return Offset;
!    end Local_Time_Offset;
  
  end Ada.Calendar.Time_Zones;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-catizo.ads gcc-11.1.0/gcc/ada/libgnat/a-catizo.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-catizo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-catizo.ads	Tue Apr 27 10:00:12 2021
*************** package Ada.Calendar.Time_Zones is
*** 21,30 ****
     --  Time zone manipulation
  
     type Time_Offset is range -(28 * 60) .. 28 * 60;
  
     Unknown_Zone_Error : exception;
  
!    function UTC_Time_Offset (Date : Time := Clock) return Time_Offset;
     --  Returns (in minutes), the difference between the implementation-defined
     --  time zone of Calendar, and UTC time, at the time Date. If the time zone
     --  of the Calendar implementation is unknown, raises Unknown_Zone_Error.
--- 21,33 ----
     --  Time zone manipulation
  
     type Time_Offset is range -(28 * 60) .. 28 * 60;
+    --  Offset in minutes
  
     Unknown_Zone_Error : exception;
  
!    function Local_Time_Offset (Date : Time := Clock) return Time_Offset;
!    function UTC_Time_Offset (Date : Time := Clock) return Time_Offset
!      renames Local_Time_Offset;
     --  Returns (in minutes), the difference between the implementation-defined
     --  time zone of Calendar, and UTC time, at the time Date. If the time zone
     --  of the Calendar implementation is unknown, raises Unknown_Zone_Error.
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cbdlli.adb gcc-11.1.0/gcc/ada/libgnat/a-cbdlli.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cbdlli.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cbdlli.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 28,35 ****
  ------------------------------------------------------------------------------
  
  with System; use type System.Address;
  
! package body Ada.Containers.Bounded_Doubly_Linked_Lists is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 28,38 ----
  ------------------------------------------------------------------------------
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Bounded_Doubly_Linked_Lists with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Bounded_Doub
*** 196,207 ****
     procedure Append
       (Container : in out List;
        New_Item  : Element_Type;
!       Count     : Count_Type := 1)
     is
     begin
        Insert (Container, No_Element, New_Item, Count);
     end Append;
  
     ------------
     -- Assign --
     ------------
--- 199,218 ----
     procedure Append
       (Container : in out List;
        New_Item  : Element_Type;
!       Count     : Count_Type)
     is
     begin
        Insert (Container, No_Element, New_Item, Count);
     end Append;
  
+    procedure Append
+      (Container : in out List;
+       New_Item  : Element_Type)
+    is
+    begin
+       Insert (Container, No_Element, New_Item, 1);
+    end Append;
+ 
     ------------
     -- Assign --
     ------------
*************** package body Ada.Containers.Bounded_Doub
*** 358,363 ****
--- 369,376 ----
        X : Count_Type;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Position.Node = 0 then
           raise Constraint_Error with
             "Position cursor has no element";
*************** package body Ada.Containers.Bounded_Doub
*** 386,393 ****
           return;
        end if;
  
-       TC_Check (Container.TC);
- 
        for Index in 1 .. Count loop
           pragma Assert (Container.Length >= 2);
  
--- 399,404 ----
*************** package body Ada.Containers.Bounded_Doub
*** 427,432 ****
--- 438,445 ----
        X : Count_Type;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Count >= Container.Length then
           Clear (Container);
           return;
*************** package body Ada.Containers.Bounded_Doub
*** 436,443 ****
           return;
        end if;
  
-       TC_Check (Container.TC);
- 
        for J in 1 .. Count loop
           X := Container.First;
           pragma Assert (N (N (X).Next).Prev = Container.First);
--- 449,454 ----
*************** package body Ada.Containers.Bounded_Doub
*** 463,468 ****
--- 474,481 ----
        X : Count_Type;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Count >= Container.Length then
           Clear (Container);
           return;
*************** package body Ada.Containers.Bounded_Doub
*** 472,479 ****
           return;
        end if;
  
-       TC_Check (Container.TC);
- 
        for J in 1 .. Count loop
           X := Container.Last;
           pragma Assert (N (N (X).Prev).Next = Container.Last);
--- 485,490 ----
*************** package body Ada.Containers.Bounded_Doub
*** 503,508 ****
--- 514,530 ----
        return Position.Container.Nodes (Position.Node).Element;
     end Element;
  
+    -----------
+    -- Empty --
+    -----------
+ 
+    function Empty (Capacity : Count_Type := 10) return List is
+    begin
+       return Result : List (Capacity) do
+          null;
+       end return;
+    end Empty;
+ 
     --------------
     -- Finalize --
     --------------
*************** package body Ada.Containers.Bounded_Doub
*** 759,764 ****
--- 781,789 ----
           Source : in out List)
        is
        begin
+          TC_Check (Target.TC);
+          TC_Check (Source.TC);
+ 
           --  The semantics of Merge changed slightly per AI05-0021. It was
           --  originally the case that if Target and Source denoted the same
           --  container object, then the GNAT implementation of Merge did
*************** package body Ada.Containers.Bounded_Doub
*** 786,794 ****
              raise Capacity_Error with "new length exceeds target capacity";
           end if;
  
-          TC_Check (Target.TC);
-          TC_Check (Source.TC);
- 
           --  Per AI05-0022, the container implementation is required to detect
           --  element tampering by a generic actual subprogram.
  
--- 811,816 ----
*************** package body Ada.Containers.Bounded_Doub
*** 964,969 ****
--- 986,993 ----
        New_Node   : Count_Type;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Before.Container /= null then
           if Checks and then Before.Container /= Container'Unrestricted_Access
           then
*************** package body Ada.Containers.Bounded_Doub
*** 983,990 ****
           raise Capacity_Error with "capacity exceeded";
        end if;
  
-       TC_Check (Container.TC);
- 
        Allocate (Container, New_Item, New_Node);
        First_Node := New_Node;
        Insert_Internal (Container, Before.Node, New_Node);
--- 1007,1012 ----
*************** package body Ada.Containers.Bounded_Doub
*** 1261,1266 ****
--- 1283,1290 ----
        X : Count_Type;
  
     begin
+       TC_Check (Source.TC);
+ 
        if Target'Address = Source'Address then
           return;
        end if;
*************** package body Ada.Containers.Bounded_Doub
*** 1269,1276 ****
           raise Capacity_Error with "Source length exceeds Target capacity";
        end if;
  
-       TC_Check (Source.TC);
- 
        --  Clear target, note that this checks busy bits of Target
  
        Clear (Target);
--- 1293,1298 ----
*************** package body Ada.Containers.Bounded_Doub
*** 1477,1482 ****
--- 1499,1529 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : List)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+    begin
+       Array_Before (S);
+ 
+       for X of V loop
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Element_Type'Put_Image (S, X);
+       end loop;
+ 
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Bounded_Doub
*** 1579,1584 ****
--- 1626,1633 ----
        New_Item  : Element_Type)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then Position.Container = null then
           raise Constraint_Error with "Position cursor has no element";
        end if;
*************** package body Ada.Containers.Bounded_Doub
*** 1588,1595 ****
             "Position cursor designates wrong container";
        end if;
  
-       TE_Check (Container.TC);
- 
        pragma Assert (Vet (Position), "bad cursor in Replace_Element");
  
        Container.Nodes (Position.Node).Element := New_Item;
--- 1637,1642 ----
*************** package body Ada.Containers.Bounded_Doub
*** 1751,1756 ****
--- 1798,1806 ----
        Source : in out List)
     is
     begin
+       TC_Check (Target.TC);
+       TC_Check (Source.TC);
+ 
        if Before.Container /= null then
           if Checks and then Before.Container /= Target'Unrestricted_Access then
              raise Program_Error with
*************** package body Ada.Containers.Bounded_Doub
*** 1772,1780 ****
           raise Capacity_Error with "new length exceeds target capacity";
        end if;
  
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
        Splice_Internal (Target, Before.Node, Source);
     end Splice;
  
--- 1822,1827 ----
*************** package body Ada.Containers.Bounded_Doub
*** 1786,1791 ****
--- 1833,1840 ----
        N : Node_Array renames Container.Nodes;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Before.Container /= null then
           if Checks and then Before.Container /= Container'Unchecked_Access then
              raise Program_Error with
*************** package body Ada.Containers.Bounded_Doub
*** 1815,1822 ****
  
        pragma Assert (Container.Length >= 2);
  
-       TC_Check (Container.TC);
- 
        if Before.Node = 0 then
           pragma Assert (Position.Node /= Container.Last);
  
--- 1864,1869 ----
*************** package body Ada.Containers.Bounded_Doub
*** 1894,1899 ****
--- 1941,1949 ----
           return;
        end if;
  
+       TC_Check (Target.TC);
+       TC_Check (Source.TC);
+ 
        if Before.Container /= null then
           if Checks and then Before.Container /= Target'Unrestricted_Access then
              raise Program_Error with
*************** package body Ada.Containers.Bounded_Doub
*** 1918,1926 ****
           raise Capacity_Error with "Target is full";
        end if;
  
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
        Splice_Internal
          (Target  => Target,
           Before  => Before.Node,
--- 1968,1973 ----
*************** package body Ada.Containers.Bounded_Doub
*** 2063,2068 ****
--- 2110,2117 ----
        I, J      : Cursor)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then I.Node = 0 then
           raise Constraint_Error with "I cursor has no element";
        end if;
*************** package body Ada.Containers.Bounded_Doub
*** 2083,2090 ****
           return;
        end if;
  
-       TE_Check (Container.TC);
- 
        pragma Assert (Vet (I), "bad I cursor in Swap");
        pragma Assert (Vet (J), "bad J cursor in Swap");
  
--- 2132,2137 ----
*************** package body Ada.Containers.Bounded_Doub
*** 2109,2114 ****
--- 2156,2163 ----
        I, J      : Cursor)
     is
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then I.Node = 0 then
           raise Constraint_Error with "I cursor has no element";
        end if;
*************** package body Ada.Containers.Bounded_Doub
*** 2129,2136 ****
           return;
        end if;
  
-       TC_Check (Container.TC);
- 
        pragma Assert (Vet (I), "bad I cursor in Swap_Links");
        pragma Assert (Vet (J), "bad J cursor in Swap_Links");
  
--- 2178,2183 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cbdlli.ads gcc-11.1.0/gcc/ada/libgnat/a-cbdlli.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cbdlli.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cbdlli.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Iterator_Interfaces;
*** 36,41 ****
--- 36,42 ----
  with Ada.Containers.Helpers;
  private with Ada.Streams;
  private with Ada.Finalization;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Element_Type is private;
*************** generic
*** 43,49 ****
     with function "=" (Left, Right : Element_Type)
        return Boolean is <>;
  
! package Ada.Containers.Bounded_Doubly_Linked_Lists is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Pure;
     pragma Remote_Types;
--- 44,52 ----
     with function "=" (Left, Right : Element_Type)
        return Boolean is <>;
  
! package Ada.Containers.Bounded_Doubly_Linked_Lists with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Pure;
     pragma Remote_Types;
*************** package Ada.Containers.Bounded_Doubly_Li
*** 52,59 ****
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type;
! 
     pragma Preelaborable_Initialization (List);
  
     type Cursor is private;
--- 55,63 ----
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type,
!       Aggregate         => (Empty        => Empty,
!                             Add_Unnamed  => Append);
     pragma Preelaborable_Initialization (List);
  
     type Cursor is private;
*************** package Ada.Containers.Bounded_Doubly_Li
*** 63,68 ****
--- 67,74 ----
  
     No_Element : constant Cursor;
  
+    function Empty (Capacity : Count_Type := 10) return List;
+ 
     function Has_Element (Position : Cursor) return Boolean;
  
     package List_Iterator_Interfaces is new
*************** package Ada.Containers.Bounded_Doubly_Li
*** 145,151 ****
     procedure Append
       (Container : in out List;
        New_Item  : Element_Type;
!       Count     : Count_Type := 1);
  
     procedure Delete
       (Container : in out List;
--- 151,161 ----
     procedure Append
       (Container : in out List;
        New_Item  : Element_Type;
!       Count     : Count_Type);
! 
!    procedure Append
!      (Container : in out List;
!       New_Item  : Element_Type);
  
     procedure Delete
       (Container : in out List;
*************** private
*** 266,278 ****
     type Node_Array is array (Count_Type range <>) of Node_Type;
  
     type List (Capacity : Count_Type) is tagged record
!       Nodes  : Node_Array (1 .. Capacity) := (others => <>);
        Free   : Count_Type'Base := -1;
        First  : Count_Type := 0;
        Last   : Count_Type := 0;
        Length : Count_Type := 0;
        TC     : aliased Tamper_Counts;
!    end record;
  
     procedure Read
       (Stream : not null access Root_Stream_Type'Class;
--- 276,291 ----
     type Node_Array is array (Count_Type range <>) of Node_Type;
  
     type List (Capacity : Count_Type) is tagged record
!       Nodes  : Node_Array (1 .. Capacity);
        Free   : Count_Type'Base := -1;
        First  : Count_Type := 0;
        Last   : Count_Type := 0;
        Length : Count_Type := 0;
        TC     : aliased Tamper_Counts;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : List);
  
     procedure Read
       (Stream : not null access Root_Stream_Type'Class;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cbhama.adb gcc-11.1.0/gcc/ada/libgnat/a-cbhama.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cbhama.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cbhama.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Containers.Helpers; use Ada.Con
*** 38,45 ****
  with Ada.Containers.Prime_Numbers; use Ada.Containers.Prime_Numbers;
  
  with System; use type System.Address;
  
! package body Ada.Containers.Bounded_Hashed_Maps is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 38,48 ----
  with Ada.Containers.Prime_Numbers; use Ada.Containers.Prime_Numbers;
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Bounded_Hashed_Maps with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Bounded_Hash
*** 311,316 ****
--- 314,321 ----
  
     procedure Delete (Container : in out Map; Position : in out Cursor) is
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Position.Node = 0 then
           raise Constraint_Error with
             "Position cursor of Delete equals No_Element";
*************** package body Ada.Containers.Bounded_Hash
*** 322,329 ****
             "Position cursor of Delete designates wrong map";
        end if;
  
-       TC_Check (Container.TC);
- 
        pragma Assert (Vet (Position), "bad cursor in Delete");
  
        HT_Ops.Delete_Node_Sans_Free (Container, Position.Node);
--- 327,332 ----
*************** package body Ada.Containers.Bounded_Hash
*** 361,366 ****
--- 364,380 ----
        return Position.Container.Nodes (Position.Node).Element;
     end Element;
  
+    -----------
+    -- Empty --
+    -----------
+ 
+    function Empty (Capacity : Count_Type) return Map is
+    begin
+       return Result : Map (Capacity, 0) do
+          null;
+       end return;
+    end Empty;
+ 
     -------------------------
     -- Equivalent_Key_Node --
     -------------------------
*************** package body Ada.Containers.Bounded_Hash
*** 883,888 ****
--- 897,932 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Map)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+ 
+       procedure Put_Key_Value (Position : Cursor);
+       procedure Put_Key_Value (Position : Cursor) is
+       begin
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Key_Type'Put_Image (S, Key (Position));
+          Put_Arrow (S);
+          Element_Type'Put_Image (S, Element (Position));
+       end Put_Key_Value;
+ 
+    begin
+       Array_Before (S);
+       Iterate (V, Put_Key_Value'Access);
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Bounded_Hash
*** 1029,1041 ****
        Node : constant Count_Type := Key_Ops.Find (Container, Key);
  
     begin
        if Checks and then Node = 0 then
           raise Constraint_Error with
             "attempt to replace key not in map";
        end if;
  
-       TE_Check (Container.TC);
- 
        declare
           N : Node_Type renames Container.Nodes (Node);
        begin
--- 1073,1085 ----
        Node : constant Count_Type := Key_Ops.Find (Container, Key);
  
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then Node = 0 then
           raise Constraint_Error with
             "attempt to replace key not in map";
        end if;
  
        declare
           N : Node_Type renames Container.Nodes (Node);
        begin
*************** package body Ada.Containers.Bounded_Hash
*** 1054,1059 ****
--- 1098,1105 ----
        New_Item  : Element_Type)
     is
     begin
+       TE_Check (Position.Container.TC);
+ 
        if Checks and then Position.Node = 0 then
           raise Constraint_Error with
             "Position cursor of Replace_Element equals No_Element";
*************** package body Ada.Containers.Bounded_Hash
*** 1065,1072 ****
             "Position cursor of Replace_Element designates wrong map";
        end if;
  
-       TE_Check (Position.Container.TC);
- 
        pragma Assert (Vet (Position), "bad cursor in Replace_Element");
  
        Container.Nodes (Position.Node).Element := New_Item;
--- 1111,1116 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cbhama.ads gcc-11.1.0/gcc/ada/libgnat/a-cbhama.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cbhama.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cbhama.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Iterator_Interfaces;
*** 36,41 ****
--- 36,42 ----
  private with Ada.Containers.Hash_Tables;
  private with Ada.Streams;
  private with Ada.Finalization;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Key_Type is private;
*************** generic
*** 45,51 ****
     with function Equivalent_Keys (Left, Right : Key_Type) return Boolean;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Bounded_Hashed_Maps is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Pure;
     pragma Remote_Types;
--- 46,54 ----
     with function Equivalent_Keys (Left, Right : Key_Type) return Boolean;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Bounded_Hashed_Maps with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Pure;
     pragma Remote_Types;
*************** package Ada.Containers.Bounded_Hashed_Ma
*** 54,60 ****
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type;
  
     pragma Preelaborable_Initialization (Map);
  
--- 57,65 ----
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type,
!       Aggregate         => (Empty     => Empty,
!                             Add_Named => Insert);
  
     pragma Preelaborable_Initialization (Map);
  
*************** package Ada.Containers.Bounded_Hashed_Ma
*** 65,70 ****
--- 70,77 ----
     --  Map objects declared without an initialization expression are
     --  initialized to the value Empty_Map.
  
+    function Empty (Capacity : Count_Type) return Map;
+ 
     No_Element : constant Cursor;
     --  Cursor objects declared without an initialization expression are
     --  initialized to the value No_Element.
*************** private
*** 338,344 ****
       new Hash_Tables.Generic_Bounded_Hash_Table_Types (Node_Type);
  
     type Map (Capacity : Count_Type; Modulus : Hash_Type) is
!       new HT_Types.Hash_Table_Type (Capacity, Modulus) with null record;
  
     use HT_Types, HT_Types.Implementation;
     use Ada.Streams;
--- 345,355 ----
       new Hash_Tables.Generic_Bounded_Hash_Table_Types (Node_Type);
  
     type Map (Capacity : Count_Type; Modulus : Hash_Type) is
!       new HT_Types.Hash_Table_Type (Capacity, Modulus)
!       with null record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Map);
  
     use HT_Types, HT_Types.Implementation;
     use Ada.Streams;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cbhase.adb gcc-11.1.0/gcc/ada/libgnat/a-cbhase.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cbhase.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cbhase.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Containers.Helpers; use Ada.Con
*** 38,45 ****
  with Ada.Containers.Prime_Numbers; use Ada.Containers.Prime_Numbers;
  
  with System; use type System.Address;
  
! package body Ada.Containers.Bounded_Hashed_Sets is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 38,49 ----
  with Ada.Containers.Prime_Numbers; use Ada.Containers.Prime_Numbers;
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Bounded_Hashed_Sets with
!   SPARK_Mode => Off
! is
!    use Ada.Finalization;
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Bounded_Hash
*** 309,314 ****
--- 313,320 ----
        Position  : in out Cursor)
     is
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Position.Node = 0 then
           raise Constraint_Error with "Position cursor equals No_Element";
        end if;
*************** package body Ada.Containers.Bounded_Hash
*** 318,325 ****
           raise Program_Error with "Position cursor designates wrong set";
        end if;
  
-       TC_Check (Container.TC);
- 
        pragma Assert (Vet (Position), "bad cursor in Delete");
  
        HT_Ops.Delete_Node_Sans_Free (Container, Position.Node);
--- 324,329 ----
*************** package body Ada.Containers.Bounded_Hash
*** 452,457 ****
--- 456,472 ----
        end;
     end Element;
  
+    -----------
+    -- Empty --
+    -----------
+ 
+    function Empty (Capacity : Count_Type := 10) return Set is
+    begin
+       return Result : Set (Capacity, 0) do
+          Reserve_Capacity (Result, Capacity);
+       end return;
+    end Empty;
+ 
     ---------------------
     -- Equivalent_Sets --
     ---------------------
*************** package body Ada.Containers.Bounded_Hash
*** 1105,1110 ****
--- 1120,1150 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Set)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+    begin
+       Array_Before (S);
+ 
+       for X of V loop
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Element_Type'Put_Image (S, X);
+       end loop;
+ 
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Bounded_Hash
*** 1179,1191 ****
        Node : constant Count_Type := Element_Keys.Find (Container, New_Item);
  
     begin
        if Checks and then Node = 0 then
           raise Constraint_Error with
             "attempt to replace element not in set";
        end if;
  
-       TE_Check (Container.TC);
- 
        Container.Nodes (Node).Element := New_Item;
     end Replace;
  
--- 1219,1231 ----
        Node : constant Count_Type := Element_Keys.Find (Container, New_Item);
  
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then Node = 0 then
           raise Constraint_Error with
             "attempt to replace element not in set";
        end if;
  
        Container.Nodes (Node).Element := New_Item;
     end Replace;
  
*************** package body Ada.Containers.Bounded_Hash
*** 1743,1749 ****
        -- Read --
        ----------
  
!       procedure  Read
          (Stream : not null access Root_Stream_Type'Class;
           Item   : out Reference_Type)
        is
--- 1783,1789 ----
        -- Read --
        ----------
  
!       procedure Read
          (Stream : not null access Root_Stream_Type'Class;
           Item   : out Reference_Type)
        is
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cbhase.ads gcc-11.1.0/gcc/ada/libgnat/a-cbhase.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cbhase.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cbhase.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Iterator_Interfaces;
*** 36,42 ****
  private with Ada.Containers.Hash_Tables;
  with Ada.Containers.Helpers;
  private with Ada.Streams;
! private with Ada.Finalization; use Ada.Finalization;
  
  generic
     type Element_Type is private;
--- 36,43 ----
  private with Ada.Containers.Hash_Tables;
  with Ada.Containers.Helpers;
  private with Ada.Streams;
! private with Ada.Finalization;
! private with Ada.Strings.Text_Output;
  
  generic
     type Element_Type is private;
*************** generic
*** 48,54 ****
  
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Bounded_Hashed_Sets is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Pure;
     pragma Remote_Types;
--- 49,57 ----
  
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Bounded_Hashed_Sets with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Pure;
     pragma Remote_Types;
*************** package Ada.Containers.Bounded_Hashed_Se
*** 56,62 ****
     type Set (Capacity : Count_Type; Modulus : Hash_Type) is tagged private
       with Constant_Indexing => Constant_Reference,
            Default_Iterator  => Iterate,
!           Iterator_Element  => Element_Type;
  
     pragma Preelaborable_Initialization (Set);
  
--- 59,67 ----
     type Set (Capacity : Count_Type; Modulus : Hash_Type) is tagged private
       with Constant_Indexing => Constant_Reference,
            Default_Iterator  => Iterate,
!           Iterator_Element  => Element_Type,
!           Aggregate         => (Empty       => Empty,
!                                 Add_Unnamed => Include);
  
     pragma Preelaborable_Initialization (Set);
  
*************** package Ada.Containers.Bounded_Hashed_Se
*** 67,72 ****
--- 72,79 ----
     --  Set objects declared without an initialization expression are
     --  initialized to the value Empty_Set.
  
+    function Empty (Capacity : Count_Type := 10) return Set;
+ 
     No_Element : constant Cursor;
     --  Cursor objects declared without an initialization expression are
     --  initialized to the value No_Element.
*************** private
*** 496,502 ****
       new Hash_Tables.Generic_Bounded_Hash_Table_Types (Node_Type);
  
     type Set (Capacity : Count_Type; Modulus : Hash_Type) is
!      new HT_Types.Hash_Table_Type (Capacity, Modulus) with null record;
  
     use HT_Types, HT_Types.Implementation;
     use Ada.Streams;
--- 503,513 ----
       new Hash_Tables.Generic_Bounded_Hash_Table_Types (Node_Type);
  
     type Set (Capacity : Count_Type; Modulus : Hash_Type) is
!      new HT_Types.Hash_Table_Type (Capacity, Modulus)
!       with null record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Set);
  
     use HT_Types, HT_Types.Implementation;
     use Ada.Streams;
*************** private
*** 588,594 ****
  
     No_Element : constant Cursor := (Container => null, Node => 0);
  
!    type Iterator is new Limited_Controlled and
       Set_Iterator_Interfaces.Forward_Iterator with
     record
        Container : Set_Access;
--- 599,605 ----
  
     No_Element : constant Cursor := (Container => null, Node => 0);
  
!    type Iterator is new Ada.Finalization.Limited_Controlled and
       Set_Iterator_Interfaces.Forward_Iterator with
     record
        Container : Set_Access;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cbmutr.adb gcc-11.1.0/gcc/ada/libgnat/a-cbmutr.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cbmutr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cbmutr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2011-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2011-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,36 ****
  
  with Ada.Finalization;
  with System; use type System.Address;
  
! package body Ada.Containers.Bounded_Multiway_Trees is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 29,39 ----
  
  with Ada.Finalization;
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Bounded_Multiway_Trees with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Bounded_Mult
*** 366,371 ****
--- 369,376 ----
        First, Last : Count_Type;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Bounded_Mult
*** 383,390 ****
             with "requested count exceeds available storage";
        end if;
  
-       TC_Check (Container.TC);
- 
        if Container.Count = 0 then
           Initialize_Root (Container);
        end if;
--- 388,393 ----
*************** package body Ada.Containers.Bounded_Mult
*** 985,990 ****
--- 988,995 ----
        Count : Count_Type;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Bounded_Mult
*** 993,1000 ****
           raise Program_Error with "Parent cursor not in container";
        end if;
  
-       TC_Check (Container.TC);
- 
        if Container.Count = 0 then
           pragma Assert (Is_Root (Parent));
           return;
--- 998,1003 ----
*************** package body Ada.Containers.Bounded_Mult
*** 1024,1029 ****
--- 1027,1034 ----
        X : Count_Type;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Position = No_Element then
           raise Constraint_Error with "Position cursor has no element";
        end if;
*************** package body Ada.Containers.Bounded_Mult
*** 1041,1048 ****
           raise Constraint_Error with "Position cursor does not designate leaf";
        end if;
  
-       TC_Check (Container.TC);
- 
        X := Position.Node;
        Position := No_Element;
  
--- 1046,1051 ----
*************** package body Ada.Containers.Bounded_Mult
*** 1064,1069 ****
--- 1067,1074 ----
        Count : Count_Type;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Position = No_Element then
           raise Constraint_Error with "Position cursor has no element";
        end if;
*************** package body Ada.Containers.Bounded_Mult
*** 1077,1084 ****
           raise Program_Error with "Position cursor designates root";
        end if;
  
-       TC_Check (Container.TC);
- 
        X := Position.Node;
        Position := No_Element;
  
--- 1082,1087 ----
*************** package body Ada.Containers.Bounded_Mult
*** 1506,1511 ****
--- 1509,1516 ----
        Last  : Count_Type;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Bounded_Mult
*** 1537,1544 ****
             with "requested count exceeds available storage";
        end if;
  
-       TC_Check (Container.TC);
- 
        if Container.Count = 0 then
           Initialize_Root (Container);
        end if;
--- 1542,1547 ----
*************** package body Ada.Containers.Bounded_Mult
*** 1584,1589 ****
--- 1587,1594 ----
        --  OK to reference, see below
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Bounded_Mult
*** 1615,1622 ****
             with "requested count exceeds available storage";
        end if;
  
-       TC_Check (Container.TC);
- 
        if Container.Count = 0 then
           Initialize_Root (Container);
        end if;
--- 1620,1625 ----
*************** package body Ada.Containers.Bounded_Mult
*** 2181,2186 ****
--- 2184,2191 ----
        First, Last : Count_Type;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Bounded_Mult
*** 2198,2205 ****
             with "requested count exceeds available storage";
        end if;
  
-       TC_Check (Container.TC);
- 
        if Container.Count = 0 then
           Initialize_Root (Container);
        end if;
--- 2203,2208 ----
*************** package body Ada.Containers.Bounded_Mult
*** 2320,2325 ****
--- 2323,2371 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Tree)
+    is
+       use System.Put_Images;
+ 
+       procedure Rec (Position : Cursor);
+       --  Recursive routine operating on cursors
+ 
+       procedure Rec (Position : Cursor) is
+          First_Time : Boolean := True;
+       begin
+          Array_Before (S);
+ 
+          for X in Iterate_Children (V, Position) loop
+             if First_Time then
+                First_Time := False;
+             else
+                Array_Between (S);
+             end if;
+ 
+             Element_Type'Put_Image (S, Element (X));
+             if Child_Count (X) > 0 then
+                Simple_Array_Between (S);
+                Rec (X);
+             end if;
+          end loop;
+ 
+          Array_After (S);
+       end Rec;
+ 
+    begin
+       if First_Child (Root (V)) = No_Element then
+          Array_Before (S);
+          Array_After (S);
+       else
+          Rec (First_Child (Root (V)));
+       end if;
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Bounded_Mult
*** 2545,2550 ****
--- 2591,2598 ----
        New_Item  : Element_Type)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then Position = No_Element then
           raise Constraint_Error with "Position cursor has no element";
        end if;
*************** package body Ada.Containers.Bounded_Mult
*** 2558,2565 ****
           raise Program_Error with "Position cursor designates root";
        end if;
  
-       TE_Check (Container.TC);
- 
        Container.Elements (Position.Node) := New_Item;
     end Replace_Element;
  
--- 2606,2611 ----
*************** package body Ada.Containers.Bounded_Mult
*** 2627,2632 ****
--- 2673,2681 ----
        Source_Parent : Cursor)
     is
     begin
+       TC_Check (Target.TC);
+       TC_Check (Source.TC);
+ 
        if Checks and then Target_Parent = No_Element then
           raise Constraint_Error with "Target_Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Bounded_Mult
*** 2671,2678 ****
              return;
           end if;
  
-          TC_Check (Target.TC);
- 
           if Checks and then Is_Reachable (Container => Target,
                            From      => Target_Parent.Node,
                            To        => Source_Parent.Node)
--- 2720,2725 ----
*************** package body Ada.Containers.Bounded_Mult
*** 2690,2698 ****
           return;
        end if;
  
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
        if Target.Count = 0 then
           Initialize_Root (Target);
        end if;
--- 2737,2742 ----
*************** package body Ada.Containers.Bounded_Mult
*** 2712,2717 ****
--- 2756,2763 ----
        Source_Parent   : Cursor)
     is
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Target_Parent = No_Element then
           raise Constraint_Error with "Target_Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Bounded_Mult
*** 2755,2762 ****
  
        pragma Assert (Container.Count > 0);
  
-       TC_Check (Container.TC);
- 
        if Checks and then Is_Reachable (Container => Container,
                         From      => Target_Parent.Node,
                         To        => Source_Parent.Node)
--- 2801,2806 ----
*************** package body Ada.Containers.Bounded_Mult
*** 2911,2916 ****
--- 2955,2963 ----
        Position : in out Cursor)
     is
     begin
+       TC_Check (Target.TC);
+       TC_Check (Source.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Bounded_Mult
*** 2957,2964 ****
              end if;
           end if;
  
-          TC_Check (Target.TC);
- 
           if Checks and then Is_Reachable (Container => Target,
                            From      => Parent.Node,
                            To        => Position.Node)
--- 3004,3009 ----
*************** package body Ada.Containers.Bounded_Mult
*** 2974,2982 ****
           return;
        end if;
  
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
        if Target.Count = 0 then
           Initialize_Root (Target);
        end if;
--- 3019,3024 ----
*************** package body Ada.Containers.Bounded_Mult
*** 2998,3003 ****
--- 3040,3047 ----
        Position  : Cursor)
     is
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Bounded_Mult
*** 3048,3055 ****
           end if;
        end if;
  
-       TC_Check (Container.TC);
- 
        if Checks and then Is_Reachable (Container => Container,
                         From      => Parent.Node,
                         To        => Position.Node)
--- 3092,3097 ----
*************** package body Ada.Containers.Bounded_Mult
*** 3176,3181 ****
--- 3218,3225 ----
        I, J      : Cursor)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then I = No_Element then
           raise Constraint_Error with "I cursor has no element";
        end if;
*************** package body Ada.Containers.Bounded_Mult
*** 3204,3211 ****
           raise Program_Error with "J cursor designates root";
        end if;
  
-       TE_Check (Container.TC);
- 
        declare
           EE : Element_Array renames Container.Elements;
           EI : constant Element_Type := EE (I.Node);
--- 3248,3253 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cbmutr.ads gcc-11.1.0/gcc/ada/libgnat/a-cbmutr.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cbmutr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cbmutr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2014-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2014-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Iterator_Interfaces;
*** 35,47 ****
  
  with Ada.Containers.Helpers;
  private with Ada.Streams;
  
  generic
     type Element_Type is private;
  
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Bounded_Multiway_Trees is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Pure;
     pragma Remote_Types;
--- 35,50 ----
  
  with Ada.Containers.Helpers;
  private with Ada.Streams;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Element_Type is private;
  
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Bounded_Multiway_Trees with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Pure;
     pragma Remote_Types;
*************** private
*** 300,311 ****
     type Element_Array is array (Count_Type range <>) of aliased Element_Type;
  
     type Tree (Capacity : Count_Type) is tagged record
!       Nodes    : Tree_Node_Array (0 .. Capacity) := (others => <>);
!       Elements : Element_Array (1 .. Capacity) := (others => <>);
        Free     : Count_Type'Base := No_Node;
        TC       : aliased Tamper_Counts;
        Count    : Count_Type := 0;
!    end record;
  
     procedure Write
       (Stream    : not null access Root_Stream_Type'Class;
--- 303,317 ----
     type Element_Array is array (Count_Type range <>) of aliased Element_Type;
  
     type Tree (Capacity : Count_Type) is tagged record
!       Nodes    : Tree_Node_Array (0 .. Capacity);
!       Elements : Element_Array (1 .. Capacity);
        Free     : Count_Type'Base := No_Node;
        TC       : aliased Tamper_Counts;
        Count    : Count_Type := 0;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Tree);
  
     procedure Write
       (Stream    : not null access Root_Stream_Type'Class;
*************** private
*** 327,333 ****
        Node      : Count_Type'Base := No_Node;
     end record;
  
!    procedure  Read
       (Stream   : not null access Root_Stream_Type'Class;
        Position : out Cursor);
     for Cursor'Read use Read;
--- 333,339 ----
        Node      : Count_Type'Base := No_Node;
     end record;
  
!    procedure Read
       (Stream   : not null access Root_Stream_Type'Class;
        Position : out Cursor);
     for Cursor'Read use Read;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cborma.adb gcc-11.1.0/gcc/ada/libgnat/a-cborma.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cborma.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cborma.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Elaborate_All
*** 38,45 ****
    (Ada.Containers.Red_Black_Trees.Generic_Bounded_Keys);
  
  with System; use type System.Address;
  
! package body Ada.Containers.Bounded_Ordered_Maps is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 38,48 ----
    (Ada.Containers.Red_Black_Trees.Generic_Bounded_Keys);
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Bounded_Ordered_Maps with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Bounded_Orde
*** 570,575 ****
--- 573,589 ----
        return Container.Nodes (Node).Element;
     end Element;
  
+    -----------
+    -- Empty --
+    -----------
+ 
+    function Empty (Capacity : Count_Type := 10) return Map is
+    begin
+       return Result : Map (Capacity) do
+          null;
+       end return;
+    end Empty;
+ 
     ---------------------
     -- Equivalent_Keys --
     ---------------------
*************** package body Ada.Containers.Bounded_Orde
*** 1287,1292 ****
--- 1301,1336 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Map)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+ 
+       procedure Put_Key_Value (Position : Cursor);
+       procedure Put_Key_Value (Position : Cursor) is
+       begin
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Key_Type'Put_Image (S, Key (Position));
+          Put_Arrow (S);
+          Element_Type'Put_Image (S, Element (Position));
+       end Put_Key_Value;
+ 
+    begin
+       Array_Before (S);
+       Iterate (V, Put_Key_Value'Access);
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Bounded_Orde
*** 1418,1429 ****
        Node : constant Count_Type := Key_Ops.Find (Container, Key);
  
     begin
        if Checks and then Node = 0 then
           raise Constraint_Error with "key not in map";
        end if;
  
-       TE_Check (Container.TC);
- 
        declare
           N : Node_Type renames Container.Nodes (Node);
  
--- 1462,1473 ----
        Node : constant Count_Type := Key_Ops.Find (Container, Key);
  
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then Node = 0 then
           raise Constraint_Error with "key not in map";
        end if;
  
        declare
           N : Node_Type renames Container.Nodes (Node);
  
*************** package body Ada.Containers.Bounded_Orde
*** 1443,1448 ****
--- 1487,1494 ----
        New_Item  : Element_Type)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then Position.Node = 0 then
           raise Constraint_Error with
             "Position cursor of Replace_Element equals No_Element";
*************** package body Ada.Containers.Bounded_Orde
*** 1454,1461 ****
             "Position cursor of Replace_Element designates wrong map";
        end if;
  
-       TE_Check (Container.TC);
- 
        pragma Assert (Vet (Container, Position.Node),
                       "Position cursor of Replace_Element is bad");
  
--- 1500,1505 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cborma.ads gcc-11.1.0/gcc/ada/libgnat/a-cborma.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cborma.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cborma.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Iterator_Interfaces;
*** 36,41 ****
--- 36,42 ----
  private with Ada.Containers.Red_Black_Trees;
  private with Ada.Streams;
  private with Ada.Finalization;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Key_Type is private;
*************** generic
*** 44,50 ****
     with function "<" (Left, Right : Key_Type) return Boolean is <>;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Bounded_Ordered_Maps is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Pure;
     pragma Remote_Types;
--- 45,53 ----
     with function "<" (Left, Right : Key_Type) return Boolean is <>;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Bounded_Ordered_Maps with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Pure;
     pragma Remote_Types;
*************** package Ada.Containers.Bounded_Ordered_M
*** 55,61 ****
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type;
  
     pragma Preelaborable_Initialization (Map);
  
--- 58,66 ----
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type,
!       Aggregate         => (Empty     => Empty,
!                             Add_Named => Insert);
  
     pragma Preelaborable_Initialization (Map);
  
*************** package Ada.Containers.Bounded_Ordered_M
*** 64,69 ****
--- 69,76 ----
  
     Empty_Map : constant Map;
  
+    function Empty (Capacity : Count_Type := 10) return Map;
+ 
     No_Element : constant Cursor;
  
     function Has_Element (Position : Cursor) return Boolean;
*************** private
*** 246,252 ****
       new Red_Black_Trees.Generic_Bounded_Tree_Types (Node_Type);
  
     type Map (Capacity : Count_Type) is
!      new Tree_Types.Tree_Type (Capacity) with null record;
  
     use Red_Black_Trees;
     use Tree_Types, Tree_Types.Implementation;
--- 253,263 ----
       new Red_Black_Trees.Generic_Bounded_Tree_Types (Node_Type);
  
     type Map (Capacity : Count_Type) is
!      new Tree_Types.Tree_Type (Capacity)
!       with null record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Map);
  
     use Red_Black_Trees;
     use Tree_Types, Tree_Types.Implementation;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cborse.adb gcc-11.1.0/gcc/ada/libgnat/a-cborse.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cborse.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cborse.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Elaborate_All
*** 41,48 ****
    (Ada.Containers.Red_Black_Trees.Generic_Bounded_Set_Operations);
  
  with System; use type System.Address;
  
! package body Ada.Containers.Bounded_Ordered_Sets is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 41,51 ----
    (Ada.Containers.Red_Black_Trees.Generic_Bounded_Set_Operations);
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Bounded_Ordered_Sets with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Bounded_Orde
*** 461,466 ****
--- 464,471 ----
  
     procedure Delete (Container : in out Set; Position : in out Cursor) is
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Position.Node = 0 then
           raise Constraint_Error with "Position cursor equals No_Element";
        end if;
*************** package body Ada.Containers.Bounded_Orde
*** 470,477 ****
           raise Program_Error with "Position cursor designates wrong set";
        end if;
  
-       TC_Check (Container.TC);
- 
        pragma Assert (Vet (Container, Position.Node),
                       "bad cursor in Delete");
  
--- 475,480 ----
*************** package body Ada.Containers.Bounded_Orde
*** 546,551 ****
--- 549,565 ----
        return Position.Container.Nodes (Position.Node).Element;
     end Element;
  
+    -----------
+    -- Empty --
+    -----------
+ 
+    function Empty (Capacity : Count_Type := 10) return Set is
+    begin
+       return Result : Set (Capacity) do
+          null;
+       end return;
+    end Empty;
+ 
     -------------------------
     -- Equivalent_Elements --
     -------------------------
*************** package body Ada.Containers.Bounded_Orde
*** 894,900 ****
        -- Read --
        ----------
  
!       procedure  Read
          (Stream : not null access Root_Stream_Type'Class;
           Item   : out Reference_Type)
        is
--- 908,914 ----
        -- Read --
        ----------
  
!       procedure Read
          (Stream : not null access Root_Stream_Type'Class;
           Item   : out Reference_Type)
        is
*************** package body Ada.Containers.Bounded_Orde
*** 933,939 ****
                            Control =>
                              (Controlled with
                                Container.TC'Unrestricted_Access,
!                               Container => Container'Access,
                                Pos       => Position,
                                Old_Key   => new Key_Type'(Key (Position))))
              do
--- 947,953 ----
                            Control =>
                              (Controlled with
                                Container.TC'Unrestricted_Access,
!                               Container => Container'Unchecked_Access,
                                Pos       => Position,
                                Old_Key   => new Key_Type'(Key (Position))))
              do
*************** package body Ada.Containers.Bounded_Orde
*** 961,967 ****
                            Control =>
                              (Controlled with
                                Container.TC'Unrestricted_Access,
!                               Container => Container'Access,
                                 Pos      => Find (Container, Key),
                                 Old_Key  => new Key_Type'(Key)))
              do
--- 975,981 ----
                            Control =>
                              (Controlled with
                                Container.TC'Unrestricted_Access,
!                               Container => Container'Unchecked_Access,
                                 Pos      => Find (Container, Key),
                                 Old_Key  => new Key_Type'(Key)))
              do
*************** package body Ada.Containers.Bounded_Orde
*** 1626,1631 ****
--- 1640,1670 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Set)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+    begin
+       Array_Before (S);
+ 
+       for X of V loop
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Element_Type'Put_Image (S, X);
+       end loop;
+ 
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Bounded_Orde
*** 1682,1694 ****
        Node : constant Count_Type := Element_Keys.Find (Container, New_Item);
  
     begin
        if Checks and then Node = 0 then
           raise Constraint_Error with
             "attempt to replace element not in set";
        end if;
  
-       TE_Check (Container.TC);
- 
        Container.Nodes (Node).Element := New_Item;
     end Replace;
  
--- 1721,1733 ----
        Node : constant Count_Type := Element_Keys.Find (Container, New_Item);
  
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then Node = 0 then
           raise Constraint_Error with
             "attempt to replace element not in set";
        end if;
  
        Container.Nodes (Node).Element := New_Item;
     end Replace;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cborse.ads gcc-11.1.0/gcc/ada/libgnat/a-cborse.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cborse.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cborse.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Containers.Helpers;
*** 37,42 ****
--- 37,43 ----
  private with Ada.Containers.Red_Black_Trees;
  private with Ada.Streams;
  private with Ada.Finalization;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Element_Type is private;
*************** generic
*** 44,50 ****
     with function "<" (Left, Right : Element_Type) return Boolean is <>;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Bounded_Ordered_Sets is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Pure;
     pragma Remote_Types;
--- 45,53 ----
     with function "<" (Left, Right : Element_Type) return Boolean is <>;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Bounded_Ordered_Sets with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Pure;
     pragma Remote_Types;
*************** package Ada.Containers.Bounded_Ordered_S
*** 54,60 ****
     type Set (Capacity : Count_Type) is tagged private
     with Constant_Indexing => Constant_Reference,
          Default_Iterator  => Iterate,
!         Iterator_Element  => Element_Type;
  
     pragma Preelaborable_Initialization (Set);
  
--- 57,65 ----
     type Set (Capacity : Count_Type) is tagged private
     with Constant_Indexing => Constant_Reference,
          Default_Iterator  => Iterate,
!         Iterator_Element  => Element_Type,
!         Aggregate         => (Empty       => Empty,
!                               Add_Unnamed => Include);
  
     pragma Preelaborable_Initialization (Set);
  
*************** package Ada.Containers.Bounded_Ordered_S
*** 63,68 ****
--- 68,75 ----
  
     Empty_Set : constant Set;
  
+    function Empty (Capacity : Count_Type := 10) return Set;
+ 
     No_Element : constant Cursor;
  
     function Has_Element (Position : Cursor) return Boolean;
*************** private
*** 334,340 ****
       new Red_Black_Trees.Generic_Bounded_Tree_Types (Node_Type);
  
     type Set (Capacity : Count_Type) is
!      new Tree_Types.Tree_Type (Capacity) with null record;
  
     use Tree_Types, Tree_Types.Implementation;
     use Ada.Finalization;
--- 341,351 ----
       new Red_Black_Trees.Generic_Bounded_Tree_Types (Node_Type);
  
     type Set (Capacity : Count_Type) is
!      new Tree_Types.Tree_Type (Capacity)
!       with null record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Set);
  
     use Tree_Types, Tree_Types.Implementation;
     use Ada.Finalization;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cbprqu.adb gcc-11.1.0/gcc/ada/libgnat/a-cbprqu.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cbprqu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cbprqu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 27,33 ****
  -- This unit was originally developed by Matthew J Heaney.                  --
  ------------------------------------------------------------------------------
  
! package body Ada.Containers.Bounded_Priority_Queues is
  
     package body Implementation is
  
--- 27,35 ----
  -- This unit was originally developed by Matthew J Heaney.                  --
  ------------------------------------------------------------------------------
  
! package body Ada.Containers.Bounded_Priority_Queues with
!   SPARK_Mode => Off
! is
  
     package body Implementation is
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cbprqu.ads gcc-11.1.0/gcc/ada/libgnat/a-cbprqu.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cbprqu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cbprqu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** generic
*** 51,57 ****
     Default_Capacity : Count_Type;
     Default_Ceiling  : System.Any_Priority := System.Priority'Last;
  
! package Ada.Containers.Bounded_Priority_Queues is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
  
--- 51,59 ----
     Default_Capacity : Count_Type;
     Default_Ceiling  : System.Any_Priority := System.Priority'Last;
  
! package Ada.Containers.Bounded_Priority_Queues with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cbsyqu.adb gcc-11.1.0/gcc/ada/libgnat/a-cbsyqu.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cbsyqu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cbsyqu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 27,33 ****
  -- This unit was originally developed by Matthew J Heaney.                  --
  ------------------------------------------------------------------------------
  
! package body Ada.Containers.Bounded_Synchronized_Queues is
  
     package body Implementation is
  
--- 27,35 ----
  -- This unit was originally developed by Matthew J Heaney.                  --
  ------------------------------------------------------------------------------
  
! package body Ada.Containers.Bounded_Synchronized_Queues with
!   SPARK_Mode => Off
! is
  
     package body Implementation is
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cbsyqu.ads gcc-11.1.0/gcc/ada/libgnat/a-cbsyqu.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cbsyqu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cbsyqu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** generic
*** 41,47 ****
     Default_Capacity : Count_Type;
     Default_Ceiling  : System.Any_Priority := System.Priority'Last;
  
! package Ada.Containers.Bounded_Synchronized_Queues is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
  
--- 41,49 ----
     Default_Capacity : Count_Type;
     Default_Ceiling  : System.Any_Priority := System.Priority'Last;
  
! package Ada.Containers.Bounded_Synchronized_Queues with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
  
*************** package Ada.Containers.Bounded_Synchroni
*** 69,74 ****
--- 71,84 ----
  
        --  Need proper heap data structure here ???
  
+       --  We suppress warnings here, which might otherwise be triggered
+       --  by the box initialization of the Elements array below. This
+       --  initialization is needed to preserve constraints, such as
+       --  discriminant values, that the actual for Element_Type might
+       --  carry.
+ 
+       pragma Warnings (Off);
+ 
        type Element_Array is
          array (Count_Type range <>) of Queue_Interfaces.Element_Type;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cdlili.adb gcc-11.1.0/gcc/ada/libgnat/a-cdlili.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cdlili.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cdlili.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,37 ****
  with Ada.Unchecked_Deallocation;
  
  with System; use type System.Address;
  
! package body Ada.Containers.Doubly_Linked_Lists is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 30,40 ----
  with Ada.Unchecked_Deallocation;
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Doubly_Linked_Lists with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Doubly_Linke
*** 155,166 ****
     procedure Append
       (Container : in out List;
        New_Item  : Element_Type;
!       Count     : Count_Type := 1)
     is
     begin
        Insert (Container, No_Element, New_Item, Count);
     end Append;
  
     ------------
     -- Assign --
     ------------
--- 158,177 ----
     procedure Append
       (Container : in out List;
        New_Item  : Element_Type;
!       Count     : Count_Type)
     is
     begin
        Insert (Container, No_Element, New_Item, Count);
     end Append;
  
+    procedure Append
+      (Container : in out List;
+       New_Item  : Element_Type)
+    is
+    begin
+       Insert (Container, No_Element, New_Item, 1);
+    end Append;
+ 
     ------------
     -- Assign --
     ------------
*************** package body Ada.Containers.Doubly_Linke
*** 295,300 ****
--- 306,313 ----
        X : Node_Access;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Position.Node = null then
           raise Constraint_Error with
             "Position cursor has no element";
*************** package body Ada.Containers.Doubly_Linke
*** 319,326 ****
           return;
        end if;
  
-       TC_Check (Container.TC);
- 
        for Index in 1 .. Count loop
           X := Position.Node;
           Container.Length := Container.Length - 1;
--- 332,337 ----
*************** package body Ada.Containers.Doubly_Linke
*** 604,609 ****
--- 615,623 ----
           Source : in out List)
        is
        begin
+          TC_Check (Target.TC);
+          TC_Check (Source.TC);
+ 
           --  The semantics of Merge changed slightly per AI05-0021. It was
           --  originally the case that if Target and Source denoted the same
           --  container object, then the GNAT implementation of Merge did
*************** package body Ada.Containers.Doubly_Linke
*** 626,634 ****
              raise Constraint_Error with "new length exceeds maximum";
           end if;
  
-          TC_Check (Target.TC);
-          TC_Check (Source.TC);
- 
           --  Per AI05-0022, the container implementation is required to detect
           --  element tampering by a generic actual subprogram.
  
--- 640,645 ----
*************** package body Ada.Containers.Doubly_Linke
*** 796,801 ****
--- 807,814 ----
        New_Node   : Node_Access;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Before.Container /= null then
           if Checks and then Before.Container /= Container'Unrestricted_Access
           then
*************** package body Ada.Containers.Doubly_Linke
*** 815,822 ****
           raise Constraint_Error with "new length exceeds maximum";
        end if;
  
-       TC_Check (Container.TC);
- 
        New_Node   := new Node_Type'(New_Item, null, null);
        First_Node := New_Node;
        Insert_Internal (Container, Before.Node, New_Node);
--- 828,833 ----
*************** package body Ada.Containers.Doubly_Linke
*** 851,856 ****
--- 862,869 ----
        New_Node   : Node_Access;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Before.Container /= null then
           if Checks and then Before.Container /= Container'Unrestricted_Access
           then
*************** package body Ada.Containers.Doubly_Linke
*** 870,877 ****
           raise Constraint_Error with "new length exceeds maximum";
        end if;
  
-       TC_Check (Container.TC);
- 
        New_Node   := new Node_Type;
        First_Node := New_Node;
        Insert_Internal (Container, Before.Node, New_Node);
--- 883,888 ----
*************** package body Ada.Containers.Doubly_Linke
*** 1253,1258 ****
--- 1264,1294 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : List)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+    begin
+       Array_Before (S);
+ 
+       for X of V loop
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Element_Type'Put_Image (S, X);
+       end loop;
+ 
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Doubly_Linke
*** 1372,1377 ****
--- 1408,1415 ----
        New_Item  : Element_Type)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then Position.Container = null then
           raise Constraint_Error with "Position cursor has no element";
        end if;
*************** package body Ada.Containers.Doubly_Linke
*** 1381,1388 ****
             "Position cursor designates wrong container";
        end if;
  
-       TE_Check (Container.TC);
- 
        pragma Assert (Vet (Position), "bad cursor in Replace_Element");
  
        Position.Node.Element := New_Item;
--- 1419,1424 ----
*************** package body Ada.Containers.Doubly_Linke
*** 1543,1548 ****
--- 1579,1587 ----
        Source : in out List)
     is
     begin
+       TC_Check (Target.TC);
+       TC_Check (Source.TC);
+ 
        if Before.Container /= null then
           if Checks and then Before.Container /= Target'Unrestricted_Access then
              raise Program_Error with
*************** package body Ada.Containers.Doubly_Linke
*** 1560,1568 ****
           raise Constraint_Error with "new length exceeds maximum";
        end if;
  
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
        Splice_Internal (Target, Before.Node, Source);
     end Splice;
  
--- 1599,1604 ----
*************** package body Ada.Containers.Doubly_Linke
*** 1572,1577 ****
--- 1608,1615 ----
        Position  : Cursor)
     is
     begin
+       TC_Check (Container.TC);
+ 
        if Before.Container /= null then
           if Checks and then Before.Container /= Container'Unchecked_Access then
              raise Program_Error with
*************** package body Ada.Containers.Doubly_Linke
*** 1601,1608 ****
  
        pragma Assert (Container.Length >= 2);
  
-       TC_Check (Container.TC);
- 
        if Before.Node = null then
           pragma Assert (Position.Node /= Container.Last);
  
--- 1639,1644 ----
*************** package body Ada.Containers.Doubly_Linke
*** 1678,1683 ****
--- 1714,1722 ----
           return;
        end if;
  
+       TC_Check (Target.TC);
+       TC_Check (Source.TC);
+ 
        if Before.Container /= null then
           if Checks and then Before.Container /= Target'Unrestricted_Access then
              raise Program_Error with
*************** package body Ada.Containers.Doubly_Linke
*** 1702,1710 ****
           raise Constraint_Error with "Target is full";
        end if;
  
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
        Splice_Internal (Target, Before.Node, Source, Position.Node);
        Position.Container := Target'Unchecked_Access;
     end Splice;
--- 1741,1746 ----
*************** package body Ada.Containers.Doubly_Linke
*** 1862,1867 ****
--- 1898,1905 ----
        I, J      : Cursor)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then I.Node = null then
           raise Constraint_Error with "I cursor has no element";
        end if;
*************** package body Ada.Containers.Doubly_Linke
*** 1882,1889 ****
           return;
        end if;
  
-       TE_Check (Container.TC);
- 
        pragma Assert (Vet (I), "bad I cursor in Swap");
        pragma Assert (Vet (J), "bad J cursor in Swap");
  
--- 1920,1925 ----
*************** package body Ada.Containers.Doubly_Linke
*** 1908,1913 ****
--- 1944,1951 ----
        I, J      : Cursor)
     is
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then I.Node = null then
           raise Constraint_Error with "I cursor has no element";
        end if;
*************** package body Ada.Containers.Doubly_Linke
*** 1928,1935 ****
           return;
        end if;
  
-       TC_Check (Container.TC);
- 
        pragma Assert (Vet (I), "bad I cursor in Swap_Links");
        pragma Assert (Vet (J), "bad J cursor in Swap_Links");
  
--- 1966,1971 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cdlili.ads gcc-11.1.0/gcc/ada/libgnat/a-cdlili.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cdlili.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cdlili.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Iterator_Interfaces;
*** 36,41 ****
--- 36,42 ----
  with Ada.Containers.Helpers;
  private with Ada.Finalization;
  private with Ada.Streams;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Element_Type is private;
*************** generic
*** 43,49 ****
     with function "=" (Left, Right : Element_Type)
        return Boolean is <>;
  
! package Ada.Containers.Doubly_Linked_Lists is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
--- 44,52 ----
     with function "=" (Left, Right : Element_Type)
        return Boolean is <>;
  
! package Ada.Containers.Doubly_Linked_Lists with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
*************** package Ada.Containers.Doubly_Linked_Lis
*** 53,59 ****
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type;
  
     pragma Preelaborable_Initialization (List);
  
--- 56,64 ----
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type,
!       Aggregate         => (Empty       => Empty,
!                             Add_Unnamed => Append);
  
     pragma Preelaborable_Initialization (List);
  
*************** package Ada.Containers.Doubly_Linked_Lis
*** 61,66 ****
--- 66,72 ----
     pragma Preelaborable_Initialization (Cursor);
  
     Empty_List : constant List;
+    function Empty return List;
  
     No_Element : constant Cursor;
  
*************** package Ada.Containers.Doubly_Linked_Lis
*** 148,154 ****
     procedure Append
       (Container : in out List;
        New_Item  : Element_Type;
!       Count     : Count_Type := 1);
  
     procedure Delete
       (Container : in out List;
--- 154,164 ----
     procedure Append
       (Container : in out List;
        New_Item  : Element_Type;
!       Count     : Count_Type);
! 
!    procedure Append
!      (Container : in out List;
!       New_Item  : Element_Type);
  
     procedure Delete
       (Container : in out List;
*************** private
*** 273,279 ****
          Last   : Node_Access := null;
          Length : Count_Type := 0;
          TC     : aliased Tamper_Counts;
!      end record;
  
     overriding procedure Adjust (Container : in out List);
  
--- 283,292 ----
          Last   : Node_Access := null;
          Length : Count_Type := 0;
          TC     : aliased Tamper_Counts;
!      end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : List);
  
     overriding procedure Adjust (Container : in out List);
  
*************** private
*** 379,384 ****
--- 392,398 ----
     --  Returns a pointer to the element designated by Position.
  
     Empty_List : constant List := (Controlled with others => <>);
+    function Empty return List is (Empty_List);
  
     No_Element : constant Cursor := Cursor'(null, null);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cfdlli.adb gcc-11.1.0/gcc/ada/libgnat/a-cfdlli.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cfdlli.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cfdlli.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cfdlli.ads gcc-11.1.0/gcc/ada/libgnat/a-cfdlli.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cfdlli.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cfdlli.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** is
*** 789,797 ****
                  Count => Count);
  
     procedure Delete (Container : in out List; Position : in out Cursor) with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
         Length (Container) = Length (Container)'Old - 1
  
           --  Position is set to No_Element
--- 789,798 ----
                  Count => Count);
  
     procedure Delete (Container : in out List; Position : in out Cursor) with
!      Global  => null,
!      Depends => (Container =>+ Position, Position => null),
!      Pre     => Has_Element (Container, Position),
!      Post    =>
         Length (Container) = Length (Container)'Old - 1
  
           --  Position is set to No_Element
*************** private
*** 1616,1622 ****
        Length : Count_Type := 0;
        First  : Count_Type := 0;
        Last   : Count_Type := 0;
!       Nodes  : Node_Array (1 .. Capacity) := (others => <>);
     end record;
  
     Empty_List : constant List := (0, others => <>);
--- 1617,1623 ----
        Length : Count_Type := 0;
        First  : Count_Type := 0;
        Last   : Count_Type := 0;
!       Nodes  : Node_Array (1 .. Capacity);
     end record;
  
     Empty_List : constant List := (0, others => <>);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cfhama.adb gcc-11.1.0/gcc/ada/libgnat/a-cfhama.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cfhama.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cfhama.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cfhama.ads gcc-11.1.0/gcc/ada/libgnat/a-cfhama.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cfhama.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cfhama.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** is
*** 669,677 ****
                  Find (Container, Key)'Old);
  
     procedure Delete (Container : in out Map; Position : in out Cursor) with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
         Position = No_Element
           and Length (Container) = Length (Container)'Old - 1
  
--- 669,678 ----
                  Find (Container, Key)'Old);
  
     procedure Delete (Container : in out Map; Position : in out Cursor) with
!      Global  => null,
!      Depends => (Container =>+ Position, Position => null),
!      Pre     => Has_Element (Container, Position),
!      Post    =>
         Position = No_Element
           and Length (Container) = Length (Container)'Old - 1
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cfhase.adb gcc-11.1.0/gcc/ada/libgnat/a-cfhase.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cfhase.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cfhase.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cfhase.ads gcc-11.1.0/gcc/ada/libgnat/a-cfhase.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cfhase.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cfhase.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** is
*** 801,809 ****
     --  already in the set.)
  
     procedure Delete (Container : in out Set; Position : in out Cursor) with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
         Position = No_Element
           and Length (Container) = Length (Container)'Old - 1
  
--- 801,810 ----
     --  already in the set.)
  
     procedure Delete (Container : in out Set; Position : in out Cursor) with
!      Global  => null,
!      Depends => (Container =>+ Position, Position => null),
!      Pre     => Has_Element (Container, Position),
!      Post    =>
         Position = No_Element
           and Length (Container) = Length (Container)'Old - 1
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cfinve.adb gcc-11.1.0/gcc/ada/libgnat/a-cfinve.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cfinve.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cfinve.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 40,46 ****
     --  When growing a container, multiply current capacity by this. Doubling
     --  leads to amortized linear-time copying.
  
!    type Int is range System.Min_Int .. System.Max_Int;
  
     procedure Free is
       new Ada.Unchecked_Deallocation (Elements_Array, Elements_Array_Ptr);
--- 40,46 ----
     --  When growing a container, multiply current capacity by this. Doubling
     --  leads to amortized linear-time copying.
  
!    subtype Int is Long_Long_Integer;
  
     procedure Free is
       new Ada.Unchecked_Deallocation (Elements_Array, Elements_Array_Ptr);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cfinve.ads gcc-11.1.0/gcc/ada/libgnat/a-cfinve.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cfinve.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cfinve.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2014-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2014-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cforma.adb gcc-11.1.0/gcc/ada/libgnat/a-cforma.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cforma.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cforma.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cforma.ads gcc-11.1.0/gcc/ada/libgnat/a-cforma.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cforma.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cforma.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** is
*** 733,741 ****
                  Cut   => Find (Keys (Container), Key)'Old);
  
     procedure Delete (Container : in out Map; Position : in out Cursor) with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
         Position = No_Element
           and Length (Container) = Length (Container)'Old - 1
  
--- 733,742 ----
                  Cut   => Find (Keys (Container), Key)'Old);
  
     procedure Delete (Container : in out Map; Position : in out Cursor) with
!      Global  => null,
!      Depends => (Container =>+ Position, Position => null),
!      Pre     => Has_Element (Container, Position),
!      Post    =>
         Position = No_Element
           and Length (Container) = Length (Container)'Old - 1
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cforse.adb gcc-11.1.0/gcc/ada/libgnat/a-cforse.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cforse.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cforse.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cforse.ads gcc-11.1.0/gcc/ada/libgnat/a-cforse.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cforse.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cforse.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** is
*** 858,866 ****
       (Container : in out Set;
        Position  : in out Cursor)
     with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
         Position = No_Element
           and Length (Container) = Length (Container)'Old - 1
  
--- 858,867 ----
       (Container : in out Set;
        Position  : in out Cursor)
     with
!      Global  => null,
!      Depends => (Container =>+ Position, Position => null),
!      Pre     => Has_Element (Container, Position),
!      Post    =>
         Position = No_Element
           and Length (Container) = Length (Container)'Old - 1
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cgaaso.adb gcc-11.1.0/gcc/ada/libgnat/a-cgaaso.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cgaaso.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cgaaso.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cgaaso.ads gcc-11.1.0/gcc/ada/libgnat/a-cgaaso.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cgaaso.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cgaaso.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cgarso.adb gcc-11.1.0/gcc/ada/libgnat/a-cgarso.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cgarso.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cgarso.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cgcaso.adb gcc-11.1.0/gcc/ada/libgnat/a-cgcaso.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cgcaso.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cgcaso.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,40 ****
  
  --  This algorithm was adapted from GNAT.Heap_Sort_G (see g-hesorg.ad[sb])
  
- with System;
- 
  procedure Ada.Containers.Generic_Constrained_Array_Sort
    (Container : in out Array_Type)
  is
!    type T is range System.Min_Int .. System.Max_Int;
  
     function To_Index (J : T) return Index_Type;
     pragma Inline (To_Index);
--- 29,38 ----
  
  --  This algorithm was adapted from GNAT.Heap_Sort_G (see g-hesorg.ad[sb])
  
  procedure Ada.Containers.Generic_Constrained_Array_Sort
    (Container : in out Array_Type)
  is
!    subtype T is Long_Long_Integer;
  
     function To_Index (J : T) return Index_Type;
     pragma Inline (To_Index);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-chacon.adb gcc-11.1.0/gcc/ada/libgnat/a-chacon.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-chacon.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-chacon.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-chacon.ads gcc-11.1.0/gcc/ada/libgnat/a-chacon.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-chacon.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-chacon.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-chahan.adb gcc-11.1.0/gcc/ada/libgnat/a-chahan.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-chahan.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-chahan.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Characters.Handling is
*** 399,404 ****
--- 399,415 ----
        return False;
     end Is_Mark;
  
+    -------------
+    -- Is_NFKC --
+    -------------
+ 
+    function Is_NFKC (Item : Character) return Boolean is
+    begin
+       return Character'Pos (Item) not in
+         160 | 168 | 170 | 175 | 178 | 179 | 180 | 181 | 184 | 185 | 186 |
+         188 | 189 | 190;
+    end Is_NFKC;
+ 
     ---------------------
     -- Is_Other_Format --
     ---------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-chahan.ads gcc-11.1.0/gcc/ada/libgnat/a-chahan.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-chahan.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-chahan.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package Ada.Characters.Handling is
*** 58,63 ****
--- 58,64 ----
     function Is_Other_Format          (Item : Character) return Boolean;
     function Is_Punctuation_Connector (Item : Character) return Boolean;
     function Is_Space                 (Item : Character) return Boolean;
+    function Is_NFKC                  (Item : Character) return Boolean;
  
     ---------------------------------------------------
     -- Conversion Functions for Character and String --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-chlat9.ads gcc-11.1.0/gcc/ada/libgnat/a-chlat9.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-chlat9.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-chlat9.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-chtgbk.adb gcc-11.1.0/gcc/ada/libgnat/a-chtgbk.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-chtgbk.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-chtgbk.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Containers.Hash_Tables.
*** 228,233 ****
--- 228,235 ----
        N, M       : Count_Type;
  
     begin
+       TC_Check (HT.TC);
+ 
        --  Per AI05-0022, the container implementation is required to detect
        --  element tampering by a generic actual subprogram.
  
*************** package body Ada.Containers.Hash_Tables.
*** 250,257 ****
        --  hash table as this one, a key is mapped to exactly one node.)
  
        if Checked_Equivalent_Keys (HT, Key, Node) then
-          TE_Check (HT.TC);
- 
           --  The new Key value is mapped to this same Node, so Node
           --  stays in the same bucket.
  
--- 252,257 ----
*************** package body Ada.Containers.Hash_Tables.
*** 292,301 ****
           return;
        end if;
  
!       --  The node is a bucket different from the bucket implied by Key
! 
!       TC_Check (HT.TC);
! 
        --  Do the assignment first, before moving the node, so that if Assign
        --  propagates an exception, then the hash table will not have been
        --  modified (except for any possible side-effect Assign had on Node).
--- 292,298 ----
           return;
        end if;
  
!       --  The node is in a bucket different from the bucket implied by Key.
        --  Do the assignment first, before moving the node, so that if Assign
        --  propagates an exception, then the hash table will not have been
        --  modified (except for any possible side-effect Assign had on Node).
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-chtgbk.ads gcc-11.1.0/gcc/ada/libgnat/a-chtgbk.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-chtgbk.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-chtgbk.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-chtgbo.adb gcc-11.1.0/gcc/ada/libgnat/a-chtgbo.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-chtgbo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-chtgbo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-chtgbo.ads gcc-11.1.0/gcc/ada/libgnat/a-chtgbo.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-chtgbo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-chtgbo.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-chtgke.adb gcc-11.1.0/gcc/ada/libgnat/a-chtgke.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-chtgke.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-chtgke.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Containers.Hash_Tables.
*** 91,97 ****
        end if;
  
        if Checked_Equivalent_Keys (HT, Key, X) then
-          TC_Check (HT.TC);
           HT.Buckets (Indx) := Next (X);
           HT.Length := HT.Length - 1;
           return;
--- 91,96 ----
*************** package body Ada.Containers.Hash_Tables.
*** 106,112 ****
           end if;
  
           if Checked_Equivalent_Keys (HT, Key, X) then
-             TC_Check (HT.TC);
              Set_Next (Node => Prev, Next => Next (X));
              HT.Length := HT.Length - 1;
              return;
--- 105,110 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-chtgke.ads gcc-11.1.0/gcc/ada/libgnat/a-chtgke.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-chtgke.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-chtgke.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-chtgop.adb gcc-11.1.0/gcc/ada/libgnat/a-chtgop.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-chtgop.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-chtgop.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-chtgop.ads gcc-11.1.0/gcc/ada/libgnat/a-chtgop.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-chtgop.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-chtgop.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-chzla1.ads gcc-11.1.0/gcc/ada/libgnat/a-chzla1.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-chzla1.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-chzla1.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-chzla9.ads gcc-11.1.0/gcc/ada/libgnat/a-chzla9.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-chzla9.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-chzla9.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cidlli.adb gcc-11.1.0/gcc/ada/libgnat/a-cidlli.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cidlli.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cidlli.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,37 ****
  with Ada.Unchecked_Deallocation;
  
  with System; use type System.Address;
  
! package body Ada.Containers.Indefinite_Doubly_Linked_Lists is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 30,40 ----
  with Ada.Unchecked_Deallocation;
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Indefinite_Doubly_Linked_Lists with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Indefinite_D
*** 176,187 ****
     procedure Append
       (Container : in out List;
        New_Item  : Element_Type;
!       Count     : Count_Type := 1)
     is
     begin
        Insert (Container, No_Element, New_Item, Count);
     end Append;
  
     ------------
     -- Assign --
     ------------
--- 179,198 ----
     procedure Append
       (Container : in out List;
        New_Item  : Element_Type;
!       Count     : Count_Type)
     is
     begin
        Insert (Container, No_Element, New_Item, Count);
     end Append;
  
+    procedure Append
+      (Container : in out List;
+       New_Item  : Element_Type)
+    is
+    begin
+       Insert (Container, No_Element, New_Item, 1);
+    end Append;
+ 
     ------------
     -- Assign --
     ------------
*************** package body Ada.Containers.Indefinite_D
*** 320,325 ****
--- 331,338 ----
        X : Node_Access;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Position.Node = null then
           raise Constraint_Error with
             "Position cursor has no element";
*************** package body Ada.Containers.Indefinite_D
*** 349,356 ****
           return;
        end if;
  
-       TC_Check (Container.TC);
- 
        for Index in 1 .. Count loop
           X := Position.Node;
           Container.Length := Container.Length - 1;
--- 362,367 ----
*************** package body Ada.Containers.Indefinite_D
*** 667,672 ****
--- 678,686 ----
              return;
           end if;
  
+          TC_Check (Target.TC);
+          TC_Check (Source.TC);
+ 
           if Checks and then Target'Address = Source'Address then
              raise Program_Error with
                "Target and Source denote same non-empty container";
*************** package body Ada.Containers.Indefinite_D
*** 677,685 ****
              raise Constraint_Error with "new length exceeds maximum";
           end if;
  
-          TC_Check (Target.TC);
-          TC_Check (Source.TC);
- 
           declare
              Lock_Target : With_Lock (Target.TC'Unchecked_Access);
              Lock_Source : With_Lock (Source.TC'Unchecked_Access);
--- 691,696 ----
*************** package body Ada.Containers.Indefinite_D
*** 847,852 ****
--- 858,865 ----
        New_Node   : Node_Access;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Before.Container /= null then
           if Checks and then Before.Container /= Container'Unrestricted_Access
           then
*************** package body Ada.Containers.Indefinite_D
*** 873,880 ****
           raise Constraint_Error with "new length exceeds maximum";
        end if;
  
-       TC_Check (Container.TC);
- 
        declare
           --  The element allocator may need an accessibility check in the case
           --  the actual type is class-wide or has access discriminants (see
--- 886,891 ----
*************** package body Ada.Containers.Indefinite_D
*** 1295,1300 ****
--- 1306,1339 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : List)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+ 
+       procedure Put_Elem (Position : Cursor);
+       procedure Put_Elem (Position : Cursor) is
+       begin
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Element_Type'Put_Image (S, Element (Position));
+       end Put_Elem;
+ 
+    begin
+       Array_Before (S);
+       Iterate (V, Put_Elem'Access);
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Indefinite_D
*** 1420,1425 ****
--- 1459,1466 ----
        New_Item  : Element_Type)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then Position.Container = null then
           raise Constraint_Error with "Position cursor has no element";
        end if;
*************** package body Ada.Containers.Indefinite_D
*** 1429,1436 ****
             "Position cursor designates wrong container";
        end if;
  
-       TE_Check (Container.TC);
- 
        if Checks and then Position.Node.Element = null then
           raise Program_Error with
             "Position cursor has no element";
--- 1470,1475 ----
*************** package body Ada.Containers.Indefinite_D
*** 1612,1617 ****
--- 1651,1659 ----
        Source : in out List)
     is
     begin
+       TC_Check (Target.TC);
+       TC_Check (Source.TC);
+ 
        if Before.Container /= null then
           if Checks and then Before.Container /= Target'Unrestricted_Access then
              raise Program_Error with
*************** package body Ada.Containers.Indefinite_D
*** 1636,1644 ****
           raise Constraint_Error with "new length exceeds maximum";
        end if;
  
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
        Splice_Internal (Target, Before.Node, Source);
     end Splice;
  
--- 1678,1683 ----
*************** package body Ada.Containers.Indefinite_D
*** 1648,1653 ****
--- 1687,1694 ----
        Position  : Cursor)
     is
     begin
+       TC_Check (Container.TC);
+ 
        if Before.Container /= null then
           if Checks and then Before.Container /= Container'Unchecked_Access then
              raise Program_Error with
*************** package body Ada.Containers.Indefinite_D
*** 1688,1695 ****
  
        pragma Assert (Container.Length >= 2);
  
-       TC_Check (Container.TC);
- 
        if Before.Node = null then
           pragma Assert (Position.Node /= Container.Last);
  
--- 1729,1734 ----
*************** package body Ada.Containers.Indefinite_D
*** 1765,1770 ****
--- 1804,1812 ----
           return;
        end if;
  
+       TC_Check (Target.TC);
+       TC_Check (Source.TC);
+ 
        if Before.Container /= null then
           if Checks and then Before.Container /= Target'Unrestricted_Access then
              raise Program_Error with
*************** package body Ada.Containers.Indefinite_D
*** 1801,1809 ****
           raise Constraint_Error with "Target is full";
        end if;
  
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
        Splice_Internal (Target, Before.Node, Source, Position.Node);
        Position.Container := Target'Unchecked_Access;
     end Splice;
--- 1843,1848 ----
*************** package body Ada.Containers.Indefinite_D
*** 1960,1965 ****
--- 1999,2006 ----
        I, J      : Cursor)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then I.Node = null then
           raise Constraint_Error with "I cursor has no element";
        end if;
*************** package body Ada.Containers.Indefinite_D
*** 1980,1987 ****
           return;
        end if;
  
-       TE_Check (Container.TC);
- 
        pragma Assert (Vet (I), "bad I cursor in Swap");
        pragma Assert (Vet (J), "bad J cursor in Swap");
  
--- 2021,2026 ----
*************** package body Ada.Containers.Indefinite_D
*** 2003,2008 ****
--- 2042,2049 ----
        I, J      : Cursor)
     is
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then I.Node = null then
           raise Constraint_Error with "I cursor has no element";
        end if;
*************** package body Ada.Containers.Indefinite_D
*** 2023,2030 ****
           return;
        end if;
  
-       TC_Check (Container.TC);
- 
        pragma Assert (Vet (I), "bad I cursor in Swap_Links");
        pragma Assert (Vet (J), "bad J cursor in Swap_Links");
  
--- 2064,2069 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cidlli.ads gcc-11.1.0/gcc/ada/libgnat/a-cidlli.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cidlli.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cidlli.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Iterator_Interfaces;
*** 36,41 ****
--- 36,42 ----
  with Ada.Containers.Helpers;
  private with Ada.Finalization;
  private with Ada.Streams;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Element_Type (<>) is private;
*************** generic
*** 43,49 ****
     with function "=" (Left, Right : Element_Type)
        return Boolean is <>;
  
! package Ada.Containers.Indefinite_Doubly_Linked_Lists is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
--- 44,52 ----
     with function "=" (Left, Right : Element_Type)
        return Boolean is <>;
  
! package Ada.Containers.Indefinite_Doubly_Linked_Lists with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
*************** package Ada.Containers.Indefinite_Doubly
*** 52,58 ****
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type;
  
     pragma Preelaborable_Initialization (List);
  
--- 55,63 ----
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type,
!       Aggregate         => (Empty       => Empty,
!                             Add_Unnamed => Append);
  
     pragma Preelaborable_Initialization (List);
  
*************** package Ada.Containers.Indefinite_Doubly
*** 60,65 ****
--- 65,71 ----
     pragma Preelaborable_Initialization (Cursor);
  
     Empty_List : constant List;
+    function Empty return List;
  
     No_Element : constant Cursor;
  
*************** package Ada.Containers.Indefinite_Doubly
*** 141,147 ****
     procedure Append
       (Container : in out List;
        New_Item  : Element_Type;
!       Count     : Count_Type := 1);
  
     procedure Delete
       (Container : in out List;
--- 147,157 ----
     procedure Append
       (Container : in out List;
        New_Item  : Element_Type;
!       Count     : Count_Type);
! 
!    procedure Append
!      (Container : in out List;
!       New_Item  : Element_Type);
  
     procedure Delete
       (Container : in out List;
*************** private
*** 267,273 ****
          Last   : Node_Access := null;
          Length : Count_Type := 0;
          TC     : aliased Tamper_Counts;
!      end record;
  
     overriding procedure Adjust (Container : in out List);
  
--- 277,286 ----
          Last   : Node_Access := null;
          Length : Count_Type := 0;
          TC     : aliased Tamper_Counts;
!      end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : List);
  
     overriding procedure Adjust (Container : in out List);
  
*************** private
*** 370,375 ****
--- 383,389 ----
     --  Returns a pointer to the element designated by Position.
  
     Empty_List : constant List := List'(Controlled with others => <>);
+    function Empty return List is (Empty_List);
  
     No_Element : constant Cursor := Cursor'(null, null);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cihama.adb gcc-11.1.0/gcc/ada/libgnat/a-cihama.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cihama.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cihama.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Containers.Helpers; use Ada.Con
*** 38,45 ****
  with Ada.Unchecked_Deallocation;
  
  with System; use type System.Address;
  
! package body Ada.Containers.Indefinite_Hashed_Maps is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 38,48 ----
  with Ada.Unchecked_Deallocation;
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Indefinite_Hashed_Maps with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Indefinite_H
*** 327,332 ****
--- 330,337 ----
  
     procedure Delete (Container : in out Map; Position : in out Cursor) is
     begin
+       TC_Check (Container.HT.TC);
+ 
        if Checks and then Position.Node = null then
           raise Constraint_Error with
             "Position cursor of Delete equals No_Element";
*************** package body Ada.Containers.Indefinite_H
*** 338,351 ****
             "Position cursor of Delete designates wrong map";
        end if;
  
-       TC_Check (Container.HT.TC);
- 
        pragma Assert (Vet (Position), "bad cursor in Delete");
  
        HT_Ops.Delete_Node_Sans_Free (Container.HT, Position.Node);
  
        Free (Position.Node);
        Position.Container := null;
     end Delete;
  
     -------------
--- 343,356 ----
             "Position cursor of Delete designates wrong map";
        end if;
  
        pragma Assert (Vet (Position), "bad cursor in Delete");
  
        HT_Ops.Delete_Node_Sans_Free (Container.HT, Position.Node);
  
        Free (Position.Node);
        Position.Container := null;
+       Position.Position := No_Element.Position;
+       pragma Assert (Position = No_Element);
     end Delete;
  
     -------------
*************** package body Ada.Containers.Indefinite_H
*** 382,387 ****
--- 387,403 ----
        return Position.Node.Element.all;
     end Element;
  
+    -----------
+    -- Empty --
+    -----------
+ 
+    function Empty (Capacity : Count_Type := 1000) return Map is
+    begin
+       return Result : Map do
+          Reserve_Capacity (Result, Capacity);
+       end return;
+    end Empty;
+ 
     -------------------------
     -- Equivalent_Key_Node --
     -------------------------
*************** package body Ada.Containers.Indefinite_H
*** 950,955 ****
--- 966,1001 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Map)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+ 
+       procedure Put_Key_Value (Position : Cursor);
+       procedure Put_Key_Value (Position : Cursor) is
+       begin
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Key_Type'Put_Image (S, Key (Position));
+          Put_Arrow (S);
+          Element_Type'Put_Image (S, Element (Position));
+       end Put_Key_Value;
+ 
+    begin
+       Array_Before (S);
+       Iterate (V, Put_Key_Value'Access);
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Indefinite_H
*** 1106,1118 ****
        E : Element_Access;
  
     begin
        if Checks and then Node = null then
           raise Constraint_Error with
             "attempt to replace key not in map";
        end if;
  
-       TE_Check (Container.HT.TC);
- 
        K := Node.Key;
        E := Node.Element;
  
--- 1152,1164 ----
        E : Element_Access;
  
     begin
+       TE_Check (Container.HT.TC);
+ 
        if Checks and then Node = null then
           raise Constraint_Error with
             "attempt to replace key not in map";
        end if;
  
        K := Node.Key;
        E := Node.Element;
  
*************** package body Ada.Containers.Indefinite_H
*** 1148,1153 ****
--- 1194,1201 ----
        New_Item  : Element_Type)
     is
     begin
+       TE_Check (Position.Container.HT.TC);
+ 
        if Checks and then Position.Node = null then
           raise Constraint_Error with
             "Position cursor of Replace_Element equals No_Element";
*************** package body Ada.Containers.Indefinite_H
*** 1166,1173 ****
             "Position cursor of Replace_Element designates wrong map";
        end if;
  
-       TE_Check (Position.Container.HT.TC);
- 
        pragma Assert (Vet (Position), "bad cursor in Replace_Element");
  
        declare
--- 1214,1219 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cihama.ads gcc-11.1.0/gcc/ada/libgnat/a-cihama.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cihama.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cihama.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Iterator_Interfaces;
*** 36,41 ****
--- 36,42 ----
  private with Ada.Containers.Hash_Tables;
  private with Ada.Finalization;
  private with Ada.Streams;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Key_Type (<>) is private;
*************** generic
*** 45,51 ****
     with function Equivalent_Keys (Left, Right : Key_Type) return Boolean;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Indefinite_Hashed_Maps is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
--- 46,54 ----
     with function Equivalent_Keys (Left, Right : Key_Type) return Boolean;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Indefinite_Hashed_Maps with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
*************** package Ada.Containers.Indefinite_Hashed
*** 54,60 ****
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type;
  
     pragma Preelaborable_Initialization (Map);
  
--- 57,65 ----
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type,
!       Aggregate         => (Empty     => Empty,
!                             Add_Named => Insert);
  
     pragma Preelaborable_Initialization (Map);
  
*************** package Ada.Containers.Indefinite_Hashed
*** 65,70 ****
--- 70,77 ----
     --  Map objects declared without an initialization expression are
     --  initialized to the value Empty_Map.
  
+    function Empty (Capacity : Count_Type := 1000) return Map;
+ 
     No_Element : constant Cursor;
     --  Cursor objects declared without an initialization expression are
     --  initialized to the value No_Element.
*************** private
*** 326,332 ****
  
     type Map is new Ada.Finalization.Controlled with record
        HT : HT_Types.Hash_Table_Type;
!    end record;
  
     overriding procedure Adjust   (Container : in out Map);
  
--- 333,342 ----
  
     type Map is new Ada.Finalization.Controlled with record
        HT : HT_Types.Hash_Table_Type;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Map);
  
     overriding procedure Adjust   (Container : in out Map);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cihase.adb gcc-11.1.0/gcc/ada/libgnat/a-cihase.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cihase.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cihase.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Containers.Helpers; use Ada.Con
*** 40,47 ****
  with Ada.Containers.Prime_Numbers;
  
  with System; use type System.Address;
  
! package body Ada.Containers.Indefinite_Hashed_Sets is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 40,50 ----
  with Ada.Containers.Prime_Numbers;
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Indefinite_Hashed_Sets with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Indefinite_H
*** 320,325 ****
--- 323,330 ----
        Position  : in out Cursor)
     is
     begin
+       TC_Check (Container.HT.TC);
+ 
        if Checks and then Position.Node = null then
           raise Constraint_Error with "Position cursor equals No_Element";
        end if;
*************** package body Ada.Containers.Indefinite_H
*** 333,340 ****
           raise Program_Error with "Position cursor designates wrong set";
        end if;
  
-       TC_Check (Container.HT.TC);
- 
        pragma Assert (Vet (Position), "Position cursor is bad");
  
        HT_Ops.Delete_Node_Sans_Free (Container.HT, Position.Node);
--- 338,343 ----
*************** package body Ada.Containers.Indefinite_H
*** 503,508 ****
--- 506,522 ----
        return Position.Node.Element.all;
     end Element;
  
+    -----------
+    -- Empty --
+    -----------
+ 
+    function Empty (Capacity : Count_Type := 1000) return Set is
+    begin
+       return Result : Set do
+          Reserve_Capacity (Result, Capacity);
+       end return;
+    end Empty;
+ 
     ---------------------
     -- Equivalent_Sets --
     ---------------------
*************** package body Ada.Containers.Indefinite_H
*** 1262,1267 ****
--- 1276,1306 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Set)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+    begin
+       Array_Before (S);
+ 
+       for X of V loop
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Element_Type'Put_Image (S, X);
+       end loop;
+ 
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Indefinite_H
*** 1321,1333 ****
        pragma Warnings (Off, X);
  
     begin
        if Checks and then Node = null then
           raise Constraint_Error with
             "attempt to replace element not in set";
        end if;
  
-       TE_Check (Container.HT.TC);
- 
        X := Node.Element;
  
        declare
--- 1360,1372 ----
        pragma Warnings (Off, X);
  
     begin
+       TE_Check (Container.HT.TC);
+ 
        if Checks and then Node = null then
           raise Constraint_Error with
             "attempt to replace element not in set";
        end if;
  
        X := Node.Element;
  
        declare
*************** package body Ada.Containers.Indefinite_H
*** 2227,2233 ****
                            Control =>
                              (Controlled with
                                HT.TC'Unrestricted_Access,
!                               Container => Container'Access,
                                Index     => HT_Ops.Index (HT, Position.Node),
                                Old_Pos   => Position,
                                Old_Hash  => Hash (Key (Position))))
--- 2266,2272 ----
                            Control =>
                              (Controlled with
                                HT.TC'Unrestricted_Access,
!                               Container => Container'Unchecked_Access,
                                Index     => HT_Ops.Index (HT, Position.Node),
                                Old_Pos   => Position,
                                Old_Hash  => Hash (Key (Position))))
*************** package body Ada.Containers.Indefinite_H
*** 2261,2267 ****
                            Control =>
                              (Controlled with
                                HT.TC'Unrestricted_Access,
!                               Container => Container'Access,
                                Index     => HT_Ops.Index (HT, P.Node),
                                Old_Pos   => P,
                                Old_Hash  => Hash (Key)))
--- 2300,2306 ----
                            Control =>
                              (Controlled with
                                HT.TC'Unrestricted_Access,
!                               Container => Container'Unchecked_Access,
                                Index     => HT_Ops.Index (HT, P.Node),
                                Old_Pos   => P,
                                Old_Hash  => Hash (Key)))
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cihase.ads gcc-11.1.0/gcc/ada/libgnat/a-cihase.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cihase.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cihase.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private with Ada.Containers.Hash_Tables;
*** 37,42 ****
--- 37,43 ----
  with Ada.Containers.Helpers;
  private with Ada.Streams;
  private with Ada.Finalization;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Element_Type (<>) is private;
*************** generic
*** 48,54 ****
  
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Indefinite_Hashed_Sets is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
--- 49,57 ----
  
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Indefinite_Hashed_Sets with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
*************** package Ada.Containers.Indefinite_Hashed
*** 56,62 ****
     type Set is tagged private
       with Constant_Indexing => Constant_Reference,
            Default_Iterator  => Iterate,
!           Iterator_Element  => Element_Type;
  
     pragma Preelaborable_Initialization (Set);
  
--- 59,67 ----
     type Set is tagged private
       with Constant_Indexing => Constant_Reference,
            Default_Iterator  => Iterate,
!           Iterator_Element  => Element_Type,
!           Aggregate         => (Empty       => Empty,
!                                 Add_Unnamed => Include);
  
     pragma Preelaborable_Initialization (Set);
  
*************** package Ada.Containers.Indefinite_Hashed
*** 67,72 ****
--- 72,79 ----
     --  Set objects declared without an initialization expression are
     --  initialized to the value Empty_Set.
  
+    function Empty (Capacity : Count_Type := 1000) return Set;
+ 
     No_Element : constant Cursor;
     --  Cursor objects declared without an initialization expression are
     --  initialized to the value No_Element.
*************** private
*** 490,496 ****
  
     type Set is new Ada.Finalization.Controlled with record
        HT : HT_Types.Hash_Table_Type;
!    end record;
  
     overriding procedure Adjust (Container : in out Set);
  
--- 497,506 ----
  
     type Set is new Ada.Finalization.Controlled with record
        HT : HT_Types.Hash_Table_Type;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Set);
  
     overriding procedure Adjust (Container : in out Set);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cimutr.adb gcc-11.1.0/gcc/ada/libgnat/a-cimutr.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cimutr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cimutr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,37 ****
  with Ada.Unchecked_Deallocation;
  
  with System; use type System.Address;
  
! package body Ada.Containers.Indefinite_Multiway_Trees is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 30,40 ----
  with Ada.Unchecked_Deallocation;
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Indefinite_Multiway_Trees with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Indefinite_M
*** 261,266 ****
--- 264,271 ----
        Element     : Element_Access;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Indefinite_M
*** 273,280 ****
           return;
        end if;
  
-       TC_Check (Container.TC);
- 
        declare
           --  The element allocator may need an accessibility check in the case
           --  the actual type is class-wide or has access discriminants (see
--- 278,283 ----
*************** package body Ada.Containers.Indefinite_M
*** 738,743 ****
--- 741,748 ----
        Count : Count_Type;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Indefinite_M
*** 746,753 ****
           raise Program_Error with "Parent cursor not in container";
        end if;
  
-       TC_Check (Container.TC);
- 
        --  Deallocate_Children returns a count of the number of nodes
        --  that it deallocates, but it works by incrementing the
        --  value that is passed in. We must therefore initialize
--- 751,756 ----
*************** package body Ada.Containers.Indefinite_M
*** 772,777 ****
--- 775,782 ----
        X : Tree_Node_Access;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Position = No_Element then
           raise Constraint_Error with "Position cursor has no element";
        end if;
*************** package body Ada.Containers.Indefinite_M
*** 789,796 ****
           raise Constraint_Error with "Position cursor does not designate leaf";
        end if;
  
-       TC_Check (Container.TC);
- 
        X := Position.Node;
        Position := No_Element;
  
--- 794,799 ----
*************** package body Ada.Containers.Indefinite_M
*** 819,824 ****
--- 822,829 ----
        Count : Count_Type;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Position = No_Element then
           raise Constraint_Error with "Position cursor has no element";
        end if;
*************** package body Ada.Containers.Indefinite_M
*** 832,839 ****
           raise Program_Error with "Position cursor designates root";
        end if;
  
-       TC_Check (Container.TC);
- 
        X := Position.Node;
        Position := No_Element;
  
--- 837,842 ----
*************** package body Ada.Containers.Indefinite_M
*** 1191,1196 ****
--- 1194,1201 ----
        Element : Element_Access;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Indefinite_M
*** 1215,1222 ****
           return;
        end if;
  
-       TC_Check (Container.TC);
- 
        declare
           --  The element allocator may need an accessibility check in the case
           --  the actual type is class-wide or has access discriminants (see
--- 1220,1225 ----
*************** package body Ada.Containers.Indefinite_M
*** 1735,1740 ****
--- 1738,1745 ----
        Element     : Element_Access;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Indefinite_M
*** 1747,1754 ****
           return;
        end if;
  
-       TC_Check (Container.TC);
- 
        declare
           --  The element allocator may need an accessibility check in the case
           --  the actual type is class-wide or has access discriminants (see
--- 1752,1757 ----
*************** package body Ada.Containers.Indefinite_M
*** 1873,1878 ****
--- 1876,1924 ----
        Process (Position.Node.Element.all);
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Tree)
+    is
+       use System.Put_Images;
+ 
+       procedure Rec (Position : Cursor);
+       --  Recursive routine operating on cursors
+ 
+       procedure Rec (Position : Cursor) is
+          First_Time : Boolean := True;
+       begin
+          Array_Before (S);
+ 
+          for X in Iterate_Children (V, Position) loop
+             if First_Time then
+                First_Time := False;
+             else
+                Array_Between (S);
+             end if;
+ 
+             Element_Type'Put_Image (S, Element (X));
+             if Child_Count (X) > 0 then
+                Simple_Array_Between (S);
+                Rec (X);
+             end if;
+          end loop;
+ 
+          Array_After (S);
+       end Rec;
+ 
+    begin
+       if First_Child (Root (V)) = No_Element then
+          Array_Before (S);
+          Array_After (S);
+       else
+          Rec (First_Child (Root (V)));
+       end if;
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Indefinite_M
*** 2096,2101 ****
--- 2142,2149 ----
        E, X : Element_Access;
  
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then Position = No_Element then
           raise Constraint_Error with "Position cursor has no element";
        end if;
*************** package body Ada.Containers.Indefinite_M
*** 2109,2116 ****
           raise Program_Error with "Position cursor designates root";
        end if;
  
-       TE_Check (Container.TC);
- 
        declare
           --  The element allocator may need an accessibility check in the case
           --  the actual type is class-wide or has access discriminants (see
--- 2157,2162 ----
*************** package body Ada.Containers.Indefinite_M
*** 2182,2187 ****
--- 2228,2236 ----
        Count : Count_Type;
  
     begin
+       TC_Check (Target.TC);
+       TC_Check (Source.TC);
+ 
        if Checks and then Target_Parent = No_Element then
           raise Constraint_Error with "Target_Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Indefinite_M
*** 2219,2226 ****
              return;
           end if;
  
-          TC_Check (Target.TC);
- 
           if Checks and then Is_Reachable (From => Target_Parent.Node,
                            To   => Source_Parent.Node)
           then
--- 2268,2273 ----
*************** package body Ada.Containers.Indefinite_M
*** 2236,2244 ****
           return;
        end if;
  
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
        --  We cache the count of the nodes we have allocated, so that operation
        --  Node_Count can execute in O(1) time. But that means we must count the
        --  nodes in the subtree we remove from Source and insert into Target, in
--- 2283,2288 ----
*************** package body Ada.Containers.Indefinite_M
*** 2265,2270 ****
--- 2309,2316 ----
        Source_Parent   : Cursor)
     is
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Target_Parent = No_Element then
           raise Constraint_Error with "Target_Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Indefinite_M
*** 2304,2311 ****
           return;
        end if;
  
-       TC_Check (Container.TC);
- 
        if Checks and then Is_Reachable (From => Target_Parent.Node,
                         To   => Source_Parent.Node)
        then
--- 2350,2355 ----
*************** package body Ada.Containers.Indefinite_M
*** 2363,2368 ****
--- 2407,2415 ----
        Subtree_Count : Count_Type;
  
     begin
+       TC_Check (Target.TC);
+       TC_Check (Source.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Indefinite_M
*** 2404,2411 ****
              end if;
           end if;
  
-          TC_Check (Target.TC);
- 
           if Checks and then
             Is_Reachable (From => Parent.Node, To => Position.Node)
           then
--- 2451,2456 ----
*************** package body Ada.Containers.Indefinite_M
*** 2420,2428 ****
           return;
        end if;
  
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
        --  This is an unfortunate feature of this API: we must count the nodes
        --  in the subtree that we remove from the source tree, which is an O(n)
        --  operation. It would have been better if the Tree container did not
--- 2465,2470 ----
*************** package body Ada.Containers.Indefinite_M
*** 2455,2460 ****
--- 2497,2504 ----
        Position  : Cursor)
     is
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Indefinite_M
*** 2500,2507 ****
           end if;
        end if;
  
-       TC_Check (Container.TC);
- 
        if Checks and then
          Is_Reachable (From => Parent.Node, To => Position.Node)
        then
--- 2544,2549 ----
*************** package body Ada.Containers.Indefinite_M
*** 2553,2558 ****
--- 2595,2602 ----
        I, J      : Cursor)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then I = No_Element then
           raise Constraint_Error with "I cursor has no element";
        end if;
*************** package body Ada.Containers.Indefinite_M
*** 2581,2588 ****
           raise Program_Error with "J cursor designates root";
        end if;
  
-       TE_Check (Container.TC);
- 
        declare
           EI : constant Element_Access := I.Node.Element;
  
--- 2625,2630 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cimutr.ads gcc-11.1.0/gcc/ada/libgnat/a-cimutr.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cimutr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cimutr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Iterator_Interfaces;
*** 36,48 ****
  with Ada.Containers.Helpers;
  private with Ada.Finalization;
  private with Ada.Streams;
  
  generic
     type Element_Type (<>) is private;
  
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Indefinite_Multiway_Trees is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
--- 36,51 ----
  with Ada.Containers.Helpers;
  private with Ada.Finalization;
  private with Ada.Streams;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Element_Type (<>) is private;
  
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Indefinite_Multiway_Trees with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
*************** private
*** 346,352 ****
        Root  : aliased Tree_Node_Type;
        TC    : aliased Tamper_Counts;
        Count : Count_Type := 0;
!    end record;
  
     overriding procedure Adjust (Container : in out Tree);
  
--- 349,358 ----
        Root  : aliased Tree_Node_Type;
        TC    : aliased Tamper_Counts;
        Count : Count_Type := 0;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Tree);
  
     overriding procedure Adjust (Container : in out Tree);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ciorma.adb gcc-11.1.0/gcc/ada/libgnat/a-ciorma.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ciorma.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ciorma.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Containers.Red_Black_Trees.Gene
*** 38,45 ****
  pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Keys);
  
  with System; use type System.Address;
  
! package body Ada.Containers.Indefinite_Ordered_Maps is
     pragma Suppress (All_Checks);
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
--- 38,48 ----
  pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Keys);
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Indefinite_Ordered_Maps with
!   SPARK_Mode => Off
! is
     pragma Suppress (All_Checks);
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
*************** package body Ada.Containers.Indefinite_O
*** 1289,1294 ****
--- 1292,1327 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Map)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+ 
+       procedure Put_Key_Value (Position : Cursor);
+       procedure Put_Key_Value (Position : Cursor) is
+       begin
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Key_Type'Put_Image (S, Key (Position));
+          Put_Arrow (S);
+          Element_Type'Put_Image (S, Element (Position));
+       end Put_Key_Value;
+ 
+    begin
+       Array_Before (S);
+       Iterate (V, Put_Key_Value'Access);
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Indefinite_O
*** 1435,1446 ****
        E : Element_Access;
  
     begin
        if Checks and then Node = null then
           raise Constraint_Error with "key not in map";
        end if;
  
-       TE_Check (Container.Tree.TC);
- 
        K := Node.Key;
        E := Node.Element;
  
--- 1468,1479 ----
        E : Element_Access;
  
     begin
+       TE_Check (Container.Tree.TC);
+ 
        if Checks and then Node = null then
           raise Constraint_Error with "key not in map";
        end if;
  
        K := Node.Key;
        E := Node.Element;
  
*************** package body Ada.Containers.Indefinite_O
*** 1476,1481 ****
--- 1509,1516 ----
        New_Item  : Element_Type)
     is
     begin
+       TE_Check (Container.Tree.TC);
+ 
        if Checks and then Position.Node = null then
           raise Constraint_Error with
             "Position cursor of Replace_Element equals No_Element";
*************** package body Ada.Containers.Indefinite_O
*** 1494,1501 ****
             "Position cursor of Replace_Element designates wrong map";
        end if;
  
-       TE_Check (Container.Tree.TC);
- 
        pragma Assert (Vet (Container.Tree, Position.Node),
                       "Position cursor of Replace_Element is bad");
  
--- 1529,1534 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ciorma.ads gcc-11.1.0/gcc/ada/libgnat/a-ciorma.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ciorma.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ciorma.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Iterator_Interfaces;
*** 36,41 ****
--- 36,42 ----
  private with Ada.Containers.Red_Black_Trees;
  private with Ada.Finalization;
  private with Ada.Streams;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Key_Type (<>) is private;
*************** generic
*** 44,50 ****
     with function "<" (Left, Right : Key_Type) return Boolean is <>;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Indefinite_Ordered_Maps is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
--- 45,53 ----
     with function "<" (Left, Right : Key_Type) return Boolean is <>;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Indefinite_Ordered_Maps with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
*************** package Ada.Containers.Indefinite_Ordere
*** 55,61 ****
     with Constant_Indexing => Constant_Reference,
          Variable_Indexing => Reference,
          Default_Iterator  => Iterate,
!         Iterator_Element  => Element_Type;
  
     pragma Preelaborable_Initialization (Map);
  
--- 58,66 ----
     with Constant_Indexing => Constant_Reference,
          Variable_Indexing => Reference,
          Default_Iterator  => Iterate,
!         Iterator_Element  => Element_Type,
!         Aggregate         => (Empty     => Empty,
!                               Add_Named => Insert);
  
     pragma Preelaborable_Initialization (Map);
  
*************** package Ada.Containers.Indefinite_Ordere
*** 64,69 ****
--- 69,76 ----
  
     Empty_Map : constant Map;
  
+    function Empty return Map;
+ 
     No_Element : constant Cursor;
     function Has_Element (Position : Cursor) return Boolean;
  
*************** private
*** 254,260 ****
  
     type Map is new Ada.Finalization.Controlled with record
        Tree : Tree_Types.Tree_Type;
!    end record;
  
     overriding procedure Adjust (Container : in out Map);
  
--- 261,270 ----
  
     type Map is new Ada.Finalization.Controlled with record
        Tree : Tree_Types.Tree_Type;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Map);
  
     overriding procedure Adjust (Container : in out Map);
  
*************** private
*** 361,366 ****
--- 371,377 ----
     --  Returns a pointer to the element designated by Position.
  
     Empty_Map : constant Map := (Controlled with others => <>);
+    function Empty return Map is (Empty_Map);
  
     No_Element : constant Cursor := Cursor'(null, null);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ciormu.adb gcc-11.1.0/gcc/ada/libgnat/a-ciormu.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ciormu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ciormu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Containers.Red_Black_Trees.Gene
*** 39,46 ****
  pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Set_Operations);
  
  with System; use type System.Address;
  
! package body Ada.Containers.Indefinite_Ordered_Multisets is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 39,49 ----
  pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Set_Operations);
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Indefinite_Ordered_Multisets with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Indefinite_O
*** 1655,1660 ****
--- 1658,1688 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Set)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+    begin
+       Array_Before (S);
+ 
+       for X of V loop
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Element_Type'Put_Image (S, X);
+       end loop;
+ 
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ciormu.ads gcc-11.1.0/gcc/ada/libgnat/a-ciormu.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ciormu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ciormu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 35,40 ****
--- 35,41 ----
  private with Ada.Containers.Red_Black_Trees;
  private with Ada.Finalization;
  private with Ada.Streams;
+ private with Ada.Strings.Text_Output;
  with Ada.Iterator_Interfaces;
  
  generic
*************** generic
*** 43,49 ****
     with function "<" (Left, Right : Element_Type) return Boolean is <>;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Indefinite_Ordered_Multisets is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
--- 44,52 ----
     with function "<" (Left, Right : Element_Type) return Boolean is <>;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Indefinite_Ordered_Multisets with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
*************** private
*** 466,472 ****
  
     type Set is new Ada.Finalization.Controlled with record
        Tree : Tree_Types.Tree_Type;
!    end record;
  
     overriding procedure Adjust (Container : in out Set);
  
--- 469,478 ----
  
     type Set is new Ada.Finalization.Controlled with record
        Tree : Tree_Types.Tree_Type;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Set);
  
     overriding procedure Adjust (Container : in out Set);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ciorse.adb gcc-11.1.0/gcc/ada/libgnat/a-ciorse.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ciorse.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ciorse.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Elaborate_All (Ada.Containers.Red
*** 41,48 ****
  with Ada.Unchecked_Deallocation;
  
  with System; use type System.Address;
  
! package body Ada.Containers.Indefinite_Ordered_Sets is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 41,51 ----
  with Ada.Unchecked_Deallocation;
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Indefinite_Ordered_Sets with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Indefinite_O
*** 1013,1019 ****
                 Control =>
                   (Controlled with
                      Tree.TC'Unrestricted_Access,
!                     Container => Container'Access,
                      Pos       => Position,
                      Old_Key   => new Key_Type'(Key (Position))))
           do
--- 1016,1022 ----
                 Control =>
                   (Controlled with
                      Tree.TC'Unrestricted_Access,
!                     Container => Container'Unchecked_Access,
                      Pos       => Position,
                      Old_Key   => new Key_Type'(Key (Position))))
           do
*************** package body Ada.Containers.Indefinite_O
*** 1045,1051 ****
                 Control =>
                   (Controlled with
                      Tree.TC'Unrestricted_Access,
!                     Container => Container'Access,
                      Pos       => Find (Container, Key),
                      Old_Key   => new Key_Type'(Key)))
              do
--- 1048,1054 ----
                 Control =>
                   (Controlled with
                      Tree.TC'Unrestricted_Access,
!                     Container => Container'Unchecked_Access,
                      Pos       => Find (Container, Key),
                      Old_Key   => new Key_Type'(Key)))
              do
*************** package body Ada.Containers.Indefinite_O
*** 1720,1725 ****
--- 1723,1753 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Set)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+    begin
+       Array_Before (S);
+ 
+       for X of V loop
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Element_Type'Put_Image (S, X);
+       end loop;
+ 
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Indefinite_O
*** 1788,1799 ****
        pragma Warnings (Off, X);
  
     begin
        if Checks and then Node = null then
           raise Constraint_Error with "attempt to replace element not in set";
        end if;
  
-       TE_Check (Container.Tree.TC);
- 
        declare
           --  The element allocator may need an accessibility check in the case
           --  the actual type is class-wide or has access discriminants (see
--- 1816,1827 ----
        pragma Warnings (Off, X);
  
     begin
+       TE_Check (Container.Tree.TC);
+ 
        if Checks and then Node = null then
           raise Constraint_Error with "attempt to replace element not in set";
        end if;
  
        declare
           --  The element allocator may need an accessibility check in the case
           --  the actual type is class-wide or has access discriminants (see
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ciorse.ads gcc-11.1.0/gcc/ada/libgnat/a-ciorse.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ciorse.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ciorse.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Containers.Helpers;
*** 37,42 ****
--- 37,43 ----
  private with Ada.Containers.Red_Black_Trees;
  private with Ada.Finalization;
  private with Ada.Streams;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Element_Type (<>) is private;
*************** generic
*** 44,50 ****
     with function "<" (Left, Right : Element_Type) return Boolean is <>;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Indefinite_Ordered_Sets is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
--- 45,53 ----
     with function "<" (Left, Right : Element_Type) return Boolean is <>;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Indefinite_Ordered_Sets with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
*************** package Ada.Containers.Indefinite_Ordere
*** 54,60 ****
     type Set is tagged private with
        Constant_Indexing => Constant_Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type;
  
     pragma Preelaborable_Initialization (Set);
  
--- 57,65 ----
     type Set is tagged private with
        Constant_Indexing => Constant_Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type,
!       Aggregate         => (Empty       => Empty,
!                             Add_Unnamed => Include);
  
     pragma Preelaborable_Initialization (Set);
  
*************** package Ada.Containers.Indefinite_Ordere
*** 62,67 ****
--- 67,73 ----
     pragma Preelaborable_Initialization (Cursor);
  
     Empty_Set : constant Set;
+    function Empty  return Set;
  
     No_Element : constant Cursor;
  
*************** private
*** 355,361 ****
  
     type Set is new Ada.Finalization.Controlled with record
        Tree : Tree_Types.Tree_Type;
!    end record;
  
     overriding procedure Adjust (Container : in out Set);
  
--- 361,370 ----
  
     type Set is new Ada.Finalization.Controlled with record
        Tree : Tree_Types.Tree_Type;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Set);
  
     overriding procedure Adjust (Container : in out Set);
  
*************** private
*** 440,445 ****
--- 449,455 ----
     --  Returns a pointer to the element designated by Position.
  
     Empty_Set : constant Set := (Controlled with others => <>);
+    function Empty  return Set is (Empty_Set);
  
     No_Element : constant Cursor := Cursor'(null, null);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-clrefi.adb gcc-11.1.0/gcc/ada/libgnat/a-clrefi.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-clrefi.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-clrefi.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2007-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2007-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-clrefi.ads gcc-11.1.0/gcc/ada/libgnat/a-clrefi.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-clrefi.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-clrefi.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-coboho.adb gcc-11.1.0/gcc/ada/libgnat/a-coboho.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-coboho.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-coboho.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2015-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2015-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 26,31 ****
--- 26,32 ----
  ------------------------------------------------------------------------------
  
  with Unchecked_Conversion;
+ with System.Put_Images;
  
  package body Ada.Containers.Bounded_Holders is
  
*************** package body Ada.Containers.Bounded_Hold
*** 64,69 ****
--- 65,84 ----
        return Get (Left) = Get (Right);
     end "=";
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Holder)
+    is
+       use System.Put_Images;
+    begin
+       Array_Before (S);
+       Element_Type'Put_Image (S, Get (V));
+       Array_After (S);
+    end Put_Image;
+ 
     ---------
     -- Get --
     ---------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-coboho.ads gcc-11.1.0/gcc/ada/libgnat/a-coboho.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-coboho.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-coboho.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2015-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2015-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
***************
*** 30,35 ****
--- 30,36 ----
  ------------------------------------------------------------------------------
  
  private with System;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Element_Type (<>) is private;
*************** private
*** 93,103 ****
     type Holder is record
        Data : Storage_Array (1 .. Max_Size_In_Storage_Elements);
     end record
!      with Alignment => Standard'Maximum_Alignment;
     --  We would like to say "Alignment => Element_Type'Alignment", but that
     --  is illegal because it's not static, so we use the maximum possible
     --  (default) alignment instead.
  
     type Element_Access is access all Element_Type;
     pragma Assert (Element_Access'Size = Standard'Address_Size,
                    "cannot instantiate with an array type");
--- 94,107 ----
     type Holder is record
        Data : Storage_Array (1 .. Max_Size_In_Storage_Elements);
     end record
!      with Alignment => Standard'Maximum_Alignment, Put_Image => Put_Image;
     --  We would like to say "Alignment => Element_Type'Alignment", but that
     --  is illegal because it's not static, so we use the maximum possible
     --  (default) alignment instead.
  
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Holder);
+ 
     type Element_Access is access all Element_Type;
     pragma Assert (Element_Access'Size = Standard'Address_Size,
                    "cannot instantiate with an array type");
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cobove.adb gcc-11.1.0/gcc/ada/libgnat/a-cobove.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cobove.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cobove.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,35 ****
--- 30,36 ----
  with Ada.Containers.Generic_Array_Sort;
  
  with System; use type System.Address;
+ with System.Put_Images;
  
  package body Ada.Containers.Bounded_Vectors is
  
*************** package body Ada.Containers.Bounded_Vect
*** 320,328 ****
     -- Append --
     ------------
  
!    procedure Append (Container : in out Vector; New_Item : Vector) is
     begin
!       if New_Item.Is_Empty then
           return;
        end if;
  
--- 321,333 ----
     -- Append --
     ------------
  
!    procedure Append
!      (Container : in out Vector;
!       New_Item  : Element_Type;
!       Count     : Count_Type)
!    is
     begin
!       if Count = 0 then
           return;
        end if;
  
*************** package body Ada.Containers.Bounded_Vect
*** 330,345 ****
           raise Constraint_Error with "vector is already at its maximum length";
        end if;
  
!       Container.Insert (Container.Last + 1, New_Item);
     end Append;
  
!    procedure Append
!      (Container : in out Vector;
!       New_Item  : Element_Type;
!       Count     : Count_Type := 1)
!    is
     begin
!       if Count = 0 then
           return;
        end if;
  
--- 335,350 ----
           raise Constraint_Error with "vector is already at its maximum length";
        end if;
  
!       Container.Insert (Container.Last + 1, New_Item, Count);
     end Append;
  
!    -------------------
!    -- Append_Vector --
!    -------------------
! 
!    procedure Append_Vector (Container : in out Vector; New_Item : Vector) is
     begin
!       if New_Item.Is_Empty then
           return;
        end if;
  
*************** package body Ada.Containers.Bounded_Vect
*** 347,353 ****
           raise Constraint_Error with "vector is already at its maximum length";
        end if;
  
!       Container.Insert (Container.Last + 1, New_Item, Count);
     end Append;
  
     --------------
--- 352,369 ----
           raise Constraint_Error with "vector is already at its maximum length";
        end if;
  
!       Container.Insert_Vector (Container.Last + 1, New_Item);
!    end Append_Vector;
! 
!    ------------
!    -- Append --
!    ------------
! 
!    procedure Append (Container : in out Vector;
!                      New_Item  :        Element_Type)
!    is
!    begin
!       Insert (Container, Last_Index (Container) + 1, New_Item, 1);
     end Append;
  
     --------------
*************** package body Ada.Containers.Bounded_Vect
*** 483,488 ****
--- 499,506 ----
        Off      : Count_Type'Base;  -- Index expressed as offset from IT'First
  
     begin
+       TC_Check (Container.TC);
+ 
        --  Delete removes items from the vector, the number of which is the
        --  minimum of the specified Count and the items (if any) that exist from
        --  Index to Container.Last. There are no constraints on the specified
*************** package body Ada.Containers.Bounded_Vect
*** 532,539 ****
        --  the count on exit. Delete checks the count to determine whether it is
        --  being called while the associated callback procedure is executing.
  
-       TC_Check (Container.TC);
- 
        --  We first calculate what's available for deletion starting at
        --  Index. Here and elsewhere we use the wider of Index_Type'Base and
        --  Count_Type'Base as the type for intermediate values. (See function
--- 550,555 ----
*************** package body Ada.Containers.Bounded_Vect
*** 636,650 ****
        Count     : Count_Type := 1)
     is
     begin
-       --  It is not permitted to delete items while the container is busy (for
-       --  example, we're in the middle of a passive iteration). However, we
-       --  always treat deleting 0 items as a no-op, even when we're busy, so we
-       --  simply return without checking.
- 
-       if Count = 0 then
-          return;
-       end if;
- 
        --  The tampering bits exist to prevent an item from being deleted (or
        --  otherwise harmfully manipulated) while it is being visited. Query,
        --  Update, and Iterate increment the busy count on entry, and decrement
--- 652,657 ----
*************** package body Ada.Containers.Bounded_Vect
*** 654,659 ****
--- 661,670 ----
  
        TC_Check (Container.TC);
  
+       if Count = 0 then
+          return;
+       end if;
+ 
        --  There is no restriction on how large Count can be when deleting
        --  items. If it is equal or greater than the current length, then this
        --  is equivalent to clearing the vector. (In particular, there's no need
*************** package body Ada.Containers.Bounded_Vect
*** 701,706 ****
--- 712,728 ----
        end if;
     end Element;
  
+    -----------
+    -- Empty --
+    -----------
+ 
+    function Empty (Capacity : Count_Type := 10) return Vector is
+    begin
+       return Result : Vector (Capacity) do
+          Reserve_Capacity (Result, Capacity);
+       end return;
+    end Empty;
+ 
     --------------
     -- Finalize --
     --------------
*************** package body Ada.Containers.Bounded_Vect
*** 829,834 ****
--- 851,866 ----
        return Index_Type'First;
     end First_Index;
  
+    -----------------
+    -- New_Vector --
+    -----------------
+ 
+    function New_Vector (First, Last : Index_Type) return Vector
+    is
+    begin
+       return (To_Vector (Count_Type (Last - First + 1)));
+    end New_Vector;
+ 
     ---------------------
     -- Generic_Sorting --
     ---------------------
*************** package body Ada.Containers.Bounded_Vect
*** 882,887 ****
--- 914,921 ----
              return;
           end if;
  
+          TC_Check (Source.TC);
+ 
           if Checks and then Target'Address = Source'Address then
              raise Program_Error with
                "Target and Source denote same non-empty container";
*************** package body Ada.Containers.Bounded_Vect
*** 892,899 ****
              return;
           end if;
  
-          TC_Check (Source.TC);
- 
           I := Target.Length;
           Target.Set_Length (I + Source.Length);
  
--- 926,931 ----
*************** package body Ada.Containers.Bounded_Vect
*** 1021,1026 ****
--- 1053,1066 ----
        J     : Count_Type'Base;  -- scratch
  
     begin
+       --  The tampering bits exist to prevent an item from being harmfully
+       --  manipulated while it is being visited. Query, Update, and Iterate
+       --  increment the busy count on entry, and decrement the count on
+       --  exit. Insert checks the count to determine whether it is being called
+       --  while the associated callback procedure is executing.
+ 
+       TC_Check (Container.TC);
+ 
        --  As a precondition on the generic actual Index_Type, the base type
        --  must include Index_Type'Pred (Index_Type'First); this is the value
        --  that Container.Last assumes when the vector is empty. However, we do
*************** package body Ada.Containers.Bounded_Vect
*** 1176,1189 ****
           raise Constraint_Error with "Count is out of range";
        end if;
  
-       --  The tampering bits exist to prevent an item from being harmfully
-       --  manipulated while it is being visited. Query, Update, and Iterate
-       --  increment the busy count on entry, and decrement the count on
-       --  exit. Insert checks the count to determine whether it is being called
-       --  while the associated callback procedure is executing.
- 
-       TC_Check (Container.TC);
- 
        if Checks and then New_Length > Container.Capacity then
           raise Capacity_Error with "New length is larger than capacity";
        end if;
--- 1216,1221 ----
*************** package body Ada.Containers.Bounded_Vect
*** 1215,1221 ****
        end if;
     end Insert;
  
!    procedure Insert
       (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Vector)
--- 1247,1253 ----
        end if;
     end Insert;
  
!    procedure Insert_Vector
       (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Vector)
*************** package body Ada.Containers.Bounded_Vect
*** 1281,1289 ****
  
           Container.Elements (B + N - Src'Length .. B + N - 1) := Src;
        end;
!    end Insert;
  
!    procedure Insert
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector)
--- 1313,1321 ----
  
           Container.Elements (B + N - Src'Length .. B + N - 1) := Src;
        end;
!    end Insert_Vector;
  
!    procedure Insert_Vector
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector)
*************** package body Ada.Containers.Bounded_Vect
*** 1315,1324 ****
           Index := Before.Index;
        end if;
  
!       Insert (Container, Index, New_Item);
!    end Insert;
  
!    procedure Insert
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector;
--- 1347,1356 ----
           Index := Before.Index;
        end if;
  
!       Insert_Vector (Container, Index, New_Item);
!    end Insert_Vector;
  
!    procedure Insert_Vector
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector;
*************** package body Ada.Containers.Bounded_Vect
*** 1359,1368 ****
           Index := Before.Index;
        end if;
  
!       Insert (Container, Index, New_Item);
  
        Position := Cursor'(Container'Unchecked_Access, Index);
!    end Insert;
  
     procedure Insert
       (Container : in out Vector;
--- 1391,1400 ----
           Index := Before.Index;
        end if;
  
!       Insert_Vector (Container, Index, New_Item);
  
        Position := Cursor'(Container'Unchecked_Access, Index);
!    end Insert_Vector;
  
     procedure Insert
       (Container : in out Vector;
*************** package body Ada.Containers.Bounded_Vect
*** 1491,1496 ****
--- 1523,1536 ----
        J     : Count_Type'Base;  -- scratch
  
     begin
+       --  The tampering bits exist to prevent an item from being harmfully
+       --  manipulated while it is being visited. Query, Update, and Iterate
+       --  increment the busy count on entry, and decrement the count on
+       --  exit. Insert checks the count to determine whether it is being called
+       --  while the associated callback procedure is executing.
+ 
+       TC_Check (Container.TC);
+ 
        --  As a precondition on the generic actual Index_Type, the base type
        --  must include Index_Type'Pred (Index_Type'First); this is the value
        --  that Container.Last assumes when the vector is empty. However, we do
*************** package body Ada.Containers.Bounded_Vect
*** 1646,1659 ****
           raise Constraint_Error with "Count is out of range";
        end if;
  
-       --  The tampering bits exist to prevent an item from being harmfully
-       --  manipulated while it is being visited. Query, Update, and Iterate
-       --  increment the busy count on entry, and decrement the count on
-       --  exit. Insert checks the count to determine whether it is being called
-       --  while the associated callback procedure is executing.
- 
-       TC_Check (Container.TC);
- 
        --  An internal array has already been allocated, so we need to check
        --  whether there is enough unused storage for the new items.
  
--- 1686,1691 ----
*************** package body Ada.Containers.Bounded_Vect
*** 1937,1950 ****
           return;
        end if;
  
        if Checks and then Target.Capacity < Source.Length then
           raise Capacity_Error  -- ???
             with "Target capacity is less than Source length";
        end if;
  
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
        --  Clear Target now, in case element assignment fails
  
        Target.Last := No_Index;
--- 1969,1982 ----
           return;
        end if;
  
+       TC_Check (Target.TC);
+       TC_Check (Source.TC);
+ 
        if Checks and then Target.Capacity < Source.Length then
           raise Capacity_Error  -- ???
             with "Target capacity is less than Source length";
        end if;
  
        --  Clear Target now, in case element assignment fails
  
        Target.Last := No_Index;
*************** package body Ada.Containers.Bounded_Vect
*** 2000,2022 ****
     -- Prepend --
     -------------
  
-    procedure Prepend (Container : in out Vector; New_Item : Vector) is
-    begin
-       Insert (Container, Index_Type'First, New_Item);
-    end Prepend;
- 
     procedure Prepend
       (Container : in out Vector;
        New_Item  : Element_Type;
        Count     : Count_Type := 1)
     is
     begin
!       Insert (Container,
!               Index_Type'First,
!               New_Item,
!               Count);
     end Prepend;
  
     --------------
     -- Previous --
     --------------
--- 2032,2055 ----
     -- Prepend --
     -------------
  
     procedure Prepend
       (Container : in out Vector;
        New_Item  : Element_Type;
        Count     : Count_Type := 1)
     is
     begin
!       Insert (Container, Index_Type'First, New_Item, Count);
     end Prepend;
  
+    --------------------
+    -- Prepend_Vector --
+    --------------------
+ 
+    procedure Prepend_Vector (Container : in out Vector; New_Item : Vector) is
+    begin
+       Insert_Vector (Container, Index_Type'First, New_Item);
+    end Prepend_Vector;
+ 
     --------------
     -- Previous --
     --------------
*************** package body Ada.Containers.Bounded_Vect
*** 2102,2107 ****
--- 2135,2165 ----
        Query_Element (Position.Container.all, Position.Index, Process);
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Vector)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+    begin
+       Array_Before (S);
+ 
+       for X of V loop
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Element_Type'Put_Image (S, X);
+       end loop;
+ 
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Bounded_Vect
*** 2222,2233 ****
        New_Item  : Element_Type)
     is
     begin
        if Checks and then Index > Container.Last then
           raise Constraint_Error with "Index is out of range";
        end if;
  
-       TE_Check (Container.TC);
- 
        Container.Elements (To_Array_Index (Index)) := New_Item;
     end Replace_Element;
  
--- 2280,2291 ----
        New_Item  : Element_Type)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then Index > Container.Last then
           raise Constraint_Error with "Index is out of range";
        end if;
  
        Container.Elements (To_Array_Index (Index)) := New_Item;
     end Replace_Element;
  
*************** package body Ada.Containers.Bounded_Vect
*** 2237,2242 ****
--- 2295,2302 ----
        New_Item  : Element_Type)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then Position.Container = null then
           raise Constraint_Error with "Position cursor has no element";
        end if;
*************** package body Ada.Containers.Bounded_Vect
*** 2250,2257 ****
           raise Constraint_Error with "Position cursor is out of range";
        end if;
  
-       TE_Check (Container.TC);
- 
        Container.Elements (To_Array_Index (Position.Index)) := New_Item;
     end Replace_Element;
  
--- 2310,2315 ----
*************** package body Ada.Containers.Bounded_Vect
*** 2425,2430 ****
--- 2483,2490 ----
        E : Elements_Array renames Container.Elements;
  
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then I > Container.Last then
           raise Constraint_Error with "I index is out of range";
        end if;
*************** package body Ada.Containers.Bounded_Vect
*** 2437,2444 ****
           return;
        end if;
  
-       TE_Check (Container.TC);
- 
        declare
           EI_Copy : constant Element_Type := E (To_Array_Index (I));
        begin
--- 2497,2502 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cobove.ads gcc-11.1.0/gcc/ada/libgnat/a-cobove.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cobove.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cobove.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Iterator_Interfaces;
*** 36,41 ****
--- 36,42 ----
  with Ada.Containers.Helpers;
  private with Ada.Streams;
  private with Ada.Finalization;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Index_Type is range <>;
*************** package Ada.Containers.Bounded_Vectors i
*** 58,64 ****
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type;
  
     pragma Preelaborable_Initialization (Vector);
  
--- 59,69 ----
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type,
!       Aggregate         => (Empty          => Empty,
!                             Add_Unnamed    => Append,
!                             New_Indexed    => New_Vector,
!                             Assign_Indexed => Replace_Element);
  
     pragma Preelaborable_Initialization (Vector);
  
*************** package Ada.Containers.Bounded_Vectors i
*** 74,81 ****
--- 79,92 ----
     package Vector_Iterator_Interfaces is new
        Ada.Iterator_Interfaces (Cursor, Has_Element);
  
+    function Empty (Capacity : Count_Type := 10) return Vector;
+ 
     overriding function "=" (Left, Right : Vector) return Boolean;
  
+    function New_Vector (First, Last : Index_Type) return Vector
+      with Pre => First = Index_Type'First;
+    --  Ada_2020 aggregate operation.
+ 
     function To_Vector (Length : Count_Type) return Vector;
  
     function To_Vector
*************** package Ada.Containers.Bounded_Vectors i
*** 179,202 ****
  
     procedure Move (Target : in out Vector; Source : in out Vector);
  
!    procedure Insert
       (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Vector);
  
     procedure Insert
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector);
  
     procedure Insert
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector;
        Position  : out Cursor);
  
     procedure Insert
       (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Element_Type;
        Count     : Count_Type := 1);
--- 190,232 ----
  
     procedure Move (Target : in out Vector; Source : in out Vector);
  
!    procedure Insert_Vector
       (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Vector);
  
     procedure Insert
       (Container : in out Vector;
+       Before    : Extended_Index;
+       New_Item  : Vector) renames Insert_Vector;
+    --  Retained for now for compatibility; AI12-0400 will remove this.
+ 
+    procedure Insert_Vector
+      (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector);
  
     procedure Insert
       (Container : in out Vector;
        Before    : Cursor;
+       New_Item  : Vector) renames Insert_Vector;
+    --  Retained for now for compatibility; AI12-0400 will remove this.
+ 
+    procedure Insert_Vector
+      (Container : in out Vector;
+       Before    : Cursor;
        New_Item  : Vector;
        Position  : out Cursor);
  
     procedure Insert
       (Container : in out Vector;
+       Before    : Cursor;
+       New_Item  : Vector;
+       Position  : out Cursor) renames Insert_Vector;
+    --  Retained for now for compatibility; AI12-0400 will remove this.
+ 
+    procedure Insert
+      (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Element_Type;
        Count     : Count_Type := 1);
*************** package Ada.Containers.Bounded_Vectors i
*** 225,247 ****
        Position  : out Cursor;
        Count     : Count_Type := 1);
  
!    procedure Prepend
       (Container : in out Vector;
        New_Item  : Vector);
  
     procedure Prepend
       (Container : in out Vector;
        New_Item  : Element_Type;
        Count     : Count_Type := 1);
  
!    procedure Append
       (Container : in out Vector;
        New_Item  : Vector);
  
     procedure Append
       (Container : in out Vector;
        New_Item  : Element_Type;
!       Count     : Count_Type := 1);
  
     procedure Insert_Space
       (Container : in out Vector;
--- 255,290 ----
        Position  : out Cursor;
        Count     : Count_Type := 1);
  
!    procedure Prepend_Vector
       (Container : in out Vector;
        New_Item  : Vector);
  
     procedure Prepend
       (Container : in out Vector;
+       New_Item  : Vector) renames Prepend_Vector;
+    --  Retained for now for compatibility; AI12-0400 will remove this.
+ 
+    procedure Prepend
+      (Container : in out Vector;
        New_Item  : Element_Type;
        Count     : Count_Type := 1);
  
!    procedure Append_Vector
       (Container : in out Vector;
        New_Item  : Vector);
  
     procedure Append
       (Container : in out Vector;
+       New_Item  : Vector) renames Append_Vector;
+    --  Retained for now for compatibility; AI12-0400 will remove this.
+ 
+    procedure Append
+      (Container : in out Vector;
        New_Item  : Element_Type;
!       Count     : Count_Type);
! 
!    procedure Append (Container : in out Vector;
!                      New_Item  :        Element_Type);
  
     procedure Insert_Space
       (Container : in out Vector;
*************** private
*** 377,386 ****
     function "=" (L, R : Elements_Array) return Boolean is abstract;
  
     type Vector (Capacity : Count_Type) is tagged record
!       Elements : Elements_Array (1 .. Capacity) := (others => <>);
        Last     : Extended_Index := No_Index;
        TC       : aliased Tamper_Counts;
!    end record;
  
     procedure Write
       (Stream    : not null access Root_Stream_Type'Class;
--- 420,432 ----
     function "=" (L, R : Elements_Array) return Boolean is abstract;
  
     type Vector (Capacity : Count_Type) is tagged record
!       Elements : Elements_Array (1 .. Capacity);
        Last     : Extended_Index := No_Index;
        TC       : aliased Tamper_Counts;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Vector);
  
     procedure Write
       (Stream    : not null access Root_Stream_Type'Class;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cofove.adb gcc-11.1.0/gcc/ada/libgnat/a-cofove.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cofove.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cofove.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Containers.Formal_Vecto
*** 33,39 ****
    SPARK_Mode => Off
  is
  
!    type Int is range System.Min_Int .. System.Max_Int;
  
     function To_Array_Index (Index : Index_Type'Base) return Count_Type'Base;
  
--- 33,39 ----
    SPARK_Mode => Off
  is
  
!    subtype Int is Long_Long_Integer;
  
     function To_Array_Index (Index : Index_Type'Base) return Count_Type'Base;
  
*************** is
*** 171,177 ****
        elsif Capacity >= LS then
           C := Capacity;
        else
!          raise Capacity_Error;
        end if;
  
        return Target : Vector (C) do
--- 171,177 ----
        elsif Capacity >= LS then
           C := Capacity;
        else
!          raise Capacity_Error with "Capacity too small";
        end if;
  
        return Target : Vector (C) do
*************** is
*** 868,874 ****
--- 868,878 ----
              --  less than 0, so it is safe to compute the following sum without
              --  fear of overflow.
  
+             pragma Warnings
+               (Off, "value not in range of type ""T"" defined at line 4");
              Index := No_Index + Index_Type'Base (Count_Type'Last);
+             pragma Warnings
+               (On, "value not in range of type ""T"" defined at line 4");
  
              if Index <= Index_Type'Last then
  
*************** is
*** 952,957 ****
--- 956,967 ----
  
        if New_Length > Max_Length then
           raise Constraint_Error with "Count is out of range";
+ 
+       --  Raise Capacity_Error if the new length exceeds the container's
+       --  capacity.
+ 
+       elsif New_Length > Container.Capacity then
+          raise Capacity_Error with "New length is larger than capacity";
        end if;
  
        J := To_Array_Index (Before);
*************** is
*** 1100,1106 ****
     is
     begin
        if Capacity > Container.Capacity then
!          raise Constraint_Error with "Capacity is out of range";
        end if;
     end Reserve_Capacity;
  
--- 1110,1116 ----
     is
     begin
        if Capacity > Container.Capacity then
!          raise Capacity_Error with "Capacity is out of range";
        end if;
     end Reserve_Capacity;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cofove.ads gcc-11.1.0/gcc/ada/libgnat/a-cofove.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cofove.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cofove.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cofuba.adb gcc-11.1.0/gcc/ada/libgnat/a-cofuba.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cofuba.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cofuba.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2016-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2016-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cofuba.ads gcc-11.1.0/gcc/ada/libgnat/a-cofuba.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cofuba.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cofuba.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2016-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2016-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cofuma.adb gcc-11.1.0/gcc/ada/libgnat/a-cofuma.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cofuma.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cofuma.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2016-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2016-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cofuma.ads gcc-11.1.0/gcc/ada/libgnat/a-cofuma.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cofuma.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cofuma.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2016-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2016-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cofuse.adb gcc-11.1.0/gcc/ada/libgnat/a-cofuse.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cofuse.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cofuse.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2016-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2016-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cofuse.ads gcc-11.1.0/gcc/ada/libgnat/a-cofuse.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cofuse.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cofuse.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2016-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2016-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cofuve.adb gcc-11.1.0/gcc/ada/libgnat/a-cofuve.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cofuve.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cofuve.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2016-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2016-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cofuve.ads gcc-11.1.0/gcc/ada/libgnat/a-cofuve.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cofuve.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cofuve.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2016-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2016-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package Ada.Containers.Functional_Vector
*** 92,98 ****
             Length (Container));
     pragma Annotate (GNATprove, Inline_For_Proof, Last);
  
!    function First return Extended_Index is (Index_Type'First);
     --  First index of a sequence
  
     ------------------------
--- 92,99 ----
             Length (Container));
     pragma Annotate (GNATprove, Inline_For_Proof, Last);
  
!    function First return Extended_Index is (Index_Type'First) with
!      Global => null;
     --  First index of a sequence
  
     ------------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cogeso.adb gcc-11.1.0/gcc/ada/libgnat/a-cogeso.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cogeso.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cogeso.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,38 ****
  
  --  This algorithm was adapted from GNAT.Heap_Sort (see g-heasor.ad[sb])
  
- with System;
- 
  procedure Ada.Containers.Generic_Sort (First, Last : Index_Type'Base) is
!    type T is range System.Min_Int .. System.Max_Int;
  
     function To_Index (J : T) return Index_Type;
     pragma Inline (To_Index);
--- 29,36 ----
  
  --  This algorithm was adapted from GNAT.Heap_Sort (see g-heasor.ad[sb])
  
  procedure Ada.Containers.Generic_Sort (First, Last : Index_Type'Base) is
!    subtype T is Long_Long_Integer;
  
     function To_Index (J : T) return Index_Type;
     pragma Inline (To_Index);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cogeso.ads gcc-11.1.0/gcc/ada/libgnat/a-cogeso.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cogeso.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cogeso.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cohama.adb gcc-11.1.0/gcc/ada/libgnat/a-cohama.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cohama.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cohama.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Elaborate_All (Ada.Containers.Has
*** 38,45 ****
  with Ada.Containers.Helpers; use Ada.Containers.Helpers;
  
  with System; use type System.Address;
  
! package body Ada.Containers.Hashed_Maps is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 38,48 ----
  with Ada.Containers.Helpers; use Ada.Containers.Helpers;
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Hashed_Maps with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Hashed_Maps
*** 314,319 ****
--- 317,324 ----
  
     procedure Delete (Container : in out Map; Position : in out Cursor) is
     begin
+       TC_Check (Container.HT.TC);
+ 
        if Checks and then Position.Node = null then
           raise Constraint_Error with
             "Position cursor of Delete equals No_Element";
*************** package body Ada.Containers.Hashed_Maps
*** 325,338 ****
             "Position cursor of Delete designates wrong map";
        end if;
  
-       TC_Check (Container.HT.TC);
- 
        pragma Assert (Vet (Position), "bad cursor in Delete");
  
        HT_Ops.Delete_Node_Sans_Free (Container.HT, Position.Node);
  
        Free (Position.Node);
        Position.Container := null;
     end Delete;
  
     -------------
--- 330,343 ----
             "Position cursor of Delete designates wrong map";
        end if;
  
        pragma Assert (Vet (Position), "bad cursor in Delete");
  
        HT_Ops.Delete_Node_Sans_Free (Container.HT, Position.Node);
  
        Free (Position.Node);
        Position.Container := null;
+       Position.Position := No_Element.Position;
+       pragma Assert (Position = No_Element);
     end Delete;
  
     -------------
*************** package body Ada.Containers.Hashed_Maps
*** 364,369 ****
--- 369,385 ----
        return Position.Node.Element;
     end Element;
  
+    -----------
+    -- Empty --
+    -----------
+ 
+    function Empty (Capacity : Count_Type := 1000) return Map is
+    begin
+       return Result : Map do
+          Reserve_Capacity (Result, Capacity);
+       end return;
+    end Empty;
+ 
     -------------------------
     -- Equivalent_Key_Node --
     -------------------------
*************** package body Ada.Containers.Hashed_Maps
*** 868,873 ****
--- 884,919 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Map)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+ 
+       procedure Put_Key_Value (Position : Cursor);
+       procedure Put_Key_Value (Position : Cursor) is
+       begin
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Key_Type'Put_Image (S, Key (Position));
+          Put_Arrow (S);
+          Element_Type'Put_Image (S, Element (Position));
+       end Put_Key_Value;
+ 
+    begin
+       Array_Before (S);
+       Iterate (V, Put_Key_Value'Access);
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Hashed_Maps
*** 999,1011 ****
        Node : constant Node_Access := Key_Ops.Find (Container.HT, Key);
  
     begin
        if Checks and then Node = null then
           raise Constraint_Error with
             "attempt to replace key not in map";
        end if;
  
-       TE_Check (Container.HT.TC);
- 
        Node.Key := Key;
        Node.Element := New_Item;
     end Replace;
--- 1045,1057 ----
        Node : constant Node_Access := Key_Ops.Find (Container.HT, Key);
  
     begin
+       TE_Check (Container.HT.TC);
+ 
        if Checks and then Node = null then
           raise Constraint_Error with
             "attempt to replace key not in map";
        end if;
  
        Node.Key := Key;
        Node.Element := New_Item;
     end Replace;
*************** package body Ada.Containers.Hashed_Maps
*** 1020,1025 ****
--- 1066,1073 ----
        New_Item  : Element_Type)
     is
     begin
+       TE_Check (Position.Container.HT.TC);
+ 
        if Checks and then Position.Node = null then
           raise Constraint_Error with
             "Position cursor of Replace_Element equals No_Element";
*************** package body Ada.Containers.Hashed_Maps
*** 1031,1038 ****
             "Position cursor of Replace_Element designates wrong map";
        end if;
  
-       TE_Check (Position.Container.HT.TC);
- 
        pragma Assert (Vet (Position), "bad cursor in Replace_Element");
  
        Position.Node.Element := New_Item;
--- 1079,1084 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cohama.ads gcc-11.1.0/gcc/ada/libgnat/a-cohama.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cohama.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cohama.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Iterator_Interfaces;
*** 36,41 ****
--- 36,42 ----
  private with Ada.Containers.Hash_Tables;
  private with Ada.Finalization;
  private with Ada.Streams;
+ private with Ada.Strings.Text_Output;
  
  --  The language-defined generic package Containers.Hashed_Maps provides
  --  private types Map and Cursor, and a set of operations for each type. A map
*************** generic
*** 88,94 ****
     --  map values returns an unspecified value. The exact arguments and number
     --  of calls of this generic formal function by the function "=" on map
     --  values are unspecified.
! package Ada.Containers.Hashed_Maps is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
--- 89,97 ----
     --  map values returns an unspecified value. The exact arguments and number
     --  of calls of this generic formal function by the function "=" on map
     --  values are unspecified.
! package Ada.Containers.Hashed_Maps with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
*************** package Ada.Containers.Hashed_Maps is
*** 98,104 ****
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type;
  
     pragma Preelaborable_Initialization (Map);
  
--- 101,109 ----
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type,
!       Aggregate         => (Empty     => Empty,
!                             Add_Named => Insert);
  
     pragma Preelaborable_Initialization (Map);
  
*************** package Ada.Containers.Hashed_Maps is
*** 113,118 ****
--- 118,125 ----
     --  Cursor objects declared without an initialization expression are
     --  initialized to the value No_Element.
  
+    function Empty (Capacity : Count_Type := 1000) return Map;
+ 
     function Has_Element (Position : Cursor) return Boolean;
     --  Returns True if Position designates an element, and returns False
     --  otherwise.
*************** private
*** 421,427 ****
  
     type Map is new Ada.Finalization.Controlled with record
        HT : HT_Types.Hash_Table_Type;
!    end record;
  
     overriding procedure Adjust (Container : in out Map);
  
--- 428,437 ----
  
     type Map is new Ada.Finalization.Controlled with record
        HT : HT_Types.Hash_Table_Type;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Map);
  
     overriding procedure Adjust (Container : in out Map);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cohase.adb gcc-11.1.0/gcc/ada/libgnat/a-cohase.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cohase.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cohase.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Containers.Helpers; use Ada.Con
*** 40,47 ****
  with Ada.Containers.Prime_Numbers;
  
  with System; use type System.Address;
  
! package body Ada.Containers.Hashed_Sets is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 40,50 ----
  with Ada.Containers.Prime_Numbers;
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Hashed_Sets with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Hashed_Sets
*** 299,304 ****
--- 302,309 ----
        Position  : in out Cursor)
     is
     begin
+       TC_Check (Container.HT.TC);
+ 
        if Checks and then Position.Node = null then
           raise Constraint_Error with "Position cursor equals No_Element";
        end if;
*************** package body Ada.Containers.Hashed_Sets
*** 308,321 ****
           raise Program_Error with "Position cursor designates wrong set";
        end if;
  
-       TC_Check (Container.HT.TC);
- 
        pragma Assert (Vet (Position), "bad cursor in Delete");
  
        HT_Ops.Delete_Node_Sans_Free (Container.HT, Position.Node);
  
        Free (Position.Node);
        Position.Container := null;
     end Delete;
  
     ----------------
--- 313,326 ----
           raise Program_Error with "Position cursor designates wrong set";
        end if;
  
        pragma Assert (Vet (Position), "bad cursor in Delete");
  
        HT_Ops.Delete_Node_Sans_Free (Container.HT, Position.Node);
  
        Free (Position.Node);
        Position.Container := null;
+       Position.Position := No_Element.Position;
+       pragma Assert (Position = No_Element);
     end Delete;
  
     ----------------
*************** package body Ada.Containers.Hashed_Sets
*** 465,470 ****
--- 470,486 ----
        return Position.Node.Element;
     end Element;
  
+    -----------
+    -- Empty --
+    -----------
+ 
+    function Empty (Capacity : Count_Type := 1000) return Set is
+    begin
+       return Result : Set do
+          Reserve_Capacity (Result, Capacity);
+       end return;
+    end Empty;
+ 
     ---------------------
     -- Equivalent_Sets --
     ---------------------
*************** package body Ada.Containers.Hashed_Sets
*** 1147,1152 ****
--- 1163,1193 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Set)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+    begin
+       Array_Before (S);
+ 
+       for X of V loop
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Element_Type'Put_Image (S, X);
+       end loop;
+ 
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Hashed_Sets
*** 1204,1216 ****
          Element_Keys.Find (Container.HT, New_Item);
  
     begin
        if Checks and then Node = null then
           raise Constraint_Error with
             "attempt to replace element not in set";
        end if;
  
-       TE_Check (Container.HT.TC);
- 
        Node.Element := New_Item;
     end Replace;
  
--- 1245,1257 ----
          Element_Keys.Find (Container.HT, New_Item);
  
     begin
+       TE_Check (Container.HT.TC);
+ 
        if Checks and then Node = null then
           raise Constraint_Error with
             "attempt to replace element not in set";
        end if;
  
        Node.Element := New_Item;
     end Replace;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cohase.ads gcc-11.1.0/gcc/ada/libgnat/a-cohase.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cohase.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cohase.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private with Ada.Containers.Hash_Tables;
*** 37,42 ****
--- 37,43 ----
  with Ada.Containers.Helpers;
  private with Ada.Finalization;
  private with Ada.Streams;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Element_Type is private;
*************** generic
*** 48,54 ****
  
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Hashed_Sets is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
--- 49,57 ----
  
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Hashed_Sets with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
*************** package Ada.Containers.Hashed_Sets is
*** 57,63 ****
     with
        Constant_Indexing => Constant_Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type;
  
     pragma Preelaborable_Initialization (Set);
  
--- 60,68 ----
     with
        Constant_Indexing => Constant_Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type,
!       Aggregate         => (Empty       => Empty,
!                             Add_Unnamed => Include);
  
     pragma Preelaborable_Initialization (Set);
  
*************** package Ada.Containers.Hashed_Sets is
*** 78,83 ****
--- 83,90 ----
     package Set_Iterator_Interfaces is new
       Ada.Iterator_Interfaces (Cursor, Has_Element);
  
+    function Empty (Capacity : Count_Type := 1000) return Set;
+ 
     function "=" (Left, Right : Set) return Boolean;
     --  For each element in Left, set equality attempts to find the equal
     --  element in Right; if a search fails, then set equality immediately
*************** private
*** 500,506 ****
  
     type Set is new Ada.Finalization.Controlled with record
        HT : HT_Types.Hash_Table_Type;
!    end record;
  
     overriding procedure Adjust (Container : in out Set);
  
--- 507,516 ----
  
     type Set is new Ada.Finalization.Controlled with record
        HT : HT_Types.Hash_Table_Type;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Set);
  
     overriding procedure Adjust (Container : in out Set);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cohata.ads gcc-11.1.0/gcc/ada/libgnat/a-cohata.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cohata.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cohata.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Ada.Containers.Hash_Tables is
*** 72,78 ****
           Length  : Count_Type                  := 0;
           TC      : aliased Helpers.Tamper_Counts;
           Free    : Count_Type'Base             := -1;
!          Nodes   : Nodes_Type (1 .. Capacity)  := (others => <>);
           Buckets : Buckets_Type (1 .. Modulus) := (others => 0);
        end record;
  
--- 72,78 ----
           Length  : Count_Type                  := 0;
           TC      : aliased Helpers.Tamper_Counts;
           Free    : Count_Type'Base             := -1;
!          Nodes   : Nodes_Type (1 .. Capacity);
           Buckets : Buckets_Type (1 .. Modulus) := (others => 0);
        end record;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-coinho.adb gcc-11.1.0/gcc/ada/libgnat/a-coinho.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-coinho.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-coinho.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2012-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2012-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 26,31 ****
--- 26,32 ----
  ------------------------------------------------------------------------------
  
  with Ada.Unchecked_Deallocation;
+ with System.Put_Images;
  
  package body Ada.Containers.Indefinite_Holders is
  
*************** package body Ada.Containers.Indefinite_H
*** 229,234 ****
--- 230,251 ----
        B := B - 1;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Holder)
+    is
+       use System.Put_Images;
+    begin
+       Array_Before (S);
+       if not Is_Empty (V) then
+          Element_Type'Put_Image (S, Element (V));
+       end if;
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Indefinite_H
*** 304,309 ****
--- 321,350 ----
        end;
     end Replace_Element;
  
+    ----------
+    -- Swap --
+    ----------
+ 
+    procedure Swap (Left, Right : in out Holder) is
+    begin
+       if Left.Busy /= 0 then
+          raise Program_Error with "attempt to tamper with elements";
+       end if;
+ 
+       if Right.Busy /= 0 then
+          raise Program_Error with "attempt to tamper with elements";
+       end if;
+ 
+       if Left.Element /= Right.Element then
+          declare
+             Tmp : constant Element_Access := Left.Element;
+          begin
+             Left.Element := Right.Element;
+             Right.Element := Tmp;
+          end;
+       end if;
+    end Swap;
+ 
     ---------------
     -- To_Holder --
     ---------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-coinho.ads gcc-11.1.0/gcc/ada/libgnat/a-coinho.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-coinho.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-coinho.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
***************
*** 31,36 ****
--- 31,37 ----
  
  private with Ada.Finalization;
  private with Ada.Streams;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Element_Type (<>) is private;
*************** package Ada.Containers.Indefinite_Holder
*** 92,97 ****
--- 93,100 ----
  
     procedure Move (Target : in out Holder; Source : in out Holder);
  
+    procedure Swap (Left, Right : in out Holder);
+ 
  private
  
     use Ada.Finalization;
*************** private
*** 113,119 ****
     type Holder is new Ada.Finalization.Controlled with record
        Element : Element_Access;
        Busy    : Natural := 0;
!    end record;
     for Holder'Read use Read;
     for Holder'Write use Write;
  
--- 116,126 ----
     type Holder is new Ada.Finalization.Controlled with record
        Element : Element_Access;
        Busy    : Natural := 0;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Holder);
! 
     for Holder'Read use Read;
     for Holder'Write use Write;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-coinho__shared.adb gcc-11.1.0/gcc/ada/libgnat/a-coinho__shared.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-coinho__shared.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-coinho__shared.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2013-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2013-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,38 ****
--- 33,39 ----
  --  internal shared object and element).
  
  with Ada.Unchecked_Deallocation;
+ with System.Put_Images;
  
  package body Ada.Containers.Indefinite_Holders is
  
*************** package body Ada.Containers.Indefinite_H
*** 319,324 ****
--- 320,341 ----
        B := B - 1;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Holder)
+    is
+       use System.Put_Images;
+    begin
+       Array_Before (S);
+       if not Is_Empty (V) then
+          Element_Type'Put_Image (S, Element (V));
+       end if;
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Indefinite_H
*** 426,431 ****
--- 443,472 ----
        end if;
     end Replace_Element;
  
+    ----------
+    -- Swap --
+    ----------
+ 
+    procedure Swap (Left, Right : in out Holder) is
+    begin
+       if Left.Busy /= 0 then
+          raise Program_Error with "attempt to tamper with elements";
+       end if;
+ 
+       if Right.Busy /= 0 then
+          raise Program_Error with "attempt to tamper with elements";
+       end if;
+ 
+       if Left.Reference /= Right.Reference then
+          declare
+             Tmp : constant Shared_Holder_Access := Left.Reference;
+          begin
+             Left.Reference := Right.Reference;
+             Right.Reference := Tmp;
+          end;
+       end if;
+    end Swap;
+ 
     ---------------
     -- To_Holder --
     ---------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-coinho__shared.ads gcc-11.1.0/gcc/ada/libgnat/a-coinho__shared.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-coinho__shared.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-coinho__shared.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2013-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2013-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private with Ada.Finalization;
*** 36,41 ****
--- 36,42 ----
  private with Ada.Streams;
  
  private with System.Atomic_Counters;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Element_Type (<>) is private;
*************** package Ada.Containers.Indefinite_Holder
*** 96,101 ****
--- 97,104 ----
  
     procedure Move (Target : in out Holder; Source : in out Holder);
  
+    procedure Swap (Left, Right : in out Holder);
+ 
  private
  
     use Ada.Finalization;
*************** private
*** 128,134 ****
     type Holder is new Ada.Finalization.Controlled with record
        Reference : Shared_Holder_Access;
        Busy      : Natural := 0;
!    end record;
     for Holder'Read use Read;
     for Holder'Write use Write;
  
--- 131,141 ----
     type Holder is new Ada.Finalization.Controlled with record
        Reference : Shared_Holder_Access;
        Busy      : Natural := 0;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Holder);
! 
     for Holder'Read use Read;
     for Holder'Write use Write;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-coinve.adb gcc-11.1.0/gcc/ada/libgnat/a-coinve.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-coinve.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-coinve.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Containers.Generic_Array_Sort;
*** 31,38 ****
  with Ada.Unchecked_Deallocation;
  
  with System; use type System.Address;
  
! package body Ada.Containers.Indefinite_Vectors is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 31,41 ----
  with Ada.Unchecked_Deallocation;
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Indefinite_Vectors with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Indefinite_V
*** 64,71 ****
     begin
        return Result : Vector do
           Reserve_Capacity (Result, Length (Left) + Length (Right));
!          Append (Result, Left);
!          Append (Result, Right);
        end return;
     end "&";
  
--- 67,74 ----
     begin
        return Result : Vector do
           Reserve_Capacity (Result, Length (Left) + Length (Right));
!          Append_Vector (Result, Left);
!          Append_Vector (Result, Right);
        end return;
     end "&";
  
*************** package body Ada.Containers.Indefinite_V
*** 73,79 ****
     begin
        return Result : Vector do
           Reserve_Capacity (Result, Length (Left) + 1);
!          Append (Result, Left);
           Append (Result, Right);
        end return;
     end "&";
--- 76,82 ----
     begin
        return Result : Vector do
           Reserve_Capacity (Result, Length (Left) + 1);
!          Append_Vector (Result, Left);
           Append (Result, Right);
        end return;
     end "&";
*************** package body Ada.Containers.Indefinite_V
*** 83,89 ****
        return Result : Vector do
           Reserve_Capacity (Result, 1 + Length (Right));
           Append (Result, Left);
!          Append (Result, Right);
        end return;
     end "&";
  
--- 86,92 ----
        return Result : Vector do
           Reserve_Capacity (Result, 1 + Length (Right));
           Append (Result, Left);
!          Append_Vector (Result, Right);
        end return;
     end "&";
  
*************** package body Ada.Containers.Indefinite_V
*** 173,197 ****
        end;
     end Adjust;
  
!    ------------
!    -- Append --
!    ------------
  
!    procedure Append (Container : in out Vector; New_Item : Vector) is
     begin
        if Is_Empty (New_Item) then
           return;
        elsif Checks and then Container.Last = Index_Type'Last then
           raise Constraint_Error with "vector is already at its maximum length";
        else
!          Insert (Container, Container.Last + 1, New_Item);
        end if;
!    end Append;
  
     procedure Append
       (Container : in out Vector;
        New_Item  : Element_Type;
!       Count     : Count_Type := 1)
     is
     begin
        --  In the general case, we pass the buck to Insert, but for efficiency,
--- 176,200 ----
        end;
     end Adjust;
  
!    -------------------
!    -- Append_Vector --
!    -------------------
  
!    procedure Append_Vector (Container : in out Vector; New_Item : Vector) is
     begin
        if Is_Empty (New_Item) then
           return;
        elsif Checks and then Container.Last = Index_Type'Last then
           raise Constraint_Error with "vector is already at its maximum length";
        else
!          Insert_Vector (Container, Container.Last + 1, New_Item);
        end if;
!    end Append_Vector;
  
     procedure Append
       (Container : in out Vector;
        New_Item  : Element_Type;
!       Count     : Count_Type)
     is
     begin
        --  In the general case, we pass the buck to Insert, but for efficiency,
*************** package body Ada.Containers.Indefinite_V
*** 226,231 ****
--- 229,245 ----
        end if;
     end Append;
  
+    ------------
+    -- Append --
+    ------------
+ 
+    procedure Append (Container : in out Vector;
+                         New_Item   :        Element_Type)
+    is
+    begin
+       Insert (Container, Last_Index (Container) + 1, New_Item, 1);
+    end Append;
+ 
     ----------------------
     -- Append_Slow_Path --
     ----------------------
*************** package body Ada.Containers.Indefinite_V
*** 255,261 ****
           return;
        else
           Target.Clear;
!          Target.Append (Source);
        end if;
     end Assign;
  
--- 269,275 ----
           return;
        else
           Target.Clear;
!          Target.Append_Vector (Source);
        end if;
     end Assign;
  
*************** package body Ada.Containers.Indefinite_V
*** 408,413 ****
--- 422,435 ----
        J        : Index_Type'Base;  -- first index of items that slide down
  
     begin
+       --  The tampering bits exist to prevent an item from being deleted (or
+       --  otherwise harmfully manipulated) while it is being visited. Query,
+       --  Update, and Iterate increment the busy count on entry, and decrement
+       --  the count on exit. Delete checks the count to determine whether it is
+       --  being called while the associated callback procedure is executing.
+ 
+       TC_Check (Container.TC);
+ 
        --  Delete removes items from the vector, the number of which is the
        --  minimum of the specified Count and the items (if any) that exist from
        --  Index to Container.Last. There are no constraints on the specified
*************** package body Ada.Containers.Indefinite_V
*** 460,473 ****
           return;
        end if;
  
-       --  The tampering bits exist to prevent an item from being deleted (or
-       --  otherwise harmfully manipulated) while it is being visited. Query,
-       --  Update, and Iterate increment the busy count on entry, and decrement
-       --  the count on exit. Delete checks the count to determine whether it is
-       --  being called while the associated callback procedure is executing.
- 
-       TC_Check (Container.TC);
- 
        --  We first calculate what's available for deletion starting at
        --  Index. Here and elsewhere we use the wider of Index_Type'Base and
        --  Count_Type'Base as the type for intermediate values. (See function
--- 482,487 ----
*************** package body Ada.Containers.Indefinite_V
*** 731,736 ****
--- 745,761 ----
        end;
     end Element;
  
+    -----------
+    -- Empty --
+    -----------
+ 
+    function Empty (Capacity : Count_Type := 10) return Vector is
+    begin
+       return Result : Vector do
+          Reserve_Capacity (Result, Capacity);
+       end return;
+    end Empty;
+ 
     --------------
     -- Finalize --
     --------------
*************** package body Ada.Containers.Indefinite_V
*** 870,875 ****
--- 895,910 ----
     end First_Element;
  
     -----------------
+    -- New_Vector --
+    -----------------
+ 
+    function New_Vector (First, Last : Index_Type) return Vector
+    is
+    begin
+       return (To_Vector (Count_Type (Last - First + 1)));
+    end New_Vector;
+ 
+    -----------------
     -- First_Index --
     -----------------
  
*************** package body Ada.Containers.Indefinite_V
*** 942,947 ****
--- 977,984 ----
           I, J : Index_Type'Base;
  
        begin
+          TC_Check (Source.TC);
+ 
           --  The semantics of Merge changed slightly per AI05-0021. It was
           --  originally the case that if Target and Source denoted the same
           --  container object, then the GNAT implementation of Merge did
*************** package body Ada.Containers.Indefinite_V
*** 964,971 ****
              return;
           end if;
  
-          TC_Check (Source.TC);
- 
           I := Target.Last;  -- original value (before Set_Length)
           Target.Set_Length (Length (Target) + Length (Source));
  
--- 1001,1006 ----
*************** package body Ada.Containers.Indefinite_V
*** 1128,1133 ****
--- 1163,1176 ----
        Dst          : Elements_Access;  -- new, expanded internal array
  
     begin
+       --  The tampering bits exist to prevent an item from being harmfully
+       --  manipulated while it is being visited. Query, Update, and Iterate
+       --  increment the busy count on entry, and decrement the count on
+       --  exit. Insert checks the count to determine whether it is being called
+       --  while the associated callback procedure is executing.
+ 
+       TC_Check (Container.TC);
+ 
        if Checks then
           --  As a precondition on the generic actual Index_Type, the base type
           --  must include Index_Type'Pred (Index_Type'First); this is the value
*************** package body Ada.Containers.Indefinite_V
*** 1335,1348 ****
           return;
        end if;
  
-       --  The tampering bits exist to prevent an item from being harmfully
-       --  manipulated while it is being visited. Query, Update, and Iterate
-       --  increment the busy count on entry, and decrement the count on
-       --  exit. Insert checks the count to determine whether it is being called
-       --  while the associated callback procedure is executing.
- 
-       TC_Check (Container.TC);
- 
        if New_Length <= Container.Elements.EA'Length then
  
           --  In this case, we're inserting elements into a vector that has
--- 1378,1383 ----
*************** package body Ada.Containers.Indefinite_V
*** 1584,1590 ****
        end;
     end Insert;
  
!    procedure Insert
       (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Vector)
--- 1619,1625 ----
        end;
     end Insert;
  
!    procedure Insert_Vector
       (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Vector)
*************** package body Ada.Containers.Indefinite_V
*** 1731,1739 ****
              Dst_Index := Dst_Index + 1;
           end loop;
        end;
!    end Insert;
  
!    procedure Insert
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector)
--- 1766,1774 ----
              Dst_Index := Dst_Index + 1;
           end loop;
        end;
!    end Insert_Vector;
  
!    procedure Insert_Vector
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector)
*************** package body Ada.Containers.Indefinite_V
*** 1763,1772 ****
           Index := Before.Index;
        end if;
  
!       Insert (Container, Index, New_Item);
!    end Insert;
  
!    procedure Insert
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector;
--- 1798,1807 ----
           Index := Before.Index;
        end if;
  
!       Insert_Vector (Container, Index, New_Item);
!    end Insert_Vector;
  
!    procedure Insert_Vector
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector;
*************** package body Ada.Containers.Indefinite_V
*** 1803,1812 ****
           Index := Before.Index;
        end if;
  
!       Insert (Container, Index, New_Item);
  
        Position := (Container'Unrestricted_Access, Index);
!    end Insert;
  
     procedure Insert
       (Container : in out Vector;
--- 1838,1847 ----
           Index := Before.Index;
        end if;
  
!       Insert_Vector (Container, Index, New_Item);
  
        Position := (Container'Unrestricted_Access, Index);
!    end Insert_Vector;
  
     procedure Insert
       (Container : in out Vector;
*************** package body Ada.Containers.Indefinite_V
*** 1908,1913 ****
--- 1943,1956 ----
        Dst          : Elements_Access;  -- new, expanded internal array
  
     begin
+       --  The tampering bits exist to prevent an item from being harmfully
+       --  manipulated while it is being visited. Query, Update, and Iterate
+       --  increment the busy count on entry, and decrement the count on exit.
+       --  Insert checks the count to determine whether it is being called while
+       --  the associated callback procedure is executing.
+ 
+       TC_Check (Container.TC);
+ 
        if Checks then
           --  As a precondition on the generic actual Index_Type, the base type
           --  must include Index_Type'Pred (Index_Type'First); this is the value
*************** package body Ada.Containers.Indefinite_V
*** 2090,2103 ****
           return;
        end if;
  
-       --  The tampering bits exist to prevent an item from being harmfully
-       --  manipulated while it is being visited. Query, Update, and Iterate
-       --  increment the busy count on entry, and decrement the count on exit.
-       --  Insert checks the count to determine whether it is being called while
-       --  the associated callback procedure is executing.
- 
-       TC_Check (Container.TC);
- 
        if New_Length <= Container.Elements.EA'Length then
  
           --  In this case, we are inserting elements into a vector that has
--- 2133,2138 ----
*************** package body Ada.Containers.Indefinite_V
*** 2524,2534 ****
     -- Prepend --
     -------------
  
-    procedure Prepend (Container : in out Vector; New_Item : Vector) is
-    begin
-       Insert (Container, Index_Type'First, New_Item);
-    end Prepend;
- 
     procedure Prepend
       (Container : in out Vector;
        New_Item  : Element_Type;
--- 2559,2564 ----
*************** package body Ada.Containers.Indefinite_V
*** 2538,2543 ****
--- 2568,2582 ----
        Insert (Container, Index_Type'First, New_Item, Count);
     end Prepend;
  
+    -------------
+    -- Prepend_Vector --
+    -------------
+ 
+    procedure Prepend_Vector (Container : in out Vector; New_Item : Vector) is
+    begin
+       Insert_Vector (Container, Index_Type'First, New_Item);
+    end Prepend_Vector;
+ 
     --------------
     -- Previous --
     --------------
*************** package body Ada.Containers.Indefinite_V
*** 2626,2631 ****
--- 2665,2698 ----
        end if;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Vector)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+ 
+       procedure Put_Elem (Position : Cursor);
+       procedure Put_Elem (Position : Cursor) is
+       begin
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Element_Type'Put_Image (S, Element (Position));
+       end Put_Elem;
+ 
+    begin
+       Array_Before (S);
+       Iterate (V, Put_Elem'Access);
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Indefinite_V
*** 2757,2768 ****
        New_Item  : Element_Type)
     is
     begin
        if Checks and then Index > Container.Last then
           raise Constraint_Error with "Index is out of range";
        end if;
  
-       TE_Check (Container.TC);
- 
        declare
           X : Element_Access := Container.Elements.EA (Index);
  
--- 2824,2835 ----
        New_Item  : Element_Type)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then Index > Container.Last then
           raise Constraint_Error with "Index is out of range";
        end if;
  
        declare
           X : Element_Access := Container.Elements.EA (Index);
  
*************** package body Ada.Containers.Indefinite_V
*** 2784,2789 ****
--- 2851,2858 ----
        New_Item  : Element_Type)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks then
           if Position.Container = null then
              raise Constraint_Error with "Position cursor has no element";
*************** package body Ada.Containers.Indefinite_V
*** 2798,2805 ****
           end if;
        end if;
  
-       TE_Check (Container.TC);
- 
        declare
           X : Element_Access := Container.Elements.EA (Position.Index);
  
--- 2867,2872 ----
*************** package body Ada.Containers.Indefinite_V
*** 3258,3263 ****
--- 3325,3332 ----
  
     procedure Swap (Container : in out Vector; I, J : Index_Type) is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks then
           if I > Container.Last then
              raise Constraint_Error with "I index is out of range";
*************** package body Ada.Containers.Indefinite_V
*** 3272,3279 ****
           return;
        end if;
  
-       TE_Check (Container.TC);
- 
        declare
           EI : Element_Access renames Container.Elements.EA (I);
           EJ : Element_Access renames Container.Elements.EA (J);
--- 3341,3346 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-coinve.ads gcc-11.1.0/gcc/ada/libgnat/a-coinve.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-coinve.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-coinve.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Iterator_Interfaces;
*** 36,41 ****
--- 36,42 ----
  with Ada.Containers.Helpers;
  private with Ada.Finalization;
  private with Ada.Streams;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Index_Type is range <>;
*************** generic
*** 43,49 ****
  
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Indefinite_Vectors is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
--- 44,52 ----
  
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Indefinite_Vectors with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
*************** package Ada.Containers.Indefinite_Vector
*** 59,65 ****
       Constant_Indexing => Constant_Reference,
       Variable_Indexing => Reference,
       Default_Iterator  => Iterate,
!      Iterator_Element  => Element_Type;
  
     pragma Preelaborable_Initialization (Vector);
  
--- 62,72 ----
       Constant_Indexing => Constant_Reference,
       Variable_Indexing => Reference,
       Default_Iterator  => Iterate,
!      Iterator_Element  => Element_Type,
!      Aggregate         => (Empty          => Empty_Vector,
!                            Add_Unnamed    => Append,
!                            New_Indexed    => New_Vector,
!                            Assign_Indexed => Replace_Element);
  
     pragma Preelaborable_Initialization (Vector);
  
*************** package Ada.Containers.Indefinite_Vector
*** 70,75 ****
--- 77,84 ----
  
     No_Element : constant Cursor;
  
+    function Empty (Capacity : Count_Type := 10) return Vector;
+ 
     function Has_Element (Position : Cursor) return Boolean;
  
     package Vector_Iterator_Interfaces is new
*************** package Ada.Containers.Indefinite_Vector
*** 77,82 ****
--- 86,94 ----
  
     overriding function "=" (Left, Right : Vector) return Boolean;
  
+    function New_Vector (First, Last : Index_Type) return Vector
+      with Pre => First = Index_Type'First;
+ 
     function To_Vector (Length : Count_Type) return Vector;
  
     function To_Vector
*************** package Ada.Containers.Indefinite_Vector
*** 183,206 ****
  
     procedure Move (Target : in out Vector; Source : in out Vector);
  
!    procedure Insert
       (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Vector);
  
     procedure Insert
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector);
  
     procedure Insert
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector;
        Position  : out Cursor);
  
     procedure Insert
       (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Element_Type;
        Count     : Count_Type := 1);
--- 195,237 ----
  
     procedure Move (Target : in out Vector; Source : in out Vector);
  
!    procedure Insert_Vector
       (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Vector);
  
     procedure Insert
       (Container : in out Vector;
+       Before    : Extended_Index;
+       New_Item  : Vector) renames Insert_Vector;
+    --  Retained for now for compatibility; AI12-0400 will remove this.
+ 
+    procedure Insert_Vector
+      (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector);
  
     procedure Insert
       (Container : in out Vector;
        Before    : Cursor;
+       New_Item  : Vector) renames Insert_Vector;
+    --  Retained for now for compatibility; AI12-0400 will remove this.
+ 
+    procedure Insert_Vector
+      (Container : in out Vector;
+       Before    : Cursor;
        New_Item  : Vector;
        Position  : out Cursor);
  
     procedure Insert
       (Container : in out Vector;
+       Before    : Cursor;
+       New_Item  : Vector;
+       Position  : out Cursor) renames Insert_Vector;
+    --  Retained for now for compatibility; AI12-0400 will remove this.
+ 
+    procedure Insert
+      (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Element_Type;
        Count     : Count_Type := 1);
*************** package Ada.Containers.Indefinite_Vector
*** 218,240 ****
        Position  : out Cursor;
        Count     : Count_Type := 1);
  
!    procedure Prepend
       (Container : in out Vector;
        New_Item  : Vector);
  
     procedure Prepend
       (Container : in out Vector;
        New_Item  : Element_Type;
        Count     : Count_Type := 1);
  
!    procedure Append
       (Container : in out Vector;
        New_Item  : Vector);
  
     procedure Append
       (Container : in out Vector;
        New_Item  : Element_Type;
!       Count     : Count_Type := 1);
  
     procedure Insert_Space
       (Container : in out Vector;
--- 249,284 ----
        Position  : out Cursor;
        Count     : Count_Type := 1);
  
!    procedure Prepend_Vector
       (Container : in out Vector;
        New_Item  : Vector);
  
     procedure Prepend
       (Container : in out Vector;
+       New_Item  : Vector) renames Prepend_Vector;
+    --  Retained for now for compatibility; AI12-0400 will remove this.
+ 
+    procedure Prepend
+      (Container : in out Vector;
        New_Item  : Element_Type;
        Count     : Count_Type := 1);
  
!    procedure Append_Vector
       (Container : in out Vector;
        New_Item  : Vector);
  
     procedure Append
       (Container : in out Vector;
+       New_Item  : Vector) renames Append_Vector;
+    --  Retained for now for compatibility; AI12-0400 will remove this.
+ 
+    procedure Append
+      (Container : in out Vector;
        New_Item  : Element_Type;
!       Count     : Count_Type);
! 
!    procedure Append (Container : in out Vector;
!                      New_Item  :        Element_Type);
  
     procedure Insert_Space
       (Container : in out Vector;
*************** private
*** 381,387 ****
        Elements : Elements_Access := null;
        Last     : Extended_Index := No_Index;
        TC       : aliased Tamper_Counts;
!    end record;
  
     overriding procedure Adjust (Container : in out Vector);
     overriding procedure Finalize (Container : in out Vector);
--- 425,434 ----
        Elements : Elements_Access := null;
        Last     : Extended_Index := No_Index;
        TC       : aliased Tamper_Counts;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Vector);
  
     overriding procedure Adjust (Container : in out Vector);
     overriding procedure Finalize (Container : in out Vector);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-colien.adb gcc-11.1.0/gcc/ada/libgnat/a-colien.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-colien.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-colien.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-colien.ads gcc-11.1.0/gcc/ada/libgnat/a-colien.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-colien.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-colien.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-colire.adb gcc-11.1.0/gcc/ada/libgnat/a-colire.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-colire.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-colire.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-colire.ads gcc-11.1.0/gcc/ada/libgnat/a-colire.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-colire.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-colire.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-comlin.adb gcc-11.1.0/gcc/ada/libgnat/a-comlin.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-comlin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-comlin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-comlin.ads gcc-11.1.0/gcc/ada/libgnat/a-comlin.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-comlin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-comlin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-comutr.adb gcc-11.1.0/gcc/ada/libgnat/a-comutr.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-comutr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-comutr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Unchecked_Conversion;
*** 31,38 ****
  with Ada.Unchecked_Deallocation;
  
  with System; use type System.Address;
  
! package body Ada.Containers.Multiway_Trees is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 31,41 ----
  with Ada.Unchecked_Deallocation;
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Multiway_Trees with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Multiway_Tre
*** 263,268 ****
--- 266,273 ----
        Last  : Tree_Node_Access;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Multiway_Tre
*** 275,282 ****
           return;
        end if;
  
-       TC_Check (Container.TC);
- 
        First := new Tree_Node_Type'(Parent  => Parent.Node,
                                     Element => New_Item,
                                     others  => <>);
--- 280,285 ----
*************** package body Ada.Containers.Multiway_Tre
*** 699,704 ****
--- 702,709 ----
        Count : Count_Type;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Multiway_Tre
*** 707,714 ****
           raise Program_Error with "Parent cursor not in container";
        end if;
  
-       TC_Check (Container.TC);
- 
        --  Deallocate_Children returns a count of the number of nodes that it
        --  deallocates, but it works by incrementing the value that is passed
        --  in. We must therefore initialize the count value before calling
--- 712,717 ----
*************** package body Ada.Containers.Multiway_Tre
*** 733,738 ****
--- 736,743 ----
        X : Tree_Node_Access;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Position = No_Element then
           raise Constraint_Error with "Position cursor has no element";
        end if;
*************** package body Ada.Containers.Multiway_Tre
*** 750,757 ****
           raise Constraint_Error with "Position cursor does not designate leaf";
        end if;
  
-       TC_Check (Container.TC);
- 
        X := Position.Node;
        Position := No_Element;
  
--- 755,760 ----
*************** package body Ada.Containers.Multiway_Tre
*** 780,785 ****
--- 783,790 ----
        Count : Count_Type;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Position = No_Element then
           raise Constraint_Error with "Position cursor has no element";
        end if;
*************** package body Ada.Containers.Multiway_Tre
*** 793,800 ****
           raise Program_Error with "Position cursor designates root";
        end if;
  
-       TC_Check (Container.TC);
- 
        X := Position.Node;
        Position := No_Element;
  
--- 798,803 ----
*************** package body Ada.Containers.Multiway_Tre
*** 1145,1150 ****
--- 1148,1155 ----
        Last  : Tree_Node_Access;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Multiway_Tre
*** 1169,1176 ****
           return;
        end if;
  
-       TC_Check (Container.TC);
- 
        First := new Tree_Node_Type'(Parent  => Parent.Node,
                                     Element => New_Item,
                                     others  => <>);
--- 1174,1179 ----
*************** package body Ada.Containers.Multiway_Tre
*** 1214,1219 ****
--- 1217,1224 ----
        Last  : Tree_Node_Access;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Multiway_Tre
*** 1238,1245 ****
           return;
        end if;
  
-       TC_Check (Container.TC);
- 
        First := new Tree_Node_Type'(Parent  => Parent.Node,
                                     Element => <>,
                                     others  => <>);
--- 1243,1248 ----
*************** package body Ada.Containers.Multiway_Tre
*** 1737,1742 ****
--- 1740,1747 ----
        First, Last : Tree_Node_Access;
  
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Multiway_Tre
*** 1749,1756 ****
           return;
        end if;
  
-       TC_Check (Container.TC);
- 
        First := new Tree_Node_Type'(Parent  => Parent.Node,
                                     Element => New_Item,
                                     others  => <>);
--- 1754,1759 ----
*************** package body Ada.Containers.Multiway_Tre
*** 1856,1861 ****
--- 1859,1907 ----
        Process (Position.Node.Element);
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Tree)
+    is
+       use System.Put_Images;
+ 
+       procedure Rec (Position : Cursor);
+       --  Recursive routine operating on cursors
+ 
+       procedure Rec (Position : Cursor) is
+          First_Time : Boolean := True;
+       begin
+          Array_Before (S);
+ 
+          for X in Iterate_Children (V, Position) loop
+             if First_Time then
+                First_Time := False;
+             else
+                Array_Between (S);
+             end if;
+ 
+             Element_Type'Put_Image (S, Element (X));
+             if Child_Count (X) > 0 then
+                Simple_Array_Between (S);
+                Rec (X);
+             end if;
+          end loop;
+ 
+          Array_After (S);
+       end Rec;
+ 
+    begin
+       if First_Child (Root (V)) = No_Element then
+          Array_Before (S);
+          Array_After (S);
+       else
+          Rec (First_Child (Root (V)));
+       end if;
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Multiway_Tre
*** 2073,2078 ****
--- 2119,2126 ----
        New_Item  : Element_Type)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then Position = No_Element then
           raise Constraint_Error with "Position cursor has no element";
        end if;
*************** package body Ada.Containers.Multiway_Tre
*** 2086,2093 ****
           raise Program_Error with "Position cursor designates root";
        end if;
  
-       TE_Check (Container.TC);
- 
        Position.Node.Element := New_Item;
     end Replace_Element;
  
--- 2134,2139 ----
*************** package body Ada.Containers.Multiway_Tre
*** 2160,2165 ****
--- 2206,2214 ----
        Count : Count_Type;
  
     begin
+       TC_Check (Target.TC);
+       TC_Check (Source.TC);
+ 
        if Checks and then Target_Parent = No_Element then
           raise Constraint_Error with "Target_Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Multiway_Tre
*** 2197,2204 ****
              return;
           end if;
  
-          TC_Check (Target.TC);
- 
           if Checks and then Is_Reachable (From => Target_Parent.Node,
                            To   => Source_Parent.Node)
           then
--- 2246,2251 ----
*************** package body Ada.Containers.Multiway_Tre
*** 2214,2222 ****
           return;
        end if;
  
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
        --  We cache the count of the nodes we have allocated, so that operation
        --  Node_Count can execute in O(1) time. But that means we must count the
        --  nodes in the subtree we remove from Source and insert into Target, in
--- 2261,2266 ----
*************** package body Ada.Containers.Multiway_Tre
*** 2243,2248 ****
--- 2287,2294 ----
        Source_Parent   : Cursor)
     is
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Target_Parent = No_Element then
           raise Constraint_Error with "Target_Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Multiway_Tre
*** 2282,2289 ****
           return;
        end if;
  
-       TC_Check (Container.TC);
- 
        if Checks and then Is_Reachable (From => Target_Parent.Node,
                         To   => Source_Parent.Node)
        then
--- 2328,2333 ----
*************** package body Ada.Containers.Multiway_Tre
*** 2341,2346 ****
--- 2385,2393 ----
        Subtree_Count : Count_Type;
  
     begin
+       TC_Check (Target.TC);
+       TC_Check (Source.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Multiway_Tre
*** 2382,2389 ****
              end if;
           end if;
  
-          TC_Check (Target.TC);
- 
           if Checks and then
             Is_Reachable (From => Parent.Node, To => Position.Node)
           then
--- 2429,2434 ----
*************** package body Ada.Containers.Multiway_Tre
*** 2398,2406 ****
           return;
        end if;
  
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
        --  This is an unfortunate feature of this API: we must count the nodes
        --  in the subtree that we remove from the source tree, which is an O(n)
        --  operation. It would have been better if the Tree container did not
--- 2443,2448 ----
*************** package body Ada.Containers.Multiway_Tre
*** 2433,2438 ****
--- 2475,2482 ----
        Position  : Cursor)
     is
     begin
+       TC_Check (Container.TC);
+ 
        if Checks and then Parent = No_Element then
           raise Constraint_Error with "Parent cursor has no element";
        end if;
*************** package body Ada.Containers.Multiway_Tre
*** 2478,2485 ****
           end if;
        end if;
  
-       TC_Check (Container.TC);
- 
        if Checks and then
          Is_Reachable (From => Parent.Node, To => Position.Node)
        then
--- 2522,2527 ----
*************** package body Ada.Containers.Multiway_Tre
*** 2531,2536 ****
--- 2573,2580 ----
        I, J      : Cursor)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then I = No_Element then
           raise Constraint_Error with "I cursor has no element";
        end if;
*************** package body Ada.Containers.Multiway_Tre
*** 2559,2566 ****
           raise Program_Error with "J cursor designates root";
        end if;
  
-       TE_Check (Container.TC);
- 
        declare
           EI : constant Element_Type := I.Node.Element;
  
--- 2603,2608 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-comutr.ads gcc-11.1.0/gcc/ada/libgnat/a-comutr.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-comutr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-comutr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Iterator_Interfaces;
*** 36,48 ****
  with Ada.Containers.Helpers;
  private with Ada.Finalization;
  private with Ada.Streams;
  
  generic
     type Element_Type is private;
  
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Multiway_Trees is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
--- 36,51 ----
  with Ada.Containers.Helpers;
  private with Ada.Finalization;
  private with Ada.Streams;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Element_Type is private;
  
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Multiway_Trees with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
*************** private
*** 398,404 ****
        Root  : aliased Root_Node_Type;
        TC    : aliased Tamper_Counts;
        Count : Count_Type := 0;
!    end record;
  
     overriding procedure Adjust (Container : in out Tree);
  
--- 401,410 ----
        Root  : aliased Root_Node_Type;
        TC    : aliased Tamper_Counts;
        Count : Count_Type := 0;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Tree);
  
     overriding procedure Adjust (Container : in out Tree);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-conhel.adb gcc-11.1.0/gcc/ada/libgnat/a-conhel.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-conhel.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-conhel.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2015-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2015-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-conhel.ads gcc-11.1.0/gcc/ada/libgnat/a-conhel.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-conhel.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-conhel.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2015-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2015-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-convec.adb gcc-11.1.0/gcc/ada/libgnat/a-convec.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-convec.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-convec.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Containers.Generic_Array_Sort;
*** 31,38 ****
  with Ada.Unchecked_Deallocation;
  
  with System; use type System.Address;
  
! package body Ada.Containers.Vectors is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 31,41 ----
  with Ada.Unchecked_Deallocation;
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Vectors with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Vectors is
*** 61,68 ****
     begin
        return Result : Vector do
           Reserve_Capacity (Result, Length (Left) + Length (Right));
!          Append (Result, Left);
!          Append (Result, Right);
        end return;
     end "&";
  
--- 64,71 ----
     begin
        return Result : Vector do
           Reserve_Capacity (Result, Length (Left) + Length (Right));
!          Append_Vector (Result, Left);
!          Append_Vector (Result, Right);
        end return;
     end "&";
  
*************** package body Ada.Containers.Vectors is
*** 70,76 ****
     begin
        return Result : Vector do
           Reserve_Capacity (Result, Length (Left) + 1);
!          Append (Result, Left);
           Append (Result, Right);
        end return;
     end "&";
--- 73,79 ----
     begin
        return Result : Vector do
           Reserve_Capacity (Result, Length (Left) + 1);
!          Append_Vector (Result, Left);
           Append (Result, Right);
        end return;
     end "&";
*************** package body Ada.Containers.Vectors is
*** 80,86 ****
        return Result : Vector do
           Reserve_Capacity (Result, 1 + Length (Right));
           Append (Result, Left);
!          Append (Result, Right);
        end return;
     end "&";
  
--- 83,89 ----
        return Result : Vector do
           Reserve_Capacity (Result, 1 + Length (Right));
           Append (Result, Left);
!          Append_Vector (Result, Right);
        end return;
     end "&";
  
*************** package body Ada.Containers.Vectors is
*** 164,184 ****
     -- Append --
     ------------
  
-    procedure Append (Container : in out Vector; New_Item : Vector) is
-    begin
-       if Is_Empty (New_Item) then
-          return;
-       elsif Checks and then Container.Last = Index_Type'Last then
-          raise Constraint_Error with "vector is already at its maximum length";
-       else
-          Insert (Container, Container.Last + 1, New_Item);
-       end if;
-    end Append;
- 
     procedure Append
       (Container : in out Vector;
        New_Item  : Element_Type;
!       Count     : Count_Type := 1)
     is
     begin
        --  In the general case, we pass the buck to Insert, but for efficiency,
--- 167,176 ----
     -- Append --
     ------------
  
     procedure Append
       (Container : in out Vector;
        New_Item  : Element_Type;
!       Count     : Count_Type)
     is
     begin
        --  In the general case, we pass the buck to Insert, but for efficiency,
*************** package body Ada.Containers.Vectors is
*** 207,212 ****
--- 199,230 ----
        end if;
     end Append;
  
+    -------------------
+    -- Append_Vector --
+    -------------------
+ 
+    procedure Append_Vector (Container : in out Vector; New_Item : Vector) is
+    begin
+       if Is_Empty (New_Item) then
+          return;
+       elsif Checks and then Container.Last = Index_Type'Last then
+          raise Constraint_Error with "vector is already at its maximum length";
+       else
+          Insert_Vector (Container, Container.Last + 1, New_Item);
+       end if;
+    end Append_Vector;
+ 
+    ------------
+    -- Append --
+    ------------
+ 
+    procedure Append (Container : in out Vector;
+                      New_Item  :        Element_Type)
+    is
+    begin
+       Insert (Container, Last_Index (Container) + 1, New_Item, 1);
+    end Append;
+ 
     ----------------------
     -- Append_Slow_Path --
     ----------------------
*************** package body Ada.Containers.Vectors is
*** 236,242 ****
           return;
        else
           Target.Clear;
!          Target.Append (Source);
        end if;
     end Assign;
  
--- 254,260 ----
           return;
        else
           Target.Clear;
!          Target.Append_Vector (Source);
        end if;
     end Assign;
  
*************** package body Ada.Containers.Vectors is
*** 377,382 ****
--- 395,408 ----
        J        : Index_Type'Base;  -- first index of items that slide down
  
     begin
+       --  The tampering bits exist to prevent an item from being deleted (or
+       --  otherwise harmfully manipulated) while it is being visited. Query,
+       --  Update, and Iterate increment the busy count on entry, and decrement
+       --  the count on exit. Delete checks the count to determine whether it is
+       --  being called while the associated callback procedure is executing.
+ 
+       TC_Check (Container.TC);
+ 
        --  Delete removes items from the vector, the number of which is the
        --  minimum of the specified Count and the items (if any) that exist from
        --  Index to Container.Last. There are no constraints on the specified
*************** package body Ada.Containers.Vectors is
*** 420,433 ****
           return;
        end if;
  
-       --  The tampering bits exist to prevent an item from being deleted (or
-       --  otherwise harmfully manipulated) while it is being visited. Query,
-       --  Update, and Iterate increment the busy count on entry, and decrement
-       --  the count on exit. Delete checks the count to determine whether it is
-       --  being called while the associated callback procedure is executing.
- 
-       TC_Check (Container.TC);
- 
        --  We first calculate what's available for deletion starting at
        --  Index. Here and elsewhere we use the wider of Index_Type'Base and
        --  Count_Type'Base as the type for intermediate values. (See function
--- 446,451 ----
*************** package body Ada.Containers.Vectors is
*** 600,605 ****
--- 618,634 ----
        return Position.Container.Elements.EA (Position.Index);
     end Element;
  
+    -----------
+    -- Empty --
+    -----------
+ 
+    function Empty (Capacity : Count_Type := 10) return Vector is
+    begin
+       return Result : Vector do
+          Reserve_Capacity (Result, Capacity);
+       end return;
+    end Empty;
+ 
     --------------
     -- Finalize --
     --------------
*************** package body Ada.Containers.Vectors is
*** 739,744 ****
--- 768,783 ----
        return Index_Type'First;
     end First_Index;
  
+    -----------------
+    -- New_Vector --
+    -----------------
+ 
+    function New_Vector (First, Last : Index_Type) return Vector
+    is
+    begin
+       return (To_Vector (Count_Type (Last - First + 1)));
+    end New_Vector;
+ 
     ---------------------
     -- Generic_Sorting --
     ---------------------
*************** package body Ada.Containers.Vectors is
*** 781,786 ****
--- 820,827 ----
           J : Index_Type'Base;
  
        begin
+          TC_Check (Source.TC);
+ 
           --  The semantics of Merge changed slightly per AI05-0021. It was
           --  originally the case that if Target and Source denoted the same
           --  container object, then the GNAT implementation of Merge did
*************** package body Ada.Containers.Vectors is
*** 803,810 ****
              return;
           end if;
  
-          TC_Check (Source.TC);
- 
           Target.Set_Length (Length (Target) + Length (Source));
  
           --  Per AI05-0022, the container implementation is required to detect
--- 844,849 ----
*************** package body Ada.Containers.Vectors is
*** 861,870 ****
                "<"          => "<");
  
        begin
-          if Container.Last <= Index_Type'First then
-             return;
-          end if;
- 
           --  The exception behavior for the vector container must match that
           --  for the list container, so we check for cursor tampering here
           --  (which will catch more things) instead of for element tampering
--- 900,905 ----
*************** package body Ada.Containers.Vectors is
*** 878,883 ****
--- 913,922 ----
  
           TC_Check (Container.TC);
  
+          if Container.Last <= Index_Type'First then
+             return;
+          end if;
+ 
           --  Per AI05-0022, the container implementation is required to detect
           --  element tampering by a generic actual subprogram.
  
*************** package body Ada.Containers.Vectors is
*** 933,938 ****
--- 972,985 ----
        Dst          : Elements_Access;  -- new, expanded internal array
  
     begin
+       --  The tampering bits exist to prevent an item from being harmfully
+       --  manipulated while it is being visited. Query, Update, and Iterate
+       --  increment the busy count on entry, and decrement the count on
+       --  exit. Insert checks the count to determine whether it is being called
+       --  while the associated callback procedure is executing.
+ 
+       TC_Check (Container.TC);
+ 
        if Checks then
           --  As a precondition on the generic actual Index_Type, the base type
           --  must include Index_Type'Pred (Index_Type'First); this is the value
*************** package body Ada.Containers.Vectors is
*** 1124,1137 ****
           return;
        end if;
  
-       --  The tampering bits exist to prevent an item from being harmfully
-       --  manipulated while it is being visited. Query, Update, and Iterate
-       --  increment the busy count on entry, and decrement the count on
-       --  exit. Insert checks the count to determine whether it is being called
-       --  while the associated callback procedure is executing.
- 
-       TC_Check (Container.TC);
- 
        --  An internal array has already been allocated, so we must determine
        --  whether there is enough unused storage for the new items.
  
--- 1171,1176 ----
*************** package body Ada.Containers.Vectors is
*** 1275,1281 ****
        end;
     end Insert;
  
!    procedure Insert
       (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Vector)
--- 1314,1320 ----
        end;
     end Insert;
  
!    procedure Insert_Vector
       (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Vector)
*************** package body Ada.Containers.Vectors is
*** 1394,1402 ****
  
           Container.Elements.EA (K .. J) := Src;
        end;
!    end Insert;
  
!    procedure Insert
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector)
--- 1433,1441 ----
  
           Container.Elements.EA (K .. J) := Src;
        end;
!    end Insert_Vector;
  
!    procedure Insert_Vector
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector)
*************** package body Ada.Containers.Vectors is
*** 1426,1435 ****
           Index := Before.Index;
        end if;
  
!       Insert (Container, Index, New_Item);
!    end Insert;
  
!    procedure Insert
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector;
--- 1465,1474 ----
           Index := Before.Index;
        end if;
  
!       Insert_Vector (Container, Index, New_Item);
!    end Insert_Vector;
  
!    procedure Insert_Vector
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector;
*************** package body Ada.Containers.Vectors is
*** 1466,1475 ****
           Index := Before.Index;
        end if;
  
!       Insert (Container, Index, New_Item);
  
        Position := (Container'Unrestricted_Access, Index);
!    end Insert;
  
     procedure Insert
       (Container : in out Vector;
--- 1505,1514 ----
           Index := Before.Index;
        end if;
  
!       Insert_Vector (Container, Index, New_Item);
  
        Position := (Container'Unrestricted_Access, Index);
!    end Insert_Vector;
  
     procedure Insert
       (Container : in out Vector;
*************** package body Ada.Containers.Vectors is
*** 1595,1600 ****
--- 1634,1647 ----
        Dst          : Elements_Access;  -- new, expanded internal array
  
     begin
+       --  The tampering bits exist to prevent an item from being harmfully
+       --  manipulated while it is being visited. Query, Update, and Iterate
+       --  increment the busy count on entry, and decrement the count on
+       --  exit. Insert checks the count to determine whether it is being called
+       --  while the associated callback procedure is executing.
+ 
+       TC_Check (Container.TC);
+ 
        if Checks then
           --  As a precondition on the generic actual Index_Type, the base type
           --  must include Index_Type'Pred (Index_Type'First); this is the value
*************** package body Ada.Containers.Vectors is
*** 1784,1797 ****
           return;
        end if;
  
-       --  The tampering bits exist to prevent an item from being harmfully
-       --  manipulated while it is being visited. Query, Update, and Iterate
-       --  increment the busy count on entry, and decrement the count on
-       --  exit. Insert checks the count to determine whether it is being called
-       --  while the associated callback procedure is executing.
- 
-       TC_Check (Container.TC);
- 
        --  An internal array has already been allocated, so we must determine
        --  whether there is enough unused storage for the new items.
  
--- 1831,1836 ----
*************** package body Ada.Containers.Vectors is
*** 2231,2241 ****
     -- Prepend --
     -------------
  
-    procedure Prepend (Container : in out Vector; New_Item : Vector) is
-    begin
-       Insert (Container, Index_Type'First, New_Item);
-    end Prepend;
- 
     procedure Prepend
       (Container : in out Vector;
        New_Item  : Element_Type;
--- 2270,2275 ----
*************** package body Ada.Containers.Vectors is
*** 2245,2250 ****
--- 2279,2293 ----
        Insert (Container, Index_Type'First, New_Item, Count);
     end Prepend;
  
+    --------------------
+    -- Prepend_Vector --
+    --------------------
+ 
+    procedure Prepend_Vector (Container : in out Vector; New_Item : Vector) is
+    begin
+       Insert_Vector (Container, Index_Type'First, New_Item);
+    end Prepend_Vector;
+ 
     --------------
     -- Previous --
     --------------
*************** package body Ada.Containers.Vectors is
*** 2297,2302 ****
--- 2340,2370 ----
        end return;
     end Pseudo_Reference;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Vector)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+    begin
+       Array_Before (S);
+ 
+       for X of V loop
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Element_Type'Put_Image (S, X);
+       end loop;
+ 
+       Array_After (S);
+    end Put_Image;
+ 
     -------------------
     -- Query_Element --
     -------------------
*************** package body Ada.Containers.Vectors is
*** 2446,2456 ****
        New_Item  : Element_Type)
     is
     begin
        if Checks and then Index > Container.Last then
           raise Constraint_Error with "Index is out of range";
        end if;
  
-       TE_Check (Container.TC);
        Container.Elements.EA (Index) := New_Item;
     end Replace_Element;
  
--- 2514,2525 ----
        New_Item  : Element_Type)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks and then Index > Container.Last then
           raise Constraint_Error with "Index is out of range";
        end if;
  
        Container.Elements.EA (Index) := New_Item;
     end Replace_Element;
  
*************** package body Ada.Containers.Vectors is
*** 2460,2465 ****
--- 2529,2536 ----
        New_Item  : Element_Type)
     is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks then
           if Position.Container = null then
              raise Constraint_Error with "Position cursor has no element";
*************** package body Ada.Containers.Vectors is
*** 2472,2478 ****
           end if;
        end if;
  
-       TE_Check (Container.TC);
        Container.Elements.EA (Position.Index) := New_Item;
     end Replace_Element;
  
--- 2543,2548 ----
*************** package body Ada.Containers.Vectors is
*** 2940,2945 ****
--- 3010,3017 ----
  
     procedure Swap (Container : in out Vector; I, J : Index_Type) is
     begin
+       TE_Check (Container.TC);
+ 
        if Checks then
           if I > Container.Last then
              raise Constraint_Error with "I index is out of range";
*************** package body Ada.Containers.Vectors is
*** 2954,2961 ****
           return;
        end if;
  
-       TE_Check (Container.TC);
- 
        declare
           EI_Copy : constant Element_Type := Container.Elements.EA (I);
        begin
--- 3026,3031 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-convec.ads gcc-11.1.0/gcc/ada/libgnat/a-convec.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-convec.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-convec.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Iterator_Interfaces;
*** 36,41 ****
--- 36,42 ----
  with Ada.Containers.Helpers;
  private with Ada.Finalization;
  private with Ada.Streams;
+ private with Ada.Strings.Text_Output;
  
  --  The language-defined generic package Containers.Vectors provides private
  --  types Vector and Cursor, and a set of operations for each type. A vector
*************** generic
*** 70,76 ****
     --  number of calls of this generic formal function by the functions defined
     --  to use it are unspecified.
  
! package Ada.Containers.Vectors is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
--- 71,79 ----
     --  number of calls of this generic formal function by the functions defined
     --  to use it are unspecified.
  
! package Ada.Containers.Vectors with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
*************** package Ada.Containers.Vectors is
*** 90,96 ****
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type;
     pragma Preelaborable_Initialization (Vector);
     --  Vector type, to be instantiated by users of this package. If an object
     --  of type Vector is not otherwise initialized, it is initialized to
--- 93,104 ----
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type,
!       Aggregate         => (Empty          => Empty,
!                             Add_Unnamed    => Append,
!                             New_Indexed    => New_Vector,
!                             Assign_Indexed => Replace_Element);
! 
     pragma Preelaborable_Initialization (Vector);
     --  Vector type, to be instantiated by users of this package. If an object
     --  of type Vector is not otherwise initialized, it is initialized to
*************** package Ada.Containers.Vectors is
*** 114,119 ****
--- 122,129 ----
     Empty_Vector : constant Vector;
     --  Empty_Vector represents the empty vector object. It has a length of 0.
  
+    function Empty (Capacity : Count_Type := 10) return Vector;
+ 
     overriding function "=" (Left, Right : Vector) return Boolean;
     --  If Left and Right denote the same vector object, then the function
     --  returns True. If Left and Right have different lengths, then the
*************** package Ada.Containers.Vectors is
*** 320,378 ****
     --  Source is removed from Source and inserted into Target in the original
     --  order. The length of Source is 0 after a successful call to Move.
  
!    procedure Insert
       (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Vector);
     --  If Before is not in the range First_Index (Container) .. Last_Index
     --  (Container) + 1, then Constraint_Error is propagated. If
!    --  Length(New_Item) is 0, then Insert does nothing. Otherwise, it computes
!    --  the new length NL as the sum of the current length and Length
     --  (New_Item); if the value of Last appropriate for length NL would be
     --  greater than Index_Type'Last then Constraint_Error is propagated.
     --
     --  If the current vector capacity is less than NL, Reserve_Capacity
!    --  (Container, NL) is called to increase the vector capacity. Then Insert
!    --  slides the elements in the range Before .. Last_Index (Container) up by
!    --  Length(New_Item) positions, and then copies the elements of New_Item to
!    --  the positions starting at Before. Any exception raised during the
!    --  copying is propagated.
  
     procedure Insert
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector);
     --  If Before is not No_Element, and does not designate an element in
     --  Container, then Program_Error is propagated. Otherwise, if
!    --  Length(New_Item) is 0, then Insert does nothing. If Before is
!    --  No_Element, then the call is equivalent to Insert (Container, Last_Index
!    --  (Container) + 1, New_Item); otherwise the call is equivalent to Insert
!    --  (Container, To_Index (Before), New_Item);
  
     procedure Insert
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector;
        Position  : out Cursor);
     --  If Before is not No_Element, and does not designate an element in
     --  Container, then Program_Error is propagated. If Before equals
     --  No_Element, then let T be Last_Index (Container) + 1; otherwise, let T
!    --  be To_Index (Before). Insert (Container, T, New_Item) is called, and
!    --  then Position is set to To_Cursor (Container, T).
  
     procedure Insert
       (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Element_Type;
        Count     : Count_Type := 1);
!    --  Equivalent to Insert (Container, Before, To_Vector (New_Item, Count));
  
     procedure Insert
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Element_Type;
        Count     : Count_Type := 1);
!    --  Equivalent to Insert (Container, Before, To_Vector (New_Item, Count));
  
     procedure Insert
       (Container : in out Vector;
--- 330,413 ----
     --  Source is removed from Source and inserted into Target in the original
     --  order. The length of Source is 0 after a successful call to Move.
  
!    function New_Vector (First, Last : Index_Type) return Vector
!      with Pre => First = Index_Type'First;
!    --  Ada_2020 aggregate operation.
! 
!    procedure Insert_Vector
       (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Vector);
     --  If Before is not in the range First_Index (Container) .. Last_Index
     --  (Container) + 1, then Constraint_Error is propagated. If
!    --  Length(New_Item) is 0, then Insert_Vector does nothing. Otherwise, it
!    --  computes the new length NL as the sum of the current length and Length
     --  (New_Item); if the value of Last appropriate for length NL would be
     --  greater than Index_Type'Last then Constraint_Error is propagated.
     --
     --  If the current vector capacity is less than NL, Reserve_Capacity
!    --  (Container, NL) is called to increase the vector capacity. Then
!    --  Insert_Vector slides the elements in the range Before .. Last_Index
!    --  (Container) up by Length(New_Item) positions, and then copies the
!    --  elements of New_Item to the positions starting at Before. Any exception
!    --  raised during the copying is propagated.
  
     procedure Insert
       (Container : in out Vector;
+       Before    : Extended_Index;
+       New_Item  : Vector) renames Insert_Vector;
+    --  Retained for now for compatibility; AI12-0400 will remove this.
+ 
+    procedure Insert_Vector
+      (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Vector);
     --  If Before is not No_Element, and does not designate an element in
     --  Container, then Program_Error is propagated. Otherwise, if
!    --  Length(New_Item) is 0, then Insert_Vector does nothing. If Before is
!    --  No_Element, then the call is equivalent to Insert_Vector (Container,
!    --  Last_Index (Container) + 1, New_Item); otherwise the call is equivalent
!    --  to Insert_Vector (Container, To_Index (Before), New_Item);
  
     procedure Insert
       (Container : in out Vector;
        Before    : Cursor;
+       New_Item  : Vector) renames Insert_Vector;
+    --  Retained for now for compatibility; AI12-0400 will remove this.
+ 
+    procedure Insert_Vector
+      (Container : in out Vector;
+       Before    : Cursor;
        New_Item  : Vector;
        Position  : out Cursor);
     --  If Before is not No_Element, and does not designate an element in
     --  Container, then Program_Error is propagated. If Before equals
     --  No_Element, then let T be Last_Index (Container) + 1; otherwise, let T
!    --  be To_Index (Before). Insert_Vector (Container, T, New_Item) is called,
!    --  and then Position is set to To_Cursor (Container, T).
! 
!    procedure Insert
!      (Container : in out Vector;
!       Before    : Cursor;
!       New_Item  : Vector;
!       Position  : out Cursor) renames Insert_Vector;
!    --  Retained for now for compatibility; AI12-0400 will remove this.
  
     procedure Insert
       (Container : in out Vector;
        Before    : Extended_Index;
        New_Item  : Element_Type;
        Count     : Count_Type := 1);
!    --  Equivalent to:
!    --  Insert_Vector (Container, Before, To_Vector (New_Item, Count));
  
     procedure Insert
       (Container : in out Vector;
        Before    : Cursor;
        New_Item  : Element_Type;
        Count     : Count_Type := 1);
!    --  Equivalent to:
!    --  Insert_Vector (Container, Before, To_Vector (New_Item, Count));
  
     procedure Insert
       (Container : in out Vector;
*************** package Ada.Containers.Vectors is
*** 381,387 ****
        Position  : out Cursor;
        Count     : Count_Type := 1);
     --  Equivalent to
!    --  Insert (Container, Before, To_Vector (New_Item, Count), Position);
  
     procedure Insert
       (Container : in out Vector;
--- 416,422 ----
        Position  : out Cursor;
        Count     : Count_Type := 1);
     --  Equivalent to
!    --  Insert_Vector (Container, Before, To_Vector (New_Item, Count), Position)
  
     procedure Insert
       (Container : in out Vector;
*************** package Ada.Containers.Vectors is
*** 411,440 ****
     --  be To_Index (Before). Insert (Container, T, Count) is called, and then
     --  Position is set to To_Cursor (Container, T).
  
!    procedure Prepend
       (Container : in out Vector;
        New_Item  : Vector);
     --  Equivalent to Insert (Container, First_Index (Container), New_Item).
  
     procedure Prepend
       (Container : in out Vector;
        New_Item  : Element_Type;
        Count     : Count_Type := 1);
     --  Equivalent to Insert (Container, First_Index (Container), New_Item,
     --  Count).
  
!    procedure Append
       (Container : in out Vector;
        New_Item  : Vector);
     --  Equivalent to Insert (Container, Last_Index (Container) + 1, New_Item).
  
     procedure Append
       (Container : in out Vector;
        New_Item  : Element_Type;
!       Count     : Count_Type := 1);
     --  Equivalent to Insert (Container, Last_Index (Container) + 1, New_Item,
     --  Count).
  
     procedure Insert_Space
       (Container : in out Vector;
        Before    : Extended_Index;
--- 446,488 ----
     --  be To_Index (Before). Insert (Container, T, Count) is called, and then
     --  Position is set to To_Cursor (Container, T).
  
!    procedure Prepend_Vector
       (Container : in out Vector;
        New_Item  : Vector);
     --  Equivalent to Insert (Container, First_Index (Container), New_Item).
  
     procedure Prepend
       (Container : in out Vector;
+       New_Item  : Vector) renames Prepend_Vector;
+    --  Retained for now for compatibility; AI12-0400 will remove this.
+ 
+    procedure Prepend
+      (Container : in out Vector;
        New_Item  : Element_Type;
        Count     : Count_Type := 1);
     --  Equivalent to Insert (Container, First_Index (Container), New_Item,
     --  Count).
  
!    procedure Append_Vector
       (Container : in out Vector;
        New_Item  : Vector);
     --  Equivalent to Insert (Container, Last_Index (Container) + 1, New_Item).
  
     procedure Append
       (Container : in out Vector;
+       New_Item  : Vector) renames Append_Vector;
+    --  Retained for now for compatibility; AI12-0400 will remove this.
+ 
+    procedure Append
+      (Container : in out Vector;
        New_Item  : Element_Type;
!       Count     : Count_Type);
     --  Equivalent to Insert (Container, Last_Index (Container) + 1, New_Item,
     --  Count).
  
+    procedure Append (Container : in out Vector;
+                      New_Item  :        Element_Type);
+ 
     procedure Insert_Space
       (Container : in out Vector;
        Before    : Extended_Index;
*************** private
*** 694,700 ****
        Elements : Elements_Access := null;
        Last     : Extended_Index := No_Index;
        TC       : aliased Tamper_Counts;
!    end record;
  
     overriding procedure Adjust (Container : in out Vector);
     overriding procedure Finalize (Container : in out Vector);
--- 742,751 ----
        Elements : Elements_Access := null;
        Last     : Extended_Index := No_Index;
        TC       : aliased Tamper_Counts;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Vector);
  
     overriding procedure Adjust (Container : in out Vector);
     overriding procedure Finalize (Container : in out Vector);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-coorma.adb gcc-11.1.0/gcc/ada/libgnat/a-coorma.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-coorma.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-coorma.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Containers.Red_Black_Trees.Gene
*** 38,45 ****
  pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Keys);
  
  with System; use type System.Address;
  
! package body Ada.Containers.Ordered_Maps is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 38,48 ----
  pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Keys);
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Ordered_Maps with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Ordered_Maps
*** 1212,1217 ****
--- 1215,1250 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Map)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+ 
+       procedure Put_Key_Value (Position : Cursor);
+       procedure Put_Key_Value (Position : Cursor) is
+       begin
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Key_Type'Put_Image (S, Key (Position));
+          Put_Arrow (S);
+          Element_Type'Put_Image (S, Element (Position));
+       end Put_Key_Value;
+ 
+    begin
+       Array_Before (S);
+       Iterate (V, Put_Key_Value'Access);
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Ordered_Maps
*** 1349,1360 ****
        Node : constant Node_Access := Key_Ops.Find (Container.Tree, Key);
  
     begin
        if Checks and then Node = null then
           raise Constraint_Error with "key not in map";
        end if;
  
-       TE_Check (Container.Tree.TC);
- 
        Node.Key := Key;
        Node.Element := New_Item;
     end Replace;
--- 1382,1393 ----
        Node : constant Node_Access := Key_Ops.Find (Container.Tree, Key);
  
     begin
+       TE_Check (Container.Tree.TC);
+ 
        if Checks and then Node = null then
           raise Constraint_Error with "key not in map";
        end if;
  
        Node.Key := Key;
        Node.Element := New_Item;
     end Replace;
*************** package body Ada.Containers.Ordered_Maps
*** 1369,1374 ****
--- 1402,1409 ----
        New_Item  : Element_Type)
     is
     begin
+       TE_Check (Container.Tree.TC);
+ 
        if Checks and then Position.Node = null then
           raise Constraint_Error with
             "Position cursor of Replace_Element equals No_Element";
*************** package body Ada.Containers.Ordered_Maps
*** 1380,1387 ****
             "Position cursor of Replace_Element designates wrong map";
        end if;
  
-       TE_Check (Container.Tree.TC);
- 
        pragma Assert (Vet (Container.Tree, Position.Node),
                       "Position cursor of Replace_Element is bad");
  
--- 1415,1420 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-coorma.ads gcc-11.1.0/gcc/ada/libgnat/a-coorma.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-coorma.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-coorma.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Iterator_Interfaces;
*** 36,41 ****
--- 36,42 ----
  private with Ada.Containers.Red_Black_Trees;
  private with Ada.Finalization;
  private with Ada.Streams;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Key_Type is private;
*************** generic
*** 44,50 ****
     with function "<" (Left, Right : Key_Type) return Boolean is <>;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Ordered_Maps is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
--- 45,53 ----
     with function "<" (Left, Right : Key_Type) return Boolean is <>;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Ordered_Maps with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
*************** package Ada.Containers.Ordered_Maps is
*** 55,66 ****
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type;
  
     type Cursor is private;
     pragma Preelaborable_Initialization (Cursor);
  
     Empty_Map : constant Map;
  
     No_Element : constant Cursor;
  
--- 58,72 ----
        Constant_Indexing => Constant_Reference,
        Variable_Indexing => Reference,
        Default_Iterator  => Iterate,
!       Iterator_Element  => Element_Type,
!       Aggregate         => (Empty     => Empty,
!                             Add_Named => Insert);
  
     type Cursor is private;
     pragma Preelaborable_Initialization (Cursor);
  
     Empty_Map : constant Map;
+    function Empty return Map;
  
     No_Element : constant Cursor;
  
*************** private
*** 255,261 ****
  
     type Map is new Ada.Finalization.Controlled with record
        Tree : Tree_Types.Tree_Type;
!    end record;
  
     overriding procedure Adjust (Container : in out Map);
  
--- 261,270 ----
  
     type Map is new Ada.Finalization.Controlled with record
        Tree : Tree_Types.Tree_Type;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Map);
  
     overriding procedure Adjust (Container : in out Map);
  
*************** private
*** 365,370 ****
--- 374,380 ----
     --  Returns a pointer to the element designated by Position.
  
     Empty_Map : constant Map := (Controlled with others => <>);
+    function Empty return Map is (Empty_Map);
  
     No_Element : constant Cursor := Cursor'(null, null);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-coormu.adb gcc-11.1.0/gcc/ada/libgnat/a-coormu.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-coormu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-coormu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Containers.Red_Black_Trees.Gene
*** 39,46 ****
  pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Set_Operations);
  
  with System; use type System.Address;
  
! package body Ada.Containers.Ordered_Multisets is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 39,49 ----
  pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Set_Operations);
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Ordered_Multisets with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Ordered_Mult
*** 1563,1568 ****
--- 1566,1596 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Set)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+    begin
+       Array_Before (S);
+ 
+       for X of V loop
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Element_Type'Put_Image (S, X);
+       end loop;
+ 
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-coormu.ads gcc-11.1.0/gcc/ada/libgnat/a-coormu.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-coormu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-coormu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 34,39 ****
--- 34,40 ----
  private with Ada.Containers.Red_Black_Trees;
  private with Ada.Finalization;
  private with Ada.Streams;
+ private with Ada.Strings.Text_Output;
  with Ada.Iterator_Interfaces;
  
  generic
*************** generic
*** 42,48 ****
     with function "<" (Left, Right : Element_Type) return Boolean is <>;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Ordered_Multisets is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
--- 43,51 ----
     with function "<" (Left, Right : Element_Type) return Boolean is <>;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Ordered_Multisets with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
*************** private
*** 470,476 ****
  
     type Set is new Ada.Finalization.Controlled with record
        Tree : Tree_Types.Tree_Type;
!    end record;
  
     overriding procedure Adjust (Container : in out Set);
  
--- 473,482 ----
  
     type Set is new Ada.Finalization.Controlled with record
        Tree : Tree_Types.Tree_Type;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Set);
  
     overriding procedure Adjust (Container : in out Set);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-coorse.adb gcc-11.1.0/gcc/ada/libgnat/a-coorse.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-coorse.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-coorse.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Containers.Red_Black_Trees.Gene
*** 41,48 ****
  pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Set_Operations);
  
  with System; use type System.Address;
  
! package body Ada.Containers.Ordered_Sets is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
--- 41,51 ----
  pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Set_Operations);
  
  with System; use type System.Address;
+ with System.Put_Images;
  
! package body Ada.Containers.Ordered_Sets with
!   SPARK_Mode => Off
! is
  
     pragma Warnings (Off, "variable ""Busy*"" is not referenced");
     pragma Warnings (Off, "variable ""Lock*"" is not referenced");
*************** package body Ada.Containers.Ordered_Sets
*** 899,905 ****
                   Control =>
                     (Controlled with
                       Tree.TC'Unrestricted_Access,
!                      Container => Container'Access,
                       Pos       => Position,
                       Old_Key   => new Key_Type'(Key (Position))))
              do
--- 902,908 ----
                   Control =>
                     (Controlled with
                       Tree.TC'Unrestricted_Access,
!                      Container => Container'Unchecked_Access,
                       Pos       => Position,
                       Old_Key   => new Key_Type'(Key (Position))))
              do
*************** package body Ada.Containers.Ordered_Sets
*** 927,933 ****
                   Control =>
                     (Controlled with
                       Tree.TC'Unrestricted_Access,
!                      Container => Container'Access,
                       Pos       => Find (Container, Key),
                       Old_Key   => new Key_Type'(Key)))
              do
--- 930,936 ----
                   Control =>
                     (Controlled with
                       Tree.TC'Unrestricted_Access,
!                      Container => Container'Unchecked_Access,
                       Pos       => Find (Container, Key),
                       Old_Key   => new Key_Type'(Key)))
              do
*************** package body Ada.Containers.Ordered_Sets
*** 1578,1583 ****
--- 1581,1611 ----
        end;
     end Query_Element;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Set)
+    is
+       First_Time : Boolean := True;
+       use System.Put_Images;
+    begin
+       Array_Before (S);
+ 
+       for X of V loop
+          if First_Time then
+             First_Time := False;
+          else
+             Simple_Array_Between (S);
+          end if;
+ 
+          Element_Type'Put_Image (S, X);
+       end loop;
+ 
+       Array_After (S);
+    end Put_Image;
+ 
     ----------
     -- Read --
     ----------
*************** package body Ada.Containers.Ordered_Sets
*** 1641,1653 ****
          Element_Keys.Find (Container.Tree, New_Item);
  
     begin
        if Checks and then Node = null then
           raise Constraint_Error with
             "attempt to replace element not in set";
        end if;
  
-       TE_Check (Container.Tree.TC);
- 
        Node.Element := New_Item;
     end Replace;
  
--- 1669,1681 ----
          Element_Keys.Find (Container.Tree, New_Item);
  
     begin
+       TE_Check (Container.Tree.TC);
+ 
        if Checks and then Node = null then
           raise Constraint_Error with
             "attempt to replace element not in set";
        end if;
  
        Node.Element := New_Item;
     end Replace;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-coorse.ads gcc-11.1.0/gcc/ada/libgnat/a-coorse.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-coorse.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-coorse.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** with Ada.Containers.Helpers;
*** 37,42 ****
--- 37,43 ----
  private with Ada.Containers.Red_Black_Trees;
  private with Ada.Finalization;
  private with Ada.Streams;
+ private with Ada.Strings.Text_Output;
  
  generic
     type Element_Type is private;
*************** generic
*** 44,50 ****
     with function "<" (Left, Right : Element_Type) return Boolean is <>;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Ordered_Sets is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
--- 45,53 ----
     with function "<" (Left, Right : Element_Type) return Boolean is <>;
     with function "=" (Left, Right : Element_Type) return Boolean is <>;
  
! package Ada.Containers.Ordered_Sets with
!   SPARK_Mode => Off
! is
     pragma Annotate (CodePeer, Skip_Analysis);
     pragma Preelaborate;
     pragma Remote_Types;
*************** package Ada.Containers.Ordered_Sets is
*** 55,60 ****
--- 58,65 ----
     with Constant_Indexing => Constant_Reference,
          Default_Iterator  => Iterate,
          Iterator_Element  => Element_Type;
+         --  Aggregate         => (Empty       => Empty,
+         --                        Add_Unnamed => Include);
  
     pragma Preelaborable_Initialization (Set);
  
*************** package Ada.Containers.Ordered_Sets is
*** 64,69 ****
--- 69,75 ----
     function Has_Element (Position : Cursor) return Boolean;
  
     Empty_Set : constant Set;
+    function Empty  return Set;
  
     No_Element : constant Cursor;
  
*************** private
*** 338,344 ****
  
     type Set is new Ada.Finalization.Controlled with record
        Tree : Tree_Types.Tree_Type;
!    end record;
  
     overriding procedure Adjust (Container : in out Set);
  
--- 344,353 ----
  
     type Set is new Ada.Finalization.Controlled with record
        Tree : Tree_Types.Tree_Type;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Set);
  
     overriding procedure Adjust (Container : in out Set);
  
*************** private
*** 426,431 ****
--- 435,441 ----
     --  Returns a pointer to the element designated by Position.
  
     Empty_Set : constant Set := (Controlled with others => <>);
+    function Empty  return Set is (Empty_Set);
  
     No_Element : constant Cursor := Cursor'(null, null);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-coprnu.adb gcc-11.1.0/gcc/ada/libgnat/a-coprnu.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-coprnu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-coprnu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-coprnu.ads gcc-11.1.0/gcc/ada/libgnat/a-coprnu.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-coprnu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-coprnu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-crbltr.ads gcc-11.1.0/gcc/ada/libgnat/a-crbltr.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-crbltr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-crbltr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Ada.Containers.Red_Black_Trees i
*** 60,68 ****
        --  Note that objects of type Tree_Type are logically initialized (in the
        --  sense that representation invariants of type are satisfied by dint of
        --  default initialization), even without the Nodes component also having
!       --  its own initialization expression. We only initializae the Nodes
!       --  component here in order to prevent spurious compiler warnings about
!       --  the container object not being fully initialized.
  
        type Tree_Type (Capacity : Count_Type) is tagged record
           First  : Count_Type := 0;
--- 60,66 ----
        --  Note that objects of type Tree_Type are logically initialized (in the
        --  sense that representation invariants of type are satisfied by dint of
        --  default initialization), even without the Nodes component also having
!       --  its own initialization expression.
  
        type Tree_Type (Capacity : Count_Type) is tagged record
           First  : Count_Type := 0;
*************** package Ada.Containers.Red_Black_Trees i
*** 71,77 ****
           Length : Count_Type := 0;
           TC     : aliased Helpers.Tamper_Counts;
           Free   : Count_Type'Base := -1;
!          Nodes  : Nodes_Type (1 .. Capacity) := (others => <>);
        end record;
  
        package Implementation is new Helpers.Generic_Implementation;
--- 69,75 ----
           Length : Count_Type := 0;
           TC     : aliased Helpers.Tamper_Counts;
           Free   : Count_Type'Base := -1;
!          Nodes  : Nodes_Type (1 .. Capacity);
        end record;
  
        package Implementation is new Helpers.Generic_Implementation;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-crbtgk.adb gcc-11.1.0/gcc/ada/libgnat/a-crbtgk.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-crbtgk.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-crbtgk.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Containers.Red_Black_Tr
*** 422,433 ****
        Z      : out Node_Access)
     is
     begin
        if Checks and then Tree.Length = Count_Type'Last then
           raise Constraint_Error with "too many elements";
        end if;
  
-       TC_Check (Tree.TC);
- 
        Z := New_Node;
        pragma Assert (Z /= null);
        pragma Assert (Ops.Color (Z) = Red);
--- 422,433 ----
        Z      : out Node_Access)
     is
     begin
+       TC_Check (Tree.TC);
+ 
        if Checks and then Tree.Length = Count_Type'Last then
           raise Constraint_Error with "too many elements";
        end if;
  
        Z := New_Node;
        pragma Assert (Z /= null);
        pragma Assert (Ops.Color (Z) = Red);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-crbtgk.ads gcc-11.1.0/gcc/ada/libgnat/a-crbtgk.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-crbtgk.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-crbtgk.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-crbtgo.adb gcc-11.1.0/gcc/ada/libgnat/a-crbtgo.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-crbtgo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-crbtgo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Containers.Red_Black_Tr
*** 693,704 ****
  
     procedure Generic_Move (Target, Source : in out Tree_Type) is
     begin
        if Target'Address = Source'Address then
           return;
        end if;
  
-       TC_Check (Source.TC);
- 
        Clear (Target);
  
        Target := Source;
--- 693,704 ----
  
     procedure Generic_Move (Target, Source : in out Tree_Type) is
     begin
+       TC_Check (Source.TC);
+ 
        if Target'Address = Source'Address then
           return;
        end if;
  
        Clear (Target);
  
        Target := Source;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-crbtgo.ads gcc-11.1.0/gcc/ada/libgnat/a-crbtgo.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-crbtgo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-crbtgo.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-crdlli.adb gcc-11.1.0/gcc/ada/libgnat/a-crdlli.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-crdlli.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-crdlli.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-crdlli.ads gcc-11.1.0/gcc/ada/libgnat/a-crdlli.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-crdlli.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-crdlli.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** private
*** 314,320 ****
     type Node_Array is array (Count_Type range <>) of Node_Type;
  
     type List (Capacity : Count_Type) is tagged limited record
!       Nodes  : Node_Array (1 .. Capacity) := (others => <>);
        Free   : Count_Type'Base := -1;
        First  : Count_Type := 0;
        Last   : Count_Type := 0;
--- 314,320 ----
     type Node_Array is array (Count_Type range <>) of Node_Type;
  
     type List (Capacity : Count_Type) is tagged limited record
!       Nodes  : Node_Array (1 .. Capacity);
        Free   : Count_Type'Base := -1;
        First  : Count_Type := 0;
        Last   : Count_Type := 0;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-csquin.ads gcc-11.1.0/gcc/ada/libgnat/a-csquin.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-csquin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-csquin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cuprqu.adb gcc-11.1.0/gcc/ada/libgnat/a-cuprqu.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cuprqu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cuprqu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cuprqu.ads gcc-11.1.0/gcc/ada/libgnat/a-cuprqu.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cuprqu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cuprqu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cusyqu.adb gcc-11.1.0/gcc/ada/libgnat/a-cusyqu.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-cusyqu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cusyqu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cusyqu.ads gcc-11.1.0/gcc/ada/libgnat/a-cusyqu.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cusyqu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cusyqu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cwila1.ads gcc-11.1.0/gcc/ada/libgnat/a-cwila1.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cwila1.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cwila1.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-cwila9.ads gcc-11.1.0/gcc/ada/libgnat/a-cwila9.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-cwila9.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-cwila9.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-decima.adb gcc-11.1.0/gcc/ada/libgnat/a-decima.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-decima.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-decima.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-decima.ads gcc-11.1.0/gcc/ada/libgnat/a-decima.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-decima.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-decima.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-decima__128.ads gcc-11.1.0/gcc/ada/libgnat/a-decima__128.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-decima__128.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-decima__128.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,69 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                          A D A . D E C I M A L                           --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT. The copyright notice above, and the license provisions that follow --
+ -- apply solely to the  contents of the part following the private keyword. --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the 128-bit version of this package
+ 
+ package Ada.Decimal is
+    pragma Pure;
+ 
+    --  The compiler makes a number of assumptions based on the following five
+    --  constants (e.g. there is an assumption that decimal values can always
+    --  be represented in 128-bit signed binary form), so code modifications are
+    --  required to increase these constants.
+ 
+    Max_Scale : constant := +38;
+    Min_Scale : constant := -38;
+ 
+    Min_Delta : constant := 1.0E-38;
+    Max_Delta : constant := 1.0E+38;
+ 
+    Max_Decimal_Digits : constant := 38;
+ 
+    generic
+       type Dividend_Type  is delta <> digits <>;
+       type Divisor_Type   is delta <> digits <>;
+       type Quotient_Type  is delta <> digits <>;
+       type Remainder_Type is delta <> digits <>;
+ 
+    procedure Divide
+      (Dividend  : Dividend_Type;
+       Divisor   : Divisor_Type;
+       Quotient  : out Quotient_Type;
+       Remainder : out Remainder_Type);
+ 
+ private
+    pragma Inline (Divide);
+ 
+ end Ada.Decimal;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-dhfina.adb gcc-11.1.0/gcc/ada/libgnat/a-dhfina.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-dhfina.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-dhfina.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-dhfina.ads gcc-11.1.0/gcc/ada/libgnat/a-dhfina.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-dhfina.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-dhfina.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-diocst.adb gcc-11.1.0/gcc/ada/libgnat/a-diocst.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-diocst.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-diocst.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-diocst.ads gcc-11.1.0/gcc/ada/libgnat/a-diocst.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-diocst.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-diocst.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-direct.adb gcc-11.1.0/gcc/ada/libgnat/a-direct.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-direct.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-direct.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,36 ****
  ------------------------------------------------------------------------------
  
  with Ada.Calendar;               use Ada.Calendar;
- with Ada.Calendar.Formatting;    use Ada.Calendar.Formatting;
  with Ada.Characters.Handling;    use Ada.Characters.Handling;
  with Ada.Directories.Validity;   use Ada.Directories.Validity;
  with Ada.Directories.Hierarchical_File_Names;
--- 30,35 ----
*************** package body Ada.Directories is
*** 70,75 ****
--- 69,83 ----
     pragma Import (C, Max_Path, "__gnat_max_path_len");
     --  The maximum length of a path
  
+    function C_Modification_Time (N : System.Address) return Ada.Calendar.Time;
+    pragma Import (C, C_Modification_Time, "__gnat_file_time");
+    --  Get modification time for file with name referenced by N
+ 
+    Invalid_Time : constant Ada.Calendar.Time :=
+                     C_Modification_Time (System.Null_Address);
+    --  Result returned from C_Modification_Time call when routine unable to get
+    --  file modification time.
+ 
     type Search_Data is record
        Is_Valid      : Boolean := False;
        Name          : Unbounded_String;
*************** package body Ada.Directories is
*** 991,1004 ****
     -----------------------
  
     function Modification_Time (Name : String) return Time is
-       Date   : OS_Time;
-       Year   : Year_Type;
-       Month  : Month_Type;
-       Day    : Day_Type;
-       Hour   : Hour_Type;
-       Minute : Minute_Type;
-       Second : Second_Type;
  
     begin
        --  First, the invalid cases
  
--- 999,1007 ----
     -----------------------
  
     function Modification_Time (Name : String) return Time is
  
+       Date   : Time;
+       C_Name : aliased String (1 .. Name'Length + 1);
     begin
        --  First, the invalid cases
  
*************** package body Ada.Directories is
*** 1006,1024 ****
           raise Name_Error with '"' & Name & """ not a file or directory";
  
        else
!          Date := File_Time_Stamp (Name);
! 
!          --  Break down the time stamp into its constituents relative to GMT.
!          --  This version of Split does not recognize leap seconds or buffer
!          --  space for time zone processing.
! 
!          GM_Split (Date, Year, Month, Day, Hour, Minute, Second);
  
!          --  The result must be in GMT. Ada.Calendar.
!          --  Formatting.Time_Of with default time zone of zero (0) is the
!          --  routine of choice.
  
!          return Time_Of (Year, Month, Day, Hour, Minute, Second, 0.0);
        end if;
     end Modification_Time;
  
--- 1009,1023 ----
           raise Name_Error with '"' & Name & """ not a file or directory";
  
        else
!          C_Name := Name & ASCII.NUL;
!          Date := C_Modification_Time (C_Name'Address);
  
!          if Date = Invalid_Time then
!             raise Use_Error with
!               "Unable to get modification time of the file """ & Name & '"';
!          end if;
  
!          return Date;
        end if;
     end Modification_Time;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-direct.ads gcc-11.1.0/gcc/ada/libgnat/a-direct.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-direct.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-direct.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived for use with GNAT from AI-00248,  which is --
  -- expected to be a part of a future expected revised Ada Reference Manual. --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived for use with GNAT from AI-00248,  which is --
  -- expected to be a part of a future expected revised Ada Reference Manual. --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-direio.adb gcc-11.1.0/gcc/ada/libgnat/a-direio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-direio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-direio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-direio.ads gcc-11.1.0/gcc/ada/libgnat/a-direio.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-direio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-direio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-dirval.adb gcc-11.1.0/gcc/ada/libgnat/a-dirval.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-dirval.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-dirval.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                             (POSIX Version)                              --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                             (POSIX Version)                              --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-dirval.ads gcc-11.1.0/gcc/ada/libgnat/a-dirval.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-dirval.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-dirval.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-dirval__mingw.adb gcc-11.1.0/gcc/ada/libgnat/a-dirval__mingw.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-dirval__mingw.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-dirval__mingw.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                            (Windows Version)                             --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                            (Windows Version)                             --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-einuoc.adb gcc-11.1.0/gcc/ada/libgnat/a-einuoc.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-einuoc.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-einuoc.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2000-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2000-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-einuoc.ads gcc-11.1.0/gcc/ada/libgnat/a-einuoc.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-einuoc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-einuoc.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-elchha.adb gcc-11.1.0/gcc/ada/libgnat/a-elchha.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-elchha.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-elchha.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-elchha.ads gcc-11.1.0/gcc/ada/libgnat/a-elchha.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-elchha.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-elchha.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-elchha__vxworks-ppc-full.adb gcc-11.1.0/gcc/ada/libgnat/a-elchha__vxworks-ppc-full.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-elchha__vxworks-ppc-full.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-elchha__vxworks-ppc-full.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-envvar.adb gcc-11.1.0/gcc/ada/libgnat/a-envvar.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-envvar.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-envvar.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2009-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2009-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-excach.adb gcc-11.1.0/gcc/ada/libgnat/a-excach.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-excach.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-excach.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-except.adb gcc-11.1.0/gcc/ada/libgnat/a-except.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-except.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-except.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,41 ****
  pragma Style_Checks (All_Checks);
  --  No subprogram ordering check, due to logical grouping
  
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we get
- --  elaboration circularities with System.Exception_Tables.
- 
  with System;                  use System;
  with System.Exceptions;       use System.Exceptions;
  with System.Exceptions_Debug; use System.Exceptions_Debug;
--- 32,37 ----
*************** package body Ada.Exceptions is
*** 668,688 ****
     Rmsg_36 : constant String := "stream operation not allowed"     & NUL;
     Rmsg_37 : constant String := "build-in-place mismatch"          & NUL;
  
-    -----------------------
-    -- Polling Interface --
-    -----------------------
- 
-    type Unsigned is mod 2 ** 32;
- 
-    Counter : Unsigned := 0;
-    pragma Warnings (Off, Counter);
-    --  This counter is provided for convenience. It can be used in Poll to
-    --  perform periodic but not systematic operations.
- 
-    procedure Poll is separate;
-    --  The actual polling routine is separate, so that it can easily be
-    --  replaced with a target dependent version.
- 
     --------------------------
     -- Code_Address_For_AAA --
     --------------------------
--- 664,669 ----
*************** package body Ada.Exceptions is
*** 976,986 ****
  
     begin
        Exception_Data.Set_Exception_Msg (X, E, Message);
- 
-       if not ZCX_By_Default then
-          Abort_Defer.all;
-       end if;
- 
        Complete_And_Propagate_Occurrence (X);
     end Raise_Exception_Always;
  
--- 957,962 ----
*************** package body Ada.Exceptions is
*** 1060,1070 ****
  
     begin
        Exception_Data.Set_Exception_C_Msg (X, E, M);
- 
-       if not ZCX_By_Default then
-          Abort_Defer.all;
-       end if;
- 
        Complete_Occurrence (X);
        return X;
     end Create_Occurrence_From_Signal_Handler;
--- 1036,1041 ----
*************** package body Ada.Exceptions is
*** 1160,1170 ****
        X : constant EOA := Exception_Propagation.Allocate_Occurrence;
     begin
        Exception_Data.Set_Exception_C_Msg (X, E, F, L, C, M);
- 
-       if not ZCX_By_Default then
-          Abort_Defer.all;
-       end if;
- 
        Complete_And_Propagate_Occurrence (X);
     end Raise_With_Location_And_Msg;
  
--- 1131,1136 ----
*************** package body Ada.Exceptions is
*** 1187,1199 ****
        Excep.Msg_Length                  := Ex.Msg_Length;
        Excep.Msg (1 .. Excep.Msg_Length) := Ex.Msg (1 .. Ex.Msg_Length);
  
-       --  The following is a common pattern, should be abstracted
-       --  into a procedure call ???
- 
-       if not ZCX_By_Default then
-          Abort_Defer.all;
-       end if;
- 
        Complete_And_Propagate_Occurrence (Excep);
     end Raise_With_Msg;
  
--- 1153,1158 ----
*************** package body Ada.Exceptions is
*** 1526,1535 ****
        Saved_MO : constant System.Address := Excep.Machine_Occurrence;
  
     begin
-       if not ZCX_By_Default then
-          Abort_Defer.all;
-       end if;
- 
        Save_Occurrence (Excep.all, Get_Current_Excep.all.all);
        Excep.Machine_Occurrence := Saved_MO;
        Complete_And_Propagate_Occurrence (Excep);
--- 1485,1490 ----
*************** package body Ada.Exceptions is
*** 1575,1584 ****
  
     procedure Reraise_Occurrence_Always (X : Exception_Occurrence) is
     begin
-       if not ZCX_By_Default then
-          Abort_Defer.all;
-       end if;
- 
        Reraise_Occurrence_No_Defer (X);
     end Reraise_Occurrence_Always;
  
--- 1530,1535 ----
*************** package body Ada.Exceptions is
*** 1660,1669 ****
     ---------------
  
     procedure To_Stderr (C : Character) is
!       procedure Put_Char_Stderr (C : Character);
        pragma Import (C, Put_Char_Stderr, "put_char_stderr");
     begin
!       Put_Char_Stderr (C);
     end To_Stderr;
  
     procedure To_Stderr (S : String) is
--- 1611,1620 ----
     ---------------
  
     procedure To_Stderr (C : Character) is
!       procedure Put_Char_Stderr (C : Integer);
        pragma Import (C, Put_Char_Stderr, "put_char_stderr");
     begin
!       Put_Char_Stderr (Character'Pos (C));
     end To_Stderr;
  
     procedure To_Stderr (S : String) is
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-except.ads gcc-11.1.0/gcc/ada/libgnat/a-except.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-except.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-except.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
***************
*** 36,45 ****
  --  This is the default version of this package. We also have cert and zfp
  --  versions.
  
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we get
- --  elaboration circularities with ourself.
- 
  with System;
  with System.Parameters;
  with System.Standard_Library;
--- 36,41 ----
*************** private
*** 240,270 ****
     --  Determine whether the current exception (if it exists) is an instance of
     --  Standard'Abort_Signal.
  
-    -----------------------
-    -- Polling Interface --
-    -----------------------
- 
-    --  The GNAT compiler has an option to generate polling calls to the Poll
-    --  routine in this package. Specifying the -gnatP option for a compilation
-    --  causes a call to Ada.Exceptions.Poll to be generated on every subprogram
-    --  entry and on every iteration of a loop, thus avoiding the possibility of
-    --  a case of unbounded time between calls.
- 
-    --  This polling interface may be used for instrumentation or debugging
-    --  purposes (e.g. implementing watchpoints in software or in the debugger).
- 
-    --  In the GNAT technology itself, this interface is used to implement
-    --  immediate asynchronous transfer of control and immediate abort on
-    --  targets which do not provide for one thread interrupting another.
- 
-    --  Note: this used to be in a separate unit called System.Poll, but that
-    --  caused horrible circular elaboration problems between System.Poll and
-    --  Ada.Exceptions.
- 
-    procedure Poll;
-    --  Check for asynchronous abort. Note that we do not inline the body.
-    --  This makes the interface more useful for debugging purposes.
- 
     --------------------------
     -- Exception_Occurrence --
     --------------------------
--- 236,241 ----
*************** private
*** 330,335 ****
--- 301,308 ----
     pragma Stream_Convert (Exception_Occurrence, String_To_EO, EO_To_String);
     --  Functions for implementing Exception_Occurrence stream attributes
  
+    pragma Warnings (Off, "aggregate not fully initialized");
     Null_Occurrence : constant Exception_Occurrence := (others => <>);
+    pragma Warnings (On, "aggregate not fully initialized");
  
  end Ada.Exceptions;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-excpol.adb gcc-11.1.0/gcc/ada/libgnat/a-excpol.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-excpol.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-excpol.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,42 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                   A D A . E X C E P T I O N S . P O L L                  --
- --                                                                          --
- --                                  B o d y                                 --
- --                 (dummy version where polling is not used)                --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNARL is free software; you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- separate (Ada.Exceptions)
- 
- ----------
- -- Poll --
- ----------
- 
- procedure Poll is
- begin
-    null;
- end Poll;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-excpol__abort.adb gcc-11.1.0/gcc/ada/libgnat/a-excpol__abort.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-excpol__abort.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-excpol__abort.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,62 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                   A D A . E X C E P T I O N S . P O L L                  --
- --                (version supporting asynchronous abort test)              --
- --                                                                          --
- --                                  B o d y                                 --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNARL is free software; you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This version is for targets that do not support per-thread asynchronous
- --  signals. On such targets, we require compilation with the -gnatP switch
- --  that activates periodic polling. Then in the body of the polling routine
- --  we test for asynchronous abort.
- 
- --  Windows and HPUX 10 currently use this file
- 
- pragma Warnings (Off);
- --  Allow withing of non-Preelaborated units in Ada 2005 mode where this
- --  package will be categorized as Preelaborate. See AI-362 for details.
- --  It is safe in the context of the run-time to violate the rules.
- 
- with System.Soft_Links;
- 
- pragma Warnings (On);
- 
- separate (Ada.Exceptions)
- 
- ----------
- -- Poll --
- ----------
- 
- procedure Poll is
- begin
-    --  Test for asynchronous abort on each poll
- 
-    if System.Soft_Links.Check_Abort_Status.all /= 0 then
-       raise Standard'Abort_Signal;
-    end if;
- end Poll;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-exctra.adb gcc-11.1.0/gcc/ada/libgnat/a-exctra.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-exctra.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-exctra.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-exctra.ads gcc-11.1.0/gcc/ada/libgnat/a-exctra.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-exctra.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-exctra.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-exexda.adb gcc-11.1.0/gcc/ada/libgnat/a-exexda.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-exexda.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-exexda.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-exexpr.adb gcc-11.1.0/gcc/ada/libgnat/a-exexpr.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-exexpr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-exexpr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-exextr.adb gcc-11.1.0/gcc/ada/libgnat/a-exextr.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-exextr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-exextr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exception_Traces is
*** 43,54 ****
--- 43,65 ----
     --  Convenient shortcut
  
     type Exception_Action is access procedure (E : Exception_Occurrence);
+    pragma Favor_Top_Level (Exception_Action);
+ 
     Global_Action : Exception_Action := null;
+    pragma Atomic (Global_Action);
     pragma Export
       (Ada, Global_Action, "__gnat_exception_actions_global_action");
     --  Global action, executed whenever an exception is raised.  Changing the
     --  export name must be coordinated with code in g-excact.adb.
  
+    Global_Unhandled_Action : Exception_Action := null;
+    pragma Atomic (Global_Unhandled_Action);
+    pragma Export
+      (Ada, Global_Unhandled_Action,
+       "__gnat_exception_actions_global_unhandled_action");
+    --  Global action, executed whenever an unhandled exception is raised.
+    --  Changing the export name must be coordinated with code in g-excact.adb.
+ 
     Raise_Hook_Initialized : Boolean := False;
     pragma Export
       (Ada, Raise_Hook_Initialized, "__gnat_exception_actions_initialized");
*************** package body Exception_Traces is
*** 77,82 ****
--- 88,98 ----
     ----------------------
  
     procedure Notify_Exception (Excep : EOA; Is_Unhandled : Boolean) is
+       --  Save actions locally to avoid any race condition that would
+       --  reset them to null.
+       Action           : constant Exception_Action := Global_Action;
+       Unhandled_Action : constant Exception_Action := Global_Unhandled_Action;
+ 
     begin
        --  Output the exception information required by the Exception_Trace
        --  configuration. Take care not to output information about internal
*************** package body Exception_Traces is
*** 119,126 ****
           To_Action (Exception_Data_Ptr (Excep.Id).Raise_Hook) (Excep.all);
        end if;
  
!       if Global_Action /= null then
!          Global_Action (Excep.all);
        end if;
     end Notify_Exception;
  
--- 135,146 ----
           To_Action (Exception_Data_Ptr (Excep.Id).Raise_Hook) (Excep.all);
        end if;
  
!       if Is_Unhandled and Unhandled_Action /= null then
!          Unhandled_Action (Excep.all);
!       end if;
! 
!       if Action /= null then
!          Action (Excep.all);
        end if;
     end Notify_Exception;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-exstat.adb gcc-11.1.0/gcc/ada/libgnat/a-exstat.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-exstat.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-exstat.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-finali.adb gcc-11.1.0/gcc/ada/libgnat/a-finali.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-finali.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-finali.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-finali.ads gcc-11.1.0/gcc/ada/libgnat/a-finali.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-finali.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-finali.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-llltio.ads gcc-11.1.0/gcc/ada/libgnat/a-llltio.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-llltio.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-llltio.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,19 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --   A D A . L O N G _ L O N G _ L O N G _ I N T E G E R _ T E X T _ I O    --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT.  In accordance with the copyright of that document, you can freely --
+ -- copy and modify this specification,  provided that if you redistribute a --
+ -- modified version,  any changes that you have made are clearly indicated. --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Text_IO;
+ 
+ package Ada.Long_Long_Long_Integer_Text_IO is
+   new Ada.Text_IO.Integer_IO (Long_Long_Long_Integer);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-lllwti.ads gcc-11.1.0/gcc/ada/libgnat/a-lllwti.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-lllwti.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-lllwti.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,19 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --   A D A . L O N G _ L O N G _ I N T E G E R _ W I D E _ T E X T _ I O    --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT.  In accordance with the copyright of that document, you can freely --
+ -- copy and modify this specification,  provided that if you redistribute a --
+ -- modified version,  any changes that you have made are clearly indicated. --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Wide_Text_IO;
+ 
+ package Ada.Long_Long_Long_Integer_Wide_Text_IO is
+   new Ada.Wide_Text_IO.Integer_IO (Long_Long_Long_Integer);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-lllzti.ads gcc-11.1.0/gcc/ada/libgnat/a-lllzti.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-lllzti.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-lllzti.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,19 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --   A D A . L O N G _ L O N G _ I N T E G E R _ W I D E _ T E X T _ I O    --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT.  In accordance with the copyright of that document, you can freely --
+ -- copy and modify this specification,  provided that if you redistribute a --
+ -- modified version,  any changes that you have made are clearly indicated. --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Wide_Wide_Text_IO;
+ 
+ package Ada.Long_Long_Long_Integer_Wide_Wide_Text_IO is
+   new Ada.Wide_Wide_Text_IO.Integer_IO (Long_Long_Long_Integer);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-locale.adb gcc-11.1.0/gcc/ada/libgnat/a-locale.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-locale.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-locale.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-locale.ads gcc-11.1.0/gcc/ada/libgnat/a-locale.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-locale.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-locale.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT.  In accordance with the copyright of that document, you can freely --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT.  In accordance with the copyright of that document, you can freely --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nagefl.ads gcc-11.1.0/gcc/ada/libgnat/a-nagefl.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-nagefl.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-nagefl.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,171 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --       A D A . N U M E R I C S . A U X _ G E N E R I C _ F L O A T        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                            (Generic Wrapper)                             --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides the basic computational interface for the generic
+ --  elementary functions. The C library version interfaces with the routines
+ --  in the C mathematical library.
+ 
+ --  This version here is for use with normal Unix math functions.
+ 
+ with Ada.Numerics.Aux_Long_Long_Float;
+ with Ada.Numerics.Aux_Long_Float;
+ with Ada.Numerics.Aux_Float;
+ with Ada.Numerics.Aux_Short_Float;
+ 
+ generic
+    type T is digits <>;
+ package Ada.Numerics.Aux_Generic_Float is
+    pragma Pure;
+ 
+    package LLF renames Aux_Long_Long_Float;
+    package LF renames Aux_Long_Float;
+    package F renames Aux_Float;
+    package SF renames Aux_Short_Float;
+ 
+    function Sin (X : T'Base) return T'Base
+    is (if T'Base'Digits > LF.T'Digits
+          then T'Base (LLF.Sin (LLF.T (X)))
+          elsif T'Base'Digits > F.T'Digits
+          then T'Base (LF.Sin (LF.T (X)))
+          elsif T'Base'Digits > SF.T'Digits
+          then T'Base (F.Sin (F.T (X)))
+          else T'Base (SF.Sin (SF.T (X))));
+ 
+    function Cos (X : T'Base) return T'Base
+    is (if T'Base'Digits > LF.T'Digits
+          then T'Base (LLF.Cos (LLF.T (X)))
+          elsif T'Base'Digits > F.T'Digits
+          then T'Base (LF.Cos (LF.T (X)))
+          elsif T'Base'Digits > SF.T'Digits
+          then T'Base (F.Cos (F.T (X)))
+          else T'Base (SF.Cos (SF.T (X))));
+ 
+    function Tan (X : T'Base) return T'Base
+    is (if T'Base'Digits > LF.T'Digits
+          then T'Base (LLF.Tan (LLF.T (X)))
+          elsif T'Base'Digits > F.T'Digits
+          then T'Base (LF.Tan (LF.T (X)))
+          elsif T'Base'Digits > SF.T'Digits
+          then T'Base (F.Tan (F.T (X)))
+          else T'Base (SF.Tan (SF.T (X))));
+ 
+    function Exp (X : T'Base) return T'Base
+    is (if T'Base'Digits > LF.T'Digits
+          then T'Base (LLF.Exp (LLF.T (X)))
+          elsif T'Base'Digits > F.T'Digits
+          then T'Base (LF.Exp (LF.T (X)))
+          elsif T'Base'Digits > SF.T'Digits
+          then T'Base (F.Exp (F.T (X)))
+          else T'Base (SF.Exp (SF.T (X))));
+ 
+    function Sqrt (X : T'Base) return T'Base
+    is (if T'Base'Digits > LF.T'Digits
+          then T'Base (LLF.Sqrt (LLF.T (X)))
+          elsif T'Base'Digits > F.T'Digits
+          then T'Base (LF.Sqrt (LF.T (X)))
+          elsif T'Base'Digits > SF.T'Digits
+          then T'Base (F.Sqrt (F.T (X)))
+          else T'Base (SF.Sqrt (SF.T (X))));
+ 
+    function Log (X : T'Base) return T'Base
+    is (if T'Base'Digits > LF.T'Digits
+          then T'Base (LLF.Log (LLF.T (X)))
+          elsif T'Base'Digits > F.T'Digits
+          then T'Base (LF.Log (LF.T (X)))
+          elsif T'Base'Digits > SF.T'Digits
+          then T'Base (F.Log (F.T (X)))
+          else T'Base (SF.Log (SF.T (X))));
+ 
+    function Acos (X : T'Base) return T'Base
+    is (if T'Base'Digits > LF.T'Digits
+          then T'Base (LLF.Acos (LLF.T (X)))
+          elsif T'Base'Digits > F.T'Digits
+          then T'Base (LF.Acos (LF.T (X)))
+          elsif T'Base'Digits > SF.T'Digits
+          then T'Base (F.Acos (F.T (X)))
+          else T'Base (SF.Acos (SF.T (X))));
+ 
+    function Asin (X : T'Base) return T'Base
+    is (if T'Base'Digits > LF.T'Digits
+          then T'Base (LLF.Asin (LLF.T (X)))
+          elsif T'Base'Digits > F.T'Digits
+          then T'Base (LF.Asin (LF.T (X)))
+          elsif T'Base'Digits > SF.T'Digits
+          then T'Base (F.Asin (F.T (X)))
+          else T'Base (SF.Asin (SF.T (X))));
+ 
+    function Atan (X : T'Base) return T'Base
+    is (if T'Base'Digits > LF.T'Digits
+          then T'Base (LLF.Atan (LLF.T (X)))
+          elsif T'Base'Digits > F.T'Digits
+          then T'Base (LF.Atan (LF.T (X)))
+          elsif T'Base'Digits > SF.T'Digits
+          then T'Base (F.Atan (F.T (X)))
+          else T'Base (SF.Atan (SF.T (X))));
+ 
+    function Sinh (X : T'Base) return T'Base
+    is (if T'Base'Digits > LF.T'Digits
+          then T'Base (LLF.Sinh (LLF.T (X)))
+          elsif T'Base'Digits > F.T'Digits
+          then T'Base (LF.Sinh (LF.T (X)))
+          elsif T'Base'Digits > SF.T'Digits
+          then T'Base (F.Sinh (F.T (X)))
+          else T'Base (SF.Sinh (SF.T (X))));
+ 
+    function Cosh (X : T'Base) return T'Base
+    is (if T'Base'Digits > LF.T'Digits
+          then T'Base (LLF.Cosh (LLF.T (X)))
+          elsif T'Base'Digits > F.T'Digits
+          then T'Base (LF.Cosh (LF.T (X)))
+          elsif T'Base'Digits > SF.T'Digits
+          then T'Base (F.Cosh (F.T (X)))
+          else T'Base (SF.Cosh (SF.T (X))));
+ 
+    function Tanh (X : T'Base) return T'Base
+    is (if T'Base'Digits > LF.T'Digits
+          then T'Base (LLF.Tanh (LLF.T (X)))
+          elsif T'Base'Digits > F.T'Digits
+          then T'Base (LF.Tanh (LF.T (X)))
+          elsif T'Base'Digits > SF.T'Digits
+          then T'Base (F.Tanh (F.T (X)))
+          else T'Base (SF.Tanh (SF.T (X))));
+ 
+    function Pow (X, Y : T'Base) return T'Base
+    is (if T'Base'Digits > LF.T'Digits
+          then T'Base (LLF.Pow (LLF.T (X), LLF.T (Y)))
+          elsif T'Base'Digits > F.T'Digits
+          then T'Base (LF.Pow (LF.T (X), LF.T (Y)))
+          elsif T'Base'Digits > SF.T'Digits
+          then T'Base (F.Pow (F.T (X), F.T (Y)))
+          else T'Base (SF.Pow (SF.T (X), SF.T (Y))));
+ 
+ end Ada.Numerics.Aux_Generic_Float;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-naliop.ads gcc-11.1.0/gcc/ada/libgnat/a-naliop.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-naliop.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-naliop.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,45 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --      A D A . N U M E R I C S . A U X _ L I N K E R _ O P T I O N S       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --                     Copyright (C) 2001-2020, AdaCore                     --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package is used to provide target specific linker_options for
+ --  the support of C Library Math functions as required by other
+ --  children packages of Ada.Numerics.Aux.
+ 
+ --  This is a version for default use that links with -lm. An
+ --  alternate __nolibm version is to be used where no additional
+ --  libraries are required.
+ 
+ --  This package should not be directly with'ed by an application program
+ 
+ package Ada.Numerics.Aux_Linker_Options is
+    pragma Pure;
+    pragma Linker_Options ("-lm");
+ end Ada.Numerics.Aux_Linker_Options;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-naliop__nolibm.ads gcc-11.1.0/gcc/ada/libgnat/a-naliop__nolibm.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-naliop__nolibm.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-naliop__nolibm.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,43 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --      A D A . N U M E R I C S . A U X _ L I N K E R _ O P T I O N S       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --                     Copyright (C) 2001-2020, AdaCore                     --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package is used to provide target specific linker_options for
+ --  the support of C Library Math functions as required by other
+ --  children packages of Ada.Numerics.Aux.
+ 
+ --  This is a version to be used where no additional libraries are
+ --  required.
+ 
+ --  This package should not be directly with'ed by an application program
+ 
+ package Ada.Numerics.Aux_Linker_Options is
+    pragma Pure;
+ end Ada.Numerics.Aux_Linker_Options;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nallfl.ads gcc-11.1.0/gcc/ada/libgnat/a-nallfl.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-nallfl.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-nallfl.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,87 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --     A D A . N U M E R I C S . A U X . L O N G _ L O N G _ F L O A T      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                  (C Math Library Version, Long Long Float)               --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides the basic computational interface for the generic
+ --  elementary functions. The C library version interfaces with the routines
+ --  in the C mathematical library, and is thus quite portable.
+ 
+ with Ada.Numerics.Aux_Linker_Options;
+ pragma Warnings (Off, Ada.Numerics.Aux_Linker_Options);
+ 
+ package Ada.Numerics.Aux_Long_Long_Float is
+    pragma Pure;
+ 
+    subtype T is Long_Long_Float;
+ 
+    --  We import these functions directly from C. Note that we label them
+    --  all as pure functions, because indeed all of them are in fact pure.
+ 
+    function Sin (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "sinl";
+ 
+    function Cos (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "cosl";
+ 
+    function Tan (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "tanl";
+ 
+    function Exp (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "expl";
+ 
+    function Sqrt (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "sqrtl";
+ 
+    function Log (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "logl";
+ 
+    function Acos (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "acosl";
+ 
+    function Asin (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "asinl";
+ 
+    function Atan (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "atanl";
+ 
+    function Sinh (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "sinhl";
+ 
+    function Cosh (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "coshl";
+ 
+    function Tanh (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "tanhl";
+ 
+    function Pow (X, Y : T) return T with
+      Import, Convention => Intrinsic, External_Name => "powl";
+ 
+ end Ada.Numerics.Aux_Long_Long_Float;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nallfl__wraplf.ads gcc-11.1.0/gcc/ada/libgnat/a-nallfl__wraplf.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-nallfl__wraplf.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-nallfl__wraplf.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,87 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --     A D A . N U M E R I C S . A U X . L O N G _ L O N G _ F L O A T      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --              (Long Long Float Wrapper in terms of Long Float)            --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides the basic computational interface for the
+ --  generic elementary functions. The functions in this unit are
+ --  wrappers for those in the Long Float package.
+ 
+ with Ada.Numerics.Aux_Long_Float;
+ 
+ package Ada.Numerics.Aux_Long_Long_Float is
+    pragma Pure;
+ 
+    subtype T is Long_Long_Float;
+    package Aux renames Ada.Numerics.Aux_Long_Float;
+    subtype W is Aux.T;
+ 
+    --  Use the Aux implementation.
+ 
+    function Sin (X : T) return T
+    is (T (Aux.Sin (W (X))));
+ 
+    function Cos (X : T) return T
+    is (T (Aux.Cos (W (X))));
+ 
+    function Tan (X : T) return T
+    is (T (Aux.Tan (W (X))));
+ 
+    function Exp (X : T) return T
+    is (T (Aux.Exp (W (X))));
+ 
+    function Sqrt (X : T) return T
+    is (T (Aux.Sqrt (W (X))));
+ 
+    function Log (X : T) return T
+    is (T (Aux.Log (W (X))));
+ 
+    function Acos (X : T) return T
+    is (T (Aux.Acos (W (X))));
+ 
+    function Asin (X : T) return T
+    is (T (Aux.Asin (W (X))));
+ 
+    function Atan (X : T) return T
+    is (T (Aux.Atan (W (X))));
+ 
+    function Sinh (X : T) return T
+    is (T (Aux.Sinh (W (X))));
+ 
+    function Cosh (X : T) return T
+    is (T (Aux.Cosh (W (X))));
+ 
+    function Tanh (X : T) return T
+    is (T (Aux.Tanh (W (X))));
+ 
+    function Pow (X, Y : T) return T
+    is (T (Aux.Pow (W (X), W (Y))));
+ 
+ end Ada.Numerics.Aux_Long_Long_Float;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nalofl.ads gcc-11.1.0/gcc/ada/libgnat/a-nalofl.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-nalofl.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-nalofl.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,87 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --          A D A . N U M E R I C S . A U X _ L O N G _ F L O A T           --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                     (C Math Library Version, Long Float)                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides the basic computational interface for the generic
+ --  elementary functions. The C library version interfaces with the routines
+ --  in the C mathematical library, and is thus quite portable.
+ 
+ with Ada.Numerics.Aux_Linker_Options;
+ pragma Warnings (Off, Ada.Numerics.Aux_Linker_Options);
+ 
+ package Ada.Numerics.Aux_Long_Float is
+    pragma Pure;
+ 
+    subtype T is Long_Float;
+ 
+    --  We import these functions directly from C. Note that we label them
+    --  all as pure functions, because indeed all of them are in fact pure.
+ 
+    function Sin (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "sin";
+ 
+    function Cos (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "cos";
+ 
+    function Tan (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "tan";
+ 
+    function Exp (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "exp";
+ 
+    function Sqrt (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "sqrt";
+ 
+    function Log (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "log";
+ 
+    function Acos (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "acos";
+ 
+    function Asin (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "asin";
+ 
+    function Atan (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "atan";
+ 
+    function Sinh (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "sinh";
+ 
+    function Cosh (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "cosh";
+ 
+    function Tanh (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "tanh";
+ 
+    function Pow (X, Y : T) return T with
+      Import, Convention => Intrinsic, External_Name => "pow";
+ 
+ end Ada.Numerics.Aux_Long_Float;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nashfl.ads gcc-11.1.0/gcc/ada/libgnat/a-nashfl.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-nashfl.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-nashfl.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,87 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --         A D A . N U M E R I C S . A U X _ S H O R T _ F L O A T          --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                  (Short Float Wrapper in terms of Float)                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides the basic computational interface for the
+ --  generic elementary functions. The functions in this unit are
+ --  wrappers for those in the Float package.
+ 
+ with Ada.Numerics.Aux_Float;
+ 
+ package Ada.Numerics.Aux_Short_Float is
+    pragma Pure;
+ 
+    subtype T is Short_Float;
+    package Aux renames Ada.Numerics.Aux_Float;
+    subtype W is Aux.T;
+ 
+    --  Use the Aux implementation.
+ 
+    function Sin (X : T) return T
+    is (T (Aux.Sin (W (X))));
+ 
+    function Cos (X : T) return T
+    is (T (Aux.Cos (W (X))));
+ 
+    function Tan (X : T) return T
+    is (T (Aux.Tan (W (X))));
+ 
+    function Exp (X : T) return T
+    is (T (Aux.Exp (W (X))));
+ 
+    function Sqrt (X : T) return T
+    is (T (Aux.Sqrt (W (X))));
+ 
+    function Log (X : T) return T
+    is (T (Aux.Log (W (X))));
+ 
+    function Acos (X : T) return T
+    is (T (Aux.Acos (W (X))));
+ 
+    function Asin (X : T) return T
+    is (T (Aux.Asin (W (X))));
+ 
+    function Atan (X : T) return T
+    is (T (Aux.Atan (W (X))));
+ 
+    function Sinh (X : T) return T
+    is (T (Aux.Sinh (W (X))));
+ 
+    function Cosh (X : T) return T
+    is (T (Aux.Cosh (W (X))));
+ 
+    function Tanh (X : T) return T
+    is (T (Aux.Tanh (W (X))));
+ 
+    function Pow (X, Y : T) return T
+    is (T (Aux.Pow (W (X), W (Y))));
+ 
+ end Ada.Numerics.Aux_Short_Float;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nashfl__wraplf.ads gcc-11.1.0/gcc/ada/libgnat/a-nashfl__wraplf.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-nashfl__wraplf.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-nashfl__wraplf.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,87 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --         A D A . N U M E R I C S . A U X _ S H O R T _ F L O A T          --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                (Short Float Wrapper in terms of Long Float)              --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides the basic computational interface for the
+ --  generic elementary functions. The functions in this unit are
+ --  wrappers for those in the Long Float package.
+ 
+ with Ada.Numerics.Aux_Long_Float;
+ 
+ package Ada.Numerics.Aux_Short_Float is
+    pragma Pure;
+ 
+    subtype T is Short_Float;
+    package Aux renames Ada.Numerics.Aux_Long_Float;
+    subtype W is Aux.T;
+ 
+    --  Use the Aux implementation.
+ 
+    function Sin (X : T) return T
+    is (T (Aux.Sin (W (X))));
+ 
+    function Cos (X : T) return T
+    is (T (Aux.Cos (W (X))));
+ 
+    function Tan (X : T) return T
+    is (T (Aux.Tan (W (X))));
+ 
+    function Exp (X : T) return T
+    is (T (Aux.Exp (W (X))));
+ 
+    function Sqrt (X : T) return T
+    is (T (Aux.Sqrt (W (X))));
+ 
+    function Log (X : T) return T
+    is (T (Aux.Log (W (X))));
+ 
+    function Acos (X : T) return T
+    is (T (Aux.Acos (W (X))));
+ 
+    function Asin (X : T) return T
+    is (T (Aux.Asin (W (X))));
+ 
+    function Atan (X : T) return T
+    is (T (Aux.Atan (W (X))));
+ 
+    function Sinh (X : T) return T
+    is (T (Aux.Sinh (W (X))));
+ 
+    function Cosh (X : T) return T
+    is (T (Aux.Cosh (W (X))));
+ 
+    function Tanh (X : T) return T
+    is (T (Aux.Tanh (W (X))));
+ 
+    function Pow (X, Y : T) return T
+    is (T (Aux.Pow (W (X), W (Y))));
+ 
+ end Ada.Numerics.Aux_Short_Float;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nbnbin.adb gcc-11.1.0/gcc/ada/libgnat/a-nbnbin.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-nbnbin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-nbnbin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,49 ****
  ------------------------------------------------------------------------------
  
  with Ada.Unchecked_Deallocation;
! with Ada.Characters.Conversions; use Ada.Characters.Conversions;
  
  with Interfaces; use Interfaces;
  
  with System.Generic_Bignums;
  
  package body Ada.Numerics.Big_Numbers.Big_Integers is
  
!    package Bignums is new
!      System.Generic_Bignums (Use_Secondary_Stack => False);
!    use Bignums, System;
  
     procedure Free is new Ada.Unchecked_Deallocation (Bignum_Data, Bignum);
  
     function Get_Bignum (Arg : Big_Integer) return Bignum is
       (if Arg.Value.C = System.Null_Address
        then raise Constraint_Error with "invalid big integer"
--- 30,77 ----
  ------------------------------------------------------------------------------
  
  with Ada.Unchecked_Deallocation;
! with Ada.Strings.Text_Output.Utils;
  
  with Interfaces; use Interfaces;
  
  with System.Generic_Bignums;
+ with System.Shared_Bignums; use System.Shared_Bignums;
  
  package body Ada.Numerics.Big_Numbers.Big_Integers is
  
!    function Allocate_Bignum (D : Digit_Vector; Neg : Boolean) return Bignum;
!    --  Allocate Bignum value with the given contents
! 
!    procedure Free_Bignum (X : in out Bignum);
!    --  Free memory associated with X
! 
!    function To_Bignum (X : aliased in out Bignum) return Bignum is (X);
  
     procedure Free is new Ada.Unchecked_Deallocation (Bignum_Data, Bignum);
  
+    ---------------------
+    -- Allocate_Bignum --
+    ---------------------
+ 
+    function Allocate_Bignum (D : Digit_Vector; Neg : Boolean) return Bignum is
+    begin
+       return new Bignum_Data'(D'Length, Neg, D);
+    end Allocate_Bignum;
+ 
+    -----------------
+    -- Free_Bignum --
+    -----------------
+ 
+    procedure Free_Bignum (X : in out Bignum) is
+    begin
+       Free (X);
+    end Free_Bignum;
+ 
+    package Bignums is new System.Generic_Bignums
+      (Bignum, Allocate_Bignum, Free_Bignum, To_Bignum);
+ 
+    use Bignums, System;
+ 
     function Get_Bignum (Arg : Big_Integer) return Bignum is
       (if Arg.Value.C = System.Null_Address
        then raise Constraint_Error with "invalid big integer"
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 75,81 ****
     -- "=" --
     ---------
  
!    function "=" (L, R : Big_Integer) return Boolean is
     begin
        return Big_EQ (Get_Bignum (L), Get_Bignum (R));
     end "=";
--- 103,109 ----
     -- "=" --
     ---------
  
!    function "=" (L, R : Valid_Big_Integer) return Boolean is
     begin
        return Big_EQ (Get_Bignum (L), Get_Bignum (R));
     end "=";
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 84,90 ****
     -- "<" --
     ---------
  
!    function "<" (L, R : Big_Integer) return Boolean is
     begin
        return Big_LT (Get_Bignum (L), Get_Bignum (R));
     end "<";
--- 112,118 ----
     -- "<" --
     ---------
  
!    function "<" (L, R : Valid_Big_Integer) return Boolean is
     begin
        return Big_LT (Get_Bignum (L), Get_Bignum (R));
     end "<";
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 93,99 ****
     -- "<=" --
     ----------
  
!    function "<=" (L, R : Big_Integer) return Boolean is
     begin
        return Big_LE (Get_Bignum (L), Get_Bignum (R));
     end "<=";
--- 121,127 ----
     -- "<=" --
     ----------
  
!    function "<=" (L, R : Valid_Big_Integer) return Boolean is
     begin
        return Big_LE (Get_Bignum (L), Get_Bignum (R));
     end "<=";
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 102,108 ****
     -- ">" --
     ---------
  
!    function ">" (L, R : Big_Integer) return Boolean is
     begin
        return Big_GT (Get_Bignum (L), Get_Bignum (R));
     end ">";
--- 130,136 ----
     -- ">" --
     ---------
  
!    function ">" (L, R : Valid_Big_Integer) return Boolean is
     begin
        return Big_GT (Get_Bignum (L), Get_Bignum (R));
     end ">";
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 111,117 ****
     -- ">=" --
     ----------
  
!    function ">=" (L, R : Big_Integer) return Boolean is
     begin
        return Big_GE (Get_Bignum (L), Get_Bignum (R));
     end ">=";
--- 139,145 ----
     -- ">=" --
     ----------
  
!    function ">=" (L, R : Valid_Big_Integer) return Boolean is
     begin
        return Big_GE (Get_Bignum (L), Get_Bignum (R));
     end ">=";
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 120,126 ****
     -- To_Big_Integer --
     --------------------
  
!    function To_Big_Integer (Arg : Integer) return Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, To_Bignum (Long_Long_Integer (Arg)));
--- 148,154 ----
     -- To_Big_Integer --
     --------------------
  
!    function To_Big_Integer (Arg : Integer) return Valid_Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, To_Bignum (Long_Long_Integer (Arg)));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 131,137 ****
     -- To_Integer --
     ----------------
  
!    function To_Integer (Arg : Big_Integer) return Integer is
     begin
        return Integer (From_Bignum (Get_Bignum (Arg)));
     end To_Integer;
--- 159,165 ----
     -- To_Integer --
     ----------------
  
!    function To_Integer (Arg : Valid_Big_Integer) return Integer is
     begin
        return Integer (From_Bignum (Get_Bignum (Arg)));
     end To_Integer;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 146,155 ****
        -- To_Big_Integer --
        --------------------
  
!       function To_Big_Integer (Arg : Int) return Big_Integer is
           Result : Big_Integer;
        begin
!          Set_Bignum (Result, To_Bignum (Long_Long_Integer (Arg)));
           return Result;
        end To_Big_Integer;
  
--- 174,183 ----
        -- To_Big_Integer --
        --------------------
  
!       function To_Big_Integer (Arg : Int) return Valid_Big_Integer is
           Result : Big_Integer;
        begin
!          Set_Bignum (Result, To_Bignum (Long_Long_Long_Integer (Arg)));
           return Result;
        end To_Big_Integer;
  
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 157,163 ****
        -- From_Big_Integer --
        ----------------------
  
!       function From_Big_Integer (Arg : Big_Integer) return Int is
        begin
           return Int (From_Bignum (Get_Bignum (Arg)));
        end From_Big_Integer;
--- 185,191 ----
        -- From_Big_Integer --
        ----------------------
  
!       function From_Big_Integer (Arg : Valid_Big_Integer) return Int is
        begin
           return Int (From_Bignum (Get_Bignum (Arg)));
        end From_Big_Integer;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 174,183 ****
        -- To_Big_Integer --
        --------------------
  
!       function To_Big_Integer (Arg : Int) return Big_Integer is
           Result : Big_Integer;
        begin
!          Set_Bignum (Result, To_Bignum (Unsigned_64 (Arg)));
           return Result;
        end To_Big_Integer;
  
--- 202,211 ----
        -- To_Big_Integer --
        --------------------
  
!       function To_Big_Integer (Arg : Int) return Valid_Big_Integer is
           Result : Big_Integer;
        begin
!          Set_Bignum (Result, To_Bignum (Unsigned_128 (Arg)));
           return Result;
        end To_Big_Integer;
  
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 185,191 ****
        -- From_Big_Integer --
        ----------------------
  
!       function From_Big_Integer (Arg : Big_Integer) return Int is
        begin
           return Int (From_Bignum (Get_Bignum (Arg)));
        end From_Big_Integer;
--- 213,219 ----
        -- From_Big_Integer --
        ----------------------
  
!       function From_Big_Integer (Arg : Valid_Big_Integer) return Int is
        begin
           return Int (From_Bignum (Get_Bignum (Arg)));
        end From_Big_Integer;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 196,307 ****
     -- To_String --
     ---------------
  
-    Hex_Chars : constant array (0 .. 15) of Character := "0123456789ABCDEF";
- 
     function To_String
!      (Arg : Big_Integer; Width : Field := 0; Base : Number_Base := 10)
!       return String
!    is
!       Big_Base : constant Big_Integer := To_Big_Integer (Integer (Base));
  
!       function Add_Base (S : String) return String;
!       --  Add base information if Base /= 10
  
!       function Leading_Padding
!         (Str        : String;
!          Min_Length : Field;
!          Char       : Character := ' ') return String;
!       --  Return padding of Char concatenated with Str so that the resulting
!       --  string is at least Min_Length long.
  
!       function Image (Arg : Big_Integer) return String;
!       --  Return image of Arg, assuming Arg is positive.
  
!       function Image (N : Natural) return String;
!       --  Return image of N, with no leading space.
  
!       --------------
!       -- Add_Base --
!       --------------
  
!       function Add_Base (S : String) return String is
!       begin
!          if Base = 10 then
!             return S;
!          else
!             return Image (Base) & "#" & S & "#";
!          end if;
!       end Add_Base;
  
!       -----------
!       -- Image --
!       -----------
  
!       function Image (N : Natural) return String is
!          S : constant String := Natural'Image (N);
!       begin
!          return S (2 .. S'Last);
!       end Image;
  
!       function Image (Arg : Big_Integer) return String is
!       begin
!          if Arg < Big_Base then
!             return (1 => Hex_Chars (To_Integer (Arg)));
!          else
!             return Image (Arg / Big_Base)
!               & Hex_Chars (To_Integer (Arg rem Big_Base));
!          end if;
!       end Image;
  
!       ---------------------
!       -- Leading_Padding --
!       ---------------------
  
!       function Leading_Padding
!         (Str        : String;
!          Min_Length : Field;
!          Char       : Character := ' ') return String is
!       begin
!          return (1 .. Integer'Max (Integer (Min_Length) - Str'Length, 0)
!                         => Char) & Str;
!       end Leading_Padding;
  
!    begin
!       if Arg < To_Big_Integer (0) then
!          return Leading_Padding ("-" & Add_Base (Image (-Arg)), Width);
!       else
!          return Leading_Padding (" " & Add_Base (Image (Arg)), Width);
!       end if;
!    end To_String;
  
!    -----------------
!    -- From_String --
!    -----------------
  
!    function From_String (Arg : String) return Big_Integer is
!       Result : Big_Integer;
!    begin
!       --  ??? only support Long_Long_Integer, good enough for now
!       Set_Bignum (Result, To_Bignum (Long_Long_Integer'Value (Arg)));
!       return Result;
     end From_String;
  
     ---------------
     -- Put_Image --
     ---------------
  
!    procedure Put_Image
!      (Stream : not null access Ada.Streams.Root_Stream_Type'Class;
!       Arg    : Big_Integer) is
     begin
!       Wide_Wide_String'Write (Stream, To_Wide_Wide_String (To_String (Arg)));
     end Put_Image;
  
     ---------
     -- "+" --
     ---------
  
!    function "+" (L : Big_Integer) return Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, new Bignum_Data'(Get_Bignum (L).all));
--- 224,450 ----
     -- To_String --
     ---------------
  
     function To_String
!      (Arg : Valid_Big_Integer; Width : Field := 0; Base : Number_Base := 10)
!       return String is
!    begin
!       return To_String (Get_Bignum (Arg), Natural (Width), Positive (Base));
!    end To_String;
  
!    -----------------
!    -- From_String --
!    -----------------
  
!    function From_String (Arg : String) return Valid_Big_Integer is
!       procedure Scan_Decimal
!         (Arg : String; J : in out Natural; Result : out Big_Integer);
!       --  Scan decimal value starting at Arg (J). Store value in Result if
!       --  successful, raise Constraint_Error if not. On exit, J points to the
!       --  first index past the decimal value.
  
!       ------------------
!       -- Scan_Decimal --
!       ------------------
  
!       procedure Scan_Decimal
!         (Arg : String; J : in out Natural; Result : out Big_Integer)
!       is
!          Initial_J : constant Natural := J;
!          Ten       : constant Big_Integer := To_Big_Integer (10);
!       begin
!          Result := To_Big_Integer (0);
  
!          while J <= Arg'Last loop
!             if Arg (J) in '0' .. '9' then
!                Result :=
!                  Result * Ten + To_Big_Integer (Character'Pos (Arg (J))
!                                                   - Character'Pos ('0'));
  
!             elsif Arg (J) = '_' then
!                if J in Initial_J | Arg'Last
!                  or else Arg (J - 1) not in '0' .. '9'
!                  or else Arg (J + 1) not in '0' .. '9'
!                then
!                   raise Constraint_Error with "invalid integer value: " & Arg;
!                end if;
!             else
!                exit;
!             end if;
  
!             J := J + 1;
!          end loop;
!       end Scan_Decimal;
  
!       Result : Big_Integer;
  
!    begin
!       --  First try the fast path via Long_Long_Long_Integer'Value
  
!       Set_Bignum (Result, To_Bignum (Long_Long_Long_Integer'Value (Arg)));
!       return Result;
  
!    exception
!       when Constraint_Error =>
!          --  Then try the slow path
  
!          declare
!             Neg        : Boolean  := False;
!             Base_Found : Boolean  := False;
!             Base_Int   : Positive := 10;
!             J          : Natural  := Arg'First;
!             Val        : Natural;
!             Base       : Big_Integer;
!             Exp        : Big_Integer;
  
!          begin
!             --  Scan past leading blanks
  
!             while J <= Arg'Last and then Arg (J) = ' ' loop
!                J := J + 1;
!             end loop;
! 
!             if J > Arg'Last then
!                raise;
!             end if;
! 
!             --  Scan and store negative sign if found
! 
!             if Arg (J) = '-' then
!                Neg := True;
!                J   := J + 1;
!             end if;
! 
!             --  Scan decimal value: either the result itself, or the base
!             --  value if followed by a '#'.
! 
!             Scan_Decimal (Arg, J, Result);
! 
!             --  Scan explicit base if requested
! 
!             if J <= Arg'Last and then Arg (J) = '#' then
!                Base_Int := To_Integer (Result);
! 
!                if Base_Int not in 2 .. 16 then
!                   raise;
!                end if;
! 
!                Base_Found := True;
!                Base       := Result;
!                Result     := To_Big_Integer (0);
!                J          := J + 1;
! 
!                while J <= Arg'Last loop
!                   case Arg (J) is
!                      when '0' .. '9' =>
!                         Val := Character'Pos (Arg (J)) - Character'Pos ('0');
! 
!                         if Val >= Base_Int then
!                            raise;
!                         end if;
! 
!                         Result := Result * Base + To_Big_Integer (Val);
! 
!                      when 'a' .. 'f' =>
!                         Val :=
!                           10 + Character'Pos (Arg (J)) - Character'Pos ('a');
! 
!                         if Val >= Base_Int then
!                            raise;
!                         end if;
! 
!                         Result := Result * Base + To_Big_Integer (Val);
! 
!                      when 'A' .. 'F' =>
!                         Val :=
!                           10 + Character'Pos (Arg (J)) - Character'Pos ('A');
! 
!                         if Val >= Base_Int then
!                            raise;
!                         end if;
! 
!                         Result := Result * Base + To_Big_Integer (Val);
! 
!                      when '_' =>
! 
!                         --  We only allow _ preceded and followed by a valid
!                         --  number and not any other character.
! 
!                         if J in Arg'First | Arg'Last
!                           or else Arg (J - 1) in '_' | '#'
!                           or else Arg (J + 1) = '#'
!                         then
!                            raise;
!                         end if;
! 
!                      when '#' =>
!                         J := J + 1;
!                         exit;
! 
!                      when others =>
!                         raise;
!                   end case;
! 
!                   J := J + 1;
!                end loop;
!             else
!                Base := To_Big_Integer (10);
!             end if;
! 
!             if Base_Found and then Arg (J - 1) /= '#' then
!                raise;
!             end if;
! 
!             if J <= Arg'Last then
! 
!                --  Scan exponent
! 
!                if Arg (J) in 'e' | 'E' then
!                   J := J + 1;
! 
!                   if Arg (J) = '+' then
!                      J := J + 1;
!                   end if;
! 
!                   Scan_Decimal (Arg, J, Exp);
!                   Result := Result * (Base ** To_Integer (Exp));
!                end if;
! 
!                --  Scan past trailing blanks
! 
!                while J <= Arg'Last and then Arg (J) = ' ' loop
!                   J := J + 1;
!                end loop;
! 
!                if J <= Arg'Last then
!                   raise;
!                end if;
!             end if;
! 
!             if Neg then
!                return -Result;
!             else
!                return Result;
!             end if;
!          end;
     end From_String;
  
     ---------------
     -- Put_Image --
     ---------------
  
!    procedure Put_Image (S : in out Sink'Class; V : Big_Integer) is
!       --  This is implemented in terms of To_String. It might be more elegant
!       --  and more efficient to do it the other way around, but this is the
!       --  most expedient implementation for now.
     begin
!       Strings.Text_Output.Utils.Put_UTF_8 (S, To_String (V));
     end Put_Image;
  
     ---------
     -- "+" --
     ---------
  
!    function "+" (L : Valid_Big_Integer) return Valid_Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, new Bignum_Data'(Get_Bignum (L).all));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 312,318 ****
     -- "-" --
     ---------
  
!    function "-" (L : Big_Integer) return Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, Big_Neg (Get_Bignum (L)));
--- 455,461 ----
     -- "-" --
     ---------
  
!    function "-" (L : Valid_Big_Integer) return Valid_Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, Big_Neg (Get_Bignum (L)));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 323,329 ****
     -- "abs" --
     -----------
  
!    function "abs" (L : Big_Integer) return Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, Big_Abs (Get_Bignum (L)));
--- 466,472 ----
     -- "abs" --
     -----------
  
!    function "abs" (L : Valid_Big_Integer) return Valid_Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, Big_Abs (Get_Bignum (L)));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 334,340 ****
     -- "+" --
     ---------
  
!    function "+" (L, R : Big_Integer) return Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, Big_Add (Get_Bignum (L), Get_Bignum (R)));
--- 477,483 ----
     -- "+" --
     ---------
  
!    function "+" (L, R : Valid_Big_Integer) return Valid_Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, Big_Add (Get_Bignum (L), Get_Bignum (R)));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 345,351 ****
     -- "-" --
     ---------
  
!    function "-" (L, R : Big_Integer) return Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, Big_Sub (Get_Bignum (L), Get_Bignum (R)));
--- 488,494 ----
     -- "-" --
     ---------
  
!    function "-" (L, R : Valid_Big_Integer) return Valid_Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, Big_Sub (Get_Bignum (L), Get_Bignum (R)));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 356,362 ****
     -- "*" --
     ---------
  
!    function "*" (L, R : Big_Integer) return Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, Big_Mul (Get_Bignum (L), Get_Bignum (R)));
--- 499,505 ----
     -- "*" --
     ---------
  
!    function "*" (L, R : Valid_Big_Integer) return Valid_Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, Big_Mul (Get_Bignum (L), Get_Bignum (R)));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 367,373 ****
     -- "/" --
     ---------
  
!    function "/" (L, R : Big_Integer) return Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, Big_Div (Get_Bignum (L), Get_Bignum (R)));
--- 510,516 ----
     -- "/" --
     ---------
  
!    function "/" (L, R : Valid_Big_Integer) return Valid_Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, Big_Div (Get_Bignum (L), Get_Bignum (R)));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 378,384 ****
     -- "mod" --
     -----------
  
!    function "mod" (L, R : Big_Integer) return Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, Big_Mod (Get_Bignum (L), Get_Bignum (R)));
--- 521,527 ----
     -- "mod" --
     -----------
  
!    function "mod" (L, R : Valid_Big_Integer) return Valid_Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, Big_Mod (Get_Bignum (L), Get_Bignum (R)));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 389,395 ****
     -- "rem" --
     -----------
  
!    function "rem" (L, R : Big_Integer) return Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, Big_Rem (Get_Bignum (L), Get_Bignum (R)));
--- 532,538 ----
     -- "rem" --
     -----------
  
!    function "rem" (L, R : Valid_Big_Integer) return Valid_Big_Integer is
        Result : Big_Integer;
     begin
        Set_Bignum (Result, Big_Rem (Get_Bignum (L), Get_Bignum (R)));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 400,415 ****
     -- "**" --
     ----------
  
!    function "**" (L : Big_Integer; R : Natural) return Big_Integer is
     begin
-       --  Explicitly check for validity before allocating Exp so that
-       --  the call to Get_Bignum below cannot raise an exception before
-       --  we get a chance to free Exp.
- 
-       if not Is_Valid (L) then
-          raise Constraint_Error with "invalid big integer";
-       end if;
- 
        declare
           Exp    : Bignum := To_Bignum (Long_Long_Integer (R));
           Result : Big_Integer;
--- 543,551 ----
     -- "**" --
     ----------
  
!    function "**"
!      (L : Valid_Big_Integer; R : Natural) return Valid_Big_Integer is
     begin
        declare
           Exp    : Bignum := To_Bignum (Long_Long_Integer (R));
           Result : Big_Integer;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 424,444 ****
     -- Min --
     ---------
  
!    function Min (L, R : Big_Integer) return Big_Integer is
       (if L < R then L else R);
  
     ---------
     -- Max --
     ---------
  
!    function Max (L, R : Big_Integer) return Big_Integer is
       (if L > R then L else R);
  
     -----------------------------
     -- Greatest_Common_Divisor --
     -----------------------------
  
!    function Greatest_Common_Divisor (L, R : Big_Integer) return Big_Positive is
        function GCD (A, B : Big_Integer) return Big_Integer;
        --  Recursive internal version
  
--- 560,582 ----
     -- Min --
     ---------
  
!    function Min (L, R : Valid_Big_Integer) return Valid_Big_Integer is
       (if L < R then L else R);
  
     ---------
     -- Max --
     ---------
  
!    function Max (L, R : Valid_Big_Integer) return Valid_Big_Integer is
       (if L > R then L else R);
  
     -----------------------------
     -- Greatest_Common_Divisor --
     -----------------------------
  
!    function Greatest_Common_Divisor
!      (L, R : Valid_Big_Integer) return Big_Positive
!    is
        function GCD (A, B : Big_Integer) return Big_Integer;
        --  Recursive internal version
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nbnbin.ads gcc-11.1.0/gcc/ada/libgnat/a-nbnbin.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-nbnbin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-nbnbin.ads	Tue Apr 27 10:00:12 2021
***************
*** 13,133 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Ada.Finalization;
! with Ada.Streams;
  
  private with System;
  
- --  Note that some Ada 2020 aspects are commented out since they are not
- --  supported yet.
- 
  package Ada.Numerics.Big_Numbers.Big_Integers
    with Preelaborate
- --  Nonblocking
  is
!    type Big_Integer is private;
!    --  with Integer_Literal => From_String,
!    --       Put_Image => Put_Image;
  
     function Is_Valid (Arg : Big_Integer) return Boolean
!      with Convention => Intrinsic;
  
!    function "=" (L, R : Big_Integer) return Boolean;
  
!    function "<" (L, R : Big_Integer) return Boolean;
  
!    function "<=" (L, R : Big_Integer) return Boolean;
  
!    function ">" (L, R : Big_Integer) return Boolean;
  
!    function ">=" (L, R : Big_Integer) return Boolean;
  
!    function To_Big_Integer (Arg : Integer) return Big_Integer;
  
     subtype Big_Positive is Big_Integer
!      with Dynamic_Predicate => Big_Positive > To_Big_Integer (0),
            Predicate_Failure => (raise Constraint_Error);
  
     subtype Big_Natural is Big_Integer
!      with Dynamic_Predicate => Big_Natural >= To_Big_Integer (0),
            Predicate_Failure => (raise Constraint_Error);
  
!    function In_Range (Arg, Low, High : Big_Integer) return Boolean is
!      ((Low <= Arg) and (Arg <= High));
  
!    function To_Integer (Arg : Big_Integer) return Integer
!      with Pre => In_Range (Arg,
!                            Low  => To_Big_Integer (Integer'First),
!                            High => To_Big_Integer (Integer'Last))
!                   or else (raise Constraint_Error);
  
     generic
        type Int is range <>;
     package Signed_Conversions is
  
!       function To_Big_Integer (Arg : Int) return Big_Integer;
! 
!       function From_Big_Integer (Arg : Big_Integer) return Int
!         with Pre => In_Range (Arg,
!                               Low  => To_Big_Integer (Int'First),
!                               High => To_Big_Integer (Int'Last))
!                      or else (raise Constraint_Error);
  
     end Signed_Conversions;
  
     generic
        type Int is mod <>;
     package Unsigned_Conversions is
  
!       function To_Big_Integer (Arg : Int) return Big_Integer;
  
!       function From_Big_Integer (Arg : Big_Integer) return Int
!         with Pre => In_Range (Arg,
!                               Low  => To_Big_Integer (Int'First),
!                               High => To_Big_Integer (Int'Last))
!                      or else (raise Constraint_Error);
  
     end Unsigned_Conversions;
  
!    function To_String (Arg : Big_Integer;
                         Width : Field := 0;
                         Base  : Number_Base := 10) return String
!      with Post => To_String'Result'First = 1;
  
!    function From_String (Arg : String) return Big_Integer;
  
!    procedure Put_Image
!      (Stream : not null access Ada.Streams.Root_Stream_Type'Class;
!       Arg    : Big_Integer);
  
!    function "+" (L : Big_Integer) return Big_Integer;
  
!    function "-" (L : Big_Integer) return Big_Integer;
  
!    function "abs" (L : Big_Integer) return Big_Integer;
  
!    function "+" (L, R : Big_Integer) return Big_Integer;
  
!    function "-" (L, R : Big_Integer) return Big_Integer;
  
!    function "*" (L, R : Big_Integer) return Big_Integer;
  
!    function "/" (L, R : Big_Integer) return Big_Integer;
  
!    function "mod" (L, R : Big_Integer) return Big_Integer;
  
!    function "rem" (L, R : Big_Integer) return Big_Integer;
  
!    function "**" (L : Big_Integer; R : Natural) return Big_Integer;
  
!    function Min (L, R : Big_Integer) return Big_Integer;
  
!    function Max (L, R : Big_Integer) return Big_Integer;
  
     function Greatest_Common_Divisor
!      (L, R : Big_Integer) return Big_Positive
!      with Pre => (L /= To_Big_Integer (0) and R /= To_Big_Integer (0))
!        or else (raise Constraint_Error);
  
  private
  
--- 13,165 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Ada.Strings.Text_Output; use Ada.Strings.Text_Output;
  
+ private with Ada.Finalization;
  private with System;
  
  package Ada.Numerics.Big_Numbers.Big_Integers
    with Preelaborate
  is
!    type Big_Integer is private
!      with Integer_Literal => From_String,
!           Put_Image       => Put_Image;
  
     function Is_Valid (Arg : Big_Integer) return Boolean
!    with
!      Convention => Intrinsic,
!      Global     => null;
  
!    subtype Valid_Big_Integer is Big_Integer
!      with Dynamic_Predicate => Is_Valid (Valid_Big_Integer),
!           Predicate_Failure => raise Program_Error;
  
!    function "=" (L, R : Valid_Big_Integer) return Boolean with Global => null;
  
!    function "<" (L, R : Valid_Big_Integer) return Boolean with Global => null;
  
!    function "<=" (L, R : Valid_Big_Integer) return Boolean with Global => null;
  
!    function ">" (L, R : Valid_Big_Integer) return Boolean with Global => null;
  
!    function ">=" (L, R : Valid_Big_Integer) return Boolean with Global => null;
! 
!    function To_Big_Integer (Arg : Integer) return Valid_Big_Integer
!      with Global => null;
  
     subtype Big_Positive is Big_Integer
!      with Dynamic_Predicate =>
!             (if Is_Valid (Big_Positive)
!              then Big_Positive > To_Big_Integer (0)),
            Predicate_Failure => (raise Constraint_Error);
  
     subtype Big_Natural is Big_Integer
!      with Dynamic_Predicate =>
!             (if Is_Valid (Big_Natural)
!              then Big_Natural >= To_Big_Integer (0)),
            Predicate_Failure => (raise Constraint_Error);
  
!    function In_Range
!      (Arg : Valid_Big_Integer; Low, High : Big_Integer) return Boolean
!    is (Low <= Arg and Arg <= High)
!    with
!      Global => null;
  
!    function To_Integer (Arg : Valid_Big_Integer) return Integer
!    with
!      Pre    => In_Range (Arg,
!                          Low  => To_Big_Integer (Integer'First),
!                          High => To_Big_Integer (Integer'Last))
!                 or else (raise Constraint_Error),
!      Global => null;
  
     generic
        type Int is range <>;
     package Signed_Conversions is
  
!       function To_Big_Integer (Arg : Int) return Valid_Big_Integer
!         with Global => null;
  
+       function From_Big_Integer (Arg : Valid_Big_Integer) return Int
+       with
+         Pre    => In_Range (Arg,
+                             Low  => To_Big_Integer (Int'First),
+                             High => To_Big_Integer (Int'Last))
+                    or else (raise Constraint_Error),
+         Global => null;
     end Signed_Conversions;
  
     generic
        type Int is mod <>;
     package Unsigned_Conversions is
  
!       function To_Big_Integer (Arg : Int) return Valid_Big_Integer
!         with Global => null;
  
!       function From_Big_Integer (Arg : Valid_Big_Integer) return Int
!       with
!         Pre    => In_Range (Arg,
!                             Low  => To_Big_Integer (Int'First),
!                             High => To_Big_Integer (Int'Last))
!                    or else (raise Constraint_Error),
!         Global => null;
  
     end Unsigned_Conversions;
  
!    function To_String (Arg   : Valid_Big_Integer;
                         Width : Field := 0;
                         Base  : Number_Base := 10) return String
!    with
!      Post   => To_String'Result'First = 1,
!      Global => null;
  
!    function From_String (Arg : String) return Valid_Big_Integer
!      with Global => null;
  
!    procedure Put_Image (S : in out Sink'Class; V : Big_Integer);
  
!    function "+" (L : Valid_Big_Integer) return Valid_Big_Integer
!       with Global => null;
  
!    function "-" (L : Valid_Big_Integer) return Valid_Big_Integer
!       with Global => null;
  
!    function "abs" (L : Valid_Big_Integer) return Valid_Big_Integer
!       with Global => null;
  
!    function "+" (L, R : Valid_Big_Integer) return Valid_Big_Integer
!       with Global => null;
  
!    function "-" (L, R : Valid_Big_Integer) return Valid_Big_Integer
!       with Global => null;
  
!    function "*" (L, R : Valid_Big_Integer) return Valid_Big_Integer
!       with Global => null;
  
!    function "/" (L, R : Valid_Big_Integer) return Valid_Big_Integer
!       with Global => null;
  
!    function "mod" (L, R : Valid_Big_Integer) return Valid_Big_Integer
!       with Global => null;
  
!    function "rem" (L, R : Valid_Big_Integer) return Valid_Big_Integer
!       with Global => null;
  
!    function "**" (L : Valid_Big_Integer; R : Natural) return Valid_Big_Integer
!       with Global => null;
  
!    function Min (L, R : Valid_Big_Integer) return Valid_Big_Integer
!       with Global => null;
  
!    function Max (L, R : Valid_Big_Integer) return Valid_Big_Integer
!       with Global => null;
  
     function Greatest_Common_Divisor
!      (L, R : Valid_Big_Integer) return Big_Positive
!    with
!      Pre    => (L /= To_Big_Integer (0) and R /= To_Big_Integer (0))
!              or else (raise Constraint_Error),
!      Global => null;
  
  private
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nbnbin__gmp.adb gcc-11.1.0/gcc/ada/libgnat/a-nbnbin__gmp.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-nbnbin__gmp.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-nbnbin__gmp.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Unchecked_Conversion;
*** 35,41 ****
  with Ada.Unchecked_Deallocation;
  with Interfaces.C;               use Interfaces.C;
  with Interfaces.C.Strings;       use Interfaces.C.Strings;
! with Ada.Characters.Conversions; use Ada.Characters.Conversions;
  with Ada.Characters.Handling;    use Ada.Characters.Handling;
  
  package body Ada.Numerics.Big_Numbers.Big_Integers is
--- 35,41 ----
  with Ada.Unchecked_Deallocation;
  with Interfaces.C;               use Interfaces.C;
  with Interfaces.C.Strings;       use Interfaces.C.Strings;
! with Ada.Strings.Text_Output.Utils;
  with Ada.Characters.Handling;    use Ada.Characters.Handling;
  
  package body Ada.Numerics.Big_Numbers.Big_Integers is
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 56,71 ****
     function To_Address is new
       Ada.Unchecked_Conversion (mpz_t_ptr, System.Address);
  
!    function Get_Mpz (Arg : Optional_Big_Integer) return mpz_t_ptr is
       (To_Mpz (Arg.Value.C));
     --  Return the mpz_t value stored in Arg
  
!    procedure Set_Mpz (Arg : in out Optional_Big_Integer; Value : mpz_t_ptr)
       with Inline;
     --  Set the mpz_t value stored in Arg to Value
  
!    procedure Allocate (This : in out Optional_Big_Integer) with Inline;
!    --  Allocate an Optional_Big_Integer, including the underlying mpz
  
     procedure mpz_init_set (ROP : access mpz_t;  OP : access constant mpz_t);
     pragma Import (C, mpz_init_set, "__gmpz_init_set");
--- 56,71 ----
     function To_Address is new
       Ada.Unchecked_Conversion (mpz_t_ptr, System.Address);
  
!    function Get_Mpz (Arg : Big_Integer) return mpz_t_ptr is
       (To_Mpz (Arg.Value.C));
     --  Return the mpz_t value stored in Arg
  
!    procedure Set_Mpz (Arg : in out Big_Integer; Value : mpz_t_ptr)
       with Inline;
     --  Set the mpz_t value stored in Arg to Value
  
!    procedure Allocate (This : in out Big_Integer) with Inline;
!    --  Allocate a Big_Integer, including the underlying mpz
  
     procedure mpz_init_set (ROP : access mpz_t;  OP : access constant mpz_t);
     pragma Import (C, mpz_init_set, "__gmpz_init_set");
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 102,108 ****
     -- Set_Mpz --
     -------------
  
!    procedure Set_Mpz (Arg : in out Optional_Big_Integer; Value : mpz_t_ptr) is
     begin
        Arg.Value.C := To_Address (Value);
     end Set_Mpz;
--- 102,108 ----
     -- Set_Mpz --
     -------------
  
!    procedure Set_Mpz (Arg : in out Big_Integer; Value : mpz_t_ptr) is
     begin
        Arg.Value.C := To_Address (Value);
     end Set_Mpz;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 111,131 ****
     -- Is_Valid --
     --------------
  
!    function Is_Valid (Arg : Optional_Big_Integer) return Boolean is
       (Arg.Value.C /= System.Null_Address);
  
-    --------------------------
-    -- Invalid_Big_Integer --
-    --------------------------
- 
-    function Invalid_Big_Integer return Optional_Big_Integer is
-      (Value => (Ada.Finalization.Controlled with C => System.Null_Address));
- 
     ---------
     -- "=" --
     ---------
  
!    function "=" (L, R : Big_Integer) return Boolean is
     begin
        return mpz_cmp (Get_Mpz (L), Get_Mpz (R)) = 0;
     end "=";
--- 111,124 ----
     -- Is_Valid --
     --------------
  
!    function Is_Valid (Arg : Big_Integer) return Boolean is
       (Arg.Value.C /= System.Null_Address);
  
     ---------
     -- "=" --
     ---------
  
!    function "=" (L, R : Valid_Big_Integer) return Boolean is
     begin
        return mpz_cmp (Get_Mpz (L), Get_Mpz (R)) = 0;
     end "=";
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 134,140 ****
     -- "<" --
     ---------
  
!    function "<" (L, R : Big_Integer) return Boolean is
     begin
        return mpz_cmp (Get_Mpz (L), Get_Mpz (R)) < 0;
     end "<";
--- 127,133 ----
     -- "<" --
     ---------
  
!    function "<" (L, R : Valid_Big_Integer) return Boolean is
     begin
        return mpz_cmp (Get_Mpz (L), Get_Mpz (R)) < 0;
     end "<";
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 143,149 ****
     -- "<=" --
     ----------
  
!    function "<=" (L, R : Big_Integer) return Boolean is
     begin
        return mpz_cmp (Get_Mpz (L), Get_Mpz (R)) <= 0;
     end "<=";
--- 136,142 ----
     -- "<=" --
     ----------
  
!    function "<=" (L, R : Valid_Big_Integer) return Boolean is
     begin
        return mpz_cmp (Get_Mpz (L), Get_Mpz (R)) <= 0;
     end "<=";
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 152,158 ****
     -- ">" --
     ---------
  
!    function ">" (L, R : Big_Integer) return Boolean is
     begin
        return mpz_cmp (Get_Mpz (L), Get_Mpz (R)) > 0;
     end ">";
--- 145,151 ----
     -- ">" --
     ---------
  
!    function ">" (L, R : Valid_Big_Integer) return Boolean is
     begin
        return mpz_cmp (Get_Mpz (L), Get_Mpz (R)) > 0;
     end ">";
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 161,167 ****
     -- ">=" --
     ----------
  
!    function ">=" (L, R : Big_Integer) return Boolean is
     begin
        return mpz_cmp (Get_Mpz (L), Get_Mpz (R)) >= 0;
     end ">=";
--- 154,160 ----
     -- ">=" --
     ----------
  
!    function ">=" (L, R : Valid_Big_Integer) return Boolean is
     begin
        return mpz_cmp (Get_Mpz (L), Get_Mpz (R)) >= 0;
     end ">=";
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 170,177 ****
     -- To_Big_Integer --
     --------------------
  
!    function To_Big_Integer (Arg : Integer) return Big_Integer is
!       Result : Optional_Big_Integer;
     begin
        Allocate (Result);
        mpz_set_si (Get_Mpz (Result), long (Arg));
--- 163,170 ----
     -- To_Big_Integer --
     --------------------
  
!    function To_Big_Integer (Arg : Integer) return Valid_Big_Integer is
!       Result : Big_Integer;
     begin
        Allocate (Result);
        mpz_set_si (Get_Mpz (Result), long (Arg));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 182,188 ****
     -- To_Integer --
     ----------------
  
!    function To_Integer (Arg : Big_Integer) return Integer is
     begin
        return Integer (mpz_get_si (Get_Mpz (Arg)));
     end To_Integer;
--- 175,181 ----
     -- To_Integer --
     ----------------
  
!    function To_Integer (Arg : Valid_Big_Integer) return Integer is
     begin
        return Integer (mpz_get_si (Get_Mpz (Arg)));
     end To_Integer;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 197,204 ****
        -- To_Big_Integer --
        --------------------
  
!       function To_Big_Integer (Arg : Int) return Big_Integer is
!          Result : Optional_Big_Integer;
        begin
           Allocate (Result);
           mpz_set_si (Get_Mpz (Result), long (Arg));
--- 190,197 ----
        -- To_Big_Integer --
        --------------------
  
!       function To_Big_Integer (Arg : Int) return Valid_Big_Integer is
!          Result : Big_Integer;
        begin
           Allocate (Result);
           mpz_set_si (Get_Mpz (Result), long (Arg));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 209,215 ****
        -- From_Big_Integer --
        ----------------------
  
!       function From_Big_Integer (Arg : Big_Integer) return Int is
        begin
           return Int (mpz_get_si (Get_Mpz (Arg)));
        end From_Big_Integer;
--- 202,208 ----
        -- From_Big_Integer --
        ----------------------
  
!       function From_Big_Integer (Arg : Valid_Big_Integer) return Int is
        begin
           return Int (mpz_get_si (Get_Mpz (Arg)));
        end From_Big_Integer;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 226,233 ****
        -- To_Big_Integer --
        --------------------
  
!       function To_Big_Integer (Arg : Int) return Big_Integer is
!          Result : Optional_Big_Integer;
        begin
           Allocate (Result);
           mpz_set_ui (Get_Mpz (Result), unsigned_long (Arg));
--- 219,226 ----
        -- To_Big_Integer --
        --------------------
  
!       function To_Big_Integer (Arg : Int) return Valid_Big_Integer is
!          Result : Big_Integer;
        begin
           Allocate (Result);
           mpz_set_ui (Get_Mpz (Result), unsigned_long (Arg));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 238,244 ****
        -- From_Big_Integer --
        ----------------------
  
!       function From_Big_Integer (Arg : Big_Integer) return Int is
        begin
           return Int (mpz_get_ui (Get_Mpz (Arg)));
        end From_Big_Integer;
--- 231,237 ----
        -- From_Big_Integer --
        ----------------------
  
!       function From_Big_Integer (Arg : Valid_Big_Integer) return Int is
        begin
           return Int (mpz_get_ui (Get_Mpz (Arg)));
        end From_Big_Integer;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 250,256 ****
     ---------------
  
     function To_String
!      (Arg : Big_Integer; Width : Field := 0; Base : Number_Base := 10)
        return String
     is
        function mpz_get_str
--- 243,249 ----
     ---------------
  
     function To_String
!      (Arg : Valid_Big_Integer; Width : Field := 0; Base : Number_Base := 10)
        return String
     is
        function mpz_get_str
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 342,348 ****
           base : Integer := 10) return Integer;
        pragma Import (C, mpz_set_str, "__gmpz_set_str");
  
!       Result : Optional_Big_Integer;
        First  : Natural;
        Last   : Natural;
        Base   : Natural;
--- 335,341 ----
           base : Integer := 10) return Integer;
        pragma Import (C, mpz_set_str, "__gmpz_set_str");
  
!       Result : Big_Integer;
        First  : Natural;
        Last   : Natural;
        Base   : Natural;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 410,428 ****
     -- Put_Image --
     ---------------
  
!    procedure Put_Image
!      (Stream : not null access Ada.Streams.Root_Stream_Type'Class;
!       Arg    : Big_Integer) is
     begin
!       Wide_Wide_String'Write (Stream, To_Wide_Wide_String (To_String (Arg)));
     end Put_Image;
  
     ---------
     -- "+" --
     ---------
  
!    function "+" (L : Big_Integer) return Big_Integer is
!       Result : Optional_Big_Integer;
     begin
        Set_Mpz (Result, new mpz_t);
        mpz_init_set (Get_Mpz (Result), Get_Mpz (L));
--- 403,422 ----
     -- Put_Image --
     ---------------
  
!    procedure Put_Image (S : in out Sink'Class; V : Big_Integer) is
!       --  This is implemented in terms of To_String. It might be more elegant
!       --  and more efficient to do it the other way around, but this is the
!       --  most expedient implementation for now.
     begin
!       Strings.Text_Output.Utils.Put_UTF_8 (S, To_String (V));
     end Put_Image;
  
     ---------
     -- "+" --
     ---------
  
!    function "+" (L : Valid_Big_Integer) return Valid_Big_Integer is
!       Result : Big_Integer;
     begin
        Set_Mpz (Result, new mpz_t);
        mpz_init_set (Get_Mpz (Result), Get_Mpz (L));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 433,440 ****
     -- "-" --
     ---------
  
!    function "-" (L : Big_Integer) return Big_Integer is
!       Result : Optional_Big_Integer;
     begin
        Allocate (Result);
        mpz_neg (Get_Mpz (Result), Get_Mpz (L));
--- 427,434 ----
     -- "-" --
     ---------
  
!    function "-" (L : Valid_Big_Integer) return Valid_Big_Integer is
!       Result : Big_Integer;
     begin
        Allocate (Result);
        mpz_neg (Get_Mpz (Result), Get_Mpz (L));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 445,455 ****
     -- "abs" --
     -----------
  
!    function "abs" (L : Big_Integer) return Big_Integer is
        procedure mpz_abs (ROP : access mpz_t;  OP : access constant mpz_t);
        pragma Import (C, mpz_abs, "__gmpz_abs");
  
!       Result : Optional_Big_Integer;
     begin
        Allocate (Result);
        mpz_abs (Get_Mpz (Result), Get_Mpz (L));
--- 439,449 ----
     -- "abs" --
     -----------
  
!    function "abs" (L : Valid_Big_Integer) return Valid_Big_Integer is
        procedure mpz_abs (ROP : access mpz_t;  OP : access constant mpz_t);
        pragma Import (C, mpz_abs, "__gmpz_abs");
  
!       Result : Big_Integer;
     begin
        Allocate (Result);
        mpz_abs (Get_Mpz (Result), Get_Mpz (L));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 460,471 ****
     -- "+" --
     ---------
  
!    function "+" (L, R : Big_Integer) return Big_Integer is
        procedure mpz_add
          (ROP : access mpz_t;  OP1, OP2 : access constant mpz_t);
        pragma Import (C, mpz_add, "__gmpz_add");
  
!       Result : Optional_Big_Integer;
  
     begin
        Allocate (Result);
--- 454,465 ----
     -- "+" --
     ---------
  
!    function "+" (L, R : Valid_Big_Integer) return Valid_Big_Integer is
        procedure mpz_add
          (ROP : access mpz_t;  OP1, OP2 : access constant mpz_t);
        pragma Import (C, mpz_add, "__gmpz_add");
  
!       Result : Big_Integer;
  
     begin
        Allocate (Result);
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 477,484 ****
     -- "-" --
     ---------
  
!    function "-" (L, R : Big_Integer) return Big_Integer is
!       Result : Optional_Big_Integer;
     begin
        Allocate (Result);
        mpz_sub (Get_Mpz (Result), Get_Mpz (L), Get_Mpz (R));
--- 471,478 ----
     -- "-" --
     ---------
  
!    function "-" (L, R : Valid_Big_Integer) return Valid_Big_Integer is
!       Result : Big_Integer;
     begin
        Allocate (Result);
        mpz_sub (Get_Mpz (Result), Get_Mpz (L), Get_Mpz (R));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 489,500 ****
     -- "*" --
     ---------
  
!    function "*" (L, R : Big_Integer) return Big_Integer is
        procedure mpz_mul
          (ROP : access mpz_t;  OP1, OP2 : access constant mpz_t);
        pragma Import (C, mpz_mul, "__gmpz_mul");
  
!       Result : Optional_Big_Integer;
  
     begin
        Allocate (Result);
--- 483,494 ----
     -- "*" --
     ---------
  
!    function "*" (L, R : Valid_Big_Integer) return Valid_Big_Integer is
        procedure mpz_mul
          (ROP : access mpz_t;  OP1, OP2 : access constant mpz_t);
        pragma Import (C, mpz_mul, "__gmpz_mul");
  
!       Result : Big_Integer;
  
     begin
        Allocate (Result);
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 506,512 ****
     -- "/" --
     ---------
  
!    function "/" (L, R : Big_Integer) return Big_Integer is
        procedure mpz_tdiv_q (Q : access mpz_t;  N, D : access constant mpz_t);
        pragma Import (C, mpz_tdiv_q, "__gmpz_tdiv_q");
     begin
--- 500,506 ----
     -- "/" --
     ---------
  
!    function "/" (L, R : Valid_Big_Integer) return Valid_Big_Integer is
        procedure mpz_tdiv_q (Q : access mpz_t;  N, D : access constant mpz_t);
        pragma Import (C, mpz_tdiv_q, "__gmpz_tdiv_q");
     begin
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 515,521 ****
        end if;
  
        declare
!          Result : Optional_Big_Integer;
        begin
           Allocate (Result);
           mpz_tdiv_q (Get_Mpz (Result), Get_Mpz (L), Get_Mpz (R));
--- 509,515 ----
        end if;
  
        declare
!          Result : Big_Integer;
        begin
           Allocate (Result);
           mpz_tdiv_q (Get_Mpz (Result), Get_Mpz (L), Get_Mpz (R));
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 527,533 ****
     -- "mod" --
     -----------
  
!    function "mod" (L, R : Big_Integer) return Big_Integer is
        procedure mpz_mod (R : access mpz_t;  N, D : access constant mpz_t);
        pragma Import (C, mpz_mod, "__gmpz_mod");
        --  result is always non-negative
--- 521,527 ----
     -- "mod" --
     -----------
  
!    function "mod" (L, R : Valid_Big_Integer) return Valid_Big_Integer is
        procedure mpz_mod (R : access mpz_t;  N, D : access constant mpz_t);
        pragma Import (C, mpz_mod, "__gmpz_mod");
        --  result is always non-negative
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 540,546 ****
        end if;
  
        declare
!          Result : Optional_Big_Integer;
        begin
           Allocate (Result);
           L_Negative := mpz_cmp_ui (Get_Mpz (L), 0) < 0;
--- 534,540 ----
        end if;
  
        declare
!          Result : Big_Integer;
        begin
           Allocate (Result);
           L_Negative := mpz_cmp_ui (Get_Mpz (L), 0) < 0;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 609,615 ****
     -- "rem" --
     -----------
  
!    function "rem" (L, R : Big_Integer) return Big_Integer is
        procedure mpz_tdiv_r (R : access mpz_t;  N, D : access constant mpz_t);
        pragma Import (C, mpz_tdiv_r, "__gmpz_tdiv_r");
        --   R will have the same sign as N.
--- 603,609 ----
     -- "rem" --
     -----------
  
!    function "rem" (L, R : Valid_Big_Integer) return Valid_Big_Integer is
        procedure mpz_tdiv_r (R : access mpz_t;  N, D : access constant mpz_t);
        pragma Import (C, mpz_tdiv_r, "__gmpz_tdiv_r");
        --   R will have the same sign as N.
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 620,626 ****
        end if;
  
        declare
!          Result : Optional_Big_Integer;
        begin
           Allocate (Result);
           mpz_tdiv_r (R => Get_Mpz (Result),
--- 614,620 ----
        end if;
  
        declare
!          Result : Big_Integer;
        begin
           Allocate (Result);
           mpz_tdiv_r (R => Get_Mpz (Result),
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 636,648 ****
     -- "**" --
     ----------
  
!    function "**" (L : Big_Integer; R : Natural) return Big_Integer is
        procedure mpz_pow_ui (ROP : access mpz_t;
                              BASE : access constant mpz_t;
                              EXP : unsigned_long);
        pragma Import (C, mpz_pow_ui, "__gmpz_pow_ui");
  
!       Result : Optional_Big_Integer;
  
     begin
        Allocate (Result);
--- 630,644 ----
     -- "**" --
     ----------
  
!    function "**"
!      (L : Valid_Big_Integer; R : Natural) return Valid_Big_Integer
!    is
        procedure mpz_pow_ui (ROP : access mpz_t;
                              BASE : access constant mpz_t;
                              EXP : unsigned_long);
        pragma Import (C, mpz_pow_ui, "__gmpz_pow_ui");
  
!       Result : Big_Integer;
  
     begin
        Allocate (Result);
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 654,679 ****
     -- Min --
     ---------
  
!    function Min (L, R : Big_Integer) return Big_Integer is
       (if L < R then L else R);
  
     ---------
     -- Max --
     ---------
  
!    function Max (L, R : Big_Integer) return Big_Integer is
       (if L > R then L else R);
  
     -----------------------------
     -- Greatest_Common_Divisor --
     -----------------------------
  
!    function Greatest_Common_Divisor (L, R : Big_Integer) return Big_Integer is
        procedure mpz_gcd
          (ROP : access mpz_t;  Op1, Op2 : access constant mpz_t);
        pragma Import (C, mpz_gcd, "__gmpz_gcd");
  
!       Result : Optional_Big_Integer;
  
     begin
        Allocate (Result);
--- 650,677 ----
     -- Min --
     ---------
  
!    function Min (L, R : Valid_Big_Integer) return Valid_Big_Integer is
       (if L < R then L else R);
  
     ---------
     -- Max --
     ---------
  
!    function Max (L, R : Valid_Big_Integer) return Valid_Big_Integer is
       (if L > R then L else R);
  
     -----------------------------
     -- Greatest_Common_Divisor --
     -----------------------------
  
!    function Greatest_Common_Divisor
!      (L, R : Valid_Big_Integer) return Big_Positive
!    is
        procedure mpz_gcd
          (ROP : access mpz_t;  Op1, Op2 : access constant mpz_t);
        pragma Import (C, mpz_gcd, "__gmpz_gcd");
  
!       Result : Big_Integer;
  
     begin
        Allocate (Result);
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 685,691 ****
     -- Allocate --
     --------------
  
!    procedure Allocate (This : in out Optional_Big_Integer) is
        procedure mpz_init (this : access mpz_t);
        pragma Import (C, mpz_init, "__gmpz_init");
     begin
--- 683,689 ----
     -- Allocate --
     --------------
  
!    procedure Allocate (This : in out Big_Integer) is
        procedure mpz_init (this : access mpz_t);
        pragma Import (C, mpz_init, "__gmpz_init");
     begin
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nbnbre.adb gcc-11.1.0/gcc/ada/libgnat/a-nbnbre.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-nbnbre.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-nbnbre.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,37 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This is the default version of this package, based on Big_Integers only.
! 
! with Ada.Characters.Conversions; use Ada.Characters.Conversions;
  
  package body Ada.Numerics.Big_Numbers.Big_Reals is
  
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Ada.Strings.Text_Output.Utils;
! with System.Unsigned_Types; use System.Unsigned_Types;
  
  package body Ada.Numerics.Big_Numbers.Big_Reals is
  
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 46,58 ****
     --------------
  
     function Is_Valid (Arg : Big_Real) return Boolean is
!      (Is_Valid (Arg.Num) and then Is_Valid (Arg.Den));
  
     ---------
     -- "/" --
     ---------
  
!    function "/" (Num, Den : Big_Integer) return Big_Real is
        Result : Big_Real;
     begin
        if Den = To_Big_Integer (0) then
--- 45,57 ----
     --------------
  
     function Is_Valid (Arg : Big_Real) return Boolean is
!      (Is_Valid (Arg.Num) and Is_Valid (Arg.Den));
  
     ---------
     -- "/" --
     ---------
  
!    function "/" (Num, Den : Valid_Big_Integer) return Valid_Big_Real is
        Result : Big_Real;
     begin
        if Den = To_Big_Integer (0) then
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 69,113 ****
     -- Numerator --
     ---------------
  
!    function Numerator (Arg : Big_Real) return Big_Integer is (Arg.Num);
  
     -----------------
     -- Denominator --
     -----------------
  
!    function Denominator (Arg : Big_Real) return Big_Positive is (Arg.Den);
  
     ---------
     -- "=" --
     ---------
  
!    function "=" (L, R : Big_Real) return Boolean is
!      (abs L.Num = abs R.Num and then L.Den = R.Den);
  
     ---------
     -- "<" --
     ---------
  
!    function "<" (L, R : Big_Real) return Boolean is
!      (abs L.Num * R.Den < abs R.Num * L.Den);
  
     ----------
     -- "<=" --
     ----------
  
!    function "<=" (L, R : Big_Real) return Boolean is (not (R < L));
  
     ---------
     -- ">" --
     ---------
  
!    function ">" (L, R : Big_Real) return Boolean is (R < L);
  
     ----------
     -- ">=" --
     ----------
  
!    function ">=" (L, R : Big_Real) return Boolean is (not (L < R));
  
     -----------------------
     -- Float_Conversions --
--- 68,116 ----
     -- Numerator --
     ---------------
  
!    function Numerator (Arg : Valid_Big_Real) return Valid_Big_Integer is
!      (Arg.Num);
  
     -----------------
     -- Denominator --
     -----------------
  
!    function Denominator (Arg : Valid_Big_Real) return Big_Positive is
!      (Arg.Den);
  
     ---------
     -- "=" --
     ---------
  
!    function "=" (L, R : Valid_Big_Real) return Boolean is
!      (L.Num = R.Num and then L.Den = R.Den);
  
     ---------
     -- "<" --
     ---------
  
!    function "<" (L, R : Valid_Big_Real) return Boolean is
!      (L.Num * R.Den < R.Num * L.Den);
!    --  The denominator is guaranteed to be positive since Normalized is
!    --  always called when constructing a Valid_Big_Real
  
     ----------
     -- "<=" --
     ----------
  
!    function "<=" (L, R : Valid_Big_Real) return Boolean is (not (R < L));
  
     ---------
     -- ">" --
     ---------
  
!    function ">" (L, R : Valid_Big_Real) return Boolean is (R < L);
  
     ----------
     -- ">=" --
     ----------
  
!    function ">=" (L, R : Valid_Big_Real) return Boolean is (not (L < R));
  
     -----------------------
     -- Float_Conversions --
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 115,136 ****
  
     package body Float_Conversions is
  
        -----------------
        -- To_Big_Real --
        -----------------
  
!       function To_Big_Real (Arg : Num) return Big_Real is
        begin
!          return From_String (Arg'Image);
        end To_Big_Real;
  
        -------------------
        -- From_Big_Real --
        -------------------
  
        function From_Big_Real (Arg : Big_Real) return Num is
        begin
!          return Num'Value (To_String (Arg));
        end From_Big_Real;
  
     end Float_Conversions;
--- 118,302 ----
  
     package body Float_Conversions is
  
+       package Conv is new
+         Big_Integers.Unsigned_Conversions (Long_Long_Unsigned);
+ 
        -----------------
        -- To_Big_Real --
        -----------------
  
!       --  We get the fractional representation of the floating-point number by
!       --  multiplying Num'Fraction by 2.0**M, with M the size of the mantissa,
!       --  which gives zero or a number in the range [2.0**(M-1)..2.0**M), which
!       --  means that it is an integer N of M bits. The floating-point number is
!       --  thus equal to N / 2**(M-E) where E is its Num'Exponent.
! 
!       function To_Big_Real (Arg : Num) return Valid_Big_Real is
! 
!          A : constant Num'Base := abs (Arg);
!          E : constant Integer  := Num'Exponent (A);
!          F : constant Num'Base := Num'Fraction (A);
!          M : constant Natural  := Num'Machine_Mantissa;
! 
!          N, D : Big_Integer;
! 
        begin
!          pragma Assert (Num'Machine_Radix = 2);
!          --  This implementation does not handle radix 16
! 
!          pragma Assert (M <= 64);
!          --  This implementation handles only 80-bit IEEE Extended or smaller
! 
!          N := Conv.To_Big_Integer (Long_Long_Unsigned (F * 2.0**M));
! 
!          --  If E is smaller than M, the denominator is 2**(M-E)
! 
!          if E < M then
!             D := To_Big_Integer (2) ** (M - E);
! 
!          --  Or else, if E is larger than M, multiply the numerator by 2**(E-M)
! 
!          elsif E > M then
!             N := N * To_Big_Integer (2) ** (E - M);
!             D := To_Big_Integer (1);
! 
!          --  Otherwise E is equal to M and the result is just N
! 
!          else
!             D := To_Big_Integer (1);
!          end if;
! 
!          return (if Arg >= 0.0 then N / D else -N / D);
        end To_Big_Real;
  
        -------------------
        -- From_Big_Real --
        -------------------
  
+       --  We get the (Frac, Exp) representation of the real number by finding
+       --  the exponent E such that it lies in the range [2.0**(E-1)..2.0**E),
+       --  multiplying the number by 2.0**(M-E) with M the size of the mantissa,
+       --  and converting the result to integer N in the range [2**(M-1)..2**M)
+       --  with rounding to nearest, ties to even, and finally call Num'Compose.
+       --  This does not apply to the zero, for which we return 0.0 early.
+ 
        function From_Big_Real (Arg : Big_Real) return Num is
+ 
+          M    : constant Natural     := Num'Machine_Mantissa;
+          One  : constant Big_Real    := To_Real (1);
+          Two  : constant Big_Real    := To_Real (2);
+          Half : constant Big_Real    := One / Two;
+          TwoI : constant Big_Integer := To_Big_Integer (2);
+ 
+          function Log2_Estimate (V : Big_Real) return Natural;
+          --  Return an integer not larger than Log2 (V) for V >= 1.0
+ 
+          function Minus_Log2_Estimate (V : Big_Real) return Natural;
+          --  Return an integer not larger than -Log2 (V) for V < 1.0
+ 
+          -------------------
+          -- Log2_Estimate --
+          -------------------
+ 
+          function Log2_Estimate (V : Big_Real) return Natural is
+             Log : Natural  := 1;
+             Pow : Big_Real := Two;
+ 
+          begin
+             while V >= Pow loop
+                Pow := Pow * Pow;
+                Log := Log + Log;
+             end loop;
+ 
+             return Log / 2;
+          end Log2_Estimate;
+ 
+          -------------------------
+          -- Minus_Log2_Estimate --
+          -------------------------
+ 
+          function Minus_Log2_Estimate (V : Big_Real) return Natural is
+             Log : Natural  := 1;
+             Pow : Big_Real := Half;
+ 
+          begin
+             while V <= Pow loop
+                Pow := Pow * Pow;
+                Log := Log + Log;
+             end loop;
+ 
+             return Log / 2;
+          end Minus_Log2_Estimate;
+ 
+          --  Local variables
+ 
+          V : Big_Real := abs (Arg);
+          E : Integer  := 0;
+          L : Integer;
+ 
+          A, B, Q, X : Big_Integer;
+          N          : Long_Long_Unsigned;
+          R          : Num'Base;
+ 
        begin
!          pragma Assert (Num'Machine_Radix = 2);
!          --  This implementation does not handle radix 16
! 
!          pragma Assert (M <= 64);
!          --  This implementation handles only 80-bit IEEE Extended or smaller
! 
!          --  Protect from degenerate case
! 
!          if Numerator (V) = To_Big_Integer (0) then
!             return 0.0;
!          end if;
! 
!          --  Use a binary search to compute exponent E
! 
!          while V < Half loop
!             L := Minus_Log2_Estimate (V);
!             V := V * (Two ** L);
!             E := E - L;
!          end loop;
! 
!          --  The dissymetry with above is expected since we go below 2
! 
!          while V >= One loop
!             L := Log2_Estimate (V) + 1;
!             V := V / (Two ** L);
!             E := E + L;
!          end loop;
! 
!          --  The multiplication by 2.0**(-E) has already been done in the loops
! 
!          V := V * To_Big_Real (TwoI ** M);
! 
!          --  Now go into the integer domain and divide
! 
!          A := Numerator (V);
!          B := Denominator (V);
! 
!          Q := A / B;
!          N := Conv.From_Big_Integer (Q);
! 
!          --  Round to nearest, ties to even, by comparing twice the remainder
! 
!          X := (A - Q * B) * TwoI;
! 
!          if X > B or else (X = B and then (N mod 2) = 1) then
!             N := N + 1;
! 
!             --  If the adjusted quotient overflows the mantissa, scale up
! 
!             if N = 2**M then
!                N := 1;
!                E := E + 1;
!             end if;
!          end if;
! 
!          R := Num'Compose (Num'Base (N), E);
! 
!          return (if Numerator (Arg) >= To_Big_Integer (0) then R else -R);
        end From_Big_Real;
  
     end Float_Conversions;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 141,162 ****
  
     package body Fixed_Conversions is
  
        -----------------
        -- To_Big_Real --
        -----------------
  
!       function To_Big_Real (Arg : Num) return Big_Real is
        begin
!          return From_String (Arg'Image);
        end To_Big_Real;
  
        -------------------
        -- From_Big_Real --
        -------------------
  
        function From_Big_Real (Arg : Big_Real) return Num is
        begin
!          return Num'Value (To_String (Arg));
        end From_Big_Real;
  
     end Fixed_Conversions;
--- 307,384 ----
  
     package body Fixed_Conversions is
  
+       package Float_Aux is new Float_Conversions (Long_Long_Float);
+ 
+       subtype LLLI is Long_Long_Long_Integer;
+       subtype LLLU is Long_Long_Long_Unsigned;
+ 
+       Too_Large : constant Boolean :=
+                     Num'Small_Numerator > LLLU'Last
+                       or else Num'Small_Denominator > LLLU'Last;
+       --  True if the Small is too large for Long_Long_Long_Unsigned, in which
+       --  case we convert to/from Long_Long_Float as an intermediate step.
+ 
+       package Conv_I is new Big_Integers.Signed_Conversions (LLLI);
+       package Conv_U is new Big_Integers.Unsigned_Conversions (LLLU);
+ 
        -----------------
        -- To_Big_Real --
        -----------------
  
!       --  We just compute V * N / D where V is the mantissa value of the fixed
!       --  point number, and N resp. D is the numerator resp. the denominator of
!       --  the Small of the fixed-point type.
! 
!       function To_Big_Real (Arg : Num) return Valid_Big_Real is
!          N, D, V : Big_Integer;
! 
        begin
!          if Too_Large then
!             return Float_Aux.To_Big_Real (Long_Long_Float (Arg));
!          end if;
! 
!          N := Conv_U.To_Big_Integer (Num'Small_Numerator);
!          D := Conv_U.To_Big_Integer (Num'Small_Denominator);
!          V := Conv_I.To_Big_Integer (LLLI'Integer_Value (Arg));
! 
!          return V * N / D;
        end To_Big_Real;
  
        -------------------
        -- From_Big_Real --
        -------------------
  
+       --  We first compute A / B = Arg * D / N where N resp. D is the numerator
+       --  resp. the denominator of the Small of the fixed-point type. Then we
+       --  divide A by B and convert the result to the mantissa value.
+ 
        function From_Big_Real (Arg : Big_Real) return Num is
+          N, D, A, B, Q, X : Big_Integer;
+ 
        begin
!          if Too_Large then
!             return Num (Float_Aux.From_Big_Real (Arg));
!          end if;
! 
!          N := Conv_U.To_Big_Integer (Num'Small_Numerator);
!          D := Conv_U.To_Big_Integer (Num'Small_Denominator);
!          A := Numerator (Arg) * D;
!          B := Denominator (Arg) * N;
! 
!          Q := A / B;
! 
!          --  Round to nearest, ties to away, by comparing twice the remainder
! 
!          X := (A - Q * B) * To_Big_Integer (2);
! 
!          if X >= B then
!             Q := Q + To_Big_Integer (1);
! 
!          elsif X <= -B then
!             Q := Q - To_Big_Integer (1);
!          end if;
! 
!          return Num'Fixed_Value (Conv_I.From_Big_Integer (Q));
        end From_Big_Real;
  
     end Fixed_Conversions;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 166,173 ****
     ---------------
  
     function To_String
!      (Arg : Big_Real; Fore : Field := 2; Aft : Field := 3; Exp : Field := 0)
!       return String
     is
        Zero : constant Big_Integer := To_Big_Integer (0);
        Ten  : constant Big_Integer := To_Big_Integer (10);
--- 388,397 ----
     ---------------
  
     function To_String
!      (Arg  : Valid_Big_Real;
!       Fore : Field := 2;
!       Aft  : Field := 3;
!       Exp  : Field := 0) return String
     is
        Zero : constant Big_Integer := To_Big_Integer (0);
        Ten  : constant Big_Integer := To_Big_Integer (10);
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 314,320 ****
     -- From_String --
     -----------------
  
!    function From_String (Arg : String) return Big_Real is
        Ten   : constant Big_Integer := To_Big_Integer (10);
        Frac  : Big_Integer;
        Exp   : Integer := 0;
--- 538,544 ----
     -- From_String --
     -----------------
  
!    function From_String (Arg : String) return Valid_Big_Real is
        Ten   : constant Big_Integer := To_Big_Integer (10);
        Frac  : Big_Integer;
        Exp   : Integer := 0;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 336,342 ****
           elsif Arg (J) = '.' then
              Index := J - 1;
              exit;
!          else
              Pow := Pow + 1;
           end if;
        end loop;
--- 560,566 ----
           elsif Arg (J) = '.' then
              Index := J - 1;
              exit;
!          elsif Arg (J) /= '_' then
              Pow := Pow + 1;
           end if;
        end loop;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 369,379 ****
        end;
     end From_String;
  
     --------------------------
     -- From_Quotient_String --
     --------------------------
  
!    function From_Quotient_String (Arg : String) return Big_Real is
        Index : Natural := 0;
     begin
        for J in Arg'First + 1 .. Arg'Last - 1 loop
--- 593,610 ----
        end;
     end From_String;
  
+    function From_String
+      (Numerator, Denominator : String) return Valid_Big_Real is
+    begin
+       return Big_Integers.From_String (Numerator) /
+         Big_Integers.From_String (Denominator);
+    end From_String;
+ 
     --------------------------
     -- From_Quotient_String --
     --------------------------
  
!    function From_Quotient_String (Arg : String) return Valid_Big_Real is
        Index : Natural := 0;
     begin
        for J in Arg'First + 1 .. Arg'Last - 1 loop
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 395,412 ****
     -- Put_Image --
     ---------------
  
!    procedure Put_Image
!      (Stream : not null access Ada.Streams.Root_Stream_Type'Class;
!       Arg    : Big_Real) is
     begin
!       Wide_Wide_String'Write (Stream, To_Wide_Wide_String (To_String (Arg)));
     end Put_Image;
  
     ---------
     -- "+" --
     ---------
  
!    function "+" (L : Big_Real) return Big_Real is
        Result : Big_Real;
     begin
        Result.Num := L.Num;
--- 626,644 ----
     -- Put_Image --
     ---------------
  
!    procedure Put_Image (S : in out Sink'Class; V : Big_Real) is
!       --  This is implemented in terms of To_String. It might be more elegant
!       --  and more efficient to do it the other way around, but this is the
!       --  most expedient implementation for now.
     begin
!       Strings.Text_Output.Utils.Put_UTF_8 (S, To_String (V));
     end Put_Image;
  
     ---------
     -- "+" --
     ---------
  
!    function "+" (L : Valid_Big_Real) return Valid_Big_Real is
        Result : Big_Real;
     begin
        Result.Num := L.Num;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 418,438 ****
     -- "-" --
     ---------
  
!    function "-" (L : Big_Real) return Big_Real is
       (Num => -L.Num, Den => L.Den);
  
     -----------
     -- "abs" --
     -----------
  
!    function "abs" (L : Big_Real) return Big_Real is
       (Num => abs L.Num, Den => L.Den);
  
     ---------
     -- "+" --
     ---------
  
!    function "+" (L, R : Big_Real) return Big_Real is
        Result : Big_Real;
     begin
        Result.Num := L.Num * R.Den + R.Num * L.Den;
--- 650,670 ----
     -- "-" --
     ---------
  
!    function "-" (L : Valid_Big_Real) return Valid_Big_Real is
       (Num => -L.Num, Den => L.Den);
  
     -----------
     -- "abs" --
     -----------
  
!    function "abs" (L : Valid_Big_Real) return Valid_Big_Real is
       (Num => abs L.Num, Den => L.Den);
  
     ---------
     -- "+" --
     ---------
  
!    function "+" (L, R : Valid_Big_Real) return Valid_Big_Real is
        Result : Big_Real;
     begin
        Result.Num := L.Num * R.Den + R.Num * L.Den;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 445,451 ****
     -- "-" --
     ---------
  
!    function "-" (L, R : Big_Real) return Big_Real is
        Result : Big_Real;
     begin
        Result.Num := L.Num * R.Den - R.Num * L.Den;
--- 677,683 ----
     -- "-" --
     ---------
  
!    function "-" (L, R : Valid_Big_Real) return Valid_Big_Real is
        Result : Big_Real;
     begin
        Result.Num := L.Num * R.Den - R.Num * L.Den;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 458,464 ****
     -- "*" --
     ---------
  
!    function "*" (L, R : Big_Real) return Big_Real is
        Result : Big_Real;
     begin
        Result.Num := L.Num * R.Num;
--- 690,696 ----
     -- "*" --
     ---------
  
!    function "*" (L, R : Valid_Big_Real) return Valid_Big_Real is
        Result : Big_Real;
     begin
        Result.Num := L.Num * R.Num;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 471,477 ****
     -- "/" --
     ---------
  
!    function "/" (L, R : Big_Real) return Big_Real is
        Result : Big_Real;
     begin
        Result.Num := L.Num * R.Den;
--- 703,709 ----
     -- "/" --
     ---------
  
!    function "/" (L, R : Valid_Big_Real) return Valid_Big_Real is
        Result : Big_Real;
     begin
        Result.Num := L.Num * R.Den;
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 484,490 ****
     -- "**" --
     ----------
  
!    function "**" (L : Big_Real; R : Integer) return Big_Real is
        Result : Big_Real;
     begin
        if R = 0 then
--- 716,722 ----
     -- "**" --
     ----------
  
!    function "**" (L : Valid_Big_Real; R : Integer) return Valid_Big_Real is
        Result : Big_Real;
     begin
        if R = 0 then
*************** package body Ada.Numerics.Big_Numbers.Bi
*** 509,540 ****
     -- Min --
     ---------
  
!    function Min (L, R : Big_Real) return Big_Real is (if L < R then L else R);
  
     ---------
     -- Max --
     ---------
  
!    function Max (L, R : Big_Real) return Big_Real is (if L > R then L else R);
  
     ---------------
     -- Normalize --
     ---------------
  
     procedure Normalize (Arg : in out Big_Real) is
     begin
!       if Arg.Den < To_Big_Integer (0) then
           Arg.Num := -Arg.Num;
           Arg.Den := -Arg.Den;
        end if;
  
!       declare
!          GCD : constant Big_Integer :=
!            Greatest_Common_Divisor (Arg.Num, Arg.Den);
!       begin
!          Arg.Num := Arg.Num / GCD;
!          Arg.Den := Arg.Den / GCD;
!       end;
     end Normalize;
  
  end Ada.Numerics.Big_Numbers.Big_Reals;
--- 741,779 ----
     -- Min --
     ---------
  
!    function Min (L, R : Valid_Big_Real) return Valid_Big_Real is
!      (if L < R then L else R);
  
     ---------
     -- Max --
     ---------
  
!    function Max (L, R : Valid_Big_Real) return Valid_Big_Real is
!      (if L > R then L else R);
  
     ---------------
     -- Normalize --
     ---------------
  
     procedure Normalize (Arg : in out Big_Real) is
+       Zero : constant Big_Integer := To_Big_Integer (0);
     begin
!       if Arg.Den < Zero then
           Arg.Num := -Arg.Num;
           Arg.Den := -Arg.Den;
        end if;
  
!       if Arg.Num = Zero then
!          Arg.Den := To_Big_Integer (1);
!       else
!          declare
!             GCD : constant Big_Integer :=
!               Greatest_Common_Divisor (Arg.Num, Arg.Den);
!          begin
!             Arg.Num := Arg.Num / GCD;
!             Arg.Den := Arg.Den / GCD;
!          end;
!       end if;
     end Normalize;
  
  end Ada.Numerics.Big_Numbers.Big_Reals;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nbnbre.ads gcc-11.1.0/gcc/ada/libgnat/a-nbnbre.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-nbnbre.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-nbnbre.ads	Tue Apr 27 10:00:12 2021
***************
*** 14,79 ****
  ------------------------------------------------------------------------------
  
  with Ada.Numerics.Big_Numbers.Big_Integers;
- with Ada.Streams;
  
! --  Note that some Ada 2020 aspects are commented out since they are not
! --  supported yet.
  
  package Ada.Numerics.Big_Numbers.Big_Reals
    with Preelaborate
- --  Nonblocking, Global => in out synchronized Big_Reals
  is
!    type Big_Real is private;
! --   with Real_Literal => From_String,
! --        Put_Image    => Put_Image;
  
!    function Is_Valid (Arg : Big_Real) return Boolean;
  
!    function "/" (Num, Den : Big_Integers.Big_Integer) return Big_Real;
! --   with Pre => (if Big_Integers."=" (Den, Big_Integers.To_Big_Integer (0))
! --                then raise Constraint_Error);
  
!    function Numerator (Arg : Big_Real) return Big_Integers.Big_Integer;
  
!    function Denominator (Arg : Big_Real) return Big_Integers.Big_Positive
!      with Post =>
!        (Arg = To_Real (0)) or else
!        (Big_Integers."="
!          (Big_Integers.Greatest_Common_Divisor
!            (Numerator (Arg), Denominator'Result),
!           Big_Integers.To_Big_Integer (1)));
  
     function To_Big_Real
       (Arg : Big_Integers.Big_Integer)
!      return Big_Real is (Arg / Big_Integers.To_Big_Integer (1));
  
!    function To_Real (Arg : Integer) return Big_Real is
!      (Big_Integers.To_Big_Integer (Arg) / Big_Integers.To_Big_Integer (1));
  
!    function "=" (L, R : Big_Real) return Boolean;
  
!    function "<" (L, R : Big_Real) return Boolean;
  
!    function "<=" (L, R : Big_Real) return Boolean;
  
!    function ">" (L, R : Big_Real) return Boolean;
  
!    function ">=" (L, R : Big_Real) return Boolean;
  
     function In_Range (Arg, Low, High : Big_Real) return Boolean is
!      (Low <= Arg and then Arg <= High);
  
     generic
        type Num is digits <>;
     package Float_Conversions is
  
!       function To_Big_Real (Arg : Num) return Big_Real;
  
        function From_Big_Real (Arg : Big_Real) return Num
!         with Pre => In_Range (Arg,
!                               Low  => To_Big_Real (Num'First),
!                               High => To_Big_Real (Num'Last))
!                     or else (raise Constraint_Error);
  
     end Float_Conversions;
  
--- 14,97 ----
  ------------------------------------------------------------------------------
  
  with Ada.Numerics.Big_Numbers.Big_Integers;
  
! with Ada.Strings.Text_Output; use Ada.Strings.Text_Output;
  
  package Ada.Numerics.Big_Numbers.Big_Reals
    with Preelaborate
  is
!    type Big_Real is private with
!      Real_Literal => From_String,
!      Put_Image    => Put_Image;
  
!    function Is_Valid (Arg : Big_Real) return Boolean
!    with
!      Convention => Intrinsic,
!      Global     => null;
  
!    subtype Valid_Big_Real is Big_Real
!      with Dynamic_Predicate => Is_Valid (Valid_Big_Real),
!           Predicate_Failure => raise Program_Error;
  
!    function "/"
!      (Num, Den : Big_Integers.Valid_Big_Integer) return Valid_Big_Real
!      with Global => null;
! --   with Pre => (Big_Integers."/=" (Den, Big_Integers.To_Big_Integer (0))
! --                or else Constraint_Error);
  
!    function Numerator
!      (Arg : Valid_Big_Real) return Big_Integers.Valid_Big_Integer
!      with Global => null;
! 
!    function Denominator (Arg : Valid_Big_Real) return Big_Integers.Big_Positive
!    with
!      Post   =>
!        (if Arg = To_Real (0)
!         then Big_Integers."=" (Denominator'Result,
!                                Big_Integers.To_Big_Integer (1))
!         else Big_Integers."="
!                (Big_Integers.Greatest_Common_Divisor
!                  (Numerator (Arg), Denominator'Result),
!                 Big_Integers.To_Big_Integer (1))),
!      Global => null;
  
     function To_Big_Real
       (Arg : Big_Integers.Big_Integer)
!      return Valid_Big_Real is (Arg / Big_Integers.To_Big_Integer (1))
!      with Global => null;
  
!    function To_Real (Arg : Integer) return Valid_Big_Real is
!      (Big_Integers.To_Big_Integer (Arg) / Big_Integers.To_Big_Integer (1))
!      with Global => null;
  
!    function "=" (L, R : Valid_Big_Real) return Boolean with Global => null;
  
!    function "<" (L, R : Valid_Big_Real) return Boolean with Global => null;
  
!    function "<=" (L, R : Valid_Big_Real) return Boolean with Global => null;
  
!    function ">" (L, R : Valid_Big_Real) return Boolean with Global => null;
  
!    function ">=" (L, R : Valid_Big_Real) return Boolean with Global => null;
  
     function In_Range (Arg, Low, High : Big_Real) return Boolean is
!      (Low <= Arg and then Arg <= High)
!      with Global => null;
  
     generic
        type Num is digits <>;
     package Float_Conversions is
  
!       function To_Big_Real (Arg : Num) return Valid_Big_Real
!         with Global => null;
  
        function From_Big_Real (Arg : Big_Real) return Num
!       with
!         Pre    => In_Range (Arg,
!                             Low  => To_Big_Real (Num'First),
!                             High => To_Big_Real (Num'Last))
!                    or else (raise Constraint_Error),
!         Global => null;
  
     end Float_Conversions;
  
*************** is
*** 81,133 ****
        type Num is delta <>;
     package Fixed_Conversions is
  
!       function To_Big_Real (Arg : Num) return Big_Real;
  
        function From_Big_Real (Arg : Big_Real) return Num
!         with Pre => In_Range (Arg,
!                               Low  => To_Big_Real (Num'First),
!                               High => To_Big_Real (Num'Last))
!                     or else (raise Constraint_Error);
  
     end Fixed_Conversions;
  
!    function To_String (Arg  : Big_Real;
                         Fore : Field := 2;
                         Aft  : Field := 3;
                         Exp  : Field := 0) return String
!       with Post => To_String'Result'First = 1;
  
!    function From_String (Arg : String) return Big_Real;
  
     function To_Quotient_String (Arg : Big_Real) return String is
       (Big_Integers.To_String (Numerator (Arg)) & " / "
!       & Big_Integers.To_String (Denominator (Arg)));
  
!    function From_Quotient_String (Arg : String) return Big_Real;
  
!    procedure Put_Image
!      (Stream : not null access Ada.Streams.Root_Stream_Type'Class;
!       Arg    : Big_Real);
  
!    function "+" (L : Big_Real) return Big_Real;
  
!    function "-" (L : Big_Real) return Big_Real;
  
!    function "abs" (L : Big_Real) return Big_Real;
  
!    function "+" (L, R : Big_Real) return Big_Real;
  
!    function "-" (L, R : Big_Real) return Big_Real;
  
!    function "*" (L, R : Big_Real) return Big_Real;
  
!    function "/" (L, R : Big_Real) return Big_Real;
  
!    function "**" (L : Big_Real; R : Integer) return Big_Real;
  
!    function Min (L, R : Big_Real) return Big_Real;
  
!    function Max (L, R : Big_Real) return Big_Real;
  
  private
  
--- 99,169 ----
        type Num is delta <>;
     package Fixed_Conversions is
  
!       function To_Big_Real (Arg : Num) return Valid_Big_Real
!         with Global => null;
  
        function From_Big_Real (Arg : Big_Real) return Num
!       with
!         Pre    => In_Range (Arg,
!                             Low  => To_Big_Real (Num'First),
!                             High => To_Big_Real (Num'Last))
!                    or else (raise Constraint_Error),
!         Global => null;
  
     end Fixed_Conversions;
  
!    function To_String (Arg  : Valid_Big_Real;
                         Fore : Field := 2;
                         Aft  : Field := 3;
                         Exp  : Field := 0) return String
!    with
!      Post   => To_String'Result'First = 1,
!      Global => null;
  
!    function From_String (Arg : String) return Valid_Big_Real
!      with Global => null;
!    function From_String (Numerator, Denominator : String) return Valid_Big_Real
!      with Global => null;
  
     function To_Quotient_String (Arg : Big_Real) return String is
       (Big_Integers.To_String (Numerator (Arg)) & " / "
!       & Big_Integers.To_String (Denominator (Arg)))
!      with Global => null;
  
!    function From_Quotient_String (Arg : String) return Valid_Big_Real
!      with Global => null;
  
!    procedure Put_Image (S : in out Sink'Class; V : Big_Real);
  
!    function "+" (L : Valid_Big_Real) return Valid_Big_Real
!      with Global => null;
  
!    function "-" (L : Valid_Big_Real) return Valid_Big_Real
!      with Global => null;
  
!    function "abs" (L : Valid_Big_Real) return Valid_Big_Real
!      with Global => null;
  
!    function "+" (L, R : Valid_Big_Real) return Valid_Big_Real
!      with Global => null;
  
!    function "-" (L, R : Valid_Big_Real) return Valid_Big_Real
!      with Global => null;
  
!    function "*" (L, R : Valid_Big_Real) return Valid_Big_Real
!      with Global => null;
  
!    function "/" (L, R : Valid_Big_Real) return Valid_Big_Real
!      with Global => null;
  
!    function "**" (L : Valid_Big_Real; R : Integer) return Valid_Big_Real
!      with Global => null;
  
!    function Min (L, R : Valid_Big_Real) return Valid_Big_Real
!      with Global => null;
  
!    function Max (L, R : Valid_Big_Real) return Valid_Big_Real
!      with Global => null;
  
  private
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ngcefu.adb gcc-11.1.0/gcc/ada/libgnat/a-ngcefu.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ngcefu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ngcefu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Numerics.Generic_Comple
*** 481,491 ****
     ---------
  
     function Exp (X : Complex) return Complex is
        EXP_RE_X : constant Real'Base := Exp (Re (X));
  
     begin
!       return Compose_From_Cartesian (EXP_RE_X * Cos (Im (X)),
!                                      EXP_RE_X * Sin (Im (X)));
     end Exp;
  
     function Exp (X : Imaginary) return Complex is
--- 481,492 ----
     ---------
  
     function Exp (X : Complex) return Complex is
+       ImX : constant Real'Base := Im (X);
        EXP_RE_X : constant Real'Base := Exp (Re (X));
  
     begin
!       return Compose_From_Cartesian (EXP_RE_X * Cos (ImX),
!                                      EXP_RE_X * Sin (ImX));
     end Exp;
  
     function Exp (X : Imaginary) return Complex is
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ngcoar.adb gcc-11.1.0/gcc/ada/libgnat/a-ngcoar.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ngcoar.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ngcoar.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2006-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2006-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ngcoty.adb gcc-11.1.0/gcc/ada/libgnat/a-ngcoty.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ngcoty.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ngcoty.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,38 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Ada.Numerics.Aux; use Ada.Numerics.Aux;
  
  package body Ada.Numerics.Generic_Complex_Types is
  
     subtype R is Real'Base;
  
     Two_Pi  : constant R := R (2.0) * Pi;
--- 29,40 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Ada.Numerics.Aux_Generic_Float;
  
  package body Ada.Numerics.Generic_Complex_Types is
  
+    package Aux is new Ada.Numerics.Aux_Generic_Float (Real);
+ 
     subtype R is Real'Base;
  
     Two_Pi  : constant R := R (2.0) * Pi;
*************** package body Ada.Numerics.Generic_Comple
*** 66,76 ****
--- 68,86 ----
           --  return false, the test can only be written thus.
  
           if not (abs (X) <= R'Last) then
+             pragma Annotate
+               (CodePeer, Intentional,
+                "test always false", "test for infinity");
+ 
              X := Scale**2 * ((Left.Re / Scale) * (Right.Re / Scale) -
                               (Left.Im / Scale) * (Right.Im / Scale));
           end if;
  
           if not (abs (Y) <= R'Last) then
+             pragma Annotate
+               (CodePeer, Intentional,
+                "test always false", "test for infinity");
+ 
              Y := Scale**2 * ((Left.Re / Scale) * (Right.Im / Scale)
                             + (Left.Im / Scale) * (Right.Re / Scale));
           end if;
*************** package body Ada.Numerics.Generic_Comple
*** 432,438 ****
           end if;
  
        else
!          arg := R (Atan (Double (abs (b / a))));
  
           if a > 0.0 then
              if b > 0.0 then
--- 442,448 ----
           end if;
  
        else
!          arg := Aux.Atan (abs (b / a));
  
           if a > 0.0 then
              if b > 0.0 then
*************** package body Ada.Numerics.Generic_Comple
*** 499,506 ****
        if Modulus = 0.0 then
           return (0.0, 0.0);
        else
!          return (Modulus * R (Cos (Double (Argument))),
!                  Modulus * R (Sin (Double (Argument))));
        end if;
     end Compose_From_Polar;
  
--- 509,516 ----
        if Modulus = 0.0 then
           return (0.0, 0.0);
        else
!          return (Modulus * Aux.Cos (Argument),
!                  Modulus * Aux.Sin (Argument));
        end if;
     end Compose_From_Polar;
  
*************** package body Ada.Numerics.Generic_Comple
*** 528,535 ****
              return (0.0, -Modulus);
           else
              Arg := Two_Pi * Argument / Cycle;
!             return (Modulus * R (Cos (Double (Arg))),
!                     Modulus * R (Sin (Double (Arg))));
           end if;
        else
           raise Argument_Error;
--- 538,545 ----
              return (0.0, -Modulus);
           else
              Arg := Two_Pi * Argument / Cycle;
!             return (Modulus * Aux.Cos (Arg),
!                     Modulus * Aux.Sin (Arg));
           end if;
        else
           raise Argument_Error;
*************** package body Ada.Numerics.Generic_Comple
*** 588,595 ****
  
        exception
           when Constraint_Error =>
!             return R (Double (abs (X.Re))
!               * Sqrt (1.0 + (Double (X.Im) / Double (X.Re)) ** 2));
        end;
  
        begin
--- 598,606 ----
  
        exception
           when Constraint_Error =>
!             pragma Assert (X.Re /= 0.0);
!             return R (abs (X.Re))
!               * Aux.Sqrt (1.0 + (R (X.Im) / R (X.Re)) ** 2);
        end;
  
        begin
*************** package body Ada.Numerics.Generic_Comple
*** 602,609 ****
  
        exception
           when Constraint_Error =>
!             return R (Double (abs (X.Im))
!               * Sqrt (1.0 + (Double (X.Re) / Double (X.Im)) ** 2));
        end;
  
        --  Now deal with cases of underflow. If only one of the squares
--- 613,621 ----
  
        exception
           when Constraint_Error =>
!             pragma Assert (X.Im /= 0.0);
!             return R (abs (X.Im))
!               * Aux.Sqrt (1.0 + (R (X.Re) / R (X.Im)) ** 2);
        end;
  
        --  Now deal with cases of underflow. If only one of the squares
*************** package body Ada.Numerics.Generic_Comple
*** 622,634 ****
  
              else
                 if abs (X.Re) > abs (X.Im) then
!                   return
!                     R (Double (abs (X.Re))
!                       * Sqrt (1.0 + (Double (X.Im) / Double (X.Re)) ** 2));
                 else
!                   return
!                     R (Double (abs (X.Im))
!                       * Sqrt (1.0 + (Double (X.Re) / Double (X.Im)) ** 2));
                 end if;
              end if;
  
--- 634,644 ----
  
              else
                 if abs (X.Re) > abs (X.Im) then
!                   return R (abs (X.Re))
!                     * Aux.Sqrt (1.0 + (R (X.Im) / R (X.Re)) ** 2);
                 else
!                   return R (abs (X.Im))
!                     * Aux.Sqrt (1.0 + (R (X.Re) / R (X.Im)) ** 2);
                 end if;
              end if;
  
*************** package body Ada.Numerics.Generic_Comple
*** 642,648 ****
        --  In all other cases, the naive computation will do
  
        else
!          return R (Sqrt (Double (Re2 + Im2)));
        end if;
     end Modulus;
  
--- 652,658 ----
        --  In all other cases, the naive computation will do
  
        else
!          return Aux.Sqrt (Re2 + Im2);
        end if;
     end Modulus;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ngcoty.ads gcc-11.1.0/gcc/ada/libgnat/a-ngcoty.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ngcoty.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ngcoty.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ngelfu.adb gcc-11.1.0/gcc/ada/libgnat/a-ngelfu.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ngelfu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ngelfu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 36,48 ****
  --  Uses functions sqrt, exp, log, pow, sin, asin, cos, acos, tan, atan, sinh,
  --  cosh, tanh from C library via math.h
  
! with Ada.Numerics.Aux;
  
  package body Ada.Numerics.Generic_Elementary_Functions with
    SPARK_Mode => Off
  is
  
!    use type Ada.Numerics.Aux.Double;
  
     Sqrt_Two : constant := 1.41421_35623_73095_04880_16887_24209_69807_85696;
     Log_Two  : constant := 0.69314_71805_59945_30941_72321_21458_17656_80755;
--- 36,48 ----
  --  Uses functions sqrt, exp, log, pow, sin, asin, cos, acos, tan, atan, sinh,
  --  cosh, tanh from C library via math.h
  
! with Ada.Numerics.Aux_Generic_Float;
  
  package body Ada.Numerics.Generic_Elementary_Functions with
    SPARK_Mode => Off
  is
  
!    package Aux is new Ada.Numerics.Aux_Generic_Float (Float_Type);
  
     Sqrt_Two : constant := 1.41421_35623_73095_04880_16887_24209_69807_85696;
     Log_Two  : constant := 0.69314_71805_59945_30941_72321_21458_17656_80755;
*************** is
*** 50,56 ****
     Half_Log_Two : constant := Log_Two / 2;
  
     subtype T is Float_Type'Base;
-    subtype Double is Aux.Double;
  
     Two_Pi  : constant T := 2.0 * Pi;
     Half_Pi : constant T := Pi / 2.0;
--- 50,55 ----
*************** is
*** 150,157 ****
                       Rest := Rest - 0.25;
                    end if;
  
!                   Result := Result *
!                     Float_Type'Base (Aux.Pow (Double (Left), Double (Rest)));
  
                    if Right >= 0.0 then
                       return Result;
--- 149,155 ----
                       Rest := Rest - 0.25;
                    end if;
  
!                   Result := Result * Aux.Pow (Left, Rest);
  
                    if Right >= 0.0 then
                       return Result;
*************** is
*** 159,166 ****
                       return (1.0 / Result);
                    end if;
                 else
!                   return
!                     Float_Type'Base (Aux.Pow (Double (Left), Double (Right)));
                 end if;
              end if;
  
--- 157,163 ----
                       return (1.0 / Result);
                    end if;
                 else
!                   return Aux.Pow (Left, Right);
                 end if;
              end if;
  
*************** is
*** 194,200 ****
           return Pi;
        end if;
  
!       Temp := Float_Type'Base (Aux.Acos (Double (X)));
  
        if Temp < 0.0 then
           Temp := Pi + Temp;
--- 191,197 ----
           return Pi;
        end if;
  
!       Temp := Aux.Acos (X);
  
        if Temp < 0.0 then
           Temp := Pi + Temp;
*************** is
*** 332,338 ****
           return -(Pi / 2.0);
        end if;
  
!       return Float_Type'Base (Aux.Asin (Double (X)));
     end Arcsin;
  
     --  Arbitrary cycle
--- 329,335 ----
           return -(Pi / 2.0);
        end if;
  
!       return Aux.Asin (X);
     end Arcsin;
  
     --  Arbitrary cycle
*************** is
*** 515,521 ****
           return 1.0;
        end if;
  
!       return Float_Type'Base (Aux.Cos (Double (X)));
     end Cos;
  
     --  Arbitrary cycle
--- 512,518 ----
           return 1.0;
        end if;
  
!       return Aux.Cos (X);
     end Cos;
  
     --  Arbitrary cycle
*************** is
*** 568,574 ****
           return 1.0 / X;
        end if;
  
!       return 1.0 / Float_Type'Base (Aux.Tan (Double (X)));
     end Cot;
  
     --  Arbitrary cycle
--- 565,571 ----
           return 1.0 / X;
        end if;
  
!       return 1.0 / Aux.Tan (X);
     end Cot;
  
     --  Arbitrary cycle
*************** is
*** 617,623 ****
           return 1.0 / X;
        end if;
  
!       return 1.0 / Float_Type'Base (Aux.Tanh (Double (X)));
     end Coth;
  
     ---------
--- 614,620 ----
           return 1.0 / X;
        end if;
  
!       return 1.0 / Aux.Tanh (X);
     end Coth;
  
     ---------
*************** is
*** 632,638 ****
           return 1.0;
        end if;
  
!       Result := Float_Type'Base (Aux.Exp (Double (X)));
  
        --  Deal with case of Exp returning IEEE infinity. If Machine_Overflows
        --  is False, then we can just leave it as an infinity (and indeed we
--- 629,635 ----
           return 1.0;
        end if;
  
!       Result := Aux.Exp (X);
  
        --  Deal with case of Exp returning IEEE infinity. If Machine_Overflows
        --  is False, then we can just leave it as an infinity (and indeed we
*************** is
*** 680,685 ****
--- 677,684 ----
        Z := G * G;
        P := G * ((P2 * Z + P1) * Z + P0);
        Q := ((Q3 * Z + Q2) * Z + Q1) * Z + Q0;
+ 
+       pragma Assert (Q /= P);
        R := 0.5 + P / (Q - P);
  
        R := Float_Type'Base'Scaling (R, Integer (XN) + 1);
*************** is
*** 714,720 ****
        Raw_Atan :=
          (if Z < Sqrt_Epsilon then Z
           elsif Z = 1.0 then Pi / 4.0
!          else Float_Type'Base (Aux.Atan (Double (Z))));
  
        if abs Y > abs X then
           Raw_Atan := Half_Pi - Raw_Atan;
--- 713,719 ----
        Raw_Atan :=
          (if Z < Sqrt_Epsilon then Z
           elsif Z = 1.0 then Pi / 4.0
!          else Aux.Atan (Z));
  
        if abs Y > abs X then
           Raw_Atan := Half_Pi - Raw_Atan;
*************** is
*** 745,751 ****
           return 0.0;
        end if;
  
!       return Float_Type'Base (Aux.Log (Double (X)));
     end Log;
  
     --  Arbitrary base
--- 744,750 ----
           return 0.0;
        end if;
  
!       return Aux.Log (X);
     end Log;
  
     --  Arbitrary base
*************** is
*** 765,771 ****
           return 0.0;
        end if;
  
!       return Float_Type'Base (Aux.Log (Double (X)) / Aux.Log (Double (Base)));
     end Log;
  
     ---------
--- 764,770 ----
           return 0.0;
        end if;
  
!       return Aux.Log (X) / Aux.Log (Base);
     end Log;
  
     ---------
*************** is
*** 780,786 ****
           return X;
        end if;
  
!       return Float_Type'Base (Aux.Sin (Double (X)));
     end Sin;
  
     --  Arbitrary cycle
--- 779,785 ----
           return X;
        end if;
  
!       return Aux.Sin (X);
     end Sin;
  
     --  Arbitrary cycle
*************** is
*** 814,820 ****
        --  Could test for 12.0 * abs T = Cycle, and return an exact value in
        --  those cases. It is not clear this is worth the extra test though.
  
!       return Float_Type'Base (Aux.Sin (Double (T / Cycle * Two_Pi)));
     end Sin;
  
     ----------
--- 813,819 ----
        --  Could test for 12.0 * abs T = Cycle, and return an exact value in
        --  those cases. It is not clear this is worth the extra test though.
  
!       return Aux.Sin (T / Cycle * Two_Pi);
     end Sin;
  
     ----------
*************** is
*** 897,903 ****
           return X;
        end if;
  
!       return Float_Type'Base (Aux.Sqrt (Double (X)));
     end Sqrt;
  
     ---------
--- 896,902 ----
           return X;
        end if;
  
!       return Aux.Sqrt (X);
     end Sqrt;
  
     ---------
*************** is
*** 917,923 ****
        --  with, it is impossible for X to be exactly pi/2, and the result is
        --  always in range.
  
!       return Float_Type'Base (Aux.Tan (Double (X)));
     end Tan;
  
     --  Arbitrary cycle
--- 916,922 ----
        --  with, it is impossible for X to be exactly pi/2, and the result is
        --  always in range.
  
!       return Aux.Tan (X);
     end Tan;
  
     --  Arbitrary cycle
*************** is
*** 990,996 ****
           return X + X * R;
  
        else
!          return Float_Type'Base (Aux.Tanh (Double (X)));
        end if;
     end Tanh;
  
--- 989,995 ----
           return X + X * R;
  
        else
!          return Aux.Tanh (X);
        end if;
     end Tanh;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ngelfu.ads gcc-11.1.0/gcc/ada/libgnat/a-ngelfu.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ngelfu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ngelfu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2012-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2012-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** is
*** 92,97 ****
--- 92,98 ----
         and then (if Left  = 0.0 then "**"'Result = 0.0);
  
     function Sin (X : Float_Type'Base) return Float_Type'Base with
+      Inline,
       Post => Sin'Result in -1.0 .. 1.0
         and then (if X = 0.0 then Sin'Result = 0.0);
  
*************** is
*** 101,106 ****
--- 102,108 ----
         and then (if X = 0.0 then Sin'Result = 0.0);
  
     function Cos (X : Float_Type'Base) return Float_Type'Base with
+      Inline,
       Post => Cos'Result in -1.0 .. 1.0
         and then (if X = 0.0 then Cos'Result = 1.0);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ngrear.adb gcc-11.1.0/gcc/ada/libgnat/a-ngrear.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ngrear.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ngrear.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2006-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2006-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Numerics.Generic_Real_A
*** 560,565 ****
--- 560,567 ----
        function Compute_Tan (P, H : Real) return Real is
           (if Is_Tiny (P, Compared_To => H) then P / H
            else Compute_Tan (Theta => H / (2.0 * P)));
+       pragma Annotate
+         (CodePeer, False_Positive, "divide by zero", "H, P /= 0");
  
        function Sum_Strict_Upper (M : Square_Matrix) return Real;
        --  Return the sum of all elements in the strict upper triangle of M
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ngrear.ads gcc-11.1.0/gcc/ada/libgnat/a-ngrear.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ngrear.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ngrear.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nuauco.ads gcc-11.1.0/gcc/ada/libgnat/a-nuauco.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-nuauco.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-nuauco.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,40 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --              A D A . N U M E R I C S . A U X _ C O M P A T               --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --                     Copyright (C) 2001-2020, AdaCore                     --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package is used to provide the default type for the
+ --  backward-compatibility Ada.Numerics.Aux interface.  This is
+ --  Long_Float for most platforms, but there is an alternate version
+ --  for x86 and x86_64 that uses the Long_Long_Float type.
+ 
+ --  This package should not be directly with'ed by an application program
+ 
+ with Ada.Numerics.Aux_Long_Float;
+ package Ada.Numerics.Aux_Compat renames Ada.Numerics.Aux_Long_Float;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nuauco__x86.ads gcc-11.1.0/gcc/ada/libgnat/a-nuauco__x86.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-nuauco__x86.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-nuauco__x86.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,39 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --              A D A . N U M E R I C S . A U X . C O M P A T               --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --                     Copyright (C) 2001-2020, AdaCore                     --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package is used to provide the default type for the
+ --  backward-compatibility Ada.Numerics.Aux interface.  This is a
+ --  version for x86 and x86_64, that uses the Long_Long_Float type.
+ 
+ --  This package should not be directly with'ed by an application program
+ 
+ with Ada.Numerics.Aux_Long_Long_Float;
+ package Ada.Numerics.Aux_Compat renames Ada.Numerics.Aux_Long_Long_Float;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nuaufl.ads gcc-11.1.0/gcc/ada/libgnat/a-nuaufl.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-nuaufl.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-nuaufl.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,87 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --               A D A . N U M E R I C S . A U X _ F L O A T                --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                      (C Math Library Version, Float)                     --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides the basic computational interface for the generic
+ --  elementary functions. The C library version interfaces with the routines
+ --  in the C mathematical library, and is thus quite portable.
+ 
+ with Ada.Numerics.Aux_Linker_Options;
+ pragma Warnings (Off, Ada.Numerics.Aux_Linker_Options);
+ 
+ package Ada.Numerics.Aux_Float is
+    pragma Pure;
+ 
+    subtype T is Float;
+ 
+    --  We import these functions directly from C. Note that we label them
+    --  all as pure functions, because indeed all of them are in fact pure.
+ 
+    function Sin (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "sinf";
+ 
+    function Cos (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "cosf";
+ 
+    function Tan (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "tanf";
+ 
+    function Exp (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "expf";
+ 
+    function Sqrt (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "sqrtf";
+ 
+    function Log (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "logf";
+ 
+    function Acos (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "acosf";
+ 
+    function Asin (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "asinf";
+ 
+    function Atan (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "atanf";
+ 
+    function Sinh (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "sinhf";
+ 
+    function Cosh (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "coshf";
+ 
+    function Tanh (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "tanhf";
+ 
+    function Pow (X, Y : T) return T with
+      Import, Convention => Intrinsic, External_Name => "powf";
+ 
+ end Ada.Numerics.Aux_Float;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nuaufl__wraplf.ads gcc-11.1.0/gcc/ada/libgnat/a-nuaufl__wraplf.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-nuaufl__wraplf.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-nuaufl__wraplf.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,87 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --               A D A . N U M E R I C S . A U X _ F L O A T                --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                       (Double-based Version, Float)                      --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides the basic computational interface for the
+ --  generic elementary functions. The functions in this unit are
+ --  wrappers for those in the Long_Float package.
+ 
+ with Ada.Numerics.Aux_Long_Float;
+ 
+ package Ada.Numerics.Aux_Float is
+    pragma Pure;
+ 
+    subtype T is Float;
+    package Aux renames Ada.Numerics.Aux_Long_Float;
+    subtype W is Aux.T;
+ 
+    --  Use the Aux implementation.
+ 
+    function Sin (X : T) return T
+    is (T (Aux.Sin (W (X))));
+ 
+    function Cos (X : T) return T
+    is (T (Aux.Cos (W (X))));
+ 
+    function Tan (X : T) return T
+    is (T (Aux.Tan (W (X))));
+ 
+    function Exp (X : T) return T
+    is (T (Aux.Exp (W (X))));
+ 
+    function Sqrt (X : T) return T
+    is (T (Aux.Sqrt (W (X))));
+ 
+    function Log (X : T) return T
+    is (T (Aux.Log (W (X))));
+ 
+    function Acos (X : T) return T
+    is (T (Aux.Acos (W (X))));
+ 
+    function Asin (X : T) return T
+    is (T (Aux.Asin (W (X))));
+ 
+    function Atan (X : T) return T
+    is (T (Aux.Atan (W (X))));
+ 
+    function Sinh (X : T) return T
+    is (T (Aux.Sinh (W (X))));
+ 
+    function Cosh (X : T) return T
+    is (T (Aux.Cosh (W (X))));
+ 
+    function Tanh (X : T) return T
+    is (T (Aux.Tanh (W (X))));
+ 
+    function Pow (X, Y : T) return T
+    is (T (Aux.Pow (W (X), W (Y))));
+ 
+ end Ada.Numerics.Aux_Float;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nubinu.ads gcc-11.1.0/gcc/ada/libgnat/a-nubinu.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-nubinu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-nubinu.ads	Tue Apr 27 10:00:12 2021
***************
*** 13,23 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- --  Note that some Ada 2020 aspects are commented out since they are not
- --  supported yet.
- 
  package Ada.Numerics.Big_Numbers
-   --  with Pure, Nonblocking, Global => null
    with Pure
  is
     subtype Field is Integer range 0 .. 255;
--- 13,19 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nudira.adb gcc-11.1.0/gcc/ada/libgnat/a-nudira.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-nudira.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-nudira.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 55,60 ****
--- 55,71 ----
     begin
        return Random (SRN.Generator (Gen));
     end Random;
+ 
+    function Random
+      (Gen   : Generator;
+       First : Result_Subtype;
+       Last  : Result_Subtype) return Result_Subtype
+    is
+       subtype Local_Subtype is Result_Subtype range First .. Last;
+       function Random is new SRN.Random_Discrete (Local_Subtype, First);
+    begin
+       return Random (SRN.Generator (Gen));
+    end Random;
  
     -----------
     -- Reset --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nudira.ads gcc-11.1.0/gcc/ada/libgnat/a-nudira.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-nudira.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-nudira.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** is
*** 51,56 ****
--- 51,62 ----
  
     function Random (Gen : Generator) return Result_Subtype;
  
+    function Random
+      (Gen   : Generator;
+       First : Result_Subtype;
+       Last  : Result_Subtype) return Result_Subtype
+      with Post => Random'Result in First .. Last;
+ 
     procedure Reset (Gen : Generator; Initiator : Integer);
     procedure Reset (Gen : Generator);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nuflra.adb gcc-11.1.0/gcc/ada/libgnat/a-nuflra.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-nuflra.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-nuflra.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-nuflra.ads gcc-11.1.0/gcc/ada/libgnat/a-nuflra.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-nuflra.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-nuflra.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-numaux.ads gcc-11.1.0/gcc/ada/libgnat/a-numaux.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-numaux.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-numaux.ads	Tue Apr 27 10:00:12 2021
***************
*** 5,13 ****
  --                     A D A . N U M E R I C S . A U X                      --
  --                                                                          --
  --                                 S p e c                                  --
- --                       (C Library Version, non-x86)                       --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 5,12 ----
  --                     A D A . N U M E R I C S . A U X                      --
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,112 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package provides the basic computational interface for the generic
! --  elementary functions. The C library version interfaces with the routines
! --  in the C mathematical library, and is thus quite portable, although it may
! --  not necessarily meet the requirements for accuracy in the numerics annex.
! --  One advantage of using this package is that it will interface directly to
! --  hardware instructions, such as the those provided on the Intel x86.
! 
! --  This version here is for use with normal Unix math functions. Alternative
! --  versions are provided for special situations:
  
! --    a-numaux-darwin    For PowerPC/Darwin (special handling of sin/cos)
! --    a-numaux-libc-x86  For the x86, using 80-bit long double format
! --    a-numaux-x86       For the x86, using 80-bit long double format with
! --                       inline asm statements
! --    a-numaux-vxworks   For use on VxWorks (where we have no libm.a library)
  
  package Ada.Numerics.Aux is
     pragma Pure;
  
!    pragma Linker_Options ("-lm");
  
!    type Double is new Long_Float;
!    --  Type Double is the type used to call the C routines
  
!    --  We import these functions directly from C. Note that we label them
!    --  all as pure functions, because indeed all of them are in fact pure.
  
!    function Sin (X : Double) return Double;
!    pragma Import (C, Sin, "sin");
!    pragma Pure_Function (Sin);
  
!    function Cos (X : Double) return Double;
!    pragma Import (C, Cos, "cos");
!    pragma Pure_Function (Cos);
  
!    function Tan (X : Double) return Double;
!    pragma Import (C, Tan, "tan");
!    pragma Pure_Function (Tan);
  
!    function Exp (X : Double) return Double;
!    pragma Import (C, Exp, "exp");
!    pragma Pure_Function (Exp);
  
!    function Sqrt (X : Double) return Double;
!    pragma Import (C, Sqrt, "sqrt");
!    pragma Pure_Function (Sqrt);
  
!    function Log (X : Double) return Double;
!    pragma Import (C, Log, "log");
!    pragma Pure_Function (Log);
  
!    function Acos (X : Double) return Double;
!    pragma Import (C, Acos, "acos");
!    pragma Pure_Function (Acos);
  
!    function Asin (X : Double) return Double;
!    pragma Import (C, Asin, "asin");
!    pragma Pure_Function (Asin);
  
!    function Atan (X : Double) return Double;
!    pragma Import (C, Atan, "atan");
!    pragma Pure_Function (Atan);
  
!    function Sinh (X : Double) return Double;
!    pragma Import (C, Sinh, "sinh");
!    pragma Pure_Function (Sinh);
  
!    function Cosh (X : Double) return Double;
!    pragma Import (C, Cosh, "cosh");
!    pragma Pure_Function (Cosh);
  
!    function Tanh (X : Double) return Double;
!    pragma Import (C, Tanh, "tanh");
!    pragma Pure_Function (Tanh);
  
!    function Pow (X, Y : Double) return Double;
!    pragma Import (C, Pow, "pow");
!    pragma Pure_Function (Pow);
  
  end Ada.Numerics.Aux;
--- 29,88 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This is a backward-compatibility unit, for users of this internal
! --  package before the introduction of Aux.Generic_Float.
  
! with Ada.Numerics.Aux_Compat;
  
  package Ada.Numerics.Aux is
     pragma Pure;
  
!    package Aux renames Aux_Compat;
  
!    type Double is new Aux.T;
  
!    subtype T is Double;
!    subtype W is Aux.T;
  
!    --  Use the Aux implementation.
  
!    function Sin (X : T) return T
!    is (T (Aux.Sin (W (X))));
  
!    function Cos (X : T) return T
!    is (T (Aux.Cos (W (X))));
  
!    function Tan (X : T) return T
!    is (T (Aux.Tan (W (X))));
  
!    function Exp (X : T) return T
!    is (T (Aux.Exp (W (X))));
  
!    function Sqrt (X : T) return T
!    is (T (Aux.Sqrt (W (X))));
  
!    function Log (X : T) return T
!    is (T (Aux.Log (W (X))));
  
!    function Acos (X : T) return T
!    is (T (Aux.Acos (W (X))));
  
!    function Asin (X : T) return T
!    is (T (Aux.Asin (W (X))));
  
!    function Atan (X : T) return T
!    is (T (Aux.Atan (W (X))));
  
!    function Sinh (X : T) return T
!    is (T (Aux.Sinh (W (X))));
  
!    function Cosh (X : T) return T
!    is (T (Aux.Cosh (W (X))));
  
!    function Tanh (X : T) return T
!    is (T (Aux.Tanh (W (X))));
! 
!    function Pow (X, Y : T) return T
!    is (T (Aux.Pow (W (X), W (Y))));
  
  end Ada.Numerics.Aux;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-numaux__darwin.adb gcc-11.1.0/gcc/ada/libgnat/a-numaux__darwin.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-numaux__darwin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-numaux__darwin.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,211 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . N U M E R I C S . A U X                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                          (Apple OS X Version)                            --
- --                                                                          --
- --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package body Ada.Numerics.Aux is
- 
-    -----------------------
-    -- Local subprograms --
-    -----------------------
- 
-    function Is_Nan (X : Double) return Boolean;
-    --  Return True iff X is a IEEE NaN value
- 
-    procedure Reduce (X : in out Double; Q : out Natural);
-    --  Implement reduction of X by Pi/2. Q is the quadrant of the final
-    --  result in the range 0..3. The absolute value of X is at most Pi/4.
-    --  It is needed to avoid a loss of accuracy for sin near Pi and cos
-    --  near Pi/2 due to the use of an insufficiently precise value of Pi
-    --  in the range reduction.
- 
-    --  The following two functions implement Chebishev approximations
-    --  of the trigonometric functions in their reduced domain.
-    --  These approximations have been computed using Maple.
- 
-    function Sine_Approx (X : Double) return Double;
-    function Cosine_Approx (X : Double) return Double;
- 
-    pragma Inline (Reduce);
-    pragma Inline (Sine_Approx);
-    pragma Inline (Cosine_Approx);
- 
-    -------------------
-    -- Cosine_Approx --
-    -------------------
- 
-    function Cosine_Approx (X : Double) return Double is
-       XX : constant Double := X * X;
-    begin
-       return (((((16#8.DC57FBD05F640#E-08 * XX
-               - 16#4.9F7D00BF25D80#E-06) * XX
-               + 16#1.A019F7FDEFCC2#E-04) * XX
-               - 16#5.B05B058F18B20#E-03) * XX
-               + 16#A.AAAAAAAA73FA8#E-02) * XX
-               - 16#7.FFFFFFFFFFDE4#E-01) * XX
-               - 16#3.655E64869ECCE#E-14 + 1.0;
-    end Cosine_Approx;
- 
-    -----------------
-    -- Sine_Approx --
-    -----------------
- 
-    function Sine_Approx (X : Double) return Double is
-       XX : constant Double := X * X;
-    begin
-       return (((((16#A.EA2D4ABE41808#E-09 * XX
-               - 16#6.B974C10F9D078#E-07) * XX
-               + 16#2.E3BC673425B0E#E-05) * XX
-               - 16#D.00D00CCA7AF00#E-04) * XX
-               + 16#2.222222221B190#E-02) * XX
-               - 16#2.AAAAAAAAAAA44#E-01) * (XX * X) + X;
-    end Sine_Approx;
- 
-    ------------
-    -- Is_Nan --
-    ------------
- 
-    function Is_Nan (X : Double) return Boolean is
-    begin
-       --  The IEEE NaN values are the only ones that do not equal themselves
- 
-       return X /= X;
-    end Is_Nan;
- 
-    ------------
-    -- Reduce --
-    ------------
- 
-    procedure Reduce (X : in out Double; Q : out Natural) is
-       Half_Pi     : constant := Pi / 2.0;
-       Two_Over_Pi : constant := 2.0 / Pi;
- 
-       HM : constant := Integer'Min (Double'Machine_Mantissa / 2, Natural'Size);
-       M  : constant Double := 0.5 + 2.0**(1 - HM); -- Splitting constant
-       P1 : constant Double := Double'Leading_Part (Half_Pi, HM);
-       P2 : constant Double := Double'Leading_Part (Half_Pi - P1, HM);
-       P3 : constant Double := Double'Leading_Part (Half_Pi - P1 - P2, HM);
-       P4 : constant Double := Double'Leading_Part (Half_Pi - P1 - P2 - P3, HM);
-       P5 : constant Double := Double'Leading_Part (Half_Pi - P1 - P2 - P3
-                                                                  - P4, HM);
-       P6 : constant Double := Double'Model (Half_Pi - P1 - P2 - P3 - P4 - P5);
-       K  : Double;
-       R  : Integer;
- 
-    begin
-       --  For X < 2.0**HM, all products below are computed exactly.
-       --  Due to cancellation effects all subtractions are exact as well.
-       --  As no double extended floating-point number has more than 75
-       --  zeros after the binary point, the result will be the correctly
-       --  rounded result of X - K * (Pi / 2.0).
- 
-       K := X * Two_Over_Pi;
-       while abs K >= 2.0**HM loop
-          K := K * M - (K * M - K);
-          X :=
-            (((((X - K * P1) - K * P2) - K * P3) - K * P4) - K * P5) - K * P6;
-          K := X * Two_Over_Pi;
-       end loop;
- 
-       --  If K is not a number (because X was not finite) raise exception
- 
-       if Is_Nan (K) then
-          raise Constraint_Error;
-       end if;
- 
-       --  Go through an integer temporary so as to use machine instructions
- 
-       R := Integer (Double'Rounding (K));
-       Q := R mod 4;
-       K := Double (R);
-       X := (((((X - K * P1) - K * P2) - K * P3) - K * P4) - K * P5) - K * P6;
-    end Reduce;
- 
-    ---------
-    -- Cos --
-    ---------
- 
-    function Cos (X : Double) return Double is
-       Reduced_X : Double := abs X;
-       Quadrant  : Natural range 0 .. 3;
- 
-    begin
-       if Reduced_X > Pi / 4.0 then
-          Reduce (Reduced_X, Quadrant);
- 
-          case Quadrant is
-             when 0 =>
-                return Cosine_Approx (Reduced_X);
- 
-             when 1 =>
-                return Sine_Approx (-Reduced_X);
- 
-             when 2 =>
-                return -Cosine_Approx (Reduced_X);
- 
-             when 3 =>
-                return Sine_Approx (Reduced_X);
-          end case;
-       end if;
- 
-       return Cosine_Approx (Reduced_X);
-    end Cos;
- 
-    ---------
-    -- Sin --
-    ---------
- 
-    function Sin (X : Double) return Double is
-       Reduced_X : Double := X;
-       Quadrant  : Natural range 0 .. 3;
- 
-    begin
-       if abs X > Pi / 4.0 then
-          Reduce (Reduced_X, Quadrant);
- 
-          case Quadrant is
-             when 0 =>
-                return Sine_Approx (Reduced_X);
- 
-             when 1 =>
-                return Cosine_Approx (Reduced_X);
- 
-             when 2 =>
-                return Sine_Approx (-Reduced_X);
- 
-             when 3 =>
-                return -Cosine_Approx (Reduced_X);
-          end case;
-       end if;
- 
-       return Sine_Approx (Reduced_X);
-    end Sin;
- 
- end Ada.Numerics.Aux;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-numaux__darwin.ads gcc-11.1.0/gcc/ada/libgnat/a-numaux__darwin.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-numaux__darwin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-numaux__darwin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,103 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . N U M E R I C S . A U X                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                          (Apple OS X Version)                            --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This version is for use on OS X. It uses the normal Unix math functions,
- --  except for sine/cosine which have been implemented directly in Ada to get
- --  the required accuracy.
- 
- package Ada.Numerics.Aux is
-    pragma Pure;
- 
-    pragma Linker_Options ("-lm");
- 
-    type Double is new Long_Float;
-    --  Type Double is the type used to call the C routines
- 
-    --  The following functions have been implemented in Ada, since
-    --  the OS X math library didn't meet accuracy requirements for
-    --  argument reduction. The implementation here has been tailored
-    --  to match Ada strict mode Numerics requirements while maintaining
-    --  maximum efficiency.
-    function Sin (X : Double) return Double;
-    pragma Inline (Sin);
- 
-    function Cos (X : Double) return Double;
-    pragma Inline (Cos);
- 
-    --  We import these functions directly from C. Note that we label them
-    --  all as pure functions, because indeed all of them are in fact pure.
- 
-    function Tan (X : Double) return Double;
-    pragma Import (C, Tan, "tan");
-    pragma Pure_Function (Tan);
- 
-    function Exp (X : Double) return Double;
-    pragma Import (C, Exp, "exp");
-    pragma Pure_Function (Exp);
- 
-    function Sqrt (X : Double) return Double;
-    pragma Import (C, Sqrt, "sqrt");
-    pragma Pure_Function (Sqrt);
- 
-    function Log (X : Double) return Double;
-    pragma Import (C, Log, "log");
-    pragma Pure_Function (Log);
- 
-    function Acos (X : Double) return Double;
-    pragma Import (C, Acos, "acos");
-    pragma Pure_Function (Acos);
- 
-    function Asin (X : Double) return Double;
-    pragma Import (C, Asin, "asin");
-    pragma Pure_Function (Asin);
- 
-    function Atan (X : Double) return Double;
-    pragma Import (C, Atan, "atan");
-    pragma Pure_Function (Atan);
- 
-    function Sinh (X : Double) return Double;
-    pragma Import (C, Sinh, "sinh");
-    pragma Pure_Function (Sinh);
- 
-    function Cosh (X : Double) return Double;
-    pragma Import (C, Cosh, "cosh");
-    pragma Pure_Function (Cosh);
- 
-    function Tanh (X : Double) return Double;
-    pragma Import (C, Tanh, "tanh");
-    pragma Pure_Function (Tanh);
- 
-    function Pow (X, Y : Double) return Double;
-    pragma Import (C, Pow, "pow");
-    pragma Pure_Function (Pow);
- 
- end Ada.Numerics.Aux;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-numaux__libc-x86.ads gcc-11.1.0/gcc/ada/libgnat/a-numaux__libc-x86.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-numaux__libc-x86.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-numaux__libc-x86.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,97 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . N U M E R I C S . A U X                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                       (C Library Version for x86)                        --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This version is for the x86 using the 80-bit x86 long double format
- 
- package Ada.Numerics.Aux is
-    pragma Pure;
- 
-    pragma Linker_Options ("-lm");
- 
-    type Double is new Long_Long_Float;
- 
-    --  We import these functions directly from C. Note that we label them
-    --  all as pure functions, because indeed all of them are in fact pure.
- 
-    function Sin (X : Double) return Double;
-    pragma Import (C, Sin, "sinl");
-    pragma Pure_Function (Sin);
- 
-    function Cos (X : Double) return Double;
-    pragma Import (C, Cos, "cosl");
-    pragma Pure_Function (Cos);
- 
-    function Tan (X : Double) return Double;
-    pragma Import (C, Tan, "tanl");
-    pragma Pure_Function (Tan);
- 
-    function Exp (X : Double) return Double;
-    pragma Import (C, Exp, "expl");
-    pragma Pure_Function (Exp);
- 
-    function Sqrt (X : Double) return Double;
-    pragma Import (C, Sqrt, "sqrtl");
-    pragma Pure_Function (Sqrt);
- 
-    function Log (X : Double) return Double;
-    pragma Import (C, Log, "logl");
-    pragma Pure_Function (Log);
- 
-    function Acos (X : Double) return Double;
-    pragma Import (C, Acos, "acosl");
-    pragma Pure_Function (Acos);
- 
-    function Asin (X : Double) return Double;
-    pragma Import (C, Asin, "asinl");
-    pragma Pure_Function (Asin);
- 
-    function Atan (X : Double) return Double;
-    pragma Import (C, Atan, "atanl");
-    pragma Pure_Function (Atan);
- 
-    function Sinh (X : Double) return Double;
-    pragma Import (C, Sinh, "sinhl");
-    pragma Pure_Function (Sinh);
- 
-    function Cosh (X : Double) return Double;
-    pragma Import (C, Cosh, "coshl");
-    pragma Pure_Function (Cosh);
- 
-    function Tanh (X : Double) return Double;
-    pragma Import (C, Tanh, "tanhl");
-    pragma Pure_Function (Tanh);
- 
-    function Pow (X, Y : Double) return Double;
-    pragma Import (C, Pow, "powl");
-    pragma Pure_Function (Pow);
- 
- end Ada.Numerics.Aux;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-numaux__vxworks.ads gcc-11.1.0/gcc/ada/libgnat/a-numaux__vxworks.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-numaux__vxworks.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-numaux__vxworks.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,97 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . N U M E R I C S . A U X                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                       (C Library Version, VxWorks)                       --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Version for use on VxWorks (where we have no libm.a library), so the pragma
- --  Linker_Options ("-lm") is omitted in this version.
- 
- package Ada.Numerics.Aux is
-    pragma Pure;
- 
-    type Double is new Long_Float;
-    --  Type Double is the type used to call the C routines
- 
-    --  We import these functions directly from C. Note that we label them
-    --  all as pure functions, because indeed all of them are in fact pure.
- 
-    function Sin (X : Double) return Double;
-    pragma Import (C, Sin, "sin");
-    pragma Pure_Function (Sin);
- 
-    function Cos (X : Double) return Double;
-    pragma Import (C, Cos, "cos");
-    pragma Pure_Function (Cos);
- 
-    function Tan (X : Double) return Double;
-    pragma Import (C, Tan, "tan");
-    pragma Pure_Function (Tan);
- 
-    function Exp (X : Double) return Double;
-    pragma Import (C, Exp, "exp");
-    pragma Pure_Function (Exp);
- 
-    function Sqrt (X : Double) return Double;
-    pragma Import (C, Sqrt, "sqrt");
-    pragma Pure_Function (Sqrt);
- 
-    function Log (X : Double) return Double;
-    pragma Import (C, Log, "log");
-    pragma Pure_Function (Log);
- 
-    function Acos (X : Double) return Double;
-    pragma Import (C, Acos, "acos");
-    pragma Pure_Function (Acos);
- 
-    function Asin (X : Double) return Double;
-    pragma Import (C, Asin, "asin");
-    pragma Pure_Function (Asin);
- 
-    function Atan (X : Double) return Double;
-    pragma Import (C, Atan, "atan");
-    pragma Pure_Function (Atan);
- 
-    function Sinh (X : Double) return Double;
-    pragma Import (C, Sinh, "sinh");
-    pragma Pure_Function (Sinh);
- 
-    function Cosh (X : Double) return Double;
-    pragma Import (C, Cosh, "cosh");
-    pragma Pure_Function (Cosh);
- 
-    function Tanh (X : Double) return Double;
-    pragma Import (C, Tanh, "tanh");
-    pragma Pure_Function (Tanh);
- 
-    function Pow (X, Y : Double) return Double;
-    pragma Import (C, Pow, "pow");
-    pragma Pure_Function (Pow);
- 
- end Ada.Numerics.Aux;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-numaux__x86.adb gcc-11.1.0/gcc/ada/libgnat/a-numaux__x86.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-numaux__x86.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-numaux__x86.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,577 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . N U M E R I C S . A U X                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                        (Machine Version for x86)                         --
- --                                                                          --
- --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System.Machine_Code; use System.Machine_Code;
- 
- package body Ada.Numerics.Aux is
- 
-    NL : constant String := ASCII.LF & ASCII.HT;
- 
-    -----------------------
-    -- Local subprograms --
-    -----------------------
- 
-    function Is_Nan (X : Double) return Boolean;
-    --  Return True iff X is a IEEE NaN value
- 
-    function Logarithmic_Pow (X, Y : Double) return Double;
-    --  Implementation of X**Y using Exp and Log functions (binary base)
-    --  to calculate the exponentiation. This is used by Pow for values
-    --  for values of Y in the open interval (-0.25, 0.25)
- 
-    procedure Reduce (X : in out Double; Q : out Natural);
-    --  Implement reduction of X by Pi/2. Q is the quadrant of the final
-    --  result in the range 0..3. The absolute value of X is at most Pi/4.
-    --  It is needed to avoid a loss of accuracy for sin near Pi and cos
-    --  near Pi/2 due to the use of an insufficiently precise value of Pi
-    --  in the range reduction.
- 
-    pragma Inline (Is_Nan);
-    pragma Inline (Reduce);
- 
-    --------------------------------
-    -- Basic Elementary Functions --
-    --------------------------------
- 
-    --  This section implements a few elementary functions that are used to
-    --  build the more complex ones. This ordering enables better inlining.
- 
-    ----------
-    -- Atan --
-    ----------
- 
-    function Atan (X : Double) return Double is
-       Result  : Double;
- 
-    begin
-       Asm (Template =>
-            "fld1" & NL
-          & "fpatan",
-          Outputs  => Double'Asm_Output ("=t", Result),
-          Inputs   => Double'Asm_Input  ("0", X));
- 
-       --  The result value is NaN iff input was invalid
- 
-       if not (Result = Result) then
-          raise Argument_Error;
-       end if;
- 
-       return Result;
-    end Atan;
- 
-    ---------
-    -- Exp --
-    ---------
- 
-    function Exp (X : Double) return Double is
-       Result : Double;
-    begin
-       Asm (Template =>
-          "fldl2e               " & NL
-        & "fmulp   %%st, %%st(1)" & NL -- X * log2 (E)
-        & "fld     %%st(0)      " & NL
-        & "frndint              " & NL -- Integer (X * Log2 (E))
-        & "fsubr   %%st, %%st(1)" & NL -- Fraction (X * Log2 (E))
-        & "fxch                 " & NL
-        & "f2xm1                " & NL -- 2**(...) - 1
-        & "fld1                 " & NL
-        & "faddp   %%st, %%st(1)" & NL -- 2**(Fraction (X * Log2 (E)))
-        & "fscale               " & NL -- E ** X
-        & "fstp    %%st(1)      ",
-          Outputs  => Double'Asm_Output ("=t", Result),
-          Inputs   => Double'Asm_Input  ("0", X));
-       return Result;
-    end Exp;
- 
-    ------------
-    -- Is_Nan --
-    ------------
- 
-    function Is_Nan (X : Double) return Boolean is
-    begin
-       --  The IEEE NaN values are the only ones that do not equal themselves
- 
-       return X /= X;
-    end Is_Nan;
- 
-    ---------
-    -- Log --
-    ---------
- 
-    function Log (X : Double) return Double is
-       Result : Double;
- 
-    begin
-       Asm (Template =>
-          "fldln2               " & NL
-        & "fxch                 " & NL
-        & "fyl2x                " & NL,
-          Outputs  => Double'Asm_Output ("=t", Result),
-          Inputs   => Double'Asm_Input  ("0", X));
-       return Result;
-    end Log;
- 
-    ------------
-    -- Reduce --
-    ------------
- 
-    procedure Reduce (X : in out Double; Q : out Natural) is
-       Half_Pi     : constant := Pi / 2.0;
-       Two_Over_Pi : constant := 2.0 / Pi;
- 
-       HM : constant := Integer'Min (Double'Machine_Mantissa / 2, Natural'Size);
-       M  : constant Double := 0.5 + 2.0**(1 - HM); -- Splitting constant
-       P1 : constant Double := Double'Leading_Part (Half_Pi, HM);
-       P2 : constant Double := Double'Leading_Part (Half_Pi - P1, HM);
-       P3 : constant Double := Double'Leading_Part (Half_Pi - P1 - P2, HM);
-       P4 : constant Double := Double'Leading_Part (Half_Pi - P1 - P2 - P3, HM);
-       P5 : constant Double := Double'Leading_Part (Half_Pi - P1 - P2 - P3
-                                                                  - P4, HM);
-       P6 : constant Double := Double'Model (Half_Pi - P1 - P2 - P3 - P4 - P5);
-       K  : Double;
-       R  : Integer;
- 
-    begin
-       --  For X < 2.0**HM, all products below are computed exactly.
-       --  Due to cancellation effects all subtractions are exact as well.
-       --  As no double extended floating-point number has more than 75
-       --  zeros after the binary point, the result will be the correctly
-       --  rounded result of X - K * (Pi / 2.0).
- 
-       K := X * Two_Over_Pi;
-       while abs K >= 2.0**HM loop
-          K := K * M - (K * M - K);
-          X :=
-            (((((X - K * P1) - K * P2) - K * P3) - K * P4) - K * P5) - K * P6;
-          K := X * Two_Over_Pi;
-       end loop;
- 
-       --  If K is not a number (because X was not finite) raise exception
- 
-       if Is_Nan (K) then
-          raise Constraint_Error;
-       end if;
- 
-       --  Go through an integer temporary so as to use machine instructions
- 
-       R := Integer (Double'Rounding (K));
-       Q := R mod 4;
-       K := Double (R);
-       X := (((((X - K * P1) - K * P2) - K * P3) - K * P4) - K * P5) - K * P6;
-    end Reduce;
- 
-    ----------
-    -- Sqrt --
-    ----------
- 
-    function Sqrt (X : Double) return Double is
-       Result  : Double;
- 
-    begin
-       if X < 0.0 then
-          raise Argument_Error;
-       end if;
- 
-       Asm (Template => "fsqrt",
-            Outputs  => Double'Asm_Output ("=t", Result),
-            Inputs   => Double'Asm_Input  ("0", X));
- 
-       return Result;
-    end Sqrt;
- 
-    --------------------------------
-    -- Other Elementary Functions --
-    --------------------------------
- 
-    --  These are built using the previously implemented basic functions
- 
-    ----------
-    -- Acos --
-    ----------
- 
-    function Acos (X : Double) return Double is
-       Result  : Double;
- 
-    begin
-       Result := 2.0 * Atan (Sqrt ((1.0 - X) / (1.0 + X)));
- 
-       --  The result value is NaN iff input was invalid
- 
-       if Is_Nan (Result) then
-          raise Argument_Error;
-       end if;
- 
-       return Result;
-    end Acos;
- 
-    ----------
-    -- Asin --
-    ----------
- 
-    function Asin (X : Double) return Double is
-       Result  : Double;
- 
-    begin
-       Result := Atan (X / Sqrt ((1.0 - X) * (1.0 + X)));
- 
-       --  The result value is NaN iff input was invalid
- 
-       if Is_Nan (Result) then
-          raise Argument_Error;
-       end if;
- 
-       return Result;
-    end Asin;
- 
-    ---------
-    -- Cos --
-    ---------
- 
-    function Cos (X : Double) return Double is
-       Reduced_X : Double := abs X;
-       Result    : Double;
-       Quadrant  : Natural range 0 .. 3;
- 
-    begin
-       if Reduced_X > Pi / 4.0 then
-          Reduce (Reduced_X, Quadrant);
- 
-          case Quadrant is
-             when 0 =>
-                Asm (Template  => "fcos",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", Reduced_X));
- 
-             when 1 =>
-                Asm (Template  => "fsin",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", -Reduced_X));
- 
-             when 2 =>
-                Asm (Template  => "fcos ; fchs",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", Reduced_X));
- 
-             when 3 =>
-                Asm (Template  => "fsin",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", Reduced_X));
-          end case;
- 
-       else
-          Asm (Template  => "fcos",
-               Outputs  => Double'Asm_Output ("=t", Result),
-               Inputs   => Double'Asm_Input  ("0", Reduced_X));
-       end if;
- 
-       return Result;
-    end Cos;
- 
-    ---------------------
-    -- Logarithmic_Pow --
-    ---------------------
- 
-    function Logarithmic_Pow (X, Y : Double) return Double is
-       Result  : Double;
-    begin
-       Asm (Template => ""             --  X                  : Y
-        & "fyl2x                " & NL --  Y * Log2 (X)
-        & "fld     %%st(0)      " & NL --  Y * Log2 (X)       : Y * Log2 (X)
-        & "frndint              " & NL --  Int (...)          : Y * Log2 (X)
-        & "fsubr   %%st, %%st(1)" & NL --  Int (...)          : Fract (...)
-        & "fxch                 " & NL --  Fract (...)        : Int (...)
-        & "f2xm1                " & NL --  2**Fract (...) - 1 : Int (...)
-        & "fld1                 " & NL --  1 : 2**Fract (...) - 1 : Int (...)
-        & "faddp   %%st, %%st(1)" & NL --  2**Fract (...)     : Int (...)
-        & "fscale               ",     --  2**(Fract (...) + Int (...))
-          Outputs  => Double'Asm_Output ("=t", Result),
-          Inputs   =>
-            (Double'Asm_Input  ("0", X),
-             Double'Asm_Input  ("u", Y)));
-       return Result;
-    end Logarithmic_Pow;
- 
-    ---------
-    -- Pow --
-    ---------
- 
-    function Pow (X, Y : Double) return Double is
-       type Mantissa_Type is mod 2**Double'Machine_Mantissa;
-       --  Modular type that can hold all bits of the mantissa of Double
- 
-       --  For negative exponents, do divide at the end of the processing
- 
-       Negative_Y : constant Boolean := Y < 0.0;
-       Abs_Y      : constant Double := abs Y;
- 
-       --  During this function the following invariant is kept:
-       --  X ** (abs Y) = Base**(Exp_High + Exp_Mid + Exp_Low) * Factor
- 
-       Base : Double := X;
- 
-       Exp_High : Double := Double'Floor (Abs_Y);
-       Exp_Mid  : Double;
-       Exp_Low  : Double;
-       Exp_Int  : Mantissa_Type;
- 
-       Factor : Double := 1.0;
- 
-    begin
-       --  Select algorithm for calculating Pow (integer cases fall through)
- 
-       if Exp_High >= 2.0**Double'Machine_Mantissa then
- 
-          --  In case of Y that is IEEE infinity, just raise constraint error
- 
-          if Exp_High > Double'Safe_Last then
-             raise Constraint_Error;
-          end if;
- 
-          --  Large values of Y are even integers and will stay integer
-          --  after division by two.
- 
-          loop
-             --  Exp_Mid and Exp_Low are zero, so
-             --    X**(abs Y) = Base ** Exp_High = (Base**2) ** (Exp_High / 2)
- 
-             Exp_High := Exp_High / 2.0;
-             Base := Base * Base;
-             exit when Exp_High < 2.0**Double'Machine_Mantissa;
-          end loop;
- 
-       elsif Exp_High /= Abs_Y then
-          Exp_Low := Abs_Y - Exp_High;
-          Factor := 1.0;
- 
-          if Exp_Low /= 0.0 then
- 
-             --  Exp_Low now is in interval (0.0, 1.0)
-             --  Exp_Mid := Double'Floor (Exp_Low * 4.0) / 4.0;
- 
-             Exp_Mid := 0.0;
-             Exp_Low := Exp_Low - Exp_Mid;
- 
-             if Exp_Low >= 0.5 then
-                Factor := Sqrt (X);
-                Exp_Low := Exp_Low - 0.5;  -- exact
- 
-                if Exp_Low >= 0.25 then
-                   Factor := Factor * Sqrt (Factor);
-                   Exp_Low := Exp_Low - 0.25; --  exact
-                end if;
- 
-             elsif Exp_Low >= 0.25 then
-                Factor := Sqrt (Sqrt (X));
-                Exp_Low := Exp_Low - 0.25; --  exact
-             end if;
- 
-             --  Exp_Low now is in interval (0.0, 0.25)
- 
-             --  This means it is safe to call Logarithmic_Pow
-             --  for the remaining part.
- 
-             Factor := Factor * Logarithmic_Pow (X, Exp_Low);
-          end if;
- 
-       elsif X = 0.0 then
-          return 0.0;
-       end if;
- 
-       --  Exp_High is non-zero integer smaller than 2**Double'Machine_Mantissa
- 
-       Exp_Int := Mantissa_Type (Exp_High);
- 
-       --  Standard way for processing integer powers > 0
- 
-       while Exp_Int > 1 loop
-          if (Exp_Int and 1) = 1 then
- 
-             --  Base**Y = Base**(Exp_Int - 1) * Exp_Int for Exp_Int > 0
- 
-             Factor := Factor * Base;
-          end if;
- 
-          --  Exp_Int is even and Exp_Int > 0, so
-          --    Base**Y = (Base**2)**(Exp_Int / 2)
- 
-          Base := Base * Base;
-          Exp_Int := Exp_Int / 2;
-       end loop;
- 
-       --  Exp_Int = 1 or Exp_Int = 0
- 
-       if Exp_Int = 1 then
-          Factor := Base * Factor;
-       end if;
- 
-       if Negative_Y then
-          Factor := 1.0 / Factor;
-       end if;
- 
-       return Factor;
-    end Pow;
- 
-    ---------
-    -- Sin --
-    ---------
- 
-    function Sin (X : Double) return Double is
-       Reduced_X : Double := X;
-       Result    : Double;
-       Quadrant  : Natural range 0 .. 3;
- 
-    begin
-       if abs X > Pi / 4.0 then
-          Reduce (Reduced_X, Quadrant);
- 
-          case Quadrant is
-             when 0 =>
-                Asm (Template  => "fsin",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", Reduced_X));
- 
-             when 1 =>
-                Asm (Template  => "fcos",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", Reduced_X));
- 
-             when 2 =>
-                Asm (Template  => "fsin",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", -Reduced_X));
- 
-             when 3 =>
-                Asm (Template  => "fcos ; fchs",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", Reduced_X));
-          end case;
- 
-       else
-          Asm (Template  => "fsin",
-             Outputs  => Double'Asm_Output ("=t", Result),
-             Inputs   => Double'Asm_Input  ("0", Reduced_X));
-       end if;
- 
-       return Result;
-    end Sin;
- 
-    ---------
-    -- Tan --
-    ---------
- 
-    function Tan (X : Double) return Double is
-       Reduced_X : Double := X;
-       Result    : Double;
-       Quadrant  : Natural range 0 .. 3;
- 
-    begin
-       if abs X > Pi / 4.0 then
-          Reduce (Reduced_X, Quadrant);
- 
-          if Quadrant mod 2 = 0 then
-             Asm (Template  => "fptan" & NL
-                             & "ffree   %%st(0)"  & NL
-                             & "fincstp",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", Reduced_X));
-          else
-             Asm (Template  => "fsincos" & NL
-                             & "fdivp   %%st, %%st(1)" & NL
-                             & "fchs",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", Reduced_X));
-          end if;
- 
-       else
-          Asm (Template  =>
-                "fptan                 " & NL
-              & "ffree   %%st(0)      " & NL
-              & "fincstp              ",
-                Outputs  => Double'Asm_Output ("=t", Result),
-                Inputs   => Double'Asm_Input  ("0", Reduced_X));
-       end if;
- 
-       return Result;
-    end Tan;
- 
-    ----------
-    -- Sinh --
-    ----------
- 
-    function Sinh (X : Double) return Double is
-    begin
-       --  Mathematically Sinh (x) is defined to be (Exp (X) - Exp (-X)) / 2.0
- 
-       if abs X < 25.0 then
-          return (Exp (X) - Exp (-X)) / 2.0;
-       else
-          return Exp (X) / 2.0;
-       end if;
-    end Sinh;
- 
-    ----------
-    -- Cosh --
-    ----------
- 
-    function Cosh (X : Double) return Double is
-    begin
-       --  Mathematically Cosh (X) is defined to be (Exp (X) + Exp (-X)) / 2.0
- 
-       if abs X < 22.0 then
-          return (Exp (X) + Exp (-X)) / 2.0;
-       else
-          return Exp (X) / 2.0;
-       end if;
-    end Cosh;
- 
-    ----------
-    -- Tanh --
-    ----------
- 
-    function Tanh (X : Double) return Double is
-    begin
-       --  Return the Hyperbolic Tangent of x
- 
-       --                                    x    -x
-       --                                   e  - e        Sinh (X)
-       --       Tanh (X) is defined to be -----------   = --------
-       --                                    x    -x      Cosh (X)
-       --                                   e  + e
- 
-       if abs X > 23.0 then
-          return Double'Copy_Sign (1.0, X);
-       end if;
- 
-       return 1.0 / (1.0 + Exp (-(2.0 * X))) - 1.0 / (1.0 + Exp (2.0 * X));
-    end Tanh;
- 
- end Ada.Numerics.Aux;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-numaux__x86.ads gcc-11.1.0/gcc/ada/libgnat/a-numaux__x86.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-numaux__x86.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-numaux__x86.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,76 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . N U M E R I C S . A U X                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                        (Machine Version for x86)                         --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This version is for the x86 using the 80-bit x86 long double format with
- --  inline asm statements.
- 
- package Ada.Numerics.Aux is
-    pragma Pure;
- 
-    type Double is new Long_Long_Float;
- 
-    function Sin (X : Double) return Double;
- 
-    function Cos (X : Double) return Double;
- 
-    function Tan (X : Double) return Double;
- 
-    function Exp (X : Double) return Double;
- 
-    function Sqrt (X : Double) return Double;
- 
-    function Log (X : Double) return Double;
- 
-    function Atan (X : Double) return Double;
- 
-    function Acos (X : Double) return Double;
- 
-    function Asin (X : Double) return Double;
- 
-    function Sinh (X : Double) return Double;
- 
-    function Cosh (X : Double) return Double;
- 
-    function Tanh (X : Double) return Double;
- 
-    function Pow (X, Y : Double) return Double;
- 
- private
-    pragma Inline (Atan);
-    pragma Inline (Cos);
-    pragma Inline (Tan);
-    pragma Inline (Exp);
-    pragma Inline (Log);
-    pragma Inline (Sin);
-    pragma Inline (Sqrt);
- 
- end Ada.Numerics.Aux;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-numeri.ads gcc-11.1.0/gcc/ada/libgnat/a-numeri.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-numeri.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-numeri.ads	Tue Apr 27 10:00:12 2021
*************** package Ada.Numerics is
*** 21,30 ****
     Pi : constant :=
            3.14159_26535_89793_23846_26433_83279_50288_41971_69399_37511;
  
!    ["03C0"] : constant := Pi;
     --  This is the Greek letter Pi (for Ada 2005 AI-388). Note that it is
     --  conforming to have this constant present even in Ada 95 mode, as there
     --  is no way for a normal mode Ada 95 program to reference this identifier.
  
     e : constant :=
           2.71828_18284_59045_23536_02874_71352_66249_77572_47093_69996;
--- 21,33 ----
     Pi : constant :=
            3.14159_26535_89793_23846_26433_83279_50288_41971_69399_37511;
  
!    --  ["03C0"] : constant := Pi;
     --  This is the Greek letter Pi (for Ada 2005 AI-388). Note that it is
     --  conforming to have this constant present even in Ada 95 mode, as there
     --  is no way for a normal mode Ada 95 program to reference this identifier.
+    --  ???This is removed for now, because nobody uses it, and it causes
+    --  trouble for tools other than the compiler. If people want to use the
+    --  Greek letter in their programs, they can easily define it themselves.
  
     e : constant :=
           2.71828_18284_59045_23536_02874_71352_66249_77572_47093_69996;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-rbtgbk.adb gcc-11.1.0/gcc/ada/libgnat/a-rbtgbk.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-rbtgbk.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-rbtgbk.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-rbtgbk.ads gcc-11.1.0/gcc/ada/libgnat/a-rbtgbk.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-rbtgbk.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-rbtgbk.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-rbtgbo.adb gcc-11.1.0/gcc/ada/libgnat/a-rbtgbo.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-rbtgbo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-rbtgbo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-rbtgbo.ads gcc-11.1.0/gcc/ada/libgnat/a-rbtgbo.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-rbtgbo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-rbtgbo.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-rbtgso.adb gcc-11.1.0/gcc/ada/libgnat/a-rbtgso.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-rbtgso.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-rbtgso.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Containers.Red_Black_Tr
*** 94,102 ****
        Compare : Integer;
  
     begin
!       if Target'Address = Source'Address then
!          TC_Check (Target.TC);
  
           Clear (Target);
           return;
        end if;
--- 94,102 ----
        Compare : Integer;
  
     begin
!       TC_Check (Target.TC);
  
+       if Target'Address = Source'Address then
           Clear (Target);
           return;
        end if;
*************** package body Ada.Containers.Red_Black_Tr
*** 105,112 ****
           return;
        end if;
  
-       TC_Check (Target.TC);
- 
        Tgt := Target.First;
        Src := Source.First;
        loop
--- 105,110 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-rbtgso.ads gcc-11.1.0/gcc/ada/libgnat/a-rbtgso.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-rbtgso.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-rbtgso.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-sbecin.adb gcc-11.1.0/gcc/ada/libgnat/a-sbecin.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-sbecin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-sbecin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-sbecin.ads gcc-11.1.0/gcc/ada/libgnat/a-sbecin.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-sbecin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-sbecin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-sbhcin.adb gcc-11.1.0/gcc/ada/libgnat/a-sbhcin.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-sbhcin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-sbhcin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-sbhcin.ads gcc-11.1.0/gcc/ada/libgnat/a-sbhcin.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-sbhcin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-sbhcin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-sblcin.adb gcc-11.1.0/gcc/ada/libgnat/a-sblcin.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-sblcin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-sblcin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-sblcin.ads gcc-11.1.0/gcc/ada/libgnat/a-sblcin.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-sblcin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-sblcin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-secain.adb gcc-11.1.0/gcc/ada/libgnat/a-secain.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-secain.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-secain.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-secain.ads gcc-11.1.0/gcc/ada/libgnat/a-secain.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-secain.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-secain.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-sequio.adb gcc-11.1.0/gcc/ada/libgnat/a-sequio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-sequio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-sequio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Sequential_IO is
*** 73,79 ****
     procedure Byte_Swap (Siz : in out size_t) is
        use System.Byte_Swapping;
     begin
!       case Siz'Size is
           when 32     => Siz := size_t (Bswap_32 (U32 (Siz)));
           when 64     => Siz := size_t (Bswap_64 (U64 (Siz)));
           when others => raise Program_Error;
--- 73,79 ----
     procedure Byte_Swap (Siz : in out size_t) is
        use System.Byte_Swapping;
     begin
!       case size_t'Size is
           when 32     => Siz := size_t (Bswap_32 (U32 (Siz)));
           when 64     => Siz := size_t (Bswap_64 (U64 (Siz)));
           when others => raise Program_Error;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-sequio.ads gcc-11.1.0/gcc/ada/libgnat/a-sequio.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-sequio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-sequio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-sfecin.ads gcc-11.1.0/gcc/ada/libgnat/a-sfecin.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-sfecin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-sfecin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-sfhcin.ads gcc-11.1.0/gcc/ada/libgnat/a-sfhcin.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-sfhcin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-sfhcin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-sflcin.ads gcc-11.1.0/gcc/ada/libgnat/a-sflcin.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-sflcin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-sflcin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-shcain.adb gcc-11.1.0/gcc/ada/libgnat/a-shcain.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-shcain.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-shcain.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-shcain.ads gcc-11.1.0/gcc/ada/libgnat/a-shcain.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-shcain.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-shcain.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-siocst.adb gcc-11.1.0/gcc/ada/libgnat/a-siocst.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-siocst.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-siocst.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-siocst.ads gcc-11.1.0/gcc/ada/libgnat/a-siocst.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-siocst.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-siocst.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-slcain.adb gcc-11.1.0/gcc/ada/libgnat/a-slcain.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-slcain.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-slcain.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-slcain.ads gcc-11.1.0/gcc/ada/libgnat/a-slcain.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-slcain.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-slcain.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ssicst.adb gcc-11.1.0/gcc/ada/libgnat/a-ssicst.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ssicst.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ssicst.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ssicst.ads gcc-11.1.0/gcc/ada/libgnat/a-ssicst.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ssicst.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ssicst.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stboha.adb gcc-11.1.0/gcc/ada/libgnat/a-stboha.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stboha.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stboha.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stmaco.ads gcc-11.1.0/gcc/ada/libgnat/a-stmaco.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stmaco.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stmaco.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stobbu.adb gcc-11.1.0/gcc/ada/libgnat/a-stobbu.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stobbu.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-stobbu.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,53 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                    ADA.STRINGS.TEXT_OUTPUT.BIT_BUCKETS                   --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package body Ada.Strings.Text_Output.Bit_Buckets is
+ 
+    type Bit_Bucket_Type is new Sink with null record;
+    overriding procedure Full_Method (S : in out Bit_Bucket_Type);
+    overriding procedure Flush_Method (S : in out Bit_Bucket_Type);
+ 
+    The_Bit_Bucket : aliased Bit_Bucket_Type
+      (Chunk_Length => Default_Chunk_Length);
+    function Bit_Bucket return Sink_Access is (The_Bit_Bucket'Access);
+ 
+    overriding procedure Full_Method (S : in out Bit_Bucket_Type)
+                 renames Flush_Method;
+ 
+    overriding procedure Flush_Method (S : in out Bit_Bucket_Type) is
+    begin
+       S.Last := 0;
+    end Flush_Method;
+ 
+ begin
+    The_Bit_Bucket.Indent_Amount := 0;
+    The_Bit_Bucket.Cur_Chunk := The_Bit_Bucket.Initial_Chunk'Access;
+ end Ada.Strings.Text_Output.Bit_Buckets;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stobbu.ads gcc-11.1.0/gcc/ada/libgnat/a-stobbu.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stobbu.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-stobbu.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,34 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                    ADA.STRINGS.TEXT_OUTPUT.BIT_BUCKETS                   --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package Ada.Strings.Text_Output.Bit_Buckets is
+    function Bit_Bucket return Sink_Access;
+ end Ada.Strings.Text_Output.Bit_Buckets;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stobfi.adb gcc-11.1.0/gcc/ada/libgnat/a-stobfi.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stobfi.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-stobfi.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,118 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                    ADA.STRINGS.TEXT_OUTPUT.BASIC_FILES                   --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Strings.Text_Output.Utils; use Ada.Strings.Text_Output.Utils;
+ package body Ada.Strings.Text_Output.Basic_Files is
+    use type OS.File_Descriptor;
+ 
+    function Create_From_FD
+      (FD : OS.File_Descriptor;
+       Indent_Amount : Natural;
+       Chunk_Length : Positive) return File;
+    --  Create a file from an OS file descriptor
+ 
+    function Create_From_FD
+      (FD : OS.File_Descriptor;
+       Indent_Amount : Natural;
+       Chunk_Length : Positive) return File
+    is
+    begin
+       if FD = OS.Invalid_FD then
+          raise Program_Error with OS.Errno_Message;
+       end if;
+       return Result : File (Chunk_Length) do
+          Result.Indent_Amount := Indent_Amount;
+          Result.Cur_Chunk := Result.Initial_Chunk'Unchecked_Access;
+          Result.FD := FD;
+       end return;
+    end Create_From_FD;
+ 
+    function Create_File
+      (Name : String;
+       Indent_Amount : Natural := Default_Indent_Amount;
+       Chunk_Length : Positive := Default_Chunk_Length) return File
+    is
+    begin
+       return Create_From_FD
+         (OS.Create_File (Name, Fmode => OS.Text),
+          Indent_Amount, Chunk_Length);
+    end Create_File;
+ 
+    function Create_New_File
+      (Name : String;
+       Indent_Amount : Natural := Default_Indent_Amount;
+       Chunk_Length : Positive := Default_Chunk_Length) return File
+    is
+    begin
+       return Create_From_FD
+         (OS.Create_New_File (Name, Fmode => OS.Text),
+          Indent_Amount, Chunk_Length);
+    end Create_New_File;
+ 
+    procedure Close (S : in out File'Class) is
+       Status : Boolean;
+    begin
+       Flush (S);
+ 
+       if S.FD not in OS.Standout | OS.Standerr then -- Don't close these
+          OS.Close (S.FD, Status);
+          if not Status then
+             raise Program_Error with OS.Errno_Message;
+          end if;
+       end if;
+    end Close;
+ 
+    overriding procedure Full_Method (S : in out File) renames Flush_Method;
+ 
+    overriding procedure Flush_Method (S : in out File) is
+       pragma Assert (S.Cur_Chunk = S.Initial_Chunk'Unchecked_Access);
+       Res : constant Integer :=
+         OS.Write (S.FD, S.Cur_Chunk.Chars'Address, S.Last);
+    begin
+       if Res /= S.Last then
+          raise Program_Error with OS.Errno_Message;
+       end if;
+       S.Last := 0;
+    end Flush_Method;
+ 
+    The_Stdout : aliased File :=
+      Create_From_FD (OS.Standout,
+                      Indent_Amount => Default_Indent_Amount,
+                      Chunk_Length => Default_Chunk_Length);
+    The_Stderr : aliased File :=
+      Create_From_FD (OS.Standerr,
+                      Indent_Amount => Default_Indent_Amount,
+                      Chunk_Length => Default_Chunk_Length);
+ 
+    function Standard_Output return Sink_Access is (The_Stdout'Access);
+    function Standard_Error return Sink_Access is (The_Stderr'Access);
+ 
+ end Ada.Strings.Text_Output.Basic_Files;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stobfi.ads gcc-11.1.0/gcc/ada/libgnat/a-stobfi.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stobfi.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-stobfi.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,66 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                    ADA.STRINGS.TEXT_OUTPUT.BASIC_FILES                   --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ private with GNAT.OS_Lib;
+ package Ada.Strings.Text_Output.Basic_Files is
+    --  Normally, you should use Ada.Strings.Text_Output.Files, which
+    --  automatically Closes files via finalization. If you don't want to use
+    --  finalization, use this package instead. You must then Close the file by
+    --  hand. The semantics is otherwise the same as Files.
+ 
+    function Standard_Output return Sink_Access;
+    function Standard_Error return Sink_Access;
+ 
+    type File (<>) is new Sink with private;
+ 
+    function Create_File
+      (Name : String;
+       Indent_Amount : Natural := Default_Indent_Amount;
+       Chunk_Length : Positive := Default_Chunk_Length) return File;
+    function Create_New_File
+      (Name : String;
+       Indent_Amount : Natural := Default_Indent_Amount;
+       Chunk_Length : Positive := Default_Chunk_Length) return File;
+ 
+    procedure Close (S : in out File'Class);
+ 
+ private
+ 
+    package OS renames GNAT.OS_Lib;
+ 
+    type File is new Sink with record
+       FD : OS.File_Descriptor := OS.Invalid_FD;
+    end record;
+ 
+    overriding procedure Full_Method (S : in out File);
+    overriding procedure Flush_Method (S : in out File);
+ 
+ end Ada.Strings.Text_Output.Basic_Files;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-storio.adb gcc-11.1.0/gcc/ada/libgnat/a-storio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-storio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-storio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stoubu.adb gcc-11.1.0/gcc/ada/libgnat/a-stoubu.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stoubu.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-stoubu.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,148 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                      ADA.STRINGS.TEXT_OUTPUT.BUFFERS                     --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Unchecked_Deallocation;
+ with Ada.Strings.UTF_Encoding.Strings;
+ with Ada.Strings.UTF_Encoding.Wide_Strings;
+ with Ada.Strings.UTF_Encoding.Wide_Wide_Strings;
+ package body Ada.Strings.Text_Output.Buffers is
+ 
+    type Chunk_Access is access all Chunk;
+ 
+    function New_Buffer
+      (Indent_Amount : Natural := Default_Indent_Amount;
+       Chunk_Length : Positive := Default_Chunk_Length) return Buffer
+    is
+    begin
+       return Result : Buffer (Chunk_Length) do
+          Result.Indent_Amount := Indent_Amount;
+          Result.Cur_Chunk := Result.Initial_Chunk'Unchecked_Access;
+       end return;
+    end New_Buffer;
+ 
+    --  We need type conversions of Chunk_Access values in the following two
+    --  procedures, because the one in Text_Output has Storage_Size => 0,
+    --  because Text_Output is Pure. We do not run afoul of 13.11.2(16/3),
+    --  which requires the allocation and deallocation to have the same pool,
+    --  because the allocation in Full_Method and the deallocation in Destroy
+    --  use the same access type, and therefore the same pool.
+ 
+    procedure Destroy (S : in out Buffer) is
+       procedure Free is new Unchecked_Deallocation (Chunk, Chunk_Access);
+       Cur : Chunk_Access := Chunk_Access (S.Initial_Chunk.Next);
+    begin
+       while Cur /= null loop
+          declare
+             Temp : constant Chunk_Access := Chunk_Access (Cur.Next);
+          begin
+             Free (Cur);
+             Cur := Temp;
+          end;
+       end loop;
+ 
+       S.Cur_Chunk := null;
+    end Destroy;
+ 
+    overriding procedure Full_Method (S : in out Buffer) is
+    begin
+       pragma Assert (S.Cur_Chunk.Next = null);
+       pragma Assert (S.Last = S.Cur_Chunk.Chars'Length);
+       S.Cur_Chunk.Next :=
+         Text_Output.Chunk_Access (Chunk_Access'(new Chunk (S.Chunk_Length)));
+       S.Cur_Chunk := S.Cur_Chunk.Next;
+       S.Num_Extra_Chunks := @ + 1;
+       S.Last := 0;
+    end Full_Method;
+ 
+    function UTF_8_Length (S : Buffer'Class) return Natural is
+    begin
+       return S.Num_Extra_Chunks * S.Chunk_Length + S.Last;
+    end UTF_8_Length;
+ 
+    procedure Get_UTF_8
+      (S : Buffer'Class; Result : out UTF_8_Lines)
+    is
+       Cur : access constant Chunk := S.Initial_Chunk'Access;
+       First : Positive := 1;
+    begin
+       loop
+          if Cur.Next = null then
+             pragma Assert (Result'Last = First + S.Last - 1);
+             Result (First .. Result'Last) := Cur.Chars (1 .. S.Last);
+             exit;
+          end if;
+ 
+          pragma Assert (S.Chunk_Length = Cur.Chars'Length);
+          Result (First .. First + S.Chunk_Length - 1) := Cur.Chars;
+          First := First + S.Chunk_Length;
+          Cur := Cur.Next;
+       end loop;
+    end Get_UTF_8;
+ 
+    function Get_UTF_8 (S : Buffer'Class) return UTF_8_Lines is
+    begin
+       return Result : String (1 .. UTF_8_Length (S)) do
+          Get_UTF_8 (S, Result);
+       end return;
+    end Get_UTF_8;
+ 
+    function Get (S : Buffer'Class) return String is
+    begin
+       --  If all characters are 7 bits, we don't need to decode;
+       --  this is an optimization.
+ 
+       --  Otherwise, if all are 8 bits, we need to decode to get Latin-1.
+       --  Otherwise, the result is implementation defined, so we return a
+       --  String encoded as UTF-8. (Note that the AI says "if any character
+       --  in the sequence is not defined in Character, the result is
+       --  implementation-defined", so we are not obliged to decode ANY
+       --  Latin-1 characters if ANY character is bigger than 8 bits.
+ 
+       if S.All_7_Bits then
+          return Get_UTF_8 (S);
+       elsif S.All_8_Bits then
+          return UTF_Encoding.Strings.Decode (Get_UTF_8 (S));
+       else
+          return Get_UTF_8 (S);
+       end if;
+    end Get;
+ 
+    function Wide_Get (S : Buffer'Class) return Wide_String is
+    begin
+       return UTF_Encoding.Wide_Strings.Decode (Get_UTF_8 (S));
+    end Wide_Get;
+ 
+    function Wide_Wide_Get (S : Buffer'Class) return Wide_Wide_String is
+    begin
+       return UTF_Encoding.Wide_Wide_Strings.Decode (Get_UTF_8 (S));
+    end Wide_Wide_Get;
+ 
+ end Ada.Strings.Text_Output.Buffers;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stoubu.ads gcc-11.1.0/gcc/ada/libgnat/a-stoubu.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stoubu.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-stoubu.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,73 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                      ADA.STRINGS.TEXT_OUTPUT.BUFFERS                     --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package Ada.Strings.Text_Output.Buffers is
+ 
+    type Buffer (<>) is new Sink with private;
+ 
+    function New_Buffer
+      (Indent_Amount : Natural := Default_Indent_Amount;
+       Chunk_Length : Positive := Default_Chunk_Length) return Buffer;
+ 
+    procedure Destroy (S : in out Buffer);
+    --  Reclaim any heap-allocated data, and render the Buffer unusable.
+    --  It would make sense to do this via finalization, but we wish to
+    --  avoid controlled types in the generated code for 'Image.
+ 
+    function Get_UTF_8 (S : Buffer'Class) return UTF_8_Lines;
+    --  Get the characters in S, encoded as UTF-8.
+ 
+    function UTF_8_Length (S : Buffer'Class) return Natural;
+    procedure Get_UTF_8
+      (S : Buffer'Class; Result : out UTF_8_Lines) with
+        Pre => Result'First = 1 and Result'Last = UTF_8_Length (S);
+    --  This is a procedure version of the Get_UTF_8 function, for
+    --  efficiency. The Result String must be the exact right length.
+ 
+    function Get (S : Buffer'Class) return String;
+    function Wide_Get (S : Buffer'Class) return Wide_String;
+    function Wide_Wide_Get (S : Buffer'Class) return Wide_Wide_String;
+    --  Get the characters in S, decoded as [[Wide_]Wide_]String.
+    --  There is no need for procedure versions of these, because
+    --  they are intended primarily to implement the [[Wide_]Wide_]Image
+    --  attribute, which is already a function.
+ 
+ private
+    type Chunk_Count is new Natural;
+    type Buffer is new Sink with record
+       Num_Extra_Chunks : Natural := 0;
+       --  Number of chunks in the linked list, not including Initial_Chunk.
+    end record;
+ 
+    overriding procedure Full_Method (S : in out Buffer);
+    overriding procedure Flush_Method (S : in out Buffer) is null;
+ 
+ end Ada.Strings.Text_Output.Buffers;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stoufi.adb gcc-11.1.0/gcc/ada/libgnat/a-stoufi.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stoufi.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-stoufi.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,123 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       ADA.STRINGS.TEXT_OUTPUT.FILES                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Strings.Text_Output.Utils; use Ada.Strings.Text_Output.Utils;
+ package body Ada.Strings.Text_Output.Files is
+    use type OS.File_Descriptor;
+ 
+    function Create_From_FD
+      (FD : OS.File_Descriptor;
+       Indent_Amount : Natural;
+       Chunk_Length : Positive) return File;
+    --  Create a file from an OS file descriptor
+ 
+    function Create_From_FD
+      (FD : OS.File_Descriptor;
+       Indent_Amount : Natural;
+       Chunk_Length : Positive) return File
+    is
+    begin
+       if FD = OS.Invalid_FD then
+          raise Program_Error with OS.Errno_Message;
+       end if;
+       return Result : File (Chunk_Length) do
+          Result.Indent_Amount := Indent_Amount;
+          Result.Cur_Chunk := Result.Initial_Chunk'Unchecked_Access;
+          Result.FD := FD;
+       end return;
+    end Create_From_FD;
+ 
+    function Create_File
+      (Name : String;
+       Indent_Amount : Natural := Default_Indent_Amount;
+       Chunk_Length : Positive := Default_Chunk_Length) return File
+    is
+    begin
+       return Create_From_FD
+         (OS.Create_File (Name, Fmode => OS.Text),
+          Indent_Amount, Chunk_Length);
+    end Create_File;
+ 
+    function Create_New_File
+      (Name : String;
+       Indent_Amount : Natural := Default_Indent_Amount;
+       Chunk_Length : Positive := Default_Chunk_Length) return File
+    is
+    begin
+       return Create_From_FD
+         (OS.Create_New_File (Name, Fmode => OS.Text),
+          Indent_Amount, Chunk_Length);
+    end Create_New_File;
+ 
+    overriding procedure Finalize (Ref : in out Self_Ref) is
+    begin
+       Close (Ref.Self.all);
+    end Finalize;
+ 
+    procedure Close (S : in out File'Class) is
+       Status : Boolean;
+    begin
+       Flush (S);
+ 
+       if S.FD not in OS.Standout | OS.Standerr then -- Don't close these
+          OS.Close (S.FD, Status);
+          if not Status then
+             raise Program_Error with OS.Errno_Message;
+          end if;
+       end if;
+    end Close;
+ 
+    overriding procedure Full_Method (S : in out File) renames Flush_Method;
+ 
+    overriding procedure Flush_Method (S : in out File) is
+       pragma Assert (S.Cur_Chunk = S.Initial_Chunk'Unchecked_Access);
+       Res : constant Integer :=
+         OS.Write (S.FD, S.Cur_Chunk.Chars'Address, S.Last);
+    begin
+       if Res /= S.Last then
+          raise Program_Error with OS.Errno_Message;
+       end if;
+       S.Last := 0;
+    end Flush_Method;
+ 
+    The_Stdout : aliased File :=
+      Create_From_FD (OS.Standout,
+                      Indent_Amount => Default_Indent_Amount,
+                      Chunk_Length => Default_Chunk_Length);
+    The_Stderr : aliased File :=
+      Create_From_FD (OS.Standerr,
+                      Indent_Amount => Default_Indent_Amount,
+                      Chunk_Length => Default_Chunk_Length);
+ 
+    function Standard_Output return Sink_Access is (The_Stdout'Access);
+    function Standard_Error return Sink_Access is (The_Stderr'Access);
+ 
+ end Ada.Strings.Text_Output.Files;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stoufi.ads gcc-11.1.0/gcc/ada/libgnat/a-stoufi.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stoufi.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-stoufi.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,72 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       ADA.STRINGS.TEXT_OUTPUT.FILES                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ private with GNAT.OS_Lib;
+ private with Ada.Finalization;
+ package Ada.Strings.Text_Output.Files is
+    --  This package supports a Sink type that sends output to a file. The file
+    --  is automatically closed when finalized.
+ 
+    function Standard_Output return Sink_Access;
+    function Standard_Error return Sink_Access;
+ 
+    type File (<>) is new Sink with private;
+ 
+    function Create_File
+      (Name : String;
+       Indent_Amount : Natural := Default_Indent_Amount;
+       Chunk_Length : Positive := Default_Chunk_Length) return File;
+    function Create_New_File
+      (Name : String;
+       Indent_Amount : Natural := Default_Indent_Amount;
+       Chunk_Length : Positive := Default_Chunk_Length) return File;
+    --  Create a file. Create_New_File raises an exception if the file already
+    --  exists; Create_File overwrites.
+ 
+    procedure Close (S : in out File'Class);
+ 
+ private
+ 
+    package OS renames GNAT.OS_Lib;
+ 
+    type Self_Ref (Self : access File) is new Finalization.Limited_Controlled
+      with null record;
+    overriding procedure Finalize (Ref : in out Self_Ref);
+ 
+    type File is new Sink with record
+       FD : OS.File_Descriptor := OS.Invalid_FD;
+       Ref : Self_Ref (File'Access);
+    end record;
+ 
+    overriding procedure Full_Method (S : in out File);
+    overriding procedure Flush_Method (S : in out File);
+ 
+ end Ada.Strings.Text_Output.Files;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stoufo.adb gcc-11.1.0/gcc/ada/libgnat/a-stoufo.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stoufo.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-stoufo.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,155 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                    ADA.STRINGS.TEXT_OUTPUT.FORMATTING                    --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Strings.Text_Output.Files;
+ with Ada.Strings.Text_Output.Buffers; use Ada.Strings.Text_Output.Buffers;
+ with Ada.Strings.Text_Output.Utils; use Ada.Strings.Text_Output.Utils;
+ package body Ada.Strings.Text_Output.Formatting is
+ 
+    procedure Put
+      (S : in out Sink'Class; T : Template;
+       X1, X2, X3, X4, X5, X6, X7, X8, X9 : UTF_8_Lines := "")
+    is
+       J : Positive := T'First;
+       Used : array (1 .. 9) of Boolean := (others => False);
+    begin
+       while J <= T'Last loop
+          if T (J) = '\' then
+             J := J + 1;
+             case T (J) is
+                when 'n' =>
+                   New_Line (S);
+                when '\' =>
+                   Put_7bit (S, '\');
+                when 'i' =>
+                   Indent (S);
+                when 'o' =>
+                   Outdent (S);
+                when 'I' =>
+                   Indent (S, 1);
+                when 'O' =>
+                   Outdent (S, 1);
+ 
+                when '1' =>
+                   Used (1) := True;
+                   Put_UTF_8_Lines (S, X1);
+                when '2' =>
+                   Used (2) := True;
+                   Put_UTF_8_Lines (S, X2);
+                when '3' =>
+                   Used (3) := True;
+                   Put_UTF_8_Lines (S, X3);
+                when '4' =>
+                   Used (4) := True;
+                   Put_UTF_8_Lines (S, X4);
+                when '5' =>
+                   Used (5) := True;
+                   Put_UTF_8_Lines (S, X5);
+                when '6' =>
+                   Used (6) := True;
+                   Put_UTF_8_Lines (S, X6);
+                when '7' =>
+                   Used (7) := True;
+                   Put_UTF_8_Lines (S, X7);
+                when '8' =>
+                   Used (8) := True;
+                   Put_UTF_8_Lines (S, X8);
+                when '9' =>
+                   Used (9) := True;
+                   Put_UTF_8_Lines (S, X9);
+ 
+                when others =>
+                   raise Program_Error;
+             end case;
+          else
+             Put_7bit (S, T (J));
+          end if;
+ 
+          J := J + 1;
+       end loop;
+ 
+       if not Used (1) then
+          pragma Assert (X1 = "");
+       end if;
+       if not Used (2) then
+          pragma Assert (X2 = "");
+       end if;
+       if not Used (3) then
+          pragma Assert (X3 = "");
+       end if;
+       if not Used (4) then
+          pragma Assert (X4 = "");
+       end if;
+       if not Used (5) then
+          pragma Assert (X5 = "");
+       end if;
+       if not Used (6) then
+          pragma Assert (X6 = "");
+       end if;
+       if not Used (7) then
+          pragma Assert (X7 = "");
+       end if;
+       if not Used (8) then
+          pragma Assert (X8 = "");
+       end if;
+       if not Used (9) then
+          pragma Assert (X9 = "");
+       end if;
+ 
+       Flush (S);
+    end Put;
+ 
+    procedure Put
+      (T : Template;
+       X1, X2, X3, X4, X5, X6, X7, X8, X9 : UTF_8_Lines := "") is
+    begin
+       Put (Files.Standard_Output.all, T, X1, X2, X3, X4, X5, X6, X7, X8, X9);
+    end Put;
+ 
+    procedure Err
+      (T : Template;
+       X1, X2, X3, X4, X5, X6, X7, X8, X9 : UTF_8_Lines := "") is
+    begin
+       Put (Files.Standard_Error.all, T, X1, X2, X3, X4, X5, X6, X7, X8, X9);
+    end Err;
+ 
+    function Format
+      (T : Template;
+       X1, X2, X3, X4, X5, X6, X7, X8, X9 : UTF_8_Lines := "")
+      return UTF_8_Lines
+    is
+       Buf : Buffer := New_Buffer;
+    begin
+       Put (Buf, T, X1, X2, X3, X4, X5, X6, X7, X8, X9);
+       return Get_UTF_8 (Buf);
+    end Format;
+ 
+ end Ada.Strings.Text_Output.Formatting;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stoufo.ads gcc-11.1.0/gcc/ada/libgnat/a-stoufo.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stoufo.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-stoufo.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,72 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                    ADA.STRINGS.TEXT_OUTPUT.FORMATTING                    --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package Ada.Strings.Text_Output.Formatting is
+ 
+    --  Template-based output, based loosely on C's printf family. Unlike
+    --  printf, it is type safe. We don't support myriad formatting options; the
+    --  caller is expected to call 'Image, or other functions that might have
+    --  various formatting capabilities.
+    --
+    --  Each of the following calls Flush
+ 
+    type Template is new UTF_8;
+    procedure Put
+      (S : in out Sink'Class; T : Template;
+       X1, X2, X3, X4, X5, X6, X7, X8, X9 : UTF_8_Lines := "");
+    --  Prints the template as is, except for the following escape sequences:
+    --    "\n" is end of line.
+    --    "\i" indents by the default amount, and "\o" outdents.
+    --    "\I" indents by one space, and "\O" outdents.
+    --    "\1" is replaced with X1, and similarly for 2, 3, ....
+    --    "\\" is "\".
+ 
+    --  Note that the template is not type String, to avoid this sort of thing:
+    --
+    --      https://xkcd.com/327/
+ 
+    procedure Put
+      (T : Template;
+       X1, X2, X3, X4, X5, X6, X7, X8, X9 : UTF_8_Lines := "");
+    --  Sends to standard output
+ 
+    procedure Err
+      (T : Template;
+       X1, X2, X3, X4, X5, X6, X7, X8, X9 : UTF_8_Lines := "");
+    --  Sends to standard error
+ 
+    function Format
+      (T : Template;
+       X1, X2, X3, X4, X5, X6, X7, X8, X9 : UTF_8_Lines := "")
+      return UTF_8_Lines;
+    --  Returns a UTF-8-encoded String
+ 
+ end Ada.Strings.Text_Output.Formatting;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stouut.adb gcc-11.1.0/gcc/ada/libgnat/a-stouut.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stouut.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-stouut.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,272 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       ADA.STRINGS.TEXT_OUTPUT.UTILS                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Strings.UTF_Encoding.Wide_Wide_Strings;
+ 
+ package body Ada.Strings.Text_Output.Utils is
+ 
+    procedure Put_Octet (S : in out Sink'Class; Item : Character) with Inline;
+    --  Send a single octet to the current Chunk
+ 
+    procedure Adjust_Column (S : in out Sink'Class) with Inline;
+    --  Adjust the column for a non-NL character.
+ 
+    procedure Put_UTF_8_Outline (S : in out Sink'Class; Item : UTF_8);
+    --  Out-of-line portion of Put_UTF_8. This exists solely to make Put_UTF_8
+    --  small enough to reasonably inline it.
+ 
+    procedure Full (S : in out Sink'Class) is
+    begin
+       pragma Assert (S.Last = S.Chunk_Length);
+       Full_Method (S);
+       pragma Assert (S.Last = 0);
+    end Full;
+ 
+    procedure Flush (S : in out Sink'Class) is
+    begin
+       Flush_Method (S);
+    end Flush;
+ 
+    procedure Put_Octet (S : in out Sink'Class; Item : Character) is
+    begin
+       S.Last := @ + 1;
+       S.Cur_Chunk.Chars (S.Last) := Item;
+       pragma Assert (S.Chunk_Length = S.Cur_Chunk.Chars'Length);
+       if S.Last = S.Chunk_Length then
+          Full (S);
+       end if;
+    end Put_Octet;
+ 
+    procedure Adjust_Column (S : in out Sink'Class) is
+    begin
+       --  If we're in the first column, indent. This is handled here, rather
+       --  than when we see NL, because we don't want spaces in a blank line.
+       --  The character we're about to put is not NL; NL is handled in
+       --  New_Line. So after indenting, we simply increment the Column.
+ 
+       if S.Column = 1 then
+          Tab_To_Column (S, S.Indentation + 1);
+       end if;
+       S.Column := @ + 1;
+    end Adjust_Column;
+ 
+    procedure Put_7bit (S : in out Sink'Class; Item : Character_7) is
+    begin
+       Adjust_Column (S);
+       Put_Octet (S, Item);
+    end Put_7bit;
+ 
+    procedure Put_7bit_NL (S : in out Sink'Class; Item : Character_7) is
+    begin
+       if Item = NL then
+          New_Line (S);
+       else
+          Put_7bit (S, Item);
+       end if;
+    end Put_7bit_NL;
+ 
+    procedure Put_Character (S : in out Sink'Class; Item : Character) is
+    begin
+       if Character'Pos (Item) < 2**7 then
+          Put_7bit_NL (S, Item);
+       else
+          Put_Wide_Wide_Character (S, To_Wide_Wide (Item));
+       end if;
+    end Put_Character;
+ 
+    procedure Put_Wide_Character
+      (S : in out Sink'Class; Item : Wide_Character) is
+    begin
+       if Wide_Character'Pos (Item) < 2**7 then
+          Put_7bit_NL (S, From_Wide (Item));
+       else
+          Put_Wide_Wide_Character (S, To_Wide_Wide (Item));
+       end if;
+    end Put_Wide_Character;
+ 
+    procedure Put_Wide_Wide_Character
+      (S : in out Sink'Class; Item : Wide_Wide_Character) is
+    begin
+       if Wide_Wide_Character'Pos (Item) < 2**7 then
+          Put_7bit_NL (S, From_Wide_Wide (Item));
+       else
+          S.All_7_Bits := False;
+          if Wide_Wide_Character'Pos (Item) >= 2**8 then
+             S.All_8_Bits := False;
+          end if;
+          declare
+             Temp : constant UTF_8_Lines :=
+               UTF_Encoding.Wide_Wide_Strings.Encode ((1 => Item));
+          begin
+             for X of Temp loop
+                pragma Assert (X /= NL);
+                Adjust_Column (S);
+                Put_Octet (S, X);
+             end loop;
+          end;
+       end if;
+    end Put_Wide_Wide_Character;
+ 
+    procedure Put_UTF_8_Outline (S : in out Sink'Class; Item : UTF_8) is
+    begin
+       if S.Last + Item'Length = S.Chunk_Length then
+          --  Item fits exactly in current chunk
+ 
+          S.Cur_Chunk.Chars (S.Last + 1 .. S.Last + Item'Length) := Item;
+          S.Last := S.Last + Item'Length;
+          S.Column := S.Column + Item'Length;
+          Full (S);
+          --  ???Seems like maybe we shouldn't call Full until we have MORE
+          --  characters. But then we can't pass Chunk_Length => 1 to
+          --  Create_File to get unbuffered output.
+       else
+          --  We get here only if Item doesn't fit in the current chunk, which
+          --  should be fairly rare. We split Item into Left and Right, where
+          --  Left exactly fills the current chunk, and recurse on Left and
+          --  Right. Right will fit into the next chunk unless it's very long,
+          --  so another level of recursion will be extremely rare.
+ 
+          declare
+             Left_Length : constant Natural := S.Chunk_Length - S.Last;
+             Right_First : constant Natural := Item'First + Left_Length;
+             Left : UTF_8 renames Item (Item'First .. Right_First - 1);
+             Right : UTF_8 renames Item (Right_First .. Item'Last);
+             pragma Assert (Left & Right = Item);
+          begin
+             Put_UTF_8 (S, Left); -- This will call Full.
+             Put_UTF_8 (S, Right); -- This might call Full, but probably not.
+          end;
+       end if;
+    end Put_UTF_8_Outline;
+ 
+    procedure Put_UTF_8 (S : in out Sink'Class; Item : UTF_8) is
+    begin
+       Adjust_Column (S);
+ 
+       if S.Last + Item'Length < S.Chunk_Length then
+          --  Item fits in current chunk
+ 
+          S.Cur_Chunk.Chars (S.Last + 1 .. S.Last + Item'Length) := Item;
+          S.Last := S.Last + Item'Length;
+          S.Column := S.Column + Item'Length;
+       else
+          Put_UTF_8_Outline (S, Item);
+       end if;
+    end Put_UTF_8;
+ 
+    procedure Put_UTF_8_Lines (S : in out Sink'Class; Item : UTF_8_Lines) is
+       Line_Start, Index : Integer := Item'First;
+       --  Needs to be Integer, because Item'First might be negative for empty
+       --  Items.
+    begin
+       while Index <= Item'Last loop
+          if Item (Index) = NL then
+             if Index > Line_Start then
+                Put_UTF_8 (S, Item (Line_Start .. Index - 1));
+             end if;
+             New_Line (S);
+             Line_Start := Index + 1;
+          end if;
+ 
+          Index := @ + 1;
+       end loop;
+ 
+       if Index > Line_Start then
+          Put_UTF_8 (S, Item (Line_Start .. Index - 1));
+       end if;
+    end Put_UTF_8_Lines;
+ 
+    procedure Put_String (S : in out Sink'Class; Item : String) is
+    begin
+       for X of Item loop
+          Put_Character (S, X);
+       end loop;
+    end Put_String;
+ 
+    procedure Put_Wide_String (S : in out Sink'Class; Item : Wide_String) is
+    begin
+       for X of Item loop
+          Put_Wide_Character (S, X);
+       end loop;
+    end Put_Wide_String;
+ 
+    procedure Put_Wide_Wide_String
+      (S : in out Sink'Class; Item : Wide_Wide_String) is
+    begin
+       for X of Item loop
+          Put_Wide_Wide_Character (S, X);
+       end loop;
+    end Put_Wide_Wide_String;
+ 
+    procedure New_Line (S : in out Sink'Class) is
+    begin
+       S.Column := 1;
+       Put_Octet (S, NL);
+    end New_Line;
+ 
+    function Column (S : Sink'Class) return Positive is (S.Column);
+ 
+    procedure Tab_To_Column (S : in out Sink'Class; Column : Positive) is
+    begin
+       if S.Column < Column then
+          for X in 1 .. Column - S.Column loop
+             Put_Octet (S, ' ');
+          end loop;
+          S.Column := Column;
+       end if;
+    end Tab_To_Column;
+ 
+    procedure Set_Indentation (S : in out Sink'Class; Amount : Natural) is
+    begin
+       S.Indentation := Amount;
+    end Set_Indentation;
+ 
+    function Indentation (S : Sink'Class) return Natural is (S.Indentation);
+ 
+    procedure Indent
+      (S : in out Sink'Class; Amount : Optional_Indentation := Default)
+    is
+       By : constant Natural :=
+         (if Amount = Default then S.Indent_Amount else Amount);
+    begin
+       Set_Indentation (S, Indentation (S) + By);
+    end Indent;
+ 
+    procedure Outdent
+      (S : in out Sink'Class; Amount : Optional_Indentation := Default)
+    is
+       By : constant Natural :=
+         (if Amount = Default then S.Indent_Amount else Amount);
+    begin
+       Set_Indentation (S, Indentation (S) - By);
+    end Outdent;
+ 
+ end Ada.Strings.Text_Output.Utils;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stouut.ads gcc-11.1.0/gcc/ada/libgnat/a-stouut.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stouut.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-stouut.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,107 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       ADA.STRINGS.TEXT_OUTPUT.UTILS                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package Ada.Strings.Text_Output.Utils with Pure is
+ 
+    --  This package provides utility functions on Sink'Class. These are
+    --  intended for use by Put_Image attributes, both the default versions
+    --  generated by the compiler, and user-defined ones.
+ 
+    procedure Full (S : in out Sink'Class) with Inline;
+    --  Must be called when the current chunk is full. Dispatches to
+    --  Full_Method.
+ 
+    procedure Flush (S : in out Sink'Class) with Inline;
+    --  Dispatches to Flush_Method
+ 
+    --  Full_Method and Flush_Method should be called only via Full and Flush
+ 
+    procedure Put_Character (S : in out Sink'Class; Item : Character);
+    procedure Put_Wide_Character (S : in out Sink'Class; Item : Wide_Character);
+    procedure Put_Wide_Wide_Character
+      (S : in out Sink'Class; Item : Wide_Wide_Character);
+    procedure Put_String (S : in out Sink'Class; Item : String);
+    procedure Put_Wide_String (S : in out Sink'Class; Item : Wide_String);
+    procedure Put_Wide_Wide_String
+      (S : in out Sink'Class; Item : Wide_Wide_String);
+    --  Encode characters or strings as UTF-8, and send them to S.
+ 
+    subtype Character_7 is
+      Character range Character'Val (0) .. Character'Val (2**7 - 1);
+    --  7-bit character. These are the same in both Latin-1 and UTF-8.
+ 
+    procedure Put_7bit (S : in out Sink'Class; Item : Character_7)
+      with Inline, Pre => Item /= NL;
+    procedure Put_7bit_NL (S : in out Sink'Class; Item : Character_7)
+      with Inline;
+    --  Put a 7-bit character, and adjust the Column. For Put_7bit_NL, Item can
+    --  be NL.
+ 
+    procedure Put_UTF_8 (S : in out Sink'Class; Item : UTF_8) with Inline;
+    procedure Put_UTF_8_Lines (S : in out Sink'Class; Item : UTF_8_Lines);
+    --  Send data that is already UTF-8 encoded (including 7-bit ASCII) to
+    --  S. These are more efficient than Put_String.
+ 
+    procedure New_Line (S : in out Sink'Class) with
+      Inline, Post => Column (S) = 1;
+    --  Puts the new-line character.
+ 
+    function Column (S : Sink'Class) return Positive with Inline;
+    --  Current output column. The Column is initially 1, and is incremented for
+    --  each 7-bit character output, except for the new-line character, which
+    --  sets Column back to 1. The next character to be output will go in this
+    --  column.
+ 
+    procedure Tab_To_Column (S : in out Sink'Class; Column : Positive);
+    --  Put spaces until we're at or past Column.
+ 
+    procedure Set_Indentation (S : in out Sink'Class; Amount : Natural)
+      with Inline;
+    function Indentation (S : Sink'Class) return Natural with Inline;
+    --  Indentation is initially 0. Set_Indentation sets it, and Indentation
+    --  returns it. This number of space characters are put at the start of
+    --  each nonempty line.
+ 
+    subtype Optional_Indentation is Integer range -1 .. Natural'Last;
+    Default : constant Optional_Indentation := -1;
+ 
+    procedure Indent
+      (S : in out Sink'Class; Amount : Optional_Indentation := Default)
+       with Inline;
+    procedure Outdent
+      (S : in out Sink'Class; Amount : Optional_Indentation := Default)
+       with Inline;
+    --  Increase/decrease Indentation by Amount. If Amount = Default, the amount
+    --  specified by the Indent_Amount parameter of the sink creation function
+    --  is used. The sink creation functions are New_Buffer, Create_File, and
+    --  Create_New_File.
+ 
+ end Ada.Strings.Text_Output.Utils;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-strbou.adb gcc-11.1.0/gcc/ada/libgnat/a-strbou.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-strbou.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-strbou.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-strbou.ads gcc-11.1.0/gcc/ada/libgnat/a-strbou.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-strbou.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-strbou.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stream.adb gcc-11.1.0/gcc/ada/libgnat/a-stream.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stream.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stream.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2013-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2013-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stream.ads gcc-11.1.0/gcc/ada/libgnat/a-stream.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stream.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stream.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-strfix.adb gcc-11.1.0/gcc/ada/libgnat/a-strfix.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-strfix.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-strfix.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Strings.Fixed is
*** 192,197 ****
--- 192,201 ----
        elsif From not in Source'Range
          or else Through > Source'Last
        then
+          pragma Annotate
+            (CodePeer, False_Positive,
+             "test always false", "self fullfilling prophecy");
+ 
           --  In most cases this raises an exception, but the case of deleting
           --  a null string at the end of the current one is a special-case, and
           --  reflects the equivalence with Replace_String (RM A.4.3 (86/3)).
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-strfix.ads gcc-11.1.0/gcc/ada/libgnat/a-strfix.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-strfix.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-strfix.ads	Tue Apr 27 10:00:12 2021
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 108,117 ****
        Going   : Direction := Forward;
        Mapping : Maps.Character_Mapping_Function) return Natural
     with
!      Pre    =>
         Pattern'Length /= 0
           and then (if Source'Length /= 0 then From in Source'Range),
!      Global => null;
     pragma Ada_05 (Index);
  
     function Index
--- 108,164 ----
        Going   : Direction := Forward;
        Mapping : Maps.Character_Mapping_Function) return Natural
     with
!      Pre            =>
         Pattern'Length /= 0
           and then (if Source'Length /= 0 then From in Source'Range),
! 
!      Post           => Index'Result in 0 | Source'Range,
!      Contract_Cases =>
! 
!         --  If no slice in the considered range of Source matches Pattern,
!         --  then 0 is returned.
! 
!        ((for all J in Source'Range =>
!            (if (if Going = Forward
!                 then J in From .. Source'Last - Pattern'Length + 1
!                 else J <= From - Pattern'Length + 1)
!             then Translate (Source (J .. J - 1 + Pattern'Length), Mapping)
!                  /= Pattern))
!         =>
!           Index'Result = 0,
! 
!         --  Otherwise, a valid index is returned
! 
!         others
!         =>
! 
!           --  The result is in the considered range of Source
! 
!           (if Going = Forward
!            then Index'Result in From .. Source'Last - Pattern'Length + 1
!            else Index'Result in Source'First .. From - Pattern'Length + 1)
! 
!             --  The slice beginning at the returned index matches Pattern
! 
!             and then
!               Translate (Source (Index'Result
!                                  .. Index'Result - 1 + Pattern'Length),
!                          Mapping)
!               = Pattern
! 
!             --  The result is the smallest or largest index which satisfies the
!             --  matching, respectively when Going = Forward and
!             --  Going = Backwards.
! 
!             and then
!               (for all J in Source'Range =>
!                  (if (if Going = Forward
!                       then J in From .. Index'Result - 1
!                       else J - 1 in Index'Result .. From - Pattern'Length)
!                   then Translate (Source (J .. J - 1 + Pattern'Length),
!                                   Mapping)
!                        /= Pattern))),
!      Global         => null;
     pragma Ada_05 (Index);
  
     function Index
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 121,130 ****
        Going   : Direction := Forward;
        Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
     with
!      Pre    =>
         Pattern'Length /= 0
           and then (if Source'Length /= 0 then From in Source'Range),
!      Global => null;
     pragma Ada_05 (Index);
  
     --  Each Index function searches, starting from From, for a slice of
--- 168,224 ----
        Going   : Direction := Forward;
        Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
     with
!      Pre            =>
         Pattern'Length /= 0
           and then (if Source'Length /= 0 then From in Source'Range),
! 
!      Post           => Index'Result in 0 | Source'Range,
!      Contract_Cases =>
! 
!         --  If no slice in the considered range of Source matches Pattern,
!         --  then 0 is returned.
! 
!        ((for all J in Source'Range =>
!            (if (if Going = Forward
!                 then J in From .. Source'Last - Pattern'Length + 1
!                 else J <= From - Pattern'Length + 1)
!             then Translate (Source (J .. J - 1 + Pattern'Length), Mapping)
!                  /= Pattern))
!         =>
!           Index'Result = 0,
! 
!         --  Otherwise, a valid index is returned
! 
!         others
!         =>
! 
!           --  The result is in the considered range of Source
! 
!           (if Going = Forward
!            then Index'Result in From .. Source'Last - Pattern'Length + 1
!            else Index'Result in Source'First .. From - Pattern'Length + 1)
! 
!             --  The slice beginning at the returned index matches Pattern
! 
!             and then
!               Translate (Source (Index'Result
!                                  .. Index'Result - 1 + Pattern'Length),
!                          Mapping)
!               = Pattern
! 
!             --  The result is the smallest or largest index which satisfies the
!             --  matching, respectively when Going = Forward and
!             --  Going = Backwards.
! 
!             and then
!               (for all J in Source'Range =>
!                  (if (if Going = Forward
!                       then J in From .. Index'Result - 1
!                       else J - 1 in Index'Result .. From - Pattern'Length)
!                   then Translate (Source (J .. J - 1 + Pattern'Length),
!                                   Mapping)
!                        /= Pattern))),
!      Global         => null;
     pragma Ada_05 (Index);
  
     --  Each Index function searches, starting from From, for a slice of
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 146,153 ****
        Going   : Direction := Forward;
        Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
     with
!      Pre    => Pattern'Length > 0,
!      Global => null;
  
     function Index
       (Source  : String;
--- 240,292 ----
        Going   : Direction := Forward;
        Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
     with
!      Pre            => Pattern'Length > 0,
! 
!      Post           => Index'Result in 0 | Source'Range,
!      Contract_Cases =>
! 
!         --  If Source is empty, or if no slice of Source matches Pattern, then
!         --  0 is returned.
! 
!        (Source'Length = 0
!           or else
!             (for all J in Source'First .. Source'Last - Pattern'Length + 1 =>
!                Translate (Source (J .. J - 1 + Pattern'Length), Mapping)
!                /= Pattern)
!         =>
!           Index'Result = 0,
! 
!         --  Otherwise, a valid index is returned
! 
!         others
!         =>
! 
!           --  The result is in the considered range of Source
! 
!           Index'Result in Source'First .. Source'Last - Pattern'Length + 1
! 
!             --  The slice beginning at the returned index matches Pattern
! 
!             and then
!               Translate (Source (Index'Result
!                                  .. Index'Result - 1 + Pattern'Length),
!                          Mapping)
!               = Pattern
! 
!             --  The result is the smallest or largest index which satisfies the
!             --  matching, respectively when Going = Forward and
!             --  Going = Backwards.
! 
!             and then
!               (for all J in Source'Range =>
!                  (if (if Going = Forward
!                       then J <= Index'Result - 1
!                       else J - 1 in Index'Result
!                                     .. Source'Last - Pattern'Length)
!                   then Translate (Source (J .. J - 1 + Pattern'Length),
!                                   Mapping)
!                        /= Pattern))),
!      Global         => null;
  
     function Index
       (Source  : String;
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 155,162 ****
        Going   : Direction := Forward;
        Mapping : Maps.Character_Mapping_Function) return Natural
     with
!      Pre    => Pattern'Length /= 0,
!      Global => null;
  
     --  If Going = Forward, returns:
     --
--- 294,346 ----
        Going   : Direction := Forward;
        Mapping : Maps.Character_Mapping_Function) return Natural
     with
!      Pre            => Pattern'Length > 0,
! 
!      Post           => Index'Result in 0 | Source'Range,
!      Contract_Cases =>
! 
!         --  If Source is empty, or if no slice of Source matches Pattern, then
!         --  0 is returned.
! 
!        (Source'Length = 0
!           or else
!             (for all J in Source'First .. Source'Last - Pattern'Length + 1 =>
!                Translate (Source (J .. J - 1 + Pattern'Length), Mapping)
!                /= Pattern)
!         =>
!           Index'Result = 0,
! 
!         --  Otherwise, a valid index is returned
! 
!         others
!         =>
! 
!           --  The result is in the considered range of Source
! 
!           Index'Result in Source'First .. Source'Last - Pattern'Length + 1
! 
!             --  The slice beginning at the returned index matches Pattern
! 
!             and then
!               Translate (Source (Index'Result
!                                  .. Index'Result - 1 + Pattern'Length),
!                          Mapping)
!               = Pattern
! 
!             --  The result is the smallest or largest index which satisfies the
!             --  matching, respectively when Going = Forward and
!             --  Going = Backwards.
! 
!             and then
!               (for all J in Source'Range =>
!                  (if (if Going = Forward
!                       then J <= Index'Result - 1
!                       else J - 1 in Index'Result
!                                     .. Source'Last - Pattern'Length)
!                   then Translate (Source (J .. J - 1 + Pattern'Length),
!                                   Mapping)
!                        /= Pattern))),
!      Global         => null;
  
     --  If Going = Forward, returns:
     --
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 172,178 ****
        Test   : Membership := Inside;
        Going  : Direction  := Forward) return Natural
     with
!      Global => null;
  
     function Index
       (Source  : String;
--- 356,399 ----
        Test   : Membership := Inside;
        Going  : Direction  := Forward) return Natural
     with
!      Post           => Index'Result in 0 | Source'Range,
!      Contract_Cases =>
! 
!         --  If no character of Source satisfies the property Test on Set, then
!         --  0 is returned.
! 
!        ((for all C of Source =>
!            (Test = Inside) /= Ada.Strings.Maps.Is_In (C, Set))
!         =>
!           Index'Result = 0,
! 
!         --  Otherwise, a index in the range of Source is returned
! 
!         others
!         =>
! 
!           --  The result is in the range of Source
! 
!           Index'Result in Source'Range
! 
!             --  The character at the returned index satisfies the property
!             --  Test on Set
! 
!             and then
!               (Test = Inside)
!               = Ada.Strings.Maps.Is_In (Source (Index'Result), Set)
! 
!             --  The result is the smallest or largest index which satisfies the
!             --  property, respectively when Going = Forward and
!             --  Going = Backwards.
! 
!             and then
!               (for all J in Source'Range =>
!                  (if J /= Index'Result
!                        and then (J < Index'Result) = (Going = Forward)
!                   then (Test = Inside)
!                        /= Ada.Strings.Maps.Is_In (Source (J), Set)))),
!      Global         => null;
  
     function Index
       (Source  : String;
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 181,188 ****
        Test    : Membership := Inside;
        Going   : Direction := Forward) return Natural
     with
!      Pre    => (if Source'Length /= 0 then From in Source'Range),
!      Global => null;
     pragma Ada_05 (Index);
     --  Index searches for the first or last occurrence of any of a set of
     --  characters (when Test=Inside), or any of the complement of a set of
--- 402,454 ----
        Test    : Membership := Inside;
        Going   : Direction := Forward) return Natural
     with
!      Pre            => (if Source'Length /= 0 then From in Source'Range),
! 
!      Post           => Index'Result in 0 | Source'Range,
!      Contract_Cases =>
! 
!         --  If no character in the considered slice of Source satisfies the
!         --  property Test on Set, then 0 is returned.
! 
!        ((for all I in Source'Range =>
!            (if I = From
!                  or else (I > From) = (Going = Forward)
!             then (Test = Inside) /= Ada.Strings.Maps.Is_In (Source (I), Set)))
!         =>
!           Index'Result = 0,
! 
!         --  Otherwise, an index in the range of Source is returned
! 
!         others
!         =>
! 
!           --  The result is in the considered range of Source
! 
!           Index'Result in Source'Range
!             and then (Index'Result = From
!                         or else (Index'Result > From) = (Going = Forward))
! 
!             --  The character at the returned index satisfies the property
!             --  Test on Set.
! 
!             and then
!               (Test = Inside)
!               = Ada.Strings.Maps.Is_In (Source (Index'Result), Set)
! 
!             --  The result is the smallest or largest index which satisfies the
!             --  property, respectively when Going = Forward and
!             --  Going = Backwards.
! 
!             and then
!               (for all J in Source'Range =>
!                  (if J /= Index'Result
!                        and then (J < Index'Result) = (Going = Forward)
!                        and then (J = From
!                                    or else (J > From) = (Going = Forward))
!                   then
!                     (Test = Inside)
!                     /= Ada.Strings.Maps.Is_In (Source (J), Set)))),
!      Global         => null;
     pragma Ada_05 (Index);
     --  Index searches for the first or last occurrence of any of a set of
     --  characters (when Test=Inside), or any of the complement of a set of
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 198,205 ****
        From   : Positive;
        Going  : Direction := Forward) return Natural
     with
!      Pre   => (if Source'Length /= 0 then From in Source'Range),
!      Global => null;
     pragma Ada_05 (Index_Non_Blank);
     --  Returns Index (Source, Maps.To_Set(Space), From, Outside, Going)
  
--- 464,512 ----
        From   : Positive;
        Going  : Direction := Forward) return Natural
     with
!      Pre            => (if Source'Length /= 0 then From in Source'Range),
! 
!      Post           => Index_Non_Blank'Result in 0 | Source'Range,
!      Contract_Cases =>
! 
!         --  If all characters in the considered slice of Source are Space
!         --  characters, then 0 is returned.
! 
!        ((for all J in Source'Range =>
!            (if J = From or else (J > From) = (Going = Forward)
!             then Source (J) = ' '))
!         =>
!           Index_Non_Blank'Result = 0,
! 
!         --  Otherwise, a valid index is returned
! 
!         others
!         =>
! 
!           --  The result is in the considered range of Source
! 
!           Index_Non_Blank'Result in Source'Range
!             and then (Index_Non_Blank'Result = From
!                         or else (Index_Non_Blank'Result > From)
!                                 = (Going = Forward))
! 
!             --  The character at the returned index is not a Space character
! 
!             and then Source (Index_Non_Blank'Result) /= ' '
! 
!             --  The result is the smallest or largest index which is not a
!             --  Space character, respectively when Going = Forward and
!             --  Going = Backwards.
! 
!             and then
!               (for all J in Source'Range =>
!                  (if J /= Index_Non_Blank'Result
!                        and then (J < Index_Non_Blank'Result)
!                                 = (Going = Forward)
!                        and then (J = From or else (J > From)
!                                 = (Going = Forward))
!                   then Source (J) = ' '))),
!      Global         => null;
     pragma Ada_05 (Index_Non_Blank);
     --  Returns Index (Source, Maps.To_Set(Space), From, Outside, Going)
  
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 207,213 ****
       (Source : String;
        Going  : Direction := Forward) return Natural
     with
!      Global => null;
     --  Returns Index (Source, Maps.To_Set(Space), Outside, Going)
  
     function Count
--- 514,550 ----
       (Source : String;
        Going  : Direction := Forward) return Natural
     with
!      Post           => Index_Non_Blank'Result in 0 | Source'Range,
!      Contract_Cases =>
! 
!         --  If all characters of Source are Space characters, then 0 is
!         --  returned.
! 
!        ((for all C of Source => C = ' ') => Index_Non_Blank'Result = 0,
! 
!         --  Otherwise, a valid index is returned
! 
!         others                           =>
! 
!           --  The result is in the range of Source
! 
!           Index_Non_Blank'Result in Source'Range
! 
!             --  The character at the returned index is not a Space character
! 
!             and then Source (Index_Non_Blank'Result) /= ' '
! 
!             --  The result is the smallest or largest index which is not a
!             --  Space character, respectively when Going = Forward and
!             --  Going = Backwards.
! 
!             and then
!               (for all J in Source'Range =>
!                  (if J /= Index_Non_Blank'Result
!                        and then (J < Index_Non_Blank'Result)
!                               = (Going = Forward)
!                   then Source (J) = ' '))),
!      Global         => null;
     --  Returns Index (Source, Maps.To_Set(Space), Outside, Going)
  
     function Count
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 246,253 ****
        First  : out Positive;
        Last   : out Natural)
     with
!      Pre    => (if Source'Length /= 0 then From in Source'Range),
!      Global => null;
     pragma Ada_2012 (Find_Token);
     --  If Source is not the null string and From is not in Source'Range, then
     --  Index_Error is raised. Otherwise, First is set to the index of the first
--- 583,635 ----
        First  : out Positive;
        Last   : out Natural)
     with
!      Pre            => (if Source'Length /= 0 then From in Source'Range),
!      Contract_Cases =>
! 
!         --  If Source is the empty string, or if no character of the considered
!         --  slice of Source satisfies the property Test on Set, then First is
!         --  set to From and Last is set to 0.
! 
!        (Source'Length = 0
!           or else
!             (for all C of Source (From .. Source'Last) =>
!                (Test = Inside) /= Ada.Strings.Maps.Is_In (C, Set))
!         =>
!           First = From and then Last = 0,
! 
!         --  Otherwise, First and Last are set to valid indexes
! 
!         others
!         =>
! 
!           --  First and Last are in the considered range of Source
! 
!           First in From .. Source'Last
!             and then Last in First .. Source'Last
! 
!             --  No character between From and First satisfies the property Test
!             --  on Set.
! 
!             and then
!               (for all C of Source (From .. First - 1) =>
!                  (Test = Inside) /= Ada.Strings.Maps.Is_In (C, Set))
! 
!             --  All characters between First and Last satisfy the property Test
!             --  on Set.
! 
!             and then
!               (for all C of Source (First .. Last) =>
!                  (Test = Inside) = Ada.Strings.Maps.Is_In (C, Set))
! 
!             --  If Last is not Source'Last, then the character at position
!             --  Last + 1 does not satify the property Test on Set.
! 
!             and then
!               (if Last < Source'Last
!                then
!                  (Test = Inside)
!                  /= Ada.Strings.Maps.Is_In (Source (Last + 1), Set))),
!      Global         => null;
     pragma Ada_2012 (Find_Token);
     --  If Source is not the null string and From is not in Source'Range, then
     --  Index_Error is raised. Otherwise, First is set to the index of the first
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 264,269 ****
--- 646,695 ----
        First  : out Positive;
        Last   : out Natural)
     with
+      Contract_Cases =>
+ 
+         --  If Source is the empty string, or if no character of Source
+         --  satisfies the property Test on Set, then First is set to From and
+         --  Last is set to 0.
+ 
+        (Source'Length = 0
+           or else
+             (for all C of Source =>
+                (Test = Inside) /= Ada.Strings.Maps.Is_In (C, Set))
+         =>
+           First = Source'First and then Last = 0,
+ 
+         --  Otherwise, First and Last are set to valid indexes
+ 
+         others
+         =>
+ 
+           --  First and Last are in the considered range of Source
+ 
+           First in Source'Range
+             and then Last in First .. Source'Last
+ 
+             --  No character before First satisfies the property Test on Set
+ 
+             and then
+               (for all C of Source (Source'First .. First - 1) =>
+                  (Test = Inside) /= Ada.Strings.Maps.Is_In (C, Set))
+ 
+             --  All characters between First and Last satisfy the property Test
+             --  on Set.
+ 
+             and then
+               (for all C of Source (First .. Last) =>
+                  (Test = Inside) = Ada.Strings.Maps.Is_In (C, Set))
+ 
+             --  If Last is not Source'Last, then the character at position
+             --  Last + 1 does not satify the property Test on Set.
+ 
+             and then
+               (if Last < Source'Last
+                then
+                  (Test = Inside)
+                  /= Ada.Strings.Maps.Is_In (Source (Last + 1), Set))),
       Global => null;
     --  Equivalent to Find_Token (Source, Set, Source'First, Test, First, Last)
  
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 275,288 ****
       (Source  : String;
        Mapping : Maps.Character_Mapping_Function) return String
     with
!      Post   => Translate'Result'Length = Source'Length,
       Global => null;
  
     function Translate
       (Source  : String;
        Mapping : Maps.Character_Mapping) return String
     with
!      Post   => Translate'Result'Length = Source'Length,
       Global => null;
  
     --  Returns the string S whose length is Source'Length and such that S (I)
--- 701,746 ----
       (Source  : String;
        Mapping : Maps.Character_Mapping_Function) return String
     with
!      Post   =>
! 
!        --  Lower bound of the returned string is 1
! 
!        Translate'Result'First = 1
! 
!          --  The returned string has the same length as Source
! 
!          and then Translate'Result'Last = Source'Length
! 
!          --  Each character in the returned string is the translation of the
!          --  character at the same position in Source through Mapping.
! 
!          and then
!            (for all J in Source'Range =>
!               Translate'Result (J - Source'First + 1)
!               = Mapping (Source (J))),
       Global => null;
  
     function Translate
       (Source  : String;
        Mapping : Maps.Character_Mapping) return String
     with
!      Post   =>
! 
!        --  Lower bound of the returned string is 1
! 
!        Translate'Result'First = 1
! 
!          --  The returned string has the same length as Source
! 
!          and then Translate'Result'Last = Source'Length
! 
!          --  Each character in the returned string is the translation of the
!          --  character at the same position in Source through Mapping.
! 
!          and then
!            (for all J in Source'Range =>
!               Translate'Result (J - Source'First + 1)
!               = Ada.Strings.Maps.Value (Mapping, Source (J))),
       Global => null;
  
     --  Returns the string S whose length is Source'Length and such that S (I)
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 293,304 ****
--- 751,775 ----
       (Source  : in out String;
        Mapping : Maps.Character_Mapping_Function)
     with
+      Post   =>
+ 
+        --  Each character in Source after the call is the translation of
+        --  the character at the same position before the call, through Mapping.
+ 
+        (for all J in Source'Range => Source (J) = Mapping (Source'Old (J))),
       Global => null;
  
     procedure Translate
       (Source  : in out String;
        Mapping : Maps.Character_Mapping)
     with
+      Post   =>
+ 
+        --  Each character in Source after the call is the translation of
+        --  the character at the same position before the call, through Mapping.
+ 
+        (for all J in Source'Range =>
+           Source (J) = Ada.Strings.Maps.Value (Mapping, Source'Old (J))),
       Global => null;
  
     --  Equivalent to Source := Translate(Source, Mapping)
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 344,360 ****
           and then High >= Source'First - 1
           and then (if High >= Low
                     then Natural'Max (0, Low - Source'First)
!                      <= Natural'Last - By'Length
!                       - Natural'Max (Source'Last - High, 0)
                     else Source'Length <= Natural'Last - By'Length),
       Contract_Cases =>
         (High >= Low =>
            Replace_Slice'Result'Length
!         = Natural'Max (0, Low - Source'First)
!         + By'Length
!         + Natural'Max (Source'Last - High, 0),
          others      =>
!           Replace_Slice'Result'Length = Source'Length + By'Length),
       Global         => null;
     --  Equivalent to:
     --
--- 815,894 ----
           and then High >= Source'First - 1
           and then (if High >= Low
                     then Natural'Max (0, Low - Source'First)
!                         <= Natural'Last
!                            - By'Length
!                            - Natural'Max (Source'Last - High, 0)
                     else Source'Length <= Natural'Last - By'Length),
+ 
+      --  Lower bound of the returned string is 1
+ 
+      Post           => Replace_Slice'Result'First = 1,
       Contract_Cases =>
+ 
+         --  If High >= Low, then the returned string comprises
+         --  Source (Source'First .. Low - 1) & By
+         --  & Source(High + 1 .. Source'Last).
+ 
         (High >= Low =>
+ 
+           --  Length of the returned string
+ 
            Replace_Slice'Result'Length
!           = Natural'Max (0, Low - Source'First)
!             + By'Length
!             + Natural'Max (Source'Last - High, 0)
! 
!             --  Elements starting at Low are replaced by elements of By
! 
!             and then
!               Replace_Slice'Result (1 .. Natural'Max (0, Low - Source'First))
!               = Source (Source'First .. Low - 1)
!             and then
!               Replace_Slice'Result
!                 (Natural'Max (0, Low - Source'First) + 1
!                  .. Natural'Max (0, Low - Source'First) + By'Length)
!               = By
! 
!             --  When there are remaining characters after the replaced slice,
!             --  they are appended to the result.
! 
!             and then
!               (if High < Source'Last
!                then
!                  Replace_Slice'Result
!                    (Natural'Max (0, Low - Source'First) + By'Length + 1
!                     .. Replace_Slice'Result'Last)
!                  = Source (High + 1 .. Source'Last)),
! 
!         --  If High < Low, then the returned string is
!         --  Insert (Source, Before => Low, New_Item => By).
! 
          others      =>
! 
!           --  Length of the returned string
! 
!           Replace_Slice'Result'Length = Source'Length + By'Length
! 
!             --  Elements of By are inserted after the element at Low
! 
!             and then
!               Replace_Slice'Result (1 .. Low - Source'First)
!               = Source (Source'First .. Low - 1)
!             and then
!               Replace_Slice'Result
!                 (Low - Source'First + 1 .. Low - Source'First + By'Length)
!               = By
! 
!             --  When there are remaining characters after Low in Source, they
!             --  are appended to the result.
! 
!             and then
!               (if Low < Source'Last
!                then
!                 Replace_Slice'Result
!                   (Low - Source'First + By'Length + 1
!                    .. Replace_Slice'Result'Last)
!                 = Source (Low .. Source'Last))),
       Global         => null;
     --  Equivalent to:
     --
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 369,375 ****
       Pre    =>
         Before - 1 in Source'First - 1 .. Source'Last
           and then Source'Length <= Natural'Last - New_Item'Length,
!      Post   => Insert'Result'Length = Source'Length + New_Item'Length,
       Global => null;
     --  Propagates Index_Error if Before is not in
     --  Source'First .. Source'Last+1; otherwise, returns
--- 903,940 ----
       Pre    =>
         Before - 1 in Source'First - 1 .. Source'Last
           and then Source'Length <= Natural'Last - New_Item'Length,
! 
!      Post   =>
! 
!        --  Lower bound of the returned string is 1
! 
!        Insert'Result'First = 1
! 
!          --  Length of the returned string
! 
!          and then Insert'Result'Length = Source'Length + New_Item'Length
! 
!          --  Elements of New_Item are inserted after element at Before
! 
!          and then
!            Insert'Result (1 .. Before - Source'First)
!            = Source (Source'First .. Before - 1)
!          and then
!            Insert'Result
!              (Before - Source'First + 1
!               .. Before - Source'First + New_Item'Length)
!            = New_Item
! 
!          --  When there are remaining characters after Before in Source, they
!          --  are appended to the returned string.
! 
!          and then
!            (if Before - 1 < Source'Last
!             then
!               Insert'Result
!                 (Before - Source'First + New_Item'Length + 1
!                  .. Insert'Result'Last)
!               = Source (Before .. Source'Last)),
       Global => null;
     --  Propagates Index_Error if Before is not in
     --  Source'First .. Source'Last+1; otherwise, returns
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 397,408 ****
       Pre    =>
         Position - 1 in Source'First - 1 .. Source'Last
           and then
!        (if Position - Source'First >= Source'Length - New_Item'Length
!         then Position - Source'First <= Natural'Last - New_Item'Length),
       Post   =>
!        Overwrite'Result'Length
!      = Integer'Max (Source'Length,
!                     Position - Source'First + New_Item'Length),
       Global => null;
     --  Propagates Index_Error if Position is not in
     --  Source'First .. Source'Last + 1; otherwise, returns the string obtained
--- 962,1005 ----
       Pre    =>
         Position - 1 in Source'First - 1 .. Source'Last
           and then
!            (if Position - Source'First >= Source'Length - New_Item'Length
!             then Position - Source'First <= Natural'Last - New_Item'Length),
! 
       Post   =>
! 
!        --  Lower bound of the returned string is 1
! 
!        Overwrite'Result'First = 1
! 
!          --  Length of the returned string
! 
!          and then
!            Overwrite'Result'Length
!            = Integer'Max (Source'Length,
!                           Position - Source'First + New_Item'Length)
! 
!          --  Elements after Position are replaced by elements of New_Item
! 
!          and then
!            Overwrite'Result (1 .. Position - Source'First)
!            = Source (Source'First .. Position - 1)
!          and then
!            Overwrite'Result
!              (Position - Source'First + 1
!               .. Position - Source'First + New_Item'Length)
!            = New_Item
! 
!          --  If the end of Source is reached before the characters in New_Item
!          --  are exhausted, the remaining characters from New_Item are appended
!          --  to the string.
! 
!          and then
!            (if Position <= Source'Last - New_Item'Length
!             then
!               Overwrite'Result
!                 (Position - Source'First + New_Item'Length + 1
!                  .. Overwrite'Result'Last)
!               = Source (Position + New_Item'Length .. Source'Last)),
       Global => null;
     --  Propagates Index_Error if Position is not in
     --  Source'First .. Source'Last + 1; otherwise, returns the string obtained
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 429,443 ****
        From    : Positive;
        Through : Natural) return String
     with
!      Pre    => (if From <= Through
!                 then (From in Source'Range
!                         and then Through <= Source'Last)),
!      Post   =>
!        Delete'Result'Length
!      = Source'Length - (if From <= Through
!                         then Through - From + 1
!                         else 0),
!      Global => null;
     --  If From <= Through, the returned string is
     --  Replace_Slice(Source, From, Through, ""); otherwise, it is Source with
     --  lower bound 1.
--- 1026,1072 ----
        From    : Positive;
        Through : Natural) return String
     with
!      Pre            => (if From <= Through
!                         then (From in Source'Range
!                                 and then Through <= Source'Last)),
! 
!      --  Lower bound of the returned string is 1
! 
!      Post           =>
!        Delete'Result'First = 1,
! 
!      Contract_Cases =>
! 
!         --  If From <= Through, the characters between From and Through are
!         --  removed.
! 
!        (From <= Through =>
! 
!           --  Length of the returned string
! 
!           Delete'Result'Length = Source'Length - (Through - From + 1)
! 
!             --  Elements before From are preserved
! 
!             and then
!               Delete'Result (1 .. From - Source'First)
!               = Source (Source'First .. From - 1)
! 
!             --  If there are remaining characters after Through, they are
!             --  appended to the returned string.
! 
!             and then
!               (if Through < Source'Last
!                then Delete'Result
!                       (From - Source'First + 1 .. Delete'Result'Last)
!                     = Source (Through + 1 .. Source'Last)),
! 
!         --  Otherwise, the returned string is Source with lower bound 1
! 
!         others          =>
!           Delete'Result'Length = Source'Length
!             and then Delete'Result = Source),
!      Global         => null;
     --  If From <= Through, the returned string is
     --  Replace_Slice(Source, From, Through, ""); otherwise, it is Source with
     --  lower bound 1.
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 469,475 ****
       (Source : String;
        Side   : Trim_End) return String
     with
!      Post   => Trim'Result'Length <= Source'Length,
       Global => null;
     --  Returns the string obtained by removing from Source all leading Space
     --  characters (if Side = Left), all trailing Space characters (if
--- 1098,1144 ----
       (Source : String;
        Side   : Trim_End) return String
     with
!      Post   =>
! 
!        --  Lower bound of the returned string is 1
! 
!        Trim'Result'First = 1
! 
!        --  If all characters in Source are Space, the returned string is
!        --  empty.
! 
!          and then
!            (if (for all J in Source'Range => Source (J) = ' ')
!             then Trim'Result = ""
! 
!             --  Otherwise, the returned string is a slice of Source
! 
!             else
!               (for some Low in Source'Range =>
!                  (for some High in Source'Range =>
! 
!                     --  Trim returns the slice of Source between Low and High
! 
!                     Trim'Result = Source (Low .. High)
! 
!                       --  Values of Low and High and the characters at their
!                       --  position depend on Side.
! 
!                       and then
!                         (if Side = Left then High = Source'Last
!                          else Source (High) /= ' ')
!                       and then
!                         (if Side = Right then Low = Source'First
!                          else Source (Low) /= ' ')
! 
!                       --  All characters outside range Low .. High are
!                       --  Space characters.
! 
!                       and then
!                         (for all J in Source'Range =>
!                            (if J < Low then Source (J) = ' ')
!                               and then
!                                 (if J > High then Source (J) = ' '))))),
       Global => null;
     --  Returns the string obtained by removing from Source all leading Space
     --  characters (if Side = Left), all trailing Space characters (if
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 495,501 ****
        Left   : Maps.Character_Set;
        Right  : Maps.Character_Set) return String
     with
!      Post   => Trim'Result'Length <= Source'Length,
       Global => null;
     --  Returns the string obtained by removing from Source all leading
     --  characters in Left and all trailing characters in Right.
--- 1164,1213 ----
        Left   : Maps.Character_Set;
        Right  : Maps.Character_Set) return String
     with
!      Post   =>
! 
!        --  Lower bound of the returned string is 1
! 
!        Trim'Result'First = 1
! 
!          --  If all characters are contained in one of the sets Left and Right,
!          --  then the returned string is empty.
! 
!          and then
!            (if (for all K in Source'Range =>
!                   Ada.Strings.Maps.Is_In (Source (K), Left))
!                  or
!                    (for all K in Source'Range =>
!                       Ada.Strings.Maps.Is_In (Source (K), Right))
!             then Trim'Result = ""
! 
!         --  Otherwise, the returned string is a slice of Source
! 
!         else
!           (for some Low in Source'Range =>
!              (for some High in Source'Range =>
! 
!                 --  Trim returns the slice of Source between Low and High
! 
!                 Trim'Result = Source (Low .. High)
! 
!                   --  Characters at the bounds of the returned string are
!                   --  not contained in Left or Right.
! 
!                   and then not Ada.Strings.Maps.Is_In (Source (Low), Left)
!                   and then not Ada.Strings.Maps.Is_In (Source (High), Right)
! 
!                   --  All characters before Low are contained in Left.
!                   --  All characters after High are contained in Right.
! 
!                   and then
!                     (for all K in Source'Range =>
!                        (if K < Low
!                         then
!                           Ada.Strings.Maps.Is_In (Source (K), Left))
!                             and then
!                               (if K > High then
!                                Ada.Strings.Maps.Is_In (Source (K), Right)))))),
       Global => null;
     --  Returns the string obtained by removing from Source all leading
     --  characters in Left and all trailing characters in Right.
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 521,528 ****
        Count  : Natural;
        Pad    : Character := Space) return String
     with
!      Post   => Head'Result'Length = Count,
!      Global => null;
     --  Returns a string of length Count. If Count <= Source'Length, the string
     --  comprises the first Count characters of Source. Otherwise, its contents
     --  are Source concatenated with Count - Source'Length Pad characters.
--- 1233,1265 ----
        Count  : Natural;
        Pad    : Character := Space) return String
     with
!      Post           =>
! 
!        --  Lower bound of the returned string is 1
! 
!        Head'Result'First = 1
! 
!          --  Length of the returned string is Count.
! 
!          and then Head'Result'Length = Count,
! 
!      Contract_Cases =>
! 
!         --  If Count <= Source'Length, then the first Count characters of
!         --  Source are returned.
! 
!        (Count <= Source'Length =>
!           Head'Result = Source (Source'First .. Source'First - 1 + Count),
! 
!         --  Otherwise, the returned string is Source concatenated with
!         --  Count - Source'Length Pad characters.
! 
!         others                 =>
!           Head'Result (1 .. Source'Length) = Source
!             and then
!               Head'Result (Source'Length + 1 .. Count)
!               = (1 .. Count - Source'Length => Pad)),
!      Global         => null;
     --  Returns a string of length Count. If Count <= Source'Length, the string
     --  comprises the first Count characters of Source. Otherwise, its contents
     --  are Source concatenated with Count - Source'Length Pad characters.
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 547,553 ****
        Count  : Natural;
        Pad    : Character := Space) return String
     with
!      Post   => Tail'Result'Length = Count,
       Global => null;
     --  Returns a string of length Count. If Count <= Source'Length, the string
     --  comprises the last Count characters of Source. Otherwise, its contents
--- 1284,1327 ----
        Count  : Natural;
        Pad    : Character := Space) return String
     with
!      Post   =>
! 
!        --  Lower bound of the returned string is 1
! 
!        Tail'Result'First = 1
! 
!          --  Length of the returned string is Count
! 
!          and then Tail'Result'Length = Count,
!      Contract_Cases =>
! 
!        --  If Count is zero, then the returned string is empty
! 
!        (Count = 0                     =>
!           Tail'Result = "",
! 
!         --  Otherwise, if Count <= Source'Length, then the last Count
!         --  characters of Source are returned.
! 
!         (Count in 1 .. Source'Length) =>
!           Tail'Result = Source (Source'Last - Count + 1 .. Source'Last),
! 
!         --  Otherwise, the returned string is Count - Source'Length Pad
!         --  characters concatenated with Source.
! 
!         others                        =>
! 
!            --  If Source is empty, then the returned string is Count Pad
!            --  characters.
! 
!           (if Source'Length = 0
!            then Tail'Result = (1 .. Count => Pad)
!            else
!              Tail'Result (1 .. Count - Source'Length)
!              = (1 .. Count - Source'Length => Pad)
!                and then
!                  Tail'Result (Count - Source'Length + 1 .. Tail'Result'Last)
!                  = Source)),
       Global => null;
     --  Returns a string of length Count. If Count <= Source'Length, the string
     --  comprises the last Count characters of Source. Otherwise, its contents
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 576,582 ****
       (Left  : Natural;
        Right : Character) return String
     with
!      Post   => "*"'Result'Length = Left,
       Global => null;
  
     function "*"
--- 1350,1368 ----
       (Left  : Natural;
        Right : Character) return String
     with
!      Post   =>
! 
!        --  Lower bound of the returned string is 1
! 
!        "*"'Result'First = 1
! 
!          --  Length of the returned string
! 
!          and then "*"'Result'Length = Left
! 
!          --  All characters of the returned string are Right
! 
!          and then (for all C of "*"'Result => C = Right),
       Global => null;
  
     function "*"
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 584,590 ****
        Right : String) return String
     with
       Pre    => (if Right'Length /= 0 then Left <= Natural'Last / Right'Length),
!      Post   => "*"'Result'Length = Left * Right'Length,
       Global => null;
  
     --  These functions replicate a character or string a specified number of
--- 1370,1392 ----
        Right : String) return String
     with
       Pre    => (if Right'Length /= 0 then Left <= Natural'Last / Right'Length),
! 
!      Post   =>
! 
!        --  Lower bound of the returned string is 1
! 
!        "*"'Result'First = 1
! 
!          --  Length of the returned string
! 
!          and then "*"'Result'Length = Left * Right'Length
! 
!          --  Content of the string is Right concatenated with itself Left times
! 
!          and then
!            (for all J in 0 .. Left - 1 =>
!               "*"'Result (J * Right'Length + 1 .. (J + 1) * Right'Length)
!               = Right),
       Global => null;
  
     --  These functions replicate a character or string a specified number of
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-strhas.adb gcc-11.1.0/gcc/ada/libgnat/a-strhas.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-strhas.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-strhas.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-strmap.adb gcc-11.1.0/gcc/ada/libgnat/a-strmap.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-strmap.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-strmap.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-strmap.ads gcc-11.1.0/gcc/ada/libgnat/a-strmap.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-strmap.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-strmap.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
***************
*** 33,38 ****
--- 33,44 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ --  Preconditions in this unit are meant for analysis only, not for run-time
+ --  checking, so that the expected exceptions are raised. This is enforced by
+ --  setting the corresponding assertion policy to Ignore.
+ 
+ pragma Assertion_Policy (Pre => Ignore);
+ 
  with Ada.Characters.Latin_1;
  
  package Ada.Strings.Maps is
*************** package Ada.Strings.Maps is
*** 61,83 ****
  
     type Character_Ranges is array (Positive range <>) of Character_Range;
  
!    function To_Set    (Ranges : Character_Ranges) return Character_Set;
  
!    function To_Set    (Span   : Character_Range)  return Character_Set;
  
!    function To_Ranges (Set    : Character_Set)    return Character_Ranges;
  
     ----------------------------------
     -- Operations on Character Sets --
     ----------------------------------
  
!    function "="   (Left, Right : Character_Set) return Boolean;
  
!    function "not" (Right       : Character_Set) return Character_Set;
!    function "and" (Left, Right : Character_Set) return Character_Set;
!    function "or"  (Left, Right : Character_Set) return Character_Set;
!    function "xor" (Left, Right : Character_Set) return Character_Set;
!    function "-"   (Left, Right : Character_Set) return Character_Set;
  
     function Is_In
       (Element : Character;
--- 67,151 ----
  
     type Character_Ranges is array (Positive range <>) of Character_Range;
  
!    function To_Set    (Ranges : Character_Ranges) return Character_Set with
!      Post =>
!        (if Ranges'Length = 0 then To_Set'Result = Null_Set)
!           and then
!        (for all Char in Character =>
!           (if Is_In (Char, To_Set'Result)
!            then (for some Span of Ranges => Char in Span.Low .. Span.High)))
!           and then
!        (for all Span of Ranges =>
!           (for all Char in Span.Low .. Span.High =>
!              Is_In (Char, To_Set'Result)));
  
!    function To_Set    (Span   : Character_Range)  return Character_Set with
!      Post =>
!        (if Span.High < Span.Low then To_Set'Result = Null_Set)
!           and then
!        (for all Char in Character =>
!           (if Is_In (Char, To_Set'Result) then Char in Span.Low .. Span.High))
!           and then
!        (for all Char in Span.Low .. Span.High => Is_In (Char, To_Set'Result));
  
!    function To_Ranges (Set    : Character_Set)    return Character_Ranges with
!      Post =>
!        (if Set = Null_Set then To_Ranges'Result'Length = 0)
!           and then
!        (for all Char in Character =>
!           (if Is_In (Char, Set)
!            then
!              (for some Span of To_Ranges'Result =>
!                 Char in Span.Low .. Span.High)))
!           and then
!        (for all Span of To_Ranges'Result =>
!           (for all Char in Span.Low .. Span.High => Is_In (Char, Set)));
  
     ----------------------------------
     -- Operations on Character Sets --
     ----------------------------------
  
!    function "="   (Left, Right : Character_Set) return Boolean with
!      Post =>
!        "="'Result
!          =
!        (for all Char in Character =>
!           (Is_In (Char, Left) = Is_In (Char, Right)));
  
!    function "not" (Right       : Character_Set) return Character_Set with
!      Post =>
!        (for all Char in Character =>
!           (Is_In (Char, "not"'Result)
!              =
!            not Is_In (Char, Right)));
! 
!    function "and" (Left, Right : Character_Set) return Character_Set with
!      Post =>
!        (for all Char in Character =>
!           (Is_In (Char, "and"'Result)
!              =
!            (Is_In (Char, Left) and Is_In (Char, Right))));
! 
!    function "or"  (Left, Right : Character_Set) return Character_Set with
!      Post =>
!        (for all Char in Character =>
!           (Is_In (Char, "or"'Result)
!              =
!            (Is_In (Char, Left) or Is_In (Char, Right))));
! 
!    function "xor" (Left, Right : Character_Set) return Character_Set with
!      Post =>
!        (for all Char in Character =>
!           (Is_In (Char, "xor"'Result)
!              =
!            (Is_In (Char, Left) xor Is_In (Char, Right))));
! 
!    function "-"   (Left, Right : Character_Set) return Character_Set with
!      Post =>
!        (for all Char in Character =>
!           (Is_In (Char, "-"'Result)
!              =
!            (Is_In (Char, Left) and not Is_In (Char, Right))));
  
     function Is_In
       (Element : Character;
*************** package Ada.Strings.Maps is
*** 85,104 ****
  
     function Is_Subset
       (Elements : Character_Set;
!       Set      : Character_Set) return     Boolean;
  
     function "<="
       (Left  : Character_Set;
!       Right : Character_Set) return  Boolean
     renames Is_Subset;
  
     subtype Character_Sequence is String;
     --  Alternative representation for a set of character values
  
!    function To_Set (Sequence  : Character_Sequence) return Character_Set;
!    function To_Set (Singleton : Character)          return Character_Set;
  
!    function To_Sequence (Set : Character_Set) return Character_Sequence;
  
     ------------------------------------
     -- Character Mapping Declarations --
--- 153,206 ----
  
     function Is_Subset
       (Elements : Character_Set;
!       Set      : Character_Set) return Boolean
!    with
!      Post =>
!          Is_Subset'Result
!            =
!          (for all Char in Character =>
!             (if Is_In (Char, Elements) then Is_In (Char, Set)));
  
     function "<="
       (Left  : Character_Set;
!       Right : Character_Set) return Boolean
     renames Is_Subset;
  
     subtype Character_Sequence is String;
     --  Alternative representation for a set of character values
  
!    function To_Set (Sequence  : Character_Sequence) return Character_Set with
!      Post =>
!        (if Sequence'Length = 0 then To_Set'Result = Null_Set)
!           and then
!        (for all Char in Character =>
!           (if Is_In (Char, To_Set'Result)
!            then (for some X of Sequence => Char = X)))
!           and then
!        (for all Char of Sequence => Is_In (Char, To_Set'Result));
  
!    function To_Set (Singleton : Character)          return Character_Set with
!      Post =>
!        Is_In (Singleton, To_Set'Result)
!          and then
!        (for all Char in Character =>
!           (if Char /= Singleton
!            then not Is_In (Char, To_Set'Result)));
! 
!    function To_Sequence (Set : Character_Set) return Character_Sequence with
!      Post =>
!        (if Set = Null_Set then To_Sequence'Result'Length = 0)
!           and then
!        (for all Char in Character =>
!           (if Is_In (Char, Set)
!            then (for some X of To_Sequence'Result => Char = X)))
!           and then
!        (for all Char of To_Sequence'Result => Is_In (Char, Set))
!           and then
!        (for all J in To_Sequence'Result'Range =>
!           (for all K in To_Sequence'Result'Range =>
!              (if J /= K
!               then To_Sequence'Result (J) /= To_Sequence'Result (K))));
  
     ------------------------------------
     -- Character Mapping Declarations --
*************** package Ada.Strings.Maps is
*** 119,131 ****
     ----------------------------
  
     function To_Mapping
!      (From, To : Character_Sequence) return Character_Mapping;
  
     function To_Domain
!      (Map : Character_Mapping) return Character_Sequence;
  
     function To_Range
!      (Map : Character_Mapping) return Character_Sequence;
  
     type Character_Mapping_Function is
        access function (From : Character) return Character;
--- 221,268 ----
     ----------------------------
  
     function To_Mapping
!      (From, To : Character_Sequence) return Character_Mapping
!    with
!      Pre  =>
!        From'Length = To'Length
!          and then
!        (for all J in From'Range =>
!           (for all K in From'Range =>
!              (if J /= K then From (J) /= From (K)))),
!      Post =>
!        (if From = To then To_Mapping'Result = Identity)
!           and then
!        (for all Char in Character =>
!           ((for all J in From'Range =>
!              (if From (J) = Char
!               then Value (To_Mapping'Result, Char)
!                    = To (J - From'First + To'First)))
!              and then
!            (if (for all X of From => Char /= X)
!             then Value (To_Mapping'Result, Char) = Char)));
  
     function To_Domain
!      (Map : Character_Mapping) return Character_Sequence with
!      Post =>
!        (if Map = Identity then To_Domain'Result'Length = 0)
!           and then
!        To_Domain'Result'First = 1
!           and then
!        (for all Char in Character =>
!           (if (for all X of To_Domain'Result => X /= Char)
!            then Value (Map, Char) = Char))
!           and then
!        (for all Char of To_Domain'Result => Value (Map, Char) /= Char);
  
     function To_Range
!      (Map : Character_Mapping) return Character_Sequence with
!      Post =>
!        To_Range'Result'First = 1
!          and then
!        To_Range'Result'Last = To_Domain (Map)'Last
!          and then
!        (for all J in To_Range'Result'Range =>
!           To_Range'Result (J) = Value (Map, To_Domain (Map) (J)));
  
     type Character_Mapping_Function is
        access function (From : Character) return Character;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-strsea.adb gcc-11.1.0/gcc/ada/libgnat/a-strsea.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-strsea.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-strsea.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-strsea.ads gcc-11.1.0/gcc/ada/libgnat/a-strsea.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-strsea.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-strsea.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-strsto.ads gcc-11.1.0/gcc/ada/libgnat/a-strsto.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-strsto.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-strsto.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,44 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT LIBRARY COMPONENTS                          --
+ --                                                                          --
+ --                   A D A . S T R E A M S . S T O R A G E                  --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --             Copyright (C) 2020, Free Software Foundation, Inc.           --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT. The copyright notice above, and the license provisions that follow --
+ -- apply solely to the  contents of the part following the private keyword. --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package Ada.Streams.Storage with Pure is
+ 
+    type Storage_Stream_Type is abstract new Root_Stream_Type with private;
+ 
+    function Element_Count
+      (Stream : Storage_Stream_Type) return Stream_Element_Count is abstract;
+ 
+    procedure Clear (Stream : in out Storage_Stream_Type) is abstract;
+ 
+ private
+    type Storage_Stream_Type is abstract new Root_Stream_Type with null record;
+ end Ada.Streams.Storage;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-strsup.adb gcc-11.1.0/gcc/ada/libgnat/a-strsup.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-strsup.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-strsup.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-strsup.ads gcc-11.1.0/gcc/ada/libgnat/a-strsup.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-strsup.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-strsup.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-strunb.adb gcc-11.1.0/gcc/ada/libgnat/a-strunb.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-strunb.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-strunb.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Unchecked_Deallocation;
*** 35,40 ****
--- 35,53 ----
  
  package body Ada.Strings.Unbounded is
  
+    function Sum (Left : Natural; Right : Integer) return Natural with Inline;
+    --  Returns summary of Left and Right, raise Constraint_Error on overflow
+ 
+    function Mul (Left, Right : Natural) return Natural with Inline;
+    --  Returns multiplication of Left and Right, raise Constraint_Error on
+    --  overflow.
+ 
+    function Saturated_Sum (Left : Natural; Right : Integer) return Natural;
+    --  Returns summary of Left and Right or Natural'Last on overflow
+ 
+    function Saturated_Mul (Left, Right : Natural) return Natural;
+    --  Returns multiplication of Left and Right or Natural'Last on overflow
+ 
     ---------
     -- "&" --
     ---------
*************** package body Ada.Strings.Unbounded is
*** 48,54 ****
        Result   : Unbounded_String;
  
     begin
!       Result.Last := L_Length + R_Length;
  
        Result.Reference := new String (1 .. Result.Last);
  
--- 61,67 ----
        Result   : Unbounded_String;
  
     begin
!       Result.Last := Sum (L_Length, R_Length);
  
        Result.Reference := new String (1 .. Result.Last);
  
*************** package body Ada.Strings.Unbounded is
*** 68,74 ****
        Result   : Unbounded_String;
  
     begin
!       Result.Last := L_Length + Right'Length;
  
        Result.Reference := new String (1 .. Result.Last);
  
--- 81,87 ----
        Result   : Unbounded_String;
  
     begin
!       Result.Last := Sum (L_Length, Right'Length);
  
        Result.Reference := new String (1 .. Result.Last);
  
*************** package body Ada.Strings.Unbounded is
*** 86,92 ****
        Result   : Unbounded_String;
  
     begin
!       Result.Last := Left'Length + R_Length;
  
        Result.Reference := new String (1 .. Result.Last);
  
--- 99,105 ----
        Result   : Unbounded_String;
  
     begin
!       Result.Last := Sum (Left'Length, R_Length);
  
        Result.Reference := new String (1 .. Result.Last);
  
*************** package body Ada.Strings.Unbounded is
*** 104,110 ****
        Result : Unbounded_String;
  
     begin
!       Result.Last := Left.Last + 1;
  
        Result.Reference := new String (1 .. Result.Last);
  
--- 117,123 ----
        Result : Unbounded_String;
  
     begin
!       Result.Last := Sum (Left.Last, 1);
  
        Result.Reference := new String (1 .. Result.Last);
  
*************** package body Ada.Strings.Unbounded is
*** 122,128 ****
        Result : Unbounded_String;
  
     begin
!       Result.Last := Right.Last + 1;
  
        Result.Reference := new String (1 .. Result.Last);
        Result.Reference (1) := Left;
--- 135,141 ----
        Result : Unbounded_String;
  
     begin
!       Result.Last := Sum (Right.Last, 1);
  
        Result.Reference := new String (1 .. Result.Last);
        Result.Reference (1) := Left;
*************** package body Ada.Strings.Unbounded is
*** 142,148 ****
        Result : Unbounded_String;
  
     begin
!       Result.Last   := Left;
  
        Result.Reference := new String (1 .. Left);
        for J in Result.Reference'Range loop
--- 155,161 ----
        Result : Unbounded_String;
  
     begin
!       Result.Last := Left;
  
        Result.Reference := new String (1 .. Left);
        for J in Result.Reference'Range loop
*************** package body Ada.Strings.Unbounded is
*** 161,167 ****
        Result : Unbounded_String;
  
     begin
!       Result.Last := Left * Len;
  
        Result.Reference := new String (1 .. Result.Last);
  
--- 174,180 ----
        Result : Unbounded_String;
  
     begin
!       Result.Last := Mul (Left, Len);
  
        Result.Reference := new String (1 .. Result.Last);
  
*************** package body Ada.Strings.Unbounded is
*** 183,189 ****
        Result : Unbounded_String;
  
     begin
!       Result.Last := Left * Len;
  
        Result.Reference := new String (1 .. Result.Last);
  
--- 196,202 ----
        Result : Unbounded_String;
  
     begin
!       Result.Last := Mul (Left, Len);
  
        Result.Reference := new String (1 .. Result.Last);
  
*************** package body Ada.Strings.Unbounded is
*** 718,723 ****
--- 731,746 ----
        return Source.Last;
     end Length;
  
+    ---------
+    -- Mul --
+    ---------
+ 
+    function Mul (Left, Right : Natural) return Natural is
+       pragma Unsuppress (Overflow_Check);
+    begin
+       return Left * Right;
+    end Mul;
+ 
     ---------------
     -- Overwrite --
     ---------------
*************** package body Ada.Strings.Unbounded is
*** 755,760 ****
--- 778,793 ----
        end if;
     end Overwrite;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Unbounded_String) is
+    begin
+       String'Put_Image (S, To_String (V));
+    end Put_Image;
+ 
     -----------------------
     -- Realloc_For_Chunk --
     -----------------------
*************** package body Ada.Strings.Unbounded is
*** 783,792 ****
        if Chunk_Size > S_Length - Source.Last then
           declare
              New_Size : constant Positive :=
!               S_Length + Chunk_Size + (S_Length / Growth_Factor);
  
              New_Rounded_Up_Size : constant Positive :=
!               ((New_Size - 1) / Min_Mul_Alloc + 1) * Min_Mul_Alloc;
  
              Tmp : constant String_Access :=
                new String (1 .. New_Rounded_Up_Size);
--- 816,827 ----
        if Chunk_Size > S_Length - Source.Last then
           declare
              New_Size : constant Positive :=
!               Saturated_Sum
!                 (Sum (S_Length, Chunk_Size), S_Length / Growth_Factor);
  
              New_Rounded_Up_Size : constant Positive :=
!               Saturated_Mul
!                 ((New_Size - 1) / Min_Mul_Alloc + 1, Min_Mul_Alloc);
  
              Tmp : constant String_Access :=
                new String (1 .. New_Rounded_Up_Size);
*************** package body Ada.Strings.Unbounded is
*** 847,852 ****
--- 882,911 ----
        Free (Old);
     end Replace_Slice;
  
+    -------------------
+    -- Saturated_Mul --
+    -------------------
+ 
+    function Saturated_Mul (Left, Right : Natural) return Natural is
+    begin
+       return Mul (Left, Right);
+    exception
+       when Constraint_Error =>
+          return Natural'Last;
+    end Saturated_Mul;
+ 
+    -----------------
+    -- Saturated_Sum --
+    -----------------
+ 
+    function Saturated_Sum (Left : Natural; Right : Integer) return Natural is
+    begin
+       return Sum (Left, Right);
+    exception
+       when Constraint_Error =>
+          return Natural'Last;
+    end Saturated_Sum;
+ 
     --------------------------
     -- Set_Unbounded_String --
     --------------------------
*************** package body Ada.Strings.Unbounded is
*** 882,887 ****
--- 941,956 ----
        end if;
     end Slice;
  
+    ---------
+    -- Sum --
+    ---------
+ 
+    function Sum (Left : Natural; Right : Integer) return Natural is
+       pragma Unsuppress (Overflow_Check);
+    begin
+       return Left + Right;
+    end Sum;
+ 
     ----------
     -- Tail --
     ----------
*************** package body Ada.Strings.Unbounded is
*** 1047,1053 ****
        High   : Natural) return Unbounded_String
     is
     begin
!       if Low > Source.Last + 1 or else High > Source.Last then
           raise Index_Error;
        else
           return To_Unbounded_String (Source.Reference.all (Low .. High));
--- 1116,1122 ----
        High   : Natural) return Unbounded_String
     is
     begin
!       if Low - 1 > Source.Last or else High > Source.Last then
           raise Index_Error;
        else
           return To_Unbounded_String (Source.Reference.all (Low .. High));
*************** package body Ada.Strings.Unbounded is
*** 1061,1067 ****
        High   : Natural)
     is
     begin
!       if Low > Source.Last + 1 or else High > Source.Last then
           raise Index_Error;
        else
           Target := To_Unbounded_String (Source.Reference.all (Low .. High));
--- 1130,1136 ----
        High   : Natural)
     is
     begin
!       if Low - 1 > Source.Last or else High > Source.Last then
           raise Index_Error;
        else
           Target := To_Unbounded_String (Source.Reference.all (Low .. High));
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-strunb.ads gcc-11.1.0/gcc/ada/libgnat/a-strunb.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-strunb.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-strunb.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** pragma Assertion_Policy (Pre => Ignore);
*** 41,46 ****
--- 41,47 ----
  
  with Ada.Strings.Maps;
  with Ada.Finalization;
+ private with Ada.Strings.Text_Output;
  
  --  The language-defined package Strings.Unbounded provides a private type
  --  Unbounded_String and a set of operations. An object of type
*************** private
*** 744,750 ****
     type Unbounded_String is new AF.Controlled with record
        Reference : String_Access := Null_String'Access;
        Last      : Natural       := 0;
!    end record;
     --  The Unbounded_String is using a buffered implementation to increase
     --  speed of the Append/Delete/Insert procedures. The Reference string
     --  pointer above contains the current string value and extra room at the
--- 745,755 ----
     type Unbounded_String is new AF.Controlled with record
        Reference : String_Access := Null_String'Access;
        Last      : Natural       := 0;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Unbounded_String);
! 
     --  The Unbounded_String is using a buffered implementation to increase
     --  speed of the Append/Delete/Insert procedures. The Reference string
     --  pointer above contains the current string value and extra room at the
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-strunb__shared.adb gcc-11.1.0/gcc/ada/libgnat/a-strunb__shared.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-strunb__shared.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-strunb__shared.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Strings.Unbounded is
*** 56,61 ****
--- 56,73 ----
     --  allocated memory segments to use memory effectively by Append/Insert/etc
     --  operations.
  
+    function Sum (Left : Natural; Right : Integer) return Natural with Inline;
+    --  Returns summary of Left and Right, raise Constraint_Error on overflow
+ 
+    function Mul (Left, Right : Natural) return Natural with Inline;
+    --  Returns multiplication of Left and Right, raise Constraint_Error on
+    --  overflow
+ 
+    function Allocate
+      (Length, Growth : Natural) return not null Shared_String_Access;
+    --  Allocates new Shared_String with at least specified Length plus optional
+    --  Growth.
+ 
     ---------
     -- "&" --
     ---------
*************** package body Ada.Strings.Unbounded is
*** 66,79 ****
     is
        LR : constant Shared_String_Access := Left.Reference;
        RR : constant Shared_String_Access := Right.Reference;
!       DL : constant Natural := LR.Last + RR.Last;
        DR : Shared_String_Access;
  
     begin
        --  Result is an empty string, reuse shared empty string
  
        if DL = 0 then
-          Reference (Empty_Shared_String'Access);
           DR := Empty_Shared_String'Access;
  
        --  Left string is empty, return Right string
--- 78,90 ----
     is
        LR : constant Shared_String_Access := Left.Reference;
        RR : constant Shared_String_Access := Right.Reference;
!       DL : constant Natural := Sum (LR.Last, RR.Last);
        DR : Shared_String_Access;
  
     begin
        --  Result is an empty string, reuse shared empty string
  
        if DL = 0 then
           DR := Empty_Shared_String'Access;
  
        --  Left string is empty, return Right string
*************** package body Ada.Strings.Unbounded is
*** 105,118 ****
        Right : String) return Unbounded_String
     is
        LR : constant Shared_String_Access := Left.Reference;
!       DL : constant Natural := LR.Last + Right'Length;
        DR : Shared_String_Access;
  
     begin
        --  Result is an empty string, reuse shared empty string
  
        if DL = 0 then
-          Reference (Empty_Shared_String'Access);
           DR := Empty_Shared_String'Access;
  
        --  Right is an empty string, return Left string
--- 116,128 ----
        Right : String) return Unbounded_String
     is
        LR : constant Shared_String_Access := Left.Reference;
!       DL : constant Natural := Sum (LR.Last, Right'Length);
        DR : Shared_String_Access;
  
     begin
        --  Result is an empty string, reuse shared empty string
  
        if DL = 0 then
           DR := Empty_Shared_String'Access;
  
        --  Right is an empty string, return Left string
*************** package body Ada.Strings.Unbounded is
*** 138,151 ****
        Right : Unbounded_String) return Unbounded_String
     is
        RR : constant Shared_String_Access := Right.Reference;
!       DL : constant Natural := Left'Length + RR.Last;
        DR : Shared_String_Access;
  
     begin
        --  Result is an empty string, reuse shared one
  
        if DL = 0 then
-          Reference (Empty_Shared_String'Access);
           DR := Empty_Shared_String'Access;
  
        --  Left is empty string, return Right string
--- 148,160 ----
        Right : Unbounded_String) return Unbounded_String
     is
        RR : constant Shared_String_Access := Right.Reference;
!       DL : constant Natural := Sum (Left'Length, RR.Last);
        DR : Shared_String_Access;
  
     begin
        --  Result is an empty string, reuse shared one
  
        if DL = 0 then
           DR := Empty_Shared_String'Access;
  
        --  Left is empty string, return Right string
*************** package body Ada.Strings.Unbounded is
*** 171,177 ****
        Right : Character) return Unbounded_String
     is
        LR : constant Shared_String_Access := Left.Reference;
!       DL : constant Natural := LR.Last + 1;
        DR : Shared_String_Access;
  
     begin
--- 180,186 ----
        Right : Character) return Unbounded_String
     is
        LR : constant Shared_String_Access := Left.Reference;
!       DL : constant Natural := Sum (LR.Last, 1);
        DR : Shared_String_Access;
  
     begin
*************** package body Ada.Strings.Unbounded is
*** 188,194 ****
        Right : Unbounded_String) return Unbounded_String
     is
        RR : constant Shared_String_Access := Right.Reference;
!       DL : constant Natural := 1 + RR.Last;
        DR : Shared_String_Access;
  
     begin
--- 197,203 ----
        Right : Unbounded_String) return Unbounded_String
     is
        RR : constant Shared_String_Access := Right.Reference;
!       DL : constant Natural := Sum (1, RR.Last);
        DR : Shared_String_Access;
  
     begin
*************** package body Ada.Strings.Unbounded is
*** 214,220 ****
        --  Result is an empty string, reuse shared empty string
  
        if Left = 0 then
-          Reference (Empty_Shared_String'Access);
           DR := Empty_Shared_String'Access;
  
        --  Otherwise, allocate new shared string and fill it
--- 223,228 ----
*************** package body Ada.Strings.Unbounded is
*** 236,242 ****
       (Left  : Natural;
        Right : String) return Unbounded_String
     is
!       DL : constant Natural := Left * Right'Length;
        DR : Shared_String_Access;
        K  : Positive;
  
--- 244,250 ----
       (Left  : Natural;
        Right : String) return Unbounded_String
     is
!       DL : constant Natural := Mul (Left, Right'Length);
        DR : Shared_String_Access;
        K  : Positive;
  
*************** package body Ada.Strings.Unbounded is
*** 244,250 ****
        --  Result is an empty string, reuse shared empty string
  
        if DL = 0 then
-          Reference (Empty_Shared_String'Access);
           DR := Empty_Shared_String'Access;
  
        --  Otherwise, allocate new shared string and fill it
--- 252,257 ----
*************** package body Ada.Strings.Unbounded is
*** 269,275 ****
        Right : Unbounded_String) return Unbounded_String
     is
        RR : constant Shared_String_Access := Right.Reference;
!       DL : constant Natural := Left * RR.Last;
        DR : Shared_String_Access;
        K  : Positive;
  
--- 276,282 ----
        Right : Unbounded_String) return Unbounded_String
     is
        RR : constant Shared_String_Access := Right.Reference;
!       DL : constant Natural := Mul (Left, RR.Last);
        DR : Shared_String_Access;
        K  : Positive;
  
*************** package body Ada.Strings.Unbounded is
*** 277,283 ****
        --  Result is an empty string, reuse shared empty string
  
        if DL = 0 then
-          Reference (Empty_Shared_String'Access);
           DR := Empty_Shared_String'Access;
  
        --  Coefficient is one, just return string itself
--- 284,289 ----
*************** package body Ada.Strings.Unbounded is
*** 486,498 ****
  
     function Aligned_Max_Length (Max_Length : Natural) return Natural is
        Static_Size : constant Natural :=
!         Empty_Shared_String'Size / Standard'Storage_Unit;
!       --  Total size of all static components
! 
     begin
!       return
!         ((Static_Size + Max_Length - 1) / Min_Mul_Alloc + 2) * Min_Mul_Alloc
!            - Static_Size;
     end Aligned_Max_Length;
  
     --------------
--- 492,507 ----
  
     function Aligned_Max_Length (Max_Length : Natural) return Natural is
        Static_Size : constant Natural :=
!                       Empty_Shared_String'Size / Standard'Storage_Unit;
!       --  Total size of all Shared_String static components
     begin
!       if Max_Length > Natural'Last - Static_Size then
!          return Natural'Last;
!       else
!          return
!            ((Static_Size + Max_Length - 1) / Min_Mul_Alloc + 2) * Min_Mul_Alloc
!              - Static_Size;
!       end if;
     end Aligned_Max_Length;
  
     --------------
*************** package body Ada.Strings.Unbounded is
*** 506,512 ****
        --  Empty string requested, return shared empty string
  
        if Max_Length = 0 then
-          Reference (Empty_Shared_String'Access);
           return Empty_Shared_String'Access;
  
        --  Otherwise, allocate requested space (and probably some more room)
--- 515,520 ----
*************** package body Ada.Strings.Unbounded is
*** 516,521 ****
--- 524,546 ----
        end if;
     end Allocate;
  
+    --------------
+    -- Allocate --
+    --------------
+ 
+    function Allocate
+      (Length, Growth : Natural) return not null Shared_String_Access is
+    begin
+       if Natural'Last - Growth < Length then
+          --  Then Length + Growth would be more than Natural'Last
+ 
+          return new Shared_String (Integer'Last);
+ 
+       else
+          return Allocate (Length + Growth);
+       end if;
+    end Allocate;
+ 
     ------------
     -- Append --
     ------------
*************** package body Ada.Strings.Unbounded is
*** 526,532 ****
     is
        SR  : constant Shared_String_Access := Source.Reference;
        NR  : constant Shared_String_Access := New_Item.Reference;
!       DL  : constant Natural              := SR.Last + NR.Last;
        DR  : Shared_String_Access;
  
     begin
--- 551,557 ----
     is
        SR  : constant Shared_String_Access := Source.Reference;
        NR  : constant Shared_String_Access := New_Item.Reference;
!       DL  : constant Natural              := Sum (SR.Last, NR.Last);
        DR  : Shared_String_Access;
  
     begin
*************** package body Ada.Strings.Unbounded is
*** 551,557 ****
        --  Otherwise, allocate new one and fill it
  
        else
!          DR := Allocate (DL + DL / Growth_Factor);
           DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
           DR.Data (SR.Last + 1 .. DL) := NR.Data (1 .. NR.Last);
           DR.Last := DL;
--- 576,582 ----
        --  Otherwise, allocate new one and fill it
  
        else
!          DR := Allocate (DL, DL / Growth_Factor);
           DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
           DR.Data (SR.Last + 1 .. DL) := NR.Data (1 .. NR.Last);
           DR.Last := DL;
*************** package body Ada.Strings.Unbounded is
*** 565,571 ****
        New_Item : String)
     is
        SR : constant Shared_String_Access := Source.Reference;
!       DL : constant Natural := SR.Last + New_Item'Length;
        DR : Shared_String_Access;
  
     begin
--- 590,596 ----
        New_Item : String)
     is
        SR : constant Shared_String_Access := Source.Reference;
!       DL : constant Natural := Sum (SR.Last, New_Item'Length);
        DR : Shared_String_Access;
  
     begin
*************** package body Ada.Strings.Unbounded is
*** 583,589 ****
        --  Otherwise, allocate new one and fill it
  
        else
!          DR := Allocate (DL + DL / Growth_Factor);
           DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
           DR.Data (SR.Last + 1 .. DL) := New_Item;
           DR.Last := DL;
--- 608,614 ----
        --  Otherwise, allocate new one and fill it
  
        else
!          DR := Allocate (DL, DL / Growth_Factor);
           DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
           DR.Data (SR.Last + 1 .. DL) := New_Item;
           DR.Last := DL;
*************** package body Ada.Strings.Unbounded is
*** 597,616 ****
        New_Item : Character)
     is
        SR : constant Shared_String_Access := Source.Reference;
!       DL : constant Natural := SR.Last + 1;
        DR : Shared_String_Access;
  
     begin
        --  Try to reuse existing shared string
  
!       if Can_Be_Reused (SR, SR.Last + 1) then
           SR.Data (SR.Last + 1) := New_Item;
           SR.Last := SR.Last + 1;
  
        --  Otherwise, allocate new one and fill it
  
        else
!          DR := Allocate (DL + DL / Growth_Factor);
           DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
           DR.Data (DL) := New_Item;
           DR.Last := DL;
--- 622,641 ----
        New_Item : Character)
     is
        SR : constant Shared_String_Access := Source.Reference;
!       DL : constant Natural := Sum (SR.Last, 1);
        DR : Shared_String_Access;
  
     begin
        --  Try to reuse existing shared string
  
!       if Can_Be_Reused (SR, DL) then
           SR.Data (SR.Last + 1) := New_Item;
           SR.Last := SR.Last + 1;
  
        --  Otherwise, allocate new one and fill it
  
        else
!          DR := Allocate (DL, DL / Growth_Factor);
           DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
           DR.Data (DL) := New_Item;
           DR.Last := DL;
*************** package body Ada.Strings.Unbounded is
*** 701,707 ****
           --  Result is an empty string, reuse shared empty string
  
           if DL = 0 then
-             Reference (Empty_Shared_String'Access);
              DR := Empty_Shared_String'Access;
  
           --  Otherwise, allocate new shared string and fill it
--- 726,731 ----
*************** package body Ada.Strings.Unbounded is
*** 743,749 ****
           --  Result is empty, reuse shared empty string
  
           if DL = 0 then
-             Reference (Empty_Shared_String'Access);
              Source.Reference := Empty_Shared_String'Access;
              Unreference (SR);
  
--- 767,772 ----
*************** package body Ada.Strings.Unbounded is
*** 801,807 ****
           --  effects if a program references an already-finalized object.
  
           Object.Reference := Null_Unbounded_String.Reference;
-          Reference (Object.Reference);
           Unreference (SR);
        end if;
     end Finalize;
--- 824,829 ----
*************** package body Ada.Strings.Unbounded is
*** 862,868 ****
        --  Result is empty, reuse shared empty string
  
        if Count = 0 then
-          Reference (Empty_Shared_String'Access);
           DR := Empty_Shared_String'Access;
  
        --  Length of the string is the same as requested, reuse source shared
--- 884,889 ----
*************** package body Ada.Strings.Unbounded is
*** 912,918 ****
        --  Result is empty, reuse empty shared string
  
        if Count = 0 then
-          Reference (Empty_Shared_String'Access);
           Source.Reference := Empty_Shared_String'Access;
           Unreference (SR);
  
--- 933,938 ----
*************** package body Ada.Strings.Unbounded is
*** 1090,1096 ****
        --  Result is empty, reuse empty shared string
  
        if DL = 0 then
-          Reference (Empty_Shared_String'Access);
           DR := Empty_Shared_String'Access;
  
        --  Inserted string is empty, reuse source shared string
--- 1110,1115 ----
*************** package body Ada.Strings.Unbounded is
*** 1102,1108 ****
        --  Otherwise, allocate new shared string and fill it
  
        else
!          DR := Allocate (DL + DL / Growth_Factor);
           DR.Data (1 .. Before - 1) := SR.Data (1 .. Before - 1);
           DR.Data (Before .. Before + New_Item'Length - 1) := New_Item;
           DR.Data (Before + New_Item'Length .. DL) :=
--- 1121,1127 ----
        --  Otherwise, allocate new shared string and fill it
  
        else
!          DR := Allocate (DL, DL / Growth_Factor);
           DR.Data (1 .. Before - 1) := SR.Data (1 .. Before - 1);
           DR.Data (Before .. Before + New_Item'Length - 1) := New_Item;
           DR.Data (Before + New_Item'Length .. DL) :=
*************** package body Ada.Strings.Unbounded is
*** 1132,1138 ****
        --  Result is empty string, reuse empty shared string
  
        if DL = 0 then
-          Reference (Empty_Shared_String'Access);
           Source.Reference := Empty_Shared_String'Access;
           Unreference (SR);
  
--- 1151,1156 ----
*************** package body Ada.Strings.Unbounded is
*** 1152,1158 ****
        --  Otherwise, allocate new shared string and fill it
  
        else
!          DR := Allocate (DL + DL / Growth_Factor);
           DR.Data (1 .. Before - 1) := SR.Data (1 .. Before - 1);
           DR.Data (Before .. Before + New_Item'Length - 1) := New_Item;
           DR.Data (Before + New_Item'Length .. DL) :=
--- 1170,1176 ----
        --  Otherwise, allocate new shared string and fill it
  
        else
!          DR := Allocate (DL, DL / Growth_Factor);
           DR.Data (1 .. Before - 1) := SR.Data (1 .. Before - 1);
           DR.Data (Before .. Before + New_Item'Length - 1) := New_Item;
           DR.Data (Before + New_Item'Length .. DL) :=
*************** package body Ada.Strings.Unbounded is
*** 1172,1177 ****
--- 1190,1205 ----
        return Source.Reference.Last;
     end Length;
  
+    ---------
+    -- Mul --
+    ---------
+ 
+    function Mul (Left, Right : Natural) return Natural is
+       pragma Unsuppress (Overflow_Check);
+    begin
+       return Left * Right;
+    end Mul;
+ 
     ---------------
     -- Overwrite --
     ---------------
*************** package body Ada.Strings.Unbounded is
*** 1192,1203 ****
           raise Index_Error;
        end if;
  
!       DL := Integer'Max (SR.Last, Position + New_Item'Length - 1);
  
        --  Result is empty string, reuse empty shared string
  
        if DL = 0 then
-          Reference (Empty_Shared_String'Access);
           DR := Empty_Shared_String'Access;
  
        --  Result is same as source string, reuse source shared string
--- 1220,1230 ----
           raise Index_Error;
        end if;
  
!       DL := Integer'Max (SR.Last, Sum (Position - 1, New_Item'Length));
  
        --  Result is empty string, reuse empty shared string
  
        if DL = 0 then
           DR := Empty_Shared_String'Access;
  
        --  Result is same as source string, reuse source shared string
*************** package body Ada.Strings.Unbounded is
*** 1241,1247 ****
        --  Result is empty string, reuse empty shared string
  
        if DL = 0 then
-          Reference (Empty_Shared_String'Access);
           Source.Reference := Empty_Shared_String'Access;
           Unreference (SR);
  
--- 1268,1273 ----
*************** package body Ada.Strings.Unbounded is
*** 1271,1281 ****
--- 1297,1321 ----
     end Overwrite;
  
     ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Unbounded_String) is
+    begin
+       String'Put_Image (S, To_String (V));
+    end Put_Image;
+ 
+    ---------------
     -- Reference --
     ---------------
  
     procedure Reference (Item : not null Shared_String_Access) is
     begin
+       if Item = Empty_Shared_String'Access then
+          return;
+       end if;
+ 
        System.Atomic_Counters.Increment (Item.Counter);
     end Reference;
  
*************** package body Ada.Strings.Unbounded is
*** 1341,1354 ****
        --  Do replace operation when removed slice is not empty
  
        if High >= Low then
!          DL := By'Length + SR.Last + Low - Integer'Min (High, SR.Last) - 1;
           --  This is the number of characters remaining in the string after
           --  replacing the slice.
  
           --  Result is empty string, reuse empty shared string
  
           if DL = 0 then
-             Reference (Empty_Shared_String'Access);
              DR := Empty_Shared_String'Access;
  
           --  Otherwise allocate new shared string and fill it
--- 1381,1394 ----
        --  Do replace operation when removed slice is not empty
  
        if High >= Low then
!          DL := Sum (SR.Last,
!                     By'Length + Low - Integer'Min (High, SR.Last) - 1);
           --  This is the number of characters remaining in the string after
           --  replacing the slice.
  
           --  Result is empty string, reuse empty shared string
  
           if DL = 0 then
              DR := Empty_Shared_String'Access;
  
           --  Otherwise allocate new shared string and fill it
*************** package body Ada.Strings.Unbounded is
*** 1397,1403 ****
           --  Result is empty string, reuse empty shared string
  
           if DL = 0 then
-             Reference (Empty_Shared_String'Access);
              Source.Reference := Empty_Shared_String'Access;
              Unreference (SR);
  
--- 1437,1442 ----
*************** package body Ada.Strings.Unbounded is
*** 1442,1448 ****
        --  In case of empty string, reuse empty shared string
  
        if Source'Length = 0 then
-          Reference (Empty_Shared_String'Access);
           Target.Reference := Empty_Shared_String'Access;
  
        else
--- 1481,1486 ----
*************** package body Ada.Strings.Unbounded is
*** 1488,1493 ****
--- 1526,1541 ----
        end if;
     end Slice;
  
+    ---------
+    -- Sum --
+    ---------
+ 
+    function Sum (Left : Natural; Right : Integer) return Natural is
+       pragma Unsuppress (Overflow_Check);
+    begin
+       return Left + Right;
+    end Sum;
+ 
     ----------
     -- Tail --
     ----------
*************** package body Ada.Strings.Unbounded is
*** 1504,1510 ****
        --  For empty result reuse empty shared string
  
        if Count = 0 then
-          Reference (Empty_Shared_String'Access);
           DR := Empty_Shared_String'Access;
  
        --  Result is whole source string, reuse source shared string
--- 1552,1557 ----
*************** package body Ada.Strings.Unbounded is
*** 1576,1582 ****
        --  Result is empty string, reuse empty shared string
  
        if Count = 0 then
-          Reference (Empty_Shared_String'Access);
           Source.Reference := Empty_Shared_String'Access;
           Unreference (SR);
  
--- 1623,1628 ----
*************** package body Ada.Strings.Unbounded is
*** 1619,1625 ****
  
     begin
        if Source'Length = 0 then
-          Reference (Empty_Shared_String'Access);
           DR := Empty_Shared_String'Access;
  
        else
--- 1665,1670 ----
*************** package body Ada.Strings.Unbounded is
*** 1636,1642 ****
  
     begin
        if Length = 0 then
-          Reference (Empty_Shared_String'Access);
           DR := Empty_Shared_String'Access;
  
        else
--- 1681,1686 ----
*************** package body Ada.Strings.Unbounded is
*** 1662,1668 ****
        --  Nothing to translate, reuse empty shared string
  
        if SR.Last = 0 then
-          Reference (Empty_Shared_String'Access);
           DR := Empty_Shared_String'Access;
  
        --  Otherwise, allocate new shared string and fill it
--- 1706,1711 ----
*************** package body Ada.Strings.Unbounded is
*** 1726,1732 ****
        --  Nothing to translate, reuse empty shared string
  
        if SR.Last = 0 then
-          Reference (Empty_Shared_String'Access);
           DR := Empty_Shared_String'Access;
  
        --  Otherwise, allocate new shared string and fill it
--- 1769,1774 ----
*************** package body Ada.Strings.Unbounded is
*** 1813,1819 ****
        --  All blanks, reuse empty shared string
  
        if Low = 0 then
-          Reference (Empty_Shared_String'Access);
           DR := Empty_Shared_String'Access;
  
        else
--- 1855,1860 ----
*************** package body Ada.Strings.Unbounded is
*** 1867,1873 ****
        --  All blanks, reuse empty shared string
  
        if Low = 0 then
-          Reference (Empty_Shared_String'Access);
           Source.Reference := Empty_Shared_String'Access;
           Unreference (SR);
  
--- 1908,1913 ----
*************** package body Ada.Strings.Unbounded is
*** 1929,1935 ****
        --  string.
  
        if Low = 0 then
-          Reference (Empty_Shared_String'Access);
           DR := Empty_Shared_String'Access;
  
        else
--- 1969,1974 ----
*************** package body Ada.Strings.Unbounded is
*** 1940,1946 ****
           --  is empty, reuse empty shared string.
  
           if High = 0 or else DL = 0 then
-             Reference (Empty_Shared_String'Access);
              DR := Empty_Shared_String'Access;
  
           --  Otherwise, allocate new shared string and fill it
--- 1979,1984 ----
*************** package body Ada.Strings.Unbounded is
*** 1973,1979 ****
        --  string.
  
        if Low = 0 then
-          Reference (Empty_Shared_String'Access);
           Source.Reference := Empty_Shared_String'Access;
           Unreference (SR);
  
--- 2011,2016 ----
*************** package body Ada.Strings.Unbounded is
*** 1985,1991 ****
           --  is empty, reuse empty shared string.
  
           if High = 0 or else DL = 0 then
-             Reference (Empty_Shared_String'Access);
              Source.Reference := Empty_Shared_String'Access;
              Unreference (SR);
  
--- 2022,2027 ----
*************** package body Ada.Strings.Unbounded is
*** 2023,2035 ****
     begin
        --  Check bounds
  
!       if Low > SR.Last + 1 or else High > SR.Last then
           raise Index_Error;
  
        --  Result is empty slice, reuse empty shared string
  
        elsif Low > High then
-          Reference (Empty_Shared_String'Access);
           DR := Empty_Shared_String'Access;
  
        --  Otherwise, allocate new shared string and fill it
--- 2059,2070 ----
     begin
        --  Check bounds
  
!       if Low - 1 > SR.Last or else High > SR.Last then
           raise Index_Error;
  
        --  Result is empty slice, reuse empty shared string
  
        elsif Low > High then
           DR := Empty_Shared_String'Access;
  
        --  Otherwise, allocate new shared string and fill it
*************** package body Ada.Strings.Unbounded is
*** 2058,2070 ****
     begin
        --  Check bounds
  
!       if Low > SR.Last + 1 or else High > SR.Last then
           raise Index_Error;
  
        --  Result is empty slice, reuse empty shared string
  
        elsif Low > High then
-          Reference (Empty_Shared_String'Access);
           Target.Reference := Empty_Shared_String'Access;
           Unreference (TR);
  
--- 2093,2104 ----
     begin
        --  Check bounds
  
!       if Low - 1 > SR.Last or else High > SR.Last then
           raise Index_Error;
  
        --  Result is empty slice, reuse empty shared string
  
        elsif Low > High then
           Target.Reference := Empty_Shared_String'Access;
           Unreference (TR);
  
*************** package body Ada.Strings.Unbounded is
*** 2101,2114 ****
        Aux : Shared_String_Access := Item;
  
     begin
!       if System.Atomic_Counters.Decrement (Aux.Counter) then
! 
!          --  Reference counter of Empty_Shared_String should never reach
!          --  zero. We check here in case it wraps around.
  
!          if Aux /= Empty_Shared_String'Access then
!             Free (Aux);
!          end if;
        end if;
     end Unreference;
  
--- 2135,2146 ----
        Aux : Shared_String_Access := Item;
  
     begin
!       if Aux = Empty_Shared_String'Access then
!          return;
!       end if;
  
!       if System.Atomic_Counters.Decrement (Aux.Counter) then
!          Free (Aux);
        end if;
     end Unreference;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-strunb__shared.ads gcc-11.1.0/gcc/ada/libgnat/a-strunb__shared.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-strunb__shared.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-strunb__shared.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** pragma Assertion_Policy (Pre => Ignore);
*** 78,83 ****
--- 78,84 ----
  with Ada.Strings.Maps;
  private with Ada.Finalization;
  private with System.Atomic_Counters;
+ private with Ada.Strings.Text_Output;
  
  package Ada.Strings.Unbounded with
    Initial_Condition => Length (Null_Unbounded_String) = 0
*************** private
*** 708,717 ****
     type Shared_String_Access is access all Shared_String;
  
     procedure Reference (Item : not null Shared_String_Access);
!    --  Increment reference counter
  
     procedure Unreference (Item : not null Shared_String_Access);
!    --  Decrement reference counter, deallocate Item when counter goes to zero
  
     function Can_Be_Reused
       (Item   : not null Shared_String_Access;
--- 709,720 ----
     type Shared_String_Access is access all Shared_String;
  
     procedure Reference (Item : not null Shared_String_Access);
!    --  Increment reference counter.
!    --  Do nothing if Item points to Empty_Shared_String.
  
     procedure Unreference (Item : not null Shared_String_Access);
!    --  Decrement reference counter, deallocate Item when counter goes to zero.
!    --  Do nothing if Item points to Empty_Shared_String.
  
     function Can_Be_Reused
       (Item   : not null Shared_String_Access;
*************** private
*** 736,742 ****
  
     type Unbounded_String is new AF.Controlled with record
        Reference : not null Shared_String_Access := Empty_Shared_String'Access;
!    end record;
  
     pragma Stream_Convert (Unbounded_String, To_Unbounded, To_String);
     --  Provide stream routines without dragging in Ada.Streams
--- 739,748 ----
  
     type Unbounded_String is new AF.Controlled with record
        Reference : not null Shared_String_Access := Empty_Shared_String'Access;
!    end record with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : Unbounded_String);
  
     pragma Stream_Convert (Unbounded_String, To_Unbounded, To_String);
     --  Provide stream routines without dragging in Ada.Streams
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ststbo.adb gcc-11.1.0/gcc/ada/libgnat/a-ststbo.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ststbo.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-ststbo.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,117 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT LIBRARY COMPONENTS                          --
+ --                                                                          --
+ --           A D A . S T R E A M S . S T O R A G E . B O U N D E D          --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --             Copyright (C) 2020, Free Software Foundation, Inc.           --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package body Ada.Streams.Storage.Bounded is
+ 
+    ----------
+    -- Read --
+    ----------
+ 
+    overriding procedure Read
+      (Stream : in out Stream_Type; Item : out Stream_Element_Array;
+       Last   :    out Stream_Element_Offset)
+    is
+       EA : Stream_Element_Array renames
+         Stream.Elements (1 .. Element_Count (Stream));
+    begin
+       if Item'Length = 0 then
+          Last := Item'First - 1;
+ 
+       --  If the entire content of the stream fits in Item, then copy it and
+       --  clear the stream. This is likely the usual case.
+ 
+       elsif Element_Count (Stream) <= Item'Length then
+          Last := Item'First + Element_Count (Stream) - 1;
+          Item (Item'First .. Last) := EA;
+          Clear (Stream);
+ 
+       --  Otherwise, copy as much into Item as will fit. Then slide the
+       --  remaining part of the stream down, and compute the new Count.
+       --  We expect this to be the unusual case, so the cost of copying
+       --  the remaining part probably doesn't matter.
+ 
+       else
+          Last := Item'Last;
+ 
+          declare
+             New_Count : constant Stream_Element_Count :=
+               Element_Count (Stream) - Item'Length;
+          begin
+             Item := EA (1 .. Item'Length);
+             EA (1 .. New_Count) :=
+               EA (Element_Count (Stream) - New_Count + 1 ..
+                   Element_Count (Stream));
+             Stream.Count := New_Count;
+          end;
+       end if;
+    end Read;
+ 
+    -----------
+    -- Write --
+    -----------
+ 
+    overriding procedure Write
+      (Stream : in out Stream_Type; Item : Stream_Element_Array)
+    is
+    begin
+       if Element_Count (Stream) + Item'Length > Stream.Max_Elements then
+          --  That is a precondition in the RM
+          raise Constraint_Error;
+       end if;
+ 
+       declare
+          New_Count : constant Stream_Element_Count :=
+            Element_Count (Stream) + Item'Length;
+       begin
+          Stream.Elements (Element_Count (Stream) + 1 .. New_Count) := Item;
+          Stream.Count := New_Count;
+       end;
+    end Write;
+ 
+    -------------------
+    -- Element_Count --
+    -------------------
+ 
+    overriding function Element_Count
+      (Stream : Stream_Type) return Stream_Element_Count
+    is
+    begin
+       return Stream.Count;
+    end Element_Count;
+ 
+    -----------
+    -- Clear --
+    -----------
+ 
+    overriding procedure Clear (Stream : in out Stream_Type)
+    is
+    begin
+       Stream.Count := 0;
+    end Clear;
+ 
+ end Ada.Streams.Storage.Bounded;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ststbo.ads gcc-11.1.0/gcc/ada/libgnat/a-ststbo.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ststbo.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-ststbo.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,73 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT LIBRARY COMPONENTS                          --
+ --                                                                          --
+ --           A D A . S T R E A M S . S T O R A G E . B O U N D E D          --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --             Copyright (C) 2020, Free Software Foundation, Inc.           --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT. The copyright notice above, and the license provisions that follow --
+ -- apply solely to the  contents of the part following the private keyword. --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package Ada.Streams.Storage.Bounded with Pure is
+ 
+    type Stream_Type (Max_Elements : Stream_Element_Count) is
+      new Storage_Stream_Type with private with
+       Default_Initial_Condition => Element_Count (Stream_Type) = 0;
+ 
+    overriding procedure Read
+      (Stream : in out Stream_Type; Item : out Stream_Element_Array;
+       Last   :    out Stream_Element_Offset)
+        with Post =>
+          (declare
+             Num_Read : constant Stream_Element_Count :=
+               Stream_Element_Count'Min
+                 (Element_Count (Stream)'Old, Item'Length);
+           begin
+             Last = Num_Read + Item'First - 1
+               and
+             Element_Count (Stream) =
+               Element_Count (Stream)'Old - Num_Read);
+ 
+    overriding procedure Write
+      (Stream : in out Stream_Type; Item : Stream_Element_Array) with
+       Post => Element_Count (Stream) =
+       Element_Count (Stream)'Old + Item'Length;
+ 
+    overriding function Element_Count
+      (Stream : Stream_Type) return Stream_Element_Count with
+       Post => Element_Count'Result <= Stream.Max_Elements;
+ 
+    overriding procedure Clear (Stream : in out Stream_Type) with
+       Post => Element_Count (Stream) = 0;
+ 
+ private
+ 
+    type Stream_Type (Max_Elements : Stream_Element_Count) is
+      new Storage_Stream_Type with record
+       Count : Stream_Element_Count := 0;
+       Elements : Stream_Element_Array (1 .. Max_Elements);
+    end record;
+ 
+ end Ada.Streams.Storage.Bounded;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ststio.adb gcc-11.1.0/gcc/ada/libgnat/a-ststio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ststio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ststio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ststio.ads gcc-11.1.0/gcc/ada/libgnat/a-ststio.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ststio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ststio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ststun.adb gcc-11.1.0/gcc/ada/libgnat/a-ststun.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ststun.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-ststun.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,151 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT LIBRARY COMPONENTS                          --
+ --                                                                          --
+ --         A D A . S T R E A M S . S T O R A G E . U N B O U N D E D        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --             Copyright (C) 2020, Free Software Foundation, Inc.           --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Unchecked_Deallocation;
+ 
+ package body Ada.Streams.Storage.Unbounded is
+ 
+    procedure Free is new Ada.Unchecked_Deallocation
+      (Elements_Type, Elements_Access);
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    overriding procedure Finalize (X : in out Controlled_Elements_Access) is
+    begin
+       if X.A /= Empty_Elements'Access then
+          Free (X.A);
+       end if;
+    end Finalize;
+ 
+    ----------
+    -- Read --
+    ----------
+ 
+    overriding procedure Read
+      (Stream : in out Stream_Type; Item : out Stream_Element_Array;
+       Last   :    out Stream_Element_Offset)
+    is
+       EA : Stream_Element_Array renames
+         Stream.Elements.A.EA (1 .. Element_Count (Stream));
+    begin
+       if Item'Length = 0 then
+          Last := Item'First - 1;
+ 
+       --  If the entire content of the stream fits in Item, then copy it and
+       --  clear the stream. This is likely the usual case.
+ 
+       elsif Element_Count (Stream) <= Item'Length then
+          Last := Item'First + Element_Count (Stream) - 1;
+          Item (Item'First .. Last) := EA;
+          Clear (Stream);
+ 
+       --  Otherwise, copy as much into Item as will fit. Then slide the
+       --  remaining part of the stream down, and compute the new Count.
+       --  We expect this to be the unusual case, so the cost of copying
+       --  the remaining part probably doesn't matter.
+ 
+       else
+          Last := Item'Last;
+ 
+          declare
+             New_Count : constant Stream_Element_Count :=
+               Element_Count (Stream) - Item'Length;
+          begin
+             Item := EA (1 .. Item'Length);
+             EA (1 .. New_Count) :=
+               EA (Element_Count (Stream) - New_Count + 1 ..
+                   Element_Count (Stream));
+             Stream.Count := New_Count;
+          end;
+       end if;
+    end Read;
+ 
+    -----------
+    -- Write --
+    -----------
+ 
+    overriding procedure Write
+      (Stream : in out Stream_Type; Item : Stream_Element_Array)
+    is
+       New_Count : constant Stream_Element_Count :=
+         Element_Count (Stream) + Item'Length;
+    begin
+       --  Check whether we need to grow the array. If so, then if the Stream is
+       --  empty, allocate a goodly amount. Otherwise double the length, for
+       --  amortized efficiency. In any case, we need to make sure it's at least
+       --  big enough for New_Count.
+ 
+       if New_Count > Stream.Elements.A.Last then
+          declare
+             New_Last : Stream_Element_Index :=
+               (if Stream.Elements.A.Last = 0 then 2**10 -- goodly amount
+                else Stream.Elements.A.Last * 2);
+             Old_Elements : Elements_Access := Stream.Elements.A;
+          begin
+             if New_Last < New_Count then
+                New_Last := New_Count;
+             end if;
+ 
+             Stream.Elements.A := new Elements_Type (Last => New_Last);
+ 
+             if Old_Elements /= Empty_Elements'Access then
+                Stream.Elements.A.EA (Old_Elements.EA'Range) := Old_Elements.EA;
+                Free (Old_Elements);
+             end if;
+          end;
+       end if;
+ 
+       Stream.Elements.A.EA (Element_Count (Stream) + 1 .. New_Count) := Item;
+       Stream.Count := New_Count;
+    end Write;
+ 
+    -------------------
+    -- Element_Count --
+    -------------------
+ 
+    overriding function Element_Count
+      (Stream : Stream_Type) return Stream_Element_Count
+    is
+    begin
+       return Stream.Count;
+    end Element_Count;
+ 
+    -----------
+    -- Clear --
+    -----------
+ 
+    overriding procedure Clear (Stream : in out Stream_Type) is
+    begin
+       Stream.Count := 0;
+       --  We don't free Stream.Elements here, because we want to reuse it if
+       --  there are more Write calls.
+    end Clear;
+ 
+ end Ada.Streams.Storage.Unbounded;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ststun.ads gcc-11.1.0/gcc/ada/libgnat/a-ststun.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ststun.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-ststun.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,91 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT LIBRARY COMPONENTS                          --
+ --                                                                          --
+ --         A D A . S T R E A M S . S T O R A G E . U N B O U N D E D        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --             Copyright (C) 2020, Free Software Foundation, Inc.           --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT. The copyright notice above, and the license provisions that follow --
+ -- apply solely to the  contents of the part following the private keyword. --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ private with Ada.Finalization;
+ 
+ package Ada.Streams.Storage.Unbounded with Preelaborate is
+ 
+    type Stream_Type is new Storage_Stream_Type with private with
+       Default_Initial_Condition => Element_Count (Stream_Type) = 0;
+ 
+    overriding procedure Read
+      (Stream : in out Stream_Type; Item : out Stream_Element_Array;
+       Last   :    out Stream_Element_Offset)
+        with Post =>
+          (declare
+             Num_Read : constant Stream_Element_Count :=
+               Stream_Element_Count'Min
+                 (Element_Count (Stream)'Old, Item'Length);
+           begin
+             Last = Num_Read + Item'First - 1
+               and
+             Element_Count (Stream) =
+               Element_Count (Stream)'Old - Num_Read);
+ 
+    overriding procedure Write
+      (Stream : in out Stream_Type; Item : Stream_Element_Array) with
+       Post => Element_Count (Stream) =
+       Element_Count (Stream)'Old + Item'Length;
+ 
+    overriding function Element_Count
+      (Stream : Stream_Type) return Stream_Element_Count;
+ 
+    overriding procedure Clear (Stream : in out Stream_Type) with
+       Post => Element_Count (Stream) = 0;
+ 
+ private
+ 
+    subtype Stream_Element_Index is Stream_Element_Count
+      range 1 .. Stream_Element_Count'Last;
+ 
+    type Elements_Type (Last : Stream_Element_Count) is limited record
+       EA : Stream_Element_Array (1 .. Last);
+    end record;
+ 
+    Empty_Elements : aliased Elements_Type (0);
+ 
+    type Elements_Access is access all Elements_Type;
+ 
+    type Controlled_Elements_Access is
+      new Finalization.Limited_Controlled with record
+       A : Elements_Access;
+    end record;
+ 
+    overriding procedure Finalize (X : in out Controlled_Elements_Access);
+ 
+    type Stream_Type is new Storage_Stream_Type with record
+       Elements : Controlled_Elements_Access :=
+         (Finalization.Limited_Controlled with A => Empty_Elements'Access);
+       Count : Stream_Element_Count := 0;
+    end record;
+ 
+ end Ada.Streams.Storage.Unbounded;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stteou.ads gcc-11.1.0/gcc/ada/libgnat/a-stteou.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stteou.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-stteou.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,193 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                          ADA.STRINGS.TEXT_OUTPUT                         --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Strings.UTF_Encoding;
+ with Ada.Strings.UTF_Encoding.Wide_Wide_Strings;
+ 
+ package Ada.Strings.Text_Output with Pure is
+ 
+    --  This package provides a "Sink" abstraction, to which characters of type
+    --  Character, Wide_Character, and Wide_Wide_Character can be sent. This
+    --  type is used by the Put_Image attribute. In particular, T'Put_Image has
+    --  the following parameter types:
+    --
+    --     procedure T'Put_Image (S : in out Sink'Class; V : T);
+    --
+    --  The default generated code for Put_Image of a composite type will
+    --  typically call Put_Image on the components.
+    --
+    --  This is not a fully general abstraction that can be arbitrarily
+    --  extended. It is designed with particular extensions in mind, and these
+    --  extensions are declared in child packages of this package, because they
+    --  depend on implementation details in the private part of this
+    --  package.
+    --
+    --  Users are not expected to extend type Sink.
+    --
+    --  The primary extensions of Sink are:
+    --
+    --     Buffer. The characters sent to a Buffer are stored in memory, and can
+    --     be retrieved via Get functions. This is intended for the
+    --     implementation of the 'Image attribute. The compiler will generate a
+    --     T'Image function that declares a local Buffer, sends characters to
+    --     it, and then returns a call to Get, Destroying the Buffer on return.
+    --
+    --       function T'Image (V : T) return String is
+    --          Buf : Buffer := New_Buffer (...);
+    --       begin
+    --          T'Put_Image (Buf, V);
+    --          return Result : constant String := Get (Buf) do
+    --             Destroy (Buf);
+    --          end return;
+    --       end T'Image;
+    --       ????Perhaps Buffer should be controlled; if you don't like
+    --       controlled types, call Put_Image directly.
+    --
+    --     File. The characters are sent to a file, possibly opened by file
+    --     name, or possibly standard output or standard error. 'Put_Image
+    --     can be called directly on a File, thus avoiding any heap allocation.
+ 
+    type Sink (<>) is abstract tagged limited private;
+    type Sink_Access is access all Sink'Class with Storage_Size => 0;
+    --  Sink is a character sink; you can send characters to a Sink.
+    --  UTF-8 encoding is used.
+ 
+    procedure Full_Method (S : in out Sink) is abstract;
+    procedure Flush_Method (S : in out Sink) is abstract;
+    --  There is an internal buffer to store the characters. Full_Method is
+    --  called when the buffer is full, and Flush_Method may be called to flush
+    --  the buffer. For Buffer, Full_Method allocates more space for more
+    --  characters, and Flush_Method does nothing. For File, Full_Method and
+    --  Flush_Method do the same thing: write the characters to the file, and
+    --  empty the internal buffer.
+    --
+    --  These are the only dispatching subprograms on Sink. This is for
+    --  efficiency; we don't dispatch on every write to the Sink, but only when
+    --  the internal buffer is full (or upon client request).
+    --
+    --  Full_Method and Flush_Method must make the current chunk empty.
+    --
+    --  Additional operations operating on Sink'Class are declared in the Utils
+    --  child, including Full and Flush, which call the above.
+ 
+    function To_Wide (C : Character) return Wide_Character is
+      (Wide_Character'Val (Character'Pos (C)));
+    function To_Wide_Wide (C : Character) return Wide_Wide_Character is
+      (Wide_Wide_Character'Val (Character'Pos (C)));
+    function To_Wide_Wide (C : Wide_Character) return Wide_Wide_Character is
+      (Wide_Wide_Character'Val (Wide_Character'Pos (C)));
+    --  Conversions [Wide_]Character --> [Wide_]Wide_Character.
+    --  These cannot fail.
+ 
+    function From_Wide (C : Wide_Character) return Character is
+      (Character'Val (Wide_Character'Pos (C)));
+    function From_Wide_Wide (C : Wide_Wide_Character) return Character is
+      (Character'Val (Wide_Wide_Character'Pos (C)));
+    function From_Wide_Wide (C : Wide_Wide_Character) return Wide_Character is
+      (Wide_Character'Val (Wide_Wide_Character'Pos (C)));
+    --  Conversions [Wide_]Wide_Character --> [Wide_]Character.
+    --  These fail if the character is out of range.
+ 
+    function NL return Character is (ASCII.LF) with Inline;
+    function Wide_NL return Wide_Character is (To_Wide (Character'(NL)))
+      with Inline;
+    function Wide_Wide_NL return Wide_Wide_Character is
+      (To_Wide_Wide (Character'(NL))) with Inline;
+    --  Character representing new line. There is no support for CR/LF line
+    --  endings.
+ 
+    --  We have two subtypes of String that are encoded in UTF-8. UTF_8 cannot
+    --  contain newline characters; UTF_8_Lines can. Sending UTF_8 data to a
+    --  Sink is more efficient, because end-of-line processing is not needed.
+    --  Both of these are more efficient than [[Wide_]Wide_]String, because no
+    --  encoding is needed.
+ 
+    subtype UTF_8_Lines is UTF_Encoding.UTF_8_String with
+      Predicate =>
+        UTF_Encoding.Wide_Wide_Strings.Encode
+          (UTF_Encoding.Wide_Wide_Strings.Decode (UTF_8_Lines)) = UTF_8_Lines;
+ 
+    subtype UTF_8 is UTF_8_Lines with
+      Predicate => (for all UTF_8_Char of UTF_8 => UTF_8_Char /= NL);
+ 
+    Default_Indent_Amount : constant Natural := 4;
+ 
+    Default_Chunk_Length : constant Positive := 500;
+    --  Experiment shows this value to be reasonably efficient; decreasing it
+    --  slows things down, but increasing it doesn't gain much.
+ 
+ private
+    --  For Buffer, the "internal buffer" mentioned above is implemented as a
+    --  linked list of chunks. When the current chunk is full, we allocate a new
+    --  one. For File, there is only one chunk. When it is full, we send the
+    --  data to the file, and empty it.
+ 
+    type Chunk;
+    type Chunk_Access is access all Chunk with Storage_Size => 0;
+    type Chunk (Length : Positive) is limited record
+       Next : Chunk_Access := null;
+       Chars : UTF_8_Lines (1 .. Length);
+    end record;
+ 
+    type Sink (Chunk_Length : Positive) is abstract tagged limited record
+       Indent_Amount : Natural;
+       Column : Positive := 1;
+       Indentation : Natural := 0;
+ 
+       All_7_Bits : Boolean := True;
+       --  For optimization of Text_Output.Buffers.Get (cf).
+       --  True if all characters seen so far fit in 7 bits.
+       --  7-bit characters are represented the same in Character
+       --  and in UTF-8, so they don't need translation.
+ 
+       All_8_Bits : Boolean := True;
+       --  True if all characters seen so far fit in 8 bits.
+       --  This is needed in Text_Output.Buffers.Get to distinguish
+       --  the case where all characters are Latin-1 (so it should
+       --  decode) from the case where some characters are bigger than
+       --  8 bits (so the result is implementation defined).
+ 
+       Cur_Chunk : Chunk_Access;
+       --  Points to the chunk we are currently sending characters to.
+       --  We want to say:
+       --     Cur_Chunk : Chunk_Access := Initial_Chunk'Access;
+       --  but that's illegal, so we have some horsing around to do.
+ 
+       Last : Natural := 0;
+       --  Last-used character in Cur_Chunk.all.
+ 
+       Initial_Chunk : aliased Chunk (Length => Chunk_Length);
+       --  For Buffer, this is the first chunk. Subsequent chunks are allocated
+       --  on the heap. For File, this is the only chunk, and there is no heap
+       --  allocation.
+    end record;
+ 
+ end Ada.Strings.Text_Output;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stunau.adb gcc-11.1.0/gcc/ada/libgnat/a-stunau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stunau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stunau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stunau.ads gcc-11.1.0/gcc/ada/libgnat/a-stunau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stunau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stunau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stunau__shared.adb gcc-11.1.0/gcc/ada/libgnat/a-stunau__shared.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stunau__shared.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stunau__shared.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stunha.adb gcc-11.1.0/gcc/ada/libgnat/a-stunha.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stunha.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stunha.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stuten.adb gcc-11.1.0/gcc/ada/libgnat/a-stuten.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stuten.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stuten.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2010-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2010-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stwibo.adb gcc-11.1.0/gcc/ada/libgnat/a-stwibo.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stwibo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stwibo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stwibo.ads gcc-11.1.0/gcc/ada/libgnat/a-stwibo.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stwibo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stwibo.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stwifi.adb gcc-11.1.0/gcc/ada/libgnat/a-stwifi.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stwifi.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stwifi.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stwiha.adb gcc-11.1.0/gcc/ada/libgnat/a-stwiha.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stwiha.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stwiha.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stwima.adb gcc-11.1.0/gcc/ada/libgnat/a-stwima.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stwima.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stwima.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stwima.ads gcc-11.1.0/gcc/ada/libgnat/a-stwima.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stwima.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stwima.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stwise.adb gcc-11.1.0/gcc/ada/libgnat/a-stwise.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stwise.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stwise.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stwise.ads gcc-11.1.0/gcc/ada/libgnat/a-stwise.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stwise.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stwise.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stwisu.adb gcc-11.1.0/gcc/ada/libgnat/a-stwisu.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stwisu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stwisu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stwisu.ads gcc-11.1.0/gcc/ada/libgnat/a-stwisu.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stwisu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stwisu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stwiun.adb gcc-11.1.0/gcc/ada/libgnat/a-stwiun.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stwiun.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stwiun.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stwiun.ads gcc-11.1.0/gcc/ada/libgnat/a-stwiun.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stwiun.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stwiun.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stwiun__shared.adb gcc-11.1.0/gcc/ada/libgnat/a-stwiun__shared.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stwiun__shared.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stwiun__shared.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stwiun__shared.ads gcc-11.1.0/gcc/ada/libgnat/a-stwiun__shared.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stwiun__shared.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stwiun__shared.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stzbou.adb gcc-11.1.0/gcc/ada/libgnat/a-stzbou.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stzbou.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stzbou.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stzbou.ads gcc-11.1.0/gcc/ada/libgnat/a-stzbou.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stzbou.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stzbou.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stzfix.adb gcc-11.1.0/gcc/ada/libgnat/a-stzfix.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stzfix.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stzfix.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stzhas.adb gcc-11.1.0/gcc/ada/libgnat/a-stzhas.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stzhas.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stzhas.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2009-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2009-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,36 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
--- 29,42 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.String_Hash;
  
! function Ada.Strings.Wide_Wide_Hash
!   (Key : Wide_Wide_String) return Containers.Hash_Type
! is
!    use Ada.Containers;
!    function Hash_Fun is new System.String_Hash.Hash
!      (Wide_Wide_Character, Wide_Wide_String, Hash_Type);
! begin
!    return Hash_Fun (Key);
! end Ada.Strings.Wide_Wide_Hash;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stzhas.ads gcc-11.1.0/gcc/ada/libgnat/a-stzhas.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stzhas.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stzhas.ads	Tue Apr 27 10:00:12 2021
***************
*** 13,25 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- --  Is this really an RM unit? Doc needed???
- 
  with Ada.Containers;
- with System.String_Hash;
  
  function Ada.Strings.Wide_Wide_Hash
! is new System.String_Hash.Hash
!   (Wide_Wide_Character, Wide_Wide_String, Containers.Hash_Type);
  
  pragma Pure (Ada.Strings.Wide_Wide_Hash);
--- 13,21 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with Ada.Containers;
  
  function Ada.Strings.Wide_Wide_Hash
!   (Key : Wide_Wide_String) return Containers.Hash_Type;
  
  pragma Pure (Ada.Strings.Wide_Wide_Hash);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stzmap.adb gcc-11.1.0/gcc/ada/libgnat/a-stzmap.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stzmap.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stzmap.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stzmap.ads gcc-11.1.0/gcc/ada/libgnat/a-stzmap.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stzmap.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stzmap.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stzsea.adb gcc-11.1.0/gcc/ada/libgnat/a-stzsea.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stzsea.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stzsea.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stzsea.ads gcc-11.1.0/gcc/ada/libgnat/a-stzsea.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stzsea.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stzsea.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stzsup.adb gcc-11.1.0/gcc/ada/libgnat/a-stzsup.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stzsup.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stzsup.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stzsup.ads gcc-11.1.0/gcc/ada/libgnat/a-stzsup.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stzsup.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stzsup.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stzunb.adb gcc-11.1.0/gcc/ada/libgnat/a-stzunb.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stzunb.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stzunb.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stzunb.ads gcc-11.1.0/gcc/ada/libgnat/a-stzunb.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stzunb.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stzunb.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stzunb__shared.adb gcc-11.1.0/gcc/ada/libgnat/a-stzunb__shared.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-stzunb__shared.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stzunb__shared.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-stzunb__shared.ads gcc-11.1.0/gcc/ada/libgnat/a-stzunb__shared.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-stzunb__shared.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-stzunb__shared.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-suecin.adb gcc-11.1.0/gcc/ada/libgnat/a-suecin.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-suecin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-suecin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-suecin.ads gcc-11.1.0/gcc/ada/libgnat/a-suecin.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-suecin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-suecin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-suenco.adb gcc-11.1.0/gcc/ada/libgnat/a-suenco.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-suenco.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-suenco.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Strings.UTF_Encoding.Co
*** 398,404 ****
                                or Shift_Right (yyyyyyyy, 4));
              Result (Len + 3) :=
                Character'Val
!                 (2#10_000000# or Shift_Left (yyyyyyyy and 2#1111#, 4)
                                or Shift_Right (xxxxxxxx, 6));
              Result (Len + 4) :=
                Character'Val
--- 398,404 ----
                                or Shift_Right (yyyyyyyy, 4));
              Result (Len + 3) :=
                Character'Val
!                 (2#10_000000# or Shift_Left (yyyyyyyy and 2#1111#, 2)
                                or Shift_Right (xxxxxxxx, 6));
              Result (Len + 4) :=
                Character'Val
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-suenst.adb gcc-11.1.0/gcc/ada/libgnat/a-suenst.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-suenst.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-suenst.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-suewst.adb gcc-11.1.0/gcc/ada/libgnat/a-suewst.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-suewst.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-suewst.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-suezst.adb gcc-11.1.0/gcc/ada/libgnat/a-suezst.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-suezst.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-suezst.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-suhcin.adb gcc-11.1.0/gcc/ada/libgnat/a-suhcin.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-suhcin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-suhcin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-suhcin.ads gcc-11.1.0/gcc/ada/libgnat/a-suhcin.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-suhcin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-suhcin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-sulcin.adb gcc-11.1.0/gcc/ada/libgnat/a-sulcin.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-sulcin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-sulcin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-sulcin.ads gcc-11.1.0/gcc/ada/libgnat/a-sulcin.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-sulcin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-sulcin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-suteio.adb gcc-11.1.0/gcc/ada/libgnat/a-suteio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-suteio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-suteio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-suteio.ads gcc-11.1.0/gcc/ada/libgnat/a-suteio.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-suteio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-suteio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-suteio__shared.adb gcc-11.1.0/gcc/ada/libgnat/a-suteio__shared.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-suteio__shared.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-suteio__shared.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-swbwha.adb gcc-11.1.0/gcc/ada/libgnat/a-swbwha.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-swbwha.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-swbwha.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-swmwco.ads gcc-11.1.0/gcc/ada/libgnat/a-swmwco.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-swmwco.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-swmwco.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-swunau.adb gcc-11.1.0/gcc/ada/libgnat/a-swunau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-swunau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-swunau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-swunau.ads gcc-11.1.0/gcc/ada/libgnat/a-swunau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-swunau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-swunau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-swunau__shared.adb gcc-11.1.0/gcc/ada/libgnat/a-swunau__shared.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-swunau__shared.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-swunau__shared.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-swuwha.adb gcc-11.1.0/gcc/ada/libgnat/a-swuwha.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-swuwha.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-swuwha.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-swuwti.adb gcc-11.1.0/gcc/ada/libgnat/a-swuwti.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-swuwti.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-swuwti.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-swuwti.ads gcc-11.1.0/gcc/ada/libgnat/a-swuwti.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-swuwti.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-swuwti.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-swuwti__shared.adb gcc-11.1.0/gcc/ada/libgnat/a-swuwti__shared.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-swuwti__shared.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-swuwti__shared.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-szbzha.adb gcc-11.1.0/gcc/ada/libgnat/a-szbzha.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-szbzha.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-szbzha.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-szmzco.ads gcc-11.1.0/gcc/ada/libgnat/a-szmzco.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-szmzco.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-szmzco.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-szunau.adb gcc-11.1.0/gcc/ada/libgnat/a-szunau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-szunau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-szunau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-szunau.ads gcc-11.1.0/gcc/ada/libgnat/a-szunau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-szunau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-szunau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-szunau__shared.adb gcc-11.1.0/gcc/ada/libgnat/a-szunau__shared.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-szunau__shared.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-szunau__shared.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-szuzha.adb gcc-11.1.0/gcc/ada/libgnat/a-szuzha.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-szuzha.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-szuzha.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-szuzti.adb gcc-11.1.0/gcc/ada/libgnat/a-szuzti.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-szuzti.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-szuzti.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-szuzti.ads gcc-11.1.0/gcc/ada/libgnat/a-szuzti.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-szuzti.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-szuzti.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-szuzti__shared.adb gcc-11.1.0/gcc/ada/libgnat/a-szuzti__shared.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-szuzti__shared.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-szuzti__shared.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tags.adb gcc-11.1.0/gcc/ada/libgnat/a-tags.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tags.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tags.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,36 ****
  ------------------------------------------------------------------------------
  
  with Ada.Exceptions;
- with Ada.Unchecked_Conversion;
  
  with System.HTable;
  with System.Storage_Elements; use System.Storage_Elements;
--- 30,35 ----
*************** package body Ada.Tags is
*** 49,58 ****
     -- Local Subprograms --
     -----------------------
  
-    function CW_Membership (Obj_Tag : Tag; Typ_Tag : Tag) return Boolean;
-    --  Given the tag of an object and the tag associated to a type, return
-    --  true if Obj is in Typ'Class.
- 
     function Get_External_Tag (T : Tag) return System.Address;
     --  Returns address of a null terminated string containing the external name
  
--- 48,53 ----
*************** package body Ada.Tags is
*** 82,88 ****
     --  Ada 2005 (AI-251): Given a pointer T to a dispatch Table, retrieves the
     --  address of the record containing the Select Specific Data in T's TSD.
  
-    pragma Inline_Always (CW_Membership);
     pragma Inline_Always (Get_External_Tag);
     pragma Inline_Always (Is_Primary_DT);
     pragma Inline_Always (OSD);
--- 77,82 ----
*************** package body Ada.Tags is
*** 101,112 ****
     function To_Tag is
       new Unchecked_Conversion (Integer_Address, Tag);
  
-    function To_Addr_Ptr is
-       new Ada.Unchecked_Conversion (System.Address, Addr_Ptr);
- 
-    function To_Address is
-      new Ada.Unchecked_Conversion (Tag, System.Address);
- 
     function To_Dispatch_Table_Ptr is
        new Ada.Unchecked_Conversion (Tag, Dispatch_Table_Ptr);
  
--- 95,100 ----
*************** package body Ada.Tags is
*** 119,127 ****
     function To_Tag_Ptr is
       new Ada.Unchecked_Conversion (System.Address, Tag_Ptr);
  
-    function To_Type_Specific_Data_Ptr is
-      new Ada.Unchecked_Conversion (System.Address, Type_Specific_Data_Ptr);
- 
     -------------------------------
     -- Inline_Always Subprograms --
     -------------------------------
--- 107,112 ----
*************** package body Ada.Tags is
*** 130,169 ****
     --  avoid defeating the frontend inlining mechanism and thus ensure the
     --  generation of their correct debug info.
  
-    -------------------
-    -- CW_Membership --
-    -------------------
- 
-    --  Canonical implementation of Classwide Membership corresponding to:
- 
-    --     Obj in Typ'Class
- 
-    --  Each dispatch table contains a reference to a table of ancestors (stored
-    --  in the first part of the Tags_Table) and a count of the level of
-    --  inheritance "Idepth".
- 
-    --  Obj is in Typ'Class if Typ'Tag is in the table of ancestors that are
-    --  contained in the dispatch table referenced by Obj'Tag . Knowing the
-    --  level of inheritance of both types, this can be computed in constant
-    --  time by the formula:
- 
-    --   TSD (Obj'tag).Tags_Table (TSD (Obj'tag).Idepth - TSD (Typ'tag).Idepth)
-    --     = Typ'tag
- 
-    function CW_Membership (Obj_Tag : Tag; Typ_Tag : Tag) return Boolean is
-       Obj_TSD_Ptr : constant Addr_Ptr :=
-         To_Addr_Ptr (To_Address (Obj_Tag) - DT_Typeinfo_Ptr_Size);
-       Typ_TSD_Ptr : constant Addr_Ptr :=
-         To_Addr_Ptr (To_Address (Typ_Tag) - DT_Typeinfo_Ptr_Size);
-       Obj_TSD     : constant Type_Specific_Data_Ptr :=
-         To_Type_Specific_Data_Ptr (Obj_TSD_Ptr.all);
-       Typ_TSD     : constant Type_Specific_Data_Ptr :=
-         To_Type_Specific_Data_Ptr (Typ_TSD_Ptr.all);
-       Pos         : constant Integer := Obj_TSD.Idepth - Typ_TSD.Idepth;
-    begin
-       return Pos >= 0 and then Obj_TSD.Tags_Table (Pos) = Typ_Tag;
-    end CW_Membership;
- 
     ----------------------
     -- Get_External_Tag --
     ----------------------
--- 115,120 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tags.ads gcc-11.1.0/gcc/ada/libgnat/a-tags.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-tags.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tags.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
***************
*** 65,70 ****
--- 65,71 ----
  --    length depends on the number of interfaces covered by a tagged type.
  
  with System.Storage_Elements;
+ with Ada.Unchecked_Conversion;
  
  package Ada.Tags is
     pragma Preelaborate;
*************** private
*** 588,594 ****
     procedure Unregister_Tag (T : Tag);
     --  Remove a particular tag from the external tag hash table
  
!    Max_Predef_Prims : constant Positive := 15;
     --  Number of reserved slots for the following predefined ada primitives:
     --
     --    1. Size
--- 589,595 ----
     procedure Unregister_Tag (T : Tag);
     --  Remove a particular tag from the external tag hash table
  
!    Max_Predef_Prims : constant Positive := 16;
     --  Number of reserved slots for the following predefined ada primitives:
     --
     --    1. Size
*************** private
*** 600,611 ****
     --    7. assignment
     --    8. deep adjust
     --    9. deep finalize
!    --   10. async select
!    --   11. conditional select
!    --   12. prim_op kind
!    --   13. task_id
!    --   14. dispatching requeue
!    --   15. timed select
     --
     --  The compiler checks that the value here is correct
  
--- 601,613 ----
     --    7. assignment
     --    8. deep adjust
     --    9. deep finalize
!    --   10. Put_Image
!    --   11. async select
!    --   12. conditional select
!    --   13. prim_op kind
!    --   14. task_id
!    --   15. dispatching requeue
!    --   16. timed select
     --
     --  The compiler checks that the value here is correct
  
*************** private
*** 618,621 ****
--- 620,668 ----
     --  This type is used by the frontend to generate the code that handles
     --  dispatch table slots of types declared at the local level.
  
+    -------------------
+    -- CW_Membership --
+    -------------------
+ 
+    function To_Address is
+      new Ada.Unchecked_Conversion (Tag, System.Address);
+ 
+    function To_Addr_Ptr is
+       new Ada.Unchecked_Conversion (System.Address, Addr_Ptr);
+ 
+    function To_Type_Specific_Data_Ptr is
+      new Ada.Unchecked_Conversion (System.Address, Type_Specific_Data_Ptr);
+ 
+    --  Canonical implementation of Classwide Membership corresponding to:
+ 
+    --     Obj in Typ'Class
+ 
+    --  Each dispatch table contains a reference to a table of ancestors (stored
+    --  in the first part of the Tags_Table) and a count of the level of
+    --  inheritance "Idepth".
+ 
+    --  Obj is in Typ'Class if Typ'Tag is in the table of ancestors that are
+    --  contained in the dispatch table referenced by Obj'Tag . Knowing the
+    --  level of inheritance of both types, this can be computed in constant
+    --  time by the formula:
+ 
+    --   TSD (Obj'tag).Tags_Table (TSD (Obj'tag).Idepth - TSD (Typ'tag).Idepth)
+    --     = Typ'tag
+ 
+    function CW_Membership (Obj_Tag : Tag; Typ_Tag : Tag) return Boolean is
+      (declare
+          Obj_TSD_Ptr : constant Addr_Ptr :=
+            To_Addr_Ptr (To_Address (Obj_Tag) - DT_Typeinfo_Ptr_Size);
+          Typ_TSD_Ptr : constant Addr_Ptr :=
+            To_Addr_Ptr (To_Address (Typ_Tag) - DT_Typeinfo_Ptr_Size);
+          Obj_TSD     : constant Type_Specific_Data_Ptr :=
+            To_Type_Specific_Data_Ptr (Obj_TSD_Ptr.all);
+          Typ_TSD     : constant Type_Specific_Data_Ptr :=
+            To_Type_Specific_Data_Ptr (Typ_TSD_Ptr.all);
+          Pos         : constant Integer := Obj_TSD.Idepth - Typ_TSD.Idepth;
+       begin
+          Pos >= 0 and then Obj_TSD.Tags_Table (Pos) = Typ_Tag);
+    --  Given the tag of an object and the tag associated to a type, return
+    --  true if Obj is in Typ'Class.
+ 
  end Ada.Tags;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-teioed.adb gcc-11.1.0/gcc/ada/libgnat/a-teioed.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-teioed.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-teioed.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-teioed.ads gcc-11.1.0/gcc/ada/libgnat/a-teioed.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-teioed.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-teioed.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-textio.adb gcc-11.1.0/gcc/ada/libgnat/a-textio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-textio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-textio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-textio.ads gcc-11.1.0/gcc/ada/libgnat/a-textio.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-textio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-textio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
***************
*** 36,43 ****
  --  Preconditions in this unit are meant for analysis only, not for run-time
  --  checking, so that the expected exceptions are raised. This is enforced by
  --  setting the corresponding assertion policy to Ignore. These preconditions
! --  are partial and protect against Status_Error, Mode_Error, and Layout_Error,
! --  but not against other types of errors.
  
  pragma Assertion_Policy (Pre => Ignore);
  
--- 36,44 ----
  --  Preconditions in this unit are meant for analysis only, not for run-time
  --  checking, so that the expected exceptions are raised. This is enforced by
  --  setting the corresponding assertion policy to Ignore. These preconditions
! --  are partial. They protect fully against Status_Error and Mode_Error,
! --  partially against Layout_Error (see SPARK User's Guide for details), and
! --  not against other types of errors.
  
  pragma Assertion_Policy (Pre => Ignore);
  
*************** is
*** 70,76 ****
     --  used in this package and System.File_IO.
  
     for File_Mode use
!      (In_File     => 0,  -- System.FIle_IO.File_Mode'Pos (In_File)
        Out_File    => 2,  -- System.File_IO.File_Mode'Pos (Out_File)
        Append_File => 3); -- System.File_IO.File_Mode'Pos (Append_File)
  
--- 71,77 ----
     --  used in this package and System.File_IO.
  
     for File_Mode use
!      (In_File     => 0,  -- System.File_IO.File_Mode'Pos (In_File)
        Out_File    => 2,  -- System.File_IO.File_Mode'Pos (Out_File)
        Append_File => 3); -- System.File_IO.File_Mode'Pos (Append_File)
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tiboio.adb gcc-11.1.0/gcc/ada/libgnat/a-tiboio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tiboio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tiboio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ticoau.adb gcc-11.1.0/gcc/ada/libgnat/a-ticoau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ticoau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ticoau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,51 ****
  ------------------------------------------------------------------------------
  
  with Ada.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
- with Ada.Text_IO.Float_Aux;
  
  with System.Img_Real; use System.Img_Real;
  
  package body Ada.Text_IO.Complex_Aux is
  
-    package Aux renames Ada.Text_IO.Float_Aux;
- 
     ---------
     -- Get --
     ---------
  
     procedure Get
       (File  : File_Type;
!       ItemR : out Long_Long_Float;
!       ItemI : out Long_Long_Float;
        Width : Field)
     is
        Buf   : String (1 .. Field'Last);
--- 30,48 ----
  ------------------------------------------------------------------------------
  
  with Ada.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
  
  with System.Img_Real; use System.Img_Real;
  
  package body Ada.Text_IO.Complex_Aux is
  
     ---------
     -- Get --
     ---------
  
     procedure Get
       (File  : File_Type;
!       ItemR : out Num;
!       ItemI : out Num;
        Width : Field)
     is
        Buf   : String (1 .. Field'Last);
*************** package body Ada.Text_IO.Complex_Aux is
*** 95,102 ****
  
     procedure Gets
       (From  : String;
!       ItemR : out Long_Long_Float;
!       ItemI : out Long_Long_Float;
        Last  : out Positive)
     is
        Paren : Boolean;
--- 92,99 ----
  
     procedure Gets
       (From  : String;
!       ItemR : out Num;
!       ItemI : out Num;
        Last  : out Positive)
     is
        Paren : Boolean;
*************** package body Ada.Text_IO.Complex_Aux is
*** 139,146 ****
  
     procedure Put
       (File  : File_Type;
!       ItemR : Long_Long_Float;
!       ItemI : Long_Long_Float;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field)
--- 136,143 ----
  
     procedure Put
       (File  : File_Type;
!       ItemR : Num;
!       ItemI : Num;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field)
*************** package body Ada.Text_IO.Complex_Aux is
*** 159,166 ****
  
     procedure Puts
       (To    : out String;
!       ItemR : Long_Long_Float;
!       ItemI : Long_Long_Float;
        Aft   : Field;
        Exp   : Field)
     is
--- 156,163 ----
  
     procedure Puts
       (To    : out String;
!       ItemR : Num;
!       ItemI : Num;
        Aft   : Field;
        Exp   : Field)
     is
*************** package body Ada.Text_IO.Complex_Aux is
*** 174,182 ****
        --  Both parts are initially converted with a Fore of 0
  
        Rptr := 0;
!       Set_Image_Real (ItemR, R_String, Rptr, 0, Aft, Exp);
        Iptr := 0;
!       Set_Image_Real (ItemI, I_String, Iptr, 0, Aft, Exp);
  
        --  Check room for both parts plus parens plus comma (RM G.1.3(34))
  
--- 171,179 ----
        --  Both parts are initially converted with a Fore of 0
  
        Rptr := 0;
!       Set_Image_Real (Long_Long_Float (ItemR), R_String, Rptr, 0, Aft, Exp);
        Iptr := 0;
!       Set_Image_Real (Long_Long_Float (ItemI), I_String, Iptr, 0, Aft, Exp);
  
        --  Check room for both parts plus parens plus comma (RM G.1.3(34))
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ticoau.ads gcc-11.1.0/gcc/ada/libgnat/a-ticoau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ticoau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ticoau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,68 ****
  ------------------------------------------------------------------------------
  
  --  This package contains the routines for Ada.Text_IO.Complex_IO that are
! --  shared among separate instantiations of this package. The routines in
! --  this package are identical semantically to those in Complex_IO itself,
! --  except that the generic parameter Complex has been replaced by separate
! --  real and imaginary values of type Long_Long_Float, and default parameters
! --  have been removed because they are supplied explicitly by the calls from
! --  within the generic template.
  
  package Ada.Text_IO.Complex_Aux is
  
     procedure Get
       (File  : File_Type;
!       ItemR : out Long_Long_Float;
!       ItemI : out Long_Long_Float;
        Width : Field);
  
     procedure Put
       (File  : File_Type;
!       ItemR : Long_Long_Float;
!       ItemI : Long_Long_Float;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field);
  
     procedure Gets
       (From  : String;
!       ItemR : out Long_Long_Float;
!       ItemI : out Long_Long_Float;
        Last  : out Positive);
  
     procedure Puts
       (To    : out String;
!       ItemR : Long_Long_Float;
!       ItemI : Long_Long_Float;
        Aft   : Field;
        Exp   : Field);
  
--- 30,75 ----
  ------------------------------------------------------------------------------
  
  --  This package contains the routines for Ada.Text_IO.Complex_IO that are
! --  shared among separate instantiations of this package. The routines in this
! --  package are identical semantically to those in Complex_IO, except that the
! --  generic parameter Complex has been replaced by separate real and imaginary
! --  parameters, and default parameters have been removed because they are
! --  supplied explicitly by the calls from within the generic template.
! 
! with Ada.Text_IO.Float_Aux;
! 
! private generic
! 
!    type Num is digits <>;
! 
!    with package Aux is new Ada.Text_IO.Float_Aux (Num, <>);
  
  package Ada.Text_IO.Complex_Aux is
  
     procedure Get
       (File  : File_Type;
!       ItemR : out Num;
!       ItemI : out Num;
        Width : Field);
  
     procedure Put
       (File  : File_Type;
!       ItemR : Num;
!       ItemI : Num;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field);
  
     procedure Gets
       (From  : String;
!       ItemR : out Num;
!       ItemI : out Num;
        Last  : out Positive);
  
     procedure Puts
       (To    : out String;
!       ItemR : Num;
!       ItemI : Num;
        Aft   : Field;
        Exp   : Field);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ticoio.adb gcc-11.1.0/gcc/ada/libgnat/a-ticoio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ticoio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ticoio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,46 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with Ada.Text_IO;
- 
  with Ada.Text_IO.Complex_Aux;
  
  package body Ada.Text_IO.Complex_IO is
  
     use Complex_Types;
  
!    package Aux renames Ada.Text_IO.Complex_Aux;
  
!    subtype LLF is Long_Long_Float;
!    --  Type used for calls to routines in Aux
  
     ---------
     -- Get --
--- 29,70 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with Ada.Text_IO.Complex_Aux;
+ with Ada.Text_IO.Float_Aux;
+ with System.Val_Flt;  use System.Val_Flt;
+ with System.Val_LFlt; use System.Val_LFlt;
+ with System.Val_LLF;  use System.Val_LLF;
  
  package body Ada.Text_IO.Complex_IO is
  
     use Complex_Types;
  
!    package Scalar_Float is new
!       Ada.Text_IO.Float_Aux (Float, Scan_Float);
  
!    package Scalar_Long_Float is new
!       Ada.Text_IO.Float_Aux (Long_Float, Scan_Long_Float);
! 
!    package Scalar_Long_Long_Float is new
!       Ada.Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
! 
!    package Aux_Float is new
!       Ada.Text_IO.Complex_Aux (Float, Scalar_Float);
! 
!    package Aux_Long_Float is new
!       Ada.Text_IO.Complex_Aux (Long_Float, Scalar_Long_Float);
! 
!    package Aux_Long_Long_Float is new
!       Ada.Text_IO.Complex_Aux (Long_Long_Float, Scalar_Long_Long_Float);
! 
!    --  Throughout this generic body, we distinguish between the case where type
!    --  Float is OK, where type Long_Float is OK and where type Long_Long_Float
!    --  is needed. These boolean constants are used to test for this, such that
!    --  only code for the relevant case is included in the instance.
! 
!    OK_Float : constant Boolean := Real'Base'Digits <= Float'Digits;
! 
!    OK_Long_Float : constant Boolean := Real'Base'Digits <= Long_Float'Digits;
  
     ---------
     -- Get --
*************** package body Ada.Text_IO.Complex_IO is
*** 48,61 ****
  
     procedure Get
       (File  : File_Type;
!       Item  : out Complex_Types.Complex;
        Width : Field := 0)
     is
        Real_Item : Real'Base;
        Imag_Item : Real'Base;
  
     begin
!       Aux.Get (File, LLF (Real_Item), LLF (Imag_Item), Width);
        Item := (Real_Item, Imag_Item);
  
     exception
--- 72,95 ----
  
     procedure Get
       (File  : File_Type;
!       Item  : out Complex;
        Width : Field := 0)
     is
        Real_Item : Real'Base;
        Imag_Item : Real'Base;
  
     begin
!       if OK_Float then
!          Aux_Float.Get (File, Float (Real_Item), Float (Imag_Item), Width);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Get
!            (File, Long_Float (Real_Item), Long_Float (Imag_Item), Width);
!       else
!          Aux_Long_Long_Float.Get
!            (File, Long_Long_Float (Real_Item), Long_Long_Float (Imag_Item),
!             Width);
!       end if;
! 
        Item := (Real_Item, Imag_Item);
  
     exception
*************** package body Ada.Text_IO.Complex_IO is
*** 67,73 ****
     ---------
  
     procedure Get
!      (Item  : out Complex_Types.Complex;
        Width : Field := 0)
     is
     begin
--- 101,107 ----
     ---------
  
     procedure Get
!      (Item  : out Complex;
        Width : Field := 0)
     is
     begin
*************** package body Ada.Text_IO.Complex_IO is
*** 80,93 ****
  
     procedure Get
       (From : String;
!       Item : out Complex_Types.Complex;
        Last : out Positive)
     is
        Real_Item : Real'Base;
        Imag_Item : Real'Base;
  
     begin
!       Aux.Gets (From, LLF (Real_Item), LLF (Imag_Item), Last);
        Item := (Real_Item, Imag_Item);
  
     exception
--- 114,137 ----
  
     procedure Get
       (From : String;
!       Item : out Complex;
        Last : out Positive)
     is
        Real_Item : Real'Base;
        Imag_Item : Real'Base;
  
     begin
!       if OK_Float then
!          Aux_Float.Gets (From, Float (Real_Item), Float (Imag_Item), Last);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Gets
!            (From, Long_Float (Real_Item), Long_Float (Imag_Item), Last);
!       else
!          Aux_Long_Long_Float.Gets
!            (From, Long_Long_Float (Real_Item), Long_Long_Float (Imag_Item),
!             Last);
!       end if;
! 
        Item := (Real_Item, Imag_Item);
  
     exception
*************** package body Ada.Text_IO.Complex_IO is
*** 100,112 ****
  
     procedure Put
       (File : File_Type;
!       Item : Complex_Types.Complex;
        Fore : Field := Default_Fore;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     is
     begin
!       Aux.Put (File, LLF (Re (Item)), LLF (Im (Item)), Fore, Aft, Exp);
     end Put;
  
     ---------
--- 144,167 ----
  
     procedure Put
       (File : File_Type;
!       Item : Complex;
        Fore : Field := Default_Fore;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     is
     begin
!       if OK_Float then
!          Aux_Float.Put
!            (File, Float (Re (Item)), Float (Im (Item)), Fore, Aft, Exp);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Put
!            (File, Long_Float (Re (Item)), Long_Float (Im (Item)), Fore, Aft,
!             Exp);
!       else
!          Aux_Long_Long_Float.Put
!            (File, Long_Long_Float (Re (Item)), Long_Long_Float (Im (Item)),
!             Fore, Aft, Exp);
!       end if;
     end Put;
  
     ---------
*************** package body Ada.Text_IO.Complex_IO is
*** 114,120 ****
     ---------
  
     procedure Put
!      (Item : Complex_Types.Complex;
        Fore : Field := Default_Fore;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
--- 169,175 ----
     ---------
  
     procedure Put
!      (Item : Complex;
        Fore : Field := Default_Fore;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
*************** package body Ada.Text_IO.Complex_IO is
*** 129,140 ****
  
     procedure Put
       (To   : out String;
!       Item : Complex_Types.Complex;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     is
     begin
!       Aux.Puts (To, LLF (Re (Item)), LLF (Im (Item)), Aft, Exp);
     end Put;
  
  end Ada.Text_IO.Complex_IO;
--- 184,204 ----
  
     procedure Put
       (To   : out String;
!       Item : Complex;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     is
     begin
!       if OK_Float then
!          Aux_Float.Puts (To, Float (Re (Item)), Float (Im (Item)), Aft, Exp);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Puts
!            (To, Long_Float (Re (Item)), Long_Float (Im (Item)), Aft, Exp);
!       else
!          Aux_Long_Long_Float.Puts
!            (To, Long_Long_Float (Re (Item)), Long_Long_Float (Im (Item)),
!             Aft, Exp);
!       end if;
     end Put;
  
  end Ada.Text_IO.Complex_IO;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ticoio.ads gcc-11.1.0/gcc/ada/libgnat/a-ticoio.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ticoio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ticoio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tideau.adb gcc-11.1.0/gcc/ada/libgnat/a-tideau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tideau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tideau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,85 ****
  ------------------------------------------------------------------------------
  
  with Ada.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
- with Ada.Text_IO.Float_Aux;   use Ada.Text_IO.Float_Aux;
- 
- with System.Img_Dec; use System.Img_Dec;
- with System.Img_LLD; use System.Img_LLD;
- with System.Val_Dec; use System.Val_Dec;
- with System.Val_LLD; use System.Val_LLD;
  
  package body Ada.Text_IO.Decimal_Aux is
  
!    -------------
!    -- Get_Dec --
!    -------------
! 
!    function Get_Dec
!      (File  : File_Type;
!       Width : Field;
!       Scale : Integer) return Integer
!    is
!       Buf  : String (1 .. Field'Last);
!       Ptr  : aliased Integer;
!       Stop : Integer := 0;
!       Item : Integer;
! 
!    begin
!       if Width /= 0 then
!          Load_Width (File, Width, Buf, Stop);
!          String_Skip (Buf, Ptr);
!       else
!          Load_Real (File, Buf, Stop);
!          Ptr := 1;
!       end if;
! 
!       Item := Scan_Decimal (Buf, Ptr'Access, Stop, Scale);
!       Check_End_Of_Field (Buf, Stop, Ptr, Width);
!       return Item;
!    end Get_Dec;
! 
!    -------------
!    -- Get_LLD --
!    -------------
  
!    function Get_LLD
       (File  : File_Type;
        Width : Field;
!       Scale : Integer) return Long_Long_Integer
     is
        Buf  : String (1 .. Field'Last);
        Ptr  : aliased Integer;
        Stop : Integer := 0;
!       Item : Long_Long_Integer;
  
     begin
        if Width /= 0 then
--- 30,51 ----
  ------------------------------------------------------------------------------
  
  with Ada.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
  
  package body Ada.Text_IO.Decimal_Aux is
  
!    ---------
!    -- Get --
!    ---------
  
!    function Get
       (File  : File_Type;
        Width : Field;
!       Scale : Integer) return Int
     is
        Buf  : String (1 .. Field'Last);
        Ptr  : aliased Integer;
        Stop : Integer := 0;
!       Item : Int;
  
     begin
        if Width /= 0 then
*************** package body Ada.Text_IO.Decimal_Aux is
*** 90,175 ****
           Ptr := 1;
        end if;
  
!       Item := Scan_Long_Long_Decimal (Buf, Ptr'Access, Stop, Scale);
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
        return Item;
!    end Get_LLD;
! 
!    --------------
!    -- Gets_Dec --
!    --------------
! 
!    function Gets_Dec
!      (From  : String;
!       Last  : not null access Positive;
!       Scale : Integer) return Integer
!    is
!       Pos  : aliased Integer;
!       Item : Integer;
! 
!    begin
!       String_Skip (From, Pos);
!       Item := Scan_Decimal (From, Pos'Access, From'Last, Scale);
!       Last.all := Pos - 1;
!       return Item;
! 
!    exception
!       when Constraint_Error =>
!          Last.all := Pos - 1;
!          raise Data_Error;
!    end Gets_Dec;
  
!    --------------
!    -- Gets_LLD --
!    --------------
  
!    function Gets_LLD
       (From  : String;
!       Last  : not null access Positive;
!       Scale : Integer) return Long_Long_Integer
     is
        Pos  : aliased Integer;
!       Item : Long_Long_Integer;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan_Long_Long_Decimal (From, Pos'Access, From'Last, Scale);
!       Last.all := Pos - 1;
        return Item;
  
     exception
        when Constraint_Error =>
!          Last.all := Pos - 1;
           raise Data_Error;
!    end Gets_LLD;
! 
!    -------------
!    -- Put_Dec --
!    -------------
! 
!    procedure Put_Dec
!      (File  : File_Type;
!       Item  : Integer;
!       Fore  : Field;
!       Aft   : Field;
!       Exp   : Field;
!       Scale : Integer)
!    is
!       Buf : String (1 .. Field'Last);
!       Ptr : Natural := 0;
! 
!    begin
!       Set_Image_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
!       Put_Item (File, Buf (1 .. Ptr));
!    end Put_Dec;
  
!    -------------
!    -- Put_LLD --
!    -------------
  
!    procedure Put_LLD
       (File  : File_Type;
!       Item  : Long_Long_Integer;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field;
--- 56,97 ----
           Ptr := 1;
        end if;
  
!       Item := Scan (Buf, Ptr'Access, Stop, Scale);
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
        return Item;
!    end Get;
  
!    ----------
!    -- Gets --
!    ----------
  
!    function Gets
       (From  : String;
!       Last  : out Positive;
!       Scale : Integer) return Int
     is
        Pos  : aliased Integer;
!       Item : Int;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan (From, Pos'Access, From'Last, Scale);
!       Last := Pos - 1;
        return Item;
  
     exception
        when Constraint_Error =>
!          Last := Pos - 1;
           raise Data_Error;
!    end Gets;
  
!    ---------
!    -- Put --
!    ---------
  
!    procedure Put
       (File  : File_Type;
!       Item  : Int;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field;
*************** package body Ada.Text_IO.Decimal_Aux is
*** 179,261 ****
        Ptr : Natural := 0;
  
     begin
!       Set_Image_Long_Long_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
        Put_Item (File, Buf (1 .. Ptr));
!    end Put_LLD;
  
!    --------------
!    -- Puts_Dec --
!    --------------
  
!    procedure Puts_Dec
       (To    : out String;
!       Item  : Integer;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer)
     is
!       Buf  : String (1 .. Field'Last);
        Fore : Integer;
        Ptr  : Natural := 0;
  
     begin
!       --  Compute Fore, allowing for Aft digits and the decimal dot
  
!       Fore := To'Length - Field'Max (1, Aft) - 1;
  
!       --  Allow for Exp and two more for E+ or E- if exponent present
  
        if Exp /= 0 then
!          Fore := Fore - 2 - Exp;
        end if;
  
        --  Make sure we have enough room
  
!       if Fore < 1 then
           raise Layout_Error;
        end if;
  
        --  Do the conversion and check length of result
  
!       Set_Image_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
! 
!       if Ptr > To'Length then
!          raise Layout_Error;
!       else
!          To := Buf (1 .. Ptr);
!       end if;
!    end Puts_Dec;
! 
!    --------------
!    -- Puts_LLD --
!    --------------
! 
!    procedure Puts_LLD
!      (To    : out String;
!       Item  : Long_Long_Integer;
!       Aft   : Field;
!       Exp   : Field;
!       Scale : Integer)
!    is
!       Buf  : String (1 .. Field'Last);
!       Fore : Integer;
!       Ptr  : Natural := 0;
! 
!    begin
!       Fore :=
!         (if Exp = 0 then To'Length - 1 - Aft else To'Length - 2 - Aft - Exp);
! 
!       if Fore < 1 then
!          raise Layout_Error;
!       end if;
! 
!       Set_Image_Long_Long_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
  
        if Ptr > To'Length then
           raise Layout_Error;
        else
           To := Buf (1 .. Ptr);
        end if;
!    end Puts_LLD;
  
  end Ada.Text_IO.Decimal_Aux;
--- 101,151 ----
        Ptr : Natural := 0;
  
     begin
!       Set_Image (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
        Put_Item (File, Buf (1 .. Ptr));
!    end Put;
  
!    ----------
!    -- Puts --
!    ----------
  
!    procedure Puts
       (To    : out String;
!       Item  : Int;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer)
     is
!       Buf  : String (1 .. Positive'Max (Field'Last, To'Length));
        Fore : Integer;
        Ptr  : Natural := 0;
  
     begin
!       --  Compute Fore, allowing for the decimal dot and Aft digits
  
!       Fore := To'Length - 1 - Field'Max (1, Aft);
  
!       --  Allow for Exp and one more for E if exponent present
  
        if Exp /= 0 then
!          Fore := Fore - 1 - Field'Max (2, Exp);
        end if;
  
        --  Make sure we have enough room
  
!       if Fore < 1 + Boolean'Pos (Item < 0) then
           raise Layout_Error;
        end if;
  
        --  Do the conversion and check length of result
  
!       Set_Image (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
  
        if Ptr > To'Length then
           raise Layout_Error;
        else
           To := Buf (1 .. Ptr);
        end if;
!    end Puts;
  
  end Ada.Text_IO.Decimal_Aux;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tideau.ads gcc-11.1.0/gcc/ada/libgnat/a-tideau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-tideau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tideau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,90 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains the routines for Ada.Text_IO.Decimal_IO that are
! --  shared among separate instantiations of this package. The routines in
! --  the package are identical semantically to those declared in Text_IO,
! --  except that default values have been supplied by the generic, and the
! --  Num parameter has been replaced by Integer or Long_Long_Integer, with
! --  an additional Scale parameter giving the value of Num'Scale. In addition
! --  the Get routines return the value rather than store it in an Out parameter.
  
! private package Ada.Text_IO.Decimal_Aux is
  
!    function Get_Dec
!      (File  : File_Type;
!       Width : Field;
!       Scale : Integer) return Integer;
  
!    function Get_LLD
!      (File  : File_Type;
!       Width : Field;
!       Scale : Integer) return Long_Long_Integer;
  
!    procedure Put_Dec
       (File  : File_Type;
!       Item  : Integer;
!       Fore  : Field;
!       Aft   : Field;
!       Exp   : Field;
!       Scale : Integer);
  
!    procedure Put_LLD
       (File  : File_Type;
!       Item  : Long_Long_Integer;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer);
  
!    function Gets_Dec
!      (From  : String;
!       Last  : not null access Positive;
!       Scale : Integer) return Integer;
! 
!    function Gets_LLD
       (From  : String;
!       Last  : not null access Positive;
!       Scale : Integer) return Long_Long_Integer;
! 
!    procedure Puts_Dec
!      (To    : out String;
!       Item  : Integer;
!       Aft   : Field;
!       Exp   : Field;
!       Scale : Integer);
  
!    procedure Puts_LLD
       (To    : out String;
!       Item  : Long_Long_Integer;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer);
--- 29,82 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains the implementation for Ada.Text_IO.Decimal_IO. The
! --  routines in this package are identical semantically to those in Decimal_IO,
! --  except that the default parameters have been removed because they are
! --  supplied explicitly by the calls from within these units, and there is an
! --  additional Scale parameter giving the value of Num'Scale. In addition the
! --  Get routines return the value rather than store it in an Out parameter.
  
! private generic
!    type Int is range <>;
  
!    with function Scan
!      (Str   : String;
!       Ptr   : not null access Integer;
!       Max   : Integer;
!       Scale : Integer) return Int;
  
!    with procedure Set_Image
!      (V     : Int;
!       S     : in out String;
!       P     : in out Natural;
!       Scale : Integer;
!       Fore  : Natural;
!       Aft   : Natural;
!       Exp   : Natural);
  
! package Ada.Text_IO.Decimal_Aux is
! 
!    function Get
       (File  : File_Type;
!       Width : Field;
!       Scale : Integer) return Int;
  
!    procedure Put
       (File  : File_Type;
!       Item  : Int;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer);
  
!    function Gets
       (From  : String;
!       Last  : out Positive;
!       Scale : Integer) return Int;
  
!    procedure Puts
       (To    : out String;
!       Item  : Int;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tideio.adb gcc-11.1.0/gcc/ada/libgnat/a-tideio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tideio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tideio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,39 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with Ada.Text_IO.Decimal_Aux;
  
  package body Ada.Text_IO.Decimal_IO is
  
!    package Aux renames Ada.Text_IO.Decimal_Aux;
  
     Scale : constant Integer := Num'Scale;
  
--- 29,63 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Interfaces;
  with Ada.Text_IO.Decimal_Aux;
+ with System.Img_Decimal_32;  use System.Img_Decimal_32;
+ with System.Img_Decimal_64;  use System.Img_Decimal_64;
+ with System.Val_Decimal_32;  use System.Val_Decimal_32;
+ with System.Val_Decimal_64;  use System.Val_Decimal_64;
  
  package body Ada.Text_IO.Decimal_IO is
  
!    subtype Int32 is Interfaces.Integer_32;
!    subtype Int64 is Interfaces.Integer_64;
! 
!    package Aux32 is new
!      Ada.Text_IO.Decimal_Aux
!        (Int32,
!         Scan_Decimal32,
!         Set_Image_Decimal32);
! 
!    package Aux64 is new
!      Ada.Text_IO.Decimal_Aux
!        (Int64,
!         Scan_Decimal64,
!         Set_Image_Decimal64);
! 
!    Need64 : constant Boolean := Num'Size > 32;
!    --  Throughout this generic body, we distinguish between the case where type
!    --  Int32 is acceptable and where type Int64 is needed. This Boolean is used
!    --  to test for these cases and since it is a constant, only code for the
!    --  relevant case will be included in the instance.
  
     Scale : constant Integer := Num'Scale;
  
*************** package body Ada.Text_IO.Decimal_IO is
*** 49,58 ****
        pragma Unsuppress (Range_Check);
  
     begin
!       if Num'Size > Integer'Size then
!          Item := Num'Fixed_Value (Aux.Get_LLD (File, Width, Scale));
        else
!          Item := Num'Fixed_Value (Aux.Get_Dec (File, Width, Scale));
        end if;
  
     exception
--- 73,82 ----
        pragma Unsuppress (Range_Check);
  
     begin
!       if Need64 then
!          Item := Num'Fixed_Value (Aux64.Get (File, Width, Scale));
        else
!          Item := Num'Fixed_Value (Aux32.Get (File, Width, Scale));
        end if;
  
     exception
*************** package body Ada.Text_IO.Decimal_IO is
*** 75,86 ****
        pragma Unsuppress (Range_Check);
  
     begin
!       if Num'Size > Integer'Size then
!          Item := Num'Fixed_Value
!                    (Aux.Gets_LLD (From, Last'Unrestricted_Access, Scale));
        else
!          Item := Num'Fixed_Value
!                    (Aux.Gets_Dec (From, Last'Unrestricted_Access, Scale));
        end if;
  
     exception
--- 99,108 ----
        pragma Unsuppress (Range_Check);
  
     begin
!       if Need64 then
!          Item := Num'Fixed_Value (Aux64.Gets (From, Last, Scale));
        else
!          Item := Num'Fixed_Value (Aux32.Gets (From, Last, Scale));
        end if;
  
     exception
*************** package body Ada.Text_IO.Decimal_IO is
*** 99,111 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       if Num'Size > Integer'Size then
!          Aux.Put_LLD
!            (File, Long_Long_Integer'Integer_Value (Item),
!             Fore, Aft, Exp, Scale);
        else
!          Aux.Put_Dec
!            (File, Integer'Integer_Value (Item), Fore, Aft, Exp, Scale);
        end if;
     end Put;
  
--- 121,132 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       if Need64 then
!          Aux64.Put
!            (File, Int64'Integer_Value (Item), Fore, Aft, Exp, Scale);
        else
!          Aux32.Put
!            (File, Int32'Integer_Value (Item), Fore, Aft, Exp, Scale);
        end if;
     end Put;
  
*************** package body Ada.Text_IO.Decimal_IO is
*** 126,136 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       if Num'Size > Integer'Size then
!          Aux.Puts_LLD
!            (To, Long_Long_Integer'Integer_Value (Item), Aft, Exp, Scale);
        else
!          Aux.Puts_Dec (To, Integer'Integer_Value (Item), Aft, Exp, Scale);
        end if;
     end Put;
  
--- 147,156 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       if Need64 then
!          Aux64.Puts (To, Int64'Integer_Value (Item), Aft, Exp, Scale);
        else
!          Aux32.Puts (To, Int32'Integer_Value (Item), Aft, Exp, Scale);
        end if;
     end Put;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tideio.ads gcc-11.1.0/gcc/ada/libgnat/a-tideio.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-tideio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tideio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tideio__128.adb gcc-11.1.0/gcc/ada/libgnat/a-tideio__128.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tideio__128.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-tideio__128.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,177 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --               A D A . T E X T _ I O . D E C I M A L _ I O                --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Interfaces;
+ with Ada.Text_IO.Decimal_Aux;
+ with System.Img_Decimal_32;  use System.Img_Decimal_32;
+ with System.Img_Decimal_64;  use System.Img_Decimal_64;
+ with System.Img_Decimal_128; use System.Img_Decimal_128;
+ with System.Val_Decimal_32;  use System.Val_Decimal_32;
+ with System.Val_Decimal_64;  use System.Val_Decimal_64;
+ with System.Val_Decimal_128; use System.Val_Decimal_128;
+ 
+ package body Ada.Text_IO.Decimal_IO is
+ 
+    subtype Int32 is Interfaces.Integer_32;
+    subtype Int64 is Interfaces.Integer_64;
+    subtype Int128 is Interfaces.Integer_128;
+ 
+    package Aux32 is new
+      Ada.Text_IO.Decimal_Aux
+        (Int32,
+         Scan_Decimal32,
+         Set_Image_Decimal32);
+ 
+    package Aux64 is new
+      Ada.Text_IO.Decimal_Aux
+        (Int64,
+         Scan_Decimal64,
+         Set_Image_Decimal64);
+ 
+    package Aux128 is new
+      Ada.Text_IO.Decimal_Aux
+        (Int128,
+         Scan_Decimal128,
+         Set_Image_Decimal128);
+ 
+    Need64  : constant Boolean := Num'Size > 32;
+    Need128 : constant Boolean := Num'Size > 64;
+    --  Throughout this generic body, we distinguish between the case where type
+    --  Int32 is acceptable, where type Int64 is acceptable and where an Int128
+    --  is needed. These boolean constants are used to test for these cases and
+    --  since it is a constant, only code for the relevant case will be included
+    --  in the instance.
+ 
+    Scale : constant Integer := Num'Scale;
+ 
+    ---------
+    -- Get --
+    ---------
+ 
+    procedure Get
+      (File  : File_Type;
+       Item  : out Num;
+       Width : Field := 0)
+    is
+       pragma Unsuppress (Range_Check);
+ 
+    begin
+       if Need128 then
+          Item := Num'Fixed_Value (Aux128.Get (File, Width, Scale));
+       elsif Need64 then
+          Item := Num'Fixed_Value (Aux64.Get (File, Width, Scale));
+       else
+          Item := Num'Fixed_Value (Aux32.Get (File, Width, Scale));
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    procedure Get
+      (Item  : out Num;
+       Width : Field := 0)
+    is
+    begin
+       Get (Current_In, Item, Width);
+    end Get;
+ 
+    procedure Get
+      (From : String;
+       Item : out Num;
+       Last : out Positive)
+    is
+       pragma Unsuppress (Range_Check);
+ 
+    begin
+       if Need128 then
+          Item := Num'Fixed_Value (Aux128.Gets (From, Last, Scale));
+       elsif Need64 then
+          Item := Num'Fixed_Value (Aux64.Gets (From, Last, Scale));
+       else
+          Item := Num'Fixed_Value (Aux32.Gets (From, Last, Scale));
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    ---------
+    -- Put --
+    ---------
+ 
+    procedure Put
+      (File : File_Type;
+       Item : Num;
+       Fore : Field := Default_Fore;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+    begin
+       if Need128 then
+          Aux128.Put
+            (File, Int128'Integer_Value (Item), Fore, Aft, Exp, Scale);
+       elsif Need64 then
+          Aux64.Put
+            (File, Int64'Integer_Value (Item), Fore, Aft, Exp, Scale);
+       else
+          Aux32.Put
+            (File, Int32'Integer_Value (Item), Fore, Aft, Exp, Scale);
+       end if;
+    end Put;
+ 
+    procedure Put
+      (Item : Num;
+       Fore : Field := Default_Fore;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+    begin
+       Put (Current_Out, Item, Fore, Aft, Exp);
+    end Put;
+ 
+    procedure Put
+      (To   : out String;
+       Item : Num;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+    begin
+       if Need128 then
+          Aux128.Puts (To, Int128'Integer_Value (Item), Aft, Exp, Scale);
+       elsif Need64 then
+          Aux64.Puts (To, Int64'Integer_Value (Item), Aft, Exp, Scale);
+       else
+          Aux32.Puts (To, Int32'Integer_Value (Item), Aft, Exp, Scale);
+       end if;
+    end Put;
+ 
+ end Ada.Text_IO.Decimal_IO;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tienau.adb gcc-11.1.0/gcc/ada/libgnat/a-tienau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tienau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tienau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tienau.ads gcc-11.1.0/gcc/ada/libgnat/a-tienau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-tienau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tienau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tienio.adb gcc-11.1.0/gcc/ada/libgnat/a-tienio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tienio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tienio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tifiau.adb gcc-11.1.0/gcc/ada/libgnat/a-tifiau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tifiau.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-tifiau.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,159 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                 A D A . T E X T _ I O . F I X E D _ A U X                --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
+ 
+ package body Ada.Text_IO.Fixed_Aux is
+ 
+    ---------
+    -- Get --
+    ---------
+ 
+    function Get
+      (File  : File_Type;
+       Width : Field;
+       Num   : Int;
+       Den   : Int) return Int
+    is
+       Buf  : String (1 .. Field'Last);
+       Ptr  : aliased Integer;
+       Stop : Integer := 0;
+       Item : Int;
+ 
+    begin
+       if Width /= 0 then
+          Load_Width (File, Width, Buf, Stop);
+          String_Skip (Buf, Ptr);
+       else
+          Load_Real (File, Buf, Stop);
+          Ptr := 1;
+       end if;
+ 
+       Item := Scan (Buf, Ptr'Access, Stop, Num, Den);
+       Check_End_Of_Field (Buf, Stop, Ptr, Width);
+       return Item;
+    end Get;
+ 
+    ----------
+    -- Gets --
+    ----------
+ 
+    function Gets
+      (From : String;
+       Last : out Positive;
+       Num  : Int;
+       Den  : Int) return Int
+    is
+       Pos  : aliased Integer;
+       Item : Int;
+ 
+    begin
+       String_Skip (From, Pos);
+       Item := Scan (From, Pos'Access, From'Last, Num, Den);
+       Last := Pos - 1;
+       return Item;
+ 
+    exception
+       when Constraint_Error =>
+          Last := Pos - 1;
+          raise Data_Error;
+    end Gets;
+ 
+    ---------
+    -- Put --
+    ---------
+ 
+    procedure Put
+      (File : File_Type;
+       Item : Int;
+       Fore : Field;
+       Aft  : Field;
+       Exp  : Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural)
+    is
+       Buf : String (1 .. Field'Last);
+       Ptr : Natural := 0;
+ 
+    begin
+       Set_Image (Item, Buf, Ptr, Num, Den, For0, Aft0, Fore, Aft, Exp);
+       Put_Item (File, Buf (1 .. Ptr));
+    end Put;
+ 
+    ----------
+    -- Puts --
+    ----------
+ 
+    procedure Puts
+      (To   : out String;
+       Item : Int;
+       Aft  : Field;
+       Exp  : Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural)
+    is
+       Buf  : String (1 .. Positive'Max (Field'Last, To'Length));
+       Fore : Integer;
+       Ptr  : Natural := 0;
+ 
+    begin
+       --  Compute Fore, allowing for the decimal dot and Aft digits
+ 
+       Fore := To'Length - 1 - Field'Max (1, Aft);
+ 
+       --  Allow for Exp and one more for E if exponent present
+ 
+       if Exp /= 0 then
+          Fore := Fore - 1 - Field'Max (2, Exp);
+       end if;
+ 
+       --  Make sure we have enough room
+ 
+       if Fore < 1 + Boolean'Pos (Item < 0) then
+          raise Layout_Error;
+       end if;
+ 
+       --  Do the conversion and check length of result
+ 
+       Set_Image (Item, Buf, Ptr, Num, Den, For0, Aft0, Fore, Aft, Exp);
+ 
+       if Ptr > To'Length then
+          raise Layout_Error;
+       else
+          To := Buf (1 .. Ptr);
+       end if;
+    end Puts;
+ 
+ end Ada.Text_IO.Fixed_Aux;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tifiau.ads gcc-11.1.0/gcc/ada/libgnat/a-tifiau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-tifiau.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-tifiau.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,97 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                 A D A . T E X T _ I O . F I X E D _ A U X                --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the implementation for Ada.Text_IO.Fixed_IO. The
+ --  routines in this package are identical semantically to those in Fixed_IO,
+ --  except that the default parameters have been removed because they are
+ --  supplied explicitly by the calls from within these units, and there are
+ --  additional Num and Den parameters giving the value of Num'Small, as well
+ --  as For0 and Aft0 giving some properties of Num'Small. In addition the Get
+ --  routines return the value rather than store it in an Out parameter.
+ 
+ private generic
+    type Int is range <>;
+ 
+    with function Scan
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer;
+       Num : Int;
+       Den : Int) return Int;
+ 
+    with procedure Set_Image
+      (V    : Int;
+       S    : in out String;
+       P    : in out Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural;
+       Fore : Natural;
+       Aft  : Natural;
+       Exp  : Natural);
+ 
+ package Ada.Text_IO.Fixed_Aux is
+ 
+    function Get
+      (File  : File_Type;
+       Width : Field;
+       Num   : Int;
+       Den   : Int) return Int;
+ 
+    procedure Put
+      (File : File_Type;
+       Item : Int;
+       Fore : Field;
+       Aft  : Field;
+       Exp  : Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural);
+ 
+    function Gets
+      (From : String;
+       Last : out Positive;
+       Num  : Int;
+       Den  : Int) return Int;
+ 
+    procedure Puts
+      (To   : out String;
+       Item : Int;
+       Aft  : Field;
+       Exp  : Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural);
+ 
+ end Ada.Text_IO.Fixed_Aux;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tifiio.adb gcc-11.1.0/gcc/ada/libgnat/a-tifiio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tifiio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tifiio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,46 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  Fixed point I/O
! --  ---------------
  
! --  The following documents implementation details of the fixed point
! --  input/output routines in the GNAT run time. The first part describes
! --  general properties of fixed point types as defined by the Ada 95 standard,
  --  including the Information Systems Annex.
  
  --  Subsequently these are reduced to implementation constraints and the impact
! --  of these constraints on a few possible approaches to I/O are given.
  --  Based on this analysis, a specific implementation is selected for use in
! --  the GNAT run time. Finally, the chosen algorithm is analyzed numerically in
  --  order to provide user-level documentation on limits for range and precision
  --  of fixed point types as well as accuracy of input/output conversions.
  
--- 29,47 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  -------------------
! --  - Fixed point I/O -
! --  -------------------
  
! --  The following text documents implementation details of the fixed point
! --  input/output routines in the GNAT runtime. The first part describes the
! --  general properties of fixed point types as defined by the Ada standard,
  --  including the Information Systems Annex.
  
  --  Subsequently these are reduced to implementation constraints and the impact
! --  of these constraints on a few possible approaches to input/output is given.
  --  Based on this analysis, a specific implementation is selected for use in
! --  the GNAT runtime. Finally the chosen algorithms are analyzed numerically in
  --  order to provide user-level documentation on limits for range and precision
  --  of fixed point types as well as accuracy of input/output conversions.
  
***************
*** 48,76 ****
  --  - General Properties of Fixed Point Types -
  --  -------------------------------------------
  
! --  Operations on fixed point values, other than input and output, are not
! --  important for the purposes of this document. Only the set of values that a
! --  fixed point type can represent and the input and output operations are
! --  significant.
  
  --  Values
  --  ------
  
! --  Set set of values of a fixed point type comprise the integral
! --  multiples of a number called the small of the type. The small can
! --  either be a power of ten, a power of two or (if the implementation
! --  allows) an arbitrary strictly positive real value.
  
! --  Implementations need to support fixed-point types with a precision
! --  of at least 24 bits, and (in order to comply with the Information
! --  Systems Annex) decimal types need to support at least digits 18.
! --  For the rest, however, no requirements exist for the minimal small
! --  and range that need to be supported.
  
  --  Operations
  --  ----------
  
! --  'Image and 'Wide_Image (see RM 3.5(34))
  
  --          These attributes return a decimal real literal best approximating
  --          the value (rounded away from zero if halfway between) with a
--- 49,75 ----
  --  - General Properties of Fixed Point Types -
  --  -------------------------------------------
  
! --  Operations on fixed point types, other than input/output, are not important
! --  for the purpose of this document. Only the set of values that a fixed point
! --  type can represent and the input/output operations are significant.
  
  --  Values
  --  ------
  
! --  The set of values of a fixed point type comprise the integral multiples of
! --  a number called the small of the type. The small can be either a power of
! --  two, a power of ten or (if the implementation allows) an arbitrary strictly
! --  positive real value.
  
! --  Implementations need to support ordinary fixed point types with a precision
! --  of at least 24 bits, and (in order to comply with the Information Systems
! --  Annex) decimal fixed point types with at least 18 digits. For the rest, no
! --  requirements exist for the minimal small and range that must be supported.
  
  --  Operations
  --  ----------
  
! --  [Wide_[Wide_]]Image attribute (see RM 3.5(27.1/2))
  
  --          These attributes return a decimal real literal best approximating
  --          the value (rounded away from zero if halfway between) with a
***************
*** 90,96 ****
  --          attributes, although it would be nice to be able to output more
  --          than S'Aft digits after the decimal point for values of subtype S.
  
! --  'Value and 'Wide_Value attribute (RM 3.5(40-55))
  
  --          Since the input can be given in any base in the range 2..16,
  --          accurate conversion to a fixed point number may require
--- 89,95 ----
  --          attributes, although it would be nice to be able to output more
  --          than S'Aft digits after the decimal point for values of subtype S.
  
! --  [Wide_[Wide_]]Value attribute (RM 3.5(39.1/2))
  
  --          Since the input can be given in any base in the range 2..16,
  --          accurate conversion to a fixed point number may require
***************
*** 112,313 ****
  --  Implementation Strategies
  --  -------------------------
  
! --  * Float arithmetic
  --  * Arbitrary-precision integer arithmetic
  --  * Fixed-precision integer arithmetic
  
! --  Although it seems convenient to convert fixed point numbers to floating-
  --  point and then print them, this leads to a number of restrictions.
  --  The first one is precision. The widest floating-point type generally
  --  available has 53 bits of mantissa. This means that Fine_Delta cannot
  --  be less than 2.0**(-53).
  
! --  In GNAT, Fine_Delta is 2.0**(-63), and Duration for example is a
! --  64-bit type. It would still be possible to use multi-precision
! --  floating-point to perform calculations using longer mantissas,
! --  but this is a much harder approach.
  
! --  The base conversions needed for input and output of (non-decimal)
! --  fixed point types can be seen as pairs of integer multiplications
! --  and divisions.
  
! --  Arbitrary-precision integer arithmetic would be suitable for the job
! --  at hand, but has the draw-back that it is very heavy implementation-wise.
  --  Especially in embedded systems, where fixed point types are often used,
  --  it may not be desirable to require large amounts of storage and time
  --  for fixed I/O operations.
  
  --  Fixed-precision integer arithmetic has the advantage of simplicity and
  --  speed. For the most common fixed point types this would be a perfect
! --  solution. The downside however may be a too limited set of acceptable
  --  fixed point types.
  
! --  Extra Precision
! --  ---------------
  
! --  Using a scaled divide which truncates and returns a remainder R,
! --  another E trailing digits can be calculated by computing the value
! --  (R * (10.0**E)) / Z using another scaled divide. This procedure
! --  can be repeated to compute an arbitrary number of digits in linear
! --  time and storage. The last scaled divide should be rounded, with
! --  a possible carry propagating to the more significant digits, to
! --  ensure correct rounding of the unit in the last place.
  
! --  An extension of this technique is to limit the value of Q to 9 decimal
! --  digits, since 32-bit integers can be much more efficient than 64-bit
! --  integers to output.
  
! with Interfaces;                        use Interfaces;
! with System.Arith_64;                   use System.Arith_64;
! with System.Img_Real;                   use System.Img_Real;
! with Ada.Text_IO;                       use Ada.Text_IO;
  with Ada.Text_IO.Float_Aux;
! with Ada.Text_IO.Generic_Aux;
! 
! package body Ada.Text_IO.Fixed_IO is
! 
!    --  Note: we still use the floating-point I/O routines for input of
!    --  ordinary fixed-point and output using exponent format. This will
!    --  result in inaccuracies for fixed point types with a small that is
!    --  not a power of two, and for types that require more precision than
!    --  is available in Long_Long_Float.
! 
!    package Aux renames Ada.Text_IO.Float_Aux;
! 
!    Extra_Layout_Space : constant Field := 5 + Num'Fore;
!    --  Extra space that may be needed for output of sign, decimal point,
!    --  exponent indication and mandatory decimals after and before the
!    --  decimal point. A string with length
! 
!    --    Fore + Aft + Exp + Extra_Layout_Space
! 
!    --  is always long enough for formatting any fixed point number
! 
!    --  Implementation of Put routines
! 
!    --  The following section describes a specific implementation choice for
!    --  performing base conversions needed for output of values of a fixed
!    --  point type T with small T'Small. The goal is to be able to output
!    --  all values of types with a precision of 64 bits and a delta of at
!    --  least 2.0**(-63), as these are current GNAT limitations already.
! 
!    --  The chosen algorithm uses fixed precision integer arithmetic for
!    --  reasons of simplicity and efficiency. It is important to understand
!    --  in what ways the most simple and accurate approach to fixed point I/O
!    --  is limiting, before considering more complicated schemes.
! 
!    --  Without loss of generality assume T has a range (-2.0**63) * T'Small
!    --  .. (2.0**63 - 1) * T'Small, and is output with Aft digits after the
!    --  decimal point and T'Fore - 1 before. If T'Small is integer, or
!    --  1.0 / T'Small is integer, let S = T'Small and E = 0. For other T'Small,
!    --  let S and E be integers such that S / 10**E best approximates T'Small
!    --  and S is in the range 10**17 .. 10**18 - 1. The extra decimal scaling
!    --  factor 10**E can be trivially handled during final output, by adjusting
!    --  the decimal point or exponent.
! 
!    --  Convert a value X * S of type T to a 64-bit integer value Q equal
!    --  to 10.0**D * (X * S) rounded to the nearest integer.
!    --  This conversion is a scaled integer divide of the form
! 
!    --     Q := (X * Y) / Z,
! 
!    --  where all variables are 64-bit signed integers using 2's complement,
!    --  and both the multiplication and division are done using full
!    --  intermediate precision. The final decimal value to be output is
! 
!    --     Q * 10**(E-D)
! 
!    --  This value can be written to the output file or to the result string
!    --  according to the format described in RM A.3.10. The details of this
!    --  operation are omitted here.
! 
!    --  A 64-bit value can contain all integers with 18 decimal digits, but
!    --  not all with 19 decimal digits. If the total number of requested output
!    --  digits (Fore - 1) + Aft is greater than 18, for purposes of the
!    --  conversion Aft is adjusted to 18 - (Fore - 1). In that case, or
!    --  when Fore > 19, trailing zeros can complete the output after writing
!    --  the first 18 significant digits, or the technique described in the
!    --  next section can be used.
! 
!    --  The final expression for D is
! 
!    --     D := Integer'Max (-18, Integer'Min (Aft, 18 - (Fore - 1)));
! 
!    --  For Y and Z the following expressions can be derived:
! 
!    --     Q / (10.0**D) = X * S
! 
!    --     Q = X * S * (10.0**D) = (X * Y) / Z
! 
!    --     S * 10.0**D = Y / Z;
! 
!    --  If S is an integer greater than or equal to one, then Fore must be at
!    --  least 20 in order to print T'First, which is at most -2.0**63.
!    --  This means D < 0, so use
  
!    --    (1)   Y = -S and Z = -10**(-D)
  
!    --  If 1.0 / S is an integer greater than one, use
  
!    --    (2)   Y = -10**D and Z = -(1.0 / S), for D >= 0
  
!    --  or
  
!    --    (3)   Y = 1 and Z = (1.0 / S) * 10**(-D), for D < 0
  
!    --  Negative values are used for nominator Y and denominator Z, so that S
!    --  can have a maximum value of 2.0**63 and a minimum of 2.0**(-63).
!    --  For Z in -1 .. -9, Fore will still be 20, and D will be negative, as
!    --  (-2.0**63) / -9 is greater than 10**18. In these cases there is room
!    --  in the denominator for the extra decimal scaling required, so case (3)
!    --  will not overflow.
  
!    pragma Assert (System.Fine_Delta >= 2.0**(-63));
!    pragma Assert (Num'Small in 2.0**(-63) .. 2.0**63);
!    pragma Assert (Num'Fore <= 37);
!    --  These assertions need to be relaxed to allow for a Small of
!    --  2.0**(-64) at least, since there is an ACATS test for this ???
  
!    Max_Digits : constant := 18;
!    --  Maximum number of decimal digits that can be represented in a
!    --  64-bit signed number, see above
  
!    --  The constants E0 .. E5 implement a binary search for the appropriate
!    --  power of ten to scale the small so that it has one digit before the
!    --  decimal point.
  
!    subtype Int is Integer;
!    E0 : constant Int := -(20 * Boolean'Pos (Num'Small >= 1.0E1));
!    E1 : constant Int := E0 + 10 * Boolean'Pos (Num'Small * 10.0**E0 < 1.0E-10);
!    E2 : constant Int := E1 +  5 * Boolean'Pos (Num'Small * 10.0**E1 < 1.0E-5);
!    E3 : constant Int := E2 +  3 * Boolean'Pos (Num'Small * 10.0**E2 < 1.0E-3);
!    E4 : constant Int := E3 +  2 * Boolean'Pos (Num'Small * 10.0**E3 < 1.0E-1);
!    E5 : constant Int := E4 +  1 * Boolean'Pos (Num'Small * 10.0**E4 < 1.0E-0);
  
!    Scale : constant Integer := E5;
  
!    pragma Assert (Num'Small * 10.0**Scale >= 1.0
!                    and then Num'Small * 10.0**Scale < 10.0);
  
!    Exact : constant Boolean :=
!      Float'Floor (Num'Small) = Float'Ceiling (Num'Small)
!        or else Float'Floor (1.0 / Num'Small) = Float'Ceiling (1.0 / Num'Small)
!        or else Num'Small >= 10.0**Max_Digits;
!    --  True iff a numerator and denominator can be calculated such that
!    --  their ratio exactly represents the small of Num.
  
!    procedure Put
!      (To   : out String;
!       Last : out Natural;
!       Item : Num;
!       Fore : Integer;
!       Aft  : Field;
!       Exp  : Field);
!    --  Actual output function, used internally by all other Put routines.
!    --  The formal Fore is an Integer, not a Field, because the routine is
!    --  also called from the version of Put that performs I/O to a string,
!    --  where the starting position depends on the size of the String, and
!    --  bears no relation to the bounds of Field.
  
     ---------
     -- Get --
--- 111,264 ----
  --  Implementation Strategies
  --  -------------------------
  
! --  * Floating point arithmetic
  --  * Arbitrary-precision integer arithmetic
  --  * Fixed-precision integer arithmetic
  
! --  Although it seems convenient to convert fixed point numbers to floating
  --  point and then print them, this leads to a number of restrictions.
  --  The first one is precision. The widest floating-point type generally
  --  available has 53 bits of mantissa. This means that Fine_Delta cannot
  --  be less than 2.0**(-53).
  
! --  In GNAT, Fine_Delta is 2.0**(-63), and Duration for example is a 64-bit
! --  type. This means that a floating-point type with 64 bits of mantissa needs
! --  to be used, which is only generally available on the x86 architecture. It
! --  would still be possible to use multi-precision floating point to perform
! --  calculations using longer mantissas, but this is a much harder approach.
  
! --  The base conversions needed for input/output of (non-decimal) fixed point
! --  types can be seen as pairs of integer multiplications and divisions.
  
! --  Arbitrary-precision integer arithmetic would be suitable for the job at
! --  hand, but has the drawback that it is very heavy implementation-wise.
  --  Especially in embedded systems, where fixed point types are often used,
  --  it may not be desirable to require large amounts of storage and time
  --  for fixed I/O operations.
  
  --  Fixed-precision integer arithmetic has the advantage of simplicity and
  --  speed. For the most common fixed point types this would be a perfect
! --  solution. The downside however may be a restricted set of acceptable
  --  fixed point types.
  
! --  Implementation Choices
! --  ----------------------
  
! --  The current implementation in the GNAT runtime uses fixed-precision integer
! --  arithmetic for fixed point types whose Small is the ratio of two integers
! --  whose magnitude is bounded relatively to the size of the mantissa, with a
! --  two-tiered approach for 32-bit and 64-bit fixed point types. For the other
! --  fixed point types, the implementation uses floating-point arithmetic.
  
! --  The exact requirements of the algorithms are analyzed and documented along
! --  with the implementation in their respective units.
  
! with Interfaces;
! with Ada.Text_IO.Fixed_Aux;
  with Ada.Text_IO.Float_Aux;
! with System.Img_Fixed_32; use System.Img_Fixed_32;
! with System.Img_Fixed_64; use System.Img_Fixed_64;
! with System.Val_Fixed_32; use System.Val_Fixed_32;
! with System.Val_Fixed_64; use System.Val_Fixed_64;
! with System.Val_LLF;      use System.Val_LLF;
  
! package body Ada.Text_IO.Fixed_IO with SPARK_Mode => Off is
  
!    --  Note: we still use the floating-point I/O routines for types whose small
!    --  is not the ratio of two sufficiently small integers. This will result in
!    --  inaccuracies for fixed point types that require more precision than is
!    --  available in Long_Long_Float.
  
!    subtype Int32 is Interfaces.Integer_32; use type Int32;
!    subtype Int64 is Interfaces.Integer_64; use type Int64;
  
!    package Aux32 is new
!      Ada.Text_IO.Fixed_Aux (Int32, Scan_Fixed32, Set_Image_Fixed32);
  
!    package Aux64 is new
!      Ada.Text_IO.Fixed_Aux (Int64, Scan_Fixed64, Set_Image_Fixed64);
  
!    package Aux_Long_Long_Float is new
!      Ada.Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
  
!    --  Throughout this generic body, we distinguish between the case where type
!    --  Int32 is OK and where type Int64 is OK. These boolean constants are used
!    --  to test for this, such that only code for the relevant case is included
!    --  in the instance; that's why the computation of their value must be fully
!    --  static (although it is not a static expressions in the RM sense).
  
!    OK_Get_32 : constant Boolean :=
!      Num'Base'Object_Size <= 32
!        and then
!          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
!            or else
!           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**31)
!            or else
!           (Num'Small_Numerator <= 2**27
!             and then Num'Small_Denominator <= 2**27));
!    --  These conditions are derived from the prerequisites of System.Value_F
  
!    OK_Put_32 : constant Boolean :=
!      Num'Base'Object_Size <= 32
!        and then
!          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
!            or else
!           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**31)
!            or else
!           (Num'Small_Numerator < Num'Small_Denominator
!             and then Num'Small_Denominator <= 2**27)
!            or else
!           (Num'Small_Denominator < Num'Small_Numerator
!             and then Num'Small_Numerator <= 2**25));
!    --  These conditions are derived from the prerequisites of System.Image_F
  
!    OK_Get_64 : constant Boolean :=
!      Num'Base'Object_Size <= 64
!        and then
!          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
!            or else
!           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**63)
!            or else
!           (Num'Small_Numerator <= 2**59
!             and then Num'Small_Denominator <= 2**59));
!    --  These conditions are derived from the prerequisites of System.Value_F
  
!    OK_Put_64 : constant Boolean :=
!      Num'Base'Object_Size <= 64
!        and then
!          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
!            or else
!           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**63)
!            or else
!           (Num'Small_Numerator < Num'Small_Denominator
!             and then Num'Small_Denominator <= 2**59)
!            or else
!           (Num'Small_Denominator < Num'Small_Numerator
!             and then Num'Small_Numerator <= 2**53));
!    --  These conditions are derived from the prerequisites of System.Image_F
  
!    E : constant Natural := 63 - 32 * Boolean'Pos (OK_Put_32);
!    --  T'Size - 1 for the selected Int{32,64}
  
!    F0 : constant Natural := 0;
!    F1 : constant Natural :=
!           F0 + 18 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F0) >= 1.0E+18);
!    F2 : constant Natural :=
!           F1 +  9 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F1) >= 1.0E+9);
!    F3 : constant Natural :=
!           F2 +  5 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F2) >= 1.0E+5);
!    F4 : constant Natural :=
!           F3 +  3 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F3) >= 1.0E+3);
!    F5 : constant Natural :=
!           F4 +  2 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F4) >= 1.0E+2);
!    F6 : constant Natural :=
!           F5 +  1 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F5) >= 1.0E+1);
!    --  Binary search for the number of digits - 1 before the decimal point of
!    --  the product 2.0**E * Num'Small.
  
!    For0 : constant Natural := 2 + F6;
!    --  Fore value for the fixed point type whose mantissa is Int{32,64} and
!    --  whose small is Num'Small.
  
     ---------
     -- Get --
*************** package body Ada.Text_IO.Fixed_IO is
*** 319,326 ****
        Width : Field := 0)
     is
        pragma Unsuppress (Range_Check);
     begin
!       Aux.Get (File, Long_Long_Float (Item), Width);
     exception
        when Constraint_Error => raise Data_Error;
     end Get;
--- 270,291 ----
        Width : Field := 0)
     is
        pragma Unsuppress (Range_Check);
+ 
     begin
!       if OK_Get_32 then
!          Item := Num'Fixed_Value
!                    (Aux32.Get (File, Width,
!                                -Num'Small_Numerator,
!                                -Num'Small_Denominator));
!       elsif OK_Get_64 then
!          Item := Num'Fixed_Value
!                    (Aux64.Get (File, Width,
!                                -Num'Small_Numerator,
!                                -Num'Small_Denominator));
!       else
!          Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
!       end if;
! 
     exception
        when Constraint_Error => raise Data_Error;
     end Get;
*************** package body Ada.Text_IO.Fixed_IO is
*** 329,339 ****
       (Item  : out Num;
        Width : Field := 0)
     is
-       pragma Unsuppress (Range_Check);
     begin
!       Aux.Get (Current_In, Long_Long_Float (Item), Width);
!    exception
!       when Constraint_Error => raise Data_Error;
     end Get;
  
     procedure Get
--- 294,301 ----
       (Item  : out Num;
        Width : Field := 0)
     is
     begin
!       Get (Current_In, Item, Width);
     end Get;
  
     procedure Get
*************** package body Ada.Text_IO.Fixed_IO is
*** 342,349 ****
        Last : out Positive)
     is
        pragma Unsuppress (Range_Check);
     begin
!       Aux.Gets (From, Long_Long_Float (Item), Last);
     exception
        when Constraint_Error => raise Data_Error;
     end Get;
--- 304,325 ----
        Last : out Positive)
     is
        pragma Unsuppress (Range_Check);
+ 
     begin
!       if OK_Get_32 then
!          Item := Num'Fixed_Value
!                    (Aux32.Gets (From, Last,
!                                 -Num'Small_Numerator,
!                                 -Num'Small_Denominator));
!       elsif OK_Get_64 then
!          Item := Num'Fixed_Value
!                    (Aux64.Gets (From, Last,
!                                 -Num'Small_Numerator,
!                                 -Num'Small_Denominator));
!       else
!          Aux_Long_Long_Float.Gets (From, Long_Long_Float (Item), Last);
!       end if;
! 
     exception
        when Constraint_Error => raise Data_Error;
     end Get;
*************** package body Ada.Text_IO.Fixed_IO is
*** 359,369 ****
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     is
-       S    : String (1 .. Fore + Aft + Exp + Extra_Layout_Space);
-       Last : Natural;
     begin
!       Put (S, Last, Item, Fore, Aft, Exp);
!       Generic_Aux.Put_Item (File, S (1 .. Last));
     end Put;
  
     procedure Put
--- 335,353 ----
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     is
     begin
!       if OK_Put_32 then
!          Aux32.Put (File, Int32'Integer_Value (Item), Fore, Aft, Exp,
!                     -Num'Small_Numerator, -Num'Small_Denominator,
!                     For0, Num'Aft);
!       elsif OK_Put_64 then
!          Aux64.Put (File, Int64'Integer_Value (Item), Fore, Aft, Exp,
!                     -Num'Small_Numerator, -Num'Small_Denominator,
!                     For0, Num'Aft);
!       else
!          Aux_Long_Long_Float.Put
!            (File, Long_Long_Float (Item), Fore, Aft, Exp);
!       end if;
     end Put;
  
     procedure Put
*************** package body Ada.Text_IO.Fixed_IO is
*** 372,382 ****
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     is
-       S    : String (1 .. Fore + Aft + Exp + Extra_Layout_Space);
-       Last : Natural;
     begin
!       Put (S, Last, Item, Fore, Aft, Exp);
!       Generic_Aux.Put_Item (Text_IO.Current_Out, S (1 .. Last));
     end Put;
  
     procedure Put
--- 356,363 ----
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Out, Item, Fore, Aft, Exp);
     end Put;
  
     procedure Put
*************** package body Ada.Text_IO.Fixed_IO is
*** 385,716 ****
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     is
-       Fore : constant Integer :=
-         To'Length
-           - 1                      -- Decimal point
-           - Field'Max (1, Aft)     -- Decimal part
-           - Boolean'Pos (Exp /= 0) -- Exponent indicator
-           - Exp;                   -- Exponent
- 
-       Last : Natural;
- 
-    begin
-       if Fore - Boolean'Pos (Item < 0.0) < 1 then
-          raise Layout_Error;
-       end if;
- 
-       Put (To, Last, Item, Fore, Aft, Exp);
- 
-       if Last /= To'Last then
-          raise Layout_Error;
-       end if;
-    end Put;
- 
-    procedure Put
-      (To   : out String;
-       Last : out Natural;
-       Item : Num;
-       Fore : Integer;
-       Aft  : Field;
-       Exp  : Field)
-    is
-       subtype Digit is Int64 range 0 .. 9;
- 
-       X   : constant Int64   := Int64'Integer_Value (Item);
-       A   : constant Field   := Field'Max (Aft, 1);
-       Neg : constant Boolean := (Item < 0.0);
-       Pos : Integer := 0;  -- Next digit X has value X * 10.0**Pos;
- 
-       procedure Put_Character (C : Character);
-       pragma Inline (Put_Character);
-       --  Add C to the output string To, updating Last
- 
-       procedure Put_Digit (X : Digit);
-       --  Add digit X to the output string (going from left to right), updating
-       --  Last and Pos, and inserting the sign, leading zeros or a decimal
-       --  point when necessary. After outputting the first digit, Pos must not
-       --  be changed outside Put_Digit anymore.
- 
-       procedure Put_Int64 (X : Int64; Scale : Integer);
-       --  Output the decimal number abs X * 10**Scale
- 
-       procedure Put_Scaled
-         (X, Y, Z : Int64;
-          A       : Field;
-          E       : Integer);
-       --  Output the decimal number (X * Y / Z) * 10**E, producing A digits
-       --  after the decimal point and rounding the final digit. The value
-       --  X * Y / Z is computed with full precision, but must be in the
-       --  range of Int64.
- 
-       -------------------
-       -- Put_Character --
-       -------------------
- 
-       procedure Put_Character (C : Character) is
-       begin
-          Last := Last + 1;
- 
-          --  Never put a character outside of string To. Exception Layout_Error
-          --  will be raised later if Last is greater than To'Last.
- 
-          if Last <= To'Last then
-             To (Last) := C;
-          end if;
-       end Put_Character;
- 
-       ---------------
-       -- Put_Digit --
-       ---------------
- 
-       procedure Put_Digit (X : Digit) is
-          Digs : constant array (Digit) of Character := "0123456789";
- 
-       begin
-          if Last = To'First - 1 then
-             if X /= 0 or else Pos <= 0 then
- 
-                --  Before outputting first digit, include leading space,
-                --  possible minus sign and, if the first digit is fractional,
-                --  decimal seperator and leading zeros.
- 
-                --  The Fore part has Pos + 1 + Boolean'Pos (Neg) characters,
-                --  if Pos >= 0 and otherwise has a single zero digit plus minus
-                --  sign if negative. Add leading space if necessary.
- 
-                for J in Integer'Max (0, Pos) + 2 + Boolean'Pos (Neg) .. Fore
-                loop
-                   Put_Character (' ');
-                end loop;
- 
-                --  Output minus sign, if number is negative
- 
-                if Neg then
-                   Put_Character ('-');
-                end if;
- 
-                --  If starting with fractional digit, output leading zeros
- 
-                if Pos < 0 then
-                   Put_Character ('0');
-                   Put_Character ('.');
- 
-                   for J in Pos .. -2 loop
-                      Put_Character ('0');
-                   end loop;
-                end if;
- 
-                Put_Character (Digs (X));
-             end if;
- 
-          else
-             --  This is not the first digit to be output, so the only
-             --  special handling is that for the decimal point
- 
-             if Pos = -1 then
-                Put_Character ('.');
-             end if;
- 
-             Put_Character (Digs (X));
-          end if;
- 
-          Pos := Pos - 1;
-       end Put_Digit;
- 
-       ---------------
-       -- Put_Int64 --
-       ---------------
- 
-       procedure Put_Int64 (X : Int64; Scale : Integer) is
-       begin
-          if X = 0 then
-             return;
-          end if;
- 
-          if X not in -9 .. 9 then
-             Put_Int64 (X / 10, Scale + 1);
-          end if;
- 
-          --  Use Put_Digit to advance Pos. This fixes a case where the second
-          --  or later Scaled_Divide would omit leading zeroes, resulting in
-          --  too few digits produced and a Layout_Error as result.
- 
-          while Pos > Scale loop
-             Put_Digit (0);
-          end loop;
- 
-          --  If and only if more than one digit is output before the decimal
-          --  point, pos will be unequal to scale when outputting the first
-          --  digit.
- 
-          pragma Assert (Pos = Scale or else Last = To'First - 1);
- 
-          Pos := Scale;
- 
-          Put_Digit (abs (X rem 10));
-       end Put_Int64;
- 
-       ----------------
-       -- Put_Scaled --
-       ----------------
- 
-       procedure Put_Scaled
-         (X, Y, Z : Int64;
-          A       : Field;
-          E       : Integer)
-       is
-          pragma Assert (E >= -Max_Digits);
-          AA : constant Field := Integer'Max (E + A, 0);
-          N  : constant Natural := (AA + Max_Digits - 1) / Max_Digits + 1;
- 
-          Q  : array (0 .. N - 1) of Int64 := (others => 0);
-          --  Each element of Q has Max_Digits decimal digits, except the
-          --  last, which has eAA rem Max_Digits. Only Q (Q'First) may have an
-          --  absolute value equal to or larger than 10**Max_Digits. Only the
-          --  absolute value of the elements is not significant, not the sign.
- 
-          XX : Int64 := X;
-          YY : Int64 := Y;
- 
-       begin
-          for J in Q'Range loop
-             exit when XX = 0;
- 
-             if J > 0 then
-                YY := 10**(Integer'Min (Max_Digits, AA - (J - 1) * Max_Digits));
-             end if;
- 
-             Scaled_Divide (XX, YY, Z, Q (J), R => XX, Round => False);
-          end loop;
- 
-          if -E > A then
-             pragma Assert (N = 1);
- 
-             Discard_Extra_Digits : declare
-                Factor : constant Int64 := 10**(-E - A);
- 
-             begin
-                --  The scaling factors were such that the first division
-                --  produced more digits than requested. So divide away extra
-                --  digits and compute new remainder for later rounding.
- 
-                if abs (Q (0) rem Factor) >= Factor / 2 then
-                   Q (0) := abs (Q (0) / Factor) + 1;
-                else
-                   Q (0) := Q (0) / Factor;
-                end if;
- 
-                XX := 0;
-             end Discard_Extra_Digits;
-          end if;
- 
-          --  At this point XX is a remainder and we need to determine if the
-          --  quotient in Q must be rounded away from zero.
- 
-          --  As XX is less than the divisor, it is safe to take its absolute
-          --  without chance of overflow. The check to see if XX is at least
-          --  half the absolute value of the divisor must be done carefully to
-          --  avoid overflow or lose precision.
- 
-          XX := abs XX;
- 
-          if XX >= 2**62
-             or else (Z < 0 and then (-XX) * 2 <= Z)
-             or else (Z >= 0 and then XX * 2 >= Z)
-          then
-             --  OK, rounding is necessary. As the sign is not significant,
-             --  take advantage of the fact that an extra negative value will
-             --  always be available when propagating the carry.
- 
-             Q (Q'Last) := -abs Q (Q'Last) - 1;
- 
-             Propagate_Carry :
-             for J in reverse 1 .. Q'Last loop
-                if Q (J) = YY or else Q (J) = -YY then
-                   Q (J) := 0;
-                   Q (J - 1) := -abs Q (J - 1) - 1;
- 
-                else
-                   exit Propagate_Carry;
-                end if;
-             end loop Propagate_Carry;
-          end if;
- 
-          for J in Q'First .. Q'Last - 1 loop
-             Put_Int64 (Q (J), E - J * Max_Digits);
-          end loop;
- 
-          Put_Int64 (Q (Q'Last), -A);
-       end Put_Scaled;
- 
-    --  Start of processing for Put
- 
     begin
!       Last := To'First - 1;
! 
!       if Exp /= 0 then
! 
!          --  With the Exp format, it is not known how many output digits to
!          --  generate, as leading zeros must be ignored. Computing too many
!          --  digits and then truncating the output will not give the closest
!          --  output, it is necessary to round at the correct digit.
! 
!          --  The general approach is as follows: as long as no digits have
!          --  been generated, compute the Aft next digits (without rounding).
!          --  Once a non-zero digit is generated, determine the exact number
!          --  of digits remaining and compute them with rounding.
! 
!          --  Since a large number of iterations might be necessary in case
!          --  of Aft = 1, the following optimization would be desirable.
! 
!          --  Count the number Z of leading zero bits in the integer
!          --  representation of X, and start with producing Aft + Z * 1000 /
!          --  3322 digits in the first scaled division.
! 
!          --  However, the floating-point routines are still used now ???
! 
!          System.Img_Real.Set_Image_Real (Long_Long_Float (Item), To, Last,
!             Fore, Aft, Exp);
!          return;
!       end if;
! 
!       if Exact then
!          declare
!             D : constant Integer := Integer'Min (A, Max_Digits
!                                                             - (Num'Fore - 1));
!             Y : constant Int64   := Int64'Min (Int64 (-Num'Small), -1)
!                                      * 10**Integer'Max (0, D);
!             Z : constant Int64   := Int64'Min (Int64 (-(1.0 / Num'Small)), -1)
!                                      * 10**Integer'Max (0, -D);
!          begin
!             Put_Scaled (X, Y, Z, A, -D);
!          end;
! 
!       else -- not Exact
!          declare
!             E : constant Integer := Max_Digits - 1 + Scale;
!             D : constant Integer := Scale - 1;
!             Y : constant Int64   := Int64 (-Num'Small * 10.0**E);
!             Z : constant Int64   := -10**Max_Digits;
!          begin
!             Put_Scaled (X, Y, Z, A, -D);
!          end;
!       end if;
! 
!       --  If only zero digits encountered, unit digit has not been output yet
! 
!       if Last < To'First then
!          Pos := 0;
! 
!       elsif Last > To'Last then
!          raise Layout_Error; -- Not enough room in the output variable
        end if;
- 
-       --  Always output digits up to the first one after the decimal point
- 
-       while Pos >= -A loop
-          Put_Digit (0);
-       end loop;
     end Put;
  
  end Ada.Text_IO.Fixed_IO;
--- 366,383 ----
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     is
     begin
!       if OK_Put_32 then
!          Aux32.Puts (To, Int32'Integer_Value (Item), Aft, Exp,
!                      -Num'Small_Numerator, -Num'Small_Denominator,
!                      For0, Num'Aft);
!       elsif OK_Put_64 then
!          Aux64.Puts (To, Int64'Integer_Value (Item), Aft, Exp,
!                      -Num'Small_Numerator, -Num'Small_Denominator,
!                      For0, Num'Aft);
!       else
!          Aux_Long_Long_Float.Puts (To, Long_Long_Float (Item), Aft, Exp);
        end if;
     end Put;
  
  end Ada.Text_IO.Fixed_IO;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tifiio.ads gcc-11.1.0/gcc/ada/libgnat/a-tifiio.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-tifiio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tifiio.ads	Tue Apr 27 10:00:12 2021
***************
*** 23,29 ****
  private generic
     type Num is delta <>;
  
! package Ada.Text_IO.Fixed_IO is
  
     Default_Fore : Field := Num'Fore;
     Default_Aft  : Field := Num'Aft;
--- 23,29 ----
  private generic
     type Num is delta <>;
  
! package Ada.Text_IO.Fixed_IO with SPARK_Mode => On is
  
     Default_Fore : Field := Num'Fore;
     Default_Aft  : Field := Num'Aft;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tifiio__128.adb gcc-11.1.0/gcc/ada/libgnat/a-tifiio__128.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tifiio__128.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-tifiio__128.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,436 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                 A D A . T E X T _ I O . F I X E D _ I O                  --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  -------------------
+ --  - Fixed point I/O -
+ --  -------------------
+ 
+ --  The following text documents implementation details of the fixed point
+ --  input/output routines in the GNAT runtime. The first part describes the
+ --  general properties of fixed point types as defined by the Ada standard,
+ --  including the Information Systems Annex.
+ 
+ --  Subsequently these are reduced to implementation constraints and the impact
+ --  of these constraints on a few possible approaches to input/output is given.
+ --  Based on this analysis, a specific implementation is selected for use in
+ --  the GNAT runtime. Finally the chosen algorithms are analyzed numerically in
+ --  order to provide user-level documentation on limits for range and precision
+ --  of fixed point types as well as accuracy of input/output conversions.
+ 
+ --  -------------------------------------------
+ --  - General Properties of Fixed Point Types -
+ --  -------------------------------------------
+ 
+ --  Operations on fixed point types, other than input/output, are not important
+ --  for the purpose of this document. Only the set of values that a fixed point
+ --  type can represent and the input/output operations are significant.
+ 
+ --  Values
+ --  ------
+ 
+ --  The set of values of a fixed point type comprise the integral multiples of
+ --  a number called the small of the type. The small can be either a power of
+ --  two, a power of ten or (if the implementation allows) an arbitrary strictly
+ --  positive real value.
+ 
+ --  Implementations need to support ordinary fixed point types with a precision
+ --  of at least 24 bits, and (in order to comply with the Information Systems
+ --  Annex) decimal fixed point types with at least 18 digits. For the rest, no
+ --  requirements exist for the minimal small and range that must be supported.
+ 
+ --  Operations
+ --  ----------
+ 
+ --  [Wide_[Wide_]]Image attribute (see RM 3.5(27.1/2))
+ 
+ --          These attributes return a decimal real literal best approximating
+ --          the value (rounded away from zero if halfway between) with a
+ --          single leading character that is either a minus sign or a space,
+ --          one or more digits before the decimal point (with no redundant
+ --          leading zeros), a decimal point, and N digits after the decimal
+ --          point. For a subtype S, the value of N is S'Aft, the smallest
+ --          positive integer such that (10**N)*S'Delta is greater or equal to
+ --          one, see RM 3.5.10(5).
+ 
+ --          For an arbitrary small, this means large number arithmetic needs
+ --          to be performed.
+ 
+ --  Put (see RM A.10.9(22-26))
+ 
+ --          The requirements for Put add no extra constraints over the image
+ --          attributes, although it would be nice to be able to output more
+ --          than S'Aft digits after the decimal point for values of subtype S.
+ 
+ --  [Wide_[Wide_]]Value attribute (RM 3.5(39.1/2))
+ 
+ --          Since the input can be given in any base in the range 2..16,
+ --          accurate conversion to a fixed point number may require
+ --          arbitrary precision arithmetic if there is no limit on the
+ --          magnitude of the small of the fixed point type.
+ 
+ --  Get (see RM A.10.9(12-21))
+ 
+ --          The requirements for Get are identical to those of the Value
+ --          attribute.
+ 
+ --  ------------------------------
+ --  - Implementation Constraints -
+ --  ------------------------------
+ 
+ --  The requirements listed above for the input/output operations lead to
+ --  significant complexity, if no constraints are put on supported smalls.
+ 
+ --  Implementation Strategies
+ --  -------------------------
+ 
+ --  * Floating point arithmetic
+ --  * Arbitrary-precision integer arithmetic
+ --  * Fixed-precision integer arithmetic
+ 
+ --  Although it seems convenient to convert fixed point numbers to floating
+ --  point and then print them, this leads to a number of restrictions.
+ --  The first one is precision. The widest floating-point type generally
+ --  available has 53 bits of mantissa. This means that Fine_Delta cannot
+ --  be less than 2.0**(-53).
+ 
+ --  In GNAT, Fine_Delta is 2.0**(-127), and Duration for example is a 64-bit
+ --  type. This means that a floating-point type with 128 bits of mantissa needs
+ --  to be used, which currently does not exist in any common architecture. It
+ --  would still be possible to use multi-precision floating point to perform
+ --  calculations using longer mantissas, but this is a much harder approach.
+ 
+ --  The base conversions needed for input/output of (non-decimal) fixed point
+ --  types can be seen as pairs of integer multiplications and divisions.
+ 
+ --  Arbitrary-precision integer arithmetic would be suitable for the job at
+ --  hand, but has the drawback that it is very heavy implementation-wise.
+ --  Especially in embedded systems, where fixed point types are often used,
+ --  it may not be desirable to require large amounts of storage and time
+ --  for fixed I/O operations.
+ 
+ --  Fixed-precision integer arithmetic has the advantage of simplicity and
+ --  speed. For the most common fixed point types this would be a perfect
+ --  solution. The downside however may be a restricted set of acceptable
+ --  fixed point types.
+ 
+ --  Implementation Choices
+ --  ----------------------
+ 
+ --  The current implementation in the GNAT runtime uses fixed-precision integer
+ --  arithmetic for fixed point types whose Small is the ratio of two integers
+ --  whose magnitude is bounded relatively to the size of the mantissa, with a
+ --  three-tiered approach for 32-bit, 64-bit and 128-bit fixed point types. For
+ --  other fixed point types, the implementation uses floating-point arithmetic.
+ 
+ --  The exact requirements of the algorithms are analyzed and documented along
+ --  with the implementation in their respective units.
+ 
+ with Interfaces;
+ with Ada.Text_IO.Fixed_Aux;
+ with Ada.Text_IO.Float_Aux;
+ with System.Img_Fixed_32;  use System.Img_Fixed_32;
+ with System.Img_Fixed_64;  use System.Img_Fixed_64;
+ with System.Img_Fixed_128; use System.Img_Fixed_128;
+ with System.Val_Fixed_32;  use System.Val_Fixed_32;
+ with System.Val_Fixed_64;  use System.Val_Fixed_64;
+ with System.Val_Fixed_128; use System.Val_Fixed_128;
+ with System.Val_LLF;       use System.Val_LLF;
+ 
+ package body Ada.Text_IO.Fixed_IO with SPARK_Mode => Off is
+ 
+    --  Note: we still use the floating-point I/O routines for types whose small
+    --  is not the ratio of two sufficiently small integers. This will result in
+    --  inaccuracies for fixed point types that require more precision than is
+    --  available in Long_Long_Float.
+ 
+    subtype Int32  is Interfaces.Integer_32;  use type Int32;
+    subtype Int64  is Interfaces.Integer_64;  use type Int64;
+    subtype Int128 is Interfaces.Integer_128; use type Int128;
+ 
+    package Aux32 is new
+      Ada.Text_IO.Fixed_Aux (Int32, Scan_Fixed32, Set_Image_Fixed32);
+ 
+    package Aux64 is new
+      Ada.Text_IO.Fixed_Aux (Int64, Scan_Fixed64, Set_Image_Fixed64);
+ 
+    package Aux128 is new
+      Ada.Text_IO.Fixed_Aux (Int128, Scan_Fixed128, Set_Image_Fixed128);
+ 
+    package Aux_Long_Long_Float is new
+      Ada.Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
+ 
+    --  Throughout this generic body, we distinguish between the case where type
+    --  Int32 is OK, where type Int64 is OK and where type Int128 is OK. These
+    --  boolean constants are used to test for this, such that only code for the
+    --  relevant case is included in the instance; that's why the computation of
+    --  their value must be fully static (although it is not a static expression
+    --  in the RM sense).
+ 
+    OK_Get_32 : constant Boolean :=
+      Num'Base'Object_Size <= 32
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**31)
+            or else
+           (Num'Small_Numerator <= 2**27
+             and then Num'Small_Denominator <= 2**27));
+    --  These conditions are derived from the prerequisites of System.Value_F
+ 
+    OK_Put_32 : constant Boolean :=
+      Num'Base'Object_Size <= 32
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**31)
+            or else
+           (Num'Small_Numerator < Num'Small_Denominator
+             and then Num'Small_Denominator <= 2**27)
+            or else
+           (Num'Small_Denominator < Num'Small_Numerator
+             and then Num'Small_Numerator <= 2**25));
+    --  These conditions are derived from the prerequisites of System.Image_F
+ 
+    OK_Get_64 : constant Boolean :=
+      Num'Base'Object_Size <= 64
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**63)
+            or else
+           (Num'Small_Numerator <= 2**59
+             and then Num'Small_Denominator <= 2**59));
+    --  These conditions are derived from the prerequisites of System.Value_F
+ 
+    OK_Put_64 : constant Boolean :=
+      Num'Base'Object_Size <= 64
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**63)
+            or else
+           (Num'Small_Numerator < Num'Small_Denominator
+             and then Num'Small_Denominator <= 2**59)
+            or else
+           (Num'Small_Denominator < Num'Small_Numerator
+             and then Num'Small_Numerator <= 2**53));
+    --  These conditions are derived from the prerequisites of System.Image_F
+ 
+    OK_Get_128 : constant Boolean :=
+      Num'Base'Object_Size <= 128
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**127)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**127)
+            or else
+           (Num'Small_Numerator <= 2**123
+             and then Num'Small_Denominator <= 2**123));
+    --  These conditions are derived from the prerequisites of System.Value_F
+ 
+    OK_Put_128 : constant Boolean :=
+      Num'Base'Object_Size <= 128
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**127)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**127)
+            or else
+           (Num'Small_Numerator < Num'Small_Denominator
+             and then Num'Small_Denominator <= 2**123)
+            or else
+           (Num'Small_Denominator < Num'Small_Numerator
+             and then Num'Small_Numerator <= 2**122));
+    --  These conditions are derived from the prerequisites of System.Image_F
+ 
+    E : constant Natural :=
+          127 - 64 * Boolean'Pos (OK_Put_64) - 32 * Boolean'Pos (OK_Put_32);
+    --  T'Size - 1 for the selected Int{32,64,128}
+ 
+    F0 : constant Natural := 0;
+    F1 : constant Natural :=
+           F0 + 38 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F0) >= 1.0E+38);
+    F2 : constant Natural :=
+           F1 + 19 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F1) >= 1.0E+19);
+    F3 : constant Natural :=
+           F2 +  9 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F2) >= 1.0E+9);
+    F4 : constant Natural :=
+           F3 +  5 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F3) >= 1.0E+5);
+    F5 : constant Natural :=
+           F4 +  3 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F4) >= 1.0E+3);
+    F6 : constant Natural :=
+           F5 +  2 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F5) >= 1.0E+2);
+    F7 : constant Natural :=
+           F6 +  1 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F6) >= 1.0E+1);
+    --  Binary search for the number of digits - 1 before the decimal point of
+    --  the product 2.0**E * Num'Small.
+ 
+    For0 : constant Natural := 2 + F7;
+    --  Fore value for the fixed point type whose mantissa is Int{32,64,128} and
+    --  whose small is Num'Small.
+ 
+    ---------
+    -- Get --
+    ---------
+ 
+    procedure Get
+      (File  : File_Type;
+       Item  : out Num;
+       Width : Field := 0)
+    is
+       pragma Unsuppress (Range_Check);
+ 
+    begin
+       if OK_Get_32 then
+          Item := Num'Fixed_Value
+                    (Aux32.Get (File, Width,
+                                -Num'Small_Numerator,
+                                -Num'Small_Denominator));
+       elsif OK_Get_64 then
+          Item := Num'Fixed_Value
+                    (Aux64.Get (File, Width,
+                                -Num'Small_Numerator,
+                                -Num'Small_Denominator));
+       elsif OK_Get_128 then
+          Item := Num'Fixed_Value
+                    (Aux128.Get (File, Width,
+                                 -Num'Small_Numerator,
+                                 -Num'Small_Denominator));
+       else
+          Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    procedure Get
+      (Item  : out Num;
+       Width : Field := 0)
+    is
+    begin
+       Get (Current_In, Item, Width);
+    end Get;
+ 
+    procedure Get
+      (From : String;
+       Item : out Num;
+       Last : out Positive)
+    is
+       pragma Unsuppress (Range_Check);
+ 
+    begin
+       if OK_Get_32 then
+          Item := Num'Fixed_Value
+                    (Aux32.Gets (From, Last,
+                                 -Num'Small_Numerator,
+                                 -Num'Small_Denominator));
+       elsif OK_Get_64 then
+          Item := Num'Fixed_Value
+                    (Aux64.Gets (From, Last,
+                                 -Num'Small_Numerator,
+                                 -Num'Small_Denominator));
+       elsif OK_Get_128 then
+          Item := Num'Fixed_Value
+                    (Aux128.Gets (From, Last,
+                                  -Num'Small_Numerator,
+                                  -Num'Small_Denominator));
+       else
+          Aux_Long_Long_Float.Gets (From, Long_Long_Float (Item), Last);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    ---------
+    -- Put --
+    ---------
+ 
+    procedure Put
+      (File : File_Type;
+       Item : Num;
+       Fore : Field := Default_Fore;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+    begin
+       if OK_Put_32 then
+          Aux32.Put (File, Int32'Integer_Value (Item), Fore, Aft, Exp,
+                     -Num'Small_Numerator, -Num'Small_Denominator,
+                     For0, Num'Aft);
+       elsif OK_Put_64 then
+          Aux64.Put (File, Int64'Integer_Value (Item), Fore, Aft, Exp,
+                     -Num'Small_Numerator, -Num'Small_Denominator,
+                     For0, Num'Aft);
+       elsif OK_Put_128 then
+          Aux128.Put (File, Int128'Integer_Value (Item), Fore, Aft, Exp,
+                      -Num'Small_Numerator, -Num'Small_Denominator,
+                      For0, Num'Aft);
+       else
+          Aux_Long_Long_Float.Put
+            (File, Long_Long_Float (Item), Fore, Aft, Exp);
+       end if;
+    end Put;
+ 
+    procedure Put
+      (Item : Num;
+       Fore : Field := Default_Fore;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+    begin
+       Put (Current_Out, Item, Fore, Aft, Exp);
+    end Put;
+ 
+    procedure Put
+      (To   : out String;
+       Item : Num;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+    begin
+       if OK_Put_32 then
+          Aux32.Puts (To, Int32'Integer_Value (Item), Aft, Exp,
+                      -Num'Small_Numerator, -Num'Small_Denominator,
+                      For0, Num'Aft);
+       elsif OK_Put_64 then
+          Aux64.Puts (To, Int64'Integer_Value (Item), Aft, Exp,
+                      -Num'Small_Numerator, -Num'Small_Denominator,
+                      For0, Num'Aft);
+       elsif OK_Put_128 then
+          Aux128.Puts (To, Int128'Integer_Value (Item), Aft, Exp,
+                       -Num'Small_Numerator, -Num'Small_Denominator,
+                       For0, Num'Aft);
+       else
+          Aux_Long_Long_Float.Puts (To, Long_Long_Float (Item), Aft, Exp);
+       end if;
+    end Put;
+ 
+ end Ada.Text_IO.Fixed_IO;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tiflau.adb gcc-11.1.0/gcc/ada/libgnat/a-tiflau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tiflau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tiflau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,38 ****
  with Ada.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
  
  with System.Img_Real; use System.Img_Real;
- with System.Val_Real; use System.Val_Real;
  
  package body Ada.Text_IO.Float_Aux is
  
--- 32,37 ----
*************** package body Ada.Text_IO.Float_Aux is
*** 42,53 ****
  
     procedure Get
       (File  : File_Type;
!       Item  : out Long_Long_Float;
        Width : Field)
     is
        Buf  : String (1 .. Field'Last);
        Stop : Integer := 0;
!       Ptr  : aliased Integer := 1;
  
     begin
        if Width /= 0 then
--- 41,52 ----
  
     procedure Get
       (File  : File_Type;
!       Item  : out Num;
        Width : Field)
     is
        Buf  : String (1 .. Field'Last);
        Stop : Integer := 0;
!       Ptr  : aliased Integer;
  
     begin
        if Width /= 0 then
*************** package body Ada.Text_IO.Float_Aux is
*** 55,64 ****
           String_Skip (Buf, Ptr);
        else
           Load_Real (File, Buf, Stop);
        end if;
  
!       Item := Scan_Real (Buf, Ptr'Access, Stop);
! 
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
     end Get;
  
--- 54,63 ----
           String_Skip (Buf, Ptr);
        else
           Load_Real (File, Buf, Stop);
+          Ptr := 1;
        end if;
  
!       Item := Scan (Buf, Ptr'Access, Stop);
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
     end Get;
  
*************** package body Ada.Text_IO.Float_Aux is
*** 68,204 ****
  
     procedure Gets
       (From : String;
!       Item : out Long_Long_Float;
        Last : out Positive)
     is
        Pos : aliased Integer;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan_Real (From, Pos'Access, From'Last);
        Last := Pos - 1;
  
     exception
!       when Constraint_Error =>
!          raise Data_Error;
     end Gets;
  
-    ---------------
-    -- Load_Real --
-    ---------------
- 
-    procedure Load_Real
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural)
-    is
-       Loaded   : Boolean;
- 
-    begin
-       --  Skip initial blanks, and load possible sign
- 
-       Load_Skip (File);
-       Load (File, Buf, Ptr, '+', '-');
- 
-       --  Case of .nnnn
- 
-       Load (File, Buf, Ptr, '.', Loaded);
- 
-       if Loaded then
-          Load_Digits (File, Buf, Ptr, Loaded);
- 
-          --  Hopeless junk if no digits loaded
- 
-          if not Loaded then
-             return;
-          end if;
- 
-       --  Otherwise must have digits to start
- 
-       else
-          Load_Digits (File, Buf, Ptr, Loaded);
- 
-          --  Hopeless junk if no digits loaded
- 
-          if not Loaded then
-             return;
-          end if;
- 
-          --  Based cases. We recognize either the standard '#' or the
-          --  allowed alternative replacement ':' (see RM J.2(3)).
- 
-          Load (File, Buf, Ptr, '#', ':', Loaded);
- 
-          if Loaded then
- 
-             --  Case of nnn#.xxx#
- 
-             Load (File, Buf, Ptr, '.', Loaded);
- 
-             if Loaded then
-                Load_Extended_Digits (File, Buf, Ptr);
-                Load (File, Buf, Ptr, '#', ':');
- 
-             --  Case of nnn#xxx.[xxx]# or nnn#xxx#
- 
-             else
-                Load_Extended_Digits (File, Buf, Ptr);
-                Load (File, Buf, Ptr, '.', Loaded);
- 
-                if Loaded then
-                   Load_Extended_Digits (File, Buf, Ptr);
-                end if;
- 
-                --  As usual, it seems strange to allow mixed base characters,
-                --  but that is what ACVC tests expect, see CE3804M, case (3).
- 
-                Load (File, Buf, Ptr, '#', ':');
-             end if;
- 
-          --  Case of nnn.[nnn] or nnn
- 
-          else
-             --  Prevent the potential processing of '.' in cases where the
-             --  initial digits have a trailing underscore.
- 
-             if Buf (Ptr) = '_' then
-                return;
-             end if;
- 
-             Load (File, Buf, Ptr, '.', Loaded);
- 
-             if Loaded then
-                Load_Digits (File, Buf, Ptr);
-             end if;
-          end if;
-       end if;
- 
-       --  Deal with exponent
- 
-       Load (File, Buf, Ptr, 'E', 'e', Loaded);
- 
-       if Loaded then
-          Load (File, Buf, Ptr, '+', '-');
-          Load_Digits (File, Buf, Ptr);
-       end if;
-    end Load_Real;
- 
     ---------
     -- Put --
     ---------
  
     procedure Put
       (File : File_Type;
!       Item : Long_Long_Float;
        Fore : Field;
        Aft  : Field;
        Exp  : Field)
     is
!       Buf : String (1 .. 3 * Field'Last + 2);
        Ptr : Natural := 0;
  
     begin
!       Set_Image_Real (Item, Buf, Ptr, Fore, Aft, Exp);
        Put_Item (File, Buf (1 .. Ptr));
     end Put;
  
--- 67,102 ----
  
     procedure Gets
       (From : String;
!       Item : out Num;
        Last : out Positive)
     is
        Pos : aliased Integer;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan (From, Pos'Access, From'Last);
        Last := Pos - 1;
  
     exception
!       when Constraint_Error => raise Data_Error;
     end Gets;
  
     ---------
     -- Put --
     ---------
  
     procedure Put
       (File : File_Type;
!       Item : Num;
        Fore : Field;
        Aft  : Field;
        Exp  : Field)
     is
!       Buf : String (1 .. Max_Real_Image_Length);
        Ptr : Natural := 0;
  
     begin
!       Set_Image_Real (Long_Long_Float (Item), Buf, Ptr, Fore, Aft, Exp);
        Put_Item (File, Buf (1 .. Ptr));
     end Put;
  
*************** package body Ada.Text_IO.Float_Aux is
*** 208,222 ****
  
     procedure Puts
       (To   : out String;
!       Item : Long_Long_Float;
        Aft  : Field;
        Exp  : Field)
     is
!       Buf : String (1 .. 3 * Field'Last + 2);
        Ptr : Natural := 0;
  
     begin
!       Set_Image_Real (Item, Buf, Ptr, Fore => 1, Aft => Aft, Exp => Exp);
  
        if Ptr > To'Length then
           raise Layout_Error;
--- 106,121 ----
  
     procedure Puts
       (To   : out String;
!       Item : Num;
        Aft  : Field;
        Exp  : Field)
     is
!       Buf : String (1 .. Max_Real_Image_Length);
        Ptr : Natural := 0;
  
     begin
!       Set_Image_Real
!         (Long_Long_Float (Item), Buf, Ptr, Fore => 1, Aft => Aft, Exp => Exp);
  
        if Ptr > To'Length then
           raise Layout_Error;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tiflau.ads gcc-11.1.0/gcc/ada/libgnat/a-tiflau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-tiflau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tiflau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,71 ****
  
  --  This package contains the routines for Ada.Text_IO.Float_IO that are
  --  shared among separate instantiations of this package. The routines in
! --  this package are identical semantically to those in Float_IO itself,
! --  except that generic parameter Num has been replaced by Long_Long_Float,
! --  and the default parameters have been removed because they are supplied
  --  explicitly by the calls from within the generic template. This package
! --  is also used by Ada.Text_IO.Fixed_IO, and Ada.Text_IO.Decimal_IO.
  
! private package Ada.Text_IO.Float_Aux is
  
!    procedure Load_Real
!      (File : File_Type;
!       Buf  : out String;
!       Ptr  : in out Natural);
!    --  This is an auxiliary routine that is used to load a possibly signed
!    --  real literal value from the input file into Buf, starting at Ptr + 1.
  
     procedure Get
       (File  : File_Type;
!       Item  : out Long_Long_Float;
        Width : Field);
  
     procedure Put
       (File : File_Type;
!       Item : Long_Long_Float;
        Fore : Field;
        Aft  : Field;
        Exp  : Field);
  
     procedure Gets
       (From : String;
!       Item : out Long_Long_Float;
        Last : out Positive);
  
     procedure Puts
       (To   : out String;
!       Item : Long_Long_Float;
        Aft  : Field;
        Exp  : Field);
  
--- 31,72 ----
  
  --  This package contains the routines for Ada.Text_IO.Float_IO that are
  --  shared among separate instantiations of this package. The routines in
! --  this package are identical semantically to those in Float_IO, except
! --  that the default parameters have been removed because they are supplied
  --  explicitly by the calls from within the generic template. This package
! --  is also used by Ada.Text_IO.Fixed_IO and Ada.Text_IO.Decimal_IO.
  
! private generic
  
!    type Num is digits <>;
! 
!    with function Scan
!      (Str : String;
!       Ptr : not null access Integer;
!       Max : Integer) return Num;
! 
! package Ada.Text_IO.Float_Aux is
  
     procedure Get
       (File  : File_Type;
!       Item  : out Num;
        Width : Field);
  
     procedure Put
       (File : File_Type;
!       Item : Num;
        Fore : Field;
        Aft  : Field;
        Exp  : Field);
  
     procedure Gets
       (From : String;
!       Item : out Num;
        Last : out Positive);
  
     procedure Puts
       (To   : out String;
!       Item : Num;
        Aft  : Field;
        Exp  : Field);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tiflio.adb gcc-11.1.0/gcc/ada/libgnat/a-tiflio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tiflio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tiflio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,39 ****
  ------------------------------------------------------------------------------
  
  with Ada.Text_IO.Float_Aux;
  
! package body Ada.Text_IO.Float_IO is
  
!    package Aux renames Ada.Text_IO.Float_Aux;
  
     ---------
     -- Get --
--- 30,58 ----
  ------------------------------------------------------------------------------
  
  with Ada.Text_IO.Float_Aux;
+ with System.Val_Flt;  use System.Val_Flt;
+ with System.Val_LFlt; use System.Val_LFlt;
+ with System.Val_LLF;  use System.Val_LLF;
  
! package body Ada.Text_IO.Float_IO with SPARK_Mode => Off is
  
!    package Aux_Float is new
!       Ada.Text_IO.Float_Aux (Float, Scan_Float);
! 
!    package Aux_Long_Float is new
!       Ada.Text_IO.Float_Aux (Long_Float, Scan_Long_Float);
! 
!    package Aux_Long_Long_Float is new
!       Ada.Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
! 
!    --  Throughout this generic body, we distinguish between the case where type
!    --  Float is OK, where type Long_Float is OK and where type Long_Long_Float
!    --  is needed. These boolean constants are used to test for this, such that
!    --  only code for the relevant case is included in the instance.
! 
!    OK_Float : constant Boolean := Num'Base'Digits <= Float'Digits;
! 
!    OK_Long_Float : constant Boolean := Num'Base'Digits <= Long_Float'Digits;
  
     ---------
     -- Get --
*************** package body Ada.Text_IO.Float_IO is
*** 47,53 ****
        pragma Unsuppress (Range_Check);
  
     begin
!       Aux.Get (File, Long_Long_Float (Item), Width);
  
        --  In the case where the type is unconstrained (e.g. Standard'Float),
        --  the above conversion may result in an infinite value, which is
--- 66,78 ----
        pragma Unsuppress (Range_Check);
  
     begin
!       if OK_Float then
!          Aux_Float.Get (File, Float (Item), Width);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Get (File, Long_Float (Item), Width);
!       else
!          Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
!       end if;
  
        --  In the case where the type is unconstrained (e.g. Standard'Float),
        --  the above conversion may result in an infinite value, which is
*************** package body Ada.Text_IO.Float_IO is
*** 66,87 ****
       (Item  : out Num;
        Width : Field := 0)
     is
-       pragma Unsuppress (Range_Check);
- 
     begin
!       Aux.Get (Current_In, Long_Long_Float (Item), Width);
! 
!       --  In the case where the type is unconstrained (e.g. Standard'Float),
!       --  the above conversion may result in an infinite value, which is
!       --  normally fine for a conversion, but in this case, we want to treat
!       --  that as a data error.
! 
!       if not Item'Valid then
!          raise Data_Error;
!       end if;
! 
!    exception
!       when Constraint_Error => raise Data_Error;
     end Get;
  
     procedure Get
--- 91,98 ----
       (Item  : out Num;
        Width : Field := 0)
     is
     begin
!       Get (Current_In, Item, Width);
     end Get;
  
     procedure Get
*************** package body Ada.Text_IO.Float_IO is
*** 92,98 ****
        pragma Unsuppress (Range_Check);
  
     begin
!       Aux.Gets (From, Long_Long_Float (Item), Last);
  
        --  In the case where the type is unconstrained (e.g. Standard'Float),
        --  the above conversion may result in an infinite value, which is
--- 103,115 ----
        pragma Unsuppress (Range_Check);
  
     begin
!       if OK_Float then
!          Aux_Float.Gets (From, Float (Item), Last);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Gets (From, Long_Float (Item), Last);
!       else
!          Aux_Long_Long_Float.Gets (From, Long_Long_Float (Item), Last);
!       end if;
  
        --  In the case where the type is unconstrained (e.g. Standard'Float),
        --  the above conversion may result in an infinite value, which is
*************** package body Ada.Text_IO.Float_IO is
*** 119,125 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       Aux.Put (File, Long_Long_Float (Item), Fore, Aft, Exp);
     end Put;
  
     procedure Put
--- 136,149 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       if OK_Float then
!          Aux_Float.Put (File, Float (Item), Fore, Aft, Exp);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Put (File, Long_Float (Item), Fore, Aft, Exp);
!       else
!          Aux_Long_Long_Float.Put
!            (File, Long_Long_Float (Item), Fore, Aft, Exp);
!       end if;
     end Put;
  
     procedure Put
*************** package body Ada.Text_IO.Float_IO is
*** 129,135 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       Aux.Put (Current_Out, Long_Long_Float (Item), Fore, Aft, Exp);
     end Put;
  
     procedure Put
--- 153,159 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Out, Item, Fore, Aft, Exp);
     end Put;
  
     procedure Put
*************** package body Ada.Text_IO.Float_IO is
*** 139,145 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       Aux.Puts (To, Long_Long_Float (Item), Aft, Exp);
     end Put;
  
  end Ada.Text_IO.Float_IO;
--- 163,175 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       if OK_Float then
!          Aux_Float.Puts (To, Float (Item), Aft, Exp);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Puts (To, Long_Float (Item), Aft, Exp);
!       else
!          Aux_Long_Long_Float.Puts (To, Long_Long_Float (Item), Aft, Exp);
!       end if;
     end Put;
  
  end Ada.Text_IO.Float_IO;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tiflio.ads gcc-11.1.0/gcc/ada/libgnat/a-tiflio.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-tiflio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tiflio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
***************
*** 43,49 ****
  private generic
     type Num is digits <>;
  
! package Ada.Text_IO.Float_IO is
  
     Default_Fore : Field := 2;
     Default_Aft  : Field := Num'Digits - 1;
--- 43,49 ----
  private generic
     type Num is digits <>;
  
! package Ada.Text_IO.Float_IO with SPARK_Mode => On is
  
     Default_Fore : Field := 2;
     Default_Aft  : Field := Num'Digits - 1;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tigeau.adb gcc-11.1.0/gcc/ada/libgnat/a-tigeau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tigeau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tigeau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Text_IO.Generic_Aux is
*** 322,327 ****
--- 322,481 ----
        Load_Extended_Digits (File, Buf, Ptr, Junk);
     end Load_Extended_Digits;
  
+    ------------------
+    -- Load_Integer --
+    ------------------
+ 
+    procedure Load_Integer
+      (File : File_Type;
+       Buf  : out String;
+       Ptr  : in out Natural)
+    is
+       Hash_Loc : Natural;
+       Loaded   : Boolean;
+ 
+    begin
+       Load_Skip (File);
+ 
+       --  Note: it is a bit strange to allow a minus sign here, but it seems
+       --  consistent with the general behavior expected by the ACVC tests
+       --  which is to scan past junk and then signal data error, see ACVC
+       --  test CE3704F, case (6), which is for signed integer exponents,
+       --  which seems a similar case.
+ 
+       Load (File, Buf, Ptr, '+', '-');
+       Load_Digits (File, Buf, Ptr, Loaded);
+ 
+       if Loaded then
+ 
+          --  Deal with based literal. We recognize either the standard '#' or
+          --  the allowed alternative replacement ':' (see RM J.2(3)).
+ 
+          Load (File, Buf, Ptr, '#', ':', Loaded);
+ 
+          if Loaded then
+             Hash_Loc := Ptr;
+             Load_Extended_Digits (File, Buf, Ptr);
+             Load (File, Buf, Ptr, Buf (Hash_Loc));
+          end if;
+ 
+          --  Deal with exponent
+ 
+          Load (File, Buf, Ptr, 'E', 'e', Loaded);
+ 
+          if Loaded then
+ 
+             --  Note: it is strange to allow a minus sign, since the syntax
+             --  does not, but that is what ACVC test CE3704F, case (6) wants
+             --  for the signed case, and there seems no good reason to treat
+             --  exponents differently for the signed and unsigned cases.
+ 
+             Load (File, Buf, Ptr, '+', '-');
+             Load_Digits (File, Buf, Ptr);
+          end if;
+       end if;
+    end Load_Integer;
+ 
+    ---------------
+    -- Load_Real --
+    ---------------
+ 
+    procedure Load_Real
+      (File : File_Type;
+       Buf  : out String;
+       Ptr  : in out Natural)
+    is
+       Loaded   : Boolean;
+ 
+    begin
+       --  Skip initial blanks, and load possible sign
+ 
+       Load_Skip (File);
+       Load (File, Buf, Ptr, '+', '-');
+ 
+       --  Case of .nnnn
+ 
+       Load (File, Buf, Ptr, '.', Loaded);
+ 
+       if Loaded then
+          Load_Digits (File, Buf, Ptr, Loaded);
+ 
+          --  Hopeless junk if no digits loaded
+ 
+          if not Loaded then
+             return;
+          end if;
+ 
+       --  Otherwise must have digits to start
+ 
+       else
+          Load_Digits (File, Buf, Ptr, Loaded);
+ 
+          --  Hopeless junk if no digits loaded
+ 
+          if not Loaded then
+             return;
+          end if;
+ 
+          --  Based cases. We recognize either the standard '#' or the
+          --  allowed alternative replacement ':' (see RM J.2(3)).
+ 
+          Load (File, Buf, Ptr, '#', ':', Loaded);
+ 
+          if Loaded then
+ 
+             --  Case of nnn#.xxx#
+ 
+             Load (File, Buf, Ptr, '.', Loaded);
+ 
+             if Loaded then
+                Load_Extended_Digits (File, Buf, Ptr);
+                Load (File, Buf, Ptr, '#', ':');
+ 
+             --  Case of nnn#xxx.[xxx]# or nnn#xxx#
+ 
+             else
+                Load_Extended_Digits (File, Buf, Ptr);
+                Load (File, Buf, Ptr, '.', Loaded);
+ 
+                if Loaded then
+                   Load_Extended_Digits (File, Buf, Ptr);
+                end if;
+ 
+                --  As usual, it seems strange to allow mixed base characters,
+                --  but that is what ACVC tests expect, see CE3804M, case (3).
+ 
+                Load (File, Buf, Ptr, '#', ':');
+             end if;
+ 
+          --  Case of nnn.[nnn] or nnn
+ 
+          else
+             --  Prevent the potential processing of '.' in cases where the
+             --  initial digits have a trailing underscore.
+ 
+             if Buf (Ptr) = '_' then
+                return;
+             end if;
+ 
+             Load (File, Buf, Ptr, '.', Loaded);
+ 
+             if Loaded then
+                Load_Digits (File, Buf, Ptr);
+             end if;
+          end if;
+       end if;
+ 
+       --  Deal with exponent
+ 
+       Load (File, Buf, Ptr, 'E', 'e', Loaded);
+ 
+       if Loaded then
+          Load (File, Buf, Ptr, '+', '-');
+          Load_Digits (File, Buf, Ptr);
+       end if;
+    end Load_Real;
+ 
     ---------------
     -- Load_Skip --
     ---------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tigeau.ads gcc-11.1.0/gcc/ada/libgnat/a-tigeau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-tigeau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tigeau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** private package Ada.Text_IO.Generic_Aux
*** 150,155 ****
--- 150,167 ----
        Ptr    : in out Integer);
     --  Same as above, but no indication if character is loaded
  
+    procedure Load_Integer
+      (File : File_Type;
+       Buf  : out String;
+       Ptr  : in out Natural);
+    --  Loads a possibly signed integer literal value
+ 
+    procedure Load_Real
+      (File : File_Type;
+       Buf  : out String;
+       Ptr  : in out Natural);
+    --  Loads a possibly signed real literal value
+ 
     function Nextc (File : File_Type) return Integer;
     --  Like Getc, but includes a call to Ungetc, so that the file
     --  pointer is not moved by the call.
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tigeli.adb gcc-11.1.0/gcc/ada/libgnat/a-tigeli.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tigeli.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tigeli.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tiinau.adb gcc-11.1.0/gcc/ada/libgnat/a-tiinau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tiinau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tiinau.adb	Tue Apr 27 10:00:12 2021
***************
*** 2,12 ****
  --                                                                          --
  --                         GNAT RUN-TIME COMPONENTS                         --
  --                                                                          --
! --              A D A . T E X T _ I O . I N T E G E R  _ A U X              --
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 2,12 ----
  --                                                                          --
  --                         GNAT RUN-TIME COMPONENTS                         --
  --                                                                          --
! --              A D A . T E X T _ I O . I N T E G E R _ A U X               --
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,91 ****
  
  with Ada.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
  
- with System.Img_BIU;   use System.Img_BIU;
- with System.Img_Int;   use System.Img_Int;
- with System.Img_LLB;   use System.Img_LLB;
- with System.Img_LLI;   use System.Img_LLI;
- with System.Img_LLW;   use System.Img_LLW;
- with System.Img_WIU;   use System.Img_WIU;
- with System.Val_Int;   use System.Val_Int;
- with System.Val_LLI;   use System.Val_LLI;
- 
  package body Ada.Text_IO.Integer_Aux is
  
!    -----------------------
!    -- Local Subprograms --
!    -----------------------
! 
!    procedure Load_Integer
!      (File : File_Type;
!       Buf  : out String;
!       Ptr  : in out Natural);
!    --  This is an auxiliary routine that is used to load a possibly signed
!    --  integer literal value from the input file into Buf, starting at Ptr + 1.
!    --  On return, Ptr is set to the last character stored.
! 
!    -------------
!    -- Get_Int --
!    -------------
! 
!    procedure Get_Int
!      (File  : File_Type;
!       Item  : out Integer;
!       Width : Field)
!    is
!       Buf  : String (1 .. Field'Last);
!       Ptr  : aliased Integer := 1;
!       Stop : Integer := 0;
! 
!    begin
!       if Width /= 0 then
!          Load_Width (File, Width, Buf, Stop);
!          String_Skip (Buf, Ptr);
!       else
!          Load_Integer (File, Buf, Stop);
!       end if;
! 
!       Item := Scan_Integer (Buf, Ptr'Access, Stop);
!       Check_End_Of_Field (Buf, Stop, Ptr, Width);
!    end Get_Int;
! 
!    -------------
!    -- Get_LLI --
!    -------------
  
!    procedure Get_LLI
       (File  : File_Type;
!       Item  : out Long_Long_Integer;
        Width : Field)
     is
        Buf  : String (1 .. Field'Last);
--- 31,45 ----
  
  with Ada.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
  
  package body Ada.Text_IO.Integer_Aux is
  
!    ---------
!    -- Get --
!    ---------
  
!    procedure Get
       (File  : File_Type;
!       Item  : out Num;
        Width : Field)
     is
        Buf  : String (1 .. Field'Last);
*************** package body Ada.Text_IO.Integer_Aux is
*** 100,229 ****
           Load_Integer (File, Buf, Stop);
        end if;
  
!       Item := Scan_Long_Long_Integer (Buf, Ptr'Access, Stop);
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
!    end Get_LLI;
! 
!    --------------
!    -- Gets_Int --
!    --------------
! 
!    procedure Gets_Int
!      (From : String;
!       Item : out Integer;
!       Last : out Positive)
!    is
!       Pos : aliased Integer;
! 
!    begin
!       String_Skip (From, Pos);
!       Item := Scan_Integer (From, Pos'Access, From'Last);
!       Last := Pos - 1;
! 
!    exception
!       when Constraint_Error =>
!          raise Data_Error;
!    end Gets_Int;
  
!    --------------
!    -- Gets_LLI --
!    --------------
  
!    procedure Gets_LLI
       (From : String;
!       Item : out Long_Long_Integer;
        Last : out Positive)
     is
        Pos : aliased Integer;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan_Long_Long_Integer (From, Pos'Access, From'Last);
        Last := Pos - 1;
  
     exception
        when Constraint_Error =>
           raise Data_Error;
!    end Gets_LLI;
! 
!    ------------------
!    -- Load_Integer --
!    ------------------
! 
!    procedure Load_Integer
!      (File : File_Type;
!       Buf  : out String;
!       Ptr  : in out Natural)
!    is
!       Hash_Loc : Natural;
!       Loaded   : Boolean;
! 
!    begin
!       Load_Skip (File);
!       Load (File, Buf, Ptr, '+', '-');
! 
!       Load_Digits (File, Buf, Ptr, Loaded);
! 
!       if Loaded then
! 
!          --  Deal with based literal. We recognize either the standard '#' or
!          --  the allowed alternative replacement ':' (see RM J.2(3)).
! 
!          Load (File, Buf, Ptr, '#', ':', Loaded);
! 
!          if Loaded then
!             Hash_Loc := Ptr;
!             Load_Extended_Digits (File, Buf, Ptr);
!             Load (File, Buf, Ptr, Buf (Hash_Loc));
!          end if;
! 
!          --  Deal with exponent
! 
!          Load (File, Buf, Ptr, 'E', 'e', Loaded);
! 
!          if Loaded then
! 
!             --  Note: it is strange to allow a minus sign, since the syntax
!             --  does not, but that is what ACVC test CE3704F, case (6) wants.
! 
!             Load (File, Buf, Ptr, '+', '-');
!             Load_Digits (File, Buf, Ptr);
!          end if;
!       end if;
!    end Load_Integer;
! 
!    -------------
!    -- Put_Int --
!    -------------
! 
!    procedure Put_Int
!      (File  : File_Type;
!       Item  : Integer;
!       Width : Field;
!       Base  : Number_Base)
!    is
!       Buf : String (1 .. Integer'Max (Field'Last, Width));
!       Ptr : Natural := 0;
! 
!    begin
!       if Base = 10 and then Width = 0 then
!          Set_Image_Integer (Item, Buf, Ptr);
!       elsif Base = 10 then
!          Set_Image_Width_Integer (Item, Width, Buf, Ptr);
!       else
!          Set_Image_Based_Integer (Item, Base, Width, Buf, Ptr);
!       end if;
! 
!       Put_Item (File, Buf (1 .. Ptr));
!    end Put_Int;
  
!    -------------
!    -- Put_LLI --
!    -------------
  
!    procedure Put_LLI
       (File  : File_Type;
!       Item  : Long_Long_Integer;
        Width : Field;
        Base  : Number_Base)
     is
--- 54,91 ----
           Load_Integer (File, Buf, Stop);
        end if;
  
!       Item := Scan (Buf, Ptr'Access, Stop);
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
!    end Get;
  
!    ----------
!    -- Gets --
!    ----------
  
!    procedure Gets
       (From : String;
!       Item : out Num;
        Last : out Positive)
     is
        Pos : aliased Integer;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan (From, Pos'Access, From'Last);
        Last := Pos - 1;
  
     exception
        when Constraint_Error =>
           raise Data_Error;
!    end Gets;
  
!    ---------
!    -- Put --
!    ---------
  
!    procedure Put
       (File  : File_Type;
!       Item  : Num;
        Width : Field;
        Base  : Number_Base)
     is
*************** package body Ada.Text_IO.Integer_Aux is
*** 232,280 ****
  
     begin
        if Base = 10 and then Width = 0 then
!          Set_Image_Long_Long_Integer (Item, Buf, Ptr);
        elsif Base = 10 then
!          Set_Image_Width_Long_Long_Integer (Item, Width, Buf, Ptr);
        else
!          Set_Image_Based_Long_Long_Integer (Item, Base, Width, Buf, Ptr);
        end if;
  
        Put_Item (File, Buf (1 .. Ptr));
!    end Put_LLI;
! 
!    --------------
!    -- Puts_Int --
!    --------------
! 
!    procedure Puts_Int
!      (To   : out String;
!       Item : Integer;
!       Base : Number_Base)
!    is
!       Buf : String (1 .. Integer'Max (Field'Last, To'Length));
!       Ptr : Natural := 0;
! 
!    begin
!       if Base = 10 then
!          Set_Image_Width_Integer (Item, To'Length, Buf, Ptr);
!       else
!          Set_Image_Based_Integer (Item, Base, To'Length, Buf, Ptr);
!       end if;
! 
!       if Ptr > To'Length then
!          raise Layout_Error;
!       else
!          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
!       end if;
!    end Puts_Int;
  
!    --------------
!    -- Puts_LLI --
!    --------------
  
!    procedure Puts_LLI
       (To   : out String;
!       Item : Long_Long_Integer;
        Base : Number_Base)
     is
        Buf : String (1 .. Integer'Max (Field'Last, To'Length));
--- 94,116 ----
  
     begin
        if Base = 10 and then Width = 0 then
!          Set_Image (Item, Buf, Ptr);
        elsif Base = 10 then
!          Set_Image_Width (Item, Width, Buf, Ptr);
        else
!          Set_Image_Based (Item, Base, Width, Buf, Ptr);
        end if;
  
        Put_Item (File, Buf (1 .. Ptr));
!    end Put;
  
!    ----------
!    -- Puts --
!    ----------
  
!    procedure Puts
       (To   : out String;
!       Item : Num;
        Base : Number_Base)
     is
        Buf : String (1 .. Integer'Max (Field'Last, To'Length));
*************** package body Ada.Text_IO.Integer_Aux is
*** 282,290 ****
  
     begin
        if Base = 10 then
!          Set_Image_Width_Long_Long_Integer (Item, To'Length, Buf, Ptr);
        else
!          Set_Image_Based_Long_Long_Integer (Item, Base, To'Length, Buf, Ptr);
        end if;
  
        if Ptr > To'Length then
--- 118,126 ----
  
     begin
        if Base = 10 then
!          Set_Image_Width (Item, To'Length, Buf, Ptr);
        else
!          Set_Image_Based (Item, Base, To'Length, Buf, Ptr);
        end if;
  
        if Ptr > To'Length then
*************** package body Ada.Text_IO.Integer_Aux is
*** 292,297 ****
        else
           To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
        end if;
!    end Puts_LLI;
  
  end Ada.Text_IO.Integer_Aux;
--- 128,133 ----
        else
           To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
        end if;
!    end Puts;
  
  end Ada.Text_IO.Integer_Aux;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tiinau.ads gcc-11.1.0/gcc/ada/libgnat/a-tiinau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-tiinau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tiinau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,83 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains the routines for Ada.Text_IO.Integer_IO that are
! --  shared among separate instantiations of this package. The routines in
! --  this package are identical semantically to those in Integer_IO itself,
! --  except that the generic parameter Num has been replaced by Integer or
! --  Long_Long_Integer, and the default parameters have been removed because
! --  they are supplied explicitly by the calls from within the generic template.
  
! private package Ada.Text_IO.Integer_Aux is
  
!    procedure Get_Int
!      (File  : File_Type;
!       Item  : out Integer;
!       Width : Field);
  
!    procedure Get_LLI
       (File  : File_Type;
!       Item  : out Long_Long_Integer;
        Width : Field);
  
!    procedure Put_Int
!      (File  : File_Type;
!       Item  : Integer;
!       Width : Field;
!       Base  : Number_Base);
  
!    procedure Put_LLI
       (File  : File_Type;
!       Item  : Long_Long_Integer;
        Width : Field;
        Base  : Number_Base);
  
!    procedure Gets_Int
!      (From : String;
!       Item : out Integer;
!       Last : out Positive);
! 
!    procedure Gets_LLI
!      (From : String;
!       Item : out Long_Long_Integer;
!       Last : out Positive);
! 
!    procedure Puts_Int
!      (To   : out String;
!       Item : Integer;
!       Base : Number_Base);
! 
!    procedure Puts_LLI
       (To   : out String;
!       Item : Long_Long_Integer;
        Base : Number_Base);
  
  end Ada.Text_IO.Integer_Aux;
--- 29,73 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains the implementation for Ada.Text_IO.Integer_IO and
! --  Ada.Text_IO.Modular_IO. The routines in this package are identical
! --  semantically to those in Integer_IO and Modular_IO themselves, except that
! --  the default parameters have been removed because they are supplied
! --  explicitly by the calls from within these units.
  
! private generic
!    type Num is (<>);
  
!    with function Scan
!      (Str : String; Ptr : not null access Integer; Max : Integer) return Num;
!    with procedure Set_Image
!      (V : Num; S : in out String; P : in out Natural);
!    with procedure Set_Image_Width
!      (V : Num; W : Integer; S : out String; P : in out Natural);
!    with procedure Set_Image_Based
!      (V : Num; B : Natural; W : Integer; S : out String; P : in out Natural);
  
! package Ada.Text_IO.Integer_Aux is
! 
!    procedure Get
       (File  : File_Type;
!       Item  : out Num;
        Width : Field);
  
!    procedure Gets
!      (From : String;
!       Item : out Num;
!       Last : out Positive);
  
!    procedure Put
       (File  : File_Type;
!       Item  : Num;
        Width : Field;
        Base  : Number_Base);
  
!    procedure Puts
       (To   : out String;
!       Item : Num;
        Base : Number_Base);
  
  end Ada.Text_IO.Integer_Aux;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tiinio.adb gcc-11.1.0/gcc/ada/libgnat/a-tiinio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tiinio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tiinio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,39 ****
  ------------------------------------------------------------------------------
  
  with Ada.Text_IO.Integer_Aux;
  
  package body Ada.Text_IO.Integer_IO is
  
!    package Aux renames Ada.Text_IO.Integer_Aux;
  
     Need_LLI : constant Boolean := Num'Base'Size > Integer'Size;
     --  Throughout this generic body, we distinguish between the case where type
--- 30,61 ----
  ------------------------------------------------------------------------------
  
  with Ada.Text_IO.Integer_Aux;
+ with System.Img_BIU; use System.Img_BIU;
+ with System.Img_Int; use System.Img_Int;
+ with System.Img_LLB; use System.Img_LLB;
+ with System.Img_LLI; use System.Img_LLI;
+ with System.Img_LLW; use System.Img_LLW;
+ with System.Img_WIU; use System.Img_WIU;
+ with System.Val_Int; use System.Val_Int;
+ with System.Val_LLI; use System.Val_LLI;
  
  package body Ada.Text_IO.Integer_IO is
  
!    package Aux_Int is new
!      Ada.Text_IO.Integer_Aux
!        (Integer,
!         Scan_Integer,
!         Set_Image_Integer,
!         Set_Image_Width_Integer,
!         Set_Image_Based_Integer);
! 
!    package Aux_LLI is new
!      Ada.Text_IO.Integer_Aux
!        (Long_Long_Integer,
!         Scan_Long_Long_Integer,
!         Set_Image_Long_Long_Integer,
!         Set_Image_Width_Long_Long_Integer,
!         Set_Image_Based_Long_Long_Integer);
  
     Need_LLI : constant Boolean := Num'Base'Size > Integer'Size;
     --  Throughout this generic body, we distinguish between the case where type
*************** package body Ada.Text_IO.Integer_IO is
*** 57,65 ****
  
     begin
        if Need_LLI then
!          Aux.Get_LLI (File, Long_Long_Integer (Item), Width);
        else
!          Aux.Get_Int (File, Integer (Item), Width);
        end if;
  
     exception
--- 79,87 ----
  
     begin
        if Need_LLI then
!          Aux_LLI.Get (File, Long_Long_Integer (Item), Width);
        else
!          Aux_Int.Get (File, Integer (Item), Width);
        end if;
  
     exception
*************** package body Ada.Text_IO.Integer_IO is
*** 70,89 ****
       (Item  : out Num;
        Width : Field := 0)
     is
-       --  We depend on a range check to get Data_Error
- 
-       pragma Unsuppress (Range_Check);
-       pragma Unsuppress (Overflow_Check);
- 
     begin
!       if Need_LLI then
!          Aux.Get_LLI (Current_In, Long_Long_Integer (Item), Width);
!       else
!          Aux.Get_Int (Current_In, Integer (Item), Width);
!       end if;
! 
!    exception
!       when Constraint_Error => raise Data_Error;
     end Get;
  
     procedure Get
--- 92,99 ----
       (Item  : out Num;
        Width : Field := 0)
     is
     begin
!       Get (Current_In, Item, Width);
     end Get;
  
     procedure Get
*************** package body Ada.Text_IO.Integer_IO is
*** 98,106 ****
  
     begin
        if Need_LLI then
!          Aux.Gets_LLI (From, Long_Long_Integer (Item), Last);
        else
!          Aux.Gets_Int (From, Integer (Item), Last);
        end if;
  
     exception
--- 108,116 ----
  
     begin
        if Need_LLI then
!          Aux_LLI.Gets (From, Long_Long_Integer (Item), Last);
        else
!          Aux_Int.Gets (From, Integer (Item), Last);
        end if;
  
     exception
*************** package body Ada.Text_IO.Integer_IO is
*** 119,127 ****
     is
     begin
        if Need_LLI then
!          Aux.Put_LLI (File, Long_Long_Integer (Item), Width, Base);
        else
!          Aux.Put_Int (File, Integer (Item), Width, Base);
        end if;
     end Put;
  
--- 129,137 ----
     is
     begin
        if Need_LLI then
!          Aux_LLI.Put (File, Long_Long_Integer (Item), Width, Base);
        else
!          Aux_Int.Put (File, Integer (Item), Width, Base);
        end if;
     end Put;
  
*************** package body Ada.Text_IO.Integer_IO is
*** 131,141 ****
        Base  : Number_Base := Default_Base)
     is
     begin
!       if Need_LLI then
!          Aux.Put_LLI (Current_Out, Long_Long_Integer (Item), Width, Base);
!       else
!          Aux.Put_Int (Current_Out, Integer (Item), Width, Base);
!       end if;
     end Put;
  
     procedure Put
--- 141,147 ----
        Base  : Number_Base := Default_Base)
     is
     begin
!       Put (Current_Out, Item, Width, Base);
     end Put;
  
     procedure Put
*************** package body Ada.Text_IO.Integer_IO is
*** 145,153 ****
     is
     begin
        if Need_LLI then
!          Aux.Puts_LLI (To, Long_Long_Integer (Item), Base);
        else
!          Aux.Puts_Int (To, Integer (Item), Base);
        end if;
     end Put;
  
--- 151,159 ----
     is
     begin
        if Need_LLI then
!          Aux_LLI.Puts (To, Long_Long_Integer (Item), Base);
        else
!          Aux_Int.Puts (To, Integer (Item), Base);
        end if;
     end Put;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tiinio.ads gcc-11.1.0/gcc/ada/libgnat/a-tiinio.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-tiinio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tiinio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tiinio__128.adb gcc-11.1.0/gcc/ada/libgnat/a-tiinio__128.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tiinio__128.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-tiinio__128.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,182 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --               A D A . T E X T _ I O . I N T E G E R _ I O                --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Text_IO.Integer_Aux;
+ with System.Img_BIU;  use System.Img_BIU;
+ with System.Img_Int;  use System.Img_Int;
+ with System.Img_LLB;  use System.Img_LLB;
+ with System.Img_LLI;  use System.Img_LLI;
+ with System.Img_LLW;  use System.Img_LLW;
+ with System.Img_LLLB; use System.Img_LLLB;
+ with System.Img_LLLI; use System.Img_LLLI;
+ with System.Img_LLLW; use System.Img_LLLW;
+ with System.Img_WIU;  use System.Img_WIU;
+ with System.Val_Int;  use System.Val_Int;
+ with System.Val_LLI;  use System.Val_LLI;
+ with System.Val_LLLI; use System.Val_LLLI;
+ 
+ package body Ada.Text_IO.Integer_IO is
+ 
+    package Aux_Int is new
+      Ada.Text_IO.Integer_Aux
+        (Integer,
+         Scan_Integer,
+         Set_Image_Integer,
+         Set_Image_Width_Integer,
+         Set_Image_Based_Integer);
+ 
+    package Aux_LLI is new
+      Ada.Text_IO.Integer_Aux
+        (Long_Long_Integer,
+         Scan_Long_Long_Integer,
+         Set_Image_Long_Long_Integer,
+         Set_Image_Width_Long_Long_Integer,
+         Set_Image_Based_Long_Long_Integer);
+ 
+    package Aux_LLLI is new
+      Ada.Text_IO.Integer_Aux
+        (Long_Long_Long_Integer,
+         Scan_Long_Long_Long_Integer,
+         Set_Image_Long_Long_Long_Integer,
+         Set_Image_Width_Long_Long_Long_Integer,
+         Set_Image_Based_Long_Long_Long_Integer);
+ 
+    Need_LLI  : constant Boolean := Num'Base'Size > Integer'Size;
+    Need_LLLI : constant Boolean := Num'Base'Size > Long_Long_Integer'Size;
+    --  Throughout this generic body, we distinguish between cases where type
+    --  Integer is acceptable, where type Long_Long_Integer is acceptable and
+    --  where type Long_Long_Long_Integer is needed. These boolean constants
+    --  are used to test for these cases and since they are constant, only code
+    --  for the relevant case will be included in the instance.
+ 
+    ---------
+    -- Get --
+    ---------
+ 
+    procedure Get
+      (File  : File_Type;
+       Item  : out Num;
+       Width : Field := 0)
+    is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+       pragma Unsuppress (Overflow_Check);
+ 
+    begin
+       if Need_LLLI then
+          Aux_LLLI.Get (File, Long_Long_Long_Integer (Item), Width);
+       elsif Need_LLI then
+          Aux_LLI.Get (File, Long_Long_Integer (Item), Width);
+       else
+          Aux_Int.Get (File, Integer (Item), Width);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    procedure Get
+      (Item  : out Num;
+       Width : Field := 0)
+    is
+    begin
+       Get (Current_In, Item, Width);
+    end Get;
+ 
+    procedure Get
+      (From : String;
+       Item : out Num;
+       Last : out Positive)
+    is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+       pragma Unsuppress (Overflow_Check);
+ 
+    begin
+       if Need_LLLI then
+          Aux_LLLI.Gets (From, Long_Long_Long_Integer (Item), Last);
+       elsif Need_LLI then
+          Aux_LLI.Gets (From, Long_Long_Integer (Item), Last);
+       else
+          Aux_Int.Gets (From, Integer (Item), Last);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    ---------
+    -- Put --
+    ---------
+ 
+    procedure Put
+      (File  : File_Type;
+       Item  : Num;
+       Width : Field := Default_Width;
+       Base  : Number_Base := Default_Base)
+    is
+    begin
+       if Need_LLLI then
+          Aux_LLLI.Put (File, Long_Long_Long_Integer (Item), Width, Base);
+       elsif Need_LLI then
+          Aux_LLI.Put (File, Long_Long_Integer (Item), Width, Base);
+       else
+          Aux_Int.Put (File, Integer (Item), Width, Base);
+       end if;
+    end Put;
+ 
+    procedure Put
+      (Item  : Num;
+       Width : Field := Default_Width;
+       Base  : Number_Base := Default_Base)
+    is
+    begin
+       Put (Current_Out, Item, Width, Base);
+    end Put;
+ 
+    procedure Put
+      (To   : out String;
+       Item : Num;
+       Base : Number_Base := Default_Base)
+    is
+    begin
+       if Need_LLLI then
+          Aux_LLLI.Puts (To, Long_Long_Long_Integer (Item), Base);
+       elsif Need_LLI then
+          Aux_LLI.Puts (To, Long_Long_Integer (Item), Base);
+       else
+          Aux_Int.Puts (To, Integer (Item), Base);
+       end if;
+    end Put;
+ 
+ end Ada.Text_IO.Integer_IO;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-timoau.adb gcc-11.1.0/gcc/ada/libgnat/a-timoau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-timoau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-timoau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,305 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . T E X T _ I O . M O D U L A R  _ A U X              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
- 
- with System.Img_BIU; use System.Img_BIU;
- with System.Img_Uns; use System.Img_Uns;
- with System.Img_LLB; use System.Img_LLB;
- with System.Img_LLU; use System.Img_LLU;
- with System.Img_LLW; use System.Img_LLW;
- with System.Img_WIU; use System.Img_WIU;
- with System.Val_Uns; use System.Val_Uns;
- with System.Val_LLU; use System.Val_LLU;
- 
- package body Ada.Text_IO.Modular_Aux is
- 
-    use System.Unsigned_Types;
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Load_Modular
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural);
-    --  This is an auxiliary routine that is used to load an possibly signed
-    --  modular literal value from the input file into Buf, starting at Ptr + 1.
-    --  Ptr is left set to the last character stored.
- 
-    -------------
-    -- Get_LLU --
-    -------------
- 
-    procedure Get_LLU
-      (File  : File_Type;
-       Item  : out Long_Long_Unsigned;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Stop : Integer := 0;
-       Ptr  : aliased Integer := 1;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Modular (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Long_Long_Unsigned (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_LLU;
- 
-    -------------
-    -- Get_Uns --
-    -------------
- 
-    procedure Get_Uns
-      (File  : File_Type;
-       Item  : out Unsigned;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Stop : Integer := 0;
-       Ptr  : aliased Integer := 1;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Modular (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Unsigned (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_Uns;
- 
-    --------------
-    -- Gets_LLU --
-    --------------
- 
-    procedure Gets_LLU
-      (From : String;
-       Item : out Long_Long_Unsigned;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Long_Long_Unsigned (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_LLU;
- 
-    --------------
-    -- Gets_Uns --
-    --------------
- 
-    procedure Gets_Uns
-      (From : String;
-       Item : out Unsigned;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Unsigned (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_Uns;
- 
-    ------------------
-    -- Load_Modular --
-    ------------------
- 
-    procedure Load_Modular
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural)
-    is
-       Hash_Loc : Natural;
-       Loaded   : Boolean;
- 
-    begin
-       Load_Skip (File);
- 
-       --  Note: it is a bit strange to allow a minus sign here, but it seems
-       --  consistent with the general behavior expected by the ACVC tests
-       --  which is to scan past junk and then signal data error, see ACVC
-       --  test CE3704F, case (6), which is for signed integer exponents,
-       --  which seems a similar case.
- 
-       Load (File, Buf, Ptr, '+', '-');
-       Load_Digits (File, Buf, Ptr, Loaded);
- 
-       if Loaded then
- 
-          --  Deal with based case. We recognize either the standard '#' or the
-          --  allowed alternative replacement ':' (see RM J.2(3)).
- 
-          Load (File, Buf, Ptr, '#', ':', Loaded);
- 
-          if Loaded then
-             Hash_Loc := Ptr;
-             Load_Extended_Digits (File, Buf, Ptr);
-             Load (File, Buf, Ptr, Buf (Hash_Loc));
-          end if;
- 
-          Load (File, Buf, Ptr, 'E', 'e', Loaded);
- 
-          if Loaded then
- 
-             --  Note: it is strange to allow a minus sign, since the syntax
-             --  does not, but that is what ACVC test CE3704F, case (6) wants
-             --  for the signed case, and there seems no good reason to treat
-             --  exponents differently for the signed and unsigned cases.
- 
-             Load (File, Buf, Ptr, '+', '-');
-             Load_Digits (File, Buf, Ptr);
-          end if;
-       end if;
-    end Load_Modular;
- 
-    -------------
-    -- Put_LLU --
-    -------------
- 
-    procedure Put_LLU
-      (File  : File_Type;
-       Item  : Long_Long_Unsigned;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Long_Long_Unsigned (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Long_Long_Unsigned (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Unsigned (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_LLU;
- 
-    -------------
-    -- Put_Uns --
-    -------------
- 
-    procedure Put_Uns
-      (File  : File_Type;
-       Item  : Unsigned;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Unsigned (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Unsigned (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Unsigned (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_Uns;
- 
-    --------------
-    -- Puts_LLU --
-    --------------
- 
-    procedure Puts_LLU
-      (To   : out String;
-       Item : Long_Long_Unsigned;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Long_Long_Unsigned (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Unsigned (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_LLU;
- 
-    --------------
-    -- Puts_Uns --
-    --------------
- 
-    procedure Puts_Uns
-      (To   : out String;
-       Item : Unsigned;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Unsigned (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Unsigned (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_Uns;
- 
- end Ada.Text_IO.Modular_Aux;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-timoau.ads gcc-11.1.0/gcc/ada/libgnat/a-timoau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-timoau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-timoau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,87 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . T E X T _ I O . M O D U L A R _ A U X               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package contains the routines for Ada.Text_IO.Modular_IO that are
- --  shared among separate instantiations of this package. The routines in
- --  this package are identical semantically to those in Modular_IO itself,
- --  except that the generic parameter Num has been replaced by Unsigned or
- --  Long_Long_Unsigned, and the default parameters have been removed because
- --  they are supplied explicitly by the calls from within the generic template.
- 
- with System.Unsigned_Types;
- 
- private package Ada.Text_IO.Modular_Aux is
- 
-    package U renames System.Unsigned_Types;
- 
-    procedure Get_Uns
-      (File  : File_Type;
-       Item  : out U.Unsigned;
-       Width : Field);
- 
-    procedure Get_LLU
-      (File  : File_Type;
-       Item  : out U.Long_Long_Unsigned;
-       Width : Field);
- 
-    procedure Put_Uns
-      (File  : File_Type;
-       Item  : U.Unsigned;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Put_LLU
-      (File  : File_Type;
-       Item  : U.Long_Long_Unsigned;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Gets_Uns
-      (From : String;
-       Item : out U.Unsigned;
-       Last : out Positive);
- 
-    procedure Gets_LLU
-      (From : String;
-       Item : out U.Long_Long_Unsigned;
-       Last : out Positive);
- 
-    procedure Puts_Uns
-      (To   : out String;
-       Item : U.Unsigned;
-       Base : Number_Base);
- 
-    procedure Puts_LLU
-      (To   : out String;
-       Item : U.Long_Long_Unsigned;
-       Base : Number_Base);
- 
- end Ada.Text_IO.Modular_Aux;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-timoio.adb gcc-11.1.0/gcc/ada/libgnat/a-timoio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-timoio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-timoio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,41 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Ada.Text_IO.Modular_Aux;
! 
! with System.Unsigned_Types; use System.Unsigned_Types;
  
  package body Ada.Text_IO.Modular_IO is
  
!    package Aux renames Ada.Text_IO.Modular_Aux;
  
     ---------
     -- Get --
--- 29,67 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Ada.Text_IO.Integer_Aux;
! with System.Img_BIU; use System.Img_BIU;
! with System.Img_Uns; use System.Img_Uns;
! with System.Img_LLB; use System.Img_LLB;
! with System.Img_LLU; use System.Img_LLU;
! with System.Img_LLW; use System.Img_LLW;
! with System.Img_WIU; use System.Img_WIU;
! with System.Val_Uns; use System.Val_Uns;
! with System.Val_LLU; use System.Val_LLU;
  
  package body Ada.Text_IO.Modular_IO is
  
!    package Aux_Uns is new
!      Ada.Text_IO.Integer_Aux
!        (Unsigned,
!         Scan_Unsigned,
!         Set_Image_Unsigned,
!         Set_Image_Width_Unsigned,
!         Set_Image_Based_Unsigned);
! 
!    package Aux_LLU is new
!      Ada.Text_IO.Integer_Aux
!        (Long_Long_Unsigned,
!         Scan_Long_Long_Unsigned,
!         Set_Image_Long_Long_Unsigned,
!         Set_Image_Width_Long_Long_Unsigned,
!         Set_Image_Based_Long_Long_Unsigned);
! 
!    Need_LLU : constant Boolean := Num'Base'Size > Unsigned'Size;
!    --  Throughout this generic body, we distinguish between the case where type
!    --  Unsigned is acceptable, and where a Long_Long_Unsigned is needed. This
!    --  Boolean is used to test for these cases and since it is a constant, only
!    --  code for the relevant case will be included in the instance.
  
     ---------
     -- Get --
*************** package body Ada.Text_IO.Modular_IO is
*** 46,58 ****
        Item  : out Num;
        Width : Field := 0)
     is
        pragma Unsuppress (Range_Check);
  
     begin
!       if Num'Size > Unsigned'Size then
!          Aux.Get_LLU (File, Long_Long_Unsigned (Item), Width);
        else
!          Aux.Get_Uns (File, Unsigned (Item), Width);
        end if;
  
     exception
--- 72,86 ----
        Item  : out Num;
        Width : Field := 0)
     is
+       --  We depend on a range check to get Data_Error
+ 
        pragma Unsuppress (Range_Check);
  
     begin
!       if Need_LLU then
!          Aux_LLU.Get (File, Long_Long_Unsigned (Item), Width);
        else
!          Aux_Uns.Get (File, Unsigned (Item), Width);
        end if;
  
     exception
*************** package body Ada.Text_IO.Modular_IO is
*** 63,79 ****
       (Item  : out Num;
        Width : Field := 0)
     is
-       pragma Unsuppress (Range_Check);
- 
     begin
!       if Num'Size > Unsigned'Size then
!          Aux.Get_LLU (Current_In, Long_Long_Unsigned (Item), Width);
!       else
!          Aux.Get_Uns (Current_In, Unsigned (Item), Width);
!       end if;
! 
!    exception
!       when Constraint_Error => raise Data_Error;
     end Get;
  
     procedure Get
--- 91,98 ----
       (Item  : out Num;
        Width : Field := 0)
     is
     begin
!       Get (Current_In, Item, Width);
     end Get;
  
     procedure Get
*************** package body Ada.Text_IO.Modular_IO is
*** 81,93 ****
        Item : out Num;
        Last : out Positive)
     is
        pragma Unsuppress (Range_Check);
  
     begin
!       if Num'Size > Unsigned'Size then
!          Aux.Gets_LLU (From, Long_Long_Unsigned (Item), Last);
        else
!          Aux.Gets_Uns (From, Unsigned (Item), Last);
        end if;
  
     exception
--- 100,114 ----
        Item : out Num;
        Last : out Positive)
     is
+       --  We depend on a range check to get Data_Error
+ 
        pragma Unsuppress (Range_Check);
  
     begin
!       if Need_LLU then
!          Aux_LLU.Gets (From, Long_Long_Unsigned (Item), Last);
        else
!          Aux_Uns.Gets (From, Unsigned (Item), Last);
        end if;
  
     exception
*************** package body Ada.Text_IO.Modular_IO is
*** 105,114 ****
        Base  : Number_Base := Default_Base)
     is
     begin
!       if Num'Size > Unsigned'Size then
!          Aux.Put_LLU (File, Long_Long_Unsigned (Item), Width, Base);
        else
!          Aux.Put_Uns (File, Unsigned (Item), Width, Base);
        end if;
     end Put;
  
--- 126,135 ----
        Base  : Number_Base := Default_Base)
     is
     begin
!       if Need_LLU then
!          Aux_LLU.Put (File, Long_Long_Unsigned (Item), Width, Base);
        else
!          Aux_Uns.Put (File, Unsigned (Item), Width, Base);
        end if;
     end Put;
  
*************** package body Ada.Text_IO.Modular_IO is
*** 118,128 ****
        Base  : Number_Base := Default_Base)
     is
     begin
!       if Num'Size > Unsigned'Size then
!          Aux.Put_LLU (Current_Out, Long_Long_Unsigned (Item), Width, Base);
!       else
!          Aux.Put_Uns (Current_Out, Unsigned (Item), Width, Base);
!       end if;
     end Put;
  
     procedure Put
--- 139,145 ----
        Base  : Number_Base := Default_Base)
     is
     begin
!       Put (Current_Out, Item, Width, Base);
     end Put;
  
     procedure Put
*************** package body Ada.Text_IO.Modular_IO is
*** 131,140 ****
        Base : Number_Base := Default_Base)
     is
     begin
!       if Num'Size > Unsigned'Size then
!          Aux.Puts_LLU (To, Long_Long_Unsigned (Item), Base);
        else
!          Aux.Puts_Uns (To, Unsigned (Item), Base);
        end if;
     end Put;
  
--- 148,157 ----
        Base : Number_Base := Default_Base)
     is
     begin
!       if Need_LLU then
!          Aux_LLU.Puts (To, Long_Long_Unsigned (Item), Base);
        else
!          Aux_Uns.Puts (To, Unsigned (Item), Base);
        end if;
     end Put;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-timoio.ads gcc-11.1.0/gcc/ada/libgnat/a-timoio.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-timoio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-timoio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1993-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1993-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-timoio__128.adb gcc-11.1.0/gcc/ada/libgnat/a-timoio__128.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-timoio__128.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-timoio__128.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,180 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --               A D A . T E X T _ I O . M O D U L A R _ I O                --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Text_IO.Integer_Aux;
+ with System.Img_BIU;  use System.Img_BIU;
+ with System.Img_Uns;  use System.Img_Uns;
+ with System.Img_LLB;  use System.Img_LLB;
+ with System.Img_LLU;  use System.Img_LLU;
+ with System.Img_LLW;  use System.Img_LLW;
+ with System.Img_LLLB; use System.Img_LLLB;
+ with System.Img_LLLU; use System.Img_LLLU;
+ with System.Img_LLLW; use System.Img_LLLW;
+ with System.Img_WIU;  use System.Img_WIU;
+ with System.Val_Uns;  use System.Val_Uns;
+ with System.Val_LLU;  use System.Val_LLU;
+ with System.Val_LLLU; use System.Val_LLLU;
+ 
+ package body Ada.Text_IO.Modular_IO is
+ 
+    package Aux_Uns is new
+      Ada.Text_IO.Integer_Aux
+        (Unsigned,
+         Scan_Unsigned,
+         Set_Image_Unsigned,
+         Set_Image_Width_Unsigned,
+         Set_Image_Based_Unsigned);
+ 
+    package Aux_LLU is new
+      Ada.Text_IO.Integer_Aux
+        (Long_Long_Unsigned,
+         Scan_Long_Long_Unsigned,
+         Set_Image_Long_Long_Unsigned,
+         Set_Image_Width_Long_Long_Unsigned,
+         Set_Image_Based_Long_Long_Unsigned);
+ 
+    package Aux_LLLU is new
+      Ada.Text_IO.Integer_Aux
+        (Long_Long_Long_Unsigned,
+         Scan_Long_Long_Long_Unsigned,
+         Set_Image_Long_Long_Long_Unsigned,
+         Set_Image_Width_Long_Long_Long_Unsigned,
+         Set_Image_Based_Long_Long_Long_Unsigned);
+ 
+    Need_LLU  : constant Boolean := Num'Base'Size > Unsigned'Size;
+    Need_LLLU : constant Boolean := Num'Base'Size > Long_Long_Unsigned'Size;
+    --  Throughout this generic body, we distinguish between cases where type
+    --  Unsigned is acceptable, where type Long_Long_Unsigned is acceptable and
+    --  where type Long_Long_Long_Unsigned is needed. These boolean constants
+    --  are used to test for these cases and since they are constant, only code
+    --  for the relevant case will be included in the instance.
+ 
+    ---------
+    -- Get --
+    ---------
+ 
+    procedure Get
+      (File  : File_Type;
+       Item  : out Num;
+       Width : Field := 0)
+    is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+ 
+    begin
+       if Need_LLLU then
+          Aux_LLLU.Get (File, Long_Long_Long_Unsigned (Item), Width);
+       elsif Need_LLU then
+          Aux_LLU.Get (File, Long_Long_Unsigned (Item), Width);
+       else
+          Aux_Uns.Get (File, Unsigned (Item), Width);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    procedure Get
+      (Item  : out Num;
+       Width : Field := 0)
+    is
+    begin
+       Get (Current_In, Item, Width);
+    end Get;
+ 
+    procedure Get
+      (From : String;
+       Item : out Num;
+       Last : out Positive)
+    is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+ 
+    begin
+       if Need_LLLU then
+          Aux_LLLU.Gets (From, Long_Long_Long_Unsigned (Item), Last);
+       elsif Need_LLU then
+          Aux_LLU.Gets (From, Long_Long_Unsigned (Item), Last);
+       else
+          Aux_Uns.Gets (From, Unsigned (Item), Last);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    ---------
+    -- Put --
+    ---------
+ 
+    procedure Put
+      (File  : File_Type;
+       Item  : Num;
+       Width : Field := Default_Width;
+       Base  : Number_Base := Default_Base)
+    is
+    begin
+       if Need_LLLU then
+          Aux_LLLU.Put (File, Long_Long_Long_Unsigned (Item), Width, Base);
+       elsif Need_LLU then
+          Aux_LLU.Put (File, Long_Long_Unsigned (Item), Width, Base);
+       else
+          Aux_Uns.Put (File, Unsigned (Item), Width, Base);
+       end if;
+    end Put;
+ 
+    procedure Put
+      (Item  : Num;
+       Width : Field := Default_Width;
+       Base  : Number_Base := Default_Base)
+    is
+    begin
+       Put (Current_Out, Item, Width, Base);
+    end Put;
+ 
+    procedure Put
+      (To   : out String;
+       Item : Num;
+       Base : Number_Base := Default_Base)
+    is
+    begin
+       if Need_LLLU then
+          Aux_LLLU.Puts (To, Long_Long_Long_Unsigned (Item), Base);
+       elsif Need_LLU then
+          Aux_LLU.Puts (To, Long_Long_Unsigned (Item), Base);
+       else
+          Aux_Uns.Puts (To, Unsigned (Item), Base);
+       end if;
+    end Put;
+ 
+ end Ada.Text_IO.Modular_IO;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tiocst.adb gcc-11.1.0/gcc/ada/libgnat/a-tiocst.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tiocst.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tiocst.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tiocst.ads gcc-11.1.0/gcc/ada/libgnat/a-tiocst.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-tiocst.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tiocst.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tirsfi.adb gcc-11.1.0/gcc/ada/libgnat/a-tirsfi.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-tirsfi.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tirsfi.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2009-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2009-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-tirsfi.ads gcc-11.1.0/gcc/ada/libgnat/a-tirsfi.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-tirsfi.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-tirsfi.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2009-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2009-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-titest.adb gcc-11.1.0/gcc/ada/libgnat/a-titest.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-titest.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-titest.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-undesu.adb gcc-11.1.0/gcc/ada/libgnat/a-undesu.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-undesu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-undesu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wichha.adb gcc-11.1.0/gcc/ada/libgnat/a-wichha.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wichha.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wichha.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Wide_Characters.Handlin
*** 51,56 ****
--- 51,63 ----
        return Is_Letter (Item) or else Is_Digit (Item);
     end Is_Alphanumeric;
  
+    --------------
+    -- Is_Basic --
+    --------------
+ 
+    function Is_Basic (Item : Wide_Character) return Boolean
+      renames Ada.Wide_Characters.Unicode.Is_Basic;
+ 
     ----------------
     -- Is_Control --
     ----------------
*************** package body Ada.Wide_Characters.Handlin
*** 117,122 ****
--- 124,136 ----
     function Is_Mark (Item : Wide_Character) return Boolean
       renames Ada.Wide_Characters.Unicode.Is_Mark;
  
+    -------------
+    -- Is_NFKC --
+    -------------
+ 
+    function Is_NFKC (Item : Wide_Character) return Boolean
+      renames Ada.Wide_Characters.Unicode.Is_NFKC;
+ 
     ---------------------
     -- Is_Other_Format --
     ---------------------
*************** package body Ada.Wide_Characters.Handlin
*** 192,195 ****
--- 206,227 ----
        return Result;
     end To_Upper;
  
+    --------------
+    -- To_Basic --
+    --------------
+ 
+    function To_Basic (Item : Wide_Character) return Wide_Character
+      renames Ada.Wide_Characters.Unicode.To_Basic;
+ 
+    function To_Basic (Item : Wide_String) return Wide_String is
+       Result : Wide_String (Item'Range);
+ 
+    begin
+       for J in Result'Range loop
+          Result (J) := To_Basic (Item (J));
+       end loop;
+ 
+       return Result;
+    end To_Basic;
+ 
  end Ada.Wide_Characters.Handling;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wichha.ads gcc-11.1.0/gcc/ada/libgnat/a-wichha.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-wichha.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wichha.ads	Tue Apr 27 10:00:12 2021
*************** package Ada.Wide_Characters.Handling is
*** 43,48 ****
--- 43,54 ----
     --  Returns True if the Wide_Character designated by Item is categorized as
     --  letter_uppercase, otherwise returns False.
  
+    function Is_Basic (Item : Wide_Character) return Boolean;
+    pragma Inline (Is_Basic);
+    --  Returns True if the Wide_Character designated by Item has no
+    --  Decomposition Mapping in the code charts of ISO/IEC 10646:2017,
+    --  otherwise returns False.
+ 
     function Is_Digit (Item : Wide_Character) return Boolean;
     pragma Inline (Is_Digit);
     --  Returns True if the Wide_Character designated by Item is categorized as
*************** package Ada.Wide_Characters.Handling is
*** 95,100 ****
--- 101,112 ----
     --  Returns True if the Wide_Character designated by Item is categorized as
     --  separator_space, otherwise returns False.
  
+    function Is_NFKC (Item : Wide_Character) return Boolean;
+    pragma Inline (Is_NFKC);
+    --  Returns True if the Wide_Character designated by Item could be present
+    --  in a string normalized to Normalization Form KC (as defined by Clause
+    --  21 of ISO/IEC 10646:2017), otherwise returns False.
+ 
     function Is_Graphic (Item : Wide_Character) return Boolean;
     pragma Inline (Is_Graphic);
     --  Returns True if the Wide_Character designated by Item is categorized as
*************** package Ada.Wide_Characters.Handling is
*** 124,127 ****
--- 136,151 ----
     --  by Item. The result is the null Wide_String if the value of the formal
     --  parameter is the null Wide_String.
  
+    function To_Basic (Item : Wide_Character) return Wide_Character;
+    pragma Inline (To_Basic);
+    --  Returns the Wide_Character whose code point is given by the first value
+    --  of its Decomposition Mapping in the code charts of ISO/IEC 10646:2017 if
+    --  any, returns Item otherwise.
+ 
+    function To_Basic (Item : Wide_String) return Wide_String;
+    --  Returns the result of applying the To_Basic conversion to each
+    --  Wide_Character element of the Wide_String designated by Item. The result
+    --  is the null Wide_String if the value of the formal parameter is the null
+    --  Wide_String. The lower bound of the result Wide_String is 1.
+ 
  end Ada.Wide_Characters.Handling;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wichun.adb gcc-11.1.0/gcc/ada/libgnat/a-wichun.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wichun.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wichun.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Wide_Characters.Unicode
*** 43,48 ****
--- 43,57 ----
     end Get_Category;
  
     --------------
+    -- Is_Basic --
+    --------------
+ 
+    function Is_Basic (U : Wide_Character) return Boolean is
+    begin
+       return G.Is_UTF_32_Basic (Wide_Character'Pos (U));
+    end Is_Basic;
+ 
+    --------------
     -- Is_Digit --
     --------------
  
*************** package body Ada.Wide_Characters.Unicode
*** 107,112 ****
--- 116,130 ----
        return G.Is_UTF_32_Non_Graphic (G.Category (C));
     end Is_Non_Graphic;
  
+    -------------
+    -- Is_NFKC --
+    -------------
+ 
+    function Is_NFKC (U : Wide_Character) return Boolean is
+    begin
+       return G.Is_UTF_32_NFKC (Wide_Character'Pos (U));
+    end Is_NFKC;
+ 
     --------------
     -- Is_Other --
     --------------
*************** package body Ada.Wide_Characters.Unicode
*** 149,174 ****
        return G.Is_UTF_32_Space (G.Category (C));
     end Is_Space;
  
     -------------------
     -- To_Lower_Case --
     -------------------
  
!    function To_Lower_Case
!      (U : Wide_Character) return Wide_Character
!    is
     begin
        return
!         Wide_Character'Val
!           (G.UTF_32_To_Lower_Case (Wide_Character'Pos (U)));
     end To_Lower_Case;
  
     -------------------
     -- To_Upper_Case --
     -------------------
  
!    function To_Upper_Case
!      (U : Wide_Character) return Wide_Character
!    is
     begin
        return
          Wide_Character'Val
--- 167,196 ----
        return G.Is_UTF_32_Space (G.Category (C));
     end Is_Space;
  
+    --------------
+    -- To_Basic --
+    --------------
+ 
+    function To_Basic (U : Wide_Character) return Wide_Character is
+    begin
+       return Wide_Character'Val (G.UTF_32_To_Basic (Wide_Character'Pos (U)));
+    end To_Basic;
+ 
     -------------------
     -- To_Lower_Case --
     -------------------
  
!    function To_Lower_Case (U : Wide_Character) return Wide_Character is
     begin
        return
!         Wide_Character'Val (G.UTF_32_To_Lower_Case (Wide_Character'Pos (U)));
     end To_Lower_Case;
  
     -------------------
     -- To_Upper_Case --
     -------------------
  
!    function To_Upper_Case (U : Wide_Character) return Wide_Character is
     begin
        return
          Wide_Character'Val
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wichun.ads gcc-11.1.0/gcc/ada/libgnat/a-wichun.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-wichun.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wichun.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Ada.Wide_Characters.Unicode is
*** 131,137 ****
     pragma Inline (Is_Other);
     --  Returns true iff U is an other format character, which means that it
     --  can be used to extend an identifier, but is ignored for the purposes of
!    --  matching of identiers, or if C is one of the corresponding categories,
     --  which are the following:
     --    Other, Format (Cf)
  
--- 131,137 ----
     pragma Inline (Is_Other);
     --  Returns true iff U is an other format character, which means that it
     --  can be used to extend an identifier, but is ignored for the purposes of
!    --  matching of identifiers, or if C is one of the corresponding categories,
     --  which are the following:
     --    Other, Format (Cf)
  
*************** package Ada.Wide_Characters.Unicode is
*** 150,155 ****
--- 150,161 ----
     --  of the corresponding categories, which are the following:
     --    Separator, Space (Zs)
  
+    function Is_NFKC (U : Wide_Character) return Boolean;
+    pragma Inline (Is_NFKC);
+    --  Returns True if the Wide_Character designated by U could be present
+    --  in a string normalized to Normalization Form KC (as defined by Clause
+    --  21 of ISO/IEC 10646:2017), otherwise returns False.
+ 
     function Is_Non_Graphic (U : Wide_Character) return Boolean;
     function Is_Non_Graphic (C : Category)       return Boolean;
     pragma Inline (Is_Non_Graphic);
*************** package Ada.Wide_Characters.Unicode is
*** 174,179 ****
--- 180,197 ----
     --  in the list of categories above. This means that these characters can
     --  be included in character and string literals.
  
+    function Is_Basic (U : Wide_Character) return Boolean;
+    pragma Inline (Is_Basic);
+    --  Returns True if the Wide_Character designated by Item has no
+    --  Decomposition Mapping in the code charts of ISO/IEC 10646:2017,
+    --  otherwise returns False.
+ 
+    function To_Basic (U : Wide_Character) return Wide_Character;
+    pragma Inline (To_Basic);
+    --  Returns the Wide_Character whose code point is given by the first value
+    --  of its Decomposition Mapping in the code charts of ISO/IEC 10646:2017 if
+    --  any, returns Item otherwise.
+ 
     --  The following function is used to fold to upper case, as required by
     --  the Ada 2005 standard rules for identifier case folding. Two
     --  identifiers are equivalent if they are identical after folding all
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-witeio.adb gcc-11.1.0/gcc/ada/libgnat/a-witeio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-witeio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-witeio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-witeio.ads gcc-11.1.0/gcc/ada/libgnat/a-witeio.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-witeio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-witeio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wrstfi.adb gcc-11.1.0/gcc/ada/libgnat/a-wrstfi.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wrstfi.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wrstfi.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2009-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2009-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wrstfi.ads gcc-11.1.0/gcc/ada/libgnat/a-wrstfi.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-wrstfi.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wrstfi.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2009-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2009-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtcoau.adb gcc-11.1.0/gcc/ada/libgnat/a-wtcoau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtcoau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtcoau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,51 ****
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
- with Ada.Wide_Text_IO.Float_Aux;
  
  with System.Img_Real; use System.Img_Real;
  
  package body Ada.Wide_Text_IO.Complex_Aux is
  
-    package Aux renames Ada.Wide_Text_IO.Float_Aux;
- 
     ---------
     -- Get --
     ---------
  
     procedure Get
       (File  : File_Type;
!       ItemR : out Long_Long_Float;
!       ItemI : out Long_Long_Float;
        Width : Field)
     is
        Buf   : String (1 .. Field'Last);
--- 30,48 ----
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
  
  with System.Img_Real; use System.Img_Real;
  
  package body Ada.Wide_Text_IO.Complex_Aux is
  
     ---------
     -- Get --
     ---------
  
     procedure Get
       (File  : File_Type;
!       ItemR : out Num;
!       ItemI : out Num;
        Width : Field)
     is
        Buf   : String (1 .. Field'Last);
*************** package body Ada.Wide_Text_IO.Complex_Au
*** 95,102 ****
  
     procedure Gets
       (From  : String;
!       ItemR : out Long_Long_Float;
!       ItemI : out Long_Long_Float;
        Last  : out Positive)
     is
        Paren : Boolean;
--- 92,99 ----
  
     procedure Gets
       (From  : String;
!       ItemR : out Num;
!       ItemI : out Num;
        Last  : out Positive)
     is
        Paren : Boolean;
*************** package body Ada.Wide_Text_IO.Complex_Au
*** 139,146 ****
  
     procedure Put
       (File  : File_Type;
!       ItemR : Long_Long_Float;
!       ItemI : Long_Long_Float;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field)
--- 136,143 ----
  
     procedure Put
       (File  : File_Type;
!       ItemR : Num;
!       ItemI : Num;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field)
*************** package body Ada.Wide_Text_IO.Complex_Au
*** 159,166 ****
  
     procedure Puts
       (To    : out String;
!       ItemR : Long_Long_Float;
!       ItemI : Long_Long_Float;
        Aft   :  Field;
        Exp   :  Field)
     is
--- 156,163 ----
  
     procedure Puts
       (To    : out String;
!       ItemR : Num;
!       ItemI : Num;
        Aft   :  Field;
        Exp   :  Field)
     is
*************** package body Ada.Wide_Text_IO.Complex_Au
*** 174,182 ****
        --  Both parts are initially converted with a Fore of 0
  
        Rptr := 0;
!       Set_Image_Real (ItemR, R_String, Rptr, 0, Aft, Exp);
        Iptr := 0;
!       Set_Image_Real (ItemI, I_String, Iptr, 0, Aft, Exp);
  
        --  Check room for both parts plus parens plus comma (RM G.1.3(34))
  
--- 171,179 ----
        --  Both parts are initially converted with a Fore of 0
  
        Rptr := 0;
!       Set_Image_Real (Long_Long_Float (ItemR), R_String, Rptr, 0, Aft, Exp);
        Iptr := 0;
!       Set_Image_Real (Long_Long_Float (ItemI), I_String, Iptr, 0, Aft, Exp);
  
        --  Check room for both parts plus parens plus comma (RM G.1.3(34))
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtcoau.ads gcc-11.1.0/gcc/ada/libgnat/a-wtcoau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-wtcoau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtcoau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,68 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains the routines for Ada.Wide_Text_IO.Complex_IO that
! --  are shared among separate instantiations of this package. The routines
! --  in this package are identical semantically to those in Complex_IO itself,
! --  except that the generic parameter Complex has been replaced by separate
! --  real and imaginary values of type Long_Long_Float, and default parameters
! --  have been removed because they are supplied explicitly by the calls from
! --  within the generic template.
  
  package Ada.Wide_Text_IO.Complex_Aux is
  
     procedure Get
       (File  : File_Type;
!       ItemR : out Long_Long_Float;
!       ItemI : out Long_Long_Float;
        Width : Field);
  
-    procedure Gets
-      (From  : String;
-       ItemR : out Long_Long_Float;
-       ItemI : out Long_Long_Float;
-       Last  : out Positive);
- 
     procedure Put
       (File  : File_Type;
!       ItemR : Long_Long_Float;
!       ItemI : Long_Long_Float;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field);
  
     procedure Puts
       (To    : out String;
!       ItemR : Long_Long_Float;
!       ItemI : Long_Long_Float;
        Aft   : Field;
        Exp   : Field);
  
--- 29,75 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains the routines for Ada.Wide_Text_IO.Complex_IO that are
! --  shared among separate instantiations of this package. The routines in this
! --  package are identical semantically to those in Complex_IO, except that the
! --  generic parameter Complex has been replaced by separate real and imaginary
! --  parameters, and default parameters have been removed because they are
! --  supplied explicitly by the calls from within the generic template.
! 
! with Ada.Wide_Text_IO.Float_Aux;
! 
! private generic
! 
!    type Num is digits <>;
! 
!    with package Aux is new Ada.Wide_Text_IO.Float_Aux (Num, <>);
  
  package Ada.Wide_Text_IO.Complex_Aux is
  
     procedure Get
       (File  : File_Type;
!       ItemR : out Num;
!       ItemI : out Num;
        Width : Field);
  
     procedure Put
       (File  : File_Type;
!       ItemR : Num;
!       ItemI : Num;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field);
  
+    procedure Gets
+      (From  : String;
+       ItemR : out Num;
+       ItemI : out Num;
+       Last  : out Positive);
+ 
     procedure Puts
       (To    : out String;
!       ItemR : Num;
!       ItemI : Num;
        Aft   : Field;
        Exp   : Field);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtcoio.adb gcc-11.1.0/gcc/ada/libgnat/a-wtcoio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtcoio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtcoio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,53 ****
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Text_IO.Complex_Aux;
  
! with System.WCh_Con; use System.WCh_Con;
! with System.WCh_WtS; use System.WCh_WtS;
  
! with Ada.Unchecked_Conversion;
  
! package body Ada.Wide_Text_IO.Complex_IO is
  
!    package Aux renames Ada.Wide_Text_IO.Complex_Aux;
  
!    subtype LLF is Long_Long_Float;
!    --  Type used for calls to routines in Aux
  
!    function TFT is new
!      Ada.Unchecked_Conversion (File_Type, Ada.Wide_Text_IO.File_Type);
!    --  This unchecked conversion is to get around a visibility bug in
!    --  GNAT version 2.04w. It should be possible to simply use the
!    --  subtype declared above and do normal checked conversions.
  
     ---------
     -- Get --
--- 30,72 ----
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Text_IO.Complex_Aux;
+ with Ada.Wide_Text_IO.Float_Aux;
+ with System.Val_Flt;  use System.Val_Flt;
+ with System.Val_LFlt; use System.Val_LFlt;
+ with System.Val_LLF;  use System.Val_LLF;
+ with System.WCh_Con;  use System.WCh_Con;
+ with System.WCh_WtS;  use System.WCh_WtS;
  
! package body Ada.Wide_Text_IO.Complex_IO is
  
!    use Complex_Types;
  
!    package Scalar_Float is new
!       Ada.Wide_Text_IO.Float_Aux (Float, Scan_Float);
  
!    package Scalar_Long_Float is new
!       Ada.Wide_Text_IO.Float_Aux (Long_Float, Scan_Long_Float);
  
!    package Scalar_Long_Long_Float is new
!       Ada.Wide_Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
  
!    package Aux_Float is new
!       Ada.Wide_Text_IO.Complex_Aux (Float, Scalar_Float);
! 
!    package Aux_Long_Float is new
!       Ada.Wide_Text_IO.Complex_Aux (Long_Float, Scalar_Long_Float);
! 
!    package Aux_Long_Long_Float is new
!       Ada.Wide_Text_IO.Complex_Aux (Long_Long_Float, Scalar_Long_Long_Float);
! 
!    --  Throughout this generic body, we distinguish between the case where type
!    --  Float is OK, where type Long_Float is OK and where type Long_Long_Float
!    --  is needed. These boolean constants are used to test for this, such that
!    --  only code for the relevant case is included in the instance.
! 
!    OK_Float : constant Boolean := Real'Base'Digits <= Float'Digits;
! 
!    OK_Long_Float : constant Boolean := Real'Base'Digits <= Long_Float'Digits;
  
     ---------
     -- Get --
*************** package body Ada.Wide_Text_IO.Complex_IO
*** 62,68 ****
        Imag_Item : Real'Base;
  
     begin
!       Aux.Get (TFT (File), LLF (Real_Item), LLF (Imag_Item), Width);
        Item := (Real_Item, Imag_Item);
  
     exception
--- 81,97 ----
        Imag_Item : Real'Base;
  
     begin
!       if OK_Float then
!          Aux_Float.Get (File, Float (Real_Item), Float (Imag_Item), Width);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Get
!            (File, Long_Float (Real_Item), Long_Float (Imag_Item), Width);
!       else
!          Aux_Long_Long_Float.Get
!            (File, Long_Long_Float (Real_Item), Long_Long_Float (Imag_Item),
!             Width);
!       end if;
! 
        Item := (Real_Item, Imag_Item);
  
     exception
*************** package body Ada.Wide_Text_IO.Complex_IO
*** 78,84 ****
        Width : Field := 0)
     is
     begin
!       Get (Current_Input, Item, Width);
     end Get;
  
     ---------
--- 107,113 ----
        Width : Field := 0)
     is
     begin
!       Get (Current_In, Item, Width);
     end Get;
  
     ---------
*************** package body Ada.Wide_Text_IO.Complex_IO
*** 100,106 ****
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       Aux.Gets (S, LLF (Real_Item), LLF (Imag_Item), Last);
        Item := (Real_Item, Imag_Item);
  
     exception
--- 129,145 ----
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       if OK_Float then
!          Aux_Float.Gets (S, Float (Real_Item), Float (Imag_Item), Last);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Gets
!            (S, Long_Float (Real_Item), Long_Float (Imag_Item), Last);
!       else
!          Aux_Long_Long_Float.Gets
!            (S, Long_Long_Float (Real_Item), Long_Long_Float (Imag_Item),
!             Last);
!       end if;
! 
        Item := (Real_Item, Imag_Item);
  
     exception
*************** package body Ada.Wide_Text_IO.Complex_IO
*** 119,125 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       Aux.Put (TFT (File), LLF (Re (Item)), LLF (Im (Item)), Fore, Aft, Exp);
     end Put;
  
     ---------
--- 158,175 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       if OK_Float then
!          Aux_Float.Put
!            (File, Float (Re (Item)), Float (Im (Item)), Fore, Aft, Exp);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Put
!            (File, Long_Float (Re (Item)), Long_Float (Im (Item)), Fore, Aft,
!             Exp);
!       else
!          Aux_Long_Long_Float.Put
!            (File, Long_Long_Float (Re (Item)), Long_Long_Float (Im (Item)),
!             Fore, Aft, Exp);
!       end if;
     end Put;
  
     ---------
*************** package body Ada.Wide_Text_IO.Complex_IO
*** 133,139 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Output, Item, Fore, Aft, Exp);
     end Put;
  
     ---------
--- 183,189 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Out, Item, Fore, Aft, Exp);
     end Put;
  
     ---------
*************** package body Ada.Wide_Text_IO.Complex_IO
*** 149,155 ****
        S : String (To'First .. To'Last);
  
     begin
!       Aux.Puts (S, LLF (Re (Item)), LLF (Im (Item)), Aft, Exp);
  
        for J in S'Range loop
           To (J) := Wide_Character'Val (Character'Pos (S (J)));
--- 199,214 ----
        S : String (To'First .. To'Last);
  
     begin
!       if OK_Float then
!          Aux_Float.Puts (S, Float (Re (Item)), Float (Im (Item)), Aft, Exp);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Puts
!            (S, Long_Float (Re (Item)), Long_Float (Im (Item)), Aft, Exp);
!       else
!          Aux_Long_Long_Float.Puts
!            (S, Long_Long_Float (Re (Item)), Long_Long_Float (Im (Item)),
!             Aft, Exp);
!       end if;
  
        for J in S'Range loop
           To (J) := Wide_Character'Val (Character'Pos (S (J)));
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtcoio.ads gcc-11.1.0/gcc/ada/libgnat/a-wtcoio.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-wtcoio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtcoio.ads	Tue Apr 27 10:00:12 2021
*************** generic
*** 20,61 ****
  
  package Ada.Wide_Text_IO.Complex_IO is
  
-    use Complex_Types;
- 
     Default_Fore : Field := 2;
!    Default_Aft  : Field := Real'Digits - 1;
     Default_Exp  : Field := 3;
  
     procedure Get
       (File  : File_Type;
!       Item  : out Complex;
        Width : Field := 0);
  
     procedure Get
!      (Item  : out Complex;
        Width : Field := 0);
  
     procedure Put
       (File : File_Type;
!       Item : Complex;
        Fore : Field := Default_Fore;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp);
  
     procedure Put
!      (Item : Complex;
        Fore : Field := Default_Fore;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp);
  
     procedure Get
       (From : Wide_String;
!       Item : out Complex;
        Last : out Positive);
  
     procedure Put
       (To   : out Wide_String;
!       Item : Complex;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp);
  
--- 20,59 ----
  
  package Ada.Wide_Text_IO.Complex_IO is
  
     Default_Fore : Field := 2;
!    Default_Aft  : Field := Complex_Types.Real'Digits - 1;
     Default_Exp  : Field := 3;
  
     procedure Get
       (File  : File_Type;
!       Item  : out Complex_Types.Complex;
        Width : Field := 0);
  
     procedure Get
!      (Item  : out Complex_Types.Complex;
        Width : Field := 0);
  
     procedure Put
       (File : File_Type;
!       Item : Complex_Types.Complex;
        Fore : Field := Default_Fore;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp);
  
     procedure Put
!      (Item : Complex_Types.Complex;
        Fore : Field := Default_Fore;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp);
  
     procedure Get
       (From : Wide_String;
!       Item : out Complex_Types.Complex;
        Last : out Positive);
  
     procedure Put
       (To   : out Wide_String;
!       Item : Complex_Types.Complex;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtcstr.adb gcc-11.1.0/gcc/ada/libgnat/a-wtcstr.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtcstr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtcstr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtcstr.ads gcc-11.1.0/gcc/ada/libgnat/a-wtcstr.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-wtcstr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtcstr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtdeau.adb gcc-11.1.0/gcc/ada/libgnat/a-wtdeau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtdeau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtdeau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,85 ****
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
- with Ada.Wide_Text_IO.Float_Aux;   use Ada.Wide_Text_IO.Float_Aux;
- 
- with System.Img_Dec; use System.Img_Dec;
- with System.Img_LLD; use System.Img_LLD;
- with System.Val_Dec; use System.Val_Dec;
- with System.Val_LLD; use System.Val_LLD;
  
  package body Ada.Wide_Text_IO.Decimal_Aux is
  
!    -------------
!    -- Get_Dec --
!    -------------
! 
!    function Get_Dec
!      (File  : File_Type;
!       Width : Field;
!       Scale : Integer) return Integer
!    is
!       Buf  : String (1 .. Field'Last);
!       Ptr  : aliased Integer;
!       Stop : Integer := 0;
!       Item : Integer;
! 
!    begin
!       if Width /= 0 then
!          Load_Width (File, Width, Buf, Stop);
!          String_Skip (Buf, Ptr);
!       else
!          Load_Real (File, Buf, Stop);
!          Ptr := 1;
!       end if;
! 
!       Item := Scan_Decimal (Buf, Ptr'Access, Stop, Scale);
!       Check_End_Of_Field (Buf, Stop, Ptr, Width);
!       return Item;
!    end Get_Dec;
! 
!    -------------
!    -- Get_LLD --
!    -------------
  
!    function Get_LLD
       (File  : File_Type;
        Width : Field;
!       Scale : Integer) return Long_Long_Integer
     is
        Buf  : String (1 .. Field'Last);
        Ptr  : aliased Integer;
        Stop : Integer := 0;
!       Item : Long_Long_Integer;
  
     begin
        if Width /= 0 then
--- 30,51 ----
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
  
  package body Ada.Wide_Text_IO.Decimal_Aux is
  
!    ---------
!    -- Get --
!    ---------
  
!    function Get
       (File  : File_Type;
        Width : Field;
!       Scale : Integer) return Int
     is
        Buf  : String (1 .. Field'Last);
        Ptr  : aliased Integer;
        Stop : Integer := 0;
!       Item : Int;
  
     begin
        if Width /= 0 then
*************** package body Ada.Wide_Text_IO.Decimal_Au
*** 90,177 ****
           Ptr := 1;
        end if;
  
!       Item := Scan_Long_Long_Decimal (Buf, Ptr'Access, Stop, Scale);
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
        return Item;
!    end Get_LLD;
! 
!    --------------
!    -- Gets_Dec --
!    --------------
! 
!    function Gets_Dec
!      (From  : String;
!       Last  : not null access Positive;
!       Scale : Integer) return Integer
!    is
!       Pos  : aliased Integer;
!       Item : Integer;
! 
!    begin
!       String_Skip (From, Pos);
!       Item := Scan_Decimal (From, Pos'Access, From'Last, Scale);
!       Last.all := Pos - 1;
!       return Item;
! 
!    exception
!       when Constraint_Error =>
!          Last.all := Pos - 1;
!          raise Data_Error;
! 
!    end Gets_Dec;
  
!    --------------
!    -- Gets_LLD --
!    --------------
  
!    function Gets_LLD
       (From  : String;
!       Last  : not null access Positive;
!       Scale : Integer) return Long_Long_Integer
     is
        Pos  : aliased Integer;
!       Item : Long_Long_Integer;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan_Long_Long_Decimal (From, Pos'Access, From'Last, Scale);
!       Last.all := Pos - 1;
        return Item;
  
     exception
        when Constraint_Error =>
!          Last.all := Pos - 1;
           raise Data_Error;
  
!    end Gets_LLD;
! 
!    -------------
!    -- Put_Dec --
!    -------------
! 
!    procedure Put_Dec
!      (File  : File_Type;
!       Item  : Integer;
!       Fore  : Field;
!       Aft   : Field;
!       Exp   : Field;
!       Scale : Integer)
!    is
!       Buf : String (1 .. Field'Last);
!       Ptr : Natural := 0;
! 
!    begin
!       Set_Image_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
!       Put_Item (File, Buf (1 .. Ptr));
!    end Put_Dec;
! 
!    -------------
!    -- Put_LLD --
!    -------------
  
!    procedure Put_LLD
       (File  : File_Type;
!       Item  : Long_Long_Integer;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field;
--- 56,97 ----
           Ptr := 1;
        end if;
  
!       Item := Scan (Buf, Ptr'Access, Stop, Scale);
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
        return Item;
!    end Get;
  
!    ----------
!    -- Gets --
!    ----------
  
!    function Gets
       (From  : String;
!       Last  : out Positive;
!       Scale : Integer) return Int
     is
        Pos  : aliased Integer;
!       Item : Int;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan (From, Pos'Access, From'Last, Scale);
!       Last := Pos - 1;
        return Item;
  
     exception
        when Constraint_Error =>
!          Last := Pos - 1;
           raise Data_Error;
+    end Gets;
  
!    ---------
!    -- Put --
!    ---------
  
!    procedure Put
       (File  : File_Type;
!       Item  : Int;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field;
*************** package body Ada.Wide_Text_IO.Decimal_Au
*** 181,265 ****
        Ptr : Natural := 0;
  
     begin
!       Set_Image_Long_Long_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
        Put_Item (File, Buf (1 .. Ptr));
!    end Put_LLD;
  
!    --------------
!    -- Puts_Dec --
!    --------------
  
!    procedure Puts_Dec
       (To    : out String;
!       Item  : Integer;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer)
     is
!       Buf  : String (1 .. Field'Last);
        Fore : Integer;
        Ptr  : Natural := 0;
  
     begin
!       --  Compute Fore, allowing for Aft digits and the decimal dot
  
!       Fore := To'Length - Field'Max (1, Aft) - 1;
  
!       --  Allow for Exp and two more for E+ or E- if exponent present
  
        if Exp /= 0 then
!          Fore := Fore - 2 - Exp;
        end if;
  
        --  Make sure we have enough room
  
!       if Fore < 1 then
           raise Layout_Error;
        end if;
  
        --  Do the conversion and check length of result
  
!       Set_Image_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
! 
!       if Ptr > To'Length then
!          raise Layout_Error;
!       else
!          To := Buf (1 .. Ptr);
!       end if;
!    end Puts_Dec;
! 
!    --------------
!    -- Puts_LLD --
!    --------------
! 
!    procedure Puts_LLD
!      (To    : out String;
!       Item  : Long_Long_Integer;
!       Aft   : Field;
!       Exp   : Field;
!       Scale : Integer)
!    is
!       Buf  : String (1 .. Field'Last);
!       Fore : Integer;
!       Ptr  : Natural := 0;
! 
!    begin
!       Fore :=
!         (if Exp = 0
!          then To'Length - 1 - Aft
!          else To'Length - 2 - Aft - Exp);
! 
!       if Fore < 1 then
!          raise Layout_Error;
!       end if;
! 
!       Set_Image_Long_Long_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
  
        if Ptr > To'Length then
           raise Layout_Error;
        else
           To := Buf (1 .. Ptr);
        end if;
!    end Puts_LLD;
  
  end Ada.Wide_Text_IO.Decimal_Aux;
--- 101,151 ----
        Ptr : Natural := 0;
  
     begin
!       Set_Image (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
        Put_Item (File, Buf (1 .. Ptr));
!    end Put;
  
!    ----------
!    -- Puts --
!    ----------
  
!    procedure Puts
       (To    : out String;
!       Item  : Int;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer)
     is
!       Buf  : String (1 .. Positive'Max (Field'Last, To'Length));
        Fore : Integer;
        Ptr  : Natural := 0;
  
     begin
!       --  Compute Fore, allowing for the decimal dot and Aft digits
  
!       Fore := To'Length - 1 - Field'Max (1, Aft);
  
!       --  Allow for Exp and one more for E if exponent present
  
        if Exp /= 0 then
!          Fore := Fore - 1 - Field'Max (2, Exp);
        end if;
  
        --  Make sure we have enough room
  
!       if Fore < 1 + Boolean'Pos (Item < 0) then
           raise Layout_Error;
        end if;
  
        --  Do the conversion and check length of result
  
!       Set_Image (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
  
        if Ptr > To'Length then
           raise Layout_Error;
        else
           To := Buf (1 .. Ptr);
        end if;
!    end Puts;
  
  end Ada.Wide_Text_IO.Decimal_Aux;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtdeau.ads gcc-11.1.0/gcc/ada/libgnat/a-wtdeau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-wtdeau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtdeau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,91 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains the routines for Ada.Wide_Text_IO.Decimal_IO
! --  that are shared among separate instantiations of this package. The
! --  routines in the package are identical semantically to those declared
! --  in Wide_Text_IO, except that default values have been supplied by the
! --  generic, and the Num parameter has been replaced by Integer or
! --  Long_Long_Integer, with an additional Scale parameter giving the
! --  value of Num'Scale. In addition the Get routines return the value
! --  rather than store it in an Out parameter.
! 
! private package Ada.Wide_Text_IO.Decimal_Aux is
  
!    function Get_Dec
!      (File  : File_Type;
!       Width : Field;
!       Scale : Integer) return Integer;
  
!    function Get_LLD
!      (File  : File_Type;
!       Width : Field;
!       Scale : Integer) return Long_Long_Integer;
  
!    function Gets_Dec
!      (From  : String;
!       Last  : not null access Positive;
!       Scale : Integer) return Integer;
  
!    function Gets_LLD
!      (From  : String;
!       Last  : not null access Positive;
!       Scale : Integer) return Long_Long_Integer;
  
!    procedure Put_Dec
       (File  : File_Type;
!       Item  : Integer;
!       Fore  : Field;
!       Aft   : Field;
!       Exp   : Field;
!       Scale : Integer);
  
!    procedure Put_LLD
       (File  : File_Type;
!       Item  : Long_Long_Integer;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer);
  
!    procedure Puts_Dec
!      (To    : out String;
!       Item  : Integer;
!       Aft   : Field;
!       Exp   : Field;
!       Scale : Integer);
  
!    procedure Puts_LLD
       (To    : out String;
!       Item  : Long_Long_Integer;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer);
--- 29,82 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains the implementation for Ada.Wide_Text_IO.Decimal_IO.
! --  Routines in this package are identical semantically to those in Decimal_IO,
! --  except that the default parameters have been removed because they are
! --  supplied explicitly by the calls from within these units, and there is an
! --  additional Scale parameter giving the value of Num'Scale. In addition the
! --  Get routines return the value rather than store it in an Out parameter.
  
! private generic
!    type Int is range <>;
  
!    with function Scan
!      (Str   : String;
!       Ptr   : not null access Integer;
!       Max   : Integer;
!       Scale : Integer) return Int;
  
!    with procedure Set_Image
!      (V     : Int;
!       S     : in out String;
!       P     : in out Natural;
!       Scale : Integer;
!       Fore  : Natural;
!       Aft   : Natural;
!       Exp   : Natural);
  
! package Ada.Wide_Text_IO.Decimal_Aux is
  
!    function Get
       (File  : File_Type;
!       Width : Field;
!       Scale : Integer) return Int;
  
!    procedure Put
       (File  : File_Type;
!       Item  : Int;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer);
  
!    function Gets
!      (From  : String;
!       Last  : out Positive;
!       Scale : Integer) return Int;
  
!    procedure Puts
       (To    : out String;
!       Item  : Int;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtdeio.adb gcc-11.1.0/gcc/ada/libgnat/a-wtdeio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtdeio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtdeio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,45 ****
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Text_IO.Decimal_Aux;
! 
  with System.WCh_Con; use System.WCh_Con;
  with System.WCh_WtS; use System.WCh_WtS;
  
  package body Ada.Wide_Text_IO.Decimal_IO is
  
!    subtype TFT is Ada.Wide_Text_IO.File_Type;
!    --  File type required for calls to routines in Aux
  
!    package Aux renames Ada.Wide_Text_IO.Decimal_Aux;
  
     Scale : constant Integer := Num'Scale;
  
--- 30,64 ----
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Text_IO.Decimal_Aux;
! with System.Img_Decimal_32;  use System.Img_Decimal_32;
! with System.Img_Decimal_64;  use System.Img_Decimal_64;
! with System.Val_Decimal_32;  use System.Val_Decimal_32;
! with System.Val_Decimal_64;  use System.Val_Decimal_64;
  with System.WCh_Con; use System.WCh_Con;
  with System.WCh_WtS; use System.WCh_WtS;
  
  package body Ada.Wide_Text_IO.Decimal_IO is
  
!    subtype Int32 is Interfaces.Integer_32;
!    subtype Int64 is Interfaces.Integer_64;
  
!    package Aux32 is new
!      Ada.Wide_Text_IO.Decimal_Aux
!        (Int32,
!         Scan_Decimal32,
!         Set_Image_Decimal32);
! 
!    package Aux64 is new
!      Ada.Wide_Text_IO.Decimal_Aux
!        (Int64,
!         Scan_Decimal64,
!         Set_Image_Decimal64);
! 
!    Need64 : constant Boolean := Num'Size > 32;
!    --  Throughout this generic body, we distinguish between the case where type
!    --  Int32 is acceptable and where type Int64 is needed. This Boolean is used
!    --  to test for these cases and since it is a constant, only code for the
!    --  relevant case will be included in the instance.
  
     Scale : constant Integer := Num'Scale;
  
*************** package body Ada.Wide_Text_IO.Decimal_IO
*** 52,63 ****
        Item  : out Num;
        Width : Field := 0)
     is
     begin
!       if Num'Size > Integer'Size then
!          Item := Num'Fixed_Value (Aux.Get_LLD (TFT (File), Width, Scale));
        else
!          Item := Num'Fixed_Value (Aux.Get_Dec (TFT (File), Width, Scale));
        end if;
     exception
        when Constraint_Error => raise Data_Error;
     end Get;
--- 71,85 ----
        Item  : out Num;
        Width : Field := 0)
     is
+       pragma Unsuppress (Range_Check);
+ 
     begin
!       if Need64 then
!          Item := Num'Fixed_Value (Aux64.Get (File, Width, Scale));
        else
!          Item := Num'Fixed_Value (Aux32.Get (File, Width, Scale));
        end if;
+ 
     exception
        when Constraint_Error => raise Data_Error;
     end Get;
*************** package body Ada.Wide_Text_IO.Decimal_IO
*** 67,73 ****
        Width : Field := 0)
     is
     begin
!       Get (Current_Input, Item, Width);
     end Get;
  
     procedure Get
--- 89,95 ----
        Width : Field := 0)
     is
     begin
!       Get (Current_In, Item, Width);
     end Get;
  
     procedure Get
*************** package body Ada.Wide_Text_IO.Decimal_IO
*** 75,80 ****
--- 97,104 ----
        Item : out Num;
        Last : out Positive)
     is
+       pragma Unsuppress (Range_Check);
+ 
        S : constant String := Wide_String_To_String (From, WCEM_Upper);
        --  String on which we do the actual conversion. Note that the method
        --  used for wide character encoding is irrelevant, since if there is
*************** package body Ada.Wide_Text_IO.Decimal_IO
*** 82,97 ****
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       if Num'Size > Integer'Size then
!          --  Item := Num'Fixed_Value
!          --  should write above, but gets assert error ???
!          Item := Num
!                    (Aux.Gets_LLD (S, Last'Unrestricted_Access, Scale));
        else
!          --  Item := Num'Fixed_Value
!          --  should write above, but gets assert error ???
!          Item := Num
!                    (Aux.Gets_Dec (S, Last'Unrestricted_Access, Scale));
        end if;
  
     exception
--- 106,115 ----
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       if Need64 then
!          Item := Num'Fixed_Value (Aux64.Gets (S, Last, Scale));
        else
!          Item := Num'Fixed_Value (Aux32.Gets (S, Last, Scale));
        end if;
  
     exception
*************** package body Ada.Wide_Text_IO.Decimal_IO
*** 110,122 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       if Num'Size > Integer'Size then
!          Aux.Put_LLD
!            (TFT (File), Long_Long_Integer'Integer_Value (Item),
!             Fore, Aft, Exp, Scale);
        else
!          Aux.Put_Dec
!            (TFT (File), Integer'Integer_Value (Item), Fore, Aft, Exp, Scale);
        end if;
     end Put;
  
--- 128,139 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       if Need64 then
!          Aux64.Put
!            (File, Int64'Integer_Value (Item), Fore, Aft, Exp, Scale);
        else
!          Aux32.Put
!            (File, Int32'Integer_Value (Item), Fore, Aft, Exp, Scale);
        end if;
     end Put;
  
*************** package body Ada.Wide_Text_IO.Decimal_IO
*** 127,133 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Output, Item, Fore, Aft, Exp);
     end Put;
  
     procedure Put
--- 144,150 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Out, Item, Fore, Aft, Exp);
     end Put;
  
     procedure Put
*************** package body Ada.Wide_Text_IO.Decimal_IO
*** 139,150 ****
        S : String (To'First .. To'Last);
  
     begin
!       if Num'Size > Integer'Size then
!          Aux.Puts_LLD
!            (S, Long_Long_Integer'Integer_Value (Item), Aft, Exp, Scale);
! 
        else
!          Aux.Puts_Dec (S, Integer'Integer_Value (Item), Aft, Exp, Scale);
        end if;
  
        for J in S'Range loop
--- 156,165 ----
        S : String (To'First .. To'Last);
  
     begin
!       if Need64 then
!          Aux64.Puts (S, Int64'Integer_Value (Item), Aft, Exp, Scale);
        else
!          Aux32.Puts (S, Int32'Integer_Value (Item), Aft, Exp, Scale);
        end if;
  
        for J in S'Range loop
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtdeio__128.adb gcc-11.1.0/gcc/ada/libgnat/a-wtdeio__128.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtdeio__128.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-wtdeio__128.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,190 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --           A D A . W I D E _ T E X T _ I O . D E C I M A L _ I O          --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Wide_Text_IO.Decimal_Aux;
+ with System.Img_Decimal_32;  use System.Img_Decimal_32;
+ with System.Img_Decimal_64;  use System.Img_Decimal_64;
+ with System.Img_Decimal_128; use System.Img_Decimal_128;
+ with System.Val_Decimal_32;  use System.Val_Decimal_32;
+ with System.Val_Decimal_64;  use System.Val_Decimal_64;
+ with System.Val_Decimal_128; use System.Val_Decimal_128;
+ with System.WCh_Con;  use System.WCh_Con;
+ with System.WCh_WtS;  use System.WCh_WtS;
+ 
+ package body Ada.Wide_Text_IO.Decimal_IO is
+ 
+    subtype Int32 is Interfaces.Integer_32;
+    subtype Int64 is Interfaces.Integer_64;
+    subtype Int128 is Interfaces.Integer_128;
+ 
+    package Aux32 is new
+      Ada.Wide_Text_IO.Decimal_Aux
+        (Int32,
+         Scan_Decimal32,
+         Set_Image_Decimal32);
+ 
+    package Aux64 is new
+      Ada.Wide_Text_IO.Decimal_Aux
+        (Int64,
+         Scan_Decimal64,
+         Set_Image_Decimal64);
+ 
+    package Aux128 is new
+      Ada.Wide_Text_IO.Decimal_Aux
+        (Int128,
+         Scan_Decimal128,
+         Set_Image_Decimal128);
+ 
+    Need64  : constant Boolean := Num'Size > 32;
+    Need128 : constant Boolean := Num'Size > 64;
+    --  Throughout this generic body, we distinguish between the case where type
+    --  Int32 is acceptable, where type Int64 is acceptable and where an Int128
+    --  is needed. These boolean constants are used to test for these cases and
+    --  since it is a constant, only code for the relevant case will be included
+    --  in the instance.
+ 
+    Scale : constant Integer := Num'Scale;
+ 
+    ---------
+    -- Get --
+    ---------
+ 
+    procedure Get
+      (File  : File_Type;
+       Item  : out Num;
+       Width : Field := 0)
+    is
+       pragma Unsuppress (Range_Check);
+ 
+    begin
+       if Need128 then
+          Item := Num'Fixed_Value (Aux128.Get (File, Width, Scale));
+       elsif Need64 then
+          Item := Num'Fixed_Value (Aux64.Get (File, Width, Scale));
+       else
+          Item := Num'Fixed_Value (Aux32.Get (File, Width, Scale));
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    procedure Get
+      (Item  : out Num;
+       Width : Field := 0)
+    is
+    begin
+       Get (Current_In, Item, Width);
+    end Get;
+ 
+    procedure Get
+      (From : Wide_String;
+       Item : out Num;
+       Last : out Positive)
+    is
+       pragma Unsuppress (Range_Check);
+ 
+       S : constant String := Wide_String_To_String (From, WCEM_Upper);
+       --  String on which we do the actual conversion. Note that the method
+       --  used for wide character encoding is irrelevant, since if there is
+       --  a character outside the Standard.Character range then the call to
+       --  Aux.Gets will raise Data_Error in any case.
+ 
+    begin
+       if Need128 then
+          Item := Num'Fixed_Value (Aux128.Gets (S, Last, Scale));
+       elsif Need64 then
+          Item := Num'Fixed_Value (Aux64.Gets (S, Last, Scale));
+       else
+          Item := Num'Fixed_Value (Aux32.Gets (S, Last, Scale));
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    ---------
+    -- Put --
+    ---------
+ 
+    procedure Put
+      (File : File_Type;
+       Item : Num;
+       Fore : Field := Default_Fore;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+    begin
+       if Need128 then
+          Aux128.Put
+            (File, Int128'Integer_Value (Item), Fore, Aft, Exp, Scale);
+       elsif Need64 then
+          Aux64.Put
+            (File, Int64'Integer_Value (Item), Fore, Aft, Exp, Scale);
+       else
+          Aux32.Put
+            (File, Int32'Integer_Value (Item), Fore, Aft, Exp, Scale);
+       end if;
+    end Put;
+ 
+    procedure Put
+      (Item : Num;
+       Fore : Field := Default_Fore;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+    begin
+       Put (Current_Out, Item, Fore, Aft, Exp);
+    end Put;
+ 
+    procedure Put
+      (To   : out Wide_String;
+       Item : Num;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+       S : String (To'First .. To'Last);
+ 
+    begin
+       if Need128 then
+          Aux128.Puts (S, Int128'Integer_Value (Item), Aft, Exp, Scale);
+       elsif Need64 then
+          Aux64.Puts (S, Int64'Integer_Value (Item), Aft, Exp, Scale);
+       else
+          Aux32.Puts (S, Int32'Integer_Value (Item), Aft, Exp, Scale);
+       end if;
+ 
+       for J in S'Range loop
+          To (J) := Wide_Character'Val (Character'Pos (S (J)));
+       end loop;
+    end Put;
+ 
+ end Ada.Wide_Text_IO.Decimal_IO;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtedit.adb gcc-11.1.0/gcc/ada/libgnat/a-wtedit.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtedit.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtedit.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtedit.ads gcc-11.1.0/gcc/ada/libgnat/a-wtedit.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-wtedit.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtedit.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtenau.adb gcc-11.1.0/gcc/ada/libgnat/a-wtenau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtenau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtenau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.WCh_Con;               use S
*** 36,44 ****
  
  package body Ada.Wide_Text_IO.Enumeration_Aux is
  
-    subtype TFT is Ada.Wide_Text_IO.File_Type;
-    --  File type required for calls to routines in Aux
- 
     -----------------------
     -- Local Subprograms --
     -----------------------
--- 36,41 ----
*************** package body Ada.Wide_Text_IO.Enumeratio
*** 69,76 ****
  
     begin
        Buflen := 0;
!       Load_Skip (TFT (File));
!       ch := Nextc (TFT (File));
  
        --  Character literal case. If the initial character is a quote, then
        --  we read as far as we can without backup (see ACVC test CE3905L)
--- 66,73 ----
  
     begin
        Buflen := 0;
!       Load_Skip (File);
!       ch := Nextc (File);
  
        --  Character literal case. If the initial character is a quote, then
        --  we read as far as we can without backup (see ACVC test CE3905L)
*************** package body Ada.Wide_Text_IO.Enumeratio
*** 79,85 ****
           Get (File, WC);
           Store_Char (WC, Buf, Buflen);
  
!          ch := Nextc (TFT (File));
  
           if ch = LM or else ch = EOF then
              return;
--- 76,82 ----
           Get (File, WC);
           Store_Char (WC, Buf, Buflen);
  
!          ch := Nextc (File);
  
           if ch = LM or else ch = EOF then
              return;
*************** package body Ada.Wide_Text_IO.Enumeratio
*** 88,94 ****
           Get (File, WC);
           Store_Char (WC, Buf, Buflen);
  
!          ch := Nextc (TFT (File));
  
           if ch /= Character'Pos (''') then
              return;
--- 85,91 ----
           Get (File, WC);
           Store_Char (WC, Buf, Buflen);
  
!          ch := Nextc (File);
  
           if ch /= Character'Pos (''') then
              return;
*************** package body Ada.Wide_Text_IO.Enumeratio
*** 117,123 ****
              Get (File, WC);
              Store_Char (WC, Buf, Buflen);
  
!             ch := Nextc (TFT (File));
  
              exit when ch = EOF;
  
--- 114,120 ----
              Get (File, WC);
              Store_Char (WC, Buf, Buflen);
  
!             ch := Nextc (File);
  
              exit when ch = EOF;
  
*************** package body Ada.Wide_Text_IO.Enumeratio
*** 155,161 ****
          Integer'Max (Integer (Width), Item'Length);
  
     begin
!       Check_On_One_Line (TFT (File), Actual_Width);
  
        if Set = Lower_Case and then Item (Item'First) /= ''' then
           declare
--- 152,158 ----
          Integer'Max (Integer (Width), Item'Length);
  
     begin
!       Check_On_One_Line (File, Actual_Width);
  
        if Set = Lower_Case and then Item (Item'First) /= ''' then
           declare
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtenau.ads gcc-11.1.0/gcc/ada/libgnat/a-wtenau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-wtenau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtenau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtenio.adb gcc-11.1.0/gcc/ada/libgnat/a-wtenio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtenio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtenio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Wide_Text_IO.Enumeratio
*** 51,57 ****
  
     procedure Get (Item : out Enum) is
     begin
!       Get (Current_Input, Item);
     end Get;
  
     procedure Get
--- 51,57 ----
  
     procedure Get (Item : out Enum) is
     begin
!       Get (Current_In, Item);
     end Get;
  
     procedure Get
*************** package body Ada.Wide_Text_IO.Enumeratio
*** 88,94 ****
        Set   : Type_Set := Default_Setting)
     is
     begin
!       Put (Current_Output, Item, Width, Set);
     end Put;
  
     procedure Put
--- 88,94 ----
        Set   : Type_Set := Default_Setting)
     is
     begin
!       Put (Current_Out, Item, Width, Set);
     end Put;
  
     procedure Put
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtfiau.adb gcc-11.1.0/gcc/ada/libgnat/a-wtfiau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtfiau.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-wtfiau.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,159 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --             A D A . W I D E _ T E X T _ I O . F I X E D _ I O            --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
+ 
+ package body Ada.Wide_Text_IO.Fixed_Aux is
+ 
+    ---------
+    -- Get --
+    ---------
+ 
+    function Get
+      (File  : File_Type;
+       Width : Field;
+       Num   : Int;
+       Den   : Int) return Int
+    is
+       Buf  : String (1 .. Field'Last);
+       Ptr  : aliased Integer;
+       Stop : Integer := 0;
+       Item : Int;
+ 
+    begin
+       if Width /= 0 then
+          Load_Width (File, Width, Buf, Stop);
+          String_Skip (Buf, Ptr);
+       else
+          Load_Real (File, Buf, Stop);
+          Ptr := 1;
+       end if;
+ 
+       Item := Scan (Buf, Ptr'Access, Stop, Num, Den);
+       Check_End_Of_Field (Buf, Stop, Ptr, Width);
+       return Item;
+    end Get;
+ 
+    ----------
+    -- Gets --
+    ----------
+ 
+    function Gets
+      (From : String;
+       Last : out Positive;
+       Num  : Int;
+       Den  : Int) return Int
+    is
+       Pos  : aliased Integer;
+       Item : Int;
+ 
+    begin
+       String_Skip (From, Pos);
+       Item := Scan (From, Pos'Access, From'Last, Num, Den);
+       Last := Pos - 1;
+       return Item;
+ 
+    exception
+       when Constraint_Error =>
+          Last := Pos - 1;
+          raise Data_Error;
+    end Gets;
+ 
+    ---------
+    -- Put --
+    ---------
+ 
+    procedure Put
+      (File : File_Type;
+       Item : Int;
+       Fore : Field;
+       Aft  : Field;
+       Exp  : Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural)
+    is
+       Buf : String (1 .. Field'Last);
+       Ptr : Natural := 0;
+ 
+    begin
+       Set_Image (Item, Buf, Ptr, Num, Den, For0, Aft0, Fore, Aft, Exp);
+       Put_Item (File, Buf (1 .. Ptr));
+    end Put;
+ 
+    ----------
+    -- Puts --
+    ----------
+ 
+    procedure Puts
+      (To   : out String;
+       Item : Int;
+       Aft  : Field;
+       Exp  : Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural)
+    is
+       Buf  : String (1 .. Positive'Max (Field'Last, To'Length));
+       Fore : Integer;
+       Ptr  : Natural := 0;
+ 
+    begin
+       --  Compute Fore, allowing for the decimal dot and Aft digits
+ 
+       Fore := To'Length - 1 - Field'Max (1, Aft);
+ 
+       --  Allow for Exp and one more for E if exponent present
+ 
+       if Exp /= 0 then
+          Fore := Fore - 1 - Field'Max (2, Exp);
+       end if;
+ 
+       --  Make sure we have enough room
+ 
+       if Fore < 1 + Boolean'Pos (Item < 0) then
+          raise Layout_Error;
+       end if;
+ 
+       --  Do the conversion and check length of result
+ 
+       Set_Image (Item, Buf, Ptr, Num, Den, For0, Aft0, Fore, Aft, Exp);
+ 
+       if Ptr > To'Length then
+          raise Layout_Error;
+       else
+          To := Buf (1 .. Ptr);
+       end if;
+    end Puts;
+ 
+ end Ada.Wide_Text_IO.Fixed_Aux;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtfiau.ads gcc-11.1.0/gcc/ada/libgnat/a-wtfiau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-wtfiau.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-wtfiau.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,97 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --             A D A . W I D E _ T E X T _ I O . F I X E D _ I O            --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the implementation for Ada.Wide_Text_IO.Fixed_IO.
+ --  Routines in this package are identical semantically to those in Fixed_IO,
+ --  except that the default parameters have been removed because they are
+ --  supplied explicitly by the calls from within these units, and there are
+ --  additional Num and Den parameters giving the value of Num'Small, as well
+ --  as For0 and Aft0 giving some properties of Num'Small. In addition the Get
+ --  routines return the value rather than store it in an Out parameter.
+ 
+ private generic
+    type Int is range <>;
+ 
+    with function Scan
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer;
+       Num : Int;
+       Den : Int) return Int;
+ 
+    with procedure Set_Image
+      (V    : Int;
+       S    : in out String;
+       P    : in out Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural;
+       Fore : Natural;
+       Aft  : Natural;
+       Exp  : Natural);
+ 
+ package Ada.Wide_Text_IO.Fixed_Aux is
+ 
+    function Get
+      (File  : File_Type;
+       Width : Field;
+       Num   : Int;
+       Den   : Int) return Int;
+ 
+    procedure Put
+      (File : File_Type;
+       Item : Int;
+       Fore : Field;
+       Aft  : Field;
+       Exp  : Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural);
+ 
+    function Gets
+      (From : String;
+       Last : out Positive;
+       Num  : Int;
+       Den  : Int) return Int;
+ 
+    procedure Puts
+      (To   : out String;
+       Item : Int;
+       Aft  : Field;
+       Exp  : Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural);
+ 
+ end Ada.Wide_Text_IO.Fixed_Aux;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtfiio.adb gcc-11.1.0/gcc/ada/libgnat/a-wtfiio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtfiio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtfiio.adb	Tue Apr 27 10:00:12 2021
***************
*** 2,12 ****
  --                                                                          --
  --                         GNAT RUN-TIME COMPONENTS                         --
  --                                                                          --
! --     A D A . T E X T _ I O . W I D E _ T E X T _ I O . F I X E D _ I O    --
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 2,12 ----
  --                                                                          --
  --                         GNAT RUN-TIME COMPONENTS                         --
  --                                                                          --
! --             A D A . W I D E _ T E X T _ I O . F I X E D _ I O            --
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,44 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Text_IO.Float_Aux;
! with System.WCh_Con; use System.WCh_Con;
! with System.WCh_WtS; use System.WCh_WtS;
  
  package body Ada.Wide_Text_IO.Fixed_IO is
  
!    subtype TFT is Ada.Wide_Text_IO.File_Type;
!    --  File type required for calls to routines in Aux
  
!    package Aux renames Ada.Wide_Text_IO.Float_Aux;
  
     ---------
     -- Get --
--- 29,142 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Interfaces;
+ with Ada.Wide_Text_IO.Fixed_Aux;
  with Ada.Wide_Text_IO.Float_Aux;
! with System.Img_Fixed_32; use System.Img_Fixed_32;
! with System.Img_Fixed_64; use System.Img_Fixed_64;
! with System.Val_Fixed_32; use System.Val_Fixed_32;
! with System.Val_Fixed_64; use System.Val_Fixed_64;
! with System.Val_LLF;       use System.Val_LLF;
! with System.WCh_Con;      use System.WCh_Con;
! with System.WCh_WtS;      use System.WCh_WtS;
  
  package body Ada.Wide_Text_IO.Fixed_IO is
  
!    --  Note: we still use the floating-point I/O routines for types whose small
!    --  is not the ratio of two sufficiently small integers. This will result in
!    --  inaccuracies for fixed point types that require more precision than is
!    --  available in Long_Long_Float.
  
!    subtype Int32 is Interfaces.Integer_32; use type Int32;
!    subtype Int64 is Interfaces.Integer_64; use type Int64;
! 
!    package Aux32 is new
!      Ada.Wide_Text_IO.Fixed_Aux (Int32, Scan_Fixed32, Set_Image_Fixed32);
! 
!    package Aux64 is new
!      Ada.Wide_Text_IO.Fixed_Aux (Int64, Scan_Fixed64, Set_Image_Fixed64);
! 
!    package Aux_Long_Long_Float is new
!      Ada.Wide_Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
! 
!    --  Throughout this generic body, we distinguish between the case where type
!    --  Int32 is OK and where type Int64 is OK. These boolean constants are used
!    --  to test for this, such that only code for the relevant case is included
!    --  in the instance; that's why the computation of their value must be fully
!    --  static (although it is not a static expressions in the RM sense).
! 
!    OK_Get_32 : constant Boolean :=
!      Num'Base'Object_Size <= 32
!        and then
!          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
!            or else
!           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**31)
!            or else
!           (Num'Small_Numerator <= 2**27
!             and then Num'Small_Denominator <= 2**27));
!    --  These conditions are derived from the prerequisites of System.Value_F
! 
!    OK_Put_32 : constant Boolean :=
!      Num'Base'Object_Size <= 32
!        and then
!          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
!            or else
!           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**31)
!            or else
!           (Num'Small_Numerator < Num'Small_Denominator
!             and then Num'Small_Denominator <= 2**27)
!            or else
!           (Num'Small_Denominator < Num'Small_Numerator
!             and then Num'Small_Numerator <= 2**25));
!    --  These conditions are derived from the prerequisites of System.Image_F
! 
!    OK_Get_64 : constant Boolean :=
!      Num'Base'Object_Size <= 64
!        and then
!          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
!            or else
!           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**63)
!            or else
!           (Num'Small_Numerator <= 2**59
!             and then Num'Small_Denominator <= 2**59));
!    --  These conditions are derived from the prerequisites of System.Value_F
! 
!    OK_Put_64 : constant Boolean :=
!      Num'Base'Object_Size <= 64
!        and then
!          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
!            or else
!           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**63)
!            or else
!           (Num'Small_Numerator < Num'Small_Denominator
!             and then Num'Small_Denominator <= 2**59)
!            or else
!           (Num'Small_Denominator < Num'Small_Numerator
!             and then Num'Small_Numerator <= 2**53));
!    --  These conditions are derived from the prerequisites of System.Image_F
! 
!    E : constant Natural := 63 - 32 * Boolean'Pos (OK_Put_32);
!    --  T'Size - 1 for the selected Int{32,64}
! 
!    F0 : constant Natural := 0;
!    F1 : constant Natural :=
!           F0 + 18 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F0) >= 1.0E+18);
!    F2 : constant Natural :=
!           F1 +  9 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F1) >= 1.0E+9);
!    F3 : constant Natural :=
!           F2 +  5 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F2) >= 1.0E+5);
!    F4 : constant Natural :=
!           F3 +  3 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F3) >= 1.0E+3);
!    F5 : constant Natural :=
!           F4 +  2 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F4) >= 1.0E+2);
!    F6 : constant Natural :=
!           F5 +  1 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F5) >= 1.0E+1);
!    --  Binary search for the number of digits - 1 before the decimal point of
!    --  the product 2.0**E * Num'Small.
! 
!    For0 : constant Natural := 2 + F6;
!    --  Fore value for the fixed point type whose mantissa is Int{32,64} and
!    --  whose small is Num'Small.
  
     ---------
     -- Get --
*************** package body Ada.Wide_Text_IO.Fixed_IO i
*** 49,56 ****
        Item  : out Num;
        Width : Field := 0)
     is
     begin
!       Aux.Get (TFT (File), Long_Long_Float (Item), Width);
  
     exception
        when Constraint_Error => raise Data_Error;
--- 147,168 ----
        Item  : out Num;
        Width : Field := 0)
     is
+       pragma Unsuppress (Range_Check);
+ 
     begin
!       if OK_Get_32 then
!          Item := Num'Fixed_Value
!                    (Aux32.Get (File, Width,
!                                -Num'Small_Numerator,
!                                -Num'Small_Denominator));
!       elsif OK_Get_64 then
!          Item := Num'Fixed_Value
!                    (Aux64.Get (File, Width,
!                                -Num'Small_Numerator,
!                                -Num'Small_Denominator));
!       else
!          Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
!       end if;
  
     exception
        when Constraint_Error => raise Data_Error;
*************** package body Ada.Wide_Text_IO.Fixed_IO i
*** 61,67 ****
        Width : Field := 0)
     is
     begin
!       Get (Current_Input, Item, Width);
     end Get;
  
     procedure Get
--- 173,179 ----
        Width : Field := 0)
     is
     begin
!       Get (Current_In, Item, Width);
     end Get;
  
     procedure Get
*************** package body Ada.Wide_Text_IO.Fixed_IO i
*** 69,74 ****
--- 181,188 ----
        Item : out Num;
        Last : out Positive)
     is
+       pragma Unsuppress (Range_Check);
+ 
        S : constant String := Wide_String_To_String (From, WCEM_Upper);
        --  String on which we do the actual conversion. Note that the method
        --  used for wide character encoding is irrelevant, since if there is
*************** package body Ada.Wide_Text_IO.Fixed_IO i
*** 76,82 ****
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       Aux.Gets (S, Long_Long_Float (Item), Last);
  
     exception
        when Constraint_Error => raise Data_Error;
--- 190,208 ----
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       if OK_Get_32 then
!          Item := Num'Fixed_Value
!                    (Aux32.Gets (S, Last,
!                                 -Num'Small_Numerator,
!                                 -Num'Small_Denominator));
!       elsif OK_Get_64 then
!          Item := Num'Fixed_Value
!                    (Aux64.Gets (S, Last,
!                                 -Num'Small_Numerator,
!                                 -Num'Small_Denominator));
!       else
!          Aux_Long_Long_Float.Gets (S, Long_Long_Float (Item), Last);
!       end if;
  
     exception
        when Constraint_Error => raise Data_Error;
*************** package body Ada.Wide_Text_IO.Fixed_IO i
*** 94,100 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       Aux.Put (TFT (File), Long_Long_Float (Item), Fore, Aft, Exp);
     end Put;
  
     procedure Put
--- 220,237 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       if OK_Put_32 then
!          Aux32.Put (File, Int32'Integer_Value (Item), Fore, Aft, Exp,
!                     -Num'Small_Numerator, -Num'Small_Denominator,
!                     For0, Num'Aft);
!       elsif OK_Put_64 then
!          Aux64.Put (File, Int64'Integer_Value (Item), Fore, Aft, Exp,
!                     -Num'Small_Numerator, -Num'Small_Denominator,
!                     For0, Num'Aft);
!       else
!          Aux_Long_Long_Float.Put
!            (File, Long_Long_Float (Item), Fore, Aft, Exp);
!       end if;
     end Put;
  
     procedure Put
*************** package body Ada.Wide_Text_IO.Fixed_IO i
*** 104,110 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Output, Item, Fore, Aft, Exp);
     end Put;
  
     procedure Put
--- 241,247 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Out, Item, Fore, Aft, Exp);
     end Put;
  
     procedure Put
*************** package body Ada.Wide_Text_IO.Fixed_IO i
*** 116,122 ****
        S : String (To'First .. To'Last);
  
     begin
!       Aux.Puts (S, Long_Long_Float (Item), Aft, Exp);
  
        for J in S'Range loop
           To (J) := Wide_Character'Val (Character'Pos (S (J)));
--- 253,269 ----
        S : String (To'First .. To'Last);
  
     begin
!       if OK_Put_32 then
!          Aux32.Puts (S, Int32'Integer_Value (Item), Aft, Exp,
!                      -Num'Small_Numerator, -Num'Small_Denominator,
!                      For0, Num'Aft);
!       elsif OK_Put_64 then
!          Aux64.Puts (S, Int64'Integer_Value (Item), Aft, Exp,
!                      -Num'Small_Numerator, -Num'Small_Denominator,
!                      For0, Num'Aft);
!       else
!          Aux_Long_Long_Float.Puts (S, Long_Long_Float (Item), Aft, Exp);
!       end if;
  
        for J in S'Range loop
           To (J) := Wide_Character'Val (Character'Pos (S (J)));
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtfiio__128.adb gcc-11.1.0/gcc/ada/libgnat/a-wtfiio__128.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtfiio__128.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-wtfiio__128.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,326 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --             A D A . W I D E _ T E X T _ I O . F I X E D _ I O            --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Interfaces;
+ with Ada.Wide_Text_IO.Fixed_Aux;
+ with Ada.Wide_Text_IO.Float_Aux;
+ with System.Img_Fixed_32;  use System.Img_Fixed_32;
+ with System.Img_Fixed_64;  use System.Img_Fixed_64;
+ with System.Img_Fixed_128; use System.Img_Fixed_128;
+ with System.Val_Fixed_32;  use System.Val_Fixed_32;
+ with System.Val_Fixed_64;  use System.Val_Fixed_64;
+ with System.Val_Fixed_128; use System.Val_Fixed_128;
+ with System.Val_LLF;       use System.Val_LLF;
+ with System.WCh_Con;       use System.WCh_Con;
+ with System.WCh_WtS;       use System.WCh_WtS;
+ 
+ package body Ada.Wide_Text_IO.Fixed_IO is
+ 
+    --  Note: we still use the floating-point I/O routines for types whose small
+    --  is not the ratio of two sufficiently small integers. This will result in
+    --  inaccuracies for fixed point types that require more precision than is
+    --  available in Long_Long_Float.
+ 
+    subtype Int32  is Interfaces.Integer_32;  use type Int32;
+    subtype Int64  is Interfaces.Integer_64;  use type Int64;
+    subtype Int128 is Interfaces.Integer_128; use type Int128;
+ 
+    package Aux32 is new
+      Ada.Wide_Text_IO.Fixed_Aux (Int32, Scan_Fixed32, Set_Image_Fixed32);
+ 
+    package Aux64 is new
+      Ada.Wide_Text_IO.Fixed_Aux (Int64, Scan_Fixed64, Set_Image_Fixed64);
+ 
+    package Aux128 is new
+      Ada.Wide_Text_IO.Fixed_Aux (Int128, Scan_Fixed128, Set_Image_Fixed128);
+ 
+    package Aux_Long_Long_Float is new
+      Ada.Wide_Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
+ 
+    --  Throughout this generic body, we distinguish between the case where type
+    --  Int32 is OK, where type Int64 is OK and where type Int128 is OK. These
+    --  boolean constants are used to test for this, such that only code for the
+    --  relevant case is included in the instance; that's why the computation of
+    --  their value must be fully static (although it is not a static expression
+    --  in the RM sense).
+ 
+    OK_Get_32 : constant Boolean :=
+      Num'Base'Object_Size <= 32
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**31)
+            or else
+           (Num'Small_Numerator <= 2**27
+             and then Num'Small_Denominator <= 2**27));
+    --  These conditions are derived from the prerequisites of System.Value_F
+ 
+    OK_Put_32 : constant Boolean :=
+      Num'Base'Object_Size <= 32
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**31)
+            or else
+           (Num'Small_Numerator < Num'Small_Denominator
+             and then Num'Small_Denominator <= 2**27)
+            or else
+           (Num'Small_Denominator < Num'Small_Numerator
+             and then Num'Small_Numerator <= 2**25));
+    --  These conditions are derived from the prerequisites of System.Image_F
+ 
+    OK_Get_64 : constant Boolean :=
+      Num'Base'Object_Size <= 64
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**63)
+            or else
+           (Num'Small_Numerator <= 2**59
+             and then Num'Small_Denominator <= 2**59));
+    --  These conditions are derived from the prerequisites of System.Value_F
+ 
+    OK_Put_64 : constant Boolean :=
+      Num'Base'Object_Size <= 64
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**63)
+            or else
+           (Num'Small_Numerator < Num'Small_Denominator
+             and then Num'Small_Denominator <= 2**59)
+            or else
+           (Num'Small_Denominator < Num'Small_Numerator
+             and then Num'Small_Numerator <= 2**53));
+    --  These conditions are derived from the prerequisites of System.Image_F
+ 
+    OK_Get_128 : constant Boolean :=
+      Num'Base'Object_Size <= 128
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**127)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**127)
+            or else
+           (Num'Small_Numerator <= 2**123
+             and then Num'Small_Denominator <= 2**123));
+    --  These conditions are derived from the prerequisites of System.Value_F
+ 
+    OK_Put_128 : constant Boolean :=
+      Num'Base'Object_Size <= 128
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**127)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**127)
+            or else
+           (Num'Small_Numerator < Num'Small_Denominator
+             and then Num'Small_Denominator <= 2**123)
+            or else
+           (Num'Small_Denominator < Num'Small_Numerator
+             and then Num'Small_Numerator <= 2**122));
+    --  These conditions are derived from the prerequisites of System.Image_F
+ 
+    E : constant Natural :=
+          127 - 64 * Boolean'Pos (OK_Put_64) - 32 * Boolean'Pos (OK_Put_32);
+    --  T'Size - 1 for the selected Int{32,64,128}
+ 
+    F0 : constant Natural := 0;
+    F1 : constant Natural :=
+           F0 + 38 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F0) >= 1.0E+38);
+    F2 : constant Natural :=
+           F1 + 19 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F1) >= 1.0E+19);
+    F3 : constant Natural :=
+           F2 +  9 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F2) >= 1.0E+9);
+    F4 : constant Natural :=
+           F3 +  5 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F3) >= 1.0E+5);
+    F5 : constant Natural :=
+           F4 +  3 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F4) >= 1.0E+3);
+    F6 : constant Natural :=
+           F5 +  2 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F5) >= 1.0E+2);
+    F7 : constant Natural :=
+           F6 +  1 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F6) >= 1.0E+1);
+    --  Binary search for the number of digits - 1 before the decimal point of
+    --  the product 2.0**E * Num'Small.
+ 
+    For0 : constant Natural := 2 + F7;
+    --  Fore value for the fixed point type whose mantissa is Int{32,64,128} and
+    --  whose small is Num'Small.
+ 
+    ---------
+    -- Get --
+    ---------
+ 
+    procedure Get
+      (File  : File_Type;
+       Item  : out Num;
+       Width : Field := 0)
+    is
+       pragma Unsuppress (Range_Check);
+ 
+    begin
+       if OK_Get_32 then
+          Item := Num'Fixed_Value
+                    (Aux32.Get (File, Width,
+                                -Num'Small_Numerator,
+                                -Num'Small_Denominator));
+       elsif OK_Get_64 then
+          Item := Num'Fixed_Value
+                    (Aux64.Get (File, Width,
+                                -Num'Small_Numerator,
+                                -Num'Small_Denominator));
+       elsif OK_Get_128 then
+          Item := Num'Fixed_Value
+                    (Aux128.Get (File, Width,
+                                 -Num'Small_Numerator,
+                                 -Num'Small_Denominator));
+       else
+          Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    procedure Get
+      (Item  : out Num;
+       Width : Field := 0)
+    is
+    begin
+       Get (Current_In, Item, Width);
+    end Get;
+ 
+    procedure Get
+      (From : Wide_String;
+       Item : out Num;
+       Last : out Positive)
+    is
+       pragma Unsuppress (Range_Check);
+ 
+       S : constant String := Wide_String_To_String (From, WCEM_Upper);
+       --  String on which we do the actual conversion. Note that the method
+       --  used for wide character encoding is irrelevant, since if there is
+       --  a character outside the Standard.Character range then the call to
+       --  Aux.Gets will raise Data_Error in any case.
+ 
+    begin
+       if OK_Get_32 then
+          Item := Num'Fixed_Value
+                    (Aux32.Gets (S, Last,
+                                 -Num'Small_Numerator,
+                                 -Num'Small_Denominator));
+       elsif OK_Get_64 then
+          Item := Num'Fixed_Value
+                    (Aux64.Gets (S, Last,
+                                 -Num'Small_Numerator,
+                                 -Num'Small_Denominator));
+       elsif OK_Get_128 then
+          Item := Num'Fixed_Value
+                    (Aux128.Gets (S, Last,
+                                  -Num'Small_Numerator,
+                                  -Num'Small_Denominator));
+       else
+          Aux_Long_Long_Float.Gets (S, Long_Long_Float (Item), Last);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    ---------
+    -- Put --
+    ---------
+ 
+    procedure Put
+      (File : File_Type;
+       Item : Num;
+       Fore : Field := Default_Fore;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+    begin
+       if OK_Put_32 then
+          Aux32.Put (File, Int32'Integer_Value (Item), Fore, Aft, Exp,
+                     -Num'Small_Numerator, -Num'Small_Denominator,
+                     For0, Num'Aft);
+       elsif OK_Put_64 then
+          Aux64.Put (File, Int64'Integer_Value (Item), Fore, Aft, Exp,
+                     -Num'Small_Numerator, -Num'Small_Denominator,
+                     For0, Num'Aft);
+       elsif OK_Put_128 then
+          Aux128.Put (File, Int128'Integer_Value (Item), Fore, Aft, Exp,
+                      -Num'Small_Numerator, -Num'Small_Denominator,
+                      For0, Num'Aft);
+       else
+          Aux_Long_Long_Float.Put
+            (File, Long_Long_Float (Item), Fore, Aft, Exp);
+       end if;
+    end Put;
+ 
+    procedure Put
+      (Item : Num;
+       Fore : Field := Default_Fore;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+    begin
+       Put (Current_Out, Item, Fore, Aft, Exp);
+    end Put;
+ 
+    procedure Put
+      (To   : out Wide_String;
+       Item : Num;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+       S : String (To'First .. To'Last);
+ 
+    begin
+       if OK_Put_32 then
+          Aux32.Puts (S, Int32'Integer_Value (Item), Aft, Exp,
+                      -Num'Small_Numerator, -Num'Small_Denominator,
+                      For0, Num'Aft);
+       elsif OK_Put_64 then
+          Aux64.Puts (S, Int64'Integer_Value (Item), Aft, Exp,
+                      -Num'Small_Numerator, -Num'Small_Denominator,
+                      For0, Num'Aft);
+       elsif OK_Put_128 then
+          Aux128.Puts (S, Int128'Integer_Value (Item), Aft, Exp,
+                       -Num'Small_Numerator, -Num'Small_Denominator,
+                       For0, Num'Aft);
+       else
+          Aux_Long_Long_Float.Puts (S, Long_Long_Float (Item), Aft, Exp);
+       end if;
+ 
+       for J in S'Range loop
+          To (J) := Wide_Character'Val (Character'Pos (S (J)));
+       end loop;
+    end Put;
+ 
+ end Ada.Wide_Text_IO.Fixed_IO;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtflau.adb gcc-11.1.0/gcc/ada/libgnat/a-wtflau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtflau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtflau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,38 ****
  
  with Ada.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
  
! with System.Img_Real;  use System.Img_Real;
! with System.Val_Real;  use System.Val_Real;
  
  package body Ada.Wide_Text_IO.Float_Aux is
  
--- 31,37 ----
  
  with Ada.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
  
! with System.Img_Real; use System.Img_Real;
  
  package body Ada.Wide_Text_IO.Float_Aux is
  
*************** package body Ada.Wide_Text_IO.Float_Aux
*** 42,53 ****
  
     procedure Get
       (File  : File_Type;
!       Item  : out Long_Long_Float;
        Width : Field)
     is
        Buf  : String (1 .. Field'Last);
        Stop : Integer := 0;
!       Ptr  : aliased Integer := 1;
  
     begin
        if Width /= 0 then
--- 41,52 ----
  
     procedure Get
       (File  : File_Type;
!       Item  : out Num;
        Width : Field)
     is
        Buf  : String (1 .. Field'Last);
        Stop : Integer := 0;
!       Ptr  : aliased Integer;
  
     begin
        if Width /= 0 then
*************** package body Ada.Wide_Text_IO.Float_Aux
*** 55,64 ****
           String_Skip (Buf, Ptr);
        else
           Load_Real (File, Buf, Stop);
        end if;
  
!       Item := Scan_Real (Buf, Ptr'Access, Stop);
! 
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
     end Get;
  
--- 54,63 ----
           String_Skip (Buf, Ptr);
        else
           Load_Real (File, Buf, Stop);
+          Ptr := 1;
        end if;
  
!       Item := Scan (Buf, Ptr'Access, Stop);
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
     end Get;
  
*************** package body Ada.Wide_Text_IO.Float_Aux
*** 68,204 ****
  
     procedure Gets
       (From : String;
!       Item : out Long_Long_Float;
        Last : out Positive)
     is
        Pos : aliased Integer;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan_Real (From, Pos'Access, From'Last);
        Last := Pos - 1;
  
     exception
!       when Constraint_Error =>
!          raise Data_Error;
     end Gets;
  
-    ---------------
-    -- Load_Real --
-    ---------------
- 
-    procedure Load_Real
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural)
-    is
-       Loaded   : Boolean;
- 
-    begin
-       --  Skip initial blanks and load possible sign
- 
-       Load_Skip (File);
-       Load (File, Buf, Ptr, '+', '-');
- 
-       --  Case of .nnnn
- 
-       Load (File, Buf, Ptr, '.', Loaded);
- 
-       if Loaded then
-          Load_Digits (File, Buf, Ptr, Loaded);
- 
-          --  Hopeless junk if no digits loaded
- 
-          if not Loaded then
-             return;
-          end if;
- 
-       --  Otherwise must have digits to start
- 
-       else
-          Load_Digits (File, Buf, Ptr, Loaded);
- 
-          --  Hopeless junk if no digits loaded
- 
-          if not Loaded then
-             return;
-          end if;
- 
-          --  Deal with based case. We recognize either the standard '#' or the
-          --  allowed alternative replacement ':' (see RM J.2(3)).
- 
-          Load (File, Buf, Ptr, '#', ':', Loaded);
- 
-          if Loaded then
- 
-             --  Case of nnn#.xxx#
- 
-             Load (File, Buf, Ptr, '.', Loaded);
- 
-             if Loaded then
-                Load_Extended_Digits (File, Buf, Ptr);
-                Load (File, Buf, Ptr, '#', ':');
- 
-             --  Case of nnn#xxx.[xxx]# or nnn#xxx#
- 
-             else
-                Load_Extended_Digits (File, Buf, Ptr);
-                Load (File, Buf, Ptr, '.', Loaded);
- 
-                if Loaded then
-                   Load_Extended_Digits (File, Buf, Ptr);
-                end if;
- 
-                --  As usual, it seems strange to allow mixed base characters,
-                --  but that is what ACVC tests expect, see CE3804M, case (3).
- 
-                Load (File, Buf, Ptr, '#', ':');
-             end if;
- 
-          --  Case of nnn.[nnn] or nnn
- 
-          else
-             --  Prevent the potential processing of '.' in cases where the
-             --  initial digits have a trailing underscore.
- 
-             if Buf (Ptr) = '_' then
-                return;
-             end if;
- 
-             Load (File, Buf, Ptr, '.', Loaded);
- 
-             if Loaded then
-                Load_Digits (File, Buf, Ptr);
-             end if;
-          end if;
-       end if;
- 
-       --  Deal with exponent
- 
-       Load (File, Buf, Ptr, 'E', 'e', Loaded);
- 
-       if Loaded then
-          Load (File, Buf, Ptr, '+', '-');
-          Load_Digits (File, Buf, Ptr);
-       end if;
-    end Load_Real;
- 
     ---------
     -- Put --
     ---------
  
     procedure Put
       (File : File_Type;
!       Item : Long_Long_Float;
        Fore : Field;
        Aft  : Field;
        Exp  : Field)
     is
!       Buf : String (1 .. Field'Last);
        Ptr : Natural := 0;
  
     begin
!       Set_Image_Real (Item, Buf, Ptr, Fore, Aft, Exp);
        Put_Item (File, Buf (1 .. Ptr));
     end Put;
  
--- 67,102 ----
  
     procedure Gets
       (From : String;
!       Item : out Num;
        Last : out Positive)
     is
        Pos : aliased Integer;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan (From, Pos'Access, From'Last);
        Last := Pos - 1;
  
     exception
!       when Constraint_Error => raise Data_Error;
     end Gets;
  
     ---------
     -- Put --
     ---------
  
     procedure Put
       (File : File_Type;
!       Item : Num;
        Fore : Field;
        Aft  : Field;
        Exp  : Field)
     is
!       Buf : String (1 .. Max_Real_Image_Length);
        Ptr : Natural := 0;
  
     begin
!       Set_Image_Real (Long_Long_Float (Item), Buf, Ptr, Fore, Aft, Exp);
        Put_Item (File, Buf (1 .. Ptr));
     end Put;
  
*************** package body Ada.Wide_Text_IO.Float_Aux
*** 208,222 ****
  
     procedure Puts
       (To   : out String;
!       Item : Long_Long_Float;
        Aft  : Field;
        Exp  : Field)
     is
!       Buf : String (1 .. Field'Last);
        Ptr : Natural := 0;
  
     begin
!       Set_Image_Real (Item, Buf, Ptr, Fore => 1, Aft => Aft, Exp => Exp);
  
        if Ptr > To'Length then
           raise Layout_Error;
--- 106,121 ----
  
     procedure Puts
       (To   : out String;
!       Item : Num;
        Aft  : Field;
        Exp  : Field)
     is
!       Buf : String (1 .. Max_Real_Image_Length);
        Ptr : Natural := 0;
  
     begin
!       Set_Image_Real
!         (Long_Long_Float (Item), Buf, Ptr, Fore => 1, Aft => Aft, Exp => Exp);
  
        if Ptr > To'Length then
           raise Layout_Error;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtflau.ads gcc-11.1.0/gcc/ada/libgnat/a-wtflau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-wtflau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtflau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,71 ****
  
  --  This package contains the routines for Ada.Wide_Text_IO.Float_IO that
  --  are shared among separate instantiations of this package. The routines
! --  in this package are identical semantically to those in Float_IO itself,
! --  except that generic parameter Num has been replaced by Long_Long_Float,
! --  and the default parameters have been removed because they are supplied
  --  explicitly by the calls from within the generic template. This package
! --  is also used by Ada.Wide_Text_IO.Fixed_IO, Ada.Wide_Text_IO.Decimal_IO.
  
! private package Ada.Wide_Text_IO.Float_Aux is
  
!    procedure Load_Real
!      (File : File_Type;
!       Buf  : out String;
!       Ptr  : in out Natural);
!    --  This is an auxiliary routine that is used to load a possibly signed
!    --  real literal value from the input file into Buf, starting at Ptr + 1.
  
     procedure Get
       (File  : File_Type;
!       Item  : out Long_Long_Float;
        Width : Field);
  
-    procedure Gets
-      (From : String;
-       Item : out Long_Long_Float;
-       Last : out Positive);
- 
     procedure Put
       (File : File_Type;
!       Item : Long_Long_Float;
        Fore : Field;
        Aft  : Field;
        Exp  : Field);
  
     procedure Puts
       (To   : out String;
!       Item : Long_Long_Float;
        Aft  : Field;
        Exp  : Field);
  
--- 31,72 ----
  
  --  This package contains the routines for Ada.Wide_Text_IO.Float_IO that
  --  are shared among separate instantiations of this package. The routines
! --  in this package are identical semantically to those in Float_IO, except
! --  that the default parameters have been removed because they are supplied
  --  explicitly by the calls from within the generic template. This package
! --  is also used by Ada.Wide_Text_IO.Fixed_IO and Ada.Wide_Text_IO.Decimal_IO.
  
! private generic
  
!    type Num is digits <>;
! 
!    with function Scan
!      (Str : String;
!       Ptr : not null access Integer;
!       Max : Integer) return Num;
! 
! package Ada.Wide_Text_IO.Float_Aux is
  
     procedure Get
       (File  : File_Type;
!       Item  : out Num;
        Width : Field);
  
     procedure Put
       (File : File_Type;
!       Item : Num;
        Fore : Field;
        Aft  : Field;
        Exp  : Field);
  
+    procedure Gets
+      (From : String;
+       Item : out Num;
+       Last : out Positive);
+ 
     procedure Puts
       (To   : out String;
!       Item : Num;
        Aft  : Field;
        Exp  : Field);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtflio.adb gcc-11.1.0/gcc/ada/libgnat/a-wtflio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtflio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtflio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,45 ****
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Text_IO.Float_Aux;
! 
! with System.WCh_Con; use System.WCh_Con;
! with System.WCh_WtS; use System.WCh_WtS;
  
  package body Ada.Wide_Text_IO.Float_IO is
  
!    subtype TFT is Ada.Wide_Text_IO.File_Type;
!    --  File type required for calls to routines in Aux
  
!    package Aux renames Ada.Wide_Text_IO.Float_Aux;
  
     ---------
     -- Get --
--- 30,60 ----
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Text_IO.Float_Aux;
! with System.Val_Flt;  use System.Val_Flt;
! with System.Val_LFlt; use System.Val_LFlt;
! with System.Val_LLF;  use System.Val_LLF;
! with System.WCh_Con;  use System.WCh_Con;
! with System.WCh_WtS;  use System.WCh_WtS;
  
  package body Ada.Wide_Text_IO.Float_IO is
  
!    package Aux_Float is new
!       Ada.Wide_Text_IO.Float_Aux (Float, Scan_Float);
  
!    package Aux_Long_Float is new
!       Ada.Wide_Text_IO.Float_Aux (Long_Float, Scan_Long_Float);
! 
!    package Aux_Long_Long_Float is new
!       Ada.Wide_Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
! 
!    --  Throughout this generic body, we distinguish between the case where type
!    --  Float is OK, where type Long_Float is OK and where type Long_Long_Float
!    --  is needed. These boolean constants are used to test for this, such that
!    --  only code for the relevant case is included in the instance.
! 
!    OK_Float : constant Boolean := Num'Base'Digits <= Float'Digits;
! 
!    OK_Long_Float : constant Boolean := Num'Base'Digits <= Long_Float'Digits;
  
     ---------
     -- Get --
*************** package body Ada.Wide_Text_IO.Float_IO i
*** 50,57 ****
        Item  : out Num;
        Width : Field := 0)
     is
     begin
!       Aux.Get (TFT (File), Long_Long_Float (Item), Width);
  
     exception
        when Constraint_Error => raise Data_Error;
--- 65,89 ----
        Item  : out Num;
        Width : Field := 0)
     is
+       pragma Unsuppress (Range_Check);
+ 
     begin
!       if OK_Float then
!          Aux_Float.Get (File, Float (Item), Width);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Get (File, Long_Float (Item), Width);
!       else
!          Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
!       end if;
! 
!       --  In the case where the type is unconstrained (e.g. Standard'Float),
!       --  the above conversion may result in an infinite value, which is
!       --  normally fine for a conversion, but in this case, we want to treat
!       --  that as a data error.
! 
!       if not Item'Valid then
!          raise Data_Error;
!       end if;
  
     exception
        when Constraint_Error => raise Data_Error;
*************** package body Ada.Wide_Text_IO.Float_IO i
*** 62,68 ****
        Width : Field := 0)
     is
     begin
!       Get (Current_Input, Item, Width);
     end Get;
  
     procedure Get
--- 94,100 ----
        Width : Field := 0)
     is
     begin
!       Get (Current_In, Item, Width);
     end Get;
  
     procedure Get
*************** package body Ada.Wide_Text_IO.Float_IO i
*** 70,75 ****
--- 102,109 ----
        Item : out Num;
        Last : out Positive)
     is
+       pragma Unsuppress (Range_Check);
+ 
        S : constant String := Wide_String_To_String (From, WCEM_Upper);
        --  String on which we do the actual conversion. Note that the method
        --  used for wide character encoding is irrelevant, since if there is
*************** package body Ada.Wide_Text_IO.Float_IO i
*** 77,83 ****
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       Aux.Gets (S, Long_Long_Float (Item), Last);
  
     exception
        when Constraint_Error => raise Data_Error;
--- 111,132 ----
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       if OK_Float then
!          Aux_Float.Gets (S, Float (Item), Last);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Gets (S, Long_Float (Item), Last);
!       else
!          Aux_Long_Long_Float.Gets (S, Long_Long_Float (Item), Last);
!       end if;
! 
!       --  In the case where the type is unconstrained (e.g. Standard'Float),
!       --  the above conversion may result in an infinite value, which is
!       --  normally fine for a conversion, but in this case, we want to treat
!       --  that as a data error.
! 
!       if not Item'Valid then
!          raise Data_Error;
!       end if;
  
     exception
        when Constraint_Error => raise Data_Error;
*************** package body Ada.Wide_Text_IO.Float_IO i
*** 95,101 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       Aux.Put (TFT (File), Long_Long_Float (Item), Fore, Aft, Exp);
     end Put;
  
     procedure Put
--- 144,157 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       if OK_Float then
!          Aux_Float.Put (File, Float (Item), Fore, Aft, Exp);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Put (File, Long_Float (Item), Fore, Aft, Exp);
!       else
!          Aux_Long_Long_Float.Put
!            (File, Long_Long_Float (Item), Fore, Aft, Exp);
!       end if;
     end Put;
  
     procedure Put
*************** package body Ada.Wide_Text_IO.Float_IO i
*** 105,111 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Output, Item, Fore, Aft, Exp);
     end Put;
  
     procedure Put
--- 161,167 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Out, Item, Fore, Aft, Exp);
     end Put;
  
     procedure Put
*************** package body Ada.Wide_Text_IO.Float_IO i
*** 117,123 ****
        S : String (To'First .. To'Last);
  
     begin
!       Aux.Puts (S, Long_Long_Float (Item), Aft, Exp);
  
        for J in S'Range loop
           To (J) := Wide_Character'Val (Character'Pos (S (J)));
--- 173,185 ----
        S : String (To'First .. To'Last);
  
     begin
!       if OK_Float then
!          Aux_Float.Puts (S, Float (Item), Aft, Exp);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Puts (S, Long_Float (Item), Aft, Exp);
!       else
!          Aux_Long_Long_Float.Puts (S, Long_Long_Float (Item), Aft, Exp);
!       end if;
  
        for J in S'Range loop
           To (J) := Wide_Character'Val (Character'Pos (S (J)));
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtgeau.adb gcc-11.1.0/gcc/ada/libgnat/a-wtgeau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtgeau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtgeau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Wide_Text_IO.Generic_Au
*** 348,353 ****
--- 348,507 ----
        Load_Extended_Digits (File, Buf, Ptr, Junk);
     end Load_Extended_Digits;
  
+    ------------------
+    -- Load_Integer --
+    ------------------
+ 
+    procedure Load_Integer
+      (File : File_Type;
+       Buf  : out String;
+       Ptr  : in out Natural)
+    is
+       Hash_Loc : Natural;
+       Loaded   : Boolean;
+ 
+    begin
+       Load_Skip (File);
+ 
+       --  Note: it is a bit strange to allow a minus sign here, but it seems
+       --  consistent with the general behavior expected by the ACVC tests
+       --  which is to scan past junk and then signal data error, see ACVC
+       --  test CE3704F, case (6), which is for signed integer exponents,
+       --  which seems a similar case.
+ 
+       Load (File, Buf, Ptr, '+', '-');
+       Load_Digits (File, Buf, Ptr, Loaded);
+ 
+       if Loaded then
+ 
+          --  Deal with based literal. We recognize either the standard '#' or
+          --  the allowed alternative replacement ':' (see RM J.2(3)).
+ 
+          Load (File, Buf, Ptr, '#', ':', Loaded);
+ 
+          if Loaded then
+             Hash_Loc := Ptr;
+             Load_Extended_Digits (File, Buf, Ptr);
+             Load (File, Buf, Ptr, Buf (Hash_Loc));
+          end if;
+ 
+          --  Deal with exponent
+ 
+          Load (File, Buf, Ptr, 'E', 'e', Loaded);
+ 
+          if Loaded then
+ 
+             --  Note: it is strange to allow a minus sign, since the syntax
+             --  does not, but that is what ACVC test CE3704F, case (6) wants
+             --  for the signed case, and there seems no good reason to treat
+             --  exponents differently for the signed and unsigned cases.
+ 
+             Load (File, Buf, Ptr, '+', '-');
+             Load_Digits (File, Buf, Ptr);
+          end if;
+       end if;
+    end Load_Integer;
+ 
+    ---------------
+    -- Load_Real --
+    ---------------
+ 
+    procedure Load_Real
+      (File : File_Type;
+       Buf  : out String;
+       Ptr  : in out Natural)
+    is
+       Loaded   : Boolean;
+ 
+    begin
+       --  Skip initial blanks and load possible sign
+ 
+       Load_Skip (File);
+       Load (File, Buf, Ptr, '+', '-');
+ 
+       --  Case of .nnnn
+ 
+       Load (File, Buf, Ptr, '.', Loaded);
+ 
+       if Loaded then
+          Load_Digits (File, Buf, Ptr, Loaded);
+ 
+          --  Hopeless junk if no digits loaded
+ 
+          if not Loaded then
+             return;
+          end if;
+ 
+       --  Otherwise must have digits to start
+ 
+       else
+          Load_Digits (File, Buf, Ptr, Loaded);
+ 
+          --  Hopeless junk if no digits loaded
+ 
+          if not Loaded then
+             return;
+          end if;
+ 
+          --  Deal with based case. We recognize either the standard '#' or the
+          --  allowed alternative replacement ':' (see RM J.2(3)).
+ 
+          Load (File, Buf, Ptr, '#', ':', Loaded);
+ 
+          if Loaded then
+ 
+             --  Case of nnn#.xxx#
+ 
+             Load (File, Buf, Ptr, '.', Loaded);
+ 
+             if Loaded then
+                Load_Extended_Digits (File, Buf, Ptr);
+                Load (File, Buf, Ptr, '#', ':');
+ 
+             --  Case of nnn#xxx.[xxx]# or nnn#xxx#
+ 
+             else
+                Load_Extended_Digits (File, Buf, Ptr);
+                Load (File, Buf, Ptr, '.', Loaded);
+ 
+                if Loaded then
+                   Load_Extended_Digits (File, Buf, Ptr);
+                end if;
+ 
+                --  As usual, it seems strange to allow mixed base characters,
+                --  but that is what ACVC tests expect, see CE3804M, case (3).
+ 
+                Load (File, Buf, Ptr, '#', ':');
+             end if;
+ 
+          --  Case of nnn.[nnn] or nnn
+ 
+          else
+             --  Prevent the potential processing of '.' in cases where the
+             --  initial digits have a trailing underscore.
+ 
+             if Buf (Ptr) = '_' then
+                return;
+             end if;
+ 
+             Load (File, Buf, Ptr, '.', Loaded);
+ 
+             if Loaded then
+                Load_Digits (File, Buf, Ptr);
+             end if;
+          end if;
+       end if;
+ 
+       --  Deal with exponent
+ 
+       Load (File, Buf, Ptr, 'E', 'e', Loaded);
+ 
+       if Loaded then
+          Load (File, Buf, Ptr, '+', '-');
+          Load_Digits (File, Buf, Ptr);
+       end if;
+    end Load_Real;
+ 
     ---------------
     -- Load_Skip --
     ---------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtgeau.ads gcc-11.1.0/gcc/ada/libgnat/a-wtgeau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-wtgeau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtgeau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Ada.Wide_Text_IO.Generic_Aux is
*** 149,154 ****
--- 149,166 ----
        Ptr    : in out Integer);
     --  Same as above, but no indication if character is loaded
  
+    procedure Load_Integer
+      (File : File_Type;
+       Buf  : out String;
+       Ptr  : in out Natural);
+    --  Loads a possibly signed integer literal value
+ 
+    procedure Load_Real
+      (File : File_Type;
+       Buf  : out String;
+       Ptr  : in out Natural);
+    --  Loads a possibly signed real literal value
+ 
     procedure Put_Item (File : File_Type; Str : String);
     --  This routine is like Wide_Text_IO.Put, except that it checks for
     --  overflow of bounded lines, as described in (RM A.10.6(8)). It is used
*************** package Ada.Wide_Text_IO.Generic_Aux is
*** 169,175 ****
     procedure String_Skip (Str : String; Ptr : out Integer);
     --  Used in the Get from string procedures to skip leading blanks in the
     --  string. Ptr is set to the index of the first non-blank. If the string
!    --  is all blanks, then the excption End_Error is raised, Note that blank
     --  is defined as a space or horizontal tab (RM A.10.6(5)).
  
     procedure Ungetc (ch : Integer; File : File_Type);
--- 181,187 ----
     procedure String_Skip (Str : String; Ptr : out Integer);
     --  Used in the Get from string procedures to skip leading blanks in the
     --  string. Ptr is set to the index of the first non-blank. If the string
!    --  is all blanks, then the exception End_Error is raised, Note that blank
     --  is defined as a space or horizontal tab (RM A.10.6(5)).
  
     procedure Ungetc (ch : Integer; File : File_Type);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtinau.adb gcc-11.1.0/gcc/ada/libgnat/a-wtinau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtinau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtinau.adb	Tue Apr 27 10:00:12 2021
***************
*** 2,12 ****
  --                                                                          --
  --                         GNAT RUN-TIME COMPONENTS                         --
  --                                                                          --
! --         A D A . W I D E _ T E X T _ I O . I N T E G E R  _ A U X         --
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 2,12 ----
  --                                                                          --
  --                         GNAT RUN-TIME COMPONENTS                         --
  --                                                                          --
! --         A D A . W I D E _ T E X T _ I O . I N T E G E R _ A U X          --
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,91 ****
  
  with Ada.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
  
- with System.Img_BIU; use System.Img_BIU;
- with System.Img_Int; use System.Img_Int;
- with System.Img_LLB; use System.Img_LLB;
- with System.Img_LLI; use System.Img_LLI;
- with System.Img_LLW; use System.Img_LLW;
- with System.Img_WIU; use System.Img_WIU;
- with System.Val_Int; use System.Val_Int;
- with System.Val_LLI; use System.Val_LLI;
- 
  package body Ada.Wide_Text_IO.Integer_Aux is
  
!    -----------------------
!    -- Local Subprograms --
!    -----------------------
! 
!    procedure Load_Integer
!      (File : File_Type;
!       Buf  : out String;
!       Ptr  : in out Natural);
!    --  This is an auxiliary routine that is used to load an possibly signed
!    --  integer literal value from the input file into Buf, starting at Ptr + 1.
!    --  On return, Ptr is set to the last character stored.
! 
!    -------------
!    -- Get_Int --
!    -------------
! 
!    procedure Get_Int
!      (File  : File_Type;
!       Item  : out Integer;
!       Width : Field)
!    is
!       Buf  : String (1 .. Field'Last);
!       Ptr  : aliased Integer := 1;
!       Stop : Integer := 0;
! 
!    begin
!       if Width /= 0 then
!          Load_Width (File, Width, Buf, Stop);
!          String_Skip (Buf, Ptr);
!       else
!          Load_Integer (File, Buf, Stop);
!       end if;
! 
!       Item := Scan_Integer (Buf, Ptr'Access, Stop);
!       Check_End_Of_Field (Buf, Stop, Ptr, Width);
!    end Get_Int;
! 
!    -------------
!    -- Get_LLI --
!    -------------
  
!    procedure Get_LLI
       (File  : File_Type;
!       Item  : out Long_Long_Integer;
        Width : Field)
     is
        Buf  : String (1 .. Field'Last);
--- 31,45 ----
  
  with Ada.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
  
  package body Ada.Wide_Text_IO.Integer_Aux is
  
!    ---------
!    -- Get --
!    ---------
  
!    procedure Get
       (File  : File_Type;
!       Item  : out Num;
        Width : Field)
     is
        Buf  : String (1 .. Field'Last);
*************** package body Ada.Wide_Text_IO.Integer_Au
*** 100,288 ****
           Load_Integer (File, Buf, Stop);
        end if;
  
!       Item := Scan_Long_Long_Integer (Buf, Ptr'Access, Stop);
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
!    end Get_LLI;
! 
!    --------------
!    -- Gets_Int --
!    --------------
! 
!    procedure Gets_Int
!      (From : String;
!       Item : out Integer;
!       Last : out Positive)
!    is
!       Pos : aliased Integer;
! 
!    begin
!       String_Skip (From, Pos);
!       Item := Scan_Integer (From, Pos'Access, From'Last);
!       Last := Pos - 1;
! 
!    exception
!       when Constraint_Error =>
!          raise Data_Error;
!    end Gets_Int;
  
!    --------------
!    -- Gets_LLI --
!    --------------
  
!    procedure Gets_LLI
       (From : String;
!       Item : out Long_Long_Integer;
        Last : out Positive)
     is
        Pos : aliased Integer;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan_Long_Long_Integer (From, Pos'Access, From'Last);
        Last := Pos - 1;
  
     exception
        when Constraint_Error =>
           raise Data_Error;
!    end Gets_LLI;
! 
!    ------------------
!    -- Load_Integer --
!    ------------------
! 
!    procedure Load_Integer
!      (File : File_Type;
!       Buf  : out String;
!       Ptr  : in out Natural)
!    is
!       Hash_Loc : Natural;
!       Loaded   : Boolean;
! 
!    begin
!       Load_Skip (File);
!       Load (File, Buf, Ptr, '+', '-');
! 
!       Load_Digits (File, Buf, Ptr, Loaded);
! 
!       if Loaded then
! 
!          --  Deal with based case. We recognize either the standard '#' or the
!          --  allowed alternative replacement ':' (see RM J.2(3)).
! 
!          Load (File, Buf, Ptr, '#', ':', Loaded);
! 
!          if Loaded then
!             Hash_Loc := Ptr;
!             Load_Extended_Digits (File, Buf, Ptr);
!             Load (File, Buf, Ptr, Buf (Hash_Loc));
!          end if;
! 
!          Load (File, Buf, Ptr, 'E', 'e', Loaded);
! 
!          if Loaded then
! 
!             --  Note: it is strange to allow a minus sign, since the syntax
!             --  does not, but that is what ACVC test CE3704F, case (6) wants.
! 
!             Load (File, Buf, Ptr, '+', '-');
!             Load_Digits (File, Buf, Ptr);
!          end if;
!       end if;
!    end Load_Integer;
! 
!    -------------
!    -- Put_Int --
!    -------------
! 
!    procedure Put_Int
!      (File  : File_Type;
!       Item  : Integer;
!       Width : Field;
!       Base  : Number_Base)
!    is
!       Buf : String (1 .. Field'Last);
!       Ptr : Natural := 0;
! 
!    begin
!       if Base = 10 and then Width = 0 then
!          Set_Image_Integer (Item, Buf, Ptr);
!       elsif Base = 10 then
!          Set_Image_Width_Integer (Item, Width, Buf, Ptr);
!       else
!          Set_Image_Based_Integer (Item, Base, Width, Buf, Ptr);
!       end if;
! 
!       Put_Item (File, Buf (1 .. Ptr));
!    end Put_Int;
  
!    -------------
!    -- Put_LLI --
!    -------------
  
!    procedure Put_LLI
       (File  : File_Type;
!       Item  : Long_Long_Integer;
        Width : Field;
        Base  : Number_Base)
     is
!       Buf : String (1 .. Field'Last);
        Ptr : Natural := 0;
  
     begin
        if Base = 10 and then Width = 0 then
!          Set_Image_Long_Long_Integer (Item, Buf, Ptr);
        elsif Base = 10 then
!          Set_Image_Width_Long_Long_Integer (Item, Width, Buf, Ptr);
        else
!          Set_Image_Based_Long_Long_Integer (Item, Base, Width, Buf, Ptr);
        end if;
  
        Put_Item (File, Buf (1 .. Ptr));
!    end Put_LLI;
! 
!    --------------
!    -- Puts_Int --
!    --------------
! 
!    procedure Puts_Int
!      (To   : out String;
!       Item : Integer;
!       Base : Number_Base)
!    is
!       Buf : String (1 .. Field'Last);
!       Ptr : Natural := 0;
! 
!    begin
!       if Base = 10 then
!          Set_Image_Width_Integer (Item, To'Length, Buf, Ptr);
!       else
!          Set_Image_Based_Integer (Item, Base, To'Length, Buf, Ptr);
!       end if;
! 
!       if Ptr > To'Length then
!          raise Layout_Error;
!       else
!          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
!       end if;
!    end Puts_Int;
  
!    --------------
!    -- Puts_LLI --
!    --------------
  
!    procedure Puts_LLI
       (To   : out String;
!       Item : Long_Long_Integer;
        Base : Number_Base)
     is
!       Buf : String (1 .. Field'Last);
        Ptr : Natural := 0;
  
     begin
        if Base = 10 then
!          Set_Image_Width_Long_Long_Integer (Item, To'Length, Buf, Ptr);
        else
!          Set_Image_Based_Long_Long_Integer (Item, Base, To'Length, Buf, Ptr);
        end if;
  
        if Ptr > To'Length then
--- 54,126 ----
           Load_Integer (File, Buf, Stop);
        end if;
  
!       Item := Scan (Buf, Ptr'Access, Stop);
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
!    end Get;
  
!    ----------
!    -- Gets --
!    ----------
  
!    procedure Gets
       (From : String;
!       Item : out Num;
        Last : out Positive)
     is
        Pos : aliased Integer;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan (From, Pos'Access, From'Last);
        Last := Pos - 1;
  
     exception
        when Constraint_Error =>
           raise Data_Error;
!    end Gets;
  
!    ---------
!    -- Put --
!    ---------
  
!    procedure Put
       (File  : File_Type;
!       Item  : Num;
        Width : Field;
        Base  : Number_Base)
     is
!       Buf : String (1 .. Integer'Max (Field'Last, Width));
        Ptr : Natural := 0;
  
     begin
        if Base = 10 and then Width = 0 then
!          Set_Image (Item, Buf, Ptr);
        elsif Base = 10 then
!          Set_Image_Width (Item, Width, Buf, Ptr);
        else
!          Set_Image_Based (Item, Base, Width, Buf, Ptr);
        end if;
  
        Put_Item (File, Buf (1 .. Ptr));
!    end Put;
  
!    ----------
!    -- Puts --
!    ----------
  
!    procedure Puts
       (To   : out String;
!       Item : Num;
        Base : Number_Base)
     is
!       Buf : String (1 .. Integer'Max (Field'Last, To'Length));
        Ptr : Natural := 0;
  
     begin
        if Base = 10 then
!          Set_Image_Width (Item, To'Length, Buf, Ptr);
        else
!          Set_Image_Based (Item, Base, To'Length, Buf, Ptr);
        end if;
  
        if Ptr > To'Length then
*************** package body Ada.Wide_Text_IO.Integer_Au
*** 290,295 ****
        else
           To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
        end if;
!    end Puts_LLI;
  
  end Ada.Wide_Text_IO.Integer_Aux;
--- 128,133 ----
        else
           To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
        end if;
!    end Puts;
  
  end Ada.Wide_Text_IO.Integer_Aux;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtinau.ads gcc-11.1.0/gcc/ada/libgnat/a-wtinau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-wtinau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtinau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,83 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains the routines for Ada.Wide_Text_IO.Integer_IO that
! --  are shared among separate instantiations of this package. The routines
! --  in this package are identical semantically to those in Integer_IO itself,
! --  except that the generic parameter Num has been replaced by Integer or
! --  Long_Long_Integer, and the default parameters have been removed because
! --  they are supplied explicitly by the calls from within the generic template.
  
! private package Ada.Wide_Text_IO.Integer_Aux is
  
!    procedure Get_Int
!      (File  : File_Type;
!       Item  : out Integer;
!       Width : Field);
  
!    procedure Get_LLI
       (File  : File_Type;
!       Item  : out Long_Long_Integer;
        Width : Field);
  
!    procedure Gets_Int
!      (From : String;
!       Item : out Integer;
!       Last : out Positive);
! 
!    procedure Gets_LLI
       (From : String;
!       Item : out Long_Long_Integer;
        Last : out Positive);
  
!    procedure Put_Int
!      (File  : File_Type;
!       Item  : Integer;
!       Width : Field;
!       Base  : Number_Base);
! 
!    procedure Put_LLI
       (File  : File_Type;
!       Item  : Long_Long_Integer;
        Width : Field;
        Base  : Number_Base);
  
!    procedure Puts_Int
!      (To   : out String;
!       Item : Integer;
!       Base : Number_Base);
! 
!    procedure Puts_LLI
       (To   : out String;
!       Item : Long_Long_Integer;
        Base : Number_Base);
  
  end Ada.Wide_Text_IO.Integer_Aux;
--- 29,73 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains the implementation for Ada.Wide_Text_IO.Integer_IO
! --  and Ada.Wide_Text_IO.Modular_IO. The routines in this package are identical
! --  semantically to those in Integer_IO and Modular_IO themselves, except that
! --  the default parameters have been removed because they are supplied
! --  explicitly by the calls from within these units.
  
! private generic
!    type Num is (<>);
  
!    with function Scan
!      (Str : String; Ptr : not null access Integer; Max : Integer) return Num;
!    with procedure Set_Image
!      (V : Num; S : in out String; P : in out Natural);
!    with procedure Set_Image_Width
!      (V : Num; W : Integer; S : out String; P : in out Natural);
!    with procedure Set_Image_Based
!      (V : Num; B : Natural; W : Integer; S : out String; P : in out Natural);
  
! package Ada.Wide_Text_IO.Integer_Aux is
! 
!    procedure Get
       (File  : File_Type;
!       Item  : out Num;
        Width : Field);
  
!    procedure Gets
       (From : String;
!       Item : out Num;
        Last : out Positive);
  
!    procedure Put
       (File  : File_Type;
!       Item  : Num;
        Width : Field;
        Base  : Number_Base);
  
!    procedure Puts
       (To   : out String;
!       Item : Num;
        Base : Number_Base);
  
  end Ada.Wide_Text_IO.Integer_Aux;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtinio.adb gcc-11.1.0/gcc/ada/libgnat/a-wtinio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtinio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtinio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,51 ****
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Text_IO.Integer_Aux;
  with System.WCh_Con; use System.WCh_Con;
  with System.WCh_WtS; use System.WCh_WtS;
  
  package body Ada.Wide_Text_IO.Integer_IO is
  
     Need_LLI : constant Boolean := Num'Base'Size > Integer'Size;
     --  Throughout this generic body, we distinguish between the case where type
     --  Integer is acceptable, and where a Long_Long_Integer is needed. This
     --  Boolean is used to test for these cases and since it is a constant, only
     --  code for the relevant case will be included in the instance.
  
-    subtype TFT is Ada.Wide_Text_IO.File_Type;
-    --  File type required for calls to routines in Aux
- 
-    package Aux renames Ada.Wide_Text_IO.Integer_Aux;
- 
     ---------
     -- Get --
     ---------
--- 30,70 ----
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Text_IO.Integer_Aux;
+ with System.Img_BIU; use System.Img_BIU;
+ with System.Img_Int; use System.Img_Int;
+ with System.Img_LLB; use System.Img_LLB;
+ with System.Img_LLI; use System.Img_LLI;
+ with System.Img_LLW; use System.Img_LLW;
+ with System.Img_WIU; use System.Img_WIU;
+ with System.Val_Int; use System.Val_Int;
+ with System.Val_LLI; use System.Val_LLI;
  with System.WCh_Con; use System.WCh_Con;
  with System.WCh_WtS; use System.WCh_WtS;
  
  package body Ada.Wide_Text_IO.Integer_IO is
  
+    package Aux_Int is new
+      Ada.Wide_Text_IO.Integer_Aux
+        (Integer,
+         Scan_Integer,
+         Set_Image_Integer,
+         Set_Image_Width_Integer,
+         Set_Image_Based_Integer);
+ 
+    package Aux_LLI is new
+      Ada.Wide_Text_IO.Integer_Aux
+        (Long_Long_Integer,
+         Scan_Long_Long_Integer,
+         Set_Image_Long_Long_Integer,
+         Set_Image_Width_Long_Long_Integer,
+         Set_Image_Based_Long_Long_Integer);
+ 
     Need_LLI : constant Boolean := Num'Base'Size > Integer'Size;
     --  Throughout this generic body, we distinguish between the case where type
     --  Integer is acceptable, and where a Long_Long_Integer is needed. This
     --  Boolean is used to test for these cases and since it is a constant, only
     --  code for the relevant case will be included in the instance.
  
     ---------
     -- Get --
     ---------
*************** package body Ada.Wide_Text_IO.Integer_IO
*** 55,65 ****
        Item  : out Num;
        Width : Field := 0)
     is
     begin
        if Need_LLI then
!          Aux.Get_LLI (TFT (File), Long_Long_Integer (Item), Width);
        else
!          Aux.Get_Int (TFT (File), Integer (Item), Width);
        end if;
  
     exception
--- 74,89 ----
        Item  : out Num;
        Width : Field := 0)
     is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+       pragma Unsuppress (Overflow_Check);
+ 
     begin
        if Need_LLI then
!          Aux_LLI.Get (File, Long_Long_Integer (Item), Width);
        else
!          Aux_Int.Get (File, Integer (Item), Width);
        end if;
  
     exception
*************** package body Ada.Wide_Text_IO.Integer_IO
*** 71,77 ****
        Width : Field := 0)
     is
     begin
!       Get (Current_Input, Item, Width);
     end Get;
  
     procedure Get
--- 95,101 ----
        Width : Field := 0)
     is
     begin
!       Get (Current_In, Item, Width);
     end Get;
  
     procedure Get
*************** package body Ada.Wide_Text_IO.Integer_IO
*** 79,84 ****
--- 103,113 ----
        Item : out Num;
        Last : out Positive)
     is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+       pragma Unsuppress (Overflow_Check);
+ 
        S : constant String := Wide_String_To_String (From, WCEM_Upper);
        --  String on which we do the actual conversion. Note that the method
        --  used for wide character encoding is irrelevant, since if there is
*************** package body Ada.Wide_Text_IO.Integer_IO
*** 87,95 ****
  
     begin
        if Need_LLI then
!          Aux.Gets_LLI (S, Long_Long_Integer (Item), Last);
        else
!          Aux.Gets_Int (S, Integer (Item), Last);
        end if;
  
     exception
--- 116,124 ----
  
     begin
        if Need_LLI then
!          Aux_LLI.Gets (S, Long_Long_Integer (Item), Last);
        else
!          Aux_Int.Gets (S, Integer (Item), Last);
        end if;
  
     exception
*************** package body Ada.Wide_Text_IO.Integer_IO
*** 108,116 ****
     is
     begin
        if Need_LLI then
!          Aux.Put_LLI (TFT (File), Long_Long_Integer (Item), Width, Base);
        else
!          Aux.Put_Int (TFT (File), Integer (Item), Width, Base);
        end if;
     end Put;
  
--- 137,145 ----
     is
     begin
        if Need_LLI then
!          Aux_LLI.Put (File, Long_Long_Integer (Item), Width, Base);
        else
!          Aux_Int.Put (File, Integer (Item), Width, Base);
        end if;
     end Put;
  
*************** package body Ada.Wide_Text_IO.Integer_IO
*** 120,126 ****
        Base  : Number_Base := Default_Base)
     is
     begin
!       Put (Current_Output, Item, Width, Base);
     end Put;
  
     procedure Put
--- 149,155 ----
        Base  : Number_Base := Default_Base)
     is
     begin
!       Put (Current_Out, Item, Width, Base);
     end Put;
  
     procedure Put
*************** package body Ada.Wide_Text_IO.Integer_IO
*** 132,140 ****
  
     begin
        if Need_LLI then
!          Aux.Puts_LLI (S, Long_Long_Integer (Item), Base);
        else
!          Aux.Puts_Int (S, Integer (Item), Base);
        end if;
  
        for J in S'Range loop
--- 161,169 ----
  
     begin
        if Need_LLI then
!          Aux_LLI.Puts (S, Long_Long_Integer (Item), Base);
        else
!          Aux_Int.Puts (S, Integer (Item), Base);
        end if;
  
        for J in S'Range loop
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtinio__128.adb gcc-11.1.0/gcc/ada/libgnat/a-wtinio__128.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtinio__128.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-wtinio__128.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,196 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --           A D A . W I D E _ T E X T _ I O . I N T E G E R _ I O          --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Wide_Text_IO.Integer_Aux;
+ with System.Img_BIU;  use System.Img_BIU;
+ with System.Img_Int;  use System.Img_Int;
+ with System.Img_LLB;  use System.Img_LLB;
+ with System.Img_LLI;  use System.Img_LLI;
+ with System.Img_LLW;  use System.Img_LLW;
+ with System.Img_LLLB; use System.Img_LLLB;
+ with System.Img_LLLI; use System.Img_LLLI;
+ with System.Img_LLLW; use System.Img_LLLW;
+ with System.Img_WIU;  use System.Img_WIU;
+ with System.Val_Int;  use System.Val_Int;
+ with System.Val_LLI;  use System.Val_LLI;
+ with System.Val_LLLI; use System.Val_LLLI;
+ with System.WCh_Con;  use System.WCh_Con;
+ with System.WCh_WtS;  use System.WCh_WtS;
+ 
+ package body Ada.Wide_Text_IO.Integer_IO is
+ 
+    package Aux_Int is new
+      Ada.Wide_Text_IO.Integer_Aux
+        (Integer,
+         Scan_Integer,
+         Set_Image_Integer,
+         Set_Image_Width_Integer,
+         Set_Image_Based_Integer);
+ 
+    package Aux_LLI is new
+      Ada.Wide_Text_IO.Integer_Aux
+        (Long_Long_Integer,
+         Scan_Long_Long_Integer,
+         Set_Image_Long_Long_Integer,
+         Set_Image_Width_Long_Long_Integer,
+         Set_Image_Based_Long_Long_Integer);
+ 
+    package Aux_LLLI is new
+      Ada.Wide_Text_IO.Integer_Aux
+        (Long_Long_Long_Integer,
+         Scan_Long_Long_Long_Integer,
+         Set_Image_Long_Long_Long_Integer,
+         Set_Image_Width_Long_Long_Long_Integer,
+         Set_Image_Based_Long_Long_Long_Integer);
+ 
+    Need_LLI  : constant Boolean := Num'Base'Size > Integer'Size;
+    Need_LLLI : constant Boolean := Num'Base'Size > Long_Long_Integer'Size;
+    --  Throughout this generic body, we distinguish between cases where type
+    --  Integer is acceptable, where type Long_Long_Integer is acceptable and
+    --  where type Long_Long_Long_Integer is needed. These boolean constants
+    --  are used to test for these cases and since they are constant, only code
+    --  for the relevant case will be included in the instance.
+ 
+    ---------
+    -- Get --
+    ---------
+ 
+    procedure Get
+      (File  : File_Type;
+       Item  : out Num;
+       Width : Field := 0)
+    is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+       pragma Unsuppress (Overflow_Check);
+ 
+    begin
+       if Need_LLLI then
+          Aux_LLLI.Get (File, Long_Long_Long_Integer (Item), Width);
+       elsif Need_LLI then
+          Aux_LLI.Get (File, Long_Long_Integer (Item), Width);
+       else
+          Aux_Int.Get (File, Integer (Item), Width);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    procedure Get
+      (Item  : out Num;
+       Width : Field := 0)
+    is
+    begin
+       Get (Current_In, Item, Width);
+    end Get;
+ 
+    procedure Get
+      (From : Wide_String;
+       Item : out Num;
+       Last : out Positive)
+    is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+       pragma Unsuppress (Overflow_Check);
+ 
+       S : constant String := Wide_String_To_String (From, WCEM_Upper);
+       --  String on which we do the actual conversion. Note that the method
+       --  used for wide character encoding is irrelevant, since if there is
+       --  a character outside the Standard.Character range then the call to
+       --  Aux.Gets will raise Data_Error in any case.
+ 
+    begin
+       if Need_LLLI then
+          Aux_LLLI.Gets (S, Long_Long_Long_Integer (Item), Last);
+       elsif Need_LLI then
+          Aux_LLI.Gets (S, Long_Long_Integer (Item), Last);
+       else
+          Aux_Int.Gets (S, Integer (Item), Last);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    ---------
+    -- Put --
+    ---------
+ 
+    procedure Put
+      (File  : File_Type;
+       Item  : Num;
+       Width : Field := Default_Width;
+       Base  : Number_Base := Default_Base)
+    is
+    begin
+       if Need_LLLI then
+          Aux_LLLI.Put (File, Long_Long_Long_Integer (Item), Width, Base);
+       elsif Need_LLI then
+          Aux_LLI.Put (File, Long_Long_Integer (Item), Width, Base);
+       else
+          Aux_Int.Put (File, Integer (Item), Width, Base);
+       end if;
+    end Put;
+ 
+    procedure Put
+      (Item  : Num;
+       Width : Field := Default_Width;
+       Base  : Number_Base := Default_Base)
+    is
+    begin
+       Put (Current_Out, Item, Width, Base);
+    end Put;
+ 
+    procedure Put
+      (To   : out Wide_String;
+       Item : Num;
+       Base : Number_Base := Default_Base)
+    is
+       S : String (To'First .. To'Last);
+ 
+    begin
+       if Need_LLLI then
+          Aux_LLLI.Puts (S, Long_Long_Long_Integer (Item), Base);
+       elsif Need_LLI then
+          Aux_LLI.Puts (S, Long_Long_Integer (Item), Base);
+       else
+          Aux_Int.Puts (S, Integer (Item), Base);
+       end if;
+ 
+       for J in S'Range loop
+          To (J) := Wide_Character'Val (Character'Pos (S (J)));
+       end loop;
+    end Put;
+ 
+ end Ada.Wide_Text_IO.Integer_IO;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtmoau.adb gcc-11.1.0/gcc/ada/libgnat/a-wtmoau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtmoau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtmoau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,305 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . W I D E _ T E X T _ I O . M O D U L A R  _ A U X         --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
- 
- with System.Img_BIU; use System.Img_BIU;
- with System.Img_Uns; use System.Img_Uns;
- with System.Img_LLB; use System.Img_LLB;
- with System.Img_LLU; use System.Img_LLU;
- with System.Img_LLW; use System.Img_LLW;
- with System.Img_WIU; use System.Img_WIU;
- with System.Val_Uns; use System.Val_Uns;
- with System.Val_LLU; use System.Val_LLU;
- 
- package body Ada.Wide_Text_IO.Modular_Aux is
- 
-    use System.Unsigned_Types;
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Load_Modular
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural);
-    --  This is an auxiliary routine that is used to load an possibly signed
-    --  modular literal value from the input file into Buf, starting at Ptr + 1.
-    --  Ptr is left set to the last character stored.
- 
-    -------------
-    -- Get_LLU --
-    -------------
- 
-    procedure Get_LLU
-      (File  : File_Type;
-       Item  : out Long_Long_Unsigned;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Stop : Integer := 0;
-       Ptr  : aliased Integer := 1;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Modular (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Long_Long_Unsigned (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_LLU;
- 
-    -------------
-    -- Get_Uns --
-    -------------
- 
-    procedure Get_Uns
-      (File  : File_Type;
-       Item  : out Unsigned;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Stop : Integer := 0;
-       Ptr  : aliased Integer := 1;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Modular (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Unsigned (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_Uns;
- 
-    --------------
-    -- Gets_LLU --
-    --------------
- 
-    procedure Gets_LLU
-      (From : String;
-       Item : out Long_Long_Unsigned;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Long_Long_Unsigned (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_LLU;
- 
-    --------------
-    -- Gets_Uns --
-    --------------
- 
-    procedure Gets_Uns
-      (From : String;
-       Item : out Unsigned;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Unsigned (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_Uns;
- 
-    ------------------
-    -- Load_Modular --
-    ------------------
- 
-    procedure Load_Modular
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural)
-    is
-       Hash_Loc : Natural;
-       Loaded   : Boolean;
- 
-    begin
-       Load_Skip (File);
- 
-       --  Note: it is a bit strange to allow a minus sign here, but it seems
-       --  consistent with the general behavior expected by the ACVC tests
-       --  which is to scan past junk and then signal data error, see ACVC
-       --  test CE3704F, case (6), which is for signed integer exponents,
-       --  which seems a similar case.
- 
-       Load (File, Buf, Ptr, '+', '-');
-       Load_Digits (File, Buf, Ptr, Loaded);
- 
-       if Loaded then
- 
-          --  Deal with based case. We recognize either the standard '#' or the
-          --  allowed alternative replacement ':' (see RM J.2(3)).
- 
-          Load (File, Buf, Ptr, '#', ':', Loaded);
- 
-          if Loaded then
-             Hash_Loc := Ptr;
-             Load_Extended_Digits (File, Buf, Ptr);
-             Load (File, Buf, Ptr, Buf (Hash_Loc));
-          end if;
- 
-          Load (File, Buf, Ptr, 'E', 'e', Loaded);
- 
-          if Loaded then
- 
-             --  Note: it is strange to allow a minus sign, since the syntax
-             --  does not, but that is what ACVC test CE3704F, case (6) wants
-             --  for the signed case, and there seems no good reason to treat
-             --  exponents differently for the signed and unsigned cases.
- 
-             Load (File, Buf, Ptr, '+', '-');
-             Load_Digits (File, Buf, Ptr);
-          end if;
-       end if;
-    end Load_Modular;
- 
-    -------------
-    -- Put_LLU --
-    -------------
- 
-    procedure Put_LLU
-      (File  : File_Type;
-       Item  : Long_Long_Unsigned;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Long_Long_Unsigned (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Long_Long_Unsigned (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Unsigned (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_LLU;
- 
-    -------------
-    -- Put_Uns --
-    -------------
- 
-    procedure Put_Uns
-      (File  : File_Type;
-       Item  : Unsigned;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Unsigned (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Unsigned (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Unsigned (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_Uns;
- 
-    --------------
-    -- Puts_LLU --
-    --------------
- 
-    procedure Puts_LLU
-      (To   : out String;
-       Item : Long_Long_Unsigned;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Long_Long_Unsigned (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Unsigned (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_LLU;
- 
-    --------------
-    -- Puts_Uns --
-    --------------
- 
-    procedure Puts_Uns
-      (To   : out String;
-       Item : Unsigned;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Unsigned (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Unsigned (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_Uns;
- 
- end Ada.Wide_Text_IO.Modular_Aux;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtmoau.ads gcc-11.1.0/gcc/ada/libgnat/a-wtmoau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-wtmoau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtmoau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,87 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . W I D E _ T E X T _ I O . M O D U L A R _ A U X          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package contains the routines for Ada.Wide_Text_IO.Modular_IO that
- --  are shared among separate instantiations of this package. The routines
- --  in this package are identical semantically to those in Modular_IO itself,
- --  except that the generic parameter Num has been replaced by Unsigned or
- --  Long_Long_Unsigned, and the default parameters have been removed because
- --  they are supplied explicitly by the calls from within the generic template.
- 
- with System.Unsigned_Types;
- 
- private package Ada.Wide_Text_IO.Modular_Aux is
- 
-    package U renames System.Unsigned_Types;
- 
-    procedure Get_Uns
-      (File  : File_Type;
-       Item  : out U.Unsigned;
-       Width : Field);
- 
-    procedure Get_LLU
-      (File  : File_Type;
-       Item  : out U.Long_Long_Unsigned;
-       Width : Field);
- 
-    procedure Gets_Uns
-      (From : String;
-       Item : out U.Unsigned;
-       Last : out Positive);
- 
-    procedure Gets_LLU
-      (From : String;
-       Item : out U.Long_Long_Unsigned;
-       Last : out Positive);
- 
-    procedure Put_Uns
-      (File  : File_Type;
-       Item  : U.Unsigned;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Put_LLU
-      (File  : File_Type;
-       Item  : U.Long_Long_Unsigned;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Puts_Uns
-      (To   : out String;
-       Item : U.Unsigned;
-       Base : Number_Base);
- 
-    procedure Puts_LLU
-      (To   : out String;
-       Item : U.Long_Long_Unsigned;
-       Base : Number_Base);
- 
- end Ada.Wide_Text_IO.Modular_Aux;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtmoio.adb gcc-11.1.0/gcc/ada/libgnat/a-wtmoio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtmoio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtmoio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 1992-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 1992-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,46 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Ada.Wide_Text_IO.Modular_Aux;
! 
! with System.Unsigned_Types; use System.Unsigned_Types;
! with System.WCh_Con;        use System.WCh_Con;
! with System.WCh_WtS;        use System.WCh_WtS;
  
  package body Ada.Wide_Text_IO.Modular_IO is
  
!    subtype TFT is Ada.Wide_Text_IO.File_Type;
!    --  File type required for calls to routines in Aux
  
!    package Aux renames Ada.Wide_Text_IO.Modular_Aux;
  
     ---------
     -- Get --
--- 29,69 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Ada.Wide_Text_IO.Integer_Aux;
! with System.Img_BIU; use System.Img_BIU;
! with System.Img_Uns; use System.Img_Uns;
! with System.Img_LLB; use System.Img_LLB;
! with System.Img_LLU; use System.Img_LLU;
! with System.Img_LLW; use System.Img_LLW;
! with System.Img_WIU; use System.Img_WIU;
! with System.Val_Uns; use System.Val_Uns;
! with System.Val_LLU; use System.Val_LLU;
! with System.WCh_Con; use System.WCh_Con;
! with System.WCh_WtS; use System.WCh_WtS;
  
  package body Ada.Wide_Text_IO.Modular_IO is
  
!    package Aux_Uns is new
!      Ada.Wide_Text_IO.Integer_Aux
!        (Unsigned,
!         Scan_Unsigned,
!         Set_Image_Unsigned,
!         Set_Image_Width_Unsigned,
!         Set_Image_Based_Unsigned);
  
!    package Aux_LLU is new
!      Ada.Wide_Text_IO.Integer_Aux
!        (Long_Long_Unsigned,
!         Scan_Long_Long_Unsigned,
!         Set_Image_Long_Long_Unsigned,
!         Set_Image_Width_Long_Long_Unsigned,
!         Set_Image_Based_Long_Long_Unsigned);
! 
!    Need_LLU : constant Boolean := Num'Base'Size > Unsigned'Size;
!    --  Throughout this generic body, we distinguish between the case where type
!    --  Unsigned is acceptable, and where a Long_Long_Unsigned is needed. This
!    --  Boolean is used to test for these cases and since it is a constant, only
!    --  code for the relevant case will be included in the instance.
  
     ---------
     -- Get --
*************** package body Ada.Wide_Text_IO.Modular_IO
*** 51,61 ****
        Item  : out Num;
        Width : Field := 0)
     is
     begin
!       if Num'Size > Unsigned'Size then
!          Aux.Get_LLU (TFT (File), Long_Long_Unsigned (Item), Width);
        else
!          Aux.Get_Uns (TFT (File), Unsigned (Item), Width);
        end if;
  
     exception
--- 74,88 ----
        Item  : out Num;
        Width : Field := 0)
     is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+ 
     begin
!       if Need_LLU then
!          Aux_LLU.Get (File, Long_Long_Unsigned (Item), Width);
        else
!          Aux_Uns.Get (File, Unsigned (Item), Width);
        end if;
  
     exception
*************** package body Ada.Wide_Text_IO.Modular_IO
*** 67,73 ****
        Width : Field := 0)
     is
     begin
!       Get (Current_Input, Item, Width);
     end Get;
  
     procedure Get
--- 94,100 ----
        Width : Field := 0)
     is
     begin
!       Get (Current_In, Item, Width);
     end Get;
  
     procedure Get
*************** package body Ada.Wide_Text_IO.Modular_IO
*** 75,80 ****
--- 102,111 ----
        Item : out Num;
        Last : out Positive)
     is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+ 
        S : constant String := Wide_String_To_String (From, WCEM_Upper);
        --  String on which we do the actual conversion. Note that the method
        --  used for wide character encoding is irrelevant, since if there is
*************** package body Ada.Wide_Text_IO.Modular_IO
*** 82,91 ****
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       if Num'Size > Unsigned'Size then
!          Aux.Gets_LLU (S, Long_Long_Unsigned (Item), Last);
        else
!          Aux.Gets_Uns (S, Unsigned (Item), Last);
        end if;
  
     exception
--- 113,122 ----
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       if Need_LLU then
!          Aux_LLU.Gets (S, Long_Long_Unsigned (Item), Last);
        else
!          Aux_Uns.Gets (S, Unsigned (Item), Last);
        end if;
  
     exception
*************** package body Ada.Wide_Text_IO.Modular_IO
*** 103,112 ****
        Base  : Number_Base := Default_Base)
     is
     begin
!       if Num'Size > Unsigned'Size then
!          Aux.Put_LLU (TFT (File), Long_Long_Unsigned (Item), Width, Base);
        else
!          Aux.Put_Uns (TFT (File), Unsigned (Item), Width, Base);
        end if;
     end Put;
  
--- 134,143 ----
        Base  : Number_Base := Default_Base)
     is
     begin
!       if Need_LLU then
!          Aux_LLU.Put (File, Long_Long_Unsigned (Item), Width, Base);
        else
!          Aux_Uns.Put (File, Unsigned (Item), Width, Base);
        end if;
     end Put;
  
*************** package body Ada.Wide_Text_IO.Modular_IO
*** 116,122 ****
        Base  : Number_Base := Default_Base)
     is
     begin
!       Put (Current_Output, Item, Width, Base);
     end Put;
  
     procedure Put
--- 147,153 ----
        Base  : Number_Base := Default_Base)
     is
     begin
!       Put (Current_Out, Item, Width, Base);
     end Put;
  
     procedure Put
*************** package body Ada.Wide_Text_IO.Modular_IO
*** 127,136 ****
        S : String (To'First .. To'Last);
  
     begin
!       if Num'Size > Unsigned'Size then
!          Aux.Puts_LLU (S, Long_Long_Unsigned (Item), Base);
        else
!          Aux.Puts_Uns (S, Unsigned (Item), Base);
        end if;
  
        for J in S'Range loop
--- 158,167 ----
        S : String (To'First .. To'Last);
  
     begin
!       if Need_LLU then
!          Aux_LLU.Puts (S, Long_Long_Unsigned (Item), Base);
        else
!          Aux_Uns.Puts (S, Unsigned (Item), Base);
        end if;
  
        for J in S'Range loop
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtmoio.ads gcc-11.1.0/gcc/ada/libgnat/a-wtmoio.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-wtmoio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wtmoio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT.  In accordance with the copyright of that document, you can freely --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT.  In accordance with the copyright of that document, you can freely --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wtmoio__128.adb gcc-11.1.0/gcc/ada/libgnat/a-wtmoio__128.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wtmoio__128.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-wtmoio__128.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,194 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --           A D A . W I D E _ T E X T _ I O . M O D U L A R _ I O          --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --           Copyright (C) 1992-2020, Free Software Foundation, Inc.        --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Wide_Text_IO.Integer_Aux;
+ with System.Img_BIU;  use System.Img_BIU;
+ with System.Img_Uns;  use System.Img_Uns;
+ with System.Img_LLB;  use System.Img_LLB;
+ with System.Img_LLU;  use System.Img_LLU;
+ with System.Img_LLW;  use System.Img_LLW;
+ with System.Img_LLLB; use System.Img_LLLB;
+ with System.Img_LLLU; use System.Img_LLLU;
+ with System.Img_LLLW; use System.Img_LLLW;
+ with System.Img_WIU;  use System.Img_WIU;
+ with System.Val_Uns;  use System.Val_Uns;
+ with System.Val_LLU;  use System.Val_LLU;
+ with System.Val_LLLU; use System.Val_LLLU;
+ with System.WCh_Con;  use System.WCh_Con;
+ with System.WCh_WtS;  use System.WCh_WtS;
+ 
+ package body Ada.Wide_Text_IO.Modular_IO is
+ 
+    package Aux_Uns is new
+      Ada.Wide_Text_IO.Integer_Aux
+        (Unsigned,
+         Scan_Unsigned,
+         Set_Image_Unsigned,
+         Set_Image_Width_Unsigned,
+         Set_Image_Based_Unsigned);
+ 
+    package Aux_LLU is new
+      Ada.Wide_Text_IO.Integer_Aux
+        (Long_Long_Unsigned,
+         Scan_Long_Long_Unsigned,
+         Set_Image_Long_Long_Unsigned,
+         Set_Image_Width_Long_Long_Unsigned,
+         Set_Image_Based_Long_Long_Unsigned);
+ 
+    package Aux_LLLU is new
+      Ada.Wide_Text_IO.Integer_Aux
+        (Long_Long_Long_Unsigned,
+         Scan_Long_Long_Long_Unsigned,
+         Set_Image_Long_Long_Long_Unsigned,
+         Set_Image_Width_Long_Long_Long_Unsigned,
+         Set_Image_Based_Long_Long_Long_Unsigned);
+ 
+    Need_LLU  : constant Boolean := Num'Base'Size > Unsigned'Size;
+    Need_LLLU : constant Boolean := Num'Base'Size > Long_Long_Unsigned'Size;
+    --  Throughout this generic body, we distinguish between cases where type
+    --  Unsigned is acceptable, where type Long_Long_Unsigned is acceptable and
+    --  where type Long_Long_Long_Unsigned is needed. These boolean constants
+    --  are used to test for these cases and since they are constant, only code
+    --  for the relevant case will be included in the instance.
+ 
+    ---------
+    -- Get --
+    ---------
+ 
+    procedure Get
+      (File  : File_Type;
+       Item  : out Num;
+       Width : Field := 0)
+    is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+ 
+    begin
+       if Need_LLLU then
+          Aux_LLLU.Get (File, Long_Long_Long_Unsigned (Item), Width);
+       elsif Need_LLU then
+          Aux_LLU.Get (File, Long_Long_Unsigned (Item), Width);
+       else
+          Aux_Uns.Get (File, Unsigned (Item), Width);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    procedure Get
+      (Item  : out Num;
+       Width : Field := 0)
+    is
+    begin
+       Get (Current_In, Item, Width);
+    end Get;
+ 
+    procedure Get
+      (From : Wide_String;
+       Item : out Num;
+       Last : out Positive)
+    is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+ 
+       S : constant String := Wide_String_To_String (From, WCEM_Upper);
+       --  String on which we do the actual conversion. Note that the method
+       --  used for wide character encoding is irrelevant, since if there is
+       --  a character outside the Standard.Character range then the call to
+       --  Aux.Gets will raise Data_Error in any case.
+ 
+    begin
+       if Need_LLLU then
+          Aux_LLLU.Gets (S, Long_Long_Long_Unsigned (Item), Last);
+       elsif Need_LLU then
+          Aux_LLU.Gets (S, Long_Long_Unsigned (Item), Last);
+       else
+          Aux_Uns.Gets (S, Unsigned (Item), Last);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    ---------
+    -- Put --
+    ---------
+ 
+    procedure Put
+      (File  : File_Type;
+       Item  : Num;
+       Width : Field := Default_Width;
+       Base  : Number_Base := Default_Base)
+    is
+    begin
+       if Need_LLLU then
+          Aux_LLLU.Put (File, Long_Long_Long_Unsigned (Item), Width, Base);
+       elsif Need_LLU then
+          Aux_LLU.Put (File, Long_Long_Unsigned (Item), Width, Base);
+       else
+          Aux_Uns.Put (File, Unsigned (Item), Width, Base);
+       end if;
+    end Put;
+ 
+    procedure Put
+      (Item  : Num;
+       Width : Field := Default_Width;
+       Base  : Number_Base := Default_Base)
+    is
+    begin
+       Put (Current_Out, Item, Width, Base);
+    end Put;
+ 
+    procedure Put
+      (To   : out Wide_String;
+       Item : Num;
+       Base : Number_Base := Default_Base)
+    is
+       S : String (To'First .. To'Last);
+ 
+    begin
+       if Need_LLLU then
+          Aux_LLLU.Puts (S, Long_Long_Long_Unsigned (Item), Base);
+       elsif Need_LLU then
+          Aux_LLU.Puts (S, Long_Long_Unsigned (Item), Base);
+       else
+          Aux_Uns.Puts (S, Unsigned (Item), Base);
+       end if;
+ 
+       for J in S'Range loop
+          To (J) := Wide_Character'Val (Character'Pos (S (J)));
+       end loop;
+    end Put;
+ 
+ end Ada.Wide_Text_IO.Modular_IO;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wttest.adb gcc-11.1.0/gcc/ada/libgnat/a-wttest.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wttest.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wttest.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-wwboio.adb gcc-11.1.0/gcc/ada/libgnat/a-wwboio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-wwboio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-wwboio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-zchhan.adb gcc-11.1.0/gcc/ada/libgnat/a-zchhan.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-zchhan.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-zchhan.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Wide_Wide_Characters.Ha
*** 108,113 ****
--- 108,120 ----
     function Is_Mark (Item : Wide_Wide_Character) return Boolean
       renames Ada.Wide_Wide_Characters.Unicode.Is_Mark;
  
+    -------------
+    -- Is_NFKC --
+    -------------
+ 
+    function Is_NFKC (Item : Wide_Wide_Character) return Boolean
+      renames Ada.Wide_Wide_Characters.Unicode.Is_NFKC;
+ 
     ---------------------
     -- Is_Other_Format --
     ---------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-zchhan.ads gcc-11.1.0/gcc/ada/libgnat/a-zchhan.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-zchhan.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-zchhan.ads	Tue Apr 27 10:00:12 2021
*************** package Ada.Wide_Wide_Characters.Handlin
*** 98,103 ****
--- 98,109 ----
     --  Returns True if the Wide_Wide_Character designated by Item is
     --  categorized as separator_space, otherwise returns false.
  
+    function Is_NFKC (Item : Wide_Wide_Character) return Boolean;
+    pragma Inline (Is_NFKC);
+    --  Returns True if the Wide_Wide_Character designated by Item could be
+    --  present in a string normalized to Normalization Form KC (as defined by
+    --  Clause 21 of ISO/IEC 10646:2017), otherwise returns False.
+ 
     function Is_Graphic (Item : Wide_Wide_Character) return Boolean;
     pragma Inline (Is_Graphic);
     --  Returns True if the Wide_Wide_Character designated by Item is
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-zchuni.adb gcc-11.1.0/gcc/ada/libgnat/a-zchuni.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-zchuni.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-zchuni.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Wide_Wide_Characters.Un
*** 107,112 ****
--- 107,121 ----
        return G.Is_UTF_32_Non_Graphic (G.Category (C));
     end Is_Non_Graphic;
  
+    -------------
+    -- Is_NFKC --
+    -------------
+ 
+    function Is_NFKC (U : Wide_Wide_Character) return Boolean is
+    begin
+       return G.Is_UTF_32_NFKC (Wide_Wide_Character'Pos (U));
+    end Is_NFKC;
+ 
     --------------
     -- Is_Other --
     --------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-zchuni.ads gcc-11.1.0/gcc/ada/libgnat/a-zchuni.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-zchuni.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-zchuni.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Ada.Wide_Wide_Characters.Unicode
*** 147,152 ****
--- 147,158 ----
     --  of the corresponding categories, which are the following:
     --    Separator, Space (Zs)
  
+    function Is_NFKC (U : Wide_Wide_Character) return Boolean;
+    pragma Inline (Is_NFKC);
+    --  Returns True if the Wide_Wide_Character designated by U could be present
+    --  in a string normalized to Normalization Form KC (as defined by Clause
+    --  21 of ISO/IEC 10646:2017), otherwise returns False.
+ 
     function Is_Non_Graphic (U : Wide_Wide_Character) return Boolean;
     function Is_Non_Graphic (C : Category)            return Boolean;
     pragma Inline (Is_Non_Graphic);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-zrstfi.adb gcc-11.1.0/gcc/ada/libgnat/a-zrstfi.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-zrstfi.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-zrstfi.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2009-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2009-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-zrstfi.ads gcc-11.1.0/gcc/ada/libgnat/a-zrstfi.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-zrstfi.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-zrstfi.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2009-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2009-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztcoau.adb gcc-11.1.0/gcc/ada/libgnat/a-ztcoau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztcoau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztcoau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,51 ****
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
- with Ada.Wide_Wide_Text_IO.Float_Aux;
  
  with System.Img_Real; use System.Img_Real;
  
  package body Ada.Wide_Wide_Text_IO.Complex_Aux is
  
-    package Aux renames Ada.Wide_Wide_Text_IO.Float_Aux;
- 
     ---------
     -- Get --
     ---------
  
     procedure Get
       (File  : File_Type;
!       ItemR : out Long_Long_Float;
!       ItemI : out Long_Long_Float;
        Width : Field)
     is
        Buf   : String (1 .. Field'Last);
--- 30,48 ----
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
  
  with System.Img_Real; use System.Img_Real;
  
  package body Ada.Wide_Wide_Text_IO.Complex_Aux is
  
     ---------
     -- Get --
     ---------
  
     procedure Get
       (File  : File_Type;
!       ItemR : out Num;
!       ItemI : out Num;
        Width : Field)
     is
        Buf   : String (1 .. Field'Last);
*************** package body Ada.Wide_Wide_Text_IO.Compl
*** 95,102 ****
  
     procedure Gets
       (From  : String;
!       ItemR : out Long_Long_Float;
!       ItemI : out Long_Long_Float;
        Last  : out Positive)
     is
        Paren : Boolean;
--- 92,99 ----
  
     procedure Gets
       (From  : String;
!       ItemR : out Num;
!       ItemI : out Num;
        Last  : out Positive)
     is
        Paren : Boolean;
*************** package body Ada.Wide_Wide_Text_IO.Compl
*** 139,146 ****
  
     procedure Put
       (File  : File_Type;
!       ItemR : Long_Long_Float;
!       ItemI : Long_Long_Float;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field)
--- 136,143 ----
  
     procedure Put
       (File  : File_Type;
!       ItemR : Num;
!       ItemI : Num;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field)
*************** package body Ada.Wide_Wide_Text_IO.Compl
*** 159,166 ****
  
     procedure Puts
       (To    : out String;
!       ItemR : Long_Long_Float;
!       ItemI : Long_Long_Float;
        Aft   :  Field;
        Exp   :  Field)
     is
--- 156,163 ----
  
     procedure Puts
       (To    : out String;
!       ItemR : Num;
!       ItemI : Num;
        Aft   :  Field;
        Exp   :  Field)
     is
*************** package body Ada.Wide_Wide_Text_IO.Compl
*** 174,182 ****
        --  Both parts are initially converted with a Fore of 0
  
        Rptr := 0;
!       Set_Image_Real (ItemR, R_String, Rptr, 0, Aft, Exp);
        Iptr := 0;
!       Set_Image_Real (ItemI, I_String, Iptr, 0, Aft, Exp);
  
        --  Check room for both parts plus parens plus comma (RM G.1.3(34))
  
--- 171,179 ----
        --  Both parts are initially converted with a Fore of 0
  
        Rptr := 0;
!       Set_Image_Real (Long_Long_Float (ItemR), R_String, Rptr, 0, Aft, Exp);
        Iptr := 0;
!       Set_Image_Real (Long_Long_Float (ItemI), I_String, Iptr, 0, Aft, Exp);
  
        --  Check room for both parts plus parens plus comma (RM G.1.3(34))
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztcoau.ads gcc-11.1.0/gcc/ada/libgnat/a-ztcoau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ztcoau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztcoau.ads	Tue Apr 27 10:00:12 2021
***************
*** 15,52 ****
  
  --  This package contains the routines for Ada.Wide_Wide_Text_IO.Complex_IO
  --  that are shared among separate instantiations of this package. The routines
! --  in this package are identical semantically to those in Complex_IO itself,
! --  except that the generic parameter Complex has been replaced by separate
! --  real and imaginary values of type Long_Long_Float, and default parameters
! --  have been removed because they are supplied explicitly by the calls from
! --  within the generic template.
  
  package Ada.Wide_Wide_Text_IO.Complex_Aux is
  
     procedure Get
       (File  : File_Type;
!       ItemR : out Long_Long_Float;
!       ItemI : out Long_Long_Float;
        Width : Field);
  
-    procedure Gets
-      (From  : String;
-       ItemR : out Long_Long_Float;
-       ItemI : out Long_Long_Float;
-       Last  : out Positive);
- 
     procedure Put
       (File  : File_Type;
!       ItemR : Long_Long_Float;
!       ItemI : Long_Long_Float;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field);
  
     procedure Puts
       (To    : out String;
!       ItemR : Long_Long_Float;
!       ItemI : Long_Long_Float;
        Aft   : Field;
        Exp   : Field);
  
--- 15,59 ----
  
  --  This package contains the routines for Ada.Wide_Wide_Text_IO.Complex_IO
  --  that are shared among separate instantiations of this package. The routines
! --  in this package are identical semantically to those in Complex_IO, except
! --  that the generic parameter Complex has been replaced by separate real and
! --  imaginary parameters, and default parameters have been removed because they
! --  are supplied explicitly by the calls from within the generic template.
! 
! with Ada.Wide_Wide_Text_IO.Float_Aux;
! 
! private generic
! 
!    type Num is digits <>;
! 
!    with package Aux is new Ada.Wide_Wide_Text_IO.Float_Aux (Num, <>);
  
  package Ada.Wide_Wide_Text_IO.Complex_Aux is
  
     procedure Get
       (File  : File_Type;
!       ItemR : out Num;
!       ItemI : out Num;
        Width : Field);
  
     procedure Put
       (File  : File_Type;
!       ItemR : Num;
!       ItemI : Num;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field);
  
+    procedure Gets
+      (From  : String;
+       ItemR : out Num;
+       ItemI : out Num;
+       Last  : out Positive);
+ 
     procedure Puts
       (To    : out String;
!       ItemR : Num;
!       ItemI : Num;
        Aft   : Field;
        Exp   : Field);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztcoio.adb gcc-11.1.0/gcc/ada/libgnat/a-ztcoio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztcoio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztcoio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,53 ****
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Wide_Text_IO.Complex_Aux;
! 
! with System.WCh_Con; use System.WCh_Con;
! with System.WCh_WtS; use System.WCh_WtS;
  
  with Ada.Unchecked_Conversion;
  
  package body Ada.Wide_Wide_Text_IO.Complex_IO is
  
!    package Aux renames Ada.Wide_Wide_Text_IO.Complex_Aux;
  
!    subtype LLF is Long_Long_Float;
!    --  Type used for calls to routines in Aux
  
!    function TFT is new
!      Ada.Unchecked_Conversion (File_Type, Ada.Wide_Wide_Text_IO.File_Type);
!    --  This unchecked conversion is to get around a visibility bug in
!    --  GNAT version 2.04w. It should be possible to simply use the
!    --  subtype declared above and do normal checked conversions.
  
     ---------
     -- Get --
--- 30,75 ----
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Wide_Text_IO.Complex_Aux;
! with Ada.Wide_Wide_Text_IO.Float_Aux;
! with System.Val_Flt;  use System.Val_Flt;
! with System.Val_LFlt; use System.Val_LFlt;
! with System.Val_LLF;  use System.Val_LLF;
! with System.WCh_Con;  use System.WCh_Con;
! with System.WCh_WtS;  use System.WCh_WtS;
  
  with Ada.Unchecked_Conversion;
  
  package body Ada.Wide_Wide_Text_IO.Complex_IO is
  
!    use Complex_Types;
  
!    package Scalar_Float is new
!       Ada.Wide_Wide_Text_IO.Float_Aux (Float, Scan_Float);
  
!    package Scalar_Long_Float is new
!       Ada.Wide_Wide_Text_IO.Float_Aux (Long_Float, Scan_Long_Float);
! 
!    package Scalar_Long_Long_Float is new
!       Ada.Wide_Wide_Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
! 
!    package Aux_Float is new
!       Ada.Wide_Wide_Text_IO.Complex_Aux (Float, Scalar_Float);
! 
!    package Aux_Long_Float is new
!       Ada.Wide_Wide_Text_IO.Complex_Aux (Long_Float, Scalar_Long_Float);
! 
!    package Aux_Long_Long_Float is new
!       Ada.Wide_Wide_Text_IO.Complex_Aux
!         (Long_Long_Float, Scalar_Long_Long_Float);
! 
!    --  Throughout this generic body, we distinguish between the case where type
!    --  Float is OK, where type Long_Float is OK and where type Long_Long_Float
!    --  is needed. These boolean constants are used to test for this, such that
!    --  only code for the relevant case is included in the instance.
! 
!    OK_Float : constant Boolean := Real'Base'Digits <= Float'Digits;
! 
!    OK_Long_Float : constant Boolean := Real'Base'Digits <= Long_Float'Digits;
  
     ---------
     -- Get --
*************** package body Ada.Wide_Wide_Text_IO.Compl
*** 62,68 ****
        Imag_Item : Real'Base;
  
     begin
!       Aux.Get (TFT (File), LLF (Real_Item), LLF (Imag_Item), Width);
        Item := (Real_Item, Imag_Item);
  
     exception
--- 84,100 ----
        Imag_Item : Real'Base;
  
     begin
!       if OK_Float then
!          Aux_Float.Get (File, Float (Real_Item), Float (Imag_Item), Width);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Get
!            (File, Long_Float (Real_Item), Long_Float (Imag_Item), Width);
!       else
!          Aux_Long_Long_Float.Get
!            (File, Long_Long_Float (Real_Item), Long_Long_Float (Imag_Item),
!             Width);
!       end if;
! 
        Item := (Real_Item, Imag_Item);
  
     exception
*************** package body Ada.Wide_Wide_Text_IO.Compl
*** 78,84 ****
        Width : Field := 0)
     is
     begin
!       Get (Current_Input, Item, Width);
     end Get;
  
     ---------
--- 110,116 ----
        Width : Field := 0)
     is
     begin
!       Get (Current_In, Item, Width);
     end Get;
  
     ---------
*************** package body Ada.Wide_Wide_Text_IO.Compl
*** 100,106 ****
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       Aux.Gets (S, LLF (Real_Item), LLF (Imag_Item), Last);
        Item := (Real_Item, Imag_Item);
  
     exception
--- 132,148 ----
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       if OK_Float then
!          Aux_Float.Gets (S, Float (Real_Item), Float (Imag_Item), Last);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Gets
!            (S, Long_Float (Real_Item), Long_Float (Imag_Item), Last);
!       else
!          Aux_Long_Long_Float.Gets
!            (S, Long_Long_Float (Real_Item), Long_Long_Float (Imag_Item),
!             Last);
!       end if;
! 
        Item := (Real_Item, Imag_Item);
  
     exception
*************** package body Ada.Wide_Wide_Text_IO.Compl
*** 119,125 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       Aux.Put (TFT (File), LLF (Re (Item)), LLF (Im (Item)), Fore, Aft, Exp);
     end Put;
  
     ---------
--- 161,178 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       if OK_Float then
!          Aux_Float.Put
!            (File, Float (Re (Item)), Float (Im (Item)), Fore, Aft, Exp);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Put
!            (File, Long_Float (Re (Item)), Long_Float (Im (Item)), Fore, Aft,
!             Exp);
!       else
!          Aux_Long_Long_Float.Put
!            (File, Long_Long_Float (Re (Item)), Long_Long_Float (Im (Item)),
!             Fore, Aft, Exp);
!       end if;
     end Put;
  
     ---------
*************** package body Ada.Wide_Wide_Text_IO.Compl
*** 133,139 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Output, Item, Fore, Aft, Exp);
     end Put;
  
     ---------
--- 186,192 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Out, Item, Fore, Aft, Exp);
     end Put;
  
     ---------
*************** package body Ada.Wide_Wide_Text_IO.Compl
*** 149,155 ****
        S : String (To'First .. To'Last);
  
     begin
!       Aux.Puts (S, LLF (Re (Item)), LLF (Im (Item)), Aft, Exp);
  
        for J in S'Range loop
           To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
--- 202,217 ----
        S : String (To'First .. To'Last);
  
     begin
!       if OK_Float then
!          Aux_Float.Puts (S, Float (Re (Item)), Float (Im (Item)), Aft, Exp);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Puts
!            (S, Long_Float (Re (Item)), Long_Float (Im (Item)), Aft, Exp);
!       else
!          Aux_Long_Long_Float.Puts
!            (S, Long_Long_Float (Re (Item)), Long_Long_Float (Im (Item)),
!             Aft, Exp);
!       end if;
  
        for J in S'Range loop
           To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztcoio.ads gcc-11.1.0/gcc/ada/libgnat/a-ztcoio.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ztcoio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztcoio.ads	Tue Apr 27 10:00:12 2021
*************** package Ada.Wide_Wide_Text_IO.Complex_IO
*** 23,61 ****
     use Complex_Types;
  
     Default_Fore : Field := 2;
!    Default_Aft  : Field := Real'Digits - 1;
     Default_Exp  : Field := 3;
  
     procedure Get
       (File  : File_Type;
!       Item  : out Complex;
        Width : Field := 0);
  
     procedure Get
!      (Item  : out Complex;
        Width : Field := 0);
  
     procedure Put
       (File : File_Type;
!       Item : Complex;
        Fore : Field := Default_Fore;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp);
  
     procedure Put
!      (Item : Complex;
        Fore : Field := Default_Fore;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp);
  
     procedure Get
       (From : Wide_Wide_String;
!       Item : out Complex;
        Last : out Positive);
  
     procedure Put
       (To   : out Wide_Wide_String;
!       Item : Complex;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp);
  
--- 23,61 ----
     use Complex_Types;
  
     Default_Fore : Field := 2;
!    Default_Aft  : Field := Complex_Types.Real'Digits - 1;
     Default_Exp  : Field := 3;
  
     procedure Get
       (File  : File_Type;
!       Item  : out Complex_Types.Complex;
        Width : Field := 0);
  
     procedure Get
!      (Item  : out Complex_Types.Complex;
        Width : Field := 0);
  
     procedure Put
       (File : File_Type;
!       Item : Complex_Types.Complex;
        Fore : Field := Default_Fore;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp);
  
     procedure Put
!      (Item : Complex_Types.Complex;
        Fore : Field := Default_Fore;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp);
  
     procedure Get
       (From : Wide_Wide_String;
!       Item : out Complex_Types.Complex;
        Last : out Positive);
  
     procedure Put
       (To   : out Wide_Wide_String;
!       Item : Complex_Types.Complex;
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztcstr.adb gcc-11.1.0/gcc/ada/libgnat/a-ztcstr.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztcstr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztcstr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztcstr.ads gcc-11.1.0/gcc/ada/libgnat/a-ztcstr.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ztcstr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztcstr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztdeau.adb gcc-11.1.0/gcc/ada/libgnat/a-ztdeau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztdeau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztdeau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,85 ****
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
- with Ada.Wide_Wide_Text_IO.Float_Aux;   use Ada.Wide_Wide_Text_IO.Float_Aux;
- 
- with System.Img_Dec; use System.Img_Dec;
- with System.Img_LLD; use System.Img_LLD;
- with System.Val_Dec; use System.Val_Dec;
- with System.Val_LLD; use System.Val_LLD;
  
  package body Ada.Wide_Wide_Text_IO.Decimal_Aux is
  
!    -------------
!    -- Get_Dec --
!    -------------
! 
!    function Get_Dec
!      (File  : File_Type;
!       Width : Field;
!       Scale : Integer) return Integer
!    is
!       Buf  : String (1 .. Field'Last);
!       Ptr  : aliased Integer;
!       Stop : Integer := 0;
!       Item : Integer;
! 
!    begin
!       if Width /= 0 then
!          Load_Width (File, Width, Buf, Stop);
!          String_Skip (Buf, Ptr);
!       else
!          Load_Real (File, Buf, Stop);
!          Ptr := 1;
!       end if;
! 
!       Item := Scan_Decimal (Buf, Ptr'Access, Stop, Scale);
!       Check_End_Of_Field (Buf, Stop, Ptr, Width);
!       return Item;
!    end Get_Dec;
! 
!    -------------
!    -- Get_LLD --
!    -------------
  
!    function Get_LLD
       (File  : File_Type;
        Width : Field;
!       Scale : Integer) return Long_Long_Integer
     is
        Buf  : String (1 .. Field'Last);
        Ptr  : aliased Integer;
        Stop : Integer := 0;
!       Item : Long_Long_Integer;
  
     begin
        if Width /= 0 then
--- 30,51 ----
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
  
  package body Ada.Wide_Wide_Text_IO.Decimal_Aux is
  
!    ---------
!    -- Get --
!    ---------
  
!    function Get
       (File  : File_Type;
        Width : Field;
!       Scale : Integer) return Int
     is
        Buf  : String (1 .. Field'Last);
        Ptr  : aliased Integer;
        Stop : Integer := 0;
!       Item : Int;
  
     begin
        if Width /= 0 then
*************** package body Ada.Wide_Wide_Text_IO.Decim
*** 90,177 ****
           Ptr := 1;
        end if;
  
!       Item := Scan_Long_Long_Decimal (Buf, Ptr'Access, Stop, Scale);
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
        return Item;
!    end Get_LLD;
! 
!    --------------
!    -- Gets_Dec --
!    --------------
! 
!    function Gets_Dec
!      (From  : String;
!       Last  : not null access Positive;
!       Scale : Integer) return Integer
!    is
!       Pos  : aliased Integer;
!       Item : Integer;
! 
!    begin
!       String_Skip (From, Pos);
!       Item := Scan_Decimal (From, Pos'Access, From'Last, Scale);
!       Last.all := Pos - 1;
!       return Item;
! 
!    exception
!       when Constraint_Error =>
!          Last.all := Pos - 1;
!          raise Data_Error;
! 
!    end Gets_Dec;
  
!    --------------
!    -- Gets_LLD --
!    --------------
  
!    function Gets_LLD
       (From  : String;
!       Last  : not null access Positive;
!       Scale : Integer) return Long_Long_Integer
     is
        Pos  : aliased Integer;
!       Item : Long_Long_Integer;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan_Long_Long_Decimal (From, Pos'Access, From'Last, Scale);
!       Last.all := Pos - 1;
        return Item;
  
     exception
        when Constraint_Error =>
!          Last.all := Pos - 1;
           raise Data_Error;
  
!    end Gets_LLD;
! 
!    -------------
!    -- Put_Dec --
!    -------------
! 
!    procedure Put_Dec
!      (File  : File_Type;
!       Item  : Integer;
!       Fore  : Field;
!       Aft   : Field;
!       Exp   : Field;
!       Scale : Integer)
!    is
!       Buf : String (1 .. Field'Last);
!       Ptr : Natural := 0;
! 
!    begin
!       Set_Image_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
!       Put_Item (File, Buf (1 .. Ptr));
!    end Put_Dec;
! 
!    -------------
!    -- Put_LLD --
!    -------------
  
!    procedure Put_LLD
       (File  : File_Type;
!       Item  : Long_Long_Integer;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field;
--- 56,97 ----
           Ptr := 1;
        end if;
  
!       Item := Scan (Buf, Ptr'Access, Stop, Scale);
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
        return Item;
!    end Get;
  
!    ----------
!    -- Gets --
!    ----------
  
!    function Gets
       (From  : String;
!       Last  : out Positive;
!       Scale : Integer) return Int
     is
        Pos  : aliased Integer;
!       Item : Int;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan (From, Pos'Access, From'Last, Scale);
!       Last := Pos - 1;
        return Item;
  
     exception
        when Constraint_Error =>
!          Last := Pos - 1;
           raise Data_Error;
+    end Gets;
  
!    ---------
!    -- Put --
!    ---------
  
!    procedure Put
       (File  : File_Type;
!       Item  : Int;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field;
*************** package body Ada.Wide_Wide_Text_IO.Decim
*** 181,263 ****
        Ptr : Natural := 0;
  
     begin
!       Set_Image_Long_Long_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
        Put_Item (File, Buf (1 .. Ptr));
!    end Put_LLD;
  
!    --------------
!    -- Puts_Dec --
!    --------------
  
!    procedure Puts_Dec
       (To    : out String;
!       Item  : Integer;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer)
     is
!       Buf  : String (1 .. Field'Last);
        Fore : Integer;
        Ptr  : Natural := 0;
  
     begin
!       --  Compute Fore, allowing for Aft digits and the decimal dot
  
!       Fore := To'Length - Field'Max (1, Aft) - 1;
  
!       --  Allow for Exp and two more for E+ or E- if exponent present
  
        if Exp /= 0 then
!          Fore := Fore - 2 - Exp;
        end if;
  
        --  Make sure we have enough room
  
!       if Fore < 1 then
           raise Layout_Error;
        end if;
  
        --  Do the conversion and check length of result
  
!       Set_Image_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
! 
!       if Ptr > To'Length then
!          raise Layout_Error;
!       else
!          To := Buf (1 .. Ptr);
!       end if;
!    end Puts_Dec;
! 
!    --------------
!    -- Puts_LLD --
!    --------------
! 
!    procedure Puts_LLD
!      (To    : out String;
!       Item  : Long_Long_Integer;
!       Aft   : Field;
!       Exp   : Field;
!       Scale : Integer)
!    is
!       Buf  : String (1 .. Field'Last);
!       Fore : Integer;
!       Ptr  : Natural := 0;
! 
!    begin
!       Fore :=
!         (if Exp = 0 then To'Length - 1 - Aft else To'Length - 2 - Aft - Exp);
! 
!       if Fore < 1 then
!          raise Layout_Error;
!       end if;
! 
!       Set_Image_Long_Long_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
  
        if Ptr > To'Length then
           raise Layout_Error;
        else
           To := Buf (1 .. Ptr);
        end if;
!    end Puts_LLD;
  
  end Ada.Wide_Wide_Text_IO.Decimal_Aux;
--- 101,151 ----
        Ptr : Natural := 0;
  
     begin
!       Set_Image (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
        Put_Item (File, Buf (1 .. Ptr));
!    end Put;
  
!    ----------
!    -- Puts --
!    ----------
  
!    procedure Puts
       (To    : out String;
!       Item  : Int;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer)
     is
!       Buf  : String (1 .. Positive'Max (Field'Last, To'Length));
        Fore : Integer;
        Ptr  : Natural := 0;
  
     begin
!       --  Compute Fore, allowing for the decimal dot and Aft digits
  
!       Fore := To'Length - 1 - Field'Max (1, Aft);
  
!       --  Allow for Exp and one more for E if exponent present
  
        if Exp /= 0 then
!          Fore := Fore - 1 - Field'Max (2, Exp);
        end if;
  
        --  Make sure we have enough room
  
!       if Fore < 1 + Boolean'Pos (Item < 0) then
           raise Layout_Error;
        end if;
  
        --  Do the conversion and check length of result
  
!       Set_Image (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
  
        if Ptr > To'Length then
           raise Layout_Error;
        else
           To := Buf (1 .. Ptr);
        end if;
!    end Puts;
  
  end Ada.Wide_Wide_Text_IO.Decimal_Aux;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztdeau.ads gcc-11.1.0/gcc/ada/libgnat/a-ztdeau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ztdeau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztdeau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,91 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains the routines for Ada.Wide_Wide_Text_IO.Decimal_IO
! --  that are shared among separate instantiations of this package. The
! --  routines in the package are identical semantically to those declared
! --  in Wide_Wide_Text_IO, except that default values have been supplied by the
! --  generic, and the Num parameter has been replaced by Integer or
! --  Long_Long_Integer, with an additional Scale parameter giving the
! --  value of Num'Scale. In addition the Get routines return the value
! --  rather than store it in an Out parameter.
! 
! private package Ada.Wide_Wide_Text_IO.Decimal_Aux is
  
!    function Get_Dec
!      (File  : File_Type;
!       Width : Field;
!       Scale : Integer) return Integer;
  
!    function Get_LLD
!      (File  : File_Type;
!       Width : Field;
!       Scale : Integer) return Long_Long_Integer;
  
!    function Gets_Dec
!      (From  : String;
!       Last  : not null access Positive;
!       Scale : Integer) return Integer;
  
!    function Gets_LLD
!      (From  : String;
!       Last  : not null access Positive;
!       Scale : Integer) return Long_Long_Integer;
  
!    procedure Put_Dec
       (File  : File_Type;
!       Item  : Integer;
!       Fore  : Field;
!       Aft   : Field;
!       Exp   : Field;
!       Scale : Integer);
  
!    procedure Put_LLD
       (File  : File_Type;
!       Item  : Long_Long_Integer;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer);
  
!    procedure Puts_Dec
!      (To    : out String;
!       Item  : Integer;
!       Aft   : Field;
!       Exp   : Field;
!       Scale : Integer);
  
!    procedure Puts_LLD
       (To    : out String;
!       Item  : Long_Long_Integer;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer);
--- 29,82 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains implementation for Ada.Wide_Wide_Text_IO.Decimal_IO
! --  Routines in this package are identical semantically to those in Decimal_IO,
! --  except that the default parameters have been removed because they are
! --  supplied explicitly by the calls from within these units, and there is an
! --  additional Scale parameter giving the value of Num'Scale. In addition the
! --  Get routines return the value rather than store it in an Out parameter.
  
! private generic
!    type Int is range <>;
  
!    with function Scan
!      (Str   : String;
!       Ptr   : not null access Integer;
!       Max   : Integer;
!       Scale : Integer) return Int;
  
!    with procedure Set_Image
!      (V     : Int;
!       S     : in out String;
!       P     : in out Natural;
!       Scale : Integer;
!       Fore  : Natural;
!       Aft   : Natural;
!       Exp   : Natural);
  
! package Ada.Wide_Wide_Text_IO.Decimal_Aux is
  
!    function Get
       (File  : File_Type;
!       Width : Field;
!       Scale : Integer) return Int;
  
!    procedure Put
       (File  : File_Type;
!       Item  : Int;
        Fore  : Field;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer);
  
!    function Gets
!      (From  : String;
!       Last  : out Positive;
!       Scale : Integer) return Int;
  
!    procedure Puts
       (To    : out String;
!       Item  : Int;
        Aft   : Field;
        Exp   : Field;
        Scale : Integer);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztdeio.adb gcc-11.1.0/gcc/ada/libgnat/a-ztdeio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztdeio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztdeio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,45 ****
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Wide_Text_IO.Decimal_Aux;
! 
  with System.WCh_Con; use System.WCh_Con;
  with System.WCh_WtS; use System.WCh_WtS;
  
  package body Ada.Wide_Wide_Text_IO.Decimal_IO is
  
!    subtype TFT is Ada.Wide_Wide_Text_IO.File_Type;
!    --  File type required for calls to routines in Aux
  
!    package Aux renames Ada.Wide_Wide_Text_IO.Decimal_Aux;
  
     Scale : constant Integer := Num'Scale;
  
--- 30,64 ----
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Wide_Text_IO.Decimal_Aux;
! with System.Img_Decimal_32;  use System.Img_Decimal_32;
! with System.Img_Decimal_64;  use System.Img_Decimal_64;
! with System.Val_Decimal_32;  use System.Val_Decimal_32;
! with System.Val_Decimal_64;  use System.Val_Decimal_64;
  with System.WCh_Con; use System.WCh_Con;
  with System.WCh_WtS; use System.WCh_WtS;
  
  package body Ada.Wide_Wide_Text_IO.Decimal_IO is
  
!    subtype Int32 is Interfaces.Integer_32;
!    subtype Int64 is Interfaces.Integer_64;
  
!    package Aux32 is new
!      Ada.Wide_Wide_Text_IO.Decimal_Aux
!        (Int32,
!         Scan_Decimal32,
!         Set_Image_Decimal32);
! 
!    package Aux64 is new
!      Ada.Wide_Wide_Text_IO.Decimal_Aux
!        (Int64,
!         Scan_Decimal64,
!         Set_Image_Decimal64);
! 
!    Need64 : constant Boolean := Num'Size > 32;
!    --  Throughout this generic body, we distinguish between the case where type
!    --  Int32 is acceptable and where type Int64 is needed. This Boolean is used
!    --  to test for these cases and since it is a constant, only code for the
!    --  relevant case will be included in the instance.
  
     Scale : constant Integer := Num'Scale;
  
*************** package body Ada.Wide_Wide_Text_IO.Decim
*** 52,63 ****
        Item  : out Num;
        Width : Field := 0)
     is
     begin
!       if Num'Size > Integer'Size then
!          Item := Num'Fixed_Value (Aux.Get_LLD (TFT (File), Width, Scale));
        else
!          Item := Num'Fixed_Value (Aux.Get_Dec (TFT (File), Width, Scale));
        end if;
     exception
        when Constraint_Error => raise Data_Error;
     end Get;
--- 71,85 ----
        Item  : out Num;
        Width : Field := 0)
     is
+       pragma Unsuppress (Range_Check);
+ 
     begin
!       if Need64 then
!          Item := Num'Fixed_Value (Aux64.Get (File, Width, Scale));
        else
!          Item := Num'Fixed_Value (Aux32.Get (File, Width, Scale));
        end if;
+ 
     exception
        when Constraint_Error => raise Data_Error;
     end Get;
*************** package body Ada.Wide_Wide_Text_IO.Decim
*** 67,73 ****
        Width : Field := 0)
     is
     begin
!       Get (Current_Input, Item, Width);
     end Get;
  
     procedure Get
--- 89,95 ----
        Width : Field := 0)
     is
     begin
!       Get (Current_In, Item, Width);
     end Get;
  
     procedure Get
*************** package body Ada.Wide_Wide_Text_IO.Decim
*** 75,80 ****
--- 97,104 ----
        Item : out Num;
        Last : out Positive)
     is
+       pragma Unsuppress (Range_Check);
+ 
        S : constant String := Wide_Wide_String_To_String (From, WCEM_Upper);
        --  String on which we do the actual conversion. Note that the method
        --  used for wide character encoding is irrelevant, since if there is
*************** package body Ada.Wide_Wide_Text_IO.Decim
*** 82,97 ****
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       if Num'Size > Integer'Size then
!          --  Item := Num'Fixed_Value
!          --  should write above, but gets assert error ???
!          Item := Num
!                    (Aux.Gets_LLD (S, Last'Unrestricted_Access, Scale));
        else
!          --  Item := Num'Fixed_Value
!          --  should write above, but gets assert error ???
!          Item := Num
!                    (Aux.Gets_Dec (S, Last'Unrestricted_Access, Scale));
        end if;
  
     exception
--- 106,115 ----
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       if Need64 then
!          Item := Num'Fixed_Value (Aux64.Gets (S, Last, Scale));
        else
!          Item := Num'Fixed_Value (Aux32.Gets (S, Last, Scale));
        end if;
  
     exception
*************** package body Ada.Wide_Wide_Text_IO.Decim
*** 110,127 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       if Num'Size > Integer'Size then
!          Aux.Put_LLD
! --           (TFT (File), Long_Long_Integer'Integer_Value (Item),
! --  ???
!            (TFT (File), Long_Long_Integer (Item),
!             Fore, Aft, Exp, Scale);
        else
!          Aux.Put_Dec
! --           (TFT (File), Integer'Integer_Value (Item), Fore, Aft, Exp, Scale);
! --  ???
!            (TFT (File), Integer (Item), Fore, Aft, Exp, Scale);
! 
        end if;
     end Put;
  
--- 128,139 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       if Need64 then
!          Aux64.Put
!            (File, Int64'Integer_Value (Item), Fore, Aft, Exp, Scale);
        else
!          Aux32.Put
!            (File, Int32'Integer_Value (Item), Fore, Aft, Exp, Scale);
        end if;
     end Put;
  
*************** package body Ada.Wide_Wide_Text_IO.Decim
*** 132,138 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Output, Item, Fore, Aft, Exp);
     end Put;
  
     procedure Put
--- 144,150 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Out, Item, Fore, Aft, Exp);
     end Put;
  
     procedure Put
*************** package body Ada.Wide_Wide_Text_IO.Decim
*** 144,159 ****
        S : String (To'First .. To'Last);
  
     begin
!       if Num'Size > Integer'Size then
! --       Aux.Puts_LLD
! --         (S, Long_Long_Integer'Integer_Value (Item), Aft, Exp, Scale);
! --  ???
!          Aux.Puts_LLD
!            (S, Long_Long_Integer (Item), Aft, Exp, Scale);
        else
! --       Aux.Puts_Dec (S, Integer'Integer_Value (Item), Aft, Exp, Scale);
! --  ???
!          Aux.Puts_Dec (S, Integer (Item), Aft, Exp, Scale);
        end if;
  
        for J in S'Range loop
--- 156,165 ----
        S : String (To'First .. To'Last);
  
     begin
!       if Need64 then
!          Aux64.Puts (S, Int64'Integer_Value (Item), Aft, Exp, Scale);
        else
!          Aux32.Puts (S, Int32'Integer_Value (Item), Aft, Exp, Scale);
        end if;
  
        for J in S'Range loop
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztdeio__128.adb gcc-11.1.0/gcc/ada/libgnat/a-ztdeio__128.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztdeio__128.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-ztdeio__128.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,190 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --      A D A . W I D E _ W I D E _ T E X T _ I O . D E C I M A L _ I O     --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Wide_Wide_Text_IO.Decimal_Aux;
+ with System.Img_Decimal_32;  use System.Img_Decimal_32;
+ with System.Img_Decimal_64;  use System.Img_Decimal_64;
+ with System.Img_Decimal_128; use System.Img_Decimal_128;
+ with System.Val_Decimal_32;  use System.Val_Decimal_32;
+ with System.Val_Decimal_64;  use System.Val_Decimal_64;
+ with System.Val_Decimal_128; use System.Val_Decimal_128;
+ with System.WCh_Con;  use System.WCh_Con;
+ with System.WCh_WtS;  use System.WCh_WtS;
+ 
+ package body Ada.Wide_Wide_Text_IO.Decimal_IO is
+ 
+    subtype Int32 is Interfaces.Integer_32;
+    subtype Int64 is Interfaces.Integer_64;
+    subtype Int128 is Interfaces.Integer_128;
+ 
+    package Aux32 is new
+      Ada.Wide_Wide_Text_IO.Decimal_Aux
+        (Int32,
+         Scan_Decimal32,
+         Set_Image_Decimal32);
+ 
+    package Aux64 is new
+      Ada.Wide_Wide_Text_IO.Decimal_Aux
+        (Int64,
+         Scan_Decimal64,
+         Set_Image_Decimal64);
+ 
+    package Aux128 is new
+      Ada.Wide_Wide_Text_IO.Decimal_Aux
+        (Int128,
+         Scan_Decimal128,
+         Set_Image_Decimal128);
+ 
+    Need64  : constant Boolean := Num'Size > 32;
+    Need128 : constant Boolean := Num'Size > 64;
+    --  Throughout this generic body, we distinguish between the case where type
+    --  Int32 is acceptable, where type Int64 is acceptable and where an Int128
+    --  is needed. These boolean constants are used to test for these cases and
+    --  since it is a constant, only code for the relevant case will be included
+    --  in the instance.
+ 
+    Scale : constant Integer := Num'Scale;
+ 
+    ---------
+    -- Get --
+    ---------
+ 
+    procedure Get
+      (File  : File_Type;
+       Item  : out Num;
+       Width : Field := 0)
+    is
+       pragma Unsuppress (Range_Check);
+ 
+    begin
+       if Need128 then
+          Item := Num'Fixed_Value (Aux128.Get (File, Width, Scale));
+       elsif Need64 then
+          Item := Num'Fixed_Value (Aux64.Get (File, Width, Scale));
+       else
+          Item := Num'Fixed_Value (Aux32.Get (File, Width, Scale));
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    procedure Get
+      (Item  : out Num;
+       Width : Field := 0)
+    is
+    begin
+       Get (Current_In, Item, Width);
+    end Get;
+ 
+    procedure Get
+      (From : Wide_Wide_String;
+       Item : out Num;
+       Last : out Positive)
+    is
+       pragma Unsuppress (Range_Check);
+ 
+       S : constant String := Wide_Wide_String_To_String (From, WCEM_Upper);
+       --  String on which we do the actual conversion. Note that the method
+       --  used for wide character encoding is irrelevant, since if there is
+       --  a character outside the Standard.Character range then the call to
+       --  Aux.Gets will raise Data_Error in any case.
+ 
+    begin
+       if Need128 then
+          Item := Num'Fixed_Value (Aux128.Gets (S, Last, Scale));
+       elsif Need64 then
+          Item := Num'Fixed_Value (Aux64.Gets (S, Last, Scale));
+       else
+          Item := Num'Fixed_Value (Aux32.Gets (S, Last, Scale));
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    ---------
+    -- Put --
+    ---------
+ 
+    procedure Put
+      (File : File_Type;
+       Item : Num;
+       Fore : Field := Default_Fore;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+    begin
+       if Need128 then
+          Aux128.Put
+            (File, Int128'Integer_Value (Item), Fore, Aft, Exp, Scale);
+       elsif Need64 then
+          Aux64.Put
+            (File, Int64'Integer_Value (Item), Fore, Aft, Exp, Scale);
+       else
+          Aux32.Put
+            (File, Int32'Integer_Value (Item), Fore, Aft, Exp, Scale);
+       end if;
+    end Put;
+ 
+    procedure Put
+      (Item : Num;
+       Fore : Field := Default_Fore;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+    begin
+       Put (Current_Out, Item, Fore, Aft, Exp);
+    end Put;
+ 
+    procedure Put
+      (To   : out Wide_Wide_String;
+       Item : Num;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+       S : String (To'First .. To'Last);
+ 
+    begin
+       if Need128 then
+          Aux128.Puts (S, Int128'Integer_Value (Item), Aft, Exp, Scale);
+       elsif Need64 then
+          Aux64.Puts (S, Int64'Integer_Value (Item), Aft, Exp, Scale);
+       else
+          Aux32.Puts (S, Int32'Integer_Value (Item), Aft, Exp, Scale);
+       end if;
+ 
+       for J in S'Range loop
+          To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
+       end loop;
+    end Put;
+ 
+ end Ada.Wide_Wide_Text_IO.Decimal_IO;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztedit.adb gcc-11.1.0/gcc/ada/libgnat/a-ztedit.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztedit.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztedit.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztedit.ads gcc-11.1.0/gcc/ada/libgnat/a-ztedit.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ztedit.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztedit.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztenau.adb gcc-11.1.0/gcc/ada/libgnat/a-ztenau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztenau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztenau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.WCh_Con;
*** 37,45 ****
  
  package body Ada.Wide_Wide_Text_IO.Enumeration_Aux is
  
-    subtype TFT is Ada.Wide_Wide_Text_IO.File_Type;
-    --  File type required for calls to routines in Aux
- 
     -----------------------
     -- Local Subprograms --
     -----------------------
--- 37,42 ----
*************** package body Ada.Wide_Wide_Text_IO.Enume
*** 70,77 ****
  
     begin
        Buflen := 0;
!       Load_Skip (TFT (File));
!       ch := Nextc (TFT (File));
  
        --  Character literal case. If the initial character is a quote, then
        --  we read as far as we can without backup (see ACVC test CE3905L)
--- 67,74 ----
  
     begin
        Buflen := 0;
!       Load_Skip (File);
!       ch := Nextc (File);
  
        --  Character literal case. If the initial character is a quote, then
        --  we read as far as we can without backup (see ACVC test CE3905L)
*************** package body Ada.Wide_Wide_Text_IO.Enume
*** 80,86 ****
           Get (File, WC);
           Store_Char (WC, Buf, Buflen);
  
!          ch := Nextc (TFT (File));
  
           if ch = LM or else ch = EOF then
              return;
--- 77,83 ----
           Get (File, WC);
           Store_Char (WC, Buf, Buflen);
  
!          ch := Nextc (File);
  
           if ch = LM or else ch = EOF then
              return;
*************** package body Ada.Wide_Wide_Text_IO.Enume
*** 89,95 ****
           Get (File, WC);
           Store_Char (WC, Buf, Buflen);
  
!          ch := Nextc (TFT (File));
  
           if ch /= Character'Pos (''') then
              return;
--- 86,92 ----
           Get (File, WC);
           Store_Char (WC, Buf, Buflen);
  
!          ch := Nextc (File);
  
           if ch /= Character'Pos (''') then
              return;
*************** package body Ada.Wide_Wide_Text_IO.Enume
*** 118,124 ****
              Get (File, WC);
              Store_Char (WC, Buf, Buflen);
  
!             ch := Nextc (TFT (File));
  
              exit when ch = EOF;
  
--- 115,121 ----
              Get (File, WC);
              Store_Char (WC, Buf, Buflen);
  
!             ch := Nextc (File);
  
              exit when ch = EOF;
  
*************** package body Ada.Wide_Wide_Text_IO.Enume
*** 156,162 ****
          Integer'Max (Integer (Width), Item'Length);
  
     begin
!       Check_On_One_Line (TFT (File), Actual_Width);
  
        if Set = Lower_Case and then Item (Item'First) /= ''' then
           declare
--- 153,159 ----
          Integer'Max (Integer (Width), Item'Length);
  
     begin
!       Check_On_One_Line (File, Actual_Width);
  
        if Set = Lower_Case and then Item (Item'First) /= ''' then
           declare
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztenau.ads gcc-11.1.0/gcc/ada/libgnat/a-ztenau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ztenau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztenau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztenio.adb gcc-11.1.0/gcc/ada/libgnat/a-ztenio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztenio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztenio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Wide_Wide_Text_IO.Enume
*** 51,57 ****
  
     procedure Get (Item : out Enum) is
     begin
!       Get (Current_Input, Item);
     end Get;
  
     procedure Get
--- 51,57 ----
  
     procedure Get (Item : out Enum) is
     begin
!       Get (Current_In, Item);
     end Get;
  
     procedure Get
*************** package body Ada.Wide_Wide_Text_IO.Enume
*** 88,94 ****
        Set   : Type_Set := Default_Setting)
     is
     begin
!       Put (Current_Output, Item, Width, Set);
     end Put;
  
     procedure Put
--- 88,94 ----
        Set   : Type_Set := Default_Setting)
     is
     begin
!       Put (Current_Out, Item, Width, Set);
     end Put;
  
     procedure Put
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztexio.adb gcc-11.1.0/gcc/ada/libgnat/a-ztexio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztexio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztexio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztexio.ads gcc-11.1.0/gcc/ada/libgnat/a-ztexio.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ztexio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztexio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztfiau.adb gcc-11.1.0/gcc/ada/libgnat/a-ztfiau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztfiau.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-ztfiau.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,159 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --        A D A . W I D E _ W I D E _ T E X T _ I O . F I X E D _ I O       --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
+ 
+ package body Ada.Wide_Wide_Text_IO.Fixed_Aux is
+ 
+    ---------
+    -- Get --
+    ---------
+ 
+    function Get
+      (File  : File_Type;
+       Width : Field;
+       Num   : Int;
+       Den   : Int) return Int
+    is
+       Buf  : String (1 .. Field'Last);
+       Ptr  : aliased Integer;
+       Stop : Integer := 0;
+       Item : Int;
+ 
+    begin
+       if Width /= 0 then
+          Load_Width (File, Width, Buf, Stop);
+          String_Skip (Buf, Ptr);
+       else
+          Load_Real (File, Buf, Stop);
+          Ptr := 1;
+       end if;
+ 
+       Item := Scan (Buf, Ptr'Access, Stop, Num, Den);
+       Check_End_Of_Field (Buf, Stop, Ptr, Width);
+       return Item;
+    end Get;
+ 
+    ----------
+    -- Gets --
+    ----------
+ 
+    function Gets
+      (From : String;
+       Last : out Positive;
+       Num  : Int;
+       Den  : Int) return Int
+    is
+       Pos  : aliased Integer;
+       Item : Int;
+ 
+    begin
+       String_Skip (From, Pos);
+       Item := Scan (From, Pos'Access, From'Last, Num, Den);
+       Last := Pos - 1;
+       return Item;
+ 
+    exception
+       when Constraint_Error =>
+          Last := Pos - 1;
+          raise Data_Error;
+    end Gets;
+ 
+    ---------
+    -- Put --
+    ---------
+ 
+    procedure Put
+      (File : File_Type;
+       Item : Int;
+       Fore : Field;
+       Aft  : Field;
+       Exp  : Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural)
+    is
+       Buf : String (1 .. Field'Last);
+       Ptr : Natural := 0;
+ 
+    begin
+       Set_Image (Item, Buf, Ptr, Num, Den, For0, Aft0, Fore, Aft, Exp);
+       Put_Item (File, Buf (1 .. Ptr));
+    end Put;
+ 
+    ----------
+    -- Puts --
+    ----------
+ 
+    procedure Puts
+      (To   : out String;
+       Item : Int;
+       Aft  : Field;
+       Exp  : Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural)
+    is
+       Buf  : String (1 .. Positive'Max (Field'Last, To'Length));
+       Fore : Integer;
+       Ptr  : Natural := 0;
+ 
+    begin
+       --  Compute Fore, allowing for the decimal dot and Aft digits
+ 
+       Fore := To'Length - 1 - Field'Max (1, Aft);
+ 
+       --  Allow for Exp and one more for E if exponent present
+ 
+       if Exp /= 0 then
+          Fore := Fore - 1 - Field'Max (2, Exp);
+       end if;
+ 
+       --  Make sure we have enough room
+ 
+       if Fore < 1 + Boolean'Pos (Item < 0) then
+          raise Layout_Error;
+       end if;
+ 
+       --  Do the conversion and check length of result
+ 
+       Set_Image (Item, Buf, Ptr, Num, Den, For0, Aft0, Fore, Aft, Exp);
+ 
+       if Ptr > To'Length then
+          raise Layout_Error;
+       else
+          To := Buf (1 .. Ptr);
+       end if;
+    end Puts;
+ 
+ end Ada.Wide_Wide_Text_IO.Fixed_Aux;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztfiau.ads gcc-11.1.0/gcc/ada/libgnat/a-ztfiau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ztfiau.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-ztfiau.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,97 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --        A D A . W I D E _ W I D E _ T E X T _ I O . F I X E D _ I O       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the implementation for Ada.Wide_Wide_Text_IO.Fixed_IO
+ --  Routines in this package are identical semantically to those in Fixed_IO,
+ --  except that the default parameters have been removed because they are
+ --  supplied explicitly by the calls from within these units, and there are
+ --  additional Num and Den parameters giving the value of Num'Small, as well
+ --  as For0 and Aft0 giving some properties of Num'Small. In addition the Get
+ --  routines return the value rather than store it in an Out parameter.
+ 
+ private generic
+    type Int is range <>;
+ 
+    with function Scan
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer;
+       Num : Int;
+       Den : Int) return Int;
+ 
+    with procedure Set_Image
+      (V    : Int;
+       S    : in out String;
+       P    : in out Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural;
+       Fore : Natural;
+       Aft  : Natural;
+       Exp  : Natural);
+ 
+ package Ada.Wide_Wide_Text_IO.Fixed_Aux is
+ 
+    function Get
+      (File  : File_Type;
+       Width : Field;
+       Num   : Int;
+       Den   : Int) return Int;
+ 
+    procedure Put
+      (File : File_Type;
+       Item : Int;
+       Fore : Field;
+       Aft  : Field;
+       Exp  : Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural);
+ 
+    function Gets
+      (From : String;
+       Last : out Positive;
+       Num  : Int;
+       Den  : Int) return Int;
+ 
+    procedure Puts
+      (To   : out String;
+       Item : Int;
+       Aft  : Field;
+       Exp  : Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural);
+ 
+ end Ada.Wide_Wide_Text_IO.Fixed_Aux;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztfiio.adb gcc-11.1.0/gcc/ada/libgnat/a-ztfiio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztfiio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztfiio.adb	Tue Apr 27 10:00:12 2021
***************
*** 2,12 ****
  --                                                                          --
  --                         GNAT RUN-TIME COMPONENTS                         --
  --                                                                          --
! --     A D A . T E X T _ I O . W I D E _ T E X T _ I O . F I X E D _ I O    --
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 2,12 ----
  --                                                                          --
  --                         GNAT RUN-TIME COMPONENTS                         --
  --                                                                          --
! --        A D A . W I D E _ W I D E _ T E X T _ I O . F I X E D _ I O       --
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,44 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Wide_Text_IO.Float_Aux;
! with System.WCh_Con; use System.WCh_Con;
! with System.WCh_WtS; use System.WCh_WtS;
  
  package body Ada.Wide_Wide_Text_IO.Fixed_IO is
  
!    subtype TFT is Ada.Wide_Wide_Text_IO.File_Type;
!    --  File type required for calls to routines in Aux
  
!    package Aux renames Ada.Wide_Wide_Text_IO.Float_Aux;
  
     ---------
     -- Get --
--- 29,142 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Interfaces;
+ with Ada.Wide_Wide_Text_IO.Fixed_Aux;
  with Ada.Wide_Wide_Text_IO.Float_Aux;
! with System.Img_Fixed_32; use System.Img_Fixed_32;
! with System.Img_Fixed_64; use System.Img_Fixed_64;
! with System.Val_Fixed_32; use System.Val_Fixed_32;
! with System.Val_Fixed_64; use System.Val_Fixed_64;
! with System.Val_LLF;      use System.Val_LLF;
! with System.WCh_Con;      use System.WCh_Con;
! with System.WCh_WtS;      use System.WCh_WtS;
  
  package body Ada.Wide_Wide_Text_IO.Fixed_IO is
  
!    --  Note: we still use the floating-point I/O routines for types whose small
!    --  is not the ratio of two sufficiently small integers. This will result in
!    --  inaccuracies for fixed point types that require more precision than is
!    --  available in Long_Long_Float.
  
!    subtype Int32 is Interfaces.Integer_32; use type Int32;
!    subtype Int64 is Interfaces.Integer_64; use type Int64;
! 
!    package Aux32 is new
!      Ada.Wide_Wide_Text_IO.Fixed_Aux (Int32, Scan_Fixed32, Set_Image_Fixed32);
! 
!    package Aux64 is new
!      Ada.Wide_Wide_Text_IO.Fixed_Aux (Int64, Scan_Fixed64, Set_Image_Fixed64);
! 
!    package Aux_Long_Long_Float is new
!      Ada.Wide_Wide_Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
! 
!    --  Throughout this generic body, we distinguish between the case where type
!    --  Int32 is OK and where type Int64 is OK. These boolean constants are used
!    --  to test for this, such that only code for the relevant case is included
!    --  in the instance; that's why the computation of their value must be fully
!    --  static (although it is not a static expressions in the RM sense).
! 
!    OK_Get_32 : constant Boolean :=
!      Num'Base'Object_Size <= 32
!        and then
!          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
!            or else
!           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**31)
!            or else
!           (Num'Small_Numerator <= 2**27
!             and then Num'Small_Denominator <= 2**27));
!    --  These conditions are derived from the prerequisites of System.Value_F
! 
!    OK_Put_32 : constant Boolean :=
!      Num'Base'Object_Size <= 32
!        and then
!          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
!            or else
!           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**31)
!            or else
!           (Num'Small_Numerator < Num'Small_Denominator
!             and then Num'Small_Denominator <= 2**27)
!            or else
!           (Num'Small_Denominator < Num'Small_Numerator
!             and then Num'Small_Numerator <= 2**25));
!    --  These conditions are derived from the prerequisites of System.Image_F
! 
!    OK_Get_64 : constant Boolean :=
!      Num'Base'Object_Size <= 64
!        and then
!          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
!            or else
!           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**63)
!            or else
!           (Num'Small_Numerator <= 2**59
!             and then Num'Small_Denominator <= 2**59));
!    --  These conditions are derived from the prerequisites of System.Value_F
! 
!    OK_Put_64 : constant Boolean :=
!      Num'Base'Object_Size <= 64
!        and then
!          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
!            or else
!           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**63)
!            or else
!           (Num'Small_Numerator < Num'Small_Denominator
!             and then Num'Small_Denominator <= 2**59)
!            or else
!           (Num'Small_Denominator < Num'Small_Numerator
!             and then Num'Small_Numerator <= 2**53));
!    --  These conditions are derived from the prerequisites of System.Image_F
! 
!    E : constant Natural := 63 - 32 * Boolean'Pos (OK_Put_32);
!    --  T'Size - 1 for the selected Int{32,64}
! 
!    F0 : constant Natural := 0;
!    F1 : constant Natural :=
!           F0 + 18 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F0) >= 1.0E+18);
!    F2 : constant Natural :=
!           F1 +  9 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F1) >= 1.0E+9);
!    F3 : constant Natural :=
!           F2 +  5 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F2) >= 1.0E+5);
!    F4 : constant Natural :=
!           F3 +  3 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F3) >= 1.0E+3);
!    F5 : constant Natural :=
!           F4 +  2 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F4) >= 1.0E+2);
!    F6 : constant Natural :=
!           F5 +  1 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F5) >= 1.0E+1);
!    --  Binary search for the number of digits - 1 before the decimal point of
!    --  the product 2.0**E * Num'Small.
! 
!    For0 : constant Natural := 2 + F6;
!    --  Fore value for the fixed point type whose mantissa is Int{32,64} and
!    --  whose small is Num'Small.
  
     ---------
     -- Get --
*************** package body Ada.Wide_Wide_Text_IO.Fixed
*** 49,56 ****
        Item  : out Num;
        Width : Field := 0)
     is
     begin
!       Aux.Get (TFT (File), Long_Long_Float (Item), Width);
  
     exception
        when Constraint_Error => raise Data_Error;
--- 147,168 ----
        Item  : out Num;
        Width : Field := 0)
     is
+       pragma Unsuppress (Range_Check);
+ 
     begin
!       if OK_Get_32 then
!          Item := Num'Fixed_Value
!                    (Aux32.Get (File, Width,
!                                -Num'Small_Numerator,
!                                -Num'Small_Denominator));
!       elsif OK_Get_64 then
!          Item := Num'Fixed_Value
!                    (Aux64.Get (File, Width,
!                                -Num'Small_Numerator,
!                                -Num'Small_Denominator));
!       else
!          Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
!       end if;
  
     exception
        when Constraint_Error => raise Data_Error;
*************** package body Ada.Wide_Wide_Text_IO.Fixed
*** 61,67 ****
        Width : Field := 0)
     is
     begin
!       Get (Current_Input, Item, Width);
     end Get;
  
     procedure Get
--- 173,179 ----
        Width : Field := 0)
     is
     begin
!       Get (Current_In, Item, Width);
     end Get;
  
     procedure Get
*************** package body Ada.Wide_Wide_Text_IO.Fixed
*** 69,74 ****
--- 181,188 ----
        Item : out Num;
        Last : out Positive)
     is
+       pragma Unsuppress (Range_Check);
+ 
        S : constant String := Wide_Wide_String_To_String (From, WCEM_Upper);
        --  String on which we do the actual conversion. Note that the method
        --  used for wide character encoding is irrelevant, since if there is
*************** package body Ada.Wide_Wide_Text_IO.Fixed
*** 76,82 ****
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       Aux.Gets (S, Long_Long_Float (Item), Last);
  
     exception
        when Constraint_Error => raise Data_Error;
--- 190,208 ----
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       if OK_Get_32 then
!          Item := Num'Fixed_Value
!                    (Aux32.Gets (S, Last,
!                                 -Num'Small_Numerator,
!                                 -Num'Small_Denominator));
!       elsif OK_Get_64 then
!          Item := Num'Fixed_Value
!                    (Aux64.Gets (S, Last,
!                                 -Num'Small_Numerator,
!                                 -Num'Small_Denominator));
!       else
!          Aux_Long_Long_Float.Gets (S, Long_Long_Float (Item), Last);
!       end if;
  
     exception
        when Constraint_Error => raise Data_Error;
*************** package body Ada.Wide_Wide_Text_IO.Fixed
*** 94,100 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       Aux.Put (TFT (File), Long_Long_Float (Item), Fore, Aft, Exp);
     end Put;
  
     procedure Put
--- 220,237 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       if OK_Put_32 then
!          Aux32.Put (File, Int32'Integer_Value (Item), Fore, Aft, Exp,
!                     -Num'Small_Numerator, -Num'Small_Denominator,
!                     For0, Num'Aft);
!       elsif OK_Put_64 then
!          Aux64.Put (File, Int64'Integer_Value (Item), Fore, Aft, Exp,
!                     -Num'Small_Numerator, -Num'Small_Denominator,
!                     For0, Num'Aft);
!       else
!          Aux_Long_Long_Float.Put
!            (File, Long_Long_Float (Item), Fore, Aft, Exp);
!       end if;
     end Put;
  
     procedure Put
*************** package body Ada.Wide_Wide_Text_IO.Fixed
*** 104,110 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Output, Item, Fore, Aft, Exp);
     end Put;
  
     procedure Put
--- 241,247 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Out, Item, Fore, Aft, Exp);
     end Put;
  
     procedure Put
*************** package body Ada.Wide_Wide_Text_IO.Fixed
*** 116,122 ****
        S : String (To'First .. To'Last);
  
     begin
!       Aux.Puts (S, Long_Long_Float (Item), Aft, Exp);
  
        for J in S'Range loop
           To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
--- 253,269 ----
        S : String (To'First .. To'Last);
  
     begin
!       if OK_Put_32 then
!          Aux32.Puts (S, Int32'Integer_Value (Item), Aft, Exp,
!                      -Num'Small_Numerator, -Num'Small_Denominator,
!                      For0, Num'Aft);
!       elsif OK_Put_64 then
!          Aux64.Puts (S, Int64'Integer_Value (Item), Aft, Exp,
!                      -Num'Small_Numerator, -Num'Small_Denominator,
!                      For0, Num'Aft);
!       else
!          Aux_Long_Long_Float.Puts (S, Long_Long_Float (Item), Aft, Exp);
!       end if;
  
        for J in S'Range loop
           To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztfiio__128.adb gcc-11.1.0/gcc/ada/libgnat/a-ztfiio__128.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztfiio__128.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-ztfiio__128.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,327 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --        A D A . W I D E _ W I D E _ T E X T _ I O . F I X E D _ I O       --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Interfaces;
+ with Ada.Wide_Wide_Text_IO.Fixed_Aux;
+ with Ada.Wide_Wide_Text_IO.Float_Aux;
+ with System.Img_Fixed_32;  use System.Img_Fixed_32;
+ with System.Img_Fixed_64;  use System.Img_Fixed_64;
+ with System.Img_Fixed_128; use System.Img_Fixed_128;
+ with System.Val_Fixed_32;  use System.Val_Fixed_32;
+ with System.Val_Fixed_64;  use System.Val_Fixed_64;
+ with System.Val_Fixed_128; use System.Val_Fixed_128;
+ with System.Val_LLF;       use System.Val_LLF;
+ with System.WCh_Con;       use System.WCh_Con;
+ with System.WCh_WtS;       use System.WCh_WtS;
+ 
+ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
+ 
+    --  Note: we still use the floating-point I/O routines for types whose small
+    --  is not the ratio of two sufficiently small integers. This will result in
+    --  inaccuracies for fixed point types that require more precision than is
+    --  available in Long_Long_Float.
+ 
+    subtype Int32  is Interfaces.Integer_32;  use type Int32;
+    subtype Int64  is Interfaces.Integer_64;  use type Int64;
+    subtype Int128 is Interfaces.Integer_128; use type Int128;
+ 
+    package Aux32 is new
+      Ada.Wide_Wide_Text_IO.Fixed_Aux (Int32, Scan_Fixed32, Set_Image_Fixed32);
+ 
+    package Aux64 is new
+      Ada.Wide_Wide_Text_IO.Fixed_Aux (Int64, Scan_Fixed64, Set_Image_Fixed64);
+ 
+    package Aux128 is new
+      Ada.Wide_Wide_Text_IO.Fixed_Aux
+       (Int128, Scan_Fixed128, Set_Image_Fixed128);
+ 
+    package Aux_Long_Long_Float is new
+      Ada.Wide_Wide_Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
+ 
+    --  Throughout this generic body, we distinguish between the case where type
+    --  Int32 is OK, where type Int64 is OK and where type Int128 is OK. These
+    --  boolean constants are used to test for this, such that only code for the
+    --  relevant case is included in the instance; that's why the computation of
+    --  their value must be fully static (although it is not a static expression
+    --  in the RM sense).
+ 
+    OK_Get_32 : constant Boolean :=
+      Num'Base'Object_Size <= 32
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**31)
+            or else
+           (Num'Small_Numerator <= 2**27
+             and then Num'Small_Denominator <= 2**27));
+    --  These conditions are derived from the prerequisites of System.Value_F
+ 
+    OK_Put_32 : constant Boolean :=
+      Num'Base'Object_Size <= 32
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**31)
+            or else
+           (Num'Small_Numerator < Num'Small_Denominator
+             and then Num'Small_Denominator <= 2**27)
+            or else
+           (Num'Small_Denominator < Num'Small_Numerator
+             and then Num'Small_Numerator <= 2**25));
+    --  These conditions are derived from the prerequisites of System.Image_F
+ 
+    OK_Get_64 : constant Boolean :=
+      Num'Base'Object_Size <= 64
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**63)
+            or else
+           (Num'Small_Numerator <= 2**59
+             and then Num'Small_Denominator <= 2**59));
+    --  These conditions are derived from the prerequisites of System.Value_F
+ 
+    OK_Put_64 : constant Boolean :=
+      Num'Base'Object_Size <= 64
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**63)
+            or else
+           (Num'Small_Numerator < Num'Small_Denominator
+             and then Num'Small_Denominator <= 2**59)
+            or else
+           (Num'Small_Denominator < Num'Small_Numerator
+             and then Num'Small_Numerator <= 2**53));
+    --  These conditions are derived from the prerequisites of System.Image_F
+ 
+    OK_Get_128 : constant Boolean :=
+      Num'Base'Object_Size <= 128
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**127)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**127)
+            or else
+           (Num'Small_Numerator <= 2**123
+             and then Num'Small_Denominator <= 2**123));
+    --  These conditions are derived from the prerequisites of System.Value_F
+ 
+    OK_Put_128 : constant Boolean :=
+      Num'Base'Object_Size <= 128
+        and then
+          ((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**127)
+            or else
+           (Num'Small_Denominator = 1 and then Num'Small_Numerator <= 2**127)
+            or else
+           (Num'Small_Numerator < Num'Small_Denominator
+             and then Num'Small_Denominator <= 2**123)
+            or else
+           (Num'Small_Denominator < Num'Small_Numerator
+             and then Num'Small_Numerator <= 2**122));
+    --  These conditions are derived from the prerequisites of System.Image_F
+ 
+    E : constant Natural :=
+          127 - 64 * Boolean'Pos (OK_Put_64) - 32 * Boolean'Pos (OK_Put_32);
+    --  T'Size - 1 for the selected Int{32,64,128}
+ 
+    F0 : constant Natural := 0;
+    F1 : constant Natural :=
+           F0 + 38 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F0) >= 1.0E+38);
+    F2 : constant Natural :=
+           F1 + 19 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F1) >= 1.0E+19);
+    F3 : constant Natural :=
+           F2 +  9 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F2) >= 1.0E+9);
+    F4 : constant Natural :=
+           F3 +  5 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F3) >= 1.0E+5);
+    F5 : constant Natural :=
+           F4 +  3 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F4) >= 1.0E+3);
+    F6 : constant Natural :=
+           F5 +  2 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F5) >= 1.0E+2);
+    F7 : constant Natural :=
+           F6 +  1 * Boolean'Pos (2.0**E * Num'Small * 10.0**(-F6) >= 1.0E+1);
+    --  Binary search for the number of digits - 1 before the decimal point of
+    --  the product 2.0**E * Num'Small.
+ 
+    For0 : constant Natural := 2 + F7;
+    --  Fore value for the fixed point type whose mantissa is Int{32,64,128} and
+    --  whose small is Num'Small.
+ 
+    ---------
+    -- Get --
+    ---------
+ 
+    procedure Get
+      (File  : File_Type;
+       Item  : out Num;
+       Width : Field := 0)
+    is
+       pragma Unsuppress (Range_Check);
+ 
+    begin
+       if OK_Get_32 then
+          Item := Num'Fixed_Value
+                    (Aux32.Get (File, Width,
+                                -Num'Small_Numerator,
+                                -Num'Small_Denominator));
+       elsif OK_Get_64 then
+          Item := Num'Fixed_Value
+                    (Aux64.Get (File, Width,
+                                -Num'Small_Numerator,
+                                -Num'Small_Denominator));
+       elsif OK_Get_128 then
+          Item := Num'Fixed_Value
+                    (Aux128.Get (File, Width,
+                                 -Num'Small_Numerator,
+                                 -Num'Small_Denominator));
+       else
+          Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    procedure Get
+      (Item  : out Num;
+       Width : Field := 0)
+    is
+    begin
+       Get (Current_In, Item, Width);
+    end Get;
+ 
+    procedure Get
+      (From : Wide_Wide_String;
+       Item : out Num;
+       Last : out Positive)
+    is
+       pragma Unsuppress (Range_Check);
+ 
+       S : constant String := Wide_Wide_String_To_String (From, WCEM_Upper);
+       --  String on which we do the actual conversion. Note that the method
+       --  used for wide character encoding is irrelevant, since if there is
+       --  a character outside the Standard.Character range then the call to
+       --  Aux.Gets will raise Data_Error in any case.
+ 
+    begin
+       if OK_Get_32 then
+          Item := Num'Fixed_Value
+                    (Aux32.Gets (S, Last,
+                                 -Num'Small_Numerator,
+                                 -Num'Small_Denominator));
+       elsif OK_Get_64 then
+          Item := Num'Fixed_Value
+                    (Aux64.Gets (S, Last,
+                                 -Num'Small_Numerator,
+                                 -Num'Small_Denominator));
+       elsif OK_Get_128 then
+          Item := Num'Fixed_Value
+                    (Aux128.Gets (S, Last,
+                                  -Num'Small_Numerator,
+                                  -Num'Small_Denominator));
+       else
+          Aux_Long_Long_Float.Gets (S, Long_Long_Float (Item), Last);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    ---------
+    -- Put --
+    ---------
+ 
+    procedure Put
+      (File : File_Type;
+       Item : Num;
+       Fore : Field := Default_Fore;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+    begin
+       if OK_Put_32 then
+          Aux32.Put (File, Int32'Integer_Value (Item), Fore, Aft, Exp,
+                     -Num'Small_Numerator, -Num'Small_Denominator,
+                     For0, Num'Aft);
+       elsif OK_Put_64 then
+          Aux64.Put (File, Int64'Integer_Value (Item), Fore, Aft, Exp,
+                     -Num'Small_Numerator, -Num'Small_Denominator,
+                     For0, Num'Aft);
+       elsif OK_Put_128 then
+          Aux128.Put (File, Int128'Integer_Value (Item), Fore, Aft, Exp,
+                      -Num'Small_Numerator, -Num'Small_Denominator,
+                      For0, Num'Aft);
+       else
+          Aux_Long_Long_Float.Put
+            (File, Long_Long_Float (Item), Fore, Aft, Exp);
+       end if;
+    end Put;
+ 
+    procedure Put
+      (Item : Num;
+       Fore : Field := Default_Fore;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+    begin
+       Put (Current_Out, Item, Fore, Aft, Exp);
+    end Put;
+ 
+    procedure Put
+      (To   : out Wide_Wide_String;
+       Item : Num;
+       Aft  : Field := Default_Aft;
+       Exp  : Field := Default_Exp)
+    is
+       S : String (To'First .. To'Last);
+ 
+    begin
+       if OK_Put_32 then
+          Aux32.Puts (S, Int32'Integer_Value (Item), Aft, Exp,
+                      -Num'Small_Numerator, -Num'Small_Denominator,
+                      For0, Num'Aft);
+       elsif OK_Put_64 then
+          Aux64.Puts (S, Int64'Integer_Value (Item), Aft, Exp,
+                      -Num'Small_Numerator, -Num'Small_Denominator,
+                      For0, Num'Aft);
+       elsif OK_Put_128 then
+          Aux128.Puts (S, Int128'Integer_Value (Item), Aft, Exp,
+                       -Num'Small_Numerator, -Num'Small_Denominator,
+                       For0, Num'Aft);
+       else
+          Aux_Long_Long_Float.Puts (S, Long_Long_Float (Item), Aft, Exp);
+       end if;
+ 
+       for J in S'Range loop
+          To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
+       end loop;
+    end Put;
+ 
+ end Ada.Wide_Wide_Text_IO.Fixed_IO;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztflau.adb gcc-11.1.0/gcc/ada/libgnat/a-ztflau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztflau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztflau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,38 ****
  
  with Ada.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
  
! with System.Img_Real;  use System.Img_Real;
! with System.Val_Real;  use System.Val_Real;
  
  package body Ada.Wide_Wide_Text_IO.Float_Aux is
  
--- 31,37 ----
  
  with Ada.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
  
! with System.Img_Real; use System.Img_Real;
  
  package body Ada.Wide_Wide_Text_IO.Float_Aux is
  
*************** package body Ada.Wide_Wide_Text_IO.Float
*** 42,53 ****
  
     procedure Get
       (File  : File_Type;
!       Item  : out Long_Long_Float;
        Width : Field)
     is
        Buf  : String (1 .. Field'Last);
        Stop : Integer := 0;
!       Ptr  : aliased Integer := 1;
  
     begin
        if Width /= 0 then
--- 41,52 ----
  
     procedure Get
       (File  : File_Type;
!       Item  : out Num;
        Width : Field)
     is
        Buf  : String (1 .. Field'Last);
        Stop : Integer := 0;
!       Ptr  : aliased Integer;
  
     begin
        if Width /= 0 then
*************** package body Ada.Wide_Wide_Text_IO.Float
*** 55,64 ****
           String_Skip (Buf, Ptr);
        else
           Load_Real (File, Buf, Stop);
        end if;
  
!       Item := Scan_Real (Buf, Ptr'Access, Stop);
! 
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
     end Get;
  
--- 54,63 ----
           String_Skip (Buf, Ptr);
        else
           Load_Real (File, Buf, Stop);
+          Ptr := 1;
        end if;
  
!       Item := Scan (Buf, Ptr'Access, Stop);
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
     end Get;
  
*************** package body Ada.Wide_Wide_Text_IO.Float
*** 68,204 ****
  
     procedure Gets
       (From : String;
!       Item : out Long_Long_Float;
        Last : out Positive)
     is
        Pos : aliased Integer;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan_Real (From, Pos'Access, From'Last);
        Last := Pos - 1;
  
     exception
!       when Constraint_Error =>
!          raise Data_Error;
     end Gets;
  
-    ---------------
-    -- Load_Real --
-    ---------------
- 
-    procedure Load_Real
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural)
-    is
-       Loaded   : Boolean;
- 
-    begin
-       --  Skip initial blanks and load possible sign
- 
-       Load_Skip (File);
-       Load (File, Buf, Ptr, '+', '-');
- 
-       --  Case of .nnnn
- 
-       Load (File, Buf, Ptr, '.', Loaded);
- 
-       if Loaded then
-          Load_Digits (File, Buf, Ptr, Loaded);
- 
-          --  Hopeless junk if no digits loaded
- 
-          if not Loaded then
-             return;
-          end if;
- 
-       --  Otherwise must have digits to start
- 
-       else
-          Load_Digits (File, Buf, Ptr, Loaded);
- 
-          --  Hopeless junk if no digits loaded
- 
-          if not Loaded then
-             return;
-          end if;
- 
-          --  Deal with based case. We recognize either the standard '#' or the
-          --  allowed alternative replacement ':' (see RM J.2(3)).
- 
-          Load (File, Buf, Ptr, '#', ':', Loaded);
- 
-          if Loaded then
- 
-             --  Case of nnn#.xxx#
- 
-             Load (File, Buf, Ptr, '.', Loaded);
- 
-             if Loaded then
-                Load_Extended_Digits (File, Buf, Ptr);
-                Load (File, Buf, Ptr, '#', ':');
- 
-             --  Case of nnn#xxx.[xxx]# or nnn#xxx#
- 
-             else
-                Load_Extended_Digits (File, Buf, Ptr);
-                Load (File, Buf, Ptr, '.', Loaded);
- 
-                if Loaded then
-                   Load_Extended_Digits (File, Buf, Ptr);
-                end if;
- 
-                --  As usual, it seems strange to allow mixed base characters,
-                --  but that is what ACVC tests expect, see CE3804M, case (3).
- 
-                Load (File, Buf, Ptr, '#', ':');
-             end if;
- 
-          --  Case of nnn.[nnn] or nnn
- 
-          else
-             --  Prevent the potential processing of '.' in cases where the
-             --  initial digits have a trailing underscore.
- 
-             if Buf (Ptr) = '_' then
-                return;
-             end if;
- 
-             Load (File, Buf, Ptr, '.', Loaded);
- 
-             if Loaded then
-                Load_Digits (File, Buf, Ptr);
-             end if;
-          end if;
-       end if;
- 
-       --  Deal with exponent
- 
-       Load (File, Buf, Ptr, 'E', 'e', Loaded);
- 
-       if Loaded then
-          Load (File, Buf, Ptr, '+', '-');
-          Load_Digits (File, Buf, Ptr);
-       end if;
-    end Load_Real;
- 
     ---------
     -- Put --
     ---------
  
     procedure Put
       (File : File_Type;
!       Item : Long_Long_Float;
        Fore : Field;
        Aft  : Field;
        Exp  : Field)
     is
!       Buf : String (1 .. Field'Last);
        Ptr : Natural := 0;
  
     begin
!       Set_Image_Real (Item, Buf, Ptr, Fore, Aft, Exp);
        Put_Item (File, Buf (1 .. Ptr));
     end Put;
  
--- 67,102 ----
  
     procedure Gets
       (From : String;
!       Item : out Num;
        Last : out Positive)
     is
        Pos : aliased Integer;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan (From, Pos'Access, From'Last);
        Last := Pos - 1;
  
     exception
!       when Constraint_Error => raise Data_Error;
     end Gets;
  
     ---------
     -- Put --
     ---------
  
     procedure Put
       (File : File_Type;
!       Item : Num;
        Fore : Field;
        Aft  : Field;
        Exp  : Field)
     is
!       Buf : String (1 .. Max_Real_Image_Length);
        Ptr : Natural := 0;
  
     begin
!       Set_Image_Real (Long_Long_Float (Item), Buf, Ptr, Fore, Aft, Exp);
        Put_Item (File, Buf (1 .. Ptr));
     end Put;
  
*************** package body Ada.Wide_Wide_Text_IO.Float
*** 208,222 ****
  
     procedure Puts
       (To   : out String;
!       Item : Long_Long_Float;
        Aft  : Field;
        Exp  : Field)
     is
!       Buf    : String (1 .. Field'Last);
!       Ptr    : Natural := 0;
  
     begin
!       Set_Image_Real (Item, Buf, Ptr, Fore => 1, Aft => Aft, Exp => Exp);
  
        if Ptr > To'Length then
           raise Layout_Error;
--- 106,121 ----
  
     procedure Puts
       (To   : out String;
!       Item : Num;
        Aft  : Field;
        Exp  : Field)
     is
!       Buf : String (1 .. Max_Real_Image_Length);
!       Ptr : Natural := 0;
  
     begin
!       Set_Image_Real
!         (Long_Long_Float (Item), Buf, Ptr, Fore => 1, Aft => Aft, Exp => Exp);
  
        if Ptr > To'Length then
           raise Layout_Error;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztflau.ads gcc-11.1.0/gcc/ada/libgnat/a-ztflau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ztflau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztflau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,71 ****
  
  --  This package contains the routines for Ada.Wide_Wide_Text_IO.Float_IO that
  --  are shared among separate instantiations of this package. The routines
! --  in this package are identical semantically to those in Float_IO itself,
! --  except that generic parameter Num has been replaced by Long_Long_Float,
! --  and the default parameters have been removed because they are supplied
  --  explicitly by the calls from within the generic template. Also used by
! --  Ada.Wide_Wide_Text_IO.Fixed_IO, and by Ada.Wide_Wide_Text_IO.Decimal_IO.
  
! private package Ada.Wide_Wide_Text_IO.Float_Aux is
  
!    procedure Load_Real
!      (File : File_Type;
!       Buf  : out String;
!       Ptr  : in out Natural);
!    --  This is an auxiliary routine that is used to load a possibly signed
!    --  real literal value from the input file into Buf, starting at Ptr + 1.
  
     procedure Get
       (File  : File_Type;
!       Item  : out Long_Long_Float;
        Width : Field);
  
-    procedure Gets
-      (From : String;
-       Item : out Long_Long_Float;
-       Last : out Positive);
- 
     procedure Put
       (File : File_Type;
!       Item : Long_Long_Float;
        Fore : Field;
        Aft  : Field;
        Exp  : Field);
  
     procedure Puts
       (To   : out String;
!       Item : Long_Long_Float;
        Aft  : Field;
        Exp  : Field);
  
--- 31,72 ----
  
  --  This package contains the routines for Ada.Wide_Wide_Text_IO.Float_IO that
  --  are shared among separate instantiations of this package. The routines
! --  in this package are identical semantically to those in Float_IO, except
! --  that the default parameters have been removed because they are supplied
  --  explicitly by the calls from within the generic template. Also used by
! --  Ada.Wide_Wide_Text_IO.Fixed_IO and by Ada.Wide_Wide_Text_IO.Decimal_IO.
  
! private generic
  
!    type Num is digits <>;
! 
!    with function Scan
!      (Str : String;
!       Ptr : not null access Integer;
!       Max : Integer) return Num;
! 
! package Ada.Wide_Wide_Text_IO.Float_Aux is
  
     procedure Get
       (File  : File_Type;
!       Item  : out Num;
        Width : Field);
  
     procedure Put
       (File : File_Type;
!       Item : Num;
        Fore : Field;
        Aft  : Field;
        Exp  : Field);
  
+    procedure Gets
+      (From : String;
+       Item : out Num;
+       Last : out Positive);
+ 
     procedure Puts
       (To   : out String;
!       Item : Num;
        Aft  : Field;
        Exp  : Field);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztflio.adb gcc-11.1.0/gcc/ada/libgnat/a-ztflio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztflio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztflio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,44 ****
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Wide_Text_IO.Float_Aux;
! with System.WCh_Con; use System.WCh_Con;
! with System.WCh_WtS; use System.WCh_WtS;
  
  package body Ada.Wide_Wide_Text_IO.Float_IO is
  
!    subtype TFT is Ada.Wide_Wide_Text_IO.File_Type;
!    --  File type required for calls to routines in Aux
  
!    package Aux renames Ada.Wide_Wide_Text_IO.Float_Aux;
  
     ---------
     -- Get --
--- 30,60 ----
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Wide_Text_IO.Float_Aux;
! with System.Val_Flt;  use System.Val_Flt;
! with System.Val_LFlt; use System.Val_LFlt;
! with System.Val_LLF;  use System.Val_LLF;
! with System.WCh_Con;  use System.WCh_Con;
! with System.WCh_WtS;  use System.WCh_WtS;
  
  package body Ada.Wide_Wide_Text_IO.Float_IO is
  
!    package Aux_Float is new
!       Ada.Wide_Wide_Text_IO.Float_Aux (Float, Scan_Float);
  
!    package Aux_Long_Float is new
!       Ada.Wide_Wide_Text_IO.Float_Aux (Long_Float, Scan_Long_Float);
! 
!    package Aux_Long_Long_Float is new
!       Ada.Wide_Wide_Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
! 
!    --  Throughout this generic body, we distinguish between the case where type
!    --  Float is OK, where type Long_Float is OK and where type Long_Long_Float
!    --  is needed. These boolean constants are used to test for this, such that
!    --  only code for the relevant case is included in the instance.
! 
!    OK_Float : constant Boolean := Num'Base'Digits <= Float'Digits;
! 
!    OK_Long_Float : constant Boolean := Num'Base'Digits <= Long_Float'Digits;
  
     ---------
     -- Get --
*************** package body Ada.Wide_Wide_Text_IO.Float
*** 49,56 ****
        Item  : out Num;
        Width : Field := 0)
     is
     begin
!       Aux.Get (TFT (File), Long_Long_Float (Item), Width);
  
     exception
        when Constraint_Error => raise Data_Error;
--- 65,89 ----
        Item  : out Num;
        Width : Field := 0)
     is
+       pragma Unsuppress (Range_Check);
+ 
     begin
!       if OK_Float then
!          Aux_Float.Get (File, Float (Item), Width);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Get (File, Long_Float (Item), Width);
!       else
!          Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
!       end if;
! 
!       --  In the case where the type is unconstrained (e.g. Standard'Float),
!       --  the above conversion may result in an infinite value, which is
!       --  normally fine for a conversion, but in this case, we want to treat
!       --  that as a data error.
! 
!       if not Item'Valid then
!          raise Data_Error;
!       end if;
  
     exception
        when Constraint_Error => raise Data_Error;
*************** package body Ada.Wide_Wide_Text_IO.Float
*** 61,67 ****
        Width : Field := 0)
     is
     begin
!       Get (Current_Input, Item, Width);
     end Get;
  
     procedure Get
--- 94,100 ----
        Width : Field := 0)
     is
     begin
!       Get (Current_In, Item, Width);
     end Get;
  
     procedure Get
*************** package body Ada.Wide_Wide_Text_IO.Float
*** 69,74 ****
--- 102,109 ----
        Item : out Num;
        Last : out Positive)
     is
+       pragma Unsuppress (Range_Check);
+ 
        S : constant String := Wide_Wide_String_To_String (From, WCEM_Upper);
        --  String on which we do the actual conversion. Note that the method
        --  used for wide character encoding is irrelevant, since if there is
*************** package body Ada.Wide_Wide_Text_IO.Float
*** 76,82 ****
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       Aux.Gets (S, Long_Long_Float (Item), Last);
  
     exception
        when Constraint_Error => raise Data_Error;
--- 111,132 ----
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       if OK_Float then
!          Aux_Float.Gets (S, Float (Item), Last);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Gets (S, Long_Float (Item), Last);
!       else
!          Aux_Long_Long_Float.Gets (S, Long_Long_Float (Item), Last);
!       end if;
! 
!       --  In the case where the type is unconstrained (e.g. Standard'Float),
!       --  the above conversion may result in an infinite value, which is
!       --  normally fine for a conversion, but in this case, we want to treat
!       --  that as a data error.
! 
!       if not Item'Valid then
!          raise Data_Error;
!       end if;
  
     exception
        when Constraint_Error => raise Data_Error;
*************** package body Ada.Wide_Wide_Text_IO.Float
*** 94,100 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       Aux.Put (TFT (File), Long_Long_Float (Item), Fore, Aft, Exp);
     end Put;
  
     procedure Put
--- 144,157 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       if OK_Float then
!          Aux_Float.Put (File, Float (Item), Fore, Aft, Exp);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Put (File, Long_Float (Item), Fore, Aft, Exp);
!       else
!          Aux_Long_Long_Float.Put
!            (File, Long_Long_Float (Item), Fore, Aft, Exp);
!       end if;
     end Put;
  
     procedure Put
*************** package body Ada.Wide_Wide_Text_IO.Float
*** 104,110 ****
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Output, Item, Fore, Aft, Exp);
     end Put;
  
     procedure Put
--- 161,167 ----
        Exp  : Field := Default_Exp)
     is
     begin
!       Put (Current_Out, Item, Fore, Aft, Exp);
     end Put;
  
     procedure Put
*************** package body Ada.Wide_Wide_Text_IO.Float
*** 116,122 ****
        S : String (To'First .. To'Last);
  
     begin
!       Aux.Puts (S, Long_Long_Float (Item), Aft, Exp);
  
        for J in S'Range loop
           To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
--- 173,185 ----
        S : String (To'First .. To'Last);
  
     begin
!       if OK_Float then
!          Aux_Float.Puts (S, Float (Item), Aft, Exp);
!       elsif OK_Long_Float then
!          Aux_Long_Float.Puts (S, Long_Float (Item), Aft, Exp);
!       else
!          Aux_Long_Long_Float.Puts (S, Long_Long_Float (Item), Aft, Exp);
!       end if;
  
        for J in S'Range loop
           To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztgeau.adb gcc-11.1.0/gcc/ada/libgnat/a-ztgeau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztgeau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztgeau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Wide_Wide_Text_IO.Gener
*** 348,353 ****
--- 348,507 ----
        Load_Extended_Digits (File, Buf, Ptr, Junk);
     end Load_Extended_Digits;
  
+    ------------------
+    -- Load_Integer --
+    ------------------
+ 
+    procedure Load_Integer
+      (File : File_Type;
+       Buf  : out String;
+       Ptr  : in out Natural)
+    is
+       Hash_Loc : Natural;
+       Loaded   : Boolean;
+ 
+    begin
+       Load_Skip (File);
+ 
+       --  Note: it is a bit strange to allow a minus sign here, but it seems
+       --  consistent with the general behavior expected by the ACVC tests
+       --  which is to scan past junk and then signal data error, see ACVC
+       --  test CE3704F, case (6), which is for signed integer exponents,
+       --  which seems a similar case.
+ 
+       Load (File, Buf, Ptr, '+', '-');
+       Load_Digits (File, Buf, Ptr, Loaded);
+ 
+       if Loaded then
+ 
+          --  Deal with based literal. We recognize either the standard '#' or
+          --  the allowed alternative replacement ':' (see RM J.2(3)).
+ 
+          Load (File, Buf, Ptr, '#', ':', Loaded);
+ 
+          if Loaded then
+             Hash_Loc := Ptr;
+             Load_Extended_Digits (File, Buf, Ptr);
+             Load (File, Buf, Ptr, Buf (Hash_Loc));
+          end if;
+ 
+          --  Deal with exponent
+ 
+          Load (File, Buf, Ptr, 'E', 'e', Loaded);
+ 
+          if Loaded then
+ 
+             --  Note: it is strange to allow a minus sign, since the syntax
+             --  does not, but that is what ACVC test CE3704F, case (6) wants
+             --  for the signed case, and there seems no good reason to treat
+             --  exponents differently for the signed and unsigned cases.
+ 
+             Load (File, Buf, Ptr, '+', '-');
+             Load_Digits (File, Buf, Ptr);
+          end if;
+       end if;
+    end Load_Integer;
+ 
+    ---------------
+    -- Load_Real --
+    ---------------
+ 
+    procedure Load_Real
+      (File : File_Type;
+       Buf  : out String;
+       Ptr  : in out Natural)
+    is
+       Loaded   : Boolean;
+ 
+    begin
+       --  Skip initial blanks and load possible sign
+ 
+       Load_Skip (File);
+       Load (File, Buf, Ptr, '+', '-');
+ 
+       --  Case of .nnnn
+ 
+       Load (File, Buf, Ptr, '.', Loaded);
+ 
+       if Loaded then
+          Load_Digits (File, Buf, Ptr, Loaded);
+ 
+          --  Hopeless junk if no digits loaded
+ 
+          if not Loaded then
+             return;
+          end if;
+ 
+       --  Otherwise must have digits to start
+ 
+       else
+          Load_Digits (File, Buf, Ptr, Loaded);
+ 
+          --  Hopeless junk if no digits loaded
+ 
+          if not Loaded then
+             return;
+          end if;
+ 
+          --  Deal with based case. We recognize either the standard '#' or the
+          --  allowed alternative replacement ':' (see RM J.2(3)).
+ 
+          Load (File, Buf, Ptr, '#', ':', Loaded);
+ 
+          if Loaded then
+ 
+             --  Case of nnn#.xxx#
+ 
+             Load (File, Buf, Ptr, '.', Loaded);
+ 
+             if Loaded then
+                Load_Extended_Digits (File, Buf, Ptr);
+                Load (File, Buf, Ptr, '#', ':');
+ 
+             --  Case of nnn#xxx.[xxx]# or nnn#xxx#
+ 
+             else
+                Load_Extended_Digits (File, Buf, Ptr);
+                Load (File, Buf, Ptr, '.', Loaded);
+ 
+                if Loaded then
+                   Load_Extended_Digits (File, Buf, Ptr);
+                end if;
+ 
+                --  As usual, it seems strange to allow mixed base characters,
+                --  but that is what ACVC tests expect, see CE3804M, case (3).
+ 
+                Load (File, Buf, Ptr, '#', ':');
+             end if;
+ 
+          --  Case of nnn.[nnn] or nnn
+ 
+          else
+             --  Prevent the potential processing of '.' in cases where the
+             --  initial digits have a trailing underscore.
+ 
+             if Buf (Ptr) = '_' then
+                return;
+             end if;
+ 
+             Load (File, Buf, Ptr, '.', Loaded);
+ 
+             if Loaded then
+                Load_Digits (File, Buf, Ptr);
+             end if;
+          end if;
+       end if;
+ 
+       --  Deal with exponent
+ 
+       Load (File, Buf, Ptr, 'E', 'e', Loaded);
+ 
+       if Loaded then
+          Load (File, Buf, Ptr, '+', '-');
+          Load_Digits (File, Buf, Ptr);
+       end if;
+    end Load_Real;
+ 
     ---------------
     -- Load_Skip --
     ---------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztgeau.ads gcc-11.1.0/gcc/ada/libgnat/a-ztgeau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ztgeau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztgeau.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Ada.Wide_Wide_Text_IO.Generic_Au
*** 149,154 ****
--- 149,166 ----
        Ptr    : in out Integer);
     --  Same as above, but no indication if character is loaded
  
+    procedure Load_Integer
+      (File : File_Type;
+       Buf  : out String;
+       Ptr  : in out Natural);
+    --  Loads a possibly signed integer literal value
+ 
+    procedure Load_Real
+      (File : File_Type;
+       Buf  : out String;
+       Ptr  : in out Natural);
+    --  Loads a possibly signed real literal value
+ 
     procedure Put_Item (File : File_Type; Str : String);
     --  This routine is like Wide_Wide_Text_IO.Put, except that it checks for
     --  overflow of bounded lines, as described in (RM A.10.6(8)). It is used
*************** package Ada.Wide_Wide_Text_IO.Generic_Au
*** 169,175 ****
     procedure String_Skip (Str : String; Ptr : out Integer);
     --  Used in the Get from string procedures to skip leading blanks in the
     --  string. Ptr is set to the index of the first non-blank. If the string
!    --  is all blanks, then the excption End_Error is raised, Note that blank
     --  is defined as a space or horizontal tab (RM A.10.6(5)).
  
     procedure Ungetc (ch : Integer; File : File_Type);
--- 181,187 ----
     procedure String_Skip (Str : String; Ptr : out Integer);
     --  Used in the Get from string procedures to skip leading blanks in the
     --  string. Ptr is set to the index of the first non-blank. If the string
!    --  is all blanks, then the exception End_Error is raised, Note that blank
     --  is defined as a space or horizontal tab (RM A.10.6(5)).
  
     procedure Ungetc (ch : Integer; File : File_Type);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztinau.adb gcc-11.1.0/gcc/ada/libgnat/a-ztinau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztinau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztinau.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,91 ****
  
  with Ada.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
  
- with System.Img_BIU;   use System.Img_BIU;
- with System.Img_Int;   use System.Img_Int;
- with System.Img_LLB;   use System.Img_LLB;
- with System.Img_LLI;   use System.Img_LLI;
- with System.Img_LLW;   use System.Img_LLW;
- with System.Img_WIU;   use System.Img_WIU;
- with System.Val_Int;   use System.Val_Int;
- with System.Val_LLI;   use System.Val_LLI;
- 
  package body Ada.Wide_Wide_Text_IO.Integer_Aux is
  
!    -----------------------
!    -- Local Subprograms --
!    -----------------------
! 
!    procedure Load_Integer
!      (File : File_Type;
!       Buf  : out String;
!       Ptr  : in out Natural);
!    --  This is an auxiliary routine that is used to load an possibly signed
!    --  integer literal value from the input file into Buf, starting at Ptr + 1.
!    --  On return, Ptr is set to the last character stored.
! 
!    -------------
!    -- Get_Int --
!    -------------
! 
!    procedure Get_Int
!      (File  : File_Type;
!       Item  : out Integer;
!       Width : Field)
!    is
!       Buf  : String (1 .. Field'Last);
!       Ptr  : aliased Integer := 1;
!       Stop : Integer := 0;
! 
!    begin
!       if Width /= 0 then
!          Load_Width (File, Width, Buf, Stop);
!          String_Skip (Buf, Ptr);
!       else
!          Load_Integer (File, Buf, Stop);
!       end if;
! 
!       Item := Scan_Integer (Buf, Ptr'Access, Stop);
!       Check_End_Of_Field (Buf, Stop, Ptr, Width);
!    end Get_Int;
! 
!    -------------
!    -- Get_LLI --
!    -------------
  
!    procedure Get_LLI
       (File  : File_Type;
!       Item  : out Long_Long_Integer;
        Width : Field)
     is
        Buf  : String (1 .. Field'Last);
--- 31,45 ----
  
  with Ada.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
  
  package body Ada.Wide_Wide_Text_IO.Integer_Aux is
  
!    ---------
!    -- Get --
!    ---------
  
!    procedure Get
       (File  : File_Type;
!       Item  : out Num;
        Width : Field)
     is
        Buf  : String (1 .. Field'Last);
*************** package body Ada.Wide_Wide_Text_IO.Integ
*** 100,288 ****
           Load_Integer (File, Buf, Stop);
        end if;
  
!       Item := Scan_Long_Long_Integer (Buf, Ptr'Access, Stop);
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
!    end Get_LLI;
! 
!    --------------
!    -- Gets_Int --
!    --------------
! 
!    procedure Gets_Int
!      (From : String;
!       Item : out Integer;
!       Last : out Positive)
!    is
!       Pos : aliased Integer;
! 
!    begin
!       String_Skip (From, Pos);
!       Item := Scan_Integer (From, Pos'Access, From'Last);
!       Last := Pos - 1;
! 
!    exception
!       when Constraint_Error =>
!          raise Data_Error;
!    end Gets_Int;
  
!    --------------
!    -- Gets_LLI --
!    --------------
  
!    procedure Gets_LLI
       (From : String;
!       Item : out Long_Long_Integer;
        Last : out Positive)
     is
        Pos : aliased Integer;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan_Long_Long_Integer (From, Pos'Access, From'Last);
        Last := Pos - 1;
  
     exception
        when Constraint_Error =>
           raise Data_Error;
!    end Gets_LLI;
! 
!    ------------------
!    -- Load_Integer --
!    ------------------
! 
!    procedure Load_Integer
!      (File : File_Type;
!       Buf  : out String;
!       Ptr  : in out Natural)
!    is
!       Hash_Loc : Natural;
!       Loaded   : Boolean;
! 
!    begin
!       Load_Skip (File);
!       Load (File, Buf, Ptr, '+', '-');
! 
!       Load_Digits (File, Buf, Ptr, Loaded);
! 
!       if Loaded then
! 
!          --  Deal with based case. We recognize either the standard '#' or the
!          --  allowed alternative replacement ':' (see RM J.2(3)).
! 
!          Load (File, Buf, Ptr, '#', ':', Loaded);
! 
!          if Loaded then
!             Hash_Loc := Ptr;
!             Load_Extended_Digits (File, Buf, Ptr);
!             Load (File, Buf, Ptr, Buf (Hash_Loc));
!          end if;
! 
!          Load (File, Buf, Ptr, 'E', 'e', Loaded);
! 
!          if Loaded then
! 
!             --  Note: it is strange to allow a minus sign, since the syntax
!             --  does not, but that is what ACVC test CE3704F, case (6) wants.
! 
!             Load (File, Buf, Ptr, '+', '-');
!             Load_Digits (File, Buf, Ptr);
!          end if;
!       end if;
!    end Load_Integer;
! 
!    -------------
!    -- Put_Int --
!    -------------
! 
!    procedure Put_Int
!      (File  : File_Type;
!       Item  : Integer;
!       Width : Field;
!       Base  : Number_Base)
!    is
!       Buf : String (1 .. Field'Last);
!       Ptr : Natural := 0;
! 
!    begin
!       if Base = 10 and then Width = 0 then
!          Set_Image_Integer (Item, Buf, Ptr);
!       elsif Base = 10 then
!          Set_Image_Width_Integer (Item, Width, Buf, Ptr);
!       else
!          Set_Image_Based_Integer (Item, Base, Width, Buf, Ptr);
!       end if;
! 
!       Put_Item (File, Buf (1 .. Ptr));
!    end Put_Int;
  
!    -------------
!    -- Put_LLI --
!    -------------
  
!    procedure Put_LLI
       (File  : File_Type;
!       Item  : Long_Long_Integer;
        Width : Field;
        Base  : Number_Base)
     is
!       Buf : String (1 .. Field'Last);
        Ptr : Natural := 0;
  
     begin
        if Base = 10 and then Width = 0 then
!          Set_Image_Long_Long_Integer (Item, Buf, Ptr);
        elsif Base = 10 then
!          Set_Image_Width_Long_Long_Integer (Item, Width, Buf, Ptr);
        else
!          Set_Image_Based_Long_Long_Integer (Item, Base, Width, Buf, Ptr);
        end if;
  
        Put_Item (File, Buf (1 .. Ptr));
!    end Put_LLI;
! 
!    --------------
!    -- Puts_Int --
!    --------------
! 
!    procedure Puts_Int
!      (To   : out String;
!       Item : Integer;
!       Base : Number_Base)
!    is
!       Buf : String (1 .. Field'Last);
!       Ptr : Natural := 0;
! 
!    begin
!       if Base = 10 then
!          Set_Image_Width_Integer (Item, To'Length, Buf, Ptr);
!       else
!          Set_Image_Based_Integer (Item, Base, To'Length, Buf, Ptr);
!       end if;
! 
!       if Ptr > To'Length then
!          raise Layout_Error;
!       else
!          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
!       end if;
!    end Puts_Int;
  
!    --------------
!    -- Puts_LLI --
!    --------------
  
!    procedure Puts_LLI
       (To   : out String;
!       Item : Long_Long_Integer;
        Base : Number_Base)
     is
!       Buf : String (1 .. Field'Last);
        Ptr : Natural := 0;
  
     begin
        if Base = 10 then
!          Set_Image_Width_Long_Long_Integer (Item, To'Length, Buf, Ptr);
        else
!          Set_Image_Based_Long_Long_Integer (Item, Base, To'Length, Buf, Ptr);
        end if;
  
        if Ptr > To'Length then
--- 54,126 ----
           Load_Integer (File, Buf, Stop);
        end if;
  
!       Item := Scan (Buf, Ptr'Access, Stop);
        Check_End_Of_Field (Buf, Stop, Ptr, Width);
!    end Get;
  
!    ----------
!    -- Gets --
!    ----------
  
!    procedure Gets
       (From : String;
!       Item : out Num;
        Last : out Positive)
     is
        Pos : aliased Integer;
  
     begin
        String_Skip (From, Pos);
!       Item := Scan (From, Pos'Access, From'Last);
        Last := Pos - 1;
  
     exception
        when Constraint_Error =>
           raise Data_Error;
!    end Gets;
  
!    ---------
!    -- Put --
!    ---------
  
!    procedure Put
       (File  : File_Type;
!       Item  : Num;
        Width : Field;
        Base  : Number_Base)
     is
!       Buf : String (1 .. Integer'Max (Field'Last, Width));
        Ptr : Natural := 0;
  
     begin
        if Base = 10 and then Width = 0 then
!          Set_Image (Item, Buf, Ptr);
        elsif Base = 10 then
!          Set_Image_Width (Item, Width, Buf, Ptr);
        else
!          Set_Image_Based (Item, Base, Width, Buf, Ptr);
        end if;
  
        Put_Item (File, Buf (1 .. Ptr));
!    end Put;
  
!    ----------
!    -- Puts --
!    ----------
  
!    procedure Puts
       (To   : out String;
!       Item : Num;
        Base : Number_Base)
     is
!       Buf : String (1 .. Integer'Max (Field'Last, To'Length));
        Ptr : Natural := 0;
  
     begin
        if Base = 10 then
!          Set_Image_Width (Item, To'Length, Buf, Ptr);
        else
!          Set_Image_Based (Item, Base, To'Length, Buf, Ptr);
        end if;
  
        if Ptr > To'Length then
*************** package body Ada.Wide_Wide_Text_IO.Integ
*** 290,295 ****
        else
           To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
        end if;
!    end Puts_LLI;
  
  end Ada.Wide_Wide_Text_IO.Integer_Aux;
--- 128,133 ----
        else
           To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
        end if;
!    end Puts;
  
  end Ada.Wide_Wide_Text_IO.Integer_Aux;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztinau.ads gcc-11.1.0/gcc/ada/libgnat/a-ztinau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ztinau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztinau.ads	Tue Apr 27 10:00:12 2021
***************
*** 2,12 ****
  --                                                                          --
  --                         GNAT RUN-TIME COMPONENTS                         --
  --                                                                          --
! --    A D A . W I D E _ W I D E _ T E X T _ I O . I N T E G E R _ A U X     --
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 2,12 ----
  --                                                                          --
  --                         GNAT RUN-TIME COMPONENTS                         --
  --                                                                          --
! --    A D A . W I D E _ W I D E _ T E X T _ I O . I N T E G E R  _ A U X    --
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,83 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains the routines for Ada.Wide_Wide_Text_IO.Integer_IO
! --  that are shared among separate instantiations of this package. The routines
! --  in this package are identical semantically to those in Integer_IO itself,
! --  except that the generic parameter Num has been replaced by Integer or
! --  Long_Long_Integer, and the default parameters have been removed because
! --  they are supplied explicitly by the calls from within the generic template.
  
! private package Ada.Wide_Wide_Text_IO.Integer_Aux is
  
!    procedure Get_Int
!      (File  : File_Type;
!       Item  : out Integer;
!       Width : Field);
  
!    procedure Get_LLI
       (File  : File_Type;
!       Item  : out Long_Long_Integer;
        Width : Field);
  
!    procedure Gets_Int
!      (From : String;
!       Item : out Integer;
!       Last : out Positive);
! 
!    procedure Gets_LLI
       (From : String;
!       Item : out Long_Long_Integer;
        Last : out Positive);
  
!    procedure Put_Int
!      (File  : File_Type;
!       Item  : Integer;
!       Width : Field;
!       Base  : Number_Base);
! 
!    procedure Put_LLI
       (File  : File_Type;
!       Item  : Long_Long_Integer;
        Width : Field;
        Base  : Number_Base);
  
!    procedure Puts_Int
!      (To   : out String;
!       Item : Integer;
!       Base : Number_Base);
! 
!    procedure Puts_LLI
       (To   : out String;
!       Item : Long_Long_Integer;
        Base : Number_Base);
  
  end Ada.Wide_Wide_Text_IO.Integer_Aux;
--- 29,73 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains implementation for Ada.Wide_Wide.Text_IO.Integer_IO
! --  and Ada.Wide_Wide_Text_IO.Modular_IO. The routines in this package are
! --  identical semantically to those in Integer_IO and Modular_IO themselves,
! --  except that the default parameters have been removed because they are
! --  supplied explicitly by the calls from within these units.
  
! private generic
!    type Num is (<>);
  
!    with function Scan
!      (Str : String; Ptr : not null access Integer; Max : Integer) return Num;
!    with procedure Set_Image
!      (V : Num; S : in out String; P : in out Natural);
!    with procedure Set_Image_Width
!      (V : Num; W : Integer; S : out String; P : in out Natural);
!    with procedure Set_Image_Based
!      (V : Num; B : Natural; W : Integer; S : out String; P : in out Natural);
  
! package Ada.Wide_Wide_Text_IO.Integer_Aux is
! 
!    procedure Get
       (File  : File_Type;
!       Item  : out Num;
        Width : Field);
  
!    procedure Gets
       (From : String;
!       Item : out Num;
        Last : out Positive);
  
!    procedure Put
       (File  : File_Type;
!       Item  : Num;
        Width : Field;
        Base  : Number_Base);
  
!    procedure Puts
       (To   : out String;
!       Item : Num;
        Base : Number_Base);
  
  end Ada.Wide_Wide_Text_IO.Integer_Aux;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztinio.adb gcc-11.1.0/gcc/ada/libgnat/a-ztinio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztinio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztinio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,51 ****
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Wide_Text_IO.Integer_Aux;
  with System.WCh_Con; use System.WCh_Con;
  with System.WCh_WtS; use System.WCh_WtS;
  
  package body Ada.Wide_Wide_Text_IO.Integer_IO is
  
     Need_LLI : constant Boolean := Num'Base'Size > Integer'Size;
     --  Throughout this generic body, we distinguish between the case where type
     --  Integer is acceptable, and where a Long_Long_Integer is needed. This
     --  Boolean is used to test for these cases and since it is a constant, only
     --  code for the relevant case will be included in the instance.
  
-    subtype TFT is Ada.Wide_Wide_Text_IO.File_Type;
-    --  File type required for calls to routines in Aux
- 
-    package Aux renames Ada.Wide_Wide_Text_IO.Integer_Aux;
- 
     ---------
     -- Get --
     ---------
--- 30,70 ----
  ------------------------------------------------------------------------------
  
  with Ada.Wide_Wide_Text_IO.Integer_Aux;
+ with System.Img_BIU; use System.Img_BIU;
+ with System.Img_Int; use System.Img_Int;
+ with System.Img_LLB; use System.Img_LLB;
+ with System.Img_LLI; use System.Img_LLI;
+ with System.Img_LLW; use System.Img_LLW;
+ with System.Img_WIU; use System.Img_WIU;
+ with System.Val_Int; use System.Val_Int;
+ with System.Val_LLI; use System.Val_LLI;
  with System.WCh_Con; use System.WCh_Con;
  with System.WCh_WtS; use System.WCh_WtS;
  
  package body Ada.Wide_Wide_Text_IO.Integer_IO is
  
+    package Aux_Int is new
+      Ada.Wide_Wide_Text_IO.Integer_Aux
+        (Integer,
+         Scan_Integer,
+         Set_Image_Integer,
+         Set_Image_Width_Integer,
+         Set_Image_Based_Integer);
+ 
+    package Aux_LLI is new
+      Ada.Wide_Wide_Text_IO.Integer_Aux
+        (Long_Long_Integer,
+         Scan_Long_Long_Integer,
+         Set_Image_Long_Long_Integer,
+         Set_Image_Width_Long_Long_Integer,
+         Set_Image_Based_Long_Long_Integer);
+ 
     Need_LLI : constant Boolean := Num'Base'Size > Integer'Size;
     --  Throughout this generic body, we distinguish between the case where type
     --  Integer is acceptable, and where a Long_Long_Integer is needed. This
     --  Boolean is used to test for these cases and since it is a constant, only
     --  code for the relevant case will be included in the instance.
  
     ---------
     -- Get --
     ---------
*************** package body Ada.Wide_Wide_Text_IO.Integ
*** 55,65 ****
        Item  : out Num;
        Width : Field := 0)
     is
     begin
        if Need_LLI then
!          Aux.Get_LLI (TFT (File), Long_Long_Integer (Item), Width);
        else
!          Aux.Get_Int (TFT (File), Integer (Item), Width);
        end if;
  
     exception
--- 74,89 ----
        Item  : out Num;
        Width : Field := 0)
     is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+       pragma Unsuppress (Overflow_Check);
+ 
     begin
        if Need_LLI then
!          Aux_LLI.Get (File, Long_Long_Integer (Item), Width);
        else
!          Aux_Int.Get (File, Integer (Item), Width);
        end if;
  
     exception
*************** package body Ada.Wide_Wide_Text_IO.Integ
*** 71,77 ****
        Width : Field := 0)
     is
     begin
!       Get (Current_Input, Item, Width);
     end Get;
  
     procedure Get
--- 95,101 ----
        Width : Field := 0)
     is
     begin
!       Get (Current_In, Item, Width);
     end Get;
  
     procedure Get
*************** package body Ada.Wide_Wide_Text_IO.Integ
*** 79,84 ****
--- 103,113 ----
        Item : out Num;
        Last : out Positive)
     is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+       pragma Unsuppress (Overflow_Check);
+ 
        S : constant String := Wide_Wide_String_To_String (From, WCEM_Upper);
        --  String on which we do the actual conversion. Note that the method
        --  used for wide character encoding is irrelevant, since if there is
*************** package body Ada.Wide_Wide_Text_IO.Integ
*** 87,95 ****
  
     begin
        if Need_LLI then
!          Aux.Gets_LLI (S, Long_Long_Integer (Item), Last);
        else
!          Aux.Gets_Int (S, Integer (Item), Last);
        end if;
  
     exception
--- 116,124 ----
  
     begin
        if Need_LLI then
!          Aux_LLI.Gets (S, Long_Long_Integer (Item), Last);
        else
!          Aux_Int.Gets (S, Integer (Item), Last);
        end if;
  
     exception
*************** package body Ada.Wide_Wide_Text_IO.Integ
*** 108,116 ****
     is
     begin
        if Need_LLI then
!          Aux.Put_LLI (TFT (File), Long_Long_Integer (Item), Width, Base);
        else
!          Aux.Put_Int (TFT (File), Integer (Item), Width, Base);
        end if;
     end Put;
  
--- 137,145 ----
     is
     begin
        if Need_LLI then
!          Aux_LLI.Put (File, Long_Long_Integer (Item), Width, Base);
        else
!          Aux_Int.Put (File, Integer (Item), Width, Base);
        end if;
     end Put;
  
*************** package body Ada.Wide_Wide_Text_IO.Integ
*** 120,126 ****
        Base  : Number_Base := Default_Base)
     is
     begin
!       Put (Current_Output, Item, Width, Base);
     end Put;
  
     procedure Put
--- 149,155 ----
        Base  : Number_Base := Default_Base)
     is
     begin
!       Put (Current_Out, Item, Width, Base);
     end Put;
  
     procedure Put
*************** package body Ada.Wide_Wide_Text_IO.Integ
*** 132,140 ****
  
     begin
        if Need_LLI then
!          Aux.Puts_LLI (S, Long_Long_Integer (Item), Base);
        else
!          Aux.Puts_Int (S, Integer (Item), Base);
        end if;
  
        for J in S'Range loop
--- 161,169 ----
  
     begin
        if Need_LLI then
!          Aux_LLI.Puts (S, Long_Long_Integer (Item), Base);
        else
!          Aux_Int.Puts (S, Integer (Item), Base);
        end if;
  
        for J in S'Range loop
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztinio__128.adb gcc-11.1.0/gcc/ada/libgnat/a-ztinio__128.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztinio__128.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-ztinio__128.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,196 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --      A D A . W I D E _ W I D E _ T E X T _ I O . I N T E G E R _ I O     --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Wide_Wide_Text_IO.Integer_Aux;
+ with System.Img_BIU;  use System.Img_BIU;
+ with System.Img_Int;  use System.Img_Int;
+ with System.Img_LLB;  use System.Img_LLB;
+ with System.Img_LLI;  use System.Img_LLI;
+ with System.Img_LLW;  use System.Img_LLW;
+ with System.Img_LLLB; use System.Img_LLLB;
+ with System.Img_LLLI; use System.Img_LLLI;
+ with System.Img_LLLW; use System.Img_LLLW;
+ with System.Img_WIU;  use System.Img_WIU;
+ with System.Val_Int;  use System.Val_Int;
+ with System.Val_LLI;  use System.Val_LLI;
+ with System.Val_LLLI; use System.Val_LLLI;
+ with System.WCh_Con;  use System.WCh_Con;
+ with System.WCh_WtS;  use System.WCh_WtS;
+ 
+ package body Ada.Wide_Wide_Text_IO.Integer_IO is
+ 
+    package Aux_Int is new
+      Ada.Wide_Wide_Text_IO.Integer_Aux
+        (Integer,
+         Scan_Integer,
+         Set_Image_Integer,
+         Set_Image_Width_Integer,
+         Set_Image_Based_Integer);
+ 
+    package Aux_LLI is new
+      Ada.Wide_Wide_Text_IO.Integer_Aux
+        (Long_Long_Integer,
+         Scan_Long_Long_Integer,
+         Set_Image_Long_Long_Integer,
+         Set_Image_Width_Long_Long_Integer,
+         Set_Image_Based_Long_Long_Integer);
+ 
+    package Aux_LLLI is new
+      Ada.Wide_Wide_Text_IO.Integer_Aux
+        (Long_Long_Long_Integer,
+         Scan_Long_Long_Long_Integer,
+         Set_Image_Long_Long_Long_Integer,
+         Set_Image_Width_Long_Long_Long_Integer,
+         Set_Image_Based_Long_Long_Long_Integer);
+ 
+    Need_LLI  : constant Boolean := Num'Base'Size > Integer'Size;
+    Need_LLLI : constant Boolean := Num'Base'Size > Long_Long_Integer'Size;
+    --  Throughout this generic body, we distinguish between cases where type
+    --  Integer is acceptable, where type Long_Long_Integer is acceptable and
+    --  where type Long_Long_Long_Integer is needed. These boolean constants
+    --  are used to test for these cases and since they are constant, only code
+    --  for the relevant case will be included in the instance.
+ 
+    ---------
+    -- Get --
+    ---------
+ 
+    procedure Get
+      (File  : File_Type;
+       Item  : out Num;
+       Width : Field := 0)
+    is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+       pragma Unsuppress (Overflow_Check);
+ 
+    begin
+       if Need_LLLI then
+          Aux_LLLI.Get (File, Long_Long_Long_Integer (Item), Width);
+       elsif Need_LLI then
+          Aux_LLI.Get (File, Long_Long_Integer (Item), Width);
+       else
+          Aux_Int.Get (File, Integer (Item), Width);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    procedure Get
+      (Item  : out Num;
+       Width : Field := 0)
+    is
+    begin
+       Get (Current_In, Item, Width);
+    end Get;
+ 
+    procedure Get
+      (From : Wide_Wide_String;
+       Item : out Num;
+       Last : out Positive)
+    is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+       pragma Unsuppress (Overflow_Check);
+ 
+       S : constant String := Wide_Wide_String_To_String (From, WCEM_Upper);
+       --  String on which we do the actual conversion. Note that the method
+       --  used for wide character encoding is irrelevant, since if there is
+       --  a character outside the Standard.Character range then the call to
+       --  Aux.Gets will raise Data_Error in any case.
+ 
+    begin
+       if Need_LLLI then
+          Aux_LLLI.Gets (S, Long_Long_Long_Integer (Item), Last);
+       elsif Need_LLI then
+          Aux_LLI.Gets (S, Long_Long_Integer (Item), Last);
+       else
+          Aux_Int.Gets (S, Integer (Item), Last);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    ---------
+    -- Put --
+    ---------
+ 
+    procedure Put
+      (File  : File_Type;
+       Item  : Num;
+       Width : Field := Default_Width;
+       Base  : Number_Base := Default_Base)
+    is
+    begin
+       if Need_LLLI then
+          Aux_LLLI.Put (File, Long_Long_Long_Integer (Item), Width, Base);
+       elsif Need_LLI then
+          Aux_LLI.Put (File, Long_Long_Integer (Item), Width, Base);
+       else
+          Aux_Int.Put (File, Integer (Item), Width, Base);
+       end if;
+    end Put;
+ 
+    procedure Put
+      (Item  : Num;
+       Width : Field := Default_Width;
+       Base  : Number_Base := Default_Base)
+    is
+    begin
+       Put (Current_Out, Item, Width, Base);
+    end Put;
+ 
+    procedure Put
+      (To   : out Wide_Wide_String;
+       Item : Num;
+       Base : Number_Base := Default_Base)
+    is
+       S : String (To'First .. To'Last);
+ 
+    begin
+       if Need_LLLI then
+          Aux_LLLI.Puts (S, Long_Long_Long_Integer (Item), Base);
+       elsif Need_LLI then
+          Aux_LLI.Puts (S, Long_Long_Integer (Item), Base);
+       else
+          Aux_Int.Puts (S, Integer (Item), Base);
+       end if;
+ 
+       for J in S'Range loop
+          To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
+       end loop;
+    end Put;
+ 
+ end Ada.Wide_Wide_Text_IO.Integer_IO;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztmoau.adb gcc-11.1.0/gcc/ada/libgnat/a-ztmoau.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztmoau.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztmoau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,305 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ T E X T _ I O . M O D U L A R  _ A U X    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
- 
- with System.Img_BIU;   use System.Img_BIU;
- with System.Img_Uns;   use System.Img_Uns;
- with System.Img_LLB;   use System.Img_LLB;
- with System.Img_LLU;   use System.Img_LLU;
- with System.Img_LLW;   use System.Img_LLW;
- with System.Img_WIU;   use System.Img_WIU;
- with System.Val_Uns;   use System.Val_Uns;
- with System.Val_LLU;   use System.Val_LLU;
- 
- package body Ada.Wide_Wide_Text_IO.Modular_Aux is
- 
-    use System.Unsigned_Types;
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Load_Modular
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural);
-    --  This is an auxiliary routine that is used to load an possibly signed
-    --  modular literal value from the input file into Buf, starting at Ptr + 1.
-    --  Ptr is left set to the last character stored.
- 
-    -------------
-    -- Get_LLU --
-    -------------
- 
-    procedure Get_LLU
-      (File  : File_Type;
-       Item  : out Long_Long_Unsigned;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Stop : Integer := 0;
-       Ptr  : aliased Integer := 1;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Modular (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Long_Long_Unsigned (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_LLU;
- 
-    -------------
-    -- Get_Uns --
-    -------------
- 
-    procedure Get_Uns
-      (File  : File_Type;
-       Item  : out Unsigned;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Stop : Integer := 0;
-       Ptr  : aliased Integer := 1;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Modular (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Unsigned (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_Uns;
- 
-    --------------
-    -- Gets_LLU --
-    --------------
- 
-    procedure Gets_LLU
-      (From : String;
-       Item : out Long_Long_Unsigned;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Long_Long_Unsigned (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_LLU;
- 
-    --------------
-    -- Gets_Uns --
-    --------------
- 
-    procedure Gets_Uns
-      (From : String;
-       Item : out Unsigned;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Unsigned (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_Uns;
- 
-    ------------------
-    -- Load_Modular --
-    ------------------
- 
-    procedure Load_Modular
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural)
-    is
-       Hash_Loc : Natural;
-       Loaded   : Boolean;
- 
-    begin
-       Load_Skip (File);
- 
-       --  Note: it is a bit strange to allow a minus sign here, but it seems
-       --  consistent with the general behavior expected by the ACVC tests
-       --  which is to scan past junk and then signal data error, see ACVC
-       --  test CE3704F, case (6), which is for signed integer exponents,
-       --  which seems a similar case.
- 
-       Load (File, Buf, Ptr, '+', '-');
-       Load_Digits (File, Buf, Ptr, Loaded);
- 
-       if Loaded then
- 
-          --  Deal with based case. We recognize either the standard '#' or the
-          --  allowed alternative replacement ':' (see RM J.2(3)).
- 
-          Load (File, Buf, Ptr, '#', ':', Loaded);
- 
-          if Loaded then
-             Hash_Loc := Ptr;
-             Load_Extended_Digits (File, Buf, Ptr);
-             Load (File, Buf, Ptr, Buf (Hash_Loc));
-          end if;
- 
-          Load (File, Buf, Ptr, 'E', 'e', Loaded);
- 
-          if Loaded then
- 
-             --  Note: it is strange to allow a minus sign, since the syntax
-             --  does not, but that is what ACVC test CE3704F, case (6) wants
-             --  for the signed case, and there seems no good reason to treat
-             --  exponents differently for the signed and unsigned cases.
- 
-             Load (File, Buf, Ptr, '+', '-');
-             Load_Digits (File, Buf, Ptr);
-          end if;
-       end if;
-    end Load_Modular;
- 
-    -------------
-    -- Put_LLU --
-    -------------
- 
-    procedure Put_LLU
-      (File  : File_Type;
-       Item  : Long_Long_Unsigned;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Long_Long_Unsigned (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Long_Long_Unsigned (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Unsigned (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_LLU;
- 
-    -------------
-    -- Put_Uns --
-    -------------
- 
-    procedure Put_Uns
-      (File  : File_Type;
-       Item  : Unsigned;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Unsigned (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Unsigned (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Unsigned (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_Uns;
- 
-    --------------
-    -- Puts_LLU --
-    --------------
- 
-    procedure Puts_LLU
-      (To   : out String;
-       Item : Long_Long_Unsigned;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Long_Long_Unsigned (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Unsigned (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_LLU;
- 
-    --------------
-    -- Puts_Uns --
-    --------------
- 
-    procedure Puts_Uns
-      (To   : out String;
-       Item : Unsigned;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Unsigned (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Unsigned (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_Uns;
- 
- end Ada.Wide_Wide_Text_IO.Modular_Aux;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztmoau.ads gcc-11.1.0/gcc/ada/libgnat/a-ztmoau.ads
*** gcc-10.3.0/gcc/ada/libgnat/a-ztmoau.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztmoau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,88 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ T E X T _ I O . M O D U L A R _ A U X     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package contains the routines for Ada.Wide_Wide_Text_IO.Modular_IO
- --  that are shared among separate instantiations of this package. The
- --  routines in this package are identical semantically to those in Modular_IO
- --  itself, except that the generic parameter Num has been replaced by
- --  Unsigned or Long_Long_Unsigned, and the default parameters have been
- --  removed because they are supplied explicitly by the calls from within the
- --  generic template.
- 
- with System.Unsigned_Types;
- 
- private package Ada.Wide_Wide_Text_IO.Modular_Aux is
- 
-    package U renames System.Unsigned_Types;
- 
-    procedure Get_Uns
-      (File  : File_Type;
-       Item  : out U.Unsigned;
-       Width : Field);
- 
-    procedure Get_LLU
-      (File  : File_Type;
-       Item  : out U.Long_Long_Unsigned;
-       Width : Field);
- 
-    procedure Gets_Uns
-      (From : String;
-       Item : out U.Unsigned;
-       Last : out Positive);
- 
-    procedure Gets_LLU
-      (From : String;
-       Item : out U.Long_Long_Unsigned;
-       Last : out Positive);
- 
-    procedure Put_Uns
-      (File  : File_Type;
-       Item  : U.Unsigned;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Put_LLU
-      (File  : File_Type;
-       Item  : U.Long_Long_Unsigned;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Puts_Uns
-      (To   : out String;
-       Item : U.Unsigned;
-       Base : Number_Base);
- 
-    procedure Puts_LLU
-      (To   : out String;
-       Item : U.Long_Long_Unsigned;
-       Base : Number_Base);
- 
- end Ada.Wide_Wide_Text_IO.Modular_Aux;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztmoio.adb gcc-11.1.0/gcc/ada/libgnat/a-ztmoio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztmoio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-ztmoio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,46 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Ada.Wide_Wide_Text_IO.Modular_Aux;
! 
! with System.Unsigned_Types; use System.Unsigned_Types;
! with System.WCh_Con;        use System.WCh_Con;
! with System.WCh_WtS;        use System.WCh_WtS;
  
  package body Ada.Wide_Wide_Text_IO.Modular_IO is
  
!    subtype TFT is Ada.Wide_Wide_Text_IO.File_Type;
!    --  File type required for calls to routines in Aux
  
!    package Aux renames Ada.Wide_Wide_Text_IO.Modular_Aux;
  
     ---------
     -- Get --
--- 29,69 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Ada.Wide_Wide_Text_IO.Integer_Aux;
! with System.Img_BIU; use System.Img_BIU;
! with System.Img_Uns; use System.Img_Uns;
! with System.Img_LLB; use System.Img_LLB;
! with System.Img_LLU; use System.Img_LLU;
! with System.Img_LLW; use System.Img_LLW;
! with System.Img_WIU; use System.Img_WIU;
! with System.Val_Uns; use System.Val_Uns;
! with System.Val_LLU; use System.Val_LLU;
! with System.WCh_Con; use System.WCh_Con;
! with System.WCh_WtS; use System.WCh_WtS;
  
  package body Ada.Wide_Wide_Text_IO.Modular_IO is
  
!    package Aux_Uns is new
!      Ada.Wide_Wide_Text_IO.Integer_Aux
!        (Unsigned,
!         Scan_Unsigned,
!         Set_Image_Unsigned,
!         Set_Image_Width_Unsigned,
!         Set_Image_Based_Unsigned);
  
!    package Aux_LLU is new
!      Ada.Wide_Wide_Text_IO.Integer_Aux
!        (Long_Long_Unsigned,
!         Scan_Long_Long_Unsigned,
!         Set_Image_Long_Long_Unsigned,
!         Set_Image_Width_Long_Long_Unsigned,
!         Set_Image_Based_Long_Long_Unsigned);
! 
!    Need_LLU : constant Boolean := Num'Base'Size > Unsigned'Size;
!    --  Throughout this generic body, we distinguish between the case where type
!    --  Unsigned is acceptable, and where a Long_Long_Unsigned is needed. This
!    --  Boolean is used to test for these cases and since it is a constant, only
!    --  code for the relevant case will be included in the instance.
  
     ---------
     -- Get --
*************** package body Ada.Wide_Wide_Text_IO.Modul
*** 51,61 ****
        Item  : out Num;
        Width : Field := 0)
     is
     begin
!       if Num'Size > Unsigned'Size then
!          Aux.Get_LLU (TFT (File), Long_Long_Unsigned (Item), Width);
        else
!          Aux.Get_Uns (TFT (File), Unsigned (Item), Width);
        end if;
  
     exception
--- 74,88 ----
        Item  : out Num;
        Width : Field := 0)
     is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+ 
     begin
!       if Need_LLU then
!          Aux_LLU.Get (File, Long_Long_Unsigned (Item), Width);
        else
!          Aux_Uns.Get (File, Unsigned (Item), Width);
        end if;
  
     exception
*************** package body Ada.Wide_Wide_Text_IO.Modul
*** 67,73 ****
        Width : Field := 0)
     is
     begin
!       Get (Current_Input, Item, Width);
     end Get;
  
     procedure Get
--- 94,100 ----
        Width : Field := 0)
     is
     begin
!       Get (Current_In, Item, Width);
     end Get;
  
     procedure Get
*************** package body Ada.Wide_Wide_Text_IO.Modul
*** 75,80 ****
--- 102,111 ----
        Item : out Num;
        Last : out Positive)
     is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+ 
        S : constant String := Wide_Wide_String_To_String (From, WCEM_Upper);
        --  String on which we do the actual conversion. Note that the method
        --  used for wide character encoding is irrelevant, since if there is
*************** package body Ada.Wide_Wide_Text_IO.Modul
*** 82,91 ****
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       if Num'Size > Unsigned'Size then
!          Aux.Gets_LLU (S, Long_Long_Unsigned (Item), Last);
        else
!          Aux.Gets_Uns (S, Unsigned (Item), Last);
        end if;
  
     exception
--- 113,122 ----
        --  Aux.Gets will raise Data_Error in any case.
  
     begin
!       if Need_LLU then
!          Aux_LLU.Gets (S, Long_Long_Unsigned (Item), Last);
        else
!          Aux_Uns.Gets (S, Unsigned (Item), Last);
        end if;
  
     exception
*************** package body Ada.Wide_Wide_Text_IO.Modul
*** 103,112 ****
        Base  : Number_Base := Default_Base)
     is
     begin
!       if Num'Size > Unsigned'Size then
!          Aux.Put_LLU (TFT (File), Long_Long_Unsigned (Item), Width, Base);
        else
!          Aux.Put_Uns (TFT (File), Unsigned (Item), Width, Base);
        end if;
     end Put;
  
--- 134,143 ----
        Base  : Number_Base := Default_Base)
     is
     begin
!       if Need_LLU then
!          Aux_LLU.Put (File, Long_Long_Unsigned (Item), Width, Base);
        else
!          Aux_Uns.Put (File, Unsigned (Item), Width, Base);
        end if;
     end Put;
  
*************** package body Ada.Wide_Wide_Text_IO.Modul
*** 116,122 ****
        Base  : Number_Base := Default_Base)
     is
     begin
!       Put (Current_Output, Item, Width, Base);
     end Put;
  
     procedure Put
--- 147,153 ----
        Base  : Number_Base := Default_Base)
     is
     begin
!       Put (Current_Out, Item, Width, Base);
     end Put;
  
     procedure Put
*************** package body Ada.Wide_Wide_Text_IO.Modul
*** 127,136 ****
        S : String (To'First .. To'Last);
  
     begin
!       if Num'Size > Unsigned'Size then
!          Aux.Puts_LLU (S, Long_Long_Unsigned (Item), Base);
        else
!          Aux.Puts_Uns (S, Unsigned (Item), Base);
        end if;
  
        for J in S'Range loop
--- 158,167 ----
        S : String (To'First .. To'Last);
  
     begin
!       if Need_LLU then
!          Aux_LLU.Puts (S, Long_Long_Unsigned (Item), Base);
        else
!          Aux_Uns.Puts (S, Unsigned (Item), Base);
        end if;
  
        for J in S'Range loop
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-ztmoio__128.adb gcc-11.1.0/gcc/ada/libgnat/a-ztmoio__128.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-ztmoio__128.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/a-ztmoio__128.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,194 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --      A D A . W I D E _ W I D E _ T E X T _ I O . M O D U L A R _ I O     --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Wide_Wide_Text_IO.Integer_Aux;
+ with System.Img_BIU;  use System.Img_BIU;
+ with System.Img_Uns;  use System.Img_Uns;
+ with System.Img_LLB;  use System.Img_LLB;
+ with System.Img_LLU;  use System.Img_LLU;
+ with System.Img_LLW;  use System.Img_LLW;
+ with System.Img_LLLB; use System.Img_LLLB;
+ with System.Img_LLLU; use System.Img_LLLU;
+ with System.Img_LLLW; use System.Img_LLLW;
+ with System.Img_WIU;  use System.Img_WIU;
+ with System.Val_Uns;  use System.Val_Uns;
+ with System.Val_LLU;  use System.Val_LLU;
+ with System.Val_LLLU; use System.Val_LLLU;
+ with System.WCh_Con;  use System.WCh_Con;
+ with System.WCh_WtS;  use System.WCh_WtS;
+ 
+ package body Ada.Wide_Wide_Text_IO.Modular_IO is
+ 
+    package Aux_Uns is new
+      Ada.Wide_Wide_Text_IO.Integer_Aux
+        (Unsigned,
+         Scan_Unsigned,
+         Set_Image_Unsigned,
+         Set_Image_Width_Unsigned,
+         Set_Image_Based_Unsigned);
+ 
+    package Aux_LLU is new
+      Ada.Wide_Wide_Text_IO.Integer_Aux
+        (Long_Long_Unsigned,
+         Scan_Long_Long_Unsigned,
+         Set_Image_Long_Long_Unsigned,
+         Set_Image_Width_Long_Long_Unsigned,
+         Set_Image_Based_Long_Long_Unsigned);
+ 
+    package Aux_LLLU is new
+      Ada.Wide_Wide_Text_IO.Integer_Aux
+        (Long_Long_Long_Unsigned,
+         Scan_Long_Long_Long_Unsigned,
+         Set_Image_Long_Long_Long_Unsigned,
+         Set_Image_Width_Long_Long_Long_Unsigned,
+         Set_Image_Based_Long_Long_Long_Unsigned);
+ 
+    Need_LLU  : constant Boolean := Num'Base'Size > Unsigned'Size;
+    Need_LLLU : constant Boolean := Num'Base'Size > Long_Long_Unsigned'Size;
+    --  Throughout this generic body, we distinguish between cases where type
+    --  Unsigned is acceptable, where type Long_Long_Unsigned is acceptable and
+    --  where type Long_Long_Long_Unsigned is needed. These boolean constants
+    --  are used to test for these cases and since they are constant, only code
+    --  for the relevant case will be included in the instance.
+ 
+    ---------
+    -- Get --
+    ---------
+ 
+    procedure Get
+      (File  : File_Type;
+       Item  : out Num;
+       Width : Field := 0)
+    is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+ 
+    begin
+       if Need_LLLU then
+          Aux_LLLU.Get (File, Long_Long_Long_Unsigned (Item), Width);
+       elsif Need_LLU then
+          Aux_LLU.Get (File, Long_Long_Unsigned (Item), Width);
+       else
+          Aux_Uns.Get (File, Unsigned (Item), Width);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    procedure Get
+      (Item  : out Num;
+       Width : Field := 0)
+    is
+    begin
+       Get (Current_In, Item, Width);
+    end Get;
+ 
+    procedure Get
+      (From : Wide_Wide_String;
+       Item : out Num;
+       Last : out Positive)
+    is
+       --  We depend on a range check to get Data_Error
+ 
+       pragma Unsuppress (Range_Check);
+ 
+       S : constant String := Wide_Wide_String_To_String (From, WCEM_Upper);
+       --  String on which we do the actual conversion. Note that the method
+       --  used for wide character encoding is irrelevant, since if there is
+       --  a character outside the Standard.Character range then the call to
+       --  Aux.Gets will raise Data_Error in any case.
+ 
+    begin
+       if Need_LLLU then
+          Aux_LLLU.Gets (S, Long_Long_Long_Unsigned (Item), Last);
+       elsif Need_LLU then
+          Aux_LLU.Gets (S, Long_Long_Unsigned (Item), Last);
+       else
+          Aux_Uns.Gets (S, Unsigned (Item), Last);
+       end if;
+ 
+    exception
+       when Constraint_Error => raise Data_Error;
+    end Get;
+ 
+    ---------
+    -- Put --
+    ---------
+ 
+    procedure Put
+      (File  : File_Type;
+       Item  : Num;
+       Width : Field := Default_Width;
+       Base  : Number_Base := Default_Base)
+    is
+    begin
+       if Need_LLLU then
+          Aux_LLLU.Put (File, Long_Long_Long_Unsigned (Item), Width, Base);
+       elsif Need_LLU then
+          Aux_LLU.Put (File, Long_Long_Unsigned (Item), Width, Base);
+       else
+          Aux_Uns.Put (File, Unsigned (Item), Width, Base);
+       end if;
+    end Put;
+ 
+    procedure Put
+      (Item  : Num;
+       Width : Field := Default_Width;
+       Base  : Number_Base := Default_Base)
+    is
+    begin
+       Put (Current_Out, Item, Width, Base);
+    end Put;
+ 
+    procedure Put
+      (To   : out Wide_Wide_String;
+       Item : Num;
+       Base : Number_Base := Default_Base)
+    is
+       S : String (To'First .. To'Last);
+ 
+    begin
+       if Need_LLLU then
+          Aux_LLLU.Puts (S, Long_Long_Long_Unsigned (Item), Base);
+       elsif Need_LLU then
+          Aux_LLU.Puts (S, Long_Long_Unsigned (Item), Base);
+       else
+          Aux_Uns.Puts (S, Unsigned (Item), Base);
+       end if;
+ 
+       for J in S'Range loop
+          To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
+       end loop;
+    end Put;
+ 
+ end Ada.Wide_Wide_Text_IO.Modular_IO;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-zttest.adb gcc-11.1.0/gcc/ada/libgnat/a-zttest.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-zttest.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-zttest.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/a-zzboio.adb gcc-11.1.0/gcc/ada/libgnat/a-zzboio.adb
*** gcc-10.3.0/gcc/ada/libgnat/a-zzboio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/a-zzboio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-allein.ads gcc-11.1.0/gcc/ada/libgnat/g-allein.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-allein.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-allein.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-alleve.adb gcc-11.1.0/gcc/ada/libgnat/g-alleve.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-alleve.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-alleve.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                         (Soft Binding Version)                           --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                         (Soft Binding Version)                           --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-alleve.ads gcc-11.1.0/gcc/ada/libgnat/g-alleve.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-alleve.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-alleve.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (Soft Binding Version)                           --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (Soft Binding Version)                           --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-alleve__hard.adb gcc-11.1.0/gcc/ada/libgnat/g-alleve__hard.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-alleve__hard.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-alleve__hard.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                          (Hard Binding Version)                          --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                          (Hard Binding Version)                          --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-alleve__hard.ads gcc-11.1.0/gcc/ada/libgnat/g-alleve__hard.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-alleve__hard.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-alleve__hard.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (Hard Binding Version)                          --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (Hard Binding Version)                          --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-altcon.adb gcc-11.1.0/gcc/ada/libgnat/g-altcon.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-altcon.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-altcon.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-altcon.ads gcc-11.1.0/gcc/ada/libgnat/g-altcon.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-altcon.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-altcon.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2009-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2009-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-altive.ads gcc-11.1.0/gcc/ada/libgnat/g-altive.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-altive.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-altive.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-alveop.adb gcc-11.1.0/gcc/ada/libgnat/g-alveop.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-alveop.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-alveop.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2004-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2004-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-alveop.ads gcc-11.1.0/gcc/ada/libgnat/g-alveop.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-alveop.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-alveop.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-alvety.ads gcc-11.1.0/gcc/ada/libgnat/g-alvety.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-alvety.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-alvety.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-alvevi.ads gcc-11.1.0/gcc/ada/libgnat/g-alvevi.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-alvevi.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-alvevi.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2005-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2005-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-arrspl.adb gcc-11.1.0/gcc/ada/libgnat/g-arrspl.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-arrspl.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-arrspl.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.Array_Split is
*** 49,55 ****
     -- Adjust --
     ------------
  
!    procedure Adjust (S : in out Slice_Set) is
     begin
        S.D.Ref_Counter := S.D.Ref_Counter + 1;
     end Adjust;
--- 49,55 ----
     -- Adjust --
     ------------
  
!    overriding procedure Adjust (S : in out Slice_Set) is
     begin
        S.D.Ref_Counter := S.D.Ref_Counter + 1;
     end Adjust;
*************** package body GNAT.Array_Split is
*** 68,73 ****
--- 68,83 ----
        Create (S, From, To_Set (Separators), Mode);
     end Create;
  
+    function Create
+      (From       : Element_Sequence;
+       Separators : Element_Sequence;
+       Mode       : Separator_Mode := Single) return Slice_Set is
+    begin
+       return Ret : Slice_Set do
+          Create (Ret, From, Separators, Mode);
+       end return;
+    end Create;
+ 
     ------------
     -- Create --
     ------------
*************** package body GNAT.Array_Split is
*** 85,90 ****
--- 95,110 ----
        S := Result;
     end Create;
  
+    function Create
+      (From       : Element_Sequence;
+       Separators : Element_Set;
+       Mode       : Separator_Mode := Single) return Slice_Set is
+    begin
+       return Ret : Slice_Set do
+          Create (Ret, From, Separators, Mode);
+       end return;
+    end Create;
+ 
     -----------
     -- Count --
     -----------
*************** package body GNAT.Array_Split is
*** 108,114 ****
     -- Finalize --
     --------------
  
!    procedure Finalize (S : in out Slice_Set) is
  
        procedure Free is
           new Ada.Unchecked_Deallocation (Element_Sequence, Element_Access);
--- 128,134 ----
     -- Finalize --
     --------------
  
!    overriding procedure Finalize (S : in out Slice_Set) is
  
        procedure Free is
           new Ada.Unchecked_Deallocation (Element_Sequence, Element_Access);
*************** package body GNAT.Array_Split is
*** 139,145 ****
     -- Initialize --
     ----------------
  
!    procedure Initialize (S : in out Slice_Set) is
     begin
        S.D := new Data'(1, null, 0, null, null);
     end Initialize;
--- 159,165 ----
     -- Initialize --
     ----------------
  
!    overriding procedure Initialize (S : in out Slice_Set) is
     begin
        S.D := new Data'(1, null, 0, null, null);
     end Initialize;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-arrspl.ads gcc-11.1.0/gcc/ada/libgnat/g-arrspl.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-arrspl.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-arrspl.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package GNAT.Array_Split is
*** 72,78 ****
        --  separator and no empty slice is created.
       );
  
!    type Slice_Set is private;
     --  This type uses by-reference semantics. This is a set of slices as
     --  returned by Create or Set routines below. The abstraction represents
     --  a set of items. Each item is a part of the original array named a
--- 72,83 ----
        --  separator and no empty slice is created.
       );
  
!    type Slice_Set is private
!      with Iterable => (First        => First_Cursor,
!                        Next         => Advance,
!                        Has_Element  => Has_Element,
!                        Element      => Slice);
! 
     --  This type uses by-reference semantics. This is a set of slices as
     --  returned by Create or Set routines below. The abstraction represents
     --  a set of items. Each item is a part of the original array named a
*************** package GNAT.Array_Split is
*** 85,90 ****
--- 90,99 ----
        From       : Element_Sequence;
        Separators : Element_Sequence;
        Mode       : Separator_Mode := Single);
+    function Create
+      (From       : Element_Sequence;
+       Separators : Element_Sequence;
+       Mode       : Separator_Mode := Single) return Slice_Set;
     --  Create a cut array object. From is the source array, and Separators
     --  is a sequence of Element along which to split the array. The source
     --  array is sliced at separator boundaries. The separators are not
*************** package GNAT.Array_Split is
*** 99,104 ****
--- 108,117 ----
        From       : Element_Sequence;
        Separators : Element_Set;
        Mode       : Separator_Mode := Single);
+    function Create
+      (From       : Element_Sequence;
+       Separators : Element_Set;
+       Mode       : Separator_Mode := Single) return Slice_Set;
     --  Same as above but using a Element_Set
  
     procedure Set
*************** package GNAT.Array_Split is
*** 117,130 ****
     type Slice_Number is new Natural;
     --  Type used to count number of slices
  
!    function Slice_Count (S : Slice_Set) return Slice_Number;
!    pragma Inline (Slice_Count);
     --  Returns the number of slices (fields) in S
  
     function Slice
       (S     : Slice_Set;
!       Index : Slice_Number) return Element_Sequence;
!    pragma Inline (Slice);
     --  Returns the slice at position Index. First slice is 1. If Index is 0
     --  the whole array is returned including the separators (this is the
     --  original source array).
--- 130,150 ----
     type Slice_Number is new Natural;
     --  Type used to count number of slices
  
!    function Slice_Count (S : Slice_Set) return Slice_Number with Inline;
     --  Returns the number of slices (fields) in S
  
+    function First_Cursor (Unused : Slice_Set) return Slice_Number is (1);
+    function Advance
+      (Unused : Slice_Set; Position : Slice_Number) return Slice_Number
+    is (Position + 1);
+    function Has_Element
+      (Cont : Slice_Set; Position : Slice_Number) return Boolean
+    is (Position <= Slice_Count (Cont));
+    --  Functions used to iterate over a Slice_Set
+ 
     function Slice
       (S     : Slice_Set;
!       Index : Slice_Number) return Element_Sequence with Inline;
     --  Returns the slice at position Index. First slice is 1. If Index is 0
     --  the whole array is returned including the separators (this is the
     --  original source array).
*************** private
*** 184,191 ****
        D : Data_Access;
     end record;
  
!    procedure Initialize (S : in out Slice_Set);
!    procedure Adjust     (S : in out Slice_Set);
!    procedure Finalize   (S : in out Slice_Set);
  
  end GNAT.Array_Split;
--- 204,211 ----
        D : Data_Access;
     end record;
  
!    overriding procedure Initialize (S : in out Slice_Set);
!    overriding procedure Adjust     (S : in out Slice_Set);
!    overriding procedure Finalize   (S : in out Slice_Set);
  
  end GNAT.Array_Split;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-awk.adb gcc-11.1.0/gcc/ada/libgnat/g-awk.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-awk.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-awk.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-awk.ads gcc-11.1.0/gcc/ada/libgnat/g-awk.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-awk.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-awk.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-binenv.adb gcc-11.1.0/gcc/ada/libgnat/g-binenv.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-binenv.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-binenv.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2015-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2015-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-binenv.ads gcc-11.1.0/gcc/ada/libgnat/g-binenv.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-binenv.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-binenv.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2015-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2015-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-brapre.ads gcc-11.1.0/gcc/ada/libgnat/g-brapre.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-brapre.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-brapre.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                         Copyright (C) 2019, AdaCore                      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                         Copyright (C) 2019-2020, AdaCore                 --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-bubsor.adb gcc-11.1.0/gcc/ada/libgnat/g-bubsor.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-bubsor.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-bubsor.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-bubsor.ads gcc-11.1.0/gcc/ada/libgnat/g-bubsor.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-bubsor.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-bubsor.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-busora.adb gcc-11.1.0/gcc/ada/libgnat/g-busora.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-busora.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-busora.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-busora.ads gcc-11.1.0/gcc/ada/libgnat/g-busora.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-busora.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-busora.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-busorg.adb gcc-11.1.0/gcc/ada/libgnat/g-busorg.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-busorg.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-busorg.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-busorg.ads gcc-11.1.0/gcc/ada/libgnat/g-busorg.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-busorg.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-busorg.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-byorma.adb gcc-11.1.0/gcc/ada/libgnat/g-byorma.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-byorma.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-byorma.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-byorma.ads gcc-11.1.0/gcc/ada/libgnat/g-byorma.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-byorma.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-byorma.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-bytswa.adb gcc-11.1.0/gcc/ada/libgnat/g-bytswa.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-bytswa.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-bytswa.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.Byte_Swapping is
*** 45,51 ****
     function Swapped2 (Input : Item) return Item is
        function As_U16 is new Unchecked_Conversion (Item, U16);
        function As_Item is new Unchecked_Conversion (U16, Item);
!       pragma Compile_Time_Error (Item'Max_Size_In_Storage_Elements /= 2,
          "storage size must be 2 bytes");
     begin
        return As_Item (Bswap_16 (As_U16 (Input)));
--- 45,51 ----
     function Swapped2 (Input : Item) return Item is
        function As_U16 is new Unchecked_Conversion (Item, U16);
        function As_Item is new Unchecked_Conversion (U16, Item);
!       pragma Compile_Time_Warning (Item'Max_Size_In_Storage_Elements /= 2,
          "storage size must be 2 bytes");
     begin
        return As_Item (Bswap_16 (As_U16 (Input)));
*************** package body GNAT.Byte_Swapping is
*** 58,64 ****
     function Swapped4 (Input : Item) return Item is
        function As_U32 is new Unchecked_Conversion (Item, U32);
        function As_Item is new Unchecked_Conversion (U32, Item);
!       pragma Compile_Time_Error (Item'Max_Size_In_Storage_Elements /= 4,
          "storage size must be 4 bytes");
     begin
        return As_Item (Bswap_32 (As_U32 (Input)));
--- 58,64 ----
     function Swapped4 (Input : Item) return Item is
        function As_U32 is new Unchecked_Conversion (Item, U32);
        function As_Item is new Unchecked_Conversion (U32, Item);
!       pragma Compile_Time_Warning (Item'Max_Size_In_Storage_Elements /= 4,
          "storage size must be 4 bytes");
     begin
        return As_Item (Bswap_32 (As_U32 (Input)));
*************** package body GNAT.Byte_Swapping is
*** 71,77 ****
     function Swapped8 (Input : Item) return Item is
        function As_U64 is new Unchecked_Conversion (Item, U64);
        function As_Item is new Unchecked_Conversion (U64, Item);
!       pragma Compile_Time_Error (Item'Max_Size_In_Storage_Elements /= 8,
          "storage size must be 8 bytes");
     begin
        return As_Item (Bswap_64 (As_U64 (Input)));
--- 71,77 ----
     function Swapped8 (Input : Item) return Item is
        function As_U64 is new Unchecked_Conversion (Item, U64);
        function As_Item is new Unchecked_Conversion (U64, Item);
!       pragma Compile_Time_Warning (Item'Max_Size_In_Storage_Elements /= 8,
          "storage size must be 8 bytes");
     begin
        return As_Item (Bswap_64 (As_U64 (Input)));
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-bytswa.ads gcc-11.1.0/gcc/ada/libgnat/g-bytswa.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-bytswa.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-bytswa.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-calend.adb gcc-11.1.0/gcc/ada/libgnat/g-calend.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-calend.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-calend.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.Calendar is
*** 226,232 ****
  
     begin
        --  Even though the input time zone is UTC (0), the flag Use_TZ will
!       --  ensure that Split picks up the local time zone.
  
        Ada_Calendar_Split
          (Date        => Date,
--- 226,233 ----
  
     begin
        --  Even though the input time zone is UTC (0), the flag Use_TZ will
!       --  ensure that Split picks up the local time zone. ???But Use_TZ is
!       --  False below, and anyway, Use_TZ has no effect if Time_Zone is 0.
  
        Ada_Calendar_Split
          (Date        => Date,
*************** package body GNAT.Calendar is
*** 315,321 ****
  
     begin
        --  Even though the input time zone is UTC (0), the flag Use_TZ will
!       --  ensure that Split picks up the local time zone.
  
        return
          Ada_Calendar_Time_Of
--- 316,323 ----
  
     begin
        --  Even though the input time zone is UTC (0), the flag Use_TZ will
!       --  ensure that Split picks up the local time zone. ???But there is no
!       --  call to Split here.
  
        return
          Ada_Calendar_Time_Of
*************** package body GNAT.Calendar is
*** 352,357 ****
--- 354,362 ----
  
     begin
        timeval_to_duration (T, sec'Access, usec'Access);
+       pragma Annotate (CodePeer, Modified, sec);
+       pragma Annotate (CodePeer, Modified, usec);
+ 
        return Duration (sec) + Duration (usec) / Micro;
     end To_Duration;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-calend.ads gcc-11.1.0/gcc/ada/libgnat/g-calend.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-calend.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-calend.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-casuti.adb gcc-11.1.0/gcc/ada/libgnat/g-casuti.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-casuti.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-casuti.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-casuti.ads gcc-11.1.0/gcc/ada/libgnat/g-casuti.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-casuti.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-casuti.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-catiio.adb gcc-11.1.0/gcc/ada/libgnat/g-catiio.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-catiio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-catiio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,35 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with Ada.Calendar;            use Ada.Calendar;
  with Ada.Characters.Handling;
  with Ada.Strings.Unbounded;   use Ada.Strings.Unbounded;
  with Ada.Text_IO;
--- 29,34 ----
*************** package body GNAT.Calendar.Time_IO is
*** 70,75 ****
--- 69,82 ----
     -- Local Subprograms --
     -----------------------
  
+    function Image_Helper
+      (Date      : Ada.Calendar.Time;
+       Picture   : Picture_String;
+       Time_Zone : Time_Zones.Time_Offset) return String;
+    --  This is called by the two exported Image functions. It uses the local
+    --  time zone for its computations, but uses Time_Zone when interpreting the
+    --  "%:::z" tag.
+ 
     function Am_Pm (H : Natural) return String;
     --  Return AM or PM depending on the hour H
  
*************** package body GNAT.Calendar.Time_IO is
*** 93,111 ****
        Length  : Natural := 0) return String;
     --  As above with N provided in Integer format
  
!    procedure Parse_ISO_8861_UTC
        (Date    : String;
         Time    : out Ada.Calendar.Time;
         Success : out Boolean);
     --  Subsidiary of function Value. It parses the string Date, interpreted as
!    --  an ISO 8861 time representation, and returns corresponding Time value.
!    --  Success is set to False when the string is not a supported ISO 8861
!    --  date. The following regular expression defines the supported format:
!    --
!    --    (yyyymmdd | yyyy'-'mm'-'dd)'T'(hhmmss | hh':'mm':'ss)
!    --      [ ('Z' | ('.' | ',') s{s} | ('+'|'-')hh':'mm) ]
!    --
!    --  Trailing characters (in particular spaces) are not allowed.
     --
     --  Examples:
     --
--- 100,113 ----
        Length  : Natural := 0) return String;
     --  As above with N provided in Integer format
  
!    procedure Parse_ISO_8601
        (Date    : String;
         Time    : out Ada.Calendar.Time;
         Success : out Boolean);
     --  Subsidiary of function Value. It parses the string Date, interpreted as
!    --  an ISO 8601 time representation, and returns corresponding Time value.
!    --  Success is set to False when the string is not a supported ISO 8601
!    --  date.
     --
     --  Examples:
     --
*************** package body GNAT.Calendar.Time_IO is
*** 174,179 ****
--- 176,185 ----
        return Image (Sec_Number (N), Padding, Length);
     end Image;
  
+    -----------
+    -- Image --
+    -----------
+ 
     function Image
       (N       : Sec_Number;
        Padding : Padding_Mode := Zero;
*************** package body GNAT.Calendar.Time_IO is
*** 214,222 ****
--- 220,265 ----
     -----------
  
     function Image
+      (Date      : Ada.Calendar.Time;
+       Picture   : Picture_String;
+       Time_Zone : Time_Zones.Time_Offset) return String
+    is
+       --  We subtract off the local time zone, and add in the requested
+       --  Time_Zone, and then pass it on to Image_Helper, which uses the
+       --  local time zone.
+ 
+       use Time_Zones;
+       Local_TZ : constant Time_Offset := Local_Time_Offset (Date);
+       Minute_Offset : constant Integer := Integer (Time_Zone - Local_TZ);
+       Second_Offset : constant Integer := Minute_Offset * 60;
+    begin
+       return Image_Helper
+         (Date + Duration (Second_Offset), Picture, Time_Zone);
+    end Image;
+ 
+    -----------
+    -- Image --
+    -----------
+ 
+    function Image
       (Date    : Ada.Calendar.Time;
        Picture : Picture_String) return String
     is
+       use Time_Zones;
+       Local_TZ : constant Time_Offset := Local_Time_Offset (Date);
+    begin
+       return Image_Helper (Date, Picture, Local_TZ);
+    end Image;
+ 
+    ------------------
+    -- Image_Helper --
+    ------------------
+ 
+    function Image_Helper
+      (Date      : Ada.Calendar.Time;
+       Picture   : Picture_String;
+       Time_Zone : Time_Zones.Time_Offset) return String
+    is
        Padding : Padding_Mode := Zero;
        --  Padding is set for one directive
  
*************** package body GNAT.Calendar.Time_IO is
*** 409,414 ****
--- 452,494 ----
                      Image (Minute, Padding, Length => 2) & ':' &
                      Image (Second, Padding, Length => 2);
  
+                --  Time zone. Append "+hh", "-hh", "+hh:mm", or "-hh:mm", as
+                --  appropriate.
+ 
+                when ':' =>
+                   declare
+                      use type Time_Zones.Time_Offset;
+                      TZ_Form : constant Picture_String := "%:::z";
+                      TZ : constant Natural := Natural (abs Time_Zone);
+                   begin
+                      if P + TZ_Form'Length - 1 <= Picture'Last
+                        and then Picture (P .. P + TZ_Form'Length - 1) = "%:::z"
+                      then
+                         if Time_Zone >= 0 then
+                            Result := Result & "+";
+                         else
+                            Result := Result & "-";
+                         end if;
+ 
+                         Result := Result &
+                           Image (Integer (TZ / 60), Padding, Length => 2);
+ 
+                         if TZ mod 60 /= 0 then
+                            Result := Result & ":";
+                            Result := Result &
+                              Image (TZ mod 60, Padding, Length => 2);
+                         end if;
+ 
+                         P := P + TZ_Form'Length - 2; -- will add 2 below
+ 
+                      --  We do not support any of the other standard GNU
+                      --  time-zone formats (%z, %:z, %::z, %Z).
+ 
+                      else
+                         raise Picture_Error with "unsupported picture format";
+                      end if;
+                   end;
+ 
                 --  Locale's abbreviated weekday name (Sun..Sat)
  
                 when 'a' =>
*************** package body GNAT.Calendar.Time_IO is
*** 535,541 ****
        end loop;
  
        return To_String (Result);
!    end Image;
  
     --------------------------
     -- Month_Name_To_Number --
--- 615,621 ----
        end loop;
  
        return To_String (Result);
!    end Image_Helper;
  
     --------------------------
     -- Month_Name_To_Number --
*************** package body GNAT.Calendar.Time_IO is
*** 565,590 ****
        return Abbrev_Upper_Month_Names'First;
     end Month_Name_To_Number;
  
!    ------------------------
!    -- Parse_ISO_8861_UTC --
!    ------------------------
  
!    procedure Parse_ISO_8861_UTC
        (Date    : String;
         Time    : out Ada.Calendar.Time;
         Success : out Boolean)
     is
        Index : Positive := Date'First;
        --  The current character scan index. After a call to Advance, Index
        --  points to the next character.
  
-       End_Of_Source_Reached : exception;
-       --  An exception used to signal that the scan pointer has reached the
-       --  end of the source string.
- 
        Wrong_Syntax : exception;
        --  An exception used to signal that the scan pointer has reached an
!       --  unexpected character in the source string.
  
        procedure Advance;
        pragma Inline (Advance);
--- 645,673 ----
        return Abbrev_Upper_Month_Names'First;
     end Month_Name_To_Number;
  
!    --------------------
!    -- Parse_ISO_8601 --
!    --------------------
  
!    procedure Parse_ISO_8601
        (Date    : String;
         Time    : out Ada.Calendar.Time;
         Success : out Boolean)
     is
+       pragma Unsuppress (All_Checks);
+       --  This is necessary because the run-time library is usually compiled
+       --  with checks suppressed, and we are relying on constraint checks in
+       --  this code to catch syntax errors in the Date string (e.g. out of
+       --  bounds slices).
+ 
        Index : Positive := Date'First;
        --  The current character scan index. After a call to Advance, Index
        --  points to the next character.
  
        Wrong_Syntax : exception;
        --  An exception used to signal that the scan pointer has reached an
!       --  unexpected character in the source string, or if premature
!       --  end-of-source was reached.
  
        procedure Advance;
        pragma Inline (Advance);
*************** package body GNAT.Calendar.Time_IO is
*** 642,654 ****
  
        procedure Advance is
        begin
!          --  Signal the end of the source string. This stops a complex scan by
!          --  bottoming up any recursive calls till control reaches routine Scan
!          --  which handles the exception. Certain scanning scenarios may handle
!          --  this exception on their own.
  
           if Index > Date'Last then
!             raise End_Of_Source_Reached;
  
           --  Advance the scan pointer as long as there are characters to scan,
           --  in other words, the scan pointer has not passed the end of the
--- 725,736 ----
  
        procedure Advance is
        begin
!          --  Signal the end of the source string. This stops a complex scan
!          --  by bottoming up any recursive calls till control reaches routine
!          --  Scan, which handles the exception.
  
           if Index > Date'Last then
!             raise Wrong_Syntax;
  
           --  Advance the scan pointer as long as there are characters to scan,
           --  in other words, the scan pointer has not passed the end of the
*************** package body GNAT.Calendar.Time_IO is
*** 767,783 ****
        begin
           Advance_Digits (Num_Digits => 1);
  
!          while Symbol in '0' .. '9'
!            and then Index < Date'Length
!          loop
              Advance;
           end loop;
  
-          if Symbol not in '0' .. '9' then
-             raise Wrong_Syntax;
-          end if;
- 
-          Advance;
           return Second_Duration'Value ("0." & Date (From .. Index - 1));
        end Scan_Subsecond;
  
--- 849,858 ----
        begin
           Advance_Digits (Num_Digits => 1);
  
!          while Index <= Date'Length and then Symbol in '0' .. '9' loop
              Advance;
           end loop;
  
           return Second_Duration'Value ("0." & Date (From .. Index - 1));
        end Scan_Subsecond;
  
*************** package body GNAT.Calendar.Time_IO is
*** 804,810 ****
           --  this exception on their own.
  
           if Index > Date'Last then
!             raise End_Of_Source_Reached;
  
           else
              return Date (Index);
--- 879,885 ----
           --  this exception on their own.
  
           if Index > Date'Last then
!             raise Wrong_Syntax;
  
           else
              return Date (Index);
*************** package body GNAT.Calendar.Time_IO is
*** 813,837 ****
  
        --  Local variables
  
        Date_Separator : constant Character := '-';
        Hour_Separator : constant Character := ':';
  
!       Day          : Day_Number;
!       Month        : Month_Number;
!       Year         : Year_Number;
!       Hour         : Hour_Number     := 0;
!       Minute       : Minute_Number   := 0;
!       Second       : Second_Number   := 0;
!       Subsec       : Second_Duration := 0.0;
  
!       Local_Hour   : Hour_Number     := 0;
!       Local_Minute : Minute_Number   := 0;
!       Local_Sign   : Character       := ' ';
!       Local_Disp   : Duration;
  
        Sep_Required : Boolean := False;
        --  True if a separator is seen (and therefore required after it!)
  
     begin
        --  Parse date
  
--- 888,916 ----
  
        --  Local variables
  
+       use Time_Zones;
+ 
        Date_Separator : constant Character := '-';
        Hour_Separator : constant Character := ':';
  
!       Day    : Day_Number;
!       Month  : Month_Number;
!       Year   : Year_Number;
!       Hour   : Hour_Number     := 0;
!       Minute : Minute_Number   := 0;
!       Second : Second_Number   := 0;
!       Subsec : Second_Duration := 0.0;
  
!       Time_Zone_Seen   : Boolean := False;
!       Time_Zone_Offset : Time_Offset; -- Valid only if Time_Zone_Seen
  
        Sep_Required : Boolean := False;
        --  True if a separator is seen (and therefore required after it!)
  
+       subtype Sign_Type is Character with Predicate => Sign_Type in '+' | '-';
+ 
+    --  Start of processing for Parse_ISO_8601
+ 
     begin
        --  Parse date
  
*************** package body GNAT.Calendar.Time_IO is
*** 856,880 ****
  
           Second := Scan_Second;
  
!          --  [('Z' | ('.' | ',') s{s} | ('+'|'-')hh:mm)]
  
           if Index <= Date'Last then
- 
-             --  Suffix 'Z' just confirms that this is an UTC time. No further
-             --  action needed.
- 
-             if Symbol = 'Z' then
-                Advance;
- 
              --  A decimal fraction shall have at least one digit, and has as
              --  many digits as supported by the underlying implementation.
              --  The valid decimal separators are those specified in ISO 31-0,
              --  i.e. the comma [,] or full stop [.]. Of these, the comma is
!             --  the preferred separator of ISO-8861.
  
!             elsif Symbol = ',' or else Symbol = '.' then
                 Advance; --  past decimal separator
                 Subsec := Scan_Subsecond;
  
              --  Difference between local time and UTC: It shall be expressed
              --  as positive (i.e. with the leading plus sign [+]) if the local
--- 935,965 ----
  
           Second := Scan_Second;
  
!          --  [ ('.' | ',') s{s} ]
  
           if Index <= Date'Last then
              --  A decimal fraction shall have at least one digit, and has as
              --  many digits as supported by the underlying implementation.
              --  The valid decimal separators are those specified in ISO 31-0,
              --  i.e. the comma [,] or full stop [.]. Of these, the comma is
!             --  the preferred separator of ISO-8601.
  
!             if Symbol = ',' or else Symbol = '.' then
                 Advance; --  past decimal separator
                 Subsec := Scan_Subsecond;
+             end if;
+          end if;
+ 
+          --  [ ('Z' | ('+'|'-')hh':'mm) ]
+ 
+          if Index <= Date'Last then
+             Time_Zone_Seen := Symbol in 'Z' | Sign_Type;
+ 
+             --  Suffix 'Z' signifies that this is UTC time (time zone 0)
+ 
+             if Symbol = 'Z' then
+                Time_Zone_Offset := 0;
+                Advance;
  
              --  Difference between local time and UTC: It shall be expressed
              --  as positive (i.e. with the leading plus sign [+]) if the local
*************** package body GNAT.Calendar.Time_IO is
*** 884,945 ****
              --  if the difference between the time scales is exactly an
              --  integral number of hours.
  
!             elsif Symbol = '+' or else Symbol = '-' then
!                Local_Sign := Symbol;
!                Advance;
!                Local_Hour := Scan_Hour;
  
!                --  Past ':'
  
!                if Index < Date'Last and then Symbol = Hour_Separator then
!                   Advance;
!                   Local_Minute := Scan_Minute;
!                end if;
  
!                --  Compute local displacement
  
!                Local_Disp := Local_Hour * 3600.0 + Local_Minute * 60.0;
              else
                 raise Wrong_Syntax;
              end if;
           end if;
        end if;
  
!       --  Sanity checks. The check on Index ensures that there are no trailing
!       --  characters.
  
!       if Index /= Date'Length + 1
!         or else not Year'Valid
!         or else not Month'Valid
!         or else not Day'Valid
!         or else not Hour'Valid
!         or else not Minute'Valid
!         or else not Second'Valid
!         or else not Subsec'Valid
!         or else not Local_Hour'Valid
!         or else not Local_Minute'Valid
!       then
           raise Wrong_Syntax;
        end if;
  
!       --  Compute time without local displacement
! 
!       if Local_Sign = ' ' then
!          Time := Time_Of (Year, Month, Day, Hour, Minute, Second, Subsec);
! 
!       --  Compute time with positive local displacement
! 
!       elsif Local_Sign = '+' then
!          Time :=
!            Time_Of (Year, Month, Day, Hour, Minute, Second, Subsec) -
!              Local_Disp;
! 
!       --  Compute time with negative local displacement
  
!       elsif Local_Sign = '-' then
!          Time :=
!            Time_Of (Year, Month, Day, Hour, Minute, Second, Subsec) +
!              Local_Disp;
        end if;
  
        --  Notify that the input string was successfully parsed
--- 969,1025 ----
              --  if the difference between the time scales is exactly an
              --  integral number of hours.
  
!             elsif Symbol in Sign_Type then
!                declare
!                   Time_Zone_Sign   : constant Sign_Type := Symbol;
!                   Time_Zone_Hour   : Hour_Number;
!                   Time_Zone_Minute : Minute_Number;
!                begin
!                   Advance;
!                   Time_Zone_Hour := Scan_Hour;
  
!                   --  Past ':'
  
!                   if Index < Date'Last and then Symbol = Hour_Separator then
!                      Advance;
!                      Time_Zone_Minute := Scan_Minute;
!                   else
!                      Time_Zone_Minute := 0;
!                   end if;
  
!                   --  Compute Time_Zone_Offset
  
!                   Time_Zone_Offset :=
!                     Time_Offset (Time_Zone_Hour * 60 + Time_Zone_Minute);
! 
!                   case Time_Zone_Sign is
!                      when '+' => null;
!                      when '-' => Time_Zone_Offset := -Time_Zone_Offset;
!                   end case;
!                end;
              else
                 raise Wrong_Syntax;
              end if;
           end if;
        end if;
  
!       --  Check for trailing characters
  
!       if Index /= Date'Length + 1 then
           raise Wrong_Syntax;
        end if;
  
!       --  If a time zone was specified, use Ada.Calendar.Formatting.Time_Of,
!       --  and specify the time zone. Otherwise, call GNAT.Calendar.Time_Of,
!       --  which uses local time.
  
!       if Time_Zone_Seen then
!          Time := Ada.Calendar.Formatting.Time_Of
!            (Year, Month, Day, Hour, Minute, Second, Subsec,
!             Time_Zone => Time_Zone_Offset);
!       else
!          Time := GNAT.Calendar.Time_Of
!            (Year, Month, Day, Hour, Minute, Second, Subsec);
        end if;
  
        --  Notify that the input string was successfully parsed
*************** package body GNAT.Calendar.Time_IO is
*** 947,963 ****
        Success := True;
  
     exception
!       when End_Of_Source_Reached
!          | Wrong_Syntax
!       =>
           Success := False;
!    end Parse_ISO_8861_UTC;
  
     -----------
     -- Value --
     -----------
  
     function Value (Date : String) return Ada.Calendar.Time is
        D          : String (1 .. 21);
        D_Length   : constant Natural := Date'Length;
  
--- 1027,1048 ----
        Success := True;
  
     exception
!       when Wrong_Syntax | Constraint_Error =>
!          --  If constraint check fails, we want to behave the same as
!          --  Wrong_Syntax; we want the caller (Value) to try other
!          --  allowed syntaxes.
!          Time :=
!            Time_Of (Year_Number'First, Month_Number'First, Day_Number'First);
           Success := False;
!    end Parse_ISO_8601;
  
     -----------
     -- Value --
     -----------
  
     function Value (Date : String) return Ada.Calendar.Time is
+       pragma Unsuppress (All_Checks); -- see comment in Parse_ISO_8601
+ 
        D          : String (1 .. 21);
        D_Length   : constant Natural := Date'Length;
  
*************** package body GNAT.Calendar.Time_IO is
*** 1172,1181 ****
     --  Start of processing for Value
  
     begin
!       --  Let's try parsing Date as a supported ISO-8861 format. If we do not
        --  succeed, then retry using all the other GNAT supported formats.
  
!       Parse_ISO_8861_UTC (Date, Time, Success);
  
        if Success then
           return Time;
--- 1257,1266 ----
     --  Start of processing for Value
  
     begin
!       --  Let's try parsing Date as a supported ISO-8601 format. If we do not
        --  succeed, then retry using all the other GNAT supported formats.
  
!       Parse_ISO_8601 (Date, Time, Success);
  
        if Success then
           return Time;
*************** package body GNAT.Calendar.Time_IO is
*** 1183,1197 ****
  
        --  Length checks
  
!       if D_Length /= 8
!         and then D_Length /= 10
!         and then D_Length /= 11
!         and then D_Length /= 12
!         and then D_Length /= 17
!         and then D_Length /= 19
!         and then D_Length /= 20
!         and then D_Length /= 21
!       then
           raise Constraint_Error;
        end if;
  
--- 1268,1274 ----
  
        --  Length checks
  
!       if D_Length not in 8 | 10 | 11 | 12 | 17 | 19 | 20 | 21 then
           raise Constraint_Error;
        end if;
  
*************** package body GNAT.Calendar.Time_IO is
*** 1215,1232 ****
           Extract_Time (1, Hour, Minute, Second, Check_Space => False);
        end if;
  
-       --  Sanity checks
- 
-       if not Year'Valid
-         or else not Month'Valid
-         or else not Day'Valid
-         or else not Hour'Valid
-         or else not Minute'Valid
-         or else not Second'Valid
-       then
-          raise Constraint_Error;
-       end if;
- 
        return Time_Of (Year, Month, Day, Hour, Minute, Second);
     end Value;
  
--- 1292,1297 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-catiio.ads gcc-11.1.0/gcc/ada/libgnat/g-catiio.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-catiio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-catiio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,37 ****
--- 32,39 ----
  --  This package augments standard Ada.Text_IO with facilities for input
  --  and output of time values in standardized format.
  
+ with Ada.Calendar.Time_Zones; use Ada.Calendar;
+ 
  package GNAT.Calendar.Time_IO is
  
     Picture_Error : exception;
*************** package GNAT.Calendar.Time_IO is
*** 41,47 ****
     --  This is a string to describe date and time output format. The string is
     --  a set of standard character and special tag that are replaced by the
     --  corresponding values. It follows the GNU Date specification. Here are
!    --  the recognized directives :
     --
     --          %    a literal %
     --          n    a newline
--- 43,49 ----
     --  This is a string to describe date and time output format. The string is
     --  a set of standard character and special tag that are replaced by the
     --  corresponding values. It follows the GNU Date specification. Here are
!    --  the recognized directives:
     --
     --          %    a literal %
     --          n    a newline
*************** package GNAT.Calendar.Time_IO is
*** 60,65 ****
--- 62,69 ----
     --                (a nonstandard extension)
     --          %S   second (00..59)
     --          %T   time, 24-hour (hh:mm:ss)
+    --          %:::z  numeric time zone with : to necessary precision
+    --                 (e.g., -04, +05:30)
     --
     --          Date fields:
     --
*************** package GNAT.Calendar.Time_IO is
*** 96,103 ****
     --          %e   microseconds (6 digits)
     --          %o   nanoseconds  (9 digits)
  
     ISO_Date : constant Picture_String;
!    --  This format follow the ISO 8601 standard. The format is "YYYY-MM-DD",
     --  four digits year, month and day number separated by minus.
  
     US_Date : constant Picture_String;
--- 100,110 ----
     --          %e   microseconds (6 digits)
     --          %o   nanoseconds  (9 digits)
  
+    ISO_Time : constant Picture_String;
+    --  ISO 8601 standard date and time, with time zone.
+ 
     ISO_Date : constant Picture_String;
!    --  This format follows the ISO 8601 standard. The format is "YYYY-MM-DD",
     --  four digits year, month and day number separated by minus.
  
     US_Date : constant Picture_String;
*************** package GNAT.Calendar.Time_IO is
*** 115,120 ****
--- 122,134 ----
     --  with format Picture. Raise Picture_Error if picture string is null or
     --  has an incorrect format.
  
+    function Image
+      (Date      : Ada.Calendar.Time;
+       Picture   : Picture_String;
+       Time_Zone : Time_Zones.Time_Offset) return String;
+    --  Same as previous Image, except it uses the specified time zone instead
+    --  of the local time zone.
+ 
     function Value (Date : String) return Ada.Calendar.Time;
     --  Parse the string Date, interpreted as a time representation in the
     --  current local time zone, and return the corresponding Time value. The
*************** package GNAT.Calendar.Time_IO is
*** 141,151 ****
     --     mmm dd, yyyy         - month spelled out
     --     dd mmm yyyy          - month spelled out
     --
!    --  The following ISO-8861 format expressed as a regular expression is also
     --  supported:
     --
     --    (yyyymmdd | yyyy'-'mm'-'dd)'T'(hhmmss | hh':'mm':'ss)
!    --      [ ('Z' | ('.' | ',') s{s} | ('+'|'-')hh':'mm) ]
     --
     --  Examples:
     --
--- 155,169 ----
     --     mmm dd, yyyy         - month spelled out
     --     dd mmm yyyy          - month spelled out
     --
!    --  The following ISO-8601 format expressed as a regular expression is also
     --  supported:
     --
     --    (yyyymmdd | yyyy'-'mm'-'dd)'T'(hhmmss | hh':'mm':'ss)
!    --      [ ('.' | ',') s{s} ]
!    --      [ ('Z' | ('+'|'-')hh':'mm) ]
!    --  Trailing characters (including spaces) are not allowed.
!    --  In the ISO case, the current time zone is not used; the time zone
!    --  is as specified in the string, defaulting to UTC.
     --
     --  Examples:
     --
*************** package GNAT.Calendar.Time_IO is
*** 161,166 ****
--- 179,185 ----
     --  Put Date with format Picture. Raise Picture_Error if bad picture string
  
  private
+    ISO_Time      : constant Picture_String := "%Y-%m-%dT%H:%M:%S%:::z";
     ISO_Date      : constant Picture_String := "%Y-%m-%d";
     US_Date       : constant Picture_String := "%m/%d/%y";
     European_Date : constant Picture_String := "%d/%m/%y";
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-cgi.adb gcc-11.1.0/gcc/ada/libgnat/g-cgi.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-cgi.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-cgi.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                      Copyright (C) 2001-2019, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                      Copyright (C) 2001-2020, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-cgi.ads gcc-11.1.0/gcc/ada/libgnat/g-cgi.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-cgi.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-cgi.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-cgicoo.adb gcc-11.1.0/gcc/ada/libgnat/g-cgicoo.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-cgicoo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-cgicoo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-cgicoo.ads gcc-11.1.0/gcc/ada/libgnat/g-cgicoo.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-cgicoo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-cgicoo.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-cgideb.adb gcc-11.1.0/gcc/ada/libgnat/g-cgideb.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-cgideb.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-cgideb.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-cgideb.ads gcc-11.1.0/gcc/ada/libgnat/g-cgideb.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-cgideb.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-cgideb.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-comlin.adb gcc-11.1.0/gcc/ada/libgnat/g-comlin.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-comlin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-comlin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.Command_Line is
*** 537,542 ****
--- 537,543 ----
        P      : Switch_Parameter_Type;
  
     begin
+       Param             := Parameter_None;
        Index_In_Switches := 0;
        Switch_Length     := 0;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-comlin.ads gcc-11.1.0/gcc/ada/libgnat/g-comlin.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-comlin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-comlin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-comver.adb gcc-11.1.0/gcc/ada/libgnat/g-comver.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-comver.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-comver.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-comver.ads gcc-11.1.0/gcc/ada/libgnat/g-comver.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-comver.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-comver.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-cppexc.adb gcc-11.1.0/gcc/ada/libgnat/g-cppexc.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-cppexc.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-cppexc.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                        Copyright (C) 2013-2019, AdaCore                  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                        Copyright (C) 2013-2020, AdaCore                  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-cppexc.ads gcc-11.1.0/gcc/ada/libgnat/g-cppexc.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-cppexc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-cppexc.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                        Copyright (C) 2013-2019, AdaCore                  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                        Copyright (C) 2013-2020, AdaCore                  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-crc32.adb gcc-11.1.0/gcc/ada/libgnat/g-crc32.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-crc32.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-crc32.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-crc32.ads gcc-11.1.0/gcc/ada/libgnat/g-crc32.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-crc32.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-crc32.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2004-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2004-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-ctrl_c.adb gcc-11.1.0/gcc/ada/libgnat/g-ctrl_c.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-ctrl_c.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-ctrl_c.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                      Copyright (C) 2002-2019, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                      Copyright (C) 2002-2020, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-ctrl_c.ads gcc-11.1.0/gcc/ada/libgnat/g-ctrl_c.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-ctrl_c.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-ctrl_c.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                      Copyright (C) 2002-2019, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                      Copyright (C) 2002-2020, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-curexc.ads gcc-11.1.0/gcc/ada/libgnat/g-curexc.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-curexc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-curexc.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                      Copyright (C) 1996-2019, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                      Copyright (C) 1996-2020, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-debpoo.adb gcc-11.1.0/gcc/ada/libgnat/g-debpoo.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-debpoo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-debpoo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.Debug_Pools is
*** 1420,1425 ****
--- 1420,1426 ----
  
     begin
        Valid := Is_Valid (Storage_Address);
+       Size_In_Storage_Elements := Storage_Count'First;
  
        if Is_Valid (Storage_Address) then
           declare
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-debpoo.ads gcc-11.1.0/gcc/ada/libgnat/g-debpoo.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-debpoo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-debpoo.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package GNAT.Debug_Pools is
*** 299,305 ****
     --  If Valid is True, Size_In_Storage_Elements is set to the size of this
     --  chunk of memory.
  
!    type Byte_Count is mod System.Max_Binary_Modulus;
     --  Type used for maintaining byte counts, needs to be large enough to
     --  to accommodate counts allowing for repeated use of the same memory.
  
--- 299,305 ----
     --  If Valid is True, Size_In_Storage_Elements is set to the size of this
     --  chunk of memory.
  
!    type Byte_Count is mod 2 ** Long_Long_Integer'Size;
     --  Type used for maintaining byte counts, needs to be large enough to
     --  to accommodate counts allowing for repeated use of the same memory.
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-debuti.adb gcc-11.1.0/gcc/ada/libgnat/g-debuti.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-debuti.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-debuti.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-debuti.ads gcc-11.1.0/gcc/ada/libgnat/g-debuti.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-debuti.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-debuti.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-decstr.adb gcc-11.1.0/gcc/ada/libgnat/g-decstr.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-decstr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-decstr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-decstr.ads gcc-11.1.0/gcc/ada/libgnat/g-decstr.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-decstr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-decstr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-deutst.ads gcc-11.1.0/gcc/ada/libgnat/g-deutst.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-deutst.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-deutst.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2007-2019, AdaCore                   --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2007-2020, AdaCore                   --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-diopit.adb gcc-11.1.0/gcc/ada/libgnat/g-diopit.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-diopit.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-diopit.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,37 ****
--- 32,38 ----
  with Ada.Characters.Handling;
  with Ada.Strings.Fixed;
  with Ada.Strings.Maps;
+ 
  with GNAT.OS_Lib;
  with GNAT.Regexp;
  
*************** package body GNAT.Directory_Operations.I
*** 49,55 ****
     is
        File_Regexp : constant Regexp.Regexp := Regexp.Compile (File_Pattern);
        Index       : Natural := 0;
!       Quit        : Boolean;
  
        procedure Read_Directory (Directory : Dir_Name_Str);
        --  Open Directory and read all entries. This routine is called
--- 50,56 ----
     is
        File_Regexp : constant Regexp.Regexp := Regexp.Compile (File_Pattern);
        Index       : Natural := 0;
!       Quit        : Boolean := False;
  
        procedure Read_Directory (Directory : Dir_Name_Str);
        --  Open Directory and read all entries. This routine is called
*************** package body GNAT.Directory_Operations.I
*** 113,118 ****
--- 114,120 ----
  
                 if not (Dir_Entry = "." or else Dir_Entry = "..")
                   and then OS_Lib.Is_Directory (Pathname)
+                  and then not OS_Lib.Is_Symbolic_Link (Pathname)
                 then
                    Read_Directory (Pathname);
                    exit when Quit;
*************** package body GNAT.Directory_Operations.I
*** 124,130 ****
        end Read_Directory;
  
     begin
-       Quit := False;
        Read_Directory (Root_Directory);
     end Find;
  
--- 126,131 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-diopit.ads gcc-11.1.0/gcc/ada/libgnat/g-diopit.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-diopit.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-diopit.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package GNAT.Directory_Operations.Iterat
*** 50,55 ****
--- 50,57 ----
     --  will pass in the value False on each call to Action. The iterator will
     --  terminate after passing the last matched path to Action or after
     --  returning from a call to Action which sets Quit to True.
+    --  The iterator does not follow symbolic links avoiding possible
+    --  circularities or exploring unrelated directories.
     --  Raises GNAT.Regexp.Error_In_Regexp if File_Pattern is ill formed.
  
     generic
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-dirope.adb gcc-11.1.0/gcc/ada/libgnat/g-dirope.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-dirope.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-dirope.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.Directory_Operations i
*** 352,357 ****
--- 352,359 ----
        begin
           K := K + 1;
  
+          pragma Annotate (CodePeer, Modified, P);
+ 
           if P = '%' or else Path (K) = '{' then
  
              --  Set terminator character
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-dirope.ads gcc-11.1.0/gcc/ada/libgnat/g-dirope.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-dirope.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-dirope.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-dynhta.adb gcc-11.1.0/gcc/ada/libgnat/g-dynhta.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-dynhta.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-dynhta.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-dynhta.ads gcc-11.1.0/gcc/ada/libgnat/g-dynhta.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-dynhta.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-dynhta.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-dyntab.adb gcc-11.1.0/gcc/ada/libgnat/g-dyntab.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-dyntab.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-dyntab.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-dyntab.ads gcc-11.1.0/gcc/ada/libgnat/g-dyntab.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-dyntab.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-dyntab.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-eacodu.adb gcc-11.1.0/gcc/ada/libgnat/g-eacodu.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-eacodu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-eacodu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-encstr.adb gcc-11.1.0/gcc/ada/libgnat/g-encstr.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-encstr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-encstr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2007-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2007-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-encstr.ads gcc-11.1.0/gcc/ada/libgnat/g-encstr.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-encstr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-encstr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-enutst.ads gcc-11.1.0/gcc/ada/libgnat/g-enutst.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-enutst.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-enutst.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2007-2019, AdaCore                   --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2007-2020, AdaCore                   --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-excact.adb gcc-11.1.0/gcc/ada/libgnat/g-excact.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-excact.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-excact.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.Exception_Table;  use System
*** 38,46 ****
  package body GNAT.Exception_Actions is
  
     Global_Action : Exception_Action;
!    pragma Import (C, Global_Action, "__gnat_exception_actions_global_action");
     --  Imported from Ada.Exceptions. Any change in the external name needs to
!    --  be coordinated with a-except.adb
  
     Raise_Hook_Initialized : Boolean;
     pragma Import
--- 38,56 ----
  package body GNAT.Exception_Actions is
  
     Global_Action : Exception_Action;
!    pragma Import
!      (Ada, Global_Action, "__gnat_exception_actions_global_action");
!    pragma Atomic (Global_Action);
     --  Imported from Ada.Exceptions. Any change in the external name needs to
!    --  be coordinated with a-exextr.adb.
! 
!    Global_Unhandled_Action : Exception_Action;
!    pragma Import
!      (Ada, Global_Unhandled_Action,
!       "__gnat_exception_actions_global_unhandled_action");
!    pragma Atomic (Global_Unhandled_Action);
!    --  Imported from Ada.Exceptions. Any change in the external name needs to
!    --  be coordinated with a-exextr.adb.
  
     Raise_Hook_Initialized : Boolean;
     pragma Import
*************** package body GNAT.Exception_Actions is
*** 61,71 ****
  
     procedure Register_Global_Action (Action : Exception_Action) is
     begin
-       Lock_Task.all;
        Global_Action := Action;
-       Unlock_Task.all;
     end Register_Global_Action;
  
     ------------------------
     -- Register_Id_Action --
     ------------------------
--- 71,88 ----
  
     procedure Register_Global_Action (Action : Exception_Action) is
     begin
        Global_Action := Action;
     end Register_Global_Action;
  
+    --------------------------------------
+    -- Register_Global_Unhandled_Action --
+    --------------------------------------
+ 
+    procedure Register_Global_Unhandled_Action (Action : Exception_Action) is
+    begin
+       Global_Unhandled_Action := Action;
+    end Register_Global_Unhandled_Action;
+ 
     ------------------------
     -- Register_Id_Action --
     ------------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-excact.ads gcc-11.1.0/gcc/ada/libgnat/g-excact.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-excact.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-excact.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package GNAT.Exception_Actions is
*** 57,62 ****
--- 57,63 ----
  
     type Exception_Action is access
       procedure (Occurrence : Exception_Occurrence);
+    pragma Favor_Top_Level (Exception_Action);
     --  General callback type whenever an exception is raised. The callback
     --  procedure must not propagate an exception (execution of the program
     --  is erroneous if such an exception is propagated).
*************** package GNAT.Exception_Actions is
*** 69,74 ****
--- 70,79 ----
     --  Action is called before the exception is propagated to user's code.
     --  If Action is null, this will in effect cancel all exception actions.
  
+    procedure Register_Global_Unhandled_Action (Action : Exception_Action);
+    --  Similar to Register_Global_Action, called on unhandled exceptions
+    --  only.
+ 
     procedure Register_Id_Action
       (Id     : Exception_Id;
        Action : Exception_Action);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-except.ads gcc-11.1.0/gcc/ada/libgnat/g-except.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-except.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-except.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-exctra.adb gcc-11.1.0/gcc/ada/libgnat/g-exctra.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-exctra.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-exctra.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-exctra.ads gcc-11.1.0/gcc/ada/libgnat/g-exctra.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-exctra.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-exctra.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-expect.adb gcc-11.1.0/gcc/ada/libgnat/g-expect.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-expect.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-expect.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.Expect is
*** 1181,1186 ****
--- 1181,1192 ----
           Set_Up_Child_Communications
             (Descriptor, Pipe1, Pipe2, Pipe3, Command_With_Path.all,
              C_Arg_List'Address);
+ 
+          --  On Windows systems we need to release memory taken for Arg_List
+ 
+          for A of Arg_List loop
+             Free (A);
+          end loop;
        end if;
  
        Free (Command_With_Path);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-expect.ads gcc-11.1.0/gcc/ada/libgnat/g-expect.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-expect.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-expect.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-exptty.adb gcc-11.1.0/gcc/ada/libgnat/g-exptty.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-exptty.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-exptty.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                    Copyright (C) 2000-2019, AdaCore                      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                    Copyright (C) 2000-2020, AdaCore                      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.Expect.TTY is
*** 314,322 ****
     overriding procedure Set_Up_Communications
       (Pid        : in out TTY_Process_Descriptor;
        Err_To_Out : Boolean;
!       Pipe1      : access Pipe_Type;
!       Pipe2      : access Pipe_Type;
!       Pipe3      : access Pipe_Type)
     is
        pragma Unreferenced (Err_To_Out, Pipe1, Pipe2, Pipe3);
  
--- 314,322 ----
     overriding procedure Set_Up_Communications
       (Pid        : in out TTY_Process_Descriptor;
        Err_To_Out : Boolean;
!       Pipe1      : not null access Pipe_Type;
!       Pipe2      : not null access Pipe_Type;
!       Pipe3      : not null access Pipe_Type)
     is
        pragma Unreferenced (Err_To_Out, Pipe1, Pipe2, Pipe3);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-exptty.ads gcc-11.1.0/gcc/ada/libgnat/g-exptty.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-exptty.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-exptty.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                    Copyright (C) 2000-2019, AdaCore                      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                    Copyright (C) 2000-2020, AdaCore                      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** private
*** 116,124 ****
     procedure Set_Up_Communications
       (Pid        : in out TTY_Process_Descriptor;
        Err_To_Out : Boolean;
!       Pipe1      : access Pipe_Type;
!       Pipe2      : access Pipe_Type;
!       Pipe3      : access Pipe_Type);
  
     procedure Set_Up_Parent_Communications
       (Pid   : in out TTY_Process_Descriptor;
--- 116,124 ----
     procedure Set_Up_Communications
       (Pid        : in out TTY_Process_Descriptor;
        Err_To_Out : Boolean;
!       Pipe1      : not null access Pipe_Type;
!       Pipe2      : not null access Pipe_Type;
!       Pipe3      : not null access Pipe_Type);
  
     procedure Set_Up_Parent_Communications
       (Pid   : in out TTY_Process_Descriptor;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-flocon.ads gcc-11.1.0/gcc/ada/libgnat/g-flocon.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-flocon.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-flocon.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-forstr.adb gcc-11.1.0/gcc/ada/libgnat/g-forstr.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-forstr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-forstr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2014-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2014-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-forstr.ads gcc-11.1.0/gcc/ada/libgnat/g-forstr.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-forstr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-forstr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2014-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2014-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-graphs.adb gcc-11.1.0/gcc/ada/libgnat/g-graphs.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-graphs.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-graphs.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2018-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2018-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-graphs.ads gcc-11.1.0/gcc/ada/libgnat/g-graphs.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-graphs.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-graphs.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2018-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2018-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-heasor.adb gcc-11.1.0/gcc/ada/libgnat/g-heasor.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-heasor.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-heasor.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-heasor.ads gcc-11.1.0/gcc/ada/libgnat/g-heasor.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-heasor.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-heasor.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-hesora.adb gcc-11.1.0/gcc/ada/libgnat/g-hesora.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-hesora.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-hesora.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-hesora.ads gcc-11.1.0/gcc/ada/libgnat/g-hesora.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-hesora.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-hesora.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-hesorg.adb gcc-11.1.0/gcc/ada/libgnat/g-hesorg.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-hesorg.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-hesorg.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.Heap_Sort_G is
*** 45,50 ****
--- 45,52 ----
     --  from 2NlogN to NlogN.
  
     procedure Sort (N : Natural) is
+       pragma Annotate (CodePeer, Skip_Analysis);
+       --  CodePeer is sometimes getting confused on this procedure
  
        Max : Natural := N;
        --  Current Max index in tree being sifted
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-hesorg.ads gcc-11.1.0/gcc/ada/libgnat/g-hesorg.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-hesorg.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-hesorg.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-htable.adb gcc-11.1.0/gcc/ada/libgnat/g-htable.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-htable.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-htable.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-htable.ads gcc-11.1.0/gcc/ada/libgnat/g-htable.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-htable.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-htable.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-io-put__vxworks.adb gcc-11.1.0/gcc/ada/libgnat/g-io-put__vxworks.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-io-put__vxworks.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-io-put__vxworks.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-io.adb gcc-11.1.0/gcc/ada/libgnat/g-io.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-io.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-io.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.IO is
*** 47,56 ****
     end Get;
  
     procedure Get (C : out Character) is
!       function Get_Char return Character;
        pragma Import (C, Get_Char, "get_char");
     begin
!       C := Get_Char;
     end Get;
  
     --------------
--- 47,56 ----
     end Get;
  
     procedure Get (C : out Character) is
!       function Get_Char return Integer;
        pragma Import (C, Get_Char, "get_char");
     begin
!       C := Character'Val (Get_Char);
     end Get;
  
     --------------
*************** package body GNAT.IO is
*** 121,136 ****
     end Put;
  
     procedure Put (File : File_Type; C : Character) is
!       procedure Put_Char (C : Character);
        pragma Import (C, Put_Char, "put_char");
  
!       procedure Put_Char_Stderr (C : Character);
        pragma Import (C, Put_Char_Stderr, "put_char_stderr");
  
     begin
        case File is
!          when Stdout => Put_Char (C);
!          when Stderr => Put_Char_Stderr (C);
        end case;
     end Put;
  
--- 121,136 ----
     end Put;
  
     procedure Put (File : File_Type; C : Character) is
!       procedure Put_Char (C : Integer);
        pragma Import (C, Put_Char, "put_char");
  
!       procedure Put_Char_Stderr (C : Integer);
        pragma Import (C, Put_Char_Stderr, "put_char_stderr");
  
     begin
        case File is
!          when Stdout => Put_Char (Character'Pos (C));
!          when Stderr => Put_Char_Stderr (Character'Pos (C));
        end case;
     end Put;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-io.ads gcc-11.1.0/gcc/ada/libgnat/g-io.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-io.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-io.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-io_aux.adb gcc-11.1.0/gcc/ada/libgnat/g-io_aux.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-io_aux.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-io_aux.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-io_aux.ads gcc-11.1.0/gcc/ada/libgnat/g-io_aux.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-io_aux.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-io_aux.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-lists.adb gcc-11.1.0/gcc/ada/libgnat/g-lists.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-lists.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-lists.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2018-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2018-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-lists.ads gcc-11.1.0/gcc/ada/libgnat/g-lists.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-lists.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-lists.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2018-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2018-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-locfil.adb gcc-11.1.0/gcc/ada/libgnat/g-locfil.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-locfil.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-locfil.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-locfil.ads gcc-11.1.0/gcc/ada/libgnat/g-locfil.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-locfil.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-locfil.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-mbdira.adb gcc-11.1.0/gcc/ada/libgnat/g-mbdira.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-mbdira.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-mbdira.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-mbdira.ads gcc-11.1.0/gcc/ada/libgnat/g-mbdira.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-mbdira.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-mbdira.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-mbflra.adb gcc-11.1.0/gcc/ada/libgnat/g-mbflra.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-mbflra.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-mbflra.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-mbflra.ads gcc-11.1.0/gcc/ada/libgnat/g-mbflra.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-mbflra.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-mbflra.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-md5.adb gcc-11.1.0/gcc/ada/libgnat/g-md5.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-md5.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-md5.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-md5.ads gcc-11.1.0/gcc/ada/libgnat/g-md5.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-md5.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-md5.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-memdum.adb gcc-11.1.0/gcc/ada/libgnat/g-memdum.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-memdum.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-memdum.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-memdum.ads gcc-11.1.0/gcc/ada/libgnat/g-memdum.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-memdum.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-memdum.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-moreex.adb gcc-11.1.0/gcc/ada/libgnat/g-moreex.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-moreex.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-moreex.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-moreex.ads gcc-11.1.0/gcc/ada/libgnat/g-moreex.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-moreex.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-moreex.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-os_lib.adb gcc-11.1.0/gcc/ada/libgnat/g-os_lib.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-os_lib.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-os_lib.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-os_lib.ads gcc-11.1.0/gcc/ada/libgnat/g-os_lib.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-os_lib.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-os_lib.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-pehage.adb gcc-11.1.0/gcc/ada/libgnat/g-pehage.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-pehage.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-pehage.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.Perfect_Hash_Generator
*** 622,627 ****
--- 622,628 ----
              E := Get_Edges (J);
  
              if Get_Graph (E.Y) = -1 then
+                pragma Assert (NK /= 0);
                 Set_Graph (E.Y, (E.Key - Get_Graph (X)) mod NK);
                 Assign (E.Y);
              end if;
*************** package body GNAT.Perfect_Hash_Generator
*** 2201,2206 ****
--- 2202,2209 ----
           --  in the position selection.
  
           for J in S'Range loop
+             pragma Annotate (CodePeer, Modified, S (J));
+ 
              if S (J).First = S (J).Last then
                 F := S (J).First;
                 L := S (J).Last;
*************** package body GNAT.Perfect_Hash_Generator
*** 2359,2364 ****
--- 2362,2371 ----
  
              for P in 1 .. Last_Sel_Pos - 1 loop
                 if Max_Diff_Sel_Pos < Sel_Position (P) then
+                   pragma Annotate
+                     (CodePeer, False_Positive,
+                      "test always false", "false positive?");
+ 
                    Sel_Position (P + 1 .. Last_Sel_Pos) :=
                      Sel_Position (P .. Last_Sel_Pos - 1);
                    Sel_Position (P) := Max_Diff_Sel_Pos;
*************** package body GNAT.Perfect_Hash_Generator
*** 2525,2530 ****
--- 2532,2538 ----
              for J in 0 .. T1_Len - 1 loop
                 exit when Word (J + 1) = ASCII.NUL;
                 R := Get_Table (Table, J, Get_Used_Char (Word (J + 1)));
+                pragma Assert (NV /= 0);
                 S := (S + R) mod NV;
              end loop;
  
*************** package body GNAT.Perfect_Hash_Generator
*** 2532,2537 ****
--- 2540,2546 ----
              for J in 0 .. T1_Len - 1 loop
                 exit when Word (J + 1) = ASCII.NUL;
                 R := Get_Table (Table, J, 0);
+                pragma Assert (NV /= 0);
                 S := (S + R * Character'Pos (Word (J + 1))) mod NV;
              end loop;
        end case;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-pehage.ads gcc-11.1.0/gcc/ada/libgnat/g-pehage.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-pehage.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-pehage.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-rannum.adb gcc-11.1.0/gcc/ada/libgnat/g-rannum.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-rannum.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-rannum.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2007-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2007-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 58,63 ****
--- 58,65 ----
       new Ada.Unchecked_Conversion (Unsigned_32, Integer_32);
     function To_Signed is
       new Ada.Unchecked_Conversion (Unsigned_64, Integer_64);
+    function To_Signed is
+      new Ada.Unchecked_Conversion (Unsigned_128, Integer_128);
  
     ------------------
     -- Insert_Image --
*************** is
*** 98,109 ****
        Min : Result_Subtype := Default_Min;
        Max : Result_Subtype := Result_Subtype'Last) return Result_Subtype
     is
-       subtype IntV is Integer_64 range
-         Integer_64'Integer_Value (Min) ..
-         Integer_64'Integer_Value (Max);
-       function R is new Random_Discrete (Integer_64, IntV'First);
     begin
!       return Result_Subtype'Fixed_Value (R (Gen, IntV'First, IntV'Last));
     end Random_Decimal_Fixed;
  
     ---------------------------
--- 100,136 ----
        Min : Result_Subtype := Default_Min;
        Max : Result_Subtype := Result_Subtype'Last) return Result_Subtype
     is
     begin
!       if Result_Subtype'Base'Size > 64 then
!          declare
!             subtype IntV is Integer_128 range
!               Integer_128'Integer_Value (Min) ..
!               Integer_128'Integer_Value (Max);
!             function R is new Random_Discrete (Integer_128, IntV'First);
!          begin
!             return Result_Subtype'Fixed_Value (R (Gen, IntV'First, IntV'Last));
!          end;
! 
!       elsif Result_Subtype'Base'Size > 32 then
!          declare
!             subtype IntV is Integer_64 range
!               Integer_64'Integer_Value (Min) ..
!               Integer_64'Integer_Value (Max);
!             function R is new Random_Discrete (Integer_64, IntV'First);
!          begin
!             return Result_Subtype'Fixed_Value (R (Gen, IntV'First, IntV'Last));
!          end;
! 
!       else
!          declare
!             subtype IntV is Integer_32 range
!               Integer_32'Integer_Value (Min) ..
!               Integer_32'Integer_Value (Max);
!             function R is new Random_Discrete (Integer_32, IntV'First);
!          begin
!             return Result_Subtype'Fixed_Value (R (Gen, IntV'First, IntV'Last));
!          end;
!       end if;
     end Random_Decimal_Fixed;
  
     ---------------------------
*************** is
*** 115,126 ****
        Min : Result_Subtype := Default_Min;
        Max : Result_Subtype := Result_Subtype'Last) return Result_Subtype
     is
-       subtype IntV is Integer_64 range
-         Integer_64'Integer_Value (Min) ..
-         Integer_64'Integer_Value (Max);
-       function R is new Random_Discrete (Integer_64, IntV'First);
     begin
!       return Result_Subtype'Fixed_Value (R (Gen, IntV'First, IntV'Last));
     end Random_Ordinary_Fixed;
  
     ------------
--- 142,178 ----
        Min : Result_Subtype := Default_Min;
        Max : Result_Subtype := Result_Subtype'Last) return Result_Subtype
     is
     begin
!       if Result_Subtype'Base'Size > 64 then
!          declare
!             subtype IntV is Integer_128 range
!               Integer_128'Integer_Value (Min) ..
!               Integer_128'Integer_Value (Max);
!             function R is new Random_Discrete (Integer_128, IntV'First);
!          begin
!             return Result_Subtype'Fixed_Value (R (Gen, IntV'First, IntV'Last));
!          end;
! 
!       elsif Result_Subtype'Base'Size > 32 then
!          declare
!             subtype IntV is Integer_64 range
!               Integer_64'Integer_Value (Min) ..
!               Integer_64'Integer_Value (Max);
!             function R is new Random_Discrete (Integer_64, IntV'First);
!          begin
!             return Result_Subtype'Fixed_Value (R (Gen, IntV'First, IntV'Last));
!          end;
! 
!       else
!          declare
!             subtype IntV is Integer_32 range
!               Integer_32'Integer_Value (Min) ..
!               Integer_32'Integer_Value (Max);
!             function R is new Random_Discrete (Integer_32, IntV'First);
!          begin
!             return Result_Subtype'Fixed_Value (R (Gen, IntV'First, IntV'Last));
!          end;
!       end if;
     end Random_Ordinary_Fixed;
  
     ------------
*************** is
*** 147,155 ****
        return Random (Gen.Rep);
     end Random;
  
!    function Random (Gen : Generator) return Integer_64 is
     begin
!       return To_Signed (Unsigned_64'(Random (Gen)));
     end Random;
  
     function Random (Gen : Generator) return Integer_32 is
--- 199,207 ----
        return Random (Gen.Rep);
     end Random;
  
!    function Random (Gen : Generator) return Interfaces.Unsigned_128 is
     begin
!       return Random (Gen.Rep);
     end Random;
  
     function Random (Gen : Generator) return Integer_32 is
*************** is
*** 157,162 ****
--- 209,224 ----
        return To_Signed (Unsigned_32'(Random (Gen)));
     end Random;
  
+    function Random (Gen : Generator) return Integer_64 is
+    begin
+       return To_Signed (Unsigned_64'(Random (Gen)));
+    end Random;
+ 
+    function Random (Gen : Generator) return Integer_128 is
+    begin
+       return To_Signed (Unsigned_128'(Random (Gen)));
+    end Random;
+ 
     function Random (Gen : Generator) return Long_Integer is
        function Random_Long_Integer is new Random_Discrete (Long_Integer);
     begin
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-rannum.ads gcc-11.1.0/gcc/ada/libgnat/g-rannum.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-rannum.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-rannum.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 69,74 ****
--- 69,76 ----
     function Random (Gen : Generator) return Interfaces.Unsigned_32;
     function Random (Gen : Generator) return Interfaces.Integer_64;
     function Random (Gen : Generator) return Interfaces.Unsigned_64;
+    function Random (Gen : Generator) return Interfaces.Integer_128;
+    function Random (Gen : Generator) return Interfaces.Unsigned_128;
     function Random (Gen : Generator) return Integer;
     function Random (Gen : Generator) return Long_Integer;
     --  Return pseudo-random numbers uniformly distributed on T'First .. T'Last
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-regexp.adb gcc-11.1.0/gcc/ada/libgnat/g-regexp.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-regexp.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-regexp.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-regexp.ads gcc-11.1.0/gcc/ada/libgnat/g-regexp.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-regexp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-regexp.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-regist.adb gcc-11.1.0/gcc/ada/libgnat/g-regist.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-regist.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-regist.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2001-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2001-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-regist.ads gcc-11.1.0/gcc/ada/libgnat/g-regist.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-regist.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-regist.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-regpat.adb gcc-11.1.0/gcc/ada/libgnat/g-regpat.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-regpat.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-regpat.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                                                                          --
  --               Copyright (C) 1986 by University of Toronto.               --
! --                      Copyright (C) 1999-2019, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                                                                          --
  --               Copyright (C) 1986 by University of Toronto.               --
! --                      Copyright (C) 1999-2020, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-regpat.ads gcc-11.1.0/gcc/ada/libgnat/g-regpat.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-regpat.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-regpat.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                                                                          --
  --               Copyright (C) 1986 by University of Toronto.               --
! --                     Copyright (C) 1996-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 S p e c                                  --
  --                                                                          --
  --               Copyright (C) 1986 by University of Toronto.               --
! --                     Copyright (C) 1996-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-rewdat.adb gcc-11.1.0/gcc/ada/libgnat/g-rewdat.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-rewdat.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-rewdat.adb	Tue Apr 27 10:00:12 2021
***************
*** 5,11 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2014-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 5,11 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2014-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-rewdat.ads gcc-11.1.0/gcc/ada/libgnat/g-rewdat.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-rewdat.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-rewdat.ads	Tue Apr 27 10:00:12 2021
***************
*** 5,11 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2014-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 5,11 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2014-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sechas.adb gcc-11.1.0/gcc/ada/libgnat/g-sechas.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-sechas.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sechas.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.Secure_Hashes is
*** 40,64 ****
     type Fill_Buffer_Access is
       access procedure
         (M     : in out Message_State;
!         S     : String;
!         First : Natural;
!         Last  : out Natural);
!    --  A procedure to transfer data from S, starting at First, into M's block
     --  buffer until either the block buffer is full or all data from S has been
     --  consumed.
  
     procedure Fill_Buffer_Copy
       (M     : in out Message_State;
!       S     : String;
!       First : Natural;
!       Last  : out Natural);
     --  Transfer procedure which just copies data from S to M
  
     procedure Fill_Buffer_Swap
       (M     : in out Message_State;
!       S     : String;
!       First : Natural;
!       Last  : out Natural);
     --  Transfer procedure which swaps bytes from S when copying into M. S must
     --  have even length. Note that the swapping is performed considering pairs
     --  starting at S'First, even if S'First /= First (that is, if
--- 40,64 ----
     type Fill_Buffer_Access is
       access procedure
         (M     : in out Message_State;
!         SEA   : Stream_Element_Array;
!         First : Stream_Element_Offset;
!         Last  : out Stream_Element_Offset);
!    --  A procedure to transfer data from SEA, starting at First, into M's block
     --  buffer until either the block buffer is full or all data from S has been
     --  consumed.
  
     procedure Fill_Buffer_Copy
       (M     : in out Message_State;
!       SEA   : Stream_Element_Array;
!       First : Stream_Element_Offset;
!       Last  : out Stream_Element_Offset);
     --  Transfer procedure which just copies data from S to M
  
     procedure Fill_Buffer_Swap
       (M     : in out Message_State;
!       SEA   : Stream_Element_Array;
!       First : Stream_Element_Offset;
!       Last  : out Stream_Element_Offset);
     --  Transfer procedure which swaps bytes from S when copying into M. S must
     --  have even length. Note that the swapping is performed considering pairs
     --  starting at S'First, even if S'First /= First (that is, if
*************** package body GNAT.Secure_Hashes is
*** 75,96 ****
  
     procedure Fill_Buffer_Copy
       (M     : in out Message_State;
!       S     : String;
!       First : Natural;
!       Last  : out Natural)
     is
!       Buf_String : String (M.Buffer'Range);
!       for Buf_String'Address use M.Buffer'Address;
!       pragma Import (Ada, Buf_String);
  
!       Length : constant Natural :=
!                  Natural'Min (M.Block_Length - M.Last, S'Last - First + 1);
  
     begin
        pragma Assert (Length > 0);
  
!       Buf_String (M.Last + 1 .. M.Last + Length) :=
!         S (First .. First + Length - 1);
        M.Last := M.Last + Length;
        Last := First + Length - 1;
     end Fill_Buffer_Copy;
--- 75,97 ----
  
     procedure Fill_Buffer_Copy
       (M     : in out Message_State;
!       SEA   : Stream_Element_Array;
!       First : Stream_Element_Offset;
!       Last  : out Stream_Element_Offset)
     is
!       Buf_SEA : Stream_Element_Array (M.Buffer'Range);
!       for Buf_SEA'Address use M.Buffer'Address;
!       pragma Import (Ada, Buf_SEA);
  
!       Length : constant Stream_Element_Offset :=
!                  Stream_Element_Offset'Min
!                     (M.Block_Length - M.Last, SEA'Last - First + 1);
  
     begin
        pragma Assert (Length > 0);
  
!       Buf_SEA (M.Last + 1 .. M.Last + Length) :=
!         SEA (First .. First + Length - 1);
        M.Last := M.Last + Length;
        Last := First + Length - 1;
     end Fill_Buffer_Copy;
*************** package body GNAT.Secure_Hashes is
*** 101,120 ****
  
     procedure Fill_Buffer_Swap
       (M     : in out Message_State;
!       S     : String;
!       First : Natural;
!       Last  : out Natural)
     is
!       pragma Assert (S'Length mod 2 = 0);
!       Length : constant Natural :=
!                   Natural'Min (M.Block_Length - M.Last, S'Last - First + 1);
     begin
        Last := First;
        while Last - First < Length loop
           M.Buffer (M.Last + 1 + Last - First) :=
!            (if (Last - S'First) mod 2 = 0
!             then S (Last + 1)
!             else S (Last - 1));
           Last := Last + 1;
        end loop;
        M.Last := M.Last + Length;
--- 102,122 ----
  
     procedure Fill_Buffer_Swap
       (M     : in out Message_State;
!       SEA   : Stream_Element_Array;
!       First : Stream_Element_Offset;
!       Last  : out Stream_Element_Offset)
     is
!       pragma Assert (SEA'Length mod 2 = 0);
!       Length : constant Stream_Element_Offset :=
!                   Stream_Element_Offset'Min
!                      (M.Block_Length - M.Last, SEA'Last - First + 1);
     begin
        Last := First;
        while Last - First < Length loop
           M.Buffer (M.Last + 1 + Last - First) :=
!            (if (Last - SEA'First) mod 2 = 0
!             then SEA (Last + 1)
!             else SEA (Last - 1));
           Last := Last + 1;
        end loop;
        M.Last := M.Last + Length;
*************** package body GNAT.Secure_Hashes is
*** 146,152 ****
  
        procedure Update
          (C           : in out Context;
!          S           : String;
           Fill_Buffer : Fill_Buffer_Access);
        --  Internal common routine for all Update procedures
  
--- 148,154 ----
  
        procedure Update
          (C           : in out Context;
!          SEA         : Stream_Element_Array;
           Fill_Buffer : Fill_Buffer_Access);
        --  Internal common routine for all Update procedures
  
*************** package body GNAT.Secure_Hashes is
*** 161,168 ****
        ------------
  
        function Digest (C : Context) return Message_Digest is
!          Hash_Bits : Stream_Element_Array
!                        (1 .. Stream_Element_Offset (Hash_Length));
        begin
           Final (C, Hash_Bits);
           return MD : Message_Digest do
--- 163,169 ----
        ------------
  
        function Digest (C : Context) return Message_Digest is
!          Hash_Bits : Stream_Element_Array (1 .. Hash_Length);
        begin
           Final (C, Hash_Bits);
           return MD : Message_Digest do
*************** package body GNAT.Secure_Hashes is
*** 185,192 ****
        end Digest;
  
        function Digest (C : Context) return Binary_Message_Digest is
!          Hash_Bits : Stream_Element_Array
!                        (1 .. Stream_Element_Offset (Hash_Length));
        begin
           Final (C, Hash_Bits);
           return Hash_Bits;
--- 186,192 ----
        end Digest;
  
        function Digest (C : Context) return Binary_Message_Digest is
!          Hash_Bits : Stream_Element_Array (1 .. Hash_Length);
        begin
           Final (C, Hash_Bits);
           return Hash_Bits;
*************** package body GNAT.Secure_Hashes is
*** 223,235 ****
        is
           FC : Context := C;
  
!          Zeroes : Natural;
           --  Number of 0 bytes in padding
  
           Message_Length : Unsigned_64 := FC.M_State.Length;
           --  Message length in bytes
  
!          Size_Length : constant Natural :=
                           2 * Hash_State.Word'Size / 8;
           --  Length in bytes of the size representation
  
--- 223,235 ----
        is
           FC : Context := C;
  
!          Zeroes : Stream_Element_Count;
           --  Number of 0 bytes in padding
  
           Message_Length : Unsigned_64 := FC.M_State.Length;
           --  Message length in bytes
  
!          Size_Length : constant Stream_Element_Count :=
                           2 * Hash_State.Word'Size / 8;
           --  Length in bytes of the size representation
  
*************** package body GNAT.Secure_Hashes is
*** 237,247 ****
           Zeroes := (Block_Length - 1 - Size_Length - FC.M_State.Last)
                       mod FC.M_State.Block_Length;
           declare
!             Pad : String (1 .. 1 + Zeroes + Size_Length) :=
!                     (1 => Character'Val (128), others => ASCII.NUL);
  
!             Index       : Natural;
!             First_Index : Natural;
  
           begin
              First_Index := (if Hash_Bit_Order = Low_Order_First
--- 237,247 ----
           Zeroes := (Block_Length - 1 - Size_Length - FC.M_State.Last)
                       mod FC.M_State.Block_Length;
           declare
!             Pad : Stream_Element_Array (1 .. 1 + Zeroes + Size_Length) :=
!                     (1 => 128, others => 0);
  
!             Index       : Stream_Element_Offset;
!             First_Index : Stream_Element_Offset;
  
           begin
              First_Index := (if Hash_Bit_Order = Low_Order_First
*************** package body GNAT.Secure_Hashes is
*** 255,266 ****
                    --  Message_Length is in bytes, but we need to store it as
                    --  a bit count.
  
!                   Pad (Index) := Character'Val
                                     (Shift_Left (Message_Length and 16#1f#, 3));
                    Message_Length := Shift_Right (Message_Length, 5);
  
                 else
!                   Pad (Index) := Character'Val (Message_Length and 16#ff#);
                    Message_Length := Shift_Right (Message_Length, 8);
                 end if;
  
--- 255,266 ----
                    --  Message_Length is in bytes, but we need to store it as
                    --  a bit count.
  
!                   Pad (Index) := Stream_Element
                                     (Shift_Left (Message_Length and 16#1f#, 3));
                    Message_Length := Shift_Right (Message_Length, 5);
  
                 else
!                   Pad (Index) := Stream_Element (Message_Length and 16#ff#);
                    Message_Length := Shift_Right (Message_Length, 8);
                 end if;
  
*************** package body GNAT.Secure_Hashes is
*** 308,314 ****
  
           return C : Context (KL => (if Key'Length <= Key_Length'Last
                                      then Key'Length
!                                     else Stream_Element_Offset (Hash_Length)))
           do
              --  Set Key (if longer than block length, first hash it)
  
--- 308,314 ----
  
           return C : Context (KL => (if Key'Length <= Key_Length'Last
                                      then Key'Length
!                                     else Hash_Length))
           do
              --  Set Key (if longer than block length, first hash it)
  
*************** package body GNAT.Secure_Hashes is
*** 361,382 ****
  
        procedure Update
          (C           : in out Context;
!          S           : String;
           Fill_Buffer : Fill_Buffer_Access)
        is
!          Last : Natural;
  
        begin
!          C.M_State.Length := C.M_State.Length + S'Length;
  
!          Last := S'First - 1;
!          while Last < S'Last loop
!             Fill_Buffer (C.M_State, S, Last + 1, Last);
  
              if C.M_State.Last = Block_Length then
                 Transform (C.H_State, C.M_State);
                 C.M_State.Last := 0;
              end if;
           end loop;
        end Update;
  
--- 361,389 ----
  
        procedure Update
          (C           : in out Context;
!          SEA         : Stream_Element_Array;
           Fill_Buffer : Fill_Buffer_Access)
        is
!          First, Last : Stream_Element_Offset;
  
        begin
!          if SEA'Length = 0 then
!             return;
!          end if;
  
!          C.M_State.Length := C.M_State.Length + SEA'Length;
! 
!          First := SEA'First;
!          loop
!             Fill_Buffer (C.M_State, SEA, First, Last);
  
              if C.M_State.Last = Block_Length then
                 Transform (C.H_State, C.M_State);
                 C.M_State.Last := 0;
              end if;
+ 
+             exit when Last = SEA'Last;
+             First := Last + 1;
           end loop;
        end Update;
  
*************** package body GNAT.Secure_Hashes is
*** 384,390 ****
        -- Update --
        ------------
  
!       procedure Update (C : in out Context; Input : String) is
        begin
           Update (C, Input, Fill_Buffer_Copy'Access);
        end Update;
--- 391,397 ----
        -- Update --
        ------------
  
!       procedure Update (C : in out Context; Input : Stream_Element_Array) is
        begin
           Update (C, Input, Fill_Buffer_Copy'Access);
        end Update;
*************** package body GNAT.Secure_Hashes is
*** 393,404 ****
        -- Update --
        ------------
  
!       procedure Update (C : in out Context; Input : Stream_Element_Array) is
!          S : String (1 .. Input'Length);
!          for S'Address use Input'Address;
!          pragma Import (Ada, S);
        begin
!          Update (C, S, Fill_Buffer_Copy'Access);
        end Update;
  
        -----------------
--- 400,412 ----
        -- Update --
        ------------
  
!       procedure Update (C : in out Context; Input : String) is
!          pragma Assert (Input'Length <= Stream_Element_Offset'Last);
!          SEA : Stream_Element_Array (1 .. Input'Length);
!          for SEA'Address use Input'Address;
!          pragma Import (Ada, SEA);
        begin
!          Update (C, SEA, Fill_Buffer_Copy'Access);
        end Update;
  
        -----------------
*************** package body GNAT.Secure_Hashes is
*** 406,417 ****
        -----------------
  
        procedure Wide_Update (C : in out Context; Input : Wide_String) is
!          S : String (1 .. 2 * Input'Length);
!          for S'Address use Input'Address;
!          pragma Import (Ada, S);
        begin
           Update
!            (C, S,
              (if System.Default_Bit_Order /= Low_Order_First
               then Fill_Buffer_Swap'Access
               else Fill_Buffer_Copy'Access));
--- 414,425 ----
        -----------------
  
        procedure Wide_Update (C : in out Context; Input : Wide_String) is
!          SEA : Stream_Element_Array (1 .. 2 * Input'Length);
!          for SEA'Address use Input'Address;
!          pragma Import (Ada, SEA);
        begin
           Update
!            (C, SEA,
              (if System.Default_Bit_Order /= Low_Order_First
               then Fill_Buffer_Swap'Access
               else Fill_Buffer_Copy'Access));
*************** package body GNAT.Secure_Hashes is
*** 460,466 ****
        -------------
  
        procedure To_Hash (H : State; H_Bits : out Stream_Element_Array) is
!          Hash_Words : constant Natural := H'Size / Word'Size;
           Result     : State (1 .. Hash_Words) :=
                          H (H'Last - Hash_Words + 1 .. H'Last);
  
--- 468,474 ----
        -------------
  
        procedure To_Hash (H : State; H_Bits : out Stream_Element_Array) is
!          Hash_Words : constant Stream_Element_Offset := H'Size / Word'Size;
           Result     : State (1 .. Hash_Words) :=
                          H (H'Last - Hash_Words + 1 .. H'Last);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sechas.ads gcc-11.1.0/gcc/ada/libgnat/g-sechas.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-sechas.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sechas.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System;
*** 44,50 ****
  
  package GNAT.Secure_Hashes is
  
!    type Buffer_Type is new String;
     for Buffer_Type'Alignment use 8;
     --  Secure hash functions use a string buffer that is also accessed as an
     --  array of words, which may require up to 64 bit alignment.
--- 44,50 ----
  
  package GNAT.Secure_Hashes is
  
!    type Buffer_Type is new Stream_Element_Array;
     for Buffer_Type'Alignment use 8;
     --  Secure hash functions use a string buffer that is also accessed as an
     --  array of words, which may require up to 64 bit alignment.
*************** package GNAT.Secure_Hashes is
*** 52,59 ****
     --  The function-independent part of processing state: A buffer of data
     --  being accumulated until a complete block is ready for hashing.
  
!    type Message_State (Block_Length : Natural) is record
!       Last : Natural := 0;
        --  Index of last used element in Buffer
  
        Length : Interfaces.Unsigned_64 := 0;
--- 52,59 ----
     --  The function-independent part of processing state: A buffer of data
     --  being accumulated until a complete block is ready for hashing.
  
!    type Message_State (Block_Length : Stream_Element_Count) is record
!       Last : Stream_Element_Offset := 0;
        --  Index of last used element in Buffer
  
        Length : Interfaces.Unsigned_64 := 0;
*************** package GNAT.Secure_Hashes is
*** 81,87 ****
  
     package Hash_Function_State is
  
!       type State is array (Natural range <>) of Word;
        --  Used to store a hash function's internal state
  
        procedure To_Hash
--- 81,87 ----
  
     package Hash_Function_State is
  
!       type State is array (Stream_Element_Offset range <>) of Word;
        --  Used to store a hash function's internal state
  
        procedure To_Hash
*************** package GNAT.Secure_Hashes is
*** 97,109 ****
     --  secure hash function is an instance of this generic package.
  
     generic
!       Block_Words : Natural;
        --  Number of words in each block
  
!       State_Words : Natural;
        --  Number of words in internal state
  
!       Hash_Words : Natural;
        --  Number of words in the final hash (must be no greater than
        --  State_Words).
  
--- 97,109 ----
     --  secure hash function is an instance of this generic package.
  
     generic
!       Block_Words : Stream_Element_Count;
        --  Number of words in each block
  
!       State_Words : Stream_Element_Count;
        --  Number of words in internal state
  
!       Hash_Words : Stream_Element_Count;
        --  Number of words in the final hash (must be no greater than
        --  State_Words).
  
*************** package GNAT.Secure_Hashes is
*** 157,167 ****
        --  the Wide_String version, each Wide_Character is processed low order
        --  byte first.
  
!       Word_Length : constant Natural := Hash_State.Word'Size / 8;
!       Hash_Length : constant Natural := Hash_Words * Word_Length;
  
!       subtype Binary_Message_Digest is
!         Stream_Element_Array (1 .. Stream_Element_Offset (Hash_Length));
        --  The fixed-length byte array returned by Digest, providing
        --  the hash in binary representation.
  
--- 157,166 ----
        --  the Wide_String version, each Wide_Character is processed low order
        --  byte first.
  
!       Word_Length : constant Stream_Element_Offset := Hash_State.Word'Size / 8;
!       Hash_Length : constant Stream_Element_Offset := Hash_Words * Word_Length;
  
!       subtype Binary_Message_Digest is Stream_Element_Array (1 .. Hash_Length);
        --  The fixed-length byte array returned by Digest, providing
        --  the hash in binary representation.
  
*************** package GNAT.Secure_Hashes is
*** 176,182 ****
        --  Wide_Update) on a default initialized Context, followed by Digest
        --  on the resulting Context.
  
!       subtype Message_Digest is String (1 .. 2 * Hash_Length);
        --  The fixed-length string returned by Digest, providing the hash in
        --  hexadecimal representation.
  
--- 175,181 ----
        --  Wide_Update) on a default initialized Context, followed by Digest
        --  on the resulting Context.
  
!       subtype Message_Digest is String (1 .. 2 * Integer (Hash_Length));
        --  The fixed-length string returned by Digest, providing the hash in
        --  hexadecimal representation.
  
*************** package GNAT.Secure_Hashes is
*** 199,209 ****
  
     private
  
!       Block_Length : constant Natural := Block_Words * Word_Length;
        --  Length in bytes of a data block
  
        subtype Key_Length is
!         Stream_Element_Offset range 0 .. Stream_Element_Offset (Block_Length);
  
        --  KL is 0 for a normal hash context, > 0 for HMAC
  
--- 198,209 ----
  
     private
  
!       Block_Length : constant Stream_Element_Count :=
!          Block_Words * Word_Length;
        --  Length in bytes of a data block
  
        subtype Key_Length is
!         Stream_Element_Offset range 0 .. Block_Length;
  
        --  KL is 0 for a normal hash context, > 0 for HMAC
  
*************** package GNAT.Secure_Hashes is
*** 218,224 ****
--- 218,226 ----
           --  HMAC key
        end record;
  
+       pragma Warnings (Off, "aggregate not fully initialized");
        Initial_Context : constant Context (KL => 0) := (others => <>);
+       pragma Warnings (On, "aggregate not fully initialized");
        --  Initial values are provided by default initialization of Context
  
        type Hash_Stream (C : access Context) is
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sehamd.adb gcc-11.1.0/gcc/ada/libgnat/g-sehamd.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-sehamd.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sehamd.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2002-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2002-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sehamd.ads gcc-11.1.0/gcc/ada/libgnat/g-sehamd.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-sehamd.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sehamd.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2002-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2002-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sehash.adb gcc-11.1.0/gcc/ada/libgnat/g-sehash.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-sehash.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sehash.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2002-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2002-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sehash.ads gcc-11.1.0/gcc/ada/libgnat/g-sehash.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-sehash.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sehash.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2002-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2002-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sercom.adb gcc-11.1.0/gcc/ada/libgnat/g-sercom.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-sercom.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sercom.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sercom.ads gcc-11.1.0/gcc/ada/libgnat/g-sercom.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-sercom.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sercom.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                    Copyright (C) 2007-2019, AdaCore                      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                    Copyright (C) 2007-2020, AdaCore                      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sercom__linux.adb gcc-11.1.0/gcc/ada/libgnat/g-sercom__linux.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-sercom__linux.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sercom__linux.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                    Copyright (C) 2007-2019, AdaCore                      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                    Copyright (C) 2007-2020, AdaCore                      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,44 ****
  ------------------------------------------------------------------------------
  
  --  This is the GNU/Linux implementation of this package
  
! with Ada.Streams;                use Ada.Streams;
! with Ada;                        use Ada;
  
  with System;               use System;
  with System.Communication; use System.Communication;
  with System.CRTL;          use System.CRTL;
  
! with GNAT.OS_Lib; use GNAT.OS_Lib;
  
  package body GNAT.Serial_Communications is
  
--- 30,70 ----
  ------------------------------------------------------------------------------
  
  --  This is the GNU/Linux implementation of this package
+ --
+ --  Testing on GNU/Linux can be done with socat & stty tools.
+ --
+ --  First in a terminal create a virtual serial port:
+ --
+ --  * First solution, the terminal is one of the side of the channel
+ --    characters written with Write into the port will be displayed
+ --    there and characters typed into the terminal will be send to the
+ --    channel and will be received by a Read call.
+ --
+ --     $ socat PTY,link=/tmp/virtual-tty,raw,echo=1 -
+ --
+ --  * Second solution, the virtual channel contains two side and the
+ --    program can Read and Write date to it.
+ --
+ --     $ socat PTY,link=/tmp/virtual-tty,raw,echo=1 \
+ --         PTY,link=/tmp/virtual-tty,raw,echo=1
+ --
+ --  Connect to this virtual serial port with:
+ --
+ --     Open (Port => P, Name => "/tmp/virtual-tty");
+ --
+ --  Do any settings using the Set routine below, then you can check
+ --  the serial port configuration with:
+ --
+ --     $ stty --file /tmp/virtual-tty
+ --
  
! with Ada.Streams;          use Ada.Streams;
  
  with System;               use System;
  with System.Communication; use System.Communication;
  with System.CRTL;          use System.CRTL;
  
! with GNAT.OS_Lib;          use GNAT.OS_Lib;
  
  package body GNAT.Serial_Communications is
  
*************** package body GNAT.Serial_Communications
*** 191,196 ****
--- 217,224 ----
     is
        use OSC;
  
+       subtype speed_t is unsigned;
+ 
        type termios is record
           c_iflag  : unsigned;
           c_oflag  : unsigned;
*************** package body GNAT.Serial_Communications
*** 198,205 ****
           c_lflag  : unsigned;
           c_line   : unsigned_char;
           c_cc     : Interfaces.C.char_array (0 .. 31);
!          c_ispeed : unsigned;
!          c_ospeed : unsigned;
        end record;
        pragma Convention (C, termios);
  
--- 226,233 ----
           c_lflag  : unsigned;
           c_line   : unsigned_char;
           c_cc     : Interfaces.C.char_array (0 .. 31);
!          c_ispeed : speed_t;
!          c_ospeed : speed_t;
        end record;
        pragma Convention (C, termios);
  
*************** package body GNAT.Serial_Communications
*** 213,221 ****
        function tcflush (fd : int; queue_selector : int) return int;
        pragma Import (C, tcflush, "tcflush");
  
        Current : termios;
  
!       Res : int;
        pragma Warnings (Off, Res);
        --  Warnings off, since we don't always test the result
  
--- 241,255 ----
        function tcflush (fd : int; queue_selector : int) return int;
        pragma Import (C, tcflush, "tcflush");
  
+       function cfsetospeed (termios_p : Address; speed : speed_t) return int;
+       pragma Import (C, cfsetospeed, "cfsetospeed");
+ 
+       function cfsetispeed (termios_p : Address; speed : speed_t) return int;
+       pragma Import (C, cfsetispeed, "cfsetispeed");
+ 
        Current : termios;
  
!       Res : int := 0;
        pragma Warnings (Off, Res);
        --  Warnings off, since we don't always test the result
  
*************** package body GNAT.Serial_Communications
*** 230,240 ****
  
        --  Change settings now
  
!       Current.c_cflag := C_Data_Rate (Rate)
!                            or C_Bits (Bits)
                             or C_Stop_Bits (Stop_Bits)
                             or C_Parity (Parity)
                             or CREAD;
        Current.c_iflag := 0;
        Current.c_lflag := 0;
        Current.c_oflag := 0;
--- 264,274 ----
  
        --  Change settings now
  
!       Current.c_cflag := C_Bits (Bits)
                             or C_Stop_Bits (Stop_Bits)
                             or C_Parity (Parity)
                             or CREAD;
+ 
        Current.c_iflag := 0;
        Current.c_lflag := 0;
        Current.c_oflag := 0;
*************** package body GNAT.Serial_Communications
*** 254,263 ****
              Current.c_iflag := Current.c_iflag or IXON;
        end case;
  
!       Current.c_ispeed     := Data_Rate_Value (Rate);
!       Current.c_ospeed     := Data_Rate_Value (Rate);
!       Current.c_cc (VMIN)  := char'Val (0);
!       Current.c_cc (VTIME) := char'Val (Natural (Timeout * 10));
  
        --  Set port settings
  
--- 288,323 ----
              Current.c_iflag := Current.c_iflag or IXON;
        end case;
  
!       Current.c_ispeed := Data_Rate_Value (Rate);
!       Current.c_ospeed := Data_Rate_Value (Rate);
! 
!       --  See man termios for descriptions about the different modes
! 
!       if Block and then Timeout = 0.0 then
!          --  MIN > 0, TIME == 0 (blocking read)
!          Current.c_cc (VMIN)  := char'Val (1);
!          Current.c_cc (VTIME) := char'Val (0);
! 
!       else
!          --  MIN == 0, TIME > 0  (read with timeout)
!          --  MIN == 0, TIME == 0 (polling read)
!          Current.c_cc (VMIN)  := char'Val (0);
!          Current.c_cc (VTIME) := char'Val (Natural (Timeout * 10));
! 
!          Current.c_lflag := Current.c_lflag or (not ICANON);
!       end if;
! 
!       Res := cfsetispeed (Current'Address, C_Data_Rate (Rate));
! 
!       if Res = -1 then
!          Raise_Error ("set: cfsetispeed failed");
!       end if;
! 
!       Res := cfsetospeed (Current'Address, C_Data_Rate (Rate));
! 
!       if Res = -1 then
!          Raise_Error ("set: cfsetospeed failed");
!       end if;
  
        --  Set port settings
  
*************** package body GNAT.Serial_Communications
*** 266,272 ****
  
        --  Block
  
!       Res := fcntl (int (Port.H), F_SETFL, (if Block then 0 else FNDELAY));
  
        if Res = -1 then
           Raise_Error ("set: fcntl failed");
--- 326,336 ----
  
        --  Block
  
!       if Block then
!          --  In blocking mode, remove the non-blocking flags set while
!          --  opening the serial port (see Open).
!          Res := fcntl (int (Port.H), F_SETFL, 0);
!       end if;
  
        if Res = -1 then
           Raise_Error ("set: fcntl failed");
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sercom__mingw.adb gcc-11.1.0/gcc/ada/libgnat/g-sercom__mingw.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-sercom__mingw.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sercom__mingw.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                    Copyright (C) 2007-2019, AdaCore                      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                    Copyright (C) 2007-2020, AdaCore                      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sestin.ads gcc-11.1.0/gcc/ada/libgnat/g-sestin.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-sestin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sestin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                      Copyright (C) 2004-2019, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                      Copyright (C) 2004-2020, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sets.adb gcc-11.1.0/gcc/ada/libgnat/g-sets.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-sets.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sets.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                        Copyright (C) 2018-2019, AdaCore                  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                        Copyright (C) 2018-2020, AdaCore                  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sets.ads gcc-11.1.0/gcc/ada/libgnat/g-sets.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-sets.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sets.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                        Copyright (C) 2018-2019, AdaCore                  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                        Copyright (C) 2018-2020, AdaCore                  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sha1.adb gcc-11.1.0/gcc/ada/libgnat/g-sha1.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-sha1.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sha1.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sha1.ads gcc-11.1.0/gcc/ada/libgnat/g-sha1.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-sha1.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sha1.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sha224.ads gcc-11.1.0/gcc/ada/libgnat/g-sha224.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-sha224.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sha224.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2009-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2009-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sha256.ads gcc-11.1.0/gcc/ada/libgnat/g-sha256.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-sha256.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sha256.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --        Copyright (C) 2009-2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --        Copyright (C) 2009-2020, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sha384.ads gcc-11.1.0/gcc/ada/libgnat/g-sha384.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-sha384.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sha384.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --        Copyright (C) 2009-2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --        Copyright (C) 2009-2020, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sha512.ads gcc-11.1.0/gcc/ada/libgnat/g-sha512.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-sha512.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sha512.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --        Copyright (C) 2009-2019, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --        Copyright (C) 2009-2020, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-shsh32.adb gcc-11.1.0/gcc/ada/libgnat/g-shsh32.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-shsh32.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-shsh32.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-shsh32.ads gcc-11.1.0/gcc/ada/libgnat/g-shsh32.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-shsh32.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-shsh32.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-shsh64.adb gcc-11.1.0/gcc/ada/libgnat/g-shsh64.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-shsh64.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-shsh64.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-shsh64.ads gcc-11.1.0/gcc/ada/libgnat/g-shsh64.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-shsh64.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-shsh64.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-shshco.adb gcc-11.1.0/gcc/ada/libgnat/g-shshco.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-shshco.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-shshco.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.Secure_Hashes.SHA2_Com
*** 108,114 ****
        --  3. Perform transformation rounds
  
        for T in 0 .. Rounds - 1 loop
!          T1 := H + Sigma1 (E) + Ch (E, F, G) + K (T) + W (T);
           T2 := Sigma0 (A) + Maj (A, B, C);
           H := G;
           G := F;
--- 108,115 ----
        --  3. Perform transformation rounds
  
        for T in 0 .. Rounds - 1 loop
!          T1 := H + Sigma1 (E) + Ch (E, F, G)
!              + K (Stream_Element_Offset (T)) + W (T);
           T2 := Sigma0 (A) + Maj (A, B, C);
           H := G;
           G := F;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-shshco.ads gcc-11.1.0/gcc/ada/libgnat/g-shshco.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-shshco.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-shshco.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-soccon.ads gcc-11.1.0/gcc/ada/libgnat/g-soccon.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-soccon.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-soccon.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-socket.adb gcc-11.1.0/gcc/ada/libgnat/g-socket.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-socket.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-socket.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,47 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with Ada.Streams;              use Ada.Streams;
- with Ada.Exceptions;           use Ada.Exceptions;
  with Ada.Containers.Generic_Array_Sort;
  with Ada.Finalization;
  with Ada.Unchecked_Conversion;
  
- with GNAT.Sockets.Thin_Common; use GNAT.Sockets.Thin_Common;
  with GNAT.Sockets.Thin;        use GNAT.Sockets.Thin;
  
  with GNAT.Sockets.Linker_Options;
  pragma Warnings (Off, GNAT.Sockets.Linker_Options);
  --  Need to include pragma Linker_Options which is platform dependent
  
  with System;               use System;
  with System.Communication; use System.Communication;
  with System.CRTL;          use System.CRTL;
--- 29,49 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with Ada.Containers.Generic_Array_Sort;
+ with Ada.Exceptions;           use Ada.Exceptions;
  with Ada.Finalization;
+ with Ada.Streams;              use Ada.Streams;
  with Ada.Unchecked_Conversion;
  
  with GNAT.Sockets.Thin;        use GNAT.Sockets.Thin;
+ with GNAT.Sockets.Thin_Common; use GNAT.Sockets.Thin_Common;
  
  with GNAT.Sockets.Linker_Options;
  pragma Warnings (Off, GNAT.Sockets.Linker_Options);
  --  Need to include pragma Linker_Options which is platform dependent
  
+ with GNAT.Sockets.Poll;
+ 
  with System;               use System;
  with System.Communication; use System.Communication;
  with System.CRTL;          use System.CRTL;
*************** package body GNAT.Sockets is
*** 186,195 ****
         else Value);
     --  Removes dot at the end of error message
  
-    procedure Raise_Socket_Error (Error : Integer);
-    --  Raise Socket_Error with an exception message describing the error code
-    --  from errno.
- 
     procedure Raise_Host_Error (H_Error : Integer; Name : String);
     --  Raise Host_Error exception with message describing error code (note
     --  hstrerror seems to be obsolete) from h_errno. Name is the name
--- 188,193 ----
*************** package body GNAT.Sockets is
*** 256,270 ****
  
     procedure Wait_On_Socket
       (Socket   : Socket_Type;
!       For_Read : Boolean;
        Timeout  : Selector_Duration;
        Selector : access Selector_Type := null;
        Status   : out Selector_Status);
     --  Common code for variants of socket operations supporting a timeout:
!    --  block in Check_Selector on Socket for at most the indicated timeout.
!    --  If For_Read is True, Socket is added to the read set for this call, else
!    --  it is added to the write set. If no selector is provided, a local one is
!    --  created for this call and destroyed prior to returning.
  
     type Sockets_Library_Controller is new Ada.Finalization.Limited_Controlled
       with null record;
--- 254,266 ----
  
     procedure Wait_On_Socket
       (Socket   : Socket_Type;
!       Event    : Poll.Wait_Event_Set;
        Timeout  : Selector_Duration;
        Selector : access Selector_Type := null;
        Status   : out Selector_Status);
     --  Common code for variants of socket operations supporting a timeout:
!    --  block in Poll.Wait on Socket for at most the indicated timeout.
!    --  Event parameter defines what the Poll.Wait is waiting for.
  
     type Sockets_Library_Controller is new Ada.Finalization.Limited_Controlled
       with null record;
*************** package body GNAT.Sockets is
*** 291,297 ****
     function Create_Address
       (Family : Family_Inet_4_6; Bytes : Inet_Addr_Bytes) return Inet_Addr_Type
       with Inline;
!    --  Creates address from family and Inet_Addr_Bytes array.
  
     function Get_Bytes (Addr : Inet_Addr_Type) return Inet_Addr_Bytes
       with Inline;
--- 287,293 ----
     function Create_Address
       (Family : Family_Inet_4_6; Bytes : Inet_Addr_Bytes) return Inet_Addr_Type
       with Inline;
!    --  Creates address from family and Inet_Addr_Bytes array
  
     function Get_Bytes (Addr : Inet_Addr_Type) return Inet_Addr_Bytes
       with Inline;
*************** package body GNAT.Sockets is
*** 375,385 ****
        --  Wait for socket to become available for reading
  
        Wait_On_Socket
!         (Socket    => Server,
!          For_Read  => True,
!          Timeout   => Timeout,
!          Selector  => Selector,
!          Status    => Status);
  
        --  Accept connection if available
  
--- 371,381 ----
        --  Wait for socket to become available for reading
  
        Wait_On_Socket
!         (Socket   => Server,
!          Event    => Poll.Input_Event,
!          Timeout  => Timeout,
!          Selector => Selector,
!          Status   => Status);
  
        --  Accept connection if available
  
*************** package body GNAT.Sockets is
*** 733,739 ****
        else
           Wait_On_Socket
             (Socket   => Socket,
!             For_Read => False,
              Timeout  => Timeout,
              Selector => Selector,
              Status   => Status);
--- 729,735 ----
        else
           Wait_On_Socket
             (Socket   => Socket,
!             Event    => Poll.Output_Event,
              Timeout  => Timeout,
              Selector => Selector,
              Status   => Status);
*************** package body GNAT.Sockets is
*** 836,841 ****
--- 832,838 ----
        --  the waiting task to resume its execution.
  
        Res := Signalling_Fds.Create (Two_Fds'Access);
+       pragma Annotate (CodePeer, Modified, Two_Fds);
  
        if Res = Failure then
           Raise_Socket_Error (Socket_Errno);
*************** package body GNAT.Sockets is
*** 886,891 ****
--- 883,889 ----
          ((if Family = Family_Unspec then Default_Socket_Pair_Family
            else Families (Family)),
           Modes (Mode), Levels (Level), Pair'Access);
+       pragma Annotate (CodePeer, Modified, Pair);
  
        if Res = Failure then
           Raise_Socket_Error (Socket_Errno);
*************** package body GNAT.Sockets is
*** 957,964 ****
--- 955,966 ----
        if Item.Last /= No_Socket then
           Get_Socket_From_Set
             (Item.Set'Access, Last => L'Access, Socket => S'Access);
+          pragma Annotate (CodePeer, Modified, L);
+          pragma Annotate (CodePeer, Modified, S);
+ 
           Item.Last := Socket_Type (L);
           Socket    := Socket_Type (S);
+ 
        else
           Socket := No_Socket;
        end if;
*************** package body GNAT.Sockets is
*** 1216,1222 ****
        pragma Unreferenced (Family);
  
        HA     : aliased In_Addr_Union (Address.Family);
!       Buflen : constant C.int := Netdb_Buffer_Size;
        Buf    : aliased C.char_array (1 .. Netdb_Buffer_Size);
        Res    : aliased Hostent;
        Err    : aliased C.int;
--- 1218,1224 ----
        pragma Unreferenced (Family);
  
        HA     : aliased In_Addr_Union (Address.Family);
!       Buflen : constant C.size_t := Netdb_Buffer_Size;
        Buf    : aliased C.char_array (1 .. Netdb_Buffer_Size);
        Res    : aliased Hostent;
        Err    : aliased C.int;
*************** package body GNAT.Sockets is
*** 1271,1277 ****
  
        declare
           HN     : constant C.char_array := C.To_C (Name);
!          Buflen : constant C.int := Netdb_Buffer_Size;
           Buf    : aliased C.char_array (1 .. Netdb_Buffer_Size);
           Res    : aliased Hostent;
           Err    : aliased C.int;
--- 1273,1279 ----
  
        declare
           HN     : constant C.char_array := C.To_C (Name);
!          Buflen : constant C.size_t := Netdb_Buffer_Size;
           Buf    : aliased C.char_array (1 .. Netdb_Buffer_Size);
           Res    : aliased Hostent;
           Err    : aliased C.int;
*************** package body GNAT.Sockets is
*** 1319,1325 ****
     is
        SN     : constant C.char_array := C.To_C (Name);
        SP     : constant C.char_array := C.To_C (Protocol);
!       Buflen : constant C.int := Netdb_Buffer_Size;
        Buf    : aliased C.char_array (1 .. Netdb_Buffer_Size);
        Res    : aliased Servent;
  
--- 1321,1327 ----
     is
        SN     : constant C.char_array := C.To_C (Name);
        SP     : constant C.char_array := C.To_C (Protocol);
!       Buflen : constant C.size_t := Netdb_Buffer_Size;
        Buf    : aliased C.char_array (1 .. Netdb_Buffer_Size);
        Res    : aliased Servent;
  
*************** package body GNAT.Sockets is
*** 1349,1355 ****
        Protocol : String) return Service_Entry_Type
     is
        SP     : constant C.char_array := C.To_C (Protocol);
!       Buflen : constant C.int := Netdb_Buffer_Size;
        Buf    : aliased C.char_array (1 .. Netdb_Buffer_Size);
        Res    : aliased Servent;
  
--- 1351,1357 ----
        Protocol : String) return Service_Entry_Type
     is
        SP     : constant C.char_array := C.To_C (Protocol);
!       Buflen : constant C.size_t := Netdb_Buffer_Size;
        Buf    : aliased C.char_array (1 .. Netdb_Buffer_Size);
        Res    : aliased Servent;
  
*************** package body GNAT.Sockets is
*** 2014,2058 ****
  
     procedure Wait_On_Socket
       (Socket   : Socket_Type;
!       For_Read : Boolean;
        Timeout  : Selector_Duration;
        Selector : access Selector_Type := null;
        Status   : out Selector_Status)
     is
!       type Local_Selector_Access is access Selector_Type;
!       for Local_Selector_Access'Storage_Size use Selector_Type'Size;
! 
!       S : Selector_Access;
!       --  Selector to use for waiting
  
!       R_Fd_Set : Socket_Set_Type;
!       W_Fd_Set : Socket_Set_Type;
  
     begin
!       --  Create selector if not provided by the user
! 
!       if Selector = null then
!          declare
!             Local_S : constant Local_Selector_Access := new Selector_Type;
!          begin
!             S := Local_S.all'Unchecked_Access;
!             Create_Selector (S.all);
!          end;
! 
!       else
!          S := Selector.all'Access;
!       end if;
  
!       if For_Read then
!          Set (R_Fd_Set, Socket);
!       else
!          Set (W_Fd_Set, Socket);
        end if;
  
!       Check_Selector (S.all, R_Fd_Set, W_Fd_Set, Status, Timeout);
  
!       if Selector = null then
!          Close_Selector (S.all);
        end if;
     end Wait_On_Socket;
  
--- 2016,2046 ----
  
     procedure Wait_On_Socket
       (Socket   : Socket_Type;
!       Event    : Poll.Wait_Event_Set;
        Timeout  : Selector_Duration;
        Selector : access Selector_Type := null;
        Status   : out Selector_Status)
     is
!       Fd_Set : Poll.Set := Poll.To_Set (Socket, Event, 2);
!       --  Socket itself and second place for signaling socket if necessary
  
!       Count : Natural;
!       Index : Natural := 0;
  
     begin
!       --  Add signaling socket if selector defined
  
!       if Selector /= null then
!          Poll.Append (Fd_Set, Selector.R_Sig_Socket, Poll.Input_Event);
        end if;
  
!       Poll.Wait (Fd_Set, Timeout, Count);
  
!       if Count = 0 then
!          Status := Expired;
!       else
!          Poll.Next (Fd_Set, Index);
!          Status := (if Index = 1 then Completed else Aborted);
        end if;
     end Wait_On_Socket;
  
*************** package body GNAT.Sockets is
*** 2709,2722 ****
                 U4 := C.unsigned (Option.Timeout / 0.001);
  
                 if Option.Timeout > 0.0 and then U4 = 0 then
!                   --  Avoid round to zero. Zero timeout mean unlimited.
                    U4 := 1;
                 end if;
  
                 --  Old windows versions actual timeout is 500 ms + the given
                 --  value (unless it is 0).
  
!                if Minus_500ms_Windows_Timeout /= 0 then
                    if U4 > 500 then
                       U4 := U4 - 500;
  
--- 2697,2710 ----
                 U4 := C.unsigned (Option.Timeout / 0.001);
  
                 if Option.Timeout > 0.0 and then U4 = 0 then
!                   --  Avoid round to zero. Zero timeout mean unlimited
                    U4 := 1;
                 end if;
  
                 --  Old windows versions actual timeout is 500 ms + the given
                 --  value (unless it is 0).
  
!                if Minus_500ms_Windows_Timeout then
                    if U4 > 500 then
                       U4 := U4 - 500;
  
*************** package body GNAT.Sockets is
*** 2833,2841 ****
           --  Check for possible Duration overflow when Tv_Sec field is 64 bit
           --  integer.
  
!          if Val.Tv_Sec > time_t (Max_D) or else
!             (Val.Tv_Sec = time_t (Max_D) and then
!              Val.Tv_Usec > suseconds_t ((Forever - Duration (Max_D)) * 1E6))
           then
              return Forever;
           end if;
--- 2821,2831 ----
           --  Check for possible Duration overflow when Tv_Sec field is 64 bit
           --  integer.
  
!          if Val.Tv_Sec > time_t (Max_D)
!              or else
!            (Val.Tv_Sec = time_t (Max_D)
!               and then
!             Val.Tv_Usec > suseconds_t ((Forever - Duration (Max_D)) * 1E6))
           then
              return Forever;
           end if;
*************** package body GNAT.Sockets is
*** 2921,2928 ****
     -- To_Int --
     ------------
  
!    function To_Int (F : Request_Flag_Type) return C.int
!    is
        Current : Request_Flag_Type := F;
        Result  : C.int := 0;
  
--- 2911,2917 ----
     -- To_Int --
     ------------
  
!    function To_Int (F : Request_Flag_Type) return C.int is
        Current : Request_Flag_Type := F;
        Result  : C.int := 0;
  
*************** package body GNAT.Sockets is
*** 2932,2937 ****
--- 2921,2930 ----
  
           if Current mod 2 /= 0 then
              if Flags (J) = -1 then
+                pragma Annotate
+                  (CodePeer, False_Positive,
+                   "test always false", "self fulfilling prophecy");
+ 
                 Raise_Socket_Error (SOSC.EOPNOTSUPP);
              end if;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-socket.ads gcc-11.1.0/gcc/ada/libgnat/g-socket.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-socket.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-socket.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package GNAT.Sockets is
*** 449,458 ****
  
     type Selector_Status is (Completed, Expired, Aborted);
     --  Completion status of a selector operation, indicated as follows:
!    --    Complete: one of the expected events occurred
!    --    Expired:  no event occurred before the expiration of the timeout
!    --    Aborted:  an external action cancelled the wait operation before
!    --              any event occurred.
  
     Socket_Error : exception;
     --  There is only one exception in this package to deal with an error during
--- 449,458 ----
  
     type Selector_Status is (Completed, Expired, Aborted);
     --  Completion status of a selector operation, indicated as follows:
!    --    Completed: one of the expected events occurred
!    --    Expired:   no event occurred before the expiration of the timeout
!    --    Aborted:   an external action cancelled the wait operation before
!    --               any event occurred.
  
     Socket_Error : exception;
     --  There is only one exception in this package to deal with an error during
*************** private
*** 1573,1576 ****
--- 1573,1580 ----
     Wait_For_A_Full_Reception : constant Request_Flag_Type := 4;
     Send_End_Of_Record        : constant Request_Flag_Type := 8;
  
+    procedure Raise_Socket_Error (Error : Integer);
+    --  Raise Socket_Error with an exception message describing the error code
+    --  from errno.
+ 
  end GNAT.Sockets;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-socket__dummy.adb gcc-11.1.0/gcc/ada/libgnat/g-socket__dummy.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-socket__dummy.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-socket__dummy.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-socket__dummy.ads gcc-11.1.0/gcc/ada/libgnat/g-socket__dummy.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-socket__dummy.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-socket__dummy.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-socpol.adb gcc-11.1.0/gcc/ada/libgnat/g-socpol.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-socpol.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/g-socpol.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,429 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                    G N A T . S O C K E T S . P O L L                     --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --                       Copyright (C) 2020, AdaCore                        --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Calendar;
+ 
+ with GNAT.Sockets.Thin;
+ 
+ package body GNAT.Sockets.Poll is
+ 
+    To_C : constant array (Wait_Event_Type) of Events_Type :=
+             (Input => SOC.POLLIN or SOC.POLLPRI, Output => SOC.POLLOUT);
+    --  To convert Wait_Event_Type to C I/O events flags
+ 
+    procedure Set_Mode (Item : out Pollfd; Mode : Wait_Event_Set);
+    --  Set I/O waiting mode on Item
+ 
+    procedure Set_Event
+      (Item : out Pollfd; Event : Wait_Event_Type; Value : Boolean);
+    --  Set or reset waiting state on I/O event
+ 
+    procedure Check_Range (Self : Set; Index : Positive) with Inline;
+    --  raise Constraint_Error if Index is more than number of sockets in Self
+ 
+    function Status (Item : Pollfd) return Event_Set is
+      (Input           => (Item.REvents and To_C (Input)) /= 0,
+       Output          => (Item.REvents and To_C (Output)) /= 0,
+       Error           => (Item.REvents and SOC.POLLERR) /= 0,
+       Hang_Up         => (Item.REvents and SOC.POLLHUP) /= 0,
+       Invalid_Request => (Item.REvents and SOC.POLLNVAL) /= 0);
+    --  Get I/O events from C word
+ 
+    procedure Wait
+      (Fds : in out Set; Timeout : Interfaces.C.int; Result : out Integer);
+    --  Waits until one or more of the sockets descriptors become ready for some
+    --  class of I/O operation or error state occurs on one or more of them.
+    --  Timeout is in milliseconds. Result mean how many sockets ready for I/O
+    --  or have error state.
+ 
+    ----------
+    -- Wait --
+    ----------
+ 
+    procedure Wait
+      (Fds : in out Set; Timeout : Interfaces.C.int; Result : out Integer)
+    is separate;
+ 
+    ------------
+    -- Create --
+    ------------
+ 
+    function Create (Size : Positive) return Set is
+    begin
+       return Result : Set (Size);
+    end Create;
+ 
+    ------------
+    -- To_Set --
+    ------------
+ 
+    function To_Set
+      (Socket : Socket_Type;
+       Events : Wait_Event_Set;
+       Size   : Positive := 1) return Set is
+    begin
+       return Result : Set (Size) do
+          Append (Result, Socket, Events);
+       end return;
+    end To_Set;
+ 
+    ------------
+    -- Append --
+    ------------
+ 
+    procedure Append
+      (Self : in out Set; Socket : Socket_Type; Events : Wait_Event_Set) is
+    begin
+       Insert (Self, Socket, Events, Self.Length + 1);
+    end Append;
+ 
+    ------------
+    -- Insert --
+    ------------
+ 
+    procedure Insert
+      (Self       : in out Set;
+       Socket     : Socket_Type;
+       Events     : Wait_Event_Set;
+       Index      : Positive;
+       Keep_Order : Boolean := False) is
+    begin
+       if Self.Size <= Self.Length then
+          raise Constraint_Error with "Socket set is full";
+ 
+       elsif Index > Self.Length + 1 then
+          raise Constraint_Error with "Insert out of range";
+       end if;
+ 
+       if Socket < 0 then
+          raise Socket_Error with
+            "Wrong socket descriptor " & Socket_Type'Image (Socket);
+       end if;
+ 
+       Self.Length := Self.Length + 1;
+ 
+       if Index /= Self.Length then
+          if Keep_Order then
+             Self.Fds (Index + 1 .. Self.Length) :=
+               Self.Fds (Index .. Self.Length - 1);
+          else
+             Self.Fds (Self.Length) := Self.Fds (Index);
+          end if;
+ 
+          Self.Fds (Index).Events := 0;
+       end if;
+ 
+       Self.Fds (Index).Socket := FD_Type (Socket);
+       Set_Mode (Self.Fds (Index), Events);
+ 
+       if FD_Type (Socket) > Self.Max_FD then
+          Self.Max_FD := FD_Type (Socket);
+          Self.Max_OK := True;
+       end if;
+    end Insert;
+ 
+    -----------------
+    -- Check_Range --
+    -----------------
+ 
+    procedure Check_Range (Self : Set; Index : Positive) is
+    begin
+       if Index > Self.Length then
+          raise Constraint_Error;
+       end if;
+    end Check_Range;
+ 
+    ----------
+    -- Copy --
+    ----------
+ 
+    procedure Copy (Source : Set; Target : out Set) is
+    begin
+       if Target.Size < Source.Length then
+          raise Constraint_Error with
+            "Can't copy because size of target less than source length";
+       end if;
+ 
+       Target.Fds (1 .. Source.Length) := Source.Fds (1 .. Source.Length);
+ 
+       Target.Length := Source.Length;
+       Target.Max_FD := Source.Max_FD;
+       Target.Max_OK := Source.Max_OK;
+    end Copy;
+ 
+    ----------------
+    -- Get_Events --
+    ----------------
+ 
+    function Get_Events
+      (Self : Set; Index  : Positive) return Wait_Event_Set is
+    begin
+       Check_Range (Self, Index);
+       return
+         (Input  => (Self.Fds (Index).Events and To_C (Input)) /= 0,
+          Output => (Self.Fds (Index).Events and To_C (Output)) /= 0);
+    end Get_Events;
+ 
+    ------------
+    -- Growth --
+    ------------
+ 
+    function Growth (Self : Set) return Set is
+    begin
+       return Resize
+         (Self,
+          (case Self.Size is
+              when 1  .. 20 => 32,
+              when 21 .. 50 => 64,
+              when 51 .. 99 => Self.Size + Self.Size / 3,
+              when others   => Self.Size + Self.Size / 4));
+    end Growth;
+ 
+    ------------
+    -- Remove --
+    ------------
+ 
+    procedure Remove
+      (Self : in out Set; Index : Positive; Keep_Order : Boolean := False) is
+    begin
+       Check_Range (Self, Index);
+ 
+       if Self.Max_FD = Self.Fds (Index).Socket then
+          Self.Max_OK := False;
+       end if;
+ 
+       if Index < Self.Length then
+          if Keep_Order then
+             Self.Fds (Index .. Self.Length - 1) :=
+               Self.Fds (Index + 1 .. Self.Length);
+          else
+             Self.Fds (Index) := Self.Fds (Self.Length);
+          end if;
+       end if;
+ 
+       Self.Length := Self.Length - 1;
+    end Remove;
+ 
+    ------------
+    -- Resize --
+    ------------
+ 
+    function Resize (Self : Set; Size : Positive) return Set is
+    begin
+       return Result : Set (Size) do
+          Copy (Self, Result);
+       end return;
+    end Resize;
+ 
+    ---------------
+    -- Set_Event --
+    ---------------
+ 
+    procedure Set_Event
+      (Self  : in out Set;
+       Index : Positive;
+       Event : Wait_Event_Type;
+       Value : Boolean) is
+    begin
+       Check_Range (Self, Index);
+       Set_Event (Self.Fds (Index), Event, Value);
+    end Set_Event;
+ 
+    procedure Set_Event
+      (Item : out Pollfd; Event : Wait_Event_Type; Value : Boolean) is
+    begin
+       if Value then
+          Item.Events := Item.Events or To_C (Event);
+       else
+          Item.Events := Item.Events and not To_C (Event);
+       end if;
+    end Set_Event;
+ 
+    ----------------
+    -- Set_Events --
+    ----------------
+ 
+    procedure Set_Events
+      (Self   : in out Set;
+       Index  : Positive;
+       Events : Wait_Event_Set) is
+    begin
+       Check_Range (Self, Index);
+       Set_Mode (Self.Fds (Index), Events);
+    end Set_Events;
+ 
+    --------------
+    -- Set_Mode --
+    --------------
+ 
+    procedure Set_Mode (Item : out Pollfd; Mode : Wait_Event_Set) is
+    begin
+       for J in Mode'Range loop
+          Set_Event (Item, J, Mode (J));
+       end loop;
+    end Set_Mode;
+ 
+    ------------
+    -- Socket --
+    ------------
+ 
+    function Socket (Self : Set; Index : Positive) return Socket_Type is
+    begin
+       Check_Range (Self, Index);
+       return Socket_Type (Self.Fds (Index).Socket);
+    end Socket;
+ 
+    -----------
+    -- State --
+    -----------
+ 
+    procedure State
+      (Self   : Set;
+       Index  : Positive;
+       Socket : out Socket_Type;
+       Status : out Event_Set) is
+    begin
+       Check_Range (Self, Index);
+       Socket := Socket_Type (Self.Fds (Index).Socket);
+       Status := Poll.Status (Self.Fds (Index));
+    end State;
+ 
+    ----------
+    -- Wait --
+    ----------
+ 
+    procedure Wait (Self : in out Set; Timeout : Duration; Count : out Natural)
+    is
+       use Ada.Calendar;
+       --  Used to calculate partially consumed timeout on EINTR.
+       --  Better to use Ada.Real_Time, but we can't in current GNAT because
+       --  Ada.Real_Time is in tasking part of runtime.
+ 
+       Result       : Integer;
+       Poll_Timeout : Duration := Timeout;
+       C_Timeout    : Interfaces.C.int;
+       Errno        : Integer;
+       Stamp        : constant Time := Clock;
+    begin
+       if Self.Length = 0 then
+          Count := 0;
+          return;
+       end if;
+ 
+       loop
+          if Poll_Timeout >= Duration (Interfaces.C.int'Last - 8) / 1_000 then
+             --  Minus 8 is to workaround Linux kernel 2.6.24 bug with close to
+             --  Integer'Last poll timeout values.
+             --  syscall (SYS_poll, &ufds, 1, 2147483644); // is waiting
+             --  syscall (SYS_poll, &ufds, 1, 2147483645); // is not waiting
+             --  Timeout values close to maximum could be not safe because of
+             --  possible time conversion boundary errors in the kernel.
+             --  Use unlimited timeout instead of maximum 24 days timeout for
+             --  safety reasons.
+ 
+             C_Timeout := -1;
+          else
+             C_Timeout := Interfaces.C.int (Poll_Timeout * 1_000);
+          end if;
+ 
+          Wait (Self, C_Timeout, Result);
+ 
+          exit when Result >= 0;
+ 
+          Errno := Thin.Socket_Errno;
+ 
+          --  In case of EINTR error we have to continue waiting for network
+          --  events.
+ 
+          if Errno = SOC.EINTR then
+             if C_Timeout >= 0 then
+                Poll_Timeout := Timeout - (Clock - Stamp);
+ 
+                if Poll_Timeout < 0.0 then
+                   Poll_Timeout := 0.0;
+ 
+                elsif Poll_Timeout > Timeout then
+                   --  Clock moved back in time. This should not be happen when
+                   --  we use monotonic time.
+ 
+                   Poll_Timeout := Timeout;
+                end if;
+             end if;
+ 
+          else
+             Raise_Socket_Error (Errno);
+          end if;
+       end loop;
+ 
+       Count := Result;
+    end Wait;
+ 
+    ----------
+    -- Next --
+    ----------
+ 
+    procedure Next (Self : Set; Index : in out Natural) is
+    begin
+       loop
+          Index := Index + 1;
+ 
+          if Index > Self.Length then
+             Index := 0;
+             return;
+ 
+          elsif Self.Fds (Index).REvents /= 0 then
+             return;
+          end if;
+       end loop;
+    end Next;
+ 
+    ------------
+    -- Status --
+    ------------
+ 
+    function Status (Self : Set; Index : Positive) return Event_Set is
+    begin
+       Check_Range (Self, Index);
+       return Status (Self.Fds (Index));
+    end Status;
+ 
+    --------------
+    -- C_Status --
+    --------------
+ 
+    function C_Status
+      (Self : Set; Index : Positive) return Interfaces.C.unsigned is
+    begin
+       Check_Range (Self, Index);
+       return Interfaces.C.unsigned (Self.Fds (Index).REvents);
+    end C_Status;
+ 
+ end GNAT.Sockets.Poll;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-socpol.ads gcc-11.1.0/gcc/ada/libgnat/g-socpol.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-socpol.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/g-socpol.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,216 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                    G N A T . S O C K E T S . P O L L                     --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --                       Copyright (C) 2020, AdaCore                        --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides an interface to wait for one of a set of sockets to
+ --  become ready to perform I/O.
+ 
+ with System.OS_Constants;
+ 
+ package GNAT.Sockets.Poll is
+ 
+    type Event_Type is (Input, Output, Error, Hang_Up, Invalid_Request);
+    --  I/O events we can expect on socket.
+    --  Input           - socket ready to read;
+    --  Output          - socket available for write;
+    --  Error           - socket is in error state;
+    --  Hang_Up         - peer closed;
+    --  Invalid_Request - invalid socket;
+ 
+    type Event_Set is array (Event_Type) of Boolean;
+    --  The type to get results on events waiting
+ 
+    subtype Wait_Event_Type is Event_Type range Input .. Output;
+    type Wait_Event_Set is array (Wait_Event_Type) of Boolean;
+    --  The type to set events to wait. Note that Error event would be waited
+    --  anyway.
+ 
+    -------------------------------
+    --  Predefined set of events --
+    -------------------------------
+ 
+    Input_Event  : constant Wait_Event_Set;
+    --  Wait for input availability only
+ 
+    Output_Event : constant Wait_Event_Set;
+    --  Wait for output availability only
+ 
+    Both_Events : constant Wait_Event_Set;
+    --  Wait for Input and Output availability
+ 
+    Error_Event : constant Wait_Event_Set;
+    --  Wait only for error state on socket
+ 
+    type Set (Size : Positive) is private;
+    --  Set of sockets with I/O event set to wait on
+ 
+    function Create (Size : Positive) return Set;
+    --  Create empty socket set with defined size
+ 
+    function To_Set
+      (Socket : Socket_Type;
+       Events : Wait_Event_Set;
+       Size   : Positive := 1) return Set;
+    --  Create socket set and put the Socket there at the first place.
+    --  Events parameter is defining what state of the socket we are going to
+    --  wait.
+ 
+    procedure Append
+      (Self   : in out Set;
+       Socket : Socket_Type;
+       Events : Wait_Event_Set);
+    --  Add Socket and its I/O waiting state at the end of Self
+ 
+    procedure Insert
+      (Self       : in out Set;
+       Socket     : Socket_Type;
+       Events     : Wait_Event_Set;
+       Index      : Positive;
+       Keep_Order : Boolean := False);
+    --  Insert Socket and its I/O waiting state at the Index position.
+    --  If Keep_Order is True then all next elements moved to the next index up.
+    --  Otherwise the old element from Index moved to the end of the Self set.
+ 
+    procedure Remove
+      (Self : in out Set; Index : Positive; Keep_Order : Boolean := False);
+    --  Remove socket from Index. If Keep_Order is True then move all next
+    --  elements after removed one to previous index. If Keep_Order is False
+    --  then move the last element on place of the removed one.
+ 
+    procedure Set_Event
+      (Self  : in out Set;
+       Index : Positive;
+       Event : Wait_Event_Type;
+       Value : Boolean);
+    --  Set I/O waiting event to Value for the socket at Index position
+ 
+    procedure Set_Events
+      (Self   : in out Set;
+       Index  : Positive;
+       Events : Wait_Event_Set);
+    --  Set I/O waiting events for the socket at Index position
+ 
+    function Get_Events
+      (Self : Set; Index : Positive) return Wait_Event_Set;
+    --  Get I/O waiting events for the socket at Index position
+ 
+    function Length (Self : Set) return Natural;
+    --  Get the number of sockets currently in the Self set
+ 
+    function Full (Self : Set) return Boolean;
+    --  Return True if there is no more space in the Self set for new sockets
+ 
+    procedure Wait (Self : in out Set; Timeout : Duration; Count : out Natural);
+    --  Wait no longer than Timeout on the socket set for the I/O events.
+    --  Count output parameter is the number of elements in the Self set are
+    --  detected for I/O events. Zero Count mean timeout on wait.
+    --  The iteration over activated elements in set could be done with routine
+    --  Next. The kind of I/O events on element could be cheched with State or
+    --  Status routines.
+ 
+    procedure Next (Self : Set; Index : in out Natural);
+    --  Iterate over set looking for the next index with active I/O event state.
+    --  Put 0 initially into Index. Each iteration increments Index and then
+    --  checks for state. End of iterations can be detected by 0 in the Index.
+ 
+    procedure Copy (Source : Set; Target : out Set);
+    --  Copy sockets and its I/O waiting events from Source set into Target
+ 
+    function Resize (Self : Set; Size : Positive) return Set;
+    --  Returns the copy of Source with modified Size
+ 
+    function Growth (Self : Set) return Set;
+    --  Returns the copy of Source with increased Size
+ 
+    function Socket (Self : Set; Index : Positive) return Socket_Type;
+    --  Returns the Socket from Index position
+ 
+    function Status (Self : Set; Index : Positive) return Event_Set;
+    --  Returns I/O events detected in previous Wait call at Index position
+ 
+    procedure State
+      (Self   : Set;
+       Index  : Positive;
+       Socket : out Socket_Type;
+       Status : out Event_Set);
+    --  Returns Socket and its I/O events detected in previous Wait call at
+    --  Index position.
+ 
+    function C_Status
+      (Self : Set; Index : Positive) return Interfaces.C.unsigned;
+    --  Return word with I/O events detected flags in previous Wait call at
+    --  Index position. Possible flags are defined in System.OS_Constants names
+    --  starting with POLL prefix.
+ 
+ private
+ 
+    Input_Event  : constant Wait_Event_Set := (Input => True, Output => False);
+    Output_Event : constant Wait_Event_Set := (Input => False, Output => True);
+    Both_Events  : constant Wait_Event_Set := (others => True);
+    Error_Event  : constant Wait_Event_Set := (others => False);
+ 
+    package SOC renames System.OS_Constants;
+ 
+    type nfds_t is mod 2 ** SOC.SIZEOF_nfds_t;
+    for nfds_t'Size use SOC.SIZEOF_nfds_t;
+ 
+    FD_Type_Bound : constant := 2 ** (SOC.SIZEOF_fd_type - 1);
+ 
+    type FD_Type is range -FD_Type_Bound .. FD_Type_Bound - 1;
+    for FD_Type'Size use SOC.SIZEOF_fd_type;
+ 
+    type Events_Type is mod 2 ** SOC.SIZEOF_pollfd_events;
+    for Events_Type'Size use SOC.SIZEOF_pollfd_events;
+ 
+    type Pollfd is record
+       Socket  : FD_Type;
+       Events  : Events_Type := 0;
+       REvents : Events_Type := 0;
+    end record with Convention => C;
+ 
+    type Poll_Set is array (Positive range <>) of Pollfd with Convention => C;
+ 
+    type Set (Size : Positive) is record
+       Length : Natural := 0;
+       Max_FD : FD_Type := 0;
+       Max_OK : Boolean;
+       --  Is the Max_FD actual. It can became inactual after remove socket with
+       --  Max_FD from set and became actual again after add socket with FD more
+       --  than Max_FD.
+       Fds    : Poll_Set (1 .. Size);
+    end record;
+ 
+    function Length (Self : Set) return Natural
+    is (Self.Length);
+ 
+    function Full (Self : Set) return Boolean
+    is (Self.Size = Self.Length);
+ 
+ end GNAT.Sockets.Poll;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-socpol__dummy.adb gcc-11.1.0/gcc/ada/libgnat/g-socpol__dummy.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-socpol__dummy.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/g-socpol__dummy.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,32 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                    G N A T . S O C K E T S . P O L L                     --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --                         Copyright (C) 2020, AdaCore                      --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-socpol__dummy.ads gcc-11.1.0/gcc/ada/libgnat/g-socpol__dummy.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-socpol__dummy.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/g-socpol__dummy.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,37 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                    G N A T . S O C K E T S . P O L L                     --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --                         Copyright (C) 2020, AdaCore                      --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package is a placeholder for the sockets binding for platforms where
+ --  it is not implemented.
+ 
+ package GNAT.Sockets.Thin_Common is
+    pragma Unimplemented_Unit;
+ end GNAT.Sockets.Thin_Common;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-socthi.adb gcc-11.1.0/gcc/ada/libgnat/g-socthi.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-socthi.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-socthi.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.Sockets.Thin is
*** 74,90 ****
     function Syscall_Recv
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.int;
!       Flags : C.int) return C.int;
     pragma Import (C, Syscall_Recv, "recv");
  
     function Syscall_Recvfrom
       (S       : C.int;
        Msg     : System.Address;
!       Len     : C.int;
        Flags   : C.int;
        From    : System.Address;
!       Fromlen : not null access C.int) return C.int;
     pragma Import (C, Syscall_Recvfrom, "recvfrom");
  
     function Syscall_Recvmsg
--- 74,90 ----
     function Syscall_Recv
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.size_t;
!       Flags : C.int) return System.CRTL.ssize_t;
     pragma Import (C, Syscall_Recv, "recv");
  
     function Syscall_Recvfrom
       (S       : C.int;
        Msg     : System.Address;
!       Len     : C.size_t;
        Flags   : C.int;
        From    : System.Address;
!       Fromlen : not null access C.int) return System.CRTL.ssize_t;
     pragma Import (C, Syscall_Recvfrom, "recvfrom");
  
     function Syscall_Recvmsg
*************** package body GNAT.Sockets.Thin is
*** 102,111 ****
     function Syscall_Sendto
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.int;
        Flags : C.int;
        To    : System.Address;
!       Tolen : C.int) return C.int;
     pragma Import (C, Syscall_Sendto, "sendto");
  
     function Syscall_Socket
--- 102,111 ----
     function Syscall_Sendto
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.size_t;
        Flags : C.int;
        To    : System.Address;
!       Tolen : C.int) return System.CRTL.ssize_t;
     pragma Import (C, Syscall_Sendto, "sendto");
  
     function Syscall_Socket
*************** package body GNAT.Sockets.Thin is
*** 250,263 ****
     function C_Recv
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.int;
        Flags : C.int) return C.int
     is
        Res : C.int;
  
     begin
        loop
!          Res := Syscall_Recv (S, Msg, Len, Flags);
           exit when SOSC.Thread_Blocking_IO
             or else Res /= Failure
             or else Non_Blocking_Socket (S)
--- 250,263 ----
     function C_Recv
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.size_t;
        Flags : C.int) return C.int
     is
        Res : C.int;
  
     begin
        loop
!          Res := C.int (Syscall_Recv (S, Msg, Len, Flags));
           exit when SOSC.Thread_Blocking_IO
             or else Res /= Failure
             or else Non_Blocking_Socket (S)
*************** package body GNAT.Sockets.Thin is
*** 275,281 ****
     function C_Recvfrom
       (S       : C.int;
        Msg     : System.Address;
!       Len     : C.int;
        Flags   : C.int;
        From    : System.Address;
        Fromlen : not null access C.int) return C.int
--- 275,281 ----
     function C_Recvfrom
       (S       : C.int;
        Msg     : System.Address;
!       Len     : C.size_t;
        Flags   : C.int;
        From    : System.Address;
        Fromlen : not null access C.int) return C.int
*************** package body GNAT.Sockets.Thin is
*** 284,290 ****
  
     begin
        loop
!          Res := Syscall_Recvfrom (S, Msg, Len, Flags, From, Fromlen);
           exit when SOSC.Thread_Blocking_IO
             or else Res /= Failure
             or else Non_Blocking_Socket (S)
--- 284,290 ----
  
     begin
        loop
!          Res := C.int (Syscall_Recvfrom (S, Msg, Len, Flags, From, Fromlen));
           exit when SOSC.Thread_Blocking_IO
             or else Res /= Failure
             or else Non_Blocking_Socket (S)
*************** package body GNAT.Sockets.Thin is
*** 350,356 ****
     function C_Sendto
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.int;
        Flags : C.int;
        To    : System.Address;
        Tolen : C.int) return C.int
--- 350,356 ----
     function C_Sendto
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.size_t;
        Flags : C.int;
        To    : System.Address;
        Tolen : C.int) return C.int
*************** package body GNAT.Sockets.Thin is
*** 359,365 ****
  
     begin
        loop
!          Res := Syscall_Sendto (S, Msg, Len, Flags, To, Tolen);
           exit when SOSC.Thread_Blocking_IO
             or else Res /= Failure
             or else Non_Blocking_Socket (S)
--- 359,365 ----
  
     begin
        loop
!          Res := C.int (Syscall_Sendto (S, Msg, Len, Flags, To, Tolen));
           exit when SOSC.Thread_Blocking_IO
             or else Res /= Failure
             or else Non_Blocking_Socket (S)
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-socthi.ads gcc-11.1.0/gcc/ada/libgnat/g-socthi.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-socthi.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-socthi.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package GNAT.Sockets.Thin is
*** 98,104 ****
  
     function C_Gethostname
       (Name    : System.Address;
!       Namelen : C.int) return C.int;
  
     function C_Getpeername
       (S       : C.int;
--- 98,104 ----
  
     function C_Gethostname
       (Name    : System.Address;
!       Namelen : C.size_t) return C.int;
  
     function C_Getpeername
       (S       : C.int;
*************** package GNAT.Sockets.Thin is
*** 129,141 ****
     function C_Recv
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.int;
        Flags : C.int) return C.int;
  
     function C_Recvfrom
       (S       : C.int;
        Msg     : System.Address;
!       Len     : C.int;
        Flags   : C.int;
        From    : System.Address;
        Fromlen : not null access C.int) return C.int;
--- 129,141 ----
     function C_Recv
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.size_t;
        Flags : C.int) return C.int;
  
     function C_Recvfrom
       (S       : C.int;
        Msg     : System.Address;
!       Len     : C.size_t;
        Flags   : C.int;
        From    : System.Address;
        Fromlen : not null access C.int) return C.int;
*************** package GNAT.Sockets.Thin is
*** 160,166 ****
     function C_Sendto
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.int;
        Flags : C.int;
        To    : System.Address;
        Tolen : C.int) return C.int;
--- 160,166 ----
     function C_Sendto
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.size_t;
        Flags : C.int;
        To    : System.Address;
        Tolen : C.int) return C.int;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-socthi__dummy.adb gcc-11.1.0/gcc/ada/libgnat/g-socthi__dummy.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-socthi__dummy.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-socthi__dummy.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-socthi__dummy.ads gcc-11.1.0/gcc/ada/libgnat/g-socthi__dummy.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-socthi__dummy.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-socthi__dummy.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-socthi__mingw.adb gcc-11.1.0/gcc/ada/libgnat/g-socthi__mingw.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-socthi__mingw.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-socthi__mingw.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.Sockets.Thin is
*** 375,387 ****
        Exceptfds : access Fd_Set;
        Timeout   : Timeval_Access) return C.int
     is
!       pragma Warnings (Off, Exceptfds);
! 
!       Original_WFS : aliased constant Fd_Set := Writefds.all;
! 
!       Res  : C.int;
!       S    : aliased C.int;
!       Last : aliased C.int;
  
     begin
        --  Asynchronous connection failures are notified in the exception fd
--- 375,384 ----
        Exceptfds : access Fd_Set;
        Timeout   : Timeval_Access) return C.int
     is
!       Original_WFS : aliased Fd_Set;
!       Res          : C.int;
!       S            : aliased C.int;
!       Last         : aliased C.int;
  
     begin
        --  Asynchronous connection failures are notified in the exception fd
*************** package body GNAT.Sockets.Thin is
*** 392,398 ****
        --  present in the initial write fd set, then move the socket from the
        --  exception fd set to the write fd set.
  
!       if Writefds /= No_Fd_Set_Access then
  
           --  Add any socket present in write fd set into exception fd set
  
--- 389,396 ----
        --  present in the initial write fd set, then move the socket from the
        --  exception fd set to the write fd set.
  
!       if Writefds /= null then
!          Original_WFS := Writefds.all;
  
           --  Add any socket present in write fd set into exception fd set
  
*************** package body GNAT.Sockets.Thin is
*** 411,417 ****
  
        Res := Standard_Select (Nfds, Readfds, Writefds, Exceptfds, Timeout);
  
!       if Exceptfds /= No_Fd_Set_Access then
           declare
              EFSC    : aliased Fd_Set := Exceptfds.all;
              Flag    : constant C.int := SOSC.MSG_PEEK + SOSC.MSG_OOB;
--- 409,415 ----
  
        Res := Standard_Select (Nfds, Readfds, Writefds, Exceptfds, Timeout);
  
!       if Exceptfds /= null then
           declare
              EFSC    : aliased Fd_Set := Exceptfds.all;
              Flag    : constant C.int := SOSC.MSG_PEEK + SOSC.MSG_OOB;
*************** package body GNAT.Sockets.Thin is
*** 448,455 ****
                    --  exception fd set back to write fd set. Otherwise, ignore
                    --  this event since the user is not watching for it.
  
!                   if Writefds /= No_Fd_Set_Access
!                     and then (Is_Socket_In_Set (Original_WFS'Access, S) /= 0)
                    then
                       Insert_Socket_In_Set (Writefds, S);
                    end if;
--- 446,453 ----
                    --  exception fd set back to write fd set. Otherwise, ignore
                    --  this event since the user is not watching for it.
  
!                   if Writefds /= null
!                     and then Is_Socket_In_Set (Original_WFS'Access, S) /= 0
                    then
                       Insert_Socket_In_Set (Writefds, S);
                    end if;
*************** package body GNAT.Sockets.Thin is
*** 457,462 ****
--- 455,461 ----
              end loop;
           end;
        end if;
+ 
        return Res;
     end C_Select;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-socthi__mingw.ads gcc-11.1.0/gcc/ada/libgnat/g-socthi__mingw.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-socthi__mingw.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-socthi__mingw.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-socthi__vxworks.adb gcc-11.1.0/gcc/ada/libgnat/g-socthi__vxworks.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-socthi__vxworks.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-socthi__vxworks.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.Sockets.Thin is
*** 78,91 ****
     function Syscall_Recv
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.int;
        Flags : C.int) return C.int;
     pragma Import (C, Syscall_Recv, "recv");
  
     function Syscall_Recvfrom
       (S       : C.int;
        Msg     : System.Address;
!       Len     : C.int;
        Flags   : C.int;
        From    : System.Address;
        Fromlen : not null access C.int) return C.int;
--- 78,91 ----
     function Syscall_Recv
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.size_t;
        Flags : C.int) return C.int;
     pragma Import (C, Syscall_Recv, "recv");
  
     function Syscall_Recvfrom
       (S       : C.int;
        Msg     : System.Address;
!       Len     : C.size_t;
        Flags   : C.int;
        From    : System.Address;
        Fromlen : not null access C.int) return C.int;
*************** package body GNAT.Sockets.Thin is
*** 106,122 ****
     function Syscall_Send
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.int;
!       Flags : C.int) return C.int;
     pragma Import (C, Syscall_Send, "send");
  
     function Syscall_Sendto
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.int;
        Flags : C.int;
        To    : System.Address;
!       Tolen : C.int) return C.int;
     pragma Import (C, Syscall_Sendto, "sendto");
  
     function Syscall_Socket
--- 106,122 ----
     function Syscall_Send
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.size_t;
!       Flags : C.int) return System.CRTL.ssize_t;
     pragma Import (C, Syscall_Send, "send");
  
     function Syscall_Sendto
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.size_t;
        Flags : C.int;
        To    : System.Address;
!       Tolen : C.int) return System.CRTL.ssize_t;
     pragma Import (C, Syscall_Sendto, "sendto");
  
     function Syscall_Socket
*************** package body GNAT.Sockets.Thin is
*** 252,258 ****
     function C_Recv
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.int;
        Flags : C.int) return C.int
     is
        Res : C.int;
--- 252,258 ----
     function C_Recv
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.size_t;
        Flags : C.int) return C.int
     is
        Res : C.int;
*************** package body GNAT.Sockets.Thin is
*** 277,283 ****
     function C_Recvfrom
       (S       : C.int;
        Msg     : System.Address;
!       Len     : C.int;
        Flags   : C.int;
        From    : System.Address;
        Fromlen : not null access C.int) return C.int
--- 277,283 ----
     function C_Recvfrom
       (S       : C.int;
        Msg     : System.Address;
!       Len     : C.size_t;
        Flags   : C.int;
        From    : System.Address;
        Fromlen : not null access C.int) return C.int
*************** package body GNAT.Sockets.Thin is
*** 352,358 ****
     function C_Sendto
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.int;
        Flags : C.int;
        To    : System.Address;
        Tolen : C.int) return C.int
--- 352,358 ----
     function C_Sendto
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.size_t;
        Flags : C.int;
        To    : System.Address;
        Tolen : C.int) return C.int
*************** package body GNAT.Sockets.Thin is
*** 369,380 ****
              --  support sendto(2) calls on connected sockets with a null
              --  destination address, so use send(2) instead in that case.
  
!             Res := Syscall_Send (S, Msg, Len, Flags);
  
           --  Normal case where destination address is non-null
  
           else
!             Res := Syscall_Sendto (S, Msg, Len, Flags, To, Tolen);
           end if;
  
           exit when SOSC.Thread_Blocking_IO
--- 369,380 ----
              --  support sendto(2) calls on connected sockets with a null
              --  destination address, so use send(2) instead in that case.
  
!             Res := C.int (Syscall_Send (S, Msg, Len, Flags));
  
           --  Normal case where destination address is non-null
  
           else
!             Res := C.int (Syscall_Sendto (S, Msg, Len, Flags, To, Tolen));
           end if;
  
           exit when SOSC.Thread_Blocking_IO
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-socthi__vxworks.ads gcc-11.1.0/gcc/ada/libgnat/g-socthi__vxworks.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-socthi__vxworks.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-socthi__vxworks.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package GNAT.Sockets.Thin is
*** 95,101 ****
  
     function C_Gethostname
       (Name    : System.Address;
!       Namelen : C.int) return C.int;
  
     function C_Getpeername
       (S       : C.int;
--- 95,101 ----
  
     function C_Gethostname
       (Name    : System.Address;
!       Namelen : C.size_t) return C.int;
  
     function C_Getpeername
       (S       : C.int;
*************** package GNAT.Sockets.Thin is
*** 126,138 ****
     function C_Recv
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.int;
        Flags : C.int) return C.int;
  
     function C_Recvfrom
       (S       : C.int;
        Msg     : System.Address;
!       Len     : C.int;
        Flags   : C.int;
        From    : System.Address;
        Fromlen : not null access C.int) return C.int;
--- 126,138 ----
     function C_Recv
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.size_t;
        Flags : C.int) return C.int;
  
     function C_Recvfrom
       (S       : C.int;
        Msg     : System.Address;
!       Len     : C.size_t;
        Flags   : C.int;
        From    : System.Address;
        Fromlen : not null access C.int) return C.int;
*************** package GNAT.Sockets.Thin is
*** 157,163 ****
     function C_Sendto
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.int;
        Flags : C.int;
        To    : System.Address;
        Tolen : C.int) return C.int;
--- 157,163 ----
     function C_Sendto
       (S     : C.int;
        Msg   : System.Address;
!       Len   : C.size_t;
        Flags : C.int;
        To    : System.Address;
        Tolen : C.int) return C.int;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-soliop.ads gcc-11.1.0/gcc/ada/libgnat/g-soliop.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-soliop.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-soliop.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-soliop__lynxos.ads gcc-11.1.0/gcc/ada/libgnat/g-soliop__lynxos.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-soliop__lynxos.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-soliop__lynxos.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-soliop__mingw.ads gcc-11.1.0/gcc/ada/libgnat/g-soliop__mingw.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-soliop__mingw.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-soliop__mingw.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-soliop__qnx.ads gcc-11.1.0/gcc/ada/libgnat/g-soliop__qnx.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-soliop__qnx.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-soliop__qnx.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-soliop__solaris.ads gcc-11.1.0/gcc/ada/libgnat/g-soliop__solaris.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-soliop__solaris.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-soliop__solaris.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sopowa.adb gcc-11.1.0/gcc/ada/libgnat/g-sopowa.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-sopowa.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/g-sopowa.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,56 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                G N A T . S O C K E T S . P O L L . W A I T               --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --                       Copyright (C) 2020, AdaCore                        --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Wait implementation on top of native poll call
+ --
+ --  This submodule can be used on systems where poll system call is natively
+ --  supported. Microsoft Windows supports WSAPoll system call from Vista
+ --  version and this submodule can be used on such Windows versions too, the
+ --  System.OS_Constants.Poll_Linkname constant defines appropriate link name
+ --  for Windows. But we do not use WSAPoll in GNAT.Sockets.Poll implementation
+ --  for now because it is much slower than select system call, at least in
+ --  Windows version 10.0.18363.1016.
+ 
+ separate (GNAT.Sockets.Poll)
+ 
+ procedure Wait
+   (Fds : in out Set; Timeout : Interfaces.C.int; Result : out Integer)
+ is
+ 
+    function Poll
+      (Fds     : Poll_Set;
+       Nfds    : nfds_t;
+       Timeout : Interfaces.C.int) return Integer
+      with Import, Convention => Stdcall, External_Name => SOC.Poll_Linkname;
+ 
+ begin
+    Result := Poll (Fds.Fds, nfds_t (Fds.Length), Timeout);
+ end Wait;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sopowa__mingw.adb gcc-11.1.0/gcc/ada/libgnat/g-sopowa__mingw.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-sopowa__mingw.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/g-sopowa__mingw.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,92 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                G N A T . S O C K E T S . P O L L . W A I T               --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --                       Copyright (C) 2020, AdaCore                        --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Wait implementation on top of Windows select call
+ --
+ --  Microsoft Windows from Vista version has WSAPoll function in API which is
+ --  similar to POSIX poll call, but experiments show that the WSAPoll is much
+ --  slower than select at least in Windows version 10.0.18363.1016.
+ 
+ with GNAT.Sockets.Poll.G_Wait;
+ 
+ separate (GNAT.Sockets.Poll)
+ 
+ procedure Wait
+   (Fds : in out Set; Timeout : Interfaces.C.int; Result : out Integer)
+ is
+    use Interfaces;
+ 
+    type FD_Array is array (1 .. Fds.Length) of FD_Type
+      with Convention => C;
+ 
+    type FD_Set_Type is record
+       Count : C.int;
+       Set   : FD_Array;
+    end record with Convention => C;
+ 
+    procedure Reset_Socket_Set (Set : in out FD_Set_Type) with Inline;
+ 
+    procedure Insert_Socket_In_Set (Set : in out FD_Set_Type; FD : FD_Type)
+      with Inline;
+ 
+    function Is_Socket_In_Set (Set : FD_Set_Type; FD : FD_Type) return C.int
+      with Import, Convention => C,
+           External_Name => "__gnat_is_socket_in_set";
+ 
+    --------------------------
+    -- Insert_Socket_In_Set --
+    --------------------------
+ 
+    procedure Insert_Socket_In_Set (Set : in out FD_Set_Type; FD : FD_Type) is
+    begin
+       Set.Count := Set.Count + 1;
+       Set.Set (Integer (Set.Count)) := FD;
+    end Insert_Socket_In_Set;
+ 
+    ----------------------
+    -- Reset_Socket_Set --
+    ----------------------
+ 
+    procedure Reset_Socket_Set (Set : in out FD_Set_Type) is
+    begin
+       Set.Count := 0;
+    end Reset_Socket_Set;
+ 
+    ----------
+    -- Poll --
+    ----------
+ 
+    procedure Poll is new G_Wait
+      (FD_Set_Type, Reset_Socket_Set, Insert_Socket_In_Set, Is_Socket_In_Set);
+ 
+ begin
+    Poll (Fds, Timeout, Result);
+ end Wait;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sopowa__posix.adb gcc-11.1.0/gcc/ada/libgnat/g-sopowa__posix.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-sopowa__posix.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/g-sopowa__posix.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,91 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                G N A T . S O C K E T S . P O L L . W A I T               --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --                       Copyright (C) 2020, AdaCore                        --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Wait implementation on top of posix select call
+ 
+ with GNAT.Sockets.Poll.G_Wait;
+ 
+ separate (GNAT.Sockets.Poll)
+ 
+ procedure Wait
+   (Fds : in out Set; Timeout : Interfaces.C.int; Result : out Integer)
+ is
+    use Interfaces;
+ 
+    function Get_Max_FD return FD_Type;
+    --  Check is Max_FD is actual and correct it if necessary
+ 
+    type FD_Set_Type is array (0 .. Get_Max_FD / C.long'Size) of C.long
+      with Convention => C;
+ 
+    procedure Reset_Socket_Set (Set : in out FD_Set_Type);
+    --  Use own FD_ZERO routine because FD_Set_Type size depend on Fds.Max_FD
+ 
+    procedure Insert_Socket_In_Set (Set : in out FD_Set_Type; FD : FD_Type)
+      with Import, Convention => C,
+           External_Name => "__gnat_insert_socket_in_set";
+ 
+    function Is_Socket_In_Set (Set : FD_Set_Type; FD : FD_Type) return C.int
+      with Import, Convention => C,
+           External_Name => "__gnat_is_socket_in_set";
+ 
+    procedure Reset_Socket_Set (Set : in out FD_Set_Type) is
+    begin
+       Set := (others => 0);
+    end Reset_Socket_Set;
+ 
+    procedure Poll is new G_Wait
+      (FD_Set_Type, Reset_Socket_Set, Insert_Socket_In_Set, Is_Socket_In_Set);
+ 
+    ----------------
+    -- Get_Max_FD --
+    ----------------
+ 
+    function Get_Max_FD return FD_Type is
+    begin
+       if not Fds.Max_OK then
+          Fds.Max_FD := Fds.Fds (Fds.Fds'First).Socket;
+ 
+          for J in Fds.Fds'First + 1 .. Fds.Length loop
+             if Fds.Max_FD < Fds.Fds (J).Socket then
+                Fds.Max_FD := Fds.Fds (J).Socket;
+             end if;
+          end loop;
+ 
+          Fds.Max_OK := True;
+       end if;
+ 
+       return Fds.Max_FD;
+    end Get_Max_FD;
+ 
+ begin
+    Poll (Fds, Timeout, Result);
+ end Wait;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sothco.adb gcc-11.1.0/gcc/ada/libgnat/g-sothco.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-sothco.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sothco.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2008-2019, AdaCore                   --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2008-2020, AdaCore                   --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sothco.ads gcc-11.1.0/gcc/ada/libgnat/g-sothco.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-sothco.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sothco.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2008-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2008-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package GNAT.Sockets.Thin_Common is
*** 281,287 ****
       (Name     : C.char_array;
        Ret      : not null access Hostent;
        Buf      : System.Address;
!       Buflen   : C.int;
        H_Errnop : not null access C.int) return C.int;
  
     function C_Gethostbyaddr
--- 281,287 ----
       (Name     : C.char_array;
        Ret      : not null access Hostent;
        Buf      : System.Address;
!       Buflen   : C.size_t;
        H_Errnop : not null access C.int) return C.int;
  
     function C_Gethostbyaddr
*************** package GNAT.Sockets.Thin_Common is
*** 290,296 ****
        Addr_Type : C.int;
        Ret       : not null access Hostent;
        Buf       : System.Address;
!       Buflen    : C.int;
        H_Errnop  : not null access C.int) return C.int;
  
     function C_Getservbyname
--- 290,296 ----
        Addr_Type : C.int;
        Ret       : not null access Hostent;
        Buf       : System.Address;
!       Buflen    : C.size_t;
        H_Errnop  : not null access C.int) return C.int;
  
     function C_Getservbyname
*************** package GNAT.Sockets.Thin_Common is
*** 298,311 ****
        Proto  : C.char_array;
        Ret    : not null access Servent;
        Buf    : System.Address;
!       Buflen : C.int) return C.int;
  
     function C_Getservbyport
       (Port   : C.int;
        Proto  : C.char_array;
        Ret    : not null access Servent;
        Buf    : System.Address;
!       Buflen : C.int) return C.int;
  
     Address_Size : constant := Standard'Address_Size;
  
--- 298,311 ----
        Proto  : C.char_array;
        Ret    : not null access Servent;
        Buf    : System.Address;
!       Buflen : C.size_t) return C.int;
  
     function C_Getservbyport
       (Port   : C.int;
        Proto  : C.char_array;
        Ret    : not null access Servent;
        Buf    : System.Address;
!       Buflen : C.size_t) return C.int;
  
     Address_Size : constant := Standard'Address_Size;
  
*************** package GNAT.Sockets.Thin_Common is
*** 451,462 ****
     renames Short_To_Network;
     --  Symmetric operation
  
!    function Minus_500ms_Windows_Timeout return C.int;
     --  Microsoft Windows desktop older then 8.0 and Microsoft Windows Server
     --  older than 2019 need timeout correction for 500 milliseconds. This
!    --  routine returns 1 for such versions.
  
  private
     pragma Import (C, Get_Socket_From_Set, "__gnat_get_socket_from_set");
     pragma Import (C, Is_Socket_In_Set, "__gnat_is_socket_in_set");
     pragma Import (C, Last_Socket_In_Set, "__gnat_last_socket_in_set");
--- 451,469 ----
     renames Short_To_Network;
     --  Symmetric operation
  
!    Minus_500ms_Windows_Timeout : constant Boolean;
     --  Microsoft Windows desktop older then 8.0 and Microsoft Windows Server
     --  older than 2019 need timeout correction for 500 milliseconds. This
!    --  constant is True for such versions.
  
  private
+ 
+    function Get_Minus_500ms_Timeout return C.int
+      with Import, Convention => C, External_Name => "__gnat_minus_500ms";
+ 
+    Minus_500ms_Windows_Timeout : constant Boolean :=
+                                    Get_Minus_500ms_Timeout /= 0;
+ 
     pragma Import (C, Get_Socket_From_Set, "__gnat_get_socket_from_set");
     pragma Import (C, Is_Socket_In_Set, "__gnat_is_socket_in_set");
     pragma Import (C, Last_Socket_In_Set, "__gnat_last_socket_in_set");
*************** private
*** 488,493 ****
     pragma Import (C, Hostent_H_Length,   "__gnat_hostent_h_length");
     pragma Import (C, Hostent_H_Addr,     "__gnat_hostent_h_addr");
  
-    pragma Import (C, Minus_500ms_Windows_Timeout, "__gnat_minus_500ms");
- 
  end GNAT.Sockets.Thin_Common;
--- 495,498 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sothco__dummy.adb gcc-11.1.0/gcc/ada/libgnat/g-sothco__dummy.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-sothco__dummy.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sothco__dummy.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2008-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2008-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sothco__dummy.ads gcc-11.1.0/gcc/ada/libgnat/g-sothco__dummy.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-sothco__dummy.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sothco__dummy.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2008-2019, AdaCore                   --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2008-2020, AdaCore                   --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-souinf.ads gcc-11.1.0/gcc/ada/libgnat/g-souinf.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-souinf.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-souinf.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-spchge.adb gcc-11.1.0/gcc/ada/libgnat/g-spchge.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-spchge.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-spchge.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-spchge.ads gcc-11.1.0/gcc/ada/libgnat/g-spchge.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-spchge.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-spchge.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-speche.adb gcc-11.1.0/gcc/ada/libgnat/g-speche.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-speche.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-speche.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-speche.ads gcc-11.1.0/gcc/ada/libgnat/g-speche.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-speche.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-speche.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-spipat.adb gcc-11.1.0/gcc/ada/libgnat/g-spipat.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-spipat.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-spipat.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-spipat.ads gcc-11.1.0/gcc/ada/libgnat/g-spipat.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-spipat.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-spipat.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-spitbo.adb gcc-11.1.0/gcc/ada/libgnat/g-spitbo.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-spitbo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-spitbo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-spitbo.ads gcc-11.1.0/gcc/ada/libgnat/g-spitbo.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-spitbo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-spitbo.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package GNAT.Spitbol is
*** 126,132 ****
        Len : Natural;
        Pad : Character := ' ') return VString;
     --  If the length of Str is greater than or equal to Len, then Str is
!    --  returned unchanged. Otherwise, The value returned is obtained by
     --  concatenating Length (Str) - Len instances of the Pad character to
     --  the left hand side.
  
--- 126,132 ----
        Len : Natural;
        Pad : Character := ' ') return VString;
     --  If the length of Str is greater than or equal to Len, then Str is
!    --  returned unchanged. Otherwise, the value returned is obtained by
     --  concatenating Length (Str) - Len instances of the Pad character to
     --  the left hand side.
  
*************** package GNAT.Spitbol is
*** 155,161 ****
        Len : Natural;
        Pad : Character := ' ') return VString;
     --  If the length of Str is greater than or equal to Len, then Str is
!    --  returned unchanged. Otherwise, The value returned is obtained by
     --  concatenating Length (Str) - Len instances of the Pad character to
     --  the right hand side.
  
--- 155,161 ----
        Len : Natural;
        Pad : Character := ' ') return VString;
     --  If the length of Str is greater than or equal to Len, then Str is
!    --  returned unchanged. Otherwise, the value returned is obtained by
     --  concatenating Length (Str) - Len instances of the Pad character to
     --  the right hand side.
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-spogwa.adb gcc-11.1.0/gcc/ada/libgnat/g-spogwa.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-spogwa.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/g-spogwa.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,137 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --             G N A T . S O C K E T S . P O L L . G _ W A I T              --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --                       Copyright (C) 2020, AdaCore                        --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with GNAT.Sockets.Thin_Common;
+ 
+ procedure GNAT.Sockets.Poll.G_Wait
+   (Fds : in out Set; Timeout : Interfaces.C.int; Result : out Integer)
+ is
+    use Interfaces;
+ 
+    function C_Select
+      (Nfds      : C.int;
+       readfds   : access FD_Set_Type;
+       writefds  : access FD_Set_Type;
+       exceptfds : access FD_Set_Type;
+       timeout   : access Thin_Common.Timeval) return Integer
+      with Import => True, Convention => Stdcall, External_Name => "select";
+ 
+    Timeout_V : aliased Thin_Common.Timeval;
+    Timeout_A : access Thin_Common.Timeval;
+ 
+    Rfds      : aliased FD_Set_Type;
+    Rcount    : Natural := 0;
+    Wfds      : aliased FD_Set_Type;
+    Wcount    : Natural := 0;
+    Efds      : aliased FD_Set_Type;
+ 
+    Rfdsa     : access FD_Set_Type;
+    Wfdsa     : access FD_Set_Type;
+ 
+    FD_Events : Events_Type;
+ 
+ begin
+    --  Setup (convert data from poll to select layout)
+ 
+    if Timeout >= 0 then
+       Timeout_A := Timeout_V'Access;
+       Timeout_V.Tv_Sec  := Thin_Common.time_t  (Timeout / 1000);
+       Timeout_V.Tv_Usec := Thin_Common.suseconds_t (Timeout rem 1000 * 1000);
+    end if;
+ 
+    Reset_Socket_Set (Rfds);
+    Reset_Socket_Set (Wfds);
+    Reset_Socket_Set (Efds);
+ 
+    for J in Fds.Fds'First .. Fds.Length loop
+       Fds.Fds (J).REvents := 0;
+ 
+       FD_Events := Fds.Fds (J).Events;
+ 
+       if (FD_Events and (SOC.POLLIN or SOC.POLLPRI)) /= 0 then
+          Insert_Socket_In_Set (Rfds, Fds.Fds (J).Socket);
+          Rcount := Rcount + 1;
+       end if;
+ 
+       if (FD_Events and SOC.POLLOUT) /= 0 then
+          Insert_Socket_In_Set (Wfds, Fds.Fds (J).Socket);
+          Wcount := Wcount + 1;
+       end if;
+ 
+       Insert_Socket_In_Set (Efds, Fds.Fds (J).Socket);
+ 
+       if Fds.Fds (J).Socket > Fds.Max_FD then
+          raise Program_Error with "Wrong Max_FD";
+       end if;
+    end loop;
+ 
+    --  Any non-null descriptor set must contain at least one handle
+    --  to a socket on Windows (MSDN).
+ 
+    if Rcount /= 0 then
+       Rfdsa := Rfds'Access;
+    end if;
+ 
+    if Wcount /= 0 then
+       Wfdsa := Wfds'Access;
+    end if;
+ 
+    --  Call OS select
+ 
+    Result :=
+      C_Select (C.int (Fds.Max_FD + 1), Rfdsa, Wfdsa, Efds'Access, Timeout_A);
+ 
+    --  Build result (convert back from select to poll layout)
+ 
+    if Result > 0 then
+       Result := 0;
+ 
+       for J in Fds.Fds'First .. Fds.Length loop
+          if Is_Socket_In_Set (Rfds, Fds.Fds (J).Socket) /= 0 then
+             --  Do not need "or" with Poll_Ptr (J).REvents because it's zero
+ 
+             Fds.Fds (J).REvents := SOC.POLLIN;
+          end if;
+ 
+          if Is_Socket_In_Set (Wfds, Fds.Fds (J).Socket) /= 0 then
+             Fds.Fds (J).REvents := Fds.Fds (J).REvents or SOC.POLLOUT;
+          end if;
+ 
+          if Is_Socket_In_Set (Efds, Fds.Fds (J).Socket) /= 0 then
+             Fds.Fds (J).REvents := Fds.Fds (J).REvents or SOC.POLLERR;
+          end if;
+ 
+          if Fds.Fds (J).REvents /= 0 then
+             Result := Result + 1;
+          end if;
+       end loop;
+    end if;
+ end GNAT.Sockets.Poll.G_Wait;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-spogwa.ads gcc-11.1.0/gcc/ada/libgnat/g-spogwa.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-spogwa.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/g-spogwa.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,50 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --             G N A T . S O C K E T S . P O L L . G _ W A I T              --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --                       Copyright (C) 2020, AdaCore                        --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Interfaces.C;
+ 
+ private generic
+    type FD_Set_Type is private;
+    with procedure Reset_Socket_Set (Set : in out FD_Set_Type);
+    with procedure Insert_Socket_In_Set
+           (Set : in out FD_Set_Type; FD : FD_Type);
+    with function Is_Socket_In_Set
+           (Set : FD_Set_Type; FD : FD_Type) return Interfaces.C.int;
+ procedure GNAT.Sockets.Poll.G_Wait
+   (Fds : in out Set; Timeout : Interfaces.C.int; Result : out Integer);
+ --  Common code to implement GNAT.Sockets.Poll.Wait routine on top of posix or
+ --  win32 select API.
+ --  Posix and Win32 select has the same API but different socket set structure.
+ --  C API for select has socket set size defined at compilation stage. This Ada
+ --  implementation allow to define size of socket set at the execution time.
+ --  Unlike C select API we do not need allocate socket set for maximum number
+ --  of sockets when we need to check only few of them. And we are not limited
+ --  with FD_SETSIZE when we need more sockets to check.
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sptabo.ads gcc-11.1.0/gcc/ada/libgnat/g-sptabo.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-sptabo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sptabo.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sptain.ads gcc-11.1.0/gcc/ada/libgnat/g-sptain.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-sptain.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sptain.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sptavs.ads gcc-11.1.0/gcc/ada/libgnat/g-sptavs.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-sptavs.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sptavs.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sse.ads gcc-11.1.0/gcc/ada/libgnat/g-sse.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-sse.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sse.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-ssvety.ads gcc-11.1.0/gcc/ada/libgnat/g-ssvety.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-ssvety.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-ssvety.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2009-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2009-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sthcso.adb gcc-11.1.0/gcc/ada/libgnat/g-sthcso.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-sthcso.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-sthcso.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-stheme.adb gcc-11.1.0/gcc/ada/libgnat/g-stheme.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-stheme.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-stheme.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-strhas.ads gcc-11.1.0/gcc/ada/libgnat/g-strhas.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-strhas.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-strhas.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2015-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2015-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-string.adb gcc-11.1.0/gcc/ada/libgnat/g-string.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-string.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-string.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-string.ads gcc-11.1.0/gcc/ada/libgnat/g-string.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-string.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-string.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-strspl.ads gcc-11.1.0/gcc/ada/libgnat/g-strspl.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-strspl.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-strspl.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-stseme.adb gcc-11.1.0/gcc/ada/libgnat/g-stseme.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-stseme.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-stseme.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-stsifd__sockets.adb gcc-11.1.0/gcc/ada/libgnat/g-stsifd__sockets.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-stsifd__sockets.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-stsifd__sockets.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-table.adb gcc-11.1.0/gcc/ada/libgnat/g-table.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-table.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-table.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-table.ads gcc-11.1.0/gcc/ada/libgnat/g-table.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-table.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-table.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-tasloc.adb gcc-11.1.0/gcc/ada/libgnat/g-tasloc.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-tasloc.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-tasloc.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-tasloc.ads gcc-11.1.0/gcc/ada/libgnat/g-tasloc.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-tasloc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-tasloc.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-timsta.adb gcc-11.1.0/gcc/ada/libgnat/g-timsta.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-timsta.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-timsta.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2008-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2008-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-timsta.ads gcc-11.1.0/gcc/ada/libgnat/g-timsta.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-timsta.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-timsta.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2008-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2008-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-traceb.adb gcc-11.1.0/gcc/ada/libgnat/g-traceb.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-traceb.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-traceb.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                      Copyright (C) 1999-2019, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                      Copyright (C) 1999-2020, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-traceb.ads gcc-11.1.0/gcc/ada/libgnat/g-traceb.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-traceb.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-traceb.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-trasym.adb gcc-11.1.0/gcc/ada/libgnat/g-trasym.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-trasym.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-trasym.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-trasym.ads gcc-11.1.0/gcc/ada/libgnat/g-trasym.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-trasym.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-trasym.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-tty.adb gcc-11.1.0/gcc/ada/libgnat/g-tty.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-tty.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-tty.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-tty.ads gcc-11.1.0/gcc/ada/libgnat/g-tty.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-tty.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-tty.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-u3spch.adb gcc-11.1.0/gcc/ada/libgnat/g-u3spch.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-u3spch.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-u3spch.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-u3spch.ads gcc-11.1.0/gcc/ada/libgnat/g-u3spch.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-u3spch.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-u3spch.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-utf_32.adb gcc-11.1.0/gcc/ada/libgnat/g-utf_32.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-utf_32.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-utf_32.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-utf_32.ads gcc-11.1.0/gcc/ada/libgnat/g-utf_32.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-utf_32.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-utf_32.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-wispch.adb gcc-11.1.0/gcc/ada/libgnat/g-wispch.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-wispch.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-wispch.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-wispch.ads gcc-11.1.0/gcc/ada/libgnat/g-wispch.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-wispch.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-wispch.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-wistsp.ads gcc-11.1.0/gcc/ada/libgnat/g-wistsp.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-wistsp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-wistsp.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-zspche.adb gcc-11.1.0/gcc/ada/libgnat/g-zspche.adb
*** gcc-10.3.0/gcc/ada/libgnat/g-zspche.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-zspche.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-zspche.ads gcc-11.1.0/gcc/ada/libgnat/g-zspche.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-zspche.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-zspche.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-zstspl.ads gcc-11.1.0/gcc/ada/libgnat/g-zstspl.ads
*** gcc-10.3.0/gcc/ada/libgnat/g-zstspl.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/g-zstspl.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/gnat.ads gcc-11.1.0/gcc/ada/libgnat/gnat.ads
*** gcc-10.3.0/gcc/ada/libgnat/gnat.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/gnat.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1992-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1992-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-c.adb gcc-11.1.0/gcc/ada/libgnat/i-c.adb
*** gcc-10.3.0/gcc/ada/libgnat/i-c.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-c.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-c.ads gcc-11.1.0/gcc/ada/libgnat/i-c.ads
*** gcc-10.3.0/gcc/ada/libgnat/i-c.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-c.ads	Tue Apr 27 10:00:12 2021
*************** package Interfaces.C is
*** 36,48 ****
     type short is new Short_Integer;
     type long  is range -(2 ** (System.Parameters.long_bits - Integer'(1)))
       .. +(2 ** (System.Parameters.long_bits - Integer'(1))) - 1;
  
     type signed_char is range SCHAR_MIN .. SCHAR_MAX;
     for signed_char'Size use CHAR_BIT;
  
!    type unsigned       is mod 2 ** int'Size;
!    type unsigned_short is mod 2 ** short'Size;
!    type unsigned_long  is mod 2 ** long'Size;
  
     type unsigned_char is mod (UCHAR_MAX + 1);
     for unsigned_char'Size use CHAR_BIT;
--- 36,50 ----
     type short is new Short_Integer;
     type long  is range -(2 ** (System.Parameters.long_bits - Integer'(1)))
       .. +(2 ** (System.Parameters.long_bits - Integer'(1))) - 1;
+    type long_long is new Long_Long_Integer;
  
     type signed_char is range SCHAR_MIN .. SCHAR_MAX;
     for signed_char'Size use CHAR_BIT;
  
!    type unsigned           is mod 2 ** int'Size;
!    type unsigned_short     is mod 2 ** short'Size;
!    type unsigned_long      is mod 2 ** long'Size;
!    type unsigned_long_long is mod 2 ** long_long'Size;
  
     type unsigned_char is mod (UCHAR_MAX + 1);
     for unsigned_char'Size use CHAR_BIT;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-cexten.ads gcc-11.1.0/gcc/ada/libgnat/i-cexten.ads
*** gcc-10.3.0/gcc/ada/libgnat/i-cexten.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-cexten.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Interfaces.C.Extensions is
*** 61,68 ****
  
     --  64-bit integer types
  
!    subtype long_long is Long_Long_Integer;
!    type unsigned_long_long is mod 2 ** 64;
  
     --  128-bit integer type available on 64-bit platforms:
     --  typedef int signed_128 __attribute__ ((mode (TI)));
--- 61,68 ----
  
     --  64-bit integer types
  
!    subtype long_long is Interfaces.C.long_long;
!    subtype unsigned_long_long is Interfaces.C.unsigned_long_long;
  
     --  128-bit integer type available on 64-bit platforms:
     --  typedef int signed_128 __attribute__ ((mode (TI)));
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-cexten__128.ads gcc-11.1.0/gcc/ada/libgnat/i-cexten__128.ads
*** gcc-10.3.0/gcc/ada/libgnat/i-cexten__128.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/i-cexten__128.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,851 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --              I N T E R F A C E S . C . E X T E N S I O N S               --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains additional C-related definitions, intended for use
+ --  with either manually or automatically generated bindings to C libraries.
+ 
+ with System;
+ 
+ package Interfaces.C.Extensions is
+    pragma Pure;
+ 
+    --  Definitions for C "void" and "void *" types
+ 
+    subtype void     is System.Address;
+    subtype void_ptr is System.Address;
+ 
+    --  Definitions for C incomplete/unknown structs
+ 
+    subtype opaque_structure_def is System.Address;
+    type opaque_structure_def_ptr is access opaque_structure_def;
+    for opaque_structure_def_ptr'Storage_Size use 0;
+ 
+    --  Definitions for C++ incomplete/unknown classes
+ 
+    subtype incomplete_class_def is System.Address;
+    type incomplete_class_def_ptr is access incomplete_class_def;
+    for incomplete_class_def_ptr'Storage_Size use 0;
+ 
+    --  C bool
+ 
+    type bool is new Boolean;
+    pragma Convention (C, bool);
+ 
+    --  64-bit integer types
+ 
+    subtype long_long is Interfaces.C.long_long;
+    subtype unsigned_long_long is Interfaces.C.unsigned_long_long;
+ 
+    --  128-bit floating-point type available on x86:
+    --  typedef float float_128 __attribute__ ((mode (TF)));
+ 
+    type Float_128 is record
+       low, high : unsigned_long_long;
+    end record;
+    pragma Convention (C_Pass_By_Copy, Float_128);
+    for Float_128'Alignment use unsigned_long_long'Alignment * 2;
+ 
+    --  128-bit complex floating-point type available on x86:
+    --  typedef _Complex float cfloat_128 __attribute__ ((mode (TC)));
+ 
+    type CFloat_128 is record
+       re, im : Float_128;
+    end record;
+    pragma Convention (C_Pass_By_Copy, CFloat_128);
+ 
+    --  Types for bitfields
+ 
+    type Unsigned_1 is mod 2 ** 1;
+    for Unsigned_1'Size use 1;
+ 
+    type Unsigned_2 is mod 2 ** 2;
+    for Unsigned_2'Size use 2;
+ 
+    type Unsigned_3 is mod 2 ** 3;
+    for Unsigned_3'Size use 3;
+ 
+    type Unsigned_4 is mod 2 ** 4;
+    for Unsigned_4'Size use 4;
+ 
+    type Unsigned_5 is mod 2 ** 5;
+    for Unsigned_5'Size use 5;
+ 
+    type Unsigned_6 is mod 2 ** 6;
+    for Unsigned_6'Size use 6;
+ 
+    type Unsigned_7 is mod 2 ** 7;
+    for Unsigned_7'Size use 7;
+ 
+    type Unsigned_8 is mod 2 ** 8;
+    for Unsigned_8'Size use 8;
+ 
+    type Unsigned_9 is mod 2 ** 9;
+    for Unsigned_9'Size use 9;
+ 
+    type Unsigned_10 is mod 2 ** 10;
+    for Unsigned_10'Size use 10;
+ 
+    type Unsigned_11 is mod 2 ** 11;
+    for Unsigned_11'Size use 11;
+ 
+    type Unsigned_12 is mod 2 ** 12;
+    for Unsigned_12'Size use 12;
+ 
+    type Unsigned_13 is mod 2 ** 13;
+    for Unsigned_13'Size use 13;
+ 
+    type Unsigned_14 is mod 2 ** 14;
+    for Unsigned_14'Size use 14;
+ 
+    type Unsigned_15 is mod 2 ** 15;
+    for Unsigned_15'Size use 15;
+ 
+    type Unsigned_16 is mod 2 ** 16;
+    for Unsigned_16'Size use 16;
+ 
+    type Unsigned_17 is mod 2 ** 17;
+    for Unsigned_17'Size use 17;
+ 
+    type Unsigned_18 is mod 2 ** 18;
+    for Unsigned_18'Size use 18;
+ 
+    type Unsigned_19 is mod 2 ** 19;
+    for Unsigned_19'Size use 19;
+ 
+    type Unsigned_20 is mod 2 ** 20;
+    for Unsigned_20'Size use 20;
+ 
+    type Unsigned_21 is mod 2 ** 21;
+    for Unsigned_21'Size use 21;
+ 
+    type Unsigned_22 is mod 2 ** 22;
+    for Unsigned_22'Size use 22;
+ 
+    type Unsigned_23 is mod 2 ** 23;
+    for Unsigned_23'Size use 23;
+ 
+    type Unsigned_24 is mod 2 ** 24;
+    for Unsigned_24'Size use 24;
+ 
+    type Unsigned_25 is mod 2 ** 25;
+    for Unsigned_25'Size use 25;
+ 
+    type Unsigned_26 is mod 2 ** 26;
+    for Unsigned_26'Size use 26;
+ 
+    type Unsigned_27 is mod 2 ** 27;
+    for Unsigned_27'Size use 27;
+ 
+    type Unsigned_28 is mod 2 ** 28;
+    for Unsigned_28'Size use 28;
+ 
+    type Unsigned_29 is mod 2 ** 29;
+    for Unsigned_29'Size use 29;
+ 
+    type Unsigned_30 is mod 2 ** 30;
+    for Unsigned_30'Size use 30;
+ 
+    type Unsigned_31 is mod 2 ** 31;
+    for Unsigned_31'Size use 31;
+ 
+    type Unsigned_32 is mod 2 ** 32;
+    for Unsigned_32'Size use 32;
+ 
+    type Unsigned_33 is mod 2 ** 33;
+    for Unsigned_33'Size use 33;
+ 
+    type Unsigned_34 is mod 2 ** 34;
+    for Unsigned_34'Size use 34;
+ 
+    type Unsigned_35 is mod 2 ** 35;
+    for Unsigned_35'Size use 35;
+ 
+    type Unsigned_36 is mod 2 ** 36;
+    for Unsigned_36'Size use 36;
+ 
+    type Unsigned_37 is mod 2 ** 37;
+    for Unsigned_37'Size use 37;
+ 
+    type Unsigned_38 is mod 2 ** 38;
+    for Unsigned_38'Size use 38;
+ 
+    type Unsigned_39 is mod 2 ** 39;
+    for Unsigned_39'Size use 39;
+ 
+    type Unsigned_40 is mod 2 ** 40;
+    for Unsigned_40'Size use 40;
+ 
+    type Unsigned_41 is mod 2 ** 41;
+    for Unsigned_41'Size use 41;
+ 
+    type Unsigned_42 is mod 2 ** 42;
+    for Unsigned_42'Size use 42;
+ 
+    type Unsigned_43 is mod 2 ** 43;
+    for Unsigned_43'Size use 43;
+ 
+    type Unsigned_44 is mod 2 ** 44;
+    for Unsigned_44'Size use 44;
+ 
+    type Unsigned_45 is mod 2 ** 45;
+    for Unsigned_45'Size use 45;
+ 
+    type Unsigned_46 is mod 2 ** 46;
+    for Unsigned_46'Size use 46;
+ 
+    type Unsigned_47 is mod 2 ** 47;
+    for Unsigned_47'Size use 47;
+ 
+    type Unsigned_48 is mod 2 ** 48;
+    for Unsigned_48'Size use 48;
+ 
+    type Unsigned_49 is mod 2 ** 49;
+    for Unsigned_49'Size use 49;
+ 
+    type Unsigned_50 is mod 2 ** 50;
+    for Unsigned_50'Size use 50;
+ 
+    type Unsigned_51 is mod 2 ** 51;
+    for Unsigned_51'Size use 51;
+ 
+    type Unsigned_52 is mod 2 ** 52;
+    for Unsigned_52'Size use 52;
+ 
+    type Unsigned_53 is mod 2 ** 53;
+    for Unsigned_53'Size use 53;
+ 
+    type Unsigned_54 is mod 2 ** 54;
+    for Unsigned_54'Size use 54;
+ 
+    type Unsigned_55 is mod 2 ** 55;
+    for Unsigned_55'Size use 55;
+ 
+    type Unsigned_56 is mod 2 ** 56;
+    for Unsigned_56'Size use 56;
+ 
+    type Unsigned_57 is mod 2 ** 57;
+    for Unsigned_57'Size use 57;
+ 
+    type Unsigned_58 is mod 2 ** 58;
+    for Unsigned_58'Size use 58;
+ 
+    type Unsigned_59 is mod 2 ** 59;
+    for Unsigned_59'Size use 59;
+ 
+    type Unsigned_60 is mod 2 ** 60;
+    for Unsigned_60'Size use 60;
+ 
+    type Unsigned_61 is mod 2 ** 61;
+    for Unsigned_61'Size use 61;
+ 
+    type Unsigned_62 is mod 2 ** 62;
+    for Unsigned_62'Size use 62;
+ 
+    type Unsigned_63 is mod 2 ** 63;
+    for Unsigned_63'Size use 63;
+ 
+    type Unsigned_64 is mod 2 ** 64;
+    for Unsigned_64'Size use 64;
+ 
+    type Unsigned_65 is mod 2 ** 65;
+    for Unsigned_65'Size use 65;
+ 
+    type Unsigned_66 is mod 2 ** 66;
+    for Unsigned_66'Size use 66;
+ 
+    type Unsigned_67 is mod 2 ** 67;
+    for Unsigned_67'Size use 67;
+ 
+    type Unsigned_68 is mod 2 ** 68;
+    for Unsigned_68'Size use 68;
+ 
+    type Unsigned_69 is mod 2 ** 69;
+    for Unsigned_69'Size use 69;
+ 
+    type Unsigned_70 is mod 2 ** 70;
+    for Unsigned_70'Size use 70;
+ 
+    type Unsigned_71 is mod 2 ** 71;
+    for Unsigned_71'Size use 71;
+ 
+    type Unsigned_72 is mod 2 ** 72;
+    for Unsigned_72'Size use 72;
+ 
+    type Unsigned_73 is mod 2 ** 73;
+    for Unsigned_73'Size use 73;
+ 
+    type Unsigned_74 is mod 2 ** 74;
+    for Unsigned_74'Size use 74;
+ 
+    type Unsigned_75 is mod 2 ** 75;
+    for Unsigned_75'Size use 75;
+ 
+    type Unsigned_76 is mod 2 ** 76;
+    for Unsigned_76'Size use 76;
+ 
+    type Unsigned_77 is mod 2 ** 77;
+    for Unsigned_77'Size use 77;
+ 
+    type Unsigned_78 is mod 2 ** 78;
+    for Unsigned_78'Size use 78;
+ 
+    type Unsigned_79 is mod 2 ** 79;
+    for Unsigned_79'Size use 79;
+ 
+    type Unsigned_80 is mod 2 ** 80;
+    for Unsigned_80'Size use 80;
+ 
+    type Unsigned_81 is mod 2 ** 81;
+    for Unsigned_81'Size use 81;
+ 
+    type Unsigned_82 is mod 2 ** 82;
+    for Unsigned_82'Size use 82;
+ 
+    type Unsigned_83 is mod 2 ** 83;
+    for Unsigned_83'Size use 83;
+ 
+    type Unsigned_84 is mod 2 ** 84;
+    for Unsigned_84'Size use 84;
+ 
+    type Unsigned_85 is mod 2 ** 85;
+    for Unsigned_85'Size use 85;
+ 
+    type Unsigned_86 is mod 2 ** 86;
+    for Unsigned_86'Size use 86;
+ 
+    type Unsigned_87 is mod 2 ** 87;
+    for Unsigned_87'Size use 87;
+ 
+    type Unsigned_88 is mod 2 ** 88;
+    for Unsigned_88'Size use 88;
+ 
+    type Unsigned_89 is mod 2 ** 89;
+    for Unsigned_89'Size use 89;
+ 
+    type Unsigned_90 is mod 2 ** 90;
+    for Unsigned_90'Size use 90;
+ 
+    type Unsigned_91 is mod 2 ** 91;
+    for Unsigned_91'Size use 91;
+ 
+    type Unsigned_92 is mod 2 ** 92;
+    for Unsigned_92'Size use 92;
+ 
+    type Unsigned_93 is mod 2 ** 93;
+    for Unsigned_93'Size use 93;
+ 
+    type Unsigned_94 is mod 2 ** 94;
+    for Unsigned_94'Size use 94;
+ 
+    type Unsigned_95 is mod 2 ** 95;
+    for Unsigned_95'Size use 95;
+ 
+    type Unsigned_96 is mod 2 ** 96;
+    for Unsigned_96'Size use 96;
+ 
+    type Unsigned_97 is mod 2 ** 97;
+    for Unsigned_97'Size use 97;
+ 
+    type Unsigned_98 is mod 2 ** 98;
+    for Unsigned_98'Size use 98;
+ 
+    type Unsigned_99 is mod 2 ** 99;
+    for Unsigned_99'Size use 99;
+ 
+    type Unsigned_100 is mod 2 ** 100;
+    for Unsigned_100'Size use 100;
+ 
+    type Unsigned_101 is mod 2 ** 101;
+    for Unsigned_101'Size use 101;
+ 
+    type Unsigned_102 is mod 2 ** 102;
+    for Unsigned_102'Size use 102;
+ 
+    type Unsigned_103 is mod 2 ** 103;
+    for Unsigned_103'Size use 103;
+ 
+    type Unsigned_104 is mod 2 ** 104;
+    for Unsigned_104'Size use 104;
+ 
+    type Unsigned_105 is mod 2 ** 105;
+    for Unsigned_105'Size use 105;
+ 
+    type Unsigned_106 is mod 2 ** 106;
+    for Unsigned_106'Size use 106;
+ 
+    type Unsigned_107 is mod 2 ** 107;
+    for Unsigned_107'Size use 107;
+ 
+    type Unsigned_108 is mod 2 ** 108;
+    for Unsigned_108'Size use 108;
+ 
+    type Unsigned_109 is mod 2 ** 109;
+    for Unsigned_109'Size use 109;
+ 
+    type Unsigned_110 is mod 2 ** 110;
+    for Unsigned_110'Size use 110;
+ 
+    type Unsigned_111 is mod 2 ** 111;
+    for Unsigned_111'Size use 111;
+ 
+    type Unsigned_112 is mod 2 ** 112;
+    for Unsigned_112'Size use 112;
+ 
+    type Unsigned_113 is mod 2 ** 113;
+    for Unsigned_113'Size use 113;
+ 
+    type Unsigned_114 is mod 2 ** 114;
+    for Unsigned_114'Size use 114;
+ 
+    type Unsigned_115 is mod 2 ** 115;
+    for Unsigned_115'Size use 115;
+ 
+    type Unsigned_116 is mod 2 ** 116;
+    for Unsigned_116'Size use 116;
+ 
+    type Unsigned_117 is mod 2 ** 117;
+    for Unsigned_117'Size use 117;
+ 
+    type Unsigned_118 is mod 2 ** 118;
+    for Unsigned_118'Size use 118;
+ 
+    type Unsigned_119 is mod 2 ** 119;
+    for Unsigned_119'Size use 119;
+ 
+    type Unsigned_120 is mod 2 ** 120;
+    for Unsigned_120'Size use 120;
+ 
+    type Unsigned_121 is mod 2 ** 121;
+    for Unsigned_121'Size use 121;
+ 
+    type Unsigned_122 is mod 2 ** 122;
+    for Unsigned_122'Size use 122;
+ 
+    type Unsigned_123 is mod 2 ** 123;
+    for Unsigned_123'Size use 123;
+ 
+    type Unsigned_124 is mod 2 ** 124;
+    for Unsigned_124'Size use 124;
+ 
+    type Unsigned_125 is mod 2 ** 125;
+    for Unsigned_125'Size use 125;
+ 
+    type Unsigned_126 is mod 2 ** 126;
+    for Unsigned_126'Size use 126;
+ 
+    type Unsigned_127 is mod 2 ** 127;
+    for Unsigned_127'Size use 127;
+ 
+    type Unsigned_128 is mod 2 ** 128;
+    for Unsigned_128'Size use 128;
+ 
+    type Signed_2 is range -2 ** 1 .. 2 ** 1 - 1;
+    for Signed_2'Size use 2;
+ 
+    type Signed_3 is range -2 ** 2 .. 2 ** 2 - 1;
+    for Signed_3'Size use 3;
+ 
+    type Signed_4 is range -2 ** 3 .. 2 ** 3 - 1;
+    for Signed_4'Size use 4;
+ 
+    type Signed_5 is range -2 ** 4 .. 2 ** 4 - 1;
+    for Signed_5'Size use 5;
+ 
+    type Signed_6 is range -2 ** 5 .. 2 ** 5 - 1;
+    for Signed_6'Size use 6;
+ 
+    type Signed_7 is range -2 ** 6 .. 2 ** 6 - 1;
+    for Signed_7'Size use 7;
+ 
+    type Signed_8 is range -2 ** 7 .. 2 ** 7 - 1;
+    for Signed_8'Size use 8;
+ 
+    type Signed_9 is range -2 ** 8 .. 2 ** 8 - 1;
+    for Signed_9'Size use 9;
+ 
+    type Signed_10 is range -2 ** 9 .. 2 ** 9 - 1;
+    for Signed_10'Size use 10;
+ 
+    type Signed_11 is range -2 ** 10 .. 2 ** 10 - 1;
+    for Signed_11'Size use 11;
+ 
+    type Signed_12 is range -2 ** 11 .. 2 ** 11 - 1;
+    for Signed_12'Size use 12;
+ 
+    type Signed_13 is range -2 ** 12 .. 2 ** 12 - 1;
+    for Signed_13'Size use 13;
+ 
+    type Signed_14 is range -2 ** 13 .. 2 ** 13 - 1;
+    for Signed_14'Size use 14;
+ 
+    type Signed_15 is range -2 ** 14 .. 2 ** 14 - 1;
+    for Signed_15'Size use 15;
+ 
+    type Signed_16 is range -2 ** 15 .. 2 ** 15 - 1;
+    for Signed_16'Size use 16;
+ 
+    type Signed_17 is range -2 ** 16 .. 2 ** 16 - 1;
+    for Signed_17'Size use 17;
+ 
+    type Signed_18 is range -2 ** 17 .. 2 ** 17 - 1;
+    for Signed_18'Size use 18;
+ 
+    type Signed_19 is range -2 ** 18 .. 2 ** 18 - 1;
+    for Signed_19'Size use 19;
+ 
+    type Signed_20 is range -2 ** 19 .. 2 ** 19 - 1;
+    for Signed_20'Size use 20;
+ 
+    type Signed_21 is range -2 ** 20 .. 2 ** 20 - 1;
+    for Signed_21'Size use 21;
+ 
+    type Signed_22 is range -2 ** 21 .. 2 ** 21 - 1;
+    for Signed_22'Size use 22;
+ 
+    type Signed_23 is range -2 ** 22 .. 2 ** 22 - 1;
+    for Signed_23'Size use 23;
+ 
+    type Signed_24 is range -2 ** 23 .. 2 ** 23 - 1;
+    for Signed_24'Size use 24;
+ 
+    type Signed_25 is range -2 ** 24 .. 2 ** 24 - 1;
+    for Signed_25'Size use 25;
+ 
+    type Signed_26 is range -2 ** 25 .. 2 ** 25 - 1;
+    for Signed_26'Size use 26;
+ 
+    type Signed_27 is range -2 ** 26 .. 2 ** 26 - 1;
+    for Signed_27'Size use 27;
+ 
+    type Signed_28 is range -2 ** 27 .. 2 ** 27 - 1;
+    for Signed_28'Size use 28;
+ 
+    type Signed_29 is range -2 ** 28 .. 2 ** 28 - 1;
+    for Signed_29'Size use 29;
+ 
+    type Signed_30 is range -2 ** 29 .. 2 ** 29 - 1;
+    for Signed_30'Size use 30;
+ 
+    type Signed_31 is range -2 ** 30 .. 2 ** 30 - 1;
+    for Signed_31'Size use 31;
+ 
+    type Signed_32 is range -2 ** 31 .. 2 ** 31 - 1;
+    for Signed_32'Size use 32;
+ 
+    type Signed_33 is range -2 ** 32 .. 2 ** 32 - 1;
+    for Signed_33'Size use 33;
+ 
+    type Signed_34 is range -2 ** 33 .. 2 ** 33 - 1;
+    for Signed_34'Size use 34;
+ 
+    type Signed_35 is range -2 ** 34 .. 2 ** 34 - 1;
+    for Signed_35'Size use 35;
+ 
+    type Signed_36 is range -2 ** 35 .. 2 ** 35 - 1;
+    for Signed_36'Size use 36;
+ 
+    type Signed_37 is range -2 ** 36 .. 2 ** 36 - 1;
+    for Signed_37'Size use 37;
+ 
+    type Signed_38 is range -2 ** 37 .. 2 ** 37 - 1;
+    for Signed_38'Size use 38;
+ 
+    type Signed_39 is range -2 ** 38 .. 2 ** 38 - 1;
+    for Signed_39'Size use 39;
+ 
+    type Signed_40 is range -2 ** 39 .. 2 ** 39 - 1;
+    for Signed_40'Size use 40;
+ 
+    type Signed_41 is range -2 ** 40 .. 2 ** 40 - 1;
+    for Signed_41'Size use 41;
+ 
+    type Signed_42 is range -2 ** 41 .. 2 ** 41 - 1;
+    for Signed_42'Size use 42;
+ 
+    type Signed_43 is range -2 ** 42 .. 2 ** 42 - 1;
+    for Signed_43'Size use 43;
+ 
+    type Signed_44 is range -2 ** 43 .. 2 ** 43 - 1;
+    for Signed_44'Size use 44;
+ 
+    type Signed_45 is range -2 ** 44 .. 2 ** 44 - 1;
+    for Signed_45'Size use 45;
+ 
+    type Signed_46 is range -2 ** 45 .. 2 ** 45 - 1;
+    for Signed_46'Size use 46;
+ 
+    type Signed_47 is range -2 ** 46 .. 2 ** 46 - 1;
+    for Signed_47'Size use 47;
+ 
+    type Signed_48 is range -2 ** 47 .. 2 ** 47 - 1;
+    for Signed_48'Size use 48;
+ 
+    type Signed_49 is range -2 ** 48 .. 2 ** 48 - 1;
+    for Signed_49'Size use 49;
+ 
+    type Signed_50 is range -2 ** 49 .. 2 ** 49 - 1;
+    for Signed_50'Size use 50;
+ 
+    type Signed_51 is range -2 ** 50 .. 2 ** 50 - 1;
+    for Signed_51'Size use 51;
+ 
+    type Signed_52 is range -2 ** 51 .. 2 ** 51 - 1;
+    for Signed_52'Size use 52;
+ 
+    type Signed_53 is range -2 ** 52 .. 2 ** 52 - 1;
+    for Signed_53'Size use 53;
+ 
+    type Signed_54 is range -2 ** 53 .. 2 ** 53 - 1;
+    for Signed_54'Size use 54;
+ 
+    type Signed_55 is range -2 ** 54 .. 2 ** 54 - 1;
+    for Signed_55'Size use 55;
+ 
+    type Signed_56 is range -2 ** 55 .. 2 ** 55 - 1;
+    for Signed_56'Size use 56;
+ 
+    type Signed_57 is range -2 ** 56 .. 2 ** 56 - 1;
+    for Signed_57'Size use 57;
+ 
+    type Signed_58 is range -2 ** 57 .. 2 ** 57 - 1;
+    for Signed_58'Size use 58;
+ 
+    type Signed_59 is range -2 ** 58 .. 2 ** 58 - 1;
+    for Signed_59'Size use 59;
+ 
+    type Signed_60 is range -2 ** 59 .. 2 ** 59 - 1;
+    for Signed_60'Size use 60;
+ 
+    type Signed_61 is range -2 ** 60 .. 2 ** 60 - 1;
+    for Signed_61'Size use 61;
+ 
+    type Signed_62 is range -2 ** 61 .. 2 ** 61 - 1;
+    for Signed_62'Size use 62;
+ 
+    type Signed_63 is range -2 ** 62 .. 2 ** 62 - 1;
+    for Signed_63'Size use 63;
+ 
+    type Signed_64 is range -2 ** 63 .. 2 ** 63 - 1;
+    for Signed_64'Size use 64;
+ 
+    type Signed_65 is range -2 ** 64 .. 2 ** 64 - 1;
+    for Signed_65'Size use 65;
+ 
+    type Signed_66 is range -2 ** 65 .. 2 ** 65 - 1;
+    for Signed_66'Size use 66;
+ 
+    type Signed_67 is range -2 ** 66 .. 2 ** 66 - 1;
+    for Signed_67'Size use 67;
+ 
+    type Signed_68 is range -2 ** 67 .. 2 ** 67 - 1;
+    for Signed_68'Size use 68;
+ 
+    type Signed_69 is range -2 ** 68 .. 2 ** 68 - 1;
+    for Signed_69'Size use 69;
+ 
+    type Signed_70 is range -2 ** 69 .. 2 ** 69 - 1;
+    for Signed_70'Size use 70;
+ 
+    type Signed_71 is range -2 ** 70 .. 2 ** 70 - 1;
+    for Signed_71'Size use 71;
+ 
+    type Signed_72 is range -2 ** 71 .. 2 ** 71 - 1;
+    for Signed_72'Size use 72;
+ 
+    type Signed_73 is range -2 ** 72 .. 2 ** 72 - 1;
+    for Signed_73'Size use 73;
+ 
+    type Signed_74 is range -2 ** 73 .. 2 ** 73 - 1;
+    for Signed_74'Size use 74;
+ 
+    type Signed_75 is range -2 ** 74 .. 2 ** 74 - 1;
+    for Signed_75'Size use 75;
+ 
+    type Signed_76 is range -2 ** 75 .. 2 ** 75 - 1;
+    for Signed_76'Size use 76;
+ 
+    type Signed_77 is range -2 ** 76 .. 2 ** 76 - 1;
+    for Signed_77'Size use 77;
+ 
+    type Signed_78 is range -2 ** 77 .. 2 ** 77 - 1;
+    for Signed_78'Size use 78;
+ 
+    type Signed_79 is range -2 ** 78 .. 2 ** 78 - 1;
+    for Signed_79'Size use 79;
+ 
+    type Signed_80 is range -2 ** 79 .. 2 ** 79 - 1;
+    for Signed_80'Size use 80;
+ 
+    type Signed_81 is range -2 ** 80 .. 2 ** 80 - 1;
+    for Signed_81'Size use 81;
+ 
+    type Signed_82 is range -2 ** 81 .. 2 ** 81 - 1;
+    for Signed_82'Size use 82;
+ 
+    type Signed_83 is range -2 ** 82 .. 2 ** 82 - 1;
+    for Signed_83'Size use 83;
+ 
+    type Signed_84 is range -2 ** 83 .. 2 ** 83 - 1;
+    for Signed_84'Size use 84;
+ 
+    type Signed_85 is range -2 ** 84 .. 2 ** 84 - 1;
+    for Signed_85'Size use 85;
+ 
+    type Signed_86 is range -2 ** 85 .. 2 ** 85 - 1;
+    for Signed_86'Size use 86;
+ 
+    type Signed_87 is range -2 ** 86 .. 2 ** 86 - 1;
+    for Signed_87'Size use 87;
+ 
+    type Signed_88 is range -2 ** 87 .. 2 ** 87 - 1;
+    for Signed_88'Size use 88;
+ 
+    type Signed_89 is range -2 ** 88 .. 2 ** 88 - 1;
+    for Signed_89'Size use 89;
+ 
+    type Signed_90 is range -2 ** 89 .. 2 ** 89 - 1;
+    for Signed_90'Size use 90;
+ 
+    type Signed_91 is range -2 ** 90 .. 2 ** 90 - 1;
+    for Signed_91'Size use 91;
+ 
+    type Signed_92 is range -2 ** 91 .. 2 ** 91 - 1;
+    for Signed_92'Size use 92;
+ 
+    type Signed_93 is range -2 ** 92 .. 2 ** 92 - 1;
+    for Signed_93'Size use 93;
+ 
+    type Signed_94 is range -2 ** 93 .. 2 ** 93 - 1;
+    for Signed_94'Size use 94;
+ 
+    type Signed_95 is range -2 ** 94 .. 2 ** 94 - 1;
+    for Signed_95'Size use 95;
+ 
+    type Signed_96 is range -2 ** 95 .. 2 ** 95 - 1;
+    for Signed_96'Size use 96;
+ 
+    type Signed_97 is range -2 ** 96 .. 2 ** 96 - 1;
+    for Signed_97'Size use 97;
+ 
+    type Signed_98 is range -2 ** 97 .. 2 ** 97 - 1;
+    for Signed_98'Size use 98;
+ 
+    type Signed_99 is range -2 ** 98 .. 2 ** 98 - 1;
+    for Signed_99'Size use 99;
+ 
+    type Signed_100 is range -2 ** 99 .. 2 ** 99 - 1;
+    for Signed_100'Size use 100;
+ 
+    type Signed_101 is range -2 ** 100 .. 2 ** 100 - 1;
+    for Signed_101'Size use 101;
+ 
+    type Signed_102 is range -2 ** 101 .. 2 ** 101 - 1;
+    for Signed_102'Size use 102;
+ 
+    type Signed_103 is range -2 ** 102 .. 2 ** 102 - 1;
+    for Signed_103'Size use 103;
+ 
+    type Signed_104 is range -2 ** 103 .. 2 ** 103 - 1;
+    for Signed_104'Size use 104;
+ 
+    type Signed_105 is range -2 ** 104 .. 2 ** 104 - 1;
+    for Signed_105'Size use 105;
+ 
+    type Signed_106 is range -2 ** 105 .. 2 ** 105 - 1;
+    for Signed_106'Size use 106;
+ 
+    type Signed_107 is range -2 ** 106 .. 2 ** 106 - 1;
+    for Signed_107'Size use 107;
+ 
+    type Signed_108 is range -2 ** 107 .. 2 ** 107 - 1;
+    for Signed_108'Size use 108;
+ 
+    type Signed_109 is range -2 ** 108 .. 2 ** 108 - 1;
+    for Signed_109'Size use 109;
+ 
+    type Signed_110 is range -2 ** 109 .. 2 ** 109 - 1;
+    for Signed_110'Size use 110;
+ 
+    type Signed_111 is range -2 ** 110 .. 2 ** 110 - 1;
+    for Signed_111'Size use 111;
+ 
+    type Signed_112 is range -2 ** 111 .. 2 ** 111 - 1;
+    for Signed_112'Size use 112;
+ 
+    type Signed_113 is range -2 ** 112 .. 2 ** 112 - 1;
+    for Signed_113'Size use 113;
+ 
+    type Signed_114 is range -2 ** 113 .. 2 ** 113 - 1;
+    for Signed_114'Size use 114;
+ 
+    type Signed_115 is range -2 ** 114 .. 2 ** 114 - 1;
+    for Signed_115'Size use 115;
+ 
+    type Signed_116 is range -2 ** 115 .. 2 ** 115 - 1;
+    for Signed_116'Size use 116;
+ 
+    type Signed_117 is range -2 ** 116 .. 2 ** 116 - 1;
+    for Signed_117'Size use 117;
+ 
+    type Signed_118 is range -2 ** 117 .. 2 ** 117 - 1;
+    for Signed_118'Size use 118;
+ 
+    type Signed_119 is range -2 ** 118 .. 2 ** 118 - 1;
+    for Signed_119'Size use 119;
+ 
+    type Signed_120 is range -2 ** 119 .. 2 ** 119 - 1;
+    for Signed_120'Size use 120;
+ 
+    type Signed_121 is range -2 ** 120 .. 2 ** 120 - 1;
+    for Signed_121'Size use 121;
+ 
+    type Signed_122 is range -2 ** 121 .. 2 ** 121 - 1;
+    for Signed_122'Size use 122;
+ 
+    type Signed_123 is range -2 ** 122 .. 2 ** 122 - 1;
+    for Signed_123'Size use 123;
+ 
+    type Signed_124 is range -2 ** 123 .. 2 ** 123 - 1;
+    for Signed_124'Size use 124;
+ 
+    type Signed_125 is range -2 ** 124 .. 2 ** 124 - 1;
+    for Signed_125'Size use 125;
+ 
+    type Signed_126 is range -2 ** 125 .. 2 ** 125 - 1;
+    for Signed_126'Size use 126;
+ 
+    type Signed_127 is range -2 ** 126 .. 2 ** 126 - 1;
+    for Signed_127'Size use 127;
+ 
+    type Signed_128 is range -2 ** 127 .. 2 ** 127 - 1;
+    for Signed_128'Size use 128;
+ 
+ end Interfaces.C.Extensions;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-cobol.adb gcc-11.1.0/gcc/ada/libgnat/i-cobol.adb
*** gcc-10.3.0/gcc/ada/libgnat/i-cobol.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-cobol.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Interfaces.COBOL is
*** 240,250 ****
                             (COBOL_Character'Pos (K) -
                               COBOL_Character'Pos (COBOL_Digits'First));
  
-             elsif K in COBOL_Plus_Digits then
-                Result := Result * 10 +
-                            (COBOL_Character'Pos (K) -
-                              COBOL_Character'Pos (COBOL_Plus_Digits'First));
- 
              elsif K in COBOL_Minus_Digits then
                 Result := Result * 10 +
                             (COBOL_Character'Pos (K) -
--- 240,245 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-cobol.ads gcc-11.1.0/gcc/ada/libgnat/i-cobol.ads
*** gcc-10.3.0/gcc/ada/libgnat/i-cobol.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-cobol.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                             (ASCII Version)                              --
  --                                                                          --
! --          Copyright (C) 1993-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                             (ASCII Version)                              --
  --                                                                          --
! --          Copyright (C) 1993-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-cpoint.adb gcc-11.1.0/gcc/ada/libgnat/i-cpoint.adb
*** gcc-10.3.0/gcc/ada/libgnat/i-cpoint.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-cpoint.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-cpoint.ads gcc-11.1.0/gcc/ada/libgnat/i-cpoint.ads
*** gcc-10.3.0/gcc/ada/libgnat/i-cpoint.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-cpoint.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1993-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1993-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-cstrea.adb gcc-11.1.0/gcc/ada/libgnat/i-cstrea.adb
*** gcc-10.3.0/gcc/ada/libgnat/i-cstrea.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-cstrea.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-cstrea.ads gcc-11.1.0/gcc/ada/libgnat/i-cstrea.ads
*** gcc-10.3.0/gcc/ada/libgnat/i-cstrea.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-cstrea.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-cstrin.adb gcc-11.1.0/gcc/ada/libgnat/i-cstrin.adb
*** gcc-10.3.0/gcc/ada/libgnat/i-cstrin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-cstrin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-cstrin.ads gcc-11.1.0/gcc/ada/libgnat/i-cstrin.ads
*** gcc-10.3.0/gcc/ada/libgnat/i-cstrin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-cstrin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1993-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1993-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-fortra.adb gcc-11.1.0/gcc/ada/libgnat/i-fortra.adb
*** gcc-10.3.0/gcc/ada/libgnat/i-fortra.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-fortra.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-pacdec.adb gcc-11.1.0/gcc/ada/libgnat/i-pacdec.adb
*** gcc-10.3.0/gcc/ada/libgnat/i-pacdec.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-pacdec.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --            (Version for IBM Mainframe Packed Decimal Format)             --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --            (Version for IBM Mainframe Packed Decimal Format)             --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-pacdec.ads gcc-11.1.0/gcc/ada/libgnat/i-pacdec.ads
*** gcc-10.3.0/gcc/ada/libgnat/i-pacdec.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-pacdec.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --            (Version for IBM Mainframe Packed Decimal Format)             --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 S p e c                                  --
  --            (Version for IBM Mainframe Packed Decimal Format)             --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-vxwoio.adb gcc-11.1.0/gcc/ada/libgnat/i-vxwoio.adb
*** gcc-10.3.0/gcc/ada/libgnat/i-vxwoio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-vxwoio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --           Copyright (C) 2002-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --           Copyright (C) 2002-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-vxwoio.ads gcc-11.1.0/gcc/ada/libgnat/i-vxwoio.ads
*** gcc-10.3.0/gcc/ada/libgnat/i-vxwoio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-vxwoio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2002-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2002-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-vxwork.ads gcc-11.1.0/gcc/ada/libgnat/i-vxwork.ads
*** gcc-10.3.0/gcc/ada/libgnat/i-vxwork.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-vxwork.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --                     Copyright (C) 1999-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --                     Copyright (C) 1999-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/i-vxwork__x86.ads gcc-11.1.0/gcc/ada/libgnat/i-vxwork__x86.ads
*** gcc-10.3.0/gcc/ada/libgnat/i-vxwork__x86.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/i-vxwork__x86.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --                     Copyright (C) 1999-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --                     Copyright (C) 1999-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/interfac.ads gcc-11.1.0/gcc/ada/libgnat/interfac.ads
*** gcc-10.3.0/gcc/ada/libgnat/interfac.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/interfac.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
***************
*** 33,38 ****
--- 33,40 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ --  This is the compiler version of this unit
+ 
  pragma Compiler_Unit_Warning;
  
  package Interfaces is
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/interfac__2020.ads gcc-11.1.0/gcc/ada/libgnat/interfac__2020.ads
*** gcc-10.3.0/gcc/ada/libgnat/interfac__2020.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/interfac__2020.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,231 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                           I N T E R F A C E S                            --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT. The copyright notice above, and the license provisions that follow --
+ -- apply solely to the implementation dependent sections of this file.      --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the runtime version of this unit (not used during GNAT build)
+ 
+ package Interfaces is
+    pragma No_Elaboration_Code_All;
+    pragma Pure;
+ 
+    --  All identifiers in this unit are implementation defined
+ 
+    pragma Implementation_Defined;
+ 
+    type Integer_8  is range -2 **  7 .. 2 **  7 - 1;
+    for Integer_8'Size use  8;
+ 
+    type Integer_16 is range -2 ** 15 .. 2 ** 15 - 1;
+    for Integer_16'Size use 16;
+ 
+    type Integer_32 is range -2 ** 31 .. 2 ** 31 - 1;
+    for Integer_32'Size use 32;
+ 
+    type Integer_64 is new Long_Long_Integer;
+    for Integer_64'Size use 64;
+    --  Note: we use Long_Long_Integer'First instead of -2 ** 63 to allow this
+    --  unit to compile when using custom target configuration files where the
+    --  maximum integer is 32 bits. This is useful for static analysis tools
+    --  such as SPARK or CodePeer. In the normal case Long_Long_Integer is
+    --  always 64-bits so we get the desired 64-bit type.
+ 
+    type Integer_128 is new Long_Long_Long_Integer;
+    --  Note: we use Long_Long_Long_Integer instead of literal bounds to allow
+    --  this unit to be compiled with compilers not supporting 128-bit integers.
+    --  We do not put a confirming size clause of 128 bits for the same reason.
+ 
+    type Unsigned_8 is mod 2 ** 8;
+    for Unsigned_8'Size use  8;
+ 
+    type Unsigned_16 is mod 2 ** 16;
+    for Unsigned_16'Size use 16;
+ 
+    type Unsigned_24 is mod 2 ** 24;
+    for Unsigned_24'Size use 24;
+    --  Declare this type for compatibility with legacy Ada compilers.
+    --  This is particularly useful in the context of CodePeer analysis.
+ 
+    type Unsigned_32 is mod 2 ** 32;
+    for Unsigned_32'Size use 32;
+ 
+    type Unsigned_64 is mod 2 ** Long_Long_Integer'Size;
+    for Unsigned_64'Size use 64;
+    --  See comment on Integer_64 above
+ 
+    type Unsigned_128 is mod 2 ** Long_Long_Long_Integer'Size;
+    --  See comment on Integer_128 above
+ 
+    function Shift_Left
+      (Value  : Unsigned_8;
+       Amount : Natural) return Unsigned_8
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Shift_Right
+      (Value  : Unsigned_8;
+       Amount : Natural) return Unsigned_8
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Shift_Right_Arithmetic
+      (Value  : Unsigned_8;
+       Amount : Natural) return Unsigned_8
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Rotate_Left
+      (Value  : Unsigned_8;
+       Amount : Natural) return Unsigned_8
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Rotate_Right
+      (Value  : Unsigned_8;
+       Amount : Natural) return Unsigned_8
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Shift_Left
+      (Value  : Unsigned_16;
+       Amount : Natural) return Unsigned_16
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Shift_Right
+      (Value  : Unsigned_16;
+       Amount : Natural) return Unsigned_16
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Shift_Right_Arithmetic
+      (Value  : Unsigned_16;
+       Amount : Natural) return Unsigned_16
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Rotate_Left
+      (Value  : Unsigned_16;
+       Amount : Natural) return Unsigned_16
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Rotate_Right
+      (Value  : Unsigned_16;
+       Amount : Natural) return Unsigned_16
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Shift_Left
+      (Value  : Unsigned_32;
+       Amount : Natural) return Unsigned_32
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Shift_Right
+      (Value  : Unsigned_32;
+       Amount : Natural) return Unsigned_32
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Shift_Right_Arithmetic
+      (Value  : Unsigned_32;
+       Amount : Natural) return Unsigned_32
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Rotate_Left
+      (Value  : Unsigned_32;
+       Amount : Natural) return Unsigned_32
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Rotate_Right
+      (Value  : Unsigned_32;
+       Amount : Natural) return Unsigned_32
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Shift_Left
+      (Value  : Unsigned_64;
+       Amount : Natural) return Unsigned_64
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Shift_Right
+      (Value  : Unsigned_64;
+       Amount : Natural) return Unsigned_64
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Shift_Right_Arithmetic
+      (Value  : Unsigned_64;
+       Amount : Natural) return Unsigned_64
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Rotate_Left
+      (Value  : Unsigned_64;
+       Amount : Natural) return Unsigned_64
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Rotate_Right
+      (Value  : Unsigned_64;
+       Amount : Natural) return Unsigned_64
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Shift_Left
+      (Value  : Unsigned_128;
+       Amount : Natural) return Unsigned_128
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Shift_Right
+      (Value  : Unsigned_128;
+       Amount : Natural) return Unsigned_128
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Shift_Right_Arithmetic
+      (Value  : Unsigned_128;
+       Amount : Natural) return Unsigned_128
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Rotate_Left
+      (Value  : Unsigned_128;
+       Amount : Natural) return Unsigned_128
+       with Import, Convention => Intrinsic, Static;
+ 
+    function Rotate_Right
+      (Value  : Unsigned_128;
+       Amount : Natural) return Unsigned_128
+       with Import, Convention => Intrinsic, Static;
+ 
+    --  IEEE Floating point types
+ 
+    type IEEE_Float_32 is digits 6;
+    for IEEE_Float_32'Size use 32;
+ 
+    type IEEE_Float_64 is digits 15;
+    for IEEE_Float_64'Size use 64;
+ 
+    --  If there is an IEEE extended float available on the machine, we assume
+    --  that it is available as Long_Long_Float.
+ 
+    --  Note: it is harmless, and explicitly permitted, to include additional
+    --  types in interfaces, so it is not wrong to have IEEE_Extended_Float
+    --  defined even if the extended format is not available.
+ 
+    type IEEE_Extended_Float is new Long_Long_Float;
+ 
+ end Interfaces;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/libada.gpr gcc-11.1.0/gcc/ada/libgnat/libada.gpr
*** gcc-10.3.0/gcc/ada/libgnat/libada.gpr	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/libada.gpr	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ -- This is a project file used to rebuild the GNAT run-time for debug
+ -- or instrumentation purposes.
+ --
+ -- Here is how to use this project file:
+ --
+ -- 1. Create a new directory (e.g. "rts-debug"), then copy the adainclude
+ --    directory from the reference runtime that you want to rebuild.
+ --    You can find the relevant adainclude directory by running the command
+ --    gprls [--target=<target>] [--RTS=<runtime>] and using the adainclude
+ --    directory listed. For example:
+ --     $ cd <reference directory>
+ --     $ mkdir rts-debug
+ --     $ cd rts-debug
+ --     $ cp -a `gprls -v | grep adainclude` .
+ --     $ cd adainclude
+ --
+ --    or under Windows:
+ --
+ --     $ mkdir adainclude
+ --     $ xcopy /s /path/to/adainclude adainclude
+ --     $ cd adainclude
+ --
+ -- 2. If needed (e.g for pragma Normalize_Scalars), create a file called
+ --    gnat.adc in the adainclude directory containing the configuration pragmas
+ --    you want to use to build the library, e.g.
+ --
+ --     $ echo "pragma Normalize_Scalars;" > gnat.adc
+ --
+ --    Note that this step is usually not needed, and most pragmas are not
+ --    relevant to the GNAT run time.
+ --
+ -- 3. Determine the values of the following variables
+ --    CFLAGS (back end compilation flags such as -g -O2)
+ --    ADAFLAGS (front end compilation flags such as -gnatn)
+ --
+ -- 4. Run gprbuild on libada.gpr, e.g:
+ --    $ gprbuild -p -Plibada -j0 -XCFLAGS="-O2 -g" -XADAFLAGS="-gnatn"
+ --
+ --    or for a cross target:
+ --
+ --    $ gprbuild --target=powerpc-elf -p -Plibada -j0 [...]
+ --
+ --    if you created a gnat.adc file at step 2, add "-XCONFIG_FILE=gnat.adc" to
+ --    the gprbuild switches.
+ --
+ --    The above command will build libgnat.a and libgnarl.a with the given
+ --    switches.
+ --
+ -- 4b. In order to generate shared libraries instead, add
+ --    "-XLIBRARY_KIND=dynamic" to the gprbuild switches, and if you want to
+ --    build both shared and static libraries, you can run gprbuild twice in
+ --    a row, e.g:
+ --
+ --    $ gprbuild -p -Plibada -j0 -XLIBRARY_KIND=dynamic [...]
+ --    $ gprbuild -p -Plibada -j0 -XLIBRARY_KIND=static [...]
+ --
+ -- 5. Once the above gprbuild command is successful, you can use this new
+ --    runtime directory by specifying it either via the --RTS= switch on the
+ --    command line or via the attribute Runtime ("Ada") in the main project
+ --    file:
+ --     $ gprbuild --RTS=.../rts-debug ...
+ --    or
+ --       for Runtime ("Ada") use ".../rts-debug";
+ 
+ aggregate project Libada is
+    for Project_Files use ("libgnat.gpr", "libgnarl.gpr");
+ 
+    Config_File := External ("CONFIG_FILE", "");
+ 
+    package Builder is
+       case Config_File is
+          when ""     => null;
+          when others => for Global_Configuration_Pragmas use Config_File;
+       end case;
+    end Builder;
+ 
+ end Libada;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/libgnat.gpr gcc-11.1.0/gcc/ada/libgnat/libgnat.gpr
*** gcc-10.3.0/gcc/ada/libgnat/libgnat.gpr	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/libgnat.gpr	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,69 ----
+ with "libgnat_common";
+ 
+ library project Libgnat is
+ 
+    for Languages use ("Ada", "C");
+    for Source_Dirs use (".");
+    for Source_List_File use "libgnat.lst";
+    for Object_Dir use "../obj-" & Libgnat_Common.Library_Kind;
+ 
+    for Library_Name use "gnat";
+    for Library_Dir use "../adalib";
+    for Library_Kind use Libgnat_Common.Library_Kind;
+ 
+    package Compiler is
+ 
+       for Switches ("C") use Libgnat_Common.C_Flags;
+       for Switches ("Ada") use Libgnat_Common.Ada_Flags;
+ 
+       for Switches ("s-traceb.adb") use
+         Libgnat_Common.Ada_Flags & Libgnat_Common.Force_Debug &
+         Libgnat_Common.No_Inline & Libgnat_Common.No_Sibling;
+       --  Force no sibling call optimization on s-traceb.o so the number of
+       --  stack frames to be skipped when computing a call chain is not
+       --  modified by optimization. We don.t want inlining, either.
+ 
+       for Switches ("a-except.adb") use
+         Libgnat_Common.Ada_Flags & ("-O1") &
+         Libgnat_Common.Force_Debug & Libgnat_Common.No_Inline &
+         Libgnat_Common.No_Reorder;
+       --  Force no function reordering because of the exclusion bounds
+       --  mechanism (see the source file for more detailed information).
+       --  Force debugging information so that it is always possible to set
+       --  conditional breakpoints on exceptions.
+       --  Use -O1 otherwise gdb isn.t able to get a full backtrace on mips
+       --  targets.
+ 
+       for Switches ("s-excdeb.adb") use
+         Libgnat_Common.Ada_Flags & Libgnat_Common.Force_Debug &
+         Libgnat_Common.No_Opt;
+       --  Compile without optimization and with debug info to let the debugger
+       --  set breakpoints and inspect subprogram parameters on exception
+       --  related events.
+ 
+       for Switches ("s-assert.adb") use
+         Libgnat_Common.Ada_Flags & Libgnat_Common.Force_Debug;
+       --  Force debugging information on s-assert.o so that it is always
+       --  possible to set breakpoint on assert failures.
+ 
+       for Switches ("a-tags.adb") use
+         Libgnat_Common.Ada_Flags & Libgnat_Common.Force_Debug;
+       --  Force debugging information on a-tags.o so that the debugger can find
+       --  the description of Ada.Tags.Type_Specific_Data.
+ 
+       for Switches ("s-memory.adb") use
+         Libgnat_Common.Ada_Flags & Libgnat_Common.No_Sibling;
+       --  Force no sibling call optimization on s-memory.o to avoid turning the
+       --  tail recursion in Alloc into a loop that confuses branch prediction.
+ 
+       for Switches ("g-debpoo.adb") use
+         Libgnat_Common.Ada_Flags & Libgnat_Common.No_Reorder;
+       --  Need to keep functions ordered on g-debpoo.o since labels are used to
+       --  exclude subprograms from traceback computation.
+ 
+       for Switches ("traceback.c") use
+         Libgnat_Common.C_Flags & Libgnat_Common.No_Omit;
+ 
+    end Compiler;
+ 
+ end Libgnat;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/libgnat_common.gpr gcc-11.1.0/gcc/ada/libgnat/libgnat_common.gpr
*** gcc-10.3.0/gcc/ada/libgnat/libgnat_common.gpr	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/libgnat_common.gpr	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,19 ----
+ abstract project Libgnat_Common is
+ 
+    Common_Flags := Split (External ("CFLAGS", "-O2 -g"), " ");
+    C_Flags      := Common_Flags &
+                    ("-I../include", "-DIN_RTS=1", "-fexceptions",
+                     "-DSTANDALONE") &
+                    External_As_List ("EXTRALIBFLAGS", " ");
+    Ada_Flags    := Common_Flags & ("-nostdinc", "-I../adainclude")
+                    & Split (External ("ADAFLAGS", "-gnatpg"), " ");
+    Library_Kind := External ("LIBRARY_KIND", "static");
+ 
+    No_Opt      := ("-O0");
+    Force_Debug := ("-g");
+    No_Inline   := ("-fno-inline");
+    No_Omit     := ("-fno-omit-frame-pointer");
+    No_Sibling  := ("-fno-optimize-sibling-calls");
+    No_Reorder  := ("-fno-toplevel-reorder", "-O0");
+ 
+ end Libgnat_Common;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/memtrack.adb gcc-11.1.0/gcc/ada/libgnat/memtrack.adb
*** gcc-10.3.0/gcc/ada/libgnat/memtrack.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/memtrack.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Memory is
*** 102,107 ****
--- 102,110 ----
     pragma Import (C, OS_Exit, "__gnat_os_exit");
     pragma No_Return (OS_Exit);
  
+    In_Child_After_Fork : Integer;
+    pragma Import (C, In_Child_After_Fork, "__gnat_in_child_after_fork");
+ 
     procedure fwrite
       (Ptr    : System.Address;
        Size   : size_t;
*************** package body System.Memory is
*** 149,154 ****
--- 152,175 ----
     --  themselves do dynamic allocation. We use First_Call flag to avoid
     --  infinite recursion
  
+    function Allow_Trace return Boolean;
+    pragma Inline (Allow_Trace);
+    --  Check if the memory trace is allowed
+ 
+    -----------------
+    -- Allow_Trace --
+    -----------------
+ 
+    function Allow_Trace return Boolean is
+    begin
+       if First_Call then
+          First_Call := False;
+          return In_Child_After_Fork = 0;
+       else
+          return False;
+       end if;
+    end Allow_Trace;
+ 
     -----------
     -- Alloc --
     -----------
*************** package body System.Memory is
*** 176,189 ****
  
        Result := c_malloc (Actual_Size);
  
!       if First_Call then
  
           --  Logs allocation call
           --  format is:
           --   'A' <mem addr> <size chunk> <len backtrace> <addr1> ... <addrn>
  
-          First_Call := False;
- 
           if Needs_Init then
              Gmem_Initialize;
           end if;
--- 197,208 ----
  
        Result := c_malloc (Actual_Size);
  
!       if Allow_Trace then
  
           --  Logs allocation call
           --  format is:
           --   'A' <mem addr> <size chunk> <len backtrace> <addr1> ... <addrn>
  
           if Needs_Init then
              Gmem_Initialize;
           end if;
*************** package body System.Memory is
*** 243,256 ****
     begin
        Lock_Task.all;
  
!       if First_Call then
  
           --  Logs deallocation call
           --  format is:
           --   'D' <mem addr> <len backtrace> <addr1> ... <addrn>
  
-          First_Call := False;
- 
           if Needs_Init then
              Gmem_Initialize;
           end if;
--- 262,273 ----
     begin
        Lock_Task.all;
  
!       if Allow_Trace then
  
           --  Logs deallocation call
           --  format is:
           --   'D' <mem addr> <len backtrace> <addr1> ... <addrn>
  
           if Needs_Init then
              Gmem_Initialize;
           end if;
*************** package body System.Memory is
*** 334,342 ****
        Abort_Defer.all;
        Lock_Task.all;
  
!       if First_Call then
!          First_Call := False;
! 
           --  We first log deallocation call
  
           if Needs_Init then
--- 351,357 ----
        Abort_Defer.all;
        Lock_Task.all;
  
!       if Allow_Trace then
           --  We first log deallocation call
  
           if Needs_Init then
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-addima.adb gcc-11.1.0/gcc/ada/libgnat/s-addima.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-addima.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-addima.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-addima.ads gcc-11.1.0/gcc/ada/libgnat/s-addima.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-addima.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-addima.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 1992-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 1992-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-addope.adb gcc-11.1.0/gcc/ada/libgnat/s-addope.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-addope.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-addope.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-addope.ads gcc-11.1.0/gcc/ada/libgnat/s-addope.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-addope.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-addope.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-aoinar.adb gcc-11.1.0/gcc/ada/libgnat/s-aoinar.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-aoinar.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-aoinar.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,209 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --               System.Atomic_Operations.Integer_Arithmetic                --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --                 Copyright (C) 2019-2020, Free Software Foundation, Inc.  --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Atomic_Primitives; use System.Atomic_Primitives;
+ with System.Atomic_Operations.Exchange;
+ with Interfaces.C;
+ 
+ package body System.Atomic_Operations.Integer_Arithmetic is
+ 
+    package Exchange is new System.Atomic_Operations.Exchange (Atomic_Type);
+ 
+    ----------------
+    -- Atomic_Add --
+    ----------------
+ 
+    procedure Atomic_Add
+      (Item  : aliased in out Atomic_Type;
+       Value : Atomic_Type)
+    is
+       Ignore : constant Atomic_Type := Atomic_Fetch_And_Add (Item, Value);
+    begin
+       null;
+    end Atomic_Add;
+ 
+    ---------------------
+    -- Atomic_Subtract --
+    ---------------------
+ 
+    procedure Atomic_Subtract
+      (Item  : aliased in out Atomic_Type;
+       Value : Atomic_Type)
+    is
+       Ignore : constant Atomic_Type := Atomic_Fetch_And_Subtract (Item, Value);
+    begin
+       null;
+    end Atomic_Subtract;
+ 
+    --------------------------
+    -- Atomic_Fetch_And_Add --
+    --------------------------
+ 
+    function Atomic_Fetch_And_Add
+      (Item  : aliased in out Atomic_Type;
+       Value : Atomic_Type) return Atomic_Type
+    is
+       pragma Warnings (Off);
+       function Atomic_Fetch_Add_1
+         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
+         return Atomic_Type;
+       pragma Import (Intrinsic, Atomic_Fetch_Add_1, "__atomic_fetch_add_1");
+       function Atomic_Fetch_Add_2
+         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
+         return Atomic_Type;
+       pragma Import (Intrinsic, Atomic_Fetch_Add_2, "__atomic_fetch_add_2");
+       function Atomic_Fetch_Add_4
+         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
+         return Atomic_Type;
+       pragma Import (Intrinsic, Atomic_Fetch_Add_4, "__atomic_fetch_add_4");
+       function Atomic_Fetch_Add_8
+         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
+         return Atomic_Type;
+       pragma Import (Intrinsic, Atomic_Fetch_Add_8, "__atomic_fetch_add_8");
+       pragma Warnings (On);
+ 
+    begin
+       --  Use the direct intrinsics when possible, and fallback to
+       --  compare-and-exchange otherwise.
+ 
+       if Atomic_Type'Base'Last = Atomic_Type'Last
+         and then Atomic_Type'Base'First = Atomic_Type'First
+         and then Atomic_Type'Last
+                   in 2 ** 7 - 1 | 2 ** 15 - 1 | 2 ** 31 - 1 | 2 ** 63 - 1
+       then
+          case Long_Long_Integer (Atomic_Type'Last) is
+             when 2 ** 7 - 1  =>
+                return Atomic_Fetch_Add_1 (Item'Address, Value);
+             when 2 ** 15 - 1 =>
+                return Atomic_Fetch_Add_2 (Item'Address, Value);
+             when 2 ** 31 - 1 =>
+                return Atomic_Fetch_Add_4 (Item'Address, Value);
+             when 2 ** 63 - 1 =>
+                return Atomic_Fetch_Add_8 (Item'Address, Value);
+             when others      =>
+                raise Program_Error;
+          end case;
+       else
+          declare
+             Old_Value : aliased Atomic_Type := Item;
+             New_Value : Atomic_Type := Old_Value + Value;
+          begin
+             --  Keep iterating until the exchange succeeds
+ 
+             while not Exchange.Atomic_Compare_And_Exchange
+                         (Item, Old_Value, New_Value)
+             loop
+                New_Value := Old_Value + Value;
+             end loop;
+ 
+             return Old_Value;
+          end;
+       end if;
+    end Atomic_Fetch_And_Add;
+ 
+    -------------------------------
+    -- Atomic_Fetch_And_Subtract --
+    -------------------------------
+ 
+    function Atomic_Fetch_And_Subtract
+      (Item  : aliased in out Atomic_Type;
+       Value : Atomic_Type) return Atomic_Type
+    is
+       pragma Warnings (Off);
+       function Atomic_Fetch_Sub_1
+         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
+         return Atomic_Type;
+       pragma Import (Intrinsic, Atomic_Fetch_Sub_1, "__atomic_fetch_sub_1");
+       function Atomic_Fetch_Sub_2
+         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
+         return Atomic_Type;
+       pragma Import (Intrinsic, Atomic_Fetch_Sub_2, "__atomic_fetch_sub_2");
+       function Atomic_Fetch_Sub_4
+         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
+         return Atomic_Type;
+       pragma Import (Intrinsic, Atomic_Fetch_Sub_4, "__atomic_fetch_sub_4");
+       function Atomic_Fetch_Sub_8
+         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
+         return Atomic_Type;
+       pragma Import (Intrinsic, Atomic_Fetch_Sub_8, "__atomic_fetch_sub_8");
+       pragma Warnings (On);
+ 
+    begin
+       --  Use the direct intrinsics when possible, and fallback to
+       --  compare-and-exchange otherwise.
+ 
+       if Atomic_Type'Base'Last = Atomic_Type'Last
+         and then Atomic_Type'Base'First = Atomic_Type'First
+         and then Atomic_Type'Last
+                   in 2 ** 7 - 1 | 2 ** 15 - 1 | 2 ** 31 - 1 | 2 ** 63 - 1
+       then
+          case Long_Long_Integer (Atomic_Type'Last) is
+             when 2 ** 7 - 1  =>
+                return Atomic_Fetch_Sub_1 (Item'Address, Value);
+             when 2 ** 15 - 1 =>
+                return Atomic_Fetch_Sub_2 (Item'Address, Value);
+             when 2 ** 31 - 1 =>
+                return Atomic_Fetch_Sub_4 (Item'Address, Value);
+             when 2 ** 63 - 1 =>
+                return Atomic_Fetch_Sub_8 (Item'Address, Value);
+             when others      =>
+                raise Program_Error;
+          end case;
+       else
+          declare
+             Old_Value : aliased Atomic_Type := Item;
+             New_Value : Atomic_Type := Old_Value - Value;
+          begin
+             --  Keep iterating until the exchange succeeds
+ 
+             while not Exchange.Atomic_Compare_And_Exchange
+                         (Item, Old_Value, New_Value)
+             loop
+                New_Value := Old_Value - Value;
+             end loop;
+ 
+             return Old_Value;
+          end;
+       end if;
+    end Atomic_Fetch_And_Subtract;
+ 
+    ------------------
+    -- Is_Lock_Free --
+    ------------------
+ 
+    function Is_Lock_Free (Item : aliased Atomic_Type) return Boolean is
+       pragma Unreferenced (Item);
+       use type Interfaces.C.size_t;
+    begin
+       return Boolean (Atomic_Always_Lock_Free (Atomic_Type'Object_Size / 8));
+    end Is_Lock_Free;
+ 
+ end System.Atomic_Operations.Integer_Arithmetic;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-aoinar.ads gcc-11.1.0/gcc/ada/libgnat/s-aoinar.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-aoinar.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-aoinar.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,66 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --               System.Atomic_Operations.Integer_Arithmetic                --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --                 Copyright (C) 2019-2020, Free Software Foundation, Inc.  --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT. The copyright notice above, and the license provisions that follow --
+ -- apply solely to the  contents of the part following the private keyword. --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ generic
+    type Atomic_Type is range <> with Atomic;
+ package System.Atomic_Operations.Integer_Arithmetic
+   with Pure
+ is
+    procedure Atomic_Add
+      (Item  : aliased in out Atomic_Type;
+       Value : Atomic_Type) with Convention => Intrinsic;
+ 
+    procedure Atomic_Subtract
+      (Item  : aliased in out Atomic_Type;
+       Value : Atomic_Type) with Convention => Intrinsic;
+ 
+    function Atomic_Fetch_And_Add
+      (Item  : aliased in out Atomic_Type;
+       Value : Atomic_Type) return Atomic_Type with Convention => Intrinsic;
+ 
+    function Atomic_Fetch_And_Subtract
+      (Item  : aliased in out Atomic_Type;
+       Value : Atomic_Type) return Atomic_Type with Convention => Intrinsic;
+ 
+    function Is_Lock_Free
+      (Item : aliased Atomic_Type) return Boolean with Convention => Intrinsic;
+ 
+ private
+    pragma Inline_Always (Atomic_Add);
+    pragma Inline_Always (Atomic_Subtract);
+    pragma Inline_Always (Atomic_Fetch_And_Add);
+    pragma Inline_Always (Atomic_Fetch_And_Subtract);
+    pragma Inline_Always (Is_Lock_Free);
+ end System.Atomic_Operations.Integer_Arithmetic;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-aomoar.adb gcc-11.1.0/gcc/ada/libgnat/s-aomoar.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-aomoar.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-aomoar.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,215 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --               System.Atomic_Operations.Modular_Arithmetic                --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --                 Copyright (C) 2019-2020, Free Software Foundation, Inc.  --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Atomic_Primitives; use System.Atomic_Primitives;
+ with System.Atomic_Operations.Exchange;
+ with Interfaces.C; use Interfaces;
+ 
+ package body System.Atomic_Operations.Modular_Arithmetic is
+ 
+    package Exchange is new System.Atomic_Operations.Exchange (Atomic_Type);
+ 
+    ----------------
+    -- Atomic_Add --
+    ----------------
+ 
+    procedure Atomic_Add
+      (Item  : aliased in out Atomic_Type;
+       Value : Atomic_Type)
+    is
+       Ignore : constant Atomic_Type := Atomic_Fetch_And_Add (Item, Value);
+    begin
+       null;
+    end Atomic_Add;
+ 
+    ---------------------
+    -- Atomic_Subtract --
+    ---------------------
+ 
+    procedure Atomic_Subtract
+      (Item  : aliased in out Atomic_Type;
+       Value : Atomic_Type)
+    is
+       Ignore : constant Atomic_Type := Atomic_Fetch_And_Subtract (Item, Value);
+    begin
+       null;
+    end Atomic_Subtract;
+ 
+    --------------------------
+    -- Atomic_Fetch_And_Add --
+    --------------------------
+ 
+    function Atomic_Fetch_And_Add
+      (Item  : aliased in out Atomic_Type;
+       Value : Atomic_Type) return Atomic_Type
+    is
+       pragma Warnings (Off);
+       function Atomic_Fetch_Add_1
+         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
+         return Atomic_Type;
+       pragma Import (Intrinsic, Atomic_Fetch_Add_1, "__atomic_fetch_add_1");
+       function Atomic_Fetch_Add_2
+         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
+         return Atomic_Type;
+       pragma Import (Intrinsic, Atomic_Fetch_Add_2, "__atomic_fetch_add_2");
+       function Atomic_Fetch_Add_4
+         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
+         return Atomic_Type;
+       pragma Import (Intrinsic, Atomic_Fetch_Add_4, "__atomic_fetch_add_4");
+       function Atomic_Fetch_Add_8
+         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
+         return Atomic_Type;
+       pragma Import (Intrinsic, Atomic_Fetch_Add_8, "__atomic_fetch_add_8");
+       pragma Warnings (On);
+ 
+    begin
+       --  Use the direct intrinsics when possible, and fallback to
+       --  compare-and-exchange otherwise.
+       --  Also suppress spurious warnings.
+ 
+       pragma Warnings (Off);
+       if Atomic_Type'Base'Last = Atomic_Type'Last
+         and then Atomic_Type'First = 0
+         and then Atomic_Type'Last
+                   in 2 ** 8 - 1 | 2 ** 16 - 1 | 2 ** 32 - 1 | 2 ** 64 - 1
+       then
+          pragma Warnings (On);
+          case Unsigned_64 (Atomic_Type'Last) is
+             when 2 ** 8 - 1  =>
+                return Atomic_Fetch_Add_1 (Item'Address, Value);
+             when 2 ** 16 - 1 =>
+                return Atomic_Fetch_Add_2 (Item'Address, Value);
+             when 2 ** 32 - 1 =>
+                return Atomic_Fetch_Add_4 (Item'Address, Value);
+             when 2 ** 64 - 1 =>
+                return Atomic_Fetch_Add_8 (Item'Address, Value);
+             when others      =>
+                raise Program_Error;
+          end case;
+       else
+          declare
+             Old_Value : aliased Atomic_Type := Item;
+             New_Value : Atomic_Type := Old_Value + Value;
+          begin
+             --  Keep iterating until the exchange succeeds
+ 
+             while not Exchange.Atomic_Compare_And_Exchange
+                         (Item, Old_Value, New_Value)
+             loop
+                New_Value := Old_Value + Value;
+             end loop;
+ 
+             return Old_Value;
+          end;
+       end if;
+    end Atomic_Fetch_And_Add;
+ 
+    -------------------------------
+    -- Atomic_Fetch_And_Subtract --
+    -------------------------------
+ 
+    function Atomic_Fetch_And_Subtract
+      (Item  : aliased in out Atomic_Type;
+       Value : Atomic_Type) return Atomic_Type
+    is
+       pragma Warnings (Off);
+       function Atomic_Fetch_Sub_1
+         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
+         return Atomic_Type;
+       pragma Import (Intrinsic, Atomic_Fetch_Sub_1, "__atomic_fetch_sub_1");
+       function Atomic_Fetch_Sub_2
+         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
+         return Atomic_Type;
+       pragma Import (Intrinsic, Atomic_Fetch_Sub_2, "__atomic_fetch_sub_2");
+       function Atomic_Fetch_Sub_4
+         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
+         return Atomic_Type;
+       pragma Import (Intrinsic, Atomic_Fetch_Sub_4, "__atomic_fetch_sub_4");
+       function Atomic_Fetch_Sub_8
+         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
+         return Atomic_Type;
+       pragma Import (Intrinsic, Atomic_Fetch_Sub_8, "__atomic_fetch_sub_8");
+       pragma Warnings (On);
+ 
+    begin
+       --  Use the direct intrinsics when possible, and fallback to
+       --  compare-and-exchange otherwise.
+       --  Also suppress spurious warnings.
+ 
+       pragma Warnings (Off);
+       if Atomic_Type'Base'Last = Atomic_Type'Last
+         and then Atomic_Type'First = 0
+         and then Atomic_Type'Last
+                   in 2 ** 8 - 1 | 2 ** 16 - 1 | 2 ** 32 - 1 | 2 ** 64 - 1
+       then
+          pragma Warnings (On);
+          case Unsigned_64 (Atomic_Type'Last) is
+             when 2 ** 8 - 1  =>
+                return Atomic_Fetch_Sub_1 (Item'Address, Value);
+             when 2 ** 16 - 1 =>
+                return Atomic_Fetch_Sub_2 (Item'Address, Value);
+             when 2 ** 32 - 1 =>
+                return Atomic_Fetch_Sub_4 (Item'Address, Value);
+             when 2 ** 64 - 1 =>
+                return Atomic_Fetch_Sub_8 (Item'Address, Value);
+             when others      =>
+                raise Program_Error;
+          end case;
+       else
+          declare
+             Old_Value : aliased Atomic_Type := Item;
+             New_Value : Atomic_Type := Old_Value - Value;
+          begin
+             --  Keep iterating until the exchange succeeds
+ 
+             while not Exchange.Atomic_Compare_And_Exchange
+                         (Item, Old_Value, New_Value)
+             loop
+                New_Value := Old_Value - Value;
+             end loop;
+ 
+             return Old_Value;
+          end;
+       end if;
+    end Atomic_Fetch_And_Subtract;
+ 
+    ------------------
+    -- Is_Lock_Free --
+    ------------------
+ 
+    function Is_Lock_Free (Item : aliased Atomic_Type) return Boolean is
+       pragma Unreferenced (Item);
+       use type Interfaces.C.size_t;
+    begin
+       return Boolean (Atomic_Always_Lock_Free (Atomic_Type'Object_Size / 8));
+    end Is_Lock_Free;
+ 
+ end System.Atomic_Operations.Modular_Arithmetic;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-aomoar.ads gcc-11.1.0/gcc/ada/libgnat/s-aomoar.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-aomoar.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-aomoar.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,66 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --               System.Atomic_Operations.Modular_Arithmetic                --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --                 Copyright (C) 2019-2020, Free Software Foundation, Inc.  --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT. The copyright notice above, and the license provisions that follow --
+ -- apply solely to the  contents of the part following the private keyword. --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ generic
+    type Atomic_Type is mod <> with Atomic;
+ package System.Atomic_Operations.Modular_Arithmetic
+   with Pure
+ is
+    procedure Atomic_Add
+      (Item  : aliased in out Atomic_Type;
+       Value : Atomic_Type) with Convention => Intrinsic;
+ 
+    procedure Atomic_Subtract
+      (Item  : aliased in out Atomic_Type;
+       Value : Atomic_Type) with Convention => Intrinsic;
+ 
+    function Atomic_Fetch_And_Add
+      (Item  : aliased in out Atomic_Type;
+       Value : Atomic_Type) return Atomic_Type with Convention => Intrinsic;
+ 
+    function Atomic_Fetch_And_Subtract
+      (Item  : aliased in out Atomic_Type;
+       Value : Atomic_Type) return Atomic_Type with Convention => Intrinsic;
+ 
+    function Is_Lock_Free
+      (Item : aliased Atomic_Type) return Boolean with Convention => Intrinsic;
+ 
+ private
+    pragma Inline_Always (Atomic_Add);
+    pragma Inline_Always (Atomic_Subtract);
+    pragma Inline_Always (Atomic_Fetch_And_Add);
+    pragma Inline_Always (Atomic_Fetch_And_Subtract);
+    pragma Inline_Always (Is_Lock_Free);
+ end System.Atomic_Operations.Modular_Arithmetic;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-aotase.adb gcc-11.1.0/gcc/ada/libgnat/s-aotase.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-aotase.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-aotase.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                 Copyright (C) 2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2020, Free Software Foundation, Inc.  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-aotase.ads gcc-11.1.0/gcc/ada/libgnat/s-aotase.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-aotase.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-aotase.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                 Copyright (C) 2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,16 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2020, Free Software Foundation, Inc.  --
! --                                                                          --
! -- This specification is derived from the Ada Reference Manual for use with --
! -- GNAT. The copyright notice above, and the license provisions that follow --
! -- apply solely to the  contents of the part following the private keyword. --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,37 ****
  
  package System.Atomic_Operations.Test_And_Set
    with Pure
- --  Nonblocking
  is
     type Test_And_Set_Flag is mod 2 ** 8
       with Atomic, Default_Value => 0, Size => 8;
--- 35,40 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-aridou.adb gcc-11.1.0/gcc/ada/libgnat/s-aridou.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-aridou.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-aridou.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,678 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                  S Y S T E M . A R I T H _ D O U B L E                   --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Unchecked_Conversion;
+ 
+ package body System.Arith_Double is
+ 
+    pragma Suppress (Overflow_Check);
+    pragma Suppress (Range_Check);
+ 
+    function To_Uns is new Ada.Unchecked_Conversion (Double_Int, Double_Uns);
+    function To_Int is new Ada.Unchecked_Conversion (Double_Uns, Double_Int);
+ 
+    Double_Size : constant Natural := Double_Int'Size;
+    Single_Size : constant Natural := Double_Int'Size / 2;
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    function "+" (A, B : Single_Uns) return Double_Uns is
+      (Double_Uns (A) + Double_Uns (B));
+    function "+" (A : Double_Uns; B : Single_Uns) return Double_Uns is
+      (A + Double_Uns (B));
+    --  Length doubling additions
+ 
+    function "*" (A, B : Single_Uns) return Double_Uns is
+      (Double_Uns (A) * Double_Uns (B));
+    --  Length doubling multiplication
+ 
+    function "/" (A : Double_Uns; B : Single_Uns) return Double_Uns is
+      (A / Double_Uns (B));
+    --  Length doubling division
+ 
+    function "&" (Hi, Lo : Single_Uns) return Double_Uns is
+      (Shift_Left (Double_Uns (Hi), Single_Size) or Double_Uns (Lo));
+    --  Concatenate hi, lo values to form double result
+ 
+    function "abs" (X : Double_Int) return Double_Uns is
+      (if X = Double_Int'First
+       then 2 ** (Double_Size - 1)
+       else Double_Uns (Double_Int'(abs X)));
+    --  Convert absolute value of X to unsigned. Note that we can't just use
+    --  the expression of the Else since it overflows for X = Double_Int'First.
+ 
+    function "rem" (A : Double_Uns; B : Single_Uns) return Double_Uns is
+      (A rem Double_Uns (B));
+    --  Length doubling remainder
+ 
+    function Le3 (X1, X2, X3, Y1, Y2, Y3 : Single_Uns) return Boolean;
+    --  Determines if (3 * Single_Size)-bit value X1&X2&X3 <= Y1&Y2&Y3
+ 
+    function Lo (A : Double_Uns) return Single_Uns is
+      (Single_Uns (A and (2 ** Single_Size - 1)));
+    --  Low order half of double value
+ 
+    function Hi (A : Double_Uns) return Single_Uns is
+      (Single_Uns (Shift_Right (A, Single_Size)));
+    --  High order half of double value
+ 
+    procedure Sub3 (X1, X2, X3 : in out Single_Uns; Y1, Y2, Y3 : Single_Uns);
+    --  Computes X1&X2&X3 := X1&X2&X3 - Y1&Y1&Y3 mod 2 ** (3 * Single_Size)
+ 
+    function To_Neg_Int (A : Double_Uns) return Double_Int;
+    --  Convert to negative integer equivalent. If the input is in the range
+    --  0 .. 2 ** (Double_Size - 1), then the corresponding nonpositive signed
+    --  integer (obtained by negating the given value) is returned, otherwise
+    --  constraint error is raised.
+ 
+    function To_Pos_Int (A : Double_Uns) return Double_Int;
+    --  Convert to positive integer equivalent. If the input is in the range
+    --  0 .. 2 ** (Double_Size - 1) - 1, then the corresponding non-negative
+    --  signed integer is returned, otherwise constraint error is raised.
+ 
+    procedure Raise_Error;
+    pragma No_Return (Raise_Error);
+    --  Raise constraint error with appropriate message
+ 
+    --------------------------
+    -- Add_With_Ovflo_Check --
+    --------------------------
+ 
+    function Add_With_Ovflo_Check (X, Y : Double_Int) return Double_Int is
+       R : constant Double_Int := To_Int (To_Uns (X) + To_Uns (Y));
+ 
+    begin
+       if X >= 0 then
+          if Y < 0 or else R >= 0 then
+             return R;
+          end if;
+ 
+       else -- X < 0
+          if Y > 0 or else R < 0 then
+             return R;
+          end if;
+       end if;
+ 
+       Raise_Error;
+    end Add_With_Ovflo_Check;
+ 
+    -------------------
+    -- Double_Divide --
+    -------------------
+ 
+    procedure Double_Divide
+      (X, Y, Z : Double_Int;
+       Q, R    : out Double_Int;
+       Round   : Boolean)
+    is
+       Xu  : constant Double_Uns := abs X;
+       Yu  : constant Double_Uns := abs Y;
+ 
+       Yhi : constant Single_Uns := Hi (Yu);
+       Ylo : constant Single_Uns := Lo (Yu);
+ 
+       Zu  : constant Double_Uns := abs Z;
+       Zhi : constant Single_Uns := Hi (Zu);
+       Zlo : constant Single_Uns := Lo (Zu);
+ 
+       T1, T2     : Double_Uns;
+       Du, Qu, Ru : Double_Uns;
+       Den_Pos    : Boolean;
+ 
+    begin
+       if Yu = 0 or else Zu = 0 then
+          Raise_Error;
+       end if;
+ 
+       --  Set final signs (RM 4.5.5(27-30))
+ 
+       Den_Pos := (Y < 0) = (Z < 0);
+ 
+       --  Compute Y * Z. Note that if the result overflows Double_Uns, then
+       --  the rounded result is zero, except for the very special case where
+       --  X = -2 ** (Double_Size - 1) and abs(Y*Z) = 2 ** Double_Size, when
+       --  Round is True.
+ 
+       if Yhi /= 0 then
+          if Zhi /= 0 then
+ 
+             --  Handle the special case when Round is True
+ 
+             if Yhi = 1
+               and then Zhi = 1
+               and then Ylo = 0
+               and then Zlo = 0
+               and then X = Double_Int'First
+               and then Round
+             then
+                Q := (if Den_Pos then -1 else 1);
+             else
+                Q := 0;
+             end if;
+ 
+             R := X;
+             return;
+          else
+             T2 := Yhi * Zlo;
+          end if;
+ 
+       else
+          T2 := Ylo * Zhi;
+       end if;
+ 
+       T1 := Ylo * Zlo;
+       T2 := T2 + Hi (T1);
+ 
+       if Hi (T2) /= 0 then
+ 
+          --  Handle the special case when Round is True
+ 
+          if Hi (T2) = 1
+            and then Lo (T2) = 0
+            and then Lo (T1) = 0
+            and then X = Double_Int'First
+            and then Round
+          then
+             Q := (if Den_Pos then -1 else 1);
+          else
+             Q := 0;
+          end if;
+ 
+          R := X;
+          return;
+       end if;
+ 
+       Du := Lo (T2) & Lo (T1);
+ 
+       --  Check overflow case of largest negative number divided by -1
+ 
+       if X = Double_Int'First and then Du = 1 and then not Den_Pos then
+          Raise_Error;
+       end if;
+ 
+       --  Perform the actual division
+ 
+       pragma Assert (Du /= 0);
+       --  Multiplication of 2-limb arguments Yu and Zu leads to 4-limb result
+       --  (where each limb is a single value). Cases where 4 limbs are needed
+       --  require Yhi/=0 and Zhi/=0 and lead to early exit. Remaining cases
+       --  where 3 limbs are needed correspond to Hi(T2)/=0 and lead to early
+       --  exit. Thus, at this point, the result fits in 2 limbs which are
+       --  exactly Lo(T2) and Lo(T1), which corresponds to the value of Du.
+       --  As the case where one of Yu or Zu is null also led to early exit,
+       --  we have Du/=0 here.
+       Qu := Xu / Du;
+       Ru := Xu rem Du;
+ 
+       --  Deal with rounding case
+ 
+       if Round and then Ru > (Du - Double_Uns'(1)) / Double_Uns'(2) then
+          Qu := Qu + Double_Uns'(1);
+       end if;
+ 
+       --  Case of dividend (X) sign positive
+ 
+       if X >= 0 then
+          R := To_Int (Ru);
+          Q := (if Den_Pos then To_Int (Qu) else -To_Int (Qu));
+ 
+       --  Case of dividend (X) sign negative
+ 
+       --  We perform the unary minus operation on the unsigned value
+       --  before conversion to signed, to avoid a possible overflow
+       --  for value -2 ** (Double_Size - 1), both for computing R and Q.
+ 
+       else
+          R := To_Int (-Ru);
+          Q := (if Den_Pos then To_Int (-Qu) else To_Int (Qu));
+       end if;
+    end Double_Divide;
+ 
+    ---------
+    -- Le3 --
+    ---------
+ 
+    function Le3 (X1, X2, X3, Y1, Y2, Y3 : Single_Uns) return Boolean is
+    begin
+       if X1 < Y1 then
+          return True;
+       elsif X1 > Y1 then
+          return False;
+       elsif X2 < Y2 then
+          return True;
+       elsif X2 > Y2 then
+          return False;
+       else
+          return X3 <= Y3;
+       end if;
+    end Le3;
+ 
+    -------------------------------
+    -- Multiply_With_Ovflo_Check --
+    -------------------------------
+ 
+    function Multiply_With_Ovflo_Check (X, Y : Double_Int) return Double_Int is
+       Xu  : constant Double_Uns := abs X;
+       Xhi : constant Single_Uns := Hi (Xu);
+       Xlo : constant Single_Uns := Lo (Xu);
+ 
+       Yu  : constant Double_Uns := abs Y;
+       Yhi : constant Single_Uns := Hi (Yu);
+       Ylo : constant Single_Uns := Lo (Yu);
+ 
+       T1, T2 : Double_Uns;
+ 
+    begin
+       if Xhi /= 0 then
+          if Yhi /= 0 then
+             Raise_Error;
+          else
+             T2 := Xhi * Ylo;
+          end if;
+ 
+       elsif Yhi /= 0 then
+          T2 := Xlo * Yhi;
+ 
+       else -- Yhi = Xhi = 0
+          T2 := 0;
+       end if;
+ 
+       --  Here we have T2 set to the contribution to the upper half of the
+       --  result from the upper halves of the input values.
+ 
+       T1 := Xlo * Ylo;
+       T2 := T2 + Hi (T1);
+ 
+       if Hi (T2) /= 0 then
+          Raise_Error;
+       end if;
+ 
+       T2 := Lo (T2) & Lo (T1);
+ 
+       if X >= 0 then
+          if Y >= 0 then
+             return To_Pos_Int (T2);
+             pragma Annotate (CodePeer, Intentional, "precondition",
+                              "Intentional Unsigned->Signed conversion");
+          else
+             return To_Neg_Int (T2);
+          end if;
+       else -- X < 0
+          if Y < 0 then
+             return To_Pos_Int (T2);
+             pragma Annotate (CodePeer, Intentional, "precondition",
+                              "Intentional Unsigned->Signed conversion");
+          else
+             return To_Neg_Int (T2);
+          end if;
+       end if;
+ 
+    end Multiply_With_Ovflo_Check;
+ 
+    -----------------
+    -- Raise_Error --
+    -----------------
+ 
+    procedure Raise_Error is
+    begin
+       raise Constraint_Error with "Double arithmetic overflow";
+    end Raise_Error;
+ 
+    -------------------
+    -- Scaled_Divide --
+    -------------------
+ 
+    procedure Scaled_Divide
+      (X, Y, Z : Double_Int;
+       Q, R    : out Double_Int;
+       Round   : Boolean)
+    is
+       Xu  : constant Double_Uns := abs X;
+       Xhi : constant Single_Uns := Hi (Xu);
+       Xlo : constant Single_Uns := Lo (Xu);
+ 
+       Yu  : constant Double_Uns := abs Y;
+       Yhi : constant Single_Uns := Hi (Yu);
+       Ylo : constant Single_Uns := Lo (Yu);
+ 
+       Zu  : Double_Uns := abs Z;
+       Zhi : Single_Uns := Hi (Zu);
+       Zlo : Single_Uns := Lo (Zu);
+ 
+       D : array (1 .. 4) of Single_Uns;
+       --  The dividend, four digits (D(1) is high order)
+ 
+       Qd : array (1 .. 2) of Single_Uns;
+       --  The quotient digits, two digits (Qd(1) is high order)
+ 
+       S1, S2, S3 : Single_Uns;
+       --  Value to subtract, three digits (S1 is high order)
+ 
+       Qu : Double_Uns;
+       Ru : Double_Uns;
+       --  Unsigned quotient and remainder
+ 
+       Mask : Single_Uns;
+       --  Mask of bits used to compute the scaling factor below
+ 
+       Scale : Natural;
+       --  Scaling factor used for multiple-precision divide. Dividend and
+       --  Divisor are multiplied by 2 ** Scale, and the final remainder is
+       --  divided by the scaling factor. The reason for this scaling is to
+       --  allow more accurate estimation of quotient digits.
+ 
+       Shift : Natural;
+       --  Shift factor used to compute the scaling factor above
+ 
+       T1, T2, T3 : Double_Uns;
+       --  Temporary values
+ 
+    begin
+       --  First do the multiplication, giving the four digit dividend
+ 
+       T1 := Xlo * Ylo;
+       D (4) := Lo (T1);
+       D (3) := Hi (T1);
+ 
+       if Yhi /= 0 then
+          T1 := Xlo * Yhi;
+          T2 := D (3) + Lo (T1);
+          D (3) := Lo (T2);
+          D (2) := Hi (T1) + Hi (T2);
+ 
+          if Xhi /= 0 then
+             T1 := Xhi * Ylo;
+             T2 := D (3) + Lo (T1);
+             D (3) := Lo (T2);
+             T3 := D (2) + Hi (T1);
+             T3 := T3 + Hi (T2);
+             D (2) := Lo (T3);
+             D (1) := Hi (T3);
+ 
+             T1 := (D (1) & D (2)) + Double_Uns'(Xhi * Yhi);
+             D (1) := Hi (T1);
+             D (2) := Lo (T1);
+ 
+          else
+             D (1) := 0;
+          end if;
+ 
+       else
+          if Xhi /= 0 then
+             T1 := Xhi * Ylo;
+             T2 := D (3) + Lo (T1);
+             D (3) := Lo (T2);
+             D (2) := Hi (T1) + Hi (T2);
+ 
+          else
+             D (2) := 0;
+          end if;
+ 
+          D (1) := 0;
+       end if;
+ 
+       --  Now it is time for the dreaded multiple precision division. First an
+       --  easy case, check for the simple case of a one digit divisor.
+ 
+       if Zhi = 0 then
+          if D (1) /= 0 or else D (2) >= Zlo then
+             Raise_Error;
+ 
+          --  Here we are dividing at most three digits by one digit
+ 
+          else
+             T1 := D (2) & D (3);
+             T2 := Lo (T1 rem Zlo) & D (4);
+ 
+             Qu := Lo (T1 / Zlo) & Lo (T2 / Zlo);
+             Ru := T2 rem Zlo;
+          end if;
+ 
+       --  If divisor is double digit and dividend is too large, raise error
+ 
+       elsif (D (1) & D (2)) >= Zu then
+          Raise_Error;
+ 
+       --  This is the complex case where we definitely have a double digit
+       --  divisor and a dividend of at least three digits. We use the classical
+       --  multiple-precision division algorithm (see section (4.3.1) of Knuth's
+       --  "The Art of Computer Programming", Vol. 2 for a description
+       --  (algorithm D).
+ 
+       else
+          --  First normalize the divisor so that it has the leading bit on.
+          --  We do this by finding the appropriate left shift amount.
+ 
+          Shift := Single_Size / 2;
+          Mask  := Shift_Left (2 ** (Single_Size / 2) - 1, Shift);
+          Scale := 0;
+ 
+          while Shift /= 0 loop
+             if (Hi (Zu) and Mask) = 0 then
+                Scale := Scale + Shift;
+                Zu := Shift_Left (Zu, Shift);
+             end if;
+ 
+             Shift := Shift / 2;
+             Mask := Shift_Left (Mask, Shift);
+          end loop;
+ 
+          Zhi := Hi (Zu);
+          Zlo := Lo (Zu);
+ 
+          pragma Assert (Zhi /= 0);
+          --  We have Hi(Zu)/=0 before normalization. The sequence of Shift_Left
+          --  operations results in the leading bit of Zu being 1 by moving the
+          --  leftmost 1-bit in Zu to leading position, thus Zhi=Hi(Zu)/=0 here.
+ 
+          --  Note that when we scale up the dividend, it still fits in four
+          --  digits, since we already tested for overflow, and scaling does
+          --  not change the invariant that (D (1) & D (2)) < Zu.
+ 
+          T1 := Shift_Left (D (1) & D (2), Scale);
+          D (1) := Hi (T1);
+          T2 := Shift_Left (0 & D (3), Scale);
+          D (2) := Lo (T1) or Hi (T2);
+          T3 := Shift_Left (0 & D (4), Scale);
+          D (3) := Lo (T2) or Hi (T3);
+          D (4) := Lo (T3);
+ 
+          --  Loop to compute quotient digits, runs twice for Qd(1) and Qd(2)
+ 
+          for J in 0 .. 1 loop
+ 
+             --  Compute next quotient digit. We have to divide three digits by
+             --  two digits. We estimate the quotient by dividing the leading
+             --  two digits by the leading digit. Given the scaling we did above
+             --  which ensured the first bit of the divisor is set, this gives
+             --  an estimate of the quotient that is at most two too high.
+ 
+             Qd (J + 1) := (if D (J + 1) = Zhi
+                            then 2 ** Single_Size - 1
+                            else Lo ((D (J + 1) & D (J + 2)) / Zhi));
+ 
+             --  Compute amount to subtract
+ 
+             T1 := Qd (J + 1) * Zlo;
+             T2 := Qd (J + 1) * Zhi;
+             S3 := Lo (T1);
+             T1 := Hi (T1) + Lo (T2);
+             S2 := Lo (T1);
+             S1 := Hi (T1) + Hi (T2);
+ 
+             --  Adjust quotient digit if it was too high
+ 
+             --  We use the version of the algorithm in the 2nd Edition of
+             --  "The Art of Computer Programming". This had a bug not
+             --  discovered till 1995, see Vol 2 errata:
+             --     http://www-cs-faculty.stanford.edu/~uno/err2-2e.ps.gz.
+             --  Under rare circumstances the expression in the test could
+             --  overflow. This version was further corrected in 2005, see
+             --  Vol 2 errata:
+             --     http://www-cs-faculty.stanford.edu/~uno/all2-pre.ps.gz.
+             --  This implementation is not impacted by these bugs, due to the
+             --  use of a word-size comparison done in function Le3 instead of
+             --  a comparison on two-word integer quantities in the original
+             --  algorithm.
+ 
+             loop
+                exit when Le3 (S1, S2, S3, D (J + 1), D (J + 2), D (J + 3));
+                Qd (J + 1) := Qd (J + 1) - 1;
+                Sub3 (S1, S2, S3, 0, Zhi, Zlo);
+             end loop;
+ 
+             --  Now subtract S1&S2&S3 from D1&D2&D3 ready for next step
+ 
+             Sub3 (D (J + 1), D (J + 2), D (J + 3), S1, S2, S3);
+          end loop;
+ 
+          --  The two quotient digits are now set, and the remainder of the
+          --  scaled division is in D3&D4. To get the remainder for the
+          --  original unscaled division, we rescale this dividend.
+ 
+          --  We rescale the divisor as well, to make the proper comparison
+          --  for rounding below.
+ 
+          Qu := Qd (1) & Qd (2);
+          Ru := Shift_Right (D (3) & D (4), Scale);
+          Zu := Shift_Right (Zu, Scale);
+       end if;
+ 
+       --  Deal with rounding case
+ 
+       if Round and then Ru > (Zu - Double_Uns'(1)) / Double_Uns'(2) then
+ 
+          --  Protect against wrapping around when rounding, by signaling
+          --  an overflow when the quotient is too large.
+ 
+          if Qu = Double_Uns'Last then
+             Raise_Error;
+          end if;
+ 
+          Qu := Qu + Double_Uns'(1);
+       end if;
+ 
+       --  Set final signs (RM 4.5.5(27-30))
+ 
+       --  Case of dividend (X * Y) sign positive
+ 
+       if (X >= 0 and then Y >= 0) or else (X < 0 and then Y < 0) then
+          R := To_Pos_Int (Ru);
+          Q := (if Z > 0 then To_Pos_Int (Qu) else To_Neg_Int (Qu));
+ 
+       --  Case of dividend (X * Y) sign negative
+ 
+       else
+          R := To_Neg_Int (Ru);
+          Q := (if Z > 0 then To_Neg_Int (Qu) else To_Pos_Int (Qu));
+       end if;
+    end Scaled_Divide;
+ 
+    ----------
+    -- Sub3 --
+    ----------
+ 
+    procedure Sub3 (X1, X2, X3 : in out Single_Uns; Y1, Y2, Y3 : Single_Uns) is
+    begin
+       if Y3 > X3 then
+          if X2 = 0 then
+             X1 := X1 - 1;
+          end if;
+ 
+          X2 := X2 - 1;
+       end if;
+ 
+       X3 := X3 - Y3;
+ 
+       if Y2 > X2 then
+          X1 := X1 - 1;
+       end if;
+ 
+       X2 := X2 - Y2;
+       X1 := X1 - Y1;
+    end Sub3;
+ 
+    -------------------------------
+    -- Subtract_With_Ovflo_Check --
+    -------------------------------
+ 
+    function Subtract_With_Ovflo_Check (X, Y : Double_Int) return Double_Int is
+       R : constant Double_Int := To_Int (To_Uns (X) - To_Uns (Y));
+ 
+    begin
+       if X >= 0 then
+          if Y > 0 or else R >= 0 then
+             return R;
+          end if;
+ 
+       else -- X < 0
+          if Y <= 0 or else R < 0 then
+             return R;
+          end if;
+       end if;
+ 
+       Raise_Error;
+    end Subtract_With_Ovflo_Check;
+ 
+    ----------------
+    -- To_Neg_Int --
+    ----------------
+ 
+    function To_Neg_Int (A : Double_Uns) return Double_Int is
+       R : constant Double_Int :=
+         (if A = 2 ** (Double_Size - 1) then Double_Int'First else -To_Int (A));
+       --  Note that we can't just use the expression of the Else, because it
+       --  overflows for A = 2 ** (Double_Size - 1).
+    begin
+       if R <= 0 then
+          return R;
+       else
+          Raise_Error;
+       end if;
+    end To_Neg_Int;
+ 
+    ----------------
+    -- To_Pos_Int --
+    ----------------
+ 
+    function To_Pos_Int (A : Double_Uns) return Double_Int is
+       R : constant Double_Int := To_Int (A);
+    begin
+       if R >= 0 then
+          return R;
+       else
+          Raise_Error;
+       end if;
+    end To_Pos_Int;
+ 
+ end System.Arith_Double;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-aridou.ads gcc-11.1.0/gcc/ada/libgnat/s-aridou.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-aridou.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-aridou.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,94 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                  S Y S T E M . A R I T H _ D O U B L E                   --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides software routines for doing arithmetic on "double"
+ --  signed integer values in cases where either overflow checking is required,
+ --  or intermediate results are longer than the result type.
+ 
+ generic
+ 
+    type Double_Int is range <>;
+ 
+    type Double_Uns is mod <>;
+ 
+    type Single_Uns is mod <>;
+ 
+    with function Shift_Left (A : Double_Uns; B : Natural) return Double_Uns
+      is <>;
+ 
+    with function Shift_Right (A : Double_Uns; B : Natural) return Double_Uns
+      is <>;
+ 
+    with function Shift_Left (A : Single_Uns; B : Natural) return Single_Uns
+      is <>;
+ 
+ package System.Arith_Double is
+    pragma Pure;
+ 
+    function Add_With_Ovflo_Check (X, Y : Double_Int) return Double_Int;
+    --  Raises Constraint_Error if sum of operands overflows Double_Int,
+    --  otherwise returns the signed integer sum.
+ 
+    function Subtract_With_Ovflo_Check (X, Y : Double_Int) return Double_Int;
+    --  Raises Constraint_Error if difference of operands overflows Double_Int,
+    --  otherwise returns the signed integer difference.
+ 
+    function Multiply_With_Ovflo_Check (X, Y : Double_Int) return Double_Int;
+    pragma Convention (C, Multiply_With_Ovflo_Check);
+    --  Raises Constraint_Error if product of operands overflows Double_Int,
+    --  otherwise returns the signed integer product. Gigi may also call this
+    --  routine directly.
+ 
+    procedure Scaled_Divide
+      (X, Y, Z : Double_Int;
+       Q, R    : out Double_Int;
+       Round   : Boolean);
+    --  Performs the division of (X * Y) / Z, storing the quotient in Q
+    --  and the remainder in R. Constraint_Error is raised if Z is zero,
+    --  or if the quotient does not fit in Double_Int. Round indicates if
+    --  the result should be rounded. If Round is False, then Q, R are
+    --  the normal quotient and remainder from a truncating division.
+    --  If Round is True, then Q is the rounded quotient. The remainder
+    --  R is not affected by the setting of the Round flag.
+ 
+    procedure Double_Divide
+      (X, Y, Z : Double_Int;
+       Q, R    : out Double_Int;
+       Round   : Boolean);
+    --  Performs the division X / (Y * Z), storing the quotient in Q and
+    --  the remainder in R. Constraint_Error is raised if Y or Z is zero,
+    --  or if the quotient does not fit in Double_Int. Round indicates if the
+    --  result should be rounded. If Round is False, then Q, R are the normal
+    --  quotient and remainder from a truncating division. If Round is True,
+    --  then Q is the rounded quotient. The remainder R is not affected by the
+    --  setting of the Round flag.
+ 
+ end System.Arith_Double;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-arit128.adb gcc-11.1.0/gcc/ada/libgnat/s-arit128.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-arit128.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-arit128.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,64 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                     S Y S T E M . A R I T H _ 1 2 8                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Arith_Double;
+ 
+ package body System.Arith_128 is
+ 
+    subtype Uns128 is Interfaces.Unsigned_128;
+    subtype Uns64  is Interfaces.Unsigned_64;
+ 
+    use Interfaces;
+ 
+    package Impl is new Arith_Double (Int128, Uns128, Uns64);
+ 
+    function Add_With_Ovflo_Check128 (X, Y : Int128) return Int128
+      renames Impl.Add_With_Ovflo_Check;
+ 
+    function Subtract_With_Ovflo_Check128 (X, Y : Int128) return Int128
+      renames Impl.Subtract_With_Ovflo_Check;
+ 
+    function Multiply_With_Ovflo_Check128 (X, Y : Int128) return Int128
+      renames Impl.Multiply_With_Ovflo_Check;
+ 
+    procedure Scaled_Divide128
+      (X, Y, Z : Int128;
+       Q, R    : out Int128;
+       Round   : Boolean)
+      renames Impl.Scaled_Divide;
+ 
+    procedure Double_Divide128
+      (X, Y, Z : Int128;
+       Q, R    : out Int128;
+       Round   : Boolean)
+      renames Impl.Double_Divide;
+ 
+ end System.Arith_128;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-arit128.ads gcc-11.1.0/gcc/ada/libgnat/s-arit128.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-arit128.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-arit128.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,84 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                     S Y S T E M . A R I T H _ 1 2 8                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This unit provides software routines for doing arithmetic on 128-bit
+ --  signed integer values in cases where either overflow checking is
+ --  required, or intermediate results are longer than 128 bits.
+ 
+ pragma Restrictions (No_Elaboration_Code);
+ --  Allow direct call from gigi generated code
+ 
+ with Interfaces;
+ 
+ package System.Arith_128 is
+    pragma Pure;
+ 
+    subtype Int128 is Interfaces.Integer_128;
+ 
+    function Add_With_Ovflo_Check128 (X, Y : Int128) return Int128;
+    --  Raises Constraint_Error if sum of operands overflows 128 bits,
+    --  otherwise returns the 128-bit signed integer sum.
+ 
+    function Subtract_With_Ovflo_Check128 (X, Y : Int128) return Int128;
+    --  Raises Constraint_Error if difference of operands overflows 128
+    --  bits, otherwise returns the 128-bit signed integer difference.
+ 
+    function Multiply_With_Ovflo_Check128 (X, Y : Int128) return Int128;
+    pragma Export (C, Multiply_With_Ovflo_Check128, "__gnat_mulv128");
+    --  Raises Constraint_Error if product of operands overflows 128
+    --  bits, otherwise returns the 128-bit signed integer product.
+    --  Gigi may also call this routine directly.
+ 
+    procedure Scaled_Divide128
+      (X, Y, Z : Int128;
+       Q, R    : out Int128;
+       Round   : Boolean);
+    --  Performs the division of (X * Y) / Z, storing the quotient in Q
+    --  and the remainder in R. Constraint_Error is raised if Z is zero,
+    --  or if the quotient does not fit in 128 bits. Round indicates if
+    --  the result should be rounded. If Round is False, then Q, R are
+    --  the normal quotient and remainder from a truncating division.
+    --  If Round is True, then Q is the rounded quotient. The remainder
+    --  R is not affected by the setting of the Round flag.
+ 
+    procedure Double_Divide128
+      (X, Y, Z : Int128;
+       Q, R    : out Int128;
+       Round   : Boolean);
+    --  Performs the division X / (Y * Z), storing the quotient in Q and
+    --  the remainder in R. Constraint_Error is raised if Y or Z is zero,
+    --  or if the quotient does not fit in 128 bits. Round indicates if the
+    --  result should be rounded. If Round is False, then Q, R are the normal
+    --  quotient and remainder from a truncating division. If Round is True,
+    --  then Q is the rounded quotient. The remainder R is not affected by the
+    --  setting of the Round flag.
+ 
+ end System.Arith_128;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-arit32.adb gcc-11.1.0/gcc/ada/libgnat/s-arit32.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-arit32.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-arit32.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,182 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                      S Y S T E M . A R I T H _ 3 2                       --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Unchecked_Conversion;
+ 
+ package body System.Arith_32 is
+ 
+    pragma Suppress (Overflow_Check);
+    pragma Suppress (Range_Check);
+ 
+    subtype Uns32 is Interfaces.Unsigned_32;
+    subtype Uns64 is Interfaces.Unsigned_64;
+ 
+    use Interfaces;
+ 
+    function To_Int is new Ada.Unchecked_Conversion (Uns32, Int32);
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    function "abs" (X : Int32) return Uns32 is
+      (if X = Int32'First
+       then 2**31
+       else Uns32 (Int32'(abs X)));
+    --  Convert absolute value of X to unsigned. Note that we can't just use
+    --  the expression of the Else since it overflows for X = Int32'First.
+ 
+    function Hi (A : Uns64) return Uns32 is (Uns32 (Shift_Right (A, 32)));
+    --  High order half of 64-bit value
+ 
+    function To_Neg_Int (A : Uns32) return Int32;
+    --  Convert to negative integer equivalent. If the input is in the range
+    --  0 .. 2**31, then the corresponding nonpositive signed integer (obtained
+    --  by negating the given value) is returned, otherwise constraint error is
+    --  raised.
+ 
+    function To_Pos_Int (A : Uns32) return Int32;
+    --  Convert to positive integer equivalent. If the input is in the range
+    --  0 .. 2**31 - 1, then the corresponding nonnegative signed integer is
+    --  returned, otherwise constraint error is raised.
+ 
+    procedure Raise_Error;
+    pragma No_Return (Raise_Error);
+    --  Raise constraint error with appropriate message
+ 
+    -----------------
+    -- Raise_Error --
+    -----------------
+ 
+    procedure Raise_Error is
+    begin
+       raise Constraint_Error with "32-bit arithmetic overflow";
+    end Raise_Error;
+ 
+    -------------------
+    -- Scaled_Divide --
+    -------------------
+ 
+    procedure Scaled_Divide32
+      (X, Y, Z : Int32;
+       Q, R    : out Int32;
+       Round   : Boolean)
+    is
+       Xu  : constant Uns32 := abs X;
+       Yu  : constant Uns32 := abs Y;
+       Zu  : constant Uns32 := abs Z;
+ 
+       D   : Uns64;
+       --  The dividend
+ 
+       Qu : Uns32;
+       Ru : Uns32;
+       --  Unsigned quotient and remainder
+ 
+    begin
+       --  First do the 64-bit multiplication
+ 
+       D := Uns64 (Xu) * Uns64 (Yu);
+ 
+       --  If dividend is too large, raise error
+ 
+       if Hi (D) >= Zu then
+          Raise_Error;
+ 
+       --  Then do the 64-bit division
+ 
+       else
+          Qu := Uns32 (D / Uns64 (Zu));
+          Ru := Uns32 (D rem Uns64 (Zu));
+       end if;
+ 
+       --  Deal with rounding case
+ 
+       if Round and then Ru > (Zu - Uns32'(1)) / Uns32'(2) then
+ 
+          --  Protect against wrapping around when rounding, by signaling
+          --  an overflow when the quotient is too large.
+ 
+          if Qu = Uns32'Last then
+             Raise_Error;
+          end if;
+ 
+          Qu := Qu + Uns32'(1);
+       end if;
+ 
+       --  Set final signs (RM 4.5.5(27-30))
+ 
+       --  Case of dividend (X * Y) sign positive
+ 
+       if (X >= 0 and then Y >= 0) or else (X < 0 and then Y < 0) then
+          R := To_Pos_Int (Ru);
+          Q := (if Z > 0 then To_Pos_Int (Qu) else To_Neg_Int (Qu));
+ 
+       --  Case of dividend (X * Y) sign negative
+ 
+       else
+          R := To_Neg_Int (Ru);
+          Q := (if Z > 0 then To_Neg_Int (Qu) else To_Pos_Int (Qu));
+       end if;
+    end Scaled_Divide32;
+ 
+    ----------------
+    -- To_Neg_Int --
+    ----------------
+ 
+    function To_Neg_Int (A : Uns32) return Int32 is
+       R : constant Int32 :=
+         (if A = 2**31 then Int32'First else -To_Int (A));
+       --  Note that we can't just use the expression of the Else, because it
+       --  overflows for A = 2**31.
+    begin
+       if R <= 0 then
+          return R;
+       else
+          Raise_Error;
+       end if;
+    end To_Neg_Int;
+ 
+    ----------------
+    -- To_Pos_Int --
+    ----------------
+ 
+    function To_Pos_Int (A : Uns32) return Int32 is
+       R : constant Int32 := To_Int (A);
+    begin
+       if R >= 0 then
+          return R;
+       else
+          Raise_Error;
+       end if;
+    end To_Pos_Int;
+ 
+ end System.Arith_32;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-arit32.ads gcc-11.1.0/gcc/ada/libgnat/s-arit32.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-arit32.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-arit32.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,55 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                      S Y S T E M . A R I T H _ 3 2                       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This unit provides software routines for doing arithmetic on 32-bit
+ --  signed integer values in cases where either overflow checking is
+ --  required, or intermediate results are longer than 32 bits.
+ 
+ with Interfaces;
+ 
+ package System.Arith_32 is
+    pragma Pure;
+ 
+    subtype Int32 is Interfaces.Integer_32;
+ 
+    procedure Scaled_Divide32
+      (X, Y, Z : Int32;
+       Q, R    : out Int32;
+       Round   : Boolean);
+    --  Performs the division of (X * Y) / Z, storing the quotient in Q
+    --  and the remainder in R. Constraint_Error is raised if Z is zero,
+    --  or if the quotient does not fit in 32 bits. Round indicates if
+    --  the result should be rounded. If Round is False, then Q, R are
+    --  the normal quotient and remainder from a truncating division.
+    --  If Round is True, then Q is the rounded quotient. The remainder
+    --  R is not affected by the setting of the Round flag.
+ 
+ end System.Arith_32;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-arit64.adb gcc-11.1.0/gcc/ada/libgnat/s-arit64.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-arit64.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-arit64.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,658 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Interfaces; use Interfaces;
! 
! with Ada.Unchecked_Conversion;
  
  package body System.Arith_64 is
  
!    pragma Suppress (Overflow_Check);
!    pragma Suppress (Range_Check);
! 
!    subtype Uns64 is Unsigned_64;
!    function To_Uns is new Ada.Unchecked_Conversion (Int64, Uns64);
!    function To_Int is new Ada.Unchecked_Conversion (Uns64, Int64);
! 
!    subtype Uns32 is Unsigned_32;
! 
!    -----------------------
!    -- Local Subprograms --
!    -----------------------
! 
!    function "+" (A, B : Uns32) return Uns64 is (Uns64 (A) + Uns64 (B));
!    function "+" (A : Uns64; B : Uns32) return Uns64 is (A + Uns64 (B));
!    --  Length doubling additions
! 
!    function "*" (A, B : Uns32) return Uns64 is (Uns64 (A) * Uns64 (B));
!    --  Length doubling multiplication
! 
!    function "/" (A : Uns64; B : Uns32) return Uns64 is (A / Uns64 (B));
!    --  Length doubling division
! 
!    function "&" (Hi, Lo : Uns32) return Uns64 is
!      (Shift_Left (Uns64 (Hi), 32) or Uns64 (Lo));
!    --  Concatenate hi, lo values to form 64-bit result
! 
!    function "abs" (X : Int64) return Uns64 is
!      (if X = Int64'First then 2**63 else Uns64 (Int64'(abs X)));
!    --  Convert absolute value of X to unsigned. Note that we can't just use
!    --  the expression of the Else, because it overflows for X = Int64'First.
! 
!    function "rem" (A : Uns64; B : Uns32) return Uns64 is (A rem Uns64 (B));
!    --  Length doubling remainder
! 
!    function Le3 (X1, X2, X3 : Uns32; Y1, Y2, Y3 : Uns32) return Boolean;
!    --  Determines if 96 bit value X1&X2&X3 <= Y1&Y2&Y3
! 
!    function Lo (A : Uns64) return Uns32 is (Uns32 (A and 16#FFFF_FFFF#));
!    --  Low order half of 64-bit value
! 
!    function Hi (A : Uns64) return Uns32 is (Uns32 (Shift_Right (A, 32)));
!    --  High order half of 64-bit value
! 
!    procedure Sub3 (X1, X2, X3 : in out Uns32; Y1, Y2, Y3 : Uns32);
!    --  Computes X1&X2&X3 := X1&X2&X3 - Y1&Y1&Y3 with mod 2**96 wrap
! 
!    function To_Neg_Int (A : Uns64) return Int64 with Inline;
!    --  Convert to negative integer equivalent. If the input is in the range
!    --  0 .. 2 ** 63, then the corresponding negative signed integer (obtained
!    --  by negating the given value) is returned, otherwise constraint error
!    --  is raised.
! 
!    function To_Pos_Int (A : Uns64) return Int64 with Inline;
!    --  Convert to positive integer equivalent. If the input is in the range
!    --  0 .. 2 ** 63-1, then the corresponding non-negative signed integer is
!    --  returned, otherwise constraint error is raised.
! 
!    procedure Raise_Error with Inline;
!    pragma No_Return (Raise_Error);
!    --  Raise constraint error with appropriate message
! 
!    --------------------------
!    -- Add_With_Ovflo_Check --
!    --------------------------
  
!    function Add_With_Ovflo_Check (X, Y : Int64) return Int64 is
!       R : constant Int64 := To_Int (To_Uns (X) + To_Uns (Y));
  
!    begin
!       if X >= 0 then
!          if Y < 0 or else R >= 0 then
!             return R;
!          end if;
  
!       else -- X < 0
!          if Y > 0 or else R < 0 then
!             return R;
!          end if;
!       end if;
  
!       Raise_Error;
!    end Add_With_Ovflo_Check;
  
!    -------------------
!    -- Double_Divide --
!    -------------------
  
!    procedure Double_Divide
       (X, Y, Z : Int64;
        Q, R    : out Int64;
        Round   : Boolean)
!    is
!       Xu  : constant Uns64 := abs X;
!       Yu  : constant Uns64 := abs Y;
! 
!       Yhi : constant Uns32 := Hi (Yu);
!       Ylo : constant Uns32 := Lo (Yu);
! 
!       Zu  : constant Uns64 := abs Z;
!       Zhi : constant Uns32 := Hi (Zu);
!       Zlo : constant Uns32 := Lo (Zu);
! 
!       T1, T2     : Uns64;
!       Du, Qu, Ru : Uns64;
!       Den_Pos    : Boolean;
! 
!    begin
!       if Yu = 0 or else Zu = 0 then
!          Raise_Error;
!       end if;
! 
!       --  Set final signs (RM 4.5.5(27-30))
! 
!       Den_Pos := (Y < 0) = (Z < 0);
! 
!       --  Compute Y * Z. Note that if the result overflows 64 bits unsigned,
!       --  then the rounded result is zero, except for the very special case
!       --  where X = -2**63 and abs(Y*Z) = 2**64, when Round is True.
! 
!       if Yhi /= 0 then
!          if Zhi /= 0 then
! 
!             --  Handle the special case when Round is True
! 
!             if Yhi = 1
!               and then Zhi = 1
!               and then Ylo = 0
!               and then Zlo = 0
!               and then X = Int64'First
!               and then Round
!             then
!                Q := (if Den_Pos then -1 else 1);
!             else
!                Q := 0;
!             end if;
! 
!             R := X;
!             return;
!          else
!             T2 := Yhi * Zlo;
!          end if;
! 
!       else
!          T2 := Ylo * Zhi;
!       end if;
! 
!       T1 := Ylo * Zlo;
!       T2 := T2 + Hi (T1);
! 
!       if Hi (T2) /= 0 then
! 
!          --  Handle the special case when Round is True
! 
!          if Hi (T2) = 1
!            and then Lo (T2) = 0
!            and then Lo (T1) = 0
!            and then X = Int64'First
!            and then Round
!          then
!             Q := (if Den_Pos then -1 else 1);
!          else
!             Q := 0;
!          end if;
! 
!          R := X;
!          return;
!       end if;
! 
!       Du := Lo (T2) & Lo (T1);
! 
!       --  Check overflow case of largest negative number divided by -1
! 
!       if X = Int64'First and then Du = 1 and then not Den_Pos then
!          Raise_Error;
!       end if;
! 
!       --  Perform the actual division
! 
!       Qu := Xu / Du;
!       Ru := Xu rem Du;
! 
!       --  Deal with rounding case
! 
!       if Round and then Ru > (Du - Uns64'(1)) / Uns64'(2) then
!          Qu := Qu + Uns64'(1);
!       end if;
! 
!       --  Case of dividend (X) sign positive
! 
!       if X >= 0 then
!          R := To_Int (Ru);
!          Q := (if Den_Pos then To_Int (Qu) else -To_Int (Qu));
! 
!       --  Case of dividend (X) sign negative
! 
!       --  We perform the unary minus operation on the unsigned value
!       --  before conversion to signed, to avoid a possible overflow for
!       --  value -2**63, both for computing R and Q.
! 
!       else
!          R := To_Int (-Ru);
!          Q := (if Den_Pos then To_Int (-Qu) else To_Int (Qu));
!       end if;
!    end Double_Divide;
! 
!    ---------
!    -- Le3 --
!    ---------
! 
!    function Le3 (X1, X2, X3 : Uns32; Y1, Y2, Y3 : Uns32) return Boolean is
!    begin
!       if X1 < Y1 then
!          return True;
!       elsif X1 > Y1 then
!          return False;
!       elsif X2 < Y2 then
!          return True;
!       elsif X2 > Y2 then
!          return False;
!       else
!          return X3 <= Y3;
!       end if;
!    end Le3;
! 
!    -------------------------------
!    -- Multiply_With_Ovflo_Check --
!    -------------------------------
! 
!    function Multiply_With_Ovflo_Check (X, Y : Int64) return Int64 is
!       Xu  : constant Uns64 := abs X;
!       Xhi : constant Uns32 := Hi (Xu);
!       Xlo : constant Uns32 := Lo (Xu);
! 
!       Yu  : constant Uns64 := abs Y;
!       Yhi : constant Uns32 := Hi (Yu);
!       Ylo : constant Uns32 := Lo (Yu);
! 
!       T1, T2 : Uns64;
! 
!    begin
!       if Xhi /= 0 then
!          if Yhi /= 0 then
!             Raise_Error;
!          else
!             T2 := Xhi * Ylo;
!          end if;
! 
!       elsif Yhi /= 0 then
!          T2 := Xlo * Yhi;
! 
!       else -- Yhi = Xhi = 0
!          T2 := 0;
!       end if;
! 
!       --  Here we have T2 set to the contribution to the upper half of the
!       --  result from the upper halves of the input values.
! 
!       T1 := Xlo * Ylo;
!       T2 := T2 + Hi (T1);
! 
!       if Hi (T2) /= 0 then
!          Raise_Error;
!       end if;
! 
!       T2 := Lo (T2) & Lo (T1);
! 
!       if X >= 0 then
!          if Y >= 0 then
!             return To_Pos_Int (T2);
!          else
!             return To_Neg_Int (T2);
!          end if;
!       else -- X < 0
!          if Y < 0 then
!             return To_Pos_Int (T2);
!          else
!             return To_Neg_Int (T2);
!          end if;
!       end if;
! 
!    end Multiply_With_Ovflo_Check;
! 
!    -----------------
!    -- Raise_Error --
!    -----------------
! 
!    procedure Raise_Error is
!    begin
!       raise Constraint_Error with "64-bit arithmetic overflow";
!    end Raise_Error;
! 
!    -------------------
!    -- Scaled_Divide --
!    -------------------
  
!    procedure Scaled_Divide
       (X, Y, Z : Int64;
        Q, R    : out Int64;
        Round   : Boolean)
!    is
!       Xu  : constant Uns64 := abs X;
!       Xhi : constant Uns32 := Hi (Xu);
!       Xlo : constant Uns32 := Lo (Xu);
! 
!       Yu  : constant Uns64 := abs Y;
!       Yhi : constant Uns32 := Hi (Yu);
!       Ylo : constant Uns32 := Lo (Yu);
! 
!       Zu  : Uns64 := abs Z;
!       Zhi : Uns32 := Hi (Zu);
!       Zlo : Uns32 := Lo (Zu);
! 
!       D : array (1 .. 4) of Uns32;
!       --  The dividend, four digits (D(1) is high order)
! 
!       Qd : array (1 .. 2) of Uns32;
!       --  The quotient digits, two digits (Qd(1) is high order)
! 
!       S1, S2, S3 : Uns32;
!       --  Value to subtract, three digits (S1 is high order)
! 
!       Qu : Uns64;
!       Ru : Uns64;
!       --  Unsigned quotient and remainder
! 
!       Scale : Natural;
!       --  Scaling factor used for multiple-precision divide. Dividend and
!       --  Divisor are multiplied by 2 ** Scale, and the final remainder is
!       --  divided by the scaling factor. The reason for this scaling is to
!       --  allow more accurate estimation of quotient digits.
! 
!       T1, T2, T3 : Uns64;
!       --  Temporary values
! 
!    begin
!       --  First do the multiplication, giving the four digit dividend
! 
!       T1 := Xlo * Ylo;
!       D (4) := Lo (T1);
!       D (3) := Hi (T1);
! 
!       if Yhi /= 0 then
!          T1 := Xlo * Yhi;
!          T2 := D (3) + Lo (T1);
!          D (3) := Lo (T2);
!          D (2) := Hi (T1) + Hi (T2);
! 
!          if Xhi /= 0 then
!             T1 := Xhi * Ylo;
!             T2 := D (3) + Lo (T1);
!             D (3) := Lo (T2);
!             T3 := D (2) + Hi (T1);
!             T3 := T3 + Hi (T2);
!             D (2) := Lo (T3);
!             D (1) := Hi (T3);
! 
!             T1 := (D (1) & D (2)) + Uns64'(Xhi * Yhi);
!             D (1) := Hi (T1);
!             D (2) := Lo (T1);
! 
!          else
!             D (1) := 0;
!          end if;
! 
!       else
!          if Xhi /= 0 then
!             T1 := Xhi * Ylo;
!             T2 := D (3) + Lo (T1);
!             D (3) := Lo (T2);
!             D (2) := Hi (T1) + Hi (T2);
! 
!          else
!             D (2) := 0;
!          end if;
! 
!          D (1) := 0;
!       end if;
! 
!       --  Now it is time for the dreaded multiple precision division. First an
!       --  easy case, check for the simple case of a one digit divisor.
! 
!       if Zhi = 0 then
!          if D (1) /= 0 or else D (2) >= Zlo then
!             Raise_Error;
! 
!          --  Here we are dividing at most three digits by one digit
! 
!          else
!             T1 := D (2) & D (3);
!             T2 := Lo (T1 rem Zlo) & D (4);
! 
!             Qu := Lo (T1 / Zlo) & Lo (T2 / Zlo);
!             Ru := T2 rem Zlo;
!          end if;
! 
!       --  If divisor is double digit and dividend is too large, raise error
! 
!       elsif (D (1) & D (2)) >= Zu then
!          Raise_Error;
! 
!       --  This is the complex case where we definitely have a double digit
!       --  divisor and a dividend of at least three digits. We use the classical
!       --  multiple-precision division algorithm (see section (4.3.1) of Knuth's
!       --  "The Art of Computer Programming", Vol. 2 for a description
!       --  (algorithm D).
! 
!       else
!          --  First normalize the divisor so that it has the leading bit on.
!          --  We do this by finding the appropriate left shift amount.
! 
!          Scale := 0;
! 
!          if (Zhi and 16#FFFF0000#) = 0 then
!             Scale := 16;
!             Zu := Shift_Left (Zu, 16);
!          end if;
! 
!          if (Hi (Zu) and 16#FF00_0000#) = 0 then
!             Scale := Scale + 8;
!             Zu := Shift_Left (Zu, 8);
!          end if;
! 
!          if (Hi (Zu) and 16#F000_0000#) = 0 then
!             Scale := Scale + 4;
!             Zu := Shift_Left (Zu, 4);
!          end if;
! 
!          if (Hi (Zu) and 16#C000_0000#) = 0 then
!             Scale := Scale + 2;
!             Zu := Shift_Left (Zu, 2);
!          end if;
! 
!          if (Hi (Zu) and 16#8000_0000#) = 0 then
!             Scale := Scale + 1;
!             Zu := Shift_Left (Zu, 1);
!          end if;
! 
!          Zhi := Hi (Zu);
!          Zlo := Lo (Zu);
! 
!          --  Note that when we scale up the dividend, it still fits in four
!          --  digits, since we already tested for overflow, and scaling does
!          --  not change the invariant that (D (1) & D (2)) < Zu.
! 
!          T1 := Shift_Left (D (1) & D (2), Scale);
!          D (1) := Hi (T1);
!          T2 := Shift_Left (0 & D (3), Scale);
!          D (2) := Lo (T1) or Hi (T2);
!          T3 := Shift_Left (0 & D (4), Scale);
!          D (3) := Lo (T2) or Hi (T3);
!          D (4) := Lo (T3);
! 
!          --  Loop to compute quotient digits, runs twice for Qd(1) and Qd(2)
! 
!          for J in 0 .. 1 loop
! 
!             --  Compute next quotient digit. We have to divide three digits by
!             --  two digits. We estimate the quotient by dividing the leading
!             --  two digits by the leading digit. Given the scaling we did above
!             --  which ensured the first bit of the divisor is set, this gives
!             --  an estimate of the quotient that is at most two too high.
! 
!             Qd (J + 1) := (if D (J + 1) = Zhi
!                            then 2 ** 32 - 1
!                            else Lo ((D (J + 1) & D (J + 2)) / Zhi));
! 
!             --  Compute amount to subtract
! 
!             T1 := Qd (J + 1) * Zlo;
!             T2 := Qd (J + 1) * Zhi;
!             S3 := Lo (T1);
!             T1 := Hi (T1) + Lo (T2);
!             S2 := Lo (T1);
!             S1 := Hi (T1) + Hi (T2);
! 
!             --  Adjust quotient digit if it was too high
! 
!             --  We use the version of the algorithm in the 2nd Edition of
!             --  "The Art of Computer Programming". This had a bug not
!             --  discovered till 1995, see Vol 2 errata:
!             --     http://www-cs-faculty.stanford.edu/~uno/err2-2e.ps.gz.
!             --  Under rare circumstances the expression in the test could
!             --  overflow. This version was further corrected in 2005, see
!             --  Vol 2 errata:
!             --     http://www-cs-faculty.stanford.edu/~uno/all2-pre.ps.gz.
!             --  This implementation is not impacted by these bugs, due to the
!             --  use of a word-size comparison done in function Le3 instead of
!             --  a comparison on two-word integer quantities in the original
!             --  algorithm.
! 
!             loop
!                exit when Le3 (S1, S2, S3, D (J + 1), D (J + 2), D (J + 3));
!                Qd (J + 1) := Qd (J + 1) - 1;
!                Sub3 (S1, S2, S3, 0, Zhi, Zlo);
!             end loop;
! 
!             --  Now subtract S1&S2&S3 from D1&D2&D3 ready for next step
! 
!             Sub3 (D (J + 1), D (J + 2), D (J + 3), S1, S2, S3);
!          end loop;
! 
!          --  The two quotient digits are now set, and the remainder of the
!          --  scaled division is in D3&D4. To get the remainder for the
!          --  original unscaled division, we rescale this dividend.
! 
!          --  We rescale the divisor as well, to make the proper comparison
!          --  for rounding below.
! 
!          Qu := Qd (1) & Qd (2);
!          Ru := Shift_Right (D (3) & D (4), Scale);
!          Zu := Shift_Right (Zu, Scale);
!       end if;
! 
!       --  Deal with rounding case
! 
!       if Round and then Ru > (Zu - Uns64'(1)) / Uns64'(2) then
! 
!          --  Protect against wrapping around when rounding, by signaling
!          --  an overflow when the quotient is too large.
! 
!          if Qu = Uns64'Last then
!             Raise_Error;
!          end if;
! 
!          Qu := Qu + Uns64 (1);
!       end if;
! 
!       --  Set final signs (RM 4.5.5(27-30))
! 
!       --  Case of dividend (X * Y) sign positive
! 
!       if (X >= 0 and then Y >= 0) or else (X < 0 and then Y < 0) then
!          R := To_Pos_Int (Ru);
!          Q := (if Z > 0 then To_Pos_Int (Qu) else To_Neg_Int (Qu));
! 
!       --  Case of dividend (X * Y) sign negative
! 
!       else
!          R := To_Neg_Int (Ru);
!          Q := (if Z > 0 then To_Neg_Int (Qu) else To_Pos_Int (Qu));
!       end if;
!    end Scaled_Divide;
! 
!    ----------
!    -- Sub3 --
!    ----------
! 
!    procedure Sub3 (X1, X2, X3 : in out Uns32; Y1, Y2, Y3 : Uns32) is
!    begin
!       if Y3 > X3 then
!          if X2 = 0 then
!             X1 := X1 - 1;
!          end if;
! 
!          X2 := X2 - 1;
!       end if;
! 
!       X3 := X3 - Y3;
! 
!       if Y2 > X2 then
!          X1 := X1 - 1;
!       end if;
! 
!       X2 := X2 - Y2;
!       X1 := X1 - Y1;
!    end Sub3;
! 
!    -------------------------------
!    -- Subtract_With_Ovflo_Check --
!    -------------------------------
! 
!    function Subtract_With_Ovflo_Check (X, Y : Int64) return Int64 is
!       R : constant Int64 := To_Int (To_Uns (X) - To_Uns (Y));
! 
!    begin
!       if X >= 0 then
!          if Y > 0 or else R >= 0 then
!             return R;
!          end if;
! 
!       else -- X < 0
!          if Y <= 0 or else R < 0 then
!             return R;
!          end if;
!       end if;
! 
!       Raise_Error;
!    end Subtract_With_Ovflo_Check;
! 
!    ----------------
!    -- To_Neg_Int --
!    ----------------
! 
!    function To_Neg_Int (A : Uns64) return Int64 is
!       R : constant Int64 := (if A = 2**63 then Int64'First else -To_Int (A));
!       --  Note that we can't just use the expression of the Else, because it
!       --  overflows for A = 2**63.
!    begin
!       if R <= 0 then
!          return R;
!       else
!          Raise_Error;
!       end if;
!    end To_Neg_Int;
! 
!    ----------------
!    -- To_Pos_Int --
!    ----------------
! 
!    function To_Pos_Int (A : Uns64) return Int64 is
!       R : constant Int64 := To_Int (A);
!    begin
!       if R >= 0 then
!          return R;
!       else
!          Raise_Error;
!       end if;
!    end To_Pos_Int;
  
  end System.Arith_64;
--- 29,64 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Arith_Double;
  
  package body System.Arith_64 is
  
!    subtype Uns64 is Interfaces.Unsigned_64;
!    subtype Uns32 is Interfaces.Unsigned_32;
  
!    use Interfaces;
  
!    package Impl is new Arith_Double (Int64, Uns64, Uns32);
  
!    function Add_With_Ovflo_Check64 (X, Y : Int64) return Int64
!      renames Impl.Add_With_Ovflo_Check;
  
!    function Subtract_With_Ovflo_Check64 (X, Y : Int64) return Int64
!      renames Impl.Subtract_With_Ovflo_Check;
  
!    function Multiply_With_Ovflo_Check64 (X, Y : Int64) return Int64
!      renames Impl.Multiply_With_Ovflo_Check;
  
!    procedure Scaled_Divide64
       (X, Y, Z : Int64;
        Q, R    : out Int64;
        Round   : Boolean)
!      renames Impl.Scaled_Divide;
  
!    procedure Double_Divide64
       (X, Y, Z : Int64;
        Q, R    : out Int64;
        Round   : Boolean)
!      renames Impl.Double_Divide;
  
  end System.Arith_64;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-arit64.ads gcc-11.1.0/gcc/ada/libgnat/s-arit64.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-arit64.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-arit64.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Arith_64 is
*** 43,84 ****
  
     subtype Int64 is Interfaces.Integer_64;
  
!    function Add_With_Ovflo_Check (X, Y : Int64) return Int64;
     --  Raises Constraint_Error if sum of operands overflows 64 bits,
     --  otherwise returns the 64-bit signed integer sum.
  
!    function Subtract_With_Ovflo_Check (X, Y : Int64) return Int64;
     --  Raises Constraint_Error if difference of operands overflows 64
     --  bits, otherwise returns the 64-bit signed integer difference.
  
!    function Multiply_With_Ovflo_Check (X, Y : Int64) return Int64;
!    pragma Export (C, Multiply_With_Ovflo_Check, "__gnat_mulv64");
     --  Raises Constraint_Error if product of operands overflows 64
     --  bits, otherwise returns the 64-bit signed integer product.
!    --  GIGI may also call this routine directly.
  
!    procedure Scaled_Divide
       (X, Y, Z : Int64;
        Q, R    : out Int64;
        Round   : Boolean);
     --  Performs the division of (X * Y) / Z, storing the quotient in Q
     --  and the remainder in R. Constraint_Error is raised if Z is zero,
!    --  or if the quotient does not fit in 64-bits. Round indicates if
     --  the result should be rounded. If Round is False, then Q, R are
     --  the normal quotient and remainder from a truncating division.
     --  If Round is True, then Q is the rounded quotient. The remainder
     --  R is not affected by the setting of the Round flag.
  
!    procedure Double_Divide
       (X, Y, Z : Int64;
        Q, R    : out Int64;
        Round   : Boolean);
     --  Performs the division X / (Y * Z), storing the quotient in Q and
     --  the remainder in R. Constraint_Error is raised if Y or Z is zero,
!    --  or if the quotient does not fit in 64-bits. Round indicates if the
     --  result should be rounded. If Round is False, then Q, R are the normal
     --  quotient and remainder from a truncating division. If Round is True,
     --  then Q is the rounded quotient. The remainder R is not affected by the
     --  setting of the Round flag.
  
  end System.Arith_64;
--- 43,96 ----
  
     subtype Int64 is Interfaces.Integer_64;
  
!    function Add_With_Ovflo_Check64 (X, Y : Int64) return Int64;
     --  Raises Constraint_Error if sum of operands overflows 64 bits,
     --  otherwise returns the 64-bit signed integer sum.
  
!    function Subtract_With_Ovflo_Check64 (X, Y : Int64) return Int64;
     --  Raises Constraint_Error if difference of operands overflows 64
     --  bits, otherwise returns the 64-bit signed integer difference.
  
!    function Multiply_With_Ovflo_Check64 (X, Y : Int64) return Int64;
!    pragma Export (C, Multiply_With_Ovflo_Check64, "__gnat_mulv64");
     --  Raises Constraint_Error if product of operands overflows 64
     --  bits, otherwise returns the 64-bit signed integer product.
!    --  Gigi may also call this routine directly.
  
!    procedure Scaled_Divide64
       (X, Y, Z : Int64;
        Q, R    : out Int64;
        Round   : Boolean);
     --  Performs the division of (X * Y) / Z, storing the quotient in Q
     --  and the remainder in R. Constraint_Error is raised if Z is zero,
!    --  or if the quotient does not fit in 64 bits. Round indicates if
     --  the result should be rounded. If Round is False, then Q, R are
     --  the normal quotient and remainder from a truncating division.
     --  If Round is True, then Q is the rounded quotient. The remainder
     --  R is not affected by the setting of the Round flag.
  
!    procedure Scaled_Divide
!      (X, Y, Z : Int64;
!       Q, R    : out Int64;
!       Round   : Boolean) renames Scaled_Divide64;
!    --  Renamed procedure to preserve compatibility with earlier versions
! 
!    procedure Double_Divide64
       (X, Y, Z : Int64;
        Q, R    : out Int64;
        Round   : Boolean);
     --  Performs the division X / (Y * Z), storing the quotient in Q and
     --  the remainder in R. Constraint_Error is raised if Y or Z is zero,
!    --  or if the quotient does not fit in 64 bits. Round indicates if the
     --  result should be rounded. If Round is False, then Q, R are the normal
     --  quotient and remainder from a truncating division. If Round is True,
     --  then Q is the rounded quotient. The remainder R is not affected by the
     --  setting of the Round flag.
  
+    procedure Double_Divide
+      (X, Y, Z : Int64;
+       Q, R    : out Int64;
+       Round   : Boolean) renames Double_Divide64;
+    --  Renamed procedure to preserve compatibility with earlier versions
+ 
  end System.Arith_64;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-assert.adb gcc-11.1.0/gcc/ada/libgnat/s-assert.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-assert.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-assert.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-assert.ads gcc-11.1.0/gcc/ada/libgnat/s-assert.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-assert.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-assert.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-atacco.adb gcc-11.1.0/gcc/ada/libgnat/s-atacco.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-atacco.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-atacco.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-atacco.ads gcc-11.1.0/gcc/ada/libgnat/s-atacco.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-atacco.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-atacco.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-atocou.adb gcc-11.1.0/gcc/ada/libgnat/s-atocou.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-atocou.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-atocou.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-atocou.ads gcc-11.1.0/gcc/ada/libgnat/s-atocou.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-atocou.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-atocou.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-atocou__builtin.adb gcc-11.1.0/gcc/ada/libgnat/s-atocou__builtin.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-atocou__builtin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-atocou__builtin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-atocou__x86.adb gcc-11.1.0/gcc/ada/libgnat/s-atocou__x86.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-atocou__x86.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-atocou__x86.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-atoope.ads gcc-11.1.0/gcc/ada/libgnat/s-atoope.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-atoope.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-atoope.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                 Copyright (C) 2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,16 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2020, Free Software Foundation, Inc.  --
! --                                                                          --
! -- This specification is derived from the Ada Reference Manual for use with --
! -- GNAT. The copyright notice above, and the license provisions that follow --
! -- apply solely to the  contents of the part following the private keyword. --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-atopar.adb gcc-11.1.0/gcc/ada/libgnat/s-atopar.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-atopar.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-atopar.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,147 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   System.Atomic_Operations.Arithmetic                    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                 Copyright (C) 2019, Free Software Foundation, Inc.       --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System.Atomic_Primitives; use System.Atomic_Primitives;
- with Interfaces.C;
- 
- package body System.Atomic_Operations.Arithmetic is
- 
-    ----------------
-    -- Atomic_Add --
-    ----------------
- 
-    procedure Atomic_Add
-      (Item  : aliased in out Atomic_Type;
-       Value : Atomic_Type)
-    is
-       Ignore : constant Atomic_Type := Atomic_Fetch_And_Add (Item, Value);
-    begin
-       null;
-    end Atomic_Add;
- 
-    ---------------------
-    -- Atomic_Subtract --
-    ---------------------
- 
-    procedure Atomic_Subtract
-      (Item  : aliased in out Atomic_Type;
-       Value : Atomic_Type)
-    is
-       Ignore : constant Atomic_Type := Atomic_Fetch_And_Subtract (Item, Value);
-    begin
-       null;
-    end Atomic_Subtract;
- 
-    --------------------------
-    -- Atomic_Fetch_And_Add --
-    --------------------------
- 
-    function Atomic_Fetch_And_Add
-      (Item  : aliased in out Atomic_Type;
-       Value : Atomic_Type) return Atomic_Type
-    is
-       pragma Warnings (Off);
-       function Atomic_Fetch_Add_1
-         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
-         return Atomic_Type;
-       pragma Import (Intrinsic, Atomic_Fetch_Add_1, "__atomic_fetch_add_1");
-       function Atomic_Fetch_Add_2
-         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
-         return Atomic_Type;
-       pragma Import (Intrinsic, Atomic_Fetch_Add_2, "__atomic_fetch_add_2");
-       function Atomic_Fetch_Add_4
-         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
-         return Atomic_Type;
-       pragma Import (Intrinsic, Atomic_Fetch_Add_4, "__atomic_fetch_add_4");
-       function Atomic_Fetch_Add_8
-         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
-         return Atomic_Type;
-       pragma Import (Intrinsic, Atomic_Fetch_Add_8, "__atomic_fetch_add_8");
-       pragma Warnings (On);
- 
-    begin
-       case Item'Size is
-          when 8      => return Atomic_Fetch_Add_1 (Item'Address, Value);
-          when 16     => return Atomic_Fetch_Add_2 (Item'Address, Value);
-          when 32     => return Atomic_Fetch_Add_4 (Item'Address, Value);
-          when 64     => return Atomic_Fetch_Add_8 (Item'Address, Value);
-          when others => raise Program_Error;
-       end case;
-    end Atomic_Fetch_And_Add;
- 
-    -------------------------------
-    -- Atomic_Fetch_And_Subtract --
-    -------------------------------
- 
-    function Atomic_Fetch_And_Subtract
-      (Item  : aliased in out Atomic_Type;
-       Value : Atomic_Type) return Atomic_Type
-    is
-       pragma Warnings (Off);
-       function Atomic_Fetch_Sub_1
-         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
-         return Atomic_Type;
-       pragma Import (Intrinsic, Atomic_Fetch_Sub_1, "__atomic_fetch_sub_1");
-       function Atomic_Fetch_Sub_2
-         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
-         return Atomic_Type;
-       pragma Import (Intrinsic, Atomic_Fetch_Sub_2, "__atomic_fetch_sub_2");
-       function Atomic_Fetch_Sub_4
-         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
-         return Atomic_Type;
-       pragma Import (Intrinsic, Atomic_Fetch_Sub_4, "__atomic_fetch_sub_4");
-       function Atomic_Fetch_Sub_8
-         (Ptr : System.Address; Val : Atomic_Type; Model : Mem_Model := Seq_Cst)
-         return Atomic_Type;
-       pragma Import (Intrinsic, Atomic_Fetch_Sub_8, "__atomic_fetch_sub_8");
-       pragma Warnings (On);
- 
-    begin
-       case Item'Size is
-          when 8      => return Atomic_Fetch_Sub_1 (Item'Address, Value);
-          when 16     => return Atomic_Fetch_Sub_2 (Item'Address, Value);
-          when 32     => return Atomic_Fetch_Sub_4 (Item'Address, Value);
-          when 64     => return Atomic_Fetch_Sub_8 (Item'Address, Value);
-          when others => raise Program_Error;
-       end case;
-    end Atomic_Fetch_And_Subtract;
- 
-    ------------------
-    -- Is_Lock_Free --
-    ------------------
- 
-    function Is_Lock_Free (Item : aliased Atomic_Type) return Boolean is
-       use type Interfaces.C.size_t;
-    begin
-       return Boolean (Atomic_Always_Lock_Free (Item'Size / 8));
-    end Is_Lock_Free;
- 
- end System.Atomic_Operations.Arithmetic;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-atopar.ads gcc-11.1.0/gcc/ada/libgnat/s-atopar.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-atopar.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-atopar.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,65 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   System.Atomic_Operations.Arithmetic                    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                 Copyright (C) 2019, Free Software Foundation, Inc.       --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- pragma Ada_2020;
- 
- generic
-    type Atomic_Type is range <> with Atomic;
- package System.Atomic_Operations.Arithmetic
-   with Pure
- --  Nonblocking
- is
-    procedure Atomic_Add
-      (Item  : aliased in out Atomic_Type;
-       Value : Atomic_Type) with Convention => Intrinsic;
- 
-    procedure Atomic_Subtract
-      (Item  : aliased in out Atomic_Type;
-       Value : Atomic_Type) with Convention => Intrinsic;
- 
-    function Atomic_Fetch_And_Add
-      (Item  : aliased in out Atomic_Type;
-       Value : Atomic_Type) return Atomic_Type with Convention => Intrinsic;
- 
-    function Atomic_Fetch_And_Subtract
-      (Item  : aliased in out Atomic_Type;
-       Value : Atomic_Type) return Atomic_Type with Convention => Intrinsic;
- 
-    function Is_Lock_Free
-      (Item : aliased Atomic_Type) return Boolean with Convention => Intrinsic;
- 
- private
-    pragma Inline_Always (Atomic_Add);
-    pragma Inline_Always (Atomic_Subtract);
-    pragma Inline_Always (Atomic_Fetch_And_Add);
-    pragma Inline_Always (Atomic_Fetch_And_Subtract);
-    pragma Inline_Always (Is_Lock_Free);
- end System.Atomic_Operations.Arithmetic;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-atopex.adb gcc-11.1.0/gcc/ada/libgnat/s-atopex.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-atopex.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-atopex.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                 Copyright (C) 2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2020, Free Software Foundation, Inc.  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Atomic_Operations.Ex
*** 66,72 ****
        pragma Warnings (On);
  
     begin
!       case Item'Size is
           when 8      => return Atomic_Exchange_1 (Item'Address, Value);
           when 16     => return Atomic_Exchange_2 (Item'Address, Value);
           when 32     => return Atomic_Exchange_4 (Item'Address, Value);
--- 66,72 ----
        pragma Warnings (On);
  
     begin
!       case Atomic_Type'Object_Size is
           when 8      => return Atomic_Exchange_1 (Item'Address, Value);
           when 16     => return Atomic_Exchange_2 (Item'Address, Value);
           when 32     => return Atomic_Exchange_4 (Item'Address, Value);
*************** package body System.Atomic_Operations.Ex
*** 124,130 ****
        pragma Warnings (On);
  
     begin
!       case Item'Size is
           when 8 =>
              return Boolean
                (Atomic_Compare_Exchange_1
--- 124,130 ----
        pragma Warnings (On);
  
     begin
!       case Atomic_Type'Object_Size is
           when 8 =>
              return Boolean
                (Atomic_Compare_Exchange_1
*************** package body System.Atomic_Operations.Ex
*** 151,159 ****
     ------------------
  
     function Is_Lock_Free (Item : aliased Atomic_Type) return Boolean is
        use type Interfaces.C.size_t;
     begin
!       return Boolean (Atomic_Always_Lock_Free (Item'Size / 8));
     end Is_Lock_Free;
  
  end System.Atomic_Operations.Exchange;
--- 151,160 ----
     ------------------
  
     function Is_Lock_Free (Item : aliased Atomic_Type) return Boolean is
+       pragma Unreferenced (Item);
        use type Interfaces.C.size_t;
     begin
!       return Boolean (Atomic_Always_Lock_Free (Atomic_Type'Object_Size / 8));
     end Is_Lock_Free;
  
  end System.Atomic_Operations.Exchange;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-atopex.ads gcc-11.1.0/gcc/ada/libgnat/s-atopex.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-atopex.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-atopex.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                 Copyright (C) 2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,16 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2020, Free Software Foundation, Inc.  --
! --                                                                          --
! -- This specification is derived from the Ada Reference Manual for use with --
! -- GNAT. The copyright notice above, and the license provisions that follow --
! -- apply solely to the  contents of the part following the private keyword. --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,41 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- pragma Ada_2020;
- 
  generic
     type Atomic_Type is private with Atomic;
  package System.Atomic_Operations.Exchange
    with Pure
- --  Blocking
  is
     function Atomic_Exchange
       (Item  : aliased in out Atomic_Type;
--- 33,42 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-atopri.adb gcc-11.1.0/gcc/ada/libgnat/s-atopri.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-atopri.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-atopri.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --              Copyright (C) 2012-2019, Free Software Foundation, Inc.     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --              Copyright (C) 2012-2020, Free Software Foundation, Inc.     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-atopri.ads gcc-11.1.0/gcc/ada/libgnat/s-atopri.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-atopri.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-atopri.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --              Copyright (C) 2012-2019, Free Software Foundation, Inc.     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --              Copyright (C) 2012-2020, Free Software Foundation, Inc.     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-auxdec.adb gcc-11.1.0/gcc/ada/libgnat/s-auxdec.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-auxdec.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-auxdec.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/Or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/Or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-auxdec.ads gcc-11.1.0/gcc/ada/libgnat/s-auxdec.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-auxdec.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-auxdec.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Aux_DEC is
*** 198,203 ****
--- 198,205 ----
     type Unsigned_Quadword_Array is
        array (Integer range <>) of Unsigned_Quadword;
  
+    subtype Address_Int is Integer;
+ 
     function To_Address (X : Integer) return Address;
     pragma Pure_Function (To_Address);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-bignum.adb gcc-11.1.0/gcc/ada/libgnat/s-bignum.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-bignum.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-bignum.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2012-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2012-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,96 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with System.Generic_Bignums;
  with Ada.Unchecked_Conversion;
  
  package body System.Bignums is
  
!    package Sec_Stack_Bignums is new
!      System.Generic_Bignums (Use_Secondary_Stack => True);
!    use Sec_Stack_Bignums;
  
!    function "+" is new Ada.Unchecked_Conversion
!      (Bignum, Sec_Stack_Bignums.Bignum);
  
!    function "-" is new Ada.Unchecked_Conversion
!      (Sec_Stack_Bignums.Bignum, Bignum);
  
!    function Big_Add (X, Y : Bignum) return Bignum is
!      (-Sec_Stack_Bignums.Big_Add (+X, +Y));
  
!    function Big_Sub (X, Y : Bignum) return Bignum is
!      (-Sec_Stack_Bignums.Big_Sub (+X, +Y));
  
!    function Big_Mul (X, Y : Bignum) return Bignum is
!      (-Sec_Stack_Bignums.Big_Mul (+X, +Y));
  
!    function Big_Div (X, Y : Bignum) return Bignum is
!      (-Sec_Stack_Bignums.Big_Div (+X, +Y));
  
!    function Big_Exp (X, Y : Bignum) return Bignum is
!      (-Sec_Stack_Bignums.Big_Exp (+X, +Y));
  
!    function Big_Mod (X, Y : Bignum) return Bignum is
!      (-Sec_Stack_Bignums.Big_Mod (+X, +Y));
  
!    function Big_Rem (X, Y : Bignum) return Bignum is
!      (-Sec_Stack_Bignums.Big_Rem (+X, +Y));
  
!    function Big_Neg (X    : Bignum) return Bignum is
!      (-Sec_Stack_Bignums.Big_Neg (+X));
  
!    function Big_Abs (X    : Bignum) return Bignum is
!      (-Sec_Stack_Bignums.Big_Abs (+X));
  
!    function Big_EQ  (X, Y : Bignum) return Boolean is
!      (Sec_Stack_Bignums.Big_EQ (+X, +Y));
!    function Big_NE  (X, Y : Bignum) return Boolean is
!      (Sec_Stack_Bignums.Big_NE (+X, +Y));
!    function Big_GE  (X, Y : Bignum) return Boolean is
!      (Sec_Stack_Bignums.Big_GE (+X, +Y));
!    function Big_LE  (X, Y : Bignum) return Boolean is
!      (Sec_Stack_Bignums.Big_LE (+X, +Y));
!    function Big_GT  (X, Y : Bignum) return Boolean is
!      (Sec_Stack_Bignums.Big_GT (+X, +Y));
!    function Big_LT  (X, Y : Bignum) return Boolean is
!      (Sec_Stack_Bignums.Big_LT (+X, +Y));
  
!    function Bignum_In_LLI_Range (X : Bignum) return Boolean is
!      (Sec_Stack_Bignums.Bignum_In_LLI_Range (+X));
  
!    function To_Bignum (X : Long_Long_Integer) return Bignum is
!      (-Sec_Stack_Bignums.To_Bignum (X));
  
!    function From_Bignum (X : Bignum) return Long_Long_Integer is
!      (Sec_Stack_Bignums.From_Bignum (+X));
  
  end System.Bignums;
--- 29,149 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with Ada.Unchecked_Conversion;
+ with System.Generic_Bignums;
+ with System.Secondary_Stack;  use System.Secondary_Stack;
+ with System.Shared_Bignums;   use System.Shared_Bignums;
+ with System.Storage_Elements; use System.Storage_Elements;
  
  package body System.Bignums is
  
!    function Allocate_Bignum (D : Digit_Vector; Neg : Boolean) return Bignum;
!    --  Allocate Bignum value with the given contents
  
!    procedure Free_Bignum (X : in out Bignum) is null;
!    --  No op when using the secondary stack
  
!    function To_Bignum (X : aliased in out Bignum) return Bignum is (X);
  
!    ---------------------
!    -- Allocate_Bignum --
!    ---------------------
  
!    function Allocate_Bignum (D : Digit_Vector; Neg : Boolean) return Bignum is
!       Addr : aliased Address;
!    begin
!       --  Note: The approach used here is designed to avoid strict aliasing
!       --  warnings that appeared previously using unchecked conversion.
  
!       SS_Allocate (Addr, Storage_Offset (4 + 4 * D'Length));
  
!       declare
!          B : Bignum;
!          for B'Address use Addr'Address;
!          pragma Import (Ada, B);
  
!          BD : Bignum_Data (D'Length);
!          for BD'Address use Addr;
!          pragma Import (Ada, BD);
  
!          --  Expose a writable view of discriminant BD.Len so that we can
!          --  initialize it. We need to use the exact layout of the record
!          --  to ensure that the Length field has 24 bits as expected.
  
!          type Bignum_Data_Header is record
!             Len : Length;
!             Neg : Boolean;
!          end record;
  
!          for Bignum_Data_Header use record
!             Len at 0 range 0 .. 23;
!             Neg at 3 range 0 .. 7;
!          end record;
  
!          BDH : Bignum_Data_Header;
!          for BDH'Address use BD'Address;
!          pragma Import (Ada, BDH);
  
!          pragma Assert (BDH.Len'Size = BD.Len'Size);
  
!       begin
!          BDH.Len := D'Length;
!          BDH.Neg := Neg;
!          B.D := D;
!          return B;
!       end;
!    end Allocate_Bignum;
  
!    package Sec_Stack_Bignums is new System.Generic_Bignums
!      (Bignum, Allocate_Bignum, Free_Bignum, To_Bignum);
  
!    function Big_Add (X, Y : Bignum) return Bignum
!      renames Sec_Stack_Bignums.Big_Add;
! 
!    function Big_Sub (X, Y : Bignum) return Bignum
!      renames Sec_Stack_Bignums.Big_Sub;
! 
!    function Big_Mul (X, Y : Bignum) return Bignum
!      renames Sec_Stack_Bignums.Big_Mul;
! 
!    function Big_Div (X, Y : Bignum) return Bignum
!      renames Sec_Stack_Bignums.Big_Div;
! 
!    function Big_Exp (X, Y : Bignum) return Bignum
!      renames Sec_Stack_Bignums.Big_Exp;
! 
!    function Big_Mod (X, Y : Bignum) return Bignum
!      renames Sec_Stack_Bignums.Big_Mod;
! 
!    function Big_Rem (X, Y : Bignum) return Bignum
!      renames Sec_Stack_Bignums.Big_Rem;
! 
!    function Big_Neg (X : Bignum) return Bignum
!      renames Sec_Stack_Bignums.Big_Neg;
! 
!    function Big_Abs (X : Bignum) return Bignum
!      renames Sec_Stack_Bignums.Big_Abs;
! 
!    function Big_EQ  (X, Y : Bignum) return Boolean
!      renames Sec_Stack_Bignums.Big_EQ;
!    function Big_NE  (X, Y : Bignum) return Boolean
!      renames Sec_Stack_Bignums.Big_NE;
!    function Big_GE  (X, Y : Bignum) return Boolean
!      renames Sec_Stack_Bignums.Big_GE;
!    function Big_LE  (X, Y : Bignum) return Boolean
!      renames Sec_Stack_Bignums.Big_LE;
!    function Big_GT  (X, Y : Bignum) return Boolean
!      renames Sec_Stack_Bignums.Big_GT;
!    function Big_LT  (X, Y : Bignum) return Boolean
!      renames Sec_Stack_Bignums.Big_LT;
! 
!    function Bignum_In_LLI_Range (X : Bignum) return Boolean
!      renames Sec_Stack_Bignums.Bignum_In_LLI_Range;
! 
!    function To_Bignum (X : Long_Long_Integer) return Bignum
!      renames Sec_Stack_Bignums.To_Bignum;
! 
!    function From_Bignum (X : Bignum) return Long_Long_Integer
!      renames Sec_Stack_Bignums.From_Bignum;
  
  end System.Bignums;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-bignum.ads gcc-11.1.0/gcc/ada/libgnat/s-bignum.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-bignum.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-bignum.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2012-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2012-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 36,45 ****
  --  Note that we cannot use a straight instantiation of System.Generic_Bignums
  --  because the rtsfind mechanism is not ready to handle instantiations.
  
  package System.Bignums is
     pragma Preelaborate;
  
!    type Bignum is private;
  
     function Big_Add (X, Y : Bignum) return Bignum;  --  "+"
     function Big_Sub (X, Y : Bignum) return Bignum;  --  "-"
--- 36,47 ----
  --  Note that we cannot use a straight instantiation of System.Generic_Bignums
  --  because the rtsfind mechanism is not ready to handle instantiations.
  
+ with System.Shared_Bignums;
+ 
  package System.Bignums is
     pragma Preelaborate;
  
!    subtype Bignum is System.Shared_Bignums.Bignum;
  
     function Big_Add (X, Y : Bignum) return Bignum;  --  "+"
     function Big_Sub (X, Y : Bignum) return Bignum;  --  "-"
*************** package System.Bignums is
*** 77,84 ****
  
  private
  
-    type Bignum is new System.Address;
- 
     pragma Inline (Big_Add);
     pragma Inline (Big_Sub);
     pragma Inline (Big_Mul);
--- 79,84 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-bitfie.ads gcc-11.1.0/gcc/ada/libgnat/s-bitfie.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-bitfie.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-bitfie.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --               Copyright (C) 2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --               Copyright (C) 2019-2020, Free Software Foundation, Inc.    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Bitfields is
*** 47,52 ****
--- 47,58 ----
     pragma Provide_Shift_Operators (Val_2);
     type Val is mod 2**Val_Bits with Alignment => Val_Bytes;
  
+    --  ??? It turns out that enabling checks on the instantiation of
+    --  System.Bitfield_Utils.G makes a latent visibility bug appear on strict
+    --  alignment platforms related to alignment checks. Work around it by
+    --  suppressing these checks explicitly.
+ 
+    pragma Suppress (Alignment_Check);
     package Utils is new System.Bitfield_Utils.G (Val, Val_2);
  
     procedure Copy_Bitfield
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-bitops.adb gcc-11.1.0/gcc/ada/libgnat/s-bitops.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-bitops.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-bitops.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1996-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1996-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-bitops.ads gcc-11.1.0/gcc/ada/libgnat/s-bitops.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-bitops.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-bitops.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-bituti.adb gcc-11.1.0/gcc/ada/libgnat/s-bituti.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-bituti.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-bituti.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --               Copyright (C) 2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --               Copyright (C) 2019-2020, Free Software Foundation, Inc.    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Bitfield_Utils is
*** 317,322 ****
--- 317,323 ----
                   Get_Val_2 (S_Addr, S_Off, Initial_Size);
                 Initial_Val : constant Val :=
                   Get_Bitfield (Initial_Val_2, S_Off, Initial_Size);
+ 
              begin
                 Set_Bitfield
                   (Initial_Val, D_Addr, D_Off, Initial_Size);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-bituti.ads gcc-11.1.0/gcc/ada/libgnat/s-bituti.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-bituti.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-bituti.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --               Copyright (C) 2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --               Copyright (C) 2019-2020, Free Software Foundation, Inc.    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-boarop.ads gcc-11.1.0/gcc/ada/libgnat/s-boarop.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-boarop.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-boarop.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-boustr.adb gcc-11.1.0/gcc/ada/libgnat/s-boustr.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-boustr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-boustr.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2016-2019, AdaCore                   --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2016-2020, AdaCore                   --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-boustr.ads gcc-11.1.0/gcc/ada/libgnat/s-boustr.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-boustr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-boustr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2016-2019, AdaCore                   --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2016-2020, AdaCore                   --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-bytswa.ads gcc-11.1.0/gcc/ada/libgnat/s-bytswa.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-bytswa.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-bytswa.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,45 ****
  --  (supporting alternative byte ordering), and by the GNAT.Byte_Swapping run
  --  time package which provides user level routines for byte swapping.
  
  package System.Byte_Swapping is
  
     pragma Pure;
  
!    type U16 is mod 2**16;
!    type U32 is mod 2**32;
!    type U64 is mod 2**64;
  
     function Bswap_16 (X : U16) return U16;
     pragma Import (Intrinsic, Bswap_16, "__builtin_bswap16");
--- 33,48 ----
  --  (supporting alternative byte ordering), and by the GNAT.Byte_Swapping run
  --  time package which provides user level routines for byte swapping.
  
+ with Interfaces;
+ 
  package System.Byte_Swapping is
  
     pragma Pure;
  
!    subtype U16  is Interfaces.Unsigned_16;
!    subtype U32  is Interfaces.Unsigned_32;
!    subtype U64  is Interfaces.Unsigned_64;
!    subtype U128 is Interfaces.Unsigned_128;
  
     function Bswap_16 (X : U16) return U16;
     pragma Import (Intrinsic, Bswap_16, "__builtin_bswap16");
*************** package System.Byte_Swapping is
*** 50,53 ****
--- 53,59 ----
     function Bswap_64 (X : U64) return U64;
     pragma Import (Intrinsic, Bswap_64, "__builtin_bswap64");
  
+    function Bswap_128 (X : U128) return U128;
+    pragma Import (Intrinsic, Bswap_128, "__builtin_bswap128");
+ 
  end System.Byte_Swapping;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-carsi8.adb gcc-11.1.0/gcc/ada/libgnat/s-carsi8.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-carsi8.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-carsi8.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Compare_Array_Signed
*** 97,102 ****
--- 97,109 ----
              end if;
           end loop;
  
+          pragma Assert (Left_Len >= Bytes_Compared_As_Words);
+          pragma Assert (Right_Len >= Bytes_Compared_As_Words);
+          --  Left_Len and Right_Len are always greater or equal to
+          --  Bytes_Compared_As_Words because:
+          --    * Compare_Len is min (Left_Len, Right_Len)
+          --    * Words_To_Compare = Compare_Len / 4
+          --    * Bytes_Compared_As_Words = Words_To_Compare * 4
           return Compare_Array_S8_Unaligned
                    (AddA (Left,  Address (Bytes_Compared_As_Words)),
                     AddA (Right, Address (Bytes_Compared_As_Words)),
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-carsi8.ads gcc-11.1.0/gcc/ada/libgnat/s-carsi8.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-carsi8.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-carsi8.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-carun8.adb gcc-11.1.0/gcc/ada/libgnat/s-carun8.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-carun8.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-carun8.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Compare_Array_Unsign
*** 98,103 ****
--- 98,110 ----
              end if;
           end loop;
  
+          pragma Assert (Left_Len >= Bytes_Compared_As_Words);
+          pragma Assert (Right_Len >= Bytes_Compared_As_Words);
+          --  Left_Len and Right_Len are always greater or equal to
+          --  Bytes_Compared_As_Words because:
+          --    * Compare_Len is min (Left_Len, Right_Len)
+          --    * Words_To_Compare = Compare_Len / 4
+          --    * Bytes_Compared_As_Words = Words_To_Compare * 4
           return Compare_Array_U8_Unaligned
                    (AddA (Left,  Address (Bytes_Compared_As_Words)),
                     AddA (Right, Address (Bytes_Compared_As_Words)),
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-carun8.ads gcc-11.1.0/gcc/ada/libgnat/s-carun8.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-carun8.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-carun8.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-casi128.adb gcc-11.1.0/gcc/ada/libgnat/s-casi128.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-casi128.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-casi128.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,116 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                    GNAT RUN-TIME LIBRARY COMPONENTS                      --
+ --                                                                          --
+ --       S Y S T E M . C O M P A R E _ A R R A Y _ S I G N E D _ 1 2 8      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Address_Operations; use System.Address_Operations;
+ 
+ with Ada.Unchecked_Conversion;
+ 
+ package body System.Compare_Array_Signed_128 is
+ 
+    type Word is range -2**127 .. 2**127 - 1;
+    for Word'Size use 128;
+    --  Used to process operands by 128-bit words
+ 
+    type Uword is new Word;
+    for Uword'Alignment use 1;
+    --  Used to process operands when unaligned
+ 
+    type WP is access Word;
+    type UP is access Uword;
+ 
+    function W is new Ada.Unchecked_Conversion (Address, WP);
+    function U is new Ada.Unchecked_Conversion (Address, UP);
+ 
+    ------------------------
+    -- Compare_Array_S128 --
+    ------------------------
+ 
+    function Compare_Array_S128
+      (Left      : System.Address;
+       Right     : System.Address;
+       Left_Len  : Natural;
+       Right_Len : Natural) return Integer
+    is
+       Clen : Natural := Natural'Min (Left_Len, Right_Len);
+       --  Number of elements left to compare
+ 
+       L : Address := Left;
+       R : Address := Right;
+       --  Pointers to next elements to compare
+ 
+    begin
+       --  Case of going by aligned quadruple words
+ 
+       if ModA (OrA (Left, Right), 16) = 0 then
+          while Clen /= 0 loop
+             if W (L).all /= W (R).all then
+                if W (L).all > W (R).all then
+                   return +1;
+                else
+                   return -1;
+                end if;
+             end if;
+ 
+             Clen := Clen - 1;
+             L := AddA (L, 16);
+             R := AddA (R, 16);
+          end loop;
+ 
+       --  Case of going by unaligned quadruple words
+ 
+       else
+          while Clen /= 0 loop
+             if U (L).all /= U (R).all then
+                if U (L).all > U (R).all then
+                   return +1;
+                else
+                   return -1;
+                end if;
+             end if;
+ 
+             Clen := Clen - 1;
+             L := AddA (L, 16);
+             R := AddA (R, 16);
+          end loop;
+       end if;
+ 
+       --  Here if common section equal, result decided by lengths
+ 
+       if Left_Len = Right_Len then
+          return 0;
+       elsif Left_Len > Right_Len then
+          return +1;
+       else
+          return -1;
+       end if;
+    end Compare_Array_S128;
+ 
+ end System.Compare_Array_Signed_128;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-casi128.ads gcc-11.1.0/gcc/ada/libgnat/s-casi128.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-casi128.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-casi128.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,52 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                    GNAT RUN-TIME LIBRARY COMPONENTS                      --
+ --                                                                          --
+ --       S Y S T E M . C O M P A R E _ A R R A Y _ S I G N E D _ 1 2 8      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains functions for runtime comparisons on arrays whose
+ --  elements are 128-bit discrete type values to be treated as signed.
+ 
+ package System.Compare_Array_Signed_128 is
+ 
+    --  Note: although the functions in this package are in a sense Pure, the
+    --  package cannot be declared as Pure, since the arguments are addresses,
+    --  not the data, and the result is not pure wrt the address values.
+ 
+    function Compare_Array_S128
+      (Left      : System.Address;
+       Right     : System.Address;
+       Left_Len  : Natural;
+       Right_Len : Natural) return Integer;
+    --  Compare the array starting at address Left of length Left_Len
+    --  with the array starting at address Right of length Right_Len.
+    --  The comparison is in the normal Ada semantic sense of array
+    --  comparison. The result is -1,0,+1 for Left<Right, Left=Right,
+    --  Left>Right respectively.
+ 
+ end System.Compare_Array_Signed_128;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-casi16.adb gcc-11.1.0/gcc/ada/libgnat/s-casi16.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-casi16.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-casi16.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-casi16.ads gcc-11.1.0/gcc/ada/libgnat/s-casi16.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-casi16.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-casi16.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-casi32.adb gcc-11.1.0/gcc/ada/libgnat/s-casi32.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-casi32.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-casi32.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-casi32.ads gcc-11.1.0/gcc/ada/libgnat/s-casi32.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-casi32.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-casi32.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-casi64.adb gcc-11.1.0/gcc/ada/libgnat/s-casi64.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-casi64.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-casi64.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-casi64.ads gcc-11.1.0/gcc/ada/libgnat/s-casi64.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-casi64.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-casi64.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-casuti.adb gcc-11.1.0/gcc/ada/libgnat/s-casuti.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-casuti.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-casuti.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-casuti.ads gcc-11.1.0/gcc/ada/libgnat/s-casuti.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-casuti.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-casuti.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-caun128.adb gcc-11.1.0/gcc/ada/libgnat/s-caun128.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-caun128.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-caun128.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,115 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                    GNAT RUN-TIME LIBRARY COMPONENTS                      --
+ --                                                                          --
+ --     S Y S T E M . C O M P A R E _ A R R A Y _ U N S I G N E D _ 1 2 8    --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Address_Operations; use System.Address_Operations;
+ 
+ with Ada.Unchecked_Conversion;
+ 
+ package body System.Compare_Array_Unsigned_128 is
+ 
+    type Word is mod 2 ** 128;
+    --  Used to process operands by 128-bit words
+ 
+    type Uword is new Word;
+    for Uword'Alignment use 1;
+    --  Used to process operands when unaligned
+ 
+    type WP is access Word;
+    type UP is access Uword;
+ 
+    function W is new Ada.Unchecked_Conversion (Address, WP);
+    function U is new Ada.Unchecked_Conversion (Address, UP);
+ 
+    ------------------------
+    -- Compare_Array_U128 --
+    ------------------------
+ 
+    function Compare_Array_U128
+      (Left      : System.Address;
+       Right     : System.Address;
+       Left_Len  : Natural;
+       Right_Len : Natural) return Integer
+    is
+       Clen : Natural := Natural'Min (Left_Len, Right_Len);
+       --  Number of elements left to compare
+ 
+       L : Address := Left;
+       R : Address := Right;
+       --  Pointers to next elements to compare
+ 
+    begin
+       --  Case of going by aligned quadruple words
+ 
+       if ModA (OrA (Left, Right), 16) = 0 then
+          while Clen /= 0 loop
+             if W (L).all /= W (R).all then
+                if W (L).all > W (R).all then
+                   return +1;
+                else
+                   return -1;
+                end if;
+             end if;
+ 
+             Clen := Clen - 1;
+             L := AddA (L, 16);
+             R := AddA (R, 16);
+          end loop;
+ 
+       --  Case of going by unaligned quadruple words
+ 
+       else
+          while Clen /= 0 loop
+             if U (L).all /= U (R).all then
+                if U (L).all > U (R).all then
+                   return +1;
+                else
+                   return -1;
+                end if;
+             end if;
+ 
+             Clen := Clen - 1;
+             L := AddA (L, 16);
+             R := AddA (R, 16);
+          end loop;
+       end if;
+ 
+       --  Here if common section equal, result decided by lengths
+ 
+       if Left_Len = Right_Len then
+          return 0;
+       elsif Left_Len > Right_Len then
+          return +1;
+       else
+          return -1;
+       end if;
+    end Compare_Array_U128;
+ 
+ end System.Compare_Array_Unsigned_128;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-caun128.ads gcc-11.1.0/gcc/ada/libgnat/s-caun128.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-caun128.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-caun128.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,52 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                    GNAT RUN-TIME LIBRARY COMPONENTS                      --
+ --                                                                          --
+ --     S Y S T E M . C O M P A R E _ A R R A Y _ U N S I G N E D _ 1 2 8    --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains functions for runtime comparisons on arrays whose
+ --  elements are 128-bit discrete type values to be treated as unsigned.
+ 
+ package System.Compare_Array_Unsigned_128 is
+ 
+    --  Note: although the functions in this package are in a sense Pure, the
+    --  package cannot be declared as Pure, since the arguments are addresses,
+    --  not the data, and the result is not pure wrt the address values.
+ 
+    function Compare_Array_U128
+      (Left      : System.Address;
+       Right     : System.Address;
+       Left_Len  : Natural;
+       Right_Len : Natural) return Integer;
+    --  Compare the array starting at address Left of length Left_Len
+    --  with the array starting at address Right of length Right_Len.
+    --  The comparison is in the normal Ada semantic sense of array
+    --  comparison. The result is -1,0,+1 for Left<Right, Left=Right,
+    --  Left>Right respectively.
+ 
+ end System.Compare_Array_Unsigned_128;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-caun16.adb gcc-11.1.0/gcc/ada/libgnat/s-caun16.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-caun16.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-caun16.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-caun16.ads gcc-11.1.0/gcc/ada/libgnat/s-caun16.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-caun16.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-caun16.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-caun32.adb gcc-11.1.0/gcc/ada/libgnat/s-caun32.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-caun32.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-caun32.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-caun32.ads gcc-11.1.0/gcc/ada/libgnat/s-caun32.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-caun32.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-caun32.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-caun64.adb gcc-11.1.0/gcc/ada/libgnat/s-caun64.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-caun64.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-caun64.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-caun64.ads gcc-11.1.0/gcc/ada/libgnat/s-caun64.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-caun64.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-caun64.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-chepoo.ads gcc-11.1.0/gcc/ada/libgnat/s-chepoo.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-chepoo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-chepoo.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-commun.adb gcc-11.1.0/gcc/ada/libgnat/s-commun.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-commun.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-commun.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-commun.ads gcc-11.1.0/gcc/ada/libgnat/s-commun.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-commun.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-commun.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-conca2.adb gcc-11.1.0/gcc/ada/libgnat/s-conca2.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-conca2.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-conca2.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-conca2.ads gcc-11.1.0/gcc/ada/libgnat/s-conca2.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-conca2.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-conca2.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-conca3.adb gcc-11.1.0/gcc/ada/libgnat/s-conca3.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-conca3.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-conca3.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-conca3.ads gcc-11.1.0/gcc/ada/libgnat/s-conca3.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-conca3.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-conca3.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-conca4.adb gcc-11.1.0/gcc/ada/libgnat/s-conca4.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-conca4.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-conca4.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-conca4.ads gcc-11.1.0/gcc/ada/libgnat/s-conca4.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-conca4.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-conca4.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-conca5.adb gcc-11.1.0/gcc/ada/libgnat/s-conca5.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-conca5.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-conca5.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-conca5.ads gcc-11.1.0/gcc/ada/libgnat/s-conca5.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-conca5.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-conca5.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-conca6.adb gcc-11.1.0/gcc/ada/libgnat/s-conca6.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-conca6.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-conca6.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-conca6.ads gcc-11.1.0/gcc/ada/libgnat/s-conca6.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-conca6.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-conca6.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-conca7.adb gcc-11.1.0/gcc/ada/libgnat/s-conca7.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-conca7.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-conca7.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-conca7.ads gcc-11.1.0/gcc/ada/libgnat/s-conca7.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-conca7.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-conca7.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-conca8.adb gcc-11.1.0/gcc/ada/libgnat/s-conca8.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-conca8.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-conca8.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-conca8.ads gcc-11.1.0/gcc/ada/libgnat/s-conca8.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-conca8.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-conca8.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-conca9.adb gcc-11.1.0/gcc/ada/libgnat/s-conca9.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-conca9.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-conca9.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-conca9.ads gcc-11.1.0/gcc/ada/libgnat/s-conca9.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-conca9.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-conca9.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-crc32.adb gcc-11.1.0/gcc/ada/libgnat/s-crc32.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-crc32.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-crc32.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-crc32.ads gcc-11.1.0/gcc/ada/libgnat/s-crc32.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-crc32.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-crc32.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-crtl.ads gcc-11.1.0/gcc/ada/libgnat/s-crtl.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-crtl.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-crtl.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-dfmkio.ads gcc-11.1.0/gcc/ada/libgnat/s-dfmkio.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-dfmkio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-dfmkio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2018-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2018-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-dfmopr.ads gcc-11.1.0/gcc/ada/libgnat/s-dfmopr.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-dfmopr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-dfmopr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --              Copyright (C) 2018-2019, Free Software Foundation, Inc.     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --              Copyright (C) 2018-2020, Free Software Foundation, Inc.     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-dgmgop.ads gcc-11.1.0/gcc/ada/libgnat/s-dgmgop.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-dgmgop.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-dgmgop.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2011-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2011-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-diflio.adb gcc-11.1.0/gcc/ada/libgnat/s-diflio.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-diflio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-diflio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-diflio.ads gcc-11.1.0/gcc/ada/libgnat/s-diflio.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-diflio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-diflio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-diflmk.ads gcc-11.1.0/gcc/ada/libgnat/s-diflmk.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-diflmk.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-diflmk.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2018-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2018-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-digemk.ads gcc-11.1.0/gcc/ada/libgnat/s-digemk.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-digemk.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-digemk.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-diinio.adb gcc-11.1.0/gcc/ada/libgnat/s-diinio.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-diinio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-diinio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-diinio.ads gcc-11.1.0/gcc/ada/libgnat/s-diinio.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-diinio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-diinio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-dilomk.ads gcc-11.1.0/gcc/ada/libgnat/s-dilomk.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-dilomk.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-dilomk.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2018-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2018-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-dim.ads gcc-11.1.0/gcc/ada/libgnat/s-dim.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-dim.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-dim.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2012-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2012-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-dimkio.ads gcc-11.1.0/gcc/ada/libgnat/s-dimkio.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-dimkio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-dimkio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2011-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2011-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-dimmks.ads gcc-11.1.0/gcc/ada/libgnat/s-dimmks.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-dimmks.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-dimmks.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-direio.adb gcc-11.1.0/gcc/ada/libgnat/s-direio.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-direio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-direio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-direio.ads gcc-11.1.0/gcc/ada/libgnat/s-direio.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-direio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-direio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-dlmkio.ads gcc-11.1.0/gcc/ada/libgnat/s-dlmkio.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-dlmkio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-dlmkio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2018-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2018-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-dlmopr.ads gcc-11.1.0/gcc/ada/libgnat/s-dlmopr.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-dlmopr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-dlmopr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --              Copyright (C) 2018-2019, Free Software Foundation, Inc.     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --              Copyright (C) 2018-2020, Free Software Foundation, Inc.     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-dmotpr.ads gcc-11.1.0/gcc/ada/libgnat/s-dmotpr.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-dmotpr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-dmotpr.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2011-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2011-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-dsaser.ads gcc-11.1.0/gcc/ada/libgnat/s-dsaser.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-dsaser.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-dsaser.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2006-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2006-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-dwalin.adb gcc-11.1.0/gcc/ada/libgnat/s-dwalin.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-dwalin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-dwalin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,38 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we can get
- --  elaboration circularities when polling is turned on
- 
  with Ada.Characters.Handling;
  with Ada.Exceptions.Traceback; use Ada.Exceptions.Traceback;
  with Ada.Unchecked_Deallocation;
--- 29,34 ----
*************** package body System.Dwarf_Lines is
*** 440,445 ****
--- 436,445 ----
          or else Info_Sec = Null_Section
          or else Aranges_Sec = Null_Section
        then
+          pragma Annotate
+            (CodePeer, False_Positive,
+             "test always true", "codepeer got confused");
+ 
           C.Has_Debug := False;
           return;
        end if;
*************** package body System.Dwarf_Lines is
*** 883,888 ****
--- 883,889 ----
        Success     :    out Boolean)
     is
     begin
+       Info_Offset := 0;
        Seek (C.Aranges, 0);
  
        while Tell (C.Aranges) < Length (C.Aranges) loop
*************** package body System.Dwarf_Lines is
*** 905,910 ****
--- 906,912 ----
              end;
           end loop;
        end loop;
+ 
        Success := False;
     end Aranges_Lookup;
  
*************** package body System.Dwarf_Lines is
*** 1028,1033 ****
--- 1030,1036 ----
        Has_Child     : uint8;
        pragma Unreferenced (Has_Child);
     begin
+       Line_Offset := 0;
        Success := False;
  
        Seek (C.Info, Info_Offset);
*************** package body System.Dwarf_Lines is
*** 1119,1125 ****
        Version     : uint16;
        Sz          : uint8;
     begin
!       Success := False;
  
        Read_Initial_Length (C.Aranges, Unit_Length, Is64);
  
--- 1122,1129 ----
        Version     : uint16;
        Sz          : uint8;
     begin
!       Success     := False;
!       Info_Offset := 0;
  
        Read_Initial_Length (C.Aranges, Unit_Length, Is64);
  
*************** package body System.Dwarf_Lines is
*** 1407,1412 ****
--- 1411,1417 ----
        Success      : Boolean;
        Done         : Boolean;
        S            : Object_Symbol;
+ 
     begin
        --  Initialize result
        Dir_Name    := null;
*************** package body System.Dwarf_Lines is
*** 1422,1427 ****
--- 1427,1434 ----
           begin
              First := C.Cache'First;
              Last  := C.Cache'Last;
+             Mid   := First;
+ 
              while First <= Last loop
                 Mid := First + (Last - First) / 2;
                 if Addr_Off < C.Cache (Mid).First then
*************** package body System.Dwarf_Lines is
*** 1432,1437 ****
--- 1439,1445 ----
                    exit;
                 end if;
              end loop;
+ 
              if Addr_Off >= C.Cache (Mid).First
                and then Addr_Off < C.Cache (Mid).First + C.Cache (Mid).Size
              then
*************** package body System.Dwarf_Lines is
*** 1474,1479 ****
--- 1482,1488 ----
        C.Next_Prologue := 0;
        Initialize_State_Machine (C);
        Parse_Prologue (C);
+       Previous_Row.Line := 0;
  
        --  Advance to the first entry
  
*************** package body System.Dwarf_Lines is
*** 1535,1541 ****
       (Cin          :        Dwarf_Context;
        Traceback    :        AET.Tracebacks_Array;
        Suppress_Hex :        Boolean;
!       Symbol_Found : in out Boolean;
        Res          : in out System.Bounded_Strings.Bounded_String)
     is
        use Ada.Characters.Handling;
--- 1544,1550 ----
       (Cin          :        Dwarf_Context;
        Traceback    :        AET.Tracebacks_Array;
        Suppress_Hex :        Boolean;
!       Symbol_Found :    out Boolean;
        Res          : in out System.Bounded_Strings.Bounded_String)
     is
        use Ada.Characters.Handling;
*************** package body System.Dwarf_Lines is
*** 1573,1578 ****
--- 1582,1594 ----
              Subprg_Name,
              Line_Num);
  
+          --  If we're not requested to suppress hex addresses, emit it now.
+ 
+          if not Suppress_Hex then
+             Append_Address (Res, Addr_In_Traceback);
+             Append (Res, ' ');
+          end if;
+ 
           if File_Name /= null then
              declare
                 Last   : constant Natural := String_Length (File_Name);
*************** package body System.Dwarf_Lines is
*** 1617,1642 ****
                         (Res,
                          String (Subprg_Name.Ptr (Off .. Subprg_Name.Len)));
                    end if;
!                   Append (Res, ' ');
                 end if;
  
!                Append (Res, "at ");
                 Append (Res, String (File_Name (1 .. Last)));
                 Append (Res, ':');
                 Append (Res, Line_Image (2 .. Line_Image'Last));
              end;
           else
-             if Suppress_Hex then
-                Append (Res, "...");
-             else
-                Append_Address (Res, Addr_In_Traceback);
-             end if;
- 
              if Subprg_Name.Len > 0 then
                 Off := Strip_Leading_Char (C.Obj.all, Subprg_Name);
  
-                Append (Res, ' ');
                 Append (Res, String (Subprg_Name.Ptr (Off .. Subprg_Name.Len)));
              end if;
  
              Append (Res, " at ???");
--- 1633,1654 ----
                         (Res,
                          String (Subprg_Name.Ptr (Off .. Subprg_Name.Len)));
                    end if;
!                else
!                   Append (Res, "???");
                 end if;
  
!                Append (Res, " at ");
                 Append (Res, String (File_Name (1 .. Last)));
                 Append (Res, ':');
                 Append (Res, Line_Image (2 .. Line_Image'Last));
              end;
           else
              if Subprg_Name.Len > 0 then
                 Off := Strip_Leading_Char (C.Obj.all, Subprg_Name);
  
                 Append (Res, String (Subprg_Name.Ptr (Off .. Subprg_Name.Len)));
+             else
+                Append (Res, "???");
              end if;
  
              Append (Res, " at ???");
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-dwalin.ads gcc-11.1.0/gcc/ada/libgnat/s-dwalin.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-dwalin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-dwalin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 38,47 ****
  --  size is a consideration it's possible to strip all other .debug sections,
  --  which will decrease the size of the object significantly.
  
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we can get
- --  elaboration circularities when polling is turned on
- 
  with Ada.Exceptions.Traceback;
  
  with System.Object_Reader;
--- 38,43 ----
*************** package System.Dwarf_Lines is
*** 93,99 ****
       (Cin          :        Dwarf_Context;
        Traceback    :        AET.Tracebacks_Array;
        Suppress_Hex :        Boolean;
!       Symbol_Found : in out Boolean;
        Res          : in out System.Bounded_Strings.Bounded_String);
     --  Generate a string for a traceback suitable for displaying to the user.
     --  If one or more symbols are found, Symbol_Found is set to True. This
--- 89,95 ----
       (Cin          :        Dwarf_Context;
        Traceback    :        AET.Tracebacks_Array;
        Suppress_Hex :        Boolean;
!       Symbol_Found :    out Boolean;
        Res          : in out System.Bounded_Strings.Bounded_String);
     --  Generate a string for a traceback suitable for displaying to the user.
     --  If one or more symbols are found, Symbol_Found is set to True. This
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-elaall.adb gcc-11.1.0/gcc/ada/libgnat/s-elaall.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-elaall.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-elaall.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2014-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2014-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-elaall.ads gcc-11.1.0/gcc/ada/libgnat/s-elaall.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-elaall.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-elaall.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2014-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2014-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-excdeb.adb gcc-11.1.0/gcc/ada/libgnat/s-excdeb.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-excdeb.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-excdeb.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2006-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2006-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-excdeb.ads gcc-11.1.0/gcc/ada/libgnat/s-excdeb.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-excdeb.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-excdeb.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-except.adb gcc-11.1.0/gcc/ada/libgnat/s-except.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-except.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-except.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2006-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2006-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-except.ads gcc-11.1.0/gcc/ada/libgnat/s-except.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-except.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-except.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-excmac__arm.adb gcc-11.1.0/gcc/ada/libgnat/s-excmac__arm.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-excmac__arm.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-excmac__arm.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2013-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2013-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-excmac__arm.ads gcc-11.1.0/gcc/ada/libgnat/s-excmac__arm.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-excmac__arm.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-excmac__arm.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2013-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2013-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-excmac__gcc.adb gcc-11.1.0/gcc/ada/libgnat/s-excmac__gcc.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-excmac__gcc.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-excmac__gcc.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2013-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2013-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-excmac__gcc.ads gcc-11.1.0/gcc/ada/libgnat/s-excmac__gcc.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-excmac__gcc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-excmac__gcc.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2013-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2013-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-exctab.adb gcc-11.1.0/gcc/ada/libgnat/s-exctab.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-exctab.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-exctab.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-exctab.ads gcc-11.1.0/gcc/ada/libgnat/s-exctab.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-exctab.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-exctab.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-exctra.adb gcc-11.1.0/gcc/ada/libgnat/s-exctra.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-exctra.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-exctra.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-exctra.ads gcc-11.1.0/gcc/ada/libgnat/s-exctra.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-exctra.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-exctra.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-exnint.adb gcc-11.1.0/gcc/ada/libgnat/s-exnint.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-exnint.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-exnint.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,70 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! package body System.Exn_Int is
! 
!    -----------------
!    -- Exn_Integer --
!    -----------------
! 
!    function Exn_Integer (Left : Integer; Right : Natural) return Integer is
!       pragma Suppress (Division_Check);
!       pragma Suppress (Overflow_Check);
! 
!       Result : Integer := 1;
!       Factor : Integer := Left;
!       Exp    : Natural := Right;
! 
!    begin
!       --  We use the standard logarithmic approach, Exp gets shifted right
!       --  testing successive low order bits and Factor is the value of the
!       --  base raised to the next power of 2.
! 
!       --  Note: it is not worth special casing base values -1, 0, +1 since
!       --  the expander does this when the base is a literal, and other cases
!       --  will be extremely rare.
! 
!       if Exp /= 0 then
!          loop
!             if Exp rem 2 /= 0 then
!                Result := Result * Factor;
!             end if;
! 
!             Exp := Exp / 2;
!             exit when Exp = 0;
!             Factor := Factor * Factor;
!          end loop;
!       end if;
! 
!       return Result;
!    end Exn_Integer;
  
! end System.Exn_Int;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-exnint.ads gcc-11.1.0/gcc/ada/libgnat/s-exnint.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-exnint.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-exnint.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,39 ****
  
  --  Integer exponentiation (checks off)
  
  package System.Exn_Int is
-    pragma Pure;
  
!    function Exn_Integer (Left : Integer; Right : Natural) return Integer;
  
  end System.Exn_Int;
--- 31,41 ----
  
  --  Integer exponentiation (checks off)
  
+ with System.Exponn;
+ 
  package System.Exn_Int is
  
!    function Exn_Integer is new Exponn (Integer);
!    pragma Pure_Function (Exn_Integer);
  
  end System.Exn_Int;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-exnllf.adb gcc-11.1.0/gcc/ada/libgnat/s-exnllf.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-exnllf.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-exnllf.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-exnllf.ads gcc-11.1.0/gcc/ada/libgnat/s-exnllf.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-exnllf.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-exnllf.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-exnlli.adb gcc-11.1.0/gcc/ada/libgnat/s-exnlli.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-exnlli.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-exnlli.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,74 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! package body System.Exn_LLI is
! 
!    ---------------------------
!    -- Exn_Long_Long_Integer --
!    ---------------------------
! 
!    function Exn_Long_Long_Integer
!      (Left  : Long_Long_Integer;
!       Right : Natural)
!       return  Long_Long_Integer
!    is
!       pragma Suppress (Division_Check);
!       pragma Suppress (Overflow_Check);
! 
!       Result : Long_Long_Integer := 1;
!       Factor : Long_Long_Integer := Left;
!       Exp    : Natural := Right;
! 
!    begin
!       --  We use the standard logarithmic approach, Exp gets shifted right
!       --  testing successive low order bits and Factor is the value of the
!       --  base raised to the next power of 2.
! 
!       --  Note: it is not worth special casing base values -1, 0, +1 since
!       --  the expander does this when the base is a literal, and other cases
!       --  will be extremely rare.
! 
!       if Exp /= 0 then
!          loop
!             if Exp rem 2 /= 0 then
!                Result := Result * Factor;
!             end if;
! 
!             Exp := Exp / 2;
!             exit when Exp = 0;
!             Factor := Factor * Factor;
!          end loop;
!       end if;
! 
!       return Result;
!    end Exn_Long_Long_Integer;
  
! end System.Exn_LLI;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-exnlli.ads gcc-11.1.0/gcc/ada/libgnat/s-exnlli.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-exnlli.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-exnlli.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,42 ****
  
  --  Long_Long_Integer exponentiation (checks off)
  
  package System.Exn_LLI is
-    pragma Pure;
  
!    function Exn_Long_Long_Integer
!      (Left  : Long_Long_Integer;
!       Right : Natural)
!       return  Long_Long_Integer;
  
  end System.Exn_LLI;
--- 31,41 ----
  
  --  Long_Long_Integer exponentiation (checks off)
  
+ with System.Exponn;
+ 
  package System.Exn_LLI is
  
!    function Exn_Long_Long_Integer is new Exponn (Long_Long_Integer);
!    pragma Pure_Function (Exn_Long_Long_Integer);
  
  end System.Exn_LLI;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-exnllli.ads gcc-11.1.0/gcc/ada/libgnat/s-exnllli.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-exnllli.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-exnllli.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,41 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                      S Y S T E M . E X N _ L L L I                       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Long_Long_Long_Integer exponentiation (checks off)
+ 
+ with System.Exponn;
+ 
+ package System.Exn_LLLI is
+ 
+    function Exn_Long_Long_Long_Integer is new Exponn (Long_Long_Long_Integer);
+    pragma Pure_Function (Exn_Long_Long_Long_Integer);
+ 
+ end System.Exn_LLLI;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-expint.adb gcc-11.1.0/gcc/ada/libgnat/s-expint.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-expint.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-expint.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,83 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! package body System.Exp_Int is
! 
!    -----------------
!    -- Exp_Integer --
!    -----------------
! 
!    --  Note that negative exponents get a constraint error because the
!    --  subtype of the Right argument (the exponent) is Natural.
! 
!    function Exp_Integer
!      (Left  : Integer;
!       Right : Natural)
!       return  Integer
!    is
!       Result : Integer := 1;
!       Factor : Integer := Left;
!       Exp    : Natural := Right;
! 
!    begin
!       --  We use the standard logarithmic approach, Exp gets shifted right
!       --  testing successive low order bits and Factor is the value of the
!       --  base raised to the next power of 2.
! 
!       --  Note: it is not worth special casing base values -1, 0, +1 since
!       --  the expander does this when the base is a literal, and other cases
!       --  will be extremely rare.
! 
!       if Exp /= 0 then
!          loop
!             if Exp rem 2 /= 0 then
!                declare
!                   pragma Unsuppress (All_Checks);
!                begin
!                   Result := Result * Factor;
!                end;
!             end if;
! 
!             Exp := Exp / 2;
!             exit when Exp = 0;
! 
!             declare
!                pragma Unsuppress (All_Checks);
!             begin
!                Factor := Factor * Factor;
!             end;
!          end loop;
!       end if;
! 
!       return Result;
!    end Exp_Integer;
  
! end System.Exp_Int;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-expint.ads gcc-11.1.0/gcc/ada/libgnat/s-expint.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-expint.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-expint.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,42 ****
  
  --  Integer exponentiation (checks on)
  
  package System.Exp_Int is
-    pragma Pure;
  
!    function Exp_Integer
!      (Left  : Integer;
!       Right : Natural)
!       return  Integer;
  
  end System.Exp_Int;
--- 31,41 ----
  
  --  Integer exponentiation (checks on)
  
+ with System.Expont;
+ 
  package System.Exp_Int is
  
!    function Exp_Integer is new Expont (Integer);
!    pragma Pure_Function (Exp_Integer);
  
  end System.Exp_Int;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-explli.adb gcc-11.1.0/gcc/ada/libgnat/s-explli.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-explli.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-explli.adb	Tue Apr 27 10:00:12 2021
***************
*** 2,12 ****
  --                                                                          --
  --                         GNAT RUN-TIME COMPONENTS                         --
  --                                                                          --
! --                        S Y S T E M . E X P L L I                         --
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 2,12 ----
  --                                                                          --
  --                         GNAT RUN-TIME COMPONENTS                         --
  --                                                                          --
! --                       S Y S T E M . E X P _ L L I                        --
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,83 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! package body System.Exp_LLI is
! 
!    ---------------------------
!    -- Exp_Long_Long_Integer --
!    ---------------------------
! 
!    --  Note that negative exponents get a constraint error because the
!    --  subtype of the Right argument (the exponent) is Natural.
! 
!    function Exp_Long_Long_Integer
!      (Left  : Long_Long_Integer;
!       Right : Natural)
!       return  Long_Long_Integer
!    is
!       Result : Long_Long_Integer := 1;
!       Factor : Long_Long_Integer := Left;
!       Exp    : Natural := Right;
! 
!    begin
!       --  We use the standard logarithmic approach, Exp gets shifted right
!       --  testing successive low order bits and Factor is the value of the
!       --  base raised to the next power of 2.
! 
!       --  Note: it is not worth special casing base values -1, 0, +1 since
!       --  the expander does this when the base is a literal, and other cases
!       --  will be extremely rare.
! 
!       if Exp /= 0 then
!          loop
!             if Exp rem 2 /= 0 then
!                declare
!                   pragma Unsuppress (All_Checks);
!                begin
!                   Result := Result * Factor;
!                end;
!             end if;
! 
!             Exp := Exp / 2;
!             exit when Exp = 0;
! 
!             declare
!                pragma Unsuppress (All_Checks);
!             begin
!                Factor := Factor * Factor;
!             end;
!          end loop;
!       end if;
! 
!       return Result;
!    end Exp_Long_Long_Integer;
  
! end System.Exp_LLI;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-explli.ads gcc-11.1.0/gcc/ada/libgnat/s-explli.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-explli.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-explli.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,42 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  Long_Long_Integer exponentiation
  
  package System.Exp_LLI is
-    pragma Pure;
  
!    function Exp_Long_Long_Integer
!      (Left  : Long_Long_Integer;
!       Right : Natural)
!       return  Long_Long_Integer;
  
  end System.Exp_LLI;
--- 29,41 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  Long_Long_Integer exponentiation (checks on)
! 
! with System.Expont;
  
  package System.Exp_LLI is
  
!    function Exp_Long_Long_Integer is new Expont (Long_Long_Integer);
!    pragma Pure_Function (Exp_Long_Long_Integer);
  
  end System.Exp_LLI;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-expllli.ads gcc-11.1.0/gcc/ada/libgnat/s-expllli.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-expllli.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-expllli.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,41 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                      S Y S T E M . E X P _ L L L I                       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Long_Long_Long_Integer exponentiation (checks on)
+ 
+ with System.Expont;
+ 
+ package System.Exp_LLLI is
+ 
+    function Exp_Long_Long_Long_Integer is new Expont (Long_Long_Long_Integer);
+    pragma Pure_Function (Exp_Long_Long_Long_Integer);
+ 
+ end System.Exp_LLLI;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-explllu.ads gcc-11.1.0/gcc/ada/libgnat/s-explllu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-explllu.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-explllu.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,48 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                      S Y S T E M . E X P _ L L L U                       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This function performs exponentiation of unsigned types with binary modulus
+ --  values exceeding that of System.Unsigned_Types.Long_Long_Unsigned.
+ --  The result is always full width, the caller must do a masking operation if
+ --  the modulus is less than 2 ** Long_Long_Long_Unsigned'Size.
+ 
+ with System.Exponu;
+ with System.Unsigned_Types;
+ 
+ package System.Exp_LLLU is
+ 
+    subtype Long_Long_Long_Unsigned is Unsigned_Types.Long_Long_Long_Unsigned;
+ 
+    function Exp_Long_Long_Long_Unsigned is
+      new Exponu (Long_Long_Long_Unsigned);
+    pragma Pure_Function (Exp_Long_Long_Long_Unsigned);
+ 
+ end System.Exp_LLLU;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-expllu.adb gcc-11.1.0/gcc/ada/libgnat/s-expllu.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-expllu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-expllu.adb	Tue Apr 27 10:00:12 2021
***************
*** 2,12 ****
  --                                                                          --
  --                         GNAT RUN-TIME COMPONENTS                         --
  --                                                                          --
! --                        S Y S T E M . X P _ B M L                         --
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 2,12 ----
  --                                                                          --
  --                         GNAT RUN-TIME COMPONENTS                         --
  --                                                                          --
! --                       S Y S T E M . E X P _ L L U                        --
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,74 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Unsigned_Types; use System.Unsigned_Types;
! 
! package body System.Exp_LLU is
! 
!    ----------------------------
!    -- Exp_Long_Long_Unsigned --
!    ----------------------------
! 
!    function Exp_Long_Long_Unsigned
!      (Left  : Long_Long_Unsigned;
!       Right : Natural)
!       return  Long_Long_Unsigned
!    is
!       Result : Long_Long_Unsigned := 1;
!       Factor : Long_Long_Unsigned := Left;
!       Exp    : Natural := Right;
! 
!    begin
!       --  We use the standard logarithmic approach, Exp gets shifted right
!       --  testing successive low order bits and Factor is the value of the
!       --  base raised to the next power of 2.
! 
!       --  Note: it is not worth special casing the cases of base values -1,0,+1
!       --  since the expander does this when the base is a literal, and other
!       --  cases will be extremely rare.
! 
!       if Exp /= 0 then
!          loop
!             if Exp rem 2 /= 0 then
!                Result := Result * Factor;
!             end if;
! 
!             Exp := Exp / 2;
!             exit when Exp = 0;
!             Factor := Factor * Factor;
!          end loop;
!       end if;
! 
!       return Result;
! 
!    end Exp_Long_Long_Unsigned;
  
! end System.Exp_LLU;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-expllu.ads gcc-11.1.0/gcc/ada/libgnat/s-expllu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-expllu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-expllu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,47 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This function performs exponentiation of unsigned types (with binary
! --  modulus values exceeding that of Unsigned_Types.Unsigned). The result
! --  is always full width, the caller must do a masking operation if the
! --  modulus is less than 2 ** (Long_Long_Unsigned'Size).
  
  with System.Unsigned_Types;
  
  package System.Exp_LLU is
-    pragma Pure;
  
!    function Exp_Long_Long_Unsigned
!      (Left  : System.Unsigned_Types.Long_Long_Unsigned;
!       Right : Natural)
!       return  System.Unsigned_Types.Long_Long_Unsigned;
  
  end System.Exp_LLU;
--- 29,47 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This function performs exponentiation of unsigned types with binary modulus
! --  values exceeding that of System.Unsigned_Types.Unsigned.
! --  The result is always full width, the caller must do a masking operation if
! --  the modulus is less than 2 ** Long_Long_Unsigned'Size.
  
+ with System.Exponu;
  with System.Unsigned_Types;
  
  package System.Exp_LLU is
  
!    subtype Long_Long_Unsigned is Unsigned_Types.Long_Long_Unsigned;
! 
!    function Exp_Long_Long_Unsigned is new Exponu (Long_Long_Unsigned);
!    pragma Pure_Function (Exp_Long_Long_Unsigned);
  
  end System.Exp_LLU;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-expmod.adb gcc-11.1.0/gcc/ada/libgnat/s-expmod.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-expmod.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-expmod.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-expmod.ads gcc-11.1.0/gcc/ada/libgnat/s-expmod.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-expmod.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-expmod.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 1992-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 1992-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-exponn.adb gcc-11.1.0/gcc/ada/libgnat/s-exponn.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-exponn.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-exponn.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,72 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                        S Y S T E M . E X P O N N                         --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ function System.Exponn (Left : Int; Right : Natural) return Int is
+ 
+    --  Note that negative exponents get a constraint error because the
+    --  subtype of the Right argument (the exponent) is Natural.
+ 
+    Result : Int     := 1;
+    Factor : Int     := Left;
+    Exp    : Natural := Right;
+ 
+ begin
+    --  We use the standard logarithmic approach, Exp gets shifted right
+    --  testing successive low order bits and Factor is the value of the
+    --  base raised to the next power of 2.
+ 
+    --  Note: it is not worth special casing base values -1, 0, +1 since
+    --  the expander does this when the base is a literal, and other cases
+    --  will be extremely rare.
+ 
+    if Exp /= 0 then
+       loop
+          if Exp rem 2 /= 0 then
+             declare
+                pragma Suppress (Overflow_Check);
+             begin
+                Result := Result * Factor;
+             end;
+          end if;
+ 
+          Exp := Exp / 2;
+          exit when Exp = 0;
+ 
+          declare
+             pragma Suppress (Overflow_Check);
+          begin
+             Factor := Factor * Factor;
+          end;
+       end loop;
+    end if;
+ 
+    return Result;
+ end System.Exponn;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-exponn.ads gcc-11.1.0/gcc/ada/libgnat/s-exponn.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-exponn.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-exponn.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,38 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                        S Y S T E M . E X P O N N                         --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Signed integer exponentiation (checks off)
+ 
+ generic
+ 
+    type Int is range <>;
+ 
+ function System.Exponn (Left : Int; Right : Natural) return Int;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-expont.adb gcc-11.1.0/gcc/ada/libgnat/s-expont.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-expont.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-expont.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,72 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                        S Y S T E M . E X P O N T                         --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ function System.Expont (Left : Int; Right : Natural) return Int is
+ 
+    --  Note that negative exponents get a constraint error because the
+    --  subtype of the Right argument (the exponent) is Natural.
+ 
+    Result : Int     := 1;
+    Factor : Int     := Left;
+    Exp    : Natural := Right;
+ 
+ begin
+    --  We use the standard logarithmic approach, Exp gets shifted right
+    --  testing successive low order bits and Factor is the value of the
+    --  base raised to the next power of 2.
+ 
+    --  Note: it is not worth special casing base values -1, 0, +1 since
+    --  the expander does this when the base is a literal, and other cases
+    --  will be extremely rare.
+ 
+    if Exp /= 0 then
+       loop
+          if Exp rem 2 /= 0 then
+             declare
+                pragma Unsuppress (Overflow_Check);
+             begin
+                Result := Result * Factor;
+             end;
+          end if;
+ 
+          Exp := Exp / 2;
+          exit when Exp = 0;
+ 
+          declare
+             pragma Unsuppress (Overflow_Check);
+          begin
+             Factor := Factor * Factor;
+          end;
+       end loop;
+    end if;
+ 
+    return Result;
+ end System.Expont;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-expont.ads gcc-11.1.0/gcc/ada/libgnat/s-expont.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-expont.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-expont.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,38 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                        S Y S T E M . E X P O N T                         --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Signed integer exponentiation (checks on)
+ 
+ generic
+ 
+    type Int is range <>;
+ 
+ function System.Expont (Left : Int; Right : Natural) return Int;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-exponu.adb gcc-11.1.0/gcc/ada/libgnat/s-exponu.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-exponu.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-exponu.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,63 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                        S Y S T E M . E X P O N U                         --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ function System.Exponu (Left : Int; Right : Natural) return Int is
+ 
+    --  Note that negative exponents get a constraint error because the
+    --  subtype of the Right argument (the exponent) is Natural.
+ 
+    Result : Int     := 1;
+    Factor : Int     := Left;
+    Exp    : Natural := Right;
+ 
+ begin
+    --  We use the standard logarithmic approach, Exp gets shifted right
+    --  testing successive low order bits and Factor is the value of the
+    --  base raised to the next power of 2.
+ 
+    --  Note: it is not worth special casing base values -1, 0, +1 since
+    --  the expander does this when the base is a literal, and other cases
+    --  will be extremely rare.
+ 
+    if Exp /= 0 then
+       loop
+          if Exp rem 2 /= 0 then
+             Result := Result * Factor;
+          end if;
+ 
+          Exp := Exp / 2;
+          exit when Exp = 0;
+          Factor := Factor * Factor;
+       end loop;
+    end if;
+ 
+    return Result;
+ end System.Exponu;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-exponu.ads gcc-11.1.0/gcc/ada/libgnat/s-exponu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-exponu.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-exponu.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,38 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                        S Y S T E M . E X P O N U                         --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Modular integer exponentiation
+ 
+ generic
+ 
+    type Int is mod <>;
+ 
+ function System.Exponu (Left : Int; Right : Natural) return Int;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-expuns.adb gcc-11.1.0/gcc/ada/libgnat/s-expuns.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-expuns.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-expuns.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,73 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Unsigned_Types; use System.Unsigned_Types;
! 
! package body System.Exp_Uns is
! 
!    ------------------
!    -- Exp_Unsigned --
!    ------------------
! 
!    function Exp_Unsigned
!      (Left  : Unsigned;
!       Right : Natural)
!       return  Unsigned
!    is
!       Result  : Unsigned := 1;
!       Factor  : Unsigned := Left;
!       Exp     : Natural := Right;
! 
!    begin
!       --  We use the standard logarithmic approach, Exp gets shifted right
!       --  testing successive low order bits and Factor is the value of the
!       --  base raised to the next power of 2.
! 
!       --  Note: it is not worth special casing the cases of base values -1,0,+1
!       --  since the expander does this when the base is a literal, and other
!       --  cases will be extremely rare.
! 
!       if Exp /= 0 then
!          loop
!             if Exp rem 2 /= 0 then
!                Result := Result * Factor;
!             end if;
! 
!             Exp := Exp / 2;
!             exit when Exp = 0;
!             Factor := Factor * Factor;
!          end loop;
!       end if;
! 
!       return Result;
!    end Exp_Unsigned;
  
! end System.Exp_Uns;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-expuns.ads gcc-11.1.0/gcc/ada/libgnat/s-expuns.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-expuns.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-expuns.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,47 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This function performs exponentiation of unsigned types (with binary
! --  modulus values up to and including that of Unsigned_Types.Unsigned).
! --  The result is always full width, the caller must do a masking operation
! --  the modulus is less than 2 ** (Unsigned'Size).
  
  with System.Unsigned_Types;
  
  package System.Exp_Uns is
-    pragma Pure;
  
!    function Exp_Unsigned
!      (Left  : System.Unsigned_Types.Unsigned;
!       Right : Natural)
!       return  System.Unsigned_Types.Unsigned;
  
  end System.Exp_Uns;
--- 29,47 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This function performs exponentiation of unsigned types with binary modulus
! --  values up to and including that of System.Unsigned_Types.Unsigned.
! --  The result is always full width, the caller must do a masking operation if
! --  the modulus is less than 2 ** Unsigned'Size.
  
+ with System.Exponu;
  with System.Unsigned_Types;
  
  package System.Exp_Uns is
  
!    subtype Unsigned is Unsigned_Types.Unsigned;
! 
!    function Exp_Unsigned is new Exponu (Unsigned);
!    pragma Pure_Function (Exp_Unsigned);
  
  end System.Exp_Uns;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fatflt.ads gcc-11.1.0/gcc/ada/libgnat/s-fatflt.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-fatflt.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-fatflt.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fatgen.adb gcc-11.1.0/gcc/ada/libgnat/s-fatgen.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-fatgen.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-fatgen.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,78 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  The implementation here is portable to any IEEE implementation. It does
! --  not handle nonbinary radix, and also assumes that model numbers and
! --  machine numbers are basically identical, which is not true of all possible
! --  floating-point implementations. On a non-IEEE machine, this body must be
! --  specialized appropriately, or better still, its generic instantiations
! --  should be replaced by efficient machine-specific code.
  
  with Ada.Unchecked_Conversion;
! with System;
! package body System.Fat_Gen is
  
!    Float_Radix        : constant T := T (T'Machine_Radix);
!    Radix_To_M_Minus_1 : constant T := Float_Radix ** (T'Machine_Mantissa - 1);
  
     pragma Assert (T'Machine_Radix = 2);
     --  This version does not handle radix 16
  
!    --  Constants for Decompose and Scaling
  
-    Rad    : constant T := T (T'Machine_Radix);
     Invrad : constant T := 1.0 / Rad;
  
!    subtype Expbits is Integer range 0 .. 6;
!    --  2 ** (2 ** 7) might overflow.  How big can radix-16 exponents get?
  
!    Log_Power : constant array (Expbits) of Integer := (1, 2, 4, 8, 16, 32, 64);
  
!    R_Power : constant array (Expbits) of T :=
!      (Rad **  1,
!       Rad **  2,
!       Rad **  4,
!       Rad **  8,
!       Rad ** 16,
!       Rad ** 32,
!       Rad ** 64);
  
!    R_Neg_Power : constant array (Expbits) of T :=
!      (Invrad **  1,
!       Invrad **  2,
!       Invrad **  4,
!       Invrad **  8,
!       Invrad ** 16,
!       Invrad ** 32,
!       Invrad ** 64);
  
     -----------------------
     -- Local Subprograms --
--- 29,165 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This implementation is portable to any IEEE implementation. It does not
! --  handle nonbinary radix, and also assumes that model numbers and machine
! --  numbers are basically identical, which is not true of all possible
! --  floating-point implementations.
  
  with Ada.Unchecked_Conversion;
! with Interfaces;
! with System.Unsigned_Types;
  
! pragma Warnings (Off, "non-static constant in preelaborated unit");
! --  Every constant is static given our instantiation model
! 
! package body System.Fat_Gen is
!    use type Interfaces.Unsigned_64;
  
     pragma Assert (T'Machine_Radix = 2);
     --  This version does not handle radix 16
  
!    Rad : constant T := T (T'Machine_Radix);
!    --  Renaming for the machine radix
! 
!    Mantissa : constant Integer := T'Machine_Mantissa;
!    --  Renaming for the machine mantissa
  
     Invrad : constant T := 1.0 / Rad;
+    --  Smallest positive mantissa in the canonical form (RM A.5.3(4))
  
!    --  Small : constant T := Rad ** (T'Machine_Emin - 1);
!    --  Smallest positive normalized number
  
!    --  Tiny : constant T := Rad ** (T'Machine_Emin - Mantissa);
!    --  Smallest positive denormalized number
  
!    Tiny16 : constant Interfaces.Unsigned_16 := 1;
!    Tiny32 : constant Interfaces.Unsigned_32 := 1;
!    Tiny64 : constant Interfaces.Unsigned_64 := 1;
!    Tiny80 : constant array (1 .. 2) of Interfaces.Unsigned_64 :=
!               (1 * Standard'Default_Bit_Order,
!                2**48 * (1 - Standard'Default_Bit_Order));
!    for Tiny80'Alignment use Standard'Maximum_Alignment;
!    --  We cannot use the direct declaration because it cannot be translated
!    --  into C90, as the hexadecimal floating constants were introduced in C99.
!    --  So we work around this by using an overlay of the integer constant.
  
!    RM1 : constant T := Rad ** (Mantissa - 1);
!    --  Smallest positive member of the large consecutive integers. It is equal
!    --  to the ratio Small / Tiny, which means that multiplying by it normalizes
!    --  any nonzero denormalized number.
! 
!    IEEE_Emin : constant Integer := T'Machine_Emin - 1;
!    IEEE_Emax : constant Integer := T'Machine_Emax - 1;
!    --  The mantissa is a fraction with first digit set in Ada whereas it is
!    --  shifted by 1 digit to the left in the IEEE floating-point format.
! 
!    subtype IEEE_Erange is Integer range IEEE_Emin - 1 .. IEEE_Emax + 1;
!    --  The IEEE floating-point format extends the machine range by 1 to the
!    --  left for denormalized numbers and 1 to the right for infinities/NaNs.
! 
!    IEEE_Ebias : constant Integer := -(IEEE_Emin - 1);
!    --  The exponent is biased such that denormalized numbers have it zero
! 
!    --  The implementation uses a representation type Float_Rep that allows
!    --  direct access to exponent and mantissa of the floating point number.
! 
!    --  The Float_Rep type is a simple array of Float_Word elements. This
!    --  representation is chosen to make it possible to size the type based
!    --  on a generic parameter. Since the array size is known at compile
!    --  time, efficient code can still be generated. The size of Float_Word
!    --  elements should be large enough to allow accessing the exponent in
!    --  one read, but small enough so that all floating-point object sizes
!    --  are a multiple of Float_Word'Size.
! 
!    --  The following conditions must be met for all possible instantiations
!    --  of the attribute package:
! 
!    --    - T'Size is an integral multiple of Float_Word'Size
! 
!    --    - The exponent and sign are completely contained in a single
!    --      component of Float_Rep, named Most Significant Word (MSW).
! 
!    --    - The sign occupies the most significant bit of the MSW and the
!    --      exponent is in the following bits. The exception is 80-bit
!    --      double extended, where they occupy the low 16-bit halfword.
! 
!    --  The low-level primitives Copy_Sign, Decompose, Scaling and Valid are
!    --  implemented by accessing the bit pattern of the floating-point number.
!    --  Only the normalization of denormalized numbers, if any, and the gradual
!    --  underflow are left to the hardware, mainly because there is some leeway
!    --  for the hardware implementation in this area: for example, the MSB of
!    --  the mantissa, which is 1 for normalized numbers and 0 for denormalized
!    --  numbers, may or may not be stored by the hardware.
! 
!    Siz : constant := (if System.Word_Size > 32 then 32 else System.Word_Size);
!    type Float_Word is mod 2**Siz;
! 
!    N : constant Natural := (T'Size + Siz - 1) / Siz;
!    Rep_Last : constant Natural := Natural'Min (N - 1, (Mantissa + 16) / Siz);
!    --  Determine the number of Float_Words needed for representing the
!    --  entire floating-point value. Do not take into account excessive
!    --  padding, as occurs on IA-64 where 80 bits floats get padded to 128
!    --  bits. In general, the exponent field cannot be larger than 15 bits,
!    --  even for 128-bit floating-point types, so the final format size
!    --  won't be larger than Mantissa + 16.
! 
!    type Float_Rep is array (Natural range 0 .. N - 1) of Float_Word;
!    pragma Suppress_Initialization (Float_Rep);
!    --  This pragma suppresses the generation of an initialization procedure
!    --  for type Float_Rep when operating in Initialize/Normalize_Scalars mode.
! 
!    MSW : constant Natural := Rep_Last * Standard'Default_Bit_Order;
!    --  Finding the location of the Exponent_Word is a bit tricky. In general
!    --  we assume Word_Order = Bit_Order.
! 
!    Exp_Factor : constant Float_Word :=
!                   (if Mantissa = 64
!                    then 1
!                    else 2**(Siz - 1) / Float_Word (IEEE_Emax - IEEE_Emin + 3));
!    --  Factor that the extracted exponent needs to be divided by to be in
!    --  range 0 .. IEEE_Emax - IEEE_Emin + 2. The special case is 80-bit
!    --  double extended, where the exponent starts the 3rd float word.
! 
!    Exp_Mask : constant Float_Word :=
!                 Float_Word (IEEE_Emax - IEEE_Emin + 2) * Exp_Factor;
!    --  Value needed to mask out the exponent field. This assumes that the
!    --  range 0 .. IEEE_Emax - IEEE_Emin + 2 contains 2**N values, for some
!    --  N in Natural.
! 
!    Sign_Mask : constant Float_Word :=
!                  (if Mantissa = 64 then 2**15 else 2**(Siz - 1));
!    --  Value needed to mask out the sign field. The special case is 80-bit
!    --  double extended, where the exponent starts the 3rd float word.
  
     -----------------------
     -- Local Subprograms --
*************** package body System.Fat_Gen is
*** 84,94 ****
     --  the sign of the exponent. The absolute value of Frac is in the range
     --  0.0 <= Frac < 1.0. If Frac = 0.0 or -0.0, then Expo is always zero.
  
-    function Gradual_Scaling (Adjustment : UI) return T;
-    --  Like Scaling with a first argument of 1.0, but returns the smallest
-    --  denormal rather than zero when the adjustment is smaller than
-    --  Machine_Emin. Used for Succ and Pred.
- 
     --------------
     -- Adjacent --
     --------------
--- 171,176 ----
*************** package body System.Fat_Gen is
*** 138,156 ****
     ---------------
  
     function Copy_Sign (Value, Sign : T) return T is
!       Result : T;
  
!       function Is_Negative (V : T) return Boolean;
!       pragma Import (Intrinsic, Is_Negative);
  
!    begin
!       Result := abs Value;
  
!       if Is_Negative (Sign) then
!          return -Result;
!       else
!          return Result;
!       end if;
     end Copy_Sign;
  
     ---------------
--- 220,241 ----
     ---------------
  
     function Copy_Sign (Value, Sign : T) return T is
!       S : constant T := T'Machine (Sign);
  
!       Rep_S : Float_Rep;
!       for Rep_S'Address use S'Address;
!       --  Rep_S is a view of the Sign parameter
  
!       V : T := T'Machine (Value);
  
!       Rep_V : Float_Rep;
!       for Rep_V'Address use V'Address;
!       --  Rep_V is a view of the Value parameter
! 
!    begin
!       Rep_V (MSW) :=
!         (Rep_V (MSW) and not Sign_Mask) or (Rep_S (MSW) and Sign_Mask);
!       return V;
     end Copy_Sign;
  
     ---------------
*************** package body System.Fat_Gen is
*** 158,241 ****
     ---------------
  
     procedure Decompose (XX : T; Frac : out T; Expo : out UI) is
!       X : constant T := T'Machine (XX);
! 
!    begin
!       if X = 0.0 then
! 
!          --  The normalized exponent of zero is zero, see RM A.5.2(15)
! 
!          Frac := X;
!          Expo := 0;
! 
!       --  Check for infinities, transfinites, whatnot
! 
!       elsif X > T'Safe_Last then
!          Frac := Invrad;
!          Expo := T'Machine_Emax + 1;
! 
!       elsif X < T'Safe_First then
!          Frac := -Invrad;
!          Expo := T'Machine_Emax + 2;    -- how many extra negative values?
! 
!       else
!          --  Case of nonzero finite x. Essentially, we just multiply
!          --  by Rad ** (+-2**N) to reduce the range.
! 
!          declare
!             Ax : T  := abs X;
!             Ex : UI := 0;
  
!          --  Ax * Rad ** Ex is invariant
  
!          begin
!             if Ax >= 1.0 then
!                while Ax >= R_Power (Expbits'Last) loop
!                   Ax := Ax * R_Neg_Power (Expbits'Last);
!                   Ex := Ex + Log_Power (Expbits'Last);
!                end loop;
  
!                --  Ax < Rad ** 64
  
!                for N in reverse Expbits'First .. Expbits'Last - 1 loop
!                   if Ax >= R_Power (N) then
!                      Ax := Ax * R_Neg_Power (N);
!                      Ex := Ex + Log_Power (N);
!                   end if;
  
!                   --  Ax < R_Power (N)
  
!                end loop;
  
!                --  1 <= Ax < Rad
  
!                Ax := Ax * Invrad;
!                Ex := Ex + 1;
  
!             else
!                --  0 < ax < 1
  
!                while Ax < R_Neg_Power (Expbits'Last) loop
!                   Ax := Ax * R_Power (Expbits'Last);
!                   Ex := Ex - Log_Power (Expbits'Last);
!                end loop;
  
!                --  Rad ** -64 <= Ax < 1
  
!                for N in reverse Expbits'First .. Expbits'Last - 1 loop
!                   if Ax < R_Neg_Power (N) then
!                      Ax := Ax * R_Power (N);
!                      Ex := Ex - Log_Power (N);
!                   end if;
  
!                   --  R_Neg_Power (N) <= Ax < 1
  
!                end loop;
!             end if;
  
!             Frac := (if X > 0.0 then Ax else -Ax);
!             Expo := Ex;
!          end;
        end if;
     end Decompose;
  
--- 243,295 ----
     ---------------
  
     procedure Decompose (XX : T; Frac : out T; Expo : out UI) is
!       X : T := T'Machine (XX);
  
!       Rep : Float_Rep;
!       for Rep'Address use X'Address;
!       --  Rep is a view of the input floating-point parameter
  
!       Exp : constant IEEE_Erange :=
!               Integer ((Rep (MSW) and Exp_Mask) / Exp_Factor) - IEEE_Ebias;
!       --  Mask/Shift X to only get bits from the exponent. Then convert biased
!       --  value to final value.
  
!       Minus : constant Boolean := (Rep (MSW) and Sign_Mask) /= 0;
!       --  Mask/Shift X to only get bit from the sign
  
!    begin
!       --  The normalized exponent of zero is zero, see RM A.5.3(15)
  
!       if X = 0.0 then
!          Expo := 0;
!          Frac := X;
  
!       --  Check for infinities and NaNs
  
!       elsif Exp = IEEE_Emax + 1 then
!          Expo := T'Machine_Emax + 1;
!          Frac := (if Minus then -Invrad else Invrad);
  
!       --  Check for nonzero denormalized numbers
  
!       elsif Exp = IEEE_Emin - 1 then
!          --  Normalize by multiplying by Radix ** (Mantissa - 1)
  
!          Decompose (X * RM1, Frac, Expo);
!          Expo := Expo - (Mantissa - 1);
  
!       --  Case of normalized numbers
  
!       else
!          --  The Ada exponent is the IEEE exponent plus 1, see above
  
!          Expo := Exp + 1;
  
!          --  Set Ada exponent of X to zero, so we end up with the fraction
  
!          Rep (MSW) := (Rep (MSW) and not Exp_Mask) +
!                         Float_Word (IEEE_Ebias - 1) * Exp_Factor;
!          Frac := X;
        end if;
     end Decompose;
  
*************** package body System.Fat_Gen is
*** 281,318 ****
        return X_Frac;
     end Fraction;
  
-    ---------------------
-    -- Gradual_Scaling --
-    ---------------------
- 
-    function Gradual_Scaling  (Adjustment : UI) return T is
-       Y  : T;
-       Y1 : T;
-       Ex : UI := Adjustment;
- 
-    begin
-       if Adjustment < T'Machine_Emin - 1 then
-          Y  := 2.0 ** T'Machine_Emin;
-          Y1 := Y;
-          Ex := Ex - T'Machine_Emin;
-          while Ex < 0 loop
-             Y := T'Machine (Y / 2.0);
- 
-             if Y = 0.0 then
-                return Y1;
-             end if;
- 
-             Ex := Ex + 1;
-             Y1 := Y;
-          end loop;
- 
-          return Y1;
- 
-       else
-          return Scaling (1.0, Adjustment);
-       end if;
-    end Gradual_Scaling;
- 
     ------------------
     -- Leading_Part --
     ------------------
--- 335,340 ----
*************** package body System.Fat_Gen is
*** 322,328 ****
        Y, Z : T;
  
     begin
!       if Radix_Digits >= T'Machine_Mantissa then
           return X;
  
        elsif Radix_Digits <= 0 then
--- 344,350 ----
        Y, Z : T;
  
     begin
!       if Radix_Digits >= Mantissa then
           return X;
  
        elsif Radix_Digits <= 0 then
*************** package body System.Fat_Gen is
*** 402,407 ****
--- 424,436 ----
     ----------
  
     function Pred (X : T) return T is
+       Tiny : constant T;
+       pragma Import (Ada, Tiny);
+       for Tiny'Address use (if     T'Size   = 16 then Tiny16'Address
+                              elsif T'Size   = 32 then Tiny32'Address
+                              elsif T'Size   = 64 then Tiny64'Address
+                              elsif Mantissa = 64 then Tiny80'Address
+                              else raise Program_Error);
        X_Frac : T;
        X_Exp  : UI;
  
*************** package body System.Fat_Gen is
*** 409,451 ****
        --  Zero has to be treated specially, since its exponent is zero
  
        if X = 0.0 then
!          return -Succ (X);
  
!       --  Special treatment for most negative number
  
        elsif X = T'First then
- 
           raise Constraint_Error with "Pred of largest negative number";
  
        --  For infinities, return unchanged
  
        elsif X < T'First or else X > T'Last then
           return X;
  
        --  Subtract from the given number a number equivalent to the value
        --  of its least significant bit. Given that the most significant bit
!       --  represents a value of 1.0 * radix ** (exp - 1), the value we want
!       --  is obtained by shifting this by (mantissa-1) bits to the right,
        --  i.e. decreasing the exponent by that amount.
  
        else
           Decompose (X, X_Frac, X_Exp);
  
!          --  A special case, if the number we had was a positive power of
!          --  two, then we want to subtract half of what we would otherwise
!          --  subtract, since the exponent is going to be reduced.
  
!          --  Note that X_Frac has the same sign as X, so if X_Frac is 0.5,
!          --  then we know that we have a positive number (and hence a
!          --  positive power of 2).
  
!          if X_Frac = 0.5 then
!             return X - Gradual_Scaling (X_Exp - T'Machine_Mantissa - 1);
  
!          --  Otherwise the exponent is unchanged
  
           else
!             return X - Gradual_Scaling (X_Exp - T'Machine_Mantissa);
           end if;
        end if;
     end Pred;
--- 438,488 ----
        --  Zero has to be treated specially, since its exponent is zero
  
        if X = 0.0 then
!          return -Tiny;
  
!       --  Special treatment for largest negative number: raise Constraint_Error
  
        elsif X = T'First then
           raise Constraint_Error with "Pred of largest negative number";
  
        --  For infinities, return unchanged
  
        elsif X < T'First or else X > T'Last then
+          pragma Annotate (CodePeer, Intentional, "condition predetermined",
+                           "Check for invalid float");
           return X;
+          pragma Annotate (CodePeer, Intentional, "dead code",
+                           "Check float range.");
  
        --  Subtract from the given number a number equivalent to the value
        --  of its least significant bit. Given that the most significant bit
!       --  represents a value of 1.0 * Radix ** (Exp - 1), the value we want
!       --  is obtained by shifting this by (Mantissa-1) bits to the right,
        --  i.e. decreasing the exponent by that amount.
  
        else
           Decompose (X, X_Frac, X_Exp);
  
!          --  For a denormalized number or a normalized number with the lowest
!          --  exponent, just subtract the Tiny.
  
!          if X_Exp <= T'Machine_Emin then
!             return X - Tiny;
  
!          --  A special case, if the number we had was a power of two on the
!          --  positive side of zero, then we want to subtract half of what we
!          --  would have subtracted, since the exponent is going to be reduced.
  
!          --  Note that X_Frac has the same sign as X so, if X_Frac is Invrad,
!          --  then we know that we had a power of two on the positive side.
! 
!          elsif X_Frac = Invrad then
!             return X - Scaling (1.0, X_Exp - Mantissa - 1);
! 
!          --  Otherwise the adjustment is unchanged
  
           else
!             return X - Scaling (1.0, X_Exp - Mantissa);
           end if;
        end if;
     end Pred;
*************** package body System.Fat_Gen is
*** 565,634 ****
     -- Scaling --
     -------------
  
-    --  Return x * rad ** adjustment quickly, or quietly underflow to zero,
-    --  or overflow naturally.
- 
     function Scaling (X : T; Adjustment : UI) return T is
     begin
!       if X = 0.0 or else Adjustment = 0 then
           return X;
-       end if;
  
!       --  Nonzero x essentially, just multiply repeatedly by Rad ** (+-2**n)
  
!       declare
!          Y  : T  := X;
!          Ex : UI := Adjustment;
  
!       --  Y * Rad ** Ex is invariant
  
!       begin
!          if Ex < 0 then
!             while Ex <= -Log_Power (Expbits'Last) loop
!                Y := Y * R_Neg_Power (Expbits'Last);
!                Ex := Ex + Log_Power (Expbits'Last);
!             end loop;
  
!             --  -64 < Ex <= 0
  
!             for N in reverse Expbits'First .. Expbits'Last - 1 loop
!                if Ex <= -Log_Power (N) then
!                   Y := Y * R_Neg_Power (N);
!                   Ex := Ex + Log_Power (N);
!                end if;
  
!                --  -Log_Power (N) < Ex <= 0
  
!             end loop;
  
!             --  Ex = 0
  
!          else
!             --  Ex >= 0
  
!             while Ex >= Log_Power (Expbits'Last) loop
!                Y := Y * R_Power (Expbits'Last);
!                Ex := Ex - Log_Power (Expbits'Last);
!             end loop;
  
!             --  0 <= Ex < 64
  
!             for N in reverse Expbits'First .. Expbits'Last - 1 loop
!                if Ex >= Log_Power (N) then
!                   Y := Y * R_Power (N);
!                   Ex := Ex - Log_Power (N);
!                end if;
  
!                --  0 <= Ex < Log_Power (N)
  
!             end loop;
  
!             --  Ex = 0
  
           end if;
  
!          return Y;
!       end;
     end Scaling;
  
     ----------
--- 602,698 ----
     -- Scaling --
     -------------
  
     function Scaling (X : T; Adjustment : UI) return T is
+       pragma Assert (Mantissa <= 64);
+       --  This implementation handles only 80-bit IEEE Extended or smaller
+ 
+       package UST renames System.Unsigned_Types;
+       use type UST.Long_Long_Unsigned;
+ 
+       XX : T := T'Machine (X);
+ 
+       Rep : Float_Rep;
+       for Rep'Address use XX'Address;
+       --  Rep is a view of the input floating-point parameter
+ 
+       Exp : constant IEEE_Erange :=
+               Integer ((Rep (MSW) and Exp_Mask) / Exp_Factor) - IEEE_Ebias;
+       --  Mask/Shift X to only get bits from the exponent. Then convert biased
+       --  value to final value.
+ 
+       Minus : constant Boolean := (Rep (MSW) and Sign_Mask) /= 0;
+       --  Mask/Shift X to only get bit from the sign
+ 
+       Expi, Expf : IEEE_Erange;
+ 
     begin
!       --  Check for zero, infinities, NaNs as well as no adjustment
! 
!       if X = 0.0 or else Exp = IEEE_Emax + 1 or else Adjustment = 0 then
           return X;
  
!       --  Check for nonzero denormalized numbers
  
!       elsif Exp = IEEE_Emin - 1 then
!          --  Check for zero result to protect the subtraction below
  
!          if Adjustment < -(Mantissa - 1) then
!             XX := 0.0;
!             return (if Minus then -XX else XX);
  
!          --  Normalize by multiplying by Radix ** (Mantissa - 1)
  
!          else
!             return Scaling (XX * RM1, Adjustment - (Mantissa - 1));
!          end if;
  
!       --  Case of normalized numbers
  
!       else
!          --  Check for overflow
  
!          if Adjustment > IEEE_Emax - Exp then
!             XX := 0.0;
!             return (if Minus then -1.0 / XX else 1.0 / XX);
!             pragma Annotate
!               (CodePeer, Intentional, "overflow check", "Infinity produced");
!             pragma Annotate
!               (CodePeer, Intentional, "divide by zero", "Infinity produced");
  
!          --  Check for underflow
  
!          elsif Adjustment < IEEE_Emin - Exp then
!             --  Check for gradual underflow
  
!             if T'Denorm
!               and then Adjustment >= IEEE_Emin - (Mantissa - 1) - Exp
!             then
!                Expf := IEEE_Emin;
!                Expi := Exp + Adjustment - Expf;
  
!             --  Case of zero result
  
!             else
!                XX := 0.0;
!                return (if Minus then -XX else XX);
!             end if;
  
!          --  Case of normalized results
  
!          else
!             Expf := Exp + Adjustment;
!             Expi := 0;
!          end if;
  
!          Rep (MSW) := (Rep (MSW) and not Exp_Mask) +
!                         Float_Word (IEEE_Ebias + Expf) * Exp_Factor;
  
+          if Expi < 0 then
+             XX := XX / T (UST.Long_Long_Unsigned (2) ** (-Expi));
           end if;
  
!          return XX;
!       end if;
     end Scaling;
  
     ----------
*************** package body System.Fat_Gen is
*** 636,700 ****
     ----------
  
     function Succ (X : T) return T is
        X_Frac : T;
        X_Exp  : UI;
-       X1, X2 : T;
  
     begin
        --  Treat zero specially since it has a zero exponent
  
        if X = 0.0 then
!          X1 := 2.0 ** T'Machine_Emin;
! 
!          --  Following loop generates smallest denormal
! 
!          loop
!             X2 := T'Machine (X1 / 2.0);
!             exit when X2 = 0.0;
!             X1 := X2;
!          end loop;
! 
!          return X1;
  
!       --  Special treatment for largest positive number
  
        elsif X = T'Last then
- 
-          --  If not generating infinities, we raise a constraint error
- 
           raise Constraint_Error with "Succ of largest positive number";
  
-          --  Otherwise generate a positive infinity
- 
        --  For infinities, return unchanged
  
        elsif X < T'First or else X > T'Last then
           return X;
  
!       --  Add to the given number a number equivalent to the value
!       --  of its least significant bit. Given that the most significant bit
!       --  represents a value of 1.0 * radix ** (exp - 1), the value we want
!       --  is obtained by shifting this by (mantissa-1) bits to the right,
        --  i.e. decreasing the exponent by that amount.
  
        else
           Decompose (X, X_Frac, X_Exp);
  
!          --  A special case, if the number we had was a negative power of two,
!          --  then we want to add half of what we would otherwise add, since the
!          --  exponent is going to be reduced.
  
!          --  Note that X_Frac has the same sign as X, so if X_Frac is -0.5,
!          --  then we know that we have a negative number (and hence a negative
!          --  power of 2).
  
!          if X_Frac = -0.5 then
!             return X + Gradual_Scaling (X_Exp - T'Machine_Mantissa - 1);
  
!          --  Otherwise the exponent is unchanged
  
           else
!             return X + Gradual_Scaling (X_Exp - T'Machine_Mantissa);
           end if;
        end if;
     end Succ;
--- 700,764 ----
     ----------
  
     function Succ (X : T) return T is
+       Tiny : constant T;
+       pragma Import (Ada, Tiny);
+       for Tiny'Address use (if     T'Size   = 16 then Tiny16'Address
+                              elsif T'Size   = 32 then Tiny32'Address
+                              elsif T'Size   = 64 then Tiny64'Address
+                              elsif Mantissa = 64 then Tiny80'Address
+                              else raise Program_Error);
        X_Frac : T;
        X_Exp  : UI;
  
     begin
        --  Treat zero specially since it has a zero exponent
  
        if X = 0.0 then
!          return Tiny;
  
!       --  Special treatment for largest positive number: raise Constraint_Error
  
        elsif X = T'Last then
           raise Constraint_Error with "Succ of largest positive number";
  
        --  For infinities, return unchanged
  
        elsif X < T'First or else X > T'Last then
+          pragma Annotate (CodePeer, Intentional, "condition predetermined",
+                           "Check for invalid float");
           return X;
+          pragma Annotate (CodePeer, Intentional, "dead code",
+                           "Check float range.");
  
!       --  Add to the given number a number equivalent to the value of its
!       --  least significant bit. Given that the most significant bit
!       --  represents a value of 1.0 * Radix ** (Exp - 1), the value we want
!       --  is obtained by shifting this by (Mantissa-1) bits to the right,
        --  i.e. decreasing the exponent by that amount.
  
        else
           Decompose (X, X_Frac, X_Exp);
  
!          --  For a denormalized number or a normalized number with the lowest
!          --  exponent, just add the Tiny.
  
!          if X_Exp <= T'Machine_Emin then
!             return X + Tiny;
  
!          --  A special case, if the number we had was a power of two on the
!          --  negative side of zero, then we want to add half of what we would
!          --  have added, since the exponent is going to be reduced.
  
!          --  Note that X_Frac has the same sign as X, so if X_Frac is -Invrad,
!          --  then we know that we had a power of two on the negative side.
! 
!          elsif X_Frac = -Invrad then
!             return X + Scaling (1.0, X_Exp - Mantissa - 1);
! 
!          --  Otherwise the adjustment is unchanged
  
           else
!             return X + Scaling (1.0, X_Exp - Mantissa);
           end if;
        end if;
     end Succ;
*************** package body System.Fat_Gen is
*** 707,713 ****
  
     --    T'Machine (RM1 + N) - RM1
  
!    --  where N >= 0.0 and RM1 = radix ** (mantissa - 1)
  
     --  This works provided that the intermediate result (RM1 + N) does not
     --  have extra precision (which is why we call Machine). When we compute
--- 771,777 ----
  
     --    T'Machine (RM1 + N) - RM1
  
!    --  where N >= 0.0 and RM1 = Radix ** (Mantissa - 1)
  
     --  This works provided that the intermediate result (RM1 + N) does not
     --  have extra precision (which is why we call Machine). When we compute
*************** package body System.Fat_Gen is
*** 724,742 ****
     begin
        Result := abs X;
  
!       if Result >= Radix_To_M_Minus_1 then
           return T'Machine (X);
  
        else
!          Result :=
!            T'Machine (Radix_To_M_Minus_1 + Result) - Radix_To_M_Minus_1;
  
           if Result > abs X then
              Result := Result - 1.0;
           end if;
  
           if X > 0.0 then
!             return  Result;
  
           elsif X < 0.0 then
              return -Result;
--- 788,805 ----
     begin
        Result := abs X;
  
!       if Result >= RM1 then
           return T'Machine (X);
  
        else
!          Result := T'Machine (RM1 + Result) - RM1;
  
           if Result > abs X then
              Result := Result - 1.0;
           end if;
  
           if X > 0.0 then
!             return Result;
  
           elsif X < 0.0 then
              return -Result;
*************** package body System.Fat_Gen is
*** 787,918 ****
     -----------
  
     function Valid (X : not null access T) return Boolean is
!       IEEE_Emin : constant Integer := T'Machine_Emin - 1;
!       IEEE_Emax : constant Integer := T'Machine_Emax - 1;
! 
!       IEEE_Bias : constant Integer := -(IEEE_Emin - 1);
! 
!       subtype IEEE_Exponent_Range is
!         Integer range IEEE_Emin - 1 .. IEEE_Emax + 1;
! 
!       --  The implementation of this floating point attribute uses a
!       --  representation type Float_Rep that allows direct access to the
!       --  exponent and mantissa parts of a floating point number.
! 
!       --  The Float_Rep type is an array of Float_Word elements. This
!       --  representation is chosen to make it possible to size the type based
!       --  on a generic parameter. Since the array size is known at compile
!       --  time, efficient code can still be generated. The size of Float_Word
!       --  elements should be large enough to allow accessing the exponent in
!       --  one read, but small enough so that all floating point object sizes
!       --  are a multiple of the Float_Word'Size.
! 
!       --  The following conditions must be met for all possible instantiations
!       --  of the attributes package:
! 
!       --    - T'Size is an integral multiple of Float_Word'Size
! 
!       --    - The exponent and sign are completely contained in a single
!       --      component of Float_Rep, named Most_Significant_Word (MSW).
! 
!       --    - The sign occupies the most significant bit of the MSW and the
!       --      exponent is in the following bits. Unused bits (if any) are in
!       --      the least significant part.
! 
!       type Float_Word is mod 2**Positive'Min (System.Word_Size, 32);
!       type Rep_Index is range 0 .. 7;
! 
!       Rep_Words : constant Positive :=
!                     (T'Size + Float_Word'Size - 1) / Float_Word'Size;
!       Rep_Last  : constant Rep_Index :=
!                     Rep_Index'Min
!                       (Rep_Index (Rep_Words - 1),
!                        (T'Mantissa + 16) / Float_Word'Size);
!       --  Determine the number of Float_Words needed for representing the
!       --  entire floating-point value. Do not take into account excessive
!       --  padding, as occurs on IA-64 where 80 bits floats get padded to 128
!       --  bits. In general, the exponent field cannot be larger than 15 bits,
!       --  even for 128-bit floating-point types, so the final format size
!       --  won't be larger than T'Mantissa + 16.
! 
!       type Float_Rep is
!          array (Rep_Index range 0 .. Rep_Index (Rep_Words - 1)) of Float_Word;
! 
!       pragma Suppress_Initialization (Float_Rep);
!       --  This pragma suppresses the generation of an initialization procedure
!       --  for type Float_Rep when operating in Initialize/Normalize_Scalars
!       --  mode. This is not just a matter of efficiency, but of functionality,
!       --  since Valid has a pragma Inline_Always, which is not permitted if
!       --  there are nested subprograms present.
! 
!       Most_Significant_Word : constant Rep_Index :=
!                                 Rep_Last * Standard'Default_Bit_Order;
!       --  Finding the location of the Exponent_Word is a bit tricky. In general
!       --  we assume Word_Order = Bit_Order.
! 
!       Exponent_Factor : constant Float_Word :=
!                           2**(Float_Word'Size - 1) /
!                             Float_Word (IEEE_Emax - IEEE_Emin + 3) *
!                               Boolean'Pos (Most_Significant_Word /= 2) +
!                                 Boolean'Pos (Most_Significant_Word = 2);
!       --  Factor that the extracted exponent needs to be divided by to be in
!       --  range 0 .. IEEE_Emax - IEEE_Emin + 2. Special case: Exponent_Factor
!       --  is 1 for x86/IA64 double extended (GCC adds unused bits to the type).
! 
!       Exponent_Mask : constant Float_Word :=
!                         Float_Word (IEEE_Emax - IEEE_Emin + 2) *
!                           Exponent_Factor;
!       --  Value needed to mask out the exponent field. This assumes that the
!       --  range IEEE_Emin - 1 .. IEEE_Emax + contains 2**N values, for some N
!       --  in Natural.
! 
!       function To_Float is new Ada.Unchecked_Conversion (Float_Rep, T);
! 
!       type Float_Access is access all T;
        function To_Address is
!          new Ada.Unchecked_Conversion (Float_Access, System.Address);
! 
!       XA : constant System.Address := To_Address (Float_Access (X));
! 
!       R : Float_Rep;
!       pragma Import (Ada, R);
!       for R'Address use XA;
!       --  R is a view of the input floating-point parameter. Note that we
!       --  must avoid copying the actual bits of this parameter in float
!       --  form (since it may be a signalling NaN).
  
!       E  : constant IEEE_Exponent_Range :=
!              Integer ((R (Most_Significant_Word) and Exponent_Mask) /
!                                                         Exponent_Factor)
!                - IEEE_Bias;
!       --  Mask/Shift T to only get bits from the exponent. Then convert biased
!       --  value to integer value.
  
!       SR : Float_Rep;
!       --  Float_Rep representation of significant of X.all
  
     begin
!       if T'Denorm then
! 
!          --  All denormalized numbers are valid, so the only invalid numbers
!          --  are overflows and NaNs, both with exponent = Emax + 1.
! 
!          return E /= IEEE_Emax + 1;
  
!       end if;
  
!       --  All denormalized numbers except 0.0 are invalid
  
!       --  Set exponent of X to zero, so we end up with the significand, which
!       --  definitely is a valid number and can be converted back to a float.
  
!       SR := R;
!       SR (Most_Significant_Word) :=
!            (SR (Most_Significant_Word)
!              and not Exponent_Mask) + Float_Word (IEEE_Bias) * Exponent_Factor;
  
!       return (E in IEEE_Emin .. IEEE_Emax) or else
!          ((E = IEEE_Emin - 1) and then abs To_Float (SR) = 1.0);
     end Valid;
  
  end System.Fat_Gen;
--- 850,886 ----
     -----------
  
     function Valid (X : not null access T) return Boolean is
!       type Access_T is access all T;
        function To_Address is
!         new Ada.Unchecked_Conversion (Access_T, System.Address);
  
!       Rep : Float_Rep;
!       for Rep'Address use To_Address (Access_T (X));
!       --  Rep is a view of the input floating-point parameter. Note that we
!       --  must avoid reading the actual bits of this parameter in float form
!       --  since it may be a signalling NaN.
  
!       Exp : constant IEEE_Erange :=
!               Integer ((Rep (MSW) and Exp_Mask) / Exp_Factor) - IEEE_Ebias;
!       --  Mask/Shift X to only get bits from the exponent. Then convert biased
!       --  value to final value.
  
     begin
!       if Exp = IEEE_Emax + 1 then
!          --  This is an infinity or a NaN, i.e. always invalid
  
!          return False;
  
!       elsif Exp in IEEE_Emin .. IEEE_Emax then
!          --  This is a normalized number, i.e. always valid
  
!          return True;
  
!       else pragma Assert (Exp = IEEE_Emin - 1);
!          --  This is a denormalized number, valid if T'Denorm is True or 0.0
  
!          return T'Denorm or else X.all = 0.0;
!       end if;
     end Valid;
  
  end System.Fat_Gen;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fatgen.ads gcc-11.1.0/gcc/ada/libgnat/s-fatgen.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-fatgen.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-fatgen.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,39 ****
  
  --  This generic package provides a target independent implementation of the
  --  floating-point attributes that denote functions. The implementations here
! --  are portable, but very slow. The runtime contains a set of instantiations
! --  of this package for all predefined floating-point types, and these should
! --  be replaced by efficient assembly language code where possible.
  
  generic
      type T is digits <>;
--- 31,38 ----
  
  --  This generic package provides a target independent implementation of the
  --  floating-point attributes that denote functions. The implementations here
! --  should be portable and reasonably efficient. The runtime contains a set of
! --  instantiations of this package for all predefined floating-point types.
  
  generic
      type T is digits <>;
*************** package System.Fat_Gen is
*** 107,118 ****
     --  floating point register).
  
  private
     pragma Inline (Machine);
     pragma Inline (Model);
! 
!    --  Note: previously the validity checking subprograms (Unaligned_Valid and
!    --  Valid) were also inlined, but this was changed since there were some
!    --  problems with this inlining in optimized mode, and in any case it seems
!    --  better to avoid this inlining (space and robustness considerations).
  
  end System.Fat_Gen;
--- 106,117 ----
     --  floating point register).
  
  private
+    pragma Inline (Compose);
+    pragma Inline (Copy_Sign);
+    pragma Inline (Exponent);
+    pragma Inline (Fraction);
     pragma Inline (Machine);
     pragma Inline (Model);
!    pragma Inline (Valid);
  
  end System.Fat_Gen;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fatlfl.ads gcc-11.1.0/gcc/ada/libgnat/s-fatlfl.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-fatlfl.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-fatlfl.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fatllf.ads gcc-11.1.0/gcc/ada/libgnat/s-fatllf.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-fatllf.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-fatllf.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fatsfl.ads gcc-11.1.0/gcc/ada/libgnat/s-fatsfl.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-fatsfl.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-fatsfl.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,47 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                      S Y S T E M . F A T _ S F L T                       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package contains an instantiation of the floating-point attribute
- --  runtime routines for the type Short_Float.
- 
- with System.Fat_Gen;
- 
- package System.Fat_SFlt is
-    pragma Pure;
- 
-    --  Note the only entity from this package that is accessed by Rtsfind
-    --  is the name of the package instantiation. Entities within this package
-    --  (i.e. the individual floating-point attribute routines) are accessed
-    --  by name using selected notation.
- 
-    package Attr_Short_Float is new System.Fat_Gen (Short_Float);
- 
- end System.Fat_SFlt;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-ficobl.ads gcc-11.1.0/gcc/ada/libgnat/s-ficobl.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-ficobl.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-ficobl.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 1992-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 1992-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-filatt.ads gcc-11.1.0/gcc/ada/libgnat/s-filatt.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-filatt.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-filatt.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2013-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2013-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fileio.adb gcc-11.1.0/gcc/ada/libgnat/s-fileio.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-fileio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-fileio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.File_IO is
*** 800,808 ****
  
        Text_Encoding : Content_Encoding;
  
!       Tempfile : constant Boolean := Name = "";
        --  Indicates temporary file case, which is indicated by an empty file
!       --  name.
  
        Namelen : constant Integer := max_path_len;
        --  Length required for file name, not including final ASCII.NUL.
--- 800,808 ----
  
        Text_Encoding : Content_Encoding;
  
!       Tempfile : constant Boolean := Name = "" and Stream = NULL_Stream;
        --  Indicates temporary file case, which is indicated by an empty file
!       --  name and no specified Stream.
  
        Namelen : constant Integer := max_path_len;
        --  Length required for file name, not including final ASCII.NUL.
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fileio.ads gcc-11.1.0/gcc/ada/libgnat/s-fileio.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-fileio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-fileio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-finmas.adb gcc-11.1.0/gcc/ada/libgnat/s-finmas.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-finmas.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-finmas.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2015-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2015-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Finalization_Masters
*** 119,138 ****
        Finalize_Address_Table.Remove (Obj);
     end Delete_Finalize_Address_Unprotected;
  
-    ------------
-    -- Detach --
-    ------------
- 
-    procedure Detach (N : not null FM_Node_Ptr) is
-    begin
-       Lock_Task.all;
-       Detach_Unprotected (N);
-       Unlock_Task.all;
- 
-       --  Note: No need to unlock in case of an exception because the above
-       --  code can never raise one.
-    end Detach;
- 
     ------------------------
     -- Detach_Unprotected --
     ------------------------
--- 119,124 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-finmas.ads gcc-11.1.0/gcc/ada/libgnat/s-finmas.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-finmas.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-finmas.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Finalization_Masters is
*** 86,95 ****
     --  Destroy the relation pair object - Finalize_Address from the internal
     --  hash table.
  
-    procedure Detach (N : not null FM_Node_Ptr);
-    --  Compiler interface, do not call from within the run-time. Remove a node
-    --  from an arbitrary finalization master.
- 
     procedure Detach_Unprotected (N : not null FM_Node_Ptr);
     --  Remove a node from an arbitrary finalization master
  
--- 86,91 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-finroo.adb gcc-11.1.0/gcc/ada/libgnat/s-finroo.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-finroo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-finroo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 1992-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 1992-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-finroo.ads gcc-11.1.0/gcc/ada/libgnat/s-finroo.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-finroo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-finroo.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-flocon.adb gcc-11.1.0/gcc/ada/libgnat/s-flocon.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-flocon.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-flocon.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2011-2019, AdaCore                   --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2011-2020, AdaCore                   --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-flocon.ads gcc-11.1.0/gcc/ada/libgnat/s-flocon.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-flocon.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-flocon.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-flocon__none.adb gcc-11.1.0/gcc/ada/libgnat/s-flocon__none.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-flocon__none.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-flocon__none.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2011-2019, AdaCore                   --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2011-2020, AdaCore                   --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fode128.ads gcc-11.1.0/gcc/ada/libgnat/s-fode128.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-fode128.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-fode128.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,48 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --              S Y S T E M . F O R E _ D E C I M A L _ 1 2 8               --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routine used for the 'Fore attribute for decimal
+ --  fixed point types up to 128-bit mantissa.
+ 
+ with Interfaces;
+ with System.Fore_D;
+ 
+ package System.Fore_Decimal_128 is
+    pragma Pure;
+ 
+    subtype Int128 is Interfaces.Integer_128;
+ 
+    package Impl is new Fore_D (Int128);
+ 
+    function Fore_Decimal128 (Lo, Hi : Int128; Scale : Integer) return Natural
+      renames Impl.Fore_Decimal;
+ 
+ end System.Fore_Decimal_128;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fode32.ads gcc-11.1.0/gcc/ada/libgnat/s-fode32.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-fode32.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-fode32.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,48 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --               S Y S T E M . F O R E _ D E C I M A L _ 3 2                --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routine used for the 'Fore attribute for decimal
+ --  fixed point types up to 32-bit mantissa.
+ 
+ with Interfaces;
+ with System.Fore_D;
+ 
+ package System.Fore_Decimal_32 is
+    pragma Pure;
+ 
+    subtype Int32 is Interfaces.Integer_32;
+ 
+    package Impl is new Fore_D (Int32);
+ 
+    function Fore_Decimal32 (Lo, Hi : Int32; Scale : Integer) return Natural
+      renames Impl.Fore_Decimal;
+ 
+ end System.Fore_Decimal_32;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fode64.ads gcc-11.1.0/gcc/ada/libgnat/s-fode64.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-fode64.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-fode64.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,48 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --               S Y S T E M . F O R E _ D E C I M A L _ 6 4                --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routine used for the 'Fore attribute for decimal
+ --  fixed point types up to 64-bit mantissa.
+ 
+ with Interfaces;
+ with System.Fore_D;
+ 
+ package System.Fore_Decimal_64 is
+    pragma Pure;
+ 
+    subtype Int64 is Interfaces.Integer_64;
+ 
+    package Impl is new Fore_D (Int64);
+ 
+    function Fore_Decimal64 (Lo, Hi : Int64; Scale : Integer) return Natural
+      renames Impl.Fore_Decimal;
+ 
+ end System.Fore_Decimal_64;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fofi128.ads gcc-11.1.0/gcc/ada/libgnat/s-fofi128.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-fofi128.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-fofi128.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,50 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                      S Y S T E M . F O F I _ 1 2 8                       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routine used for the 'Fore attribute for ordinary
+ --  fixed point types up to 128-bit small and mantissa.
+ 
+ with Interfaces;
+ with System.Arith_128;
+ with System.Fore_F;
+ 
+ package System.Fore_Fixed_128 is
+    pragma Pure;
+ 
+    subtype Int128 is Interfaces.Integer_128;
+ 
+    package Impl is new Fore_F (Int128, Arith_128.Scaled_Divide128);
+ 
+    function Fore_Fixed128
+      (Lo, Hi, Num, Den : Int128; Scale : Integer) return Natural
+      renames Impl.Fore_Fixed;
+ 
+ end System.Fore_Fixed_128;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fofi32.ads gcc-11.1.0/gcc/ada/libgnat/s-fofi32.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-fofi32.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-fofi32.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,50 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                 S Y S T E M . F O R E _ F I X E D _ 3 2                  --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routine used for the 'Fore attribute for ordinary
+ --  fixed point types up to 32-bit small and mantissa.
+ 
+ with Interfaces;
+ with System.Arith_32;
+ with System.Fore_F;
+ 
+ package System.Fore_Fixed_32 is
+    pragma Pure;
+ 
+    subtype Int32 is Interfaces.Integer_32;
+ 
+    package Impl is new Fore_F (Int32, Arith_32.Scaled_Divide32);
+ 
+    function Fore_Fixed32
+      (Lo, Hi, Num, Den : Int32; Scale : Integer) return Natural
+      renames Impl.Fore_Fixed;
+ 
+ end System.Fore_Fixed_32;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fofi64.ads gcc-11.1.0/gcc/ada/libgnat/s-fofi64.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-fofi64.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-fofi64.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,50 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                 S Y S T E M . F O R E _ F I X E D _ 6 4                  --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routine used for the 'Fore attribute for ordinary
+ --  fixed point types up to 64-bit small and mantissa.
+ 
+ with Interfaces;
+ with System.Arith_64;
+ with System.Fore_F;
+ 
+ package System.Fore_Fixed_64 is
+    pragma Pure;
+ 
+    subtype Int64 is Interfaces.Integer_64;
+ 
+    package Impl is new Fore_F (Int64, Arith_64.Scaled_Divide64);
+ 
+    function Fore_Fixed64
+      (Lo, Hi, Num, Den : Int64; Scale : Integer) return Natural
+      renames Impl.Fore_Fixed;
+ 
+ end System.Fore_Fixed_64;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fore.adb gcc-11.1.0/gcc/ada/libgnat/s-fore.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-fore.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-fore.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,56 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                          S Y S T E M . F O R E                           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package body System.Fore is
- 
-    ----------
-    -- Fore --
-    ----------
- 
-    function Fore (Lo, Hi : Long_Long_Float) return Natural is
-       T : Long_Long_Float := Long_Long_Float'Max (abs Lo, abs Hi);
-       R : Natural;
- 
-    begin
-       --  Initial value of 2 allows for sign and mandatory single digit
- 
-       R := 2;
- 
-       --  Loop to increase Fore as needed to include full range of values
- 
-       while T >= 10.0 loop
-          T := T / 10.0;
-          R := R + 1;
-       end loop;
- 
-       return R;
-    end Fore;
- end System.Fore;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fore.ads gcc-11.1.0/gcc/ada/libgnat/s-fore.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-fore.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-fore.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,41 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                          S Y S T E M . F O R E                           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package contains the routine used for the 'Fore attribute
- 
- package System.Fore is
-    pragma Pure;
- 
-    function Fore (Lo, Hi : Long_Long_Float) return Natural;
-    --  Compute Fore attribute value for a fixed-point type. The parameters
-    --  are the low and high bounds values, converted to Long_Long_Float.
- 
- end System.Fore;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fore_d.adb gcc-11.1.0/gcc/ada/libgnat/s-fore_d.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-fore_d.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-fore_d.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,62 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                        S Y S T E M . F O R E _ D                         --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package body System.Fore_D is
+ 
+    ------------------
+    -- Fore_Decimal --
+    ------------------
+ 
+    function Fore_Decimal (Lo, Hi : Int; Scale : Integer) return Natural is
+ 
+       function Negative_Abs (Val : Int) return Int is
+         (if Val <= 0 then Val else -Val);
+       --  Return the opposite of the absolute value of Val
+ 
+       T : Int := Int'Min (Negative_Abs (Lo), Negative_Abs (Hi));
+       F : Natural;
+ 
+    begin
+       --  Initial value of 2 allows for sign and mandatory single digit
+ 
+       F := 2;
+ 
+       --  Loop to increase Fore as needed to include full range of values
+ 
+       while T <= -10 loop
+          T := T / 10;
+          F := F + 1;
+       end loop;
+ 
+       return Natural'Max (F - Scale, 2);
+    end Fore_Decimal;
+ 
+ end System.Fore_D;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fore_d.ads gcc-11.1.0/gcc/ada/libgnat/s-fore_d.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-fore_d.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-fore_d.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,47 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                        S Y S T E M . F O R E _ D                         --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routine used for the Fore attribute of decimal
+ --  fixed point types.
+ 
+ generic
+ 
+    type Int is range <>;
+ 
+ package System.Fore_D is
+    pragma Pure;
+ 
+    function Fore_Decimal (Lo, Hi : Int; Scale : Integer) return Natural;
+    --  Compute Fore attribute value for a decimal fixed point type. The
+    --  parameters are the low and high bounds (in units of delta) and the
+    --  scale.
+ 
+ end System.Fore_D;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fore_f.adb gcc-11.1.0/gcc/ada/libgnat/s-fore_f.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-fore_f.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-fore_f.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,136 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                        S Y S T E M . F O R E _ F                         --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package body System.Fore_F is
+ 
+    Maxdigs : constant Natural := Int'Width - 2;
+    --  Maximum number of decimal digits that can be represented in an Int.
+    --  The "-2" accounts for the sign and one extra digit, since we need the
+    --  maximum number of 9's that can be represented, e.g. for the 64-bit case,
+    --  Integer_64'Width is 20 since the maximum value is approximately 9.2E+18
+    --  and has 19 digits, but the maximum number of 9's that can be represented
+    --  in Integer_64 is only 18.
+ 
+    --  The first prerequisite of the implementation is that the scaled divide
+    --  does not overflow, which means that the absolute value of the bounds of
+    --  the subtype must be smaller than 10**Maxdigs * 2**(Int'Size - 1).
+    --  Otherwise Constraint_Error is raised by the scaled divide operation.
+ 
+    --  The second prerequisite is that the computation of the operands does not
+    --  overflow, which means that, if the small is larger than 1, it is either
+    --  an integer or its numerator and denominator must be both smaller than
+    --  the power 10**(Maxdigs - 1).
+ 
+    ----------------
+    -- Fore_Fixed --
+    ----------------
+ 
+    function Fore_Fixed (Lo, Hi, Num, Den : Int; Scale : Integer) return Natural
+    is
+       pragma Assert (Num < 0 and then Den < 0);
+       --  Accept only negative numbers to allow -2**(Int'Size - 1)
+ 
+       function Negative_Abs (Val : Int) return Int is
+         (if Val <= 0 then Val else -Val);
+       --  Return the opposite of the absolute value of Val
+ 
+       T : Int := Int'Min (Negative_Abs (Lo), Negative_Abs (Hi));
+       F : Natural;
+ 
+       Q, R : Int;
+ 
+    begin
+       --  Initial value of 2 allows for sign and mandatory single digit
+ 
+       F := 2;
+ 
+       --  The easy case is when Num is not larger than Den in magnitude,
+       --  i.e. if S = Num / Den, then S <= 1, in which case we can just
+       --  compute the product Q = T * S.
+ 
+       if Num >= Den then
+          Scaled_Divide (T, Num, Den, Q, R, Round => False);
+          T := Q;
+ 
+       --  Otherwise S > 1 and thus Scale <= 0, compute Q and R such that
+ 
+       --    T * Num = Q * (Den * 10**(-D)) + R
+ 
+       --  with
+ 
+       --    D = Integer'Max (-Maxdigs, Scale - 1)
+ 
+       --  then reason on Q if it is non-zero or else on R / Den.
+ 
+       --  This works only if Den * 10**(-D) does not overflow, which is true
+       --  if Den = 1. Suppose that Num corresponds to the maximum value of -D,
+       --  i.e. Maxdigs and 10**(-D) = 10**Maxdigs. If you change Den into 10,
+       --  then S becomes 10 times smaller and, therefore, Scale is incremented
+       --  by 1, which means that -D is decremented by 1 provided that Scale was
+       --  initially not smaller than 1 - Maxdigs, so the multiplication still
+       --  does not overflow. But you need to reach 10 to trigger this effect,
+       --  which means that a leeway of 10 is required, so let's restrict this
+       --  to a Num for which 10**(-D) <= 10**(Maxdigs - 1). To sum up, if S is
+       --  the ratio of two integers with
+ 
+       --    1 < Den < Num <= B
+ 
+       --  where B is a fixed limit, then the multiplication does not overflow.
+       --  B can be taken as the largest integer Small such that D = 1 - Maxdigs
+       --  i.e. such that Scale = 2 - Maxdigs, which is 10**(Maxdigs - 1) - 1.
+ 
+       else
+          declare
+             D : constant Integer := Integer'Max (-Maxdigs, Scale - 1);
+ 
+          begin
+             Scaled_Divide (T, Num, Den * 10**(-D), Q, R, Round => False);
+ 
+             if Q /= 0 then
+                T := Q;
+                F := F - D;
+             else
+                T := R / Den;
+             end if;
+          end;
+       end if;
+ 
+       --  Loop to increase Fore as needed to include full range of values
+ 
+       while T <= -10 or else T >= 10 loop
+          T := T / 10;
+          F := F + 1;
+       end loop;
+ 
+       return F;
+    end Fore_Fixed;
+ 
+ end System.Fore_F;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-fore_f.ads gcc-11.1.0/gcc/ada/libgnat/s-fore_f.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-fore_f.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-fore_f.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,54 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                        S Y S T E M . F O R E _ F                         --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routine used for the Fore attribute of ordinary
+ --  fixed point types whose Small is the ratio of two Int values.
+ 
+ generic
+ 
+    type Int is range <>;
+ 
+    with procedure Scaled_Divide
+           (X, Y, Z : Int;
+            Q, R : out Int;
+            Round : Boolean);
+ 
+ package System.Fore_F is
+    pragma Pure;
+ 
+    function Fore_Fixed
+      (Lo, Hi, Num, Den : Int; Scale : Integer) return Natural;
+    --  Compute Fore attribute value for an ordinary fixed point type. The
+    --  parameters are the low and high bounds (in units of small), the small
+    --  Num/Den and the associated scale, which is the smallest integer N such
+    --  that 10**N * (Num/Den) is greater or equal to 1, if it is nonpositive.
+ 
+ end System.Fore_F;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-forrea.adb gcc-11.1.0/gcc/ada/libgnat/s-forrea.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-forrea.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-forrea.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,57 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                     S Y S T E M . F O R E _ R E A L                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package body System.Fore_Real is
+ 
+    ---------------
+    -- Fore_Real --
+    ---------------
+ 
+    function Fore_Real (Lo, Hi : Long_Long_Float) return Natural is
+       T : Long_Long_Float := Long_Long_Float'Max (abs Lo, abs Hi);
+       F : Natural;
+ 
+    begin
+       --  Initial value of 2 allows for sign and mandatory single digit
+ 
+       F := 2;
+ 
+       --  Loop to increase Fore as needed to include full range of values
+ 
+       while T >= 10.0 loop
+          T := T / 10.0;
+          F := F + 1;
+       end loop;
+ 
+       return F;
+    end Fore_Real;
+ 
+ end System.Fore_Real;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-forrea.ads gcc-11.1.0/gcc/ada/libgnat/s-forrea.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-forrea.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-forrea.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,42 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                     S Y S T E M . F O R E _ R E A L                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routine used for the Fore attribute of ordinary
+ --  fixed point types whose Small is neither an integer nor its reciprocal.
+ 
+ package System.Fore_Real is
+    pragma Pure;
+ 
+    function Fore_Real (Lo, Hi : Long_Long_Float) return Natural;
+    --  Compute Fore attribute value for a fixed point type. The parameters
+    --  are the low and high bounds, converted to Long_Long_Float.
+ 
+ end System.Fore_Real;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-gearop.adb gcc-11.1.0/gcc/ada/libgnat/s-gearop.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-gearop.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-gearop.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2006-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2006-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Generic_Array_Operat
*** 240,245 ****
--- 240,247 ----
           for J in N'Range (2) loop
              N (Row - M'First (1) + N'First (1), J) :=
                N (Row - M'First (1) + N'First (1), J) / Scale;
+             pragma Annotate
+               (CodePeer, False_Positive, "divide by zero", "Scale /= 0");
           end loop;
        end Divide_Row;
  
*************** package body System.Generic_Array_Operat
*** 602,607 ****
--- 604,612 ----
           end if;
  
        elsif X > Real'Base'Last then
+          pragma Annotate
+            (CodePeer, Intentional,
+             "test always false", "test for infinity");
  
           --  X is infinity, which is its own square root
  
*************** package body System.Generic_Array_Operat
*** 627,632 ****
--- 632,639 ----
        --  of precision.
  
        for J in 1 .. 8 loop
+          pragma Assert (Root /= 0.0);
+ 
           Next := (Root + X / Root) / 2.0;
           exit when Root = Next;
           Root := Next;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-gearop.ads gcc-11.1.0/gcc/ada/libgnat/s-gearop.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-gearop.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-gearop.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-genbig.adb gcc-11.1.0/gcc/ada/libgnat/s-genbig.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-genbig.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-genbig.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2012-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2012-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,45 ****
  
  --  This package provides arbitrary precision signed integer arithmetic.
  
- with System;                  use System;
- with System.Secondary_Stack;  use System.Secondary_Stack;
- with System.Storage_Elements; use System.Storage_Elements;
- 
  package body System.Generic_Bignums is
  
     use Interfaces;
     --  So that operations on Unsigned_32/Unsigned_64 are available
  
     type DD is mod Base ** 2;
     --  Double length digit used for intermediate computations
  
--- 31,43 ----
  
  --  This package provides arbitrary precision signed integer arithmetic.
  
  package body System.Generic_Bignums is
  
     use Interfaces;
     --  So that operations on Unsigned_32/Unsigned_64 are available
  
+    use Shared_Bignums;
+ 
     type DD is mod Base ** 2;
     --  Double length digit used for intermediate computations
  
*************** package body System.Generic_Bignums is
*** 65,82 ****
     function Add
       (X, Y  : Digit_Vector;
        X_Neg : Boolean;
!       Y_Neg : Boolean) return Bignum
     with
       Pre => X'First = 1 and then Y'First = 1;
     --  This procedure adds two signed numbers returning the Sum, it is used
     --  for both addition and subtraction. The value computed is X + Y, with
     --  X_Neg and Y_Neg giving the signs of the operands.
  
-    function Allocate_Bignum (Len : Length) return Bignum with
-      Post => Allocate_Bignum'Result.Len = Len;
-    --  Allocate Bignum value of indicated length on secondary stack. On return
-    --  the Neg and D fields are left uninitialized.
- 
     type Compare_Result is (LT, EQ, GT);
     --  Indicates result of comparison in following call
  
--- 63,75 ----
     function Add
       (X, Y  : Digit_Vector;
        X_Neg : Boolean;
!       Y_Neg : Boolean) return Big_Integer
     with
       Pre => X'First = 1 and then Y'First = 1;
     --  This procedure adds two signed numbers returning the Sum, it is used
     --  for both addition and subtraction. The value computed is X + Y, with
     --  X_Neg and Y_Neg giving the signs of the operands.
  
     type Compare_Result is (LT, EQ, GT);
     --  Indicates result of comparison in following call
  
*************** package body System.Generic_Bignums is
*** 90,97 ****
  
     procedure Div_Rem
       (X, Y              : Bignum;
!       Quotient          : out Bignum;
!       Remainder         : out Bignum;
        Discard_Quotient  : Boolean := False;
        Discard_Remainder : Boolean := False);
     --  Returns the Quotient and Remainder from dividing abs (X) by abs (Y). The
--- 83,90 ----
  
     procedure Div_Rem
       (X, Y              : Bignum;
!       Quotient          : out Big_Integer;
!       Remainder         : out Big_Integer;
        Discard_Quotient  : Boolean := False;
        Discard_Remainder : Boolean := False);
     --  Returns the Quotient and Remainder from dividing abs (X) by abs (Y). The
*************** package body System.Generic_Bignums is
*** 99,116 ****
     --  Quotient is undefined on return, and if Discard_Remainder is True, then
     --  Remainder is undefined on return. Service routine for Big_Div/Rem/Mod.
  
-    procedure Free_Bignum (X : Bignum) is null;
-    --  Called to free a Bignum value used in intermediate computations. In
-    --  this implementation using the secondary stack, it does nothing at all,
-    --  because we rely on Mark/Release, but it may be of use for some
-    --  alternative implementation.
- 
     function Normalize
       (X   : Digit_Vector;
!       Neg : Boolean := False) return Bignum;
!    --  Given a digit vector and sign, allocate and construct a Bignum value.
!    --  Note that X may have leading zeroes which must be removed, and if the
!    --  result is zero, the sign is forced positive.
  
     ---------
     -- Add --
--- 92,107 ----
     --  Quotient is undefined on return, and if Discard_Remainder is True, then
     --  Remainder is undefined on return. Service routine for Big_Div/Rem/Mod.
  
     function Normalize
       (X   : Digit_Vector;
!       Neg : Boolean := False) return Big_Integer;
!    --  Given a digit vector and sign, allocate and construct a big integer
!    --  value. Note that X may have leading zeroes which must be removed, and if
!    --  the result is zero, the sign is forced positive.
!    --  If X is too big, Storage_Error is raised.
! 
!    function "**" (X : Bignum; Y : SD) return Big_Integer;
!    --  Exponentiation routine where we know right operand is one word
  
     ---------
     -- Add --
*************** package body System.Generic_Bignums is
*** 119,125 ****
     function Add
       (X, Y  : Digit_Vector;
        X_Neg : Boolean;
!       Y_Neg : Boolean) return Bignum
     is
     begin
        --  If signs are the same, we are doing an addition, it is convenient to
--- 110,116 ----
     function Add
       (X, Y  : Digit_Vector;
        X_Neg : Boolean;
!       Y_Neg : Boolean) return Big_Integer
     is
     begin
        --  If signs are the same, we are doing an addition, it is convenient to
*************** package body System.Generic_Bignums is
*** 202,274 ****
        end if;
     end Add;
  
-    ---------------------
-    -- Allocate_Bignum --
-    ---------------------
- 
-    function Allocate_Bignum (Len : Length) return Bignum is
-       Addr : Address;
- 
-    begin
-       --  Allocation on the heap
- 
-       if not Use_Secondary_Stack then
-          declare
-             B : Bignum;
-          begin
-             B := new Bignum_Data'(Len, False, (others => 0));
-             return B;
-          end;
- 
-       --  Allocation on the secondary stack
- 
-       else
-          --  Note: The approach used here is designed to avoid strict aliasing
-          --  warnings that appeared previously using unchecked conversion.
- 
-          SS_Allocate (Addr, Storage_Offset (4 + 4 * Len));
- 
-          declare
-             B : Bignum;
-             for B'Address use Addr'Address;
-             pragma Import (Ada, B);
- 
-             BD : Bignum_Data (Len);
-             for BD'Address use Addr;
-             pragma Import (Ada, BD);
- 
-             --  Expose a writable view of discriminant BD.Len so that we can
-             --  initialize it. We need to use the exact layout of the record
-             --  to ensure that the Length field has 24 bits as expected.
- 
-             type Bignum_Data_Header is record
-                Len : Length;
-                Neg : Boolean;
-             end record;
- 
-             for Bignum_Data_Header use record
-                Len at 0 range 0 .. 23;
-                Neg at 3 range 0 .. 7;
-             end record;
- 
-             BDH : Bignum_Data_Header;
-             for BDH'Address use BD'Address;
-             pragma Import (Ada, BDH);
- 
-             pragma Assert (BDH.Len'Size = BD.Len'Size);
- 
-          begin
-             BDH.Len := Len;
-             return B;
-          end;
-       end if;
-    end Allocate_Bignum;
- 
     -------------
     -- Big_Abs --
     -------------
  
!    function Big_Abs (X : Bignum) return Bignum is
     begin
        return Normalize (X.D);
     end Big_Abs;
--- 193,203 ----
        end if;
     end Add;
  
     -------------
     -- Big_Abs --
     -------------
  
!    function Big_Abs (X : Bignum) return Big_Integer is
     begin
        return Normalize (X.D);
     end Big_Abs;
*************** package body System.Generic_Bignums is
*** 277,283 ****
     -- Big_Add --
     -------------
  
!    function Big_Add  (X, Y : Bignum) return Bignum is
     begin
        return Add (X.D, Y.D, X.Neg, Y.Neg);
     end Big_Add;
--- 206,212 ----
     -- Big_Add --
     -------------
  
!    function Big_Add  (X, Y : Bignum) return Big_Integer is
     begin
        return Add (X.D, Y.D, X.Neg, Y.Neg);
     end Big_Add;
*************** package body System.Generic_Bignums is
*** 305,389 ****
     --   13    -5   -2      -13   -5     2
     --   14    -5   -2      -14   -5     2
  
!    function Big_Div  (X, Y : Bignum) return Bignum is
!       Q, R : Bignum;
     begin
        Div_Rem (X, Y, Q, R, Discard_Remainder => True);
!       Q.Neg := Q.Len > 0 and then (X.Neg xor Y.Neg);
        return Q;
     end Big_Div;
  
!    -------------
!    -- Big_Exp --
!    -------------
! 
!    function Big_Exp  (X, Y : Bignum) return Bignum is
! 
!       function "**" (X : Bignum; Y : SD) return Bignum;
!       --  Internal routine where we know right operand is one word
! 
!       ----------
!       -- "**" --
!       ----------
! 
!       function "**" (X : Bignum; Y : SD) return Bignum is
!       begin
!          case Y is
! 
!             --  X ** 0 is 1
! 
!             when 0 =>
!                return Normalize (One_Data);
! 
!             --  X ** 1 is X
  
!             when 1 =>
!                return Normalize (X.D);
  
!             --  X ** 2 is X * X
  
!             when 2 =>
!                return Big_Mul (X, X);
  
!             --  For X greater than 2, use the recursion
  
!             --  X even, X ** Y = (X ** (Y/2)) ** 2;
!             --  X odd,  X ** Y = (X ** (Y/2)) ** 2 * X;
  
!             when others =>
!                declare
!                   XY2  : constant Bignum := X ** (Y / 2);
!                   XY2S : constant Bignum := Big_Mul (XY2, XY2);
!                   Res  : Bignum;
  
!                begin
!                   Free_Bignum (XY2);
  
!                   --  Raise storage error if intermediate value is getting too
!                   --  large, which we arbitrarily define as 200 words for now.
  
!                   if XY2S.Len > 200 then
!                      Free_Bignum (XY2S);
!                      raise Storage_Error with
!                        "exponentiation result is too large";
!                   end if;
  
!                   --  Otherwise take care of even/odd cases
  
!                   if (Y and 1) = 0 then
!                      return XY2S;
  
!                   else
!                      Res := Big_Mul (XY2S, X);
!                      Free_Bignum (XY2S);
!                      return Res;
!                   end if;
!                end;
!          end case;
!       end "**";
  
!    --  Start of processing for Big_Exp
  
     begin
        --  Error if right operand negative
  
--- 234,302 ----
     --   13    -5   -2      -13   -5     2
     --   14    -5   -2      -14   -5     2
  
!    function Big_Div  (X, Y : Bignum) return Big_Integer is
!       Q, R : aliased Big_Integer;
     begin
        Div_Rem (X, Y, Q, R, Discard_Remainder => True);
!       To_Bignum (Q).Neg := To_Bignum (Q).Len > 0 and then (X.Neg xor Y.Neg);
        return Q;
     end Big_Div;
  
!    ----------
!    -- "**" --
!    ----------
  
!    function "**" (X : Bignum; Y : SD) return Big_Integer is
!    begin
!       case Y is
  
!          --  X ** 0 is 1
  
!          when 0 =>
!             return Normalize (One_Data);
  
!          --  X ** 1 is X
  
!          when 1 =>
!             return Normalize (X.D);
  
!          --  X ** 2 is X * X
  
!          when 2 =>
!             return Big_Mul (X, X);
  
!          --  For X greater than 2, use the recursion
  
!          --  X even, X ** Y = (X ** (Y/2)) ** 2;
!          --  X odd,  X ** Y = (X ** (Y/2)) ** 2 * X;
  
!          when others =>
!             declare
!                XY2  : aliased Big_Integer := X ** (Y / 2);
!                XY2S : aliased Big_Integer :=
!                  Big_Mul (To_Bignum (XY2), To_Bignum (XY2));
  
!             begin
!                Free_Big_Integer (XY2);
  
!                if (Y and 1) = 0 then
!                   return XY2S;
!                else
!                   return Res : constant Big_Integer :=
!                     Big_Mul (To_Bignum (XY2S), X)
!                   do
!                      Free_Big_Integer (XY2S);
!                   end return;
!                end if;
!             end;
!       end case;
!    end "**";
  
!    -------------
!    -- Big_Exp --
!    -------------
  
+    function Big_Exp  (X, Y : Bignum) return Big_Integer is
     begin
        --  Error if right operand negative
  
*************** package body System.Generic_Bignums is
*** 431,436 ****
--- 344,470 ----
        end if;
     end Big_Exp;
  
+    -------------
+    -- Big_And --
+    -------------
+ 
+    function Big_And (X, Y : Bignum) return Big_Integer is
+    begin
+       if X.Len > Y.Len then
+          return Big_And (X => Y, Y => X);
+       end if;
+ 
+       --  X is the smallest integer
+ 
+       declare
+          Result : Digit_Vector (1 .. X.Len);
+          Diff   : constant Length := Y.Len - X.Len;
+       begin
+          for J in 1 .. X.Len loop
+             Result (J) := X.D (J) and Y.D (J + Diff);
+          end loop;
+ 
+          return Normalize (Result, X.Neg and Y.Neg);
+       end;
+    end Big_And;
+ 
+    ------------
+    -- Big_Or --
+    ------------
+ 
+    function Big_Or  (X, Y : Bignum) return Big_Integer is
+    begin
+       if X.Len < Y.Len then
+          return Big_Or (X => Y, Y => X);
+       end if;
+ 
+       --  X is the largest integer
+ 
+       declare
+          Result : Digit_Vector (1 .. X.Len);
+          Index  : Length;
+          Diff   : constant Length := X.Len - Y.Len;
+ 
+       begin
+          Index := 1;
+ 
+          while Index <= Diff loop
+             Result (Index) := X.D (Index);
+             Index := Index + 1;
+          end loop;
+ 
+          for J in 1 .. Y.Len loop
+             Result (Index) := X.D (Index) or Y.D (J);
+             Index := Index + 1;
+          end loop;
+ 
+          return Normalize (Result, X.Neg or Y.Neg);
+       end;
+    end Big_Or;
+ 
+    --------------------
+    -- Big_Shift_Left --
+    --------------------
+ 
+    function Big_Shift_Left (X : Bignum; Amount : Natural) return Big_Integer is
+    begin
+       if X.Neg then
+          raise Constraint_Error;
+       elsif Amount = 0 then
+          return Allocate_Big_Integer (X.D, False);
+       end if;
+ 
+       declare
+          Shift  : constant Natural := Amount rem SD'Size;
+          Result : Digit_Vector (0 .. X.Len + Amount / SD'Size);
+          Carry  : SD := 0;
+ 
+       begin
+          for J in X.Len + 1 .. Result'Last loop
+             Result (J) := 0;
+          end loop;
+ 
+          for J in reverse 1 .. X.Len loop
+             Result (J) := Shift_Left (X.D (J), Shift) or Carry;
+             Carry := Shift_Right (X.D (J), SD'Size - Shift);
+          end loop;
+ 
+          Result (0) := Carry;
+          return Normalize (Result, False);
+       end;
+    end Big_Shift_Left;
+ 
+    ---------------------
+    -- Big_Shift_Right --
+    ---------------------
+ 
+    function Big_Shift_Right
+      (X : Bignum; Amount : Natural) return Big_Integer is
+    begin
+       if X.Neg then
+          raise Constraint_Error;
+       elsif Amount = 0 then
+          return Allocate_Big_Integer (X.D, False);
+       end if;
+ 
+       declare
+          Shift  : constant Natural := Amount rem SD'Size;
+          Result : Digit_Vector (1 .. X.Len - Amount / SD'Size);
+          Carry  : SD := 0;
+ 
+       begin
+          for J in 1 .. Result'Last - 1 loop
+             Result (J) := Shift_Right (X.D (J), Shift) or Carry;
+             Carry := Shift_Left (X.D (J), SD'Size - Shift);
+          end loop;
+ 
+          Result (Result'Last) :=
+            Shift_Right (X.D (Result'Last), Shift) or Carry;
+ 
+          return Normalize (Result, False);
+       end;
+    end Big_Shift_Right;
+ 
     ------------
     -- Big_EQ --
     ------------
*************** package body System.Generic_Bignums is
*** 499,506 ****
     --   13    -5      -2        3       -13   -5      -3       -3
     --   14    -5      -1        4       -14   -5      -4       -4
  
!    function Big_Mod (X, Y : Bignum) return Bignum is
!       Q, R : Bignum;
  
     begin
        --  If signs are same, result is same as Rem
--- 533,540 ----
     --   13    -5      -2        3       -13   -5      -3       -3
     --   14    -5      -1        4       -14   -5      -4       -4
  
!    function Big_Mod (X, Y : Bignum) return Big_Integer is
!       Q, R : aliased Big_Integer;
  
     begin
        --  If signs are same, result is same as Rem
*************** package body System.Generic_Bignums is
*** 517,533 ****
  
           --  Zero result is unchanged
  
!          if R.Len = 0 then
              return R;
  
           --  Otherwise adjust result
  
           else
              declare
!                T1 : constant Bignum := Big_Sub (Y, R);
              begin
!                T1.Neg := Y.Neg;
!                Free_Bignum (R);
                 return T1;
              end;
           end if;
--- 551,567 ----
  
           --  Zero result is unchanged
  
!          if To_Bignum (R).Len = 0 then
              return R;
  
           --  Otherwise adjust result
  
           else
              declare
!                T1 : aliased Big_Integer := Big_Sub (Y, To_Bignum (R));
              begin
!                To_Bignum (T1).Neg := Y.Neg;
!                Free_Big_Integer (R);
                 return T1;
              end;
           end if;
*************** package body System.Generic_Bignums is
*** 538,544 ****
     -- Big_Mul --
     -------------
  
!    function Big_Mul (X, Y : Bignum) return Bignum is
        Result : Digit_Vector (1 .. X.Len + Y.Len) := (others => 0);
        --  Accumulate result (max length of result is sum of operand lengths)
  
--- 572,578 ----
     -- Big_Mul --
     -------------
  
!    function Big_Mul (X, Y : Bignum) return Big_Integer is
        Result : Digit_Vector (1 .. X.Len + Y.Len) := (others => 0);
        --  Accumulate result (max length of result is sum of operand lengths)
  
*************** package body System.Generic_Bignums is
*** 589,595 ****
     -- Big_Neg --
     -------------
  
!    function Big_Neg (X : Bignum) return Bignum is
     begin
        return Normalize (X.D, not X.Neg);
     end Big_Neg;
--- 623,629 ----
     -- Big_Neg --
     -------------
  
!    function Big_Neg (X : Bignum) return Big_Integer is
     begin
        return Normalize (X.D, not X.Neg);
     end Big_Neg;
*************** package body System.Generic_Bignums is
*** 617,627 ****
     --   13    -5     3      -13   -5     -3
     --   14    -5     4      -14   -5     -4
  
!    function Big_Rem (X, Y : Bignum) return Bignum is
!       Q, R : Bignum;
     begin
        Div_Rem (X, Y, Q, R, Discard_Quotient => True);
!       R.Neg := R.Len > 0 and then X.Neg;
        return R;
     end Big_Rem;
  
--- 651,661 ----
     --   13    -5     3      -13   -5     -3
     --   14    -5     4      -14   -5     -4
  
!    function Big_Rem (X, Y : Bignum) return Big_Integer is
!       Q, R : aliased Big_Integer;
     begin
        Div_Rem (X, Y, Q, R, Discard_Quotient => True);
!       To_Bignum (R).Neg := To_Bignum (R).Len > 0 and then X.Neg;
        return R;
     end Big_Rem;
  
*************** package body System.Generic_Bignums is
*** 629,635 ****
     -- Big_Sub --
     -------------
  
!    function Big_Sub (X, Y : Bignum) return Bignum is
     begin
        --  If right operand zero, return left operand (avoiding sharing)
  
--- 663,669 ----
     -- Big_Sub --
     -------------
  
!    function Big_Sub (X, Y : Bignum) return Big_Integer is
     begin
        --  If right operand zero, return left operand (avoiding sharing)
  
*************** package body System.Generic_Bignums is
*** 681,691 ****
  
     procedure Div_Rem
       (X, Y              : Bignum;
!       Quotient          : out Bignum;
!       Remainder         : out Bignum;
        Discard_Quotient  : Boolean := False;
!       Discard_Remainder : Boolean := False)
!    is
     begin
        --  Error if division by zero
  
--- 715,724 ----
  
     procedure Div_Rem
       (X, Y              : Bignum;
!       Quotient          : out Big_Integer;
!       Remainder         : out Big_Integer;
        Discard_Quotient  : Boolean := False;
!       Discard_Remainder : Boolean := False) is
     begin
        --  Error if division by zero
  
*************** package body System.Generic_Bignums is
*** 698,705 ****
        --  If X < Y then quotient is zero and remainder is X
  
        if Compare (X.D, Y.D, False, False) = LT then
!          Remainder := Normalize (X.D);
!          Quotient  := Normalize (Zero_Data);
           return;
  
        --  If both X and Y are less than 2**63-1, we can use Long_Long_Integer
--- 731,744 ----
        --  If X < Y then quotient is zero and remainder is X
  
        if Compare (X.D, Y.D, False, False) = LT then
!          if not Discard_Quotient then
!             Quotient := Normalize (Zero_Data);
!          end if;
! 
!          if not Discard_Remainder then
!             Remainder := Normalize (X.D);
!          end if;
! 
           return;
  
        --  If both X and Y are less than 2**63-1, we can use Long_Long_Integer
*************** package body System.Generic_Bignums is
*** 714,721 ****
              A : constant LLI := abs (From_Bignum (X));
              B : constant LLI := abs (From_Bignum (Y));
           begin
!             Quotient  := To_Bignum (A / B);
!             Remainder := To_Bignum (A rem B);
              return;
           end;
  
--- 753,766 ----
              A : constant LLI := abs (From_Bignum (X));
              B : constant LLI := abs (From_Bignum (Y));
           begin
!             if not Discard_Quotient then
!                Quotient := To_Bignum (A / B);
!             end if;
! 
!             if not Discard_Remainder then
!                Remainder := To_Bignum (A rem B);
!             end if;
! 
              return;
           end;
  
*************** package body System.Generic_Bignums is
*** 733,745 ****
              ND := 0;
              for J in 1 .. X.Len loop
                 ND := Base * ND + DD (X.D (J));
                 Result (J) := SD (ND / Div);
                 ND := ND rem Div;
              end loop;
  
!             Quotient  := Normalize (Result);
!             Remdr (1) := SD (ND);
!             Remainder := Normalize (Remdr);
              return;
           end;
        end if;
--- 778,797 ----
              ND := 0;
              for J in 1 .. X.Len loop
                 ND := Base * ND + DD (X.D (J));
+                pragma Assert (Div /= 0);
                 Result (J) := SD (ND / Div);
                 ND := ND rem Div;
              end loop;
  
!             if not Discard_Quotient then
!                Quotient  := Normalize (Result);
!             end if;
! 
!             if not Discard_Remainder then
!                Remdr (1) := SD (ND);
!                Remainder := Normalize (Remdr);
!             end if;
! 
              return;
           end;
        end if;
*************** package body System.Generic_Bignums is
*** 968,976 ****
           if not Discard_Remainder then
              declare
                 Remdr : DD;
- 
              begin
                 Remdr := 0;
                 for K in 1 .. n loop
                    Remdr := Base * Remdr + DD (u (m + K));
                    r (K) := SD (Remdr / d);
--- 1020,1028 ----
           if not Discard_Remainder then
              declare
                 Remdr : DD;
              begin
                 Remdr := 0;
+ 
                 for K in 1 .. n loop
                    Remdr := Base * Remdr + DD (u (m + K));
                    r (K) := SD (Remdr / d);
*************** package body System.Generic_Bignums is
*** 1043,1053 ****
     -- Normalize --
     ---------------
  
     function Normalize
       (X   : Digit_Vector;
!       Neg : Boolean := False) return Bignum
     is
-       B : Bignum;
        J : Length;
  
     begin
--- 1095,1106 ----
     -- Normalize --
     ---------------
  
+    Bignum_Limit : constant := 200;
+ 
     function Normalize
       (X   : Digit_Vector;
!       Neg : Boolean := False) return Big_Integer
     is
        J : Length;
  
     begin
*************** package body System.Generic_Bignums is
*** 1056,1128 ****
           J := J + 1;
        end loop;
  
!       B := Allocate_Bignum (X'Last - J + 1);
!       B.Neg := B.Len > 0 and then Neg;
!       B.D := X (J .. X'Last);
!       return B;
     end Normalize;
  
     ---------------
     -- To_Bignum --
     ---------------
  
!    function To_Bignum (X : Long_Long_Integer) return Bignum is
!       R : Bignum;
  
     begin
        if X = 0 then
!          R := Allocate_Bignum (0);
  
        --  One word result
  
        elsif X in -(2 ** 32 - 1) .. +(2 ** 32 - 1) then
!          R := Allocate_Bignum (1);
!          R.D (1) := SD (abs (X));
  
!       --  Largest negative number annoyance
  
!       elsif X = Long_Long_Integer'First then
!          R := Allocate_Bignum (2);
!          R.D (1) := 2 ** 31;
!          R.D (2) := 0;
  
!       --  Normal two word case
  
        else
!          R := Allocate_Bignum (2);
!          R.D (2) := SD (abs (X) mod Base);
!          R.D (1) := SD (abs (X) / Base);
        end if;
- 
-       R.Neg := X < 0;
-       return R;
     end To_Bignum;
  
!    function To_Bignum (X : Unsigned_64) return Bignum is
!       R : Bignum;
  
     begin
        if X = 0 then
!          R := Allocate_Bignum (0);
  
        --  One word result
  
        elsif X < 2 ** 32 then
!          R := Allocate_Bignum (1);
!          R.D (1) := SD (X);
  
        --  Two word result
  
        else
!          R := Allocate_Bignum (2);
!          R.D (2) := SD (X mod Base);
!          R.D (1) := SD (X / Base);
        end if;
  
!       R.Neg := False;
!       return R;
     end To_Bignum;
  
     -------------
     -- Is_Zero --
     -------------
--- 1109,1339 ----
           J := J + 1;
        end loop;
  
!       if X'Last - J > Bignum_Limit then
!          raise Storage_Error with "big integer limit exceeded";
!       end if;
! 
!       return Allocate_Big_Integer (X (J .. X'Last), J <= X'Last and then Neg);
     end Normalize;
  
     ---------------
     -- To_Bignum --
     ---------------
  
!    function To_Bignum (X : Long_Long_Long_Integer) return Big_Integer is
! 
!       function Convert_128
!         (X : Long_Long_Long_Integer; Neg : Boolean) return Big_Integer;
!       --  Convert a 128 bits natural integer to a Big_Integer
! 
!       -----------------
!       -- Convert_128 --
!       -----------------
! 
!       function Convert_128
!         (X : Long_Long_Long_Integer; Neg : Boolean) return Big_Integer
!       is
!          Vector : Digit_Vector (1 .. 4);
!          High   : constant Unsigned_64 :=
!            Unsigned_64 (Shift_Right (Unsigned_128 (X), 64));
!          Low    : constant Unsigned_64 :=
!            Unsigned_64 (Unsigned_128 (X) and 16#FFFF_FFFF_FFFF_FFFF#);
! 
!       begin
!          Vector (1) := SD (High / Base);
!          Vector (2) := SD (High mod Base);
!          Vector (3) := SD (Low / Base);
!          Vector (4) := SD (Low mod Base);
!          return Normalize (Vector, Neg);
!       end Convert_128;
  
     begin
        if X = 0 then
!          return Allocate_Big_Integer ((1 .. 0 => <>), False);
  
        --  One word result
  
        elsif X in -(2 ** 32 - 1) .. +(2 ** 32 - 1) then
!          return Allocate_Big_Integer ((1 => SD (abs X)), X < 0);
  
!       --  Large negative number annoyance
  
!       elsif X = -2 ** 63 then
!          return Allocate_Big_Integer ((2 ** 31, 0), True);
  
!       elsif Long_Long_Long_Integer'Size = 128
!         and then X = Long_Long_Long_Integer'First
!       then
!          return Allocate_Big_Integer ((2 ** 31, 0, 0, 0), True);
! 
!       --  Other negative numbers
! 
!       elsif X < 0 then
!          if Long_Long_Long_Integer'Size = 64 then
!             return Allocate_Big_Integer
!                      ((SD ((-X) / Base), SD ((-X) mod Base)), True);
!          else
!             return Convert_128 (-X, True);
!          end if;
! 
!       --  Positive numbers
  
        else
!          if Long_Long_Long_Integer'Size = 64 then
!             return Allocate_Big_Integer
!                      ((SD (X / Base), SD (X mod Base)), False);
!          else
!             return Convert_128 (X, False);
!          end if;
        end if;
     end To_Bignum;
  
!    function To_Bignum (X : Long_Long_Integer) return Big_Integer is
!    begin
!       return To_Bignum (Long_Long_Long_Integer (X));
!    end To_Bignum;
  
+    function To_Bignum (X : Unsigned_128) return Big_Integer is
     begin
        if X = 0 then
!          return Allocate_Big_Integer ((1 .. 0 => <>), False);
  
        --  One word result
  
        elsif X < 2 ** 32 then
!          return Allocate_Big_Integer ((1 => SD (X)), False);
  
        --  Two word result
  
+       elsif Shift_Right (X, 32) < 2 ** 32 then
+          return Allocate_Big_Integer ((SD (X / Base), SD (X mod Base)), False);
+ 
+       --  Three or four word result
+ 
        else
!          declare
!             Vector : Digit_Vector (1 .. 4);
!             High   : constant Unsigned_64 := Unsigned_64 (Shift_Right (X, 64));
!             Low    : constant Unsigned_64 :=
!               Unsigned_64 (X and 16#FFFF_FFFF_FFFF_FFFF#);
! 
!          begin
!             Vector (1) := SD (High / Base);
!             Vector (2) := SD (High mod Base);
!             Vector (3) := SD (Low / Base);
!             Vector (4) := SD (Low mod Base);
!             return Normalize (Vector, False);
!          end;
        end if;
+    end To_Bignum;
  
!    function To_Bignum (X : Unsigned_64) return Big_Integer is
!    begin
!       return To_Bignum (Unsigned_128 (X));
     end To_Bignum;
  
+    ---------------
+    -- To_String --
+    ---------------
+ 
+    Hex_Chars : constant array (0 .. 15) of Character := "0123456789ABCDEF";
+ 
+    function To_String
+      (X : Bignum; Width : Natural := 0; Base : Positive := 10) return String
+    is
+       Big_Base : aliased Bignum_Data := (1, False, (1 => SD (Base)));
+ 
+       function Add_Base (S : String) return String;
+       --  Add base information if Base /= 10
+ 
+       function Leading_Padding
+         (Str        : String;
+          Min_Length : Natural;
+          Char       : Character := ' ') return String;
+       --  Return padding of Char concatenated with Str so that the resulting
+       --  string is at least Min_Length long.
+ 
+       function Image (Arg : Bignum) return String;
+       --  Return image of Arg, assuming Arg is positive.
+ 
+       function Image (N : Natural) return String;
+       --  Return image of N, with no leading space.
+ 
+       --------------
+       -- Add_Base --
+       --------------
+ 
+       function Add_Base (S : String) return String is
+       begin
+          if Base = 10 then
+             return S;
+          else
+             return Image (Base) & "#" & S & "#";
+          end if;
+       end Add_Base;
+ 
+       -----------
+       -- Image --
+       -----------
+ 
+       function Image (N : Natural) return String is
+          S : constant String := Natural'Image (N);
+       begin
+          return S (2 .. S'Last);
+       end Image;
+ 
+       function Image (Arg : Bignum) return String is
+       begin
+          if Big_LT (Arg, Big_Base'Unchecked_Access) then
+             return (1 => Hex_Chars (Natural (From_Bignum (Arg))));
+          else
+             declare
+                Div    : aliased Big_Integer;
+                Remain : aliased Big_Integer;
+                R      : Natural;
+ 
+             begin
+                Div_Rem (Arg, Big_Base'Unchecked_Access, Div, Remain);
+                R := Natural (From_Bignum (To_Bignum (Remain)));
+                Free_Big_Integer (Remain);
+ 
+                return S : constant String :=
+                  Image (To_Bignum (Div)) & Hex_Chars (R)
+                do
+                   Free_Big_Integer (Div);
+                end return;
+             end;
+          end if;
+       end Image;
+ 
+       ---------------------
+       -- Leading_Padding --
+       ---------------------
+ 
+       function Leading_Padding
+         (Str        : String;
+          Min_Length : Natural;
+          Char       : Character := ' ') return String is
+       begin
+          return (1 .. Integer'Max (Integer (Min_Length) - Str'Length, 0)
+                         => Char) & Str;
+       end Leading_Padding;
+ 
+       Zero : aliased Bignum_Data := (0, False, D => Zero_Data);
+ 
+    begin
+       if Big_LT (X, Zero'Unchecked_Access) then
+          declare
+             X_Pos : aliased Bignum_Data := (X.Len, not X.Neg, X.D);
+          begin
+             return Leading_Padding
+                      ("-" & Add_Base (Image (X_Pos'Unchecked_Access)), Width);
+          end;
+       else
+          return Leading_Padding (" " & Add_Base (Image (X)), Width);
+       end if;
+    end To_String;
+ 
     -------------
     -- Is_Zero --
     -------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-genbig.ads gcc-11.1.0/gcc/ada/libgnat/s-genbig.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-genbig.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-genbig.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2012-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2012-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,109 ****
  --  and can be used either built into the compiler via System.Bignums or to
  --  implement a default version of Ada.Numerics.Big_Numbers.Big_Integers.
  
- --  If Use_Secondary_Stack is True then all Bignum values are allocated on the
- --  secondary stack. If False, the heap is used and the caller is responsible
- --  for memory management.
- 
- with Ada.Unchecked_Conversion;
  with Interfaces;
  
  generic
!    Use_Secondary_Stack : Boolean;
! package System.Generic_Bignums is
!    pragma Preelaborate;
! 
!    pragma Assert (Long_Long_Integer'Size = 64);
!    --  This package assumes that Long_Long_Integer size is 64 bit (i.e. that it
!    --  has a range of -2**63 to 2**63-1). The front end ensures that the mode
!    --  ELIMINATED is not allowed for overflow checking if this is not the case.
! 
!    subtype Length is Natural range 0 .. 2 ** 23 - 1;
!    --  Represent number of words in Digit_Vector
! 
!    Base : constant := 2 ** 32;
!    --  Digit vectors use this base
! 
!    subtype SD is Interfaces.Unsigned_32;
!    --  Single length digit
  
!    type Digit_Vector is array (Length range <>) of SD;
!    --  Represent digits of a number (most significant digit first)
  
!    type Bignum_Data (Len : Length) is record
!       Neg : Boolean;
!       --  Set if value is negative, never set for zero
  
!       D : Digit_Vector (1 .. Len);
!       --  Digits of number, most significant first, represented in base
!       --  2**Base. No leading zeroes are stored, and the value of zero is
!       --  represented using an empty vector for D.
!    end record;
  
!    for Bignum_Data use record
!       Len at 0 range 0 .. 23;
!       Neg at 3 range 0 .. 7;
!    end record;
  
!    type Bignum is access all Bignum_Data;
!    --  This is the type that is used externally. Possibly this could be a
!    --  private type, but we leave the structure exposed for now. For one
!    --  thing it helps with debugging. Note that this package never shares
!    --  an allocated Bignum value, so for example for X + 0, a copy of X is
!    --  returned, not X itself.
  
!    function To_Bignum is new Ada.Unchecked_Conversion (System.Address, Bignum);
!    function To_Address is new
!      Ada.Unchecked_Conversion (Bignum, System.Address);
  
     --  Note: none of the subprograms in this package modify the Bignum_Data
     --  records referenced by Bignum arguments of mode IN.
  
!    function Big_Add (X, Y : Bignum) return Bignum;  --  "+"
!    function Big_Sub (X, Y : Bignum) return Bignum;  --  "-"
!    function Big_Mul (X, Y : Bignum) return Bignum;  --  "*"
!    function Big_Div (X, Y : Bignum) return Bignum;  --  "/"
!    function Big_Exp (X, Y : Bignum) return Bignum;  --  "**"
!    function Big_Mod (X, Y : Bignum) return Bignum;  --  "mod"
!    function Big_Rem (X, Y : Bignum) return Bignum;  --  "rem"
!    function Big_Neg (X    : Bignum) return Bignum;  --  "-"
!    function Big_Abs (X    : Bignum) return Bignum;  --  "abs"
     --  Perform indicated arithmetic operation on bignum values. No exception
     --  raised except for Div/Mod/Rem by 0 which raises Constraint_Error with
     --  an appropriate message.
  
     function Big_EQ  (X, Y : Bignum) return Boolean;  -- "="
     function Big_NE  (X, Y : Bignum) return Boolean;  -- "/="
     function Big_GE  (X, Y : Bignum) return Boolean;  -- ">="
--- 33,89 ----
  --  and can be used either built into the compiler via System.Bignums or to
  --  implement a default version of Ada.Numerics.Big_Numbers.Big_Integers.
  
  with Interfaces;
+ with System.Shared_Bignums;
  
  generic
!    type Big_Integer is private;
  
!    with function Allocate_Big_Integer
!           (D : Shared_Bignums.Digit_Vector; Neg : Boolean) return Big_Integer;
!    --  Allocate Bignum value with the given contents
  
!    with procedure Free_Big_Integer (X : in out Big_Integer);
!    --  Free the memory associated with X
  
!    with function To_Bignum
!           (X : aliased in out Big_Integer) return Shared_Bignums.Bignum;
!    --  Convert the given Big_Integer to a Bignum
  
! package System.Generic_Bignums is
!    pragma Preelaborate;
  
!    subtype Bignum is Shared_Bignums.Bignum;
  
!    --  Note that this package never shares an allocated Big_Integer value, so
!    --  so for example for X + 0, a copy of X is returned, not X itself.
  
     --  Note: none of the subprograms in this package modify the Bignum_Data
     --  records referenced by Bignum arguments of mode IN.
  
!    function Big_Add (X, Y : Bignum) return Big_Integer;  --  "+"
!    function Big_Sub (X, Y : Bignum) return Big_Integer;  --  "-"
!    function Big_Mul (X, Y : Bignum) return Big_Integer;  --  "*"
!    function Big_Div (X, Y : Bignum) return Big_Integer;  --  "/"
!    function Big_Exp (X, Y : Bignum) return Big_Integer;  --  "**"
!    function Big_Mod (X, Y : Bignum) return Big_Integer;  --  "mod"
!    function Big_Rem (X, Y : Bignum) return Big_Integer;  --  "rem"
!    function Big_Neg (X    : Bignum) return Big_Integer;  --  "-"
!    function Big_Abs (X    : Bignum) return Big_Integer;  --  "abs"
     --  Perform indicated arithmetic operation on bignum values. No exception
     --  raised except for Div/Mod/Rem by 0 which raises Constraint_Error with
     --  an appropriate message.
  
+    function Big_And (X, Y : Bignum) return Big_Integer;  --  "and"
+    function Big_Or  (X, Y : Bignum) return Big_Integer;  --  "or"
+    --  Perform indicated bitwise operation on big num values.
+    --  The negative flags of X and Y are also combined.
+ 
+    function Big_Shift_Left  (X : Bignum; Amount : Natural) return Big_Integer;
+    function Big_Shift_Right (X : Bignum; Amount : Natural) return Big_Integer;
+    --  Perform indicated bitwise operation on big num values.
+    --  Constraint_Error is raised if X is negative.
+ 
     function Big_EQ  (X, Y : Bignum) return Boolean;  -- "="
     function Big_NE  (X, Y : Bignum) return Boolean;  -- "/="
     function Big_GE  (X, Y : Bignum) return Boolean;  -- ">="
*************** package System.Generic_Bignums is
*** 117,134 ****
     --  Returns True if the Bignum value is in the range of Long_Long_Integer,
     --  so that a call to From_Bignum is guaranteed not to raise an exception.
  
!    function To_Bignum (X : Long_Long_Integer) return Bignum;
!    --  Convert Long_Long_Integer to Bignum. No exception can be raised for any
!    --  input argument.
  
!    function To_Bignum (X : Interfaces.Unsigned_64) return Bignum;
!    --  Convert Unsigned_64 to Bignum. No exception can be raised for any
     --  input argument.
  
     function From_Bignum (X : Bignum) return Long_Long_Integer;
     --  Convert Bignum to Long_Long_Integer. Constraint_Error raised with
     --  appropriate message if value is out of range of Long_Long_Integer.
  
     function Is_Zero (X : Bignum) return Boolean;
     --  Return True if X = 0
  
--- 97,128 ----
     --  Returns True if the Bignum value is in the range of Long_Long_Integer,
     --  so that a call to From_Bignum is guaranteed not to raise an exception.
  
!    function To_Bignum (X : Long_Long_Integer) return Big_Integer;
!    --  Convert Long_Long_Integer to a big integer. No exception can be raised
!    --  for any input argument.
  
!    function To_Bignum (X : Long_Long_Long_Integer) return Big_Integer;
!    --  Convert Long_Long_Long_Integer to a big integer. No exception can be
!    --  raised.
! 
!    function To_Bignum (X : Interfaces.Unsigned_64) return Big_Integer;
!    --  Convert Unsigned_64 to a big integer. No exception can be raised for any
     --  input argument.
  
+    function To_Bignum (X : Interfaces.Unsigned_128) return Big_Integer;
+    --  Convert Unsigned_128 to a big integer. No exception can be raised for
+    --  any input argument.
+ 
     function From_Bignum (X : Bignum) return Long_Long_Integer;
     --  Convert Bignum to Long_Long_Integer. Constraint_Error raised with
     --  appropriate message if value is out of range of Long_Long_Integer.
  
+    function To_String
+      (X : Bignum; Width : Natural := 0; Base : Positive := 10)
+       return String;
+    --  Return the image of X, based on the given Width and Base, as defined
+    --  in the RM for Ada.Text_IO. Base should really be in the range 2 .. 16.
+ 
     function Is_Zero (X : Bignum) return Boolean;
     --  Return True if X = 0
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-geveop.adb gcc-11.1.0/gcc/ada/libgnat/s-geveop.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-geveop.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-geveop.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Generic_Vector_Opera
*** 66,71 ****
--- 66,78 ----
        function VP is new Ada.Unchecked_Conversion (Address, Vector_Ptr);
        function EP is new Ada.Unchecked_Conversion (Address, Element_Ptr);
  
+       pragma Assert (VI > 0);
+       --  VI = VU
+       --  VU = Vectors.Vector'Size / Storage_Unit
+       --  Vector'Size = System.Word_Size
+       --  System.Word_Size is a multiple of Storage_Unit
+       --  Vector'Size > Storage_Unit
+       --  VI > 0
        SA : constant Address :=
               AddA (XA, To_Address
                           ((Integer_Address (Length) / VI * VI) and Unaligned));
*************** package body System.Generic_Vector_Opera
*** 111,116 ****
--- 118,130 ----
        function VP is new Ada.Unchecked_Conversion (Address, Vector_Ptr);
        function EP is new Ada.Unchecked_Conversion (Address, Element_Ptr);
  
+       pragma Assert (VI > 0);
+       --  VI = VU
+       --  VU = Vectors.Vector'Size / Storage_Unit
+       --  Vector'Size = System.Word_Size
+       --  System.Word_Size is a multiple of Storage_Unit
+       --  Vector'Size > Storage_Unit
+       --  VI > 0
        SA : constant Address :=
               AddA (XA, To_Address
                           ((Integer_Address (Length) / VI * VI) and Unaligned));
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-geveop.ads gcc-11.1.0/gcc/ada/libgnat/s-geveop.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-geveop.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-geveop.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-gloloc.adb gcc-11.1.0/gcc/ada/libgnat/s-gloloc.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-gloloc.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-gloloc.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-gloloc.ads gcc-11.1.0/gcc/ada/libgnat/s-gloloc.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-gloloc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-gloloc.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-gloloc__mingw.adb gcc-11.1.0/gcc/ada/libgnat/s-gloloc__mingw.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-gloloc__mingw.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-gloloc__mingw.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-htable.adb gcc-11.1.0/gcc/ada/libgnat/s-htable.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-htable.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-htable.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                    Copyright (C) 1995-2019, AdaCore                      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                    Copyright (C) 1995-2020, AdaCore                      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-htable.ads gcc-11.1.0/gcc/ada/libgnat/s-htable.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-htable.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-htable.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imageb.adb gcc-11.1.0/gcc/ada/libgnat/s-imageb.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imageb.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imageb.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,156 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . I M A G E _ B                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package body System.Image_B is
+ 
+    -----------------------------
+    -- Set_Image_Based_Integer --
+    -----------------------------
+ 
+    procedure Set_Image_Based_Integer
+      (V : Int;
+       B : Natural;
+       W : Integer;
+       S : out String;
+       P : in out Natural)
+    is
+       Start : Natural;
+ 
+    begin
+       --  Positive case can just use the unsigned circuit directly
+ 
+       if V >= 0 then
+          Set_Image_Based_Unsigned (Uns (V), B, W, S, P);
+ 
+       --  Negative case has to set a minus sign. Note also that we have to be
+       --  careful not to generate overflow with the largest negative number.
+ 
+       else
+          P := P + 1;
+          S (P) := ' ';
+          Start := P;
+ 
+          declare
+             pragma Suppress (Overflow_Check);
+             pragma Suppress (Range_Check);
+          begin
+             Set_Image_Based_Unsigned (Uns (-V), B, W - 1, S, P);
+          end;
+ 
+          --  Set minus sign in last leading blank location. Because of the
+          --  code above, there must be at least one such location.
+ 
+          while S (Start + 1) = ' ' loop
+             Start := Start + 1;
+          end loop;
+ 
+          S (Start) := '-';
+       end if;
+ 
+    end Set_Image_Based_Integer;
+ 
+    ------------------------------
+    -- Set_Image_Based_Unsigned --
+    ------------------------------
+ 
+    procedure Set_Image_Based_Unsigned
+      (V : Uns;
+       B : Natural;
+       W : Integer;
+       S : out String;
+       P : in out Natural)
+    is
+       Start : constant Natural := P;
+       F, T  : Natural;
+       BU    : constant Uns := Uns (B);
+       Hex   : constant array
+                 (Uns range 0 .. 15) of Character := "0123456789ABCDEF";
+ 
+       procedure Set_Digits (T : Uns);
+       --  Set digits of absolute value of T
+ 
+       ----------------
+       -- Set_Digits --
+       ----------------
+ 
+       procedure Set_Digits (T : Uns) is
+       begin
+          if T >= BU then
+             Set_Digits (T / BU);
+             P := P + 1;
+             S (P) := Hex (T mod BU);
+          else
+             P := P + 1;
+             S (P) := Hex (T);
+          end if;
+       end Set_Digits;
+ 
+    --  Start of processing for Set_Image_Based_Unsigned
+ 
+    begin
+ 
+       if B >= 10 then
+          P := P + 1;
+          S (P) := '1';
+       end if;
+ 
+       P := P + 1;
+       S (P) := Character'Val (Character'Pos ('0') + B mod 10);
+ 
+       P := P + 1;
+       S (P) := '#';
+ 
+       Set_Digits (V);
+ 
+       P := P + 1;
+       S (P) := '#';
+ 
+       --  Add leading spaces if required by width parameter
+ 
+       if P - Start < W then
+          F := P;
+          P := Start + W;
+          T := P;
+ 
+          while F > Start loop
+             S (T) := S (F);
+             T := T - 1;
+             F := F - 1;
+          end loop;
+ 
+          for J in Start + 1 .. T loop
+             S (J) := ' ';
+          end loop;
+       end if;
+ 
+    end Set_Image_Based_Unsigned;
+ 
+ end System.Image_B;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imageb.ads gcc-11.1.0/gcc/ada/libgnat/s-imageb.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imageb.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imageb.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,75 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . I M A G E _ B                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Contains the routine for computing the image in based format of signed and
+ --  unsigned integers for use by Text_IO.Integer_IO and Text_IO.Modular_IO.
+ 
+ generic
+ 
+    type Int is range <>;
+ 
+    type Uns is mod <>;
+ 
+ package System.Image_B is
+    pragma Pure;
+ 
+    procedure Set_Image_Based_Integer
+      (V : Int;
+       B : Natural;
+       W : Integer;
+       S : out String;
+       P : in out Natural);
+    --  Sets the signed image of V in based format, using base value B (2..16)
+    --  starting at S (P + 1), updating P to point to the last character stored.
+    --  The image includes a leading minus sign if necessary, but no leading
+    --  spaces unless W is positive, in which case leading spaces are output if
+    --  necessary to ensure that the output string is no less than W characters
+    --  long. The caller promises that the buffer is large enough and no check
+    --  is made for this. Constraint_Error will not necessarily be raised if
+    --  this is violated, since it is perfectly valid to compile this unit with
+    --  checks off.
+ 
+    procedure Set_Image_Based_Unsigned
+      (V : Uns;
+       B : Natural;
+       W : Integer;
+       S : out String;
+       P : in out Natural);
+    --  Sets the unsigned image of V in based format, using base value B (2..16)
+    --  starting at S (P + 1), updating P to point to the last character stored.
+    --  The image includes no leading spaces unless W is positive, in which case
+    --  leading spaces are output if necessary to ensure that the output string
+    --  is no less than W characters long. The caller promises that the buffer
+    --  is large enough and no check is made for this. Constraint_Error will not
+    --  necessarily be raised if this is violated, since it is perfectly valid
+    --  to compile this unit with checks off).
+ 
+ end System.Image_B;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imaged.adb gcc-11.1.0/gcc/ada/libgnat/s-imaged.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imaged.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imaged.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,81 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                        S Y S T E M . I M A G E _ D                       --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Img_Util; use System.Img_Util;
+ 
+ package body System.Image_D is
+ 
+    -------------------
+    -- Image_Decimal --
+    -------------------
+ 
+    procedure Image_Decimal
+      (V     : Int;
+       S     : in out String;
+       P     : out Natural;
+       Scale : Integer)
+    is
+       pragma Assert (S'First = 1);
+ 
+    begin
+       --  Add space at start for non-negative numbers
+ 
+       if V >= 0 then
+          S (1) := ' ';
+          P := 1;
+       else
+          P := 0;
+       end if;
+ 
+       Set_Image_Decimal (V, S, P, Scale, 1, Integer'Max (1, Scale), 0);
+    end Image_Decimal;
+ 
+    -----------------------
+    -- Set_Image_Decimal --
+    -----------------------
+ 
+    procedure Set_Image_Decimal
+      (V     : Int;
+       S     : in out String;
+       P     : in out Natural;
+       Scale : Integer;
+       Fore  : Natural;
+       Aft   : Natural;
+       Exp   : Natural)
+    is
+       Digs : String := Int'Image (V);
+       --  Sign and digits of decimal value
+ 
+    begin
+       Set_Decimal_Digits (Digs, Digs'Length, S, P, Scale, Fore, Aft, Exp);
+    end Set_Image_Decimal;
+ 
+ end System.Image_D;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imaged.ads gcc-11.1.0/gcc/ada/libgnat/s-imaged.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imaged.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imaged.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,72 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . I M A G E _ D                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routines for supporting the Image attribute for
+ --  decimal fixed point types, and also for conversion operations required in
+ --  Text_IO.Decimal_IO for such types.
+ 
+ generic
+ 
+    type Int is range <>;
+ 
+ package System.Image_D is
+    pragma Pure;
+ 
+    procedure Image_Decimal
+      (V     : Int;
+       S     : in out String;
+       P     : out Natural;
+       Scale : Integer);
+    --  Computes fixed_type'Image (V), where V is the integer value (in units of
+    --  delta) of a decimal type whose Scale is as given and stores the result
+    --  S (1 .. P), updating P to the value of L. The image is given by the
+    --  rules in RM 3.5(34) for fixed-point type image functions. The caller
+    --  guarantees that S is long enough to hold the result and has a lower
+    --  bound of 1.
+ 
+    procedure Set_Image_Decimal
+      (V     : Int;
+       S     : in out String;
+       P     : in out Natural;
+       Scale : Integer;
+       Fore  : Natural;
+       Aft   : Natural;
+       Exp   : Natural);
+    --  Sets the image of V, where V is the integer value (in units of delta)
+    --  of a decimal type with the specified Scale, starting at S (P + 1) and
+    --  updating P to point to the last character stored, the caller promises
+    --  that the buffer is large enough and no check is made. Constraint_Error
+    --  will not necessarily be raised if this requirement is violated, since
+    --  it is perfectly valid to compile this unit with checks off. The Fore,
+    --  Aft and Exp values can be set to any valid values for the case of use
+    --  by Text_IO.Decimal_IO.
+ 
+ end System.Image_D;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imagef.adb gcc-11.1.0/gcc/ada/libgnat/s-imagef.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imagef.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imagef.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,362 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . I M A G E _ F                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Image_I;
+ with System.Img_Util; use System.Img_Util;
+ 
+ package body System.Image_F is
+ 
+    Maxdigs : constant Natural := Int'Width - 2;
+    --  Maximum number of decimal digits that can be represented in an Int.
+    --  The "-2" accounts for the sign and one extra digit, since we need the
+    --  maximum number of 9's that can be represented, e.g. for the 64-bit case,
+    --  Integer_64'Width is 20 since the maximum value is approximately 9.2E+18
+    --  and has 19 digits, but the maximum number of 9's that can be represented
+    --  in Integer_64 is only 18.
+ 
+    --  The first prerequisite of the implementation is that the first scaled
+    --  divide does not overflow, which means that the absolute value of the
+    --  input X must always be smaller than 10**Maxdigs * 2**(Int'Size - 1).
+    --  Otherwise Constraint_Error is raised by the scaled divide operation.
+ 
+    --  The second prerequisite of the implementation is that the computation
+    --  of the operands does not overflow when the small is neither an integer
+    --  nor the reciprocal of an integer, which means that its numerator and
+    --  denominator must be smaller than 10**(2*Maxdigs-1) / 2**(Int'Size - 1)
+    --  if the small is larger than 1, and smaller than 2**(Int'Size - 1) / 10
+    --  if the small is smaller than 1.
+ 
+    package Image_I is new System.Image_I (Int);
+ 
+    procedure Set_Image_Integer
+      (V : Int;
+       S : in out String;
+       P : in out Natural)
+      renames Image_I.Set_Image_Integer;
+ 
+    --  The following section describes a specific implementation choice for
+    --  performing base conversions needed for output of values of a fixed
+    --  point type T with small T'Small. The goal is to be able to output
+    --  all values of fixed point types with a precision of 64 bits and a
+    --  small in the range 2.0**(-63) .. 2.0**63. The reasoning can easily
+    --  be adapted to fixed point types with a precision of 32 or 128 bits.
+ 
+    --  The chosen algorithm uses fixed precision integer arithmetic for
+    --  reasons of simplicity and efficiency. It is important to understand
+    --  in what ways the most simple and accurate approach to fixed point I/O
+    --  is limiting, before considering more complicated schemes.
+ 
+    --  Without loss of generality assume T has a range (-2.0**63) * T'Small
+    --  .. (2.0**63 - 1) * T'Small, and is output with Aft digits after the
+    --  decimal point and T'Fore - 1 before. If T'Small is integer, or
+    --  1.0 / T'Small is integer, let S = T'Small.
+ 
+    --  The idea is to convert a value X * S of type T to a 64-bit integer value
+    --  Q equal to 10.0**D * (X * S) rounded to the nearest integer, using only
+    --  a scaled integer divide of the form
+ 
+    --     Q = (X * Y) / Z,
+ 
+    --  where the variables X, Y, Z are 64-bit integers, and both multiplication
+    --  and division are done using full intermediate precision. Then the final
+    --  decimal value to be output is
+ 
+    --     Q * 10**(-D)
+ 
+    --  This value can be written to the output file or to the result string
+    --  according to the format described in RM A.3.10. The details of this
+    --  operation are omitted here.
+ 
+    --  A 64-bit value can represent all integers with 18 decimal digits, but
+    --  not all with 19 decimal digits. If the total number of requested ouput
+    --  digits (Fore - 1) + Aft is greater than 18 then, for purposes of the
+    --  conversion, Aft is adjusted to 18 - (Fore - 1). In that case, trailing
+    --  zeros can complete the output after writing the first 18 significant
+    --  digits, or the technique described in the next section can be used.
+    --  In addition, D cannot be smaller than -18, in order for 10.0**(-D) to
+    --  fit in a 64-bit integer.
+ 
+    --  The final expression for D is
+ 
+    --     D = Integer'Max (-18, Integer'Min (Aft, 18 - (Fore - 1)));
+ 
+    --  For Y and Z the following expressions can be derived:
+ 
+    --     Q = X * S * (10.0**D) = (X * Y) / Z
+ 
+    --  If S is an integer greater than or equal to one, then Fore must be at
+    --  least 20 in order to print T'First, which is at most -2.0**63. This
+    --  means that D < 0, so use
+ 
+    --    (1)   Y = -S and Z = -10**(-D)
+ 
+    --  If 1.0 / S is an integer greater than one, use
+ 
+    --    (2)   Y = -10**D and Z = -(1.0 / S), for D >= 0
+ 
+    --  or
+ 
+    --    (3)   Y = -1 and Z = -(1.0 / S) * 10**(-D), for D < 0
+ 
+    --  Negative values are used for nominator Y and denominator Z, so that S
+    --  can have a maximum value of 2.0**63 and a minimum of 2.0**(-63). For
+    --  -(1.0 / S) in -1 .. -9, Fore will still be 20, and D will be negative,
+    --  as (-2.0**63) / -9 is greater than 10**18. In these cases there is room
+    --  in the denominator for the extra decimal scaling required, so case (3)
+    --  will not overflow.
+ 
+    --  In fact this reasoning can be generalized to most S which are the ratio
+    --  of two integers with bounded magnitude. Let S = Num / Den and rewrite
+    --  case (1) above where Den = 1 into
+ 
+    --    (1b)   Y = -Num and Z = -Den * 10**(-D)
+ 
+    --  Suppose that Num corresponds to the maximum value of -D, i.e. 18 and
+    --  10**(-D) = 10**18. If you change Den into 10, then S becomes 10 times
+    --  smaller and, therefore, Fore is decremented by 1, which means that -D
+    --  is as well, provided that Fore was initially not larger than 37, so the
+    --  multiplication for Z still does not overflow. But you need to reach 10
+    --  to trigger this effect, which means that a leeway of 10 is required, so
+    --  let's restrict this to a Num for which 10**(-D) <= 10**17. To summarize
+    --  this case, if S is the ratio of two integers with
+ 
+    --    Den < Num <= B1
+ 
+    --  where B1 is a fixed limit, then case (1b) does not overflow. B1 can be
+    --  taken as the largest integer Small such that D = -17, i.e. Fore = 36,
+    --  which means that B1 * 2.0**63 must be smaller than 10**35.
+ 
+    --  Let's continue and rewrite case (2) above when Num = 1 into
+ 
+    --    (2b)   Y = -Num * 10**D and Z = -Den, for D >= 0
+ 
+    --  Note that D <= 18 - (Fore - 1) and Fore >= 2 so D <= 17, thus you can
+    --  safely change Num into 10 in the product, but then S becomes 10 times
+    --  larger and, therefore, Fore is incremented by 1, which means that D is
+    --  decremented by 1 so you again have a product lesser or equal to 10**17.
+    --  To sum up, if S is the ratio of two integers with
+ 
+    --    Num <= Den * S0
+ 
+    --  where S0 is the largest Small such that D >= 0, then case (2b) does not
+    --  overflow.
+ 
+    --  Let's conclude and rewrite case (3) above when Num = 1 into
+ 
+    --    (3b)   Y = -Num and Z = -Den * 10**(-D), for D < 0
+ 
+    --  As explained above, this occurs only if both S0 < S < 1 and D = -1 and
+    --  is preserved if you scale up Num and Den simultaneously, what you can
+    --  do until Den * 10 tops the upper bound. To sum up, if S is the ratio of
+    --  two integers with
+ 
+    --    Den * S0 < Num < Den <= B2
+ 
+    --  where B2 is a fixed limit, then case (3b) does not overflow. B2 can be
+    --  taken as the largest integer such that B2 * 10 is smaller than 2.0**63.
+ 
+    --  The conclusion is that the algorithm works if the small is the ratio of
+    --  two integers in the range 1 .. 2**63 if either is equal to 1, or of two
+    --  integers in the range 1 .. B1 if the small is larger than 1, or of two
+    --  integers in the range 1 .. B2 if the small is smaller than 1.
+ 
+    --  Using a scaled divide which truncates and returns a remainder R,
+    --  another K trailing digits can be calculated by computing the value
+    --  (R * (10.0**K)) / Z using another scaled divide. This procedure
+    --  can be repeated to compute an arbitrary number of digits in linear
+    --  time and storage. The last scaled divide should be rounded, with
+    --  a possible carry propagating to the more significant digits, to
+    --  ensure correct rounding of the unit in the last place.
+ 
+    -----------------
+    -- Image_Fixed --
+    -----------------
+ 
+    procedure Image_Fixed
+      (V    : Int;
+       S    : in out String;
+       P    : out Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural)
+    is
+       pragma Assert (S'First = 1);
+ 
+    begin
+       --  Add space at start for non-negative numbers
+ 
+       if V >= 0 then
+          S (1) := ' ';
+          P := 1;
+       else
+          P := 0;
+       end if;
+ 
+       Set_Image_Fixed (V, S, P, Num, Den, For0, Aft0, 1, Aft0, 0);
+    end Image_Fixed;
+ 
+    ---------------------
+    -- Set_Image_Fixed --
+    ---------------------
+ 
+    procedure Set_Image_Fixed
+      (V    : Int;
+       S    : in out String;
+       P    : in out Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural;
+       Fore : Natural;
+       Aft  : Natural;
+       Exp  : Natural)
+    is
+       pragma Assert (Num < 0 and then Den < 0);
+       --  Accept only negative numbers to allow -2**(Int'Size - 1)
+ 
+       A : constant Natural :=
+             Boolean'Pos (Exp > 0) * Aft0 + Natural'Max (Aft, 1) + 1;
+       --  Number of digits after the decimal point to be computed. If Exp is
+       --  positive, we need to compute Aft decimal digits after the first non
+       --  zero digit and we are guaranteed there is at least one in the first
+       --  Aft0 digits (unless V is zero). In both cases, we compute one more
+       --  digit than requested so that Set_Decimal_Digits can round at Aft.
+ 
+       D : constant Integer :=
+             Integer'Max (-Maxdigs, Integer'Min (A, Maxdigs - (For0 - 1)));
+       Y : constant Int     := Num * 10**Integer'Max (0, D);
+       Z : constant Int     := Den * 10**Integer'Max (0, -D);
+       --  See the description of the algorithm above
+ 
+       AF : constant Natural := A - D;
+       --  Number of remaining digits to be computed after the first round. It
+       --  is larger than A if the first round does not compute all the digits
+       --  before the decimal point, i.e. (For0 - 1) larger than Maxdigs.
+ 
+       N : constant Natural := 1 + (AF + Maxdigs - 1) / Maxdigs;
+       --  Number of rounds of scaled divide to be performed
+ 
+       Q : Int;
+       --  Quotient of the scaled divide in this round. Only the first round may
+       --  yield more than Maxdigs digits and has a significant sign.
+ 
+       Buf : String (1 .. Maxdigs);
+       Len : Natural;
+       --  Buffer for the image of the quotient
+ 
+       Digs  : String (1 .. 2 + N * Maxdigs);
+       Ndigs : Natural;
+       --  Concatenated image of the successive quotients
+ 
+       Scale : Integer := 0;
+       --  Exponent such that the result is Digs (1 .. NDigs) * 10**(-Scale)
+ 
+       XX : Int := V;
+       YY : Int := Y;
+       --  First two operands of the scaled divide
+ 
+    begin
+       --  Set the first character like Image
+ 
+       if V >= 0 then
+          Digs (1) := ' ';
+          Ndigs := 1;
+       else
+          Ndigs := 0;
+       end if;
+ 
+       for J in 1 .. N loop
+          exit when XX = 0;
+ 
+          Scaled_Divide (XX, YY, Z, Q, R => XX, Round => False);
+ 
+          if J = 1 then
+             if Q /= 0 then
+                Set_Image_Integer (Q, Digs, Ndigs);
+             end if;
+ 
+             Scale := Scale + D;
+ 
+             --  Prepare for next round, if any
+ 
+             YY := 10**Maxdigs;
+ 
+          else
+             pragma Assert (-10**Maxdigs < Q and then Q < 10**Maxdigs);
+ 
+             Len := 0;
+             Set_Image_Integer (abs Q, Buf, Len);
+ 
+             pragma Assert (1 <= Len and then Len <= Maxdigs);
+ 
+             --  If no character but the space has been written, write the
+             --  minus if need be, since Set_Image_Integer did not do it.
+ 
+             if Ndigs <= 1 then
+                if Q /= 0 then
+                   if Ndigs = 0 then
+                      Digs (1) := '-';
+                   end if;
+ 
+                   Digs (2 .. Len + 1) := Buf (1 .. Len);
+                   Ndigs := Len + 1;
+                end if;
+ 
+             --  Or else pad the output with zeroes up to Maxdigs
+ 
+             else
+                for K in 1 .. Maxdigs - Len loop
+                   Digs (Ndigs + K) := '0';
+                end loop;
+ 
+                for K in 1 .. Len loop
+                   Digs (Ndigs + Maxdigs - Len + K) := Buf (K);
+                end loop;
+ 
+                Ndigs := Ndigs + Maxdigs;
+             end if;
+ 
+             Scale := Scale + Maxdigs;
+          end if;
+       end loop;
+ 
+       --  If no digit was output, this is zero
+ 
+       if Ndigs <= 1 then
+          Digs (1 .. 2) := " 0";
+          Ndigs := 2;
+       end if;
+ 
+       Set_Decimal_Digits (Digs, Ndigs, S, P, Scale, Fore, Aft, Exp);
+    end Set_Image_Fixed;
+ 
+ end System.Image_F;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imagef.ads gcc-11.1.0/gcc/ada/libgnat/s-imagef.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imagef.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imagef.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,88 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . I M A G E _ F                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routines for supporting the Image attribute for
+ --  ordinary fixed point types whose Small is the ratio of two Int values, and
+ --  also for conversion operations required in Text_IO.Fixed_IO for such types.
+ 
+ generic
+ 
+    type Int is range <>;
+ 
+    with procedure Scaled_Divide
+           (X, Y, Z : Int;
+            Q, R : out Int;
+            Round : Boolean);
+ 
+ package System.Image_F is
+    pragma Pure;
+ 
+    procedure Image_Fixed
+      (V    : Int;
+       S    : in out String;
+       P    : out Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural);
+    --  Computes fixed_type'Image (V), where V is the integer value (in units of
+    --  small) of an ordinary fixed point type with small Num/Den, and stores
+    --  the result in S (1 .. P), updating P on return. The result is computed
+    --  according to the rules for image for fixed-point types (RM 3.5(34)).
+    --  For0 and Aft0 are the values of the Fore and Aft attributes for the
+    --  fixed point type whose mantissa type is Int and whose small is Num/Den.
+    --  This function is used only for fixed point whose Small is an integer or
+    --  its reciprocal (see package System.Img_Real for the handling of other
+    --  ordinary fixed-point types). The caller guarantees that S is long enough
+    --  to hold the result and has a lower bound of 1.
+ 
+    procedure Set_Image_Fixed
+      (V    : Int;
+       S    : in out String;
+       P    : in out Natural;
+       Num  : Int;
+       Den  : Int;
+       For0 : Natural;
+       Aft0 : Natural;
+       Fore : Natural;
+       Aft  : Natural;
+       Exp  : Natural);
+    --  Sets the image of V, where V is the integer value (in units of small)
+    --  of a fixed point type with small Num/Den, starting at S (P + 1) and
+    --  updating P to point to the last character stored, the caller promises
+    --  that the buffer is large enough and no check is made. Constraint_Error
+    --  will not necessarily be raised if this requirement is violated, since
+    --  it is perfectly valid to compile this unit with checks off. For0 and
+    --  Aft0 are the values of the Fore and Aft attributes for the fixed point
+    --  type whose mantissa type is Int and whose small is Num/Den. The Fore,
+    --  Aft and Exp can be set to any valid values for use by Text_IO.Fixed_IO.
+ 
+ end System.Image_F;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imagei.adb gcc-11.1.0/gcc/ada/libgnat/s-imagei.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imagei.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imagei.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,128 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . I M A G E _ I                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package body System.Image_I is
+ 
+    subtype Non_Positive is Int range Int'First .. 0;
+ 
+    procedure Set_Digits
+      (T : Non_Positive;
+       S : in out String;
+       P : in out Natural);
+    --  Set digits of absolute value of T, which is zero or negative. We work
+    --  with the negative of the value so that the largest negative number is
+    --  not a special case.
+ 
+    -------------------
+    -- Image_Integer --
+    -------------------
+ 
+    procedure Image_Integer
+      (V : Int;
+       S : in out String;
+       P : out Natural)
+    is
+       pragma Assert (S'First = 1);
+ 
+    begin
+       if V >= 0 then
+          S (1) := ' ';
+          P := 1;
+          pragma Assert (P < S'Last);
+ 
+       else
+          P := 0;
+          pragma Assert (P < S'Last - 1);
+       end if;
+ 
+       Set_Image_Integer (V, S, P);
+    end Image_Integer;
+ 
+    ----------------
+    -- Set_Digits --
+    ----------------
+ 
+    procedure Set_Digits
+      (T : Non_Positive;
+       S : in out String;
+       P : in out Natural)
+    is
+       Nb_Digits : Natural := 0;
+       Value     : Non_Positive := T;
+    begin
+       pragma Assert (P >= S'First - 1 and P < S'Last);
+       --  No check is done since, as documented in the Set_Image_Integer
+       --  specification, the caller guarantees that S is long enough to
+       --  hold the result.
+ 
+       --  First we compute the number of characters needed for representing
+       --  the number.
+       loop
+          Value := Value / 10;
+          Nb_Digits := Nb_Digits + 1;
+          exit when Value = 0;
+       end loop;
+ 
+       Value := T;
+ 
+       --  We now populate digits from the end of the string to the beginning
+       for J in reverse  1 .. Nb_Digits loop
+          S (P + J) := Character'Val (48 - (Value rem 10));
+          Value := Value / 10;
+       end loop;
+ 
+       P := P + Nb_Digits;
+    end Set_Digits;
+ 
+    -----------------------
+    -- Set_Image_Integer --
+    -----------------------
+ 
+    procedure Set_Image_Integer
+      (V : Int;
+       S : in out String;
+       P : in out Natural)
+    is
+    begin
+       if V >= 0 then
+          Set_Digits (-V, S, P);
+ 
+       else
+          pragma Assert (P >= S'First - 1 and P < S'Last);
+          --  No check is done since, as documented in the specification,
+          --  the caller guarantees that S is long enough to hold the result.
+          P := P + 1;
+          S (P) := '-';
+          Set_Digits (V, S, P);
+       end if;
+    end Set_Image_Integer;
+ 
+ end System.Image_I;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imagei.ads gcc-11.1.0/gcc/ada/libgnat/s-imagei.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imagei.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imagei.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,61 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . I M A G E _ I                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routines for supporting the Image attribute for
+ --  signed integer types, and also for conversion operations required in
+ --  Text_IO.Integer_IO for such types.
+ 
+ generic
+ 
+    type Int is range <>;
+ 
+ package System.Image_I is
+    pragma Pure;
+ 
+    procedure Image_Integer
+      (V : Int;
+       S : in out String;
+       P : out Natural);
+    --  Computes Int'Image (V) and stores the result in S (1 .. P)
+    --  setting the resulting value of P. The caller guarantees that S
+    --  is long enough to hold the result, and that S'First is 1.
+ 
+    procedure Set_Image_Integer
+      (V : Int;
+       S : in out String;
+       P : in out Natural);
+    --  Stores the image of V in S starting at S (P + 1), P is updated to point
+    --  to the last character stored. The value stored is identical to the value
+    --  of Int'Image (V) except that no leading space is stored when V is
+    --  non-negative. The caller guarantees that S is long enough to hold the
+    --  result. S need not have a lower bound of 1.
+ 
+ end System.Image_I;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imageu.adb gcc-11.1.0/gcc/ada/libgnat/s-imageu.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imageu.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imageu.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,86 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . I M A G E _ U                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package body System.Image_U is
+ 
+    --------------------
+    -- Image_Unsigned --
+    --------------------
+ 
+    procedure Image_Unsigned
+      (V : Uns;
+       S : in out String;
+       P : out Natural)
+    is
+       pragma Assert (S'First = 1);
+    begin
+       S (1) := ' ';
+       P := 1;
+       Set_Image_Unsigned (V, S, P);
+    end Image_Unsigned;
+ 
+    ------------------------
+    -- Set_Image_Unsigned --
+    ------------------------
+ 
+    procedure Set_Image_Unsigned
+      (V : Uns;
+       S : in out String;
+       P : in out Natural)
+    is
+       Nb_Digits : Natural := 0;
+       Value     : Uns := V;
+    begin
+       pragma Assert (P >= S'First - 1 and then P < S'Last and then
+                      P < Natural'Last);
+       --  No check is done since, as documented in the specification, the
+       --  caller guarantees that S is long enough to hold the result.
+ 
+       --  First we compute the number of characters needed for representing
+       --  the number.
+       loop
+          Value := Value / 10;
+          Nb_Digits := Nb_Digits + 1;
+          exit when Value = 0;
+       end loop;
+ 
+       Value := V;
+ 
+       --  We now populate digits from the end of the string to the beginning
+       for J in reverse  1 .. Nb_Digits loop
+          S (P + J) := Character'Val (48 + (Value rem 10));
+          Value := Value / 10;
+       end loop;
+ 
+       P := P + Nb_Digits;
+    end Set_Image_Unsigned;
+ 
+ end System.Image_U;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imageu.ads gcc-11.1.0/gcc/ada/libgnat/s-imageu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imageu.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imageu.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,62 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . I M A G E _ U                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routines for supporting the Image attribute for
+ --  modular integer types, and also for conversion operations required in
+ --  Text_IO.Modular_IO for such types.
+ 
+ generic
+ 
+    type Uns is mod <>;
+ 
+ package System.Image_U is
+    pragma Pure;
+ 
+    procedure Image_Unsigned
+      (V : Uns;
+       S : in out String;
+       P : out Natural);
+    pragma Inline (Image_Unsigned);
+    --  Computes Uns'Image (V) and stores the result in S (1 .. P) setting
+    --  the resulting value of P. The caller guarantees that S is long enough to
+    --  hold the result, and that S'First is 1.
+ 
+    procedure Set_Image_Unsigned
+      (V : Uns;
+       S : in out String;
+       P : in out Natural);
+    --  Stores the image of V in S starting at S (P + 1), P is updated to point
+    --  to the last character stored. The value stored is identical to the value
+    --  of Uns'Image (V) except that no leading space is stored. The caller
+    --  guarantees that S is long enough to hold the result. S need not have a
+    --  lower bound of 1.
+ 
+ end System.Image_U;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imagew.adb gcc-11.1.0/gcc/ada/libgnat/s-imagew.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imagew.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imagew.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,152 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . I M A G E _ W                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package body System.Image_W is
+ 
+    -----------------------------
+    -- Set_Image_Width_Integer --
+    -----------------------------
+ 
+    procedure Set_Image_Width_Integer
+      (V : Int;
+       W : Integer;
+       S : out String;
+       P : in out Natural)
+    is
+       Start : Natural;
+ 
+    begin
+       --  Positive case can just use the unsigned circuit directly
+ 
+       if V >= 0 then
+          Set_Image_Width_Unsigned (Uns (V), W, S, P);
+ 
+       --  Negative case has to set a minus sign. Note also that we have to be
+       --  careful not to generate overflow with the largest negative number.
+ 
+       else
+          P := P + 1;
+          S (P) := ' ';
+          Start := P;
+ 
+          declare
+             pragma Suppress (Overflow_Check);
+             pragma Suppress (Range_Check);
+          begin
+             Set_Image_Width_Unsigned (Uns (-V), W - 1, S, P);
+          end;
+ 
+          --  Set minus sign in last leading blank location. Because of the
+          --  code above, there must be at least one such location.
+ 
+          while S (Start + 1) = ' ' loop
+             Start := Start + 1;
+          end loop;
+ 
+          S (Start) := '-';
+       end if;
+ 
+    end Set_Image_Width_Integer;
+ 
+    ------------------------------
+    -- Set_Image_Width_Unsigned --
+    ------------------------------
+ 
+    procedure Set_Image_Width_Unsigned
+      (V : Uns;
+       W : Integer;
+       S : out String;
+       P : in out Natural)
+    is
+       Start : constant Natural := P;
+       F, T  : Natural;
+ 
+       procedure Set_Digits (T : Uns);
+       --  Set digits of absolute value of T
+ 
+       ----------------
+       -- Set_Digits --
+       ----------------
+ 
+       procedure Set_Digits (T : Uns) is
+       begin
+          if T >= 10 then
+             Set_Digits (T / 10);
+             pragma Assert (P >= (S'First - 1) and P < S'Last and
+                            P < Natural'Last);
+             --  No check is done since, as documented in the specification,
+             --  the caller guarantees that S is long enough to hold the result.
+             P := P + 1;
+             S (P) := Character'Val (T mod 10 + Character'Pos ('0'));
+ 
+          else
+             pragma Assert (P >= (S'First - 1) and P < S'Last and
+                            P < Natural'Last);
+             --  No check is done since, as documented in the specification,
+             --  the caller guarantees that S is long enough to hold the result.
+             P := P + 1;
+             S (P) := Character'Val (T + Character'Pos ('0'));
+          end if;
+       end Set_Digits;
+ 
+    --  Start of processing for Set_Image_Width_Unsigned
+ 
+    begin
+       Set_Digits (V);
+ 
+       --  Add leading spaces if required by width parameter
+ 
+       if P - Start < W then
+          F := P;
+          P := P + (W - (P - Start));
+          T := P;
+ 
+          while F > Start loop
+             pragma Assert (T >= S'First and T <= S'Last and
+                            F >= S'First and F <= S'Last);
+             --  No check is done since, as documented in the specification,
+             --  the caller guarantees that S is long enough to hold the result.
+             S (T) := S (F);
+             T := T - 1;
+             F := F - 1;
+          end loop;
+ 
+          for J in Start + 1 .. T loop
+             pragma Assert (J >= S'First and J <= S'Last);
+             --  No check is done since, as documented in the specification,
+             --  the caller guarantees that S is long enough to hold the result.
+             S (J) := ' ';
+          end loop;
+       end if;
+ 
+    end Set_Image_Width_Unsigned;
+ 
+ end System.Image_W;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imagew.ads gcc-11.1.0/gcc/ada/libgnat/s-imagew.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imagew.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imagew.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,73 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . I M A G E _ W                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Contains the routine for computing the image  of signed and unsigned
+ --  integers up to Integer for use by Text_IO.Integer_IO and
+ --  Text_IO.Modular_IO.
+ 
+ generic
+ 
+    type Int is range <>;
+ 
+    type Uns is mod <>;
+ 
+ package System.Image_W is
+    pragma Pure;
+ 
+    procedure Set_Image_Width_Integer
+      (V : Int;
+       W : Integer;
+       S : out String;
+       P : in out Natural);
+    --  Sets the signed image of V in decimal format, starting at S (P + 1),
+    --  updating P to point to the last character stored. The image includes
+    --  a leading minus sign if necessary, but no leading spaces unless W is
+    --  positive, in which case leading spaces are output if necessary to ensure
+    --  that the output string is no less than W characters long. The caller
+    --  promises that the buffer is large enough and no check is made for this.
+    --  Constraint_Error will not necessarily be raised if this is violated,
+    --  since it is perfectly valid to compile this unit with checks off.
+ 
+    procedure Set_Image_Width_Unsigned
+      (V : Uns;
+       W : Integer;
+       S : out String;
+       P : in out Natural);
+    --  Sets the unsigned image of V in decimal format, starting at S (P + 1),
+    --  updating P to point to the last character stored. The image includes no
+    --  leading spaces unless W is positive, in which case leading spaces are
+    --  output if necessary to ensure that the output string is no less than
+    --  W characters long. The caller promises that the buffer is large enough
+    --  and no check is made for this. Constraint_Error will not necessarily be
+    --  raised if this is violated, since it is perfectly valid to compile this
+    --  unit with checks off.
+ 
+ end System.Image_W;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imde128.ads gcc-11.1.0/gcc/ada/libgnat/s-imde128.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imde128.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imde128.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,63 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --               S Y S T E M . I M G _ D E C I M A L _ 1 2 8                --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routines for supporting the Image attribute for
+ --  decimal fixed point types up to 128-bit mantissa, and also for conversion
+ --  operations required in Text_IO.Decimal_IO for them.
+ 
+ with Interfaces;
+ with System.Image_D;
+ 
+ package System.Img_Decimal_128 is
+    pragma Pure;
+ 
+    subtype Int128 is Interfaces.Integer_128;
+ 
+    package Impl is new Image_D (Int128);
+ 
+    procedure Image_Decimal128
+      (V     : Int128;
+       S     : in out String;
+       P     : out Natural;
+       Scale : Integer)
+      renames Impl.Image_Decimal;
+ 
+    procedure Set_Image_Decimal128
+      (V     : Int128;
+       S     : in out String;
+       P     : in out Natural;
+       Scale : Integer;
+       Fore  : Natural;
+       Aft   : Natural;
+       Exp   : Natural)
+      renames Impl.Set_Image_Decimal;
+ 
+ end System.Img_Decimal_128;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imde32.ads gcc-11.1.0/gcc/ada/libgnat/s-imde32.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imde32.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imde32.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,63 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                S Y S T E M . I M G _ D E C I M A L _ 3 2                 --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routines for supporting the Image attribute for
+ --  decimal fixed point types up to 32-bit mantissa, and also for conversion
+ --  operations required in Text_IO.Decimal_IO for such types.
+ 
+ with Interfaces;
+ with System.Image_D;
+ 
+ package System.Img_Decimal_32 is
+    pragma Pure;
+ 
+    subtype Int32 is Interfaces.Integer_32;
+ 
+    package Impl is new Image_D (Int32);
+ 
+    procedure Image_Decimal32
+      (V     : Int32;
+       S     : in out String;
+       P     : out Natural;
+       Scale : Integer)
+      renames Impl.Image_Decimal;
+ 
+    procedure Set_Image_Decimal32
+      (V     : Int32;
+       S     : in out String;
+       P     : in out Natural;
+       Scale : Integer;
+       Fore  : Natural;
+       Aft   : Natural;
+       Exp   : Natural)
+      renames Impl.Set_Image_Decimal;
+ 
+ end System.Img_Decimal_32;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imde64.ads gcc-11.1.0/gcc/ada/libgnat/s-imde64.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imde64.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imde64.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,63 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                S Y S T E M . I M G _ D E C I M A L _ 6 4                 --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routines for supporting the Image attribute for
+ --  decimal fixed point types up to 64-bit mantissa, and also for conversion
+ --  operations required in Text_IO.Decimal_IO for such types.
+ 
+ with Interfaces;
+ with System.Image_D;
+ 
+ package System.Img_Decimal_64 is
+    pragma Pure;
+ 
+    subtype Int64 is Interfaces.Integer_64;
+ 
+    package Impl is new Image_D (Int64);
+ 
+    procedure Image_Decimal64
+      (V     : Int64;
+       S     : in out String;
+       P     : out Natural;
+       Scale : Integer)
+      renames Impl.Image_Decimal;
+ 
+    procedure Set_Image_Decimal64
+      (V     : Int64;
+       S     : in out String;
+       P     : in out Natural;
+       Scale : Integer;
+       Fore  : Natural;
+       Aft   : Natural;
+       Exp   : Natural)
+      renames Impl.Set_Image_Decimal;
+ 
+ end System.Img_Decimal_64;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imenne.adb gcc-11.1.0/gcc/ada/libgnat/s-imenne.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imenne.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imenne.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2000-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2000-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Img_Enum_New is
*** 49,56 ****
        pragma Assert (S'First = 1);
  
        type Natural_8 is range 0 .. 2 ** 7 - 1;
        subtype Index is Natural range Natural'First .. Names'Length;
!       type Index_Table is array (Index) of Natural_8;
        type Index_Table_Ptr is access Index_Table;
  
        function To_Index_Table_Ptr is
--- 49,59 ----
        pragma Assert (S'First = 1);
  
        type Natural_8 is range 0 .. 2 ** 7 - 1;
+       subtype Names_Index is
+         Natural_8 range Natural_8 (Names'First)
+                           .. Natural_8 (Names'Last) + 1;
        subtype Index is Natural range Natural'First .. Names'Length;
!       type Index_Table is array (Index) of Names_Index;
        type Index_Table_Ptr is access Index_Table;
  
        function To_Index_Table_Ptr is
*************** package body System.Img_Enum_New is
*** 58,66 ****
--- 61,79 ----
  
        IndexesT : constant Index_Table_Ptr := To_Index_Table_Ptr (Indexes);
  
+       pragma Assert (Pos in IndexesT'Range);
+       pragma Assert (Pos + 1 in IndexesT'Range);
+ 
        Start : constant Natural := Natural (IndexesT (Pos));
        Next  : constant Natural := Natural (IndexesT (Pos + 1));
  
+       pragma Assert (Next - 1 >= Start);
+       pragma Assert (Start >= Names'First);
+       pragma Assert (Next - 1 <= Names'Last);
+ 
+       pragma Assert (Next - Start <= S'Last);
+       --  The caller should guarantee that S is large enough to contain the
+       --  enumeration image.
     begin
        S (1 .. Next - Start) := Names (Start .. Next - 1);
        P := Next - Start;
*************** package body System.Img_Enum_New is
*** 80,87 ****
        pragma Assert (S'First = 1);
  
        type Natural_16 is range 0 .. 2 ** 15 - 1;
        subtype Index is Natural range Natural'First .. Names'Length;
!       type Index_Table is array (Index) of Natural_16;
        type Index_Table_Ptr is access Index_Table;
  
        function To_Index_Table_Ptr is
--- 93,103 ----
        pragma Assert (S'First = 1);
  
        type Natural_16 is range 0 .. 2 ** 15 - 1;
+       subtype Names_Index is
+         Natural_16 range Natural_16 (Names'First)
+                            .. Natural_16 (Names'Last) + 1;
        subtype Index is Natural range Natural'First .. Names'Length;
!       type Index_Table is array (Index) of Names_Index;
        type Index_Table_Ptr is access Index_Table;
  
        function To_Index_Table_Ptr is
*************** package body System.Img_Enum_New is
*** 89,97 ****
--- 105,123 ----
  
        IndexesT : constant Index_Table_Ptr := To_Index_Table_Ptr (Indexes);
  
+       pragma Assert (Pos in IndexesT'Range);
+       pragma Assert (Pos + 1 in IndexesT'Range);
+ 
        Start : constant Natural := Natural (IndexesT (Pos));
        Next  : constant Natural := Natural (IndexesT (Pos + 1));
  
+       pragma Assert (Next - 1 >= Start);
+       pragma Assert (Start >= Names'First);
+       pragma Assert (Next - 1 <= Names'Last);
+ 
+       pragma Assert (Next - Start <= S'Last);
+       --  The caller should guarantee that S is large enough to contain the
+       --  enumeration image.
     begin
        S (1 .. Next - Start) := Names (Start .. Next - 1);
        P := Next - Start;
*************** package body System.Img_Enum_New is
*** 111,118 ****
        pragma Assert (S'First = 1);
  
        type Natural_32 is range 0 .. 2 ** 31 - 1;
        subtype Index is Natural range Natural'First .. Names'Length;
!       type Index_Table is array (Index) of Natural_32;
        type Index_Table_Ptr is access Index_Table;
  
        function To_Index_Table_Ptr is
--- 137,147 ----
        pragma Assert (S'First = 1);
  
        type Natural_32 is range 0 .. 2 ** 31 - 1;
+       subtype Names_Index is
+         Natural_32 range Natural_32 (Names'First)
+                            .. Natural_32 (Names'Last) + 1;
        subtype Index is Natural range Natural'First .. Names'Length;
!       type Index_Table is array (Index) of Names_Index;
        type Index_Table_Ptr is access Index_Table;
  
        function To_Index_Table_Ptr is
*************** package body System.Img_Enum_New is
*** 120,128 ****
--- 149,167 ----
  
        IndexesT : constant Index_Table_Ptr := To_Index_Table_Ptr (Indexes);
  
+       pragma Assert (Pos in IndexesT'Range);
+       pragma Assert (Pos + 1 in IndexesT'Range);
+ 
        Start : constant Natural := Natural (IndexesT (Pos));
        Next  : constant Natural := Natural (IndexesT (Pos + 1));
  
+       pragma Assert (Next - 1 >= Start);
+       pragma Assert (Start >= Names'First);
+       pragma Assert (Next - 1 <= Names'Last);
+ 
+       pragma Assert (Next - Start <= S'Last);
+       --  The caller should guarantee that S is large enough to contain the
+       --  enumeration image.
     begin
        S (1 .. Next - Start) := Names (Start .. Next - 1);
        P := Next - Start;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imenne.ads gcc-11.1.0/gcc/ada/libgnat/s-imenne.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imenne.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imenne.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imfi128.ads gcc-11.1.0/gcc/ada/libgnat/s-imfi128.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imfi128.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imfi128.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,69 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                 S Y S T E M . I M G _ F I X E D _ 1 2 8                  --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routines for supporting the Image attribute for
+ --  ordinary fixed point types up to 128-bit small and mantissa.
+ 
+ with Interfaces;
+ with System.Arith_128;
+ with System.Image_F;
+ 
+ package System.Img_Fixed_128 is
+    pragma Pure;
+ 
+    subtype Int128 is Interfaces.Integer_128;
+ 
+    package Impl is new Image_F (Int128, Arith_128.Scaled_Divide128);
+ 
+    procedure Image_Fixed128
+      (V    : Int128;
+       S    : in out String;
+       P    : out Natural;
+       Num  : Int128;
+       Den  : Int128;
+       For0 : Natural;
+       Aft0 : Natural)
+      renames Impl.Image_Fixed;
+ 
+    procedure Set_Image_Fixed128
+      (V    : Int128;
+       S    : in out String;
+       P    : in out Natural;
+       Num  : Int128;
+       Den  : Int128;
+       For0 : Natural;
+       Aft0 : Natural;
+       Fore : Natural;
+       Aft  : Natural;
+       Exp  : Natural)
+      renames Impl.Set_Image_Fixed;
+ 
+ end System.Img_Fixed_128;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imfi32.ads gcc-11.1.0/gcc/ada/libgnat/s-imfi32.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imfi32.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imfi32.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,69 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                  S Y S T E M . I M G _ F I X E D _ 3 2                   --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routines for supporting the Image attribute for
+ --  ordinary fixed point types up to 32-bit small and mantissa.
+ 
+ with Interfaces;
+ with System.Arith_32;
+ with System.Image_F;
+ 
+ package System.Img_Fixed_32 is
+    pragma Pure;
+ 
+    subtype Int32 is Interfaces.Integer_32;
+ 
+    package Impl is new Image_F (Int32, Arith_32.Scaled_Divide32);
+ 
+    procedure Image_Fixed32
+      (V    : Int32;
+       S    : in out String;
+       P    : out Natural;
+       Num  : Int32;
+       Den  : Int32;
+       For0 : Natural;
+       Aft0 : Natural)
+      renames Impl.Image_Fixed;
+ 
+    procedure Set_Image_Fixed32
+      (V    : Int32;
+       S    : in out String;
+       P    : in out Natural;
+       Num  : Int32;
+       Den  : Int32;
+       For0 : Natural;
+       Aft0 : Natural;
+       Fore : Natural;
+       Aft  : Natural;
+       Exp  : Natural)
+      renames Impl.Set_Image_Fixed;
+ 
+ end System.Img_Fixed_32;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imfi64.ads gcc-11.1.0/gcc/ada/libgnat/s-imfi64.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imfi64.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imfi64.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,69 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                  S Y S T E M . I M G _ F I X E D _ 6 4                   --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routines for supporting the Image attribute for
+ --  ordinary fixed point types up to 64-bit small and mantissa.
+ 
+ with Interfaces;
+ with System.Arith_64;
+ with System.Image_F;
+ 
+ package System.Img_Fixed_64 is
+    pragma Pure;
+ 
+    subtype Int64 is Interfaces.Integer_64;
+ 
+    package Impl is new Image_F (Int64, Arith_64.Scaled_Divide64);
+ 
+    procedure Image_Fixed64
+      (V    : Int64;
+       S    : in out String;
+       P    : out Natural;
+       Num  : Int64;
+       Den  : Int64;
+       For0 : Natural;
+       Aft0 : Natural)
+      renames Impl.Image_Fixed;
+ 
+    procedure Set_Image_Fixed64
+      (V    : Int64;
+       S    : in out String;
+       P    : in out Natural;
+       Num  : Int64;
+       Den  : Int64;
+       For0 : Natural;
+       Aft0 : Natural;
+       Fore : Natural;
+       Aft  : Natural;
+       Exp  : Natural)
+      renames Impl.Set_Image_Fixed;
+ 
+ end System.Img_Fixed_64;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgbiu.adb gcc-11.1.0/gcc/ada/libgnat/s-imgbiu.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imgbiu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgbiu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,158 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Unsigned_Types; use System.Unsigned_Types;
! 
! package body System.Img_BIU is
! 
!    -----------------------------
!    -- Set_Image_Based_Integer --
!    -----------------------------
! 
!    procedure Set_Image_Based_Integer
!      (V : Integer;
!       B : Natural;
!       W : Integer;
!       S : out String;
!       P : in out Natural)
!    is
!       Start : Natural;
! 
!    begin
!       --  Positive case can just use the unsigned circuit directly
! 
!       if V >= 0 then
!          Set_Image_Based_Unsigned (Unsigned (V), B, W, S, P);
! 
!       --  Negative case has to set a minus sign. Note also that we have to be
!       --  careful not to generate overflow with the largest negative number.
! 
!       else
!          P := P + 1;
!          S (P) := ' ';
!          Start := P;
! 
!          declare
!             pragma Suppress (Overflow_Check);
!             pragma Suppress (Range_Check);
!          begin
!             Set_Image_Based_Unsigned (Unsigned (-V), B, W - 1, S, P);
!          end;
! 
!          --  Set minus sign in last leading blank location. Because of the
!          --  code above, there must be at least one such location.
! 
!          while S (Start + 1) = ' ' loop
!             Start := Start + 1;
!          end loop;
! 
!          S (Start) := '-';
!       end if;
! 
!    end Set_Image_Based_Integer;
! 
!    ------------------------------
!    -- Set_Image_Based_Unsigned --
!    ------------------------------
! 
!    procedure Set_Image_Based_Unsigned
!      (V : Unsigned;
!       B : Natural;
!       W : Integer;
!       S : out String;
!       P : in out Natural)
!    is
!       Start : constant Natural := P;
!       F, T  : Natural;
!       BU    : constant Unsigned := Unsigned (B);
!       Hex   : constant array
!                 (Unsigned range 0 .. 15) of Character := "0123456789ABCDEF";
! 
!       procedure Set_Digits (T : Unsigned);
!       --  Set digits of absolute value of T
! 
!       ----------------
!       -- Set_Digits --
!       ----------------
! 
!       procedure Set_Digits (T : Unsigned) is
!       begin
!          if T >= BU then
!             Set_Digits (T / BU);
!             P := P + 1;
!             S (P) := Hex (T mod BU);
!          else
!             P := P + 1;
!             S (P) := Hex (T);
!          end if;
!       end Set_Digits;
! 
!    --  Start of processing for Set_Image_Based_Unsigned
! 
!    begin
! 
!       if B >= 10 then
!          P := P + 1;
!          S (P) := '1';
!       end if;
! 
!       P := P + 1;
!       S (P) := Character'Val (Character'Pos ('0') + B mod 10);
! 
!       P := P + 1;
!       S (P) := '#';
! 
!       Set_Digits (V);
! 
!       P := P + 1;
!       S (P) := '#';
! 
!       --  Add leading spaces if required by width parameter
! 
!       if P - Start < W then
!          F := P;
!          P := Start + W;
!          T := P;
! 
!          while F > Start loop
!             S (T) := S (F);
!             T := T - 1;
!             F := F - 1;
!          end loop;
! 
!          for J in Start + 1 .. T loop
!             S (J) := ' ';
!          end loop;
!       end if;
! 
!    end Set_Image_Based_Unsigned;
  
! end System.Img_BIU;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgbiu.ads gcc-11.1.0/gcc/ada/libgnat/s-imgbiu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imgbiu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgbiu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,72 ****
  ------------------------------------------------------------------------------
  
  --  Contains the routine for computing the image in based format of signed and
! --  unsigned integers whose size <= Integer'Size for use by Text_IO.Integer_IO
! --  and Text_IO.Modular_IO.
  
  with System.Unsigned_Types;
  
  package System.Img_BIU is
     pragma Pure;
  
     procedure Set_Image_Based_Integer
       (V : Integer;
        B : Natural;
        W : Integer;
        S : out String;
!       P : in out Natural);
!    --  Sets the signed image of V in based format, using base value B (2..16)
!    --  starting at S (P + 1), updating P to point to the last character stored.
!    --  The image includes a leading minus sign if necessary, but no leading
!    --  spaces unless W is positive, in which case leading spaces are output if
!    --  necessary to ensure that the output string is no less than W characters
!    --  long. The caller promises that the buffer is large enough and no check
!    --  is made for this. Constraint_Error will not necessarily be raised if
!    --  this is violated, since it is perfectly valid to compile this unit with
!    --  checks off.
  
     procedure Set_Image_Based_Unsigned
!      (V : System.Unsigned_Types.Unsigned;
        B : Natural;
        W : Integer;
        S : out String;
!       P : in out Natural);
!    --  Sets the unsigned image of V in based format, using base value B (2..16)
!    --  starting at S (P + 1), updating P to point to the last character stored.
!    --  The image includes no leading spaces unless W is positive, in which case
!    --  leading spaces are output if necessary to ensure that the output string
!    --  is no less than W characters long. The caller promises that the buffer
!    --  is large enough and no check is made for this. Constraint_Error will not
!    --  necessarily be raised if this is violated, since it is perfectly valid
!    --  to compile this unit with checks off).
  
  end System.Img_BIU;
--- 30,62 ----
  ------------------------------------------------------------------------------
  
  --  Contains the routine for computing the image in based format of signed and
! --  unsigned integers up to Integer for use by Text_IO.Integer_IO and
! --  Text_IO.Modular_IO.
  
+ with System.Image_B;
  with System.Unsigned_Types;
  
  package System.Img_BIU is
     pragma Pure;
  
+    subtype Unsigned is Unsigned_Types.Unsigned;
+ 
+    package Impl is new Image_B (Integer, Unsigned);
+ 
     procedure Set_Image_Based_Integer
       (V : Integer;
        B : Natural;
        W : Integer;
        S : out String;
!       P : in out Natural)
!      renames Impl.Set_Image_Based_Integer;
  
     procedure Set_Image_Based_Unsigned
!      (V : Unsigned;
        B : Natural;
        W : Integer;
        S : out String;
!       P : in out Natural)
!      renames Impl.Set_Image_Based_Unsigned;
  
  end System.Img_BIU;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgboo.adb gcc-11.1.0/gcc/ada/libgnat/s-imgboo.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imgboo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgboo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 1992-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 1992-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgboo.ads gcc-11.1.0/gcc/ada/libgnat/s-imgboo.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imgboo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgboo.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgcha.adb gcc-11.1.0/gcc/ada/libgnat/s-imgcha.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imgcha.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgcha.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Img_Char is
*** 140,147 ****
              declare
                 VP : constant Natural := Character'Pos (V);
              begin
!                S (1 .. 9) := "RESERVED_";
!                S (10) := Character'Val (48 + VP / 100);
                 S (11) := Character'Val (48 + (VP / 10) mod 10);
                 S (12) := Character'Val (48 + VP mod 10);
                 P := 12;
--- 140,151 ----
              declare
                 VP : constant Natural := Character'Pos (V);
              begin
!                pragma Assert (S'First = 1 and S'Last >= 12);
!                --  As described in the header description, this procedure
!                --  doesn't check the size of the string provided by the caller
!                --  and suppose S'First is 1.
!                S (1 .. 10) := "RESERVED_1";
!                --  Since C1_Range is 127..159, the first character is always 1
                 S (11) := Character'Val (48 + (VP / 10) mod 10);
                 S (12) := Character'Val (48 + VP mod 10);
                 P := 12;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgcha.ads gcc-11.1.0/gcc/ada/libgnat/s-imgcha.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imgcha.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgcha.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgdec.adb gcc-11.1.0/gcc/ada/libgnat/s-imgdec.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imgdec.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgdec.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,420 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                        S Y S T E M . I M G _ D E C                       --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System.Img_Int; use System.Img_Int;
- 
- package body System.Img_Dec is
- 
-    -------------------
-    -- Image_Decimal --
-    -------------------
- 
-    procedure Image_Decimal
-      (V     : Integer;
-       S     : in out String;
-       P     : out Natural;
-       Scale : Integer)
-    is
-       pragma Assert (S'First = 1);
- 
-    begin
-       --  Add space at start for non-negative numbers
- 
-       if V >= 0 then
-          S (1) := ' ';
-          P := 1;
-       else
-          P := 0;
-       end if;
- 
-       Set_Image_Decimal (V, S, P, Scale, 1, Integer'Max (1, Scale), 0);
-    end Image_Decimal;
- 
-    ------------------------
-    -- Set_Decimal_Digits --
-    ------------------------
- 
-    procedure Set_Decimal_Digits
-      (Digs  : in out String;
-       NDigs : Natural;
-       S     : out String;
-       P     : in out Natural;
-       Scale : Integer;
-       Fore  : Natural;
-       Aft   : Natural;
-       Exp   : Natural)
-    is
-       Minus : constant Boolean := (Digs (Digs'First) = '-');
-       --  Set True if input is negative
- 
-       Zero : Boolean := (Digs (Digs'First + 1) = '0');
-       --  Set True if input is exactly zero (only case when a leading zero
-       --  is permitted in the input string given to this procedure). This
-       --  flag can get set later if rounding causes the value to become zero.
- 
-       FD : Natural := 2;
-       --  First digit position of digits remaining to be processed
- 
-       LD : Natural := NDigs;
-       --  Last digit position of digits remaining to be processed
- 
-       ND : Natural := NDigs - 1;
-       --  Number of digits remaining to be processed (LD - FD + 1)
- 
-       Digits_Before_Point : Integer := ND - Scale;
-       --  Number of digits before decimal point in the input value. This
-       --  value can be negative if the input value is less than 0.1, so
-       --  it is an indication of the current exponent. Digits_Before_Point
-       --  is adjusted if the rounding step generates an extra digit.
- 
-       Digits_After_Point : constant Natural := Integer'Max (1, Aft);
-       --  Digit positions after decimal point in result string
- 
-       Expon : Integer;
-       --  Integer value of exponent
- 
-       procedure Round (N : Integer);
-       --  Round the number in Digs. N is the position of the last digit to be
-       --  retained in the rounded position (rounding is based on Digs (N + 1)
-       --  FD, LD, ND are reset as necessary if required. Note that if the
-       --  result value rounds up (e.g. 9.99 => 10.0), an extra digit can be
-       --  placed in the sign position as a result of the rounding, this is
-       --  the case in which FD is adjusted. The call to Round has no effect
-       --  if N is outside the range FD .. LD.
- 
-       procedure Set (C : Character);
-       pragma Inline (Set);
-       --  Sets character C in output buffer
- 
-       procedure Set_Blanks_And_Sign (N : Integer);
-       --  Sets leading blanks and minus sign if needed. N is the number of
-       --  positions to be filled (a minus sign is output even if N is zero
-       --  or negative, For a positive value, if N is non-positive, then
-       --  a leading blank is filled.
- 
-       procedure Set_Digits (S, E : Natural);
-       pragma Inline (Set_Digits);
-       --  Set digits S through E from Digs, no effect if S > E
- 
-       procedure Set_Zeroes (N : Integer);
-       pragma Inline (Set_Zeroes);
-       --  Set N zeroes, no effect if N is negative
- 
-       -----------
-       -- Round --
-       -----------
- 
-       procedure Round (N : Integer) is
-          D : Character;
- 
-       begin
-          --  Nothing to do if rounding past the last digit we have
- 
-          if N >= LD then
-             return;
- 
-          --  Cases of rounding before the initial digit
- 
-          elsif N < FD then
- 
-             --  The result is zero, unless we are rounding just before
-             --  the first digit, and the first digit is five or more.
- 
-             if N = 1 and then Digs (Digs'First + 1) >= '5' then
-                Digs (Digs'First) := '1';
-             else
-                Digs (Digs'First) := '0';
-                Zero := True;
-             end if;
- 
-             Digits_Before_Point := Digits_Before_Point + 1;
-             FD := 1;
-             LD := 1;
-             ND := 1;
- 
-          --  Normal case of rounding an existing digit
- 
-          else
-             LD := N;
-             ND := LD - 1;
- 
-             if Digs (N + 1) >= '5' then
-                for J in reverse 2 .. N loop
-                   D := Character'Succ (Digs (J));
- 
-                   if D <= '9' then
-                      Digs (J) := D;
-                      return;
-                   else
-                      Digs (J) := '0';
-                   end if;
-                end loop;
- 
-                --  Here the rounding overflows into the sign position. That's
-                --  OK, because we already captured the value of the sign and
-                --  we are in any case destroying the value in the Digs buffer
- 
-                Digs (Digs'First) := '1';
-                FD := 1;
-                ND := ND + 1;
-                Digits_Before_Point := Digits_Before_Point + 1;
-             end if;
-          end if;
-       end Round;
- 
-       ---------
-       -- Set --
-       ---------
- 
-       procedure Set (C : Character) is
-       begin
-          P := P + 1;
-          S (P) := C;
-       end Set;
- 
-       -------------------------
-       -- Set_Blanks_And_Sign --
-       -------------------------
- 
-       procedure Set_Blanks_And_Sign (N : Integer) is
-          W : Integer := N;
- 
-       begin
-          if Minus then
-             W := W - 1;
- 
-             for J in 1 .. W loop
-                Set (' ');
-             end loop;
- 
-             Set ('-');
- 
-          else
-             for J in 1 .. W loop
-                Set (' ');
-             end loop;
-          end if;
-       end Set_Blanks_And_Sign;
- 
-       ----------------
-       -- Set_Digits --
-       ----------------
- 
-       procedure Set_Digits (S, E : Natural) is
-       begin
-          for J in S .. E loop
-             Set (Digs (J));
-          end loop;
-       end Set_Digits;
- 
-       ----------------
-       -- Set_Zeroes --
-       ----------------
- 
-       procedure Set_Zeroes (N : Integer) is
-       begin
-          for J in 1 .. N loop
-             Set ('0');
-          end loop;
-       end Set_Zeroes;
- 
-    --  Start of processing for Set_Decimal_Digits
- 
-    begin
-       --  Case of exponent given
- 
-       if Exp > 0 then
-          Set_Blanks_And_Sign (Fore - 1);
-          Round (Digits_After_Point + 2);
-          Set (Digs (FD));
-          FD := FD + 1;
-          ND := ND - 1;
-          Set ('.');
- 
-          if ND >= Digits_After_Point then
-             Set_Digits (FD, FD + Digits_After_Point - 1);
-          else
-             Set_Digits (FD, LD);
-             Set_Zeroes (Digits_After_Point - ND);
-          end if;
- 
-          --  Calculate exponent. The number of digits before the decimal point
-          --  in the input is Digits_Before_Point, and the number of digits
-          --  before the decimal point in the output is 1, so we can get the
-          --  exponent as the difference between these two values. The one
-          --  exception is for the value zero, which by convention has an
-          --  exponent of +0.
- 
-          Expon := (if Zero then 0 else Digits_Before_Point - 1);
-          Set ('E');
-          ND := 0;
- 
-          if Expon >= 0 then
-             Set ('+');
-             Set_Image_Integer (Expon, Digs, ND);
-          else
-             Set ('-');
-             Set_Image_Integer (-Expon, Digs, ND);
-          end if;
- 
-          Set_Zeroes (Exp - ND - 1);
-          Set_Digits (1, ND);
-          return;
- 
-       --  Case of no exponent given. To make these cases clear, we use
-       --  examples. For all the examples, we assume Fore = 2, Aft = 3.
-       --  A P in the example input string is an implied zero position,
-       --  not included in the input string.
- 
-       else
-          --  Round at correct position
-          --    Input: 4PP      => unchanged
-          --    Input: 400.03   => unchanged
-          --    Input  3.4567   => 3.457
-          --    Input: 9.9999   => 10.000
-          --    Input: 0.PPP5   => 0.001
-          --    Input: 0.PPP4   => 0
-          --    Input: 0.00003  => 0
- 
-          Round (LD - (Scale - Digits_After_Point));
- 
-          --  No digits before point in input
-          --    Input: .123   Output: 0.123
-          --    Input: .PP3   Output: 0.003
- 
-          if Digits_Before_Point <= 0 then
-             Set_Blanks_And_Sign (Fore - 1);
-             Set ('0');
-             Set ('.');
- 
-             declare
-                DA : Natural := Digits_After_Point;
-                --  Digits remaining to output after point
- 
-                LZ : constant Integer := Integer'Min (DA, -Digits_Before_Point);
-                --  Number of leading zeroes after point. Note: there used to be
-                --  a Max of this result with zero, but that's redundant, since
-                --  we know DA is positive, and because of the test above, we
-                --  know that -Digits_Before_Point >= 0.
- 
-             begin
-                Set_Zeroes (LZ);
-                DA := DA - LZ;
- 
-                if DA < ND then
- 
-                   --  Note: it is definitely possible for the above condition
-                   --  to be True, for example:
- 
-                   --    V => 1234, Scale => 5, Fore => 0, After => 1, Exp => 0
- 
-                   --  but in this case DA = 0, ND = 1, FD = 1, FD + DA-1 = 0
-                   --  so the arguments in the call are (1, 0) meaning that no
-                   --  digits are output.
- 
-                   --  No obvious example exists where the following call to
-                   --  Set_Digits actually outputs some digits, but we lack a
-                   --  proof that no such example exists.
- 
-                   --  So it is safer to retain this call, even though as a
-                   --  result it is hard (or perhaps impossible) to create a
-                   --  coverage test for the inlined code of the call.
- 
-                   Set_Digits (FD, FD + DA - 1);
- 
-                else
-                   Set_Digits (FD, LD);
-                   Set_Zeroes (DA - ND);
-                end if;
-             end;
- 
-          --  At least one digit before point in input
- 
-          else
-             --  Less digits in input than are needed before point
-             --    Input: 1PP  Output: 100.000
- 
-             if ND < Digits_Before_Point then
- 
-                --  Special case, if the input is the single digit 0, then we
-                --  do not want 000.000, but instead 0.000.
- 
-                if ND = 1 and then Digs (FD) = '0' then
-                   Set_Blanks_And_Sign (Fore - 1);
-                   Set ('0');
- 
-                --  Normal case where we need to output scaling zeroes
- 
-                else
-                   Set_Blanks_And_Sign (Fore - Digits_Before_Point);
-                   Set_Digits (FD, LD);
-                   Set_Zeroes (Digits_Before_Point - ND);
-                end if;
- 
-                --  Set period and zeroes after the period
- 
-                Set ('.');
-                Set_Zeroes (Digits_After_Point);
- 
-             --  Input has full amount of digits before decimal point
- 
-             else
-                Set_Blanks_And_Sign (Fore - Digits_Before_Point);
-                Set_Digits (FD, FD + Digits_Before_Point - 1);
-                Set ('.');
-                Set_Digits (FD + Digits_Before_Point, LD);
-                Set_Zeroes (Digits_After_Point - (ND - Digits_Before_Point));
-             end if;
-          end if;
-       end if;
-    end Set_Decimal_Digits;
- 
-    -----------------------
-    -- Set_Image_Decimal --
-    -----------------------
- 
-    procedure Set_Image_Decimal
-      (V     : Integer;
-       S     : in out String;
-       P     : in out Natural;
-       Scale : Integer;
-       Fore  : Natural;
-       Aft   : Natural;
-       Exp   : Natural)
-    is
-       Digs : String := Integer'Image (V);
-       --  Sign and digits of decimal value
- 
-    begin
-       Set_Decimal_Digits (Digs, Digs'Length, S, P, Scale, Fore, Aft, Exp);
-    end Set_Image_Decimal;
- 
- end System.Img_Dec;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgdec.ads gcc-11.1.0/gcc/ada/libgnat/s-imgdec.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imgdec.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgdec.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,83 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       S Y S T E M . I M G _ D E C                        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Image for decimal fixed types where the size of the corresponding integer
- --  type does not exceed Integer'Size (also used for Text_IO.Decimal_IO output)
- 
- package System.Img_Dec is
-    pragma Pure;
- 
-    procedure Image_Decimal
-      (V     : Integer;
-       S     : in out String;
-       P     : out Natural;
-       Scale : Integer);
-    --  Computes fixed_type'Image (V), where V is the integer value (in units of
-    --  delta) of a decimal type whose Scale is as given and stores the result
-    --  S (1 .. P), updating P to the value of L. The image is given by the
-    --  rules in RM 3.5(34) for fixed-point type image functions. The caller
-    --  guarantees that S is long enough to hold the result. S need not have a
-    --  lower bound of 1.
- 
-    procedure Set_Image_Decimal
-      (V     : Integer;
-       S     : in out String;
-       P     : in out Natural;
-       Scale : Integer;
-       Fore  : Natural;
-       Aft   : Natural;
-       Exp   : Natural);
-    --  Sets the image of V, where V is the integer value (in units of delta)
-    --  of a decimal type with the given Scale, starting at S (P + 1), updating
-    --  P to point to the last character stored, the caller promises that the
-    --  buffer is large enough and no check is made for this. Constraint_Error
-    --  will not necessarily be raised if this requirement is violated, since
-    --  it is perfectly valid to compile this unit with checks off. The Fore,
-    --  Aft and Exp values can be set to any valid values for the case of use
-    --  by Text_IO.Decimal_IO. Note that there is no leading space stored.
- 
-    procedure Set_Decimal_Digits
-      (Digs  : in out String;
-       NDigs : Natural;
-       S     : out String;
-       P     : in out Natural;
-       Scale : Integer;
-       Fore  : Natural;
-       Aft   : Natural;
-       Exp   : Natural);
-    --  This procedure has the same semantics as Set_Image_Decimal, except that
-    --  the value in Digs (1 .. NDigs) is given as a string of decimal digits
-    --  preceded by either a minus sign or a space (i.e. the integer image of
-    --  the value in units of delta). The call may destroy the value in Digs,
-    --  which is why Digs is in-out (this happens if rounding is required).
-    --  Set_Decimal_Digits is shared by all the decimal image routines.
- 
- end System.Img_Dec;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgenu.adb gcc-11.1.0/gcc/ada/libgnat/s-imgenu.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imgenu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgenu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2000-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2000-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgenu.ads gcc-11.1.0/gcc/ada/libgnat/s-imgenu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imgenu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgenu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgint.adb gcc-11.1.0/gcc/ada/libgnat/s-imgint.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imgint.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgint.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,103 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! package body System.Img_Int is
! 
!    procedure Set_Digits
!      (T : Integer;
!       S : in out String;
!       P : in out Natural);
!    --  Set digits of absolute value of T, which is zero or negative. We work
!    --  with the negative of the value so that the largest negative number is
!    --  not a special case.
! 
!    -------------------
!    -- Image_Integer --
!    -------------------
! 
!    procedure Image_Integer
!      (V : Integer;
!       S : in out String;
!       P : out Natural)
!    is
!       pragma Assert (S'First = 1);
! 
!    begin
!       if V >= 0 then
!          S (1) := ' ';
!          P := 1;
!       else
!          P := 0;
!       end if;
! 
!       Set_Image_Integer (V, S, P);
!    end Image_Integer;
! 
!    ----------------
!    -- Set_Digits --
!    ----------------
! 
!    procedure Set_Digits
!      (T : Integer;
!       S : in out String;
!       P : in out Natural)
!    is
!    begin
!       if T <= -10 then
!          Set_Digits (T / 10, S, P);
!          P := P + 1;
!          S (P) := Character'Val (48 - (T rem 10));
!       else
!          P := P + 1;
!          S (P) := Character'Val (48 - T);
!       end if;
!    end Set_Digits;
! 
!    -----------------------
!    -- Set_Image_Integer --
!    -----------------------
! 
!    procedure Set_Image_Integer
!      (V : Integer;
!       S : in out String;
!       P : in out Natural)
!    is
!    begin
!       if V >= 0 then
!          Set_Digits (-V, S, P);
!       else
!          P := P + 1;
!          S (P) := '-';
!          Set_Digits (V, S, P);
!       end if;
!    end Set_Image_Integer;
  
! end System.Img_Int;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgint.ads gcc-11.1.0/gcc/ada/libgnat/s-imgint.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imgint.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgint.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,57 ****
  ------------------------------------------------------------------------------
  
  --  This package contains the routines for supporting the Image attribute for
! --  signed integer types up to Size Integer'Size, and also for conversion
! --  operations required in Text_IO.Integer_IO for such types.
  
  package System.Img_Int is
     pragma Pure;
  
     procedure Image_Integer
       (V : Integer;
        S : in out String;
!       P : out Natural);
!    --  Computes Integer'Image (V) and stores the result in S (1 .. P)
!    --  setting the resulting value of P. The caller guarantees that S
!    --  is long enough to hold the result, and that S'First is 1.
  
     procedure Set_Image_Integer
       (V : Integer;
        S : in out String;
!       P : in out Natural);
!    --  Stores the image of V in S starting at S (P + 1), P is updated to point
!    --  to the last character stored. The value stored is identical to the value
!    --  of Integer'Image (V) except that no leading space is stored when V is
!    --  non-negative. The caller guarantees that S is long enough to hold the
!    --  result. S need not have a lower bound of 1.
  
  end System.Img_Int;
--- 30,55 ----
  ------------------------------------------------------------------------------
  
  --  This package contains the routines for supporting the Image attribute for
! --  signed integer types up to Integer, and also for conversion operations
! --  required in Text_IO.Integer_IO for such types.
! 
! with System.Image_I;
  
  package System.Img_Int is
     pragma Pure;
  
+    package Impl is new Image_I (Integer);
+ 
     procedure Image_Integer
       (V : Integer;
        S : in out String;
!       P : out Natural)
!      renames Impl.Image_Integer;
  
     procedure Set_Image_Integer
       (V : Integer;
        S : in out String;
!       P : in out Natural)
!      renames Impl.Set_Image_Integer;
  
  end System.Img_Int;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgllb.adb gcc-11.1.0/gcc/ada/libgnat/s-imgllb.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imgllb.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgllb.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,161 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Unsigned_Types; use System.Unsigned_Types;
! 
! package body System.Img_LLB is
! 
!    ---------------------------------------
!    -- Set_Image_Based_Long_Long_Integer --
!    ---------------------------------------
! 
!    procedure Set_Image_Based_Long_Long_Integer
!      (V : Long_Long_Integer;
!       B : Natural;
!       W : Integer;
!       S : out String;
!       P : in out Natural)
!    is
!       Start : Natural;
! 
!    begin
!       --  Positive case can just use the unsigned circuit directly
! 
!       if V >= 0 then
!          Set_Image_Based_Long_Long_Unsigned
!            (Long_Long_Unsigned (V), B, W, S, P);
! 
!       --  Negative case has to set a minus sign. Note also that we have to be
!       --  careful not to generate overflow with the largest negative number.
! 
!       else
!          P := P + 1;
!          S (P) := ' ';
!          Start := P;
! 
!          declare
!             pragma Suppress (Overflow_Check);
!             pragma Suppress (Range_Check);
!          begin
!             Set_Image_Based_Long_Long_Unsigned
!               (Long_Long_Unsigned (-V), B, W - 1, S, P);
!          end;
! 
!          --  Set minus sign in last leading blank location. Because of the
!          --  code above, there must be at least one such location.
! 
!          while S (Start + 1) = ' ' loop
!             Start := Start + 1;
!          end loop;
! 
!          S (Start) := '-';
!       end if;
! 
!    end Set_Image_Based_Long_Long_Integer;
! 
!    ----------------------------------------
!    -- Set_Image_Based_Long_Long_Unsigned --
!    ----------------------------------------
! 
!    procedure Set_Image_Based_Long_Long_Unsigned
!      (V : Long_Long_Unsigned;
!       B : Natural;
!       W : Integer;
!       S : out String;
!       P : in out Natural)
!    is
!       Start : constant Natural := P;
!       F, T  : Natural;
!       BU    : constant Long_Long_Unsigned := Long_Long_Unsigned (B);
!       Hex   : constant array
!                 (Long_Long_Unsigned range 0 .. 15) of Character :=
!                                                          "0123456789ABCDEF";
! 
!       procedure Set_Digits (T : Long_Long_Unsigned);
!       --  Set digits of absolute value of T
! 
!       ----------------
!       -- Set_Digits --
!       ----------------
! 
!       procedure Set_Digits (T : Long_Long_Unsigned) is
!       begin
!          if T >= BU then
!             Set_Digits (T / BU);
!             P := P + 1;
!             S (P) := Hex (T mod BU);
!          else
!             P := P + 1;
!             S (P) := Hex (T);
!          end if;
!       end Set_Digits;
! 
!    --  Start of processing for Set_Image_Based_Long_Long_Unsigned
! 
!    begin
! 
!       if B >= 10 then
!          P := P + 1;
!          S (P) := '1';
!       end if;
! 
!       P := P + 1;
!       S (P) := Character'Val (Character'Pos ('0') + B mod 10);
! 
!       P := P + 1;
!       S (P) := '#';
! 
!       Set_Digits (V);
! 
!       P := P + 1;
!       S (P) := '#';
! 
!       --  Add leading spaces if required by width parameter
! 
!       if P - Start < W then
!          F := P;
!          P := Start + W;
!          T := P;
! 
!          while F > Start loop
!             S (T) := S (F);
!             T := T - 1;
!             F := F - 1;
!          end loop;
! 
!          for J in Start + 1 .. T loop
!             S (J) := ' ';
!          end loop;
!       end if;
! 
!    end Set_Image_Based_Long_Long_Unsigned;
  
! end System.Img_LLB;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgllb.ads gcc-11.1.0/gcc/ada/libgnat/s-imgllb.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imgllb.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgllb.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,72 ****
  ------------------------------------------------------------------------------
  
  --  Contains the routine for computing the image in based format of signed and
! --  unsigned integers whose size > Integer'Size for use by Text_IO.Integer_IO
! --  and Text_IO.Modular_IO.
  
  with System.Unsigned_Types;
  
  package System.Img_LLB is
     pragma Preelaborate;
  
     procedure Set_Image_Based_Long_Long_Integer
       (V : Long_Long_Integer;
        B : Natural;
        W : Integer;
        S : out String;
!       P : in out Natural);
!    --  Sets the signed image of V in based format, using base value B (2..16)
!    --  starting at S (P + 1), updating P to point to the last character stored.
!    --  The image includes a leading minus sign if necessary, but no leading
!    --  spaces unless W is positive, in which case leading spaces are output if
!    --  necessary to ensure that the output string is no less than W characters
!    --  long. The caller promises that the buffer is large enough and no check
!    --  is made for this. Constraint_Error will not necessarily be raised if
!    --  this is violated, since it is perfectly valid to compile this unit with
!    --  checks off.
  
     procedure Set_Image_Based_Long_Long_Unsigned
!      (V : System.Unsigned_Types.Long_Long_Unsigned;
        B : Natural;
        W : Integer;
        S : out String;
!       P : in out Natural);
!    --  Sets the unsigned image of V in based format, using base value B (2..16)
!    --  starting at S (P + 1), updating P to point to the last character stored.
!    --  The image includes no leading spaces unless W is positive, in which case
!    --  leading spaces are output if necessary to ensure that the output string
!    --  is no less than W characters long. The caller promises that the buffer
!    --  is large enough and no check is made for this. Constraint_Error will not
!    --  necessarily be raised if this is violated, since it is perfectly valid
!    --  to compile this unit with checks off).
  
  end System.Img_LLB;
--- 30,62 ----
  ------------------------------------------------------------------------------
  
  --  Contains the routine for computing the image in based format of signed and
! --  unsigned integers larger than Integer for use by Text_IO.Integer_IO and
! --  Text_IO.Modular_IO.
  
+ with System.Image_B;
  with System.Unsigned_Types;
  
  package System.Img_LLB is
     pragma Preelaborate;
  
+    subtype Long_Long_Unsigned is Unsigned_Types.Long_Long_Unsigned;
+ 
+    package Impl is new Image_B (Long_Long_Integer, Long_Long_Unsigned);
+ 
     procedure Set_Image_Based_Long_Long_Integer
       (V : Long_Long_Integer;
        B : Natural;
        W : Integer;
        S : out String;
!       P : in out Natural)
!      renames Impl.Set_Image_Based_Integer;
  
     procedure Set_Image_Based_Long_Long_Unsigned
!      (V : Long_Long_Unsigned;
        B : Natural;
        W : Integer;
        S : out String;
!       P : in out Natural)
!      renames Impl.Set_Image_Based_Unsigned;
  
  end System.Img_LLB;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imglld.adb gcc-11.1.0/gcc/ada/libgnat/s-imglld.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imglld.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imglld.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,82 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       S Y S T E M . I M G _ L L D                        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System.Img_Dec; use System.Img_Dec;
- 
- package body System.Img_LLD is
- 
-    -----------------------------
-    -- Image_Long_Long_Decimal --
-    ----------------------------
- 
-    procedure Image_Long_Long_Decimal
-      (V     : Long_Long_Integer;
-       S     : in out String;
-       P     : out Natural;
-       Scale : Integer)
-    is
-       pragma Assert (S'First = 1);
- 
-    begin
-       --  Add space at start for non-negative numbers
- 
-       if V >= 0 then
-          S (1) := ' ';
-          P := 1;
-       else
-          P := 0;
-       end if;
- 
-       Set_Image_Long_Long_Decimal
-         (V, S, P, Scale, 1, Integer'Max (1, Scale), 0);
-    end Image_Long_Long_Decimal;
- 
-    ---------------------------------
-    -- Set_Image_Long_Long_Decimal --
-    ---------------------------------
- 
-    procedure Set_Image_Long_Long_Decimal
-      (V     : Long_Long_Integer;
-       S     : in out String;
-       P     : in out Natural;
-       Scale : Integer;
-       Fore  : Natural;
-       Aft   : Natural;
-       Exp   : Natural)
-    is
-       Digs : String := Long_Long_Integer'Image (V);
-       --  Sign and digits of decimal value
- 
-    begin
-       Set_Decimal_Digits (Digs, Digs'Length, S, P, Scale, Fore, Aft, Exp);
-    end Set_Image_Long_Long_Decimal;
- 
- end System.Img_LLD;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imglld.ads gcc-11.1.0/gcc/ada/libgnat/s-imglld.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imglld.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imglld.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,67 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       S Y S T E M . I M G _ L L D                        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Image for decimal fixed types where the size of the corresponding integer
- --  type does exceeds Integer'Size (also used for Text_IO.Decimal_IO output)
- 
- package System.Img_LLD is
-    pragma Pure;
- 
-    procedure Image_Long_Long_Decimal
-      (V     : Long_Long_Integer;
-       S     : in out String;
-       P     : out Natural;
-       Scale : Integer);
-    --  Computes fixed_type'Image (V), where V is the integer value (in units of
-    --  delta) of a decimal type whose Scale is as given and store the result in
-    --  S (P + 1 .. L), updating P to the value of L. The image is given by the
-    --  rules in RM 3.5(34) for fixed-point type image functions. The caller
-    --  guarantees that S is long enough to hold the result. S need not have a
-    --  lower bound of 1.
- 
-    procedure Set_Image_Long_Long_Decimal
-      (V     : Long_Long_Integer;
-       S     : in out String;
-       P     : in out Natural;
-       Scale : Integer;
-       Fore  : Natural;
-       Aft   : Natural;
-       Exp   : Natural);
-    --  Sets the image of V, where V is the integer value (in units of delta)
-    --  of a decimal type with the given Scale, starting at S (P + 1), updating
-    --  P to point to the last character stored, the caller promises that the
-    --  buffer is large enough and no check is made for this. Constraint_Error
-    --  will not necessarily be raised if this requirement is violated, since
-    --  it is perfectly valid to compile this unit with checks off. The Fore,
-    --  Aft and Exp values can be set to any valid values for the case of use
-    --  by Text_IO.Decimal_IO. Note that there is no leading space stored.
- 
- end System.Img_LLD;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imglli.adb gcc-11.1.0/gcc/ada/libgnat/s-imglli.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imglli.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imglli.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,102 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! package body System.Img_LLI is
! 
!    procedure Set_Digits
!      (T : Long_Long_Integer;
!       S : in out String;
!       P : in out Natural);
!    --  Set digits of absolute value of T, which is zero or negative. We work
!    --  with the negative of the value so that the largest negative number is
!    --  not a special case.
! 
!    -----------------------------
!    -- Image_Long_Long_Integer --
!    -----------------------------
! 
!    procedure Image_Long_Long_Integer
!      (V : Long_Long_Integer;
!       S : in out String;
!       P : out Natural)
!    is
!       pragma Assert (S'First = 1);
! 
!    begin
!       if V >= 0 then
!          S (1) := ' ';
!          P := 1;
!       else
!          P := 0;
!       end if;
! 
!       Set_Image_Long_Long_Integer (V, S, P);
!    end Image_Long_Long_Integer;
! 
!    ----------------
!    -- Set_Digits --
!    ----------------
! 
!    procedure Set_Digits
!      (T : Long_Long_Integer;
!       S : in out String;
!       P : in out Natural)
!    is
!    begin
!       if T <= -10 then
!          Set_Digits (T / 10, S, P);
!          P := P + 1;
!          S (P) := Character'Val (48 - (T rem 10));
!       else
!          P := P + 1;
!          S (P) := Character'Val (48 - T);
!       end if;
!    end Set_Digits;
! 
!    ---------------------------------
!    -- Set_Image_Long_Long_Integer --
!    --------------------------------
! 
!    procedure Set_Image_Long_Long_Integer
!      (V : Long_Long_Integer;
!       S : in out String;
!       P : in out Natural) is
!    begin
!       if V >= 0 then
!          Set_Digits (-V, S, P);
!       else
!          P := P + 1;
!          S (P) := '-';
!          Set_Digits (V, S, P);
!       end if;
!    end Set_Image_Long_Long_Integer;
  
! end System.Img_LLI;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imglli.ads gcc-11.1.0/gcc/ada/libgnat/s-imglli.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imglli.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imglli.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,57 ****
  ------------------------------------------------------------------------------
  
  --  This package contains the routines for supporting the Image attribute for
! --  signed integer types larger than Size Integer'Size, and also for conversion
! --  operations required in Text_IO.Integer_IO for such types.
  
  package System.Img_LLI is
     pragma Pure;
  
     procedure Image_Long_Long_Integer
       (V : Long_Long_Integer;
        S : in out String;
!       P : out Natural);
!    --  Computes Long_Long_Integer'Image (V) and stores the result in
!    --  S (1 .. P) setting the resulting value of P. The caller guarantees
!    --  that S is long enough to hold the result, and that S'First is 1.
  
     procedure Set_Image_Long_Long_Integer
       (V : Long_Long_Integer;
        S : in out String;
!       P : in out Natural);
!    --  Stores the image of V in S starting at S (P + 1), P is updated to point
!    --  to the last character stored. The value stored is identical to the value
!    --  of Long_Long_Integer'Image (V) except that no leading space is stored
!    --  when V is non-negative. The caller guarantees that S is long enough to
!    --  hold the result. S need not have a lower bound of 1.
  
  end System.Img_LLI;
--- 30,55 ----
  ------------------------------------------------------------------------------
  
  --  This package contains the routines for supporting the Image attribute for
! --  signed integer types larger Integer, and also for conversion operations
! --  required in Text_IO.Integer_IO for such types.
! 
! with System.Image_I;
  
  package System.Img_LLI is
     pragma Pure;
  
+    package Impl is new Image_I (Long_Long_Integer);
+ 
     procedure Image_Long_Long_Integer
       (V : Long_Long_Integer;
        S : in out String;
!       P : out Natural)
!      renames Impl.Image_Integer;
  
     procedure Set_Image_Long_Long_Integer
       (V : Long_Long_Integer;
        S : in out String;
!       P : in out Natural)
!      renames Impl.Set_Image_Integer;
  
  end System.Img_LLI;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imglllb.ads gcc-11.1.0/gcc/ada/libgnat/s-imglllb.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imglllb.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imglllb.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,63 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                      S Y S T E M . I M G _ L L L B                       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Contains the routine for computing the image in based format of signed and
+ --  unsigned integers larger than Long_Long_Integer for use by
+ --  Text_IO.Integer_IO and Text_IO.Modular_IO.
+ 
+ with System.Image_B;
+ with System.Unsigned_Types;
+ 
+ package System.Img_LLLB is
+    pragma Preelaborate;
+ 
+    subtype Long_Long_Long_Unsigned is Unsigned_Types.Long_Long_Long_Unsigned;
+ 
+    package Impl is
+     new Image_B (Long_Long_Long_Integer, Long_Long_Long_Unsigned);
+ 
+    procedure Set_Image_Based_Long_Long_Long_Integer
+      (V : Long_Long_Long_Integer;
+       B : Natural;
+       W : Integer;
+       S : out String;
+       P : in out Natural)
+      renames Impl.Set_Image_Based_Integer;
+ 
+    procedure Set_Image_Based_Long_Long_Long_Unsigned
+      (V : Long_Long_Long_Unsigned;
+       B : Natural;
+       W : Integer;
+       S : out String;
+       P : in out Natural)
+      renames Impl.Set_Image_Based_Unsigned;
+ 
+ end System.Img_LLLB;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgllli.ads gcc-11.1.0/gcc/ada/libgnat/s-imgllli.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imgllli.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imgllli.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,55 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                      S Y S T E M . I M G _ L L L I                       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routines for supporting the Image attribute for
+ --  signed integer types larger than Long_Long_Integer, and also for conversion
+ --  operations required in Text_IO.Integer_IO for such types.
+ 
+ with System.Image_I;
+ 
+ package System.Img_LLLI is
+    pragma Pure;
+ 
+    package Impl is new Image_I (Long_Long_Long_Integer);
+ 
+    procedure Image_Long_Long_Long_Integer
+      (V : Long_Long_Long_Integer;
+       S : in out String;
+       P : out Natural)
+      renames Impl.Image_Integer;
+ 
+    procedure Set_Image_Long_Long_Long_Integer
+      (V : Long_Long_Long_Integer;
+       S : in out String;
+       P : in out Natural)
+      renames Impl.Set_Image_Integer;
+ 
+ end System.Img_LLLI;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imglllu.ads gcc-11.1.0/gcc/ada/libgnat/s-imglllu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imglllu.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imglllu.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,58 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                      S Y S T E M . I M G _ L L L U                       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routines for supporting the Image attribute for
+ --  modular integer types larger than Long_Long_Unsigned, and also for
+ --  conversion operations required in Text_IO.Modular_IO for such types.
+ 
+ with System.Image_U;
+ with System.Unsigned_Types;
+ 
+ package System.Img_LLLU is
+    pragma Pure;
+ 
+    subtype Long_Long_Long_Unsigned is Unsigned_Types.Long_Long_Long_Unsigned;
+ 
+    package Impl is new Image_U (Long_Long_Long_Unsigned);
+ 
+    procedure Image_Long_Long_Long_Unsigned
+      (V : Long_Long_Long_Unsigned;
+       S : in out String;
+       P : out Natural)
+      renames Impl.Image_Unsigned;
+ 
+    procedure Set_Image_Long_Long_Long_Unsigned
+      (V : Long_Long_Long_Unsigned;
+       S : in out String;
+       P : in out Natural)
+      renames Impl.Set_Image_Unsigned;
+ 
+ end System.Img_LLLU;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imglllw.ads gcc-11.1.0/gcc/ada/libgnat/s-imglllw.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imglllw.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imglllw.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,61 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . I M G _ L L W                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Contains the routine for computing the image  of signed and unsigned
+ --  integers larger than Integer for use by Text_IO.Integer_IO and
+ --  Text_IO.Modular_IO.
+ 
+ with System.Image_W;
+ with System.Unsigned_Types;
+ 
+ package System.Img_LLLW is
+    pragma Pure;
+ 
+    subtype Long_Long_Long_Unsigned is Unsigned_Types.Long_Long_Long_Unsigned;
+ 
+    package Impl is
+     new Image_W (Long_Long_Long_Integer, Long_Long_Long_Unsigned);
+ 
+    procedure Set_Image_Width_Long_Long_Long_Integer
+      (V : Long_Long_Long_Integer;
+       W : Integer;
+       S : out String;
+       P : in out Natural)
+      renames Impl.Set_Image_Width_Integer;
+ 
+    procedure Set_Image_Width_Long_Long_Long_Unsigned
+      (V : Long_Long_Long_Unsigned;
+       W : Integer;
+       S : out String;
+       P : in out Natural)
+      renames Impl.Set_Image_Width_Unsigned;
+ 
+ end System.Img_LLLW;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgllu.adb gcc-11.1.0/gcc/ada/libgnat/s-imgllu.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imgllu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgllu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,73 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Unsigned_Types; use System.Unsigned_Types;
! 
! package body System.Img_LLU is
! 
!    ------------------------------
!    -- Image_Long_Long_Unsigned --
!    ------------------------------
! 
!    procedure Image_Long_Long_Unsigned
!      (V : System.Unsigned_Types.Long_Long_Unsigned;
!       S : in out String;
!       P : out Natural)
!    is
!       pragma Assert (S'First = 1);
!    begin
!       S (1) := ' ';
!       P := 1;
!       Set_Image_Long_Long_Unsigned (V, S, P);
!    end Image_Long_Long_Unsigned;
! 
!    ----------------------------------
!    -- Set_Image_Long_Long_Unsigned --
!    ----------------------------------
! 
!    procedure Set_Image_Long_Long_Unsigned
!      (V : Long_Long_Unsigned;
!       S : in out String;
!       P : in out Natural)
!    is
!    begin
!       if V >= 10 then
!          Set_Image_Long_Long_Unsigned (V / 10, S, P);
!          P := P + 1;
!          S (P) := Character'Val (48 + (V rem 10));
! 
!       else
!          P := P + 1;
!          S (P) := Character'Val (48 + V);
!       end if;
!    end Set_Image_Long_Long_Unsigned;
  
! end System.Img_LLU;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgllu.ads gcc-11.1.0/gcc/ada/libgnat/s-imgllu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imgllu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgllu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,61 ****
  ------------------------------------------------------------------------------
  
  --  This package contains the routines for supporting the Image attribute for
! --  unsigned (modular) integer types larger than Size Unsigned'Size, and also
! --  for conversion operations required in Text_IO.Modular_IO for such types.
  
  with System.Unsigned_Types;
  
  package System.Img_LLU is
     pragma Pure;
  
     procedure Image_Long_Long_Unsigned
!      (V : System.Unsigned_Types.Long_Long_Unsigned;
        S : in out String;
!       P : out Natural);
!    pragma Inline (Image_Long_Long_Unsigned);
! 
!    --  Computes Long_Long_Unsigned'Image (V) and stores the result in
!    --  S (1 .. P) setting the resulting value of P. The caller guarantees
!    --  that S is long enough to hold the result, and that S'First is 1.
  
     procedure Set_Image_Long_Long_Unsigned
!      (V : System.Unsigned_Types.Long_Long_Unsigned;
        S : in out String;
!       P : in out Natural);
!    --  Stores the image of V in S starting at S (P + 1), P is updated to point
!    --  to the last character stored. The value stored is identical to the value
!    --  of Long_Long_Unsigned'Image (V) except that no leading space is stored.
!    --  The caller guarantees that S is long enough to hold the result. S need
!    --  not have a lower bound of 1.
  
  end System.Img_LLU;
--- 30,58 ----
  ------------------------------------------------------------------------------
  
  --  This package contains the routines for supporting the Image attribute for
! --  modular integer types larger than Unsigned, and also for conversion
! --  operations required in Text_IO.Modular_IO for such types.
  
+ with System.Image_U;
  with System.Unsigned_Types;
  
  package System.Img_LLU is
     pragma Pure;
  
+    subtype Long_Long_Unsigned is Unsigned_Types.Long_Long_Unsigned;
+ 
+    package Impl is new Image_U (Long_Long_Unsigned);
+ 
     procedure Image_Long_Long_Unsigned
!      (V : Long_Long_Unsigned;
        S : in out String;
!       P : out Natural)
!      renames Impl.Image_Unsigned;
  
     procedure Set_Image_Long_Long_Unsigned
!      (V : Long_Long_Unsigned;
        S : in out String;
!       P : in out Natural)
!      renames Impl.Set_Image_Unsigned;
  
  end System.Img_LLU;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgllw.adb gcc-11.1.0/gcc/ada/libgnat/s-imgllw.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imgllw.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgllw.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,140 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Unsigned_Types; use System.Unsigned_Types;
! 
! package body System.Img_LLW is
! 
!    ---------------------------------------
!    -- Set_Image_Width_Long_Long_Integer --
!    ---------------------------------------
! 
!    procedure Set_Image_Width_Long_Long_Integer
!      (V : Long_Long_Integer;
!       W : Integer;
!       S : out String;
!       P : in out Natural)
!    is
!       Start : Natural;
! 
!    begin
!       --  Positive case can just use the unsigned circuit directly
! 
!       if V >= 0 then
!          Set_Image_Width_Long_Long_Unsigned
!            (Long_Long_Unsigned (V), W, S, P);
! 
!       --  Negative case has to set a minus sign. Note also that we have to be
!       --  careful not to generate overflow with the largest negative number.
! 
!       else
!          P := P + 1;
!          S (P) := ' ';
!          Start := P;
! 
!          declare
!             pragma Suppress (Overflow_Check);
!             pragma Suppress (Range_Check);
!          begin
!             Set_Image_Width_Long_Long_Unsigned
!               (Long_Long_Unsigned (-V), W - 1, S, P);
!          end;
! 
!          --  Set minus sign in last leading blank location. Because of the
!          --  code above, there must be at least one such location.
! 
!          while S (Start + 1) = ' ' loop
!             Start := Start + 1;
!          end loop;
! 
!          S (Start) := '-';
!       end if;
! 
!    end Set_Image_Width_Long_Long_Integer;
! 
!    ----------------------------------------
!    -- Set_Image_Width_Long_Long_Unsigned --
!    ----------------------------------------
! 
!    procedure Set_Image_Width_Long_Long_Unsigned
!      (V : Long_Long_Unsigned;
!       W : Integer;
!       S : out String;
!       P : in out Natural)
!    is
!       Start : constant Natural := P;
!       F, T  : Natural;
! 
!       procedure Set_Digits (T : Long_Long_Unsigned);
!       --  Set digits of absolute value of T
! 
!       ----------------
!       -- Set_Digits --
!       ----------------
! 
!       procedure Set_Digits (T : Long_Long_Unsigned) is
!       begin
!          if T >= 10 then
!             Set_Digits (T / 10);
!             P := P + 1;
!             S (P) := Character'Val (T mod 10 + Character'Pos ('0'));
!          else
!             P := P + 1;
!             S (P) := Character'Val (T + Character'Pos ('0'));
!          end if;
!       end Set_Digits;
! 
!    --  Start of processing for Set_Image_Width_Long_Long_Unsigned
! 
!    begin
!       Set_Digits (V);
! 
!       --  Add leading spaces if required by width parameter
! 
!       if P - Start < W then
!          F := P;
!          P := P + (W - (P - Start));
!          T := P;
! 
!          while F > Start loop
!             S (T) := S (F);
!             T := T - 1;
!             F := F - 1;
!          end loop;
! 
!          for J in Start + 1 .. T loop
!             S (J) := ' ';
!          end loop;
!       end if;
! 
!    end Set_Image_Width_Long_Long_Unsigned;
  
! end System.Img_LLW;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgllw.ads gcc-11.1.0/gcc/ada/libgnat/s-imgllw.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imgllw.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgllw.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,69 ****
  ------------------------------------------------------------------------------
  
  --  Contains the routine for computing the image  of signed and unsigned
! --  integers whose size > Integer'Size for use by Text_IO.Integer_IO,
  --  Text_IO.Modular_IO.
  
  with System.Unsigned_Types;
  
  package System.Img_LLW is
     pragma Pure;
  
     procedure Set_Image_Width_Long_Long_Integer
       (V : Long_Long_Integer;
        W : Integer;
        S : out String;
!       P : in out Natural);
!    --  Sets the signed image of V in decimal format, starting at S (P + 1),
!    --  updating P to point to the last character stored. The image includes
!    --  a leading minus sign if necessary, but no leading spaces unless W is
!    --  positive, in which case leading spaces are output if necessary to ensure
!    --  that the output string is no less than W characters long. The caller
!    --  promises that the buffer is large enough and no check is made for this.
!    --  Constraint_Error will not necessarily be raised if this is violated,
!    --  since it is perfectly valid to compile this unit with checks off.
  
     procedure Set_Image_Width_Long_Long_Unsigned
!      (V : System.Unsigned_Types.Long_Long_Unsigned;
        W : Integer;
        S : out String;
!       P : in out Natural);
!    --  Sets the unsigned image of V in decimal format, starting at S (P + 1),
!    --  updating P to point to the last character stored. The image includes no
!    --  leading spaces unless W is positive, in which case leading spaces are
!    --  output if necessary to ensure that the output string is no less than
!    --  W characters long. The caller promises that the buffer is large enough
!    --  and no check is made for this. Constraint_Error will not necessarily be
!    --  raised if this is violated, since it is perfectly valid to compile this
!    --  unit with checks off.
  
  end System.Img_LLW;
--- 30,60 ----
  ------------------------------------------------------------------------------
  
  --  Contains the routine for computing the image  of signed and unsigned
! --  integers larger than Integer for use by Text_IO.Integer_IO and
  --  Text_IO.Modular_IO.
  
+ with System.Image_W;
  with System.Unsigned_Types;
  
  package System.Img_LLW is
     pragma Pure;
  
+    subtype Long_Long_Unsigned is Unsigned_Types.Long_Long_Unsigned;
+ 
+    package Impl is new Image_W (Long_Long_Integer, Long_Long_Unsigned);
+ 
     procedure Set_Image_Width_Long_Long_Integer
       (V : Long_Long_Integer;
        W : Integer;
        S : out String;
!       P : in out Natural)
!      renames Impl.Set_Image_Width_Integer;
  
     procedure Set_Image_Width_Long_Long_Unsigned
!      (V : Long_Long_Unsigned;
        W : Integer;
        S : out String;
!       P : in out Natural)
!      renames Impl.Set_Image_Width_Unsigned;
  
  end System.Img_LLW;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgrea.adb gcc-11.1.0/gcc/ada/libgnat/s-imgrea.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imgrea.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgrea.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,38 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Img_LLU;        use System.Img_LLU;
! with System.Img_Uns;        use System.Img_Uns;
! with System.Powten_Table;   use System.Powten_Table;
! with System.Unsigned_Types; use System.Unsigned_Types;
  with System.Float_Control;
  
  package body System.Img_Real is
--- 29,37 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Img_LLU;    use System.Img_LLU;
! with System.Img_Uns;    use System.Img_Uns;
! with System.Powten_LLF; use System.Powten_LLF;
  with System.Float_Control;
  
  package body System.Img_Real is
*************** package body System.Img_Real is
*** 48,57 ****
     --  in very high precision floating-point output.
  
     --  Note that in the following, the "-2" accounts for the sign and one
!    --  extra digits, since we need the maximum number of 9's that can be
!    --  supported, e.g. for the normal 64 bit case, Long_Long_Integer'Width
!    --  is 21, since the maximum value (approx 1.6 * 10**19) has 20 digits,
!    --  but the maximum number of 9's that can be supported is 19.
  
     Maxdigs : constant :=
                 Natural'Min
--- 47,56 ----
     --  in very high precision floating-point output.
  
     --  Note that in the following, the "-2" accounts for the sign and one
!    --  extra digit, since we need the maximum number of 9's that can be
!    --  represented, e.g. for the 64-bit case, Long_Long_Unsigned'Width is
!    --  21, since the maximum value (approx 1.8E+19) has 20 digits, but the
!    --  maximum number of 9's that can be represented is only 19.
  
     Maxdigs : constant :=
                 Natural'Min
*************** package body System.Img_Real is
*** 59,65 ****
  
     Unsdigs : constant := Unsigned'Width - 2;
     --  Number of digits that can be converted using type Unsigned
-    --  See above for the explanation of the -2.
  
     Maxscaling : constant := 5000;
     --  Max decimal scaling required during conversion of floating-point
--- 58,63 ----
*************** package body System.Img_Real is
*** 89,104 ****
        --  Decide whether a blank should be prepended before the call to
        --  Set_Image_Real. We generate a blank for positive values, and
        --  also for positive zeroes. For negative zeroes, we generate a
!       --  space only if Signed_Zeroes is True (the RM only permits the
!       --  output of -0.0 on targets where this is the case). We can of
!       --  course still see a -0.0 on a target where Signed_Zeroes is
!       --  False (since this attribute refers to the proper handling of
!       --  negative zeroes, not to their existence). We do not generate
        --  a blank for positive infinity, since we output an explicit +.
  
        if (not Is_Negative (V) and then V <= Long_Long_Float'Last)
          or else (not Long_Long_Float'Signed_Zeros and then V = -0.0)
        then
           S (1) := ' ';
           P := 1;
        else
--- 87,104 ----
        --  Decide whether a blank should be prepended before the call to
        --  Set_Image_Real. We generate a blank for positive values, and
        --  also for positive zeroes. For negative zeroes, we generate a
!       --  blank only if Signed_Zeros is False (the RM only permits the
!       --  output of -0.0 when Signed_Zeros is True). We do not generate
        --  a blank for positive infinity, since we output an explicit +.
  
        if (not Is_Negative (V) and then V <= Long_Long_Float'Last)
          or else (not Long_Long_Float'Signed_Zeros and then V = -0.0)
        then
+          pragma Annotate (CodePeer, False_Positive, "condition predetermined",
+                           "CodePeer analysis ignores NaN and Inf values");
+          pragma Assert (S'Last > 1);
+          --  The caller is responsible for S to be large enough for all
+          --  Image_Floating_Point operation.
           S (1) := ' ';
           P := 1;
        else
*************** package body System.Img_Real is
*** 146,164 ****
        Exp  : Natural)
     is
        NFrac : constant Natural := Natural'Max (Aft, 1);
!       Sign  : Character;
        X     : Long_Long_Float;
        Scale : Integer;
        Expon : Integer;
  
!       Field_Max : constant := 255;
!       --  This should be the same value as Ada.[Wide_]Text_IO.Field'Last.
!       --  It is not worth dragging in Ada.Text_IO to pick up this value,
!       --  since it really should never be necessary to change it.
! 
!       Digs : String (1 .. 2 * Field_Max + 16);
!       --  Array used to hold digits of converted integer value. This is a
!       --  large enough buffer to accommodate ludicrous values of Fore and Aft.
  
        Ndigs : Natural;
        --  Number of digits stored in Digs (and also subscript of last digit)
--- 146,159 ----
        Exp  : Natural)
     is
        NFrac : constant Natural := Natural'Max (Aft, 1);
!       Minus : Boolean;
        X     : Long_Long_Float;
        Scale : Integer;
        Expon : Integer;
  
!       Digs : String (1 .. Max_Real_Image_Length);
!       --  Array used to hold digits of converted integer value. This is a large
!       --  enough buffer to accommodate ludicrous Fore/Aft/Exp combinations.
  
        Ndigs : Natural;
        --  Number of digits stored in Digs (and also subscript of last digit)
*************** package body System.Img_Real is
*** 289,294 ****
--- 284,291 ----
              --  What we are looking for is a power of ten to divide X by
              --  so that the result lies within the required range.
  
+             pragma Assert (Powten (Maxpow) /= 0.0);
+ 
              loop
                 XP := X / Powten (Maxpow);
                 exit when XP < Powten (S) or else Scale > Maxscaling;
*************** package body System.Img_Real is
*** 375,380 ****
--- 372,378 ----
           --  be significantly more efficient than the Long_Long_Unsigned one.
  
           if X < Powten (Unsdigs) then
+             pragma Assert (X in 0.0 .. Long_Long_Float (Unsigned'Last));
              Ndigs := 0;
              Set_Image_Unsigned
                (Unsigned (Long_Long_Float'Truncation (X)),
*************** package body System.Img_Real is
*** 384,389 ****
--- 382,391 ----
           --  the Long_Long_Unsigned routine after all.
  
           else
+             pragma Assert (X < Powten (Maxdigs));
+             pragma Assert
+               (X in 0.0 .. Long_Long_Float (Long_Long_Unsigned'Last));
+ 
              Ndigs := 0;
              Set_Image_Long_Long_Unsigned
                (Long_Long_Unsigned (Long_Long_Float'Truncation (X)),
*************** package body System.Img_Real is
*** 397,402 ****
--- 399,410 ----
  
        procedure Set (C : Character) is
        begin
+          pragma Assert (P in S'First - 1 .. S'Last - 1);
+          --  No check is done as documented in the header: updating P to point
+          --  to the last character stored, the caller promises that the buffer
+          --  is large enough and no check is made for this. Constraint_Error
+          --  will not necessarily be raised if this requirement is violated,
+          --  since it is perfectly valid to compile this unit with checks off.
           P := P + 1;
           S (P) := C;
        end Set;
*************** package body System.Img_Real is
*** 407,413 ****
  
        procedure Set_Blanks_And_Sign (N : Integer) is
        begin
!          if Sign = '-' then
              for J in 1 .. N - 1 loop
                 Set (' ');
              end loop;
--- 415,421 ----
  
        procedure Set_Blanks_And_Sign (N : Integer) is
        begin
!          if Minus then
              for J in 1 .. N - 1 loop
                 Set (' ');
              end loop;
*************** package body System.Img_Real is
*** 427,432 ****
--- 435,442 ----
  
        procedure Set_Digs (S, E : Natural) is
        begin
+          pragma Assert (S >= Digs'First and E <= Digs'Last);
+          --  S and E should be in the Digs array range
           for J in S .. E loop
              Set (Digs (J));
           end loop;
*************** package body System.Img_Real is
*** 440,448 ****
--- 450,462 ----
           F : Natural;
  
        begin
+          pragma Assert ((Fore + Aft - N + 1) in Natural);
+          --  Fore + Aft - N + 1 should be in the Natural range
           F := Fore + 1 + Aft - N;
  
           if Exp /= 0 then
+             pragma Assert (F + Exp + 1 <= Natural'Last);
+             --  F + Exp + 1 should be in the Natural range
              F := F + Exp + 1;
           end if;
  
*************** package body System.Img_Real is
*** 465,474 ****
     --  Start of processing for Set_Image_Real
  
     begin
!       --  We call the floating-point processor reset routine so that we can
!       --  be sure the floating-point processor is properly set for conversion
!       --  calls. This is notably need on Windows, where calls to the operating
!       --  system randomly reset the processor into 64-bit mode.
  
        System.Float_Control.Reset;
  
--- 479,488 ----
     --  Start of processing for Set_Image_Real
  
     begin
!       --  We call the floating-point processor reset routine so we can be sure
!       --  that the processor is properly set for conversions. This is notably
!       --  needed on Windows, where calls to the operating system randomly reset
!       --  the processor into 64-bit mode.
  
        System.Float_Control.Reset;
  
*************** package body System.Img_Real is
*** 490,501 ****
           --  an infinite value, so we print Inf.
  
           if V > Long_Long_Float'Last then
              Set ('+');
              Set ('I');
              Set ('n');
              Set ('f');
              Set_Special_Fill (4);
- 
           --  In all other cases we print NaN
  
           elsif V < Long_Long_Float'First then
--- 504,518 ----
           --  an infinite value, so we print Inf.
  
           if V > Long_Long_Float'Last then
+             pragma Annotate (CodePeer, False_Positive, "dead code",
+                              "CodePeer analysis ignores NaN and Inf values");
+             pragma Annotate (CodePeer, False_Positive, "test always true",
+                              "CodePeer analysis ignores NaN and Inf values");
              Set ('+');
              Set ('I');
              Set ('n');
              Set ('f');
              Set_Special_Fill (4);
           --  In all other cases we print NaN
  
           elsif V < Long_Long_Float'First then
*************** package body System.Img_Real is
*** 504,510 ****
              Set ('n');
              Set ('f');
              Set_Special_Fill (4);
- 
           else
              Set ('N');
              Set ('a');
--- 521,526 ----
*************** package body System.Img_Real is
*** 519,539 ****
  
        if V > 0.0 then
           X := V;
!          Sign := '+';
  
        --  Negative values
  
        elsif V < 0.0 then
           X := -V;
!          Sign := '-';
  
        --  Zero values
  
        elsif V = 0.0 then
           if Long_Long_Float'Signed_Zeros and then Is_Negative (V) then
!             Sign := '-';
           else
!             Sign := '+';
           end if;
  
           Set_Blanks_And_Sign (Fore - 1);
--- 535,555 ----
  
        if V > 0.0 then
           X := V;
!          Minus := False;
  
        --  Negative values
  
        elsif V < 0.0 then
           X := -V;
!          Minus := True;
  
        --  Zero values
  
        elsif V = 0.0 then
           if Long_Long_Float'Signed_Zeros and then Is_Negative (V) then
!             Minus := True;
           else
!             Minus := False;
           end if;
  
           Set_Blanks_And_Sign (Fore - 1);
*************** package body System.Img_Real is
*** 558,564 ****
           raise Constraint_Error;
        end if;
  
!       --  X and Sign are set here, and X is known to be a valid,
        --  non-zero floating-point number.
  
        --  Case of non-zero value with Exp = 0
--- 574,580 ----
           raise Constraint_Error;
        end if;
  
!       --  X and Minus are set here, and X is known to be a valid,
        --  non-zero floating-point number.
  
        --  Case of non-zero value with Exp = 0
*************** package body System.Img_Real is
*** 597,602 ****
--- 613,619 ----
  
                    for J in 1 .. Scale + NF loop
                       Ndigs := Ndigs + 1;
+                      pragma Assert (Ndigs <= Digs'Last);
                       Digs (Ndigs) := '0';
                    end loop;
  
*************** package body System.Img_Real is
*** 663,668 ****
--- 680,686 ----
  
              for J in 1 .. NFrac - Maxdigs + 1 loop
                 Ndigs := Ndigs + 1;
+                pragma Assert (Ndigs <= Digs'Last);
                 Digs (Ndigs) := '0';
                 Scale := Scale - 1;
              end loop;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgrea.ads gcc-11.1.0/gcc/ada/libgnat/s-imgrea.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imgrea.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgrea.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Img_Real is
*** 44,58 ****
     --  image for fixed-point types (RM 3.5(34)), where Aft is the value of the
     --  Aft attribute for the fixed-point type. This function is used only for
     --  ordinary fixed point (see package System.Img_Dec for handling of decimal
!    --  fixed-point). The caller guarantees that S is long enough to hold the
     --  result and has a lower bound of 1.
  
     procedure Image_Floating_Point
       (V    : Long_Long_Float;
        S    : in out String;
        P    : out Natural;
        Digs : Natural);
!    --  Computes fixed_type'Image (V) and returns the result in S (1 .. P)
     --  updating P on return. The result is computed according to the rules for
     --  image for floating-point types (RM 3.5(33)), where Digs is the value of
     --  the Digits attribute for the floating-point type. The caller guarantees
--- 44,61 ----
     --  image for fixed-point types (RM 3.5(34)), where Aft is the value of the
     --  Aft attribute for the fixed-point type. This function is used only for
     --  ordinary fixed point (see package System.Img_Dec for handling of decimal
!    --  fixed point). The caller guarantees that S is long enough to hold the
     --  result and has a lower bound of 1.
+    --
+    --  Remark: This procedure should NOT be called with V = -0.0 or V = +/-Inf,
+    --          The result is irrelevant.
  
     procedure Image_Floating_Point
       (V    : Long_Long_Float;
        S    : in out String;
        P    : out Natural;
        Digs : Natural);
!    --  Computes float_type'Image (V) and returns the result in S (1 .. P)
     --  updating P on return. The result is computed according to the rules for
     --  image for floating-point types (RM 3.5(33)), where Digs is the value of
     --  the Digits attribute for the floating-point type. The caller guarantees
*************** package System.Img_Real is
*** 73,76 ****
--- 76,84 ----
     --  can be set to any valid values for the case of use from Text_IO. Note
     --  that no space is stored at the start for non-negative values.
  
+    Max_Real_Image_Length : constant := 5200;
+    --   If Exp is set to zero and Aft is set to Text_IO.Field'Last (i.e., 255)
+    --   then Long_Long_Float'Last generates an image whose length is
+    --   slightly less than 5200.
+ 
  end System.Img_Real;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imguns.adb gcc-11.1.0/gcc/ada/libgnat/s-imguns.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imguns.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imguns.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,73 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Unsigned_Types; use System.Unsigned_Types;
! 
! package body System.Img_Uns is
! 
!    --------------------
!    -- Image_Unsigned --
!    --------------------
! 
!    procedure Image_Unsigned
!      (V : System.Unsigned_Types.Unsigned;
!       S : in out String;
!       P : out Natural)
!    is
!       pragma Assert (S'First = 1);
!    begin
!       S (1) := ' ';
!       P := 1;
!       Set_Image_Unsigned (V, S, P);
!    end Image_Unsigned;
! 
!    ------------------------
!    -- Set_Image_Unsigned --
!    ------------------------
! 
!    procedure Set_Image_Unsigned
!      (V : Unsigned;
!       S : in out String;
!       P : in out Natural)
!    is
!    begin
!       if V >= 10 then
!          Set_Image_Unsigned (V / 10, S, P);
!          P := P + 1;
!          S (P) := Character'Val (48 + (V rem 10));
! 
!       else
!          P := P + 1;
!          S (P) := Character'Val (48 + V);
!       end if;
!    end Set_Image_Unsigned;
  
! end System.Img_Uns;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imguns.ads gcc-11.1.0/gcc/ada/libgnat/s-imguns.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imguns.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imguns.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,60 ****
  ------------------------------------------------------------------------------
  
  --  This package contains the routines for supporting the Image attribute for
! --  modular integer types up to size Unsigned'Size, and also for conversion
! --  operations required in Text_IO.Modular_IO for such types.
  
  with System.Unsigned_Types;
  
  package System.Img_Uns is
     pragma Pure;
  
     procedure Image_Unsigned
!      (V : System.Unsigned_Types.Unsigned;
        S : in out String;
!       P : out Natural);
!    pragma Inline (Image_Unsigned);
!    --  Computes Unsigned'Image (V) and stores the result in S (1 .. P) setting
!    --  the resulting value of P. The caller guarantees that S is long enough to
!    --  hold the result, and that S'First is 1.
  
     procedure Set_Image_Unsigned
!      (V : System.Unsigned_Types.Unsigned;
        S : in out String;
!       P : in out Natural);
!    --  Stores the image of V in S starting at S (P + 1), P is updated to point
!    --  to the last character stored. The value stored is identical to the value
!    --  of Unsigned'Image (V) except that no leading space is stored. The caller
!    --  guarantees that S is long enough to hold the result. S need not have a
!    --  lower bound of 1.
  
  end System.Img_Uns;
--- 30,58 ----
  ------------------------------------------------------------------------------
  
  --  This package contains the routines for supporting the Image attribute for
! --  modular integer types up to Unsigned, and also for conversion operations
! --  required in Text_IO.Modular_IO for such types.
  
+ with System.Image_U;
  with System.Unsigned_Types;
  
  package System.Img_Uns is
     pragma Pure;
  
+    subtype Unsigned is Unsigned_Types.Unsigned;
+ 
+    package Impl is new Image_U (Unsigned);
+ 
     procedure Image_Unsigned
!      (V : Unsigned;
        S : in out String;
!       P : out Natural)
!      renames Impl.Image_Unsigned;
  
     procedure Set_Image_Unsigned
!      (V : Unsigned;
        S : in out String;
!       P : in out Natural)
!      renames Impl.Set_Image_Unsigned;
  
  end System.Img_Uns;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imguti.adb gcc-11.1.0/gcc/ada/libgnat/s-imguti.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imguti.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imguti.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,403 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                      S Y S T E M . I M G _ U T I L                       --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Img_Uns; use System.Img_Uns;
+ 
+ package body System.Img_Util is
+ 
+    ------------------------
+    -- Set_Decimal_Digits --
+    ------------------------
+ 
+    procedure Set_Decimal_Digits
+      (Digs  : in out String;
+       NDigs : Natural;
+       S     : out String;
+       P     : in out Natural;
+       Scale : Integer;
+       Fore  : Natural;
+       Aft   : Natural;
+       Exp   : Natural)
+    is
+       pragma Assert (NDigs >= 1);
+       pragma Assert (Digs'First = 1);
+       pragma Assert (Digs'First < Digs'Last);
+ 
+       Minus : constant Boolean := (Digs (Digs'First) = '-');
+       --  Set True if input is negative
+ 
+       Zero : Boolean := (Digs (Digs'First + 1) = '0');
+       --  Set True if input is exactly zero (only case when a leading zero
+       --  is permitted in the input string given to this procedure). This
+       --  flag can get set later if rounding causes the value to become zero.
+ 
+       FD : Natural := 2;
+       --  First digit position of digits remaining to be processed
+ 
+       LD : Natural := NDigs;
+       --  Last digit position of digits remaining to be processed
+ 
+       ND : Natural := NDigs - 1;
+       --  Number of digits remaining to be processed (LD - FD + 1)
+ 
+       Digits_Before_Point : Integer := ND - Scale;
+       --  Number of digits before decimal point in the input value. This
+       --  value can be negative if the input value is less than 0.1, so
+       --  it is an indication of the current exponent. Digits_Before_Point
+       --  is adjusted if the rounding step generates an extra digit.
+ 
+       Digits_After_Point : constant Natural := Integer'Max (1, Aft);
+       --  Digit positions after decimal point in result string
+ 
+       Expon : Integer;
+       --  Integer value of exponent
+ 
+       procedure Round (N : Integer);
+       --  Round the number in Digs. N is the position of the last digit to be
+       --  retained in the rounded position (rounding is based on Digs (N + 1)
+       --  FD, LD, ND are reset as necessary if required. Note that if the
+       --  result value rounds up (e.g. 9.99 => 10.0), an extra digit can be
+       --  placed in the sign position as a result of the rounding, this is
+       --  the case in which FD is adjusted. The call to Round has no effect
+       --  if N is outside the range FD .. LD.
+ 
+       procedure Set (C : Character);
+       pragma Inline (Set);
+       --  Sets character C in output buffer
+ 
+       procedure Set_Blanks_And_Sign (N : Integer);
+       --  Sets leading blanks and minus sign if needed. N is the number of
+       --  positions to be filled (a minus sign is output even if N is zero
+       --  or negative, but for a positive value, if N is non-positive, then
+       --  the call has no effect).
+ 
+       procedure Set_Digits (S, E : Natural);
+       pragma Inline (Set_Digits);
+       --  Set digits S through E from Digs, no effect if S > E
+ 
+       procedure Set_Zeroes (N : Integer);
+       pragma Inline (Set_Zeroes);
+       --  Set N zeroes, no effect if N is negative
+ 
+       -----------
+       -- Round --
+       -----------
+ 
+       procedure Round (N : Integer) is
+          D : Character;
+ 
+          pragma Assert (NDigs >= 1);
+          pragma Assert (Digs'First = 1);
+          pragma Assert (Digs'First < Digs'Last);
+ 
+       begin
+          --  Nothing to do if rounding past the last digit we have
+ 
+          if N >= LD then
+             return;
+ 
+          --  Cases of rounding before the initial digit
+ 
+          elsif N < FD then
+ 
+             --  The result is zero, unless we are rounding just before
+             --  the first digit, and the first digit is five or more.
+ 
+             if N = 1 and then Digs (Digs'First + 1) >= '5' then
+                Digs (Digs'First) := '1';
+             else
+                Digs (Digs'First) := '0';
+                Zero := True;
+             end if;
+ 
+             Digits_Before_Point := Digits_Before_Point + 1;
+             FD := 1;
+             LD := 1;
+             ND := 1;
+ 
+          --  Normal case of rounding an existing digit
+ 
+          else
+             LD := N;
+             pragma Assert (LD >= 1);
+             --  In this case, we have N < LD and N >= FD. FD is a Natural,
+             --  So we can conclude, LD >= 1
+             ND := LD - 1;
+             pragma Assert (N + 1 <= Digs'Last);
+ 
+             if Digs (N + 1) >= '5' then
+                for J in reverse Digs'First + 1 .. Digs'First + N - 1 loop
+                   pragma Assert (Digs (J) in '0' .. '9' | ' ' | '-');
+                   --  Because it is a decimal image, we can assume that
+                   --  it can only contain these characters.
+                   D := Character'Succ (Digs (J));
+ 
+                   if D <= '9' then
+                      Digs (J) := D;
+                      return;
+                   else
+                      Digs (J) := '0';
+                   end if;
+                end loop;
+ 
+                --  Here the rounding overflows into the sign position. That's
+                --  OK, because we already captured the value of the sign and
+                --  we are in any case destroying the value in the Digs buffer
+ 
+                Digs (Digs'First) := '1';
+                FD := 1;
+                ND := ND + 1;
+                Digits_Before_Point := Digits_Before_Point + 1;
+             end if;
+          end if;
+       end Round;
+ 
+       ---------
+       -- Set --
+       ---------
+ 
+       procedure Set (C : Character) is
+       begin
+          pragma Assert (P >= (S'First - 1) and P < S'Last and
+                         P < Natural'Last);
+          --  No check is done as documented in the header : updating P to
+          --  point to the last character stored, the caller promises that the
+          --  buffer is large enough and no check is made for this.
+          --  Constraint_Error will not necessarily be raised if this
+          --  requirement is violated, since it is perfectly valid to compile
+          --  this unit with checks off.
+          P := P + 1;
+          S (P) := C;
+       end Set;
+ 
+       -------------------------
+       -- Set_Blanks_And_Sign --
+       -------------------------
+ 
+       procedure Set_Blanks_And_Sign (N : Integer) is
+       begin
+          if Minus then
+             for J in 1 .. N - 1 loop
+                Set (' ');
+             end loop;
+ 
+             Set ('-');
+ 
+          else
+             for J in 1 .. N loop
+                Set (' ');
+             end loop;
+          end if;
+       end Set_Blanks_And_Sign;
+ 
+       ----------------
+       -- Set_Digits --
+       ----------------
+ 
+       procedure Set_Digits (S, E : Natural) is
+       begin
+          pragma Assert (S >= Digs'First and E <= Digs'Last);
+          --  S and E should be in the Digs array range
+          --  TBC: Analysis should be completed
+          for J in S .. E loop
+             Set (Digs (J));
+          end loop;
+       end Set_Digits;
+ 
+       ----------------
+       -- Set_Zeroes --
+       ----------------
+ 
+       procedure Set_Zeroes (N : Integer) is
+       begin
+          for J in 1 .. N loop
+             Set ('0');
+          end loop;
+       end Set_Zeroes;
+ 
+    --  Start of processing for Set_Decimal_Digits
+ 
+    begin
+       --  Case of exponent given
+ 
+       if Exp > 0 then
+          Set_Blanks_And_Sign (Fore - 1);
+          Round (Digits_After_Point + 2);
+ 
+          Set (Digs (FD));
+          FD := FD + 1;
+          pragma Assert (ND >= 1);
+          ND := ND - 1;
+          Set ('.');
+ 
+          if ND >= Digits_After_Point then
+             Set_Digits (FD, FD + Digits_After_Point - 1);
+          else
+             Set_Digits (FD, LD);
+             Set_Zeroes (Digits_After_Point - ND);
+          end if;
+ 
+          --  Calculate exponent. The number of digits before the decimal point
+          --  in the input is Digits_Before_Point, and the number of digits
+          --  before the decimal point in the output is 1, so we can get the
+          --  exponent as the difference between these two values. The one
+          --  exception is for the value zero, which by convention has an
+          --  exponent of +0.
+ 
+          Expon := (if Zero then 0 else Digits_Before_Point - 1);
+ 
+          Set ('E');
+          ND := 0;
+ 
+          if Expon >= 0 then
+             Set ('+');
+             Set_Image_Unsigned (Unsigned (Expon), Digs, ND);
+          else
+             Set ('-');
+             Set_Image_Unsigned (Unsigned (-Expon), Digs, ND);
+          end if;
+ 
+          Set_Zeroes (Exp - ND - 1);
+          Set_Digits (1, ND);
+          return;
+ 
+       --  Case of no exponent given. To make these cases clear, we use
+       --  examples. For all the examples, we assume Fore = 2, Aft = 3.
+       --  A P in the example input string is an implied zero position,
+       --  not included in the input string.
+ 
+       else
+          --  Round at correct position
+          --    Input: 4PP      => unchanged
+          --    Input: 400.03   => unchanged
+          --    Input  3.4567   => 3.457
+          --    Input: 9.9999   => 10.000
+          --    Input: 0.PPP5   => 0.001
+          --    Input: 0.PPP4   => 0
+          --    Input: 0.00003  => 0
+ 
+          Round (LD - (Scale - Digits_After_Point));
+ 
+          --  No digits before point in input
+          --    Input: .123   Output: 0.123
+          --    Input: .PP3   Output: 0.003
+ 
+          if Digits_Before_Point <= 0 then
+             Set_Blanks_And_Sign (Fore - 1);
+             Set ('0');
+             Set ('.');
+ 
+             declare
+                DA : Natural := Digits_After_Point;
+                --  Digits remaining to output after point
+ 
+                LZ : constant Integer := Integer'Min (DA, -Digits_Before_Point);
+                --  Number of leading zeroes after point. Note: there used to be
+                --  a Max of this result with zero, but that's redundant, since
+                --  we know DA is positive, and because of the test above, we
+                --  know that -Digits_Before_Point >= 0.
+ 
+             begin
+                Set_Zeroes (LZ);
+                DA := DA - LZ;
+ 
+                if DA < ND then
+ 
+                   --  Note: it is definitely possible for the above condition
+                   --  to be True, for example:
+ 
+                   --    V => 1234, Scale => 5, Fore => 0, After => 1, Exp => 0
+ 
+                   --  but in this case DA = 0, ND = 1, FD = 1, FD + DA-1 = 0
+                   --  so the arguments in the call are (1, 0) meaning that no
+                   --  digits are output.
+ 
+                   --  No obvious example exists where the following call to
+                   --  Set_Digits actually outputs some digits, but we lack a
+                   --  proof that no such example exists.
+ 
+                   --  So it is safer to retain this call, even though as a
+                   --  result it is hard (or perhaps impossible) to create a
+                   --  coverage test for the inlined code of the call.
+ 
+                   Set_Digits (FD, FD + DA - 1);
+ 
+                else
+                   Set_Digits (FD, LD);
+                   Set_Zeroes (DA - ND);
+                end if;
+             end;
+ 
+          --  At least one digit before point in input
+ 
+          else
+             --  Less digits in input than are needed before point
+             --    Input: 1PP  Output: 100.000
+ 
+             if ND < Digits_Before_Point then
+ 
+                --  Special case, if the input is the single digit 0, then we
+                --  do not want 000.000, but instead 0.000.
+ 
+                if ND = 1 and then Digs (FD) = '0' then
+                   Set_Blanks_And_Sign (Fore - 1);
+                   Set ('0');
+ 
+                --  Normal case where we need to output scaling zeroes
+ 
+                else
+                   Set_Blanks_And_Sign (Fore - Digits_Before_Point);
+                   Set_Digits (FD, LD);
+                   Set_Zeroes (Digits_Before_Point - ND);
+                end if;
+ 
+                --  Set period and zeroes after the period
+ 
+                Set ('.');
+                Set_Zeroes (Digits_After_Point);
+ 
+             --  Input has full amount of digits before decimal point
+ 
+             else
+                Set_Blanks_And_Sign (Fore - Digits_Before_Point);
+                pragma Assert (FD + Digits_Before_Point - 1 >= 0);
+                --  In this branch, we have Digits_Before_Point > 0. It is the
+                --  else of test (Digits_Before_Point <= 0)
+                Set_Digits (FD, FD + Digits_Before_Point - 1);
+                Set ('.');
+                Set_Digits (FD + Digits_Before_Point, LD);
+                Set_Zeroes (Digits_After_Point - (ND - Digits_Before_Point));
+             end if;
+          end if;
+       end if;
+    end Set_Decimal_Digits;
+ 
+ end System.Img_Util;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imguti.ads gcc-11.1.0/gcc/ada/libgnat/s-imguti.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imguti.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-imguti.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,61 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                      S Y S T E M . I M G _ U T I L                       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides some common utilities used by the s-imgxxx files
+ 
+ package System.Img_Util is
+    pragma Pure;
+ 
+    procedure Set_Decimal_Digits
+      (Digs  : in out String;
+       NDigs : Natural;
+       S     : out String;
+       P     : in out Natural;
+       Scale : Integer;
+       Fore  : Natural;
+       Aft   : Natural;
+       Exp   : Natural);
+    --  Sets the image of Digs (1 .. NDigs), which is a string of decimal digits
+    --  preceded by either a minus sign or a space, i.e. the integer image of
+    --  the value in units of delta if this is for a decimal fixed point type
+    --  with the given Scale, or the integer image of the value converted to an
+    --  implicit decimal fixed point type with the given Scale if this is for an
+    --  ordinary fixed point type, starting at S (P + 1), updating P to point to
+    --  the last character stored. The caller promises that the buffer is large
+    --  enough and therefore no check is made for it. Constraint_Error will not
+    --  necessarily be raised if the requirement is violated since it is valid
+    --  to compile this unit with checks off. The Fore, Aft and Exp values can
+    --  be set to any valid values for the case of use by Text_IO.Decimal_IO or
+    --  Text_IO.Fixed_IO. Note that there is no leading space stored. The call
+    --  may destroy the value in Digs, which is why Digs is in-out (this happens
+    --  if rounding is required).
+ 
+ end System.Img_Util;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgwch.adb gcc-11.1.0/gcc/ada/libgnat/s-imgwch.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imgwch.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgwch.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgwch.ads gcc-11.1.0/gcc/ada/libgnat/s-imgwch.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imgwch.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgwch.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgwiu.adb gcc-11.1.0/gcc/ada/libgnat/s-imgwiu.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-imgwiu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgwiu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,138 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Unsigned_Types; use System.Unsigned_Types;
! 
! package body System.Img_WIU is
! 
!    -----------------------------
!    -- Set_Image_Width_Integer --
!    -----------------------------
! 
!    procedure Set_Image_Width_Integer
!      (V : Integer;
!       W : Integer;
!       S : out String;
!       P : in out Natural)
!    is
!       Start : Natural;
! 
!    begin
!       --  Positive case can just use the unsigned circuit directly
! 
!       if V >= 0 then
!          Set_Image_Width_Unsigned (Unsigned (V), W, S, P);
! 
!       --  Negative case has to set a minus sign. Note also that we have to be
!       --  careful not to generate overflow with the largest negative number.
! 
!       else
!          P := P + 1;
!          S (P) := ' ';
!          Start := P;
! 
!          declare
!             pragma Suppress (Overflow_Check);
!             pragma Suppress (Range_Check);
!          begin
!             Set_Image_Width_Unsigned (Unsigned (-V), W - 1, S, P);
!          end;
! 
!          --  Set minus sign in last leading blank location. Because of the
!          --  code above, there must be at least one such location.
! 
!          while S (Start + 1) = ' ' loop
!             Start := Start + 1;
!          end loop;
! 
!          S (Start) := '-';
!       end if;
! 
!    end Set_Image_Width_Integer;
! 
!    ------------------------------
!    -- Set_Image_Width_Unsigned --
!    ------------------------------
! 
!    procedure Set_Image_Width_Unsigned
!      (V : Unsigned;
!       W : Integer;
!       S : out String;
!       P : in out Natural)
!    is
!       Start : constant Natural := P;
!       F, T  : Natural;
! 
!       procedure Set_Digits (T : Unsigned);
!       --  Set digits of absolute value of T
! 
!       ----------------
!       -- Set_Digits --
!       ----------------
! 
!       procedure Set_Digits (T : Unsigned) is
!       begin
!          if T >= 10 then
!             Set_Digits (T / 10);
!             P := P + 1;
!             S (P) := Character'Val (T mod 10 + Character'Pos ('0'));
!          else
!             P := P + 1;
!             S (P) := Character'Val (T + Character'Pos ('0'));
!          end if;
!       end Set_Digits;
! 
!    --  Start of processing for Set_Image_Width_Unsigned
! 
!    begin
!       Set_Digits (V);
! 
!       --  Add leading spaces if required by width parameter
! 
!       if P - Start < W then
!          F := P;
!          P := P + (W - (P - Start));
!          T := P;
! 
!          while F > Start loop
!             S (T) := S (F);
!             T := T - 1;
!             F := F - 1;
!          end loop;
! 
!          for J in Start + 1 .. T loop
!             S (J) := ' ';
!          end loop;
!       end if;
! 
!    end Set_Image_Width_Unsigned;
  
! end System.Img_WIU;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-imgwiu.ads gcc-11.1.0/gcc/ada/libgnat/s-imgwiu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-imgwiu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-imgwiu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,69 ****
  ------------------------------------------------------------------------------
  
  --  Contains the routine for computing the image  of signed and unsigned
! --  integers whose size <= Integer'Size for use by Text_IO.Integer_IO
! --  and Text_IO.Modular_IO.
  
  with System.Unsigned_Types;
  
  package System.Img_WIU is
     pragma Pure;
  
     procedure Set_Image_Width_Integer
       (V : Integer;
        W : Integer;
        S : out String;
!       P : in out Natural);
!    --  Sets the signed image of V in decimal format, starting at S (P + 1),
!    --  updating P to point to the last character stored. The image includes
!    --  a leading minus sign if necessary, but no leading spaces unless W is
!    --  positive, in which case leading spaces are output if necessary to ensure
!    --  that the output string is no less than W characters long. The caller
!    --  promises that the buffer is large enough and no check is made for this.
!    --  Constraint_Error will not necessarily be raised if this is violated,
!    --  since it is perfectly valid to compile this unit with checks off.
  
     procedure Set_Image_Width_Unsigned
!      (V : System.Unsigned_Types.Unsigned;
        W : Integer;
        S : out String;
!       P : in out Natural);
!    --  Sets the unsigned image of V in decimal format, starting at S (P + 1),
!    --  updating P to point to the last character stored. The image includes no
!    --  leading spaces unless W is positive, in which case leading spaces are
!    --  output if necessary to ensure that the output string is no less than
!    --  W characters long. The caller promises that the buffer is large enough
!    --  and no check is made for this. Constraint_Error will not necessarily be
!    --  raised if this is violated, since it is perfectly valid to compile this
!    --  unit with checks off.
  
  end System.Img_WIU;
--- 30,60 ----
  ------------------------------------------------------------------------------
  
  --  Contains the routine for computing the image  of signed and unsigned
! --  integers up to Integer for use by Text_IO.Integer_IO and
! --  Text_IO.Modular_IO.
  
+ with System.Image_W;
  with System.Unsigned_Types;
  
  package System.Img_WIU is
     pragma Pure;
  
+    subtype Unsigned is Unsigned_Types.Unsigned;
+ 
+    package Impl is new Image_W (Integer, Unsigned);
+ 
     procedure Set_Image_Width_Integer
       (V : Integer;
        W : Integer;
        S : out String;
!       P : in out Natural)
!      renames Impl.Set_Image_Width_Integer;
  
     procedure Set_Image_Width_Unsigned
!      (V : Unsigned;
        W : Integer;
        S : out String;
!       P : in out Natural)
!      renames Impl.Set_Image_Width_Unsigned;
  
  end System.Img_WIU;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-io.adb gcc-11.1.0/gcc/ada/libgnat/s-io.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-io.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-io.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.IO is
*** 65,80 ****
     end Put;
  
     procedure Put (C : Character) is
!       procedure Put_Char (C : Character);
        pragma Import (C, Put_Char, "put_char");
  
!       procedure Put_Char_Stderr (C : Character);
        pragma Import (C, Put_Char_Stderr, "put_char_stderr");
  
     begin
        case Current_Out is
!          when Stdout => Put_Char (C);
!          when Stderr => Put_Char_Stderr (C);
        end case;
     end Put;
  
--- 65,80 ----
     end Put;
  
     procedure Put (C : Character) is
!       procedure Put_Char (C : Integer);
        pragma Import (C, Put_Char, "put_char");
  
!       procedure Put_Char_Stderr (C : Integer);
        pragma Import (C, Put_Char_Stderr, "put_char_stderr");
  
     begin
        case Current_Out is
!          when Stdout => Put_Char (Character'Pos (C));
!          when Stderr => Put_Char_Stderr (Character'Pos (C));
        end case;
     end Put;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-io.ads gcc-11.1.0/gcc/ada/libgnat/s-io.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-io.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-io.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-llflex.ads gcc-11.1.0/gcc/ada/libgnat/s-llflex.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-llflex.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-llflex.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-maccod.ads gcc-11.1.0/gcc/ada/libgnat/s-maccod.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-maccod.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-maccod.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-mantis.adb gcc-11.1.0/gcc/ada/libgnat/s-mantis.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-mantis.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-mantis.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-mantis.ads gcc-11.1.0/gcc/ada/libgnat/s-mantis.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-mantis.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-mantis.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-mastop.adb gcc-11.1.0/gcc/ada/libgnat/s-mastop.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-mastop.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-mastop.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                             (Dummy version)                              --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                             (Dummy version)                              --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-mastop.ads gcc-11.1.0/gcc/ada/libgnat/s-mastop.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-mastop.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-mastop.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,40 ****
  
  pragma Compiler_Unit_Warning;
  
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we get
- --  elaboration circularities with System.Exception_Tables.
- 
  with System.Storage_Elements;
  
  package System.Machine_State_Operations is
--- 31,36 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-memcop.ads gcc-11.1.0/gcc/ada/libgnat/s-memcop.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-memcop.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-memcop.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-memory.adb gcc-11.1.0/gcc/ada/libgnat/s-memory.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-memory.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-memory.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-memory.ads gcc-11.1.0/gcc/ada/libgnat/s-memory.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-memory.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-memory.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-mmap.adb gcc-11.1.0/gcc/ada/libgnat/s-mmap.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-mmap.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-mmap.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2019, AdaCore                     --
  --                                                                          --
  -- This library is free software;  you can redistribute it and/or modify it --
  -- under terms of the  GNU General Public License  as published by the Free --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2020, AdaCore                     --
  --                                                                          --
  -- This library is free software;  you can redistribute it and/or modify it --
  -- under terms of the  GNU General Public License  as published by the Free --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-mmap.ads gcc-11.1.0/gcc/ada/libgnat/s-mmap.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-mmap.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-mmap.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2019, AdaCore                     --
  --                                                                          --
  -- This library is free software;  you can redistribute it and/or modify it --
  -- under terms of the  GNU General Public License  as published by the Free --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2020, AdaCore                     --
  --                                                                          --
  -- This library is free software;  you can redistribute it and/or modify it --
  -- under terms of the  GNU General Public License  as published by the Free --
*************** package System.Mmap is
*** 223,235 ****
     --  (File); such accesses may cause Storage_Error to be raised.
  
     function Data (Region : Mapped_Region) return Str_Access;
-    pragma Inline (Data);
     --  The data mapped in Region as requested. The result is an unconstrained
     --  string, so you cannot use the usual 'First and 'Last attributes.
     --  Instead, these are respectively 1 and Size.
  
     function Data (File : Mapped_File) return Str_Access;
-    pragma Inline (Data);
     --  Likewise for the region contained in File
  
     function Is_Mutable (Region : Mapped_Region) return Boolean;
--- 223,233 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-mmauni__long.ads gcc-11.1.0/gcc/ada/libgnat/s-mmauni__long.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-mmauni__long.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-mmauni__long.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2019, AdaCore                     --
  --                                                                          --
  -- This library is free software;  you can redistribute it and/or modify it --
  -- under terms of the  GNU General Public License  as published by the Free --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2020, AdaCore                     --
  --                                                                          --
  -- This library is free software;  you can redistribute it and/or modify it --
  -- under terms of the  GNU General Public License  as published by the Free --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-mmosin__mingw.adb gcc-11.1.0/gcc/ada/libgnat/s-mmosin__mingw.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-mmosin__mingw.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-mmosin__mingw.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2019, AdaCore                     --
  --                                                                          --
  -- This library is free software;  you can redistribute it and/or modify it --
  -- under terms of the  GNU General Public License  as published by the Free --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2020, AdaCore                     --
  --                                                                          --
  -- This library is free software;  you can redistribute it and/or modify it --
  -- under terms of the  GNU General Public License  as published by the Free --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-mmosin__mingw.ads gcc-11.1.0/gcc/ada/libgnat/s-mmosin__mingw.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-mmosin__mingw.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-mmosin__mingw.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2019, AdaCore                     --
  --                                                                          --
  -- This library is free software;  you can redistribute it and/or modify it --
  -- under terms of the  GNU General Public License  as published by the Free --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2020, AdaCore                     --
  --                                                                          --
  -- This library is free software;  you can redistribute it and/or modify it --
  -- under terms of the  GNU General Public License  as published by the Free --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-mmosin__unix.adb gcc-11.1.0/gcc/ada/libgnat/s-mmosin__unix.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-mmosin__unix.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-mmosin__unix.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2019, AdaCore                     --
  --                                                                          --
  -- This library is free software;  you can redistribute it and/or modify it --
  -- under terms of the  GNU General Public License  as published by the Free --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2020, AdaCore                     --
  --                                                                          --
  -- This library is free software;  you can redistribute it and/or modify it --
  -- under terms of the  GNU General Public License  as published by the Free --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-mmosin__unix.ads gcc-11.1.0/gcc/ada/libgnat/s-mmosin__unix.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-mmosin__unix.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-mmosin__unix.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2019, AdaCore                     --
  --                                                                          --
  -- This library is free software;  you can redistribute it and/or modify it --
  -- under terms of the  GNU General Public License  as published by the Free --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2020, AdaCore                     --
  --                                                                          --
  -- This library is free software;  you can redistribute it and/or modify it --
  -- under terms of the  GNU General Public License  as published by the Free --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-multip.adb gcc-11.1.0/gcc/ada/libgnat/s-multip.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-multip.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-multip.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 2010-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 2010-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-objrea.adb gcc-11.1.0/gcc/ada/libgnat/s-objrea.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-objrea.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-objrea.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2009-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2009-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Object_Reader is
*** 645,650 ****
--- 645,653 ----
              when EM_X86_64 =>
                 Res.Arch := x86_64;
  
+             when EM_ARM =>
+                Res.Arch := ARM;
+ 
              when others =>
                 raise Format_Error with "unrecognized architecture";
           end case;
*************** package body System.Object_Reader is
*** 2030,2035 ****
--- 2033,2039 ----
              | MIPS
              | PPC
              | SPARC
+             | ARM
           =>
              Address_32 := Read (S);
              return uint64 (Address_32);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-objrea.ads gcc-11.1.0/gcc/ada/libgnat/s-objrea.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-objrea.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-objrea.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Object_Reader is
*** 117,125 ****
        PPC,
        --  32-bit PowerPC
  
!       PPC64);
        --  64-bit PowerPC
  
     ------------------
     -- Target types --
     ------------------
--- 117,128 ----
        PPC,
        --  32-bit PowerPC
  
!       PPC64,
        --  64-bit PowerPC
  
+       ARM);
+       --  32-bit ARM
+ 
     ------------------
     -- Target types --
     ------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-optide.adb gcc-11.1.0/gcc/ada/libgnat/s-optide.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-optide.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-optide.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2012-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2012-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-os_lib.adb gcc-11.1.0/gcc/ada/libgnat/s-os_lib.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-os_lib.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-os_lib.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.OS_Lib is
*** 63,68 ****
--- 63,73 ----
     --  Mode = 1 - copy time stamps and read/write/execute attributes
     --  Mode = 2 - copy read/write/execute attributes
  
+    function Is_Dirsep (C : Character) return Boolean;
+    pragma Inline (Is_Dirsep);
+    --  Returns True if C is a directory separator. On Windows we
+    --  accept both \ and / as a directory separator.
+ 
     On_Windows : constant Boolean := Directory_Separator = '\';
     --  An indication that we are on Windows. Used in Normalize_Pathname, to
     --  deal with drive letters in the beginning of absolute paths.
*************** package body System.OS_Lib is
*** 336,357 ****
        ----------------
  
        function Build_Path (Dir : String; File : String) return String is
-          function Is_Dirsep (C : Character) return Boolean;
-          pragma Inline (Is_Dirsep);
-          --  Returns True if C is a directory separator. On Windows we
-          --  handle both styles of directory separator.
- 
-          ---------------
-          -- Is_Dirsep --
-          ---------------
- 
-          function Is_Dirsep (C : Character) return Boolean is
-          begin
-             return C = Directory_Separator or else C = '/';
-          end Is_Dirsep;
- 
-          --  Local variables
- 
           Base_File_Ptr : Integer;
           --  The base file name is File (Base_File_Ptr + 1 .. File'Last)
  
--- 341,346 ----
*************** package body System.OS_Lib is
*** 574,587 ****
                 --  touch destination file at all.
  
                 From := Open_Read (Name, Binary);
!                if From /= Invalid_FD then
                    To := Open_Read_Write (Pathname, Binary);
                 end if;
  
-                Lseek (To, 0, Seek_End);
- 
-                Copy (From, To);
- 
              --  Appending to directory, not allowed
  
              elsif Is_Directory (Pathname) then
--- 563,577 ----
                 --  touch destination file at all.
  
                 From := Open_Read (Name, Binary);
! 
!                if From = Invalid_FD then
!                   Success := False;
!                else
                    To := Open_Read_Write (Pathname, Binary);
+                   Lseek (To, 0, Seek_End);
+                   Copy (From, To);
                 end if;
  
              --  Appending to directory, not allowed
  
              elsif Is_Directory (Pathname) then
*************** package body System.OS_Lib is
*** 1375,1380 ****
--- 1365,1385 ----
        S  : Integer;
  
     begin
+       --  Special case Invalid_Time which is handled differently between
+       --  Windows and Linux: Linux will set to 1 second before 1970-01-01
+       --  while Windows will set the time to 1970-01-01 with Second set to -1,
+       --  which is not a valid value.
+ 
+       if Date = Invalid_Time then
+          Year   := 1969;
+          Month  := 12;
+          Day    := 31;
+          Hour   := 23;
+          Minute := 59;
+          Second := 59;
+          return;
+       end if;
+ 
        --  Use the global lock because To_GM_Time is not thread safe
  
        Locked_Processing : begin
*************** package body System.OS_Lib is
*** 1397,1403 ****
  
        Year   := Y + 1900;
        Month  := Mo + 1;
!       Day    := D;
        Hour   := H;
        Minute := Mn;
        Second := S;
--- 1402,1416 ----
  
        Year   := Y + 1900;
        Month  := Mo + 1;
! 
!       --  May happen if To_GM_Time fails
! 
!       if D = 0 then
!          Day := 1;
!       else
!          Day := D;
!       end if;
! 
        Hour   := H;
        Minute := Mn;
        Second := S;
*************** package body System.OS_Lib is
*** 1471,1476 ****
--- 1484,1498 ----
        return Is_Absolute_Path (Name'Address, Name'Length) /= 0;
     end Is_Absolute_Path;
  
+    ---------------
+    -- Is_Dirsep --
+    ---------------
+ 
+    function Is_Dirsep (C : Character) return Boolean is
+    begin
+       return C = Directory_Separator or else C = '/';
+    end Is_Dirsep;
+ 
     ------------------
     -- Is_Directory --
     ------------------
*************** package body System.OS_Lib is
*** 1999,2004 ****
--- 2021,2028 ----
  
                    --  If the string ends with \, double it
  
+                   pragma Annotate (CodePeer, Modified, Res (J - 1));
+ 
                    if Res (J - 1) = '\' then
                       Res (J) := '\';
                       J := J + 1;
*************** package body System.OS_Lib is
*** 2082,2098 ****
  
        Fold_To_Lower_Case : constant Boolean :=
                               not Case_Sensitive
!                                and then Get_File_Names_Case_Sensitive = 0;
  
        function Final_Value (S : String) return String;
        --  Make final adjustment to the returned string. This function strips
        --  trailing directory separators, and folds returned string to lower
        --  case if required.
  
!       function Get_Directory  (Dir : String) return String;
!       --  If Dir is not empty, return it, adding a directory separator
!       --  if not already present, otherwise return current working directory
!       --  with terminating directory separator.
  
        -----------------
        -- Final_Value --
--- 2106,2166 ----
  
        Fold_To_Lower_Case : constant Boolean :=
                               not Case_Sensitive
!                                  and then Get_File_Names_Case_Sensitive = 0;
! 
!       Cur_Dir_Len : Natural  := 0;
!       End_Path    : Natural  := Name'Length;
!       Last        : Positive := 1;
!       Path_Buffer : String (1 .. End_Path + 2 * Max_Path + 4);
!       --  We need to potentially store in this buffer the following elements:
!       --  the path itself, the current directory if the path is relative,
!       --  and additional fragments up to Max_Path in length in case
!       --  there are any symlinks.
  
        function Final_Value (S : String) return String;
        --  Make final adjustment to the returned string. This function strips
        --  trailing directory separators, and folds returned string to lower
        --  case if required.
  
!       procedure Fill_Directory (Drive_Only : Boolean := False);
!       --  Fill Cur_Dir and Cur_Dir_Len with Directory and ending directory
!       --  separator or with current directory if Directory is not defined.
!       --  If Drive_Only is True takes only Drive letter with colon and
!       --  directory separator from Directory parameter or from current
!       --  directory if Directory parameter is empty.
! 
!       function Is_With_Drive (Name : String) return Boolean;
!       pragma Inline (Is_With_Drive);
!       --  Returns True only if the Name is including a drive
!       --  letter at start.
! 
!       function Missed_Drive_Letter (Name : String) return Boolean;
!       --  Missed drive letter at start of the normalized pathname
! 
!       -------------------
!       -- Is_With_Drive --
!       -------------------
! 
!       function Is_With_Drive (Name : String) return Boolean is
!       begin
!          return Name'Length > 1
!            and then Name (Name'First + 1) = ':'
!            and then (Name (Name'First) in 'a' .. 'z'
!                      or else Name (Name'First) in 'A' .. 'Z');
!       end Is_With_Drive;
! 
!       -------------------------
!       -- Missed_Drive_Letter --
!       -------------------------
! 
!       function Missed_Drive_Letter (Name : String) return Boolean is
!       begin
!          return On_Windows
!            and then not Is_With_Drive (Name)
!            and then (Name'Length < 2 -- not \\name case
!                      or else Name (Name'First .. Name'First + 1)
!                              /= Directory_Separator & Directory_Separator);
!       end Missed_Drive_Letter;
  
        -----------------
        -- Final_Value --
*************** package body System.OS_Lib is
*** 2113,2134 ****
  
           Last := S1'Last;
  
!          if Last > 1
!            and then (S1 (Last) = '/'
!                        or else
!                      S1 (Last) = Directory_Separator)
!          then
!             --  Special case for Windows: C:\
! 
!             if Last = 3
                and then S1 (1) /= Directory_Separator
!               and then S1 (2) = ':'
!             then
!                null;
! 
!             else
!                Last := Last - 1;
!             end if;
           end if;
  
           --  And ensure that there is a trailing directory separator if the
--- 2181,2194 ----
  
           Last := S1'Last;
  
!          if Last > 1 and then Is_Dirsep (S1 (Last))
!            and then not
!              (On_Windows -- Special case for Windows: C:\
!               and then Last = 3
                and then S1 (1) /= Directory_Separator
!               and then S1 (2) = ':')
!          then
!             Last := Last - 1;
           end if;
  
           --  And ensure that there is a trailing directory separator if the
*************** package body System.OS_Lib is
*** 2145,2234 ****
           end if;
        end Final_Value;
  
!       -------------------
!       -- Get_Directory --
!       -------------------
  
!       function Get_Directory (Dir : String) return String is
        begin
!          --  Directory given, add directory separator if needed
! 
!          if Dir'Length > 0 then
!             declare
!                Result : String   :=
!                           Normalize_Pathname
!                             (Dir, "", Resolve_Links, Case_Sensitive)
!                              & Directory_Separator;
!                Last   : Positive := Result'Last - 1;
  
!             begin
!                --  On Windows, change all '/' to '\'
  
!                if On_Windows then
!                   for J in Result'First .. Last - 1 loop
!                      if Result (J) = '/' then
!                         Result (J) := Directory_Separator;
!                      end if;
!                   end loop;
!                end if;
  
!                --  Include additional directory separator, if needed
  
!                if Result (Last) /= Directory_Separator then
!                   Last := Last + 1;
!                end if;
  
!                return Result (Result'First .. Last);
!             end;
  
!          --  Directory name not given, get current directory
  
!          else
!             declare
!                Buffer   : String (1 .. Max_Path + 2);
!                Path_Len : Natural := Max_Path;
  
!             begin
!                Get_Current_Dir (Buffer'Address, Path_Len'Address);
  
!                if Path_Len = 0 then
!                   raise Program_Error;
                 end if;
  
!                if Buffer (Path_Len) /= Directory_Separator then
!                   Path_Len := Path_Len + 1;
!                   Buffer (Path_Len) := Directory_Separator;
!                end if;
  
!                --  By default, the drive letter on Windows is in upper case
  
!                if On_Windows
!                  and then Path_Len >= 2
!                  and then Buffer (2) = ':'
!                then
!                   System.Case_Util.To_Upper (Buffer (1 .. 1));
!                end if;
  
!                return Buffer (1 .. Path_Len);
!             end;
           end if;
!       end Get_Directory;
  
        --  Local variables
  
        Max_Iterations : constant := 500;
  
-       Cur_Dir     : constant String  := Get_Directory (Directory);
-       Cur_Dir_Len : constant Natural := Cur_Dir'Length;
- 
-       End_Path    : Natural := Name'Length;
-       Last        : Positive := 1;
        Link_Buffer : String (1 .. Max_Path + 2);
-       Path_Buffer : String (1 .. End_Path + Cur_Dir_Len + Max_Path + 2);
-       --  We need to potentially store in this buffer the following elements:
-       --  the path itself, the current directory if the path is relative,
-       --  and additional fragments up to Max_Path in length in case
-       --  there are any symlinks.
  
        Finish : Positive;
        Start  : Positive;
--- 2205,2284 ----
           end if;
        end Final_Value;
  
!       --------------------
!       -- Fill_Directory --
!       --------------------
  
!       procedure Fill_Directory (Drive_Only : Boolean := False) is
        begin
!          if Drive_Only and then Is_With_Drive (Directory) then
!             Path_Buffer (1 .. 3) :=
!               Directory (Directory'First .. Directory'First + 2);
  
!          elsif Directory = ""
!            or else not Is_Absolute_Path (Directory)
!            or else Missed_Drive_Letter (Directory)
!          then
!             --  Directory name not given or it is not absolute or without drive
!             --  letter on Windows, get current directory.
  
!             Cur_Dir_Len := Max_Path;
  
!             Get_Current_Dir (Path_Buffer'Address, Cur_Dir_Len'Address);
  
!             if Cur_Dir_Len = 0 then
!                raise Program_Error;
!             end if;
  
!             if not Resolve_Links then
!                Last := Cur_Dir_Len;
!             end if;
  
!             if not Drive_Only and then Directory /= "" then
!                if On_Windows and then Is_Absolute_Path (Directory) then
!                   --  Drive letter taken from current directory but directory
!                   --  itself taken from Directory parameter.
  
!                   Path_Buffer (3 .. Directory'Length + 2) := Directory;
!                   Cur_Dir_Len := Directory'Length + 2;
!                   Last := 3;
  
!                else
!                   --  Append relative Directory to current directory
  
!                   Path_Buffer
!                     (Cur_Dir_Len + 1 .. Cur_Dir_Len + Directory'Length) :=
!                     Directory;
!                   Cur_Dir_Len := Cur_Dir_Len + Directory'Length;
                 end if;
+             end if;
  
!          elsif Directory'Length >= Path_Buffer'Length then
!             raise Constraint_Error with "Directory name to big";
  
!          else
!             Path_Buffer (1 .. Directory'Length) := Directory;
!             Cur_Dir_Len := Directory'Length;
!          end if;
  
!          if Drive_Only then
!             --  When we need only drive letter from current directory on
!             --  Windows
  
!             Cur_Dir_Len := 3;
!             Last := Cur_Dir_Len;
! 
!          elsif not Is_Dirsep (Path_Buffer (Cur_Dir_Len)) then
!             Cur_Dir_Len := Cur_Dir_Len + 1;
!             Path_Buffer (Cur_Dir_Len) := Directory_Separator;
           end if;
!       end Fill_Directory;
  
        --  Local variables
  
        Max_Iterations : constant := 500;
  
        Link_Buffer : String (1 .. Max_Path + 2);
  
        Finish : Positive;
        Start  : Positive;
*************** package body System.OS_Lib is
*** 2244,2257 ****
        end if;
  
        if Is_Absolute_Path (Name) then
!          Path_Buffer (1 .. End_Path) := Name;
  
        else
           --  If this is a relative pathname, prepend current directory
!          Path_Buffer (1 .. Cur_Dir_Len) := Cur_Dir;
           Path_Buffer (Cur_Dir_Len + 1 .. Cur_Dir_Len + End_Path) := Name;
           End_Path := Cur_Dir_Len + End_Path;
-          Last := Cur_Dir_Len;
        end if;
  
        --  Special handling for Windows:
--- 2294,2316 ----
        end if;
  
        if Is_Absolute_Path (Name) then
!          if Missed_Drive_Letter (Name) then
!             Fill_Directory (Drive_Only => True);
! 
!             --  Take only drive letter part with colon
! 
!             End_Path := End_Path + 2;
!             Path_Buffer (3 .. End_Path) := Name;
! 
!          else
!             Path_Buffer (1 .. End_Path) := Name;
!          end if;
  
        else
           --  If this is a relative pathname, prepend current directory
!          Fill_Directory;
           Path_Buffer (Cur_Dir_Len + 1 .. Cur_Dir_Len + End_Path) := Name;
           End_Path := Cur_Dir_Len + End_Path;
        end if;
  
        --  Special handling for Windows:
*************** package body System.OS_Lib is
*** 2268,2297 ****
              end if;
           end loop;
  
!          --  If we have an absolute path starting with a directory
!          --  separator (but not a UNC path), we need to have the drive letter
!          --  in front of the path. Get_Current_Dir returns a path starting
!          --  with a drive letter. So we take this drive letter and prepend it
!          --  to the current path.
! 
!          if Path_Buffer (1) = Directory_Separator
!            and then Path_Buffer (2) /= Directory_Separator
!          then
!             if Cur_Dir'Length > 2
!               and then Cur_Dir (Cur_Dir'First + 1) = ':'
!             then
!                Path_Buffer (3 .. End_Path + 2) :=
!                  Path_Buffer (1 .. End_Path);
!                Path_Buffer (1 .. 2) :=
!                  Cur_Dir (Cur_Dir'First .. Cur_Dir'First + 1);
!                End_Path := End_Path + 2;
!             end if;
  
!          --  We have a drive letter already, ensure it is upper-case
  
!          elsif Path_Buffer (1) in 'a' .. 'z'
!            and then Path_Buffer (2) = ':'
!          then
              System.Case_Util.To_Upper (Path_Buffer (1 .. 1));
           end if;
  
--- 2327,2337 ----
              end if;
           end loop;
  
!          --  Ensure drive letter is upper-case
  
!          pragma Assert (Path_Buffer (2) = ':');
  
!          if Path_Buffer (1) in 'a' .. 'z' then
              System.Case_Util.To_Upper (Path_Buffer (1 .. 1));
           end if;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-os_lib.ads gcc-11.1.0/gcc/ada/libgnat/s-os_lib.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-os_lib.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-os_lib.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-osprim.ads gcc-11.1.0/gcc/ada/libgnat/s-osprim.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-osprim.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-osprim.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-osprim__darwin.adb gcc-11.1.0/gcc/ada/libgnat/s-osprim__darwin.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-osprim__darwin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-osprim__darwin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-osprim__lynxos.ads gcc-11.1.0/gcc/ada/libgnat/s-osprim__lynxos.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-osprim__lynxos.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-osprim__lynxos.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-osprim__mingw.adb gcc-11.1.0/gcc/ada/libgnat/s-osprim__mingw.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-osprim__mingw.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-osprim__mingw.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-osprim__posix.adb gcc-11.1.0/gcc/ada/libgnat/s-osprim__posix.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-osprim__posix.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-osprim__posix.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-osprim__posix2008.adb gcc-11.1.0/gcc/ada/libgnat/s-osprim__posix2008.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-osprim__posix2008.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-osprim__posix2008.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-osprim__rtems.adb gcc-11.1.0/gcc/ada/libgnat/s-osprim__rtems.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-osprim__rtems.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-osprim__rtems.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-osprim__solaris.adb gcc-11.1.0/gcc/ada/libgnat/s-osprim__solaris.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-osprim__solaris.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-osprim__solaris.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-osprim__unix.adb gcc-11.1.0/gcc/ada/libgnat/s-osprim__unix.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-osprim__unix.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-osprim__unix.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-osprim__vxworks.adb gcc-11.1.0/gcc/ada/libgnat/s-osprim__vxworks.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-osprim__vxworks.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-osprim__vxworks.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-osprim__x32.adb gcc-11.1.0/gcc/ada/libgnat/s-osprim__x32.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-osprim__x32.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-osprim__x32.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --             Copyright (C) 2013-2019, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --             Copyright (C) 2013-2020, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-osvers__vxworks-653.ads gcc-11.1.0/gcc/ada/libgnat/s-osvers__vxworks-653.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-osvers__vxworks-653.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-osvers__vxworks-653.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --                      Copyright (C) 2010-2019, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --                      Copyright (C) 2010-2020, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack03.adb gcc-11.1.0/gcc/ada/libgnat/s-pack03.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack03.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack03.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack03.ads gcc-11.1.0/gcc/ada/libgnat/s-pack03.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack03.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack03.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack05.adb gcc-11.1.0/gcc/ada/libgnat/s-pack05.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack05.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack05.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack05.ads gcc-11.1.0/gcc/ada/libgnat/s-pack05.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack05.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack05.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack06.adb gcc-11.1.0/gcc/ada/libgnat/s-pack06.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack06.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack06.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack06.ads gcc-11.1.0/gcc/ada/libgnat/s-pack06.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack06.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack06.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack07.adb gcc-11.1.0/gcc/ada/libgnat/s-pack07.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack07.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack07.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack07.ads gcc-11.1.0/gcc/ada/libgnat/s-pack07.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack07.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack07.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack09.adb gcc-11.1.0/gcc/ada/libgnat/s-pack09.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack09.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack09.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack09.ads gcc-11.1.0/gcc/ada/libgnat/s-pack09.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack09.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack09.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack10.adb gcc-11.1.0/gcc/ada/libgnat/s-pack10.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack10.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack10.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack10.ads gcc-11.1.0/gcc/ada/libgnat/s-pack10.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack10.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack10.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack100.adb gcc-11.1.0/gcc/ada/libgnat/s-pack100.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack100.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack100.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 0                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_100 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_100;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_100 or SetU_100 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_100 --
+    ------------
+ 
+    function Get_100
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_100
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_100;
+ 
+    -------------
+    -- GetU_100 --
+    -------------
+ 
+    function GetU_100
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_100
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_100;
+ 
+    ------------
+    -- Set_100 --
+    ------------
+ 
+    procedure Set_100
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_100;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_100;
+ 
+    -------------
+    -- SetU_100 --
+    -------------
+ 
+    procedure SetU_100
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_100;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_100;
+ 
+ end System.Pack_100;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack100.ads gcc-11.1.0/gcc/ada/libgnat/s-pack100.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack100.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack100.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 0                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 100
+ 
+ package System.Pack_100 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 100;
+ 
+    type Bits_100 is mod 2 ** Bits;
+    for Bits_100'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_100
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_100 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_100
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_100;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_100
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_100 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_100
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_100;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_100;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack101.adb gcc-11.1.0/gcc/ada/libgnat/s-pack101.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack101.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack101.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 1                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_101 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_101;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_101 --
+    ------------
+ 
+    function Get_101
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_101
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_101;
+ 
+    ------------
+    -- Set_101 --
+    ------------
+ 
+    procedure Set_101
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_101;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_101;
+ 
+ end System.Pack_101;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack101.ads gcc-11.1.0/gcc/ada/libgnat/s-pack101.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack101.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack101.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 1                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 101
+ 
+ package System.Pack_101 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 101;
+ 
+    type Bits_101 is mod 2 ** Bits;
+    for Bits_101'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_101
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_101 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_101
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_101;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_101;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack102.adb gcc-11.1.0/gcc/ada/libgnat/s-pack102.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack102.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack102.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 2                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_102 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_102;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_102 or SetU_102 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_102 --
+    ------------
+ 
+    function Get_102
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_102
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_102;
+ 
+    -------------
+    -- GetU_102 --
+    -------------
+ 
+    function GetU_102
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_102
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_102;
+ 
+    ------------
+    -- Set_102 --
+    ------------
+ 
+    procedure Set_102
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_102;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_102;
+ 
+    -------------
+    -- SetU_102 --
+    -------------
+ 
+    procedure SetU_102
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_102;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_102;
+ 
+ end System.Pack_102;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack102.ads gcc-11.1.0/gcc/ada/libgnat/s-pack102.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack102.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack102.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 2                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 102
+ 
+ package System.Pack_102 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 102;
+ 
+    type Bits_102 is mod 2 ** Bits;
+    for Bits_102'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_102
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_102 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_102
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_102;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_102
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_102 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_102
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_102;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_102;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack103.adb gcc-11.1.0/gcc/ada/libgnat/s-pack103.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack103.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack103.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 3                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_103 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_103;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_103 --
+    ------------
+ 
+    function Get_103
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_103
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_103;
+ 
+    ------------
+    -- Set_103 --
+    ------------
+ 
+    procedure Set_103
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_103;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_103;
+ 
+ end System.Pack_103;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack103.ads gcc-11.1.0/gcc/ada/libgnat/s-pack103.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack103.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack103.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 3                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 103
+ 
+ package System.Pack_103 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 103;
+ 
+    type Bits_103 is mod 2 ** Bits;
+    for Bits_103'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_103
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_103 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_103
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_103;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_103;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack104.adb gcc-11.1.0/gcc/ada/libgnat/s-pack104.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack104.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack104.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 4                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_104 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_104;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_104 or SetU_104 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_104 --
+    ------------
+ 
+    function Get_104
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_104
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_104;
+ 
+    -------------
+    -- GetU_104 --
+    -------------
+ 
+    function GetU_104
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_104
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_104;
+ 
+    ------------
+    -- Set_104 --
+    ------------
+ 
+    procedure Set_104
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_104;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_104;
+ 
+    -------------
+    -- SetU_104 --
+    -------------
+ 
+    procedure SetU_104
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_104;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_104;
+ 
+ end System.Pack_104;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack104.ads gcc-11.1.0/gcc/ada/libgnat/s-pack104.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack104.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack104.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 4                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 104
+ 
+ package System.Pack_104 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 104;
+ 
+    type Bits_104 is mod 2 ** Bits;
+    for Bits_104'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_104
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_104 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_104
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_104;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_104
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_104 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_104
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_104;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_104;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack105.adb gcc-11.1.0/gcc/ada/libgnat/s-pack105.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack105.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack105.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 5                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_105 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_105;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_105 --
+    ------------
+ 
+    function Get_105
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_105
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_105;
+ 
+    ------------
+    -- Set_105 --
+    ------------
+ 
+    procedure Set_105
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_105;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_105;
+ 
+ end System.Pack_105;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack105.ads gcc-11.1.0/gcc/ada/libgnat/s-pack105.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack105.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack105.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 5                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 105
+ 
+ package System.Pack_105 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 105;
+ 
+    type Bits_105 is mod 2 ** Bits;
+    for Bits_105'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_105
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_105 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_105
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_105;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_105;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack106.adb gcc-11.1.0/gcc/ada/libgnat/s-pack106.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack106.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack106.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 6                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_106 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_106;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_106 or SetU_106 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_106 --
+    ------------
+ 
+    function Get_106
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_106
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_106;
+ 
+    -------------
+    -- GetU_106 --
+    -------------
+ 
+    function GetU_106
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_106
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_106;
+ 
+    ------------
+    -- Set_106 --
+    ------------
+ 
+    procedure Set_106
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_106;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_106;
+ 
+    -------------
+    -- SetU_106 --
+    -------------
+ 
+    procedure SetU_106
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_106;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_106;
+ 
+ end System.Pack_106;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack106.ads gcc-11.1.0/gcc/ada/libgnat/s-pack106.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack106.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack106.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 6                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 106
+ 
+ package System.Pack_106 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 106;
+ 
+    type Bits_106 is mod 2 ** Bits;
+    for Bits_106'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_106
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_106 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_106
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_106;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_106
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_106 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_106
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_106;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_106;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack107.adb gcc-11.1.0/gcc/ada/libgnat/s-pack107.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack107.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack107.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 7                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_107 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_107;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_107 --
+    ------------
+ 
+    function Get_107
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_107
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_107;
+ 
+    ------------
+    -- Set_107 --
+    ------------
+ 
+    procedure Set_107
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_107;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_107;
+ 
+ end System.Pack_107;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack107.ads gcc-11.1.0/gcc/ada/libgnat/s-pack107.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack107.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack107.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 7                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 107
+ 
+ package System.Pack_107 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 107;
+ 
+    type Bits_107 is mod 2 ** Bits;
+    for Bits_107'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_107
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_107 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_107
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_107;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_107;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack108.adb gcc-11.1.0/gcc/ada/libgnat/s-pack108.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack108.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack108.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 8                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_108 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_108;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_108 or SetU_108 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_108 --
+    ------------
+ 
+    function Get_108
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_108
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_108;
+ 
+    -------------
+    -- GetU_108 --
+    -------------
+ 
+    function GetU_108
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_108
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_108;
+ 
+    ------------
+    -- Set_108 --
+    ------------
+ 
+    procedure Set_108
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_108;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_108;
+ 
+    -------------
+    -- SetU_108 --
+    -------------
+ 
+    procedure SetU_108
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_108;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_108;
+ 
+ end System.Pack_108;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack108.ads gcc-11.1.0/gcc/ada/libgnat/s-pack108.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack108.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack108.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 8                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 108
+ 
+ package System.Pack_108 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 108;
+ 
+    type Bits_108 is mod 2 ** Bits;
+    for Bits_108'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_108
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_108 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_108
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_108;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_108
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_108 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_108
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_108;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_108;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack109.adb gcc-11.1.0/gcc/ada/libgnat/s-pack109.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack109.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack109.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 9                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_109 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_109;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_109 --
+    ------------
+ 
+    function Get_109
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_109
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_109;
+ 
+    ------------
+    -- Set_109 --
+    ------------
+ 
+    procedure Set_109
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_109;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_109;
+ 
+ end System.Pack_109;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack109.ads gcc-11.1.0/gcc/ada/libgnat/s-pack109.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack109.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack109.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 0 9                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 109
+ 
+ package System.Pack_109 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 109;
+ 
+    type Bits_109 is mod 2 ** Bits;
+    for Bits_109'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_109
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_109 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_109
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_109;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_109;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack11.adb gcc-11.1.0/gcc/ada/libgnat/s-pack11.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack11.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack11.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack11.ads gcc-11.1.0/gcc/ada/libgnat/s-pack11.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack11.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack11.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack110.adb gcc-11.1.0/gcc/ada/libgnat/s-pack110.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack110.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack110.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 0                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_110 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_110;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_110 or SetU_110 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_110 --
+    ------------
+ 
+    function Get_110
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_110
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_110;
+ 
+    -------------
+    -- GetU_110 --
+    -------------
+ 
+    function GetU_110
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_110
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_110;
+ 
+    ------------
+    -- Set_110 --
+    ------------
+ 
+    procedure Set_110
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_110;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_110;
+ 
+    -------------
+    -- SetU_110 --
+    -------------
+ 
+    procedure SetU_110
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_110;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_110;
+ 
+ end System.Pack_110;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack110.ads gcc-11.1.0/gcc/ada/libgnat/s-pack110.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack110.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack110.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 0                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 110
+ 
+ package System.Pack_110 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 110;
+ 
+    type Bits_110 is mod 2 ** Bits;
+    for Bits_110'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_110
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_110 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_110
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_110;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_110
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_110 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_110
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_110;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_110;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack111.adb gcc-11.1.0/gcc/ada/libgnat/s-pack111.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack111.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack111.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 1                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_111 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_111;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_111 --
+    ------------
+ 
+    function Get_111
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_111
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_111;
+ 
+    ------------
+    -- Set_111 --
+    ------------
+ 
+    procedure Set_111
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_111;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_111;
+ 
+ end System.Pack_111;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack111.ads gcc-11.1.0/gcc/ada/libgnat/s-pack111.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack111.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack111.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 1                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 111
+ 
+ package System.Pack_111 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 111;
+ 
+    type Bits_111 is mod 2 ** Bits;
+    for Bits_111'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_111
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_111 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_111
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_111;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_111;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack112.adb gcc-11.1.0/gcc/ada/libgnat/s-pack112.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack112.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack112.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 2                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_112 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_112;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_112 or SetU_112 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_112 --
+    ------------
+ 
+    function Get_112
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_112
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_112;
+ 
+    -------------
+    -- GetU_112 --
+    -------------
+ 
+    function GetU_112
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_112
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_112;
+ 
+    ------------
+    -- Set_112 --
+    ------------
+ 
+    procedure Set_112
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_112;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_112;
+ 
+    -------------
+    -- SetU_112 --
+    -------------
+ 
+    procedure SetU_112
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_112;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_112;
+ 
+ end System.Pack_112;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack112.ads gcc-11.1.0/gcc/ada/libgnat/s-pack112.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack112.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack112.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 2                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 112
+ 
+ package System.Pack_112 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 112;
+ 
+    type Bits_112 is mod 2 ** Bits;
+    for Bits_112'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_112
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_112 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_112
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_112;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_112
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_112 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_112
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_112;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_112;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack113.adb gcc-11.1.0/gcc/ada/libgnat/s-pack113.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack113.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack113.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 3                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_113 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_113;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_113 --
+    ------------
+ 
+    function Get_113
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_113
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_113;
+ 
+    ------------
+    -- Set_113 --
+    ------------
+ 
+    procedure Set_113
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_113;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_113;
+ 
+ end System.Pack_113;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack113.ads gcc-11.1.0/gcc/ada/libgnat/s-pack113.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack113.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack113.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 3                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 113
+ 
+ package System.Pack_113 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 113;
+ 
+    type Bits_113 is mod 2 ** Bits;
+    for Bits_113'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_113
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_113 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_113
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_113;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_113;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack114.adb gcc-11.1.0/gcc/ada/libgnat/s-pack114.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack114.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack114.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 4                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_114 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_114;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_114 or SetU_114 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_114 --
+    ------------
+ 
+    function Get_114
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_114
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_114;
+ 
+    -------------
+    -- GetU_114 --
+    -------------
+ 
+    function GetU_114
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_114
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_114;
+ 
+    ------------
+    -- Set_114 --
+    ------------
+ 
+    procedure Set_114
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_114;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_114;
+ 
+    -------------
+    -- SetU_114 --
+    -------------
+ 
+    procedure SetU_114
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_114;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_114;
+ 
+ end System.Pack_114;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack114.ads gcc-11.1.0/gcc/ada/libgnat/s-pack114.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack114.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack114.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 4                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 114
+ 
+ package System.Pack_114 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 114;
+ 
+    type Bits_114 is mod 2 ** Bits;
+    for Bits_114'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_114
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_114 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_114
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_114;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_114
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_114 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_114
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_114;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_114;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack115.adb gcc-11.1.0/gcc/ada/libgnat/s-pack115.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack115.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack115.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 5                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_115 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_115;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_115 --
+    ------------
+ 
+    function Get_115
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_115
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_115;
+ 
+    ------------
+    -- Set_115 --
+    ------------
+ 
+    procedure Set_115
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_115;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_115;
+ 
+ end System.Pack_115;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack115.ads gcc-11.1.0/gcc/ada/libgnat/s-pack115.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack115.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack115.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 5                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 115
+ 
+ package System.Pack_115 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 115;
+ 
+    type Bits_115 is mod 2 ** Bits;
+    for Bits_115'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_115
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_115 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_115
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_115;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_115;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack116.adb gcc-11.1.0/gcc/ada/libgnat/s-pack116.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack116.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack116.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 6                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_116 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_116;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_116 or SetU_116 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_116 --
+    ------------
+ 
+    function Get_116
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_116
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_116;
+ 
+    -------------
+    -- GetU_116 --
+    -------------
+ 
+    function GetU_116
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_116
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_116;
+ 
+    ------------
+    -- Set_116 --
+    ------------
+ 
+    procedure Set_116
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_116;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_116;
+ 
+    -------------
+    -- SetU_116 --
+    -------------
+ 
+    procedure SetU_116
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_116;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_116;
+ 
+ end System.Pack_116;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack116.ads gcc-11.1.0/gcc/ada/libgnat/s-pack116.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack116.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack116.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 6                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 116
+ 
+ package System.Pack_116 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 116;
+ 
+    type Bits_116 is mod 2 ** Bits;
+    for Bits_116'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_116
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_116 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_116
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_116;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_116
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_116 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_116
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_116;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_116;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack117.adb gcc-11.1.0/gcc/ada/libgnat/s-pack117.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack117.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack117.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 7                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_117 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_117;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_117 --
+    ------------
+ 
+    function Get_117
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_117
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_117;
+ 
+    ------------
+    -- Set_117 --
+    ------------
+ 
+    procedure Set_117
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_117;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_117;
+ 
+ end System.Pack_117;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack117.ads gcc-11.1.0/gcc/ada/libgnat/s-pack117.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack117.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack117.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 7                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 117
+ 
+ package System.Pack_117 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 117;
+ 
+    type Bits_117 is mod 2 ** Bits;
+    for Bits_117'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_117
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_117 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_117
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_117;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_117;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack118.adb gcc-11.1.0/gcc/ada/libgnat/s-pack118.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack118.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack118.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 8                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_118 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_118;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_118 or SetU_118 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_118 --
+    ------------
+ 
+    function Get_118
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_118
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_118;
+ 
+    -------------
+    -- GetU_118 --
+    -------------
+ 
+    function GetU_118
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_118
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_118;
+ 
+    ------------
+    -- Set_118 --
+    ------------
+ 
+    procedure Set_118
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_118;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_118;
+ 
+    -------------
+    -- SetU_118 --
+    -------------
+ 
+    procedure SetU_118
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_118;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_118;
+ 
+ end System.Pack_118;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack118.ads gcc-11.1.0/gcc/ada/libgnat/s-pack118.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack118.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack118.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 8                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 118
+ 
+ package System.Pack_118 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 118;
+ 
+    type Bits_118 is mod 2 ** Bits;
+    for Bits_118'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_118
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_118 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_118
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_118;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_118
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_118 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_118
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_118;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_118;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack119.adb gcc-11.1.0/gcc/ada/libgnat/s-pack119.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack119.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack119.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 9                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_119 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_119;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_119 --
+    ------------
+ 
+    function Get_119
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_119
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_119;
+ 
+    ------------
+    -- Set_119 --
+    ------------
+ 
+    procedure Set_119
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_119;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_119;
+ 
+ end System.Pack_119;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack119.ads gcc-11.1.0/gcc/ada/libgnat/s-pack119.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack119.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack119.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 1 9                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 119
+ 
+ package System.Pack_119 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 119;
+ 
+    type Bits_119 is mod 2 ** Bits;
+    for Bits_119'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_119
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_119 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_119
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_119;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_119;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack12.adb gcc-11.1.0/gcc/ada/libgnat/s-pack12.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack12.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack12.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack12.ads gcc-11.1.0/gcc/ada/libgnat/s-pack12.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack12.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack12.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack120.adb gcc-11.1.0/gcc/ada/libgnat/s-pack120.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack120.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack120.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 2 0                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_120 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_120;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_120 or SetU_120 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_120 --
+    ------------
+ 
+    function Get_120
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_120
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_120;
+ 
+    -------------
+    -- GetU_120 --
+    -------------
+ 
+    function GetU_120
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_120
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_120;
+ 
+    ------------
+    -- Set_120 --
+    ------------
+ 
+    procedure Set_120
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_120;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_120;
+ 
+    -------------
+    -- SetU_120 --
+    -------------
+ 
+    procedure SetU_120
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_120;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_120;
+ 
+ end System.Pack_120;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack120.ads gcc-11.1.0/gcc/ada/libgnat/s-pack120.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack120.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack120.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 2 0                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 120
+ 
+ package System.Pack_120 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 120;
+ 
+    type Bits_120 is mod 2 ** Bits;
+    for Bits_120'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_120
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_120 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_120
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_120;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_120
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_120 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_120
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_120;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_120;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack121.adb gcc-11.1.0/gcc/ada/libgnat/s-pack121.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack121.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack121.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 2 1                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_121 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_121;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_121 --
+    ------------
+ 
+    function Get_121
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_121
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_121;
+ 
+    ------------
+    -- Set_121 --
+    ------------
+ 
+    procedure Set_121
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_121;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_121;
+ 
+ end System.Pack_121;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack121.ads gcc-11.1.0/gcc/ada/libgnat/s-pack121.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack121.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack121.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 2 1                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 121
+ 
+ package System.Pack_121 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 121;
+ 
+    type Bits_121 is mod 2 ** Bits;
+    for Bits_121'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_121
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_121 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_121
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_121;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_121;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack122.adb gcc-11.1.0/gcc/ada/libgnat/s-pack122.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack122.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack122.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 2 2                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_122 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_122;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_122 or SetU_122 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_122 --
+    ------------
+ 
+    function Get_122
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_122
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_122;
+ 
+    -------------
+    -- GetU_122 --
+    -------------
+ 
+    function GetU_122
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_122
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_122;
+ 
+    ------------
+    -- Set_122 --
+    ------------
+ 
+    procedure Set_122
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_122;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_122;
+ 
+    -------------
+    -- SetU_122 --
+    -------------
+ 
+    procedure SetU_122
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_122;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_122;
+ 
+ end System.Pack_122;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack122.ads gcc-11.1.0/gcc/ada/libgnat/s-pack122.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack122.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack122.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 2 2                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 122
+ 
+ package System.Pack_122 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 122;
+ 
+    type Bits_122 is mod 2 ** Bits;
+    for Bits_122'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_122
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_122 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_122
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_122;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_122
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_122 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_122
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_122;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_122;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack123.adb gcc-11.1.0/gcc/ada/libgnat/s-pack123.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack123.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack123.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 2 3                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_123 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_123;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_123 --
+    ------------
+ 
+    function Get_123
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_123
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_123;
+ 
+    ------------
+    -- Set_123 --
+    ------------
+ 
+    procedure Set_123
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_123;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_123;
+ 
+ end System.Pack_123;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack123.ads gcc-11.1.0/gcc/ada/libgnat/s-pack123.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack123.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack123.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 2 3                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 123
+ 
+ package System.Pack_123 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 123;
+ 
+    type Bits_123 is mod 2 ** Bits;
+    for Bits_123'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_123
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_123 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_123
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_123;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_123;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack124.adb gcc-11.1.0/gcc/ada/libgnat/s-pack124.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack124.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack124.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 2 4                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_124 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_124;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_124 or SetU_124 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_124 --
+    ------------
+ 
+    function Get_124
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_124
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_124;
+ 
+    -------------
+    -- GetU_124 --
+    -------------
+ 
+    function GetU_124
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_124
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_124;
+ 
+    ------------
+    -- Set_124 --
+    ------------
+ 
+    procedure Set_124
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_124;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_124;
+ 
+    -------------
+    -- SetU_124 --
+    -------------
+ 
+    procedure SetU_124
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_124;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_124;
+ 
+ end System.Pack_124;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack124.ads gcc-11.1.0/gcc/ada/libgnat/s-pack124.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack124.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack124.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 2 4                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 124
+ 
+ package System.Pack_124 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 124;
+ 
+    type Bits_124 is mod 2 ** Bits;
+    for Bits_124'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_124
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_124 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_124
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_124;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_124
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_124 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_124
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_124;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_124;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack125.adb gcc-11.1.0/gcc/ada/libgnat/s-pack125.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack125.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack125.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 2 5                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_125 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_125;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_125 --
+    ------------
+ 
+    function Get_125
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_125
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_125;
+ 
+    ------------
+    -- Set_125 --
+    ------------
+ 
+    procedure Set_125
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_125;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_125;
+ 
+ end System.Pack_125;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack125.ads gcc-11.1.0/gcc/ada/libgnat/s-pack125.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack125.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack125.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 2 5                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 125
+ 
+ package System.Pack_125 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 125;
+ 
+    type Bits_125 is mod 2 ** Bits;
+    for Bits_125'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_125
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_125 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_125
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_125;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_125;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack126.adb gcc-11.1.0/gcc/ada/libgnat/s-pack126.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack126.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack126.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 2 6                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_126 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_126;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_126 or SetU_126 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_126 --
+    ------------
+ 
+    function Get_126
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_126
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_126;
+ 
+    -------------
+    -- GetU_126 --
+    -------------
+ 
+    function GetU_126
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_126
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_126;
+ 
+    ------------
+    -- Set_126 --
+    ------------
+ 
+    procedure Set_126
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_126;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_126;
+ 
+    -------------
+    -- SetU_126 --
+    -------------
+ 
+    procedure SetU_126
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_126;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_126;
+ 
+ end System.Pack_126;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack126.ads gcc-11.1.0/gcc/ada/libgnat/s-pack126.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack126.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack126.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 2 6                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 126
+ 
+ package System.Pack_126 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 126;
+ 
+    type Bits_126 is mod 2 ** Bits;
+    for Bits_126'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_126
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_126 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_126
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_126;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_126
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_126 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_126
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_126;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_126;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack127.adb gcc-11.1.0/gcc/ada/libgnat/s-pack127.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack127.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack127.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 2 7                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_127 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_127;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_127 --
+    ------------
+ 
+    function Get_127
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_127
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_127;
+ 
+    ------------
+    -- Set_127 --
+    ------------
+ 
+    procedure Set_127
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_127;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_127;
+ 
+ end System.Pack_127;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack127.ads gcc-11.1.0/gcc/ada/libgnat/s-pack127.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack127.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack127.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 1 2 7                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 127
+ 
+ package System.Pack_127 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 127;
+ 
+    type Bits_127 is mod 2 ** Bits;
+    for Bits_127'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_127
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_127 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_127
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_127;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_127;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack13.adb gcc-11.1.0/gcc/ada/libgnat/s-pack13.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack13.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack13.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack13.ads gcc-11.1.0/gcc/ada/libgnat/s-pack13.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack13.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack13.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack14.adb gcc-11.1.0/gcc/ada/libgnat/s-pack14.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack14.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack14.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack14.ads gcc-11.1.0/gcc/ada/libgnat/s-pack14.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack14.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack14.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack15.adb gcc-11.1.0/gcc/ada/libgnat/s-pack15.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack15.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack15.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack15.ads gcc-11.1.0/gcc/ada/libgnat/s-pack15.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack15.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack15.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack17.adb gcc-11.1.0/gcc/ada/libgnat/s-pack17.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack17.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack17.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack17.ads gcc-11.1.0/gcc/ada/libgnat/s-pack17.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack17.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack17.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack18.adb gcc-11.1.0/gcc/ada/libgnat/s-pack18.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack18.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack18.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack18.ads gcc-11.1.0/gcc/ada/libgnat/s-pack18.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack18.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack18.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack19.adb gcc-11.1.0/gcc/ada/libgnat/s-pack19.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack19.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack19.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack19.ads gcc-11.1.0/gcc/ada/libgnat/s-pack19.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack19.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack19.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack20.adb gcc-11.1.0/gcc/ada/libgnat/s-pack20.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack20.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack20.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack20.ads gcc-11.1.0/gcc/ada/libgnat/s-pack20.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack20.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack20.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack21.adb gcc-11.1.0/gcc/ada/libgnat/s-pack21.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack21.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack21.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack21.ads gcc-11.1.0/gcc/ada/libgnat/s-pack21.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack21.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack21.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack22.adb gcc-11.1.0/gcc/ada/libgnat/s-pack22.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack22.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack22.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack22.ads gcc-11.1.0/gcc/ada/libgnat/s-pack22.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack22.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack22.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack23.adb gcc-11.1.0/gcc/ada/libgnat/s-pack23.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack23.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack23.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack23.ads gcc-11.1.0/gcc/ada/libgnat/s-pack23.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack23.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack23.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack24.adb gcc-11.1.0/gcc/ada/libgnat/s-pack24.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack24.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack24.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack24.ads gcc-11.1.0/gcc/ada/libgnat/s-pack24.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack24.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack24.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack25.adb gcc-11.1.0/gcc/ada/libgnat/s-pack25.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack25.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack25.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack25.ads gcc-11.1.0/gcc/ada/libgnat/s-pack25.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack25.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack25.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack26.adb gcc-11.1.0/gcc/ada/libgnat/s-pack26.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack26.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack26.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack26.ads gcc-11.1.0/gcc/ada/libgnat/s-pack26.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack26.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack26.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack27.adb gcc-11.1.0/gcc/ada/libgnat/s-pack27.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack27.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack27.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack27.ads gcc-11.1.0/gcc/ada/libgnat/s-pack27.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack27.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack27.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack28.adb gcc-11.1.0/gcc/ada/libgnat/s-pack28.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack28.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack28.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack28.ads gcc-11.1.0/gcc/ada/libgnat/s-pack28.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack28.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack28.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack29.adb gcc-11.1.0/gcc/ada/libgnat/s-pack29.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack29.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack29.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack29.ads gcc-11.1.0/gcc/ada/libgnat/s-pack29.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack29.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack29.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack30.adb gcc-11.1.0/gcc/ada/libgnat/s-pack30.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack30.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack30.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack30.ads gcc-11.1.0/gcc/ada/libgnat/s-pack30.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack30.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack30.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack31.adb gcc-11.1.0/gcc/ada/libgnat/s-pack31.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack31.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack31.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack31.ads gcc-11.1.0/gcc/ada/libgnat/s-pack31.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack31.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack31.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack33.adb gcc-11.1.0/gcc/ada/libgnat/s-pack33.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack33.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack33.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack33.ads gcc-11.1.0/gcc/ada/libgnat/s-pack33.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack33.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack33.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack34.adb gcc-11.1.0/gcc/ada/libgnat/s-pack34.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack34.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack34.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack34.ads gcc-11.1.0/gcc/ada/libgnat/s-pack34.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack34.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack34.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack35.adb gcc-11.1.0/gcc/ada/libgnat/s-pack35.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack35.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack35.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack35.ads gcc-11.1.0/gcc/ada/libgnat/s-pack35.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack35.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack35.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack36.adb gcc-11.1.0/gcc/ada/libgnat/s-pack36.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack36.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack36.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack36.ads gcc-11.1.0/gcc/ada/libgnat/s-pack36.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack36.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack36.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack37.adb gcc-11.1.0/gcc/ada/libgnat/s-pack37.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack37.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack37.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack37.ads gcc-11.1.0/gcc/ada/libgnat/s-pack37.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack37.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack37.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack38.adb gcc-11.1.0/gcc/ada/libgnat/s-pack38.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack38.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack38.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack38.ads gcc-11.1.0/gcc/ada/libgnat/s-pack38.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack38.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack38.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack39.adb gcc-11.1.0/gcc/ada/libgnat/s-pack39.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack39.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack39.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack39.ads gcc-11.1.0/gcc/ada/libgnat/s-pack39.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack39.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack39.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack40.adb gcc-11.1.0/gcc/ada/libgnat/s-pack40.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack40.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack40.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack40.ads gcc-11.1.0/gcc/ada/libgnat/s-pack40.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack40.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack40.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack41.adb gcc-11.1.0/gcc/ada/libgnat/s-pack41.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack41.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack41.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack41.ads gcc-11.1.0/gcc/ada/libgnat/s-pack41.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack41.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack41.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack42.adb gcc-11.1.0/gcc/ada/libgnat/s-pack42.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack42.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack42.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack42.ads gcc-11.1.0/gcc/ada/libgnat/s-pack42.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack42.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack42.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack43.adb gcc-11.1.0/gcc/ada/libgnat/s-pack43.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack43.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack43.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack43.ads gcc-11.1.0/gcc/ada/libgnat/s-pack43.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack43.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack43.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack44.adb gcc-11.1.0/gcc/ada/libgnat/s-pack44.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack44.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack44.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack44.ads gcc-11.1.0/gcc/ada/libgnat/s-pack44.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack44.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack44.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack45.adb gcc-11.1.0/gcc/ada/libgnat/s-pack45.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack45.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack45.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack45.ads gcc-11.1.0/gcc/ada/libgnat/s-pack45.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack45.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack45.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack46.adb gcc-11.1.0/gcc/ada/libgnat/s-pack46.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack46.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack46.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack46.ads gcc-11.1.0/gcc/ada/libgnat/s-pack46.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack46.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack46.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack47.adb gcc-11.1.0/gcc/ada/libgnat/s-pack47.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack47.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack47.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack47.ads gcc-11.1.0/gcc/ada/libgnat/s-pack47.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack47.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack47.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack48.adb gcc-11.1.0/gcc/ada/libgnat/s-pack48.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack48.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack48.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack48.ads gcc-11.1.0/gcc/ada/libgnat/s-pack48.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack48.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack48.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack49.adb gcc-11.1.0/gcc/ada/libgnat/s-pack49.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack49.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack49.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack49.ads gcc-11.1.0/gcc/ada/libgnat/s-pack49.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack49.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack49.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack50.adb gcc-11.1.0/gcc/ada/libgnat/s-pack50.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack50.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack50.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack50.ads gcc-11.1.0/gcc/ada/libgnat/s-pack50.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack50.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack50.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack51.adb gcc-11.1.0/gcc/ada/libgnat/s-pack51.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack51.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack51.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack51.ads gcc-11.1.0/gcc/ada/libgnat/s-pack51.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack51.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack51.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack52.adb gcc-11.1.0/gcc/ada/libgnat/s-pack52.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack52.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack52.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack52.ads gcc-11.1.0/gcc/ada/libgnat/s-pack52.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack52.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack52.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack53.adb gcc-11.1.0/gcc/ada/libgnat/s-pack53.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack53.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack53.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack53.ads gcc-11.1.0/gcc/ada/libgnat/s-pack53.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack53.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack53.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack54.adb gcc-11.1.0/gcc/ada/libgnat/s-pack54.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack54.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack54.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack54.ads gcc-11.1.0/gcc/ada/libgnat/s-pack54.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack54.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack54.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack55.adb gcc-11.1.0/gcc/ada/libgnat/s-pack55.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack55.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack55.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack55.ads gcc-11.1.0/gcc/ada/libgnat/s-pack55.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack55.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack55.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack56.adb gcc-11.1.0/gcc/ada/libgnat/s-pack56.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack56.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack56.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack56.ads gcc-11.1.0/gcc/ada/libgnat/s-pack56.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack56.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack56.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack57.adb gcc-11.1.0/gcc/ada/libgnat/s-pack57.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack57.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack57.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack57.ads gcc-11.1.0/gcc/ada/libgnat/s-pack57.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack57.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack57.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack58.adb gcc-11.1.0/gcc/ada/libgnat/s-pack58.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack58.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack58.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack58.ads gcc-11.1.0/gcc/ada/libgnat/s-pack58.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack58.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack58.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack59.adb gcc-11.1.0/gcc/ada/libgnat/s-pack59.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack59.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack59.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack59.ads gcc-11.1.0/gcc/ada/libgnat/s-pack59.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack59.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack59.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack60.adb gcc-11.1.0/gcc/ada/libgnat/s-pack60.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack60.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack60.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack60.ads gcc-11.1.0/gcc/ada/libgnat/s-pack60.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack60.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack60.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack61.adb gcc-11.1.0/gcc/ada/libgnat/s-pack61.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack61.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack61.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack61.ads gcc-11.1.0/gcc/ada/libgnat/s-pack61.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack61.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack61.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack62.adb gcc-11.1.0/gcc/ada/libgnat/s-pack62.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack62.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack62.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack62.ads gcc-11.1.0/gcc/ada/libgnat/s-pack62.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack62.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack62.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack63.adb gcc-11.1.0/gcc/ada/libgnat/s-pack63.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack63.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack63.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack63.ads gcc-11.1.0/gcc/ada/libgnat/s-pack63.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack63.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pack63.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack65.adb gcc-11.1.0/gcc/ada/libgnat/s-pack65.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack65.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack65.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 6 5                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_65 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_65;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_65 --
+    ------------
+ 
+    function Get_65
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_65
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_65;
+ 
+    ------------
+    -- Set_65 --
+    ------------
+ 
+    procedure Set_65
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_65;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_65;
+ 
+ end System.Pack_65;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack65.ads gcc-11.1.0/gcc/ada/libgnat/s-pack65.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack65.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack65.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 6 5                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 65
+ 
+ package System.Pack_65 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 65;
+ 
+    type Bits_65 is mod 2 ** Bits;
+    for Bits_65'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_65
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_65 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_65
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_65;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_65;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack66.adb gcc-11.1.0/gcc/ada/libgnat/s-pack66.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack66.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack66.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 6 6                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_66 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_66;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_66 or SetU_66 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_66 --
+    ------------
+ 
+    function Get_66
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_66
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_66;
+ 
+    -------------
+    -- GetU_66 --
+    -------------
+ 
+    function GetU_66
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_66
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_66;
+ 
+    ------------
+    -- Set_66 --
+    ------------
+ 
+    procedure Set_66
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_66;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_66;
+ 
+    -------------
+    -- SetU_66 --
+    -------------
+ 
+    procedure SetU_66
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_66;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_66;
+ 
+ end System.Pack_66;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack66.ads gcc-11.1.0/gcc/ada/libgnat/s-pack66.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack66.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack66.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 6 6                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 66
+ 
+ package System.Pack_66 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 66;
+ 
+    type Bits_66 is mod 2 ** Bits;
+    for Bits_66'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_66
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_66 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_66
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_66;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_66
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_66 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_66
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_66;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_66;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack67.adb gcc-11.1.0/gcc/ada/libgnat/s-pack67.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack67.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack67.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 6 7                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_67 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_67;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_67 --
+    ------------
+ 
+    function Get_67
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_67
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_67;
+ 
+    ------------
+    -- Set_67 --
+    ------------
+ 
+    procedure Set_67
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_67;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_67;
+ 
+ end System.Pack_67;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack67.ads gcc-11.1.0/gcc/ada/libgnat/s-pack67.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack67.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack67.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 6 7                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 67
+ 
+ package System.Pack_67 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 67;
+ 
+    type Bits_67 is mod 2 ** Bits;
+    for Bits_67'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_67
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_67 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_67
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_67;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_67;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack68.adb gcc-11.1.0/gcc/ada/libgnat/s-pack68.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack68.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack68.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 6 8                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_68 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_68;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_68 or SetU_68 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_68 --
+    ------------
+ 
+    function Get_68
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_68
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_68;
+ 
+    -------------
+    -- GetU_68 --
+    -------------
+ 
+    function GetU_68
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_68
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_68;
+ 
+    ------------
+    -- Set_68 --
+    ------------
+ 
+    procedure Set_68
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_68;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_68;
+ 
+    -------------
+    -- SetU_68 --
+    -------------
+ 
+    procedure SetU_68
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_68;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_68;
+ 
+ end System.Pack_68;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack68.ads gcc-11.1.0/gcc/ada/libgnat/s-pack68.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack68.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack68.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 6 8                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 68
+ 
+ package System.Pack_68 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 68;
+ 
+    type Bits_68 is mod 2 ** Bits;
+    for Bits_68'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_68
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_68 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_68
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_68;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_68
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_68 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_68
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_68;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_68;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack69.adb gcc-11.1.0/gcc/ada/libgnat/s-pack69.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack69.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack69.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 6 9                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_69 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_69;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_69 --
+    ------------
+ 
+    function Get_69
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_69
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_69;
+ 
+    ------------
+    -- Set_69 --
+    ------------
+ 
+    procedure Set_69
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_69;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_69;
+ 
+ end System.Pack_69;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack69.ads gcc-11.1.0/gcc/ada/libgnat/s-pack69.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack69.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack69.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 6 9                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 69
+ 
+ package System.Pack_69 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 69;
+ 
+    type Bits_69 is mod 2 ** Bits;
+    for Bits_69'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_69
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_69 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_69
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_69;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_69;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack70.adb gcc-11.1.0/gcc/ada/libgnat/s-pack70.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack70.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack70.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 0                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_70 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_70;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_70 or SetU_70 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_70 --
+    ------------
+ 
+    function Get_70
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_70
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_70;
+ 
+    -------------
+    -- GetU_70 --
+    -------------
+ 
+    function GetU_70
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_70
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_70;
+ 
+    ------------
+    -- Set_70 --
+    ------------
+ 
+    procedure Set_70
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_70;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_70;
+ 
+    -------------
+    -- SetU_70 --
+    -------------
+ 
+    procedure SetU_70
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_70;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_70;
+ 
+ end System.Pack_70;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack70.ads gcc-11.1.0/gcc/ada/libgnat/s-pack70.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack70.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack70.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 0                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 70
+ 
+ package System.Pack_70 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 70;
+ 
+    type Bits_70 is mod 2 ** Bits;
+    for Bits_70'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_70
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_70 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_70
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_70;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_70
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_70 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_70
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_70;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_70;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack71.adb gcc-11.1.0/gcc/ada/libgnat/s-pack71.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack71.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack71.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 1                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_71 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_71;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_71 --
+    ------------
+ 
+    function Get_71
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_71
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_71;
+ 
+    ------------
+    -- Set_71 --
+    ------------
+ 
+    procedure Set_71
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_71;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_71;
+ 
+ end System.Pack_71;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack71.ads gcc-11.1.0/gcc/ada/libgnat/s-pack71.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack71.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack71.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 1                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 71
+ 
+ package System.Pack_71 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 71;
+ 
+    type Bits_71 is mod 2 ** Bits;
+    for Bits_71'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_71
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_71 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_71
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_71;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_71;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack72.adb gcc-11.1.0/gcc/ada/libgnat/s-pack72.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack72.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack72.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 2                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_72 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_72;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_72 or SetU_72 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_72 --
+    ------------
+ 
+    function Get_72
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_72
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_72;
+ 
+    -------------
+    -- GetU_72 --
+    -------------
+ 
+    function GetU_72
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_72
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_72;
+ 
+    ------------
+    -- Set_72 --
+    ------------
+ 
+    procedure Set_72
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_72;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_72;
+ 
+    -------------
+    -- SetU_72 --
+    -------------
+ 
+    procedure SetU_72
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_72;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_72;
+ 
+ end System.Pack_72;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack72.ads gcc-11.1.0/gcc/ada/libgnat/s-pack72.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack72.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack72.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 2                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 72
+ 
+ package System.Pack_72 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 72;
+ 
+    type Bits_72 is mod 2 ** Bits;
+    for Bits_72'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_72
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_72 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_72
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_72;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_72
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_72 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_72
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_72;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_72;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack73.adb gcc-11.1.0/gcc/ada/libgnat/s-pack73.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack73.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack73.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 3                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_73 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_73;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_73 --
+    ------------
+ 
+    function Get_73
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_73
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_73;
+ 
+    ------------
+    -- Set_73 --
+    ------------
+ 
+    procedure Set_73
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_73;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_73;
+ 
+ end System.Pack_73;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack73.ads gcc-11.1.0/gcc/ada/libgnat/s-pack73.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack73.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack73.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 3                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 73
+ 
+ package System.Pack_73 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 73;
+ 
+    type Bits_73 is mod 2 ** Bits;
+    for Bits_73'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_73
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_73 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_73
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_73;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_73;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack74.adb gcc-11.1.0/gcc/ada/libgnat/s-pack74.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack74.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack74.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 4                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_74 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_74;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_74 or SetU_74 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_74 --
+    ------------
+ 
+    function Get_74
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_74
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_74;
+ 
+    -------------
+    -- GetU_74 --
+    -------------
+ 
+    function GetU_74
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_74
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_74;
+ 
+    ------------
+    -- Set_74 --
+    ------------
+ 
+    procedure Set_74
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_74;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_74;
+ 
+    -------------
+    -- SetU_74 --
+    -------------
+ 
+    procedure SetU_74
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_74;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_74;
+ 
+ end System.Pack_74;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack74.ads gcc-11.1.0/gcc/ada/libgnat/s-pack74.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack74.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack74.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 4                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 74
+ 
+ package System.Pack_74 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 74;
+ 
+    type Bits_74 is mod 2 ** Bits;
+    for Bits_74'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_74
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_74 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_74
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_74;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_74
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_74 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_74
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_74;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_74;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack75.adb gcc-11.1.0/gcc/ada/libgnat/s-pack75.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack75.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack75.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 5                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_75 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_75;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_75 --
+    ------------
+ 
+    function Get_75
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_75
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_75;
+ 
+    ------------
+    -- Set_75 --
+    ------------
+ 
+    procedure Set_75
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_75;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_75;
+ 
+ end System.Pack_75;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack75.ads gcc-11.1.0/gcc/ada/libgnat/s-pack75.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack75.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack75.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 5                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 75
+ 
+ package System.Pack_75 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 75;
+ 
+    type Bits_75 is mod 2 ** Bits;
+    for Bits_75'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_75
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_75 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_75
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_75;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_75;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack76.adb gcc-11.1.0/gcc/ada/libgnat/s-pack76.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack76.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack76.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 6                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_76 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_76;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_76 or SetU_76 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_76 --
+    ------------
+ 
+    function Get_76
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_76
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_76;
+ 
+    -------------
+    -- GetU_76 --
+    -------------
+ 
+    function GetU_76
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_76
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_76;
+ 
+    ------------
+    -- Set_76 --
+    ------------
+ 
+    procedure Set_76
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_76;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_76;
+ 
+    -------------
+    -- SetU_76 --
+    -------------
+ 
+    procedure SetU_76
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_76;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_76;
+ 
+ end System.Pack_76;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack76.ads gcc-11.1.0/gcc/ada/libgnat/s-pack76.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack76.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack76.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 6                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 76
+ 
+ package System.Pack_76 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 76;
+ 
+    type Bits_76 is mod 2 ** Bits;
+    for Bits_76'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_76
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_76 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_76
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_76;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_76
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_76 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_76
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_76;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_76;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack77.adb gcc-11.1.0/gcc/ada/libgnat/s-pack77.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack77.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack77.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 7                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_77 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_77;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_77 --
+    ------------
+ 
+    function Get_77
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_77
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_77;
+ 
+    ------------
+    -- Set_77 --
+    ------------
+ 
+    procedure Set_77
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_77;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_77;
+ 
+ end System.Pack_77;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack77.ads gcc-11.1.0/gcc/ada/libgnat/s-pack77.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack77.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack77.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 7                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 77
+ 
+ package System.Pack_77 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 77;
+ 
+    type Bits_77 is mod 2 ** Bits;
+    for Bits_77'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_77
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_77 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_77
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_77;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_77;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack78.adb gcc-11.1.0/gcc/ada/libgnat/s-pack78.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack78.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack78.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 8                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_78 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_78;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_78 or SetU_78 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_78 --
+    ------------
+ 
+    function Get_78
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_78
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_78;
+ 
+    -------------
+    -- GetU_78 --
+    -------------
+ 
+    function GetU_78
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_78
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_78;
+ 
+    ------------
+    -- Set_78 --
+    ------------
+ 
+    procedure Set_78
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_78;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_78;
+ 
+    -------------
+    -- SetU_78 --
+    -------------
+ 
+    procedure SetU_78
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_78;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_78;
+ 
+ end System.Pack_78;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack78.ads gcc-11.1.0/gcc/ada/libgnat/s-pack78.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack78.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack78.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 8                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 78
+ 
+ package System.Pack_78 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 78;
+ 
+    type Bits_78 is mod 2 ** Bits;
+    for Bits_78'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_78
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_78 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_78
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_78;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_78
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_78 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_78
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_78;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_78;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack79.adb gcc-11.1.0/gcc/ada/libgnat/s-pack79.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack79.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack79.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 9                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_79 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_79;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_79 --
+    ------------
+ 
+    function Get_79
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_79
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_79;
+ 
+    ------------
+    -- Set_79 --
+    ------------
+ 
+    procedure Set_79
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_79;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_79;
+ 
+ end System.Pack_79;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack79.ads gcc-11.1.0/gcc/ada/libgnat/s-pack79.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack79.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack79.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 7 9                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 79
+ 
+ package System.Pack_79 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 79;
+ 
+    type Bits_79 is mod 2 ** Bits;
+    for Bits_79'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_79
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_79 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_79
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_79;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_79;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack80.adb gcc-11.1.0/gcc/ada/libgnat/s-pack80.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack80.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack80.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 0                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_80 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_80;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_80 or SetU_80 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_80 --
+    ------------
+ 
+    function Get_80
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_80
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_80;
+ 
+    -------------
+    -- GetU_80 --
+    -------------
+ 
+    function GetU_80
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_80
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_80;
+ 
+    ------------
+    -- Set_80 --
+    ------------
+ 
+    procedure Set_80
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_80;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_80;
+ 
+    -------------
+    -- SetU_80 --
+    -------------
+ 
+    procedure SetU_80
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_80;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_80;
+ 
+ end System.Pack_80;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack80.ads gcc-11.1.0/gcc/ada/libgnat/s-pack80.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack80.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack80.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 0                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 80
+ 
+ package System.Pack_80 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 80;
+ 
+    type Bits_80 is mod 2 ** Bits;
+    for Bits_80'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_80
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_80 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_80
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_80;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_80
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_80 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_80
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_80;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_80;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack81.adb gcc-11.1.0/gcc/ada/libgnat/s-pack81.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack81.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack81.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 1                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_81 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_81;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_81 --
+    ------------
+ 
+    function Get_81
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_81
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_81;
+ 
+    ------------
+    -- Set_81 --
+    ------------
+ 
+    procedure Set_81
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_81;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_81;
+ 
+ end System.Pack_81;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack81.ads gcc-11.1.0/gcc/ada/libgnat/s-pack81.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack81.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack81.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 1                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 81
+ 
+ package System.Pack_81 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 81;
+ 
+    type Bits_81 is mod 2 ** Bits;
+    for Bits_81'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_81
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_81 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_81
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_81;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_81;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack82.adb gcc-11.1.0/gcc/ada/libgnat/s-pack82.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack82.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack82.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 2                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_82 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_82;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_82 or SetU_82 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_82 --
+    ------------
+ 
+    function Get_82
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_82
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_82;
+ 
+    -------------
+    -- GetU_82 --
+    -------------
+ 
+    function GetU_82
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_82
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_82;
+ 
+    ------------
+    -- Set_82 --
+    ------------
+ 
+    procedure Set_82
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_82;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_82;
+ 
+    -------------
+    -- SetU_82 --
+    -------------
+ 
+    procedure SetU_82
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_82;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_82;
+ 
+ end System.Pack_82;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack82.ads gcc-11.1.0/gcc/ada/libgnat/s-pack82.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack82.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack82.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 2                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 82
+ 
+ package System.Pack_82 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 82;
+ 
+    type Bits_82 is mod 2 ** Bits;
+    for Bits_82'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_82
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_82 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_82
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_82;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_82
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_82 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_82
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_82;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_82;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack83.adb gcc-11.1.0/gcc/ada/libgnat/s-pack83.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack83.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack83.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 3                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_83 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_83;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_83 --
+    ------------
+ 
+    function Get_83
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_83
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_83;
+ 
+    ------------
+    -- Set_83 --
+    ------------
+ 
+    procedure Set_83
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_83;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_83;
+ 
+ end System.Pack_83;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack83.ads gcc-11.1.0/gcc/ada/libgnat/s-pack83.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack83.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack83.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 3                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 83
+ 
+ package System.Pack_83 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 83;
+ 
+    type Bits_83 is mod 2 ** Bits;
+    for Bits_83'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_83
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_83 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_83
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_83;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_83;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack84.adb gcc-11.1.0/gcc/ada/libgnat/s-pack84.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack84.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack84.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 4                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_84 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_84;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_84 or SetU_84 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_84 --
+    ------------
+ 
+    function Get_84
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_84
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_84;
+ 
+    -------------
+    -- GetU_84 --
+    -------------
+ 
+    function GetU_84
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_84
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_84;
+ 
+    ------------
+    -- Set_84 --
+    ------------
+ 
+    procedure Set_84
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_84;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_84;
+ 
+    -------------
+    -- SetU_84 --
+    -------------
+ 
+    procedure SetU_84
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_84;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_84;
+ 
+ end System.Pack_84;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack84.ads gcc-11.1.0/gcc/ada/libgnat/s-pack84.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack84.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack84.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 4                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 84
+ 
+ package System.Pack_84 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 84;
+ 
+    type Bits_84 is mod 2 ** Bits;
+    for Bits_84'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_84
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_84 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_84
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_84;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_84
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_84 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_84
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_84;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_84;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack85.adb gcc-11.1.0/gcc/ada/libgnat/s-pack85.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack85.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack85.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 5                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_85 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_85;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_85 --
+    ------------
+ 
+    function Get_85
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_85
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_85;
+ 
+    ------------
+    -- Set_85 --
+    ------------
+ 
+    procedure Set_85
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_85;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_85;
+ 
+ end System.Pack_85;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack85.ads gcc-11.1.0/gcc/ada/libgnat/s-pack85.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack85.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack85.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 5                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 85
+ 
+ package System.Pack_85 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 85;
+ 
+    type Bits_85 is mod 2 ** Bits;
+    for Bits_85'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_85
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_85 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_85
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_85;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_85;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack86.adb gcc-11.1.0/gcc/ada/libgnat/s-pack86.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack86.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack86.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 6                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_86 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_86;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_86 or SetU_86 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_86 --
+    ------------
+ 
+    function Get_86
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_86
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_86;
+ 
+    -------------
+    -- GetU_86 --
+    -------------
+ 
+    function GetU_86
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_86
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_86;
+ 
+    ------------
+    -- Set_86 --
+    ------------
+ 
+    procedure Set_86
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_86;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_86;
+ 
+    -------------
+    -- SetU_86 --
+    -------------
+ 
+    procedure SetU_86
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_86;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_86;
+ 
+ end System.Pack_86;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack86.ads gcc-11.1.0/gcc/ada/libgnat/s-pack86.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack86.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack86.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 6                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 86
+ 
+ package System.Pack_86 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 86;
+ 
+    type Bits_86 is mod 2 ** Bits;
+    for Bits_86'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_86
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_86 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_86
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_86;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_86
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_86 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_86
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_86;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_86;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack87.adb gcc-11.1.0/gcc/ada/libgnat/s-pack87.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack87.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack87.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 7                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_87 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_87;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_87 --
+    ------------
+ 
+    function Get_87
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_87
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_87;
+ 
+    ------------
+    -- Set_87 --
+    ------------
+ 
+    procedure Set_87
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_87;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_87;
+ 
+ end System.Pack_87;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack87.ads gcc-11.1.0/gcc/ada/libgnat/s-pack87.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack87.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack87.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 7                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 87
+ 
+ package System.Pack_87 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 87;
+ 
+    type Bits_87 is mod 2 ** Bits;
+    for Bits_87'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_87
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_87 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_87
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_87;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_87;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack88.adb gcc-11.1.0/gcc/ada/libgnat/s-pack88.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack88.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack88.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 8                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_88 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_88;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_88 or SetU_88 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_88 --
+    ------------
+ 
+    function Get_88
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_88
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_88;
+ 
+    -------------
+    -- GetU_88 --
+    -------------
+ 
+    function GetU_88
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_88
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_88;
+ 
+    ------------
+    -- Set_88 --
+    ------------
+ 
+    procedure Set_88
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_88;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_88;
+ 
+    -------------
+    -- SetU_88 --
+    -------------
+ 
+    procedure SetU_88
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_88;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_88;
+ 
+ end System.Pack_88;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack88.ads gcc-11.1.0/gcc/ada/libgnat/s-pack88.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack88.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack88.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 8                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 88
+ 
+ package System.Pack_88 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 88;
+ 
+    type Bits_88 is mod 2 ** Bits;
+    for Bits_88'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_88
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_88 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_88
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_88;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_88
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_88 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_88
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_88;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_88;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack89.adb gcc-11.1.0/gcc/ada/libgnat/s-pack89.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack89.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack89.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 9                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_89 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_89;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_89 --
+    ------------
+ 
+    function Get_89
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_89
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_89;
+ 
+    ------------
+    -- Set_89 --
+    ------------
+ 
+    procedure Set_89
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_89;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_89;
+ 
+ end System.Pack_89;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack89.ads gcc-11.1.0/gcc/ada/libgnat/s-pack89.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack89.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack89.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 8 9                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 89
+ 
+ package System.Pack_89 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 89;
+ 
+    type Bits_89 is mod 2 ** Bits;
+    for Bits_89'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_89
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_89 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_89
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_89;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_89;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack90.adb gcc-11.1.0/gcc/ada/libgnat/s-pack90.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack90.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack90.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 0                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_90 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_90;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_90 or SetU_90 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_90 --
+    ------------
+ 
+    function Get_90
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_90
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_90;
+ 
+    -------------
+    -- GetU_90 --
+    -------------
+ 
+    function GetU_90
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_90
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_90;
+ 
+    ------------
+    -- Set_90 --
+    ------------
+ 
+    procedure Set_90
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_90;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_90;
+ 
+    -------------
+    -- SetU_90 --
+    -------------
+ 
+    procedure SetU_90
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_90;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_90;
+ 
+ end System.Pack_90;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack90.ads gcc-11.1.0/gcc/ada/libgnat/s-pack90.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack90.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack90.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 0                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 90
+ 
+ package System.Pack_90 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 90;
+ 
+    type Bits_90 is mod 2 ** Bits;
+    for Bits_90'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_90
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_90 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_90
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_90;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_90
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_90 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_90
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_90;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_90;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack91.adb gcc-11.1.0/gcc/ada/libgnat/s-pack91.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack91.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack91.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 1                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_91 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_91;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_91 --
+    ------------
+ 
+    function Get_91
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_91
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_91;
+ 
+    ------------
+    -- Set_91 --
+    ------------
+ 
+    procedure Set_91
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_91;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_91;
+ 
+ end System.Pack_91;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack91.ads gcc-11.1.0/gcc/ada/libgnat/s-pack91.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack91.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack91.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 1                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 91
+ 
+ package System.Pack_91 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 91;
+ 
+    type Bits_91 is mod 2 ** Bits;
+    for Bits_91'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_91
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_91 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_91
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_91;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_91;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack92.adb gcc-11.1.0/gcc/ada/libgnat/s-pack92.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack92.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack92.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 2                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_92 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_92;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_92 or SetU_92 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_92 --
+    ------------
+ 
+    function Get_92
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_92
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_92;
+ 
+    -------------
+    -- GetU_92 --
+    -------------
+ 
+    function GetU_92
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_92
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_92;
+ 
+    ------------
+    -- Set_92 --
+    ------------
+ 
+    procedure Set_92
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_92;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_92;
+ 
+    -------------
+    -- SetU_92 --
+    -------------
+ 
+    procedure SetU_92
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_92;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_92;
+ 
+ end System.Pack_92;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack92.ads gcc-11.1.0/gcc/ada/libgnat/s-pack92.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack92.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack92.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 2                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 92
+ 
+ package System.Pack_92 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 92;
+ 
+    type Bits_92 is mod 2 ** Bits;
+    for Bits_92'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_92
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_92 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_92
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_92;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_92
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_92 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_92
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_92;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_92;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack93.adb gcc-11.1.0/gcc/ada/libgnat/s-pack93.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack93.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack93.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 3                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_93 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_93;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_93 --
+    ------------
+ 
+    function Get_93
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_93
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_93;
+ 
+    ------------
+    -- Set_93 --
+    ------------
+ 
+    procedure Set_93
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_93;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_93;
+ 
+ end System.Pack_93;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack93.ads gcc-11.1.0/gcc/ada/libgnat/s-pack93.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack93.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack93.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 3                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 93
+ 
+ package System.Pack_93 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 93;
+ 
+    type Bits_93 is mod 2 ** Bits;
+    for Bits_93'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_93
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_93 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_93
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_93;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_93;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack94.adb gcc-11.1.0/gcc/ada/libgnat/s-pack94.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack94.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack94.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 4                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_94 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_94;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_94 or SetU_94 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_94 --
+    ------------
+ 
+    function Get_94
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_94
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_94;
+ 
+    -------------
+    -- GetU_94 --
+    -------------
+ 
+    function GetU_94
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_94
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_94;
+ 
+    ------------
+    -- Set_94 --
+    ------------
+ 
+    procedure Set_94
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_94;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_94;
+ 
+    -------------
+    -- SetU_94 --
+    -------------
+ 
+    procedure SetU_94
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_94;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_94;
+ 
+ end System.Pack_94;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack94.ads gcc-11.1.0/gcc/ada/libgnat/s-pack94.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack94.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack94.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 4                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 94
+ 
+ package System.Pack_94 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 94;
+ 
+    type Bits_94 is mod 2 ** Bits;
+    for Bits_94'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_94
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_94 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_94
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_94;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_94
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_94 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_94
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_94;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_94;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack95.adb gcc-11.1.0/gcc/ada/libgnat/s-pack95.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack95.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack95.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 5                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_95 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_95;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_95 --
+    ------------
+ 
+    function Get_95
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_95
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_95;
+ 
+    ------------
+    -- Set_95 --
+    ------------
+ 
+    procedure Set_95
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_95;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_95;
+ 
+ end System.Pack_95;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack95.ads gcc-11.1.0/gcc/ada/libgnat/s-pack95.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack95.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack95.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 5                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 95
+ 
+ package System.Pack_95 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 95;
+ 
+    type Bits_95 is mod 2 ** Bits;
+    for Bits_95'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_95
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_95 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_95
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_95;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_95;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack96.adb gcc-11.1.0/gcc/ada/libgnat/s-pack96.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack96.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack96.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 6                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_96 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_96;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_96 or SetU_96 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_96 --
+    ------------
+ 
+    function Get_96
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_96
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_96;
+ 
+    -------------
+    -- GetU_96 --
+    -------------
+ 
+    function GetU_96
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_96
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_96;
+ 
+    ------------
+    -- Set_96 --
+    ------------
+ 
+    procedure Set_96
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_96;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_96;
+ 
+    -------------
+    -- SetU_96 --
+    -------------
+ 
+    procedure SetU_96
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_96;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_96;
+ 
+ end System.Pack_96;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack96.ads gcc-11.1.0/gcc/ada/libgnat/s-pack96.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack96.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack96.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 6                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 96
+ 
+ package System.Pack_96 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 96;
+ 
+    type Bits_96 is mod 2 ** Bits;
+    for Bits_96'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_96
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_96 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_96
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_96;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_96
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_96 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_96
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_96;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_96;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack97.adb gcc-11.1.0/gcc/ada/libgnat/s-pack97.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack97.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack97.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 7                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_97 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_97;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_97 --
+    ------------
+ 
+    function Get_97
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_97
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_97;
+ 
+    ------------
+    -- Set_97 --
+    ------------
+ 
+    procedure Set_97
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_97;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_97;
+ 
+ end System.Pack_97;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack97.ads gcc-11.1.0/gcc/ada/libgnat/s-pack97.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack97.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack97.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 7                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 97
+ 
+ package System.Pack_97 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 97;
+ 
+    type Bits_97 is mod 2 ** Bits;
+    for Bits_97'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_97
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_97 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_97
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_97;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_97;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack98.adb gcc-11.1.0/gcc/ada/libgnat/s-pack98.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack98.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack98.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,250 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 8                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_98 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_98;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    --  The following declarations are for the case where the address
+    --  passed to GetU_98 or SetU_98 is not guaranteed to be aligned.
+    --  These routines are used when the packed array is itself a
+    --  component of a packed record, and therefore may not be aligned.
+ 
+    type ClusterU is new Cluster;
+    for ClusterU'Alignment use 1;
+ 
+    type ClusterU_Ref is access ClusterU;
+ 
+    type Rev_ClusterU is new ClusterU
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_ClusterU_Ref is access Rev_ClusterU;
+ 
+    ------------
+    -- Get_98 --
+    ------------
+ 
+    function Get_98
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_98
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_98;
+ 
+    -------------
+    -- GetU_98 --
+    -------------
+ 
+    function GetU_98
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_98
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end GetU_98;
+ 
+    ------------
+    -- Set_98 --
+    ------------
+ 
+    procedure Set_98
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_98;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_98;
+ 
+    -------------
+    -- SetU_98 --
+    -------------
+ 
+    procedure SetU_98
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_98;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : ClusterU_Ref     with Address => A'Address, Import;
+       RC : Rev_ClusterU_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end SetU_98;
+ 
+ end System.Pack_98;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack98.ads gcc-11.1.0/gcc/ada/libgnat/s-pack98.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack98.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack98.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 8                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 98
+ 
+ package System.Pack_98 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 98;
+ 
+    type Bits_98 is mod 2 ** Bits;
+    for Bits_98'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_98
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_98 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_98
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_98;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+    function GetU_98
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_98 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned. This version
+    --  is used when Arr may represent an unaligned address.
+ 
+    procedure SetU_98
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_98;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value. This version
+    --  is used when Arr may represent an unaligned address
+ 
+ end System.Pack_98;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack99.adb gcc-11.1.0/gcc/ada/libgnat/s-pack99.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pack99.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack99.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,157 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 9                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Storage_Elements;
+ with System.Unsigned_Types;
+ 
+ package body System.Pack_99 is
+ 
+    subtype Bit_Order is System.Bit_Order;
+    Reverse_Bit_Order : constant Bit_Order :=
+      Bit_Order'Val (1 - Bit_Order'Pos (System.Default_Bit_Order));
+ 
+    subtype Ofs is System.Storage_Elements.Storage_Offset;
+    subtype Uns is System.Unsigned_Types.Unsigned;
+    subtype N07 is System.Unsigned_Types.Unsigned range 0 .. 7;
+ 
+    use type System.Storage_Elements.Storage_Offset;
+    use type System.Unsigned_Types.Unsigned;
+ 
+    type Cluster is record
+       E0, E1, E2, E3, E4, E5, E6, E7 : Bits_99;
+    end record;
+ 
+    for Cluster use record
+       E0 at 0 range 0 * Bits .. 0 * Bits + Bits - 1;
+       E1 at 0 range 1 * Bits .. 1 * Bits + Bits - 1;
+       E2 at 0 range 2 * Bits .. 2 * Bits + Bits - 1;
+       E3 at 0 range 3 * Bits .. 3 * Bits + Bits - 1;
+       E4 at 0 range 4 * Bits .. 4 * Bits + Bits - 1;
+       E5 at 0 range 5 * Bits .. 5 * Bits + Bits - 1;
+       E6 at 0 range 6 * Bits .. 6 * Bits + Bits - 1;
+       E7 at 0 range 7 * Bits .. 7 * Bits + Bits - 1;
+    end record;
+ 
+    for Cluster'Size use Bits * 8;
+ 
+    for Cluster'Alignment use Integer'Min (Standard'Maximum_Alignment,
+      1 +
+      1 * Boolean'Pos (Bits mod 2 = 0) +
+      2 * Boolean'Pos (Bits mod 4 = 0));
+    --  Use maximum possible alignment, given the bit field size, since this
+    --  will result in the most efficient code possible for the field.
+ 
+    type Cluster_Ref is access Cluster;
+ 
+    type Rev_Cluster is new Cluster
+      with Bit_Order            => Reverse_Bit_Order,
+           Scalar_Storage_Order => Reverse_Bit_Order;
+    type Rev_Cluster_Ref is access Rev_Cluster;
+ 
+    ------------
+    -- Get_99 --
+    ------------
+ 
+    function Get_99
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_99
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => return RC.E0;
+             when 1 => return RC.E1;
+             when 2 => return RC.E2;
+             when 3 => return RC.E3;
+             when 4 => return RC.E4;
+             when 5 => return RC.E5;
+             when 6 => return RC.E6;
+             when 7 => return RC.E7;
+          end case;
+ 
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => return C.E0;
+             when 1 => return C.E1;
+             when 2 => return C.E2;
+             when 3 => return C.E3;
+             when 4 => return C.E4;
+             when 5 => return C.E5;
+             when 6 => return C.E6;
+             when 7 => return C.E7;
+          end case;
+       end if;
+    end Get_99;
+ 
+    ------------
+    -- Set_99 --
+    ------------
+ 
+    procedure Set_99
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_99;
+       Rev_SSO : Boolean)
+    is
+       A  : constant System.Address := Arr + Bits * Ofs (Uns (N) / 8);
+       C  : Cluster_Ref     with Address => A'Address, Import;
+       RC : Rev_Cluster_Ref with Address => A'Address, Import;
+    begin
+       if Rev_SSO then
+          case N07 (Uns (N) mod 8) is
+             when 0 => RC.E0 := E;
+             when 1 => RC.E1 := E;
+             when 2 => RC.E2 := E;
+             when 3 => RC.E3 := E;
+             when 4 => RC.E4 := E;
+             when 5 => RC.E5 := E;
+             when 6 => RC.E6 := E;
+             when 7 => RC.E7 := E;
+          end case;
+       else
+          case N07 (Uns (N) mod 8) is
+             when 0 => C.E0 := E;
+             when 1 => C.E1 := E;
+             when 2 => C.E2 := E;
+             when 3 => C.E3 := E;
+             when 4 => C.E4 := E;
+             when 5 => C.E5 := E;
+             when 6 => C.E6 := E;
+             when 7 => C.E7 := E;
+          end case;
+       end if;
+    end Set_99;
+ 
+ end System.Pack_99;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pack99.ads gcc-11.1.0/gcc/ada/libgnat/s-pack99.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pack99.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-pack99.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . P A C K _ 9 9                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Handling of packed arrays with Component_Size = 99
+ 
+ package System.Pack_99 is
+    pragma Preelaborate;
+ 
+    Bits : constant := 99;
+ 
+    type Bits_99 is mod 2 ** Bits;
+    for Bits_99'Size use Bits;
+ 
+    --  In all subprograms below, Rev_SSO is set True if the array has the
+    --  non-default scalar storage order.
+ 
+    function Get_99
+      (Arr     : System.Address;
+       N       : Natural;
+       Rev_SSO : Boolean) return Bits_99 with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is extracted and returned.
+ 
+    procedure Set_99
+      (Arr     : System.Address;
+       N       : Natural;
+       E       : Bits_99;
+       Rev_SSO : Boolean) with Inline;
+    --  Arr is the address of the packed array, N is the zero-based
+    --  subscript. This element is set to the given value.
+ 
+ end System.Pack_99;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-parame.adb gcc-11.1.0/gcc/ada/libgnat/s-parame.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-parame.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-parame.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-parame.ads gcc-11.1.0/gcc/ada/libgnat/s-parame.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-parame.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-parame.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Parameters is
*** 94,100 ****
  
     Runtime_Default_Sec_Stack_Size : constant Size_Type := 10 * 1024;
     --  The run-time chosen default size for secondary stacks that may be
!    --  overriden by the user with the use of binder -D switch.
  
     Sec_Stack_Dynamic : constant Boolean := True;
     --  Indicates if secondary stacks can grow and shrink at run-time. If False,
--- 94,100 ----
  
     Runtime_Default_Sec_Stack_Size : constant Size_Type := 10 * 1024;
     --  The run-time chosen default size for secondary stacks that may be
!    --  overridden by the user with the use of binder -D switch.
  
     Sec_Stack_Dynamic : constant Boolean := True;
     --  Indicates if secondary stacks can grow and shrink at run-time. If False,
*************** package System.Parameters is
*** 147,165 ****
     --  allow some optimizations and fine tuning within the tasking run time
     --  based on restrictions on the tasking features.
  
-    ----------------------
-    -- Locking Strategy --
-    ----------------------
- 
-    Single_Lock : constant Boolean := False;
-    --  Indicates whether a single lock should be used within the tasking
-    --  run-time to protect internal structures. If True, a single lock
-    --  will be used, meaning less locking/unlocking operations, but also
-    --  more global contention. In general, Single_Lock should be set to
-    --  True on single processor machines, and to False to multi-processor
-    --  systems, but this can vary from application to application and also
-    --  depends on the scheduling policy.
- 
     -------------------
     -- Task Abortion --
     -------------------
--- 147,152 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-parame__ae653.ads gcc-11.1.0/gcc/ada/libgnat/s-parame__ae653.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-parame__ae653.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-parame__ae653.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Parameters is
*** 94,100 ****
  
     Runtime_Default_Sec_Stack_Size : constant Size_Type := 10 * 1024;
     --  The run-time chosen default size for secondary stacks that may be
!    --  overriden by the user with the use of binder -D switch.
  
     Sec_Stack_Dynamic : constant Boolean := False;
     --  Indicates if secondary stacks can grow and shrink at run-time. If False,
--- 94,100 ----
  
     Runtime_Default_Sec_Stack_Size : constant Size_Type := 10 * 1024;
     --  The run-time chosen default size for secondary stacks that may be
!    --  overridden by the user with the use of binder -D switch.
  
     Sec_Stack_Dynamic : constant Boolean := False;
     --  Indicates if secondary stacks can grow and shrink at run-time. If False,
*************** package System.Parameters is
*** 147,165 ****
     --  allow some optimizations and fine tuning within the tasking run time
     --  based on restrictions on the tasking features.
  
-    ----------------------
-    -- Locking Strategy --
-    ----------------------
- 
-    Single_Lock : constant Boolean := False;
-    --  Indicates whether a single lock should be used within the tasking
-    --  run-time to protect internal structures. If True, a single lock
-    --  will be used, meaning less locking/unlocking operations, but also
-    --  more global contention. In general, Single_Lock should be set to
-    --  True on single processor machines, and to False to multi-processor
-    --  systems, but this can vary from application to application and also
-    --  depends on the scheduling policy.
- 
     -------------------
     -- Task Abortion --
     -------------------
--- 147,152 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-parame__hpux.ads gcc-11.1.0/gcc/ada/libgnat/s-parame__hpux.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-parame__hpux.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-parame__hpux.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Parameters is
*** 92,98 ****
  
     Runtime_Default_Sec_Stack_Size : constant Size_Type := 10 * 1024;
     --  The run-time chosen default size for secondary stacks that may be
!    --  overriden by the user with the use of binder -D switch.
  
     Sec_Stack_Dynamic : constant Boolean := True;
     --  Indicates if secondary stacks can grow and shrink at run-time. If False,
--- 92,98 ----
  
     Runtime_Default_Sec_Stack_Size : constant Size_Type := 10 * 1024;
     --  The run-time chosen default size for secondary stacks that may be
!    --  overridden by the user with the use of binder -D switch.
  
     Sec_Stack_Dynamic : constant Boolean := True;
     --  Indicates if secondary stacks can grow and shrink at run-time. If False,
*************** package System.Parameters is
*** 145,163 ****
     --  allow some optimizations and fine tuning within the tasking run time
     --  based on restrictions on the tasking features.
  
-    ----------------------
-    -- Locking Strategy --
-    ----------------------
- 
-    Single_Lock : constant Boolean := False;
-    --  Indicates whether a single lock should be used within the tasking
-    --  run-time to protect internal structures. If True, a single lock
-    --  will be used, meaning less locking/unlocking operations, but also
-    --  more global contention. In general, Single_Lock should be set to
-    --  True on single processor machines, and to False to multi-processor
-    --  systems, but this can vary from application to application and also
-    --  depends on the scheduling policy.
- 
     -------------------
     -- Task Abortion --
     -------------------
--- 145,150 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-parame__rtems.adb gcc-11.1.0/gcc/ada/libgnat/s-parame__rtems.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-parame__rtems.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-parame__rtems.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-parame__vxworks.adb gcc-11.1.0/gcc/ada/libgnat/s-parame__vxworks.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-parame__vxworks.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-parame__vxworks.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-parame__vxworks.ads gcc-11.1.0/gcc/ada/libgnat/s-parame__vxworks.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-parame__vxworks.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-parame__vxworks.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Parameters is
*** 147,165 ****
     --  allow some optimizations and fine tuning within the tasking run time
     --  based on restrictions on the tasking features.
  
-    ----------------------
-    -- Locking Strategy --
-    ----------------------
- 
-    Single_Lock : constant Boolean := False;
-    --  Indicates whether a single lock should be used within the tasking
-    --  run-time to protect internal structures. If True, a single lock
-    --  will be used, meaning less locking/unlocking operations, but also
-    --  more global contention. In general, Single_Lock should be set to
-    --  True on single processor machines, and to False to multi-processor
-    --  systems, but this can vary from application to application and also
-    --  depends on the scheduling policy.
- 
     -------------------
     -- Task Abortion --
     -------------------
--- 147,152 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-parint.adb gcc-11.1.0/gcc/ada/libgnat/s-parint.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-parint.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-parint.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                   (Dummy body for non-distributed case)                  --
  --                                                                          --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                   (Dummy body for non-distributed case)                  --
  --                                                                          --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-parint.ads gcc-11.1.0/gcc/ada/libgnat/s-parint.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-parint.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-parint.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pooglo.adb gcc-11.1.0/gcc/ada/libgnat/s-pooglo.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pooglo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pooglo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pooglo.ads gcc-11.1.0/gcc/ada/libgnat/s-pooglo.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pooglo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pooglo.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pooloc.adb gcc-11.1.0/gcc/ada/libgnat/s-pooloc.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-pooloc.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pooloc.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-pooloc.ads gcc-11.1.0/gcc/ada/libgnat/s-pooloc.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-pooloc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-pooloc.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-poosiz.adb gcc-11.1.0/gcc/ada/libgnat/s-poosiz.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-poosiz.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-poosiz.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-poosiz.ads gcc-11.1.0/gcc/ada/libgnat/s-poosiz.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-poosiz.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-poosiz.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-powflt.ads gcc-11.1.0/gcc/ada/libgnat/s-powflt.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-powflt.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-powflt.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,85 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                    S Y S T E M . P O W T E N _ F L T                     --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --             Copyright (C) 2020, Free Software Foundation, Inc.           --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides a powers of ten table used for real conversions
+ 
+ package System.Powten_Flt is
+    pragma Pure;
+ 
+    Maxpow : constant := 38;
+    --  Largest power of ten representable with Float
+ 
+    Maxpow_Exact : constant := 10;
+    --  Largest power of ten exactly representable with Float. It is equal to
+    --  floor (M * log 2 / log 5), when M is the size of the mantissa (24).
+ 
+    Powten : constant array (0 .. Maxpow) of Float :=
+       (00 => 1.0E+00,
+        01 => 1.0E+01,
+        02 => 1.0E+02,
+        03 => 1.0E+03,
+        04 => 1.0E+04,
+        05 => 1.0E+05,
+        06 => 1.0E+06,
+        07 => 1.0E+07,
+        08 => 1.0E+08,
+        09 => 1.0E+09,
+        10 => 1.0E+10,
+        11 => 1.0E+11,
+        12 => 1.0E+12,
+        13 => 1.0E+13,
+        14 => 1.0E+14,
+        15 => 1.0E+15,
+        16 => 1.0E+16,
+        17 => 1.0E+17,
+        18 => 1.0E+18,
+        19 => 1.0E+19,
+        20 => 1.0E+20,
+        21 => 1.0E+21,
+        22 => 1.0E+22,
+        23 => 1.0E+23,
+        24 => 1.0E+24,
+        25 => 1.0E+25,
+        26 => 1.0E+26,
+        27 => 1.0E+27,
+        28 => 1.0E+28,
+        29 => 1.0E+29,
+        30 => 1.0E+30,
+        31 => 1.0E+31,
+        32 => 1.0E+32,
+        33 => 1.0E+33,
+        34 => 1.0E+34,
+        35 => 1.0E+35,
+        36 => 1.0E+36,
+        37 => 1.0E+37,
+        38 => 1.0E+38);
+ 
+ end System.Powten_Flt;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-powlfl.ads gcc-11.1.0/gcc/ada/libgnat/s-powlfl.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-powlfl.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-powlfl.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,355 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                   S Y S T E M . P O W T E N _ L F L T                    --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --             Copyright (C) 2020, Free Software Foundation, Inc.           --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides a powers of ten table used for real conversions
+ 
+ package System.Powten_LFlt is
+    pragma Pure;
+ 
+    Maxpow : constant := 308;
+    --  Largest power of ten representable with Long_Float
+ 
+    Maxpow_Exact : constant := 22;
+    --  Largest power of ten exactly representable with Long_Float. It is equal
+    --  to floor (M * log 2 / log 5), when M is the size of the mantissa (53).
+ 
+    Powten : constant array (0 .. Maxpow) of Long_Float :=
+       (00 => 1.0E+00,
+        01 => 1.0E+01,
+        02 => 1.0E+02,
+        03 => 1.0E+03,
+        04 => 1.0E+04,
+        05 => 1.0E+05,
+        06 => 1.0E+06,
+        07 => 1.0E+07,
+        08 => 1.0E+08,
+        09 => 1.0E+09,
+        10 => 1.0E+10,
+        11 => 1.0E+11,
+        12 => 1.0E+12,
+        13 => 1.0E+13,
+        14 => 1.0E+14,
+        15 => 1.0E+15,
+        16 => 1.0E+16,
+        17 => 1.0E+17,
+        18 => 1.0E+18,
+        19 => 1.0E+19,
+        20 => 1.0E+20,
+        21 => 1.0E+21,
+        22 => 1.0E+22,
+        23 => 1.0E+23,
+        24 => 1.0E+24,
+        25 => 1.0E+25,
+        26 => 1.0E+26,
+        27 => 1.0E+27,
+        28 => 1.0E+28,
+        29 => 1.0E+29,
+        30 => 1.0E+30,
+        31 => 1.0E+31,
+        32 => 1.0E+32,
+        33 => 1.0E+33,
+        34 => 1.0E+34,
+        35 => 1.0E+35,
+        36 => 1.0E+36,
+        37 => 1.0E+37,
+        38 => 1.0E+38,
+        39 => 1.0E+39,
+        40 => 1.0E+40,
+        41 => 1.0E+41,
+        42 => 1.0E+42,
+        43 => 1.0E+43,
+        44 => 1.0E+44,
+        45 => 1.0E+45,
+        46 => 1.0E+46,
+        47 => 1.0E+47,
+        48 => 1.0E+48,
+        49 => 1.0E+49,
+        50 => 1.0E+50,
+        51 => 1.0E+51,
+        52 => 1.0E+52,
+        53 => 1.0E+53,
+        54 => 1.0E+54,
+        55 => 1.0E+55,
+        56 => 1.0E+56,
+        57 => 1.0E+57,
+        58 => 1.0E+58,
+        59 => 1.0E+59,
+        60 => 1.0E+60,
+        61 => 1.0E+61,
+        62 => 1.0E+62,
+        63 => 1.0E+63,
+        64 => 1.0E+64,
+        65 => 1.0E+65,
+        66 => 1.0E+66,
+        67 => 1.0E+67,
+        68 => 1.0E+68,
+        69 => 1.0E+69,
+        70 => 1.0E+70,
+        71 => 1.0E+71,
+        72 => 1.0E+72,
+        73 => 1.0E+73,
+        74 => 1.0E+74,
+        75 => 1.0E+75,
+        76 => 1.0E+76,
+        77 => 1.0E+77,
+        78 => 1.0E+78,
+        79 => 1.0E+79,
+        80 => 1.0E+80,
+        81 => 1.0E+81,
+        82 => 1.0E+82,
+        83 => 1.0E+83,
+        84 => 1.0E+84,
+        85 => 1.0E+85,
+        86 => 1.0E+86,
+        87 => 1.0E+87,
+        88 => 1.0E+88,
+        89 => 1.0E+89,
+        90 => 1.0E+90,
+        91 => 1.0E+91,
+        92 => 1.0E+92,
+        93 => 1.0E+93,
+        94 => 1.0E+94,
+        95 => 1.0E+95,
+        96 => 1.0E+96,
+        97 => 1.0E+97,
+        98 => 1.0E+98,
+        99 => 1.0E+99,
+        100 => 1.0E+100,
+        101 => 1.0E+101,
+        102 => 1.0E+102,
+        103 => 1.0E+103,
+        104 => 1.0E+104,
+        105 => 1.0E+105,
+        106 => 1.0E+106,
+        107 => 1.0E+107,
+        108 => 1.0E+108,
+        109 => 1.0E+109,
+        110 => 1.0E+110,
+        111 => 1.0E+111,
+        112 => 1.0E+112,
+        113 => 1.0E+113,
+        114 => 1.0E+114,
+        115 => 1.0E+115,
+        116 => 1.0E+116,
+        117 => 1.0E+117,
+        118 => 1.0E+118,
+        119 => 1.0E+119,
+        120 => 1.0E+120,
+        121 => 1.0E+121,
+        122 => 1.0E+122,
+        123 => 1.0E+123,
+        124 => 1.0E+124,
+        125 => 1.0E+125,
+        126 => 1.0E+126,
+        127 => 1.0E+127,
+        128 => 1.0E+128,
+        129 => 1.0E+129,
+        130 => 1.0E+130,
+        131 => 1.0E+131,
+        132 => 1.0E+132,
+        133 => 1.0E+133,
+        134 => 1.0E+134,
+        135 => 1.0E+135,
+        136 => 1.0E+136,
+        137 => 1.0E+137,
+        138 => 1.0E+138,
+        139 => 1.0E+139,
+        140 => 1.0E+140,
+        141 => 1.0E+141,
+        142 => 1.0E+142,
+        143 => 1.0E+143,
+        144 => 1.0E+144,
+        145 => 1.0E+145,
+        146 => 1.0E+146,
+        147 => 1.0E+147,
+        148 => 1.0E+148,
+        149 => 1.0E+149,
+        150 => 1.0E+150,
+        151 => 1.0E+151,
+        152 => 1.0E+152,
+        153 => 1.0E+153,
+        154 => 1.0E+154,
+        155 => 1.0E+155,
+        156 => 1.0E+156,
+        157 => 1.0E+157,
+        158 => 1.0E+158,
+        159 => 1.0E+159,
+        160 => 1.0E+160,
+        161 => 1.0E+161,
+        162 => 1.0E+162,
+        163 => 1.0E+163,
+        164 => 1.0E+164,
+        165 => 1.0E+165,
+        166 => 1.0E+166,
+        167 => 1.0E+167,
+        168 => 1.0E+168,
+        169 => 1.0E+169,
+        170 => 1.0E+170,
+        171 => 1.0E+171,
+        172 => 1.0E+172,
+        173 => 1.0E+173,
+        174 => 1.0E+174,
+        175 => 1.0E+175,
+        176 => 1.0E+176,
+        177 => 1.0E+177,
+        178 => 1.0E+178,
+        179 => 1.0E+179,
+        180 => 1.0E+180,
+        181 => 1.0E+181,
+        182 => 1.0E+182,
+        183 => 1.0E+183,
+        184 => 1.0E+184,
+        185 => 1.0E+185,
+        186 => 1.0E+186,
+        187 => 1.0E+187,
+        188 => 1.0E+188,
+        189 => 1.0E+189,
+        190 => 1.0E+190,
+        191 => 1.0E+191,
+        192 => 1.0E+192,
+        193 => 1.0E+193,
+        194 => 1.0E+194,
+        195 => 1.0E+195,
+        196 => 1.0E+196,
+        197 => 1.0E+197,
+        198 => 1.0E+198,
+        199 => 1.0E+199,
+        200 => 1.0E+200,
+        201 => 1.0E+201,
+        202 => 1.0E+202,
+        203 => 1.0E+203,
+        204 => 1.0E+204,
+        205 => 1.0E+205,
+        206 => 1.0E+206,
+        207 => 1.0E+207,
+        208 => 1.0E+208,
+        209 => 1.0E+209,
+        210 => 1.0E+210,
+        211 => 1.0E+211,
+        212 => 1.0E+212,
+        213 => 1.0E+213,
+        214 => 1.0E+214,
+        215 => 1.0E+215,
+        216 => 1.0E+216,
+        217 => 1.0E+217,
+        218 => 1.0E+218,
+        219 => 1.0E+219,
+        220 => 1.0E+220,
+        221 => 1.0E+221,
+        222 => 1.0E+222,
+        223 => 1.0E+223,
+        224 => 1.0E+224,
+        225 => 1.0E+225,
+        226 => 1.0E+226,
+        227 => 1.0E+227,
+        228 => 1.0E+228,
+        229 => 1.0E+229,
+        230 => 1.0E+230,
+        231 => 1.0E+231,
+        232 => 1.0E+232,
+        233 => 1.0E+233,
+        234 => 1.0E+234,
+        235 => 1.0E+235,
+        236 => 1.0E+236,
+        237 => 1.0E+237,
+        238 => 1.0E+238,
+        239 => 1.0E+239,
+        240 => 1.0E+240,
+        241 => 1.0E+241,
+        242 => 1.0E+242,
+        243 => 1.0E+243,
+        244 => 1.0E+244,
+        245 => 1.0E+245,
+        246 => 1.0E+246,
+        247 => 1.0E+247,
+        248 => 1.0E+248,
+        249 => 1.0E+249,
+        250 => 1.0E+250,
+        251 => 1.0E+251,
+        252 => 1.0E+252,
+        253 => 1.0E+253,
+        254 => 1.0E+254,
+        255 => 1.0E+255,
+        256 => 1.0E+256,
+        257 => 1.0E+257,
+        258 => 1.0E+258,
+        259 => 1.0E+259,
+        260 => 1.0E+260,
+        261 => 1.0E+261,
+        262 => 1.0E+262,
+        263 => 1.0E+263,
+        264 => 1.0E+264,
+        265 => 1.0E+265,
+        266 => 1.0E+266,
+        267 => 1.0E+267,
+        268 => 1.0E+268,
+        269 => 1.0E+269,
+        270 => 1.0E+270,
+        271 => 1.0E+271,
+        272 => 1.0E+272,
+        273 => 1.0E+273,
+        274 => 1.0E+274,
+        275 => 1.0E+275,
+        276 => 1.0E+276,
+        277 => 1.0E+277,
+        278 => 1.0E+278,
+        279 => 1.0E+279,
+        280 => 1.0E+280,
+        281 => 1.0E+281,
+        282 => 1.0E+282,
+        283 => 1.0E+283,
+        284 => 1.0E+284,
+        285 => 1.0E+285,
+        286 => 1.0E+286,
+        287 => 1.0E+287,
+        288 => 1.0E+288,
+        289 => 1.0E+289,
+        290 => 1.0E+290,
+        291 => 1.0E+291,
+        292 => 1.0E+292,
+        293 => 1.0E+293,
+        294 => 1.0E+294,
+        295 => 1.0E+295,
+        296 => 1.0E+296,
+        297 => 1.0E+297,
+        298 => 1.0E+298,
+        299 => 1.0E+299,
+        300 => 1.0E+300,
+        301 => 1.0E+301,
+        302 => 1.0E+302,
+        303 => 1.0E+303,
+        304 => 1.0E+304,
+        305 => 1.0E+305,
+        306 => 1.0E+306,
+        307 => 1.0E+307,
+        308 => 1.0E+308);
+ 
+ end System.Powten_LFlt;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-powllf.ads gcc-11.1.0/gcc/ada/libgnat/s-powllf.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-powllf.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-powllf.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,70 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                    S Y S T E M . P O W T E N _ L L F                     --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides a powers of ten table used for real conversions
+ 
+ package System.Powten_LLF is
+    pragma Pure;
+ 
+    Maxpow : constant := 22;
+    --  The number of entries in this table is chosen to include powers of ten
+    --  that are exactly representable with Long_Long_Float. Assuming that on
+    --  all targets we have 53 bits of mantissa for the type, the upper bound
+    --  is given by 53 * log 2 / log 5. If the scaling factor is greater than
+    --  Maxpow, it can be obtained by several multiplications, which is less
+    --  efficient than with a bigger table, but avoids anomalies at end points.
+ 
+    Powten : constant array (0 .. Maxpow) of Long_Long_Float :=
+       (00 => 1.0E+00,
+        01 => 1.0E+01,
+        02 => 1.0E+02,
+        03 => 1.0E+03,
+        04 => 1.0E+04,
+        05 => 1.0E+05,
+        06 => 1.0E+06,
+        07 => 1.0E+07,
+        08 => 1.0E+08,
+        09 => 1.0E+09,
+        10 => 1.0E+10,
+        11 => 1.0E+11,
+        12 => 1.0E+12,
+        13 => 1.0E+13,
+        14 => 1.0E+14,
+        15 => 1.0E+15,
+        16 => 1.0E+16,
+        17 => 1.0E+17,
+        18 => 1.0E+18,
+        19 => 1.0E+19,
+        20 => 1.0E+20,
+        21 => 1.0E+21,
+        22 => 1.0E+22);
+ 
+ end System.Powten_LLF;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-powtab.ads gcc-11.1.0/gcc/ada/libgnat/s-powtab.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-powtab.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-powtab.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,70 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                  S Y S T E M . P O W T E N _ T A B L E                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package provides a powers of ten table used for real conversions
- 
- package System.Powten_Table is
-    pragma Pure;
- 
-    Maxpow : constant := 22;
-    --  The number of entries in this table is chosen to include powers of ten
-    --  that are exactly representable with long_long_float. Assuming that on
-    --  all targets we have 53 bits of mantissa for the type, the upper bound is
-    --  given by 53/(log 5). If the scaling factor for a string is greater than
-    --  Maxpow, it can be obtained by several multiplications, which is less
-    --  efficient than with a bigger table, but avoids anomalies at end points.
- 
-    Powten : constant array (0 .. Maxpow) of Long_Long_Float :=
-       (00 => 1.0E+00,
-        01 => 1.0E+01,
-        02 => 1.0E+02,
-        03 => 1.0E+03,
-        04 => 1.0E+04,
-        05 => 1.0E+05,
-        06 => 1.0E+06,
-        07 => 1.0E+07,
-        08 => 1.0E+08,
-        09 => 1.0E+09,
-        10 => 1.0E+10,
-        11 => 1.0E+11,
-        12 => 1.0E+12,
-        13 => 1.0E+13,
-        14 => 1.0E+14,
-        15 => 1.0E+15,
-        16 => 1.0E+16,
-        17 => 1.0E+17,
-        18 => 1.0E+18,
-        19 => 1.0E+19,
-        20 => 1.0E+20,
-        21 => 1.0E+21,
-        22 => 1.0E+22);
- 
- end System.Powten_Table;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-purexc.ads gcc-11.1.0/gcc/ada/libgnat/s-purexc.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-purexc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-purexc.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-putaim.adb gcc-11.1.0/gcc/ada/libgnat/s-putaim.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-putaim.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-putaim.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,51 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                          SYSTEM.PUT_TASK_IMAGES                          --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Unchecked_Conversion;
+ with Ada.Strings.Text_Output.Utils;
+ use Ada.Strings.Text_Output;
+ use Ada.Strings.Text_Output.Utils;
+ 
+ package body System.Put_Task_Images is
+ 
+    procedure Put_Image_Protected (S : in out Sink'Class) is
+    begin
+       Put_UTF_8 (S, "(protected object)");
+    end Put_Image_Protected;
+ 
+    procedure Put_Image_Task
+      (S : in out Sink'Class; Id : Ada.Task_Identification.Task_Id)
+    is
+    begin
+       Put_UTF_8 (S, "(task " & Ada.Task_Identification.Image (Id) & ")");
+    end Put_Image_Task;
+ 
+ end System.Put_Task_Images;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-putaim.ads gcc-11.1.0/gcc/ada/libgnat/s-putaim.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-putaim.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-putaim.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,48 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                          SYSTEM.PUT_TASK_IMAGES                          --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Strings.Text_Output;
+ with Ada.Task_Identification;
+ 
+ package System.Put_Task_Images is
+ 
+    --  This package contains subprograms that are called by the generated code
+    --  for the 'Put_Image attribute for protected and task types. This is
+    --  separate from System.Put_Images to avoid dragging the tasking runtimes
+    --  into nontasking programs.
+ 
+    subtype Sink is Ada.Strings.Text_Output.Sink;
+ 
+    procedure Put_Image_Protected (S : in out Sink'Class);
+    procedure Put_Image_Task
+      (S : in out Sink'Class; Id : Ada.Task_Identification.Task_Id);
+ 
+ end System.Put_Task_Images;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-putima.adb gcc-11.1.0/gcc/ada/libgnat/s-putima.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-putima.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-putima.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,274 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                             SYSTEM.PUT_IMAGES                            --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Unchecked_Conversion;
+ with Ada.Strings.Text_Output.Utils;
+ use Ada.Strings.Text_Output;
+ use Ada.Strings.Text_Output.Utils;
+ 
+ package body System.Put_Images is
+ 
+    generic
+       type Integer_Type is range <>;
+       type Unsigned_Type is mod <>;
+       Base : Unsigned_Type;
+    package Generic_Integer_Images is
+       pragma Assert (Integer_Type'Size = Unsigned_Type'Size);
+       pragma Assert (Base in 2 .. 36);
+       procedure Put_Image (S : in out Sink'Class; X : Integer_Type);
+       procedure Put_Image (S : in out Sink'Class; X : Unsigned_Type);
+    private
+       subtype Digit is Unsigned_Type range 0 .. Base - 1;
+    end Generic_Integer_Images;
+ 
+    package body Generic_Integer_Images is
+ 
+       A : constant := Character'Pos ('a');
+       Z : constant := Character'Pos ('0');
+       function Digit_To_Character (X : Digit) return Character is
+         (Character'Val (if X < 10 then X + Z else X + A - 10));
+ 
+       procedure Put_Digits (S : in out Sink'Class; X : Unsigned_Type);
+       --  Put just the digits of X, without any leading minus sign or space.
+ 
+       procedure Put_Digits (S : in out Sink'Class; X : Unsigned_Type) is
+       begin
+          if X >= Base then
+             Put_Digits (S, X / Base); -- recurse
+             Put_7bit (S, Digit_To_Character (X mod Base));
+          else
+             Put_7bit (S, Digit_To_Character (X));
+          end if;
+       end Put_Digits;
+ 
+       procedure Put_Image (S : in out Sink'Class; X : Integer_Type) is
+       begin
+          --  Put the space or the minus sign, then pass the absolute value to
+          --  Put_Digits.
+ 
+          if X >= 0 then
+             Put_7bit (S, ' ');
+             Put_Digits (S, Unsigned_Type (X));
+          else
+             Put_7bit (S, '-');
+             Put_Digits (S, -Unsigned_Type'Mod (X));
+             --  Convert to Unsigned_Type before negating, to avoid overflow
+             --  on Integer_Type'First.
+          end if;
+       end Put_Image;
+ 
+       procedure Put_Image (S : in out Sink'Class; X : Unsigned_Type) is
+       begin
+          Put_7bit (S, ' ');
+          Put_Digits (S, X);
+       end Put_Image;
+ 
+    end Generic_Integer_Images;
+ 
+    package Integer_Images is new Generic_Integer_Images
+      (Integer, Unsigned, Base => 10);
+    package LL_Integer_Images is new Generic_Integer_Images
+      (Long_Long_Integer, Long_Long_Unsigned, Base => 10);
+    package LLL_Integer_Images is new Generic_Integer_Images
+      (Long_Long_Long_Integer, Long_Long_Long_Unsigned, Base => 10);
+ 
+    procedure Put_Image_Integer (S : in out Sink'Class; X : Integer)
+      renames Integer_Images.Put_Image;
+    procedure Put_Image_Long_Long_Integer
+      (S : in out Sink'Class; X : Long_Long_Integer)
+      renames LL_Integer_Images.Put_Image;
+    procedure Put_Image_Long_Long_Long_Integer
+      (S : in out Sink'Class; X : Long_Long_Long_Integer)
+      renames LLL_Integer_Images.Put_Image;
+ 
+    procedure Put_Image_Unsigned (S : in out Sink'Class; X : Unsigned)
+      renames Integer_Images.Put_Image;
+    procedure Put_Image_Long_Long_Unsigned
+      (S : in out Sink'Class; X : Long_Long_Unsigned)
+      renames LL_Integer_Images.Put_Image;
+    procedure Put_Image_Long_Long_Long_Unsigned
+      (S : in out Sink'Class; X : Long_Long_Long_Unsigned)
+      renames LLL_Integer_Images.Put_Image;
+ 
+    type Signed_Address is range
+      -2**(Standard'Address_Size - 1) .. 2**(Standard'Address_Size - 1) - 1;
+    type Unsigned_Address is mod 2**Standard'Address_Size;
+    package Hex is new Generic_Integer_Images
+      (Signed_Address, Unsigned_Address, Base => 16);
+ 
+    generic
+       type Designated (<>) is private;
+       type Pointer is access all Designated;
+    procedure Put_Image_Pointer
+      (S : in out Sink'Class; X : Pointer; Type_Kind : String);
+ 
+    procedure Put_Image_Pointer
+      (S : in out Sink'Class; X : Pointer; Type_Kind : String)
+    is
+       function Cast is new Unchecked_Conversion
+         (System.Address, Unsigned_Address);
+    begin
+       if X = null then
+          Put_UTF_8 (S, "null");
+       else
+          Put_UTF_8 (S, "(");
+          Put_UTF_8 (S, Type_Kind);
+          Hex.Put_Image (S, Cast (X.all'Address));
+          Put_UTF_8 (S, ")");
+       end if;
+    end Put_Image_Pointer;
+ 
+    procedure Thin_Instance is new Put_Image_Pointer (Byte, Thin_Pointer);
+    procedure Put_Image_Thin_Pointer
+      (S : in out Sink'Class; X : Thin_Pointer)
+    is
+    begin
+       Thin_Instance (S, X, "access");
+    end Put_Image_Thin_Pointer;
+ 
+    procedure Fat_Instance is new Put_Image_Pointer (Byte_String, Fat_Pointer);
+    procedure Put_Image_Fat_Pointer
+      (S : in out Sink'Class; X : Fat_Pointer)
+    is
+    begin
+       Fat_Instance (S, X, "access");
+    end Put_Image_Fat_Pointer;
+ 
+    procedure Put_Image_Access_Subp (S : in out Sink'Class; X : Thin_Pointer) is
+    begin
+       Thin_Instance (S, X, "access subprogram");
+    end Put_Image_Access_Subp;
+ 
+    procedure Put_Image_Access_Prot_Subp
+      (S : in out Sink'Class; X : Thin_Pointer)
+    is
+    begin
+       Thin_Instance (S, X, "access protected subprogram");
+    end Put_Image_Access_Prot_Subp;
+ 
+    procedure Put_Image_String (S : in out Sink'Class; X : String) is
+    begin
+       Put_UTF_8 (S, """");
+       for C of X loop
+          if C = '"' then
+             Put_UTF_8 (S, """");
+          end if;
+          Put_Character (S, C);
+       end loop;
+       Put_UTF_8 (S, """");
+    end Put_Image_String;
+ 
+    procedure Put_Image_Wide_String (S : in out Sink'Class; X : Wide_String) is
+    begin
+       Put_UTF_8 (S, """");
+       for C of X loop
+          if C = '"' then
+             Put_UTF_8 (S, """");
+          end if;
+          Put_Wide_Character (S, C);
+       end loop;
+       Put_UTF_8 (S, """");
+    end Put_Image_Wide_String;
+ 
+    procedure Put_Image_Wide_Wide_String
+      (S : in out Sink'Class; X : Wide_Wide_String) is
+    begin
+       Put_UTF_8 (S, """");
+       for C of X loop
+          if C = '"' then
+             Put_UTF_8 (S, """");
+          end if;
+          Put_Wide_Wide_Character (S, C);
+       end loop;
+       Put_UTF_8 (S, """");
+    end Put_Image_Wide_Wide_String;
+ 
+    procedure Array_Before (S : in out Sink'Class) is
+    begin
+       New_Line (S);
+       Put_7bit (S, '[');
+       Indent (S, 1);
+    end Array_Before;
+ 
+    procedure Array_Between (S : in out Sink'Class) is
+    begin
+       Put_7bit (S, ',');
+       New_Line (S);
+    end Array_Between;
+ 
+    procedure Array_After (S : in out Sink'Class) is
+    begin
+       Outdent (S, 1);
+       Put_7bit (S, ']');
+    end Array_After;
+ 
+    procedure Simple_Array_Between (S : in out Sink'Class) is
+    begin
+       Put_7bit (S, ',');
+       if Column (S) > 60 then
+          New_Line (S);
+       else
+          Put_7bit (S, ' ');
+       end if;
+    end Simple_Array_Between;
+ 
+    procedure Record_Before (S : in out Sink'Class) is
+    begin
+       New_Line (S);
+       Put_7bit (S, '(');
+       Indent (S, 1);
+    end Record_Before;
+ 
+    procedure Record_Between (S : in out Sink'Class) is
+    begin
+       Put_7bit (S, ',');
+       New_Line (S);
+    end Record_Between;
+ 
+    procedure Record_After (S : in out Sink'Class) is
+    begin
+       Outdent (S, 1);
+       Put_7bit (S, ')');
+    end Record_After;
+ 
+    procedure Put_Arrow (S : in out Sink'Class) is
+    begin
+       Put_UTF_8 (S, " => ");
+    end Put_Arrow;
+ 
+    procedure Put_Image_Unknown (S : in out Sink'Class; Type_Name : String) is
+    begin
+       Put_UTF_8 (S, "{");
+       Put_String (S, Type_Name);
+       Put_UTF_8 (S, " object}");
+    end Put_Image_Unknown;
+ 
+ end System.Put_Images;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-putima.ads gcc-11.1.0/gcc/ada/libgnat/s-putima.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-putima.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-putima.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,110 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                             SYSTEM.PUT_IMAGES                            --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Strings.Text_Output;
+ with System.Unsigned_Types;
+ 
+ package System.Put_Images with Pure is
+ 
+    --  This package contains subprograms that are called by the generated code
+    --  for the 'Put_Image attribute.
+    --
+    --  For a signed integer type that fits in Integer, the actual parameter is
+    --  converted to Integer, and Put_Image_Integer is called. For larger types,
+    --  Put_Image_Long_Long_Integer or Put_Image_Long_Long_Long_Integer is used.
+    --  For a modular integer type, this is similar with Integer replaced with
+    --  Unsigned. Access values are unchecked-converted to either Thin_Pointer
+    --  or Fat_Pointer, and Put_Image_Thin_Pointer or Put_Image_Fat_Pointer is
+    --  called. The Before/Between/After procedures are called before printing
+    --  the components of a composite type, between pairs of components, and
+    --  after them. See Exp_Put_Image in the compiler for details of these
+    --  calls.
+ 
+    pragma Preelaborate;
+ 
+    subtype Sink is Ada.Strings.Text_Output.Sink;
+ 
+    procedure Put_Image_Integer (S : in out Sink'Class; X : Integer);
+    procedure Put_Image_Long_Long_Integer
+      (S : in out Sink'Class; X : Long_Long_Integer);
+    procedure Put_Image_Long_Long_Long_Integer
+      (S : in out Sink'Class; X : Long_Long_Long_Integer);
+ 
+    subtype Unsigned is Unsigned_Types.Unsigned;
+    subtype Long_Long_Unsigned is Unsigned_Types.Long_Long_Unsigned;
+    subtype Long_Long_Long_Unsigned is Unsigned_Types.Long_Long_Long_Unsigned;
+ 
+    procedure Put_Image_Unsigned (S : in out Sink'Class; X : Unsigned);
+    procedure Put_Image_Long_Long_Unsigned
+      (S : in out Sink'Class; X : Long_Long_Unsigned);
+    procedure Put_Image_Long_Long_Long_Unsigned
+      (S : in out Sink'Class; X : Long_Long_Long_Unsigned);
+ 
+    type Byte is new Character with Alignment => 1;
+    type Byte_String is array (Positive range <>) of Byte with Alignment => 1;
+    type Thin_Pointer is access all Byte with Storage_Size => 0;
+    type Fat_Pointer is access all Byte_String with Storage_Size => 0;
+    procedure Put_Image_Thin_Pointer (S : in out Sink'Class; X : Thin_Pointer);
+    procedure Put_Image_Fat_Pointer (S : in out Sink'Class; X : Fat_Pointer);
+    --  Print "null", or the address of the designated object as an unsigned
+    --  hexadecimal integer.
+ 
+    procedure Put_Image_Access_Subp (S : in out Sink'Class; X : Thin_Pointer);
+    --  For access-to-subprogram types
+ 
+    procedure Put_Image_Access_Prot_Subp
+      (S : in out Sink'Class; X : Thin_Pointer);
+    --  For access-to-protected-subprogram types
+ 
+    procedure Put_Image_String (S : in out Sink'Class; X : String);
+    procedure Put_Image_Wide_String (S : in out Sink'Class; X : Wide_String);
+    procedure Put_Image_Wide_Wide_String
+      (S : in out Sink'Class; X : Wide_Wide_String);
+ 
+    procedure Array_Before (S : in out Sink'Class);
+    procedure Array_Between (S : in out Sink'Class);
+    procedure Array_After (S : in out Sink'Class);
+ 
+    procedure Simple_Array_Between (S : in out Sink'Class);
+    --  For "simple" arrays, where we don't want a newline between every
+    --  component.
+ 
+    procedure Record_Before (S : in out Sink'Class);
+    procedure Record_Between (S : in out Sink'Class);
+    procedure Record_After (S : in out Sink'Class);
+ 
+    procedure Put_Arrow (S : in out Sink'Class);
+ 
+    procedure Put_Image_Unknown (S : in out Sink'Class; Type_Name : String);
+    --  For Put_Image of types that don't have the attribute, such as type
+    --  Sink.
+ 
+ end System.Put_Images;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-rannum.adb gcc-11.1.0/gcc/ada/libgnat/s-rannum.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-rannum.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-rannum.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2007-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2007-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 86,91 ****
--- 86,92 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Ada.Strings.Text_Output.Utils;
  with Ada.Unchecked_Conversion;
  
  with System.Random_Seed;
*************** is
*** 295,300 ****
--- 296,302 ----
              K      : Bit_Count;       --  Next decrement to exponent
  
           begin
+             K := 0;
              Mantissa := Random (Gen) / 2**Extra_Bits;
              R := Unsigned_32 (Mantissa mod 2**Extra_Bits);
              R_Bits := Extra_Bits;
*************** is
*** 385,390 ****
--- 387,398 ----
          or Unsigned_64 (Unsigned_32'(Random (Gen)));
     end Random;
  
+    function Random (Gen : Generator) return Unsigned_128 is
+    begin
+       return Shift_Left (Unsigned_128 (Unsigned_64'(Random (Gen))), 64)
+         or Unsigned_128 (Unsigned_64'(Random (Gen)));
+    end Random;
+ 
     ---------------------
     -- Random_Discrete --
     ---------------------
*************** is
*** 401,412 ****
        elsif Max < Min then
           raise Constraint_Error;
  
        elsif Result_Subtype'Base'Size > 32 then
           declare
!             --  In the 64-bit case, we have to be careful, since not all 64-bit
!             --  unsigned values are representable in GNAT's root_integer type.
!             --  Ignore different-size warnings here since GNAT's handling
!             --  is correct.
  
              pragma Warnings ("Z");
              function Conv_To_Unsigned is
--- 409,455 ----
        elsif Max < Min then
           raise Constraint_Error;
  
+       --  In the 128-bit case, we have to be careful since not all 128-bit
+       --  unsigned values are representable in GNAT's universal integer.
+ 
+       elsif Result_Subtype'Base'Size > 64 then
+          declare
+             --  Ignore unequal-size warnings since GNAT's handling is correct.
+ 
+             pragma Warnings ("Z");
+             function Conv_To_Unsigned is
+                new Unchecked_Conversion (Result_Subtype'Base, Unsigned_128);
+             function Conv_To_Result is
+                new Unchecked_Conversion (Unsigned_128, Result_Subtype'Base);
+             pragma Warnings ("z");
+ 
+             N : constant Unsigned_128 :=
+                   Conv_To_Unsigned (Max) - Conv_To_Unsigned (Min) + 1;
+ 
+             X, Slop : Unsigned_128;
+ 
+          begin
+             if N = 0 then
+                return Conv_To_Result (Conv_To_Unsigned (Min) + Random (Gen));
+ 
+             else
+                Slop := Unsigned_128'Last rem N + 1;
+ 
+                loop
+                   X := Random (Gen);
+                   exit when Slop = N or else X <= Unsigned_128'Last - Slop;
+                end loop;
+ 
+                return Conv_To_Result (Conv_To_Unsigned (Min) + X rem N);
+             end if;
+          end;
+ 
+       --  In the 64-bit case, we have to be careful since not all 64-bit
+       --  unsigned values are representable in GNAT's universal integer.
+ 
        elsif Result_Subtype'Base'Size > 32 then
           declare
!             --  Ignore unequal-size warnings since GNAT's handling is correct.
  
              pragma Warnings ("Z");
              function Conv_To_Unsigned is
*************** is
*** 436,446 ****
              end if;
           end;
  
!       elsif Result_Subtype'Pos (Max) - Result_Subtype'Pos (Min) =
!                                                          2 ** 32 - 1
        then
           return Result_Subtype'Val
             (Result_Subtype'Pos (Min) + Unsigned_32'Pos (Random (Gen)));
        else
           declare
              N    : constant Unsigned_32 :=
--- 479,492 ----
              end if;
           end;
  
!       --  In the 32-bit case, we need to handle both integer and enumeration
!       --  types and, therefore, rely on 'Pos and 'Val in the computation.
! 
!       elsif Result_Subtype'Pos (Max) - Result_Subtype'Pos (Min) = 2 ** 32 - 1
        then
           return Result_Subtype'Val
             (Result_Subtype'Pos (Min) + Unsigned_32'Pos (Random (Gen)));
+ 
        else
           declare
              N    : constant Unsigned_32 :=
*************** is
*** 635,640 ****
--- 681,696 ----
        return Result;
     end Image;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S : in out Strings.Text_Output.Sink'Class; V : State) is
+    begin
+       Strings.Text_Output.Utils.Put_String (S, Image (V));
+    end Put_Image;
+ 
     -----------
     -- Value --
     -----------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-rannum.ads gcc-11.1.0/gcc/ada/libgnat/s-rannum.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-rannum.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-rannum.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 57,62 ****
--- 57,64 ----
  
  with Interfaces;
  
+ private with Ada.Strings.Text_Output;
+ 
  package System.Random_Numbers with
    SPARK_Mode => Off
  is
*************** is
*** 74,79 ****
--- 76,82 ----
  
     function Random (Gen : Generator) return Interfaces.Unsigned_32;
     function Random (Gen : Generator) return Interfaces.Unsigned_64;
+    function Random (Gen : Generator) return Interfaces.Unsigned_128;
     --  Return pseudo-random numbers uniformly distributed on T'First .. T'Last
     --  for builtin integer types.
  
*************** private
*** 142,148 ****
     --  Feedback distance from the current position
  
     subtype State_Val is Interfaces.Unsigned_32;
!    type State is array (0 .. N - 1) of State_Val;
  
     type Writable_Access (Self : access Generator) is limited null record;
     --  Auxiliary type to make Generator a self-referential type
--- 145,154 ----
     --  Feedback distance from the current position
  
     subtype State_Val is Interfaces.Unsigned_32;
!    type State is array (0 .. N - 1) of State_Val with Put_Image => Put_Image;
! 
!    procedure Put_Image
!      (S : in out Ada.Strings.Text_Output.Sink'Class; V : State);
  
     type Writable_Access (Self : access Generator) is limited null record;
     --  Auxiliary type to make Generator a self-referential type
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-ransee.adb gcc-11.1.0/gcc/ada/libgnat/s-ransee.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-ransee.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-ransee.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-ransee.ads gcc-11.1.0/gcc/ada/libgnat/s-ransee.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-ransee.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-ransee.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-regexp.adb gcc-11.1.0/gcc/ada/libgnat/s-regexp.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-regexp.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-regexp.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-regexp.ads gcc-11.1.0/gcc/ada/libgnat/s-regexp.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-regexp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-regexp.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Regexp is
*** 83,90 ****
     --     regexp ::= term
  
     --     term   ::= elmt
!    --     term   ::= elmt elmt ...     -- concatenation (elmt then elmt)
!    --     term   ::= {elmt, elmt, ...} -- alternation (matches any of elmt)
  
     --     elmt   ::= *                 -- any string of 0 or more characters
     --     elmt   ::= ?                 -- matches any character
--- 83,92 ----
     --     regexp ::= term
  
     --     term   ::= elmt
!    --     term   ::= seq
!    --     term   ::= {seq, seq, ...}   -- alternation (matches any of seq)
! 
!    --     seq    ::= elmt elmt ...     -- concatenation (sequence of elmts)
  
     --     elmt   ::= *                 -- any string of 0 or more characters
     --     elmt   ::= ?                 -- matches any character
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-regpat.adb gcc-11.1.0/gcc/ada/libgnat/s-regpat.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-regpat.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-regpat.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                                                                          --
  --               Copyright (C) 1986 by University of Toronto.               --
! --                      Copyright (C) 1999-2019, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                                                                          --
  --               Copyright (C) 1986 by University of Toronto.               --
! --                      Copyright (C) 1999-2020, AdaCore                    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Regpat is
*** 1460,1478 ****
                   and then Expression (Parse_Pos + 1) /= ']'
                 then
                    Parse_Pos := Parse_Pos + 1;
! 
!                   --  Do we have a range like '\d-a' and '[:space:]-a'
!                   --  which is not a real range
! 
!                   if Named_Class /= ANYOF_NONE then
!                      Set_In_Class (Bitmap, '-');
!                   else
!                      In_Range := True;
!                   end if;
! 
                 else
                    Set_In_Class (Bitmap, Value);
- 
                 end if;
  
              --  Else in a character range
--- 1460,1468 ----
                   and then Expression (Parse_Pos + 1) /= ']'
                 then
                    Parse_Pos := Parse_Pos + 1;
!                   In_Range := True;
                 else
                    Set_In_Class (Bitmap, Value);
                 end if;
  
              --  Else in a character range
*************** package body System.Regpat is
*** 3275,3287 ****
          (IP  : Pointer;
           Max : Natural := Natural'Last) return Natural
        is
!          Scan  : Natural := Input_Pos;
!          Last  : Natural;
!          Op    : constant Opcode := Opcode'Val (Character'Pos (Program (IP)));
!          Count : Natural;
!          C     : Character;
!          Is_First : Boolean := True;
!          Bitmap   : Character_Class;
  
        begin
           if Max = Natural'Last or else Scan + Max - 1 > Last_In_Data then
--- 3265,3277 ----
          (IP  : Pointer;
           Max : Natural := Natural'Last) return Natural
        is
!          Scan   : Natural := Input_Pos;
!          Last   : Natural;
!          Op     : constant Opcode :=
!            Opcode'Val (Character'Pos (Program (IP)));
!          Count  : Natural;
!          C      : Character;
!          Bitmap : Character_Class;
  
        begin
           if Max = Natural'Last or else Scan + Max - 1 > Last_In_Data then
*************** package body System.Regpat is
*** 3324,3333 ****
                 end loop;
  
              when ANYOF =>
!                if Is_First then
!                   Bitmap_Operand (Program, IP, Bitmap);
!                   Is_First := False;
!                end if;
  
                 while Scan <= Last
                   and then Get_From_Class (Bitmap, Data (Scan))
--- 3314,3320 ----
                 end loop;
  
              when ANYOF =>
!                Bitmap_Operand (Program, IP, Bitmap);
  
                 while Scan <= Last
                   and then Get_From_Class (Bitmap, Data (Scan))
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-regpat.ads gcc-11.1.0/gcc/ada/libgnat/s-regpat.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-regpat.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-regpat.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                                                                          --
  --               Copyright (C) 1986 by University of Toronto.               --
! --                     Copyright (C) 1996-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 S p e c                                  --
  --                                                                          --
  --               Copyright (C) 1986 by University of Toronto.               --
! --                     Copyright (C) 1996-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-resfil.adb gcc-11.1.0/gcc/ada/libgnat/s-resfil.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-resfil.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-resfil.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2007-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2007-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-resfil.ads gcc-11.1.0/gcc/ada/libgnat/s-resfil.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-resfil.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-resfil.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-restri.adb gcc-11.1.0/gcc/ada/libgnat/s-restri.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-restri.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-restri.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-restri.ads gcc-11.1.0/gcc/ada/libgnat/s-restri.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-restri.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-restri.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-rident.ads gcc-11.1.0/gcc/ada/libgnat/s-rident.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-rident.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-rident.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 62,71 ****
  --  then the binder could fail to recognize the R (restrictions line) in the
  --  ali file, leading to bind errors when restrictions were added or removed.
  
! --  The latest implementation avoids both this problem by using a named
! --  scheme for recording restrictions, rather than a positional scheme which
! --  fails completely if restrictions are added or subtracted. Now the worst
! --  that happens at bind time in inconsistent builds is that unrecognized
  --  restrictions are ignored, and the consistency checking for restrictions
  --  might be incomplete, which is no big deal.
  
--- 62,71 ----
  --  then the binder could fail to recognize the R (restrictions line) in the
  --  ali file, leading to bind errors when restrictions were added or removed.
  
! --  The latest implementation avoids this problem by using a named scheme
! --  for recording restrictions, rather than a positional scheme that fails
! --  completely if restrictions are added or subtracted. Now the worst that
! --  happens at bind time in inconsistent builds is that unrecognized
  --  restrictions are ignored, and the consistency checking for restrictions
  --  might be incomplete, which is no big deal.
  
*************** package System.Rident is
*** 104,109 ****
--- 104,110 ----
        No_Dispatch,                               -- (RM H.4(19))
        No_Dispatching_Calls,                      -- GNAT
        No_Dynamic_Attachment,                     -- Ada 2012 (RM E.7(10/3))
+       No_Dynamic_CPU_Assignment,                 -- Ada 202x (RM D.7(10/3))
        No_Dynamic_Priorities,                     -- (RM D.9(9))
        No_Enumeration_Maps,                       -- GNAT
        No_Entry_Calls_In_Elaboration_Code,        -- GNAT
*************** package System.Rident is
*** 147,152 ****
--- 148,154 ----
        No_Task_At_Interrupt_Priority,             -- GNAT
        No_Task_Hierarchy,                         -- (RM D.7(3), H.4(3))
        No_Task_Termination,                       -- GNAT (Ravenscar)
+       No_Tasks_Unassigned_To_CPU,                -- Ada 202x (D.7(10.10/4))
        No_Tasking,                                -- GNAT
        No_Terminate_Alternatives,                 -- (RM D.7(6))
        No_Unchecked_Access,                       -- (RM H.4(18))
*************** package System.Rident is
*** 182,187 ****
--- 184,191 ----
        No_Implicit_Loops,                         -- GNAT
        No_Elaboration_Code,                       -- GNAT
        No_Obsolescent_Features,                   -- Ada 2005 AI-368
+       No_Unrecognized_Aspects,                   -- AI12-0389-1/02
+       No_Unrecognized_Pragmas,                   -- AI12-0389-1/02
        No_Wide_Characters,                        -- GNAT
        Static_Dispatch_Tables,                    -- GNAT
        SPARK_05,                                  -- GNAT
*************** package System.Rident is
*** 232,238 ****
     No_Dynamic_Interrupts  : Restriction_Id renames No_Dynamic_Attachment;
     No_Requeue             : Restriction_Id renames No_Requeue_Statements;
     No_Task_Attributes     : Restriction_Id renames No_Task_Attributes_Package;
-    SPARK                  : Restriction_Id renames SPARK_05;
  
     subtype All_Restrictions is Restriction_Id range
       Simple_Barriers .. Max_Storage_At_Blocking;
--- 236,241 ----
*************** package System.Rident is
*** 382,387 ****
--- 385,391 ----
        Restricted_Tasking,
        Restricted,
        Ravenscar,
+       Jorvik,
        GNAT_Extended_Ravenscar,
        GNAT_Ravenscar_EDF);
     --  Names of recognized profiles. No_Profile is used to indicate that a
*************** package System.Rident is
*** 438,443 ****
--- 442,448 ----
                            (No_Abort_Statements             => True,
                             No_Asynchronous_Control         => True,
                             No_Dynamic_Attachment           => True,
+                            No_Dynamic_CPU_Assignment       => True,
                             No_Dynamic_Priorities           => True,
                             No_Local_Protected_Objects      => True,
                             No_Protected_Type_Allocators    => True,
*************** package System.Rident is
*** 469,474 ****
--- 474,480 ----
                            (No_Abort_Statements             => True,
                             No_Asynchronous_Control         => True,
                             No_Dynamic_Attachment           => True,
+                            No_Dynamic_CPU_Assignment       => True,
                             No_Dynamic_Priorities           => True,
                             No_Entry_Queue                  => True,
                             No_Local_Protected_Objects      => True,
*************** package System.Rident is
*** 511,516 ****
--- 517,523 ----
                            (No_Abort_Statements             => True,
                             No_Asynchronous_Control         => True,
                             No_Dynamic_Attachment           => True,
+                            No_Dynamic_CPU_Assignment       => True,
                             No_Dynamic_Priorities           => True,
                             No_Entry_Queue                  => True,
                             No_Local_Protected_Objects      => True,
*************** package System.Rident is
*** 546,560 ****
                             Max_Task_Entries                => 0,
                             others                          => 0)),
  
!                      GNAT_Extended_Ravenscar  =>
  
!                      --  Restrictions for GNAT_Extended_Ravenscar =
!                      --    Restricted profile ..
  
                         (Set   =>
                            (No_Abort_Statements             => True,
                             No_Asynchronous_Control         => True,
                             No_Dynamic_Attachment           => True,
                             No_Dynamic_Priorities           => True,
                             No_Local_Protected_Objects      => True,
                             No_Protected_Type_Allocators    => True,
--- 553,597 ----
                             Max_Task_Entries                => 0,
                             others                          => 0)),
  
!                      Jorvik | GNAT_Extended_Ravenscar =>
  
!                      --  Restrictions for Jorvik profile, previously known
!                      --  known as the GNAT_Extended_Ravenscar profile.
! 
!                      --  Note: the table entries here only represent the
!                      --  required restriction profile for Jorvik. The
!                      --  full Jorvik profile also requires:
! 
!                      --    pragma Dispatching_Policy (FIFO_Within_Priorities);
!                      --    pragma Locking_Policy (Ceiling_Locking);
!                      --    pragma Detect_Blocking;
! 
!                      --  The differences between Ravenscar and Jorvik are
!                      --  as follows:
!                      --     1) Ravenscar includes restriction Simple_Barriers;
!                      --        Jorvik includes Pure_Barriers instead.
!                      --     2) The No_Implicit_Heap_Allocations restriction is
!                      --        lifted and replaced with the following
!                      --        restrictions:
!                      --          No_Implicit_Task_Allocations
!                      --          No_Implicit_Protected_Object_Allocations
!                      --     3) The following 6 restrictions are included in
!                      --        Ravenscar but not in Jorvik:
!                      --          No_Implicit_Heap_Allocations
!                      --          No_Relative_Delay
!                      --          Max_Entry_Queue_Length => 1
!                      --          Max_Protected_Entries => 1
!                      --          No_Dependence => Ada.Calendar
!                      --          No_Dependence => Ada.Synchronous_Barriers
!                      --
!                      --  The last of those 7 (i.e., No_Dep => Ada.Synch_Bars)
!                      --  is not reflected here (see sem_prag.adb).
  
                         (Set   =>
                            (No_Abort_Statements             => True,
                             No_Asynchronous_Control         => True,
                             No_Dynamic_Attachment           => True,
+                            No_Dynamic_CPU_Assignment       => True,
                             No_Dynamic_Priorities           => True,
                             No_Local_Protected_Objects      => True,
                             No_Protected_Type_Allocators    => True,
*************** package System.Rident is
*** 605,610 ****
--- 642,648 ----
                            (No_Abort_Statements             => True,
                             No_Asynchronous_Control         => True,
                             No_Dynamic_Attachment           => True,
+                            No_Dynamic_CPU_Assignment       => True,
                             No_Dynamic_Priorities           => True,
                             No_Entry_Queue                  => True,
                             No_Local_Protected_Objects      => True,
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-rpc.adb gcc-11.1.0/gcc/ada/libgnat/s-rpc.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-rpc.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-rpc.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-rpc.ads gcc-11.1.0/gcc/ada/libgnat/s-rpc.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-rpc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-rpc.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-scaval.adb gcc-11.1.0/gcc/ada/libgnat/s-scaval.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-scaval.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-scaval.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Unchecked_Conversion;
*** 33,38 ****
--- 33,40 ----
  
  package body System.Scalar_Values is
  
+    use Interfaces;
+ 
     ----------------
     -- Initialize --
     ----------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-scaval.ads gcc-11.1.0/gcc/ada/libgnat/s-scaval.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-scaval.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-scaval.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 35,40 ****
--- 35,42 ----
  --  are used by the generated code, which are linked to the actual values
  --  by the use of pragma Import.
  
+ with Interfaces;
+ 
  package System.Scalar_Values is
  
     --  Note: logically this package should be Pure since it can be accessed
*************** package System.Scalar_Values is
*** 43,52 ****
     --  access this from generated code, and the compiler knows that it is
     --  OK to access this unit from generated code.
  
!    type Byte1 is mod 2 **  8;
!    type Byte2 is mod 2 ** 16;
!    type Byte4 is mod 2 ** 32;
!    type Byte8 is mod 2 ** 64;
  
     --  The explicit initializations here are not really required, since these
     --  variables are always set by System.Scalar_Values.Initialize.
--- 45,54 ----
     --  access this from generated code, and the compiler knows that it is
     --  OK to access this unit from generated code.
  
!    subtype Byte1 is Interfaces.Unsigned_8;
!    subtype Byte2 is Interfaces.Unsigned_16;
!    subtype Byte4 is Interfaces.Unsigned_32;
!    subtype Byte8 is Interfaces.Unsigned_64;
  
     --  The explicit initializations here are not really required, since these
     --  variables are always set by System.Scalar_Values.Initialize.
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-scaval__128.adb gcc-11.1.0/gcc/ada/libgnat/s-scaval__128.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-scaval__128.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-scaval__128.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,342 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                          GNAT RUN-TIME COMPONENTS                        --
+ --                                                                          --
+ --                  S Y S T E M . S C A L A R _ V A L U E S                 --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Unchecked_Conversion;
+ 
+ package body System.Scalar_Values is
+ 
+    use Interfaces;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (Mode1 : Character; Mode2 : Character) is
+       C1 : Character := Mode1;
+       C2 : Character := Mode2;
+ 
+       procedure Get_Env_Value_Ptr (Name, Length, Ptr : Address);
+       pragma Import (C, Get_Env_Value_Ptr, "__gnat_getenv");
+ 
+       subtype String2 is String (1 .. 2);
+       type String2_Ptr is access all String2;
+ 
+       Env_Value_Ptr    : aliased String2_Ptr;
+       Env_Value_Length : aliased Integer;
+ 
+       EV_Val : aliased constant String :=
+                  "GNAT_INIT_SCALARS" & ASCII.NUL;
+ 
+       B : Byte1;
+ 
+       EFloat : constant Boolean := Long_Long_Float'Size > Long_Float'Size;
+       --  Set True if we are on an x86 with 96-bit floats for extended
+ 
+       AFloat : constant Boolean :=
+                  Long_Float'Size = 48 and then Long_Long_Float'Size = 48;
+       --  Set True if we are on an AAMP with 48-bit extended floating point
+ 
+       type ByteLF is array (0 .. 7 - 2 * Boolean'Pos (AFloat)) of Byte1;
+ 
+       for ByteLF'Component_Size use 8;
+ 
+       --  Type used to hold Long_Float values on all targets and to initialize
+       --  48-bit Long_Float values used on AAMP. On AAMP, this type is 6 bytes.
+       --  On other targets the type is 8 bytes, and type Byte8 is used for
+       --  values that are then converted to ByteLF.
+ 
+       pragma Warnings (Off); --  why ???
+       function To_ByteLF is new Ada.Unchecked_Conversion (Byte8, ByteLF);
+       pragma Warnings (On);
+ 
+       type ByteLLF is
+         array (0 .. 7 + 4 * Boolean'Pos (EFloat) - 2 * Boolean'Pos (AFloat))
+           of Byte1;
+ 
+       for ByteLLF'Component_Size use 8;
+ 
+       --  Type used to initialize Long_Long_Float values used on x86 and
+       --  any other target with the same 80-bit floating-point values that
+       --  GCC always stores in 96-bits. Note that we are assuming Intel
+       --  format little-endian addressing for this type. On non-Intel
+       --  architectures, this is the same length as Byte8 and holds
+       --  a Long_Float value.
+ 
+       --  The following variables are used to initialize the float values
+       --  by overlay. We can't assign directly to the float values, since
+       --  we may be assigning signalling Nan's that will cause a trap if
+       --  loaded into a floating-point register.
+ 
+       IV_Isf : aliased Byte4;     -- Initialize short float
+       IV_Ifl : aliased Byte4;     -- Initialize float
+       IV_Ilf : aliased ByteLF;    -- Initialize long float
+       IV_Ill : aliased ByteLLF;   -- Initialize long long float
+ 
+       for IV_Isf'Address use IS_Isf'Address;
+       for IV_Ifl'Address use IS_Ifl'Address;
+       for IV_Ilf'Address use IS_Ilf'Address;
+       for IV_Ill'Address use IS_Ill'Address;
+ 
+       --  The following pragmas are used to suppress initialization
+ 
+       pragma Import (Ada, IV_Isf);
+       pragma Import (Ada, IV_Ifl);
+       pragma Import (Ada, IV_Ilf);
+       pragma Import (Ada, IV_Ill);
+ 
+    begin
+       --  Acquire environment variable value if necessary
+ 
+       if C1 = 'E' and then C2 = 'V' then
+          Get_Env_Value_Ptr
+            (EV_Val'Address, Env_Value_Length'Address, Env_Value_Ptr'Address);
+ 
+          --  Ignore if length is not 2
+ 
+          if Env_Value_Length /= 2 then
+             C1 := 'I';
+             C2 := 'N';
+ 
+          --  Length is 2, see if it is a valid value
+ 
+          else
+             --  Acquire two characters and fold to upper case
+ 
+             C1 := Env_Value_Ptr (1);
+             C2 := Env_Value_Ptr (2);
+ 
+             if C1 in 'a' .. 'z' then
+                C1 := Character'Val (Character'Pos (C1) - 32);
+             end if;
+ 
+             if C2 in 'a' .. 'z' then
+                C2 := Character'Val (Character'Pos (C2) - 32);
+             end if;
+ 
+             --  IN/LO/HI are ok values
+ 
+             if (C1 = 'I' and then C2 = 'N')
+                   or else
+                (C1 = 'L' and then C2 = 'O')
+                   or else
+                (C1 = 'H' and then C2 = 'I')
+             then
+                null;
+ 
+             --  Try for valid hex digits
+ 
+             elsif (C1 in '0' .. '9' or else C1 in 'A' .. 'Z')
+                      or else
+                   (C2 in '0' .. '9' or else C2 in 'A' .. 'Z')
+             then
+                null;
+ 
+             --  Otherwise environment value is bad, ignore and use IN (invalid)
+ 
+             else
+                C1 := 'I';
+                C2 := 'N';
+             end if;
+          end if;
+       end if;
+ 
+       --  IN (invalid value)
+ 
+       if C1 = 'I' and then C2 = 'N' then
+          IS_Is1  := 16#80#;
+          IS_Is2  := 16#8000#;
+          IS_Is4  := 16#8000_0000#;
+          IS_Is8  := 16#8000_0000_0000_0000#;
+          IS_Is16 := 16#8000_0000_0000_0000_0000_0000_0000_0000#;
+ 
+          IS_Iu1  := 16#FF#;
+          IS_Iu2  := 16#FFFF#;
+          IS_Iu4  := 16#FFFF_FFFF#;
+          IS_Iu8  := 16#FFFF_FFFF_FFFF_FFFF#;
+          IS_Iu16 := 16#FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF#;
+ 
+          IS_Iz1  := 16#00#;
+          IS_Iz2  := 16#0000#;
+          IS_Iz4  := 16#0000_0000#;
+          IS_Iz8  := 16#0000_0000_0000_0000#;
+          IS_Iz16 := 16#0000_0000_0000_0000_0000_0000_0000_0000#;
+ 
+          if AFloat then
+             IV_Isf := 16#FFFF_FF00#;
+             IV_Ifl := 16#FFFF_FF00#;
+             IV_Ilf := (0, 16#FF#, 16#FF#, 16#FF#, 16#FF#, 16#FF#);
+ 
+          else
+             IV_Isf := IS_Iu4;
+             IV_Ifl := IS_Iu4;
+             IV_Ilf := To_ByteLF (IS_Iu8);
+          end if;
+ 
+          if EFloat then
+             IV_Ill := (0, 0, 0, 0, 0, 0, 0, 16#C0#, 16#FF#, 16#FF#, 0, 0);
+          end if;
+ 
+       --  LO (Low values)
+ 
+       elsif C1 = 'L' and then C2 = 'O' then
+          IS_Is1  := 16#80#;
+          IS_Is2  := 16#8000#;
+          IS_Is4  := 16#8000_0000#;
+          IS_Is8  := 16#8000_0000_0000_0000#;
+          IS_Is16 := 16#8000_0000_0000_0000_0000_0000_0000_0000#;
+ 
+          IS_Iu1  := 16#00#;
+          IS_Iu2  := 16#0000#;
+          IS_Iu4  := 16#0000_0000#;
+          IS_Iu8  := 16#0000_0000_0000_0000#;
+          IS_Iu16 := 16#0000_0000_0000_0000_0000_0000_0000_0000#;
+ 
+          IS_Iz1  := 16#00#;
+          IS_Iz2  := 16#0000#;
+          IS_Iz4  := 16#0000_0000#;
+          IS_Iz8  := 16#0000_0000_0000_0000#;
+          IS_Iz16 := 16#0000_0000_0000_0000_0000_0000_0000_0000#;
+ 
+          if AFloat then
+             IV_Isf := 16#0000_0001#;
+             IV_Ifl := 16#0000_0001#;
+             IV_Ilf := (1, 0, 0, 0, 0, 0);
+ 
+          else
+             IV_Isf := 16#FF80_0000#;
+             IV_Ifl := 16#FF80_0000#;
+             IV_Ilf := To_ByteLF (16#FFF0_0000_0000_0000#);
+          end if;
+ 
+          if EFloat then
+             IV_Ill := (0, 0, 0, 0, 0, 0, 0, 16#80#, 16#FF#, 16#FF#, 0, 0);
+          end if;
+ 
+       --  HI (High values)
+ 
+       elsif C1 = 'H' and then C2 = 'I' then
+          IS_Is1  := 16#7F#;
+          IS_Is2  := 16#7FFF#;
+          IS_Is4  := 16#7FFF_FFFF#;
+          IS_Is8  := 16#7FFF_FFFF_FFFF_FFFF#;
+          IS_Is16 := 16#7FFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF#;
+ 
+          IS_Iu1  := 16#FF#;
+          IS_Iu2  := 16#FFFF#;
+          IS_Iu4  := 16#FFFF_FFFF#;
+          IS_Iu8  := 16#FFFF_FFFF_FFFF_FFFF#;
+          IS_Iu16 := 16#FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF#;
+ 
+          IS_Iz1  := 16#FF#;
+          IS_Iz2  := 16#FFFF#;
+          IS_Iz4  := 16#FFFF_FFFF#;
+          IS_Iz8  := 16#FFFF_FFFF_FFFF_FFFF#;
+          IS_Iz16 := 16#FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF#;
+ 
+          if AFloat then
+             IV_Isf := 16#7FFF_FFFF#;
+             IV_Ifl := 16#7FFF_FFFF#;
+             IV_Ilf := (16#FF#, 16#FF#, 16#FF#, 16#FF#, 16#FF#, 16#7F#);
+ 
+          else
+             IV_Isf := 16#7F80_0000#;
+             IV_Ifl := 16#7F80_0000#;
+             IV_Ilf := To_ByteLF (16#7FF0_0000_0000_0000#);
+          end if;
+ 
+          if EFloat then
+             IV_Ill := (0, 0, 0, 0, 0, 0, 0, 16#80#, 16#FF#, 16#7F#, 0, 0);
+          end if;
+ 
+       --  -Shh (hex byte)
+ 
+       else
+          --  Convert the two hex digits (we know they are valid here)
+ 
+          B := 16 * (Character'Pos (C1)
+                      - (if C1 in '0' .. '9'
+                         then Character'Pos ('0')
+                         else Character'Pos ('A') - 10))
+                  + (Character'Pos (C2)
+                      - (if C2 in '0' .. '9'
+                         then Character'Pos ('0')
+                         else Character'Pos ('A') - 10));
+ 
+          --  Initialize data values from the hex value
+ 
+          IS_Is1  := B;
+          IS_Is2  := 2**8  * Byte2  (IS_Is1) + Byte2  (IS_Is1);
+          IS_Is4  := 2**16 * Byte4  (IS_Is2) + Byte4  (IS_Is2);
+          IS_Is8  := 2**32 * Byte8  (IS_Is4) + Byte8  (IS_Is4);
+          IS_Is16 := 2**64 * Byte16 (IS_Is8) + Byte16 (IS_Is8);
+ 
+          IS_Iu1  := IS_Is1;
+          IS_Iu2  := IS_Is2;
+          IS_Iu4  := IS_Is4;
+          IS_Iu8  := IS_Is8;
+          IS_Iu16 := IS_Is16;
+ 
+          IS_Iz1  := IS_Is1;
+          IS_Iz2  := IS_Is2;
+          IS_Iz4  := IS_Is4;
+          IS_Iz8  := IS_Is8;
+          IS_Iz16 := IS_Is16;
+ 
+          IV_Isf := IS_Is4;
+          IV_Ifl := IS_Is4;
+ 
+          if AFloat then
+             IV_Ill := (B, B, B, B, B, B);
+          else
+             IV_Ilf := To_ByteLF (IS_Is8);
+          end if;
+ 
+          if EFloat then
+             IV_Ill := (B, B, B, B, B, B, B, B, B, B, B, B);
+          end if;
+       end if;
+ 
+       --  If no separate Long_Long_Float, then use Long_Float value as
+       --  Long_Long_Float initial value.
+ 
+       if not EFloat then
+          declare
+             pragma Warnings (Off);  -- why???
+             function To_ByteLLF is
+               new Ada.Unchecked_Conversion (ByteLF, ByteLLF);
+             pragma Warnings (On);
+          begin
+             IV_Ill := To_ByteLLF (IV_Ilf);
+          end;
+       end if;
+    end Initialize;
+ 
+ end System.Scalar_Values;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-scaval__128.ads gcc-11.1.0/gcc/ada/libgnat/s-scaval__128.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-scaval__128.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-scaval__128.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,101 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                          GNAT RUN-TIME COMPONENTS                        --
+ --                                                                          --
+ --                  S Y S T E M . S C A L A R _ V A L U E S                 --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package defines the constants used for initializing scalar values
+ --  when pragma Initialize_Scalars is used. The actual values are defined
+ --  in the binder generated file. This package contains the Ada names that
+ --  are used by the generated code, which are linked to the actual values
+ --  by the use of pragma Import.
+ 
+ --  This is the 128-bit version of the package
+ 
+ with Interfaces;
+ 
+ package System.Scalar_Values is
+ 
+    --  Note: logically this package should be Pure since it can be accessed
+    --  from pure units, but the IS_xxx variables below get set at run time,
+    --  so they have to be library level variables. In fact we only ever
+    --  access this from generated code, and the compiler knows that it is
+    --  OK to access this unit from generated code.
+ 
+    subtype Byte1  is Interfaces.Unsigned_8;
+    subtype Byte2  is Interfaces.Unsigned_16;
+    subtype Byte4  is Interfaces.Unsigned_32;
+    subtype Byte8  is Interfaces.Unsigned_64;
+    subtype Byte16 is Interfaces.Unsigned_128;
+ 
+    --  The explicit initializations here are not really required, since these
+    --  variables are always set by System.Scalar_Values.Initialize.
+ 
+    IS_Is1  : Byte1  := 0;  -- Initialize 1 byte signed
+    IS_Is2  : Byte2  := 0;  -- Initialize 2 byte signed
+    IS_Is4  : Byte4  := 0;  -- Initialize 4 byte signed
+    IS_Is8  : Byte8  := 0;  -- Initialize 8 byte signed
+    IS_Is16 : Byte16 := 0;  -- Initialize 8 byte signed
+    --  For the above cases, the undefined value (set by the binder -Sin switch)
+    --  is the largest negative number (1 followed by all zero bits).
+ 
+    IS_Iu1  : Byte1  := 0;  -- Initialize 1 byte unsigned
+    IS_Iu2  : Byte2  := 0;  -- Initialize 2 byte unsigned
+    IS_Iu4  : Byte4  := 0;  -- Initialize 4 byte unsigned
+    IS_Iu8  : Byte8  := 0;  -- Initialize 8 byte unsigned
+    IS_Iu16 : Byte16 := 0;  -- Initialize 8 byte unsigned
+    --  For the above cases, the undefined value (set by the binder -Sin switch)
+    --  is the largest unsigned number (all 1 bits).
+ 
+    IS_Iz1  : Byte1  := 0;  -- Initialize 1 byte zeroes
+    IS_Iz2  : Byte2  := 0;  -- Initialize 2 byte zeroes
+    IS_Iz4  : Byte4  := 0;  -- Initialize 4 byte zeroes
+    IS_Iz8  : Byte8  := 0;  -- Initialize 8 byte zeroes
+    IS_Iz16 : Byte16 := 0;  -- Initialize 8 byte zeroes
+    --  For the above cases, the undefined value (set by the binder -Sin switch)
+    --  is the zero (all 0 bits). This is used when zero is known to be an
+    --  invalid value.
+ 
+    --  The float definitions are aliased, because we use overlays to set them
+ 
+    IS_Isf : aliased Short_Float     := 0.0;  -- Initialize short float
+    IS_Ifl : aliased Float           := 0.0;  -- Initialize float
+    IS_Ilf : aliased Long_Float      := 0.0;  -- Initialize long float
+    IS_Ill : aliased Long_Long_Float := 0.0;  -- Initialize long long float
+ 
+    procedure Initialize (Mode1 : Character; Mode2 : Character);
+    --  This procedure is called from the binder when Initialize_Scalars mode
+    --  is active. The arguments are the two characters from the -S switch,
+    --  with letters forced upper case. So for example if -S5a is given, then
+    --  Mode1 will be '5' and Mode2 will be 'A'. If the parameters are EV,
+    --  then this routine reads the environment variable GNAT_INIT_SCALARS.
+    --  The possible settings are the same as those for the -S switch (except
+    --  for EV), i.e. IN/LO/HO/xx, xx = 2 hex digits. If no -S switch is given
+    --  then the default of IN (invalid values) is passed on the call.
+ 
+ end System.Scalar_Values;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-secsta.adb gcc-11.1.0/gcc/ada/libgnat/s-secsta.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-secsta.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-secsta.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Secondary_Stack is
*** 564,570 ****
        --------------
  
        function Round_Up (Size : Storage_Count) return Memory_Size is
!          Algn_MS : constant Memory_Size := Standard'Maximum_Alignment;
           Size_MS : constant Memory_Size := Memory_Size (Size);
  
        begin
--- 564,570 ----
        --------------
  
        function Round_Up (Size : Storage_Count) return Memory_Size is
!          Algn_MS : constant Memory_Size := Memory_Alignment;
           Size_MS : constant Memory_Size := Memory_Size (Size);
  
        begin
*************** package body System.Secondary_Stack is
*** 573,579 ****
           --  Treat this case as secondary-stack depletion.
  
           if Memory_Size'Last - Algn_MS < Size_MS then
!             raise Storage_Error with "secondary stack exhaused";
           end if;
  
           return ((Size_MS + Algn_MS - 1) / Algn_MS) * Algn_MS;
--- 573,579 ----
           --  Treat this case as secondary-stack depletion.
  
           if Memory_Size'Last - Algn_MS < Size_MS then
!             raise Storage_Error with "secondary stack exhausted";
           end if;
  
           return ((Size_MS + Algn_MS - 1) / Algn_MS) * Algn_MS;
*************** package body System.Secondary_Stack is
*** 587,601 ****
     --  Start of processing for SS_Allocate
  
     begin
-       --  It should not be possible to request an allocation of negative or
-       --  zero size.
- 
-       pragma Assert (Storage_Size > 0);
- 
        --  Round the requested size up to the nearest multiple of the maximum
        --  alignment to ensure efficient access.
  
!       Mem_Size := Round_Up (Storage_Size);
  
        if Sec_Stack_Dynamic then
           Allocate_Dynamic (Stack, Mem_Size, Addr);
--- 587,604 ----
     --  Start of processing for SS_Allocate
  
     begin
        --  Round the requested size up to the nearest multiple of the maximum
        --  alignment to ensure efficient access.
  
!       if Storage_Size = 0 then
!          Mem_Size := Memory_Alignment;
!       else
!          --  It should not be possible to request an allocation of negative
!          --  size.
! 
!          pragma Assert (Storage_Size >= 0);
!          Mem_Size := Round_Up (Storage_Size);
!       end if;
  
        if Sec_Stack_Dynamic then
           Allocate_Dynamic (Stack, Mem_Size, Addr);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-secsta.ads gcc-11.1.0/gcc/ada/libgnat/s-secsta.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-secsta.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-secsta.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** private
*** 261,270 ****
     subtype Memory_Index is Memory_Size;
     --  Index into the memory storage of a single chunk
  
     type Chunk_Memory is array (Memory_Size range <>) of SSE.Storage_Element;
!    for Chunk_Memory'Alignment use Standard'Maximum_Alignment;
!    --  The memory storage of a single chunk. It utilizes maximum alignment in
!    --  order to guarantee efficient operations.
  
     --------------
     -- SS_Chunk --
--- 261,283 ----
     subtype Memory_Index is Memory_Size;
     --  Index into the memory storage of a single chunk
  
+    Memory_Alignment : constant := Standard'Maximum_Alignment * 2;
+    --  The memory alignment we will want to honor on every allocation.
+    --
+    --  At this stage, gigi assumes we can accommodate any alignment requirement
+    --  there might be on the data type for which the memory gets allocated (see
+    --  build_call_alloc_dealloc).
+    --
+    --  The multiplication factor is intended to account for requirements
+    --  by user code compiled with specific arch/cpu options such as -mavx
+    --  on X86[_64] targets, which Standard'Maximum_Alignment doesn't convey
+    --  without such compilation options. * 4 would actually be needed to
+    --  support -mavx512f on X86, but this would incur more annoying memory
+    --  consumption overheads.
+ 
     type Chunk_Memory is array (Memory_Size range <>) of SSE.Storage_Element;
!    for Chunk_Memory'Alignment use Memory_Alignment;
!    --  The memory storage of a single chunk
  
     --------------
     -- SS_Chunk --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-sequio.adb gcc-11.1.0/gcc/ada/libgnat/s-sequio.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-sequio.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-sequio.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-sequio.ads gcc-11.1.0/gcc/ada/libgnat/s-sequio.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-sequio.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-sequio.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 1992-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 1992-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-shabig.ads gcc-11.1.0/gcc/ada/libgnat/s-shabig.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-shabig.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-shabig.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,80 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                S Y S T E M . S H A R E D _ B I G N U M S                 --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2012-2020, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides declarations shared across all instantiations of
+ --  System.Generic_Bignums.
+ 
+ with Ada.Unchecked_Conversion;
+ with Interfaces;
+ 
+ package System.Shared_Bignums is
+    pragma Preelaborate;
+ 
+    pragma Assert (Long_Long_Integer'Size = 64);
+    --  This package assumes that Long_Long_Integer size is 64 bit (i.e. that it
+    --  has a range of -2**63 to 2**63-1). The front end ensures that the mode
+    --  ELIMINATED is not allowed for overflow checking if this is not the case.
+ 
+    subtype Length is Natural range 0 .. 2 ** 23 - 1;
+    --  Represent number of words in Digit_Vector
+ 
+    Base : constant := 2 ** 32;
+    --  Digit vectors use this base
+ 
+    subtype SD is Interfaces.Unsigned_32;
+    --  Single length digit
+ 
+    type Digit_Vector is array (Length range <>) of SD;
+    --  Represent digits of a number (most significant digit first)
+ 
+    type Bignum_Data (Len : Length) is record
+       Neg : Boolean;
+       --  Set if value is negative, never set for zero
+ 
+       D : Digit_Vector (1 .. Len);
+       --  Digits of number, most significant first, represented in base
+       --  2**Base. No leading zeroes are stored, and the value of zero is
+       --  represented using an empty vector for D.
+    end record;
+ 
+    for Bignum_Data use record
+       Len at 0 range 0 .. 23;
+       Neg at 3 range 0 .. 7;
+    end record;
+ 
+    type Bignum is access all Bignum_Data;
+ 
+    function To_Bignum is new Ada.Unchecked_Conversion (System.Address, Bignum);
+ 
+    function To_Address is new
+      Ada.Unchecked_Conversion (Bignum, System.Address);
+ 
+ end System.Shared_Bignums;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-shasto.adb gcc-11.1.0/gcc/ada/libgnat/s-shasto.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-shasto.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-shasto.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-shasto.ads gcc-11.1.0/gcc/ada/libgnat/s-shasto.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-shasto.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-shasto.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-soflin.adb gcc-11.1.0/gcc/ada/libgnat/s-soflin.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-soflin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-soflin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,40 ****
  
  pragma Compiler_Unit_Warning;
  
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we get an
- --  infinite loop from the code within the Poll routine itself.
- 
  pragma Warnings (Off);
  --  Disable warnings as System.Soft_Links.Initialize is not Preelaborate. It is
  --  safe to with this unit as its elaboration routine will only be initializing
--- 31,36 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-soflin.ads gcc-11.1.0/gcc/ada/libgnat/s-soflin.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-soflin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-soflin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-soliin.adb gcc-11.1.0/gcc/ada/libgnat/s-soliin.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-soliin.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-soliin.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2017-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2017-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-soliin.ads gcc-11.1.0/gcc/ada/libgnat/s-soliin.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-soliin.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-soliin.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2017-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2017-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-sopco3.adb gcc-11.1.0/gcc/ada/libgnat/s-sopco3.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-sopco3.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-sopco3.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-sopco3.ads gcc-11.1.0/gcc/ada/libgnat/s-sopco3.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-sopco3.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-sopco3.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-sopco4.adb gcc-11.1.0/gcc/ada/libgnat/s-sopco4.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-sopco4.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-sopco4.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-sopco4.ads gcc-11.1.0/gcc/ada/libgnat/s-sopco4.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-sopco4.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-sopco4.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-sopco5.adb gcc-11.1.0/gcc/ada/libgnat/s-sopco5.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-sopco5.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-sopco5.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-sopco5.ads gcc-11.1.0/gcc/ada/libgnat/s-sopco5.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-sopco5.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-sopco5.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-spsufi.adb gcc-11.1.0/gcc/ada/libgnat/s-spsufi.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-spsufi.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-spsufi.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-spsufi.ads gcc-11.1.0/gcc/ada/libgnat/s-spsufi.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-spsufi.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-spsufi.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stache.adb gcc-11.1.0/gcc/ada/libgnat/s-stache.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-stache.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stache.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --           Copyright (C) 1999-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --           Copyright (C) 1999-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stache.ads gcc-11.1.0/gcc/ada/libgnat/s-stache.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-stache.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stache.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 1999-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 1999-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stalib.adb gcc-11.1.0/gcc/ada/libgnat/s-stalib.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-stalib.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stalib.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Compiler_Unit_Warning;
*** 36,45 ****
  --  of System.Standard_Library, since this would cause order of elaboration
  --  problems (Elaborate_Body would have the same problem).
  
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we get
- --  elaboration circularities with Ada.Exceptions if polling is on.
- 
  pragma Warnings (Off);
  --  Kill warnings from unused withs. These unused with's are here to make
  --  sure the relevant units are loaded and properly elaborated.
--- 36,41 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stalib.ads gcc-11.1.0/gcc/ada/libgnat/s-stalib.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-stalib.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stalib.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 46,55 ****
  
  pragma Compiler_Unit_Warning;
  
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we get
- --  elaboration circularities with Ada.Exceptions if polling is on.
- 
  with Ada.Unchecked_Conversion;
  
  package System.Standard_Library is
--- 46,51 ----
*************** package System.Standard_Library is
*** 81,86 ****
--- 77,83 ----
     -------------------------------------
  
     type Raise_Action is access procedure;
+    pragma Favor_Top_Level (Raise_Action);
     --  A pointer to a procedure used in the Raise_Hook field
  
     type Exception_Data;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-statxd.adb gcc-11.1.0/gcc/ada/libgnat/s-statxd.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-statxd.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-statxd.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,2010 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --          S Y S T E M . S T R E A M _ A T T R I B U T E S . X D R         --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --         Copyright (C) 1996-2020, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GARLIC is free software;  you can redistribute it and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.IO_Exceptions;
+ with Ada.Streams;              use Ada.Streams;
+ with Ada.Unchecked_Conversion;
+ 
+ package body System.Stream_Attributes.XDR is
+ 
+    pragma Suppress (Range_Check);
+    pragma Suppress (Overflow_Check);
+ 
+    use UST;
+ 
+    Data_Error : exception renames Ada.IO_Exceptions.End_Error;
+    --  Exception raised if insufficient data read (End_Error is mandated by
+    --  AI95-00132).
+ 
+    SU : constant := System.Storage_Unit;
+    --  The code in this body assumes that SU = 8
+ 
+    BB : constant := 2 ** SU;           --  Byte base
+    BL : constant := 2 ** SU - 1;       --  Byte last
+    BS : constant := 2 ** (SU - 1);     --  Byte sign
+ 
+    US : constant := Unsigned'Size;     --  Unsigned size
+    UB : constant := (US - 1) / SU + 1; --  Unsigned byte
+    UL : constant := 2 ** US - 1;       --  Unsigned last
+ 
+    subtype SE  is Ada.Streams.Stream_Element;
+    subtype SEA is Ada.Streams.Stream_Element_Array;
+    subtype SEO is Ada.Streams.Stream_Element_Offset;
+ 
+    type Field_Type is record
+       E_Size       : Integer; --  Exponent bit size
+       E_Bias       : Integer; --  Exponent bias
+       F_Size       : Integer; --  Fraction bit size
+       E_Last       : Integer; --  Max exponent value
+       F_Mask       : SE;      --  Mask to apply on first fraction byte
+       E_Bytes      : SEO;     --  N. of exponent bytes completely used
+       F_Bytes      : SEO;     --  N. of fraction bytes completely used
+       F_Bits       : Integer; --  N. of bits used on first fraction word
+    end record;
+ 
+    type Precision is (Single, Double, Quadruple);
+ 
+    Fields : constant array (Precision) of Field_Type := (
+ 
+                --  Single precision
+ 
+               (E_Size  => 8,
+                E_Bias  => 127,
+                F_Size  => 23,
+                E_Last  => 2 ** 8 - 1,
+                F_Mask  => 16#7F#,                  --  2 ** 7 - 1,
+                E_Bytes => 2,
+                F_Bytes => 3,
+                F_Bits  => 23 mod US),
+ 
+                --  Double precision
+ 
+               (E_Size  => 11,
+                E_Bias  => 1023,
+                F_Size  => 52,
+                E_Last  => 2 ** 11 - 1,
+                F_Mask  => 16#0F#,                  --  2 ** 4 - 1,
+                E_Bytes => 2,
+                F_Bytes => 7,
+                F_Bits  => 52 mod US),
+ 
+                --  Quadruple precision
+ 
+               (E_Size  => 15,
+                E_Bias  => 16383,
+                F_Size  => 112,
+                E_Last  => 2 ** 8 - 1,
+                F_Mask  => 16#FF#,                  --  2 ** 8 - 1,
+                E_Bytes => 2,
+                F_Bytes => 14,
+                F_Bits  => 112 mod US));
+ 
+    --  The representation of all items requires a multiple of four bytes
+    --  (or 32 bits) of data. The bytes are numbered 0 through n-1. The bytes
+    --  are read or written to some byte stream such that byte m always
+    --  precedes byte m+1. If the n bytes needed to contain the data are not
+    --  a multiple of four, then the n bytes are followed by enough (0 to 3)
+    --  residual zero bytes, r, to make the total byte count a multiple of 4.
+ 
+    --  An XDR signed integer is a 32-bit datum that encodes an integer
+    --  in the range [-2147483648,2147483647]. The integer is represented
+    --  in two's complement notation. The most and least significant bytes
+    --  are 0 and 3, respectively. Integers are declared as follows:
+ 
+    --        (MSB)                   (LSB)
+    --      +-------+-------+-------+-------+
+    --      |byte 0 |byte 1 |byte 2 |byte 3 |
+    --      +-------+-------+-------+-------+
+    --      <------------32 bits------------>
+ 
+    SSI_L : constant := 1;
+    SI_L  : constant := 2;
+    I24_L : constant := 3;
+    I_L   : constant := 4;
+    LI_L  : constant := 8;
+    LLI_L : constant := 8;
+ 
+    subtype XDR_S_SSI is SEA (1 .. SSI_L);
+    subtype XDR_S_SI  is SEA (1 .. SI_L);
+    subtype XDR_S_I24 is SEA (1 .. I24_L);
+    subtype XDR_S_I   is SEA (1 .. I_L);
+    subtype XDR_S_LI  is SEA (1 .. LI_L);
+    subtype XDR_S_LLI is SEA (1 .. LLI_L);
+ 
+    function Short_Short_Integer_To_XDR_S_SSI is
+      new Ada.Unchecked_Conversion (Short_Short_Integer, XDR_S_SSI);
+    function XDR_S_SSI_To_Short_Short_Integer is
+      new Ada.Unchecked_Conversion (XDR_S_SSI, Short_Short_Integer);
+ 
+    function Short_Integer_To_XDR_S_SI is
+      new Ada.Unchecked_Conversion (Short_Integer, XDR_S_SI);
+    function XDR_S_SI_To_Short_Integer is
+      new Ada.Unchecked_Conversion (XDR_S_SI, Short_Integer);
+ 
+    function Integer_To_XDR_S_I24 is
+      new Ada.Unchecked_Conversion (Integer_24, XDR_S_I24);
+    function XDR_S_I24_To_Integer is
+      new Ada.Unchecked_Conversion (XDR_S_I24, Integer_24);
+ 
+    function Integer_To_XDR_S_I is
+      new Ada.Unchecked_Conversion (Integer, XDR_S_I);
+    function XDR_S_I_To_Integer is
+      new Ada.Unchecked_Conversion (XDR_S_I, Integer);
+ 
+    function Long_Long_Integer_To_XDR_S_LI is
+      new Ada.Unchecked_Conversion (Long_Long_Integer, XDR_S_LI);
+    function XDR_S_LI_To_Long_Long_Integer is
+      new Ada.Unchecked_Conversion (XDR_S_LI, Long_Long_Integer);
+ 
+    function Long_Long_Integer_To_XDR_S_LLI is
+      new Ada.Unchecked_Conversion (Long_Long_Integer, XDR_S_LLI);
+    function XDR_S_LLI_To_Long_Long_Integer is
+      new Ada.Unchecked_Conversion (XDR_S_LLI, Long_Long_Integer);
+ 
+    --  An XDR unsigned integer is a 32-bit datum that encodes a nonnegative
+    --  integer in the range [0,4294967295]. It is represented by an unsigned
+    --  binary number whose most and least significant bytes are 0 and 3,
+    --  respectively. An unsigned integer is declared as follows:
+ 
+    --        (MSB)                   (LSB)
+    --      +-------+-------+-------+-------+
+    --      |byte 0 |byte 1 |byte 2 |byte 3 |
+    --      +-------+-------+-------+-------+
+    --      <------------32 bits------------>
+ 
+    SSU_L : constant := 1;
+    SU_L  : constant := 2;
+    U24_L : constant := 3;
+    U_L   : constant := 4;
+    LU_L  : constant := 8;
+    LLU_L : constant := 8;
+ 
+    subtype XDR_S_SSU is SEA (1 .. SSU_L);
+    subtype XDR_S_SU  is SEA (1 .. SU_L);
+    subtype XDR_S_U24 is SEA (1 .. U24_L);
+    subtype XDR_S_U   is SEA (1 .. U_L);
+    subtype XDR_S_LU  is SEA (1 .. LU_L);
+    subtype XDR_S_LLU is SEA (1 .. LLU_L);
+ 
+    type XDR_SSU is mod BB ** SSU_L;
+    type XDR_SU  is mod BB ** SU_L;
+    type XDR_U   is mod BB ** U_L;
+    type XDR_U24 is mod BB ** U24_L;
+ 
+    function Short_Unsigned_To_XDR_S_SU is
+      new Ada.Unchecked_Conversion (Short_Unsigned, XDR_S_SU);
+    function XDR_S_SU_To_Short_Unsigned is
+      new Ada.Unchecked_Conversion (XDR_S_SU, Short_Unsigned);
+ 
+    function Unsigned_To_XDR_S_U24 is
+      new Ada.Unchecked_Conversion (Unsigned_24, XDR_S_U24);
+    function XDR_S_U24_To_Unsigned is
+      new Ada.Unchecked_Conversion (XDR_S_U24, Unsigned_24);
+ 
+    function Unsigned_To_XDR_S_U is
+      new Ada.Unchecked_Conversion (Unsigned, XDR_S_U);
+    function XDR_S_U_To_Unsigned is
+      new Ada.Unchecked_Conversion (XDR_S_U, Unsigned);
+ 
+    function Long_Long_Unsigned_To_XDR_S_LU is
+      new Ada.Unchecked_Conversion (Long_Long_Unsigned, XDR_S_LU);
+    function XDR_S_LU_To_Long_Long_Unsigned is
+      new Ada.Unchecked_Conversion (XDR_S_LU, Long_Long_Unsigned);
+ 
+    function Long_Long_Unsigned_To_XDR_S_LLU is
+      new Ada.Unchecked_Conversion (Long_Long_Unsigned, XDR_S_LLU);
+    function XDR_S_LLU_To_Long_Long_Unsigned is
+      new Ada.Unchecked_Conversion (XDR_S_LLU, Long_Long_Unsigned);
+ 
+    --  The standard defines the floating-point data type "float" (32 bits
+    --  or 4 bytes). The encoding used is the IEEE standard for normalized
+    --  single-precision floating-point numbers.
+ 
+    --  The standard defines the encoding used for the double-precision
+    --  floating-point data type "double" (64 bits or 8 bytes). The encoding
+    --  used is the IEEE standard for normalized double-precision floating-point
+    --  numbers.
+ 
+    SF_L  : constant := 4;   --  Single precision
+    F_L   : constant := 4;   --  Single precision
+    LF_L  : constant := 8;   --  Double precision
+    LLF_L : constant := 16;  --  Quadruple precision
+ 
+    TM_L : constant := 8;
+    subtype XDR_S_TM is SEA (1 .. TM_L);
+    type XDR_TM is mod BB ** TM_L;
+ 
+    type XDR_SA is mod 2 ** Standard'Address_Size;
+    function To_XDR_SA is new Ada.Unchecked_Conversion (System.Address, XDR_SA);
+    function To_XDR_SA is new Ada.Unchecked_Conversion (XDR_SA, System.Address);
+ 
+    --  Enumerations have the same representation as signed integers.
+    --  Enumerations are handy for describing subsets of the integers.
+ 
+    --  Booleans are important enough and occur frequently enough to warrant
+    --  their own explicit type in the standard. Booleans are declared as
+    --  an enumeration, with FALSE = 0 and TRUE = 1.
+ 
+    --  The standard defines a string of n (numbered 0 through n-1) ASCII
+    --  bytes to be the number n encoded as an unsigned integer (as described
+    --  above), and followed by the n bytes of the string. Byte m of the string
+    --  always precedes byte m+1 of the string, and byte 0 of the string always
+    --  follows the string's length. If n is not a multiple of four, then the
+    --  n bytes are followed by enough (0 to 3) residual zero bytes, r, to make
+    --  the total byte count a multiple of four.
+ 
+    --  To fit with XDR string, do not consider character as an enumeration
+    --  type.
+ 
+    C_L   : constant := 1;
+    subtype XDR_S_C is SEA (1 .. C_L);
+ 
+    --  Consider Wide_Character as an enumeration type
+ 
+    WC_L  : constant := 4;
+    subtype XDR_S_WC is SEA (1 .. WC_L);
+    type XDR_WC is mod BB ** WC_L;
+ 
+    --  Consider Wide_Wide_Character as an enumeration type
+ 
+    WWC_L : constant := 8;
+    subtype XDR_S_WWC is SEA (1 .. WWC_L);
+    type XDR_WWC is mod BB ** WWC_L;
+ 
+    --  Optimization: if we already have the correct Bit_Order, then some
+    --  computations can be avoided since the source and the target will be
+    --  identical anyway. They will be replaced by direct unchecked
+    --  conversions.
+ 
+    Optimize_Integers : constant Boolean :=
+      Default_Bit_Order = High_Order_First;
+ 
+    ----------
+    -- I_AD --
+    ----------
+ 
+    function I_AD (Stream : not null access RST) return Fat_Pointer is
+       FP : Fat_Pointer;
+ 
+    begin
+       FP.P1 := I_AS (Stream).P1;
+       FP.P2 := I_AS (Stream).P1;
+ 
+       return FP;
+    end I_AD;
+ 
+    ----------
+    -- I_AS --
+    ----------
+ 
+    function I_AS (Stream : not null access RST) return Thin_Pointer is
+       S : XDR_S_TM;
+       L : SEO;
+       U : XDR_TM := 0;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+ 
+       else
+          for N in S'Range loop
+             U := U * BB + XDR_TM (S (N));
+          end loop;
+ 
+          return (P1 => To_XDR_SA (XDR_SA (U)));
+       end if;
+    end I_AS;
+ 
+    ---------
+    -- I_B --
+    ---------
+ 
+    function I_B (Stream : not null access RST) return Boolean is
+    begin
+       case I_SSU (Stream) is
+          when 0      => return False;
+          when 1      => return True;
+          when others => raise Data_Error;
+       end case;
+    end I_B;
+ 
+    ---------
+    -- I_C --
+    ---------
+ 
+    function I_C (Stream : not null access RST) return Character is
+       S : XDR_S_C;
+       L : SEO;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+ 
+       else
+          --  Use Ada requirements on Character representation clause
+ 
+          return Character'Val (S (1));
+       end if;
+    end I_C;
+ 
+    ---------
+    -- I_F --
+    ---------
+ 
+    function I_F (Stream : not null access RST) return Float is
+       I       : constant Precision := Single;
+       E_Size  : Integer  renames Fields (I).E_Size;
+       E_Bias  : Integer  renames Fields (I).E_Bias;
+       E_Last  : Integer  renames Fields (I).E_Last;
+       F_Mask  : SE       renames Fields (I).F_Mask;
+       E_Bytes : SEO      renames Fields (I).E_Bytes;
+       F_Bytes : SEO      renames Fields (I).F_Bytes;
+       F_Size  : Integer  renames Fields (I).F_Size;
+ 
+       Is_Positive : Boolean;
+       Exponent    : Long_Unsigned;
+       Fraction    : Long_Unsigned;
+       Result      : Float;
+       S           : SEA (1 .. F_L);
+       L           : SEO;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+       end if;
+ 
+       --  Extract Fraction, Sign and Exponent
+ 
+       Fraction := Long_Unsigned (S (F_L + 1 - F_Bytes) and F_Mask);
+       for N in F_L + 2 - F_Bytes .. F_L loop
+          Fraction := Fraction * BB + Long_Unsigned (S (N));
+       end loop;
+       Result := Float'Scaling (Float (Fraction), -F_Size);
+ 
+       if BS <= S (1) then
+          Is_Positive := False;
+          Exponent := Long_Unsigned (S (1) - BS);
+       else
+          Is_Positive := True;
+          Exponent := Long_Unsigned (S (1));
+       end if;
+ 
+       for N in 2 .. E_Bytes loop
+          Exponent := Exponent * BB + Long_Unsigned (S (N));
+       end loop;
+       Exponent := Shift_Right (Exponent, Integer (E_Bytes) * SU - E_Size - 1);
+ 
+       --  NaN or Infinities
+ 
+       if Integer (Exponent) = E_Last then
+          raise Constraint_Error;
+ 
+       elsif Exponent = 0 then
+ 
+          --  Signed zeros
+ 
+          if Fraction = 0 then
+             null;
+ 
+          --  Denormalized float
+ 
+          else
+             Result := Float'Scaling (Result, 1 - E_Bias);
+          end if;
+ 
+       --  Normalized float
+ 
+       else
+          Result := Float'Scaling
+            (1.0 + Result, Integer (Exponent) - E_Bias);
+       end if;
+ 
+       if not Is_Positive then
+          Result := -Result;
+       end if;
+ 
+       return Result;
+    end I_F;
+ 
+    ---------
+    -- I_I --
+    ---------
+ 
+    function I_I (Stream : not null access RST) return Integer is
+       S : XDR_S_I;
+       L : SEO;
+       U : XDR_U := 0;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+ 
+       elsif Optimize_Integers then
+          return XDR_S_I_To_Integer (S);
+ 
+       else
+          for N in S'Range loop
+             U := U * BB + XDR_U (S (N));
+          end loop;
+ 
+          --  Test sign and apply two complement notation
+ 
+          if S (1) < BL then
+             return Integer (U);
+ 
+          else
+             return Integer (-((XDR_U'Last xor U) + 1));
+          end if;
+       end if;
+    end I_I;
+ 
+    -----------
+    -- I_I24 --
+    -----------
+ 
+    function I_I24 (Stream : not null access RST) return Integer_24 is
+       S : XDR_S_I24;
+       L : SEO;
+       U : XDR_U24 := 0;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+ 
+       elsif Optimize_Integers then
+          return XDR_S_I24_To_Integer (S);
+ 
+       else
+          for N in S'Range loop
+             U := U * BB + XDR_U24 (S (N));
+          end loop;
+ 
+          --  Test sign and apply two complement notation
+ 
+          if S (1) < BL then
+             return Integer_24 (U);
+ 
+          else
+             return Integer_24 (-((XDR_U24'Last xor U) + 1));
+          end if;
+       end if;
+    end I_I24;
+ 
+    ----------
+    -- I_LF --
+    ----------
+ 
+    function I_LF (Stream : not null access RST) return Long_Float is
+       I       : constant Precision := Double;
+       E_Size  : Integer  renames Fields (I).E_Size;
+       E_Bias  : Integer  renames Fields (I).E_Bias;
+       E_Last  : Integer  renames Fields (I).E_Last;
+       F_Mask  : SE       renames Fields (I).F_Mask;
+       E_Bytes : SEO      renames Fields (I).E_Bytes;
+       F_Bytes : SEO      renames Fields (I).F_Bytes;
+       F_Size  : Integer  renames Fields (I).F_Size;
+ 
+       Is_Positive : Boolean;
+       Exponent    : Long_Unsigned;
+       Fraction    : Long_Long_Unsigned;
+       Result      : Long_Float;
+       S           : SEA (1 .. LF_L);
+       L           : SEO;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+       end if;
+ 
+       --  Extract Fraction, Sign and Exponent
+ 
+       Fraction := Long_Long_Unsigned (S (LF_L + 1 - F_Bytes) and F_Mask);
+       for N in LF_L + 2 - F_Bytes .. LF_L loop
+          Fraction := Fraction * BB + Long_Long_Unsigned (S (N));
+       end loop;
+ 
+       Result := Long_Float'Scaling (Long_Float (Fraction), -F_Size);
+ 
+       if BS <= S (1) then
+          Is_Positive := False;
+          Exponent := Long_Unsigned (S (1) - BS);
+       else
+          Is_Positive := True;
+          Exponent := Long_Unsigned (S (1));
+       end if;
+ 
+       for N in 2 .. E_Bytes loop
+          Exponent := Exponent * BB + Long_Unsigned (S (N));
+       end loop;
+ 
+       Exponent := Shift_Right (Exponent, Integer (E_Bytes) * SU - E_Size - 1);
+ 
+       --  NaN or Infinities
+ 
+       if Integer (Exponent) = E_Last then
+          raise Constraint_Error;
+ 
+       elsif Exponent = 0 then
+ 
+          --  Signed zeros
+ 
+          if Fraction = 0 then
+             null;
+ 
+          --  Denormalized float
+ 
+          else
+             Result := Long_Float'Scaling (Result, 1 - E_Bias);
+          end if;
+ 
+       --  Normalized float
+ 
+       else
+          Result := Long_Float'Scaling
+            (1.0 + Result, Integer (Exponent) - E_Bias);
+       end if;
+ 
+       if not Is_Positive then
+          Result := -Result;
+       end if;
+ 
+       return Result;
+    end I_LF;
+ 
+    ----------
+    -- I_LI --
+    ----------
+ 
+    function I_LI (Stream : not null access RST) return Long_Integer is
+       S : XDR_S_LI;
+       L : SEO;
+       U : Unsigned := 0;
+       X : Long_Unsigned := 0;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+ 
+       elsif Optimize_Integers then
+          return Long_Integer (XDR_S_LI_To_Long_Long_Integer (S));
+ 
+       else
+ 
+          --  Compute using machine unsigned
+          --  rather than long_long_unsigned
+ 
+          for N in S'Range loop
+             U := U * BB + Unsigned (S (N));
+ 
+             --  We have filled an unsigned
+ 
+             if N mod UB = 0 then
+                X := Shift_Left (X, US) + Long_Unsigned (U);
+                U := 0;
+             end if;
+          end loop;
+ 
+          --  Test sign and apply two complement notation
+ 
+          if S (1) < BL then
+             return Long_Integer (X);
+          else
+             return Long_Integer (-((Long_Unsigned'Last xor X) + 1));
+          end if;
+ 
+       end if;
+    end I_LI;
+ 
+    -----------
+    -- I_LLF --
+    -----------
+ 
+    function I_LLF (Stream : not null access RST) return Long_Long_Float is
+       I       : constant Precision := Quadruple;
+       E_Size  : Integer  renames Fields (I).E_Size;
+       E_Bias  : Integer  renames Fields (I).E_Bias;
+       E_Last  : Integer  renames Fields (I).E_Last;
+       E_Bytes : SEO      renames Fields (I).E_Bytes;
+       F_Bytes : SEO      renames Fields (I).F_Bytes;
+       F_Size  : Integer  renames Fields (I).F_Size;
+ 
+       Is_Positive   : Boolean;
+       Exponent   : Long_Unsigned;
+       Fraction_1 : Long_Long_Unsigned := 0;
+       Fraction_2 : Long_Long_Unsigned := 0;
+       Result     : Long_Long_Float;
+       HF         : constant Natural := F_Size / 2;
+       S          : SEA (1 .. LLF_L);
+       L          : SEO;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+       end if;
+ 
+       --  Extract Fraction, Sign and Exponent
+ 
+       for I in LLF_L - F_Bytes + 1 .. LLF_L - 7 loop
+          Fraction_1 := Fraction_1 * BB + Long_Long_Unsigned (S (I));
+       end loop;
+ 
+       for I in SEO (LLF_L - 6) .. SEO (LLF_L) loop
+          Fraction_2 := Fraction_2 * BB + Long_Long_Unsigned (S (I));
+       end loop;
+ 
+       Result := Long_Long_Float'Scaling (Long_Long_Float (Fraction_2), -HF);
+       Result := Long_Long_Float (Fraction_1) + Result;
+       Result := Long_Long_Float'Scaling (Result, HF - F_Size);
+ 
+       if BS <= S (1) then
+          Is_Positive := False;
+          Exponent := Long_Unsigned (S (1) - BS);
+       else
+          Is_Positive := True;
+          Exponent := Long_Unsigned (S (1));
+       end if;
+ 
+       for N in 2 .. E_Bytes loop
+          Exponent := Exponent * BB + Long_Unsigned (S (N));
+       end loop;
+ 
+       Exponent := Shift_Right (Exponent, Integer (E_Bytes) * SU - E_Size - 1);
+ 
+       --  NaN or Infinities
+ 
+       if Integer (Exponent) = E_Last then
+          raise Constraint_Error;
+ 
+       elsif Exponent = 0 then
+ 
+          --  Signed zeros
+ 
+          if Fraction_1 = 0 and then Fraction_2 = 0 then
+             null;
+ 
+          --  Denormalized float
+ 
+          else
+             Result := Long_Long_Float'Scaling (Result, 1 - E_Bias);
+          end if;
+ 
+       --  Normalized float
+ 
+       else
+          Result := Long_Long_Float'Scaling
+            (1.0 + Result, Integer (Exponent) - E_Bias);
+       end if;
+ 
+       if not Is_Positive then
+          Result := -Result;
+       end if;
+ 
+       return Result;
+    end I_LLF;
+ 
+    -----------
+    -- I_LLI --
+    -----------
+ 
+    function I_LLI (Stream : not null access RST) return Long_Long_Integer is
+       S : XDR_S_LLI;
+       L : SEO;
+       U : Unsigned := 0;
+       X : Long_Long_Unsigned := 0;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+ 
+       elsif Optimize_Integers then
+          return XDR_S_LLI_To_Long_Long_Integer (S);
+ 
+       else
+          --  Compute using machine unsigned for computing
+          --  rather than long_long_unsigned.
+ 
+          for N in S'Range loop
+             U := U * BB + Unsigned (S (N));
+ 
+             --  We have filled an unsigned
+ 
+             if N mod UB = 0 then
+                X := Shift_Left (X, US) + Long_Long_Unsigned (U);
+                U := 0;
+             end if;
+          end loop;
+ 
+          --  Test sign and apply two complement notation
+ 
+          if S (1) < BL then
+             return Long_Long_Integer (X);
+          else
+             return Long_Long_Integer (-((Long_Long_Unsigned'Last xor X) + 1));
+          end if;
+       end if;
+    end I_LLI;
+ 
+    -----------
+    -- I_LLU --
+    -----------
+ 
+    function I_LLU (Stream : not null access RST) return Long_Long_Unsigned is
+       S : XDR_S_LLU;
+       L : SEO;
+       U : Unsigned := 0;
+       X : Long_Long_Unsigned := 0;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+ 
+       elsif Optimize_Integers then
+          return XDR_S_LLU_To_Long_Long_Unsigned (S);
+ 
+       else
+          --  Compute using machine unsigned
+          --  rather than long_long_unsigned.
+ 
+          for N in S'Range loop
+             U := U * BB + Unsigned (S (N));
+ 
+             --  We have filled an unsigned
+ 
+             if N mod UB = 0 then
+                X := Shift_Left (X, US) + Long_Long_Unsigned (U);
+                U := 0;
+             end if;
+          end loop;
+ 
+          return X;
+       end if;
+    end I_LLU;
+ 
+    ----------
+    -- I_LU --
+    ----------
+ 
+    function I_LU (Stream : not null access RST) return Long_Unsigned is
+       S : XDR_S_LU;
+       L : SEO;
+       U : Unsigned := 0;
+       X : Long_Unsigned := 0;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+ 
+       elsif Optimize_Integers then
+          return Long_Unsigned (XDR_S_LU_To_Long_Long_Unsigned (S));
+ 
+       else
+          --  Compute using machine unsigned
+          --  rather than long_unsigned.
+ 
+          for N in S'Range loop
+             U := U * BB + Unsigned (S (N));
+ 
+             --  We have filled an unsigned
+ 
+             if N mod UB = 0 then
+                X := Shift_Left (X, US) + Long_Unsigned (U);
+                U := 0;
+             end if;
+          end loop;
+ 
+          return X;
+       end if;
+    end I_LU;
+ 
+    ----------
+    -- I_SF --
+    ----------
+ 
+    function I_SF (Stream : not null access RST) return Short_Float is
+       I       : constant Precision := Single;
+       E_Size  : Integer  renames Fields (I).E_Size;
+       E_Bias  : Integer  renames Fields (I).E_Bias;
+       E_Last  : Integer  renames Fields (I).E_Last;
+       F_Mask  : SE       renames Fields (I).F_Mask;
+       E_Bytes : SEO      renames Fields (I).E_Bytes;
+       F_Bytes : SEO      renames Fields (I).F_Bytes;
+       F_Size  : Integer  renames Fields (I).F_Size;
+ 
+       Exponent    : Long_Unsigned;
+       Fraction    : Long_Unsigned;
+       Is_Positive : Boolean;
+       Result      : Short_Float;
+       S           : SEA (1 .. SF_L);
+       L           : SEO;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+       end if;
+ 
+       --  Extract Fraction, Sign and Exponent
+ 
+       Fraction := Long_Unsigned (S (SF_L + 1 - F_Bytes) and F_Mask);
+       for N in SF_L + 2 - F_Bytes .. SF_L loop
+          Fraction := Fraction * BB + Long_Unsigned (S (N));
+       end loop;
+       Result := Short_Float'Scaling (Short_Float (Fraction), -F_Size);
+ 
+       if BS <= S (1) then
+          Is_Positive := False;
+          Exponent := Long_Unsigned (S (1) - BS);
+       else
+          Is_Positive := True;
+          Exponent := Long_Unsigned (S (1));
+       end if;
+ 
+       for N in 2 .. E_Bytes loop
+          Exponent := Exponent * BB + Long_Unsigned (S (N));
+       end loop;
+       Exponent := Shift_Right (Exponent, Integer (E_Bytes) * SU - E_Size - 1);
+ 
+       --  NaN or Infinities
+ 
+       if Integer (Exponent) = E_Last then
+          raise Constraint_Error;
+ 
+       elsif Exponent = 0 then
+ 
+          --  Signed zeros
+ 
+          if Fraction = 0 then
+             null;
+ 
+          --  Denormalized float
+ 
+          else
+             Result := Short_Float'Scaling (Result, 1 - E_Bias);
+          end if;
+ 
+       --  Normalized float
+ 
+       else
+          Result := Short_Float'Scaling
+            (1.0 + Result, Integer (Exponent) - E_Bias);
+       end if;
+ 
+       if not Is_Positive then
+          Result := -Result;
+       end if;
+ 
+       return Result;
+    end I_SF;
+ 
+    ----------
+    -- I_SI --
+    ----------
+ 
+    function I_SI (Stream : not null access RST) return Short_Integer is
+       S : XDR_S_SI;
+       L : SEO;
+       U : XDR_SU := 0;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+ 
+       elsif Optimize_Integers then
+          return XDR_S_SI_To_Short_Integer (S);
+ 
+       else
+          for N in S'Range loop
+             U := U * BB + XDR_SU (S (N));
+          end loop;
+ 
+          --  Test sign and apply two complement notation
+ 
+          if S (1) < BL then
+             return Short_Integer (U);
+          else
+             return Short_Integer (-((XDR_SU'Last xor U) + 1));
+          end if;
+       end if;
+    end I_SI;
+ 
+    -----------
+    -- I_SSI --
+    -----------
+ 
+    function I_SSI (Stream : not null access RST) return Short_Short_Integer is
+       S : XDR_S_SSI;
+       L : SEO;
+       U : XDR_SSU;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+ 
+       elsif Optimize_Integers then
+          return XDR_S_SSI_To_Short_Short_Integer (S);
+ 
+       else
+          U := XDR_SSU (S (1));
+ 
+          --  Test sign and apply two complement notation
+ 
+          if S (1) < BL then
+             return Short_Short_Integer (U);
+          else
+             return Short_Short_Integer (-((XDR_SSU'Last xor U) + 1));
+          end if;
+       end if;
+    end I_SSI;
+ 
+    -----------
+    -- I_SSU --
+    -----------
+ 
+    function I_SSU (Stream : not null access RST) return Short_Short_Unsigned is
+       S : XDR_S_SSU;
+       L : SEO;
+       U : XDR_SSU := 0;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+ 
+       else
+          U := XDR_SSU (S (1));
+          return Short_Short_Unsigned (U);
+       end if;
+    end I_SSU;
+ 
+    ----------
+    -- I_SU --
+    ----------
+ 
+    function I_SU (Stream : not null access RST) return Short_Unsigned is
+       S : XDR_S_SU;
+       L : SEO;
+       U : XDR_SU := 0;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+ 
+       elsif Optimize_Integers then
+          return XDR_S_SU_To_Short_Unsigned (S);
+ 
+       else
+          for N in S'Range loop
+             U := U * BB + XDR_SU (S (N));
+          end loop;
+ 
+          return Short_Unsigned (U);
+       end if;
+    end I_SU;
+ 
+    ---------
+    -- I_U --
+    ---------
+ 
+    function I_U (Stream : not null access RST) return Unsigned is
+       S : XDR_S_U;
+       L : SEO;
+       U : XDR_U := 0;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+ 
+       elsif Optimize_Integers then
+          return XDR_S_U_To_Unsigned (S);
+ 
+       else
+          for N in S'Range loop
+             U := U * BB + XDR_U (S (N));
+          end loop;
+ 
+          return Unsigned (U);
+       end if;
+    end I_U;
+ 
+    -----------
+    -- I_U24 --
+    -----------
+ 
+    function I_U24 (Stream : not null access RST) return Unsigned_24 is
+       S : XDR_S_U24;
+       L : SEO;
+       U : XDR_U24 := 0;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+ 
+       elsif Optimize_Integers then
+          return XDR_S_U24_To_Unsigned (S);
+ 
+       else
+          for N in S'Range loop
+             U := U * BB + XDR_U24 (S (N));
+          end loop;
+ 
+          return Unsigned_24 (U);
+       end if;
+    end I_U24;
+ 
+    ----------
+    -- I_WC --
+    ----------
+ 
+    function I_WC (Stream : not null access RST) return Wide_Character is
+       S : XDR_S_WC;
+       L : SEO;
+       U : XDR_WC := 0;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+ 
+       else
+          for N in S'Range loop
+             U := U * BB + XDR_WC (S (N));
+          end loop;
+ 
+          --  Use Ada requirements on Wide_Character representation clause
+ 
+          return Wide_Character'Val (U);
+       end if;
+    end I_WC;
+ 
+    -----------
+    -- I_WWC --
+    -----------
+ 
+    function I_WWC (Stream : not null access RST) return Wide_Wide_Character is
+       S : XDR_S_WWC;
+       L : SEO;
+       U : XDR_WWC := 0;
+ 
+    begin
+       Ada.Streams.Read (Stream.all, S, L);
+ 
+       if L /= S'Last then
+          raise Data_Error;
+ 
+       else
+          for N in S'Range loop
+             U := U * BB + XDR_WWC (S (N));
+          end loop;
+ 
+          --  Use Ada requirements on Wide_Wide_Character representation clause
+ 
+          return Wide_Wide_Character'Val (U);
+       end if;
+    end I_WWC;
+ 
+    ----------
+    -- W_AD --
+    ----------
+ 
+    procedure W_AD (Stream : not null access RST; Item : Fat_Pointer) is
+       S : XDR_S_TM;
+       U : XDR_TM;
+ 
+    begin
+       U := XDR_TM (To_XDR_SA (Item.P1));
+       for N in reverse S'Range loop
+          S (N) := SE (U mod BB);
+          U := U / BB;
+       end loop;
+ 
+       Ada.Streams.Write (Stream.all, S);
+ 
+       U := XDR_TM (To_XDR_SA (Item.P2));
+       for N in reverse S'Range loop
+          S (N) := SE (U mod BB);
+          U := U / BB;
+       end loop;
+ 
+       Ada.Streams.Write (Stream.all, S);
+ 
+       if U /= 0 then
+          raise Data_Error;
+       end if;
+    end W_AD;
+ 
+    ----------
+    -- W_AS --
+    ----------
+ 
+    procedure W_AS (Stream : not null access RST; Item : Thin_Pointer) is
+       S : XDR_S_TM;
+       U : XDR_TM := XDR_TM (To_XDR_SA (Item.P1));
+ 
+    begin
+       for N in reverse S'Range loop
+          S (N) := SE (U mod BB);
+          U := U / BB;
+       end loop;
+ 
+       Ada.Streams.Write (Stream.all, S);
+ 
+       if U /= 0 then
+          raise Data_Error;
+       end if;
+    end W_AS;
+ 
+    ---------
+    -- W_B --
+    ---------
+ 
+    procedure W_B (Stream : not null access RST; Item : Boolean) is
+    begin
+       if Item then
+          W_SSU (Stream, 1);
+       else
+          W_SSU (Stream, 0);
+       end if;
+    end W_B;
+ 
+    ---------
+    -- W_C --
+    ---------
+ 
+    procedure W_C (Stream : not null access RST; Item : Character) is
+       S : XDR_S_C;
+ 
+       pragma Assert (C_L = 1);
+ 
+    begin
+       --  Use Ada requirements on Character representation clause
+ 
+       S (1) := SE (Character'Pos (Item));
+ 
+       Ada.Streams.Write (Stream.all, S);
+    end W_C;
+ 
+    ---------
+    -- W_F --
+    ---------
+ 
+    procedure W_F (Stream : not null access RST; Item : Float) is
+       I       : constant Precision := Single;
+       E_Size  : Integer  renames Fields (I).E_Size;
+       E_Bias  : Integer  renames Fields (I).E_Bias;
+       E_Bytes : SEO      renames Fields (I).E_Bytes;
+       F_Bytes : SEO      renames Fields (I).F_Bytes;
+       F_Size  : Integer  renames Fields (I).F_Size;
+       F_Mask  : SE       renames Fields (I).F_Mask;
+ 
+       Exponent    : Long_Unsigned;
+       Fraction    : Long_Unsigned;
+       Is_Positive : Boolean;
+       E           : Integer;
+       F           : Float;
+       S           : SEA (1 .. F_L) := (others => 0);
+ 
+    begin
+       if not Item'Valid then
+          raise Constraint_Error;
+       end if;
+ 
+       --  Compute Sign
+ 
+       Is_Positive := (0.0 <= Item);
+       F := abs (Item);
+ 
+       --  Signed zero
+ 
+       if F = 0.0 then
+          Exponent := 0;
+          Fraction := 0;
+ 
+       else
+          E := Float'Exponent (F) - 1;
+ 
+          --  Denormalized float
+ 
+          if E <= -E_Bias then
+             F := Float'Scaling (F, F_Size + E_Bias - 1);
+             E := -E_Bias;
+          else
+             F := Float'Scaling (Float'Fraction (F), F_Size + 1);
+          end if;
+ 
+          --  Compute Exponent and Fraction
+ 
+          Exponent := Long_Unsigned (E + E_Bias);
+          Fraction := Long_Unsigned (F * 2.0) / 2;
+       end if;
+ 
+       --  Store Fraction
+ 
+       for I in reverse F_L - F_Bytes + 1 .. F_L loop
+          S (I) := SE (Fraction mod BB);
+          Fraction := Fraction / BB;
+       end loop;
+ 
+       --  Remove implicit bit
+ 
+       S (F_L - F_Bytes + 1) := S (F_L - F_Bytes + 1) and F_Mask;
+ 
+       --  Store Exponent (not always at the beginning of a byte)
+ 
+       Exponent := Shift_Left (Exponent, Integer (E_Bytes) * SU - E_Size - 1);
+       for N in reverse 1 .. E_Bytes loop
+          S (N) := SE (Exponent mod BB) + S (N);
+          Exponent := Exponent / BB;
+       end loop;
+ 
+       --  Store Sign
+ 
+       if not Is_Positive then
+          S (1) := S (1) + BS;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, S);
+    end W_F;
+ 
+    ---------
+    -- W_I --
+    ---------
+ 
+    procedure W_I (Stream : not null access RST; Item : Integer) is
+       S : XDR_S_I;
+       U : XDR_U;
+ 
+    begin
+       if Optimize_Integers then
+          S := Integer_To_XDR_S_I (Item);
+ 
+       else
+          --  Test sign and apply two complement notation
+ 
+          U := (if Item < 0
+                then XDR_U'Last xor XDR_U (-(Item + 1))
+                else XDR_U (Item));
+ 
+          for N in reverse S'Range loop
+             S (N) := SE (U mod BB);
+             U := U / BB;
+          end loop;
+ 
+          if U /= 0 then
+             raise Data_Error;
+          end if;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, S);
+    end W_I;
+ 
+    -----------
+    -- W_I24 --
+    -----------
+ 
+    procedure W_I24 (Stream : not null access RST; Item : Integer_24) is
+       S : XDR_S_I24;
+       U : XDR_U24;
+ 
+    begin
+       if Optimize_Integers then
+          S := Integer_To_XDR_S_I24 (Item);
+ 
+       else
+          --  Test sign and apply two complement notation
+ 
+          U := (if Item < 0
+                then XDR_U24'Last xor XDR_U24 (-(Item + 1))
+                else XDR_U24 (Item));
+ 
+          for N in reverse S'Range loop
+             S (N) := SE (U mod BB);
+             U := U / BB;
+          end loop;
+ 
+          if U /= 0 then
+             raise Data_Error;
+          end if;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, S);
+    end W_I24;
+ 
+    ----------
+    -- W_LF --
+    ----------
+ 
+    procedure W_LF (Stream : not null access RST; Item : Long_Float) is
+       I       : constant Precision := Double;
+       E_Size  : Integer  renames Fields (I).E_Size;
+       E_Bias  : Integer  renames Fields (I).E_Bias;
+       E_Bytes : SEO      renames Fields (I).E_Bytes;
+       F_Bytes : SEO      renames Fields (I).F_Bytes;
+       F_Size  : Integer  renames Fields (I).F_Size;
+       F_Mask  : SE       renames Fields (I).F_Mask;
+ 
+       Exponent    : Long_Unsigned;
+       Fraction    : Long_Long_Unsigned;
+       Is_Positive : Boolean;
+       E           : Integer;
+       F           : Long_Float;
+       S           : SEA (1 .. LF_L) := (others => 0);
+ 
+    begin
+       if not Item'Valid then
+          raise Constraint_Error;
+       end if;
+ 
+       --  Compute Sign
+ 
+       Is_Positive := (0.0 <= Item);
+       F := abs (Item);
+ 
+       --  Signed zero
+ 
+       if F = 0.0 then
+          Exponent := 0;
+          Fraction := 0;
+ 
+       else
+          E := Long_Float'Exponent (F) - 1;
+ 
+          --  Denormalized float
+ 
+          if E <= -E_Bias then
+             E := -E_Bias;
+             F := Long_Float'Scaling (F, F_Size + E_Bias - 1);
+          else
+             F := Long_Float'Scaling (F, F_Size - E);
+          end if;
+ 
+          --  Compute Exponent and Fraction
+ 
+          Exponent := Long_Unsigned (E + E_Bias);
+          Fraction := Long_Long_Unsigned (F * 2.0) / 2;
+       end if;
+ 
+       --  Store Fraction
+ 
+       for I in reverse LF_L - F_Bytes + 1 .. LF_L loop
+          S (I) := SE (Fraction mod BB);
+          Fraction := Fraction / BB;
+       end loop;
+ 
+       --  Remove implicit bit
+ 
+       S (LF_L - F_Bytes + 1) := S (LF_L - F_Bytes + 1) and F_Mask;
+ 
+       --  Store Exponent (not always at the beginning of a byte)
+ 
+       Exponent := Shift_Left (Exponent, Integer (E_Bytes) * SU - E_Size - 1);
+       for N in reverse 1 .. E_Bytes loop
+          S (N) := SE (Exponent mod BB) + S (N);
+          Exponent := Exponent / BB;
+       end loop;
+ 
+       --  Store Sign
+ 
+       if not Is_Positive then
+          S (1) := S (1) + BS;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, S);
+    end W_LF;
+ 
+    ----------
+    -- W_LI --
+    ----------
+ 
+    procedure W_LI (Stream : not null access RST; Item : Long_Integer) is
+       S : XDR_S_LI;
+       U : Unsigned := 0;
+       X : Long_Unsigned;
+ 
+    begin
+       if Optimize_Integers then
+          S := Long_Long_Integer_To_XDR_S_LI (Long_Long_Integer (Item));
+ 
+       else
+          --  Test sign and apply two complement notation
+ 
+          if Item < 0 then
+             X := Long_Unsigned'Last xor Long_Unsigned (-(Item + 1));
+          else
+             X := Long_Unsigned (Item);
+          end if;
+ 
+          --  Compute using machine unsigned rather than long_unsigned
+ 
+          for N in reverse S'Range loop
+ 
+             --  We have filled an unsigned
+ 
+             if (LU_L - N) mod UB = 0 then
+                U := Unsigned (X and UL);
+                X := Shift_Right (X, US);
+             end if;
+ 
+             S (N) := SE (U mod BB);
+             U := U / BB;
+          end loop;
+ 
+          if U /= 0 then
+             raise Data_Error;
+          end if;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, S);
+    end W_LI;
+ 
+    -----------
+    -- W_LLF --
+    -----------
+ 
+    procedure W_LLF (Stream : not null access RST; Item : Long_Long_Float) is
+       I       : constant Precision := Quadruple;
+       E_Size  : Integer  renames Fields (I).E_Size;
+       E_Bias  : Integer  renames Fields (I).E_Bias;
+       E_Bytes : SEO      renames Fields (I).E_Bytes;
+       F_Bytes : SEO      renames Fields (I).F_Bytes;
+       F_Size  : Integer  renames Fields (I).F_Size;
+ 
+       HFS : constant Integer := F_Size / 2;
+ 
+       Exponent    : Long_Unsigned;
+       Fraction_1  : Long_Long_Unsigned;
+       Fraction_2  : Long_Long_Unsigned;
+       Is_Positive : Boolean;
+       E           : Integer;
+       F           : Long_Long_Float := Item;
+       S           : SEA (1 .. LLF_L) := (others => 0);
+ 
+    begin
+       if not Item'Valid then
+          raise Constraint_Error;
+       end if;
+ 
+       --  Compute Sign
+ 
+       Is_Positive := (0.0 <= Item);
+ 
+       if F < 0.0 then
+          F := -Item;
+       end if;
+ 
+       --  Signed zero
+ 
+       if F = 0.0 then
+          Exponent   := 0;
+          Fraction_1 := 0;
+          Fraction_2 := 0;
+ 
+       else
+          E := Long_Long_Float'Exponent (F) - 1;
+ 
+          --  Denormalized float
+ 
+          if E <= -E_Bias then
+             F := Long_Long_Float'Scaling (F, E_Bias - 1);
+             E := -E_Bias;
+          else
+             F := Long_Long_Float'Scaling
+               (Long_Long_Float'Fraction (F), 1);
+          end if;
+ 
+          --  Compute Exponent and Fraction
+ 
+          Exponent   := Long_Unsigned (E + E_Bias);
+          F          := Long_Long_Float'Scaling (F, F_Size - HFS);
+          Fraction_1 := Long_Long_Unsigned (Long_Long_Float'Floor (F));
+          F          := F - Long_Long_Float (Fraction_1);
+          F          := Long_Long_Float'Scaling (F, HFS);
+          Fraction_2 := Long_Long_Unsigned (Long_Long_Float'Floor (F));
+       end if;
+ 
+       --  Store Fraction_1
+ 
+       for I in reverse LLF_L - F_Bytes + 1 .. LLF_L - 7 loop
+          S (I) := SE (Fraction_1 mod BB);
+          Fraction_1 := Fraction_1 / BB;
+       end loop;
+ 
+       --  Store Fraction_2
+ 
+       for I in reverse LLF_L - 6 .. LLF_L loop
+          S (SEO (I)) := SE (Fraction_2 mod BB);
+          Fraction_2 := Fraction_2 / BB;
+       end loop;
+ 
+       --  Store Exponent (not always at the beginning of a byte)
+ 
+       Exponent := Shift_Left (Exponent, Integer (E_Bytes) * SU - E_Size - 1);
+       for N in reverse 1 .. E_Bytes loop
+          S (N) := SE (Exponent mod BB) + S (N);
+          Exponent := Exponent / BB;
+       end loop;
+ 
+       --  Store Sign
+ 
+       if not Is_Positive then
+          S (1) := S (1) + BS;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, S);
+    end W_LLF;
+ 
+    -----------
+    -- W_LLI --
+    -----------
+ 
+    procedure W_LLI
+      (Stream : not null access RST;
+       Item   : Long_Long_Integer)
+    is
+       S : XDR_S_LLI;
+       U : Unsigned := 0;
+       X : Long_Long_Unsigned;
+ 
+    begin
+       if Optimize_Integers then
+          S := Long_Long_Integer_To_XDR_S_LLI (Item);
+ 
+       else
+          --  Test sign and apply two complement notation
+ 
+          if Item < 0 then
+             X := Long_Long_Unsigned'Last xor Long_Long_Unsigned (-(Item + 1));
+          else
+             X := Long_Long_Unsigned (Item);
+          end if;
+ 
+          --  Compute using machine unsigned rather than long_long_unsigned
+ 
+          for N in reverse S'Range loop
+ 
+             --  We have filled an unsigned
+ 
+             if (LLU_L - N) mod UB = 0 then
+                U := Unsigned (X and UL);
+                X := Shift_Right (X, US);
+             end if;
+ 
+             S (N) := SE (U mod BB);
+             U := U / BB;
+          end loop;
+ 
+          if U /= 0 then
+             raise Data_Error;
+          end if;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, S);
+    end W_LLI;
+ 
+    -----------
+    -- W_LLU --
+    -----------
+ 
+    procedure W_LLU
+      (Stream : not null access RST;
+       Item   : Long_Long_Unsigned)
+    is
+       S : XDR_S_LLU;
+       U : Unsigned := 0;
+       X : Long_Long_Unsigned := Item;
+ 
+    begin
+       if Optimize_Integers then
+          S := Long_Long_Unsigned_To_XDR_S_LLU (Item);
+ 
+       else
+          --  Compute using machine unsigned rather than long_long_unsigned
+ 
+          for N in reverse S'Range loop
+ 
+             --  We have filled an unsigned
+ 
+             if (LLU_L - N) mod UB = 0 then
+                U := Unsigned (X and UL);
+                X := Shift_Right (X, US);
+             end if;
+ 
+             S (N) := SE (U mod BB);
+             U := U / BB;
+          end loop;
+ 
+          if U /= 0 then
+             raise Data_Error;
+          end if;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, S);
+    end W_LLU;
+ 
+    ----------
+    -- W_LU --
+    ----------
+ 
+    procedure W_LU (Stream : not null access RST; Item : Long_Unsigned) is
+       S : XDR_S_LU;
+       U : Unsigned := 0;
+       X : Long_Unsigned := Item;
+ 
+    begin
+       if Optimize_Integers then
+          S := Long_Long_Unsigned_To_XDR_S_LU (Long_Long_Unsigned (Item));
+ 
+       else
+          --  Compute using machine unsigned rather than long_unsigned
+ 
+          for N in reverse S'Range loop
+ 
+             --  We have filled an unsigned
+ 
+             if (LU_L - N) mod UB = 0 then
+                U := Unsigned (X and UL);
+                X := Shift_Right (X, US);
+             end if;
+             S (N) := SE (U mod BB);
+             U := U / BB;
+          end loop;
+ 
+          if U /= 0 then
+             raise Data_Error;
+          end if;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, S);
+    end W_LU;
+ 
+    ----------
+    -- W_SF --
+    ----------
+ 
+    procedure W_SF (Stream : not null access RST; Item : Short_Float) is
+       I       : constant Precision := Single;
+       E_Size  : Integer  renames Fields (I).E_Size;
+       E_Bias  : Integer  renames Fields (I).E_Bias;
+       E_Bytes : SEO      renames Fields (I).E_Bytes;
+       F_Bytes : SEO      renames Fields (I).F_Bytes;
+       F_Size  : Integer  renames Fields (I).F_Size;
+       F_Mask  : SE       renames Fields (I).F_Mask;
+ 
+       Exponent    : Long_Unsigned;
+       Fraction    : Long_Unsigned;
+       Is_Positive : Boolean;
+       E           : Integer;
+       F           : Short_Float;
+       S           : SEA (1 .. SF_L) := (others => 0);
+ 
+    begin
+       if not Item'Valid then
+          raise Constraint_Error;
+       end if;
+ 
+       --  Compute Sign
+ 
+       Is_Positive := (0.0 <= Item);
+       F := abs (Item);
+ 
+       --  Signed zero
+ 
+       if F = 0.0 then
+          Exponent := 0;
+          Fraction := 0;
+ 
+       else
+          E := Short_Float'Exponent (F) - 1;
+ 
+          --  Denormalized float
+ 
+          if E <= -E_Bias then
+             E := -E_Bias;
+             F := Short_Float'Scaling (F, F_Size + E_Bias - 1);
+          else
+             F := Short_Float'Scaling (F, F_Size - E);
+          end if;
+ 
+          --  Compute Exponent and Fraction
+ 
+          Exponent := Long_Unsigned (E + E_Bias);
+          Fraction := Long_Unsigned (F * 2.0) / 2;
+       end if;
+ 
+       --  Store Fraction
+ 
+       for I in reverse SF_L - F_Bytes + 1 .. SF_L loop
+          S (I) := SE (Fraction mod BB);
+          Fraction := Fraction / BB;
+       end loop;
+ 
+       --  Remove implicit bit
+ 
+       S (SF_L - F_Bytes + 1) := S (SF_L - F_Bytes + 1) and F_Mask;
+ 
+       --  Store Exponent (not always at the beginning of a byte)
+ 
+       Exponent := Shift_Left (Exponent, Integer (E_Bytes) * SU - E_Size - 1);
+       for N in reverse 1 .. E_Bytes loop
+          S (N) := SE (Exponent mod BB) + S (N);
+          Exponent := Exponent / BB;
+       end loop;
+ 
+       --  Store Sign
+ 
+       if not Is_Positive then
+          S (1) := S (1) + BS;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, S);
+    end W_SF;
+ 
+    ----------
+    -- W_SI --
+    ----------
+ 
+    procedure W_SI (Stream : not null access RST; Item : Short_Integer) is
+       S : XDR_S_SI;
+       U : XDR_SU;
+ 
+    begin
+       if Optimize_Integers then
+          S := Short_Integer_To_XDR_S_SI (Item);
+ 
+       else
+          --  Test sign and apply two complement's notation
+ 
+          U := (if Item < 0
+                then XDR_SU'Last xor XDR_SU (-(Item + 1))
+                else XDR_SU (Item));
+ 
+          for N in reverse S'Range loop
+             S (N) := SE (U mod BB);
+             U := U / BB;
+          end loop;
+ 
+          if U /= 0 then
+             raise Data_Error;
+          end if;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, S);
+    end W_SI;
+ 
+    -----------
+    -- W_SSI --
+    -----------
+ 
+    procedure W_SSI
+      (Stream : not null access RST;
+       Item   : Short_Short_Integer)
+    is
+       S : XDR_S_SSI;
+       U : XDR_SSU;
+ 
+    begin
+       if Optimize_Integers then
+          S := Short_Short_Integer_To_XDR_S_SSI (Item);
+ 
+       else
+          --  Test sign and apply two complement's notation
+ 
+          U := (if Item < 0
+                then XDR_SSU'Last xor XDR_SSU (-(Item + 1))
+                else XDR_SSU (Item));
+ 
+          S (1) := SE (U);
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, S);
+    end W_SSI;
+ 
+    -----------
+    -- W_SSU --
+    -----------
+ 
+    procedure W_SSU
+      (Stream : not null access RST;
+       Item   : Short_Short_Unsigned)
+    is
+       U : constant XDR_SSU := XDR_SSU (Item);
+       S : XDR_S_SSU;
+ 
+    begin
+       S (1) := SE (U);
+       Ada.Streams.Write (Stream.all, S);
+    end W_SSU;
+ 
+    ----------
+    -- W_SU --
+    ----------
+ 
+    procedure W_SU (Stream : not null access RST; Item : Short_Unsigned) is
+       S : XDR_S_SU;
+       U : XDR_SU := XDR_SU (Item);
+ 
+    begin
+       if Optimize_Integers then
+          S := Short_Unsigned_To_XDR_S_SU (Item);
+ 
+       else
+          for N in reverse S'Range loop
+             S (N) := SE (U mod BB);
+             U := U / BB;
+          end loop;
+ 
+          if U /= 0 then
+             raise Data_Error;
+          end if;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, S);
+    end W_SU;
+ 
+    ---------
+    -- W_U --
+    ---------
+ 
+    procedure W_U (Stream : not null access RST; Item : Unsigned) is
+       S : XDR_S_U;
+       U : XDR_U := XDR_U (Item);
+ 
+    begin
+       if Optimize_Integers then
+          S := Unsigned_To_XDR_S_U (Item);
+ 
+       else
+          for N in reverse S'Range loop
+             S (N) := SE (U mod BB);
+             U := U / BB;
+          end loop;
+ 
+          if U /= 0 then
+             raise Data_Error;
+          end if;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, S);
+    end W_U;
+ 
+    -----------
+    -- W_U24 --
+    -----------
+ 
+    procedure W_U24 (Stream : not null access RST; Item : Unsigned_24) is
+       S : XDR_S_U24;
+       U : XDR_U24 := XDR_U24 (Item);
+ 
+    begin
+       if Optimize_Integers then
+          S := Unsigned_To_XDR_S_U24 (Item);
+ 
+       else
+          for N in reverse S'Range loop
+             S (N) := SE (U mod BB);
+             U := U / BB;
+          end loop;
+ 
+          if U /= 0 then
+             raise Data_Error;
+          end if;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, S);
+    end W_U24;
+ 
+    ----------
+    -- W_WC --
+    ----------
+ 
+    procedure W_WC (Stream : not null access RST; Item : Wide_Character) is
+       S : XDR_S_WC;
+       U : XDR_WC;
+ 
+    begin
+       --  Use Ada requirements on Wide_Character representation clause
+ 
+       U := XDR_WC (Wide_Character'Pos (Item));
+ 
+       for N in reverse S'Range loop
+          S (N) := SE (U mod BB);
+          U := U / BB;
+       end loop;
+ 
+       Ada.Streams.Write (Stream.all, S);
+ 
+       if U /= 0 then
+          raise Data_Error;
+       end if;
+    end W_WC;
+ 
+    -----------
+    -- W_WWC --
+    -----------
+ 
+    procedure W_WWC
+      (Stream : not null access RST; Item : Wide_Wide_Character)
+    is
+       S : XDR_S_WWC;
+       U : XDR_WWC;
+ 
+    begin
+       --  Use Ada requirements on Wide_Wide_Character representation clause
+ 
+       U := XDR_WWC (Wide_Wide_Character'Pos (Item));
+ 
+       for N in reverse S'Range loop
+          S (N) := SE (U mod BB);
+          U := U / BB;
+       end loop;
+ 
+       Ada.Streams.Write (Stream.all, S);
+ 
+       if U /= 0 then
+          raise Data_Error;
+       end if;
+    end W_WWC;
+ 
+ end System.Stream_Attributes.XDR;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-statxd.ads gcc-11.1.0/gcc/ada/libgnat/s-statxd.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-statxd.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-statxd.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,117 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --          S Y S T E M . S T R E A M _ A T T R I B U T E S . X D R         --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains alternate implementations of the stream attributes
+ --  for elementary types based on the XDR standard. These are the subprograms
+ --  that are directly accessed by occurrences of the stream attributes where
+ --  the type is elementary.
+ 
+ --  It is especially useful for exchanging streams between two different
+ --  systems with different basic type representations and endianness.
+ 
+ --  We only provide the subprograms for the standard base types. For user
+ --  defined types, the subprogram for the corresponding root type is called
+ --  with an appropriate conversion.
+ 
+ package System.Stream_Attributes.XDR is
+    pragma Preelaborate;
+ 
+    pragma Suppress (Accessibility_Check, XDR);
+    --  No need to check accessibility on arguments of subprograms
+ 
+    ---------------------
+    -- Input Functions --
+    ---------------------
+ 
+    --  Functions for S'Input attribute. These functions are also used for
+    --  S'Read, with the obvious transformation, since the input operation
+    --  is the same for all elementary types (no bounds or discriminants
+    --  are involved).
+ 
+    function I_AD  (Stream : not null access RST) return Fat_Pointer;
+    function I_AS  (Stream : not null access RST) return Thin_Pointer;
+    function I_B   (Stream : not null access RST) return Boolean;
+    function I_C   (Stream : not null access RST) return Character;
+    function I_F   (Stream : not null access RST) return Float;
+    function I_I   (Stream : not null access RST) return Integer;
+    function I_I24 (Stream : not null access RST) return Integer_24;
+    function I_LF  (Stream : not null access RST) return Long_Float;
+    function I_LI  (Stream : not null access RST) return Long_Integer;
+    function I_LLF (Stream : not null access RST) return Long_Long_Float;
+    function I_LLI (Stream : not null access RST) return Long_Long_Integer;
+    function I_LLU (Stream : not null access RST) return UST.Long_Long_Unsigned;
+    function I_LU  (Stream : not null access RST) return UST.Long_Unsigned;
+    function I_SF  (Stream : not null access RST) return Short_Float;
+    function I_SI  (Stream : not null access RST) return Short_Integer;
+    function I_SSI (Stream : not null access RST) return Short_Short_Integer;
+    function I_SSU (Stream : not null access RST) return
+                                                    UST.Short_Short_Unsigned;
+    function I_SU  (Stream : not null access RST) return UST.Short_Unsigned;
+    function I_U   (Stream : not null access RST) return UST.Unsigned;
+    function I_U24 (Stream : not null access RST) return Unsigned_24;
+    function I_WC  (Stream : not null access RST) return Wide_Character;
+    function I_WWC (Stream : not null access RST) return Wide_Wide_Character;
+ 
+    -----------------------
+    -- Output Procedures --
+    -----------------------
+ 
+    --  Procedures for S'Write attribute. These procedures are also used for
+    --  'Output, since for elementary types there is no difference between
+    --  'Write and 'Output because there are no discriminants or bounds to
+    --  be written.
+ 
+    procedure W_AD  (Stream : not null access RST; Item : Fat_Pointer);
+    procedure W_AS  (Stream : not null access RST; Item : Thin_Pointer);
+    procedure W_B   (Stream : not null access RST; Item : Boolean);
+    procedure W_C   (Stream : not null access RST; Item : Character);
+    procedure W_F   (Stream : not null access RST; Item : Float);
+    procedure W_I   (Stream : not null access RST; Item : Integer);
+    procedure W_I24 (Stream : not null access RST; Item : Integer_24);
+    procedure W_LF  (Stream : not null access RST; Item : Long_Float);
+    procedure W_LI  (Stream : not null access RST; Item : Long_Integer);
+    procedure W_LLF (Stream : not null access RST; Item : Long_Long_Float);
+    procedure W_LLI (Stream : not null access RST; Item : Long_Long_Integer);
+    procedure W_LLU (Stream : not null access RST; Item :
+                                                     UST.Long_Long_Unsigned);
+    procedure W_LU  (Stream : not null access RST; Item : UST.Long_Unsigned);
+    procedure W_SF  (Stream : not null access RST; Item : Short_Float);
+    procedure W_SI  (Stream : not null access RST; Item : Short_Integer);
+    procedure W_SSI (Stream : not null access RST; Item : Short_Short_Integer);
+    procedure W_SSU (Stream : not null access RST; Item :
+                                                     UST.Short_Short_Unsigned);
+    procedure W_SU  (Stream : not null access RST; Item : UST.Short_Unsigned);
+    procedure W_U   (Stream : not null access RST; Item : UST.Unsigned);
+    procedure W_U24 (Stream : not null access RST; Item : Unsigned_24);
+    procedure W_WC  (Stream : not null access RST; Item : Wide_Character);
+    procedure W_WWC (Stream : not null access RST; Item : Wide_Wide_Character);
+ 
+ end System.Stream_Attributes.XDR;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stausa.adb gcc-11.1.0/gcc/ada/libgnat/s-stausa.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-stausa.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stausa.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2004-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2004-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stausa.ads gcc-11.1.0/gcc/ada/libgnat/s-stausa.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-stausa.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stausa.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2004-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2004-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stchop.adb gcc-11.1.0/gcc/ada/libgnat/s-stchop.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-stchop.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stchop.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Stack_Checking.Opera
*** 61,68 ****
     --  cache is pending, that write should be followed by a Poll to prevent
     --  losing signals.
     --
-    --  Note: This function must be compiled with Polling turned off
-    --
     --  Note: on systems with real thread-local storage, Set_Stack_Info should
     --  return an access value for such local storage. In those cases the cache
     --  will always be up-to-date.
--- 61,66 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stchop.ads gcc-11.1.0/gcc/ada/libgnat/s-stchop.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-stchop.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stchop.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Restrictions (No_Elaboration_Code
*** 36,45 ****
  --  We want to guarantee the absence of elaboration code because the binder
  --  does not handle references to this package.
  
- pragma Polling (Off);
- --  Turn off polling, we do not want polling to take place during stack
- --  checking operations. It causes infinite loops and other problems.
- 
  with System.Storage_Elements;
  
  package System.Stack_Checking.Operations is
--- 36,41 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stchop__limit.ads gcc-11.1.0/gcc/ada/libgnat/s-stchop__limit.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-stchop__limit.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stchop__limit.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Restrictions (No_Elaboration_Code
*** 37,46 ****
  --  We want to guarantee the absence of elaboration code because the binder
  --  does not handle references to this package.
  
- pragma Polling (Off);
- --  Turn off polling, we do not want polling to take place during stack
- --  checking operations. It causes infinite loops and other problems.
- 
  package System.Stack_Checking.Operations is
     pragma Preelaborate;
  
--- 37,42 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stchop__rtems.adb gcc-11.1.0/gcc/ada/libgnat/s-stchop__rtems.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-stchop__rtems.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stchop__rtems.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stchop__vxworks.adb gcc-11.1.0/gcc/ada/libgnat/s-stchop__vxworks.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-stchop__vxworks.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stchop__vxworks.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stoele.adb gcc-11.1.0/gcc/ada/libgnat/s-stoele.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-stoele.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stoele.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stoele.ads gcc-11.1.0/gcc/ada/libgnat/s-stoele.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-stoele.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stoele.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stopoo.adb gcc-11.1.0/gcc/ada/libgnat/s-stopoo.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-stopoo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stopoo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stopoo.ads gcc-11.1.0/gcc/ada/libgnat/s-stopoo.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-stopoo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stopoo.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
***************
*** 36,44 ****
  with Ada.Finalization;
  with System.Storage_Elements;
  
! package System.Storage_Pools is
!    pragma Preelaborate;
! 
     type Root_Storage_Pool is abstract
       new Ada.Finalization.Limited_Controlled with private;
     pragma Preelaborable_Initialization (Root_Storage_Pool);
--- 36,44 ----
  with Ada.Finalization;
  with System.Storage_Elements;
  
! package System.Storage_Pools
!   with Pure
! is
     type Root_Storage_Pool is abstract
       new Ada.Finalization.Limited_Controlled with private;
     pragma Preelaborable_Initialization (Root_Storage_Pool);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stposu.adb gcc-11.1.0/gcc/ada/libgnat/s-stposu.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-stposu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stposu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Storage_Pools.Subpoo
*** 117,127 ****
        Is_Subpool_Allocation : constant Boolean :=
                                  Pool in Root_Storage_Pool_With_Subpools'Class;
  
!       Master  : Finalization_Master_Ptr := null;
!       N_Addr  : Address;
!       N_Ptr   : FM_Node_Ptr;
!       N_Size  : Storage_Count;
!       Subpool : Subpool_Handle := null;
  
        Header_And_Padding : Storage_Offset;
        --  This offset includes the size of a FM_Node plus any additional
--- 117,128 ----
        Is_Subpool_Allocation : constant Boolean :=
                                  Pool in Root_Storage_Pool_With_Subpools'Class;
  
!       Master     : Finalization_Master_Ptr := null;
!       N_Addr     : Address;
!       N_Ptr      : FM_Node_Ptr;
!       N_Size     : Storage_Count;
!       Subpool    : Subpool_Handle := null;
!       Lock_Taken : Boolean := False;
  
        Header_And_Padding : Storage_Offset;
        --  This offset includes the size of a FM_Node plus any additional
*************** package body System.Storage_Pools.Subpoo
*** 205,210 ****
--- 206,212 ----
           --    Read  - allocation, finalization
           --    Write - finalization
  
+          Lock_Taken := True;
           Lock_Task.all;
  
           --  Do not allow the allocation of controlled objects while the
*************** package body System.Storage_Pools.Subpoo
*** 322,327 ****
--- 324,330 ----
           end if;
  
           Unlock_Task.all;
+          Lock_Taken := False;
  
        --  Non-controlled allocation
  
*************** package body System.Storage_Pools.Subpoo
*** 335,341 ****
           --  Unlock the task in case the allocation step failed and reraise the
           --  exception.
  
!          if Is_Controlled then
              Unlock_Task.all;
           end if;
  
--- 338,344 ----
           --  Unlock the task in case the allocation step failed and reraise the
           --  exception.
  
!          if Lock_Taken then
              Unlock_Task.all;
           end if;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stposu.ads gcc-11.1.0/gcc/ada/libgnat/s-stposu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-stposu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stposu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System.Storage_Pools.Subpools is
*** 42,53 ****
--- 42,55 ----
  
     type Root_Storage_Pool_With_Subpools is abstract
       new Root_Storage_Pool with private;
+    pragma Preelaborable_Initialization (Root_Storage_Pool_With_Subpools);
     --  The base for all implementations of Storage_Pool_With_Subpools. This
     --  type is Limited_Controlled by derivation. To use subpools, an access
     --  type must be associated with an implementation descending from type
     --  Root_Storage_Pool_With_Subpools.
  
     type Root_Subpool is abstract tagged limited private;
+    pragma Preelaborable_Initialization (Root_Subpool);
     --  The base for all implementations of Subpool. Objects of this type are
     --  managed by the pool_with_subpools.
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stratt.adb gcc-11.1.0/gcc/ada/libgnat/s-stratt.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-stratt.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stratt.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,40 ****
--- 32,52 ----
  with Ada.IO_Exceptions;
  with Ada.Streams; use Ada.Streams;
  with Ada.Unchecked_Conversion;
+ with System.Stream_Attributes.XDR;
  
  package body System.Stream_Attributes is
  
+    XDR_Flag : Integer;
+    pragma Import (C, XDR_Flag, "__gl_xdr_stream");
+    --  This imported value is used to determine whether the build had the
+    --  binder switch "-xdr" present which enables XDR streaming and sets this
+    --  flag to 1.
+ 
+    function XDR_Support return Boolean;
+    pragma Inline (XDR_Support);
+    --  Return True if XDR streaming should be used. Note that 128-bit integers
+    --  are not supported by the XDR protocol and will raise Device_Error.
+ 
     Err : exception renames Ada.IO_Exceptions.End_Error;
     --  Exception raised if insufficient data read (note that the RM implies
     --  that Data_Error might be the appropriate choice, but AI95-00132
*************** package body System.Stream_Attributes is
*** 53,120 ****
     Thin_Pointer_Size : constant := System.Address'Size;
     Fat_Pointer_Size  : constant := System.Address'Size * 2;
  
!    subtype S_AD  is SEA (1 .. (Fat_Pointer_Size              + SU - 1) / SU);
!    subtype S_AS  is SEA (1 .. (Thin_Pointer_Size             + SU - 1) / SU);
!    subtype S_B   is SEA (1 .. (Boolean'Size                  + SU - 1) / SU);
!    subtype S_C   is SEA (1 .. (Character'Size                + SU - 1) / SU);
!    subtype S_F   is SEA (1 .. (Float'Size                    + SU - 1) / SU);
!    subtype S_I   is SEA (1 .. (Integer'Size                  + SU - 1) / SU);
!    subtype S_LF  is SEA (1 .. (Long_Float'Size               + SU - 1) / SU);
!    subtype S_LI  is SEA (1 .. (Long_Integer'Size             + SU - 1) / SU);
!    subtype S_LLF is SEA (1 .. (Long_Long_Float'Size          + SU - 1) / SU);
!    subtype S_LLI is SEA (1 .. (Long_Long_Integer'Size        + SU - 1) / SU);
!    subtype S_LLU is SEA (1 .. (UST.Long_Long_Unsigned'Size   + SU - 1) / SU);
!    subtype S_LU  is SEA (1 .. (UST.Long_Unsigned'Size        + SU - 1) / SU);
!    subtype S_SF  is SEA (1 .. (Short_Float'Size              + SU - 1) / SU);
!    subtype S_SI  is SEA (1 .. (Short_Integer'Size            + SU - 1) / SU);
!    subtype S_SSI is SEA (1 .. (Short_Short_Integer'Size      + SU - 1) / SU);
!    subtype S_SSU is SEA (1 .. (UST.Short_Short_Unsigned'Size + SU - 1) / SU);
!    subtype S_SU  is SEA (1 .. (UST.Short_Unsigned'Size       + SU - 1) / SU);
!    subtype S_U   is SEA (1 .. (UST.Unsigned'Size             + SU - 1) / SU);
!    subtype S_WC  is SEA (1 .. (Wide_Character'Size           + SU - 1) / SU);
!    subtype S_WWC is SEA (1 .. (Wide_Wide_Character'Size      + SU - 1) / SU);
  
     --  Unchecked conversions from the elementary type to the stream type
  
!    function From_AD  is new UC (Fat_Pointer,              S_AD);
!    function From_AS  is new UC (Thin_Pointer,             S_AS);
!    function From_F   is new UC (Float,                    S_F);
!    function From_I   is new UC (Integer,                  S_I);
!    function From_LF  is new UC (Long_Float,               S_LF);
!    function From_LI  is new UC (Long_Integer,             S_LI);
!    function From_LLF is new UC (Long_Long_Float,          S_LLF);
!    function From_LLI is new UC (Long_Long_Integer,        S_LLI);
!    function From_LLU is new UC (UST.Long_Long_Unsigned,   S_LLU);
!    function From_LU  is new UC (UST.Long_Unsigned,        S_LU);
!    function From_SF  is new UC (Short_Float,              S_SF);
!    function From_SI  is new UC (Short_Integer,            S_SI);
!    function From_SSI is new UC (Short_Short_Integer,      S_SSI);
!    function From_SSU is new UC (UST.Short_Short_Unsigned, S_SSU);
!    function From_SU  is new UC (UST.Short_Unsigned,       S_SU);
!    function From_U   is new UC (UST.Unsigned,             S_U);
!    function From_WC  is new UC (Wide_Character,           S_WC);
!    function From_WWC is new UC (Wide_Wide_Character,      S_WWC);
  
     --  Unchecked conversions from the stream type to elementary type
  
!    function To_AD  is new UC (S_AD,  Fat_Pointer);
!    function To_AS  is new UC (S_AS,  Thin_Pointer);
!    function To_F   is new UC (S_F,   Float);
!    function To_I   is new UC (S_I,   Integer);
!    function To_LF  is new UC (S_LF,  Long_Float);
!    function To_LI  is new UC (S_LI,  Long_Integer);
!    function To_LLF is new UC (S_LLF, Long_Long_Float);
!    function To_LLI is new UC (S_LLI, Long_Long_Integer);
!    function To_LLU is new UC (S_LLU, UST.Long_Long_Unsigned);
!    function To_LU  is new UC (S_LU,  UST.Long_Unsigned);
!    function To_SF  is new UC (S_SF,  Short_Float);
!    function To_SI  is new UC (S_SI,  Short_Integer);
!    function To_SSI is new UC (S_SSI, Short_Short_Integer);
!    function To_SSU is new UC (S_SSU, UST.Short_Short_Unsigned);
!    function To_SU  is new UC (S_SU,  UST.Short_Unsigned);
!    function To_U   is new UC (S_U,   UST.Unsigned);
!    function To_WC  is new UC (S_WC,  Wide_Character);
!    function To_WWC is new UC (S_WWC, Wide_Wide_Character);
  
     -----------------
     -- Block_IO_OK --
--- 65,154 ----
     Thin_Pointer_Size : constant := System.Address'Size;
     Fat_Pointer_Size  : constant := System.Address'Size * 2;
  
!    subtype S_AD   is SEA (1 .. (Fat_Pointer_Size              + SU - 1) / SU);
!    subtype S_AS   is SEA (1 .. (Thin_Pointer_Size             + SU - 1) / SU);
!    subtype S_B    is SEA (1 .. (Boolean'Size                  + SU - 1) / SU);
!    subtype S_C    is SEA (1 .. (Character'Size                + SU - 1) / SU);
!    subtype S_F    is SEA (1 .. (Float'Size                    + SU - 1) / SU);
!    subtype S_I    is SEA (1 .. (Integer'Size                  + SU - 1) / SU);
!    subtype S_I24  is SEA (1 .. (Integer_24'Size               + SU - 1) / SU);
!    subtype S_LF   is SEA (1 .. (Long_Float'Size               + SU - 1) / SU);
!    subtype S_LI   is SEA (1 .. (Long_Integer'Size             + SU - 1) / SU);
!    subtype S_LLF  is SEA (1 .. (Long_Long_Float'Size          + SU - 1) / SU);
!    subtype S_LLI  is SEA (1 .. (Long_Long_Integer'Size        + SU - 1) / SU);
!    subtype S_LLLI is SEA (1 .. (Long_Long_Long_Integer'Size   + SU - 1) / SU);
!    subtype S_LLLU is
!                   SEA (1 .. (UST.Long_Long_Long_Unsigned'Size + SU - 1) / SU);
!    subtype S_LLU  is SEA (1 .. (UST.Long_Long_Unsigned'Size   + SU - 1) / SU);
!    subtype S_LU   is SEA (1 .. (UST.Long_Unsigned'Size        + SU - 1) / SU);
!    subtype S_SF   is SEA (1 .. (Short_Float'Size              + SU - 1) / SU);
!    subtype S_SI   is SEA (1 .. (Short_Integer'Size            + SU - 1) / SU);
!    subtype S_SSI  is SEA (1 .. (Short_Short_Integer'Size      + SU - 1) / SU);
!    subtype S_SSU  is SEA (1 .. (UST.Short_Short_Unsigned'Size + SU - 1) / SU);
!    subtype S_SU   is SEA (1 .. (UST.Short_Unsigned'Size       + SU - 1) / SU);
!    subtype S_U    is SEA (1 .. (UST.Unsigned'Size             + SU - 1) / SU);
!    subtype S_U24  is SEA (1 .. (Unsigned_24'Size              + SU - 1) / SU);
!    subtype S_WC   is SEA (1 .. (Wide_Character'Size           + SU - 1) / SU);
!    subtype S_WWC  is SEA (1 .. (Wide_Wide_Character'Size      + SU - 1) / SU);
  
     --  Unchecked conversions from the elementary type to the stream type
  
!    function From_AD   is new UC (Fat_Pointer,                 S_AD);
!    function From_AS   is new UC (Thin_Pointer,                S_AS);
!    function From_F    is new UC (Float,                       S_F);
!    function From_I    is new UC (Integer,                     S_I);
!    function From_I24  is new UC (Integer_24,                  S_I24);
!    function From_LF   is new UC (Long_Float,                  S_LF);
!    function From_LI   is new UC (Long_Integer,                S_LI);
!    function From_LLF  is new UC (Long_Long_Float,             S_LLF);
!    function From_LLI  is new UC (Long_Long_Integer,           S_LLI);
!    function From_LLLI is new UC (Long_Long_Long_Integer,      S_LLLI);
!    function From_LLLU is new UC (UST.Long_Long_Long_Unsigned, S_LLLU);
!    function From_LLU  is new UC (UST.Long_Long_Unsigned,      S_LLU);
!    function From_LU   is new UC (UST.Long_Unsigned,           S_LU);
!    function From_SF   is new UC (Short_Float,                 S_SF);
!    function From_SI   is new UC (Short_Integer,               S_SI);
!    function From_SSI  is new UC (Short_Short_Integer,         S_SSI);
!    function From_SSU  is new UC (UST.Short_Short_Unsigned,    S_SSU);
!    function From_SU   is new UC (UST.Short_Unsigned,          S_SU);
!    function From_U    is new UC (UST.Unsigned,                S_U);
!    function From_U24  is new UC (Unsigned_24,                 S_U24);
!    function From_WC   is new UC (Wide_Character,              S_WC);
!    function From_WWC  is new UC (Wide_Wide_Character,         S_WWC);
  
     --  Unchecked conversions from the stream type to elementary type
  
!    function To_AD   is new UC (S_AD,   Fat_Pointer);
!    function To_AS   is new UC (S_AS,   Thin_Pointer);
!    function To_F    is new UC (S_F,    Float);
!    function To_I    is new UC (S_I,    Integer);
!    function To_I24  is new UC (S_I24,  Integer_24);
!    function To_LF   is new UC (S_LF,   Long_Float);
!    function To_LI   is new UC (S_LI,   Long_Integer);
!    function To_LLF  is new UC (S_LLF,  Long_Long_Float);
!    function To_LLI  is new UC (S_LLI,  Long_Long_Integer);
!    function To_LLLI is new UC (S_LLLI, Long_Long_Long_Integer);
!    function To_LLLU is new UC (S_LLLU, UST.Long_Long_Long_Unsigned);
!    function To_LLU  is new UC (S_LLU,  UST.Long_Long_Unsigned);
!    function To_LU   is new UC (S_LU,   UST.Long_Unsigned);
!    function To_SF   is new UC (S_SF,   Short_Float);
!    function To_SI   is new UC (S_SI,   Short_Integer);
!    function To_SSI  is new UC (S_SSI,  Short_Short_Integer);
!    function To_SSU  is new UC (S_SSU,  UST.Short_Short_Unsigned);
!    function To_SU   is new UC (S_SU,   UST.Short_Unsigned);
!    function To_U    is new UC (S_U,    UST.Unsigned);
!    function To_U24  is new UC (S_U24,  Unsigned_24);
!    function To_WC   is new UC (S_WC,   Wide_Character);
!    function To_WWC  is new UC (S_WWC,  Wide_Wide_Character);
! 
!    -----------------
!    -- XDR_Support --
!    -----------------
! 
!    function XDR_Support return Boolean is
!    begin
!       return XDR_Flag = 1;
!    end XDR_Support;
  
     -----------------
     -- Block_IO_OK --
*************** package body System.Stream_Attributes is
*** 122,128 ****
  
     function Block_IO_OK return Boolean is
     begin
!       return True;
     end Block_IO_OK;
  
     ----------
--- 156,162 ----
  
     function Block_IO_OK return Boolean is
     begin
!       return not XDR_Support;
     end Block_IO_OK;
  
     ----------
*************** package body System.Stream_Attributes is
*** 134,139 ****
--- 168,177 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_AD (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 152,157 ****
--- 190,199 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_AS (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 170,175 ****
--- 212,221 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_B (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 188,193 ****
--- 234,243 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_C (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 206,211 ****
--- 256,265 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_F (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 224,229 ****
--- 278,287 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_I (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 233,238 ****
--- 291,318 ----
        end if;
     end I_I;
  
+    -----------
+    -- I_I24 --
+    -----------
+ 
+    function I_I24 (Stream : not null access RST) return Integer_24 is
+       T : S_I24;
+       L : SEO;
+ 
+    begin
+       if XDR_Support then
+          return XDR.I_I24 (Stream);
+       end if;
+ 
+       Ada.Streams.Read (Stream.all, T, L);
+ 
+       if L < T'Last then
+          raise Err;
+       else
+          return To_I24 (T);
+       end if;
+    end I_I24;
+ 
     ----------
     -- I_LF --
     ----------
*************** package body System.Stream_Attributes is
*** 242,247 ****
--- 322,331 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_LF (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 260,265 ****
--- 344,353 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_LI (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 278,283 ****
--- 366,375 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_LLF (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 296,301 ****
--- 388,397 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_LLI (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 305,310 ****
--- 401,453 ----
        end if;
     end I_LLI;
  
+    ------------
+    -- I_LLLI --
+    ------------
+ 
+    function I_LLLI (Stream : not null access RST) return Long_Long_Long_Integer
+    is
+       T : S_LLLI;
+       L : SEO;
+ 
+    begin
+       if XDR_Support then
+          raise Ada.IO_Exceptions.Device_Error;
+       end if;
+ 
+       Ada.Streams.Read (Stream.all, T, L);
+ 
+       if L < T'Last then
+          raise Err;
+       else
+          return To_LLLI (T);
+       end if;
+    end I_LLLI;
+ 
+    ------------
+    -- I_LLLU --
+    ------------
+ 
+    function I_LLLU
+      (Stream : not null access RST) return UST.Long_Long_Long_Unsigned
+    is
+       T : S_LLLU;
+       L : SEO;
+ 
+    begin
+       if XDR_Support then
+          raise Ada.IO_Exceptions.Device_Error;
+       end if;
+ 
+       Ada.Streams.Read (Stream.all, T, L);
+ 
+       if L < T'Last then
+          raise Err;
+       else
+          return To_LLLU (T);
+       end if;
+    end I_LLLU;
+ 
     -----------
     -- I_LLU --
     -----------
*************** package body System.Stream_Attributes is
*** 316,321 ****
--- 459,468 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_LLU (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 334,339 ****
--- 481,490 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_LU (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 352,357 ****
--- 503,512 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_SF (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 370,375 ****
--- 525,534 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_SI (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 388,393 ****
--- 547,556 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_SSI (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 408,413 ****
--- 571,580 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_SSU (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 426,431 ****
--- 593,602 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_SU (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 444,449 ****
--- 615,624 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_U (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 453,458 ****
--- 628,655 ----
        end if;
     end I_U;
  
+    -----------
+    -- I_U24 --
+    -----------
+ 
+    function I_U24 (Stream : not null access RST) return Unsigned_24 is
+       T : S_U24;
+       L : SEO;
+ 
+    begin
+       if XDR_Support then
+          return XDR.I_U24 (Stream);
+       end if;
+ 
+       Ada.Streams.Read (Stream.all, T, L);
+ 
+       if L < T'Last then
+          raise Err;
+       else
+          return To_U24 (T);
+       end if;
+    end I_U24;
+ 
     ----------
     -- I_WC --
     ----------
*************** package body System.Stream_Attributes is
*** 462,467 ****
--- 659,668 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_WC (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 480,485 ****
--- 681,690 ----
        L : SEO;
  
     begin
+       if XDR_Support then
+          return XDR.I_WWC (Stream);
+       end if;
+ 
        Ada.Streams.Read (Stream.all, T, L);
  
        if L < T'Last then
*************** package body System.Stream_Attributes is
*** 496,501 ****
--- 701,711 ----
     procedure W_AD (Stream : not null access RST; Item : Fat_Pointer) is
        T : constant S_AD := From_AD (Item);
     begin
+       if XDR_Support then
+          XDR.W_AD (Stream, Item);
+          return;
+       end if;
+ 
        Ada.Streams.Write (Stream.all, T);
     end W_AD;
  
*************** package body System.Stream_Attributes is
*** 506,511 ****
--- 716,726 ----
     procedure W_AS (Stream : not null access RST; Item : Thin_Pointer) is
        T : constant S_AS := From_AS (Item);
     begin
+       if XDR_Support then
+          XDR.W_AS (Stream, Item);
+          return;
+       end if;
+ 
        Ada.Streams.Write (Stream.all, T);
     end W_AS;
  
*************** package body System.Stream_Attributes is
*** 516,521 ****
--- 731,741 ----
     procedure W_B (Stream : not null access RST; Item : Boolean) is
        T : S_B;
     begin
+       if XDR_Support then
+          XDR.W_B (Stream, Item);
+          return;
+       end if;
+ 
        T (1) := Boolean'Pos (Item);
        Ada.Streams.Write (Stream.all, T);
     end W_B;
*************** package body System.Stream_Attributes is
*** 527,532 ****
--- 747,757 ----
     procedure W_C (Stream : not null access RST; Item : Character) is
        T : S_C;
     begin
+       if XDR_Support then
+          XDR.W_C (Stream, Item);
+          return;
+       end if;
+ 
        T (1) := Character'Pos (Item);
        Ada.Streams.Write (Stream.all, T);
     end W_C;
*************** package body System.Stream_Attributes is
*** 536,544 ****
     ---------
  
     procedure W_F (Stream : not null access RST; Item : Float) is
-       T : constant S_F := From_F (Item);
     begin
!       Ada.Streams.Write (Stream.all, T);
     end W_F;
  
     ---------
--- 761,773 ----
     ---------
  
     procedure W_F (Stream : not null access RST; Item : Float) is
     begin
!       if XDR_Support then
!          XDR.W_F (Stream, Item);
!          return;
!       end if;
! 
!       Ada.Streams.Write (Stream.all, From_F (Item));
     end W_F;
  
     ---------
*************** package body System.Stream_Attributes is
*** 546,564 ****
     ---------
  
     procedure W_I (Stream : not null access RST; Item : Integer) is
-       T : constant S_I := From_I (Item);
     begin
!       Ada.Streams.Write (Stream.all, T);
     end W_I;
  
     ----------
     -- W_LF --
     ----------
  
     procedure W_LF (Stream : not null access RST; Item : Long_Float) is
-       T : constant S_LF := From_LF (Item);
     begin
!       Ada.Streams.Write (Stream.all, T);
     end W_LF;
  
     ----------
--- 775,815 ----
     ---------
  
     procedure W_I (Stream : not null access RST; Item : Integer) is
     begin
!       if XDR_Support then
!          XDR.W_I (Stream, Item);
!          return;
!       end if;
! 
!       Ada.Streams.Write (Stream.all, From_I (Item));
     end W_I;
  
+    -----------
+    -- W_I24 --
+    -----------
+ 
+    procedure W_I24 (Stream : not null access RST; Item : Integer_24) is
+    begin
+       if XDR_Support then
+          XDR.W_I24 (Stream, Item);
+          return;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, From_I24 (Item));
+    end W_I24;
+ 
     ----------
     -- W_LF --
     ----------
  
     procedure W_LF (Stream : not null access RST; Item : Long_Float) is
     begin
!       if XDR_Support then
!          XDR.W_LF (Stream, Item);
!          return;
!       end if;
! 
!       Ada.Streams.Write (Stream.all, From_LF (Item));
     end W_LF;
  
     ----------
*************** package body System.Stream_Attributes is
*** 566,574 ****
     ----------
  
     procedure W_LI (Stream : not null access RST; Item : Long_Integer) is
-       T : constant S_LI := From_LI (Item);
     begin
!       Ada.Streams.Write (Stream.all, T);
     end W_LI;
  
     -----------
--- 817,829 ----
     ----------
  
     procedure W_LI (Stream : not null access RST; Item : Long_Integer) is
     begin
!       if XDR_Support then
!          XDR.W_LI (Stream, Item);
!          return;
!       end if;
! 
!       Ada.Streams.Write (Stream.all, From_LI (Item));
     end W_LI;
  
     -----------
*************** package body System.Stream_Attributes is
*** 576,598 ****
     -----------
  
     procedure W_LLF (Stream : not null access RST; Item : Long_Long_Float) is
-       T : constant S_LLF := From_LLF (Item);
     begin
!       Ada.Streams.Write (Stream.all, T);
     end W_LLF;
  
     -----------
     -- W_LLI --
     -----------
  
!    procedure W_LLI
!      (Stream : not null access RST; Item : Long_Long_Integer)
!    is
!       T : constant S_LLI := From_LLI (Item);
     begin
!       Ada.Streams.Write (Stream.all, T);
     end W_LLI;
  
     -----------
     -- W_LLU --
     -----------
--- 831,888 ----
     -----------
  
     procedure W_LLF (Stream : not null access RST; Item : Long_Long_Float) is
     begin
!       if XDR_Support then
!          XDR.W_LLF (Stream, Item);
!          return;
!       end if;
! 
!       Ada.Streams.Write (Stream.all, From_LLF (Item));
     end W_LLF;
  
     -----------
     -- W_LLI --
     -----------
  
!    procedure W_LLI (Stream : not null access RST; Item : Long_Long_Integer) is
     begin
!       if XDR_Support then
!          XDR.W_LLI (Stream, Item);
!          return;
!       end if;
! 
!       Ada.Streams.Write (Stream.all, From_LLI (Item));
     end W_LLI;
  
+    ------------
+    -- W_LLLI --
+    ------------
+ 
+    procedure W_LLLI
+      (Stream : not null access RST; Item : Long_Long_Long_Integer) is
+    begin
+       if XDR_Support then
+          raise Ada.IO_Exceptions.Device_Error;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, From_LLLI (Item));
+    end W_LLLI;
+ 
+    ------------
+    -- W_LLLU --
+    ------------
+ 
+    procedure W_LLLU
+      (Stream : not null access RST; Item : UST.Long_Long_Long_Unsigned)
+    is
+    begin
+       if XDR_Support then
+          raise Ada.IO_Exceptions.Device_Error;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, From_LLLU (Item));
+    end W_LLLU;
+ 
     -----------
     -- W_LLU --
     -----------
*************** package body System.Stream_Attributes is
*** 600,620 ****
     procedure W_LLU
       (Stream : not null access RST; Item : UST.Long_Long_Unsigned)
     is
-       T : constant S_LLU := From_LLU (Item);
     begin
!       Ada.Streams.Write (Stream.all, T);
     end W_LLU;
  
     ----------
     -- W_LU --
     ----------
  
!    procedure W_LU
!      (Stream : not null access RST; Item : UST.Long_Unsigned)
!    is
!       T : constant S_LU := From_LU (Item);
     begin
!       Ada.Streams.Write (Stream.all, T);
     end W_LU;
  
     ----------
--- 890,916 ----
     procedure W_LLU
       (Stream : not null access RST; Item : UST.Long_Long_Unsigned)
     is
     begin
!       if XDR_Support then
!          XDR.W_LLU (Stream, Item);
!          return;
!       end if;
! 
!       Ada.Streams.Write (Stream.all, From_LLU (Item));
     end W_LLU;
  
     ----------
     -- W_LU --
     ----------
  
!    procedure W_LU (Stream : not null access RST; Item : UST.Long_Unsigned) is
     begin
!       if XDR_Support then
!          XDR.W_LU (Stream, Item);
!          return;
!       end if;
! 
!       Ada.Streams.Write (Stream.all, From_LU (Item));
     end W_LU;
  
     ----------
*************** package body System.Stream_Attributes is
*** 622,630 ****
     ----------
  
     procedure W_SF (Stream : not null access RST; Item : Short_Float) is
-       T : constant S_SF := From_SF (Item);
     begin
!       Ada.Streams.Write (Stream.all, T);
     end W_SF;
  
     ----------
--- 918,930 ----
     ----------
  
     procedure W_SF (Stream : not null access RST; Item : Short_Float) is
     begin
!       if XDR_Support then
!          XDR.W_SF (Stream, Item);
!          return;
!       end if;
! 
!       Ada.Streams.Write (Stream.all, From_SF (Item));
     end W_SF;
  
     ----------
*************** package body System.Stream_Attributes is
*** 632,640 ****
     ----------
  
     procedure W_SI (Stream : not null access RST; Item : Short_Integer) is
-       T : constant S_SI := From_SI (Item);
     begin
!       Ada.Streams.Write (Stream.all, T);
     end W_SI;
  
     -----------
--- 932,944 ----
     ----------
  
     procedure W_SI (Stream : not null access RST; Item : Short_Integer) is
     begin
!       if XDR_Support then
!          XDR.W_SI (Stream, Item);
!          return;
!       end if;
! 
!       Ada.Streams.Write (Stream.all, From_SI (Item));
     end W_SI;
  
     -----------
*************** package body System.Stream_Attributes is
*** 644,652 ****
     procedure W_SSI
       (Stream : not null access RST; Item : Short_Short_Integer)
     is
-       T : constant S_SSI := From_SSI (Item);
     begin
!       Ada.Streams.Write (Stream.all, T);
     end W_SSI;
  
     -----------
--- 948,960 ----
     procedure W_SSI
       (Stream : not null access RST; Item : Short_Short_Integer)
     is
     begin
!       if XDR_Support then
!          XDR.W_SSI (Stream, Item);
!          return;
!       end if;
! 
!       Ada.Streams.Write (Stream.all, From_SSI (Item));
     end W_SSI;
  
     -----------
*************** package body System.Stream_Attributes is
*** 656,676 ****
     procedure W_SSU
       (Stream : not null access RST; Item : UST.Short_Short_Unsigned)
     is
-       T : constant S_SSU := From_SSU (Item);
     begin
!       Ada.Streams.Write (Stream.all, T);
     end W_SSU;
  
     ----------
     -- W_SU --
     ----------
  
!    procedure W_SU
!      (Stream : not null access RST; Item : UST.Short_Unsigned)
!    is
!       T : constant S_SU := From_SU (Item);
     begin
!       Ada.Streams.Write (Stream.all, T);
     end W_SU;
  
     ---------
--- 964,990 ----
     procedure W_SSU
       (Stream : not null access RST; Item : UST.Short_Short_Unsigned)
     is
     begin
!       if XDR_Support then
!          XDR.W_SSU (Stream, Item);
!          return;
!       end if;
! 
!       Ada.Streams.Write (Stream.all, From_SSU (Item));
     end W_SSU;
  
     ----------
     -- W_SU --
     ----------
  
!    procedure W_SU (Stream : not null access RST; Item : UST.Short_Unsigned) is
     begin
!       if XDR_Support then
!          XDR.W_SU (Stream, Item);
!          return;
!       end if;
! 
!       Ada.Streams.Write (Stream.all, From_SU (Item));
     end W_SU;
  
     ---------
*************** package body System.Stream_Attributes is
*** 678,696 ****
     ---------
  
     procedure W_U (Stream : not null access RST; Item : UST.Unsigned) is
-       T : constant S_U := From_U (Item);
     begin
!       Ada.Streams.Write (Stream.all, T);
     end W_U;
  
     ----------
     -- W_WC --
     ----------
  
     procedure W_WC (Stream : not null access RST; Item : Wide_Character) is
-       T : constant S_WC := From_WC (Item);
     begin
!       Ada.Streams.Write (Stream.all, T);
     end W_WC;
  
     -----------
--- 992,1032 ----
     ---------
  
     procedure W_U (Stream : not null access RST; Item : UST.Unsigned) is
     begin
!       if XDR_Support then
!          XDR.W_U (Stream, Item);
!          return;
!       end if;
! 
!       Ada.Streams.Write (Stream.all, From_U (Item));
     end W_U;
  
+    -----------
+    -- W_U24 --
+    -----------
+ 
+    procedure W_U24 (Stream : not null access RST; Item : Unsigned_24) is
+    begin
+       if XDR_Support then
+          XDR.W_U24 (Stream, Item);
+          return;
+       end if;
+ 
+       Ada.Streams.Write (Stream.all, From_U24 (Item));
+    end W_U24;
+ 
     ----------
     -- W_WC --
     ----------
  
     procedure W_WC (Stream : not null access RST; Item : Wide_Character) is
     begin
!       if XDR_Support then
!          XDR.W_WC (Stream, Item);
!          return;
!       end if;
! 
!       Ada.Streams.Write (Stream.all, From_WC (Item));
     end W_WC;
  
     -----------
*************** package body System.Stream_Attributes is
*** 700,708 ****
     procedure W_WWC
       (Stream : not null access RST; Item : Wide_Wide_Character)
     is
-       T : constant S_WWC := From_WWC (Item);
     begin
!       Ada.Streams.Write (Stream.all, T);
     end W_WWC;
  
  end System.Stream_Attributes;
--- 1036,1048 ----
     procedure W_WWC
       (Stream : not null access RST; Item : Wide_Wide_Character)
     is
     begin
!       if XDR_Support then
!          XDR.W_WWC (Stream, Item);
!          return;
!       end if;
! 
!       Ada.Streams.Write (Stream.all, From_WWC (Item));
     end W_WWC;
  
  end System.Stream_Attributes;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stratt.ads gcc-11.1.0/gcc/ada/libgnat/s-stratt.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-stratt.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stratt.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Stream_Attributes is
*** 53,58 ****
--- 53,64 ----
  
     subtype SEC is Ada.Streams.Stream_Element_Count;
  
+    type Integer_24 is range -2 ** 23 .. 2 ** 23 - 1;
+    for Integer_24'Size use 24;
+ 
+    type Unsigned_24 is mod 2 ** 24;
+    for Unsigned_24'Size use 24;
+ 
     --  Enumeration types are usually transferred using the routine for the
     --  corresponding integer. The exception is that special routines are
     --  provided for Boolean and the character types, in case the protocol
*************** package System.Stream_Attributes is
*** 98,124 ****
     --  is the same for all elementary types (no bounds or discriminants
     --  are involved).
  
!    function I_AD  (Stream : not null access RST) return Fat_Pointer;
!    function I_AS  (Stream : not null access RST) return Thin_Pointer;
!    function I_B   (Stream : not null access RST) return Boolean;
!    function I_C   (Stream : not null access RST) return Character;
!    function I_F   (Stream : not null access RST) return Float;
!    function I_I   (Stream : not null access RST) return Integer;
!    function I_LF  (Stream : not null access RST) return Long_Float;
!    function I_LI  (Stream : not null access RST) return Long_Integer;
!    function I_LLF (Stream : not null access RST) return Long_Long_Float;
!    function I_LLI (Stream : not null access RST) return Long_Long_Integer;
!    function I_LLU (Stream : not null access RST) return UST.Long_Long_Unsigned;
!    function I_LU  (Stream : not null access RST) return UST.Long_Unsigned;
!    function I_SF  (Stream : not null access RST) return Short_Float;
!    function I_SI  (Stream : not null access RST) return Short_Integer;
!    function I_SSI (Stream : not null access RST) return Short_Short_Integer;
!    function I_SSU (Stream : not null access RST) return
!                                                    UST.Short_Short_Unsigned;
!    function I_SU  (Stream : not null access RST) return UST.Short_Unsigned;
!    function I_U   (Stream : not null access RST) return UST.Unsigned;
!    function I_WC  (Stream : not null access RST) return Wide_Character;
!    function I_WWC (Stream : not null access RST) return Wide_Wide_Character;
  
     -----------------------
     -- Output Procedures --
--- 104,137 ----
     --  is the same for all elementary types (no bounds or discriminants
     --  are involved).
  
!    function I_AD   (Stream : not null access RST) return Fat_Pointer;
!    function I_AS   (Stream : not null access RST) return Thin_Pointer;
!    function I_B    (Stream : not null access RST) return Boolean;
!    function I_C    (Stream : not null access RST) return Character;
!    function I_F    (Stream : not null access RST) return Float;
!    function I_I    (Stream : not null access RST) return Integer;
!    function I_I24  (Stream : not null access RST) return Integer_24;
!    function I_LF   (Stream : not null access RST) return Long_Float;
!    function I_LI   (Stream : not null access RST) return Long_Integer;
!    function I_LLF  (Stream : not null access RST) return Long_Long_Float;
!    function I_LLI  (Stream : not null access RST) return Long_Long_Integer;
!    function I_LLLI (Stream : not null access RST) return
!                                                     Long_Long_Long_Integer;
!    function I_LLLU (Stream : not null access RST) return
!                                                    UST.Long_Long_Long_Unsigned;
!    function I_LLU  (Stream : not null access RST) return
!                                                     UST.Long_Long_Unsigned;
!    function I_LU   (Stream : not null access RST) return UST.Long_Unsigned;
!    function I_SF   (Stream : not null access RST) return Short_Float;
!    function I_SI   (Stream : not null access RST) return Short_Integer;
!    function I_SSI  (Stream : not null access RST) return Short_Short_Integer;
!    function I_SSU  (Stream : not null access RST) return
!                                                     UST.Short_Short_Unsigned;
!    function I_SU   (Stream : not null access RST) return UST.Short_Unsigned;
!    function I_U    (Stream : not null access RST) return UST.Unsigned;
!    function I_U24  (Stream : not null access RST) return Unsigned_24;
!    function I_WC   (Stream : not null access RST) return Wide_Character;
!    function I_WWC  (Stream : not null access RST) return Wide_Wide_Character;
  
     -----------------------
     -- Output Procedures --
*************** package System.Stream_Attributes is
*** 129,163 ****
     --  'Write and 'Output because there are no discriminants or bounds to
     --  be written.
  
!    procedure W_AD  (Stream : not null access RST; Item : Fat_Pointer);
!    procedure W_AS  (Stream : not null access RST; Item : Thin_Pointer);
!    procedure W_B   (Stream : not null access RST; Item : Boolean);
!    procedure W_C   (Stream : not null access RST; Item : Character);
!    procedure W_F   (Stream : not null access RST; Item : Float);
!    procedure W_I   (Stream : not null access RST; Item : Integer);
!    procedure W_LF  (Stream : not null access RST; Item : Long_Float);
!    procedure W_LI  (Stream : not null access RST; Item : Long_Integer);
!    procedure W_LLF (Stream : not null access RST; Item : Long_Long_Float);
!    procedure W_LLI (Stream : not null access RST; Item : Long_Long_Integer);
!    procedure W_LLU (Stream : not null access RST; Item :
!                                                     UST.Long_Long_Unsigned);
!    procedure W_LU  (Stream : not null access RST; Item : UST.Long_Unsigned);
!    procedure W_SF  (Stream : not null access RST; Item : Short_Float);
!    procedure W_SI  (Stream : not null access RST; Item : Short_Integer);
!    procedure W_SSI (Stream : not null access RST; Item : Short_Short_Integer);
!    procedure W_SSU (Stream : not null access RST; Item :
!                                                     UST.Short_Short_Unsigned);
!    procedure W_SU  (Stream : not null access RST; Item : UST.Short_Unsigned);
!    procedure W_U   (Stream : not null access RST; Item : UST.Unsigned);
!    procedure W_WC  (Stream : not null access RST; Item : Wide_Character);
!    procedure W_WWC (Stream : not null access RST; Item : Wide_Wide_Character);
  
     function Block_IO_OK return Boolean;
!    --  Package System.Stream_Attributes has several bodies - the default one
!    --  distributed with GNAT, and s-stratt__xdr.adb, which is based on the XDR
!    --  standard. Both bodies share the same spec. The role of this function is
!    --  to indicate whether the current version of System.Stream_Attributes
!    --  supports block IO. See System.Strings.Stream_Ops (s-ststop) for details.
  
  private
     pragma Inline (I_AD);
--- 142,179 ----
     --  'Write and 'Output because there are no discriminants or bounds to
     --  be written.
  
!    procedure W_AD   (Stream : not null access RST; Item : Fat_Pointer);
!    procedure W_AS   (Stream : not null access RST; Item : Thin_Pointer);
!    procedure W_B    (Stream : not null access RST; Item : Boolean);
!    procedure W_C    (Stream : not null access RST; Item : Character);
!    procedure W_F    (Stream : not null access RST; Item : Float);
!    procedure W_I    (Stream : not null access RST; Item : Integer);
!    procedure W_I24  (Stream : not null access RST; Item : Integer_24);
!    procedure W_LF   (Stream : not null access RST; Item : Long_Float);
!    procedure W_LI   (Stream : not null access RST; Item : Long_Integer);
!    procedure W_LLF  (Stream : not null access RST; Item : Long_Long_Float);
!    procedure W_LLI  (Stream : not null access RST; Item : Long_Long_Integer);
!    procedure W_LLLI (Stream : not null access RST; Item :
!                                                      Long_Long_Long_Integer);
!    procedure W_LLLU (Stream : not null access RST; Item :
!                                                   UST.Long_Long_Long_Unsigned);
!    procedure W_LLU  (Stream : not null access RST; Item :
!                                                      UST.Long_Long_Unsigned);
!    procedure W_LU   (Stream : not null access RST; Item : UST.Long_Unsigned);
!    procedure W_SF   (Stream : not null access RST; Item : Short_Float);
!    procedure W_SI   (Stream : not null access RST; Item : Short_Integer);
!    procedure W_SSI  (Stream : not null access RST; Item : Short_Short_Integer);
!    procedure W_SSU  (Stream : not null access RST; Item :
!                                                      UST.Short_Short_Unsigned);
!    procedure W_SU   (Stream : not null access RST; Item : UST.Short_Unsigned);
!    procedure W_U    (Stream : not null access RST; Item : UST.Unsigned);
!    procedure W_U24  (Stream : not null access RST; Item : Unsigned_24);
!    procedure W_WC   (Stream : not null access RST; Item : Wide_Character);
!    procedure W_WWC  (Stream : not null access RST; Item : Wide_Wide_Character);
  
     function Block_IO_OK return Boolean;
!    --  Indicate whether the current setting supports block IO. See
!    --  System.Strings.Stream_Ops (s-ststop) for details on block IO.
  
  private
     pragma Inline (I_AD);
*************** private
*** 170,175 ****
--- 186,193 ----
     pragma Inline (I_LI);
     pragma Inline (I_LLF);
     pragma Inline (I_LLI);
+    pragma Inline (I_LLLI);
+    pragma Inline (I_LLLU);
     pragma Inline (I_LLU);
     pragma Inline (I_LU);
     pragma Inline (I_SF);
*************** private
*** 191,196 ****
--- 209,216 ----
     pragma Inline (W_LI);
     pragma Inline (W_LLF);
     pragma Inline (W_LLI);
+    pragma Inline (W_LLLI);
+    pragma Inline (W_LLLU);
     pragma Inline (W_LLU);
     pragma Inline (W_LU);
     pragma Inline (W_SF);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-stratt__xdr.adb gcc-11.1.0/gcc/ada/libgnat/s-stratt__xdr.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-stratt__xdr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-stratt__xdr.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1901 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             S Y S T E M . S T R E A M _ A T T R I B U T E S              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --         Copyright (C) 1996-2019, Free Software Foundation, Inc.          --
- --                                                                          --
- -- GARLIC is free software;  you can redistribute it and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This file is an alternate version of s-stratt.adb based on the XDR
- --  standard. It is especially useful for exchanging streams between two
- --  different systems with different basic type representations and endianness.
- 
- pragma Warnings (Off, "*not allowed in compiler unit");
- --  This body is used only when rebuilding the runtime library, not when
- --  building the compiler, so it's OK to depend on features that would
- --  otherwise break bootstrap (e.g. IF-expressions).
- 
- with Ada.IO_Exceptions;
- with Ada.Streams;              use Ada.Streams;
- with Ada.Unchecked_Conversion;
- 
- package body System.Stream_Attributes is
- 
-    pragma Suppress (Range_Check);
-    pragma Suppress (Overflow_Check);
- 
-    use UST;
- 
-    Data_Error : exception renames Ada.IO_Exceptions.End_Error;
-    --  Exception raised if insufficient data read (End_Error is mandated by
-    --  AI95-00132).
- 
-    SU : constant := System.Storage_Unit;
-    --  The code in this body assumes that SU = 8
- 
-    BB : constant := 2 ** SU;           --  Byte base
-    BL : constant := 2 ** SU - 1;       --  Byte last
-    BS : constant := 2 ** (SU - 1);     --  Byte sign
- 
-    US : constant := Unsigned'Size;     --  Unsigned size
-    UB : constant := (US - 1) / SU + 1; --  Unsigned byte
-    UL : constant := 2 ** US - 1;       --  Unsigned last
- 
-    subtype SE  is Ada.Streams.Stream_Element;
-    subtype SEA is Ada.Streams.Stream_Element_Array;
-    subtype SEO is Ada.Streams.Stream_Element_Offset;
- 
-    generic function UC renames Ada.Unchecked_Conversion;
- 
-    type Field_Type is
-       record
-          E_Size       : Integer; --  Exponent bit size
-          E_Bias       : Integer; --  Exponent bias
-          F_Size       : Integer; --  Fraction bit size
-          E_Last       : Integer; --  Max exponent value
-          F_Mask       : SE;      --  Mask to apply on first fraction byte
-          E_Bytes      : SEO;     --  N. of exponent bytes completely used
-          F_Bytes      : SEO;     --  N. of fraction bytes completely used
-          F_Bits       : Integer; --  N. of bits used on first fraction word
-       end record;
- 
-    type Precision is (Single, Double, Quadruple);
- 
-    Fields : constant array (Precision) of Field_Type := (
- 
-                --  Single precision
- 
-               (E_Size  => 8,
-                E_Bias  => 127,
-                F_Size  => 23,
-                E_Last  => 2 ** 8 - 1,
-                F_Mask  => 16#7F#,                  --  2 ** 7 - 1,
-                E_Bytes => 2,
-                F_Bytes => 3,
-                F_Bits  => 23 mod US),
- 
-                --  Double precision
- 
-               (E_Size  => 11,
-                E_Bias  => 1023,
-                F_Size  => 52,
-                E_Last  => 2 ** 11 - 1,
-                F_Mask  => 16#0F#,                  --  2 ** 4 - 1,
-                E_Bytes => 2,
-                F_Bytes => 7,
-                F_Bits  => 52 mod US),
- 
-                --  Quadruple precision
- 
-               (E_Size  => 15,
-                E_Bias  => 16383,
-                F_Size  => 112,
-                E_Last  => 2 ** 8 - 1,
-                F_Mask  => 16#FF#,                  --  2 ** 8 - 1,
-                E_Bytes => 2,
-                F_Bytes => 14,
-                F_Bits  => 112 mod US));
- 
-    --  The representation of all items requires a multiple of four bytes
-    --  (or 32 bits) of data. The bytes are numbered 0 through n-1. The bytes
-    --  are read or written to some byte stream such that byte m always
-    --  precedes byte m+1. If the n bytes needed to contain the data are not
-    --  a multiple of four, then the n bytes are followed by enough (0 to 3)
-    --  residual zero bytes, r, to make the total byte count a multiple of 4.
- 
-    --  An XDR signed integer is a 32-bit datum that encodes an integer
-    --  in the range [-2147483648,2147483647]. The integer is represented
-    --  in two's complement notation. The most and least significant bytes
-    --  are 0 and 3, respectively. Integers are declared as follows:
- 
-    --        (MSB)                   (LSB)
-    --      +-------+-------+-------+-------+
-    --      |byte 0 |byte 1 |byte 2 |byte 3 |
-    --      +-------+-------+-------+-------+
-    --      <------------32 bits------------>
- 
-    SSI_L : constant := 1;
-    SI_L  : constant := 2;
-    I_L   : constant := 4;
-    LI_L  : constant := 8;
-    LLI_L : constant := 8;
- 
-    subtype XDR_S_SSI is SEA (1 .. SSI_L);
-    subtype XDR_S_SI  is SEA (1 .. SI_L);
-    subtype XDR_S_I   is SEA (1 .. I_L);
-    subtype XDR_S_LI  is SEA (1 .. LI_L);
-    subtype XDR_S_LLI is SEA (1 .. LLI_L);
- 
-    function Short_Short_Integer_To_XDR_S_SSI is
-       new Ada.Unchecked_Conversion (Short_Short_Integer, XDR_S_SSI);
-    function XDR_S_SSI_To_Short_Short_Integer is
-       new Ada.Unchecked_Conversion (XDR_S_SSI, Short_Short_Integer);
- 
-    function Short_Integer_To_XDR_S_SI is
-       new Ada.Unchecked_Conversion (Short_Integer, XDR_S_SI);
-    function XDR_S_SI_To_Short_Integer is
-       new Ada.Unchecked_Conversion (XDR_S_SI, Short_Integer);
- 
-    function Integer_To_XDR_S_I is
-       new Ada.Unchecked_Conversion (Integer, XDR_S_I);
-    function XDR_S_I_To_Integer is
-      new Ada.Unchecked_Conversion (XDR_S_I, Integer);
- 
-    function Long_Long_Integer_To_XDR_S_LI is
-       new Ada.Unchecked_Conversion (Long_Long_Integer, XDR_S_LI);
-    function XDR_S_LI_To_Long_Long_Integer is
-       new Ada.Unchecked_Conversion (XDR_S_LI, Long_Long_Integer);
- 
-    function Long_Long_Integer_To_XDR_S_LLI is
-       new Ada.Unchecked_Conversion (Long_Long_Integer, XDR_S_LLI);
-    function XDR_S_LLI_To_Long_Long_Integer is
-       new Ada.Unchecked_Conversion (XDR_S_LLI, Long_Long_Integer);
- 
-    --  An XDR unsigned integer is a 32-bit datum that encodes a nonnegative
-    --  integer in the range [0,4294967295]. It is represented by an unsigned
-    --  binary number whose most and least significant bytes are 0 and 3,
-    --  respectively. An unsigned integer is declared as follows:
- 
-    --        (MSB)                   (LSB)
-    --      +-------+-------+-------+-------+
-    --      |byte 0 |byte 1 |byte 2 |byte 3 |
-    --      +-------+-------+-------+-------+
-    --      <------------32 bits------------>
- 
-    SSU_L : constant := 1;
-    SU_L  : constant := 2;
-    U_L   : constant := 4;
-    LU_L  : constant := 8;
-    LLU_L : constant := 8;
- 
-    subtype XDR_S_SSU is SEA (1 .. SSU_L);
-    subtype XDR_S_SU  is SEA (1 .. SU_L);
-    subtype XDR_S_U   is SEA (1 .. U_L);
-    subtype XDR_S_LU  is SEA (1 .. LU_L);
-    subtype XDR_S_LLU is SEA (1 .. LLU_L);
- 
-    type XDR_SSU is mod BB ** SSU_L;
-    type XDR_SU  is mod BB ** SU_L;
-    type XDR_U   is mod BB ** U_L;
- 
-    function Short_Unsigned_To_XDR_S_SU is
-       new Ada.Unchecked_Conversion (Short_Unsigned, XDR_S_SU);
-    function XDR_S_SU_To_Short_Unsigned is
-       new Ada.Unchecked_Conversion (XDR_S_SU, Short_Unsigned);
- 
-    function Unsigned_To_XDR_S_U is
-       new Ada.Unchecked_Conversion (Unsigned, XDR_S_U);
-    function XDR_S_U_To_Unsigned is
-       new Ada.Unchecked_Conversion (XDR_S_U, Unsigned);
- 
-    function Long_Long_Unsigned_To_XDR_S_LU is
-       new Ada.Unchecked_Conversion (Long_Long_Unsigned, XDR_S_LU);
-    function XDR_S_LU_To_Long_Long_Unsigned is
-       new Ada.Unchecked_Conversion (XDR_S_LU, Long_Long_Unsigned);
- 
-    function Long_Long_Unsigned_To_XDR_S_LLU is
-       new Ada.Unchecked_Conversion (Long_Long_Unsigned, XDR_S_LLU);
-    function XDR_S_LLU_To_Long_Long_Unsigned is
-       new Ada.Unchecked_Conversion (XDR_S_LLU, Long_Long_Unsigned);
- 
-    --  The standard defines the floating-point data type "float" (32 bits
-    --  or 4 bytes). The encoding used is the IEEE standard for normalized
-    --  single-precision floating-point numbers.
- 
-    --  The standard defines the encoding used for the double-precision
-    --  floating-point data type "double" (64 bits or 8 bytes). The encoding
-    --  used is the IEEE standard for normalized double-precision floating-point
-    --  numbers.
- 
-    SF_L  : constant := 4;   --  Single precision
-    F_L   : constant := 4;   --  Single precision
-    LF_L  : constant := 8;   --  Double precision
-    LLF_L : constant := 16;  --  Quadruple precision
- 
-    TM_L : constant := 8;
-    subtype XDR_S_TM is SEA (1 .. TM_L);
-    type XDR_TM is mod BB ** TM_L;
- 
-    type XDR_SA is mod 2 ** Standard'Address_Size;
-    function To_XDR_SA is new UC (System.Address, XDR_SA);
-    function To_XDR_SA is new UC (XDR_SA, System.Address);
- 
-    --  Enumerations have the same representation as signed integers.
-    --  Enumerations are handy for describing subsets of the integers.
- 
-    --  Booleans are important enough and occur frequently enough to warrant
-    --  their own explicit type in the standard. Booleans are declared as
-    --  an enumeration, with FALSE = 0 and TRUE = 1.
- 
-    --  The standard defines a string of n (numbered 0 through n-1) ASCII
-    --  bytes to be the number n encoded as an unsigned integer (as described
-    --  above), and followed by the n bytes of the string. Byte m of the string
-    --  always precedes byte m+1 of the string, and byte 0 of the string always
-    --  follows the string's length. If n is not a multiple of four, then the
-    --  n bytes are followed by enough (0 to 3) residual zero bytes, r, to make
-    --  the total byte count a multiple of four.
- 
-    --  To fit with XDR string, do not consider character as an enumeration
-    --  type.
- 
-    C_L   : constant := 1;
-    subtype XDR_S_C is SEA (1 .. C_L);
- 
-    --  Consider Wide_Character as an enumeration type
- 
-    WC_L  : constant := 4;
-    subtype XDR_S_WC is SEA (1 .. WC_L);
-    type XDR_WC is mod BB ** WC_L;
- 
-    --  Consider Wide_Wide_Character as an enumeration type
- 
-    WWC_L : constant := 8;
-    subtype XDR_S_WWC is SEA (1 .. WWC_L);
-    type XDR_WWC is mod BB ** WWC_L;
- 
-    --  Optimization: if we already have the correct Bit_Order, then some
-    --  computations can be avoided since the source and the target will be
-    --  identical anyway. They will be replaced by direct unchecked
-    --  conversions.
- 
-    Optimize_Integers : constant Boolean :=
-      Default_Bit_Order = High_Order_First;
- 
-    -----------------
-    -- Block_IO_OK --
-    -----------------
- 
-    --  We must inhibit Block_IO, because in XDR mode, each element is output
-    --  according to XDR requirements, which is not at all the same as writing
-    --  the whole array in one block.
- 
-    function Block_IO_OK return Boolean is
-    begin
-       return False;
-    end Block_IO_OK;
- 
-    ----------
-    -- I_AD --
-    ----------
- 
-    function I_AD (Stream : not null access RST) return Fat_Pointer is
-       FP : Fat_Pointer;
- 
-    begin
-       FP.P1 := I_AS (Stream).P1;
-       FP.P2 := I_AS (Stream).P1;
- 
-       return FP;
-    end I_AD;
- 
-    ----------
-    -- I_AS --
-    ----------
- 
-    function I_AS (Stream : not null access RST) return Thin_Pointer is
-       S : XDR_S_TM;
-       L : SEO;
-       U : XDR_TM := 0;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
- 
-       else
-          for N in S'Range loop
-             U := U * BB + XDR_TM (S (N));
-          end loop;
- 
-          return (P1 => To_XDR_SA (XDR_SA (U)));
-       end if;
-    end I_AS;
- 
-    ---------
-    -- I_B --
-    ---------
- 
-    function I_B (Stream : not null access RST) return Boolean is
-    begin
-       case I_SSU (Stream) is
-          when 0      => return False;
-          when 1      => return True;
-          when others => raise Data_Error;
-       end case;
-    end I_B;
- 
-    ---------
-    -- I_C --
-    ---------
- 
-    function I_C (Stream : not null access RST) return Character is
-       S : XDR_S_C;
-       L : SEO;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
- 
-       else
-          --  Use Ada requirements on Character representation clause
- 
-          return Character'Val (S (1));
-       end if;
-    end I_C;
- 
-    ---------
-    -- I_F --
-    ---------
- 
-    function I_F (Stream : not null access RST) return Float is
-       I       : constant Precision := Single;
-       E_Size  : Integer  renames Fields (I).E_Size;
-       E_Bias  : Integer  renames Fields (I).E_Bias;
-       E_Last  : Integer  renames Fields (I).E_Last;
-       F_Mask  : SE       renames Fields (I).F_Mask;
-       E_Bytes : SEO      renames Fields (I).E_Bytes;
-       F_Bytes : SEO      renames Fields (I).F_Bytes;
-       F_Size  : Integer  renames Fields (I).F_Size;
- 
-       Is_Positive : Boolean;
-       Exponent    : Long_Unsigned;
-       Fraction    : Long_Unsigned;
-       Result      : Float;
-       S           : SEA (1 .. F_L);
-       L           : SEO;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
-       end if;
- 
-       --  Extract Fraction, Sign and Exponent
- 
-       Fraction := Long_Unsigned (S (F_L + 1 - F_Bytes) and F_Mask);
-       for N in F_L + 2 - F_Bytes .. F_L loop
-          Fraction := Fraction * BB + Long_Unsigned (S (N));
-       end loop;
-       Result := Float'Scaling (Float (Fraction), -F_Size);
- 
-       if BS <= S (1) then
-          Is_Positive := False;
-          Exponent := Long_Unsigned (S (1) - BS);
-       else
-          Is_Positive := True;
-          Exponent := Long_Unsigned (S (1));
-       end if;
- 
-       for N in 2 .. E_Bytes loop
-          Exponent := Exponent * BB + Long_Unsigned (S (N));
-       end loop;
-       Exponent := Shift_Right (Exponent, Integer (E_Bytes) * SU - E_Size - 1);
- 
-       --  NaN or Infinities
- 
-       if Integer (Exponent) = E_Last then
-          raise Constraint_Error;
- 
-       elsif Exponent = 0 then
- 
-          --  Signed zeros
- 
-          if Fraction = 0 then
-             null;
- 
-          --  Denormalized float
- 
-          else
-             Result := Float'Scaling (Result, 1 - E_Bias);
-          end if;
- 
-       --  Normalized float
- 
-       else
-          Result := Float'Scaling
-            (1.0 + Result, Integer (Exponent) - E_Bias);
-       end if;
- 
-       if not Is_Positive then
-          Result := -Result;
-       end if;
- 
-       return Result;
-    end I_F;
- 
-    ---------
-    -- I_I --
-    ---------
- 
-    function I_I (Stream : not null access RST) return Integer is
-       S : XDR_S_I;
-       L : SEO;
-       U : XDR_U := 0;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
- 
-       elsif Optimize_Integers then
-          return XDR_S_I_To_Integer (S);
- 
-       else
-          for N in S'Range loop
-             U := U * BB + XDR_U (S (N));
-          end loop;
- 
-          --  Test sign and apply two complement notation
- 
-          if S (1) < BL then
-             return Integer (U);
- 
-          else
-             return Integer (-((XDR_U'Last xor U) + 1));
-          end if;
-       end if;
-    end I_I;
- 
-    ----------
-    -- I_LF --
-    ----------
- 
-    function I_LF (Stream : not null access RST) return Long_Float is
-       I       : constant Precision := Double;
-       E_Size  : Integer  renames Fields (I).E_Size;
-       E_Bias  : Integer  renames Fields (I).E_Bias;
-       E_Last  : Integer  renames Fields (I).E_Last;
-       F_Mask  : SE       renames Fields (I).F_Mask;
-       E_Bytes : SEO      renames Fields (I).E_Bytes;
-       F_Bytes : SEO      renames Fields (I).F_Bytes;
-       F_Size  : Integer  renames Fields (I).F_Size;
- 
-       Is_Positive : Boolean;
-       Exponent    : Long_Unsigned;
-       Fraction    : Long_Long_Unsigned;
-       Result      : Long_Float;
-       S           : SEA (1 .. LF_L);
-       L           : SEO;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
-       end if;
- 
-       --  Extract Fraction, Sign and Exponent
- 
-       Fraction := Long_Long_Unsigned (S (LF_L + 1 - F_Bytes) and F_Mask);
-       for N in LF_L + 2 - F_Bytes .. LF_L loop
-          Fraction := Fraction * BB + Long_Long_Unsigned (S (N));
-       end loop;
- 
-       Result := Long_Float'Scaling (Long_Float (Fraction), -F_Size);
- 
-       if BS <= S (1) then
-          Is_Positive := False;
-          Exponent := Long_Unsigned (S (1) - BS);
-       else
-          Is_Positive := True;
-          Exponent := Long_Unsigned (S (1));
-       end if;
- 
-       for N in 2 .. E_Bytes loop
-          Exponent := Exponent * BB + Long_Unsigned (S (N));
-       end loop;
- 
-       Exponent := Shift_Right (Exponent, Integer (E_Bytes) * SU - E_Size - 1);
- 
-       --  NaN or Infinities
- 
-       if Integer (Exponent) = E_Last then
-          raise Constraint_Error;
- 
-       elsif Exponent = 0 then
- 
-          --  Signed zeros
- 
-          if Fraction = 0 then
-             null;
- 
-          --  Denormalized float
- 
-          else
-             Result := Long_Float'Scaling (Result, 1 - E_Bias);
-          end if;
- 
-       --  Normalized float
- 
-       else
-          Result := Long_Float'Scaling
-            (1.0 + Result, Integer (Exponent) - E_Bias);
-       end if;
- 
-       if not Is_Positive then
-          Result := -Result;
-       end if;
- 
-       return Result;
-    end I_LF;
- 
-    ----------
-    -- I_LI --
-    ----------
- 
-    function I_LI (Stream : not null access RST) return Long_Integer is
-       S : XDR_S_LI;
-       L : SEO;
-       U : Unsigned := 0;
-       X : Long_Unsigned := 0;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
- 
-       elsif Optimize_Integers then
-          return Long_Integer (XDR_S_LI_To_Long_Long_Integer (S));
- 
-       else
- 
-          --  Compute using machine unsigned
-          --  rather than long_long_unsigned
- 
-          for N in S'Range loop
-             U := U * BB + Unsigned (S (N));
- 
-             --  We have filled an unsigned
- 
-             if N mod UB = 0 then
-                X := Shift_Left (X, US) + Long_Unsigned (U);
-                U := 0;
-             end if;
-          end loop;
- 
-          --  Test sign and apply two complement notation
- 
-          if S (1) < BL then
-             return Long_Integer (X);
-          else
-             return Long_Integer (-((Long_Unsigned'Last xor X) + 1));
-          end if;
- 
-       end if;
-    end I_LI;
- 
-    -----------
-    -- I_LLF --
-    -----------
- 
-    function I_LLF (Stream : not null access RST) return Long_Long_Float is
-       I       : constant Precision := Quadruple;
-       E_Size  : Integer  renames Fields (I).E_Size;
-       E_Bias  : Integer  renames Fields (I).E_Bias;
-       E_Last  : Integer  renames Fields (I).E_Last;
-       E_Bytes : SEO      renames Fields (I).E_Bytes;
-       F_Bytes : SEO      renames Fields (I).F_Bytes;
-       F_Size  : Integer  renames Fields (I).F_Size;
- 
-       Is_Positive   : Boolean;
-       Exponent   : Long_Unsigned;
-       Fraction_1 : Long_Long_Unsigned := 0;
-       Fraction_2 : Long_Long_Unsigned := 0;
-       Result     : Long_Long_Float;
-       HF         : constant Natural := F_Size / 2;
-       S          : SEA (1 .. LLF_L);
-       L          : SEO;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
-       end if;
- 
-       --  Extract Fraction, Sign and Exponent
- 
-       for I in LLF_L - F_Bytes + 1 .. LLF_L - 7 loop
-          Fraction_1 := Fraction_1 * BB + Long_Long_Unsigned (S (I));
-       end loop;
- 
-       for I in SEO (LLF_L - 6) .. SEO (LLF_L) loop
-          Fraction_2 := Fraction_2 * BB + Long_Long_Unsigned (S (I));
-       end loop;
- 
-       Result := Long_Long_Float'Scaling (Long_Long_Float (Fraction_2), -HF);
-       Result := Long_Long_Float (Fraction_1) + Result;
-       Result := Long_Long_Float'Scaling (Result, HF - F_Size);
- 
-       if BS <= S (1) then
-          Is_Positive := False;
-          Exponent := Long_Unsigned (S (1) - BS);
-       else
-          Is_Positive := True;
-          Exponent := Long_Unsigned (S (1));
-       end if;
- 
-       for N in 2 .. E_Bytes loop
-          Exponent := Exponent * BB + Long_Unsigned (S (N));
-       end loop;
- 
-       Exponent := Shift_Right (Exponent, Integer (E_Bytes) * SU - E_Size - 1);
- 
-       --  NaN or Infinities
- 
-       if Integer (Exponent) = E_Last then
-          raise Constraint_Error;
- 
-       elsif Exponent = 0 then
- 
-          --  Signed zeros
- 
-          if Fraction_1 = 0 and then Fraction_2 = 0 then
-             null;
- 
-          --  Denormalized float
- 
-          else
-             Result := Long_Long_Float'Scaling (Result, 1 - E_Bias);
-          end if;
- 
-       --  Normalized float
- 
-       else
-          Result := Long_Long_Float'Scaling
-            (1.0 + Result, Integer (Exponent) - E_Bias);
-       end if;
- 
-       if not Is_Positive then
-          Result := -Result;
-       end if;
- 
-       return Result;
-    end I_LLF;
- 
-    -----------
-    -- I_LLI --
-    -----------
- 
-    function I_LLI (Stream : not null access RST) return Long_Long_Integer is
-       S : XDR_S_LLI;
-       L : SEO;
-       U : Unsigned := 0;
-       X : Long_Long_Unsigned := 0;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
- 
-       elsif Optimize_Integers then
-          return XDR_S_LLI_To_Long_Long_Integer (S);
- 
-       else
-          --  Compute using machine unsigned for computing
-          --  rather than long_long_unsigned.
- 
-          for N in S'Range loop
-             U := U * BB + Unsigned (S (N));
- 
-             --  We have filled an unsigned
- 
-             if N mod UB = 0 then
-                X := Shift_Left (X, US) + Long_Long_Unsigned (U);
-                U := 0;
-             end if;
-          end loop;
- 
-          --  Test sign and apply two complement notation
- 
-          if S (1) < BL then
-             return Long_Long_Integer (X);
-          else
-             return Long_Long_Integer (-((Long_Long_Unsigned'Last xor X) + 1));
-          end if;
-       end if;
-    end I_LLI;
- 
-    -----------
-    -- I_LLU --
-    -----------
- 
-    function I_LLU (Stream : not null access RST) return Long_Long_Unsigned is
-       S : XDR_S_LLU;
-       L : SEO;
-       U : Unsigned := 0;
-       X : Long_Long_Unsigned := 0;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
- 
-       elsif Optimize_Integers then
-          return XDR_S_LLU_To_Long_Long_Unsigned (S);
- 
-       else
-          --  Compute using machine unsigned
-          --  rather than long_long_unsigned.
- 
-          for N in S'Range loop
-             U := U * BB + Unsigned (S (N));
- 
-             --  We have filled an unsigned
- 
-             if N mod UB = 0 then
-                X := Shift_Left (X, US) + Long_Long_Unsigned (U);
-                U := 0;
-             end if;
-          end loop;
- 
-          return X;
-       end if;
-    end I_LLU;
- 
-    ----------
-    -- I_LU --
-    ----------
- 
-    function I_LU (Stream : not null access RST) return Long_Unsigned is
-       S : XDR_S_LU;
-       L : SEO;
-       U : Unsigned := 0;
-       X : Long_Unsigned := 0;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
- 
-       elsif Optimize_Integers then
-          return Long_Unsigned (XDR_S_LU_To_Long_Long_Unsigned (S));
- 
-       else
-          --  Compute using machine unsigned
-          --  rather than long_unsigned.
- 
-          for N in S'Range loop
-             U := U * BB + Unsigned (S (N));
- 
-             --  We have filled an unsigned
- 
-             if N mod UB = 0 then
-                X := Shift_Left (X, US) + Long_Unsigned (U);
-                U := 0;
-             end if;
-          end loop;
- 
-          return X;
-       end if;
-    end I_LU;
- 
-    ----------
-    -- I_SF --
-    ----------
- 
-    function I_SF (Stream : not null access RST) return Short_Float is
-       I       : constant Precision := Single;
-       E_Size  : Integer  renames Fields (I).E_Size;
-       E_Bias  : Integer  renames Fields (I).E_Bias;
-       E_Last  : Integer  renames Fields (I).E_Last;
-       F_Mask  : SE       renames Fields (I).F_Mask;
-       E_Bytes : SEO      renames Fields (I).E_Bytes;
-       F_Bytes : SEO      renames Fields (I).F_Bytes;
-       F_Size  : Integer  renames Fields (I).F_Size;
- 
-       Exponent    : Long_Unsigned;
-       Fraction    : Long_Unsigned;
-       Is_Positive : Boolean;
-       Result      : Short_Float;
-       S           : SEA (1 .. SF_L);
-       L           : SEO;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
-       end if;
- 
-       --  Extract Fraction, Sign and Exponent
- 
-       Fraction := Long_Unsigned (S (SF_L + 1 - F_Bytes) and F_Mask);
-       for N in SF_L + 2 - F_Bytes .. SF_L loop
-          Fraction := Fraction * BB + Long_Unsigned (S (N));
-       end loop;
-       Result := Short_Float'Scaling (Short_Float (Fraction), -F_Size);
- 
-       if BS <= S (1) then
-          Is_Positive := False;
-          Exponent := Long_Unsigned (S (1) - BS);
-       else
-          Is_Positive := True;
-          Exponent := Long_Unsigned (S (1));
-       end if;
- 
-       for N in 2 .. E_Bytes loop
-          Exponent := Exponent * BB + Long_Unsigned (S (N));
-       end loop;
-       Exponent := Shift_Right (Exponent, Integer (E_Bytes) * SU - E_Size - 1);
- 
-       --  NaN or Infinities
- 
-       if Integer (Exponent) = E_Last then
-          raise Constraint_Error;
- 
-       elsif Exponent = 0 then
- 
-          --  Signed zeros
- 
-          if Fraction = 0 then
-             null;
- 
-          --  Denormalized float
- 
-          else
-             Result := Short_Float'Scaling (Result, 1 - E_Bias);
-          end if;
- 
-       --  Normalized float
- 
-       else
-          Result := Short_Float'Scaling
-            (1.0 + Result, Integer (Exponent) - E_Bias);
-       end if;
- 
-       if not Is_Positive then
-          Result := -Result;
-       end if;
- 
-       return Result;
-    end I_SF;
- 
-    ----------
-    -- I_SI --
-    ----------
- 
-    function I_SI (Stream : not null access RST) return Short_Integer is
-       S : XDR_S_SI;
-       L : SEO;
-       U : XDR_SU := 0;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
- 
-       elsif Optimize_Integers then
-          return XDR_S_SI_To_Short_Integer (S);
- 
-       else
-          for N in S'Range loop
-             U := U * BB + XDR_SU (S (N));
-          end loop;
- 
-          --  Test sign and apply two complement notation
- 
-          if S (1) < BL then
-             return Short_Integer (U);
-          else
-             return Short_Integer (-((XDR_SU'Last xor U) + 1));
-          end if;
-       end if;
-    end I_SI;
- 
-    -----------
-    -- I_SSI --
-    -----------
- 
-    function I_SSI (Stream : not null access RST) return Short_Short_Integer is
-       S : XDR_S_SSI;
-       L : SEO;
-       U : XDR_SSU;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
- 
-       elsif Optimize_Integers then
-          return XDR_S_SSI_To_Short_Short_Integer (S);
- 
-       else
-          U := XDR_SSU (S (1));
- 
-          --  Test sign and apply two complement notation
- 
-          if S (1) < BL then
-             return Short_Short_Integer (U);
-          else
-             return Short_Short_Integer (-((XDR_SSU'Last xor U) + 1));
-          end if;
-       end if;
-    end I_SSI;
- 
-    -----------
-    -- I_SSU --
-    -----------
- 
-    function I_SSU (Stream : not null access RST) return Short_Short_Unsigned is
-       S : XDR_S_SSU;
-       L : SEO;
-       U : XDR_SSU := 0;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
- 
-       else
-          U := XDR_SSU (S (1));
-          return Short_Short_Unsigned (U);
-       end if;
-    end I_SSU;
- 
-    ----------
-    -- I_SU --
-    ----------
- 
-    function I_SU (Stream : not null access RST) return Short_Unsigned is
-       S : XDR_S_SU;
-       L : SEO;
-       U : XDR_SU := 0;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
- 
-       elsif Optimize_Integers then
-          return XDR_S_SU_To_Short_Unsigned (S);
- 
-       else
-          for N in S'Range loop
-             U := U * BB + XDR_SU (S (N));
-          end loop;
- 
-          return Short_Unsigned (U);
-       end if;
-    end I_SU;
- 
-    ---------
-    -- I_U --
-    ---------
- 
-    function I_U (Stream : not null access RST) return Unsigned is
-       S : XDR_S_U;
-       L : SEO;
-       U : XDR_U := 0;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
- 
-       elsif Optimize_Integers then
-          return XDR_S_U_To_Unsigned (S);
- 
-       else
-          for N in S'Range loop
-             U := U * BB + XDR_U (S (N));
-          end loop;
- 
-          return Unsigned (U);
-       end if;
-    end I_U;
- 
-    ----------
-    -- I_WC --
-    ----------
- 
-    function I_WC (Stream : not null access RST) return Wide_Character is
-       S : XDR_S_WC;
-       L : SEO;
-       U : XDR_WC := 0;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
- 
-       else
-          for N in S'Range loop
-             U := U * BB + XDR_WC (S (N));
-          end loop;
- 
-          --  Use Ada requirements on Wide_Character representation clause
- 
-          return Wide_Character'Val (U);
-       end if;
-    end I_WC;
- 
-    -----------
-    -- I_WWC --
-    -----------
- 
-    function I_WWC (Stream : not null access RST) return Wide_Wide_Character is
-       S : XDR_S_WWC;
-       L : SEO;
-       U : XDR_WWC := 0;
- 
-    begin
-       Ada.Streams.Read (Stream.all, S, L);
- 
-       if L /= S'Last then
-          raise Data_Error;
- 
-       else
-          for N in S'Range loop
-             U := U * BB + XDR_WWC (S (N));
-          end loop;
- 
-          --  Use Ada requirements on Wide_Wide_Character representation clause
- 
-          return Wide_Wide_Character'Val (U);
-       end if;
-    end I_WWC;
- 
-    ----------
-    -- W_AD --
-    ----------
- 
-    procedure W_AD (Stream : not null access RST; Item : Fat_Pointer) is
-       S : XDR_S_TM;
-       U : XDR_TM;
- 
-    begin
-       U := XDR_TM (To_XDR_SA (Item.P1));
-       for N in reverse S'Range loop
-          S (N) := SE (U mod BB);
-          U := U / BB;
-       end loop;
- 
-       Ada.Streams.Write (Stream.all, S);
- 
-       U := XDR_TM (To_XDR_SA (Item.P2));
-       for N in reverse S'Range loop
-          S (N) := SE (U mod BB);
-          U := U / BB;
-       end loop;
- 
-       Ada.Streams.Write (Stream.all, S);
- 
-       if U /= 0 then
-          raise Data_Error;
-       end if;
-    end W_AD;
- 
-    ----------
-    -- W_AS --
-    ----------
- 
-    procedure W_AS (Stream : not null access RST; Item : Thin_Pointer) is
-       S : XDR_S_TM;
-       U : XDR_TM := XDR_TM (To_XDR_SA (Item.P1));
- 
-    begin
-       for N in reverse S'Range loop
-          S (N) := SE (U mod BB);
-          U := U / BB;
-       end loop;
- 
-       Ada.Streams.Write (Stream.all, S);
- 
-       if U /= 0 then
-          raise Data_Error;
-       end if;
-    end W_AS;
- 
-    ---------
-    -- W_B --
-    ---------
- 
-    procedure W_B (Stream : not null access RST; Item : Boolean) is
-    begin
-       if Item then
-          W_SSU (Stream, 1);
-       else
-          W_SSU (Stream, 0);
-       end if;
-    end W_B;
- 
-    ---------
-    -- W_C --
-    ---------
- 
-    procedure W_C (Stream : not null access RST; Item : Character) is
-       S : XDR_S_C;
- 
-       pragma Assert (C_L = 1);
- 
-    begin
-       --  Use Ada requirements on Character representation clause
- 
-       S (1) := SE (Character'Pos (Item));
- 
-       Ada.Streams.Write (Stream.all, S);
-    end W_C;
- 
-    ---------
-    -- W_F --
-    ---------
- 
-    procedure W_F (Stream : not null access RST; Item : Float) is
-       I       : constant Precision := Single;
-       E_Size  : Integer  renames Fields (I).E_Size;
-       E_Bias  : Integer  renames Fields (I).E_Bias;
-       E_Bytes : SEO      renames Fields (I).E_Bytes;
-       F_Bytes : SEO      renames Fields (I).F_Bytes;
-       F_Size  : Integer  renames Fields (I).F_Size;
-       F_Mask  : SE       renames Fields (I).F_Mask;
- 
-       Exponent    : Long_Unsigned;
-       Fraction    : Long_Unsigned;
-       Is_Positive : Boolean;
-       E           : Integer;
-       F           : Float;
-       S           : SEA (1 .. F_L) := (others => 0);
- 
-    begin
-       if not Item'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       --  Compute Sign
- 
-       Is_Positive := (0.0 <= Item);
-       F := abs (Item);
- 
-       --  Signed zero
- 
-       if F = 0.0 then
-          Exponent := 0;
-          Fraction := 0;
- 
-       else
-          E := Float'Exponent (F) - 1;
- 
-          --  Denormalized float
- 
-          if E <= -E_Bias then
-             F := Float'Scaling (F, F_Size + E_Bias - 1);
-             E := -E_Bias;
-          else
-             F := Float'Scaling (Float'Fraction (F), F_Size + 1);
-          end if;
- 
-          --  Compute Exponent and Fraction
- 
-          Exponent := Long_Unsigned (E + E_Bias);
-          Fraction := Long_Unsigned (F * 2.0) / 2;
-       end if;
- 
-       --  Store Fraction
- 
-       for I in reverse F_L - F_Bytes + 1 .. F_L loop
-          S (I) := SE (Fraction mod BB);
-          Fraction := Fraction / BB;
-       end loop;
- 
-       --  Remove implicit bit
- 
-       S (F_L - F_Bytes + 1) := S (F_L - F_Bytes + 1) and F_Mask;
- 
-       --  Store Exponent (not always at the beginning of a byte)
- 
-       Exponent := Shift_Left (Exponent, Integer (E_Bytes) * SU - E_Size - 1);
-       for N in reverse 1 .. E_Bytes loop
-          S (N) := SE (Exponent mod BB) + S (N);
-          Exponent := Exponent / BB;
-       end loop;
- 
-       --  Store Sign
- 
-       if not Is_Positive then
-          S (1) := S (1) + BS;
-       end if;
- 
-       Ada.Streams.Write (Stream.all, S);
-    end W_F;
- 
-    ---------
-    -- W_I --
-    ---------
- 
-    procedure W_I (Stream : not null access RST; Item : Integer) is
-       S : XDR_S_I;
-       U : XDR_U;
- 
-    begin
-       if Optimize_Integers then
-          S := Integer_To_XDR_S_I (Item);
- 
-       else
-          --  Test sign and apply two complement notation
- 
-          U := (if Item < 0
-                then XDR_U'Last xor XDR_U (-(Item + 1))
-                else XDR_U (Item));
- 
-          for N in reverse S'Range loop
-             S (N) := SE (U mod BB);
-             U := U / BB;
-          end loop;
- 
-          if U /= 0 then
-             raise Data_Error;
-          end if;
-       end if;
- 
-       Ada.Streams.Write (Stream.all, S);
-    end W_I;
- 
-    ----------
-    -- W_LF --
-    ----------
- 
-    procedure W_LF (Stream : not null access RST; Item : Long_Float) is
-       I       : constant Precision := Double;
-       E_Size  : Integer  renames Fields (I).E_Size;
-       E_Bias  : Integer  renames Fields (I).E_Bias;
-       E_Bytes : SEO      renames Fields (I).E_Bytes;
-       F_Bytes : SEO      renames Fields (I).F_Bytes;
-       F_Size  : Integer  renames Fields (I).F_Size;
-       F_Mask  : SE       renames Fields (I).F_Mask;
- 
-       Exponent    : Long_Unsigned;
-       Fraction    : Long_Long_Unsigned;
-       Is_Positive : Boolean;
-       E           : Integer;
-       F           : Long_Float;
-       S           : SEA (1 .. LF_L) := (others => 0);
- 
-    begin
-       if not Item'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       --  Compute Sign
- 
-       Is_Positive := (0.0 <= Item);
-       F := abs (Item);
- 
-       --  Signed zero
- 
-       if F = 0.0 then
-          Exponent := 0;
-          Fraction := 0;
- 
-       else
-          E := Long_Float'Exponent (F) - 1;
- 
-          --  Denormalized float
- 
-          if E <= -E_Bias then
-             E := -E_Bias;
-             F := Long_Float'Scaling (F, F_Size + E_Bias - 1);
-          else
-             F := Long_Float'Scaling (F, F_Size - E);
-          end if;
- 
-          --  Compute Exponent and Fraction
- 
-          Exponent := Long_Unsigned (E + E_Bias);
-          Fraction := Long_Long_Unsigned (F * 2.0) / 2;
-       end if;
- 
-       --  Store Fraction
- 
-       for I in reverse LF_L - F_Bytes + 1 .. LF_L loop
-          S (I) := SE (Fraction mod BB);
-          Fraction := Fraction / BB;
-       end loop;
- 
-       --  Remove implicit bit
- 
-       S (LF_L - F_Bytes + 1) := S (LF_L - F_Bytes + 1) and F_Mask;
- 
-       --  Store Exponent (not always at the beginning of a byte)
- 
-       Exponent := Shift_Left (Exponent, Integer (E_Bytes) * SU - E_Size - 1);
-       for N in reverse 1 .. E_Bytes loop
-          S (N) := SE (Exponent mod BB) + S (N);
-          Exponent := Exponent / BB;
-       end loop;
- 
-       --  Store Sign
- 
-       if not Is_Positive then
-          S (1) := S (1) + BS;
-       end if;
- 
-       Ada.Streams.Write (Stream.all, S);
-    end W_LF;
- 
-    ----------
-    -- W_LI --
-    ----------
- 
-    procedure W_LI (Stream : not null access RST; Item : Long_Integer) is
-       S : XDR_S_LI;
-       U : Unsigned;
-       X : Long_Unsigned;
- 
-    begin
-       if Optimize_Integers then
-          S := Long_Long_Integer_To_XDR_S_LI (Long_Long_Integer (Item));
- 
-       else
-          --  Test sign and apply two complement notation
- 
-          if Item < 0 then
-             X := Long_Unsigned'Last xor Long_Unsigned (-(Item + 1));
-          else
-             X := Long_Unsigned (Item);
-          end if;
- 
-          --  Compute using machine unsigned rather than long_unsigned
- 
-          for N in reverse S'Range loop
- 
-             --  We have filled an unsigned
- 
-             if (LU_L - N) mod UB = 0 then
-                U := Unsigned (X and UL);
-                X := Shift_Right (X, US);
-             end if;
- 
-             S (N) := SE (U mod BB);
-             U := U / BB;
-          end loop;
- 
-          if U /= 0 then
-             raise Data_Error;
-          end if;
-       end if;
- 
-       Ada.Streams.Write (Stream.all, S);
-    end W_LI;
- 
-    -----------
-    -- W_LLF --
-    -----------
- 
-    procedure W_LLF (Stream : not null access RST; Item : Long_Long_Float) is
-       I       : constant Precision := Quadruple;
-       E_Size  : Integer  renames Fields (I).E_Size;
-       E_Bias  : Integer  renames Fields (I).E_Bias;
-       E_Bytes : SEO      renames Fields (I).E_Bytes;
-       F_Bytes : SEO      renames Fields (I).F_Bytes;
-       F_Size  : Integer  renames Fields (I).F_Size;
- 
-       HFS : constant Integer := F_Size / 2;
- 
-       Exponent    : Long_Unsigned;
-       Fraction_1  : Long_Long_Unsigned;
-       Fraction_2  : Long_Long_Unsigned;
-       Is_Positive : Boolean;
-       E           : Integer;
-       F           : Long_Long_Float := Item;
-       S           : SEA (1 .. LLF_L) := (others => 0);
- 
-    begin
-       if not Item'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       --  Compute Sign
- 
-       Is_Positive := (0.0 <= Item);
- 
-       if F < 0.0 then
-          F := -Item;
-       end if;
- 
-       --  Signed zero
- 
-       if F = 0.0 then
-          Exponent   := 0;
-          Fraction_1 := 0;
-          Fraction_2 := 0;
- 
-       else
-          E := Long_Long_Float'Exponent (F) - 1;
- 
-          --  Denormalized float
- 
-          if E <= -E_Bias then
-             F := Long_Long_Float'Scaling (F, E_Bias - 1);
-             E := -E_Bias;
-          else
-             F := Long_Long_Float'Scaling
-               (Long_Long_Float'Fraction (F), 1);
-          end if;
- 
-          --  Compute Exponent and Fraction
- 
-          Exponent   := Long_Unsigned (E + E_Bias);
-          F          := Long_Long_Float'Scaling (F, F_Size - HFS);
-          Fraction_1 := Long_Long_Unsigned (Long_Long_Float'Floor (F));
-          F          := F - Long_Long_Float (Fraction_1);
-          F          := Long_Long_Float'Scaling (F, HFS);
-          Fraction_2 := Long_Long_Unsigned (Long_Long_Float'Floor (F));
-       end if;
- 
-       --  Store Fraction_1
- 
-       for I in reverse LLF_L - F_Bytes + 1 .. LLF_L - 7 loop
-          S (I) := SE (Fraction_1 mod BB);
-          Fraction_1 := Fraction_1 / BB;
-       end loop;
- 
-       --  Store Fraction_2
- 
-       for I in reverse LLF_L - 6 .. LLF_L loop
-          S (SEO (I)) := SE (Fraction_2 mod BB);
-          Fraction_2 := Fraction_2 / BB;
-       end loop;
- 
-       --  Store Exponent (not always at the beginning of a byte)
- 
-       Exponent := Shift_Left (Exponent, Integer (E_Bytes) * SU - E_Size - 1);
-       for N in reverse 1 .. E_Bytes loop
-          S (N) := SE (Exponent mod BB) + S (N);
-          Exponent := Exponent / BB;
-       end loop;
- 
-       --  Store Sign
- 
-       if not Is_Positive then
-          S (1) := S (1) + BS;
-       end if;
- 
-       Ada.Streams.Write (Stream.all, S);
-    end W_LLF;
- 
-    -----------
-    -- W_LLI --
-    -----------
- 
-    procedure W_LLI
-      (Stream : not null access RST;
-       Item   : Long_Long_Integer)
-    is
-       S : XDR_S_LLI;
-       U : Unsigned;
-       X : Long_Long_Unsigned;
- 
-    begin
-       if Optimize_Integers then
-          S := Long_Long_Integer_To_XDR_S_LLI (Item);
- 
-       else
-          --  Test sign and apply two complement notation
- 
-          if Item < 0 then
-             X := Long_Long_Unsigned'Last xor Long_Long_Unsigned (-(Item + 1));
-          else
-             X := Long_Long_Unsigned (Item);
-          end if;
- 
-          --  Compute using machine unsigned rather than long_long_unsigned
- 
-          for N in reverse S'Range loop
- 
-             --  We have filled an unsigned
- 
-             if (LLU_L - N) mod UB = 0 then
-                U := Unsigned (X and UL);
-                X := Shift_Right (X, US);
-             end if;
- 
-             S (N) := SE (U mod BB);
-             U := U / BB;
-          end loop;
- 
-          if U /= 0 then
-             raise Data_Error;
-          end if;
-       end if;
- 
-       Ada.Streams.Write (Stream.all, S);
-    end W_LLI;
- 
-    -----------
-    -- W_LLU --
-    -----------
- 
-    procedure W_LLU
-      (Stream : not null access RST;
-       Item   : Long_Long_Unsigned)
-    is
-       S : XDR_S_LLU;
-       U : Unsigned;
-       X : Long_Long_Unsigned := Item;
- 
-    begin
-       if Optimize_Integers then
-          S := Long_Long_Unsigned_To_XDR_S_LLU (Item);
- 
-       else
-          --  Compute using machine unsigned rather than long_long_unsigned
- 
-          for N in reverse S'Range loop
- 
-             --  We have filled an unsigned
- 
-             if (LLU_L - N) mod UB = 0 then
-                U := Unsigned (X and UL);
-                X := Shift_Right (X, US);
-             end if;
- 
-             S (N) := SE (U mod BB);
-             U := U / BB;
-          end loop;
- 
-          if U /= 0 then
-             raise Data_Error;
-          end if;
-       end if;
- 
-       Ada.Streams.Write (Stream.all, S);
-    end W_LLU;
- 
-    ----------
-    -- W_LU --
-    ----------
- 
-    procedure W_LU (Stream : not null access RST; Item : Long_Unsigned) is
-       S : XDR_S_LU;
-       U : Unsigned;
-       X : Long_Unsigned := Item;
- 
-    begin
-       if Optimize_Integers then
-          S := Long_Long_Unsigned_To_XDR_S_LU (Long_Long_Unsigned (Item));
- 
-       else
-          --  Compute using machine unsigned rather than long_unsigned
- 
-          for N in reverse S'Range loop
- 
-             --  We have filled an unsigned
- 
-             if (LU_L - N) mod UB = 0 then
-                U := Unsigned (X and UL);
-                X := Shift_Right (X, US);
-             end if;
-             S (N) := SE (U mod BB);
-             U := U / BB;
-          end loop;
- 
-          if U /= 0 then
-             raise Data_Error;
-          end if;
-       end if;
- 
-       Ada.Streams.Write (Stream.all, S);
-    end W_LU;
- 
-    ----------
-    -- W_SF --
-    ----------
- 
-    procedure W_SF (Stream : not null access RST; Item : Short_Float) is
-       I       : constant Precision := Single;
-       E_Size  : Integer  renames Fields (I).E_Size;
-       E_Bias  : Integer  renames Fields (I).E_Bias;
-       E_Bytes : SEO      renames Fields (I).E_Bytes;
-       F_Bytes : SEO      renames Fields (I).F_Bytes;
-       F_Size  : Integer  renames Fields (I).F_Size;
-       F_Mask  : SE       renames Fields (I).F_Mask;
- 
-       Exponent    : Long_Unsigned;
-       Fraction    : Long_Unsigned;
-       Is_Positive : Boolean;
-       E           : Integer;
-       F           : Short_Float;
-       S           : SEA (1 .. SF_L) := (others => 0);
- 
-    begin
-       if not Item'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       --  Compute Sign
- 
-       Is_Positive := (0.0 <= Item);
-       F := abs (Item);
- 
-       --  Signed zero
- 
-       if F = 0.0 then
-          Exponent := 0;
-          Fraction := 0;
- 
-       else
-          E := Short_Float'Exponent (F) - 1;
- 
-          --  Denormalized float
- 
-          if E <= -E_Bias then
-             E := -E_Bias;
-             F := Short_Float'Scaling (F, F_Size + E_Bias - 1);
-          else
-             F := Short_Float'Scaling (F, F_Size - E);
-          end if;
- 
-          --  Compute Exponent and Fraction
- 
-          Exponent := Long_Unsigned (E + E_Bias);
-          Fraction := Long_Unsigned (F * 2.0) / 2;
-       end if;
- 
-       --  Store Fraction
- 
-       for I in reverse SF_L - F_Bytes + 1 .. SF_L loop
-          S (I) := SE (Fraction mod BB);
-          Fraction := Fraction / BB;
-       end loop;
- 
-       --  Remove implicit bit
- 
-       S (SF_L - F_Bytes + 1) := S (SF_L - F_Bytes + 1) and F_Mask;
- 
-       --  Store Exponent (not always at the beginning of a byte)
- 
-       Exponent := Shift_Left (Exponent, Integer (E_Bytes) * SU - E_Size - 1);
-       for N in reverse 1 .. E_Bytes loop
-          S (N) := SE (Exponent mod BB) + S (N);
-          Exponent := Exponent / BB;
-       end loop;
- 
-       --  Store Sign
- 
-       if not Is_Positive then
-          S (1) := S (1) + BS;
-       end if;
- 
-       Ada.Streams.Write (Stream.all, S);
-    end W_SF;
- 
-    ----------
-    -- W_SI --
-    ----------
- 
-    procedure W_SI (Stream : not null access RST; Item : Short_Integer) is
-       S : XDR_S_SI;
-       U : XDR_SU;
- 
-    begin
-       if Optimize_Integers then
-          S := Short_Integer_To_XDR_S_SI (Item);
- 
-       else
-          --  Test sign and apply two complement's notation
- 
-          U := (if Item < 0
-                then XDR_SU'Last xor XDR_SU (-(Item + 1))
-                else XDR_SU (Item));
- 
-          for N in reverse S'Range loop
-             S (N) := SE (U mod BB);
-             U := U / BB;
-          end loop;
- 
-          if U /= 0 then
-             raise Data_Error;
-          end if;
-       end if;
- 
-       Ada.Streams.Write (Stream.all, S);
-    end W_SI;
- 
-    -----------
-    -- W_SSI --
-    -----------
- 
-    procedure W_SSI
-      (Stream : not null access RST;
-       Item   : Short_Short_Integer)
-    is
-       S : XDR_S_SSI;
-       U : XDR_SSU;
- 
-    begin
-       if Optimize_Integers then
-          S := Short_Short_Integer_To_XDR_S_SSI (Item);
- 
-       else
-          --  Test sign and apply two complement's notation
- 
-          U := (if Item < 0
-                then XDR_SSU'Last xor XDR_SSU (-(Item + 1))
-                else XDR_SSU (Item));
- 
-          S (1) := SE (U);
-       end if;
- 
-       Ada.Streams.Write (Stream.all, S);
-    end W_SSI;
- 
-    -----------
-    -- W_SSU --
-    -----------
- 
-    procedure W_SSU
-      (Stream : not null access RST;
-       Item   : Short_Short_Unsigned)
-    is
-       U : constant XDR_SSU := XDR_SSU (Item);
-       S : XDR_S_SSU;
- 
-    begin
-       S (1) := SE (U);
-       Ada.Streams.Write (Stream.all, S);
-    end W_SSU;
- 
-    ----------
-    -- W_SU --
-    ----------
- 
-    procedure W_SU (Stream : not null access RST; Item : Short_Unsigned) is
-       S : XDR_S_SU;
-       U : XDR_SU := XDR_SU (Item);
- 
-    begin
-       if Optimize_Integers then
-          S := Short_Unsigned_To_XDR_S_SU (Item);
- 
-       else
-          for N in reverse S'Range loop
-             S (N) := SE (U mod BB);
-             U := U / BB;
-          end loop;
- 
-          if U /= 0 then
-             raise Data_Error;
-          end if;
-       end if;
- 
-       Ada.Streams.Write (Stream.all, S);
-    end W_SU;
- 
-    ---------
-    -- W_U --
-    ---------
- 
-    procedure W_U (Stream : not null access RST; Item : Unsigned) is
-       S : XDR_S_U;
-       U : XDR_U := XDR_U (Item);
- 
-    begin
-       if Optimize_Integers then
-          S := Unsigned_To_XDR_S_U (Item);
- 
-       else
-          for N in reverse S'Range loop
-             S (N) := SE (U mod BB);
-             U := U / BB;
-          end loop;
- 
-          if U /= 0 then
-             raise Data_Error;
-          end if;
-       end if;
- 
-       Ada.Streams.Write (Stream.all, S);
-    end W_U;
- 
-    ----------
-    -- W_WC --
-    ----------
- 
-    procedure W_WC (Stream : not null access RST; Item : Wide_Character) is
-       S : XDR_S_WC;
-       U : XDR_WC;
- 
-    begin
-       --  Use Ada requirements on Wide_Character representation clause
- 
-       U := XDR_WC (Wide_Character'Pos (Item));
- 
-       for N in reverse S'Range loop
-          S (N) := SE (U mod BB);
-          U := U / BB;
-       end loop;
- 
-       Ada.Streams.Write (Stream.all, S);
- 
-       if U /= 0 then
-          raise Data_Error;
-       end if;
-    end W_WC;
- 
-    -----------
-    -- W_WWC --
-    -----------
- 
-    procedure W_WWC
-      (Stream : not null access RST; Item : Wide_Wide_Character)
-    is
-       S : XDR_S_WWC;
-       U : XDR_WWC;
- 
-    begin
-       --  Use Ada requirements on Wide_Wide_Character representation clause
- 
-       U := XDR_WWC (Wide_Wide_Character'Pos (Item));
- 
-       for N in reverse S'Range loop
-          S (N) := SE (U mod BB);
-          U := U / BB;
-       end loop;
- 
-       Ada.Streams.Write (Stream.all, S);
- 
-       if U /= 0 then
-          raise Data_Error;
-       end if;
-    end W_WWC;
- 
- end System.Stream_Attributes;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-strcom.adb gcc-11.1.0/gcc/ada/libgnat/s-strcom.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-strcom.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-strcom.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-strcom.ads gcc-11.1.0/gcc/ada/libgnat/s-strcom.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-strcom.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-strcom.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-strhas.adb gcc-11.1.0/gcc/ada/libgnat/s-strhas.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-strhas.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-strhas.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-strhas.ads gcc-11.1.0/gcc/ada/libgnat/s-strhas.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-strhas.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-strhas.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-string.adb gcc-11.1.0/gcc/ada/libgnat/s-string.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-string.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-string.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-string.ads gcc-11.1.0/gcc/ada/libgnat/s-string.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-string.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-string.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-strops.adb gcc-11.1.0/gcc/ada/libgnat/s-strops.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-strops.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-strops.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-strops.ads gcc-11.1.0/gcc/ada/libgnat/s-strops.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-strops.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-strops.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-ststop.adb gcc-11.1.0/gcc/ada/libgnat/s-ststop.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-ststop.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-ststop.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2008-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2008-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Strings.Stream_Ops i
*** 216,236 ****
              declare
                 --  Determine the size in BITS of the block necessary to contain
                 --  the whole string.
  
!                Block_Size : constant Natural :=
!                               Integer (Item'Last - Item'First + 1) * ET_Size;
  
                 --  Item can be larger than what the default block can store,
!                --  determine the number of whole reads necessary to read the
                 --  string.
  
!                Blocks : constant Natural := Block_Size / Default_Block_Size;
  
                 --  The size of Item may not be a multiple of the default block
!                --  size, determine the size of the remaining chunk in BITS.
  
                 Rem_Size : constant Natural :=
!                             Block_Size mod Default_Block_Size;
  
                 --  String indexes
  
--- 216,240 ----
              declare
                 --  Determine the size in BITS of the block necessary to contain
                 --  the whole string.
+                --  Since we are dealing with strings indexed by natural, there
+                --  is no risk of overflow when using a Long_Long_Integer.
  
!                Block_Size : constant Long_Long_Integer :=
!                  Item'Length * Long_Long_Integer (ET_Size);
  
                 --  Item can be larger than what the default block can store,
!                --  determine the number of whole writes necessary to output the
                 --  string.
  
!                Blocks : constant Natural :=
!                  Natural (Block_Size / Long_Long_Integer (Default_Block_Size));
  
                 --  The size of Item may not be a multiple of the default block
!                --  size, determine the size of the remaining chunk.
  
                 Rem_Size : constant Natural :=
!                  Natural
!                    (Block_Size mod Long_Long_Integer (Default_Block_Size));
  
                 --  String indexes
  
*************** package body System.Strings.Stream_Ops i
*** 337,356 ****
              declare
                 --  Determine the size in BITS of the block necessary to contain
                 --  the whole string.
  
!                Block_Size : constant Natural := Item'Length * ET_Size;
  
                 --  Item can be larger than what the default block can store,
                 --  determine the number of whole writes necessary to output the
                 --  string.
  
!                Blocks : constant Natural := Block_Size / Default_Block_Size;
  
                 --  The size of Item may not be a multiple of the default block
                 --  size, determine the size of the remaining chunk.
  
                 Rem_Size : constant Natural :=
!                             Block_Size mod Default_Block_Size;
  
                 --  String indexes
  
--- 341,365 ----
              declare
                 --  Determine the size in BITS of the block necessary to contain
                 --  the whole string.
+                --  Since we are dealing with strings indexed by natural, there
+                --  is no risk of overflow when using a Long_Long_Integer.
  
!                Block_Size : constant Long_Long_Integer :=
!                  Item'Length * Long_Long_Integer (ET_Size);
  
                 --  Item can be larger than what the default block can store,
                 --  determine the number of whole writes necessary to output the
                 --  string.
  
!                Blocks : constant Natural :=
!                  Natural (Block_Size / Long_Long_Integer (Default_Block_Size));
  
                 --  The size of Item may not be a multiple of the default block
                 --  size, determine the size of the remaining chunk.
  
                 Rem_Size : constant Natural :=
!                  Natural
!                    (Block_Size mod Long_Long_Integer (Default_Block_Size));
  
                 --  String indexes
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-ststop.ads gcc-11.1.0/gcc/ada/libgnat/s-ststop.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-ststop.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-ststop.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 53,67 ****
  --       or
  --     String_Output_Blk_IO (Some_Stream, Some_String);
  
! --  String_Output form is used if pragma Restrictions (No_String_Optimziations)
  --  is active, which requires element by element operations. The BLK_IO form
  --  is used if this restriction is not set, allowing block optimization.
  
  --  Note that if System.Stream_Attributes.Block_IO_OK is False, then the BLK_IO
  --  form is treated as equivalent to the normal case, so that the optimization
  --  is inhibited anyway, regardless of the setting of the restriction. This
! --  handles versions of System.Stream_Attributes (in particular the XDR version
! --  found in s-stratt-xdr) which do not permit block io optimization.
  
  pragma Compiler_Unit_Warning;
  
--- 53,67 ----
  --       or
  --     String_Output_Blk_IO (Some_Stream, Some_String);
  
! --  String_Output form is used if pragma Restrictions (No_String_Optimizations)
  --  is active, which requires element by element operations. The BLK_IO form
  --  is used if this restriction is not set, allowing block optimization.
  
  --  Note that if System.Stream_Attributes.Block_IO_OK is False, then the BLK_IO
  --  form is treated as equivalent to the normal case, so that the optimization
  --  is inhibited anyway, regardless of the setting of the restriction. This
! --  handles the XDR implementation of System.Stream_Attributes in particular
! --  which does not permit block io optimization.
  
  pragma Compiler_Unit_Warning;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-tasloc.adb gcc-11.1.0/gcc/ada/libgnat/s-tasloc.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-tasloc.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-tasloc.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-tasloc.ads gcc-11.1.0/gcc/ada/libgnat/s-tasloc.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-tasloc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-tasloc.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-thread.ads gcc-11.1.0/gcc/ada/libgnat/s-thread.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-thread.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-thread.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-thread__ae653.adb gcc-11.1.0/gcc/ada/libgnat/s-thread__ae653.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-thread__ae653.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-thread__ae653.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Restrictions (No_Tasking);
*** 36,41 ****
--- 36,42 ----
  --  which do not use Ada tasking. This restriction ensures that this
  --  will be checked by the binder.
  
+ with System.Storage_Elements; use System.Storage_Elements;
  with System.OS_Versions; use System.OS_Versions;
  
  package body System.Threads is
*************** package body System.Threads is
*** 44,57 ****
  
     package SSL renames System.Soft_Links;
  
-    Current_ATSD : aliased System.Address := System.Null_Address;
-    pragma Export (C, Current_ATSD, "__gnat_current_atsd");
- 
     Main_ATSD : aliased ATSD;
     --  TSD for environment task
  
!    Stack_Limit : Address;
  
     pragma Import (C, Stack_Limit, "__gnat_stack_limit");
  
     type Set_Stack_Limit_Proc_Acc is access procedure;
--- 45,60 ----
  
     package SSL renames System.Soft_Links;
  
     Main_ATSD : aliased ATSD;
     --  TSD for environment task
  
!    Current_ATSD : aliased System.Address := System.Null_Address;
!    pragma Thread_Local_Storage (Current_ATSD);
!    --  pragma TLS needed since TaskVarAdd no longer available
  
+    --  Assume guard pages for Helix APEX partitions, but leave
+    --  checking mechanism in for now, in case of surprises. ???
+    Stack_Limit : Address;
     pragma Import (C, Stack_Limit, "__gnat_stack_limit");
  
     type Set_Stack_Limit_Proc_Acc is access procedure;
*************** package body System.Threads is
*** 62,72 ****
     --  Procedure to be called when a task is created to set stack limit if
     --  limit checking is used.
  
!    --------------------------
!    -- VxWorks specific API --
!    --------------------------
  
     ERROR : constant STATUS := Interfaces.C.int (-1);
  
     function taskIdVerify (tid : t_id) return STATUS;
     pragma Import (C, taskIdVerify, "taskIdVerify");
--- 65,74 ----
     --  Procedure to be called when a task is created to set stack limit if
     --  limit checking is used.
  
!    --  VxWorks specific API
  
     ERROR : constant STATUS := Interfaces.C.int (-1);
+    OK    : constant STATUS := Interfaces.C.int (0);
  
     function taskIdVerify (tid : t_id) return STATUS;
     pragma Import (C, taskIdVerify, "taskIdVerify");
*************** package body System.Threads is
*** 74,83 ****
     function taskIdSelf return t_id;
     pragma Import (C, taskIdSelf, "taskIdSelf");
  
-    function taskVarAdd
-      (tid : t_id; pVar : System.Address) return int;
-    pragma Import (C, taskVarAdd, "taskVarAdd");
- 
     -----------------------
     -- Local Subprograms --
     -----------------------
--- 76,81 ----
*************** package body System.Threads is
*** 102,122 ****
       (Sec_Stack_Ptr        : SST.SS_Stack_Ptr;
        Process_ATSD_Address : System.Address)
     is
-       --  Current_ATSD must already be a taskVar of taskIdSelf.
-       --  No assertion because taskVarGet is not available on VxWorks/CERT,
-       --  which is used on VxWorks 653 3.x as a guest OS.
  
!       TSD : constant ATSD_Access := From_Address (Process_ATSD_Address);
  
     begin
  
!       TSD.Sec_Stack_Ptr := Sec_Stack_Ptr;
!       SST.SS_Init (TSD.Sec_Stack_Ptr);
        Current_ATSD := Process_ATSD_Address;
- 
        Install_Handler;
  
!       --  Initialize stack limit if needed
  
        if Current_ATSD /= Main_ATSD'Address
          and then Set_Stack_Limit_Hook /= null
--- 100,117 ----
       (Sec_Stack_Ptr        : SST.SS_Stack_Ptr;
        Process_ATSD_Address : System.Address)
     is
  
!       ATSD : constant ATSD_Access := From_Address (Process_ATSD_Address);
  
     begin
  
!       ATSD.Sec_Stack_Ptr := Sec_Stack_Ptr;
!       SST.SS_Init (ATSD.Sec_Stack_Ptr);
        Current_ATSD := Process_ATSD_Address;
        Install_Handler;
  
!       --  Assume guard pages for Helix/Vx7, but leave in for now ???
!       --  Initialize stack limit if needed.
  
        if Current_ATSD /= Main_ATSD'Address
          and then Set_Stack_Limit_Hook /= null
*************** package body System.Threads is
*** 184,207 ****
     --------------
  
     function Register (T : Thread_Id) return STATUS is
-       Result : STATUS;
- 
     begin
        --  It cannot be assumed that the caller of this routine has a ATSD;
        --  so neither this procedure nor the procedures that it calls should
        --  raise or handle exceptions, or make use of a secondary stack.
  
-       --  This routine is only necessary because taskVarAdd cannot be
-       --  executed once an VxWorks 653 partition has entered normal mode
-       --  (depending on configRecord.c, allocation could be disabled).
-       --  Otherwise, everything could have been done in Thread_Body_Enter.
- 
        if taskIdVerify (T) = ERROR then
           return ERROR;
        end if;
  
!       Result := taskVarAdd (T, Current_ATSD'Address);
!       pragma Assert (Result /= ERROR);
  
        --  The same issue applies to the task variable that contains the stack
        --  limit when that overflow checking mechanism is used instead of
--- 179,194 ----
     --------------
  
     function Register (T : Thread_Id) return STATUS is
     begin
        --  It cannot be assumed that the caller of this routine has a ATSD;
        --  so neither this procedure nor the procedures that it calls should
        --  raise or handle exceptions, or make use of a secondary stack.
  
        if taskIdVerify (T) = ERROR then
           return ERROR;
        end if;
  
!       Current_ATSD := To_Address (Integer_Address (T));
  
        --  The same issue applies to the task variable that contains the stack
        --  limit when that overflow checking mechanism is used instead of
*************** package body System.Threads is
*** 211,227 ****
        --  System.Stack_Check_Limits = True.
  
        pragma Warnings (Off);
        --  OS is a constant
!       if Result /= ERROR
!         and then OS /= VxWorks_653
!         and then Set_Stack_Limit_Hook /= null
!       then
!          Result := taskVarAdd (T, Stack_Limit'Address);
!          pragma Assert (Result /= ERROR);
        end if;
        pragma Warnings (On);
  
!       return Result;
     end Register;
  
     -------------------
--- 198,212 ----
        --  System.Stack_Check_Limits = True.
  
        pragma Warnings (Off);
+ 
        --  OS is a constant
!       if OS /= VxWorks_653 and then Set_Stack_Limit_Hook /= null then
!          --  Check that this is correct if limit checking left in. ???
!          Stack_Limit := To_Address (Integer_Address (T));
        end if;
        pragma Warnings (On);
  
!       return OK;
     end Register;
  
     -------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-traceb.adb gcc-11.1.0/gcc/ada/libgnat/s-traceb.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-traceb.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-traceb.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-traceb.ads gcc-11.1.0/gcc/ada/libgnat/s-traceb.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-traceb.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-traceb.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 35,44 ****
  
  pragma Compiler_Unit_Warning;
  
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we get
- --  elaboration circularities with System.Exception_Tables.
- 
  with System.Traceback_Entries;
  
  package System.Traceback is
--- 35,40 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-traceb__hpux.adb gcc-11.1.0/gcc/ada/libgnat/s-traceb__hpux.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-traceb__hpux.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-traceb__hpux.adb	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2019, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2020, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-traceb__mastop.adb gcc-11.1.0/gcc/ada/libgnat/s-traceb__mastop.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-traceb__mastop.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-traceb__mastop.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-traent.adb gcc-11.1.0/gcc/ada/libgnat/s-traent.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-traent.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-traent.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,38 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we get
- --  elaboration circularities with Ada.Exceptions.
- 
  pragma Compiler_Unit_Warning;
  
  package body System.Traceback_Entries is
--- 29,34 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-traent.ads gcc-11.1.0/gcc/ada/libgnat/s-traent.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-traent.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-traent.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
***************
*** 38,47 ****
  --  version of the package, an entry is a mere code location representing the
  --  address of a call instruction part of the call-chain.
  
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we get
- --  elaboration circularities with Ada.Exceptions.
- 
  pragma Compiler_Unit_Warning;
  
  package System.Traceback_Entries is
--- 38,43 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-trasym.adb gcc-11.1.0/gcc/ada/libgnat/s-trasym.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-trasym.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-trasym.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,42 ****
  --  is not supported. It returns tracebacks as lists of hexadecimal addresses
  --  of the form "0x...".
  
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we can get
- --  elaboration circularities when polling is turned on.
- 
  with Ada.Exceptions.Traceback; use Ada.Exceptions.Traceback;
  with System.Address_Image;
  
--- 33,38 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-trasym.ads gcc-11.1.0/gcc/ada/libgnat/s-trasym.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-trasym.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-trasym.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,39 ****
  
  --  The full capability is currently supported on the following targets:
  
! --     GNU/Linux x86, x86_64, ia64
  
  --  Note: on targets other than those listed above, a dummy implementation
  --  of the body returns a series of LF separated strings of the form "0x..."
--- 33,40 ----
  
  --  The full capability is currently supported on the following targets:
  
! --     GNU/Linux x86, x86_64
! --     Windows x86, x86_64
  
  --  Note: on targets other than those listed above, a dummy implementation
  --  of the body returns a series of LF separated strings of the form "0x..."
***************
*** 71,80 ****
  --  executable. You should consider using gdb to obtain symbolic traceback in
  --  such cases.
  
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we can get
- --  elaboration circularities when polling is turned on.
- 
  with Ada.Exceptions;
  
  package System.Traceback.Symbolic is
--- 72,77 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-trasym__dwarf.adb gcc-11.1.0/gcc/ada/libgnat/s-trasym__dwarf.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-trasym__dwarf.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-trasym__dwarf.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,40 ****
  
  --  Run-time symbolic traceback support for targets using DWARF debug data
  
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we can get
- --  elaboration circularities when polling is turned on.
- 
  with Ada.Unchecked_Deallocation;
  
  with Ada.Exceptions.Traceback; use Ada.Exceptions.Traceback;
--- 31,36 ----
*************** package body System.Traceback.Symbolic i
*** 438,444 ****
        Suppress_Hex :        Boolean;
        Res          : in out Bounded_String)
     is
!       Success : Boolean := False;
     begin
        if Symbolic.Module_Name.Is_Supported then
           Append (Res, '[');
--- 434,440 ----
        Suppress_Hex :        Boolean;
        Res          : in out Bounded_String)
     is
!       Success : Boolean;
     begin
        if Symbolic.Module_Name.Is_Supported then
           Append (Res, '[');
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-tsmona.adb gcc-11.1.0/gcc/ada/libgnat/s-tsmona.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-tsmona.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-tsmona.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2012-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2012-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-tsmona__linux.adb gcc-11.1.0/gcc/ada/libgnat/s-tsmona__linux.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-tsmona__linux.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-tsmona__linux.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2012-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2012-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-tsmona__mingw.adb gcc-11.1.0/gcc/ada/libgnat/s-tsmona__mingw.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-tsmona__mingw.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-tsmona__mingw.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2012-2019, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2012-2020, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-unstyp.ads gcc-11.1.0/gcc/ada/libgnat/s-unstyp.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-unstyp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-unstyp.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Unsigned_Types is
*** 41,58 ****
     pragma Pure;
     pragma No_Elaboration_Code_All;
  
!    type Short_Short_Unsigned is mod 2 ** Short_Short_Integer'Size;
!    type Short_Unsigned       is mod 2 ** Short_Integer'Size;
!    type Unsigned             is mod 2 ** Integer'Size;
!    type Long_Unsigned        is mod 2 ** Long_Integer'Size;
!    type Long_Long_Unsigned   is mod 2 ** Long_Long_Integer'Size;
  
!    type Float_Unsigned       is mod 2 ** Float'Size;
     --  Used in the implementation of Is_Negative intrinsic (see Exp_Intr)
  
     type Packed_Byte is mod 2 ** 8;
-    pragma Universal_Aliasing (Packed_Byte);
     for Packed_Byte'Size use 8;
     --  Component type for Packed_Bytes1, Packed_Bytes2 and Packed_Byte4 arrays.
     --  As this type is used by the compiler to implement operations on user
     --  packed array, it needs to be able to alias any type.
--- 41,59 ----
     pragma Pure;
     pragma No_Elaboration_Code_All;
  
!    type Short_Short_Unsigned    is mod 2 ** Short_Short_Integer'Size;
!    type Short_Unsigned          is mod 2 ** Short_Integer'Size;
!    type Unsigned                is mod 2 ** Integer'Size;
!    type Long_Unsigned           is mod 2 ** Long_Integer'Size;
!    type Long_Long_Unsigned      is mod 2 ** Long_Long_Integer'Size;
!    type Long_Long_Long_Unsigned is mod Max_Binary_Modulus;
  
!    type Float_Unsigned          is mod 2 ** Float'Size;
     --  Used in the implementation of Is_Negative intrinsic (see Exp_Intr)
  
     type Packed_Byte is mod 2 ** 8;
     for Packed_Byte'Size use 8;
+    pragma Universal_Aliasing (Packed_Byte);
     --  Component type for Packed_Bytes1, Packed_Bytes2 and Packed_Byte4 arrays.
     --  As this type is used by the compiler to implement operations on user
     --  packed array, it needs to be able to alias any type.
*************** package System.Unsigned_Types is
*** 89,94 ****
--- 90,113 ----
     --  cases the clusters can be assumed to be 4-byte aligned if the array
     --  is aligned (see System.Pack_12 in file s-pack12 as an example).
  
+    type Rev_Packed_Bytes1 is new Packed_Bytes1;
+    pragma Suppress_Initialization (Rev_Packed_Bytes1);
+    --  This is equivalent to Packed_Bytes1, but for packed arrays with reverse
+    --  scalar storage order. But the Scalar_Storage_Order attribute cannot be
+    --  set directly here, see Exp_Pakd for more details.
+ 
+    type Rev_Packed_Bytes2 is new Packed_Bytes2;
+    pragma Suppress_Initialization (Rev_Packed_Bytes2);
+    --  This is equivalent to Packed_Bytes2, but for packed arrays with reverse
+    --  scalar storage order. But the Scalar_Storage_Order attribute cannot be
+    --  set directly here, see Exp_Pakd for more details.
+ 
+    type Rev_Packed_Bytes4 is new Packed_Bytes4;
+    pragma Suppress_Initialization (Rev_Packed_Bytes4);
+    --  This is equivalent to Packed_Bytes4, but for packed arrays with reverse
+    --  scalar storage order. But the Scalar_Storage_Order attribute cannot be
+    --  set directly here, see Exp_Pakd for more details.
+ 
     type Bits_1 is mod 2**1;
     type Bits_2 is mod 2**2;
     type Bits_4 is mod 2**4;
*************** package System.Unsigned_Types is
*** 197,202 ****
--- 216,241 ----
       (Value  : Long_Long_Unsigned;
        Amount : Natural) return Long_Long_Unsigned;
  
+    function Shift_Left
+      (Value  : Long_Long_Long_Unsigned;
+       Amount : Natural) return Long_Long_Long_Unsigned;
+ 
+    function Shift_Right
+      (Value  : Long_Long_Long_Unsigned;
+       Amount : Natural) return Long_Long_Long_Unsigned;
+ 
+    function Shift_Right_Arithmetic
+      (Value  : Long_Long_Long_Unsigned;
+       Amount : Natural) return Long_Long_Long_Unsigned;
+ 
+    function Rotate_Left
+      (Value  : Long_Long_Long_Unsigned;
+       Amount : Natural) return Long_Long_Long_Unsigned;
+ 
+    function Rotate_Right
+      (Value  : Long_Long_Long_Unsigned;
+       Amount : Natural) return Long_Long_Long_Unsigned;
+ 
     pragma Import (Intrinsic, Shift_Left);
     pragma Import (Intrinsic, Shift_Right);
     pragma Import (Intrinsic, Shift_Right_Arithmetic);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-utf_32.adb gcc-11.1.0/gcc/ada/libgnat/s-utf_32.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-utf_32.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-utf_32.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.UTF_32 is
*** 49,55 ****
     ----------------------
  
     --  Note these tables are derived from those given in AI-285. For details
!    --  see //www.ada-auth.org/cgi-bin/cvsweb.cgi/AIs/AI-00285.TXT?rev=1.22.
  
     type UTF_32_Range is record
        Lo : UTF_32;
--- 49,55 ----
     ----------------------
  
     --  Note these tables are derived from those given in AI-285. For details
!    --  see www.ada-auth.org/cgi-bin/cvsweb.cgi/AIs/AI-00285.TXT?rev=1.22.
  
     type UTF_32_Range is record
        Lo : UTF_32;
*************** package body System.UTF_32 is
*** 6071,6079 ****
          40,  -- DESERET CAPITAL LETTER LONG I .. DESERET CAPITAL LETTER EW
          32); -- TAG LATIN CAPITAL LETTER A .. TAG LATIN CAPITAL LETTER Z
  
-    pragma Warnings (On);
-    --  Temporary until pragma Warnings at start can be activated ???
- 
     --  The following is a list of the 10646 names for CAPITAL LETTER entries
     --  that have no matching SMALL LETTER entry and are thus not folded
  
--- 6071,6076 ----
*************** package body System.UTF_32 is
*** 6117,6126 ****
--- 6114,12274 ----
     --  GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
     --  GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
  
+    --  The following array includes all characters in the Unicode table with
+    --  the category NFKC_Quick_Check=No, taken from
+    --  www.unicode.org/Public/UCD/latest/ucd/DerivedNormalizationProps.txt
+ 
+    UTF_32_NFKC_QC_No : constant UTF_32_Ranges := (
+      (16#00A0#, 16#00A0#),     -- NO-BREAK SPACE
+      (16#00A8#, 16#00A8#),     -- DIAERESIS
+      (16#00AA#, 16#00AA#),     -- FEMININE ORDINAL INDICATOR
+      (16#00AF#, 16#00AF#),     -- MACRON
+      (16#00B2#, 16#00B3#),     -- SUPERSCRIPT TWO..SUPERSCRIPT THREE
+      (16#00B4#, 16#00B4#),     -- ACUTE ACCENT
+      (16#00B5#, 16#00B5#),     -- MICRO SIGN
+      (16#00B8#, 16#00B8#),     -- CEDILLA
+      (16#00B9#, 16#00B9#),     -- SUPERSCRIPT ONE
+      (16#00BA#, 16#00BA#),     -- MASCULINE ORDINAL INDICATOR
+      (16#00BC#, 16#00BE#),     -- VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+      (16#0132#, 16#0133#),     -- LATIN CAPITAL LIGATURE IJ..LATIN SMALL LIGATURE IJ
+      (16#013F#, 16#0140#),     -- LATIN CAPITAL LETTER L WITH MIDDLE DOT..LATIN SMALL LETTER L WITH MIDDLE DOT
+      (16#0149#, 16#0149#),     -- LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+      (16#017F#, 16#017F#),     -- LATIN SMALL LETTER LONG S
+      (16#01C4#, 16#01CC#),     -- LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER NJ
+      (16#01F1#, 16#01F3#),     -- LATIN CAPITAL LETTER DZ..LATIN SMALL LETTER DZ
+      (16#02B0#, 16#02B8#),     -- MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
+      (16#02D8#, 16#02DD#),     -- BREVE..DOUBLE ACUTE ACCENT
+      (16#02E0#, 16#02E4#),     -- MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+      (16#0340#, 16#0341#),     -- COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+      (16#0343#, 16#0344#),     -- COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+      (16#0374#, 16#0374#),     -- GREEK NUMERAL SIGN
+      (16#037A#, 16#037A#),     -- GREEK YPOGEGRAMMENI
+      (16#037E#, 16#037E#),     -- GREEK QUESTION MARK
+      (16#0384#, 16#0385#),     -- GREEK TONOS..GREEK DIALYTIKA TONOS
+      (16#0387#, 16#0387#),     -- GREEK ANO TELEIA
+      (16#03D0#, 16#03D6#),     -- GREEK BETA SYMBOL..GREEK PI SYMBOL
+      (16#03F0#, 16#03F2#),     -- GREEK KAPPA SYMBOL..GREEK LUNATE SIGMA SYMBOL
+      (16#03F4#, 16#03F5#),     -- GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL
+      (16#03F9#, 16#03F9#),     -- GREEK CAPITAL LUNATE SIGMA SYMBOL
+      (16#0587#, 16#0587#),     -- ARMENIAN SMALL LIGATURE ECH YIWN
+      (16#0675#, 16#0678#),     -- ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+      (16#0958#, 16#095F#),     -- DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+      (16#09DC#, 16#09DD#),     -- BENGALI LETTER RRA..BENGALI LETTER RHA
+      (16#09DF#, 16#09DF#),     -- BENGALI LETTER YYA
+      (16#0A33#, 16#0A33#),     -- GURMUKHI LETTER LLA
+      (16#0A36#, 16#0A36#),     -- GURMUKHI LETTER SHA
+      (16#0A59#, 16#0A5B#),     -- GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+      (16#0A5E#, 16#0A5E#),     -- GURMUKHI LETTER FA
+      (16#0B5C#, 16#0B5D#),     -- ORIYA LETTER RRA..ORIYA LETTER RHA
+      (16#0E33#, 16#0E33#),     -- THAI CHARACTER SARA AM
+      (16#0EB3#, 16#0EB3#),     -- LAO VOWEL SIGN AM
+      (16#0EDC#, 16#0EDD#),     -- LAO HO NO..LAO HO MO
+      (16#0F0C#, 16#0F0C#),     -- TIBETAN MARK DELIMITER TSHEG BSTAR
+      (16#0F43#, 16#0F43#),     -- TIBETAN LETTER GHA
+      (16#0F4D#, 16#0F4D#),     -- TIBETAN LETTER DDHA
+      (16#0F52#, 16#0F52#),     -- TIBETAN LETTER DHA
+      (16#0F57#, 16#0F57#),     -- TIBETAN LETTER BHA
+      (16#0F5C#, 16#0F5C#),     -- TIBETAN LETTER DZHA
+      (16#0F69#, 16#0F69#),     -- TIBETAN LETTER KSSA
+      (16#0F73#, 16#0F73#),     -- TIBETAN VOWEL SIGN II
+      (16#0F75#, 16#0F79#),     -- TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+      (16#0F81#, 16#0F81#),     -- TIBETAN VOWEL SIGN REVERSED II
+      (16#0F93#, 16#0F93#),     -- TIBETAN SUBJOINED LETTER GHA
+      (16#0F9D#, 16#0F9D#),     -- TIBETAN SUBJOINED LETTER DDHA
+      (16#0FA2#, 16#0FA2#),     -- TIBETAN SUBJOINED LETTER DHA
+      (16#0FA7#, 16#0FA7#),     -- TIBETAN SUBJOINED LETTER BHA
+      (16#0FAC#, 16#0FAC#),     -- TIBETAN SUBJOINED LETTER DZHA
+      (16#0FB9#, 16#0FB9#),     -- TIBETAN SUBJOINED LETTER KSSA
+      (16#10FC#, 16#10FC#),     -- MODIFIER LETTER GEORGIAN NAR
+      (16#1D2C#, 16#1D2E#),     -- MODIFIER LETTER CAPITAL A..MODIFIER LETTER CAPITAL B
+      (16#1D30#, 16#1D3A#),     -- MODIFIER LETTER CAPITAL D..MODIFIER LETTER CAPITAL N
+      (16#1D3C#, 16#1D4D#),     -- MODIFIER LETTER CAPITAL O..MODIFIER LETTER SMALL G
+      (16#1D4F#, 16#1D6A#),     -- MODIFIER LETTER SMALL K..GREEK SUBSCRIPT SMALL LETTER CHI
+      (16#1D78#, 16#1D78#),     -- MODIFIER LETTER CYRILLIC EN
+      (16#1D9B#, 16#1DBF#),     -- MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+      (16#1E9A#, 16#1E9B#),     -- LATIN SMALL LETTER A WITH RIGHT HALF RING..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+      (16#1F71#, 16#1F71#),     -- GREEK SMALL LETTER ALPHA WITH OXIA
+      (16#1F73#, 16#1F73#),     -- GREEK SMALL LETTER EPSILON WITH OXIA
+      (16#1F75#, 16#1F75#),     -- GREEK SMALL LETTER ETA WITH OXIA
+      (16#1F77#, 16#1F77#),     -- GREEK SMALL LETTER IOTA WITH OXIA
+      (16#1F79#, 16#1F79#),     -- GREEK SMALL LETTER OMICRON WITH OXIA
+      (16#1F7B#, 16#1F7B#),     -- GREEK SMALL LETTER UPSILON WITH OXIA
+      (16#1F7D#, 16#1F7D#),     -- GREEK SMALL LETTER OMEGA WITH OXIA
+      (16#1FBB#, 16#1FBB#),     -- GREEK CAPITAL LETTER ALPHA WITH OXIA
+      (16#1FBD#, 16#1FBD#),     -- GREEK KORONIS
+      (16#1FBE#, 16#1FBE#),     -- GREEK PROSGEGRAMMENI
+      (16#1FBF#, 16#1FC1#),     -- GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+      (16#1FC9#, 16#1FC9#),     -- GREEK CAPITAL LETTER EPSILON WITH OXIA
+      (16#1FCB#, 16#1FCB#),     -- GREEK CAPITAL LETTER ETA WITH OXIA
+      (16#1FCD#, 16#1FCF#),     -- GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+      (16#1FD3#, 16#1FD3#),     -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+      (16#1FDB#, 16#1FDB#),     -- GREEK CAPITAL LETTER IOTA WITH OXIA
+      (16#1FDD#, 16#1FDF#),     -- GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+      (16#1FE3#, 16#1FE3#),     -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+      (16#1FEB#, 16#1FEB#),     -- GREEK CAPITAL LETTER UPSILON WITH OXIA
+      (16#1FED#, 16#1FEF#),     -- GREEK DIALYTIKA AND VARIA..GREEK VARIA
+      (16#1FF9#, 16#1FF9#),     -- GREEK CAPITAL LETTER OMICRON WITH OXIA
+      (16#1FFB#, 16#1FFB#),     -- GREEK CAPITAL LETTER OMEGA WITH OXIA
+      (16#1FFD#, 16#1FFE#),     -- GREEK OXIA..GREEK DASIA
+      (16#2000#, 16#200A#),     -- EN QUAD..HAIR SPACE
+      (16#2011#, 16#2011#),     -- NON-BREAKING HYPHEN
+      (16#2017#, 16#2017#),     -- DOUBLE LOW LINE
+      (16#2024#, 16#2026#),     -- ONE DOT LEADER..HORIZONTAL ELLIPSIS
+      (16#202F#, 16#202F#),     -- NARROW NO-BREAK SPACE
+      (16#2033#, 16#2034#),     -- DOUBLE PRIME..TRIPLE PRIME
+      (16#2036#, 16#2037#),     -- REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+      (16#203C#, 16#203C#),     -- DOUBLE EXCLAMATION MARK
+      (16#203E#, 16#203E#),     -- OVERLINE
+      (16#2047#, 16#2049#),     -- DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+      (16#2057#, 16#2057#),     -- QUADRUPLE PRIME
+      (16#205F#, 16#205F#),     -- MEDIUM MATHEMATICAL SPACE
+      (16#2070#, 16#2070#),     -- SUPERSCRIPT ZERO
+      (16#2071#, 16#2071#),     -- SUPERSCRIPT LATIN SMALL LETTER I
+      (16#2074#, 16#2079#),     -- SUPERSCRIPT FOUR..SUPERSCRIPT NINE
+      (16#207A#, 16#207C#),     -- SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+      (16#207D#, 16#207D#),     -- SUPERSCRIPT LEFT PARENTHESIS
+      (16#207E#, 16#207E#),     -- SUPERSCRIPT RIGHT PARENTHESIS
+      (16#207F#, 16#207F#),     -- SUPERSCRIPT LATIN SMALL LETTER N
+      (16#2080#, 16#2089#),     -- SUBSCRIPT ZERO..SUBSCRIPT NINE
+      (16#208A#, 16#208C#),     -- SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+      (16#208D#, 16#208D#),     -- SUBSCRIPT LEFT PARENTHESIS
+      (16#208E#, 16#208E#),     -- SUBSCRIPT RIGHT PARENTHESIS
+      (16#2090#, 16#209C#),     -- LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
+      (16#20A8#, 16#20A8#),     -- RUPEE SIGN
+      (16#2100#, 16#2101#),     -- ACCOUNT OF..ADDRESSED TO THE SUBJECT
+      (16#2102#, 16#2102#),     -- DOUBLE-STRUCK CAPITAL C
+      (16#2103#, 16#2103#),     -- DEGREE CELSIUS
+      (16#2105#, 16#2106#),     -- CARE OF..CADA UNA
+      (16#2107#, 16#2107#),     -- EULER CONSTANT
+      (16#2109#, 16#2109#),     -- DEGREE FAHRENHEIT
+      (16#210A#, 16#2113#),     -- SCRIPT SMALL G..SCRIPT SMALL L
+      (16#2115#, 16#2115#),     -- DOUBLE-STRUCK CAPITAL N
+      (16#2116#, 16#2116#),     -- NUMERO SIGN
+      (16#2119#, 16#211D#),     -- DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+      (16#2120#, 16#2122#),     -- SERVICE MARK..TRADE MARK SIGN
+      (16#2124#, 16#2124#),     -- DOUBLE-STRUCK CAPITAL Z
+      (16#2126#, 16#2126#),     -- OHM SIGN
+      (16#2128#, 16#2128#),     -- BLACK-LETTER CAPITAL Z
+      (16#212A#, 16#212D#),     -- KELVIN SIGN..BLACK-LETTER CAPITAL C
+      (16#212F#, 16#2131#),     -- SCRIPT SMALL E..SCRIPT CAPITAL F
+      (16#2133#, 16#2134#),     -- SCRIPT CAPITAL M..SCRIPT SMALL O
+      (16#2135#, 16#2138#),     -- ALEF SYMBOL..DALET SYMBOL
+      (16#2139#, 16#2139#),     -- INFORMATION SOURCE
+      (16#213B#, 16#213B#),     -- FACSIMILE SIGN
+      (16#213C#, 16#213F#),     -- DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+      (16#2140#, 16#2140#),     -- DOUBLE-STRUCK N-ARY SUMMATION
+      (16#2145#, 16#2149#),     -- DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+      (16#2150#, 16#215F#),     -- VULGAR FRACTION ONE SEVENTH..FRACTION NUMERATOR ONE
+      (16#2160#, 16#217F#),     -- ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
+      (16#2189#, 16#2189#),     -- VULGAR FRACTION ZERO THIRDS
+      (16#222C#, 16#222D#),     -- DOUBLE INTEGRAL..TRIPLE INTEGRAL
+      (16#222F#, 16#2230#),     -- SURFACE INTEGRAL..VOLUME INTEGRAL
+      (16#2329#, 16#2329#),     -- LEFT-POINTING ANGLE BRACKET
+      (16#232A#, 16#232A#),     -- RIGHT-POINTING ANGLE BRACKET
+      (16#2460#, 16#249B#),     -- CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
+      (16#249C#, 16#24E9#),     -- PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+      (16#24EA#, 16#24EA#),     -- CIRCLED DIGIT ZERO
+      (16#2A0C#, 16#2A0C#),     -- QUADRUPLE INTEGRAL OPERATOR
+      (16#2A74#, 16#2A76#),     -- DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+      (16#2ADC#, 16#2ADC#),     -- FORKING
+      (16#2C7C#, 16#2C7D#),     -- LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
+      (16#2D6F#, 16#2D6F#),     -- TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+      (16#2E9F#, 16#2E9F#),     -- CJK RADICAL MOTHER
+      (16#2EF3#, 16#2EF3#),     -- CJK RADICAL C-SIMPLIFIED TURTLE
+      (16#2F00#, 16#2FD5#),     -- KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
+      (16#3000#, 16#3000#),     -- IDEOGRAPHIC SPACE
+      (16#3036#, 16#3036#),     -- CIRCLED POSTAL MARK
+      (16#3038#, 16#303A#),     -- HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+      (16#309B#, 16#309C#),     -- KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+      (16#309F#, 16#309F#),     -- HIRAGANA DIGRAPH YORI
+      (16#30FF#, 16#30FF#),     -- KATAKANA DIGRAPH KOTO
+      (16#3131#, 16#318E#),     -- HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+      (16#3192#, 16#3195#),     -- IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+      (16#3196#, 16#319F#),     -- IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+      (16#3200#, 16#321E#),     -- PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+      (16#3220#, 16#3229#),     -- PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+      (16#322A#, 16#3247#),     -- PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO
+      (16#3250#, 16#3250#),     -- PARTNERSHIP SIGN
+      (16#3251#, 16#325F#),     -- CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+      (16#3260#, 16#327E#),     -- CIRCLED HANGUL KIYEOK..CIRCLED HANGUL IEUNG U
+      (16#3280#, 16#3289#),     -- CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+      (16#328A#, 16#32B0#),     -- CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+      (16#32B1#, 16#32BF#),     -- CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+      (16#32C0#, 16#33FF#),     -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..SQUARE GAL
+      (16#A69C#, 16#A69D#),     -- MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
+      (16#A770#, 16#A770#),     -- MODIFIER LETTER US
+      (16#A7F8#, 16#A7F9#),     -- MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
+      (16#AB5C#, 16#AB5F#),     -- MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
+      (16#AB69#, 16#AB69#),     -- MODIFIER LETTER SMALL TURNED W
+      (16#F900#, 16#FA0D#),     -- CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+      (16#FA10#, 16#FA10#),     -- CJK COMPATIBILITY IDEOGRAPH-FA10
+      (16#FA12#, 16#FA12#),     -- CJK COMPATIBILITY IDEOGRAPH-FA12
+      (16#FA15#, 16#FA1E#),     -- CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+      (16#FA20#, 16#FA20#),     -- CJK COMPATIBILITY IDEOGRAPH-FA20
+      (16#FA22#, 16#FA22#),     -- CJK COMPATIBILITY IDEOGRAPH-FA22
+      (16#FA25#, 16#FA26#),     -- CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+      (16#FA2A#, 16#FA6D#),     -- CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA6D
+      (16#FA70#, 16#FAD9#),     -- CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+      (16#FB00#, 16#FB06#),     -- LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+      (16#FB13#, 16#FB17#),     -- ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+      (16#FB1D#, 16#FB1D#),     -- HEBREW LETTER YOD WITH HIRIQ
+      (16#FB1F#, 16#FB28#),     -- HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+      (16#FB29#, 16#FB29#),     -- HEBREW LETTER ALTERNATIVE PLUS SIGN
+      (16#FB2A#, 16#FB36#),     -- HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+      (16#FB38#, 16#FB3C#),     -- HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+      (16#FB3E#, 16#FB3E#),     -- HEBREW LETTER MEM WITH DAGESH
+      (16#FB40#, 16#FB41#),     -- HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+      (16#FB43#, 16#FB44#),     -- HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+      (16#FB46#, 16#FBB1#),     -- HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+      (16#FBD3#, 16#FD3D#),     -- ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+      (16#FD50#, 16#FD8F#),     -- ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+      (16#FD92#, 16#FDC7#),     -- ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+      (16#FDF0#, 16#FDFB#),     -- ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+      (16#FDFC#, 16#FDFC#),     -- RIAL SIGN
+      (16#FE10#, 16#FE16#),     -- PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
+      (16#FE17#, 16#FE17#),     -- PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+      (16#FE18#, 16#FE18#),     -- PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+      (16#FE19#, 16#FE19#),     -- PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+      (16#FE30#, 16#FE30#),     -- PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+      (16#FE31#, 16#FE32#),     -- PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
+      (16#FE33#, 16#FE34#),     -- PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+      (16#FE35#, 16#FE35#),     -- PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+      (16#FE36#, 16#FE36#),     -- PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+      (16#FE37#, 16#FE37#),     -- PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+      (16#FE38#, 16#FE38#),     -- PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+      (16#FE39#, 16#FE39#),     -- PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+      (16#FE3A#, 16#FE3A#),     -- PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+      (16#FE3B#, 16#FE3B#),     -- PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+      (16#FE3C#, 16#FE3C#),     -- PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+      (16#FE3D#, 16#FE3D#),     -- PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+      (16#FE3E#, 16#FE3E#),     -- PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+      (16#FE3F#, 16#FE3F#),     -- PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+      (16#FE40#, 16#FE40#),     -- PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+      (16#FE41#, 16#FE41#),     -- PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+      (16#FE42#, 16#FE42#),     -- PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+      (16#FE43#, 16#FE43#),     -- PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+      (16#FE44#, 16#FE44#),     -- PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+      (16#FE47#, 16#FE47#),     -- PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+      (16#FE48#, 16#FE48#),     -- PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+      (16#FE49#, 16#FE4C#),     -- DASHED OVERLINE..DOUBLE WAVY OVERLINE
+      (16#FE4D#, 16#FE4F#),     -- DASHED LOW LINE..WAVY LOW LINE
+      (16#FE50#, 16#FE52#),     -- SMALL COMMA..SMALL FULL STOP
+      (16#FE54#, 16#FE57#),     -- SMALL SEMICOLON..SMALL EXCLAMATION MARK
+      (16#FE58#, 16#FE58#),     -- SMALL EM DASH
+      (16#FE59#, 16#FE59#),     -- SMALL LEFT PARENTHESIS
+      (16#FE5A#, 16#FE5A#),     -- SMALL RIGHT PARENTHESIS
+      (16#FE5B#, 16#FE5B#),     -- SMALL LEFT CURLY BRACKET
+      (16#FE5C#, 16#FE5C#),     -- SMALL RIGHT CURLY BRACKET
+      (16#FE5D#, 16#FE5D#),     -- SMALL LEFT TORTOISE SHELL BRACKET
+      (16#FE5E#, 16#FE5E#),     -- SMALL RIGHT TORTOISE SHELL BRACKET
+      (16#FE5F#, 16#FE61#),     -- SMALL NUMBER SIGN..SMALL ASTERISK
+      (16#FE62#, 16#FE62#),     -- SMALL PLUS SIGN
+      (16#FE63#, 16#FE63#),     -- SMALL HYPHEN-MINUS
+      (16#FE64#, 16#FE66#),     -- SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+      (16#FE68#, 16#FE68#),     -- SMALL REVERSE SOLIDUS
+      (16#FE69#, 16#FE69#),     -- SMALL DOLLAR SIGN
+      (16#FE6A#, 16#FE6B#),     -- SMALL PERCENT SIGN..SMALL COMMERCIAL AT
+      (16#FE70#, 16#FE72#),     -- ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+      (16#FE74#, 16#FE74#),     -- ARABIC KASRATAN ISOLATED FORM
+      (16#FE76#, 16#FEFC#),     -- ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+      (16#FF01#, 16#FF03#),     -- FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
+      (16#FF04#, 16#FF04#),        -- FULLWIDTH DOLLAR SIGN
+      (16#FF05#, 16#FF07#),     -- FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
+      (16#FF08#, 16#FF08#),     -- FULLWIDTH LEFT PARENTHESIS
+      (16#FF09#, 16#FF09#),     -- FULLWIDTH RIGHT PARENTHESIS
+      (16#FF0A#, 16#FF0A#),     -- FULLWIDTH ASTERISK
+      (16#FF0B#, 16#FF0B#),     -- FULLWIDTH PLUS SIGN
+      (16#FF0C#, 16#FF0C#),     -- FULLWIDTH COMMA
+      (16#FF0D#, 16#FF0D#),     -- FULLWIDTH HYPHEN-MINUS
+      (16#FF0E#, 16#FF0F#),     -- FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
+      (16#FF10#, 16#FF19#),     -- FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+      (16#FF1A#, 16#FF1B#),     -- FULLWIDTH COLON..FULLWIDTH SEMICOLON
+      (16#FF1C#, 16#FF1E#),     -- FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+      (16#FF1F#, 16#FF20#),     -- FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
+      (16#FF21#, 16#FF3A#),     -- FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+      (16#FF3B#, 16#FF3B#),     -- FULLWIDTH LEFT SQUARE BRACKET
+      (16#FF3C#, 16#FF3C#),     -- FULLWIDTH REVERSE SOLIDUS
+      (16#FF3D#, 16#FF3D#),     -- FULLWIDTH RIGHT SQUARE BRACKET
+      (16#FF3E#, 16#FF3E#),     -- FULLWIDTH CIRCUMFLEX ACCENT
+      (16#FF3F#, 16#FF3F#),     -- FULLWIDTH LOW LINE
+      (16#FF40#, 16#FF40#),     -- FULLWIDTH GRAVE ACCENT
+      (16#FF41#, 16#FF5A#),     -- FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+      (16#FF5B#, 16#FF5B#),     -- FULLWIDTH LEFT CURLY BRACKET
+      (16#FF5C#, 16#FF5C#),     -- FULLWIDTH VERTICAL LINE
+      (16#FF5D#, 16#FF5D#),     -- FULLWIDTH RIGHT CURLY BRACKET
+      (16#FF5E#, 16#FF5E#),     -- FULLWIDTH TILDE
+      (16#FF5F#, 16#FF5F#),     -- FULLWIDTH LEFT WHITE PARENTHESIS
+      (16#FF60#, 16#FF60#),     -- FULLWIDTH RIGHT WHITE PARENTHESIS
+      (16#FF61#, 16#FF61#),     -- HALFWIDTH IDEOGRAPHIC FULL STOP
+      (16#FF62#, 16#FF62#),     -- HALFWIDTH LEFT CORNER BRACKET
+      (16#FF63#, 16#FF63#),     -- HALFWIDTH RIGHT CORNER BRACKET
+      (16#FF64#, 16#FF65#),     -- HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
+      (16#FF66#, 16#FF6F#),     -- HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+      (16#FF70#, 16#FF70#),     -- HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+      (16#FF71#, 16#FF9D#),     -- HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+      (16#FF9E#, 16#FF9F#),     -- HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+      (16#FFA0#, 16#FFBE#),     -- HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+      (16#FFC2#, 16#FFC7#),     -- HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+      (16#FFCA#, 16#FFCF#),     -- HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+      (16#FFD2#, 16#FFD7#),     -- HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+      (16#FFDA#, 16#FFDC#),     -- HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+      (16#FFE0#, 16#FFE1#),     -- FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
+      (16#FFE2#, 16#FFE2#),     -- FULLWIDTH NOT SIGN
+      (16#FFE3#, 16#FFE3#),     -- FULLWIDTH MACRON
+      (16#FFE4#, 16#FFE4#),     -- FULLWIDTH BROKEN BAR
+      (16#FFE5#, 16#FFE6#),     -- FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
+      (16#FFE8#, 16#FFE8#),     -- HALFWIDTH FORMS LIGHT VERTICAL
+      (16#FFE9#, 16#FFEC#),     -- HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+      (16#FFED#, 16#FFEE#),     -- HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
+      (16#1D15E#, 16#1D164#),   -- MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+      (16#1D1BB#, 16#1D1C0#),   -- MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+      (16#1D400#, 16#1D454#),   -- MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+      (16#1D456#, 16#1D49C#),   -- MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+      (16#1D49E#, 16#1D49F#),   -- MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+      (16#1D4A2#, 16#1D4A2#),   -- MATHEMATICAL SCRIPT CAPITAL G
+      (16#1D4A5#, 16#1D4A6#),   -- MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+      (16#1D4A9#, 16#1D4AC#),   -- MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+      (16#1D4AE#, 16#1D4B9#),   -- MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+      (16#1D4BB#, 16#1D4BB#),   -- MATHEMATICAL SCRIPT SMALL F
+      (16#1D4BD#, 16#1D4C3#),   -- MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+      (16#1D4C5#, 16#1D505#),   -- MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+      (16#1D507#, 16#1D50A#),   -- MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+      (16#1D50D#, 16#1D514#),   -- MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+      (16#1D516#, 16#1D51C#),   -- MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+      (16#1D51E#, 16#1D539#),   -- MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+      (16#1D53B#, 16#1D53E#),   -- MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+      (16#1D540#, 16#1D544#),   -- MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+      (16#1D546#, 16#1D546#),   -- MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+      (16#1D54A#, 16#1D550#),   -- MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+      (16#1D552#, 16#1D6A5#),   -- MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+      (16#1D6A8#, 16#1D6C0#),   -- MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+      (16#1D6C1#, 16#1D6C1#),   -- MATHEMATICAL BOLD NABLA
+      (16#1D6C2#, 16#1D6DA#),   -- MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+      (16#1D6DB#, 16#1D6DB#),   -- MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+      (16#1D6DC#, 16#1D6FA#),   -- MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+      (16#1D6FB#, 16#1D6FB#),   -- MATHEMATICAL ITALIC NABLA
+      (16#1D6FC#, 16#1D714#),   -- MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+      (16#1D715#, 16#1D715#),   -- MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+      (16#1D716#, 16#1D734#),   -- MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+      (16#1D735#, 16#1D735#),   -- MATHEMATICAL BOLD ITALIC NABLA
+      (16#1D736#, 16#1D74E#),   -- MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+      (16#1D74F#, 16#1D74F#),   -- MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+      (16#1D750#, 16#1D76E#),   -- MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+      (16#1D76F#, 16#1D76F#),   -- MATHEMATICAL SANS-SERIF BOLD NABLA
+      (16#1D770#, 16#1D788#),   -- MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+      (16#1D789#, 16#1D789#),   -- MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+      (16#1D78A#, 16#1D7A8#),   -- MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+      (16#1D7A9#, 16#1D7A9#),   -- MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+      (16#1D7AA#, 16#1D7C2#),   -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+      (16#1D7C3#, 16#1D7C3#),   -- MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+      (16#1D7C4#, 16#1D7CB#),   -- MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+      (16#1D7CE#, 16#1D7FF#),   -- MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+      (16#1EE00#, 16#1EE03#),   -- ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
+      (16#1EE05#, 16#1EE1F#),   -- ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
+      (16#1EE21#, 16#1EE22#),   -- ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
+      (16#1EE24#, 16#1EE24#),   -- ARABIC MATHEMATICAL INITIAL HEH
+      (16#1EE27#, 16#1EE27#),   -- ARABIC MATHEMATICAL INITIAL HAH
+      (16#1EE29#, 16#1EE32#),   -- ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF
+      (16#1EE34#, 16#1EE37#),   -- ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH
+      (16#1EE39#, 16#1EE39#),   -- ARABIC MATHEMATICAL INITIAL DAD
+      (16#1EE3B#, 16#1EE3B#),   -- ARABIC MATHEMATICAL INITIAL GHAIN
+      (16#1EE42#, 16#1EE42#),   -- ARABIC MATHEMATICAL TAILED JEEM
+      (16#1EE47#, 16#1EE47#),   -- ARABIC MATHEMATICAL TAILED HAH
+      (16#1EE49#, 16#1EE49#),   -- ARABIC MATHEMATICAL TAILED YEH
+      (16#1EE4B#, 16#1EE4B#),   -- ARABIC MATHEMATICAL TAILED LAM
+      (16#1EE4D#, 16#1EE4F#),   -- ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN
+      (16#1EE51#, 16#1EE52#),   -- ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF
+      (16#1EE54#, 16#1EE54#),   -- ARABIC MATHEMATICAL TAILED SHEEN
+      (16#1EE57#, 16#1EE57#),   -- ARABIC MATHEMATICAL TAILED KHAH
+      (16#1EE59#, 16#1EE59#),   -- ARABIC MATHEMATICAL TAILED DAD
+      (16#1EE5B#, 16#1EE5B#),   -- ARABIC MATHEMATICAL TAILED GHAIN
+      (16#1EE5D#, 16#1EE5D#),   -- ARABIC MATHEMATICAL TAILED DOTLESS NOON
+      (16#1EE5F#, 16#1EE5F#),   -- ARABIC MATHEMATICAL TAILED DOTLESS QAF
+      (16#1EE61#, 16#1EE62#),   -- ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM
+      (16#1EE64#, 16#1EE64#),   -- ARABIC MATHEMATICAL STRETCHED HEH
+      (16#1EE67#, 16#1EE6A#),   -- ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF
+      (16#1EE6C#, 16#1EE72#),   -- ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF
+      (16#1EE74#, 16#1EE77#),   -- ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH
+      (16#1EE79#, 16#1EE7C#),   -- ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
+      (16#1EE7E#, 16#1EE7E#),   -- ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
+      (16#1EE80#, 16#1EE89#),   -- ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH
+      (16#1EE8B#, 16#1EE9B#),   -- ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN
+      (16#1EEA1#, 16#1EEA3#),   -- ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
+      (16#1EEA5#, 16#1EEA9#),   -- ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
+      (16#1EEAB#, 16#1EEBB#),   -- ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
+      (16#1F100#, 16#1F10A#),   -- DIGIT ZERO FULL STOP..DIGIT NINE COMMA
+      (16#1F110#, 16#1F12E#),   -- PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED WZ
+      (16#1F130#, 16#1F14F#),   -- SQUARED LATIN CAPITAL LETTER A..SQUARED WC
+      (16#1F16A#, 16#1F16C#),   -- RAISED MC SIGN..RAISED MR SIGN
+      (16#1F190#, 16#1F190#),   -- SQUARE DJ
+      (16#1F200#, 16#1F202#),   -- SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA
+      (16#1F210#, 16#1F23B#),   -- SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
+      (16#1F240#, 16#1F248#),   -- TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
+      (16#1F250#, 16#1F251#),   -- CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
+      (16#1FBF0#, 16#1FBF9#),   -- SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
+      (16#2F800#, 16#2FA1D#));  -- CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+ 
+    pragma Warnings (On);
+    --  Temporary until pragma Warnings at start can be activated ???
+ 
+    type Decomposition_Mapping is record
+       Item               : UTF_32;
+       First_Char_Mapping : UTF_32;
+    end record;
+    --  Item is a UTF_32 character with a decomposition mapping.
+    --  First_Char_Mapping is the first UTF_32 character of the decomposition
+    --  mapping of Item.
+ 
+    type Unicode_Decomposition_Array is
+      array (Positive range <>) of Decomposition_Mapping;
+ 
+    Unicode_Decomposition : constant Unicode_Decomposition_Array := (
+      (16#00A0#, 16#0020#),
+      (16#00A8#, 16#0020#),
+      (16#00AA#, 16#0061#),
+      (16#00AF#, 16#0020#),
+      (16#00B2#, 16#0032#),
+      (16#00B3#, 16#0033#),
+      (16#00B4#, 16#0020#),
+      (16#00B5#, 16#03BC#),
+      (16#00B8#, 16#0020#),
+      (16#00B9#, 16#0031#),
+      (16#00BA#, 16#006F#),
+      (16#00BC#, 16#0031#),
+      (16#00BD#, 16#0031#),
+      (16#00BE#, 16#0033#),
+      (16#00C0#, 16#0041#),
+      (16#00C1#, 16#0041#),
+      (16#00C2#, 16#0041#),
+      (16#00C3#, 16#0041#),
+      (16#00C4#, 16#0041#),
+      (16#00C5#, 16#0041#),
+      (16#00C7#, 16#0043#),
+      (16#00C8#, 16#0045#),
+      (16#00C9#, 16#0045#),
+      (16#00CA#, 16#0045#),
+      (16#00CB#, 16#0045#),
+      (16#00CC#, 16#0049#),
+      (16#00CD#, 16#0049#),
+      (16#00CE#, 16#0049#),
+      (16#00CF#, 16#0049#),
+      (16#00D1#, 16#004E#),
+      (16#00D2#, 16#004F#),
+      (16#00D3#, 16#004F#),
+      (16#00D4#, 16#004F#),
+      (16#00D5#, 16#004F#),
+      (16#00D6#, 16#004F#),
+      (16#00D9#, 16#0055#),
+      (16#00DA#, 16#0055#),
+      (16#00DB#, 16#0055#),
+      (16#00DC#, 16#0055#),
+      (16#00DD#, 16#0059#),
+      (16#00E0#, 16#0061#),
+      (16#00E1#, 16#0061#),
+      (16#00E2#, 16#0061#),
+      (16#00E3#, 16#0061#),
+      (16#00E4#, 16#0061#),
+      (16#00E5#, 16#0061#),
+      (16#00E7#, 16#0063#),
+      (16#00E8#, 16#0065#),
+      (16#00E9#, 16#0065#),
+      (16#00EA#, 16#0065#),
+      (16#00EB#, 16#0065#),
+      (16#00EC#, 16#0069#),
+      (16#00ED#, 16#0069#),
+      (16#00EE#, 16#0069#),
+      (16#00EF#, 16#0069#),
+      (16#00F1#, 16#006E#),
+      (16#00F2#, 16#006F#),
+      (16#00F3#, 16#006F#),
+      (16#00F4#, 16#006F#),
+      (16#00F5#, 16#006F#),
+      (16#00F6#, 16#006F#),
+      (16#00F9#, 16#0075#),
+      (16#00FA#, 16#0075#),
+      (16#00FB#, 16#0075#),
+      (16#00FC#, 16#0075#),
+      (16#00FD#, 16#0079#),
+      (16#00FF#, 16#0079#),
+      (16#0100#, 16#0041#),
+      (16#0101#, 16#0061#),
+      (16#0102#, 16#0041#),
+      (16#0103#, 16#0061#),
+      (16#0104#, 16#0041#),
+      (16#0105#, 16#0061#),
+      (16#0106#, 16#0043#),
+      (16#0107#, 16#0063#),
+      (16#0108#, 16#0043#),
+      (16#0109#, 16#0063#),
+      (16#010A#, 16#0043#),
+      (16#010B#, 16#0063#),
+      (16#010C#, 16#0043#),
+      (16#010D#, 16#0063#),
+      (16#010E#, 16#0044#),
+      (16#010F#, 16#0064#),
+      (16#0112#, 16#0045#),
+      (16#0113#, 16#0065#),
+      (16#0114#, 16#0045#),
+      (16#0115#, 16#0065#),
+      (16#0116#, 16#0045#),
+      (16#0117#, 16#0065#),
+      (16#0118#, 16#0045#),
+      (16#0119#, 16#0065#),
+      (16#011A#, 16#0045#),
+      (16#011B#, 16#0065#),
+      (16#011C#, 16#0047#),
+      (16#011D#, 16#0067#),
+      (16#011E#, 16#0047#),
+      (16#011F#, 16#0067#),
+      (16#0120#, 16#0047#),
+      (16#0121#, 16#0067#),
+      (16#0122#, 16#0047#),
+      (16#0123#, 16#0067#),
+      (16#0124#, 16#0048#),
+      (16#0125#, 16#0068#),
+      (16#0128#, 16#0049#),
+      (16#0129#, 16#0069#),
+      (16#012A#, 16#0049#),
+      (16#012B#, 16#0069#),
+      (16#012C#, 16#0049#),
+      (16#012D#, 16#0069#),
+      (16#012E#, 16#0049#),
+      (16#012F#, 16#0069#),
+      (16#0130#, 16#0049#),
+      (16#0132#, 16#0049#),
+      (16#0133#, 16#0069#),
+      (16#0134#, 16#004A#),
+      (16#0135#, 16#006A#),
+      (16#0136#, 16#004B#),
+      (16#0137#, 16#006B#),
+      (16#0139#, 16#004C#),
+      (16#013A#, 16#006C#),
+      (16#013B#, 16#004C#),
+      (16#013C#, 16#006C#),
+      (16#013D#, 16#004C#),
+      (16#013E#, 16#006C#),
+      (16#013F#, 16#004C#),
+      (16#0140#, 16#006C#),
+      (16#0143#, 16#004E#),
+      (16#0144#, 16#006E#),
+      (16#0145#, 16#004E#),
+      (16#0146#, 16#006E#),
+      (16#0147#, 16#004E#),
+      (16#0148#, 16#006E#),
+      (16#0149#, 16#02BC#),
+      (16#014C#, 16#004F#),
+      (16#014D#, 16#006F#),
+      (16#014E#, 16#004F#),
+      (16#014F#, 16#006F#),
+      (16#0150#, 16#004F#),
+      (16#0151#, 16#006F#),
+      (16#0154#, 16#0052#),
+      (16#0155#, 16#0072#),
+      (16#0156#, 16#0052#),
+      (16#0157#, 16#0072#),
+      (16#0158#, 16#0052#),
+      (16#0159#, 16#0072#),
+      (16#015A#, 16#0053#),
+      (16#015B#, 16#0073#),
+      (16#015C#, 16#0053#),
+      (16#015D#, 16#0073#),
+      (16#015E#, 16#0053#),
+      (16#015F#, 16#0073#),
+      (16#0160#, 16#0053#),
+      (16#0161#, 16#0073#),
+      (16#0162#, 16#0054#),
+      (16#0163#, 16#0074#),
+      (16#0164#, 16#0054#),
+      (16#0165#, 16#0074#),
+      (16#0168#, 16#0055#),
+      (16#0169#, 16#0075#),
+      (16#016A#, 16#0055#),
+      (16#016B#, 16#0075#),
+      (16#016C#, 16#0055#),
+      (16#016D#, 16#0075#),
+      (16#016E#, 16#0055#),
+      (16#016F#, 16#0075#),
+      (16#0170#, 16#0055#),
+      (16#0171#, 16#0075#),
+      (16#0172#, 16#0055#),
+      (16#0173#, 16#0075#),
+      (16#0174#, 16#0057#),
+      (16#0175#, 16#0077#),
+      (16#0176#, 16#0059#),
+      (16#0177#, 16#0079#),
+      (16#0178#, 16#0059#),
+      (16#0179#, 16#005A#),
+      (16#017A#, 16#007A#),
+      (16#017B#, 16#005A#),
+      (16#017C#, 16#007A#),
+      (16#017D#, 16#005A#),
+      (16#017E#, 16#007A#),
+      (16#017F#, 16#0073#),
+      (16#01A0#, 16#004F#),
+      (16#01A1#, 16#006F#),
+      (16#01AF#, 16#0055#),
+      (16#01B0#, 16#0075#),
+      (16#01C4#, 16#0044#),
+      (16#01C5#, 16#0044#),
+      (16#01C6#, 16#0064#),
+      (16#01C7#, 16#004C#),
+      (16#01C8#, 16#004C#),
+      (16#01C9#, 16#006C#),
+      (16#01CA#, 16#004E#),
+      (16#01CB#, 16#004E#),
+      (16#01CC#, 16#006E#),
+      (16#01CD#, 16#0041#),
+      (16#01CE#, 16#0061#),
+      (16#01CF#, 16#0049#),
+      (16#01D0#, 16#0069#),
+      (16#01D1#, 16#004F#),
+      (16#01D2#, 16#006F#),
+      (16#01D3#, 16#0055#),
+      (16#01D4#, 16#0075#),
+      (16#01D5#, 16#00DC#),
+      (16#01D6#, 16#00FC#),
+      (16#01D7#, 16#00DC#),
+      (16#01D8#, 16#00FC#),
+      (16#01D9#, 16#00DC#),
+      (16#01DA#, 16#00FC#),
+      (16#01DB#, 16#00DC#),
+      (16#01DC#, 16#00FC#),
+      (16#01DE#, 16#00C4#),
+      (16#01DF#, 16#00E4#),
+      (16#01E0#, 16#0226#),
+      (16#01E1#, 16#0227#),
+      (16#01E2#, 16#00C6#),
+      (16#01E3#, 16#00E6#),
+      (16#01E6#, 16#0047#),
+      (16#01E7#, 16#0067#),
+      (16#01E8#, 16#004B#),
+      (16#01E9#, 16#006B#),
+      (16#01EA#, 16#004F#),
+      (16#01EB#, 16#006F#),
+      (16#01EC#, 16#01EA#),
+      (16#01ED#, 16#01EB#),
+      (16#01EE#, 16#01B7#),
+      (16#01EF#, 16#0292#),
+      (16#01F0#, 16#006A#),
+      (16#01F1#, 16#0044#),
+      (16#01F2#, 16#0044#),
+      (16#01F3#, 16#0064#),
+      (16#01F4#, 16#0047#),
+      (16#01F5#, 16#0067#),
+      (16#01F8#, 16#004E#),
+      (16#01F9#, 16#006E#),
+      (16#01FA#, 16#00C5#),
+      (16#01FB#, 16#00E5#),
+      (16#01FC#, 16#00C6#),
+      (16#01FD#, 16#00E6#),
+      (16#01FE#, 16#00D8#),
+      (16#01FF#, 16#00F8#),
+      (16#0200#, 16#0041#),
+      (16#0201#, 16#0061#),
+      (16#0202#, 16#0041#),
+      (16#0203#, 16#0061#),
+      (16#0204#, 16#0045#),
+      (16#0205#, 16#0065#),
+      (16#0206#, 16#0045#),
+      (16#0207#, 16#0065#),
+      (16#0208#, 16#0049#),
+      (16#0209#, 16#0069#),
+      (16#020A#, 16#0049#),
+      (16#020B#, 16#0069#),
+      (16#020C#, 16#004F#),
+      (16#020D#, 16#006F#),
+      (16#020E#, 16#004F#),
+      (16#020F#, 16#006F#),
+      (16#0210#, 16#0052#),
+      (16#0211#, 16#0072#),
+      (16#0212#, 16#0052#),
+      (16#0213#, 16#0072#),
+      (16#0214#, 16#0055#),
+      (16#0215#, 16#0075#),
+      (16#0216#, 16#0055#),
+      (16#0217#, 16#0075#),
+      (16#0218#, 16#0053#),
+      (16#0219#, 16#0073#),
+      (16#021A#, 16#0054#),
+      (16#021B#, 16#0074#),
+      (16#021E#, 16#0048#),
+      (16#021F#, 16#0068#),
+      (16#0226#, 16#0041#),
+      (16#0227#, 16#0061#),
+      (16#0228#, 16#0045#),
+      (16#0229#, 16#0065#),
+      (16#022A#, 16#00D6#),
+      (16#022B#, 16#00F6#),
+      (16#022C#, 16#00D5#),
+      (16#022D#, 16#00F5#),
+      (16#022E#, 16#004F#),
+      (16#022F#, 16#006F#),
+      (16#0230#, 16#022E#),
+      (16#0231#, 16#022F#),
+      (16#0232#, 16#0059#),
+      (16#0233#, 16#0079#),
+      (16#02B0#, 16#0068#),
+      (16#02B1#, 16#0266#),
+      (16#02B2#, 16#006A#),
+      (16#02B3#, 16#0072#),
+      (16#02B4#, 16#0279#),
+      (16#02B5#, 16#027B#),
+      (16#02B6#, 16#0281#),
+      (16#02B7#, 16#0077#),
+      (16#02B8#, 16#0079#),
+      (16#02D8#, 16#0020#),
+      (16#02D9#, 16#0020#),
+      (16#02DA#, 16#0020#),
+      (16#02DB#, 16#0020#),
+      (16#02DC#, 16#0020#),
+      (16#02DD#, 16#0020#),
+      (16#02E0#, 16#0263#),
+      (16#02E1#, 16#006C#),
+      (16#02E2#, 16#0073#),
+      (16#02E3#, 16#0078#),
+      (16#02E4#, 16#0295#),
+      (16#0340#, 16#0300#),
+      (16#0341#, 16#0301#),
+      (16#0343#, 16#0313#),
+      (16#0344#, 16#0308#),
+      (16#0374#, 16#02B9#),
+      (16#037A#, 16#0020#),
+      (16#037E#, 16#003B#),
+      (16#0384#, 16#0020#),
+      (16#0385#, 16#00A8#),
+      (16#0386#, 16#0391#),
+      (16#0387#, 16#00B7#),
+      (16#0388#, 16#0395#),
+      (16#0389#, 16#0397#),
+      (16#038A#, 16#0399#),
+      (16#038C#, 16#039F#),
+      (16#038E#, 16#03A5#),
+      (16#038F#, 16#03A9#),
+      (16#0390#, 16#03CA#),
+      (16#03AA#, 16#0399#),
+      (16#03AB#, 16#03A5#),
+      (16#03AC#, 16#03B1#),
+      (16#03AD#, 16#03B5#),
+      (16#03AE#, 16#03B7#),
+      (16#03AF#, 16#03B9#),
+      (16#03B0#, 16#03CB#),
+      (16#03CA#, 16#03B9#),
+      (16#03CB#, 16#03C5#),
+      (16#03CC#, 16#03BF#),
+      (16#03CD#, 16#03C5#),
+      (16#03CE#, 16#03C9#),
+      (16#03D0#, 16#03B2#),
+      (16#03D1#, 16#03B8#),
+      (16#03D2#, 16#03A5#),
+      (16#03D3#, 16#03D2#),
+      (16#03D4#, 16#03D2#),
+      (16#03D5#, 16#03C6#),
+      (16#03D6#, 16#03C0#),
+      (16#03F0#, 16#03BA#),
+      (16#03F1#, 16#03C1#),
+      (16#03F2#, 16#03C2#),
+      (16#03F4#, 16#0398#),
+      (16#03F5#, 16#03B5#),
+      (16#03F9#, 16#03A3#),
+      (16#0400#, 16#0415#),
+      (16#0401#, 16#0415#),
+      (16#0403#, 16#0413#),
+      (16#0407#, 16#0406#),
+      (16#040C#, 16#041A#),
+      (16#040D#, 16#0418#),
+      (16#040E#, 16#0423#),
+      (16#0419#, 16#0418#),
+      (16#0439#, 16#0438#),
+      (16#0450#, 16#0435#),
+      (16#0451#, 16#0435#),
+      (16#0453#, 16#0433#),
+      (16#0457#, 16#0456#),
+      (16#045C#, 16#043A#),
+      (16#045D#, 16#0438#),
+      (16#045E#, 16#0443#),
+      (16#0476#, 16#0474#),
+      (16#0477#, 16#0475#),
+      (16#04C1#, 16#0416#),
+      (16#04C2#, 16#0436#),
+      (16#04D0#, 16#0410#),
+      (16#04D1#, 16#0430#),
+      (16#04D2#, 16#0410#),
+      (16#04D3#, 16#0430#),
+      (16#04D6#, 16#0415#),
+      (16#04D7#, 16#0435#),
+      (16#04DA#, 16#04D8#),
+      (16#04DB#, 16#04D9#),
+      (16#04DC#, 16#0416#),
+      (16#04DD#, 16#0436#),
+      (16#04DE#, 16#0417#),
+      (16#04DF#, 16#0437#),
+      (16#04E2#, 16#0418#),
+      (16#04E3#, 16#0438#),
+      (16#04E4#, 16#0418#),
+      (16#04E5#, 16#0438#),
+      (16#04E6#, 16#041E#),
+      (16#04E7#, 16#043E#),
+      (16#04EA#, 16#04E8#),
+      (16#04EB#, 16#04E9#),
+      (16#04EC#, 16#042D#),
+      (16#04ED#, 16#044D#),
+      (16#04EE#, 16#0423#),
+      (16#04EF#, 16#0443#),
+      (16#04F0#, 16#0423#),
+      (16#04F1#, 16#0443#),
+      (16#04F2#, 16#0423#),
+      (16#04F3#, 16#0443#),
+      (16#04F4#, 16#0427#),
+      (16#04F5#, 16#0447#),
+      (16#04F8#, 16#042B#),
+      (16#04F9#, 16#044B#),
+      (16#0587#, 16#0565#),
+      (16#0622#, 16#0627#),
+      (16#0623#, 16#0627#),
+      (16#0624#, 16#0648#),
+      (16#0625#, 16#0627#),
+      (16#0626#, 16#064A#),
+      (16#0675#, 16#0627#),
+      (16#0676#, 16#0648#),
+      (16#0677#, 16#06C7#),
+      (16#0678#, 16#064A#),
+      (16#06C0#, 16#06D5#),
+      (16#06C2#, 16#06C1#),
+      (16#06D3#, 16#06D2#),
+      (16#0929#, 16#0928#),
+      (16#0931#, 16#0930#),
+      (16#0934#, 16#0933#),
+      (16#0958#, 16#0915#),
+      (16#0959#, 16#0916#),
+      (16#095A#, 16#0917#),
+      (16#095B#, 16#091C#),
+      (16#095C#, 16#0921#),
+      (16#095D#, 16#0922#),
+      (16#095E#, 16#092B#),
+      (16#095F#, 16#092F#),
+      (16#09CB#, 16#09C7#),
+      (16#09CC#, 16#09C7#),
+      (16#09DC#, 16#09A1#),
+      (16#09DD#, 16#09A2#),
+      (16#09DF#, 16#09AF#),
+      (16#0A33#, 16#0A32#),
+      (16#0A36#, 16#0A38#),
+      (16#0A59#, 16#0A16#),
+      (16#0A5A#, 16#0A17#),
+      (16#0A5B#, 16#0A1C#),
+      (16#0A5E#, 16#0A2B#),
+      (16#0B48#, 16#0B47#),
+      (16#0B4B#, 16#0B47#),
+      (16#0B4C#, 16#0B47#),
+      (16#0B5C#, 16#0B21#),
+      (16#0B5D#, 16#0B22#),
+      (16#0B94#, 16#0B92#),
+      (16#0BCA#, 16#0BC6#),
+      (16#0BCB#, 16#0BC7#),
+      (16#0BCC#, 16#0BC6#),
+      (16#0C48#, 16#0C46#),
+      (16#0CC0#, 16#0CBF#),
+      (16#0CC7#, 16#0CC6#),
+      (16#0CC8#, 16#0CC6#),
+      (16#0CCA#, 16#0CC6#),
+      (16#0CCB#, 16#0CCA#),
+      (16#0D4A#, 16#0D46#),
+      (16#0D4B#, 16#0D47#),
+      (16#0D4C#, 16#0D46#),
+      (16#0DDA#, 16#0DD9#),
+      (16#0DDC#, 16#0DD9#),
+      (16#0DDD#, 16#0DDC#),
+      (16#0DDE#, 16#0DD9#),
+      (16#0E33#, 16#0E4D#),
+      (16#0EB3#, 16#0ECD#),
+      (16#0EDC#, 16#0EAB#),
+      (16#0EDD#, 16#0EAB#),
+      (16#0F0C#, 16#0F0B#),
+      (16#0F43#, 16#0F42#),
+      (16#0F4D#, 16#0F4C#),
+      (16#0F52#, 16#0F51#),
+      (16#0F57#, 16#0F56#),
+      (16#0F5C#, 16#0F5B#),
+      (16#0F69#, 16#0F40#),
+      (16#0F73#, 16#0F71#),
+      (16#0F75#, 16#0F71#),
+      (16#0F76#, 16#0FB2#),
+      (16#0F77#, 16#0FB2#),
+      (16#0F78#, 16#0FB3#),
+      (16#0F79#, 16#0FB3#),
+      (16#0F81#, 16#0F71#),
+      (16#0F93#, 16#0F92#),
+      (16#0F9D#, 16#0F9C#),
+      (16#0FA2#, 16#0FA1#),
+      (16#0FA7#, 16#0FA6#),
+      (16#0FAC#, 16#0FAB#),
+      (16#0FB9#, 16#0F90#),
+      (16#1026#, 16#1025#),
+      (16#10FC#, 16#10DC#),
+      (16#1B06#, 16#1B05#),
+      (16#1B08#, 16#1B07#),
+      (16#1B0A#, 16#1B09#),
+      (16#1B0C#, 16#1B0B#),
+      (16#1B0E#, 16#1B0D#),
+      (16#1B12#, 16#1B11#),
+      (16#1B3B#, 16#1B3A#),
+      (16#1B3D#, 16#1B3C#),
+      (16#1B40#, 16#1B3E#),
+      (16#1B41#, 16#1B3F#),
+      (16#1B43#, 16#1B42#),
+      (16#1D2C#, 16#0041#),
+      (16#1D2D#, 16#00C6#),
+      (16#1D2E#, 16#0042#),
+      (16#1D30#, 16#0044#),
+      (16#1D31#, 16#0045#),
+      (16#1D32#, 16#018E#),
+      (16#1D33#, 16#0047#),
+      (16#1D34#, 16#0048#),
+      (16#1D35#, 16#0049#),
+      (16#1D36#, 16#004A#),
+      (16#1D37#, 16#004B#),
+      (16#1D38#, 16#004C#),
+      (16#1D39#, 16#004D#),
+      (16#1D3A#, 16#004E#),
+      (16#1D3C#, 16#004F#),
+      (16#1D3D#, 16#0222#),
+      (16#1D3E#, 16#0050#),
+      (16#1D3F#, 16#0052#),
+      (16#1D40#, 16#0054#),
+      (16#1D41#, 16#0055#),
+      (16#1D42#, 16#0057#),
+      (16#1D43#, 16#0061#),
+      (16#1D44#, 16#0250#),
+      (16#1D45#, 16#0251#),
+      (16#1D46#, 16#1D02#),
+      (16#1D47#, 16#0062#),
+      (16#1D48#, 16#0064#),
+      (16#1D49#, 16#0065#),
+      (16#1D4A#, 16#0259#),
+      (16#1D4B#, 16#025B#),
+      (16#1D4C#, 16#025C#),
+      (16#1D4D#, 16#0067#),
+      (16#1D4F#, 16#006B#),
+      (16#1D50#, 16#006D#),
+      (16#1D51#, 16#014B#),
+      (16#1D52#, 16#006F#),
+      (16#1D53#, 16#0254#),
+      (16#1D54#, 16#1D16#),
+      (16#1D55#, 16#1D17#),
+      (16#1D56#, 16#0070#),
+      (16#1D57#, 16#0074#),
+      (16#1D58#, 16#0075#),
+      (16#1D59#, 16#1D1D#),
+      (16#1D5A#, 16#026F#),
+      (16#1D5B#, 16#0076#),
+      (16#1D5C#, 16#1D25#),
+      (16#1D5D#, 16#03B2#),
+      (16#1D5E#, 16#03B3#),
+      (16#1D5F#, 16#03B4#),
+      (16#1D60#, 16#03C6#),
+      (16#1D61#, 16#03C7#),
+      (16#1D62#, 16#0069#),
+      (16#1D63#, 16#0072#),
+      (16#1D64#, 16#0075#),
+      (16#1D65#, 16#0076#),
+      (16#1D66#, 16#03B2#),
+      (16#1D67#, 16#03B3#),
+      (16#1D68#, 16#03C1#),
+      (16#1D69#, 16#03C6#),
+      (16#1D6A#, 16#03C7#),
+      (16#1D78#, 16#043D#),
+      (16#1D9B#, 16#0252#),
+      (16#1D9C#, 16#0063#),
+      (16#1D9D#, 16#0255#),
+      (16#1D9E#, 16#00F0#),
+      (16#1D9F#, 16#025C#),
+      (16#1DA0#, 16#0066#),
+      (16#1DA1#, 16#025F#),
+      (16#1DA2#, 16#0261#),
+      (16#1DA3#, 16#0265#),
+      (16#1DA4#, 16#0268#),
+      (16#1DA5#, 16#0269#),
+      (16#1DA6#, 16#026A#),
+      (16#1DA7#, 16#1D7B#),
+      (16#1DA8#, 16#029D#),
+      (16#1DA9#, 16#026D#),
+      (16#1DAA#, 16#1D85#),
+      (16#1DAB#, 16#029F#),
+      (16#1DAC#, 16#0271#),
+      (16#1DAD#, 16#0270#),
+      (16#1DAE#, 16#0272#),
+      (16#1DAF#, 16#0273#),
+      (16#1DB0#, 16#0274#),
+      (16#1DB1#, 16#0275#),
+      (16#1DB2#, 16#0278#),
+      (16#1DB3#, 16#0282#),
+      (16#1DB4#, 16#0283#),
+      (16#1DB5#, 16#01AB#),
+      (16#1DB6#, 16#0289#),
+      (16#1DB7#, 16#028A#),
+      (16#1DB8#, 16#1D1C#),
+      (16#1DB9#, 16#028B#),
+      (16#1DBA#, 16#028C#),
+      (16#1DBB#, 16#007A#),
+      (16#1DBC#, 16#0290#),
+      (16#1DBD#, 16#0291#),
+      (16#1DBE#, 16#0292#),
+      (16#1DBF#, 16#03B8#),
+      (16#1E00#, 16#0041#),
+      (16#1E01#, 16#0061#),
+      (16#1E02#, 16#0042#),
+      (16#1E03#, 16#0062#),
+      (16#1E04#, 16#0042#),
+      (16#1E05#, 16#0062#),
+      (16#1E06#, 16#0042#),
+      (16#1E07#, 16#0062#),
+      (16#1E08#, 16#00C7#),
+      (16#1E09#, 16#00E7#),
+      (16#1E0A#, 16#0044#),
+      (16#1E0B#, 16#0064#),
+      (16#1E0C#, 16#0044#),
+      (16#1E0D#, 16#0064#),
+      (16#1E0E#, 16#0044#),
+      (16#1E0F#, 16#0064#),
+      (16#1E10#, 16#0044#),
+      (16#1E11#, 16#0064#),
+      (16#1E12#, 16#0044#),
+      (16#1E13#, 16#0064#),
+      (16#1E14#, 16#0112#),
+      (16#1E15#, 16#0113#),
+      (16#1E16#, 16#0112#),
+      (16#1E17#, 16#0113#),
+      (16#1E18#, 16#0045#),
+      (16#1E19#, 16#0065#),
+      (16#1E1A#, 16#0045#),
+      (16#1E1B#, 16#0065#),
+      (16#1E1C#, 16#0228#),
+      (16#1E1D#, 16#0229#),
+      (16#1E1E#, 16#0046#),
+      (16#1E1F#, 16#0066#),
+      (16#1E20#, 16#0047#),
+      (16#1E21#, 16#0067#),
+      (16#1E22#, 16#0048#),
+      (16#1E23#, 16#0068#),
+      (16#1E24#, 16#0048#),
+      (16#1E25#, 16#0068#),
+      (16#1E26#, 16#0048#),
+      (16#1E27#, 16#0068#),
+      (16#1E28#, 16#0048#),
+      (16#1E29#, 16#0068#),
+      (16#1E2A#, 16#0048#),
+      (16#1E2B#, 16#0068#),
+      (16#1E2C#, 16#0049#),
+      (16#1E2D#, 16#0069#),
+      (16#1E2E#, 16#00CF#),
+      (16#1E2F#, 16#00EF#),
+      (16#1E30#, 16#004B#),
+      (16#1E31#, 16#006B#),
+      (16#1E32#, 16#004B#),
+      (16#1E33#, 16#006B#),
+      (16#1E34#, 16#004B#),
+      (16#1E35#, 16#006B#),
+      (16#1E36#, 16#004C#),
+      (16#1E37#, 16#006C#),
+      (16#1E38#, 16#1E36#),
+      (16#1E39#, 16#1E37#),
+      (16#1E3A#, 16#004C#),
+      (16#1E3B#, 16#006C#),
+      (16#1E3C#, 16#004C#),
+      (16#1E3D#, 16#006C#),
+      (16#1E3E#, 16#004D#),
+      (16#1E3F#, 16#006D#),
+      (16#1E40#, 16#004D#),
+      (16#1E41#, 16#006D#),
+      (16#1E42#, 16#004D#),
+      (16#1E43#, 16#006D#),
+      (16#1E44#, 16#004E#),
+      (16#1E45#, 16#006E#),
+      (16#1E46#, 16#004E#),
+      (16#1E47#, 16#006E#),
+      (16#1E48#, 16#004E#),
+      (16#1E49#, 16#006E#),
+      (16#1E4A#, 16#004E#),
+      (16#1E4B#, 16#006E#),
+      (16#1E4C#, 16#00D5#),
+      (16#1E4D#, 16#00F5#),
+      (16#1E4E#, 16#00D5#),
+      (16#1E4F#, 16#00F5#),
+      (16#1E50#, 16#014C#),
+      (16#1E51#, 16#014D#),
+      (16#1E52#, 16#014C#),
+      (16#1E53#, 16#014D#),
+      (16#1E54#, 16#0050#),
+      (16#1E55#, 16#0070#),
+      (16#1E56#, 16#0050#),
+      (16#1E57#, 16#0070#),
+      (16#1E58#, 16#0052#),
+      (16#1E59#, 16#0072#),
+      (16#1E5A#, 16#0052#),
+      (16#1E5B#, 16#0072#),
+      (16#1E5C#, 16#1E5A#),
+      (16#1E5D#, 16#1E5B#),
+      (16#1E5E#, 16#0052#),
+      (16#1E5F#, 16#0072#),
+      (16#1E60#, 16#0053#),
+      (16#1E61#, 16#0073#),
+      (16#1E62#, 16#0053#),
+      (16#1E63#, 16#0073#),
+      (16#1E64#, 16#015A#),
+      (16#1E65#, 16#015B#),
+      (16#1E66#, 16#0160#),
+      (16#1E67#, 16#0161#),
+      (16#1E68#, 16#1E62#),
+      (16#1E69#, 16#1E63#),
+      (16#1E6A#, 16#0054#),
+      (16#1E6B#, 16#0074#),
+      (16#1E6C#, 16#0054#),
+      (16#1E6D#, 16#0074#),
+      (16#1E6E#, 16#0054#),
+      (16#1E6F#, 16#0074#),
+      (16#1E70#, 16#0054#),
+      (16#1E71#, 16#0074#),
+      (16#1E72#, 16#0055#),
+      (16#1E73#, 16#0075#),
+      (16#1E74#, 16#0055#),
+      (16#1E75#, 16#0075#),
+      (16#1E76#, 16#0055#),
+      (16#1E77#, 16#0075#),
+      (16#1E78#, 16#0168#),
+      (16#1E79#, 16#0169#),
+      (16#1E7A#, 16#016A#),
+      (16#1E7B#, 16#016B#),
+      (16#1E7C#, 16#0056#),
+      (16#1E7D#, 16#0076#),
+      (16#1E7E#, 16#0056#),
+      (16#1E7F#, 16#0076#),
+      (16#1E80#, 16#0057#),
+      (16#1E81#, 16#0077#),
+      (16#1E82#, 16#0057#),
+      (16#1E83#, 16#0077#),
+      (16#1E84#, 16#0057#),
+      (16#1E85#, 16#0077#),
+      (16#1E86#, 16#0057#),
+      (16#1E87#, 16#0077#),
+      (16#1E88#, 16#0057#),
+      (16#1E89#, 16#0077#),
+      (16#1E8A#, 16#0058#),
+      (16#1E8B#, 16#0078#),
+      (16#1E8C#, 16#0058#),
+      (16#1E8D#, 16#0078#),
+      (16#1E8E#, 16#0059#),
+      (16#1E8F#, 16#0079#),
+      (16#1E90#, 16#005A#),
+      (16#1E91#, 16#007A#),
+      (16#1E92#, 16#005A#),
+      (16#1E93#, 16#007A#),
+      (16#1E94#, 16#005A#),
+      (16#1E95#, 16#007A#),
+      (16#1E96#, 16#0068#),
+      (16#1E97#, 16#0074#),
+      (16#1E98#, 16#0077#),
+      (16#1E99#, 16#0079#),
+      (16#1E9A#, 16#0061#),
+      (16#1E9B#, 16#017F#),
+      (16#1EA0#, 16#0041#),
+      (16#1EA1#, 16#0061#),
+      (16#1EA2#, 16#0041#),
+      (16#1EA3#, 16#0061#),
+      (16#1EA4#, 16#00C2#),
+      (16#1EA5#, 16#00E2#),
+      (16#1EA6#, 16#00C2#),
+      (16#1EA7#, 16#00E2#),
+      (16#1EA8#, 16#00C2#),
+      (16#1EA9#, 16#00E2#),
+      (16#1EAA#, 16#00C2#),
+      (16#1EAB#, 16#00E2#),
+      (16#1EAC#, 16#1EA0#),
+      (16#1EAD#, 16#1EA1#),
+      (16#1EAE#, 16#0102#),
+      (16#1EAF#, 16#0103#),
+      (16#1EB0#, 16#0102#),
+      (16#1EB1#, 16#0103#),
+      (16#1EB2#, 16#0102#),
+      (16#1EB3#, 16#0103#),
+      (16#1EB4#, 16#0102#),
+      (16#1EB5#, 16#0103#),
+      (16#1EB6#, 16#1EA0#),
+      (16#1EB7#, 16#1EA1#),
+      (16#1EB8#, 16#0045#),
+      (16#1EB9#, 16#0065#),
+      (16#1EBA#, 16#0045#),
+      (16#1EBB#, 16#0065#),
+      (16#1EBC#, 16#0045#),
+      (16#1EBD#, 16#0065#),
+      (16#1EBE#, 16#00CA#),
+      (16#1EBF#, 16#00EA#),
+      (16#1EC0#, 16#00CA#),
+      (16#1EC1#, 16#00EA#),
+      (16#1EC2#, 16#00CA#),
+      (16#1EC3#, 16#00EA#),
+      (16#1EC4#, 16#00CA#),
+      (16#1EC5#, 16#00EA#),
+      (16#1EC6#, 16#1EB8#),
+      (16#1EC7#, 16#1EB9#),
+      (16#1EC8#, 16#0049#),
+      (16#1EC9#, 16#0069#),
+      (16#1ECA#, 16#0049#),
+      (16#1ECB#, 16#0069#),
+      (16#1ECC#, 16#004F#),
+      (16#1ECD#, 16#006F#),
+      (16#1ECE#, 16#004F#),
+      (16#1ECF#, 16#006F#),
+      (16#1ED0#, 16#00D4#),
+      (16#1ED1#, 16#00F4#),
+      (16#1ED2#, 16#00D4#),
+      (16#1ED3#, 16#00F4#),
+      (16#1ED4#, 16#00D4#),
+      (16#1ED5#, 16#00F4#),
+      (16#1ED6#, 16#00D4#),
+      (16#1ED7#, 16#00F4#),
+      (16#1ED8#, 16#1ECC#),
+      (16#1ED9#, 16#1ECD#),
+      (16#1EDA#, 16#01A0#),
+      (16#1EDB#, 16#01A1#),
+      (16#1EDC#, 16#01A0#),
+      (16#1EDD#, 16#01A1#),
+      (16#1EDE#, 16#01A0#),
+      (16#1EDF#, 16#01A1#),
+      (16#1EE0#, 16#01A0#),
+      (16#1EE1#, 16#01A1#),
+      (16#1EE2#, 16#01A0#),
+      (16#1EE3#, 16#01A1#),
+      (16#1EE4#, 16#0055#),
+      (16#1EE5#, 16#0075#),
+      (16#1EE6#, 16#0055#),
+      (16#1EE7#, 16#0075#),
+      (16#1EE8#, 16#01AF#),
+      (16#1EE9#, 16#01B0#),
+      (16#1EEA#, 16#01AF#),
+      (16#1EEB#, 16#01B0#),
+      (16#1EEC#, 16#01AF#),
+      (16#1EED#, 16#01B0#),
+      (16#1EEE#, 16#01AF#),
+      (16#1EEF#, 16#01B0#),
+      (16#1EF0#, 16#01AF#),
+      (16#1EF1#, 16#01B0#),
+      (16#1EF2#, 16#0059#),
+      (16#1EF3#, 16#0079#),
+      (16#1EF4#, 16#0059#),
+      (16#1EF5#, 16#0079#),
+      (16#1EF6#, 16#0059#),
+      (16#1EF7#, 16#0079#),
+      (16#1EF8#, 16#0059#),
+      (16#1EF9#, 16#0079#),
+      (16#1F00#, 16#03B1#),
+      (16#1F01#, 16#03B1#),
+      (16#1F02#, 16#1F00#),
+      (16#1F03#, 16#1F01#),
+      (16#1F04#, 16#1F00#),
+      (16#1F05#, 16#1F01#),
+      (16#1F06#, 16#1F00#),
+      (16#1F07#, 16#1F01#),
+      (16#1F08#, 16#0391#),
+      (16#1F09#, 16#0391#),
+      (16#1F0A#, 16#1F08#),
+      (16#1F0B#, 16#1F09#),
+      (16#1F0C#, 16#1F08#),
+      (16#1F0D#, 16#1F09#),
+      (16#1F0E#, 16#1F08#),
+      (16#1F0F#, 16#1F09#),
+      (16#1F10#, 16#03B5#),
+      (16#1F11#, 16#03B5#),
+      (16#1F12#, 16#1F10#),
+      (16#1F13#, 16#1F11#),
+      (16#1F14#, 16#1F10#),
+      (16#1F15#, 16#1F11#),
+      (16#1F18#, 16#0395#),
+      (16#1F19#, 16#0395#),
+      (16#1F1A#, 16#1F18#),
+      (16#1F1B#, 16#1F19#),
+      (16#1F1C#, 16#1F18#),
+      (16#1F1D#, 16#1F19#),
+      (16#1F20#, 16#03B7#),
+      (16#1F21#, 16#03B7#),
+      (16#1F22#, 16#1F20#),
+      (16#1F23#, 16#1F21#),
+      (16#1F24#, 16#1F20#),
+      (16#1F25#, 16#1F21#),
+      (16#1F26#, 16#1F20#),
+      (16#1F27#, 16#1F21#),
+      (16#1F28#, 16#0397#),
+      (16#1F29#, 16#0397#),
+      (16#1F2A#, 16#1F28#),
+      (16#1F2B#, 16#1F29#),
+      (16#1F2C#, 16#1F28#),
+      (16#1F2D#, 16#1F29#),
+      (16#1F2E#, 16#1F28#),
+      (16#1F2F#, 16#1F29#),
+      (16#1F30#, 16#03B9#),
+      (16#1F31#, 16#03B9#),
+      (16#1F32#, 16#1F30#),
+      (16#1F33#, 16#1F31#),
+      (16#1F34#, 16#1F30#),
+      (16#1F35#, 16#1F31#),
+      (16#1F36#, 16#1F30#),
+      (16#1F37#, 16#1F31#),
+      (16#1F38#, 16#0399#),
+      (16#1F39#, 16#0399#),
+      (16#1F3A#, 16#1F38#),
+      (16#1F3B#, 16#1F39#),
+      (16#1F3C#, 16#1F38#),
+      (16#1F3D#, 16#1F39#),
+      (16#1F3E#, 16#1F38#),
+      (16#1F3F#, 16#1F39#),
+      (16#1F40#, 16#03BF#),
+      (16#1F41#, 16#03BF#),
+      (16#1F42#, 16#1F40#),
+      (16#1F43#, 16#1F41#),
+      (16#1F44#, 16#1F40#),
+      (16#1F45#, 16#1F41#),
+      (16#1F48#, 16#039F#),
+      (16#1F49#, 16#039F#),
+      (16#1F4A#, 16#1F48#),
+      (16#1F4B#, 16#1F49#),
+      (16#1F4C#, 16#1F48#),
+      (16#1F4D#, 16#1F49#),
+      (16#1F50#, 16#03C5#),
+      (16#1F51#, 16#03C5#),
+      (16#1F52#, 16#1F50#),
+      (16#1F53#, 16#1F51#),
+      (16#1F54#, 16#1F50#),
+      (16#1F55#, 16#1F51#),
+      (16#1F56#, 16#1F50#),
+      (16#1F57#, 16#1F51#),
+      (16#1F59#, 16#03A5#),
+      (16#1F5B#, 16#1F59#),
+      (16#1F5D#, 16#1F59#),
+      (16#1F5F#, 16#1F59#),
+      (16#1F60#, 16#03C9#),
+      (16#1F61#, 16#03C9#),
+      (16#1F62#, 16#1F60#),
+      (16#1F63#, 16#1F61#),
+      (16#1F64#, 16#1F60#),
+      (16#1F65#, 16#1F61#),
+      (16#1F66#, 16#1F60#),
+      (16#1F67#, 16#1F61#),
+      (16#1F68#, 16#03A9#),
+      (16#1F69#, 16#03A9#),
+      (16#1F6A#, 16#1F68#),
+      (16#1F6B#, 16#1F69#),
+      (16#1F6C#, 16#1F68#),
+      (16#1F6D#, 16#1F69#),
+      (16#1F6E#, 16#1F68#),
+      (16#1F6F#, 16#1F69#),
+      (16#1F70#, 16#03B1#),
+      (16#1F71#, 16#03AC#),
+      (16#1F72#, 16#03B5#),
+      (16#1F73#, 16#03AD#),
+      (16#1F74#, 16#03B7#),
+      (16#1F75#, 16#03AE#),
+      (16#1F76#, 16#03B9#),
+      (16#1F77#, 16#03AF#),
+      (16#1F78#, 16#03BF#),
+      (16#1F79#, 16#03CC#),
+      (16#1F7A#, 16#03C5#),
+      (16#1F7B#, 16#03CD#),
+      (16#1F7C#, 16#03C9#),
+      (16#1F7D#, 16#03CE#),
+      (16#1F80#, 16#1F00#),
+      (16#1F81#, 16#1F01#),
+      (16#1F82#, 16#1F02#),
+      (16#1F83#, 16#1F03#),
+      (16#1F84#, 16#1F04#),
+      (16#1F85#, 16#1F05#),
+      (16#1F86#, 16#1F06#),
+      (16#1F87#, 16#1F07#),
+      (16#1F88#, 16#1F08#),
+      (16#1F89#, 16#1F09#),
+      (16#1F8A#, 16#1F0A#),
+      (16#1F8B#, 16#1F0B#),
+      (16#1F8C#, 16#1F0C#),
+      (16#1F8D#, 16#1F0D#),
+      (16#1F8E#, 16#1F0E#),
+      (16#1F8F#, 16#1F0F#),
+      (16#1F90#, 16#1F20#),
+      (16#1F91#, 16#1F21#),
+      (16#1F92#, 16#1F22#),
+      (16#1F93#, 16#1F23#),
+      (16#1F94#, 16#1F24#),
+      (16#1F95#, 16#1F25#),
+      (16#1F96#, 16#1F26#),
+      (16#1F97#, 16#1F27#),
+      (16#1F98#, 16#1F28#),
+      (16#1F99#, 16#1F29#),
+      (16#1F9A#, 16#1F2A#),
+      (16#1F9B#, 16#1F2B#),
+      (16#1F9C#, 16#1F2C#),
+      (16#1F9D#, 16#1F2D#),
+      (16#1F9E#, 16#1F2E#),
+      (16#1F9F#, 16#1F2F#),
+      (16#1FA0#, 16#1F60#),
+      (16#1FA1#, 16#1F61#),
+      (16#1FA2#, 16#1F62#),
+      (16#1FA3#, 16#1F63#),
+      (16#1FA4#, 16#1F64#),
+      (16#1FA5#, 16#1F65#),
+      (16#1FA6#, 16#1F66#),
+      (16#1FA7#, 16#1F67#),
+      (16#1FA8#, 16#1F68#),
+      (16#1FA9#, 16#1F69#),
+      (16#1FAA#, 16#1F6A#),
+      (16#1FAB#, 16#1F6B#),
+      (16#1FAC#, 16#1F6C#),
+      (16#1FAD#, 16#1F6D#),
+      (16#1FAE#, 16#1F6E#),
+      (16#1FAF#, 16#1F6F#),
+      (16#1FB0#, 16#03B1#),
+      (16#1FB1#, 16#03B1#),
+      (16#1FB2#, 16#1F70#),
+      (16#1FB3#, 16#03B1#),
+      (16#1FB4#, 16#03AC#),
+      (16#1FB6#, 16#03B1#),
+      (16#1FB7#, 16#1FB6#),
+      (16#1FB8#, 16#0391#),
+      (16#1FB9#, 16#0391#),
+      (16#1FBA#, 16#0391#),
+      (16#1FBB#, 16#0386#),
+      (16#1FBC#, 16#0391#),
+      (16#1FBD#, 16#0020#),
+      (16#1FBE#, 16#03B9#),
+      (16#1FBF#, 16#0020#),
+      (16#1FC0#, 16#0020#),
+      (16#1FC1#, 16#00A8#),
+      (16#1FC2#, 16#1F74#),
+      (16#1FC3#, 16#03B7#),
+      (16#1FC4#, 16#03AE#),
+      (16#1FC6#, 16#03B7#),
+      (16#1FC7#, 16#1FC6#),
+      (16#1FC8#, 16#0395#),
+      (16#1FC9#, 16#0388#),
+      (16#1FCA#, 16#0397#),
+      (16#1FCB#, 16#0389#),
+      (16#1FCC#, 16#0397#),
+      (16#1FCD#, 16#1FBF#),
+      (16#1FCE#, 16#1FBF#),
+      (16#1FCF#, 16#1FBF#),
+      (16#1FD0#, 16#03B9#),
+      (16#1FD1#, 16#03B9#),
+      (16#1FD2#, 16#03CA#),
+      (16#1FD3#, 16#0390#),
+      (16#1FD6#, 16#03B9#),
+      (16#1FD7#, 16#03CA#),
+      (16#1FD8#, 16#0399#),
+      (16#1FD9#, 16#0399#),
+      (16#1FDA#, 16#0399#),
+      (16#1FDB#, 16#038A#),
+      (16#1FDD#, 16#1FFE#),
+      (16#1FDE#, 16#1FFE#),
+      (16#1FDF#, 16#1FFE#),
+      (16#1FE0#, 16#03C5#),
+      (16#1FE1#, 16#03C5#),
+      (16#1FE2#, 16#03CB#),
+      (16#1FE3#, 16#03B0#),
+      (16#1FE4#, 16#03C1#),
+      (16#1FE5#, 16#03C1#),
+      (16#1FE6#, 16#03C5#),
+      (16#1FE7#, 16#03CB#),
+      (16#1FE8#, 16#03A5#),
+      (16#1FE9#, 16#03A5#),
+      (16#1FEA#, 16#03A5#),
+      (16#1FEB#, 16#038E#),
+      (16#1FEC#, 16#03A1#),
+      (16#1FED#, 16#00A8#),
+      (16#1FEE#, 16#0385#),
+      (16#1FEF#, 16#0060#),
+      (16#1FF2#, 16#1F7C#),
+      (16#1FF3#, 16#03C9#),
+      (16#1FF4#, 16#03CE#),
+      (16#1FF6#, 16#03C9#),
+      (16#1FF7#, 16#1FF6#),
+      (16#1FF8#, 16#039F#),
+      (16#1FF9#, 16#038C#),
+      (16#1FFA#, 16#03A9#),
+      (16#1FFB#, 16#038F#),
+      (16#1FFC#, 16#03A9#),
+      (16#1FFD#, 16#00B4#),
+      (16#1FFE#, 16#0020#),
+      (16#2000#, 16#2002#),
+      (16#2001#, 16#2003#),
+      (16#2002#, 16#0020#),
+      (16#2003#, 16#0020#),
+      (16#2004#, 16#0020#),
+      (16#2005#, 16#0020#),
+      (16#2006#, 16#0020#),
+      (16#2007#, 16#0020#),
+      (16#2008#, 16#0020#),
+      (16#2009#, 16#0020#),
+      (16#200A#, 16#0020#),
+      (16#2011#, 16#2010#),
+      (16#2017#, 16#0020#),
+      (16#2024#, 16#002E#),
+      (16#2025#, 16#002E#),
+      (16#2026#, 16#002E#),
+      (16#202F#, 16#0020#),
+      (16#2033#, 16#2032#),
+      (16#2034#, 16#2032#),
+      (16#2036#, 16#2035#),
+      (16#2037#, 16#2035#),
+      (16#203C#, 16#0021#),
+      (16#203E#, 16#0020#),
+      (16#2047#, 16#003F#),
+      (16#2048#, 16#003F#),
+      (16#2049#, 16#0021#),
+      (16#2057#, 16#2032#),
+      (16#205F#, 16#0020#),
+      (16#2070#, 16#0030#),
+      (16#2071#, 16#0069#),
+      (16#2074#, 16#0034#),
+      (16#2075#, 16#0035#),
+      (16#2076#, 16#0036#),
+      (16#2077#, 16#0037#),
+      (16#2078#, 16#0038#),
+      (16#2079#, 16#0039#),
+      (16#207A#, 16#002B#),
+      (16#207B#, 16#2212#),
+      (16#207C#, 16#003D#),
+      (16#207D#, 16#0028#),
+      (16#207E#, 16#0029#),
+      (16#207F#, 16#006E#),
+      (16#2080#, 16#0030#),
+      (16#2081#, 16#0031#),
+      (16#2082#, 16#0032#),
+      (16#2083#, 16#0033#),
+      (16#2084#, 16#0034#),
+      (16#2085#, 16#0035#),
+      (16#2086#, 16#0036#),
+      (16#2087#, 16#0037#),
+      (16#2088#, 16#0038#),
+      (16#2089#, 16#0039#),
+      (16#208A#, 16#002B#),
+      (16#208B#, 16#2212#),
+      (16#208C#, 16#003D#),
+      (16#208D#, 16#0028#),
+      (16#208E#, 16#0029#),
+      (16#2090#, 16#0061#),
+      (16#2091#, 16#0065#),
+      (16#2092#, 16#006F#),
+      (16#2093#, 16#0078#),
+      (16#2094#, 16#0259#),
+      (16#2095#, 16#0068#),
+      (16#2096#, 16#006B#),
+      (16#2097#, 16#006C#),
+      (16#2098#, 16#006D#),
+      (16#2099#, 16#006E#),
+      (16#209A#, 16#0070#),
+      (16#209B#, 16#0073#),
+      (16#209C#, 16#0074#),
+      (16#20A8#, 16#0052#),
+      (16#2100#, 16#0061#),
+      (16#2101#, 16#0061#),
+      (16#2102#, 16#0043#),
+      (16#2103#, 16#00B0#),
+      (16#2105#, 16#0063#),
+      (16#2106#, 16#0063#),
+      (16#2107#, 16#0190#),
+      (16#2109#, 16#00B0#),
+      (16#210A#, 16#0067#),
+      (16#210B#, 16#0048#),
+      (16#210C#, 16#0048#),
+      (16#210D#, 16#0048#),
+      (16#210E#, 16#0068#),
+      (16#210F#, 16#0127#),
+      (16#2110#, 16#0049#),
+      (16#2111#, 16#0049#),
+      (16#2112#, 16#004C#),
+      (16#2113#, 16#006C#),
+      (16#2115#, 16#004E#),
+      (16#2116#, 16#004E#),
+      (16#2119#, 16#0050#),
+      (16#211A#, 16#0051#),
+      (16#211B#, 16#0052#),
+      (16#211C#, 16#0052#),
+      (16#211D#, 16#0052#),
+      (16#2120#, 16#0053#),
+      (16#2121#, 16#0054#),
+      (16#2122#, 16#0054#),
+      (16#2124#, 16#005A#),
+      (16#2126#, 16#03A9#),
+      (16#2128#, 16#005A#),
+      (16#212A#, 16#004B#),
+      (16#212B#, 16#00C5#),
+      (16#212C#, 16#0042#),
+      (16#212D#, 16#0043#),
+      (16#212F#, 16#0065#),
+      (16#2130#, 16#0045#),
+      (16#2131#, 16#0046#),
+      (16#2133#, 16#004D#),
+      (16#2134#, 16#006F#),
+      (16#2135#, 16#05D0#),
+      (16#2136#, 16#05D1#),
+      (16#2137#, 16#05D2#),
+      (16#2138#, 16#05D3#),
+      (16#2139#, 16#0069#),
+      (16#213B#, 16#0046#),
+      (16#213C#, 16#03C0#),
+      (16#213D#, 16#03B3#),
+      (16#213E#, 16#0393#),
+      (16#213F#, 16#03A0#),
+      (16#2140#, 16#2211#),
+      (16#2145#, 16#0044#),
+      (16#2146#, 16#0064#),
+      (16#2147#, 16#0065#),
+      (16#2148#, 16#0069#),
+      (16#2149#, 16#006A#),
+      (16#2150#, 16#0031#),
+      (16#2151#, 16#0031#),
+      (16#2152#, 16#0031#),
+      (16#2153#, 16#0031#),
+      (16#2154#, 16#0032#),
+      (16#2155#, 16#0031#),
+      (16#2156#, 16#0032#),
+      (16#2157#, 16#0033#),
+      (16#2158#, 16#0034#),
+      (16#2159#, 16#0031#),
+      (16#215A#, 16#0035#),
+      (16#215B#, 16#0031#),
+      (16#215C#, 16#0033#),
+      (16#215D#, 16#0035#),
+      (16#215E#, 16#0037#),
+      (16#215F#, 16#0031#),
+      (16#2160#, 16#0049#),
+      (16#2161#, 16#0049#),
+      (16#2162#, 16#0049#),
+      (16#2163#, 16#0049#),
+      (16#2164#, 16#0056#),
+      (16#2165#, 16#0056#),
+      (16#2166#, 16#0056#),
+      (16#2167#, 16#0056#),
+      (16#2168#, 16#0049#),
+      (16#2169#, 16#0058#),
+      (16#216A#, 16#0058#),
+      (16#216B#, 16#0058#),
+      (16#216C#, 16#004C#),
+      (16#216D#, 16#0043#),
+      (16#216E#, 16#0044#),
+      (16#216F#, 16#004D#),
+      (16#2170#, 16#0069#),
+      (16#2171#, 16#0069#),
+      (16#2172#, 16#0069#),
+      (16#2173#, 16#0069#),
+      (16#2174#, 16#0076#),
+      (16#2175#, 16#0076#),
+      (16#2176#, 16#0076#),
+      (16#2177#, 16#0076#),
+      (16#2178#, 16#0069#),
+      (16#2179#, 16#0078#),
+      (16#217A#, 16#0078#),
+      (16#217B#, 16#0078#),
+      (16#217C#, 16#006C#),
+      (16#217D#, 16#0063#),
+      (16#217E#, 16#0064#),
+      (16#217F#, 16#006D#),
+      (16#2189#, 16#0030#),
+      (16#219A#, 16#2190#),
+      (16#219B#, 16#2192#),
+      (16#21AE#, 16#2194#),
+      (16#21CD#, 16#21D0#),
+      (16#21CE#, 16#21D4#),
+      (16#21CF#, 16#21D2#),
+      (16#2204#, 16#2203#),
+      (16#2209#, 16#2208#),
+      (16#220C#, 16#220B#),
+      (16#2224#, 16#2223#),
+      (16#2226#, 16#2225#),
+      (16#222C#, 16#222B#),
+      (16#222D#, 16#222B#),
+      (16#222F#, 16#222E#),
+      (16#2230#, 16#222E#),
+      (16#2241#, 16#223C#),
+      (16#2244#, 16#2243#),
+      (16#2247#, 16#2245#),
+      (16#2249#, 16#2248#),
+      (16#2260#, 16#003D#),
+      (16#2262#, 16#2261#),
+      (16#226D#, 16#224D#),
+      (16#226E#, 16#003C#),
+      (16#226F#, 16#003E#),
+      (16#2270#, 16#2264#),
+      (16#2271#, 16#2265#),
+      (16#2274#, 16#2272#),
+      (16#2275#, 16#2273#),
+      (16#2278#, 16#2276#),
+      (16#2279#, 16#2277#),
+      (16#2280#, 16#227A#),
+      (16#2281#, 16#227B#),
+      (16#2284#, 16#2282#),
+      (16#2285#, 16#2283#),
+      (16#2288#, 16#2286#),
+      (16#2289#, 16#2287#),
+      (16#22AC#, 16#22A2#),
+      (16#22AD#, 16#22A8#),
+      (16#22AE#, 16#22A9#),
+      (16#22AF#, 16#22AB#),
+      (16#22E0#, 16#227C#),
+      (16#22E1#, 16#227D#),
+      (16#22E2#, 16#2291#),
+      (16#22E3#, 16#2292#),
+      (16#22EA#, 16#22B2#),
+      (16#22EB#, 16#22B3#),
+      (16#22EC#, 16#22B4#),
+      (16#22ED#, 16#22B5#),
+      (16#2329#, 16#3008#),
+      (16#232A#, 16#3009#),
+      (16#2460#, 16#0031#),
+      (16#2461#, 16#0032#),
+      (16#2462#, 16#0033#),
+      (16#2463#, 16#0034#),
+      (16#2464#, 16#0035#),
+      (16#2465#, 16#0036#),
+      (16#2466#, 16#0037#),
+      (16#2467#, 16#0038#),
+      (16#2468#, 16#0039#),
+      (16#2469#, 16#0031#),
+      (16#246A#, 16#0031#),
+      (16#246B#, 16#0031#),
+      (16#246C#, 16#0031#),
+      (16#246D#, 16#0031#),
+      (16#246E#, 16#0031#),
+      (16#246F#, 16#0031#),
+      (16#2470#, 16#0031#),
+      (16#2471#, 16#0031#),
+      (16#2472#, 16#0031#),
+      (16#2473#, 16#0032#),
+      (16#2474#, 16#0028#),
+      (16#2475#, 16#0028#),
+      (16#2476#, 16#0028#),
+      (16#2477#, 16#0028#),
+      (16#2478#, 16#0028#),
+      (16#2479#, 16#0028#),
+      (16#247A#, 16#0028#),
+      (16#247B#, 16#0028#),
+      (16#247C#, 16#0028#),
+      (16#247D#, 16#0028#),
+      (16#247E#, 16#0028#),
+      (16#247F#, 16#0028#),
+      (16#2480#, 16#0028#),
+      (16#2481#, 16#0028#),
+      (16#2482#, 16#0028#),
+      (16#2483#, 16#0028#),
+      (16#2484#, 16#0028#),
+      (16#2485#, 16#0028#),
+      (16#2486#, 16#0028#),
+      (16#2487#, 16#0028#),
+      (16#2488#, 16#0031#),
+      (16#2489#, 16#0032#),
+      (16#248A#, 16#0033#),
+      (16#248B#, 16#0034#),
+      (16#248C#, 16#0035#),
+      (16#248D#, 16#0036#),
+      (16#248E#, 16#0037#),
+      (16#248F#, 16#0038#),
+      (16#2490#, 16#0039#),
+      (16#2491#, 16#0031#),
+      (16#2492#, 16#0031#),
+      (16#2493#, 16#0031#),
+      (16#2494#, 16#0031#),
+      (16#2495#, 16#0031#),
+      (16#2496#, 16#0031#),
+      (16#2497#, 16#0031#),
+      (16#2498#, 16#0031#),
+      (16#2499#, 16#0031#),
+      (16#249A#, 16#0031#),
+      (16#249B#, 16#0032#),
+      (16#249C#, 16#0028#),
+      (16#249D#, 16#0028#),
+      (16#249E#, 16#0028#),
+      (16#249F#, 16#0028#),
+      (16#24A0#, 16#0028#),
+      (16#24A1#, 16#0028#),
+      (16#24A2#, 16#0028#),
+      (16#24A3#, 16#0028#),
+      (16#24A4#, 16#0028#),
+      (16#24A5#, 16#0028#),
+      (16#24A6#, 16#0028#),
+      (16#24A7#, 16#0028#),
+      (16#24A8#, 16#0028#),
+      (16#24A9#, 16#0028#),
+      (16#24AA#, 16#0028#),
+      (16#24AB#, 16#0028#),
+      (16#24AC#, 16#0028#),
+      (16#24AD#, 16#0028#),
+      (16#24AE#, 16#0028#),
+      (16#24AF#, 16#0028#),
+      (16#24B0#, 16#0028#),
+      (16#24B1#, 16#0028#),
+      (16#24B2#, 16#0028#),
+      (16#24B3#, 16#0028#),
+      (16#24B4#, 16#0028#),
+      (16#24B5#, 16#0028#),
+      (16#24B6#, 16#0041#),
+      (16#24B7#, 16#0042#),
+      (16#24B8#, 16#0043#),
+      (16#24B9#, 16#0044#),
+      (16#24BA#, 16#0045#),
+      (16#24BB#, 16#0046#),
+      (16#24BC#, 16#0047#),
+      (16#24BD#, 16#0048#),
+      (16#24BE#, 16#0049#),
+      (16#24BF#, 16#004A#),
+      (16#24C0#, 16#004B#),
+      (16#24C1#, 16#004C#),
+      (16#24C2#, 16#004D#),
+      (16#24C3#, 16#004E#),
+      (16#24C4#, 16#004F#),
+      (16#24C5#, 16#0050#),
+      (16#24C6#, 16#0051#),
+      (16#24C7#, 16#0052#),
+      (16#24C8#, 16#0053#),
+      (16#24C9#, 16#0054#),
+      (16#24CA#, 16#0055#),
+      (16#24CB#, 16#0056#),
+      (16#24CC#, 16#0057#),
+      (16#24CD#, 16#0058#),
+      (16#24CE#, 16#0059#),
+      (16#24CF#, 16#005A#),
+      (16#24D0#, 16#0061#),
+      (16#24D1#, 16#0062#),
+      (16#24D2#, 16#0063#),
+      (16#24D3#, 16#0064#),
+      (16#24D4#, 16#0065#),
+      (16#24D5#, 16#0066#),
+      (16#24D6#, 16#0067#),
+      (16#24D7#, 16#0068#),
+      (16#24D8#, 16#0069#),
+      (16#24D9#, 16#006A#),
+      (16#24DA#, 16#006B#),
+      (16#24DB#, 16#006C#),
+      (16#24DC#, 16#006D#),
+      (16#24DD#, 16#006E#),
+      (16#24DE#, 16#006F#),
+      (16#24DF#, 16#0070#),
+      (16#24E0#, 16#0071#),
+      (16#24E1#, 16#0072#),
+      (16#24E2#, 16#0073#),
+      (16#24E3#, 16#0074#),
+      (16#24E4#, 16#0075#),
+      (16#24E5#, 16#0076#),
+      (16#24E6#, 16#0077#),
+      (16#24E7#, 16#0078#),
+      (16#24E8#, 16#0079#),
+      (16#24E9#, 16#007A#),
+      (16#24EA#, 16#0030#),
+      (16#2A0C#, 16#222B#),
+      (16#2A74#, 16#003A#),
+      (16#2A75#, 16#003D#),
+      (16#2A76#, 16#003D#),
+      (16#2ADC#, 16#2ADD#),
+      (16#2C7C#, 16#006A#),
+      (16#2C7D#, 16#0056#),
+      (16#2D6F#, 16#2D61#),
+      (16#2E9F#, 16#6BCD#),
+      (16#2EF3#, 16#9F9F#),
+      (16#2F00#, 16#4E00#),
+      (16#2F01#, 16#4E28#),
+      (16#2F02#, 16#4E36#),
+      (16#2F03#, 16#4E3F#),
+      (16#2F04#, 16#4E59#),
+      (16#2F05#, 16#4E85#),
+      (16#2F06#, 16#4E8C#),
+      (16#2F07#, 16#4EA0#),
+      (16#2F08#, 16#4EBA#),
+      (16#2F09#, 16#513F#),
+      (16#2F0A#, 16#5165#),
+      (16#2F0B#, 16#516B#),
+      (16#2F0C#, 16#5182#),
+      (16#2F0D#, 16#5196#),
+      (16#2F0E#, 16#51AB#),
+      (16#2F0F#, 16#51E0#),
+      (16#2F10#, 16#51F5#),
+      (16#2F11#, 16#5200#),
+      (16#2F12#, 16#529B#),
+      (16#2F13#, 16#52F9#),
+      (16#2F14#, 16#5315#),
+      (16#2F15#, 16#531A#),
+      (16#2F16#, 16#5338#),
+      (16#2F17#, 16#5341#),
+      (16#2F18#, 16#535C#),
+      (16#2F19#, 16#5369#),
+      (16#2F1A#, 16#5382#),
+      (16#2F1B#, 16#53B6#),
+      (16#2F1C#, 16#53C8#),
+      (16#2F1D#, 16#53E3#),
+      (16#2F1E#, 16#56D7#),
+      (16#2F1F#, 16#571F#),
+      (16#2F20#, 16#58EB#),
+      (16#2F21#, 16#5902#),
+      (16#2F22#, 16#590A#),
+      (16#2F23#, 16#5915#),
+      (16#2F24#, 16#5927#),
+      (16#2F25#, 16#5973#),
+      (16#2F26#, 16#5B50#),
+      (16#2F27#, 16#5B80#),
+      (16#2F28#, 16#5BF8#),
+      (16#2F29#, 16#5C0F#),
+      (16#2F2A#, 16#5C22#),
+      (16#2F2B#, 16#5C38#),
+      (16#2F2C#, 16#5C6E#),
+      (16#2F2D#, 16#5C71#),
+      (16#2F2E#, 16#5DDB#),
+      (16#2F2F#, 16#5DE5#),
+      (16#2F30#, 16#5DF1#),
+      (16#2F31#, 16#5DFE#),
+      (16#2F32#, 16#5E72#),
+      (16#2F33#, 16#5E7A#),
+      (16#2F34#, 16#5E7F#),
+      (16#2F35#, 16#5EF4#),
+      (16#2F36#, 16#5EFE#),
+      (16#2F37#, 16#5F0B#),
+      (16#2F38#, 16#5F13#),
+      (16#2F39#, 16#5F50#),
+      (16#2F3A#, 16#5F61#),
+      (16#2F3B#, 16#5F73#),
+      (16#2F3C#, 16#5FC3#),
+      (16#2F3D#, 16#6208#),
+      (16#2F3E#, 16#6236#),
+      (16#2F3F#, 16#624B#),
+      (16#2F40#, 16#652F#),
+      (16#2F41#, 16#6534#),
+      (16#2F42#, 16#6587#),
+      (16#2F43#, 16#6597#),
+      (16#2F44#, 16#65A4#),
+      (16#2F45#, 16#65B9#),
+      (16#2F46#, 16#65E0#),
+      (16#2F47#, 16#65E5#),
+      (16#2F48#, 16#66F0#),
+      (16#2F49#, 16#6708#),
+      (16#2F4A#, 16#6728#),
+      (16#2F4B#, 16#6B20#),
+      (16#2F4C#, 16#6B62#),
+      (16#2F4D#, 16#6B79#),
+      (16#2F4E#, 16#6BB3#),
+      (16#2F4F#, 16#6BCB#),
+      (16#2F50#, 16#6BD4#),
+      (16#2F51#, 16#6BDB#),
+      (16#2F52#, 16#6C0F#),
+      (16#2F53#, 16#6C14#),
+      (16#2F54#, 16#6C34#),
+      (16#2F55#, 16#706B#),
+      (16#2F56#, 16#722A#),
+      (16#2F57#, 16#7236#),
+      (16#2F58#, 16#723B#),
+      (16#2F59#, 16#723F#),
+      (16#2F5A#, 16#7247#),
+      (16#2F5B#, 16#7259#),
+      (16#2F5C#, 16#725B#),
+      (16#2F5D#, 16#72AC#),
+      (16#2F5E#, 16#7384#),
+      (16#2F5F#, 16#7389#),
+      (16#2F60#, 16#74DC#),
+      (16#2F61#, 16#74E6#),
+      (16#2F62#, 16#7518#),
+      (16#2F63#, 16#751F#),
+      (16#2F64#, 16#7528#),
+      (16#2F65#, 16#7530#),
+      (16#2F66#, 16#758B#),
+      (16#2F67#, 16#7592#),
+      (16#2F68#, 16#7676#),
+      (16#2F69#, 16#767D#),
+      (16#2F6A#, 16#76AE#),
+      (16#2F6B#, 16#76BF#),
+      (16#2F6C#, 16#76EE#),
+      (16#2F6D#, 16#77DB#),
+      (16#2F6E#, 16#77E2#),
+      (16#2F6F#, 16#77F3#),
+      (16#2F70#, 16#793A#),
+      (16#2F71#, 16#79B8#),
+      (16#2F72#, 16#79BE#),
+      (16#2F73#, 16#7A74#),
+      (16#2F74#, 16#7ACB#),
+      (16#2F75#, 16#7AF9#),
+      (16#2F76#, 16#7C73#),
+      (16#2F77#, 16#7CF8#),
+      (16#2F78#, 16#7F36#),
+      (16#2F79#, 16#7F51#),
+      (16#2F7A#, 16#7F8A#),
+      (16#2F7B#, 16#7FBD#),
+      (16#2F7C#, 16#8001#),
+      (16#2F7D#, 16#800C#),
+      (16#2F7E#, 16#8012#),
+      (16#2F7F#, 16#8033#),
+      (16#2F80#, 16#807F#),
+      (16#2F81#, 16#8089#),
+      (16#2F82#, 16#81E3#),
+      (16#2F83#, 16#81EA#),
+      (16#2F84#, 16#81F3#),
+      (16#2F85#, 16#81FC#),
+      (16#2F86#, 16#820C#),
+      (16#2F87#, 16#821B#),
+      (16#2F88#, 16#821F#),
+      (16#2F89#, 16#826E#),
+      (16#2F8A#, 16#8272#),
+      (16#2F8B#, 16#8278#),
+      (16#2F8C#, 16#864D#),
+      (16#2F8D#, 16#866B#),
+      (16#2F8E#, 16#8840#),
+      (16#2F8F#, 16#884C#),
+      (16#2F90#, 16#8863#),
+      (16#2F91#, 16#897E#),
+      (16#2F92#, 16#898B#),
+      (16#2F93#, 16#89D2#),
+      (16#2F94#, 16#8A00#),
+      (16#2F95#, 16#8C37#),
+      (16#2F96#, 16#8C46#),
+      (16#2F97#, 16#8C55#),
+      (16#2F98#, 16#8C78#),
+      (16#2F99#, 16#8C9D#),
+      (16#2F9A#, 16#8D64#),
+      (16#2F9B#, 16#8D70#),
+      (16#2F9C#, 16#8DB3#),
+      (16#2F9D#, 16#8EAB#),
+      (16#2F9E#, 16#8ECA#),
+      (16#2F9F#, 16#8F9B#),
+      (16#2FA0#, 16#8FB0#),
+      (16#2FA1#, 16#8FB5#),
+      (16#2FA2#, 16#9091#),
+      (16#2FA3#, 16#9149#),
+      (16#2FA4#, 16#91C6#),
+      (16#2FA5#, 16#91CC#),
+      (16#2FA6#, 16#91D1#),
+      (16#2FA7#, 16#9577#),
+      (16#2FA8#, 16#9580#),
+      (16#2FA9#, 16#961C#),
+      (16#2FAA#, 16#96B6#),
+      (16#2FAB#, 16#96B9#),
+      (16#2FAC#, 16#96E8#),
+      (16#2FAD#, 16#9751#),
+      (16#2FAE#, 16#975E#),
+      (16#2FAF#, 16#9762#),
+      (16#2FB0#, 16#9769#),
+      (16#2FB1#, 16#97CB#),
+      (16#2FB2#, 16#97ED#),
+      (16#2FB3#, 16#97F3#),
+      (16#2FB4#, 16#9801#),
+      (16#2FB5#, 16#98A8#),
+      (16#2FB6#, 16#98DB#),
+      (16#2FB7#, 16#98DF#),
+      (16#2FB8#, 16#9996#),
+      (16#2FB9#, 16#9999#),
+      (16#2FBA#, 16#99AC#),
+      (16#2FBB#, 16#9AA8#),
+      (16#2FBC#, 16#9AD8#),
+      (16#2FBD#, 16#9ADF#),
+      (16#2FBE#, 16#9B25#),
+      (16#2FBF#, 16#9B2F#),
+      (16#2FC0#, 16#9B32#),
+      (16#2FC1#, 16#9B3C#),
+      (16#2FC2#, 16#9B5A#),
+      (16#2FC3#, 16#9CE5#),
+      (16#2FC4#, 16#9E75#),
+      (16#2FC5#, 16#9E7F#),
+      (16#2FC6#, 16#9EA5#),
+      (16#2FC7#, 16#9EBB#),
+      (16#2FC8#, 16#9EC3#),
+      (16#2FC9#, 16#9ECD#),
+      (16#2FCA#, 16#9ED1#),
+      (16#2FCB#, 16#9EF9#),
+      (16#2FCC#, 16#9EFD#),
+      (16#2FCD#, 16#9F0E#),
+      (16#2FCE#, 16#9F13#),
+      (16#2FCF#, 16#9F20#),
+      (16#2FD0#, 16#9F3B#),
+      (16#2FD1#, 16#9F4A#),
+      (16#2FD2#, 16#9F52#),
+      (16#2FD3#, 16#9F8D#),
+      (16#2FD4#, 16#9F9C#),
+      (16#2FD5#, 16#9FA0#),
+      (16#3000#, 16#0020#),
+      (16#3036#, 16#3012#),
+      (16#3038#, 16#5341#),
+      (16#3039#, 16#5344#),
+      (16#303A#, 16#5345#),
+      (16#304C#, 16#304B#),
+      (16#304E#, 16#304D#),
+      (16#3050#, 16#304F#),
+      (16#3052#, 16#3051#),
+      (16#3054#, 16#3053#),
+      (16#3056#, 16#3055#),
+      (16#3058#, 16#3057#),
+      (16#305A#, 16#3059#),
+      (16#305C#, 16#305B#),
+      (16#305E#, 16#305D#),
+      (16#3060#, 16#305F#),
+      (16#3062#, 16#3061#),
+      (16#3065#, 16#3064#),
+      (16#3067#, 16#3066#),
+      (16#3069#, 16#3068#),
+      (16#3070#, 16#306F#),
+      (16#3071#, 16#306F#),
+      (16#3073#, 16#3072#),
+      (16#3074#, 16#3072#),
+      (16#3076#, 16#3075#),
+      (16#3077#, 16#3075#),
+      (16#3079#, 16#3078#),
+      (16#307A#, 16#3078#),
+      (16#307C#, 16#307B#),
+      (16#307D#, 16#307B#),
+      (16#3094#, 16#3046#),
+      (16#309B#, 16#0020#),
+      (16#309C#, 16#0020#),
+      (16#309E#, 16#309D#),
+      (16#309F#, 16#3088#),
+      (16#30AC#, 16#30AB#),
+      (16#30AE#, 16#30AD#),
+      (16#30B0#, 16#30AF#),
+      (16#30B2#, 16#30B1#),
+      (16#30B4#, 16#30B3#),
+      (16#30B6#, 16#30B5#),
+      (16#30B8#, 16#30B7#),
+      (16#30BA#, 16#30B9#),
+      (16#30BC#, 16#30BB#),
+      (16#30BE#, 16#30BD#),
+      (16#30C0#, 16#30BF#),
+      (16#30C2#, 16#30C1#),
+      (16#30C5#, 16#30C4#),
+      (16#30C7#, 16#30C6#),
+      (16#30C9#, 16#30C8#),
+      (16#30D0#, 16#30CF#),
+      (16#30D1#, 16#30CF#),
+      (16#30D3#, 16#30D2#),
+      (16#30D4#, 16#30D2#),
+      (16#30D6#, 16#30D5#),
+      (16#30D7#, 16#30D5#),
+      (16#30D9#, 16#30D8#),
+      (16#30DA#, 16#30D8#),
+      (16#30DC#, 16#30DB#),
+      (16#30DD#, 16#30DB#),
+      (16#30F4#, 16#30A6#),
+      (16#30F7#, 16#30EF#),
+      (16#30F8#, 16#30F0#),
+      (16#30F9#, 16#30F1#),
+      (16#30FA#, 16#30F2#),
+      (16#30FE#, 16#30FD#),
+      (16#30FF#, 16#30B3#),
+      (16#3131#, 16#1100#),
+      (16#3132#, 16#1101#),
+      (16#3133#, 16#11AA#),
+      (16#3134#, 16#1102#),
+      (16#3135#, 16#11AC#),
+      (16#3136#, 16#11AD#),
+      (16#3137#, 16#1103#),
+      (16#3138#, 16#1104#),
+      (16#3139#, 16#1105#),
+      (16#313A#, 16#11B0#),
+      (16#313B#, 16#11B1#),
+      (16#313C#, 16#11B2#),
+      (16#313D#, 16#11B3#),
+      (16#313E#, 16#11B4#),
+      (16#313F#, 16#11B5#),
+      (16#3140#, 16#111A#),
+      (16#3141#, 16#1106#),
+      (16#3142#, 16#1107#),
+      (16#3143#, 16#1108#),
+      (16#3144#, 16#1121#),
+      (16#3145#, 16#1109#),
+      (16#3146#, 16#110A#),
+      (16#3147#, 16#110B#),
+      (16#3148#, 16#110C#),
+      (16#3149#, 16#110D#),
+      (16#314A#, 16#110E#),
+      (16#314B#, 16#110F#),
+      (16#314C#, 16#1110#),
+      (16#314D#, 16#1111#),
+      (16#314E#, 16#1112#),
+      (16#314F#, 16#1161#),
+      (16#3150#, 16#1162#),
+      (16#3151#, 16#1163#),
+      (16#3152#, 16#1164#),
+      (16#3153#, 16#1165#),
+      (16#3154#, 16#1166#),
+      (16#3155#, 16#1167#),
+      (16#3156#, 16#1168#),
+      (16#3157#, 16#1169#),
+      (16#3158#, 16#116A#),
+      (16#3159#, 16#116B#),
+      (16#315A#, 16#116C#),
+      (16#315B#, 16#116D#),
+      (16#315C#, 16#116E#),
+      (16#315D#, 16#116F#),
+      (16#315E#, 16#1170#),
+      (16#315F#, 16#1171#),
+      (16#3160#, 16#1172#),
+      (16#3161#, 16#1173#),
+      (16#3162#, 16#1174#),
+      (16#3163#, 16#1175#),
+      (16#3164#, 16#1160#),
+      (16#3165#, 16#1114#),
+      (16#3166#, 16#1115#),
+      (16#3167#, 16#11C7#),
+      (16#3168#, 16#11C8#),
+      (16#3169#, 16#11CC#),
+      (16#316A#, 16#11CE#),
+      (16#316B#, 16#11D3#),
+      (16#316C#, 16#11D7#),
+      (16#316D#, 16#11D9#),
+      (16#316E#, 16#111C#),
+      (16#316F#, 16#11DD#),
+      (16#3170#, 16#11DF#),
+      (16#3171#, 16#111D#),
+      (16#3172#, 16#111E#),
+      (16#3173#, 16#1120#),
+      (16#3174#, 16#1122#),
+      (16#3175#, 16#1123#),
+      (16#3176#, 16#1127#),
+      (16#3177#, 16#1129#),
+      (16#3178#, 16#112B#),
+      (16#3179#, 16#112C#),
+      (16#317A#, 16#112D#),
+      (16#317B#, 16#112E#),
+      (16#317C#, 16#112F#),
+      (16#317D#, 16#1132#),
+      (16#317E#, 16#1136#),
+      (16#317F#, 16#1140#),
+      (16#3180#, 16#1147#),
+      (16#3181#, 16#114C#),
+      (16#3182#, 16#11F1#),
+      (16#3183#, 16#11F2#),
+      (16#3184#, 16#1157#),
+      (16#3185#, 16#1158#),
+      (16#3186#, 16#1159#),
+      (16#3187#, 16#1184#),
+      (16#3188#, 16#1185#),
+      (16#3189#, 16#1188#),
+      (16#318A#, 16#1191#),
+      (16#318B#, 16#1192#),
+      (16#318C#, 16#1194#),
+      (16#318D#, 16#119E#),
+      (16#318E#, 16#11A1#),
+      (16#3192#, 16#4E00#),
+      (16#3193#, 16#4E8C#),
+      (16#3194#, 16#4E09#),
+      (16#3195#, 16#56DB#),
+      (16#3196#, 16#4E0A#),
+      (16#3197#, 16#4E2D#),
+      (16#3198#, 16#4E0B#),
+      (16#3199#, 16#7532#),
+      (16#319A#, 16#4E59#),
+      (16#319B#, 16#4E19#),
+      (16#319C#, 16#4E01#),
+      (16#319D#, 16#5929#),
+      (16#319E#, 16#5730#),
+      (16#319F#, 16#4EBA#),
+      (16#3200#, 16#0028#),
+      (16#3201#, 16#0028#),
+      (16#3202#, 16#0028#),
+      (16#3203#, 16#0028#),
+      (16#3204#, 16#0028#),
+      (16#3205#, 16#0028#),
+      (16#3206#, 16#0028#),
+      (16#3207#, 16#0028#),
+      (16#3208#, 16#0028#),
+      (16#3209#, 16#0028#),
+      (16#320A#, 16#0028#),
+      (16#320B#, 16#0028#),
+      (16#320C#, 16#0028#),
+      (16#320D#, 16#0028#),
+      (16#320E#, 16#0028#),
+      (16#320F#, 16#0028#),
+      (16#3210#, 16#0028#),
+      (16#3211#, 16#0028#),
+      (16#3212#, 16#0028#),
+      (16#3213#, 16#0028#),
+      (16#3214#, 16#0028#),
+      (16#3215#, 16#0028#),
+      (16#3216#, 16#0028#),
+      (16#3217#, 16#0028#),
+      (16#3218#, 16#0028#),
+      (16#3219#, 16#0028#),
+      (16#321A#, 16#0028#),
+      (16#321B#, 16#0028#),
+      (16#321C#, 16#0028#),
+      (16#321D#, 16#0028#),
+      (16#321E#, 16#0028#),
+      (16#3220#, 16#0028#),
+      (16#3221#, 16#0028#),
+      (16#3222#, 16#0028#),
+      (16#3223#, 16#0028#),
+      (16#3224#, 16#0028#),
+      (16#3225#, 16#0028#),
+      (16#3226#, 16#0028#),
+      (16#3227#, 16#0028#),
+      (16#3228#, 16#0028#),
+      (16#3229#, 16#0028#),
+      (16#322A#, 16#0028#),
+      (16#322B#, 16#0028#),
+      (16#322C#, 16#0028#),
+      (16#322D#, 16#0028#),
+      (16#322E#, 16#0028#),
+      (16#322F#, 16#0028#),
+      (16#3230#, 16#0028#),
+      (16#3231#, 16#0028#),
+      (16#3232#, 16#0028#),
+      (16#3233#, 16#0028#),
+      (16#3234#, 16#0028#),
+      (16#3235#, 16#0028#),
+      (16#3236#, 16#0028#),
+      (16#3237#, 16#0028#),
+      (16#3238#, 16#0028#),
+      (16#3239#, 16#0028#),
+      (16#323A#, 16#0028#),
+      (16#323B#, 16#0028#),
+      (16#323C#, 16#0028#),
+      (16#323D#, 16#0028#),
+      (16#323E#, 16#0028#),
+      (16#323F#, 16#0028#),
+      (16#3240#, 16#0028#),
+      (16#3241#, 16#0028#),
+      (16#3242#, 16#0028#),
+      (16#3243#, 16#0028#),
+      (16#3244#, 16#554F#),
+      (16#3245#, 16#5E7C#),
+      (16#3246#, 16#6587#),
+      (16#3247#, 16#7B8F#),
+      (16#3250#, 16#0050#),
+      (16#3251#, 16#0032#),
+      (16#3252#, 16#0032#),
+      (16#3253#, 16#0032#),
+      (16#3254#, 16#0032#),
+      (16#3255#, 16#0032#),
+      (16#3256#, 16#0032#),
+      (16#3257#, 16#0032#),
+      (16#3258#, 16#0032#),
+      (16#3259#, 16#0032#),
+      (16#325A#, 16#0033#),
+      (16#325B#, 16#0033#),
+      (16#325C#, 16#0033#),
+      (16#325D#, 16#0033#),
+      (16#325E#, 16#0033#),
+      (16#325F#, 16#0033#),
+      (16#3260#, 16#1100#),
+      (16#3261#, 16#1102#),
+      (16#3262#, 16#1103#),
+      (16#3263#, 16#1105#),
+      (16#3264#, 16#1106#),
+      (16#3265#, 16#1107#),
+      (16#3266#, 16#1109#),
+      (16#3267#, 16#110B#),
+      (16#3268#, 16#110C#),
+      (16#3269#, 16#110E#),
+      (16#326A#, 16#110F#),
+      (16#326B#, 16#1110#),
+      (16#326C#, 16#1111#),
+      (16#326D#, 16#1112#),
+      (16#326E#, 16#1100#),
+      (16#326F#, 16#1102#),
+      (16#3270#, 16#1103#),
+      (16#3271#, 16#1105#),
+      (16#3272#, 16#1106#),
+      (16#3273#, 16#1107#),
+      (16#3274#, 16#1109#),
+      (16#3275#, 16#110B#),
+      (16#3276#, 16#110C#),
+      (16#3277#, 16#110E#),
+      (16#3278#, 16#110F#),
+      (16#3279#, 16#1110#),
+      (16#327A#, 16#1111#),
+      (16#327B#, 16#1112#),
+      (16#327C#, 16#110E#),
+      (16#327D#, 16#110C#),
+      (16#327E#, 16#110B#),
+      (16#3280#, 16#4E00#),
+      (16#3281#, 16#4E8C#),
+      (16#3282#, 16#4E09#),
+      (16#3283#, 16#56DB#),
+      (16#3284#, 16#4E94#),
+      (16#3285#, 16#516D#),
+      (16#3286#, 16#4E03#),
+      (16#3287#, 16#516B#),
+      (16#3288#, 16#4E5D#),
+      (16#3289#, 16#5341#),
+      (16#328A#, 16#6708#),
+      (16#328B#, 16#706B#),
+      (16#328C#, 16#6C34#),
+      (16#328D#, 16#6728#),
+      (16#328E#, 16#91D1#),
+      (16#328F#, 16#571F#),
+      (16#3290#, 16#65E5#),
+      (16#3291#, 16#682A#),
+      (16#3292#, 16#6709#),
+      (16#3293#, 16#793E#),
+      (16#3294#, 16#540D#),
+      (16#3295#, 16#7279#),
+      (16#3296#, 16#8CA1#),
+      (16#3297#, 16#795D#),
+      (16#3298#, 16#52B4#),
+      (16#3299#, 16#79D8#),
+      (16#329A#, 16#7537#),
+      (16#329B#, 16#5973#),
+      (16#329C#, 16#9069#),
+      (16#329D#, 16#512A#),
+      (16#329E#, 16#5370#),
+      (16#329F#, 16#6CE8#),
+      (16#32A0#, 16#9805#),
+      (16#32A1#, 16#4F11#),
+      (16#32A2#, 16#5199#),
+      (16#32A3#, 16#6B63#),
+      (16#32A4#, 16#4E0A#),
+      (16#32A5#, 16#4E2D#),
+      (16#32A6#, 16#4E0B#),
+      (16#32A7#, 16#5DE6#),
+      (16#32A8#, 16#53F3#),
+      (16#32A9#, 16#533B#),
+      (16#32AA#, 16#5B97#),
+      (16#32AB#, 16#5B66#),
+      (16#32AC#, 16#76E3#),
+      (16#32AD#, 16#4F01#),
+      (16#32AE#, 16#8CC7#),
+      (16#32AF#, 16#5354#),
+      (16#32B0#, 16#591C#),
+      (16#32B1#, 16#0033#),
+      (16#32B2#, 16#0033#),
+      (16#32B3#, 16#0033#),
+      (16#32B4#, 16#0033#),
+      (16#32B5#, 16#0034#),
+      (16#32B6#, 16#0034#),
+      (16#32B7#, 16#0034#),
+      (16#32B8#, 16#0034#),
+      (16#32B9#, 16#0034#),
+      (16#32BA#, 16#0034#),
+      (16#32BB#, 16#0034#),
+      (16#32BC#, 16#0034#),
+      (16#32BD#, 16#0034#),
+      (16#32BE#, 16#0034#),
+      (16#32BF#, 16#0035#),
+      (16#32C0#, 16#0031#),
+      (16#32C1#, 16#0032#),
+      (16#32C2#, 16#0033#),
+      (16#32C3#, 16#0034#),
+      (16#32C4#, 16#0035#),
+      (16#32C5#, 16#0036#),
+      (16#32C6#, 16#0037#),
+      (16#32C7#, 16#0038#),
+      (16#32C8#, 16#0039#),
+      (16#32C9#, 16#0031#),
+      (16#32CA#, 16#0031#),
+      (16#32CB#, 16#0031#),
+      (16#32CC#, 16#0048#),
+      (16#32CD#, 16#0065#),
+      (16#32CE#, 16#0065#),
+      (16#32CF#, 16#004C#),
+      (16#32D0#, 16#30A2#),
+      (16#32D1#, 16#30A4#),
+      (16#32D2#, 16#30A6#),
+      (16#32D3#, 16#30A8#),
+      (16#32D4#, 16#30AA#),
+      (16#32D5#, 16#30AB#),
+      (16#32D6#, 16#30AD#),
+      (16#32D7#, 16#30AF#),
+      (16#32D8#, 16#30B1#),
+      (16#32D9#, 16#30B3#),
+      (16#32DA#, 16#30B5#),
+      (16#32DB#, 16#30B7#),
+      (16#32DC#, 16#30B9#),
+      (16#32DD#, 16#30BB#),
+      (16#32DE#, 16#30BD#),
+      (16#32DF#, 16#30BF#),
+      (16#32E0#, 16#30C1#),
+      (16#32E1#, 16#30C4#),
+      (16#32E2#, 16#30C6#),
+      (16#32E3#, 16#30C8#),
+      (16#32E4#, 16#30CA#),
+      (16#32E5#, 16#30CB#),
+      (16#32E6#, 16#30CC#),
+      (16#32E7#, 16#30CD#),
+      (16#32E8#, 16#30CE#),
+      (16#32E9#, 16#30CF#),
+      (16#32EA#, 16#30D2#),
+      (16#32EB#, 16#30D5#),
+      (16#32EC#, 16#30D8#),
+      (16#32ED#, 16#30DB#),
+      (16#32EE#, 16#30DE#),
+      (16#32EF#, 16#30DF#),
+      (16#32F0#, 16#30E0#),
+      (16#32F1#, 16#30E1#),
+      (16#32F2#, 16#30E2#),
+      (16#32F3#, 16#30E4#),
+      (16#32F4#, 16#30E6#),
+      (16#32F5#, 16#30E8#),
+      (16#32F6#, 16#30E9#),
+      (16#32F7#, 16#30EA#),
+      (16#32F8#, 16#30EB#),
+      (16#32F9#, 16#30EC#),
+      (16#32FA#, 16#30ED#),
+      (16#32FB#, 16#30EF#),
+      (16#32FC#, 16#30F0#),
+      (16#32FD#, 16#30F1#),
+      (16#32FE#, 16#30F2#),
+      (16#32FF#, 16#4EE4#),
+      (16#3300#, 16#30A2#),
+      (16#3301#, 16#30A2#),
+      (16#3302#, 16#30A2#),
+      (16#3303#, 16#30A2#),
+      (16#3304#, 16#30A4#),
+      (16#3305#, 16#30A4#),
+      (16#3306#, 16#30A6#),
+      (16#3307#, 16#30A8#),
+      (16#3308#, 16#30A8#),
+      (16#3309#, 16#30AA#),
+      (16#330A#, 16#30AA#),
+      (16#330B#, 16#30AB#),
+      (16#330C#, 16#30AB#),
+      (16#330D#, 16#30AB#),
+      (16#330E#, 16#30AC#),
+      (16#330F#, 16#30AC#),
+      (16#3310#, 16#30AE#),
+      (16#3311#, 16#30AE#),
+      (16#3312#, 16#30AD#),
+      (16#3313#, 16#30AE#),
+      (16#3314#, 16#30AD#),
+      (16#3315#, 16#30AD#),
+      (16#3316#, 16#30AD#),
+      (16#3317#, 16#30AD#),
+      (16#3318#, 16#30B0#),
+      (16#3319#, 16#30B0#),
+      (16#331A#, 16#30AF#),
+      (16#331B#, 16#30AF#),
+      (16#331C#, 16#30B1#),
+      (16#331D#, 16#30B3#),
+      (16#331E#, 16#30B3#),
+      (16#331F#, 16#30B5#),
+      (16#3320#, 16#30B5#),
+      (16#3321#, 16#30B7#),
+      (16#3322#, 16#30BB#),
+      (16#3323#, 16#30BB#),
+      (16#3324#, 16#30C0#),
+      (16#3325#, 16#30C7#),
+      (16#3326#, 16#30C9#),
+      (16#3327#, 16#30C8#),
+      (16#3328#, 16#30CA#),
+      (16#3329#, 16#30CE#),
+      (16#332A#, 16#30CF#),
+      (16#332B#, 16#30D1#),
+      (16#332C#, 16#30D1#),
+      (16#332D#, 16#30D0#),
+      (16#332E#, 16#30D4#),
+      (16#332F#, 16#30D4#),
+      (16#3330#, 16#30D4#),
+      (16#3331#, 16#30D3#),
+      (16#3332#, 16#30D5#),
+      (16#3333#, 16#30D5#),
+      (16#3334#, 16#30D6#),
+      (16#3335#, 16#30D5#),
+      (16#3336#, 16#30D8#),
+      (16#3337#, 16#30DA#),
+      (16#3338#, 16#30DA#),
+      (16#3339#, 16#30D8#),
+      (16#333A#, 16#30DA#),
+      (16#333B#, 16#30DA#),
+      (16#333C#, 16#30D9#),
+      (16#333D#, 16#30DD#),
+      (16#333E#, 16#30DC#),
+      (16#333F#, 16#30DB#),
+      (16#3340#, 16#30DD#),
+      (16#3341#, 16#30DB#),
+      (16#3342#, 16#30DB#),
+      (16#3343#, 16#30DE#),
+      (16#3344#, 16#30DE#),
+      (16#3345#, 16#30DE#),
+      (16#3346#, 16#30DE#),
+      (16#3347#, 16#30DE#),
+      (16#3348#, 16#30DF#),
+      (16#3349#, 16#30DF#),
+      (16#334A#, 16#30DF#),
+      (16#334B#, 16#30E1#),
+      (16#334C#, 16#30E1#),
+      (16#334D#, 16#30E1#),
+      (16#334E#, 16#30E4#),
+      (16#334F#, 16#30E4#),
+      (16#3350#, 16#30E6#),
+      (16#3351#, 16#30EA#),
+      (16#3352#, 16#30EA#),
+      (16#3353#, 16#30EB#),
+      (16#3354#, 16#30EB#),
+      (16#3355#, 16#30EC#),
+      (16#3356#, 16#30EC#),
+      (16#3357#, 16#30EF#),
+      (16#3358#, 16#0030#),
+      (16#3359#, 16#0031#),
+      (16#335A#, 16#0032#),
+      (16#335B#, 16#0033#),
+      (16#335C#, 16#0034#),
+      (16#335D#, 16#0035#),
+      (16#335E#, 16#0036#),
+      (16#335F#, 16#0037#),
+      (16#3360#, 16#0038#),
+      (16#3361#, 16#0039#),
+      (16#3362#, 16#0031#),
+      (16#3363#, 16#0031#),
+      (16#3364#, 16#0031#),
+      (16#3365#, 16#0031#),
+      (16#3366#, 16#0031#),
+      (16#3367#, 16#0031#),
+      (16#3368#, 16#0031#),
+      (16#3369#, 16#0031#),
+      (16#336A#, 16#0031#),
+      (16#336B#, 16#0031#),
+      (16#336C#, 16#0032#),
+      (16#336D#, 16#0032#),
+      (16#336E#, 16#0032#),
+      (16#336F#, 16#0032#),
+      (16#3370#, 16#0032#),
+      (16#3371#, 16#0068#),
+      (16#3372#, 16#0064#),
+      (16#3373#, 16#0041#),
+      (16#3374#, 16#0062#),
+      (16#3375#, 16#006F#),
+      (16#3376#, 16#0070#),
+      (16#3377#, 16#0064#),
+      (16#3378#, 16#0064#),
+      (16#3379#, 16#0064#),
+      (16#337A#, 16#0049#),
+      (16#337B#, 16#5E73#),
+      (16#337C#, 16#662D#),
+      (16#337D#, 16#5927#),
+      (16#337E#, 16#660E#),
+      (16#337F#, 16#682A#),
+      (16#3380#, 16#0070#),
+      (16#3381#, 16#006E#),
+      (16#3382#, 16#03BC#),
+      (16#3383#, 16#006D#),
+      (16#3384#, 16#006B#),
+      (16#3385#, 16#004B#),
+      (16#3386#, 16#004D#),
+      (16#3387#, 16#0047#),
+      (16#3388#, 16#0063#),
+      (16#3389#, 16#006B#),
+      (16#338A#, 16#0070#),
+      (16#338B#, 16#006E#),
+      (16#338C#, 16#03BC#),
+      (16#338D#, 16#03BC#),
+      (16#338E#, 16#006D#),
+      (16#338F#, 16#006B#),
+      (16#3390#, 16#0048#),
+      (16#3391#, 16#006B#),
+      (16#3392#, 16#004D#),
+      (16#3393#, 16#0047#),
+      (16#3394#, 16#0054#),
+      (16#3395#, 16#03BC#),
+      (16#3396#, 16#006D#),
+      (16#3397#, 16#0064#),
+      (16#3398#, 16#006B#),
+      (16#3399#, 16#0066#),
+      (16#339A#, 16#006E#),
+      (16#339B#, 16#03BC#),
+      (16#339C#, 16#006D#),
+      (16#339D#, 16#0063#),
+      (16#339E#, 16#006B#),
+      (16#339F#, 16#006D#),
+      (16#33A0#, 16#0063#),
+      (16#33A1#, 16#006D#),
+      (16#33A2#, 16#006B#),
+      (16#33A3#, 16#006D#),
+      (16#33A4#, 16#0063#),
+      (16#33A5#, 16#006D#),
+      (16#33A6#, 16#006B#),
+      (16#33A7#, 16#006D#),
+      (16#33A8#, 16#006D#),
+      (16#33A9#, 16#0050#),
+      (16#33AA#, 16#006B#),
+      (16#33AB#, 16#004D#),
+      (16#33AC#, 16#0047#),
+      (16#33AD#, 16#0072#),
+      (16#33AE#, 16#0072#),
+      (16#33AF#, 16#0072#),
+      (16#33B0#, 16#0070#),
+      (16#33B1#, 16#006E#),
+      (16#33B2#, 16#03BC#),
+      (16#33B3#, 16#006D#),
+      (16#33B4#, 16#0070#),
+      (16#33B5#, 16#006E#),
+      (16#33B6#, 16#03BC#),
+      (16#33B7#, 16#006D#),
+      (16#33B8#, 16#006B#),
+      (16#33B9#, 16#004D#),
+      (16#33BA#, 16#0070#),
+      (16#33BB#, 16#006E#),
+      (16#33BC#, 16#03BC#),
+      (16#33BD#, 16#006D#),
+      (16#33BE#, 16#006B#),
+      (16#33BF#, 16#004D#),
+      (16#33C0#, 16#006B#),
+      (16#33C1#, 16#004D#),
+      (16#33C2#, 16#0061#),
+      (16#33C3#, 16#0042#),
+      (16#33C4#, 16#0063#),
+      (16#33C5#, 16#0063#),
+      (16#33C6#, 16#0043#),
+      (16#33C7#, 16#0043#),
+      (16#33C8#, 16#0064#),
+      (16#33C9#, 16#0047#),
+      (16#33CA#, 16#0068#),
+      (16#33CB#, 16#0048#),
+      (16#33CC#, 16#0069#),
+      (16#33CD#, 16#004B#),
+      (16#33CE#, 16#004B#),
+      (16#33CF#, 16#006B#),
+      (16#33D0#, 16#006C#),
+      (16#33D1#, 16#006C#),
+      (16#33D2#, 16#006C#),
+      (16#33D3#, 16#006C#),
+      (16#33D4#, 16#006D#),
+      (16#33D5#, 16#006D#),
+      (16#33D6#, 16#006D#),
+      (16#33D7#, 16#0050#),
+      (16#33D8#, 16#0070#),
+      (16#33D9#, 16#0050#),
+      (16#33DA#, 16#0050#),
+      (16#33DB#, 16#0073#),
+      (16#33DC#, 16#0053#),
+      (16#33DD#, 16#0057#),
+      (16#33DE#, 16#0056#),
+      (16#33DF#, 16#0041#),
+      (16#33E0#, 16#0031#),
+      (16#33E1#, 16#0032#),
+      (16#33E2#, 16#0033#),
+      (16#33E3#, 16#0034#),
+      (16#33E4#, 16#0035#),
+      (16#33E5#, 16#0036#),
+      (16#33E6#, 16#0037#),
+      (16#33E7#, 16#0038#),
+      (16#33E8#, 16#0039#),
+      (16#33E9#, 16#0031#),
+      (16#33EA#, 16#0031#),
+      (16#33EB#, 16#0031#),
+      (16#33EC#, 16#0031#),
+      (16#33ED#, 16#0031#),
+      (16#33EE#, 16#0031#),
+      (16#33EF#, 16#0031#),
+      (16#33F0#, 16#0031#),
+      (16#33F1#, 16#0031#),
+      (16#33F2#, 16#0031#),
+      (16#33F3#, 16#0032#),
+      (16#33F4#, 16#0032#),
+      (16#33F5#, 16#0032#),
+      (16#33F6#, 16#0032#),
+      (16#33F7#, 16#0032#),
+      (16#33F8#, 16#0032#),
+      (16#33F9#, 16#0032#),
+      (16#33FA#, 16#0032#),
+      (16#33FB#, 16#0032#),
+      (16#33FC#, 16#0032#),
+      (16#33FD#, 16#0033#),
+      (16#33FE#, 16#0033#),
+      (16#33FF#, 16#0067#),
+      (16#A69C#, 16#044A#),
+      (16#A69D#, 16#044C#),
+      (16#A770#, 16#A76F#),
+      (16#A7F8#, 16#0126#),
+      (16#A7F9#, 16#0153#),
+      (16#AB5C#, 16#A727#),
+      (16#AB5D#, 16#AB37#),
+      (16#AB5E#, 16#026B#),
+      (16#AB5F#, 16#AB52#),
+      (16#AB69#, 16#028D#),
+      (16#F900#, 16#8C48#),
+      (16#F901#, 16#66F4#),
+      (16#F902#, 16#8ECA#),
+      (16#F903#, 16#8CC8#),
+      (16#F904#, 16#6ED1#),
+      (16#F905#, 16#4E32#),
+      (16#F906#, 16#53E5#),
+      (16#F907#, 16#9F9C#),
+      (16#F908#, 16#9F9C#),
+      (16#F909#, 16#5951#),
+      (16#F90A#, 16#91D1#),
+      (16#F90B#, 16#5587#),
+      (16#F90C#, 16#5948#),
+      (16#F90D#, 16#61F6#),
+      (16#F90E#, 16#7669#),
+      (16#F90F#, 16#7F85#),
+      (16#F910#, 16#863F#),
+      (16#F911#, 16#87BA#),
+      (16#F912#, 16#88F8#),
+      (16#F913#, 16#908F#),
+      (16#F914#, 16#6A02#),
+      (16#F915#, 16#6D1B#),
+      (16#F916#, 16#70D9#),
+      (16#F917#, 16#73DE#),
+      (16#F918#, 16#843D#),
+      (16#F919#, 16#916A#),
+      (16#F91A#, 16#99F1#),
+      (16#F91B#, 16#4E82#),
+      (16#F91C#, 16#5375#),
+      (16#F91D#, 16#6B04#),
+      (16#F91E#, 16#721B#),
+      (16#F91F#, 16#862D#),
+      (16#F920#, 16#9E1E#),
+      (16#F921#, 16#5D50#),
+      (16#F922#, 16#6FEB#),
+      (16#F923#, 16#85CD#),
+      (16#F924#, 16#8964#),
+      (16#F925#, 16#62C9#),
+      (16#F926#, 16#81D8#),
+      (16#F927#, 16#881F#),
+      (16#F928#, 16#5ECA#),
+      (16#F929#, 16#6717#),
+      (16#F92A#, 16#6D6A#),
+      (16#F92B#, 16#72FC#),
+      (16#F92C#, 16#90CE#),
+      (16#F92D#, 16#4F86#),
+      (16#F92E#, 16#51B7#),
+      (16#F92F#, 16#52DE#),
+      (16#F930#, 16#64C4#),
+      (16#F931#, 16#6AD3#),
+      (16#F932#, 16#7210#),
+      (16#F933#, 16#76E7#),
+      (16#F934#, 16#8001#),
+      (16#F935#, 16#8606#),
+      (16#F936#, 16#865C#),
+      (16#F937#, 16#8DEF#),
+      (16#F938#, 16#9732#),
+      (16#F939#, 16#9B6F#),
+      (16#F93A#, 16#9DFA#),
+      (16#F93B#, 16#788C#),
+      (16#F93C#, 16#797F#),
+      (16#F93D#, 16#7DA0#),
+      (16#F93E#, 16#83C9#),
+      (16#F93F#, 16#9304#),
+      (16#F940#, 16#9E7F#),
+      (16#F941#, 16#8AD6#),
+      (16#F942#, 16#58DF#),
+      (16#F943#, 16#5F04#),
+      (16#F944#, 16#7C60#),
+      (16#F945#, 16#807E#),
+      (16#F946#, 16#7262#),
+      (16#F947#, 16#78CA#),
+      (16#F948#, 16#8CC2#),
+      (16#F949#, 16#96F7#),
+      (16#F94A#, 16#58D8#),
+      (16#F94B#, 16#5C62#),
+      (16#F94C#, 16#6A13#),
+      (16#F94D#, 16#6DDA#),
+      (16#F94E#, 16#6F0F#),
+      (16#F94F#, 16#7D2F#),
+      (16#F950#, 16#7E37#),
+      (16#F951#, 16#964B#),
+      (16#F952#, 16#52D2#),
+      (16#F953#, 16#808B#),
+      (16#F954#, 16#51DC#),
+      (16#F955#, 16#51CC#),
+      (16#F956#, 16#7A1C#),
+      (16#F957#, 16#7DBE#),
+      (16#F958#, 16#83F1#),
+      (16#F959#, 16#9675#),
+      (16#F95A#, 16#8B80#),
+      (16#F95B#, 16#62CF#),
+      (16#F95C#, 16#6A02#),
+      (16#F95D#, 16#8AFE#),
+      (16#F95E#, 16#4E39#),
+      (16#F95F#, 16#5BE7#),
+      (16#F960#, 16#6012#),
+      (16#F961#, 16#7387#),
+      (16#F962#, 16#7570#),
+      (16#F963#, 16#5317#),
+      (16#F964#, 16#78FB#),
+      (16#F965#, 16#4FBF#),
+      (16#F966#, 16#5FA9#),
+      (16#F967#, 16#4E0D#),
+      (16#F968#, 16#6CCC#),
+      (16#F969#, 16#6578#),
+      (16#F96A#, 16#7D22#),
+      (16#F96B#, 16#53C3#),
+      (16#F96C#, 16#585E#),
+      (16#F96D#, 16#7701#),
+      (16#F96E#, 16#8449#),
+      (16#F96F#, 16#8AAA#),
+      (16#F970#, 16#6BBA#),
+      (16#F971#, 16#8FB0#),
+      (16#F972#, 16#6C88#),
+      (16#F973#, 16#62FE#),
+      (16#F974#, 16#82E5#),
+      (16#F975#, 16#63A0#),
+      (16#F976#, 16#7565#),
+      (16#F977#, 16#4EAE#),
+      (16#F978#, 16#5169#),
+      (16#F979#, 16#51C9#),
+      (16#F97A#, 16#6881#),
+      (16#F97B#, 16#7CE7#),
+      (16#F97C#, 16#826F#),
+      (16#F97D#, 16#8AD2#),
+      (16#F97E#, 16#91CF#),
+      (16#F97F#, 16#52F5#),
+      (16#F980#, 16#5442#),
+      (16#F981#, 16#5973#),
+      (16#F982#, 16#5EEC#),
+      (16#F983#, 16#65C5#),
+      (16#F984#, 16#6FFE#),
+      (16#F985#, 16#792A#),
+      (16#F986#, 16#95AD#),
+      (16#F987#, 16#9A6A#),
+      (16#F988#, 16#9E97#),
+      (16#F989#, 16#9ECE#),
+      (16#F98A#, 16#529B#),
+      (16#F98B#, 16#66C6#),
+      (16#F98C#, 16#6B77#),
+      (16#F98D#, 16#8F62#),
+      (16#F98E#, 16#5E74#),
+      (16#F98F#, 16#6190#),
+      (16#F990#, 16#6200#),
+      (16#F991#, 16#649A#),
+      (16#F992#, 16#6F23#),
+      (16#F993#, 16#7149#),
+      (16#F994#, 16#7489#),
+      (16#F995#, 16#79CA#),
+      (16#F996#, 16#7DF4#),
+      (16#F997#, 16#806F#),
+      (16#F998#, 16#8F26#),
+      (16#F999#, 16#84EE#),
+      (16#F99A#, 16#9023#),
+      (16#F99B#, 16#934A#),
+      (16#F99C#, 16#5217#),
+      (16#F99D#, 16#52A3#),
+      (16#F99E#, 16#54BD#),
+      (16#F99F#, 16#70C8#),
+      (16#F9A0#, 16#88C2#),
+      (16#F9A1#, 16#8AAA#),
+      (16#F9A2#, 16#5EC9#),
+      (16#F9A3#, 16#5FF5#),
+      (16#F9A4#, 16#637B#),
+      (16#F9A5#, 16#6BAE#),
+      (16#F9A6#, 16#7C3E#),
+      (16#F9A7#, 16#7375#),
+      (16#F9A8#, 16#4EE4#),
+      (16#F9A9#, 16#56F9#),
+      (16#F9AA#, 16#5BE7#),
+      (16#F9AB#, 16#5DBA#),
+      (16#F9AC#, 16#601C#),
+      (16#F9AD#, 16#73B2#),
+      (16#F9AE#, 16#7469#),
+      (16#F9AF#, 16#7F9A#),
+      (16#F9B0#, 16#8046#),
+      (16#F9B1#, 16#9234#),
+      (16#F9B2#, 16#96F6#),
+      (16#F9B3#, 16#9748#),
+      (16#F9B4#, 16#9818#),
+      (16#F9B5#, 16#4F8B#),
+      (16#F9B6#, 16#79AE#),
+      (16#F9B7#, 16#91B4#),
+      (16#F9B8#, 16#96B8#),
+      (16#F9B9#, 16#60E1#),
+      (16#F9BA#, 16#4E86#),
+      (16#F9BB#, 16#50DA#),
+      (16#F9BC#, 16#5BEE#),
+      (16#F9BD#, 16#5C3F#),
+      (16#F9BE#, 16#6599#),
+      (16#F9BF#, 16#6A02#),
+      (16#F9C0#, 16#71CE#),
+      (16#F9C1#, 16#7642#),
+      (16#F9C2#, 16#84FC#),
+      (16#F9C3#, 16#907C#),
+      (16#F9C4#, 16#9F8D#),
+      (16#F9C5#, 16#6688#),
+      (16#F9C6#, 16#962E#),
+      (16#F9C7#, 16#5289#),
+      (16#F9C8#, 16#677B#),
+      (16#F9C9#, 16#67F3#),
+      (16#F9CA#, 16#6D41#),
+      (16#F9CB#, 16#6E9C#),
+      (16#F9CC#, 16#7409#),
+      (16#F9CD#, 16#7559#),
+      (16#F9CE#, 16#786B#),
+      (16#F9CF#, 16#7D10#),
+      (16#F9D0#, 16#985E#),
+      (16#F9D1#, 16#516D#),
+      (16#F9D2#, 16#622E#),
+      (16#F9D3#, 16#9678#),
+      (16#F9D4#, 16#502B#),
+      (16#F9D5#, 16#5D19#),
+      (16#F9D6#, 16#6DEA#),
+      (16#F9D7#, 16#8F2A#),
+      (16#F9D8#, 16#5F8B#),
+      (16#F9D9#, 16#6144#),
+      (16#F9DA#, 16#6817#),
+      (16#F9DB#, 16#7387#),
+      (16#F9DC#, 16#9686#),
+      (16#F9DD#, 16#5229#),
+      (16#F9DE#, 16#540F#),
+      (16#F9DF#, 16#5C65#),
+      (16#F9E0#, 16#6613#),
+      (16#F9E1#, 16#674E#),
+      (16#F9E2#, 16#68A8#),
+      (16#F9E3#, 16#6CE5#),
+      (16#F9E4#, 16#7406#),
+      (16#F9E5#, 16#75E2#),
+      (16#F9E6#, 16#7F79#),
+      (16#F9E7#, 16#88CF#),
+      (16#F9E8#, 16#88E1#),
+      (16#F9E9#, 16#91CC#),
+      (16#F9EA#, 16#96E2#),
+      (16#F9EB#, 16#533F#),
+      (16#F9EC#, 16#6EBA#),
+      (16#F9ED#, 16#541D#),
+      (16#F9EE#, 16#71D0#),
+      (16#F9EF#, 16#7498#),
+      (16#F9F0#, 16#85FA#),
+      (16#F9F1#, 16#96A3#),
+      (16#F9F2#, 16#9C57#),
+      (16#F9F3#, 16#9E9F#),
+      (16#F9F4#, 16#6797#),
+      (16#F9F5#, 16#6DCB#),
+      (16#F9F6#, 16#81E8#),
+      (16#F9F7#, 16#7ACB#),
+      (16#F9F8#, 16#7B20#),
+      (16#F9F9#, 16#7C92#),
+      (16#F9FA#, 16#72C0#),
+      (16#F9FB#, 16#7099#),
+      (16#F9FC#, 16#8B58#),
+      (16#F9FD#, 16#4EC0#),
+      (16#F9FE#, 16#8336#),
+      (16#F9FF#, 16#523A#),
+      (16#FA00#, 16#5207#),
+      (16#FA01#, 16#5EA6#),
+      (16#FA02#, 16#62D3#),
+      (16#FA03#, 16#7CD6#),
+      (16#FA04#, 16#5B85#),
+      (16#FA05#, 16#6D1E#),
+      (16#FA06#, 16#66B4#),
+      (16#FA07#, 16#8F3B#),
+      (16#FA08#, 16#884C#),
+      (16#FA09#, 16#964D#),
+      (16#FA0A#, 16#898B#),
+      (16#FA0B#, 16#5ED3#),
+      (16#FA0C#, 16#5140#),
+      (16#FA0D#, 16#55C0#),
+      (16#FA10#, 16#585A#),
+      (16#FA12#, 16#6674#),
+      (16#FA15#, 16#51DE#),
+      (16#FA16#, 16#732A#),
+      (16#FA17#, 16#76CA#),
+      (16#FA18#, 16#793C#),
+      (16#FA19#, 16#795E#),
+      (16#FA1A#, 16#7965#),
+      (16#FA1B#, 16#798F#),
+      (16#FA1C#, 16#9756#),
+      (16#FA1D#, 16#7CBE#),
+      (16#FA1E#, 16#7FBD#),
+      (16#FA20#, 16#8612#),
+      (16#FA22#, 16#8AF8#),
+      (16#FA25#, 16#9038#),
+      (16#FA26#, 16#90FD#),
+      (16#FA2A#, 16#98EF#),
+      (16#FA2B#, 16#98FC#),
+      (16#FA2C#, 16#9928#),
+      (16#FA2D#, 16#9DB4#),
+      (16#FA2E#, 16#90DE#),
+      (16#FA2F#, 16#96B7#),
+      (16#FA30#, 16#4FAE#),
+      (16#FA31#, 16#50E7#),
+      (16#FA32#, 16#514D#),
+      (16#FA33#, 16#52C9#),
+      (16#FA34#, 16#52E4#),
+      (16#FA35#, 16#5351#),
+      (16#FA36#, 16#559D#),
+      (16#FA37#, 16#5606#),
+      (16#FA38#, 16#5668#),
+      (16#FA39#, 16#5840#),
+      (16#FA3A#, 16#58A8#),
+      (16#FA3B#, 16#5C64#),
+      (16#FA3C#, 16#5C6E#),
+      (16#FA3D#, 16#6094#),
+      (16#FA3E#, 16#6168#),
+      (16#FA3F#, 16#618E#),
+      (16#FA40#, 16#61F2#),
+      (16#FA41#, 16#654F#),
+      (16#FA42#, 16#65E2#),
+      (16#FA43#, 16#6691#),
+      (16#FA44#, 16#6885#),
+      (16#FA45#, 16#6D77#),
+      (16#FA46#, 16#6E1A#),
+      (16#FA47#, 16#6F22#),
+      (16#FA48#, 16#716E#),
+      (16#FA49#, 16#722B#),
+      (16#FA4A#, 16#7422#),
+      (16#FA4B#, 16#7891#),
+      (16#FA4C#, 16#793E#),
+      (16#FA4D#, 16#7949#),
+      (16#FA4E#, 16#7948#),
+      (16#FA4F#, 16#7950#),
+      (16#FA50#, 16#7956#),
+      (16#FA51#, 16#795D#),
+      (16#FA52#, 16#798D#),
+      (16#FA53#, 16#798E#),
+      (16#FA54#, 16#7A40#),
+      (16#FA55#, 16#7A81#),
+      (16#FA56#, 16#7BC0#),
+      (16#FA57#, 16#7DF4#),
+      (16#FA58#, 16#7E09#),
+      (16#FA59#, 16#7E41#),
+      (16#FA5A#, 16#7F72#),
+      (16#FA5B#, 16#8005#),
+      (16#FA5C#, 16#81ED#),
+      (16#FA5D#, 16#8279#),
+      (16#FA5E#, 16#8279#),
+      (16#FA5F#, 16#8457#),
+      (16#FA60#, 16#8910#),
+      (16#FA61#, 16#8996#),
+      (16#FA62#, 16#8B01#),
+      (16#FA63#, 16#8B39#),
+      (16#FA64#, 16#8CD3#),
+      (16#FA65#, 16#8D08#),
+      (16#FA66#, 16#8FB6#),
+      (16#FA67#, 16#9038#),
+      (16#FA68#, 16#96E3#),
+      (16#FA69#, 16#97FF#),
+      (16#FA6A#, 16#983B#),
+      (16#FA6B#, 16#6075#),
+      (16#FA6C#, 16#242EE#),
+      (16#FA6D#, 16#8218#),
+      (16#FA70#, 16#4E26#),
+      (16#FA71#, 16#51B5#),
+      (16#FA72#, 16#5168#),
+      (16#FA73#, 16#4F80#),
+      (16#FA74#, 16#5145#),
+      (16#FA75#, 16#5180#),
+      (16#FA76#, 16#52C7#),
+      (16#FA77#, 16#52FA#),
+      (16#FA78#, 16#559D#),
+      (16#FA79#, 16#5555#),
+      (16#FA7A#, 16#5599#),
+      (16#FA7B#, 16#55E2#),
+      (16#FA7C#, 16#585A#),
+      (16#FA7D#, 16#58B3#),
+      (16#FA7E#, 16#5944#),
+      (16#FA7F#, 16#5954#),
+      (16#FA80#, 16#5A62#),
+      (16#FA81#, 16#5B28#),
+      (16#FA82#, 16#5ED2#),
+      (16#FA83#, 16#5ED9#),
+      (16#FA84#, 16#5F69#),
+      (16#FA85#, 16#5FAD#),
+      (16#FA86#, 16#60D8#),
+      (16#FA87#, 16#614E#),
+      (16#FA88#, 16#6108#),
+      (16#FA89#, 16#618E#),
+      (16#FA8A#, 16#6160#),
+      (16#FA8B#, 16#61F2#),
+      (16#FA8C#, 16#6234#),
+      (16#FA8D#, 16#63C4#),
+      (16#FA8E#, 16#641C#),
+      (16#FA8F#, 16#6452#),
+      (16#FA90#, 16#6556#),
+      (16#FA91#, 16#6674#),
+      (16#FA92#, 16#6717#),
+      (16#FA93#, 16#671B#),
+      (16#FA94#, 16#6756#),
+      (16#FA95#, 16#6B79#),
+      (16#FA96#, 16#6BBA#),
+      (16#FA97#, 16#6D41#),
+      (16#FA98#, 16#6EDB#),
+      (16#FA99#, 16#6ECB#),
+      (16#FA9A#, 16#6F22#),
+      (16#FA9B#, 16#701E#),
+      (16#FA9C#, 16#716E#),
+      (16#FA9D#, 16#77A7#),
+      (16#FA9E#, 16#7235#),
+      (16#FA9F#, 16#72AF#),
+      (16#FAA0#, 16#732A#),
+      (16#FAA1#, 16#7471#),
+      (16#FAA2#, 16#7506#),
+      (16#FAA3#, 16#753B#),
+      (16#FAA4#, 16#761D#),
+      (16#FAA5#, 16#761F#),
+      (16#FAA6#, 16#76CA#),
+      (16#FAA7#, 16#76DB#),
+      (16#FAA8#, 16#76F4#),
+      (16#FAA9#, 16#774A#),
+      (16#FAAA#, 16#7740#),
+      (16#FAAB#, 16#78CC#),
+      (16#FAAC#, 16#7AB1#),
+      (16#FAAD#, 16#7BC0#),
+      (16#FAAE#, 16#7C7B#),
+      (16#FAAF#, 16#7D5B#),
+      (16#FAB0#, 16#7DF4#),
+      (16#FAB1#, 16#7F3E#),
+      (16#FAB2#, 16#8005#),
+      (16#FAB3#, 16#8352#),
+      (16#FAB4#, 16#83EF#),
+      (16#FAB5#, 16#8779#),
+      (16#FAB6#, 16#8941#),
+      (16#FAB7#, 16#8986#),
+      (16#FAB8#, 16#8996#),
+      (16#FAB9#, 16#8ABF#),
+      (16#FABA#, 16#8AF8#),
+      (16#FABB#, 16#8ACB#),
+      (16#FABC#, 16#8B01#),
+      (16#FABD#, 16#8AFE#),
+      (16#FABE#, 16#8AED#),
+      (16#FABF#, 16#8B39#),
+      (16#FAC0#, 16#8B8A#),
+      (16#FAC1#, 16#8D08#),
+      (16#FAC2#, 16#8F38#),
+      (16#FAC3#, 16#9072#),
+      (16#FAC4#, 16#9199#),
+      (16#FAC5#, 16#9276#),
+      (16#FAC6#, 16#967C#),
+      (16#FAC7#, 16#96E3#),
+      (16#FAC8#, 16#9756#),
+      (16#FAC9#, 16#97DB#),
+      (16#FACA#, 16#97FF#),
+      (16#FACB#, 16#980B#),
+      (16#FACC#, 16#983B#),
+      (16#FACD#, 16#9B12#),
+      (16#FACE#, 16#9F9C#),
+      (16#FACF#, 16#2284A#),
+      (16#FAD0#, 16#22844#),
+      (16#FAD1#, 16#233D5#),
+      (16#FAD2#, 16#3B9D#),
+      (16#FAD3#, 16#4018#),
+      (16#FAD4#, 16#4039#),
+      (16#FAD5#, 16#25249#),
+      (16#FAD6#, 16#25CD0#),
+      (16#FAD7#, 16#27ED3#),
+      (16#FAD8#, 16#9F43#),
+      (16#FAD9#, 16#9F8E#),
+      (16#FB00#, 16#0066#),
+      (16#FB01#, 16#0066#),
+      (16#FB02#, 16#0066#),
+      (16#FB03#, 16#0066#),
+      (16#FB04#, 16#0066#),
+      (16#FB05#, 16#017F#),
+      (16#FB06#, 16#0073#),
+      (16#FB13#, 16#0574#),
+      (16#FB14#, 16#0574#),
+      (16#FB15#, 16#0574#),
+      (16#FB16#, 16#057E#),
+      (16#FB17#, 16#0574#),
+      (16#FB1D#, 16#05D9#),
+      (16#FB1F#, 16#05F2#),
+      (16#FB20#, 16#05E2#),
+      (16#FB21#, 16#05D0#),
+      (16#FB22#, 16#05D3#),
+      (16#FB23#, 16#05D4#),
+      (16#FB24#, 16#05DB#),
+      (16#FB25#, 16#05DC#),
+      (16#FB26#, 16#05DD#),
+      (16#FB27#, 16#05E8#),
+      (16#FB28#, 16#05EA#),
+      (16#FB29#, 16#002B#),
+      (16#FB2A#, 16#05E9#),
+      (16#FB2B#, 16#05E9#),
+      (16#FB2C#, 16#FB49#),
+      (16#FB2D#, 16#FB49#),
+      (16#FB2E#, 16#05D0#),
+      (16#FB2F#, 16#05D0#),
+      (16#FB30#, 16#05D0#),
+      (16#FB31#, 16#05D1#),
+      (16#FB32#, 16#05D2#),
+      (16#FB33#, 16#05D3#),
+      (16#FB34#, 16#05D4#),
+      (16#FB35#, 16#05D5#),
+      (16#FB36#, 16#05D6#),
+      (16#FB38#, 16#05D8#),
+      (16#FB39#, 16#05D9#),
+      (16#FB3A#, 16#05DA#),
+      (16#FB3B#, 16#05DB#),
+      (16#FB3C#, 16#05DC#),
+      (16#FB3E#, 16#05DE#),
+      (16#FB40#, 16#05E0#),
+      (16#FB41#, 16#05E1#),
+      (16#FB43#, 16#05E3#),
+      (16#FB44#, 16#05E4#),
+      (16#FB46#, 16#05E6#),
+      (16#FB47#, 16#05E7#),
+      (16#FB48#, 16#05E8#),
+      (16#FB49#, 16#05E9#),
+      (16#FB4A#, 16#05EA#),
+      (16#FB4B#, 16#05D5#),
+      (16#FB4C#, 16#05D1#),
+      (16#FB4D#, 16#05DB#),
+      (16#FB4E#, 16#05E4#),
+      (16#FB4F#, 16#05D0#),
+      (16#FB50#, 16#0671#),
+      (16#FB51#, 16#0671#),
+      (16#FB52#, 16#067B#),
+      (16#FB53#, 16#067B#),
+      (16#FB54#, 16#067B#),
+      (16#FB55#, 16#067B#),
+      (16#FB56#, 16#067E#),
+      (16#FB57#, 16#067E#),
+      (16#FB58#, 16#067E#),
+      (16#FB59#, 16#067E#),
+      (16#FB5A#, 16#0680#),
+      (16#FB5B#, 16#0680#),
+      (16#FB5C#, 16#0680#),
+      (16#FB5D#, 16#0680#),
+      (16#FB5E#, 16#067A#),
+      (16#FB5F#, 16#067A#),
+      (16#FB60#, 16#067A#),
+      (16#FB61#, 16#067A#),
+      (16#FB62#, 16#067F#),
+      (16#FB63#, 16#067F#),
+      (16#FB64#, 16#067F#),
+      (16#FB65#, 16#067F#),
+      (16#FB66#, 16#0679#),
+      (16#FB67#, 16#0679#),
+      (16#FB68#, 16#0679#),
+      (16#FB69#, 16#0679#),
+      (16#FB6A#, 16#06A4#),
+      (16#FB6B#, 16#06A4#),
+      (16#FB6C#, 16#06A4#),
+      (16#FB6D#, 16#06A4#),
+      (16#FB6E#, 16#06A6#),
+      (16#FB6F#, 16#06A6#),
+      (16#FB70#, 16#06A6#),
+      (16#FB71#, 16#06A6#),
+      (16#FB72#, 16#0684#),
+      (16#FB73#, 16#0684#),
+      (16#FB74#, 16#0684#),
+      (16#FB75#, 16#0684#),
+      (16#FB76#, 16#0683#),
+      (16#FB77#, 16#0683#),
+      (16#FB78#, 16#0683#),
+      (16#FB79#, 16#0683#),
+      (16#FB7A#, 16#0686#),
+      (16#FB7B#, 16#0686#),
+      (16#FB7C#, 16#0686#),
+      (16#FB7D#, 16#0686#),
+      (16#FB7E#, 16#0687#),
+      (16#FB7F#, 16#0687#),
+      (16#FB80#, 16#0687#),
+      (16#FB81#, 16#0687#),
+      (16#FB82#, 16#068D#),
+      (16#FB83#, 16#068D#),
+      (16#FB84#, 16#068C#),
+      (16#FB85#, 16#068C#),
+      (16#FB86#, 16#068E#),
+      (16#FB87#, 16#068E#),
+      (16#FB88#, 16#0688#),
+      (16#FB89#, 16#0688#),
+      (16#FB8A#, 16#0698#),
+      (16#FB8B#, 16#0698#),
+      (16#FB8C#, 16#0691#),
+      (16#FB8D#, 16#0691#),
+      (16#FB8E#, 16#06A9#),
+      (16#FB8F#, 16#06A9#),
+      (16#FB90#, 16#06A9#),
+      (16#FB91#, 16#06A9#),
+      (16#FB92#, 16#06AF#),
+      (16#FB93#, 16#06AF#),
+      (16#FB94#, 16#06AF#),
+      (16#FB95#, 16#06AF#),
+      (16#FB96#, 16#06B3#),
+      (16#FB97#, 16#06B3#),
+      (16#FB98#, 16#06B3#),
+      (16#FB99#, 16#06B3#),
+      (16#FB9A#, 16#06B1#),
+      (16#FB9B#, 16#06B1#),
+      (16#FB9C#, 16#06B1#),
+      (16#FB9D#, 16#06B1#),
+      (16#FB9E#, 16#06BA#),
+      (16#FB9F#, 16#06BA#),
+      (16#FBA0#, 16#06BB#),
+      (16#FBA1#, 16#06BB#),
+      (16#FBA2#, 16#06BB#),
+      (16#FBA3#, 16#06BB#),
+      (16#FBA4#, 16#06C0#),
+      (16#FBA5#, 16#06C0#),
+      (16#FBA6#, 16#06C1#),
+      (16#FBA7#, 16#06C1#),
+      (16#FBA8#, 16#06C1#),
+      (16#FBA9#, 16#06C1#),
+      (16#FBAA#, 16#06BE#),
+      (16#FBAB#, 16#06BE#),
+      (16#FBAC#, 16#06BE#),
+      (16#FBAD#, 16#06BE#),
+      (16#FBAE#, 16#06D2#),
+      (16#FBAF#, 16#06D2#),
+      (16#FBB0#, 16#06D3#),
+      (16#FBB1#, 16#06D3#),
+      (16#FBD3#, 16#06AD#),
+      (16#FBD4#, 16#06AD#),
+      (16#FBD5#, 16#06AD#),
+      (16#FBD6#, 16#06AD#),
+      (16#FBD7#, 16#06C7#),
+      (16#FBD8#, 16#06C7#),
+      (16#FBD9#, 16#06C6#),
+      (16#FBDA#, 16#06C6#),
+      (16#FBDB#, 16#06C8#),
+      (16#FBDC#, 16#06C8#),
+      (16#FBDD#, 16#0677#),
+      (16#FBDE#, 16#06CB#),
+      (16#FBDF#, 16#06CB#),
+      (16#FBE0#, 16#06C5#),
+      (16#FBE1#, 16#06C5#),
+      (16#FBE2#, 16#06C9#),
+      (16#FBE3#, 16#06C9#),
+      (16#FBE4#, 16#06D0#),
+      (16#FBE5#, 16#06D0#),
+      (16#FBE6#, 16#06D0#),
+      (16#FBE7#, 16#06D0#),
+      (16#FBE8#, 16#0649#),
+      (16#FBE9#, 16#0649#),
+      (16#FBEA#, 16#0626#),
+      (16#FBEB#, 16#0626#),
+      (16#FBEC#, 16#0626#),
+      (16#FBED#, 16#0626#),
+      (16#FBEE#, 16#0626#),
+      (16#FBEF#, 16#0626#),
+      (16#FBF0#, 16#0626#),
+      (16#FBF1#, 16#0626#),
+      (16#FBF2#, 16#0626#),
+      (16#FBF3#, 16#0626#),
+      (16#FBF4#, 16#0626#),
+      (16#FBF5#, 16#0626#),
+      (16#FBF6#, 16#0626#),
+      (16#FBF7#, 16#0626#),
+      (16#FBF8#, 16#0626#),
+      (16#FBF9#, 16#0626#),
+      (16#FBFA#, 16#0626#),
+      (16#FBFB#, 16#0626#),
+      (16#FBFC#, 16#06CC#),
+      (16#FBFD#, 16#06CC#),
+      (16#FBFE#, 16#06CC#),
+      (16#FBFF#, 16#06CC#),
+      (16#FC00#, 16#0626#),
+      (16#FC01#, 16#0626#),
+      (16#FC02#, 16#0626#),
+      (16#FC03#, 16#0626#),
+      (16#FC04#, 16#0626#),
+      (16#FC05#, 16#0628#),
+      (16#FC06#, 16#0628#),
+      (16#FC07#, 16#0628#),
+      (16#FC08#, 16#0628#),
+      (16#FC09#, 16#0628#),
+      (16#FC0A#, 16#0628#),
+      (16#FC0B#, 16#062A#),
+      (16#FC0C#, 16#062A#),
+      (16#FC0D#, 16#062A#),
+      (16#FC0E#, 16#062A#),
+      (16#FC0F#, 16#062A#),
+      (16#FC10#, 16#062A#),
+      (16#FC11#, 16#062B#),
+      (16#FC12#, 16#062B#),
+      (16#FC13#, 16#062B#),
+      (16#FC14#, 16#062B#),
+      (16#FC15#, 16#062C#),
+      (16#FC16#, 16#062C#),
+      (16#FC17#, 16#062D#),
+      (16#FC18#, 16#062D#),
+      (16#FC19#, 16#062E#),
+      (16#FC1A#, 16#062E#),
+      (16#FC1B#, 16#062E#),
+      (16#FC1C#, 16#0633#),
+      (16#FC1D#, 16#0633#),
+      (16#FC1E#, 16#0633#),
+      (16#FC1F#, 16#0633#),
+      (16#FC20#, 16#0635#),
+      (16#FC21#, 16#0635#),
+      (16#FC22#, 16#0636#),
+      (16#FC23#, 16#0636#),
+      (16#FC24#, 16#0636#),
+      (16#FC25#, 16#0636#),
+      (16#FC26#, 16#0637#),
+      (16#FC27#, 16#0637#),
+      (16#FC28#, 16#0638#),
+      (16#FC29#, 16#0639#),
+      (16#FC2A#, 16#0639#),
+      (16#FC2B#, 16#063A#),
+      (16#FC2C#, 16#063A#),
+      (16#FC2D#, 16#0641#),
+      (16#FC2E#, 16#0641#),
+      (16#FC2F#, 16#0641#),
+      (16#FC30#, 16#0641#),
+      (16#FC31#, 16#0641#),
+      (16#FC32#, 16#0641#),
+      (16#FC33#, 16#0642#),
+      (16#FC34#, 16#0642#),
+      (16#FC35#, 16#0642#),
+      (16#FC36#, 16#0642#),
+      (16#FC37#, 16#0643#),
+      (16#FC38#, 16#0643#),
+      (16#FC39#, 16#0643#),
+      (16#FC3A#, 16#0643#),
+      (16#FC3B#, 16#0643#),
+      (16#FC3C#, 16#0643#),
+      (16#FC3D#, 16#0643#),
+      (16#FC3E#, 16#0643#),
+      (16#FC3F#, 16#0644#),
+      (16#FC40#, 16#0644#),
+      (16#FC41#, 16#0644#),
+      (16#FC42#, 16#0644#),
+      (16#FC43#, 16#0644#),
+      (16#FC44#, 16#0644#),
+      (16#FC45#, 16#0645#),
+      (16#FC46#, 16#0645#),
+      (16#FC47#, 16#0645#),
+      (16#FC48#, 16#0645#),
+      (16#FC49#, 16#0645#),
+      (16#FC4A#, 16#0645#),
+      (16#FC4B#, 16#0646#),
+      (16#FC4C#, 16#0646#),
+      (16#FC4D#, 16#0646#),
+      (16#FC4E#, 16#0646#),
+      (16#FC4F#, 16#0646#),
+      (16#FC50#, 16#0646#),
+      (16#FC51#, 16#0647#),
+      (16#FC52#, 16#0647#),
+      (16#FC53#, 16#0647#),
+      (16#FC54#, 16#0647#),
+      (16#FC55#, 16#064A#),
+      (16#FC56#, 16#064A#),
+      (16#FC57#, 16#064A#),
+      (16#FC58#, 16#064A#),
+      (16#FC59#, 16#064A#),
+      (16#FC5A#, 16#064A#),
+      (16#FC5B#, 16#0630#),
+      (16#FC5C#, 16#0631#),
+      (16#FC5D#, 16#0649#),
+      (16#FC5E#, 16#0020#),
+      (16#FC5F#, 16#0020#),
+      (16#FC60#, 16#0020#),
+      (16#FC61#, 16#0020#),
+      (16#FC62#, 16#0020#),
+      (16#FC63#, 16#0020#),
+      (16#FC64#, 16#0626#),
+      (16#FC65#, 16#0626#),
+      (16#FC66#, 16#0626#),
+      (16#FC67#, 16#0626#),
+      (16#FC68#, 16#0626#),
+      (16#FC69#, 16#0626#),
+      (16#FC6A#, 16#0628#),
+      (16#FC6B#, 16#0628#),
+      (16#FC6C#, 16#0628#),
+      (16#FC6D#, 16#0628#),
+      (16#FC6E#, 16#0628#),
+      (16#FC6F#, 16#0628#),
+      (16#FC70#, 16#062A#),
+      (16#FC71#, 16#062A#),
+      (16#FC72#, 16#062A#),
+      (16#FC73#, 16#062A#),
+      (16#FC74#, 16#062A#),
+      (16#FC75#, 16#062A#),
+      (16#FC76#, 16#062B#),
+      (16#FC77#, 16#062B#),
+      (16#FC78#, 16#062B#),
+      (16#FC79#, 16#062B#),
+      (16#FC7A#, 16#062B#),
+      (16#FC7B#, 16#062B#),
+      (16#FC7C#, 16#0641#),
+      (16#FC7D#, 16#0641#),
+      (16#FC7E#, 16#0642#),
+      (16#FC7F#, 16#0642#),
+      (16#FC80#, 16#0643#),
+      (16#FC81#, 16#0643#),
+      (16#FC82#, 16#0643#),
+      (16#FC83#, 16#0643#),
+      (16#FC84#, 16#0643#),
+      (16#FC85#, 16#0644#),
+      (16#FC86#, 16#0644#),
+      (16#FC87#, 16#0644#),
+      (16#FC88#, 16#0645#),
+      (16#FC89#, 16#0645#),
+      (16#FC8A#, 16#0646#),
+      (16#FC8B#, 16#0646#),
+      (16#FC8C#, 16#0646#),
+      (16#FC8D#, 16#0646#),
+      (16#FC8E#, 16#0646#),
+      (16#FC8F#, 16#0646#),
+      (16#FC90#, 16#0649#),
+      (16#FC91#, 16#064A#),
+      (16#FC92#, 16#064A#),
+      (16#FC93#, 16#064A#),
+      (16#FC94#, 16#064A#),
+      (16#FC95#, 16#064A#),
+      (16#FC96#, 16#064A#),
+      (16#FC97#, 16#0626#),
+      (16#FC98#, 16#0626#),
+      (16#FC99#, 16#0626#),
+      (16#FC9A#, 16#0626#),
+      (16#FC9B#, 16#0626#),
+      (16#FC9C#, 16#0628#),
+      (16#FC9D#, 16#0628#),
+      (16#FC9E#, 16#0628#),
+      (16#FC9F#, 16#0628#),
+      (16#FCA0#, 16#0628#),
+      (16#FCA1#, 16#062A#),
+      (16#FCA2#, 16#062A#),
+      (16#FCA3#, 16#062A#),
+      (16#FCA4#, 16#062A#),
+      (16#FCA5#, 16#062A#),
+      (16#FCA6#, 16#062B#),
+      (16#FCA7#, 16#062C#),
+      (16#FCA8#, 16#062C#),
+      (16#FCA9#, 16#062D#),
+      (16#FCAA#, 16#062D#),
+      (16#FCAB#, 16#062E#),
+      (16#FCAC#, 16#062E#),
+      (16#FCAD#, 16#0633#),
+      (16#FCAE#, 16#0633#),
+      (16#FCAF#, 16#0633#),
+      (16#FCB0#, 16#0633#),
+      (16#FCB1#, 16#0635#),
+      (16#FCB2#, 16#0635#),
+      (16#FCB3#, 16#0635#),
+      (16#FCB4#, 16#0636#),
+      (16#FCB5#, 16#0636#),
+      (16#FCB6#, 16#0636#),
+      (16#FCB7#, 16#0636#),
+      (16#FCB8#, 16#0637#),
+      (16#FCB9#, 16#0638#),
+      (16#FCBA#, 16#0639#),
+      (16#FCBB#, 16#0639#),
+      (16#FCBC#, 16#063A#),
+      (16#FCBD#, 16#063A#),
+      (16#FCBE#, 16#0641#),
+      (16#FCBF#, 16#0641#),
+      (16#FCC0#, 16#0641#),
+      (16#FCC1#, 16#0641#),
+      (16#FCC2#, 16#0642#),
+      (16#FCC3#, 16#0642#),
+      (16#FCC4#, 16#0643#),
+      (16#FCC5#, 16#0643#),
+      (16#FCC6#, 16#0643#),
+      (16#FCC7#, 16#0643#),
+      (16#FCC8#, 16#0643#),
+      (16#FCC9#, 16#0644#),
+      (16#FCCA#, 16#0644#),
+      (16#FCCB#, 16#0644#),
+      (16#FCCC#, 16#0644#),
+      (16#FCCD#, 16#0644#),
+      (16#FCCE#, 16#0645#),
+      (16#FCCF#, 16#0645#),
+      (16#FCD0#, 16#0645#),
+      (16#FCD1#, 16#0645#),
+      (16#FCD2#, 16#0646#),
+      (16#FCD3#, 16#0646#),
+      (16#FCD4#, 16#0646#),
+      (16#FCD5#, 16#0646#),
+      (16#FCD6#, 16#0646#),
+      (16#FCD7#, 16#0647#),
+      (16#FCD8#, 16#0647#),
+      (16#FCD9#, 16#0647#),
+      (16#FCDA#, 16#064A#),
+      (16#FCDB#, 16#064A#),
+      (16#FCDC#, 16#064A#),
+      (16#FCDD#, 16#064A#),
+      (16#FCDE#, 16#064A#),
+      (16#FCDF#, 16#0626#),
+      (16#FCE0#, 16#0626#),
+      (16#FCE1#, 16#0628#),
+      (16#FCE2#, 16#0628#),
+      (16#FCE3#, 16#062A#),
+      (16#FCE4#, 16#062A#),
+      (16#FCE5#, 16#062B#),
+      (16#FCE6#, 16#062B#),
+      (16#FCE7#, 16#0633#),
+      (16#FCE8#, 16#0633#),
+      (16#FCE9#, 16#0634#),
+      (16#FCEA#, 16#0634#),
+      (16#FCEB#, 16#0643#),
+      (16#FCEC#, 16#0643#),
+      (16#FCED#, 16#0644#),
+      (16#FCEE#, 16#0646#),
+      (16#FCEF#, 16#0646#),
+      (16#FCF0#, 16#064A#),
+      (16#FCF1#, 16#064A#),
+      (16#FCF2#, 16#0640#),
+      (16#FCF3#, 16#0640#),
+      (16#FCF4#, 16#0640#),
+      (16#FCF5#, 16#0637#),
+      (16#FCF6#, 16#0637#),
+      (16#FCF7#, 16#0639#),
+      (16#FCF8#, 16#0639#),
+      (16#FCF9#, 16#063A#),
+      (16#FCFA#, 16#063A#),
+      (16#FCFB#, 16#0633#),
+      (16#FCFC#, 16#0633#),
+      (16#FCFD#, 16#0634#),
+      (16#FCFE#, 16#0634#),
+      (16#FCFF#, 16#062D#),
+      (16#FD00#, 16#062D#),
+      (16#FD01#, 16#062C#),
+      (16#FD02#, 16#062C#),
+      (16#FD03#, 16#062E#),
+      (16#FD04#, 16#062E#),
+      (16#FD05#, 16#0635#),
+      (16#FD06#, 16#0635#),
+      (16#FD07#, 16#0636#),
+      (16#FD08#, 16#0636#),
+      (16#FD09#, 16#0634#),
+      (16#FD0A#, 16#0634#),
+      (16#FD0B#, 16#0634#),
+      (16#FD0C#, 16#0634#),
+      (16#FD0D#, 16#0634#),
+      (16#FD0E#, 16#0633#),
+      (16#FD0F#, 16#0635#),
+      (16#FD10#, 16#0636#),
+      (16#FD11#, 16#0637#),
+      (16#FD12#, 16#0637#),
+      (16#FD13#, 16#0639#),
+      (16#FD14#, 16#0639#),
+      (16#FD15#, 16#063A#),
+      (16#FD16#, 16#063A#),
+      (16#FD17#, 16#0633#),
+      (16#FD18#, 16#0633#),
+      (16#FD19#, 16#0634#),
+      (16#FD1A#, 16#0634#),
+      (16#FD1B#, 16#062D#),
+      (16#FD1C#, 16#062D#),
+      (16#FD1D#, 16#062C#),
+      (16#FD1E#, 16#062C#),
+      (16#FD1F#, 16#062E#),
+      (16#FD20#, 16#062E#),
+      (16#FD21#, 16#0635#),
+      (16#FD22#, 16#0635#),
+      (16#FD23#, 16#0636#),
+      (16#FD24#, 16#0636#),
+      (16#FD25#, 16#0634#),
+      (16#FD26#, 16#0634#),
+      (16#FD27#, 16#0634#),
+      (16#FD28#, 16#0634#),
+      (16#FD29#, 16#0634#),
+      (16#FD2A#, 16#0633#),
+      (16#FD2B#, 16#0635#),
+      (16#FD2C#, 16#0636#),
+      (16#FD2D#, 16#0634#),
+      (16#FD2E#, 16#0634#),
+      (16#FD2F#, 16#0634#),
+      (16#FD30#, 16#0634#),
+      (16#FD31#, 16#0633#),
+      (16#FD32#, 16#0634#),
+      (16#FD33#, 16#0637#),
+      (16#FD34#, 16#0633#),
+      (16#FD35#, 16#0633#),
+      (16#FD36#, 16#0633#),
+      (16#FD37#, 16#0634#),
+      (16#FD38#, 16#0634#),
+      (16#FD39#, 16#0634#),
+      (16#FD3A#, 16#0637#),
+      (16#FD3B#, 16#0638#),
+      (16#FD3C#, 16#0627#),
+      (16#FD3D#, 16#0627#),
+      (16#FD50#, 16#062A#),
+      (16#FD51#, 16#062A#),
+      (16#FD52#, 16#062A#),
+      (16#FD53#, 16#062A#),
+      (16#FD54#, 16#062A#),
+      (16#FD55#, 16#062A#),
+      (16#FD56#, 16#062A#),
+      (16#FD57#, 16#062A#),
+      (16#FD58#, 16#062C#),
+      (16#FD59#, 16#062C#),
+      (16#FD5A#, 16#062D#),
+      (16#FD5B#, 16#062D#),
+      (16#FD5C#, 16#0633#),
+      (16#FD5D#, 16#0633#),
+      (16#FD5E#, 16#0633#),
+      (16#FD5F#, 16#0633#),
+      (16#FD60#, 16#0633#),
+      (16#FD61#, 16#0633#),
+      (16#FD62#, 16#0633#),
+      (16#FD63#, 16#0633#),
+      (16#FD64#, 16#0635#),
+      (16#FD65#, 16#0635#),
+      (16#FD66#, 16#0635#),
+      (16#FD67#, 16#0634#),
+      (16#FD68#, 16#0634#),
+      (16#FD69#, 16#0634#),
+      (16#FD6A#, 16#0634#),
+      (16#FD6B#, 16#0634#),
+      (16#FD6C#, 16#0634#),
+      (16#FD6D#, 16#0634#),
+      (16#FD6E#, 16#0636#),
+      (16#FD6F#, 16#0636#),
+      (16#FD70#, 16#0636#),
+      (16#FD71#, 16#0637#),
+      (16#FD72#, 16#0637#),
+      (16#FD73#, 16#0637#),
+      (16#FD74#, 16#0637#),
+      (16#FD75#, 16#0639#),
+      (16#FD76#, 16#0639#),
+      (16#FD77#, 16#0639#),
+      (16#FD78#, 16#0639#),
+      (16#FD79#, 16#063A#),
+      (16#FD7A#, 16#063A#),
+      (16#FD7B#, 16#063A#),
+      (16#FD7C#, 16#0641#),
+      (16#FD7D#, 16#0641#),
+      (16#FD7E#, 16#0642#),
+      (16#FD7F#, 16#0642#),
+      (16#FD80#, 16#0644#),
+      (16#FD81#, 16#0644#),
+      (16#FD82#, 16#0644#),
+      (16#FD83#, 16#0644#),
+      (16#FD84#, 16#0644#),
+      (16#FD85#, 16#0644#),
+      (16#FD86#, 16#0644#),
+      (16#FD87#, 16#0644#),
+      (16#FD88#, 16#0644#),
+      (16#FD89#, 16#0645#),
+      (16#FD8A#, 16#0645#),
+      (16#FD8B#, 16#0645#),
+      (16#FD8C#, 16#0645#),
+      (16#FD8D#, 16#0645#),
+      (16#FD8E#, 16#0645#),
+      (16#FD8F#, 16#0645#),
+      (16#FD92#, 16#0645#),
+      (16#FD93#, 16#0647#),
+      (16#FD94#, 16#0647#),
+      (16#FD95#, 16#0646#),
+      (16#FD96#, 16#0646#),
+      (16#FD97#, 16#0646#),
+      (16#FD98#, 16#0646#),
+      (16#FD99#, 16#0646#),
+      (16#FD9A#, 16#0646#),
+      (16#FD9B#, 16#0646#),
+      (16#FD9C#, 16#064A#),
+      (16#FD9D#, 16#064A#),
+      (16#FD9E#, 16#0628#),
+      (16#FD9F#, 16#062A#),
+      (16#FDA0#, 16#062A#),
+      (16#FDA1#, 16#062A#),
+      (16#FDA2#, 16#062A#),
+      (16#FDA3#, 16#062A#),
+      (16#FDA4#, 16#062A#),
+      (16#FDA5#, 16#062C#),
+      (16#FDA6#, 16#062C#),
+      (16#FDA7#, 16#062C#),
+      (16#FDA8#, 16#0633#),
+      (16#FDA9#, 16#0635#),
+      (16#FDAA#, 16#0634#),
+      (16#FDAB#, 16#0636#),
+      (16#FDAC#, 16#0644#),
+      (16#FDAD#, 16#0644#),
+      (16#FDAE#, 16#064A#),
+      (16#FDAF#, 16#064A#),
+      (16#FDB0#, 16#064A#),
+      (16#FDB1#, 16#0645#),
+      (16#FDB2#, 16#0642#),
+      (16#FDB3#, 16#0646#),
+      (16#FDB4#, 16#0642#),
+      (16#FDB5#, 16#0644#),
+      (16#FDB6#, 16#0639#),
+      (16#FDB7#, 16#0643#),
+      (16#FDB8#, 16#0646#),
+      (16#FDB9#, 16#0645#),
+      (16#FDBA#, 16#0644#),
+      (16#FDBB#, 16#0643#),
+      (16#FDBC#, 16#0644#),
+      (16#FDBD#, 16#0646#),
+      (16#FDBE#, 16#062C#),
+      (16#FDBF#, 16#062D#),
+      (16#FDC0#, 16#0645#),
+      (16#FDC1#, 16#0641#),
+      (16#FDC2#, 16#0628#),
+      (16#FDC3#, 16#0643#),
+      (16#FDC4#, 16#0639#),
+      (16#FDC5#, 16#0635#),
+      (16#FDC6#, 16#0633#),
+      (16#FDC7#, 16#0646#),
+      (16#FDF0#, 16#0635#),
+      (16#FDF1#, 16#0642#),
+      (16#FDF2#, 16#0627#),
+      (16#FDF3#, 16#0627#),
+      (16#FDF4#, 16#0645#),
+      (16#FDF5#, 16#0635#),
+      (16#FDF6#, 16#0631#),
+      (16#FDF7#, 16#0639#),
+      (16#FDF8#, 16#0648#),
+      (16#FDF9#, 16#0635#),
+      (16#FDFA#, 16#0635#),
+      (16#FDFB#, 16#062C#),
+      (16#FDFC#, 16#0631#),
+      (16#FE10#, 16#002C#),
+      (16#FE11#, 16#3001#),
+      (16#FE12#, 16#3002#),
+      (16#FE13#, 16#003A#),
+      (16#FE14#, 16#003B#),
+      (16#FE15#, 16#0021#),
+      (16#FE16#, 16#003F#),
+      (16#FE17#, 16#3016#),
+      (16#FE18#, 16#3017#),
+      (16#FE19#, 16#2026#),
+      (16#FE30#, 16#2025#),
+      (16#FE31#, 16#2014#),
+      (16#FE32#, 16#2013#),
+      (16#FE33#, 16#005F#),
+      (16#FE34#, 16#005F#),
+      (16#FE35#, 16#0028#),
+      (16#FE36#, 16#0029#),
+      (16#FE37#, 16#007B#),
+      (16#FE38#, 16#007D#),
+      (16#FE39#, 16#3014#),
+      (16#FE3A#, 16#3015#),
+      (16#FE3B#, 16#3010#),
+      (16#FE3C#, 16#3011#),
+      (16#FE3D#, 16#300A#),
+      (16#FE3E#, 16#300B#),
+      (16#FE3F#, 16#3008#),
+      (16#FE40#, 16#3009#),
+      (16#FE41#, 16#300C#),
+      (16#FE42#, 16#300D#),
+      (16#FE43#, 16#300E#),
+      (16#FE44#, 16#300F#),
+      (16#FE47#, 16#005B#),
+      (16#FE48#, 16#005D#),
+      (16#FE49#, 16#203E#),
+      (16#FE4A#, 16#203E#),
+      (16#FE4B#, 16#203E#),
+      (16#FE4C#, 16#203E#),
+      (16#FE4D#, 16#005F#),
+      (16#FE4E#, 16#005F#),
+      (16#FE4F#, 16#005F#),
+      (16#FE50#, 16#002C#),
+      (16#FE51#, 16#3001#),
+      (16#FE52#, 16#002E#),
+      (16#FE54#, 16#003B#),
+      (16#FE55#, 16#003A#),
+      (16#FE56#, 16#003F#),
+      (16#FE57#, 16#0021#),
+      (16#FE58#, 16#2014#),
+      (16#FE59#, 16#0028#),
+      (16#FE5A#, 16#0029#),
+      (16#FE5B#, 16#007B#),
+      (16#FE5C#, 16#007D#),
+      (16#FE5D#, 16#3014#),
+      (16#FE5E#, 16#3015#),
+      (16#FE5F#, 16#0023#),
+      (16#FE60#, 16#0026#),
+      (16#FE61#, 16#002A#),
+      (16#FE62#, 16#002B#),
+      (16#FE63#, 16#002D#),
+      (16#FE64#, 16#003C#),
+      (16#FE65#, 16#003E#),
+      (16#FE66#, 16#003D#),
+      (16#FE68#, 16#005C#),
+      (16#FE69#, 16#0024#),
+      (16#FE6A#, 16#0025#),
+      (16#FE6B#, 16#0040#),
+      (16#FE70#, 16#0020#),
+      (16#FE71#, 16#0640#),
+      (16#FE72#, 16#0020#),
+      (16#FE74#, 16#0020#),
+      (16#FE76#, 16#0020#),
+      (16#FE77#, 16#0640#),
+      (16#FE78#, 16#0020#),
+      (16#FE79#, 16#0640#),
+      (16#FE7A#, 16#0020#),
+      (16#FE7B#, 16#0640#),
+      (16#FE7C#, 16#0020#),
+      (16#FE7D#, 16#0640#),
+      (16#FE7E#, 16#0020#),
+      (16#FE7F#, 16#0640#),
+      (16#FE80#, 16#0621#),
+      (16#FE81#, 16#0622#),
+      (16#FE82#, 16#0622#),
+      (16#FE83#, 16#0623#),
+      (16#FE84#, 16#0623#),
+      (16#FE85#, 16#0624#),
+      (16#FE86#, 16#0624#),
+      (16#FE87#, 16#0625#),
+      (16#FE88#, 16#0625#),
+      (16#FE89#, 16#0626#),
+      (16#FE8A#, 16#0626#),
+      (16#FE8B#, 16#0626#),
+      (16#FE8C#, 16#0626#),
+      (16#FE8D#, 16#0627#),
+      (16#FE8E#, 16#0627#),
+      (16#FE8F#, 16#0628#),
+      (16#FE90#, 16#0628#),
+      (16#FE91#, 16#0628#),
+      (16#FE92#, 16#0628#),
+      (16#FE93#, 16#0629#),
+      (16#FE94#, 16#0629#),
+      (16#FE95#, 16#062A#),
+      (16#FE96#, 16#062A#),
+      (16#FE97#, 16#062A#),
+      (16#FE98#, 16#062A#),
+      (16#FE99#, 16#062B#),
+      (16#FE9A#, 16#062B#),
+      (16#FE9B#, 16#062B#),
+      (16#FE9C#, 16#062B#),
+      (16#FE9D#, 16#062C#),
+      (16#FE9E#, 16#062C#),
+      (16#FE9F#, 16#062C#),
+      (16#FEA0#, 16#062C#),
+      (16#FEA1#, 16#062D#),
+      (16#FEA2#, 16#062D#),
+      (16#FEA3#, 16#062D#),
+      (16#FEA4#, 16#062D#),
+      (16#FEA5#, 16#062E#),
+      (16#FEA6#, 16#062E#),
+      (16#FEA7#, 16#062E#),
+      (16#FEA8#, 16#062E#),
+      (16#FEA9#, 16#062F#),
+      (16#FEAA#, 16#062F#),
+      (16#FEAB#, 16#0630#),
+      (16#FEAC#, 16#0630#),
+      (16#FEAD#, 16#0631#),
+      (16#FEAE#, 16#0631#),
+      (16#FEAF#, 16#0632#),
+      (16#FEB0#, 16#0632#),
+      (16#FEB1#, 16#0633#),
+      (16#FEB2#, 16#0633#),
+      (16#FEB3#, 16#0633#),
+      (16#FEB4#, 16#0633#),
+      (16#FEB5#, 16#0634#),
+      (16#FEB6#, 16#0634#),
+      (16#FEB7#, 16#0634#),
+      (16#FEB8#, 16#0634#),
+      (16#FEB9#, 16#0635#),
+      (16#FEBA#, 16#0635#),
+      (16#FEBB#, 16#0635#),
+      (16#FEBC#, 16#0635#),
+      (16#FEBD#, 16#0636#),
+      (16#FEBE#, 16#0636#),
+      (16#FEBF#, 16#0636#),
+      (16#FEC0#, 16#0636#),
+      (16#FEC1#, 16#0637#),
+      (16#FEC2#, 16#0637#),
+      (16#FEC3#, 16#0637#),
+      (16#FEC4#, 16#0637#),
+      (16#FEC5#, 16#0638#),
+      (16#FEC6#, 16#0638#),
+      (16#FEC7#, 16#0638#),
+      (16#FEC8#, 16#0638#),
+      (16#FEC9#, 16#0639#),
+      (16#FECA#, 16#0639#),
+      (16#FECB#, 16#0639#),
+      (16#FECC#, 16#0639#),
+      (16#FECD#, 16#063A#),
+      (16#FECE#, 16#063A#),
+      (16#FECF#, 16#063A#),
+      (16#FED0#, 16#063A#),
+      (16#FED1#, 16#0641#),
+      (16#FED2#, 16#0641#),
+      (16#FED3#, 16#0641#),
+      (16#FED4#, 16#0641#),
+      (16#FED5#, 16#0642#),
+      (16#FED6#, 16#0642#),
+      (16#FED7#, 16#0642#),
+      (16#FED8#, 16#0642#),
+      (16#FED9#, 16#0643#),
+      (16#FEDA#, 16#0643#),
+      (16#FEDB#, 16#0643#),
+      (16#FEDC#, 16#0643#),
+      (16#FEDD#, 16#0644#),
+      (16#FEDE#, 16#0644#),
+      (16#FEDF#, 16#0644#),
+      (16#FEE0#, 16#0644#),
+      (16#FEE1#, 16#0645#),
+      (16#FEE2#, 16#0645#),
+      (16#FEE3#, 16#0645#),
+      (16#FEE4#, 16#0645#),
+      (16#FEE5#, 16#0646#),
+      (16#FEE6#, 16#0646#),
+      (16#FEE7#, 16#0646#),
+      (16#FEE8#, 16#0646#),
+      (16#FEE9#, 16#0647#),
+      (16#FEEA#, 16#0647#),
+      (16#FEEB#, 16#0647#),
+      (16#FEEC#, 16#0647#),
+      (16#FEED#, 16#0648#),
+      (16#FEEE#, 16#0648#),
+      (16#FEEF#, 16#0649#),
+      (16#FEF0#, 16#0649#),
+      (16#FEF1#, 16#064A#),
+      (16#FEF2#, 16#064A#),
+      (16#FEF3#, 16#064A#),
+      (16#FEF4#, 16#064A#),
+      (16#FEF5#, 16#0644#),
+      (16#FEF6#, 16#0644#),
+      (16#FEF7#, 16#0644#),
+      (16#FEF8#, 16#0644#),
+      (16#FEF9#, 16#0644#),
+      (16#FEFA#, 16#0644#),
+      (16#FEFB#, 16#0644#),
+      (16#FEFC#, 16#0644#),
+      (16#FF01#, 16#0021#),
+      (16#FF02#, 16#0022#),
+      (16#FF03#, 16#0023#),
+      (16#FF04#, 16#0024#),
+      (16#FF05#, 16#0025#),
+      (16#FF06#, 16#0026#),
+      (16#FF07#, 16#0027#),
+      (16#FF08#, 16#0028#),
+      (16#FF09#, 16#0029#),
+      (16#FF0A#, 16#002A#),
+      (16#FF0B#, 16#002B#),
+      (16#FF0C#, 16#002C#),
+      (16#FF0D#, 16#002D#),
+      (16#FF0E#, 16#002E#),
+      (16#FF0F#, 16#002F#),
+      (16#FF10#, 16#0030#),
+      (16#FF11#, 16#0031#),
+      (16#FF12#, 16#0032#),
+      (16#FF13#, 16#0033#),
+      (16#FF14#, 16#0034#),
+      (16#FF15#, 16#0035#),
+      (16#FF16#, 16#0036#),
+      (16#FF17#, 16#0037#),
+      (16#FF18#, 16#0038#),
+      (16#FF19#, 16#0039#),
+      (16#FF1A#, 16#003A#),
+      (16#FF1B#, 16#003B#),
+      (16#FF1C#, 16#003C#),
+      (16#FF1D#, 16#003D#),
+      (16#FF1E#, 16#003E#),
+      (16#FF1F#, 16#003F#),
+      (16#FF20#, 16#0040#),
+      (16#FF21#, 16#0041#),
+      (16#FF22#, 16#0042#),
+      (16#FF23#, 16#0043#),
+      (16#FF24#, 16#0044#),
+      (16#FF25#, 16#0045#),
+      (16#FF26#, 16#0046#),
+      (16#FF27#, 16#0047#),
+      (16#FF28#, 16#0048#),
+      (16#FF29#, 16#0049#),
+      (16#FF2A#, 16#004A#),
+      (16#FF2B#, 16#004B#),
+      (16#FF2C#, 16#004C#),
+      (16#FF2D#, 16#004D#),
+      (16#FF2E#, 16#004E#),
+      (16#FF2F#, 16#004F#),
+      (16#FF30#, 16#0050#),
+      (16#FF31#, 16#0051#),
+      (16#FF32#, 16#0052#),
+      (16#FF33#, 16#0053#),
+      (16#FF34#, 16#0054#),
+      (16#FF35#, 16#0055#),
+      (16#FF36#, 16#0056#),
+      (16#FF37#, 16#0057#),
+      (16#FF38#, 16#0058#),
+      (16#FF39#, 16#0059#),
+      (16#FF3A#, 16#005A#),
+      (16#FF3B#, 16#005B#),
+      (16#FF3C#, 16#005C#),
+      (16#FF3D#, 16#005D#),
+      (16#FF3E#, 16#005E#),
+      (16#FF3F#, 16#005F#),
+      (16#FF40#, 16#0060#),
+      (16#FF41#, 16#0061#),
+      (16#FF42#, 16#0062#),
+      (16#FF43#, 16#0063#),
+      (16#FF44#, 16#0064#),
+      (16#FF45#, 16#0065#),
+      (16#FF46#, 16#0066#),
+      (16#FF47#, 16#0067#),
+      (16#FF48#, 16#0068#),
+      (16#FF49#, 16#0069#),
+      (16#FF4A#, 16#006A#),
+      (16#FF4B#, 16#006B#),
+      (16#FF4C#, 16#006C#),
+      (16#FF4D#, 16#006D#),
+      (16#FF4E#, 16#006E#),
+      (16#FF4F#, 16#006F#),
+      (16#FF50#, 16#0070#),
+      (16#FF51#, 16#0071#),
+      (16#FF52#, 16#0072#),
+      (16#FF53#, 16#0073#),
+      (16#FF54#, 16#0074#),
+      (16#FF55#, 16#0075#),
+      (16#FF56#, 16#0076#),
+      (16#FF57#, 16#0077#),
+      (16#FF58#, 16#0078#),
+      (16#FF59#, 16#0079#),
+      (16#FF5A#, 16#007A#),
+      (16#FF5B#, 16#007B#),
+      (16#FF5C#, 16#007C#),
+      (16#FF5D#, 16#007D#),
+      (16#FF5E#, 16#007E#),
+      (16#FF5F#, 16#2985#),
+      (16#FF60#, 16#2986#),
+      (16#FF61#, 16#3002#),
+      (16#FF62#, 16#300C#),
+      (16#FF63#, 16#300D#),
+      (16#FF64#, 16#3001#),
+      (16#FF65#, 16#30FB#),
+      (16#FF66#, 16#30F2#),
+      (16#FF67#, 16#30A1#),
+      (16#FF68#, 16#30A3#),
+      (16#FF69#, 16#30A5#),
+      (16#FF6A#, 16#30A7#),
+      (16#FF6B#, 16#30A9#),
+      (16#FF6C#, 16#30E3#),
+      (16#FF6D#, 16#30E5#),
+      (16#FF6E#, 16#30E7#),
+      (16#FF6F#, 16#30C3#),
+      (16#FF70#, 16#30FC#),
+      (16#FF71#, 16#30A2#),
+      (16#FF72#, 16#30A4#),
+      (16#FF73#, 16#30A6#),
+      (16#FF74#, 16#30A8#),
+      (16#FF75#, 16#30AA#),
+      (16#FF76#, 16#30AB#),
+      (16#FF77#, 16#30AD#),
+      (16#FF78#, 16#30AF#),
+      (16#FF79#, 16#30B1#),
+      (16#FF7A#, 16#30B3#),
+      (16#FF7B#, 16#30B5#),
+      (16#FF7C#, 16#30B7#),
+      (16#FF7D#, 16#30B9#),
+      (16#FF7E#, 16#30BB#),
+      (16#FF7F#, 16#30BD#),
+      (16#FF80#, 16#30BF#),
+      (16#FF81#, 16#30C1#),
+      (16#FF82#, 16#30C4#),
+      (16#FF83#, 16#30C6#),
+      (16#FF84#, 16#30C8#),
+      (16#FF85#, 16#30CA#),
+      (16#FF86#, 16#30CB#),
+      (16#FF87#, 16#30CC#),
+      (16#FF88#, 16#30CD#),
+      (16#FF89#, 16#30CE#),
+      (16#FF8A#, 16#30CF#),
+      (16#FF8B#, 16#30D2#),
+      (16#FF8C#, 16#30D5#),
+      (16#FF8D#, 16#30D8#),
+      (16#FF8E#, 16#30DB#),
+      (16#FF8F#, 16#30DE#),
+      (16#FF90#, 16#30DF#),
+      (16#FF91#, 16#30E0#),
+      (16#FF92#, 16#30E1#),
+      (16#FF93#, 16#30E2#),
+      (16#FF94#, 16#30E4#),
+      (16#FF95#, 16#30E6#),
+      (16#FF96#, 16#30E8#),
+      (16#FF97#, 16#30E9#),
+      (16#FF98#, 16#30EA#),
+      (16#FF99#, 16#30EB#),
+      (16#FF9A#, 16#30EC#),
+      (16#FF9B#, 16#30ED#),
+      (16#FF9C#, 16#30EF#),
+      (16#FF9D#, 16#30F3#),
+      (16#FF9E#, 16#3099#),
+      (16#FF9F#, 16#309A#),
+      (16#FFA0#, 16#3164#),
+      (16#FFA1#, 16#3131#),
+      (16#FFA2#, 16#3132#),
+      (16#FFA3#, 16#3133#),
+      (16#FFA4#, 16#3134#),
+      (16#FFA5#, 16#3135#),
+      (16#FFA6#, 16#3136#),
+      (16#FFA7#, 16#3137#),
+      (16#FFA8#, 16#3138#),
+      (16#FFA9#, 16#3139#),
+      (16#FFAA#, 16#313A#),
+      (16#FFAB#, 16#313B#),
+      (16#FFAC#, 16#313C#),
+      (16#FFAD#, 16#313D#),
+      (16#FFAE#, 16#313E#),
+      (16#FFAF#, 16#313F#),
+      (16#FFB0#, 16#3140#),
+      (16#FFB1#, 16#3141#),
+      (16#FFB2#, 16#3142#),
+      (16#FFB3#, 16#3143#),
+      (16#FFB4#, 16#3144#),
+      (16#FFB5#, 16#3145#),
+      (16#FFB6#, 16#3146#),
+      (16#FFB7#, 16#3147#),
+      (16#FFB8#, 16#3148#),
+      (16#FFB9#, 16#3149#),
+      (16#FFBA#, 16#314A#),
+      (16#FFBB#, 16#314B#),
+      (16#FFBC#, 16#314C#),
+      (16#FFBD#, 16#314D#),
+      (16#FFBE#, 16#314E#),
+      (16#FFC2#, 16#314F#),
+      (16#FFC3#, 16#3150#),
+      (16#FFC4#, 16#3151#),
+      (16#FFC5#, 16#3152#),
+      (16#FFC6#, 16#3153#),
+      (16#FFC7#, 16#3154#),
+      (16#FFCA#, 16#3155#),
+      (16#FFCB#, 16#3156#),
+      (16#FFCC#, 16#3157#),
+      (16#FFCD#, 16#3158#),
+      (16#FFCE#, 16#3159#),
+      (16#FFCF#, 16#315A#),
+      (16#FFD2#, 16#315B#),
+      (16#FFD3#, 16#315C#),
+      (16#FFD4#, 16#315D#),
+      (16#FFD5#, 16#315E#),
+      (16#FFD6#, 16#315F#),
+      (16#FFD7#, 16#3160#),
+      (16#FFDA#, 16#3161#),
+      (16#FFDB#, 16#3162#),
+      (16#FFDC#, 16#3163#),
+      (16#FFE0#, 16#00A2#),
+      (16#FFE1#, 16#00A3#),
+      (16#FFE2#, 16#00AC#),
+      (16#FFE3#, 16#00AF#),
+      (16#FFE4#, 16#00A6#),
+      (16#FFE5#, 16#00A5#),
+      (16#FFE6#, 16#20A9#),
+      (16#FFE8#, 16#2502#),
+      (16#FFE9#, 16#2190#),
+      (16#FFEA#, 16#2191#),
+      (16#FFEB#, 16#2192#),
+      (16#FFEC#, 16#2193#),
+      (16#FFED#, 16#25A0#),
+      (16#FFEE#, 16#25CB#),
+      (16#1109A#, 16#11099#),
+      (16#1109C#, 16#1109B#),
+      (16#110AB#, 16#110A5#),
+      (16#1112E#, 16#11131#),
+      (16#1112F#, 16#11132#),
+      (16#1134B#, 16#11347#),
+      (16#1134C#, 16#11347#),
+      (16#114BB#, 16#114B9#),
+      (16#114BC#, 16#114B9#),
+      (16#114BE#, 16#114B9#),
+      (16#115BA#, 16#115B8#),
+      (16#115BB#, 16#115B9#),
+      (16#11938#, 16#11935#),
+      (16#1D15E#, 16#1D157#),
+      (16#1D15F#, 16#1D158#),
+      (16#1D160#, 16#1D15F#),
+      (16#1D161#, 16#1D15F#),
+      (16#1D162#, 16#1D15F#),
+      (16#1D163#, 16#1D15F#),
+      (16#1D164#, 16#1D15F#),
+      (16#1D1BB#, 16#1D1B9#),
+      (16#1D1BC#, 16#1D1BA#),
+      (16#1D1BD#, 16#1D1BB#),
+      (16#1D1BE#, 16#1D1BC#),
+      (16#1D1BF#, 16#1D1BB#),
+      (16#1D1C0#, 16#1D1BC#),
+      (16#1D400#, 16#0041#),
+      (16#1D401#, 16#0042#),
+      (16#1D402#, 16#0043#),
+      (16#1D403#, 16#0044#),
+      (16#1D404#, 16#0045#),
+      (16#1D405#, 16#0046#),
+      (16#1D406#, 16#0047#),
+      (16#1D407#, 16#0048#),
+      (16#1D408#, 16#0049#),
+      (16#1D409#, 16#004A#),
+      (16#1D40A#, 16#004B#),
+      (16#1D40B#, 16#004C#),
+      (16#1D40C#, 16#004D#),
+      (16#1D40D#, 16#004E#),
+      (16#1D40E#, 16#004F#),
+      (16#1D40F#, 16#0050#),
+      (16#1D410#, 16#0051#),
+      (16#1D411#, 16#0052#),
+      (16#1D412#, 16#0053#),
+      (16#1D413#, 16#0054#),
+      (16#1D414#, 16#0055#),
+      (16#1D415#, 16#0056#),
+      (16#1D416#, 16#0057#),
+      (16#1D417#, 16#0058#),
+      (16#1D418#, 16#0059#),
+      (16#1D419#, 16#005A#),
+      (16#1D41A#, 16#0061#),
+      (16#1D41B#, 16#0062#),
+      (16#1D41C#, 16#0063#),
+      (16#1D41D#, 16#0064#),
+      (16#1D41E#, 16#0065#),
+      (16#1D41F#, 16#0066#),
+      (16#1D420#, 16#0067#),
+      (16#1D421#, 16#0068#),
+      (16#1D422#, 16#0069#),
+      (16#1D423#, 16#006A#),
+      (16#1D424#, 16#006B#),
+      (16#1D425#, 16#006C#),
+      (16#1D426#, 16#006D#),
+      (16#1D427#, 16#006E#),
+      (16#1D428#, 16#006F#),
+      (16#1D429#, 16#0070#),
+      (16#1D42A#, 16#0071#),
+      (16#1D42B#, 16#0072#),
+      (16#1D42C#, 16#0073#),
+      (16#1D42D#, 16#0074#),
+      (16#1D42E#, 16#0075#),
+      (16#1D42F#, 16#0076#),
+      (16#1D430#, 16#0077#),
+      (16#1D431#, 16#0078#),
+      (16#1D432#, 16#0079#),
+      (16#1D433#, 16#007A#),
+      (16#1D434#, 16#0041#),
+      (16#1D435#, 16#0042#),
+      (16#1D436#, 16#0043#),
+      (16#1D437#, 16#0044#),
+      (16#1D438#, 16#0045#),
+      (16#1D439#, 16#0046#),
+      (16#1D43A#, 16#0047#),
+      (16#1D43B#, 16#0048#),
+      (16#1D43C#, 16#0049#),
+      (16#1D43D#, 16#004A#),
+      (16#1D43E#, 16#004B#),
+      (16#1D43F#, 16#004C#),
+      (16#1D440#, 16#004D#),
+      (16#1D441#, 16#004E#),
+      (16#1D442#, 16#004F#),
+      (16#1D443#, 16#0050#),
+      (16#1D444#, 16#0051#),
+      (16#1D445#, 16#0052#),
+      (16#1D446#, 16#0053#),
+      (16#1D447#, 16#0054#),
+      (16#1D448#, 16#0055#),
+      (16#1D449#, 16#0056#),
+      (16#1D44A#, 16#0057#),
+      (16#1D44B#, 16#0058#),
+      (16#1D44C#, 16#0059#),
+      (16#1D44D#, 16#005A#),
+      (16#1D44E#, 16#0061#),
+      (16#1D44F#, 16#0062#),
+      (16#1D450#, 16#0063#),
+      (16#1D451#, 16#0064#),
+      (16#1D452#, 16#0065#),
+      (16#1D453#, 16#0066#),
+      (16#1D454#, 16#0067#),
+      (16#1D456#, 16#0069#),
+      (16#1D457#, 16#006A#),
+      (16#1D458#, 16#006B#),
+      (16#1D459#, 16#006C#),
+      (16#1D45A#, 16#006D#),
+      (16#1D45B#, 16#006E#),
+      (16#1D45C#, 16#006F#),
+      (16#1D45D#, 16#0070#),
+      (16#1D45E#, 16#0071#),
+      (16#1D45F#, 16#0072#),
+      (16#1D460#, 16#0073#),
+      (16#1D461#, 16#0074#),
+      (16#1D462#, 16#0075#),
+      (16#1D463#, 16#0076#),
+      (16#1D464#, 16#0077#),
+      (16#1D465#, 16#0078#),
+      (16#1D466#, 16#0079#),
+      (16#1D467#, 16#007A#),
+      (16#1D468#, 16#0041#),
+      (16#1D469#, 16#0042#),
+      (16#1D46A#, 16#0043#),
+      (16#1D46B#, 16#0044#),
+      (16#1D46C#, 16#0045#),
+      (16#1D46D#, 16#0046#),
+      (16#1D46E#, 16#0047#),
+      (16#1D46F#, 16#0048#),
+      (16#1D470#, 16#0049#),
+      (16#1D471#, 16#004A#),
+      (16#1D472#, 16#004B#),
+      (16#1D473#, 16#004C#),
+      (16#1D474#, 16#004D#),
+      (16#1D475#, 16#004E#),
+      (16#1D476#, 16#004F#),
+      (16#1D477#, 16#0050#),
+      (16#1D478#, 16#0051#),
+      (16#1D479#, 16#0052#),
+      (16#1D47A#, 16#0053#),
+      (16#1D47B#, 16#0054#),
+      (16#1D47C#, 16#0055#),
+      (16#1D47D#, 16#0056#),
+      (16#1D47E#, 16#0057#),
+      (16#1D47F#, 16#0058#),
+      (16#1D480#, 16#0059#),
+      (16#1D481#, 16#005A#),
+      (16#1D482#, 16#0061#),
+      (16#1D483#, 16#0062#),
+      (16#1D484#, 16#0063#),
+      (16#1D485#, 16#0064#),
+      (16#1D486#, 16#0065#),
+      (16#1D487#, 16#0066#),
+      (16#1D488#, 16#0067#),
+      (16#1D489#, 16#0068#),
+      (16#1D48A#, 16#0069#),
+      (16#1D48B#, 16#006A#),
+      (16#1D48C#, 16#006B#),
+      (16#1D48D#, 16#006C#),
+      (16#1D48E#, 16#006D#),
+      (16#1D48F#, 16#006E#),
+      (16#1D490#, 16#006F#),
+      (16#1D491#, 16#0070#),
+      (16#1D492#, 16#0071#),
+      (16#1D493#, 16#0072#),
+      (16#1D494#, 16#0073#),
+      (16#1D495#, 16#0074#),
+      (16#1D496#, 16#0075#),
+      (16#1D497#, 16#0076#),
+      (16#1D498#, 16#0077#),
+      (16#1D499#, 16#0078#),
+      (16#1D49A#, 16#0079#),
+      (16#1D49B#, 16#007A#),
+      (16#1D49C#, 16#0041#),
+      (16#1D49E#, 16#0043#),
+      (16#1D49F#, 16#0044#),
+      (16#1D4A2#, 16#0047#),
+      (16#1D4A5#, 16#004A#),
+      (16#1D4A6#, 16#004B#),
+      (16#1D4A9#, 16#004E#),
+      (16#1D4AA#, 16#004F#),
+      (16#1D4AB#, 16#0050#),
+      (16#1D4AC#, 16#0051#),
+      (16#1D4AE#, 16#0053#),
+      (16#1D4AF#, 16#0054#),
+      (16#1D4B0#, 16#0055#),
+      (16#1D4B1#, 16#0056#),
+      (16#1D4B2#, 16#0057#),
+      (16#1D4B3#, 16#0058#),
+      (16#1D4B4#, 16#0059#),
+      (16#1D4B5#, 16#005A#),
+      (16#1D4B6#, 16#0061#),
+      (16#1D4B7#, 16#0062#),
+      (16#1D4B8#, 16#0063#),
+      (16#1D4B9#, 16#0064#),
+      (16#1D4BB#, 16#0066#),
+      (16#1D4BD#, 16#0068#),
+      (16#1D4BE#, 16#0069#),
+      (16#1D4BF#, 16#006A#),
+      (16#1D4C0#, 16#006B#),
+      (16#1D4C1#, 16#006C#),
+      (16#1D4C2#, 16#006D#),
+      (16#1D4C3#, 16#006E#),
+      (16#1D4C5#, 16#0070#),
+      (16#1D4C6#, 16#0071#),
+      (16#1D4C7#, 16#0072#),
+      (16#1D4C8#, 16#0073#),
+      (16#1D4C9#, 16#0074#),
+      (16#1D4CA#, 16#0075#),
+      (16#1D4CB#, 16#0076#),
+      (16#1D4CC#, 16#0077#),
+      (16#1D4CD#, 16#0078#),
+      (16#1D4CE#, 16#0079#),
+      (16#1D4CF#, 16#007A#),
+      (16#1D4D0#, 16#0041#),
+      (16#1D4D1#, 16#0042#),
+      (16#1D4D2#, 16#0043#),
+      (16#1D4D3#, 16#0044#),
+      (16#1D4D4#, 16#0045#),
+      (16#1D4D5#, 16#0046#),
+      (16#1D4D6#, 16#0047#),
+      (16#1D4D7#, 16#0048#),
+      (16#1D4D8#, 16#0049#),
+      (16#1D4D9#, 16#004A#),
+      (16#1D4DA#, 16#004B#),
+      (16#1D4DB#, 16#004C#),
+      (16#1D4DC#, 16#004D#),
+      (16#1D4DD#, 16#004E#),
+      (16#1D4DE#, 16#004F#),
+      (16#1D4DF#, 16#0050#),
+      (16#1D4E0#, 16#0051#),
+      (16#1D4E1#, 16#0052#),
+      (16#1D4E2#, 16#0053#),
+      (16#1D4E3#, 16#0054#),
+      (16#1D4E4#, 16#0055#),
+      (16#1D4E5#, 16#0056#),
+      (16#1D4E6#, 16#0057#),
+      (16#1D4E7#, 16#0058#),
+      (16#1D4E8#, 16#0059#),
+      (16#1D4E9#, 16#005A#),
+      (16#1D4EA#, 16#0061#),
+      (16#1D4EB#, 16#0062#),
+      (16#1D4EC#, 16#0063#),
+      (16#1D4ED#, 16#0064#),
+      (16#1D4EE#, 16#0065#),
+      (16#1D4EF#, 16#0066#),
+      (16#1D4F0#, 16#0067#),
+      (16#1D4F1#, 16#0068#),
+      (16#1D4F2#, 16#0069#),
+      (16#1D4F3#, 16#006A#),
+      (16#1D4F4#, 16#006B#),
+      (16#1D4F5#, 16#006C#),
+      (16#1D4F6#, 16#006D#),
+      (16#1D4F7#, 16#006E#),
+      (16#1D4F8#, 16#006F#),
+      (16#1D4F9#, 16#0070#),
+      (16#1D4FA#, 16#0071#),
+      (16#1D4FB#, 16#0072#),
+      (16#1D4FC#, 16#0073#),
+      (16#1D4FD#, 16#0074#),
+      (16#1D4FE#, 16#0075#),
+      (16#1D4FF#, 16#0076#),
+      (16#1D500#, 16#0077#),
+      (16#1D501#, 16#0078#),
+      (16#1D502#, 16#0079#),
+      (16#1D503#, 16#007A#),
+      (16#1D504#, 16#0041#),
+      (16#1D505#, 16#0042#),
+      (16#1D507#, 16#0044#),
+      (16#1D508#, 16#0045#),
+      (16#1D509#, 16#0046#),
+      (16#1D50A#, 16#0047#),
+      (16#1D50D#, 16#004A#),
+      (16#1D50E#, 16#004B#),
+      (16#1D50F#, 16#004C#),
+      (16#1D510#, 16#004D#),
+      (16#1D511#, 16#004E#),
+      (16#1D512#, 16#004F#),
+      (16#1D513#, 16#0050#),
+      (16#1D514#, 16#0051#),
+      (16#1D516#, 16#0053#),
+      (16#1D517#, 16#0054#),
+      (16#1D518#, 16#0055#),
+      (16#1D519#, 16#0056#),
+      (16#1D51A#, 16#0057#),
+      (16#1D51B#, 16#0058#),
+      (16#1D51C#, 16#0059#),
+      (16#1D51E#, 16#0061#),
+      (16#1D51F#, 16#0062#),
+      (16#1D520#, 16#0063#),
+      (16#1D521#, 16#0064#),
+      (16#1D522#, 16#0065#),
+      (16#1D523#, 16#0066#),
+      (16#1D524#, 16#0067#),
+      (16#1D525#, 16#0068#),
+      (16#1D526#, 16#0069#),
+      (16#1D527#, 16#006A#),
+      (16#1D528#, 16#006B#),
+      (16#1D529#, 16#006C#),
+      (16#1D52A#, 16#006D#),
+      (16#1D52B#, 16#006E#),
+      (16#1D52C#, 16#006F#),
+      (16#1D52D#, 16#0070#),
+      (16#1D52E#, 16#0071#),
+      (16#1D52F#, 16#0072#),
+      (16#1D530#, 16#0073#),
+      (16#1D531#, 16#0074#),
+      (16#1D532#, 16#0075#),
+      (16#1D533#, 16#0076#),
+      (16#1D534#, 16#0077#),
+      (16#1D535#, 16#0078#),
+      (16#1D536#, 16#0079#),
+      (16#1D537#, 16#007A#),
+      (16#1D538#, 16#0041#),
+      (16#1D539#, 16#0042#),
+      (16#1D53B#, 16#0044#),
+      (16#1D53C#, 16#0045#),
+      (16#1D53D#, 16#0046#),
+      (16#1D53E#, 16#0047#),
+      (16#1D540#, 16#0049#),
+      (16#1D541#, 16#004A#),
+      (16#1D542#, 16#004B#),
+      (16#1D543#, 16#004C#),
+      (16#1D544#, 16#004D#),
+      (16#1D546#, 16#004F#),
+      (16#1D54A#, 16#0053#),
+      (16#1D54B#, 16#0054#),
+      (16#1D54C#, 16#0055#),
+      (16#1D54D#, 16#0056#),
+      (16#1D54E#, 16#0057#),
+      (16#1D54F#, 16#0058#),
+      (16#1D550#, 16#0059#),
+      (16#1D552#, 16#0061#),
+      (16#1D553#, 16#0062#),
+      (16#1D554#, 16#0063#),
+      (16#1D555#, 16#0064#),
+      (16#1D556#, 16#0065#),
+      (16#1D557#, 16#0066#),
+      (16#1D558#, 16#0067#),
+      (16#1D559#, 16#0068#),
+      (16#1D55A#, 16#0069#),
+      (16#1D55B#, 16#006A#),
+      (16#1D55C#, 16#006B#),
+      (16#1D55D#, 16#006C#),
+      (16#1D55E#, 16#006D#),
+      (16#1D55F#, 16#006E#),
+      (16#1D560#, 16#006F#),
+      (16#1D561#, 16#0070#),
+      (16#1D562#, 16#0071#),
+      (16#1D563#, 16#0072#),
+      (16#1D564#, 16#0073#),
+      (16#1D565#, 16#0074#),
+      (16#1D566#, 16#0075#),
+      (16#1D567#, 16#0076#),
+      (16#1D568#, 16#0077#),
+      (16#1D569#, 16#0078#),
+      (16#1D56A#, 16#0079#),
+      (16#1D56B#, 16#007A#),
+      (16#1D56C#, 16#0041#),
+      (16#1D56D#, 16#0042#),
+      (16#1D56E#, 16#0043#),
+      (16#1D56F#, 16#0044#),
+      (16#1D570#, 16#0045#),
+      (16#1D571#, 16#0046#),
+      (16#1D572#, 16#0047#),
+      (16#1D573#, 16#0048#),
+      (16#1D574#, 16#0049#),
+      (16#1D575#, 16#004A#),
+      (16#1D576#, 16#004B#),
+      (16#1D577#, 16#004C#),
+      (16#1D578#, 16#004D#),
+      (16#1D579#, 16#004E#),
+      (16#1D57A#, 16#004F#),
+      (16#1D57B#, 16#0050#),
+      (16#1D57C#, 16#0051#),
+      (16#1D57D#, 16#0052#),
+      (16#1D57E#, 16#0053#),
+      (16#1D57F#, 16#0054#),
+      (16#1D580#, 16#0055#),
+      (16#1D581#, 16#0056#),
+      (16#1D582#, 16#0057#),
+      (16#1D583#, 16#0058#),
+      (16#1D584#, 16#0059#),
+      (16#1D585#, 16#005A#),
+      (16#1D586#, 16#0061#),
+      (16#1D587#, 16#0062#),
+      (16#1D588#, 16#0063#),
+      (16#1D589#, 16#0064#),
+      (16#1D58A#, 16#0065#),
+      (16#1D58B#, 16#0066#),
+      (16#1D58C#, 16#0067#),
+      (16#1D58D#, 16#0068#),
+      (16#1D58E#, 16#0069#),
+      (16#1D58F#, 16#006A#),
+      (16#1D590#, 16#006B#),
+      (16#1D591#, 16#006C#),
+      (16#1D592#, 16#006D#),
+      (16#1D593#, 16#006E#),
+      (16#1D594#, 16#006F#),
+      (16#1D595#, 16#0070#),
+      (16#1D596#, 16#0071#),
+      (16#1D597#, 16#0072#),
+      (16#1D598#, 16#0073#),
+      (16#1D599#, 16#0074#),
+      (16#1D59A#, 16#0075#),
+      (16#1D59B#, 16#0076#),
+      (16#1D59C#, 16#0077#),
+      (16#1D59D#, 16#0078#),
+      (16#1D59E#, 16#0079#),
+      (16#1D59F#, 16#007A#),
+      (16#1D5A0#, 16#0041#),
+      (16#1D5A1#, 16#0042#),
+      (16#1D5A2#, 16#0043#),
+      (16#1D5A3#, 16#0044#),
+      (16#1D5A4#, 16#0045#),
+      (16#1D5A5#, 16#0046#),
+      (16#1D5A6#, 16#0047#),
+      (16#1D5A7#, 16#0048#),
+      (16#1D5A8#, 16#0049#),
+      (16#1D5A9#, 16#004A#),
+      (16#1D5AA#, 16#004B#),
+      (16#1D5AB#, 16#004C#),
+      (16#1D5AC#, 16#004D#),
+      (16#1D5AD#, 16#004E#),
+      (16#1D5AE#, 16#004F#),
+      (16#1D5AF#, 16#0050#),
+      (16#1D5B0#, 16#0051#),
+      (16#1D5B1#, 16#0052#),
+      (16#1D5B2#, 16#0053#),
+      (16#1D5B3#, 16#0054#),
+      (16#1D5B4#, 16#0055#),
+      (16#1D5B5#, 16#0056#),
+      (16#1D5B6#, 16#0057#),
+      (16#1D5B7#, 16#0058#),
+      (16#1D5B8#, 16#0059#),
+      (16#1D5B9#, 16#005A#),
+      (16#1D5BA#, 16#0061#),
+      (16#1D5BB#, 16#0062#),
+      (16#1D5BC#, 16#0063#),
+      (16#1D5BD#, 16#0064#),
+      (16#1D5BE#, 16#0065#),
+      (16#1D5BF#, 16#0066#),
+      (16#1D5C0#, 16#0067#),
+      (16#1D5C1#, 16#0068#),
+      (16#1D5C2#, 16#0069#),
+      (16#1D5C3#, 16#006A#),
+      (16#1D5C4#, 16#006B#),
+      (16#1D5C5#, 16#006C#),
+      (16#1D5C6#, 16#006D#),
+      (16#1D5C7#, 16#006E#),
+      (16#1D5C8#, 16#006F#),
+      (16#1D5C9#, 16#0070#),
+      (16#1D5CA#, 16#0071#),
+      (16#1D5CB#, 16#0072#),
+      (16#1D5CC#, 16#0073#),
+      (16#1D5CD#, 16#0074#),
+      (16#1D5CE#, 16#0075#),
+      (16#1D5CF#, 16#0076#),
+      (16#1D5D0#, 16#0077#),
+      (16#1D5D1#, 16#0078#),
+      (16#1D5D2#, 16#0079#),
+      (16#1D5D3#, 16#007A#),
+      (16#1D5D4#, 16#0041#),
+      (16#1D5D5#, 16#0042#),
+      (16#1D5D6#, 16#0043#),
+      (16#1D5D7#, 16#0044#),
+      (16#1D5D8#, 16#0045#),
+      (16#1D5D9#, 16#0046#),
+      (16#1D5DA#, 16#0047#),
+      (16#1D5DB#, 16#0048#),
+      (16#1D5DC#, 16#0049#),
+      (16#1D5DD#, 16#004A#),
+      (16#1D5DE#, 16#004B#),
+      (16#1D5DF#, 16#004C#),
+      (16#1D5E0#, 16#004D#),
+      (16#1D5E1#, 16#004E#),
+      (16#1D5E2#, 16#004F#),
+      (16#1D5E3#, 16#0050#),
+      (16#1D5E4#, 16#0051#),
+      (16#1D5E5#, 16#0052#),
+      (16#1D5E6#, 16#0053#),
+      (16#1D5E7#, 16#0054#),
+      (16#1D5E8#, 16#0055#),
+      (16#1D5E9#, 16#0056#),
+      (16#1D5EA#, 16#0057#),
+      (16#1D5EB#, 16#0058#),
+      (16#1D5EC#, 16#0059#),
+      (16#1D5ED#, 16#005A#),
+      (16#1D5EE#, 16#0061#),
+      (16#1D5EF#, 16#0062#),
+      (16#1D5F0#, 16#0063#),
+      (16#1D5F1#, 16#0064#),
+      (16#1D5F2#, 16#0065#),
+      (16#1D5F3#, 16#0066#),
+      (16#1D5F4#, 16#0067#),
+      (16#1D5F5#, 16#0068#),
+      (16#1D5F6#, 16#0069#),
+      (16#1D5F7#, 16#006A#),
+      (16#1D5F8#, 16#006B#),
+      (16#1D5F9#, 16#006C#),
+      (16#1D5FA#, 16#006D#),
+      (16#1D5FB#, 16#006E#),
+      (16#1D5FC#, 16#006F#),
+      (16#1D5FD#, 16#0070#),
+      (16#1D5FE#, 16#0071#),
+      (16#1D5FF#, 16#0072#),
+      (16#1D600#, 16#0073#),
+      (16#1D601#, 16#0074#),
+      (16#1D602#, 16#0075#),
+      (16#1D603#, 16#0076#),
+      (16#1D604#, 16#0077#),
+      (16#1D605#, 16#0078#),
+      (16#1D606#, 16#0079#),
+      (16#1D607#, 16#007A#),
+      (16#1D608#, 16#0041#),
+      (16#1D609#, 16#0042#),
+      (16#1D60A#, 16#0043#),
+      (16#1D60B#, 16#0044#),
+      (16#1D60C#, 16#0045#),
+      (16#1D60D#, 16#0046#),
+      (16#1D60E#, 16#0047#),
+      (16#1D60F#, 16#0048#),
+      (16#1D610#, 16#0049#),
+      (16#1D611#, 16#004A#),
+      (16#1D612#, 16#004B#),
+      (16#1D613#, 16#004C#),
+      (16#1D614#, 16#004D#),
+      (16#1D615#, 16#004E#),
+      (16#1D616#, 16#004F#),
+      (16#1D617#, 16#0050#),
+      (16#1D618#, 16#0051#),
+      (16#1D619#, 16#0052#),
+      (16#1D61A#, 16#0053#),
+      (16#1D61B#, 16#0054#),
+      (16#1D61C#, 16#0055#),
+      (16#1D61D#, 16#0056#),
+      (16#1D61E#, 16#0057#),
+      (16#1D61F#, 16#0058#),
+      (16#1D620#, 16#0059#),
+      (16#1D621#, 16#005A#),
+      (16#1D622#, 16#0061#),
+      (16#1D623#, 16#0062#),
+      (16#1D624#, 16#0063#),
+      (16#1D625#, 16#0064#),
+      (16#1D626#, 16#0065#),
+      (16#1D627#, 16#0066#),
+      (16#1D628#, 16#0067#),
+      (16#1D629#, 16#0068#),
+      (16#1D62A#, 16#0069#),
+      (16#1D62B#, 16#006A#),
+      (16#1D62C#, 16#006B#),
+      (16#1D62D#, 16#006C#),
+      (16#1D62E#, 16#006D#),
+      (16#1D62F#, 16#006E#),
+      (16#1D630#, 16#006F#),
+      (16#1D631#, 16#0070#),
+      (16#1D632#, 16#0071#),
+      (16#1D633#, 16#0072#),
+      (16#1D634#, 16#0073#),
+      (16#1D635#, 16#0074#),
+      (16#1D636#, 16#0075#),
+      (16#1D637#, 16#0076#),
+      (16#1D638#, 16#0077#),
+      (16#1D639#, 16#0078#),
+      (16#1D63A#, 16#0079#),
+      (16#1D63B#, 16#007A#),
+      (16#1D63C#, 16#0041#),
+      (16#1D63D#, 16#0042#),
+      (16#1D63E#, 16#0043#),
+      (16#1D63F#, 16#0044#),
+      (16#1D640#, 16#0045#),
+      (16#1D641#, 16#0046#),
+      (16#1D642#, 16#0047#),
+      (16#1D643#, 16#0048#),
+      (16#1D644#, 16#0049#),
+      (16#1D645#, 16#004A#),
+      (16#1D646#, 16#004B#),
+      (16#1D647#, 16#004C#),
+      (16#1D648#, 16#004D#),
+      (16#1D649#, 16#004E#),
+      (16#1D64A#, 16#004F#),
+      (16#1D64B#, 16#0050#),
+      (16#1D64C#, 16#0051#),
+      (16#1D64D#, 16#0052#),
+      (16#1D64E#, 16#0053#),
+      (16#1D64F#, 16#0054#),
+      (16#1D650#, 16#0055#),
+      (16#1D651#, 16#0056#),
+      (16#1D652#, 16#0057#),
+      (16#1D653#, 16#0058#),
+      (16#1D654#, 16#0059#),
+      (16#1D655#, 16#005A#),
+      (16#1D656#, 16#0061#),
+      (16#1D657#, 16#0062#),
+      (16#1D658#, 16#0063#),
+      (16#1D659#, 16#0064#),
+      (16#1D65A#, 16#0065#),
+      (16#1D65B#, 16#0066#),
+      (16#1D65C#, 16#0067#),
+      (16#1D65D#, 16#0068#),
+      (16#1D65E#, 16#0069#),
+      (16#1D65F#, 16#006A#),
+      (16#1D660#, 16#006B#),
+      (16#1D661#, 16#006C#),
+      (16#1D662#, 16#006D#),
+      (16#1D663#, 16#006E#),
+      (16#1D664#, 16#006F#),
+      (16#1D665#, 16#0070#),
+      (16#1D666#, 16#0071#),
+      (16#1D667#, 16#0072#),
+      (16#1D668#, 16#0073#),
+      (16#1D669#, 16#0074#),
+      (16#1D66A#, 16#0075#),
+      (16#1D66B#, 16#0076#),
+      (16#1D66C#, 16#0077#),
+      (16#1D66D#, 16#0078#),
+      (16#1D66E#, 16#0079#),
+      (16#1D66F#, 16#007A#),
+      (16#1D670#, 16#0041#),
+      (16#1D671#, 16#0042#),
+      (16#1D672#, 16#0043#),
+      (16#1D673#, 16#0044#),
+      (16#1D674#, 16#0045#),
+      (16#1D675#, 16#0046#),
+      (16#1D676#, 16#0047#),
+      (16#1D677#, 16#0048#),
+      (16#1D678#, 16#0049#),
+      (16#1D679#, 16#004A#),
+      (16#1D67A#, 16#004B#),
+      (16#1D67B#, 16#004C#),
+      (16#1D67C#, 16#004D#),
+      (16#1D67D#, 16#004E#),
+      (16#1D67E#, 16#004F#),
+      (16#1D67F#, 16#0050#),
+      (16#1D680#, 16#0051#),
+      (16#1D681#, 16#0052#),
+      (16#1D682#, 16#0053#),
+      (16#1D683#, 16#0054#),
+      (16#1D684#, 16#0055#),
+      (16#1D685#, 16#0056#),
+      (16#1D686#, 16#0057#),
+      (16#1D687#, 16#0058#),
+      (16#1D688#, 16#0059#),
+      (16#1D689#, 16#005A#),
+      (16#1D68A#, 16#0061#),
+      (16#1D68B#, 16#0062#),
+      (16#1D68C#, 16#0063#),
+      (16#1D68D#, 16#0064#),
+      (16#1D68E#, 16#0065#),
+      (16#1D68F#, 16#0066#),
+      (16#1D690#, 16#0067#),
+      (16#1D691#, 16#0068#),
+      (16#1D692#, 16#0069#),
+      (16#1D693#, 16#006A#),
+      (16#1D694#, 16#006B#),
+      (16#1D695#, 16#006C#),
+      (16#1D696#, 16#006D#),
+      (16#1D697#, 16#006E#),
+      (16#1D698#, 16#006F#),
+      (16#1D699#, 16#0070#),
+      (16#1D69A#, 16#0071#),
+      (16#1D69B#, 16#0072#),
+      (16#1D69C#, 16#0073#),
+      (16#1D69D#, 16#0074#),
+      (16#1D69E#, 16#0075#),
+      (16#1D69F#, 16#0076#),
+      (16#1D6A0#, 16#0077#),
+      (16#1D6A1#, 16#0078#),
+      (16#1D6A2#, 16#0079#),
+      (16#1D6A3#, 16#007A#),
+      (16#1D6A4#, 16#0131#),
+      (16#1D6A5#, 16#0237#),
+      (16#1D6A8#, 16#0391#),
+      (16#1D6A9#, 16#0392#),
+      (16#1D6AA#, 16#0393#),
+      (16#1D6AB#, 16#0394#),
+      (16#1D6AC#, 16#0395#),
+      (16#1D6AD#, 16#0396#),
+      (16#1D6AE#, 16#0397#),
+      (16#1D6AF#, 16#0398#),
+      (16#1D6B0#, 16#0399#),
+      (16#1D6B1#, 16#039A#),
+      (16#1D6B2#, 16#039B#),
+      (16#1D6B3#, 16#039C#),
+      (16#1D6B4#, 16#039D#),
+      (16#1D6B5#, 16#039E#),
+      (16#1D6B6#, 16#039F#),
+      (16#1D6B7#, 16#03A0#),
+      (16#1D6B8#, 16#03A1#),
+      (16#1D6B9#, 16#03F4#),
+      (16#1D6BA#, 16#03A3#),
+      (16#1D6BB#, 16#03A4#),
+      (16#1D6BC#, 16#03A5#),
+      (16#1D6BD#, 16#03A6#),
+      (16#1D6BE#, 16#03A7#),
+      (16#1D6BF#, 16#03A8#),
+      (16#1D6C0#, 16#03A9#),
+      (16#1D6C1#, 16#2207#),
+      (16#1D6C2#, 16#03B1#),
+      (16#1D6C3#, 16#03B2#),
+      (16#1D6C4#, 16#03B3#),
+      (16#1D6C5#, 16#03B4#),
+      (16#1D6C6#, 16#03B5#),
+      (16#1D6C7#, 16#03B6#),
+      (16#1D6C8#, 16#03B7#),
+      (16#1D6C9#, 16#03B8#),
+      (16#1D6CA#, 16#03B9#),
+      (16#1D6CB#, 16#03BA#),
+      (16#1D6CC#, 16#03BB#),
+      (16#1D6CD#, 16#03BC#),
+      (16#1D6CE#, 16#03BD#),
+      (16#1D6CF#, 16#03BE#),
+      (16#1D6D0#, 16#03BF#),
+      (16#1D6D1#, 16#03C0#),
+      (16#1D6D2#, 16#03C1#),
+      (16#1D6D3#, 16#03C2#),
+      (16#1D6D4#, 16#03C3#),
+      (16#1D6D5#, 16#03C4#),
+      (16#1D6D6#, 16#03C5#),
+      (16#1D6D7#, 16#03C6#),
+      (16#1D6D8#, 16#03C7#),
+      (16#1D6D9#, 16#03C8#),
+      (16#1D6DA#, 16#03C9#),
+      (16#1D6DB#, 16#2202#),
+      (16#1D6DC#, 16#03F5#),
+      (16#1D6DD#, 16#03D1#),
+      (16#1D6DE#, 16#03F0#),
+      (16#1D6DF#, 16#03D5#),
+      (16#1D6E0#, 16#03F1#),
+      (16#1D6E1#, 16#03D6#),
+      (16#1D6E2#, 16#0391#),
+      (16#1D6E3#, 16#0392#),
+      (16#1D6E4#, 16#0393#),
+      (16#1D6E5#, 16#0394#),
+      (16#1D6E6#, 16#0395#),
+      (16#1D6E7#, 16#0396#),
+      (16#1D6E8#, 16#0397#),
+      (16#1D6E9#, 16#0398#),
+      (16#1D6EA#, 16#0399#),
+      (16#1D6EB#, 16#039A#),
+      (16#1D6EC#, 16#039B#),
+      (16#1D6ED#, 16#039C#),
+      (16#1D6EE#, 16#039D#),
+      (16#1D6EF#, 16#039E#),
+      (16#1D6F0#, 16#039F#),
+      (16#1D6F1#, 16#03A0#),
+      (16#1D6F2#, 16#03A1#),
+      (16#1D6F3#, 16#03F4#),
+      (16#1D6F4#, 16#03A3#),
+      (16#1D6F5#, 16#03A4#),
+      (16#1D6F6#, 16#03A5#),
+      (16#1D6F7#, 16#03A6#),
+      (16#1D6F8#, 16#03A7#),
+      (16#1D6F9#, 16#03A8#),
+      (16#1D6FA#, 16#03A9#),
+      (16#1D6FB#, 16#2207#),
+      (16#1D6FC#, 16#03B1#),
+      (16#1D6FD#, 16#03B2#),
+      (16#1D6FE#, 16#03B3#),
+      (16#1D6FF#, 16#03B4#),
+      (16#1D700#, 16#03B5#),
+      (16#1D701#, 16#03B6#),
+      (16#1D702#, 16#03B7#),
+      (16#1D703#, 16#03B8#),
+      (16#1D704#, 16#03B9#),
+      (16#1D705#, 16#03BA#),
+      (16#1D706#, 16#03BB#),
+      (16#1D707#, 16#03BC#),
+      (16#1D708#, 16#03BD#),
+      (16#1D709#, 16#03BE#),
+      (16#1D70A#, 16#03BF#),
+      (16#1D70B#, 16#03C0#),
+      (16#1D70C#, 16#03C1#),
+      (16#1D70D#, 16#03C2#),
+      (16#1D70E#, 16#03C3#),
+      (16#1D70F#, 16#03C4#),
+      (16#1D710#, 16#03C5#),
+      (16#1D711#, 16#03C6#),
+      (16#1D712#, 16#03C7#),
+      (16#1D713#, 16#03C8#),
+      (16#1D714#, 16#03C9#),
+      (16#1D715#, 16#2202#),
+      (16#1D716#, 16#03F5#),
+      (16#1D717#, 16#03D1#),
+      (16#1D718#, 16#03F0#),
+      (16#1D719#, 16#03D5#),
+      (16#1D71A#, 16#03F1#),
+      (16#1D71B#, 16#03D6#),
+      (16#1D71C#, 16#0391#),
+      (16#1D71D#, 16#0392#),
+      (16#1D71E#, 16#0393#),
+      (16#1D71F#, 16#0394#),
+      (16#1D720#, 16#0395#),
+      (16#1D721#, 16#0396#),
+      (16#1D722#, 16#0397#),
+      (16#1D723#, 16#0398#),
+      (16#1D724#, 16#0399#),
+      (16#1D725#, 16#039A#),
+      (16#1D726#, 16#039B#),
+      (16#1D727#, 16#039C#),
+      (16#1D728#, 16#039D#),
+      (16#1D729#, 16#039E#),
+      (16#1D72A#, 16#039F#),
+      (16#1D72B#, 16#03A0#),
+      (16#1D72C#, 16#03A1#),
+      (16#1D72D#, 16#03F4#),
+      (16#1D72E#, 16#03A3#),
+      (16#1D72F#, 16#03A4#),
+      (16#1D730#, 16#03A5#),
+      (16#1D731#, 16#03A6#),
+      (16#1D732#, 16#03A7#),
+      (16#1D733#, 16#03A8#),
+      (16#1D734#, 16#03A9#),
+      (16#1D735#, 16#2207#),
+      (16#1D736#, 16#03B1#),
+      (16#1D737#, 16#03B2#),
+      (16#1D738#, 16#03B3#),
+      (16#1D739#, 16#03B4#),
+      (16#1D73A#, 16#03B5#),
+      (16#1D73B#, 16#03B6#),
+      (16#1D73C#, 16#03B7#),
+      (16#1D73D#, 16#03B8#),
+      (16#1D73E#, 16#03B9#),
+      (16#1D73F#, 16#03BA#),
+      (16#1D740#, 16#03BB#),
+      (16#1D741#, 16#03BC#),
+      (16#1D742#, 16#03BD#),
+      (16#1D743#, 16#03BE#),
+      (16#1D744#, 16#03BF#),
+      (16#1D745#, 16#03C0#),
+      (16#1D746#, 16#03C1#),
+      (16#1D747#, 16#03C2#),
+      (16#1D748#, 16#03C3#),
+      (16#1D749#, 16#03C4#),
+      (16#1D74A#, 16#03C5#),
+      (16#1D74B#, 16#03C6#),
+      (16#1D74C#, 16#03C7#),
+      (16#1D74D#, 16#03C8#),
+      (16#1D74E#, 16#03C9#),
+      (16#1D74F#, 16#2202#),
+      (16#1D750#, 16#03F5#),
+      (16#1D751#, 16#03D1#),
+      (16#1D752#, 16#03F0#),
+      (16#1D753#, 16#03D5#),
+      (16#1D754#, 16#03F1#),
+      (16#1D755#, 16#03D6#),
+      (16#1D756#, 16#0391#),
+      (16#1D757#, 16#0392#),
+      (16#1D758#, 16#0393#),
+      (16#1D759#, 16#0394#),
+      (16#1D75A#, 16#0395#),
+      (16#1D75B#, 16#0396#),
+      (16#1D75C#, 16#0397#),
+      (16#1D75D#, 16#0398#),
+      (16#1D75E#, 16#0399#),
+      (16#1D75F#, 16#039A#),
+      (16#1D760#, 16#039B#),
+      (16#1D761#, 16#039C#),
+      (16#1D762#, 16#039D#),
+      (16#1D763#, 16#039E#),
+      (16#1D764#, 16#039F#),
+      (16#1D765#, 16#03A0#),
+      (16#1D766#, 16#03A1#),
+      (16#1D767#, 16#03F4#),
+      (16#1D768#, 16#03A3#),
+      (16#1D769#, 16#03A4#),
+      (16#1D76A#, 16#03A5#),
+      (16#1D76B#, 16#03A6#),
+      (16#1D76C#, 16#03A7#),
+      (16#1D76D#, 16#03A8#),
+      (16#1D76E#, 16#03A9#),
+      (16#1D76F#, 16#2207#),
+      (16#1D770#, 16#03B1#),
+      (16#1D771#, 16#03B2#),
+      (16#1D772#, 16#03B3#),
+      (16#1D773#, 16#03B4#),
+      (16#1D774#, 16#03B5#),
+      (16#1D775#, 16#03B6#),
+      (16#1D776#, 16#03B7#),
+      (16#1D777#, 16#03B8#),
+      (16#1D778#, 16#03B9#),
+      (16#1D779#, 16#03BA#),
+      (16#1D77A#, 16#03BB#),
+      (16#1D77B#, 16#03BC#),
+      (16#1D77C#, 16#03BD#),
+      (16#1D77D#, 16#03BE#),
+      (16#1D77E#, 16#03BF#),
+      (16#1D77F#, 16#03C0#),
+      (16#1D780#, 16#03C1#),
+      (16#1D781#, 16#03C2#),
+      (16#1D782#, 16#03C3#),
+      (16#1D783#, 16#03C4#),
+      (16#1D784#, 16#03C5#),
+      (16#1D785#, 16#03C6#),
+      (16#1D786#, 16#03C7#),
+      (16#1D787#, 16#03C8#),
+      (16#1D788#, 16#03C9#),
+      (16#1D789#, 16#2202#),
+      (16#1D78A#, 16#03F5#),
+      (16#1D78B#, 16#03D1#),
+      (16#1D78C#, 16#03F0#),
+      (16#1D78D#, 16#03D5#),
+      (16#1D78E#, 16#03F1#),
+      (16#1D78F#, 16#03D6#),
+      (16#1D790#, 16#0391#),
+      (16#1D791#, 16#0392#),
+      (16#1D792#, 16#0393#),
+      (16#1D793#, 16#0394#),
+      (16#1D794#, 16#0395#),
+      (16#1D795#, 16#0396#),
+      (16#1D796#, 16#0397#),
+      (16#1D797#, 16#0398#),
+      (16#1D798#, 16#0399#),
+      (16#1D799#, 16#039A#),
+      (16#1D79A#, 16#039B#),
+      (16#1D79B#, 16#039C#),
+      (16#1D79C#, 16#039D#),
+      (16#1D79D#, 16#039E#),
+      (16#1D79E#, 16#039F#),
+      (16#1D79F#, 16#03A0#),
+      (16#1D7A0#, 16#03A1#),
+      (16#1D7A1#, 16#03F4#),
+      (16#1D7A2#, 16#03A3#),
+      (16#1D7A3#, 16#03A4#),
+      (16#1D7A4#, 16#03A5#),
+      (16#1D7A5#, 16#03A6#),
+      (16#1D7A6#, 16#03A7#),
+      (16#1D7A7#, 16#03A8#),
+      (16#1D7A8#, 16#03A9#),
+      (16#1D7A9#, 16#2207#),
+      (16#1D7AA#, 16#03B1#),
+      (16#1D7AB#, 16#03B2#),
+      (16#1D7AC#, 16#03B3#),
+      (16#1D7AD#, 16#03B4#),
+      (16#1D7AE#, 16#03B5#),
+      (16#1D7AF#, 16#03B6#),
+      (16#1D7B0#, 16#03B7#),
+      (16#1D7B1#, 16#03B8#),
+      (16#1D7B2#, 16#03B9#),
+      (16#1D7B3#, 16#03BA#),
+      (16#1D7B4#, 16#03BB#),
+      (16#1D7B5#, 16#03BC#),
+      (16#1D7B6#, 16#03BD#),
+      (16#1D7B7#, 16#03BE#),
+      (16#1D7B8#, 16#03BF#),
+      (16#1D7B9#, 16#03C0#),
+      (16#1D7BA#, 16#03C1#),
+      (16#1D7BB#, 16#03C2#),
+      (16#1D7BC#, 16#03C3#),
+      (16#1D7BD#, 16#03C4#),
+      (16#1D7BE#, 16#03C5#),
+      (16#1D7BF#, 16#03C6#),
+      (16#1D7C0#, 16#03C7#),
+      (16#1D7C1#, 16#03C8#),
+      (16#1D7C2#, 16#03C9#),
+      (16#1D7C3#, 16#2202#),
+      (16#1D7C4#, 16#03F5#),
+      (16#1D7C5#, 16#03D1#),
+      (16#1D7C6#, 16#03F0#),
+      (16#1D7C7#, 16#03D5#),
+      (16#1D7C8#, 16#03F1#),
+      (16#1D7C9#, 16#03D6#),
+      (16#1D7CA#, 16#03DC#),
+      (16#1D7CB#, 16#03DD#),
+      (16#1D7CE#, 16#0030#),
+      (16#1D7CF#, 16#0031#),
+      (16#1D7D0#, 16#0032#),
+      (16#1D7D1#, 16#0033#),
+      (16#1D7D2#, 16#0034#),
+      (16#1D7D3#, 16#0035#),
+      (16#1D7D4#, 16#0036#),
+      (16#1D7D5#, 16#0037#),
+      (16#1D7D6#, 16#0038#),
+      (16#1D7D7#, 16#0039#),
+      (16#1D7D8#, 16#0030#),
+      (16#1D7D9#, 16#0031#),
+      (16#1D7DA#, 16#0032#),
+      (16#1D7DB#, 16#0033#),
+      (16#1D7DC#, 16#0034#),
+      (16#1D7DD#, 16#0035#),
+      (16#1D7DE#, 16#0036#),
+      (16#1D7DF#, 16#0037#),
+      (16#1D7E0#, 16#0038#),
+      (16#1D7E1#, 16#0039#),
+      (16#1D7E2#, 16#0030#),
+      (16#1D7E3#, 16#0031#),
+      (16#1D7E4#, 16#0032#),
+      (16#1D7E5#, 16#0033#),
+      (16#1D7E6#, 16#0034#),
+      (16#1D7E7#, 16#0035#),
+      (16#1D7E8#, 16#0036#),
+      (16#1D7E9#, 16#0037#),
+      (16#1D7EA#, 16#0038#),
+      (16#1D7EB#, 16#0039#),
+      (16#1D7EC#, 16#0030#),
+      (16#1D7ED#, 16#0031#),
+      (16#1D7EE#, 16#0032#),
+      (16#1D7EF#, 16#0033#),
+      (16#1D7F0#, 16#0034#),
+      (16#1D7F1#, 16#0035#),
+      (16#1D7F2#, 16#0036#),
+      (16#1D7F3#, 16#0037#),
+      (16#1D7F4#, 16#0038#),
+      (16#1D7F5#, 16#0039#),
+      (16#1D7F6#, 16#0030#),
+      (16#1D7F7#, 16#0031#),
+      (16#1D7F8#, 16#0032#),
+      (16#1D7F9#, 16#0033#),
+      (16#1D7FA#, 16#0034#),
+      (16#1D7FB#, 16#0035#),
+      (16#1D7FC#, 16#0036#),
+      (16#1D7FD#, 16#0037#),
+      (16#1D7FE#, 16#0038#),
+      (16#1D7FF#, 16#0039#),
+      (16#1EE00#, 16#0627#),
+      (16#1EE01#, 16#0628#),
+      (16#1EE02#, 16#062C#),
+      (16#1EE03#, 16#062F#),
+      (16#1EE05#, 16#0648#),
+      (16#1EE06#, 16#0632#),
+      (16#1EE07#, 16#062D#),
+      (16#1EE08#, 16#0637#),
+      (16#1EE09#, 16#064A#),
+      (16#1EE0A#, 16#0643#),
+      (16#1EE0B#, 16#0644#),
+      (16#1EE0C#, 16#0645#),
+      (16#1EE0D#, 16#0646#),
+      (16#1EE0E#, 16#0633#),
+      (16#1EE0F#, 16#0639#),
+      (16#1EE10#, 16#0641#),
+      (16#1EE11#, 16#0635#),
+      (16#1EE12#, 16#0642#),
+      (16#1EE13#, 16#0631#),
+      (16#1EE14#, 16#0634#),
+      (16#1EE15#, 16#062A#),
+      (16#1EE16#, 16#062B#),
+      (16#1EE17#, 16#062E#),
+      (16#1EE18#, 16#0630#),
+      (16#1EE19#, 16#0636#),
+      (16#1EE1A#, 16#0638#),
+      (16#1EE1B#, 16#063A#),
+      (16#1EE1C#, 16#066E#),
+      (16#1EE1D#, 16#06BA#),
+      (16#1EE1E#, 16#06A1#),
+      (16#1EE1F#, 16#066F#),
+      (16#1EE21#, 16#0628#),
+      (16#1EE22#, 16#062C#),
+      (16#1EE24#, 16#0647#),
+      (16#1EE27#, 16#062D#),
+      (16#1EE29#, 16#064A#),
+      (16#1EE2A#, 16#0643#),
+      (16#1EE2B#, 16#0644#),
+      (16#1EE2C#, 16#0645#),
+      (16#1EE2D#, 16#0646#),
+      (16#1EE2E#, 16#0633#),
+      (16#1EE2F#, 16#0639#),
+      (16#1EE30#, 16#0641#),
+      (16#1EE31#, 16#0635#),
+      (16#1EE32#, 16#0642#),
+      (16#1EE34#, 16#0634#),
+      (16#1EE35#, 16#062A#),
+      (16#1EE36#, 16#062B#),
+      (16#1EE37#, 16#062E#),
+      (16#1EE39#, 16#0636#),
+      (16#1EE3B#, 16#063A#),
+      (16#1EE42#, 16#062C#),
+      (16#1EE47#, 16#062D#),
+      (16#1EE49#, 16#064A#),
+      (16#1EE4B#, 16#0644#),
+      (16#1EE4D#, 16#0646#),
+      (16#1EE4E#, 16#0633#),
+      (16#1EE4F#, 16#0639#),
+      (16#1EE51#, 16#0635#),
+      (16#1EE52#, 16#0642#),
+      (16#1EE54#, 16#0634#),
+      (16#1EE57#, 16#062E#),
+      (16#1EE59#, 16#0636#),
+      (16#1EE5B#, 16#063A#),
+      (16#1EE5D#, 16#06BA#),
+      (16#1EE5F#, 16#066F#),
+      (16#1EE61#, 16#0628#),
+      (16#1EE62#, 16#062C#),
+      (16#1EE64#, 16#0647#),
+      (16#1EE67#, 16#062D#),
+      (16#1EE68#, 16#0637#),
+      (16#1EE69#, 16#064A#),
+      (16#1EE6A#, 16#0643#),
+      (16#1EE6C#, 16#0645#),
+      (16#1EE6D#, 16#0646#),
+      (16#1EE6E#, 16#0633#),
+      (16#1EE6F#, 16#0639#),
+      (16#1EE70#, 16#0641#),
+      (16#1EE71#, 16#0635#),
+      (16#1EE72#, 16#0642#),
+      (16#1EE74#, 16#0634#),
+      (16#1EE75#, 16#062A#),
+      (16#1EE76#, 16#062B#),
+      (16#1EE77#, 16#062E#),
+      (16#1EE79#, 16#0636#),
+      (16#1EE7A#, 16#0638#),
+      (16#1EE7B#, 16#063A#),
+      (16#1EE7C#, 16#066E#),
+      (16#1EE7E#, 16#06A1#),
+      (16#1EE80#, 16#0627#),
+      (16#1EE81#, 16#0628#),
+      (16#1EE82#, 16#062C#),
+      (16#1EE83#, 16#062F#),
+      (16#1EE84#, 16#0647#),
+      (16#1EE85#, 16#0648#),
+      (16#1EE86#, 16#0632#),
+      (16#1EE87#, 16#062D#),
+      (16#1EE88#, 16#0637#),
+      (16#1EE89#, 16#064A#),
+      (16#1EE8B#, 16#0644#),
+      (16#1EE8C#, 16#0645#),
+      (16#1EE8D#, 16#0646#),
+      (16#1EE8E#, 16#0633#),
+      (16#1EE8F#, 16#0639#),
+      (16#1EE90#, 16#0641#),
+      (16#1EE91#, 16#0635#),
+      (16#1EE92#, 16#0642#),
+      (16#1EE93#, 16#0631#),
+      (16#1EE94#, 16#0634#),
+      (16#1EE95#, 16#062A#),
+      (16#1EE96#, 16#062B#),
+      (16#1EE97#, 16#062E#),
+      (16#1EE98#, 16#0630#),
+      (16#1EE99#, 16#0636#),
+      (16#1EE9A#, 16#0638#),
+      (16#1EE9B#, 16#063A#),
+      (16#1EEA1#, 16#0628#),
+      (16#1EEA2#, 16#062C#),
+      (16#1EEA3#, 16#062F#),
+      (16#1EEA5#, 16#0648#),
+      (16#1EEA6#, 16#0632#),
+      (16#1EEA7#, 16#062D#),
+      (16#1EEA8#, 16#0637#),
+      (16#1EEA9#, 16#064A#),
+      (16#1EEAB#, 16#0644#),
+      (16#1EEAC#, 16#0645#),
+      (16#1EEAD#, 16#0646#),
+      (16#1EEAE#, 16#0633#),
+      (16#1EEAF#, 16#0639#),
+      (16#1EEB0#, 16#0641#),
+      (16#1EEB1#, 16#0635#),
+      (16#1EEB2#, 16#0642#),
+      (16#1EEB3#, 16#0631#),
+      (16#1EEB4#, 16#0634#),
+      (16#1EEB5#, 16#062A#),
+      (16#1EEB6#, 16#062B#),
+      (16#1EEB7#, 16#062E#),
+      (16#1EEB8#, 16#0630#),
+      (16#1EEB9#, 16#0636#),
+      (16#1EEBA#, 16#0638#),
+      (16#1EEBB#, 16#063A#),
+      (16#1F100#, 16#0030#),
+      (16#1F101#, 16#0030#),
+      (16#1F102#, 16#0031#),
+      (16#1F103#, 16#0032#),
+      (16#1F104#, 16#0033#),
+      (16#1F105#, 16#0034#),
+      (16#1F106#, 16#0035#),
+      (16#1F107#, 16#0036#),
+      (16#1F108#, 16#0037#),
+      (16#1F109#, 16#0038#),
+      (16#1F10A#, 16#0039#),
+      (16#1F110#, 16#0028#),
+      (16#1F111#, 16#0028#),
+      (16#1F112#, 16#0028#),
+      (16#1F113#, 16#0028#),
+      (16#1F114#, 16#0028#),
+      (16#1F115#, 16#0028#),
+      (16#1F116#, 16#0028#),
+      (16#1F117#, 16#0028#),
+      (16#1F118#, 16#0028#),
+      (16#1F119#, 16#0028#),
+      (16#1F11A#, 16#0028#),
+      (16#1F11B#, 16#0028#),
+      (16#1F11C#, 16#0028#),
+      (16#1F11D#, 16#0028#),
+      (16#1F11E#, 16#0028#),
+      (16#1F11F#, 16#0028#),
+      (16#1F120#, 16#0028#),
+      (16#1F121#, 16#0028#),
+      (16#1F122#, 16#0028#),
+      (16#1F123#, 16#0028#),
+      (16#1F124#, 16#0028#),
+      (16#1F125#, 16#0028#),
+      (16#1F126#, 16#0028#),
+      (16#1F127#, 16#0028#),
+      (16#1F128#, 16#0028#),
+      (16#1F129#, 16#0028#),
+      (16#1F12A#, 16#3014#),
+      (16#1F12B#, 16#0043#),
+      (16#1F12C#, 16#0052#),
+      (16#1F12D#, 16#0043#),
+      (16#1F12E#, 16#0057#),
+      (16#1F130#, 16#0041#),
+      (16#1F131#, 16#0042#),
+      (16#1F132#, 16#0043#),
+      (16#1F133#, 16#0044#),
+      (16#1F134#, 16#0045#),
+      (16#1F135#, 16#0046#),
+      (16#1F136#, 16#0047#),
+      (16#1F137#, 16#0048#),
+      (16#1F138#, 16#0049#),
+      (16#1F139#, 16#004A#),
+      (16#1F13A#, 16#004B#),
+      (16#1F13B#, 16#004C#),
+      (16#1F13C#, 16#004D#),
+      (16#1F13D#, 16#004E#),
+      (16#1F13E#, 16#004F#),
+      (16#1F13F#, 16#0050#),
+      (16#1F140#, 16#0051#),
+      (16#1F141#, 16#0052#),
+      (16#1F142#, 16#0053#),
+      (16#1F143#, 16#0054#),
+      (16#1F144#, 16#0055#),
+      (16#1F145#, 16#0056#),
+      (16#1F146#, 16#0057#),
+      (16#1F147#, 16#0058#),
+      (16#1F148#, 16#0059#),
+      (16#1F149#, 16#005A#),
+      (16#1F14A#, 16#0048#),
+      (16#1F14B#, 16#004D#),
+      (16#1F14C#, 16#0053#),
+      (16#1F14D#, 16#0053#),
+      (16#1F14E#, 16#0050#),
+      (16#1F14F#, 16#0057#),
+      (16#1F16A#, 16#004D#),
+      (16#1F16B#, 16#004D#),
+      (16#1F16C#, 16#004D#),
+      (16#1F190#, 16#0044#),
+      (16#1F200#, 16#307B#),
+      (16#1F201#, 16#30B3#),
+      (16#1F202#, 16#30B5#),
+      (16#1F210#, 16#624B#),
+      (16#1F211#, 16#5B57#),
+      (16#1F212#, 16#53CC#),
+      (16#1F213#, 16#30C7#),
+      (16#1F214#, 16#4E8C#),
+      (16#1F215#, 16#591A#),
+      (16#1F216#, 16#89E3#),
+      (16#1F217#, 16#5929#),
+      (16#1F218#, 16#4EA4#),
+      (16#1F219#, 16#6620#),
+      (16#1F21A#, 16#7121#),
+      (16#1F21B#, 16#6599#),
+      (16#1F21C#, 16#524D#),
+      (16#1F21D#, 16#5F8C#),
+      (16#1F21E#, 16#518D#),
+      (16#1F21F#, 16#65B0#),
+      (16#1F220#, 16#521D#),
+      (16#1F221#, 16#7D42#),
+      (16#1F222#, 16#751F#),
+      (16#1F223#, 16#8CA9#),
+      (16#1F224#, 16#58F0#),
+      (16#1F225#, 16#5439#),
+      (16#1F226#, 16#6F14#),
+      (16#1F227#, 16#6295#),
+      (16#1F228#, 16#6355#),
+      (16#1F229#, 16#4E00#),
+      (16#1F22A#, 16#4E09#),
+      (16#1F22B#, 16#904A#),
+      (16#1F22C#, 16#5DE6#),
+      (16#1F22D#, 16#4E2D#),
+      (16#1F22E#, 16#53F3#),
+      (16#1F22F#, 16#6307#),
+      (16#1F230#, 16#8D70#),
+      (16#1F231#, 16#6253#),
+      (16#1F232#, 16#7981#),
+      (16#1F233#, 16#7A7A#),
+      (16#1F234#, 16#5408#),
+      (16#1F235#, 16#6E80#),
+      (16#1F236#, 16#6709#),
+      (16#1F237#, 16#6708#),
+      (16#1F238#, 16#7533#),
+      (16#1F239#, 16#5272#),
+      (16#1F23A#, 16#55B6#),
+      (16#1F23B#, 16#914D#),
+      (16#1F240#, 16#3014#),
+      (16#1F241#, 16#3014#),
+      (16#1F242#, 16#3014#),
+      (16#1F243#, 16#3014#),
+      (16#1F244#, 16#3014#),
+      (16#1F245#, 16#3014#),
+      (16#1F246#, 16#3014#),
+      (16#1F247#, 16#3014#),
+      (16#1F248#, 16#3014#),
+      (16#1F250#, 16#5F97#),
+      (16#1F251#, 16#53EF#),
+      (16#1FBF0#, 16#0030#),
+      (16#1FBF1#, 16#0031#),
+      (16#1FBF2#, 16#0032#),
+      (16#1FBF3#, 16#0033#),
+      (16#1FBF4#, 16#0034#),
+      (16#1FBF5#, 16#0035#),
+      (16#1FBF6#, 16#0036#),
+      (16#1FBF7#, 16#0037#),
+      (16#1FBF8#, 16#0038#),
+      (16#1FBF9#, 16#0039#),
+      (16#2F800#, 16#4E3D#),
+      (16#2F801#, 16#4E38#),
+      (16#2F802#, 16#4E41#),
+      (16#2F803#, 16#20122#),
+      (16#2F804#, 16#4F60#),
+      (16#2F805#, 16#4FAE#),
+      (16#2F806#, 16#4FBB#),
+      (16#2F807#, 16#5002#),
+      (16#2F808#, 16#507A#),
+      (16#2F809#, 16#5099#),
+      (16#2F80A#, 16#50E7#),
+      (16#2F80B#, 16#50CF#),
+      (16#2F80C#, 16#349E#),
+      (16#2F80D#, 16#2063A#),
+      (16#2F80E#, 16#514D#),
+      (16#2F80F#, 16#5154#),
+      (16#2F810#, 16#5164#),
+      (16#2F811#, 16#5177#),
+      (16#2F812#, 16#2051C#),
+      (16#2F813#, 16#34B9#),
+      (16#2F814#, 16#5167#),
+      (16#2F815#, 16#518D#),
+      (16#2F816#, 16#2054B#),
+      (16#2F817#, 16#5197#),
+      (16#2F818#, 16#51A4#),
+      (16#2F819#, 16#4ECC#),
+      (16#2F81A#, 16#51AC#),
+      (16#2F81B#, 16#51B5#),
+      (16#2F81C#, 16#291DF#),
+      (16#2F81D#, 16#51F5#),
+      (16#2F81E#, 16#5203#),
+      (16#2F81F#, 16#34DF#),
+      (16#2F820#, 16#523B#),
+      (16#2F821#, 16#5246#),
+      (16#2F822#, 16#5272#),
+      (16#2F823#, 16#5277#),
+      (16#2F824#, 16#3515#),
+      (16#2F825#, 16#52C7#),
+      (16#2F826#, 16#52C9#),
+      (16#2F827#, 16#52E4#),
+      (16#2F828#, 16#52FA#),
+      (16#2F829#, 16#5305#),
+      (16#2F82A#, 16#5306#),
+      (16#2F82B#, 16#5317#),
+      (16#2F82C#, 16#5349#),
+      (16#2F82D#, 16#5351#),
+      (16#2F82E#, 16#535A#),
+      (16#2F82F#, 16#5373#),
+      (16#2F830#, 16#537D#),
+      (16#2F831#, 16#537F#),
+      (16#2F832#, 16#537F#),
+      (16#2F833#, 16#537F#),
+      (16#2F834#, 16#20A2C#),
+      (16#2F835#, 16#7070#),
+      (16#2F836#, 16#53CA#),
+      (16#2F837#, 16#53DF#),
+      (16#2F838#, 16#20B63#),
+      (16#2F839#, 16#53EB#),
+      (16#2F83A#, 16#53F1#),
+      (16#2F83B#, 16#5406#),
+      (16#2F83C#, 16#549E#),
+      (16#2F83D#, 16#5438#),
+      (16#2F83E#, 16#5448#),
+      (16#2F83F#, 16#5468#),
+      (16#2F840#, 16#54A2#),
+      (16#2F841#, 16#54F6#),
+      (16#2F842#, 16#5510#),
+      (16#2F843#, 16#5553#),
+      (16#2F844#, 16#5563#),
+      (16#2F845#, 16#5584#),
+      (16#2F846#, 16#5584#),
+      (16#2F847#, 16#5599#),
+      (16#2F848#, 16#55AB#),
+      (16#2F849#, 16#55B3#),
+      (16#2F84A#, 16#55C2#),
+      (16#2F84B#, 16#5716#),
+      (16#2F84C#, 16#5606#),
+      (16#2F84D#, 16#5717#),
+      (16#2F84E#, 16#5651#),
+      (16#2F84F#, 16#5674#),
+      (16#2F850#, 16#5207#),
+      (16#2F851#, 16#58EE#),
+      (16#2F852#, 16#57CE#),
+      (16#2F853#, 16#57F4#),
+      (16#2F854#, 16#580D#),
+      (16#2F855#, 16#578B#),
+      (16#2F856#, 16#5832#),
+      (16#2F857#, 16#5831#),
+      (16#2F858#, 16#58AC#),
+      (16#2F859#, 16#214E4#),
+      (16#2F85A#, 16#58F2#),
+      (16#2F85B#, 16#58F7#),
+      (16#2F85C#, 16#5906#),
+      (16#2F85D#, 16#591A#),
+      (16#2F85E#, 16#5922#),
+      (16#2F85F#, 16#5962#),
+      (16#2F860#, 16#216A8#),
+      (16#2F861#, 16#216EA#),
+      (16#2F862#, 16#59EC#),
+      (16#2F863#, 16#5A1B#),
+      (16#2F864#, 16#5A27#),
+      (16#2F865#, 16#59D8#),
+      (16#2F866#, 16#5A66#),
+      (16#2F867#, 16#36EE#),
+      (16#2F868#, 16#36FC#),
+      (16#2F869#, 16#5B08#),
+      (16#2F86A#, 16#5B3E#),
+      (16#2F86B#, 16#5B3E#),
+      (16#2F86C#, 16#219C8#),
+      (16#2F86D#, 16#5BC3#),
+      (16#2F86E#, 16#5BD8#),
+      (16#2F86F#, 16#5BE7#),
+      (16#2F870#, 16#5BF3#),
+      (16#2F871#, 16#21B18#),
+      (16#2F872#, 16#5BFF#),
+      (16#2F873#, 16#5C06#),
+      (16#2F874#, 16#5F53#),
+      (16#2F875#, 16#5C22#),
+      (16#2F876#, 16#3781#),
+      (16#2F877#, 16#5C60#),
+      (16#2F878#, 16#5C6E#),
+      (16#2F879#, 16#5CC0#),
+      (16#2F87A#, 16#5C8D#),
+      (16#2F87B#, 16#21DE4#),
+      (16#2F87C#, 16#5D43#),
+      (16#2F87D#, 16#21DE6#),
+      (16#2F87E#, 16#5D6E#),
+      (16#2F87F#, 16#5D6B#),
+      (16#2F880#, 16#5D7C#),
+      (16#2F881#, 16#5DE1#),
+      (16#2F882#, 16#5DE2#),
+      (16#2F883#, 16#382F#),
+      (16#2F884#, 16#5DFD#),
+      (16#2F885#, 16#5E28#),
+      (16#2F886#, 16#5E3D#),
+      (16#2F887#, 16#5E69#),
+      (16#2F888#, 16#3862#),
+      (16#2F889#, 16#22183#),
+      (16#2F88A#, 16#387C#),
+      (16#2F88B#, 16#5EB0#),
+      (16#2F88C#, 16#5EB3#),
+      (16#2F88D#, 16#5EB6#),
+      (16#2F88E#, 16#5ECA#),
+      (16#2F88F#, 16#2A392#),
+      (16#2F890#, 16#5EFE#),
+      (16#2F891#, 16#22331#),
+      (16#2F892#, 16#22331#),
+      (16#2F893#, 16#8201#),
+      (16#2F894#, 16#5F22#),
+      (16#2F895#, 16#5F22#),
+      (16#2F896#, 16#38C7#),
+      (16#2F897#, 16#232B8#),
+      (16#2F898#, 16#261DA#),
+      (16#2F899#, 16#5F62#),
+      (16#2F89A#, 16#5F6B#),
+      (16#2F89B#, 16#38E3#),
+      (16#2F89C#, 16#5F9A#),
+      (16#2F89D#, 16#5FCD#),
+      (16#2F89E#, 16#5FD7#),
+      (16#2F89F#, 16#5FF9#),
+      (16#2F8A0#, 16#6081#),
+      (16#2F8A1#, 16#393A#),
+      (16#2F8A2#, 16#391C#),
+      (16#2F8A3#, 16#6094#),
+      (16#2F8A4#, 16#226D4#),
+      (16#2F8A5#, 16#60C7#),
+      (16#2F8A6#, 16#6148#),
+      (16#2F8A7#, 16#614C#),
+      (16#2F8A8#, 16#614E#),
+      (16#2F8A9#, 16#614C#),
+      (16#2F8AA#, 16#617A#),
+      (16#2F8AB#, 16#618E#),
+      (16#2F8AC#, 16#61B2#),
+      (16#2F8AD#, 16#61A4#),
+      (16#2F8AE#, 16#61AF#),
+      (16#2F8AF#, 16#61DE#),
+      (16#2F8B0#, 16#61F2#),
+      (16#2F8B1#, 16#61F6#),
+      (16#2F8B2#, 16#6210#),
+      (16#2F8B3#, 16#621B#),
+      (16#2F8B4#, 16#625D#),
+      (16#2F8B5#, 16#62B1#),
+      (16#2F8B6#, 16#62D4#),
+      (16#2F8B7#, 16#6350#),
+      (16#2F8B8#, 16#22B0C#),
+      (16#2F8B9#, 16#633D#),
+      (16#2F8BA#, 16#62FC#),
+      (16#2F8BB#, 16#6368#),
+      (16#2F8BC#, 16#6383#),
+      (16#2F8BD#, 16#63E4#),
+      (16#2F8BE#, 16#22BF1#),
+      (16#2F8BF#, 16#6422#),
+      (16#2F8C0#, 16#63C5#),
+      (16#2F8C1#, 16#63A9#),
+      (16#2F8C2#, 16#3A2E#),
+      (16#2F8C3#, 16#6469#),
+      (16#2F8C4#, 16#647E#),
+      (16#2F8C5#, 16#649D#),
+      (16#2F8C6#, 16#6477#),
+      (16#2F8C7#, 16#3A6C#),
+      (16#2F8C8#, 16#654F#),
+      (16#2F8C9#, 16#656C#),
+      (16#2F8CA#, 16#2300A#),
+      (16#2F8CB#, 16#65E3#),
+      (16#2F8CC#, 16#66F8#),
+      (16#2F8CD#, 16#6649#),
+      (16#2F8CE#, 16#3B19#),
+      (16#2F8CF#, 16#6691#),
+      (16#2F8D0#, 16#3B08#),
+      (16#2F8D1#, 16#3AE4#),
+      (16#2F8D2#, 16#5192#),
+      (16#2F8D3#, 16#5195#),
+      (16#2F8D4#, 16#6700#),
+      (16#2F8D5#, 16#669C#),
+      (16#2F8D6#, 16#80AD#),
+      (16#2F8D7#, 16#43D9#),
+      (16#2F8D8#, 16#6717#),
+      (16#2F8D9#, 16#671B#),
+      (16#2F8DA#, 16#6721#),
+      (16#2F8DB#, 16#675E#),
+      (16#2F8DC#, 16#6753#),
+      (16#2F8DD#, 16#233C3#),
+      (16#2F8DE#, 16#3B49#),
+      (16#2F8DF#, 16#67FA#),
+      (16#2F8E0#, 16#6785#),
+      (16#2F8E1#, 16#6852#),
+      (16#2F8E2#, 16#6885#),
+      (16#2F8E3#, 16#2346D#),
+      (16#2F8E4#, 16#688E#),
+      (16#2F8E5#, 16#681F#),
+      (16#2F8E6#, 16#6914#),
+      (16#2F8E7#, 16#3B9D#),
+      (16#2F8E8#, 16#6942#),
+      (16#2F8E9#, 16#69A3#),
+      (16#2F8EA#, 16#69EA#),
+      (16#2F8EB#, 16#6AA8#),
+      (16#2F8EC#, 16#236A3#),
+      (16#2F8ED#, 16#6ADB#),
+      (16#2F8EE#, 16#3C18#),
+      (16#2F8EF#, 16#6B21#),
+      (16#2F8F0#, 16#238A7#),
+      (16#2F8F1#, 16#6B54#),
+      (16#2F8F2#, 16#3C4E#),
+      (16#2F8F3#, 16#6B72#),
+      (16#2F8F4#, 16#6B9F#),
+      (16#2F8F5#, 16#6BBA#),
+      (16#2F8F6#, 16#6BBB#),
+      (16#2F8F7#, 16#23A8D#),
+      (16#2F8F8#, 16#21D0B#),
+      (16#2F8F9#, 16#23AFA#),
+      (16#2F8FA#, 16#6C4E#),
+      (16#2F8FB#, 16#23CBC#),
+      (16#2F8FC#, 16#6CBF#),
+      (16#2F8FD#, 16#6CCD#),
+      (16#2F8FE#, 16#6C67#),
+      (16#2F8FF#, 16#6D16#),
+      (16#2F900#, 16#6D3E#),
+      (16#2F901#, 16#6D77#),
+      (16#2F902#, 16#6D41#),
+      (16#2F903#, 16#6D69#),
+      (16#2F904#, 16#6D78#),
+      (16#2F905#, 16#6D85#),
+      (16#2F906#, 16#23D1E#),
+      (16#2F907#, 16#6D34#),
+      (16#2F908#, 16#6E2F#),
+      (16#2F909#, 16#6E6E#),
+      (16#2F90A#, 16#3D33#),
+      (16#2F90B#, 16#6ECB#),
+      (16#2F90C#, 16#6EC7#),
+      (16#2F90D#, 16#23ED1#),
+      (16#2F90E#, 16#6DF9#),
+      (16#2F90F#, 16#6F6E#),
+      (16#2F910#, 16#23F5E#),
+      (16#2F911#, 16#23F8E#),
+      (16#2F912#, 16#6FC6#),
+      (16#2F913#, 16#7039#),
+      (16#2F914#, 16#701E#),
+      (16#2F915#, 16#701B#),
+      (16#2F916#, 16#3D96#),
+      (16#2F917#, 16#704A#),
+      (16#2F918#, 16#707D#),
+      (16#2F919#, 16#7077#),
+      (16#2F91A#, 16#70AD#),
+      (16#2F91B#, 16#20525#),
+      (16#2F91C#, 16#7145#),
+      (16#2F91D#, 16#24263#),
+      (16#2F91E#, 16#719C#),
+      (16#2F91F#, 16#243AB#),
+      (16#2F920#, 16#7228#),
+      (16#2F921#, 16#7235#),
+      (16#2F922#, 16#7250#),
+      (16#2F923#, 16#24608#),
+      (16#2F924#, 16#7280#),
+      (16#2F925#, 16#7295#),
+      (16#2F926#, 16#24735#),
+      (16#2F927#, 16#24814#),
+      (16#2F928#, 16#737A#),
+      (16#2F929#, 16#738B#),
+      (16#2F92A#, 16#3EAC#),
+      (16#2F92B#, 16#73A5#),
+      (16#2F92C#, 16#3EB8#),
+      (16#2F92D#, 16#3EB8#),
+      (16#2F92E#, 16#7447#),
+      (16#2F92F#, 16#745C#),
+      (16#2F930#, 16#7471#),
+      (16#2F931#, 16#7485#),
+      (16#2F932#, 16#74CA#),
+      (16#2F933#, 16#3F1B#),
+      (16#2F934#, 16#7524#),
+      (16#2F935#, 16#24C36#),
+      (16#2F936#, 16#753E#),
+      (16#2F937#, 16#24C92#),
+      (16#2F938#, 16#7570#),
+      (16#2F939#, 16#2219F#),
+      (16#2F93A#, 16#7610#),
+      (16#2F93B#, 16#24FA1#),
+      (16#2F93C#, 16#24FB8#),
+      (16#2F93D#, 16#25044#),
+      (16#2F93E#, 16#3FFC#),
+      (16#2F93F#, 16#4008#),
+      (16#2F940#, 16#76F4#),
+      (16#2F941#, 16#250F3#),
+      (16#2F942#, 16#250F2#),
+      (16#2F943#, 16#25119#),
+      (16#2F944#, 16#25133#),
+      (16#2F945#, 16#771E#),
+      (16#2F946#, 16#771F#),
+      (16#2F947#, 16#771F#),
+      (16#2F948#, 16#774A#),
+      (16#2F949#, 16#4039#),
+      (16#2F94A#, 16#778B#),
+      (16#2F94B#, 16#4046#),
+      (16#2F94C#, 16#4096#),
+      (16#2F94D#, 16#2541D#),
+      (16#2F94E#, 16#784E#),
+      (16#2F94F#, 16#788C#),
+      (16#2F950#, 16#78CC#),
+      (16#2F951#, 16#40E3#),
+      (16#2F952#, 16#25626#),
+      (16#2F953#, 16#7956#),
+      (16#2F954#, 16#2569A#),
+      (16#2F955#, 16#256C5#),
+      (16#2F956#, 16#798F#),
+      (16#2F957#, 16#79EB#),
+      (16#2F958#, 16#412F#),
+      (16#2F959#, 16#7A40#),
+      (16#2F95A#, 16#7A4A#),
+      (16#2F95B#, 16#7A4F#),
+      (16#2F95C#, 16#2597C#),
+      (16#2F95D#, 16#25AA7#),
+      (16#2F95E#, 16#25AA7#),
+      (16#2F95F#, 16#7AEE#),
+      (16#2F960#, 16#4202#),
+      (16#2F961#, 16#25BAB#),
+      (16#2F962#, 16#7BC6#),
+      (16#2F963#, 16#7BC9#),
+      (16#2F964#, 16#4227#),
+      (16#2F965#, 16#25C80#),
+      (16#2F966#, 16#7CD2#),
+      (16#2F967#, 16#42A0#),
+      (16#2F968#, 16#7CE8#),
+      (16#2F969#, 16#7CE3#),
+      (16#2F96A#, 16#7D00#),
+      (16#2F96B#, 16#25F86#),
+      (16#2F96C#, 16#7D63#),
+      (16#2F96D#, 16#4301#),
+      (16#2F96E#, 16#7DC7#),
+      (16#2F96F#, 16#7E02#),
+      (16#2F970#, 16#7E45#),
+      (16#2F971#, 16#4334#),
+      (16#2F972#, 16#26228#),
+      (16#2F973#, 16#26247#),
+      (16#2F974#, 16#4359#),
+      (16#2F975#, 16#262D9#),
+      (16#2F976#, 16#7F7A#),
+      (16#2F977#, 16#2633E#),
+      (16#2F978#, 16#7F95#),
+      (16#2F979#, 16#7FFA#),
+      (16#2F97A#, 16#8005#),
+      (16#2F97B#, 16#264DA#),
+      (16#2F97C#, 16#26523#),
+      (16#2F97D#, 16#8060#),
+      (16#2F97E#, 16#265A8#),
+      (16#2F97F#, 16#8070#),
+      (16#2F980#, 16#2335F#),
+      (16#2F981#, 16#43D5#),
+      (16#2F982#, 16#80B2#),
+      (16#2F983#, 16#8103#),
+      (16#2F984#, 16#440B#),
+      (16#2F985#, 16#813E#),
+      (16#2F986#, 16#5AB5#),
+      (16#2F987#, 16#267A7#),
+      (16#2F988#, 16#267B5#),
+      (16#2F989#, 16#23393#),
+      (16#2F98A#, 16#2339C#),
+      (16#2F98B#, 16#8201#),
+      (16#2F98C#, 16#8204#),
+      (16#2F98D#, 16#8F9E#),
+      (16#2F98E#, 16#446B#),
+      (16#2F98F#, 16#8291#),
+      (16#2F990#, 16#828B#),
+      (16#2F991#, 16#829D#),
+      (16#2F992#, 16#52B3#),
+      (16#2F993#, 16#82B1#),
+      (16#2F994#, 16#82B3#),
+      (16#2F995#, 16#82BD#),
+      (16#2F996#, 16#82E6#),
+      (16#2F997#, 16#26B3C#),
+      (16#2F998#, 16#82E5#),
+      (16#2F999#, 16#831D#),
+      (16#2F99A#, 16#8363#),
+      (16#2F99B#, 16#83AD#),
+      (16#2F99C#, 16#8323#),
+      (16#2F99D#, 16#83BD#),
+      (16#2F99E#, 16#83E7#),
+      (16#2F99F#, 16#8457#),
+      (16#2F9A0#, 16#8353#),
+      (16#2F9A1#, 16#83CA#),
+      (16#2F9A2#, 16#83CC#),
+      (16#2F9A3#, 16#83DC#),
+      (16#2F9A4#, 16#26C36#),
+      (16#2F9A5#, 16#26D6B#),
+      (16#2F9A6#, 16#26CD5#),
+      (16#2F9A7#, 16#452B#),
+      (16#2F9A8#, 16#84F1#),
+      (16#2F9A9#, 16#84F3#),
+      (16#2F9AA#, 16#8516#),
+      (16#2F9AB#, 16#273CA#),
+      (16#2F9AC#, 16#8564#),
+      (16#2F9AD#, 16#26F2C#),
+      (16#2F9AE#, 16#455D#),
+      (16#2F9AF#, 16#4561#),
+      (16#2F9B0#, 16#26FB1#),
+      (16#2F9B1#, 16#270D2#),
+      (16#2F9B2#, 16#456B#),
+      (16#2F9B3#, 16#8650#),
+      (16#2F9B4#, 16#865C#),
+      (16#2F9B5#, 16#8667#),
+      (16#2F9B6#, 16#8669#),
+      (16#2F9B7#, 16#86A9#),
+      (16#2F9B8#, 16#8688#),
+      (16#2F9B9#, 16#870E#),
+      (16#2F9BA#, 16#86E2#),
+      (16#2F9BB#, 16#8779#),
+      (16#2F9BC#, 16#8728#),
+      (16#2F9BD#, 16#876B#),
+      (16#2F9BE#, 16#8786#),
+      (16#2F9BF#, 16#45D7#),
+      (16#2F9C0#, 16#87E1#),
+      (16#2F9C1#, 16#8801#),
+      (16#2F9C2#, 16#45F9#),
+      (16#2F9C3#, 16#8860#),
+      (16#2F9C4#, 16#8863#),
+      (16#2F9C5#, 16#27667#),
+      (16#2F9C6#, 16#88D7#),
+      (16#2F9C7#, 16#88DE#),
+      (16#2F9C8#, 16#4635#),
+      (16#2F9C9#, 16#88FA#),
+      (16#2F9CA#, 16#34BB#),
+      (16#2F9CB#, 16#278AE#),
+      (16#2F9CC#, 16#27966#),
+      (16#2F9CD#, 16#46BE#),
+      (16#2F9CE#, 16#46C7#),
+      (16#2F9CF#, 16#8AA0#),
+      (16#2F9D0#, 16#8AED#),
+      (16#2F9D1#, 16#8B8A#),
+      (16#2F9D2#, 16#8C55#),
+      (16#2F9D3#, 16#27CA8#),
+      (16#2F9D4#, 16#8CAB#),
+      (16#2F9D5#, 16#8CC1#),
+      (16#2F9D6#, 16#8D1B#),
+      (16#2F9D7#, 16#8D77#),
+      (16#2F9D8#, 16#27F2F#),
+      (16#2F9D9#, 16#20804#),
+      (16#2F9DA#, 16#8DCB#),
+      (16#2F9DB#, 16#8DBC#),
+      (16#2F9DC#, 16#8DF0#),
+      (16#2F9DD#, 16#208DE#),
+      (16#2F9DE#, 16#8ED4#),
+      (16#2F9DF#, 16#8F38#),
+      (16#2F9E0#, 16#285D2#),
+      (16#2F9E1#, 16#285ED#),
+      (16#2F9E2#, 16#9094#),
+      (16#2F9E3#, 16#90F1#),
+      (16#2F9E4#, 16#9111#),
+      (16#2F9E5#, 16#2872E#),
+      (16#2F9E6#, 16#911B#),
+      (16#2F9E7#, 16#9238#),
+      (16#2F9E8#, 16#92D7#),
+      (16#2F9E9#, 16#92D8#),
+      (16#2F9EA#, 16#927C#),
+      (16#2F9EB#, 16#93F9#),
+      (16#2F9EC#, 16#9415#),
+      (16#2F9ED#, 16#28BFA#),
+      (16#2F9EE#, 16#958B#),
+      (16#2F9EF#, 16#4995#),
+      (16#2F9F0#, 16#95B7#),
+      (16#2F9F1#, 16#28D77#),
+      (16#2F9F2#, 16#49E6#),
+      (16#2F9F3#, 16#96C3#),
+      (16#2F9F4#, 16#5DB2#),
+      (16#2F9F5#, 16#9723#),
+      (16#2F9F6#, 16#29145#),
+      (16#2F9F7#, 16#2921A#),
+      (16#2F9F8#, 16#4A6E#),
+      (16#2F9F9#, 16#4A76#),
+      (16#2F9FA#, 16#97E0#),
+      (16#2F9FB#, 16#2940A#),
+      (16#2F9FC#, 16#4AB2#),
+      (16#2F9FD#, 16#29496#),
+      (16#2F9FE#, 16#980B#),
+      (16#2F9FF#, 16#980B#),
+      (16#2FA00#, 16#9829#),
+      (16#2FA01#, 16#295B6#),
+      (16#2FA02#, 16#98E2#),
+      (16#2FA03#, 16#4B33#),
+      (16#2FA04#, 16#9929#),
+      (16#2FA05#, 16#99A7#),
+      (16#2FA06#, 16#99C2#),
+      (16#2FA07#, 16#99FE#),
+      (16#2FA08#, 16#4BCE#),
+      (16#2FA09#, 16#29B30#),
+      (16#2FA0A#, 16#9B12#),
+      (16#2FA0B#, 16#9C40#),
+      (16#2FA0C#, 16#9CFD#),
+      (16#2FA0D#, 16#4CCE#),
+      (16#2FA0E#, 16#4CED#),
+      (16#2FA0F#, 16#9D67#),
+      (16#2FA10#, 16#2A0CE#),
+      (16#2FA11#, 16#4CF8#),
+      (16#2FA12#, 16#2A105#),
+      (16#2FA13#, 16#2A20E#),
+      (16#2FA14#, 16#2A291#),
+      (16#2FA15#, 16#9EBB#),
+      (16#2FA16#, 16#4D56#),
+      (16#2FA17#, 16#9EF9#),
+      (16#2FA18#, 16#9EFE#),
+      (16#2FA19#, 16#9F05#),
+      (16#2FA1A#, 16#9F0F#),
+      (16#2FA1B#, 16#9F16#),
+      (16#2FA1C#, 16#9F3B#),
+      (16#2FA1D#, 16#2A600#));
+ 
     -----------------------
     -- Local Subprograms --
     -----------------------
  
+    function Decomposition_Search
+      (U : UTF_32; R : Unicode_Decomposition_Array) return Natural;
+    --  Searches the given decomposition array and returns the index of the
+    --  matching character U if found, zero otherwise.
+ 
     function Range_Search (U : UTF_32; R : UTF_32_Ranges) return Natural;
     --  Searches the given ranges (which must be in ascending order by Lo value)
     --  and returns the index of the matching range in R if U matches one of the
*************** package body System.UTF_32 is
*** 6247,6252 ****
--- 12395,12409 ----
        return Non_Graphic (C);
     end Is_UTF_32_Non_Graphic;
  
+    --------------------
+    -- Is_UTF_32_NFKC --
+    --------------------
+ 
+    function Is_UTF_32_NFKC (U : UTF_32) return Boolean is
+    begin
+       return U < 160 or else Range_Search (U, UTF_32_NFKC_QC_No) = 0;
+    end Is_UTF_32_NFKC;
+ 
     ---------------------
     -- Is_UTF_32_Other --
     ---------------------
*************** package body System.UTF_32 is
*** 6289,6294 ****
--- 12446,12498 ----
        return C = Zs;
     end Is_UTF_32_Space;
  
+    ---------------------
+    -- Is_UTF_32_Basic --
+    ---------------------
+ 
+    function Is_UTF_32_Basic (U : UTF_32) return Boolean is
+    begin
+       return Decomposition_Search (U, Unicode_Decomposition) = 0;
+    end Is_UTF_32_Basic;
+ 
+    --------------------------
+    -- Decomposition_Search --
+    --------------------------
+ 
+    function Decomposition_Search
+      (U : UTF_32; R : Unicode_Decomposition_Array) return Natural
+    is
+       Lo  : Integer;
+       Hi  : Integer;
+       Mid : Integer;
+ 
+    begin
+       Lo := R'First;
+       Hi := R'Last;
+ 
+       loop
+          Mid := (Lo + Hi) / 2;
+ 
+          if U < R (Mid).Item then
+             Hi := Mid - 1;
+ 
+             if Hi < Lo then
+                return 0;
+             end if;
+ 
+          elsif R (Mid).Item < U then
+             Lo := Mid + 1;
+ 
+             if Hi < Lo then
+                return 0;
+             end if;
+ 
+          else
+             return Mid;
+          end if;
+       end loop;
+    end Decomposition_Search;
+ 
     ------------------
     -- Range_Search --
     ------------------
*************** package body System.UTF_32 is
*** 6325,6330 ****
--- 12529,12549 ----
        end loop;
     end Range_Search;
  
+    ---------------------
+    -- UTF_32_To_Basic --
+    ---------------------
+ 
+    function UTF_32_To_Basic (U : UTF_32) return UTF_32 is
+       Index : constant Integer :=
+         Decomposition_Search (U, Unicode_Decomposition);
+    begin
+       if Index = 0 then
+          return U;
+       else
+          return Unicode_Decomposition (Index).First_Char_Mapping;
+       end if;
+    end UTF_32_To_Basic;
+ 
     --------------------------
     -- UTF_32_To_Lower_Case --
     --------------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-utf_32.ads gcc-11.1.0/gcc/ada/libgnat/s-utf_32.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-utf_32.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-utf_32.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.UTF_32 is
*** 189,194 ****
--- 189,205 ----
     --  letters to upper case using this routine. A corresponding routine to
     --  fold to lower case is also provided.
  
+    function Is_UTF_32_NFKC (U : UTF_32) return Boolean;
+    pragma Inline (Is_UTF_32_NFKC);
+    --  Return True if U could be present in a string normalized to
+    --  Normalization Form KC (as defined by Clause 21 of ISO/IEC 10646:2017),
+    --  otherwise returns False.
+ 
+    function Is_UTF_32_Basic (U : UTF_32) return Boolean;
+    pragma Inline (Is_UTF_32_Basic);
+    --  Return True if U has no Decomposition Mapping in the code charts of
+    --  ISO/IEC 10646:2017.
+ 
     function UTF_32_To_Lower_Case (U : UTF_32) return UTF_32;
     pragma Inline (UTF_32_To_Lower_Case);
     --  If U represents an upper case letter, returns the corresponding lower
*************** package System.UTF_32 is
*** 209,212 ****
--- 220,229 ----
     --  code is folded to this CAPITAL LETTER code. Otherwise the input code is
     --  returned unchanged.
  
+    function UTF_32_To_Basic (U : UTF_32) return UTF_32;
+    pragma Inline (UTF_32_To_Basic);
+    --  Returns the UTF_32 character whose code point is given by the first
+    --  value of its Decomposition Mapping in the code charts of ISO/IEC
+    --  10646:2017 if any; returns Item otherwise.
+ 
  end System.UTF_32;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-vade128.ads gcc-11.1.0/gcc/ada/libgnat/s-vade128.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-vade128.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-vade128.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --               S Y S T E M . V A L _ D E C I M A L _ 1 2 8                --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains routines for scanning values for decimal fixed point
+ --  types up to 128-bit mantissa, for use in Text_IO.Decimal_IO, and the Value
+ --  attribute for such decimal types.
+ 
+ with Interfaces;
+ with System.Arith_128;
+ with System.Value_D;
+ 
+ package System.Val_Decimal_128 is
+    pragma Preelaborate;
+ 
+    subtype Int128 is Interfaces.Integer_128;
+    subtype Uns128 is Interfaces.Unsigned_128;
+ 
+    package Impl is new Value_D (Int128, Uns128, Arith_128.Scaled_Divide128);
+ 
+    function Scan_Decimal128
+      (Str   : String;
+       Ptr   : not null access Integer;
+       Max   : Integer;
+       Scale : Integer) return Int128
+      renames Impl.Scan_Decimal;
+ 
+    function Value_Decimal128
+      (Str   : String;
+       Scale : Integer) return Int128
+     renames Impl.Value_Decimal;
+ 
+ end System.Val_Decimal_128;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-vade32.ads gcc-11.1.0/gcc/ada/libgnat/s-vade32.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-vade32.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-vade32.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,58 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                S Y S T E M . V A L _ D E C I M A L _ 3 2                 --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains routines for scanning values for decimal fixed point
+ --  types up to 32-bit mantissa, for use in Text_IO.Decimal_IO, and the Value
+ --  attribute for such decimal types.
+ 
+ with Interfaces;
+ with System.Arith_32;
+ with System.Value_D;
+ 
+ package System.Val_Decimal_32 is
+    pragma Preelaborate;
+ 
+    subtype Int32 is Interfaces.Integer_32;
+    subtype Uns32 is Interfaces.Unsigned_32;
+ 
+    package Impl is new Value_D (Int32, Uns32, Arith_32.Scaled_Divide32);
+ 
+    function Scan_Decimal32
+      (Str   : String;
+       Ptr   : not null access Integer;
+       Max   : Integer;
+       Scale : Integer) return Int32
+      renames Impl.Scan_Decimal;
+ 
+    function Value_Decimal32 (Str : String; Scale : Integer) return Int32
+      renames Impl.Value_Decimal;
+ 
+ end System.Val_Decimal_32;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-vade64.ads gcc-11.1.0/gcc/ada/libgnat/s-vade64.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-vade64.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-vade64.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                S Y S T E M . V A L _ D E C I M A L _ 6 4                 --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains routines for scanning values for decimal fixed point
+ --  types up to 64-bit mantissa, for use in Text_IO.Decimal_IO, and the Value
+ --  attribute for such decimal types.
+ 
+ with Interfaces;
+ with System.Arith_64;
+ with System.Value_D;
+ 
+ package System.Val_Decimal_64 is
+    pragma Preelaborate;
+ 
+    subtype Int64 is Interfaces.Integer_64;
+    subtype Uns64 is Interfaces.Unsigned_64;
+ 
+    package Impl is new Value_D (Int64, Uns64, Arith_64.Scaled_Divide64);
+ 
+    function Scan_Decimal64
+      (Str   : String;
+       Ptr   : not null access Integer;
+       Max   : Integer;
+       Scale : Integer) return Int64
+      renames Impl.Scan_Decimal;
+ 
+    function Value_Decimal64
+      (Str   : String;
+       Scale : Integer) return Int64
+     renames Impl.Value_Decimal;
+ 
+ end System.Val_Decimal_64;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-vafi128.ads gcc-11.1.0/gcc/ada/libgnat/s-vafi128.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-vafi128.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-vafi128.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                 S Y S T E M . V A L _ F I X E D _ 1 2 8                  --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains routines for scanning values for ordinary fixed point
+ --  types up to 128-bit small and mantissa, for use in Text_IO.Decimal_IO, and
+ --  the Value attribute for such decimal types.
+ 
+ with Interfaces;
+ with System.Arith_128;
+ with System.Value_F;
+ 
+ package System.Val_Fixed_128 is
+    pragma Preelaborate;
+ 
+    subtype Int128 is Interfaces.Integer_128;
+    subtype Uns128 is Interfaces.Unsigned_128;
+ 
+    package Impl is new Value_F (Int128, Uns128, Arith_128.Scaled_Divide128);
+ 
+    function Scan_Fixed128
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer;
+       Num : Int128;
+       Den : Int128) return Int128
+      renames Impl.Scan_Fixed;
+ 
+    function Value_Fixed128
+      (Str : String; Num : Int128; Den : Int128) return Int128
+      renames Impl.Value_Fixed;
+ 
+ end System.Val_Fixed_128;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-vafi32.ads gcc-11.1.0/gcc/ada/libgnat/s-vafi32.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-vafi32.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-vafi32.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                  S Y S T E M . V A L _ F I X E D _ 3 2                   --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains routines for scanning values for decimal fixed point
+ --  types up to 32-bit small and mantissa, for use in Text_IO.Decimal_IO, and
+ --  the Value attribute for such decimal types.
+ 
+ with Interfaces;
+ with System.Arith_32;
+ with System.Value_F;
+ 
+ package System.Val_Fixed_32 is
+    pragma Preelaborate;
+ 
+    subtype Int32 is Interfaces.Integer_32;
+    subtype Uns32 is Interfaces.Unsigned_32;
+ 
+    package Impl is new Value_F (Int32, Uns32, Arith_32.Scaled_Divide32);
+ 
+    function Scan_Fixed32
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer;
+       Num : Int32;
+       Den : Int32) return Int32
+      renames Impl.Scan_Fixed;
+ 
+    function Value_Fixed32
+      (Str : String; Num : Int32; Den : Int32) return Int32
+      renames Impl.Value_Fixed;
+ 
+ end System.Val_Fixed_32;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-vafi64.ads gcc-11.1.0/gcc/ada/libgnat/s-vafi64.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-vafi64.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-vafi64.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                  S Y S T E M . V A L _ F I X E D _ 6 4                   --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains routines for scanning values for decimal fixed point
+ --  types up to 64-bit small and mantissa, for use in Text_IO.Decimal_IO, and
+ --  the Value attribute for such decimal types.
+ 
+ with Interfaces;
+ with System.Arith_64;
+ with System.Value_F;
+ 
+ package System.Val_Fixed_64 is
+    pragma Preelaborate;
+ 
+    subtype Int64 is Interfaces.Integer_64;
+    subtype Uns64 is Interfaces.Unsigned_64;
+ 
+    package Impl is new Value_F (Int64, Uns64, Arith_64.Scaled_Divide64);
+ 
+    function Scan_Fixed64
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer;
+       Num : Int64;
+       Den : Int64) return Int64
+      renames Impl.Scan_Fixed;
+ 
+    function Value_Fixed64
+      (Str : String; Num : Int64; Den : Int64) return Int64
+      renames Impl.Value_Fixed;
+ 
+ end System.Val_Fixed_64;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valboo.adb gcc-11.1.0/gcc/ada/libgnat/s-valboo.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-valboo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valboo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valboo.ads gcc-11.1.0/gcc/ada/libgnat/s-valboo.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valboo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valboo.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valcha.adb gcc-11.1.0/gcc/ada/libgnat/s-valcha.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-valcha.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valcha.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valcha.ads gcc-11.1.0/gcc/ada/libgnat/s-valcha.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valcha.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valcha.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valdec.adb gcc-11.1.0/gcc/ada/libgnat/s-valdec.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-valdec.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valdec.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,68 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                       S Y S T E M . V A L _ D E C                        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System.Val_Real; use System.Val_Real;
- 
- package body System.Val_Dec is
- 
-    ------------------
-    -- Scan_Decimal --
-    ------------------
- 
-    --  For decimal types where Size < Integer'Size, it is fine to use
-    --  the floating-point circuit, since it certainly has sufficient
-    --  precision for any reasonable hardware, and we just don't support
-    --  things on junk hardware.
- 
-    function Scan_Decimal
-      (Str   : String;
-       Ptr   : not null access Integer;
-       Max   : Integer;
-       Scale : Integer) return Integer
-    is
-       Val : Long_Long_Float;
-    begin
-       Val := Scan_Real (Str, Ptr, Max);
-       return Integer (Val * 10.0 ** Scale);
-    end Scan_Decimal;
- 
-    -------------------
-    -- Value_Decimal --
-    -------------------
- 
-    --  Again, we use the real circuit for this purpose
- 
-    function Value_Decimal (Str : String; Scale : Integer) return Integer is
-    begin
-       return Integer (Value_Real (Str) * 10.0 ** Scale);
-    end Value_Decimal;
- 
- end System.Val_Dec;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valdec.ads gcc-11.1.0/gcc/ada/libgnat/s-valdec.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valdec.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valdec.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,80 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                       S Y S T E M . V A L _ D E C                        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 1992-2019, Free Software Foundation, Inc.       --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package contains routines for scanning decimal values where the size
- --  of the type is no greater than Standard.Integer'Size, for use in Text_IO.
- --  Decimal_IO, and the Value attribute for such decimal types.
- 
- package System.Val_Dec is
-    pragma Preelaborate;
- 
-    function Scan_Decimal
-      (Str   : String;
-       Ptr   : not null access Integer;
-       Max   : Integer;
-       Scale : Integer) return Integer;
-    --  This function scans the string starting at Str (Ptr.all) for a valid
-    --  real literal according to the syntax described in (RM 3.5(43)). The
-    --  substring scanned extends no further than Str (Max). There are three
-    --  cases for the return:
-    --
-    --  If a valid real literal is found after scanning past any initial spaces,
-    --  then Ptr.all is updated past the last character of the literal (but
-    --  trailing spaces are not scanned out). The value returned is the value
-    --  Integer'Integer_Value (decimal-literal-value), using the given Scale
-    --  to determine this value.
-    --
-    --  If no valid real literal is found, then Ptr.all points either to an
-    --  initial non-digit character, or to Max + 1 if the field is all spaces
-    --  and the exception Constraint_Error is raised.
-    --
-    --  If a syntactically valid integer is scanned, but the value is out of
-    --  range, or, in the based case, the base value is out of range or there
-    --  is an out of range digit, then Ptr.all points past the integer, and
-    --  Constraint_Error is raised.
-    --
-    --  Note: these rules correspond to the requirements for leaving the
-    --  pointer positioned in Text_Io.Get
-    --
-    --  Note: if Str is null, i.e. if Max is less than Ptr, then this is a
-    --  special case of an all-blank string, and Ptr is unchanged, and hence
-    --  is greater than Max as required in this case.
- 
-    function Value_Decimal (Str : String; Scale : Integer) return Integer;
-    --  Used in computing X'Value (Str) where X is a decimal fixed-point type
-    --  whose size does not exceed Standard.Integer'Size. Str is the string
-    --  argument of the attribute. Constraint_Error is raised if the string
-    --  is malformed or if the value is out of range of Integer (not the
-    --  range of the fixed-point type, that check must be done by the caller.
-    --  Otherwise the value returned is the value Integer'Integer_Value
-    --  (decimal-literal-value), using Scale to determine this value.
- 
- end System.Val_Dec;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valenu.adb gcc-11.1.0/gcc/ada/libgnat/s-valenu.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-valenu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valenu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valenu.ads gcc-11.1.0/gcc/ada/libgnat/s-valenu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valenu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valenu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valflt.ads gcc-11.1.0/gcc/ada/libgnat/s-valflt.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valflt.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-valflt.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,57 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . V A L _ F L T                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains routines for scanning real values for floating point
+ --  type Float, for use in Text_IO.Float_IO and the Value attribute.
+ 
+ with Interfaces;
+ with System.Powten_Flt;
+ with System.Val_Real;
+ 
+ package System.Val_Flt is
+    pragma Preelaborate;
+ 
+    package Impl is new Val_Real
+      (Float,
+       Interfaces.Unsigned_32,
+       System.Powten_Flt.Maxpow,
+       System.Powten_Flt.Powten'Address);
+ 
+    function Scan_Float
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer) return Float
+      renames Impl.Scan_Real;
+ 
+    function Value_Float (Str : String) return Float
+      renames Impl.Value_Real;
+ 
+ end System.Val_Flt;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valint.adb gcc-11.1.0/gcc/ada/libgnat/s-valint.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-valint.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valint.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,118 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Unsigned_Types; use System.Unsigned_Types;
! with System.Val_Uns;        use System.Val_Uns;
! with System.Val_Util;       use System.Val_Util;
! 
! package body System.Val_Int is
! 
!    ------------------
!    -- Scan_Integer --
!    ------------------
! 
!    function Scan_Integer
!      (Str : String;
!       Ptr : not null access Integer;
!       Max : Integer) return Integer
!    is
!       Uval : Unsigned;
!       --  Unsigned result
! 
!       Minus : Boolean := False;
!       --  Set to True if minus sign is present, otherwise to False
! 
!       Start : Positive;
!       --  Saves location of first non-blank (not used in this case)
! 
!    begin
!       Scan_Sign (Str, Ptr, Max, Minus, Start);
! 
!       if Str (Ptr.all) not in '0' .. '9' then
!          Ptr.all := Start;
!          Bad_Value (Str);
!       end if;
! 
!       Uval := Scan_Raw_Unsigned (Str, Ptr, Max);
! 
!       --  Deal with overflow cases, and also with maximum negative number
! 
!       if Uval > Unsigned (Integer'Last) then
!          if Minus and then Uval = Unsigned (-(Integer'First)) then
!             return Integer'First;
!          else
!             Bad_Value (Str);
!          end if;
! 
!       --  Negative values
! 
!       elsif Minus then
!          return -(Integer (Uval));
! 
!       --  Positive values
! 
!       else
!          return Integer (Uval);
!       end if;
!    end Scan_Integer;
! 
!    -------------------
!    -- Value_Integer --
!    -------------------
! 
!    function Value_Integer (Str : String) return Integer is
!    begin
!       --  We have to special case Str'Last = Positive'Last because the normal
!       --  circuit ends up setting P to Str'Last + 1 which is out of bounds. We
!       --  deal with this by converting to a subtype which fixes the bounds.
! 
!       if Str'Last = Positive'Last then
!          declare
!             subtype NT is String (1 .. Str'Length);
!          begin
!             return Value_Integer (NT (Str));
!          end;
! 
!       --  Normal case where Str'Last < Positive'Last
! 
!       else
!          declare
!             V : Integer;
!             P : aliased Integer := Str'First;
!          begin
!             V := Scan_Integer (Str, P'Access, Str'Last);
!             Scan_Trailing_Blanks (Str, P);
!             return V;
!          end;
!       end if;
!    end Value_Integer;
  
! end System.Val_Int;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valint.ads gcc-11.1.0/gcc/ada/libgnat/s-valint.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valint.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valint.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,73 ****
  --  This package contains routines for scanning signed Integer values for use
  --  in Text_IO.Integer_IO, and the Value attribute.
  
  package System.Val_Int is
     pragma Preelaborate;
  
     function Scan_Integer
       (Str : String;
        Ptr : not null access Integer;
!       Max : Integer) return Integer;
!    --  This function scans the string starting at Str (Ptr.all) for a valid
!    --  integer according to the syntax described in (RM 3.5(43)). The substring
!    --  scanned extends no further than Str (Max). There are three cases for the
!    --  return:
!    --
!    --  If a valid integer is found after scanning past any initial spaces, then
!    --  Ptr.all is updated past the last character of the integer (but trailing
!    --  spaces are not scanned out).
!    --
!    --  If no valid integer is found, then Ptr.all points either to an initial
!    --  non-digit character, or to Max + 1 if the field is all spaces and the
!    --  exception Constraint_Error is raised.
!    --
!    --  If a syntactically valid integer is scanned, but the value is out of
!    --  range, or, in the based case, the base value is out of range or there
!    --  is an out of range digit, then Ptr.all points past the integer, and
!    --  Constraint_Error is raised.
!    --
!    --  Note: these rules correspond to the requirements for leaving the pointer
!    --  positioned in Text_Io.Get
!    --
!    --  Note: if Str is null, i.e. if Max is less than Ptr, then this is a
!    --  special case of an all-blank string, and Ptr is unchanged, and hence
!    --  is greater than Max as required in this case.
  
!    function Value_Integer (Str : String) return Integer;
!    --  Used in computing X'Value (Str) where X is a signed integer type whose
!    --  base range does not exceed the base range of Integer. Str is the string
!    --  argument of the attribute. Constraint_Error is raised if the string is
!    --  malformed, or if the value is out of range.
  
  end System.Val_Int;
--- 32,55 ----
  --  This package contains routines for scanning signed Integer values for use
  --  in Text_IO.Integer_IO, and the Value attribute.
  
+ with System.Unsigned_Types;
+ with System.Val_Uns;
+ with System.Value_I;
+ 
  package System.Val_Int is
     pragma Preelaborate;
  
+    subtype Unsigned is Unsigned_Types.Unsigned;
+ 
+    package Impl is new Value_I (Integer, Unsigned, Val_Uns.Scan_Raw_Unsigned);
+ 
     function Scan_Integer
       (Str : String;
        Ptr : not null access Integer;
!       Max : Integer) return Integer
!      renames Impl.Scan_Integer;
  
!    function Value_Integer (Str : String) return Integer
!      renames Impl.Value_Integer;
  
  end System.Val_Int;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-vallfl.ads gcc-11.1.0/gcc/ada/libgnat/s-vallfl.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-vallfl.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-vallfl.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,57 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                      S Y S T E M . V A L _ L F L T                       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains routines for scanning real values for floating point
+ --  type Long_Float, for use in Text_IO.Float_IO and the Value attribute.
+ 
+ with Interfaces;
+ with System.Powten_LFlt;
+ with System.Val_Real;
+ 
+ package System.Val_LFlt is
+    pragma Preelaborate;
+ 
+    package Impl is new Val_Real
+      (Long_Float,
+       Interfaces.Unsigned_64,
+       System.Powten_LFlt.Maxpow,
+       System.Powten_LFlt.Powten'Address);
+ 
+    function Scan_Long_Float
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer) return Long_Float
+      renames Impl.Scan_Real;
+ 
+    function Value_Long_Float (Str : String) return Long_Float
+      renames Impl.Value_Real;
+ 
+ end System.Val_LFlt;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-vallld.adb gcc-11.1.0/gcc/ada/libgnat/s-vallld.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-vallld.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-vallld.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,70 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                       S Y S T E M . V A L _ L L D                        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System.Val_Real; use System.Val_Real;
- 
- package body System.Val_LLD is
- 
-    ----------------------------
-    -- Scan_Long_Long_Decimal --
-    ----------------------------
- 
-    --  We use the floating-point circuit for now, this will be OK on a PC,
-    --  but definitely does NOT have the required precision if the longest
-    --  float type is IEEE double. This must be fixed in the future ???
- 
-    function Scan_Long_Long_Decimal
-      (Str   : String;
-       Ptr   : not null access Integer;
-       Max   : Integer;
-       Scale : Integer) return Long_Long_Integer
-    is
-       Val : Long_Long_Float;
-    begin
-       Val := Scan_Real (Str, Ptr, Max);
-       return Long_Long_Integer (Val * 10.0 ** Scale);
-    end Scan_Long_Long_Decimal;
- 
-    -----------------------------
-    -- Value_Long_Long_Decimal --
-    -----------------------------
- 
-    --  Again we cheat and use floating-point ???
- 
-    function Value_Long_Long_Decimal
-      (Str   : String;
-       Scale : Integer) return Long_Long_Integer
-    is
-    begin
-       return Long_Long_Integer (Value_Real (Str) * 10.0 ** Scale);
-    end Value_Long_Long_Decimal;
- 
- end System.Val_LLD;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-vallld.ads gcc-11.1.0/gcc/ada/libgnat/s-vallld.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-vallld.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-vallld.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,81 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                       S Y S T E M . V A L _ L L D                        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package contains routines for scanning decimal values where the size
- --  of the type is greater than Standard.Integer'Size, for use in Text_IO.
- --  Decimal_IO, and the Value attribute for such decimal types.
- 
- package System.Val_LLD is
-    pragma Preelaborate;
- 
-    function Scan_Long_Long_Decimal
-      (Str   : String;
-       Ptr   : not null access Integer;
-       Max   : Integer;
-       Scale : Integer) return Long_Long_Integer;
-    --  This function scans the string starting at Str (Ptr.all) for a valid
-    --  real literal according to the syntax described in (RM 3.5(43)). The
-    --  substring scanned extends no further than Str (Max). There are three
-    --  cases for the return:
-    --
-    --  If a valid real literal is found after scanning past any initial spaces,
-    --  then Ptr.all is updated past the last character of the literal (but
-    --  trailing spaces are not scanned out). The value returned is the value
-    --  Long_Long_Integer'Integer_Value (decimal-literal-value), using the given
-    --  Scale to determine this value.
-    --
-    --  If no valid real literal is found, then Ptr.all points either to an
-    --  initial non-digit character, or to Max + 1 if the field is all spaces
-    --  and the exception Constraint_Error is raised.
-    --
-    --  If a syntactically valid integer is scanned, but the value is out of
-    --  range, or, in the based case, the base value is out of range or there
-    --  is an out of range digit, then Ptr.all points past the integer, and
-    --  Constraint_Error is raised.
-    --
-    --  Note: these rules correspond to the requirements for leaving the
-    --  pointer positioned in Text_Io.Get
-    --
-    --  Note: if Str is null, i.e. if Max is less than Ptr, then this is a
-    --  special case of an all-blank string, and Ptr is unchanged, and hence
-    --  is greater than Max as required in this case.
- 
-    function Value_Long_Long_Decimal
-      (Str   : String;
-       Scale : Integer) return Long_Long_Integer;
-    --  Used in computing X'Value (Str) where X is a decimal types whose size
-    --  exceeds Standard.Integer'Size. Str is the string argument of the
-    --  attribute. Constraint_Error is raised if the string is malformed
-    --  or if the value is out of range, otherwise the value returned is the
-    --  value Long_Long_Integer'Integer_Value (decimal-literal-value), using
-    --  the given Scale to determine this value.
- 
- end System.Val_LLD;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valllf.ads gcc-11.1.0/gcc/ada/libgnat/s-valllf.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valllf.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-valllf.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,57 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . V A L _ L L F                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains routines for scanning real values for floating point
+ --  type Long_Long_Float, for use in Text_IO.Float_IO and the Value attribute.
+ 
+ with Interfaces;
+ with System.Powten_LLF;
+ with System.Val_Real;
+ 
+ package System.Val_LLF is
+    pragma Preelaborate;
+ 
+    package Impl is new Val_Real
+      (Long_Long_Float,
+       Interfaces.Unsigned_64,
+       System.Powten_LLF.Maxpow,
+       System.Powten_LLF.Powten'Address);
+ 
+    function Scan_Long_Long_Float
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer) return Long_Long_Float
+      renames Impl.Scan_Real;
+ 
+    function Value_Long_Long_Float (Str : String) return Long_Long_Float
+      renames Impl.Value_Real;
+ 
+ end System.Val_LLF;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-vallli.adb gcc-11.1.0/gcc/ada/libgnat/s-vallli.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-vallli.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-vallli.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,120 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Unsigned_Types; use System.Unsigned_Types;
! with System.Val_LLU;        use System.Val_LLU;
! with System.Val_Util;       use System.Val_Util;
! 
! package body System.Val_LLI is
! 
!    ----------------------------
!    -- Scan_Long_Long_Integer --
!    ----------------------------
! 
!    function Scan_Long_Long_Integer
!      (Str  : String;
!       Ptr  : not null access Integer;
!       Max  : Integer) return Long_Long_Integer
!    is
!       Uval : Long_Long_Unsigned;
!       --  Unsigned result
! 
!       Minus : Boolean := False;
!       --  Set to True if minus sign is present, otherwise to False
! 
!       Start : Positive;
!       --  Saves location of first non-blank
! 
!    begin
!       Scan_Sign (Str, Ptr, Max, Minus, Start);
! 
!       if Str (Ptr.all) not in '0' .. '9' then
!          Ptr.all := Start;
!          Bad_Value (Str);
!       end if;
! 
!       Uval := Scan_Raw_Long_Long_Unsigned (Str, Ptr, Max);
! 
!       --  Deal with overflow cases, and also with maximum negative number
! 
!       if Uval > Long_Long_Unsigned (Long_Long_Integer'Last) then
!          if Minus
!            and then Uval = Long_Long_Unsigned (-(Long_Long_Integer'First))
!          then
!             return Long_Long_Integer'First;
!          else
!             Bad_Value (Str);
!          end if;
! 
!       --  Negative values
! 
!       elsif Minus then
!          return -(Long_Long_Integer (Uval));
! 
!       --  Positive values
! 
!       else
!          return Long_Long_Integer (Uval);
!       end if;
!    end Scan_Long_Long_Integer;
! 
!    -----------------------------
!    -- Value_Long_Long_Integer --
!    -----------------------------
! 
!    function Value_Long_Long_Integer (Str : String) return Long_Long_Integer is
!    begin
!       --  We have to special case Str'Last = Positive'Last because the normal
!       --  circuit ends up setting P to Str'Last + 1 which is out of bounds. We
!       --  deal with this by converting to a subtype which fixes the bounds.
! 
!       if Str'Last = Positive'Last then
!          declare
!             subtype NT is String (1 .. Str'Length);
!          begin
!             return Value_Long_Long_Integer (NT (Str));
!          end;
! 
!       --  Normal case where Str'Last < Positive'Last
! 
!       else
!          declare
!             V : Long_Long_Integer;
!             P : aliased Integer := Str'First;
!          begin
!             V := Scan_Long_Long_Integer (Str, P'Access, Str'Last);
!             Scan_Trailing_Blanks (Str, P);
!             return V;
!          end;
!       end if;
!    end Value_Long_Long_Integer;
  
! end System.Val_LLI;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-vallli.ads gcc-11.1.0/gcc/ada/libgnat/s-vallli.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-vallli.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-vallli.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,73 ****
  --  This package contains routines for scanning signed Long_Long_Integer
  --  values for use in Text_IO.Integer_IO, and the Value attribute.
  
  package System.Val_LLI is
     pragma Preelaborate;
  
     function Scan_Long_Long_Integer
       (Str  : String;
        Ptr  : not null access Integer;
!       Max  : Integer) return Long_Long_Integer;
!    --  This function scans the string starting at Str (Ptr.all) for a valid
!    --  integer according to the syntax described in (RM 3.5(43)). The substring
!    --  scanned extends no further than Str (Max). There are three cases for the
!    --  return:
!    --
!    --  If a valid integer is found after scanning past any initial spaces, then
!    --  Ptr.all is updated past the last character of the integer (but trailing
!    --  spaces are not scanned out).
!    --
!    --  If no valid integer is found, then Ptr.all points either to an initial
!    --  non-digit character, or to Max + 1 if the field is all spaces and the
!    --  exception Constraint_Error is raised.
!    --
!    --  If a syntactically valid integer is scanned, but the value is out of
!    --  range, or, in the based case, the base value is out of range or there
!    --  is an out of range digit, then Ptr.all points past the integer, and
!    --  Constraint_Error is raised.
!    --
!    --  Note: these rules correspond to the requirements for leaving the pointer
!    --  positioned in Text_Io.Get
!    --
!    --  Note: if Str is null, i.e. if Max is less than Ptr, then this is a
!    --  special case of an all-blank string, and Ptr is unchanged, and hence
!    --  is greater than Max as required in this case.
  
!    function Value_Long_Long_Integer (Str : String) return Long_Long_Integer;
!    --  Used in computing X'Value (Str) where X is a signed integer type whose
!    --  base range exceeds the base range of Integer. Str is the string argument
!    --  of the attribute. Constraint_Error is raised if the string is malformed,
!    --  or if the value is out of range.
  
  end System.Val_LLI;
--- 32,58 ----
  --  This package contains routines for scanning signed Long_Long_Integer
  --  values for use in Text_IO.Integer_IO, and the Value attribute.
  
+ with System.Unsigned_Types;
+ with System.Val_LLU;
+ with System.Value_I;
+ 
  package System.Val_LLI is
     pragma Preelaborate;
  
+    subtype Long_Long_Unsigned is Unsigned_Types.Long_Long_Unsigned;
+ 
+    package Impl is new
+      Value_I (Long_Long_Integer,
+               Long_Long_Unsigned,
+               Val_LLU.Scan_Raw_Long_Long_Unsigned);
+ 
     function Scan_Long_Long_Integer
       (Str  : String;
        Ptr  : not null access Integer;
!       Max  : Integer) return Long_Long_Integer
!      renames Impl.Scan_Integer;
  
!    function Value_Long_Long_Integer (Str : String) return Long_Long_Integer
!      renames Impl.Value_Integer;
  
  end System.Val_LLI;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valllli.ads gcc-11.1.0/gcc/ada/libgnat/s-valllli.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valllli.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-valllli.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,59 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                      S Y S T E M . V A L _ L L L I                       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains routines for scanning signed Long_Long_Long_Integer
+ --  values for use in Text_IO.Integer_IO, and the Value attribute.
+ 
+ with System.Unsigned_Types;
+ with System.Val_LLLU;
+ with System.Value_I;
+ 
+ package System.Val_LLLI is
+    pragma Preelaborate;
+ 
+    subtype Long_Long_Long_Unsigned is Unsigned_Types.Long_Long_Long_Unsigned;
+ 
+    package Impl is new
+      Value_I (Long_Long_Long_Integer,
+               Long_Long_Long_Unsigned,
+               Val_LLLU.Scan_Raw_Long_Long_Long_Unsigned);
+ 
+    function Scan_Long_Long_Long_Integer
+      (Str  : String;
+       Ptr  : not null access Integer;
+       Max  : Integer) return Long_Long_Long_Integer
+      renames Impl.Scan_Integer;
+ 
+    function Value_Long_Long_Long_Integer
+       (Str : String) return Long_Long_Long_Integer
+      renames Impl.Value_Integer;
+ 
+ end System.Val_LLLI;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-vallllu.ads gcc-11.1.0/gcc/ada/libgnat/s-vallllu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-vallllu.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-vallllu.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,61 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                      S Y S T E M . V A L _ L L L U                       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains routines for scanning modular Long_Long_Unsigned
+ --  values for use in Text_IO.Modular_IO, and the Value attribute.
+ 
+ with System.Unsigned_Types;
+ with System.Value_U;
+ 
+ package System.Val_LLLU is
+    pragma Preelaborate;
+ 
+    subtype Long_Long_Long_Unsigned is Unsigned_Types.Long_Long_Long_Unsigned;
+ 
+    package Impl is new Value_U (Long_Long_Long_Unsigned);
+ 
+    function Scan_Raw_Long_Long_Long_Unsigned
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer) return Long_Long_Long_Unsigned
+      renames Impl.Scan_Raw_Unsigned;
+ 
+    function Scan_Long_Long_Long_Unsigned
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer) return Long_Long_Long_Unsigned
+      renames Impl.Scan_Unsigned;
+ 
+    function Value_Long_Long_Long_Unsigned
+      (Str : String) return Long_Long_Long_Unsigned
+      renames Impl.Value_Unsigned;
+ 
+ end System.Val_LLLU;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valllu.adb gcc-11.1.0/gcc/ada/libgnat/s-valllu.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-valllu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valllu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,330 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Unsigned_Types; use System.Unsigned_Types;
! with System.Val_Util;       use System.Val_Util;
! 
! package body System.Val_LLU is
! 
!    ---------------------------------
!    -- Scan_Raw_Long_Long_Unsigned --
!    ---------------------------------
! 
!    function Scan_Raw_Long_Long_Unsigned
!      (Str : String;
!       Ptr : not null access Integer;
!       Max : Integer) return Long_Long_Unsigned
!    is
!       P : Integer;
!       --  Local copy of the pointer
! 
!       Uval : Long_Long_Unsigned;
!       --  Accumulated unsigned integer result
! 
!       Expon : Integer;
!       --  Exponent value
! 
!       Overflow : Boolean := False;
!       --  Set True if overflow is detected at any point
! 
!       Base_Char : Character;
!       --  Base character (# or :) in based case
! 
!       Base : Long_Long_Unsigned := 10;
!       --  Base value (reset in based case)
! 
!       Digit : Long_Long_Unsigned;
!       --  Digit value
! 
!    begin
!       --  We do not tolerate strings with Str'Last = Positive'Last
! 
!       if Str'Last = Positive'Last then
!          raise Program_Error with
!            "string upper bound is Positive'Last, not supported";
!       end if;
! 
!       P := Ptr.all;
!       Uval := Character'Pos (Str (P)) - Character'Pos ('0');
!       P := P + 1;
! 
!       --  Scan out digits of what is either the number or the base.
!       --  In either case, we are definitely scanning out in base 10.
! 
!       declare
!          Umax : constant := (Long_Long_Unsigned'Last - 9) / 10;
!          --  Max value which cannot overflow on accumulating next digit
! 
!          Umax10 : constant := Long_Long_Unsigned'Last / 10;
!          --  Numbers bigger than Umax10 overflow if multiplied by 10
! 
!       begin
!          --  Loop through decimal digits
!          loop
!             exit when P > Max;
! 
!             Digit := Character'Pos (Str (P)) - Character'Pos ('0');
! 
!             --  Non-digit encountered
! 
!             if Digit > 9 then
!                if Str (P) = '_' then
!                   Scan_Underscore (Str, P, Ptr, Max, False);
!                else
!                   exit;
!                end if;
! 
!             --  Accumulate result, checking for overflow
! 
!             else
!                if Uval <= Umax then
!                   Uval := 10 * Uval + Digit;
! 
!                elsif Uval > Umax10 then
!                   Overflow := True;
! 
!                else
!                   Uval := 10 * Uval + Digit;
! 
!                   if Uval < Umax10 then
!                      Overflow := True;
!                   end if;
!                end if;
! 
!                P := P + 1;
!             end if;
!          end loop;
!       end;
! 
!       Ptr.all := P;
! 
!       --  Deal with based case. We recognize either the standard '#' or the
!       --  allowed alternative replacement ':' (see RM J.2(3)).
! 
!       if P < Max and then (Str (P) = '#' or else Str (P) = ':') then
!          Base_Char := Str (P);
!          P := P + 1;
!          Base := Uval;
!          Uval := 0;
! 
!          --  Check base value. Overflow is set True if we find a bad base, or
!          --  a digit that is out of range of the base. That way, we scan out
!          --  the numeral that is still syntactically correct, though illegal.
!          --  We use a safe base of 16 for this scan, to avoid zero divide.
! 
!          if Base not in 2 .. 16 then
!             Overflow := True;
!             Base := 16;
!          end if;
! 
!          --  Scan out based integer
! 
!          declare
!             Umax : constant Long_Long_Unsigned :=
!                      (Long_Long_Unsigned'Last - Base + 1) / Base;
!             --  Max value which cannot overflow on accumulating next digit
! 
!             UmaxB : constant Long_Long_Unsigned :=
!                       Long_Long_Unsigned'Last / Base;
!             --  Numbers bigger than UmaxB overflow if multiplied by base
! 
!          begin
!             --  Loop to scan out based integer value
! 
!             loop
!                --  We require a digit at this stage
! 
!                if Str (P) in '0' .. '9' then
!                   Digit := Character'Pos (Str (P)) - Character'Pos ('0');
! 
!                elsif Str (P) in 'A' .. 'F' then
!                   Digit :=
!                     Character'Pos (Str (P)) - (Character'Pos ('A') - 10);
! 
!                elsif Str (P) in 'a' .. 'f' then
!                   Digit :=
!                     Character'Pos (Str (P)) - (Character'Pos ('a') - 10);
! 
!                --  If we don't have a digit, then this is not a based number
!                --  after all, so we use the value we scanned out as the base
!                --  (now in Base), and the pointer to the base character was
!                --  already stored in Ptr.all.
! 
!                else
!                   Uval := Base;
!                   exit;
!                end if;
! 
!                --  If digit is too large, just signal overflow and continue.
!                --  The idea here is to keep scanning as long as the input is
!                --  syntactically valid, even if we have detected overflow
! 
!                if Digit >= Base then
!                   Overflow := True;
! 
!                --  Here we accumulate the value, checking overflow
! 
!                elsif Uval <= Umax then
!                   Uval := Base * Uval + Digit;
! 
!                elsif Uval > UmaxB then
!                   Overflow := True;
! 
!                else
!                   Uval := Base * Uval + Digit;
! 
!                   if Uval < UmaxB then
!                      Overflow := True;
!                   end if;
!                end if;
! 
!                --  If at end of string with no base char, not a based number
!                --  but we signal Constraint_Error and set the pointer past
!                --  the end of the field, since this is what the ACVC tests
!                --  seem to require, see CE3704N, line 204.
! 
!                P := P + 1;
! 
!                if P > Max then
!                   Ptr.all := P;
!                   Bad_Value (Str);
!                end if;
! 
!                --  If terminating base character, we are done with loop
! 
!                if Str (P) = Base_Char then
!                   Ptr.all := P + 1;
!                   exit;
! 
!                --  Deal with underscore
! 
!                elsif Str (P) = '_' then
!                   Scan_Underscore (Str, P, Ptr, Max, True);
!                end if;
! 
!             end loop;
!          end;
!       end if;
! 
!       --  Come here with scanned unsigned value in Uval. The only remaining
!       --  required step is to deal with exponent if one is present.
! 
!       Expon := Scan_Exponent (Str, Ptr, Max);
! 
!       if Expon /= 0 and then Uval /= 0 then
! 
!          --  For non-zero value, scale by exponent value. No need to do this
!          --  efficiently, since use of exponent in integer literals is rare,
!          --  and in any case the exponent cannot be very large.
! 
!          declare
!             UmaxB : constant Long_Long_Unsigned :=
!                       Long_Long_Unsigned'Last / Base;
!             --  Numbers bigger than UmaxB overflow if multiplied by base
! 
!          begin
!             for J in 1 .. Expon loop
!                if Uval > UmaxB then
!                   Overflow := True;
!                   exit;
!                end if;
! 
!                Uval := Uval * Base;
!             end loop;
!          end;
!       end if;
! 
!       --  Return result, dealing with sign and overflow
! 
!       if Overflow then
!          Bad_Value (Str);
!       else
!          return Uval;
!       end if;
!    end Scan_Raw_Long_Long_Unsigned;
! 
!    -----------------------------
!    -- Scan_Long_Long_Unsigned --
!    -----------------------------
! 
!    function Scan_Long_Long_Unsigned
!      (Str : String;
!       Ptr : not null access Integer;
!       Max : Integer) return Long_Long_Unsigned
!    is
!       Start : Positive;
!       --  Save location of first non-blank character
! 
!    begin
!       Scan_Plus_Sign (Str, Ptr, Max, Start);
! 
!       if Str (Ptr.all) not in '0' .. '9' then
!          Ptr.all := Start;
!          raise Constraint_Error;
!       end if;
! 
!       return Scan_Raw_Long_Long_Unsigned (Str, Ptr, Max);
!    end Scan_Long_Long_Unsigned;
! 
!    ------------------------------
!    -- Value_Long_Long_Unsigned --
!    ------------------------------
! 
!    function Value_Long_Long_Unsigned
!      (Str : String) return Long_Long_Unsigned
!    is
!    begin
!       --  We have to special case Str'Last = Positive'Last because the normal
!       --  circuit ends up setting P to Str'Last + 1 which is out of bounds. We
!       --  deal with this by converting to a subtype which fixes the bounds.
! 
!       if Str'Last = Positive'Last then
!          declare
!             subtype NT is String (1 .. Str'Length);
!          begin
!             return Value_Long_Long_Unsigned (NT (Str));
!          end;
! 
!       --  Normal case where Str'Last < Positive'Last
! 
!       else
!          declare
!             V : Long_Long_Unsigned;
!             P : aliased Integer := Str'First;
!          begin
!             V := Scan_Long_Long_Unsigned (Str, P'Access, Str'Last);
!             Scan_Trailing_Blanks (Str, P);
!             return V;
!          end;
!       end if;
!    end Value_Long_Long_Unsigned;
  
! end System.Val_LLU;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valllu.ads gcc-11.1.0/gcc/ada/libgnat/s-valllu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valllu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valllu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,129 ****
  --  values for use in Text_IO.Modular_IO, and the Value attribute.
  
  with System.Unsigned_Types;
  
  package System.Val_LLU is
     pragma Preelaborate;
  
     function Scan_Raw_Long_Long_Unsigned
       (Str : String;
        Ptr : not null access Integer;
!       Max : Integer) return System.Unsigned_Types.Long_Long_Unsigned;
!    --  This function scans the string starting at Str (Ptr.all) for a valid
!    --  integer according to the syntax described in (RM 3.5(43)). The substring
!    --  scanned extends no further than Str (Max).  Note: this does not scan
!    --  leading or trailing blanks, nor leading sign.
!    --
!    --  There are three cases for the return:
!    --
!    --  If a valid integer is found, then Ptr.all is updated past the last
!    --  character of the integer.
!    --
!    --  If no valid integer is found, then Ptr.all points either to an initial
!    --  non-digit character, or to Max + 1 if the field is all spaces and the
!    --  exception Constraint_Error is raised.
!    --
!    --  If a syntactically valid integer is scanned, but the value is out of
!    --  range, or, in the based case, the base value is out of range or there
!    --  is an out of range digit, then Ptr.all points past the integer, and
!    --  Constraint_Error is raised.
!    --
!    --  Note: these rules correspond to the requirements for leaving the pointer
!    --  positioned in Text_IO.Get. Note that the rules as stated in the RM would
!    --  seem to imply that for a case like:
!    --
!    --    8#12345670009#
!    --
!    --  the pointer should be left at the first # having scanned out the longest
!    --  valid integer literal (8), but in fact in this case the pointer points
!    --  past the final # and Constraint_Error is raised. This is the behavior
!    --  expected for Text_IO and enforced by the ACATS tests.
!    --
!    --  If a based literal is malformed in that a character other than a valid
!    --  hexadecimal digit is encountered during scanning out the digits after
!    --  the # (this includes the case of using the wrong terminator, : instead
!    --  of # or vice versa) there are two cases. If all the digits before the
!    --  non-digit are in range of the base, as in
!    --
!    --    8#100x00#
!    --    8#100:
!    --
!    --  then in this case, the "base" value before the initial # is returned as
!    --  the result, and the pointer points to the initial # character on return.
!    --
!    --  If an out of range digit has been detected before the invalid character,
!    --  as in:
!    --
!    --   8#900x00#
!    --   8#900:
!    --
!    --  then the pointer is also left at the initial # character, but constraint
!    --  error is raised reflecting the encounter of an out of range digit.
!    --
!    --  Finally if we have an unterminated fixed-point constant where the final
!    --  # or : character is missing, Constraint_Error is raised and the pointer
!    --  is left pointing past the last digit, as in:
!    --
!    --   8#22
!    --
!    --  This string results in a Constraint_Error with the pointer pointing
!    --  past the second 2.
!    --
!    --  Note: if Str is empty, i.e. if Max is less than Ptr, then this is a
!    --  special case of an all-blank string, and Ptr is unchanged, and hence
!    --  is greater than Max as required in this case.
!    --
!    --  Note: this routine should not be called with Str'Last = Positive'Last.
!    --  If this occurs Program_Error is raised with a message noting that this
!    --  case is not supported. Most such cases are eliminated by the caller.
  
     function Scan_Long_Long_Unsigned
       (Str : String;
        Ptr : not null access Integer;
!       Max : Integer) return System.Unsigned_Types.Long_Long_Unsigned;
!    --  Same as Scan_Raw_Long_Long_Unsigned, except scans optional leading
!    --  blanks, and an optional leading plus sign.
!    --
!    --  Note: if a minus sign is present, Constraint_Error will be raised.
!    --  Note: trailing blanks are not scanned.
  
     function Value_Long_Long_Unsigned
!      (Str : String) return System.Unsigned_Types.Long_Long_Unsigned;
!    --  Used in computing X'Value (Str) where X is a modular integer type whose
!    --  modulus exceeds the range of System.Unsigned_Types.Unsigned. Str is the
!    --  string argument of the attribute. Constraint_Error is raised if the
!    --  string is malformed, or if the value is out of range.
  
  end System.Val_LLU;
--- 33,61 ----
  --  values for use in Text_IO.Modular_IO, and the Value attribute.
  
  with System.Unsigned_Types;
+ with System.Value_U;
  
  package System.Val_LLU is
     pragma Preelaborate;
  
+    subtype Long_Long_Unsigned is Unsigned_Types.Long_Long_Unsigned;
+ 
+    package Impl is new Value_U (Long_Long_Unsigned);
+ 
     function Scan_Raw_Long_Long_Unsigned
       (Str : String;
        Ptr : not null access Integer;
!       Max : Integer) return Long_Long_Unsigned
!      renames Impl.Scan_Raw_Unsigned;
  
     function Scan_Long_Long_Unsigned
       (Str : String;
        Ptr : not null access Integer;
!       Max : Integer) return Long_Long_Unsigned
!      renames Impl.Scan_Unsigned;
  
     function Value_Long_Long_Unsigned
!      (Str : String) return Long_Long_Unsigned
!      renames Impl.Value_Unsigned;
  
  end System.Val_LLU;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valrea.adb gcc-11.1.0/gcc/ada/libgnat/s-valrea.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-valrea.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valrea.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,536 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with System.Val_Util;      use System.Val_Util;
  with System.Float_Control;
  
  package body System.Val_Real is
  
!    procedure Scan_Integral_Digits
!       (Str            : String;
!        Index          : in out Integer;
!        Max            : Integer;
!        Value          : out Long_Long_Integer;
!        Scale          : out Integer;
!        Base_Violation : in out Boolean;
!        Base           : Long_Long_Integer := 10;
!        Base_Specified : Boolean := False);
!    --  Scan the integral part of a real (i.e: before decimal separator)
!    --
!    --  The string parsed is Str (Index .. Max), and after the call Index will
!    --  point to the first non parsed character.
!    --
!    --  For each digit parsed either value := value * base + digit, or scale
!    --  is incremented by 1.
!    --
!    --  Base_Violation will be set to True a digit found is not part of the Base
  
!    procedure Scan_Decimal_Digits
!       (Str            : String;
!        Index          : in out Integer;
!        Max            : Integer;
!        Value          : in out Long_Long_Integer;
!        Scale          : in out Integer;
!        Base_Violation : in out Boolean;
!        Base           : Long_Long_Integer := 10;
!        Base_Specified : Boolean := False);
!    --  Scan the decimal part of a real (i.e: after decimal separator)
!    --
!    --  The string parsed is Str (Index .. Max), and after the call Index will
!    --  point to the first non parsed character.
!    --
!    --  For each digit parsed value = value * base + digit and scale is
!    --  decremented by 1. If precision limit is reached remaining digits are
!    --  still parsed but ignored.
!    --
!    --  Base_Violation will be set to True a digit found is not part of the Base
  
!    subtype Char_As_Digit is Long_Long_Integer range -2 .. 15;
!    subtype Valid_Digit is Char_As_Digit range 0 .. Char_As_Digit'Last;
!    Underscore : constant Char_As_Digit := -2;
!    E_Digit : constant Char_As_Digit := 14;
  
!    function As_Digit (C : Character) return Char_As_Digit;
!    --  Given a character return the digit it represent. If the character is
!    --  not a digit then a negative value is returned, -2 for underscore and
!    --  -1 for any other character.
  
!    Precision_Limit : constant Long_Long_Integer :=
!       2 ** (Long_Long_Float'Machine_Mantissa - 1) - 1;
!    --  This is an upper bound for the number of bits used to represent the
!    --  mantissa. Beyond that number, any digits parsed are useless.
  
!    --------------
!    -- As_Digit --
!    --------------
  
!    function As_Digit (C : Character) return Char_As_Digit
!    is
!    begin
!       case C is
!          when '0' .. '9' =>
!             return Character'Pos (C) - Character'Pos ('0');
!          when 'a' .. 'f' =>
!             return Character'Pos (C) - (Character'Pos ('a') - 10);
!          when 'A' .. 'F' =>
!             return Character'Pos (C) - (Character'Pos ('A') - 10);
!          when '_' =>
!             return Underscore;
!          when others =>
!             return -1;
!       end case;
!    end As_Digit;
  
!    -------------------------
!    -- Scan_Decimal_Digits --
!    -------------------------
  
!    procedure Scan_Decimal_Digits
!       (Str            : String;
!        Index          : in out Integer;
!        Max            : Integer;
!        Value          : in out Long_Long_Integer;
!        Scale          : in out Integer;
!        Base_Violation : in out Boolean;
!        Base           : Long_Long_Integer := 10;
!        Base_Specified : Boolean := False)
  
     is
!       Precision_Limit_Reached : Boolean := False;
!       --  Set to True if addition of a digit will cause Value to be superior
!       --  to Precision_Limit.
  
!       Digit : Char_As_Digit;
!       --  The current digit.
  
-       Trailing_Zeros : Natural := 0;
-       --  Number of trailing zeros at a given point.
     begin
  
!       --  If initial Scale is not 0 then it means that Precision_Limit was
!       --  reached during integral part scanning.
!       if Scale > 0 then
!          Precision_Limit_Reached := True;
        end if;
  
!       --  The function precondition is that the first character is a valid
!       --  digit.
!       Digit := As_Digit (Str (Index));
  
!       loop
!          --  Check if base is correct. If the base is not specified the digit
!          --  E or e cannot be considered as a base violation as it can be used
!          --  for exponentiation.
!          if Digit >= Base then
!             if Base_Specified then
!                Base_Violation := True;
!             elsif Digit = E_Digit then
!                return;
!             else
!                Base_Violation := True;
!             end if;
!          end if;
  
!          --  If precision limit has been reached just ignore any remaining
!          --  digits for the computation of Value and Scale. The scanning
!          --  should continue only to assess the validity of the string
!          if not Precision_Limit_Reached then
!             if Digit = 0 then
!                --  Trailing '0' digits are ignored unless a non-zero digit is
!                --  found.
!                Trailing_Zeros := Trailing_Zeros + 1;
!             else
  
!                --  Handle accumulated zeros.
!                for J in 1 .. Trailing_Zeros loop
!                   if Value > Precision_Limit / Base then
!                      Precision_Limit_Reached := True;
!                      exit;
!                   else
!                      Value := Value * Base;
!                      Scale := Scale - 1;
!                   end if;
!                end loop;
  
!                --  Reset trailing zero counter
!                Trailing_Zeros := 0;
  
!                --  Handle current non zero digit
!                if Value > (Precision_Limit - Digit) / Base then
!                   Precision_Limit_Reached := True;
!                else
!                   Value := Value * Base + Digit;
!                   Scale := Scale - 1;
                 end if;
-             end if;
-          end if;
  
!          --  Check next character
!          Index := Index + 1;
  
!          if Index > Max then
!             return;
!          end if;
  
!          Digit := As_Digit (Str (Index));
  
!          if Digit < 0 then
!             if Digit = Underscore and Index + 1 <= Max then
!                --  Underscore is only allowed if followed by a digit
!                Digit := As_Digit (Str (Index + 1));
!                if Digit in Valid_Digit then
!                   Index := Index + 1;
!                else
!                   return;
                 end if;
-             else
-                --  Neither a valid underscore nor a digit.
-                return;
-             end if;
-          end if;
-       end loop;
  
!    end Scan_Decimal_Digits;
  
!    --------------------------
!    -- Scan_Integral_Digits --
!    --------------------------
  
!    procedure Scan_Integral_Digits
!       (Str            : String;
!        Index          : in out Integer;
!        Max            : Integer;
!        Value          : out Long_Long_Integer;
!        Scale          : out Integer;
!        Base_Violation : in out Boolean;
!        Base           : Long_Long_Integer := 10;
!        Base_Specified : Boolean := False)
!    is
!       Precision_Limit_Reached : Boolean := False;
!       --  Set to True if addition of a digit will cause Value to be superior
!       --  to Precision_Limit.
  
!       Digit : Char_As_Digit;
!       --  The current digit
!    begin
  
!       --  Initialize Scale and Value
!       Value := 0;
!       Scale := 0;
  
!       --  The function precondition is that the first character is a valid
!       --  digit.
!       Digit := As_Digit (Str (Index));
  
!       loop
!          --  Check if base is correct. If the base is not specified the digit
!          --  E or e cannot be considered as a base violation as it can be used
!          --  for exponentiation.
!          if Digit >= Base then
!             if Base_Specified then
!                Base_Violation := True;
!             elsif Digit = E_Digit then
!                return;
!             else
!                Base_Violation := True;
!             end if;
!          end if;
  
!          if Precision_Limit_Reached then
!             --  Precision limit has been reached so just update the exponent
!             Scale := Scale + 1;
!          else
!             if Value > (Precision_Limit - Digit) / Base then
!                --  Updating Value will overflow so ignore this digit and any
!                --  following ones. Only update the scale
!                Precision_Limit_Reached := True;
!                Scale := Scale + 1;
!             else
!                Value := Value * Base + Digit;
!             end if;
!          end if;
  
!          --  Look for the next character
!          Index := Index + 1;
!          if Index > Max then
!             return;
!          end if;
  
!          Digit := As_Digit (Str (Index));
  
-          if Digit not in Valid_Digit then
-             --  Next character is not a digit. In that case stop scanning
-             --  unless the next chracter is an underscore followed by a digit.
-             if Digit = Underscore and Index + 1 <= Max then
-                Digit := As_Digit (Str (Index + 1));
-                if Digit in Valid_Digit then
-                   Index := Index + 1;
                 else
!                   return;
                 end if;
!             else
!                return;
!             end if;
!          end if;
!       end loop;
  
!    end Scan_Integral_Digits;
  
     ---------------
     -- Scan_Real --
     ---------------
  
     function Scan_Real
!       (Str : String;
!        Ptr : not null access Integer;
!        Max : Integer)
!       return Long_Long_Float
! 
     is
!       Start : Positive;
!       --  Position of starting non-blank character
! 
        Minus : Boolean;
!       --  Set to True if minus sign is present, otherwise to False
! 
!       Index : Integer;
!       --  Local copy of string pointer
! 
!       Int_Value : Long_Long_Integer := -1;
!       --  Mantissa as an Integer
! 
!       Int_Scale : Integer := 0;
!       --  Exponent value
! 
!       Base_Violation : Boolean := False;
!       --  If True some digits where not in the base. The float is still scan
!       --  till the end even if an error will be raised.
! 
!       Uval : Long_Long_Float := 0.0;
!       --  Contain the final value at the end of the function
! 
!       After_Point : Boolean := False;
!       --  True if a decimal should be parsed
! 
!       Base : Long_Long_Integer := 10;
!       --  Current base (default: 10)
! 
!       Base_Char : Character := ASCII.NUL;
!       --  Character used to set the base. If Nul this means that default
!       --  base is used.
  
     begin
!       --  We do not tolerate strings with Str'Last = Positive'Last
! 
!       if Str'Last = Positive'Last then
!          raise Program_Error with
!            "string upper bound is Positive'Last, not supported";
!       end if;
! 
!       --  We call the floating-point processor reset routine so that we can
!       --  be sure the floating-point processor is properly set for conversion
!       --  calls. This is notably need on Windows, where calls to the operating
!       --  system randomly reset the processor into 64-bit mode.
! 
!       System.Float_Control.Reset;
! 
!       --  Scan the optional sign
!       Scan_Sign (Str, Ptr, Max, Minus, Start);
!       Index := Ptr.all;
!       Ptr.all := Start;
! 
!       --  First character can be either a decimal digit or a dot.
!       if Str (Index) in '0' .. '9' then
!          --  If this is a digit it can indicates either the float decimal
!          --  part or the base to use
!          Scan_Integral_Digits
!             (Str,
!              Index,
!              Max            => Max,
!              Value          => Int_Value,
!              Scale          => Int_Scale,
!              Base_Violation => Base_Violation,
!              Base           => 10);
!       elsif Str (Index) = '.' and then
!          --  A dot is only allowed if followed by a digit.
!          Index < Max and then
!          Str (Index + 1) in '0' .. '9'
!       then
!          --  Initial point, allowed only if followed by digit (RM 3.5(47))
!          After_Point := True;
!          Index := Index + 1;
!          Int_Value := 0;
!       else
!          Bad_Value (Str);
!       end if;
! 
!       --  Check if the first number encountered is a base
!       if Index < Max and then
!          (Str (Index) = '#' or else Str (Index) = ':')
!       then
!          Base_Char := Str (Index);
!          Base := Int_Value;
! 
!          --  Reset Int_Value to indicate that parsing of integral value should
!          --  be done
!          Int_Value := -1;
!          if Base < 2 or else Base > 16 then
!             Base_Violation := True;
!             Base := 16;
!          end if;
! 
!          Index := Index + 1;
! 
!          if Str (Index) = '.' and then
!             Index < Max and then
!             As_Digit (Str (Index + 1)) in Valid_Digit
!          then
!             After_Point := True;
!             Index := Index + 1;
!             Int_Value := 0;
!          end if;
!       end if;
! 
!       --  Does scanning of integral part needed
!       if Int_Value < 0 then
!          if Index > Max or else As_Digit (Str (Index)) not in Valid_Digit then
!             Bad_Value (Str);
!          end if;
! 
!          Scan_Integral_Digits
!             (Str,
!              Index,
!              Max => Max,
!              Value => Int_Value,
!              Scale => Int_Scale,
!              Base_Violation => Base_Violation,
!              Base => Base,
!              Base_Specified => Base_Char /= ASCII.NUL);
!       end if;
! 
!       --  Do we have a dot ?
!       if not After_Point and then
!          Index <= Max and then
!          Str (Index) = '.'
!       then
!          --  At this stage if After_Point was not set, this means that an
!          --  integral part has been found. Thus the dot is valid even if not
!          --  followed by a digit.
!          if Index < Max and then As_Digit (Str (Index + 1)) in Valid_Digit then
!             After_Point := True;
!          end if;
! 
!          Index := Index + 1;
!       end if;
! 
!       if After_Point then
!          --  Parse decimal part
!          Scan_Decimal_Digits
!             (Str,
!              Index,
!              Max => Max,
!              Value => Int_Value,
!              Scale => Int_Scale,
!              Base_Violation => Base_Violation,
!              Base => Base,
!              Base_Specified => Base_Char /= ASCII.NUL);
!       end if;
! 
!       --  If an explicit base was specified ensure that the delimiter is found
!       if Base_Char /= ASCII.NUL then
!          if Index > Max or else Str (Index) /= Base_Char then
!             Bad_Value (Str);
!          else
!             Index := Index + 1;
!          end if;
!       end if;
! 
!       --  Compute the final value
!       Uval := Long_Long_Float (Int_Value);
! 
!       --  Update pointer and scan exponent.
!       Ptr.all := Index;
! 
!       Int_Scale := Int_Scale + Scan_Exponent (Str,
!                                               Ptr,
!                                               Max,
!                                               Real => True);
! 
!       Uval := Uval * Long_Long_Float (Base) ** Int_Scale;
! 
!       --  Here is where we check for a bad based number
!       if Base_Violation then
!          Bad_Value (Str);
! 
!       --  If OK, then deal with initial minus sign, note that this processing
!       --  is done even if Uval is zero, so that -0.0 is correctly interpreted.
!       else
!          if Minus then
!             return -Uval;
!          else
!             return Uval;
!          end if;
!       end if;
  
     end Scan_Real;
  
     ----------------
     -- Value_Real --
     ----------------
  
!    function Value_Real (Str : String) return Long_Long_Float is
!    begin
!       --  We have to special case Str'Last = Positive'Last because the normal
!       --  circuit ends up setting P to Str'Last + 1 which is out of bounds. We
!       --  deal with this by converting to a subtype which fixes the bounds.
! 
!       if Str'Last = Positive'Last then
!          declare
!             subtype NT is String (1 .. Str'Length);
!          begin
!             return Value_Real (NT (Str));
!          end;
  
!       --  Normal case where Str'Last < Positive'Last
  
!       else
!          declare
!             V : Long_Long_Float;
!             P : aliased Integer := Str'First;
!          begin
!             V := Scan_Real (Str, P'Access, Str'Last);
!             Scan_Trailing_Blanks (Str, P);
!             return V;
!          end;
!       end if;
     end Value_Real;
  
  end System.Val_Real;
--- 29,269 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with System.Float_Control;
+ with System.Unsigned_Types; use System.Unsigned_Types;
+ with System.Val_Util;       use System.Val_Util;
+ with System.Value_R;
+ 
+ pragma Warnings (Off, "non-static constant in preelaborated unit");
+ --  Every constant is static given our instantiation model
  
  package body System.Val_Real is
  
!    pragma Assert (Num'Machine_Mantissa <= Uns'Size);
!    --  We need an unsigned type large enough to represent the mantissa
  
!    Need_Extra : constant Boolean := Num'Machine_Mantissa > Uns'Size - 4;
!    --  If the mantissa of the floating-point type is almost as large as the
!    --  unsigned type, we do not have enough space for an extra digit in the
!    --  unsigned type so we handle the extra digit separately, at the cost of
!    --  a potential roundoff error.
  
!    Precision_Limit : constant Uns :=
!      (if Need_Extra then 2**Num'Machine_Mantissa - 1 else 2**Uns'Size - 1);
!    --  If we handle the extra digit separately, we use the precision of the
!    --  floating-point type so that the conversion is exact.
  
!    package Impl is new Value_R (Uns, Precision_Limit, Round => Need_Extra);
  
!    subtype Base_T is Unsigned range 2 .. 16;
  
!    --  The following tables compute the maximum exponent of the base that can
!    --  fit in the given floating-point format, that is to say the element at
!    --  index N is the largest K such that N**K <= Num'Last.
  
!    Maxexp32 : constant array (Base_T) of Positive :=
!      (2  => 127, 3 => 80,  4 => 63,  5 => 55,  6 => 49,
!       7  => 45,  8 => 42,  9 => 40, 10 => 38, 11 => 37,
!       12 => 35, 13 => 34, 14 => 33, 15 => 32, 16 => 31);
  
!    Maxexp64 : constant array (Base_T) of Positive :=
!      (2  => 1023, 3 => 646,  4 => 511,  5 => 441,  6 => 396,
!       7  => 364,  8 => 341,  9 => 323, 10 => 308, 11 => 296,
!       12 => 285, 13 => 276, 14 => 268, 15 => 262, 16 => 255);
  
!    Maxexp80 : constant array (Base_T) of Positive :=
!      (2  => 16383, 3 => 10337, 4 => 8191,  5 => 7056,  6 => 6338,
!       7  => 5836,  8 => 5461,  9 => 5168, 10 => 4932, 11 => 4736,
!       12 => 4570, 13 => 4427, 14 => 4303, 15 => 4193, 16 => 4095);
  
+    function Integer_to_Real
+      (Str   : String;
+       Val   : Uns;
+       Base  : Unsigned;
+       Scale : Integer;
+       Extra : Unsigned;
+       Minus : Boolean) return Num;
+    --  Convert the real value from integer to real representation
+ 
+    ---------------------
+    -- Integer_to_Real --
+    ---------------------
+ 
+    function Integer_to_Real
+      (Str   : String;
+       Val   : Uns;
+       Base  : Unsigned;
+       Scale : Integer;
+       Extra : Unsigned;
+       Minus : Boolean) return Num
     is
!       pragma Assert (Base in 2 .. 16);
  
!       pragma Assert (Num'Machine_Radix = 2);
! 
!       pragma Unsuppress (Range_Check);
! 
!       Maxexp : constant Positive :=
!                  (if    Num'Size = 32             then Maxexp32 (Base)
!                   elsif Num'Size = 64             then Maxexp64 (Base)
!                   elsif Num'Machine_Mantissa = 64 then Maxexp80 (Base)
!                   else  raise Program_Error);
!       --  Maximum exponent of the base that can fit in Num
! 
!       B : constant Num := Num (Base);
! 
!       R_Val : Num;
!       S     : Integer := Scale;
  
     begin
+       --  We call the floating-point processor reset routine so we can be sure
+       --  that the x87 FPU is properly set for conversions. This is especially
+       --  needed on Windows, where calls to the operating system randomly reset
+       --  the processor into 64-bit mode.
  
!       if Num'Machine_Mantissa = 64 then
!          System.Float_Control.Reset;
        end if;
  
!       --  Do the conversion
  
!       R_Val := Num (Val);
  
!       --  Take into account the extra digit, if need be. In this case, the
!       --  three operands are exact, so using an FMA would be ideal.
  
!       if Need_Extra and then Extra > 0 then
!          R_Val := R_Val * B + Num (Extra);
!          S := S - 1;
!       end if;
  
!       --  Compute the final value
  
!       if R_Val /= 0.0 and then S /= 0 then
!          case Base is
!             --  If the base is a power of two, we use the efficient Scaling
!             --  attribute with an overflow check, if it is not 2, to catch
!             --  ludicrous exponents that would result in an infinity or zero.
! 
!             when 2 =>
!                R_Val := Num'Scaling (R_Val, S);
! 
!             when 4 =>
!                if Integer'First / 2 <= S and then S <= Integer'Last / 2 then
!                   S := S * 2;
                 end if;
  
!                R_Val := Num'Scaling (R_Val, S);
  
!             when 8 =>
!                if Integer'First / 3 <= S and then S <= Integer'Last / 3 then
!                   S := S * 3;
!                end if;
  
!                R_Val := Num'Scaling (R_Val, S);
  
!             when 16 =>
!                if Integer'First / 4 <= S and then S <= Integer'Last / 4 then
!                   S := S * 4;
                 end if;
  
!                R_Val := Num'Scaling (R_Val, S);
  
!             --  If the base is 10, we use a table of powers for accuracy's sake
  
!             when 10 =>
!                declare
!                   Powten : constant array (0 .. Maxpow) of Num;
!                   pragma Import (Ada, Powten);
!                   for Powten'Address use Powten_Address;
  
!                begin
!                   if S > 0 then
!                      while S > Maxpow loop
!                         R_Val := R_Val * Powten (Maxpow);
!                         S := S - Maxpow;
!                      end loop;
  
!                      R_Val := R_Val * Powten (S);
  
!                   else
!                      while S < -Maxpow loop
!                         R_Val := R_Val / Powten (Maxpow);
!                         S := S + Maxpow;
!                      end loop;
  
!                      R_Val := R_Val / Powten (-S);
!                   end if;
!                end;
  
!             --  Implementation for other bases with exponentiation
  
!             --  When the exponent is positive, we can do the computation
!             --  directly because, if the exponentiation overflows, then
!             --  the final value overflows as well. But when the exponent
!             --  is negative, we may need to do it in two steps to avoid
!             --  an artificial underflow.
  
!             when others =>
!                if S > 0 then
!                   R_Val := R_Val * B ** S;
  
                 else
!                   if S < -Maxexp then
!                      R_Val := R_Val / B ** Maxexp;
!                      S := S + Maxexp;
!                   end if;
! 
!                   R_Val := R_Val / B ** (-S);
                 end if;
!          end case;
!       end if;
  
!       --  Finally deal with initial minus sign, note that this processing is
!       --  done even if Uval is zero, so that -0.0 is correctly interpreted.
! 
!       return (if Minus then -R_Val else R_Val);
! 
!    exception
!       when Constraint_Error => Bad_Value (Str);
!    end Integer_to_Real;
  
     ---------------
     -- Scan_Real --
     ---------------
  
     function Scan_Real
!      (Str : String;
!       Ptr : not null access Integer;
!       Max : Integer) return Num
     is
!       Base  : Unsigned;
!       Scale : Integer;
!       Extra : Unsigned;
        Minus : Boolean;
!       Val   : Uns;
  
     begin
!       Val := Impl.Scan_Raw_Real (Str, Ptr, Max, Base, Scale, Extra, Minus);
  
+       return Integer_to_Real (Str, Val, Base, Scale, Extra, Minus);
     end Scan_Real;
  
     ----------------
     -- Value_Real --
     ----------------
  
!    function Value_Real (Str : String) return Num is
!       Base  : Unsigned;
!       Scale : Integer;
!       Extra : Unsigned;
!       Minus : Boolean;
!       Val   : Uns;
  
!    begin
!       Val := Impl.Value_Raw_Real (Str, Base, Scale, Extra, Minus);
  
!       return Integer_to_Real (Str, Val, Base, Scale, Extra, Minus);
     end Value_Real;
  
  end System.Val_Real;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valrea.ads gcc-11.1.0/gcc/ada/libgnat/s-valrea.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valrea.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valrea.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,41 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
  package System.Val_Real is
     pragma Preelaborate;
  
     function Scan_Real
       (Str : String;
        Ptr : not null access Integer;
!       Max : Integer) return Long_Long_Float;
     --  This function scans the string starting at Str (Ptr.all) for a valid
     --  real literal according to the syntax described in (RM 3.5(43)). The
     --  substring scanned extends no further than Str (Max). There are three
--- 29,54 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ --  This package contains routines for scanning real values for use in
+ --  Text_IO.Float_IO and the Value attribute.
+ 
+ generic
+ 
+    type Num is digits <>;
+ 
+    type Uns is mod <>;
+ 
+    Maxpow : Positive;
+ 
+    Powten_Address : System.Address;
+ 
  package System.Val_Real is
     pragma Preelaborate;
  
     function Scan_Real
       (Str : String;
        Ptr : not null access Integer;
!       Max : Integer) return Num;
     --  This function scans the string starting at Str (Ptr.all) for a valid
     --  real literal according to the syntax described in (RM 3.5(43)). The
     --  substring scanned extends no further than Str (Max). There are three
*************** package System.Val_Real is
*** 65,74 ****
     --  If this occurs Program_Error is raised with a message noting that this
     --  case is not supported. Most such cases are eliminated by the caller.
  
!    function Value_Real (Str : String) return Long_Long_Float;
     --  Used in computing X'Value (Str) where X is a floating-point type or an
     --  ordinary fixed-point type. Str is the string argument of the attribute.
     --  Constraint_Error is raised if the string is malformed, or if the value
!    --  out of range of Long_Long_Float.
  
  end System.Val_Real;
--- 78,87 ----
     --  If this occurs Program_Error is raised with a message noting that this
     --  case is not supported. Most such cases are eliminated by the caller.
  
!    function Value_Real (Str : String) return Num;
     --  Used in computing X'Value (Str) where X is a floating-point type or an
     --  ordinary fixed-point type. Str is the string argument of the attribute.
     --  Constraint_Error is raised if the string is malformed, or if the value
!    --  out of range of Num.
  
  end System.Val_Real;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valued.adb gcc-11.1.0/gcc/ada/libgnat/s-valued.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-valued.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-valued.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,263 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . V A L U E _ D                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Unsigned_Types; use System.Unsigned_Types;
+ with System.Val_Util;       use System.Val_Util;
+ with System.Value_R;
+ 
+ package body System.Value_D is
+ 
+    pragma Assert (Int'Size <= Uns'Size);
+    --  We need an unsigned type large enough to represent the mantissa
+ 
+    package Impl is new Value_R (Uns, 2**(Int'Size - 1), Round => False);
+    --  We do not use the Extra digit for decimal fixed-point types
+ 
+    function Integer_to_Decimal
+      (Str    : String;
+       Val    : Uns;
+       Base   : Unsigned;
+       ScaleB : Integer;
+       Minus  : Boolean;
+       Scale  : Integer) return Int;
+    --  Convert the real value from integer to decimal representation
+ 
+    ------------------------
+    -- Integer_to_Decimal --
+    ------------------------
+ 
+    function Integer_to_Decimal
+      (Str    : String;
+       Val    : Uns;
+       Base   : Unsigned;
+       ScaleB : Integer;
+       Minus  : Boolean;
+       Scale  : Integer) return Int
+    is
+       function Safe_Expont
+         (Base   : Int;
+          Exp    : in out Natural;
+          Factor : Int) return Int;
+       --  Return (Base ** Exp) * Factor if the computation does not overflow,
+       --  or else the number of the form (Base ** K) * Factor with the largest
+       --  magnitude if the former computation overflows. In both cases, Exp is
+       --  updated to contain the remaining power in the computation. Note that
+       --  Factor is expected to be positive in this context.
+ 
+       function Unsigned_To_Signed (Val : Uns) return Int;
+       --  Convert an integer value from unsigned to signed representation
+ 
+       -----------------
+       -- Safe_Expont --
+       -----------------
+ 
+       function Safe_Expont
+         (Base   : Int;
+          Exp    : in out Natural;
+          Factor : Int) return Int
+       is
+          pragma Assert (Base /= 0 and then Factor > 0);
+ 
+          Max : constant Int := Int'Last / Base;
+ 
+          Result : Int := Factor;
+ 
+       begin
+          while Exp > 0 and then Result <= Max loop
+             Result := Result * Base;
+             Exp    := Exp - 1;
+          end loop;
+ 
+          return Result;
+       end Safe_Expont;
+ 
+       ------------------------
+       -- Unsigned_To_Signed --
+       ------------------------
+ 
+       function Unsigned_To_Signed (Val : Uns) return Int is
+       begin
+          --  Deal with overflow cases, and also with largest negative number
+ 
+          if Val > Uns (Int'Last) then
+             if Minus and then Val = Uns (-(Int'First)) then
+                return Int'First;
+             else
+                Bad_Value (Str);
+             end if;
+ 
+          --  Negative values
+ 
+          elsif Minus then
+             return -(Int (Val));
+ 
+          --  Positive values
+ 
+          else
+             return Int (Val);
+          end if;
+       end Unsigned_To_Signed;
+ 
+    begin
+       --  If the base of the value is 10 or its scaling factor is zero, then
+       --  add the scales (they are defined in the opposite sense) and apply
+       --  the result to the value, checking for overflow in the process.
+ 
+       if Base = 10 or else ScaleB = 0 then
+          declare
+             S : Integer := ScaleB + Scale;
+             V : Uns     := Val;
+ 
+          begin
+             while S < 0 loop
+                V := V / 10;
+                S := S + 1;
+             end loop;
+ 
+             while S > 0 loop
+                if V <= Uns'Last / 10 then
+                   V := V * 10;
+                   S := S - 1;
+                else
+                   Bad_Value (Str);
+                end if;
+             end loop;
+ 
+             return Unsigned_To_Signed (V);
+          end;
+ 
+       --  If the base of the value is not 10, use a scaled divide operation
+       --  to compute Val * (Base ** ScaleB) * (10 ** Scale).
+ 
+       else
+          declare
+             B : constant Int     := Int (Base);
+             S : constant Integer := ScaleB;
+ 
+             V : Uns := Val;
+ 
+             Y, Z, Q, R : Int;
+ 
+          begin
+             --  If S is too negative, then drop trailing digits
+ 
+             if S < 0 then
+                declare
+                   LS : Integer := -S;
+ 
+                begin
+                   Y := 10 ** Integer'Max (0, Scale);
+                   Z := Safe_Expont (B, LS, 10 ** Integer'Max (0, -Scale));
+ 
+                   for J in 1 .. LS loop
+                      V := V / Uns (B);
+                   end loop;
+                end;
+ 
+             --  If S is too positive, then scale V up, which may then overflow
+ 
+             elsif S > 0 then
+                declare
+                   LS  : Integer := S;
+ 
+                begin
+                   Y := Safe_Expont (B, LS, 10 ** Integer'Max (0, Scale));
+                   Z := 10 ** Integer'Max (0, -Scale);
+ 
+                   for J in 1 .. LS loop
+                      if V <= Uns'Last / Uns (B) then
+                         V := V * Uns (B);
+                      else
+                         Bad_Value (Str);
+                      end if;
+                   end loop;
+                end;
+ 
+             --  The case S equal to zero should have been handled earlier
+ 
+             else
+                raise Program_Error;
+             end if;
+ 
+             --  Perform a scale divide operation with rounding to match 'Image
+ 
+             Scaled_Divide (Unsigned_To_Signed (V), Y, Z, Q, R, Round => True);
+ 
+             return Q;
+          end;
+       end if;
+ 
+    exception
+       when Constraint_Error => Bad_Value (Str);
+    end Integer_to_Decimal;
+ 
+    ------------------
+    -- Scan_Decimal --
+    ------------------
+ 
+    function Scan_Decimal
+      (Str   : String;
+       Ptr   : not null access Integer;
+       Max   : Integer;
+       Scale : Integer) return Int
+    is
+       Base   : Unsigned;
+       ScaleB : Integer;
+       Extra  : Unsigned;
+       pragma Unreferenced (Extra);
+       Minus  : Boolean;
+       Val    : Uns;
+ 
+    begin
+       Val := Impl.Scan_Raw_Real (Str, Ptr, Max, Base, ScaleB, Extra, Minus);
+ 
+       return Integer_to_Decimal (Str, Val, Base, ScaleB, Minus, Scale);
+    end Scan_Decimal;
+ 
+    -------------------
+    -- Value_Decimal --
+    -------------------
+ 
+    function Value_Decimal (Str : String; Scale : Integer) return Int is
+       Base   : Unsigned;
+       ScaleB : Integer;
+       Extra  : Unsigned;
+       pragma Unreferenced (Extra);
+       Minus  : Boolean;
+       Val    : Uns;
+ 
+    begin
+       Val := Impl.Value_Raw_Real (Str, Base, ScaleB, Extra, Minus);
+ 
+       return Integer_to_Decimal (Str, Val, Base, ScaleB, Minus, Scale);
+    end Value_Decimal;
+ 
+ end System.Value_D;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valued.ads gcc-11.1.0/gcc/ada/libgnat/s-valued.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valued.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-valued.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,90 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . V A L U E _ D                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routines for supporting the Value attribute for
+ --  decimal fixed point types, and also for conversion operations required in
+ --  Text_IO.Decimal_IO for such types.
+ 
+ generic
+ 
+    type Int is range <>;
+ 
+    type Uns is mod <>;
+ 
+    with procedure Scaled_Divide
+           (X, Y, Z : Int;
+            Q, R : out Int;
+            Round : Boolean);
+ 
+ package System.Value_D is
+    pragma Preelaborate;
+ 
+    function Scan_Decimal
+      (Str   : String;
+       Ptr   : not null access Integer;
+       Max   : Integer;
+       Scale : Integer) return Int;
+    --  This function scans the string starting at Str (Ptr.all) for a valid
+    --  real literal according to the syntax described in (RM 3.5(43)). The
+    --  substring scanned extends no further than Str (Max). There are three
+    --  cases for the return:
+    --
+    --  If a valid real literal is found after scanning past any initial spaces,
+    --  then Ptr.all is updated past the last character of the literal (but
+    --  trailing spaces are not scanned out). The value returned is the value
+    --  Int'Integer_Value (decimal-literal-value), using the given Scale to
+    --  determine this value.
+    --
+    --  If no valid real literal is found, then Ptr.all points either to an
+    --  initial non-digit character, or to Max + 1 if the field is all spaces
+    --  and the exception Constraint_Error is raised.
+    --
+    --  If a syntactically valid integer is scanned, but the value is out of
+    --  range, or, in the based case, the base value is out of range or there
+    --  is an out of range digit, then Ptr.all points past the integer, and
+    --  Constraint_Error is raised.
+    --
+    --  Note: these rules correspond to the requirements for leaving the
+    --  pointer positioned in Text_Io.Get
+    --
+    --  Note: if Str is null, i.e. if Max is less than Ptr, then this is a
+    --  special case of an all-blank string, and Ptr is unchanged, and hence
+    --  is greater than Max as required in this case.
+ 
+    function Value_Decimal (Str : String; Scale : Integer) return Int;
+    --  Used in computing X'Value (Str) where X is a decimal fixed-point type.
+    --  Str is the string argument of the attribute. Constraint_Error is raised
+    --  if the string is malformed or if the value is out of range of Int (not
+    --  the range of the fixed-point type, which must be done by the caller).
+    --  Otherwise the value returned is the value Int'Integer_Value
+    --  (decimal-literal-value), using Scale to determine this value.
+ 
+ end System.Value_D;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valuef.adb gcc-11.1.0/gcc/ada/libgnat/s-valuef.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-valuef.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-valuef.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,368 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . V A L U E _ F                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Unsigned_Types; use System.Unsigned_Types;
+ with System.Val_Util;       use System.Val_Util;
+ with System.Value_R;
+ 
+ package body System.Value_F is
+ 
+    --  The prerequisite of the implementation is that the computation of the
+    --  operands of the scaled divide does not unduly overflow when the small
+    --  is neither an integer nor the reciprocal of an integer, which means
+    --  that its numerator and denominator must be both not larger than the
+    --  smallest divide 2**(Int'Size - 1) / Base where Base ranges over the
+    --  supported values for the base of the literal. Given that the largest
+    --  supported base is 16, this gives a limit of 2**(Int'Size - 5).
+ 
+    pragma Assert (Int'Size <= Uns'Size);
+    --  We need an unsigned type large enough to represent the mantissa
+ 
+    package Impl is new Value_R (Uns, 2**(Int'Size - 1), Round => True);
+    --  We use the Extra digit for ordinary fixed-point types
+ 
+    function Integer_To_Fixed
+      (Str    : String;
+       Val    : Uns;
+       Base   : Unsigned;
+       ScaleB : Integer;
+       Extra  : Unsigned;
+       Minus  : Boolean;
+       Num    : Int;
+       Den    : Int) return Int;
+    --  Convert the real value from integer to fixed point representation
+ 
+    --  The goal is to compute Val * (Base ** ScaleB) / (Num / Den) with correct
+    --  rounding for all decimal values output by Typ'Image, that is to say up
+    --  to Typ'Aft decimal digits. Unlike for the output, the RM does not say
+    --  what the rounding must be for the input, but a reasonable exegesis of
+    --  the intent is that Typ'Value o Typ'Image should be the identity, which
+    --  is made possible because 'Aft is defined such that 'Image is injective.
+ 
+    --  For a type with a mantissa of M bits including the sign, the number N1
+    --  of decimal digits required to represent all the numbers is given by:
+ 
+    --    N1 = ceil ((M - 1) * log 2 / log 10) [N1 = 10/19/39 for M = 32/64/128]
+ 
+    --  but this mantissa can represent any set of contiguous numbers with only
+    --  N2 different decimal digits where:
+ 
+    --    N2 = floor ((M - 1) * log 2 / log 10) [N2 = 9/18/38 for M = 32/64/128]
+ 
+    --  Of course N1 = N2 + 1 holds, which means both that Val may not contain
+    --  enough significant bits to represent all the values of the type and that
+    --  1 extra decimal digit contains the information for the missing bits.
+ 
+    --  Therefore the actual computation to be performed is
+ 
+    --    V = (Val * Base + Extra) * (Base ** (ScaleB - 1)) / (Num / Den)
+ 
+    --  using two steps of scaled divide if Extra is positive and ScaleB too
+ 
+    --    (1)  Val * (Den * (Base ** ScaleB)) = Q1 * Num + R1
+ 
+    --    (2)  Extra * (Den * (Base ** ScaleB)) = Q2 * -Base + R2
+ 
+    --  which yields after dividing (1) by Num and (2) by Num * Base and summing
+ 
+    --    V = Q1 + (R1 - Q2) / Num + R2 / (Num * Base)
+ 
+    --  but we get rid of the third term by using a rounding divide for (2).
+ 
+    --  This works only if Den * (Base ** ScaleB) does not overflow for inputs
+    --  corresponding to 'Image. Let S = Num / Den, B = Base and N the scale in
+    --  base B of S, i.e. the smallest integer such that B**N * S >= 1. Then,
+    --  for X a positive of the mantissa, i.e. 1 <= X <= 2**(M-1), we have
+ 
+    --    1/B <= X * S * B**(N-1) < 2**(M-1)
+ 
+    --  which means that the inputs corresponding to the output of 'Image have a
+    --  ScaleB equal either to 1 - N or (after multiplying the inequality by B)
+    --  to -N, possibly after renormalizing X, i.e. multiplying it by a suitable
+    --  power of B. Therefore
+ 
+    --    Den * (Base ** ScaleB) <= Den * (B ** (1 - N)) < Num * B
+ 
+    --  which means that the product does not overflow if Num <= 2**(M-1) / B.
+ 
+    --  On the other hand, if Extra is positive and ScaleB negative, the above
+    --  two steps are
+ 
+    --   (1b)  Val * Den = Q1 * (Num * (Base ** -ScaleB)) + R1
+ 
+    --   (2b)  Extra * Den = Q2 * -Base + R2
+ 
+    --  which yields after dividing (1b) by Num * (Base ** -ScaleB) and (2b) by
+    --  Num * (Base ** (1 - ScaleB)) and summing
+ 
+    --    V = Q1 + (R1 - Q2) / (Num * (Base ** -ScaleB)) + R2 / ...
+ 
+    --  but we get rid of the third term by using a rounding divide for (2b).
+ 
+    --  This works only if Num * (Base ** -ScaleB) does not overflow for inputs
+    --  corresponding to 'Image. With the determination of ScaleB above, we have
+ 
+    --    Num * (Base ** -ScaleB) <= Num * (B ** N) < Den * B
+ 
+    --  which means that the product does not overflow if Den <= 2**(M-1) / B.
+ 
+    ----------------------
+    -- Integer_To_Fixed --
+    ----------------------
+ 
+    function Integer_To_Fixed
+      (Str    : String;
+       Val    : Uns;
+       Base   : Unsigned;
+       ScaleB : Integer;
+       Extra  : Unsigned;
+       Minus  : Boolean;
+       Num    : Int;
+       Den    : Int) return Int
+    is
+       pragma Assert (Base in 2 .. 16);
+ 
+       pragma Assert (Extra < Base);
+       --  Accept only one extra digit after those used for Val
+ 
+       pragma Assert (Num < 0 and then Den < 0);
+       --  Accept only negative numbers to allow -2**(Int'Size - 1)
+ 
+       function Safe_Expont
+         (Base   : Int;
+          Exp    : in out Natural;
+          Factor : Int) return Int;
+       --  Return (Base ** Exp) * Factor if the computation does not overflow,
+       --  or else the number of the form (Base ** K) * Factor with the largest
+       --  magnitude if the former computation overflows. In both cases, Exp is
+       --  updated to contain the remaining power in the computation. Note that
+       --  Factor is expected to be negative in this context.
+ 
+       function Unsigned_To_Signed (Val : Uns) return Int;
+       --  Convert an integer value from unsigned to signed representation
+ 
+       -----------------
+       -- Safe_Expont --
+       -----------------
+ 
+       function Safe_Expont
+         (Base   : Int;
+          Exp    : in out Natural;
+          Factor : Int) return Int
+       is
+          pragma Assert (Base /= 0 and then Factor < 0);
+ 
+          Min : constant Int := Int'First / Base;
+ 
+          Result : Int := Factor;
+ 
+       begin
+          while Exp > 0 and then Result >= Min loop
+             Result := Result * Base;
+             Exp    := Exp - 1;
+          end loop;
+ 
+          return Result;
+       end Safe_Expont;
+ 
+       ------------------------
+       -- Unsigned_To_Signed --
+       ------------------------
+ 
+       function Unsigned_To_Signed (Val : Uns) return Int is
+       begin
+          --  Deal with overflow cases, and also with largest negative number
+ 
+          if Val > Uns (Int'Last) then
+             if Minus and then Val = Uns (-(Int'First)) then
+                return Int'First;
+             else
+                Bad_Value (Str);
+             end if;
+ 
+          --  Negative values
+ 
+          elsif Minus then
+             return -(Int (Val));
+ 
+          --  Positive values
+ 
+          else
+             return Int (Val);
+          end if;
+       end Unsigned_To_Signed;
+ 
+       --  Local variables
+ 
+       B : constant Int := Int (Base);
+ 
+       V : Uns := Val;
+       E : Uns := Uns (Extra);
+ 
+       Y, Z, Q1, R1, Q2, R2 : Int;
+ 
+    begin
+       --  We will use a scaled divide operation for which we must control the
+       --  magnitude of operands so that an overflow exception is not unduly
+       --  raised during the computation. The only real concern is the exponent.
+ 
+       --  If ScaleB is too negative, then drop trailing digits, but preserve
+       --  the last dropped digit.
+ 
+       if ScaleB < 0 then
+          declare
+             LS : Integer := -ScaleB;
+ 
+          begin
+             Y := Den;
+             Z := Safe_Expont (B, LS, Num);
+ 
+             for J in 1 .. LS loop
+                E := V rem Uns (B);
+                V := V / Uns (B);
+             end loop;
+          end;
+ 
+       --  If ScaleB is too positive, then scale V up, which may then overflow
+ 
+       elsif ScaleB > 0 then
+          declare
+             LS  : Integer := ScaleB;
+ 
+          begin
+             Y := Safe_Expont (B, LS, Den);
+             Z := Num;
+ 
+             for J in 1 .. LS loop
+                if V <= (Uns'Last - E) / Uns (B) then
+                   V := V * Uns (B) + E;
+                   E := 0;
+                else
+                   Bad_Value (Str);
+                end if;
+             end loop;
+          end;
+ 
+       --  If ScaleB is zero, then proceed directly
+ 
+       else
+          Y := Den;
+          Z := Num;
+       end if;
+ 
+       --  Perform a scaled divide operation with final rounding to match Image
+       --  using two steps if there is an extra digit available. The second and
+       --  third operands are always negative so the sign of the quotient is the
+       --  sign of the first operand and the sign of the remainder the opposite.
+ 
+       if E > 0 then
+          Scaled_Divide (Unsigned_To_Signed (V), Y, Z, Q1, R1, Round => False);
+          Scaled_Divide (Unsigned_To_Signed (E), Y, -B, Q2, R2, Round => True);
+ 
+          --  Avoid an overflow during the subtraction. Note that Q2 is smaller
+          --  than Y and R1 smaller than Z in magnitude, so it is safe to take
+          --  their absolute value.
+ 
+          if abs Q2 >= 2 ** (Int'Size - 2)
+            or else abs R1 >= 2 ** (Int'Size - 2)
+          then
+             declare
+                Bit : constant Int := Q2 rem 2;
+ 
+             begin
+                Q2 := (Q2 - Bit) / 2;
+                R1 := (R1 - Bit) / 2;
+                Y  := -2;
+             end;
+ 
+          else
+             Y := -1;
+          end if;
+ 
+          Scaled_Divide (Q2 - R1, Y, Z, Q2, R2, Round => True);
+ 
+          return Q1 + Q2;
+ 
+       else
+          Scaled_Divide (Unsigned_To_Signed (V), Y, Z, Q1, R1, Round => True);
+ 
+          return Q1;
+       end if;
+ 
+    exception
+       when Constraint_Error => Bad_Value (Str);
+    end Integer_To_Fixed;
+ 
+    ----------------
+    -- Scan_Fixed --
+    ----------------
+ 
+    function Scan_Fixed
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer;
+       Num : Int;
+       Den : Int) return Int
+    is
+       Base   : Unsigned;
+       ScaleB : Integer;
+       Extra  : Unsigned;
+       Minus  : Boolean;
+       Val    : Uns;
+ 
+    begin
+       Val := Impl.Scan_Raw_Real (Str, Ptr, Max, Base, ScaleB, Extra, Minus);
+ 
+       return Integer_To_Fixed (Str, Val, Base, ScaleB, Extra, Minus, Num, Den);
+    end Scan_Fixed;
+ 
+    -----------------
+    -- Value_Fixed --
+    -----------------
+ 
+    function Value_Fixed
+      (Str : String;
+       Num : Int;
+       Den : Int) return Int
+    is
+       Base   : Unsigned;
+       ScaleB : Integer;
+       Extra  : Unsigned;
+       Minus  : Boolean;
+       Val    : Uns;
+ 
+    begin
+       Val := Impl.Value_Raw_Real (Str, Base, ScaleB, Extra, Minus);
+ 
+       return Integer_To_Fixed (Str, Val, Base, ScaleB, Extra, Minus, Num, Den);
+    end Value_Fixed;
+ 
+ end System.Value_F;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valuef.ads gcc-11.1.0/gcc/ada/libgnat/s-valuef.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valuef.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-valuef.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,94 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . V A L U E _ F                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the routines for supporting the Value attribute for
+ --  ordinary fixed point types whose Small is the ratio of two Int values, and
+ --  also for conversion operations required in Text_IO.Fixed_IO for such types.
+ 
+ generic
+ 
+    type Int is range <>;
+ 
+    type Uns is mod <>;
+ 
+    with procedure Scaled_Divide
+           (X, Y, Z : Int;
+            Q, R : out Int;
+            Round : Boolean);
+ 
+ package System.Value_F is
+    pragma Preelaborate;
+ 
+    function Scan_Fixed
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer;
+       Num : Int;
+       Den : Int) return Int;
+    --  This function scans the string starting at Str (Ptr.all) for a valid
+    --  real literal according to the syntax described in (RM 3.5(43)). The
+    --  substring scanned extends no further than Str (Max). There are three
+    --  cases for the return:
+    --
+    --  If a valid real literal is found after scanning past any initial spaces,
+    --  then Ptr.all is updated past the last character of the literal (but
+    --  trailing spaces are not scanned out). The value returned is the value
+    --  Int'Integer_Value (decimal-literal-value), using the given Num/Den to
+    --  determine this value.
+    --
+    --  If no valid real literal is found, then Ptr.all points either to an
+    --  initial non-digit character, or to Max + 1 if the field is all spaces
+    --  and the exception Constraint_Error is raised.
+    --
+    --  If a syntactically valid integer is scanned, but the value is out of
+    --  range, or, in the based case, the base value is out of range or there
+    --  is an out of range digit, then Ptr.all points past the integer, and
+    --  Constraint_Error is raised.
+    --
+    --  Note: these rules correspond to the requirements for leaving the
+    --  pointer positioned in Text_Io.Get
+    --
+    --  Note: if Str is null, i.e. if Max is less than Ptr, then this is a
+    --  special case of an all-blank string, and Ptr is unchanged, and hence
+    --  is greater than Max as required in this case.
+ 
+    function Value_Fixed
+      (Str : String;
+       Num : Int;
+       Den : Int) return Int;
+    --  Used in computing X'Value (Str) where X is an ordinary fixed-point type.
+    --  Str is the string argument of the attribute. Constraint_Error is raised
+    --  if the string is malformed or if the value is out of range of Int (not
+    --  the range of the fixed-point type, which must be done by the caller).
+    --  Otherwise the value returned is the value Int'Integer_Value
+    --  (decimal-literal-value), using Small Num/Den to determine this value.
+ 
+ end System.Value_F;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valuei.adb gcc-11.1.0/gcc/ada/libgnat/s-valuei.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-valuei.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-valuei.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,116 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . V A L U E _ I                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Val_Util; use System.Val_Util;
+ 
+ package body System.Value_I is
+ 
+    ------------------
+    -- Scan_Integer --
+    ------------------
+ 
+    function Scan_Integer
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer) return Int
+    is
+       Uval : Uns;
+       --  Unsigned result
+ 
+       Minus : Boolean := False;
+       --  Set to True if minus sign is present, otherwise to False
+ 
+       Start : Positive;
+       --  Saves location of first non-blank (not used in this case)
+ 
+    begin
+       Scan_Sign (Str, Ptr, Max, Minus, Start);
+ 
+       if Str (Ptr.all) not in '0' .. '9' then
+          Ptr.all := Start;
+          Bad_Value (Str);
+       end if;
+ 
+       Uval := Scan_Raw_Unsigned (Str, Ptr, Max);
+ 
+       --  Deal with overflow cases, and also with largest negative number
+ 
+       if Uval > Uns (Int'Last) then
+          if Minus and then Uval = Uns (-(Int'First)) then
+             return Int'First;
+          else
+             Bad_Value (Str);
+          end if;
+ 
+       --  Negative values
+ 
+       elsif Minus then
+          return -(Int (Uval));
+ 
+       --  Positive values
+ 
+       else
+          return Int (Uval);
+       end if;
+    end Scan_Integer;
+ 
+    -------------------
+    -- Value_Integer --
+    -------------------
+ 
+    function Value_Integer (Str : String) return Int is
+    begin
+       --  We have to special case Str'Last = Positive'Last because the normal
+       --  circuit ends up setting P to Str'Last + 1 which is out of bounds. We
+       --  deal with this by converting to a subtype which fixes the bounds.
+ 
+       if Str'Last = Positive'Last then
+          declare
+             subtype NT is String (1 .. Str'Length);
+          begin
+             return Value_Integer (NT (Str));
+          end;
+ 
+       --  Normal case where Str'Last < Positive'Last
+ 
+       else
+          declare
+             V : Int;
+             P : aliased Integer := Str'First;
+          begin
+             V := Scan_Integer (Str, P'Access, Str'Last);
+             Scan_Trailing_Blanks (Str, P);
+             return V;
+          end;
+       end if;
+    end Value_Integer;
+ 
+ end System.Value_I;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valuei.ads gcc-11.1.0/gcc/ada/libgnat/s-valuei.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valuei.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-valuei.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,84 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . V A L U E _ I                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains routines for scanning signed integer values for use
+ --  in Text_IO.Integer_IO, and the Value attribute.
+ 
+ generic
+ 
+    type Int is range <>;
+ 
+    type Uns is mod <>;
+ 
+    with function Scan_Raw_Unsigned
+           (Str : String;
+            Ptr : not null access Integer;
+            Max : Integer) return Uns;
+ 
+ package System.Value_I is
+    pragma Preelaborate;
+ 
+    function Scan_Integer
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer) return Int;
+    --  This function scans the string starting at Str (Ptr.all) for a valid
+    --  integer according to the syntax described in (RM 3.5(43)). The substring
+    --  scanned extends no further than Str (Max). There are three cases for the
+    --  return:
+    --
+    --  If a valid integer is found after scanning past any initial spaces, then
+    --  Ptr.all is updated past the last character of the integer (but trailing
+    --  spaces are not scanned out).
+    --
+    --  If no valid integer is found, then Ptr.all points either to an initial
+    --  non-digit character, or to Max + 1 if the field is all spaces and the
+    --  exception Constraint_Error is raised.
+    --
+    --  If a syntactically valid integer is scanned, but the value is out of
+    --  range, or, in the based case, the base value is out of range or there
+    --  is an out of range digit, then Ptr.all points past the integer, and
+    --  Constraint_Error is raised.
+    --
+    --  Note: these rules correspond to the requirements for leaving the pointer
+    --  positioned in Text_Io.Get
+    --
+    --  Note: if Str is null, i.e. if Max is less than Ptr, then this is a
+    --  special case of an all-blank string, and Ptr is unchanged, and hence
+    --  is greater than Max as required in this case.
+ 
+    function Value_Integer (Str : String) return Int;
+    --  Used in computing X'Value (Str) where X is a signed integer type whose
+    --  base range does not exceed the base range of Integer. Str is the string
+    --  argument of the attribute. Constraint_Error is raised if the string is
+    --  malformed, or if the value is out of range.
+ 
+ end System.Value_I;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valuer.adb gcc-11.1.0/gcc/ada/libgnat/s-valuer.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-valuer.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-valuer.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,685 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                      S Y S T E M . V A L U E _ R                         --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Val_Util; use System.Val_Util;
+ 
+ package body System.Value_R is
+ 
+    subtype Char_As_Digit is Unsigned range 0 .. 17;
+    subtype Valid_Digit is Char_As_Digit range 0 .. 15;
+    E_Digit     : constant Char_As_Digit := 14;
+    Underscore  : constant Char_As_Digit := 16;
+    Not_A_Digit : constant Char_As_Digit := 17;
+ 
+    function As_Digit (C : Character) return Char_As_Digit;
+    --  Given a character return the digit it represents
+ 
+    procedure Round_Extra
+      (Digit : Char_As_Digit;
+       Value : in out Uns;
+       Scale : in out Integer;
+       Extra : in out Char_As_Digit;
+       Base  : Unsigned);
+    --  Round the triplet (Value, Scale, Extra) according to Digit in Base
+ 
+    procedure Scan_Decimal_Digits
+       (Str            : String;
+        Index          : in out Integer;
+        Max            : Integer;
+        Value          : in out Uns;
+        Scale          : in out Integer;
+        Extra          : in out Char_As_Digit;
+        Base_Violation : in out Boolean;
+        Base           : Unsigned;
+        Base_Specified : Boolean);
+    --  Scan the decimal part of a real (i.e. after decimal separator)
+    --
+    --  The string parsed is Str (Index .. Max) and after the call Index will
+    --  point to the first non-parsed character.
+    --
+    --  For each digit parsed, Value = Value * Base + Digit and Scale is
+    --  decremented by 1. If precision limit is reached, remaining digits are
+    --  still parsed but ignored, except for the first which is stored in Extra.
+    --
+    --  Base_Violation is set to True if a digit found is not part of the Base
+    --
+    --  If Base_Specified is set, then the base was specified in the real
+ 
+    procedure Scan_Integral_Digits
+       (Str            : String;
+        Index          : in out Integer;
+        Max            : Integer;
+        Value          : out Uns;
+        Scale          : out Integer;
+        Extra          : out Char_As_Digit;
+        Base_Violation : in out Boolean;
+        Base           : Unsigned;
+        Base_Specified : Boolean);
+    --  Scan the integral part of a real (i.e. before decimal separator)
+    --
+    --  The string parsed is Str (Index .. Max) and after the call Index will
+    --  point to the first non-parsed character.
+    --
+    --  For each digit parsed, either Value := Value * Base + Digit or Scale
+    --  is incremented by 1 if precision limit is reached, in which case the
+    --  remaining digits are still parsed but ignored, except for the first
+    --  which is stored in Extra.
+    --
+    --  Base_Violation is set to True if a digit found is not part of the Base
+    --
+    --  If Base_Specified is set, then the base was specified in the real
+ 
+    --------------
+    -- As_Digit --
+    --------------
+ 
+    function As_Digit (C : Character) return Char_As_Digit is
+    begin
+       case C is
+          when '0' .. '9' =>
+             return Character'Pos (C) - Character'Pos ('0');
+          when 'a' .. 'f' =>
+             return Character'Pos (C) - (Character'Pos ('a') - 10);
+          when 'A' .. 'F' =>
+             return Character'Pos (C) - (Character'Pos ('A') - 10);
+          when '_' =>
+             return Underscore;
+          when others =>
+             return Not_A_Digit;
+       end case;
+    end As_Digit;
+ 
+    -----------------
+    -- Round_Extra --
+    -----------------
+ 
+    procedure Round_Extra
+      (Digit : Char_As_Digit;
+       Value : in out Uns;
+       Scale : in out Integer;
+       Extra : in out Char_As_Digit;
+       Base  : Unsigned)
+    is
+       B : constant Uns := Uns (Base);
+ 
+    begin
+       if Digit >= Base / 2 then
+ 
+          --  If Extra is maximum, round Value
+ 
+          if Extra = Base - 1 then
+ 
+             --  If Value is maximum, scale it up
+ 
+             if Value = Precision_Limit then
+                Extra := Char_As_Digit (Value mod B);
+                Value := Value / B;
+                Scale := Scale + 1;
+                Round_Extra (Digit, Value, Scale, Extra, Base);
+ 
+             else
+                Extra := 0;
+                Value := Value + 1;
+             end if;
+ 
+          else
+             Extra := Extra + 1;
+          end if;
+       end if;
+    end Round_Extra;
+ 
+    -------------------------
+    -- Scan_Decimal_Digits --
+    -------------------------
+ 
+    procedure Scan_Decimal_Digits
+       (Str            : String;
+        Index          : in out Integer;
+        Max            : Integer;
+        Value          : in out Uns;
+        Scale          : in out Integer;
+        Extra          : in out Char_As_Digit;
+        Base_Violation : in out Boolean;
+        Base           : Unsigned;
+        Base_Specified : Boolean)
+ 
+    is
+       pragma Assert (Base in 2 .. 16);
+       pragma Assert (Index in Str'Range);
+       pragma Assert (Max <= Str'Last);
+ 
+       Umax : constant Uns := (Precision_Limit - Uns (Base) + 1) / Uns (Base);
+       --  Max value which cannot overflow on accumulating next digit
+ 
+       UmaxB : constant Uns := Precision_Limit / Uns (Base);
+       --  Numbers bigger than UmaxB overflow if multiplied by base
+ 
+       Precision_Limit_Reached : Boolean := False;
+       --  Set to True if addition of a digit will cause Value to be superior
+       --  to Precision_Limit.
+ 
+       Precision_Limit_Just_Reached : Boolean;
+       --  Set to True if Precision_Limit_Reached was just set to True, but only
+       --  used when Round is True.
+ 
+       Digit : Char_As_Digit;
+       --  The current digit
+ 
+       Temp : Uns;
+       --  Temporary
+ 
+       Trailing_Zeros : Natural := 0;
+       --  Number of trailing zeros at a given point
+ 
+    begin
+       --  If initial Scale is not 0 then it means that Precision_Limit was
+       --  reached during scanning of the integral part.
+ 
+       if Scale > 0 then
+          Precision_Limit_Reached := True;
+       else
+          Extra := 0;
+       end if;
+ 
+       if Round then
+          Precision_Limit_Just_Reached := False;
+       end if;
+ 
+       --  The function precondition is that the first character is a valid
+       --  digit.
+ 
+       Digit := As_Digit (Str (Index));
+ 
+       loop
+          --  Check if base is correct. If the base is not specified, the digit
+          --  E or e cannot be considered as a base violation as it can be used
+          --  for exponentiation.
+ 
+          if Digit >= Base then
+             if Base_Specified then
+                Base_Violation := True;
+             elsif Digit = E_Digit then
+                return;
+             else
+                Base_Violation := True;
+             end if;
+          end if;
+ 
+          --  If precision limit has been reached, just ignore any remaining
+          --  digits for the computation of Value and Scale, but store the
+          --  first in Extra and use the second to round Extra. The scanning
+          --  should continue only to assess the validity of the string.
+ 
+          if Precision_Limit_Reached then
+             if Round and then Precision_Limit_Just_Reached then
+                Round_Extra (Digit, Value, Scale, Extra, Base);
+                Precision_Limit_Just_Reached := False;
+             end if;
+ 
+          else
+             --  Trailing '0' digits are ignored until a non-zero digit is found
+ 
+             if Digit = 0 then
+                Trailing_Zeros := Trailing_Zeros + 1;
+ 
+             else
+                --  Handle accumulated zeros.
+ 
+                for J in 1 .. Trailing_Zeros loop
+                   if Value <= UmaxB then
+                      Value := Value * Uns (Base);
+                      Scale := Scale - 1;
+ 
+                   else
+                      Precision_Limit_Reached := True;
+                      exit;
+                   end if;
+                end loop;
+ 
+                --  Reset trailing zero counter
+ 
+                Trailing_Zeros := 0;
+ 
+                --  Handle current non zero digit
+ 
+                Temp := Value * Uns (Base) + Uns (Digit);
+ 
+                --  Check if Temp is larger than Precision_Limit, taking into
+                --  account that Temp may wrap around when Precision_Limit is
+                --  equal to the largest integer.
+ 
+                if Value <= Umax
+                  or else (Value <= UmaxB
+                            and then ((Precision_Limit < Uns'Last
+                                        and then Temp <= Precision_Limit)
+                                      or else (Precision_Limit = Uns'Last
+                                                and then Temp >= Uns (Base))))
+                then
+                   Value := Temp;
+                   Scale := Scale - 1;
+ 
+                else
+                   Extra := Digit;
+                   Precision_Limit_Reached := True;
+                   if Round then
+                      Precision_Limit_Just_Reached := True;
+                   end if;
+                end if;
+             end if;
+          end if;
+ 
+          --  Check next character
+ 
+          Index := Index + 1;
+ 
+          if Index > Max then
+             return;
+          end if;
+ 
+          Digit := As_Digit (Str (Index));
+ 
+          if Digit not in Valid_Digit then
+ 
+             --  Underscore is only allowed if followed by a digit
+ 
+             if Digit = Underscore and Index + 1 <= Max then
+ 
+                Digit := As_Digit (Str (Index + 1));
+                if Digit in Valid_Digit then
+                   Index := Index + 1;
+                else
+                   return;
+                end if;
+ 
+             --  Neither a valid underscore nor a digit
+ 
+             else
+                return;
+             end if;
+          end if;
+       end loop;
+    end Scan_Decimal_Digits;
+ 
+    --------------------------
+    -- Scan_Integral_Digits --
+    --------------------------
+ 
+    procedure Scan_Integral_Digits
+       (Str            : String;
+        Index          : in out Integer;
+        Max            : Integer;
+        Value          : out Uns;
+        Scale          : out Integer;
+        Extra          : out Char_As_Digit;
+        Base_Violation : in out Boolean;
+        Base           : Unsigned;
+        Base_Specified : Boolean)
+    is
+       pragma Assert (Base in 2 .. 16);
+ 
+       Umax : constant Uns := (Precision_Limit - Uns (Base) + 1) / Uns (Base);
+       --  Max value which cannot overflow on accumulating next digit
+ 
+       UmaxB : constant Uns := Precision_Limit / Uns (Base);
+       --  Numbers bigger than UmaxB overflow if multiplied by base
+ 
+       Precision_Limit_Reached : Boolean := False;
+       --  Set to True if addition of a digit will cause Value to be superior
+       --  to Precision_Limit.
+ 
+       Precision_Limit_Just_Reached : Boolean;
+       --  Set to True if Precision_Limit_Reached was just set to True, but only
+       --  used when Round is True.
+ 
+       Digit : Char_As_Digit;
+       --  The current digit
+ 
+       Temp : Uns;
+       --  Temporary
+ 
+    begin
+       --  Initialize Value, Scale and Extra
+ 
+       Value := 0;
+       Scale := 0;
+       Extra := 0;
+ 
+       if Round then
+          Precision_Limit_Just_Reached := False;
+       end if;
+ 
+       pragma Assert (Max <= Str'Last);
+ 
+       --  The function precondition is that the first character is a valid
+       --  digit.
+ 
+       Digit := As_Digit (Str (Index));
+ 
+       loop
+          --  Check if base is correct. If the base is not specified, the digit
+          --  E or e cannot be considered as a base violation as it can be used
+          --  for exponentiation.
+ 
+          if Digit >= Base then
+             if Base_Specified then
+                Base_Violation := True;
+             elsif Digit = E_Digit then
+                return;
+             else
+                Base_Violation := True;
+             end if;
+          end if;
+ 
+          --  If precision limit has been reached, just ignore any remaining
+          --  digits for the computation of Value and Scale, but store the
+          --  first in Extra and use the second to round Extra. The scanning
+          --  should continue only to assess the validity of the string.
+ 
+          if Precision_Limit_Reached then
+             Scale := Scale + 1;
+ 
+             if Round and then Precision_Limit_Just_Reached then
+                Round_Extra (Digit, Value, Scale, Extra, Base);
+                Precision_Limit_Just_Reached := False;
+             end if;
+ 
+          else
+             Temp := Value * Uns (Base) + Uns (Digit);
+ 
+             --  Check if Temp is larger than Precision_Limit, taking into
+             --  account that Temp may wrap around when Precision_Limit is
+             --  equal to the largest integer.
+ 
+             if Value <= Umax
+               or else (Value <= UmaxB
+                         and then ((Precision_Limit < Uns'Last
+                                     and then Temp <= Precision_Limit)
+                                   or else (Precision_Limit = Uns'Last
+                                             and then Temp >= Uns (Base))))
+             then
+                Value := Temp;
+ 
+             else
+                Extra := Digit;
+                Precision_Limit_Reached := True;
+                if Round then
+                   Precision_Limit_Just_Reached := True;
+                end if;
+                Scale := Scale + 1;
+             end if;
+          end if;
+ 
+          --  Look for the next character
+ 
+          Index := Index + 1;
+          if Index > Max then
+             return;
+          end if;
+ 
+          Digit := As_Digit (Str (Index));
+ 
+          if Digit not in Valid_Digit then
+ 
+             --  Next character is not a digit. In that case stop scanning
+             --  unless the next chracter is an underscore followed by a digit.
+ 
+             if Digit = Underscore and Index + 1 <= Max then
+                Digit := As_Digit (Str (Index + 1));
+                if Digit in Valid_Digit then
+                   Index := Index + 1;
+                else
+                   return;
+                end if;
+             else
+                return;
+             end if;
+          end if;
+       end loop;
+    end Scan_Integral_Digits;
+ 
+    -------------------
+    -- Scan_Raw_Real --
+    -------------------
+ 
+    function Scan_Raw_Real
+      (Str   : String;
+       Ptr   : not null access Integer;
+       Max   : Integer;
+       Base  : out Unsigned;
+       Scale : out Integer;
+       Extra : out Unsigned;
+       Minus : out Boolean) return Uns
+    is
+       pragma Assert (Max <= Str'Last);
+ 
+       After_Point : Boolean;
+       --  True if a decimal should be parsed
+ 
+       Base_Char : Character := ASCII.NUL;
+       --  Character used to set the base. If Nul this means that default
+       --  base is used.
+ 
+       Base_Violation : Boolean := False;
+       --  If True some digits where not in the base. The real is still scanned
+       --  till the end even if an error will be raised.
+ 
+       Index : Integer;
+       --  Local copy of string pointer
+ 
+       Start : Positive;
+       pragma Unreferenced (Start);
+ 
+       Value : Uns;
+       --  Mantissa as an Integer
+ 
+    begin
+       --  The default base is 10
+ 
+       Base := 10;
+ 
+       --  We do not tolerate strings with Str'Last = Positive'Last
+ 
+       if Str'Last = Positive'Last then
+          raise Program_Error with
+            "string upper bound is Positive'Last, not supported";
+       end if;
+ 
+       --  Scan the optional sign
+ 
+       Scan_Sign (Str, Ptr, Max, Minus, Start);
+       Index := Ptr.all;
+ 
+       pragma Assert (Index >= Str'First);
+ 
+       pragma Annotate (CodePeer, Modified, Str (Index));
+ 
+       --  First character can be either a decimal digit or a dot and for some
+       --  reason CodePeer incorrectly thinks it is always a digit.
+ 
+       if Str (Index) in '0' .. '9' then
+          After_Point := False;
+ 
+          --  If this is a digit it can indicates either the float decimal
+          --  part or the base to use.
+ 
+          Scan_Integral_Digits
+            (Str, Index, Max, Value, Scale, Char_As_Digit (Extra),
+             Base_Violation, Base, Base_Specified => False);
+ 
+       --  A dot is allowed only if followed by a digit (RM 3.5(47))
+ 
+       elsif Str (Index) = '.'
+         and then Index < Max
+         and then Str (Index + 1) in '0' .. '9'
+       then
+          After_Point := True;
+          Index := Index + 1;
+          Value := 0;
+          Scale := 0;
+          Extra := 0;
+ 
+       else
+          Bad_Value (Str);
+       end if;
+ 
+       --  Check if the first number encountered is a base
+ 
+       pragma Assert (Index >= Str'First);
+ 
+       if Index < Max
+         and then (Str (Index) = '#' or else Str (Index) = ':')
+       then
+          Base_Char := Str (Index);
+ 
+          if Value in 2 .. 16 then
+             Base := Unsigned (Value);
+          else
+             Base_Violation := True;
+             Base := 16;
+          end if;
+ 
+          Index := Index + 1;
+ 
+          if Str (Index) = '.'
+            and then Index < Max
+            and then As_Digit (Str (Index + 1)) in Valid_Digit
+          then
+             After_Point := True;
+             Index := Index + 1;
+             Value := 0;
+          end if;
+       end if;
+ 
+       --  Scan the integral part if still necessary
+ 
+       if Base_Char /= ASCII.NUL and then not After_Point then
+          if Index > Max or else As_Digit (Str (Index)) not in Valid_Digit then
+             Bad_Value (Str);
+          end if;
+ 
+          Scan_Integral_Digits
+            (Str, Index, Max, Value, Scale, Char_As_Digit (Extra),
+             Base_Violation, Base, Base_Specified => Base_Char /= ASCII.NUL);
+       end if;
+ 
+       --  Do we have a dot?
+ 
+       pragma Assert (Index >= Str'First);
+ 
+       if not After_Point and then Index <= Max and then Str (Index) = '.' then
+ 
+          --  At this stage if After_Point was not set, this means that an
+          --  integral part has been found. Thus the dot is valid even if not
+          --  followed by a digit.
+ 
+          if Index < Max and then As_Digit (Str (Index + 1)) in Valid_Digit then
+             After_Point := True;
+          end if;
+ 
+          Index := Index + 1;
+       end if;
+ 
+       --  Scan the decimal part
+ 
+       if After_Point then
+          pragma Assert (Index <= Max);
+ 
+          Scan_Decimal_Digits
+            (Str, Index, Max, Value, Scale, Char_As_Digit (Extra),
+             Base_Violation, Base, Base_Specified => Base_Char /= ASCII.NUL);
+       end if;
+ 
+       --  If an explicit base was specified ensure that the delimiter is found
+ 
+       if Base_Char /= ASCII.NUL then
+          pragma Assert (Index > Max or else Index in Str'Range);
+ 
+          if Index > Max or else Str (Index) /= Base_Char then
+             Bad_Value (Str);
+          else
+             Index := Index + 1;
+          end if;
+       end if;
+ 
+       --  Update pointer and scan exponent
+ 
+       Ptr.all := Index;
+       Scale := Scale + Scan_Exponent (Str, Ptr, Max, Real => True);
+ 
+       --  Here is where we check for a bad based number
+ 
+       if Base_Violation then
+          Bad_Value (Str);
+       else
+          return Value;
+       end if;
+ 
+    end Scan_Raw_Real;
+ 
+    --------------------
+    -- Value_Raw_Real --
+    --------------------
+ 
+    function Value_Raw_Real
+      (Str   : String;
+       Base  : out Unsigned;
+       Scale : out Integer;
+       Extra : out Unsigned;
+       Minus : out Boolean) return Uns
+    is
+    begin
+       --  We have to special case Str'Last = Positive'Last because the normal
+       --  circuit ends up setting P to Str'Last + 1 which is out of bounds. We
+       --  deal with this by converting to a subtype which fixes the bounds.
+ 
+       if Str'Last = Positive'Last then
+          declare
+             subtype NT is String (1 .. Str'Length);
+          begin
+             return Value_Raw_Real (NT (Str), Base, Scale, Extra, Minus);
+          end;
+ 
+       --  Normal case where Str'Last < Positive'Last
+ 
+       else
+          declare
+             V : Uns;
+             P : aliased Integer := Str'First;
+          begin
+             V := Scan_Raw_Real
+                    (Str, P'Access, Str'Last, Base, Scale, Extra, Minus);
+             Scan_Trailing_Blanks (Str, P);
+             return V;
+          end;
+       end if;
+    end Value_Raw_Real;
+ 
+ end System.Value_R;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valuer.ads gcc-11.1.0/gcc/ada/libgnat/s-valuer.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valuer.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-valuer.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,101 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . V A L U E _ R                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2020, Free Software Foundation, Inc.            --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains routines for scanning real values for use in
+ --  Text_IO.Decimal_IO, Fixed_IO, Float_IO and the Value attribute.
+ 
+ with System.Unsigned_Types; use System.Unsigned_Types;
+ 
+ generic
+ 
+    type Uns is mod <>;
+ 
+    Precision_Limit : Uns;
+ 
+    Round : Boolean;
+ 
+ package System.Value_R is
+    pragma Preelaborate;
+ 
+    function Scan_Raw_Real
+      (Str   : String;
+       Ptr   : not null access Integer;
+       Max   : Integer;
+       Base  : out Unsigned;
+       Scale : out Integer;
+       Extra : out Unsigned;
+       Minus : out Boolean) return Uns;
+    --  This function scans the string starting at Str (Ptr.all) for a valid
+    --  real literal according to the syntax described in (RM 3.5(43)). The
+    --  substring scanned extends no further than Str (Max). There are three
+    --  cases for the return:
+    --
+    --  If a valid real is found after scanning past any initial spaces, then
+    --  Ptr.all is updated past the last character of the real (but trailing
+    --  spaces are not scanned out) and the Base, Scale, Extra and Minus out
+    --  parameters are set; if Val is the result of the call, then the real
+    --  represented by the literal is equal to
+    --
+    --    (Val * Base + Extra) * (Base ** (Scale - 1))
+    --
+    --  with the negative sign if Minus is true.
+    --
+    --  If no valid real is found, then Ptr.all points either to an initial
+    --  non-blank character, or to Max + 1 if the field is all spaces and the
+    --  exception Constraint_Error is raised.
+    --
+    --  If a syntactically valid real is scanned, but the value is out of
+    --  range, or, in the based case, the base value is out of range or there
+    --  is an out of range digit, then Ptr.all points past the real literal,
+    --  and Constraint_Error is raised.
+    --
+    --  Note: these rules correspond to the requirements for leaving the
+    --  pointer positioned in Text_Io.Get
+    --
+    --  Note: if Str is null, i.e. if Max is less than Ptr, then this is a
+    --  special case of an all-blank string, and Ptr is unchanged, and hence
+    --  is greater than Max as required in this case.
+    --
+    --  Note: this routine should not be called with Str'Last = Positive'Last.
+    --  If this occurs Program_Error is raised with a message noting that this
+    --  case is not supported. Most such cases are eliminated by the caller.
+ 
+    function Value_Raw_Real
+      (Str   : String;
+       Base  : out Unsigned;
+       Scale : out Integer;
+       Extra : out Unsigned;
+       Minus : out Boolean) return Uns;
+    --  Used in computing X'Value (Str) where X is a real type. Str is the
+    --  string argument of the attribute. Constraint_Error is raised if the
+    --  string is malformed.
+ 
+ end System.Value_R;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valueu.adb gcc-11.1.0/gcc/ada/libgnat/s-valueu.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-valueu.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-valueu.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,324 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . V A L U E _ U                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Val_Util; use System.Val_Util;
+ 
+ package body System.Value_U is
+ 
+    -----------------------
+    -- Scan_Raw_Unsigned --
+    -----------------------
+ 
+    function Scan_Raw_Unsigned
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer) return Uns
+    is
+       P : Integer;
+       --  Local copy of the pointer
+ 
+       Uval : Uns;
+       --  Accumulated unsigned integer result
+ 
+       Expon : Integer;
+       --  Exponent value
+ 
+       Overflow : Boolean := False;
+       --  Set True if overflow is detected at any point
+ 
+       Base_Char : Character;
+       --  Base character (# or :) in based case
+ 
+       Base : Uns := 10;
+       --  Base value (reset in based case)
+ 
+       Digit : Uns;
+       --  Digit value
+ 
+    begin
+       --  We do not tolerate strings with Str'Last = Positive'Last
+ 
+       if Str'Last = Positive'Last then
+          raise Program_Error with
+            "string upper bound is Positive'Last, not supported";
+       end if;
+ 
+       P := Ptr.all;
+       Uval := Character'Pos (Str (P)) - Character'Pos ('0');
+       P := P + 1;
+ 
+       --  Scan out digits of what is either the number or the base.
+       --  In either case, we are definitely scanning out in base 10.
+ 
+       declare
+          Umax : constant Uns := (Uns'Last - 9) / 10;
+          --  Max value which cannot overflow on accumulating next digit
+ 
+          Umax10 : constant Uns := Uns'Last / 10;
+          --  Numbers bigger than Umax10 overflow if multiplied by 10
+ 
+       begin
+          --  Loop through decimal digits
+          loop
+             exit when P > Max;
+ 
+             Digit := Character'Pos (Str (P)) - Character'Pos ('0');
+ 
+             --  Non-digit encountered
+ 
+             if Digit > 9 then
+                if Str (P) = '_' then
+                   Scan_Underscore (Str, P, Ptr, Max, False);
+                else
+                   exit;
+                end if;
+ 
+             --  Accumulate result, checking for overflow
+ 
+             else
+                if Uval <= Umax then
+                   Uval := 10 * Uval + Digit;
+ 
+                elsif Uval > Umax10 then
+                   Overflow := True;
+ 
+                else
+                   Uval := 10 * Uval + Digit;
+ 
+                   if Uval < Umax10 then
+                      Overflow := True;
+                   end if;
+                end if;
+ 
+                P := P + 1;
+             end if;
+          end loop;
+       end;
+ 
+       Ptr.all := P;
+ 
+       --  Deal with based case. We recognize either the standard '#' or the
+       --  allowed alternative replacement ':' (see RM J.2(3)).
+ 
+       if P < Max and then (Str (P) = '#' or else Str (P) = ':') then
+          Base_Char := Str (P);
+          P := P + 1;
+          Base := Uval;
+          Uval := 0;
+ 
+          --  Check base value. Overflow is set True if we find a bad base, or
+          --  a digit that is out of range of the base. That way, we scan out
+          --  the numeral that is still syntactically correct, though illegal.
+          --  We use a safe base of 16 for this scan, to avoid zero divide.
+ 
+          if Base not in 2 .. 16 then
+             Overflow := True;
+             Base := 16;
+          end if;
+ 
+          --  Scan out based integer
+ 
+          declare
+             Umax : constant Uns := (Uns'Last - Base + 1) / Base;
+             --  Max value which cannot overflow on accumulating next digit
+ 
+             UmaxB : constant Uns := Uns'Last / Base;
+             --  Numbers bigger than UmaxB overflow if multiplied by base
+ 
+          begin
+             --  Loop to scan out based integer value
+ 
+             loop
+                --  We require a digit at this stage
+ 
+                if Str (P) in '0' .. '9' then
+                   Digit := Character'Pos (Str (P)) - Character'Pos ('0');
+ 
+                elsif Str (P) in 'A' .. 'F' then
+                   Digit :=
+                     Character'Pos (Str (P)) - (Character'Pos ('A') - 10);
+ 
+                elsif Str (P) in 'a' .. 'f' then
+                   Digit :=
+                     Character'Pos (Str (P)) - (Character'Pos ('a') - 10);
+ 
+                --  If we don't have a digit, then this is not a based number
+                --  after all, so we use the value we scanned out as the base
+                --  (now in Base), and the pointer to the base character was
+                --  already stored in Ptr.all.
+ 
+                else
+                   Uval := Base;
+                   exit;
+                end if;
+ 
+                --  If digit is too large, just signal overflow and continue.
+                --  The idea here is to keep scanning as long as the input is
+                --  syntactically valid, even if we have detected overflow
+ 
+                if Digit >= Base then
+                   Overflow := True;
+ 
+                --  Here we accumulate the value, checking overflow
+ 
+                elsif Uval <= Umax then
+                   Uval := Base * Uval + Digit;
+ 
+                elsif Uval > UmaxB then
+                   Overflow := True;
+ 
+                else
+                   Uval := Base * Uval + Digit;
+ 
+                   if Uval < UmaxB then
+                      Overflow := True;
+                   end if;
+                end if;
+ 
+                --  If at end of string with no base char, not a based number
+                --  but we signal Constraint_Error and set the pointer past
+                --  the end of the field, since this is what the ACVC tests
+                --  seem to require, see CE3704N, line 204.
+ 
+                P := P + 1;
+ 
+                if P > Max then
+                   Ptr.all := P;
+                   Bad_Value (Str);
+                end if;
+ 
+                --  If terminating base character, we are done with loop
+ 
+                if Str (P) = Base_Char then
+                   Ptr.all := P + 1;
+                   exit;
+ 
+                --  Deal with underscore
+ 
+                elsif Str (P) = '_' then
+                   Scan_Underscore (Str, P, Ptr, Max, True);
+                end if;
+ 
+             end loop;
+          end;
+       end if;
+ 
+       --  Come here with scanned unsigned value in Uval. The only remaining
+       --  required step is to deal with exponent if one is present.
+ 
+       Expon := Scan_Exponent (Str, Ptr, Max);
+ 
+       if Expon /= 0 and then Uval /= 0 then
+ 
+          --  For non-zero value, scale by exponent value. No need to do this
+          --  efficiently, since use of exponent in integer literals is rare,
+          --  and in any case the exponent cannot be very large.
+ 
+          declare
+             UmaxB : constant Uns := Uns'Last / Base;
+             --  Numbers bigger than UmaxB overflow if multiplied by base
+ 
+          begin
+             for J in 1 .. Expon loop
+                if Uval > UmaxB then
+                   Overflow := True;
+                   exit;
+                end if;
+ 
+                Uval := Uval * Base;
+             end loop;
+          end;
+       end if;
+ 
+       --  Return result, dealing with sign and overflow
+ 
+       if Overflow then
+          Bad_Value (Str);
+       else
+          return Uval;
+       end if;
+    end Scan_Raw_Unsigned;
+ 
+    -------------------
+    -- Scan_Unsigned --
+    -------------------
+ 
+    function Scan_Unsigned
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer) return Uns
+    is
+       Start : Positive;
+       --  Save location of first non-blank character
+ 
+    begin
+       Scan_Plus_Sign (Str, Ptr, Max, Start);
+ 
+       if Str (Ptr.all) not in '0' .. '9' then
+          Ptr.all := Start;
+          Bad_Value (Str);
+       end if;
+ 
+       return Scan_Raw_Unsigned (Str, Ptr, Max);
+    end Scan_Unsigned;
+ 
+    --------------------
+    -- Value_Unsigned --
+    --------------------
+ 
+    function Value_Unsigned (Str : String) return Uns is
+    begin
+       --  We have to special case Str'Last = Positive'Last because the normal
+       --  circuit ends up setting P to Str'Last + 1 which is out of bounds. We
+       --  deal with this by converting to a subtype which fixes the bounds.
+ 
+       if Str'Last = Positive'Last then
+          declare
+             subtype NT is String (1 .. Str'Length);
+          begin
+             return Value_Unsigned (NT (Str));
+          end;
+ 
+       --  Normal case where Str'Last < Positive'Last
+ 
+       else
+          declare
+             V : Uns;
+             P : aliased Integer := Str'First;
+          begin
+             V := Scan_Unsigned (Str, P'Access, Str'Last);
+             Scan_Trailing_Blanks (Str, P);
+             return V;
+          end;
+       end if;
+    end Value_Unsigned;
+ 
+ end System.Value_U;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valueu.ads gcc-11.1.0/gcc/ada/libgnat/s-valueu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valueu.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-valueu.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,131 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . V A L U E _ U                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains routines for scanning modular Unsigned
+ --  values for use in Text_IO.Modular_IO, and the Value attribute.
+ 
+ generic
+ 
+    type Uns is mod <>;
+ 
+ package System.Value_U is
+    pragma Preelaborate;
+ 
+    function Scan_Raw_Unsigned
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer) return Uns;
+    --  This function scans the string starting at Str (Ptr.all) for a valid
+    --  integer according to the syntax described in (RM 3.5(43)). The substring
+    --  scanned extends no further than Str (Max).  Note: this does not scan
+    --  leading or trailing blanks, nor leading sign.
+    --
+    --  There are three cases for the return:
+    --
+    --  If a valid integer is found, then Ptr.all is updated past the last
+    --  character of the integer.
+    --
+    --  If no valid integer is found, then Ptr.all points either to an initial
+    --  non-digit character, or to Max + 1 if the field is all spaces and the
+    --  exception Constraint_Error is raised.
+    --
+    --  If a syntactically valid integer is scanned, but the value is out of
+    --  range, or, in the based case, the base value is out of range or there
+    --  is an out of range digit, then Ptr.all points past the integer, and
+    --  Constraint_Error is raised.
+    --
+    --  Note: these rules correspond to the requirements for leaving the pointer
+    --  positioned in Text_IO.Get. Note that the rules as stated in the RM would
+    --  seem to imply that for a case like:
+    --
+    --    8#12345670009#
+    --
+    --  the pointer should be left at the first # having scanned out the longest
+    --  valid integer literal (8), but in fact in this case the pointer points
+    --  past the final # and Constraint_Error is raised. This is the behavior
+    --  expected for Text_IO and enforced by the ACATS tests.
+    --
+    --  If a based literal is malformed in that a character other than a valid
+    --  hexadecimal digit is encountered during scanning out the digits after
+    --  the # (this includes the case of using the wrong terminator, : instead
+    --  of # or vice versa) there are two cases. If all the digits before the
+    --  non-digit are in range of the base, as in
+    --
+    --    8#100x00#
+    --    8#100:
+    --
+    --  then in this case, the "base" value before the initial # is returned as
+    --  the result, and the pointer points to the initial # character on return.
+    --
+    --  If an out of range digit has been detected before the invalid character,
+    --  as in:
+    --
+    --   8#900x00#
+    --   8#900:
+    --
+    --  then the pointer is also left at the initial # character, but constraint
+    --  error is raised reflecting the encounter of an out of range digit.
+    --
+    --  Finally if we have an unterminated fixed-point constant where the final
+    --  # or : character is missing, Constraint_Error is raised and the pointer
+    --  is left pointing past the last digit, as in:
+    --
+    --   8#22
+    --
+    --  This string results in a Constraint_Error with the pointer pointing
+    --  past the second 2.
+    --
+    --  Note: if Str is empty, i.e. if Max is less than Ptr, then this is a
+    --  special case of an all-blank string, and Ptr is unchanged, and hence
+    --  is greater than Max as required in this case.
+    --
+    --  Note: this routine should not be called with Str'Last = Positive'Last.
+    --  If this occurs Program_Error is raised with a message noting that this
+    --  case is not supported. Most such cases are eliminated by the caller.
+ 
+    function Scan_Unsigned
+      (Str : String;
+       Ptr : not null access Integer;
+       Max : Integer) return Uns;
+    --  Same as Scan_Raw_Unsigned, except scans optional leading
+    --  blanks, and an optional leading plus sign.
+    --
+    --  Note: if a minus sign is present, Constraint_Error will be raised.
+    --  Note: trailing blanks are not scanned.
+ 
+    function Value_Unsigned
+      (Str : String) return Uns;
+    --  Used in computing X'Value (Str) where X is a modular integer type whose
+    --  modulus does not exceed the range of System.Unsigned_Types.Unsigned. Str
+    --  is the string argument of the attribute. Constraint_Error is raised if
+    --  the string is malformed, or if the value is out of range.
+ 
+ end System.Value_U;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valuns.adb gcc-11.1.0/gcc/ada/libgnat/s-valuns.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-valuns.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valuns.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,325 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Unsigned_Types; use System.Unsigned_Types;
! with System.Val_Util;       use System.Val_Util;
! 
! package body System.Val_Uns is
! 
!    -----------------------
!    -- Scan_Raw_Unsigned --
!    -----------------------
! 
!    function Scan_Raw_Unsigned
!      (Str : String;
!       Ptr : not null access Integer;
!       Max : Integer) return Unsigned
!    is
!       P : Integer;
!       --  Local copy of the pointer
! 
!       Uval : Unsigned;
!       --  Accumulated unsigned integer result
! 
!       Expon : Integer;
!       --  Exponent value
! 
!       Overflow : Boolean := False;
!       --  Set True if overflow is detected at any point
! 
!       Base_Char : Character;
!       --  Base character (# or :) in based case
! 
!       Base : Unsigned := 10;
!       --  Base value (reset in based case)
! 
!       Digit : Unsigned;
!       --  Digit value
! 
!    begin
!       --  We do not tolerate strings with Str'Last = Positive'Last
! 
!       if Str'Last = Positive'Last then
!          raise Program_Error with
!            "string upper bound is Positive'Last, not supported";
!       end if;
! 
!       P := Ptr.all;
!       Uval := Character'Pos (Str (P)) - Character'Pos ('0');
!       P := P + 1;
! 
!       --  Scan out digits of what is either the number or the base.
!       --  In either case, we are definitely scanning out in base 10.
! 
!       declare
!          Umax : constant := (Unsigned'Last - 9) / 10;
!          --  Max value which cannot overflow on accumulating next digit
! 
!          Umax10 : constant := Unsigned'Last / 10;
!          --  Numbers bigger than Umax10 overflow if multiplied by 10
! 
!       begin
!          --  Loop through decimal digits
!          loop
!             exit when P > Max;
! 
!             Digit := Character'Pos (Str (P)) - Character'Pos ('0');
! 
!             --  Non-digit encountered
! 
!             if Digit > 9 then
!                if Str (P) = '_' then
!                   Scan_Underscore (Str, P, Ptr, Max, False);
!                else
!                   exit;
!                end if;
! 
!             --  Accumulate result, checking for overflow
! 
!             else
!                if Uval <= Umax then
!                   Uval := 10 * Uval + Digit;
! 
!                elsif Uval > Umax10 then
!                   Overflow := True;
! 
!                else
!                   Uval := 10 * Uval + Digit;
! 
!                   if Uval < Umax10 then
!                      Overflow := True;
!                   end if;
!                end if;
! 
!                P := P + 1;
!             end if;
!          end loop;
!       end;
! 
!       Ptr.all := P;
! 
!       --  Deal with based case. We recognize either the standard '#' or the
!       --  allowed alternative replacement ':' (see RM J.2(3)).
! 
!       if P < Max and then (Str (P) = '#' or else Str (P) = ':') then
!          Base_Char := Str (P);
!          P := P + 1;
!          Base := Uval;
!          Uval := 0;
! 
!          --  Check base value. Overflow is set True if we find a bad base, or
!          --  a digit that is out of range of the base. That way, we scan out
!          --  the numeral that is still syntactically correct, though illegal.
!          --  We use a safe base of 16 for this scan, to avoid zero divide.
! 
!          if Base not in 2 .. 16 then
!             Overflow := True;
!             Base := 16;
!          end if;
! 
!          --  Scan out based integer
! 
!          declare
!             Umax : constant Unsigned := (Unsigned'Last - Base + 1) / Base;
!             --  Max value which cannot overflow on accumulating next digit
! 
!             UmaxB : constant Unsigned := Unsigned'Last / Base;
!             --  Numbers bigger than UmaxB overflow if multiplied by base
! 
!          begin
!             --  Loop to scan out based integer value
! 
!             loop
!                --  We require a digit at this stage
! 
!                if Str (P) in '0' .. '9' then
!                   Digit := Character'Pos (Str (P)) - Character'Pos ('0');
! 
!                elsif Str (P) in 'A' .. 'F' then
!                   Digit :=
!                     Character'Pos (Str (P)) - (Character'Pos ('A') - 10);
! 
!                elsif Str (P) in 'a' .. 'f' then
!                   Digit :=
!                     Character'Pos (Str (P)) - (Character'Pos ('a') - 10);
! 
!                --  If we don't have a digit, then this is not a based number
!                --  after all, so we use the value we scanned out as the base
!                --  (now in Base), and the pointer to the base character was
!                --  already stored in Ptr.all.
! 
!                else
!                   Uval := Base;
!                   exit;
!                end if;
! 
!                --  If digit is too large, just signal overflow and continue.
!                --  The idea here is to keep scanning as long as the input is
!                --  syntactically valid, even if we have detected overflow
! 
!                if Digit >= Base then
!                   Overflow := True;
! 
!                --  Here we accumulate the value, checking overflow
! 
!                elsif Uval <= Umax then
!                   Uval := Base * Uval + Digit;
! 
!                elsif Uval > UmaxB then
!                   Overflow := True;
! 
!                else
!                   Uval := Base * Uval + Digit;
! 
!                   if Uval < UmaxB then
!                      Overflow := True;
!                   end if;
!                end if;
! 
!                --  If at end of string with no base char, not a based number
!                --  but we signal Constraint_Error and set the pointer past
!                --  the end of the field, since this is what the ACVC tests
!                --  seem to require, see CE3704N, line 204.
! 
!                P := P + 1;
! 
!                if P > Max then
!                   Ptr.all := P;
!                   Bad_Value (Str);
!                end if;
! 
!                --  If terminating base character, we are done with loop
! 
!                if Str (P) = Base_Char then
!                   Ptr.all := P + 1;
!                   exit;
! 
!                --  Deal with underscore
! 
!                elsif Str (P) = '_' then
!                   Scan_Underscore (Str, P, Ptr, Max, True);
!                end if;
! 
!             end loop;
!          end;
!       end if;
! 
!       --  Come here with scanned unsigned value in Uval. The only remaining
!       --  required step is to deal with exponent if one is present.
! 
!       Expon := Scan_Exponent (Str, Ptr, Max);
! 
!       if Expon /= 0 and then Uval /= 0 then
! 
!          --  For non-zero value, scale by exponent value. No need to do this
!          --  efficiently, since use of exponent in integer literals is rare,
!          --  and in any case the exponent cannot be very large.
! 
!          declare
!             UmaxB : constant Unsigned := Unsigned'Last / Base;
!             --  Numbers bigger than UmaxB overflow if multiplied by base
! 
!          begin
!             for J in 1 .. Expon loop
!                if Uval > UmaxB then
!                   Overflow := True;
!                   exit;
!                end if;
! 
!                Uval := Uval * Base;
!             end loop;
!          end;
!       end if;
! 
!       --  Return result, dealing with sign and overflow
! 
!       if Overflow then
!          Bad_Value (Str);
!       else
!          return Uval;
!       end if;
!    end Scan_Raw_Unsigned;
! 
!    -------------------
!    -- Scan_Unsigned --
!    -------------------
! 
!    function Scan_Unsigned
!      (Str : String;
!       Ptr : not null access Integer;
!       Max : Integer) return Unsigned
!    is
!       Start : Positive;
!       --  Save location of first non-blank character
! 
!    begin
!       Scan_Plus_Sign (Str, Ptr, Max, Start);
! 
!       if Str (Ptr.all) not in '0' .. '9' then
!          Ptr.all := Start;
!          Bad_Value (Str);
!       end if;
! 
!       return Scan_Raw_Unsigned (Str, Ptr, Max);
!    end Scan_Unsigned;
! 
!    --------------------
!    -- Value_Unsigned --
!    --------------------
! 
!    function Value_Unsigned (Str : String) return Unsigned is
!    begin
!       --  We have to special case Str'Last = Positive'Last because the normal
!       --  circuit ends up setting P to Str'Last + 1 which is out of bounds. We
!       --  deal with this by converting to a subtype which fixes the bounds.
! 
!       if Str'Last = Positive'Last then
!          declare
!             subtype NT is String (1 .. Str'Length);
!          begin
!             return Value_Unsigned (NT (Str));
!          end;
! 
!       --  Normal case where Str'Last < Positive'Last
! 
!       else
!          declare
!             V : Unsigned;
!             P : aliased Integer := Str'First;
!          begin
!             V := Scan_Unsigned (Str, P'Access, Str'Last);
!             Scan_Trailing_Blanks (Str, P);
!             return V;
!          end;
!       end if;
!    end Value_Unsigned;
  
! end System.Val_Uns;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valuns.ads gcc-11.1.0/gcc/ada/libgnat/s-valuns.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valuns.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valuns.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,129 ****
  --  values for use in Text_IO.Modular_IO, and the Value attribute.
  
  with System.Unsigned_Types;
  
  package System.Val_Uns is
     pragma Preelaborate;
  
     function Scan_Raw_Unsigned
       (Str : String;
        Ptr : not null access Integer;
!       Max : Integer) return System.Unsigned_Types.Unsigned;
!    --  This function scans the string starting at Str (Ptr.all) for a valid
!    --  integer according to the syntax described in (RM 3.5(43)). The substring
!    --  scanned extends no further than Str (Max).  Note: this does not scan
!    --  leading or trailing blanks, nor leading sign.
!    --
!    --  There are three cases for the return:
!    --
!    --  If a valid integer is found, then Ptr.all is updated past the last
!    --  character of the integer.
!    --
!    --  If no valid integer is found, then Ptr.all points either to an initial
!    --  non-digit character, or to Max + 1 if the field is all spaces and the
!    --  exception Constraint_Error is raised.
!    --
!    --  If a syntactically valid integer is scanned, but the value is out of
!    --  range, or, in the based case, the base value is out of range or there
!    --  is an out of range digit, then Ptr.all points past the integer, and
!    --  Constraint_Error is raised.
!    --
!    --  Note: these rules correspond to the requirements for leaving the pointer
!    --  positioned in Text_IO.Get. Note that the rules as stated in the RM would
!    --  seem to imply that for a case like:
!    --
!    --    8#12345670009#
!    --
!    --  the pointer should be left at the first # having scanned out the longest
!    --  valid integer literal (8), but in fact in this case the pointer points
!    --  past the final # and Constraint_Error is raised. This is the behavior
!    --  expected for Text_IO and enforced by the ACATS tests.
!    --
!    --  If a based literal is malformed in that a character other than a valid
!    --  hexadecimal digit is encountered during scanning out the digits after
!    --  the # (this includes the case of using the wrong terminator, : instead
!    --  of # or vice versa) there are two cases. If all the digits before the
!    --  non-digit are in range of the base, as in
!    --
!    --    8#100x00#
!    --    8#100:
!    --
!    --  then in this case, the "base" value before the initial # is returned as
!    --  the result, and the pointer points to the initial # character on return.
!    --
!    --  If an out of range digit has been detected before the invalid character,
!    --  as in:
!    --
!    --   8#900x00#
!    --   8#900:
!    --
!    --  then the pointer is also left at the initial # character, but constraint
!    --  error is raised reflecting the encounter of an out of range digit.
!    --
!    --  Finally if we have an unterminated fixed-point constant where the final
!    --  # or : character is missing, Constraint_Error is raised and the pointer
!    --  is left pointing past the last digit, as in:
!    --
!    --   8#22
!    --
!    --  This string results in a Constraint_Error with the pointer pointing
!    --  past the second 2.
!    --
!    --  Note: if Str is empty, i.e. if Max is less than Ptr, then this is a
!    --  special case of an all-blank string, and Ptr is unchanged, and hence
!    --  is greater than Max as required in this case.
!    --
!    --  Note: this routine should not be called with Str'Last = Positive'Last.
!    --  If this occurs Program_Error is raised with a message noting that this
!    --  case is not supported. Most such cases are eliminated by the caller.
  
     function Scan_Unsigned
       (Str : String;
        Ptr : not null access Integer;
!       Max : Integer) return System.Unsigned_Types.Unsigned;
!    --  Same as Scan_Raw_Unsigned, except scans optional leading
!    --  blanks, and an optional leading plus sign.
!    --
!    --  Note: if a minus sign is present, Constraint_Error will be raised.
!    --  Note: trailing blanks are not scanned.
  
     function Value_Unsigned
!      (Str : String) return System.Unsigned_Types.Unsigned;
!    --  Used in computing X'Value (Str) where X is a modular integer type whose
!    --  modulus does not exceed the range of System.Unsigned_Types.Unsigned. Str
!    --  is the string argument of the attribute. Constraint_Error is raised if
!    --  the string is malformed, or if the value is out of range.
  
  end System.Val_Uns;
--- 33,61 ----
  --  values for use in Text_IO.Modular_IO, and the Value attribute.
  
  with System.Unsigned_Types;
+ with System.Value_U;
  
  package System.Val_Uns is
     pragma Preelaborate;
  
+    subtype Unsigned is Unsigned_Types.Unsigned;
+ 
+    package Impl is new Value_U (Unsigned);
+ 
     function Scan_Raw_Unsigned
       (Str : String;
        Ptr : not null access Integer;
!       Max : Integer) return Unsigned
!      renames Impl.Scan_Raw_Unsigned;
  
     function Scan_Unsigned
       (Str : String;
        Ptr : not null access Integer;
!       Max : Integer) return Unsigned
!      renames Impl.Scan_Unsigned;
  
     function Value_Unsigned
!      (Str : String) return Unsigned
!      renames Impl.Value_Unsigned;
  
  end System.Val_Uns;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valuti.adb gcc-11.1.0/gcc/ada/libgnat/s-valuti.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-valuti.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valuti.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valuti.ads gcc-11.1.0/gcc/ada/libgnat/s-valuti.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valuti.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valuti.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valwch.adb gcc-11.1.0/gcc/ada/libgnat/s-valwch.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-valwch.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valwch.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-valwch.ads gcc-11.1.0/gcc/ada/libgnat/s-valwch.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-valwch.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-valwch.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-veboop.adb gcc-11.1.0/gcc/ada/libgnat/s-veboop.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-veboop.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-veboop.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-veboop.ads gcc-11.1.0/gcc/ada/libgnat/s-veboop.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-veboop.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-veboop.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-vector.ads gcc-11.1.0/gcc/ada/libgnat/s-vector.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-vector.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-vector.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-vercon.adb gcc-11.1.0/gcc/ada/libgnat/s-vercon.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-vercon.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-vercon.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-vercon.ads gcc-11.1.0/gcc/ada/libgnat/s-vercon.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-vercon.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-vercon.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-wchcnv.adb gcc-11.1.0/gcc/ada/libgnat/s-wchcnv.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-wchcnv.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-wchcnv.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-wchcnv.ads gcc-11.1.0/gcc/ada/libgnat/s-wchcnv.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-wchcnv.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-wchcnv.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-wchcon.adb gcc-11.1.0/gcc/ada/libgnat/s-wchcon.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-wchcon.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-wchcon.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-wchcon.ads gcc-11.1.0/gcc/ada/libgnat/s-wchcon.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-wchcon.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-wchcon.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-wchjis.adb gcc-11.1.0/gcc/ada/libgnat/s-wchjis.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-wchjis.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-wchjis.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-wchjis.ads gcc-11.1.0/gcc/ada/libgnat/s-wchjis.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-wchjis.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-wchjis.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-wchstw.adb gcc-11.1.0/gcc/ada/libgnat/s-wchstw.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-wchstw.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-wchstw.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-wchstw.ads gcc-11.1.0/gcc/ada/libgnat/s-wchstw.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-wchstw.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-wchstw.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-wchwts.adb gcc-11.1.0/gcc/ada/libgnat/s-wchwts.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-wchwts.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-wchwts.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-wchwts.ads gcc-11.1.0/gcc/ada/libgnat/s-wchwts.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-wchwts.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-wchwts.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widboo.adb gcc-11.1.0/gcc/ada/libgnat/s-widboo.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-widboo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-widboo.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widboo.ads gcc-11.1.0/gcc/ada/libgnat/s-widboo.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-widboo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-widboo.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widcha.adb gcc-11.1.0/gcc/ada/libgnat/s-widcha.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-widcha.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-widcha.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widcha.ads gcc-11.1.0/gcc/ada/libgnat/s-widcha.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-widcha.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-widcha.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widenu.adb gcc-11.1.0/gcc/ada/libgnat/s-widenu.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-widenu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-widenu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widenu.ads gcc-11.1.0/gcc/ada/libgnat/s-widenu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-widenu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-widenu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widint.ads gcc-11.1.0/gcc/ada/libgnat/s-widint.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-widint.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-widint.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,41 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . W I D _ I N T                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Width attribute for signed integers up to Integer
+ 
+ with System.Width_I;
+ 
+ package System.Wid_Int is
+ 
+    function Width_Integer is new Width_I (Integer);
+    pragma Pure_Function (Width_Integer);
+ 
+ end System.Wid_Int;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widlli.adb gcc-11.1.0/gcc/ada/libgnat/s-widlli.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-widlli.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-widlli.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,73 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! package body System.Wid_LLI is
! 
!    -----------------------------
!    -- Width_Long_Long_Integer --
!    -----------------------------
! 
!    function Width_Long_Long_Integer
!      (Lo, Hi : Long_Long_Integer)
!       return   Natural
!    is
!       W : Natural;
!       T : Long_Long_Integer;
! 
!    begin
!       if Lo > Hi then
!          return 0;
! 
!       else
!          --  Minimum value is 2, one for sign, one for digit
! 
!          W := 2;
! 
!          --  Get max of absolute values, but avoid bomb if we have the maximum
!          --  negative number (note that First + 1 has same digits as First)
! 
!          T := Long_Long_Integer'Max (
!                 abs (Long_Long_Integer'Max (Lo, Long_Long_Integer'First + 1)),
!                 abs (Long_Long_Integer'Max (Hi, Long_Long_Integer'First + 1)));
! 
!          --  Increase value if more digits required
! 
!          while T >= 10 loop
!             T := T / 10;
!             W := W + 1;
!          end loop;
! 
!          return W;
!       end if;
! 
!    end Width_Long_Long_Integer;
  
! end System.Wid_LLI;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widlli.ads gcc-11.1.0/gcc/ada/libgnat/s-widlli.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-widlli.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-widlli.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,45 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains the routine used for Width attribute for all
! --  non-static signed integer subtypes. Note we only have one routine,
! --  since this seems a fairly marginal function.
  
  package System.Wid_LLI is
-    pragma Pure;
  
!    function Width_Long_Long_Integer
!      (Lo, Hi : Long_Long_Integer)
!       return   Natural;
!    --  Compute Width attribute for non-static type derived from a signed
!    --  Integer type. The arguments Lo, Hi are the bounds of the type.
  
  end System.Wid_LLI;
--- 29,41 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  Width attribute for signed integers larger than Integer
! 
! with System.Width_I;
  
  package System.Wid_LLI is
  
!    function Width_Long_Long_Integer is new Width_I (Long_Long_Integer);
!    pragma Pure_Function (Width_Long_Long_Integer);
  
  end System.Wid_LLI;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widllli.ads gcc-11.1.0/gcc/ada/libgnat/s-widllli.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-widllli.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-widllli.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,42 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                      S Y S T E M . W I D _ L L L I                       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Width attribute for signed integers larger than Long_Long_Integer
+ 
+ with System.Width_I;
+ 
+ package System.Wid_LLLI is
+ 
+    function Width_Long_Long_Long_Integer is
+      new Width_I (Long_Long_Long_Integer);
+    pragma Pure_Function (Width_Long_Long_Long_Integer);
+ 
+ end System.Wid_LLLI;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widlllu.ads gcc-11.1.0/gcc/ada/libgnat/s-widlllu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-widlllu.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-widlllu.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,45 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                      S Y S T E M . W I D _ L L L U                       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Width attribute for modular integers larger than Long_Long_Integer
+ 
+ with System.Width_U;
+ with System.Unsigned_Types;
+ 
+ package System.Wid_LLLU is
+ 
+    subtype Long_Long_Long_Unsigned is Unsigned_Types.Long_Long_Long_Unsigned;
+ 
+    function Width_Long_Long_Long_Unsigned is
+      new Width_U (Long_Long_Long_Unsigned);
+    pragma Pure_Function (Width_Long_Long_Long_Unsigned);
+ 
+ end System.Wid_LLLU;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widllu.adb gcc-11.1.0/gcc/ada/libgnat/s-widllu.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-widllu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-widllu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,73 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Unsigned_Types; use System.Unsigned_Types;
! 
! package body System.Wid_LLU is
! 
!    ------------------------------
!    -- Width_Long_Long_Unsigned --
!    ------------------------------
! 
!    function Width_Long_Long_Unsigned
!      (Lo, Hi : Long_Long_Unsigned)
!       return   Natural
!    is
!       W : Natural;
!       T : Long_Long_Unsigned;
! 
!    begin
!       if Lo > Hi then
!          return 0;
! 
!       else
!          --  Minimum value is 2, one for sign, one for digit
! 
!          W := 2;
! 
!          --  Get max of absolute values, but avoid bomb if we have the maximum
!          --  negative number (note that First + 1 has same digits as First)
! 
!          T := Long_Long_Unsigned'Max (Lo, Hi);
! 
!          --  Increase value if more digits required
! 
!          while T >= 10 loop
!             T := T / 10;
!             W := W + 1;
!          end loop;
! 
!          return W;
!       end if;
! 
!    end Width_Long_Long_Unsigned;
  
! end System.Wid_LLU;
--- 29,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package does not require a body, since it is an instantiation. We
! --  provide a dummy file containing a No_Body pragma so that previous versions
! --  of the body (which did exist) will not interfere.
  
! pragma No_Body;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widllu.ads gcc-11.1.0/gcc/ada/libgnat/s-widllu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-widllu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-widllu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,47 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains the routine used for Width attribute for all
! --  non-static unsigned integer (modular integer) subtypes. Note we only
! --  have one routine, since this seems a fairly marginal function.
  
  with System.Unsigned_Types;
  
  package System.Wid_LLU is
-    pragma Pure;
  
!    function Width_Long_Long_Unsigned
!      (Lo, Hi : System.Unsigned_Types.Long_Long_Unsigned)
!       return   Natural;
!    --  Compute Width attribute for non-static type derived from a modular
!    --  integer type. The arguments Lo, Hi are the bounds of the type.
  
  end System.Wid_LLU;
--- 29,44 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  Width attribute for modular integers larger than Integer
  
+ with System.Width_U;
  with System.Unsigned_Types;
  
  package System.Wid_LLU is
  
!    subtype Long_Long_Unsigned is Unsigned_Types.Long_Long_Unsigned;
! 
!    function Width_Long_Long_Unsigned is new Width_U (Long_Long_Unsigned);
!    pragma Pure_Function (Width_Long_Long_Unsigned);
  
  end System.Wid_LLU;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widthi.adb gcc-11.1.0/gcc/ada/libgnat/s-widthi.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-widthi.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-widthi.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,62 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . W I D T H _ I                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ function System.Width_I (Lo, Hi : Int) return Natural is
+    W : Natural;
+    T : Int;
+ 
+ begin
+    if Lo > Hi then
+       return 0;
+ 
+    else
+       --  Minimum value is 2, one for sign, one for digit
+ 
+       W := 2;
+ 
+       --  Get max of absolute values, but avoid bomb if we have the maximum
+       --  negative number (note that First + 1 has same digits as First)
+ 
+       T := Int'Max (
+              abs (Int'Max (Lo, Int'First + 1)),
+              abs (Int'Max (Hi, Int'First + 1)));
+ 
+       --  Increase value if more digits required
+ 
+       while T >= 10 loop
+          T := T / 10;
+          W := W + 1;
+       end loop;
+ 
+       return W;
+    end if;
+ 
+ end System.Width_I;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widthi.ads gcc-11.1.0/gcc/ada/libgnat/s-widthi.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-widthi.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-widthi.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,39 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . W I D T H _ I                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Compute Width attribute for non-static type derived from a signed integer
+ --  type. The arguments Lo, Hi are the bounds of the type.
+ 
+ generic
+ 
+    type Int is range <>;
+ 
+ function System.Width_I (Lo, Hi : Int) return Natural;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widthu.adb gcc-11.1.0/gcc/ada/libgnat/s-widthu.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-widthu.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-widthu.adb	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . W I D T H _ U                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ function System.Width_U (Lo, Hi : Uns) return Natural is
+    W : Natural;
+    T : Uns;
+ 
+ begin
+    if Lo > Hi then
+       return 0;
+ 
+    else
+       --  Minimum value is 2, one for sign, one for digit
+ 
+       W := 2;
+ 
+       --  Get max of absolute values, but avoid bomb if we have the maximum
+       --  negative number (note that First + 1 has same digits as First)
+ 
+       T := Uns'Max (Lo, Hi);
+ 
+       --  Increase value if more digits required
+ 
+       while T >= 10 loop
+          T := T / 10;
+          W := W + 1;
+       end loop;
+ 
+       return W;
+    end if;
+ 
+ end System.Width_U;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widthu.ads gcc-11.1.0/gcc/ada/libgnat/s-widthu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-widthu.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-widthu.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,39 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . W I D T H _ U                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Compute Width attribute for non-static type derived from a modular integer
+ --  type. The arguments Lo, Hi are the bounds of the type.
+ 
+ generic
+ 
+    type Uns is mod <>;
+ 
+ function System.Width_U (Lo, Hi : Uns) return Natural;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widuns.ads gcc-11.1.0/gcc/ada/libgnat/s-widuns.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-widuns.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/libgnat/s-widuns.ads	Tue Apr 27 10:00:12 2021
***************
*** 0 ****
--- 1,44 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       S Y S T E M . W I D _ U N S                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Width attribute for modular integers up to Integer
+ 
+ with System.Width_U;
+ with System.Unsigned_Types;
+ 
+ package System.Wid_Uns is
+ 
+    subtype Unsigned is Unsigned_Types.Unsigned;
+ 
+    function Width_Unsigned is new Width_U (Unsigned);
+    pragma Pure_Function (Width_Unsigned);
+ 
+ end System.Wid_Uns;
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widwch.adb gcc-11.1.0/gcc/ada/libgnat/s-widwch.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-widwch.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-widwch.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-widwch.ads gcc-11.1.0/gcc/ada/libgnat/s-widwch.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-widwch.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-widwch.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-win32.ads gcc-11.1.0/gcc/ada/libgnat/s-win32.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-win32.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-win32.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2008-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2008-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-winext.ads gcc-11.1.0/gcc/ada/libgnat/s-winext.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-winext.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-winext.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2009-2019, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2009-2020, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-wwdcha.adb gcc-11.1.0/gcc/ada/libgnat/s-wwdcha.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-wwdcha.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-wwdcha.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-wwdcha.ads gcc-11.1.0/gcc/ada/libgnat/s-wwdcha.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-wwdcha.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-wwdcha.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                           --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                           --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-wwdenu.adb gcc-11.1.0/gcc/ada/libgnat/s-wwdenu.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-wwdenu.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-wwdenu.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-wwdenu.ads gcc-11.1.0/gcc/ada/libgnat/s-wwdenu.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-wwdenu.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-wwdenu.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-wwdwch.adb gcc-11.1.0/gcc/ada/libgnat/s-wwdwch.adb
*** gcc-10.3.0/gcc/ada/libgnat/s-wwdwch.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-wwdwch.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/s-wwdwch.ads gcc-11.1.0/gcc/ada/libgnat/s-wwdwch.ads
*** gcc-10.3.0/gcc/ada/libgnat/s-wwdwch.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/s-wwdwch.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-aix.ads gcc-11.1.0/gcc/ada/libgnat/system-aix.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-aix.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-aix.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                            (AIX/PPC Version)                             --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                            (AIX/PPC Version)                             --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
*************** private
*** 135,142 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 135,140 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-darwin-arm.ads gcc-11.1.0/gcc/ada/libgnat/system-darwin-arm.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-darwin-arm.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-darwin-arm.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (Darwin/ARM Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (Darwin/ARM Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
*************** private
*** 151,158 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 151,156 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-darwin-ppc.ads gcc-11.1.0/gcc/ada/libgnat/system-darwin-ppc.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-darwin-ppc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-darwin-ppc.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (Darwin/PPC Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (Darwin/PPC Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
*************** private
*** 151,158 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 151,156 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-darwin-x86.ads gcc-11.1.0/gcc/ada/libgnat/system-darwin-x86.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-darwin-x86.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-darwin-x86.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (Darwin/x86 Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (Darwin/x86 Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
*************** private
*** 151,158 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 151,156 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-djgpp.ads gcc-11.1.0/gcc/ada/libgnat/system-djgpp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-djgpp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-djgpp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                            (DJGPP Version)                               --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                            (DJGPP Version)                               --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
*************** private
*** 125,132 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 125,130 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-dragonfly-x86_64.ads gcc-11.1.0/gcc/ada/libgnat/system-dragonfly-x86_64.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-dragonfly-x86_64.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-dragonfly-x86_64.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                      (DragonFly BSD/x86_64 Version)                      --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                      (DragonFly BSD/x86_64 Version)                      --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
*************** private
*** 125,132 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 125,130 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-freebsd.ads gcc-11.1.0/gcc/ada/libgnat/system-freebsd.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-freebsd.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-freebsd.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                            (FreeBSD Version)                             --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                            (FreeBSD Version)                             --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
*************** private
*** 126,133 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 126,131 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-hpux-ia64.ads gcc-11.1.0/gcc/ada/libgnat/system-hpux-ia64.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-hpux-ia64.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-hpux-ia64.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                           (HP-UX/ia64 Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                           (HP-UX/ia64 Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
*************** private
*** 125,132 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 125,130 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-hpux.ads gcc-11.1.0/gcc/ada/libgnat/system-hpux.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-hpux.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-hpux.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                             (HP-UX Version)                              --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                             (HP-UX Version)                              --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
*************** private
*** 125,132 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 125,130 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-linux-alpha.ads gcc-11.1.0/gcc/ada/libgnat/system-linux-alpha.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-linux-alpha.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-linux-alpha.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (GNU-Linux/alpha Version)                         --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (GNU-Linux/alpha Version)                         --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
!    Max_Nonbinary_Modulus : constant := Integer'Last;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 1024.0;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
!    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 1024.0;
*************** private
*** 125,132 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 125,130 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-linux-arm.ads gcc-11.1.0/gcc/ada/libgnat/system-linux-arm.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-linux-arm.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-linux-arm.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (GNU-Linux/ARM Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (GNU-Linux/ARM Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
*************** private
*** 134,141 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 134,139 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-linux-hppa.ads gcc-11.1.0/gcc/ada/libgnat/system-linux-hppa.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-linux-hppa.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-linux-hppa.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (GNU/Linux-HPPA Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (GNU/Linux-HPPA Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
*************** private
*** 125,132 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 125,130 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-linux-ia64.ads gcc-11.1.0/gcc/ada/libgnat/system-linux-ia64.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-linux-ia64.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-linux-ia64.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (GNU-Linux/ia64 Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (GNU-Linux/ia64 Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
*************** private
*** 133,140 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 133,138 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-linux-m68k.ads gcc-11.1.0/gcc/ada/libgnat/system-linux-m68k.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-linux-m68k.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-linux-m68k.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (GNU/Linux/m68k Version)                         --
  --                                                                          --
! --          Copyright (C) 2014-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (GNU/Linux/m68k Version)                         --
  --                                                                          --
! --          Copyright (C) 2014-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
*************** private
*** 135,142 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 135,140 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-linux-mips.ads gcc-11.1.0/gcc/ada/libgnat/system-linux-mips.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-linux-mips.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-linux-mips.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (GNU-Linux/MIPS Version)                        --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (GNU-Linux/MIPS Version)                        --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
!    Max_Nonbinary_Modulus : constant := Integer'Last;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
!    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
*************** private
*** 126,133 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 126,131 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-linux-ppc.ads gcc-11.1.0/gcc/ada/libgnat/system-linux-ppc.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-linux-ppc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-linux-ppc.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (GNU-Linux/PPC Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (GNU-Linux/PPC Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
*************** private
*** 134,141 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 134,139 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-linux-riscv.ads gcc-11.1.0/gcc/ada/libgnat/system-linux-riscv.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-linux-riscv.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-linux-riscv.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (GNU-Linux/RISC-V Version)                      --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (GNU-Linux/RISC-V Version)                      --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
!    Max_Nonbinary_Modulus : constant := Integer'Last;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
!    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
*************** private
*** 125,132 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 125,130 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-linux-s390.ads gcc-11.1.0/gcc/ada/libgnat/system-linux-s390.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-linux-s390.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-linux-s390.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (GNU-Linux/s390 Version)                        --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (GNU-Linux/s390 Version)                        --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
!    Max_Nonbinary_Modulus : constant := Integer'Last;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
!    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
*************** private
*** 125,132 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 125,130 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-linux-sh4.ads gcc-11.1.0/gcc/ada/libgnat/system-linux-sh4.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-linux-sh4.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-linux-sh4.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (GNU-Linux/sh4 Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (GNU-Linux/sh4 Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
*************** private
*** 133,140 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 133,138 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-linux-sparc.ads gcc-11.1.0/gcc/ada/libgnat/system-linux-sparc.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-linux-sparc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-linux-sparc.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (GNU/Linux-SPARC Version)                       --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (GNU/Linux-SPARC Version)                       --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
!    Max_Nonbinary_Modulus : constant := Integer'Last;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
!    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
*************** private
*** 125,132 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 125,130 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-linux-x86.ads gcc-11.1.0/gcc/ada/libgnat/system-linux-x86.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-linux-x86.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-linux-x86.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (GNU-Linux/x86 Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (GNU-Linux/x86 Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
*************** private
*** 133,140 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 133,138 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-lynxos178-ppc.ads gcc-11.1.0/gcc/ada/libgnat/system-lynxos178-ppc.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-lynxos178-ppc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-lynxos178-ppc.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (LynxOS-178 PPC Version)                         --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (LynxOS-178 PPC Version)                         --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
*************** package System is
*** 102,108 ****
     --  (Priority'First + Priority'Last) / 2
  
     --  However, the default priority given by the OS is not the same thing as
!    --  the Ada value Default_Prioirity (previous examples include VxWorks).
     --  Therefore, we follow a model based on the full range of LynxOS-178
     --  priorities.
  
--- 102,108 ----
     --  (Priority'First + Priority'Last) / 2
  
     --  However, the default priority given by the OS is not the same thing as
!    --  the Ada value Default_Priority (previous examples include VxWorks).
     --  Therefore, we follow a model based on the full range of LynxOS-178
     --  priorities.
  
*************** private
*** 140,147 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 140,145 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-lynxos178-x86.ads gcc-11.1.0/gcc/ada/libgnat/system-lynxos178-x86.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-lynxos178-x86.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-lynxos178-x86.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (LynxOS-178 X86 Version)                         --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (LynxOS-178 X86 Version)                         --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
*************** package System is
*** 102,108 ****
     --  (Priority'First + Priority'Last) / 2
  
     --  However, the default priority given by the OS is not the same thing as
!    --  the Ada value Default_Prioirity (previous examples include VxWorks).
     --  Therefore, we follow a model based on the full range of LynxOS-178
     --  priorities.
  
--- 102,108 ----
     --  (Priority'First + Priority'Last) / 2
  
     --  However, the default priority given by the OS is not the same thing as
!    --  the Ada value Default_Priority (previous examples include VxWorks).
     --  Therefore, we follow a model based on the full range of LynxOS-178
     --  priorities.
  
*************** private
*** 140,147 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 140,145 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-mingw.ads gcc-11.1.0/gcc/ada/libgnat/system-mingw.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-mingw.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-mingw.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                            (Windows Version)                             --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                            (Windows Version)                             --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
*************** private
*** 125,132 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 125,130 ----
*************** private
*** 185,195 ****
     --  model, but maps them using compression onto the 7 priority levels
     --  available in NT and on the 16 priority levels available in 2000/XP.
  
-    --  To replace the default values of the Underlying_Priorities mapping,
-    --  copy this source file into your build directory, edit the file to
-    --  reflect your desired behavior, and recompile using Makefile.adalib
-    --  which can be found under the adalib directory of your gnat installation
- 
     pragma Linker_Options ("-Wl,--stack=0x2000000");
     --  This is used to change the default stack (32 MB) size for non tasking
     --  programs. We change this value for GNAT on Windows here because the
--- 183,188 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-qnx-aarch64.ads gcc-11.1.0/gcc/ada/libgnat/system-qnx-aarch64.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-qnx-aarch64.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-qnx-aarch64.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (QNX/Aarch64 Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (QNX/Aarch64 Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.000_001;
*************** private
*** 134,141 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 134,139 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-rtems.ads gcc-11.1.0/gcc/ada/libgnat/system-rtems.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-rtems.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-rtems.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                            (Compiler Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                            (Compiler Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 52,67 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
!    Max_Nonbinary_Modulus : constant := Integer'Last;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
--- 52,67 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
!    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
*************** private
*** 144,151 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 144,149 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-solaris-sparc.ads gcc-11.1.0/gcc/ada/libgnat/system-solaris-sparc.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-solaris-sparc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-solaris-sparc.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (SUN Solaris Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (SUN Solaris Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
*************** private
*** 125,132 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 125,130 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-solaris-x86.ads gcc-11.1.0/gcc/ada/libgnat/system-solaris-x86.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-solaris-x86.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-solaris-x86.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (x86 Solaris Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (x86 Solaris Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 0.01;
*************** private
*** 125,132 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 125,130 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (VxWorks 6.x ARM RTP)                           --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (VxWorks 6.x ARM RTP)                           --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 144,151 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 144,149 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-arm-rtp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-arm-rtp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-arm-rtp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-arm-rtp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (VxWorks 6.x ARM RTP)                           --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (VxWorks 6.x ARM RTP)                           --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 143,150 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 143,148 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-arm.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-arm.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-arm.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-arm.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (VxWorks Version ARM)                           --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (VxWorks Version ARM)                           --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 138,145 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 138,143 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-e500-kernel.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-e500-kernel.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-e500-kernel.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-e500-kernel.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                      (VxWorks 6 Kernel Version E500)                     --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                      (VxWorks 6 Kernel Version E500)                     --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 138,145 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 138,143 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (VxWorks 6.x SMP E500 RTP)                        --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (VxWorks 6.x SMP E500 RTP)                        --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 144,151 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 144,149 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-e500-rtp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-e500-rtp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-e500-rtp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-e500-rtp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (VxWorks 6.x E500 RTP)                          --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (VxWorks 6.x E500 RTP)                          --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 143,150 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 143,148 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-e500-vthread.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-e500-vthread.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-e500-vthread.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-e500-vthread.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                      (VxWorks e500 AE653 vThreads)                       --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                      (VxWorks e500 AE653 vThreads)                       --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 140,147 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 140,145 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                      (VxWorks 6 Kernel Version PPC)                      --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                      (VxWorks 6 Kernel Version PPC)                      --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 138,145 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 138,143 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-ppc-ravenscar.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-ppc-ravenscar.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-ppc-ravenscar.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-ppc-ravenscar.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                   (VxWorks/HIE Ravenscar Version PPC)                    --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                   (VxWorks/HIE Ravenscar Version PPC)                    --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 73,88 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 73,88 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 163,170 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := True;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := True;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 163,168 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (VxWorks 6.x SMP PPC RTP)                         --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (VxWorks 6.x SMP PPC RTP)                         --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 144,151 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 144,149 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (VxWorks 6.x PPC RTP)                           --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (VxWorks 6.x PPC RTP)                           --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 143,150 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 143,148 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-ppc-vthread.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-ppc-vthread.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-ppc-vthread.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-ppc-vthread.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                       (VxWorks PPC AE653 vThreads)                       --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                       (VxWorks PPC AE653 vThreads)                       --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 140,147 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := True;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 140,145 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-ppc.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-ppc.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-ppc.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-ppc.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (VxWorks 5 Version PPC)                          --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (VxWorks 5 Version PPC)                          --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 141,148 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 141,146 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-x86-kernel.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-x86-kernel.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-x86-kernel.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-x86-kernel.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                      (VxWorks 6 Kernel Version x86)                      --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                      (VxWorks 6 Kernel Version x86)                      --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 141,148 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 141,146 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                    (VxWorks Version x86 for SMP RTPs)                    --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                    (VxWorks Version x86 for SMP RTPs)                    --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 142,149 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 142,147 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-x86-rtp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-x86-rtp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-x86-rtp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-x86-rtp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                     (VxWorks Version x86 for RTPs)                       --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                     (VxWorks Version x86 for RTPs)                       --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 141,148 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 141,146 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-x86-vthread.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-x86-vthread.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-x86-vthread.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-x86-vthread.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (VxWorks 653 x86 vThreads)                       --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (VxWorks 653 x86 vThreads)                       --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 140,147 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := True;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 140,145 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks-x86.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks-x86.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks-x86.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks-x86.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (VxWorks 5 Version x86)                          --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (VxWorks 5 Version x86)                          --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 141,148 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 141,146 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (VxWorks 7.x AARCH64 RTP)                         --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (VxWorks 7.x AARCH64 RTP)                         --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 143,150 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 143,148 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-aarch64.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-aarch64.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-aarch64.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-aarch64.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                      (VxWorks 7.x AARCH64 Kernel)                        --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                      (VxWorks 7.x AARCH64 Kernel)                        --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 140,147 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 140,145 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                           (VxWorks 7 ARM RTP)                            --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                           (VxWorks 7 ARM RTP)                            --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 140,147 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 140,145 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-arm.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-arm.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-arm.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-arm.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (VxWorks Version ARM)                           --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (VxWorks Version ARM)                           --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 138,145 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 138,143 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                      (VxWorks 7 Kernel Version E500)                     --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                      (VxWorks 7 Kernel Version E500)                     --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 138,145 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 138,143 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (VxWorks 7.x E500 RTP)                           --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (VxWorks 7.x E500 RTP)                           --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 143,150 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 143,148 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (VxWorks 7.x E500 RTP)                          --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (VxWorks 7.x E500 RTP)                          --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 143,150 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 143,148 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                      (VxWorks 7 Kernel Version PPC)                      --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                      (VxWorks 7 Kernel Version PPC)                      --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 138,145 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 138,143 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (VxWorks 7.x PPC RTP)                           --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (VxWorks 7.x PPC RTP)                           --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 143,150 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 143,148 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (VxWorks 7.x PPC RTP)                           --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (VxWorks 7.x PPC RTP)                           --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 143,150 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 143,148 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                       (VxWorks 7.x PPC64 Kernel)                         --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                       (VxWorks 7.x PPC64 Kernel)                         --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 140,147 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 140,145 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (VxWorks 7.x PPC64 RTP)                          --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (VxWorks 7.x PPC64 RTP)                          --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 50,65 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 50,65 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 143,150 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 143,148 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                      (VxWorks 7 Kernel Version x86)                      --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                      (VxWorks 7 Kernel Version x86)                      --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 138,145 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 138,143 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                     (VxWorks 7 Version x86 for RTPs)                     --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                     (VxWorks 7 Version x86 for RTPs)                     --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 141,148 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 141,146 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                    (VxWorks 7 Version x86 for RTPs)                      --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                    (VxWorks 7 Version x86 for RTPs)                      --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 141,148 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 141,146 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                    (VxWorks 7 Kernel Version x86_64)                     --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                    (VxWorks 7 Kernel Version x86_64)                     --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 138,145 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 138,143 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
*** gcc-10.3.0/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads	Tue Apr 27 10:00:12 2021
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                    (VxWorks 7 Version x86_64 for RTPs)                   --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                    (VxWorks 7 Version x86_64 for RTPs)                   --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 48,63 ****
  
     --  System-Dependent Named Numbers
  
!    Min_Int               : constant := Long_Long_Integer'First;
!    Max_Int               : constant := Long_Long_Integer'Last;
  
!    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := 63;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
--- 48,63 ----
  
     --  System-Dependent Named Numbers
  
!    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
!    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
  
!    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
     Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
  
     Max_Base_Digits       : constant := Long_Long_Float'Digits;
     Max_Digits            : constant := Long_Long_Float'Digits;
  
!    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
     Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
  
     Tick                  : constant := 1.0 / 60.0;
*************** private
*** 141,148 ****
     Denorm                    : constant Boolean := True;
     Duration_32_Bits          : constant Boolean := False;
     Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
     Machine_Overflows         : constant Boolean := False;
     Machine_Rounds            : constant Boolean := True;
     Preallocated_Stacks       : constant Boolean := False;
--- 141,146 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/system.ads gcc-11.1.0/gcc/ada/libgnat/system.ads
*** gcc-10.3.0/gcc/ada/libgnat/system.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/libgnat/system.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,184 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                               S Y S T E M                                --
- --                                                                          --
- --                                 S p e c                                  --
- --                            (Compiler Version)                            --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT. The copyright notice above, and the license provisions that follow --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This version of System is a generic version that is used in building the
- --  compiler. Right now, we have a host/target problem if we try to use the
- --  "proper" System, and since the compiler itself does not care about most
- --  System parameters, this generic version works fine.
- 
- pragma Restrictions (No_Implicit_Dynamic_Code);
- --  We want to avoid trampolines in the compiler, so it can be used in systems
- --  which prevent execution of code on the stack, e.g. in windows environments
- --  with DEP (Data Execution Protection) enabled.
- 
- pragma Restrictions (No_Finalization);
- --  Use restriction No_Finalization to avoid pulling finalization (not allowed
- --  in GNAT) inside sem_spark.adb, when defining type Perm_Tree_Access as an
- --  access type on incomplete type Perm_Tree_Wrapper (which is required for
- --  defining a recursive type).
- 
- package System is
-    pragma Pure;
-    --  Note that we take advantage of the implementation permission to make
-    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-    --  2005, this is Pure in any case (AI-362).
- 
-    pragma No_Elaboration_Code_All;
-    --  Allow the use of that restriction in units that WITH this unit
- 
-    type Name is (SYSTEM_NAME_GNAT);
-    System_Name : constant Name := SYSTEM_NAME_GNAT;
- 
-    --  System-Dependent Named Numbers
- 
-    Min_Int               : constant := Long_Long_Integer'First;
-    Max_Int               : constant := Long_Long_Integer'Last;
- 
-    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
-    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
- 
-    Max_Base_Digits       : constant := Long_Long_Float'Digits;
-    Max_Digits            : constant := Long_Long_Float'Digits;
- 
-    Max_Mantissa          : constant := 63;
-    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
- 
-    Tick                  : constant := 0.01;
- 
-    --  Storage-related Declarations
- 
-    type Address is private;
-    --  Note that we do NOT add pragma Preelaborable_Initialization in this
-    --  version of System, since it is used for the compiler only, and typical
-    --  earlier bootstrap compilers don't support this pragma. We don't need
-    --  it in this context, so there is no problem in omitting it.
-    Null_Address : constant Address;
- 
-    Storage_Unit : constant := Standard'Storage_Unit;
-    Word_Size    : constant := Standard'Word_Size;
-    Memory_Size  : constant := 2 ** Standard'Address_Size;
- 
-    --  Address comparison
- 
-    function "<"  (Left, Right : Address) return Boolean;
-    function "<=" (Left, Right : Address) return Boolean;
-    function ">"  (Left, Right : Address) return Boolean;
-    function ">=" (Left, Right : Address) return Boolean;
-    function "="  (Left, Right : Address) return Boolean;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "=");
- 
-    --  Other System-Dependent Declarations
- 
-    type Bit_Order is (High_Order_First, Low_Order_First);
-    Default_Bit_Order : constant Bit_Order :=
-                          Bit_Order'Val (Standard'Default_Bit_Order);
-    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
- 
-    --  Priority-related Declarations (RM D.1)
- 
-    Max_Priority           : constant Positive := 30;
-    Max_Interrupt_Priority : constant Positive := 31;
- 
-    subtype Any_Priority       is Integer      range  0 .. 31;
-    subtype Priority           is Any_Priority range  0 .. 30;
-    subtype Interrupt_Priority is Any_Priority range 31 .. 31;
- 
-    Default_Priority : constant Priority := 15;
- 
- private
- 
-    type Address is mod Memory_Size;
-    Null_Address : constant Address := 0;
- 
-    --------------------------------------
-    -- System Implementation Parameters --
-    --------------------------------------
- 
-    --  These parameters provide information about the target that is used by
-    --  the compiler. They are in the private part of System, where they can be
-    --  accessed using the special circuitry in the Targparm unit whose source
-    --  should be consulted for more detailed descriptions of the individual
-    --  switch values.
- 
-    --  This version of system.ads is used only for building the compiler.
-    --  We really ought to use the proper target system (i.e. the one that
-    --  corresponds to the host for the compiler), but that causes as yet
-    --  unsolved makefile problems. For the most part the setting of these
-    --  parameters is not too critical for the compiler version (e.g. we
-    --  do not use floating-point anyway in the compiler).
- 
-    AAMP                      : constant Boolean := False;
-    Backend_Divide_Checks     : constant Boolean := False;
-    Backend_Overflow_Checks   : constant Boolean := False;
-    Command_Line_Args         : constant Boolean := True;
-    Configurable_Run_Time     : constant Boolean := False;
-    Denorm                    : constant Boolean := True;
-    Duration_32_Bits          : constant Boolean := False;
-    Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
-    Machine_Overflows         : constant Boolean := False;
-    Machine_Rounds            : constant Boolean := True;
-    Preallocated_Stacks       : constant Boolean := False;
-    Signed_Zeros              : constant Boolean := True;
-    Stack_Check_Default       : constant Boolean := False;
-    Stack_Check_Probes        : constant Boolean := False;
-    Stack_Check_Limits        : constant Boolean := False;
-    Support_Aggregates        : constant Boolean := True;
-    Support_Composite_Assign  : constant Boolean := True;
-    Support_Composite_Compare : constant Boolean := True;
-    Support_Long_Shifts       : constant Boolean := True;
-    Always_Compatible_Rep     : constant Boolean := True;
-    Suppress_Standard_Library : constant Boolean := False;
-    Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
-    ZCX_By_Default            : constant Boolean := True;
- 
-    --  Obsolete entries, to be removed eventually (bootstrap issues)
- 
-    Front_End_ZCX_Support     : constant Boolean := False;
-    High_Integrity_Mode       : constant Boolean := False;
-    Long_Shifts_Inlined       : constant Boolean := True;
-    Functions_Return_By_DSP   : constant Boolean := False;
-    Support_64_Bit_Divides    : constant Boolean := True;
-    GCC_ZCX_Support           : constant Boolean := True;
- 
- end System;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/link.c gcc-11.1.0/gcc/ada/link.c
*** gcc-10.3.0/gcc/ada/link.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/link.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/live.adb gcc-11.1.0/gcc/ada/live.adb
*** gcc-10.3.0/gcc/ada/live.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/live.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2000-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2000-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/live.ads gcc-11.1.0/gcc/ada/live.ads
*** gcc-10.3.0/gcc/ada/live.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/live.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/locales.c gcc-11.1.0/gcc/ada/locales.c
*** gcc-10.3.0/gcc/ada/locales.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/locales.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *             Copyright (C) 2010-2019, Free Software Foundation, Inc.      *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *             Copyright (C) 2010-2020, Free Software Foundation, Inc.      *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/make.adb gcc-11.1.0/gcc/ada/make.adb
*** gcc-10.3.0/gcc/ada/make.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/make.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Make is
*** 206,212 ****
  
     procedure Add_Library_Search_Dir (Path : String);
     --  Call Add_Lib_Search_Dir with an absolute directory path. If Path is
!    --  relative path,, it is relative to the current working directory.
  
     procedure Add_Source_Search_Dir (Path : String);
     --  Call Add_Src_Search_Dir with an absolute directory path. If Path is a
--- 206,212 ----
  
     procedure Add_Library_Search_Dir (Path : String);
     --  Call Add_Lib_Search_Dir with an absolute directory path. If Path is
!    --  relative path, it is relative to the current working directory.
  
     procedure Add_Source_Search_Dir (Path : String);
     --  Call Add_Src_Search_Dir with an absolute directory path. If Path is a
*************** package body Make is
*** 464,470 ****
     Ada_Flag_1        : constant String_Access := new String'("-x");
     Ada_Flag_2        : constant String_Access := new String'("ada");
     AdaSCIL_Flag      : constant String_Access := new String'("adascil");
!    GNAT_Flag         : constant String_Access := new String'("-gnatpg");
     Do_Not_Check_Flag : constant String_Access := new String'("-x");
  
     Object_Suffix : constant String := Get_Target_Object_Suffix.all;
--- 464,470 ----
     Ada_Flag_1        : constant String_Access := new String'("-x");
     Ada_Flag_2        : constant String_Access := new String'("ada");
     AdaSCIL_Flag      : constant String_Access := new String'("adascil");
!    GNAT_Flag         : constant String_Access := new String'("-gnatg");
     Do_Not_Check_Flag : constant String_Access := new String'("-x");
  
     Object_Suffix : constant String := Get_Target_Object_Suffix.all;
*************** package body Make is
*** 1677,1683 ****
           L            : File_Name_Type;
           Source_Index : Int;
           Args         : Argument_List) return Process_Id;
!       --  Compiles S using Args. If S is a GNAT predefined source "-gnatpg" is
        --  added to Args. Non blocking call. L corresponds to the expected
        --  library file name. Process_Id of the process spawned to execute the
        --  compilation.
--- 1677,1683 ----
           L            : File_Name_Type;
           Source_Index : Int;
           Args         : Argument_List) return Process_Id;
!       --  Compiles S using Args. If S is a GNAT predefined source "-gnatg" is
        --  added to Args. Non blocking call. L corresponds to the expected
        --  library file name. Process_Id of the process spawned to execute the
        --  compilation.
*************** package body Make is
*** 2027,2033 ****
              end loop;
           end;
  
!          --  Set -gnatpg for predefined files (for this purpose the renamings
           --  such as Text_IO do not count as predefined). Note that we strip
           --  the directory name from the source file name because the call to
           --  Fname.Is_Predefined_File_Name cannot deal with directory prefixes.
--- 2027,2033 ----
              end loop;
           end;
  
!          --  Set -gnatg for predefined files (for this purpose the renamings
           --  such as Text_IO do not count as predefined). Note that we strip
           --  the directory name from the source file name because the call to
           --  Fname.Is_Predefined_File_Name cannot deal with directory prefixes.
*************** package body Make is
*** 4697,4715 ****
              pragma Assert (Argv'Last = 2);
              Minimal_Recompilation := True;
  
!          --  -u
! 
!          elsif Argv (2) = 'u' and then Argv'Last = 2 then
!             Unique_Compile := True;
!             Compile_Only   := True;
!             Do_Bind_Step   := False;
!             Do_Link_Step   := False;
! 
!          --  -U
  
!          elsif Argv (2) = 'U'
!            and then Argv'Last = 2
!          then
              Unique_Compile := True;
              Compile_Only   := True;
              Do_Bind_Step   := False;
--- 4697,4705 ----
              pragma Assert (Argv'Last = 2);
              Minimal_Recompilation := True;
  
!          --  -u and -U (they are differentiated elsewhere)
  
!          elsif Argv (2) in 'u' | 'U' and then Argv'Last = 2 then
              Unique_Compile := True;
              Compile_Only   := True;
              Do_Bind_Step   := False;
diff -Nrcpad gcc-10.3.0/gcc/ada/make.ads gcc-11.1.0/gcc/ada/make.ads
*** gcc-10.3.0/gcc/ada/make.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/make.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/make_util.adb gcc-11.1.0/gcc/ada/make_util.adb
*** gcc-10.3.0/gcc/ada/make_util.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/make_util.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/make_util.ads gcc-11.1.0/gcc/ada/make_util.ads
*** gcc-10.3.0/gcc/ada/make_util.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/make_util.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/makeusg.adb gcc-11.1.0/gcc/ada/makeusg.adb
*** gcc-10.3.0/gcc/ada/makeusg.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/makeusg.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/makeusg.ads gcc-11.1.0/gcc/ada/makeusg.ads
*** gcc-10.3.0/gcc/ada/makeusg.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/makeusg.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/mdll-fil.adb gcc-11.1.0/gcc/ada/mdll-fil.adb
*** gcc-10.3.0/gcc/ada/mdll-fil.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/mdll-fil.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/mdll-fil.ads gcc-11.1.0/gcc/ada/mdll-fil.ads
*** gcc-10.3.0/gcc/ada/mdll-fil.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/mdll-fil.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/mdll-utl.adb gcc-11.1.0/gcc/ada/mdll-utl.adb
*** gcc-10.3.0/gcc/ada/mdll-utl.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/mdll-utl.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/mdll-utl.ads gcc-11.1.0/gcc/ada/mdll-utl.ads
*** gcc-10.3.0/gcc/ada/mdll-utl.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/mdll-utl.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/mdll.adb gcc-11.1.0/gcc/ada/mdll.adb
*** gcc-10.3.0/gcc/ada/mdll.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/mdll.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/mdll.ads gcc-11.1.0/gcc/ada/mdll.ads
*** gcc-10.3.0/gcc/ada/mdll.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/mdll.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/mingw32.h gcc-11.1.0/gcc/ada/mingw32.h
*** gcc-10.3.0/gcc/ada/mingw32.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/mingw32.h	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 2002-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 2002-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/mkdir.c gcc-11.1.0/gcc/ada/mkdir.c
*** gcc-10.3.0/gcc/ada/mkdir.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/mkdir.c	Tue Apr 27 10:00:12 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *             Copyright (C) 2002-2019, Free Software Foundation, Inc.      *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *             Copyright (C) 2002-2020, Free Software Foundation, Inc.      *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/namet-sp.adb gcc-11.1.0/gcc/ada/namet-sp.adb
*** gcc-10.3.0/gcc/ada/namet-sp.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/namet-sp.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2019, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2020, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/namet-sp.ads gcc-11.1.0/gcc/ada/namet-sp.ads
*** gcc-10.3.0/gcc/ada/namet-sp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/namet-sp.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/namet.adb gcc-11.1.0/gcc/ada/namet.adb
*** gcc-10.3.0/gcc/ada/namet.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/namet.adb	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
***************
*** 33,43 ****
  --  source file must be properly reflected in the C header file namet.h
  --  which is created manually from namet.ads and namet.adb.
  
! with Debug;    use Debug;
! with Opt;      use Opt;
! with Output;   use Output;
! with System;   use System;
! with Tree_IO;  use Tree_IO;
  with Widechar;
  
  with Interfaces; use Interfaces;
--- 27,35 ----
  --  source file must be properly reflected in the C header file namet.h
  --  which is created manually from namet.ads and namet.adb.
  
! with Debug;  use Debug;
! with Opt;    use Opt;
! with Output; use Output;
  with Widechar;
  
  with Interfaces; use Interfaces;
*************** package body Namet is
*** 1096,1101 ****
--- 1088,1102 ----
        return Id in Name_Entries.First .. Name_Entries.Last;
     end Is_Valid_Name;
  
+    ------------------
+    -- Last_Name_Id --
+    ------------------
+ 
+    function Last_Name_Id return Name_Id is
+    begin
+       return Name_Id (Int (First_Name_Id) + Name_Entries_Count - 1);
+    end Last_Name_Id;
+ 
     --------------------
     -- Length_Of_Name --
     --------------------
*************** package body Namet is
*** 1181,1191 ****
        Hash_Index : Hash_Index_Type;
        --  Computed hash index
  
     begin
        --  Quick handling for one character names
  
        if Buf.Length = 1 then
!          return Valid_Name_Id (First_Name_Id + Character'Pos (Buf.Chars (1)));
  
        --  Otherwise search hash table for existing matching entry
  
--- 1182,1194 ----
        Hash_Index : Hash_Index_Type;
        --  Computed hash index
  
+       Result : Valid_Name_Id;
+ 
     begin
        --  Quick handling for one character names
  
        if Buf.Length = 1 then
!          Result := First_Name_Id + Character'Pos (Buf.Chars (1));
  
        --  Otherwise search hash table for existing matching entry
  
*************** package body Namet is
*** 1212,1218 ****
                    end if;
                 end loop;
  
!                return New_Id;
  
                 --  Current entry in hash chain does not match
  
--- 1215,1222 ----
                    end if;
                 end loop;
  
!                Result := New_Id;
!                goto Done;
  
                 --  Current entry in hash chain does not match
  
*************** package body Namet is
*** 1250,1257 ****
  
           Name_Chars.Append (ASCII.NUL);
  
!          return Name_Entries.Last;
        end if;
     end Name_Find;
  
     function Name_Find (S : String) return Valid_Name_Id is
--- 1254,1264 ----
  
           Name_Chars.Append (ASCII.NUL);
  
!          Result := Name_Entries.Last;
        end if;
+ 
+       <<Done>>
+       return Result;
     end Name_Find;
  
     function Name_Find (S : String) return Valid_Name_Id is
*************** package body Namet is
*** 1261,1490 ****
        return Name_Find (Buf);
     end Name_Find;
  
-    -------------
-    -- Nam_In --
-    -------------
- 
-    function Nam_In
-      (T  : Name_Id;
-       V1 : Name_Id;
-       V2 : Name_Id) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2;
-    end Nam_In;
- 
-    function Nam_In
-      (T  : Name_Id;
-       V1 : Name_Id;
-       V2 : Name_Id;
-       V3 : Name_Id) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3;
-    end Nam_In;
- 
-    function Nam_In
-      (T  : Name_Id;
-       V1 : Name_Id;
-       V2 : Name_Id;
-       V3 : Name_Id;
-       V4 : Name_Id) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4;
-    end Nam_In;
- 
-    function Nam_In
-      (T  : Name_Id;
-       V1 : Name_Id;
-       V2 : Name_Id;
-       V3 : Name_Id;
-       V4 : Name_Id;
-       V5 : Name_Id) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5;
-    end Nam_In;
- 
-    function Nam_In
-      (T  : Name_Id;
-       V1 : Name_Id;
-       V2 : Name_Id;
-       V3 : Name_Id;
-       V4 : Name_Id;
-       V5 : Name_Id;
-       V6 : Name_Id) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5 or else
-              T = V6;
-    end Nam_In;
- 
-    function Nam_In
-      (T  : Name_Id;
-       V1 : Name_Id;
-       V2 : Name_Id;
-       V3 : Name_Id;
-       V4 : Name_Id;
-       V5 : Name_Id;
-       V6 : Name_Id;
-       V7 : Name_Id) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5 or else
-              T = V6 or else
-              T = V7;
-    end Nam_In;
- 
-    function Nam_In
-      (T  : Name_Id;
-       V1 : Name_Id;
-       V2 : Name_Id;
-       V3 : Name_Id;
-       V4 : Name_Id;
-       V5 : Name_Id;
-       V6 : Name_Id;
-       V7 : Name_Id;
-       V8 : Name_Id) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5 or else
-              T = V6 or else
-              T = V7 or else
-              T = V8;
-    end Nam_In;
- 
-    function Nam_In
-      (T  : Name_Id;
-       V1 : Name_Id;
-       V2 : Name_Id;
-       V3 : Name_Id;
-       V4 : Name_Id;
-       V5 : Name_Id;
-       V6 : Name_Id;
-       V7 : Name_Id;
-       V8 : Name_Id;
-       V9 : Name_Id) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5 or else
-              T = V6 or else
-              T = V7 or else
-              T = V8 or else
-              T = V9;
-    end Nam_In;
- 
-    function Nam_In
-      (T   : Name_Id;
-       V1  : Name_Id;
-       V2  : Name_Id;
-       V3  : Name_Id;
-       V4  : Name_Id;
-       V5  : Name_Id;
-       V6  : Name_Id;
-       V7  : Name_Id;
-       V8  : Name_Id;
-       V9  : Name_Id;
-       V10 : Name_Id) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5 or else
-              T = V6 or else
-              T = V7 or else
-              T = V8 or else
-              T = V9 or else
-              T = V10;
-    end Nam_In;
- 
-    function Nam_In
-      (T   : Name_Id;
-       V1  : Name_Id;
-       V2  : Name_Id;
-       V3  : Name_Id;
-       V4  : Name_Id;
-       V5  : Name_Id;
-       V6  : Name_Id;
-       V7  : Name_Id;
-       V8  : Name_Id;
-       V9  : Name_Id;
-       V10 : Name_Id;
-       V11 : Name_Id) return Boolean
-    is
-    begin
-       return T = V1  or else
-              T = V2  or else
-              T = V3  or else
-              T = V4  or else
-              T = V5  or else
-              T = V6  or else
-              T = V7  or else
-              T = V8  or else
-              T = V9  or else
-              T = V10 or else
-              T = V11;
-    end Nam_In;
- 
-    function Nam_In
-      (T   : Name_Id;
-       V1  : Name_Id;
-       V2  : Name_Id;
-       V3  : Name_Id;
-       V4  : Name_Id;
-       V5  : Name_Id;
-       V6  : Name_Id;
-       V7  : Name_Id;
-       V8  : Name_Id;
-       V9  : Name_Id;
-       V10 : Name_Id;
-       V11 : Name_Id;
-       V12 : Name_Id) return Boolean
-    is
-    begin
-       return T = V1  or else
-              T = V2  or else
-              T = V3  or else
-              T = V4  or else
-              T = V5  or else
-              T = V6  or else
-              T = V7  or else
-              T = V8  or else
-              T = V9  or else
-              T = V10 or else
-              T = V11 or else
-              T = V12;
-    end Nam_In;
- 
     -----------------
     -- Name_Equals --
     -----------------
--- 1268,1273 ----
*************** package body Namet is
*** 1729,1762 ****
        return Buf.Chars (1 .. Buf.Length);
     end To_String;
  
-    ---------------
-    -- Tree_Read --
-    ---------------
- 
-    procedure Tree_Read is
-    begin
-       Name_Chars.Tree_Read;
-       Name_Entries.Tree_Read;
- 
-       Tree_Read_Data
-         (Hash_Table'Address,
-          Hash_Table'Length * (Hash_Table'Component_Size / Storage_Unit));
-    end Tree_Read;
- 
-    ----------------
-    -- Tree_Write --
-    ----------------
- 
-    procedure Tree_Write is
-    begin
-       Name_Chars.Tree_Write;
-       Name_Entries.Tree_Write;
- 
-       Tree_Write_Data
-         (Hash_Table'Address,
-          Hash_Table'Length * (Hash_Table'Component_Size / Storage_Unit));
-    end Tree_Write;
- 
     ------------
     -- Unlock --
     ------------
--- 1512,1517 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/namet.ads gcc-11.1.0/gcc/ada/namet.ads
*** gcc-10.3.0/gcc/ada/namet.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/namet.ads	Tue Apr 27 10:00:12 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Namet is
*** 207,336 ****
     pragma Inline (Present);
     --  Determine whether name Nam exists
  
-    ------------------------------
-    -- Name_Id Membership Tests --
-    ------------------------------
- 
-    --  The following functions allow a convenient notation for testing whether
-    --  a Name_Id value matches any one of a list of possible values. In each
-    --  case True is returned if the given T argument is equal to any of the V
-    --  arguments. These essentially duplicate the Ada 2012 membership tests,
-    --  but we cannot use the latter (yet) in the compiler front end, because
-    --  of bootstrap considerations
- 
-    function Nam_In
-      (T  : Name_Id;
-       V1 : Name_Id;
-       V2 : Name_Id) return Boolean;
- 
-    function Nam_In
-      (T  : Name_Id;
-       V1 : Name_Id;
-       V2 : Name_Id;
-       V3 : Name_Id) return Boolean;
- 
-    function Nam_In
-      (T  : Name_Id;
-       V1 : Name_Id;
-       V2 : Name_Id;
-       V3 : Name_Id;
-       V4 : Name_Id) return Boolean;
- 
-    function Nam_In
-      (T  : Name_Id;
-       V1 : Name_Id;
-       V2 : Name_Id;
-       V3 : Name_Id;
-       V4 : Name_Id;
-       V5 : Name_Id) return Boolean;
- 
-    function Nam_In
-      (T  : Name_Id;
-       V1 : Name_Id;
-       V2 : Name_Id;
-       V3 : Name_Id;
-       V4 : Name_Id;
-       V5 : Name_Id;
-       V6 : Name_Id) return Boolean;
- 
-    function Nam_In
-      (T  : Name_Id;
-       V1 : Name_Id;
-       V2 : Name_Id;
-       V3 : Name_Id;
-       V4 : Name_Id;
-       V5 : Name_Id;
-       V6 : Name_Id;
-       V7 : Name_Id) return Boolean;
- 
-    function Nam_In
-      (T  : Name_Id;
-       V1 : Name_Id;
-       V2 : Name_Id;
-       V3 : Name_Id;
-       V4 : Name_Id;
-       V5 : Name_Id;
-       V6 : Name_Id;
-       V7 : Name_Id;
-       V8 : Name_Id) return Boolean;
- 
-    function Nam_In
-      (T  : Name_Id;
-       V1 : Name_Id;
-       V2 : Name_Id;
-       V3 : Name_Id;
-       V4 : Name_Id;
-       V5 : Name_Id;
-       V6 : Name_Id;
-       V7 : Name_Id;
-       V8 : Name_Id;
-       V9 : Name_Id) return Boolean;
- 
-    function Nam_In
-      (T   : Name_Id;
-       V1  : Name_Id;
-       V2  : Name_Id;
-       V3  : Name_Id;
-       V4  : Name_Id;
-       V5  : Name_Id;
-       V6  : Name_Id;
-       V7  : Name_Id;
-       V8  : Name_Id;
-       V9  : Name_Id;
-       V10 : Name_Id) return Boolean;
- 
-    function Nam_In
-      (T   : Name_Id;
-       V1  : Name_Id;
-       V2  : Name_Id;
-       V3  : Name_Id;
-       V4  : Name_Id;
-       V5  : Name_Id;
-       V6  : Name_Id;
-       V7  : Name_Id;
-       V8  : Name_Id;
-       V9  : Name_Id;
-       V10 : Name_Id;
-       V11 : Name_Id) return Boolean;
- 
-    function Nam_In
-      (T   : Name_Id;
-       V1  : Name_Id;
-       V2  : Name_Id;
-       V3  : Name_Id;
-       V4  : Name_Id;
-       V5  : Name_Id;
-       V6  : Name_Id;
-       V7  : Name_Id;
-       V8  : Name_Id;
-       V9  : Name_Id;
-       V10 : Name_Id;
-       V11 : Name_Id;
-       V12 : Name_Id) return Boolean;
- 
-    pragma Inline (Nam_In);
-    --  Inline all above functions
- 
     -----------------
     -- Subprograms --
     -----------------
--- 201,206 ----
*************** package Namet is
*** 415,423 ****
     --  also the suffixes used to indicate package body entities and to
     --  distinguish between overloaded entities). Note that names are not
     --  qualified until just before the call to gigi, so this routine is only
!    --  needed by processing that occurs after gigi has been called. This
!    --  includes all ASIS processing, since ASIS works on the tree written
!    --  after gigi has been called.
  
     procedure Append_Unqualified_Decoded
       (Buf : in out Bounded_String;
--- 285,291 ----
     --  also the suffixes used to indicate package body entities and to
     --  distinguish between overloaded entities). Note that names are not
     --  qualified until just before the call to gigi, so this routine is only
!    --  needed by processing that occurs after gigi has been called.
  
     procedure Append_Unqualified_Decoded
       (Buf : in out Bounded_String;
*************** package Namet is
*** 550,564 ****
     --  Unlocks the name table to allow use of the extra space reserved by the
     --  call to Lock. See gnat1drv for details of the need for this.
  
-    procedure Tree_Read;
-    --  Initializes internal tables from current tree file using the relevant
-    --  Table.Tree_Read routines. Note that Initialize should not be called if
-    --  Tree_Read is used. Tree_Read includes all necessary initialization.
- 
-    procedure Tree_Write;
-    --  Writes out internal tables to current tree file using the relevant
-    --  Table.Tree_Write routines.
- 
     procedure Write_Name (Id : Valid_Name_Id);
     --  Write_Name writes the characters of the specified name using the
     --  standard output procedures in package Output. The name is written
--- 418,423 ----
*************** package Namet is
*** 572,577 ****
--- 431,440 ----
     function Name_Entries_Count return Nat;
     --  Return current number of entries in the names table
  
+    function Last_Name_Id return Name_Id;
+    --  Return the last Name_Id in the table. This information is valid until
+    --  new names have been added.
+ 
     --------------------------
     -- Obsolete Subprograms --
     --------------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/namet.h gcc-11.1.0/gcc/ada/namet.h
*** gcc-10.3.0/gcc/ada/namet.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/namet.h	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2019, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2020, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/nlists.adb gcc-11.1.0/gcc/ada/nlists.adb
*** gcc-10.3.0/gcc/ada/nlists.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/nlists.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package body Nlists is
*** 141,148 ****
        Next_Node.Set_Last (N);
        Prev_Node.Set_Last (N);
  
!       --  Make sure we have no uninitialized junk in any new entires added.
!       --  This ensures that Tree_Gen will not write out any uninitialized junk.
  
        for J in Old_Last + 1 .. N loop
           Next_Node.Table (J) := Empty;
--- 135,141 ----
        Next_Node.Set_Last (N);
        Prev_Node.Set_Last (N);
  
!       --  Make sure we have no uninitialized junk in any new entries added.
  
        for J in Old_Last + 1 .. N loop
           Next_Node.Table (J) := Empty;
*************** package body Nlists is
*** 244,250 ****
              N := F;
              loop
                 Set_List_Link (N, To);
!                N := Next (N);
                 exit when No (N);
              end loop;
  
--- 237,243 ----
              N := F;
              loop
                 Set_List_Link (N, To);
!                Next (N);
                 exit when No (N);
              end loop;
  
*************** package body Nlists is
*** 339,346 ****
     ----------------
  
     procedure Initialize is
-       E : constant List_Id := Error_List;
- 
     begin
        Lists.Init;
        Next_Node.Init;
--- 332,337 ----
*************** package body Nlists is
*** 349,357 ****
        --  Allocate Error_List list header
  
        Lists.Increment_Last;
!       Set_Parent (E, Empty);
!       Set_First  (E, Empty);
!       Set_Last   (E, Empty);
     end Initialize;
  
     ------------------
--- 340,348 ----
        --  Allocate Error_List list header
  
        Lists.Increment_Last;
!       Set_Parent (Error_List, Empty);
!       Set_First  (Error_List, Empty);
!       Set_Last   (Error_List, Empty);
     end Initialize;
  
     ------------------
*************** package body Nlists is
*** 531,537 ****
              loop
                 Set_List_Link (N, LC);
                 exit when N = L;
!                N := Next (N);
              end loop;
  
              if Present (Before) then
--- 522,528 ----
              loop
                 Set_List_Link (N, LC);
                 exit when N = L;
!                Next (N);
              end loop;
  
              if Present (Before) then
*************** package body Nlists is
*** 598,604 ****
              loop
                 Set_List_Link (N, LC);
                 exit when N = L;
!                N := Next (N);
              end loop;
  
              if Present (After) then
--- 589,595 ----
              loop
                 Set_List_Link (N, LC);
                 exit when N = L;
!                Next (N);
              end loop;
  
              if Present (After) then
*************** package body Nlists is
*** 700,706 ****
        Node := First (List);
        while Present (Node) loop
           Result := Result + 1;
!          Node := Next (Node);
        end loop;
  
        return Result;
--- 691,697 ----
        Node := First (List);
        while Present (Node) loop
           Result := Result + 1;
!          Next (Node);
        end loop;
  
        return Result;
*************** package body Nlists is
*** 757,763 ****
  
           while Present (E) loop
              Append (New_Copy (E), NL);
!             E := Next (E);
           end loop;
  
           return NL;
--- 748,754 ----
  
           while Present (E) loop
              Append (New_Copy (E), NL);
!             Next (E);
           end loop;
  
           return NL;
*************** package body Nlists is
*** 785,791 ****
                 Append (New_Copy (E), NL);
              end if;
  
!             E := Next (E);
           end loop;
  
           return NL;
--- 776,782 ----
                 Append (New_Copy (E), NL);
              end if;
  
!             Next (E);
           end loop;
  
           return NL;
*************** package body Nlists is
*** 991,998 ****
     begin
        N := Node;
        loop
!          N := Next (N);
!          exit when not Nkind_In (N, N_Pragma, N_Null_Statement);
        end loop;
  
        return N;
--- 982,989 ----
     begin
        N := Node;
        loop
!          Next (N);
!          exit when Nkind (N) not in N_Pragma | N_Null_Statement;
        end loop;
  
        return N;
*************** package body Nlists is
*** 1041,1047 ****
     begin
        Elmt := First (List);
        for J in 1 .. Index - 1 loop
!          Elmt := Next (Elmt);
        end loop;
  
        return Elmt;
--- 1032,1038 ----
     begin
        Elmt := First (List);
        for J in 1 .. Index - 1 loop
!          Next (Elmt);
        end loop;
  
        return Elmt;
*************** package body Nlists is
*** 1470,1498 ****
        Prev_Node.Table (Node) := To;
     end Set_Prev;
  
-    ---------------
-    -- Tree_Read --
-    ---------------
- 
-    procedure Tree_Read is
-    begin
-       pragma Assert (not Locked);
-       Lists.Tree_Read;
-       Next_Node.Tree_Read;
-       Prev_Node.Tree_Read;
-    end Tree_Read;
- 
-    ----------------
-    -- Tree_Write --
-    ----------------
- 
-    procedure Tree_Write is
-    begin
-       Lists.Tree_Write;
-       Next_Node.Tree_Write;
-       Prev_Node.Tree_Write;
-    end Tree_Write;
- 
     ------------
     -- Unlock --
     ------------
--- 1461,1466 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/nlists.ads gcc-11.1.0/gcc/ada/nlists.ads
*** gcc-10.3.0/gcc/ada/nlists.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/nlists.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Nlists is
*** 337,344 ****
  
     procedure Initialize;
     --  Called at the start of compilation of each new main source file to
!    --  initialize the allocation of the list table. Note that Initialize
!    --  must not be called if Tree_Read is used.
  
     procedure Lock;
     --  Called to lock tables before back end is called
--- 331,337 ----
  
     procedure Initialize;
     --  Called at the start of compilation of each new main source file to
!    --  initialize the allocation of the list table.
  
     procedure Lock;
     --  Called to lock tables before back end is called
*************** package Nlists is
*** 355,369 ****
     --  Called to unlock list contents when assertions are enabled; if
     --  assertions are not enabled calling this subprogram has no effect.
  
-    procedure Tree_Read;
-    --  Initializes internal tables from current tree file using the relevant
-    --  Table.Tree_Read routines. Note that Initialize should not be called if
-    --  Tree_Read is used. Tree_Read includes all necessary initialization.
- 
-    procedure Tree_Write;
-    --  Writes out internal tables to current tree file using the relevant
-    --  Table.Tree_Write routines.
- 
     function Parent (List : List_Id) return Node_Or_Entity_Id;
     pragma Inline (Parent);
     --  Node lists may have a parent in the same way as a node. The function
--- 348,353 ----
*************** package Nlists is
*** 387,392 ****
--- 371,377 ----
     --  "if Present (Statements)" as opposed to "if Statements /= No_List".
  
     procedure Allocate_List_Tables (N : Node_Or_Entity_Id);
+    pragma Inline (Allocate_List_Tables);
     --  Called when nodes table is expanded to include node N. This call
     --  makes sure that list structures internal to Nlists are adjusted
     --  appropriately to reflect this increase in the size of the nodes table.
diff -Nrcpad gcc-10.3.0/gcc/ada/nlists.h gcc-11.1.0/gcc/ada/nlists.h
*** gcc-10.3.0/gcc/ada/nlists.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/nlists.h	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2019, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2020, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/opt.adb gcc-11.1.0/gcc/ada/opt.adb
*** gcc-10.3.0/gcc/ada/opt.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/opt.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,43 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with Gnatvsn; use Gnatvsn;
- with System;  use System;
- with Tree_IO; use Tree_IO;
- 
  package body Opt is
  
-    SU : constant := Storage_Unit;
-    --  Shorthand for System.Storage_Unit
- 
     -------------------------
     -- Back_End_Exceptions --
     -------------------------
--- 6,30 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  --                                                                          --
  ------------------------------------------------------------------------------
  
  package body Opt is
  
     -------------------------
     -- Back_End_Exceptions --
     -------------------------
*************** package body Opt is
*** 105,111 ****
        No_Component_Reordering_Config        := No_Component_Reordering;
        Optimize_Alignment_Config             := Optimize_Alignment;
        Persistent_BSS_Mode_Config            := Persistent_BSS_Mode;
-       Polling_Required_Config               := Polling_Required;
        Prefix_Exception_Messages_Config      := Prefix_Exception_Messages;
        SPARK_Mode_Config                     := SPARK_Mode;
        SPARK_Mode_Pragma_Config              := SPARK_Mode_Pragma;
--- 92,97 ----
*************** package body Opt is
*** 146,152 ****
        Optimize_Alignment             := Save.Optimize_Alignment;
        Optimize_Alignment_Local       := Save.Optimize_Alignment_Local;
        Persistent_BSS_Mode            := Save.Persistent_BSS_Mode;
-       Polling_Required               := Save.Polling_Required;
        Prefix_Exception_Messages      := Save.Prefix_Exception_Messages;
        SPARK_Mode                     := Save.SPARK_Mode;
        SPARK_Mode_Pragma              := Save.SPARK_Mode_Pragma;
--- 132,137 ----
*************** package body Opt is
*** 190,196 ****
           Optimize_Alignment             => Optimize_Alignment,
           Optimize_Alignment_Local       => Optimize_Alignment_Local,
           Persistent_BSS_Mode            => Persistent_BSS_Mode,
-          Polling_Required               => Polling_Required,
           Prefix_Exception_Messages      => Prefix_Exception_Messages,
           SPARK_Mode                     => SPARK_Mode,
           SPARK_Mode_Pragma              => SPARK_Mode_Pragma,
--- 175,180 ----
*************** package body Opt is
*** 309,438 ****
        Default_Pool                   := Default_Pool_Config;
        Exception_Locations_Suppressed := Exception_Locations_Suppressed_Config;
        Fast_Math                      := Fast_Math_Config;
-       Polling_Required               := Polling_Required_Config;
     end Set_Config_Switches;
  
-    ---------------
-    -- Tree_Read --
-    ---------------
- 
-    procedure Tree_Read is
-       Tree_Version_String_Len         : Nat;
-       Ada_Version_Config_Val          : Nat;
-       Ada_Version_Explicit_Config_Val : Nat;
-       Assertions_Enabled_Config_Val   : Nat;
- 
-    begin
-       Tree_Read_Int  (Tree_ASIS_Version_Number);
- 
-       Tree_Read_Bool (Address_Is_Private);
-       Tree_Read_Bool (Brief_Output);
-       Tree_Read_Bool (GNAT_Mode);
-       Tree_Read_Char (Identifier_Character_Set);
-       Tree_Read_Bool (Ignore_Rep_Clauses);
-       Tree_Read_Bool (Ignore_Style_Checks_Pragmas);
-       Tree_Read_Int  (Maximum_File_Name_Length);
-       Tree_Read_Data (Suppress_Options'Address,
-                       (Suppress_Options'Size + SU - 1) / SU);
-       Tree_Read_Bool (Verbose_Mode);
-       Tree_Read_Data (Warning_Mode'Address,
-                       (Warning_Mode'Size + SU - 1) / SU);
-       Tree_Read_Int  (Ada_Version_Config_Val);
-       Tree_Read_Int  (Ada_Version_Explicit_Config_Val);
-       Tree_Read_Int  (Assertions_Enabled_Config_Val);
-       Tree_Read_Bool (All_Errors_Mode);
-       Tree_Read_Bool (Assertions_Enabled);
-       Tree_Read_Bool (Check_Float_Overflow);
-       Tree_Read_Int  (Int (Check_Policy_List));
-       Tree_Read_Int  (Int (Default_Pool));
-       Tree_Read_Bool (Full_List);
- 
-       Ada_Version_Config :=
-         Ada_Version_Type'Val (Ada_Version_Config_Val);
-       Ada_Version_Explicit_Config :=
-         Ada_Version_Type'Val (Ada_Version_Explicit_Config_Val);
-       Assertions_Enabled_Config :=
-         Boolean'Val (Assertions_Enabled_Config_Val);
- 
-       --  Read version string: we have to get the length first
- 
-       Tree_Read_Int (Tree_Version_String_Len);
- 
-       declare
-          Tmp : String (1 .. Integer (Tree_Version_String_Len));
-       begin
-          Tree_Read_Data
-            (Tmp'Address, Tree_Version_String_Len);
-          System.Strings.Free (Tree_Version_String);
-          Free (Tree_Version_String);
-          Tree_Version_String := new String'(Tmp);
-       end;
- 
-       Tree_Read_Data (Distribution_Stub_Mode'Address,
-                       (Distribution_Stub_Mode'Size + SU - 1) / Storage_Unit);
-       Tree_Read_Bool (Inline_Active);
-       Tree_Read_Bool (Inline_Processing_Required);
-       Tree_Read_Bool (List_Units);
-       Tree_Read_Int  (Multiple_Unit_Index);
-       Tree_Read_Bool (Configurable_Run_Time_Mode);
-       Tree_Read_Data (Operating_Mode'Address,
-                       (Operating_Mode'Size + SU - 1) / Storage_Unit);
-       Tree_Read_Bool (Suppress_Checks);
-       Tree_Read_Bool (Try_Semantics);
-       Tree_Read_Data (Wide_Character_Encoding_Method'Address,
-                       (Wide_Character_Encoding_Method'Size + SU - 1) / SU);
-       Tree_Read_Bool (Upper_Half_Encoding);
-       Tree_Read_Bool (Force_ALI_Tree_File);
-    end Tree_Read;
- 
-    ----------------
-    -- Tree_Write --
-    ----------------
- 
-    procedure Tree_Write is
-       Version_String : String := Gnat_Version_String;
- 
-    begin
-       Tree_Write_Int  (ASIS_Version_Number);
- 
-       Tree_Write_Bool (Address_Is_Private);
-       Tree_Write_Bool (Brief_Output);
-       Tree_Write_Bool (GNAT_Mode);
-       Tree_Write_Char (Identifier_Character_Set);
-       Tree_Write_Bool (Ignore_Rep_Clauses);
-       Tree_Write_Bool (Ignore_Style_Checks_Pragmas);
-       Tree_Write_Int  (Maximum_File_Name_Length);
-       Tree_Write_Data (Suppress_Options'Address,
-                        (Suppress_Options'Size + SU - 1) / SU);
-       Tree_Write_Bool (Verbose_Mode);
-       Tree_Write_Data (Warning_Mode'Address,
-                        (Warning_Mode'Size + SU - 1) / Storage_Unit);
-       Tree_Write_Int  (Ada_Version_Type'Pos (Ada_Version_Config));
-       Tree_Write_Int  (Ada_Version_Type'Pos (Ada_Version_Explicit_Config));
-       Tree_Write_Int  (Boolean'Pos (Assertions_Enabled_Config));
-       Tree_Write_Bool (All_Errors_Mode);
-       Tree_Write_Bool (Assertions_Enabled);
-       Tree_Write_Bool (Check_Float_Overflow);
-       Tree_Write_Int  (Int (Check_Policy_List));
-       Tree_Write_Int  (Int (Default_Pool));
-       Tree_Write_Bool (Full_List);
-       Tree_Write_Int  (Int (Version_String'Length));
-       Tree_Write_Data (Version_String'Address, Version_String'Length);
-       Tree_Write_Data (Distribution_Stub_Mode'Address,
-                        (Distribution_Stub_Mode'Size + SU - 1) / SU);
-       Tree_Write_Bool (Inline_Active);
-       Tree_Write_Bool (Inline_Processing_Required);
-       Tree_Write_Bool (List_Units);
-       Tree_Write_Int  (Multiple_Unit_Index);
-       Tree_Write_Bool (Configurable_Run_Time_Mode);
-       Tree_Write_Data (Operating_Mode'Address,
-                        (Operating_Mode'Size + SU - 1) / SU);
-       Tree_Write_Bool (Suppress_Checks);
-       Tree_Write_Bool (Try_Semantics);
-       Tree_Write_Data (Wide_Character_Encoding_Method'Address,
-                        (Wide_Character_Encoding_Method'Size + SU - 1) / SU);
-       Tree_Write_Bool (Upper_Half_Encoding);
-       Tree_Write_Bool (Force_ALI_Tree_File);
-    end Tree_Write;
- 
  end Opt;
--- 293,298 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/opt.ads gcc-11.1.0/gcc/ada/opt.ads
*** gcc-10.3.0/gcc/ada/opt.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/opt.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Opt is
*** 57,106 ****
     --  from a compilation point of view (e.g. spelling of identifiers and
     --  white space layout do not count in this computation).
  
-    --  The way the checksum is computed has evolved across the various versions
-    --  of GNAT. When gprbuild is called with -m, the checksums must be computed
-    --  the same way in gprbuild as it was in the GNAT version of the compiler.
-    --  The different ways are
- 
-    --    Version 6.4 and later:
- 
-    --      The Accumulate_Token_Checksum procedure is called after each numeric
-    --      literal and each identifier/keyword. For keywords, Tok_Identifier is
-    --      used in the call to Accumulate_Token_Checksum.
- 
-    --    Versions 5.04 to 6.3:
- 
-    --      For keywords, the token value were used in the call to procedure
-    --      Accumulate_Token_Checksum. Type Token_Type did not include Tok_Some.
- 
-    --    Versions 5.03:
- 
-    --      For keywords, the token value were used in the call to
-    --      Accumulate_Token_Checksum. Type Token_Type did not include
-    --      Tok_Interface, Tok_Overriding, Tok_Synchronized and Tok_Some.
- 
-    --    Versions 5.02 and before:
- 
-    --      No calls to procedure Accumulate_Token_Checksum (the checksum
-    --      mechanism was introduced in version 5.03).
- 
-    --  To signal to the scanner whether Accumulate_Token_Checksum needs to be
-    --  called and what versions to call, the following Boolean flags are used:
- 
-    Checksum_Accumulate_Token_Checksum : Boolean := True;
-    --  GPRBUILD
-    --  Set to False by gprbuild when the version of GNAT is 5.02 or before. If
-    --  this switch is False, then we do not call Accumulate_Token_Checksum, so
-    --  the setting of the following two flags is irrelevant.
- 
-    Checksum_GNAT_6_3 : Boolean := False;
-    --  GPRBUILD
-    --  Set to True by gprbuild when the version of GNAT is 6.3 or before.
- 
-    Checksum_GNAT_5_03 : Boolean := False;
-    --  GPRBUILD
-    --  Set to True by gprbuild when the version of GNAT is 5.03 or before.
- 
     Checksum_Accumulate_Limited_Checksum : Boolean := False;
     --  Used to control the computation of the limited view of a package.
     --  (Not currently used, possible optimization for ALI files of units
--- 51,56 ----
*************** package Opt is
*** 158,164 ****
     --  remains set to Ada_Version_Default). This is used in the rare cases
     --  (notably pragma Obsolescent) where we want the explicit version set.
  
!    Ada_Version_Runtime : Ada_Version_Type := Ada_2012;
     --  GNAT
     --  Ada version used to compile the runtime. Used to set Ada_Version (but
     --  not Ada_Version_Explicit) when compiling predefined or internal units.
--- 108,114 ----
     --  remains set to Ada_Version_Default). This is used in the rare cases
     --  (notably pragma Obsolescent) where we want the explicit version set.
  
!    Ada_Version_Runtime : Ada_Version_Type := Ada_2020;
     --  GNAT
     --  Ada version used to compile the runtime. Used to set Ada_Version (but
     --  not Ada_Version_Explicit) when compiling predefined or internal units.
*************** package Opt is
*** 210,216 ****
     Allow_Integer_Address : Boolean := False;
     --  GNAT
     --  Allow use of integer expression in a context requiring System.Address.
!    --  Set by the use of configuration pragma Allow_Integer_Address Also set
     --  in relaxed semantics mode for use by CodePeer or when -gnatd.M is used.
  
     All_Sources : Boolean := False;
--- 160,166 ----
     Allow_Integer_Address : Boolean := False;
     --  GNAT
     --  Allow use of integer expression in a context requiring System.Address.
!    --  Set by the use of configuration pragma Allow_Integer_Address. Also set
     --  in relaxed semantics mode for use by CodePeer or when -gnatd.M is used.
  
     All_Sources : Boolean := False;
*************** package Opt is
*** 223,243 ****
     --  Set to non-null when Bind_Alternate_Main_Name is True. This value
     --  is modified as needed by Gnatbind.Scan_Bind_Arg.
  
-    ASIS_GNSA_Mode : Boolean := False;
-    --  GNAT
-    --  Enable GNSA back-end processing assuming ASIS_Mode is already set to
-    --  True. ASIS_GNSA mode suppresses the call to gigi.
- 
-    ASIS_Mode : Boolean := False;
-    --  GNAT
-    --  Enable semantic checks and tree transformations that are important
-    --  for ASIS but that are usually skipped if Operating_Mode is set to
-    --  Check_Semantics. This flag does not have the corresponding option to set
-    --  it ON. It is set ON when Tree_Output is set ON, it can also be set ON
-    --  from the code of GNSA-based tool (a client may need to set ON the
-    --  Back_Annotate_Rep_Info flag in this case. At the moment this does not
-    --  make very much sense, because GNSA cannot do back annotation).
- 
     Assertions_Enabled : Boolean := False;
     --  GNAT
     --  Indicates default policy (True = Check, False = Ignore) to be applied
--- 173,178 ----
*************** package Opt is
*** 257,265 ****
     --  GNAT
     --  If set True, enables back annotation of representation information
     --  by gigi, even in -gnatc mode. This is set True by the use of -gnatR
!    --  (list representation information) or -gnatt (generate tree). It is
!    --  also set true if certain Unchecked_Conversion instantiations require
!    --  checking based on annotated values.
  
     Back_End_Handles_Limited_Types : Boolean;
     --  This flag is set true if the back end can properly handle limited or
--- 192,200 ----
     --  GNAT
     --  If set True, enables back annotation of representation information
     --  by gigi, even in -gnatc mode. This is set True by the use of -gnatR
!    --  (list representation information). It is also set true if certain
!    --  Unchecked_Conversion instantiations require checking based on annotated
!    --  values.
  
     Back_End_Handles_Limited_Types : Boolean;
     --  This flag is set true if the back end can properly handle limited or
*************** package Opt is
*** 429,440 ****
     --  GNAT
     --  Names of configuration pragmas files (given by switches -gnatec)
  
     Configurable_Run_Time_Mode : Boolean := False;
     --  GNAT, GNATBIND
     --  Set True if the compiler is operating in configurable run-time mode.
!    --  This happens if the flag Targparm.Configurable_Run_TimeMode_On_Target
!    --  is set True, or if pragma No_Run_Time is used. See the spec of Rtsfind
!    --  for details on the handling of the latter pragma.
  
     Constant_Condition_Warnings : Boolean := False;
     --  GNAT
--- 364,380 ----
     --  GNAT
     --  Names of configuration pragmas files (given by switches -gnatec)
  
+    Config_Files_Store_Basename : Boolean := False;
+    --  GNAT
+    --  Set True for -gnateb. Tells GNAT that config files should be referred to
+    --  by their basename and their checksums computed in ALI files.
+ 
     Configurable_Run_Time_Mode : Boolean := False;
     --  GNAT, GNATBIND
     --  Set True if the compiler is operating in configurable run-time mode.
!    --  This happens if the flag Targparm.Configurable_Run_Time_On_Target is
!    --  True, or if pragma No_Run_Time is used. See the spec of Rtsfind for
!    --  details on the handling of the latter pragma.
  
     Constant_Condition_Warnings : Boolean := False;
     --  GNAT
*************** package Opt is
*** 507,512 ****
--- 447,460 ----
     --  PROJECT MANAGER
     --  Set to False with switch -f of gnatclean and gprclean
  
+    Disable_FE_Inline        : Boolean := False;
+    --  GNAT
+    --  Request to disable front end inlining from pragma Inline in the
+    --  presence of the -fno-inline back end flag on the command line,
+    --  regardless of any other switches that are set.
+    --  It remains the back end's reponsibility to honor -fno-inline at the
+    --  back end level.
+ 
     Display_Compilation_Progress : Boolean := False;
     --  GNATMAKE, GPRBUILD
     --  Set True (-d switch) to display information on progress while compiling
*************** package Opt is
*** 576,581 ****
--- 524,536 ----
     --  dataflow analysis, which is not available. This behavior parallels that
     --  of the old ABE mechanism.
  
+    Enable_128bit_Types : Boolean := False;
+    --  GNAT
+    --  Set to True to enable the support for 128-bit types in the compiler.
+    --  The prerequisite is a 64-bit target that supports 128-bit computation.
+ 
+    --  WARNING: There is a matching C declaration of this variable in fe.h
+ 
     Error_Msg_Line_Length : Nat := 0;
     --  GNAT
     --  Records the error message line length limit. If this is set to zero,
*************** package Opt is
*** 671,677 ****
     Extensions_Allowed : Boolean := False;
     --  GNAT
     --  Set to True by switch -gnatX if GNAT specific language extensions
!    --  are allowed. Currently there are no such defined extensions.
  
     type External_Casing_Type is (
       As_Is,       -- External names cased as they appear in the Ada source
--- 626,632 ----
     Extensions_Allowed : Boolean := False;
     --  GNAT
     --  Set to True by switch -gnatX if GNAT specific language extensions
!    --  are allowed. See GNAT RM for details.
  
     type External_Casing_Type is (
       As_Is,       -- External names cased as they appear in the Ada source
*************** package Opt is
*** 710,719 ****
     --  Indicates the current setting of Fast_Math mode, as set by the use
     --  of a Fast_Math pragma (set True by Fast_Math (On)).
  
!    Force_ALI_Tree_File : Boolean := False;
     --  GNAT
!    --  Force generation of ALI file even if errors are encountered. Also forces
!    --  generation of tree file if -gnatt is also set. Set on by use of -gnatQ.
  
     Disable_ALI_File : Boolean := False;
     --  GNAT
--- 665,674 ----
     --  Indicates the current setting of Fast_Math mode, as set by the use
     --  of a Fast_Math pragma (set True by Fast_Math (On)).
  
!    Force_ALI_File : Boolean := False;
     --  GNAT
!    --  Force generation of ALI file even if errors are encountered.
!    --  Set on by use of -gnatQ.
  
     Disable_ALI_File : Boolean := False;
     --  GNAT
*************** package Opt is
*** 769,774 ****
--- 724,733 ----
     --  the name is of the form .xxx, then to name.xxx where name is the source
     --  file name with extension stripped.
  
+    Generate_Asm : Boolean := False;
+    --  GNAT
+    --  True if generating assembly instead of an object file, via the -S switch
+ 
     Generate_C_Code : Boolean := False;
     --  GNAT, GNATBIND
     --  If True, the Cprint circuitry to generate C code output is activated.
*************** package Opt is
*** 854,860 ****
     Ignore_Rep_Clauses : Boolean := False;
     --  GNAT
     --  Set True to ignore all representation clauses. Useful when compiling
!    --  code from foreign compilers for checking or ASIS purposes. Can be
     --  set True by use of -gnatI.
  
     Ignore_SPARK_Mode_Pragmas_In_Instance : Boolean := False;
--- 813,819 ----
     Ignore_Rep_Clauses : Boolean := False;
     --  GNAT
     --  Set True to ignore all representation clauses. Useful when compiling
!    --  code from foreign compilers for checking purposes. Can be
     --  set True by use of -gnatI.
  
     Ignore_SPARK_Mode_Pragmas_In_Instance : Boolean := False;
*************** package Opt is
*** 966,972 ****
     Leap_Seconds_Support : Boolean := False;
     --  GNATBIND
     --  Set to True to enable leap seconds support in Ada.Calendar and its
!    --  children.
  
     Legacy_Elaboration_Checks : Boolean := False;
     --  GNAT
--- 925,931 ----
     Leap_Seconds_Support : Boolean := False;
     --  GNATBIND
     --  Set to True to enable leap seconds support in Ada.Calendar and its
!    --  children. Set by -y.
  
     Legacy_Elaboration_Checks : Boolean := False;
     --  GNAT
*************** package Opt is
*** 1058,1063 ****
--- 1017,1026 ----
     --  before preprocessing occurs. Set to True by switch -s of gnatprep or
     --  -s in preprocessing data file for the compiler.
  
+    XDR_Stream : Boolean := False;
+    --  GNATBIND
+    --  Set to True to enable XDR in s-stratt.adb. Set by -xdr.
+ 
     type Create_Repinfo_File_Proc is access procedure (Src  : String);
     type Write_Repinfo_Line_Proc  is access procedure (Info : String);
     type Close_Repinfo_File_Proc  is access procedure;
*************** package Opt is
*** 1072,1077 ****
--- 1035,1041 ----
     --  to the three corresponding procedures in Osint-C. The reason for this
     --  slightly strange interface is to stop Repinfo from dragging in Osint in
     --  ASIS mode, which would include lots of unwanted units in the ASIS build.
+    --  ??? Revisit this now that ASIS mode is gone.
  
     type Create_List_File_Proc is access procedure (S : String);
     type Write_List_Info_Proc  is access procedure (S : String);
*************** package Opt is
*** 1171,1177 ****
     --  make it easier to interface with back ends that implement C semantics.
     --  There is a section in Sinfo which describes the transformations made.
  
!    Multiple_Unit_Index : Int := 0;
     --  GNAT
     --  This is set non-zero if the current unit is being compiled in multiple
     --  unit per file mode, meaning that the current unit is selected from the
--- 1135,1141 ----
     --  make it easier to interface with back ends that implement C semantics.
     --  There is a section in Sinfo which describes the transformations made.
  
!    Multiple_Unit_Index : Nat := 0;
     --  GNAT
     --  This is set non-zero if the current unit is being compiled in multiple
     --  unit per file mode, meaning that the current unit is selected from the
*************** package Opt is
*** 1238,1243 ****
--- 1202,1213 ----
     --  If a pragma No_Tagged_Streams is active for the current scope, this
     --  points to the corresponding pragma.
  
+    Nodes_Size_In_Meg : Nat := 0;
+    --  GNAT
+    --  Amount of memory to allocate for all nodes, in units of 2**20 bytes.
+    --  Set by the -gnaten switch; 0 means -gnaten was not given, and a default
+    --  value should be used.
+ 
     Normalize_Scalars : Boolean := False;
     --  GNAT, GNATBIND
     --  Set True if a pragma Normalize_Scalars applies to the current unit.
*************** package Opt is
*** 1258,1268 ****
     --  cannot be simultaneous compilations with the object files in the same
     --  object directory, if project files are used.
  
-    OpenAcc_Enabled : Boolean := False;
-    --  GNAT
-    --  Indicates whether OpenAcc pragmas should be taken into account. Set to
-    --  True by the use of -fopenacc.
- 
     type Operating_Mode_Type is (Check_Syntax, Check_Semantics, Generate_Code);
     pragma Ordered (Operating_Mode_Type);
     Operating_Mode : Operating_Mode_Type := Generate_Code;
--- 1228,1233 ----
*************** package Opt is
*** 1350,1360 ****
     --  GNATBIND
     --  True if pessimistic elaboration order is to be chosen (-p switch set)
  
-    Polling_Required : Boolean := False;
-    --  GNAT
-    --  Set to True if polling for asynchronous abort is enabled by using
-    --  the -gnatP option for GNAT.
- 
     Prefix_Exception_Messages : Boolean := False;
     --  GNAT
     --  Set True to prefix exception messages with entity-name:
--- 1315,1320 ----
*************** package Opt is
*** 1528,1542 ****
     --  with'ed indirectly. It is set True by use of either the -gnatg or
     --  -gnaty switches, but not by use of the Style_Checks pragma.
  
-    Disable_FE_Inline        : Boolean := False;
-    Disable_FE_Inline_Always : Boolean := False;
-    --  GNAT
-    --  Request to disable front end inlining from pragma Inline or pragma
-    --  Inline_Always out of the presence of the -fno-inline back end flag
-    --  on the command line, regardless of any other switches that are set.
-    --  It remains the back end's reponsibility to honor -fno-inline at the
-    --  back end level.
- 
     Suppress_Control_Flow_Optimizations : Boolean := False;
     --  GNAT
     --  Set by -fpreserve-control-flow. Suppresses control flow optimizations
--- 1488,1493 ----
*************** package Opt is
*** 1646,1651 ****
--- 1597,1608 ----
     --  Tolerate time stamp and other consistency errors. If this flag is set to
     --  True (-t), then inconsistencies result in warnings rather than errors.
  
+    Transform_Function_Array : Boolean := False;
+    --  GNAT
+    --  If this switch is set True, then functions returning constrained arrays
+    --  are transformed into a procedure with an out parameter, and all calls
+    --  are updated accordingly.
+ 
     Treat_Categorization_Errors_As_Warnings : Boolean := False;
     --  Normally categorization errors are true illegalities. If this switch
     --  is set, then such errors result in warning messages rather than error
*************** package Opt is
*** 1658,1667 ****
     --  Set True to treat pragma Restrictions as Restriction_Warnings. Set by
     --  -gnatr switch.
  
-    Tree_Output : Boolean := False;
-    --  GNAT
-    --  Set to True (-gnatt) to generate output tree file
- 
     Try_Semantics : Boolean := False;
     --  GNAT
     --  Flag set to force attempt at semantic analysis, even if parser errors
--- 1615,1620 ----
*************** package Opt is
*** 1975,1981 ****
     --  Controls treatment of warning messages. If set to Suppress, warning
     --  messages are not generated at all. In Normal mode, they are generated
     --  but do not count as errors. In Treat_As_Error mode, warning messages are
!    --  generated and treated as errors. In Treat_Run_Time_Warnings_As_Errors,
     --  warning messages regarding errors raised at run time are treated as
     --  errors. Note that Warning_Mode = Suppress causes pragma Warnings to be
     --  ignored (except for legality checks), unless we are in GNATprove_Mode,
--- 1928,1935 ----
     --  Controls treatment of warning messages. If set to Suppress, warning
     --  messages are not generated at all. In Normal mode, they are generated
     --  but do not count as errors. In Treat_As_Error mode, warning messages are
!    --  generated and treated as errors, except for warnings emitted by the
!    --  Compile_Time_Warning pragma. In Treat_Run_Time_Warnings_As_Errors,
     --  warning messages regarding errors raised at run time are treated as
     --  errors. Note that Warning_Mode = Suppress causes pragma Warnings to be
     --  ignored (except for legality checks), unless we are in GNATprove_Mode,
*************** package Opt is
*** 2159,2172 ****
     --  at the start of each compilation unit, except that it is always
     --  set False for predefined units.
  
-    Polling_Required_Config : Boolean;
-    --  GNAT
-    --  This is the value of the configuration switch that controls polling
-    --  mode. It can be set True by the command line switch -gnatP, and then
-    --  further modified by the use of pragma Polling in the gnat.adc file. This
-    --  flag is used to set the initial value for Polling_Required at the start
-    --  of analyzing each unit.
- 
     Prefix_Exception_Messages_Config : Boolean;
     --  The setting of Prefix_Exception_Messages from configuration pragmas
  
--- 2113,2118 ----
*************** package Opt is
*** 2229,2240 ****
     --  allocated dispatch tables. If it is True, then the front end will
     --  generate static aggregates for dispatch tables that contain forward
     --  references to addresses of subprograms not seen yet, and the back end
!    --  must be prepared to handle this case. If it is False, then the front
!    --  end generates assignments to initialize the dispatch table, and there
!    --  are no such forward references. By default we build statically allocated
!    --  dispatch tables for all library level tagged types in all platforms.This
!    --  behavior can be disabled using switch -gnatd.t which will set this flag
!    --  to False and revert to the previous dynamic behavior.
  
     Expander_Active : Boolean := False;
     --  A flag that indicates if expansion is active (True) or deactivated
--- 2175,2186 ----
     --  allocated dispatch tables. If it is True, then the front end will
     --  generate static aggregates for dispatch tables that contain forward
     --  references to addresses of subprograms not seen yet, and the back end
!    --  must be prepared to handle this case. If it is False, then the front end
!    --  generates assignments to initialize the dispatch table, and there are
!    --  no such forward references. By default we build statically allocated
!    --  dispatch tables for all library-level tagged types in all platforms.
!    --  This behavior can be disabled using switch -gnatd.t which will set
!    --  this flag to False and revert to the previous dynamic behavior.
  
     Expander_Active : Boolean := False;
     --  A flag that indicates if expansion is active (True) or deactivated
*************** package Opt is
*** 2246,2286 ****
     --  be in the spec of Expander, but it is referenced by Errout, and it
     --  really seems wrong for Errout to depend on Expander.
  
!    -----------------------
!    -- Tree I/O Routines --
!    -----------------------
! 
!    procedure Tree_Read;
!    --  Reads switch settings from current tree file using Tree_Read
! 
!    procedure Tree_Write;
!    --  Writes out switch settings to current tree file using Tree_Write
! 
!    --------------------------
!    -- ASIS Version Control --
!    --------------------------
! 
!    --  These two variables (Tree_Version_String and Tree_ASIS_Version_Number)
!    --  are supposed to be used in the GNAT/ASIS version check performed in
!    --  the ASIS code (this package is also a part of the ASIS implementation).
!    --  They are set by Tree_Read procedure, so they represent the version
!    --  number (and the version string) of the compiler which has created the
!    --  tree, and they are supposed to be compared with the corresponding values
!    --  from the Tree_IO and Gnatvsn packages which also are a part of ASIS
!    --  implementation.
! 
!    Tree_Version_String : String_Access;
!    --  Used to store the compiler version string read from a tree file to check
!    --  if it is from the same date as stored in the version string in Gnatvsn.
!    --  We require that ASIS Pro can be used only with GNAT Pro, but we allow
!    --  non-Pro ASIS and ASIS-based tools to be used with any version of the
!    --  GNAT compiler. Therefore, we need the possibility to compare the dates
!    --  of the corresponding source sets, using version strings that may be
!    --  of different lengths.
! 
!    Tree_ASIS_Version_Number : Int;
!    --  Used to store the ASIS version number read from a tree file to check if
!    --  it is the same as stored in the ASIS version number in Tree_IO.
  
     -----------------------------------
     -- Modes for Formal Verification --
--- 2192,2200 ----
     --  be in the spec of Expander, but it is referenced by Errout, and it
     --  really seems wrong for Errout to depend on Expander.
  
!    Tagged_Seen : Boolean := False;
!    --  Set True by the parser if the "tagged" reserved word is seen. This is
!    --  needed in Exp_Put_Image (see that package for documentation).
  
     -----------------------------------
     -- Modes for Formal Verification --
*************** private
*** 2426,2432 ****
        Optimize_Alignment             : Character;
        Optimize_Alignment_Local       : Boolean;
        Persistent_BSS_Mode            : Boolean;
-       Polling_Required               : Boolean;
        Prefix_Exception_Messages      : Boolean;
        SPARK_Mode                     : SPARK_Mode_Type;
        SPARK_Mode_Pragma              : Node_Id;
--- 2340,2345 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/osint-b.adb gcc-11.1.0/gcc/ada/osint-b.adb
*** gcc-10.3.0/gcc/ada/osint-b.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/osint-b.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/osint-b.ads gcc-11.1.0/gcc/ada/osint-b.ads
*** gcc-10.3.0/gcc/ada/osint-b.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/osint-b.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/osint-c.adb gcc-11.1.0/gcc/ada/osint-c.adb
*** gcc-10.3.0/gcc/ada/osint-c.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/osint-c.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,30 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Opt;     use Opt;
! with Tree_IO; use Tree_IO;
  
  package body Osint.C is
  
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Opt; use Opt;
  
  package body Osint.C is
  
*************** package body Osint.C is
*** 413,434 ****
           --  Remove extension preparing to replace it
  
           declare
!             Name  : String  := Name_Buffer (1 .. Dot_Index);
!             First : Positive;
  
           begin
!             Name_Buffer (1 .. Output_Object_File_Name'Length) :=
!               Output_Object_File_Name.all;
  
              --  Put two names in canonical case, to allow object file names
              --  with upper-case letters on Windows.
  
              Canonical_Case_File_Name (Name);
!             Canonical_Case_File_Name
!               (Name_Buffer (1 .. Output_Object_File_Name'Length));
  
              Dot_Index := 0;
!             for J in reverse Output_Object_File_Name'Range loop
                 if Name_Buffer (J) = '.' then
                    Dot_Index := J;
                    exit;
--- 412,434 ----
           --  Remove extension preparing to replace it
  
           declare
!             Name   : String  := Name_Buffer (1 .. Dot_Index);
!             Output : String  := Output_Object_File_Name.all;
!             First  : Positive;
  
           begin
!             Name_Buffer (1 .. Output_Object_File_Name'Length) := Output;
  
              --  Put two names in canonical case, to allow object file names
              --  with upper-case letters on Windows.
+             --  Do it with a copy (Output) and keep Name_Buffer as is since we
+             --  want to preserve the original casing.
  
              Canonical_Case_File_Name (Name);
!             Canonical_Case_File_Name (Output);
  
              Dot_Index := 0;
!             for J in reverse Output'Range loop
                 if Name_Buffer (J) = '.' then
                    Dot_Index := J;
                    exit;
*************** package body Osint.C is
*** 452,458 ****
  
              --  Check name of object file is what we expect
  
!             if Name /= Name_Buffer (First .. Dot_Index) then
                 Fail ("incorrect object file name");
              end if;
           end;
--- 452,458 ----
  
              --  Check name of object file is what we expect
  
!             if Name /= Output (First .. Dot_Index) then
                 Fail ("incorrect object file name");
              end if;
           end;
*************** package body Osint.C is
*** 475,488 ****
  
     begin
        --  Make sure that the object file has the expected extension
  
        if NL <= EL
           or else
!           (Name (NL - EL + Name'First .. Name'Last) /= Ext
               and then Name (NL - 2 + Name'First .. Name'Last) /= ".o"
!              and then
!                (not Generate_C_Code
!                   or else Name (NL - 2 + Name'First .. Name'Last) /= ".c"))
        then
           Fail ("incorrect object file extension");
        end if;
--- 475,488 ----
  
     begin
        --  Make sure that the object file has the expected extension
+       --  Allow for either .o or .c (for C code generation)
  
        if NL <= EL
           or else
!           (not Generate_Asm
!              and then Name (NL - EL + Name'First .. Name'Last) /= Ext
               and then Name (NL - 2 + Name'First .. Name'Last) /= ".o"
!              and then Name (NL - 2 + Name'First .. Name'Last) /= ".c")
        then
           Fail ("incorrect object file extension");
        end if;
*************** package body Osint.C is
*** 490,558 ****
        Output_Object_File_Name := new String'(Name);
     end Set_Output_Object_File_Name;
  
-    ----------------
-    -- Tree_Close --
-    ----------------
- 
-    procedure Tree_Close is
-       Status : Boolean;
-    begin
-       Tree_Write_Terminate;
-       Close (Output_FD, Status);
- 
-       if not Status then
-          Fail
-            ("error while closing tree file "
-             & Get_Name_String (Output_File_Name));
-       end if;
-    end Tree_Close;
- 
-    -----------------
-    -- Tree_Create --
-    -----------------
- 
-    procedure Tree_Create is
-       Dot_Index : Natural;
- 
-    begin
-       Get_Name_String (Current_Main);
- 
-       --  If an object file has been specified, then the ALI file
-       --  will be in the same directory as the object file;
-       --  so, we put the tree file in this same directory,
-       --  even though no object file needs to be generated.
- 
-       if Output_Object_File_Name /= null then
-          Name_Len := Output_Object_File_Name'Length;
-          Name_Buffer (1 .. Name_Len) := Output_Object_File_Name.all;
-       end if;
- 
-       Dot_Index := Name_Len + 1;
- 
-       for J in reverse 1 .. Name_Len loop
-          if Name_Buffer (J) = '.' then
-             Dot_Index := J;
-             exit;
-          end if;
-       end loop;
- 
-       --  Should be impossible to not have an extension
- 
-       pragma Assert (Dot_Index /= 0);
- 
-       --  Change extension to adt
- 
-       Name_Buffer (Dot_Index) := '.';
-       Name_Buffer (Dot_Index + 1) := 'a';
-       Name_Buffer (Dot_Index + 2) := 'd';
-       Name_Buffer (Dot_Index + 3) := 't';
-       Name_Buffer (Dot_Index + 4) := ASCII.NUL;
-       Name_Len := Dot_Index + 3;
-       Create_File_And_Check (Output_FD, Binary);
- 
-       Tree_Write_Initialize (Output_FD);
-    end Tree_Create;
- 
     -----------------------
     -- Write_Debug_Info --
     -----------------------
--- 490,495 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/osint-c.ads gcc-11.1.0/gcc/ada/osint-c.ads
*** gcc-10.3.0/gcc/ada/osint-c.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/osint-c.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Osint.C is
*** 197,212 ****
     procedure Close_List_File;
     --  Close file previously opened by Create_List_File
  
-    --------------------------------
-    -- Semantic Tree Input-Output --
-    --------------------------------
- 
-    procedure Tree_Create;
-    --  Creates the tree output file for the source file which is currently
-    --  being compiled (i.e. the file which was most recently returned by
-    --  Next_Main_Source), and initializes Tree_IO.Tree_Write for output.
- 
-    procedure Tree_Close;
-    --  Closes the file previously opened by Tree_Create
- 
  end Osint.C;
--- 197,200 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/osint-l.adb gcc-11.1.0/gcc/ada/osint-l.adb
*** gcc-10.3.0/gcc/ada/osint-l.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/osint-l.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/osint-l.ads gcc-11.1.0/gcc/ada/osint-l.ads
*** gcc-10.3.0/gcc/ada/osint-l.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/osint-l.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/osint-m.adb gcc-11.1.0/gcc/ada/osint-m.adb
*** gcc-10.3.0/gcc/ada/osint-m.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/osint-m.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/osint-m.ads gcc-11.1.0/gcc/ada/osint-m.ads
*** gcc-10.3.0/gcc/ada/osint-m.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/osint-m.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/osint.adb gcc-11.1.0/gcc/ada/osint.adb
*** gcc-10.3.0/gcc/ada/osint.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/osint.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Osint is
*** 100,105 ****
--- 100,109 ----
     --  executable is stored in directory "/foo/bar/bin", this routine returns
     --  "/foo/bar/". Return "" if location is not recognized as described above.
  
+    function File_Names_Equal (File1, File2 : String) return Boolean;
+    --  Compare File1 and File2 taking into account the case insensitivity
+    --  of the OS.
+ 
     function Update_Path (Path : String_Ptr) return String_Ptr;
     --  Update the specified path to replace the prefix with the location where
     --  GNAT is installed. See the file prefix.c in GCC for details.
*************** package body Osint is
*** 852,881 ****
           end if;
  
           if Add_Suffix then
!             declare
!                Buffer : String := Name_Buffer (1 .. Name_Len);
! 
!             begin
!                --  Get the file name in canonical case to accept as is. Names
!                --  end with ".EXE" on Windows.
! 
!                Canonical_Case_File_Name (Buffer);
! 
!                --  If Executable doesn't end with the executable suffix, add it
  
!                if Buffer'Length <= Exec_Suffix'Length
!                  or else
!                    Buffer (Buffer'Last - Exec_Suffix'Length + 1 .. Buffer'Last)
!                      /= Exec_Suffix.all
!                then
!                   Name_Buffer
!                     (Name_Len + 1 .. Name_Len + Exec_Suffix'Length) :=
!                       Exec_Suffix.all;
!                   Name_Len := Name_Len + Exec_Suffix'Length;
!                   Free (Exec_Suffix);
!                   return Name_Find;
!                end if;
!             end;
           end if;
        end if;
  
--- 856,877 ----
           end if;
  
           if Add_Suffix then
!             --  If Executable doesn't end with the executable suffix, add it
  
!             if Name_Len <= Exec_Suffix'Length
!               or else not
!                 File_Names_Equal
!                   (Name_Buffer
!                     (Name_Len - Exec_Suffix'Length + 1 .. Name_Len),
!                    Exec_Suffix.all)
!             then
!                Name_Buffer
!                  (Name_Len + 1 .. Name_Len + Exec_Suffix'Length) :=
!                    Exec_Suffix.all;
!                Name_Len := Name_Len + Exec_Suffix'Length;
!                Free (Exec_Suffix);
!                return Name_Find;
!             end if;
           end if;
        end if;
  
*************** package body Osint is
*** 889,895 ****
     is
        Exec_Suffix    : String_Access;
        Add_Suffix     : Boolean;
-       Canonical_Name : String := Name;
  
     begin
        if Executable_Extension_On_Target = No_Name then
--- 885,890 ----
*************** package body Osint is
*** 909,933 ****
  
           begin
              Free (Exec_Suffix);
-             Canonical_Case_File_Name (Canonical_Name);
- 
              Add_Suffix := True;
              if Only_If_No_Suffix then
!                for J in reverse Canonical_Name'Range loop
!                   if Canonical_Name (J) = '.' then
                       Add_Suffix := False;
                       exit;
  
!                   elsif Is_Directory_Separator (Canonical_Name (J)) then
                       exit;
                    end if;
                 end loop;
              end if;
  
              if Add_Suffix and then
!               (Canonical_Name'Length <= Suffix'Length
!                or else Canonical_Name (Canonical_Name'Last - Suffix'Length + 1
!                                        .. Canonical_Name'Last) /= Suffix)
              then
                 declare
                    Result : String (1 .. Name'Length + Suffix'Length);
--- 904,929 ----
  
           begin
              Free (Exec_Suffix);
              Add_Suffix := True;
+ 
              if Only_If_No_Suffix then
!                for J in reverse Name'Range loop
!                   if Name (J) = '.' then
                       Add_Suffix := False;
                       exit;
  
!                   elsif Is_Directory_Separator (Name (J)) then
                       exit;
                    end if;
                 end loop;
              end if;
  
              if Add_Suffix and then
!               (Name'Length <= Suffix'Length
!                or else not
!                  File_Names_Equal
!                    (Name (Name'Last - Suffix'Length + 1 .. Name'Last),
!                     Suffix))
              then
                 declare
                    Result : String (1 .. Name'Length + Suffix'Length);
*************** package body Osint is
*** 1057,1069 ****
        Exit_Program (E_Fatal);
     end Fail;
  
     ---------------
     -- File_Hash --
     ---------------
  
     function File_Hash (F : File_Name_Type) return File_Hash_Num is
     begin
!       return File_Hash_Num (Int (F) rem File_Hash_Num'Range_Length);
     end File_Hash;
  
     -----------------
--- 1053,1078 ----
        Exit_Program (E_Fatal);
     end Fail;
  
+    ----------------------
+    -- File_Names_Equal --
+    ----------------------
+ 
+    function File_Names_Equal (File1, File2 : String) return Boolean is
+    begin
+       if File_Names_Case_Sensitive then
+          return File1 = File2;
+       else
+          return To_Lower (File1) = To_Lower (File2);
+       end if;
+    end File_Names_Equal;
+ 
     ---------------
     -- File_Hash --
     ---------------
  
     function File_Hash (F : File_Name_Type) return File_Hash_Num is
     begin
!       return File_Hash_Num (Int (F) mod File_Hash_Num'Range_Length);
     end File_Hash;
  
     -----------------
diff -Nrcpad gcc-10.3.0/gcc/ada/osint.ads gcc-11.1.0/gcc/ada/osint.ads
*** gcc-10.3.0/gcc/ada/osint.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/osint.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/output.adb gcc-11.1.0/gcc/ada/output.adb
*** gcc-10.3.0/gcc/ada/output.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/output.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package body Output is
*** 45,50 ****
--- 39,51 ----
     Current_FD : File_Descriptor := Standout;
     --  File descriptor for current output
  
+    type FD_Array is array (Nat range 1 .. 3) of File_Descriptor;
+    FD_Stack     : FD_Array;
+    FD_Stack_Idx : Nat := FD_Array'First - 1;
+    --  Maintain a small stack for Push_Output and Pop_Output. We'd normally
+    --  use Table for this and allow an unlimited depth, but we're the target
+    --  of a pragma Elaborate_All in Table, so we can't use it here.
+ 
     Special_Output_Proc : Output_Proc := null;
     --  Record argument to last call to Set_Special_Output. If this is
     --  non-null, then we are in special output mode.
*************** package body Output is
*** 228,233 ****
--- 229,256 ----
          (Cur_Indentation - Indentation_Amount) mod Indentation_Limit;
     end Outdent;
  
+    ----------------
+    -- Pop_Output --
+    ----------------
+ 
+    procedure Pop_Output is
+    begin
+       pragma Assert (FD_Stack_Idx >= FD_Array'First);
+       Current_FD := FD_Stack (FD_Stack_Idx);
+       FD_Stack_Idx := FD_Stack_Idx - 1;
+    end Pop_Output;
+ 
+    -----------------
+    -- Push_Output --
+    -----------------
+ 
+    procedure Push_Output is
+    begin
+       pragma Assert (FD_Stack_Idx < FD_Array'Last);
+       FD_Stack_Idx := FD_Stack_Idx + 1;
+       FD_Stack (FD_Stack_Idx) := Current_FD;
+    end Push_Output;
+ 
     ---------------------------
     -- Restore_Output_Buffer --
     ---------------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/output.ads gcc-11.1.0/gcc/ada/output.ads
*** gcc-10.3.0/gcc/ada/output.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/output.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Output is
*** 95,100 ****
--- 89,103 ----
     --  output will appear on the given file descriptor only after special
     --  output has been cancelled.
  
+    procedure Push_Output;
+    --  Saves the current output destination on a stack, but leaves it
+    --  unchanged. This subprogram only supports a small stack and is normally
+    --  used with a depth of one.
+ 
+    procedure Pop_Output;
+    --  Changes the current output destination to be the last output destination
+    --  popped using Push_Output.
+ 
     procedure Indent;
     --  Increases the current indentation level. Whenever a line is written
     --  (triggered by Eol), an appropriate amount of whitespace is added to the
diff -Nrcpad gcc-10.3.0/gcc/ada/par-ch10.adb gcc-11.1.0/gcc/ada/par-ch10.adb
*** gcc-10.3.0/gcc/ada/par-ch10.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-ch10.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch10 is
*** 511,517 ****
  
        --  Another error from which it is hard to recover
  
!       if Nkind_In (Unit_Node, N_Subprogram_Body_Stub, N_Package_Body_Stub) then
           Cunit_Error_Flag := True;
           return Error;
        end if;
--- 511,517 ----
  
        --  Another error from which it is hard to recover
  
!       if Nkind (Unit_Node) in N_Subprogram_Body_Stub | N_Package_Body_Stub then
           Cunit_Error_Flag := True;
           return Error;
        end if;
*************** package body Ch10 is
*** 527,536 ****
              Unit_Node := Specification (Unit_Node);
           end if;
  
!          if Nkind_In (Unit_Node, N_Package_Declaration,
!                                  N_Subprogram_Declaration,
!                                  N_Subprogram_Body,
!                                  N_Subprogram_Renaming_Declaration)
           then
              Unit_Node := Specification (Unit_Node);
  
--- 527,536 ----
              Unit_Node := Specification (Unit_Node);
           end if;
  
!          if Nkind (Unit_Node) in N_Package_Declaration
!                                | N_Subprogram_Declaration
!                                | N_Subprogram_Body
!                                | N_Subprogram_Renaming_Declaration
           then
              Unit_Node := Specification (Unit_Node);
  
*************** package body Ch10 is
*** 541,567 ****
              end if;
           end if;
  
!          if Nkind_In (Unit_Node, N_Task_Body,
!                                  N_Protected_Body,
!                                  N_Task_Type_Declaration,
!                                  N_Protected_Type_Declaration,
!                                  N_Single_Task_Declaration,
!                                  N_Single_Protected_Declaration)
           then
              Name_Node := Defining_Identifier (Unit_Node);
  
!          elsif Nkind_In (Unit_Node, N_Function_Instantiation,
!                                     N_Function_Specification,
!                                     N_Generic_Function_Renaming_Declaration,
!                                     N_Generic_Package_Renaming_Declaration,
!                                     N_Generic_Procedure_Renaming_Declaration)
!           or else
!                Nkind_In (Unit_Node, N_Package_Body,
!                                     N_Package_Instantiation,
!                                     N_Package_Renaming_Declaration,
!                                     N_Package_Specification,
!                                     N_Procedure_Instantiation,
!                                     N_Procedure_Specification)
           then
              Name_Node := Defining_Unit_Name (Unit_Node);
  
--- 541,566 ----
              end if;
           end if;
  
!          if Nkind (Unit_Node) in N_Task_Body
!                                | N_Protected_Body
!                                | N_Task_Type_Declaration
!                                | N_Protected_Type_Declaration
!                                | N_Single_Task_Declaration
!                                | N_Single_Protected_Declaration
           then
              Name_Node := Defining_Identifier (Unit_Node);
  
!          elsif Nkind (Unit_Node) in N_Function_Instantiation
!                                   | N_Function_Specification
!                                   | N_Generic_Function_Renaming_Declaration
!                                   | N_Generic_Package_Renaming_Declaration
!                                   | N_Generic_Procedure_Renaming_Declaration
!           or else Nkind (Unit_Node) in N_Package_Body
!                                   | N_Package_Instantiation
!                                   | N_Package_Renaming_Declaration
!                                   | N_Package_Specification
!                                   | N_Procedure_Instantiation
!                                   | N_Procedure_Specification
           then
              Name_Node := Defining_Unit_Name (Unit_Node);
  
*************** package body Ch10 is
*** 862,872 ****
                   ("unexpected LIMITED ignored");
              end if;
  
!             if Ada_Version < Ada_2005 then
!                Error_Msg_SP ("LIMITED WITH is an Ada 2005 extension");
!                Error_Msg_SP
!                  ("\unit must be compiled with -gnat05 switch");
!             end if;
  
           elsif Token = Tok_Private then
              Has_Limited := False;
--- 861,867 ----
                   ("unexpected LIMITED ignored");
              end if;
  
!             Error_Msg_Ada_2005_Extension ("`LIMITED WITH`");
  
           elsif Token = Tok_Private then
              Has_Limited := False;
*************** package body Ch10 is
*** 880,892 ****
  
                 Restore_Scan_State (Scan_State); -- to PRIVATE
                 return Item_List;
- 
-             elsif Ada_Version < Ada_2005 then
-                Error_Msg_SP ("`PRIVATE WITH` is an Ada 2005 extension");
-                Error_Msg_SP
-                  ("\unit must be compiled with -gnat05 switch");
              end if;
  
           else
              Has_Limited := False;
              Has_Private := False;
--- 875,884 ----
  
                 Restore_Scan_State (Scan_State); -- to PRIVATE
                 return Item_List;
              end if;
  
+             Error_Msg_Ada_2005_Extension ("`PRIVATE WITH`");
+ 
           else
              Has_Limited := False;
              Has_Private := False;
diff -Nrcpad gcc-10.3.0/gcc/ada/par-ch11.adb gcc-11.1.0/gcc/ada/par-ch11.adb
*** gcc-10.3.0/gcc/ada/par-ch11.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-ch11.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch11 is
*** 57,83 ****
  
     function P_Handled_Sequence_Of_Statements return Node_Id is
        Handled_Stmt_Seq_Node  : Node_Id;
-       Seq_Is_Hidden_In_SPARK : Boolean;
-       Hidden_Region_Start    : Source_Ptr;
- 
     begin
        Handled_Stmt_Seq_Node :=
          New_Node (N_Handled_Sequence_Of_Statements, Token_Ptr);
- 
-       --  In SPARK, a HIDE directive can be placed at the beginning of a
-       --  package initialization, thus hiding the sequence of statements (and
-       --  possible exception handlers) from SPARK tool-set. No violation of the
-       --  SPARK restriction should be issued on nodes in a hidden part, which
-       --  is obtained by marking such hidden parts.
- 
-       if Token = Tok_SPARK_Hide then
-          Seq_Is_Hidden_In_SPARK := True;
-          Hidden_Region_Start    := Token_Ptr;
-          Scan; -- past HIDE directive
-       else
-          Seq_Is_Hidden_In_SPARK := False;
-       end if;
- 
        Set_Statements
          (Handled_Stmt_Seq_Node, P_Sequence_Of_Statements (SS_Extm_Sreq));
  
--- 57,65 ----
*************** package body Ch11 is
*** 87,96 ****
             (Handled_Stmt_Seq_Node, Parse_Exception_Handlers);
        end if;
  
-       if Seq_Is_Hidden_In_SPARK then
-          Set_Hidden_Part_In_SPARK (Hidden_Region_Start, Token_Ptr);
-       end if;
- 
        return Handled_Stmt_Seq_Node;
     end P_Handled_Sequence_Of_Statements;
  
--- 69,74 ----
*************** package body Ch11 is
*** 249,258 ****
        end if;
  
        if Token = Tok_With then
!          if Ada_Version < Ada_2005 then
!             Error_Msg_SC ("string expression in raise is Ada 2005 extension");
!             Error_Msg_SC ("\unit must be compiled with -gnat05 switch");
!          end if;
  
           Scan; -- past WITH
           Set_Expression (Raise_Node, P_Expression);
--- 227,233 ----
        end if;
  
        if Token = Tok_With then
!          Error_Msg_Ada_2005_Extension ("string expression in raise");
  
           Scan; -- past WITH
           Set_Expression (Raise_Node, P_Expression);
*************** package body Ch11 is
*** 282,305 ****
     function Parse_Exception_Handlers return List_Id is
        Handler                    : Node_Id;
        Handlers_List              : List_Id;
-       Handler_Is_Hidden_In_SPARK : Boolean;
-       Hidden_Region_Start        : Source_Ptr;
  
     begin
-       --  In SPARK, a HIDE directive can be placed at the beginning of a
-       --  sequence of exception handlers for a subprogram implementation, thus
-       --  hiding the exception handlers from SPARK tool-set. No violation of
-       --  the SPARK restriction should be issued on nodes in a hidden part,
-       --  which is obtained by marking such hidden parts.
- 
-       if Token = Tok_SPARK_Hide then
-          Handler_Is_Hidden_In_SPARK := True;
-          Hidden_Region_Start        := Token_Ptr;
-          Scan; -- past HIDE directive
-       else
-          Handler_Is_Hidden_In_SPARK := False;
-       end if;
- 
        Handlers_List := New_List;
        P_Pragmas_Opt (Handlers_List);
  
--- 257,264 ----
*************** package body Ch11 is
*** 320,329 ****
           end loop;
        end if;
  
-       if Handler_Is_Hidden_In_SPARK then
-          Set_Hidden_Part_In_SPARK (Hidden_Region_Start, Token_Ptr);
-       end if;
- 
        return Handlers_List;
     end Parse_Exception_Handlers;
  
--- 279,284 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/par-ch12.adb gcc-11.1.0/gcc/ada/par-ch12.adb
*** gcc-10.3.0/gcc/ada/par-ch12.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-ch12.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch12 is
*** 349,372 ****
        --  Ada 2005: an association can be given by: others => <>
  
        if Token = Tok_Others then
!          if Ada_Version < Ada_2005 then
!             Error_Msg_SP
!               ("partial parameterization of formal packages"
!                & " is an Ada 2005 extension");
!             Error_Msg_SP
!               ("\unit must be compiled with -gnat05 switch");
!          end if;
  
           Scan;  --  past OTHERS
  
           if Token /= Tok_Arrow then
!             Error_Msg_BC  ("expect arrow after others");
           else
              Scan;  --  past arrow
           end if;
  
           if Token /= Tok_Box then
!             Error_Msg_BC ("expect Box after arrow");
           else
              Scan;  --  past box
           end if;
--- 349,367 ----
        --  Ada 2005: an association can be given by: others => <>
  
        if Token = Tok_Others then
!          Error_Msg_Ada_2005_Extension
!            ("partial parameterization of formal package");
  
           Scan;  --  past OTHERS
  
           if Token /= Tok_Arrow then
!             Error_Msg_BC  ("expect `='>` after OTHERS");
           else
              Scan;  --  past arrow
           end if;
  
           if Token /= Tok_Box then
!             Error_Msg_BC ("expect `'<'>` after `='>`");
           else
              Scan;  --  past box
           end if;
*************** package body Ch12 is
*** 428,439 ****
  
     procedure P_Formal_Object_Declarations (Decls : List_Id) is
        Decl_Node        : Node_Id;
!       Ident            : Nat;
        Not_Null_Present : Boolean := False;
!       Num_Idents       : Nat;
        Scan_State       : Saved_Scan_State;
  
!       Idents : array (Int range 1 .. 4096) of Entity_Id;
        --  This array holds the list of defining identifiers. The upper bound
        --  of 4096 is intended to be essentially infinite, and we do not even
        --  bother to check for it being exceeded.
--- 423,434 ----
  
     procedure P_Formal_Object_Declarations (Decls : List_Id) is
        Decl_Node        : Node_Id;
!       Ident            : Pos;
        Not_Null_Present : Boolean := False;
!       Num_Idents       : Pos;
        Scan_State       : Saved_Scan_State;
  
!       Idents : array (Pos range 1 .. 4096) of Entity_Id;
        --  This array holds the list of defining identifiers. The upper bound
        --  of 4096 is intended to be essentially infinite, and we do not even
        --  bother to check for it being exceeded.
*************** package body Ch12 is
*** 478,489 ****
              Set_Access_Definition (Decl_Node,
                P_Access_Definition (Not_Null_Present));
  
!             if Ada_Version < Ada_2005 then
!                Error_Msg_SP
!                  ("access definition not allowed in formal object " &
!                   "declaration");
!                Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
!             end if;
  
           --  Formal object with a subtype mark
  
--- 473,480 ----
              Set_Access_Definition (Decl_Node,
                P_Access_Definition (Not_Null_Present));
  
!             Error_Msg_Ada_2005_Extension
!               ("access definition in formal object declaration");
  
           --  Formal object with a subtype mark
  
*************** package body Ch12 is
*** 923,945 ****
           Set_Limited_Present (Def_Node);
           Scan;  --  past LIMITED
  
!          if Ada_Version < Ada_2005 then
!             Error_Msg_SP
!               ("LIMITED in derived type is an Ada 2005 extension");
!             Error_Msg_SP
!               ("\unit must be compiled with -gnat05 switch");
!          end if;
  
        elsif Token = Tok_Synchronized then
           Set_Synchronized_Present (Def_Node);
           Scan;  --  past SYNCHRONIZED
  
!          if Ada_Version < Ada_2005 then
!             Error_Msg_SP
!               ("SYNCHRONIZED in derived type is an Ada 2005 extension");
!             Error_Msg_SP
!               ("\unit must be compiled with -gnat05 switch");
!          end if;
        end if;
  
        if Token = Tok_Abstract then
--- 914,926 ----
           Set_Limited_Present (Def_Node);
           Scan;  --  past LIMITED
  
!          Error_Msg_Ada_2005_Extension ("LIMITED in derived type");
  
        elsif Token = Tok_Synchronized then
           Set_Synchronized_Present (Def_Node);
           Scan;  --  past SYNCHRONIZED
  
!          Error_Msg_Ada_2005_Extension ("SYNCHRONIZED in derived type");
        end if;
  
        if Token = Tok_Abstract then
*************** package body Ch12 is
*** 955,965 ****
        if Token = Tok_And then
           Scan; -- past AND
  
!          if Ada_Version < Ada_2005 then
!             Error_Msg_SP
!               ("abstract interface is an Ada 2005 extension");
!             Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
!          end if;
  
           Set_Interface_List (Def_Node, New_List);
  
--- 936,942 ----
        if Token = Tok_And then
           Scan; -- past AND
  
!          Error_Msg_Ada_2005_Extension ("abstract interface");
  
           Set_Interface_List (Def_Node, New_List);
  
*************** package body Ch12 is
*** 972,985 ****
  
        if Token = Tok_With then
  
!          if Ada_Version >= Ada_2020 and Token /= Tok_Private then
!             --  Formal type has aspect specifications, parsed later.
!             return Def_Node;
! 
!          else
              Scan; -- past WITH
              Set_Private_Present (Def_Node, True);
              T_Private;
           end if;
  
        elsif Token = Tok_Tagged then
--- 949,969 ----
  
        if Token = Tok_With then
  
!          if Next_Token_Is (Tok_Private) then
              Scan; -- past WITH
              Set_Private_Present (Def_Node, True);
              T_Private;
+          else
+             --  Formal type has aspect specifications, parsed later.
+             --  Otherwise this is a formal derived type. Note that it may
+             --  also include later aspect specifications, as in:
+ 
+             --    type DT is new T with private with Atomic;
+ 
+             Error_Msg_Ada_2020_Feature
+               ("formal type with aspect specification", Token_Ptr);
+ 
+             return Def_Node;
           end if;
  
        elsif Token = Tok_Tagged then
*************** package body Ch12 is
*** 1184,1194 ****
                New_Node (N_Formal_Abstract_Subprogram_Declaration, Prev_Sloc);
              Scan; -- past ABSTRACT
  
!             if Ada_Version < Ada_2005 then
!                Error_Msg_SP
!                  ("formal abstract subprograms are an Ada 2005 extension");
!                Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
!             end if;
  
           else
              Def_Node :=
--- 1168,1174 ----
                New_Node (N_Formal_Abstract_Subprogram_Declaration, Prev_Sloc);
              Scan; -- past ABSTRACT
  
!             Error_Msg_Ada_2005_Extension ("formal abstract subprogram");
  
           else
              Def_Node :=
*************** package body Ch12 is
*** 1208,1218 ****
              Scan; -- past <>
  
           elsif Token = Tok_Null then
!             if Ada_Version < Ada_2005 then
!                Error_Msg_SP
!                  ("null default subprograms are an Ada 2005 extension");
!                Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
!             end if;
  
              if Nkind (Spec_Node) = N_Procedure_Specification then
                 Set_Null_Present (Spec_Node);
--- 1188,1194 ----
              Scan; -- past <>
  
           elsif Token = Tok_Null then
!             Error_Msg_Ada_2005_Extension ("null default subprogram");
  
              if Nkind (Spec_Node) = N_Procedure_Specification then
                 Set_Null_Present (Spec_Node);
diff -Nrcpad gcc-10.3.0/gcc/ada/par-ch13.adb gcc-11.1.0/gcc/ada/par-ch13.adb
*** gcc-10.3.0/gcc/ada/par-ch13.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-ch13.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,30 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Rident;    use Rident;
+ with Restrict; use Restrict;
  pragma Style_Checks (All_Checks);
  --  Turn off subprogram body ordering check. Subprograms are in order
  --  by RM section rather than alphabetical
*************** package body Ch13 is
*** 153,161 ****
              Result := True;
           else
              Scan; -- past identifier
!             Result := Token = Tok_Arrow or else
!                       Token = Tok_Comma or else
!                       Token = Tok_Semicolon;
           end if;
  
        --  If earlier than Ada 2012, check for valid aspect identifier (possibly
--- 155,162 ----
              Result := True;
           else
              Scan; -- past identifier
!             Result := Token in
!               Tok_Arrow | Tok_Comma | Tok_Is | Tok_Semicolon | Tok_Right_Paren;
           end if;
  
        --  If earlier than Ada 2012, check for valid aspect identifier (possibly
*************** package body Ch13 is
*** 178,184 ****
              --  defaulted True value. Further checks when analyzing aspect
              --  specification, which may include further aspects.
  
!             elsif Token = Tok_Comma or else Token = Tok_Semicolon then
                 Result := True;
  
              elsif Token = Tok_Apostrophe then
--- 179,185 ----
              --  defaulted True value. Further checks when analyzing aspect
              --  specification, which may include further aspects.
  
!             elsif Token in Tok_Comma | Tok_Semicolon then
                 Result := True;
  
              elsif Token = Tok_Apostrophe then
*************** package body Ch13 is
*** 265,283 ****
           --  The aspect mark is not recognized
  
           if A_Id = No_Aspect then
!             Error_Msg_N ("& is not a valid aspect identifier", Token_Node);
!             OK := False;
  
!             --  Check bad spelling
  
!             for J in Aspect_Id_Exclude_No_Aspect loop
!                if Is_Bad_Spelling_Of (Token_Name, Aspect_Names (J)) then
!                   Error_Msg_Name_1 := Aspect_Names (J);
!                   Error_Msg_N -- CODEFIX
!                     ("\possible misspelling of%", Token_Node);
!                   exit;
                 end if;
!             end loop;
  
              Scan; -- past incorrect identifier
  
--- 266,293 ----
           --  The aspect mark is not recognized
  
           if A_Id = No_Aspect then
!             declare
!                Msg_Issued : Boolean := False;
!             begin
!                Check_Restriction (Msg_Issued, No_Unrecognized_Aspects, Aspect);
!                if not Msg_Issued then
!                   Error_Msg_Warn := not Debug_Flag_2;
!                   Error_Msg_N
!                     ("<<& is not a valid aspect identifier", Token_Node);
!                   OK := False;
  
!                   --  Check bad spelling
  
!                   for J in Aspect_Id_Exclude_No_Aspect loop
!                      if Is_Bad_Spelling_Of (Token_Name, Aspect_Names (J)) then
!                         Error_Msg_Name_1 := Aspect_Names (J);
!                         Error_Msg_N -- CODEFIX
!                           ("\<<possible misspelling of%", Token_Node);
!                         exit;
!                      end if;
!                   end loop;
                 end if;
!             end;
  
              Scan; -- past incorrect identifier
  
*************** package body Ch13 is
*** 957,963 ****
           --  If Decl is Error, we ignore the aspects, and issue a message
  
           elsif Decl = Error
!             or else not Permits_Aspect_Specifications (Decl)
           then
              Error_Msg ("aspect specifications not allowed here", Ptr);
  
--- 967,973 ----
           --  If Decl is Error, we ignore the aspects, and issue a message
  
           elsif Decl = Error
!            or else not Permits_Aspect_Specifications (Decl)
           then
              Error_Msg ("aspect specifications not allowed here", Ptr);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/par-ch2.adb gcc-11.1.0/gcc/ada/par-ch2.adb
*** gcc-10.3.0/gcc/ada/par-ch2.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-ch2.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch2 is
*** 324,331 ****
                (Identifier_Seen   => Identifier_Seen,
                 Association       => Assoc_Node,
                 Reserved_Words_OK =>
!                  Nam_In (Prag_Name, Name_Restriction_Warnings,
!                                     Name_Restrictions));
  
              if Arg_Count = 2 and then Import_Check_Required then
                 --  Here is where we cancel the SIS active status if this pragma
--- 324,330 ----
                (Identifier_Seen   => Identifier_Seen,
                 Association       => Assoc_Node,
                 Reserved_Words_OK =>
!                  Prag_Name in Name_Restriction_Warnings | Name_Restrictions);
  
              if Arg_Count = 2 and then Import_Check_Required then
                 --  Here is where we cancel the SIS active status if this pragma
*************** package body Ch2 is
*** 444,450 ****
           P := P_Pragma;
  
           if Nkind (P) /= N_Error
!            and then Nam_In (Pragma_Name_Unmapped (P), Name_Assert, Name_Debug)
           then
              Error_Msg_Name_1 := Pragma_Name_Unmapped (P);
              Error_Msg_N
--- 443,449 ----
           P := P_Pragma;
  
           if Nkind (P) /= N_Error
!            and then Pragma_Name_Unmapped (P) in Name_Assert | Name_Debug
           then
              Error_Msg_Name_1 := Pragma_Name_Unmapped (P);
              Error_Msg_N
diff -Nrcpad gcc-10.3.0/gcc/ada/par-ch3.adb gcc-11.1.0/gcc/ada/par-ch3.adb
*** gcc-10.3.0/gcc/ada/par-ch3.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-ch3.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch3 is
*** 78,95 ****
     --  it very unlikely that this will ever arise in practice.
  
     procedure P_Declarative_Items
!      (Decls   : List_Id;
!       Done    : out Boolean;
!       In_Spec : Boolean);
     --  Scans out a single declarative item, or, in the case of a declaration
     --  with a list of identifiers, a list of declarations, one for each of the
     --  identifiers in the list. The declaration or declarations scanned are
     --  appended to the given list. Done indicates whether or not there may be
     --  additional declarative items to scan. If Done is True, then a decision
     --  has been made that there are no more items to scan. If Done is False,
!    --  then there may be additional declarations to scan. In_Spec is true if
!    --  we are scanning a package declaration, and is used to generate an
!    --  appropriate message if a statement is encountered in such a context.
  
     procedure P_Identifier_Declarations
       (Decls   : List_Id;
--- 78,101 ----
     --  it very unlikely that this will ever arise in practice.
  
     procedure P_Declarative_Items
!      (Decls              : List_Id;
!       Done               : out Boolean;
!       Declare_Expression : Boolean;
!       In_Spec            : Boolean);
     --  Scans out a single declarative item, or, in the case of a declaration
     --  with a list of identifiers, a list of declarations, one for each of the
     --  identifiers in the list. The declaration or declarations scanned are
     --  appended to the given list. Done indicates whether or not there may be
     --  additional declarative items to scan. If Done is True, then a decision
     --  has been made that there are no more items to scan. If Done is False,
!    --  then there may be additional declarations to scan.
!    --
!    --  Declare_Expression is true if we are parsing a declare_expression, in
!    --  which case we want to suppress certain style checking.
!    --
!    --  In_Spec is true if we are scanning a package declaration, and is used to
!    --  generate an appropriate message if a statement is encountered in such a
!    --  context.
  
     procedure P_Identifier_Declarations
       (Decls   : List_Id;
*************** package body Ch3 is
*** 117,127 ****
  
     procedure Check_Restricted_Expression (N : Node_Id) is
     begin
!       if Nkind_In (N, N_Op_And, N_Op_Or, N_Op_Xor, N_And_Then, N_Or_Else) then
           Check_Restricted_Expression (Left_Opnd (N));
           Check_Restricted_Expression (Right_Opnd (N));
  
!       elsif Nkind_In (N, N_In, N_Not_In)
          and then Paren_Count (N) = 0
        then
           Error_Msg_N ("|this expression must be parenthesized!", N);
--- 123,134 ----
  
     procedure Check_Restricted_Expression (N : Node_Id) is
     begin
!       if Nkind (N) in N_Op_And | N_Op_Or | N_Op_Xor | N_And_Then | N_Or_Else
!       then
           Check_Restricted_Expression (Left_Opnd (N));
           Check_Restricted_Expression (Right_Opnd (N));
  
!       elsif Nkind (N) in N_In | N_Not_In
          and then Paren_Count (N) = 0
        then
           Error_Msg_N ("|this expression must be parenthesized!", N);
*************** package body Ch3 is
*** 683,694 ****
                    --  Ada 2005 (AI-419): LIMITED NEW
  
                 elsif Token = Tok_New then
!                   if Ada_Version < Ada_2005 then
!                      Error_Msg_SP
!                        ("LIMITED in derived type is an Ada 2005 extension");
!                      Error_Msg_SP
!                        ("\unit must be compiled with -gnat05 switch");
!                   end if;
  
                    Typedef_Node := P_Derived_Type_Def_Or_Private_Ext_Decl;
                    Set_Limited_Present (Typedef_Node);
--- 690,696 ----
                    --  Ada 2005 (AI-419): LIMITED NEW
  
                 elsif Token = Tok_New then
!                   Error_Msg_Ada_2005_Extension ("LIMITED in derived type");
  
                    Typedef_Node := P_Derived_Type_Def_Or_Private_Ext_Decl;
                    Set_Limited_Present (Typedef_Node);
*************** package body Ch3 is
*** 912,918 ****
  
           if Unknown_Dis then
              Error_Msg
!               ("Full type declaration cannot have unknown discriminants",
                  Discr_Sloc);
           end if;
        end if;
--- 914,920 ----
  
           if Unknown_Dis then
              Error_Msg
!               ("full type declaration cannot have unknown discriminants",
                  Discr_Sloc);
           end if;
        end if;
*************** package body Ch3 is
*** 1049,1055 ****
           --  otherwise things are really messed up, so resynchronize.
  
           if Token = Tok_Record then
!             Error_Msg_SC ("anonymous record definitions are not permitted");
              Discard_Junk_Node (P_Record_Definition);
              return Error;
  
--- 1051,1057 ----
           --  otherwise things are really messed up, so resynchronize.
  
           if Token = Tok_Record then
!             Error_Msg_SC ("anonymous record definition not permitted");
              Discard_Junk_Node (P_Record_Definition);
              return Error;
  
*************** package body Ch3 is
*** 1480,1485 ****
--- 1482,1510 ----
           Done := False;
           return;
  
+       --  AI12-0275: Object renaming declaration without subtype_mark or
+       --  access_definition
+ 
+       elsif Token = Tok_Renames then
+          Error_Msg_Ada_2020_Feature
+            ("object renaming without subtype", Token_Ptr);
+ 
+          Scan; -- past renames
+ 
+          Decl_Node :=
+            New_Node (N_Object_Renaming_Declaration, Ident_Sloc);
+          Set_Name (Decl_Node, P_Name);
+          Set_Defining_Identifier (Decl_Node, Idents (1));
+ 
+          P_Aspect_Specifications (Decl_Node, Semicolon => False);
+ 
+          T_Semicolon;
+ 
+          Append (Decl_Node, Decls);
+          Done := False;
+ 
+          return;
+ 
        --  Otherwise we have an error situation
  
        else
*************** package body Ch3 is
*** 1638,1650 ****
                    Set_Null_Exclusion_Present (Decl_Node, Not_Null_Present);
  
                    if Token = Tok_Access then
!                      if Ada_Version < Ada_2005 then
!                         Error_Msg_SP
!                           ("generalized use of anonymous access types " &
!                            "is an Ada 2005 extension");
!                         Error_Msg_SP
!                           ("\unit must be compiled with -gnat05 switch");
!                      end if;
  
                       Set_Object_Definition
                         (Decl_Node, P_Access_Definition (Not_Null_Present));
--- 1663,1670 ----
                    Set_Null_Exclusion_Present (Decl_Node, Not_Null_Present);
  
                    if Token = Tok_Access then
!                      Error_Msg_Ada_2005_Extension
!                        ("generalized use of anonymous access types");
  
                       Set_Object_Definition
                         (Decl_Node, P_Access_Definition (Not_Null_Present));
*************** package body Ch3 is
*** 1701,1713 ****
                 --  Access definition (AI-406) or subtype indication
  
                 if Token = Tok_Access then
!                   if Ada_Version < Ada_2005 then
!                      Error_Msg_SP
!                        ("generalized use of anonymous access types " &
!                         "is an Ada 2005 extension");
!                      Error_Msg_SP
!                        ("\unit must be compiled with -gnat05 switch");
!                   end if;
  
                    Set_Object_Definition
                      (Decl_Node, P_Access_Definition (Not_Null_Present));
--- 1721,1728 ----
                 --  Access definition (AI-406) or subtype indication
  
                 if Token = Tok_Access then
!                   Error_Msg_Ada_2005_Extension
!                     ("generalized use of anonymous access types");
  
                    Set_Object_Definition
                      (Decl_Node, P_Access_Definition (Not_Null_Present));
*************** package body Ch3 is
*** 1746,1757 ****
              Not_Null_Present := P_Null_Exclusion;  --  Ada 2005 (AI-231/423)
  
              if Token = Tok_Access then
!                if Ada_Version < Ada_2005 then
!                   Error_Msg_SP
!                     ("generalized use of anonymous access types " &
!                      "is an Ada 2005 extension");
!                   Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
!                end if;
  
                 Acc_Node := P_Access_Definition (Not_Null_Present);
  
--- 1761,1768 ----
              Not_Null_Present := P_Null_Exclusion;  --  Ada 2005 (AI-231/423)
  
              if Token = Tok_Access then
!                Error_Msg_Ada_2005_Extension
!                  ("generalized use of anonymous access types");
  
                 Acc_Node := P_Access_Definition (Not_Null_Present);
  
*************** package body Ch3 is
*** 1817,1828 ****
           --  Ada 2005 (AI-230): Access Definition case
  
           elsif Token = Tok_Access then
!             if Ada_Version < Ada_2005 then
!                Error_Msg_SP
!                  ("generalized use of anonymous access types " &
!                   "is an Ada 2005 extension");
!                Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
!             end if;
  
              Acc_Node := P_Access_Definition (Null_Exclusion_Present => False);
  
--- 1828,1835 ----
           --  Ada 2005 (AI-230): Access Definition case
  
           elsif Token = Tok_Access then
!             Error_Msg_Ada_2005_Extension
!               ("generalized use of anonymous access types");
  
              Acc_Node := P_Access_Definition (Null_Exclusion_Present => False);
  
*************** package body Ch3 is
*** 2030,2040 ****
        if Token = Tok_And then
           Scan; -- past AND
  
!          if Ada_Version < Ada_2005 then
!             Error_Msg_SP
!               ("abstract interface is an Ada 2005 extension");
!             Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
!          end if;
  
           Set_Interface_List (Typedef_Node, New_List);
  
--- 2037,2043 ----
        if Token = Tok_And then
           Scan; -- past AND
  
!          Error_Msg_Ada_2005_Extension ("abstract interface");
  
           Set_Interface_List (Typedef_Node, New_List);
  
*************** package body Ch3 is
*** 2424,2430 ****
  
     begin
        if Ada_Version = Ada_83 then
!          Error_Msg_SC ("(Ada 83): modular types not allowed");
        end if;
  
        Typedef_Node := New_Node (N_Modular_Type_Definition, Token_Ptr);
--- 2427,2433 ----
  
     begin
        if Ada_Version = Ada_83 then
!          Error_Msg_SC ("(Ada 83) modular types not allowed");
        end if;
  
        Typedef_Node := New_Node (N_Modular_Type_Definition, Token_Ptr);
*************** package body Ch3 is
*** 2762,2773 ****
        --  Ada 2005 (AI-230): Access Definition case
  
        if Token = Tok_Access then
!          if Ada_Version < Ada_2005 then
!             Error_Msg_SP
!               ("generalized use of anonymous access types " &
!                "is an Ada 2005 extension");
!             Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
!          end if;
  
           --  AI95-406 makes "aliased" legal (and useless) in this context so
           --  followintg code which used to be needed is commented out.
--- 2765,2772 ----
        --  Ada 2005 (AI-230): Access Definition case
  
        if Token = Tok_Access then
!          Error_Msg_Ada_2005_Extension
!            ("generalized use of anonymous access types");
  
           --  AI95-406 makes "aliased" legal (and useless) in this context so
           --  followintg code which used to be needed is commented out.
*************** package body Ch3 is
*** 2777,2783 ****
           --  end if;
  
           Set_Subtype_Indication     (CompDef_Node, Empty);
!          Set_Aliased_Present        (CompDef_Node, False);
           Set_Access_Definition      (CompDef_Node,
             P_Access_Definition (Not_Null_Present));
        else
--- 2776,2782 ----
           --  end if;
  
           Set_Subtype_Indication     (CompDef_Node, Empty);
!          Set_Aliased_Present        (CompDef_Node, Aliased_Present);
           Set_Access_Definition      (CompDef_Node,
             P_Access_Definition (Not_Null_Present));
        else
*************** package body Ch3 is
*** 2969,2977 ****
  
     --  DISCRIMINANT_SPECIFICATION ::=
     --    DEFINING_IDENTIFIER_LIST : [NULL_EXCLUSION] SUBTYPE_MARK
!    --      [:= DEFAULT_EXPRESSION]
     --  | DEFINING_IDENTIFIER_LIST : ACCESS_DEFINITION
!    --      [:= DEFAULT_EXPRESSION]
  
     --  If no known discriminant part is present, then No_List is returned
  
--- 2968,2976 ----
  
     --  DISCRIMINANT_SPECIFICATION ::=
     --    DEFINING_IDENTIFIER_LIST : [NULL_EXCLUSION] SUBTYPE_MARK
!    --      [:= DEFAULT_EXPRESSION] [ASPECT_SPECIFICATION]
     --  | DEFINING_IDENTIFIER_LIST : ACCESS_DEFINITION
!    --      [:= DEFAULT_EXPRESSION] [ASPECT_SPECIFICATION]
  
     --  If no known discriminant part is present, then No_List is returned
  
*************** package body Ch3 is
*** 3065,3070 ****
--- 3064,3073 ----
                 Set_Expression
                   (Specification_Node, Init_Expr_Opt (True));
  
+                if Token = Tok_With then
+                   P_Aspect_Specifications (Specification_Node, False);
+                end if;
+ 
                 if Ident > 1 then
                    Set_Prev_Ids (Specification_Node, True);
                 end if;
*************** package body Ch3 is
*** 3551,3557 ****
              Set_Defining_Identifier (Decl_Node, Idents (Ident));
  
              if Token = Tok_Constant then
!                Error_Msg_SC ("constant components are not permitted");
                 Scan;
              end if;
  
--- 3554,3560 ----
              Set_Defining_Identifier (Decl_Node, Idents (Ident));
  
              if Token = Tok_Constant then
!                Error_Msg_SC ("constant component not permitted");
                 Scan;
              end if;
  
*************** package body Ch3 is
*** 3571,3582 ****
              --  Ada 2005 (AI-230): Access Definition case
  
              if Token = Tok_Access then
!                if Ada_Version < Ada_2005 then
!                   Error_Msg_SP
!                     ("generalized use of anonymous access types " &
!                      "is an Ada 2005 extension");
!                   Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
!                end if;
  
                 --  AI95-406 makes "aliased" legal (and useless) here, so the
                 --  following code which used to be required is commented out.
--- 3574,3581 ----
              --  Ada 2005 (AI-230): Access Definition case
  
              if Token = Tok_Access then
!                Error_Msg_Ada_2005_Extension
!                  ("generalized use of anonymous access types");
  
                 --  AI95-406 makes "aliased" legal (and useless) here, so the
                 --  following code which used to be required is commented out.
*************** package body Ch3 is
*** 3596,3602 ****
                 Set_Null_Exclusion_Present (CompDef_Node, Not_Null_Present);
  
                 if Token = Tok_Array then
!                   Error_Msg_SC ("anonymous arrays not allowed as components");
                    raise Error_Resync;
                 end if;
  
--- 3595,3601 ----
                 Set_Null_Exclusion_Present (CompDef_Node, Not_Null_Present);
  
                 if Token = Tok_Array then
!                   Error_Msg_SC ("anonymous array not allowed as component");
                    raise Error_Resync;
                 end if;
  
*************** package body Ch3 is
*** 3916,3925 ****
        Typedef_Node : Node_Id;
  
     begin
!       if Ada_Version < Ada_2005 then
!          Error_Msg_SP ("abstract interface is an Ada 2005 extension");
!          Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
!       end if;
  
        if Abstract_Present then
           Error_Msg_SP
--- 3915,3921 ----
        Typedef_Node : Node_Id;
  
     begin
!       Error_Msg_Ada_2005_Extension ("abstract interface");
  
        if Abstract_Present then
           Error_Msg_SP
*************** package body Ch3 is
*** 4106,4116 ****
           --  Ada 2005 (AI-318-02)
  
           if Token = Tok_Access then
!             if Ada_Version < Ada_2005 then
!                Error_Msg_SC
!                  ("anonymous access result type is an Ada 2005 extension");
!                Error_Msg_SC ("\unit must be compiled with -gnat05 switch");
!             end if;
  
              Result_Node := P_Access_Definition (Result_Not_Null);
  
--- 4102,4108 ----
           --  Ada 2005 (AI-318-02)
  
           if Token = Tok_Access then
!             Error_Msg_Ada_2005_Extension ("anonymous access result type");
  
              Result_Node := P_Access_Definition (Result_Not_Null);
  
*************** package body Ch3 is
*** 4208,4217 ****
          or else Token = Tok_Procedure
          or else Token = Tok_Function
        then
!          if Ada_Version < Ada_2005 then
!             Error_Msg_SP ("access-to-subprogram is an Ada 2005 extension");
!             Error_Msg_SP ("\unit should be compiled with -gnat05 switch");
!          end if;
  
           Subp_Node := P_Access_Type_Definition (Header_Already_Parsed => True);
           Set_Null_Exclusion_Present (Subp_Node, Null_Exclusion_Present);
--- 4200,4206 ----
          or else Token = Tok_Procedure
          or else Token = Tok_Function
        then
!          Error_Msg_Ada_2005_Extension ("access-to-subprogram");
  
           Subp_Node := P_Access_Type_Definition (Header_Already_Parsed => True);
           Set_Null_Exclusion_Present (Subp_Node, Null_Exclusion_Present);
*************** package body Ch3 is
*** 4226,4242 ****
           if Token = Tok_All then
              if Ada_Version < Ada_2005 then
                 Error_Msg_SP
!                  ("ALL is not permitted for anonymous access types");
              end if;
  
              Scan; -- past ALL
              Set_All_Present (Def_Node);
  
           elsif Token = Tok_Constant then
!             if Ada_Version < Ada_2005 then
!                Error_Msg_SP ("access-to-constant is an Ada 2005 extension");
!                Error_Msg_SP ("\unit should be compiled with -gnat05 switch");
!             end if;
  
              Scan; -- past CONSTANT
              Set_Constant_Present (Def_Node);
--- 4215,4228 ----
           if Token = Tok_All then
              if Ada_Version < Ada_2005 then
                 Error_Msg_SP
!                  ("ALL not permitted for anonymous access type");
              end if;
  
              Scan; -- past ALL
              Set_All_Present (Def_Node);
  
           elsif Token = Tok_Constant then
!             Error_Msg_Ada_2005_Extension ("access-to-constant");
  
              Scan; -- past CONSTANT
              Set_Constant_Present (Def_Node);
*************** package body Ch3 is
*** 4284,4290 ****
        --  Loop to scan out the declarations
  
        loop
!          P_Declarative_Items (Decls, Done, In_Spec => False);
           exit when Done;
        end loop;
  
--- 4270,4277 ----
        --  Loop to scan out the declarations
  
        loop
!          P_Declarative_Items
!            (Decls, Done, Declare_Expression => False, In_Spec => False);
           exit when Done;
        end loop;
  
*************** package body Ch3 is
*** 4311,4326 ****
     --  then the scan is set past the next semicolon and Error is returned.
  
     procedure P_Declarative_Items
!      (Decls   : List_Id;
!       Done    : out Boolean;
!       In_Spec : Boolean)
     is
        Scan_State : Saved_Scan_State;
  
     begin
        Done := False;
  
!       if Style_Check then
           Style.Check_Indentation;
        end if;
  
--- 4298,4317 ----
     --  then the scan is set past the next semicolon and Error is returned.
  
     procedure P_Declarative_Items
!      (Decls              : List_Id;
!       Done               : out Boolean;
!       Declare_Expression : Boolean;
!       In_Spec            : Boolean)
     is
        Scan_State : Saved_Scan_State;
  
     begin
        Done := False;
  
!       --  In -gnatg mode, we don't want a "bad indentation" error inside a
!       --  declare_expression.
! 
!       if Style_Check and not Declare_Expression then
           Style.Check_Indentation;
        end if;
  
*************** package body Ch3 is
*** 4676,4682 ****
     --  the scan pointer is repositioned past the next semicolon, and the scan
     --  for declarative items continues.
  
!    function P_Basic_Declarative_Items return List_Id is
        Decl  : Node_Id;
        Decls : List_Id;
        Kind  : Node_Kind;
--- 4667,4675 ----
     --  the scan pointer is repositioned past the next semicolon, and the scan
     --  for declarative items continues.
  
!    function P_Basic_Declarative_Items
!      (Declare_Expression : Boolean) return List_Id
!    is
        Decl  : Node_Id;
        Decls : List_Id;
        Kind  : Node_Kind;
*************** package body Ch3 is
*** 4699,4705 ****
        Decls := New_List;
  
        loop
!          P_Declarative_Items (Decls, Done, In_Spec => True);
           exit when Done;
        end loop;
  
--- 4692,4699 ----
        Decls := New_List;
  
        loop
!          P_Declarative_Items
!            (Decls, Done, Declare_Expression, In_Spec => True);
           exit when Done;
        end loop;
  
*************** package body Ch3 is
*** 4724,4735 ****
              Kind = N_Task_Body       or else
              Kind = N_Protected_Body
           then
!             Error_Msg ("proper body not allowed in package spec", Sloc (Decl));
  
              --  Complete declaration of mangled subprogram body, for better
              --  recovery if analysis is attempted.
  
!             if Nkind_In (Decl, N_Subprogram_Body, N_Package_Body, N_Task_Body)
                and then No (Handled_Statement_Sequence (Decl))
              then
                 Set_Handled_Statement_Sequence (Decl,
--- 4718,4737 ----
              Kind = N_Task_Body       or else
              Kind = N_Protected_Body
           then
!             if Declare_Expression then
!                Error_Msg
!                  ("proper body not allowed in declare_expression",
!                   Sloc (Decl));
!             else
!                Error_Msg
!                  ("proper body not allowed in package spec",
!                   Sloc (Decl));
!             end if;
  
              --  Complete declaration of mangled subprogram body, for better
              --  recovery if analysis is attempted.
  
!             if Nkind (Decl) in N_Subprogram_Body | N_Package_Body | N_Task_Body
                and then No (Handled_Statement_Sequence (Decl))
              then
                 Set_Handled_Statement_Sequence (Decl,
*************** package body Ch3 is
*** 4745,4751 ****
           elsif Kind = N_Assignment_Statement then
              Error_Msg
                ("assignment statement not allowed in package spec",
!                  Sloc (Decl));
           end if;
  
           Next (Decl);
--- 4747,4753 ----
           elsif Kind = N_Assignment_Statement then
              Error_Msg
                ("assignment statement not allowed in package spec",
!                Sloc (Decl));
           end if;
  
           Next (Decl);
*************** package body Ch3 is
*** 4791,4797 ****
        Dummy_Done : Boolean;
        pragma Warnings (Off, Dummy_Done);
     begin
!       P_Declarative_Items (S, Dummy_Done, False);
     end Skip_Declaration;
  
     -----------------------------------------
--- 4793,4800 ----
        Dummy_Done : Boolean;
        pragma Warnings (Off, Dummy_Done);
     begin
!       P_Declarative_Items
!         (S, Dummy_Done, Declare_Expression => False, In_Spec => False);
     end Skip_Declaration;
  
     -----------------------------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/par-ch4.adb gcc-11.1.0/gcc/ada/par-ch4.adb
*** gcc-10.3.0/gcc/ada/par-ch4.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-ch4.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch4 is
*** 51,57 ****
     --  or a type. For those attributes, a left parenthesis after the attribute
     --  should not be analyzed as the beginning of a parameters list because it
     --  may denote a slice operation (X'Img (1 .. 2)) or a type conversion
!    --  (X'Class (Y)). The Ada 2012 attribute 'Old is in this category.
  
     --  Note: Loop_Entry is in this list because, although it can take an
     --  optional argument (the loop name), we can't distinguish that at parse
--- 51,57 ----
     --  or a type. For those attributes, a left parenthesis after the attribute
     --  should not be analyzed as the beginning of a parameters list because it
     --  may denote a slice operation (X'Img (1 .. 2)) or a type conversion
!    --  (X'Class (Y)).
  
     --  Note: Loop_Entry is in this list because, although it can take an
     --  optional argument (the loop name), we can't distinguish that at parse
*************** package body Ch4 is
*** 72,94 ****
     -- Local Subprograms --
     -----------------------
  
!    function P_Aggregate_Or_Paren_Expr                 return Node_Id;
!    function P_Allocator                               return Node_Id;
!    function P_Case_Expression_Alternative             return Node_Id;
!    function P_Iterated_Component_Association          return Node_Id;
!    function P_Record_Or_Array_Component_Association   return Node_Id;
!    function P_Factor                                  return Node_Id;
!    function P_Primary                                 return Node_Id;
!    function P_Relation                                return Node_Id;
!    function P_Term                                    return Node_Id;
     function P_Reduction_Attribute_Reference (S : Node_Id)
        return Node_Id;
  
!    function P_Binary_Adding_Operator                  return Node_Kind;
!    function P_Logical_Operator                        return Node_Kind;
!    function P_Multiplying_Operator                    return Node_Kind;
!    function P_Relational_Operator                     return Node_Kind;
!    function P_Unary_Adding_Operator                   return Node_Kind;
  
     procedure Bad_Range_Attribute (Loc : Source_Ptr);
     --  Called to place complaint about bad range attribute at the given
--- 72,95 ----
     -- Local Subprograms --
     -----------------------
  
!    function P_Aggregate_Or_Paren_Expr               return Node_Id;
!    function P_Allocator                             return Node_Id;
!    function P_Case_Expression_Alternative           return Node_Id;
!    function P_Iterated_Component_Association        return Node_Id;
!    function P_Record_Or_Array_Component_Association return Node_Id;
!    function P_Factor                                return Node_Id;
!    function P_Primary                               return Node_Id;
!    function P_Relation                              return Node_Id;
!    function P_Term                                  return Node_Id;
!    function P_Declare_Expression                    return Node_Id;
     function P_Reduction_Attribute_Reference (S : Node_Id)
        return Node_Id;
  
!    function P_Binary_Adding_Operator                return Node_Kind;
!    function P_Logical_Operator                      return Node_Kind;
!    function P_Multiplying_Operator                  return Node_Kind;
!    function P_Relational_Operator                   return Node_Kind;
!    function P_Unary_Adding_Operator                 return Node_Kind;
  
     procedure Bad_Range_Attribute (Loc : Source_Ptr);
     --  Called to place complaint about bad range attribute at the given
*************** package body Ch4 is
*** 107,117 ****
     --  prefix. The current token is known to be an apostrophe and the
     --  following token is known to be RANGE.
  
!    function P_Unparen_Cond_Case_Quant_Expression return Node_Id;
!    --  This function is called with Token pointing to IF, CASE, or FOR, in a
!    --  context that allows a case, conditional, or quantified expression if
!    --  it is surrounded by parentheses. If not surrounded by parentheses, the
!    --  expression is still returned, but an error message is issued.
  
     -------------------------
     -- Bad_Range_Attribute --
--- 108,125 ----
     --  prefix. The current token is known to be an apostrophe and the
     --  following token is known to be RANGE.
  
!    function P_Case_Expression return Node_Id;
!    --  Scans out a case expression. Called with Token pointing to the CASE
!    --  keyword, and returns pointing to the terminating right parent,
!    --  semicolon, or comma, but does not consume this terminating token.
! 
!    function P_Unparen_Cond_Expr_Etc return Node_Id;
!    --  This function is called with Token pointing to IF, CASE, FOR, or
!    --  DECLARE, in a context that allows a conditional (if or case) expression,
!    --  a quantified expression, an iterated component association, or a declare
!    --  expression, if it is surrounded by parentheses. If not surrounded by
!    --  parentheses, the expression is still returned, but an error message is
!    --  issued.
  
     -------------------------
     -- Bad_Range_Attribute --
*************** package body Ch4 is
*** 273,281 ****
           goto Scan_Name_Extension;
        end if;
  
!       --  We have scanned out a qualified simple name, check for name extension
!       --  Note that we know there is no dot here at this stage, so the only
!       --  possible cases of name extension are apostrophe and left paren.
  
        if Token = Tok_Apostrophe then
           Save_Scan_State (Scan_State); -- at apostrophe
--- 281,290 ----
           goto Scan_Name_Extension;
        end if;
  
!       --  We have scanned out a qualified simple name, check for name
!       --  extension.  Note that we know there is no dot here at this stage,
!       --  so the only possible cases of name extension are apostrophe followed
!       --  by '(' or '['.
  
        if Token = Tok_Apostrophe then
           Save_Scan_State (Scan_State); -- at apostrophe
*************** package body Ch4 is
*** 283,289 ****
  
           --  Qualified expression in Ada 2012 mode (treated as a name)
  
!          if Ada_Version >= Ada_2012 and then Token = Tok_Left_Paren then
              goto Scan_Name_Extension_Apostrophe;
  
           --  If left paren not in Ada 2012, then it is not part of the name,
--- 292,300 ----
  
           --  Qualified expression in Ada 2012 mode (treated as a name)
  
!          if Ada_Version >= Ada_2012
!            and then Token in Tok_Left_Paren | Tok_Left_Bracket
!          then
              goto Scan_Name_Extension_Apostrophe;
  
           --  If left paren not in Ada 2012, then it is not part of the name,
*************** package body Ch4 is
*** 437,443 ****
           begin
              --  Check for qualified expression case in Ada 2012 mode
  
!             if Ada_Version >= Ada_2012 and then Token = Tok_Left_Paren then
                 Name_Node := P_Qualified_Expression (Name_Node);
                 goto Scan_Name_Extension;
  
--- 448,456 ----
           begin
              --  Check for qualified expression case in Ada 2012 mode
  
!             if Ada_Version >= Ada_2012
!               and then Token in Tok_Left_Paren | Tok_Left_Bracket
!             then
                 Name_Node := P_Qualified_Expression (Name_Node);
                 goto Scan_Name_Extension;
  
*************** package body Ch4 is
*** 1220,1226 ****
        Attr_Node := New_Node (N_Attribute_Reference, Token_Ptr);
        Set_Attribute_Name (Attr_Node, Attr_Name);
        if Attr_Name /= Name_Reduce then
!          Error_Msg ("reduce attribute expected", Prev_Token_Ptr);
        end if;
  
        Set_Prefix (Attr_Node, S);
--- 1233,1239 ----
        Attr_Node := New_Node (N_Attribute_Reference, Token_Ptr);
        Set_Attribute_Name (Attr_Node, Attr_Name);
        if Attr_Name /= Name_Reduce then
!          Error_Msg ("Reduce attribute expected", Prev_Token_Ptr);
        end if;
  
        Set_Prefix (Attr_Node, S);
*************** package body Ch4 is
*** 1347,1355 ****
  
        procedure Box_Error is
        begin
!          if Ada_Version < Ada_2005 then
!             Error_Msg_SC ("box in aggregate is an Ada 2005 extension");
!          end if;
  
           --  Ada 2005 (AI-287): The box notation is allowed only with named
           --  notation because positional notation might be error prone. For
--- 1360,1366 ----
  
        procedure Box_Error is
        begin
!          Error_Msg_Ada_2005_Extension ("'<'> in aggregate");
  
           --  Ada 2005 (AI-287): The box notation is allowed only with named
           --  notation because positional notation might be error prone. For
*************** package body Ch4 is
*** 1378,1391 ****
           return Maybe;
        end Is_Quantified_Expression;
  
     --  Start of processing for P_Aggregate_Or_Paren_Expr
  
     begin
        Lparen_Sloc := Token_Ptr;
!       if Token = Tok_Left_Bracket and then Ada_Version >= Ada_2020 then
           Scan;
  
!          --  Special case for null aggregate in Ada2020.
  
           if Token = Tok_Right_Bracket then
              Scan;   --  past ]
--- 1389,1405 ----
           return Maybe;
        end Is_Quantified_Expression;
  
+       Start_Token : constant Token_Type := Token;
+       --  Used to prevent mismatches (...] and [...)
+ 
     --  Start of processing for P_Aggregate_Or_Paren_Expr
  
     begin
        Lparen_Sloc := Token_Ptr;
!       if Token = Tok_Left_Bracket then
           Scan;
  
!          --  Special case for null aggregate in Ada 2020
  
           if Token = Tok_Right_Bracket then
              Scan;   --  past ]
*************** package body Ch4 is
*** 1564,1580 ****
           --  Deal with others association first. This is a named association
  
           if No (Expr_Node) then
!             if No (Assoc_List) then
!                Assoc_List := New_List;
!             end if;
! 
!             Append (P_Record_Or_Array_Component_Association, Assoc_List);
  
           --  Improper use of WITH
  
           elsif Token = Tok_With then
              Error_Msg_SC ("WITH must be preceded by single expression in " &
!                              "extension aggregate");
              raise Error_Resync;
  
           --  Range attribute can only appear as part of a discrete choice list
--- 1578,1590 ----
           --  Deal with others association first. This is a named association
  
           if No (Expr_Node) then
!             Append_New (P_Record_Or_Array_Component_Association, Assoc_List);
  
           --  Improper use of WITH
  
           elsif Token = Tok_With then
              Error_Msg_SC ("WITH must be preceded by single expression in " &
!                           "extension aggregate");
              raise Error_Resync;
  
           --  Range attribute can only appear as part of a discrete choice list
*************** package body Ch4 is
*** 1591,1603 ****
           --  identifier or OTHERS follows (the latter cases are missing
           --  comma cases). Also assume positional if a semicolon follows,
           --  which can happen if there are missing parens.
  
!          elsif Nkind (Expr_Node) = N_Iterated_Component_Association then
!             if No (Assoc_List) then
!                Assoc_List := New_List (Expr_Node);
!             else
!                Append_To (Assoc_List, Expr_Node);
!             end if;
  
           elsif Token = Tok_Comma
             or else Token = Tok_Right_Paren
--- 1601,1612 ----
           --  identifier or OTHERS follows (the latter cases are missing
           --  comma cases). Also assume positional if a semicolon follows,
           --  which can happen if there are missing parens.
+          --  In Ada_2012 and Ada_2020 an iterated association can appear.
  
!          elsif Nkind (Expr_Node) in
!            N_Iterated_Component_Association | N_Iterated_Element_Association
!          then
!             Append_New (Expr_Node, Assoc_List);
  
           elsif Token = Tok_Comma
             or else Token = Tok_Right_Paren
*************** package body Ch4 is
*** 1611,1621 ****
                    & "named association)");
              end if;
  
!             if No (Expr_List) then
!                Expr_List := New_List;
!             end if;
! 
!             Append (Expr_Node, Expr_List);
  
           --  Check for aggregate followed by left parent, maybe missing comma
  
--- 1620,1626 ----
                    & "named association)");
              end if;
  
!             Append_New (Expr_Node, Expr_List);
  
           --  Check for aggregate followed by left parent, maybe missing comma
  
*************** package body Ch4 is
*** 1624,1641 ****
           then
              T_Comma;
  
!             if No (Expr_List) then
!                Expr_List := New_List;
!             end if;
! 
!             Append (Expr_Node, Expr_List);
  
           elsif Token = Tok_Right_Bracket then
!             if No (Expr_List) then
!                Expr_List := New_List;
!             end if;
! 
!             Append (Expr_Node, Expr_List);
              exit;
  
           --  Anything else is assumed to be a named association
--- 1629,1638 ----
           then
              T_Comma;
  
!             Append_New (Expr_Node, Expr_List);
  
           elsif Token = Tok_Right_Bracket then
!             Append_New (Expr_Node, Expr_List);
              exit;
  
           --  Anything else is assumed to be a named association
*************** package body Ch4 is
*** 1643,1653 ****
           else
              Restore_Scan_State (Scan_State); -- to start of expression
  
!             if No (Assoc_List) then
!                Assoc_List := New_List;
!             end if;
! 
!             Append (P_Record_Or_Array_Component_Association, Assoc_List);
           end if;
  
           exit when not Comma_Present;
--- 1640,1646 ----
           else
              Restore_Scan_State (Scan_State); -- to start of expression
  
!             Append_New (P_Record_Or_Array_Component_Association, Assoc_List);
           end if;
  
           exit when not Comma_Present;
*************** package body Ch4 is
*** 1684,1704 ****
           end if;
        end loop;
  
!       --  All component associations (positional and named) have been scanned
  
!       if Token = Tok_Right_Bracket and then Ada_Version >= Ada_2020 then
!          Set_Component_Associations (Aggregate_Node, Assoc_List);
!          Set_Is_Homogeneous_Aggregate (Aggregate_Node);
!          Scan;  --  past right bracket
!          if Token = Tok_Apostrophe then
!             Scan;
!             if Token = Tok_Identifier then
!                return P_Reduction_Attribute_Reference (Aggregate_Node);
              end if;
!          end if;
!       else
!          T_Right_Paren;
!       end if;
  
        if Nkind (Aggregate_Node) /= N_Delta_Aggregate then
           Set_Expressions (Aggregate_Node, Expr_List);
--- 1677,1702 ----
           end if;
        end loop;
  
!       --  All component associations (positional and named) have been scanned.
!       --  Scan ] or ) based on Start_Token.
  
!       case Start_Token is
!          when Tok_Left_Bracket =>
!             Set_Component_Associations (Aggregate_Node, Assoc_List);
!             Set_Is_Homogeneous_Aggregate (Aggregate_Node);
!             T_Right_Bracket;
! 
!             if Token = Tok_Apostrophe then
!                Scan;
! 
!                if Token = Tok_Identifier then
!                   return P_Reduction_Attribute_Reference (Aggregate_Node);
!                end if;
              end if;
!          when Tok_Left_Paren =>
!             T_Right_Paren;
!          when others => raise Program_Error;
!       end case;
  
        if Nkind (Aggregate_Node) /= N_Delta_Aggregate then
           Set_Expressions (Aggregate_Node, Expr_List);
*************** package body Ch4 is
*** 1755,1765 ****
           --  Ada 2005(AI-287): The box notation is used to indicate the
           --  default initialization of aggregate components
  
!          if Ada_Version < Ada_2005 then
!             Error_Msg_SP
!               ("component association with '<'> is an Ada 2005 extension");
!             Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
!          end if;
  
           Set_Box_Present (Assoc_Node);
           Scan; -- Past box
--- 1753,1759 ----
           --  Ada 2005(AI-287): The box notation is used to indicate the
           --  default initialization of aggregate components
  
!          Error_Msg_Ada_2005_Extension ("component association with '<'>");
  
           Set_Box_Present (Assoc_Node);
           Scan; -- Past box
*************** package body Ch4 is
*** 1897,1903 ****
                       Logop := P_Logical_Operator;
                       Restore_Scan_State (Scan_State); -- to comma/semicolon
  
!                      if Nkind_In (Logop, N_And_Then, N_Or_Else) then
                          Scan; -- past comma/semicolon
  
                          if Com then
--- 1891,1897 ----
                       Logop := P_Logical_Operator;
                       Restore_Scan_State (Scan_State); -- to comma/semicolon
  
!                      if Logop in N_And_Then | N_Or_Else then
                          Scan; -- past comma/semicolon
  
                          if Com then
*************** package body Ch4 is
*** 1942,1949 ****
     begin
        --  Case of conditional, case or quantified expression
  
!       if Token = Tok_Case or else Token = Tok_If or else Token = Tok_For then
!          return P_Unparen_Cond_Case_Quant_Expression;
  
        --  Normal case, not case/conditional/quantified expression
  
--- 1936,1947 ----
     begin
        --  Case of conditional, case or quantified expression
  
!       if Token = Tok_Case
!         or else Token = Tok_If
!         or else Token = Tok_For
!         or else Token = Tok_Declare
!       then
!          return P_Unparen_Cond_Expr_Etc;
  
        --  Normal case, not case/conditional/quantified expression
  
*************** package body Ch4 is
*** 2051,2058 ****
     begin
        --  Case of conditional, case or quantified expression
  
!       if Token = Tok_Case or else Token = Tok_If or else Token = Tok_For then
!          return P_Unparen_Cond_Case_Quant_Expression;
  
        --  Normal case, not one of the above expression types
  
--- 2049,2060 ----
     begin
        --  Case of conditional, case or quantified expression
  
!       if Token = Tok_Case
!         or else Token = Tok_If
!         or else Token = Tok_For
!         or else Token = Tok_Declare
!       then
!          return P_Unparen_Cond_Expr_Etc;
  
        --  Normal case, not one of the above expression types
  
*************** package body Ch4 is
*** 2926,2935 ****
                 Scan; -- past minus
  
              when Tok_At_Sign =>  --  AI12-0125 : target_name
!                if Ada_Version < Ada_2020 then
!                   Error_Msg_SC ("target name is an Ada 202x feature");
!                   Error_Msg_SC ("\compile with -gnatX");
!                end if;
  
                 Node1 := P_Name;
                 return Node1;
--- 2928,2934 ----
                 Scan; -- past minus
  
              when Tok_At_Sign =>  --  AI12-0125 : target_name
!                Error_Msg_Ada_2020_Feature ("target name", Token_Ptr);
  
                 Node1 := P_Name;
                 return Node1;
*************** package body Ch4 is
*** 3384,3411 ****
  
     --  ITERATED_COMPONENT_ASSOCIATION ::=
     --    for DEFINING_IDENTIFIER in DISCRETE_CHOICE_LIST => EXPRESSION
  
     function P_Iterated_Component_Association return Node_Id is
        Assoc_Node : Node_Id;
  
     --  Start of processing for P_Iterated_Component_Association
  
     begin
        Scan;  --  past FOR
        Assoc_Node :=
          New_Node (N_Iterated_Component_Association, Prev_Token_Ptr);
  
!       Set_Defining_Identifier (Assoc_Node, P_Defining_Identifier);
!       T_In;
!       Set_Discrete_Choices (Assoc_Node, P_Discrete_Choice_List);
!       TF_Arrow;
!       Set_Expression (Assoc_Node, P_Expression);
  
!       if Ada_Version < Ada_2020 then
!          Error_Msg_SC ("iterated component is an Ada 202x feature");
!          Error_Msg_SC ("\compile with -gnatX");
        end if;
  
        return Assoc_Node;
     end P_Iterated_Component_Association;
  
--- 3383,3511 ----
  
     --  ITERATED_COMPONENT_ASSOCIATION ::=
     --    for DEFINING_IDENTIFIER in DISCRETE_CHOICE_LIST => EXPRESSION
+    --    for ITERATOR_SPECIFICATION => EXPRESSION
  
     function P_Iterated_Component_Association return Node_Id is
        Assoc_Node : Node_Id;
+       Choice     : Node_Id;
+       Filter     : Node_Id := Empty;
+       Id         : Node_Id;
+       Iter_Spec  : Node_Id;
+       Loop_Spec  : Node_Id;
+       State      : Saved_Scan_State;
+ 
+       procedure Build_Iterated_Element_Association;
+       --  If the iterator includes a key expression or a filter, it is
+       --  an Ada_2020 Iterator_Element_Association within a container
+       --  aggregate.
+ 
+       ----------------------------------------
+       -- Build_Iterated_Element_Association --
+       ----------------------------------------
+ 
+       procedure Build_Iterated_Element_Association is
+       begin
+          --  Build loop_parameter_specification
+ 
+          Loop_Spec :=
+            New_Node (N_Loop_Parameter_Specification, Prev_Token_Ptr);
+          Set_Defining_Identifier (Loop_Spec, Id);
+ 
+          Choice :=  First (Discrete_Choices (Assoc_Node));
+          Assoc_Node :=
+            New_Node (N_Iterated_Element_Association, Prev_Token_Ptr);
+          Set_Loop_Parameter_Specification (Assoc_Node, Loop_Spec);
+ 
+          if Present (Next (Choice)) then
+             Error_Msg_N ("expect loop parameter specification", Choice);
+          end if;
+ 
+          Remove (Choice);
+          Set_Discrete_Subtype_Definition (Loop_Spec, Choice);
+          Set_Iterator_Filter (Loop_Spec, Filter);
+       end Build_Iterated_Element_Association;
  
     --  Start of processing for P_Iterated_Component_Association
  
     begin
        Scan;  --  past FOR
+       Save_Scan_State (State);
+ 
+       --  A lookahead is necessary to differentiate between the
+       --  Ada 2012 form with a choice list, and the Ada 202x element
+       --  iterator form, recognized by the presence of "OF". Other
+       --  disambiguation requires context and is done during semantic
+       --  analysis. Note that "for X in E" is syntactically ambiguous:
+       --  if E is a subtype indication this is a loop parameter spec,
+       --  while if E a name it is an iterator_specification, and the
+       --  disambiguation takes place during semantic analysis.
+       --  In addition, if "use" is present after the specification,
+       --  this is an Iterated_Element_Association that carries a
+       --  key_expression, and we generate the appropriate node.
+       --  Finally, the Iterated_Element form is reserved for container
+       --  aggregates, and is illegal in array aggregates.
+ 
+       Id := P_Defining_Identifier;
        Assoc_Node :=
          New_Node (N_Iterated_Component_Association, Prev_Token_Ptr);
  
!       if Token = Tok_In then
!          Set_Defining_Identifier (Assoc_Node, Id);
!          T_In;
!          Set_Discrete_Choices (Assoc_Node, P_Discrete_Choice_List);
  
!          --  The iterator may include a filter
! 
!          if Token = Tok_When then
!             Scan;    -- past WHEN
!             Filter := P_Condition;
!          end if;
! 
!          if Token = Tok_Use then
! 
!             --  Ada_2020 Key-expression is present, rewrite node as an
!             --  Iterated_Element_Association.
! 
!             Scan;  --  past USE
!             Build_Iterated_Element_Association;
!             Set_Key_Expression (Assoc_Node, P_Expression);
! 
!          elsif Present (Filter) then
!             --  A loop_parameter_specification also indicates an Ada_2020
!             --  construct, in contrast with a subtype indication used in
!             --  array aggregates.
! 
!             Build_Iterated_Element_Association;
!          end if;
! 
!          TF_Arrow;
!          Set_Expression (Assoc_Node, P_Expression);
! 
!       elsif Ada_Version >= Ada_2020
!         and then Token = Tok_Of
!       then
!          Restore_Scan_State (State);
!          Scan;  -- past OF
!          Set_Defining_Identifier (Assoc_Node, Id);
!          Iter_Spec := P_Iterator_Specification (Id);
!          Set_Iterator_Specification (Assoc_Node, Iter_Spec);
! 
!          if Token = Tok_Use then
!             Scan;  -- past USE
!             --  This is an iterated_element_association
! 
!             Assoc_Node :=
!               New_Node (N_Iterated_Element_Association, Prev_Token_Ptr);
!             Set_Iterator_Specification (Assoc_Node, Iter_Spec);
!             Set_Key_Expression (Assoc_Node, P_Expression);
!          end if;
! 
!          TF_Arrow;
!          Set_Expression (Assoc_Node, P_Expression);
        end if;
  
+       Error_Msg_Ada_2020_Feature ("iterated component", Token_Ptr);
+ 
        return Assoc_Node;
     end P_Iterated_Component_Association;
  
*************** package body Ch4 is
*** 3440,3446 ****
          (Loc  : Source_Ptr;
           Cond : Node_Id) return Node_Id
        is
!          Exprs : constant List_Id    := New_List;
           Expr  : Node_Id;
           State : Saved_Scan_State;
           Eptr  : Source_Ptr;
--- 3540,3546 ----
          (Loc  : Source_Ptr;
           Cond : Node_Id) return Node_Id
        is
!          Exprs : constant List_Id := New_List;
           Expr  : Node_Id;
           State : Saved_Scan_State;
           Eptr  : Source_Ptr;
*************** package body Ch4 is
*** 3555,3565 ****
        return If_Expr;
     end P_If_Expression;
  
     -----------------------
     -- P_Membership_Test --
     -----------------------
  
!    --  MEMBERSHIP_CHOICE_LIST ::= MEMBERHIP_CHOICE {'|' MEMBERSHIP_CHOICE}
     --  MEMBERSHIP_CHOICE      ::= CHOICE_EXPRESSION | range | subtype_mark
  
     procedure P_Membership_Test (N : Node_Id) is
--- 3655,3706 ----
        return If_Expr;
     end P_If_Expression;
  
+    --------------------------
+    -- P_Declare_Expression --
+    --------------------------
+ 
+    --  DECLARE_EXPRESSION ::=
+    --      DECLARE {DECLARE_ITEM}
+    --      begin BODY_EXPRESSION
+ 
+    --  DECLARE_ITEM ::= OBJECT_DECLARATION
+    --  | OBJECT_RENAMING_DECLARATION
+ 
+    function P_Declare_Expression return Node_Id is
+       Loc : constant Source_Ptr := Token_Ptr;
+    begin
+       Scan; -- past DECLARE
+ 
+       declare
+          Actions : constant List_Id := P_Basic_Declarative_Items
+            (Declare_Expression => True);
+          --  Most declarative items allowed by P_Basic_Declarative_Items are
+          --  illegal; semantic analysis will deal with that.
+       begin
+          if Token = Tok_Begin then
+             Scan;
+          else
+             Error_Msg_SC -- CODEFIX
+               ("BEGIN expected!");
+          end if;
+ 
+          declare
+             Expression : constant Node_Id := P_Expression;
+             Result : constant Node_Id :=
+               Make_Expression_With_Actions (Loc, Actions, Expression);
+          begin
+             Error_Msg_Ada_2020_Feature ("declare expression", Loc);
+ 
+             return Result;
+          end;
+       end;
+    end P_Declare_Expression;
+ 
     -----------------------
     -- P_Membership_Test --
     -----------------------
  
!    --  MEMBERSHIP_CHOICE_LIST ::= MEMBERSHIP_CHOICE {'|' MEMBERSHIP_CHOICE}
     --  MEMBERSHIP_CHOICE      ::= CHOICE_EXPRESSION | range | subtype_mark
  
     procedure P_Membership_Test (N : Node_Id) is
*************** package body Ch4 is
*** 3592,3602 ****
        end if;
     end P_Membership_Test;
  
!    ------------------------------------------
!    -- P_Unparen_Cond_Case_Quant_Expression --
!    ------------------------------------------
  
!    function P_Unparen_Cond_Case_Quant_Expression return Node_Id is
        Lparen : constant Boolean := Prev_Token = Tok_Left_Paren;
  
        Result     : Node_Id;
--- 3733,3743 ----
        end if;
     end P_Membership_Test;
  
!    -----------------------------
!    -- P_Unparen_Cond_Expr_Etc --
!    -----------------------------
  
!    function P_Unparen_Cond_Expr_Etc return Node_Id is
        Lparen : constant Boolean := Prev_Token = Tok_Left_Paren;
  
        Result     : Node_Id;
*************** package body Ch4 is
*** 3645,3650 ****
--- 3786,3800 ----
              Result := P_Iterated_Component_Association;
           end if;
  
+       --  Declare expression
+ 
+       elsif Token = Tok_Declare then
+          Result := P_Declare_Expression;
+ 
+          if not (Lparen and then Token = Tok_Right_Paren) then
+             Error_Msg_N ("declare expression must be parenthesized!", Result);
+          end if;
+ 
        --  No other possibility should exist (caller was supposed to check)
  
        else
*************** package body Ch4 is
*** 3654,3659 ****
        --  Return expression (possibly after having given message)
  
        return Result;
!    end P_Unparen_Cond_Case_Quant_Expression;
  
  end Ch4;
--- 3804,3809 ----
        --  Return expression (possibly after having given message)
  
        return Result;
!    end P_Unparen_Cond_Expr_Etc;
  
  end Ch4;
diff -Nrcpad gcc-10.3.0/gcc/ada/par-ch5.adb gcc-11.1.0/gcc/ada/par-ch5.adb
*** gcc-10.3.0/gcc/ada/par-ch5.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-ch5.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch5 is
*** 62,72 ****
     --  the N_Identifier node for the label on the loop. If Loop_Name is
     --  Empty on entry (the default), then the for statement is unlabeled.
  
-    function P_Iterator_Specification (Def_Id : Node_Id) return Node_Id;
-    --  Parse an iterator specification. The defining identifier has already
-    --  been scanned, as it is the common prefix between loop and iterator
-    --  specification.
- 
     function P_Loop_Statement (Loop_Name : Node_Id := Empty) return Node_Id;
     --  Parse loop statement. If Loop_Name is non-Empty on entry, it is
     --  the N_Identifier node for the label on the loop. If Loop_Name is
--- 62,67 ----
*************** package body Ch5 is
*** 1311,1324 ****
        --  syntax rule.
  
        else
!          if Style_Check and then Paren_Count (Cond) > 0 then
!             if not Nkind_In (Cond, N_If_Expression,
!                                    N_Case_Expression,
!                                    N_Quantified_Expression)
!               or else Paren_Count (Cond) > 1
!             then
!                Style.Check_Xtra_Parens (First_Sloc (Cond));
!             end if;
           end if;
  
           --  And return the result
--- 1306,1321 ----
        --  syntax rule.
  
        else
!          if Style_Check
!            and then
!              Paren_Count (Cond) >
!                (if Nkind (Cond) in N_Case_Expression
!                                  | N_If_Expression
!                                  | N_Quantified_Expression
!                 then 1
!                 else 0)
!          then
!             Style.Check_Xtra_Parens (First_Sloc (Cond));
           end if;
  
           --  And return the result
*************** package body Ch5 is
*** 1660,1665 ****
--- 1657,1663 ----
  
     --  LOOP_PARAMETER_SPECIFICATION ::=
     --    DEFINING_IDENTIFIER in [reverse] DISCRETE_SUBTYPE_DEFINITION
+    --    [Iterator_Filter]
  
     --  Error recovery: cannot raise Error_Resync
  
*************** package body Ch5 is
*** 1715,1720 ****
--- 1713,1727 ----
  
        Set_Discrete_Subtype_Definition
          (Loop_Param_Specification_Node, P_Discrete_Subtype_Definition);
+ 
+       if Token = Tok_When then
+          Error_Msg_Ada_2020_Feature ("iterator filter", Token_Ptr);
+ 
+          Scan; -- past WHEN
+          Set_Iterator_Filter
+            (Loop_Param_Specification_Node, P_Condition);
+       end if;
+ 
        return Loop_Param_Specification_Node;
  
     exception
*************** package body Ch5 is
*** 1767,1772 ****
--- 1774,1788 ----
        end if;
  
        Set_Name (Node1, P_Name);
+ 
+       if Token = Tok_When then
+          Error_Msg_Ada_2020_Feature ("iterator filter", Token_Ptr);
+ 
+          Scan; -- past WHEN
+          Set_Iterator_Filter
+            (Node1, P_Condition);
+       end if;
+ 
        return Node1;
     end P_Iterator_Specification;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/par-ch6.adb gcc-11.1.0/gcc/ada/par-ch6.adb
*** gcc-10.3.0/gcc/ada/par-ch6.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-ch6.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch6 is
*** 426,436 ****
           --  Ada 2005 (AI-318-02)
  
           if Token = Tok_Access then
!             if Ada_Version < Ada_2005 then
!                Error_Msg_SC
!                  ("anonymous access result type is an Ada 2005 extension");
!                Error_Msg_SC ("\unit must be compiled with -gnat05 switch");
!             end if;
  
              Result_Node := P_Access_Definition (Result_Not_Null);
  
--- 426,432 ----
           --  Ada 2005 (AI-318-02)
  
           if Token = Tok_Access then
!             Error_Msg_Ada_2005_Extension ("anonymous access result type");
  
              Result_Node := P_Access_Definition (Result_Not_Null);
  
*************** package body Ch6 is
*** 598,607 ****
              --  Ada 2005 (AI-248): Parse a null procedure declaration
  
              elsif Token = Tok_Null then
!                if Ada_Version < Ada_2005 then
!                   Error_Msg_SP ("null procedures are an Ada 2005 extension");
!                   Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
!                end if;
  
                 Scan; -- past NULL
  
--- 594,600 ----
              --  Ada 2005 (AI-248): Parse a null procedure declaration
  
              elsif Token = Tok_Null then
!                Error_Msg_Ada_2005_Extension ("null procedure");
  
                 Scan; -- past NULL
  
*************** package body Ch6 is
*** 707,715 ****
           else
              Scan_Body_Or_Expression_Function : declare
  
-                Body_Is_Hidden_In_SPARK : Boolean;
-                Hidden_Region_Start     : Source_Ptr;
- 
                 function Likely_Expression_Function return Boolean;
                 --  Returns True if we have a probable case of an expression
                 --  function omitting the parentheses, if so, returns True
--- 700,705 ----
*************** package body Ch6 is
*** 886,894 ****
                       --  with syntactic parentheses.
  
                       if not (Paren_Count (Expr) /= 0
!                               or else Nkind_In (Expr, N_Aggregate,
!                                                       N_Extension_Aggregate,
!                                                       N_Quantified_Expression))
                       then
                          Error_Msg
                            ("expression function must be enclosed in "
--- 876,884 ----
                       --  with syntactic parentheses.
  
                       if not (Paren_Count (Expr) /= 0
!                               or else Nkind (Expr) in N_Aggregate
!                                                     | N_Extension_Aggregate
!                                                     | N_Quantified_Expression)
                       then
                          Error_Msg
                            ("expression function must be enclosed in "
*************** package body Ch6 is
*** 942,966 ****
                       Set_Aspect_Specifications (Body_Node, Aspects);
                    end if;
  
-                   --  In SPARK, a HIDE directive can be placed at the beginning
-                   --  of a subprogram implementation, thus hiding the
-                   --  subprogram body from SPARK tool-set. No violation of the
-                   --  SPARK restriction should be issued on nodes in a hidden
-                   --  part, which is obtained by marking such hidden parts.
- 
-                   if Token = Tok_SPARK_Hide then
-                      Body_Is_Hidden_In_SPARK := True;
-                      Hidden_Region_Start     := Token_Ptr;
-                      Scan; -- past HIDE directive
-                   else
-                      Body_Is_Hidden_In_SPARK := False;
-                   end if;
- 
                    Parse_Decls_Begin_End (Body_Node);
- 
-                   if Body_Is_Hidden_In_SPARK then
-                      Set_Hidden_Part_In_SPARK (Hidden_Region_Start, Token_Ptr);
-                   end if;
                 end if;
  
                 return Body_Node;
--- 932,938 ----
*************** package body Ch6 is
*** 980,985 ****
--- 952,967 ----
           --  the collected aspects, if any, to the body.
  
           if Token = Tok_Is then
+ 
+             --  If the subprogram is a procedure and already has a
+             --  specification, we can't define another.
+ 
+             if Nkind (Specification (Decl_Node)) = N_Procedure_Specification
+               and then Null_Present (Specification (Decl_Node))
+             then
+                Error_Msg_AP ("null procedure cannot have a body");
+             end if;
+ 
              Scan;
              goto Subprogram_Body;
  
*************** package body Ch6 is
*** 1075,1085 ****
           --  Ada 2005 (AI-318-02)
  
           if Token = Tok_Access then
!             if Ada_Version < Ada_2005 then
!                Error_Msg_SC
!                  ("anonymous access result type is an Ada 2005 extension");
!                Error_Msg_SC ("\unit must be compiled with -gnat05 switch");
!             end if;
  
              Result_Node := P_Access_Definition (Result_Not_Null);
  
--- 1057,1063 ----
           --  Ada 2005 (AI-318-02)
  
           if Token = Tok_Access then
!             Error_Msg_Ada_2005_Extension ("anonymous access result type");
  
              Result_Node := P_Access_Definition (Result_Not_Null);
  
*************** package body Ch6 is
*** 1638,1648 ****
              Scan; -- past right paren
              exit Specification_Loop;
  
           --  Special check for common error of using comma instead of semicolon
  
           elsif Token = Tok_Comma then
              T_Semicolon;
-             Scan; -- past comma
  
           --  Special check for omitted separator
  
--- 1616,1643 ----
              Scan; -- past right paren
              exit Specification_Loop;
  
+          --  Support for aspects on formal parameters is a GNAT extension for
+          --  the time being.
+ 
+          elsif Token = Tok_With then
+             Error_Msg_Ada_2020_Feature
+               ("aspect on formal parameter", Token_Ptr);
+ 
+             P_Aspect_Specifications (Specification_Node, False);
+ 
+             if Token = Tok_Right_Paren then
+                Scan;  -- past right paren
+                exit Specification_Loop;
+ 
+             elsif Token = Tok_Semicolon then
+                Save_Scan_State (Scan_State);
+                Scan; -- past semicolon
+             end if;
+ 
           --  Special check for common error of using comma instead of semicolon
  
           elsif Token = Tok_Comma then
              T_Semicolon;
  
           --  Special check for omitted separator
  
*************** package body Ch6 is
*** 1763,1769 ****
     --
     --  EXTENDED_RETURN_STATEMENT ::=
     --    return DEFINING_IDENTIFIER : [aliased] RETURN_SUBTYPE_INDICATION
!    --                                           [:= EXPRESSION] [do
     --      HANDLED_SEQUENCE_OF_STATEMENTS
     --    end return];
     --
--- 1758,1765 ----
     --
     --  EXTENDED_RETURN_STATEMENT ::=
     --    return DEFINING_IDENTIFIER : [aliased] RETURN_SUBTYPE_INDICATION
!    --                                           [:= EXPRESSION]
!    --                                           [ASPECT_SPECIFICATION] [do
     --      HANDLED_SEQUENCE_OF_STATEMENTS
     --    end return];
     --
*************** package body Ch6 is
*** 1867,1872 ****
--- 1863,1869 ----
        if Token = Tok_Colon_Equal then
           Scan; -- past :=
           Set_Expression (Decl_Node, P_Expression_No_Right_Paren);
+          Set_Has_Init_Expression (Decl_Node);
        end if;
  
        return Decl_Node;
*************** package body Ch6 is
*** 1908,1913 ****
--- 1905,1911 ----
        Ret_Sloc : constant Source_Ptr := Token_Ptr;
        Ret_Strt : constant Column_Number := Start_Column;
        Ret_Node : Node_Id;
+       Decl     : Node_Id;
  
     --  Start of processing for P_Return_Statement
  
*************** package body Ch6 is
*** 1940,1954 ****
           --  Extended_return_statement (Ada 2005 only -- AI-318):
  
           else
!             if Ada_Version < Ada_2005 then
!                Error_Msg_SP
!                  (" extended_return_statement is an Ada 2005 extension");
!                Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
!             end if;
  
              Ret_Node := New_Node (N_Extended_Return_Statement, Ret_Sloc);
!             Set_Return_Object_Declarations
!               (Ret_Node, New_List (P_Return_Object_Declaration));
  
              if Token = Tok_Do then
                 Push_Scope_Stack;
--- 1938,1952 ----
           --  Extended_return_statement (Ada 2005 only -- AI-318):
  
           else
!             Error_Msg_Ada_2005_Extension ("extended return statement");
  
              Ret_Node := New_Node (N_Extended_Return_Statement, Ret_Sloc);
!             Decl := P_Return_Object_Declaration;
!             Set_Return_Object_Declarations (Ret_Node, New_List (Decl));
! 
!             if Token = Tok_With then
!                P_Aspect_Specifications (Decl, False);
!             end if;
  
              if Token = Tok_Do then
                 Push_Scope_Stack;
diff -Nrcpad gcc-10.3.0/gcc/ada/par-ch7.adb gcc-11.1.0/gcc/ada/par-ch7.adb
*** gcc-10.3.0/gcc/ada/par-ch7.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-ch7.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch7 is
*** 115,124 ****
        --  Dummy node to attach aspect specifications to until we properly
        --  figure out where they eventually belong.
  
-       Body_Is_Hidden_In_SPARK         : Boolean;
-       Private_Part_Is_Hidden_In_SPARK : Boolean;
-       Hidden_Region_Start             : Source_Ptr;
- 
     begin
        Push_Scope_Stack;
        Scopes (Scope.Last).Etyp := E_Name;
--- 115,120 ----
*************** package body Ch7 is
*** 185,209 ****
                 Move_Aspects (From => Dummy_Node, To => Package_Node);
              end if;
  
-             --  In SPARK, a HIDE directive can be placed at the beginning of a
-             --  package implementation, thus hiding the package body from SPARK
-             --  tool-set. No violation of the SPARK restriction should be
-             --  issued on nodes in a hidden part, which is obtained by marking
-             --  such hidden parts.
- 
-             if Token = Tok_SPARK_Hide then
-                Body_Is_Hidden_In_SPARK := True;
-                Hidden_Region_Start     := Token_Ptr;
-                Scan; -- past HIDE directive
-             else
-                Body_Is_Hidden_In_SPARK := False;
-             end if;
- 
              Parse_Decls_Begin_End (Package_Node);
- 
-             if Body_Is_Hidden_In_SPARK then
-                Set_Hidden_Part_In_SPARK (Hidden_Region_Start, Token_Ptr);
-             end if;
           end if;
  
        --  Cases other than Package_Body
--- 181,187 ----
*************** package body Ch7 is
*** 287,293 ****
  
                 Set_Defining_Unit_Name (Specification_Node, Name_Node);
                 Set_Visible_Declarations
!                  (Specification_Node, P_Basic_Declarative_Items);
  
                 if Token = Tok_Private then
                    Error_Msg_Col := Scopes (Scope.Last).Ecol;
--- 265,272 ----
  
                 Set_Defining_Unit_Name (Specification_Node, Name_Node);
                 Set_Visible_Declarations
!                  (Specification_Node,
!                   P_Basic_Declarative_Items (Declare_Expression => False));
  
                 if Token = Tok_Private then
                    Error_Msg_Col := Scopes (Scope.Last).Ecol;
*************** package body Ch7 is
*** 303,328 ****
  
                    Scan; -- past PRIVATE
  
-                   if Token = Tok_SPARK_Hide then
-                      Private_Part_Is_Hidden_In_SPARK := True;
-                      Hidden_Region_Start             := Token_Ptr;
-                      Scan; -- past HIDE directive
-                   else
-                      Private_Part_Is_Hidden_In_SPARK := False;
-                   end if;
- 
                    Set_Private_Declarations
!                     (Specification_Node, P_Basic_Declarative_Items);
! 
!                   --  In SPARK, a HIDE directive can be placed at the beginning
!                   --  of a private part, thus hiding all declarations in the
!                   --  private part from SPARK tool-set. No violation of the
!                   --  SPARK restriction should be issued on nodes in a hidden
!                   --  part, which is obtained by marking such hidden parts.
! 
!                   if Private_Part_Is_Hidden_In_SPARK then
!                      Set_Hidden_Part_In_SPARK (Hidden_Region_Start, Token_Ptr);
!                   end if;
  
                    --  Deal gracefully with multiple PRIVATE parts
  
--- 282,290 ----
  
                    Scan; -- past PRIVATE
  
                    Set_Private_Declarations
!                     (Specification_Node,
!                      P_Basic_Declarative_Items (Declare_Expression => False));
  
                    --  Deal gracefully with multiple PRIVATE parts
  
*************** package body Ch7 is
*** 330,337 ****
                       Error_Msg_SC
                         ("only one private part allowed per package");
                       Scan; -- past PRIVATE
!                      Append_List (P_Basic_Declarative_Items,
!                        Private_Declarations (Specification_Node));
                    end loop;
                 end if;
  
--- 292,301 ----
                       Error_Msg_SC
                         ("only one private part allowed per package");
                       Scan; -- past PRIVATE
!                      Append_List
!                        (P_Basic_Declarative_Items
!                           (Declare_Expression => False),
!                         Private_Declarations (Specification_Node));
                    end loop;
                 end if;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/par-ch8.adb gcc-11.1.0/gcc/ada/par-ch8.adb
*** gcc-10.3.0/gcc/ada/par-ch8.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-ch8.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/par-ch9.adb gcc-11.1.0/gcc/ada/par-ch9.adb
*** gcc-10.3.0/gcc/ada/par-ch9.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-ch9.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch9 is
*** 220,229 ****
              if Token = Tok_New then
                 Scan; --  past NEW
  
!                if Ada_Version < Ada_2005 then
!                   Error_Msg_SP ("task interface is an Ada 2005 extension");
!                   Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
!                end if;
  
                 Set_Interface_List (Task_Node, New_List);
  
--- 220,226 ----
              if Token = Tok_New then
                 Scan; --  past NEW
  
!                Error_Msg_Ada_2005_Extension ("task interface");
  
                 Set_Interface_List (Task_Node, New_List);
  
*************** package body Ch9 is
*** 565,574 ****
           if Token = Tok_New then
              Scan; --  past NEW
  
!             if Ada_Version < Ada_2005 then
!                Error_Msg_SP ("protected interface is an Ada 2005 extension");
!                Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
!             end if;
  
              Set_Interface_List (Protected_Node, New_List);
  
--- 562,568 ----
           if Token = Tok_New then
              Scan; --  past NEW
  
!             Error_Msg_Ada_2005_Extension ("protected interface");
  
              Set_Interface_List (Protected_Node, New_List);
  
*************** package body Ch9 is
*** 758,765 ****
  
           if Is_Overriding or else Not_Overriding then
              if Ada_Version < Ada_2005 then
!                Error_Msg_SP ("overriding indicator is an Ada 2005 extension");
!                Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
  
              elsif Token = Tok_Entry then
                 Decl := P_Entry_Declaration;
--- 752,758 ----
  
           if Is_Overriding or else Not_Overriding then
              if Ada_Version < Ada_2005 then
!                Error_Msg_Ada_2005_Extension ("overriding indicator");
  
              elsif Token = Tok_Entry then
                 Decl := P_Entry_Declaration;
*************** package body Ch9 is
*** 910,916 ****
              Resync_Past_Semicolon;
  
           elsif Token in Token_Class_Declk then
!             Error_Msg_SC ("this declaration not allowed in protected body");
              Resync_Past_Semicolon;
  
           else
--- 903,909 ----
              Resync_Past_Semicolon;
  
           elsif Token in Token_Class_Declk then
!             Error_Msg_SC ("declaration not allowed in protected body");
              Resync_Past_Semicolon;
  
           else
*************** package body Ch9 is
*** 968,976 ****
  
        if Is_Overriding or else Not_Overriding then
           if Ada_Version < Ada_2005 then
!             Error_Msg_SP ("overriding indicator is an Ada 2005 extension");
!             Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
! 
           elsif Token /= Tok_Entry then
              Error_Msg_SC -- CODEFIX
                ("ENTRY expected!");
--- 961,967 ----
  
        if Is_Overriding or else Not_Overriding then
           if Ada_Version < Ada_2005 then
!             Error_Msg_Ada_2005_Extension ("overriding indicator");
           elsif Token /= Tok_Entry then
              Error_Msg_SC -- CODEFIX
                ("ENTRY expected!");
*************** package body Ch9 is
*** 1316,1321 ****
--- 1307,1313 ----
  
     --  ENTRY_INDEX_SPECIFICATION ::=
     --    for DEFINING_IDENTIFIER in DISCRETE_SUBTYPE_DEFINITION
+    --                                                    [ASPECT_SPECIFICATION]
  
     --  Error recovery: can raise Error_Resync
  
*************** package body Ch9 is
*** 1329,1334 ****
--- 1321,1331 ----
        T_In;
        Set_Discrete_Subtype_Definition
          (Iterator_Node, P_Discrete_Subtype_Definition);
+ 
+       if Token = Tok_With then
+          P_Aspect_Specifications (Iterator_Node, False);
+       end if;
+ 
        return Iterator_Node;
     end P_Entry_Index_Specification;
  
*************** package body Ch9 is
*** 1654,1660 ****
              if Ada_Version = Ada_83 then
                 Error_Msg_BC ("OR or ELSE expected");
              else
!                Error_Msg_BC ("OR or ELSE or THEN ABORT expected");
              end if;
  
              Select_Node := Error;
--- 1651,1657 ----
              if Ada_Version = Ada_83 then
                 Error_Msg_BC ("OR or ELSE expected");
              else
!                Error_Msg_BC ("OR or ELSE or `THEN ABORT` expected");
              end if;
  
              Select_Node := Error;
diff -Nrcpad gcc-10.3.0/gcc/ada/par-endh.adb gcc-11.1.0/gcc/ada/par-endh.adb
*** gcc-10.3.0/gcc/ada/par-endh.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-endh.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/par-labl.adb gcc-11.1.0/gcc/ada/par-labl.adb
*** gcc-10.3.0/gcc/ada/par-labl.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-labl.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/par-load.adb gcc-11.1.0/gcc/ada/par-load.adb
*** gcc-10.3.0/gcc/ada/par-load.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-load.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** begin
*** 318,324 ****
  
        Spec_Name := Get_Parent_Spec_Name (Unit_Name (Cur_Unum));
  
!       if Spec_Name /= No_Unit_Name then
           Unum :=
             Load_Unit
               (Load_Name  => Spec_Name,
--- 318,324 ----
  
        Spec_Name := Get_Parent_Spec_Name (Unit_Name (Cur_Unum));
  
!       if Present (Spec_Name) then
           Unum :=
             Load_Unit
               (Load_Name  => Spec_Name,
diff -Nrcpad gcc-10.3.0/gcc/ada/par-prag.adb gcc-11.1.0/gcc/ada/par-prag.adb
*** gcc-10.3.0/gcc/ada/par-prag.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-prag.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** function Prag (Pragma_Node : Node_Id; Se
*** 102,114 ****
     --    are some obsolescent features (e.g. character replacements) which are
     --    handled at parse time.
     --
-    --    SPARK must be processed at parse time, since this restriction controls
-    --    whether the scanner recognizes a spark HIDE directive formatted as an
-    --    Ada comment (and generates a Tok_SPARK_Hide token for the directive).
-    --
     --    No_Dependence must be processed at parse time, since otherwise it gets
     --    handled too late.
     --
     --  Note that we don't need to do full error checking for badly formed cases
     --  of restrictions, since these will be caught during semantic analysis.
  
--- 102,113 ----
     --    are some obsolescent features (e.g. character replacements) which are
     --    handled at parse time.
     --
     --    No_Dependence must be processed at parse time, since otherwise it gets
     --    handled too late.
     --
+    --    No_Unrecognized_Aspects must be processed at parse time, since
+    --    unrecognized aspects are ignored by the parser.
+    --
     --  Note that we don't need to do full error checking for badly formed cases
     --  of restrictions, since these will be caught during semantic analysis.
  
*************** function Prag (Pragma_Node : Node_Id; Se
*** 173,179 ****
  
     begin
        if Nkind (Expression (Arg)) /= N_Identifier
!         or else not Nam_In (Chars (Argx), Name_On, Name_Off)
        then
           Error_Msg_Name_2 := Name_On;
           Error_Msg_Name_3 := Name_Off;
--- 172,178 ----
  
     begin
        if Nkind (Expression (Arg)) /= N_Identifier
!         or else Chars (Argx) not in Name_On | Name_Off
        then
           Error_Msg_Name_2 := Name_On;
           Error_Msg_Name_3 := Name_Off;
*************** function Prag (Pragma_Node : Node_Id; Se
*** 257,268 ****
                    Restriction_Warnings (No_Obsolescent_Features) :=
                      Prag_Id = Pragma_Restriction_Warnings;
  
!                when Name_SPARK
!                   | Name_SPARK_05
!                =>
!                   Set_Restriction (SPARK_05, Pragma_Node);
!                   Restriction_Warnings (SPARK_05) :=
!                     Prag_Id = Pragma_Restriction_Warnings;
  
                 when others =>
                    null;
--- 256,272 ----
                    Restriction_Warnings (No_Obsolescent_Features) :=
                      Prag_Id = Pragma_Restriction_Warnings;
  
!                when Name_SPARK_05 =>
!                   Error_Msg_Name_1 := Chars (Expr);
!                   Error_Msg_N
!                     ("??% restriction is obsolete and ignored, consider " &
!                      "using 'S'P'A'R'K_'Mode and gnatprove instead", Arg);
! 
!                when Name_No_Unrecognized_Aspects =>
!                   Set_Restriction
!                      (No_Unrecognized_Aspects,
!                       Pragma_Node,
!                       Prag_Id = Pragma_Restriction_Warnings);
  
                 when others =>
                    null;
*************** begin
*** 440,446 ****
  
           if Chars (Expression (Arg1)) = Name_On then
              Extensions_Allowed := True;
!             Ada_Version := Ada_2012;
           else
              Extensions_Allowed := False;
              Ada_Version := Ada_Version_Explicit;
--- 444,450 ----
  
           if Chars (Expression (Arg1)) = Name_On then
              Extensions_Allowed := True;
!             Ada_Version := Ada_Version_Type'Last;
           else
              Extensions_Allowed := False;
              Ada_Version := Ada_Version_Explicit;
*************** begin
*** 1114,1120 ****
        --  DETAILS ::= static_string_EXPRESSION
        --  DETAILS ::= On | Off, static_string_EXPRESSION
  
!       --  TOOL_NAME ::= GNAT | GNATProve
  
        --  REASON ::= Reason => STRING_LITERAL {& STRING_LITERAL}
  
--- 1118,1124 ----
        --  DETAILS ::= static_string_EXPRESSION
        --  DETAILS ::= On | Off, static_string_EXPRESSION
  
!       --  TOOL_NAME ::= GNAT | GNATprove
  
        --  REASON ::= Reason => STRING_LITERAL {& STRING_LITERAL}
  
*************** begin
*** 1157,1167 ****
              return Nkind (Arg1) = N_Identifier
  
                --  Return True if the tool name is GNAT, and we're not in
!               --  GNATprove or CodePeer or ASIS mode...
  
                and then ((Chars (Arg1) = Name_Gnat
                            and then not
!                             (CodePeer_Mode or GNATprove_Mode or ASIS_Mode))
  
                --  or if the tool name is GNATprove, and we're in GNATprove
                --  mode.
--- 1161,1171 ----
              return Nkind (Arg1) = N_Identifier
  
                --  Return True if the tool name is GNAT, and we're not in
!               --  GNATprove or CodePeer mode...
  
                and then ((Chars (Arg1) = Name_Gnat
                            and then not
!                             (CodePeer_Mode or GNATprove_Mode))
  
                --  or if the tool name is GNATprove, and we're in GNATprove
                --  mode.
*************** begin
*** 1315,1379 ****
  
        when Pragma_Abort_Defer
           | Pragma_Abstract_State
-          | Pragma_Acc_Data
-          | Pragma_Acc_Kernels
-          | Pragma_Acc_Loop
-          | Pragma_Acc_Parallel
           | Pragma_Aggregate_Individually_Assign
-          | Pragma_Async_Readers
-          | Pragma_Async_Writers
-          | Pragma_Assertion_Policy
-          | Pragma_Assume
-          | Pragma_Assume_No_Invalid_Values
           | Pragma_All_Calls_Remote
           | Pragma_Allow_Integer_Address
           | Pragma_Annotate
           | Pragma_Assert
           | Pragma_Assert_And_Cut
           | Pragma_Asynchronous
           | Pragma_Atomic
           | Pragma_Atomic_Components
           | Pragma_Attach_Handler
           | Pragma_Attribute_Definition
-          | Pragma_Check
-          | Pragma_Check_Float_Overflow
-          | Pragma_Check_Name
-          | Pragma_Check_Policy
-          | Pragma_Compile_Time_Error
-          | Pragma_Compile_Time_Warning
-          | Pragma_Constant_After_Elaboration
-          | Pragma_Contract_Cases
-          | Pragma_Convention_Identifier
           | Pragma_CPP_Class
           | Pragma_CPP_Constructor
           | Pragma_CPP_Virtual
           | Pragma_CPP_Vtable
           | Pragma_CPU
           | Pragma_C_Pass_By_Copy
           | Pragma_Comment
           | Pragma_Common_Object
           | Pragma_Complete_Representation
           | Pragma_Complex_Representation
           | Pragma_Component_Alignment
           | Pragma_Controlled
           | Pragma_Convention
           | Pragma_Deadline_Floor
           | Pragma_Debug_Policy
-          | Pragma_Depends
-          | Pragma_Detect_Blocking
           | Pragma_Default_Initial_Condition
           | Pragma_Default_Scalar_Storage_Order
           | Pragma_Default_Storage_Pool
           | Pragma_Disable_Atomic_Synchronization
           | Pragma_Discard_Names
           | Pragma_Dispatching_Domain
           | Pragma_Effective_Reads
           | Pragma_Effective_Writes
-          | Pragma_Eliminate
           | Pragma_Elaborate
           | Pragma_Elaborate_All
           | Pragma_Elaborate_Body
           | Pragma_Elaboration_Checks
           | Pragma_Enable_Atomic_Synchronization
           | Pragma_Export
           | Pragma_Export_Function
--- 1319,1381 ----
  
        when Pragma_Abort_Defer
           | Pragma_Abstract_State
           | Pragma_Aggregate_Individually_Assign
           | Pragma_All_Calls_Remote
           | Pragma_Allow_Integer_Address
           | Pragma_Annotate
           | Pragma_Assert
           | Pragma_Assert_And_Cut
+          | Pragma_Assertion_Policy
+          | Pragma_Assume
+          | Pragma_Assume_No_Invalid_Values
+          | Pragma_Async_Readers
+          | Pragma_Async_Writers
           | Pragma_Asynchronous
           | Pragma_Atomic
           | Pragma_Atomic_Components
           | Pragma_Attach_Handler
           | Pragma_Attribute_Definition
           | Pragma_CPP_Class
           | Pragma_CPP_Constructor
           | Pragma_CPP_Virtual
           | Pragma_CPP_Vtable
           | Pragma_CPU
+          | Pragma_CUDA_Execute
+          | Pragma_CUDA_Global
           | Pragma_C_Pass_By_Copy
+          | Pragma_Check
+          | Pragma_Check_Float_Overflow
+          | Pragma_Check_Name
+          | Pragma_Check_Policy
           | Pragma_Comment
           | Pragma_Common_Object
+          | Pragma_Compile_Time_Error
+          | Pragma_Compile_Time_Warning
           | Pragma_Complete_Representation
           | Pragma_Complex_Representation
           | Pragma_Component_Alignment
+          | Pragma_Constant_After_Elaboration
+          | Pragma_Contract_Cases
           | Pragma_Controlled
           | Pragma_Convention
+          | Pragma_Convention_Identifier
           | Pragma_Deadline_Floor
           | Pragma_Debug_Policy
           | Pragma_Default_Initial_Condition
           | Pragma_Default_Scalar_Storage_Order
           | Pragma_Default_Storage_Pool
+          | Pragma_Depends
+          | Pragma_Detect_Blocking
           | Pragma_Disable_Atomic_Synchronization
           | Pragma_Discard_Names
           | Pragma_Dispatching_Domain
           | Pragma_Effective_Reads
           | Pragma_Effective_Writes
           | Pragma_Elaborate
           | Pragma_Elaborate_All
           | Pragma_Elaborate_Body
           | Pragma_Elaboration_Checks
+          | Pragma_Eliminate
           | Pragma_Enable_Atomic_Synchronization
           | Pragma_Export
           | Pragma_Export_Function
*************** begin
*** 1385,1392 ****
           | Pragma_Extensions_Visible
           | Pragma_External
           | Pragma_External_Name_Casing
-          | Pragma_Favor_Top_Level
           | Pragma_Fast_Math
           | Pragma_Finalize_Storage_Only
           | Pragma_Ghost
           | Pragma_Global
--- 1387,1394 ----
           | Pragma_Extensions_Visible
           | Pragma_External
           | Pragma_External_Name_Casing
           | Pragma_Fast_Math
+          | Pragma_Favor_Top_Level
           | Pragma_Finalize_Storage_Only
           | Pragma_Ghost
           | Pragma_Global
*************** begin
*** 1411,1418 ****
           | Pragma_Interface
           | Pragma_Interface_Name
           | Pragma_Interrupt_Handler
-          | Pragma_Interrupt_State
           | Pragma_Interrupt_Priority
           | Pragma_Invariant
           | Pragma_Keep_Names
           | Pragma_License
--- 1413,1420 ----
           | Pragma_Interface
           | Pragma_Interface_Name
           | Pragma_Interrupt_Handler
           | Pragma_Interrupt_Priority
+          | Pragma_Interrupt_State
           | Pragma_Invariant
           | Pragma_Keep_Names
           | Pragma_License
*************** begin
*** 1446,1473 ****
           | Pragma_No_Tagged_Streams
           | Pragma_Normalize_Scalars
           | Pragma_Obsolescent
-          | Pragma_Ordered
           | Pragma_Optimize
           | Pragma_Optimize_Alignment
           | Pragma_Overflow_Mode
           | Pragma_Overriding_Renamings
           | Pragma_Pack
           | Pragma_Part_Of
           | Pragma_Partition_Elaboration_Policy
           | Pragma_Passive
-          | Pragma_Preelaborable_Initialization
-          | Pragma_Polling
-          | Pragma_Prefix_Exception_Messages
           | Pragma_Persistent_BSS
           | Pragma_Post
-          | Pragma_Postcondition
           | Pragma_Post_Class
           | Pragma_Pre
           | Pragma_Precondition
           | Pragma_Predicate
           | Pragma_Predicate_Failure
           | Pragma_Preelaborate
!          | Pragma_Pre_Class
           | Pragma_Priority
           | Pragma_Priority_Specific_Dispatching
           | Pragma_Profile
--- 1448,1474 ----
           | Pragma_No_Tagged_Streams
           | Pragma_Normalize_Scalars
           | Pragma_Obsolescent
           | Pragma_Optimize
           | Pragma_Optimize_Alignment
+          | Pragma_Ordered
           | Pragma_Overflow_Mode
           | Pragma_Overriding_Renamings
           | Pragma_Pack
           | Pragma_Part_Of
           | Pragma_Partition_Elaboration_Policy
           | Pragma_Passive
           | Pragma_Persistent_BSS
           | Pragma_Post
           | Pragma_Post_Class
+          | Pragma_Postcondition
           | Pragma_Pre
+          | Pragma_Pre_Class
           | Pragma_Precondition
           | Pragma_Predicate
           | Pragma_Predicate_Failure
+          | Pragma_Preelaborable_Initialization
           | Pragma_Preelaborate
!          | Pragma_Prefix_Exception_Messages
           | Pragma_Priority
           | Pragma_Priority_Specific_Dispatching
           | Pragma_Profile
*************** begin
*** 1478,1483 ****
--- 1479,1486 ----
           | Pragma_Pure
           | Pragma_Pure_Function
           | Pragma_Queuing_Policy
+          | Pragma_Rational
+          | Pragma_Ravenscar
           | Pragma_Refined_Depends
           | Pragma_Refined_Global
           | Pragma_Refined_Post
*************** begin
*** 1486,1496 ****
           | Pragma_Remote_Access_Type
           | Pragma_Remote_Call_Interface
           | Pragma_Remote_Types
-          | Pragma_Restricted_Run_Time
-          | Pragma_Rational
-          | Pragma_Ravenscar
           | Pragma_Rename_Pragma
           | Pragma_Reviewable
           | Pragma_Secondary_Stack_Size
           | Pragma_Share_Generic
           | Pragma_Shared
--- 1489,1498 ----
           | Pragma_Remote_Access_Type
           | Pragma_Remote_Call_Interface
           | Pragma_Remote_Types
           | Pragma_Rename_Pragma
+          | Pragma_Restricted_Run_Time
           | Pragma_Reviewable
+          | Pragma_SPARK_Mode
           | Pragma_Secondary_Stack_Size
           | Pragma_Share_Generic
           | Pragma_Shared
*************** begin
*** 1498,1509 ****
           | Pragma_Short_Circuit_And_Or
           | Pragma_Short_Descriptors
           | Pragma_Simple_Storage_Pool_Type
!          | Pragma_SPARK_Mode
           | Pragma_Storage_Size
           | Pragma_Storage_Unit
-          | Pragma_Static_Elaboration_Desired
           | Pragma_Stream_Convert
           | Pragma_Subtitle
           | Pragma_Suppress
           | Pragma_Suppress_Debug_Info
           | Pragma_Suppress_Exception_Locations
--- 1500,1511 ----
           | Pragma_Short_Circuit_And_Or
           | Pragma_Short_Descriptors
           | Pragma_Simple_Storage_Pool_Type
!          | Pragma_Static_Elaboration_Desired
           | Pragma_Storage_Size
           | Pragma_Storage_Unit
           | Pragma_Stream_Convert
           | Pragma_Subtitle
+          | Pragma_Subprogram_Variant
           | Pragma_Suppress
           | Pragma_Suppress_Debug_Info
           | Pragma_Suppress_Exception_Locations
*************** begin
*** 1531,1542 ****
           | Pragma_Unsuppress
           | Pragma_Unused
           | Pragma_Use_VADS_Size
           | Pragma_Volatile
           | Pragma_Volatile_Components
           | Pragma_Volatile_Full_Access
           | Pragma_Volatile_Function
           | Pragma_Weak_External
-          | Pragma_Validity_Checks
        =>
           null;
  
--- 1533,1544 ----
           | Pragma_Unsuppress
           | Pragma_Unused
           | Pragma_Use_VADS_Size
+          | Pragma_Validity_Checks
           | Pragma_Volatile
           | Pragma_Volatile_Components
           | Pragma_Volatile_Full_Access
           | Pragma_Volatile_Function
           | Pragma_Weak_External
        =>
           null;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/par-sync.adb gcc-11.1.0/gcc/ada/par-sync.adb
*** gcc-10.3.0/gcc/ada/par-sync.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-sync.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/par-tchk.adb gcc-11.1.0/gcc/ada/par-tchk.adb
*** gcc-10.3.0/gcc/ada/par-tchk.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-tchk.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Tchk is
*** 402,407 ****
--- 402,421 ----
        Check_Token (Tok_Record, AP);
     end T_Record;
  
+    ---------------------
+    -- T_Right_Bracket --
+    ---------------------
+ 
+    procedure T_Right_Bracket is
+    begin
+       if Token = Tok_Right_Bracket then
+          Scan;
+       else
+          Error_Msg_AP -- CODEFIX
+            ("|missing ""']'""");
+       end if;
+    end T_Right_Bracket;
+ 
     -------------------
     -- T_Right_Paren --
     -------------------
*************** package body Tchk is
*** 422,428 ****
  
     procedure T_Semicolon is
     begin
- 
        if Token = Tok_Semicolon then
           Scan;
  
--- 436,441 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/par-util.adb gcc-11.1.0/gcc/ada/par-util.adb
*** gcc-10.3.0/gcc/ada/par-util.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par-util.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Util is
*** 181,187 ****
        if Ada_Version = Ada_95
          and then Warn_On_Ada_2005_Compatibility
        then
!          if Nam_In (Token_Name, Name_Overriding, Name_Synchronized)
             or else (Token_Name = Name_Interface
                       and then Prev_Token /= Tok_Pragma)
           then
--- 181,187 ----
        if Ada_Version = Ada_95
          and then Warn_On_Ada_2005_Compatibility
        then
!          if Token_Name in Name_Overriding | Name_Synchronized
             or else (Token_Name = Name_Interface
                       and then Prev_Token /= Tok_Pragma)
           then
*************** package body Util is
*** 276,282 ****
  
        --  If we have a right paren, then that is taken as ending the list
        --  i.e. no comma is present.
!       --  Ditto for a right bracket in Ada2020.
  
        elsif Token = Tok_Right_Paren
          or else (Token = Tok_Right_Bracket and then Ada_Version >= Ada_2020)
--- 276,282 ----
  
        --  If we have a right paren, then that is taken as ending the list
        --  i.e. no comma is present.
!       --  Ditto for a right bracket in Ada 2020.
  
        elsif Token = Tok_Right_Paren
          or else (Token = Tok_Right_Bracket and then Ada_Version >= Ada_2020)
diff -Nrcpad gcc-10.3.0/gcc/ada/par.adb gcc-11.1.0/gcc/ada/par.adb
*** gcc-10.3.0/gcc/ada/par.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** function Par (Configuration_Pragmas : Bo
*** 679,685 ****
        --  begin message if indeed the BEGIN is missing.
  
        function P_Array_Type_Definition                return Node_Id;
-       function P_Basic_Declarative_Items              return List_Id;
        function P_Constraint_Opt                       return Node_Id;
        function P_Declarative_Part                     return List_Id;
        function P_Discrete_Choice_List                 return List_Id;
--- 679,684 ----
*************** function Par (Configuration_Pragmas : Bo
*** 694,699 ****
--- 693,707 ----
        function P_Subtype_Mark_Resync                  return Node_Id;
        function P_Unknown_Discriminant_Part_Opt        return Boolean;
  
+       function P_Basic_Declarative_Items
+         (Declare_Expression : Boolean) return List_Id;
+       --  Used to parse the declarative items in a package visible or
+       --  private part (in which case Declare_Expression is False), and
+       --  the declare_items of a declare_expression (in which case
+       --  Declare_Expression is True). Declare_Expression is used to
+       --  affect the wording of error messages, and to control style
+       --  checking.
+ 
        function P_Access_Definition
          (Null_Exclusion_Present : Boolean) return Node_Id;
        --  Ada 2005 (AI-231/AI-254): The caller parses the null-exclusion part
*************** function Par (Configuration_Pragmas : Bo
*** 787,797 ****
        function P_Simple_Expression                    return Node_Id;
        function P_Simple_Expression_Or_Range_Attribute return Node_Id;
  
-       function P_Case_Expression return Node_Id;
-       --  Scans out a case expression. Called with Token pointing to the CASE
-       --  keyword, and returns pointing to the terminating right parent,
-       --  semicolon, or comma, but does not consume this terminating token.
- 
        function P_Expression_If_OK return Node_Id;
        --  Scans out an expression allowing an unparenthesized case expression,
        --  if expression, or quantified expression to appear without enclosing
--- 795,800 ----
*************** function Par (Configuration_Pragmas : Bo
*** 839,844 ****
--- 842,852 ----
        --  conditional expression and passes it as an argument. This form of
        --  the call does not check for a following right parenthesis.
  
+       function P_Iterator_Specification (Def_Id : Node_Id) return Node_Id;
+       --  Parse an iterator specification. The defining identifier has already
+       --  been scanned, as it is the common prefix between loop and iterator
+       --  specification.
+ 
        function P_Loop_Parameter_Specification return Node_Id;
        --  Used in loop constructs and quantified expressions.
  
*************** function Par (Configuration_Pragmas : Bo
*** 987,996 ****
        procedure P_Aspect_Specifications
          (Decl      : Node_Id;
           Semicolon : Boolean := True);
!       --  This procedure scans out a series of aspect spefications. If argument
!       --  Semicolon is True, a terminating semicolon is also scanned. If this
!       --  argument is False, the scan pointer is left pointing past the aspects
!       --  and the caller must check for a proper terminator.
        --
        --  P_Aspect_Specifications is called with the current token pointing
        --  to either a WITH keyword starting an aspect specification, or an
--- 995,1004 ----
        procedure P_Aspect_Specifications
          (Decl      : Node_Id;
           Semicolon : Boolean := True);
!       --  This procedure scans out a series of aspect specifications. If
!       --  argument Semicolon is True, a terminating semicolon is also scanned.
!       --  If this argument is False, the scan pointer is left pointing past the
!       --  aspects and the caller must check for a proper terminator.
        --
        --  P_Aspect_Specifications is called with the current token pointing
        --  to either a WITH keyword starting an aspect specification, or an
*************** function Par (Configuration_Pragmas : Bo
*** 1204,1209 ****
--- 1212,1218 ----
        procedure T_Private;
        procedure T_Range;
        procedure T_Record;
+       procedure T_Right_Bracket;
        procedure T_Right_Paren;
        procedure T_Semicolon;
        procedure T_Then;
*************** begin
*** 1537,1542 ****
--- 1546,1555 ----
           end loop;
        end;
  
+       if Config_Files_Store_Basename then
+          Complete_Source_File_Entry;
+       end if;
+ 
     --  Normal case of compilation unit
  
     else
diff -Nrcpad gcc-10.3.0/gcc/ada/par.ads gcc-11.1.0/gcc/ada/par.ads
*** gcc-10.3.0/gcc/ada/par.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/par_sco.adb gcc-11.1.0/gcc/ada/par_sco.adb
*** gcc-10.3.0/gcc/ada/par_sco.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par_sco.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Par_SCO is
*** 459,467 ****
  
     function Is_Logical_Operator (N : Node_Id) return Tristate is
     begin
!       if Nkind_In (N, N_And_Then, N_Op_Not, N_Or_Else) then
           return True;
!       elsif Nkind_In (N, N_Op_And, N_Op_Or) then
           return Unknown;
        else
           return False;
--- 459,467 ----
  
     function Is_Logical_Operator (N : Node_Id) return Tristate is
     begin
!       if Nkind (N) in N_And_Then | N_Op_Not | N_Or_Else then
           return True;
!       elsif Nkind (N) in N_Op_And | N_Op_Or then
           return Unknown;
        else
           return False;
*************** package body Par_SCO is
*** 599,607 ****
              else
                 L := Left_Opnd (N);
  
!                if Nkind_In (N, N_Op_Or, N_Or_Else) then
                    C1 := '|';
!                else pragma Assert (Nkind_In (N, N_Op_And, N_And_Then));
                    C1 := '&';
                 end if;
              end if;
--- 599,607 ----
              else
                 L := Left_Opnd (N);
  
!                if Nkind (N) in N_Op_Or | N_Or_Else then
                    C1 := '|';
!                else pragma Assert (Nkind (N) in N_Op_And | N_And_Then);
                    C1 := '&';
                 end if;
              end if;
*************** package body Par_SCO is
*** 688,696 ****
                 --  Doesn't this requirement of using First_Sloc need to be
                 --  documented in the spec ???
  
!                if Nkind_In (Parent (N), N_Accept_Alternative,
!                                         N_Delay_Alternative,
!                                         N_Terminate_Alternative)
                 then
                    Loc := First_Sloc (N);
                 else
--- 688,696 ----
                 --  Doesn't this requirement of using First_Sloc need to be
                 --  documented in the spec ???
  
!                if Nkind (Parent (N)) in N_Accept_Alternative
!                                       | N_Delay_Alternative
!                                       | N_Terminate_Alternative
                 then
                    Loc := First_Sloc (N);
                 else
*************** package body Par_SCO is
*** 1747,1753 ****
              --  chain.
  
              Current_Dominant := No_Dominant;
!             Extend_Statement_Sequence (N, Typ => ' ');
  
              --  For the case of an expression-function, collect decisions
              --  embedded in the expression now.
--- 1747,1753 ----
              --  chain.
  
              Current_Dominant := No_Dominant;
!             Extend_Statement_Sequence (N, Typ => 'X');
  
              --  For the case of an expression-function, collect decisions
              --  embedded in the expression now.
diff -Nrcpad gcc-10.3.0/gcc/ada/par_sco.ads gcc-11.1.0/gcc/ada/par_sco.ads
*** gcc-10.3.0/gcc/ada/par_sco.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/par_sco.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/pprint.adb gcc-11.1.0/gcc/ada/pprint.adb
*** gcc-10.3.0/gcc/ada/pprint.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/pprint.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2008-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2008-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Pprint is
*** 329,340 ****
                                    (Constraint (Subtype_Indication (N)));
  
                                if List_Length (Ranges) = 1
!                                 and then
!                                   Nkind_In
!                                     (First (Ranges),
!                                      N_Range,
!                                      N_Real_Range_Specification,
!                                      N_Signed_Integer_Type_Definition)
                                then
                                   if Id = Attribute_First then
                                      return
--- 329,338 ----
                                    (Constraint (Subtype_Indication (N)));
  
                                if List_Length (Ranges) = 1
!                                 and then Nkind (First (Ranges)) in
!                                            N_Range                          |
!                                            N_Real_Range_Specification       |
!                                            N_Signed_Integer_Type_Definition
                                then
                                   if Id = Attribute_First then
                                      return
*************** package body Pprint is
*** 765,772 ****
                 --  If argument does not already account for a closing
                 --  parenthesis, count one here.
  
!                if not Nkind_In (Right, N_Aggregate,
!                                        N_Quantified_Expression)
                 then
                    Append_Paren := Append_Paren + 1;
                 end if;
--- 763,769 ----
                 --  If argument does not already account for a closing
                 --  parenthesis, count one here.
  
!                if Nkind (Right) not in N_Aggregate | N_Quantified_Expression
                 then
                    Append_Paren := Append_Paren + 1;
                 end if;
diff -Nrcpad gcc-10.3.0/gcc/ada/pprint.ads gcc-11.1.0/gcc/ada/pprint.ads
*** gcc-10.3.0/gcc/ada/pprint.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/pprint.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2008-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2008-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/prep.adb gcc-11.1.0/gcc/ada/prep.adb
*** gcc-10.3.0/gcc/ada/prep.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/prep.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/prep.ads gcc-11.1.0/gcc/ada/prep.ads
*** gcc-10.3.0/gcc/ada/prep.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/prep.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/prepcomp.adb gcc-11.1.0/gcc/ada/prepcomp.adb
*** gcc-10.3.0/gcc/ada/prepcomp.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/prepcomp.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/prepcomp.ads gcc-11.1.0/gcc/ada/prepcomp.ads
*** gcc-10.3.0/gcc/ada/prepcomp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/prepcomp.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/put_scos.adb gcc-11.1.0/gcc/ada/put_scos.adb
*** gcc-10.3.0/gcc/ada/put_scos.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/put_scos.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/put_scos.ads gcc-11.1.0/gcc/ada/put_scos.ads
*** gcc-10.3.0/gcc/ada/put_scos.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/put_scos.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/raise-gcc.c gcc-11.1.0/gcc/ada/raise-gcc.c
*** gcc-10.3.0/gcc/ada/raise-gcc.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/raise-gcc.c	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *             Copyright (C) 1992-2019, Free Software Foundation, Inc.      *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *             Copyright (C) 1992-2020, Free Software Foundation, Inc.      *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** __gnat_personality_seh0 (PEXCEPTION_RECO
*** 1617,1623 ****
  
  /* Define __gnat_personality_v0 for convenience */
  
! PERSONALITY_STORAGE _Unwind_Reason_Code
  __gnat_personality_v0 (version_arg_t version_arg,
  		       phases_arg_t phases_arg,
  		       _Unwind_Exception_Class uw_exception_class,
--- 1617,1623 ----
  
  /* Define __gnat_personality_v0 for convenience */
  
! PERSONALITY_STORAGE ATTRIBUTE_UNUSED _Unwind_Reason_Code
  __gnat_personality_v0 (version_arg_t version_arg,
  		       phases_arg_t phases_arg,
  		       _Unwind_Exception_Class uw_exception_class,
diff -Nrcpad gcc-10.3.0/gcc/ada/raise.c gcc-11.1.0/gcc/ada/raise.c
*** gcc-10.3.0/gcc/ada/raise.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/raise.c	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *             Copyright (C) 1992-2019, Free Software Foundation, Inc.      *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *             Copyright (C) 1992-2020, Free Software Foundation, Inc.      *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/raise.h gcc-11.1.0/gcc/ada/raise.h
*** gcc-10.3.0/gcc/ada/raise.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/raise.h	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/repinfo-input.adb gcc-11.1.0/gcc/ada/repinfo-input.adb
*** gcc-10.3.0/gcc/ada/repinfo-input.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/repinfo-input.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2018-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2018-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** with Namet;    use Namet;
*** 36,48 ****
  with Output;   use Output;
  with Snames;   use Snames;
  with Table;
  
  package body Repinfo.Input is
  
!    SSU : constant := 8;
!    --  Value for Storage_Unit, we do not want to get this from TTypes, since
!    --  this introduces problematic dependencies in ASIS, and in any case this
!    --  value is assumed to be 8 for the implementation of the DDA.
  
     type JSON_Entity_Kind is (JE_Record_Type, JE_Array_Type, JE_Other);
     --  Kind of an entiy
--- 30,41 ----
  with Output;   use Output;
  with Snames;   use Snames;
  with Table;
+ with Ttypes;
  
  package body Repinfo.Input is
  
!    SSU : Pos renames Ttypes.System_Storage_Unit;
!    --  Value for Storage_Unit
  
     type JSON_Entity_Kind is (JE_Record_Type, JE_Array_Type, JE_Other);
     --  Kind of an entiy
diff -Nrcpad gcc-10.3.0/gcc/ada/repinfo-input.ads gcc-11.1.0/gcc/ada/repinfo-input.ads
*** gcc-10.3.0/gcc/ada/repinfo-input.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/repinfo-input.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2018-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2018-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/repinfo.adb gcc-11.1.0/gcc/ada/repinfo.adb
*** gcc-10.3.0/gcc/ada/repinfo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/repinfo.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
***************
*** 30,52 ****
  ------------------------------------------------------------------------------
  
  with Alloc;
! with Atree;   use Atree;
! with Casing;  use Casing;
! with Debug;   use Debug;
! with Einfo;   use Einfo;
! with Lib;     use Lib;
! with Namet;   use Namet;
! with Nlists;  use Nlists;
! with Opt;     use Opt;
! with Output;  use Output;
! with Sem_Aux; use Sem_Aux;
! with Sinfo;   use Sinfo;
! with Sinput;  use Sinput;
! with Snames;  use Snames;
! with Stringt; use Stringt;
  with Table;
! with Uname;   use Uname;
! with Urealp;  use Urealp;
  
  with Ada.Unchecked_Conversion;
  
--- 24,48 ----
  ------------------------------------------------------------------------------
  
  with Alloc;
! with Atree;    use Atree;
! with Casing;   use Casing;
! with Debug;    use Debug;
! with Einfo;    use Einfo;
! with Lib;      use Lib;
! with Namet;    use Namet;
! with Nlists;   use Nlists;
! with Opt;      use Opt;
! with Output;   use Output;
! with Sem_Aux;  use Sem_Aux;
! with Sem_Eval; use Sem_Eval;
! with Sinfo;    use Sinfo;
! with Sinput;   use Sinput;
! with Snames;   use Snames;
! with Stringt;  use Stringt;
  with Table;
! with Ttypes;
! with Uname;    use Uname;
! with Urealp;   use Urealp;
  
  with Ada.Unchecked_Conversion;
  
*************** with GNAT.HTable;
*** 54,71 ****
  
  package body Repinfo is
  
!    SSU : constant := 8;
!    --  Value for Storage_Unit, we do not want to get this from TTypes, since
!    --  this introduces problematic dependencies in ASIS, and in any case this
!    --  value is assumed to be 8 for the implementation of the DDA.
  
     ---------------------------------------
     -- Representation of GCC Expressions --
     ---------------------------------------
  
     --    A table internal to this unit is used to hold the values of back
!    --    annotated expressions. This table is written out by -gnatt and read
!    --    back in for ASIS processing.
  
     --    Node values are stored as Uint values using the negative of the node
     --    index in this table. Constants appear as non-negative Uint values.
--- 50,64 ----
  
  package body Repinfo is
  
!    SSU : Pos renames Ttypes.System_Storage_Unit;
!    --  Value for Storage_Unit
  
     ---------------------------------------
     -- Representation of GCC Expressions --
     ---------------------------------------
  
     --    A table internal to this unit is used to hold the values of back
!    --    annotated expressions.
  
     --    Node values are stored as Uint values using the negative of the node
     --    index in this table. Constants appear as non-negative Uint values.
*************** package body Repinfo is
*** 79,85 ****
  
     --  The following representation clause ensures that the above record
     --  has no holes. We do this so that when instances of this record are
!    --  written by Tree_Gen, we do not write uninitialized values to the file.
  
     for Exp_Node use record
        Expr at  0 range 0 .. 31;
--- 72,78 ----
  
     --  The following representation clause ensures that the above record
     --  has no holes. We do this so that when instances of this record are
!    --  written, we do not write uninitialized values to the file.
  
     for Exp_Node use record
        Expr at  0 range 0 .. 31;
*************** package body Repinfo is
*** 145,155 ****
     -- Local Subprograms --
     -----------------------
  
-    function Back_End_Layout return Boolean;
-    --  Test for layout mode, True = back end, False = front end. This function
-    --  is used rather than checking the configuration parameter because we do
-    --  not want Repinfo to depend on Targparm (for ASIS)
- 
     procedure List_Entities
       (Ent              : Entity_Id;
        Bytes_Big_Endian : Boolean;
--- 138,143 ----
*************** package body Repinfo is
*** 225,242 ****
     --  flag Paren is set, then the output is surrounded in parentheses if it is
     --  other than a simple value.
  
-    ---------------------
-    -- Back_End_Layout --
-    ---------------------
- 
-    function Back_End_Layout return Boolean is
-    begin
-       --  We have back-end layout if the back end has made any entries in the
-       --  table of GCC expressions, otherwise we have front-end layout.
- 
-       return Rep_Table.Last > 0;
-    end Back_End_Layout;
- 
     ------------------------
     -- Create_Discrim_Ref --
     ------------------------
--- 213,218 ----
*************** package body Repinfo is
*** 534,542 ****
  
                    List_Entities (E, Bytes_Big_Endian, True);
  
!                elsif Ekind_In (E, E_Entry,
!                                   E_Entry_Family,
!                                   E_Subprogram_Type)
                 then
                    if List_Representation_Info_Mechanisms then
                       List_Subprogram_Info (E);
--- 510,518 ----
  
                    List_Entities (E, Bytes_Big_Endian, True);
  
!                elsif Ekind (E) in E_Entry
!                                 | E_Entry_Family
!                                 | E_Subprogram_Type
                 then
                    if List_Representation_Info_Mechanisms then
                       List_Subprogram_Info (E);
*************** package body Repinfo is
*** 565,573 ****
  
                 --  Note that formals are not annotated so we skip them here
  
!                elsif Ekind_In (E, E_Constant,
!                                   E_Loop_Parameter,
!                                   E_Variable)
                 then
                    if List_Representation_Info >= 2 then
                       List_Object_Info (E);
--- 541,549 ----
  
                 --  Note that formals are not annotated so we skip them here
  
!                elsif Ekind (E) in E_Constant
!                                 | E_Loop_Parameter
!                                 | E_Variable
                 then
                    if List_Representation_Info >= 2 then
                       List_Object_Info (E);
*************** package body Repinfo is
*** 585,596 ****
  
                 --  Recurse into bodies
  
!                elsif Ekind_In (E, E_Package_Body,
!                                   E_Protected_Body,
!                                   E_Protected_Type,
!                                   E_Subprogram_Body,
!                                   E_Task_Body,
!                                   E_Task_Type)
                 then
                    List_Entities (E, Bytes_Big_Endian);
  
--- 561,572 ----
  
                 --  Recurse into bodies
  
!                elsif Ekind (E) in E_Package_Body
!                                 | E_Protected_Body
!                                 | E_Protected_Type
!                                 | E_Subprogram_Body
!                                 | E_Task_Body
!                                 | E_Task_Type
                 then
                    List_Entities (E, Bytes_Big_Endian);
  
*************** package body Repinfo is
*** 601,607 ****
                 end if;
              end if;
  
!             E := Next_Entity (E);
           end loop;
  
           --  For a package body, the entities of the visible subprograms are
--- 577,583 ----
                 end if;
              end if;
  
!             Next_Entity (E);
           end loop;
  
           --  For a package body, the entities of the visible subprograms are
*************** package body Repinfo is
*** 831,866 ****
     -------------------------
  
     procedure List_Linker_Section (Ent : Entity_Id) is
-       function Expr_Value_S (N : Node_Id) return Node_Id;
-       --  Returns the folded value of the expression. This function is called
-       --  in instances where it has already been determined that the expression
-       --  is static or its value is known at compile time. This version is used
-       --  for string types and returns the corresponding N_String_Literal node.
-       --  NOTE: This is an exact copy of Sem_Eval.Expr_Value_S. Licensing stops
-       --  Repinfo from within Sem_Eval. Once ASIS is removed, and the licenses
-       --  are modified, Repinfo should be able to rely on Sem_Eval.
- 
-       ------------------
-       -- Expr_Value_S --
-       ------------------
- 
-       function Expr_Value_S (N : Node_Id) return Node_Id is
-       begin
-          if Nkind (N) = N_String_Literal then
-             return N;
-          else
-             pragma Assert (Ekind (Entity (N)) = E_Constant);
-             return Expr_Value_S (Constant_Value (Entity (N)));
-          end if;
-       end Expr_Value_S;
- 
-       --  Local variables
- 
        Args : List_Id;
        Sect : Node_Id;
  
-    --  Start of processing for List_Linker_Section
- 
     begin
        if Present (Linker_Section_Pragma (Ent)) then
           Args := Pragma_Argument_Associations (Linker_Section_Pragma (Ent));
--- 807,815 ----
*************** package body Repinfo is
*** 1040,1049 ****
           Comp := First_Component_Or_Discriminant (Ent);
           while Present (Comp) loop
  
!             --  Skip discriminant in unchecked union (since it is not there!)
  
              if Ekind (Comp) = E_Discriminant
!               and then Is_Unchecked_Union (Ent)
              then
                 goto Continue;
              end if;
--- 989,1000 ----
           Comp := First_Component_Or_Discriminant (Ent);
           while Present (Comp) loop
  
!             --  Skip a completely hidden discriminant or a discriminant in an
!             --  unchecked union (since it is not there).
  
              if Ekind (Comp) = E_Discriminant
!               and then (Is_Completely_Hidden (Comp)
!                          or else Is_Unchecked_Union (Ent))
              then
                 goto Continue;
              end if;
*************** package body Repinfo is
*** 1256,1269 ****
           else
              Write_Val (Esiz, Paren => not List_Representation_Info_To_JSON);
  
-             --  If in front-end layout mode, then dynamic size is stored in
-             --  storage units, so renormalize for output.
- 
-             if not Back_End_Layout then
-                Write_Str (" * ");
-                Write_Int (SSU);
-             end if;
- 
              --  Add appropriate first bit offset
  
              if not List_Representation_Info_To_JSON then
--- 1207,1212 ----
*************** package body Repinfo is
*** 1312,1321 ****
           Comp := First_Component_Or_Discriminant (Ent);
           while Present (Comp) loop
  
!             --  Skip discriminant in unchecked union (since it is not there!)
  
              if Ekind (Comp) = E_Discriminant
!               and then Is_Unchecked_Union (Ent)
              then
                 goto Continue;
              end if;
--- 1255,1266 ----
           Comp := First_Component_Or_Discriminant (Ent);
           while Present (Comp) loop
  
!             --  Skip a completely hidden discriminant or a discriminant in an
!             --  unchecked union (since it is not there).
  
              if Ekind (Comp) = E_Discriminant
!               and then (Is_Completely_Hidden (Comp)
!                          or else Is_Unchecked_Union (Ent))
              then
                 goto Continue;
              end if;
*************** package body Repinfo is
*** 1404,1410 ****
              Derived_Disc : Entity_Id;
  
           begin
!             Derived_Disc := First_Stored_Discriminant (Outer_Ent);
  
              --  Loop over the discriminants of the extension
  
--- 1349,1355 ----
              Derived_Disc : Entity_Id;
  
           begin
!             Derived_Disc := First_Discriminant (Outer_Ent);
  
              --  Loop over the discriminants of the extension
  
*************** package body Repinfo is
*** 1428,1434 ****
                    end if;
                 end if;
  
!                Next_Stored_Discriminant (Derived_Disc);
              end loop;
  
              --  Disc is not constrained by a discriminant of Outer_Ent
--- 1373,1379 ----
                    end if;
                 end if;
  
!                Next_Discriminant (Derived_Disc);
              end loop;
  
              --  Disc is not constrained by a discriminant of Outer_Ent
*************** package body Repinfo is
*** 1497,1508 ****
                 end if;
  
                 --  If the record has discriminants and is not an unchecked
!                --  union, then display them now.
  
                 if Has_Discriminants (Ent)
                   and then not Is_Unchecked_Union (Ent)
                 then
!                   Disc := First_Stored_Discriminant (Ent);
                    while Present (Disc) loop
  
                       --  If this is a record extension and the discriminant is
--- 1442,1454 ----
                 end if;
  
                 --  If the record has discriminants and is not an unchecked
!                --  union, then display them now. Note that, even if this is
!                --  a structural layout, we list the visible discriminants.
  
                 if Has_Discriminants (Ent)
                   and then not Is_Unchecked_Union (Ent)
                 then
!                   Disc := First_Discriminant (Ent);
                    while Present (Disc) loop
  
                       --  If this is a record extension and the discriminant is
*************** package body Repinfo is
*** 1540,1546 ****
                       List_Component_Layout (Listed_Disc, Indent => Indent);
  
                    <<Continue_Disc>>
!                      Next_Stored_Discriminant (Disc);
                    end loop;
                 end if;
  
--- 1486,1492 ----
                       List_Component_Layout (Listed_Disc, Indent => Indent);
  
                    <<Continue_Disc>>
!                      Next_Discriminant (Disc);
                    end loop;
                 end if;
  
*************** package body Repinfo is
*** 1936,1941 ****
--- 1882,1902 ----
           when Convention_C =>
              Write_Str ("C");
  
+          when Convention_C_Variadic =>
+             declare
+                N : Nat :=
+                  Convention_Id'Pos (Convention (Ent)) -
+                    Convention_Id'Pos (Convention_C_Variadic_0);
+             begin
+                Write_Str ("C_Variadic_");
+                if N >= 10 then
+                   Write_Char ('1');
+                   N := N - 10;
+                end if;
+                pragma Assert (N < 10);
+                Write_Char (Character'Val (Character'Pos ('0') + N));
+             end;
+ 
           when Convention_COBOL =>
              Write_Str ("COBOL");
  
*************** package body Repinfo is
*** 2336,2359 ****
        end loop;
     end Spaces;
  
-    ---------------
-    -- Tree_Read --
-    ---------------
- 
-    procedure Tree_Read is
-    begin
-       Rep_Table.Tree_Read;
-    end Tree_Read;
- 
-    ----------------
-    -- Tree_Write --
-    ----------------
- 
-    procedure Tree_Write is
-    begin
-       Rep_Table.Tree_Write;
-    end Tree_Write;
- 
     ---------------------
     -- Write_Info_Line --
     ---------------------
--- 2297,2302 ----
*************** package body Repinfo is
*** 2429,2439 ****
                 Write_Char ('(');
              end if;
  
!             if Back_End_Layout then
!                List_GCC_Expression (Val);
!             else
!                Write_Name_Decoded (Chars (Get_Dynamic_SO_Entity (Val)));
!             end if;
  
              if Paren then
                 Write_Char (')');
--- 2372,2378 ----
                 Write_Char ('(');
              end if;
  
!             List_GCC_Expression (Val);
  
              if Paren then
                 Write_Char (')');
diff -Nrcpad gcc-10.3.0/gcc/ada/repinfo.ads gcc-11.1.0/gcc/ada/repinfo.ads
*** gcc-10.3.0/gcc/ada/repinfo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/repinfo.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
***************
*** 31,39 ****
  
  --  This package contains the routines to handle back annotation of the
  --  tree to fill in representation information, and also the routines used
! --  by -gnatR to output this information. This unit is used both in the
! --  compiler and in ASIS (it is used in ASIS as part of the implementation
! --  of the Data Decomposition Annex).
  
  --  WARNING: There is a C version of this package. Any changes to this
  --  source file must be properly reflected in the C header file repinfo.h
--- 25,31 ----
  
  --  This package contains the routines to handle back annotation of the
  --  tree to fill in representation information, and also the routines used
! --  by -gnatR to output this information.
  
  --  WARNING: There is a C version of this package. Any changes to this
  --  source file must be properly reflected in the C header file repinfo.h
*************** package Repinfo is
*** 53,80 ****
     --  the corresponding entities as constant non-negative integers,
     --  and the Uint values are stored directly in these fields.
  
!    --  For composite types, there are three cases:
  
     --    1. In some cases the front end knows the values statically,
     --       for example in the case where representation clauses or
     --       pragmas specify the values.
  
!    --    2. If Frontend_Layout is False, then the backend is responsible
!    --       for layout of all types and objects not laid out by the
!    --       front end. This includes all dynamic values, and also
!    --       static values (e.g. record sizes) when not set by the
     --       front end.
  
-    --    3. If Frontend_Layout is True, then the front end lays out
-    --       all data, according to target dependent size and alignment
-    --       information, creating dynamic inlinable functions where
-    --       needed in the case of sizes not known till runtime.
- 
     -----------------------------
     -- Back Annotation by Gigi --
     -----------------------------
  
!    --  The following interface is used by gigi if Frontend_Layout is False
  
     --  As part of the processing in gigi, the types are laid out and
     --  appropriate values computed for the sizes and component positions
--- 45,66 ----
     --  the corresponding entities as constant non-negative integers,
     --  and the Uint values are stored directly in these fields.
  
!    --  For composite types, there are two cases:
  
     --    1. In some cases the front end knows the values statically,
     --       for example in the case where representation clauses or
     --       pragmas specify the values.
  
!    --    2. The backend is responsible for layout of all types and objects
!    --       not laid out by the front end. This includes all dynamic values,
!    --       and also static values (e.g. record sizes) when not set by the
     --       front end.
  
     -----------------------------
     -- Back Annotation by Gigi --
     -----------------------------
  
!    --  The following interface is used by gigi
  
     --  As part of the processing in gigi, the types are laid out and
     --  appropriate values computed for the sizes and component positions
*************** package Repinfo is
*** 112,123 ****
     --       in terms of the variables represented symbolically.
  
     --  Note: the extended back annotation for the dynamic case is needed only
!    --  for -gnatR3 output, and for proper operation of the ASIS DDA. Since it
!    --  can be expensive to do this back annotation (for discriminated records
!    --  with many variable-length arrays), we only do the full back annotation
!    --  in -gnatR3 mode, or ASIS mode. In any other mode, the back-end just sets
!    --  the value to Uint_Minus_1, indicating that the value of the attribute
!    --  depends on discriminant information, but not giving further details.
  
     --  GCC expressions are represented with a Uint value that is negative.
     --  See the body of this package for details on the representation used.
--- 98,109 ----
     --       in terms of the variables represented symbolically.
  
     --  Note: the extended back annotation for the dynamic case is needed only
!    --  for -gnatR3 output. Since it can be expensive to do this back annotation
!    --  (for discriminated records with many variable-length arrays), we only do
!    --  the full back annotation in -gnatR3 mode. In any other mode, the
!    --  back-end just sets the value to Uint_Minus_1, indicating that the value
!    --  of the attribute depends on discriminant information, but not giving
!    --  further details.
  
     --  GCC expressions are represented with a Uint value that is negative.
     --  See the body of this package for details on the representation used.
*************** package Repinfo is
*** 129,136 ****
     --  with a given set of discriminant values, indicates whether the variant
     --  is present for that set of values (result is True, i.e. non-zero) or
     --  not present (result is False, i.e. zero). Again, the full annotation of
!    --  this field is done only in -gnatR3 mode or in ASIS mode, and in other
!    --  modes, the value is set to Uint_Minus_1.
  
     subtype Node_Ref is Uint;
     --  Subtype used for negative Uint values used to represent nodes
--- 115,122 ----
     --  with a given set of discriminant values, indicates whether the variant
     --  is present for that set of values (result is True, i.e. non-zero) or
     --  not present (result is False, i.e. zero). Again, the full annotation of
!    --  this field is done only in -gnatR3 mode, and in other modes, the value
!    --  is set to Uint_Minus_1.
  
     subtype Node_Ref is Uint;
     --  Subtype used for negative Uint values used to represent nodes
*************** package Repinfo is
*** 282,290 ****
     --    number of elements of the value of "operands" is specified by the
     --    operands column in the line associated with the symbol in the table.
  
!    --    As documented above, the full back annotation is only done in -gnatR3
!    --    or ASIS mode. In the other cases, if the numerical expression is not
!    --    a number, then it is replaced with the "??" string.
  
     ------------------------
     -- The gigi Interface --
--- 268,276 ----
     --    number of elements of the value of "operands" is specified by the
     --    operands column in the line associated with the symbol in the table.
  
!    --    As documented above, the full back annotation is only done in -gnatR3.
!    --    In the other cases, if the numerical expression is not a number, then
!    --    it is replaced with the "??" string.
  
     ------------------------
     -- The gigi Interface --
*************** package Repinfo is
*** 309,336 ****
     -- Front-End Interface for Dynamic Size/Offset Values --
     --------------------------------------------------------
  
!    --  If Frontend_Layout is True, then the front-end deals with all
!    --  dynamic size and offset fields. There are two cases:
! 
!    --    1. The value can be computed at the time of type freezing, and
!    --       is stored in a run-time constant. In this case, the field
!    --       contains a reference to this entity. In the case of sizes
!    --       the value stored is the size in storage units, since dynamic
!    --       sizes are always a multiple of storage units.
! 
!    --    2. The size/offset depends on the value of discriminants at
!    --       run-time. In this case, the front end builds a function to
!    --       compute the value. This function has a single parameter
!    --       which is the discriminated record object in question. Any
!    --       references to discriminant values are simply references to
!    --       the appropriate discriminant in this single argument, and
!    --       to compute the required size/offset value at run time, the
!    --       code generator simply constructs a call to the function
!    --       with the appropriate argument. The size/offset field in
!    --       this case contains a reference to the function entity.
!    --       Note that as for case 1, if such a function is used to
!    --       return a size, then the size in storage units is returned,
!    --       not the size in bits.
  
     --  The interface here allows these created entities to be referenced
     --  using negative Unit values, so that they can be stored in the
--- 295,302 ----
     -- Front-End Interface for Dynamic Size/Offset Values --
     --------------------------------------------------------
  
!    --  This interface is used by GNAT LLVM to deal with all dynamic size and
!    --  offset fields.
  
     --  The interface here allows these created entities to be referenced
     --  using negative Unit values, so that they can be stored in the
*************** package Repinfo is
*** 375,383 ****
     --  and entity id values and the back end makes Get_Dynamic_SO_Ref
     --  calls to retrieve them.
  
!    --------------------
!    -- ASIS_Interface --
!    --------------------
  
     type Discrim_List is array (Pos range <>) of Uint;
     --  Type used to represent list of discriminant values
--- 341,349 ----
     --  and entity id values and the back end makes Get_Dynamic_SO_Ref
     --  calls to retrieve them.
  
!    ------------------------------
!    -- External tools Interface --
!    ------------------------------
  
     type Discrim_List is array (Pos range <>) of Uint;
     --  Type used to represent list of discriminant values
*************** package Repinfo is
*** 390,399 ****
     --  as an argument value, and return it unmodified. A No_Uint value is
     --  also returned unmodified.
  
-    procedure Tree_Read;
-    --  Initializes internal tables from current tree file using the relevant
-    --  Table.Tree_Read routines.
- 
     ------------------------
     -- Compiler Interface --
     ------------------------
--- 356,361 ----
*************** package Repinfo is
*** 402,411 ****
     --  Procedure to list representation information. Bytes_Big_Endian is the
     --  value from Ttypes (Repinfo cannot have a dependency on Ttypes).
  
-    procedure Tree_Write;
-    --  Writes out internal tables to current tree file using the relevant
-    --  Table.Tree_Write routines.
- 
     --------------------------
     -- Debugging Procedures --
     --------------------------
--- 364,369 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/repinfo.h gcc-11.1.0/gcc/ada/repinfo.h
*** gcc-10.3.0/gcc/ada/repinfo.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/repinfo.h	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1999-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1999-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/restrict.adb gcc-11.1.0/gcc/ada/restrict.adb
*** gcc-10.3.0/gcc/ada/restrict.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/restrict.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Opt;      use Opt;
*** 35,71 ****
  with Sinfo;    use Sinfo;
  with Sinput;   use Sinput;
  with Stand;    use Stand;
  with Uname;    use Uname;
  
  package body Restrict is
  
!    -------------------------------
!    -- SPARK Restriction Control --
!    -------------------------------
! 
!    --  SPARK HIDE directives allow the effect of the SPARK_05 restriction to be
!    --  turned off for a specified region of code, and the following tables are
!    --  the data structures used to keep track of these regions.
! 
!    --  The table contains pairs of source locations, the first being the start
!    --  location for hidden region, and the second being the end location.
! 
!    --  Note that the start location is included in the hidden region, while
!    --  the end location is excluded from it. (It typically corresponds to the
!    --  next token during scanning.)
! 
!    type SPARK_Hide_Entry is record
!       Start : Source_Ptr;
!       Stop  : Source_Ptr;
!    end record;
! 
!    package SPARK_Hides is new Table.Table (
!      Table_Component_Type => SPARK_Hide_Entry,
!      Table_Index_Type     => Natural,
!      Table_Low_Bound      => 1,
!      Table_Initial        => 100,
!      Table_Increment      => 200,
!      Table_Name           => "SPARK Hides");
  
     --------------------------------
     -- Package Local Declarations --
--- 35,48 ----
  with Sinfo;    use Sinfo;
  with Sinput;   use Sinput;
  with Stand;    use Stand;
+ with Targparm; use Targparm;
  with Uname;    use Uname;
  
  package body Restrict is
  
!    Global_Restriction_No_Tasking : Boolean := False;
!    --  Set to True when No_Tasking is set in the run-time package System
!    --  or in a configuration pragmas file (for example, gnat.adc).
  
     --------------------------------
     -- Package Local Declarations --
*************** package body Restrict is
*** 260,266 ****
  
        --  For type conversion, check converted expression
  
!       elsif Nkind_In (Obj, N_Unchecked_Type_Conversion, N_Type_Conversion) then
           Check_No_Implicit_Aliasing (Expression (Obj));
           return;
  
--- 237,243 ----
  
        --  For type conversion, check converted expression
  
!       elsif Nkind (Obj) in N_Unchecked_Type_Conversion | N_Type_Conversion then
           Check_No_Implicit_Aliasing (Expression (Obj));
           return;
  
*************** package body Restrict is
*** 511,523 ****
           return;
        end if;
  
-       --  In SPARK 05 mode, issue an error for any use of class-wide, even if
-       --  the No_Dispatch restriction is not set.
- 
-       if R = No_Dispatch then
-          Check_SPARK_05_Restriction ("class-wide is not allowed", N);
-       end if;
- 
        if UI_Is_In_Int_Range (V) then
           VV := Integer (UI_To_Int (V));
        else
--- 488,493 ----
*************** package body Restrict is
*** 656,662 ****
           return;
        end if;
  
!       Id := Identifier (N);
        A_Id := Get_Aspect_Id (Chars (Id));
        pragma Assert (A_Id /= No_Aspect);
  
--- 626,639 ----
           return;
        end if;
  
!       if Nkind (N) = N_Pragma then
!          Id := Pragma_Identifier (N);
!       elsif Nkind (N) = N_Attribute_Definition_Clause then
!          Id := N;
!       else
!          Id := Identifier (N);
!       end if;
! 
        A_Id := Get_Aspect_Id (Chars (Id));
        pragma Assert (A_Id /= No_Aspect);
  
*************** package body Restrict is
*** 769,775 ****
                             and then Chars (Scope (Ent)) = Name_Ada
                             and then Scope (Scope (Ent)) = Standard_Standard)
                 then
!                   if Nkind_In (Expr, N_Identifier, N_Operator_Symbol)
                      and then Chars (Ent) = Chars (Expr)
                    then
                       Error_Msg_Node_1 := N;
--- 746,752 ----
                             and then Chars (Scope (Ent)) = Name_Ada
                             and then Scope (Scope (Ent)) = Standard_Standard)
                 then
!                   if Nkind (Expr) in N_Identifier | N_Operator_Symbol
                      and then Chars (Ent) = Chars (Expr)
                    then
                       Error_Msg_Node_1 := N;
*************** package body Restrict is
*** 786,792 ****
  
                 --  Here if at outer level of entity name in table
  
!                elsif Nkind_In (Expr, N_Identifier, N_Operator_Symbol) then
                    exit;
  
                 --  Here if neither at the outer level
--- 763,769 ----
  
                 --  Here if at outer level of entity name in table
  
!                elsif Nkind (Expr) in N_Identifier | N_Operator_Symbol then
                    exit;
  
                 --  Here if neither at the outer level
*************** package body Restrict is
*** 846,939 ****
        end if;
     end Check_Restriction_No_Use_Of_Pragma;
  
-    --------------------------------
-    -- Check_SPARK_05_Restriction --
-    --------------------------------
- 
-    procedure Check_SPARK_05_Restriction
-      (Msg   : String;
-       N     : Node_Id;
-       Force : Boolean := False)
-    is
-       Msg_Issued          : Boolean;
-       Save_Error_Msg_Sloc : Source_Ptr;
-       Onode               : constant Node_Id := Original_Node (N);
- 
-    begin
-       --  Output message if Force set
- 
-       if Force
- 
-         --  Or if this node comes from source
- 
-         or else Comes_From_Source (N)
- 
-         --  Or if this is a range node which rewrites a range attribute and
-         --  the range attribute comes from source.
- 
-         or else (Nkind (N) = N_Range
-                   and then Nkind (Onode) = N_Attribute_Reference
-                   and then Attribute_Name (Onode) = Name_Range
-                   and then Comes_From_Source (Onode))
- 
-         --  Or this is an expression that does not come from source, which is
-         --  a rewriting of an expression that does come from source.
- 
-         or else (Nkind (N) in N_Subexpr and then Comes_From_Source (Onode))
-       then
-          if Restriction_Check_Required (SPARK_05)
-            and then Is_In_Hidden_Part_In_SPARK (Sloc (N))
-          then
-             return;
-          end if;
- 
-          --  Since the call to Restriction_Msg from Check_Restriction may set
-          --  Error_Msg_Sloc to the location of the pragma restriction, save and
-          --  restore the previous value of the global variable around the call.
- 
-          Save_Error_Msg_Sloc := Error_Msg_Sloc;
-          Check_Restriction (Msg_Issued, SPARK_05, First_Node (N));
-          Error_Msg_Sloc := Save_Error_Msg_Sloc;
- 
-          if Msg_Issued then
-             Error_Msg_F ("\\| " & Msg, N);
-          end if;
-       end if;
-    end Check_SPARK_05_Restriction;
- 
-    procedure Check_SPARK_05_Restriction
-      (Msg1 : String;
-       Msg2 : String;
-       N    : Node_Id)
-    is
-       Msg_Issued          : Boolean;
-       Save_Error_Msg_Sloc : Source_Ptr;
- 
-    begin
-       pragma Assert (Msg2'Length /= 0 and then Msg2 (Msg2'First) = '\');
- 
-       if Comes_From_Source (Original_Node (N)) then
-          if Restriction_Check_Required (SPARK_05)
-            and then Is_In_Hidden_Part_In_SPARK (Sloc (N))
-          then
-             return;
-          end if;
- 
-          --  Since the call to Restriction_Msg from Check_Restriction may set
-          --  Error_Msg_Sloc to the location of the pragma restriction, save and
-          --  restore the previous value of the global variable around the call.
- 
-          Save_Error_Msg_Sloc := Error_Msg_Sloc;
-          Check_Restriction (Msg_Issued, SPARK_05, First_Node (N));
-          Error_Msg_Sloc := Save_Error_Msg_Sloc;
- 
-          if Msg_Issued then
-             Error_Msg_F ("\\| " & Msg1, N);
-             Error_Msg_F (Msg2, N);
-          end if;
-       end if;
-    end Check_SPARK_05_Restriction;
- 
     --------------------------------------
     -- Check_Wide_Character_Restriction --
     --------------------------------------
--- 823,828 ----
*************** package body Restrict is
*** 1021,1044 ****
        return Not_A_Restriction_Id;
     end Get_Restriction_Id;
  
!    --------------------------------
!    -- Is_In_Hidden_Part_In_SPARK --
!    --------------------------------
  
!    function Is_In_Hidden_Part_In_SPARK (Loc : Source_Ptr) return Boolean is
     begin
!       --  Loop through table of hidden ranges
! 
!       for J in SPARK_Hides.First .. SPARK_Hides.Last loop
!          if SPARK_Hides.Table (J).Start <= Loc
!            and then Loc < SPARK_Hides.Table (J).Stop
!          then
!             return True;
!          end if;
!       end loop;
! 
!       return False;
!    end Is_In_Hidden_Part_In_SPARK;
  
     -------------------------------
     -- No_Exception_Handlers_Set --
--- 910,924 ----
        return Not_A_Restriction_Id;
     end Get_Restriction_Id;
  
!    -----------------------
!    -- Global_No_Tasking --
!    -----------------------
  
!    function Global_No_Tasking return Boolean is
     begin
!       return Global_Restriction_No_Tasking
!         or else Targparm.Restrictions_On_Target.Set (No_Tasking);
!    end Global_No_Tasking;
  
     -------------------------------
     -- No_Exception_Handlers_Set --
*************** package body Restrict is
*** 1097,1103 ****
               and then
             OK_No_Use_Of_Entity_Name (Selector_Name (N));
  
!       elsif Nkind_In (N, N_Identifier, N_Operator_Symbol) then
           return True;
  
        else
--- 977,983 ----
               and then
             OK_No_Use_Of_Entity_Name (Selector_Name (N));
  
!       elsif Nkind (N) in N_Identifier | N_Operator_Symbol then
           return True;
  
        else
*************** package body Restrict is
*** 1134,1154 ****
           when Name_No_Task_Attributes =>
              New_Name := Name_No_Task_Attributes_Package;
  
-          --  SPARK is special in that we unconditionally warn
- 
-          when Name_SPARK =>
-             Error_Msg_Name_1 := Name_SPARK;
-             Error_Msg_N ("restriction identifier % is obsolescent??", N);
-             Error_Msg_Name_1 := Name_SPARK_05;
-             Error_Msg_N ("|use restriction identifier % instead??", N);
-             return Name_SPARK_05;
- 
           when others =>
              return Old_Name;
        end case;
  
!       --  Output warning if we are warning on obsolescent features for all
!       --  cases other than SPARK.
  
        if Warn_On_Obsolescent_Feature then
           Error_Msg_Name_1 := Old_Name;
--- 1014,1024 ----
           when Name_No_Task_Attributes =>
              New_Name := Name_No_Task_Attributes_Package;
  
           when others =>
              return Old_Name;
        end case;
  
!       --  Output warning if we are warning on obsolescent features.
  
        if Warn_On_Obsolescent_Feature then
           Error_Msg_Name_1 := Old_Name;
*************** package body Restrict is
*** 1250,1257 ****
        --  Append given string to Msg, bumping Len appropriately
  
        procedure Id_Case (S : String; Quotes : Boolean := True);
!       --  Given a string S, case it according to current identifier casing,
!       --  except for SPARK_05 (an acronym) which is set all upper case, and
        --  store in Error_Msg_String. Then append `~` to the message buffer
        --  to output the string unchanged surrounded in quotes. The quotes
        --  are suppressed if Quotes = False.
--- 1120,1126 ----
        --  Append given string to Msg, bumping Len appropriately
  
        procedure Id_Case (S : String; Quotes : Boolean := True);
!       --  Given a string S, case it according to current identifier casing, and
        --  store in Error_Msg_String. Then append `~` to the message buffer
        --  to output the string unchanged surrounded in quotes. The quotes
        --  are suppressed if Quotes = False.
*************** package body Restrict is
*** 1284,1296 ****
        begin
           Name_Buffer (1 .. S'Last) := S;
           Name_Len := S'Length;
! 
!          if R = SPARK_05 then
!             Set_All_Upper_Case;
!          else
!             Set_Casing (Identifier_Casing (Get_Source_File_Index (Sloc (N))));
!          end if;
! 
           Error_Msg_Strlen := Name_Len;
           Error_Msg_String (1 .. Name_Len) := Name_Buffer (1 .. Name_Len);
  
--- 1153,1159 ----
        begin
           Name_Buffer (1 .. S'Last) := S;
           Name_Len := S'Length;
!          Set_Casing (Identifier_Casing (Get_Source_File_Index (Sloc (N))));
           Error_Msg_Strlen := Name_Len;
           Error_Msg_String (1 .. Name_Len) := Name_Buffer (1 .. Name_Len);
  
*************** package body Restrict is
*** 1395,1409 ****
  
     function Same_Entity (E1, E2 : Node_Id) return Boolean is
     begin
!       if Nkind_In (E1, N_Identifier, N_Operator_Symbol)
             and then
!          Nkind_In (E2, N_Identifier, N_Operator_Symbol)
        then
           return Chars (E1) = Chars (E2);
  
!       elsif Nkind_In (E1, N_Selected_Component, N_Expanded_Name)
                and then
!             Nkind_In (E2, N_Selected_Component, N_Expanded_Name)
        then
           return Same_Unit (Prefix (E1), Prefix (E2))
                    and then
--- 1258,1272 ----
  
     function Same_Entity (E1, E2 : Node_Id) return Boolean is
     begin
!       if Nkind (E1) in N_Identifier | N_Operator_Symbol
             and then
!          Nkind (E2) in N_Identifier | N_Operator_Symbol
        then
           return Chars (E1) = Chars (E2);
  
!       elsif Nkind (E1) in N_Selected_Component | N_Expanded_Name
                and then
!             Nkind (E2) in N_Selected_Component | N_Expanded_Name
        then
           return Same_Unit (Prefix (E1), Prefix (E2))
                    and then
*************** package body Restrict is
*** 1422,1430 ****
        if Nkind (U1) = N_Identifier and then Nkind (U2) = N_Identifier then
           return Chars (U1) = Chars (U2);
  
!       elsif Nkind_In (U1, N_Selected_Component, N_Expanded_Name)
                and then
!             Nkind_In (U2, N_Selected_Component, N_Expanded_Name)
        then
           return Same_Unit (Prefix (U1), Prefix (U2))
                    and then
--- 1285,1293 ----
        if Nkind (U1) = N_Identifier and then Nkind (U2) = N_Identifier then
           return Chars (U1) = Chars (U2);
  
!       elsif Nkind (U1) in N_Selected_Component | N_Expanded_Name
                and then
!             Nkind (U2) in N_Selected_Component | N_Expanded_Name
        then
           return Same_Unit (Prefix (U1), Prefix (U2))
                    and then
*************** package body Restrict is
*** 1444,1460 ****
     end Save_Config_Cunit_Boolean_Restrictions;
  
     ------------------------------
-    -- Set_Hidden_Part_In_SPARK --
-    ------------------------------
- 
-    procedure Set_Hidden_Part_In_SPARK (Loc1, Loc2 : Source_Ptr) is
-    begin
-       SPARK_Hides.Increment_Last;
-       SPARK_Hides.Table (SPARK_Hides.Last).Start := Loc1;
-       SPARK_Hides.Table (SPARK_Hides.Last).Stop  := Loc2;
-    end Set_Hidden_Part_In_SPARK;
- 
-    ------------------------------
     -- Set_Profile_Restrictions --
     ------------------------------
  
--- 1307,1312 ----
*************** package body Restrict is
*** 1502,1509 ****
     -- Set_Restriction --
     ---------------------
  
-    --  Case of Boolean restriction
- 
     procedure Set_Restriction
       (R : All_Boolean_Restrictions;
        N : Node_Id)
--- 1354,1359 ----
*************** package body Restrict is
*** 1543,1550 ****
        end if;
     end Set_Restriction;
  
-    --  Case of parameter restriction
- 
     procedure Set_Restriction
       (R : All_Parameter_Restrictions;
        N : Node_Id;
--- 1393,1398 ----
*************** package body Restrict is
*** 1594,1599 ****
--- 1442,1470 ----
        Restriction_Profile_Name (R) := No_Profile;
     end Set_Restriction;
  
+    procedure Set_Restriction
+      (R    : All_Restrictions;
+       N    : Node_Id;
+       Warn : Boolean;
+       V    : Integer := Integer'First)
+    is
+       Set : Boolean := True;
+    begin
+       if Warn and then Restriction_Active (R) then
+          Set := False;
+       end if;
+ 
+       if Set then
+          if R in All_Boolean_Restrictions then
+             Set_Restriction (R, N);
+          else
+             Set_Restriction (R, N, V);
+          end if;
+ 
+          Restriction_Warnings (R) := Warn;
+       end if;
+    end Set_Restriction;
+ 
     -----------------------------------
     -- Set_Restriction_No_Dependence --
     -----------------------------------
*************** package body Restrict is
*** 1633,1639 ****
  
     procedure Set_Restriction_No_Use_Of_Entity
       (Entity  : Node_Id;
!       Warning : Boolean;
        Profile : Profile_Name := No_Profile)
     is
        Nam : Node_Id;
--- 1504,1510 ----
  
     procedure Set_Restriction_No_Use_Of_Entity
       (Entity  : Node_Id;
!       Warn    : Boolean;
        Profile : Profile_Name := No_Profile)
     is
        Nam : Node_Id;
*************** package body Restrict is
*** 1649,1655 ****
  
              --  Error has precedence over warning
  
!             if not Warning then
                 No_Use_Of_Entity.Table (J).Warn := False;
              end if;
  
--- 1520,1526 ----
  
              --  Error has precedence over warning
  
!             if not Warn then
                 No_Use_Of_Entity.Table (J).Warn := False;
              end if;
  
*************** package body Restrict is
*** 1659,1675 ****
  
        --  Entry is not currently in table
  
!       No_Use_Of_Entity.Append ((Entity, Warning, Profile));
  
        --  Now we need to find the direct name and set Boolean2 flag
  
!       if Nkind_In (Entity, N_Identifier, N_Operator_Symbol) then
           Nam := Entity;
  
        else
           pragma Assert (Nkind (Entity) = N_Selected_Component);
           Nam := Selector_Name (Entity);
!          pragma Assert (Nkind_In (Nam, N_Identifier, N_Operator_Symbol));
        end if;
  
        Set_Name_Table_Boolean2 (Chars (Nam), True);
--- 1530,1546 ----
  
        --  Entry is not currently in table
  
!       No_Use_Of_Entity.Append ((Entity, Warn, Profile));
  
        --  Now we need to find the direct name and set Boolean2 flag
  
!       if Nkind (Entity) in N_Identifier | N_Operator_Symbol then
           Nam := Entity;
  
        else
           pragma Assert (Nkind (Entity) = N_Selected_Component);
           Nam := Selector_Name (Entity);
!          pragma Assert (Nkind (Nam) in N_Identifier | N_Operator_Symbol);
        end if;
  
        Set_Name_Table_Boolean2 (Chars (Nam), True);
*************** package body Restrict is
*** 1680,1694 ****
     ------------------------------------------------
  
     procedure Set_Restriction_No_Specification_Of_Aspect
!      (N       : Node_Id;
!       Warning : Boolean)
     is
        A_Id : constant Aspect_Id_Exclude_No_Aspect := Get_Aspect_Id (Chars (N));
  
     begin
        No_Specification_Of_Aspect_Set := True;
        No_Specification_Of_Aspects (A_Id) := Sloc (N);
!       No_Specification_Of_Aspect_Warning (A_Id) := Warning;
     end Set_Restriction_No_Specification_Of_Aspect;
  
     procedure Set_Restriction_No_Specification_Of_Aspect (A_Id : Aspect_Id) is
--- 1551,1565 ----
     ------------------------------------------------
  
     procedure Set_Restriction_No_Specification_Of_Aspect
!      (N    : Node_Id;
!       Warn : Boolean)
     is
        A_Id : constant Aspect_Id_Exclude_No_Aspect := Get_Aspect_Id (Chars (N));
  
     begin
        No_Specification_Of_Aspect_Set := True;
        No_Specification_Of_Aspects (A_Id) := Sloc (N);
!       No_Specification_Of_Aspect_Warning (A_Id) := Warn;
     end Set_Restriction_No_Specification_Of_Aspect;
  
     procedure Set_Restriction_No_Specification_Of_Aspect (A_Id : Aspect_Id) is
*************** package body Restrict is
*** 1703,1717 ****
     -----------------------------------------
  
     procedure Set_Restriction_No_Use_Of_Attribute
!      (N       : Node_Id;
!       Warning : Boolean)
     is
        A_Id : constant Attribute_Id := Get_Attribute_Id (Chars (N));
  
     begin
        No_Use_Of_Attribute_Set := True;
        No_Use_Of_Attribute (A_Id) := Sloc (N);
!       No_Use_Of_Attribute_Warning (A_Id) := Warning;
     end Set_Restriction_No_Use_Of_Attribute;
  
     procedure Set_Restriction_No_Use_Of_Attribute (A_Id : Attribute_Id) is
--- 1574,1588 ----
     -----------------------------------------
  
     procedure Set_Restriction_No_Use_Of_Attribute
!      (N    : Node_Id;
!       Warn : Boolean)
     is
        A_Id : constant Attribute_Id := Get_Attribute_Id (Chars (N));
  
     begin
        No_Use_Of_Attribute_Set := True;
        No_Use_Of_Attribute (A_Id) := Sloc (N);
!       No_Use_Of_Attribute_Warning (A_Id) := Warn;
     end Set_Restriction_No_Use_Of_Attribute;
  
     procedure Set_Restriction_No_Use_Of_Attribute (A_Id : Attribute_Id) is
*************** package body Restrict is
*** 1726,1740 ****
     --------------------------------------
  
     procedure Set_Restriction_No_Use_Of_Pragma
!      (N       : Node_Id;
!       Warning : Boolean)
     is
        A_Id : constant Pragma_Id := Get_Pragma_Id (Chars (N));
  
     begin
        No_Use_Of_Pragma_Set := True;
        No_Use_Of_Pragma (A_Id) := Sloc (N);
!       No_Use_Of_Pragma_Warning (A_Id) := Warning;
     end Set_Restriction_No_Use_Of_Pragma;
  
     procedure Set_Restriction_No_Use_Of_Pragma (A_Id : Pragma_Id) is
--- 1597,1611 ----
     --------------------------------------
  
     procedure Set_Restriction_No_Use_Of_Pragma
!      (N    : Node_Id;
!       Warn : Boolean)
     is
        A_Id : constant Pragma_Id := Get_Pragma_Id (Chars (N));
  
     begin
        No_Use_Of_Pragma_Set := True;
        No_Use_Of_Pragma (A_Id) := Sloc (N);
!       No_Use_Of_Pragma_Warning (A_Id) := Warn;
     end Set_Restriction_No_Use_Of_Pragma;
  
     procedure Set_Restriction_No_Use_Of_Pragma (A_Id : Pragma_Id) is
*************** package body Restrict is
*** 1744,1749 ****
--- 1615,1629 ----
        No_Use_Of_Pragma_Warning (A_Id) := False;
     end Set_Restriction_No_Use_Of_Pragma;
  
+    ---------------------------
+    -- Set_Global_No_Tasking --
+    ---------------------------
+ 
+    procedure Set_Global_No_Tasking is
+    begin
+       Global_Restriction_No_Tasking := True;
+    end Set_Global_No_Tasking;
+ 
     ----------------------------------
     -- Suppress_Restriction_Message --
     ----------------------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/restrict.ads gcc-11.1.0/gcc/ada/restrict.ads
*** gcc-10.3.0/gcc/ada/restrict.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/restrict.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Restrict is
*** 89,94 ****
--- 89,95 ----
       (No_Delay,                    "calendar"),
       (No_Dynamic_Priorities,       "a-dynpri"),
       (No_Finalization,             "a-finali"),
+      (No_IO,                       "a-direct"),
       (No_IO,                       "a-direio"),
       (No_IO,                       "directio"),
       (No_IO,                       "a-sequio"),
*************** package Restrict is
*** 282,290 ****
     --  the node to which an error will be attached if necessary.
  
     procedure Check_Restriction_No_Specification_Of_Aspect (N : Node_Id);
!    --  N is the node id for an N_Aspect_Specification. An error message
!    --  (warning) will be issued if a restriction (warning) was previously set
!    --  for this aspect using Set_No_Specification_Of_Aspect.
  
     procedure Check_Restriction_No_Use_Of_Attribute (N : Node_Id);
     --  N denotes an attribute definition clause or an attribute reference. An
--- 283,292 ----
     --  the node to which an error will be attached if necessary.
  
     procedure Check_Restriction_No_Specification_Of_Aspect (N : Node_Id);
!    --  N is the node id for an N_Aspect_Specification, an N_Pragma, or an
!    --  N_Attribute_Definition_Clause. An error message (warning) will be issued
!    --  if a restriction (warning) was previously set for this aspect using
!    --  Set_No_Specification_Of_Aspect.
  
     procedure Check_Restriction_No_Use_Of_Attribute (N : Node_Id);
     --  N denotes an attribute definition clause or an attribute reference. An
*************** package Restrict is
*** 309,330 ****
  
     --  WARNING: There is a matching C declaration of this subprogram in fe.h
  
-    procedure Check_SPARK_05_Restriction
-      (Msg   : String;
-       N     : Node_Id;
-       Force : Boolean := False);
-    --  Node N represents a construct not allowed in SPARK_05 mode. If this is
-    --  a source node, or if the restriction is forced (Force = True), and
-    --  the SPARK_05 restriction is set, then an error is issued on N. Msg
-    --  is appended to the restriction failure message.
- 
-    procedure Check_SPARK_05_Restriction
-      (Msg1 : String;
-       Msg2 : String;
-       N    : Node_Id);
-    --  Same as Check_SPARK_05_Restriction except there is a continuation
-    --  message Msg2 following the initial message Msg1.
- 
     procedure Check_No_Implicit_Aliasing (Obj : Node_Id);
     --  Obj is a node for which Is_Aliased_View is True, which is being used in
     --  a context (e.g. 'Access) where no implicit aliasing is allowed if the
--- 311,316 ----
*************** package Restrict is
*** 391,400 ****
     --  pragma Restrictions_Warning, or attribute Restriction_Set. Returns
     --  True if N has the proper form for an entity name, False otherwise.
  
-    function Is_In_Hidden_Part_In_SPARK (Loc : Source_Ptr) return Boolean;
-    --  Determine if given location is covered by a hidden region range in the
-    --  SPARK hides table.
- 
     function No_Exception_Handlers_Set return Boolean;
     --  Test to see if current restrictions settings specify that no exception
     --  handlers are present. This function is called by Gigi when it needs to
--- 377,382 ----
*************** package Restrict is
*** 441,450 ****
     --  of individual Restrictions pragmas). Returns True only if all the
     --  required restrictions are set.
  
!    procedure Set_Hidden_Part_In_SPARK (Loc1, Loc2 : Source_Ptr);
!    --  Insert a new hidden region range in the SPARK hides table. The effect
!    --  is to hide any SPARK violation messages which are in the range Loc1 to
!    --  Loc2-1 (i.e. Loc2 is the first location for reenabling checks).
  
     procedure Set_Profile_Restrictions
       (P    : Profile_Name;
--- 423,431 ----
     --  of individual Restrictions pragmas). Returns True only if all the
     --  required restrictions are set.
  
!    procedure Set_Global_No_Tasking;
!    --  Used in call from Sem_Prag when restriction No_Tasking is set in the
!    --  run-time package System or in a configuration pragmas file.
  
     procedure Set_Profile_Restrictions
       (P    : Profile_Name;
*************** package Restrict is
*** 471,476 ****
--- 452,471 ----
     --  Similar to the above, except that this is used for the case of a
     --  parameter restriction, and the corresponding value V is given.
  
+    procedure Set_Restriction
+      (R    : All_Restrictions;
+       N    : Node_Id;
+       Warn : Boolean;
+       V    : Integer := Integer'First);
+    --  Same as above two, except also takes care of setting the
+    --  Restriction_Warnings flag. V is ignored for Boolean
+    --  restrictions.
+    --
+    --  If this is the first time we've seen this restriction, the warning flag
+    --  is set to Warn. If this is a second or subsequent time, Warn = False
+    --  wins; that is, errors always trump warnings. In that case, the warning
+    --  flag can be set to False, but never to True.
+ 
     procedure Set_Restriction_No_Dependence
       (Unit    : Node_Id;
        Warn    : Boolean;
*************** package Restrict is
*** 482,489 ****
     --  No_Dependence restriction comes from a Profile pragma.
  
     procedure Set_Restriction_No_Specification_Of_Aspect
!      (N       : Node_Id;
!       Warning : Boolean);
     --  N is the node id for an identifier from a pragma Restrictions for the
     --  No_Specification_Of_Aspect pragma. An error message will be issued if
     --  the identifier is not a valid aspect name. Warning is set True for the
--- 477,484 ----
     --  No_Dependence restriction comes from a Profile pragma.
  
     procedure Set_Restriction_No_Specification_Of_Aspect
!      (N    : Node_Id;
!       Warn : Boolean);
     --  N is the node id for an identifier from a pragma Restrictions for the
     --  No_Specification_Of_Aspect pragma. An error message will be issued if
     --  the identifier is not a valid aspect name. Warning is set True for the
*************** package Restrict is
*** 494,501 ****
     --  Version used by Get_Target_Parameters (via Tbuild)
  
     procedure Set_Restriction_No_Use_Of_Attribute
!      (N       : Node_Id;
!       Warning : Boolean);
     --  N is the node id for the identifier in a pragma Restrictions for
     --  No_Use_Of_Attribute. Caller has verified that this is a valid attribute
     --  designator.
--- 489,496 ----
     --  Version used by Get_Target_Parameters (via Tbuild)
  
     procedure Set_Restriction_No_Use_Of_Attribute
!      (N    : Node_Id;
!       Warn : Boolean);
     --  N is the node id for the identifier in a pragma Restrictions for
     --  No_Use_Of_Attribute. Caller has verified that this is a valid attribute
     --  designator.
*************** package Restrict is
*** 505,511 ****
  
     procedure Set_Restriction_No_Use_Of_Entity
       (Entity  : Node_Id;
!       Warning : Boolean;
        Profile : Profile_Name := No_Profile);
     --  Sets given No_Use_Of_Entity restriction in table if not there already.
     --  Warn is True if from Restriction_Warnings, or for Restrictions if the
--- 500,506 ----
  
     procedure Set_Restriction_No_Use_Of_Entity
       (Entity  : Node_Id;
!       Warn    : Boolean;
        Profile : Profile_Name := No_Profile);
     --  Sets given No_Use_Of_Entity restriction in table if not there already.
     --  Warn is True if from Restriction_Warnings, or for Restrictions if the
*************** package Restrict is
*** 516,523 ****
     --  the entity (to optimize table searches).
  
     procedure Set_Restriction_No_Use_Of_Pragma
!      (N       : Node_Id;
!       Warning : Boolean);
     --  N is the node id for the identifier in a pragma Restrictions for
     --  No_Use_Of_Pragma. Caller has verified that this is a valid pragma id.
  
--- 511,518 ----
     --  the entity (to optimize table searches).
  
     procedure Set_Restriction_No_Use_Of_Pragma
!      (N    : Node_Id;
!       Warn : Boolean);
     --  N is the node id for the identifier in a pragma Restrictions for
     --  No_Use_Of_Pragma. Caller has verified that this is a valid pragma id.
  
*************** package Restrict is
*** 529,534 ****
--- 524,533 ----
     --  Tests if tasking operations are allowed by the current restrictions
     --  settings. For tasking to be allowed Max_Tasks must be non-zero.
  
+    function Global_No_Tasking return Boolean;
+    --  Returns True if the restriction No_Tasking is set in the run-time
+    --  package System or in a configuration pragmas file.
+ 
     ----------------------------------------------
     -- Handling of Boolean Compilation Switches --
     ----------------------------------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/rident.ads gcc-11.1.0/gcc/ada/rident.ads
*** gcc-10.3.0/gcc/ada/rident.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/rident.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/rtfinal.c gcc-11.1.0/gcc/ada/rtfinal.c
*** gcc-10.3.0/gcc/ada/rtfinal.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/rtfinal.c	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2014-2019, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2014-2020, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/rtinit.c gcc-11.1.0/gcc/ada/rtinit.c
*** gcc-10.3.0/gcc/ada/rtinit.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/rtinit.c	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2014-2019, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2014-2020, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/rtsfind.adb gcc-11.1.0/gcc/ada/rtsfind.adb
*** gcc-10.3.0/gcc/ada/rtsfind.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/rtsfind.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Rtsfind is
*** 423,429 ****
                           (Unit_Name (Current_Sem_Unit));
  
                    begin
!                      if Parent_Name /= No_Unit_Name then
                          Get_Name_String (Parent_Name);
  
                          declare
--- 423,429 ----
                           (Unit_Name (Current_Sem_Unit));
  
                    begin
!                      if Present (Parent_Name) then
                          Get_Name_String (Parent_Name);
  
                          declare
*************** package body Rtsfind is
*** 540,622 ****
     -- Get_Unit_Name --
     -------------------
  
     function Get_Unit_Name (U_Id : RTU_Id) return Unit_Name_Type is
        Uname_Chars : constant String := RTU_Id'Image (U_Id);
- 
     begin
        Name_Len := Uname_Chars'Length;
        Name_Buffer (1 .. Name_Len) := Uname_Chars;
        Set_Casing (All_Lower_Case);
  
!       if U_Id in Ada_Child then
           Name_Buffer (4) := '.';
  
!          if U_Id in Ada_Calendar_Child then
              Name_Buffer (13) := '.';
  
!          elsif U_Id in Ada_Dispatching_Child then
              Name_Buffer (16) := '.';
  
!          elsif U_Id in Ada_Interrupts_Child then
              Name_Buffer (15) := '.';
  
!          elsif U_Id in Ada_Numerics_Child then
              Name_Buffer (13) := '.';
  
!          elsif U_Id in Ada_Real_Time_Child then
              Name_Buffer (14) := '.';
  
!          elsif U_Id in Ada_Streams_Child then
              Name_Buffer (12) := '.';
  
!          elsif U_Id in Ada_Strings_Child then
              Name_Buffer (12) := '.';
  
!          elsif U_Id in Ada_Text_IO_Child then
              Name_Buffer (12) := '.';
  
!          elsif U_Id in Ada_Wide_Text_IO_Child then
              Name_Buffer (17) := '.';
  
!          elsif U_Id in Ada_Wide_Wide_Text_IO_Child then
              Name_Buffer (22) := '.';
           end if;
  
!       elsif U_Id in Interfaces_Child then
           Name_Buffer (11) := '.';
  
!       elsif U_Id in System_Child then
           Name_Buffer (7) := '.';
  
!          if U_Id in System_Dim_Child then
              Name_Buffer (11) := '.';
           end if;
  
!          if U_Id in System_Multiprocessors_Child then
              Name_Buffer (23) := '.';
           end if;
  
!          if U_Id in System_Storage_Pools_Child then
              Name_Buffer (21) := '.';
           end if;
  
!          if U_Id in System_Strings_Child then
              Name_Buffer (15) := '.';
           end if;
  
!          if U_Id in System_Tasking_Child then
              Name_Buffer (15) := '.';
           end if;
  
!          if U_Id in System_Tasking_Restricted_Child then
              Name_Buffer (26) := '.';
           end if;
  
!          if U_Id in System_Tasking_Protected_Objects_Child then
              Name_Buffer (33) := '.';
           end if;
  
!          if U_Id in System_Tasking_Async_Delays_Child then
              Name_Buffer (28) := '.';
           end if;
        end if;
--- 540,718 ----
     -- Get_Unit_Name --
     -------------------
  
+    --  The following subtypes include all the proper descendants of each unit
+    --  that has such descendants. For example, Ada_Calendar_Descendant includes
+    --  all the descendents of Ada.Calendar (except Ada.Calendar itself). These
+    --  are used by Get_Unit_Name to know where to change "_" to ".", and by
+    --  Is_Text_IO_Special_Package to detect the special generic pseudo-children
+    --  of [[Wide_]Wide_]Text_IO.
+ 
+    subtype Ada_Descendant is RTU_Id
+      range Ada_Calendar .. Ada_Wide_Wide_Text_IO_Modular_IO;
+ 
+    subtype Ada_Calendar_Descendant is Ada_Descendant
+      range Ada_Calendar_Delays .. Ada_Calendar_Delays;
+ 
+    subtype Ada_Dispatching_Descendant is Ada_Descendant
+      range Ada_Dispatching_EDF .. Ada_Dispatching_EDF;
+ 
+    subtype Ada_Interrupts_Descendant is Ada_Descendant range
+      Ada_Interrupts_Names .. Ada_Interrupts_Names;
+ 
+    subtype Ada_Numerics_Descendant is Ada_Descendant
+      range Ada_Numerics_Generic_Elementary_Functions ..
+            Ada_Numerics_Generic_Elementary_Functions;
+ 
+    subtype Ada_Real_Time_Descendant is Ada_Descendant
+      range Ada_Real_Time_Delays .. Ada_Real_Time_Timing_Events;
+ 
+    subtype Ada_Streams_Descendant is Ada_Descendant
+      range Ada_Streams_Stream_IO .. Ada_Streams_Stream_IO;
+ 
+    subtype Ada_Strings_Descendant is Ada_Descendant
+      range Ada_Strings_Superbounded .. Ada_Strings_Text_Output_Buffers;
+ 
+    subtype Ada_Strings_Text_Output_Descendant is Ada_Strings_Descendant
+      range Ada_Strings_Text_Output_Utils .. Ada_Strings_Text_Output_Buffers;
+ 
+    subtype Ada_Text_IO_Descendant is Ada_Descendant
+      range Ada_Text_IO_Decimal_IO .. Ada_Text_IO_Modular_IO;
+ 
+    subtype Ada_Wide_Text_IO_Descendant is Ada_Descendant
+      range Ada_Wide_Text_IO_Decimal_IO .. Ada_Wide_Text_IO_Modular_IO;
+ 
+    subtype Ada_Wide_Wide_Text_IO_Descendant is Ada_Descendant
+      range Ada_Wide_Wide_Text_IO_Decimal_IO ..
+            Ada_Wide_Wide_Text_IO_Modular_IO;
+ 
+    subtype CUDA_Descendant is RTU_Id
+      range CUDA_Driver_Types .. CUDA_Vector_Types;
+ 
+    subtype Interfaces_Descendant is RTU_Id
+      range Interfaces_C .. Interfaces_C_Strings;
+ 
+    subtype Interfaces_C_Descendant is Interfaces_Descendant
+      range Interfaces_C_Strings .. Interfaces_C_Strings;
+ 
+    subtype System_Descendant is RTU_Id
+      range System_Address_Image .. System_Tasking_Stages;
+ 
+    subtype System_Dim_Descendant is System_Descendant
+      range System_Dim_Float_IO .. System_Dim_Integer_IO;
+ 
+    subtype System_Multiprocessors_Descendant is System_Descendant
+      range System_Multiprocessors_Dispatching_Domains ..
+        System_Multiprocessors_Dispatching_Domains;
+ 
+    subtype System_Storage_Pools_Descendant is System_Descendant
+      range System_Storage_Pools_Subpools .. System_Storage_Pools_Subpools;
+ 
+    subtype System_Strings_Descendant is System_Descendant
+      range System_Strings_Stream_Ops .. System_Strings_Stream_Ops;
+ 
+    subtype System_Tasking_Descendant is System_Descendant
+      range System_Tasking_Async_Delays .. System_Tasking_Stages;
+ 
+    subtype System_Tasking_Protected_Objects_Descendant is
+      System_Tasking_Descendant
+      range System_Tasking_Protected_Objects_Entries ..
+        System_Tasking_Protected_Objects_Single_Entry;
+ 
+    subtype System_Tasking_Restricted_Descendant is System_Tasking_Descendant
+      range System_Tasking_Restricted_Stages ..
+        System_Tasking_Restricted_Stages;
+ 
+    subtype System_Tasking_Async_Delays_Descendant is System_Tasking_Descendant
+      range System_Tasking_Async_Delays_Enqueue_Calendar ..
+        System_Tasking_Async_Delays_Enqueue_RT;
+ 
     function Get_Unit_Name (U_Id : RTU_Id) return Unit_Name_Type is
        Uname_Chars : constant String := RTU_Id'Image (U_Id);
     begin
        Name_Len := Uname_Chars'Length;
        Name_Buffer (1 .. Name_Len) := Uname_Chars;
        Set_Casing (All_Lower_Case);
  
!       if U_Id in Ada_Descendant then
           Name_Buffer (4) := '.';
  
!          if U_Id in Ada_Calendar_Descendant then
              Name_Buffer (13) := '.';
  
!          elsif U_Id in Ada_Dispatching_Descendant then
              Name_Buffer (16) := '.';
  
!          elsif U_Id in Ada_Interrupts_Descendant then
              Name_Buffer (15) := '.';
  
!          elsif U_Id in Ada_Numerics_Descendant then
              Name_Buffer (13) := '.';
  
!          elsif U_Id in Ada_Real_Time_Descendant then
              Name_Buffer (14) := '.';
  
!          elsif U_Id in Ada_Streams_Descendant then
              Name_Buffer (12) := '.';
  
!          elsif U_Id in Ada_Strings_Descendant then
              Name_Buffer (12) := '.';
  
!             if U_Id in Ada_Strings_Text_Output_Descendant then
!                Name_Buffer (24) := '.';
!             end if;
! 
!          elsif U_Id in Ada_Text_IO_Descendant then
              Name_Buffer (12) := '.';
  
!          elsif U_Id in Ada_Wide_Text_IO_Descendant then
              Name_Buffer (17) := '.';
  
!          elsif U_Id in Ada_Wide_Wide_Text_IO_Descendant then
              Name_Buffer (22) := '.';
           end if;
  
!       elsif U_Id in CUDA_Descendant then
!          Name_Buffer (5) := '.';
! 
!       elsif U_Id in Interfaces_Descendant then
           Name_Buffer (11) := '.';
  
!          if U_Id in Interfaces_C_Descendant then
!             Name_Buffer (13) := '.';
!          end if;
! 
!       elsif U_Id in System_Descendant then
           Name_Buffer (7) := '.';
  
!          if U_Id in System_Dim_Descendant then
              Name_Buffer (11) := '.';
           end if;
  
!          if U_Id in System_Multiprocessors_Descendant then
              Name_Buffer (23) := '.';
           end if;
  
!          if U_Id in System_Storage_Pools_Descendant then
              Name_Buffer (21) := '.';
           end if;
  
!          if U_Id in System_Strings_Descendant then
              Name_Buffer (15) := '.';
           end if;
  
!          if U_Id in System_Tasking_Descendant then
              Name_Buffer (15) := '.';
           end if;
  
!          if U_Id in System_Tasking_Restricted_Descendant then
              Name_Buffer (26) := '.';
           end if;
  
!          if U_Id in System_Tasking_Protected_Objects_Descendant then
              Name_Buffer (33) := '.';
           end if;
  
!          if U_Id in System_Tasking_Async_Delays_Descendant then
              Name_Buffer (28) := '.';
           end if;
        end if;
*************** package body Rtsfind is
*** 755,760 ****
--- 851,887 ----
        return Present (E) and then E = Ent;
     end Is_RTU;
  
+    --------------------------------
+    -- Is_Text_IO_Special_Package --
+    --------------------------------
+ 
+    function Is_Text_IO_Special_Package (E : Entity_Id) return Boolean is
+    begin
+       pragma Assert (Is_Package_Or_Generic_Package (E));
+ 
+       --  ??? detection with a scope climbing might be more efficient
+ 
+       for U in Ada_Text_IO_Descendant loop
+          if Is_RTU (E, U) then
+             return True;
+          end if;
+       end loop;
+ 
+       for U in Ada_Wide_Text_IO_Descendant loop
+          if Is_RTU (E, U) then
+             return True;
+          end if;
+       end loop;
+ 
+       for U in Ada_Wide_Wide_Text_IO_Descendant loop
+          if Is_RTU (E, U) then
+             return True;
+          end if;
+       end loop;
+ 
+       return False;
+    end Is_Text_IO_Special_Package;
+ 
     -----------------------------
     -- Is_Text_IO_Special_Unit --
     -----------------------------
*************** package body Rtsfind is
*** 784,792 ****
        return
          Nkind (Prf) = N_Identifier
            and then
!             Nam_In (Chars (Prf), Name_Text_IO,
!                                  Name_Wide_Text_IO,
!                                  Name_Wide_Wide_Text_IO)
            and then Nkind (Sel) = N_Identifier
            and then Chars (Sel) in Text_IO_Package_Name;
     end Is_Text_IO_Special_Unit;
--- 911,919 ----
        return
          Nkind (Prf) = N_Identifier
            and then
!             Chars (Prf) in Name_Text_IO
!                          | Name_Wide_Text_IO
!                          | Name_Wide_Wide_Text_IO
            and then Nkind (Sel) = N_Identifier
            and then Chars (Sel) in Text_IO_Package_Name;
     end Is_Text_IO_Special_Unit;
*************** package body Rtsfind is
*** 931,936 ****
--- 1058,1065 ----
  
        Saved_GM  : constant Ghost_Mode_Type := Ghost_Mode;
        Saved_IGR : constant Node_Id         := Ignored_Ghost_Region;
+       Saved_ISMP : constant Boolean        :=
+                      Ignore_SPARK_Mode_Pragmas_In_Instance;
        Saved_SM  : constant SPARK_Mode_Type := SPARK_Mode;
        Saved_SMP : constant Node_Id         := SPARK_Mode_Pragma;
        --  Save Ghost and SPARK mode-related data to restore on exit
*************** package body Rtsfind is
*** 946,951 ****
--- 1075,1081 ----
  
        --  Provide a clean environment for the unit
  
+       Ignore_SPARK_Mode_Pragmas_In_Instance := False;
        Install_Ghost_Region (None, Empty);
        Install_SPARK_Mode   (None, Empty);
  
*************** package body Rtsfind is
*** 1044,1049 ****
--- 1174,1180 ----
           Set_Is_Potentially_Use_Visible (U.Entity, True);
        end if;
  
+       Ignore_SPARK_Mode_Pragmas_In_Instance := Saved_ISMP;
        Restore_Ghost_Region (Saved_GM, Saved_IGR);
        Restore_SPARK_Mode   (Saved_SM, Saved_SMP);
     end Load_RTU;
diff -Nrcpad gcc-10.3.0/gcc/ada/rtsfind.ads gcc-11.1.0/gcc/ada/rtsfind.ads
*** gcc-10.3.0/gcc/ada/rtsfind.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/rtsfind.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Rtsfind is
*** 46,55 ****
     --  in the package entity table. The units must be either library level
     --  package declarations, or library level subprogram declarations. Generic
     --  units, library level instantiations and subprogram bodies acting as
!    --  specs may not be referenced (all these cases could be added at the
     --  expense of additional complexity in the body of Rtsfind, but it doesn't
     --  seem worthwhile, since the implementation controls the set of units that
!    --  are referenced, and this restriction is easily met.
  
     --  IMPORTANT NOTE: the specs of packages and procedures with'ed using
     --  this mechanism must not contain use clauses. This is because these
--- 46,55 ----
     --  in the package entity table. The units must be either library level
     --  package declarations, or library level subprogram declarations. Generic
     --  units, library level instantiations and subprogram bodies acting as
!    --  specs must not be referenced. (All these cases could be added at the
     --  expense of additional complexity in the body of Rtsfind, but it doesn't
     --  seem worthwhile, since the implementation controls the set of units that
!    --  are referenced, and this restriction is easily met.)
  
     --  IMPORTANT NOTE: the specs of packages and procedures with'ed using
     --  this mechanism must not contain use clauses. This is because these
*************** package Rtsfind is
*** 59,64 ****
--- 59,67 ----
     --  the compilation except in the presence of use clauses, which might
     --  result in unexpected ambiguities.
  
+    --  NOTE: If RTU_Id is modified, the subtypes of RTU_Id in the package body
+    --  might need to be modified. See Get_Unit_Name.
+ 
     type RTU_Id is (
  
        --  Runtime packages, for list of accessible entities in each package,
*************** package Rtsfind is
*** 122,127 ****
--- 125,136 ----
        Ada_Strings_Wide_Superbounded,
        Ada_Strings_Wide_Wide_Superbounded,
        Ada_Strings_Unbounded,
+       Ada_Strings_Text_Output,
+ 
+       --  Children of Ada.Strings.Text_Output
+ 
+       Ada_Strings_Text_Output_Utils,
+       Ada_Strings_Text_Output_Buffers,
  
        --  Children of Ada.Text_IO (for Check_Text_IO_Special_Unit)
  
*************** package Rtsfind is
*** 150,163 ****
--- 159,188 ----
        Ada_Wide_Wide_Text_IO_Integer_IO,
        Ada_Wide_Wide_Text_IO_Modular_IO,
  
+       --  Package CUDA
+ 
+       CUDA,
+ 
+       --  Children of CUDA
+ 
+       CUDA_Driver_Types,
+       CUDA_Internal,
+       CUDA_Runtime_Api,
+       CUDA_Vector_Types,
+ 
        --  Interfaces
  
        Interfaces,
  
        --  Children of Interfaces
  
+       Interfaces_C,
        Interfaces_Packed_Decimal,
  
+       --  Children of Interfaces.C
+ 
+       Interfaces_C_Strings,
+ 
        --  Package System
  
        System,
*************** package Rtsfind is
*** 165,171 ****
--- 190,198 ----
        --  Children of System
  
        System_Address_Image,
+       System_Address_To_Access_Conversions,
        System_Arith_64,
+       System_Arith_128,
        System_AST_Handling,
        System_Assertions,
        System_Atomic_Primitives,
*************** package Rtsfind is
*** 176,189 ****
        System_Boolean_Array_Operations,
        System_Byte_Swapping,
        System_Checked_Pools,
        System_Compare_Array_Signed_16,
        System_Compare_Array_Signed_32,
        System_Compare_Array_Signed_64,
!       System_Compare_Array_Signed_8,
        System_Compare_Array_Unsigned_16,
        System_Compare_Array_Unsigned_32,
        System_Compare_Array_Unsigned_64,
!       System_Compare_Array_Unsigned_8,
        System_Concat_2,
        System_Concat_3,
        System_Concat_4,
--- 203,218 ----
        System_Boolean_Array_Operations,
        System_Byte_Swapping,
        System_Checked_Pools,
+       System_Compare_Array_Signed_8,
        System_Compare_Array_Signed_16,
        System_Compare_Array_Signed_32,
        System_Compare_Array_Signed_64,
!       System_Compare_Array_Signed_128,
!       System_Compare_Array_Unsigned_8,
        System_Compare_Array_Unsigned_16,
        System_Compare_Array_Unsigned_32,
        System_Compare_Array_Unsigned_64,
!       System_Compare_Array_Unsigned_128,
        System_Concat_2,
        System_Concat_3,
        System_Concat_4,
*************** package Rtsfind is
*** 201,215 ****
        System_Exn_Int,
        System_Exn_LLF,
        System_Exn_LLI,
        System_Exp_Int,
-       System_Exp_LInt,
        System_Exp_LLI,
        System_Exp_LLU,
        System_Exp_Mod,
        System_Exp_Uns,
        System_Fat_Flt,
-       System_Fat_IEEE_Long_Float,
-       System_Fat_IEEE_Short_Float,
        System_Fat_LFlt,
        System_Fat_LLF,
        System_Fat_SFlt,
--- 230,244 ----
        System_Exn_Int,
        System_Exn_LLF,
        System_Exn_LLI,
+       System_Exn_LLLI,
        System_Exp_Int,
        System_Exp_LLI,
+       System_Exp_LLLI,
        System_Exp_LLU,
+       System_Exp_LLLU,
        System_Exp_Mod,
        System_Exp_Uns,
        System_Fat_Flt,
        System_Fat_LFlt,
        System_Fat_LLF,
        System_Fat_SFlt,
*************** package Rtsfind is
*** 218,233 ****
        System_Fat_VAX_G_Float,
        System_Finalization_Masters,
        System_Finalization_Root,
!       System_Fore,
        System_Img_Bool,
        System_Img_Char,
!       System_Img_Dec,
        System_Img_Enum,
        System_Img_Enum_New,
        System_Img_Int,
-       System_Img_LLD,
        System_Img_LLI,
        System_Img_LLU,
        System_Img_Name,
        System_Img_Real,
        System_Img_Uns,
--- 247,274 ----
        System_Fat_VAX_G_Float,
        System_Finalization_Masters,
        System_Finalization_Root,
!       System_Fore_Decimal_32,
!       System_Fore_Decimal_64,
!       System_Fore_Decimal_128,
!       System_Fore_Fixed_32,
!       System_Fore_Fixed_64,
!       System_Fore_Fixed_128,
!       System_Fore_Real,
        System_Img_Bool,
        System_Img_Char,
!       System_Img_Decimal_32,
!       System_Img_Decimal_64,
!       System_Img_Decimal_128,
        System_Img_Enum,
        System_Img_Enum_New,
+       System_Img_Fixed_32,
+       System_Img_Fixed_64,
+       System_Img_Fixed_128,
        System_Img_Int,
        System_Img_LLI,
+       System_Img_LLLI,
        System_Img_LLU,
+       System_Img_LLLU,
        System_Img_Name,
        System_Img_Real,
        System_Img_Uns,
*************** package Rtsfind is
*** 296,301 ****
--- 337,405 ----
        System_Pack_61,
        System_Pack_62,
        System_Pack_63,
+       System_Pack_65,
+       System_Pack_66,
+       System_Pack_67,
+       System_Pack_68,
+       System_Pack_69,
+       System_Pack_70,
+       System_Pack_71,
+       System_Pack_72,
+       System_Pack_73,
+       System_Pack_74,
+       System_Pack_75,
+       System_Pack_76,
+       System_Pack_77,
+       System_Pack_78,
+       System_Pack_79,
+       System_Pack_80,
+       System_Pack_81,
+       System_Pack_82,
+       System_Pack_83,
+       System_Pack_84,
+       System_Pack_85,
+       System_Pack_86,
+       System_Pack_87,
+       System_Pack_88,
+       System_Pack_89,
+       System_Pack_90,
+       System_Pack_91,
+       System_Pack_92,
+       System_Pack_93,
+       System_Pack_94,
+       System_Pack_95,
+       System_Pack_96,
+       System_Pack_97,
+       System_Pack_98,
+       System_Pack_99,
+       System_Pack_100,
+       System_Pack_101,
+       System_Pack_102,
+       System_Pack_103,
+       System_Pack_104,
+       System_Pack_105,
+       System_Pack_106,
+       System_Pack_107,
+       System_Pack_108,
+       System_Pack_109,
+       System_Pack_110,
+       System_Pack_111,
+       System_Pack_112,
+       System_Pack_113,
+       System_Pack_114,
+       System_Pack_115,
+       System_Pack_116,
+       System_Pack_117,
+       System_Pack_118,
+       System_Pack_119,
+       System_Pack_120,
+       System_Pack_121,
+       System_Pack_122,
+       System_Pack_123,
+       System_Pack_124,
+       System_Pack_125,
+       System_Pack_126,
+       System_Pack_127,
        System_Parameters,
        System_Partition_Interface,
        System_Pool_32_Global,
*************** package Rtsfind is
*** 303,308 ****
--- 407,414 ----
        System_Pool_Empty,
        System_Pool_Local,
        System_Pool_Size,
+       System_Put_Images,
+       System_Put_Task_Images,
        System_Relative_Delays,
        System_RPC,
        System_Scalar_Values,
*************** package Rtsfind is
*** 319,332 ****
        System_Unsigned_Types,
        System_Val_Bool,
        System_Val_Char,
!       System_Val_Dec,
        System_Val_Enum,
        System_Val_Int,
!       System_Val_LLD,
        System_Val_LLI,
        System_Val_LLU,
        System_Val_Name,
-       System_Val_Real,
        System_Val_Uns,
        System_Val_WChar,
        System_Version_Control,
--- 425,446 ----
        System_Unsigned_Types,
        System_Val_Bool,
        System_Val_Char,
!       System_Val_Decimal_32,
!       System_Val_Decimal_64,
!       System_Val_Decimal_128,
        System_Val_Enum,
+       System_Val_Fixed_32,
+       System_Val_Fixed_64,
+       System_Val_Fixed_128,
+       System_Val_Flt,
        System_Val_Int,
!       System_Val_LFlt,
!       System_Val_LLF,
        System_Val_LLI,
+       System_Val_LLLI,
        System_Val_LLU,
+       System_Val_LLLU,
        System_Val_Name,
        System_Val_Uns,
        System_Val_WChar,
        System_Version_Control,
*************** package Rtsfind is
*** 335,343 ****
--- 449,461 ----
        System_Wid_Bool,
        System_Wid_Char,
        System_Wid_Enum,
+       System_Wid_Int,
        System_Wid_LLI,
+       System_Wid_LLLI,
        System_Wid_LLU,
+       System_Wid_LLLU,
        System_Wid_Name,
+       System_Wid_Uns,
        System_Wid_WChar,
        System_WWd_Char,
        System_WWd_Enum,
*************** package Rtsfind is
*** 373,465 ****
        System_Tasking_Rendezvous,
        System_Tasking_Stages);
  
-    subtype Ada_Child is RTU_Id
-      range Ada_Calendar .. Ada_Wide_Wide_Text_IO_Modular_IO;
-    --  Range of values for children or grand-children of Ada
- 
-    subtype Ada_Calendar_Child is Ada_Child
-      range Ada_Calendar_Delays .. Ada_Calendar_Delays;
-    --  Range of values for children of Ada.Calendar
- 
-    subtype Ada_Dispatching_Child is RTU_Id
-      range Ada_Dispatching_EDF .. Ada_Dispatching_EDF;
-    --  Range of values for children of Ada.Dispatching
- 
-    subtype Ada_Interrupts_Child is Ada_Child range
-      Ada_Interrupts_Names .. Ada_Interrupts_Names;
-    --  Range of values for children of Ada.Interrupts
- 
-    subtype Ada_Numerics_Child is Ada_Child
-      range Ada_Numerics_Generic_Elementary_Functions ..
-            Ada_Numerics_Generic_Elementary_Functions;
-    --  Range of values for children of Ada.Numerics
- 
-    subtype Ada_Real_Time_Child is Ada_Child
-      range Ada_Real_Time_Delays .. Ada_Real_Time_Timing_Events;
-    --  Range of values for children of Ada.Real_Time
- 
-    subtype Ada_Streams_Child is Ada_Child
-      range Ada_Streams_Stream_IO .. Ada_Streams_Stream_IO;
-    --  Range of values for children of Ada.Streams
- 
-    subtype Ada_Strings_Child is Ada_Child
-      range Ada_Strings_Superbounded .. Ada_Strings_Unbounded;
-    --  Range of values for children of Ada.Strings
- 
-    subtype Ada_Text_IO_Child is Ada_Child
-      range Ada_Text_IO_Decimal_IO .. Ada_Text_IO_Modular_IO;
-    --  Range of values for children of Ada.Text_IO
- 
-    subtype Ada_Wide_Text_IO_Child is Ada_Child
-      range Ada_Wide_Text_IO_Decimal_IO .. Ada_Wide_Text_IO_Modular_IO;
-    --  Range of values for children of Ada.Text_IO
- 
-    subtype Ada_Wide_Wide_Text_IO_Child is Ada_Child
-      range Ada_Wide_Wide_Text_IO_Decimal_IO ..
-            Ada_Wide_Wide_Text_IO_Modular_IO;
- 
-    subtype Interfaces_Child is RTU_Id
-      range Interfaces_Packed_Decimal .. Interfaces_Packed_Decimal;
-    --  Range of values for children of Interfaces
- 
-    subtype System_Child is RTU_Id
-      range System_Address_Image .. System_Tasking_Stages;
-    --  Range of values for children or grandchildren of System
- 
-    subtype System_Dim_Child is RTU_Id
-      range System_Dim_Float_IO .. System_Dim_Integer_IO;
-    --  Range of values for children of System.Dim
- 
-    subtype System_Multiprocessors_Child is RTU_Id
-      range System_Multiprocessors_Dispatching_Domains ..
-        System_Multiprocessors_Dispatching_Domains;
-    --  Range of values for children of System.Multiprocessors
- 
-    subtype System_Storage_Pools_Child is RTU_Id
-      range System_Storage_Pools_Subpools .. System_Storage_Pools_Subpools;
- 
-    subtype System_Strings_Child is RTU_Id
-      range System_Strings_Stream_Ops .. System_Strings_Stream_Ops;
- 
-    subtype System_Tasking_Child is System_Child
-      range System_Tasking_Async_Delays .. System_Tasking_Stages;
-    --  Range of values for children of System.Tasking
- 
-    subtype System_Tasking_Protected_Objects_Child is System_Tasking_Child
-      range System_Tasking_Protected_Objects_Entries ..
-        System_Tasking_Protected_Objects_Single_Entry;
-    --  Range of values for children of System.Tasking.Protected_Objects
- 
-    subtype System_Tasking_Restricted_Child is System_Tasking_Child
-      range System_Tasking_Restricted_Stages ..
-        System_Tasking_Restricted_Stages;
-    --  Range of values for children of System.Tasking.Restricted
- 
-    subtype System_Tasking_Async_Delays_Child is System_Tasking_Child
-      range System_Tasking_Async_Delays_Enqueue_Calendar ..
-        System_Tasking_Async_Delays_Enqueue_RT;
-    --  Range of values for children of System.Tasking.Async_Delays
- 
     --------------------------
     -- Runtime Entity Table --
     --------------------------
--- 491,496 ----
*************** package Rtsfind is
*** 503,508 ****
--- 534,541 ----
       RO_CA_Delay_Until,                  -- Ada.Calendar.Delays
       RO_CA_To_Duration,                  -- Ada.Calendar.Delays
  
+      RE_Yield,                           -- Ada_Dispatching
+ 
       RE_Set_Deadline,                    -- Ada.Dispatching.EDF
  
       RE_Code_Loc,                        -- Ada.Exceptions
*************** package Rtsfind is
*** 563,568 ****
--- 596,611 ----
  
       RE_Unbounded_String,                -- Ada.Strings.Unbounded
  
+      RE_Sink,                            -- Ada.Strings.Text_Output
+ 
+      RE_Put_UTF_8,                       -- Ada.Strings.Text_Output.Utils
+      RE_Put_Wide_Wide_String,            -- Ada.Strings.Text_Output.Utils
+ 
+      RE_Buffer,                          -- Ada.Strings.Text_Output.Buffers
+      RE_New_Buffer,                      -- Ada.Strings.Text_Output.Buffers
+      RE_Destroy,                         -- Ada.Strings.Text_Output.Buffers
+      RE_Get,                             -- Ada.Strings.Text_Output.Buffers
+ 
       RE_Wait_For_Release,                -- Ada.Synchronous_Barriers
  
       RE_Suspend_Until_True,              -- Ada.Synchronous_Task_Control
*************** package Rtsfind is
*** 575,580 ****
--- 618,624 ----
       RE_Check_Interface_Conversion,      -- Ada.Tags
       RE_Check_TSD,                       -- Ada.Tags
       RE_Cstring_Ptr,                     -- Ada.Tags
+      RE_CW_Membership,                   -- Ada.Tags
       RE_Descendant_Tag,                  -- Ada.Tags
       RE_Dispatch_Table,                  -- Ada.Tags
       RE_Dispatch_Table_Wrapper,          -- Ada.Tags
*************** package Rtsfind is
*** 676,689 ****
--- 720,752 ----
       RO_WW_Decimal_IO,                   -- Ada.Wide_Wide_Text_IO
       RO_WW_Fixed_IO,                     -- Ada.Wide_Wide_Text_IO
  
+      RE_Stream_T,                        -- CUDA.Driver_Types
+ 
+      RE_Fatbin_Wrapper,                  -- CUDA.Internal
+      RE_Launch_Kernel,                   -- CUDA.Internal
+      RE_Pop_Call_Configuration,          -- CUDA.Internal
+      RE_Push_Call_Configuration,         -- CUDA.Internal
+      RE_Register_Fat_Binary,             -- CUDA.Internal
+      RE_Register_Fat_Binary_End,         -- CUDA.Internal
+      RE_Register_Function,               -- CUDA.Internal
+ 
+      RE_Dim3,                            -- CUDA.Vector_Types
+ 
       RE_Integer_8,                       -- Interfaces
       RE_Integer_16,                      -- Interfaces
       RE_Integer_32,                      -- Interfaces
       RE_Integer_64,                      -- Interfaces
+      RE_Integer_128,                     -- Interfaces
       RE_Unsigned_8,                      -- Interfaces
       RE_Unsigned_16,                     -- Interfaces
       RE_Unsigned_32,                     -- Interfaces
       RE_Unsigned_64,                     -- Interfaces
+      RE_Unsigned_128,                    -- Interfaces
+ 
+      RO_IC_Unsigned,                     -- Interfaces.C
+ 
+      RE_Chars_Ptr,                       -- Interfaces.C.Strings
+      RE_New_Char_Array,                  -- Interfaces.C.Strings
  
       RE_Address,                         -- System
       RE_Any_Priority,                    -- System
*************** package Rtsfind is
*** 700,710 ****
  
       RE_Address_Image,                   -- System.Address_Image
  
!      RE_Add_With_Ovflo_Check,            -- System.Arith_64
!      RE_Double_Divide,                   -- System.Arith_64
!      RE_Multiply_With_Ovflo_Check,       -- System.Arith_64
!      RE_Scaled_Divide,                   -- System.Arith_64
!      RE_Subtract_With_Ovflo_Check,       -- System.Arith_64
  
       RE_Create_AST_Handler,              -- System.AST_Handling
  
--- 763,779 ----
  
       RE_Address_Image,                   -- System.Address_Image
  
!      RE_Add_With_Ovflo_Check64,          -- System.Arith_64
!      RE_Double_Divide64,                 -- System.Arith_64
!      RE_Multiply_With_Ovflo_Check64,     -- System.Arith_64
!      RE_Scaled_Divide64,                 -- System.Arith_64
!      RE_Subtract_With_Ovflo_Check64,     -- System.Arith_64
! 
!      RE_Add_With_Ovflo_Check128,         -- System.Arith_128
!      RE_Double_Divide128,                -- System.Arith_128
!      RE_Multiply_With_Ovflo_Check128,    -- System.Arith_128
!      RE_Subtract_With_Ovflo_Check128,    -- System.Arith_128
!      RE_Scaled_Divide128,                -- System.Arith_128
  
       RE_Create_AST_Handler,              -- System.AST_Handling
  
*************** package Rtsfind is
*** 780,785 ****
--- 849,855 ----
       RE_Bswap_16,                        -- System.Byte_Swapping
       RE_Bswap_32,                        -- System.Byte_Swapping
       RE_Bswap_64,                        -- System.Byte_Swapping
+      RE_Bswap_128,                       -- System.Byte_Swapping
  
       RE_Checked_Pool,                    -- System.Checked_Pools
  
*************** package Rtsfind is
*** 787,801 ****
       RE_Compare_Array_S8_Unaligned,      -- System.Compare_Array_Signed_8
  
       RE_Compare_Array_S16,               -- System.Compare_Array_Signed_16
!      RE_Compare_Array_S32,               -- System.Compare_Array_Signed_16
!      RE_Compare_Array_S64,               -- System.Compare_Array_Signed_16
  
       RE_Compare_Array_U8,                -- System.Compare_Array_Unsigned_8
       RE_Compare_Array_U8_Unaligned,      -- System.Compare_Array_Unsigned_8
  
       RE_Compare_Array_U16,               -- System.Compare_Array_Unsigned_16
!      RE_Compare_Array_U32,               -- System.Compare_Array_Unsigned_16
!      RE_Compare_Array_U64,               -- System.Compare_Array_Unsigned_16
  
       RE_Str_Concat_2,                    -- System.Concat_2
       RE_Str_Concat_3,                    -- System.Concat_3
--- 857,873 ----
       RE_Compare_Array_S8_Unaligned,      -- System.Compare_Array_Signed_8
  
       RE_Compare_Array_S16,               -- System.Compare_Array_Signed_16
!      RE_Compare_Array_S32,               -- System.Compare_Array_Signed_32
!      RE_Compare_Array_S64,               -- System.Compare_Array_Signed_64
!      RE_Compare_Array_S128,              -- System.Compare_Array_Signed_128
  
       RE_Compare_Array_U8,                -- System.Compare_Array_Unsigned_8
       RE_Compare_Array_U8_Unaligned,      -- System.Compare_Array_Unsigned_8
  
       RE_Compare_Array_U16,               -- System.Compare_Array_Unsigned_16
!      RE_Compare_Array_U32,               -- System.Compare_Array_Unsigned_32
!      RE_Compare_Array_U64,               -- System.Compare_Array_Unsigned_64
!      RE_Compare_Array_U128,              -- System.Compare_Array_Unsigned_128
  
       RE_Str_Concat_2,                    -- System.Concat_2
       RE_Str_Concat_3,                    -- System.Concat_3
*************** package Rtsfind is
*** 835,864 ****
  
       RE_Exn_Long_Long_Integer,           -- System.Exn_LLI
  
       RE_Exp_Integer,                     -- System.Exp_Int
  
       RE_Exp_Long_Long_Integer,           -- System.Exp_LLI
  
       RE_Exp_Long_Long_Unsigned,          -- System.Exp_LLU
  
       RE_Exp_Modular,                     -- System.Exp_Mod
  
       RE_Exp_Unsigned,                    -- System.Exp_Uns
  
       RE_Attr_Float,                      -- System.Fat_Flt
  
-      RE_Attr_IEEE_Long,                  -- System.Fat_IEEE_Long_Float
-      RE_Fat_IEEE_Long,                   -- System.Fat_IEEE_Long_Float
- 
-      RE_Attr_IEEE_Short,                 -- System.Fat_IEEE_Short_Float
-      RE_Fat_IEEE_Short,                  -- System.Fat_IEEE_Short_Float
- 
       RE_Attr_Long_Float,                 -- System.Fat_LFlt
  
       RE_Attr_Long_Long_Float,            -- System.Fat_LLF
  
-      RE_Attr_Short_Float,                -- System.Fat_SFlt
- 
       RE_Attr_VAX_D_Float,                -- System.Fat_VAX_D_Float
       RE_Fat_VAX_D,                       -- System.Fat_VAX_D_Float
  
--- 907,934 ----
  
       RE_Exn_Long_Long_Integer,           -- System.Exn_LLI
  
+      RE_Exn_Long_Long_Long_Integer,      -- System.Exn_LLLI
+ 
       RE_Exp_Integer,                     -- System.Exp_Int
  
       RE_Exp_Long_Long_Integer,           -- System.Exp_LLI
  
+      RE_Exp_Long_Long_Long_Integer,      -- System.Exp_LLLI
+ 
       RE_Exp_Long_Long_Unsigned,          -- System.Exp_LLU
  
+      RE_Exp_Long_Long_Long_Unsigned,     -- System.Exp_LLLU
+ 
       RE_Exp_Modular,                     -- System.Exp_Mod
  
       RE_Exp_Unsigned,                    -- System.Exp_Uns
  
       RE_Attr_Float,                      -- System.Fat_Flt
  
       RE_Attr_Long_Float,                 -- System.Fat_LFlt
  
       RE_Attr_Long_Long_Float,            -- System.Fat_LLF
  
       RE_Attr_VAX_D_Float,                -- System.Fat_VAX_D_Float
       RE_Fat_VAX_D,                       -- System.Fat_VAX_D_Float
  
*************** package Rtsfind is
*** 871,877 ****
       RE_Add_Offset_To_Address,           -- System.Finalization_Masters
       RE_Attach,                          -- System.Finalization_Masters
       RE_Base_Pool,                       -- System.Finalization_Masters
-      RE_Detach,                          -- System.Finalization_Masters
       RE_Finalization_Master,             -- System.Finalization_Masters
       RE_Finalization_Master_Ptr,         -- System.Finalization_Masters
       RE_Set_Base_Pool,                   -- System.Finalization_Masters
--- 941,946 ----
*************** package Rtsfind is
*** 881,894 ****
       RE_Root_Controlled,                 -- System.Finalization_Root
       RE_Root_Controlled_Ptr,             -- System.Finalization_Root
  
!      RE_Fore,                            -- System.Fore
  
       RE_Image_Boolean,                   -- System.Img_Bool
  
       RE_Image_Character,                 -- System.Img_Char
       RE_Image_Character_05,              -- System.Img_Char
  
!      RE_Image_Decimal,                   -- System.Img_Dec
  
       RE_Image_Enumeration_8,             -- System.Img_Enum_New
       RE_Image_Enumeration_16,            -- System.Img_Enum_New
--- 950,979 ----
       RE_Root_Controlled,                 -- System.Finalization_Root
       RE_Root_Controlled_Ptr,             -- System.Finalization_Root
  
!      RE_Fore_Decimal32,                  -- System.Fore_Decimal_32
! 
!      RE_Fore_Decimal64,                  -- System.Fore_Decimal_64
! 
!      RE_Fore_Decimal128,                 -- System.Fore_Decimal_128
! 
!      RE_Fore_Fixed32,                    -- System.Fore_Fixed_32
! 
!      RE_Fore_Fixed64,                    -- System.Fore_Fixed_64
! 
!      RE_Fore_Fixed128,                   -- System.Fore_Fixed_128
! 
!      RE_Fore_Real,                       -- System.Fore_Real
  
       RE_Image_Boolean,                   -- System.Img_Bool
  
       RE_Image_Character,                 -- System.Img_Char
       RE_Image_Character_05,              -- System.Img_Char
  
!      RE_Image_Decimal32,                 -- System.Img_Decimal_32
! 
!      RE_Image_Decimal64,                 -- System.Img_Decimal_64
! 
!      RE_Image_Decimal128,                -- System.Img_Decimal_128
  
       RE_Image_Enumeration_8,             -- System.Img_Enum_New
       RE_Image_Enumeration_16,            -- System.Img_Enum_New
*************** package Rtsfind is
*** 896,907 ****
  
       RE_Image_Integer,                   -- System.Img_Int
  
-      RE_Image_Long_Long_Decimal,         -- System.Img_LLD
- 
       RE_Image_Long_Long_Integer,         -- System.Img_LLI
  
       RE_Image_Long_Long_Unsigned,        -- System.Img_LLU
  
       RE_Image_Ordinary_Fixed_Point,      -- System.Img_Real
       RE_Image_Floating_Point,            -- System.Img_Real
  
--- 981,998 ----
  
       RE_Image_Integer,                   -- System.Img_Int
  
       RE_Image_Long_Long_Integer,         -- System.Img_LLI
  
+      RE_Image_Long_Long_Long_Integer,    -- System.Img_LLLI
+ 
       RE_Image_Long_Long_Unsigned,        -- System.Img_LLU
  
+      RE_Image_Long_Long_Long_Unsigned,   -- System.Img_LLLU
+ 
+      RE_Image_Fixed32,                   -- System.Img_Fixed_32
+      RE_Image_Fixed64,                   -- System.Img_Fixed_64
+      RE_Image_Fixed128,                  -- System.Img_Fixed_128
+ 
       RE_Image_Ordinary_Fixed_Point,      -- System.Img_Real
       RE_Image_Floating_Point,            -- System.Img_Real
  
*************** package Rtsfind is
*** 1211,1216 ****
--- 1302,1621 ----
       RE_Get_63,                          -- System.Pack_63
       RE_Set_63,                          -- System.Pack_63
  
+      RE_Bits_65,                         -- System.Pack_65
+      RE_Get_65,                          -- System.Pack_65
+      RE_Set_65,                          -- System.Pack_65
+ 
+      RE_Bits_66,                         -- System.Pack_66
+      RE_Get_66,                          -- System.Pack_66
+      RE_GetU_66,                         -- System.Pack_66
+      RE_Set_66,                          -- System.Pack_66
+      RE_SetU_66,                         -- System.Pack_66
+ 
+      RE_Bits_67,                         -- System.Pack_67
+      RE_Get_67,                          -- System.Pack_67
+      RE_Set_67,                          -- System.Pack_67
+ 
+      RE_Bits_68,                         -- System.Pack_68
+      RE_Get_68,                          -- System.Pack_68
+      RE_GetU_68,                         -- System.Pack_68
+      RE_Set_68,                          -- System.Pack_68
+      RE_SetU_68,                         -- System.Pack_68
+ 
+      RE_Bits_69,                         -- System.Pack_69
+      RE_Get_69,                          -- System.Pack_69
+      RE_Set_69,                          -- System.Pack_69
+ 
+      RE_Bits_70,                         -- System.Pack_70
+      RE_Get_70,                          -- System.Pack_70
+      RE_GetU_70,                         -- System.Pack_70
+      RE_Set_70,                          -- System.Pack_70
+      RE_SetU_70,                         -- System.Pack_70
+ 
+      RE_Bits_71,                         -- System.Pack_71
+      RE_Get_71,                          -- System.Pack_71
+      RE_Set_71,                          -- System.Pack_71
+ 
+      RE_Bits_72,                         -- System.Pack_72
+      RE_Get_72,                          -- System.Pack_72
+      RE_GetU_72,                         -- System.Pack_72
+      RE_Set_72,                          -- System.Pack_72
+      RE_SetU_72,                         -- System.Pack_72
+ 
+      RE_Bits_73,                         -- System.Pack_73
+      RE_Get_73,                          -- System.Pack_73
+      RE_Set_73,                          -- System.Pack_73
+ 
+      RE_Bits_74,                         -- System.Pack_74
+      RE_Get_74,                          -- System.Pack_74
+      RE_GetU_74,                         -- System.Pack_74
+      RE_Set_74,                          -- System.Pack_74
+      RE_SetU_74,                         -- System.Pack_74
+ 
+      RE_Bits_75,                         -- System.Pack_75
+      RE_Get_75,                          -- System.Pack_75
+      RE_Set_75,                          -- System.Pack_75
+ 
+      RE_Bits_76,                         -- System.Pack_76
+      RE_Get_76,                          -- System.Pack_76
+      RE_GetU_76,                         -- System.Pack_76
+      RE_Set_76,                          -- System.Pack_76
+      RE_SetU_76,                         -- System.Pack_76
+ 
+      RE_Bits_77,                         -- System.Pack_77
+      RE_Get_77,                          -- System.Pack_77
+      RE_Set_77,                          -- System.Pack_77
+ 
+      RE_Bits_78,                         -- System.Pack_78
+      RE_Get_78,                          -- System.Pack_78
+      RE_GetU_78,                         -- System.Pack_78
+      RE_Set_78,                          -- System.Pack_78
+      RE_SetU_78,                         -- System.Pack_78
+ 
+      RE_Bits_79,                         -- System.Pack_79
+      RE_Get_79,                          -- System.Pack_79
+      RE_Set_79,                          -- System.Pack_79
+ 
+      RE_Bits_80,                         -- System.Pack_80
+      RE_Get_80,                          -- System.Pack_80
+      RE_GetU_80,                         -- System.Pack_80
+      RE_Set_80,                          -- System.Pack_80
+      RE_SetU_80,                         -- System.Pack_80
+ 
+      RE_Bits_81,                         -- System.Pack_81
+      RE_Get_81,                          -- System.Pack_81
+      RE_Set_81,                          -- System.Pack_81
+ 
+      RE_Bits_82,                         -- System.Pack_82
+      RE_Get_82,                          -- System.Pack_82
+      RE_GetU_82,                         -- System.Pack_82
+      RE_Set_82,                          -- System.Pack_82
+      RE_SetU_82,                         -- System.Pack_82
+ 
+      RE_Bits_83,                         -- System.Pack_83
+      RE_Get_83,                          -- System.Pack_83
+      RE_Set_83,                          -- System.Pack_83
+ 
+      RE_Bits_84,                         -- System.Pack_84
+      RE_Get_84,                          -- System.Pack_84
+      RE_GetU_84,                         -- System.Pack_84
+      RE_Set_84,                          -- System.Pack_84
+      RE_SetU_84,                         -- System.Pack_84
+ 
+      RE_Bits_85,                         -- System.Pack_85
+      RE_Get_85,                          -- System.Pack_85
+      RE_Set_85,                          -- System.Pack_85
+ 
+      RE_Bits_86,                         -- System.Pack_86
+      RE_Get_86,                          -- System.Pack_86
+      RE_GetU_86,                         -- System.Pack_86
+      RE_Set_86,                          -- System.Pack_86
+      RE_SetU_86,                         -- System.Pack_86
+ 
+      RE_Bits_87,                         -- System.Pack_87
+      RE_Get_87,                          -- System.Pack_87
+      RE_Set_87,                          -- System.Pack_87
+ 
+      RE_Bits_88,                         -- System.Pack_88
+      RE_Get_88,                          -- System.Pack_88
+      RE_GetU_88,                         -- System.Pack_88
+      RE_Set_88,                          -- System.Pack_88
+      RE_SetU_88,                         -- System.Pack_88
+ 
+      RE_Bits_89,                         -- System.Pack_89
+      RE_Get_89,                          -- System.Pack_89
+      RE_Set_89,                          -- System.Pack_89
+ 
+      RE_Bits_90,                         -- System.Pack_90
+      RE_Get_90,                          -- System.Pack_90
+      RE_GetU_90,                         -- System.Pack_90
+      RE_Set_90,                          -- System.Pack_90
+      RE_SetU_90,                         -- System.Pack_90
+ 
+      RE_Bits_91,                         -- System.Pack_91
+      RE_Get_91,                          -- System.Pack_91
+      RE_Set_91,                          -- System.Pack_91
+ 
+      RE_Bits_92,                         -- System.Pack_92
+      RE_Get_92,                          -- System.Pack_92
+      RE_GetU_92,                         -- System.Pack_92
+      RE_Set_92,                          -- System.Pack_92
+      RE_SetU_92,                         -- System.Pack_92
+ 
+      RE_Bits_93,                         -- System.Pack_93
+      RE_Get_93,                          -- System.Pack_93
+      RE_Set_93,                          -- System.Pack_93
+ 
+      RE_Bits_94,                         -- System.Pack_94
+      RE_Get_94,                          -- System.Pack_94
+      RE_GetU_94,                         -- System.Pack_94
+      RE_Set_94,                          -- System.Pack_94
+      RE_SetU_94,                         -- System.Pack_94
+ 
+      RE_Bits_95,                         -- System.Pack_95
+      RE_Get_95,                          -- System.Pack_95
+      RE_Set_95,                          -- System.Pack_95
+ 
+      RE_Bits_96,                         -- System.Pack_96
+      RE_Get_96,                          -- System.Pack_96
+      RE_GetU_96,                         -- System.Pack_96
+      RE_Set_96,                          -- System.Pack_96
+      RE_SetU_96,                         -- System.Pack_96
+ 
+      RE_Bits_97,                         -- System.Pack_97
+      RE_Get_97,                          -- System.Pack_97
+      RE_Set_97,                          -- System.Pack_97
+ 
+      RE_Bits_98,                         -- System.Pack_98
+      RE_Get_98,                          -- System.Pack_98
+      RE_GetU_98,                         -- System.Pack_98
+      RE_Set_98,                          -- System.Pack_98
+      RE_SetU_98,                         -- System.Pack_98
+ 
+      RE_Bits_99,                         -- System.Pack_99
+      RE_Get_99,                          -- System.Pack_99
+      RE_Set_99,                          -- System.Pack_99
+ 
+      RE_Bits_100,                        -- System.Pack_100
+      RE_Get_100,                         -- System.Pack_100
+      RE_GetU_100,                        -- System.Pack_100
+      RE_Set_100,                         -- System.Pack_100
+      RE_SetU_100,                        -- System.Pack_100
+ 
+      RE_Bits_101,                        -- System.Pack_101
+      RE_Get_101,                         -- System.Pack_101
+      RE_Set_101,                         -- System.Pack_101
+ 
+      RE_Bits_102,                        -- System.Pack_102
+      RE_Get_102,                         -- System.Pack_102
+      RE_GetU_102,                        -- System.Pack_102
+      RE_Set_102,                         -- System.Pack_102
+      RE_SetU_102,                        -- System.Pack_102
+ 
+      RE_Bits_103,                        -- System.Pack_103
+      RE_Get_103,                         -- System.Pack_103
+      RE_Set_103,                         -- System.Pack_103
+ 
+      RE_Bits_104,                        -- System.Pack_104
+      RE_Get_104,                         -- System.Pack_104
+      RE_GetU_104,                        -- System.Pack_104
+      RE_Set_104,                         -- System.Pack_104
+      RE_SetU_104,                        -- System.Pack_104
+ 
+      RE_Bits_105,                        -- System.Pack_105
+      RE_Get_105,                         -- System.Pack_105
+      RE_Set_105,                         -- System.Pack_105
+ 
+      RE_Bits_106,                        -- System.Pack_106
+      RE_Get_106,                         -- System.Pack_106
+      RE_GetU_106,                        -- System.Pack_106
+      RE_Set_106,                         -- System.Pack_106
+      RE_SetU_106,                        -- System.Pack_106
+ 
+      RE_Bits_107,                        -- System.Pack_107
+      RE_Get_107,                         -- System.Pack_107
+      RE_Set_107,                         -- System.Pack_107
+ 
+      RE_Bits_108,                        -- System.Pack_108
+      RE_Get_108,                         -- System.Pack_108
+      RE_GetU_108,                        -- System.Pack_108
+      RE_Set_108,                         -- System.Pack_108
+      RE_SetU_108,                        -- System.Pack_108
+ 
+      RE_Bits_109,                        -- System.Pack_109
+      RE_Get_109,                         -- System.Pack_109
+      RE_Set_109,                         -- System.Pack_109
+ 
+      RE_Bits_110,                        -- System.Pack_110
+      RE_Get_110,                         -- System.Pack_110
+      RE_GetU_110,                        -- System.Pack_110
+      RE_Set_110,                         -- System.Pack_110
+      RE_SetU_110,                        -- System.Pack_110
+ 
+      RE_Bits_111,                        -- System.Pack_111
+      RE_Get_111,                         -- System.Pack_111
+      RE_Set_111,                         -- System.Pack_111
+ 
+      RE_Bits_112,                        -- System.Pack_112
+      RE_Get_112,                         -- System.Pack_112
+      RE_GetU_112,                        -- System.Pack_112
+      RE_Set_112,                         -- System.Pack_112
+      RE_SetU_112,                        -- System.Pack_112
+ 
+      RE_Bits_113,                        -- System.Pack_113
+      RE_Get_113,                         -- System.Pack_113
+      RE_Set_113,                         -- System.Pack_113
+ 
+      RE_Bits_114,                        -- System.Pack_114
+      RE_Get_114,                         -- System.Pack_114
+      RE_GetU_114,                        -- System.Pack_114
+      RE_Set_114,                         -- System.Pack_114
+      RE_SetU_114,                        -- System.Pack_114
+ 
+      RE_Bits_115,                        -- System.Pack_115
+      RE_Get_115,                         -- System.Pack_115
+      RE_Set_115,                         -- System.Pack_115
+ 
+      RE_Bits_116,                        -- System.Pack_116
+      RE_Get_116,                         -- System.Pack_116
+      RE_GetU_116,                        -- System.Pack_116
+      RE_Set_116,                         -- System.Pack_116
+      RE_SetU_116,                        -- System.Pack_116
+ 
+      RE_Bits_117,                        -- System.Pack_117
+      RE_Get_117,                         -- System.Pack_117
+      RE_Set_117,                         -- System.Pack_117
+ 
+      RE_Bits_118,                        -- System.Pack_118
+      RE_Get_118,                         -- System.Pack_118
+      RE_GetU_118,                        -- System.Pack_118
+      RE_Set_118,                         -- System.Pack_118
+      RE_SetU_118,                        -- System.Pack_118
+ 
+      RE_Bits_119,                        -- System.Pack_119
+      RE_Get_119,                         -- System.Pack_119
+      RE_Set_119,                         -- System.Pack_119
+ 
+      RE_Bits_120,                        -- System.Pack_120
+      RE_Get_120,                         -- System.Pack_120
+      RE_GetU_120,                        -- System.Pack_120
+      RE_Set_120,                         -- System.Pack_120
+      RE_SetU_120,                        -- System.Pack_120
+ 
+      RE_Bits_121,                        -- System.Pack_121
+      RE_Get_121,                         -- System.Pack_121
+      RE_Set_121,                         -- System.Pack_121
+ 
+      RE_Bits_122,                        -- System.Pack_122
+      RE_Get_122,                         -- System.Pack_122
+      RE_GetU_122,                        -- System.Pack_122
+      RE_Set_122,                         -- System.Pack_122
+      RE_SetU_122,                        -- System.Pack_122
+ 
+      RE_Bits_123,                        -- System.Pack_123
+      RE_Get_123,                         -- System.Pack_123
+      RE_Set_123,                         -- System.Pack_123
+ 
+      RE_Bits_124,                        -- System.Pack_124
+      RE_Get_124,                         -- System.Pack_124
+      RE_GetU_124,                        -- System.Pack_124
+      RE_Set_124,                         -- System.Pack_124
+      RE_SetU_124,                        -- System.Pack_124
+ 
+      RE_Bits_125,                        -- System.Pack_125
+      RE_Get_125,                         -- System.Pack_125
+      RE_Set_125,                         -- System.Pack_125
+ 
+      RE_Bits_126,                        -- System.Pack_126
+      RE_Get_126,                         -- System.Pack_126
+      RE_GetU_126,                        -- System.Pack_126
+      RE_Set_126,                         -- System.Pack_126
+      RE_SetU_126,                        -- System.Pack_126
+ 
+      RE_Bits_127,                        -- System.Pack_127
+      RE_Get_127,                         -- System.Pack_127
+      RE_Set_127,                         -- System.Pack_127
+ 
       RE_Adjust_Storage_Size,             -- System.Parameters
       RE_Default_Secondary_Stack_Size,    -- System.Parameters
       RE_Default_Stack_Size,              -- System.Parameters
*************** package Rtsfind is
*** 1244,1249 ****
--- 1649,1679 ----
  
       RE_Stack_Bounded_Pool,              -- System.Pool_Size
  
+      RE_Put_Image_Integer,               -- System.Put_Images
+      RE_Put_Image_Long_Long_Integer,     -- System.Put_Images
+      RE_Put_Image_Long_Long_Long_Integer, -- System.Put_Images
+      RE_Put_Image_Unsigned,              -- System.Put_Images
+      RE_Put_Image_Long_Long_Unsigned,    -- System.Put_Images
+      RE_Put_Image_Long_Long_Long_Unsigned, -- System.Put_Images
+      RE_Put_Image_Thin_Pointer,          -- System.Put_Images
+      RE_Put_Image_Fat_Pointer,           -- System.Put_Images
+      RE_Put_Image_Access_Subp,           -- System.Put_Images
+      RE_Put_Image_Access_Prot_Subp,      -- System.Put_Images
+      RE_Put_Image_String,                -- System.Put_Images
+      RE_Put_Image_Wide_String,           -- System.Put_Images
+      RE_Put_Image_Wide_Wide_String,      -- System.Put_Images
+      RE_Array_Before,                    -- System.Put_Images
+      RE_Array_Between,                   -- System.Put_Images
+      RE_Array_After,                     -- System.Put_Images
+      RE_Simple_Array_Between,            -- System.Put_Images
+      RE_Record_Before,                   -- System.Put_Images
+      RE_Record_Between,                  -- System.Put_Images
+      RE_Record_After,                    -- System.Put_Images
+      RE_Put_Image_Unknown,               -- System.Put_Images
+ 
+      RE_Put_Image_Protected,             -- System.Put_Task_Images
+      RE_Put_Image_Task,                  -- System.Put_Task_Images
+ 
       RE_Do_Apc,                          -- System.RPC
       RE_Do_Rpc,                          -- System.RPC
       RE_Params_Stream_Type,              -- System.RPC
*************** package Rtsfind is
*** 1375,1388 ****
       RE_IS_Is2,                          -- System.Scalar_Values
       RE_IS_Is4,                          -- System.Scalar_Values
       RE_IS_Is8,                          -- System.Scalar_Values
       RE_IS_Iu1,                          -- System.Scalar_Values
       RE_IS_Iu2,                          -- System.Scalar_Values
       RE_IS_Iu4,                          -- System.Scalar_Values
       RE_IS_Iu8,                          -- System.Scalar_Values
!      RE_IS_Iz1,                          -- System.Scalar_Values
!      RE_IS_Iz2,                          -- System.Scalar_Values
!      RE_IS_Iz4,                          -- System.Scalar_Values
!      RE_IS_Iz8,                          -- System.Scalar_Values
       RE_IS_Isf,                          -- System.Scalar_Values
       RE_IS_Ifl,                          -- System.Scalar_Values
       RE_IS_Ilf,                          -- System.Scalar_Values
--- 1805,1816 ----
       RE_IS_Is2,                          -- System.Scalar_Values
       RE_IS_Is4,                          -- System.Scalar_Values
       RE_IS_Is8,                          -- System.Scalar_Values
+      RE_IS_Is16,                         -- System.Scalar_Values
       RE_IS_Iu1,                          -- System.Scalar_Values
       RE_IS_Iu2,                          -- System.Scalar_Values
       RE_IS_Iu4,                          -- System.Scalar_Values
       RE_IS_Iu8,                          -- System.Scalar_Values
!      RE_IS_Iu16,                         -- System.Scalar_Values
       RE_IS_Isf,                          -- System.Scalar_Values
       RE_IS_Ifl,                          -- System.Scalar_Values
       RE_IS_Ilf,                          -- System.Scalar_Values
*************** package Rtsfind is
*** 1427,1436 ****
--- 1855,1867 ----
       RE_I_C,                             -- System.Stream_Attributes
       RE_I_F,                             -- System.Stream_Attributes
       RE_I_I,                             -- System.Stream_Attributes
+      RE_I_I24,                           -- System.Stream_Attributes
       RE_I_LF,                            -- System.Stream_Attributes
       RE_I_LI,                            -- System.Stream_Attributes
       RE_I_LLF,                           -- System.Stream_Attributes
       RE_I_LLI,                           -- System.Stream_Attributes
+      RE_I_LLLI,                          -- System.Stream_Attributes
+      RE_I_LLLU,                          -- System.Stream_Attributes
       RE_I_LLU,                           -- System.Stream_Attributes
       RE_I_LU,                            -- System.Stream_Attributes
       RE_I_SF,                            -- System.Stream_Attributes
*************** package Rtsfind is
*** 1439,1444 ****
--- 1870,1876 ----
       RE_I_SSU,                           -- System.Stream_Attributes
       RE_I_SU,                            -- System.Stream_Attributes
       RE_I_U,                             -- System.Stream_Attributes
+      RE_I_U24,                           -- System.Stream_Attributes
       RE_I_WC,                            -- System.Stream_Attributes
       RE_I_WWC,                           -- System.Stream_Attributes
  
*************** package Rtsfind is
*** 1448,1457 ****
--- 1880,1892 ----
       RE_W_C,                             -- System.Stream_Attributes
       RE_W_F,                             -- System.Stream_Attributes
       RE_W_I,                             -- System.Stream_Attributes
+      RE_W_I24,                           -- System.Stream_Attributes
       RE_W_LF,                            -- System.Stream_Attributes
       RE_W_LI,                            -- System.Stream_Attributes
       RE_W_LLF,                           -- System.Stream_Attributes
       RE_W_LLI,                           -- System.Stream_Attributes
+      RE_W_LLLI,                          -- System.Stream_Attributes
+      RE_W_LLLU,                          -- System.Stream_Attributes
       RE_W_LLU,                           -- System.Stream_Attributes
       RE_W_LU,                            -- System.Stream_Attributes
       RE_W_SF,                            -- System.Stream_Attributes
*************** package Rtsfind is
*** 1460,1465 ****
--- 1895,1901 ----
       RE_W_SSU,                           -- System.Stream_Attributes
       RE_W_SU,                            -- System.Stream_Attributes
       RE_W_U,                             -- System.Stream_Attributes
+      RE_W_U24,                           -- System.Stream_Attributes
       RE_W_WC,                            -- System.Stream_Attributes
       RE_W_WWC,                           -- System.Stream_Attributes
  
*************** package Rtsfind is
*** 1569,1603 ****
       RE_Bits_2,                          -- System.Unsigned_Types
       RE_Bits_4,                          -- System.Unsigned_Types
       RE_Float_Unsigned,                  -- System.Unsigned_Types
-      RE_Long_Unsigned,                   -- System.Unsigned_Types
       RE_Long_Long_Unsigned,              -- System.Unsigned_Types
       RE_Packed_Byte,                     -- System.Unsigned_Types
       RE_Packed_Bytes1,                   -- System.Unsigned_Types
       RE_Packed_Bytes2,                   -- System.Unsigned_Types
       RE_Packed_Bytes4,                   -- System.Unsigned_Types
!      RE_Short_Unsigned,                  -- System.Unsigned_Types
!      RE_Short_Short_Unsigned,            -- System.Unsigned_Types
       RE_Unsigned,                        -- System.Unsigned_Types
  
       RE_Value_Boolean,                   -- System.Val_Bool
  
       RE_Value_Character,                 -- System.Val_Char
  
!      RE_Value_Decimal,                   -- System.Val_Dec
  
       RE_Value_Enumeration_8,             -- System.Val_Enum
       RE_Value_Enumeration_16,            -- System.Val_Enum
       RE_Value_Enumeration_32,            -- System.Val_Enum
  
       RE_Value_Integer,                   -- System.Val_Int
  
!      RE_Value_Long_Long_Decimal,         -- System.Val_LLD
  
       RE_Value_Long_Long_Integer,         -- System.Val_LLI
  
       RE_Value_Long_Long_Unsigned,        -- System.Val_LLU
  
!      RE_Value_Real,                      -- System.Val_Real
  
       RE_Value_Unsigned,                  -- System.Val_Uns
  
--- 2005,2056 ----
       RE_Bits_2,                          -- System.Unsigned_Types
       RE_Bits_4,                          -- System.Unsigned_Types
       RE_Float_Unsigned,                  -- System.Unsigned_Types
       RE_Long_Long_Unsigned,              -- System.Unsigned_Types
+      RE_Long_Long_Long_Unsigned,         -- System.Unsigned_Types
       RE_Packed_Byte,                     -- System.Unsigned_Types
       RE_Packed_Bytes1,                   -- System.Unsigned_Types
       RE_Packed_Bytes2,                   -- System.Unsigned_Types
       RE_Packed_Bytes4,                   -- System.Unsigned_Types
!      RE_Rev_Packed_Bytes1,               -- System.Unsigned_Types
!      RE_Rev_Packed_Bytes2,               -- System.Unsigned_Types
!      RE_Rev_Packed_Bytes4,               -- System.Unsigned_Types
       RE_Unsigned,                        -- System.Unsigned_Types
  
       RE_Value_Boolean,                   -- System.Val_Bool
  
       RE_Value_Character,                 -- System.Val_Char
  
!      RE_Value_Decimal32,                 -- System_Val_Decimal_32
! 
!      RE_Value_Decimal64,                 -- System_Val_Decimal_64
! 
!      RE_Value_Decimal128,                -- System_Val_Decimal_128
  
       RE_Value_Enumeration_8,             -- System.Val_Enum
       RE_Value_Enumeration_16,            -- System.Val_Enum
       RE_Value_Enumeration_32,            -- System.Val_Enum
  
+      RE_Value_Fixed32,                   -- System_Val_Fixed_32
+ 
+      RE_Value_Fixed64,                   -- System_Val_Fixed_64
+ 
+      RE_Value_Fixed128,                  -- System_Val_Fixed_128
+ 
+      RE_Value_Float,                     -- System_Val_Flt
+ 
       RE_Value_Integer,                   -- System.Val_Int
  
!      RE_Value_Long_Float,                -- System_Val_LFlt
! 
!      RE_Value_Long_Long_Float,           -- System_Val_LLF
  
       RE_Value_Long_Long_Integer,         -- System.Val_LLI
  
+      RE_Value_Long_Long_Long_Integer,    -- System.Val_LLLI
+ 
       RE_Value_Long_Long_Unsigned,        -- System.Val_LLU
  
!      RE_Value_Long_Long_Long_Unsigned,   -- System.Val_LLLU
  
       RE_Value_Unsigned,                  -- System.Val_Uns
  
*************** package Rtsfind is
*** 1637,1646 ****
--- 2090,2107 ----
       RE_Width_Enumeration_16,            -- System.Wid_Enum
       RE_Width_Enumeration_32,            -- System.Wid_Enum
  
+      RE_Width_Integer,                   -- System.Wid_Int
+ 
       RE_Width_Long_Long_Integer,         -- System.Wid_LLI
  
+      RE_Width_Long_Long_Long_Integer,    -- System.Wid_LLLI
+ 
       RE_Width_Long_Long_Unsigned,        -- System.Wid_LLU
  
+      RE_Width_Long_Long_Long_Unsigned,   -- System.Wid_LLLU
+ 
+      RE_Width_Unsigned,                  -- System.Wid_Uns
+ 
       RE_Width_Wide_Character,            -- System.Wid_WChar
       RE_Width_Wide_Wide_Character,       -- System.Wid_WChar
  
*************** package Rtsfind is
*** 1747,1752 ****
--- 2208,2215 ----
       RO_CA_Delay_Until                   => Ada_Calendar_Delays,
       RO_CA_To_Duration                   => Ada_Calendar_Delays,
  
+      RE_Yield                            => Ada_Dispatching,
+ 
       RE_Set_Deadline                     => Ada_Dispatching_EDF,
  
       RE_Code_Loc                         => Ada_Exceptions,
*************** package Rtsfind is
*** 1807,1812 ****
--- 2270,2285 ----
  
       RE_Unbounded_String                 => Ada_Strings_Unbounded,
  
+      RE_Sink                             => Ada_Strings_Text_Output,
+ 
+      RE_Put_UTF_8                        => Ada_Strings_Text_Output_Utils,
+      RE_Put_Wide_Wide_String             => Ada_Strings_Text_Output_Utils,
+ 
+      RE_Buffer                           => Ada_Strings_Text_Output_Buffers,
+      RE_New_Buffer                       => Ada_Strings_Text_Output_Buffers,
+      RE_Destroy                          => Ada_Strings_Text_Output_Buffers,
+      RE_Get                              => Ada_Strings_Text_Output_Buffers,
+ 
       RE_Wait_For_Release                 => Ada_Synchronous_Barriers,
  
       RE_Suspend_Until_True               => Ada_Synchronous_Task_Control,
*************** package Rtsfind is
*** 1819,1824 ****
--- 2292,2298 ----
       RE_Check_Interface_Conversion       => Ada_Tags,
       RE_Check_TSD                        => Ada_Tags,
       RE_Cstring_Ptr                      => Ada_Tags,
+      RE_CW_Membership                    => Ada_Tags,
       RE_Descendant_Tag                   => Ada_Tags,
       RE_Dispatch_Table                   => Ada_Tags,
       RE_Dispatch_Table_Wrapper           => Ada_Tags,
*************** package Rtsfind is
*** 1920,1933 ****
--- 2394,2426 ----
       RO_WW_Decimal_IO                    => Ada_Wide_Wide_Text_IO,
       RO_WW_Fixed_IO                      => Ada_Wide_Wide_Text_IO,
  
+      RE_Stream_T                         => CUDA_Driver_Types,
+ 
+      RE_Fatbin_Wrapper                   => CUDA_Internal,
+      RE_Launch_Kernel                    => CUDA_Internal,
+      RE_Pop_Call_Configuration           => CUDA_Internal,
+      RE_Push_Call_Configuration          => CUDA_Internal,
+      RE_Register_Fat_Binary              => CUDA_Internal,
+      RE_Register_Fat_Binary_End          => CUDA_Internal,
+      RE_Register_Function                => CUDA_Internal,
+ 
+      RE_Dim3                             => CUDA_Vector_Types,
+ 
       RE_Integer_8                        => Interfaces,
       RE_Integer_16                       => Interfaces,
       RE_Integer_32                       => Interfaces,
       RE_Integer_64                       => Interfaces,
+      RE_Integer_128                      => Interfaces,
       RE_Unsigned_8                       => Interfaces,
       RE_Unsigned_16                      => Interfaces,
       RE_Unsigned_32                      => Interfaces,
       RE_Unsigned_64                      => Interfaces,
+      RE_Unsigned_128                     => Interfaces,
+ 
+      RO_IC_Unsigned                      => Interfaces_C,
+ 
+      RE_Chars_Ptr                        => Interfaces_C_Strings,
+      RE_New_Char_Array                   => Interfaces_C_Strings,
  
       RE_Address                          => System,
       RE_Any_Priority                     => System,
*************** package Rtsfind is
*** 1944,1954 ****
  
       RE_Address_Image                    => System_Address_Image,
  
!      RE_Add_With_Ovflo_Check             => System_Arith_64,
!      RE_Double_Divide                    => System_Arith_64,
!      RE_Multiply_With_Ovflo_Check        => System_Arith_64,
!      RE_Scaled_Divide                    => System_Arith_64,
!      RE_Subtract_With_Ovflo_Check        => System_Arith_64,
  
       RE_Create_AST_Handler               => System_AST_Handling,
  
--- 2437,2453 ----
  
       RE_Address_Image                    => System_Address_Image,
  
!      RE_Add_With_Ovflo_Check64           => System_Arith_64,
!      RE_Double_Divide64                  => System_Arith_64,
!      RE_Multiply_With_Ovflo_Check64      => System_Arith_64,
!      RE_Scaled_Divide64                  => System_Arith_64,
!      RE_Subtract_With_Ovflo_Check64      => System_Arith_64,
! 
!      RE_Add_With_Ovflo_Check128          => System_Arith_128,
!      RE_Double_Divide128                 => System_Arith_128,
!      RE_Multiply_With_Ovflo_Check128     => System_Arith_128,
!      RE_Subtract_With_Ovflo_Check128     => System_Arith_128,
!      RE_Scaled_Divide128                 => System_Arith_128,
  
       RE_Create_AST_Handler               => System_AST_Handling,
  
*************** package Rtsfind is
*** 2026,2031 ****
--- 2525,2531 ----
       RE_Bswap_16                         => System_Byte_Swapping,
       RE_Bswap_32                         => System_Byte_Swapping,
       RE_Bswap_64                         => System_Byte_Swapping,
+      RE_Bswap_128                        => System_Byte_Swapping,
  
       RE_Compare_Array_S8                 => System_Compare_Array_Signed_8,
       RE_Compare_Array_S8_Unaligned       => System_Compare_Array_Signed_8,
*************** package Rtsfind is
*** 2036,2041 ****
--- 2536,2543 ----
  
       RE_Compare_Array_S64                => System_Compare_Array_Signed_64,
  
+      RE_Compare_Array_S128               => System_Compare_Array_Signed_128,
+ 
       RE_Compare_Array_U8                 => System_Compare_Array_Unsigned_8,
       RE_Compare_Array_U8_Unaligned       => System_Compare_Array_Unsigned_8,
  
*************** package Rtsfind is
*** 2045,2050 ****
--- 2547,2554 ----
  
       RE_Compare_Array_U64                => System_Compare_Array_Unsigned_64,
  
+      RE_Compare_Array_U128               => System_Compare_Array_Unsigned_128,
+ 
       RE_Str_Concat_2                     => System_Concat_2,
       RE_Str_Concat_3                     => System_Concat_3,
       RE_Str_Concat_4                     => System_Concat_4,
*************** package Rtsfind is
*** 2083,2112 ****
  
       RE_Exn_Long_Long_Integer            => System_Exn_LLI,
  
       RE_Exp_Integer                      => System_Exp_Int,
  
       RE_Exp_Long_Long_Integer            => System_Exp_LLI,
  
       RE_Exp_Long_Long_Unsigned           => System_Exp_LLU,
  
       RE_Exp_Modular                      => System_Exp_Mod,
  
       RE_Exp_Unsigned                     => System_Exp_Uns,
  
       RE_Attr_Float                       => System_Fat_Flt,
  
-      RE_Attr_IEEE_Long                   => System_Fat_IEEE_Long_Float,
-      RE_Fat_IEEE_Long                    => System_Fat_IEEE_Long_Float,
- 
-      RE_Attr_IEEE_Short                  => System_Fat_IEEE_Short_Float,
-      RE_Fat_IEEE_Short                   => System_Fat_IEEE_Short_Float,
- 
       RE_Attr_Long_Float                  => System_Fat_LFlt,
  
       RE_Attr_Long_Long_Float             => System_Fat_LLF,
  
-      RE_Attr_Short_Float                 => System_Fat_SFlt,
- 
       RE_Attr_VAX_D_Float                 => System_Fat_VAX_D_Float,
       RE_Fat_VAX_D                        => System_Fat_VAX_D_Float,
  
--- 2587,2614 ----
  
       RE_Exn_Long_Long_Integer            => System_Exn_LLI,
  
+      RE_Exn_Long_Long_Long_Integer       => System_Exn_LLLI,
+ 
       RE_Exp_Integer                      => System_Exp_Int,
  
       RE_Exp_Long_Long_Integer            => System_Exp_LLI,
  
+      RE_Exp_Long_Long_Long_Integer       => System_Exp_LLLI,
+ 
       RE_Exp_Long_Long_Unsigned           => System_Exp_LLU,
  
+      RE_Exp_Long_Long_Long_Unsigned      => System_Exp_LLLU,
+ 
       RE_Exp_Modular                      => System_Exp_Mod,
  
       RE_Exp_Unsigned                     => System_Exp_Uns,
  
       RE_Attr_Float                       => System_Fat_Flt,
  
       RE_Attr_Long_Float                  => System_Fat_LFlt,
  
       RE_Attr_Long_Long_Float             => System_Fat_LLF,
  
       RE_Attr_VAX_D_Float                 => System_Fat_VAX_D_Float,
       RE_Fat_VAX_D                        => System_Fat_VAX_D_Float,
  
*************** package Rtsfind is
*** 2119,2125 ****
       RE_Add_Offset_To_Address            => System_Finalization_Masters,
       RE_Attach                           => System_Finalization_Masters,
       RE_Base_Pool                        => System_Finalization_Masters,
-      RE_Detach                           => System_Finalization_Masters,
       RE_Finalization_Master              => System_Finalization_Masters,
       RE_Finalization_Master_Ptr          => System_Finalization_Masters,
       RE_Set_Base_Pool                    => System_Finalization_Masters,
--- 2621,2626 ----
*************** package Rtsfind is
*** 2129,2142 ****
       RE_Root_Controlled                  => System_Finalization_Root,
       RE_Root_Controlled_Ptr              => System_Finalization_Root,
  
!      RE_Fore                             => System_Fore,
  
       RE_Image_Boolean                    => System_Img_Bool,
  
       RE_Image_Character                  => System_Img_Char,
       RE_Image_Character_05               => System_Img_Char,
  
!      RE_Image_Decimal                    => System_Img_Dec,
  
       RE_Image_Enumeration_8              => System_Img_Enum_New,
       RE_Image_Enumeration_16             => System_Img_Enum_New,
--- 2630,2659 ----
       RE_Root_Controlled                  => System_Finalization_Root,
       RE_Root_Controlled_Ptr              => System_Finalization_Root,
  
!      RE_Fore_Decimal32                   => System_Fore_Decimal_32,
! 
!      RE_Fore_Decimal64                   => System_Fore_Decimal_64,
! 
!      RE_Fore_Decimal128                  => System_Fore_Decimal_128,
! 
!      RE_Fore_Fixed32                     => System_Fore_Fixed_32,
! 
!      RE_Fore_Fixed64                     => System_Fore_Fixed_64,
! 
!      RE_Fore_Fixed128                    => System_Fore_Fixed_128,
! 
!      RE_Fore_Real                        => System_Fore_Real,
  
       RE_Image_Boolean                    => System_Img_Bool,
  
       RE_Image_Character                  => System_Img_Char,
       RE_Image_Character_05               => System_Img_Char,
  
!      RE_Image_Decimal32                  => System_Img_Decimal_32,
! 
!      RE_Image_Decimal64                  => System_Img_Decimal_64,
! 
!      RE_Image_Decimal128                 => System_Img_Decimal_128,
  
       RE_Image_Enumeration_8              => System_Img_Enum_New,
       RE_Image_Enumeration_16             => System_Img_Enum_New,
*************** package Rtsfind is
*** 2144,2155 ****
  
       RE_Image_Integer                    => System_Img_Int,
  
-      RE_Image_Long_Long_Decimal          => System_Img_LLD,
- 
       RE_Image_Long_Long_Integer          => System_Img_LLI,
  
       RE_Image_Long_Long_Unsigned         => System_Img_LLU,
  
       RE_Image_Ordinary_Fixed_Point       => System_Img_Real,
       RE_Image_Floating_Point             => System_Img_Real,
  
--- 2661,2678 ----
  
       RE_Image_Integer                    => System_Img_Int,
  
       RE_Image_Long_Long_Integer          => System_Img_LLI,
  
+      RE_Image_Long_Long_Long_Integer     => System_Img_LLLI,
+ 
       RE_Image_Long_Long_Unsigned         => System_Img_LLU,
  
+      RE_Image_Long_Long_Long_Unsigned    => System_Img_LLLU,
+ 
+      RE_Image_Fixed32                    => System_Img_Fixed_32,
+      RE_Image_Fixed64                    => System_Img_Fixed_64,
+      RE_Image_Fixed128                   => System_Img_Fixed_128,
+ 
       RE_Image_Ordinary_Fixed_Point       => System_Img_Real,
       RE_Image_Floating_Point             => System_Img_Real,
  
*************** package Rtsfind is
*** 2459,2464 ****
--- 2982,3301 ----
       RE_Get_63                           => System_Pack_63,
       RE_Set_63                           => System_Pack_63,
  
+      RE_Bits_65                          => System_Pack_65,
+      RE_Get_65                           => System_Pack_65,
+      RE_Set_65                           => System_Pack_65,
+ 
+      RE_Bits_66                          => System_Pack_66,
+      RE_Get_66                           => System_Pack_66,
+      RE_GetU_66                          => System_Pack_66,
+      RE_Set_66                           => System_Pack_66,
+      RE_SetU_66                          => System_Pack_66,
+ 
+      RE_Bits_67                          => System_Pack_67,
+      RE_Get_67                           => System_Pack_67,
+      RE_Set_67                           => System_Pack_67,
+ 
+      RE_Bits_68                          => System_Pack_68,
+      RE_Get_68                           => System_Pack_68,
+      RE_GetU_68                          => System_Pack_68,
+      RE_Set_68                           => System_Pack_68,
+      RE_SetU_68                          => System_Pack_68,
+ 
+      RE_Bits_69                          => System_Pack_69,
+      RE_Get_69                           => System_Pack_69,
+      RE_Set_69                           => System_Pack_69,
+ 
+      RE_Bits_70                          => System_Pack_70,
+      RE_Get_70                           => System_Pack_70,
+      RE_GetU_70                          => System_Pack_70,
+      RE_Set_70                           => System_Pack_70,
+      RE_SetU_70                          => System_Pack_70,
+ 
+      RE_Bits_71                          => System_Pack_71,
+      RE_Get_71                           => System_Pack_71,
+      RE_Set_71                           => System_Pack_71,
+ 
+      RE_Bits_72                          => System_Pack_72,
+      RE_Get_72                           => System_Pack_72,
+      RE_GetU_72                          => System_Pack_72,
+      RE_Set_72                           => System_Pack_72,
+      RE_SetU_72                          => System_Pack_72,
+ 
+      RE_Bits_73                          => System_Pack_73,
+      RE_Get_73                           => System_Pack_73,
+      RE_Set_73                           => System_Pack_73,
+ 
+      RE_Bits_74                          => System_Pack_74,
+      RE_Get_74                           => System_Pack_74,
+      RE_GetU_74                          => System_Pack_74,
+      RE_Set_74                           => System_Pack_74,
+      RE_SetU_74                          => System_Pack_74,
+ 
+      RE_Bits_75                          => System_Pack_75,
+      RE_Get_75                           => System_Pack_75,
+      RE_Set_75                           => System_Pack_75,
+ 
+      RE_Bits_76                          => System_Pack_76,
+      RE_Get_76                           => System_Pack_76,
+      RE_GetU_76                          => System_Pack_76,
+      RE_Set_76                           => System_Pack_76,
+      RE_SetU_76                          => System_Pack_76,
+ 
+      RE_Bits_77                          => System_Pack_77,
+      RE_Get_77                           => System_Pack_77,
+      RE_Set_77                           => System_Pack_77,
+ 
+      RE_Bits_78                          => System_Pack_78,
+      RE_Get_78                           => System_Pack_78,
+      RE_GetU_78                          => System_Pack_78,
+      RE_Set_78                           => System_Pack_78,
+      RE_SetU_78                          => System_Pack_78,
+ 
+      RE_Bits_79                          => System_Pack_79,
+      RE_Get_79                           => System_Pack_79,
+      RE_Set_79                           => System_Pack_79,
+ 
+      RE_Bits_80                          => System_Pack_80,
+      RE_Get_80                           => System_Pack_80,
+      RE_GetU_80                          => System_Pack_80,
+      RE_Set_80                           => System_Pack_80,
+      RE_SetU_80                          => System_Pack_80,
+ 
+      RE_Bits_81                          => System_Pack_81,
+      RE_Get_81                           => System_Pack_81,
+      RE_Set_81                           => System_Pack_81,
+ 
+      RE_Bits_82                          => System_Pack_82,
+      RE_Get_82                           => System_Pack_82,
+      RE_GetU_82                          => System_Pack_82,
+      RE_Set_82                           => System_Pack_82,
+      RE_SetU_82                          => System_Pack_82,
+ 
+      RE_Bits_83                          => System_Pack_83,
+      RE_Get_83                           => System_Pack_83,
+      RE_Set_83                           => System_Pack_83,
+ 
+      RE_Bits_84                          => System_Pack_84,
+      RE_Get_84                           => System_Pack_84,
+      RE_GetU_84                          => System_Pack_84,
+      RE_Set_84                           => System_Pack_84,
+      RE_SetU_84                          => System_Pack_84,
+ 
+      RE_Bits_85                          => System_Pack_85,
+      RE_Get_85                           => System_Pack_85,
+      RE_Set_85                           => System_Pack_85,
+ 
+      RE_Bits_86                          => System_Pack_86,
+      RE_Get_86                           => System_Pack_86,
+      RE_GetU_86                          => System_Pack_86,
+      RE_Set_86                           => System_Pack_86,
+      RE_SetU_86                          => System_Pack_86,
+ 
+      RE_Bits_87                          => System_Pack_87,
+      RE_Get_87                           => System_Pack_87,
+      RE_Set_87                           => System_Pack_87,
+ 
+      RE_Bits_88                          => System_Pack_88,
+      RE_Get_88                           => System_Pack_88,
+      RE_GetU_88                          => System_Pack_88,
+      RE_Set_88                           => System_Pack_88,
+      RE_SetU_88                          => System_Pack_88,
+ 
+      RE_Bits_89                          => System_Pack_89,
+      RE_Get_89                           => System_Pack_89,
+      RE_Set_89                           => System_Pack_89,
+ 
+      RE_Bits_90                          => System_Pack_90,
+      RE_Get_90                           => System_Pack_90,
+      RE_GetU_90                          => System_Pack_90,
+      RE_Set_90                           => System_Pack_90,
+      RE_SetU_90                          => System_Pack_90,
+ 
+      RE_Bits_91                          => System_Pack_91,
+      RE_Get_91                           => System_Pack_91,
+      RE_Set_91                           => System_Pack_91,
+ 
+      RE_Bits_92                          => System_Pack_92,
+      RE_Get_92                           => System_Pack_92,
+      RE_GetU_92                          => System_Pack_92,
+      RE_Set_92                           => System_Pack_92,
+      RE_SetU_92                          => System_Pack_92,
+ 
+      RE_Bits_93                          => System_Pack_93,
+      RE_Get_93                           => System_Pack_93,
+      RE_Set_93                           => System_Pack_93,
+ 
+      RE_Bits_94                          => System_Pack_94,
+      RE_Get_94                           => System_Pack_94,
+      RE_GetU_94                          => System_Pack_94,
+      RE_Set_94                           => System_Pack_94,
+      RE_SetU_94                          => System_Pack_94,
+ 
+      RE_Bits_95                          => System_Pack_95,
+      RE_Get_95                           => System_Pack_95,
+      RE_Set_95                           => System_Pack_95,
+ 
+      RE_Bits_96                          => System_Pack_96,
+      RE_Get_96                           => System_Pack_96,
+      RE_GetU_96                          => System_Pack_96,
+      RE_Set_96                           => System_Pack_96,
+      RE_SetU_96                          => System_Pack_96,
+ 
+      RE_Bits_97                          => System_Pack_97,
+      RE_Get_97                           => System_Pack_97,
+      RE_Set_97                           => System_Pack_97,
+ 
+      RE_Bits_98                          => System_Pack_98,
+      RE_Get_98                           => System_Pack_98,
+      RE_GetU_98                          => System_Pack_98,
+      RE_Set_98                           => System_Pack_98,
+      RE_SetU_98                          => System_Pack_98,
+ 
+      RE_Bits_99                          => System_Pack_99,
+      RE_Get_99                           => System_Pack_99,
+      RE_Set_99                           => System_Pack_99,
+ 
+      RE_Bits_100                         => System_Pack_100,
+      RE_Get_100                          => System_Pack_100,
+      RE_GetU_100                         => System_Pack_100,
+      RE_Set_100                          => System_Pack_100,
+      RE_SetU_100                         => System_Pack_100,
+ 
+      RE_Bits_101                         => System_Pack_101,
+      RE_Get_101                          => System_Pack_101,
+      RE_Set_101                          => System_Pack_101,
+ 
+      RE_Bits_102                         => System_Pack_102,
+      RE_Get_102                          => System_Pack_102,
+      RE_GetU_102                         => System_Pack_102,
+      RE_Set_102                          => System_Pack_102,
+      RE_SetU_102                         => System_Pack_102,
+ 
+      RE_Bits_103                         => System_Pack_103,
+      RE_Get_103                          => System_Pack_103,
+      RE_Set_103                          => System_Pack_103,
+ 
+      RE_Bits_104                         => System_Pack_104,
+      RE_Get_104                          => System_Pack_104,
+      RE_GetU_104                         => System_Pack_104,
+      RE_Set_104                          => System_Pack_104,
+      RE_SetU_104                         => System_Pack_104,
+ 
+      RE_Bits_105                         => System_Pack_105,
+      RE_Get_105                          => System_Pack_105,
+      RE_Set_105                          => System_Pack_105,
+ 
+      RE_Bits_106                         => System_Pack_106,
+      RE_Get_106                          => System_Pack_106,
+      RE_GetU_106                         => System_Pack_106,
+      RE_Set_106                          => System_Pack_106,
+      RE_SetU_106                         => System_Pack_106,
+ 
+      RE_Bits_107                         => System_Pack_107,
+      RE_Get_107                          => System_Pack_107,
+      RE_Set_107                          => System_Pack_107,
+ 
+      RE_Bits_108                         => System_Pack_108,
+      RE_Get_108                          => System_Pack_108,
+      RE_GetU_108                         => System_Pack_108,
+      RE_Set_108                          => System_Pack_108,
+      RE_SetU_108                         => System_Pack_108,
+ 
+      RE_Bits_109                         => System_Pack_109,
+      RE_Get_109                          => System_Pack_109,
+      RE_Set_109                          => System_Pack_109,
+ 
+      RE_Bits_110                         => System_Pack_110,
+      RE_Get_110                          => System_Pack_110,
+      RE_GetU_110                         => System_Pack_110,
+      RE_Set_110                          => System_Pack_110,
+      RE_SetU_110                         => System_Pack_110,
+ 
+      RE_Bits_111                         => System_Pack_111,
+      RE_Get_111                          => System_Pack_111,
+      RE_Set_111                          => System_Pack_111,
+ 
+      RE_Bits_112                         => System_Pack_112,
+      RE_Get_112                          => System_Pack_112,
+      RE_GetU_112                         => System_Pack_112,
+      RE_Set_112                          => System_Pack_112,
+      RE_SetU_112                         => System_Pack_112,
+ 
+      RE_Bits_113                         => System_Pack_113,
+      RE_Get_113                          => System_Pack_113,
+      RE_Set_113                          => System_Pack_113,
+ 
+      RE_Bits_114                         => System_Pack_114,
+      RE_Get_114                          => System_Pack_114,
+      RE_GetU_114                         => System_Pack_114,
+      RE_Set_114                          => System_Pack_114,
+      RE_SetU_114                         => System_Pack_114,
+ 
+      RE_Bits_115                         => System_Pack_115,
+      RE_Get_115                          => System_Pack_115,
+      RE_Set_115                          => System_Pack_115,
+ 
+      RE_Bits_116                         => System_Pack_116,
+      RE_Get_116                          => System_Pack_116,
+      RE_GetU_116                         => System_Pack_116,
+      RE_Set_116                          => System_Pack_116,
+      RE_SetU_116                         => System_Pack_116,
+ 
+      RE_Bits_117                         => System_Pack_117,
+      RE_Get_117                          => System_Pack_117,
+      RE_Set_117                          => System_Pack_117,
+ 
+      RE_Bits_118                         => System_Pack_118,
+      RE_Get_118                          => System_Pack_118,
+      RE_GetU_118                         => System_Pack_118,
+      RE_Set_118                          => System_Pack_118,
+      RE_SetU_118                         => System_Pack_118,
+ 
+      RE_Bits_119                         => System_Pack_119,
+      RE_Get_119                          => System_Pack_119,
+      RE_Set_119                          => System_Pack_119,
+ 
+      RE_Bits_120                         => System_Pack_120,
+      RE_Get_120                          => System_Pack_120,
+      RE_GetU_120                         => System_Pack_120,
+      RE_Set_120                          => System_Pack_120,
+      RE_SetU_120                         => System_Pack_120,
+ 
+      RE_Bits_121                         => System_Pack_121,
+      RE_Get_121                          => System_Pack_121,
+      RE_Set_121                          => System_Pack_121,
+ 
+      RE_Bits_122                         => System_Pack_122,
+      RE_Get_122                          => System_Pack_122,
+      RE_GetU_122                         => System_Pack_122,
+      RE_Set_122                          => System_Pack_122,
+      RE_SetU_122                         => System_Pack_122,
+ 
+      RE_Bits_123                         => System_Pack_123,
+      RE_Get_123                          => System_Pack_123,
+      RE_Set_123                          => System_Pack_123,
+ 
+      RE_Bits_124                         => System_Pack_124,
+      RE_Get_124                          => System_Pack_124,
+      RE_GetU_124                         => System_Pack_124,
+      RE_Set_124                          => System_Pack_124,
+      RE_SetU_124                         => System_Pack_124,
+ 
+      RE_Bits_125                         => System_Pack_125,
+      RE_Get_125                          => System_Pack_125,
+      RE_Set_125                          => System_Pack_125,
+ 
+      RE_Bits_126                         => System_Pack_126,
+      RE_Get_126                          => System_Pack_126,
+      RE_GetU_126                         => System_Pack_126,
+      RE_Set_126                          => System_Pack_126,
+      RE_SetU_126                         => System_Pack_126,
+ 
+      RE_Bits_127                         => System_Pack_127,
+      RE_Get_127                          => System_Pack_127,
+      RE_Set_127                          => System_Pack_127,
+ 
       RE_Adjust_Storage_Size              => System_Parameters,
       RE_Default_Secondary_Stack_Size     => System_Parameters,
       RE_Default_Stack_Size               => System_Parameters,
*************** package Rtsfind is
*** 2612,2617 ****
--- 3449,3479 ----
  
       RE_Stack_Bounded_Pool               => System_Pool_Size,
  
+      RE_Put_Image_Integer                => System_Put_Images,
+      RE_Put_Image_Long_Long_Integer      => System_Put_Images,
+      RE_Put_Image_Long_Long_Long_Integer => System_Put_Images,
+      RE_Put_Image_Unsigned               => System_Put_Images,
+      RE_Put_Image_Long_Long_Unsigned     => System_Put_Images,
+      RE_Put_Image_Long_Long_Long_Unsigned => System_Put_Images,
+      RE_Put_Image_Thin_Pointer           => System_Put_Images,
+      RE_Put_Image_Fat_Pointer            => System_Put_Images,
+      RE_Put_Image_Access_Subp            => System_Put_Images,
+      RE_Put_Image_Access_Prot_Subp       => System_Put_Images,
+      RE_Put_Image_String                 => System_Put_Images,
+      RE_Put_Image_Wide_String            => System_Put_Images,
+      RE_Put_Image_Wide_Wide_String       => System_Put_Images,
+      RE_Array_Before                     => System_Put_Images,
+      RE_Array_Between                    => System_Put_Images,
+      RE_Array_After                      => System_Put_Images,
+      RE_Simple_Array_Between             => System_Put_Images,
+      RE_Record_Before                    => System_Put_Images,
+      RE_Record_Between                   => System_Put_Images,
+      RE_Record_After                     => System_Put_Images,
+      RE_Put_Image_Unknown                => System_Put_Images,
+ 
+      RE_Put_Image_Protected              => System_Put_Task_Images,
+      RE_Put_Image_Task                   => System_Put_Task_Images,
+ 
       RO_RD_Delay_For                     => System_Relative_Delays,
  
       RE_Do_Apc                           => System_RPC,
*************** package Rtsfind is
*** 2623,2636 ****
       RE_IS_Is2                           => System_Scalar_Values,
       RE_IS_Is4                           => System_Scalar_Values,
       RE_IS_Is8                           => System_Scalar_Values,
       RE_IS_Iu1                           => System_Scalar_Values,
       RE_IS_Iu2                           => System_Scalar_Values,
       RE_IS_Iu4                           => System_Scalar_Values,
       RE_IS_Iu8                           => System_Scalar_Values,
!      RE_IS_Iz1                           => System_Scalar_Values,
!      RE_IS_Iz2                           => System_Scalar_Values,
!      RE_IS_Iz4                           => System_Scalar_Values,
!      RE_IS_Iz8                           => System_Scalar_Values,
       RE_IS_Isf                           => System_Scalar_Values,
       RE_IS_Ifl                           => System_Scalar_Values,
       RE_IS_Ilf                           => System_Scalar_Values,
--- 3485,3496 ----
       RE_IS_Is2                           => System_Scalar_Values,
       RE_IS_Is4                           => System_Scalar_Values,
       RE_IS_Is8                           => System_Scalar_Values,
+      RE_IS_Is16                          => System_Scalar_Values,
       RE_IS_Iu1                           => System_Scalar_Values,
       RE_IS_Iu2                           => System_Scalar_Values,
       RE_IS_Iu4                           => System_Scalar_Values,
       RE_IS_Iu8                           => System_Scalar_Values,
!      RE_IS_Iu16                          => System_Scalar_Values,
       RE_IS_Isf                           => System_Scalar_Values,
       RE_IS_Ifl                           => System_Scalar_Values,
       RE_IS_Ilf                           => System_Scalar_Values,
*************** package Rtsfind is
*** 2675,2684 ****
--- 3535,3547 ----
       RE_I_C                              => System_Stream_Attributes,
       RE_I_F                              => System_Stream_Attributes,
       RE_I_I                              => System_Stream_Attributes,
+      RE_I_I24                            => System_Stream_Attributes,
       RE_I_LF                             => System_Stream_Attributes,
       RE_I_LI                             => System_Stream_Attributes,
       RE_I_LLF                            => System_Stream_Attributes,
       RE_I_LLI                            => System_Stream_Attributes,
+      RE_I_LLLI                           => System_Stream_Attributes,
+      RE_I_LLLU                           => System_Stream_Attributes,
       RE_I_LLU                            => System_Stream_Attributes,
       RE_I_LU                             => System_Stream_Attributes,
       RE_I_SF                             => System_Stream_Attributes,
*************** package Rtsfind is
*** 2687,2692 ****
--- 3550,3556 ----
       RE_I_SSU                            => System_Stream_Attributes,
       RE_I_SU                             => System_Stream_Attributes,
       RE_I_U                              => System_Stream_Attributes,
+      RE_I_U24                            => System_Stream_Attributes,
       RE_I_WC                             => System_Stream_Attributes,
       RE_I_WWC                            => System_Stream_Attributes,
  
*************** package Rtsfind is
*** 2696,2705 ****
--- 3560,3572 ----
       RE_W_C                              => System_Stream_Attributes,
       RE_W_F                              => System_Stream_Attributes,
       RE_W_I                              => System_Stream_Attributes,
+      RE_W_I24                            => System_Stream_Attributes,
       RE_W_LF                             => System_Stream_Attributes,
       RE_W_LI                             => System_Stream_Attributes,
       RE_W_LLF                            => System_Stream_Attributes,
       RE_W_LLI                            => System_Stream_Attributes,
+      RE_W_LLLI                           => System_Stream_Attributes,
+      RE_W_LLLU                           => System_Stream_Attributes,
       RE_W_LLU                            => System_Stream_Attributes,
       RE_W_LU                             => System_Stream_Attributes,
       RE_W_SF                             => System_Stream_Attributes,
*************** package Rtsfind is
*** 2708,2713 ****
--- 3575,3581 ----
       RE_W_SSU                            => System_Stream_Attributes,
       RE_W_SU                             => System_Stream_Attributes,
       RE_W_U                              => System_Stream_Attributes,
+      RE_W_U24                            => System_Stream_Attributes,
       RE_W_WC                             => System_Stream_Attributes,
       RE_W_WWC                            => System_Stream_Attributes,
  
*************** package Rtsfind is
*** 2817,2851 ****
       RE_Bits_2                           => System_Unsigned_Types,
       RE_Bits_4                           => System_Unsigned_Types,
       RE_Float_Unsigned                   => System_Unsigned_Types,
-      RE_Long_Unsigned                    => System_Unsigned_Types,
       RE_Long_Long_Unsigned               => System_Unsigned_Types,
       RE_Packed_Byte                      => System_Unsigned_Types,
       RE_Packed_Bytes1                    => System_Unsigned_Types,
       RE_Packed_Bytes2                    => System_Unsigned_Types,
       RE_Packed_Bytes4                    => System_Unsigned_Types,
!      RE_Short_Unsigned                   => System_Unsigned_Types,
!      RE_Short_Short_Unsigned             => System_Unsigned_Types,
       RE_Unsigned                         => System_Unsigned_Types,
  
       RE_Value_Boolean                    => System_Val_Bool,
  
       RE_Value_Character                  => System_Val_Char,
  
!      RE_Value_Decimal                    => System_Val_Dec,
  
       RE_Value_Enumeration_8              => System_Val_Enum,
       RE_Value_Enumeration_16             => System_Val_Enum,
       RE_Value_Enumeration_32             => System_Val_Enum,
  
       RE_Value_Integer                    => System_Val_Int,
  
!      RE_Value_Long_Long_Decimal          => System_Val_LLD,
  
       RE_Value_Long_Long_Integer          => System_Val_LLI,
  
       RE_Value_Long_Long_Unsigned         => System_Val_LLU,
  
!      RE_Value_Real                       => System_Val_Real,
  
       RE_Value_Unsigned                   => System_Val_Uns,
  
--- 3685,3736 ----
       RE_Bits_2                           => System_Unsigned_Types,
       RE_Bits_4                           => System_Unsigned_Types,
       RE_Float_Unsigned                   => System_Unsigned_Types,
       RE_Long_Long_Unsigned               => System_Unsigned_Types,
+      RE_Long_Long_Long_Unsigned          => System_Unsigned_Types,
       RE_Packed_Byte                      => System_Unsigned_Types,
       RE_Packed_Bytes1                    => System_Unsigned_Types,
       RE_Packed_Bytes2                    => System_Unsigned_Types,
       RE_Packed_Bytes4                    => System_Unsigned_Types,
!      RE_Rev_Packed_Bytes1                => System_Unsigned_Types,
!      RE_Rev_Packed_Bytes2                => System_Unsigned_Types,
!      RE_Rev_Packed_Bytes4                => System_Unsigned_Types,
       RE_Unsigned                         => System_Unsigned_Types,
  
       RE_Value_Boolean                    => System_Val_Bool,
  
       RE_Value_Character                  => System_Val_Char,
  
!      RE_Value_Decimal32                  => System_Val_Decimal_32,
! 
!      RE_Value_Decimal64                  => System_Val_Decimal_64,
! 
!      RE_Value_Decimal128                 => System_Val_Decimal_128,
  
       RE_Value_Enumeration_8              => System_Val_Enum,
       RE_Value_Enumeration_16             => System_Val_Enum,
       RE_Value_Enumeration_32             => System_Val_Enum,
  
+      RE_Value_Fixed32                    => System_Val_Fixed_32,
+ 
+      RE_Value_Fixed64                    => System_Val_Fixed_64,
+ 
+      RE_Value_Fixed128                   => System_Val_Fixed_128,
+ 
+      RE_Value_Float                      => System_Val_Flt,
+ 
       RE_Value_Integer                    => System_Val_Int,
  
!      RE_Value_Long_Float                 => System_Val_LFlt,
! 
!      RE_Value_Long_Long_Float            => System_Val_LLF,
  
       RE_Value_Long_Long_Integer          => System_Val_LLI,
  
+      RE_Value_Long_Long_Long_Integer     => System_Val_LLLI,
+ 
       RE_Value_Long_Long_Unsigned         => System_Val_LLU,
  
!      RE_Value_Long_Long_Long_Unsigned    => System_Val_LLLU,
  
       RE_Value_Unsigned                   => System_Val_Uns,
  
*************** package Rtsfind is
*** 2886,2895 ****
--- 3771,3788 ----
       RE_Width_Enumeration_16             => System_Wid_Enum,
       RE_Width_Enumeration_32             => System_Wid_Enum,
  
+      RE_Width_Integer                    => System_Wid_Int,
+ 
       RE_Width_Long_Long_Integer          => System_Wid_LLI,
  
+      RE_Width_Long_Long_Long_Integer     => System_Wid_LLLI,
+ 
       RE_Width_Long_Long_Unsigned         => System_Wid_LLU,
  
+      RE_Width_Long_Long_Long_Unsigned    => System_Wid_LLLU,
+ 
+      RE_Width_Unsigned                   => System_Wid_Uns,
+ 
       RE_Width_Wide_Character             => System_Wid_WChar,
       RE_Width_Wide_Wide_Character        => System_Wid_WChar,
  
*************** package Rtsfind is
*** 3125,3130 ****
--- 4018,4030 ----
     --  Wide_Wide_Text_IO.xxx, where xxx is one of the subpackages of Text_IO
     --  that is specially handled as described for Check_Text_IO_Special_Unit.
  
+    function Is_Text_IO_Special_Package (E : Entity_Id) return Boolean;
+    --  Return True iff E is one of the special generic Text_IO packages, which
+    --  Ada RM defines to be nested in Ada.Text_IO, but GNAT defines as its
+    --  private children. This is similar to Is_Text_IO_Special_Unit, but is
+    --  meant to be used on a fully resolved AST, especially in the backends.
+    --  This is used by SPARK.
+ 
     function RTE (E : RE_Id) return Entity_Id;
     --  Given the entity defined in the above tables, as identified by the
     --  corresponding value in the RE_Id enumeration type, returns the Id of the
diff -Nrcpad gcc-10.3.0/gcc/ada/runtime.h gcc-11.1.0/gcc/ada/runtime.h
*** gcc-10.3.0/gcc/ada/runtime.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/runtime.h	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 2019, Free Software Foundation, Inc.              *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 2019-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/s-oscons-tmplt.c gcc-11.1.0/gcc/ada/s-oscons-tmplt.c
*** gcc-10.3.0/gcc/ada/s-oscons-tmplt.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/s-oscons-tmplt.c	Tue Apr 27 10:00:13 2021
***************
*** 7,13 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Style_Checks ("M32766");
*** 96,102 ****
  /* Define _BSD_SOURCE to get CRTSCTS */
  # define _BSD_SOURCE
  
! #endif /* defined (__linux__) */
  
  /* Include gsocket.h before any system header so it can redefine FD_SETSIZE */
  
--- 96,102 ----
  /* Define _BSD_SOURCE to get CRTSCTS */
  # define _BSD_SOURCE
  
! #endif /* defined (__linux__) || defined (__ANDROID__) */
  
  /* Include gsocket.h before any system header so it can redefine FD_SETSIZE */
  
*************** pragma Style_Checks ("M32766");
*** 121,126 ****
--- 121,128 ----
   **/
  
  # include <vxWorks.h>
+ #elif !defined(__MINGW32__)
+ #include <poll.h>
  #endif
  
  #include "adaint.h"
*************** CNU(CRTSCTS, "Output hw flow control")
*** 722,727 ****
--- 724,764 ----
  #endif
  CNU(CREAD, "Read")
  
+ #ifndef ICANON
+ # define ICANON -1
+ #endif
+ CNU(ICANON, "canonical mode")
+ 
+ #ifndef CBAUD
+ # define CBAUD -1
+ #endif
+ CNU(CBAUD, "baud speed mask")
+ 
+ #ifndef ECHO
+ # define ECHO -1
+ #endif
+ CNU(ECHO, "echo input characters")
+ 
+ #ifndef ECHOE
+ # define ECHOE -1
+ #endif
+ CNU(ECHOE, "erase preceding characters")
+ 
+ #ifndef ECHOK
+ # define ECHOK -1
+ #endif
+ CNU(ECHOK, "kill character, erases current line")
+ 
+ #ifndef ECHOCTL
+ # define ECHOCTL -1
+ #endif
+ CNU(ECHOCTL, "echo special characters")
+ 
+ #ifndef ECHONL
+ # define ECHONL -1
+ #endif
+ CNU(ECHONL, "force echo NL character")
+ 
  #ifndef CS5
  # define CS5 -1
  #endif
*************** CND(SIZEOF_sigset, "sigset")
*** 1735,1746 ****
--- 1772,1802 ----
  #endif
  
  #if defined(_WIN32) || defined(__vxworks)
+ #define SIZEOF_nfds_t sizeof (int) * 8
  #define SIZEOF_socklen_t sizeof (size_t)
+ #elif defined(__Lynx__)
+ #define SIZEOF_nfds_t sizeof (unsigned long int) * 8
+ #define SIZEOF_socklen_t sizeof (socklen_t)
  #else
+ #define SIZEOF_nfds_t sizeof (nfds_t) * 8
  #define SIZEOF_socklen_t sizeof (socklen_t)
  #endif
+ CND(SIZEOF_nfds_t, "Size of nfds_t");
  CND(SIZEOF_socklen_t, "Size of socklen_t");
  
+ {
+ #if defined(__vxworks)
+ #define SIZEOF_fd_type sizeof (int) * 8
+ #define SIZEOF_pollfd_events sizeof (short) * 8
+ #else
+ const struct pollfd v_pollfd;
+ #define SIZEOF_fd_type sizeof (v_pollfd.fd) * 8
+ #define SIZEOF_pollfd_events sizeof (v_pollfd.events) * 8
+ #endif
+ CND(SIZEOF_fd_type, "Size of socket fd");
+ CND(SIZEOF_pollfd_events, "Size of pollfd.events");
+ }
+ 
  #ifndef IF_NAMESIZE
  #ifdef IF_MAX_STRING_SIZE
  #define IF_NAMESIZE IF_MAX_STRING_SIZE
*************** CND(IF_NAMESIZE, "Max size of interface
*** 1752,1757 ****
--- 1808,1857 ----
  
  /*
  
+    --  Poll values
+ 
+ */
+ 
+ #if defined(__vxworks)
+ #ifndef POLLIN
+ #define POLLIN 1
+ #endif
+ 
+ #ifndef POLLPRI
+ #define POLLPRI 2
+ #endif
+ 
+ #ifndef POLLOUT
+ #define POLLOUT 4
+ #endif
+ 
+ #ifndef POLLERR
+ #define POLLERR 8
+ #endif
+ 
+ #ifndef POLLHUP
+ #define POLLHUP 16
+ #endif
+ 
+ #ifndef POLLNVAL
+ #define POLLNVAL 32
+ #endif
+ 
+ #elif defined(_WIN32)
+ #define POLLPRI 0
+ /*  If the POLLPRI flag is set on a socket for the Microsoft Winsock provider,
+  *  the WSAPoll function will fail. */
+ #endif
+ 
+ CND(POLLIN, "There is data to read");
+ CND(POLLPRI, "Urgent data to read");
+ CND(POLLOUT, "Writing will not block");
+ CND(POLLERR, "Error (output only)");
+ CND(POLLHUP, "Hang up (output only)");
+ CND(POLLNVAL, "Invalid request");
+ 
+ /*
+ 
     --  Fields of struct msghdr
  */
  
*************** CST(Inet_Pton_Linkname, "")
*** 1799,1804 ****
--- 1899,1911 ----
  #endif
  CST(Inet_Ntop_Linkname, "")
  
+ #if defined(_WIN32)
+ # define Poll_Linkname "WSAPoll"
+ #else
+ # define Poll_Linkname "poll"
+ #endif
+ CST(Poll_Linkname, "")
+ 
  #endif /* HAVE_SOCKETS */
  
  /*
diff -Nrcpad gcc-10.3.0/gcc/ada/sa_messages.adb gcc-11.1.0/gcc/ada/sa_messages.adb
*** gcc-10.3.0/gcc/ada/sa_messages.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sa_messages.adb	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  ------------------------------------------------------------------------------
  --                       C O D E P E E R / S P A R K                        --
  --                                                                          --
! --                     Copyright (C) 2015-2019, AdaCore                     --
  --                                                                          --
  -- This is free software;  you can redistribute it  and/or modify it  under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 1,7 ----
  ------------------------------------------------------------------------------
  --                       C O D E P E E R / S P A R K                        --
  --                                                                          --
! --                     Copyright (C) 2015-2020, AdaCore                     --
  --                                                                          --
  -- This is free software;  you can redistribute it  and/or modify it  under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sa_messages.ads gcc-11.1.0/gcc/ada/sa_messages.ads
*** gcc-10.3.0/gcc/ada/sa_messages.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sa_messages.ads	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  ------------------------------------------------------------------------------
  --                       C O D E P E E R / S P A R K                        --
  --                                                                          --
! --                     Copyright (C) 2015-2019, AdaCore                     --
  --                                                                          --
  -- This is free software;  you can redistribute it  and/or modify it  under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 1,7 ----
  ------------------------------------------------------------------------------
  --                       C O D E P E E R / S P A R K                        --
  --                                                                          --
! --                     Copyright (C) 2015-2020, AdaCore                     --
  --                                                                          --
  -- This is free software;  you can redistribute it  and/or modify it  under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package SA_Messages is
*** 94,100 ****
     --  type invariant checks (specific and class-wide), and checks for
     --  implementation-defined assertions such as Assert_And_Cut, Assume,
     --  Contract_Cases, Default_Initial_Condition, Initial_Condition,
!    --  Loop_Invariant, Loop_Variant, and Refined_Post.
     --
     --  TBD: it might be nice to distinguish these different kinds of assertions
     --  as is done in SPARK's VC_Kind enumeration type, but any distinction
--- 94,100 ----
     --  type invariant checks (specific and class-wide), and checks for
     --  implementation-defined assertions such as Assert_And_Cut, Assume,
     --  Contract_Cases, Default_Initial_Condition, Initial_Condition,
!    --  Loop_Invariant, Loop_Variant, Refined_Post, and Subprogram_Variant.
     --
     --  TBD: it might be nice to distinguish these different kinds of assertions
     --  as is done in SPARK's VC_Kind enumeration type, but any distinction
diff -Nrcpad gcc-10.3.0/gcc/ada/scans.adb gcc-11.1.0/gcc/ada/scans.adb
*** gcc-10.3.0/gcc/ada/scans.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/scans.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/scans.ads gcc-11.1.0/gcc/ada/scans.ads
*** gcc-10.3.0/gcc/ada/scans.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/scans.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Scans is
*** 87,93 ****
        --  exception-name". This degrades error recovery slightly, and perhaps
        --  we could do better, but not worth the effort.
  
!       --  Ada2020 introduces square brackets as delimiters for array and
        --  container aggregates.
  
        Tok_Raise,           -- RAISE
--- 81,87 ----
        --  exception-name". This degrades error recovery slightly, and perhaps
        --  we could do better, but not worth the effort.
  
!       --  Ada 2020 introduces square brackets as delimiters for array and
        --  container aggregates.
  
        Tok_Raise,           -- RAISE
*************** package Scans is
*** 226,234 ****
        --  the characters '#', '$', '?', '@', '`', '\', '^', '~', or '_'. The
        --  character value itself is stored in Scans.Special_Character.
  
-       Tok_SPARK_Hide,
-       --  HIDE directive in SPARK
- 
        No_Token);
        --  No_Token is used for initializing Token values to indicate that
        --  no value has been set yet.
--- 220,225 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/scil_ll.adb gcc-11.1.0/gcc/ada/scil_ll.adb
*** gcc-10.3.0/gcc/ada/scil_ll.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/scil_ll.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package body SCIL_LL is
*** 120,129 ****
                 null;
  
              when N_SCIL_Membership_Test =>
!                pragma Assert (Nkind_In (N, N_Identifier,
!                                            N_And_Then,
!                                            N_Or_Else,
!                                            N_Expression_With_Actions));
                 null;
  
              when others =>
--- 114,122 ----
                 null;
  
              when N_SCIL_Membership_Test =>
!                pragma Assert
!                  (Nkind (N) in N_Identifier | N_And_Then | N_Or_Else |
!                                N_Expression_With_Actions | N_Function_Call);
                 null;
  
              when others =>
diff -Nrcpad gcc-10.3.0/gcc/ada/scil_ll.ads gcc-11.1.0/gcc/ada/scil_ll.ads
*** gcc-10.3.0/gcc/ada/scil_ll.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/scil_ll.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2010-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2010-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/scn.adb gcc-11.1.0/gcc/ada/scn.adb
*** gcc-10.3.0/gcc/ada/scn.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/scn.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Uintp;    use Uintp;
*** 36,193 ****
  
  package body Scn is
  
-    use ASCII;
- 
     Used_As_Identifier : array (Token_Type) of Boolean;
     --  Flags set True if a given keyword is used as an identifier (used to
     --  make sure that we only post an error message for incorrect use of a
     --  keyword as an identifier once for a given keyword).
  
-    function Determine_License return License_Type;
-    --  Scan header of file and check that it has an appropriate GNAT-style
-    --  header with a proper license statement. Returns GPL, Unrestricted,
-    --  or Modified_GPL depending on header. If none of these, returns Unknown.
- 
-    -----------------------
-    -- Determine_License --
-    -----------------------
- 
-    function Determine_License return License_Type is
-       GPL_Found : Boolean := False;
-       Result    : License_Type;
- 
-       function Contains (S : String) return Boolean;
-       --  See if current comment contains successive non-blank characters
-       --  matching the contents of S. If so leave Scan_Ptr unchanged and
-       --  return True, otherwise leave Scan_Ptr unchanged and return False.
- 
-       procedure Skip_EOL;
-       --  Skip to line terminator character
- 
-       --------------
-       -- Contains --
-       --------------
- 
-       function Contains (S : String) return Boolean is
-          CP : Natural;
-          SP : Source_Ptr;
-          SS : Source_Ptr;
- 
-       begin
-          --  Loop to check characters. This loop is terminated by end of
-          --  line, and also we need to check for the EOF case, to take
-          --  care of files containing only comments.
- 
-          SP := Scan_Ptr;
-          while Source (SP) /= CR and then
-                Source (SP) /= LF and then
-                Source (SP) /= EOF
-          loop
-             if Source (SP) = S (S'First) then
-                SS := SP;
-                CP := S'First;
- 
-                loop
-                   SS := SS + 1;
-                   CP := CP + 1;
- 
-                   if CP > S'Last then
-                      return True;
-                   end if;
- 
-                   while Source (SS) = ' ' loop
-                      SS := SS + 1;
-                   end loop;
- 
-                   exit when Source (SS) /= S (CP);
-                end loop;
-             end if;
- 
-             SP := SP + 1;
-          end loop;
- 
-          return False;
-       end Contains;
- 
-       --------------
-       -- Skip_EOL --
-       --------------
- 
-       procedure Skip_EOL is
-       begin
-          while Source (Scan_Ptr) /= CR
-            and then Source (Scan_Ptr) /= LF
-            and then Source (Scan_Ptr) /= EOF
-          loop
-             Scan_Ptr := Scan_Ptr + 1;
-          end loop;
-       end Skip_EOL;
- 
-    --  Start of processing for Determine_License
- 
-    begin
-       loop
-          if Source (Scan_Ptr) /= '-'
-            or else Source (Scan_Ptr + 1) /= '-'
-          then
-             if GPL_Found then
-                Result := GPL;
-                exit;
-             else
-                Result := Unknown;
-                exit;
-             end if;
- 
-          elsif Contains ("Asaspecialexception") then
-             if GPL_Found then
-                Result := Modified_GPL;
-                exit;
-             end if;
- 
-          elsif Contains ("GNUGeneralPublicLicense") then
-             GPL_Found := True;
- 
-          elsif
-              Contains
-                ("ThisspecificationisadaptedfromtheAdaSemanticInterface")
-            or else
-              Contains
-               ("ThisspecificationisderivedfromtheAdaReferenceManual")
-          then
-             Result := Unrestricted;
-             exit;
-          end if;
- 
-          Skip_EOL;
- 
-          Scanner.Check_End_Of_Line;
- 
-          if Source (Scan_Ptr) /= EOF then
- 
-             --  We have to take into account a degenerate case when the source
-             --  file contains only comments and no Ada code.
- 
-             declare
-                Physical : Boolean;
- 
-             begin
-                Skip_Line_Terminators (Scan_Ptr, Physical);
- 
-                --  If we are at start of physical line, update scan pointers
-                --  to reflect the start of the new line.
- 
-                if Physical then
-                   Current_Line_Start       := Scan_Ptr;
-                   Start_Column             := Scanner.Set_Start_Column;
-                   First_Non_Blank_Location := Scan_Ptr;
-                end if;
-             end;
-          end if;
-       end loop;
- 
-       return Result;
-    end Determine_License;
- 
     ----------------------------
     -- Determine_Token_Casing --
     ----------------------------
--- 36,46 ----
*************** package body Scn is
*** 203,212 ****
  
     procedure Initialize_Scanner
       (Unit  : Unit_Number_Type;
!       Index : Source_File_Index)
!    is
!       GNAT_Hedr : constant Text_Buffer (1 .. 78) := (others => '-');
! 
     begin
        Scanner.Initialize_Scanner (Index);
        Set_Unit (Index, Unit);
--- 56,62 ----
  
     procedure Initialize_Scanner
       (Unit  : Unit_Number_Type;
!       Index : Source_File_Index) is
     begin
        Scanner.Initialize_Scanner (Index);
        Set_Unit (Index, Unit);
*************** package body Scn is
*** 218,231 ****
  
        Set_Comes_From_Source_Default (True);
  
-       --  Check license if GNAT type header possibly present
- 
-       if Source_Last (Index) - Scan_Ptr > 80
-         and then Source (Scan_Ptr .. Scan_Ptr + 77) = GNAT_Hedr
-       then
-          Set_License (Current_Source_File, Determine_License);
-       end if;
- 
        Check_For_BOM;
  
        --  Because of the License stuff above, Scng.Initialize_Scanner cannot
--- 68,73 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/scn.ads gcc-11.1.0/gcc/ada/scn.ads
*** gcc-10.3.0/gcc/ada/scn.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/scn.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/scng.adb gcc-11.1.0/gcc/ada/scng.adb
*** gcc-10.3.0/gcc/ada/scng.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/scng.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 25,35 ****
  
  with Atree;    use Atree;
  with Csets;    use Csets;
  with Hostparm; use Hostparm;
  with Namet;    use Namet;
  with Opt;      use Opt;
- with Restrict; use Restrict;
- with Rident;   use Rident;
  with Scans;    use Scans;
  with Sinput;   use Sinput;
  with Snames;   use Snames;
--- 25,34 ----
  
  with Atree;    use Atree;
  with Csets;    use Csets;
+ with Errout;   use Errout;
  with Hostparm; use Hostparm;
  with Namet;    use Namet;
  with Opt;      use Opt;
  with Scans;    use Scans;
  with Sinput;   use Sinput;
  with Snames;   use Snames;
*************** package body Scng is
*** 70,88 ****
     --  the token used is Tok_Identifier. This allows detection of additional
     --  spaces added in sources when using the builder switch -m.
  
-    procedure Accumulate_Token_Checksum_GNAT_6_3;
-    --  Used in place of Accumulate_Token_Checksum for GNAT versions 5.04 to
-    --  6.3, when Tok_Some was not included in Token_Type and the actual
-    --  Token_Type was used for keywords. This procedure is never used in the
-    --  compiler or gnatmake, only in gprbuild.
- 
-    procedure Accumulate_Token_Checksum_GNAT_5_03;
-    --  Used in place of Accumulate_Token_Checksum for GNAT version 5.03, when
-    --  Tok_Interface, Tok_Some, Tok_Synchronized and Tok_Overriding were not
-    --  included in Token_Type and the actual Token_Type was used for keywords.
-    --  This procedure is never used in the compiler or gnatmake, only in
-    --  gprbuild.
- 
     procedure Accumulate_Checksum (C : Character);
     pragma Inline (Accumulate_Checksum);
     --  This routine accumulates the checksum given character C. During the
--- 69,74 ----
*************** package body Scng is
*** 138,444 ****
           Character'Val (Token_Type'Pos (Token)));
     end Accumulate_Token_Checksum;
  
-    ----------------------------------------
-    -- Accumulate_Token_Checksum_GNAT_6_3 --
-    ----------------------------------------
- 
-    procedure Accumulate_Token_Checksum_GNAT_6_3 is
-    begin
-       --  Individual values of Token_Type are used, instead of subranges, so
-       --  that additions or suppressions of enumerated values in type
-       --  Token_Type are detected by the compiler.
- 
-       case Token is
-          when Tok_Abs
-             | Tok_Abstract
-             | Tok_Access
-             | Tok_Aliased
-             | Tok_All
-             | Tok_Ampersand
-             | Tok_And
-             | Tok_Apostrophe
-             | Tok_Array
-             | Tok_Asterisk
-             | Tok_At
-             | Tok_At_Sign
-             | Tok_Body
-             | Tok_Box
-             | Tok_Char_Literal
-             | Tok_Colon
-             | Tok_Colon_Equal
-             | Tok_Comma
-             | Tok_Constant
-             | Tok_Delta
-             | Tok_Digits
-             | Tok_Do
-             | Tok_Dot
-             | Tok_Double_Asterisk
-             | Tok_Equal
-             | Tok_Greater
-             | Tok_Greater_Equal
-             | Tok_Greater_Greater
-             | Tok_Identifier
-             | Tok_In
-             | Tok_Integer_Literal
-             | Tok_Interface
-             | Tok_Is
-             | Tok_Left_Bracket
-             | Tok_Left_Paren
-             | Tok_Less
-             | Tok_Less_Equal
-             | Tok_Limited
-             | Tok_Minus
-             | Tok_Mod
-             | Tok_New
-             | Tok_Not
-             | Tok_Not_Equal
-             | Tok_Null
-             | Tok_Of
-             | Tok_Operator_Symbol
-             | Tok_Or
-             | Tok_Others
-             | Tok_Out
-             | Tok_Plus
-             | Tok_Range
-             | Tok_Real_Literal
-             | Tok_Record
-             | Tok_Rem
-             | Tok_Renames
-             | Tok_Reverse
-             | Tok_Right_Bracket
-             | Tok_Right_Paren
-             | Tok_Slash
-             | Tok_String_Literal
-             | Tok_Xor
-          =>
-             System.CRC32.Update
-               (System.CRC32.CRC32 (Checksum),
-                Character'Val (Token_Type'Pos (Token)));
- 
-          when Tok_Some =>
-             System.CRC32.Update
-               (System.CRC32.CRC32 (Checksum),
-                Character'Val (Token_Type'Pos (Tok_Identifier)));
- 
-          when No_Token
-             | Tok_Abort
-             | Tok_Accept
-             | Tok_Arrow
-             | Tok_Begin
-             | Tok_Case
-             | Tok_Comment
-             | Tok_Declare
-             | Tok_Delay
-             | Tok_Dot_Dot
-             | Tok_Else
-             | Tok_Elsif
-             | Tok_End
-             | Tok_End_Of_Line
-             | Tok_Entry
-             | Tok_EOF
-             | Tok_Exception
-             | Tok_Exit
-             | Tok_Extends
-             | Tok_External
-             | Tok_External_As_List
-             | Tok_For
-             | Tok_Function
-             | Tok_Generic
-             | Tok_Goto
-             | Tok_If
-             | Tok_Less_Less
-             | Tok_Loop
-             | Tok_Overriding
-             | Tok_Package
-             | Tok_Pragma
-             | Tok_Private
-             | Tok_Procedure
-             | Tok_Project
-             | Tok_Protected
-             | Tok_Raise
-             | Tok_Requeue
-             | Tok_Return
-             | Tok_Select
-             | Tok_Semicolon
-             | Tok_Separate
-             | Tok_SPARK_Hide
-             | Tok_Special
-             | Tok_Subtype
-             | Tok_Synchronized
-             | Tok_Tagged
-             | Tok_Task
-             | Tok_Terminate
-             | Tok_Then
-             | Tok_Type
-             | Tok_Until
-             | Tok_Use
-             | Tok_Vertical_Bar
-             | Tok_When
-             | Tok_While
-             | Tok_With
-          =>
-             System.CRC32.Update
-               (System.CRC32.CRC32 (Checksum),
-                Character'Val (Token_Type'Pos (Token_Type'Pred (Token))));
-       end case;
-    end Accumulate_Token_Checksum_GNAT_6_3;
- 
-    -----------------------------------------
-    -- Accumulate_Token_Checksum_GNAT_5_03 --
-    -----------------------------------------
- 
-    procedure Accumulate_Token_Checksum_GNAT_5_03 is
-    begin
-       --  Individual values of Token_Type are used, instead of subranges, so
-       --  that additions or suppressions of enumerated values in type
-       --  Token_Type are detected by the compiler.
- 
-       case Token is
-          when Tok_Abs
-             | Tok_Abstract
-             | Tok_Access
-             | Tok_Aliased
-             | Tok_All
-             | Tok_Ampersand
-             | Tok_And
-             | Tok_Apostrophe
-             | Tok_Array
-             | Tok_Asterisk
-             | Tok_At
-             | Tok_At_Sign
-             | Tok_Body
-             | Tok_Box
-             | Tok_Char_Literal
-             | Tok_Colon
-             | Tok_Colon_Equal
-             | Tok_Comma
-             | Tok_Constant
-             | Tok_Delta
-             | Tok_Digits
-             | Tok_Do
-             | Tok_Dot
-             | Tok_Double_Asterisk
-             | Tok_Equal
-             | Tok_Greater
-             | Tok_Greater_Equal
-             | Tok_Greater_Greater
-             | Tok_Identifier
-             | Tok_In
-             | Tok_Integer_Literal
-             | Tok_Is
-             | Tok_Left_Bracket
-             | Tok_Left_Paren
-             | Tok_Less
-             | Tok_Less_Equal
-             | Tok_Minus
-             | Tok_Mod
-             | Tok_New
-             | Tok_Not
-             | Tok_Not_Equal
-             | Tok_Null
-             | Tok_Operator_Symbol
-             | Tok_Or
-             | Tok_Others
-             | Tok_Plus
-             | Tok_Range
-             | Tok_Real_Literal
-             | Tok_Rem
-             | Tok_Right_Bracket
-             | Tok_Right_Paren
-             | Tok_Slash
-             | Tok_String_Literal
-             | Tok_Xor
-          =>
-             System.CRC32.Update
-               (System.CRC32.CRC32 (Checksum),
-                Character'Val (Token_Type'Pos (Token)));
- 
-          when Tok_Interface
-             | Tok_Overriding
-             | Tok_Some
-             | Tok_Synchronized
-          =>
-             System.CRC32.Update
-               (System.CRC32.CRC32 (Checksum),
-                Character'Val (Token_Type'Pos (Tok_Identifier)));
- 
-          when Tok_Limited
-             | Tok_Of
-             | Tok_Out
-             | Tok_Record
-             | Tok_Renames
-             | Tok_Reverse
-          =>
-             System.CRC32.Update
-               (System.CRC32.CRC32 (Checksum),
-                Character'Val (Token_Type'Pos (Token) - 1));
- 
-          when Tok_Abort
-             | Tok_Accept
-             | Tok_Begin
-             | Tok_Case
-             | Tok_Declare
-             | Tok_Delay
-             | Tok_Else
-             | Tok_Elsif
-             | Tok_End
-             | Tok_Entry
-             | Tok_Exception
-             | Tok_Exit
-             | Tok_For
-             | Tok_Goto
-             | Tok_If
-             | Tok_Less_Less
-             | Tok_Loop
-             | Tok_Pragma
-             | Tok_Protected
-             | Tok_Raise
-             | Tok_Requeue
-             | Tok_Return
-             | Tok_Select
-             | Tok_Subtype
-             | Tok_Tagged
-             | Tok_Task
-             | Tok_Terminate
-             | Tok_Then
-             | Tok_Type
-             | Tok_Until
-             | Tok_When
-             | Tok_While
-          =>
-             System.CRC32.Update
-               (System.CRC32.CRC32 (Checksum),
-                Character'Val (Token_Type'Pos (Token) - 2));
- 
-          when No_Token
-             | Tok_Arrow
-             | Tok_Comment
-             | Tok_Dot_Dot
-             | Tok_End_Of_Line
-             | Tok_EOF
-             | Tok_Extends
-             | Tok_External
-             | Tok_External_As_List
-             | Tok_Function
-             | Tok_Generic
-             | Tok_Package
-             | Tok_Private
-             | Tok_Procedure
-             | Tok_Project
-             | Tok_Semicolon
-             | Tok_Separate
-             | Tok_SPARK_Hide
-             | Tok_Special
-             | Tok_Use
-             | Tok_Vertical_Bar
-             | Tok_With
-          =>
-             System.CRC32.Update
-               (System.CRC32.CRC32 (Checksum),
-                Character'Val (Token_Type'Pos (Token) - 4));
-       end case;
-    end Accumulate_Token_Checksum_GNAT_5_03;
- 
     -----------------------
     -- Check_End_Of_Line --
     -----------------------
--- 124,129 ----
*************** package body Scng is
*** 1058,1068 ****
              end if;
           end if;
  
!          if Checksum_Accumulate_Token_Checksum then
!             Accumulate_Token_Checksum;
!          end if;
! 
!          return;
        end Nlit;
  
        ----------
--- 743,749 ----
              end if;
           end if;
  
!          Accumulate_Token_Checksum;
        end Nlit;
  
        ----------
*************** package body Scng is
*** 1500,1505 ****
--- 1181,1188 ----
           end if;
        end Start_Of_Wide_Character;
  
+       Token_Contains_Uppercase : Boolean;
+ 
     --  Start of processing for Scan
  
     begin
*************** package body Scng is
*** 1561,1566 ****
--- 1244,1251 ----
  
           Token_Ptr := Scan_Ptr;
  
+          Token_Contains_Uppercase := False;
+ 
           --  Here begins the main case statement which transfers control on the
           --  basis of the non-blank character we have encountered.
  
*************** package body Scng is
*** 1615,1633 ****
                 return;
              end if;
  
!          when '@' =>
!             if Ada_Version < Ada_2020 then
!                Error_Msg ("target_name is an Ada 2020 feature", Scan_Ptr);
!                Scan_Ptr := Scan_Ptr + 1;
  
!             else
!                --  AI12-0125-03 : @ is target_name
  
!                Accumulate_Checksum ('@');
!                Scan_Ptr := Scan_Ptr + 1;
!                Token := Tok_At_Sign;
!                return;
!             end if;
  
           --  Asterisk (can be multiplication operator or double asterisk which
           --  is the exponentiation compound delimiter).
--- 1300,1314 ----
                 return;
              end if;
  
!          --  AI12-0125-03 : @ is target_name
  
!          when '@' =>
!             Error_Msg_Ada_2020_Feature ("target name", Token_Ptr);
  
!             Accumulate_Checksum ('@');
!             Scan_Ptr := Scan_Ptr + 1;
!             Token := Tok_At_Sign;
!             return;
  
           --  Asterisk (can be multiplication operator or double asterisk which
           --  is the exponentiation compound delimiter).
*************** package body Scng is
*** 1698,1711 ****
           --  Left bracket
  
           when '[' =>
-             if Source (Scan_Ptr + 1) = '"' then
-                goto Scan_Wide_Character;
  
!             elsif Ada_Version = Ada_2020 then
                 Scan_Ptr := Scan_Ptr + 1;
                 Token := Tok_Left_Bracket;
                 return;
  
              else
                 Error_Msg_S ("illegal character, replaced by ""(""");
                 Scan_Ptr := Scan_Ptr + 1;
--- 1379,1397 ----
           --  Left bracket
  
           when '[' =>
  
!             --  [] under -gnatX is an aggregate notation and the special
!             --  wide character notation becomes unsupported since the two
!             --  are ambiguous.
! 
!             if Extensions_Allowed then
                 Scan_Ptr := Scan_Ptr + 1;
                 Token := Tok_Left_Bracket;
                 return;
  
+             elsif Source (Scan_Ptr + 1) = '"' then
+                goto Scan_Wide_Character;
+ 
              else
                 Error_Msg_S ("illegal character, replaced by ""(""");
                 Scan_Ptr := Scan_Ptr + 1;
*************** package body Scng is
*** 1980,2026 ****
                    Token := Tok_Comment;
                    return;
                 end if;
- 
-                --  If the SPARK restriction is set for this unit, then generate
-                --  a token Tok_SPARK_Hide for a SPARK HIDE directive.
- 
-                if Restriction_Check_Required (SPARK_05)
-                  and then Source (Start_Of_Comment) = '#'
-                then
-                   declare
-                      Scan_SPARK_Ptr : Source_Ptr;
- 
-                   begin
-                      Scan_SPARK_Ptr := Start_Of_Comment + 1;
- 
-                      --  Scan out blanks
- 
-                      while Source (Scan_SPARK_Ptr) = ' '
-                        or else Source (Scan_SPARK_Ptr) = HT
-                      loop
-                         Scan_SPARK_Ptr := Scan_SPARK_Ptr + 1;
-                      end loop;
- 
-                      --  Recognize HIDE directive. SPARK input cannot be
-                      --  encoded as wide characters, so only deal with
-                      --  lower/upper case.
- 
-                      if (Source (Scan_SPARK_Ptr) = 'h'
-                           or else Source (Scan_SPARK_Ptr) = 'H')
-                        and then (Source (Scan_SPARK_Ptr + 1) = 'i'
-                                   or else Source (Scan_SPARK_Ptr + 1) = 'I')
-                        and then (Source (Scan_SPARK_Ptr + 2) = 'd'
-                                   or else Source (Scan_SPARK_Ptr + 2) = 'D')
-                        and then (Source (Scan_SPARK_Ptr + 3) = 'e'
-                                   or else Source (Scan_SPARK_Ptr + 3) = 'E')
-                        and then (Source (Scan_SPARK_Ptr + 4) = ' '
-                                   or else Source (Scan_SPARK_Ptr + 4) = HT)
-                      then
-                         Token := Tok_SPARK_Hide;
-                         return;
-                      end if;
-                   end;
-                end if;
              end if;
           end Minus_Case;
  
--- 1666,1671 ----
*************** package body Scng is
*** 2181,2188 ****
  
              return;
  
!          --  Right bracket or right brace, treated as right paren
!          --  but proper aggregate delimiter in Ada_2020
  
           when ']' | '}' =>
              if Ada_Version >= Ada_2020 then
--- 1826,1833 ----
  
              return;
  
!          --  Right bracket or right brace, treated as right paren but proper
!          --  aggregate delimiter in Ada 2020.
  
           when ']' | '}' =>
              if Ada_Version >= Ada_2020 then
*************** package body Scng is
*** 2355,2360 ****
--- 2000,2006 ----
           --  Upper case letters
  
           when 'A' .. 'Z' =>
+             Token_Contains_Uppercase := True;
              Name_Len := 1;
              Underline_Found := False;
              Name_Buffer (1) :=
*************** package body Scng is
*** 2703,2708 ****
--- 2349,2356 ----
                 Accumulate_Checksum (Source (Scan_Ptr));
  
              elsif Source (Scan_Ptr) in 'A' .. 'Z' then
+                Token_Contains_Uppercase := True;
+ 
                 Name_Buffer (Name_Len + 1) :=
                   Character'Val (Character'Pos (Source (Scan_Ptr)) + 32);
                 Accumulate_Checksum (Name_Buffer (Name_Len + 1));
*************** package body Scng is
*** 2846,2855 ****
                            ("wide character not allowed in identifier", Wptr);
                       end if;
  
                       --  If OK letter, store it folding to upper case. Note
                       --  that we include the folded letter in the checksum.
  
!                      if Is_UTF_32_Letter (Cat) then
                          Code :=
                            Char_Code (UTF_32_To_Upper_Case (UTF_32 (Code)));
                          Accumulate_Checksum (Code);
--- 2494,2510 ----
                            ("wide character not allowed in identifier", Wptr);
                       end if;
  
+                      --  AI12-0004: An identifier shall only contain characters
+                      --  that may be present in Normalization Form KC.
+ 
+                      if not Is_UTF_32_NFKC (UTF_32 (Code)) then
+                         Error_Msg
+                           ("invalid wide character in identifier", Wptr);
+ 
                       --  If OK letter, store it folding to upper case. Note
                       --  that we include the folded letter in the checksum.
  
!                      elsif Is_UTF_32_Letter (Cat) then
                          Code :=
                            Char_Code (UTF_32_To_Upper_Case (UTF_32 (Code)));
                          Accumulate_Checksum (Code);
*************** package body Scng is
*** 2923,2945 ****
  
           Token := Tok_Identifier;
  
!          --  Here is where we check if it was a keyword
  
           if Is_Keyword_Name (Token_Name) then
!             if Opt.Checksum_GNAT_6_3 then
!                Token := Token_Type'Val (Get_Name_Table_Byte (Token_Name));
  
!                if Checksum_Accumulate_Token_Checksum then
!                   if Checksum_GNAT_5_03 then
!                      Accumulate_Token_Checksum_GNAT_5_03;
!                   else
!                      Accumulate_Token_Checksum_GNAT_6_3;
!                   end if;
!                end if;
  
!             else
!                Accumulate_Token_Checksum;
!                Token := Token_Type'Val (Get_Name_Table_Byte (Token_Name));
              end if;
  
              --  Keyword style checks
--- 2578,2593 ----
  
           Token := Tok_Identifier;
  
!          --  Check if it is a keyword
  
           if Is_Keyword_Name (Token_Name) then
!             Accumulate_Token_Checksum;
!             Token := Token_Type'Val (Get_Name_Table_Byte (Token_Name));
  
!             --  See Exp_Put_Image for documentation of Tagged_Seen
  
!             if Token = Tok_Tagged then
!                Tagged_Seen := True;
              end if;
  
              --  Keyword style checks
*************** package body Scng is
*** 2957,2963 ****
                 --  Ada 2005 (AI-340): Do not apply the style check in case of
                 --  MOD attribute.
  
!                if Source (Token_Ptr) <= 'Z'
                   and then (Prev_Token /= Tok_Apostrophe
                             or else
                               (Token /= Tok_Access and then
--- 2605,2611 ----
                 --  Ada 2005 (AI-340): Do not apply the style check in case of
                 --  MOD attribute.
  
!                if Token_Contains_Uppercase
                   and then (Prev_Token /= Tok_Apostrophe
                             or else
                               (Token /= Tok_Access and then
*************** package body Scng is
*** 2997,3008 ****
           --  It is an identifier after all
  
           else
!             if Checksum_Accumulate_Token_Checksum then
!                Accumulate_Token_Checksum;
!             end if;
! 
              Post_Scan;
-             return;
           end if;
     end Scan;
  
--- 2645,2652 ----
           --  It is an identifier after all
  
           else
!             Accumulate_Token_Checksum;
              Post_Scan;
           end if;
     end Scan;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/scng.ads gcc-11.1.0/gcc/ada/scng.ads
*** gcc-10.3.0/gcc/ada/scng.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/scng.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/scos.adb gcc-11.1.0/gcc/ada/scos.adb
*** gcc-10.3.0/gcc/ada/scos.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/scos.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/scos.ads gcc-11.1.0/gcc/ada/scos.ads
*** gcc-10.3.0/gcc/ada/scos.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/scos.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package SCOs is
*** 162,167 ****
--- 162,169 ----
     --      R        extended RETURN statement
     --      S        SELECT statement
     --      W        WHILE loop statement (from WHILE to end of condition)
+    --      X        body of a degenerate subprogram (null procedure or
+    --               expression function)
  
     --      Note: for I and W, condition above is in the RM syntax sense (this
     --      condition is a decision in SCO terminology).
diff -Nrcpad gcc-10.3.0/gcc/ada/scos.h gcc-11.1.0/gcc/ada/scos.h
*** gcc-10.3.0/gcc/ada/scos.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/scos.h	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *           Copyright (C) 2014-2019, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *           Copyright (C) 2014-2020, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/sdefault.ads gcc-11.1.0/gcc/ada/sdefault.ads
*** gcc-10.3.0/gcc/ada/sdefault.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sdefault.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/seh_init.c gcc-11.1.0/gcc/ada/seh_init.c
*** gcc-10.3.0/gcc/ada/seh_init.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/seh_init.c	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 2005-2019, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 2005-2020, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/sem.adb gcc-11.1.0/gcc/ada/sem.adb
*** gcc-10.3.0/gcc/ada/sem.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem is
*** 670,675 ****
--- 670,678 ----
           when N_Iterated_Component_Association =>
              Diagnose_Iterated_Component_Association (N);
  
+          when N_Iterated_Element_Association =>
+             null;   --  May require a more precise error if misplaced.
+ 
           --  For the remaining node types, we generate compiler abort, because
           --  these nodes are always analyzed within the Sem_Chn routines and
           --  there should never be a case of making a call to the main Analyze
*************** package body Sem is
*** 796,802 ****
        --  and because the reference may become overloaded in the instance.
  
        elsif GNATprove_Mode
!         and then Nkind_In (N, N_Expanded_Name, N_Identifier)
          and then not Is_Overloaded (N)
          and then not Inside_A_Generic
        then
--- 799,805 ----
        --  and because the reference may become overloaded in the instance.
  
        elsif GNATprove_Mode
!         and then Nkind (N) in N_Expanded_Name | N_Identifier
          and then not Is_Overloaded (N)
          and then not Inside_A_Generic
        then
*************** package body Sem is
*** 819,825 ****
              Scope_Suppress.Suppress := Svs;
           end;
  
!       elsif Suppress = Overflow_Check then
           declare
              Svg : constant Boolean := Scope_Suppress.Suppress (Suppress);
           begin
--- 822,828 ----
              Scope_Suppress.Suppress := Svs;
           end;
  
!       else
           declare
              Svg : constant Boolean := Scope_Suppress.Suppress (Suppress);
           begin
*************** package body Sem is
*** 1190,1195 ****
--- 1193,1230 ----
        end if;
     end Insert_Before_And_Analyze;
  
+    --------------------------------------------
+    -- Insert_Before_First_Source_Declaration --
+    --------------------------------------------
+ 
+    procedure Insert_Before_First_Source_Declaration
+      (Stmt  : Node_Id;
+       Decls : List_Id)
+    is
+       Decl : Node_Id;
+    begin
+       --  Inspect the declarations of the related subprogram body looking for
+       --  the first source declaration.
+ 
+       pragma Assert (Present (Decls));
+ 
+       Decl := First (Decls);
+       while Present (Decl) loop
+          if Comes_From_Source (Decl) then
+             Insert_Before (Decl, Stmt);
+             return;
+          end if;
+ 
+          Next (Decl);
+       end loop;
+ 
+       --  If we get there, then the subprogram body lacks any source
+       --  declarations. The body of _Postconditions now acts as the
+       --  last declaration.
+ 
+       Append (Stmt, Decls);
+    end Insert_Before_First_Source_Declaration;
+ 
     -----------------------------------
     -- Insert_List_After_And_Analyze --
     -----------------------------------
*************** package body Sem is
*** 1412,1417 ****
--- 1447,1453 ----
        S_GNAT_Mode         : constant Boolean          := GNAT_Mode;
        S_Global_Dis_Names  : constant Boolean          := Global_Discard_Names;
        S_In_Assertion_Expr : constant Nat              := In_Assertion_Expr;
+       S_In_Declare_Expr   : constant Nat              := In_Declare_Expr;
        S_In_Default_Expr   : constant Boolean          := In_Default_Expr;
        S_In_Spec_Expr      : constant Boolean          := In_Spec_Expression;
        S_Inside_A_Generic  : constant Boolean          := Inside_A_Generic;
*************** package body Sem is
*** 1523,1528 ****
--- 1559,1565 ----
        Full_Analysis      := True;
        Inside_A_Generic   := False;
        In_Assertion_Expr  := 0;
+       In_Declare_Expr    := 0;
        In_Default_Expr    := False;
        In_Spec_Expression := False;
        Set_Comes_From_Source_Default (False);
*************** package body Sem is
*** 1607,1612 ****
--- 1644,1650 ----
        Global_Discard_Names := S_Global_Dis_Names;
        GNAT_Mode            := S_GNAT_Mode;
        In_Assertion_Expr    := S_In_Assertion_Expr;
+       In_Declare_Expr      := S_In_Declare_Expr;
        In_Default_Expr      := S_In_Default_Expr;
        In_Spec_Expression   := S_In_Spec_Expr;
        Inside_A_Generic     := S_Inside_A_Generic;
*************** package body Sem is
*** 1673,1678 ****
--- 1711,1717 ----
        pragma Pack (Unit_Number_Set);
  
        Main_CU : constant Node_Id := Cunit (Main_Unit);
+       Spec_CU : Node_Id := Empty;
  
        Seen, Done : Unit_Number_Set := (others => False);
        --  Seen (X) is True after we have seen unit X in the walk. This is used
*************** package body Sem is
*** 1732,1738 ****
        begin
           --  Problem does not arise with main subprograms
  
!          if not Nkind_In (MCU, N_Package_Body, N_Package_Declaration) then
              return False;
           end if;
  
--- 1771,1777 ----
        begin
           --  Problem does not arise with main subprograms
  
!          if Nkind (MCU) not in N_Package_Body | N_Package_Declaration then
              return False;
           end if;
  
*************** package body Sem is
*** 1841,1853 ****
  
                 procedure Assert_Done (Withed_Unit : Node_Id) is
                 begin
!                   if not Done (Get_Cunit_Unit_Number (Withed_Unit)) then
!                      if not Nkind_In
!                               (Unit (Withed_Unit),
!                                  N_Generic_Package_Declaration,
!                                  N_Package_Body,
!                                  N_Package_Renaming_Declaration,
!                                  N_Subprogram_Body)
                       then
                          Write_Unit_Name
                            (Unit_Name (Get_Cunit_Unit_Number (Withed_Unit)));
--- 1880,1897 ----
  
                 procedure Assert_Done (Withed_Unit : Node_Id) is
                 begin
!                   if Withed_Unit /= Main_CU
!                     and then not Done (Get_Cunit_Unit_Number (Withed_Unit))
!                   then
!                      --  N_Null_Statement will happen in case of a ghost unit
!                      --  which gets rewritten.
! 
!                      if Nkind (Unit (Withed_Unit)) not in
!                           N_Generic_Package_Declaration  |
!                           N_Package_Body                 |
!                           N_Package_Renaming_Declaration |
!                           N_Subprogram_Body              |
!                           N_Null_Statement
                       then
                          Write_Unit_Name
                            (Unit_Name (Get_Cunit_Unit_Number (Withed_Unit)));
*************** package body Sem is
*** 1947,1953 ****
              --  Process the unit if it is a spec or the main unit, if it
              --  has no previous spec or we have done all other units.
  
!             if not Nkind_In (Item, N_Package_Body, N_Subprogram_Body)
                or else Acts_As_Spec (CU)
              then
                 if CU = Main_CU and then not Do_Main then
--- 1991,1997 ----
              --  Process the unit if it is a spec or the main unit, if it
              --  has no previous spec or we have done all other units.
  
!             if Nkind (Item) not in N_Package_Body | N_Subprogram_Body
                or else Acts_As_Spec (CU)
              then
                 if CU = Main_CU and then not Do_Main then
*************** package body Sem is
*** 2146,2172 ****
                    null;
  
                 when others =>
-                   Par := Scope (Defining_Entity (Unit (CU)));
  
!                   if Is_Child_Unit (Defining_Entity (Unit (CU))) then
!                      while Present (Par)
!                        and then Par /= Standard_Standard
!                        and then Par /= Cunit_Entity (Main_Unit)
!                      loop
!                         Par := Scope (Par);
!                      end loop;
!                   end if;
  
!                   if Par /= Cunit_Entity (Main_Unit) then
!                      Do_Unit_And_Dependents (CU, N);
!                   end if;
  
              end case;
           end;
  
           Next_Elmt (Cur);
        end loop;
  
        --  Now process package bodies on which main depends, followed by bodies
        --  of parents, if present, and finally main itself.
  
--- 2190,2232 ----
                    null;
  
                 when others =>
  
!                   --  Skip spec of main unit for now, we want to process it
!                   --  after all other specs.
  
!                   if Nkind (Unit (CU)) = N_Package_Declaration
!                     and then Library_Unit (CU) = Main_CU
!                     and then CU /= Main_CU
!                   then
!                      Spec_CU := CU;
!                   else
!                      Par := Scope (Defining_Entity (Unit (CU)));
  
+                      if Is_Child_Unit (Defining_Entity (Unit (CU))) then
+                         while Present (Par)
+                           and then Par /= Standard_Standard
+                           and then Par /= Cunit_Entity (Main_Unit)
+                         loop
+                            Par := Scope (Par);
+                         end loop;
+                      end if;
+ 
+                      if Par /= Cunit_Entity (Main_Unit) then
+                         Do_Unit_And_Dependents (CU, N);
+                      end if;
+                   end if;
              end case;
           end;
  
           Next_Elmt (Cur);
        end loop;
  
+       --  Now process main package spec if skipped
+ 
+       if Present (Spec_CU) then
+          Do_Unit_And_Dependents (Spec_CU, Unit (Spec_CU));
+       end if;
+ 
        --  Now process package bodies on which main depends, followed by bodies
        --  of parents, if present, and finally main itself.
  
*************** package body Sem is
*** 2358,2364 ****
              Action (Lib_Unit);
           end if;
  
!          Context_Item := Next (Context_Item);
        end loop;
     end Walk_Withs_Immediate;
  
--- 2418,2424 ----
              Action (Lib_Unit);
           end if;
  
!          Next (Context_Item);
        end loop;
     end Walk_Withs_Immediate;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/sem.ads gcc-11.1.0/gcc/ada/sem.ads
*** gcc-10.3.0/gcc/ada/sem.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,38 ****
  
  --    Analysis     implements the bulk of semantic analysis such as
  --                 name analysis and type resolution for declarations,
! --                 instructions and expressions.  The main routine
  --                 driving this process is procedure Analyze given below.
  --                 This analysis phase is really a bottom up pass that is
  --                 achieved during the recursive traversal performed by the
--- 32,38 ----
  
  --    Analysis     implements the bulk of semantic analysis such as
  --                 name analysis and type resolution for declarations,
! --                 instructions and expressions. The main routine
  --                 driving this process is procedure Analyze given below.
  --                 This analysis phase is really a bottom up pass that is
  --                 achieved during the recursive traversal performed by the
***************
*** 51,57 ****
  --                 recursive calls to itself to resolve operands.
  
  --    Expansion    if we are not generating code this phase is a no-op.
! --                 otherwise this phase expands, i.e. transforms, original
  --                 declaration, expressions or instructions into simpler
  --                 structures that can be handled by the back-end. This
  --                 phase is also in charge of generating code which is
--- 51,57 ----
  --                 recursive calls to itself to resolve operands.
  
  --    Expansion    if we are not generating code this phase is a no-op.
! --                 Otherwise this phase expands, i.e. transforms, original
  --                 declaration, expressions or instructions into simpler
  --                 structures that can be handled by the back-end. This
  --                 phase is also in charge of generating code which is
***************
*** 72,78 ****
  --  up. For instructions and declarations, before the call to the Analyze
  --  routine completes we perform expansion since at that point we have all
  --  semantic information needed. For expression nodes, after the call to
! --  Analysis terminates we invoke the Resolve routine to transmit top-down
  --  the type that was gathered by Analyze which will resolve possible
  --  ambiguities in the expression. Just before the call to Resolve
  --  terminates, the expression can be expanded since all the semantic
--- 72,78 ----
  --  up. For instructions and declarations, before the call to the Analyze
  --  routine completes we perform expansion since at that point we have all
  --  semantic information needed. For expression nodes, after the call to
! --  Analyze terminates we invoke the Resolve routine to transmit top-down
  --  the type that was gathered by Analyze which will resolve possible
  --  ambiguities in the expression. Just before the call to Resolve
  --  terminates, the expression can be expanded since all the semantic
***************
*** 138,144 ****
  --  this is the one case where this model falls down. Here is how we patch
  --  it up without causing too much distortion to our basic model.
  
! --  A switch (In_Spec_Expression) is set to show that we are in the initial
  --  occurrence of a default expression. The analyzer is then called on this
  --  expression with the switch set true. Analysis and resolution proceed almost
  --  as usual, except that Freeze_Expression will not freeze non-static
--- 138,144 ----
  --  this is the one case where this model falls down. Here is how we patch
  --  it up without causing too much distortion to our basic model.
  
! --  A flag (In_Spec_Expression) is set to show that we are in the initial
  --  occurrence of a default expression. The analyzer is then called on this
  --  expression with the switch set true. Analysis and resolution proceed almost
  --  as usual, except that Freeze_Expression will not freeze non-static
***************
*** 178,184 ****
  --  needs to be called 100 times.)
  
  --  The reason this mechanism does not work is that the expanded code for the
! --  children is typically inserted above the parent and thus when the father
  --  gets expanded no re-evaluation takes place. For instance in the case of
  --  aggregates if "new Thing (Function_Call)" is expanded before the aggregate
  --  the expanded code will be placed outside of the aggregate and when
--- 178,184 ----
  --  needs to be called 100 times.)
  
  --  The reason this mechanism does not work is that the expanded code for the
! --  children is typically inserted above the parent and thus when the parent
  --  gets expanded no re-evaluation takes place. For instance in the case of
  --  aggregates if "new Thing (Function_Call)" is expanded before the aggregate
  --  the expanded code will be placed outside of the aggregate and when
*************** package Sem is
*** 245,257 ****
  
     In_Assertion_Expr : Nat := 0;
     --  This is set non-zero if we are within the expression of an assertion
!    --  pragma or aspect. It is a counter which is incremented at the start of
!    --  expanding such an expression, and decremented on completion of expanding
!    --  that expression. Probably a boolean would be good enough, since we think
!    --  that such expressions cannot nest, but that might not be true in the
!    --  future (e.g. if let expressions are added to Ada) so we prepare for that
!    --  future possibility by making it a counter. As with In_Spec_Expression,
!    --  it must be recursively saved and restored for a Semantics call.
  
     In_Compile_Time_Warning_Or_Error : Boolean := False;
     --  Switch to indicate that we are validating a pragma Compile_Time_Warning
--- 245,264 ----
  
     In_Assertion_Expr : Nat := 0;
     --  This is set non-zero if we are within the expression of an assertion
!    --  pragma or aspect. It is incremented at the start of expanding such an
!    --  expression, and decremented on completion of expanding that
!    --  expression. This needs to be a counter, rather than a Boolean, because
!    --  assertions can contain declare_expressions, which can contain
!    --  assertions. As with In_Spec_Expression, it must be recursively saved and
!    --  restored for a Semantics call.
! 
!    In_Declare_Expr : Nat := 0;
!    --  This is set non-zero if we are within a declare_expression. It is
!    --  incremented at the start of expanding such an expression, and
!    --  decremented on completion of expanding that expression. This needs to be
!    --  a counter, rather than a Boolean, because declare_expressions can
!    --  nest. As with In_Spec_Expression, it must be recursively saved and
!    --  restored for a Semantics call.
  
     In_Compile_Time_Warning_Or_Error : Boolean := False;
     --  Switch to indicate that we are validating a pragma Compile_Time_Warning
*************** package Sem is
*** 664,669 ****
--- 671,683 ----
     --  Suppress argument is present, then the analysis is done with the
     --  specified check suppressed (can be All_Checks to suppress all checks).
  
+    procedure Insert_Before_First_Source_Declaration
+      (Stmt  : Node_Id;
+       Decls : List_Id);
+    --  Insert node Stmt before the first source declaration of the related
+    --  subprogram's body. If no such declaration exists, Stmt becomes the last
+    --  declaration.
+ 
     function External_Ref_In_Generic (E : Entity_Id) return Boolean;
     --  Return True if we are in the context of a generic and E is
     --  external (more global) to it.
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_aggr.adb gcc-11.1.0/gcc/ada/sem_aggr.adb
*** gcc-10.3.0/gcc/ada/sem_aggr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_aggr.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sem;      use Sem;
*** 48,53 ****
--- 48,54 ----
  with Sem_Aux;  use Sem_Aux;
  with Sem_Cat;  use Sem_Cat;
  with Sem_Ch3;  use Sem_Ch3;
+ with Sem_Ch5;  use Sem_Ch5;
  with Sem_Ch8;  use Sem_Ch8;
  with Sem_Ch13; use Sem_Ch13;
  with Sem_Dim;  use Sem_Dim;
*************** with Stand;    use Stand;
*** 63,68 ****
--- 64,70 ----
  with Style;    use Style;
  with Targparm; use Targparm;
  with Tbuild;   use Tbuild;
+ with Ttypes;   use Ttypes;
  with Uintp;    use Uintp;
  
  package body Sem_Aggr is
*************** package body Sem_Aggr is
*** 85,93 ****
        --  The node of the choice
     end record;
  
!    type Case_Table_Type is array (Nat range <>) of Case_Bounds;
!    --  Table type used by Check_Case_Choices procedure. Entry zero is not
!    --  used (reserved for the sort). Real entries start at one.
  
     -----------------------
     -- Local Subprograms --
--- 87,94 ----
        --  The node of the choice
     end record;
  
!    type Case_Table_Type is array (Pos range <>) of Case_Bounds;
!    --  Table type used by Check_Case_Choices procedure
  
     -----------------------
     -- Local Subprograms --
*************** package body Sem_Aggr is
*** 117,131 ****
     --  Expression is also OK in an instance or inlining context, because we
     --  have already preanalyzed and it is known to be type correct.
  
-    procedure Check_Qualified_Aggregate (Level : Nat; Expr : Node_Id);
-    --  Given aggregate Expr, check that sub-aggregates of Expr that are nested
-    --  at Level are qualified. If Level = 0, this applies to Expr directly.
-    --  Only issue errors in formal verification mode.
- 
-    function Is_Top_Level_Aggregate (Expr : Node_Id) return Boolean;
-    --  Return True of Expr is an aggregate not contained directly in another
-    --  aggregate.
- 
     ------------------------------------------------------
     -- Subprograms used for RECORD AGGREGATE Processing --
     ------------------------------------------------------
--- 118,123 ----
*************** package body Sem_Aggr is
*** 147,155 ****
     --
     --  Once this new Component_Association_List is built and all the semantic
     --  checks performed, the original aggregate subtree is replaced with the
!    --  new named record aggregate just built. Note that subtree substitution is
!    --  performed with Rewrite so as to be able to retrieve the original
!    --  aggregate.
     --
     --  The aggregate subtree manipulation performed by Resolve_Record_Aggregate
     --  yields the aggregate format expected by Gigi. Typically, this kind of
--- 139,148 ----
     --
     --  Once this new Component_Association_List is built and all the semantic
     --  checks performed, the original aggregate subtree is replaced with the
!    --  new named record aggregate just built. This new record aggregate has no
!    --  positional associations, so its Expressions field is set to No_List.
!    --  Note that subtree substitution is performed with Rewrite so as to be
!    --  able to retrieve the original aggregate.
     --
     --  The aggregate subtree manipulation performed by Resolve_Record_Aggregate
     --  yields the aggregate format expected by Gigi. Typically, this kind of
*************** package body Sem_Aggr is
*** 234,245 ****
     --  misspelling of one of the components of the Assoc_List. This is called
     --  by Resolve_Aggr_Expr after producing an invalid component error message.
  
-    procedure Check_Static_Discriminated_Subtype (T : Entity_Id; V : Node_Id);
-    --  An optimization: determine whether a discriminated subtype has a static
-    --  constraint, and contains array components whose length is also static,
-    --  either because they are constrained by the discriminant, or because the
-    --  original component bounds are static.
- 
     -----------------------------------------------------
     -- Subprograms used for ARRAY AGGREGATE Processing --
     -----------------------------------------------------
--- 227,232 ----
*************** package body Sem_Aggr is
*** 465,471 ****
           This_Range : constant Node_Id := Aggregate_Bounds (N);
           --  The aggregate range node of this specific sub-aggregate
  
!          This_Low  : constant Node_Id := Low_Bound (Aggregate_Bounds (N));
           This_High : constant Node_Id := High_Bound (Aggregate_Bounds (N));
           --  The aggregate bounds of this specific sub-aggregate
  
--- 452,458 ----
           This_Range : constant Node_Id := Aggregate_Bounds (N);
           --  The aggregate range node of this specific sub-aggregate
  
!          This_Low  : constant Node_Id := Low_Bound  (Aggregate_Bounds (N));
           This_High : constant Node_Id := High_Bound (Aggregate_Bounds (N));
           --  The aggregate bounds of this specific sub-aggregate
  
*************** package body Sem_Aggr is
*** 730,854 ****
        end if;
     end Check_Expr_OK_In_Limited_Aggregate;
  
-    -------------------------------
-    -- Check_Qualified_Aggregate --
-    -------------------------------
- 
-    procedure Check_Qualified_Aggregate (Level : Nat; Expr : Node_Id) is
-       Comp_Expr : Node_Id;
-       Comp_Assn : Node_Id;
- 
-    begin
-       if Level = 0 then
-          if Nkind (Parent (Expr)) /= N_Qualified_Expression then
-             Check_SPARK_05_Restriction ("aggregate should be qualified", Expr);
-          end if;
- 
-       else
-          Comp_Expr := First (Expressions (Expr));
-          while Present (Comp_Expr) loop
-             if Nkind (Comp_Expr) = N_Aggregate then
-                Check_Qualified_Aggregate (Level - 1, Comp_Expr);
-             end if;
- 
-             Comp_Expr := Next (Comp_Expr);
-          end loop;
- 
-          Comp_Assn := First (Component_Associations (Expr));
-          while Present (Comp_Assn) loop
-             Comp_Expr := Expression (Comp_Assn);
- 
-             if Nkind (Comp_Expr) = N_Aggregate then
-                Check_Qualified_Aggregate (Level - 1, Comp_Expr);
-             end if;
- 
-             Comp_Assn := Next (Comp_Assn);
-          end loop;
-       end if;
-    end Check_Qualified_Aggregate;
- 
-    ----------------------------------------
-    -- Check_Static_Discriminated_Subtype --
-    ----------------------------------------
- 
-    procedure Check_Static_Discriminated_Subtype (T : Entity_Id; V : Node_Id) is
-       Disc : constant Entity_Id := First_Discriminant (T);
-       Comp : Entity_Id;
-       Ind  : Entity_Id;
- 
-    begin
-       if Has_Record_Rep_Clause (T) then
-          return;
- 
-       elsif Present (Next_Discriminant (Disc)) then
-          return;
- 
-       elsif Nkind (V) /= N_Integer_Literal then
-          return;
-       end if;
- 
-       Comp := First_Component (T);
-       while Present (Comp) loop
-          if Is_Scalar_Type (Etype (Comp)) then
-             null;
- 
-          elsif Is_Private_Type (Etype (Comp))
-            and then Present (Full_View (Etype (Comp)))
-            and then Is_Scalar_Type (Full_View (Etype (Comp)))
-          then
-             null;
- 
-          elsif Is_Array_Type (Etype (Comp)) then
-             if Is_Bit_Packed_Array (Etype (Comp)) then
-                return;
-             end if;
- 
-             Ind := First_Index (Etype (Comp));
-             while Present (Ind) loop
-                if Nkind (Ind) /= N_Range
-                  or else Nkind (Low_Bound (Ind))  /= N_Integer_Literal
-                  or else Nkind (High_Bound (Ind)) /= N_Integer_Literal
-                then
-                   return;
-                end if;
- 
-                Next_Index (Ind);
-             end loop;
- 
-          else
-             return;
-          end if;
- 
-          Next_Component (Comp);
-       end loop;
- 
-       --  On exit, all components have statically known sizes
- 
-       Set_Size_Known_At_Compile_Time (T);
-    end Check_Static_Discriminated_Subtype;
- 
     -------------------------
     -- Is_Others_Aggregate --
     -------------------------
  
     function Is_Others_Aggregate (Aggr : Node_Id) return Boolean is
     begin
        return No (Expressions (Aggr))
!         and then
!           Nkind (First (Choice_List (First (Component_Associations (Aggr))))) =
!             N_Others_Choice;
     end Is_Others_Aggregate;
  
!    ----------------------------
!    -- Is_Top_Level_Aggregate --
!    ----------------------------
  
-    function Is_Top_Level_Aggregate (Expr : Node_Id) return Boolean is
     begin
!       return Nkind (Parent (Expr)) /= N_Aggregate
!         and then (Nkind (Parent (Expr)) /= N_Component_Association
!                    or else Nkind (Parent (Parent (Expr))) /= N_Aggregate);
!    end Is_Top_Level_Aggregate;
  
     --------------------------------
     -- Make_String_Into_Aggregate --
--- 717,746 ----
        end if;
     end Check_Expr_OK_In_Limited_Aggregate;
  
     -------------------------
     -- Is_Others_Aggregate --
     -------------------------
  
     function Is_Others_Aggregate (Aggr : Node_Id) return Boolean is
+       Assoc : constant List_Id := Component_Associations (Aggr);
+ 
     begin
        return No (Expressions (Aggr))
!         and then Nkind (First (Choice_List (First (Assoc)))) = N_Others_Choice;
     end Is_Others_Aggregate;
  
!    -------------------------
!    -- Is_Single_Aggregate --
!    -------------------------
! 
!    function Is_Single_Aggregate (Aggr : Node_Id) return Boolean is
!       Assoc : constant List_Id := Component_Associations (Aggr);
  
     begin
!       return No (Expressions (Aggr))
!         and then No (Next (First (Assoc)))
!         and then No (Next (First (Choice_List (First (Assoc)))));
!    end Is_Single_Aggregate;
  
     --------------------------------
     -- Make_String_Into_Aggregate --
*************** package body Sem_Aggr is
*** 893,904 ****
     -----------------------
  
     procedure Resolve_Aggregate (N : Node_Id; Typ : Entity_Id) is
!       Loc   : constant Source_Ptr := Sloc (N);
  
        Aggr_Subtyp : Entity_Id;
        --  The actual aggregate subtype. This is not necessarily the same as Typ
        --  which is the subtype of the context in which the aggregate was found.
  
     begin
        --  Ignore junk empty aggregate resulting from parser error
  
--- 785,823 ----
     -----------------------
  
     procedure Resolve_Aggregate (N : Node_Id; Typ : Entity_Id) is
!       Loc : constant Source_Ptr := Sloc (N);
  
        Aggr_Subtyp : Entity_Id;
        --  The actual aggregate subtype. This is not necessarily the same as Typ
        --  which is the subtype of the context in which the aggregate was found.
  
+       Others_Box : Boolean := False;
+       --  Set to True if N represents a simple aggregate with only
+       --  (others => <>), not nested as part of another aggregate.
+ 
+       function Within_Aggregate (N : Node_Id) return Boolean;
+       --  Return True if N is part of an N_Aggregate
+ 
+       ----------------------
+       -- Within_Aggregate --
+       ----------------------
+ 
+       function Within_Aggregate (N : Node_Id) return Boolean is
+          P : Node_Id := Parent (N);
+       begin
+          while Present (P) loop
+             if Nkind (P) = N_Aggregate then
+                return True;
+             end if;
+ 
+             P := Parent (P);
+          end loop;
+ 
+          return False;
+       end Within_Aggregate;
+ 
+    --  Start of processing for Resolve_Aggregate
+ 
     begin
        --  Ignore junk empty aggregate resulting from parser error
  
*************** package body Sem_Aggr is
*** 919,974 ****
          and then Present (Component_Associations (N))
        then
           declare
!             Comp : Node_Id;
  
           begin
              Comp := First (Component_Associations (N));
              while Present (Comp) loop
                 if Box_Present (Comp) then
                    Insert_Actions (N, Freeze_Entity (Typ, N));
                    exit;
                 end if;
  
                 Next (Comp);
              end loop;
           end;
        end if;
  
-       --  An unqualified aggregate is restricted in SPARK to:
- 
-       --    An aggregate item inside an aggregate for a multi-dimensional array
- 
-       --    An expression being assigned to an unconstrained array, but only if
-       --    the aggregate specifies a value for OTHERS only.
- 
-       if Nkind (Parent (N)) = N_Qualified_Expression then
-          if Is_Array_Type (Typ) then
-             Check_Qualified_Aggregate (Number_Dimensions (Typ), N);
-          else
-             Check_Qualified_Aggregate (1, N);
-          end if;
-       else
-          if Is_Array_Type (Typ)
-            and then Nkind (Parent (N)) = N_Assignment_Statement
-            and then not Is_Constrained (Etype (Name (Parent (N))))
-          then
-             if not Is_Others_Aggregate (N) then
-                Check_SPARK_05_Restriction
-                  ("array aggregate should have only OTHERS", N);
-             end if;
- 
-          elsif Is_Top_Level_Aggregate (N) then
-             Check_SPARK_05_Restriction ("aggregate should be qualified", N);
- 
-          --  The legality of this unqualified aggregate is checked by calling
-          --  Check_Qualified_Aggregate from one of its enclosing aggregate,
-          --  unless one of these already causes an error to be issued.
- 
-          else
-             null;
-          end if;
-       end if;
- 
        --  Check for aggregates not allowed in configurable run-time mode.
        --  We allow all cases of aggregates that do not come from source, since
        --  these are all assumed to be small (e.g. bounds of a string literal).
--- 838,868 ----
          and then Present (Component_Associations (N))
        then
           declare
!             Comp       : Node_Id;
!             First_Comp : Boolean := True;
  
           begin
              Comp := First (Component_Associations (N));
              while Present (Comp) loop
                 if Box_Present (Comp) then
+                   if First_Comp
+                     and then No (Expressions (N))
+                     and then Nkind (First (Choices (Comp))) = N_Others_Choice
+                     and then not Within_Aggregate (N)
+                   then
+                      Others_Box := True;
+                   end if;
+ 
                    Insert_Actions (N, Freeze_Entity (Typ, N));
                    exit;
                 end if;
  
+                First_Comp := False;
                 Next (Comp);
              end loop;
           end;
        end if;
  
        --  Check for aggregates not allowed in configurable run-time mode.
        --  We allow all cases of aggregates that do not come from source, since
        --  these are all assumed to be small (e.g. bounds of a string literal).
*************** package body Sem_Aggr is
*** 976,982 ****
  
        if not Support_Aggregates_On_Target
          and then Comes_From_Source (N)
!         and then (not Known_Static_Esize (Typ) or else Esize (Typ) > 64)
        then
           Error_Msg_CRT ("aggregate", N);
        end if;
--- 870,877 ----
  
        if not Support_Aggregates_On_Target
          and then Comes_From_Source (N)
!         and then (not Known_Static_Esize (Typ)
!                    or else Esize (Typ) > System_Max_Integer_Size)
        then
           Error_Msg_CRT ("aggregate", N);
        end if;
*************** package body Sem_Aggr is
*** 1006,1011 ****
--- 901,912 ----
        elsif Is_Array_Type (Typ) and then Null_Record_Present (N) then
           Error_Msg_N ("null record forbidden in array aggregate", N);
  
+       elsif Present (Find_Aspect (Typ, Aspect_Aggregate))
+         and then Ekind (Typ) /= E_Record_Type
+         and then Ada_Version >= Ada_2020
+       then
+          Resolve_Container_Aggregate (N, Typ);
+ 
        elsif Is_Record_Type (Typ) then
           Resolve_Record_Aggregate (N, Typ);
  
*************** package body Sem_Aggr is
*** 1105,1127 ****
              if Nkind (Parent (N)) = N_Assignment_Statement
                or else Inside_Init_Proc
                or else (Is_Constrained (Typ)
!                         and then Nkind_In (Parent (N),
!                                            N_Parameter_Association,
!                                            N_Function_Call,
!                                            N_Procedure_Call_Statement,
!                                            N_Generic_Association,
!                                            N_Formal_Object_Declaration,
!                                            N_Simple_Return_Statement,
!                                            N_Object_Declaration,
!                                            N_Component_Declaration,
!                                            N_Parameter_Specification,
!                                            N_Qualified_Expression,
!                                            N_Reference,
!                                            N_Aggregate,
!                                            N_Extension_Aggregate,
!                                            N_Component_Association,
!                                            N_Case_Expression_Alternative,
!                                            N_If_Expression))
              then
                 Aggr_Resolved :=
                   Resolve_Array_Aggregate
--- 1006,1029 ----
              if Nkind (Parent (N)) = N_Assignment_Statement
                or else Inside_Init_Proc
                or else (Is_Constrained (Typ)
!                         and then Nkind (Parent (N)) in
!                                    N_Parameter_Association
!                                  | N_Function_Call
!                                  | N_Procedure_Call_Statement
!                                  | N_Generic_Association
!                                  | N_Formal_Object_Declaration
!                                  | N_Simple_Return_Statement
!                                  | N_Object_Declaration
!                                  | N_Component_Declaration
!                                  | N_Parameter_Specification
!                                  | N_Qualified_Expression
!                                  | N_Reference
!                                  | N_Aggregate
!                                  | N_Extension_Aggregate
!                                  | N_Component_Association
!                                  | N_Case_Expression_Alternative
!                                  | N_If_Expression
!                                  | N_Expression_With_Actions)
              then
                 Aggr_Resolved :=
                   Resolve_Array_Aggregate
*************** package body Sem_Aggr is
*** 1186,1191 ****
--- 1088,1100 ----
           Set_Analyzed (N);
        end if;
  
+       if Warn_On_No_Value_Assigned
+         and then Others_Box
+         and then not Is_Fully_Initialized_Type (Etype (N))
+       then
+          Error_Msg_N ("?v?aggregate not fully initialized", N);
+       end if;
+ 
        Check_Function_Writable_Actuals (N);
     end Resolve_Aggregate;
  
*************** package body Sem_Aggr is
*** 1568,1574 ****
  
                 if Is_Character_Type (Component_Typ)
                   and then No (Next_Index (Nxt_Ind))
!                  and then Nkind_In (Expr, N_String_Literal, N_Operator_Symbol)
                 then
                    --  A string literal used in a multidimensional array
                    --  aggregate in place of the final one-dimensional
--- 1477,1483 ----
  
                 if Is_Character_Type (Component_Typ)
                   and then No (Next_Index (Nxt_Ind))
!                  and then Nkind (Expr) in N_String_Literal | N_Operator_Symbol
                 then
                    --  A string literal used in a multidimensional array
                    --  aggregate in place of the final one-dimensional
*************** package body Sem_Aggr is
*** 1643,1649 ****
  
           --  If an aggregate component has a type with predicates, an explicit
           --  predicate check must be applied, as for an assignment statement,
!          --  because the aggegate might not be expanded into individual
           --  component assignments. If the expression covers several components
           --  the analysis and the predicate check take place later.
  
--- 1552,1558 ----
  
           --  If an aggregate component has a type with predicates, an explicit
           --  predicate check must be applied, as for an assignment statement,
!          --  because the aggregate might not be expanded into individual
           --  component assignments. If the expression covers several components
           --  the analysis and the predicate check take place later.
  
*************** package body Sem_Aggr is
*** 1681,1694 ****
           Index_Typ : Entity_Id)
        is
           Loc : constant Source_Ptr := Sloc (N);
  
           Choice : Node_Id;
           Dummy  : Boolean;
           Ent    : Entity_Id;
           Expr   : Node_Id;
!          Id     : Entity_Id;
  
        begin
           Choice := First (Discrete_Choices (N));
  
           while Present (Choice) loop
--- 1590,1642 ----
           Index_Typ : Entity_Id)
        is
           Loc : constant Source_Ptr := Sloc (N);
+          Id  : constant Entity_Id  := Defining_Identifier (N);
+ 
+          -----------------------
+          -- Remove_References --
+          -----------------------
+ 
+          function Remove_Ref (N : Node_Id) return Traverse_Result;
+          --  Remove references to the entity Id after analysis, so it can be
+          --  properly reanalyzed after construct is expanded into a loop.
+ 
+          function Remove_Ref (N : Node_Id) return Traverse_Result is
+          begin
+             if Nkind (N) = N_Identifier
+                and then Present (Entity (N))
+                and then Entity (N) = Id
+             then
+                Set_Entity (N, Empty);
+                Set_Etype (N, Empty);
+             end if;
+             Set_Analyzed (N, False);
+             return OK;
+          end Remove_Ref;
+ 
+          procedure Remove_References is new Traverse_Proc (Remove_Ref);
+ 
+          --  Local variables
  
           Choice : Node_Id;
           Dummy  : Boolean;
           Ent    : Entity_Id;
           Expr   : Node_Id;
! 
!       --  Start of processing for Resolve_Iterated_Component_Association
  
        begin
+          --  An element iterator specification cannot appear in
+          --  an array aggregate because it does not provide index
+          --  values for the association. This must be a semantic
+          --  check because the parser cannot tell whether this is
+          --  an array aggregate or a container aggregate.
+ 
+          if Present (Iterator_Specification (N)) then
+             Error_Msg_N ("container element Iterator cannot appear "
+               & "in an array aggregate", N);
+             return;
+          end if;
+ 
           Choice := First (Discrete_Choices (N));
  
           while Present (Choice) loop
*************** package body Sem_Aggr is
*** 1722,1756 ****
           Set_Etype  (Ent, Standard_Void_Type);
           Set_Parent (Ent, Parent (N));
           Push_Scope (Ent);
-          Id :=
-            Make_Defining_Identifier (Loc,
-              Chars => Chars (Defining_Identifier (N)));
  
           --  Insert and decorate the index variable in the current scope.
           --  The expression has to be analyzed once the index variable is
!          --  directly visible. Mark the variable as referenced to prevent
!          --  spurious warnings, given that subsequent uses of its name in the
!          --  expression will reference the internal (synonym) loop variable.
  
           Enter_Name (Id);
           Set_Etype (Id, Index_Typ);
           Set_Ekind (Id, E_Variable);
           Set_Scope (Id, Ent);
-          Set_Referenced (Id);
  
!          --  Analyze a copy of the expression, to verify legality. We use
!          --  a copy because the expression will be analyzed anew when the
!          --  enclosing aggregate is expanded, and the construct is rewritten
!          --  as a loop with a new index variable.
  
!          Expr := New_Copy_Tree (Expression (N));
!          Dummy := Resolve_Aggr_Expr (Expr, False);
  
           --  An iterated_component_association may appear in a nested
           --  aggregate for a multidimensional structure: preserve the bounds
           --  computed for the expression, as well as the anonymous array
           --  type generated for it; both are needed during array expansion.
-          --  This does not work for more than two levels of nesting. ???
  
           if Nkind (Expr) = N_Aggregate then
              Set_Aggregate_Bounds (Expression (N), Aggregate_Bounds (Expr));
--- 1670,1705 ----
           Set_Etype  (Ent, Standard_Void_Type);
           Set_Parent (Ent, Parent (N));
           Push_Scope (Ent);
  
           --  Insert and decorate the index variable in the current scope.
           --  The expression has to be analyzed once the index variable is
!          --  directly visible.
  
           Enter_Name (Id);
           Set_Etype (Id, Index_Typ);
           Set_Ekind (Id, E_Variable);
           Set_Scope (Id, Ent);
  
!          --  Analyze  expression without expansion, to verify legality.
!          --  When generating code, we then remove references to the index
!          --  variable, because the expression will be analyzed anew after
!          --  rewritting as a loop with a new index variable; when not
!          --  generating code we leave the analyzed expression as it is.
  
!          Expr := Expression (N);
! 
!          Expander_Mode_Save_And_Set (False);
!          Dummy := Resolve_Aggr_Expr (Expr, Single_Elmt => False);
!          Expander_Mode_Restore;
! 
!          if Operating_Mode /= Check_Semantics then
!             Remove_References (Expr);
!          end if;
  
           --  An iterated_component_association may appear in a nested
           --  aggregate for a multidimensional structure: preserve the bounds
           --  computed for the expression, as well as the anonymous array
           --  type generated for it; both are needed during array expansion.
  
           if Nkind (Expr) = N_Aggregate then
              Set_Aggregate_Bounds (Expression (N), Aggregate_Bounds (Expr));
*************** package body Sem_Aggr is
*** 1830,1837 ****
  
                    if Ada_Version = Ada_83
                      and then Assoc /= First (Component_Associations (N))
!                     and then Nkind_In (Parent (N), N_Assignment_Statement,
!                                                    N_Object_Declaration)
                    then
                       Error_Msg_N
                         ("(Ada 83) illegal context for OTHERS choice", N);
--- 1779,1786 ----
  
                    if Ada_Version = Ada_83
                      and then Assoc /= First (Component_Associations (N))
!                     and then Nkind (Parent (N)) in
!                                N_Assignment_Statement | N_Object_Declaration
                    then
                       Error_Msg_N
                         ("(Ada 83) illegal context for OTHERS choice", N);
*************** package body Sem_Aggr is
*** 1863,1876 ****
  
                          --  If the subtype has a static predicate, replace the
                          --  original choice with the list of individual values
!                         --  covered by the predicate. Do not perform this
!                         --  transformation if we need to preserve the source
!                         --  for ASIS use.
                          --  This should be deferred to expansion time ???
  
!                         if Present (Static_Discrete_Predicate (E))
!                           and then not ASIS_Mode
!                         then
                             Delete_Choice := True;
  
                             New_Cs := New_List;
--- 1812,1821 ----
  
                          --  If the subtype has a static predicate, replace the
                          --  original choice with the list of individual values
!                         --  covered by the predicate.
                          --  This should be deferred to expansion time ???
  
!                         if Present (Static_Discrete_Predicate (E)) then
                             Delete_Choice := True;
  
                             New_Cs := New_List;
*************** package body Sem_Aggr is
*** 1925,1934 ****
        --  Test for the validity of an others choice if present
  
        if Others_Present and then not Others_Allowed then
!          Error_Msg_N
!            ("OTHERS choice not allowed here",
!             First (Choices (First (Component_Associations (N)))));
!          return Failure;
        end if;
  
        --  Protect against cascaded errors
--- 1870,1884 ----
        --  Test for the validity of an others choice if present
  
        if Others_Present and then not Others_Allowed then
!          declare
!             Others_N : constant Node_Id :=
!               First (Choice_List (First (Component_Associations (N))));
!          begin
!             Error_Msg_N ("OTHERS choice not allowed here", Others_N);
!             Error_Msg_N ("\qualify the aggregate with a constrained subtype "
!                          & "to provide bounds for it", Others_N);
!             return Failure;
!          end;
        end if;
  
        --  Protect against cascaded errors
*************** package body Sem_Aggr is
*** 1975,1983 ****
              --  if a choice in an aggregate is a subtype indication these
              --  denote the lowest and highest values of the subtype
  
!             Table : Case_Table_Type (0 .. Case_Table_Size);
!             --  Used to sort all the different choice values. Entry zero is
!             --  reserved for sorting purposes.
  
              Single_Choice : Boolean;
              --  Set to true every time there is a single discrete choice in a
--- 1925,1932 ----
              --  if a choice in an aggregate is a subtype indication these
              --  denote the lowest and highest values of the subtype
  
!             Table : Case_Table_Type (1 .. Case_Table_Size);
!             --  Used to sort all the different choice values
  
              Single_Choice : Boolean;
              --  Set to true every time there is a single discrete choice in a
*************** package body Sem_Aggr is
*** 2059,2074 ****
                       --  bounds of the array aggregate are within range.
  
                       Set_Do_Range_Check (Choice, False);
- 
-                      --  In SPARK, the choice must be static
- 
-                      if not (Is_OK_Static_Expression (Choice)
-                               or else (Nkind (Choice) = N_Range
-                                         and then Is_OK_Static_Range (Choice)))
-                      then
-                         Check_SPARK_05_Restriction
-                           ("choice should be static", Choice);
-                      end if;
                    end if;
  
                    --  If we could not resolve the discrete choice stop here
--- 2008,2013 ----
*************** package body Sem_Aggr is
*** 2154,2161 ****
                       return Failure;
                    end if;
  
                 elsif Nkind (Assoc) = N_Iterated_Component_Association then
!                   null;   --  handled above, in a loop context.
  
                 elsif not Resolve_Aggr_Expr
                             (Expression (Assoc), Single_Elmt => Single_Choice)
--- 2093,2105 ----
                       return Failure;
                    end if;
  
+                --  ??? Checks for dynamically tagged expressions below will
+                --  be only applied to iterated_component_association after
+                --  expansion; in particular, errors might not be reported when
+                --  -gnatc switch is used.
+ 
                 elsif Nkind (Assoc) = N_Iterated_Component_Association then
!                   null;   --  handled above, in a loop context
  
                 elsif not Resolve_Aggr_Expr
                             (Expression (Assoc), Single_Elmt => Single_Choice)
*************** package body Sem_Aggr is
*** 2357,2378 ****
                                if Lo_Dup > Hi_Dup then
                                   null;
  
!                               --  Otherwise place proper message. Because
!                               --  of the missing expansion of subtypes with
!                               --  predicates in ASIS mode, do not report
!                               --  spurious overlap errors.
! 
!                               elsif ASIS_Mode
!                                 and then
!                                    ((Is_Type (Entity (Table (J).Choice))
!                                        and then Has_Predicates
!                                          (Entity (Table (J).Choice)))
!                                   or else
!                                     (Is_Type (Entity (Table (K).Choice))
!                                        and then Has_Predicates
!                                          (Entity (Table (K).Choice))))
!                               then
!                                  null;
  
                                else
                                   --  We place message on later choice, with a
--- 2301,2307 ----
                                if Lo_Dup > Hi_Dup then
                                   null;
  
!                               --  Otherwise place proper message
  
                                else
                                   --  We place message on later choice, with a
*************** package body Sem_Aggr is
*** 2682,2688 ****
              --  In order to diagnose the semantic error we create a duplicate
              --  tree to analyze it and perform the check.
  
!             else
                 declare
                    Save_Analysis : constant Boolean := Full_Analysis;
                    Expr          : constant Node_Id :=
--- 2611,2617 ----
              --  In order to diagnose the semantic error we create a duplicate
              --  tree to analyze it and perform the check.
  
!             elsif Nkind (Assoc) /= N_Iterated_Component_Association then
                 declare
                    Save_Analysis : constant Boolean := Full_Analysis;
                    Expr          : constant Node_Id :=
*************** package body Sem_Aggr is
*** 2801,2806 ****
--- 2730,3032 ----
        return Success;
     end Resolve_Array_Aggregate;
  
+    ---------------------------------
+    -- Resolve_Container_Aggregate --
+    ---------------------------------
+ 
+    procedure Resolve_Container_Aggregate (N : Node_Id; Typ : Entity_Id) is
+       procedure Resolve_Iterated_Association
+        (Comp      : Node_Id;
+         Key_Type  : Entity_Id;
+         Elmt_Type : Entity_Id);
+       --  Resolve choices and expression in an iterated component association
+       --  or an iterated element association, which has a key_expression.
+       --  This is similar but not identical to the handling of this construct
+       --  in an array aggregate.
+       --  For a named container, the type of each choice must be compatible
+       --  with the key type. For a positional container, the choice must be
+       --  a subtype indication or an iterator specification that determines
+       --  an element type.
+ 
+       Asp   : constant Node_Id := Find_Value_Of_Aspect (Typ, Aspect_Aggregate);
+ 
+       Empty_Subp          : Node_Id := Empty;
+       Add_Named_Subp      : Node_Id := Empty;
+       Add_Unnamed_Subp    : Node_Id := Empty;
+       New_Indexed_Subp    : Node_Id := Empty;
+       Assign_Indexed_Subp : Node_Id := Empty;
+ 
+       ----------------------------------
+       -- Resolve_Iterated_Association --
+       ----------------------------------
+ 
+       procedure Resolve_Iterated_Association
+        (Comp      : Node_Id;
+         Key_Type  : Entity_Id;
+         Elmt_Type : Entity_Id)
+       is
+          Choice   : Node_Id;
+          Ent      : Entity_Id;
+          Expr     : Node_Id;
+          Key_Expr : Node_Id;
+          Id       : Entity_Id;
+          Id_Name  : Name_Id;
+          Iter     : Node_Id;
+          Typ      : Entity_Id := Empty;
+ 
+       begin
+          --  If this is an Iterated_Element_Association then either a
+          --  an Iterator_Specification or a Loop_Parameter specification
+          --  is present. In both cases a Key_Expression is present.
+ 
+          if Nkind (Comp) = N_Iterated_Element_Association then
+             if Present (Loop_Parameter_Specification (Comp)) then
+                Analyze_Loop_Parameter_Specification
+                   (Loop_Parameter_Specification (Comp));
+                Id_Name := Chars (Defining_Identifier
+                             (Loop_Parameter_Specification (Comp)));
+             else
+                Iter := Copy_Separate_Tree (Iterator_Specification (Comp));
+                Analyze (Iter);
+                Typ := Etype (Defining_Identifier (Iter));
+                Id_Name := Chars (Defining_Identifier
+                             (Iterator_Specification (Comp)));
+             end if;
+ 
+             --  Key expression must have the type of the key. We analyze
+             --  a copy of the original expression, because it will be
+             --  reanalyzed and copied as needed during expansion of the
+             --  corresponding loop.
+ 
+             Key_Expr := Key_Expression (Comp);
+             Analyze_And_Resolve (New_Copy_Tree (Key_Expr), Key_Type);
+ 
+          elsif Present (Iterator_Specification (Comp)) then
+             Iter    := Copy_Separate_Tree (Iterator_Specification (Comp));
+             Id_Name := Chars (Defining_Identifier (Comp));
+             Analyze (Iter);
+             Typ := Etype (Defining_Identifier (Iter));
+ 
+          else
+             Choice := First (Discrete_Choices (Comp));
+ 
+             while Present (Choice) loop
+                Analyze (Choice);
+ 
+                --  Choice can be a subtype name, a range, or an expression
+ 
+                if Is_Entity_Name (Choice)
+                  and then Is_Type (Entity (Choice))
+                  and then Base_Type (Entity (Choice)) = Base_Type (Key_Type)
+                then
+                   null;
+ 
+                elsif Present (Key_Type) then
+                   Analyze_And_Resolve (Choice, Key_Type);
+ 
+                else
+                   Typ := Etype (Choice);  --  assume unique for now
+                end if;
+ 
+                Next (Choice);
+             end loop;
+ 
+             Id_Name := Chars (Defining_Identifier (Comp));
+          end if;
+ 
+          --  Create a scope in which to introduce an index, which is usually
+          --  visible in the expression for the component, and needed for its
+          --  analysis.
+ 
+          Id := Make_Defining_Identifier (Sloc (Comp), Id_Name);
+          Ent := New_Internal_Entity (E_Loop, Current_Scope, Sloc (Comp), 'L');
+          Set_Etype  (Ent, Standard_Void_Type);
+          Set_Parent (Ent, Parent (Comp));
+          Push_Scope (Ent);
+ 
+          --  Insert and decorate the loop variable in the current scope.
+          --  The expression has to be analyzed once the loop variable is
+          --  directly visible. Mark the variable as referenced to prevent
+          --  spurious warnings, given that subsequent uses of its name in the
+          --  expression will reference the internal (synonym) loop variable.
+ 
+          Enter_Name (Id);
+ 
+          if No (Key_Type) then
+             pragma Assert (Present (Typ));
+             Set_Etype (Id, Typ);
+          else
+             Set_Etype (Id, Key_Type);
+          end if;
+ 
+          Set_Ekind (Id, E_Variable);
+          Set_Scope (Id, Ent);
+          Set_Referenced (Id);
+ 
+          --  Analyze a copy of the expression, to verify legality. We use
+          --  a copy because the expression will be analyzed anew when the
+          --  enclosing aggregate is expanded, and the construct is rewritten
+          --  as a loop with a new index variable.
+ 
+          Expr := New_Copy_Tree (Expression (Comp));
+          Preanalyze_And_Resolve (Expr, Elmt_Type);
+          End_Scope;
+ 
+       end Resolve_Iterated_Association;
+ 
+    begin
+       pragma Assert (Nkind (Asp) = N_Aggregate);
+ 
+       Set_Etype (N, Typ);
+       Parse_Aspect_Aggregate (Asp,
+         Empty_Subp, Add_Named_Subp, Add_Unnamed_Subp,
+         New_Indexed_Subp, Assign_Indexed_Subp);
+ 
+       if Present (Add_Unnamed_Subp)
+         and then No (New_Indexed_Subp)
+       then
+          declare
+             Elmt_Type : constant Entity_Id :=
+               Etype (Next_Formal
+                 (First_Formal (Entity (Add_Unnamed_Subp))));
+             Comp : Node_Id;
+ 
+          begin
+             if Present (Expressions (N)) then
+                --  positional aggregate
+ 
+                Comp := First (Expressions (N));
+                while Present (Comp) loop
+                   Analyze_And_Resolve (Comp, Elmt_Type);
+                   Next (Comp);
+                end loop;
+             end if;
+ 
+             --  Empty aggregate, to be replaced by Empty during
+             --  expansion, or iterated component association.
+ 
+             if Present (Component_Associations (N)) then
+                declare
+                   Comp : Node_Id := First (Component_Associations (N));
+                begin
+                   while Present (Comp) loop
+                      if Nkind (Comp) /=
+                        N_Iterated_Component_Association
+                      then
+                         Error_Msg_N ("illegal component association "
+                           & "for unnamed container aggregate", Comp);
+                         return;
+                      else
+                         Resolve_Iterated_Association
+                           (Comp, Empty, Elmt_Type);
+                      end if;
+ 
+                      Next (Comp);
+                   end loop;
+                end;
+             end if;
+          end;
+ 
+       elsif  Present (Add_Named_Subp) then
+          declare
+             --  Retrieves types of container, key, and element from the
+             --  specified insertion procedure.
+ 
+             Container : constant Entity_Id :=
+               First_Formal (Entity (Add_Named_Subp));
+             Key_Type  : constant Entity_Id := Etype (Next_Formal (Container));
+             Elmt_Type : constant Entity_Id :=
+                                  Etype (Next_Formal (Next_Formal (Container)));
+             Comp   : Node_Id;
+             Choice : Node_Id;
+ 
+          begin
+             Comp := First (Component_Associations (N));
+             while Present (Comp) loop
+                if Nkind (Comp) = N_Component_Association then
+                   Choice := First (Choices (Comp));
+ 
+                   while Present (Choice) loop
+                      Analyze_And_Resolve (Choice, Key_Type);
+                      if not Is_Static_Expression (Choice) then
+                         Error_Msg_N ("choice must be static", Choice);
+                      end if;
+ 
+                      Next (Choice);
+                   end loop;
+ 
+                   Analyze_And_Resolve (Expression (Comp), Elmt_Type);
+ 
+                elsif Nkind (Comp) in
+                  N_Iterated_Component_Association |
+                  N_Iterated_Element_Association
+                then
+                   Resolve_Iterated_Association
+                     (Comp, Key_Type, Elmt_Type);
+                end if;
+ 
+                Next (Comp);
+             end loop;
+          end;
+ 
+       else
+          --  Indexed Aggregate. Positional or indexed component
+          --  can be present, but not both. Choices must be static
+          --  values or ranges with static bounds.
+ 
+          declare
+             Container : constant Entity_Id :=
+               First_Formal (Entity (Assign_Indexed_Subp));
+             Index_Type : constant Entity_Id := Etype (Next_Formal (Container));
+             Comp_Type  : constant Entity_Id :=
+                                  Etype (Next_Formal (Next_Formal (Container)));
+             Comp   : Node_Id;
+             Choice : Node_Id;
+ 
+          begin
+             if Present (Expressions (N)) then
+                Comp := First (Expressions (N));
+                while Present (Comp) loop
+                   Analyze_And_Resolve (Comp, Comp_Type);
+                   Next (Comp);
+                end loop;
+             end if;
+ 
+             if Present (Component_Associations (N)) then
+                if Present (Expressions (N)) then
+                   Error_Msg_N ("container aggregate cannot be "
+                     & "both positional and named", N);
+                   return;
+                end if;
+ 
+                Comp := First (Expressions (N));
+ 
+                while Present (Comp) loop
+                   if Nkind (Comp) = N_Component_Association then
+                      Choice := First (Choices (Comp));
+ 
+                      while Present (Choice) loop
+                         Analyze_And_Resolve (Choice, Index_Type);
+                         Next (Choice);
+                      end loop;
+ 
+                      Analyze_And_Resolve (Expression (Comp), Comp_Type);
+ 
+                   elsif Nkind (Comp) in
+                     N_Iterated_Component_Association |
+                     N_Iterated_Element_Association
+                   then
+                      Resolve_Iterated_Association
+                        (Comp, Index_Type, Comp_Type);
+                   end if;
+ 
+                   Next (Comp);
+                end loop;
+             end if;
+          end;
+       end if;
+    end Resolve_Container_Aggregate;
+ 
     -----------------------------
     -- Resolve_Delta_Aggregate --
     -----------------------------
*************** package body Sem_Aggr is
*** 2809,2818 ****
        Base : constant Node_Id := Expression (N);
  
     begin
!       if Ada_Version < Ada_2020 then
!          Error_Msg_N ("delta_aggregate is an Ada 202x feature", N);
!          Error_Msg_N ("\compile with -gnatX", N);
!       end if;
  
        if not Is_Composite_Type (Typ) then
           Error_Msg_N ("not a composite type", N);
--- 3035,3041 ----
        Base : constant Node_Id := Expression (N);
  
     begin
!       Error_Msg_Ada_2020_Feature ("delta aggregate", Sloc (N));
  
        if not Is_Composite_Type (Typ) then
           Error_Msg_N ("not a composite type", N);
*************** package body Sem_Aggr is
*** 2834,2848 ****
     -----------------------------------
  
     procedure Resolve_Delta_Array_Aggregate (N : Node_Id; Typ : Entity_Id) is
!       Deltas : constant List_Id := Component_Associations (N);
  
!       Assoc      : Node_Id;
!       Choice     : Node_Id;
!       Index_Type : Entity_Id;
  
     begin
-       Index_Type := Etype (First_Index (Typ));
- 
        Assoc := First (Deltas);
        while Present (Assoc) loop
           if Nkind (Assoc) = N_Iterated_Component_Association then
--- 3057,3070 ----
     -----------------------------------
  
     procedure Resolve_Delta_Array_Aggregate (N : Node_Id; Typ : Entity_Id) is
!       Deltas     : constant List_Id   := Component_Associations (N);
!       Index_Type : constant Entity_Id := Etype (First_Index (Typ));
  
!       Assoc  : Node_Id;
!       Choice : Node_Id;
!       Expr   : Node_Id;
  
     begin
        Assoc := First (Deltas);
        while Present (Assoc) loop
           if Nkind (Assoc) = N_Iterated_Component_Association then
*************** package body Sem_Aggr is
*** 2850,2856 ****
              while Present (Choice) loop
                 if Nkind (Choice) = N_Others_Choice then
                    Error_Msg_N
!                     ("others not allowed in delta aggregate", Choice);
  
                 else
                    Analyze_And_Resolve (Choice, Index_Type);
--- 3072,3082 ----
              while Present (Choice) loop
                 if Nkind (Choice) = N_Others_Choice then
                    Error_Msg_N
!                     ("OTHERS not allowed in delta aggregate", Choice);
! 
!                elsif Nkind (Choice) = N_Subtype_Indication then
!                   Resolve_Discrete_Subtype_Indication
!                     (Choice, Base_Type (Index_Type));
  
                 else
                    Analyze_And_Resolve (Choice, Index_Type);
*************** package body Sem_Aggr is
*** 2868,2912 ****
              begin
                 Set_Etype  (Ent, Standard_Void_Type);
                 Set_Parent (Ent, Assoc);
  
                 if No (Scope (Id)) then
-                   Enter_Name (Id);
                    Set_Etype (Id, Index_Type);
                    Set_Ekind (Id, E_Variable);
                    Set_Scope (Id, Ent);
                 end if;
  
!                Push_Scope (Ent);
!                Analyze_And_Resolve
!                  (New_Copy_Tree (Expression (Assoc)), Component_Type (Typ));
                 End_Scope;
              end;
  
           else
              Choice := First (Choice_List (Assoc));
              while Present (Choice) loop
                 if Nkind (Choice) = N_Others_Choice then
                    Error_Msg_N
!                     ("others not allowed in delta aggregate", Choice);
  
!                else
!                   Analyze (Choice);
  
!                   if Is_Entity_Name (Choice)
!                     and then Is_Type (Entity (Choice))
                    then
!                      --  Choice covers a range of values
! 
!                      if Base_Type (Entity (Choice)) /=
!                         Base_Type (Index_Type)
!                      then
!                         Error_Msg_NE
!                           ("choice does mat match index type of",
!                            Choice, Typ);
!                      end if;
!                   else
!                      Resolve (Choice, Index_Type);
                    end if;
                 end if;
  
                 Next (Choice);
--- 3094,3145 ----
              begin
                 Set_Etype  (Ent, Standard_Void_Type);
                 Set_Parent (Ent, Assoc);
+                Push_Scope (Ent);
  
                 if No (Scope (Id)) then
                    Set_Etype (Id, Index_Type);
                    Set_Ekind (Id, E_Variable);
                    Set_Scope (Id, Ent);
                 end if;
+                Enter_Name (Id);
  
!                --  Resolve a copy of the expression, after setting
!                --  its parent properly to preserve its context.
! 
!                Expr := New_Copy_Tree (Expression (Assoc));
!                Set_Parent (Expr, Assoc);
!                Analyze_And_Resolve (Expr, Component_Type (Typ));
                 End_Scope;
              end;
  
           else
              Choice := First (Choice_List (Assoc));
              while Present (Choice) loop
+                Analyze (Choice);
+ 
                 if Nkind (Choice) = N_Others_Choice then
                    Error_Msg_N
!                     ("OTHERS not allowed in delta aggregate", Choice);
  
!                elsif Is_Entity_Name (Choice)
!                  and then Is_Type (Entity (Choice))
!                then
!                   --  Choice covers a range of values
  
!                   if Base_Type (Entity (Choice)) /=
!                      Base_Type (Index_Type)
                    then
!                      Error_Msg_NE
!                        ("choice does not match index type of &",
!                         Choice, Typ);
                    end if;
+ 
+                elsif Nkind (Choice) = N_Subtype_Indication then
+                   Resolve_Discrete_Subtype_Indication
+                     (Choice, Base_Type (Index_Type));
+ 
+                else
+                   Resolve (Choice, Index_Type);
                 end if;
  
                 Next (Choice);
*************** package body Sem_Aggr is
*** 2936,2944 ****
        --  part, verify that it is within the same variant as that of previous
        --  specified variant components of the delta.
  
!       function Get_Component_Type (Nam : Node_Id) return Entity_Id;
!       --  Locate component with a given name and return its type. If none found
!       --  report error.
  
        function Nested_In (V1 : Node_Id; V2 : Node_Id) return Boolean;
        --  Determine whether variant V1 is within variant V2
--- 3169,3177 ----
        --  part, verify that it is within the same variant as that of previous
        --  specified variant components of the delta.
  
!       function Get_Component (Nam : Node_Id) return Entity_Id;
!       --  Locate component with a given name and return it. If none found then
!       --  report error and return Empty.
  
        function Nested_In (V1 : Node_Id; V2 : Node_Id) return Boolean;
        --  Determine whether variant V1 is within variant V2
*************** package body Sem_Aggr is
*** 3002,3012 ****
           end if;
        end Check_Variant;
  
!       ------------------------
!       -- Get_Component_Type --
!       ------------------------
  
!       function Get_Component_Type (Nam : Node_Id) return Entity_Id is
           Comp : Entity_Id;
  
        begin
--- 3235,3245 ----
           end if;
        end Check_Variant;
  
!       -------------------
!       -- Get_Component --
!       -------------------
  
!       function Get_Component (Nam : Node_Id) return Entity_Id is
           Comp : Entity_Id;
  
        begin
*************** package body Sem_Aggr is
*** 3017,3031 ****
                    Error_Msg_N ("delta cannot apply to discriminant", Nam);
                 end if;
  
!                return Etype (Comp);
              end if;
  
!             Comp := Next_Entity (Comp);
           end loop;
  
           Error_Msg_NE ("type& has no component with this name", Nam, Typ);
!          return Any_Type;
!       end Get_Component_Type;
  
        ---------------
        -- Nested_In --
--- 3250,3264 ----
                    Error_Msg_N ("delta cannot apply to discriminant", Nam);
                 end if;
  
!                return Comp;
              end if;
  
!             Next_Entity (Comp);
           end loop;
  
           Error_Msg_NE ("type& has no component with this name", Nam, Typ);
!          return Empty;
!       end Get_Component;
  
        ---------------
        -- Nested_In --
*************** package body Sem_Aggr is
*** 3072,3077 ****
--- 3305,3311 ----
  
        Assoc     : Node_Id;
        Choice    : Node_Id;
+       Comp      : Entity_Id;
        Comp_Type : Entity_Id := Empty; -- init to avoid warning
  
     --  Start of processing for Resolve_Delta_Record_Aggregate
*************** package body Sem_Aggr is
*** 3083,3092 ****
        while Present (Assoc) loop
           Choice := First (Choice_List (Assoc));
           while Present (Choice) loop
!             Comp_Type := Get_Component_Type (Choice);
  
!             if Comp_Type /= Any_Type then
                 Check_Variant (Choice);
              end if;
  
              Next (Choice);
--- 3317,3337 ----
        while Present (Assoc) loop
           Choice := First (Choice_List (Assoc));
           while Present (Choice) loop
!             Comp := Get_Component (Choice);
  
!             if Present (Comp) then
                 Check_Variant (Choice);
+ 
+                Comp_Type := Etype (Comp);
+ 
+                --  Decorate the component reference by setting its entity and
+                --  type, as otherwise backends like GNATprove would have to
+                --  rediscover this information by themselves.
+ 
+                Set_Entity (Choice, Comp);
+                Set_Etype  (Choice, Comp_Type);
+             else
+                Comp_Type := Any_Type;
              end if;
  
              Next (Choice);
*************** package body Sem_Aggr is
*** 3151,3159 ****
           --  The ancestor must be a call or an aggregate, but a call may
           --  have been expanded into a temporary, so check original node.
  
!          elsif Nkind_In (Anc, N_Aggregate,
!                               N_Extension_Aggregate,
!                               N_Function_Call)
           then
              return True;
  
--- 3396,3404 ----
           --  The ancestor must be a call or an aggregate, but a call may
           --  have been expanded into a temporary, so check original node.
  
!          elsif Nkind (Anc) in N_Aggregate
!                             | N_Extension_Aggregate
!                             | N_Function_Call
           then
              return True;
  
*************** package body Sem_Aggr is
*** 3259,3273 ****
        Analyze (A);
        Check_Parameterless_Call (A);
  
-       --  In SPARK, the ancestor part cannot be a type mark
- 
        if Is_Entity_Name (A) and then Is_Type (Entity (A)) then
-          Check_SPARK_05_Restriction ("ancestor part cannot be a type mark", A);
  
!          --  AI05-0115: if the ancestor part is a subtype mark, the ancestor
!          --  must not have unknown discriminants.
  
!          if Has_Unknown_Discriminants (Root_Type (Typ)) then
              Error_Msg_NE
                ("aggregate not available for type& whose ancestor "
                   & "has unknown discriminants", N, Typ);
--- 3504,3528 ----
        Analyze (A);
        Check_Parameterless_Call (A);
  
        if Is_Entity_Name (A) and then Is_Type (Entity (A)) then
  
!          --  AI05-0115: If the ancestor part is a subtype mark, the ancestor
!          --  must not have unknown discriminants. To catch cases where the
!          --  aggregate occurs at a place where the full view of the ancestor
!          --  type is visible and doesn't have unknown discriminants, but the
!          --  aggregate type was derived from a partial view that has unknown
!          --  discriminants, we check whether the aggregate type has unknown
!          --  discriminants (unknown discriminants were inherited), along
!          --  with checking that the partial view of the ancestor has unknown
!          --  discriminants. (It might be sufficient to replace the entire
!          --  condition with Has_Unknown_Discriminants (Typ), but that might
!          --  miss some cases, not clear, and causes error changes in some tests
!          --  such as class-wide cases, that aren't clearly improvements. ???)
  
!          if Has_Unknown_Discriminants (Entity (A))
!            or else (Has_Unknown_Discriminants (Typ)
!                       and then Partial_View_Has_Unknown_Discr (Entity (A)))
!          then
              Error_Msg_NE
                ("aggregate not available for type& whose ancestor "
                   & "has unknown discriminants", N, Typ);
*************** package body Sem_Aggr is
*** 3457,3465 ****
        --
        --  This variable is updated as a side effect of function Get_Value.
  
!       Box_Node       : Node_Id := Empty;
!       Is_Box_Present : Boolean := False;
!       Others_Box     : Integer := 0;
        --  Ada 2005 (AI-287): Variables used in case of default initialization
        --  to provide a functionality similar to Others_Etype. Box_Present
        --  indicates that the component takes its default initialization;
--- 3712,3721 ----
        --
        --  This variable is updated as a side effect of function Get_Value.
  
!       Box_Node               : Node_Id := Empty;
!       Is_Box_Present         : Boolean := False;
!       Is_Box_Init_By_Default : Boolean := False;
!       Others_Box             : Natural := 0;
        --  Ada 2005 (AI-287): Variables used in case of default initialization
        --  to provide a functionality similar to Others_Etype. Box_Present
        --  indicates that the component takes its default initialization;
*************** package body Sem_Aggr is
*** 3512,3518 ****
        --  of the ancestor.
  
        function Get_Value
!         (Compon                 : Node_Id;
           From                   : List_Id;
           Consider_Others_Choice : Boolean := False) return Node_Id;
        --  Given a record component stored in parameter Compon, this function
--- 3768,3774 ----
        --  of the ancestor.
  
        function Get_Value
!         (Compon                 : Entity_Id;
           From                   : List_Id;
           Consider_Others_Choice : Boolean := False) return Node_Id;
        --  Given a record component stored in parameter Compon, this function
*************** package body Sem_Aggr is
*** 3569,3574 ****
--- 3825,3832 ----
           --  If this is a box association the expression is missing, so use the
           --  Sloc of the aggregate itself for the new association.
  
+          pragma Assert (Present (Expr) xor Is_Box_Present);
+ 
           if Present (Expr) then
              Loc := Sloc (Expr);
           else
*************** package body Sem_Aggr is
*** 3582,3587 ****
--- 3840,3853 ----
               Choices     => Choice_List,
               Expression  => Expr,
               Box_Present => Is_Box_Present));
+ 
+          --  If this association has a box for a component that is initialized
+          --  by default, then set flag on the new association to indicate that
+          --  the original association was for such a box-initialized component.
+ 
+          if Is_Box_Init_By_Default then
+             Set_Was_Default_Init_Box_Association (Last (Assoc_List));
+          end if;
        end Add_Association;
  
        -----------------------------
*************** package body Sem_Aggr is
*** 3788,3794 ****
        ---------------
  
        function Get_Value
!         (Compon                 : Node_Id;
           From                   : List_Id;
           Consider_Others_Choice : Boolean := False) return Node_Id
        is
--- 4054,4060 ----
        ---------------
  
        function Get_Value
!         (Compon                 : Entity_Id;
           From                   : List_Id;
           Consider_Others_Choice : Boolean := False) return Node_Id
        is
*************** package body Sem_Aggr is
*** 3799,3804 ****
--- 4065,4071 ----
  
        begin
           Is_Box_Present := False;
+          Is_Box_Init_By_Default := False;
  
           if No (From) then
              return Empty;
*************** package body Sem_Aggr is
*** 3864,3889 ****
  
                          --  Copy the expression so that it is resolved
                          --  independently for each component, This is needed
!                         --  for accessibility checks on compoents of anonymous
                          --  access types, even in compile_only mode.
  
                          if not Inside_A_Generic then
- 
-                            --  In ASIS mode, preanalyze the expression in an
-                            --  others association before making copies for
-                            --  separate resolution and accessibility checks.
-                            --  This ensures that the type of the expression is
-                            --  available to ASIS in all cases, in particular if
-                            --  the expression is itself an aggregate.
- 
-                            if ASIS_Mode then
-                               Preanalyze_And_Resolve (Expression (Assoc), Typ);
-                            end if;
- 
                             return
                               New_Copy_Tree_And_Copy_Dimensions
                                 (Expression (Assoc));
- 
                          else
                             return Expression (Assoc);
                          end if;
--- 4131,4143 ----
  
                          --  Copy the expression so that it is resolved
                          --  independently for each component, This is needed
!                         --  for accessibility checks on components of anonymous
                          --  access types, even in compile_only mode.
  
                          if not Inside_A_Generic then
                             return
                               New_Copy_Tree_And_Copy_Dimensions
                                 (Expression (Assoc));
                          else
                             return Expression (Assoc);
                          end if;
*************** package body Sem_Aggr is
*** 3993,4000 ****
        is
           Loc : constant Source_Ptr := Sloc (N);
  
-          Needs_Box : Boolean := False;
- 
           procedure Process_Component (Comp : Entity_Id);
           --  Add one component with a box association to the inner aggregate,
           --  and recurse if component is itself composite.
--- 4247,4252 ----
*************** package body Sem_Aggr is
*** 4009,4015 ****
  
           begin
              if Is_Record_Type (T) and then Has_Discriminants (T) then
!                New_Aggr := Make_Aggregate (Loc, New_List, New_List);
                 Set_Etype (New_Aggr, T);
  
                 Add_Association
--- 4261,4267 ----
  
           begin
              if Is_Record_Type (T) and then Has_Discriminants (T) then
!                New_Aggr := Make_Aggregate (Loc, No_List, New_List);
                 Set_Etype (New_Aggr, T);
  
                 Add_Association
*************** package body Sem_Aggr is
*** 4020,4027 ****
                 Add_Discriminant_Values (New_Aggr, Assoc_List);
                 Propagate_Discriminants (New_Aggr, Assoc_List);
  
              else
!                Needs_Box := True;
              end if;
           end Process_Component;
  
--- 4272,4283 ----
                 Add_Discriminant_Values (New_Aggr, Assoc_List);
                 Propagate_Discriminants (New_Aggr, Assoc_List);
  
+                Build_Constrained_Itype
+                  (New_Aggr, T, Component_Associations (New_Aggr));
              else
!                Add_Association
!                  (Comp, Empty, Component_Associations (Aggr),
!                   Is_Box_Present => True);
              end if;
           end Process_Component;
  
*************** package body Sem_Aggr is
*** 4072,4085 ****
                 Next_Component (Comp);
              end loop;
           end if;
- 
-          if Needs_Box then
-             Append_To (Component_Associations (Aggr),
-               Make_Component_Association (Loc,
-                 Choices     => New_List (Make_Others_Choice (Loc)),
-                 Expression  => Empty,
-                 Box_Present => True));
-          end if;
        end Propagate_Discriminants;
  
        -----------------------
--- 4328,4333 ----
*************** package body Sem_Aggr is
*** 4103,4109 ****
           function Has_Expansion_Delayed (Expr : Node_Id) return Boolean is
           begin
              return
!                (Nkind_In (Expr, N_Aggregate, N_Extension_Aggregate)
                   and then Present (Etype (Expr))
                   and then Is_Record_Type (Etype (Expr))
                   and then Expansion_Delayed (Expr))
--- 4351,4357 ----
           function Has_Expansion_Delayed (Expr : Node_Id) return Boolean is
           begin
              return
!                (Nkind (Expr) in N_Aggregate | N_Extension_Aggregate
                   and then Present (Etype (Expr))
                   and then Is_Record_Type (Etype (Expr))
                   and then Expansion_Delayed (Expr))
*************** package body Sem_Aggr is
*** 4226,4232 ****
  
           --  If an aggregate component has a type with predicates, an explicit
           --  predicate check must be applied, as for an assignment statement,
!          --  because the aggegate might not be expanded into individual
           --  component assignments.
  
           if Has_Predicates (Expr_Type)
--- 4474,4480 ----
  
           --  If an aggregate component has a type with predicates, an explicit
           --  predicate check must be applied, as for an assignment statement,
!          --  because the aggregate might not be expanded into individual
           --  component assignments.
  
           if Has_Predicates (Expr_Type)
*************** package body Sem_Aggr is
*** 4350,4361 ****
        if Present (Component_Associations (N))
          and then Present (First (Component_Associations (N)))
        then
-          if Present (Expressions (N)) then
-             Check_SPARK_05_Restriction
-               ("named association cannot follow positional one",
-                First (Choices (First (Component_Associations (N)))));
-          end if;
- 
           declare
              Assoc : Node_Id;
  
--- 4598,4603 ----
*************** package body Sem_Aggr is
*** 4367,4387 ****
                      ("iterated component association can only appear in an "
                       & "array aggregate", N);
                    raise Unrecoverable_Error;
- 
-                else
-                   if List_Length (Choices (Assoc)) > 1 then
-                      Check_SPARK_05_Restriction
-                        ("component association in record aggregate must "
-                         & "contain a single choice", Assoc);
-                   end if;
- 
-                   if Nkind (First (Choices (Assoc))) = N_Others_Choice then
-                      Check_SPARK_05_Restriction
-                        ("record aggregate cannot contain OTHERS", Assoc);
-                   end if;
                 end if;
  
!                Assoc := Next (Assoc);
              end loop;
           end;
        end if;
--- 4609,4617 ----
                      ("iterated component association can only appear in an "
                       & "array aggregate", N);
                    raise Unrecoverable_Error;
                 end if;
  
!                Next (Assoc);
              end loop;
           end;
        end if;
*************** package body Sem_Aggr is
*** 4502,4507 ****
--- 4732,4741 ----
  
           --  AI05-0115: if the ancestor part is a subtype mark, the ancestor
           --  must not have unknown discriminants.
+          --  ??? We are not checking any subtype mark here and this code is not
+          --  exercised by any test, so it's likely wrong (in particular
+          --  we should not use Root_Type here but the subtype mark, if any),
+          --  and possibly not needed.
  
           if Is_Derived_Type (Typ)
             and then Has_Unknown_Discriminants (Root_Type (Typ))
*************** package body Sem_Aggr is
*** 4583,4657 ****
  
        --  STEP 4: Set the Etype of the record aggregate
  
-       --  ??? This code is pretty much a copy of Sem_Ch3.Build_Subtype. That
-       --  routine should really be exported in sem_util or some such and used
-       --  in sem_ch3 and here rather than have a copy of the code which is a
-       --  maintenance nightmare.
- 
-       --  ??? Performance WARNING. The current implementation creates a new
-       --  itype for all aggregates whose base type is discriminated. This means
-       --  that for record aggregates nested inside an array aggregate we will
-       --  create a new itype for each record aggregate if the array component
-       --  type has discriminants. For large aggregates this may be a problem.
-       --  What should be done in this case is to reuse itypes as much as
-       --  possible.
- 
        if Has_Discriminants (Typ)
          or else (Has_Unknown_Discriminants (Typ)
                    and then Present (Underlying_Record_View (Typ)))
        then
!          Build_Constrained_Itype : declare
!             Constrs     : constant List_Id    := New_List;
!             Loc         : constant Source_Ptr := Sloc (N);
!             Def_Id      : Entity_Id;
!             Indic       : Node_Id;
!             New_Assoc   : Node_Id;
!             Subtyp_Decl : Node_Id;
! 
!          begin
!             New_Assoc := First (New_Assoc_List);
!             while Present (New_Assoc) loop
!                Append_To (Constrs, Duplicate_Subexpr (Expression (New_Assoc)));
!                Next (New_Assoc);
!             end loop;
! 
!             if Has_Unknown_Discriminants (Typ)
!               and then Present (Underlying_Record_View (Typ))
!             then
!                Indic :=
!                  Make_Subtype_Indication (Loc,
!                    Subtype_Mark =>
!                      New_Occurrence_Of (Underlying_Record_View (Typ), Loc),
!                    Constraint   =>
!                      Make_Index_Or_Discriminant_Constraint (Loc,
!                        Constraints => Constrs));
!             else
!                Indic :=
!                  Make_Subtype_Indication (Loc,
!                    Subtype_Mark =>
!                      New_Occurrence_Of (Base_Type (Typ), Loc),
!                    Constraint   =>
!                      Make_Index_Or_Discriminant_Constraint (Loc,
!                        Constraints => Constrs));
!             end if;
! 
!             Def_Id := Create_Itype (Ekind (Typ), N);
! 
!             Subtyp_Decl :=
!               Make_Subtype_Declaration (Loc,
!                 Defining_Identifier => Def_Id,
!                 Subtype_Indication  => Indic);
!             Set_Parent (Subtyp_Decl, Parent (N));
! 
!             --  Itypes must be analyzed with checks off (see itypes.ads)
! 
!             Analyze (Subtyp_Decl, Suppress => All_Checks);
! 
!             Set_Etype (N, Def_Id);
!             Check_Static_Discriminated_Subtype
!               (Def_Id, Expression (First (New_Assoc_List)));
!          end Build_Constrained_Itype;
! 
        else
           Set_Etype (N, Typ);
        end if;
--- 4817,4827 ----
  
        --  STEP 4: Set the Etype of the record aggregate
  
        if Has_Discriminants (Typ)
          or else (Has_Unknown_Discriminants (Typ)
                    and then Present (Underlying_Record_View (Typ)))
        then
!          Build_Constrained_Itype (N, Typ, New_Assoc_List);
        else
           Set_Etype (N, Typ);
        end if;
*************** package body Sem_Aggr is
*** 4891,4896 ****
--- 5061,5071 ----
                 Ctyp : constant Entity_Id := Etype (Component);
  
              begin
+                --  Initially assume that the box is for a default-initialized
+                --  component and reset to False in cases where that's not true.
+ 
+                Is_Box_Init_By_Default := True;
+ 
                 --  If there is a default expression for the aggregate, copy
                 --  it into a new association. This copy must modify the scopes
                 --  of internal types that may be attached to the expression
*************** package body Sem_Aggr is
*** 4914,4919 ****
--- 5089,5099 ----
                   and then Nkind (Parent (Component)) = N_Component_Declaration
                   and then Present (Expression (Parent (Component)))
                 then
+                   --  If component declaration has an initialization expression
+                   --  then this is not a case of default initialization.
+ 
+                   Is_Box_Init_By_Default := False;
+ 
                    Expr :=
                      New_Copy_Tree_And_Copy_Dimensions
                        (Expression (Parent (Component)),
*************** package body Sem_Aggr is
*** 5027,5042 ****
                    end if;
  
                 --  Ada 2012: If component is scalar with default value, use it
  
                 elsif Is_Scalar_Type (Ctyp)
                   and then Has_Default_Aspect (Ctyp)
                 then
!                   Add_Association
!                     (Component  => Component,
!                      Expr       =>
!                        Default_Aspect_Value
!                          (First_Subtype (Underlying_Type (Ctyp))),
!                      Assoc_List => New_Assoc_List);
  
                 elsif Has_Non_Null_Base_Init_Proc (Ctyp)
                   or else not Expander_Active
--- 5207,5234 ----
                    end if;
  
                 --  Ada 2012: If component is scalar with default value, use it
+                --  by converting it to Ctyp, so that subtype constraints are
+                --  checked.
  
                 elsif Is_Scalar_Type (Ctyp)
                   and then Has_Default_Aspect (Ctyp)
                 then
!                   declare
!                      Conv : constant Node_Id :=
!                        Convert_To
!                          (Typ  => Ctyp,
!                           Expr =>
!                             New_Copy_Tree
!                               (Default_Aspect_Value
!                                  (First_Subtype (Underlying_Type (Ctyp)))));
! 
!                   begin
!                      Analyze_And_Resolve (Conv, Ctyp);
!                      Add_Association
!                        (Component  => Component,
!                         Expr       => Conv,
!                         Assoc_List => New_Assoc_List);
!                   end;
  
                 elsif Has_Non_Null_Base_Init_Proc (Ctyp)
                   or else not Expander_Active
*************** package body Sem_Aggr is
*** 5062,5068 ****
                          Expr : Node_Id;
  
                       begin
!                         Expr := Make_Aggregate (Loc, New_List, New_List);
                          Set_Etype (Expr, Ctyp);
  
                          --  If the enclosing type has discriminants, they have
--- 5254,5260 ----
                          Expr : Node_Id;
  
                       begin
!                         Expr := Make_Aggregate (Loc, No_List, New_List);
                          Set_Etype (Expr, Ctyp);
  
                          --  If the enclosing type has discriminants, they have
*************** package body Sem_Aggr is
*** 5082,5087 ****
--- 5274,5282 ----
                             Propagate_Discriminants
                               (Expr, Component_Associations (Expr));
  
+                            Build_Constrained_Itype
+                              (Expr, Ctyp, Component_Associations (Expr));
+ 
                          else
                             declare
                                Comp : Entity_Id;
*************** package body Sem_Aggr is
*** 5189,5195 ****
                      ("OTHERS must represent at least one component", Selectr);
  
                 elsif Others_Box = 1 and then Warn_On_Redundant_Constructs then
!                   Error_Msg_N ("others choice is redundant?", Box_Node);
                    Error_Msg_N
                      ("\previous choices cover all components?", Box_Node);
                 end if;
--- 5384,5390 ----
                      ("OTHERS must represent at least one component", Selectr);
  
                 elsif Others_Box = 1 and then Warn_On_Redundant_Constructs then
!                   Error_Msg_N ("OTHERS choice is redundant?", Box_Node);
                    Error_Msg_N
                      ("\previous choices cover all components?", Box_Node);
                 end if;
*************** package body Sem_Aggr is
*** 5356,5362 ****
           --  because the association may be a null array range.
  
           Error_Msg_N
!            ("(Ada 2005) null not allowed in null-excluding component??", Expr);
           Error_Msg_N
             ("\Constraint_Error will be raised at run time??", Expr);
  
--- 5551,5557 ----
           --  because the association may be a null array range.
  
           Error_Msg_N
!            ("(Ada 2005) NULL not allowed in null-excluding component??", Expr);
           Error_Msg_N
             ("\Constraint_Error will be raised at run time??", Expr);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_aggr.ads gcc-11.1.0/gcc/ada/sem_aggr.ads
*** gcc-10.3.0/gcc/ada/sem_aggr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_aggr.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Aggr is
*** 33,42 ****
--- 33,46 ----
     procedure Resolve_Delta_Aggregate     (N : Node_Id; Typ : Entity_Id);
     procedure Resolve_Aggregate           (N : Node_Id; Typ : Entity_Id);
     procedure Resolve_Extension_Aggregate (N : Node_Id; Typ : Entity_Id);
+    procedure Resolve_Container_Aggregate (N : Node_Id; Typ : Entity_Id);
  
     function Is_Others_Aggregate (Aggr : Node_Id) return Boolean;
     --  Returns True is aggregate Aggr consists of a single OTHERS choice
  
+    function Is_Single_Aggregate (Aggr : Node_Id) return Boolean;
+    --  Returns True if aggregate Aggr consists of a single choice
+ 
     --  WARNING: There is a matching C declaration of this subprogram in fe.h
  
  end Sem_Aggr;
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_attr.adb gcc-11.1.0/gcc/ada/sem_attr.adb
*** gcc-10.3.0/gcc/ada/sem_attr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_attr.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Attr is
*** 164,169 ****
--- 164,178 ----
        Attribute_Max_Alignment_For_Allocation => True,
        others                                 => False);
  
+    --  The following array is the list of attributes defined in the Ada 2020
+    --  RM which are not defined in Ada 2012. These are recognized in Ada
+    --  95/2005/2012 modes, but are considered to be implementation defined.
+ 
+    Attribute_20 : constant Attribute_Class_Array := Attribute_Class_Array'(
+       Attribute_Enum_Rep                     |
+       Attribute_Enum_Val                     => True,
+       others                                 => False);
+ 
     --  The following array contains all attributes that imply a modification
     --  of their prefixes or result in an access value. Such prefixes can be
     --  considered as lvalues.
*************** package body Sem_Attr is
*** 211,225 ****
     --  Standard_True, depending on the value of the parameter B. The
     --  result is marked as a static expression.
  
-    function Statically_Denotes_Object (N : Node_Id) return Boolean;
-    --  Predicate used to check the legality of the prefix to 'Loop_Entry and
-    --  'Old, when the prefix is not an entity name. Current RM specfies that
-    --  the prefix must be a direct or expanded name, but it has been proposed
-    --  that the prefix be allowed to be a selected component that does not
-    --  depend on a discriminant, or an indexed component with static indices.
-    --  Current code for this predicate implements this more permissive
-    --  implementation.
- 
     -----------------------
     -- Analyze_Attribute --
     -----------------------
--- 220,225 ----
*************** package body Sem_Attr is
*** 227,235 ****
     procedure Analyze_Attribute (N : Node_Id) is
        Loc     : constant Source_Ptr   := Sloc (N);
        Aname   : constant Name_Id      := Attribute_Name (N);
-       P       : constant Node_Id      := Prefix (N);
        Exprs   : constant List_Id      := Expressions (N);
        Attr_Id : constant Attribute_Id := Get_Attribute_Id (Aname);
        E1      : Node_Id;
        E2      : Node_Id;
  
--- 227,237 ----
     procedure Analyze_Attribute (N : Node_Id) is
        Loc     : constant Source_Ptr   := Sloc (N);
        Aname   : constant Name_Id      := Attribute_Name (N);
        Exprs   : constant List_Id      := Expressions (N);
        Attr_Id : constant Attribute_Id := Get_Attribute_Id (Aname);
+       P_Old   : constant Node_Id      := Prefix (N);
+ 
+       P       : Node_Id := P_Old;
        E1      : Node_Id;
        E2      : Node_Id;
  
*************** package body Sem_Attr is
*** 348,357 ****
  
        procedure Check_Floating_Point_Type_2;
        --  Verify that prefix of attribute N is a float type and that
!       --  two attribute expressions are present
! 
!       procedure Check_SPARK_05_Restriction_On_Attribute;
!       --  Issue an error in formal mode because attribute N is allowed
  
        procedure Check_Integer_Type;
        --  Verify that prefix of attribute N is an integer type
--- 350,356 ----
  
        procedure Check_Floating_Point_Type_2;
        --  Verify that prefix of attribute N is a float type and that
!       --  two attribute expressions are present.
  
        procedure Check_Integer_Type;
        --  Verify that prefix of attribute N is an integer type
*************** package body Sem_Attr is
*** 391,396 ****
--- 390,398 ----
        --  corresponding possible defined attribute function (e.g. for the
        --  Read attribute, Nam will be TSS_Stream_Read).
  
+       procedure Check_Put_Image_Attribute;
+       --  Validity checking for Put_Image attribute
+ 
        procedure Check_System_Prefix;
        --  Verify that prefix of attribute N is package System
  
*************** package body Sem_Attr is
*** 420,428 ****
        --  no arguments is used when the caller has already generated the
        --  required error messages.
  
!       procedure Error_Attr_P (Msg : String);
        pragma No_Return (Error_Attr_P);
!       --  Like Error_Attr, but error is posted at the start of the prefix
  
        procedure Legal_Formal_Attribute;
        --  Common processing for attributes Definite and Has_Discriminants.
--- 422,432 ----
        --  no arguments is used when the caller has already generated the
        --  required error messages.
  
!       procedure Error_Attr_P (Msg : String; Msg_Cont : String := "");
        pragma No_Return (Error_Attr_P);
!       --  Like Error_Attr, but error is posted at the start of the prefix. The
!       --  second message Msg_Cont is useful to issue a continuation message
!       --  before raising Bad_Attribute.
  
        procedure Legal_Formal_Attribute;
        --  Common processing for attributes Definite and Has_Discriminants.
*************** package body Sem_Attr is
*** 525,531 ****
  
                 --  Object or label reference
  
!                elsif Is_Object (Ent) or else Ekind (Ent) = E_Label then
                    Set_Address_Taken (Ent);
  
                    --  Deal with No_Implicit_Aliasing restriction
--- 529,535 ----
  
                 --  Object or label reference
  
!                elsif Is_Object_Reference (P) or else Ekind (Ent) = E_Label then
                    Set_Address_Taken (Ent);
  
                    --  Deal with No_Implicit_Aliasing restriction
*************** package body Sem_Attr is
*** 650,656 ****
              --  tracked value. If the scope is a loop or block, indicate that
              --  value tracking is disabled for the enclosing subprogram.
  
!             function Get_Kind (E : Entity_Id) return Entity_Kind;
              --  Distinguish between access to regular/protected subprograms
  
              ------------------------
--- 654,661 ----
              --  tracked value. If the scope is a loop or block, indicate that
              --  value tracking is disabled for the enclosing subprogram.
  
!             function Get_Convention (E : Entity_Id) return Convention_Id;
!             function Get_Kind       (E : Entity_Id) return Entity_Kind;
              --  Distinguish between access to regular/protected subprograms
  
              ------------------------
*************** package body Sem_Attr is
*** 666,678 ****
                 end if;
              end Check_Local_Access;
  
              --------------
              -- Get_Kind --
              --------------
  
              function Get_Kind (E : Entity_Id) return Entity_Kind is
              begin
!                if Convention (E) = Convention_Protected then
                    return E_Access_Protected_Subprogram_Type;
                 else
                    return E_Access_Subprogram_Type;
--- 671,703 ----
                 end if;
              end Check_Local_Access;
  
+             --------------------
+             -- Get_Convention --
+             --------------------
+ 
+             function Get_Convention (E : Entity_Id) return Convention_Id is
+             begin
+                --  Restrict handling by_protected_procedure access subprograms
+                --  to source entities; required to avoid building access to
+                --  subprogram types with convention protected when building
+                --  dispatch tables.
+ 
+                if Comes_From_Source (P)
+                  and then Is_By_Protected_Procedure (E)
+                then
+                   return Convention_Protected;
+                else
+                   return Convention (E);
+                end if;
+             end Get_Convention;
+ 
              --------------
              -- Get_Kind --
              --------------
  
              function Get_Kind (E : Entity_Id) return Entity_Kind is
              begin
!                if Get_Convention (E) = Convention_Protected then
                    return E_Access_Protected_Subprogram_Type;
                 else
                    return E_Access_Subprogram_Type;
*************** package body Sem_Attr is
*** 717,723 ****
                    Acc_Type := Create_Itype (Get_Kind (Entity (P)), N);
                    Set_Is_Public (Acc_Type, False);
                    Set_Etype (Acc_Type, Acc_Type);
!                   Set_Convention (Acc_Type, Convention (Entity (P)));
                    Set_Directly_Designated_Type (Acc_Type, Entity (P));
                    Set_Etype (N, Acc_Type);
                    Freeze_Before (N, Acc_Type);
--- 742,748 ----
                    Acc_Type := Create_Itype (Get_Kind (Entity (P)), N);
                    Set_Is_Public (Acc_Type, False);
                    Set_Etype (Acc_Type, Acc_Type);
!                   Set_Convention (Acc_Type, Get_Convention (Entity (P)));
                    Set_Directly_Designated_Type (Acc_Type, Entity (P));
                    Set_Etype (N, Acc_Type);
                    Freeze_Before (N, Acc_Type);
*************** package body Sem_Attr is
*** 732,738 ****
                       Acc_Type := Create_Itype (Get_Kind (It.Nam), N);
                       Set_Is_Public (Acc_Type, False);
                       Set_Etype (Acc_Type, Acc_Type);
!                      Set_Convention (Acc_Type, Convention (It.Nam));
                       Set_Directly_Designated_Type (Acc_Type, It.Nam);
                       Add_One_Interp (N, Acc_Type, Acc_Type);
                       Freeze_Before (N, Acc_Type);
--- 757,763 ----
                       Acc_Type := Create_Itype (Get_Kind (It.Nam), N);
                       Set_Is_Public (Acc_Type, False);
                       Set_Etype (Acc_Type, Acc_Type);
!                      Set_Convention (Acc_Type, Get_Convention (It.Nam));
                       Set_Directly_Designated_Type (Acc_Type, It.Nam);
                       Add_One_Interp (N, Acc_Type, Acc_Type);
                       Freeze_Before (N, Acc_Type);
*************** package body Sem_Attr is
*** 759,771 ****
              Par : Node_Id;
  
           begin
              Par := Parent (N);
              while Present (Par)
                and then
                 (Nkind (Par) = N_Component_Association
                   or else Nkind (Par) in N_Subexpr)
              loop
!                if Nkind_In (Par, N_Aggregate, N_Extension_Aggregate) then
                    if Etype (Par) = Typ then
                       Set_Has_Self_Reference (Par);
  
--- 784,803 ----
              Par : Node_Id;
  
           begin
+             --  If N does not come from source, the reference is assumed to be
+             --  valid.
+ 
+             if not Comes_From_Source (N) then
+                return True;
+             end if;
+ 
              Par := Parent (N);
              while Present (Par)
                and then
                 (Nkind (Par) = N_Component_Association
                   or else Nkind (Par) in N_Subexpr)
              loop
!                if Nkind (Par) in N_Aggregate | N_Extension_Aggregate then
                    if Etype (Par) = Typ then
                       Set_Has_Self_Reference (Par);
  
*************** package body Sem_Attr is
*** 801,807 ****
        --  Start of processing for Analyze_Access_Attribute
  
        begin
!          Check_SPARK_05_Restriction_On_Attribute;
           Check_E0;
  
           if Nkind (P) = N_Character_Literal then
--- 833,846 ----
        --  Start of processing for Analyze_Access_Attribute
  
        begin
!          --  Access and Unchecked_Access are illegal in declare_expressions,
!          --  according to the RM. We also make the GNAT-specific
!          --  Unrestricted_Access attribute illegal.
! 
!          if In_Declare_Expr > 0 then
!             Error_Attr ("% attribute cannot occur in a declare_expression", N);
!          end if;
! 
           Check_E0;
  
           if Nkind (P) = N_Character_Literal then
*************** package body Sem_Attr is
*** 960,968 ****
  
                    if not In_Spec_Expression
                      and then not Has_Completion (Scop)
!                     and then not
!                       Nkind_In (Parent (N), N_Discriminant_Association,
!                                             N_Index_Or_Discriminant_Constraint)
                    then
                       Error_Msg_N
                         ("current instance attribute must appear alone", N);
--- 999,1008 ----
  
                    if not In_Spec_Expression
                      and then not Has_Completion (Scop)
!                     and then
!                       Nkind (Parent (N)) not in
!                         N_Discriminant_Association |
!                         N_Index_Or_Discriminant_Constraint
                    then
                       Error_Msg_N
                         ("current instance attribute must appear alone", N);
*************** package body Sem_Attr is
*** 1001,1009 ****
                 --  expression comes from source, e.g. when a single component
                 --  association in an aggregate has a box association.
  
!                elsif Ada_Version >= Ada_2005
!                  and then OK_Self_Reference
!                then
                    null;
  
                 --  OK if reference to current instance of a protected object
--- 1041,1047 ----
                 --  expression comes from source, e.g. when a single component
                 --  association in an aggregate has a box association.
  
!                elsif Ada_Version >= Ada_2005 and then OK_Self_Reference then
                    null;
  
                 --  OK if reference to current instance of a protected object
*************** package body Sem_Attr is
*** 1085,1092 ****
                    Kill_Current_Values (Ent);
                    exit;
  
!                elsif Nkind_In (PP, N_Selected_Component,
!                                    N_Indexed_Component)
                 then
                    PP := Prefix (PP);
  
--- 1123,1129 ----
                    Kill_Current_Values (Ent);
                    exit;
  
!                elsif Nkind (PP) in N_Selected_Component | N_Indexed_Component
                 then
                    PP := Prefix (PP);
  
*************** package body Sem_Attr is
*** 1140,1149 ****
           begin
              --  The "Name" argument of pragma Check denotes a postcondition
  
!             if Nam_In (Nam, Name_Post,
!                             Name_Post_Class,
!                             Name_Postcondition,
!                             Name_Refined_Post)
              then
                 null;
  
--- 1177,1186 ----
           begin
              --  The "Name" argument of pragma Check denotes a postcondition
  
!             if Nam in Name_Post
!                     | Name_Post_Class
!                     | Name_Postcondition
!                     | Name_Refined_Post
              then
                 null;
  
*************** package body Sem_Attr is
*** 1289,1295 ****
  
           Prag := N;
           while Present (Prag) loop
!             if Nkind_In (Prag, N_Aspect_Specification, N_Pragma) then
                 exit;
  
              --  Prevent the search from going too far
--- 1326,1332 ----
  
           Prag := N;
           while Present (Prag) loop
!             if Nkind (Prag) in N_Aspect_Specification | N_Pragma then
                 exit;
  
              --  Prevent the search from going too far
*************** package body Sem_Attr is
*** 1304,1310 ****
           --  The attribute is allowed to appear only in postcondition-like
           --  aspects or pragmas.
  
!          if Nkind_In (Prag, N_Aspect_Specification, N_Pragma) then
              if Nkind (Prag) = N_Aspect_Specification then
                 Prag_Nam := Chars (Identifier (Prag));
              else
--- 1341,1347 ----
           --  The attribute is allowed to appear only in postcondition-like
           --  aspects or pragmas.
  
!          if Nkind (Prag) in N_Aspect_Specification | N_Pragma then
              if Nkind (Prag) = N_Aspect_Specification then
                 Prag_Nam := Chars (Identifier (Prag));
              else
*************** package body Sem_Attr is
*** 1320,1334 ****
              --  Attribute 'Result is allowed to appear in aspect or pragma
              --  [Refined_]Depends (SPARK RM 6.1.5(11)).
  
!             elsif Nam_In (Prag_Nam, Name_Depends, Name_Refined_Depends)
                and then Aname = Name_Result
              then
                 null;
  
!             elsif Nam_In (Prag_Nam, Name_Post,
!                                     Name_Post_Class,
!                                     Name_Postcondition,
!                                     Name_Refined_Post)
              then
                 null;
  
--- 1357,1379 ----
              --  Attribute 'Result is allowed to appear in aspect or pragma
              --  [Refined_]Depends (SPARK RM 6.1.5(11)).
  
!             elsif Prag_Nam in Name_Depends | Name_Refined_Depends
                and then Aname = Name_Result
              then
                 null;
  
!             --  Attribute 'Result is allowed to appear in aspect
!             --  Relaxed_Initialization (SPARK RM 6.10).
! 
!             elsif Prag_Nam = Name_Relaxed_Initialization
!               and then Aname = Name_Result
!             then
!                null;
! 
!             elsif Prag_Nam in Name_Post
!                             | Name_Post_Class
!                             | Name_Postcondition
!                             | Name_Refined_Post
              then
                 null;
  
*************** package body Sem_Attr is
*** 1372,1385 ****
           then
              null;
  
!          elsif not Nkind_In (Subp_Decl, N_Abstract_Subprogram_Declaration,
!                                         N_Entry_Declaration,
!                                         N_Expression_Function,
!                                         N_Generic_Subprogram_Declaration,
!                                         N_Subprogram_Body,
!                                         N_Subprogram_Body_Stub,
!                                         N_Subprogram_Declaration,
!                                         N_Subprogram_Renaming_Declaration)
           then
              return;
           end if;
--- 1417,1430 ----
           then
              null;
  
!          elsif Nkind (Subp_Decl) not in N_Abstract_Subprogram_Declaration
!                                       | N_Entry_Declaration
!                                       | N_Expression_Function
!                                       | N_Generic_Subprogram_Declaration
!                                       | N_Subprogram_Body
!                                       | N_Subprogram_Body_Stub
!                                       | N_Subprogram_Declaration
!                                       | N_Subprogram_Renaming_Declaration
           then
              return;
           end if;
*************** package body Sem_Attr is
*** 1415,1472 ****
        -----------------------------
  
        procedure Analyze_Image_Attribute (Str_Typ : Entity_Id) is
!       begin
!          Check_SPARK_05_Restriction_On_Attribute;
  
!          --  AI12-00124: The ARG has adopted the GNAT semantics of 'Img for
           --  scalar types, so that the prefix can be an object, a named value,
!          --  or a type, and there is no need for an argument in this case.
  
!          if Attr_Id = Attribute_Img
!            or else (Ada_Version > Ada_2005 and then Is_Object_Image (P))
!          then
              Check_E0;
              Set_Etype (N, Str_Typ);
  
!             if Attr_Id = Attribute_Img and then not Is_Object_Image (P) then
!                Error_Attr_P
!                  ("prefix of % attribute must be a scalar object name");
              end if;
           else
              Check_E1;
              Set_Etype (N, Str_Typ);
  
!             --  Check that the prefix type is scalar - much in the same way as
!             --  Check_Scalar_Type but with custom error messages to denote the
!             --  variants of 'Image attributes.
  
!             if Is_Entity_Name (P)
!               and then Is_Type (Entity (P))
!               and then Ekind (Entity (P)) = E_Incomplete_Type
                and then Present (Full_View (Entity (P)))
              then
                 P_Type := Full_View (Entity (P));
                 Set_Entity (P, P_Type);
              end if;
  
!             if not Is_Entity_Name (P)
!               or else not Is_Type (Entity (P))
!               or else not Is_Scalar_Type (P_Type)
!             then
!                if Ada_Version > Ada_2005 then
!                   Error_Attr_P
!                     ("prefix of % attribute must be a scalar type or a scalar "
!                      & "object name");
!                else
!                   Error_Attr_P ("prefix of % attribute must be a scalar type");
!                end if;
! 
!             elsif Is_Protected_Self_Reference (P) then
!                Error_Attr_P
!                  ("prefix of % attribute denotes current instance "
!                   & "(RM 9.4(21/2))");
!             end if;
! 
              Resolve (E1, P_Base_Type);
              Validate_Non_Static_Attribute_Function_Call;
           end if;
--- 1460,1517 ----
        -----------------------------
  
        procedure Analyze_Image_Attribute (Str_Typ : Entity_Id) is
!          procedure Check_Image_Type (Image_Type : Entity_Id);
!          --  Check that Image_Type is legal as the type of a prefix of 'Image.
!          --  Legality depends on the Ada language version.
  
!          procedure Check_Image_Type (Image_Type : Entity_Id) is
!          begin
!             if Ada_Version < Ada_2020
!               and then not Is_Scalar_Type (Image_Type)
!             then
!                Error_Msg_Ada_2020_Feature ("nonscalar ''Image", Sloc (P));
!                Error_Attr;
!             end if;
!          end Check_Image_Type;
! 
!       --  Start of processing for Analyze_Image_Attribute
! 
!       begin
!          --  AI12-0124: The ARG has adopted the GNAT semantics of 'Img for
           --  scalar types, so that the prefix can be an object, a named value,
!          --  or a type. If the prefix is an object, there is no argument.
  
!          if Is_Object_Image (P) then
              Check_E0;
              Set_Etype (N, Str_Typ);
+             Check_Image_Type (Etype (P));
  
!             if Attr_Id /= Attribute_Img and then Ada_Version < Ada_2012 then
!                Error_Msg_Ada_2012_Feature ("|Object''Image", Sloc (P));
              end if;
           else
              Check_E1;
              Set_Etype (N, Str_Typ);
  
!             --  ???It's not clear why 'Img should behave any differently than
!             --  'Image.
  
!             if Attr_Id = Attribute_Img then
!                Error_Attr_P
!                  ("prefix of % attribute must be a scalar object name");
!             end if;
! 
!             pragma Assert (Is_Entity_Name (P) and then Is_Type (Entity (P)));
! 
!             if Ekind (Entity (P)) = E_Incomplete_Type
                and then Present (Full_View (Entity (P)))
              then
                 P_Type := Full_View (Entity (P));
+                P_Base_Type := Base_Type (P_Type);
                 Set_Entity (P, P_Type);
              end if;
  
!             Check_Image_Type (P_Type);
              Resolve (E1, P_Base_Type);
              Validate_Non_Static_Attribute_Function_Call;
           end if;
*************** package body Sem_Attr is
*** 1618,1624 ****
        ----------------------
  
        procedure Check_Array_Type is
!          D : Int;
           --  Dimension number for array attributes
  
        begin
--- 1663,1669 ----
        ----------------------
  
        procedure Check_Array_Type is
!          D : Pos;
           --  Dimension number for array attributes
  
        begin
*************** package body Sem_Attr is
*** 1703,1711 ****
                   ("expression for dimension must be static!", E1);
                 Error_Attr;
  
!             elsif UI_To_Int (Expr_Value (E1)) > D
!               or else UI_To_Int (Expr_Value (E1)) < 1
!             then
                 Error_Attr ("invalid dimension number for array type", E1);
              end if;
           end if;
--- 1748,1754 ----
                   ("expression for dimension must be static!", E1);
                 Error_Attr;
  
!             elsif Expr_Value (E1) > D or else Expr_Value (E1) < 1 then
                 Error_Attr ("invalid dimension number for array type", E1);
              end if;
           end if;
*************** package body Sem_Attr is
*** 1795,1801 ****
  
           --  Case of an expression
  
!          Resolve (P);
  
           if Is_Access_Type (P_Type) then
  
--- 1838,1844 ----
  
           --  Case of an expression
  
!          Resolve (P_Old);
  
           if Is_Access_Type (P_Type) then
  
*************** package body Sem_Attr is
*** 1811,1822 ****
                 Freeze_Before (N, Designated_Type (P_Type));
              end if;
  
!             Rewrite (P,
!               Make_Explicit_Dereference (Sloc (P),
!                 Prefix => Relocate_Node (P)));
  
!             Analyze_And_Resolve (P);
!             P_Type := Etype (P);
  
              if P_Type = Any_Type then
                 raise Bad_Attribute;
--- 1854,1865 ----
                 Freeze_Before (N, Designated_Type (P_Type));
              end if;
  
!             Rewrite (P_Old,
!               Make_Explicit_Dereference (Sloc (P_Old),
!                 Prefix => Relocate_Node (P_Old)));
  
!             Analyze_And_Resolve (P_Old);
!             P_Type := Etype (P_Old);
  
              if P_Type = Any_Type then
                 raise Bad_Attribute;
*************** package body Sem_Attr is
*** 1864,1872 ****
              --  the prefix of another attribute. Error is posted on parent.
  
              if Nkind (Parent (N)) = N_Attribute_Reference
!               and then Nam_In (Attribute_Name (Parent (N)), Name_Address,
!                                                             Name_Code_Address,
!                                                             Name_Access)
              then
                 Error_Msg_Name_1 := Attribute_Name (Parent (N));
                 Error_Msg_N ("illegal prefix for % attribute", Parent (N));
--- 1907,1915 ----
              --  the prefix of another attribute. Error is posted on parent.
  
              if Nkind (Parent (N)) = N_Attribute_Reference
!               and then Attribute_Name (Parent (N)) in Name_Address
!                                                     | Name_Code_Address
!                                                     | Name_Access
              then
                 Error_Msg_Name_1 := Attribute_Name (Parent (N));
                 Error_Msg_N ("illegal prefix for % attribute", Parent (N));
*************** package body Sem_Attr is
*** 2300,2315 ****
           end if;
        end Check_Scalar_Type;
  
-       ------------------------------------------
-       -- Check_SPARK_05_Restriction_On_Attribute --
-       ------------------------------------------
- 
-       procedure Check_SPARK_05_Restriction_On_Attribute is
-       begin
-          Error_Msg_Name_1 := Aname;
-          Check_SPARK_05_Restriction ("attribute % is not allowed", P);
-       end Check_SPARK_05_Restriction_On_Attribute;
- 
        ---------------------------
        -- Check_Standard_Prefix --
        ---------------------------
--- 2343,2348 ----
*************** package body Sem_Attr is
*** 2323,2328 ****
--- 2356,2403 ----
           end if;
        end Check_Standard_Prefix;
  
+       -------------------------------
+       -- Check_Put_Image_Attribute --
+       -------------------------------
+ 
+       procedure Check_Put_Image_Attribute is
+       begin
+          --  Put_Image is a procedure, and can only appear at the position of a
+          --  procedure call. If it's a list member and it's parent is a
+          --  procedure call or aggregate, then this is appearing as an actual
+          --  parameter or component association, which is wrong.
+ 
+          if Is_List_Member (N)
+            and then Nkind (Parent (N)) not in
+                       N_Procedure_Call_Statement | N_Aggregate
+          then
+             null;
+          else
+             Error_Attr
+               ("invalid context for attribute%, which is a procedure", N);
+          end if;
+ 
+          Check_Type;
+          Analyze_And_Resolve (E1);
+ 
+          --  Check that the first argument is
+          --  Ada.Strings.Text_Output.Sink'Class.
+ 
+          --  Note: the double call to Root_Type here is needed because the
+          --  root type of a class-wide type is the corresponding type (e.g.
+          --  X for X'Class, and we really want to go to the root.)
+ 
+          if Root_Type (Root_Type (Etype (E1))) /= RTE (RE_Sink) then
+             Error_Attr
+               ("expected Ada.Strings.Text_Output.Sink''Class", E1);
+          end if;
+ 
+          --  Check that the second argument is of the right type
+ 
+          Analyze (E2);
+          Resolve (E2, P_Type);
+       end Check_Put_Image_Attribute;
+ 
        ----------------------------
        -- Check_Stream_Attribute --
        ----------------------------
*************** package body Sem_Attr is
*** 2350,2357 ****
              null;
  
           elsif Is_List_Member (N)
!            and then not Nkind_In (Parent (N), N_Procedure_Call_Statement,
!                                               N_Aggregate)
           then
              null;
  
--- 2425,2432 ----
              null;
  
           elsif Is_List_Member (N)
!            and then Nkind (Parent (N)) not in
!                       N_Procedure_Call_Statement | N_Aggregate
           then
              null;
  
*************** package body Sem_Attr is
*** 2589,2595 ****
           if Nkind (Nod) = N_Identifier then
              return;
  
!          elsif Nkind_In (Nod, N_Selected_Component, N_Expanded_Name) then
              Check_Unit_Name (Prefix (Nod));
  
              if Nkind (Selector_Name (Nod)) = N_Identifier then
--- 2664,2670 ----
           if Nkind (Nod) = N_Identifier then
              return;
  
!          elsif Nkind (Nod) in N_Selected_Component | N_Expanded_Name then
              Check_Unit_Name (Prefix (Nod));
  
              if Nkind (Selector_Name (Nod)) = N_Identifier then
*************** package body Sem_Attr is
*** 2622,2631 ****
        -- Error_Attr_P --
        ------------------
  
!       procedure Error_Attr_P (Msg : String) is
        begin
           Error_Msg_Name_1 := Aname;
           Error_Msg_F (Msg, P);
           Error_Attr;
        end Error_Attr_P;
  
--- 2697,2709 ----
        -- Error_Attr_P --
        ------------------
  
!       procedure Error_Attr_P (Msg : String; Msg_Cont : String := "") is
        begin
           Error_Msg_Name_1 := Aname;
           Error_Msg_F (Msg, P);
+          if Msg_Cont /= "" then
+             Error_Msg_F (Msg_Cont, P);
+          end if;
           Error_Attr;
        end Error_Attr_P;
  
*************** package body Sem_Attr is
*** 2680,2685 ****
--- 2758,2773 ----
  
        procedure Min_Max is
        begin
+          --  Attribute can appear as function name in a reduction.
+          --  Semantic checks are performed later.
+ 
+          if Nkind (Parent (N)) = N_Attribute_Reference
+            and then Attribute_Name (Parent (N)) = Name_Reduce
+          then
+             Set_Etype (N, P_Base_Type);
+             return;
+          end if;
+ 
           Check_E2;
           Check_Scalar_Type;
           Resolve (E1, P_Base_Type);
*************** package body Sem_Attr is
*** 2750,2758 ****
  
           case Uneval_Old_Setting is
              when 'E' =>
                 Error_Attr_P
                   ("prefix of attribute % that is potentially "
!                   & "unevaluated must denote an entity");
  
              when 'W' =>
                 Error_Msg_Name_1 := Aname;
--- 2838,2861 ----
  
           case Uneval_Old_Setting is
              when 'E' =>
+                --  ??? In the case where Ada_Version is < Ada_2020 and
+                --  an illegal 'Old prefix would be legal in Ada_2020,
+                --  we'd like to call Error_Msg_Ada_2020_Feature.
+                --  Identifying that case involves some work.
+ 
                 Error_Attr_P
                   ("prefix of attribute % that is potentially "
!                   & "unevaluated must statically name an entity"
! 
!                   --  further text needed for accuracy if Ada_2020
!                   & (if Ada_Version >= Ada_2020
!                        and then Attr_Id = Attribute_Old
!                      then " or be eligible for conditional evaluation"
!                           & " (RM 6.1.1 (27))"
!                      else ""),
!                   Msg_Cont =>
!                     "\using pragma Unevaluated_Use_Of_Old (Allow) will make "
!                     & "this legal");
  
              when 'W' =>
                 Error_Msg_Name_1 := Aname;
*************** package body Sem_Attr is
*** 2821,2832 ****
        end if;
  
        --  Deal with Ada 2005 attributes that are implementation attributes
!       --  because they appear in a version of Ada before Ada 2005, and
!       --  similarly for Ada 2012 attributes appearing in an earlier version.
  
        if (Attribute_05 (Attr_Id) and then Ada_Version < Ada_2005)
              or else
           (Attribute_12 (Attr_Id) and then Ada_Version < Ada_2012)
        then
           Check_Restriction (No_Implementation_Attributes, N);
        end if;
--- 2924,2937 ----
        end if;
  
        --  Deal with Ada 2005 attributes that are implementation attributes
!       --  because they appear in a version of Ada before Ada 2005, ditto for
!       --  Ada 2012 and Ada 2020 attributes appearing in an earlier version.
  
        if (Attribute_05 (Attr_Id) and then Ada_Version < Ada_2005)
              or else
           (Attribute_12 (Attr_Id) and then Ada_Version < Ada_2012)
+             or else
+          (Attribute_20 (Attr_Id) and then Ada_Version < Ada_2020)
        then
           Check_Restriction (No_Implementation_Attributes, N);
        end if;
*************** package body Sem_Attr is
*** 2957,2963 ****
           --  parameterless call. Entry attributes are handled specially below.
  
           if Is_Entity_Name (P)
!            and then not Nam_In (Aname, Name_Count, Name_Caller)
           then
              Check_Parameterless_Call (P);
           end if;
--- 3062,3068 ----
           --  parameterless call. Entry attributes are handled specially below.
  
           if Is_Entity_Name (P)
!            and then Aname not in Name_Count | Name_Caller
           then
              Check_Parameterless_Call (P);
           end if;
*************** package body Sem_Attr is
*** 2968,2974 ****
              --  primitive entry wrappers, the attributes Count, and Caller
              --  require a context check
  
!             if Nam_In (Aname, Name_Count, Name_Caller) then
                 declare
                    Count : Natural := 0;
                    I     : Interp_Index;
--- 3073,3079 ----
              --  primitive entry wrappers, the attributes Count, and Caller
              --  require a context check
  
!             if Aname in Name_Count | Name_Caller then
                 declare
                    Count : Natural := 0;
                    I     : Interp_Index;
*************** package body Sem_Attr is
*** 2999,3017 ****
           end if;
        end if;
  
!       --  In SPARK, attributes of private types are only allowed if the full
!       --  type declaration is visible.
! 
!       --  Note: the check for Present (Entity (P)) defends against some error
!       --  conditions where the Entity field is not set.
  
!       if Is_Entity_Name (P) and then Present (Entity (P))
!         and then Is_Type (Entity (P))
!         and then Is_Private_Type (P_Type)
!         and then not In_Open_Scopes (Scope (P_Type))
!         and then not In_Spec_Expression
!       then
!          Check_SPARK_05_Restriction ("invisible attribute of type", N);
        end if;
  
        --  Remaining processing depends on attribute
--- 3104,3116 ----
           end if;
        end if;
  
!       --  If the prefix was rewritten as a raise node, then rewrite N as a
!       --  raise node, to avoid creating inconsistent trees. We still need to
!       --  perform legality checks on the original tree.
  
!       if Nkind (P) in N_Raise_xxx_Error then
!          Rewrite (N, Relocate_Node (P));
!          P := Original_Node (P_Old);
        end if;
  
        --  Remaining processing depends on attribute
*************** package body Sem_Attr is
*** 3074,3080 ****
        -- Adjacent --
        --------------
  
!       when Attribute_Adjacent =>
           Check_Floating_Point_Type_2;
           Set_Etype (N, P_Base_Type);
           Resolve (E1, P_Base_Type);
--- 3173,3182 ----
        -- Adjacent --
        --------------
  
!       when Attribute_Adjacent
!          | Attribute_Copy_Sign
!          | Attribute_Remainder
!       =>
           Check_Floating_Point_Type_2;
           Set_Etype (N, P_Base_Type);
           Resolve (E1, P_Base_Type);
*************** package body Sem_Attr is
*** 3182,3193 ****
                ("?r?redundant attribute, & is its own base type", N, Typ);
           end if;
  
-          if Nkind (Parent (N)) /= N_Attribute_Reference then
-             Error_Msg_Name_1 := Aname;
-             Check_SPARK_05_Restriction
-               ("attribute% is only allowed as prefix of another attribute", P);
-          end if;
- 
           Set_Etype (N, Base_Type (Entity (P)));
           Set_Entity (N, Base_Type (Entity (P)));
           Rewrite (N, New_Occurrence_Of (Entity (N), Loc));
--- 3284,3289 ----
*************** package body Sem_Attr is
*** 3202,3208 ****
           Check_E0;
  
           if not Is_Object_Reference (P) then
!             Error_Attr_P ("prefix for % attribute must be object");
  
           --  What about the access object cases ???
  
--- 3298,3304 ----
           Check_E0;
  
           if not Is_Object_Reference (P) then
!             Error_Attr_P ("prefix of % attribute must be object");
  
           --  What about the access object cases ???
  
*************** package body Sem_Attr is
*** 3271,3277 ****
        -- Callable --
        --------------
  
!       when Attribute_Callable =>
           Check_E0;
           Set_Etype (N, Standard_Boolean);
           Check_Task_Prefix;
--- 3367,3375 ----
        -- Callable --
        --------------
  
!       when Attribute_Callable
!          | Attribute_Terminated
!       =>
           Check_E0;
           Set_Etype (N, Standard_Boolean);
           Check_Task_Prefix;
*************** package body Sem_Attr is
*** 3287,3293 ****
        begin
           Check_E0;
  
!          if Nkind_In (P, N_Identifier, N_Expanded_Name) then
              Ent := Entity (P);
  
              if not Is_Entry (Ent) then
--- 3385,3391 ----
        begin
           Check_E0;
  
!          if Nkind (P) in N_Identifier | N_Expanded_Name then
              Ent := Entity (P);
  
              if not Is_Entry (Ent) then
*************** package body Sem_Attr is
*** 3316,3322 ****
        -- Ceiling --
        -------------
  
!       when Attribute_Ceiling =>
           Check_Floating_Point_Type_1;
           Set_Etype (N, P_Base_Type);
           Resolve (E1, P_Base_Type);
--- 3414,3429 ----
        -- Ceiling --
        -------------
  
!       when Attribute_Ceiling
!          | Attribute_Floor
!          | Attribute_Fraction
!          | Attribute_Machine
!          | Attribute_Machine_Rounding
!          | Attribute_Model
!          | Attribute_Rounding
!          | Attribute_Truncation
!          | Attribute_Unbiased_Rounding
!       =>
           Check_Floating_Point_Type_1;
           Set_Etype (N, P_Base_Type);
           Resolve (E1, P_Base_Type);
*************** package body Sem_Attr is
*** 3357,3363 ****
           Check_E0;
  
           if Nkind (P) = N_Attribute_Reference
!            and then Nam_In (Attribute_Name (P), Name_Elab_Body, Name_Elab_Spec)
           then
              null;
  
--- 3464,3470 ----
           Check_E0;
  
           if Nkind (P) = N_Attribute_Reference
!            and then Attribute_Name (P) in Name_Elab_Body | Name_Elab_Spec
           then
              null;
  
*************** package body Sem_Attr is
*** 3408,3414 ****
        -- Compose --
        -------------
  
!       when Attribute_Compose =>
           Check_Floating_Point_Type_2;
           Set_Etype (N, P_Base_Type);
           Resolve (E1, P_Base_Type);
--- 3515,3524 ----
        -- Compose --
        -------------
  
!       when Attribute_Compose
!          | Attribute_Leading_Part
!          | Attribute_Scaling
!       =>
           Check_Floating_Point_Type_2;
           Set_Etype (N, P_Base_Type);
           Resolve (E1, P_Base_Type);
*************** package body Sem_Attr is
*** 3453,3463 ****
                 return;
              end if;
  
!          --  Normal (non-obsolescent case) of application to object of
           --  a discriminated type.
  
           else
!             Check_Object_Reference (P);
  
              --  If N does not come from source, then we allow the
              --  the attribute prefix to be of a private type whose
--- 3563,3587 ----
                 return;
              end if;
  
!          --  Normal (non-obsolescent case) of application to object or value of
           --  a discriminated type.
  
           else
!             --  AI12-0068: In a type or subtype aspect, a prefix denoting the
!             --  current instance of the (sub)type is defined to be a value,
!             --  not an object, so the Constrained attribute is always True
!             --  (see RM 8.6(18/5) and RM 3.7.2(3/5)). We issue a warning about
!             --  this unintuitive result, to help avoid confusion.
! 
!             if Is_Current_Instance_Reference_In_Type_Aspect (P) then
!                Error_Msg_Name_1 := Aname;
!                Error_Msg_N
!                  ("current instance attribute % in subtype aspect always " &
!                   "true??", N);
! 
!             else
!                Check_Object_Reference (P);
!             end if;
  
              --  If N does not come from source, then we allow the
              --  the attribute prefix to be of a private type whose
*************** package body Sem_Attr is
*** 3493,3499 ****
                 return;
  
              --  Also allow an object of a generic type if extensions allowed
!             --  and allow this for any type at all. (this may be obsolete ???)
  
              elsif (Is_Generic_Type (P_Type)
                      or else Is_Generic_Actual_Type (P_Type))
--- 3617,3623 ----
                 return;
  
              --  Also allow an object of a generic type if extensions allowed
!             --  and allow this for any type at all.
  
              elsif (Is_Generic_Type (P_Type)
                      or else Is_Generic_Actual_Type (P_Type))
*************** package body Sem_Attr is
*** 3512,3522 ****
        -- Copy_Sign --
        ---------------
  
!       when Attribute_Copy_Sign =>
!          Check_Floating_Point_Type_2;
!          Set_Etype (N, P_Base_Type);
!          Resolve (E1, P_Base_Type);
!          Resolve (E2, P_Base_Type);
  
        -----------
        -- Count --
--- 3636,3642 ----
        -- Copy_Sign --
        ---------------
  
!       --  Shares processing with Adjacent attribute
  
        -----------
        -- Count --
*************** package body Sem_Attr is
*** 3530,3536 ****
        begin
           Check_E0;
  
!          if Nkind_In (P, N_Identifier, N_Expanded_Name) then
              Ent := Entity (P);
  
              if Ekind (Ent) /= E_Entry then
--- 3650,3656 ----
        begin
           Check_E0;
  
!          if Nkind (P) in N_Identifier | N_Expanded_Name then
              Ent := Entity (P);
  
              if Ekind (Ent) /= E_Entry then
*************** package body Sem_Attr is
*** 3589,3607 ****
                       null;
                    else
                       Error_Attr
!                        ("Attribute % must apply to entry of current task", N);
                    end if;
                 end if;
  
                 exit;
  
              elsif Ekind (Scope (Ent)) in Task_Kind
!               and then not Ekind_In (S, E_Block,
!                                         E_Entry,
!                                         E_Entry_Family,
!                                         E_Loop)
              then
!                Error_Attr ("Attribute % cannot appear in inner unit", N);
  
              elsif Ekind (Scope (Ent)) = E_Protected_Type
                and then not Has_Completion (Scope (Ent))
--- 3709,3727 ----
                       null;
                    else
                       Error_Attr
!                        ("attribute % must apply to entry of current task", N);
                    end if;
                 end if;
  
                 exit;
  
              elsif Ekind (Scope (Ent)) in Task_Kind
!               and then Ekind (S) not in E_Block
!                                       | E_Entry
!                                       | E_Entry_Family
!                                       | E_Loop
              then
!                Error_Attr ("attribute % cannot appear in inner unit", N);
  
              elsif Ekind (Scope (Ent)) = E_Protected_Type
                and then not Has_Completion (Scope (Ent))
*************** package body Sem_Attr is
*** 3715,3721 ****
        -- Denorm --
        ------------
  
!       when Attribute_Denorm =>
           Check_Floating_Point_Type_0;
           Set_Etype (N, Standard_Boolean);
  
--- 3835,3843 ----
        -- Denorm --
        ------------
  
!       when Attribute_Denorm
!          | Attribute_Signed_Zeros
!       =>
           Check_Floating_Point_Type_0;
           Set_Etype (N, Standard_Boolean);
  
*************** package body Sem_Attr is
*** 3783,3789 ****
        -- Elab_Spec --
        ---------------
  
!       --  Shares processing with Elab_Body
  
        ----------------
        -- Elaborated --
--- 3905,3911 ----
        -- Elab_Spec --
        ---------------
  
!       --  Shares processing with Elab_Body attribute
  
        ----------------
        -- Elaborated --
*************** package body Sem_Attr is
*** 3798,3804 ****
        -- Emax --
        ----------
  
!       when Attribute_Emax =>
           Check_Floating_Point_Type_0;
           Set_Etype (N, Universal_Integer);
  
--- 3920,3933 ----
        -- Emax --
        ----------
  
!       when Attribute_Emax
!          | Attribute_Machine_Emax
!          | Attribute_Machine_Emin
!          | Attribute_Machine_Mantissa
!          | Attribute_Model_Emin
!          | Attribute_Model_Mantissa
!          | Attribute_Safe_Emax
!       =>
           Check_Floating_Point_Type_0;
           Set_Etype (N, Universal_Integer);
  
*************** package body Sem_Attr is
*** 3889,3895 ****
        -- Epsilon --
        -------------
  
!       when Attribute_Epsilon =>
           Check_Floating_Point_Type_0;
           Set_Etype (N, Universal_Real);
  
--- 4018,4029 ----
        -- Epsilon --
        -------------
  
!       when Attribute_Epsilon
!          | Attribute_Model_Epsilon
!          | Attribute_Model_Small
!          | Attribute_Safe_First
!          | Attribute_Safe_Last
!       =>
           Check_Floating_Point_Type_0;
           Set_Etype (N, Universal_Real);
  
*************** package body Sem_Attr is
*** 3964,3970 ****
        -- First --
        -----------
  
!       when Attribute_First =>
           Check_Array_Or_Scalar_Type;
           Bad_Attribute_For_Predicate;
  
--- 4098,4106 ----
        -- First --
        -----------
  
!       when Attribute_First
!          | Attribute_Last
!       =>
           Check_Array_Or_Scalar_Type;
           Bad_Attribute_For_Predicate;
  
*************** package body Sem_Attr is
*** 3972,3978 ****
        -- First_Bit --
        ---------------
  
!       when Attribute_First_Bit =>
           Check_Component;
           Set_Etype (N, Universal_Integer);
  
--- 4108,4117 ----
        -- First_Bit --
        ---------------
  
!       when Attribute_First_Bit
!          | Attribute_Last_Bit
!          | Attribute_Position
!       =>
           Check_Component;
           Set_Etype (N, Universal_Integer);
  
*************** package body Sem_Attr is
*** 3980,3986 ****
        -- First_Valid --
        -----------------
  
!       when Attribute_First_Valid =>
           Check_First_Last_Valid;
           Set_Etype (N, P_Type);
  
--- 4119,4127 ----
        -- First_Valid --
        -----------------
  
!       when Attribute_First_Valid
!          | Attribute_Last_Valid
!       =>
           Check_First_Last_Valid;
           Set_Etype (N, P_Type);
  
*************** package body Sem_Attr is
*** 3989,3996 ****
        -----------------
  
        when Attribute_Fixed_Value =>
-          Check_E1;
           Check_Fixed_Point_Type;
           Resolve (E1, Any_Integer);
           Set_Etype (N, P_Base_Type);
  
--- 4130,4137 ----
        -----------------
  
        when Attribute_Fixed_Value =>
           Check_Fixed_Point_Type;
+          Check_E1;
           Resolve (E1, Any_Integer);
           Set_Etype (N, P_Base_Type);
  
*************** package body Sem_Attr is
*** 3998,4007 ****
        -- Floor --
        -----------
  
!       when Attribute_Floor =>
!          Check_Floating_Point_Type_1;
!          Set_Etype (N, P_Base_Type);
!          Resolve (E1, P_Base_Type);
  
        ----------
        -- Fore --
--- 4139,4145 ----
        -- Floor --
        -----------
  
!       --  Shares processing with Ceiling attribute
  
        ----------
        -- Fore --
*************** package body Sem_Attr is
*** 4015,4024 ****
        -- Fraction --
        --------------
  
!       when Attribute_Fraction =>
!          Check_Floating_Point_Type_1;
!          Set_Etype (N, P_Base_Type);
!          Resolve (E1, P_Base_Type);
  
        --------------
        -- From_Any --
--- 4153,4159 ----
        -- Fraction --
        --------------
  
!       --  Shares processing with Ceiling attribute
  
        --------------
        -- From_Any --
*************** package body Sem_Attr is
*** 4033,4039 ****
        -- Has_Access_Values --
        -----------------------
  
!       when Attribute_Has_Access_Values =>
           Check_Type;
           Check_E0;
           Set_Etype (N, Standard_Boolean);
--- 4168,4176 ----
        -- Has_Access_Values --
        -----------------------
  
!       when Attribute_Has_Access_Values
!          | Attribute_Has_Tagged_Values
!       =>
           Check_Type;
           Check_E0;
           Set_Etype (N, Standard_Boolean);
*************** package body Sem_Attr is
*** 4057,4066 ****
        -- Has_Tagged_Values --
        -----------------------
  
!       when Attribute_Has_Tagged_Values =>
!          Check_Type;
!          Check_E0;
!          Set_Etype (N, Standard_Boolean);
  
        -----------------------
        -- Has_Discriminants --
--- 4194,4200 ----
        -- Has_Tagged_Values --
        -----------------------
  
!       --  Shares processing with Has_Access_Values attribute
  
        -----------------------
        -- Has_Discriminants --
*************** package body Sem_Attr is
*** 4127,4132 ****
--- 4261,4288 ----
        when Attribute_Img =>
           Analyze_Image_Attribute (Standard_String);
  
+       -----------------
+       -- Initialized --
+       -----------------
+ 
+       when Attribute_Initialized =>
+          Check_E0;
+ 
+          if Comes_From_Source (N) then
+ 
+             --  This attribute be prefixed with references to objects or
+             --  values (such as a current instance value given within a type
+             --  or subtype aspect).
+ 
+             if not Is_Object_Reference (P)
+               and then not Is_Current_Instance_Reference_In_Type_Aspect (P)
+             then
+                Error_Attr_P ("prefix of % attribute must be object");
+             end if;
+          end if;
+ 
+          Set_Etype (N, Standard_Boolean);
+ 
        -----------
        -- Input --
        -----------
*************** package body Sem_Attr is
*** 4169,4175 ****
        -- Large --
        -----------
  
!       when Attribute_Large =>
           Check_E0;
           Check_Real_Type;
           Set_Etype (N, Universal_Real);
--- 4325,4335 ----
        -- Large --
        -----------
  
!       when Attribute_Large
!          | Attribute_Small
!          | Attribute_Safe_Large
!          | Attribute_Safe_Small
!       =>
           Check_E0;
           Check_Real_Type;
           Set_Etype (N, Universal_Real);
*************** package body Sem_Attr is
*** 4178,4212 ****
        -- Last --
        ----------
  
!       when Attribute_Last =>
!          Check_Array_Or_Scalar_Type;
!          Bad_Attribute_For_Predicate;
  
        --------------
        -- Last_Bit --
        --------------
  
!       when Attribute_Last_Bit =>
!          Check_Component;
!          Set_Etype (N, Universal_Integer);
  
        ----------------
        -- Last_Valid --
        ----------------
  
!       when Attribute_Last_Valid =>
!          Check_First_Last_Valid;
!          Set_Etype (N, P_Type);
  
        ------------------
        -- Leading_Part --
        ------------------
  
!       when Attribute_Leading_Part =>
!          Check_Floating_Point_Type_2;
!          Set_Etype (N, P_Base_Type);
!          Resolve (E1, P_Base_Type);
!          Resolve (E2, Any_Integer);
  
        ------------
        -- Length --
--- 4338,4362 ----
        -- Last --
        ----------
  
!       --  Shares processing with First attribute
  
        --------------
        -- Last_Bit --
        --------------
  
!       --  Shares processing with First_Bit attribute
  
        ----------------
        -- Last_Valid --
        ----------------
  
!       --  Shares processing with First_Valid attribute
  
        ------------------
        -- Leading_Part --
        ------------------
  
!       --  Shares processing with Compose attribute
  
        ------------
        -- Length --
*************** package body Sem_Attr is
*** 4268,4274 ****
              --  within the related loop.
  
              function Declared_Within (Nod : Node_Id) return Boolean;
!             --  Determine whether Nod appears in the subtree of Loop_Decl
  
              ---------------------
              -- Check_Reference --
--- 4418,4425 ----
              --  within the related loop.
  
              function Declared_Within (Nod : Node_Id) return Boolean;
!             --  Determine whether Nod appears in the subtree of Loop_Decl but
!             --  not within the subtree of the prefix P itself.
  
              ---------------------
              -- Check_Reference --
*************** package body Sem_Attr is
*** 4304,4309 ****
--- 4455,4463 ----
                    if Stmt = Loop_Decl then
                       return True;
  
+                   elsif Stmt = P then
+                      return False;
+ 
                    --  Prevent the search from going too far
  
                    elsif Is_Body_Or_Package_Declaration (Stmt) then
*************** package body Sem_Attr is
*** 4448,4459 ****
              --  that the pragma appears in an appropriate loop location.
  
              if Nkind (Original_Node (Stmt)) = N_Pragma
!               and then Nam_In (Pragma_Name_Unmapped (Original_Node (Stmt)),
!                                Name_Loop_Invariant,
!                                Name_Loop_Variant,
!                                Name_Assert,
!                                Name_Assert_And_Cut,
!                                Name_Assume)
              then
                 Encl_Prag := Original_Node (Stmt);
  
--- 4602,4614 ----
              --  that the pragma appears in an appropriate loop location.
  
              if Nkind (Original_Node (Stmt)) = N_Pragma
!               and then
!                 Pragma_Name_Unmapped (Original_Node (Stmt))
!                   in Name_Loop_Invariant
!                    | Name_Loop_Variant
!                    | Name_Assert
!                    | Name_Assert_And_Cut
!                    | Name_Assume
              then
                 Encl_Prag := Original_Node (Stmt);
  
*************** package body Sem_Attr is
*** 4516,4522 ****
  
              if Ekind (Scop) = E_Loop and then Scop = Loop_Id then
                 exit;
!             elsif Ekind_In (Scop, E_Block, E_Loop, E_Return_Statement) then
                 null;
              else
                 Error_Attr
--- 4671,4677 ----
  
              if Ekind (Scop) = E_Loop and then Scop = Loop_Id then
                 exit;
!             elsif Ekind (Scop) in E_Block | E_Loop | E_Return_Statement then
                 null;
              else
                 Error_Attr
*************** package body Sem_Attr is
*** 4531,4543 ****
  
           Check_References_In_Prefix (Loop_Id);
  
!          --  The prefix must denote a static entity if the pragma does not
           --  apply to the innermost enclosing loop statement, or if it appears
!          --  within a potentially unevaluated epxression.
  
           if Is_Entity_Name (P)
             or else Nkind (Parent (P)) = N_Object_Renaming_Declaration
!            or else Statically_Denotes_Object (P)
           then
              null;
  
--- 4686,4698 ----
  
           Check_References_In_Prefix (Loop_Id);
  
!          --  The prefix must statically name an object if the pragma does not
           --  apply to the innermost enclosing loop statement, or if it appears
!          --  within a potentially unevaluated expression.
  
           if Is_Entity_Name (P)
             or else Nkind (Parent (P)) = N_Object_Renaming_Declaration
!            or else Statically_Names_Object (P)
           then
              null;
  
*************** package body Sem_Attr is
*** 4571,4610 ****
        -- Machine --
        -------------
  
!       when Attribute_Machine =>
!          Check_Floating_Point_Type_1;
!          Set_Etype (N, P_Base_Type);
!          Resolve (E1, P_Base_Type);
  
        ------------------
        -- Machine_Emax --
        ------------------
  
!       when Attribute_Machine_Emax =>
!          Check_Floating_Point_Type_0;
!          Set_Etype (N, Universal_Integer);
  
        ------------------
        -- Machine_Emin --
        ------------------
  
!       when Attribute_Machine_Emin =>
!          Check_Floating_Point_Type_0;
!          Set_Etype (N, Universal_Integer);
  
        ----------------------
        -- Machine_Mantissa --
        ----------------------
  
!       when Attribute_Machine_Mantissa =>
!          Check_Floating_Point_Type_0;
!          Set_Etype (N, Universal_Integer);
  
        -----------------------
        -- Machine_Overflows --
        -----------------------
  
!       when Attribute_Machine_Overflows =>
           Check_Real_Type;
           Check_E0;
           Set_Etype (N, Standard_Boolean);
--- 4726,4758 ----
        -- Machine --
        -------------
  
!       --  Shares processing with Ceiling attribute
  
        ------------------
        -- Machine_Emax --
        ------------------
  
!       --  Shares processing with Emax attribute
  
        ------------------
        -- Machine_Emin --
        ------------------
  
!       --  Shares processing with Emax attribute
  
        ----------------------
        -- Machine_Mantissa --
        ----------------------
  
!       --  Shares processing with Emax attribute
  
        -----------------------
        -- Machine_Overflows --
        -----------------------
  
!       when Attribute_Machine_Overflows
!          | Attribute_Machine_Rounds
!       =>
           Check_Real_Type;
           Check_E0;
           Set_Etype (N, Standard_Boolean);
*************** package body Sem_Attr is
*** 4613,4619 ****
        -- Machine_Radix --
        -------------------
  
!       when Attribute_Machine_Radix =>
           Check_Real_Type;
           Check_E0;
           Set_Etype (N, Universal_Integer);
--- 4761,4769 ----
        -- Machine_Radix --
        -------------------
  
!       when Attribute_Machine_Radix
!          | Attribute_Mantissa
!       =>
           Check_Real_Type;
           Check_E0;
           Set_Etype (N, Universal_Integer);
*************** package body Sem_Attr is
*** 4622,4646 ****
        -- Machine_Rounding --
        ----------------------
  
!       when Attribute_Machine_Rounding =>
!          Check_Floating_Point_Type_1;
!          Set_Etype (N, P_Base_Type);
!          Resolve (E1, P_Base_Type);
  
        --------------------
        -- Machine_Rounds --
        --------------------
  
!       when Attribute_Machine_Rounds =>
!          Check_Real_Type;
!          Check_E0;
!          Set_Etype (N, Standard_Boolean);
  
        ------------------
        -- Machine_Size --
        ------------------
  
!       when Attribute_Machine_Size =>
           Check_E0;
           Check_Type;
           Check_Not_Incomplete_Type;
--- 4772,4793 ----
        -- Machine_Rounding --
        ----------------------
  
!       --  Shares processing with Ceiling attribute
  
        --------------------
        -- Machine_Rounds --
        --------------------
  
!       --  Shares processing with Machine_Overflows attribute
  
        ------------------
        -- Machine_Size --
        ------------------
  
!       when Attribute_Machine_Size
!          | Attribute_Object_Size
!          | Attribute_Value_Size
!       =>
           Check_E0;
           Check_Type;
           Check_Not_Incomplete_Type;
*************** package body Sem_Attr is
*** 4650,4659 ****
        -- Mantissa --
        --------------
  
!       when Attribute_Mantissa =>
!          Check_E0;
!          Check_Real_Type;
!          Set_Etype (N, Universal_Integer);
  
        ---------
        -- Max --
--- 4797,4803 ----
        -- Mantissa --
        --------------
  
!       --  Shares processing with Machine_Radix attribute
  
        ---------
        -- Max --
*************** package body Sem_Attr is
*** 4669,4674 ****
--- 4813,4825 ----
        when Attribute_Max_Size_In_Storage_Elements =>
           Max_Alignment_For_Allocation_Max_Size_In_Storage_Elements;
  
+       ----------------------
+       -- Max_Integer_Size --
+       ----------------------
+ 
+       when Attribute_Max_Integer_Size =>
+          Standard_Attribute (System_Max_Integer_Size);
+ 
        ----------------------------------
        -- Max_Size_In_Storage_Elements --
        ----------------------------------
*************** package body Sem_Attr is
*** 4706,4712 ****
                 Error_Attr;
  
              elsif UI_To_Int (Intval (E1)) > Number_Formals (Entity (P))
!               or else UI_To_Int (Intval (E1)) < 0
              then
                 Error_Attr ("invalid parameter number for % attribute", E1);
              end if;
--- 4857,4863 ----
                 Error_Attr;
  
              elsif UI_To_Int (Intval (E1)) > Number_Formals (Entity (P))
!               or else Intval (E1) < 0
              then
                 Error_Attr ("invalid parameter number for % attribute", E1);
              end if;
*************** package body Sem_Attr is
*** 4740,4781 ****
        -- Model --
        -----------
  
!       when Attribute_Model =>
!          Check_Floating_Point_Type_1;
!          Set_Etype (N, P_Base_Type);
!          Resolve (E1, P_Base_Type);
  
        ----------------
        -- Model_Emin --
        ----------------
  
!       when Attribute_Model_Emin =>
!          Check_Floating_Point_Type_0;
!          Set_Etype (N, Universal_Integer);
  
        -------------------
        -- Model_Epsilon --
        -------------------
  
!       when Attribute_Model_Epsilon =>
!          Check_Floating_Point_Type_0;
!          Set_Etype (N, Universal_Real);
  
        --------------------
        -- Model_Mantissa --
        --------------------
  
!       when Attribute_Model_Mantissa =>
!          Check_Floating_Point_Type_0;
!          Set_Etype (N, Universal_Integer);
  
        -----------------
        -- Model_Small --
        -----------------
  
!       when Attribute_Model_Small =>
!          Check_Floating_Point_Type_0;
!          Set_Etype (N, Universal_Real);
  
        -------------
        -- Modulus --
--- 4891,4921 ----
        -- Model --
        -----------
  
!       --  Shares processing with Ceiling attribute
  
        ----------------
        -- Model_Emin --
        ----------------
  
!       --  Shares processing with Emax attribute
  
        -------------------
        -- Model_Epsilon --
        -------------------
  
!       --  Shares processing with Epsilon attribute
  
        --------------------
        -- Model_Mantissa --
        --------------------
  
!       --  Shares processing with Emax attribute
  
        -----------------
        -- Model_Small --
        -----------------
  
!       --  Shares processing with Epsilon attribute
  
        -------------
        -- Modulus --
*************** package body Sem_Attr is
*** 4874,4884 ****
        -- Object_Size --
        -----------------
  
!       when Attribute_Object_Size =>
!          Check_E0;
!          Check_Type;
!          Check_Not_Incomplete_Type;
!          Set_Etype (N, Universal_Integer);
  
        ---------
        -- Old --
--- 5014,5020 ----
        -- Object_Size --
        -----------------
  
!       --  Shares processing with Machine_Size attribute
  
        ---------
        -- Old --
*************** package body Sem_Attr is
*** 4910,4917 ****
                 --  another attribute 'Old.
  
                 if Nkind (Nod) = N_Attribute_Reference
!                  and then Nam_In (Attribute_Name (Nod), Name_Old,
!                                                         Name_Result)
                 then
                    Error_Msg_Name_1 := Attribute_Name (Nod);
                    Error_Msg_Name_2 := Name_Old;
--- 5046,5052 ----
                 --  another attribute 'Old.
  
                 if Nkind (Nod) = N_Attribute_Reference
!                  and then Attribute_Name (Nod) in Name_Old | Name_Result
                 then
                    Error_Msg_Name_1 := Attribute_Name (Nod);
                    Error_Msg_Name_2 := Name_Old;
*************** package body Sem_Attr is
*** 5034,5043 ****
  
           else
              --  Ensure that the prefix of attribute 'Old is an entity when it
!             --  is potentially unevaluated (6.1.1 (27/3)).
  
              if Is_Potentially_Unevaluated (N)
!               and then not Statically_Denotes_Object (P)
              then
                 Uneval_Old_Msg;
  
--- 5169,5183 ----
  
           else
              --  Ensure that the prefix of attribute 'Old is an entity when it
!             --  is potentially unevaluated (6.1.1 (27/3)). This rule is
!             --  relaxed in Ada2020 - this relaxation is reflected in the
!             --  call (below) to Eligible_For_Conditional_Evaluation.
  
              if Is_Potentially_Unevaluated (N)
!               and then not Statically_Names_Object (P)
!               and then not
!                 Old_Attr_Util.Conditional_Evaluation
!                  .Eligible_For_Conditional_Evaluation (N)
              then
                 Uneval_Old_Msg;
  
*************** package body Sem_Attr is
*** 5056,5062 ****
              then
                 Pref_Id := Entity (Name (P));
  
!                if Ekind_In (Spec_Id, E_Function, E_Generic_Function)
                   and then Pref_Id = Spec_Id
                 then
                    Error_Msg_Warn := SPARK_Mode /= On;
--- 5196,5202 ----
              then
                 Pref_Id := Entity (Name (P));
  
!                if Ekind (Spec_Id) in E_Function | E_Generic_Function
                   and then Pref_Id = Spec_Id
                 then
                    Error_Msg_Warn := SPARK_Mode /= On;
*************** package body Sem_Attr is
*** 5156,5161 ****
--- 5296,5302 ----
        when Attribute_Passed_By_Reference =>
           Check_E0;
           Check_Type;
+          Check_Not_Incomplete_Type;
           Set_Etype (N, Standard_Boolean);
  
        ------------------
*************** package body Sem_Attr is
*** 5173,5186 ****
        when Attribute_Pos =>
           Check_Discrete_Type;
           Check_E1;
- 
-          if Is_Boolean_Type (P_Type) then
-             Error_Msg_Name_1 := Aname;
-             Error_Msg_Name_2 := Chars (P_Type);
-             Check_SPARK_05_Restriction
-               ("attribute% is not allowed for type%", P);
-          end if;
- 
           Resolve (E1, P_Base_Type);
           Set_Etype (N, Universal_Integer);
  
--- 5314,5319 ----
*************** package body Sem_Attr is
*** 5188,5218 ****
        -- Position --
        --------------
  
!       when Attribute_Position =>
!          Check_Component;
!          Set_Etype (N, Universal_Integer);
  
        ----------
        -- Pred --
        ----------
  
!       when Attribute_Pred =>
           Check_Scalar_Type;
           Check_E1;
- 
-          if Is_Real_Type (P_Type) or else Is_Boolean_Type (P_Type) then
-             Error_Msg_Name_1 := Aname;
-             Error_Msg_Name_2 := Chars (P_Type);
-             Check_SPARK_05_Restriction
-               ("attribute% is not allowed for type%", P);
-          end if;
- 
           Resolve (E1, P_Base_Type);
           Set_Etype (N, P_Base_Type);
  
!          --  Since Pred works on the base type, we normally do no check for the
!          --  floating-point case, since the base type is unconstrained. But we
!          --  make an exception in Check_Float_Overflow mode.
  
           if Is_Floating_Point_Type (P_Type) then
              if not Range_Checks_Suppressed (P_Base_Type) then
--- 5321,5343 ----
        -- Position --
        --------------
  
!       --  Shares processing with First_Bit attribute
  
        ----------
        -- Pred --
        ----------
  
!       when Attribute_Pred
!          | Attribute_Succ
!       =>
           Check_Scalar_Type;
           Check_E1;
           Resolve (E1, P_Base_Type);
           Set_Etype (N, P_Base_Type);
  
!          --  Since Pred/Succ work on the base type, we normally do no check for
!          --  the floating-point case, since the base type is unconstrained. But
!          --  we make an exception in Check_Float_Overflow mode.
  
           if Is_Floating_Point_Type (P_Type) then
              if not Range_Checks_Suppressed (P_Base_Type) then
*************** package body Sem_Attr is
*** 5281,5286 ****
--- 5406,5421 ----
  
           Validate_Non_Static_Attribute_Function_Call;
  
+       ---------------
+       -- Put_Image --
+       ---------------
+ 
+       when Attribute_Put_Image =>
+          Check_E2;
+          Check_Put_Image_Attribute;
+          Set_Etype (N, Standard_Void_Type);
+          Resolve (N, Standard_Void_Type);
+ 
        -----------
        -- Range --
        -----------
*************** package body Sem_Attr is
*** 5347,5353 ****
  
              elsif Nkind (Subp_Spec) = N_Function_Specification
                and then Present (Generic_Parent (Subp_Spec))
!               and then Ekind_In (Pref_Id, E_Generic_Function, E_Function)
              then
                 if Generic_Parent (Subp_Spec) = Pref_Id then
                    return True;
--- 5482,5488 ----
  
              elsif Nkind (Subp_Spec) = N_Function_Specification
                and then Present (Generic_Parent (Subp_Spec))
!               and then Ekind (Pref_Id) in E_Generic_Function | E_Function
              then
                 if Generic_Parent (Subp_Spec) = Pref_Id then
                    return True;
*************** package body Sem_Attr is
*** 5448,5455 ****
              if Is_Entity_Name (P) then
                 Pref_Id := Entity (P);
  
!                if Ekind_In (Pref_Id, E_Function, E_Generic_Function)
!                  and then Ekind (Spec_Id) = Ekind (Pref_Id)
                 then
                    if Denote_Same_Function (Pref_Id, Spec_Id) then
  
--- 5583,5598 ----
              if Is_Entity_Name (P) then
                 Pref_Id := Entity (P);
  
!                --  Either both the prefix and the annotated spec must be
!                --  generic functions, or they both must be nongeneric
!                --  functions, or the prefix must be generic and the spec
!                --  must be nongeneric (i.e. it must denote an instance).
! 
!                if (Ekind (Pref_Id) in E_Function | E_Generic_Function
!                     and then Ekind (Pref_Id) = Ekind (Spec_Id))
!                  or else
!                    (Ekind (Pref_Id) = E_Generic_Function
!                      and then Ekind (Spec_Id) = E_Function)
                 then
                    if Denote_Same_Function (Pref_Id, Spec_Id) then
  
*************** package body Sem_Attr is
*** 5505,5510 ****
--- 5648,5658 ----
        when Attribute_Reduce =>
           Check_E2;
  
+          if not Extensions_Allowed then
+             Error_Attr
+               ("% attribute only supported under -gnatX", P);
+          end if;
+ 
           declare
              Stream : constant Node_Id := Prefix (N);
              Typ    : Entity_Id;
*************** package body Sem_Attr is
*** 5513,5522 ****
                 --  Prefix is a name, as for other attributes.
  
                 --  If the object is a function we asume that it is not
!                --  overloaded. AI12-242 does not suggest an name resulution
!                --  rule for that case, but can suppose that the expected
!                --  type of the reduction is the expected type of the
!                --  component of the prefix.
  
                 Analyze_And_Resolve (Stream);
                 Typ := Etype (Stream);
--- 5661,5670 ----
                 --  Prefix is a name, as for other attributes.
  
                 --  If the object is a function we asume that it is not
!                --  overloaded. AI12-242 does not suggest a name resolution
!                --  rule for that case, but we can suppose that the expected
!                --  type of the reduction is the expected type of the component
!                --  of the prefix.
  
                 Analyze_And_Resolve (Stream);
                 Typ := Etype (Stream);
*************** package body Sem_Attr is
*** 5530,5536 ****
                    null;
                 else
                    Error_Msg_NE
!                     ("cannot apply reduce to object of type$", N, Typ);
                 end if;
  
              elsif Present (Expressions (Stream))
--- 5678,5684 ----
                    null;
                 else
                    Error_Msg_NE
!                     ("cannot apply Reduce to object of type$", N, Typ);
                 end if;
  
              elsif Present (Expressions (Stream))
*************** package body Sem_Attr is
*** 5539,5545 ****
                  N_Iterated_Component_Association
              then
                 Error_Msg_N
!                  ("Prefix of reduce must be an iterated component", N);
              end if;
  
              Analyze (E1);
--- 5687,5693 ----
                  N_Iterated_Component_Association
              then
                 Error_Msg_N
!                  ("prefix of Reduce must be an iterated component", N);
              end if;
  
              Analyze (E1);
*************** package body Sem_Attr is
*** 5579,5589 ****
        -- Remainder --
        ---------------
  
!       when Attribute_Remainder =>
!          Check_Floating_Point_Type_2;
!          Set_Etype (N, P_Base_Type);
!          Resolve (E1, P_Base_Type);
!          Resolve (E2, P_Base_Type);
  
        ---------------------
        -- Restriction_Set --
--- 5727,5733 ----
        -- Remainder --
        ---------------
  
!       --  Shares processing with Adjacent attribute
  
        ---------------------
        -- Restriction_Set --
*************** package body Sem_Attr is
*** 5706,5757 ****
        -- Rounding --
        --------------
  
!       when Attribute_Rounding =>
!          Check_Floating_Point_Type_1;
!          Set_Etype (N, P_Base_Type);
!          Resolve (E1, P_Base_Type);
  
        ---------------
        -- Safe_Emax --
        ---------------
  
!       when Attribute_Safe_Emax =>
!          Check_Floating_Point_Type_0;
!          Set_Etype (N, Universal_Integer);
  
        ----------------
        -- Safe_First --
        ----------------
  
!       when Attribute_Safe_First =>
!          Check_Floating_Point_Type_0;
!          Set_Etype (N, Universal_Real);
  
        ----------------
        -- Safe_Large --
        ----------------
  
!       when Attribute_Safe_Large =>
!          Check_E0;
!          Check_Real_Type;
!          Set_Etype (N, Universal_Real);
  
        ---------------
        -- Safe_Last --
        ---------------
  
!       when Attribute_Safe_Last =>
!          Check_Floating_Point_Type_0;
!          Set_Etype (N, Universal_Real);
  
        ----------------
        -- Safe_Small --
        ----------------
  
!       when Attribute_Safe_Small =>
!          Check_E0;
!          Check_Real_Type;
!          Set_Etype (N, Universal_Real);
  
        --------------------------
        -- Scalar_Storage_Order --
--- 5850,5886 ----
        -- Rounding --
        --------------
  
!       --  Shares processing with Ceiling attribute
  
        ---------------
        -- Safe_Emax --
        ---------------
  
!       --  Shares processing with Emax attribute
  
        ----------------
        -- Safe_First --
        ----------------
  
!       --  Shares processing with Epsilon attribute
  
        ----------------
        -- Safe_Large --
        ----------------
  
!       --  Shares processing with Large attribute
  
        ---------------
        -- Safe_Last --
        ---------------
  
!       --  Shares processing with Epsilon attribute
  
        ----------------
        -- Safe_Small --
        ----------------
  
!       --  Shares processing with Large attribute
  
        --------------------------
        -- Scalar_Storage_Order --
*************** package body Sem_Attr is
*** 5820,5837 ****
        -- Scaling --
        -------------
  
!       when Attribute_Scaling =>
!          Check_Floating_Point_Type_2;
!          Set_Etype (N, P_Base_Type);
!          Resolve (E1, P_Base_Type);
  
        ------------------
        -- Signed_Zeros --
        ------------------
  
!       when Attribute_Signed_Zeros =>
!          Check_Floating_Point_Type_0;
!          Set_Etype (N, Standard_Boolean);
  
        ----------
        -- Size --
--- 5949,5961 ----
        -- Scaling --
        -------------
  
!       --  Shares processing with Compose attribute
  
        ------------------
        -- Signed_Zeros --
        ------------------
  
!       --  Shares processing with Denorm attribute
  
        ----------
        -- Size --
*************** package body Sem_Attr is
*** 5921,5930 ****
        -- Small --
        -----------
  
!       when Attribute_Small =>
!          Check_E0;
!          Check_Real_Type;
!          Set_Etype (N, Universal_Real);
  
        ------------------
        -- Storage_Pool --
--- 6045,6061 ----
        -- Small --
        -----------
  
!       --  Shares processing with Large attribute
! 
!       ---------------------------------------
!       -- Small_Denominator/Small_Numerator --
!       ---------------------------------------
! 
!       when Attribute_Small_Denominator
!          | Attribute_Small_Numerator
!       =>
!          Check_Fixed_Point_Type_0;
!          Set_Etype (N, Universal_Integer);
  
        ------------------
        -- Storage_Pool --
*************** package body Sem_Attr is
*** 5985,5991 ****
  
              --  Validate_Remote_Access_To_Class_Wide_Type for attribute
              --  Storage_Pool since this attribute is not defined for such
!             --  types (RM E.2.3(22)).
  
              Validate_Remote_Access_To_Class_Wide_Type (N);
  
--- 6116,6122 ----
  
              --  Validate_Remote_Access_To_Class_Wide_Type for attribute
              --  Storage_Pool since this attribute is not defined for such
!             --  types (RM E.2.2(17)).
  
              Validate_Remote_Access_To_Class_Wide_Type (N);
  
*************** package body Sem_Attr is
*** 6008,6013 ****
--- 6139,6146 ----
              Check_Restriction (No_Obsolescent_Features, P);
  
           elsif Is_Access_Type (P_Type) then
+             Set_Etype (N, Universal_Integer);
+ 
              if Ekind (P_Type) = E_Access_Subprogram_Type then
                 Error_Attr_P
                   ("cannot use % attribute for access-to-subprogram type");
*************** package body Sem_Attr is
*** 6017,6027 ****
                and then Is_Type (Entity (P))
              then
                 Check_Type;
-                Set_Etype (N, Universal_Integer);
  
!                --   Validate_Remote_Access_To_Class_Wide_Type for attribute
!                --   Storage_Size since this attribute is not defined for
!                --   such types (RM E.2.3(22)).
  
                 Validate_Remote_Access_To_Class_Wide_Type (N);
  
--- 6150,6159 ----
                and then Is_Type (Entity (P))
              then
                 Check_Type;
  
!                --  Validate_Remote_Access_To_Class_Wide_Type for attribute
!                --  Storage_Size since this attribute is not defined for
!                --  such types (RM E.2.2(17)).
  
                 Validate_Remote_Access_To_Class_Wide_Type (N);
  
*************** package body Sem_Attr is
*** 6030,6036 ****
  
              else
                 Check_Task_Prefix;
-                Set_Etype (N, Universal_Integer);
              end if;
  
           else
--- 6162,6167 ----
*************** package body Sem_Attr is
*** 6100,6137 ****
        -- Succ --
        ----------
  
!       when Attribute_Succ =>
!          Check_Scalar_Type;
!          Check_E1;
! 
!          if Is_Real_Type (P_Type) or else Is_Boolean_Type (P_Type) then
!             Error_Msg_Name_1 := Aname;
!             Error_Msg_Name_2 := Chars (P_Type);
!             Check_SPARK_05_Restriction
!               ("attribute% is not allowed for type%", P);
!          end if;
! 
!          Resolve (E1, P_Base_Type);
!          Set_Etype (N, P_Base_Type);
! 
!          --  Since Pred works on the base type, we normally do no check for the
!          --  floating-point case, since the base type is unconstrained. But we
!          --  make an exception in Check_Float_Overflow mode.
! 
!          if Is_Floating_Point_Type (P_Type) then
!             if not Range_Checks_Suppressed (P_Base_Type) then
!                Set_Do_Range_Check (E1);
!             end if;
! 
!          --  If not modular type, test for overflow check required
! 
!          else
!             if not Is_Modular_Integer_Type (P_Type)
!               and then not Range_Checks_Suppressed (P_Base_Type)
!             then
!                Enable_Range_Check (E1);
!             end if;
!          end if;
  
        --------------------------------
        -- System_Allocator_Alignment --
--- 6231,6237 ----
        -- Succ --
        ----------
  
!       --  Shares processing with Pred attribute
  
        --------------------------------
        -- System_Allocator_Alignment --
*************** package body Sem_Attr is
*** 6160,6166 ****
           then
              Error_Attr_P
                ("% attribute can only be applied to objects " &
!                "of class - wide type");
           end if;
  
           --  The prefix cannot be an incomplete type. However, references to
--- 6260,6266 ----
           then
              Error_Attr_P
                ("% attribute can only be applied to objects " &
!                "of class-wide type");
           end if;
  
           --  The prefix cannot be an incomplete type. However, references to
*************** package body Sem_Attr is
*** 6169,6174 ****
--- 6269,6283 ----
  
           if Comes_From_Source (N) then
              Check_Not_Incomplete_Type;
+ 
+             --  'Tag requires visibility on the corresponding package holding
+             --  the tag, so record a reference here, to avoid spurious unused
+             --  with_clause reported when compiling the main unit.
+ 
+             if In_Extended_Main_Source_Unit (Current_Scope) then
+                Set_Referenced (P_Type, True);
+                Set_Referenced (Scope (P_Type), True);
+             end if;
           end if;
  
           --  Set appropriate type
*************** package body Sem_Attr is
*** 6203,6212 ****
        -- Terminated --
        ----------------
  
!       when Attribute_Terminated =>
!          Check_E0;
!          Set_Etype (N, Standard_Boolean);
!          Check_Task_Prefix;
  
        ----------------
        -- To_Address --
--- 6312,6318 ----
        -- Terminated --
        ----------------
  
!       --  Shares processing with Callable attribute
  
        ----------------
        -- To_Address --
*************** package body Sem_Attr is
*** 6229,6237 ****
           if Is_OK_Static_Expression (E1) then
              Val := Expr_Value (E1);
  
!             if Val < -(2 ** UI_From_Int (Standard'Address_Size - 1))
                   or else
!                Val > 2 ** UI_From_Int (Standard'Address_Size) - 1
              then
                 Error_Attr ("address value out of range for % attribute", E1);
              end if;
--- 6335,6343 ----
           if Is_OK_Static_Expression (E1) then
              Val := Expr_Value (E1);
  
!             if Val < -(Uint_2 ** (System_Address_Size - 1))
                   or else
!                Val > Uint_2 ** System_Address_Size - 1
              then
                 Error_Attr ("address value out of range for % attribute", E1);
              end if;
*************** package body Sem_Attr is
*** 6248,6254 ****
              elsif Val < 0 then
                 Set_Etype (E1, Universal_Integer);
  
!             --  Otherwise set type to Unsigned_64 to accommodate max values
  
              else
                 Set_Etype (E1, Standard_Unsigned_64);
--- 6354,6360 ----
              elsif Val < 0 then
                 Set_Etype (E1, Universal_Integer);
  
!             --  Otherwise set type to Unsigned_64 to accommodate large values
  
              else
                 Set_Etype (E1, Standard_Unsigned_64);
*************** package body Sem_Attr is
*** 6269,6278 ****
        -- Truncation --
        ----------------
  
!       when Attribute_Truncation =>
!          Check_Floating_Point_Type_1;
!          Resolve (E1, P_Base_Type);
!          Set_Etype (N, P_Base_Type);
  
        ----------------
        -- Type_Class --
--- 6375,6381 ----
        -- Truncation --
        ----------------
  
!       --  Shares processing with Ceiling attribute
  
        ----------------
        -- Type_Class --
*************** package body Sem_Attr is
*** 6418,6424 ****
                       end if;
                    end if;
  
!                   Rep := Next_Rep_Item (Rep);
                 end loop;
              end if;
           end Compute_Type_Key;
--- 6521,6527 ----
                       end if;
                    end if;
  
!                   Next_Rep_Item (Rep);
                 end loop;
              end if;
           end Compute_Type_Key;
*************** package body Sem_Attr is
*** 6461,6470 ****
        -- Unbiased_Rounding --
        -----------------------
  
!       when Attribute_Unbiased_Rounding =>
!          Check_Floating_Point_Type_1;
!          Set_Etype (N, P_Base_Type);
!          Resolve (E1, P_Base_Type);
  
        ----------------------
        -- Unchecked_Access --
--- 6564,6570 ----
        -- Unbiased_Rounding --
        -----------------------
  
!       --  Shares processing with Ceiling attribute
  
        ----------------------
        -- Unchecked_Access --
*************** package body Sem_Attr is
*** 6504,6510 ****
           Check_E0;
  
           if not Is_Entity_Name (P)
!            or else Ekind (Entity (P)) not in Named_Kind
           then
              Error_Attr_P ("prefix for % attribute must be named number");
  
--- 6604,6610 ----
           Check_E0;
  
           if not Is_Entity_Name (P)
!            or else not Is_Named_Number (Entity (P))
           then
              Error_Attr_P ("prefix for % attribute must be named number");
  
*************** package body Sem_Attr is
*** 6525,6531 ****
                    Negative := False;
                 end if;
  
!                if not Nkind_In (Expr, N_Integer_Literal, N_Real_Literal) then
                    Error_Attr
                      ("named number for % attribute must be simple literal", N);
                 end if;
--- 6625,6631 ----
                    Negative := False;
                 end if;
  
!                if Nkind (Expr) not in N_Integer_Literal | N_Real_Literal then
                    Error_Attr
                      ("named number for % attribute must be simple literal", N);
                 end if;
*************** package body Sem_Attr is
*** 6645,6651 ****
  
                    if Nkind (Expr) = N_Others_Choice then
                       Error_Attr
!                        ("others choice not allowed in attribute %", Expr);
  
                    --  Otherwise analyze and resolve all indexes
  
--- 6745,6751 ----
  
                    if Nkind (Expr) = N_Others_Choice then
                       Error_Attr
!                        ("OTHERS choice not allowed in attribute %", Expr);
  
                    --  Otherwise analyze and resolve all indexes
  
*************** package body Sem_Attr is
*** 6692,6698 ****
  
                    if Nkind (Index) = N_Others_Choice then
                       Error_Attr
!                        ("others choice not allowed in attribute %", Index);
  
                    --  The index denotes a range of elements
  
--- 6792,6798 ----
  
                    if Nkind (Index) = N_Others_Choice then
                       Error_Attr
!                        ("OTHERS choice not allowed in attribute %", Index);
  
                    --  The index denotes a range of elements
  
*************** package body Sem_Attr is
*** 6703,6732 ****
                       Analyze_And_Resolve (Low,  Etype (Index_Typ));
                       Analyze_And_Resolve (High, Etype (Index_Typ));
  
-                      --  Add a range check to ensure that the bounds of the
-                      --  range are within the index type when this cannot be
-                      --  determined statically.
- 
-                      if not Is_OK_Static_Expression (Low) then
-                         Set_Do_Range_Check (Low);
-                      end if;
- 
-                      if not Is_OK_Static_Expression (High) then
-                         Set_Do_Range_Check (High);
-                      end if;
- 
                    --  Otherwise the index denotes a single element
  
                    else
                       Analyze_And_Resolve (Index, Etype (Index_Typ));
- 
-                      --  Add a range check to ensure that the index is within
-                      --  the index type when it is not possible to determine
-                      --  this statically.
- 
-                      if not Is_OK_Static_Expression (Index) then
-                         Set_Do_Range_Check (Index);
-                      end if;
                    end if;
  
                    Next (Index);
--- 6803,6812 ----
*************** package body Sem_Attr is
*** 6760,6766 ****
                    exit;
                 end if;
  
!                Comp_Or_Discr := Next_Entity (Comp_Or_Discr);
              end loop;
  
              --  Diagnose an illegal reference
--- 6840,6846 ----
                    exit;
                 end if;
  
!                Next_Entity (Comp_Or_Discr);
              end loop;
  
              --  Diagnose an illegal reference
*************** package body Sem_Attr is
*** 6789,6797 ****
              end if;
  
              --  Verify the consistency of types when the current component is
!             --  part of a miltiple component update.
  
!             --    Comp_1, ..., Comp_N => <value>
  
              if Present (Etype (Comp)) then
                 Base_Typ := Base_Type (Etype (Comp));
--- 6869,6877 ----
              end if;
  
              --  Verify the consistency of types when the current component is
!             --  part of a multiple component update.
  
!             --    Comp_1 | ... | Comp_N => <value>
  
              if Present (Etype (Comp)) then
                 Base_Typ := Base_Type (Etype (Comp));
*************** package body Sem_Attr is
*** 6817,6822 ****
--- 6897,6907 ----
        --  Start of processing for Update
  
        begin
+          if Warn_On_Obsolescent_Feature then
+             Error_Msg_N ("?j?attribute Update is an obsolescent feature", N);
+             Error_Msg_N ("\?j?use a delta aggregate instead", N);
+          end if;
+ 
           Check_E1;
  
           if not Is_Object_Reference (P) then
*************** package body Sem_Attr is
*** 6832,6837 ****
--- 6917,6927 ----
  
           elsif Nkind (E1) /= N_Aggregate then
              Error_Attr ("attribute % requires component association list", N);
+ 
+          elsif Present (Expressions (E1)) then
+             Error_Attr ("attribute % requires named component associations",
+                         First (Expressions (E1)));
+ 
           end if;
  
           --  Inspect the update aggregate, looking at all the associations and
*************** package body Sem_Attr is
*** 6877,6883 ****
  
                       elsif Nkind (Comp) = N_Others_Choice then
                          Error_Attr
!                           ("others choice not allowed in attribute %", Comp);
  
                       --  The name of a record component cannot appear in any
                       --  other form.
--- 6967,6973 ----
  
                       elsif Nkind (Comp) = N_Others_Choice then
                          Error_Attr
!                           ("OTHERS choice not allowed in attribute %", Comp);
  
                       --  The name of a record component cannot appear in any
                       --  other form.
*************** package body Sem_Attr is
*** 6910,6922 ****
           Check_E1;
           Check_Discrete_Type;
  
-          if Is_Boolean_Type (P_Type) then
-             Error_Msg_Name_1 := Aname;
-             Error_Msg_Name_2 := Chars (P_Type);
-             Check_SPARK_05_Restriction
-               ("attribute% is not allowed for type%", P);
-          end if;
- 
           --  Note, we need a range check in general, but we wait for the
           --  Resolve call to do this, since we want to let Eval_Attribute
           --  have a chance to find an static illegality first.
--- 7000,7005 ----
*************** package body Sem_Attr is
*** 6978,6983 ****
--- 7061,7070 ----
                 --  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
*************** package body Sem_Attr is
*** 7017,7024 ****
        -- Value --
        -----------
  
!       when Attribute_Value =>
!          Check_SPARK_05_Restriction_On_Attribute;
           Check_E1;
           Check_Scalar_Type;
  
--- 7104,7113 ----
        -- Value --
        -----------
  
!       when Attribute_Value
!          | Attribute_Wide_Value
!          | Attribute_Wide_Wide_Value
!       =>
           Check_E1;
           Check_Scalar_Type;
  
*************** package body Sem_Attr is
*** 7068,7078 ****
        -- Value_Size --
        ----------------
  
!       when Attribute_Value_Size =>
!          Check_E0;
!          Check_Type;
!          Check_Not_Incomplete_Type;
!          Set_Etype (N, Universal_Integer);
  
        -------------
        -- Version --
--- 7157,7163 ----
        -- Value_Size --
        ----------------
  
!       --  Shares processing with Machine_Size attribute
  
        -------------
        -- Version --
*************** package body Sem_Attr is
*** 7108,7159 ****
        -- Wide_Value --
        ----------------
  
!       when Attribute_Wide_Value =>
!          Check_SPARK_05_Restriction_On_Attribute;
!          Check_E1;
!          Check_Scalar_Type;
! 
!          --  Set Etype before resolving expression because expansion
!          --  of expression may require enclosing type.
! 
!          Set_Etype (N, P_Type);
!          Validate_Non_Static_Attribute_Function_Call;
! 
!          --  Check restriction No_Fixed_IO
! 
!          if Restriction_Check_Required (No_Fixed_IO)
!            and then Is_Fixed_Point_Type (P_Type)
!          then
!             Check_Restriction (No_Fixed_IO, P);
!          end if;
  
        ---------------------
        -- Wide_Wide_Value --
        ---------------------
  
!       when Attribute_Wide_Wide_Value =>
!          Check_E1;
!          Check_Scalar_Type;
! 
!          --  Set Etype before resolving expression because expansion
!          --  of expression may require enclosing type.
! 
!          Set_Etype (N, P_Type);
!          Validate_Non_Static_Attribute_Function_Call;
! 
!          --  Check restriction No_Fixed_IO
! 
!          if Restriction_Check_Required (No_Fixed_IO)
!            and then Is_Fixed_Point_Type (P_Type)
!          then
!             Check_Restriction (No_Fixed_IO, P);
!          end if;
  
        ---------------------
        -- Wide_Wide_Width --
        ---------------------
  
!       when Attribute_Wide_Wide_Width =>
           Check_E0;
           Check_Scalar_Type;
           Set_Etype (N, Universal_Integer);
--- 7193,7214 ----
        -- Wide_Value --
        ----------------
  
!       --  Shares processing with Value attribute
  
        ---------------------
        -- Wide_Wide_Value --
        ---------------------
  
!       --  Shares processing with Value attribute
  
        ---------------------
        -- Wide_Wide_Width --
        ---------------------
  
!       when Attribute_Wide_Wide_Width
!          | Attribute_Wide_Width
!          | Attribute_Width
!       =>
           Check_E0;
           Check_Scalar_Type;
           Set_Etype (N, Universal_Integer);
*************** package body Sem_Attr is
*** 7162,7182 ****
        -- Wide_Width --
        ----------------
  
!       when Attribute_Wide_Width =>
!          Check_SPARK_05_Restriction_On_Attribute;
!          Check_E0;
!          Check_Scalar_Type;
!          Set_Etype (N, Universal_Integer);
  
        -----------
        -- Width --
        -----------
  
!       when Attribute_Width =>
!          Check_SPARK_05_Restriction_On_Attribute;
!          Check_E0;
!          Check_Scalar_Type;
!          Set_Etype (N, Universal_Integer);
  
        ---------------
        -- Word_Size --
--- 7217,7229 ----
        -- Wide_Width --
        ----------------
  
!       --  Shares processing with Wide_Wide_Width attribute
  
        -----------
        -- Width --
        -----------
  
!       --  Shares processing with Wide_Wide_Width attribute
  
        ---------------
        -- Word_Size --
*************** package body Sem_Attr is
*** 7202,7223 ****
        --  See SPARK RM 9(18) for the relevant rule.
  
        if GNATprove_Mode then
!          declare
!             Unused : Entity_Id;
! 
!          begin
!             case Attr_Id is
!                when Attribute_Callable
!                   | Attribute_Caller
!                   | Attribute_Count
!                   | Attribute_Terminated
!                =>
!                   Unused := RTE (RE_Tasking_State);
  
!                when others =>
!                   null;
!             end case;
!          end;
        end if;
  
     --  All errors raise Bad_Attribute, so that we get out before any further
--- 7249,7265 ----
        --  See SPARK RM 9(18) for the relevant rule.
  
        if GNATprove_Mode then
!          case Attr_Id is
!             when Attribute_Callable
!                | Attribute_Caller
!                | Attribute_Count
!                | Attribute_Terminated
!             =>
!                SPARK_Implicit_Load (RE_Tasking_State);
  
!             when others =>
!                null;
!          end case;
        end if;
  
     --  All errors raise Bad_Attribute, so that we get out before any further
*************** package body Sem_Attr is
*** 7240,7253 ****
     --------------------
  
     procedure Eval_Attribute (N : Node_Id) is
!       Loc   : constant Source_Ptr   := Sloc (N);
!       Aname : constant Name_Id      := Attribute_Name (N);
!       Id    : constant Attribute_Id := Get_Attribute_Id (Aname);
!       P     : constant Node_Id      := Prefix (N);
  
        C_Type : constant Entity_Id := Etype (N);
        --  The type imposed by the context
  
        E1 : Node_Id;
        --  First expression, or Empty if none
  
--- 7282,7301 ----
     --------------------
  
     procedure Eval_Attribute (N : Node_Id) is
!       Loc : constant Source_Ptr := Sloc (N);
  
        C_Type : constant Entity_Id := Etype (N);
        --  The type imposed by the context
  
+       Aname : Name_Id;
+       --  Attribute_Name (N) after verification of validity of N
+ 
+       Id : Attribute_Id;
+       --  Get_Attribute_Id (Aname) after Aname is set
+ 
+       P : Node_Id;
+       --  Prefix (N) after verification of validity of N
+ 
        E1 : Node_Id;
        --  First expression, or Empty if none
  
*************** package body Sem_Attr is
*** 7325,7334 ****
        --  Static is reset to False if the type or index type is not statically
        --  constrained.
  
-       function Statically_Denotes_Entity (N : Node_Id) return Boolean;
-       --  Verify that the prefix of a potentially static array attribute
-       --  satisfies the conditions of 4.9 (14).
- 
        -----------------------------------
        -- Check_Concurrent_Discriminant --
        -----------------------------------
--- 7373,7378 ----
*************** package body Sem_Attr is
*** 7605,7632 ****
           end if;
        end Set_Bounds;
  
!       -------------------------------
!       -- Statically_Denotes_Entity --
!       -------------------------------
! 
!       function Statically_Denotes_Entity (N : Node_Id) return Boolean is
!          E : Entity_Id;
  
!       begin
!          if not Is_Entity_Name (N) then
!             return False;
!          else
!             E := Entity (N);
!          end if;
  
!          return
!            Nkind (Parent (E)) /= N_Object_Renaming_Declaration
!              or else Statically_Denotes_Entity (Renamed_Object (E));
!       end Statically_Denotes_Entity;
  
!    --  Start of processing for Eval_Attribute
  
-    begin
        --  The To_Address attribute can be static, but it cannot be evaluated at
        --  compile time, so just return.
  
--- 7649,7668 ----
           end if;
        end Set_Bounds;
  
!    --  Start of processing for Eval_Attribute
  
!    begin
!       --  Return immediately if e.g. N has been rewritten or is malformed due
!       --  to previous errors.
  
!       if Nkind (N) /= N_Attribute_Reference then
!          return;
!       end if;
  
!       Aname := Attribute_Name (N);
!       Id    := Get_Attribute_Id (Aname);
!       P     := Prefix (N);
  
        --  The To_Address attribute can be static, but it cannot be evaluated at
        --  compile time, so just return.
  
*************** package body Sem_Attr is
*** 7659,7667 ****
           --  We skip evaluation if the expander is not active. This is not just
           --  an optimization. It is of key importance that we not rewrite the
           --  attribute in a generic template, since we want to pick up the
!          --  setting of the check in the instance, Testing Expander_Active
!          --  might seem an easy way of doing this, but we need to account for
!          --  ASIS needs, so check explicitly for a generic context.
  
           if not Inside_A_Generic then
              declare
--- 7695,7701 ----
           --  We skip evaluation if the expander is not active. This is not just
           --  an optimization. It is of key importance that we not rewrite the
           --  attribute in a generic template, since we want to pick up the
!          --  setting of the check in the instance.
  
           if not Inside_A_Generic then
              declare
*************** package body Sem_Attr is
*** 7691,7697 ****
        --  we will do the folding right here (things get confused if we let this
        --  case go through the normal circuitry).
  
!       if Attribute_Name (N) = Name_Img
          and then Is_Entity_Name (P)
          and then Is_Enumeration_Type (Etype (Entity (P)))
          and then Is_OK_Static_Expression (P)
--- 7725,7731 ----
        --  we will do the folding right here (things get confused if we let this
        --  case go through the normal circuitry).
  
!       if Id = Attribute_Img
          and then Is_Entity_Name (P)
          and then Is_Enumeration_Type (Etype (Entity (P)))
          and then Is_OK_Static_Expression (P)
*************** package body Sem_Attr is
*** 7715,7732 ****
           return;
        end if;
  
!       --  Special processing for cases where the prefix is an object. For this
!       --  purpose, a string literal counts as an object (attributes of string
!       --  literals can only appear in generated code).
  
!       if Is_Object_Reference (P) or else Nkind (P) = N_String_Literal then
  
           --  For Component_Size, the prefix is an array object, and we apply
           --  the attribute to the type of the object. This is allowed for both
           --  unconstrained and constrained arrays, since the bounds have no
           --  influence on the value of this attribute.
  
!          if Id = Attribute_Component_Size then
              P_Entity := Etype (P);
  
           --  For Enum_Rep, evaluation depends on the nature of the prefix and
--- 7749,7783 ----
           return;
        end if;
  
!       --  Special processing for cases where the prefix is an object or value,
!       --  including string literals (attributes of string literals can only
!       --  appear in generated code) and current instance prefixes in type or
!       --  subtype aspects.
  
!       if Is_Object_Reference (P)
!         or else Is_Current_Instance_Reference_In_Type_Aspect (P)
!         or else Nkind (P) = N_String_Literal
!         or else (Is_Entity_Name (P)
!                  and then Ekind (Entity (P)) = E_Enumeration_Literal)
!       then
!          --  For Alignment, give alignment of object if available, otherwise we
!          --  cannot fold Alignment.
! 
!          if Id = Attribute_Alignment then
!             if Is_Entity_Name (P) and then Known_Alignment (Entity (P)) then
!                Compile_Time_Known_Attribute (N, Alignment (Entity (P)));
!             else
!                Check_Expressions;
!             end if;
! 
!             return;
  
           --  For Component_Size, the prefix is an array object, and we apply
           --  the attribute to the type of the object. This is allowed for both
           --  unconstrained and constrained arrays, since the bounds have no
           --  influence on the value of this attribute.
  
!          elsif Id = Attribute_Component_Size then
              P_Entity := Etype (P);
  
           --  For Enum_Rep, evaluation depends on the nature of the prefix and
*************** package body Sem_Attr is
*** 7742,7749 ****
                 begin
                    --  P'Enum_Rep case
  
!                   if Ekind_In (Entity (P), E_Constant,
!                                            E_Enumeration_Literal)
                    then
                       Enum_Expr := P;
  
--- 7793,7799 ----
                 begin
                    --  P'Enum_Rep case
  
!                   if Ekind (Entity (P)) in E_Constant | E_Enumeration_Literal
                    then
                       Enum_Expr := P;
  
*************** package body Sem_Attr is
*** 7771,7776 ****
--- 7821,7828 ----
                         (Ekind (Entity (Enum_Expr)) = E_Constant
                            and then Nkind (Parent (Entity (Enum_Expr))) =
                                       N_Object_Declaration
+                           and then Present
+                                      (Expression (Parent (Entity (P))))
                            and then Compile_Time_Known_Value
                                       (Expression (Parent (Entity (P))))))
                    then
*************** package body Sem_Attr is
*** 7788,7800 ****
                 return;
              end if;
  
!          --  For First and Last, the prefix is an array object, and we apply
!          --  the attribute to the type of the array, but we need a constrained
!          --  type for this, so we use the actual subtype if available.
  
!          elsif Id = Attribute_First or else
!                Id = Attribute_Last  or else
!                Id = Attribute_Length
           then
              declare
                 AS : constant Entity_Id := Get_Actual_Subtype_If_Available (P);
--- 7840,7965 ----
                 return;
              end if;
  
!          --  For Bit_Position, give Component_Bit_Offset of object if available
!          --  otherwise we cannot fold Bit_Position. Note that the attribute can
!          --  be applied to a naked record component in generated code, in which
!          --  case the prefix is an identifier that references the component or
!          --  discriminant entity.
  
!          elsif Id = Attribute_Bit_Position then
!             declare
!                CE : Entity_Id;
! 
!             begin
!                if Is_Entity_Name (P) then
!                   CE := Entity (P);
!                else
!                   CE := Entity (Selector_Name (P));
!                end if;
! 
!                if Known_Static_Component_Bit_Offset (CE) then
!                   Compile_Time_Known_Attribute
!                     (N, Component_Bit_Offset (CE));
!                else
!                   Check_Expressions;
!                end if;
! 
!                return;
!             end;
! 
!          --  For Position, in Ada 2005 (or later) if we have the non-default
!          --  bit order, we return the original value as given in the component
!          --  clause (RM 2005 13.5.2(3/2)). Otherwise (Ada 83/95, or later with
!          --  default bit order) return the value if it is known statically.
! 
!          elsif Id = Attribute_Position then
!             declare
!                CE : constant Entity_Id := Entity (Selector_Name (P));
! 
!             begin
!                if Present (Component_Clause (CE))
!                  and then Ada_Version >= Ada_2005
!                  and then Reverse_Bit_Order (Scope (CE))
!                then
!                   Compile_Time_Known_Attribute
!                     (N, Expr_Value (Position (Component_Clause (CE))));
! 
!                elsif Known_Static_Component_Bit_Offset (CE) then
!                   Compile_Time_Known_Attribute
!                     (N, Component_Bit_Offset (CE) / System_Storage_Unit);
! 
!                else
!                   Check_Expressions;
!                end if;
! 
!                return;
!             end;
! 
!          --  For First_Bit, in Ada 2005 (or later) if we have the non-default
!          --  bit order, we return the original value as given in the component
!          --  clause (RM 2005 13.5.2(3/2)). Otherwise (Ada 83/95, or later with
!          --  default bit order) return the value if it is known statically.
! 
!          elsif Id = Attribute_First_Bit then
!             declare
!                CE : constant Entity_Id := Entity (Selector_Name (P));
! 
!             begin
!                if Present (Component_Clause (CE))
!                  and then Ada_Version >= Ada_2005
!                  and then Reverse_Bit_Order (Scope (CE))
!                then
!                   Compile_Time_Known_Attribute
!                     (N, Expr_Value (First_Bit (Component_Clause (CE))));
! 
!                elsif Known_Static_Component_Bit_Offset (CE) then
!                   Compile_Time_Known_Attribute
!                     (N, Component_Bit_Offset (CE) mod System_Storage_Unit);
! 
!                else
!                   Check_Expressions;
!                end if;
! 
!                return;
!             end;
! 
!          --  For Last_Bit, in Ada 2005 (or later) if we have the non-default
!          --  bit order, we return the original value as given in the component
!          --  clause (RM 2005 13.5.2(3/2)). Otherwise (Ada 83/95, or later with
!          --  default bit order) return the value if it is known statically.
! 
!          elsif Id = Attribute_Last_Bit then
!             declare
!                CE : constant Entity_Id := Entity (Selector_Name (P));
! 
!             begin
!                if Present (Component_Clause (CE))
!                  and then Ada_Version >= Ada_2005
!                  and then Reverse_Bit_Order (Scope (CE))
!                then
!                   Compile_Time_Known_Attribute
!                     (N, Expr_Value (Last_Bit (Component_Clause (CE))));
! 
!                elsif Known_Static_Component_Bit_Offset (CE)
!                  and then Known_Static_Esize (CE)
!                then
!                   Compile_Time_Known_Attribute
!                     (N, (Component_Bit_Offset (CE) mod System_Storage_Unit)
!                                                              + Esize (CE) - 1);
!                else
!                   Check_Expressions;
!                end if;
! 
!                return;
!             end;
! 
!          --  For First, Last and Length, the prefix is an array object, and we
!          --  apply the attribute to its type, but we need a constrained type
!          --  for this, so we use the actual subtype if available.
! 
!          elsif Id = Attribute_First
!            or else Id = Attribute_Last
!            or else Id = Attribute_Length
           then
              declare
                 AS : constant Entity_Id := Get_Actual_Subtype_If_Available (P);
*************** package body Sem_Attr is
*** 7816,7845 ****
  
           elsif Id = Attribute_Size then
              if Is_Entity_Name (P)
!               and then Known_Esize (Entity (P))
              then
                 Compile_Time_Known_Attribute (N, Esize (Entity (P)));
-                return;
- 
              else
                 Check_Expressions;
-                return;
              end if;
  
!          --  For Alignment, give size of object if available, otherwise we
!          --  cannot fold Alignment.
! 
!          elsif Id = Attribute_Alignment then
!             if Is_Entity_Name (P)
!               and then Known_Alignment (Entity (P))
!             then
!                Fold_Uint (N, Alignment (Entity (P)), Static);
!                return;
! 
!             else
!                Check_Expressions;
!                return;
!             end if;
  
           --  For Lock_Free, we apply the attribute to the type of the object.
           --  This is allowed since we have already verified that the type is a
--- 7981,7994 ----
  
           elsif Id = Attribute_Size then
              if Is_Entity_Name (P)
!               and then Known_Static_Esize (Entity (P))
              then
                 Compile_Time_Known_Attribute (N, Esize (Entity (P)));
              else
                 Check_Expressions;
              end if;
  
!             return;
  
           --  For Lock_Free, we apply the attribute to the type of the object.
           --  This is allowed since we have already verified that the type is a
*************** package body Sem_Attr is
*** 7910,7916 ****
        --  T'Descriptor_Size is never static, even if T is static.
  
        if Is_Scalar_Type (P_Entity)
!         and then (not Is_Generic_Type (P_Entity))
          and then Is_Static_Subtype (P_Entity)
          and then Is_Scalar_Type (Etype (N))
          and then
--- 8059,8065 ----
        --  T'Descriptor_Size is never static, even if T is static.
  
        if Is_Scalar_Type (P_Entity)
!         and then not Is_Generic_Type (P_Entity)
          and then Is_Static_Subtype (P_Entity)
          and then Is_Scalar_Type (Etype (N))
          and then
*************** package body Sem_Attr is
*** 7929,7948 ****
  
        --  First foldable possibility is a scalar or array type (RM 4.9(7))
        --  that is not generic (generic types are eliminated by RM 4.9(25)).
!       --  Note we allow non-static non-generic types at this stage as further
        --  described below.
  
        if Is_Type (P_Entity)
          and then (Is_Scalar_Type (P_Entity) or Is_Array_Type (P_Entity))
!         and then (not Is_Generic_Type (P_Entity))
        then
           P_Type := P_Entity;
  
        --  Second foldable possibility is an array object (RM 4.9(8))
  
!       elsif Ekind_In (P_Entity, E_Variable, E_Constant)
          and then Is_Array_Type (Etype (P_Entity))
!         and then (not Is_Generic_Type (Etype (P_Entity)))
        then
           P_Type := Etype (P_Entity);
  
--- 8078,8097 ----
  
        --  First foldable possibility is a scalar or array type (RM 4.9(7))
        --  that is not generic (generic types are eliminated by RM 4.9(25)).
!       --  Note we allow nonstatic nongeneric types at this stage as further
        --  described below.
  
        if Is_Type (P_Entity)
          and then (Is_Scalar_Type (P_Entity) or Is_Array_Type (P_Entity))
!         and then not Is_Generic_Type (P_Entity)
        then
           P_Type := P_Entity;
  
        --  Second foldable possibility is an array object (RM 4.9(8))
  
!       elsif Ekind (P_Entity) in E_Variable | E_Constant
          and then Is_Array_Type (Etype (P_Entity))
!         and then not Is_Generic_Type (Etype (P_Entity))
        then
           P_Type := Etype (P_Entity);
  
*************** package body Sem_Attr is
*** 7965,7975 ****
  
        --  Definite must be folded if the prefix is not a generic type, that
        --  is to say if we are within an instantiation. Same processing applies
!       --  to the GNAT attributes Atomic_Always_Lock_Free, Has_Discriminants,
!       --  Lock_Free, Type_Class, Has_Tagged_Value, and Unconstrained_Array.
  
        elsif (Id = Attribute_Atomic_Always_Lock_Free or else
               Id = Attribute_Definite                or else
               Id = Attribute_Has_Access_Values       or else
               Id = Attribute_Has_Discriminants       or else
               Id = Attribute_Has_Tagged_Values       or else
--- 8114,8124 ----
  
        --  Definite must be folded if the prefix is not a generic type, that
        --  is to say if we are within an instantiation. Same processing applies
!       --  to selected GNAT attributes.
  
        elsif (Id = Attribute_Atomic_Always_Lock_Free or else
               Id = Attribute_Definite                or else
+              Id = Attribute_Descriptor_Size         or else
               Id = Attribute_Has_Access_Values       or else
               Id = Attribute_Has_Discriminants       or else
               Id = Attribute_Has_Tagged_Values       or else
*************** package body Sem_Attr is
*** 7985,7998 ****
        --  for a size from an attribute definition clause). At this stage, this
        --  can happen only for types (e.g. record types) for which the size is
        --  always non-static. We exclude generic types from consideration (since
!       --  they have bogus sizes set within templates).
  
!       elsif Id = Attribute_Size
          and then Is_Type (P_Entity)
!         and then (not Is_Generic_Type (P_Entity))
          and then Known_Static_RM_Size (P_Entity)
        then
!          Compile_Time_Known_Attribute (N, RM_Size (P_Entity));
           return;
  
        --  We can fold 'Alignment applied to a type if the alignment is known
--- 8134,8157 ----
        --  for a size from an attribute definition clause). At this stage, this
        --  can happen only for types (e.g. record types) for which the size is
        --  always non-static. We exclude generic types from consideration (since
!       --  they have bogus sizes set within templates). We can also fold
!       --  Max_Size_In_Storage_Elements in the same cases.
  
!       elsif (Id = Attribute_Size or
!              Id = Attribute_Max_Size_In_Storage_Elements)
          and then Is_Type (P_Entity)
!         and then not Is_Generic_Type (P_Entity)
          and then Known_Static_RM_Size (P_Entity)
        then
!          declare
!             Attr_Value : Uint := RM_Size (P_Entity);
!          begin
!             if Id = Attribute_Max_Size_In_Storage_Elements then
!                Attr_Value := (Attr_Value + System_Storage_Unit - 1)
!                              / System_Storage_Unit;
!             end if;
!             Compile_Time_Known_Attribute (N, Attr_Value);
!          end;
           return;
  
        --  We can fold 'Alignment applied to a type if the alignment is known
*************** package body Sem_Attr is
*** 8003,8009 ****
  
        elsif Id = Attribute_Alignment
          and then Is_Type (P_Entity)
!         and then (not Is_Generic_Type (P_Entity))
          and then Known_Alignment (P_Entity)
        then
           Compile_Time_Known_Attribute (N, Alignment (P_Entity));
--- 8162,8168 ----
  
        elsif Id = Attribute_Alignment
          and then Is_Type (P_Entity)
!         and then not Is_Generic_Type (P_Entity)
          and then Known_Alignment (P_Entity)
        then
           Compile_Time_Known_Attribute (N, Alignment (P_Entity));
*************** package body Sem_Attr is
*** 8012,8018 ****
        --  If this is an access attribute that is known to fail accessibility
        --  check, rewrite accordingly.
  
!       elsif Attribute_Name (N) = Name_Access
          and then Raises_Constraint_Error (N)
        then
           Rewrite (N,
--- 8171,8177 ----
        --  If this is an access attribute that is known to fail accessibility
        --  check, rewrite accordingly.
  
!       elsif Id = Attribute_Address
          and then Raises_Constraint_Error (N)
        then
           Rewrite (N,
*************** package body Sem_Attr is
*** 8080,8086 ****
        --  since we can't do anything with unconstrained arrays. In addition,
        --  only the First, Last and Length attributes are possibly static.
  
!       --  Atomic_Always_Lock_Free, Definite, Has_Access_Values,
        --  Has_Discriminants, Has_Tagged_Values, Lock_Free, Type_Class, and
        --  Unconstrained_Array are again exceptions, because they apply as well
        --  to unconstrained types.
--- 8239,8245 ----
        --  since we can't do anything with unconstrained arrays. In addition,
        --  only the First, Last and Length attributes are possibly static.
  
!       --  Atomic_Always_Lock_Free, Definite, Descriptor_Size, Has_Access_Values
        --  Has_Discriminants, Has_Tagged_Values, Lock_Free, Type_Class, and
        --  Unconstrained_Array are again exceptions, because they apply as well
        --  to unconstrained types.
*************** package body Sem_Attr is
*** 8092,8097 ****
--- 8251,8257 ----
  
        elsif Id = Attribute_Atomic_Always_Lock_Free or else
              Id = Attribute_Definite                or else
+             Id = Attribute_Descriptor_Size         or else
              Id = Attribute_Has_Access_Values       or else
              Id = Attribute_Has_Discriminants       or else
              Id = Attribute_Has_Tagged_Values       or else
*************** package body Sem_Attr is
*** 8206,8221 ****
              if not Compile_Time_Known_Value (E)
                or else not Is_Scalar_Type (Etype (E))
              then
-                --  An odd special case, if this is a Pos attribute, this
-                --  is where we need to apply a range check since it does
-                --  not get done anywhere else.
- 
-                if Id = Attribute_Pos then
-                   if Is_Integer_Type (Etype (E)) then
-                      Apply_Range_Check (E, Etype (N));
-                   end if;
-                end if;
- 
                 Check_Expressions;
                 return;
  
--- 8366,8371 ----
*************** package body Sem_Attr is
*** 8391,8396 ****
--- 8541,8551 ----
        -- Component_Size --
        --------------------
  
+       --  Fold Component_Size if it is known at compile time, which is always
+       --  true in the packed array case. It is important that the packed array
+       --  case is handled here since the back end would otherwise get confused
+       --  by the equivalent packed array type.
+ 
        when Attribute_Component_Size =>
           if Known_Static_Component_Size (P_Type) then
              Fold_Uint (N, Component_Size (P_Type), Static);
*************** package body Sem_Attr is
*** 8416,8423 ****
        when Attribute_Constrained =>
  
           --  The expander might fold it and set the static flag accordingly,
!          --  but with expansion disabled (as in ASIS), it remains as an
!          --  attribute reference, and this reference is not static.
  
           Set_Is_Static_Expression (N, False);
  
--- 8571,8578 ----
        when Attribute_Constrained =>
  
           --  The expander might fold it and set the static flag accordingly,
!          --  but with expansion disabled, it remains as an attribute reference,
!          --  and this reference is not static.
  
           Set_Is_Static_Expression (N, False);
  
*************** package body Sem_Attr is
*** 8460,8467 ****
        -- Descriptor_Size --
        ---------------------
  
        when Attribute_Descriptor_Size =>
!          null;
  
        ------------
        -- Digits --
--- 8615,8626 ----
        -- Descriptor_Size --
        ---------------------
  
+       --  Descriptor_Size is nonnull only for unconstrained array types
+ 
        when Attribute_Descriptor_Size =>
!          if not Is_Array_Type (P_Type) or else Is_Constrained (P_Type) then
!             Fold_Uint (N, Uint_0, Static);
!          end if;
  
        ------------
        -- Digits --
*************** package body Sem_Attr is
*** 8533,8539 ****
        --------------
  
        when Attribute_Enum_Val => Enum_Val : declare
!          Lit : Node_Id;
  
        begin
           --  We have something like Enum_Type'Enum_Val (23), so search for a
--- 8692,8698 ----
        --------------
  
        when Attribute_Enum_Val => Enum_Val : declare
!          Lit : Entity_Id;
  
        begin
           --  We have something like Enum_Type'Enum_Val (23), so search for a
*************** package body Sem_Attr is
*** 9671,9676 ****
--- 9830,9849 ----
              Fold_Ureal (N, Small_Value (P_Type), True);
           end if;
  
+       -----------------------
+       -- Small_Denominator --
+       -----------------------
+ 
+       when Attribute_Small_Denominator =>
+          Fold_Uint (N, Norm_Den (Small_Value (P_Type)), True);
+ 
+       ---------------------
+       -- Small_Numerator --
+       ---------------------
+ 
+       when Attribute_Small_Numerator =>
+          Fold_Uint (N, Norm_Num (Small_Value (P_Type)), True);
+ 
        -----------------
        -- Stream_Size --
        -----------------
*************** package body Sem_Attr is
*** 10253,10260 ****
--- 10426,10435 ----
           | Attribute_First_Bit
           | Attribute_Img
           | Attribute_Input
+          | Attribute_Initialized
           | Attribute_Last_Bit
           | Attribute_Library_Level
+          | Attribute_Max_Integer_Size
           | Attribute_Maximum_Alignment
           | Attribute_Old
           | Attribute_Output
*************** package body Sem_Attr is
*** 10262,10267 ****
--- 10437,10443 ----
           | Attribute_Pool_Address
           | Attribute_Position
           | Attribute_Priority
+          | Attribute_Put_Image
           | Attribute_Read
           | Attribute_Result
           | Attribute_Scalar_Storage_Order
*************** package body Sem_Attr is
*** 10299,10308 ****
        --  An exception is the GNAT attribute Constrained_Array which is
        --  defined to be a static attribute in all cases.
  
!       if Nkind_In (N, N_Integer_Literal,
!                       N_Real_Literal,
!                       N_Character_Literal,
!                       N_String_Literal)
          or else (Is_Entity_Name (N)
                    and then Ekind (Entity (N)) = E_Enumeration_Literal)
        then
--- 10475,10484 ----
        --  An exception is the GNAT attribute Constrained_Array which is
        --  defined to be a static attribute in all cases.
  
!       if Nkind (N) in N_Integer_Literal
!                     | N_Real_Literal
!                     | N_Character_Literal
!                     | N_String_Literal
          or else (Is_Entity_Name (N)
                    and then Ekind (Entity (N)) = E_Enumeration_Literal)
        then
*************** package body Sem_Attr is
*** 10373,10378 ****
--- 10549,10561 ----
        --  Returns True if Declared_Entity is declared within the declarative
        --  region of Generic_Unit; otherwise returns False.
  
+       function Prefix_With_Safe_Accessibility_Level return Boolean;
+       --  Return True if the prefix does not have a value conversion of an
+       --  array because a value conversion is like an aggregate with respect
+       --  to determining accessibility level (RM 3.10.2); even if evaluation
+       --  of a value conversion is guaranteed to not create a new object,
+       --  accessibility rules are defined as if it might.
+ 
        ---------------------------
        -- Accessibility_Message --
        ---------------------------
*************** package body Sem_Attr is
*** 10402,10409 ****
  
              if Is_Record_Type (Current_Scope)
                and then
!                 Nkind_In (Parent (N), N_Discriminant_Association,
!                                       N_Index_Or_Discriminant_Constraint)
              then
                 Indic := Parent (Parent (N));
                 while Present (Indic)
--- 10585,10592 ----
  
              if Is_Record_Type (Current_Scope)
                and then
!                 Nkind (Parent (N)) in N_Discriminant_Association
!                                     | N_Index_Or_Discriminant_Constraint
              then
                 Indic := Parent (Parent (N));
                 while Present (Indic)
*************** package body Sem_Attr is
*** 10449,10454 ****
--- 10632,10701 ----
           return False;
        end Declared_Within_Generic_Unit;
  
+       ------------------------------------------
+       -- Prefix_With_Safe_Accessibility_Level --
+       ------------------------------------------
+ 
+       function Prefix_With_Safe_Accessibility_Level return Boolean is
+          function Safe_Value_Conversions return Boolean;
+          --  Return False if the prefix has a value conversion of an array type
+ 
+          ----------------------------
+          -- Safe_Value_Conversions --
+          ----------------------------
+ 
+          function Safe_Value_Conversions return Boolean is
+             PP : Node_Id := P;
+ 
+          begin
+             loop
+                if Nkind (PP) in N_Selected_Component | N_Indexed_Component then
+                   PP := Prefix (PP);
+ 
+                elsif Comes_From_Source (PP)
+                  and then Nkind (PP) in N_Type_Conversion
+                                       | N_Unchecked_Type_Conversion
+                  and then Is_Array_Type (Etype (PP))
+                then
+                   return False;
+ 
+                elsif Comes_From_Source (PP)
+                  and then Nkind (PP) = N_Qualified_Expression
+                  and then Is_Array_Type (Etype (PP))
+                  and then Nkind (Original_Node (Expression (PP))) in
+                             N_Aggregate | N_Extension_Aggregate
+                then
+                   return False;
+ 
+                else
+                   exit;
+                end if;
+             end loop;
+ 
+             return True;
+          end Safe_Value_Conversions;
+ 
+       --  Start of processing for Prefix_With_Safe_Accessibility_Level
+ 
+       begin
+          --  No check required for unchecked and unrestricted access
+ 
+          if Attr_Id = Attribute_Unchecked_Access
+            or else Attr_Id = Attribute_Unrestricted_Access
+          then
+             return True;
+ 
+          --  Check value conversions
+ 
+          elsif Ekind (Btyp) = E_General_Access_Type
+            and then not Safe_Value_Conversions
+          then
+             return False;
+          end if;
+ 
+          return True;
+       end Prefix_With_Safe_Accessibility_Level;
+ 
     --  Start of processing for Resolve_Attribute
  
     begin
*************** package body Sem_Attr is
*** 10530,10548 ****
                 end;
              end if;
  
-             --  The following comes from a query concerning improper use of
-             --  universal_access in equality tests involving anonymous access
-             --  types. Another good reason for 'Ref, but for now disable the
-             --  test, which breaks several filed tests???
- 
-             if Ekind (Typ) = E_Anonymous_Access_Type
-               and then Nkind_In (Parent (N), N_Op_Eq, N_Op_Ne)
-               and then False
-             then
-                Error_Msg_N ("need unique type to resolve 'Access", N);
-                Error_Msg_N ("\qualify attribute with some access type", N);
-             end if;
- 
              --  Case where prefix is an entity name
  
              if Is_Entity_Name (P) then
--- 10777,10782 ----
*************** package body Sem_Attr is
*** 10637,10646 ****
                 --  also be accessibility checks on those, this is where the
                 --  checks can eventually be centralized ???
  
!                if Ekind_In (Btyp, 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
  
--- 10871,10880 ----
                 --  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
  
*************** package body Sem_Attr is
*** 10678,10683 ****
--- 10912,10918 ----
  
                       if not Is_Itype (Btyp)
                         and then not Has_Convention_Pragma (Btyp)
+                        and then Convention (Entity (P)) /= Convention_Intrinsic
                       then
                          Error_Msg_FE
                            ("\probable missing pragma Convention for &",
*************** package body Sem_Attr is
*** 10860,10866 ****
                 end if;
  
                 Resolve (Prefix (P));
!                Generate_Reference (Entity (Selector_Name (P)), P);
  
              --  Implement check implied by 3.10.2 (18.1/2) : F.all'access is
              --  statically illegal if F is an anonymous access to subprogram.
--- 11095,11123 ----
                 end if;
  
                 Resolve (Prefix (P));
! 
!                if not Is_Overloaded (P) then
!                   Generate_Reference (Entity (Selector_Name (P)), P);
! 
!                else
!                   Get_First_Interp (P, Index, It);
!                   while Present (It.Nam) loop
!                      if Type_Conformant (Designated_Type (Typ), It.Nam) then
!                         Set_Entity (Selector_Name (P), It.Nam);
! 
!                         --  The prefix is definitely NOT overloaded anymore at
!                         --  this point, so we reset the Is_Overloaded flag to
!                         --  avoid any confusion when reanalyzing the node.
! 
!                         Set_Is_Overloaded (P, False);
!                         Set_Is_Overloaded (N, False);
!                         Generate_Reference (Entity (Selector_Name (P)), P);
!                         exit;
!                      end if;
! 
!                      Get_Next_Interp (Index, It);
!                   end loop;
!                end if;
  
              --  Implement check implied by 3.10.2 (18.1/2) : F.all'access is
              --  statically illegal if F is an anonymous access to subprogram.
*************** package body Sem_Attr is
*** 10970,10978 ****
  
                              or else Nkind (Associated_Node_For_Itype (Btyp)) =
                                                          N_Object_Declaration)
-                  and then
-                    Object_Access_Level (P) > Deepest_Type_Access_Level (Btyp)
                   and then Attr_Id = Attribute_Access
                 then
                    --  In an instance, this is a runtime check, but one we know
                    --  will fail, so generate an appropriate warning. As usual,
--- 11227,11245 ----
  
                              or else Nkind (Associated_Node_For_Itype (Btyp)) =
                                                          N_Object_Declaration)
                   and then Attr_Id = Attribute_Access
+ 
+                  --  Verify that static checking is OK (namely that we aren't
+                  --  in a specific context requiring dynamic checks on
+                  --  expicitly aliased parameters), and then check the level.
+ 
+                  --  Otherwise a check will be generated later when the return
+                  --  statement gets expanded.
+ 
+                  and then not Is_Special_Aliased_Formal_Access (N)
+                  and then
+                    Static_Accessibility_Level (N, Zero_On_Dynamic_Level) >
+                      Deepest_Type_Access_Level (Btyp)
                 then
                    --  In an instance, this is a runtime check, but one we know
                    --  will fail, so generate an appropriate warning. As usual,
*************** package body Sem_Attr is
*** 11115,11130 ****
  
                 if Attr_Id /= Attribute_Unchecked_Access
                   and then Ekind (Btyp) = E_General_Access_Type
                   and then
!                    Object_Access_Level (P) > Deepest_Type_Access_Level (Btyp)
                 then
                    Accessibility_Message;
                    return;
                 end if;
              end if;
  
!             if Ekind_In (Btyp, 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)))
--- 11382,11409 ----
  
                 if Attr_Id /= Attribute_Unchecked_Access
                   and then Ekind (Btyp) = E_General_Access_Type
+ 
+                  --  Call Accessibility_Level directly to avoid returning zero
+                  --  on cases where the prefix is an explicitly aliased
+                  --  parameter in a return statement, instead of using the
+                  --  normal Static_Accessibility_Level function.
+ 
+                  --  Shouldn't this be handled somehow in
+                  --  Static_Accessibility_Level ???
+ 
+                  and then Nkind (Accessibility_Level (P, Dynamic_Level))
+                             = N_Integer_Literal
                   and then
!                    Intval (Accessibility_Level (P, Dynamic_Level))
!                      > Deepest_Type_Access_Level (Btyp)
                 then
                    Accessibility_Message;
                    return;
                 end if;
              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)))
*************** package body Sem_Attr is
*** 11137,11143 ****
                 --  anonymous_access_to_protected, there are no accessibility
                 --  checks either. Omit check entirely for Unrestricted_Access.
  
!                elsif Object_Access_Level (P) > Deepest_Type_Access_Level (Btyp)
                   and then Comes_From_Source (N)
                   and then Ekind (Btyp) = E_Access_Protected_Subprogram_Type
                   and then Attr_Id /= Attribute_Unrestricted_Access
--- 11416,11423 ----
                 --  anonymous_access_to_protected, there are no accessibility
                 --  checks either. Omit check entirely for Unrestricted_Access.
  
!                elsif Static_Accessibility_Level (P, Zero_On_Dynamic_Level)
!                        > Deepest_Type_Access_Level (Btyp)
                   and then Comes_From_Source (N)
                   and then Ekind (Btyp) = E_Access_Protected_Subprogram_Type
                   and then Attr_Id /= Attribute_Unrestricted_Access
*************** package body Sem_Attr is
*** 11161,11168 ****
                    Check_Internal_Protected_Use (N, Entity (P));
                 end if;
  
!             elsif Ekind_In (Btyp, E_Access_Subprogram_Type,
!                                   E_Anonymous_Access_Subprogram_Type)
                and then Ekind (Etype (N)) = E_Access_Protected_Subprogram_Type
              then
                 Error_Msg_F ("context requires a non-protected subprogram", P);
--- 11441,11448 ----
                    Check_Internal_Protected_Use (N, Entity (P));
                 end if;
  
!             elsif Ekind (Btyp) in E_Access_Subprogram_Type
!                                 | E_Anonymous_Access_Subprogram_Type
                and then Ekind (Etype (N)) = E_Access_Protected_Subprogram_Type
              then
                 Error_Msg_F ("context requires a non-protected subprogram", P);
*************** package body Sem_Attr is
*** 11185,11191 ****
  
              Set_Etype (N, Btyp);
  
!             --  Check for incorrect atomic/volatile reference (RM C.6(12))
  
              if Attr_Id /= Attribute_Unrestricted_Access then
                 if Is_Atomic_Object (P)
--- 11465,11471 ----
  
              Set_Etype (N, Btyp);
  
!             --  Check for incorrect atomic/volatile/VFA reference (RM C.6(12))
  
              if Attr_Id /= Attribute_Unrestricted_Access then
                 if Is_Atomic_Object (P)
*************** package body Sem_Attr is
*** 11201,11206 ****
--- 11481,11507 ----
                    Error_Msg_F
                      ("access to volatile object cannot yield access-to-" &
                       "non-volatile type", P);
+ 
+                elsif Is_Volatile_Full_Access_Object (P)
+                  and then not Is_Volatile_Full_Access (Designated_Type (Typ))
+                then
+                   Error_Msg_F
+                     ("access to full access object cannot yield access-to-" &
+                      "non-full-access type", P);
+                end if;
+ 
+                --  Check for nonatomic subcomponent of a full access object
+                --  in Ada 2020 (RM C.6 (12)).
+ 
+                if Ada_Version >= Ada_2020
+                  and then Is_Subcomponent_Of_Full_Access_Object (P)
+                  and then not Is_Atomic_Object (P)
+                then
+                   Error_Msg_NE
+                     ("cannot have access attribute with prefix &", N, P);
+                   Error_Msg_N
+                     ("\nonatomic subcomponent of full access object "
+                      & "(RM C.6(12))", N);
                 end if;
              end if;
  
*************** package body Sem_Attr is
*** 11232,11237 ****
--- 11533,11539 ----
                 --  will be reported when resolving the call.
  
                 if Attr_Id /= Attribute_Unrestricted_Access then
+                   Error_Msg_Name_1 := Aname;
                    Error_Msg_N ("prefix of % attribute must be aliased", P);
  
                 --  Check for unrestricted access where expected type is a thin
*************** package body Sem_Attr is
*** 11256,11261 ****
--- 11558,11572 ----
                 end if;
              end if;
  
+             --  Check that the prefix does not have a value conversion of an
+             --  array type since a value conversion is like an aggregate with
+             --  respect to determining accessibility level (RM 3.10.2).
+ 
+             if not Prefix_With_Safe_Accessibility_Level then
+                Accessibility_Message;
+                return;
+             end if;
+ 
              --  Mark that address of entity is taken in case of
              --  'Unrestricted_Access or in case of a subprogram.
  
*************** package body Sem_Attr is
*** 11294,11300 ****
                      and then Comes_From_Source (Subp_Id)
                      and then Comes_From_Source (N)
                      and then In_Open_Scopes (Scop)
!                     and then Ekind_In (Scop, E_Block, E_Procedure, E_Function)
                      and then not Has_Completion (Subp_Id)
                      and then No (Elaboration_Entity (Subp_Id))
                      and then Nkind (Subp_Decl) = N_Subprogram_Declaration
--- 11605,11611 ----
                      and then Comes_From_Source (Subp_Id)
                      and then Comes_From_Source (N)
                      and then In_Open_Scopes (Scop)
!                     and then Ekind (Scop) in E_Block | E_Procedure | E_Function
                      and then not Has_Completion (Subp_Id)
                      and then No (Elaboration_Entity (Subp_Id))
                      and then Nkind (Subp_Decl) = N_Subprogram_Declaration
*************** package body Sem_Attr is
*** 11542,11548 ****
                    Fam  : constant Entity_Id := Entity (Prefix (P));
                 begin
                    Resolve (Indx, Entry_Index_Type (Fam));
!                   Apply_Range_Check (Indx, Entry_Index_Type (Fam));
                 end;
              end if;
  
--- 11853,11859 ----
                    Fam  : constant Entity_Id := Entity (Prefix (P));
                 begin
                    Resolve (Indx, Entry_Index_Type (Fam));
!                   Apply_Scalar_Range_Check (Indx, Entry_Index_Type (Fam));
                 end;
              end if;
  
*************** package body Sem_Attr is
*** 11733,11738 ****
--- 12044,12054 ----
                         or else Present (Next_Formal (F2))
                       then
                          return False;
+ 
+                      elsif Ekind (Op) = E_Procedure then
+                         return Ekind (F1) = E_In_Out_Parameter
+                           and then Covers (Typ, Etype (F1));
+ 
                       else
                          return
                            (Ekind (Op) = E_Operator
*************** package body Sem_Attr is
*** 11756,11768 ****
                       Get_Next_Interp (Index, It);
                    end loop;
  
                 elsif Proper_Op (Entity (E1)) then
                    Op := Entity (E1);
                    Set_Etype (N, Typ);
                 end if;
  
                 if No (Op) then
!                   Error_Msg_N ("No visible function for reduction", E1);
                 end if;
              end;
  
--- 12072,12090 ----
                       Get_Next_Interp (Index, It);
                    end loop;
  
+                elsif Nkind (E1) = N_Attribute_Reference
+                  and then (Attribute_Name (E1) = Name_Max
+                    or else Attribute_Name (E1) = Name_Min)
+                then
+                   Op := E1;
+ 
                 elsif Proper_Op (Entity (E1)) then
                    Op := Entity (E1);
                    Set_Etype (N, Typ);
                 end if;
  
                 if No (Op) then
!                   Error_Msg_N ("No visible subprogram for reduction", E1);
                 end if;
              end;
  
*************** package body Sem_Attr is
*** 11821,11846 ****
                    Expr := Expression (Assoc);
                    Resolve (Expr, Component_Type (Typ));
  
-                   --  For scalar array components set Do_Range_Check when
-                   --  needed. Constraint checking on non-scalar components
-                   --  is done in Aggregate_Constraint_Checks, but only if
-                   --  full analysis is enabled. These flags are not set in
-                   --  the front-end in GnatProve mode.
- 
-                   if Is_Scalar_Type (Component_Type (Typ))
-                     and then not Is_OK_Static_Expression (Expr)
-                     and then not Range_Checks_Suppressed (Component_Type (Typ))
-                   then
-                      if Is_Entity_Name (Expr)
-                        and then Etype (Expr) = Component_Type (Typ)
-                      then
-                         null;
- 
-                      else
-                         Set_Do_Range_Check (Expr);
-                      end if;
-                   end if;
- 
                    --  The choices in the association are static constants,
                    --  or static aggregates each of whose components belongs
                    --  to the proper index type. However, they must also
--- 12143,12148 ----
*************** package body Sem_Attr is
*** 11863,11877 ****
  
                          if Nkind (C) /= N_Aggregate then
                             Analyze_And_Resolve (C, Etype (Indx));
-                            Apply_Constraint_Check (C, Etype (Indx));
-                            Check_Non_Static_Context (C);
- 
                          else
                             C_E := First (Expressions (C));
                             while Present (C_E) loop
                                Analyze_And_Resolve (C_E, Etype (Indx));
-                               Apply_Constraint_Check (C_E, Etype (Indx));
-                               Check_Non_Static_Context (C_E);
  
                                Next (C_E);
                                Next_Index (Indx);
--- 12165,12174 ----
*************** package body Sem_Attr is
*** 11898,11911 ****
                      and then not Error_Posted (Comp)
                    then
                       Resolve (Expr, Etype (Entity (Comp)));
- 
-                      if Is_Scalar_Type (Etype (Entity (Comp)))
-                        and then not Is_OK_Static_Expression (Expr)
-                        and then not Range_Checks_Suppressed
-                                       (Etype (Entity (Comp)))
-                      then
-                         Set_Do_Range_Check (Expr);
-                      end if;
                    end if;
  
                    Next (Assoc);
--- 12195,12200 ----
*************** package body Sem_Attr is
*** 12052,12110 ****
        end if;
     end Set_Boolean_Result;
  
-    -------------------------------
-    -- Statically_Denotes_Object --
-    -------------------------------
- 
-    function Statically_Denotes_Object (N : Node_Id) return Boolean is
-       Indx : Node_Id;
- 
-    begin
-       if Is_Entity_Name (N) then
-          return True;
- 
-       elsif Nkind (N) = N_Selected_Component
-         and then Statically_Denotes_Object (Prefix (N))
-         and then Present (Entity (Selector_Name (N)))
-       then
-          declare
-             Sel_Id    : constant Entity_Id := Entity (Selector_Name (N));
-             Comp_Decl : constant Node_Id   := Parent (Sel_Id);
- 
-          begin
-             if Depends_On_Discriminant (Sel_Id) then
-                return False;
- 
-             elsif Nkind (Parent (Parent (Comp_Decl))) = N_Variant then
-                return False;
- 
-             else
-                return True;
-             end if;
-          end;
- 
-       elsif Nkind (N) = N_Indexed_Component
-         and then Statically_Denotes_Object (Prefix (N))
-         and then Is_Constrained (Etype (Prefix (N)))
-       then
-          Indx := First (Expressions (N));
-          while Present (Indx) loop
-             if not Compile_Time_Known_Value (Indx)
-               or else Do_Range_Check (Indx)
-             then
-                return False;
-             end if;
- 
-             Next (Indx);
-          end loop;
- 
-          return True;
- 
-       else
-          return False;
-       end if;
-    end Statically_Denotes_Object;
- 
     --------------------------------
     -- Stream_Attribute_Available --
     --------------------------------
--- 12341,12346 ----
*************** package body Sem_Attr is
*** 12163,12173 ****
        --  applies to an ancestor type.
  
        while Etype (Etyp) /= Etyp loop
!          Etyp := Etype (Etyp);
  
!          if Has_Stream_Attribute_Definition (Etyp, Nam) then
!             return True;
!          end if;
        end loop;
  
        if Ada_Version < Ada_2005 then
--- 12399,12415 ----
        --  applies to an ancestor type.
  
        while Etype (Etyp) /= Etyp loop
!          declare
!             Derived_Type : constant Entity_Id := Etyp;
!          begin
!             Etyp := Etype (Etyp);
  
!             if Has_Stream_Attribute_Definition (Etyp, Nam) then
!                if not Derivation_Too_Early_To_Inherit (Derived_Type, Nam) then
!                   return True;
!                end if;
!             end if;
!          end;
        end loop;
  
        if Ada_Version < Ada_2005 then
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_attr.ads gcc-11.1.0/gcc/ada/sem_attr.ads
*** gcc-10.3.0/gcc/ada/sem_attr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_attr.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Attr is
*** 212,247 ****
        --  value indicating whether or not the body of the designated library
        --  unit has been elaborated yet.
  
-       --------------
-       -- Enum_Rep --
-       --------------
- 
-       Attribute_Enum_Rep => True,
-       --  For every enumeration subtype S, S'Enum_Rep denotes a function
-       --  with the following specification:
-       --
-       --    function S'Enum_Rep (Arg : S'Base) return universal_integer;
-       --
-       --  The function returns the representation value for the given
-       --  enumeration value. This will be equal to the 'Pos value in the
-       --  absence of an enumeration representation clause. This is a static
-       --  attribute (i.e. the result is static if the argument is static).
- 
-       --------------
-       -- Enum_Val --
-       --------------
- 
-       Attribute_Enum_Val => True,
-       --  For every enumeration subtype S, S'Enum_Val denotes a function with
-       --  the following specification:
-       --
-       --    function S'Enum_Val (Arg : universal_integer) return S'Base;
-       --
-       --  This function performs the inverse transformation to Enum_Rep. Given
-       --  a representation value for the type, it returns the corresponding
-       --  enumeration value. Constraint_Error is raised if no value of the
-       --  enumeration type corresponds to the given integer value.
- 
        -----------------------
        -- Finalization_Size --
        -----------------------
--- 212,217 ----
*************** package Sem_Attr is
*** 341,346 ****
--- 311,326 ----
        --  This attribute is identical to the Object_Size attribute. It is
        --  provided for compatibility with the DEC attribute of this name.
  
+       ----------------------
+       -- Max_Integer_Size --
+       ----------------------
+ 
+       Attribute_Max_Integer_Size => True,
+       --  Standard'Max_Integer_Size (Standard is the only permissible prefix)
+       --  provides values System.Min_Int and System.Max_Int, and is intended
+       --  primarily for constructing these definitions in package System. This
+       --  is a static attribute.
+ 
        -----------------------
        -- Maximum_Alignment --
        -----------------------
*************** package Sem_Attr is
*** 427,432 ****
--- 407,419 ----
        --  as Range applied to the array itself. The result is of type universal
        --  integer.
  
+       ------------
+       -- Reduce --
+       ------------
+ 
+       Attribute_Reduce => True,
+       --  See AI12-0262-1
+ 
        ---------
        -- Ref --
        ---------
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_aux.adb gcc-11.1.0/gcc/ada/sem_aux.adb
*** gcc-10.3.0/gcc/ada/sem_aux.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_aux.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 18,30 ****
  -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
  -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
- -- As a special exception,  if other files  instantiate  generics from this --
- -- unit, or you link  this unit with other files  to produce an executable, --
- -- this  unit  does not  by itself cause  the resulting  executable  to  be --
- -- covered  by the  GNU  General  Public  License.  This exception does not --
- -- however invalidate  any other reasons why  the executable file  might be --
- -- covered by the  GNU Public License.                                      --
- --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  --                                                                          --
--- 18,23 ----
***************
*** 32,37 ****
--- 25,32 ----
  
  with Atree;  use Atree;
  with Einfo;  use Einfo;
+ with Nlists; use Nlists;
+ with Sinfo;  use Sinfo;
  with Snames; use Snames;
  with Stand;  use Stand;
  with Uintp;  use Uintp;
*************** package body Sem_Aux is
*** 162,167 ****
--- 157,164 ----
           return Standard_Long_Unsigned;
        elsif Siz = Esize (Standard_Long_Long_Integer) then
           return Standard_Long_Long_Unsigned;
+       elsif Siz = Esize (Standard_Long_Long_Long_Integer) then
+          return Standard_Long_Long_Long_Unsigned;
        else
           raise Program_Error;
        end if;
*************** package body Sem_Aux is
*** 234,240 ****
        --  either because the tag must be ahead of them.
  
        if Chars (Ent) = Name_uTag then
!          Ent := Next_Entity (Ent);
        end if;
  
        --  Skip all hidden stored discriminants if any
--- 231,237 ----
        --  either because the tag must be ahead of them.
  
        if Chars (Ent) = Name_uTag then
!          Next_Entity (Ent);
        end if;
  
        --  Skip all hidden stored discriminants if any
*************** package body Sem_Aux is
*** 243,249 ****
           exit when Ekind (Ent) = E_Discriminant
             and then not Is_Completely_Hidden (Ent);
  
!          Ent := Next_Entity (Ent);
        end loop;
  
        --  Call may be on a private type with unknown discriminants, in which
--- 240,246 ----
           exit when Ekind (Ent) = E_Discriminant
             and then not Is_Completely_Hidden (Ent);
  
!          Next_Entity (Ent);
        end loop;
  
        --  Call may be on a private type with unknown discriminants, in which
*************** package body Sem_Aux is
*** 297,303 ****
                 return True;
              end if;
  
!             Ent := Next_Entity (Ent);
           end loop;
  
           return False;
--- 294,300 ----
                 return True;
              end if;
  
!             Next_Entity (Ent);
           end loop;
  
           return False;
*************** package body Sem_Aux is
*** 313,326 ****
        Ent := First_Entity (Typ);
  
        if Chars (Ent) = Name_uTag then
!          Ent := Next_Entity (Ent);
        end if;
  
        if Has_Completely_Hidden_Discriminant (Ent) then
           while Present (Ent) loop
              exit when Ekind (Ent) = E_Discriminant
                and then Is_Completely_Hidden (Ent);
!             Ent := Next_Entity (Ent);
           end loop;
        end if;
  
--- 310,323 ----
        Ent := First_Entity (Typ);
  
        if Chars (Ent) = Name_uTag then
!          Next_Entity (Ent);
        end if;
  
        if Has_Completely_Hidden_Discriminant (Ent) then
           while Present (Ent) loop
              exit when Ekind (Ent) = E_Discriminant
                and then Is_Completely_Hidden (Ent);
!             Next_Entity (Ent);
           end loop;
        end if;
  
*************** package body Sem_Aux is
*** 344,351 ****
        --  predefined integer types. If the type is formal, it is also a first
        --  subtype, and its base type has no freeze node. On the other hand, a
        --  subtype of a generic formal is not its own first subtype. Its base
!       --  type, if anonymous, is attached to the formal type decl. from which
!       --  the first subtype is obtained.
  
        if No (F) then
           if B = Base_Type (Standard_Integer) then
--- 341,348 ----
        --  predefined integer types. If the type is formal, it is also a first
        --  subtype, and its base type has no freeze node. On the other hand, a
        --  subtype of a generic formal is not its own first subtype. Its base
!       --  type, if anonymous, is attached to the formal type declaration from
!       --  which the first subtype is obtained.
  
        if No (F) then
           if B = Base_Type (Standard_Integer) then
*************** package body Sem_Aux is
*** 363,368 ****
--- 360,368 ----
           elsif B = Base_Type (Standard_Long_Long_Integer) then
              return Standard_Long_Long_Integer;
  
+          elsif B = Base_Type (Standard_Long_Long_Long_Integer) then
+             return Standard_Long_Long_Long_Integer;
+ 
           elsif Is_Generic_Type (Typ) then
              if Present (Parent (B)) then
                 return Defining_Identifier (Parent (B));
*************** package body Sem_Aux is
*** 423,429 ****
              return Comp;
           end if;
  
!          Comp := Next_Entity (Comp);
        end loop;
  
        --  No tag component found
--- 423,429 ----
              return Comp;
           end if;
  
!          Next_Entity (Comp);
        end loop;
  
        --  No tag component found
*************** package body Sem_Aux is
*** 431,464 ****
        return Empty;
     end First_Tag_Component;
  
-    ---------------------
-    -- Get_Binary_Nkind --
-    ---------------------
- 
-    function Get_Binary_Nkind (Op : Entity_Id) return Node_Kind is
-    begin
-       case Chars (Op) is
-          when Name_Op_Add      => return N_Op_Add;
-          when Name_Op_Concat   => return N_Op_Concat;
-          when Name_Op_Expon    => return N_Op_Expon;
-          when Name_Op_Subtract => return N_Op_Subtract;
-          when Name_Op_Mod      => return N_Op_Mod;
-          when Name_Op_Multiply => return N_Op_Multiply;
-          when Name_Op_Divide   => return N_Op_Divide;
-          when Name_Op_Rem      => return N_Op_Rem;
-          when Name_Op_And      => return N_Op_And;
-          when Name_Op_Eq       => return N_Op_Eq;
-          when Name_Op_Ge       => return N_Op_Ge;
-          when Name_Op_Gt       => return N_Op_Gt;
-          when Name_Op_Le       => return N_Op_Le;
-          when Name_Op_Lt       => return N_Op_Lt;
-          when Name_Op_Ne       => return N_Op_Ne;
-          when Name_Op_Or       => return N_Op_Or;
-          when Name_Op_Xor      => return N_Op_Xor;
-          when others           => raise Program_Error;
-       end case;
-    end Get_Binary_Nkind;
- 
     -----------------------
     -- Get_Called_Entity --
     -----------------------
--- 431,436 ----
*************** package body Sem_Aux is
*** 485,503 ****
        return Id;
     end Get_Called_Entity;
  
-    -------------------
-    -- Get_Low_Bound --
-    -------------------
- 
-    function Get_Low_Bound (E : Entity_Id) return Node_Id is
-    begin
-       if Ekind (E) = E_String_Literal_Subtype then
-          return String_Literal_Low_Bound (E);
-       else
-          return Type_Low_Bound (E);
-       end if;
-    end Get_Low_Bound;
- 
     ------------------
     -- Get_Rep_Item --
     ------------------
--- 457,462 ----
*************** package body Sem_Aux is
*** 670,690 ****
        return Empty;
     end Get_Rep_Pragma;
  
-    ---------------------
-    -- Get_Unary_Nkind --
-    ---------------------
- 
-    function Get_Unary_Nkind (Op : Entity_Id) return Node_Kind is
-    begin
-       case Chars (Op) is
-          when Name_Op_Abs      => return N_Op_Abs;
-          when Name_Op_Subtract => return N_Op_Minus;
-          when Name_Op_Not      => return N_Op_Not;
-          when Name_Op_Add      => return N_Op_Plus;
-          when others           => raise Program_Error;
-       end case;
-    end Get_Unary_Nkind;
- 
     ---------------------------------
     -- Has_External_Tag_Rep_Clause --
     ---------------------------------
--- 629,634 ----
*************** package body Sem_Aux is
*** 718,746 ****
        return Present (Get_Rep_Item (E, Nam1, Nam2, Check_Parents));
     end Has_Rep_Item;
  
-    function Has_Rep_Item (E : Entity_Id; N : Node_Id) return Boolean is
-       Item : Node_Id;
- 
-    begin
-       pragma Assert
-         (Nkind_In (N, N_Aspect_Specification,
-                       N_Attribute_Definition_Clause,
-                       N_Enumeration_Representation_Clause,
-                       N_Pragma,
-                       N_Record_Representation_Clause));
- 
-       Item := First_Rep_Item (E);
-       while Present (Item) loop
-          if Item = N then
-             return True;
-          end if;
- 
-          Item := Next_Rep_Item (Item);
-       end loop;
- 
-       return False;
-    end Has_Rep_Item;
- 
     --------------------
     -- Has_Rep_Pragma --
     --------------------
--- 662,667 ----
*************** package body Sem_Aux is
*** 889,901 ****
  
     function Is_Body (N : Node_Id) return Boolean is
     begin
!       return
!         Nkind (N) in N_Body_Stub
!           or else Nkind_In (N, N_Entry_Body,
!                                N_Package_Body,
!                                N_Protected_Body,
!                                N_Subprogram_Body,
!                                N_Task_Body);
     end Is_Body;
  
     ---------------------
--- 810,818 ----
  
     function Is_Body (N : Node_Id) return Boolean is
     begin
!       return Nkind (N) in
!         N_Body_Stub       | N_Entry_Body | N_Package_Body | N_Protected_Body |
!         N_Subprogram_Body | N_Task_Body;
     end Is_Body;
  
     ---------------------
*************** package body Sem_Aux is
*** 984,990 ****
                       return True;
                    end if;
  
!                   C := Next_Component (C);
                 end loop;
              end;
  
--- 901,907 ----
                       return True;
                    end if;
  
!                   Next_Component (C);
                 end loop;
              end;
  
*************** package body Sem_Aux is
*** 1084,1091 ****
           Kind := Nkind (Original_Node (Parent (E)));
  
           return
!            Nkind_In (Kind, N_Formal_Object_Declaration,
!                            N_Formal_Type_Declaration)
               or else Is_Formal_Subprogram (E)
               or else
                 (Ekind (E) = E_Package
--- 1001,1007 ----
           Kind := Nkind (Original_Node (Parent (E)));
  
           return
!            Kind in N_Formal_Object_Declaration | N_Formal_Type_Declaration
               or else Is_Formal_Subprogram (E)
               or else
                 (Ekind (E) = E_Package
*************** package body Sem_Aux is
*** 1216,1222 ****
                       return True;
                    end if;
  
!                   C := Next_Component (C);
                 end loop;
              end;
  
--- 1132,1138 ----
                       return True;
                    end if;
  
!                   Next_Component (C);
                 end loop;
              end;
  
*************** package body Sem_Aux is
*** 1315,1321 ****
                       return True;
                    end if;
  
!                   C := Next_Component (C);
                 end loop;
              end;
  
--- 1231,1237 ----
                       return True;
                    end if;
  
!                   Next_Component (C);
                 end loop;
              end;
  
*************** package body Sem_Aux is
*** 1330,1347 ****
        end if;
     end Is_Limited_View;
  
!    ----------------------------
!    -- Is_Protected_Operation --
!    ----------------------------
  
!    function Is_Protected_Operation (E : Entity_Id) return Boolean is
     begin
!       return
!         Is_Entry (E)
!           or else (Is_Subprogram (E)
!                     and then Nkind (Parent (Unit_Declaration_Node (E))) =
!                                N_Protected_Definition);
!    end Is_Protected_Operation;
  
     ----------------------
     -- Nearest_Ancestor --
--- 1246,1259 ----
        end if;
     end Is_Limited_View;
  
!    -------------------------------
!    -- Is_Record_Or_Limited_Type --
!    -------------------------------
  
!    function Is_Record_Or_Limited_Type (Typ : Entity_Id) return Boolean is
     begin
!       return Is_Record_Type (Typ) or else Is_Limited_Type (Typ);
!    end Is_Record_Or_Limited_Type;
  
     ----------------------
     -- Nearest_Ancestor --
*************** package body Sem_Aux is
*** 1379,1384 ****
--- 1291,1308 ----
              end if;
           end;
  
+       --  If this is a concurrent declaration with a nonempty interface list,
+       --  get the first progenitor. Account for case of a record type created
+       --  for a concurrent type (which is the only case that seems to occur
+       --  in practice).
+ 
+       elsif Nkind (D) = N_Full_Type_Declaration
+         and then (Is_Concurrent_Type (Defining_Identifier (D))
+                    or else Is_Concurrent_Record_Type (Defining_Identifier (D)))
+         and then Is_Non_Empty_List (Interface_List (Type_Definition (D)))
+       then
+          return Entity (First (Interface_List (Type_Definition (D))));
+ 
        --  If derived type and private type, get the full view to find who we
        --  are derived from.
  
*************** package body Sem_Aux is
*** 1427,1433 ****
              return Comp;
           end if;
  
!          Comp := Next_Entity (Comp);
        end loop;
  
        --  No tag component found
--- 1351,1357 ----
              return Comp;
           end if;
  
!          Next_Entity (Comp);
        end loop;
  
        --  No tag component found
*************** package body Sem_Aux is
*** 1435,1467 ****
        return Empty;
     end Next_Tag_Component;
  
-    -----------------------
-    -- Number_Components --
-    -----------------------
- 
-    function Number_Components (Typ : Entity_Id) return Nat is
-       N    : Nat := 0;
-       Comp : Entity_Id;
- 
-    begin
-       --  We do not call Einfo.First_Component_Or_Discriminant, as this
-       --  function does not skip completely hidden discriminants, which we
-       --  want to skip here.
- 
-       if Has_Discriminants (Typ) then
-          Comp := First_Discriminant (Typ);
-       else
-          Comp := First_Component (Typ);
-       end if;
- 
-       while Present (Comp) loop
-          N := N + 1;
-          Comp := Next_Component_Or_Discriminant (Comp);
-       end loop;
- 
-       return N;
-    end Number_Components;
- 
     --------------------------
     -- Number_Discriminants --
     --------------------------
--- 1359,1364 ----
*************** package body Sem_Aux is
*** 1473,1479 ****
     begin
        while Present (Discr) loop
           N := N + 1;
!          Discr := Next_Discriminant (Discr);
        end loop;
  
        return N;
--- 1370,1376 ----
     begin
        while Present (Discr) loop
           N := N + 1;
!          Next_Discriminant (Discr);
        end loop;
  
        return N;
*************** package body Sem_Aux is
*** 1500,1537 ****
     end Object_Type_Has_Constrained_Partial_View;
  
     ------------------
-    -- Package_Body --
-    ------------------
- 
-    function Package_Body (E : Entity_Id) return Node_Id is
-       N : Node_Id;
- 
-    begin
-       if Ekind (E) = E_Package_Body then
-          N := Parent (E);
- 
-          if Nkind (N) = N_Defining_Program_Unit_Name then
-             N := Parent (N);
-          end if;
- 
-       else
-          N := Package_Spec (E);
- 
-          if Present (Corresponding_Body (N)) then
-             N := Parent (Corresponding_Body (N));
- 
-             if Nkind (N) = N_Defining_Program_Unit_Name then
-                N := Parent (N);
-             end if;
-          else
-             N := Empty;
-          end if;
-       end if;
- 
-       return N;
-    end Package_Body;
- 
-    ------------------
     -- Package_Spec --
     ------------------
  
--- 1397,1402 ----
*************** package body Sem_Aux is
*** 1650,1673 ****
        return N;
     end Subprogram_Specification;
  
-    ---------------
-    -- Tree_Read --
-    ---------------
- 
-    procedure Tree_Read is
-    begin
-       Obsolescent_Warnings.Tree_Read;
-    end Tree_Read;
- 
-    ----------------
-    -- Tree_Write --
-    ----------------
- 
-    procedure Tree_Write is
-    begin
-       Obsolescent_Warnings.Tree_Write;
-    end Tree_Write;
- 
     --------------------
     -- Ultimate_Alias --
     --------------------
--- 1515,1520 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_aux.ads gcc-11.1.0/gcc/ada/sem_aux.ads
*** gcc-10.3.0/gcc/ada/sem_aux.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_aux.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 18,37 ****
  -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
  -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
- -- As a special exception,  if other files  instantiate  generics from this --
- -- unit, or you link  this unit with other files  to produce an executable, --
- -- this  unit  does not  by itself cause  the resulting  executable  to  be --
- -- covered  by the  GNU  General  Public  License.  This exception does not --
- -- however invalidate  any other reasons why  the executable file  might be --
- -- covered by the  GNU Public License.                                      --
- --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  Package containing utility procedures used throughout the compiler,
! --  and also by ASIS so dependencies are limited to ASIS included packages.
  
  --  Historical note. Many of the routines here were originally in Einfo, but
  --  Einfo is supposed to be a relatively low level package dealing with the
--- 18,29 ----
  -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
  -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  Package containing utility procedures used throughout the compiler.
  
  --  Historical note. Many of the routines here were originally in Einfo, but
  --  Einfo is supposed to be a relatively low level package dealing with the
*************** with Alloc;
*** 42,48 ****
  with Namet; use Namet;
  with Table;
  with Types; use Types;
- with Sinfo; use Sinfo;
  
  package Sem_Aux is
  
--- 34,39 ----
*************** package Sem_Aux is
*** 71,86 ****
  
     procedure Initialize;
     --  Called at the start of compilation of each new main source file to
!    --  initialize the allocation of the Obsolescent_Warnings table. Note that
!    --  Initialize must not be called if Tree_Read is used.
! 
!    procedure Tree_Read;
!    --  Initializes Obsolescent_Warnings table from current tree file using the
!    --  relevant Table.Tree_Read routine.
! 
!    procedure Tree_Write;
!    --  Writes out Obsolescent_Warnings table to current tree file using the
!    --  relevant Table.Tree_Write routine.
  
     -----------------
     -- Subprograms --
--- 62,68 ----
  
     procedure Initialize;
     --  Called at the start of compilation of each new main source file to
!    --  initialize the allocation of the Obsolescent_Warnings table.
  
     -----------------
     -- Subprograms --
*************** package Sem_Aux is
*** 165,189 ****
     --  Typ must be a tagged record type. This function returns the Entity for
     --  the first _Tag field in the record type.
  
-    function Get_Binary_Nkind (Op : Entity_Id) return Node_Kind;
-    --  Op must be an entity with an Ekind of E_Operator. This function returns
-    --  the Nkind value that would be used to construct a binary operator node
-    --  referencing this entity. It is an error to call this function if Ekind
-    --  (Op) /= E_Operator.
- 
     function Get_Called_Entity (Call : Node_Id) return Entity_Id;
     --  Obtain the entity of the entry, operator, or subprogram being invoked
     --  by call Call.
  
-    function Get_Low_Bound (E : Entity_Id) return Node_Id;
-    --  For an index subtype or string literal subtype, returns its low bound
- 
-    function Get_Unary_Nkind (Op : Entity_Id) return Node_Kind;
-    --  Op must be an entity with an Ekind of E_Operator. This function returns
-    --  the Nkind value that would be used to construct a unary operator node
-    --  referencing this entity. It is an error to call this function if Ekind
-    --  (Op) /= E_Operator.
- 
     function Get_Rep_Item
       (E             : Entity_Id;
        Nam           : Name_Id;
--- 147,156 ----
*************** package Sem_Aux is
*** 260,269 ****
     --  not inherited from its parents, if any). If found then True is returned,
     --  otherwise False indicates that no matching entry was found.
  
-    function Has_Rep_Item (E : Entity_Id; N : Node_Id) return Boolean;
-    --  Determine whether the Rep_Item chain of arbitrary entity E contains item
-    --  N. N must denote a valid rep item.
- 
     function Has_Rep_Pragma
       (E             : Entity_Id;
        Nam           : Name_Id;
--- 227,232 ----
*************** package Sem_Aux is
*** 371,379 ****
     --  these types). This older routine overlaps with the previous one, this
     --  should be cleaned up???
  
!    function Is_Protected_Operation (E : Entity_Id) return Boolean;
!    --  Given a subprogram or entry, determines whether E is a protected entry
!    --  or subprogram.
  
     function Nearest_Ancestor (Typ : Entity_Id) return Entity_Id;
     --  Given a subtype Typ, this function finds out the nearest ancestor from
--- 334,341 ----
     --  these types). This older routine overlaps with the previous one, this
     --  should be cleaned up???
  
!    function Is_Record_Or_Limited_Type (Typ : Entity_Id) return Boolean;
!    --  Return True if Typ requires is a record or limited type.
  
     function Nearest_Ancestor (Typ : Entity_Id) return Entity_Id;
     --  Given a subtype Typ, this function finds out the nearest ancestor from
*************** package Sem_Aux is
*** 403,412 ****
     --  The result returned is the next _Tag field in this record, or Empty
     --  if this is the last such field.
  
-    function Number_Components (Typ : Entity_Id) return Nat;
-    --  Typ is a record type, yields number of components (including
-    --  discriminants) in type.
- 
     function Number_Discriminants (Typ : Entity_Id) return Pos;
     --  Typ is a type with discriminants, yields number of discriminants in type
  
--- 365,370 ----
*************** package Sem_Aux is
*** 419,428 ****
     --  derived type, and the subtype is not an unconstrained array subtype
     --  (RM 3.3(23.10/3)).
  
-    function Package_Body (E : Entity_Id) return Node_Id;
-    --  Given an entity for a package (spec or body), return the corresponding
-    --  package body if any, or else Empty.
- 
     function Package_Spec (E : Entity_Id) return Node_Id;
     --  Given an entity for a package spec, return the corresponding package
     --  spec if any, or else Empty.
--- 377,382 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_case.adb gcc-11.1.0/gcc/ada/sem_case.adb
*** gcc-10.3.0/gcc/ada/sem_case.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_case.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Case is
*** 458,465 ****
           Choice      : Node_Id;
           Choice_Hi   : Uint;
           Choice_Lo   : Uint;
!          Prev_Choice : Node_Id;
!          pragma Warnings (Off, Prev_Choice);
           Prev_Hi     : Uint;
  
        begin
--- 458,464 ----
           Choice      : Node_Id;
           Choice_Hi   : Uint;
           Choice_Lo   : Uint;
!          Prev_Choice : Node_Id := Empty;
           Prev_Hi     : Uint;
  
        begin
*************** package body Sem_Case is
*** 485,490 ****
--- 484,491 ----
                    end if;
                 end loop;
  
+                pragma Assert (Present (Prev_Choice));
+ 
                 if Sloc (Prev_Choice) <= Sloc (Choice) then
                    Error_Msg_Sloc := Sloc (Prev_Choice);
                    Dup_Choice (Choice_Lo, UI_Min (Choice_Hi, Prev_Hi), Choice);
*************** package body Sem_Case is
*** 997,1003 ****
  
        function Lit_Of (Value : Uint) return Node_Id;
        --  Returns the Node_Id for the enumeration literal corresponding to the
!       --  position given by Value within the enumeration type Choice_Type.
  
        ------------------
        -- Build_Choice --
--- 998,1005 ----
  
        function Lit_Of (Value : Uint) return Node_Id;
        --  Returns the Node_Id for the enumeration literal corresponding to the
!       --  position given by Value within the enumeration type Choice_Type. The
!       --  returned value has its Is_Static_Expression flag set to true.
  
        ------------------
        -- Build_Choice --
*************** package body Sem_Case is
*** 1011,1020 ****
           --  If there is only one choice value missing between Value1 and
           --  Value2, build an integer or enumeration literal to represent it.
  
!          if (Value2 - Value1) = 0 then
              if Is_Integer_Type (Choice_Type) then
                 Lit_Node := Make_Integer_Literal (Loc, Value1);
                 Set_Etype (Lit_Node, Choice_Type);
              else
                 Lit_Node := Lit_Of (Value1);
              end if;
--- 1013,1023 ----
           --  If there is only one choice value missing between Value1 and
           --  Value2, build an integer or enumeration literal to represent it.
  
!          if Value1 = Value2 then
              if Is_Integer_Type (Choice_Type) then
                 Lit_Node := Make_Integer_Literal (Loc, Value1);
                 Set_Etype (Lit_Node, Choice_Type);
+                Set_Is_Static_Expression (Lit_Node);
              else
                 Lit_Node := Lit_Of (Value1);
              end if;
*************** package body Sem_Case is
*** 1027,1034 ****
--- 1030,1039 ----
              if Is_Integer_Type (Choice_Type) then
                 Lo := Make_Integer_Literal (Loc, Value1);
                 Set_Etype (Lo, Choice_Type);
+                Set_Is_Static_Expression (Lo);
                 Hi := Make_Integer_Literal (Loc, Value2);
                 Set_Etype (Hi, Choice_Type);
+                Set_Is_Static_Expression (Hi);
                 Lit_Node :=
                   Make_Range (Loc,
                     Low_Bound  => Lo,
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_case.ads gcc-11.1.0/gcc/ada/sem_case.ads
*** gcc-10.3.0/gcc/ada/sem_case.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_case.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 49,56 ****
  
  --    4. In the case of static predicates, we need to expand out choices that
  --    correspond to the predicate for the back end. This expansion destroys
! --    the list of choices, so it should be delayed to expansion time. We do
! --    not want to mess up the -gnatct ASIS tree, which needs to be able to
  
  --  Step 1 is performed by the generic procedure Analyze_Choices, which is
  --  called when the variant record or case statement/expression is first
--- 49,55 ----
  
  --    4. In the case of static predicates, we need to expand out choices that
  --    correspond to the predicate for the back end. This expansion destroys
! --    the list of choices, so it should be delayed to expansion time.
  
  --  Step 1 is performed by the generic procedure Analyze_Choices, which is
  --  called when the variant record or case statement/expression is first
***************
*** 66,77 ****
  --  for predicated subtypes to accurately construct this.
  
  --  Step 4 is performed by the procedure Expand_Static_Predicates_In_Choices.
! --  For case statements, this call only happens during expansion, so the tree
! --  generated for ASIS does not have this expansion. For the Variant case, the
! --  expansion is done in the ASIS -gnatct case, but with a proper Rewrite call
! --  on the N_Variant node, so ASIS can retrieve the original. The reason we do
! --  the expansion unconditionally for variants is that other processing, for
! --  example for aggregates, relies on having a complete list of choices.
  
  --  Historical note: We used to perform all four of these functions at once in
  --  a single procedure called Analyze_Choices. This routine was called at the
--- 65,73 ----
  --  for predicated subtypes to accurately construct this.
  
  --  Step 4 is performed by the procedure Expand_Static_Predicates_In_Choices.
! --  For case statements, this call only happens during expansion. The reason
! --  we do the expansion unconditionally for variants is that other processing,
! --  for example for aggregates, relies on having a complete list of choices.
  
  --  Historical note: We used to perform all four of these functions at once in
  --  a single procedure called Analyze_Choices. This routine was called at the
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_cat.adb gcc-11.1.0/gcc/ada/sem_cat.adb
*** gcc-10.3.0/gcc/ada/sem_cat.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_cat.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Cat is
*** 793,800 ****
           if Ekind (E) in Subprogram_Kind then
              Declaration := Unit_Declaration_Node (E);
  
!             if Nkind_In (Declaration, N_Subprogram_Body,
!                                       N_Subprogram_Renaming_Declaration)
              then
                 Specification := Corresponding_Spec (Declaration);
              end if;
--- 793,800 ----
           if Ekind (E) in Subprogram_Kind then
              Declaration := Unit_Declaration_Node (E);
  
!             if Nkind (Declaration) in
!                  N_Subprogram_Body | N_Subprogram_Renaming_Declaration
              then
                 Specification := Corresponding_Spec (Declaration);
              end if;
*************** package body Sem_Cat is
*** 1003,1009 ****
        --  Body of RCI unit does not need validation
  
        if Is_Remote_Call_Interface (E)
!         and then Nkind_In (N, N_Package_Body, N_Subprogram_Body)
        then
           return;
        end if;
--- 1003,1009 ----
        --  Body of RCI unit does not need validation
  
        if Is_Remote_Call_Interface (E)
!         and then Nkind (N) in N_Package_Body | N_Subprogram_Body
        then
           return;
        end if;
*************** package body Sem_Cat is
*** 1068,1074 ****
             and then not Private_Present (P)
             and then not Is_Remote_Call_Interface (E)
           then
!             Error_Msg_N ("public child of rci unit must also be rci unit", N);
           end if;
        end if;
     end Validate_Categorization_Dependency;
--- 1068,1075 ----
             and then not Private_Present (P)
             and then not Is_Remote_Call_Interface (E)
           then
!             Error_Msg_N
!               ("public child of 'R'C'I unit must also be 'R'C'I unit", N);
           end if;
        end if;
     end Validate_Categorization_Dependency;
*************** package body Sem_Cat is
*** 1506,1513 ****
  
              null;
  
!          elsif Ekind_In (Param_Type, E_Anonymous_Access_Type,
!                                      E_Anonymous_Access_Subprogram_Type)
           then
              --  From RM E.2.2(14), no anonymous access parameter other than
              --  controlling ones may be used (because an anonymous access
--- 1507,1514 ----
  
              null;
  
!          elsif Ekind (Param_Type) in E_Anonymous_Access_Type
!                                    | E_Anonymous_Access_Subprogram_Type
           then
              --  From RM E.2.2(14), no anonymous access parameter other than
              --  controlling ones may be used (because an anonymous access
*************** package body Sem_Cat is
*** 1580,1600 ****
           if Comes_From_Source (E) then
              if Is_Limited_Type (E) then
                 Error_Msg_N
!                  ("limited type not allowed in rci unit", Parent (E));
                 Explain_Limited_Type (E, Parent (E));
  
!             elsif Ekind_In (E, E_Generic_Function,
!                                E_Generic_Package,
!                                E_Generic_Procedure)
              then
!                Error_Msg_N ("generic declaration not allowed in rci unit",
                   Parent (E));
  
              elsif (Ekind (E) = E_Function or else Ekind (E) = E_Procedure)
                and then Has_Pragma_Inline (E)
              then
                 Error_Msg_N
!                  ("inlined subprogram not allowed in rci unit", Parent (E));
  
              --  Inner packages that are renamings need not be checked. Generic
              --  RCI packages are subject to the checks, but entities that come
--- 1581,1601 ----
           if Comes_From_Source (E) then
              if Is_Limited_Type (E) then
                 Error_Msg_N
!                  ("limited type not allowed in 'R'C'I unit", Parent (E));
                 Explain_Limited_Type (E, Parent (E));
  
!             elsif Ekind (E) in E_Generic_Function
!                              | E_Generic_Package
!                              | E_Generic_Procedure
              then
!                Error_Msg_N ("generic declaration not allowed in 'R'C'I unit",
                   Parent (E));
  
              elsif (Ekind (E) = E_Function or else Ekind (E) = E_Procedure)
                and then Has_Pragma_Inline (E)
              then
                 Error_Msg_N
!                  ("inlined subprogram not allowed in 'R'C'I unit", Parent (E));
  
              --  Inner packages that are renamings need not be checked. Generic
              --  RCI packages are subject to the checks, but entities that come
*************** package body Sem_Cat is
*** 1815,1821 ****
  
        --    4. called from sem_res Resolve_Actuals
  
!       if K = N_Attribute_Reference then
           E := Etype (Prefix (N));
  
           if Is_Remote_Access_To_Class_Wide_Type (E) then
--- 1816,1832 ----
  
        --    4. called from sem_res Resolve_Actuals
  
!       if K = N_Attribute_Definition_Clause then
!          E := Etype (Entity (N));
! 
!          if Is_Remote_Access_To_Class_Wide_Type (E) then
!             Error_Msg_Name_1 := Chars (N);
!             Error_Msg_N
!               ("cannot specify% aspect for a remote operand", N);
!             return;
!          end if;
! 
!       elsif K = N_Attribute_Reference then
           E := Etype (Prefix (N));
  
           if Is_Remote_Access_To_Class_Wide_Type (E) then
*************** package body Sem_Cat is
*** 2111,2116 ****
--- 2122,2128 ----
                 | N_Index_Or_Discriminant_Constraint
                 | N_Membership_Test
                 | N_Op
+                | N_Range
              =>
                 return True;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_cat.ads gcc-11.1.0/gcc/ada/sem_cat.ads
*** gcc-10.3.0/gcc/ada/sem_cat.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_cat.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Cat is
*** 120,127 ****
     --  Checks that Storage_Pool and Storage_Size attribute references are
     --  not applied to remote access-to-class-wide types. Also checks that the
     --  expected type for an allocator cannot be a remote access-to-class-wide
!    --  type. ALso checks that a remote access-to-class-wide type cannot be an
!    --  actual parameter for a generic formal access type. RM E.2.3(22).
  
     procedure Validate_RT_RAT_Component (N : Node_Id);
     --  Given N, the package library unit declaration node, we should check
--- 120,127 ----
     --  Checks that Storage_Pool and Storage_Size attribute references are
     --  not applied to remote access-to-class-wide types. Also checks that the
     --  expected type for an allocator cannot be a remote access-to-class-wide
!    --  type. Also checks that a remote access-to-class-wide type cannot be an
!    --  actual parameter for a generic formal access type. RM E.2.2(17).
  
     procedure Validate_RT_RAT_Component (N : Node_Id);
     --  Given N, the package library unit declaration node, we should check
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch10.adb gcc-11.1.0/gcc/ada/sem_ch10.adb
*** gcc-10.3.0/gcc/ada/sem_ch10.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch10.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Contracts; use Contracts;
*** 29,34 ****
--- 29,35 ----
  with Debug;     use Debug;
  with Einfo;     use Einfo;
  with Errout;    use Errout;
+ with Exp_Put_Image;
  with Exp_Util;  use Exp_Util;
  with Elists;    use Elists;
  with Fname;     use Fname;
*************** package body Sem_Ch10 is
*** 320,326 ****
              Nam_Ent   : constant Entity_Id := Entity (Name (Clause));
              Cont_Item : Node_Id;
              Prag_Unit : Node_Id;
-             Subt_Mark : Node_Id;
              Use_Item  : Node_Id;
  
              function Same_Unit (N : Node_Id; P : Entity_Id) return Boolean;
--- 321,326 ----
*************** package body Sem_Ch10 is
*** 390,408 ****
                 elsif Nkind (Cont_Item) = N_Use_Type_Clause
                   and then not Used_Type_Or_Elab
                 then
!                   Subt_Mark := Subtype_Mark (Cont_Item);
!                   if not Used_Type_Or_Elab
!                     and then Same_Unit (Prefix (Subt_Mark), Nam_Ent)
!                   then
!                      Used_Type_Or_Elab := True;
!                   end if;
  
                 --  Pragma Elaborate or Elaborate_All
  
                 elsif Nkind (Cont_Item) = N_Pragma
                   and then
!                    Nam_In (Pragma_Name_Unmapped (Cont_Item),
!                            Name_Elaborate, Name_Elaborate_All)
                   and then not Used_Type_Or_Elab
                 then
                    Prag_Unit :=
--- 390,420 ----
                 elsif Nkind (Cont_Item) = N_Use_Type_Clause
                   and then not Used_Type_Or_Elab
                 then
!                   declare
!                      UE : Node_Id;
! 
!                   begin
!                      --  Loop through prefixes looking for a match
! 
!                      UE := Prefix (Subtype_Mark (Cont_Item));
!                      loop
!                         if not Used_Type_Or_Elab
!                           and then Same_Unit (UE, Nam_Ent)
!                         then
!                            Used_Type_Or_Elab := True;
!                         end if;
! 
!                         exit when Nkind (UE) /= N_Expanded_Name;
!                         UE := Prefix (UE);
!                      end loop;
!                   end;
  
                 --  Pragma Elaborate or Elaborate_All
  
                 elsif Nkind (Cont_Item) = N_Pragma
                   and then
!                    Pragma_Name_Unmapped (Cont_Item)
!                      in Name_Elaborate | Name_Elaborate_All
                   and then not Used_Type_Or_Elab
                 then
                    Prag_Unit :=
*************** package body Sem_Ch10 is
*** 610,615 ****
--- 622,629 ----
     --  Start of processing for Analyze_Compilation_Unit
  
     begin
+       Exp_Put_Image.Preload_Sink (N);
+ 
        Process_Compilation_Unit_Pragmas (N);
  
        --  If the unit is a subunit whose parent has not been analyzed (which
*************** package body Sem_Ch10 is
*** 710,717 ****
  
              --  Verify that the library unit is a package declaration
  
!             if not Nkind_In (Unit (Lib_Unit), N_Package_Declaration,
!                                               N_Generic_Package_Declaration)
              then
                 Error_Msg_N
                   ("no legal package declaration for package body", N);
--- 724,731 ----
  
              --  Verify that the library unit is a package declaration
  
!             if Nkind (Unit (Lib_Unit)) not in
!                  N_Package_Declaration | N_Generic_Package_Declaration
              then
                 Error_Msg_N
                   ("no legal package declaration for package body", N);
*************** package body Sem_Ch10 is
*** 754,760 ****
              Unum := Get_Cunit_Unit_Number (N);
              Par_Spec_Name := Get_Parent_Spec_Name (Unit_Name (Unum));
  
!             if Par_Spec_Name /= No_Unit_Name then
                 Unum :=
                   Load_Unit
                     (Load_Name  => Par_Spec_Name,
--- 768,774 ----
              Unum := Get_Cunit_Unit_Number (N);
              Par_Spec_Name := Get_Parent_Spec_Name (Unit_Name (Unum));
  
!             if Present (Par_Spec_Name) then
                 Unum :=
                   Load_Unit
                     (Load_Name  => Par_Spec_Name,
*************** package body Sem_Ch10 is
*** 814,819 ****
--- 828,834 ----
                       --  of the child unit does not act as spec any longer.
  
                       Set_Acts_As_Spec (N, False);
+                      Move_Aspects (From => Unit_Node, To => Unit (Lib_Unit));
                       Set_Is_Child_Unit (Defining_Entity (Unit_Node));
                       Set_Debug_Info_Needed (Defining_Entity (Unit (Lib_Unit)));
                       Set_Comes_From_Source_Default (SCS);
*************** package body Sem_Ch10 is
*** 938,945 ****
        --  Analyze the contract of a [generic] subprogram that acts as a
        --  compilation unit after all compilation pragmas have been analyzed.
  
!       if Nkind_In (Unit_Node, N_Generic_Subprogram_Declaration,
!                               N_Subprogram_Declaration)
        then
           Analyze_Entry_Or_Subprogram_Contract (Defining_Entity (Unit_Node));
        end if;
--- 953,960 ----
        --  Analyze the contract of a [generic] subprogram that acts as a
        --  compilation unit after all compilation pragmas have been analyzed.
  
!       if Nkind (Unit_Node) in
!            N_Generic_Subprogram_Declaration | N_Subprogram_Declaration
        then
           Analyze_Entry_Or_Subprogram_Contract (Defining_Entity (Unit_Node));
        end if;
*************** package body Sem_Ch10 is
*** 984,993 ****
        --  next compilation, which is either the main unit or some other unit
        --  in the context.
  
!       if Nkind_In (Unit_Node, N_Package_Declaration,
!                               N_Package_Renaming_Declaration,
!                               N_Subprogram_Declaration)
!         or else Nkind (Unit_Node) in N_Generic_Declaration
          or else (Nkind (Unit_Node) = N_Subprogram_Body
                    and then Acts_As_Spec (Unit_Node))
        then
--- 999,1008 ----
        --  next compilation, which is either the main unit or some other unit
        --  in the context.
  
!       if Nkind (Unit_Node) in N_Package_Declaration
!                             | N_Package_Renaming_Declaration
!                             | N_Subprogram_Declaration
!                             | N_Generic_Declaration
          or else (Nkind (Unit_Node) = N_Subprogram_Body
                    and then Acts_As_Spec (Unit_Node))
        then
*************** package body Sem_Ch10 is
*** 1135,1143 ****
           --  are triggered by these subprograms.
  
           if GNATprove_Mode
!            and then Nkind_In (Unit_Node, N_Function_Instantiation,
!                                          N_Procedure_Instantiation,
!                                          N_Subprogram_Body)
           then
              declare
                 Spec : Node_Id;
--- 1150,1158 ----
           --  are triggered by these subprograms.
  
           if GNATprove_Mode
!            and then Nkind (Unit_Node) in N_Function_Instantiation
!                                        | N_Procedure_Instantiation
!                                        | N_Subprogram_Body
           then
              declare
                 Spec : Node_Id;
*************** package body Sem_Ch10 is
*** 1176,1185 ****
        --  units manufactured by the compiler never need elab checks.
  
        if Comes_From_Source (N)
!         and then Nkind_In (Unit_Node, N_Package_Declaration,
!                                       N_Generic_Package_Declaration,
!                                       N_Subprogram_Declaration,
!                                       N_Generic_Subprogram_Declaration)
        then
           declare
              Loc  : constant Source_Ptr       := Sloc (N);
--- 1191,1200 ----
        --  units manufactured by the compiler never need elab checks.
  
        if Comes_From_Source (N)
!         and then Nkind (Unit_Node) in N_Package_Declaration
!                                     | N_Generic_Package_Declaration
!                                     | N_Subprogram_Declaration
!                                     | N_Generic_Subprogram_Declaration
        then
           declare
              Loc  : constant Source_Ptr       := Sloc (N);
*************** package body Sem_Ch10 is
*** 1464,1473 ****
                 --  Verify that the illegal contexts given in 10.1.2 (18/2) are
                 --  properly rejected, including renaming declarations.
  
!                if not Nkind_In (Ukind, N_Package_Declaration,
!                                        N_Subprogram_Declaration)
!                  and then Ukind not in N_Generic_Declaration
!                  and then Ukind not in N_Generic_Instantiation
                 then
                    Error_Msg_N ("limited with_clause not allowed here", Item);
  
--- 1479,1488 ----
                 --  Verify that the illegal contexts given in 10.1.2 (18/2) are
                 --  properly rejected, including renaming declarations.
  
!                if Ukind not in N_Package_Declaration
!                              | N_Subprogram_Declaration
!                              | N_Generic_Declaration
!                              | N_Generic_Instantiation
                 then
                    Error_Msg_N ("limited with_clause not allowed here", Item);
  
*************** package body Sem_Ch10 is
*** 1522,1531 ****
                          if Item /= It
                            and then Nkind (It) = N_With_Clause
                            and then not Limited_Present (It)
!                           and then
!                             Nkind_In (Unit (Library_Unit (It)),
!                                       N_Package_Declaration,
!                                       N_Package_Renaming_Declaration)
                          then
                             if Nkind (Unit (Library_Unit (It))) =
                                                        N_Package_Declaration
--- 1537,1545 ----
                          if Item /= It
                            and then Nkind (It) = N_With_Clause
                            and then not Limited_Present (It)
!                           and then Nkind (Unit (Library_Unit (It))) in
!                                      N_Package_Declaration |
!                                      N_Package_Renaming_Declaration
                          then
                             if Nkind (Unit (Library_Unit (It))) =
                                                        N_Package_Declaration
*************** package body Sem_Ch10 is
*** 1655,1663 ****
        procedure Optional_Subunit;
        --  This procedure is called when the main unit is a stub, or when we
        --  are not generating code. In such a case, we analyze the subunit if
!       --  present, which is user-friendly and in fact required for ASIS, but we
!       --  don't complain if the subunit is missing. In GNATprove_Mode, we issue
!       --  an error to avoid formal verification of a partial unit.
  
        ----------------------
        -- Optional_Subunit --
--- 1669,1677 ----
        procedure Optional_Subunit;
        --  This procedure is called when the main unit is a stub, or when we
        --  are not generating code. In such a case, we analyze the subunit if
!       --  present, which is user-friendly, but we don't complain if the subunit
!       --  is missing. In GNATprove_Mode, we issue an error to avoid formal
!       --  verification of a partial unit.
  
        ----------------------
        -- Optional_Subunit --
*************** package body Sem_Ch10 is
*** 1673,1679 ****
           --  ignore all errors. Note that Fatal_Error will still be set, so we
           --  will be able to check for this case below.
  
!          if not (ASIS_Mode or GNATprove_Mode) then
              Ignore_Errors_Enable := Ignore_Errors_Enable + 1;
           end if;
  
--- 1687,1693 ----
           --  ignore all errors. Note that Fatal_Error will still be set, so we
           --  will be able to check for this case below.
  
!          if not GNATprove_Mode then
              Ignore_Errors_Enable := Ignore_Errors_Enable + 1;
           end if;
  
*************** package body Sem_Ch10 is
*** 1684,1690 ****
                Subunit    => True,
                Error_Node => N);
  
!          if not (ASIS_Mode or GNATprove_Mode) then
              Ignore_Errors_Enable := Ignore_Errors_Enable - 1;
           end if;
  
--- 1698,1704 ----
                Subunit    => True,
                Error_Node => N);
  
!          if not GNATprove_Mode then
              Ignore_Errors_Enable := Ignore_Errors_Enable - 1;
           end if;
  
*************** package body Sem_Ch10 is
*** 1808,1834 ****
  
        --  If the main unit is a subunit, then we are just performing semantic
        --  analysis on that subunit, and any other subunits of any parent unit
!       --  should be ignored, except that if we are building trees for ASIS
!       --  usage we want to annotate the stub properly. If the main unit is
!       --  itself a subunit, another subunit is irrelevant unless it is a
!       --  subunit of the current one, that is to say appears in the current
!       --  source tree.
  
        elsif Nkind (Unit (Cunit (Main_Unit))) = N_Subunit
          and then Subunit_Name /= Unit_Name (Main_Unit)
        then
-          if ASIS_Mode then
-             declare
-                PB : constant Node_Id := Proper_Body (Unit (Cunit (Main_Unit)));
-             begin
-                if Nkind_In (PB, N_Package_Body, N_Subprogram_Body)
-                  and then List_Containing (N) = Declarations (PB)
-                then
-                   Optional_Subunit;
-                end if;
-             end;
-          end if;
- 
           --  But before we return, set the flag for unloaded subunits. This
           --  will suppress junk warnings of variables in the same declarative
           --  part (or a higher level one) that are in danger of looking unused
--- 1822,1834 ----
  
        --  If the main unit is a subunit, then we are just performing semantic
        --  analysis on that subunit, and any other subunits of any parent unit
!       --  should be ignored. If the main unit is itself a subunit, another
!       --  subunit is irrelevant unless it is a subunit of the current one, that
!       --  is to say appears in the current source tree.
  
        elsif Nkind (Unit (Cunit (Main_Unit))) = N_Subunit
          and then Subunit_Name /= Unit_Name (Main_Unit)
        then
           --  But before we return, set the flag for unloaded subunits. This
           --  will suppress junk warnings of variables in the same declarative
           --  part (or a higher level one) that are in danger of looking unused
*************** package body Sem_Ch10 is
*** 2022,2030 ****
        --  Verify that the identifier for the stub is unique within this
        --  declarative part.
  
!       if Nkind_In (Parent (N), N_Block_Statement,
!                                N_Package_Body,
!                                N_Subprogram_Body)
        then
           Decl := First (Declarations (Parent (N)));
           while Present (Decl) and then Decl /= N loop
--- 2022,2029 ----
        --  Verify that the identifier for the stub is unique within this
        --  declarative part.
  
!       if Nkind (Parent (N)) in
!            N_Block_Statement | N_Package_Body | N_Subprogram_Body
        then
           Decl := First (Declarations (Parent (N)));
           while Present (Decl) and then Decl /= N loop
*************** package body Sem_Ch10 is
*** 2361,2368 ****
                 Remove_Scope;
              end if;
  
!             if Nkind_In (Unit (Lib_Spec), N_Package_Body,
!                                           N_Subprogram_Body)
              then
                 Remove_Context (Library_Unit (Lib_Spec));
              end if;
--- 2360,2366 ----
                 Remove_Scope;
              end if;
  
!             if Nkind (Unit (Lib_Spec)) in N_Package_Body | N_Subprogram_Body
              then
                 Remove_Context (Library_Unit (Lib_Spec));
              end if;
*************** package body Sem_Ch10 is
*** 2610,2623 ****
           --  clauses into regular with clauses.
  
           if Sloc (U) /= No_Location then
!             if In_Predefined_Unit (U)
! 
!               --  In ASIS mode the rtsfind mechanism plays no role, and
!               --  we need to maintain the original tree structure, so
!               --  this transformation is not performed in this case.
! 
!               and then not ASIS_Mode
!             then
                 Set_Limited_Present (N, False);
                 Analyze_With_Clause (N);
              else
--- 2608,2614 ----
           --  clauses into regular with clauses.
  
           if Sloc (U) /= No_Location then
!             if In_Predefined_Unit (U) then
                 Set_Limited_Present (N, False);
                 Analyze_With_Clause (N);
              else
*************** package body Sem_Ch10 is
*** 2662,2670 ****
           if Nkind (Nam) = N_Selected_Component
             and then Nkind (Prefix (Nam)) = N_Identifier
             and then Chars (Prefix (Nam)) = Name_Gnat
!            and then Nam_In (Chars (Selector_Name (Nam)),
!                             Name_Most_Recent_Exception,
!                             Name_Exception_Traces)
           then
              Check_Restriction (No_Exception_Propagation, N);
              Special_Exception_Package_Used := True;
--- 2653,2660 ----
           if Nkind (Nam) = N_Selected_Component
             and then Nkind (Prefix (Nam)) = N_Identifier
             and then Chars (Prefix (Nam)) = Name_Gnat
!            and then Chars (Selector_Name (Nam))
!                       in Name_Most_Recent_Exception | Name_Exception_Traces
           then
              Check_Restriction (No_Exception_Propagation, N);
              Special_Exception_Package_Used := True;
*************** package body Sem_Ch10 is
*** 2716,2722 ****
                    if Ada_Version < Ada_2020
                      and then Warn_On_Ada_202X_Compatibility
                    then
!                      Error_Msg_N ("& is an Ada 202X unit?i?", Name (N));
                    end if;
              end case;
           end if;
--- 2706,2712 ----
                    if Ada_Version < Ada_2020
                      and then Warn_On_Ada_202X_Compatibility
                    then
!                      Error_Msg_N ("& is an Ada 202x unit?i?", Name (N));
                    end if;
              end case;
           end if;
*************** package body Sem_Ch10 is
*** 2974,2980 ****
     --  Start of processing for Check_Private_Child_Unit
  
     begin
!       if Nkind_In (Lib_Unit, N_Package_Body, N_Subprogram_Body) then
           Curr_Unit := Defining_Entity (Unit (Library_Unit (N)));
           Par_Lib   := Curr_Unit;
  
--- 2964,2970 ----
     --  Start of processing for Check_Private_Child_Unit
  
     begin
!       if Nkind (Lib_Unit) in N_Package_Body | N_Subprogram_Body then
           Curr_Unit := Defining_Entity (Unit (Library_Unit (N)));
           Par_Lib   := Curr_Unit;
  
*************** package body Sem_Ch10 is
*** 3081,3087 ****
  
                 elsif Curr_Private
                   or else Private_Present (Item)
!                  or else Nkind_In (Lib_Unit, N_Package_Body, N_Subunit)
                   or else (Nkind (Lib_Unit) = N_Subprogram_Body
                             and then not Acts_As_Spec (Parent (Lib_Unit)))
                 then
--- 3071,3077 ----
  
                 elsif Curr_Private
                   or else Private_Present (Item)
!                  or else Nkind (Lib_Unit) in N_Package_Body | N_Subunit
                   or else (Nkind (Lib_Unit) = N_Subprogram_Body
                             and then not Acts_As_Spec (Parent (Lib_Unit)))
                 then
*************** package body Sem_Ch10 is
*** 3108,3118 ****
        Kind : constant Node_Kind := Nkind (Par);
  
     begin
!       if Nkind_In (Kind, N_Package_Body,
!                          N_Subprogram_Body,
!                          N_Task_Body,
!                          N_Protected_Body)
!         and then Nkind_In (Parent (Par), N_Compilation_Unit, N_Subunit)
        then
           null;
  
--- 3098,3106 ----
        Kind : constant Node_Kind := Nkind (Par);
  
     begin
!       if Kind in
!            N_Package_Body | N_Subprogram_Body | N_Task_Body | N_Protected_Body
!         and then Nkind (Parent (Par)) in N_Compilation_Unit | N_Subunit
        then
           null;
  
*************** package body Sem_Ch10 is
*** 3204,3215 ****
        Set_Library_Unit       (Withn, Parent (Unit_Declaration_Node (Ent)));
        Set_Parent_With        (Withn);
  
!       --  If the unit is a package or generic package declaration, a private_
!       --  with_clause on a child unit implies that the implicit with on the
!       --  parent is also private.
  
!       if Nkind_In (Unit (N), N_Generic_Package_Declaration,
!                              N_Package_Declaration)
        then
           Set_Private_Present (Withn, Private_Present (Item));
        end if;
--- 3192,3207 ----
        Set_Library_Unit       (Withn, Parent (Unit_Declaration_Node (Ent)));
        Set_Parent_With        (Withn);
  
!       --  If the unit is a [generic] package or subprogram declaration
!       --  (including a subprogram body acting as spec), a private_with_clause
!       --  on a child unit implies that the implicit with on the parent is also
!       --  private.
  
!       if Nkind (Unit (N)) in N_Generic_Package_Declaration
!                            | N_Package_Declaration
!                            | N_Generic_Subprogram_Declaration
!                            | N_Subprogram_Declaration
!                            | N_Subprogram_Body
        then
           Set_Private_Present (Withn, Private_Present (Item));
        end if;
*************** package body Sem_Ch10 is
*** 3718,3727 ****
           Install_Siblings (Defining_Entity (Unit (Library_Unit (N))), N);
        end if;
  
!       if Nkind_In (Lib_Unit, N_Generic_Package_Declaration,
!                              N_Generic_Subprogram_Declaration,
!                              N_Package_Declaration,
!                              N_Subprogram_Declaration)
        then
           if Is_Child_Spec (Lib_Unit) then
              Lib_Parent := Defining_Entity (Unit (Parent_Spec (Lib_Unit)));
--- 3710,3719 ----
           Install_Siblings (Defining_Entity (Unit (Library_Unit (N))), N);
        end if;
  
!       if Nkind (Lib_Unit) in N_Generic_Package_Declaration
!                            | N_Generic_Subprogram_Declaration
!                            | N_Package_Declaration
!                            | N_Subprogram_Declaration
        then
           if Is_Child_Spec (Lib_Unit) then
              Lib_Parent := Defining_Entity (Unit (Parent_Spec (Lib_Unit)));
*************** package body Sem_Ch10 is
*** 3911,3919 ****
           elsif Private_Present (Parent (Item))
              or else Curr_Private
              or else Private_Present (Item)
!             or else Nkind_In (Unit (Parent (Item)), N_Package_Body,
!                                                     N_Subprogram_Body,
!                                                     N_Subunit)
           then
              --  Current unit is private, of descendant of a private unit
  
--- 3903,3910 ----
           elsif Private_Present (Parent (Item))
              or else Curr_Private
              or else Private_Present (Item)
!             or else Nkind (Unit (Parent (Item))) in
!                       N_Package_Body | N_Subprogram_Body | N_Subunit
           then
              --  Current unit is private, of descendant of a private unit
  
*************** package body Sem_Ch10 is
*** 4071,4079 ****
              then
                 if not Private_Present (Item)
                   or else Private_Present (N)
!                  or else Nkind_In (Unit (N), N_Package_Body,
!                                              N_Subprogram_Body,
!                                              N_Subunit)
                 then
                    Install_Limited_With_Clause (Item);
                 end if;
--- 4062,4069 ----
              then
                 if not Private_Present (Item)
                   or else Private_Present (N)
!                  or else Nkind (Unit (N)) in
!                            N_Package_Body | N_Subprogram_Body | N_Subunit
                 then
                    Install_Limited_With_Clause (Item);
                 end if;
*************** package body Sem_Ch10 is
*** 4165,4173 ****
        end if;
  
        if Ekind (P_Name) = E_Generic_Package
!         and then not Nkind_In (Lib_Unit, N_Generic_Subprogram_Declaration,
!                                          N_Generic_Package_Declaration)
!         and then Nkind (Lib_Unit) not in N_Generic_Renaming_Declaration
        then
           Error_Msg_N
             ("child of a generic package must be a generic unit", Lib_Unit);
--- 4155,4163 ----
        end if;
  
        if Ekind (P_Name) = E_Generic_Package
!         and then Nkind (Lib_Unit) not in N_Generic_Subprogram_Declaration
!                                        | N_Generic_Package_Declaration
!                                        | N_Generic_Renaming_Declaration
        then
           Error_Msg_N
             ("child of a generic package must be a generic unit", Lib_Unit);
*************** package body Sem_Ch10 is
*** 4491,4500 ****
        --  Determine whether any package in the ancestor chain starting with
        --  C_Unit has a limited with clause for package Pack.
  
-       function Is_Visible_Through_Renamings (P : Entity_Id) return Boolean;
-       --  Check if some package installed though normal with-clauses has a
-       --  renaming declaration of package P. AARM 10.1.2(21/2).
- 
        -------------------------
        -- Check_Body_Required --
        -------------------------
--- 4481,4486 ----
*************** package body Sem_Ch10 is
*** 4630,4646 ****
                 --  Save for subsequent examination of import pragmas.
  
                 if Comes_From_Source (Decl)
!                  and then (Nkind_In (Decl, N_Subprogram_Declaration,
!                                            N_Subprogram_Renaming_Declaration,
!                                            N_Generic_Subprogram_Declaration))
                 then
                    Append_Elmt (Defining_Entity (Decl), Subp_List);
  
                 --  Package declaration of generic package declaration. We need
                 --  to recursively examine nested declarations.
  
!                elsif Nkind_In (Decl, N_Package_Declaration,
!                                      N_Generic_Package_Declaration)
                 then
                    Check_Declarations (Specification (Decl));
  
--- 4616,4632 ----
                 --  Save for subsequent examination of import pragmas.
  
                 if Comes_From_Source (Decl)
!                  and then (Nkind (Decl) in N_Subprogram_Declaration
!                                          | N_Subprogram_Renaming_Declaration
!                                          | N_Generic_Subprogram_Declaration)
                 then
                    Append_Elmt (Defining_Entity (Decl), Subp_List);
  
                 --  Package declaration of generic package declaration. We need
                 --  to recursively examine nested declarations.
  
!                elsif Nkind (Decl) in N_Package_Declaration
!                                    | N_Generic_Package_Declaration
                 then
                    Check_Declarations (Specification (Decl));
  
*************** package body Sem_Ch10 is
*** 4660,4673 ****
              Decl := First (Private_Declarations (Spec));
              while Present (Decl) loop
                 if Comes_From_Source (Decl)
!                  and then (Nkind_In (Decl, N_Subprogram_Declaration,
!                                            N_Subprogram_Renaming_Declaration,
!                                            N_Generic_Subprogram_Declaration))
                 then
                    Append_Elmt (Defining_Entity (Decl), Subp_List);
  
!                elsif Nkind_In (Decl, N_Package_Declaration,
!                                      N_Generic_Package_Declaration)
                 then
                    Check_Declarations (Specification (Decl));
  
--- 4646,4659 ----
              Decl := First (Private_Declarations (Spec));
              while Present (Decl) loop
                 if Comes_From_Source (Decl)
!                  and then Nkind (Decl) in N_Subprogram_Declaration
!                                         | N_Subprogram_Renaming_Declaration
!                                         | N_Generic_Subprogram_Declaration
                 then
                    Append_Elmt (Defining_Entity (Decl), Subp_List);
  
!                elsif Nkind (Decl) in N_Package_Declaration
!                                    | N_Generic_Package_Declaration
                 then
                    Check_Declarations (Specification (Decl));
  
*************** package body Sem_Ch10 is
*** 4824,4931 ****
           return False;
        end Has_Limited_With_Clause;
  
-       ----------------------------------
-       -- Is_Visible_Through_Renamings --
-       ----------------------------------
- 
-       function Is_Visible_Through_Renamings (P : Entity_Id) return Boolean is
-          Kind     : constant Node_Kind :=
-                       Nkind (Unit (Cunit (Current_Sem_Unit)));
-          Aux_Unit : Node_Id;
-          Item     : Node_Id;
-          Decl     : Entity_Id;
- 
-       begin
-          --  Example of the error detected by this subprogram:
- 
-          --  package P is
-          --    type T is ...
-          --  end P;
- 
-          --  with P;
-          --  package Q is
-          --     package Ren_P renames P;
-          --  end Q;
- 
-          --  with Q;
-          --  package R is ...
- 
-          --  limited with P; -- ERROR
-          --  package R.C is ...
- 
-          Aux_Unit := Cunit (Current_Sem_Unit);
- 
-          loop
-             Item := First (Context_Items (Aux_Unit));
-             while Present (Item) loop
-                if Nkind (Item) = N_With_Clause
-                  and then not Limited_Present (Item)
-                  and then Nkind (Unit (Library_Unit (Item))) =
-                                                   N_Package_Declaration
-                then
-                   Decl :=
-                     First (Visible_Declarations
-                             (Specification (Unit (Library_Unit (Item)))));
-                   while Present (Decl) loop
-                      if Nkind (Decl) = N_Package_Renaming_Declaration
-                        and then Entity (Name (Decl)) = P
-                      then
-                         --  Generate the error message only if the current unit
-                         --  is a package declaration; in case of subprogram
-                         --  bodies and package bodies we just return True to
-                         --  indicate that the limited view must not be
-                         --  installed.
- 
-                         if Kind = N_Package_Declaration then
-                            Error_Msg_N
-                              ("simultaneous visibility of the limited and " &
-                               "unlimited views not allowed", N);
-                            Error_Msg_Sloc := Sloc (Item);
-                            Error_Msg_NE
-                              ("\\  unlimited view of & visible through the " &
-                               "context clause #", N, P);
-                            Error_Msg_Sloc := Sloc (Decl);
-                            Error_Msg_NE ("\\  and the renaming #", N, P);
-                         end if;
- 
-                         return True;
-                      end if;
- 
-                      Next (Decl);
-                   end loop;
-                end if;
- 
-                Next (Item);
-             end loop;
- 
-             --  If it is a body not acting as spec, follow pointer to the
-             --  corresponding spec, otherwise follow pointer to parent spec.
- 
-             if Present (Library_Unit (Aux_Unit))
-               and then Nkind_In (Unit (Aux_Unit),
-                                  N_Package_Body, N_Subprogram_Body)
-             then
-                if Aux_Unit = Library_Unit (Aux_Unit) then
- 
-                   --  Aux_Unit is a body that acts as a spec. Clause has
-                   --  already been flagged as illegal.
- 
-                   return False;
- 
-                else
-                   Aux_Unit := Library_Unit (Aux_Unit);
-                end if;
- 
-             else
-                Aux_Unit := Parent_Spec (Unit (Aux_Unit));
-             end if;
- 
-             exit when No (Aux_Unit);
-          end loop;
- 
-          return False;
-       end Is_Visible_Through_Renamings;
- 
     --  Start of processing for Install_Limited_With_Clause
  
     begin
--- 4810,4815 ----
*************** package body Sem_Ch10 is
*** 4963,4969 ****
        --  Do not install the limited-view if the full-view is already visible
        --  through renaming declarations.
  
!       if Is_Visible_Through_Renamings (P) then
           return;
        end if;
  
--- 4847,4853 ----
        --  Do not install the limited-view if the full-view is already visible
        --  through renaming declarations.
  
!       if Is_Visible_Through_Renamings (P, N) then
           return;
        end if;
  
*************** package body Sem_Ch10 is
*** 5273,5281 ****
  
                 --  Set entity of parent identifiers if the unit is a child
                 --  unit. This ensures that the tree is properly formed from
!                --  semantic point of view (e.g. for ASIS queries). The unit
!                --  entities are not fully analyzed, so we need to follow unit
!                --  links in the tree.
  
                 Set_Entity (Nam, Ent);
  
--- 5157,5164 ----
  
                 --  Set entity of parent identifiers if the unit is a child
                 --  unit. This ensures that the tree is properly formed from
!                --  semantic point of view. The unit entities are not fully
!                --  analyzed, so we need to follow unit links in the tree.
  
                 Set_Entity (Nam, Ent);
  
*************** package body Sem_Ch10 is
*** 5315,5322 ****
        --  analyzing the private part of the package).
  
        if Private_Present (With_Clause)
!         and then Nkind (Unit (Parent (With_Clause))) = N_Package_Declaration
!         and then not (Private_With_OK)
        then
           return;
        end if;
--- 5198,5206 ----
        --  analyzing the private part of the package).
  
        if Private_Present (With_Clause)
!         and then Nkind (Unit (Parent (With_Clause)))
!                    in N_Package_Declaration | N_Generic_Package_Declaration
!         and then not Private_With_OK
        then
           return;
        end if;
*************** package body Sem_Ch10 is
*** 5383,5389 ****
              Set_Is_Visible_Lib_Unit (Uname);
  
              --  If the unit is a wrapper package for a compilation unit that is
!             --  a subprogrm instance, indicate that the instance itself is a
              --  visible unit. This is necessary if the instance is inlined.
  
              if Is_Wrapper_Package (Uname) then
--- 5267,5273 ----
              Set_Is_Visible_Lib_Unit (Uname);
  
              --  If the unit is a wrapper package for a compilation unit that is
!             --  a subprogram instance, indicate that the instance itself is a
              --  visible unit. This is necessary if the instance is inlined.
  
              if Is_Wrapper_Package (Uname) then
*************** package body Sem_Ch10 is
*** 5555,5561 ****
        E1 : constant Entity_Id := Defining_Entity (Unit (U1));
        E2 : Entity_Id;
     begin
!       if Nkind_In (Unit (U2), N_Package_Body, N_Subprogram_Body) then
           E2 := Defining_Entity (Unit (Library_Unit (U2)));
           return Is_Ancestor_Package (E1, E2);
        else
--- 5439,5445 ----
        E1 : constant Entity_Id := Defining_Entity (Unit (U1));
        E2 : Entity_Id;
     begin
!       if Nkind (Unit (U2)) in N_Package_Body | N_Subprogram_Body then
           E2 := Defining_Entity (Unit (Library_Unit (U2)));
           return Is_Ancestor_Package (E1, E2);
        else
*************** package body Sem_Ch10 is
*** 5563,5568 ****
--- 5447,5594 ----
        end if;
     end Is_Ancestor_Unit;
  
+    ----------------------------------
+    -- Is_Visible_Through_Renamings --
+    ----------------------------------
+ 
+    function Is_Visible_Through_Renamings
+      (P          : Entity_Id;
+       Error_Node : Node_Id := Empty) return Boolean
+    is
+       function Is_Limited_Withed_Unit
+         (Lib_Unit : Node_Id;
+          Pkg_Ent  : Entity_Id) return Boolean;
+       --  Return True if Pkg_Ent is a limited-withed package of the given
+       --  library unit.
+ 
+       ----------------------------
+       -- Is_Limited_Withed_Unit --
+       ----------------------------
+ 
+       function Is_Limited_Withed_Unit
+         (Lib_Unit : Node_Id;
+          Pkg_Ent  : Entity_Id) return Boolean
+       is
+          Item : Node_Id := First (Context_Items (Lib_Unit));
+ 
+       begin
+          while Present (Item) loop
+             if Nkind (Item) = N_With_Clause
+               and then Limited_Present (Item)
+               and then Entity (Name (Item)) = Pkg_Ent
+             then
+                return True;
+             end if;
+ 
+             Next (Item);
+          end loop;
+ 
+          return False;
+       end Is_Limited_Withed_Unit;
+ 
+       --  Local variables
+ 
+       Kind     : constant Node_Kind := Nkind (Unit (Cunit (Current_Sem_Unit)));
+       Aux_Unit : Node_Id;
+       Item     : Node_Id;
+       Decl     : Entity_Id;
+ 
+    begin
+       --  Example of the error detected by this subprogram:
+ 
+       --  package P is
+       --    type T is ...
+       --  end P;
+ 
+       --  with P;
+       --  package Q is
+       --     package Ren_P renames P;
+       --  end Q;
+ 
+       --  with Q;
+       --  package R is ...
+ 
+       --  limited with P; -- ERROR
+       --  package R.C is ...
+ 
+       Aux_Unit := Cunit (Current_Sem_Unit);
+ 
+       loop
+          Item := First (Context_Items (Aux_Unit));
+          while Present (Item) loop
+             if Nkind (Item) = N_With_Clause
+               and then not Limited_Present (Item)
+               and then Nkind (Unit (Library_Unit (Item))) =
+                                                N_Package_Declaration
+             then
+                Decl :=
+                  First (Visible_Declarations
+                          (Specification (Unit (Library_Unit (Item)))));
+                while Present (Decl) loop
+                   if Nkind (Decl) = N_Package_Renaming_Declaration
+                     and then Entity (Name (Decl)) = P
+                     and then not Is_Limited_Withed_Unit
+                                    (Lib_Unit => Library_Unit (Item),
+                                     Pkg_Ent  => Entity (Name (Decl)))
+                   then
+                      --  Generate the error message only if the current unit
+                      --  is a package declaration; in case of subprogram
+                      --  bodies and package bodies we just return True to
+                      --  indicate that the limited view must not be
+                      --  installed.
+ 
+                      if Kind = N_Package_Declaration
+                        and then Present (Error_Node)
+                      then
+                         Error_Msg_N
+                           ("simultaneous visibility of the limited and " &
+                            "unlimited views not allowed", Error_Node);
+                         Error_Msg_Sloc := Sloc (Item);
+                         Error_Msg_NE
+                           ("\\  unlimited view of & visible through the " &
+                            "context clause #", Error_Node, P);
+                         Error_Msg_Sloc := Sloc (Decl);
+                         Error_Msg_NE ("\\  and the renaming #", Error_Node, P);
+                      end if;
+ 
+                      return True;
+                   end if;
+ 
+                   Next (Decl);
+                end loop;
+             end if;
+ 
+             Next (Item);
+          end loop;
+ 
+          --  If it is a body not acting as spec, follow pointer to the
+          --  corresponding spec, otherwise follow pointer to parent spec.
+ 
+          if Present (Library_Unit (Aux_Unit))
+            and then Nkind (Unit (Aux_Unit)) in
+                       N_Package_Body | N_Subprogram_Body
+          then
+             if Aux_Unit = Library_Unit (Aux_Unit) then
+ 
+                --  Aux_Unit is a body that acts as a spec. Clause has
+                --  already been flagged as illegal.
+ 
+                return False;
+ 
+             else
+                Aux_Unit := Library_Unit (Aux_Unit);
+             end if;
+ 
+          else
+             Aux_Unit := Parent_Spec (Unit (Aux_Unit));
+          end if;
+ 
+          exit when No (Aux_Unit);
+       end loop;
+ 
+       return False;
+    end Is_Visible_Through_Renamings;
+ 
     -----------------------
     -- Load_Needed_Body --
     -----------------------
*************** package body Sem_Ch10 is
*** 6062,6073 ****
  
              --  Types
  
!             elsif Nkind_In (Decl, N_Full_Type_Declaration,
!                                   N_Incomplete_Type_Declaration,
!                                   N_Private_Extension_Declaration,
!                                   N_Private_Type_Declaration,
!                                   N_Protected_Type_Declaration,
!                                   N_Task_Type_Declaration)
              then
                 Def_Id := Defining_Entity (Decl);
  
--- 6088,6099 ----
  
              --  Types
  
!             elsif Nkind (Decl) in N_Full_Type_Declaration
!                                 | N_Incomplete_Type_Declaration
!                                 | N_Private_Extension_Declaration
!                                 | N_Private_Type_Declaration
!                                 | N_Protected_Type_Declaration
!                                 | N_Task_Type_Declaration
              then
                 Def_Id := Defining_Entity (Decl);
  
*************** package body Sem_Ch10 is
*** 6086,6093 ****
                       (Nkind (Def) = N_Derived_Type_Definition
                          and then Present (Record_Extension_Part (Def)));
  
!                elsif Nkind_In (Decl, N_Incomplete_Type_Declaration,
!                                      N_Private_Type_Declaration)
                 then
                    Is_Tagged := Tagged_Present (Decl);
  
--- 6112,6119 ----
                       (Nkind (Def) = N_Derived_Type_Definition
                          and then Present (Record_Extension_Part (Def)));
  
!                elsif Nkind (Decl) in N_Incomplete_Type_Declaration
!                                    | N_Private_Type_Declaration
                 then
                    Is_Tagged := Tagged_Present (Decl);
  
*************** package body Sem_Ch10 is
*** 6158,6191 ****
              null;
  
           when N_Subprogram_Declaration =>
!             Error_Msg_N ("subprograms not allowed in limited with_clauses", N);
              return;
  
           when N_Generic_Package_Declaration
              | N_Generic_Subprogram_Declaration
           =>
!             Error_Msg_N ("generics not allowed in limited with_clauses", N);
              return;
  
           when N_Generic_Instantiation =>
              Error_Msg_N
!               ("generic instantiations not allowed in limited with_clauses",
                 N);
              return;
  
           when N_Generic_Renaming_Declaration =>
              Error_Msg_N
!               ("generic renamings not allowed in limited with_clauses", N);
              return;
  
           when N_Subprogram_Renaming_Declaration =>
              Error_Msg_N
!               ("renamed subprograms not allowed in limited with_clauses", N);
              return;
  
           when N_Package_Renaming_Declaration =>
              Error_Msg_N
!               ("renamed packages not allowed in limited with_clauses", N);
              return;
  
           when others =>
--- 6184,6218 ----
              null;
  
           when N_Subprogram_Declaration =>
!             Error_Msg_N
!               ("subprogram not allowed in `LIMITED WITH` clause", N);
              return;
  
           when N_Generic_Package_Declaration
              | N_Generic_Subprogram_Declaration
           =>
!             Error_Msg_N ("generic not allowed in `LIMITED WITH` clause", N);
              return;
  
           when N_Generic_Instantiation =>
              Error_Msg_N
!               ("generic instantiation not allowed in `LIMITED WITH` clause",
                 N);
              return;
  
           when N_Generic_Renaming_Declaration =>
              Error_Msg_N
!               ("generic renaming not allowed in `LIMITED WITH` clause", N);
              return;
  
           when N_Subprogram_Renaming_Declaration =>
              Error_Msg_N
!               ("renamed subprogram not allowed in `LIMITED WITH` clause", N);
              return;
  
           when N_Package_Renaming_Declaration =>
              Error_Msg_N
!               ("renamed package not allowed in `LIMITED WITH` clause", N);
              return;
  
           when others =>
*************** package body Sem_Ch10 is
*** 6317,6323 ****
           if Is_Subprogram (E) and then Has_Pragma_Inline (E) then
              return True;
  
!          elsif Ekind_In (E, E_Generic_Function, E_Generic_Procedure) then
  
              --  A generic subprogram always requires the presence of its
              --  body because an instantiation needs both templates. The only
--- 6344,6350 ----
           if Is_Subprogram (E) and then Has_Pragma_Inline (E) then
              return True;
  
!          elsif Is_Generic_Subprogram (E) then
  
              --  A generic subprogram always requires the presence of its
              --  body because an instantiation needs both templates. The only
*************** package body Sem_Ch10 is
*** 6369,6375 ****
        then
           Set_Body_Needed_For_SAL (Unit_Name);
  
!       elsif Ekind_In (Unit_Name, E_Generic_Procedure, E_Generic_Function) then
           Set_Body_Needed_For_SAL (Unit_Name);
  
        elsif Is_Subprogram (Unit_Name)
--- 6396,6402 ----
        then
           Set_Body_Needed_For_SAL (Unit_Name);
  
!       elsif Ekind (Unit_Name) in E_Generic_Procedure | E_Generic_Function then
           Set_Body_Needed_For_SAL (Unit_Name);
  
        elsif Is_Subprogram (Unit_Name)
*************** package body Sem_Ch10 is
*** 6476,6482 ****
              null;
  
           elsif Nkind (Item) = N_With_Clause
!             and then Context_Installed (Item)
           then
              --  Remove items from one with'ed unit
  
--- 6503,6509 ----
              null;
  
           elsif Nkind (Item) = N_With_Clause
!            and then Context_Installed (Item)
           then
              --  Remove items from one with'ed unit
  
*************** package body Sem_Ch10 is
*** 6830,6841 ****
        -- In_Regular_With_Clause --
        ----------------------------
  
!       function In_Regular_With_Clause (E : Entity_Id) return Boolean
!       is
           Item : Node_Id;
  
        begin
           Item := First (Context_Items (Comp_Unit));
           while Present (Item) loop
              if Nkind (Item) = N_With_Clause
  
--- 6857,6868 ----
        -- In_Regular_With_Clause --
        ----------------------------
  
!       function In_Regular_With_Clause (E : Entity_Id) return Boolean is
           Item : Node_Id;
  
        begin
           Item := First (Context_Items (Comp_Unit));
+ 
           while Present (Item) loop
              if Nkind (Item) = N_With_Clause
  
*************** package body Sem_Ch10 is
*** 6848,6853 ****
--- 6875,6881 ----
              then
                 return True;
              end if;
+ 
              Next (Item);
           end loop;
  
*************** package body Sem_Ch10 is
*** 6865,6871 ****
              --  as a small optimization to subsequent handling of private_with
              --  clauses in other nested packages. We replace the clause with
              --  a null statement, which is otherwise ignored by the rest of
!             --  the compiler, so that ASIS tools can reconstruct the source.
  
              if In_Regular_With_Clause (Entity (Name (Item))) then
                 declare
--- 6893,6899 ----
              --  as a small optimization to subsequent handling of private_with
              --  clauses in other nested packages. We replace the clause with
              --  a null statement, which is otherwise ignored by the rest of
!             --  the compiler.
  
              if In_Regular_With_Clause (Entity (Name (Item))) then
                 declare
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch10.ads gcc-11.1.0/gcc/ada/sem_ch10.ads
*** gcc-10.3.0/gcc/ada/sem_ch10.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch10.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Ch10 is
*** 51,56 ****
--- 51,75 ----
     --  view, determine whether the package where T resides is imported through
     --  a regular with clause in the current package body.
  
+    function Is_Visible_Through_Renamings
+      (P          : Entity_Id;
+       Error_Node : Node_Id := Empty) return Boolean;
+    --  Check if some package installed though normal with-clauses has a
+    --  renaming declaration of package P. AARM 10.1.2(21/2). Errors are
+    --  reported on Error_Node (if present); otherwise no error is reported.
+ 
+    procedure Load_Needed_Body
+      (N          : Node_Id;
+       OK         : out Boolean;
+       Do_Analyze : Boolean := True);
+    --  Load and analyze the body of a context unit that is generic, or that
+    --  contains generic units or inlined units. The body becomes part of the
+    --  semantic dependency set of the unit that needs it. The returned result
+    --  in OK is True if the load is successful, and False if the requested file
+    --  cannot be found. If the flag Do_Analyze is false, the unit is loaded and
+    --  parsed only. This allows a selective analysis in some inlining cases
+    --  where a full analysis would lead so circularities in the back-end.
+ 
     procedure Remove_Context (N : Node_Id);
     --  Removes the entities from the context clause of the given compilation
     --  unit from the visibility chains. This is done on exit from a unit as
*************** package Sem_Ch10 is
*** 66,81 ****
     --  rule imposes extra steps in order to install/remove the private_with
     --  clauses of an enclosing unit.
  
-    procedure Load_Needed_Body
-      (N          : Node_Id;
-       OK         : out Boolean;
-       Do_Analyze : Boolean := True);
-    --  Load and analyze the body of a context unit that is generic, or that
-    --  contains generic units or inlined units. The body becomes part of the
-    --  semantic dependency set of the unit that needs it. The returned result
-    --  in OK is True if the load is successful, and False if the requested file
-    --  cannot be found. If the flag Do_Analyze is false, the unit is loaded and
-    --  parsed only. This allows a selective analysis in some inlining cases
-    --  where a full analysis would lead so circularities in the back-end.
- 
  end Sem_Ch10;
--- 85,88 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch11.adb gcc-11.1.0/gcc/ada/sem_ch11.adb
*** gcc-10.3.0/gcc/ada/sem_ch11.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch11.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Ch11 is
*** 127,133 ****
                         and then Comes_From_Source (Id)
                       then
                          Error_Msg_N
!                           ("(Ada 83): duplicate exception choice&", Id);
                       end if;
                    end if;
                 end if;
--- 127,133 ----
                         and then Comes_From_Source (Id)
                       then
                          Error_Msg_N
!                           ("(Ada 83) duplicate exception choice&", Id);
                       end if;
                    end if;
                 end if;
*************** package body Sem_Ch11 is
*** 433,439 ****
  
        if ((Is_Subprogram (Current_Scope) or else Is_Entry (Current_Scope))
             and then Chars (Current_Scope) /= Name_uPostconditions)
!          or else Ekind_In (Current_Scope, E_Block, E_Task_Type)
        then
           Warn_On_Useless_Assignments (Current_Scope);
        end if;
--- 433,439 ----
  
        if ((Is_Subprogram (Current_Scope) or else Is_Entry (Current_Scope))
             and then Chars (Current_Scope) /= Name_uPostconditions)
!          or else Ekind (Current_Scope) in E_Block | E_Task_Type
        then
           Warn_On_Useless_Assignments (Current_Scope);
        end if;
*************** package body Sem_Ch11 is
*** 460,467 ****
           Check_Compiler_Unit ("raise expression", N);
        end if;
  
-       Check_SPARK_05_Restriction ("raise expression is not allowed", N);
- 
        --  Check exception restrictions on the original source
  
        if Comes_From_Source (N) then
--- 460,465 ----
*************** package body Sem_Ch11 is
*** 517,526 ****
        Par            : Node_Id;
  
     begin
-       if Comes_From_Source (N) then
-          Check_SPARK_05_Restriction ("raise statement is not allowed", N);
-       end if;
- 
        Check_Unreachable_Code (N);
  
        --  Check exception restrictions on the original source
--- 515,520 ----
*************** package body Sem_Ch11 is
*** 543,549 ****
              --  Skip past null statements and pragmas
  
              while Present (P)
!               and then Nkind_In (P, N_Null_Statement, N_Pragma)
              loop
                 P := Prev (P);
              end loop;
--- 537,543 ----
              --  Skip past null statements and pragmas
  
              while Present (P)
!               and then Nkind (P) in N_Null_Statement | N_Pragma
              loop
                 P := Prev (P);
              end loop;
*************** package body Sem_Ch11 is
*** 600,610 ****
  
        if No (Exception_Id) then
           P := Parent (N);
!          while not Nkind_In (P, N_Exception_Handler,
!                                 N_Subprogram_Body,
!                                 N_Package_Body,
!                                 N_Task_Body,
!                                 N_Entry_Body)
           loop
              P := Parent (P);
           end loop;
--- 594,602 ----
  
        if No (Exception_Id) then
           P := Parent (N);
!          while Nkind (P) not in
!                  N_Exception_Handler | N_Subprogram_Body | N_Package_Body |
!                  N_Task_Body         | N_Entry_Body
           loop
              P := Parent (P);
           end loop;
*************** package body Sem_Ch11 is
*** 722,731 ****
     --  Start of processing for Analyze_Raise_xxx_Error
  
     begin
-       if Nkind (Original_Node (N)) = N_Raise_Statement then
-          Check_SPARK_05_Restriction ("raise statement is not allowed", N);
-       end if;
- 
        if No (Etype (N)) then
           Set_Etype (N, Standard_Void_Type);
        end if;
--- 714,719 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch11.ads gcc-11.1.0/gcc/ada/sem_ch11.ads
*** gcc-10.3.0/gcc/ada/sem_ch11.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch11.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch12.adb gcc-11.1.0/gcc/ada/sem_ch12.adb
*** gcc-10.3.0/gcc/ada/sem_ch12.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch12.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Ch12 is
*** 270,275 ****
--- 270,276 ----
     --                                Refined_Depends
     --                                Refined_Global
     --                                Refined_Post
+    --                                Subprogram_Variant
     --                                Test_Case
  
     --  Most package contract annotations utilize forward references to classify
*************** package body Sem_Ch12 is
*** 495,500 ****
--- 496,517 ----
     --  nodes or subprogram body and declaration nodes depending on the case).
     --  On return, the node N has been rewritten with the actual body.
  
+    function Build_Subprogram_Decl_Wrapper
+      (Formal_Subp : Entity_Id) return Node_Id;
+    --  Ada 2020 allows formal subprograms to carry pre/postconditions.
+    --  At the point of instantiation these contracts apply to uses of
+    --  the actual subprogram. This is implemented by creating wrapper
+    --  subprograms instead of the renamings previously used to link
+    --  formal subprograms and the corresponding actuals. If the actual
+    --  is not an entity (e.g. an attribute reference) a renaming is
+    --  created to handle the expansion of the attribute.
+ 
+    function Build_Subprogram_Body_Wrapper
+      (Formal_Subp : Entity_Id;
+       Actual_Name : Node_Id) return Node_Id;
+    --  The body of the wrapper is a call to the actual, with the generated
+    --  pre/postconditon checks added.
+ 
     procedure Check_Access_Definition (N : Node_Id);
     --  Subsidiary routine to null exclusion processing. Perform an assertion
     --  check on Ada version and the presence of an access definition in N.
*************** package body Sem_Ch12 is
*** 651,656 ****
--- 668,677 ----
     --  Traverse the Exchanged_Views list to see if a type was private
     --  and has already been flipped during this phase of instantiation.
  
+    function Has_Contracts (Decl : Node_Id) return Boolean;
+    --  Determine whether a formal subprogram has a Pre- or Postcondition,
+    --  in which case a subprogram wrapper has to be built for the actual.
+ 
     procedure Hide_Current_Scope;
     --  When instantiating a generic child unit, the parent context must be
     --  present, but the instance and all entities that may be generated
*************** package body Sem_Ch12 is
*** 1078,1083 ****
--- 1099,1112 ----
        --  In Ada 2005, indicates partial parameterization of a formal
        --  package. As usual an other association must be last in the list.
  
+       procedure Build_Subprogram_Wrappers;
+       --  Ada 2020: AI12-0272 introduces pre/postconditions for formal
+       --  subprograms. The implementation of making the formal into a renaming
+       --  of the actual does not work, given that subprogram renaming cannot
+       --  carry aspect specifications. Instead we must create subprogram
+       --  wrappers whose body is a call to the actual, and whose declaration
+       --  carries the aspects of the formal.
+ 
        procedure Check_Fixed_Point_Actual (Actual : Node_Id);
        --  Warn if an actual fixed-point type has user-defined arithmetic
        --  operations, but there is no corresponding formal in the generic,
*************** package body Sem_Ch12 is
*** 1101,1107 ****
        --  actuals are positional, return the next one, if any. If the actuals
        --  are named, scan the parameter associations to find the right one.
        --  A_F is the corresponding entity in the analyzed generic, which is
!       --  placed on the selector name for ASIS use.
        --
        --  In Ada 2005, a named association may be given with a box, in which
        --  case Matching_Actual sets Found_Assoc to the generic association,
--- 1130,1136 ----
        --  actuals are positional, return the next one, if any. If the actuals
        --  are named, scan the parameter associations to find the right one.
        --  A_F is the corresponding entity in the analyzed generic, which is
!       --  placed on the selector name.
        --
        --  In Ada 2005, a named association may be given with a box, in which
        --  case Matching_Actual sets Found_Assoc to the generic association,
*************** package body Sem_Ch12 is
*** 1131,1136 ****
--- 1160,1229 ----
        --  anonymous types, the presence a formal equality will introduce an
        --  implicit declaration for the corresponding inequality.
  
+       -----------------------------------------
+       -- procedure Build_Subprogram_Wrappers --
+       -----------------------------------------
+ 
+       procedure Build_Subprogram_Wrappers is
+          Formal : constant Entity_Id :=
+            Defining_Unit_Name (Specification (Analyzed_Formal));
+          Aspect_Spec : Node_Id;
+          Decl_Node   : Node_Id;
+          Actual_Name : Node_Id;
+ 
+       begin
+          --  Create declaration for wrapper subprogram
+          --  The actual can be overloaded, in which case it will be
+          --  resolved when the call in the wrapper body is analyzed.
+          --  We attach the possible interpretations of the actual to
+          --  the name to be used in the call in the wrapper body.
+ 
+          if Is_Entity_Name (Match) then
+             Actual_Name := New_Occurrence_Of (Entity (Match), Sloc (Match));
+ 
+             if Is_Overloaded (Match) then
+                Save_Interps (Match, Actual_Name);
+             end if;
+ 
+          else
+             --  Use renaming declaration created when analyzing actual.
+             --  This may be incomplete if there are several formal
+             --  subprograms whose actual is an attribute ???
+ 
+             declare
+                Renaming_Decl : constant Node_Id := Last (Assoc_List);
+ 
+             begin
+                Actual_Name := New_Occurrence_Of
+                      (Defining_Entity (Renaming_Decl), Sloc (Match));
+                Set_Etype (Actual_Name, Get_Instance_Of (Etype (Formal)));
+             end;
+          end if;
+ 
+          Decl_Node := Build_Subprogram_Decl_Wrapper (Formal);
+ 
+          --  Transfer aspect specifications from formal subprogram to wrapper
+ 
+          Set_Aspect_Specifications (Decl_Node,
+            New_Copy_List_Tree (Aspect_Specifications (Analyzed_Formal)));
+ 
+          Aspect_Spec := First (Aspect_Specifications (Decl_Node));
+          while Present (Aspect_Spec) loop
+             Set_Analyzed (Aspect_Spec, False);
+             Next (Aspect_Spec);
+          end loop;
+ 
+          Append_To (Assoc_List, Decl_Node);
+ 
+          --  Create corresponding body, and append it to association list
+          --  that appears at the head of the declarations in the instance.
+          --  The subprogram may be called in the analysis of subsequent
+          --  actuals.
+ 
+          Append_To (Assoc_List,
+             Build_Subprogram_Body_Wrapper (Formal, Actual_Name));
+       end Build_Subprogram_Wrappers;
+ 
        ----------------------------------------
        -- Check_Overloaded_Formal_Subprogram --
        ----------------------------------------
*************** package body Sem_Ch12 is
*** 1481,1489 ****
                          (Defining_Unit_Name (Specification (Analyzed_Formal)));
  
                 when N_Formal_Package_Declaration =>
!                   exit when Nkind_In (Kind, N_Formal_Package_Declaration,
!                                             N_Generic_Package_Declaration,
!                                             N_Package_Declaration);
  
                 when N_Use_Package_Clause
                    | N_Use_Type_Clause
--- 1574,1582 ----
                          (Defining_Unit_Name (Specification (Analyzed_Formal)));
  
                 when N_Formal_Package_Declaration =>
!                   exit when Kind in N_Formal_Package_Declaration
!                                   | N_Generic_Package_Declaration
!                                   | N_Package_Declaration;
  
                 when N_Use_Package_Clause
                    | N_Use_Type_Clause
*************** package body Sem_Ch12 is
*** 1497,1506 ****
  
                    exit when
                      Kind not in N_Formal_Subprogram_Declaration
!                       and then not Nkind_In (Kind, N_Subprogram_Declaration,
!                                                    N_Freeze_Entity,
!                                                    N_Null_Statement,
!                                                    N_Itype_Reference)
                        and then Chars (Defining_Identifier (Formal)) =
                                 Chars (Defining_Identifier (Analyzed_Formal));
              end case;
--- 1590,1599 ----
  
                    exit when
                      Kind not in N_Formal_Subprogram_Declaration
!                       and then Kind not in N_Subprogram_Declaration
!                                          | N_Freeze_Entity
!                                          | N_Null_Statement
!                                          | N_Itype_Reference
                        and then Chars (Defining_Identifier (Formal)) =
                                 Chars (Defining_Identifier (Analyzed_Formal));
              end case;
*************** package body Sem_Ch12 is
*** 1526,1532 ****
                 Others_Choice  := Actual;
  
                 if Present (Next (Actual)) then
!                   Error_Msg_N ("others must be last association", Actual);
                 end if;
  
                 --  This subprogram is used both for formal packages and for
--- 1619,1625 ----
                 Others_Choice  := Actual;
  
                 if Present (Next (Actual)) then
!                   Error_Msg_N ("OTHERS must be last association", Actual);
                 end if;
  
                 --  This subprogram is used both for formal packages and for
*************** package body Sem_Ch12 is
*** 1537,1543 ****
                   and then Comes_From_Source (I_Node)
                 then
                    Error_Msg_N
!                     ("others association not allowed in an instance",
                        Actual);
                 end if;
  
--- 1630,1636 ----
                   and then Comes_From_Source (I_Node)
                 then
                    Error_Msg_N
!                     ("OTHERS association not allowed in an instance",
                        Actual);
                 end if;
  
*************** package body Sem_Ch12 is
*** 1626,1632 ****
                          Assoc_List);
  
                       --  For a defaulted in_parameter, create an entry in the
!                      --  the list of defaulted actuals, for GNATProve use. Do
                       --  not included these defaults for an instance nested
                       --  within a generic, because the defaults are also used
                       --  in the analysis of the enclosing generic, and only
--- 1719,1725 ----
                          Assoc_List);
  
                       --  For a defaulted in_parameter, create an entry in the
!                      --  the list of defaulted actuals, for GNATprove use. Do
                       --  not included these defaults for an instance nested
                       --  within a generic, because the defaults are also used
                       --  in the analysis of the enclosing generic, and only
*************** package body Sem_Ch12 is
*** 1685,1691 ****
  
                       --  Warn when an actual is a fixed-point with user-
                       --  defined promitives. The warning is superfluous
!                      --  if the fornal is private, because there can be
                       --  no arithmetic operations in the generic so there
                       --  no danger of confusion.
  
--- 1778,1784 ----
  
                       --  Warn when an actual is a fixed-point with user-
                       --  defined promitives. The warning is superfluous
!                      --  if the formal is private, because there can be
                       --  no arithmetic operations in the generic so there
                       --  no danger of confusion.
  
*************** package body Sem_Ch12 is
*** 1793,1798 ****
--- 1886,1901 ----
                         Instantiate_Formal_Subprogram
                           (Formal, Match, Analyzed_Formal));
  
+                      --  If formal subprogram has contracts, create wrappers
+                      --  for it. This is an expansion activity that cannot
+                      --  take place e.g. within an enclosing generic unit.
+ 
+                      if Has_Contracts (Analyzed_Formal)
+                        and then Expander_Active
+                      then
+                         Build_Subprogram_Wrappers;
+                      end if;
+ 
                       --  An instantiation is a freeze point for the actuals,
                       --  unless this is a rewritten formal package.
  
*************** package body Sem_Ch12 is
*** 1826,1832 ****
                    end if;
  
                    --  If this is a nested generic, preserve default for later
!                   --  instantiations. We do this as well for GNATProve use,
                    --  so that the list of generic associations is complete.
  
                    if No (Match) and then Box_Present (Formal) then
--- 1929,1935 ----
                    end if;
  
                    --  If this is a nested generic, preserve default for later
!                   --  instantiations. We do this as well for GNATprove use,
                    --  so that the list of generic associations is complete.
  
                    if No (Match) and then Box_Present (Formal) then
*************** package body Sem_Ch12 is
*** 1846,1855 ****
                    end if;
  
                 when N_Formal_Package_Declaration =>
!                   Match :=
!                     Matching_Actual
!                       (Defining_Identifier (Formal),
!                        Defining_Identifier (Original_Node (Analyzed_Formal)));
  
                    if No (Match) then
                       if Partial_Parameterization then
--- 1949,1967 ----
                    end if;
  
                 when N_Formal_Package_Declaration =>
!                   --  The name of the formal package may be hidden by the
!                   --  formal parameter itself.
! 
!                   if Error_Posted (Analyzed_Formal) then
!                      Abandon_Instantiation (Instantiation_Node);
! 
!                   else
!                      Match :=
!                        Matching_Actual
!                          (Defining_Identifier (Formal),
!                           Defining_Identifier
!                             (Original_Node (Analyzed_Formal)));
!                   end if;
  
                    if No (Match) then
                       if Partial_Parameterization then
*************** package body Sem_Ch12 is
*** 1886,1892 ****
                          Gen_Par : Entity_Id;
  
                          Needs_Freezing : Boolean;
!                         S              : Entity_Id;
  
                          procedure Check_Generic_Parent;
                          --  The actual may be an instantiation of a unit
--- 1998,2004 ----
                          Gen_Par : Entity_Id;
  
                          Needs_Freezing : Boolean;
!                         P              : Node_Id;
  
                          procedure Check_Generic_Parent;
                          --  The actual may be an instantiation of a unit
*************** package body Sem_Ch12 is
*** 1990,2007 ****
  
                             Needs_Freezing := True;
  
!                            S := Current_Scope;
!                            while Present (S) loop
!                               if Ekind_In (S, E_Block,
!                                               E_Function,
!                                               E_Loop,
!                                               E_Procedure)
                                then
                                   Needs_Freezing := False;
                                   exit;
                                end if;
  
!                               S := Scope (S);
                             end loop;
  
                             if Needs_Freezing then
--- 2102,2116 ----
  
                             Needs_Freezing := True;
  
!                            P := Parent (I_Node);
!                            while Nkind (P) /= N_Compilation_Unit loop
!                               if Nkind (P) = N_Handled_Sequence_Of_Statements
                                then
                                   Needs_Freezing := False;
                                   exit;
                                end if;
  
!                               P := Parent (P);
                             end loop;
  
                             if Needs_Freezing then
*************** package body Sem_Ch12 is
*** 2139,2147 ****
        if Nkind (Def) = N_Constrained_Array_Definition then
           DSS := First (Discrete_Subtype_Definitions (Def));
           while Present (DSS) loop
!             if Nkind_In (DSS, N_Subtype_Indication,
!                               N_Range,
!                               N_Attribute_Reference)
              then
                 Error_Msg_N ("only a subtype mark is allowed in a formal", DSS);
              end if;
--- 2248,2256 ----
        if Nkind (Def) = N_Constrained_Array_Definition then
           DSS := First (Discrete_Subtype_Definitions (Def));
           while Present (DSS) loop
!             if Nkind (DSS) in N_Subtype_Indication
!                             | N_Range
!                             | N_Attribute_Reference
              then
                 Error_Msg_N ("only a subtype mark is allowed in a formal", DSS);
              end if;
*************** package body Sem_Ch12 is
*** 3048,3055 ****
  
        Set_Has_Completion (Formal, True);
  
!       --  Add semantic information to the original defining identifier for ASIS
!       --  use.
  
        Set_Ekind (Pack_Id, E_Package);
        Set_Etype (Pack_Id, Standard_Void_Type);
--- 3157,3163 ----
  
        Set_Has_Completion (Formal, True);
  
!       --  Add semantic information to the original defining identifier.
  
        Set_Ekind (Pack_Id, E_Package);
        Set_Etype (Pack_Id, Standard_Void_Type);
*************** package body Sem_Ch12 is
*** 3476,3481 ****
--- 3584,3595 ----
        end loop;
  
        Generate_Reference_To_Generic_Formals (Current_Scope);
+ 
+       --  For Ada 2020, some formal parameters can carry aspects, which must
+       --  be name-resolved at the end of the list of formal parameters (which
+       --  has the semantics of a declaration list).
+ 
+       Analyze_Contracts (Generic_Formal_Declarations (N));
     end Analyze_Generic_Formal_Part;
  
     ------------------------------------------
*************** package body Sem_Ch12 is
*** 3493,3500 ****
        Save_Parent : Node_Id;
  
     begin
-       Check_SPARK_05_Restriction ("generic is not allowed", N);
- 
        --  A generic may grant access to its private enclosing context depending
        --  on the placement of its corresponding body. From elaboration point of
        --  view, the flow of execution may enter this private context, and then
--- 3607,3612 ----
*************** package body Sem_Ch12 is
*** 3699,3706 ****
        Typ         : Entity_Id;
  
     begin
-       Check_SPARK_05_Restriction ("generic is not allowed", N);
- 
        --  A generic may grant access to its private enclosing context depending
        --  on the placement of its corresponding body. From elaboration point of
        --  view, the flow of execution may enter this private context, and then
--- 3811,3816 ----
*************** package body Sem_Ch12 is
*** 3748,3760 ****
        Enter_Name (Id);
        Set_Scope_Depth_Value (Id, Scope_Depth (Current_Scope) + 1);
  
-       --  Analyze the aspects of the generic copy to ensure that all generated
-       --  pragmas (if any) perform their semantic effects.
- 
-       if Has_Aspects (N) then
-          Analyze_Aspect_Specifications (N, Id);
-       end if;
- 
        Push_Scope (Id);
        Enter_Generic_Scope (Id);
        Set_Inner_Instances (Id, New_Elmt_List);
--- 3858,3863 ----
*************** package body Sem_Ch12 is
*** 3839,3844 ****
--- 3942,3954 ----
           Set_Etype (Id, Standard_Void_Type);
        end if;
  
+       --  Analyze the aspects of the generic copy to ensure that all generated
+       --  pragmas (if any) perform their semantic effects.
+ 
+       if Has_Aspects (N) then
+          Analyze_Aspect_Specifications (N, Id);
+       end if;
+ 
        --  For a library unit, we have reconstructed the entity for the unit,
        --  and must reset it in the library tables. We also make sure that
        --  Body_Required is set properly in the original compilation unit node.
*************** package body Sem_Ch12 is
*** 3957,3962 ****
--- 4067,4082 ----
              return True;
           end if;
  
+          --  In GNATprove mode, never instantiate bodies outside of the main
+          --  unit, as it does not use frontend/backend inlining in the way that
+          --  GNAT does, so does not benefit from such instantiations. On the
+          --  contrary, such instantiations may bring artificial constraints,
+          --  as for example such bodies may require preprocessing.
+ 
+          if GNATprove_Mode then
+             return False;
+          end if;
+ 
           --  If not, then again no need to instantiate bodies in generic units
  
           if Is_Generic_Unit (Cunit_Entity (Get_Code_Unit (N))) then
*************** package body Sem_Ch12 is
*** 4032,4039 ****
           Modes    => True,
           Warnings => True);
  
-       Check_SPARK_05_Restriction ("generic is not allowed", N);
- 
        --  Very first thing: check for Text_IO special unit in case we are
        --  instantiating one of the children of [[Wide_]Wide_]Text_IO.
  
--- 4152,4157 ----
*************** package body Sem_Ch12 is
*** 4188,4194 ****
        elsif Contains_Instance_Of (Gen_Unit, Current_Scope, Gen_Id) then
           Error_Msg_Node_2 := Current_Scope;
           Error_Msg_NE
!            ("circular Instantiation: & instantiated in &!", N, Gen_Unit);
           Circularity_Detected := True;
           Restore_Env;
           goto Leave;
--- 4306,4312 ----
        elsif Contains_Instance_Of (Gen_Unit, Current_Scope, Gen_Id) then
           Error_Msg_Node_2 := Current_Scope;
           Error_Msg_NE
!            ("circular instantiation: & instantiated in &!", N, Gen_Unit);
           Circularity_Detected := True;
           Restore_Env;
           goto Leave;
*************** package body Sem_Ch12 is
*** 4348,4355 ****
           --  body if there is one and it needs to be instantiated here.
  
           --  We instantiate the body only if we are generating code, or if we
!          --  are generating cross-reference information, or if we are building
!          --  trees for ASIS use or GNATprove use.
  
           declare
              Enclosing_Body_Present : Boolean := False;
--- 4466,4472 ----
           --  body if there is one and it needs to be instantiated here.
  
           --  We instantiate the body only if we are generating code, or if we
!          --  are generating cross-reference information, or for GNATprove use.
  
           declare
              Enclosing_Body_Present : Boolean := False;
*************** package body Sem_Ch12 is
*** 4446,4452 ****
                 and then not Inline_Now
                 and then (Operating_Mode = Generate_Code
                            or else (Operating_Mode = Check_Semantics
!                                     and then (ASIS_Mode or GNATprove_Mode)));
  
              --  If front-end inlining is enabled or there are any subprograms
              --  marked with Inline_Always, do not instantiate body when within
--- 4563,4569 ----
                 and then not Inline_Now
                 and then (Operating_Mode = Generate_Code
                            or else (Operating_Mode = Check_Semantics
!                                     and then GNATprove_Mode));
  
              --  If front-end inlining is enabled or there are any subprograms
              --  marked with Inline_Always, do not instantiate body when within
*************** package body Sem_Ch12 is
*** 4781,4797 ****
           Inline_Instance_Body (N, Gen_Unit, Act_Decl);
        end if;
  
-       --  The following is a tree patch for ASIS: ASIS needs separate nodes to
-       --  be used as defining identifiers for a formal package and for the
-       --  corresponding expanded package.
- 
-       if Nkind (N) = N_Formal_Package_Declaration then
-          Act_Decl_Id := New_Copy (Defining_Entity (N));
-          Set_Comes_From_Source (Act_Decl_Id, True);
-          Set_Is_Generic_Instance (Act_Decl_Id, False);
-          Set_Defining_Identifier (N, Act_Decl_Id);
-       end if;
- 
        --  Check that if N is an instantiation of System.Dim_Float_IO or
        --  System.Dim_Integer_IO, the formal type has a dimension system.
  
--- 4898,4903 ----
*************** package body Sem_Ch12 is
*** 4934,4940 ****
           while Present (S) and then S /= Standard_Standard loop
              if Is_Generic_Instance (S)
                and then (In_Package_Body (S)
!                          or else Ekind_In (S, E_Procedure, E_Function))
              then
                 --  We still have to remove the entities of the enclosing
                 --  instance from direct visibility.
--- 5040,5046 ----
           while Present (S) and then S /= Standard_Standard loop
              if Is_Generic_Instance (S)
                and then (In_Package_Body (S)
!                          or else Ekind (S) in E_Procedure | E_Function)
              then
                 --  We still have to remove the entities of the enclosing
                 --  instance from direct visibility.
*************** package body Sem_Ch12 is
*** 5103,5109 ****
                 Set_Is_Generic_Instance (Inst, True);
  
                 if In_Package_Body (Inst)
!                  or else Ekind_In (S, E_Procedure, E_Function)
                 then
                    E := First_Entity (Instances (J));
                    while Present (E) loop
--- 5209,5215 ----
                 Set_Is_Generic_Instance (Inst, True);
  
                 if In_Package_Body (Inst)
!                  or else Ekind (S) in E_Procedure | E_Function
                 then
                    E := First_Entity (Instances (J));
                    while Present (E) loop
*************** package body Sem_Ch12 is
*** 5185,5201 ****
  
        if (Is_In_Main_Unit (N) or else Is_Inlined_Or_Child_Of_Inlined (Subp))
  
!         --  Must be generating code or analyzing code in ASIS/GNATprove mode
  
          and then (Operating_Mode = Generate_Code
                     or else (Operating_Mode = Check_Semantics
!                              and then (ASIS_Mode or GNATprove_Mode)))
  
!         --  The body is needed when generating code (full expansion), in ASIS
!         --  mode for other tools, and in GNATprove mode (special expansion) for
!         --  formal verification of the body itself.
  
!         and then (Expander_Active or ASIS_Mode or GNATprove_Mode)
  
          --  No point in inlining if ABE is inevitable
  
--- 5291,5307 ----
  
        if (Is_In_Main_Unit (N) or else Is_Inlined_Or_Child_Of_Inlined (Subp))
  
!         --  Must be generating code or analyzing code in GNATprove mode
  
          and then (Operating_Mode = Generate_Code
                     or else (Operating_Mode = Check_Semantics
!                              and then GNATprove_Mode))
  
!         --  The body is needed when generating code (full expansion) and in
!         --  in GNATprove mode (special expansion) for formal verification of
!         --  the body itself.
  
!         and then (Expander_Active or GNATprove_Mode)
  
          --  No point in inlining if ABE is inevitable
  
*************** package body Sem_Ch12 is
*** 5367,5373 ****
  
           --  Subprogram instance comes from source only if generic does
  
!          Set_Comes_From_Source (Act_Decl_Id, Comes_From_Source (Gen_Unit));
  
           --  If the instance is a child unit, mark the Id accordingly. Mark
           --  the anonymous entity as well, which is the real subprogram and
--- 5473,5479 ----
  
           --  Subprogram instance comes from source only if generic does
  
!          Preserve_Comes_From_Source (Act_Decl_Id, Gen_Unit);
  
           --  If the instance is a child unit, mark the Id accordingly. Mark
           --  the anonymous entity as well, which is the real subprogram and
*************** package body Sem_Ch12 is
*** 5491,5498 ****
           Modes    => True,
           Warnings => True);
  
-       Check_SPARK_05_Restriction ("generic is not allowed", N);
- 
        --  Very first thing: check for special Text_IO unit in case we are
        --  instantiating one of the children of [[Wide_]Wide_]Text_IO. Of course
        --  such an instantiation is bogus (these are packages, not subprograms),
--- 5597,5602 ----
*************** package body Sem_Ch12 is
*** 5568,5575 ****
           --  If renaming, get original unit
  
           if Present (Renamed_Object (Gen_Unit))
!            and then Ekind_In (Renamed_Object (Gen_Unit), E_Generic_Procedure,
!                                                          E_Generic_Function)
           then
              Gen_Unit := Renamed_Object (Gen_Unit);
              Set_Is_Instantiated (Gen_Unit);
--- 5672,5678 ----
           --  If renaming, get original unit
  
           if Present (Renamed_Object (Gen_Unit))
!            and then Is_Generic_Subprogram (Renamed_Object (Gen_Unit))
           then
              Gen_Unit := Renamed_Object (Gen_Unit);
              Set_Is_Instantiated (Gen_Unit);
*************** package body Sem_Ch12 is
*** 5579,5585 ****
           if Contains_Instance_Of (Gen_Unit, Current_Scope, Gen_Id) then
              Error_Msg_Node_2 := Current_Scope;
              Error_Msg_NE
!               ("circular Instantiation: & instantiated in &!", N, Gen_Unit);
              Circularity_Detected := True;
              Restore_Hidden_Primitives (Vis_Prims_List);
              goto Leave;
--- 5682,5688 ----
           if Contains_Instance_Of (Gen_Unit, Current_Scope, Gen_Id) then
              Error_Msg_Node_2 := Current_Scope;
              Error_Msg_NE
!               ("circular instantiation: & instantiated in &!", N, Gen_Unit);
              Circularity_Detected := True;
              Restore_Hidden_Primitives (Vis_Prims_List);
              goto Leave;
*************** package body Sem_Ch12 is
*** 5814,5821 ****
              --  constitute a freeze point, but to insure that the freeze node
              --  is placed properly, it is created directly when instantiating
              --  the body (otherwise the freeze node might appear to early for
!             --  nested instantiations). For ASIS purposes, indicate that the
!             --  wrapper package has replaced the instantiation node.
  
              elsif Nkind (Parent (N)) = N_Compilation_Unit then
                 Rewrite (N, Unit (Parent (N)));
--- 5917,5923 ----
              --  constitute a freeze point, but to insure that the freeze node
              --  is placed properly, it is created directly when instantiating
              --  the body (otherwise the freeze node might appear to early for
!             --  nested instantiations).
  
              elsif Nkind (Parent (N)) = N_Compilation_Unit then
                 Rewrite (N, Unit (Parent (N)));
*************** package body Sem_Ch12 is
*** 5823,5829 ****
              end if;
  
           --  Replace instance node for library-level instantiations of
!          --  intrinsic subprograms, for ASIS use.
  
           elsif Nkind (Parent (N)) = N_Compilation_Unit then
              Rewrite (N, Unit (Parent (N)));
--- 5925,5931 ----
              end if;
  
           --  Replace instance node for library-level instantiations of
!          --  intrinsic subprograms.
  
           elsif Nkind (Parent (N)) = N_Compilation_Unit then
              Rewrite (N, Unit (Parent (N)));
*************** package body Sem_Ch12 is
*** 5880,5886 ****
        if Nkind (Assoc) /= Nkind (N) then
           return Assoc;
  
!       elsif Nkind_In (Assoc, N_Aggregate, N_Extension_Aggregate) then
           return Assoc;
  
        else
--- 5982,5988 ----
        if Nkind (Assoc) /= Nkind (N) then
           return Assoc;
  
!       elsif Nkind (Assoc) in N_Aggregate | N_Extension_Aggregate then
           return Assoc;
  
        else
*************** package body Sem_Ch12 is
*** 5900,5910 ****
  
           if (Nkind (Assoc) = N_Identifier or else Nkind (Assoc) in N_Op)
             and then Present (Associated_Node (Assoc))
!            and then (Nkind_In (Associated_Node (Assoc), N_Function_Call,
!                                                         N_Explicit_Dereference,
!                                                         N_Integer_Literal,
!                                                         N_Real_Literal,
!                                                         N_String_Literal))
           then
              Assoc := Associated_Node (Assoc);
           end if;
--- 6002,6012 ----
  
           if (Nkind (Assoc) = N_Identifier or else Nkind (Assoc) in N_Op)
             and then Present (Associated_Node (Assoc))
!            and then Nkind (Associated_Node (Assoc)) in N_Function_Call
!                                                      | N_Explicit_Dereference
!                                                      | N_Integer_Literal
!                                                      | N_Real_Literal
!                                                      | N_String_Literal
           then
              Assoc := Associated_Node (Assoc);
           end if;
*************** package body Sem_Ch12 is
*** 6129,6134 ****
--- 6231,6347 ----
        return Decl;
     end Build_Operator_Wrapper;
  
+    -----------------------------------
+    -- Build_Subprogram_Decl_Wrapper --
+    -----------------------------------
+ 
+    function Build_Subprogram_Decl_Wrapper
+      (Formal_Subp : Entity_Id) return Node_Id
+    is
+       Loc       : constant Source_Ptr := Sloc (Current_Scope);
+       Ret_Type  : constant Entity_Id  := Get_Instance_Of (Etype (Formal_Subp));
+       Decl      : Node_Id;
+       Subp      : Entity_Id;
+       Parm_Spec : Node_Id;
+       Profile   : List_Id := New_List;
+       Spec      : Node_Id;
+       Form_F    : Entity_Id;
+       New_F     : Entity_Id;
+ 
+    begin
+ 
+       Subp := Make_Defining_Identifier (Loc, Chars (Formal_Subp));
+       Set_Ekind (Subp, Ekind (Formal_Subp));
+       Set_Is_Generic_Actual_Subprogram (Subp);
+ 
+       Profile := Parameter_Specifications (
+                    New_Copy_Tree
+                     (Specification (Unit_Declaration_Node (Formal_Subp))));
+ 
+       Form_F := First_Formal (Formal_Subp);
+       Parm_Spec := First (Profile);
+ 
+       --  Create new entities for the formals. Reset entities so that
+       --  parameter types are properly resolved when wrapper declaration
+       --  is analyzed.
+ 
+       while Present (Parm_Spec) loop
+          New_F := Make_Defining_Identifier (Loc, Chars (Form_F));
+          Set_Defining_Identifier (Parm_Spec, New_F);
+          Set_Entity (Parameter_Type (Parm_Spec), Empty);
+          Next (Parm_Spec);
+          Next_Formal (Form_F);
+       end loop;
+ 
+       if Ret_Type = Standard_Void_Type then
+          Spec :=
+            Make_Procedure_Specification (Loc,
+              Defining_Unit_Name       => Subp,
+              Parameter_Specifications => Profile);
+       else
+          Spec :=
+            Make_Function_Specification (Loc,
+              Defining_Unit_Name       => Subp,
+              Parameter_Specifications => Profile,
+              Result_Definition        => New_Occurrence_Of (Ret_Type, Loc));
+       end if;
+ 
+       Decl :=
+         Make_Subprogram_Declaration (Loc, Specification => Spec);
+ 
+       return Decl;
+    end Build_Subprogram_Decl_Wrapper;
+ 
+    -----------------------------------
+    -- Build_Subprogram_Body_Wrapper --
+    -----------------------------------
+ 
+    function Build_Subprogram_Body_Wrapper
+      (Formal_Subp : Entity_Id;
+       Actual_Name : Node_Id) return Node_Id
+    is
+       Loc       : constant Source_Ptr := Sloc (Current_Scope);
+       Ret_Type  : constant Entity_Id  := Get_Instance_Of (Etype (Formal_Subp));
+       Spec_Node : constant Node_Id :=
+         Specification
+           (Build_Subprogram_Decl_Wrapper (Formal_Subp));
+       Act       : Node_Id;
+       Actuals   : List_Id;
+       Body_Node : Node_Id;
+       Stmt      : Node_Id;
+    begin
+       Actuals := New_List;
+       Act := First (Parameter_Specifications (Spec_Node));
+ 
+       while Present (Act) loop
+          Append_To (Actuals,
+             Make_Identifier  (Loc, Chars (Defining_Identifier (Act))));
+          Next (Act);
+       end loop;
+ 
+       if Ret_Type = Standard_Void_Type then
+          Stmt := Make_Procedure_Call_Statement (Loc,
+           Name                   => Actual_Name,
+           Parameter_Associations => Actuals);
+ 
+       else
+          Stmt := Make_Simple_Return_Statement (Loc,
+             Expression =>
+               Make_Function_Call (Loc,
+                 Name                   => Actual_Name,
+                 Parameter_Associations => Actuals));
+       end if;
+ 
+       Body_Node := Make_Subprogram_Body (Loc,
+         Specification => Spec_Node,
+         Declarations  => New_List,
+         Handled_Statement_Sequence =>
+            Make_Handled_Sequence_Of_Statements (Loc,
+              Statements    => New_List (Stmt)));
+ 
+       return Body_Node;
+    end Build_Subprogram_Body_Wrapper;
+ 
     -------------------------------------------
     -- Build_Instance_Compilation_Unit_Nodes --
     -------------------------------------------
*************** package body Sem_Ch12 is
*** 6301,6309 ****
           if Kind = N_Formal_Type_Declaration then
              return;
  
!          elsif Nkind_In (Kind, N_Formal_Object_Declaration,
!                                N_Formal_Package_Declaration)
!            or else Kind in N_Formal_Subprogram_Declaration
           then
              null;
  
--- 6514,6522 ----
           if Kind = N_Formal_Type_Declaration then
              return;
  
!          elsif Kind in N_Formal_Object_Declaration
!                      | N_Formal_Package_Declaration
!                      | N_Formal_Subprogram_Declaration
           then
              null;
  
*************** package body Sem_Ch12 is
*** 6496,6504 ****
           --  If the formal entity comes from a formal declaration, it was
           --  defaulted in the formal package, and no check is needed on it.
  
!          elsif Nkind_In (Original_Node (Parent (E2)),
!                          N_Formal_Object_Declaration,
!                          N_Formal_Type_Declaration)
           then
              --  If the formal is a tagged type the corresponding class-wide
              --  type has been generated as well, and it must be skipped.
--- 6709,6716 ----
           --  If the formal entity comes from a formal declaration, it was
           --  defaulted in the formal package, and no check is needed on it.
  
!          elsif Nkind (Original_Node (Parent (E2))) in
!                  N_Formal_Object_Declaration | N_Formal_Type_Declaration
           then
              --  If the formal is a tagged type the corresponding class-wide
              --  type has been generated as well, and it must be skipped.
*************** package body Sem_Ch12 is
*** 6808,6855 ****
        E      : Entity_Id;
        Astype : Entity_Id;
  
-       function Denotes_Previous_Actual (Typ : Entity_Id) return Boolean;
-       --  For a formal that is an array type, the component type is often a
-       --  previous formal in the same unit. The privacy status of the component
-       --  type will have been examined earlier in the traversal of the
-       --  corresponding actuals, and this status should not be modified for
-       --  the array (sub)type itself. However, if the base type of the array
-       --  (sub)type is private, its full view must be restored in the body to
-       --  be consistent with subsequent index subtypes, etc.
-       --
-       --  To detect this case we have to rescan the list of formals, which is
-       --  usually short enough to ignore the resulting inefficiency.
- 
-       -----------------------------
-       -- Denotes_Previous_Actual --
-       -----------------------------
- 
-       function Denotes_Previous_Actual (Typ : Entity_Id) return Boolean is
-          Prev : Entity_Id;
- 
-       begin
-          Prev := First_Entity (Instance);
-          while Present (Prev) loop
-             if Is_Type (Prev)
-               and then Nkind (Parent (Prev)) = N_Subtype_Declaration
-               and then Is_Entity_Name (Subtype_Indication (Parent (Prev)))
-               and then Entity (Subtype_Indication (Parent (Prev))) = Typ
-             then
-                return True;
- 
-             elsif Prev = E then
-                return False;
- 
-             else
-                Next_Entity (Prev);
-             end if;
-          end loop;
- 
-          return False;
-       end Denotes_Previous_Actual;
- 
-    --  Start of processing for Check_Generic_Actuals
- 
     begin
        E := First_Entity (Instance);
        while Present (E) loop
--- 7020,7025 ----
*************** package body Sem_Ch12 is
*** 6858,6871 ****
             and then Scope (Etype (E)) /= Instance
             and then Is_Entity_Name (Subtype_Indication (Parent (E)))
           then
!             if Is_Array_Type (E)
!               and then not Is_Private_Type (Etype (E))
!               and then Denotes_Previous_Actual (Component_Type (E))
!             then
!                null;
!             else
!                Check_Private_View (Subtype_Indication (Parent (E)));
!             end if;
  
              Set_Is_Generic_Actual_Type (E);
  
--- 7028,7061 ----
             and then Scope (Etype (E)) /= Instance
             and then Is_Entity_Name (Subtype_Indication (Parent (E)))
           then
!             --  Restore the proper view of the actual from the information
!             --  saved earlier by Instantiate_Type.
! 
!             Check_Private_View (Subtype_Indication (Parent (E)));
! 
!             --  If the actual is itself the formal of a parent instance,
!             --  then also restore the proper view of its actual and so on.
!             --  That's necessary for nested instantiations of the form
! 
!             --    generic
!             --      type Component is private;
!             --      type Array_Type is array (Positive range <>) of Component;
!             --    procedure Proc;
! 
!             --  when the outermost actuals have inconsistent views, because
!             --  the Component_Type of Array_Type of the inner instantiations
!             --  is the actual of Component of the outermost one and not that
!             --  of the corresponding inner instantiations.
! 
!             Astype := Ancestor_Subtype (E);
!             while Present (Astype)
!               and then Nkind (Parent (Astype)) = N_Subtype_Declaration
!               and then Present (Generic_Parent_Type (Parent (Astype)))
!               and then Is_Entity_Name (Subtype_Indication (Parent (Astype)))
!             loop
!                Check_Private_View (Subtype_Indication (Parent (Astype)));
!                Astype := Ancestor_Subtype (Astype);
!             end loop;
  
              Set_Is_Generic_Actual_Type (E);
  
*************** package body Sem_Ch12 is
*** 6900,6914 ****
  
              if Is_Discrete_Or_Fixed_Point_Type (E) then
                 Set_RM_Size (E, RM_Size (Astype));
- 
-             --  In nested instances, the base type of an access actual may
-             --  itself be private, and need to be exchanged.
- 
-             elsif Is_Access_Type (E)
-               and then Is_Private_Type (Etype (E))
-             then
-                Check_Private_View
-                  (New_Occurrence_Of (Etype (E), Sloc (Instance)));
              end if;
  
           elsif Ekind (E) = E_Package then
--- 7090,7095 ----
*************** package body Sem_Ch12 is
*** 7339,7349 ****
--- 7520,7579 ----
              null;
  
           elsif Present (Entity (Gen_Id))
+            and then No (Renamed_Entity (Entity (Gen_Id)))
             and then Is_Child_Unit (Entity (Gen_Id))
             and then not In_Open_Scopes (Inst_Par)
           then
              Install_Parent (Inst_Par);
              Parent_Installed := True;
+ 
+          --  Handle renaming of generic child unit
+ 
+          elsif Present (Entity (Gen_Id))
+            and then Present (Renamed_Entity (Entity (Gen_Id)))
+            and then Is_Child_Unit (Renamed_Entity (Entity (Gen_Id)))
+          then
+             declare
+                E        : Entity_Id;
+                Ren_Decl : Node_Id;
+ 
+             begin
+                --  The entity of the renamed generic child unit does not
+                --  have any reference to the instantiated parent. In order to
+                --  locate it we traverse the scope containing the renaming
+                --  declaration; the instance of the parent is available in
+                --  the prefix of the renaming declaration. For example:
+ 
+                --     package A is
+                --       package Inst_Par is new ...
+                --       generic package Ren_Child renames Ins_Par.Child;
+                --     end;
+ 
+                --     with A;
+                --     package B is
+                --       package Inst_Child is new A.Ren_Child;
+                --     end;
+ 
+                E := First_Entity (Entity (Prefix (Gen_Id)));
+                while Present (E) loop
+                   if Present (Renamed_Entity (E))
+                     and then
+                       Renamed_Entity (E) = Renamed_Entity (Entity (Gen_Id))
+                   then
+                      Ren_Decl := Parent (E);
+                      Inst_Par := Entity (Prefix (Name (Ren_Decl)));
+ 
+                      if not In_Open_Scopes (Inst_Par) then
+                         Install_Parent (Inst_Par);
+                         Parent_Installed := True;
+                      end if;
+ 
+                      exit;
+                   end if;
+ 
+                   E := Next_Entity (E);
+                end loop;
+             end;
           end if;
  
        elsif In_Enclosing_Instance then
*************** package body Sem_Ch12 is
*** 7445,7536 ****
             and then Present (Full_View (T))
             and then not In_Open_Scopes (Scope (T))
           then
!             --  In the generic, the full type was visible. Save the private
!             --  entity, for subsequent exchange.
  
              Switch_View (T);
  
           elsif Has_Private_View (N)
             and then not Is_Private_Type (T)
             and then not Has_Been_Exchanged (T)
!            and then Etype (Get_Associated_Node (N)) /= T
           then
!             --  Only the private declaration was visible in the generic. If
!             --  the type appears in a subtype declaration, the subtype in the
              --  instance must have a view compatible with that of its parent,
              --  which must be exchanged (see corresponding code in Restore_
!             --  Private_Views). Otherwise, if the type is defined in a parent
!             --  unit, leave full visibility within instance, which is safe.
! 
!             if In_Open_Scopes (Scope (Base_Type (T)))
!               and then not Is_Private_Type (Base_Type (T))
!               and then Comes_From_Source (Base_Type (T))
!             then
!                null;
! 
!             elsif Nkind (Parent (N)) = N_Subtype_Declaration
!               or else not In_Private_Part (Scope (Base_Type (T)))
!             then
!                Prepend_Elmt (T, Exchanged_Views);
!                Exchange_Declarations (Etype (Get_Associated_Node (N)));
!             end if;
! 
!          --  For composite types with inconsistent representation exchange
!          --  component types accordingly.
! 
!          elsif Is_Access_Type (T)
!            and then Is_Private_Type (Designated_Type (T))
!            and then not Has_Private_View (N)
!            and then Present (Full_View (Designated_Type (T)))
!          then
!             Switch_View (Designated_Type (T));
! 
!          elsif Is_Array_Type (T) then
!             if Is_Private_Type (Component_Type (T))
!               and then not Has_Private_View (N)
!               and then Present (Full_View (Component_Type (T)))
!             then
!                Switch_View (Component_Type (T));
!             end if;
! 
!             --  The normal exchange mechanism relies on the setting of a
!             --  flag on the reference in the generic. However, an additional
!             --  mechanism is needed for types that are not explicitly
!             --  mentioned in the generic, but may be needed in expanded code
!             --  in the instance. This includes component types of arrays and
!             --  designated types of access types. This processing must also
!             --  include the index types of arrays which we take care of here.
! 
!             declare
!                Indx : Node_Id;
!                Typ  : Entity_Id;
! 
!             begin
!                Indx := First_Index (T);
!                while Present (Indx) loop
!                   Typ := Base_Type (Etype (Indx));
! 
!                   if Is_Private_Type (Typ)
!                     and then Present (Full_View (Typ))
!                   then
!                      Switch_View (Typ);
!                   end if;
! 
!                   Next_Index (Indx);
!                end loop;
!             end;
! 
!          --  The following case does not test Has_Private_View (N) so it may
!          --  end up switching views when they are not supposed to be switched.
!          --  This might be in keeping with Set_Global_Type setting the flag
!          --  for an array type even if it is not private ???
  
!          elsif Is_Private_Type (T)
!            and then Present (Full_View (T))
!            and then Is_Array_Type (Full_View (T))
!            and then Is_Private_Type (Component_Type (Full_View (T)))
!          then
!             Switch_View (T);
  
           --  Finally, a non-private subtype may have a private base type, which
           --  must be exchanged for consistency. This can happen when a package
--- 7675,7699 ----
             and then Present (Full_View (T))
             and then not In_Open_Scopes (Scope (T))
           then
!             --  In the generic, the full declaration was visible
  
              Switch_View (T);
  
           elsif Has_Private_View (N)
             and then not Is_Private_Type (T)
             and then not Has_Been_Exchanged (T)
!            and then (not In_Open_Scopes (Scope (T))
!                       or else Nkind (Parent (N)) = N_Subtype_Declaration)
           then
!             --  In the generic, only the private declaration was visible
! 
!             --  If the type appears in a subtype declaration, the subtype in
              --  instance must have a view compatible with that of its parent,
              --  which must be exchanged (see corresponding code in Restore_
!             --  Private_Views) so we make an exception to the open scope rule.
  
!             Prepend_Elmt (T, Exchanged_Views);
!             Exchange_Declarations (Etype (Get_Associated_Node (N)));
  
           --  Finally, a non-private subtype may have a private base type, which
           --  must be exchanged for consistency. This can happen when a package
*************** package body Sem_Ch12 is
*** 7637,7643 ****
                 if Node (Elmt) = Scop then
                    Error_Msg_Node_2 := Inner;
                    Error_Msg_NE
!                     ("circular Instantiation: & instantiated within &!",
                       N, Scop);
                    return True;
  
--- 7800,7806 ----
                 if Node (Elmt) = Scop then
                    Error_Msg_Node_2 := Inner;
                    Error_Msg_NE
!                     ("circular instantiation: & instantiated within &!",
                       N, Scop);
                    return True;
  
*************** package body Sem_Ch12 is
*** 7647,7653 ****
                 elsif Contains_Instance_Of (Node (Elmt), Scop, N) then
                    Error_Msg_Node_2 := Inner;
                    Error_Msg_NE
!                     ("circular Instantiation: & instantiated within &!",
                       N, Node (Elmt));
                    return True;
                 end if;
--- 7810,7816 ----
                 elsif Contains_Instance_Of (Node (Elmt), Scop, N) then
                    Error_Msg_Node_2 := Inner;
                    Error_Msg_NE
!                     ("circular instantiation: & instantiated within &!",
                       N, Node (Elmt));
                    return True;
                 end if;
*************** package body Sem_Ch12 is
*** 7701,7709 ****
  
        function In_Defining_Unit_Name (Nam : Node_Id) return Boolean;
        --  True if an identifier is part of the defining program unit name of
!       --  a child unit. The entity of such an identifier must be kept (for
!       --  ASIS use) even though as the name of an enclosing generic it would
!       --  otherwise not be preserved in the generic tree.
  
        ----------------------
        -- Copy_Descendants --
--- 7864,7871 ----
  
        function In_Defining_Unit_Name (Nam : Node_Id) return Boolean;
        --  True if an identifier is part of the defining program unit name of
!       --  a child unit.
!       --  Consider removing this subprogram now that ASIS no longer uses it.
  
        ----------------------
        -- Copy_Descendants --
*************** package body Sem_Ch12 is
*** 7852,7862 ****
  
        --  Special casing for identifiers and other entity names and operators
  
!       if Nkind_In (New_N, N_Character_Literal,
!                           N_Expanded_Name,
!                           N_Identifier,
!                           N_Operator_Symbol)
!         or else Nkind (New_N) in N_Op
        then
           if not Instantiating then
  
--- 8014,8024 ----
  
        --  Special casing for identifiers and other entity names and operators
  
!       if Nkind (New_N) in N_Character_Literal
!                         | N_Expanded_Name
!                         | N_Identifier
!                         | N_Operator_Symbol
!                         | N_Op
        then
           if not Instantiating then
  
*************** package body Sem_Ch12 is
*** 7887,7893 ****
              --  The entities for parent units in the defining_program_unit of a
              --  generic child unit are established when the context of the unit
              --  is first analyzed, before the generic copy is made. They are
!             --  preserved in the copy for use in ASIS queries.
  
              Ent := Entity (New_N);
  
--- 8049,8055 ----
              --  The entities for parent units in the defining_program_unit of a
              --  generic child unit are established when the context of the unit
              --  is first analyzed, before the generic copy is made. They are
!             --  preserved in the copy for use in e.g. ASIS queries.
  
              Ent := Entity (New_N);
  
*************** package body Sem_Ch12 is
*** 7900,7909 ****
                 end if;
  
              elsif No (Ent)
!               or else
!                 not Nkind_In (Ent, N_Defining_Identifier,
!                                    N_Defining_Character_Literal,
!                                    N_Defining_Operator_Symbol)
                or else No (Scope (Ent))
                or else
                  (Scope (Ent) = Current_Instantiated_Parent.Gen_Id
--- 8062,8068 ----
                 end if;
  
              elsif No (Ent)
!               or else Nkind (Ent) not in N_Entity
                or else No (Scope (Ent))
                or else
                  (Scope (Ent) = Current_Instantiated_Parent.Gen_Id
*************** package body Sem_Ch12 is
*** 7936,7941 ****
--- 8095,8211 ----
                       Set_Entity (New_N, Entity (Assoc));
                       Check_Private_View (N);
  
+                      --  Here we deal with a very peculiar case for which the
+                      --  Has_Private_View mechanism is not sufficient, because
+                      --  the reference to the type is implicit in the tree,
+                      --  that is to say, it's not referenced from a node but
+                      --  only from another type, namely through Component_Type.
+ 
+                      --    package P is
+ 
+                      --      type Pt is private;
+ 
+                      --      generic
+                      --        type Ft is array (Positive range <>) of Pt;
+                      --      package G is
+                      --        procedure Check (F1, F2 : Ft; Lt : Boolean);
+                      --      end G;
+ 
+                      --    private
+                      --      type Pt is new Boolean;
+                      --    end P;
+ 
+                      --    package body P is
+                      --      package body G is
+                      --        procedure Check (F1, F2 : Ft; Lt : Boolean) is
+                      --        begin
+                      --          if (F1 < F2) /= Lt then
+                      --            null;
+                      --          end if;
+                      --        end Check;
+                      --      end G;
+                      --    end P;
+ 
+                      --    type Arr is array (Positive range <>) of P.Pt;
+ 
+                      --    package Inst is new P.G (Arr);
+ 
+                      --  Pt is a global type for the generic package G and it
+                      --  is not referenced in its body, but only as component
+                      --  type of Ft, which is a local type. This means that no
+                      --  references to Pt or Ft are seen during the copy of the
+                      --  body, the only reference to Pt being seen is when the
+                      --  actuals are checked by Check_Generic_Actuals, but Pt
+                      --  is still private at this point. In the end, the views
+                      --  of Pt are not switched in the body and, therefore, the
+                      --  array comparison is rejected because the component is
+                      --  still private.
+ 
+                      --  Adding e.g. a dummy variable of type Pt in the body is
+                      --  sufficient to make everything work, so we generate an
+                      --  artificial reference to Pt on the fly and thus force
+                      --  the switching of views on the grounds that, if the
+                      --  comparison was accepted during the semantic analysis
+                      --  of the generic, this means that the component cannot
+                      --  have been private (see Sem_Type.Valid_Comparison_Arg).
+ 
+                      if Nkind (Assoc) in N_Op_Compare
+                        and then Present (Etype (Left_Opnd (Assoc)))
+                        and then Is_Array_Type (Etype (Left_Opnd (Assoc)))
+                        and then Present (Etype (Right_Opnd (Assoc)))
+                        and then Is_Array_Type (Etype (Right_Opnd (Assoc)))
+                      then
+                         declare
+                            Ltyp : constant Entity_Id :=
+                                                      Etype (Left_Opnd (Assoc));
+                            Rtyp : constant Entity_Id :=
+                                                     Etype (Right_Opnd (Assoc));
+                         begin
+                            if Is_Private_Type (Component_Type (Ltyp)) then
+                               Check_Private_View
+                                 (New_Occurrence_Of (Component_Type (Ltyp),
+                                  Sloc (N)));
+                            end if;
+                            if Is_Private_Type (Component_Type (Rtyp)) then
+                               Check_Private_View
+                                 (New_Occurrence_Of (Component_Type (Rtyp),
+                                  Sloc (N)));
+                            end if;
+                         end;
+ 
+                      --  Here is a similar case, for the Designated_Type of an
+                      --  access type that is present as target type in a type
+                      --  conversion from another access type. In this case, if
+                      --  the base types of the designated types are different
+                      --  and the conversion was accepted during the semantic
+                      --  analysis of the generic, this means that the target
+                      --  type cannot have been private (see Valid_Conversion).
+ 
+                      elsif Nkind (Assoc) = N_Identifier
+                        and then Nkind (Parent (Assoc)) = N_Type_Conversion
+                        and then Subtype_Mark (Parent (Assoc)) = Assoc
+                        and then Present (Etype (Assoc))
+                        and then Is_Access_Type (Etype (Assoc))
+                        and then Present (Etype (Expression (Parent (Assoc))))
+                        and then
+                          Is_Access_Type (Etype (Expression (Parent (Assoc))))
+                      then
+                         declare
+                            Targ_Desig : constant Entity_Id :=
+                              Designated_Type (Etype (Assoc));
+                            Expr_Desig : constant Entity_Id :=
+                              Designated_Type
+                                (Etype (Expression (Parent (Assoc))));
+                         begin
+                            if Base_Type (Targ_Desig) /= Base_Type (Expr_Desig)
+                              and then Is_Private_Type (Targ_Desig)
+                            then
+                               Check_Private_View
+                                 (New_Occurrence_Of (Targ_Desig, Sloc (N)));
+                            end if;
+                         end;
+                      end if;
+ 
                    --  The node is a reference to a global type and acts as the
                    --  subtype mark of a qualified expression created in order
                    --  to aid resolution of accidental overloading in instances.
*************** package body Sem_Ch12 is
*** 7959,7967 ****
                    then
                       Set_Entity (New_N, Entity (Name (Assoc)));
  
!                   elsif Nkind_In (Assoc, N_Defining_Identifier,
!                                          N_Defining_Character_Literal,
!                                          N_Defining_Operator_Symbol)
                      and then Expander_Active
                    then
                       --  Inlining case: we are copying a tree that contains
--- 8229,8235 ----
                    then
                       Set_Entity (New_N, Entity (Name (Assoc)));
  
!                   elsif Nkind (Assoc) in N_Entity
                      and then Expander_Active
                    then
                       --  Inlining case: we are copying a tree that contains
*************** package body Sem_Ch12 is
*** 8170,8176 ****
              Set_Assignment_OK (Name (New_N), True);
           end if;
  
!       elsif Nkind_In (N, N_Aggregate, N_Extension_Aggregate) then
           if not Instantiating then
              Set_Associated_Node (N, New_N);
  
--- 8438,8444 ----
              Set_Assignment_OK (Name (New_N), True);
           end if;
  
!       elsif Nkind (N) in N_Aggregate | N_Extension_Aggregate then
           if not Instantiating then
              Set_Associated_Node (N, New_N);
  
*************** package body Sem_Ch12 is
*** 8290,8296 ****
           --  Do not copy Comment or Ident pragmas their content is relevant to
           --  the generic unit, not to the instantiating unit.
  
!          if Nam_In (Pragma_Name_Unmapped (N), Name_Comment, Name_Ident) then
              New_N := Make_Null_Statement (Sloc (N));
  
           --  Do not copy pragmas generated from aspects because the pragmas do
--- 8558,8564 ----
           --  Do not copy Comment or Ident pragmas their content is relevant to
           --  the generic unit, not to the instantiating unit.
  
!          if Pragma_Name_Unmapped (N) in Name_Comment | Name_Ident then
              New_N := Make_Null_Statement (Sloc (N));
  
           --  Do not copy pragmas generated from aspects because the pragmas do
*************** package body Sem_Ch12 is
*** 8310,8316 ****
              Copy_Descendants;
           end if;
  
!       elsif Nkind_In (N, N_Integer_Literal, N_Real_Literal) then
  
           --  No descendant fields need traversing
  
--- 8578,8584 ----
              Copy_Descendants;
           end if;
  
!       elsif Nkind (N) in N_Integer_Literal | N_Real_Literal then
  
           --  No descendant fields need traversing
  
*************** package body Sem_Ch12 is
*** 8534,8540 ****
  
        while not Is_List_Member (P1)
          or else not Is_List_Member (P2)
!         or else List_Containing (P1) /= List_Containing (P2)
        loop
           P1 := True_Parent (P1);
           P2 := True_Parent (P2);
--- 8802,8808 ----
  
        while not Is_List_Member (P1)
          or else not Is_List_Member (P2)
!         or else not In_Same_List (P1, P2)
        loop
           P1 := True_Parent (P1);
           P2 := True_Parent (P2);
*************** package body Sem_Ch12 is
*** 8719,8726 ****
    is
        Gen_Unit : constant Entity_Id := Get_Generic_Entity (Inst_Node);
        Par      : constant Entity_Id := Scope (Gen_Unit);
-       E_G_Id   : Entity_Id;
        Enc_G    : Entity_Id;
        Enc_I    : Node_Id;
        F_Node   : Node_Id;
  
--- 8987,8994 ----
    is
        Gen_Unit : constant Entity_Id := Get_Generic_Entity (Inst_Node);
        Par      : constant Entity_Id := Scope (Gen_Unit);
        Enc_G    : Entity_Id;
+       Enc_G_F  : Node_Id;
        Enc_I    : Node_Id;
        F_Node   : Node_Id;
  
*************** package body Sem_Ch12 is
*** 8813,8819 ****
           --
           --    procedure P ...  --  this body freezes Parent_Inst
           --
!          --    package Inst is new ...
           --
           --  In this particular scenario, the freeze node for Inst must be
           --  inserted in the same manner as that of Parent_Inst - before the
--- 9081,9087 ----
           --
           --    procedure P ...  --  this body freezes Parent_Inst
           --
!          --    procedure Inst is new ...
           --
           --  In this particular scenario, the freeze node for Inst must be
           --  inserted in the same manner as that of Parent_Inst - before the
*************** package body Sem_Ch12 is
*** 8824,8832 ****
           --  after that of Parent_Inst. This relation is established by
           --  comparing the Slocs of Parent_Inst freeze node and Inst.
  
!          elsif List_Containing (Get_Unit_Instantiation_Node (Par)) =
!                List_Containing (Inst_Node)
!            and then Sloc (Freeze_Node (Par)) < Sloc (Inst_Node)
           then
              Insert_Freeze_Node_For_Instance (Inst_Node, F_Node);
  
--- 9092,9099 ----
           --  after that of Parent_Inst. This relation is established by
           --  comparing the Slocs of Parent_Inst freeze node and Inst.
  
!          elsif In_Same_List (Get_Unit_Instantiation_Node (Par), Inst_Node)
!            and then Sloc (Freeze_Node (Par)) <= Sloc (Inst_Node)
           then
              Insert_Freeze_Node_For_Instance (Inst_Node, F_Node);
  
*************** package body Sem_Ch12 is
*** 8845,8856 ****
          and then Present (Freeze_Node (Par))
          and then Present (Enc_I)
        then
!          if In_Same_Declarative_Part (Parent (Freeze_Node (Par)), Enc_I)
!            or else
!              (Nkind (Enc_I) = N_Package_Body
!                and then In_Same_Declarative_Part
!                           (Parent (Freeze_Node (Par)), Parent (Enc_I)))
!          then
              --  The enclosing package may contain several instances. Rather
              --  than computing the earliest point at which to insert its freeze
              --  node, we place it at the end of the declarative part of the
--- 9112,9118 ----
          and then Present (Freeze_Node (Par))
          and then Present (Enc_I)
        then
!          if In_Same_Declarative_Part (Parent (Freeze_Node (Par)), Enc_I) then
              --  The enclosing package may contain several instances. Rather
              --  than computing the earliest point at which to insert its freeze
              --  node, we place it at the end of the declarative part of the
*************** package body Sem_Ch12 is
*** 8867,8880 ****
          and then Enc_G /= Enc_I
          and then Earlier (Inst_Node, Gen_Body)
        then
-          if Nkind (Enc_G) = N_Package_Body then
-             E_G_Id :=
-               Corresponding_Spec (Enc_G);
-          else pragma Assert (Nkind (Enc_G) = N_Package_Body_Stub);
-             E_G_Id :=
-               Corresponding_Spec (Proper_Body (Unit (Library_Unit (Enc_G))));
-          end if;
- 
           --  Freeze package that encloses instance, and place node after the
           --  package that encloses generic. If enclosing package is already
           --  frozen we have to assume it is at the proper place. This may be a
--- 9129,9134 ----
*************** package body Sem_Ch12 is
*** 8902,8911 ****
  
           --  Freeze enclosing subunit before instance
  
!          Ensure_Freeze_Node (E_G_Id);
  
!          if not Is_List_Member (Freeze_Node (E_G_Id)) then
!             Insert_After (Enc_G, Freeze_Node (E_G_Id));
           end if;
  
           Insert_Freeze_Node_For_Instance (Inst_Node, F_Node);
--- 9156,9165 ----
  
           --  Freeze enclosing subunit before instance
  
!          Enc_G_F := Package_Freeze_Node (Enc_G);
  
!          if not Is_List_Member (Enc_G_F) then
!             Insert_After (Enc_G, Enc_G_F);
           end if;
  
           Insert_Freeze_Node_For_Instance (Inst_Node, F_Node);
*************** package body Sem_Ch12 is
*** 9009,9018 ****
  
        else
           Inst := Next (Decl);
!          while not Nkind_In (Inst, N_Formal_Package_Declaration,
!                                    N_Function_Instantiation,
!                                    N_Package_Instantiation,
!                                    N_Procedure_Instantiation)
           loop
              Next (Inst);
           end loop;
--- 9263,9272 ----
  
        else
           Inst := Next (Decl);
!          while Nkind (Inst) not in N_Formal_Package_Declaration
!                                  | N_Function_Instantiation
!                                  | N_Package_Instantiation
!                                  | N_Procedure_Instantiation
           loop
              Next (Inst);
           end loop;
*************** package body Sem_Ch12 is
*** 9041,9046 ****
--- 9295,9326 ----
        return False;
     end Has_Been_Exchanged;
  
+    -------------------
+    -- Has_Contracts --
+    -------------------
+ 
+    function Has_Contracts (Decl : Node_Id) return Boolean is
+       A_List : constant List_Id := Aspect_Specifications (Decl);
+       A_Spec : Node_Id;
+       A_Id   : Aspect_Id;
+    begin
+       if No (A_List) then
+          return False;
+       else
+          A_Spec := First (A_List);
+          while Present (A_Spec) loop
+             A_Id := Get_Aspect_Id (A_Spec);
+             if A_Id = Aspect_Pre or else A_Id = Aspect_Post then
+                return True;
+             end if;
+ 
+             Next (A_Spec);
+          end loop;
+ 
+          return False;
+       end if;
+    end Has_Contracts;
+ 
     ----------
     -- Hash --
     ----------
*************** package body Sem_Ch12 is
*** 9279,9285 ****
           while Present (P)
             and then Nkind (Parent (P)) /= N_Compilation_Unit
           loop
!             if Nkind_In (P, N_Package_Body, N_Subprogram_Body) then
                 if Nkind (Parent (P)) = N_Subunit then
                    return Corresponding_Stub (Parent (P));
                 else
--- 9559,9565 ----
           while Present (P)
             and then Nkind (Parent (P)) /= N_Compilation_Unit
           loop
!             if Nkind (P) in N_Package_Body | N_Subprogram_Body then
                 if Nkind (Parent (P)) = N_Subunit then
                    return Corresponding_Stub (Parent (P));
                 else
*************** package body Sem_Ch12 is
*** 9377,9384 ****
                    --  the current scope as well.
  
                    elsif Present (Next (N))
!                     and then Nkind_In (Next (N), N_Subprogram_Body,
!                                                  N_Package_Body)
                      and then Comes_From_Source (Next (N))
                    then
                       null;
--- 9657,9664 ----
                    --  the current scope as well.
  
                    elsif Present (Next (N))
!                     and then Nkind (Next (N)) in N_Subprogram_Body
!                                                | N_Package_Body
                      and then Comes_From_Source (Next (N))
                    then
                       null;
*************** package body Sem_Ch12 is
*** 9592,9599 ****
  
        Must_Delay :=
          (Gen_Unit = Act_Unit
!           and then (Nkind_In (Gen_Unit, N_Generic_Package_Declaration,
!                                         N_Package_Declaration)
                       or else (Gen_Unit = Body_Unit
                                 and then True_Sloc (N, Act_Unit) <
                                            Sloc (Orig_Body)))
--- 9872,9879 ----
  
        Must_Delay :=
          (Gen_Unit = Act_Unit
!           and then (Nkind (Gen_Unit) in N_Generic_Package_Declaration
!                                       | N_Package_Declaration
                       or else (Gen_Unit = Body_Unit
                                 and then True_Sloc (N, Act_Unit) <
                                            Sloc (Orig_Body)))
*************** package body Sem_Ch12 is
*** 9654,9660 ****
  
                 if Parent (List_Containing (Get_Unit_Instantiation_Node (Par)))
                      = Parent (List_Containing (N))
!                  and then Sloc (Freeze_Node (Par)) < Sloc (N)
                 then
                    Insert_Freeze_Node_For_Instance (N, F_Node);
                 else
--- 9934,9940 ----
  
                 if Parent (List_Containing (Get_Unit_Instantiation_Node (Par)))
                      = Parent (List_Containing (N))
!                  and then Sloc (Freeze_Node (Par)) <= Sloc (N)
                 then
                    Insert_Freeze_Node_For_Instance (N, F_Node);
                 else
*************** package body Sem_Ch12 is
*** 9664,9670 ****
              --  Freeze package enclosing instance of inner generic after
              --  instance of enclosing generic.
  
!             elsif Nkind_In (Parent (N), N_Package_Body, N_Subprogram_Body)
                and then In_Same_Declarative_Part
                           (Parent (Freeze_Node (Par)), Parent (N))
              then
--- 9944,9950 ----
              --  Freeze package enclosing instance of inner generic after
              --  instance of enclosing generic.
  
!             elsif Nkind (Parent (N)) in N_Package_Body | N_Subprogram_Body
                and then In_Same_Declarative_Part
                           (Parent (Freeze_Node (Par)), Parent (N))
              then
*************** package body Sem_Ch12 is
*** 9708,9715 ****
                       --  the enclosing package, insert the freeze node after
                       --  the body.
  
!                      elsif List_Containing (Freeze_Node (Par)) =
!                            List_Containing (Parent (N))
                         and then Sloc (Freeze_Node (Par)) < Sloc (Parent (N))
                       then
                          Insert_Freeze_Node_For_Instance
--- 9988,9994 ----
                       --  the enclosing package, insert the freeze node after
                       --  the body.
  
!                      elsif In_Same_List (Freeze_Node (Par), Parent (N))
                         and then Sloc (Freeze_Node (Par)) < Sloc (Parent (N))
                       then
                          Insert_Freeze_Node_For_Instance
*************** package body Sem_Ch12 is
*** 10168,10174 ****
              =>
                 Formal_Ent := Defining_Identifier (F);
  
!                while Chars (Act) /= Chars (Formal_Ent) loop
                    Next_Entity (Act);
                 end loop;
  
--- 10447,10455 ----
              =>
                 Formal_Ent := Defining_Identifier (F);
  
!                while Present (Act)
!                  and then Chars (Act) /= Chars (Formal_Ent)
!                loop
                    Next_Entity (Act);
                 end loop;
  
*************** package body Sem_Ch12 is
*** 10179,10185 ****
              =>
                 Formal_Ent := Defining_Entity (F);
  
!                while Chars (Act) /= Chars (Formal_Ent) loop
                    Next_Entity (Act);
                 end loop;
  
--- 10460,10468 ----
              =>
                 Formal_Ent := Defining_Entity (F);
  
!                while Present (Act)
!                  and then Chars (Act) /= Chars (Formal_Ent)
!                loop
                    Next_Entity (Act);
                 end loop;
  
*************** package body Sem_Ch12 is
*** 10364,10370 ****
        --  such as a parent generic within the body of a generic child.
  
        if not Is_Entity_Name (Actual)
!         or else not Ekind_In (Entity (Actual), E_Generic_Package, E_Package)
        then
           Error_Msg_N
             ("expect package instance to instantiate formal", Actual);
--- 10647,10653 ----
        --  such as a parent generic within the body of a generic child.
  
        if not Is_Entity_Name (Actual)
!         or else not Is_Package_Or_Generic_Package (Entity (Actual))
        then
           Error_Msg_N
             ("expect package instance to instantiate formal", Actual);
*************** package body Sem_Ch12 is
*** 10518,10523 ****
--- 10801,10816 ----
                    Next_Non_Pragma (Formal_Node);
                    Next (Actual_Of_Formal);
  
+                   --  A formal subprogram may be overloaded, so advance in
+                   --  the list of actuals to make sure we do not match two
+                   --  successive formals to the same actual. This is only
+                   --  relevant for overloadable entities, others have
+                   --  distinct names.
+ 
+                   if Is_Overloadable (Actual_Ent) then
+                      Next_Entity (Actual_Ent);
+                   end if;
+ 
                 else
                    --  No further formals to match, but the generic part may
                    --  contain inherited operation that are not hidden in the
*************** package body Sem_Ch12 is
*** 10663,10672 ****
           end if;
  
           if (Present (Act_E) and then Is_Overloadable (Act_E))
!            or else Nkind_In (Act, N_Attribute_Reference,
!                                   N_Indexed_Component,
!                                   N_Character_Literal,
!                                   N_Explicit_Dereference)
           then
              return;
           end if;
--- 10956,10965 ----
           end if;
  
           if (Present (Act_E) and then Is_Overloadable (Act_E))
!            or else Nkind (Act) in N_Attribute_Reference
!                                 | N_Indexed_Component
!                                 | N_Character_Literal
!                                 | N_Explicit_Dereference
           then
              return;
           end if;
*************** package body Sem_Ch12 is
*** 10699,10705 ****
        --  Create new entity for the actual (New_Copy_Tree does not), and
        --  indicate that it is an actual.
  
!       New_Subp := Make_Defining_Identifier (Loc, Chars (Formal_Sub));
        Set_Ekind (New_Subp, Ekind (Analyzed_S));
        Set_Is_Generic_Actual_Subprogram (New_Subp);
        Set_Defining_Unit_Name (New_Spec, New_Subp);
--- 10992,11014 ----
        --  Create new entity for the actual (New_Copy_Tree does not), and
        --  indicate that it is an actual.
  
!       --  If the actual is not an entity (i.e. an attribute reference)
!       --  and the formal includes aspect specifications for contracts,
!       --  we create an internal name for the renaming declaration. The
!       --  constructed wrapper contains a call to the entity in the renaming.
!       --  This is an expansion activity, as is the wrapper creation.
! 
!       if Ada_Version >= Ada_2020
!         and then Has_Contracts (Analyzed_Formal)
!         and then not Is_Entity_Name (Actual)
!         and then Expander_Active
!       then
!          New_Subp := Make_Temporary (Sloc (Actual), 'S');
!          Set_Defining_Unit_Name (New_Spec, New_Subp);
!       else
!          New_Subp := Make_Defining_Identifier (Loc, Chars (Formal_Sub));
!       end if;
! 
        Set_Ekind (New_Subp, Ekind (Analyzed_S));
        Set_Is_Generic_Actual_Subprogram (New_Subp);
        Set_Defining_Unit_Name (New_Spec, New_Subp);
*************** package body Sem_Ch12 is
*** 10749,10758 ****
           Nam := Actual;
  
        elsif Present (Default_Name (Formal)) then
!          if not Nkind_In (Default_Name (Formal), N_Attribute_Reference,
!                                                  N_Selected_Component,
!                                                  N_Indexed_Component,
!                                                  N_Character_Literal)
             and then Present (Entity (Default_Name (Formal)))
           then
              Nam := New_Occurrence_Of (Entity (Default_Name (Formal)), Loc);
--- 11058,11067 ----
           Nam := Actual;
  
        elsif Present (Default_Name (Formal)) then
!          if Nkind (Default_Name (Formal)) not in N_Attribute_Reference
!                                                | N_Selected_Component
!                                                | N_Indexed_Component
!                                                | N_Character_Literal
             and then Present (Entity (Default_Name (Formal)))
           then
              Nam := New_Occurrence_Of (Entity (Default_Name (Formal)), Loc);
*************** package body Sem_Ch12 is
*** 10788,10794 ****
                 Make_Handled_Sequence_Of_Statements (Loc,
                   Statements => New_List (Make_Null_Statement (Loc))));
  
!          Set_Is_Intrinsic_Subprogram (Defining_Unit_Name (New_Spec));
           return Decl_Node;
  
        else
--- 11097,11109 ----
                 Make_Handled_Sequence_Of_Statements (Loc,
                   Statements => New_List (Make_Null_Statement (Loc))));
  
!          --  RM 12.6 (16 2/2): The procedure has convention Intrinsic
! 
!          Set_Convention (Defining_Unit_Name (New_Spec), Convention_Intrinsic);
! 
!          --  Eliminate the calls to it when optimization is enabled
! 
!          Set_Is_Inlined (Defining_Unit_Name (New_Spec));
           return Decl_Node;
  
        else
*************** package body Sem_Ch12 is
*** 10924,10964 ****
        Subt_Decl   : Node_Id             := Empty;
        Subt_Mark   : Node_Id             := Empty;
  
-       function Copy_Access_Def return Node_Id;
-       --  If formal is an anonymous access, copy access definition of formal
-       --  for generated object declaration.
- 
-       ---------------------
-       -- Copy_Access_Def --
-       ---------------------
- 
-       function Copy_Access_Def return Node_Id is
-       begin
-          Def := New_Copy_Tree (Acc_Def);
- 
-          --  In addition, if formal is an access to subprogram we need to
-          --  generate new formals for the signature of the default, so that
-          --  the tree is properly formatted for ASIS use.
- 
-          if Present (Access_To_Subprogram_Definition (Acc_Def)) then
-             declare
-                Par_Spec : Node_Id;
-             begin
-                Par_Spec :=
-                  First (Parameter_Specifications
-                           (Access_To_Subprogram_Definition (Def)));
-                while Present (Par_Spec) loop
-                   Set_Defining_Identifier (Par_Spec,
-                     Make_Defining_Identifier (Sloc (Acc_Def),
-                       Chars => Chars (Defining_Identifier (Par_Spec))));
-                   Next (Par_Spec);
-                end loop;
-             end;
-          end if;
- 
-          return Def;
-       end Copy_Access_Def;
- 
     --  Start of processing for Instantiate_Object
  
     begin
--- 11239,11244 ----
*************** package body Sem_Ch12 is
*** 10990,10997 ****
           --  use the actual directly, rather than a copy, because it is not
           --  used further in the list of actuals, and because a copy or a use
           --  of relocate_node is incorrect if the instance is nested within a
!          --  generic. In order to simplify ASIS searches, the Generic_Parent
!          --  field links the declaration to the generic association.
  
           if No (Actual) then
              Error_Msg_NE
--- 11270,11278 ----
           --  use the actual directly, rather than a copy, because it is not
           --  used further in the list of actuals, and because a copy or a use
           --  of relocate_node is incorrect if the instance is nested within a
!          --  generic. In order to simplify e.g. ASIS queries, the
!          --  Generic_Parent field links the declaration to the generic
!          --  association.
  
           if No (Actual) then
              Error_Msg_NE
*************** package body Sem_Ch12 is
*** 11103,11112 ****
              --  access type.
  
              if Ada_Version < Ada_2005
!               or else Ekind (Base_Type (Ftyp))           /=
!                                                   E_Anonymous_Access_Type
!               or else Ekind (Base_Type (Etype (Actual))) /=
!                                                   E_Anonymous_Access_Type
              then
                 Error_Msg_NE
                   ("type of actual does not match type of&", Actual, Gen_Obj);
--- 11384,11391 ----
              --  access type.
  
              if Ada_Version < Ada_2005
!               or else not Is_Anonymous_Access_Type (Base_Type (Ftyp))
!               or else not Is_Anonymous_Access_Type (Base_Type (Etype (Actual)))
              then
                 Error_Msg_NE
                   ("type of actual does not match type of&", Actual, Gen_Obj);
*************** package body Sem_Ch12 is
*** 11115,11122 ****
  
           Note_Possible_Modification (Actual, Sure => True);
  
!          --  Check for instantiation with atomic/volatile object actual for
!          --  nonatomic/nonvolatile formal (RM C.6 (12)).
  
           if Is_Atomic_Object (Actual) and then not Is_Atomic (Orig_Ftyp) then
              Error_Msg_NE
--- 11394,11401 ----
  
           Note_Possible_Modification (Actual, Sure => True);
  
!          --  Check for instantiation with atomic/volatile/VFA object actual for
!          --  nonatomic/nonvolatile/nonVFA formal (RM C.6 (12)).
  
           if Is_Atomic_Object (Actual) and then not Is_Atomic (Orig_Ftyp) then
              Error_Msg_NE
*************** package body Sem_Ch12 is
*** 11130,11152 ****
                ("cannot instantiate nonvolatile formal & of mode in out",
                 Actual, Gen_Obj);
              Error_Msg_N ("\with volatile object actual (RM C.6(12))", Actual);
           end if;
  
!          --  Check for instantiation on nonatomic subcomponent of an atomic
!          --  object in Ada 2020 (RM C.6 (13)).
  
           if Ada_Version >= Ada_2020
!             and then Is_Subcomponent_Of_Atomic_Object (Actual)
              and then not Is_Atomic_Object (Actual)
           then
              Error_Msg_NE
                ("cannot instantiate formal & of mode in out with actual",
                 Actual, Gen_Obj);
              Error_Msg_N
!               ("\nonatomic subcomponent of atomic object (RM C.6(13))",
                 Actual);
           end if;
  
        --  Formal in-parameter
  
        else
--- 11409,11478 ----
                ("cannot instantiate nonvolatile formal & of mode in out",
                 Actual, Gen_Obj);
              Error_Msg_N ("\with volatile object actual (RM C.6(12))", Actual);
+ 
+          elsif Is_Volatile_Full_Access_Object (Actual)
+            and then not Is_Volatile_Full_Access (Orig_Ftyp)
+          then
+             Error_Msg_NE
+               ("cannot instantiate nonfull access formal & of mode in out",
+                Actual, Gen_Obj);
+             Error_Msg_N
+               ("\with full access object actual (RM C.6(12))", Actual);
           end if;
  
!          --  Check for instantiation on nonatomic subcomponent of a full access
!          --  object in Ada 2020 (RM C.6 (12)).
  
           if Ada_Version >= Ada_2020
!             and then Is_Subcomponent_Of_Full_Access_Object (Actual)
              and then not Is_Atomic_Object (Actual)
           then
              Error_Msg_NE
                ("cannot instantiate formal & of mode in out with actual",
                 Actual, Gen_Obj);
              Error_Msg_N
!               ("\nonatomic subcomponent of full access object (RM C.6(12))",
                 Actual);
           end if;
  
+          --  Check actual/formal compatibility with respect to the four
+          --  volatility refinement aspects.
+ 
+          declare
+             Actual_Obj : Entity_Id;
+             N          : Node_Id := Actual;
+          begin
+             --  Similar to Sem_Util.Get_Enclosing_Object, but treat
+             --  pointer dereference like component selection.
+             loop
+                if Is_Entity_Name (N) then
+                   Actual_Obj := Entity (N);
+                   exit;
+                end if;
+ 
+                case Nkind (N) is
+                   when N_Indexed_Component
+                      | N_Selected_Component
+                      | N_Slice
+                      | N_Explicit_Dereference
+                   =>
+                      N := Prefix (N);
+ 
+                   when N_Type_Conversion =>
+                      N := Expression (N);
+ 
+                   when others =>
+                      Actual_Obj := Etype (N);
+                      exit;
+                end case;
+             end loop;
+ 
+             Check_Volatility_Compatibility
+               (Actual_Obj, A_Gen_Obj, "actual object",
+                "its corresponding formal object of mode in out",
+                Srcpos_Bearer => Actual);
+          end;
+ 
        --  Formal in-parameter
  
        else
*************** package body Sem_Ch12 is
*** 11159,11166 ****
           if Present (Actual) then
              if Present (Subt_Mark) then
                 Def := New_Copy_Tree (Subt_Mark);
!             else pragma Assert (Present (Acc_Def));
!                Def := Copy_Access_Def;
              end if;
  
              Decl_Node :=
--- 11485,11493 ----
           if Present (Actual) then
              if Present (Subt_Mark) then
                 Def := New_Copy_Tree (Subt_Mark);
!             else
!                pragma Assert (Present (Acc_Def));
!                Def := New_Copy_Tree (Acc_Def);
              end if;
  
              Decl_Node :=
*************** package body Sem_Ch12 is
*** 11240,11248 ****
              --  Use default to construct declaration
  
              if Present (Subt_Mark) then
!                Def := New_Copy (Subt_Mark);
!             else pragma Assert (Present (Acc_Def));
!                Def := Copy_Access_Def;
              end if;
  
              Decl_Node :=
--- 11567,11576 ----
              --  Use default to construct declaration
  
              if Present (Subt_Mark) then
!                Def := New_Copy_Tree (Subt_Mark);
!             else
!                pragma Assert (Present (Acc_Def));
!                Def := New_Copy_Tree (Acc_Def);
              end if;
  
              Decl_Node :=
*************** package body Sem_Ch12 is
*** 11299,11321 ****
           Actual_Decl := Parent (Entity (Actual));
        end if;
  
!       --  Ada 2005 (AI-423): For a formal object declaration with a null
!       --  exclusion or an access definition that has a null exclusion: If the
!       --  actual matching the formal object declaration denotes a generic
!       --  formal object of another generic unit G, and the instantiation
!       --  containing the actual occurs within the body of G or within the body
!       --  of a generic unit declared within the declarative region of G, then
!       --  the declaration of the formal object of G must have a null exclusion.
!       --  Otherwise, the subtype of the actual matching the formal object
!       --  declaration shall exclude null.
  
        if Ada_Version >= Ada_2005
          and then Present (Actual_Decl)
!         and then Nkind_In (Actual_Decl, N_Formal_Object_Declaration,
!                                         N_Object_Declaration)
          and then Nkind (Analyzed_Formal) = N_Formal_Object_Declaration
          and then not Has_Null_Exclusion (Actual_Decl)
          and then Has_Null_Exclusion (Analyzed_Formal)
        then
           Error_Msg_Sloc := Sloc (Analyzed_Formal);
           Error_Msg_N
--- 11627,11658 ----
           Actual_Decl := Parent (Entity (Actual));
        end if;
  
!       --  Ada 2005 (AI-423) refined by AI12-0287:
!       --  For an object_renaming_declaration with a null_exclusion or an
!       --  access_definition that has a null_exclusion, the subtype of the
!       --  object_name shall exclude null. In addition, if the
!       --  object_renaming_declaration occurs within the body of a generic unit
!       --  G or within the body of a generic unit declared within the
!       --  declarative region of generic unit G, then:
!       --  * if the object_name statically denotes a generic formal object of
!       --    mode in out of G, then the declaration of that object shall have a
!       --    null_exclusion;
!       --  * if the object_name statically denotes a call of a generic formal
!       --    function of G, then the declaration of the result of that function
!       --    shall have a null_exclusion.
  
        if Ada_Version >= Ada_2005
          and then Present (Actual_Decl)
!         and then Nkind (Actual_Decl) in N_Formal_Object_Declaration
!                                       | N_Object_Declaration
          and then Nkind (Analyzed_Formal) = N_Formal_Object_Declaration
          and then not Has_Null_Exclusion (Actual_Decl)
          and then Has_Null_Exclusion (Analyzed_Formal)
+         and then Ekind (Defining_Identifier (Analyzed_Formal))
+                   = E_Generic_In_Out_Parameter
+         and then ((In_Generic_Scope (Entity (Actual))
+                     and then In_Package_Body (Scope (Entity (Actual))))
+                   or else not Can_Never_Be_Null (Etype (Actual)))
        then
           Error_Msg_Sloc := Sloc (Analyzed_Formal);
           Error_Msg_N
*************** package body Sem_Ch12 is
*** 11331,11336 ****
--- 11668,11674 ----
          and then Present (Actual)
          and then Is_Object_Reference (Actual)
          and then Is_Effectively_Volatile_Object (Actual)
+         and then not Is_Effectively_Volatile (A_Gen_Obj)
        then
           Error_Msg_N
             ("volatile object cannot act as actual in generic instantiation",
*************** package body Sem_Ch12 is
*** 11356,11361 ****
--- 11694,11701 ----
        Act_Decl    : constant Node_Id    := Body_Info.Act_Decl;
        Act_Decl_Id : constant Entity_Id  := Defining_Entity (Act_Decl);
        Act_Spec    : constant Node_Id    := Specification (Act_Decl);
+       Ctx_Parents : Elist_Id            := No_Elist;
+       Ctx_Top     : Int                 := 0;
        Inst_Node   : constant Node_Id    := Body_Info.Inst_Node;
        Gen_Id      : constant Node_Id    := Name (Inst_Node);
        Gen_Unit    : constant Entity_Id  := Get_Generic_Entity (Inst_Node);
*************** package body Sem_Ch12 is
*** 11367,11372 ****
--- 11707,11723 ----
        --  appear uninitialized. This is suspicious, unless the actual is a
        --  fully initialized type.
  
+       procedure Install_Parents_Of_Generic_Context
+         (Inst_Scope  : Entity_Id;
+          Ctx_Parents : out Elist_Id);
+       --  Inst_Scope is the scope where the instance appears within; when it
+       --  appears within a generic child package G, this routine collects and
+       --  installs the enclosing packages of G in the scopes stack; installed
+       --  packages are returned in Ctx_Parents.
+ 
+       procedure Remove_Parents_Of_Generic_Context (Ctx_Parents : Elist_Id);
+       --  Reverse effect after instantiation is complete
+ 
        -----------------------------
        -- Check_Initialized_Types --
        -----------------------------
*************** package body Sem_Ch12 is
*** 11430,11435 ****
--- 11781,11840 ----
           end loop;
        end Check_Initialized_Types;
  
+       ----------------------------------------
+       -- Install_Parents_Of_Generic_Context --
+       ----------------------------------------
+ 
+       procedure Install_Parents_Of_Generic_Context
+         (Inst_Scope  : Entity_Id;
+          Ctx_Parents : out Elist_Id)
+       is
+          Elmt : Elmt_Id;
+          S    : Entity_Id;
+ 
+       begin
+          Ctx_Parents := New_Elmt_List;
+ 
+          --  Collect context parents (ie. parents where the instantiation
+          --  appears within).
+ 
+          S := Inst_Scope;
+          while S /= Standard_Standard loop
+             Prepend_Elmt (S, Ctx_Parents);
+             S := Scope (S);
+          end loop;
+ 
+          --  Install enclosing parents
+ 
+          Elmt := First_Elmt (Ctx_Parents);
+          while Present (Elmt) loop
+             Push_Scope (Node (Elmt));
+             Set_Is_Immediately_Visible (Node (Elmt));
+             Next_Elmt (Elmt);
+          end loop;
+       end Install_Parents_Of_Generic_Context;
+ 
+       ---------------------------------------
+       -- Remove_Parents_Of_Generic_Context --
+       ---------------------------------------
+ 
+       procedure Remove_Parents_Of_Generic_Context (Ctx_Parents : Elist_Id) is
+          Elmt : Elmt_Id;
+ 
+       begin
+          --  Traverse Ctx_Parents in LIFO order to check the removed scopes
+ 
+          Elmt := Last_Elmt (Ctx_Parents);
+          while Present (Elmt) loop
+             pragma Assert (Current_Scope = Node (Elmt));
+             Set_Is_Immediately_Visible (Current_Scope, False);
+             Pop_Scope;
+ 
+             Remove_Last_Elmt (Ctx_Parents);
+             Elmt := Last_Elmt (Ctx_Parents);
+          end loop;
+       end Remove_Parents_Of_Generic_Context;
+ 
        --  Local variables
  
        --  The following constants capture the context prior to instantiating
*************** package body Sem_Ch12 is
*** 11457,11462 ****
--- 11862,11872 ----
        Par_Installed : Boolean := False;
        Par_Vis       : Boolean   := False;
  
+       Scope_Check_Id   : Entity_Id;
+       Scope_Check_Last : Nat;
+       --  Value of Current_Scope before calls to Install_Parents; used to check
+       --  that scopes are correctly removed after instantiation.
+ 
        Vis_Prims_List : Elist_Id := No_Elist;
        --  List of primitives made temporarily visible in the instantiation
        --  to match the visibility of the formal type.
*************** package body Sem_Ch12 is
*** 11622,11628 ****
  
           Act_Body_Id :=
             Make_Defining_Identifier (Sloc (Act_Decl_Id), Chars (Act_Decl_Id));
!          Set_Comes_From_Source (Act_Body_Id, Comes_From_Source (Act_Decl_Id));
  
           --  Some attributes of spec entity are not inherited by body entity
  
--- 12032,12038 ----
  
           Act_Body_Id :=
             Make_Defining_Identifier (Sloc (Act_Decl_Id), Chars (Act_Decl_Id));
!          Preserve_Comes_From_Source (Act_Body_Id, Act_Decl_Id);
  
           --  Some attributes of spec entity are not inherited by body entity
  
*************** package body Sem_Ch12 is
*** 11670,11675 ****
--- 12080,12113 ----
              end loop;
           end;
  
+          Scope_Check_Id   := Current_Scope;
+          Scope_Check_Last := Scope_Stack.Last;
+ 
+          --  If the instantiation appears within a generic child some actual
+          --  parameter may be the current instance of the enclosing generic
+          --  parent.
+ 
+          declare
+             Inst_Scope : constant Entity_Id := Scope (Act_Decl_Id);
+ 
+          begin
+             if Is_Child_Unit (Inst_Scope)
+               and then Ekind (Inst_Scope) = E_Generic_Package
+               and then Present (Generic_Associations (Inst_Node))
+             then
+                Install_Parents_Of_Generic_Context (Inst_Scope, Ctx_Parents);
+ 
+                --  Hide them from visibility; required to avoid conflicts
+                --  installing the parent instance.
+ 
+                if Present (Ctx_Parents) then
+                   Push_Scope (Standard_Standard);
+                   Ctx_Top := Scope_Stack.Last;
+                   Scope_Stack.Table (Ctx_Top).Is_Active_Stack_Base := True;
+                end if;
+             end if;
+          end;
+ 
           --  If it is a child unit, make the parent instance (which is an
           --  instance of the parent of the generic) visible. The parent
           --  instance is the prefix of the name of the generic unit.
*************** package body Sem_Ch12 is
*** 11705,11711 ****
  
              Build_Instance_Compilation_Unit_Nodes
                (Inst_Node, Act_Body, Act_Decl);
!             Analyze (Inst_Node);
  
              if Parent (Inst_Node) = Cunit (Main_Unit) then
  
--- 12143,12160 ----
  
              Build_Instance_Compilation_Unit_Nodes
                (Inst_Node, Act_Body, Act_Decl);
! 
!             --  If the instantiation appears within a generic child package
!             --  enable visibility of current instance of enclosing generic
!             --  parents.
! 
!             if Present (Ctx_Parents) then
!                Scope_Stack.Table (Ctx_Top).Is_Active_Stack_Base := False;
!                Analyze (Inst_Node);
!                Scope_Stack.Table (Ctx_Top).Is_Active_Stack_Base := True;
!             else
!                Analyze (Inst_Node);
!             end if;
  
              if Parent (Inst_Node) = Cunit (Main_Unit) then
  
*************** package body Sem_Ch12 is
*** 11729,11742 ****
              --  indicate that the body instance is to be delayed.
  
              Install_Body (Act_Body, Inst_Node, Gen_Body, Gen_Decl);
!             Analyze (Act_Body);
           end if;
  
           Inherit_Context (Gen_Body, Inst_Node);
  
-          --  Remove the parent instances if they have been placed on the scope
-          --  stack to compile the body.
- 
           if Par_Installed then
              Remove_Parent (In_Body => True);
  
--- 12178,12199 ----
              --  indicate that the body instance is to be delayed.
  
              Install_Body (Act_Body, Inst_Node, Gen_Body, Gen_Decl);
! 
!             --  If the instantiation appears within a generic child package
!             --  enable visibility of current instance of enclosing generic
!             --  parents.
! 
!             if Present (Ctx_Parents) then
!                Scope_Stack.Table (Ctx_Top).Is_Active_Stack_Base := False;
!                Analyze (Act_Body);
!                Scope_Stack.Table (Ctx_Top).Is_Active_Stack_Base := True;
!             else
!                Analyze (Act_Body);
!             end if;
           end if;
  
           Inherit_Context (Gen_Body, Inst_Node);
  
           if Par_Installed then
              Remove_Parent (In_Body => True);
  
*************** package body Sem_Ch12 is
*** 11745,11751 ****
--- 12202,12235 ----
              Set_Is_Immediately_Visible (Par_Ent, Par_Vis);
           end if;
  
+          --  Remove the parent instances if they have been placed on the scope
+          --  stack to compile the body.
+ 
+          if Present (Ctx_Parents) then
+             pragma Assert (Scope_Stack.Last = Ctx_Top
+               and then Current_Scope = Standard_Standard);
+             Pop_Scope;
+ 
+             Remove_Parents_Of_Generic_Context (Ctx_Parents);
+          end if;
+ 
+          pragma Assert (Current_Scope    = Scope_Check_Id);
+          pragma Assert (Scope_Stack.Last = Scope_Check_Last);
+ 
           Restore_Hidden_Primitives (Vis_Prims_List);
+ 
+          --  Restore the private views that were made visible when the body of
+          --  the instantiation was created. Note that, in the case where one of
+          --  these private views is declared in the parent, there is a nesting
+          --  issue with the calls to Install_Parent and Remove_Parent made in
+          --  between above with In_Body set to True, because these calls also
+          --  want to swap and restore this private view respectively. In this
+          --  case, the call to Install_Parent does nothing, but the call to
+          --  Remove_Parent does restore the private view, thus undercutting the
+          --  call to Restore_Private_Views. That's OK under the condition that
+          --  the two mechanisms swap exactly the same entities, in particular
+          --  the private entities dependent on the primary private entities.
+ 
           Restore_Private_Views (Act_Decl_Id);
  
           --  Remove the current unit from visibility if this is an instance
*************** package body Sem_Ch12 is
*** 11989,11995 ****
           Act_Body_Id :=
             Make_Defining_Identifier (Sloc (Act_Decl_Id), Chars (Act_Decl_Id));
  
!          Set_Comes_From_Source (Act_Body_Id, Comes_From_Source (Act_Decl_Id));
           Set_Defining_Unit_Name (Specification (Act_Body), Act_Body_Id);
  
           Set_Corresponding_Spec (Act_Body, Act_Decl_Id);
--- 12473,12479 ----
           Act_Body_Id :=
             Make_Defining_Identifier (Sloc (Act_Decl_Id), Chars (Act_Decl_Id));
  
!          Preserve_Comes_From_Source (Act_Body_Id, Act_Decl_Id);
           Set_Defining_Unit_Name (Specification (Act_Body), Act_Body_Id);
  
           Set_Corresponding_Spec (Act_Body, Act_Decl_Id);
*************** package body Sem_Ch12 is
*** 12171,12180 ****
        Analyzed_Formal : Node_Id;
        Actual_Decls    : List_Id) return List_Id
     is
!       A_Gen_T    : constant Entity_Id  :=
                       Defining_Identifier (Analyzed_Formal);
!       Def        : constant Node_Id    := Formal_Type_Definition (Formal);
!       Gen_T      : constant Entity_Id  := Defining_Identifier (Formal);
        Act_T      : Entity_Id;
        Ancestor   : Entity_Id := Empty;
        Decl_Node  : Node_Id;
--- 12655,12664 ----
        Analyzed_Formal : Node_Id;
        Actual_Decls    : List_Id) return List_Id
     is
!       A_Gen_T    : constant Entity_Id :=
                       Defining_Identifier (Analyzed_Formal);
!       Def        : constant Node_Id   := Formal_Type_Definition (Formal);
!       Gen_T      : constant Entity_Id := Defining_Identifier (Formal);
        Act_T      : Entity_Id;
        Ancestor   : Entity_Id := Empty;
        Decl_Node  : Node_Id;
*************** package body Sem_Ch12 is
*** 12183,12189 ****
        Subt       : Entity_Id;
  
        procedure Check_Shared_Variable_Control_Aspects;
!       --  Ada_2020: Verify that shared variable control aspects (RM C.6)
        --  that may be specified for a formal type are obeyed by the actual.
  
        procedure Diagnose_Predicated_Actual;
--- 12667,12673 ----
        Subt       : Entity_Id;
  
        procedure Check_Shared_Variable_Control_Aspects;
!       --  Ada 2020: Verify that shared variable control aspects (RM C.6)
        --  that may be specified for a formal type are obeyed by the actual.
  
        procedure Diagnose_Predicated_Actual;
*************** package body Sem_Ch12 is
*** 12214,12240 ****
        --  Check_Shared_Variable_Control_Aspects --
        --------------------------------------------
  
!       --  Ada_2020: Verify that shared variable control aspects (RM C.6)
        --  that may be specified for the formal are obeyed by the actual.
  
        procedure Check_Shared_Variable_Control_Aspects is
        begin
           if Ada_Version >= Ada_2020 then
              if Is_Atomic (A_Gen_T) and then not Is_Atomic (Act_T) then
                 Error_Msg_NE
!                   ("actual for& must be an atomic type", Actual, A_Gen_T);
              end if;
  
              if Is_Volatile (A_Gen_T) and then not Is_Volatile (Act_T) then
                 Error_Msg_NE
!                   ("actual for& must be a Volatile type", Actual, A_Gen_T);
!             end if;
  
!             if
!               Is_Independent (A_Gen_T) and then not Is_Independent (Act_T)
              then
                 Error_Msg_NE
!                  ("actual for& must be an Independent type", Actual, A_Gen_T);
              end if;
  
              --  We assume that an array type whose atomic component type
--- 12698,12737 ----
        --  Check_Shared_Variable_Control_Aspects --
        --------------------------------------------
  
!       --  Ada 2020: Verify that shared variable control aspects (RM C.6)
        --  that may be specified for the formal are obeyed by the actual.
+       --  If the formal is a derived type the aspect specifications must match.
+       --  NOTE: AI12-0282 implies that matching of aspects is required between
+       --  formal and actual in all cases, but this is too restrictive.
+       --  In particular it violates a language design rule: a limited private
+       --  indefinite formal can be matched by any actual. The current code
+       --  reflects an older and more permissive version of RM C.6 (12/5).
  
        procedure Check_Shared_Variable_Control_Aspects is
        begin
           if Ada_Version >= Ada_2020 then
              if Is_Atomic (A_Gen_T) and then not Is_Atomic (Act_T) then
                 Error_Msg_NE
!                   ("actual for& must have Atomic aspect", Actual, A_Gen_T);
! 
!             elsif Is_Derived_Type (A_Gen_T)
!               and then Is_Atomic (A_Gen_T) /= Is_Atomic (Act_T)
!             then
!                Error_Msg_NE
!                   ("actual for& has different Atomic aspect", Actual, A_Gen_T);
              end if;
  
              if Is_Volatile (A_Gen_T) and then not Is_Volatile (Act_T) then
                 Error_Msg_NE
!                   ("actual for& must have Volatile aspect",
!                    Actual, A_Gen_T);
  
!             elsif Is_Derived_Type (A_Gen_T)
!               and then Is_Volatile (A_Gen_T) /= Is_Volatile (Act_T)
              then
                 Error_Msg_NE
!                   ("actual for& has different Volatile aspect",
!                    Actual, A_Gen_T);
              end if;
  
              --  We assume that an array type whose atomic component type
*************** package body Sem_Ch12 is
*** 12242,12285 ****
              --  aspect Has_Atomic_Components. This is a reasonable inference
              --  from the intent of AI12-0282, and makes it legal to use an
              --  actual that does not have the identical aspect as the formal.
  
!             if Has_Atomic_Components (A_Gen_T)
!                and then not Has_Atomic_Components (Act_T)
!             then
!                if Is_Array_Type (Act_T)
!                  and then Is_Atomic (Component_Type (Act_T))
!                then
!                   null;
  
!                else
                    Error_Msg_NE
!                     ("actual for& must have atomic components",
                         Actual, A_Gen_T);
                 end if;
              end if;
  
              if Has_Independent_Components (A_Gen_T)
!                and then not Has_Independent_Components (Act_T)
              then
                 Error_Msg_NE
!                  ("actual for& must have independent components",
!                     Actual, A_Gen_T);
              end if;
  
!             if Has_Volatile_Components (A_Gen_T)
!                and then not Has_Volatile_Components (Act_T)
!             then
!                if Is_Array_Type (Act_T)
!                  and then Is_Volatile (Component_Type (Act_T))
!                then
!                   null;
  
!                else
!                   Error_Msg_NE
!                     ("actual for& must have volatile components",
!                        Actual, A_Gen_T);
!                end if;
!             end if;
           end if;
        end Check_Shared_Variable_Control_Aspects;
  
--- 12739,12798 ----
              --  aspect Has_Atomic_Components. This is a reasonable inference
              --  from the intent of AI12-0282, and makes it legal to use an
              --  actual that does not have the identical aspect as the formal.
+             --  Ditto for volatile components.
  
!             declare
!                Actual_Atomic_Comp : constant Boolean :=
!                Has_Atomic_Components (Act_T)
!                       or else (Is_Array_Type (Act_T)
!                                 and then Is_Atomic (Component_Type (Act_T)));
!             begin
!                if Has_Atomic_Components (A_Gen_T) /= Actual_Atomic_Comp then
!                   Error_Msg_NE
!                     ("formal and actual for& must agree on atomic components",
!                        Actual, A_Gen_T);
!                end if;
!             end;
  
!             declare
!                Actual_Volatile_Comp : constant Boolean :=
!                  Has_Volatile_Components (Act_T)
!                    or else (Is_Array_Type (Act_T)
!                              and then Is_Volatile (Component_Type (Act_T)));
!             begin
!                if Has_Volatile_Components (A_Gen_T) /= Actual_Volatile_Comp
!                then
                    Error_Msg_NE
!                     ("actual for& must have volatile components",
                         Actual, A_Gen_T);
                 end if;
+             end;
+ 
+             --  The following two aspects do not require exact matching,
+             --  but only one-way agreement. See RM C.6.
+ 
+             if Is_Independent (A_Gen_T) and then not Is_Independent (Act_T)
+             then
+                Error_Msg_NE
+                  ("actual for& must have Independent aspect specified",
+                      Actual, A_Gen_T);
              end if;
  
              if Has_Independent_Components (A_Gen_T)
!               and then not Has_Independent_Components (Act_T)
              then
                 Error_Msg_NE
!                  ("actual for& must have Independent_Components specified",
!                      Actual, A_Gen_T);
              end if;
  
!             --  Check actual/formal compatibility with respect to the four
!             --  volatility refinement aspects.
  
!             Check_Volatility_Compatibility
!               (Act_T, A_Gen_T,
!                "actual type", "its corresponding formal type",
!                Srcpos_Bearer => Act_T);
           end if;
        end Check_Shared_Variable_Control_Aspects;
  
*************** package body Sem_Ch12 is
*** 12327,12334 ****
                                   Root_Type (Act_T)))
  
             or else
!              (Ekind_In (Gen_T, E_Anonymous_Access_Subprogram_Type,
!                                E_Anonymous_Access_Type)
                 and then Ekind (Act_T) = Ekind (Gen_T)
                 and then Subtypes_Statically_Match
                            (Designated_Type (Gen_T), Designated_Type (Act_T)));
--- 12840,12847 ----
                                   Root_Type (Act_T)))
  
             or else
!              (Ekind (Gen_T) in E_Anonymous_Access_Subprogram_Type
!                              | E_Anonymous_Access_Type
                 and then Ekind (Act_T) = Ekind (Gen_T)
                 and then Subtypes_Statically_Match
                            (Designated_Type (Gen_T), Designated_Type (Act_T)));
*************** package body Sem_Ch12 is
*** 12423,12432 ****
              elsif Ekind (A_Gen_T) = E_General_Access_Type
                and then Ekind (Base_Type (Act_T)) /= E_General_Access_Type
              then
!                Error_Msg_N -- CODEFIX
                   ("actual must be general access type!", Actual);
                 Error_Msg_NE -- CODEFIX
!                  ("add ALL to }!", Actual, Act_T);
                 Abandon_Instantiation (Actual);
              end if;
           end if;
--- 12936,12945 ----
              elsif Ekind (A_Gen_T) = E_General_Access_Type
                and then Ekind (Base_Type (Act_T)) /= E_General_Access_Type
              then
!                Error_Msg_N
                   ("actual must be general access type!", Actual);
                 Error_Msg_NE -- CODEFIX
!                  ("\add ALL to }!", Actual, Act_T);
                 Abandon_Instantiation (Actual);
              end if;
           end if;
*************** package body Sem_Ch12 is
*** 12455,12475 ****
              end if;
  
              Abandon_Instantiation (Actual);
- 
-          elsif Is_Access_Type (Designated_Type (Act_T))
-            and then Is_Constrained (Designated_Type (Designated_Type (Act_T)))
-                       /=
-                     Is_Constrained (Designated_Type (Desig_Type))
-          then
-             Error_Msg_NE
-               ("designated type of actual does not match that of formal &",
-                Actual, Gen_T);
- 
-             if not Predicates_Match (Desig_Type, Desig_Act) then
-                Error_Msg_N ("\predicates do not match", Actual);
-             end if;
- 
-             Abandon_Instantiation (Actual);
           end if;
  
           --  Ada 2005: null-exclusion indicators of the two types must agree
--- 12968,12973 ----
*************** package body Sem_Ch12 is
*** 12732,12738 ****
                       else
                          Error_Msg_Name_1 := Chars (Act_T);
                          Error_Msg_NE
!                           ("Actual% must implement interface&",
                             Actual, Etype (Iface));
                       end if;
  
--- 13230,13236 ----
                       else
                          Error_Msg_Name_1 := Chars (Act_T);
                          Error_Msg_NE
!                           ("actual% must implement interface&",
                             Actual, Etype (Iface));
                       end if;
  
*************** package body Sem_Ch12 is
*** 12901,12908 ****
           --  Perform atomic/volatile checks (RM C.6(12)). Note that AI05-0218-1
           --  removes the second instance of the phrase "or allow pass by copy".
  
!          --  In Ada_2020 the aspect may be specified explicitly for the formal
!          --  regardless of whether an ancestor obeys it.
  
           if Is_Atomic (Act_T)
               and then not Is_Atomic (Ancestor)
--- 13399,13406 ----
           --  Perform atomic/volatile checks (RM C.6(12)). Note that AI05-0218-1
           --  removes the second instance of the phrase "or allow pass by copy".
  
!          --  For Ada 2020, the aspect may be specified explicitly for the
!          --  formal regardless of whether an ancestor obeys it.
  
           if Is_Atomic (Act_T)
               and then not Is_Atomic (Ancestor)
*************** package body Sem_Ch12 is
*** 13016,13023 ****
              if not Subtypes_Statically_Compatible
                       (Act_T, Ancestor, Formal_Derived_Matching => True)
              then
!                Error_Msg_N
!                  ("constraint on actual is incompatible with formal", Actual);
                 Abandon_Instantiation (Actual);
              end if;
           end if;
--- 13514,13529 ----
              if not Subtypes_Statically_Compatible
                       (Act_T, Ancestor, Formal_Derived_Matching => True)
              then
!                Error_Msg_NE
!                  ("actual for & must be statically compatible with ancestor",
!                   Actual, Gen_T);
! 
!                if not Predicates_Compatible (Act_T, Ancestor) then
!                   Error_Msg_N
!                     ("\predicate on actual is not compatible with ancestor",
!                      Actual);
!                end if;
! 
                 Abandon_Instantiation (Actual);
              end if;
           end if;
*************** package body Sem_Ch12 is
*** 13261,13277 ****
           --  explicitly so. If not declared limited, the actual cannot be
           --  limited (see AI05-0087).
  
!          --  Even though this AI is a binding interpretation, we enable the
!          --  check only in Ada 2012 mode, because this improper construct
!          --  shows up in user code and in existing B-tests.
! 
!          if Is_Limited_Type (Act_T)
!            and then not Is_Limited_Type (A_Gen_T)
!            and then Ada_Version >= Ada_2012
!          then
!             if In_Instance then
!                null;
!             else
                 Error_Msg_NE
                   ("actual for non-limited & cannot be a limited type",
                    Actual, Gen_T);
--- 13767,13774 ----
           --  explicitly so. If not declared limited, the actual cannot be
           --  limited (see AI05-0087).
  
!          if Is_Limited_Type (Act_T) and then not Is_Limited_Type (A_Gen_T) then
!             if not In_Instance then
                 Error_Msg_NE
                   ("actual for non-limited & cannot be a limited type",
                    Actual, Gen_T);
*************** package body Sem_Ch12 is
*** 13280,13309 ****
              end if;
           end if;
  
!          --  Don't check Ada_Version here (for now) because AI12-0036 is
!          --  a binding interpretation; this decision may be reversed if
!          --  the situation turns out to be similar to that of the preceding
!          --  Is_Limited_Type test (see preceding comment).
  
           declare
              Formal_Is_Private_Extension : constant Boolean :=
                Nkind (Parent (A_Gen_T)) = N_Private_Extension_Declaration;
  
              Actual_Is_Tagged : constant Boolean := Is_Tagged_Type (Act_T);
           begin
              if Actual_Is_Tagged /= Formal_Is_Private_Extension then
!                if In_Instance then
!                   null;
!                else
                    if Actual_Is_Tagged then
                       Error_Msg_NE
!                        ("actual for & cannot be a tagged type",
!                         Actual, Gen_T);
                    else
                       Error_Msg_NE
!                        ("actual for & must be a tagged type",
!                         Actual, Gen_T);
                    end if;
                    Abandon_Instantiation (Actual);
                 end if;
              end if;
--- 13777,13801 ----
              end if;
           end if;
  
!          --  Check for AI12-0036
  
           declare
              Formal_Is_Private_Extension : constant Boolean :=
                Nkind (Parent (A_Gen_T)) = N_Private_Extension_Declaration;
  
              Actual_Is_Tagged : constant Boolean := Is_Tagged_Type (Act_T);
+ 
           begin
              if Actual_Is_Tagged /= Formal_Is_Private_Extension then
!                if not In_Instance then
                    if Actual_Is_Tagged then
                       Error_Msg_NE
!                        ("actual for & cannot be a tagged type", Actual, Gen_T);
                    else
                       Error_Msg_NE
!                        ("actual for & must be a tagged type", Actual, Gen_T);
                    end if;
+ 
                    Abandon_Instantiation (Actual);
                 end if;
              end if;
*************** package body Sem_Ch12 is
*** 13696,13707 ****
            Defining_Identifier => Subt,
            Subtype_Indication  => New_Occurrence_Of (Act_T, Loc));
  
!       if Is_Private_Type (Act_T) then
!          Set_Has_Private_View (Subtype_Indication (Decl_Node));
  
!       elsif Is_Access_Type (Act_T)
!         and then Is_Private_Type (Designated_Type (Act_T))
!       then
           Set_Has_Private_View (Subtype_Indication (Decl_Node));
        end if;
  
--- 14188,14198 ----
            Defining_Identifier => Subt,
            Subtype_Indication  => New_Occurrence_Of (Act_T, Loc));
  
!       --  Record whether the actual is private at this point, so that
!       --  Check_Generic_Actuals can restore its proper view before the
!       --  semantic analysis of the instance.
  
!       if Is_Private_Type (Act_T) then
           Set_Has_Private_View (Subtype_Indication (Decl_Node));
        end if;
  
*************** package body Sem_Ch12 is
*** 13734,13741 ****
              Set_Generic_Parent_Type (Decl_Node, Ancestor);
           end if;
  
!       elsif Nkind_In (Def, N_Formal_Private_Type_Definition,
!                            N_Formal_Incomplete_Type_Definition)
        then
           Set_Generic_Parent_Type (Decl_Node, A_Gen_T);
        end if;
--- 14225,14232 ----
              Set_Generic_Parent_Type (Decl_Node, Ancestor);
           end if;
  
!       elsif Nkind (Def) in N_Formal_Private_Type_Definition
!                          | N_Formal_Incomplete_Type_Definition
        then
           Set_Generic_Parent_Type (Decl_Node, A_Gen_T);
        end if;
*************** package body Sem_Ch12 is
*** 13886,13893 ****
              --  For a subprogram instantiation, omit instantiations intrinsic
              --  operations (Unchecked_Conversions, etc.) that have no bodies.
  
!             elsif Nkind_In (Decl, N_Function_Instantiation,
!                                   N_Procedure_Instantiation)
                and then not Is_Intrinsic_Subprogram (Entity (Name (Decl)))
              then
                 Append_Elmt (Decl, Previous_Instances);
--- 14377,14384 ----
              --  For a subprogram instantiation, omit instantiations intrinsic
              --  operations (Unchecked_Conversions, etc.) that have no bodies.
  
!             elsif Nkind (Decl) in N_Function_Instantiation
!                                 | N_Procedure_Instantiation
                and then not Is_Intrinsic_Subprogram (Entity (Name (Decl)))
              then
                 Append_Elmt (Decl, Previous_Instances);
*************** package body Sem_Ch12 is
*** 13987,13992 ****
--- 14478,14498 ----
  
                 exit;
  
+             --  If an ancestor of the generic comes from a formal package
+             --  there is no source for the ancestor body. This is detected
+             --  by examining the scope of the ancestor and its declaration.
+             --  The body, if any is needed, will be available when the
+             --  current unit (containing a formal package) is instantiated.
+ 
+             elsif Nkind (True_Parent) = N_Package_Specification
+               and then Present (Generic_Parent (True_Parent))
+               and then Nkind
+                 (Original_Node (Unit_Declaration_Node
+                   (Scope (Generic_Parent (True_Parent)))))
+                      = N_Formal_Package_Declaration
+             then
+                return;
+ 
              else
                 True_Parent := Parent (True_Parent);
              end if;
*************** package body Sem_Ch12 is
*** 14114,14123 ****
                                            (Last (Visible_Declarations
                                              (Specification (Info.Act_Decl))));
                                begin
!                                  while Nkind_In (Decl,
!                                    N_Null_Statement,
!                                    N_Pragma,
!                                    N_Subprogram_Renaming_Declaration)
                                   loop
                                      Decl := Prev (Decl);
                                   end loop;
--- 14620,14629 ----
                                            (Last (Visible_Declarations
                                              (Specification (Info.Act_Decl))));
                                begin
!                                  while Nkind (Decl) in
!                                    N_Null_Statement                  |
!                                    N_Pragma                          |
!                                    N_Subprogram_Renaming_Declaration
                                   loop
                                      Decl := Prev (Decl);
                                   end loop;
*************** package body Sem_Ch12 is
*** 14836,14844 ****
           --  explicitly now, in order to remain consistent with the view of the
           --  parent type.
  
!          if Ekind_In (Typ, E_Private_Type,
!                            E_Limited_Private_Type,
!                            E_Record_Type_With_Private)
           then
              Dep_Elmt := First_Elmt (Private_Dependents (Typ));
              while Present (Dep_Elmt) loop
--- 15342,15350 ----
           --  explicitly now, in order to remain consistent with the view of the
           --  parent type.
  
!          if Ekind (Typ) in E_Private_Type
!                          | E_Limited_Private_Type
!                          | E_Record_Type_With_Private
           then
              Dep_Elmt := First_Elmt (Private_Dependents (Typ));
              while Present (Dep_Elmt) loop
*************** package body Sem_Ch12 is
*** 14873,14885 ****
           if Is_Type (E)
             and then Nkind (Parent (E)) = N_Subtype_Declaration
           then
              --  If the actual for E is itself a generic actual type from
              --  an enclosing instance, E is still a generic actual type
              --  outside of the current instance. This matter when resolving
              --  an overloaded call that may be ambiguous in the enclosing
              --  instance, when two of its actuals coincide.
  
!             if Is_Entity_Name (Subtype_Indication (Parent (E)))
                and then Is_Generic_Actual_Type
                           (Entity (Subtype_Indication (Parent (E))))
              then
--- 15379,15399 ----
           if Is_Type (E)
             and then Nkind (Parent (E)) = N_Subtype_Declaration
           then
+             --  Always preserve the flag Is_Generic_Actual_Type for GNATprove,
+             --  as it is needed to identify the subtype with the type it
+             --  renames, when there are conversions between access types
+             --  to these.
+ 
+             if GNATprove_Mode then
+                null;
+ 
              --  If the actual for E is itself a generic actual type from
              --  an enclosing instance, E is still a generic actual type
              --  outside of the current instance. This matter when resolving
              --  an overloaded call that may be ambiguous in the enclosing
              --  instance, when two of its actuals coincide.
  
!             elsif Is_Entity_Name (Subtype_Indication (Parent (E)))
                and then Is_Generic_Actual_Type
                           (Entity (Subtype_Indication (Parent (E))))
              then
*************** package body Sem_Ch12 is
*** 15270,15280 ****
              --  If not a private type, nothing else to do
  
              if not Is_Private_Type (Typ) then
!                if Is_Array_Type (Typ)
!                  and then Is_Private_Type (Component_Type (Typ))
!                then
!                   Set_Has_Private_View (N);
!                end if;
  
              --  If it is a derivation of a private type in a context where no
              --  full view is needed, nothing to do either.
--- 15784,15790 ----
              --  If not a private type, nothing else to do
  
              if not Is_Private_Type (Typ) then
!                null;
  
              --  If it is a derivation of a private type in a context where no
              --  full view is needed, nothing to do either.
*************** package body Sem_Ch12 is
*** 15329,15338 ****
              --  preserve in this case, since the expansion will be redone in
              --  the instance.
  
!             if not Nkind_In (E, N_Defining_Character_Literal,
!                                 N_Defining_Identifier,
!                                 N_Defining_Operator_Symbol)
!             then
                 Set_Associated_Node (N, Empty);
                 Set_Etype (N, Empty);
                 return;
--- 15839,15845 ----
              --  preserve in this case, since the expansion will be redone in
              --  the instance.
  
!             if Nkind (E) not in N_Entity then
                 Set_Associated_Node (N, Empty);
                 Set_Etype (N, Empty);
                 return;
*************** package body Sem_Ch12 is
*** 15353,15390 ****
              end if;
  
              if Is_Global (E) then
! 
!                --  If the entity is a package renaming that is the prefix of
!                --  an expanded name, it has been rewritten as the renamed
!                --  package, which is necessary semantically but complicates
!                --  ASIS tree traversal, so we recover the original entity to
!                --  expose the renaming. Take into account that the context may
!                --  be a nested generic, that the original node may itself have
!                --  an associated node that had better be an entity, and that
!                --  the current node is still a selected component.
! 
!                if Ekind (E) = E_Package
!                  and then Nkind (N) = N_Selected_Component
!                  and then Nkind (Parent (N)) = N_Expanded_Name
!                  and then Present (Original_Node (N2))
!                  and then Is_Entity_Name (Original_Node (N2))
!                  and then Present (Entity (Original_Node (N2)))
!                then
!                   if Is_Global (Entity (Original_Node (N2))) then
!                      N2 := Original_Node (N2);
!                      Set_Associated_Node (N, N2);
!                      Set_Global_Type     (N, N2);
! 
!                   --  Renaming is local, and will be resolved in instance
! 
!                   else
!                      Set_Associated_Node (N, Empty);
!                      Set_Etype (N, Empty);
!                   end if;
! 
!                else
!                   Set_Global_Type (N, N2);
!                end if;
  
              elsif Nkind (N) = N_Op_Concat
                and then Is_Generic_Type (Etype (N2))
--- 15860,15866 ----
              end if;
  
              if Is_Global (E) then
!                Set_Global_Type (N, N2);
  
              elsif Nkind (N) = N_Op_Concat
                and then Is_Generic_Type (Etype (N2))
*************** package body Sem_Ch12 is
*** 15412,15418 ****
           elsif Nkind (Parent (N)) = N_Selected_Component
             and then Nkind (Parent (N2)) = N_Expanded_Name
           then
!             if Is_Global (Entity (Parent (N2))) then
                 Change_Selected_Component_To_Expanded_Name (Parent (N));
                 Set_Associated_Node (Parent (N), Parent (N2));
                 Set_Global_Type     (Parent (N), Parent (N2));
--- 15888,15899 ----
           elsif Nkind (Parent (N)) = N_Selected_Component
             and then Nkind (Parent (N2)) = N_Expanded_Name
           then
!             --  In case of previous errors, the tree might be malformed
! 
!             if No (Entity (Parent (N2))) then
!                null;
! 
!             elsif Is_Global (Entity (Parent (N2))) then
                 Change_Selected_Component_To_Expanded_Name (Parent (N));
                 Set_Associated_Node (Parent (N), Parent (N2));
                 Set_Global_Type     (Parent (N), Parent (N2));
*************** package body Sem_Ch12 is
*** 15453,15459 ****
           --  its value. Otherwise the folding will happen in any instantiation.
  
           elsif Nkind (Parent (N)) = N_Selected_Component
!            and then Nkind_In (Parent (N2), N_Integer_Literal, N_Real_Literal)
           then
              if Present (Entity (Original_Node (Parent (N2))))
                and then Is_Global (Entity (Original_Node (Parent (N2))))
--- 15934,15940 ----
           --  its value. Otherwise the folding will happen in any instantiation.
  
           elsif Nkind (Parent (N)) = N_Selected_Component
!            and then Nkind (Parent (N2)) in N_Integer_Literal | N_Real_Literal
           then
              if Present (Entity (Original_Node (Parent (N2))))
                and then Is_Global (Entity (Original_Node (Parent (N2))))
*************** package body Sem_Ch12 is
*** 15755,15766 ****
              --  global references within their aspects due to the timing of
              --  annotation analysis.
  
!             if Nkind_In (Nod, N_Generic_Package_Declaration,
!                               N_Generic_Subprogram_Declaration,
!                               N_Package_Body,
!                               N_Package_Body_Stub,
!                               N_Subprogram_Body,
!                               N_Subprogram_Body_Stub)
              then
                 --  Since the capture of global references is done on the
                 --  unanalyzed generic template, there is no information around
--- 16236,16247 ----
              --  global references within their aspects due to the timing of
              --  annotation analysis.
  
!             if Nkind (Nod) in N_Generic_Package_Declaration
!                             | N_Generic_Subprogram_Declaration
!                             | N_Package_Body
!                             | N_Package_Body_Stub
!                             | N_Subprogram_Body
!                             | N_Subprogram_Body_Stub
              then
                 --  Since the capture of global references is done on the
                 --  unanalyzed generic template, there is no information around
*************** package body Sem_Ch12 is
*** 15917,15957 ****
              --  The node did not undergo a transformation
  
              if Nkind (N) = Nkind (Get_Associated_Node (N)) then
!                declare
!                   Aux_N2         : constant Node_Id := Get_Associated_Node (N);
!                   Orig_N2_Parent : constant Node_Id :=
!                                      Original_Node (Parent (Aux_N2));
!                begin
!                   --  The parent of this identifier is a selected component
!                   --  which denotes a named number that was constant folded.
!                   --  Preserve the original name for ASIS and link the parent
!                   --  with its expanded name. The constant folding will be
!                   --  repeated in the instance.
! 
!                   if Nkind (Parent (N)) = N_Selected_Component
!                     and then Nkind_In (Parent (Aux_N2), N_Integer_Literal,
!                                                         N_Real_Literal)
!                     and then Is_Entity_Name (Orig_N2_Parent)
!                     and then Ekind (Entity (Orig_N2_Parent)) in Named_Kind
!                     and then Is_Global (Entity (Orig_N2_Parent))
!                   then
!                      N2 := Aux_N2;
!                      Set_Associated_Node
!                        (Parent (N), Original_Node (Parent (N2)));
! 
!                   --  Common case
! 
!                   else
!                      --  If this is a discriminant reference, always save it.
!                      --  It is used in the instance to find the corresponding
!                      --  discriminant positionally rather than by name.
  
!                      Set_Original_Discriminant
!                        (N, Original_Discriminant (Get_Associated_Node (N)));
!                   end if;
  
!                   Reset_Entity (N);
!                end;
  
              --  The analysis of the generic copy transformed the identifier
              --  into another construct. Propagate the changes to the template.
--- 16398,16411 ----
              --  The node did not undergo a transformation
  
              if Nkind (N) = Nkind (Get_Associated_Node (N)) then
!                --  If this is a discriminant reference, always save it.
!                --  It is used in the instance to find the corresponding
!                --  discriminant positionally rather than by name.
  
!                Set_Original_Discriminant
!                  (N, Original_Discriminant (Get_Associated_Node (N)));
  
!                Reset_Entity (N);
  
              --  The analysis of the generic copy transformed the identifier
              --  into another construct. Propagate the changes to the template.
*************** package body Sem_Ch12 is
*** 15975,15982 ****
                 --  The identifier denotes a named number that was constant
                 --  folded. Preserve the original name for ASIS and undo the
                 --  constant folding which will be repeated in the instance.
  
!                elsif Nkind_In (N2, N_Integer_Literal, N_Real_Literal)
                   and then Is_Entity_Name (Original_Node (N2))
                 then
                    Set_Associated_Node (N, Original_Node (N2));
--- 16429,16437 ----
                 --  The identifier denotes a named number that was constant
                 --  folded. Preserve the original name for ASIS and undo the
                 --  constant folding which will be repeated in the instance.
+                --  Is this still needed???
  
!                elsif Nkind (N2) in N_Integer_Literal | N_Real_Literal
                   and then Is_Entity_Name (Original_Node (N2))
                 then
                    Set_Associated_Node (N, Original_Node (N2));
*************** package body Sem_Ch12 is
*** 16078,16093 ****
  
                 --  The operator was folded into a literal
  
!                elsif Nkind_In (N2, N_Integer_Literal,
!                                    N_Real_Literal,
!                                    N_String_Literal)
                 then
                    if Present (Original_Node (N2))
                      and then Nkind (Original_Node (N2)) = Nkind (N)
                    then
                       --  Operation was constant-folded. Whenever possible,
!                      --  recover semantic information from unfolded node,
!                      --  for ASIS use.
  
                       Set_Associated_Node (N, Original_Node (N2));
  
--- 16533,16549 ----
  
                 --  The operator was folded into a literal
  
!                elsif Nkind (N2) in N_Integer_Literal
!                                  | N_Real_Literal
!                                  | N_String_Literal
                 then
                    if Present (Original_Node (N2))
                      and then Nkind (Original_Node (N2)) = Nkind (N)
                    then
                       --  Operation was constant-folded. Whenever possible,
!                      --  recover semantic information from unfolded node.
!                      --  This was initially done for ASIS but is apparently
!                      --  needed also for e.g. compiling a-nbnbin.adb.
  
                       Set_Associated_Node (N, Original_Node (N2));
  
*************** package body Sem_Ch12 is
*** 16189,16200 ****
  
           --  Aggregates
  
!          elsif Nkind_In (N, N_Aggregate, N_Extension_Aggregate) then
              Save_References_In_Aggregate (N);
  
           --  Character literals, operator symbols
  
!          elsif Nkind_In (N, N_Character_Literal, N_Operator_Symbol) then
              Save_References_In_Char_Lit_Or_Op_Symbol (N);
  
           --  Defining identifiers
--- 16645,16656 ----
  
           --  Aggregates
  
!          elsif Nkind (N) in N_Aggregate | N_Extension_Aggregate then
              Save_References_In_Aggregate (N);
  
           --  Character literals, operator symbols
  
!          elsif Nkind (N) in N_Character_Literal | N_Operator_Symbol then
              Save_References_In_Char_Lit_Or_Op_Symbol (N);
  
           --  Defining identifiers
*************** package body Sem_Ch12 is
*** 16420,16438 ****
        end if;
  
        while Present (Priv_Elmt) loop
!          Priv_Sub := (Node (Priv_Elmt));
! 
!          --  We avoid flipping the subtype if the Etype of its full view is
!          --  private because this would result in a malformed subtype. This
!          --  occurs when the Etype of the subtype full view is the full view of
!          --  the base type (and since the base types were just switched, the
!          --  subtype is pointing to the wrong view). This is currently the case
!          --  for tagged record types, access types (maybe more?) and needs to
!          --  be resolved. ???
  
!          if Present (Full_View (Priv_Sub))
!            and then not Is_Private_Type (Etype (Full_View (Priv_Sub)))
!          then
              Prepend_Elmt (Full_View (Priv_Sub), Exchanged_Views);
              Exchange_Declarations (Priv_Sub);
           end if;
--- 16876,16884 ----
        end if;
  
        while Present (Priv_Elmt) loop
!          Priv_Sub := Node (Priv_Elmt);
  
!          if Present (Full_View (Priv_Sub)) then
              Prepend_Elmt (Full_View (Priv_Sub), Exchanged_Views);
              Exchange_Declarations (Priv_Sub);
           end if;
*************** package body Sem_Ch12 is
*** 16513,16518 ****
--- 16959,16965 ----
              OK := (Is_Fun and then Num_F = 1);
  
           when Attribute_Output
+             | Attribute_Put_Image
              | Attribute_Read
              | Attribute_Write
           =>
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch12.ads gcc-11.1.0/gcc/ada/sem_ch12.ads
*** gcc-10.3.0/gcc/ada/sem_ch12.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch12.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch13.adb gcc-11.1.0/gcc/ada/sem_ch13.adb
*** gcc-10.3.0/gcc/ada/sem_ch13.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch13.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Rtsfind;  use Rtsfind;
*** 48,59 ****
  with Sem;      use Sem;
  with Sem_Aux;  use Sem_Aux;
  with Sem_Case; use Sem_Case;
  with Sem_Ch3;  use Sem_Ch3;
  with Sem_Ch6;  use Sem_Ch6;
  with Sem_Ch7;  use Sem_Ch7;
  with Sem_Ch8;  use Sem_Ch8;
  with Sem_Dim;  use Sem_Dim;
- with Sem_Disp; use Sem_Disp;
  with Sem_Eval; use Sem_Eval;
  with Sem_Prag; use Sem_Prag;
  with Sem_Res;  use Sem_Res;
--- 48,59 ----
  with Sem;      use Sem;
  with Sem_Aux;  use Sem_Aux;
  with Sem_Case; use Sem_Case;
+ with Sem_Cat;  use Sem_Cat;
  with Sem_Ch3;  use Sem_Ch3;
  with Sem_Ch6;  use Sem_Ch6;
  with Sem_Ch7;  use Sem_Ch7;
  with Sem_Ch8;  use Sem_Ch8;
  with Sem_Dim;  use Sem_Dim;
  with Sem_Eval; use Sem_Eval;
  with Sem_Prag; use Sem_Prag;
  with Sem_Res;  use Sem_Res;
*************** with Sinfo;    use Sinfo;
*** 64,69 ****
--- 64,70 ----
  with Sinput;   use Sinput;
  with Snames;   use Snames;
  with Stand;    use Stand;
+ with Table;
  with Targparm; use Targparm;
  with Ttypes;   use Ttypes;
  with Tbuild;   use Tbuild;
*************** package body Sem_Ch13 is
*** 91,96 ****
--- 92,104 ----
     --  type whose inherited alignment is no longer appropriate for the new
     --  size value. In this case, we reset the Alignment to unknown.
  
+    function All_Static_Choices (L : List_Id) return Boolean;
+    --  Returns true if all elements of the list are OK static choices
+    --  as defined below for Is_Static_Choice. Used for case expression
+    --  alternatives and for the right operand of a membership test. An
+    --  others_choice is static if the corresponding expression is static.
+    --  The staticness of the bounds is checked separately.
+ 
     procedure Build_Discrete_Static_Predicate
       (Typ  : Entity_Id;
        Expr : Node_Id;
*************** package body Sem_Ch13 is
*** 154,159 ****
--- 162,176 ----
     --  that do not specify a representation characteristic are operational
     --  attributes.
  
+    function Is_Static_Choice (N : Node_Id) return Boolean;
+    --  Returns True if N represents a static choice (static subtype, or
+    --  static subtype indication, or static expression, or static range).
+    --
+    --  Note that this is a bit more inclusive than we actually need
+    --  (in particular membership tests do not allow the use of subtype
+    --  indications). But that doesn't matter, we have already checked
+    --  that the construct is legal to get this far.
+ 
     function Is_Type_Related_Rep_Item (N : Node_Id) return Boolean;
     --  Returns True for a representation clause/pragma that specifies a
     --  type-related representation (as opposed to operational) aspect.
*************** package body Sem_Ch13 is
*** 186,191 ****
--- 203,214 ----
     --  We can't allow this, otherwise we have predicate-static applying to a
     --  larger class than static expressions, which was never intended.
  
+    procedure New_Put_Image_Subprogram
+      (N    : Node_Id;
+       Ent  : Entity_Id;
+       Subp : Entity_Id);
+    --  Similar to New_Stream_Subprogram, but for the Put_Image attribute
+ 
     procedure New_Stream_Subprogram
       (N    : Node_Id;
        Ent  : Entity_Id;
*************** package body Sem_Ch13 is
*** 206,211 ****
--- 229,238 ----
     --  renaming_as_body. For tagged types, the specification is one of the
     --  primitive specs.
  
+    procedure No_Type_Rep_Item (N : Node_Id);
+    --  Output message indicating that no type-related aspects can be
+    --  specified due to some property of the parent type.
+ 
     procedure Register_Address_Clause_Check
       (N   : Node_Id;
        X   : Entity_Id;
*************** package body Sem_Ch13 is
*** 215,220 ****
--- 242,269 ----
     --  Register a check for the address clause N. The rest of the parameters
     --  are in keeping with the components of Address_Clause_Check_Record below.
  
+    procedure Validate_Aspect_Aggregate (N : Node_Id);
+    --  Check legality of operations given in the Ada 202x Aggregate aspect for
+    --  containers.
+ 
+    procedure Resolve_Aspect_Aggregate
+     (Typ  : Entity_Id;
+      Expr : Node_Id);
+    --  Resolve each one of the operations specified in the specification of
+    --  Aspect_Aggregate.
+ 
+    procedure Validate_Aspect_Stable_Properties
+      (E : Entity_Id; N : Node_Id; Class_Present : Boolean);
+    --  Check legality of functions given in the Ada 202x Stable_Properties
+    --  (or Stable_Properties'Class) aspect.
+ 
+    procedure Resolve_Aspect_Stable_Properties
+     (Typ_Or_Subp   : Entity_Id;
+      Expr          : Node_Id;
+      Class_Present : Boolean);
+    --  Resolve each one of the functions specified in the specification of
+    --  aspect Stable_Properties (or Stable_Properties'Class).
+ 
     procedure Resolve_Iterable_Operation
       (N      : Node_Id;
        Cursor : Entity_Id;
*************** package body Sem_Ch13 is
*** 353,360 ****
  
     procedure Adjust_Record_For_Reverse_Bit_Order (R : Entity_Id) is
        Max_Machine_Scalar_Size : constant Uint :=
!                                   UI_From_Int
!                                     (Standard_Long_Long_Integer_Size);
        --  We use this as the maximum machine scalar size
  
        SSU : constant Uint := UI_From_Int (System_Storage_Unit);
--- 402,408 ----
  
     procedure Adjust_Record_For_Reverse_Bit_Order (R : Entity_Id) is
        Max_Machine_Scalar_Size : constant Uint :=
!                                   UI_From_Int (System_Max_Integer_Size);
        --  We use this as the maximum machine scalar size
  
        SSU : constant Uint := UI_From_Int (System_Storage_Unit);
*************** package body Sem_Ch13 is
*** 814,819 ****
--- 862,906 ----
        end if;
     end Alignment_Check_For_Size_Change;
  
+    -----------------------------------
+    -- All_Membership_Choices_Static --
+    -----------------------------------
+ 
+    function All_Membership_Choices_Static (Expr : Node_Id) return Boolean is
+       pragma Assert (Nkind (Expr) in N_Membership_Test);
+    begin
+       pragma Assert
+         (Present (Right_Opnd (Expr))
+            xor
+          Present (Alternatives (Expr)));
+ 
+       if Present (Right_Opnd (Expr)) then
+          return Is_Static_Choice (Right_Opnd (Expr));
+       else
+          return All_Static_Choices (Alternatives (Expr));
+       end if;
+    end All_Membership_Choices_Static;
+ 
+    ------------------------
+    -- All_Static_Choices --
+    ------------------------
+ 
+    function All_Static_Choices (L : List_Id) return Boolean is
+       N : Node_Id;
+ 
+    begin
+       N := First (L);
+       while Present (N) loop
+          if not Is_Static_Choice (N) then
+             return False;
+          end if;
+ 
+          Next (N);
+       end loop;
+ 
+       return True;
+    end All_Static_Choices;
+ 
     -------------------------------------
     -- Analyze_Aspects_At_Freeze_Point --
     -------------------------------------
*************** package body Sem_Ch13 is
*** 823,828 ****
--- 910,923 ----
        --  This routine analyzes an Aspect_Default_[Component_]Value denoted by
        --  the aspect specification node ASN.
  
+       procedure Check_Aspect_Too_Late (N : Node_Id);
+       --  This procedure is similar to Rep_Item_Too_Late for representation
+       --  aspects that apply to type and that do not have a corresponding
+       --  pragma.
+       --  Used to check in particular that the expression associated with
+       --  aspect node N for the given type (entity) of the aspect does not
+       --  appear too late according to the rules in RM 13.1(9) and 13.1(10).
+ 
        procedure Inherit_Delayed_Rep_Aspects (ASN : Node_Id);
        --  As discussed in the spec of Aspects (see Aspect_Delay declaration),
        --  a derived type can inherit aspects from its parent which have been
*************** package body Sem_Ch13 is
*** 856,902 ****
        ----------------------------------
  
        procedure Analyze_Aspect_Default_Value (ASN : Node_Id) is
-          A_Id : constant Aspect_Id := Get_Aspect_Id (ASN);
           Ent  : constant Entity_Id := Entity (ASN);
           Expr : constant Node_Id   := Expression (ASN);
-          Id   : constant Node_Id   := Identifier (ASN);
  
        begin
!          Error_Msg_Name_1 := Chars (Id);
  
!          if not Is_Type (Ent) then
!             Error_Msg_N ("aspect% can only apply to a type", Id);
!             return;
  
!          elsif not Is_First_Subtype (Ent) then
!             Error_Msg_N ("aspect% cannot apply to subtype", Id);
!             return;
  
!          elsif A_Id = Aspect_Default_Value
!            and then not Is_Scalar_Type (Ent)
!          then
!             Error_Msg_N ("aspect% can only be applied to scalar type", Id);
!             return;
  
!          elsif A_Id = Aspect_Default_Component_Value then
!             if not Is_Array_Type (Ent) then
!                Error_Msg_N ("aspect% can only be applied to array type", Id);
!                return;
  
!             elsif not Is_Scalar_Type (Component_Type (Ent)) then
!                Error_Msg_N ("aspect% requires scalar components", Id);
!                return;
!             end if;
           end if;
  
!          Set_Has_Default_Aspect (Base_Type (Ent));
  
!          if Is_Scalar_Type (Ent) then
!             Set_Default_Aspect_Value (Base_Type (Ent), Expr);
!          else
!             Set_Default_Aspect_Component_Value (Base_Type (Ent), Expr);
           end if;
!       end Analyze_Aspect_Default_Value;
  
        ---------------------------------
        -- Inherit_Delayed_Rep_Aspects --
--- 951,1062 ----
        ----------------------------------
  
        procedure Analyze_Aspect_Default_Value (ASN : Node_Id) is
           Ent  : constant Entity_Id := Entity (ASN);
           Expr : constant Node_Id   := Expression (ASN);
  
        begin
!          Set_Has_Default_Aspect (Base_Type (Ent));
  
!          if Is_Scalar_Type (Ent) then
!             Set_Default_Aspect_Value (Base_Type (Ent), Expr);
!          else
!             Set_Default_Aspect_Component_Value (Base_Type (Ent), Expr);
!          end if;
  
!          Check_Aspect_Too_Late (ASN);
!       end Analyze_Aspect_Default_Value;
  
!       ---------------------------
!       -- Check_Aspect_Too_Late --
!       ---------------------------
  
!       procedure Check_Aspect_Too_Late (N : Node_Id) is
!          Typ  : constant Entity_Id := Entity (N);
!          Expr : constant Node_Id   := Expression (N);
  
!          function Find_Type_Reference
!            (Typ : Entity_Id; Expr : Node_Id) return Boolean;
!          --  Return True if a reference to type Typ is found in the expression
!          --  Expr.
! 
!          -------------------------
!          -- Find_Type_Reference --
!          -------------------------
! 
!          function Find_Type_Reference
!            (Typ : Entity_Id; Expr : Node_Id) return Boolean
!          is
!             function Find_Type (N : Node_Id) return Traverse_Result;
!             --  Set Found to True if N refers to Typ
! 
!             ---------------
!             -- Find_Type --
!             ---------------
! 
!             function Find_Type (N : Node_Id) return Traverse_Result is
!             begin
!                if N = Typ
!                  or else (Nkind (N) in N_Identifier | N_Expanded_Name
!                            and then Present (Entity (N))
!                            and then Entity (N) = Typ)
!                then
!                   return Abandon;
!                else
!                   return OK;
!                end if;
!             end Find_Type;
! 
!             function Search_Type_Reference is new Traverse_Func (Find_Type);
! 
!          begin
!             return Search_Type_Reference (Expr) = Abandon;
!          end Find_Type_Reference;
! 
!          Parent_Type : Entity_Id;
! 
!       begin
!          --  Ensure Expr is analyzed so that e.g. all types are properly
!          --  resolved for Find_Type_Reference.
! 
!          Analyze (Expr);
! 
!          --  A self-referential aspect is illegal if it forces freezing the
!          --  entity before the corresponding aspect has been analyzed.
! 
!          if Find_Type_Reference (Typ, Expr) then
!             Error_Msg_NE
!               ("aspect specification causes premature freezing of&", N, Typ);
           end if;
  
!          --  For representation aspects, check for case of untagged derived
!          --  type whose parent either has primitive operations (pre Ada 202x),
!          --  or is a by-reference type (RM 13.1(10)).
!          --  Strictly speaking the check also applies to Ada 2012 but it is
!          --  really too constraining for existing code already, so relax it.
!          --  ??? Confirming aspects should be allowed here.
  
!          if Is_Representation_Aspect (Get_Aspect_Id (N))
!            and then Is_Derived_Type (Typ)
!            and then not Is_Tagged_Type (Typ)
!          then
!             Parent_Type := Etype (Base_Type (Typ));
! 
!             if Ada_Version <= Ada_2012
!               and then Has_Primitive_Operations (Parent_Type)
!             then
!                Error_Msg_N
!                  ("|representation aspect not permitted before Ada 202x: " &
!                   "use -gnat2020!", N);
!                Error_Msg_NE
!                  ("\parent type & has primitive operations!", N, Parent_Type);
! 
!             elsif Is_By_Reference_Type (Parent_Type) then
!                No_Type_Rep_Item (N);
!                Error_Msg_NE
!                  ("\parent type & is a by-reference type!", N, Parent_Type);
!             end if;
           end if;
!       end Check_Aspect_Too_Late;
  
        ---------------------------------
        -- Inherit_Delayed_Rep_Aspects --
*************** package body Sem_Ch13 is
*** 905,911 ****
        procedure Inherit_Delayed_Rep_Aspects (ASN : Node_Id) is
           A_Id : constant Aspect_Id := Get_Aspect_Id (ASN);
           P    : constant Entity_Id := Entity (ASN);
!          --  Entithy for parent type
  
           N : Node_Id;
           --  Item from Rep_Item chain
--- 1065,1071 ----
        procedure Inherit_Delayed_Rep_Aspects (ASN : Node_Id) is
           A_Id : constant Aspect_Id := Get_Aspect_Id (ASN);
           P    : constant Entity_Id := Entity (ASN);
!          --  Entity for parent type
  
           N : Node_Id;
           --  Item from Rep_Item chain
*************** package body Sem_Ch13 is
*** 1062,1070 ****
                             Set_Is_Volatile (E);
                          end if;
  
!                      --  Volatile_Full_Access
  
!                      when Aspect_Volatile_Full_Access =>
                          if Is_Volatile_Full_Access (P) then
                             Set_Is_Volatile_Full_Access (E);
                          end if;
--- 1222,1232 ----
                             Set_Is_Volatile (E);
                          end if;
  
!                      --  Volatile_Full_Access (also Full_Access_Only)
  
!                      when Aspect_Volatile_Full_Access
!                         | Aspect_Full_Access_Only
!                      =>
                          if Is_Volatile_Full_Access (P) then
                             Set_Is_Volatile_Full_Access (E);
                          end if;
*************** package body Sem_Ch13 is
*** 1085,1091 ****
                 end if;
              end if;
  
!             N := Next_Rep_Item (N);
           end loop;
        end Inherit_Delayed_Rep_Aspects;
  
--- 1247,1253 ----
                 end if;
              end if;
  
!             Next_Rep_Item (N);
           end loop;
        end Inherit_Delayed_Rep_Aspects;
  
*************** package body Sem_Ch13 is
*** 1160,1166 ****
                       return;
                    end if;
  
!                when Aspect_Volatile_Full_Access =>
                    if not Is_Volatile_Full_Access (Par) then
                       return;
                    end if;
--- 1322,1330 ----
                       return;
                    end if;
  
!                when Aspect_Volatile_Full_Access
!                   | Aspect_Full_Access_Only
!                =>
                    if not Is_Volatile_Full_Access (Par) then
                       return;
                    end if;
*************** package body Sem_Ch13 is
*** 1178,1200 ****
  
           --  Local variables
  
!          Prag : Node_Id;
  
        --  Start of processing for Make_Pragma_From_Boolean_Aspect
  
        begin
!          --  Note that we know Expr is present, because for a missing Expr
!          --  argument, we knew it was True and did not need to delay the
!          --  evaluation to the freeze point.
! 
!          if Is_False (Static_Boolean (Expr)) then
              Check_False_Aspect_For_Derived_Type;
  
           else
              Prag :=
                Make_Pragma (Loc,
                  Pragma_Identifier            =>
!                   Make_Identifier (Sloc (Ident), Chars (Ident)),
                  Pragma_Argument_Associations => New_List (
                    Make_Pragma_Argument_Association (Sloc (Ident),
                      Expression => New_Occurrence_Of (Ent, Sloc (Ident)))));
--- 1342,1369 ----
  
           --  Local variables
  
!          Prag   : Node_Id;
!          P_Name : Name_Id;
  
        --  Start of processing for Make_Pragma_From_Boolean_Aspect
  
        begin
!          if Present (Expr) and then Is_False (Static_Boolean (Expr)) then
              Check_False_Aspect_For_Derived_Type;
  
           else
+             --  There is no Full_Access_Only pragma so use VFA instead
+ 
+             if A_Name = Name_Full_Access_Only then
+                P_Name := Name_Volatile_Full_Access;
+             else
+                P_Name := A_Name;
+             end if;
+ 
              Prag :=
                Make_Pragma (Loc,
                  Pragma_Identifier            =>
!                   Make_Identifier (Sloc (Ident), P_Name),
                  Pragma_Argument_Associations => New_List (
                    Make_Pragma_Argument_Association (Sloc (Ident),
                      Expression => New_Occurrence_Of (Ent, Sloc (Ident)))));
*************** package body Sem_Ch13 is
*** 1279,1290 ****
                       --  Analyze_Aspect_Export_Import, but is not analyzed as
                       --  the complete analysis must happen now.
  
!                      if A_Id = Aspect_Export or else A_Id = Aspect_Import then
!                         null;
! 
!                      --  Otherwise create a corresponding pragma
  
!                      else
                          Make_Pragma_From_Boolean_Aspect (ASN);
                       end if;
  
--- 1448,1460 ----
                       --  Analyze_Aspect_Export_Import, but is not analyzed as
                       --  the complete analysis must happen now.
  
!                      --  Aspect Full_Access_Only must be analyzed last so that
!                      --  aspects Volatile and Atomic, if any, are analyzed.
  
!                      if A_Id not in Aspect_Export
!                                   | Aspect_Full_Access_Only
!                                   | Aspect_Import
!                      then
                          Make_Pragma_From_Boolean_Aspect (ASN);
                       end if;
  
*************** package body Sem_Ch13 is
*** 1324,1332 ****
--- 1494,1511 ----
                             ASN, E);
                       end if;
  
+                   when Aspect_Integer_Literal
+                      | Aspect_Real_Literal
+                      | Aspect_String_Literal
+                   =>
+                      Validate_Literal_Aspect (E, ASN);
+ 
                    when Aspect_Iterable =>
                       Validate_Iterable_Aspect (E, ASN);
  
+                   when Aspect_Aggregate =>
+                      null;
+ 
                    when others =>
                       null;
                 end case;
*************** package body Sem_Ch13 is
*** 1342,1347 ****
--- 1521,1545 ----
           Next_Rep_Item (ASN);
        end loop;
  
+       --  Make a second pass for a Full_Access_Only entry
+ 
+       ASN := First_Rep_Item (E);
+       while Present (ASN) loop
+          if Nkind (ASN) = N_Aspect_Specification then
+             exit when Entity (ASN) /= E;
+ 
+             if Get_Aspect_Id (ASN) = Aspect_Full_Access_Only then
+                Make_Pragma_From_Boolean_Aspect (ASN);
+                Ritem := Aspect_Rep_Item (ASN);
+                if Present (Ritem) then
+                   Analyze (Ritem);
+                end if;
+             end if;
+          end if;
+ 
+          Next_Rep_Item (ASN);
+       end loop;
+ 
        --  This is where we inherit delayed rep aspects from our parent. Note
        --  that if we fell out of the above loop with ASN non-empty, it means
        --  we hit an aspect for an entity other than E, and it must be the
*************** package body Sem_Ch13 is
*** 1387,1392 ****
--- 1585,1591 ----
        --    Refined_Global
        --    Refined_State
        --    SPARK_Mode
+       --    Subprogram_Variant
        --    Warnings
        --  Insert pragma Prag such that it mimics the placement of a source
        --  pragma of the same kind. Flag Is_Generic should be set when the
*************** package body Sem_Ch13 is
*** 1429,1439 ****
           --    package body Pack is
           --       pragma Prag;
  
!          if Nkind_In (N, N_Entry_Body,
!                          N_Package_Body,
!                          N_Protected_Body,
!                          N_Subprogram_Body,
!                          N_Task_Body)
           then
              Decls := Declarations (N);
  
--- 1628,1638 ----
           --    package body Pack is
           --       pragma Prag;
  
!          if Nkind (N) in N_Entry_Body
!                        | N_Package_Body
!                        | N_Protected_Body
!                        | N_Subprogram_Body
!                        | N_Task_Body
           then
              Decls := Declarations (N);
  
*************** package body Sem_Ch13 is
*** 1453,1460 ****
           --    package Pack is
           --       pragma Prag;
  
!          elsif Nkind_In (N, N_Generic_Package_Declaration,
!                             N_Package_Declaration)
           then
              Decls := Visible_Declarations (Specification (N));
  
--- 1652,1659 ----
           --    package Pack is
           --       pragma Prag;
  
!          elsif Nkind (N) in N_Generic_Package_Declaration
!                           | N_Package_Declaration
           then
              Decls := Visible_Declarations (Specification (N));
  
*************** package body Sem_Ch13 is
*** 1580,1586 ****
        --  Local variables
  
        Aspect : Node_Id;
!       Aitem  : Node_Id;
        Ent    : Node_Id;
  
        L : constant List_Id := Aspect_Specifications (N);
--- 1779,1785 ----
        --  Local variables
  
        Aspect : Node_Id;
!       Aitem  : Node_Id := Empty;
        Ent    : Node_Id;
  
        L : constant List_Id := Aspect_Specifications (N);
*************** package body Sem_Ch13 is
*** 1607,1616 ****
        --  analyzed right now.
  
        --  Note that there is a special handling for Pre, Post, Test_Case,
!       --  Contract_Cases aspects. In these cases, we do not have to worry
!       --  about delay issues, since the pragmas themselves deal with delay
!       --  of visibility for the expression analysis. Thus, we just insert
!       --  the pragma after the node N.
  
        --  Loop through aspects
  
--- 1806,1815 ----
        --  analyzed right now.
  
        --  Note that there is a special handling for Pre, Post, Test_Case,
!       --  Contract_Cases and Subprogram_Variant aspects. In these cases, we do
!       --  not have to worry about delay issues, since the pragmas themselves
!       --  deal with delay of visibility for the expression analysis. Thus, we
!       --  just insert the pragma after the node N.
  
        --  Loop through aspects
  
*************** package body Sem_Ch13 is
*** 1646,1654 ****
              procedure Analyze_Aspect_Implicit_Dereference;
              --  Perform analysis of the Implicit_Dereference aspects
  
!             procedure Make_Aitem_Pragma
                (Pragma_Argument_Associations : List_Id;
!                Pragma_Name                  : Name_Id);
              --  This is a wrapper for Make_Pragma used for converting aspects
              --  to pragmas. It takes care of Sloc (set from Loc) and building
              --  the pragma identifier from the given name. In addition the
--- 1845,1862 ----
              procedure Analyze_Aspect_Implicit_Dereference;
              --  Perform analysis of the Implicit_Dereference aspects
  
!             procedure Analyze_Aspect_Relaxed_Initialization;
!             --  Perform analysis of aspect Relaxed_Initialization
! 
!             procedure Analyze_Aspect_Yield;
!             --  Perform analysis of aspect Yield
! 
!             procedure Analyze_Aspect_Static;
!             --  Ada 202x (AI12-0075): Perform analysis of aspect Static
! 
!             function Make_Aitem_Pragma
                (Pragma_Argument_Associations : List_Id;
!                Pragma_Name                  : Name_Id) return Node_Id;
              --  This is a wrapper for Make_Pragma used for converting aspects
              --  to pragmas. It takes care of Sloc (set from Loc) and building
              --  the pragma identifier from the given name. In addition the
*************** package body Sem_Ch13 is
*** 1707,1713 ****
                    --  Generate:
                    --    pragma Convention (<Conv>, <E>);
  
!                   Make_Aitem_Pragma
                      (Pragma_Name => Name_Convention,
                       Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
--- 1915,1921 ----
                    --  Generate:
                    --    pragma Convention (<Conv>, <E>);
  
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Name => Name_Convention,
                       Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
*************** package body Sem_Ch13 is
*** 1805,1813 ****
                    Error_Msg_N
                      ("incompatible interfacing aspects given for &", E);
                    Error_Msg_Sloc := Sloc (Expo);
!                   Error_Msg_N ("\aspect `Export` #", E);
                    Error_Msg_Sloc := Sloc (Imp);
!                   Error_Msg_N ("\aspect `Import` #", E);
                 end if;
  
                 --  A variable is most likely modified from the outside. Take
--- 2013,2021 ----
                    Error_Msg_N
                      ("incompatible interfacing aspects given for &", E);
                    Error_Msg_Sloc := Sloc (Expo);
!                   Error_Msg_N ("\aspect Export #", E);
                    Error_Msg_Sloc := Sloc (Imp);
!                   Error_Msg_N ("\aspect Import #", E);
                 end if;
  
                 --  A variable is most likely modified from the outside. Take
*************** package body Sem_Ch13 is
*** 1889,1896 ****
                 if A_Id = Aspect_External_Name then
                    if No (Expo) and then No (Imp) then
                       Error_Msg_N
!                        ("aspect `External_Name` requires aspect `Import` or "
!                         & "`Export`", Aspect);
                    end if;
  
                 --  Otherwise ensure that aspect Link_Name applies to aspect
--- 2097,2104 ----
                 if A_Id = Aspect_External_Name then
                    if No (Expo) and then No (Imp) then
                       Error_Msg_N
!                        ("aspect External_Name requires aspect Import or "
!                         & "Export", Aspect);
                    end if;
  
                 --  Otherwise ensure that aspect Link_Name applies to aspect
*************** package body Sem_Ch13 is
*** 1900,1907 ****
                    pragma Assert (A_Id = Aspect_Link_Name);
                    if No (Expo) and then No (Imp) then
                       Error_Msg_N
!                        ("aspect `Link_Name` requires aspect `Import` or "
!                         & "`Export`", Aspect);
                    end if;
                 end if;
              end Analyze_Aspect_External_Link_Name;
--- 2108,2115 ----
                    pragma Assert (A_Id = Aspect_Link_Name);
                    if No (Expo) and then No (Imp) then
                       Error_Msg_N
!                        ("aspect Link_Name requires aspect Import or Export",
!                         Aspect);
                    end if;
                 end if;
              end Analyze_Aspect_External_Link_Name;
*************** package body Sem_Ch13 is
*** 1931,1940 ****
                    begin
                       while Present (Disc) loop
                          if Chars (Expr) = Chars (Disc)
!                           and then Ekind_In
!                             (Etype (Disc),
!                              E_Anonymous_Access_Subprogram_Type,
!                              E_Anonymous_Access_Type)
                          then
                             Set_Has_Implicit_Dereference (E);
                             Set_Has_Implicit_Dereference (Disc);
--- 2139,2147 ----
                    begin
                       while Present (Disc) loop
                          if Chars (Expr) = Chars (Disc)
!                           and then Ekind (Etype (Disc)) in
!                             E_Anonymous_Access_Subprogram_Type |
!                             E_Anonymous_Access_Type
                          then
                             Set_Has_Implicit_Dereference (E);
                             Set_Has_Implicit_Dereference (Disc);
*************** package body Sem_Ch13 is
*** 1978,1992 ****
  
              end Analyze_Aspect_Implicit_Dereference;
  
              -----------------------
              -- Make_Aitem_Pragma --
              -----------------------
  
!             procedure Make_Aitem_Pragma
                (Pragma_Argument_Associations : List_Id;
!                Pragma_Name                  : Name_Id)
              is
!                Args : List_Id := Pragma_Argument_Associations;
  
              begin
                 --  We should never get here if aspect was disabled
--- 2185,2730 ----
  
              end Analyze_Aspect_Implicit_Dereference;
  
+             -------------------------------------------
+             -- Analyze_Aspect_Relaxed_Initialization --
+             -------------------------------------------
+ 
+             procedure Analyze_Aspect_Relaxed_Initialization is
+                procedure Analyze_Relaxed_Parameter
+                  (Subp_Id : Entity_Id;
+                   Param   : Node_Id;
+                   Seen    : in out Elist_Id);
+                --  Analyze parameter that appears in the expression of the
+                --  aspect Relaxed_Initialization.
+ 
+                -------------------------------
+                -- Analyze_Relaxed_Parameter --
+                -------------------------------
+ 
+                procedure Analyze_Relaxed_Parameter
+                  (Subp_Id : Entity_Id;
+                   Param   : Node_Id;
+                   Seen    : in out Elist_Id)
+                is
+                begin
+                   --  Set name of the aspect for error messages
+                   Error_Msg_Name_1 := Nam;
+ 
+                   --  The relaxed parameter is a formal parameter
+ 
+                   if Nkind (Param) in N_Identifier | N_Expanded_Name then
+                      Analyze (Param);
+ 
+                      declare
+                         Item : constant Entity_Id := Entity (Param);
+                      begin
+                         --  It must be a formal of the analyzed subprogram
+ 
+                         if Scope (Item) = Subp_Id then
+ 
+                            pragma Assert (Is_Formal (Item));
+ 
+                            --  It must not have scalar or access type
+ 
+                            if Is_Elementary_Type (Etype (Item)) then
+                               Error_Msg_N ("illegal aspect % item", Param);
+                               Error_Msg_N
+                                 ("\item must not have elementary type", Param);
+                            end if;
+ 
+                            --  Detect duplicated items
+ 
+                            if Contains (Seen, Item) then
+                               Error_Msg_N ("duplicate aspect % item", Param);
+                            else
+                               Append_New_Elmt (Item, Seen);
+                            end if;
+                         else
+                            Error_Msg_N ("illegal aspect % item", Param);
+                         end if;
+                      end;
+ 
+                   --  The relaxed parameter is the function's Result attribute
+ 
+                   elsif Is_Attribute_Result (Param) then
+                      Analyze (Param);
+ 
+                      declare
+                         Pref : constant Node_Id := Prefix (Param);
+                      begin
+                         if Present (Pref)
+                           and then
+                             Nkind (Pref) in N_Identifier | N_Expanded_Name
+                           and then
+                             Entity (Pref) = Subp_Id
+                         then
+                            --  Function result must not have scalar or access
+                            --  type.
+ 
+                            if Is_Elementary_Type (Etype (Pref)) then
+                               Error_Msg_N ("illegal aspect % item", Param);
+                               Error_Msg_N
+                                 ("\function result must not have elementary"
+                                  & " type", Param);
+                            end if;
+ 
+                            --  Detect duplicated items
+ 
+                            if Contains (Seen, Subp_Id) then
+                               Error_Msg_N ("duplicate aspect % item", Param);
+                            else
+                               Append_New_Elmt (Entity (Pref), Seen);
+                            end if;
+ 
+                         else
+                            Error_Msg_N ("illegal aspect % item", Param);
+                         end if;
+                      end;
+                   else
+                      Error_Msg_N ("illegal aspect % item", Param);
+                   end if;
+                end Analyze_Relaxed_Parameter;
+ 
+                --  Local variables
+ 
+                Seen : Elist_Id := No_Elist;
+                --  Items that appear in the relaxed initialization aspect
+                --  expression of a subprogram; for detecting duplicates.
+ 
+                Restore_Scope : Boolean;
+                --  Will be set to True if we need to restore the scope table
+                --  after analyzing the aspect expression.
+ 
+                Prev_Id : Entity_Id;
+ 
+             --  Start of processing for Analyze_Aspect_Relaxed_Initialization
+ 
+             begin
+                --  Set name of the aspect for error messages
+                Error_Msg_Name_1 := Nam;
+ 
+                --  Annotation of a type; no aspect expression is allowed.
+                --  For a private type, the aspect must be attached to the
+                --  partial view.
+                --
+                --  ??? Once the exact rule for this aspect is ready, we will
+                --  likely reject concurrent types, etc., so let's keep the code
+                --  for types and variable separate.
+ 
+                if Is_First_Subtype (E) then
+                   Prev_Id := Incomplete_Or_Partial_View (E);
+                   if Present (Prev_Id) then
+ 
+                      --  Aspect may appear on the full view of an incomplete
+                      --  type because the incomplete declaration cannot have
+                      --  any aspects.
+ 
+                      if Ekind (Prev_Id) = E_Incomplete_Type then
+                         null;
+                      else
+                         Error_Msg_N ("aspect % must apply to partial view", N);
+                      end if;
+ 
+                   elsif Present (Expr) then
+                      Error_Msg_N ("illegal aspect % expression", Expr);
+                   end if;
+ 
+                --  Annotation of a variable; no aspect expression is allowed
+ 
+                elsif Ekind (E) = E_Variable then
+                   if Present (Expr) then
+                      Error_Msg_N ("illegal aspect % expression", Expr);
+                   end if;
+ 
+                --  Annotation of a constant; no aspect expression is allowed.
+                --  For a deferred constant, the aspect must be attached to the
+                --  partial view.
+ 
+                elsif Ekind (E) = E_Constant then
+                   if Present (Incomplete_Or_Partial_View (E)) then
+                      Error_Msg_N
+                        ("aspect % must apply to deferred constant", N);
+ 
+                   elsif Present (Expr) then
+                      Error_Msg_N ("illegal aspect % expression", Expr);
+                   end if;
+ 
+                --  Annotation of a subprogram; aspect expression is required
+ 
+                elsif Is_Subprogram_Or_Entry (E)
+                  or else Is_Generic_Subprogram (E)
+                then
+                   if Present (Expr) then
+ 
+                      --  If we analyze subprogram body that acts as its own
+                      --  spec, then the subprogram itself and its formals are
+                      --  already installed; otherwise, we need to install them,
+                      --  as they must be visible when analyzing the aspect
+                      --  expression.
+ 
+                      if In_Open_Scopes (E) then
+                         Restore_Scope := False;
+                      else
+                         Restore_Scope := True;
+                         Push_Scope (E);
+ 
+                         --  Only formals of the subprogram itself can appear
+                         --  in Relaxed_Initialization aspect expression, not
+                         --  formals of the enclosing generic unit. (This is
+                         --  different than in Precondition or Depends aspects,
+                         --  where both kinds of formals are allowed.)
+ 
+                         Install_Formals (E);
+                      end if;
+ 
+                      --  Aspect expression is either an aggregate with list of
+                      --  parameters (and possibly the Result attribute for a
+                      --  function).
+ 
+                      if Nkind (Expr) = N_Aggregate then
+ 
+                         --  Component associations in the aggregate must be a
+                         --  parameter name followed by a static boolean
+                         --  expression.
+ 
+                         if Present (Component_Associations (Expr)) then
+                            declare
+                               Assoc : Node_Id :=
+                                 First (Component_Associations (Expr));
+                            begin
+                               while Present (Assoc) loop
+                                  if List_Length (Choices (Assoc)) = 1 then
+                                     Analyze_Relaxed_Parameter
+                                       (E, First (Choices (Assoc)), Seen);
+ 
+                                     if Inside_A_Generic then
+                                        Preanalyze_And_Resolve
+                                          (Expression (Assoc), Any_Boolean);
+                                     else
+                                        Analyze_And_Resolve
+                                          (Expression (Assoc), Any_Boolean);
+                                     end if;
+ 
+                                     if not Is_OK_Static_Expression
+                                       (Expression (Assoc))
+                                     then
+                                        Error_Msg_Name_1 := Nam;
+                                        Error_Msg_N
+                                          ("expression of aspect %" &
+                                           "must be static", Aspect);
+                                     end if;
+ 
+                                  else
+                                     Error_Msg_Name_1 := Nam;
+                                     Error_Msg_N
+                                       ("illegal aspect % expression", Expr);
+                                  end if;
+                                  Next (Assoc);
+                               end loop;
+                            end;
+                         end if;
+ 
+                         --  Expressions of the aggregate are parameter names
+ 
+                         if Present (Expressions (Expr)) then
+                            declare
+                               Param : Node_Id := First (Expressions (Expr));
+ 
+                            begin
+                               while Present (Param) loop
+                                  Analyze_Relaxed_Parameter (E, Param, Seen);
+                                  Next (Param);
+                               end loop;
+                            end;
+                         end if;
+ 
+                         --  Mark the aggregate expression itself as analyzed;
+                         --  its subexpressions were marked when they themselves
+                         --  were analyzed.
+ 
+                         Set_Analyzed (Expr);
+ 
+                      --  Otherwise, it is a single name of a subprogram
+                      --  parameter (or possibly the Result attribute for
+                      --  a function).
+ 
+                      else
+                         Analyze_Relaxed_Parameter (E, Expr, Seen);
+                      end if;
+ 
+                      if Restore_Scope then
+                         End_Scope;
+                      end if;
+                   else
+                      Error_Msg_N ("missing expression for aspect %", N);
+                   end if;
+ 
+                else
+                   Error_Msg_N ("inappropriate entity for aspect %", E);
+                end if;
+             end Analyze_Aspect_Relaxed_Initialization;
+ 
+             ---------------------------
+             -- Analyze_Aspect_Static --
+             ---------------------------
+ 
+             procedure Analyze_Aspect_Static is
+                function Has_Convention_Intrinsic (L : List_Id) return Boolean;
+                --  Return True if L contains a pragma argument association
+                --  node representing a convention Intrinsic.
+ 
+                ------------------------------
+                -- Has_Convention_Intrinsic --
+                ------------------------------
+ 
+                function Has_Convention_Intrinsic
+                  (L : List_Id) return Boolean
+                is
+                   Arg : Node_Id := First (L);
+                begin
+                   while Present (Arg) loop
+                      if Nkind (Arg) = N_Pragma_Argument_Association
+                        and then Chars (Arg) = Name_Convention
+                        and then Chars (Expression (Arg)) = Name_Intrinsic
+                      then
+                         return True;
+                      end if;
+ 
+                      Next (Arg);
+                   end loop;
+ 
+                   return False;
+                end Has_Convention_Intrinsic;
+ 
+                Is_Imported_Intrinsic : Boolean;
+ 
+             begin
+                if Ada_Version < Ada_2020 then
+                   Error_Msg_N
+                     ("aspect % is an Ada 202x feature", Aspect);
+                   Error_Msg_N ("\compile with -gnat2020", Aspect);
+ 
+                   return;
+                end if;
+ 
+                Is_Imported_Intrinsic := Is_Imported (E)
+                  and then
+                    Has_Convention_Intrinsic
+                      (Pragma_Argument_Associations (Import_Pragma (E)));
+ 
+                --  The aspect applies only to expression functions that
+                --  statisfy the requirements for a static expression function
+                --  (such as having an expression that is predicate-static) as
+                --  well as Intrinsic imported functions as a -gnatX extension.
+ 
+                if not Is_Expression_Function (E)
+                  and then
+                    not (Extensions_Allowed and then Is_Imported_Intrinsic)
+                then
+                   if Extensions_Allowed then
+                      Error_Msg_N
+                        ("aspect % requires intrinsic or expression function",
+                         Aspect);
+ 
+                   elsif Is_Imported_Intrinsic then
+                      Error_Msg_N
+                        ("aspect % on intrinsic function is an extension: " &
+                         "use -gnatX",
+                         Aspect);
+ 
+                   else
+                      Error_Msg_N
+                        ("aspect % requires expression function", Aspect);
+                   end if;
+ 
+                   return;
+ 
+                --  Ada 202x (AI12-0075): Check that the function satisfies
+                --  several requirements of static functions as specified in
+                --  RM 6.8(5.1-5.8). Note that some of the requirements given
+                --  there are checked elsewhere.
+ 
+                else
+                   --  The expression of the expression function must be a
+                   --  potentially static expression (RM 202x 6.8(3.2-3.4)).
+                   --  That's checked in Sem_Ch6.Analyze_Expression_Function.
+ 
+                   --  The function must not contain any calls to itself, which
+                   --  is checked in Sem_Res.Resolve_Call.
+ 
+                   --  Each formal must be of mode in and have a static subtype
+ 
+                   declare
+                      Formal : Entity_Id := First_Formal (E);
+                   begin
+                      while Present (Formal) loop
+                         if Ekind (Formal) /= E_In_Parameter then
+                            Error_Msg_N
+                              ("aspect % requires formals of mode IN",
+                               Aspect);
+ 
+                            return;
+                         end if;
+ 
+                         if not Is_Static_Subtype (Etype (Formal)) then
+                            Error_Msg_N
+                              ("aspect % requires formals with static subtypes",
+                               Aspect);
+ 
+                            return;
+                         end if;
+ 
+                         Next_Formal (Formal);
+                      end loop;
+                   end;
+ 
+                   --  The function's result subtype must be a static subtype
+ 
+                   if not Is_Static_Subtype (Etype (E)) then
+                      Error_Msg_N
+                        ("aspect % requires function with result of "
+                         & "a static subtype",
+                         Aspect);
+ 
+                      return;
+                   end if;
+ 
+                   --  Check that the function does not have any applicable
+                   --  precondition or postcondition expression.
+ 
+                   for Asp in Pre_Post_Aspects loop
+                      if Has_Aspect (E, Asp) then
+                         Error_Msg_N
+                           ("this aspect is not allowed for a static "
+                            & "expression function",
+                            Find_Aspect (E, Asp));
+ 
+                         return;
+                      end if;
+                   end loop;
+ 
+                   --  ??? TBD: Must check that "for result type R, if the
+                   --  function is a boundary entity for type R (see 7.3.2),
+                   --  no type invariant applies to type R; if R has a
+                   --  component type C, a similar rule applies to C."
+                end if;
+ 
+                --  Preanalyze the expression (if any) when the aspect resides
+                --  in a generic unit. (Is this generic-related code necessary
+                --  for this aspect? It's modeled on what's done for aspect
+                --  Disable_Controlled. ???)
+ 
+                if Inside_A_Generic then
+                   if Present (Expr) then
+                      Preanalyze_And_Resolve (Expr, Any_Boolean);
+                   end if;
+ 
+                --  Otherwise the aspect resides in a nongeneric context
+ 
+                else
+                   --  When the expression statically evaluates to True, the
+                   --  expression function is treated as a static function.
+                   --  Otherwise the aspect appears without an expression and
+                   --  defaults to True.
+ 
+                   if Present (Expr) then
+                      Analyze_And_Resolve (Expr, Any_Boolean);
+ 
+                      --  Error if the boolean expression is not static
+ 
+                      if not Is_OK_Static_Expression (Expr) then
+                         Error_Msg_N
+                           ("expression of aspect % must be static", Aspect);
+                      end if;
+                   end if;
+                end if;
+             end Analyze_Aspect_Static;
+ 
+             --------------------------
+             -- Analyze_Aspect_Yield --
+             --------------------------
+ 
+             procedure Analyze_Aspect_Yield is
+                Expr_Value : Boolean := False;
+ 
+             begin
+                --  Check valid declarations for 'Yield
+ 
+                if Nkind (N) in N_Abstract_Subprogram_Declaration
+                              | N_Entry_Declaration
+                              | N_Generic_Subprogram_Declaration
+                              | N_Subprogram_Declaration
+                              | N_Formal_Subprogram_Declaration
+                  and then not Within_Protected_Type (E)
+                then
+                   null;
+ 
+                elsif Within_Protected_Type (E) then
+                   Error_Msg_N
+                     ("aspect% not applicable to protected operation", Id);
+                   return;
+ 
+                else
+                   Error_Msg_N
+                     ("aspect% only applicable to subprogram and entry "
+                      & "declarations", Id);
+                   return;
+                end if;
+ 
+                --  Evaluate its static expression (if available); otherwise it
+                --  defaults to True.
+ 
+                if No (Expr) then
+                   Expr_Value := True;
+ 
+                --  Otherwise it must have a static boolean expression
+ 
+                else
+                   if Inside_A_Generic then
+                      Preanalyze_And_Resolve (Expr, Any_Boolean);
+                   else
+                      Analyze_And_Resolve (Expr, Any_Boolean);
+                   end if;
+ 
+                   if Is_OK_Static_Expression (Expr) then
+                      if Is_True (Static_Boolean (Expr)) then
+                         Expr_Value := True;
+                      end if;
+                   else
+                      Error_Msg_N
+                        ("expression of aspect % must be static", Aspect);
+                   end if;
+                end if;
+ 
+                if Expr_Value then
+                   Set_Has_Yield_Aspect (E);
+                end if;
+ 
+                --  If the Yield aspect is specified for a dispatching
+                --  subprogram that inherits the aspect, the specified
+                --  value shall be confirming.
+ 
+                if Present (Expr)
+                  and then Is_Dispatching_Operation (E)
+                  and then Present (Overridden_Operation (E))
+                  and then Has_Yield_Aspect (Overridden_Operation (E))
+                             /= Is_True (Static_Boolean (Expr))
+                then
+                   Error_Msg_N ("specification of inherited aspect% can only " &
+                                "confirm parent value", Id);
+                end if;
+             end Analyze_Aspect_Yield;
+ 
              -----------------------
              -- Make_Aitem_Pragma --
              -----------------------
  
!             function Make_Aitem_Pragma
                (Pragma_Argument_Associations : List_Id;
!                Pragma_Name                  : Name_Id) return Node_Id
              is
!                Args  : List_Id := Pragma_Argument_Associations;
!                Aitem : Node_Id;
  
              begin
                 --  We should never get here if aspect was disabled
*************** package body Sem_Ch13 is
*** 2020,2025 ****
--- 2758,2765 ----
  
                 Set_Corresponding_Aspect (Aitem, Aspect);
                 Set_From_Aspect_Specification (Aitem);
+ 
+                return Aitem;
              end Make_Aitem_Pragma;
  
           --  Start of processing for Analyze_One_Aspect
*************** package body Sem_Ch13 is
*** 2073,2081 ****
  
              Ent := New_Occurrence_Of (E, Sloc (Id));
  
!             if A_Id = Aspect_Attach_Handler
!               or else A_Id = Aspect_Interrupt_Handler
!             then
  
                 --  Treat the specification as a reference to the protected
                 --  operation, which might otherwise appear unreferenced and
--- 2813,2819 ----
  
              Ent := New_Occurrence_Of (E, Sloc (Id));
  
!             if A_Id in Aspect_Attach_Handler | Aspect_Interrupt_Handler then
  
                 --  Treat the specification as a reference to the protected
                 --  operation, which might otherwise appear unreferenced and
*************** package body Sem_Ch13 is
*** 2118,2124 ****
  
              --  Check some general restrictions on language defined aspects
  
!             if not Implementation_Defined_Aspect (A_Id) then
                 Error_Msg_Name_1 := Nam;
  
                 --  Not allowed for renaming declarations. Examine the original
--- 2856,2867 ----
  
              --  Check some general restrictions on language defined aspects
  
!             if not Implementation_Defined_Aspect (A_Id)
!               or else A_Id in Aspect_Async_Readers
!                             | Aspect_Async_Writers
!                             | Aspect_Effective_Reads
!                             | Aspect_Effective_Writes
!             then
                 Error_Msg_Name_1 := Nam;
  
                 --  Not allowed for renaming declarations. Examine the original
*************** package body Sem_Ch13 is
*** 2141,2152 ****
                         ("aspect % not allowed for formal type declaration",
                          Aspect);
  
!                   elsif A_Id /= Aspect_Atomic
!                      and then A_Id /= Aspect_Volatile
!                      and then A_Id /= Aspect_Independent
!                      and then A_Id /= Aspect_Atomic_Components
!                      and then A_Id /= Aspect_Independent_Components
!                      and then A_Id /= Aspect_Volatile_Components
                    then
                       Error_Msg_N
                         ("aspect % not allowed for formal type declaration",
--- 2884,2899 ----
                         ("aspect % not allowed for formal type declaration",
                          Aspect);
  
!                   elsif A_Id not in Aspect_Atomic
!                                   | Aspect_Volatile
!                                   | Aspect_Independent
!                                   | Aspect_Atomic_Components
!                                   | Aspect_Independent_Components
!                                   | Aspect_Volatile_Components
!                                   | Aspect_Async_Readers
!                                   | Aspect_Async_Writers
!                                   | Aspect_Effective_Reads
!                                   | Aspect_Effective_Writes
                    then
                       Error_Msg_N
                         ("aspect % not allowed for formal type declaration",
*************** package body Sem_Ch13 is
*** 2164,2196 ****
  
              case Aspect_Delay (A_Id) is
                 when Always_Delay =>
!                   Delay_Required := True;
  
                 when Never_Delay =>
                    Delay_Required := False;
  
                 when Rep_Aspect =>
  
!                   --  If expression has the form of an integer literal, then
!                   --  do not delay, since we know the value cannot change.
!                   --  This optimization catches most rep clause cases.
! 
!                   --  For Boolean aspects, don't delay if no expression
  
!                   if A_Id in Boolean_Aspects and then No (Expr) then
                       Delay_Required := False;
  
!                   --  For non-Boolean aspects, don't delay if integer literal,
!                   --  unless the aspect is Alignment, which affects the
!                   --  freezing of an initialized object.
  
                    elsif A_Id not in Boolean_Aspects
-                     and then A_Id /= Aspect_Alignment
                      and then Present (Expr)
                      and then Nkind (Expr) = N_Integer_Literal
                    then
                       Delay_Required := False;
  
                    --  All other cases are delayed
  
                    else
--- 2911,2966 ----
  
              case Aspect_Delay (A_Id) is
                 when Always_Delay =>
!                   --  For Boolean aspects, do not delay if no expression
! 
!                   if A_Id in Boolean_Aspects | Library_Unit_Aspects then
!                      Delay_Required := Present (Expr);
!                   else
!                      Delay_Required := True;
!                   end if;
  
                 when Never_Delay =>
                    Delay_Required := False;
  
                 when Rep_Aspect =>
  
!                   --  For Boolean aspects, do not delay if no expression except
!                   --  for Full_Access_Only because we need to process it after
!                   --  Volatile and Atomic, which can be independently delayed.
  
!                   if A_Id in Boolean_Aspects
!                     and then A_Id /= Aspect_Full_Access_Only
!                     and then No (Expr)
!                   then
                       Delay_Required := False;
  
!                   --  For non-Boolean aspects, if the expression has the form
!                   --  of an integer literal, then do not delay, since we know
!                   --  the value cannot change. This optimization catches most
!                   --  rep clause cases.
  
                    elsif A_Id not in Boolean_Aspects
                      and then Present (Expr)
                      and then Nkind (Expr) = N_Integer_Literal
                    then
                       Delay_Required := False;
  
+                   --  For Alignment and various Size aspects, do not delay for
+                   --  an attribute reference whose prefix is Standard, for
+                   --  example Standard'Maximum_Alignment or Standard'Word_Size.
+ 
+                   elsif A_Id in Aspect_Alignment
+                               | Aspect_Component_Size
+                               | Aspect_Object_Size
+                               | Aspect_Size
+                               | Aspect_Value_Size
+                     and then Present (Expr)
+                     and then Nkind (Expr) = N_Attribute_Reference
+                     and then Nkind (Prefix (Expr)) = N_Identifier
+                     and then Chars (Prefix (Expr)) = Name_Standard
+                   then
+                      Delay_Required := False;
+ 
                    --  All other cases are delayed
  
                    else
*************** package body Sem_Ch13 is
*** 2199,2204 ****
--- 2969,2997 ----
                    end if;
              end case;
  
+             if Delay_Required
+ 
+                and then A_Id = Aspect_Stable_Properties
+                --  ??? It seems like we should do this for all aspects, not
+                --  just Stable_Properties, but that causes as-yet-undiagnosed
+                --  regressions.
+ 
+             then
+                Set_Has_Delayed_Aspects (E);
+                Set_Is_Delayed_Aspect (Aspect);
+             end if;
+ 
+             --  Check 13.1(9.2/5): A representation aspect of a subtype or type
+             --  shall not be specified (whether by a representation item or an
+             --  aspect_specification) before the type is completely defined
+             --  (see 3.11.1).
+ 
+             if Is_Representation_Aspect (A_Id)
+               and then Rep_Item_Too_Early (E, N)
+             then
+                goto Continue;
+             end if;
+ 
              --  Processing based on specific aspect
  
              case A_Id is
*************** package body Sem_Ch13 is
*** 2227,2232 ****
--- 3020,3026 ----
                    | Aspect_Machine_Radix
                    | Aspect_Object_Size
                    | Aspect_Output
+                   | Aspect_Put_Image
                    | Aspect_Read
                    | Aspect_Scalar_Storage_Order
                    | Aspect_Simple_Storage_Pool
*************** package body Sem_Ch13 is
*** 2240,2248 ****
                 =>
                    --  Indexing aspects apply only to tagged type
  
!                   if (A_Id = Aspect_Constant_Indexing
!                         or else
!                       A_Id = Aspect_Variable_Indexing)
                      and then not (Is_Type (E)
                                     and then Is_Tagged_Type (E))
                    then
--- 3034,3041 ----
                 =>
                    --  Indexing aspects apply only to tagged type
  
!                   if A_Id in Aspect_Constant_Indexing
!                            | Aspect_Variable_Indexing
                      and then not (Is_Type (E)
                                     and then Is_Tagged_Type (E))
                    then
*************** package body Sem_Ch13 is
*** 2269,2278 ****
                    --  illegal specification of this aspect for a subtype now,
                    --  to prevent malformed rep_item chains.
  
!                   if A_Id = Aspect_Input  or else
!                      A_Id = Aspect_Output or else
!                      A_Id = Aspect_Read   or else
!                      A_Id = Aspect_Write
                    then
                       if not Is_First_Subtype (E) then
                          Error_Msg_N
--- 3062,3071 ----
                    --  illegal specification of this aspect for a subtype now,
                    --  to prevent malformed rep_item chains.
  
!                   if A_Id in Aspect_Input
!                            | Aspect_Output
!                            | Aspect_Read
!                            | Aspect_Write
                    then
                       if not Is_First_Subtype (E) then
                          Error_Msg_N
*************** package body Sem_Ch13 is
*** 2294,2319 ****
                    --  Construct the attribute_definition_clause. The expression
                    --  in the aspect specification is simply shared with the
                    --  constructed attribute, because it will be fully analyzed
!                   --  when the attribute is processed. However, in ASIS mode
!                   --  the aspect expression itself is preanalyzed and resolved
!                   --  to catch visibility errors that are otherwise caught
!                   --  later, and we create a separate copy of the expression
!                   --  to prevent analysis of a malformed tree (e.g. a function
!                   --  call with parameter associations).
  
!                   if ASIS_Mode then
!                      Aitem :=
!                        Make_Attribute_Definition_Clause (Loc,
!                          Name       => Ent,
!                          Chars      => Chars (Id),
!                          Expression => New_Copy_Tree (Expr));
!                   else
!                      Aitem :=
!                        Make_Attribute_Definition_Clause (Loc,
!                          Name       => Ent,
!                          Chars      => Chars (Id),
!                          Expression => Relocate_Node (Expr));
!                   end if;
  
                    --  If the address is specified, then we treat the entity as
                    --  referenced, to avoid spurious warnings. This is analogous
--- 3087,3099 ----
                    --  Construct the attribute_definition_clause. The expression
                    --  in the aspect specification is simply shared with the
                    --  constructed attribute, because it will be fully analyzed
!                   --  when the attribute is processed.
  
!                   Aitem :=
!                     Make_Attribute_Definition_Clause (Loc,
!                       Name       => Ent,
!                       Chars      => Nam,
!                       Expression => Relocate_Node (Expr));
  
                    --  If the address is specified, then we treat the entity as
                    --  referenced, to avoid spurious warnings. This is analogous
*************** package body Sem_Ch13 is
*** 2332,2350 ****
                 --  referring to the entity, and the second argument is the
                 --  aspect definition expression.
  
!                --  Linker_Section/Suppress/Unsuppress
  
!                when Aspect_Linker_Section
!                   | Aspect_Suppress
!                   | Aspect_Unsuppress
!                =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => New_Occurrence_Of (E, Loc)),
                         Make_Pragma_Argument_Association (Sloc (Expr),
                           Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Chars (Id));
  
                    --  Linker_Section does not need delaying, as its argument
                    --  must be a static string. Furthermore, if applied to
--- 3112,3127 ----
                 --  referring to the entity, and the second argument is the
                 --  aspect definition expression.
  
!                --  Linker_Section
  
!                when Aspect_Linker_Section =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => New_Occurrence_Of (E, Loc)),
                         Make_Pragma_Argument_Association (Sloc (Expr),
                           Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Linker_Section);
  
                    --  Linker_Section does not need delaying, as its argument
                    --  must be a static string. Furthermore, if applied to
*************** package body Sem_Ch13 is
*** 2353,2360 ****
                    --  code. (This is already done for types with implicit
                    --  initialization, such as protected types.)
  
!                   if A_Id = Aspect_Linker_Section
!                     and then Nkind (N) = N_Object_Declaration
                      and then Has_Init_Expression (N)
                    then
                       Delay_Required := False;
--- 3130,3136 ----
                    --  code. (This is already done for types with implicit
                    --  initialization, such as protected types.)
  
!                   if Nkind (N) = N_Object_Declaration
                      and then Has_Init_Expression (N)
                    then
                       Delay_Required := False;
*************** package body Sem_Ch13 is
*** 2365,2371 ****
                 --  Corresponds to pragma Implemented, construct the pragma
  
                 when Aspect_Synchronization =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => New_Occurrence_Of (E, Loc)),
--- 3141,3147 ----
                 --  Corresponds to pragma Implemented, construct the pragma
  
                 when Aspect_Synchronization =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => New_Occurrence_Of (E, Loc)),
*************** package body Sem_Ch13 is
*** 2376,2382 ****
                 --  Attach_Handler
  
                 when Aspect_Attach_Handler =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Sloc (Ent),
                           Expression => Ent),
--- 3152,3158 ----
                 --  Attach_Handler
  
                 when Aspect_Attach_Handler =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Sloc (Ent),
                           Expression => Ent),
*************** package body Sem_Ch13 is
*** 2418,2424 ****
                    --  flags recording whether it is static/dynamic). We also
                    --  set flags recording this in the type itself.
  
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Sloc (Ent),
                           Expression => Ent),
--- 3194,3200 ----
                    --  flags recording whether it is static/dynamic). We also
                    --  set flags recording this in the type itself.
  
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Sloc (Ent),
                           Expression => Ent),
*************** package body Sem_Ch13 is
*** 2460,2465 ****
--- 3236,3256 ----
  
                       Set_Has_Delayed_Aspects (Full_View (E));
                       Ensure_Freeze_Node (Full_View (E));
+ 
+                      --  If there is an Underlying_Full_View, also create a
+                      --  freeze node for that one.
+ 
+                      if Is_Private_Type (Full_View (E)) then
+                         declare
+                            U_Full : constant Entity_Id :=
+                              Underlying_Full_View (Full_View (E));
+                         begin
+                            if Present (U_Full) then
+                               Set_Has_Delayed_Aspects (U_Full);
+                               Ensure_Freeze_Node (U_Full);
+                            end if;
+                         end;
+                      end if;
                    end if;
  
                 --  Predicate_Failure
*************** package body Sem_Ch13 is
*** 2478,2488 ****
                       Error_Msg_N
                         ("predicate cannot apply to incomplete view", Aspect);
                       goto Continue;
                    end if;
  
                    --  Construct the pragma
  
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Sloc (Ent),
                           Expression => Ent),
--- 3269,3285 ----
                       Error_Msg_N
                         ("predicate cannot apply to incomplete view", Aspect);
                       goto Continue;
+ 
+                   elsif not Has_Predicates (E) then
+                      Error_Msg_N
+                        ("Predicate_Failure requires previous predicate" &
+                         " specification", Aspect);
+                      goto Continue;
                    end if;
  
                    --  Construct the pragma
  
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Sloc (Ent),
                           Expression => Ent),
*************** package body Sem_Ch13 is
*** 2490,2507 ****
                           Expression => Relocate_Node (Expr))),
                       Pragma_Name => Name_Predicate_Failure);
  
-                   Set_Has_Predicates (E);
- 
-                   --  If the type is private, indicate that its completion
-                   --  has a freeze node, because that is the one that will
-                   --  be visible at freeze time.
- 
-                   if Is_Private_Type (E) and then Present (Full_View (E)) then
-                      Set_Has_Predicates (Full_View (E));
-                      Set_Has_Delayed_Aspects (Full_View (E));
-                      Ensure_Freeze_Node (Full_View (E));
-                   end if;
- 
                 --  Case 2b: Aspects corresponding to pragmas with two
                 --  arguments, where the second argument is a local name
                 --  referring to the entity, and the first argument is the
--- 3287,3292 ----
*************** package body Sem_Ch13 is
*** 2540,2547 ****
                    | Aspect_Interrupt_Priority
                    | Aspect_Priority
                 =>
!                   if Nkind_In (N, N_Subprogram_Body,
!                                   N_Subprogram_Declaration)
                    then
                       --  Analyze the aspect expression
  
--- 3325,3331 ----
                    | Aspect_Interrupt_Priority
                    | Aspect_Priority
                 =>
!                   if Nkind (N) in N_Subprogram_Body | N_Subprogram_Declaration
                    then
                       --  Analyze the aspect expression
  
*************** package body Sem_Ch13 is
*** 2593,2599 ****
  
                          else
                             Error_Msg_N
!                              ("main subprogram CPU is out of range", Expr);
                          end if;
  
                       --  For the Priority aspect
--- 3377,3383 ----
  
                          else
                             Error_Msg_N
!                              ("main subprogram 'C'P'U is out of range", Expr);
                          end if;
  
                       --  For the Priority aspect
*************** package body Sem_Ch13 is
*** 2626,2640 ****
                       --  System.Tasking, but this package does not trigger the
                       --  required initialization of the run-time library.
  
!                      declare
!                         Discard : Entity_Id;
!                      begin
!                         if Restricted_Profile then
!                            Discard := RTE (RE_Activate_Restricted_Tasks);
!                         else
!                            Discard := RTE (RE_Activate_Tasks);
!                         end if;
!                      end;
  
                       --  Handling for these aspects in subprograms is complete
  
--- 3410,3420 ----
                       --  System.Tasking, but this package does not trigger the
                       --  required initialization of the run-time library.
  
!                      if Restricted_Profile then
!                         Discard_Node (RTE (RE_Activate_Restricted_Tasks));
!                      else
!                         Discard_Node (RTE (RE_Activate_Tasks));
!                      end if;
  
                       --  Handling for these aspects in subprograms is complete
  
*************** package body Sem_Ch13 is
*** 2647,2666 ****
                       Aitem :=
                         Make_Attribute_Definition_Clause (Loc,
                           Name       => Ent,
!                          Chars      => Chars (Id),
                           Expression => Relocate_Node (Expr));
                    end if;
  
                 --  Warnings
  
                 when Aspect_Warnings =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Sloc (Expr),
                           Expression => Relocate_Node (Expr)),
                         Make_Pragma_Argument_Association (Loc,
                           Expression => New_Occurrence_Of (E, Loc))),
!                      Pragma_Name                  => Chars (Id));
  
                    Decorate (Aspect, Aitem);
                    Insert_Pragma (Aitem);
--- 3427,3461 ----
                       Aitem :=
                         Make_Attribute_Definition_Clause (Loc,
                           Name       => Ent,
!                          Chars      => Nam,
                           Expression => Relocate_Node (Expr));
                    end if;
  
+                --  Suppress/Unsuppress
+ 
+                when Aspect_Suppress
+                   | Aspect_Unsuppress
+                =>
+                   Aitem := Make_Aitem_Pragma
+                     (Pragma_Argument_Associations => New_List (
+                        Make_Pragma_Argument_Association (Loc,
+                          Expression => Relocate_Node (Expr)),
+                        Make_Pragma_Argument_Association (Sloc (Expr),
+                          Expression => New_Occurrence_Of (E, Loc))),
+                      Pragma_Name                  => Nam);
+ 
+                   Delay_Required := False;
+ 
                 --  Warnings
  
                 when Aspect_Warnings =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Sloc (Expr),
                           Expression => Relocate_Node (Expr)),
                         Make_Pragma_Argument_Association (Loc,
                           Expression => New_Occurrence_Of (E, Loc))),
!                      Pragma_Name                  => Name_Warnings);
  
                    Decorate (Aspect, Aitem);
                    Insert_Pragma (Aitem);
*************** package body Sem_Ch13 is
*** 2682,2688 ****
                    --  an invariant must apply to a private type, or appear in
                    --  the private part of a spec and apply to a completion.
  
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Sloc (Ent),
                           Expression => Ent),
--- 3477,3483 ----
                    --  an invariant must apply to a private type, or appear in
                    --  the private part of a spec and apply to a completion.
  
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Sloc (Ent),
                           Expression => Ent),
*************** package body Sem_Ch13 is
*** 2731,2740 ****
                       Context := Instance_Spec (Context);
                    end if;
  
!                   if Nkind_In (Context, N_Generic_Package_Declaration,
!                                         N_Package_Declaration)
                    then
!                      Make_Aitem_Pragma
                         (Pragma_Argument_Associations => New_List (
                            Make_Pragma_Argument_Association (Loc,
                              Expression => Relocate_Node (Expr))),
--- 3526,3535 ----
                       Context := Instance_Spec (Context);
                    end if;
  
!                   if Nkind (Context) in N_Generic_Package_Declaration
!                                       | N_Package_Declaration
                    then
!                      Aitem := Make_Aitem_Pragma
                         (Pragma_Argument_Associations => New_List (
                            Make_Pragma_Argument_Association (Loc,
                              Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 2760,2766 ****
                 --  related object declaration.
  
                 when Aspect_Async_Readers =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3555,3561 ----
                 --  related object declaration.
  
                 when Aspect_Async_Readers =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 2775,2781 ****
                 --  related object declaration.
  
                 when Aspect_Async_Writers =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3570,3576 ----
                 --  related object declaration.
  
                 when Aspect_Async_Writers =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 2790,2796 ****
                 --  related object declaration.
  
                 when Aspect_Constant_After_Elaboration =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3585,3591 ----
                 --  related object declaration.
  
                 when Aspect_Constant_After_Elaboration =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 2809,2819 ****
                 --  wrapped inside of a procedure at the freeze point of the
                 --  private type's full view.
  
                 when Aspect_Default_Initial_Condition =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
                       Pragma_Name                  =>
                         Name_Default_Initial_Condition);
  
--- 3604,3620 ----
                 --  wrapped inside of a procedure at the freeze point of the
                 --  private type's full view.
  
+                --  A type entity argument is appended to facilitate inheriting
+                --  the aspect from parent types (see Build_DIC_Procedure_Body),
+                --  though that extra argument isn't documented for the pragma.
+ 
                 when Aspect_Default_Initial_Condition =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr)),
!                        Make_Pragma_Argument_Association (Sloc (Ent),
!                          Expression => Ent)),
                       Pragma_Name                  =>
                         Name_Default_Initial_Condition);
  
*************** package body Sem_Ch13 is
*** 2824,2830 ****
                 --  Default_Storage_Pool
  
                 when Aspect_Default_Storage_Pool =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3625,3631 ----
                 --  Default_Storage_Pool
  
                 when Aspect_Default_Storage_Pool =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 2845,2851 ****
                 --  Analyze_Depends_In_Decl_Part for details.
  
                 when Aspect_Depends =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3646,3652 ----
                 --  Analyze_Depends_In_Decl_Part for details.
  
                 when Aspect_Depends =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 2860,2866 ****
                 --  related object declaration.
  
                 when Aspect_Effective_Reads =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3661,3667 ----
                 --  related object declaration.
  
                 when Aspect_Effective_Reads =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 2875,2881 ****
                 --  related object declaration.
  
                 when Aspect_Effective_Writes =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3676,3682 ----
                 --  related object declaration.
  
                 when Aspect_Effective_Writes =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 2890,2896 ****
                 --  related subprogram.
  
                 when Aspect_Extensions_Visible =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3691,3697 ----
                 --  related subprogram.
  
                 when Aspect_Extensions_Visible =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 2906,2912 ****
                 --  a type declaration.
  
                 when Aspect_Ghost =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3707,3713 ----
                 --  a type declaration.
  
                 when Aspect_Ghost =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 2926,2932 ****
                 --  Analyze_Global_In_Decl_Part for details.
  
                 when Aspect_Global =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3727,3733 ----
                 --  Analyze_Global_In_Decl_Part for details.
  
                 when Aspect_Global =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 2958,2967 ****
                       Context := Instance_Spec (Context);
                    end if;
  
!                   if Nkind_In (Context, N_Generic_Package_Declaration,
!                                         N_Package_Declaration)
                    then
!                      Make_Aitem_Pragma
                         (Pragma_Argument_Associations => New_List (
                            Make_Pragma_Argument_Association (Loc,
                              Expression => Relocate_Node (Expr))),
--- 3759,3768 ----
                       Context := Instance_Spec (Context);
                    end if;
  
!                   if Nkind (Context) in N_Generic_Package_Declaration
!                                       | N_Package_Declaration
                    then
!                      Aitem := Make_Aitem_Pragma
                         (Pragma_Argument_Associations => New_List (
                            Make_Pragma_Argument_Association (Loc,
                              Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 3006,3015 ****
                       Context := Instance_Spec (Context);
                    end if;
  
!                   if Nkind_In (Context, N_Generic_Package_Declaration,
!                                         N_Package_Declaration)
                    then
!                      Make_Aitem_Pragma
                         (Pragma_Argument_Associations => New_List (
                            Make_Pragma_Argument_Association (Loc,
                              Expression => Relocate_Node (Expr))),
--- 3807,3816 ----
                       Context := Instance_Spec (Context);
                    end if;
  
!                   if Nkind (Context) in N_Generic_Package_Declaration
!                                       | N_Package_Declaration
                    then
!                      Aitem := Make_Aitem_Pragma
                         (Pragma_Argument_Associations => New_List (
                            Make_Pragma_Argument_Association (Loc,
                              Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 3035,3041 ****
                 --  Max_Entry_Queue_Depth
  
                 when Aspect_Max_Entry_Queue_Depth =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3836,3842 ----
                 --  Max_Entry_Queue_Depth
  
                 when Aspect_Max_Entry_Queue_Depth =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 3048,3054 ****
                 --  Max_Entry_Queue_Length
  
                 when Aspect_Max_Entry_Queue_Length =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3849,3855 ----
                 --  Max_Entry_Queue_Length
  
                 when Aspect_Max_Entry_Queue_Length =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 3061,3067 ****
                 --  Max_Queue_Length
  
                 when Aspect_Max_Queue_Length =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3862,3868 ----
                 --  Max_Queue_Length
  
                 when Aspect_Max_Queue_Length =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 3076,3082 ****
                 --  declaration.
  
                 when Aspect_No_Caching =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3877,3883 ----
                 --  declaration.
  
                 when Aspect_No_Caching =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 3100,3118 ****
                           Expression => Relocate_Node (Expr)));
                    end if;
  
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => Args,
!                      Pragma_Name                  => Chars (Id));
                 end;
  
                 --  Part_Of
  
                 when Aspect_Part_Of =>
!                   if Nkind_In (N, N_Object_Declaration,
!                                   N_Package_Instantiation)
                      or else Is_Single_Concurrent_Type_Declaration (N)
                    then
!                      Make_Aitem_Pragma
                         (Pragma_Argument_Associations => New_List (
                            Make_Pragma_Argument_Association (Loc,
                              Expression => Relocate_Node (Expr))),
--- 3901,3919 ----
                           Expression => Relocate_Node (Expr)));
                    end if;
  
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => Args,
!                      Pragma_Name                  => Name_Obsolescent);
                 end;
  
                 --  Part_Of
  
                 when Aspect_Part_Of =>
!                   if Nkind (N) in N_Object_Declaration
!                                 | N_Package_Instantiation
                      or else Is_Single_Concurrent_Type_Declaration (N)
                    then
!                      Aitem := Make_Aitem_Pragma
                         (Pragma_Argument_Associations => New_List (
                            Make_Pragma_Argument_Association (Loc,
                              Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 3133,3139 ****
                 --  SPARK_Mode
  
                 when Aspect_SPARK_Mode =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3934,3940 ----
                 --  SPARK_Mode
  
                 when Aspect_SPARK_Mode =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 3154,3160 ****
                 --  routine Analyze_Refined_Depends_In_Decl_Part.
  
                 when Aspect_Refined_Depends =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3955,3961 ----
                 --  routine Analyze_Refined_Depends_In_Decl_Part.
  
                 when Aspect_Refined_Depends =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 3175,3181 ****
                 --  routine Analyze_Refined_Global_In_Decl_Part.
  
                 when Aspect_Refined_Global =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3976,3982 ----
                 --  routine Analyze_Refined_Global_In_Decl_Part.
  
                 when Aspect_Refined_Global =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 3188,3194 ****
                 --  Refined_Post
  
                 when Aspect_Refined_Post =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 3989,3995 ----
                 --  Refined_Post
  
                 when Aspect_Refined_Post =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 3208,3214 ****
                    --  the pragma.
  
                    if Nkind (N) = N_Package_Body then
!                      Make_Aitem_Pragma
                         (Pragma_Argument_Associations => New_List (
                            Make_Pragma_Argument_Association (Loc,
                              Expression => Relocate_Node (Expr))),
--- 4009,4015 ----
                    --  the pragma.
  
                    if Nkind (N) = N_Package_Body then
!                      Aitem := Make_Aitem_Pragma
                         (Pragma_Argument_Associations => New_List (
                            Make_Pragma_Argument_Association (Loc,
                              Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 3229,3235 ****
                 --  Relative_Deadline
  
                 when Aspect_Relative_Deadline =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 4030,4036 ----
                 --  Relative_Deadline
  
                 when Aspect_Relative_Deadline =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 3264,3269 ****
--- 4065,4076 ----
                       end;
                    end if;
  
+                --  Relaxed_Initialization
+ 
+                when Aspect_Relaxed_Initialization =>
+                   Analyze_Aspect_Relaxed_Initialization;
+                   goto Continue;
+ 
                 --  Secondary_Stack_Size
  
                 --  Aspect Secondary_Stack_Size needs to be converted into a
*************** package body Sem_Ch13 is
*** 3272,3278 ****
                 --  attribute does not have visibility on the discriminant.
  
                 when Aspect_Secondary_Stack_Size =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 4079,4085 ----
                 --  attribute does not have visibility on the discriminant.
  
                 when Aspect_Secondary_Stack_Size =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 3290,3296 ****
                 --  related subprogram.
  
                 when Aspect_Volatile_Function =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
--- 4097,4103 ----
                 --  related subprogram.
  
                 when Aspect_Volatile_Function =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 3340,3346 ****
                          --  Must not be parenthesized
  
                          if Paren_Count (Expr) /= 0 then
!                            Error_Msg_F ("extra parentheses ignored", Expr);
                          end if;
  
                          --  List of arguments is list of aggregate expressions
--- 4147,4154 ----
                          --  Must not be parenthesized
  
                          if Paren_Count (Expr) /= 0 then
!                            Error_Msg -- CODEFIX
!                              ("redundant parentheses", First_Sloc (Expr));
                          end if;
  
                          --  List of arguments is list of aggregate expressions
*************** package body Sem_Ch13 is
*** 3370,3376 ****
                           Chars      => Name_Entity,
                           Expression => Ent));
  
!                      Make_Aitem_Pragma
                         (Pragma_Argument_Associations => Pargs,
                          Pragma_Name                  => Name_Annotate);
                    end;
--- 4178,4184 ----
                           Chars      => Name_Entity,
                           Expression => Ent));
  
!                      Aitem := Make_Aitem_Pragma
                         (Pragma_Argument_Associations => Pargs,
                          Pragma_Name                  => Name_Annotate);
                    end;
*************** package body Sem_Ch13 is
*** 3381,3406 ****
                 --  Case 3a: The aspects listed below don't correspond to
                 --  pragmas/attributes but do require delayed analysis.
  
!                --  Default_Value can only apply to a scalar type
  
!                when Aspect_Default_Value =>
!                   if not Is_Scalar_Type (E) then
                       Error_Msg_N
!                        ("aspect Default_Value must apply to a scalar type", N);
                    end if;
  
                    Aitem := Empty;
  
!                --  Default_Component_Value can only apply to an array type
!                --  with scalar components.
  
!                when Aspect_Default_Component_Value =>
!                   if not (Is_Array_Type (E)
!                            and then Is_Scalar_Type (Component_Type (E)))
!                   then
                       Error_Msg_N
!                        ("aspect Default_Component_Value can only apply to an "
!                         & "array of scalar components", N);
                    end if;
  
                    Aitem := Empty;
--- 4189,4251 ----
                 --  Case 3a: The aspects listed below don't correspond to
                 --  pragmas/attributes but do require delayed analysis.
  
!                when Aspect_Default_Value | Aspect_Default_Component_Value =>
!                   Error_Msg_Name_1 := Nam;
  
!                   if not Is_Type (E) then
!                      Error_Msg_N ("aspect% can only apply to a type", Id);
!                      goto Continue;
! 
!                   elsif not Is_First_Subtype (E) then
!                      Error_Msg_N ("aspect% cannot apply to subtype", Id);
!                      goto Continue;
! 
!                   elsif A_Id = Aspect_Default_Value
!                     and then not Is_Scalar_Type (E)
!                   then
                       Error_Msg_N
!                        ("aspect% can only be applied to scalar type", Id);
!                      goto Continue;
! 
!                   elsif A_Id = Aspect_Default_Component_Value then
!                      if not Is_Array_Type (E) then
!                         Error_Msg_N
!                           ("aspect% can only be applied to array type", Id);
!                         goto Continue;
! 
!                      elsif not Is_Scalar_Type (Component_Type (E)) then
!                         Error_Msg_N ("aspect% requires scalar components", Id);
!                         goto Continue;
!                      end if;
                    end if;
  
                    Aitem := Empty;
  
!                when Aspect_Aggregate =>
!                   Validate_Aspect_Aggregate (Expr);
!                   Record_Rep_Item (E, Aspect);
!                   goto Continue;
  
!                when Aspect_Stable_Properties =>
!                   Validate_Aspect_Stable_Properties
!                     (E, Expr, Class_Present => Class_Present (Aspect));
!                   Record_Rep_Item (E, Aspect);
!                   goto Continue;
! 
!                when Aspect_Integer_Literal
!                   | Aspect_Real_Literal
!                   | Aspect_String_Literal
!                =>
! 
!                   if not Is_First_Subtype (E) then
                       Error_Msg_N
!                        ("may only be specified for a first subtype", Aspect);
!                      goto Continue;
!                   end if;
! 
!                   if Ada_Version < Ada_2020 then
!                      Check_Restriction
!                        (No_Implementation_Aspect_Specifications, N);
                    end if;
  
                    Aitem := Empty;
*************** package body Sem_Ch13 is
*** 3432,3439 ****
  
                 --  Case 4: Aspects requiring special handling
  
!                --  Pre/Post/Test_Case/Contract_Cases whose corresponding
!                --  pragmas take care of the delay.
  
                 --  Pre/Post
  
--- 4277,4284 ----
  
                 --  Case 4: Aspects requiring special handling
  
!                --  Pre/Post/Test_Case/Contract_Cases/Subprogram_Variant whose
!                --  corresponding pragmas take care of the delay.
  
                 --  Pre/Post
  
*************** package body Sem_Ch13 is
*** 3448,3454 ****
                    Pname : Name_Id;
  
                 begin
!                   if A_Id = Aspect_Pre or else A_Id = Aspect_Precondition then
                       Pname := Name_Precondition;
                    else
                       Pname := Name_Postcondition;
--- 4293,4299 ----
                    Pname : Name_Id;
  
                 begin
!                   if A_Id in Aspect_Pre | Aspect_Precondition then
                       Pname := Name_Precondition;
                    else
                       Pname := Name_Postcondition;
*************** package body Sem_Ch13 is
*** 3464,3470 ****
  
                    if Class_Present (Aspect)
                      and then Is_Concurrent_Type (Current_Scope)
!                     and then Ekind_In (E, E_Entry, E_Function, E_Procedure)
                    then
                       Error_Msg_Name_1 := Original_Aspect_Pragma_Name (Aspect);
                       Error_Msg_N
--- 4309,4315 ----
  
                    if Class_Present (Aspect)
                      and then Is_Concurrent_Type (Current_Scope)
!                     and then Ekind (E) in E_Entry | E_Function | E_Procedure
                    then
                       Error_Msg_Name_1 := Original_Aspect_Pragma_Name (Aspect);
                       Error_Msg_N
*************** package body Sem_Ch13 is
*** 3488,3504 ****
                    --  We do not do this for Pre'Class, since we have to put
                    --  these conditions together in a complex OR expression.
  
!                   --  We do not do this in ASIS mode, as ASIS relies on the
!                   --  original node representing the complete expression, when
!                   --  retrieving it through the source aspect table. Also, we
!                   --  don't do this in GNATprove mode, because it brings no
!                   --  benefit for proof and causes annoynace for flow analysis,
                    --  which prefers to be as close to the original source code
                    --  as possible. Also we don't do this when analyzing generic
                    --  units since it causes spurious visibility errors in the
                    --  preanalysis of instantiations.
  
!                   if not (ASIS_Mode or GNATprove_Mode)
                      and then (Pname = Name_Postcondition
                                 or else not Class_Present (Aspect))
                      and then not Inside_A_Generic
--- 4333,4346 ----
                    --  We do not do this for Pre'Class, since we have to put
                    --  these conditions together in a complex OR expression.
  
!                   --  We don't do this in GNATprove mode, because it brings no
!                   --  benefit for proof and causes annoyance for flow analysis,
                    --  which prefers to be as close to the original source code
                    --  as possible. Also we don't do this when analyzing generic
                    --  units since it causes spurious visibility errors in the
                    --  preanalysis of instantiations.
  
!                   if not GNATprove_Mode
                      and then (Pname = Name_Postcondition
                                 or else not Class_Present (Aspect))
                      and then not Inside_A_Generic
*************** package body Sem_Ch13 is
*** 3521,3542 ****
                    --  because subsequent visibility analysis of the aspect
                    --  depends on this sharing. This should be cleaned up???
  
!                   --  If the context is generic or involves ASIS, we want
!                   --  to preserve the original tree, and simply share it
!                   --  between aspect and generated attribute. This parallels
!                   --  what is done in sem_prag.adb (see Get_Argument).
  
                    declare
                       New_Expr : Node_Id;
  
                    begin
!                      if ASIS_Mode or else Inside_A_Generic then
                          New_Expr := Expr;
                       else
                          New_Expr := Relocate_Node (Expr);
                       end if;
  
!                      Make_Aitem_Pragma
                         (Pragma_Argument_Associations => New_List (
                            Make_Pragma_Argument_Association (Eloc,
                              Chars      => Name_Check,
--- 4363,4384 ----
                    --  because subsequent visibility analysis of the aspect
                    --  depends on this sharing. This should be cleaned up???
  
!                   --  If the context is generic, we want to preserve the
!                   --  original tree, and simply share it between aspect and
!                   --  generated attribute. This parallels what is done in
!                   --  sem_prag.adb (see Get_Argument).
  
                    declare
                       New_Expr : Node_Id;
  
                    begin
!                      if Inside_A_Generic then
                          New_Expr := Expr;
                       else
                          New_Expr := Relocate_Node (Expr);
                       end if;
  
!                      Aitem := Make_Aitem_Pragma
                         (Pragma_Argument_Associations => New_List (
                            Make_Pragma_Argument_Association (Eloc,
                              Chars      => Name_Check,
*************** package body Sem_Ch13 is
*** 3577,3611 ****
                    Args      : List_Id;
                    Comp_Expr : Node_Id;
                    Comp_Assn : Node_Id;
-                   New_Expr  : Node_Id;
  
                 begin
                    Args := New_List;
  
                    if Nkind (Parent (N)) = N_Compilation_Unit then
                       Error_Msg_Name_1 := Nam;
!                      Error_Msg_N ("incorrect placement of aspect `%`", E);
                       goto Continue;
                    end if;
  
!                   if Nkind (Expr) /= N_Aggregate then
                       Error_Msg_Name_1 := Nam;
                       Error_Msg_NE
!                        ("wrong syntax for aspect `%` for &", Id, E);
                       goto Continue;
                    end if;
  
!                   --  Make pragma expressions refer to the original aspect
!                   --  expressions through the Original_Node link. This is used
!                   --  in semantic analysis for ASIS mode, so that the original
!                   --  expression also gets analyzed.
  
                    Comp_Expr := First (Expressions (Expr));
                    while Present (Comp_Expr) loop
-                      New_Expr := Relocate_Node (Comp_Expr);
                       Append_To (Args,
                         Make_Pragma_Argument_Association (Sloc (Comp_Expr),
!                          Expression => New_Expr));
                       Next (Comp_Expr);
                    end loop;
  
--- 4419,4460 ----
                    Args      : List_Id;
                    Comp_Expr : Node_Id;
                    Comp_Assn : Node_Id;
  
                 begin
                    Args := New_List;
  
                    if Nkind (Parent (N)) = N_Compilation_Unit then
                       Error_Msg_Name_1 := Nam;
!                      Error_Msg_N ("incorrect placement of aspect %", E);
                       goto Continue;
                    end if;
  
!                   if Nkind (Expr) /= N_Aggregate
!                     or else Null_Record_Present (Expr)
!                   then
                       Error_Msg_Name_1 := Nam;
                       Error_Msg_NE
!                        ("wrong syntax for aspect % for &", Id, E);
                       goto Continue;
                    end if;
  
!                   --  Check that the expression is a proper aggregate (no
!                   --  parentheses).
! 
!                   if Paren_Count (Expr) /= 0 then
!                      Error_Msg -- CODEFIX
!                        ("redundant parentheses", First_Sloc (Expr));
!                      goto Continue;
!                   end if;
! 
!                   --  Create the list of arguments for building the Test_Case
!                   --  pragma.
  
                    Comp_Expr := First (Expressions (Expr));
                    while Present (Comp_Expr) loop
                       Append_To (Args,
                         Make_Pragma_Argument_Association (Sloc (Comp_Expr),
!                          Expression => Relocate_Node (Comp_Expr)));
                       Next (Comp_Expr);
                    end loop;
  
*************** package body Sem_Ch13 is
*** 3617,3623 ****
                       then
                          Error_Msg_Name_1 := Nam;
                          Error_Msg_NE
!                           ("wrong syntax for aspect `%` for &", Id, E);
                          goto Continue;
                       end if;
  
--- 4466,4472 ----
                       then
                          Error_Msg_Name_1 := Nam;
                          Error_Msg_NE
!                           ("wrong syntax for aspect % for &", Id, E);
                          goto Continue;
                       end if;
  
*************** package body Sem_Ch13 is
*** 3631,3649 ****
  
                    --  Build the test-case pragma
  
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => Args,
!                      Pragma_Name                  => Nam);
                 end Test_Case;
  
                 --  Contract_Cases
  
                 when Aspect_Contract_Cases =>
!                   Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Nam);
  
                    Decorate (Aspect, Aitem);
                    Insert_Pragma (Aitem);
--- 4480,4511 ----
  
                    --  Build the test-case pragma
  
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => Args,
!                      Pragma_Name                  => Name_Test_Case);
                 end Test_Case;
  
                 --  Contract_Cases
  
                 when Aspect_Contract_Cases =>
!                   Aitem := Make_Aitem_Pragma
                      (Pragma_Argument_Associations => New_List (
                         Make_Pragma_Argument_Association (Loc,
                           Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Contract_Cases);
! 
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
! 
!                --  Subprogram_Variant
! 
!                when Aspect_Subprogram_Variant =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Subprogram_Variant);
  
                    Decorate (Aspect, Aitem);
                    Insert_Pragma (Aitem);
*************** package body Sem_Ch13 is
*** 3667,3680 ****
                       if Ekind (E) /= E_Protected_Type then
                          Error_Msg_Name_1 := Nam;
                          Error_Msg_N
!                           ("aspect % only applies to a protected object",
                             Aspect);
  
                       else
                          --  Set the Uses_Lock_Free flag to True if there is no
                          --  expression or if the expression is True. The
                          --  evaluation of this aspect should be delayed to the
!                         --  freeze point (why???)
  
                          if No (Expr)
                            or else Is_True (Static_Boolean (Expr))
--- 4529,4544 ----
                       if Ekind (E) /= E_Protected_Type then
                          Error_Msg_Name_1 := Nam;
                          Error_Msg_N
!                           ("aspect % only applies to a protected type " &
!                            "or object",
                             Aspect);
  
                       else
                          --  Set the Uses_Lock_Free flag to True if there is no
                          --  expression or if the expression is True. The
                          --  evaluation of this aspect should be delayed to the
!                         --  freeze point if we wanted to handle the corner case
!                         --  of "true" or "false" being redefined.
  
                          if No (Expr)
                            or else Is_True (Static_Boolean (Expr))
*************** package body Sem_Ch13 is
*** 3687,3693 ****
  
                       goto Continue;
  
!                   elsif A_Id = Aspect_Export or else A_Id = Aspect_Import then
                       Analyze_Aspect_Export_Import;
  
                    --  Disable_Controlled
--- 4551,4557 ----
  
                       goto Continue;
  
!                   elsif A_Id in Aspect_Export | Aspect_Import then
                       Analyze_Aspect_Export_Import;
  
                    --  Disable_Controlled
*************** package body Sem_Ch13 is
*** 3695,3700 ****
--- 4559,4598 ----
                    elsif A_Id = Aspect_Disable_Controlled then
                       Analyze_Aspect_Disable_Controlled;
                       goto Continue;
+ 
+                   --  Ada 202x (AI12-0129): Exclusive_Functions
+ 
+                   elsif A_Id = Aspect_Exclusive_Functions then
+                      if Ekind (E) /= E_Protected_Type then
+                         Error_Msg_Name_1 := Nam;
+                         Error_Msg_N
+                           ("aspect % only applies to a protected type " &
+                            "or object",
+                            Aspect);
+                      end if;
+ 
+                      goto Continue;
+ 
+                   --  Ada 202x (AI12-0363): Full_Access_Only
+ 
+                   elsif A_Id = Aspect_Full_Access_Only then
+                      if Ada_Version < Ada_2020 then
+                         Error_Msg_N
+                           ("aspect % is an Ada 202x feature", Aspect);
+                         Error_Msg_N ("\compile with -gnat2020", Aspect);
+                      end if;
+ 
+                   --  Ada 202x (AI12-0075): static expression functions
+ 
+                   elsif A_Id = Aspect_Static then
+                      Analyze_Aspect_Static;
+                      goto Continue;
+ 
+                   --  Ada 2020 (AI12-0279)
+ 
+                   elsif A_Id = Aspect_Yield then
+                      Analyze_Aspect_Yield;
+                      goto Continue;
                    end if;
  
                    --  Library unit aspects require special handling in the case
*************** package body Sem_Ch13 is
*** 3704,3711 ****
  
                    if A_Id in Library_Unit_Aspects
                      and then
!                       Nkind_In (N, N_Package_Declaration,
!                                    N_Generic_Package_Declaration)
                      and then Nkind (Parent (N)) /= N_Compilation_Unit
  
                      --  Aspect is legal on a local instantiation of a library-
--- 4602,4609 ----
  
                    if A_Id in Library_Unit_Aspects
                      and then
!                       Nkind (N) in N_Package_Declaration
!                                  | N_Generic_Package_Declaration
                      and then Nkind (Parent (N)) /= N_Compilation_Unit
  
                      --  Aspect is legal on a local instantiation of a library-
*************** package body Sem_Ch13 is
*** 3718,3743 ****
                       goto Continue;
                    end if;
  
!                   --  Cases where we do not delay, includes all cases where the
!                   --  expression is missing other than the above cases.
  
!                   if not Delay_Required or else No (Expr) then
  
                       --  Exclude aspects Export and Import because their pragma
                       --  syntax does not map directly to a Boolean aspect.
  
!                      if A_Id /= Aspect_Export
!                        and then A_Id /= Aspect_Import
!                      then
!                         Make_Aitem_Pragma
                            (Pragma_Argument_Associations => New_List (
                               Make_Pragma_Argument_Association (Sloc (Ent),
                                 Expression => Ent)),
!                            Pragma_Name                  => Chars (Id));
                       end if;
  
-                      Delay_Required := False;
- 
                    --  In general cases, the corresponding pragma/attribute
                    --  definition clause will be inserted later at the freezing
                    --  point, and we do not need to build it now.
--- 4616,4636 ----
                       goto Continue;
                    end if;
  
!                   --  Cases where we do not delay
  
!                   if not Delay_Required then
  
                       --  Exclude aspects Export and Import because their pragma
                       --  syntax does not map directly to a Boolean aspect.
  
!                      if A_Id not in Aspect_Export | Aspect_Import then
!                         Aitem := Make_Aitem_Pragma
                            (Pragma_Argument_Associations => New_List (
                               Make_Pragma_Argument_Association (Sloc (Ent),
                                 Expression => Ent)),
!                            Pragma_Name                  => Nam);
                       end if;
  
                    --  In general cases, the corresponding pragma/attribute
                    --  definition clause will be inserted later at the freezing
                    --  point, and we do not need to build it now.
*************** package body Sem_Ch13 is
*** 3780,3786 ****
                          --  Create a pragma and put it at the start of the task
                          --  definition for the task type declaration.
  
!                         Make_Aitem_Pragma
                            (Pragma_Argument_Associations => New_List (
                               Make_Pragma_Argument_Association (Loc,
                                 Expression => Relocate_Node (Expr))),
--- 4673,4679 ----
                          --  Create a pragma and put it at the start of the task
                          --  definition for the task type declaration.
  
!                         Aitem := Make_Aitem_Pragma
                            (Pragma_Argument_Associations => New_List (
                               Make_Pragma_Argument_Association (Loc,
                                 Expression => Relocate_Node (Expr))),
*************** package body Sem_Ch13 is
*** 3798,3804 ****
                       Aitem :=
                         Make_Attribute_Definition_Clause (Loc,
                           Name       => Ent,
!                          Chars      => Chars (Id),
                           Expression => Relocate_Node (Expr));
                    end if;
              end case;
--- 4691,4697 ----
                       Aitem :=
                         Make_Attribute_Definition_Clause (Loc,
                           Name       => Ent,
!                          Chars      => Name_Storage_Size,
                           Expression => Relocate_Node (Expr));
                    end if;
              end case;
*************** package body Sem_Ch13 is
*** 3841,3851 ****
  
                    if Is_Boolean_Aspect (Aspect) and then No (Aitem) then
                       if Is_True (Static_Boolean (Expr)) then
!                         Make_Aitem_Pragma
                            (Pragma_Argument_Associations => New_List (
                               Make_Pragma_Argument_Association (Sloc (Ent),
                                 Expression => Ent)),
!                            Pragma_Name                  => Chars (Id));
  
                          Set_From_Aspect_Specification (Aitem, True);
                          Set_Corresponding_Aspect (Aitem, Aspect);
--- 4734,4744 ----
  
                    if Is_Boolean_Aspect (Aspect) and then No (Aitem) then
                       if Is_True (Static_Boolean (Expr)) then
!                         Aitem := Make_Aitem_Pragma
                            (Pragma_Argument_Associations => New_List (
                               Make_Pragma_Argument_Association (Sloc (Ent),
                                 Expression => Ent)),
!                            Pragma_Name                  => Nam);
  
                          Set_From_Aspect_Specification (Aitem, True);
                          Set_Corresponding_Aspect (Aitem, Aspect);
*************** package body Sem_Ch13 is
*** 3914,3926 ****
                 --  as well, even though it appears on a first subtype. This is
                 --  mandated by the semantics of the aspect. Do not establish
                 --  the link when processing the base type itself as this leads
!                --  to a rep item circularity. Verify that we are dealing with
!                --  a scalar type to prevent cascaded errors.
  
!                if A_Id = Aspect_Default_Value
!                  and then Is_Scalar_Type (E)
!                  and then Base_Type (E) /= E
!                then
                    Set_Has_Delayed_Aspects (Base_Type (E));
                    Record_Rep_Item (Base_Type (E), Aspect);
                 end if;
--- 4807,4815 ----
                 --  as well, even though it appears on a first subtype. This is
                 --  mandated by the semantics of the aspect. Do not establish
                 --  the link when processing the base type itself as this leads
!                --  to a rep item circularity.
  
!                if A_Id = Aspect_Default_Value and then Base_Type (E) /= E then
                    Set_Has_Delayed_Aspects (Base_Type (E));
                    Record_Rep_Item (Base_Type (E), Aspect);
                 end if;
*************** package body Sem_Ch13 is
*** 3931,3937 ****
              --  When delay is not required and the context is a package or a
              --  subprogram body, insert the pragma in the body declarations.
  
!             elsif Nkind_In (N, N_Package_Body, N_Subprogram_Body) then
                 if No (Declarations (N)) then
                    Set_Declarations (N, New_List);
                 end if;
--- 4820,4826 ----
              --  When delay is not required and the context is a package or a
              --  subprogram body, insert the pragma in the body declarations.
  
!             elsif Nkind (N) in N_Package_Body | N_Subprogram_Body then
                 if No (Declarations (N)) then
                    Set_Declarations (N, New_List);
                 end if;
*************** package body Sem_Ch13 is
*** 3948,3956 ****
                 Insert_After (Ins_Node, Aitem);
                 Ins_Node := Aitem;
              end if;
           end Analyze_One_Aspect;
  
-       <<Continue>>
           Next (Aspect);
        end loop Aspect_Loop;
  
--- 4837,4875 ----
                 Insert_After (Ins_Node, Aitem);
                 Ins_Node := Aitem;
              end if;
+ 
+             <<Continue>>
+ 
+             --  If a nonoverridable aspect is explicitly specified for a
+             --  derived type, then check consistency with the parent type.
+ 
+             if A_Id in Nonoverridable_Aspect_Id
+               and then Nkind (N) = N_Full_Type_Declaration
+               and then Nkind (Type_Definition (N)) = N_Derived_Type_Definition
+               and then not In_Instance_Body
+             then
+                declare
+                   Parent_Type      : constant Entity_Id := Etype (E);
+                   Inherited_Aspect : constant Node_Id :=
+                     Find_Aspect (Parent_Type, A_Id);
+                begin
+                   if Present (Inherited_Aspect)
+                     and then not Is_Confirming
+                                    (A_Id, Inherited_Aspect, Aspect)
+                   then
+                      Error_Msg_Name_1 := Aspect_Names (A_Id);
+                      Error_Msg_Sloc := Sloc (Inherited_Aspect);
+ 
+                      Error_Msg
+                        ("overriding aspect specification for "
+                           & "nonoverridable aspect % does not confirm "
+                           & "aspect specification inherited from #",
+                         Sloc (Aspect));
+                   end if;
+                end;
+             end if;
           end Analyze_One_Aspect;
  
           Next (Aspect);
        end loop Aspect_Loop;
  
*************** package body Sem_Ch13 is
*** 4164,4169 ****
--- 5083,5090 ----
        --  Storage_Size for derived task types, but that is also clearly
        --  unintentional.
  
+       procedure Analyze_Put_Image_TSS_Definition;
+ 
        procedure Analyze_Stream_TSS_Definition (TSS_Nam : TSS_Name_Type);
        --  Common processing for 'Read, 'Write, 'Input and 'Output attribute
        --  definition clauses.
*************** package body Sem_Ch13 is
*** 4187,4192 ****
--- 5108,5259 ----
        --  Common legality check for the previous two
  
        -----------------------------------
+       -- Analyze_Put_Image_TSS_Definition --
+       -----------------------------------
+ 
+       procedure Analyze_Put_Image_TSS_Definition is
+          Subp : Entity_Id := Empty;
+          I    : Interp_Index;
+          It   : Interp;
+          Pnam : Entity_Id;
+ 
+          function Has_Good_Profile
+            (Subp   : Entity_Id;
+             Report : Boolean := False) return Boolean;
+          --  Return true if the entity is a subprogram with an appropriate
+          --  profile for the attribute being defined. If result is False and
+          --  Report is True, function emits appropriate error.
+ 
+          ----------------------
+          -- Has_Good_Profile --
+          ----------------------
+ 
+          function Has_Good_Profile
+            (Subp   : Entity_Id;
+             Report : Boolean := False) return Boolean
+          is
+             F              : Entity_Id;
+             Typ            : Entity_Id;
+ 
+          begin
+             if Ekind (Subp) /= E_Procedure then
+                return False;
+             end if;
+ 
+             F := First_Formal (Subp);
+ 
+             if No (F) or else Etype (F) /= Class_Wide_Type (RTE (RE_Sink)) then
+                return False;
+             end if;
+ 
+             Next_Formal (F);
+ 
+             if Parameter_Mode (F) /= E_In_Parameter then
+                return False;
+             end if;
+ 
+             Typ := Etype (F);
+ 
+             --  Verify that the prefix of the attribute and the local name for
+             --  the type of the formal match.
+ 
+             if Typ /= Ent then
+                return False;
+             end if;
+ 
+             if Present (Next_Formal (F)) then
+                return False;
+ 
+             elsif not Is_Scalar_Type (Typ)
+               and then not Is_First_Subtype (Typ)
+             then
+                if Report and not Is_First_Subtype (Typ) then
+                   Error_Msg_N
+                     ("subtype of formal in Put_Image operation must be a "
+                      & "first subtype", Parameter_Type (Parent (F)));
+                end if;
+ 
+                return False;
+ 
+             else
+                return True;
+             end if;
+          end Has_Good_Profile;
+ 
+       --  Start of processing for Analyze_Put_Image_TSS_Definition
+ 
+       begin
+          if not Is_Type (U_Ent) then
+             Error_Msg_N ("local name must be a subtype", Nam);
+             return;
+ 
+          elsif not Is_First_Subtype (U_Ent) then
+             Error_Msg_N ("local name must be a first subtype", Nam);
+             return;
+          end if;
+ 
+          Pnam := TSS (Base_Type (U_Ent), TSS_Put_Image);
+ 
+          --  If Pnam is present, it can be either inherited from an ancestor
+          --  type (in which case it is legal to redefine it for this type), or
+          --  be a previous definition of the attribute for the same type (in
+          --  which case it is illegal).
+ 
+          --  In the first case, it will have been analyzed already, and we can
+          --  check that its profile does not match the expected profile for the
+          --  Put_Image attribute of U_Ent. In the second case, either Pnam has
+          --  been analyzed (and has the expected profile), or it has not been
+          --  analyzed yet (case of a type that has not been frozen yet and for
+          --  which Put_Image has been set using Set_TSS).
+ 
+          if Present (Pnam)
+            and then (No (First_Entity (Pnam)) or else Has_Good_Profile (Pnam))
+          then
+             Error_Msg_Sloc := Sloc (Pnam);
+             Error_Msg_Name_1 := Attr;
+             Error_Msg_N ("% attribute already defined #", Nam);
+             return;
+          end if;
+ 
+          Analyze (Expr);
+ 
+          if Is_Entity_Name (Expr) then
+             if not Is_Overloaded (Expr) then
+                if Has_Good_Profile (Entity (Expr), Report => True) then
+                   Subp := Entity (Expr);
+                end if;
+ 
+             else
+                Get_First_Interp (Expr, I, It);
+                while Present (It.Nam) loop
+                   if Has_Good_Profile (It.Nam) then
+                      Subp := It.Nam;
+                      exit;
+                   end if;
+ 
+                   Get_Next_Interp (I, It);
+                end loop;
+             end if;
+          end if;
+ 
+          if Present (Subp) then
+             if Is_Abstract_Subprogram (Subp) then
+                Error_Msg_N ("Put_Image subprogram must not be abstract", Expr);
+                return;
+             end if;
+ 
+             Set_Entity (Expr, Subp);
+             Set_Etype (Expr, Etype (Subp));
+ 
+             New_Put_Image_Subprogram (N, U_Ent, Subp);
+ 
+          else
+             Error_Msg_Name_1 := Attr;
+             Error_Msg_N ("incorrect expression for% attribute", Expr);
+          end if;
+       end Analyze_Put_Image_TSS_Definition;
+ 
+       -----------------------------------
        -- Analyze_Stream_TSS_Definition --
        -----------------------------------
  
*************** package body Sem_Ch13 is
*** 4250,4282 ****
  
                 Typ := Etype (F);
  
-                --  If the attribute specification comes from an aspect
-                --  specification for a class-wide stream, the parameter must be
-                --  a class-wide type of the entity to which the aspect applies.
- 
-                if From_Aspect_Specification (N)
-                  and then Class_Present (Parent (N))
-                  and then Is_Class_Wide_Type (Typ)
-                then
-                   Typ := Etype (Typ);
-                end if;
- 
              else
                 Typ := Etype (Subp);
              end if;
  
              --  Verify that the prefix of the attribute and the local name for
!             --  the type of the formal match, or one is the class-wide of the
!             --  other, in the case of a class-wide stream operation.
  
!             if Base_Type (Typ) = Base_Type (Ent)
!               or else (Is_Class_Wide_Type (Typ)
!                         and then Typ = Class_Wide_Type (Base_Type (Ent)))
!               or else (Is_Class_Wide_Type (Ent)
!                         and then Ent = Class_Wide_Type (Base_Type (Typ)))
!             then
!                null;
!             else
                 return False;
              end if;
  
--- 5317,5330 ----
  
                 Typ := Etype (F);
  
              else
                 Typ := Etype (Subp);
              end if;
  
              --  Verify that the prefix of the attribute and the local name for
!             --  the type of the formal match.
  
!             if Base_Type (Typ) /= Base_Type (Ent) then
                 return False;
              end if;
  
*************** package body Sem_Ch13 is
*** 4389,4395 ****
  
           else
              Error_Msg_Name_1 := Attr;
!             Error_Msg_N ("incorrect expression for% attribute", Expr);
           end if;
        end Analyze_Stream_TSS_Definition;
  
--- 5437,5449 ----
  
           else
              Error_Msg_Name_1 := Attr;
! 
!             if Is_Class_Wide_Type (Base_Type (Ent)) then
!                Error_Msg_N
!                  ("incorrect expression for class-wide% attribute", Expr);
!             else
!                Error_Msg_N ("incorrect expression for% attribute", Expr);
!             end if;
           end if;
        end Analyze_Stream_TSS_Definition;
  
*************** package body Sem_Ch13 is
*** 4401,4408 ****
           Indexing_Found : Boolean := False;
  
           procedure Check_Inherited_Indexing;
!          --  For a derived type, check that no indexing aspect is specified
!          --  for the type if it is also inherited
  
           procedure Check_One_Function (Subp : Entity_Id);
           --  Check one possible interpretation. Sets Indexing_Found True if a
--- 5455,5465 ----
           Indexing_Found : Boolean := False;
  
           procedure Check_Inherited_Indexing;
!          --  For a derived type, check that for a derived type, a specification
!          --  of an indexing aspect can only be confirming, i.e. uses the same
!          --  name as in the parent type.
!          --  AI12-0160: Verify that an indexing cannot be specified for
!          --  a derived type unless it is specified for the parent.
  
           procedure Check_One_Function (Subp : Entity_Id);
           --  Check one possible interpretation. Sets Indexing_Found True if a
*************** package body Sem_Ch13 is
*** 4417,4431 ****
           ------------------------------
  
           procedure Check_Inherited_Indexing is
!             Inherited : Node_Id;
  
           begin
              if Attr = Name_Constant_Indexing then
                 Inherited :=
                   Find_Aspect (Etype (Ent), Aspect_Constant_Indexing);
              else pragma Assert (Attr = Name_Variable_Indexing);
                 Inherited :=
                    Find_Aspect (Etype (Ent), Aspect_Variable_Indexing);
              end if;
  
              if Present (Inherited) then
--- 5474,5494 ----
           ------------------------------
  
           procedure Check_Inherited_Indexing is
!             Inherited      : Node_Id;
!             Other_Indexing : Node_Id;
  
           begin
              if Attr = Name_Constant_Indexing then
                 Inherited :=
                   Find_Aspect (Etype (Ent), Aspect_Constant_Indexing);
+                Other_Indexing :=
+                  Find_Aspect (Etype (Ent), Aspect_Variable_Indexing);
+ 
              else pragma Assert (Attr = Name_Variable_Indexing);
                 Inherited :=
                    Find_Aspect (Etype (Ent), Aspect_Variable_Indexing);
+                Other_Indexing :=
+                  Find_Aspect (Etype (Ent), Aspect_Constant_Indexing);
              end if;
  
              if Present (Inherited) then
*************** package body Sem_Ch13 is
*** 4438,4443 ****
--- 5501,5516 ----
                 elsif Aspect_Rep_Item (Inherited) = N then
                    null;
  
+                --  Check if this is a confirming specification. The name
+                --  may be overloaded between the parent operation and the
+                --  inherited one, so we check that the Chars fields match.
+ 
+                elsif Is_Entity_Name (Expression (Inherited))
+                  and then Chars (Entity (Expression (Inherited))) =
+                     Chars (Entity (Expression (N)))
+                then
+                   Indexing_Found := True;
+ 
                 --  Indicate the operation that must be overridden, rather than
                 --  redefining the indexing aspect.
  
*************** package body Sem_Ch13 is
*** 4448,4453 ****
--- 5521,5535 ----
                      ("!override & instead",
                       N, Entity (Expression (Inherited)));
                 end if;
+ 
+             --  If not inherited and the parent has another indexing function
+             --  this is illegal, because it leads to inconsistent results in
+             --  class-wide calls.
+ 
+             elsif Present (Other_Indexing) then
+                Error_Msg_N
+                  ("cannot specify indexing operation on derived type"
+                    & " if not specified for parent", N);
              end if;
           end Check_Inherited_Indexing;
  
*************** package body Sem_Ch13 is
*** 4470,4476 ****
                    --  Indexing function can't be declared elsewhere
  
                    Illegal_Indexing
!                     ("indexing function must be declared in scope of type&");
                 end if;
  
                 return;
--- 5552,5563 ----
                    --  Indexing function can't be declared elsewhere
  
                    Illegal_Indexing
!                     ("indexing function must be declared"
!                       & " in scope of type&");
!                end if;
! 
!                if Is_Derived_Type (Ent) then
!                   Check_Inherited_Indexing;
                 end if;
  
                 return;
*************** package body Sem_Ch13 is
*** 4561,4569 ****
                 end if;
  
              else
!                if  Has_Implicit_Dereference (Ret_Type)
                   and then not
!                    Is_Access_Constant (Etype (First_Discriminant (Ret_Type)))
                 then
                    Illegal_Indexing
                      ("constant indexing must return an access to constant");
--- 5648,5657 ----
                 end if;
  
              else
!                if Has_Implicit_Dereference (Ret_Type)
                   and then not
!                    Is_Access_Constant
!                      (Etype (Get_Reference_Discriminant (Ret_Type)))
                 then
                    Illegal_Indexing
                      ("constant indexing must return an access to constant");
*************** package body Sem_Ch13 is
*** 4578,4584 ****
                 end if;
              end if;
  
!             --  All checks succeeded.
  
              Indexing_Found := True;
           end Check_One_Function;
--- 5666,5672 ----
                 end if;
              end if;
  
!             --  All checks succeeded
  
              Indexing_Found := True;
           end Check_One_Function;
*************** package body Sem_Ch13 is
*** 4672,4678 ****
  
              --  False if any subsequent formal has no default expression
  
!             Formal := Next_Formal (Formal);
              while Present (Formal) loop
                 if No (Expression (Parent (Formal))) then
                    return False;
--- 5760,5766 ----
  
              --  False if any subsequent formal has no default expression
  
!             Next_Formal (Formal);
              while Present (Formal) loop
                 if No (Expression (Parent (Formal))) then
                    return False;
*************** package body Sem_Ch13 is
*** 4853,4858 ****
--- 5941,5953 ----
  
        Check_Restriction_No_Use_Of_Attribute (N);
  
+       if Get_Aspect_Id (Chars (N)) /= No_Aspect then
+          --  6.1/3 No_Specification_of_Aspect: Identifies an aspect for which
+          --    no aspect_specification, attribute_definition_clause, or pragma
+          --    is given.
+          Check_Restriction_No_Specification_Of_Aspect (N);
+       end if;
+ 
        --  Ignore some selected attributes in CodePeer mode since they are not
        --  relevant in this context.
  
*************** package body Sem_Ch13 is
*** 4906,4911 ****
--- 6001,6007 ----
              when Attribute_External_Tag
                 | Attribute_Input
                 | Attribute_Output
+                | Attribute_Put_Image
                 | Attribute_Read
                 | Attribute_Simple_Storage_Pool
                 | Attribute_Storage_Pool
*************** package body Sem_Ch13 is
*** 4936,4955 ****
           return;
        end if;
  
!       --  Rep clause applies to full view of incomplete type or private type if
!       --  we have one (if not, this is a premature use of the type). However,
!       --  certain semantic checks need to be done on the specified entity (i.e.
!       --  the private view), so we save it in Ent.
  
        if Is_Private_Type (Ent)
          and then Is_Derived_Type (Ent)
          and then not Is_Tagged_Type (Ent)
          and then No (Full_View (Ent))
        then
-          --  If this is a private type whose completion is a derivation from
-          --  another private type, there is no full view, and the attribute
-          --  belongs to the type itself, not its underlying parent.
- 
           U_Ent := Ent;
  
        elsif Ekind (Ent) = E_Incomplete_Type then
--- 6032,6048 ----
           return;
        end if;
  
!       --  Rep clause applies to (underlying) full view of private or incomplete
!       --  type if we have one (if not, this is a premature use of the type).
!       --  However, some semantic checks need to be done on the specified entity
!       --  i.e. the private view, so we save it in Ent.
  
        if Is_Private_Type (Ent)
          and then Is_Derived_Type (Ent)
          and then not Is_Tagged_Type (Ent)
          and then No (Full_View (Ent))
+         and then No (Underlying_Full_View (Ent))
        then
           U_Ent := Ent;
  
        elsif Ekind (Ent) = E_Incomplete_Type then
*************** package body Sem_Ch13 is
*** 5085,5091 ****
              if Ignore_Rep_Clauses then
                 Set_Address_Taken (U_Ent);
  
!                if Ekind_In (U_Ent, E_Variable, E_Constant) then
                    Record_Rep_Item (U_Ent, N);
                 end if;
  
--- 6178,6184 ----
              if Ignore_Rep_Clauses then
                 Set_Address_Taken (U_Ent);
  
!                if Ekind (U_Ent) in E_Variable | E_Constant then
                    Record_Rep_Item (U_Ent, N);
                 end if;
  
*************** package body Sem_Ch13 is
*** 5164,5170 ****
  
              --  Case of address clause for an object
  
!             elsif Ekind_In (U_Ent, E_Constant, E_Variable) then
                 declare
                    Expr  : constant Node_Id := Expression (N);
                    O_Ent : Entity_Id;
--- 6257,6263 ----
  
              --  Case of address clause for an object
  
!             elsif Ekind (U_Ent) in E_Constant | E_Variable then
                 declare
                    Expr  : constant Node_Id := Expression (N);
                    O_Ent : Entity_Id;
*************** package body Sem_Ch13 is
*** 5226,5235 ****
                            (N, U_Ent, No_Uint, O_Ent, Off);
                       end if;
  
!                      --  If the overlay changes the storage order, mark the
!                      --  entity as being volatile to block any optimization
!                      --  for it since the construct is not really supported
!                      --  by the back end.
  
                       if (Is_Record_Type (Etype (U_Ent))
                            or else Is_Array_Type (Etype (U_Ent)))
--- 6319,6328 ----
                            (N, U_Ent, No_Uint, O_Ent, Off);
                       end if;
  
!                      --  If the overlay changes the storage order, warn since
!                      --  the construct is not really supported by the back end.
!                      --  Also mark the entity as being volatile to block the
!                      --  optimizer, even if there is no warranty on the result.
  
                       if (Is_Record_Type (Etype (U_Ent))
                            or else Is_Array_Type (Etype (U_Ent)))
*************** package body Sem_Ch13 is
*** 5238,5243 ****
--- 6331,6338 ----
                         and then Reverse_Storage_Order (Etype (U_Ent)) /=
                                  Reverse_Storage_Order (Etype (O_Ent))
                       then
+                         Error_Msg_N
+                           ("??overlay changes scalar storage order", Expr);
                          Set_Treat_As_Volatile (U_Ent);
                       end if;
  
*************** package body Sem_Ch13 is
*** 5273,5281 ****
--- 6368,6380 ----
                    --  Issue an unconditional warning for a constant overlaying
                    --  a variable. For the reverse case, we will issue it only
                    --  if the variable is modified.
+                   --  Within a generic unit an In_Parameter is a constant.
+                   --  It can be instantiated with a variable, in which case
+                   --  there will be a warning on the instance.
  
                    if Ekind (U_Ent) = E_Constant
                      and then Present (O_Ent)
+                     and then Ekind (O_Ent) /= E_Generic_In_Parameter
                      and then not Overlays_Constant (U_Ent)
                      and then Address_Clause_Overlay_Warnings
                    then
*************** package body Sem_Ch13 is
*** 5375,5388 ****
                 Set_Has_Alignment_Clause (U_Ent);
  
                 --  Tagged type case, check for attempt to set alignment to a
!                --  value greater than Max_Align, and reset if so. This error
!                --  is suppressed in ASIS mode to allow for different ASIS
!                --  back ends or ASIS-based tools to query the illegal clause.
  
!                if Is_Tagged_Type (U_Ent)
!                  and then Align > Max_Align
!                  and then not ASIS_Mode
!                then
                    Error_Msg_N
                      ("alignment for & set to Maximum_Aligment??", Nam);
                    Set_Alignment (U_Ent, Max_Align);
--- 6474,6482 ----
                 Set_Has_Alignment_Clause (U_Ent);
  
                 --  Tagged type case, check for attempt to set alignment to a
!                --  value greater than Max_Align, and reset if so.
  
!                if Is_Tagged_Type (U_Ent) and then Align > Max_Align then
                    Error_Msg_N
                      ("alignment for & set to Maximum_Aligment??", Nam);
                    Set_Alignment (U_Ent, Max_Align);
*************** package body Sem_Ch13 is
*** 5530,5566 ****
           ---------
  
           when Attribute_CPU =>
  
!             --  CPU attribute definition clause not allowed except from aspect
!             --  specification.
  
!             if From_Aspect_Specification (N) then
!                if not Is_Task_Type (U_Ent) then
!                   Error_Msg_N ("CPU can only be defined for task", Nam);
  
!                elsif Duplicate_Clause then
!                   null;
  
!                else
!                   --  The expression must be analyzed in the special manner
!                   --  described in "Handling of Default and Per-Object
!                   --  Expressions" in sem.ads.
  
!                   --  The visibility to the components must be established
!                   --  and restored before and after analysis.
  
!                   Push_Type (U_Ent);
!                   Preanalyze_Spec_Expression (Expr, RTE (RE_CPU_Range));
!                   Pop_Type (U_Ent);
  
!                   if not Is_OK_Static_Expression (Expr) then
!                      Check_Restriction (Static_Priorities, Expr);
                    end if;
                 end if;
- 
-             else
-                Error_Msg_N
-                  ("attribute& cannot be set with definition clause", N);
              end if;
  
           ----------------------
--- 6624,6671 ----
           ---------
  
           when Attribute_CPU =>
+             pragma Assert (From_Aspect_Specification (N));
+             --  The parser forbids this clause in source code, so it must have
+             --  come from an aspect specification.
  
!             if not Is_Task_Type (U_Ent) then
!                Error_Msg_N ("'C'P'U can only be defined for task", Nam);
  
!             elsif Duplicate_Clause then
!                null;
  
!             else
!                --  The expression must be analyzed in the special manner
!                --  described in "Handling of Default and Per-Object
!                --  Expressions" in sem.ads.
  
!                --  The visibility to the components must be established
!                --  and restored before and after analysis.
  
!                Push_Type (U_Ent);
!                Preanalyze_Spec_Expression (Expr, RTE (RE_CPU_Range));
!                Pop_Type (U_Ent);
  
!                --  AI12-0117-1, "Restriction No_Tasks_Unassigned_To_CPU":
!                --  If the expression is static, and its value is
!                --  System.Multiprocessors.Not_A_Specific_CPU (i.e. zero) then
!                --  that's a violation of No_Tasks_Unassigned_To_CPU. It might
!                --  seem better to refer to Not_A_Specific_CPU here, but that
!                --  involves a lot of horsing around with Rtsfind, and this
!                --  value is not going to change, so it's better to hardwire
!                --  Uint_0.
!                --
!                --  AI12-0055-1, "All properties of a usage profile are defined
!                --  by pragmas": If the expression is nonstatic, that's a
!                --  violation of No_Dynamic_CPU_Assignment.
  
!                if Is_OK_Static_Expression (Expr) then
!                   if Expr_Value (Expr) = Uint_0 then
!                      Check_Restriction (No_Tasks_Unassigned_To_CPU, Expr);
                    end if;
+                else
+                   Check_Restriction (No_Dynamic_CPU_Assignment, Expr);
                 end if;
              end if;
  
           ----------------------
*************** package body Sem_Ch13 is
*** 5615,5621 ****
  
              else
                 Error_Msg_NE
!                  ("Default Iterator must be a primitive of&", Func, U_Ent);
              end if;
           end Default_Iterator;
  
--- 6720,6726 ----
  
              else
                 Error_Msg_NE
!                  ("Default_Iterator must be a primitive of&", Func, U_Ent);
              end if;
           end Default_Iterator;
  
*************** package body Sem_Ch13 is
*** 5624,5659 ****
           ------------------------
  
           when Attribute_Dispatching_Domain =>
  
!             --  Dispatching_Domain attribute definition clause not allowed
!             --  except from aspect specification.
! 
!             if From_Aspect_Specification (N) then
!                if not Is_Task_Type (U_Ent) then
!                   Error_Msg_N
!                     ("Dispatching_Domain can only be defined for task", Nam);
! 
!                elsif Duplicate_Clause then
!                   null;
  
!                else
!                   --  The expression must be analyzed in the special manner
!                   --  described in "Handling of Default and Per-Object
!                   --  Expressions" in sem.ads.
  
!                   --  The visibility to the components must be restored
  
!                   Push_Type (U_Ent);
  
!                   Preanalyze_Spec_Expression
!                     (Expr, RTE (RE_Dispatching_Domain));
  
!                   Pop_Type (U_Ent);
!                end if;
  
!             else
!                Error_Msg_N
!                  ("attribute& cannot be set with definition clause", N);
              end if;
  
           ------------------
--- 6729,6758 ----
           ------------------------
  
           when Attribute_Dispatching_Domain =>
+             pragma Assert (From_Aspect_Specification (N));
+             --  The parser forbids this clause in source code, so it must have
+             --  come from an aspect specification.
  
!             if not Is_Task_Type (U_Ent) then
!                Error_Msg_N
!                  ("Dispatching_Domain can only be defined for task", Nam);
  
!             elsif Duplicate_Clause then
!                null;
  
!             else
!                --  The expression must be analyzed in the special manner
!                --  described in "Handling of Default and Per-Object
!                --  Expressions" in sem.ads.
  
!                --  The visibility to the components must be restored
  
!                Push_Type (U_Ent);
  
!                Preanalyze_Spec_Expression
!                  (Expr, RTE (RE_Dispatching_Domain));
  
!                Pop_Type (U_Ent);
              end if;
  
           ------------------
*************** package body Sem_Ch13 is
*** 5711,5753 ****
           ------------------------
  
           when Attribute_Interrupt_Priority =>
  
!             --  Interrupt_Priority attribute definition clause not allowed
!             --  except from aspect specification.
! 
!             if From_Aspect_Specification (N) then
!                if not Is_Concurrent_Type (U_Ent) then
!                   Error_Msg_N
!                     ("Interrupt_Priority can only be defined for task and "
!                      & "protected object", Nam);
  
!                elsif Duplicate_Clause then
!                   null;
  
!                else
!                   --  The expression must be analyzed in the special manner
!                   --  described in "Handling of Default and Per-Object
!                   --  Expressions" in sem.ads.
  
!                   --  The visibility to the components must be restored
  
!                   Push_Type (U_Ent);
  
!                   Preanalyze_Spec_Expression
!                     (Expr, RTE (RE_Interrupt_Priority));
  
!                   Pop_Type (U_Ent);
  
!                   --  Check the No_Task_At_Interrupt_Priority restriction
  
!                   if Is_Task_Type (U_Ent) then
!                      Check_Restriction (No_Task_At_Interrupt_Priority, N);
!                   end if;
                 end if;
- 
-             else
-                Error_Msg_N
-                  ("attribute& cannot be set with definition clause", N);
              end if;
  
           --------------
--- 6810,6846 ----
           ------------------------
  
           when Attribute_Interrupt_Priority =>
+             pragma Assert (From_Aspect_Specification (N));
+             --  The parser forbids this clause in source code, so it must have
+             --  come from an aspect specification.
  
!             if not Is_Concurrent_Type (U_Ent) then
!                Error_Msg_N
!                  ("Interrupt_Priority can only be defined for task and "
!                   & "protected object", Nam);
  
!             elsif Duplicate_Clause then
!                null;
  
!             else
!                --  The expression must be analyzed in the special manner
!                --  described in "Handling of Default and Per-Object
!                --  Expressions" in sem.ads.
  
!                --  The visibility to the components must be restored
  
!                Push_Type (U_Ent);
  
!                Preanalyze_Spec_Expression
!                  (Expr, RTE (RE_Interrupt_Priority));
  
!                Pop_Type (U_Ent);
  
!                --  Check the No_Task_At_Interrupt_Priority restriction
  
!                if Is_Task_Type (U_Ent) then
!                   Check_Restriction (No_Task_At_Interrupt_Priority, N);
                 end if;
              end if;
  
           --------------
*************** package body Sem_Ch13 is
*** 5788,5793 ****
--- 6881,6887 ----
                or else not Is_Type (Entity (Expr))
              then
                 Error_Msg_N ("aspect Iterator_Element must be a type", Expr);
+                return;
              end if;
  
           -------------------
*************** package body Sem_Ch13 is
*** 5816,5826 ****
                 elsif Radix = 10 then
                    Set_Machine_Radix_10 (U_Ent);
  
!                --  The following error is suppressed in ASIS mode to allow for
!                --  different ASIS back ends or ASIS-based tools to query the
!                --  illegal clause.
! 
!                elsif not ASIS_Mode then
                    Error_Msg_N ("machine radix value must be 2 or 10", Expr);
                 end if;
              end if;
--- 6910,6916 ----
                 elsif Radix = 10 then
                    Set_Machine_Radix_10 (U_Ent);
  
!                else
                    Error_Msg_N ("machine radix value must be 2 or 10", Expr);
                 end if;
              end if;
*************** package body Sem_Ch13 is
*** 5848,5861 ****
              else
                 Check_Size (Expr, U_Ent, Size, Biased);
  
!                --  The following errors are suppressed in ASIS mode to allow
!                --  for different ASIS back ends or ASIS-based tools to query
!                --  the illegal clause.
! 
!                if ASIS_Mode then
!                   null;
! 
!                elsif Size <= 0 then
                    Error_Msg_N ("Object_Size must be positive", Expr);
  
                 elsif Is_Scalar_Type (U_Ent) then
--- 6938,6944 ----
              else
                 Check_Size (Expr, U_Ent, Size, Biased);
  
!                if Size <= 0 then
                    Error_Msg_N ("Object_Size must be positive", Expr);
  
                 elsif Is_Scalar_Type (U_Ent) then
*************** package body Sem_Ch13 is
*** 5926,5931 ****
--- 7009,7021 ----
                   ("attribute& cannot be set with definition clause", N);
              end if;
  
+          ---------------
+          -- Put_Image --
+          ---------------
+ 
+          when Attribute_Put_Image =>
+             Analyze_Put_Image_TSS_Definition;
+ 
           ----------
           -- Read --
           ----------
*************** package body Sem_Ch13 is
*** 6065,6083 ****
                 --  For objects, set Esize only
  
                 else
-                   --  The following error is suppressed in ASIS mode to allow
-                   --  for different ASIS back ends or ASIS-based tools to query
-                   --  the illegal clause.
- 
                    if Is_Elementary_Type (Etyp)
                      and then Size /= System_Storage_Unit
!                     and then Size /= System_Storage_Unit * 2
!                     and then Size /= System_Storage_Unit * 4
!                     and then Size /= System_Storage_Unit * 8
!                     and then not ASIS_Mode
                    then
                       Error_Msg_Uint_1 := UI_From_Int (System_Storage_Unit);
!                      Error_Msg_Uint_2 := Error_Msg_Uint_1 * 8;
                       Error_Msg_N
                         ("size for primitive object must be a power of 2 in "
                          & "the range ^-^", N);
--- 7155,7169 ----
                 --  For objects, set Esize only
  
                 else
                    if Is_Elementary_Type (Etyp)
                      and then Size /= System_Storage_Unit
!                     and then Size /= 16
!                     and then Size /= 32
!                     and then Size /= 64
!                     and then Size /= System_Max_Integer_Size
                    then
                       Error_Msg_Uint_1 := UI_From_Int (System_Storage_Unit);
!                      Error_Msg_Uint_2 := UI_From_Int (System_Max_Integer_Size);
                       Error_Msg_N
                         ("size for primitive object must be a power of 2 in "
                          & "the range ^-^", N);
*************** package body Sem_Ch13 is
*** 6154,6159 ****
--- 7240,7363 ----
              Pool : Entity_Id;
              T    : Entity_Id;
  
+             procedure Associate_Storage_Pool
+               (Ent : Entity_Id; Pool : Entity_Id);
+             --  Associate Pool to Ent and perform legality checks on subpools
+ 
+             ----------------------------
+             -- Associate_Storage_Pool --
+             ----------------------------
+ 
+             procedure Associate_Storage_Pool
+               (Ent : Entity_Id; Pool : Entity_Id)
+             is
+                function Object_From (Pool : Entity_Id) return Entity_Id;
+                --  Return the entity of which Pool is a part of
+ 
+                -----------------
+                -- Object_From --
+                -----------------
+ 
+                function Object_From
+                  (Pool : Entity_Id) return Entity_Id
+                is
+                   N : Node_Id := Pool;
+                begin
+                   if Present (Renamed_Object (Pool)) then
+                      N := Renamed_Object (Pool);
+                   end if;
+ 
+                   while Present (N) loop
+                      case Nkind (N) is
+                         when N_Defining_Identifier =>
+                            return N;
+ 
+                         when N_Identifier | N_Expanded_Name =>
+                            return Entity (N);
+ 
+                         when N_Indexed_Component | N_Selected_Component |
+                              N_Explicit_Dereference
+                         =>
+                            N := Prefix (N);
+ 
+                         when N_Type_Conversion =>
+                            N := Expression (N);
+ 
+                         when others =>
+                            --  ??? we probably should handle more cases but
+                            --  this is good enough in practice for this check
+                            --  on a corner case.
+ 
+                            return Empty;
+                      end case;
+                   end loop;
+ 
+                   return Empty;
+                end Object_From;
+ 
+                Obj : Entity_Id;
+ 
+             begin
+                Set_Associated_Storage_Pool (Ent, Pool);
+ 
+                --  Check RM 13.11.4(22-23/3): a specification of a storage pool
+                --  is illegal if the storage pool supports subpools and:
+                --  (A) The access type is a general access type.
+                --  (B) The access type is statically deeper than the storage
+                --      pool object;
+                --  (C) The storage pool object is a part of a formal parameter;
+                --  (D) The storage pool object is a part of the dereference of
+                --      a non-library level general access type;
+ 
+                if Ada_Version >= Ada_2012
+                  and then RTU_Loaded (System_Storage_Pools_Subpools)
+                  and then
+                    Is_Ancestor (RTE (RE_Root_Storage_Pool_With_Subpools),
+                                 Etype (Pool))
+                then
+                   --  check (A)
+ 
+                   if Ekind (Etype (Ent)) = E_General_Access_Type then
+                      Error_Msg_N
+                        ("subpool cannot be used on general access type", Ent);
+                   end if;
+ 
+                   --  check (B)
+ 
+                   if Type_Access_Level (Ent)
+                        > Static_Accessibility_Level
+                            (Pool, Object_Decl_Level)
+                   then
+                      Error_Msg_N
+                        ("subpool access type has deeper accessibility "
+                         & "level than pool", Ent);
+                      return;
+                   end if;
+ 
+                   Obj := Object_From (Pool);
+ 
+                   --  check (C)
+ 
+                   if Present (Obj) and then Is_Formal (Obj) then
+                      Error_Msg_N
+                        ("subpool cannot be part of a parameter", Ent);
+                      return;
+                   end if;
+ 
+                   --  check (D)
+ 
+                   if Present (Obj)
+                     and then Ekind (Etype (Obj)) = E_General_Access_Type
+                     and then not Is_Library_Level_Entity (Etype (Obj))
+                   then
+                      Error_Msg_N
+                        ("subpool cannot be part of the dereference of a " &
+                         "nested general access type", Ent);
+                      return;
+                   end if;
+                end if;
+             end Associate_Storage_Pool;
+ 
           begin
              if Ekind (U_Ent) = E_Access_Subprogram_Type then
                 Error_Msg_N
*************** package body Sem_Ch13 is
*** 6161,6167 ****
                    Nam);
                 return;
  
!             elsif not Ekind_In (U_Ent, E_Access_Type, E_General_Access_Type)
              then
                 Error_Msg_N
                   ("storage pool can only be given for access types", Nam);
--- 7365,7371 ----
                    Nam);
                 return;
  
!             elsif Ekind (U_Ent) not in E_Access_Type | E_General_Access_Type
              then
                 Error_Msg_N
                   ("storage pool can only be given for access types", Nam);
*************** package body Sem_Ch13 is
*** 6241,6246 ****
--- 7445,7456 ----
                 return;
              end if;
  
+             --  Validate_Remote_Access_To_Class_Wide_Type for attribute
+             --  Storage_Pool since this attribute cannot be defined for such
+             --  types (RM E.2.2(17)).
+ 
+             Validate_Remote_Access_To_Class_Wide_Type (N);
+ 
              --  If the argument is a name that is not an entity name, then
              --  we construct a renaming operation to define an entity of
              --  type storage pool.
*************** package body Sem_Ch13 is
*** 6271,6277 ****
                    end if;
  
                    Analyze (Rnode);
!                   Set_Associated_Storage_Pool (U_Ent, Pool);
                 end;
  
              elsif Is_Entity_Name (Expr) then
--- 7481,7487 ----
                    end if;
  
                    Analyze (Rnode);
!                   Associate_Storage_Pool (U_Ent, Pool);
                 end;
  
              elsif Is_Entity_Name (Expr) then
*************** package body Sem_Ch13 is
*** 6293,6306 ****
                    Pool := Entity (Expression (Renamed_Object (Pool)));
                 end if;
  
!                Set_Associated_Storage_Pool (U_Ent, Pool);
  
              elsif Nkind (Expr) = N_Type_Conversion
                and then Is_Entity_Name (Expression (Expr))
                and then Nkind (Original_Node (Expr)) = N_Attribute_Reference
              then
                 Pool := Entity (Expression (Expr));
!                Set_Associated_Storage_Pool (U_Ent, Pool);
  
              else
                 Error_Msg_N ("incorrect reference to a Storage Pool", Expr);
--- 7503,7516 ----
                    Pool := Entity (Expression (Renamed_Object (Pool)));
                 end if;
  
!                Associate_Storage_Pool (U_Ent, Pool);
  
              elsif Nkind (Expr) = N_Type_Conversion
                and then Is_Entity_Name (Expression (Expr))
                and then Nkind (Original_Node (Expr)) = N_Attribute_Reference
              then
                 Pool := Entity (Expression (Expr));
!                Associate_Storage_Pool (U_Ent, Pool);
  
              else
                 Error_Msg_N ("incorrect reference to a Storage Pool", Expr);
*************** package body Sem_Ch13 is
*** 6350,6355 ****
--- 7560,7571 ----
                 null;
  
              else
+                --  Validate_Remote_Access_To_Class_Wide_Type for attribute
+                --  Storage_Size since this attribute cannot be defined for such
+                --  types (RM E.2.2(17)).
+ 
+                Validate_Remote_Access_To_Class_Wide_Type (N);
+ 
                 Analyze_And_Resolve (Expr, Any_Integer);
  
                 if Is_Access_Type (U_Ent) then
*************** package body Sem_Ch13 is
*** 6396,6424 ****
                 null;
  
              elsif Is_Elementary_Type (U_Ent) then
! 
!                --  The following errors are suppressed in ASIS mode to allow
!                --  for different ASIS back ends or ASIS-based tools to query
!                --  the illegal clause.
! 
!                if ASIS_Mode then
!                   null;
! 
!                elsif Size /= System_Storage_Unit
                   and then Size /= System_Storage_Unit * 2
                   and then Size /= System_Storage_Unit * 4
                   and then Size /= System_Storage_Unit * 8
                 then
-                   Error_Msg_Uint_1 := UI_From_Int (System_Storage_Unit);
                    Error_Msg_N
!                     ("stream size for elementary type must be a power of 2 "
!                      & "and at least ^", N);
  
                 elsif RM_Size (U_Ent) > Size then
                    Error_Msg_Uint_1 := RM_Size (U_Ent);
                    Error_Msg_N
!                     ("stream size for elementary type must be a power of 2 "
!                      & "and at least ^", N);
                 end if;
  
                 Set_Has_Stream_Size_Clause (U_Ent);
--- 7612,7632 ----
                 null;
  
              elsif Is_Elementary_Type (U_Ent) then
!                if Size /= System_Storage_Unit
                   and then Size /= System_Storage_Unit * 2
+                  and then Size /= System_Storage_Unit * 3
                   and then Size /= System_Storage_Unit * 4
                   and then Size /= System_Storage_Unit * 8
                 then
                    Error_Msg_N
!                     ("stream size for elementary type must be 8, 16, 24, " &
!                      "32 or 64", N);
  
                 elsif RM_Size (U_Ent) > Size then
                    Error_Msg_Uint_1 := RM_Size (U_Ent);
                    Error_Msg_N
!                     ("stream size for elementary type must be 8, 16, 24, " &
!                      "32 or 64 and at least ^", N);
                 end if;
  
                 Set_Has_Stream_Size_Clause (U_Ent);
*************** package body Sem_Ch13 is
*** 6560,6572 ****
           while Present (Decl) loop
              DeclO := Original_Node (Decl);
              if Comes_From_Source (DeclO)
!               and not Nkind_In (DeclO, N_Pragma,
!                                        N_Use_Package_Clause,
!                                        N_Use_Type_Clause,
!                                        N_Implicit_Label_Declaration)
              then
                 Error_Msg_N
!                  ("this declaration not allowed in machine code subprogram",
                    DeclO);
              end if;
  
--- 7768,7780 ----
           while Present (Decl) loop
              DeclO := Original_Node (Decl);
              if Comes_From_Source (DeclO)
!               and Nkind (DeclO) not in N_Pragma
!                                      | N_Use_Package_Clause
!                                      | N_Use_Type_Clause
!                                      | N_Implicit_Label_Declaration
              then
                 Error_Msg_N
!                  ("this declaration is not allowed in machine code subprogram",
                    DeclO);
              end if;
  
*************** package body Sem_Ch13 is
*** 6592,6600 ****
                 null;
  
              elsif Comes_From_Source (StmtO)
!               and then not Nkind_In (StmtO, N_Pragma,
!                                             N_Label,
!                                             N_Code_Statement)
              then
                 Error_Msg_N
                   ("this statement is not allowed in machine code subprogram",
--- 7800,7807 ----
                 null;
  
              elsif Comes_From_Source (StmtO)
!               and then Nkind (StmtO) not in
!                          N_Pragma | N_Label | N_Code_Statement
              then
                 Error_Msg_N
                   ("this statement is not allowed in machine code subprogram",
*************** package body Sem_Ch13 is
*** 6766,6772 ****
              end if;
  
              if Nkind (Choice) = N_Others_Choice then
!                Error_Msg_N ("others choice not allowed here", Choice);
                 Err := True;
  
              elsif Nkind (Choice) = N_Range then
--- 7973,7979 ----
              end if;
  
              if Nkind (Choice) = N_Others_Choice then
!                Error_Msg_N ("OTHERS choice not allowed here", Choice);
                 Err := True;
  
              elsif Nkind (Choice) = N_Range then
*************** package body Sem_Ch13 is
*** 7064,7076 ****
  
        if Present (Mod_Clause (N)) then
           declare
!             Loc     : constant Source_Ptr := Sloc (N);
!             M       : constant Node_Id := Mod_Clause (N);
!             P       : constant List_Id := Pragmas_Before (M);
!             AtM_Nod : Node_Id;
! 
!             Mod_Val : Uint;
!             pragma Warnings (Off, Mod_Val);
  
           begin
              Check_Restriction (No_Obsolescent_Features, Mod_Clause (N));
--- 8271,8279 ----
  
        if Present (Mod_Clause (N)) then
           declare
!             M      : constant Node_Id := Mod_Clause (N);
!             P      : constant List_Id := Pragmas_Before (M);
!             Ignore : Uint;
  
           begin
              Check_Restriction (No_Obsolescent_Features, Mod_Clause (N));
*************** package body Sem_Ch13 is
*** 7086,7116 ****
                 Analyze_List (P);
              end if;
  
!             --  In ASIS_Mode mode, expansion is disabled, but we must convert
!             --  the Mod clause into an alignment clause anyway, so that the
!             --  back end can compute and back-annotate properly the size and
!             --  alignment of types that may include this record.
! 
!             --  This seems dubious, this destroys the source tree in a manner
!             --  not detectable by ASIS ???
! 
!             if Operating_Mode = Check_Semantics and then ASIS_Mode then
!                AtM_Nod :=
!                  Make_Attribute_Definition_Clause (Loc,
!                    Name       => New_Occurrence_Of (Base_Type (Rectype), Loc),
!                    Chars      => Name_Alignment,
!                    Expression => Relocate_Node (Expression (M)));
! 
!                Set_From_At_Mod (AtM_Nod);
!                Insert_After (N, AtM_Nod);
!                Mod_Val := Get_Alignment_Value (Expression (AtM_Nod));
!                Set_Mod_Clause (N, Empty);
! 
!             else
!                --  Get the alignment value to perform error checking
  
!                Mod_Val := Get_Alignment_Value (Expression (M));
!             end if;
           end;
        end if;
  
--- 8289,8297 ----
                 Analyze_List (P);
              end if;
  
!             --  Get the alignment value to perform error checking
  
!             Ignore := Get_Alignment_Value (Expression (M));
           end;
        end if;
  
*************** package body Sem_Ch13 is
*** 7295,7302 ****
                       if Has_Size_Clause (Rectype)
                         and then RM_Size (Rectype) <= Lbit
                       then
!                         Error_Msg_N
!                           ("bit number out of range of specified size",
                             Last_Bit (CC));
                       else
                          Set_Component_Clause     (Comp, CC);
--- 8476,8485 ----
                       if Has_Size_Clause (Rectype)
                         and then RM_Size (Rectype) <= Lbit
                       then
!                         Error_Msg_Uint_1 := RM_Size (Rectype);
!                         Error_Msg_Uint_2 := Lbit + 1;
!                         Error_Msg_N ("bit number out of range of specified "
!                            & "size (expected ^, got ^)",
                             Last_Bit (CC));
                       else
                          Set_Component_Clause     (Comp, CC);
*************** package body Sem_Ch13 is
*** 7968,7974 ****
                      or else Etype (Expression (Expr)) /= Typ
                    then
                       Error_Msg_N
!                        ("expression must denaote subtype", Expression (Expr));
                       return False_Range;
                    end if;
  
--- 9151,9157 ----
                      or else Etype (Expression (Expr)) /= Typ
                    then
                       Error_Msg_N
!                        ("expression must denote subtype", Expression (Expr));
                       return False_Range;
                    end if;
  
*************** package body Sem_Ch13 is
*** 8113,8118 ****
--- 9296,9320 ----
                 return RList'(1 => REnt'(SLo, SHi));
              end if;
  
+          --  Others case
+ 
+          elsif Nkind (N) = N_Others_Choice then
+             declare
+                Choices    : constant List_Id := Others_Discrete_Choices (N);
+                Choice     : Node_Id;
+                Range_List : RList (1 .. List_Length (Choices));
+ 
+             begin
+                Choice := First (Choices);
+ 
+                for J in Range_List'Range loop
+                   Range_List (J) := REnt'(Lo_Val (Choice), Hi_Val (Choice));
+                   Next (Choice);
+                end loop;
+ 
+                return Range_List;
+             end;
+ 
           --  Static expression case
  
           elsif Is_OK_Static_Expression (N) then
*************** package body Sem_Ch13 is
*** 8121,8127 ****
  
           --  Identifier (other than static expression) case
  
!          else pragma Assert (Nkind (N) = N_Identifier);
  
              --  Type case
  
--- 9323,9329 ----
  
           --  Identifier (other than static expression) case
  
!          else pragma Assert (Nkind (N) in N_Expanded_Name | N_Identifier);
  
              --  Type case
  
*************** package body Sem_Ch13 is
*** 8528,8535 ****
        --  Predicate_Function of the parent type, using Add_Call above.
  
        procedure Add_Call (T : Entity_Id);
!       --  Includes a call to the predicate function for type T in Expr if T
!       --  has predicates and Predicate_Function (T) is non-empty.
  
        function Process_RE (N : Node_Id) return Traverse_Result;
        --  Used in Process REs, tests if node N is a raise expression, and if
--- 9730,9737 ----
        --  Predicate_Function of the parent type, using Add_Call above.
  
        procedure Add_Call (T : Entity_Id);
!       --  Includes a call to the predicate function for type T in Expr if
!       --  Predicate_Function (T) is non-empty.
  
        function Process_RE (N : Node_Id) return Traverse_Result;
        --  Used in Process REs, tests if node N is a raise expression, and if
*************** package body Sem_Ch13 is
*** 8553,8560 ****
           Exp : Node_Id;
  
        begin
!          if Present (T) and then Present (Predicate_Function (T)) then
!             Set_Has_Predicates (Typ);
  
              --  Build the call to the predicate function of T. The type may be
              --  derived, so use an unchecked conversion for the actual.
--- 9755,9762 ----
           Exp : Node_Id;
  
        begin
!          if Present (Predicate_Function (T)) then
!             pragma Assert (Has_Predicates (Typ));
  
              --  Build the call to the predicate function of T. The type may be
              --  derived, so use an unchecked conversion for the actual.
*************** package body Sem_Ch13 is
*** 8649,8659 ****
  
                 Set_Etype (N, Typ);
                 Set_Entity (N, Object_Entity);
- 
-                --  We want to treat the node as if it comes from source, so
-                --  that ASIS will not ignore it.
- 
-                Set_Comes_From_Source (N, True);
              end Replace_Type_Reference;
  
              --  Local variables
--- 9851,9856 ----
*************** package body Sem_Ch13 is
*** 8672,8677 ****
--- 9869,9875 ----
              --  Extract the arguments of the pragma. The expression itself
              --  is copied for use in the predicate function, to preserve the
              --  original version for ASIS use.
+             --  Is this still needed???
  
              Arg1 := First (Pragma_Argument_Associations (Prag));
              Arg2 := Next (Arg1);
*************** package body Sem_Ch13 is
*** 8732,8738 ****
  
              elsif Nkind (Ritem) = N_Aspect_Specification
                and then Present (Aspect_Rep_Item (Ritem))
!               and then Scope (Typ) /= Current_Scope
              then
                 declare
                    Prag : constant Node_Id := Aspect_Rep_Item (Ritem);
--- 9930,9936 ----
  
              elsif Nkind (Ritem) = N_Aspect_Specification
                and then Present (Aspect_Rep_Item (Ritem))
!               and then Scope_Depth (Scope (Typ)) > Scope_Depth (Current_Scope)
              then
                 declare
                    Prag : constant Node_Id := Aspect_Rep_Item (Ritem);
*************** package body Sem_Ch13 is
*** 8837,8842 ****
--- 10035,10043 ----
        --  Add predicates for ancestor if present. These must come before the
        --  ones for the current type, as required by AI12-0071-1.
  
+       --  Looks like predicates aren't added for case of inheriting from
+       --  multiple progenitors???
+ 
        declare
           Atyp : Entity_Id;
        begin
*************** package body Sem_Ch13 is
*** 8928,8939 ****
              Set_Ekind (SIdB, E_Function);
              Set_Is_Predicate_Function (SIdB);
  
-             --  The predicate function is shared between views of a type
- 
-             if Is_Private_Type (Typ) and then Present (Full_View (Typ)) then
-                Set_Predicate_Function (Full_View (Typ), SId);
-             end if;
- 
              --  Build function body
  
              Spec :=
--- 10129,10134 ----
*************** package body Sem_Ch13 is
*** 8987,8997 ****
                 -------------------------------------
  
                 function Reset_Quantified_Variable_Scope
!                  (N : Node_Id) return Traverse_Result
!                is
                 begin
!                   if Nkind_In (N, N_Iterator_Specification,
!                                   N_Loop_Parameter_Specification)
                    then
                       Set_Scope (Defining_Identifier (N),
                         Predicate_Function (Typ));
--- 10182,10191 ----
                 -------------------------------------
  
                 function Reset_Quantified_Variable_Scope
!                  (N : Node_Id) return Traverse_Result is
                 begin
!                   if Nkind (N) in N_Iterator_Specification
!                                 | N_Loop_Parameter_Specification
                    then
                       Set_Scope (Defining_Identifier (N),
                         Predicate_Function (Typ));
*************** package body Sem_Ch13 is
*** 9006,9012 ****
                 end if;
              end;
  
!             --  within a generic unit, prevent a double analysis of the body
              --  which will not be marked analyzed yet. This will happen when
              --  the freeze node is created during the preanalysis of an
              --  expression function.
--- 10200,10206 ----
                 end if;
              end;
  
!             --  Within a generic unit, prevent a double analysis of the body
              --  which will not be marked analyzed yet. This will happen when
              --  the freeze node is created during the preanalysis of an
              --  expression function.
*************** package body Sem_Ch13 is
*** 9047,9052 ****
--- 10241,10258 ----
                 FDecl : Node_Id;
                 BTemp : Entity_Id;
  
+                CRec_Typ : Entity_Id;
+                --  The corresponding record type of Full_Typ
+ 
+                Full_Typ : Entity_Id;
+                --  The full view of Typ
+ 
+                Priv_Typ : Entity_Id;
+                --  The partial view of Typ
+ 
+                UFull_Typ : Entity_Id;
+                --  The underlying full view of Full_Typ
+ 
              begin
                 --  Mark any raise expressions for special expansion
  
*************** package body Sem_Ch13 is
*** 9058,9068 ****
                 Set_Is_Predicate_Function_M (SId);
                 Set_Predicate_Function_M (Typ, SId);
  
!                --  The predicate function is shared between views of a type
  
!                if Is_Private_Type (Typ) and then Present (Full_View (Typ)) then
!                   Set_Predicate_Function_M (Full_View (Typ), SId);
!                end if;
  
                 Spec :=
                   Make_Function_Specification (Loc,
--- 10264,10279 ----
                 Set_Is_Predicate_Function_M (SId);
                 Set_Predicate_Function_M (Typ, SId);
  
!                --  Obtain all views of the input type
  
!                Get_Views (Typ, Priv_Typ, Full_Typ, UFull_Typ, CRec_Typ);
! 
!                --  Associate the predicate function with all views
! 
!                Propagate_Predicate_Attributes (Priv_Typ,  From_Typ => Typ);
!                Propagate_Predicate_Attributes (Full_Typ,  From_Typ => Typ);
!                Propagate_Predicate_Attributes (UFull_Typ, From_Typ => Typ);
!                Propagate_Predicate_Attributes (CRec_Typ,  From_Typ => Typ);
  
                 Spec :=
                   Make_Function_Specification (Loc,
*************** package body Sem_Ch13 is
*** 9242,9247 ****
--- 10453,10470 ----
        Func_Id   : Entity_Id;
        Spec      : Node_Id;
  
+       CRec_Typ : Entity_Id;
+       --  The corresponding record type of Full_Typ
+ 
+       Full_Typ : Entity_Id;
+       --  The full view of Typ
+ 
+       Priv_Typ : Entity_Id;
+       --  The partial view of Typ
+ 
+       UFull_Typ : Entity_Id;
+       --  The underlying full view of Full_Typ
+ 
     begin
        --  The related type may be subject to pragma Ghost. Set the mode now to
        --  ensure that the predicate functions are properly marked as Ghost.
*************** package body Sem_Ch13 is
*** 9252,9257 ****
--- 10475,10486 ----
          Make_Defining_Identifier (Loc,
            Chars => New_External_Name (Chars (Typ), "Predicate"));
  
+       Set_Ekind (Func_Id, E_Function);
+       Set_Etype (Func_Id, Standard_Boolean);
+       Set_Is_Internal (Func_Id);
+       Set_Is_Predicate_Function (Func_Id);
+       Set_Predicate_Function (Typ, Func_Id);
+ 
        --  The predicate function requires debug info when the predicates are
        --  subject to Source Coverage Obligations.
  
*************** package body Sem_Ch13 is
*** 9259,9264 ****
--- 10488,10504 ----
           Set_Debug_Info_Needed (Func_Id);
        end if;
  
+       --  Obtain all views of the input type
+ 
+       Get_Views (Typ, Priv_Typ, Full_Typ, UFull_Typ, CRec_Typ);
+ 
+       --  Associate the predicate function and various flags with all views
+ 
+       Propagate_Predicate_Attributes (Priv_Typ,  From_Typ => Typ);
+       Propagate_Predicate_Attributes (Full_Typ,  From_Typ => Typ);
+       Propagate_Predicate_Attributes (UFull_Typ, From_Typ => Typ);
+       Propagate_Predicate_Attributes (CRec_Typ,  From_Typ => Typ);
+ 
        Spec :=
          Make_Function_Specification (Loc,
            Defining_Unit_Name       => Func_Id,
*************** package body Sem_Ch13 is
*** 9271,9282 ****
  
        Func_Decl := Make_Subprogram_Declaration (Loc, Specification => Spec);
  
-       Set_Ekind (Func_Id, E_Function);
-       Set_Etype (Func_Id, Standard_Boolean);
-       Set_Is_Internal (Func_Id);
-       Set_Is_Predicate_Function (Func_Id);
-       Set_Predicate_Function (Typ, Func_Id);
- 
        Insert_After (Parent (Typ), Func_Decl);
        Analyze (Func_Decl);
  
--- 10511,10516 ----
*************** package body Sem_Ch13 is
*** 9300,9309 ****
        Freeze_Expr : constant Node_Id := Expression (ASN);
        --  Expression from call to Check_Aspect_At_Freeze_Point.
  
!       T : constant Entity_Id := Etype (Original_Node (Freeze_Expr));
        --  Type required for preanalyze call. We use the original expression to
        --  get the proper type, to prevent cascaded errors when the expression
!       --  is constant-folded.
  
        Err : Boolean;
        --  Set False if error
--- 10534,10548 ----
        Freeze_Expr : constant Node_Id := Expression (ASN);
        --  Expression from call to Check_Aspect_At_Freeze_Point.
  
!       T : constant Entity_Id :=
!             (if Present (Freeze_Expr) and (A_Id /= Aspect_Stable_Properties)
!              then Etype (Original_Node (Freeze_Expr))
!              else Empty);
        --  Type required for preanalyze call. We use the original expression to
        --  get the proper type, to prevent cascaded errors when the expression
!       --  is constant-folded. For Stable_Properties, the aspect value is
!       --  not semantically an expression (although it is syntactically);
!       --  in particular, it has no type.
  
        Err : Boolean;
        --  Set False if error
*************** package body Sem_Ch13 is
*** 9376,9399 ****
        elsif A_Id = Aspect_Synchronization then
           return;
  
!       --  Case of stream attributes, just have to compare entities. However,
!       --  the expression is just a name (possibly overloaded), and there may
!       --  be stream operations declared for unrelated types, so we just need
!       --  to verify that one of these interpretations is the one available at
!       --  at the freeze point.
  
!       elsif A_Id = Aspect_Input  or else
!             A_Id = Aspect_Output or else
!             A_Id = Aspect_Read   or else
!             A_Id = Aspect_Write
        then
           Analyze (End_Decl_Expr);
           Check_Overloaded_Name;
  
!       elsif A_Id = Aspect_Variable_Indexing or else
!             A_Id = Aspect_Constant_Indexing or else
!             A_Id = Aspect_Default_Iterator  or else
!             A_Id = Aspect_Iterator_Element
        then
           --  Make type unfrozen before analysis, to prevent spurious errors
           --  about late attributes.
--- 10615,10641 ----
        elsif A_Id = Aspect_Synchronization then
           return;
  
!       --  Case of stream attributes and Put_Image, just have to compare
!       --  entities. However, the expression is just a possibly-overloaded
!       --  name, so we need to verify that one of these interpretations is
!       --  the one available at at the freeze point.
  
!       elsif A_Id in Aspect_Input
!                   | Aspect_Output
!                   | Aspect_Read
!                   | Aspect_Write
!                   | Aspect_Put_Image
        then
           Analyze (End_Decl_Expr);
           Check_Overloaded_Name;
  
!       elsif A_Id in Aspect_Variable_Indexing
!                   | Aspect_Constant_Indexing
!                   | Aspect_Default_Iterator
!                   | Aspect_Iterator_Element
!                   | Aspect_Integer_Literal
!                   | Aspect_Real_Literal
!                   | Aspect_String_Literal
        then
           --  Make type unfrozen before analysis, to prevent spurious errors
           --  about late attributes.
*************** package body Sem_Ch13 is
*** 9419,9427 ****
           --  also make its potential components accessible.
  
           if not Analyzed (Freeze_Expr) and then Inside_A_Generic then
!             if A_Id = Aspect_Dynamic_Predicate
!               or else A_Id = Aspect_Predicate
!             then
                 Push_Type (Ent);
                 Preanalyze_Spec_Expression (Freeze_Expr, Standard_Boolean);
                 Pop_Type (Ent);
--- 10661,10667 ----
           --  also make its potential components accessible.
  
           if not Analyzed (Freeze_Expr) and then Inside_A_Generic then
!             if A_Id in Aspect_Dynamic_Predicate | Aspect_Predicate then
                 Push_Type (Ent);
                 Preanalyze_Spec_Expression (Freeze_Expr, Standard_Boolean);
                 Pop_Type (Ent);
*************** package body Sem_Ch13 is
*** 9441,9455 ****
  
           Set_Parent (End_Decl_Expr, ASN);
  
!          --  In a generic context the original  aspect expressions have not
           --  been preanalyzed, so do it now. There are no conformance checks
           --  to perform in this case. As before, we have to make components
           --  visible for aspects that may reference them.
  
!          if No (T) then
!             if A_Id = Aspect_Dynamic_Predicate
!               or else A_Id = Aspect_Predicate
!               or else A_Id = Aspect_Priority
              then
                 Push_Type (Ent);
                 Check_Aspect_At_Freeze_Point (ASN);
--- 10681,10695 ----
  
           Set_Parent (End_Decl_Expr, ASN);
  
!          --  In a generic context the original aspect expressions have not
           --  been preanalyzed, so do it now. There are no conformance checks
           --  to perform in this case. As before, we have to make components
           --  visible for aspects that may reference them.
  
!          if Present (Freeze_Expr) and then No (T) then
!             if A_Id in Aspect_Dynamic_Predicate
!                      | Aspect_Predicate
!                      | Aspect_Priority
              then
                 Push_Type (Ent);
                 Check_Aspect_At_Freeze_Point (ASN);
*************** package body Sem_Ch13 is
*** 9465,9473 ****
           --  partial view is visible. The expression must be scalar, so use
           --  the full view to resolve.
  
!          elsif (A_Id = Aspect_Default_Value
!                   or else
!                 A_Id = Aspect_Default_Component_Value)
              and then Is_Private_Type (T)
           then
              Preanalyze_Spec_Expression (End_Decl_Expr, Full_View (T));
--- 10705,10711 ----
           --  partial view is visible. The expression must be scalar, so use
           --  the full view to resolve.
  
!          elsif A_Id in Aspect_Default_Component_Value | Aspect_Default_Value
              and then Is_Private_Type (T)
           then
              Preanalyze_Spec_Expression (End_Decl_Expr, Full_View (T));
*************** package body Sem_Ch13 is
*** 9475,9490 ****
           --  The following aspect expressions may contain references to
           --  components and discriminants of the type.
  
!          elsif A_Id = Aspect_Dynamic_Predicate
!            or else A_Id = Aspect_Predicate
!            or else A_Id = Aspect_Priority
!            or else A_Id = Aspect_CPU
           then
              Push_Type (Ent);
              Preanalyze_Spec_Expression (End_Decl_Expr, T);
              Pop_Type (Ent);
  
!          else
              Preanalyze_Spec_Expression (End_Decl_Expr, T);
           end if;
  
--- 10713,10730 ----
           --  The following aspect expressions may contain references to
           --  components and discriminants of the type.
  
!          elsif A_Id in Aspect_CPU
!                      | Aspect_Dynamic_Predicate
!                      | Aspect_Predicate
!                      | Aspect_Priority
           then
              Push_Type (Ent);
              Preanalyze_Spec_Expression (End_Decl_Expr, T);
              Pop_Type (Ent);
  
!          elsif A_Id = Aspect_Predicate_Failure then
!             Preanalyze_Spec_Expression (End_Decl_Expr, Standard_String);
!          elsif Present (End_Decl_Expr) then
              Preanalyze_Spec_Expression (End_Decl_Expr, T);
           end if;
  
*************** package body Sem_Ch13 is
*** 9514,9519 ****
--- 10754,10762 ----
        Ident : constant Node_Id := Identifier (ASN);
        --  Identifier (use Entity field to save expression)
  
+       Expr : constant Node_Id := Expression (ASN);
+       --  For cases where using Entity (Identifier) doesn't work
+ 
        A_Id : constant Aspect_Id := Get_Aspect_Id (Chars (Ident));
  
        T : Entity_Id := Empty;
*************** package body Sem_Ch13 is
*** 9641,9649 ****
  
           when Aspect_Input
              | Aspect_Output
              | Aspect_Read
-             | Aspect_Suppress
-             | Aspect_Unsuppress
              | Aspect_Warnings
              | Aspect_Write
           =>
--- 10884,10891 ----
  
           when Aspect_Input
              | Aspect_Output
+             | Aspect_Put_Image
              | Aspect_Read
              | Aspect_Warnings
              | Aspect_Write
           =>
*************** package body Sem_Ch13 is
*** 9661,9666 ****
--- 10903,10922 ----
              Analyze (Expression (ASN));
              return;
  
+          --  Same for Literal aspects, where the expression is a function
+          --  name. Legality rules are checked separately. Use Expr to avoid
+          --  losing track of the previous resolution of Expression.
+ 
+          when Aspect_Integer_Literal
+             | Aspect_Real_Literal
+             | Aspect_String_Literal
+          =>
+             Set_Entity (Expression (ASN), Entity (Expr));
+             Set_Etype (Expression (ASN), Etype (Expr));
+             Set_Is_Overloaded (Expression (ASN), False);
+             Analyze (Expression (ASN));
+             return;
+ 
           --  Ditto for Iterable, legality checks in Validate_Iterable_Aspect.
  
           when Aspect_Iterable =>
*************** package body Sem_Ch13 is
*** 9692,9697 ****
--- 10948,10963 ----
  
              return;
  
+          when Aspect_Aggregate =>
+             Resolve_Aspect_Aggregate (Entity (ASN), Expression (ASN));
+             return;
+ 
+          when Aspect_Stable_Properties =>
+             Resolve_Aspect_Stable_Properties
+               (Entity (ASN), Expression (ASN),
+                Class_Present => Class_Present (ASN));
+             return;
+ 
           --  Invariant/Predicate take boolean expressions
  
           when Aspect_Dynamic_Predicate
*************** package body Sem_Ch13 is
*** 9739,9747 ****
--- 11005,11017 ----
              | Aspect_Refined_Global
              | Aspect_Refined_Post
              | Aspect_Refined_State
+             | Aspect_Relaxed_Initialization
              | Aspect_SPARK_Mode
+             | Aspect_Subprogram_Variant
+             | Aspect_Suppress
              | Aspect_Test_Case
              | Aspect_Unimplemented
+             | Aspect_Unsuppress
              | Aspect_Volatile_Function
           =>
              raise Program_Error;
*************** package body Sem_Ch13 is
*** 9750,9756 ****
  
        --  Do the preanalyze call
  
!       Preanalyze_Spec_Expression (Expression (ASN), T);
     end Check_Aspect_At_Freeze_Point;
  
     -----------------------------------
--- 11020,11028 ----
  
        --  Do the preanalyze call
  
!       if Present (Expression (ASN)) then
!          Preanalyze_Spec_Expression (Expression (ASN), T);
!       end if;
     end Check_Aspect_At_Freeze_Point;
  
     -----------------------------------
*************** package body Sem_Ch13 is
*** 9901,9912 ****
  
                 --  Otherwise look at the identifier and see if it is OK
  
!                if Ekind_In (Ent, E_Named_Integer, E_Named_Real)
!                  or else Is_Type (Ent)
!                then
                    return;
  
!                elsif Ekind_In (Ent, E_Constant, E_In_Parameter) then
  
                    --  This is the case where we must have Ent defined before
                    --  U_Ent. Clearly if they are in different units this
--- 11173,11182 ----
  
                 --  Otherwise look at the identifier and see if it is OK
  
!                if Is_Named_Number (Ent) or else Is_Type (Ent) then
                    return;
  
!                elsif Ekind (Ent) in E_Constant | E_In_Parameter then
  
                    --  This is the case where we must have Ent defined before
                    --  U_Ent. Clearly if they are in different units this
*************** package body Sem_Ch13 is
*** 9988,9997 ****
                 Check_Expr_Constants (Prefix (Nod));
  
              when N_Attribute_Reference =>
!                if Nam_In (Attribute_Name (Nod), Name_Address,
!                                                 Name_Access,
!                                                 Name_Unchecked_Access,
!                                                 Name_Unrestricted_Access)
                 then
                    Check_At_Constant_Address (Prefix (Nod));
  
--- 11258,11267 ----
                 Check_Expr_Constants (Prefix (Nod));
  
              when N_Attribute_Reference =>
!                if Attribute_Name (Nod) in Name_Address
!                                         | Name_Access
!                                         | Name_Unchecked_Access
!                                         | Name_Unrestricted_Access
                 then
                    Check_At_Constant_Address (Prefix (Nod));
  
*************** package body Sem_Ch13 is
*** 10136,10143 ****
        Rectype : Entity_Id;
        Fent    : Entity_Id;
        CC      : Node_Id;
!       Fbit    : Uint;
!       Lbit    : Uint;
        Hbit    : Uint := Uint_0;
        Comp    : Entity_Id;
        Pcomp   : Entity_Id;
--- 11406,11413 ----
        Rectype : Entity_Id;
        Fent    : Entity_Id;
        CC      : Node_Id;
!       Fbit    : Uint := No_Uint;
!       Lbit    : Uint := No_Uint;
        Hbit    : Uint := Uint_0;
        Comp    : Entity_Id;
        Pcomp   : Entity_Id;
*************** package body Sem_Ch13 is
*** 10210,10216 ****
              --  record, both at location zero. This seems a bit strange, but
              --  it seems to happen in some circumstances, perhaps on an error.
  
!             if Nam_In (Chars (C1_Ent), Name_uTag, Name_uTag) then
                 return;
              end if;
  
--- 11480,11486 ----
              --  record, both at location zero. This seems a bit strange, but
              --  it seems to happen in some circumstances, perhaps on an error.
  
!             if Chars (C1_Ent) = Name_uTag then
                 return;
              end if;
  
*************** package body Sem_Ch13 is
*** 10277,10283 ****
                 end if;
  
                 Prev_Bit_Offset := Component_Bit_Offset (Comp);
!                Comp := Next_Component (Comp);
              end if;
  
              Next (Clause);
--- 11547,11553 ----
                 end if;
  
                 Prev_Bit_Offset := Component_Bit_Offset (Comp);
!                Next_Component (Comp);
              end if;
  
              Next (Clause);
*************** package body Sem_Ch13 is
*** 10485,10490 ****
--- 11755,11761 ----
                 Nbit := Sbit;
                 for J in 1 .. Ncomps loop
                    CEnt := Comps (J);
+                   pragma Annotate (CodePeer, Modified, CEnt);
  
                    declare
                       CBO : constant Uint := Component_Bit_Offset (CEnt);
*************** package body Sem_Ch13 is
*** 10604,10610 ****
              Parent_Last_Bit := UI_From_Int (System_Address_Size - 1);
              Pcomp := First_Entity (Tagged_Parent);
              while Present (Pcomp) loop
!                if Ekind_In (Pcomp, E_Discriminant, E_Component) then
                    if Component_Bit_Offset (Pcomp) /= No_Uint
                      and then Known_Static_Esize (Pcomp)
                    then
--- 11875,11881 ----
              Parent_Last_Bit := UI_From_Int (System_Address_Size - 1);
              Pcomp := First_Entity (Tagged_Parent);
              while Present (Pcomp) loop
!                if Ekind (Pcomp) in E_Discriminant | E_Component then
                    if Component_Bit_Offset (Pcomp) /= No_Uint
                      and then Known_Static_Esize (Pcomp)
                    then
*************** package body Sem_Ch13 is
*** 10686,10693 ****
              if Has_Size_Clause (Rectype)
                and then RM_Size (Rectype) <= Lbit
              then
!                Error_Msg_N
!                  ("bit number out of range of specified size",
                    Last_Bit (CC));
  
                 --  Check for overlap with tag or parent component
--- 11957,11966 ----
              if Has_Size_Clause (Rectype)
                and then RM_Size (Rectype) <= Lbit
              then
!                Error_Msg_Uint_1 := RM_Size (Rectype);
!                Error_Msg_Uint_2 := Lbit + 1;
!                Error_Msg_N ("bit number out of range of specified "
!                   & "size (expected ^, got ^)",
                    Last_Bit (CC));
  
                 --  Check for overlap with tag or parent component
*************** package body Sem_Ch13 is
*** 10834,10840 ****
              --  This latter test is repeated recursively up the variant tree.
  
              Main_Component_Loop : while Present (C1_Ent) loop
!                if not Ekind_In (C1_Ent, E_Component, E_Discriminant) then
                    goto Continue_Main_Component_Loop;
                 end if;
  
--- 12107,12113 ----
              --  This latter test is repeated recursively up the variant tree.
  
              Main_Component_Loop : while Present (C1_Ent) loop
!                if Ekind (C1_Ent) not in E_Component | E_Discriminant then
                    goto Continue_Main_Component_Loop;
                 end if;
  
*************** package body Sem_Ch13 is
*** 10862,10876 ****
                    end if;
  
                    --  Outer level of record definition, check discriminants
  
!                   if Nkind_In (Clist, N_Full_Type_Declaration,
!                                       N_Private_Type_Declaration)
                    then
                       if Has_Discriminants (Defining_Identifier (Clist)) then
                          C2_Ent :=
                            First_Discriminant (Defining_Identifier (Clist));
                          while Present (C2_Ent) loop
!                            exit when C1_Ent = C2_Ent;
                             Check_Component_Overlap (C1_Ent, C2_Ent);
                             Next_Discriminant (C2_Ent);
                          end loop;
--- 12135,12153 ----
                    end if;
  
                    --  Outer level of record definition, check discriminants
+                   --  but be careful not to flag a non-girder discriminant
+                   --  and the girder discriminant it renames as overlapping.
  
!                   if Nkind (Clist) in N_Full_Type_Declaration
!                                     | N_Private_Type_Declaration
                    then
                       if Has_Discriminants (Defining_Identifier (Clist)) then
                          C2_Ent :=
                            First_Discriminant (Defining_Identifier (Clist));
                          while Present (C2_Ent) loop
!                            exit when
!                              Original_Record_Component (C1_Ent) =
!                                Original_Record_Component (C2_Ent);
                             Check_Component_Overlap (C1_Ent, C2_Ent);
                             Next_Discriminant (C2_Ent);
                          end loop;
*************** package body Sem_Ch13 is
*** 11007,11019 ****
  
        procedure Size_Too_Small_Error (Min_Siz : Uint) is
        begin
!          --  This error is suppressed in ASIS mode to allow for different ASIS
!          --  back ends or ASIS-based tools to query the illegal clause.
! 
!          if not ASIS_Mode then
!             Error_Msg_Uint_1 := Min_Siz;
!             Error_Msg_NE (Size_Too_Small_Message, N, T);
!          end if;
        end Size_Too_Small_Error;
  
        --  Local variables
--- 12284,12291 ----
  
        procedure Size_Too_Small_Error (Min_Siz : Uint) is
        begin
!          Error_Msg_Uint_1 := Min_Siz;
!          Error_Msg_NE (Size_Too_Small_Message, N, T);
        end Size_Too_Small_Error;
  
        --  Local variables
*************** package body Sem_Ch13 is
*** 11222,11228 ****
              --  The subprogram is inherited (implicitly declared), it does not
              --  override and does not cover a primitive of an interface.
  
!             if Ekind_In (Subp_Id, E_Function, E_Procedure)
                and then Present (Alias (Subp_Id))
                and then No (Interface_Alias (Subp_Id))
                and then No (Overridden_Operation (Subp_Id))
--- 12494,12500 ----
              --  The subprogram is inherited (implicitly declared), it does not
              --  override and does not cover a primitive of an interface.
  
!             if Ekind (Subp_Id) in E_Function | E_Procedure
                and then Present (Alias (Subp_Id))
                and then No (Interface_Alias (Subp_Id))
                and then No (Overridden_Operation (Subp_Id))
*************** package body Sem_Ch13 is
*** 11292,11302 ****
        --  the primitives of the interfaces with the primitives that cover them.
        --  Note: These entities were originally generated only when generating
        --  code because their main purpose was to provide support to initialize
!       --  the secondary dispatch tables. They are now generated also when
!       --  compiling with no code generation to provide ASIS the relationship
!       --  between interface primitives and tagged type primitives. They are
!       --  also used to locate primitives covering interfaces when processing
!       --  generics (see Derive_Subprograms).
  
        --  This is not needed in the generic case
  
--- 12564,12572 ----
        --  the primitives of the interfaces with the primitives that cover them.
        --  Note: These entities were originally generated only when generating
        --  code because their main purpose was to provide support to initialize
!       --  the secondary dispatch tables. They are also used to locate
!       --  primitives covering interfaces when processing generics (see
!       --  Derive_Subprograms).
  
        --  This is not needed in the generic case
  
*************** package body Sem_Ch13 is
*** 11433,11448 ****
        Inside_Freezing_Actions := Inside_Freezing_Actions - 1;
  
        --  If we have a type with predicates, build predicate function. This is
!       --  not needed in the generic case, nor within TSS subprograms and other
!       --  predefined primitives. For a derived type, ensure that the parent
!       --  type is already frozen so that its predicate function has been
        --  constructed already. This is necessary if the parent is declared
        --  in a nested package and its own freeze point has not been reached.
  
        if Is_Type (E)
          and then Nongeneric_Case
-         and then not Within_Internal_Subprogram
          and then Has_Predicates (E)
        then
           declare
              Atyp : constant Entity_Id := Nearest_Ancestor (E);
--- 12703,12718 ----
        Inside_Freezing_Actions := Inside_Freezing_Actions - 1;
  
        --  If we have a type with predicates, build predicate function. This is
!       --  not needed in the generic case, nor within e.g. TSS subprograms and
!       --  other predefined primitives. For a derived type, ensure that the
!       --  parent type is already frozen so that its predicate function has been
        --  constructed already. This is necessary if the parent is declared
        --  in a nested package and its own freeze point has not been reached.
  
        if Is_Type (E)
          and then Nongeneric_Case
          and then Has_Predicates (E)
+         and then Predicate_Check_In_Scope (N)
        then
           declare
              Atyp : constant Entity_Id := Nearest_Ancestor (E);
*************** package body Sem_Ch13 is
*** 11472,11478 ****
          and then Scope (E) = Current_Scope
        then
           declare
-             A_Id  : Aspect_Id;
              Ritem : Node_Id;
  
           begin
--- 12742,12747 ----
*************** package body Sem_Ch13 is
*** 11484,11495 ****
                   and then Entity (Ritem) = E
                   and then Is_Delayed_Aspect (Ritem)
                 then
!                   A_Id := Get_Aspect_Id (Ritem);
! 
!                   if A_Id = Aspect_Dynamic_Predicate
!                     or else A_Id = Aspect_Predicate
!                     or else A_Id = Aspect_Priority
!                     or else A_Id = Aspect_CPU
                    then
                      --  Retrieve the visibility to components and discriminants
                      --  in order to properly analyze the aspects.
--- 12753,12762 ----
                   and then Entity (Ritem) = E
                   and then Is_Delayed_Aspect (Ritem)
                 then
!                   if Get_Aspect_Id (Ritem) in Aspect_CPU
!                                             | Aspect_Dynamic_Predicate
!                                             | Aspect_Predicate
!                                             | Aspect_Priority
                    then
                      --  Retrieve the visibility to components and discriminants
                      --  in order to properly analyze the aspects.
*************** package body Sem_Ch13 is
*** 11578,11584 ****
                    --  for aggregates, requires the expanded list of choices.
  
                    --  If the expander is not active, then we can't just clobber
!                   --  the list since it would invalidate the ASIS -gnatct tree.
                    --  So we have to rewrite the variant part with a Rewrite
                    --  call that replaces it with a copy and clobber the copy.
  
--- 12845,12851 ----
                    --  for aggregates, requires the expanded list of choices.
  
                    --  If the expander is not active, then we can't just clobber
!                   --  the list since it would invalidate the tree.
                    --  So we have to rewrite the variant part with a Rewrite
                    --  call that replaces it with a copy and clobber the copy.
  
*************** package body Sem_Ch13 is
*** 11649,11655 ****
                 --  to the others choice (it's the list we're replacing).
  
                 --  We only want to do this if the expander is active, since
!                --  we do not want to clobber the ASIS tree.
  
                 if Expander_Active then
                    declare
--- 12916,12922 ----
                 --  to the others choice (it's the list we're replacing).
  
                 --  We only want to do this if the expander is active, since
!                --  we do not want to clobber the tree.
  
                 if Expander_Active then
                    declare
*************** package body Sem_Ch13 is
*** 11687,11700 ****
           return No_Uint;
  
        elsif Align < 0 then
! 
!          --  This error is suppressed in ASIS mode to allow for different ASIS
!          --  back ends or ASIS-based tools to query the illegal clause.
! 
!          if not ASIS_Mode then
!             Error_Msg_N ("alignment value must be positive", Expr);
!          end if;
! 
           return No_Uint;
  
        --  If Alignment is specified to be 0, we treat it the same as 1
--- 12954,12960 ----
           return No_Uint;
  
        elsif Align < 0 then
!          Error_Msg_N ("alignment value must be positive", Expr);
           return No_Uint;
  
        --  If Alignment is specified to be 0, we treat it the same as 1
*************** package body Sem_Ch13 is
*** 11711,11725 ****
                 exit when M = Align;
  
                 if M > Align then
! 
!                   --  This error is suppressed in ASIS mode to allow for
!                   --  different ASIS back ends or ASIS-based tools to query the
!                   --  illegal clause.
! 
!                   if not ASIS_Mode then
!                      Error_Msg_N ("alignment value must be power of 2", Expr);
!                   end if;
! 
                    return No_Uint;
                 end if;
              end;
--- 12971,12977 ----
                 exit when M = Align;
  
                 if M > Align then
!                   Error_Msg_N ("alignment value must be power of 2", Expr);
                    return No_Uint;
                 end if;
              end;
*************** package body Sem_Ch13 is
*** 11729,11734 ****
--- 12981,13214 ----
        end if;
     end Get_Alignment_Value;
  
+    -----------------------------------
+    -- Has_Compatible_Representation --
+    -----------------------------------
+ 
+    function Has_Compatible_Representation
+      (Target_Type, Operand_Type : Entity_Id) return Boolean
+    is
+       T1 : constant Entity_Id := Underlying_Type (Target_Type);
+       T2 : constant Entity_Id := Underlying_Type (Operand_Type);
+ 
+    begin
+       --  A quick check, if base types are the same, then we definitely have
+       --  the same representation, because the subtype specific representation
+       --  attributes (Size and Alignment) do not affect representation from
+       --  the point of view of this test.
+ 
+       if Base_Type (T1) = Base_Type (T2) then
+          return True;
+ 
+       elsif Is_Private_Type (Base_Type (T2))
+         and then Base_Type (T1) = Full_View (Base_Type (T2))
+       then
+          return True;
+ 
+       --  If T2 is a generic actual it is declared as a subtype, so
+       --  check against its base type.
+ 
+       elsif Is_Generic_Actual_Type (T1)
+         and then Has_Compatible_Representation (Base_Type (T1), T2)
+       then
+          return True;
+       end if;
+ 
+       --  Tagged types always have the same representation, because it is not
+       --  possible to specify different representations for common fields.
+ 
+       if Is_Tagged_Type (T1) then
+          return True;
+       end if;
+ 
+       --  Representations are definitely different if conventions differ
+ 
+       if Convention (T1) /= Convention (T2) then
+          return False;
+       end if;
+ 
+       --  Representations are different if component alignments or scalar
+       --  storage orders differ.
+ 
+       if (Is_Record_Type (T1) or else Is_Array_Type (T1))
+             and then
+          (Is_Record_Type (T2) or else Is_Array_Type (T2))
+         and then
+          (Component_Alignment (T1) /= Component_Alignment (T2)
+            or else Reverse_Storage_Order (T1) /= Reverse_Storage_Order (T2))
+       then
+          return False;
+       end if;
+ 
+       --  For arrays, the only real issue is component size. If we know the
+       --  component size for both arrays, and it is the same, then that's
+       --  good enough to know we don't have a change of representation.
+ 
+       if Is_Array_Type (T1) then
+ 
+          --  In a view conversion, if the target type is an array type having
+          --  aliased components and the operand type is an array type having
+          --  unaliased components, then a new object is created (4.6(58.3/4)).
+ 
+          if Has_Aliased_Components (T1)
+            and then not Has_Aliased_Components (T2)
+          then
+             return False;
+          end if;
+ 
+          if Known_Component_Size (T1)
+            and then Known_Component_Size (T2)
+            and then Component_Size (T1) = Component_Size (T2)
+          then
+             return True;
+          end if;
+       end if;
+ 
+       --  For records, representations are different if reorderings differ
+ 
+       if Is_Record_Type (T1)
+         and then Is_Record_Type (T2)
+         and then No_Reordering (T1) /= No_Reordering (T2)
+       then
+          return False;
+       end if;
+ 
+       --  Types definitely have same representation if neither has non-standard
+       --  representation since default representations are always consistent.
+       --  If only one has non-standard representation, and the other does not,
+       --  then we consider that they do not have the same representation. They
+       --  might, but there is no way of telling early enough.
+ 
+       if Has_Non_Standard_Rep (T1) then
+          if not Has_Non_Standard_Rep (T2) then
+             return False;
+          end if;
+       else
+          return not Has_Non_Standard_Rep (T2);
+       end if;
+ 
+       --  Here the two types both have non-standard representation, and we need
+       --  to determine if they have the same non-standard representation.
+ 
+       --  For arrays, we simply need to test if the component sizes are the
+       --  same. Pragma Pack is reflected in modified component sizes, so this
+       --  check also deals with pragma Pack.
+ 
+       if Is_Array_Type (T1) then
+          return Component_Size (T1) = Component_Size (T2);
+ 
+       --  Case of record types
+ 
+       elsif Is_Record_Type (T1) then
+ 
+          --  Packed status must conform
+ 
+          if Is_Packed (T1) /= Is_Packed (T2) then
+             return False;
+ 
+          --  Otherwise we must check components. Typ2 maybe a constrained
+          --  subtype with fewer components, so we compare the components
+          --  of the base types.
+ 
+          else
+             Record_Case : declare
+                CD1, CD2 : Entity_Id;
+ 
+                function Same_Rep return Boolean;
+                --  CD1 and CD2 are either components or discriminants. This
+                --  function tests whether they have the same representation.
+ 
+                --------------
+                -- Same_Rep --
+                --------------
+ 
+                function Same_Rep return Boolean is
+                begin
+                   if No (Component_Clause (CD1)) then
+                      return No (Component_Clause (CD2));
+                   else
+                      --  Note: at this point, component clauses have been
+                      --  normalized to the default bit order, so that the
+                      --  comparison of Component_Bit_Offsets is meaningful.
+ 
+                      return
+                         Present (Component_Clause (CD2))
+                           and then
+                         Component_Bit_Offset (CD1) = Component_Bit_Offset (CD2)
+                           and then
+                         Esize (CD1) = Esize (CD2);
+                   end if;
+                end Same_Rep;
+ 
+             --  Start of processing for Record_Case
+ 
+             begin
+                if Has_Discriminants (T1) then
+ 
+                   --  The number of discriminants may be different if the
+                   --  derived type has fewer (constrained by values). The
+                   --  invisible discriminants retain the representation of
+                   --  the original, so the discrepancy does not per se
+                   --  indicate a different representation.
+ 
+                   CD1 := First_Discriminant (T1);
+                   CD2 := First_Discriminant (T2);
+                   while Present (CD1) and then Present (CD2) loop
+                      if not Same_Rep then
+                         return False;
+                      else
+                         Next_Discriminant (CD1);
+                         Next_Discriminant (CD2);
+                      end if;
+                   end loop;
+                end if;
+ 
+                CD1 := First_Component (Underlying_Type (Base_Type (T1)));
+                CD2 := First_Component (Underlying_Type (Base_Type (T2)));
+                while Present (CD1) loop
+                   if not Same_Rep then
+                      return False;
+                   else
+                      Next_Component (CD1);
+                      Next_Component (CD2);
+                   end if;
+                end loop;
+ 
+                return True;
+             end Record_Case;
+          end if;
+ 
+       --  For enumeration types, we must check each literal to see if the
+       --  representation is the same. Note that we do not permit enumeration
+       --  representation clauses for Character and Wide_Character, so these
+       --  cases were already dealt with.
+ 
+       elsif Is_Enumeration_Type (T1) then
+          Enumeration_Case : declare
+             L1, L2 : Entity_Id;
+ 
+          begin
+             L1 := First_Literal (T1);
+             L2 := First_Literal (T2);
+             while Present (L1) loop
+                if Enumeration_Rep (L1) /= Enumeration_Rep (L2) then
+                   return False;
+                else
+                   Next_Literal (L1);
+                   Next_Literal (L2);
+                end if;
+             end loop;
+ 
+             return True;
+          end Enumeration_Case;
+ 
+       --  Any other types have the same representation for these purposes
+ 
+       else
+          return True;
+       end if;
+    end Has_Compatible_Representation;
+ 
     -------------------------------------
     -- Inherit_Aspects_At_Freeze_Point --
     -------------------------------------
*************** package body Sem_Ch13 is
*** 11740,11748 ****
        --  specification node whose correponding pragma (if any) is present in
        --  the Rep Item chain of the entity it has been specified to.
  
-       function Rep_Item_Entity (Rep_Item : Node_Id) return Entity_Id;
-       --  Return the entity for which Rep_Item is specified
- 
        --------------------------------------------------
        -- Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item --
        --------------------------------------------------
--- 13220,13225 ----
*************** package body Sem_Ch13 is
*** 11753,11779 ****
        begin
           return
             Nkind (Rep_Item) = N_Pragma
!              or else Present_In_Rep_Item
!                        (Entity (Rep_Item), Aspect_Rep_Item (Rep_Item));
        end Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item;
  
-       ---------------------
-       -- Rep_Item_Entity --
-       ---------------------
- 
-       function Rep_Item_Entity (Rep_Item : Node_Id) return Entity_Id is
-       begin
-          if Nkind (Rep_Item) = N_Aspect_Specification then
-             return Entity (Rep_Item);
- 
-          else
-             pragma Assert (Nkind_In (Rep_Item,
-                                      N_Attribute_Definition_Clause,
-                                      N_Pragma));
-             return Entity (Name (Rep_Item));
-          end if;
-       end Rep_Item_Entity;
- 
     --  Start of processing for Inherit_Aspects_At_Freeze_Point
  
     begin
--- 13230,13239 ----
        begin
           return
             Nkind (Rep_Item) = N_Pragma
!              or else
!            Present_In_Rep_Item (Entity (Rep_Item), Aspect_Rep_Item (Rep_Item));
        end Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item;
  
     --  Start of processing for Inherit_Aspects_At_Freeze_Point
  
     begin
*************** package body Sem_Ch13 is
*** 11899,11908 ****
           Set_Treat_As_Volatile (Typ);
        end if;
  
!       --  Volatile_Full_Access
  
        if not Has_Rep_Item (Typ, Name_Volatile_Full_Access, False)
!         and then Has_Rep_Pragma (Typ, Name_Volatile_Full_Access)
          and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
                     (Get_Rep_Item (Typ, Name_Volatile_Full_Access))
        then
--- 13359,13370 ----
           Set_Treat_As_Volatile (Typ);
        end if;
  
!       --  Volatile_Full_Access and Full_Access_Only
  
        if not Has_Rep_Item (Typ, Name_Volatile_Full_Access, False)
!         and then not Has_Rep_Item (Typ, Name_Full_Access_Only, False)
!         and then (Has_Rep_Item (Typ, Name_Volatile_Full_Access)
!                     or else Has_Rep_Item (Typ, Name_Full_Access_Only))
          and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
                     (Get_Rep_Item (Typ, Name_Volatile_Full_Access))
        then
*************** package body Sem_Ch13 is
*** 11959,11981 ****
  
              --  Bit_Order
  
!             if Is_Record_Type (Typ) then
                 if not Has_Rep_Item (Typ, Name_Bit_Order, False)
                   and then Has_Rep_Item (Typ, Name_Bit_Order)
                 then
                    Set_Reverse_Bit_Order (Bas_Typ,
!                     Reverse_Bit_Order (Rep_Item_Entity
!                       (Get_Rep_Item (Typ, Name_Bit_Order))));
                 end if;
              end if;
  
              --  Scalar_Storage_Order
  
-             --  Note: the aspect is specified on a first subtype, but recorded
-             --  in a flag of the base type!
- 
              if (Is_Record_Type (Typ) or else Is_Array_Type (Typ))
!                  and then Typ = Bas_Typ
              then
                 --  For a type extension, always inherit from parent; otherwise
                 --  inherit if no default applies. Note: we do not check for
--- 13421,13440 ----
  
              --  Bit_Order
  
!             if Is_Record_Type (Typ) and then Typ = Bas_Typ then
                 if not Has_Rep_Item (Typ, Name_Bit_Order, False)
                   and then Has_Rep_Item (Typ, Name_Bit_Order)
                 then
                    Set_Reverse_Bit_Order (Bas_Typ,
!                     Reverse_Bit_Order
!                       (Implementation_Base_Type (Etype (Bas_Typ))));
                 end if;
              end if;
  
              --  Scalar_Storage_Order
  
              if (Is_Record_Type (Typ) or else Is_Array_Type (Typ))
!               and then Typ = Bas_Typ
              then
                 --  For a type extension, always inherit from parent; otherwise
                 --  inherit if no default applies. Note: we do not check for
*************** package body Sem_Ch13 is
*** 12043,12073 ****
  
     function Is_Operational_Item (N : Node_Id) return Boolean is
     begin
!       if Nkind (N) /= N_Attribute_Definition_Clause then
!          return False;
! 
!       else
!          declare
!             Id : constant Attribute_Id := Get_Attribute_Id (Chars (N));
!          begin
! 
!             --  List of operational items is given in AARM 13.1(8.mm/1).
!             --  It is clearly incomplete, as it does not include iterator
!             --  aspects, among others.
  
!             return    Id = Attribute_Constant_Indexing
!               or else Id = Attribute_Default_Iterator
!               or else Id = Attribute_Implicit_Dereference
!               or else Id = Attribute_Input
!               or else Id = Attribute_Iterator_Element
!               or else Id = Attribute_Iterable
!               or else Id = Attribute_Output
!               or else Id = Attribute_Read
!               or else Id = Attribute_Variable_Indexing
!               or else Id = Attribute_Write
!               or else Id = Attribute_External_Tag;
!          end;
!       end if;
     end Is_Operational_Item;
  
     -------------------------
--- 13502,13524 ----
  
     function Is_Operational_Item (N : Node_Id) return Boolean is
     begin
!       --  List of operational items is given in AARM 13.1(8.mm/1). It is
!       --  clearly incomplete, as it does not include iterator aspects, among
!       --  others.
  
!       return Nkind (N) = N_Attribute_Definition_Clause
!           and then
!         Get_Attribute_Id (Chars (N)) in Attribute_Constant_Indexing
!                                       | Attribute_External_Tag
!                                       | Attribute_Default_Iterator
!                                       | Attribute_Implicit_Dereference
!                                       | Attribute_Input
!                                       | Attribute_Iterable
!                                       | Attribute_Iterator_Element
!                                       | Attribute_Output
!                                       | Attribute_Read
!                                       | Attribute_Variable_Indexing
!                                       | Attribute_Write;
     end Is_Operational_Item;
  
     -------------------------
*************** package body Sem_Ch13 is
*** 12086,12107 ****
        --  the alternatives are static (have all static choices, and a static
        --  expression).
  
-       function All_Static_Choices (L : List_Id) return Boolean;
-       --  Returns true if all elements of the list are OK static choices
-       --  as defined below for Is_Static_Choice. Used for case expression
-       --  alternatives and for the right operand of a membership test. An
-       --  others_choice is static if the corresponding expression is static.
-       --  The staticness of the bounds is checked separately.
- 
-       function Is_Static_Choice (N : Node_Id) return Boolean;
-       --  Returns True if N represents a static choice (static subtype, or
-       --  static subtype indication, or static expression, or static range).
-       --
-       --  Note that this is a bit more inclusive than we actually need
-       --  (in particular membership tests do not allow the use of subtype
-       --  indications). But that doesn't matter, we have already checked
-       --  that the construct is legal to get this far.
- 
        function Is_Type_Ref (N : Node_Id) return Boolean;
        pragma Inline (Is_Type_Ref);
        --  Returns True if N is a reference to the type for the predicate in the
--- 13537,13542 ----
*************** package body Sem_Ch13 is
*** 12137,12177 ****
           return True;
        end All_Static_Case_Alternatives;
  
-       ------------------------
-       -- All_Static_Choices --
-       ------------------------
- 
-       function All_Static_Choices (L : List_Id) return Boolean is
-          N : Node_Id;
- 
-       begin
-          N := First (L);
-          while Present (N) loop
-             if not Is_Static_Choice (N) then
-                return False;
-             end if;
- 
-             Next (N);
-          end loop;
- 
-          return True;
-       end All_Static_Choices;
- 
-       ----------------------
-       -- Is_Static_Choice --
-       ----------------------
- 
-       function Is_Static_Choice (N : Node_Id) return Boolean is
-       begin
-          return Nkind (N) = N_Others_Choice
-            or else Is_OK_Static_Expression (N)
-            or else (Is_Entity_Name (N) and then Is_Type (Entity (N))
-                      and then Is_OK_Static_Subtype (Entity (N)))
-            or else (Nkind (N) = N_Subtype_Indication
-                      and then Is_OK_Static_Subtype (Entity (N)))
-            or else (Nkind (N) = N_Range and then Is_OK_Static_Range (N));
-       end Is_Static_Choice;
- 
        -----------------
        -- Is_Type_Ref --
        -----------------
--- 13572,13577 ----
*************** package body Sem_Ch13 is
*** 12200,12210 ****
        --  for a static membership test.
  
        elsif Nkind (Expr) in N_Membership_Test
!         and then ((Present (Right_Opnd (Expr))
!                     and then Is_Static_Choice (Right_Opnd (Expr)))
!                   or else
!                     (Present (Alternatives (Expr))
!                       and then All_Static_Choices (Alternatives (Expr))))
        then
           return True;
  
--- 13600,13606 ----
        --  for a static membership test.
  
        elsif Nkind (Expr) in N_Membership_Test
!         and then All_Membership_Choices_Static (Expr)
        then
           return True;
  
*************** package body Sem_Ch13 is
*** 12248,12254 ****
        --  20. A call to a predefined boolean logical operator, where each
        --  operand is predicate-static.
  
!       elsif (Nkind_In (Expr, N_Op_And, N_Op_Or, N_Op_Xor)
                and then Is_Predicate_Static (Left_Opnd (Expr), Nam)
                and then Is_Predicate_Static (Right_Opnd (Expr), Nam))
          or else
--- 13644,13650 ----
        --  20. A call to a predefined boolean logical operator, where each
        --  operand is predicate-static.
  
!       elsif (Nkind (Expr) in N_Op_And | N_Op_Or | N_Op_Xor
                and then Is_Predicate_Static (Left_Opnd (Expr), Nam)
                and then Is_Predicate_Static (Right_Opnd (Expr), Nam))
          or else
*************** package body Sem_Ch13 is
*** 12307,12312 ****
--- 13703,13723 ----
        end if;
     end Is_Predicate_Static;
  
+    ----------------------
+    -- Is_Static_Choice --
+    ----------------------
+ 
+    function Is_Static_Choice (N : Node_Id) return Boolean is
+    begin
+       return Nkind (N) = N_Others_Choice
+         or else Is_OK_Static_Expression (N)
+         or else (Is_Entity_Name (N) and then Is_Type (Entity (N))
+                   and then Is_OK_Static_Subtype (Entity (N)))
+         or else (Nkind (N) = N_Subtype_Indication
+                   and then Is_OK_Static_Subtype (Entity (N)))
+         or else (Nkind (N) = N_Range and then Is_OK_Static_Range (N));
+    end Is_Static_Choice;
+ 
     ------------------------------
     -- Is_Type_Related_Rep_Item --
     ------------------------------
*************** package body Sem_Ch13 is
*** 12315,12331 ****
     begin
        case Nkind (N) is
           when N_Attribute_Definition_Clause =>
!             declare
!                Id : constant Attribute_Id := Get_Attribute_Id (Chars (N));
!                --  See AARM 13.1(8.f-8.x) list items that end in "clause"
!                --  ???: include any GNAT-defined attributes here?
!             begin
!                return    Id = Attribute_Component_Size
!                  or else Id = Attribute_Bit_Order
!                  or else Id = Attribute_Storage_Pool
!                  or else Id = Attribute_Stream_Size
!                  or else Id = Attribute_Machine_Radix;
!             end;
  
           when N_Pragma =>
              case Get_Pragma_Id (N) is
--- 13726,13738 ----
     begin
        case Nkind (N) is
           when N_Attribute_Definition_Clause =>
!             --  See AARM 13.1(8.f-8.x) list items that end in "clause"
!             --  ???: include any GNAT-defined attributes here?
!             return Get_Attribute_Id (Chars (N)) in Attribute_Bit_Order
!                                                  | Attribute_Component_Size
!                                                  | Attribute_Machine_Radix
!                                                  | Attribute_Storage_Pool
!                                                  | Attribute_Stream_Size;
  
           when N_Pragma =>
              case Get_Pragma_Id (N) is
*************** package body Sem_Ch13 is
*** 12369,12381 ****
        pragma Assert (Ignore_Rep_Clauses);
  
        --  Note: we use Replace rather than Rewrite, because we don't want
!       --  ASIS to be able to use Original_Node to dig out the (undecorated)
        --  rep clause that is being replaced.
  
        Replace (N, Make_Null_Statement (Sloc (N)));
  
        --  The null statement must be marked as not coming from source. This is
!       --  so that ASIS ignores it, and also the back end does not expect bogus
        --  "from source" null statements in weird places (e.g. in declarative
        --  regions where such null statements are not allowed).
  
--- 13776,13788 ----
        pragma Assert (Ignore_Rep_Clauses);
  
        --  Note: we use Replace rather than Rewrite, because we don't want
!       --  tools to be able to use Original_Node to dig out the (undecorated)
        --  rep clause that is being replaced.
  
        Replace (N, Make_Null_Statement (Sloc (N)));
  
        --  The null statement must be marked as not coming from source. This is
!       --  so that tools ignore it, and also the back end does not expect bogus
        --  "from source" null statements in weird places (e.g. in declarative
        --  regions where such null statements are not allowed).
  
*************** package body Sem_Ch13 is
*** 12601,12606 ****
--- 14008,14145 ----
        return S;
     end Minimum_Size;
  
+    ------------------------------
+    -- New_Put_Image_Subprogram --
+    ------------------------------
+ 
+    procedure New_Put_Image_Subprogram
+      (N     : Node_Id;
+       Ent   : Entity_Id;
+       Subp  : Entity_Id)
+    is
+       Loc       : constant Source_Ptr := Sloc (N);
+       Sname     : constant Name_Id    :=
+         Make_TSS_Name (Base_Type (Ent), TSS_Put_Image);
+       Subp_Id   : Entity_Id;
+       Subp_Decl : Node_Id;
+       F         : Entity_Id;
+       Etyp      : Entity_Id;
+ 
+       Defer_Declaration : constant Boolean :=
+                             Is_Tagged_Type (Ent) or else Is_Private_Type (Ent);
+       --  For a tagged type, there is a declaration at the freeze point, and
+       --  we must generate only a completion of this declaration. We do the
+       --  same for private types, because the full view might be tagged.
+       --  Otherwise we generate a declaration at the point of the attribute
+       --  definition clause. If the attribute definition comes from an aspect
+       --  specification the declaration is part of the freeze actions of the
+       --  type.
+ 
+       function Build_Spec return Node_Id;
+       --  Used for declaration and renaming declaration, so that this is
+       --  treated as a renaming_as_body.
+ 
+       ----------------
+       -- Build_Spec --
+       ----------------
+ 
+       function Build_Spec return Node_Id is
+          Formals : List_Id;
+          Spec    : Node_Id;
+          T_Ref   : constant Node_Id := New_Occurrence_Of (Etyp, Loc);
+ 
+       begin
+          Subp_Id := Make_Defining_Identifier (Loc, Sname);
+ 
+          --  S : Sink'Class
+ 
+          Formals := New_List (
+                       Make_Parameter_Specification (Loc,
+                         Defining_Identifier =>
+                           Make_Defining_Identifier (Loc, Name_S),
+                         In_Present          => True,
+                         Out_Present         => True,
+                         Parameter_Type      =>
+                           New_Occurrence_Of (Etype (F), Loc)));
+ 
+          --  V : T
+ 
+          Append_To (Formals,
+            Make_Parameter_Specification (Loc,
+              Defining_Identifier => Make_Defining_Identifier (Loc, Name_V),
+              Parameter_Type      => T_Ref));
+ 
+          Spec :=
+            Make_Procedure_Specification (Loc,
+              Defining_Unit_Name       => Subp_Id,
+              Parameter_Specifications => Formals);
+ 
+          return Spec;
+       end Build_Spec;
+ 
+    --  Start of processing for New_Put_Image_Subprogram
+ 
+    begin
+       F := First_Formal (Subp);
+ 
+       Etyp := Etype (Next_Formal (F));
+ 
+       --  Prepare subprogram declaration and insert it as an action on the
+       --  clause node. The visibility for this entity is used to test for
+       --  visibility of the attribute definition clause (in the sense of
+       --  8.3(23) as amended by AI-195).
+ 
+       if not Defer_Declaration then
+          Subp_Decl :=
+            Make_Subprogram_Declaration (Loc,
+              Specification => Build_Spec);
+ 
+       --  For a tagged type, there is always a visible declaration for the
+       --  Put_Image TSS (it is a predefined primitive operation), and the
+       --  completion of this declaration occurs at the freeze point, which is
+       --  not always visible at places where the attribute definition clause is
+       --  visible. So, we create a dummy entity here for the purpose of
+       --  tracking the visibility of the attribute definition clause itself.
+ 
+       else
+          Subp_Id :=
+            Make_Defining_Identifier (Loc, New_External_Name (Sname, 'V'));
+          Subp_Decl :=
+            Make_Object_Declaration (Loc,
+              Defining_Identifier => Subp_Id,
+              Object_Definition   => New_Occurrence_Of (Standard_Boolean, Loc));
+       end if;
+ 
+       if not Defer_Declaration
+         and then From_Aspect_Specification (N)
+         and then Has_Delayed_Freeze (Ent)
+       then
+          Append_Freeze_Action (Ent, Subp_Decl);
+ 
+       else
+          Insert_Action (N, Subp_Decl);
+          Set_Entity (N, Subp_Id);
+       end if;
+ 
+       Subp_Decl :=
+         Make_Subprogram_Renaming_Declaration (Loc,
+           Specification => Build_Spec,
+           Name          => New_Occurrence_Of (Subp, Loc));
+ 
+       if Defer_Declaration then
+          Set_TSS (Base_Type (Ent), Subp_Id);
+ 
+       else
+          if From_Aspect_Specification (N) then
+             Append_Freeze_Action (Ent, Subp_Decl);
+          else
+             Insert_Action (N, Subp_Decl);
+          end if;
+ 
+          Copy_TSS (Subp_Id, Base_Type (Ent));
+       end if;
+    end New_Put_Image_Subprogram;
+ 
     ---------------------------
     -- New_Stream_Subprogram --
     ---------------------------
*************** package body Sem_Ch13 is
*** 12748,12753 ****
--- 14287,14301 ----
        end if;
     end New_Stream_Subprogram;
  
+    ----------------------
+    -- No_Type_Rep_Item --
+    ----------------------
+ 
+    procedure No_Type_Rep_Item (N : Node_Id) is
+    begin
+       Error_Msg_N ("|type-related representation item not permitted!", N);
+    end No_Type_Rep_Item;
+ 
     --------------
     -- Pop_Type --
     --------------
*************** package body Sem_Ch13 is
*** 12818,12824 ****
  
     function Rep_Item_Too_Early (T : Entity_Id; N : Node_Id) return Boolean is
        function Has_Generic_Parent (E : Entity_Id) return Boolean;
!       --  Return True if any ancestor is a generic type
  
        ------------------------
        -- Has_Generic_Parent --
--- 14366,14372 ----
  
     function Rep_Item_Too_Early (T : Entity_Id; N : Node_Id) return Boolean is
        function Has_Generic_Parent (E : Entity_Id) return Boolean;
!       --  Return True if R or any ancestor is a generic type
  
        ------------------------
        -- Has_Generic_Parent --
*************** package body Sem_Ch13 is
*** 12828,12833 ****
--- 14376,14385 ----
           Ancestor_Type : Entity_Id := Etype (E);
  
        begin
+          if Is_Generic_Type (E) then
+             return True;
+          end if;
+ 
           while Present (Ancestor_Type)
             and then not Is_Generic_Type (Ancestor_Type)
             and then Etype (Ancestor_Type) /= Ancestor_Type
*************** package body Sem_Ch13 is
*** 12900,12916 ****
        N     : Node_Id;
        FOnly : Boolean := False) return Boolean
     is
-       function Is_Derived_Type_With_Constraint return Boolean;
-       --  Check whether T is a derived type with an explicit constraint, in
-       --  which case the constraint has frozen the type and the item is too
-       --  late. This compensates for the fact that for derived scalar types
-       --  we freeze the base type unconditionally on account of a long-standing
-       --  issue in gigi.
- 
-       procedure No_Type_Rep_Item;
-       --  Output message indicating that no type-related aspects can be
-       --  specified due to some property of the parent type.
- 
        procedure Too_Late;
        --  Output message for an aspect being specified too late
  
--- 14452,14457 ----
*************** package body Sem_Ch13 is
*** 12921,12952 ****
        --  document the requirement in the spec of Rep_Item_Too_Late that
        --  if True is returned, then the rep item must be completely ignored???
  
-       --------------------------------------
-       --  Is_Derived_Type_With_Constraint --
-       --------------------------------------
- 
-       function Is_Derived_Type_With_Constraint return Boolean is
-          Decl : constant Node_Id := Declaration_Node (T);
- 
-       begin
-          return Is_Derived_Type (T)
-            and then Is_Frozen (Base_Type (T))
-            and then Is_Enumeration_Type (T)
-            and then False
-            and then Nkind (N) = N_Enumeration_Representation_Clause
-            and then Nkind (Decl) = N_Subtype_Declaration
-            and then not Is_Entity_Name (Subtype_Indication (Decl));
-       end Is_Derived_Type_With_Constraint;
- 
-       ----------------------
-       -- No_Type_Rep_Item --
-       ----------------------
- 
-       procedure No_Type_Rep_Item is
-       begin
-          Error_Msg_N ("|type-related representation item not permitted!", N);
-       end No_Type_Rep_Item;
- 
        --------------
        -- Too_Late --
        --------------
--- 14462,14467 ----
*************** package body Sem_Ch13 is
*** 12972,12980 ****
     begin
        --  First make sure entity is not frozen (RM 13.1(9))
  
!       if (Is_Frozen (T)
!            or else (Is_Type (T)
!                      and then Is_Derived_Type_With_Constraint))
  
          --  Exclude imported types, which may be frozen if they appear in a
          --  representation clause for a local type.
--- 14487,14493 ----
     begin
        --  First make sure entity is not frozen (RM 13.1(9))
  
!       if Is_Frozen (T)
  
          --  Exclude imported types, which may be frozen if they appear in a
          --  representation clause for a local type.
*************** package body Sem_Ch13 is
*** 12991,12997 ****
           --  A self-referential aspect is illegal if it forces freezing the
           --  entity before the corresponding pragma has been analyzed.
  
!          if Nkind_In (N, N_Attribute_Definition_Clause, N_Pragma)
             and then From_Aspect_Specification (N)
           then
              Error_Msg_NE
--- 14504,14510 ----
           --  A self-referential aspect is illegal if it forces freezing the
           --  entity before the corresponding pragma has been analyzed.
  
!          if Nkind (N) in N_Attribute_Definition_Clause | N_Pragma
             and then From_Aspect_Specification (N)
           then
              Error_Msg_NE
*************** package body Sem_Ch13 is
*** 13013,13021 ****
           return True;
  
        --  Check for case of untagged derived type whose parent either has
!       --  primitive operations, or is a by reference type (RM 13.1(10)). In
!       --  this case we do not output a Too_Late message, since there is no
!       --  earlier point where the rep item could be placed to make it legal.
  
        elsif Is_Type (T)
          and then not FOnly
--- 14526,14536 ----
           return True;
  
        --  Check for case of untagged derived type whose parent either has
!       --  primitive operations (pre Ada 202x), or is a by-reference type (RM
!       --  13.1(10)). In this case we do not output a Too_Late message, since
!       --  there is no earlier point where the rep item could be placed to make
!       --  it legal.
!       --  ??? Confirming representation clauses should be allowed here.
  
        elsif Is_Type (T)
          and then not FOnly
*************** package body Sem_Ch13 is
*** 13024,13047 ****
        then
           Parent_Type := Etype (Base_Type (T));
  
!          if Has_Primitive_Operations (Parent_Type) then
!             No_Type_Rep_Item;
! 
!             if not Relaxed_RM_Semantics then
!                Error_Msg_NE
!                  ("\parent type & has primitive operations!", N, Parent_Type);
!             end if;
  
              return True;
  
           elsif Is_By_Reference_Type (Parent_Type) then
!             No_Type_Rep_Item;
! 
!             if not Relaxed_RM_Semantics then
!                Error_Msg_NE
!                  ("\parent type & is a by reference type!", N, Parent_Type);
!             end if;
! 
              return True;
           end if;
        end if;
--- 14539,14560 ----
        then
           Parent_Type := Etype (Base_Type (T));
  
!          if Relaxed_RM_Semantics then
!             null;
  
+          elsif Ada_Version <= Ada_2012
+            and then Has_Primitive_Operations (Parent_Type)
+          then
+             Error_Msg_N
+               ("|representation item not permitted before Ada 202x!", N);
+             Error_Msg_NE
+               ("\parent type & has primitive operations!", N, Parent_Type);
              return True;
  
           elsif Is_By_Reference_Type (Parent_Type) then
!             No_Type_Rep_Item (N);
!             Error_Msg_NE
!               ("\parent type & is a by-reference type!", N, Parent_Type);
              return True;
           end if;
        end if;
*************** package body Sem_Ch13 is
*** 13117,13124 ****
           declare
              Pname : constant Name_Id := Pragma_Name (N);
           begin
!             if Nam_In (Pname, Name_Convention, Name_Import,   Name_Export,
!                               Name_External,   Name_Interface)
              then
                 return False;
              end if;
--- 14630,14637 ----
           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;
*************** package body Sem_Ch13 is
*** 13142,13152 ****
  
        function Visible_Component (Comp : Name_Id) return Entity_Id;
        --  Given an identifier in the expression, check whether there is a
!       --  discriminant or component of the type that is directy visible, and
!       --  rewrite it as the corresponding selected component of the formal of
!       --  the subprogram. The entity is located by a sequential search, which
!       --  seems acceptable given the typical size of component lists and check
!       --  expressions. Possible optimization ???
  
        ----------------------
        -- Replace_Type_Ref --
--- 14655,14663 ----
  
        function Visible_Component (Comp : Name_Id) return Entity_Id;
        --  Given an identifier in the expression, check whether there is a
!       --  discriminant, component, protected procedure, or entry of the type
!       --  that is directy visible, and rewrite it as the corresponding selected
!       --  component of the formal of the subprogram.
  
        ----------------------
        -- Replace_Type_Ref --
*************** package body Sem_Ch13 is
*** 13321,13334 ****
  
        function Visible_Component (Comp : Name_Id) return Entity_Id is
           E : Entity_Id;
- 
        begin
!          --  Types with nameable components are records and discriminated
!          --  private types.
  
!          if Ekind (T) = E_Record_Type
             or else (Is_Private_Type (T) and then Has_Discriminants (T))
           then
              E := First_Entity (T);
              while Present (E) loop
                 if Comes_From_Source (E) and then Chars (E) = Comp then
--- 14832,14851 ----
  
        function Visible_Component (Comp : Name_Id) return Entity_Id is
           E : Entity_Id;
        begin
!          --  Types with nameable components are record, task, and protected
!          --  types, and discriminated private types.
  
!          if Ekind (T) in E_Record_Type
!                        | E_Task_Type
!                        | E_Protected_Type
             or else (Is_Private_Type (T) and then Has_Discriminants (T))
           then
+             --  This is a sequential search, which seems acceptable
+             --  efficiency-wise, given the typical size of component
+             --  lists, protected operation lists, task item lists, and
+             --  check expressions.
+ 
              E := First_Entity (T);
              while Present (E) loop
                 if Comes_From_Source (E) and then Chars (E) = Comp then
*************** package body Sem_Ch13 is
*** 13339,13345 ****
              end loop;
           end if;
  
!          --  Nothing by that name, or the type has no components
  
           return Empty;
        end Visible_Component;
--- 14856,14862 ----
              end loop;
           end if;
  
!          --  Nothing by that name
  
           return Empty;
        end Visible_Component;
*************** package body Sem_Ch13 is
*** 13364,13372 ****
        --  introduce a local identifier that would require proper expansion to
        --  handle properly.
  
-       --  In ASIS_Mode we preserve the entity in the source because there is
-       --  no subsequent expansion to decorate the tree.
- 
        ------------------
        -- Resolve_Name --
        ------------------
--- 14881,14886 ----
*************** package body Sem_Ch13 is
*** 13393,13411 ****
                        or else N /= Selector_Name (Parent (N)))
           then
              Find_Direct_Name (N);
! 
!             --  In ASIS mode we must analyze overloaded identifiers to ensure
!             --  their correct decoration because expansion is disabled (and
!             --  the expansion of freeze nodes takes care of resolving aspect
!             --  expressions).
! 
!             if ASIS_Mode then
!                if Is_Overloaded (N) then
!                   Analyze (Parent (N));
!                end if;
!             else
!                Set_Entity (N, Empty);
!             end if;
  
           --  The name is component association needs no resolution.
  
--- 14907,14913 ----
                        or else N /= Selector_Name (Parent (N)))
           then
              Find_Direct_Name (N);
!             Set_Entity (N, Empty);
  
           --  The name is component association needs no resolution.
  
*************** package body Sem_Ch13 is
*** 13442,13447 ****
--- 14944,14956 ----
              begin
                 case A_Id is
  
+                   when Aspect_Aggregate =>
+                      Resolve_Aspect_Aggregate (Entity (ASN), Expr);
+ 
+                   when Aspect_Stable_Properties =>
+                      Resolve_Aspect_Stable_Properties
+                        (Entity (ASN), Expr, Class_Present (ASN));
+ 
                    --  For now we only deal with aspects that do not generate
                    --  subprograms, or that may mention current instances of
                    --  types. These will require special handling (???TBD).
*************** package body Sem_Ch13 is
*** 13536,13759 ****
              end;
           end if;
  
!          ASN := Next_Rep_Item (ASN);
        end loop;
     end Resolve_Aspect_Expressions;
  
!    -------------------------
!    -- Same_Representation --
!    -------------------------
  
!    function Same_Representation (Typ1, Typ2 : Entity_Id) return Boolean is
!       T1 : constant Entity_Id := Underlying_Type (Typ1);
!       T2 : constant Entity_Id := Underlying_Type (Typ2);
  
     begin
!       --  A quick check, if base types are the same, then we definitely have
!       --  the same representation, because the subtype specific representation
!       --  attributes (Size and Alignment) do not affect representation from
!       --  the point of view of this test.
  
!       if Base_Type (T1) = Base_Type (T2) then
!          return True;
  
!       elsif Is_Private_Type (Base_Type (T2))
!         and then Base_Type (T1) = Full_View (Base_Type (T2))
!       then
!          return True;
  
!       --  If T2 is a generic actual it is declared as a subtype, so
!       --  check against its base type.
  
!       elsif Is_Generic_Actual_Type (T1)
!         and then Same_Representation (Base_Type (T1), T2)
!       then
!          return True;
!       end if;
  
!       --  Tagged types always have the same representation, because it is not
!       --  possible to specify different representations for common fields.
  
!       if Is_Tagged_Type (T1) then
!          return True;
!       end if;
  
!       --  Representations are definitely different if conventions differ
  
!       if Convention (T1) /= Convention (T2) then
!          return False;
!       end if;
  
!       --  Representations are different if component alignments or scalar
!       --  storage orders differ.
  
!       if (Is_Record_Type (T1) or else Is_Array_Type (T1))
!             and then
!          (Is_Record_Type (T2) or else Is_Array_Type (T2))
!         and then
!          (Component_Alignment (T1) /= Component_Alignment (T2)
!            or else Reverse_Storage_Order (T1) /= Reverse_Storage_Order (T2))
!       then
!          return False;
!       end if;
  
!       --  For arrays, the only real issue is component size. If we know the
!       --  component size for both arrays, and it is the same, then that's
!       --  good enough to know we don't have a change of representation.
  
!       if Is_Array_Type (T1) then
!          if Known_Component_Size (T1)
!            and then Known_Component_Size (T2)
!            and then Component_Size (T1) = Component_Size (T2)
!          then
!             return True;
!          end if;
        end if;
  
!       --  For records, representations are different if reorderings differ
  
!       if Is_Record_Type (T1)
!         and then Is_Record_Type (T2)
!         and then No_Reordering (T1) /= No_Reordering (T2)
        then
!          return False;
        end if;
  
!       --  Types definitely have same representation if neither has non-standard
!       --  representation since default representations are always consistent.
!       --  If only one has non-standard representation, and the other does not,
!       --  then we consider that they do not have the same representation. They
!       --  might, but there is no way of telling early enough.
  
!       if Has_Non_Standard_Rep (T1) then
!          if not Has_Non_Standard_Rep (T2) then
!             return False;
!          end if;
!       else
!          return not Has_Non_Standard_Rep (T2);
        end if;
  
!       --  Here the two types both have non-standard representation, and we need
!       --  to determine if they have the same non-standard representation.
  
!       --  For arrays, we simply need to test if the component sizes are the
!       --  same. Pragma Pack is reflected in modified component sizes, so this
!       --  check also deals with pragma Pack.
  
!       if Is_Array_Type (T1) then
!          return Component_Size (T1) = Component_Size (T2);
  
!       --  Case of record types
  
!       elsif Is_Record_Type (T1) then
  
!          --  Packed status must conform
  
!          if Is_Packed (T1) /= Is_Packed (T2) then
!             return False;
  
!          --  Otherwise we must check components. Typ2 maybe a constrained
!          --  subtype with fewer components, so we compare the components
!          --  of the base types.
  
!          else
!             Record_Case : declare
!                CD1, CD2 : Entity_Id;
  
!                function Same_Rep return Boolean;
!                --  CD1 and CD2 are either components or discriminants. This
!                --  function tests whether they have the same representation.
  
!                --------------
!                -- Same_Rep --
!                --------------
  
!                function Same_Rep return Boolean is
!                begin
!                   if No (Component_Clause (CD1)) then
!                      return No (Component_Clause (CD2));
!                   else
!                      --  Note: at this point, component clauses have been
!                      --  normalized to the default bit order, so that the
!                      --  comparison of Component_Bit_Offsets is meaningful.
  
!                      return
!                         Present (Component_Clause (CD2))
!                           and then
!                         Component_Bit_Offset (CD1) = Component_Bit_Offset (CD2)
!                           and then
!                         Esize (CD1) = Esize (CD2);
!                   end if;
!                end Same_Rep;
  
!             --  Start of processing for Record_Case
  
!             begin
!                if Has_Discriminants (T1) then
  
!                   --  The number of discriminants may be different if the
!                   --  derived type has fewer (constrained by values). The
!                   --  invisible discriminants retain the representation of
!                   --  the original, so the discrepancy does not per se
!                   --  indicate a different representation.
  
!                   CD1 := First_Discriminant (T1);
!                   CD2 := First_Discriminant (T2);
!                   while Present (CD1) and then Present (CD2) loop
!                      if not Same_Rep then
!                         return False;
!                      else
!                         Next_Discriminant (CD1);
!                         Next_Discriminant (CD2);
!                      end if;
!                   end loop;
!                end if;
  
!                CD1 := First_Component (Underlying_Type (Base_Type (T1)));
!                CD2 := First_Component (Underlying_Type (Base_Type (T2)));
!                while Present (CD1) loop
!                   if not Same_Rep then
!                      return False;
!                   else
!                      Next_Component (CD1);
!                      Next_Component (CD2);
!                   end if;
!                end loop;
  
!                return True;
!             end Record_Case;
!          end if;
  
!       --  For enumeration types, we must check each literal to see if the
!       --  representation is the same. Note that we do not permit enumeration
!       --  representation clauses for Character and Wide_Character, so these
!       --  cases were already dealt with.
  
!       elsif Is_Enumeration_Type (T1) then
!          Enumeration_Case : declare
!             L1, L2 : Entity_Id;
  
           begin
!             L1 := First_Literal (T1);
!             L2 := First_Literal (T2);
!             while Present (L1) loop
!                if Enumeration_Rep (L1) /= Enumeration_Rep (L2) then
!                   return False;
!                else
!                   Next_Literal (L1);
!                   Next_Literal (L2);
!                end if;
              end loop;
! 
!             return True;
!          end Enumeration_Case;
! 
!       --  Any other types have the same representation for these purposes
! 
        else
!          return True;
        end if;
!    end Same_Representation;
  
     --------------------------------
     -- Resolve_Iterable_Operation --
--- 15045,15334 ----
              end;
           end if;
  
!          Next_Rep_Item (ASN);
        end loop;
     end Resolve_Aspect_Expressions;
  
!    ----------------------------
!    -- Parse_Aspect_Aggregate --
!    ----------------------------
  
!    procedure Parse_Aspect_Aggregate
!      (N                   : Node_Id;
!       Empty_Subp          : in out Node_Id;
!       Add_Named_Subp      : in out Node_Id;
!       Add_Unnamed_Subp    : in out Node_Id;
!       New_Indexed_Subp    : in out Node_Id;
!       Assign_Indexed_Subp : in out Node_Id)
!    is
!       Assoc   : Node_Id := First (Component_Associations (N));
!       Op_Name : Name_Id;
!       Subp    : Node_Id;
  
     begin
!       while Present (Assoc) loop
!          Subp := Expression (Assoc);
!          Op_Name := Chars (First (Choices (Assoc)));
!          if Op_Name = Name_Empty then
!             Empty_Subp := Subp;
  
!          elsif Op_Name = Name_Add_Named then
!             Add_Named_Subp := Subp;
  
!          elsif Op_Name = Name_Add_Unnamed then
!             Add_Unnamed_Subp := Subp;
  
!          elsif Op_Name = Name_New_Indexed then
!             New_Indexed_Subp :=  Subp;
  
!          elsif Op_Name = Name_Assign_Indexed then
!             Assign_Indexed_Subp := Subp;
!          end if;
  
!          Next (Assoc);
!       end loop;
!    end Parse_Aspect_Aggregate;
  
!    ------------------------------------
!    -- Parse_Aspect_Stable_Properties --
!    ------------------------------------
  
!    function Parse_Aspect_Stable_Properties
!      (Aspect_Spec : Node_Id; Negated : out Boolean) return Subprogram_List
!    is
!       function Extract_Entity (Expr : Node_Id) return Entity_Id;
!       --  Given an element of a Stable_Properties aspect spec, return the
!       --  associated entity.
!       --  This function updates the Negated flag as a side-effect.
  
!       --------------------
!       -- Extract_Entity --
!       --------------------
  
!       function Extract_Entity (Expr : Node_Id) return Entity_Id is
!          Name : Node_Id;
!       begin
!          if Nkind (Expr) = N_Op_Not then
!             Negated := True;
!             Name := Right_Opnd (Expr);
!          else
!             Name := Expr;
!          end if;
  
!          if Nkind (Name) in N_Has_Entity then
!             return Entity (Name);
!          else
!             return Empty;
!          end if;
!       end Extract_Entity;
  
!       --  Local variables
  
!       L  : List_Id;
!       Id : Node_Id;
! 
!    --  Start of processing for Parse_Aspect_Stable_Properties
! 
!    begin
!       Negated := False;
! 
!       if Nkind (Aspect_Spec) /= N_Aggregate then
!          return (1 => Extract_Entity (Aspect_Spec));
!       else
!          L := Expressions (Aspect_Spec);
!          Id := First (L);
! 
!          return Result : Subprogram_List (1 .. List_Length (L)) do
!             for I in Result'Range loop
!                Result (I) := Extract_Entity (Id);
! 
!                if No (Result (I)) then
!                   pragma Assert (Serious_Errors_Detected > 0);
!                   goto Ignore_Aspect;
!                end if;
! 
!                Next (Id);
!             end loop;
!          end return;
        end if;
  
!       <<Ignore_Aspect>> return (1 .. 0 => <>);
!    end Parse_Aspect_Stable_Properties;
  
!    -------------------------------
!    -- Validate_Aspect_Aggregate --
!    -------------------------------
! 
!    procedure Validate_Aspect_Aggregate (N : Node_Id) is
!       Empty_Subp          : Node_Id := Empty;
!       Add_Named_Subp      : Node_Id := Empty;
!       Add_Unnamed_Subp    : Node_Id := Empty;
!       New_Indexed_Subp    : Node_Id := Empty;
!       Assign_Indexed_Subp : Node_Id := Empty;
! 
!    begin
!       Error_Msg_Ada_2020_Feature ("aspect Aggregate", Sloc (N));
! 
!       if Nkind (N) /= N_Aggregate
!         or else Present (Expressions (N))
!         or else No (Component_Associations (N))
        then
!          Error_Msg_N ("aspect Aggregate requires an aggregate "
!                         & "with component associations", N);
!          return;
        end if;
  
!       Parse_Aspect_Aggregate (N,
!         Empty_Subp, Add_Named_Subp, Add_Unnamed_Subp,
!         New_Indexed_Subp, Assign_Indexed_Subp);
  
!       if No (Empty_Subp) then
!          Error_Msg_N ("missing specification for Empty in aggregate", N);
        end if;
  
!       if Present (Add_Named_Subp) then
!          if Present (Add_Unnamed_Subp)
!            or else Present (Assign_Indexed_Subp)
!          then
!             Error_Msg_N
!              ("conflicting operations for aggregate (RM 4.3.5)", N);
!             return;
!          end if;
  
!       elsif Present (New_Indexed_Subp) /= Present (Assign_Indexed_Subp) then
!          Error_Msg_N ("incomplete specification for indexed aggregate", N);
!       end if;
!    end Validate_Aspect_Aggregate;
  
!    -------------------------------
!    -- Validate_Aspect_Stable_Properties --
!    -------------------------------
  
!    procedure Validate_Aspect_Stable_Properties
!      (E : Entity_Id; N : Node_Id; Class_Present : Boolean)
!    is
!       Is_Aspect_Of_Type : constant Boolean := Is_Type (E);
  
!       type Permission is (Forbidden, Optional, Required);
!       Modifier_Permission : Permission :=
!        (if Is_Aspect_Of_Type then Forbidden else Optional);
!       Modifier_Error_Called : Boolean := False;
  
!       procedure Check_Property_Function_Arg (PF_Arg : Node_Id);
!       --  Check syntax of a property function argument
  
!       ----------------------------------
!       -- Check_Property_Function_Arg --
!       ----------------------------------
  
!       procedure Check_Property_Function_Arg (PF_Arg : Node_Id) is
!          procedure Modifier_Error;
!          --  Generate message about bad "not" modifier if no message already
!          --  generated. Errors include specifying "not" for an aspect of
!          --  of a type and specifying "not" for some but not all of the
!          --  names in a list.
  
!          --------------------
!          -- Modifier_Error --
!          --------------------
  
!          procedure Modifier_Error is
!          begin
!             if Modifier_Error_Called then
!                return; -- error message already generated
!             end if;
  
!             Modifier_Error_Called := True;
  
!             if Is_Aspect_Of_Type then
!                Error_Msg_N
!                  ("NOT modifier not allowed for Stable_Properties aspect"
!                   & " of a type", PF_Arg);
!             else
!                Error_Msg_N ("mixed use of NOT modifiers", PF_Arg);
!             end if;
!          end Modifier_Error;
  
!          PF_Name : Node_Id := PF_Arg;
  
!       --  Start of processing for Check_Property_Function_Arg
  
!       begin
!          if Nkind (PF_Arg) = N_Op_Not then
!             PF_Name := Right_Opnd (PF_Arg);
  
!             case Modifier_Permission is
!                when Forbidden =>
!                   Modifier_Error;
!                when Optional =>
!                   Modifier_Permission := Required;
!                when Required =>
!                   null;
!             end case;
!          else
!             case Modifier_Permission is
!                when Forbidden =>
!                   null;
!                when Optional =>
!                   Modifier_Permission := Forbidden;
!                when Required =>
!                   Modifier_Error;
!             end case;
!          end if;
  
!          if Nkind (PF_Name) not in
!            N_Identifier | N_Operator_Symbol | N_Selected_Component
!          then
!             Error_Msg_N ("bad property function name", PF_Name);
!          end if;
!       end Check_Property_Function_Arg;
  
!    --  Start of processing for Validate_Aspect_Stable_Properties
  
!    begin
!       Error_Msg_Ada_2020_Feature ("aspect Stable_Properties", Sloc (N));
  
!       if (not Is_Aspect_Of_Type) and then (not Is_Subprogram (E)) then
!          Error_Msg_N ("Stable_Properties aspect can only be specified for "
!                       & "a type or a subprogram", N);
!       elsif Class_Present then
!          if Is_Aspect_Of_Type then
!             if not Is_Tagged_Type (E) then
!                Error_Msg_N
!                  ("Stable_Properties''Class aspect cannot be specified for "
!                   & "an untagged type", N);
!             end if;
!          else
!             if not Is_Dispatching_Operation (E) then
!                Error_Msg_N
!                  ("Stable_Properties''Class aspect cannot be specified for "
!                   & "a subprogram that is not a primitive subprogram "
!                   & "of a tagged type", N);
!             end if;
!          end if;
!       end if;
  
!       if Nkind (N) = N_Aggregate then
!          if Present (Component_Associations (N))
!             or else Null_Record_Present (N)
!             or else not Present (Expressions (N))
!          then
!             Error_Msg_N ("bad Stable_Properties aspect specification", N);
!             return;
!          end if;
  
+          declare
+             PF_Arg : Node_Id := First (Expressions (N));
           begin
!             while Present (PF_Arg) loop
!                Check_Property_Function_Arg (PF_Arg);
!                Next (PF_Arg);
              end loop;
!          end;
        else
!          Check_Property_Function_Arg (N);
        end if;
!    end Validate_Aspect_Stable_Properties;
  
     --------------------------------
     -- Resolve_Iterable_Operation --
*************** package body Sem_Ch13 is
*** 13786,13797 ****
           Ent := Entity (N);
           F1  := First_Formal (Ent);
  
!          if Nam = Name_First or else Nam = Name_Last then
  
              --  First or Last (Container) => Cursor
  
              if Etype (Ent) /= Cursor then
!                Error_Msg_N ("primitive for First must yield a curosr", N);
              end if;
  
           elsif Nam = Name_Next then
--- 15361,15372 ----
           Ent := Entity (N);
           F1  := First_Formal (Ent);
  
!          if Nam in Name_First | Name_Last then
  
              --  First or Last (Container) => Cursor
  
              if Etype (Ent) /= Cursor then
!                Error_Msg_N ("primitive for First must yield a cursor", N);
              end if;
  
           elsif Nam = Name_Next then
*************** package body Sem_Ch13 is
*** 13916,13921 ****
--- 15491,15912 ----
        end if;
     end Resolve_Iterable_Operation;
  
+    ------------------------------
+    -- Resolve_Aspect_Aggregate --
+    ------------------------------
+ 
+    procedure Resolve_Aspect_Aggregate
+     (Typ :  Entity_Id;
+      Expr : Node_Id)
+    is
+       --  Predicates that establish the legality of each possible operation in
+       --  an Aggregate aspect.
+ 
+       function Valid_Empty             (E : Entity_Id) return Boolean;
+       function Valid_Add_Named         (E : Entity_Id) return Boolean;
+       function Valid_Add_Unnamed       (E : Entity_Id) return Boolean;
+       function Valid_New_Indexed       (E : Entity_Id) return Boolean;
+       function Valid_Assign_Indexed    (E : Entity_Id) return Boolean;
+ 
+       generic
+         with function Pred (Id : Node_Id) return Boolean;
+       procedure Resolve_Operation (Subp_Id : Node_Id);
+       --  Common processing to resolve each aggregate operation.
+ 
+       ------------------------
+       -- Valid_Assign_Index --
+       ------------------------
+ 
+       function Valid_Assign_Indexed (E : Entity_Id) return Boolean is
+       begin
+          --  The profile must be the same as for Add_Named, with the added
+          --  requirement that the key_type be a discrete type.
+ 
+          if Valid_Add_Named (E) then
+             return Is_Discrete_Type (Etype (Next_Formal (First_Formal (E))));
+          else
+             return False;
+          end if;
+       end Valid_Assign_Indexed;
+ 
+       -----------------
+       -- Valid_Emoty --
+       -----------------
+ 
+       function Valid_Empty (E :  Entity_Id) return Boolean is
+       begin
+          if Etype (E) /= Typ or else Scope (E) /= Scope (Typ)  then
+             return False;
+ 
+          elsif Ekind (E) = E_Constant then
+             return True;
+ 
+          elsif Ekind (E) = E_Function then
+             return No (First_Formal (E))
+               or else
+                 (Is_Integer_Type (Etype (First_Formal (E)))
+                   and then No (Next_Formal (First_Formal (E))));
+          else
+             return False;
+          end if;
+       end Valid_Empty;
+ 
+       ---------------------
+       -- Valid_Add_Named --
+       ---------------------
+ 
+       function Valid_Add_Named  (E : Entity_Id) return Boolean is
+          F2, F3 : Entity_Id;
+       begin
+          if Ekind (E) = E_Procedure
+            and then Scope (E) = Scope (Typ)
+            and then Number_Formals (E) = 3
+            and then Etype (First_Formal (E)) = Typ
+            and then Ekind (First_Formal (E)) = E_In_Out_Parameter
+          then
+             F2 := Next_Formal (First_Formal (E));
+             F3 := Next_Formal (F2);
+             return Ekind (F2) = E_In_Parameter
+               and then Ekind (F3) = E_In_Parameter
+               and then not Is_Limited_Type (Etype (F2))
+               and then not Is_Limited_Type (Etype (F3));
+          else
+             return False;
+          end if;
+       end Valid_Add_Named;
+ 
+       -----------------------
+       -- Valid_Add_Unnamed --
+       -----------------------
+ 
+       function Valid_Add_Unnamed (E : Entity_Id) return Boolean is
+       begin
+          return Ekind (E) = E_Procedure
+            and then Scope (E) = Scope (Typ)
+            and then Number_Formals (E) = 2
+            and then Etype (First_Formal (E)) = Typ
+            and then Ekind (First_Formal (E)) = E_In_Out_Parameter
+            and then
+              not Is_Limited_Type (Etype (Next_Formal (First_Formal (E))));
+       end Valid_Add_Unnamed;
+ 
+       -----------------------
+       -- Valid_Nmw_Indexed --
+       -----------------------
+ 
+       function Valid_New_Indexed (E : Entity_Id) return Boolean is
+       begin
+          return Ekind (E) = E_Function
+            and then Scope (E) = Scope (Typ)
+            and then Etype (E) = Typ
+            and then Number_Formals (E) = 2
+            and then Is_Discrete_Type (Etype (First_Formal (E)))
+            and then Etype (First_Formal (E)) =
+              Etype (Next_Formal (First_Formal (E)));
+       end Valid_New_Indexed;
+ 
+       -----------------------
+       -- Resolve_Operation --
+       -----------------------
+ 
+       procedure Resolve_Operation (Subp_Id : Node_Id) is
+          Subp : Entity_Id;
+ 
+          I  : Interp_Index;
+          It : Interp;
+ 
+       begin
+          if not Is_Overloaded (Subp_Id) then
+             Subp := Entity (Subp_Id);
+             if not Pred (Subp) then
+                Error_Msg_NE
+                  ("improper aggregate operation for&", Subp_Id, Typ);
+             end if;
+ 
+          else
+             Set_Entity (Subp_Id, Empty);
+             Get_First_Interp (Subp_Id, I, It);
+             while Present (It.Nam) loop
+                if Pred (It.Nam) then
+                   Set_Is_Overloaded (Subp_Id, False);
+                   Set_Entity (Subp_Id, It.Nam);
+                   exit;
+                end if;
+ 
+                Get_Next_Interp (I, It);
+             end loop;
+ 
+             if No (Entity (Subp_Id)) then
+                Error_Msg_NE
+                  ("improper aggregate operation for&", Subp_Id, Typ);
+             end if;
+          end if;
+       end Resolve_Operation;
+ 
+       Assoc   : Node_Id;
+       Op_Name : Name_Id;
+       Subp_Id : Node_Id;
+ 
+       procedure Resolve_Empty   is new Resolve_Operation (Valid_Empty);
+       procedure Resolve_Unnamed is new Resolve_Operation (Valid_Add_Unnamed);
+       procedure Resolve_Named   is new Resolve_Operation (Valid_Add_Named);
+       procedure Resolve_Indexed is new Resolve_Operation (Valid_New_Indexed);
+       procedure Resolve_Assign_Indexed
+                                 is new Resolve_Operation
+                                                       (Valid_Assign_Indexed);
+    begin
+       Assoc := First (Component_Associations (Expr));
+ 
+       while Present (Assoc) loop
+          Op_Name := Chars (First (Choices (Assoc)));
+ 
+          --  When verifying the consistency of aspects between the freeze point
+          --  and the end of declarqtions, we use a copy which is not analyzed
+          --  yet, so do it now.
+ 
+          Subp_Id := Expression (Assoc);
+          if No (Etype (Subp_Id)) then
+             Analyze (Subp_Id);
+          end if;
+ 
+          if Op_Name = Name_Empty then
+             Resolve_Empty (Subp_Id);
+ 
+          elsif Op_Name = Name_Add_Named then
+             Resolve_Named (Subp_Id);
+ 
+          elsif Op_Name = Name_Add_Unnamed then
+             Resolve_Unnamed (Subp_Id);
+ 
+          elsif Op_Name = Name_New_Indexed then
+             Resolve_Indexed (Subp_Id);
+ 
+          elsif Op_Name = Name_Assign_Indexed then
+             Resolve_Assign_Indexed (Subp_Id);
+          end if;
+ 
+          Next (Assoc);
+       end loop;
+    end Resolve_Aspect_Aggregate;
+ 
+    --------------------------------------
+    -- Resolve_Aspect_Stable_Properties --
+    --------------------------------------
+ 
+    procedure Resolve_Aspect_Stable_Properties
+     (Typ_Or_Subp : Entity_Id; Expr : Node_Id; Class_Present : Boolean)
+    is
+       Is_Aspect_Of_Type : constant Boolean := Is_Type (Typ_Or_Subp);
+ 
+       Singleton : constant Boolean := Nkind (Expr) /= N_Aggregate;
+       Subp_Name : Node_Id := (if Singleton
+                               then Expr
+                               else First (Expressions (Expr)));
+       Has_Not   : Boolean;
+    begin
+       if Is_Aspect_Of_Type
+          and then Has_Private_Declaration (Typ_Or_Subp)
+          and then not Is_Private_Type (Typ_Or_Subp)
+       then
+          Error_Msg_N
+            ("Stable_Properties aspect cannot be specified " &
+              "for the completion of a private type", Typ_Or_Subp);
+       end if;
+ 
+       --  Analogous checks that the aspect is not specified for a completion
+       --  in the subprogram case are not performed here because they are not
+       --  specific to this particular aspect. Right ???
+ 
+       loop
+          Has_Not := Nkind (Subp_Name) = N_Op_Not;
+          if Has_Not then
+             Set_Analyzed (Subp_Name); -- ???
+             Subp_Name := Right_Opnd (Subp_Name);
+          end if;
+ 
+          if No (Etype (Subp_Name)) then
+             Analyze (Subp_Name);
+          end if;
+ 
+          declare
+             Subp : Entity_Id := Empty;
+ 
+             I  : Interp_Index;
+             It : Interp;
+ 
+             function Is_Property_Function (E : Entity_Id) return Boolean;
+             --  Implements RM 7.3.4 definition of "property function".
+ 
+             function Is_Property_Function (E : Entity_Id) return Boolean is
+             begin
+                if Ekind (E) not in E_Function | E_Operator
+                  or else Number_Formals (E) /= 1
+                then
+                   return False;
+                end if;
+ 
+                declare
+                   Param_Type : constant Entity_Id :=
+                      Base_Type (Etype (First_Formal (E)));
+ 
+                   function Matches_Param_Type (Typ : Entity_Id)
+                     return Boolean is
+                     ((Base_Type (Typ) = Param_Type)
+                      or else
+                      (Is_Class_Wide_Type (Param_Type)
+                       and then Is_Ancestor (Root_Type (Param_Type),
+                                             Base_Type (Typ))));
+                begin
+                   if Is_Aspect_Of_Type then
+                      if Matches_Param_Type (Typ_Or_Subp) then
+                         return True;
+                      end if;
+                   elsif Is_Primitive (Typ_Or_Subp) then
+                      declare
+                         Formal : Entity_Id := First_Formal (Typ_Or_Subp);
+                      begin
+                         while Present (Formal) loop
+                            if Matches_Param_Type (Etype (Formal)) then
+ 
+                               --  Test whether Typ_Or_Subp (which is a subp
+                               --  in this case) is primitive op of the type
+                               --  of this parameter.
+                               if Scope (Typ_Or_Subp) = Scope (Param_Type) then
+                                  return True;
+                               end if;
+                            end if;
+                            Next_Formal (Formal);
+                         end loop;
+                      end;
+                   end if;
+                end;
+ 
+                return False;
+             end Is_Property_Function;
+          begin
+             if not Is_Overloaded (Subp_Name) then
+                Subp := Entity (Subp_Name);
+                if not Is_Property_Function (Subp) then
+                   Error_Msg_NE ("improper property function for&",
+                     Subp_Name, Typ_Or_Subp);
+                   return;
+                end if;
+             else
+                Set_Entity (Subp_Name, Empty);
+                Get_First_Interp (Subp_Name, I, It);
+                while Present (It.Nam) loop
+                   if Is_Property_Function (It.Nam) then
+                      if Present (Subp) then
+                         Error_Msg_NE
+                           ("ambiguous property function name for&",
+                            Subp_Name, Typ_Or_Subp);
+                         return;
+                      end if;
+ 
+                      Subp := It.Nam;
+                      Set_Is_Overloaded (Subp_Name, False);
+                      Set_Entity (Subp_Name, Subp);
+                   end if;
+ 
+                   Get_Next_Interp (I, It);
+                end loop;
+ 
+                if No (Subp) then
+                   Error_Msg_NE ("improper property function for&",
+                     Subp_Name, Typ_Or_Subp);
+                   return;
+                end if;
+             end if;
+ 
+             --  perform legality (as opposed to name resolution) Subp checks
+ 
+             if Is_Limited_Type (Etype (Subp)) then
+                Error_Msg_NE
+                  ("result type of property function for& is limited",
+                   Subp_Name, Typ_Or_Subp);
+             end if;
+ 
+             if Ekind (First_Formal (Subp)) /= E_In_Parameter then
+                Error_Msg_NE
+                  ("mode of parameter of property function for& is not IN",
+                   Subp_Name, Typ_Or_Subp);
+             end if;
+ 
+             if Is_Class_Wide_Type (Etype (First_Formal (Subp))) then
+                if not Covers (Etype (First_Formal (Subp)), Typ_Or_Subp) then
+                   Error_Msg_NE
+                     ("class-wide parameter type of property function " &
+                      "for& does not cover the type",
+                      Subp_Name, Typ_Or_Subp);
+ 
+                --  ??? This test is slightly stricter than 7.3.4(12/5);
+                --  some legal corner cases may be incorrectly rejected.
+                elsif Scope (Subp) /= Scope (Etype (First_Formal (Subp)))
+                then
+                   Error_Msg_NE
+                     ("property function for& not declared in same scope " &
+                      "as parameter type",
+                      Subp_Name, Typ_Or_Subp);
+                end if;
+             elsif Is_Aspect_Of_Type and then
+               Scope (Subp) /= Scope (Typ_Or_Subp) and then
+               Scope (Subp) /= Standard_Standard --  e.g., derived type's "abs"
+             then
+                Error_Msg_NE
+                  ("property function for& " &
+                   "not a primitive function of the type",
+                   Subp_Name, Typ_Or_Subp);
+             end if;
+ 
+             if Has_Not then
+                --  check that Subp was mentioned in param type's aspect spec
+                declare
+                   Param_Type : constant Entity_Id :=
+                     Base_Type (Etype (First_Formal (Subp)));
+                   Aspect_Spec : constant Node_Id :=
+                     Find_Value_Of_Aspect
+                       (Param_Type, Aspect_Stable_Properties,
+                        Class_Present => Class_Present);
+                   Found : Boolean := False;
+                begin
+                   if Present (Aspect_Spec) then
+                      declare
+                         Ignored : Boolean;
+                         SPF_List : constant Subprogram_List :=
+                           Parse_Aspect_Stable_Properties
+                             (Aspect_Spec, Negated => Ignored);
+                      begin
+                         Found := (for some E of SPF_List => E = Subp);
+                         --  look through renamings ???
+                      end;
+                   end if;
+                   if not Found then
+                      declare
+                         CW_Modifier : constant String :=
+                           (if Class_Present then "class-wide " else "");
+                      begin
+                         Error_Msg_NE
+                        (CW_Modifier
+                          & "property function for& mentioned after NOT "
+                          & "but not a "
+                          & CW_Modifier
+                          & "stable property function of its parameter type",
+                         Subp_Name, Typ_Or_Subp);
+                      end;
+                   end if;
+                end;
+             end if;
+          end;
+ 
+          exit when Singleton;
+          Subp_Name :=
+            Next ((if Has_Not then Parent (Subp_Name) else Subp_Name));
+          exit when No (Subp_Name);
+       end loop;
+ 
+       Set_Analyzed (Expr);
+    end Resolve_Aspect_Stable_Properties;
+ 
     ----------------
     -- Set_Biased --
     ----------------
*************** package body Sem_Ch13 is
*** 13949,13955 ****
     begin
        Init_Alignment (T);
  
!       --  Find the minimum standard size (8,16,32,64) that fits
  
        Lo := Enumeration_Rep (Entity (Type_Low_Bound (T)));
        Hi := Enumeration_Rep (Entity (Type_High_Bound (T)));
--- 15940,15946 ----
     begin
        Init_Alignment (T);
  
!       --  Find the minimum standard size (8,16,32,64,128) that fits
  
        Lo := Enumeration_Rep (Entity (Type_Low_Bound (T)));
        Hi := Enumeration_Rep (Entity (Type_High_Bound (T)));
*************** package body Sem_Ch13 is
*** 13964,13971 ****
           elsif Lo >= -Uint_2**31 and then Hi < Uint_2**31 then
              Sz := 32;
  
!          else pragma Assert (Lo >= -Uint_2**63 and then Hi < Uint_2**63);
              Sz := 64;
           end if;
  
        else
--- 15955,15965 ----
           elsif Lo >= -Uint_2**31 and then Hi < Uint_2**31 then
              Sz := 32;
  
!          elsif Lo >= -Uint_2**63 and then Hi < Uint_2**63 then
              Sz := 64;
+ 
+          else pragma Assert (Lo >= -Uint_2**127 and then Hi < Uint_2**127);
+             Sz := 128;
           end if;
  
        else
*************** package body Sem_Ch13 is
*** 13978,13985 ****
           elsif Hi < Uint_2**32 then
              Sz := 32;
  
!          else pragma Assert (Hi < Uint_2**63);
              Sz := 64;
           end if;
        end if;
  
--- 15972,15982 ----
           elsif Hi < Uint_2**32 then
              Sz := 32;
  
!          elsif Hi < Uint_2**64 then
              Sz := 64;
+ 
+          else pragma Assert (Hi < Uint_2**128);
+             Sz := 128;
           end if;
        end if;
  
*************** package body Sem_Ch13 is
*** 14228,14529 ****
        end loop;
     end Validate_Address_Clauses;
  
-    ---------------------------
-    -- Validate_Independence --
-    ---------------------------
- 
-    procedure Validate_Independence is
-       SU   : constant Uint := UI_From_Int (System_Storage_Unit);
-       N    : Node_Id;
-       E    : Entity_Id;
-       IC   : Boolean;
-       Comp : Entity_Id;
-       Addr : Node_Id;
-       P    : Node_Id;
- 
-       procedure Check_Array_Type (Atyp : Entity_Id);
-       --  Checks if the array type Atyp has independent components, and
-       --  if not, outputs an appropriate set of error messages.
- 
-       procedure No_Independence;
-       --  Output message that independence cannot be guaranteed
- 
-       function OK_Component (C : Entity_Id) return Boolean;
-       --  Checks one component to see if it is independently accessible, and
-       --  if so yields True, otherwise yields False if independent access
-       --  cannot be guaranteed. This is a conservative routine, it only
-       --  returns True if it knows for sure, it returns False if it knows
-       --  there is a problem, or it cannot be sure there is no problem.
- 
-       procedure Reason_Bad_Component (C : Entity_Id);
-       --  Outputs continuation message if a reason can be determined for
-       --  the component C being bad.
- 
-       ----------------------
-       -- Check_Array_Type --
-       ----------------------
- 
-       procedure Check_Array_Type (Atyp : Entity_Id) is
-          Ctyp : constant Entity_Id := Component_Type (Atyp);
- 
-       begin
-          --  OK if no alignment clause, no pack, and no component size
- 
-          if not Has_Component_Size_Clause (Atyp)
-            and then not Has_Alignment_Clause (Atyp)
-            and then not Is_Packed (Atyp)
-          then
-             return;
-          end if;
- 
-          --  Case of component size is greater than or equal to 64 and the
-          --  alignment of the array is at least as large as the alignment
-          --  of the component. We are definitely OK in this situation.
- 
-          if Known_Component_Size (Atyp)
-            and then Component_Size (Atyp) >= 64
-            and then Known_Alignment (Atyp)
-            and then Known_Alignment (Ctyp)
-            and then Alignment (Atyp) >= Alignment (Ctyp)
-          then
-             return;
-          end if;
- 
-          --  Check actual component size
- 
-          if not Known_Component_Size (Atyp)
-            or else not (Addressable (Component_Size (Atyp))
-                          and then Component_Size (Atyp) < 64)
-            or else Component_Size (Atyp) mod Esize (Ctyp) /= 0
-          then
-             No_Independence;
- 
-             --  Bad component size, check reason
- 
-             if Has_Component_Size_Clause (Atyp) then
-                P := Get_Attribute_Definition_Clause
-                       (Atyp, Attribute_Component_Size);
- 
-                if Present (P) then
-                   Error_Msg_Sloc := Sloc (P);
-                   Error_Msg_N ("\because of Component_Size clause#", N);
-                   return;
-                end if;
-             end if;
- 
-             if Is_Packed (Atyp) then
-                P := Get_Rep_Pragma (Atyp, Name_Pack);
- 
-                if Present (P) then
-                   Error_Msg_Sloc := Sloc (P);
-                   Error_Msg_N ("\because of pragma Pack#", N);
-                   return;
-                end if;
-             end if;
- 
-             --  No reason found, just return
- 
-             return;
-          end if;
- 
-          --  Array type is OK independence-wise
- 
-          return;
-       end Check_Array_Type;
- 
-       ---------------------
-       -- No_Independence --
-       ---------------------
- 
-       procedure No_Independence is
-       begin
-          if Pragma_Name (N) = Name_Independent then
-             Error_Msg_NE ("independence cannot be guaranteed for&", N, E);
-          else
-             Error_Msg_NE
-               ("independent components cannot be guaranteed for&", N, E);
-          end if;
-       end No_Independence;
- 
-       ------------------
-       -- OK_Component --
-       ------------------
- 
-       function OK_Component (C : Entity_Id) return Boolean is
-          Rec  : constant Entity_Id := Scope (C);
-          Ctyp : constant Entity_Id := Etype (C);
- 
-       begin
-          --  OK if no component clause, no Pack, and no alignment clause
- 
-          if No (Component_Clause (C))
-            and then not Is_Packed (Rec)
-            and then not Has_Alignment_Clause (Rec)
-          then
-             return True;
-          end if;
- 
-          --  Here we look at the actual component layout. A component is
-          --  addressable if its size is a multiple of the Esize of the
-          --  component type, and its starting position in the record has
-          --  appropriate alignment, and the record itself has appropriate
-          --  alignment to guarantee the component alignment.
- 
-          --  Make sure sizes are static, always assume the worst for any
-          --  cases where we cannot check static values.
- 
-          if not (Known_Static_Esize (C)
-                   and then
-                  Known_Static_Esize (Ctyp))
-          then
-             return False;
-          end if;
- 
-          --  Size of component must be addressable or greater than 64 bits
-          --  and a multiple of bytes.
- 
-          if not Addressable (Esize (C)) and then Esize (C) < Uint_64 then
-             return False;
-          end if;
- 
-          --  Check size is proper multiple
- 
-          if Esize (C) mod Esize (Ctyp) /= 0 then
-             return False;
-          end if;
- 
-          --  Check alignment of component is OK
- 
-          if not Known_Component_Bit_Offset (C)
-            or else Component_Bit_Offset (C) < Uint_0
-            or else Component_Bit_Offset (C) mod Esize (Ctyp) /= 0
-          then
-             return False;
-          end if;
- 
-          --  Check alignment of record type is OK
- 
-          if not Known_Alignment (Rec)
-            or else (Alignment (Rec) * SU) mod Esize (Ctyp) /= 0
-          then
-             return False;
-          end if;
- 
-          --  All tests passed, component is addressable
- 
-          return True;
-       end OK_Component;
- 
-       --------------------------
-       -- Reason_Bad_Component --
-       --------------------------
- 
-       procedure Reason_Bad_Component (C : Entity_Id) is
-          Rec  : constant Entity_Id := Scope (C);
-          Ctyp : constant Entity_Id := Etype (C);
- 
-       begin
-          --  If component clause present assume that's the problem
- 
-          if Present (Component_Clause (C)) then
-             Error_Msg_Sloc := Sloc (Component_Clause (C));
-             Error_Msg_N ("\because of Component_Clause#", N);
-             return;
-          end if;
- 
-          --  If pragma Pack clause present, assume that's the problem
- 
-          if Is_Packed (Rec) then
-             P := Get_Rep_Pragma (Rec, Name_Pack);
- 
-             if Present (P) then
-                Error_Msg_Sloc := Sloc (P);
-                Error_Msg_N ("\because of pragma Pack#", N);
-                return;
-             end if;
-          end if;
- 
-          --  See if record has bad alignment clause
- 
-          if Has_Alignment_Clause (Rec)
-            and then Known_Alignment (Rec)
-            and then (Alignment (Rec) * SU) mod Esize (Ctyp) /= 0
-          then
-             P := Get_Attribute_Definition_Clause (Rec, Attribute_Alignment);
- 
-             if Present (P) then
-                Error_Msg_Sloc := Sloc (P);
-                Error_Msg_N ("\because of Alignment clause#", N);
-             end if;
-          end if;
- 
-          --  Couldn't find a reason, so return without a message
- 
-          return;
-       end Reason_Bad_Component;
- 
-    --  Start of processing for Validate_Independence
- 
-    begin
-       for J in Independence_Checks.First .. Independence_Checks.Last loop
-          N  := Independence_Checks.Table (J).N;
-          E  := Independence_Checks.Table (J).E;
-          IC := Pragma_Name (N) = Name_Independent_Components;
- 
-          --  Deal with component case
- 
-          if Ekind (E) = E_Discriminant or else Ekind (E) = E_Component then
-             if not OK_Component (E) then
-                No_Independence;
-                Reason_Bad_Component (E);
-                goto Continue;
-             end if;
-          end if;
- 
-          --  Deal with record with Independent_Components
- 
-          if IC and then Is_Record_Type (E) then
-             Comp := First_Component_Or_Discriminant (E);
-             while Present (Comp) loop
-                if not OK_Component (Comp) then
-                   No_Independence;
-                   Reason_Bad_Component (Comp);
-                   goto Continue;
-                end if;
- 
-                Next_Component_Or_Discriminant (Comp);
-             end loop;
-          end if;
- 
-          --  Deal with address clause case
- 
-          if Is_Object (E) then
-             Addr := Address_Clause (E);
- 
-             if Present (Addr) then
-                No_Independence;
-                Error_Msg_Sloc := Sloc (Addr);
-                Error_Msg_N ("\because of Address clause#", N);
-                goto Continue;
-             end if;
-          end if;
- 
-          --  Deal with independent components for array type
- 
-          if IC and then Is_Array_Type (E) then
-             Check_Array_Type (E);
-          end if;
- 
-          --  Deal with independent components for array object
- 
-          if IC and then Is_Object (E) and then Is_Array_Type (Etype (E)) then
-             Check_Array_Type (Etype (E));
-          end if;
- 
-       <<Continue>> null;
-       end loop;
-    end Validate_Independence;
- 
     ------------------------------
     -- Validate_Iterable_Aspect --
     ------------------------------
--- 16225,16230 ----
*************** package body Sem_Ch13 is
*** 14611,14616 ****
--- 16312,16480 ----
        end if;
     end Validate_Iterable_Aspect;
  
+    ------------------------------
+    -- Validate_Literal_Aspect --
+    ------------------------------
+ 
+    procedure Validate_Literal_Aspect (Typ : Entity_Id; ASN : Node_Id) is
+       A_Id        : constant Aspect_Id := Get_Aspect_Id (ASN);
+       pragma Assert ((A_Id = Aspect_Integer_Literal) or
+                      (A_Id = Aspect_Real_Literal) or
+                      (A_Id = Aspect_String_Literal));
+       Func_Name   : constant Node_Id := Expression (ASN);
+       Overloaded  : Boolean := Is_Overloaded (Func_Name);
+ 
+       I            : Interp_Index;
+       It           : Interp;
+       Param_Type   : Entity_Id;
+       Match_Found  : Boolean := False;
+       Match2_Found : Boolean := False;
+       Is_Match     : Boolean;
+       Match        : Interp;
+       Match2       : Entity_Id := Empty;
+ 
+       function Matching
+         (Param_Id : Entity_Id; Param_Type : Entity_Id) return Boolean;
+       --  Return True if Param_Id is a non aliased in parameter whose base type
+       --  is Param_Type.
+ 
+       --------------
+       -- Matching --
+       --------------
+ 
+       function Matching
+         (Param_Id : Entity_Id; Param_Type : Entity_Id) return Boolean is
+       begin
+          return Base_Type (Etype (Param_Id)) = Param_Type
+            and then Ekind (Param_Id) = E_In_Parameter
+            and then not Is_Aliased (Param_Id);
+       end Matching;
+ 
+    begin
+       if not Is_Type (Typ) then
+          Error_Msg_N ("aspect can only be specified for a type", ASN);
+          return;
+ 
+       elsif not Is_First_Subtype (Typ) then
+          Error_Msg_N ("aspect cannot be specified for a subtype", ASN);
+          return;
+       end if;
+ 
+       if A_Id = Aspect_String_Literal then
+          if Is_String_Type (Typ) then
+             Error_Msg_N ("aspect cannot be specified for a string type", ASN);
+             return;
+          end if;
+ 
+          Param_Type := Standard_Wide_Wide_String;
+ 
+       else
+          if Is_Numeric_Type (Typ) then
+             Error_Msg_N ("aspect cannot be specified for a numeric type", ASN);
+             return;
+          end if;
+ 
+          Param_Type := Standard_String;
+       end if;
+ 
+       if not Overloaded and then not Present (Entity (Func_Name)) then
+          Analyze (Func_Name);
+          Overloaded := Is_Overloaded (Func_Name);
+       end if;
+ 
+       if Overloaded then
+          Get_First_Interp (Func_Name, I => I, It => It);
+       else
+          --  only one possible interpretation
+          It.Nam := Entity (Func_Name);
+          pragma Assert (Present (It.Nam));
+       end if;
+ 
+       while It.Nam /= Empty loop
+          Is_Match := False;
+ 
+          if Ekind (It.Nam) = E_Function
+            and then Base_Type (Etype (It.Nam)) = Base_Type (Typ)
+          then
+             declare
+                Params     : constant List_Id :=
+                  Parameter_Specifications (Parent (It.Nam));
+                Param_Spec : Node_Id;
+ 
+             begin
+                if List_Length (Params) = 1 then
+                   Param_Spec := First (Params);
+                   Is_Match :=
+                     Matching (Defining_Identifier (Param_Spec), Param_Type);
+ 
+                --  Look for the optional overloaded 2-param Real_Literal
+ 
+                elsif List_Length (Params) = 2
+                  and then A_Id = Aspect_Real_Literal
+                then
+                   Param_Spec := First (Params);
+ 
+                   if Matching (Defining_Identifier (Param_Spec), Param_Type)
+                   then
+                      Param_Spec := Next (Param_Spec);
+ 
+                      if Matching (Defining_Identifier (Param_Spec), Param_Type)
+                      then
+                         if No (Match2) then
+                            Match2 := It.Nam;
+                            Match2_Found := True;
+                         else
+                            --  If we find more than one possible match then
+                            --  do not take any into account here: since the
+                            --  2-parameter version of Real_Literal is optional
+                            --  we cannot generate an error here, so let
+                            --  standard resolution fail later if we do need to
+                            --  call this variant.
+ 
+                            Match2_Found := False;
+                         end if;
+                      end if;
+                   end if;
+                end if;
+             end;
+          end if;
+ 
+          if Is_Match then
+             if Match_Found then
+                Error_Msg_N ("aspect specification is ambiguous", ASN);
+                return;
+             end if;
+ 
+             Match_Found := True;
+             Match := It;
+          end if;
+ 
+          exit when not Overloaded;
+ 
+          if not Is_Match then
+             Remove_Interp (I => I);
+          end if;
+ 
+          Get_Next_Interp (I => I, It => It);
+       end loop;
+ 
+       if not Match_Found then
+          Error_Msg_N
+            ("function name in aspect specification cannot be resolved", ASN);
+          return;
+       end if;
+ 
+       Set_Entity (Func_Name, Match.Nam);
+       Set_Etype (Func_Name, Etype (Match.Nam));
+       Set_Is_Overloaded (Func_Name, False);
+ 
+       --  Record the match for 2-parameter function if found
+ 
+       if Match2_Found then
+          Set_Related_Expression (Match.Nam, Match2);
+       end if;
+    end Validate_Literal_Aspect;
+ 
     -----------------------------------
     -- Validate_Unchecked_Conversion --
     -----------------------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch13.ads gcc-11.1.0/gcc/ada/sem_ch13.ads
*** gcc-10.3.0/gcc/ada/sem_ch13.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch13.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,33 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with Table;
  with Types; use Types;
  with Uintp; use Uintp;
  
  package Sem_Ch13 is
     procedure Analyze_At_Clause                          (N : Node_Id);
     procedure Analyze_Attribute_Definition_Clause        (N : Node_Id);
     procedure Analyze_Enumeration_Representation_Clause  (N : Node_Id);
--- 23,36 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with Types; use Types;
+ with Sem_Disp; use Sem_Disp;
  with Uintp; use Uintp;
  
  package Sem_Ch13 is
+    function All_Membership_Choices_Static (Expr : Node_Id) return Boolean;
+    --  Given a membership test, returns True iff all choices are static.
+ 
     procedure Analyze_At_Clause                          (N : Node_Id);
     procedure Analyze_Attribute_Definition_Clause        (N : Node_Id);
     procedure Analyze_Enumeration_Representation_Clause  (N : Node_Id);
*************** package Sem_Ch13 is
*** 125,130 ****
--- 128,157 ----
     --  If the size is too small, and an error message is given, then both
     --  Esize and RM_Size are reset to the allowed minimum value in T.
  
+    function Has_Compatible_Representation
+      (Target_Type, Operand_Type : Entity_Id) return Boolean;
+    --  Given two types, where the two types are related by possible derivation,
+    --  determines if the two types have compatible representation, or different
+    --  representations, requiring the special processing for representation
+    --  change. A False result is possible only for array, enumeration or
+    --  record types.
+ 
+    procedure Parse_Aspect_Aggregate
+      (N                   : Node_Id;
+       Empty_Subp          : in out Node_Id;
+       Add_Named_Subp      : in out Node_Id;
+       Add_Unnamed_Subp    : in out Node_Id;
+       New_Indexed_Subp    : in out Node_Id;
+       Assign_Indexed_Subp : in out Node_Id);
+    --  Utility to unpack the subprograms in an occurrence of aspect Aggregate;
+    --  used to verify the structure of the aspect, and resolve and expand an
+    --  aggregate for a container type that carries the aspect.
+ 
+    function Parse_Aspect_Stable_Properties
+      (Aspect_Spec : Node_Id; Negated : out Boolean) return Subprogram_List;
+    --  Utility to unpack the subprograms in a Stable_Properties list;
+    --  in the case of the aspect of a type, Negated will always be False.
+ 
     function Rep_Item_Too_Early (T : Entity_Id; N : Node_Id) return Boolean;
     --  Called at start of processing a representation clause/pragma. Used to
     --  check that the representation item is not being applied to an incomplete
*************** package Sem_Ch13 is
*** 142,147 ****
--- 169,179 ----
     --  parameter does the actual replacement of node N, which is either a
     --  simple direct reference to T, or a selected component that represents
     --  an appropriately qualified occurrence of T.
+    --
+    --  This also replaces each reference to a component, entry, or protected
+    --  procedure with a selected component whose prefix is the parameter.
+    --  For example, Component_Name becomes Parameter.Component_Name, where
+    --  Parameter is the parameter, which is of type T.
  
     function Rep_Item_Too_Late
       (T     : Entity_Id;
*************** package Sem_Ch13 is
*** 154,160 ****
     --  is the pragma or representation clause itself, used for placing error
     --  messages if the item is too late.
     --
!    --  Fonly is a flag that causes only the freezing rule (para 9) to be
     --  applied, and the tests of para 10 are skipped. This is appropriate for
     --  both subtype related attributes (Alignment and Size) and for stream
     --  attributes, which, although certainly not subtype related attributes,
--- 186,192 ----
     --  is the pragma or representation clause itself, used for placing error
     --  messages if the item is too late.
     --
!    --  FOnly is a flag that causes only the freezing rule (para 9) to be
     --  applied, and the tests of para 10 are skipped. This is appropriate for
     --  both subtype related attributes (Alignment and Size) and for stream
     --  attributes, which, although certainly not subtype related attributes,
*************** package Sem_Ch13 is
*** 182,194 ****
     --  because such clauses are linked on to the Rep_Item chain in procedure
     --  Sem_Ch13.Analyze_Aspect_Specifications. See that procedure for details.
  
-    function Same_Representation (Typ1, Typ2 : Entity_Id) return Boolean;
-    --  Given two types, where the two types are related by possible derivation,
-    --  determines if the two types have the same representation, or different
-    --  representations, requiring the special processing for representation
-    --  change. A False result is possible only for array, enumeration or
-    --  record types.
- 
     procedure Validate_Unchecked_Conversion
       (N        : Node_Id;
        Act_Unit : Entity_Id);
--- 214,219 ----
*************** package Sem_Ch13 is
*** 212,247 ****
     --  table of saved address clauses checking for suspicious alignments and
     --  if necessary issuing warnings.
  
-    procedure Validate_Independence;
-    --  This is called after the back end has been called (and thus after the
-    --  layout of components has been back annotated). It goes through the
-    --  table of saved pragma Independent[_Component] entries, checking that
-    --  independence can be achieved, and if necessary issuing error messages.
- 
-    -------------------------------------
-    -- Table for Validate_Independence --
-    -------------------------------------
- 
-    --  If a legal pragma Independent or Independent_Components is given for
-    --  an entity, then an entry is made in this table, to be checked by a
-    --  call to Validate_Independence after back annotation of layout is done.
- 
-    type Independence_Check_Record is record
-       N : Node_Id;
-       --  The pragma Independent or Independent_Components
- 
-       E : Entity_Id;
-       --  The entity to which it applies
-    end record;
- 
-    package Independence_Checks is new Table.Table (
-      Table_Component_Type => Independence_Check_Record,
-      Table_Index_Type     => Int,
-      Table_Low_Bound      => 1,
-      Table_Initial        => 20,
-      Table_Increment      => 200,
-      Table_Name           => "Independence_Checks");
- 
     -----------------------------------
     -- Handling of Aspect Visibility --
     -----------------------------------
--- 237,242 ----
*************** package Sem_Ch13 is
*** 342,347 ****
--- 337,346 ----
     --  for First, Next, and Has_Element. Optionally an Element primitive may
     --  also be defined.
  
+    procedure Validate_Literal_Aspect (Typ : Entity_Id; ASN : Node_Id);
+    --  Check legality of Integer_Literal, Real_Literal, and String_Literal
+    --  aspect specifications.
+ 
     procedure Install_Discriminants (E : Entity_Id);
     --  Make visible the discriminants of type entity E
  
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch2.adb gcc-11.1.0/gcc/ada/sem_ch2.adb
*** gcc-10.3.0/gcc/ada/sem_ch2.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch2.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch2.ads gcc-11.1.0/gcc/ada/sem_ch2.ads
*** gcc-10.3.0/gcc/ada/sem_ch2.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch2.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch3.adb gcc-11.1.0/gcc/ada/sem_ch3.adb
*** gcc-10.3.0/gcc/ada/sem_ch3.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch3.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Layout;    use Layout;
*** 45,50 ****
--- 45,51 ----
  with Lib;       use Lib;
  with Lib.Xref;  use Lib.Xref;
  with Namet;     use Namet;
+ with Nlists;    use Nlists;
  with Nmake;     use Nmake;
  with Opt;       use Opt;
  with Restrict;  use Restrict;
*************** package body Sem_Ch3 is
*** 91,96 ****
--- 92,102 ----
     --  abstract interface types implemented by a record type or a derived
     --  record type.
  
+    procedure Build_Access_Subprogram_Wrapper (Decl : Node_Id);
+    --  When an access-to-subprogram type has pre/postconditions, we build a
+    --  subprogram that includes these contracts and is invoked by an indirect
+    --  call through the corresponding access type.
+ 
     procedure Build_Derived_Type
       (N             : Node_Id;
        Parent_Type   : Entity_Id;
*************** package body Sem_Ch3 is
*** 253,258 ****
--- 259,269 ----
     --  circularity issues in Gigi. We create an incomplete type for the record
     --  declaration, which is the designated type of the anonymous access.
  
+    procedure Check_Constraining_Discriminant (New_Disc, Old_Disc : Entity_Id);
+    --  Check that, if a new discriminant is used in a constraint defining the
+    --  parent subtype of a derivation, its subtype is statically compatible
+    --  with the subtype of the corresponding parent discriminant (RM 3.7(15)).
+ 
     procedure Check_Delta_Expression (E : Node_Id);
     --  Check that the expression represented by E is suitable for use as a
     --  delta expression, i.e. it is of real type and is static.
*************** package body Sem_Ch3 is
*** 399,405 ****
     --  When constraining a protected type or task type with discriminants,
     --  constrain the corresponding record with the same discriminant values.
  
!    procedure Constrain_Decimal (Def_Id : Node_Id; S : Node_Id);
     --  Constrain a decimal fixed point type with a digits constraint and/or a
     --  range constraint, and build E_Decimal_Fixed_Point_Subtype entity.
  
--- 410,416 ----
     --  When constraining a protected type or task type with discriminants,
     --  constrain the corresponding record with the same discriminant values.
  
!    procedure Constrain_Decimal (Def_Id : Entity_Id; S : Node_Id);
     --  Constrain a decimal fixed point type with a digits constraint and/or a
     --  range constraint, and build E_Decimal_Fixed_Point_Subtype entity.
  
*************** package body Sem_Ch3 is
*** 415,425 ****
     --  Constrain_Concurrent. See Build_Discriminated_Subtype for an explanation
     --  of For_Access.
  
!    procedure Constrain_Enumeration (Def_Id : Node_Id; S : Node_Id);
     --  Constrain an enumeration type with a range constraint. This is identical
     --  to Constrain_Integer, but for the Ekind of the resulting subtype.
  
!    procedure Constrain_Float (Def_Id : Node_Id; S : Node_Id);
     --  Constrain a floating point type with either a digits constraint
     --  and/or a range constraint, building a E_Floating_Point_Subtype.
  
--- 426,436 ----
     --  Constrain_Concurrent. See Build_Discriminated_Subtype for an explanation
     --  of For_Access.
  
!    procedure Constrain_Enumeration (Def_Id : Entity_Id; S : Node_Id);
     --  Constrain an enumeration type with a range constraint. This is identical
     --  to Constrain_Integer, but for the Ekind of the resulting subtype.
  
!    procedure Constrain_Float (Def_Id : Entity_Id; S : Node_Id);
     --  Constrain a floating point type with either a digits constraint
     --  and/or a range constraint, building a E_Floating_Point_Subtype.
  
*************** package body Sem_Ch3 is
*** 429,445 ****
        Related_Nod  : Node_Id;
        Related_Id   : Entity_Id;
        Suffix       : Character;
!       Suffix_Index : Nat);
     --  Process an index constraint S in a constrained array declaration. The
     --  constraint can be a subtype name, or a range with or without an explicit
     --  subtype mark. The index is the corresponding index of the unconstrained
     --  array. The Related_Id and Suffix parameters are used to build the
     --  associated Implicit type name.
  
!    procedure Constrain_Integer (Def_Id : Node_Id; S : Node_Id);
     --  Build subtype of a signed or modular integer type
  
!    procedure Constrain_Ordinary_Fixed (Def_Id : Node_Id; S : Node_Id);
     --  Constrain an ordinary fixed point type with a range constraint, and
     --  build an E_Ordinary_Fixed_Point_Subtype entity.
  
--- 440,456 ----
        Related_Nod  : Node_Id;
        Related_Id   : Entity_Id;
        Suffix       : Character;
!       Suffix_Index : Pos);
     --  Process an index constraint S in a constrained array declaration. The
     --  constraint can be a subtype name, or a range with or without an explicit
     --  subtype mark. The index is the corresponding index of the unconstrained
     --  array. The Related_Id and Suffix parameters are used to build the
     --  associated Implicit type name.
  
!    procedure Constrain_Integer (Def_Id : Entity_Id; S : Node_Id);
     --  Build subtype of a signed or modular integer type
  
!    procedure Constrain_Ordinary_Fixed (Def_Id : Entity_Id; S : Node_Id);
     --  Constrain an ordinary fixed point type with a range constraint, and
     --  build an E_Ordinary_Fixed_Point_Subtype entity.
  
*************** package body Sem_Ch3 is
*** 562,577 ****
     --  copying the record declaration for the derived base. In the tagged case
     --  the value returned is irrelevant.
  
-    procedure Inherit_Predicate_Flags (Subt, Par : Entity_Id);
-    --  Propagate static and dynamic predicate flags from a parent to the
-    --  subtype in a subtype declaration with and without constraints.
- 
     function Is_EVF_Procedure (Subp : Entity_Id) return Boolean;
     --  Subsidiary to Check_Abstract_Overriding and Derive_Subprogram.
     --  Determine whether subprogram Subp is a procedure subject to pragma
     --  Extensions_Visible with value False and has at least one controlling
     --  parameter of mode OUT.
  
     function Is_Valid_Constraint_Kind
       (T_Kind          : Type_Kind;
        Constraint_Kind : Node_Kind) return Boolean;
--- 573,590 ----
     --  copying the record declaration for the derived base. In the tagged case
     --  the value returned is irrelevant.
  
     function Is_EVF_Procedure (Subp : Entity_Id) return Boolean;
     --  Subsidiary to Check_Abstract_Overriding and Derive_Subprogram.
     --  Determine whether subprogram Subp is a procedure subject to pragma
     --  Extensions_Visible with value False and has at least one controlling
     --  parameter of mode OUT.
  
+    function Is_Private_Primitive (Prim : Entity_Id) return Boolean;
+    --  Subsidiary to Check_Abstract_Overriding and Derive_Subprogram.
+    --  When applied to a primitive subprogram Prim, returns True if Prim is
+    --  declared as a private operation within a package or generic package,
+    --  and returns False otherwise.
+ 
     function Is_Valid_Constraint_Kind
       (T_Kind          : Type_Kind;
        Constraint_Kind : Node_Kind) return Boolean;
*************** package body Sem_Ch3 is
*** 657,670 ****
     --  declaration, Prev_T is the original incomplete type, whose full view is
     --  the record type.
  
!    procedure Replace_Components (Typ : Entity_Id; Decl : Node_Id);
!    --  Subsidiary to Build_Derived_Record_Type. For untagged records, we
!    --  build a copy of the declaration tree of the parent, and we create
!    --  independently the list of components for the derived type. Semantic
!    --  information uses the component entities, but record representation
!    --  clauses are validated on the declaration tree. This procedure replaces
!    --  discriminants and components in the declaration with those that have
!    --  been created by Inherit_Components.
  
     procedure Set_Fixed_Range
       (E   : Entity_Id;
--- 670,691 ----
     --  declaration, Prev_T is the original incomplete type, whose full view is
     --  the record type.
  
!    procedure Replace_Discriminants (Typ : Entity_Id; Decl : Node_Id);
!    --  Subsidiary to Build_Derived_Record_Type. For untagged record types, we
!    --  first create the list of components for the derived type from that of
!    --  the parent by means of Inherit_Components and then build a copy of the
!    --  declaration tree of the parent with the help of the mapping returned by
!    --  Inherit_Components, which will for example be used to validate record
!    --  representation clauses given for the derived type. If the parent type
!    --  is private and has discriminants, the ancestor discriminants used in the
!    --  inheritance are that of the private declaration, whereas the ancestor
!    --  discriminants present in the declaration tree of the parent are that of
!    --  the full declaration; as a consequence, the remapping done during the
!    --  copy will leave the references to the ancestor discriminants unchanged
!    --  in the declaration tree and they need to be fixed up. If the derived
!    --  type has a known discriminant part, then the remapping done during the
!    --  copy will only create references to the girder discriminants and they
!    --  need to be replaced with references to the non-girder discriminants.
  
     procedure Set_Fixed_Range
       (E   : Entity_Id;
*************** package body Sem_Ch3 is
*** 716,723 ****
        Enclosing_Prot_Type : Entity_Id := Empty;
  
     begin
-       Check_SPARK_05_Restriction ("access type is not allowed", N);
- 
        if Is_Entry (Current_Scope)
          and then Is_Task_Type (Etype (Scope (Current_Scope)))
        then
--- 737,742 ----
*************** package body Sem_Ch3 is
*** 732,739 ****
        --  function, scope is the current one, because it is the one of the
        --  current type declaration, except for the pathological case below.
  
!       if Nkind_In (Related_Nod, N_Object_Declaration,
!                                 N_Access_Function_Definition)
        then
           Anon_Scope := Current_Scope;
  
--- 751,758 ----
        --  function, scope is the current one, because it is the one of the
        --  current type declaration, except for the pathological case below.
  
!       if Nkind (Related_Nod) in
!            N_Object_Declaration | N_Access_Function_Definition
        then
           Anon_Scope := Current_Scope;
  
*************** package body Sem_Ch3 is
*** 746,753 ****
  
           begin
              Par := Related_Nod;
!             while Nkind_In (Par, N_Access_Function_Definition,
!                                  N_Access_Definition)
              loop
                 Par := Parent (Par);
              end loop;
--- 765,772 ----
  
           begin
              Par := Related_Nod;
!             while Nkind (Par) in
!                     N_Access_Function_Definition | N_Access_Definition
              loop
                 Par := Parent (Par);
              end loop;
*************** package body Sem_Ch3 is
*** 773,779 ****
           --  be available in the scope that encloses the protected declaration.
           --  Otherwise the type is in the scope enclosing the subprogram.
  
!          --  If the function has formals, The return type of a subprogram
           --  declaration is analyzed in the scope of the subprogram (see
           --  Process_Formals) and thus the protected type, if present, is
           --  the scope of the current function scope.
--- 792,798 ----
           --  be available in the scope that encloses the protected declaration.
           --  Otherwise the type is in the scope enclosing the subprogram.
  
!          --  If the function has formals, the return type of a subprogram
           --  declaration is analyzed in the scope of the subprogram (see
           --  Process_Formals) and thus the protected type, if present, is
           --  the scope of the current function scope.
*************** package body Sem_Ch3 is
*** 814,820 ****
        if All_Present (N)
          and then Ada_Version >= Ada_2005
        then
!          Error_Msg_N ("ALL is not permitted for anonymous access types", N);
        end if;
  
        --  Ada 2005 (AI-254): In case of anonymous access to subprograms call
--- 833,839 ----
        if All_Present (N)
          and then Ada_Version >= Ada_2005
        then
!          Error_Msg_N ("ALL not permitted for anonymous access types", N);
        end if;
  
        --  Ada 2005 (AI-254): In case of anonymous access to subprograms call
*************** package body Sem_Ch3 is
*** 921,927 ****
        then
           if Is_Limited_Record (Desig_Type)
             and then Is_Class_Wide_Type (Desig_Type)
-            and then Tasking_Allowed
           then
              Build_Class_Wide_Master (Anon_Type);
  
--- 940,945 ----
*************** package body Sem_Ch3 is
*** 1008,1014 ****
           if Nkind (Def) in N_Has_Etype then
              if Etype (Def) = T_Name then
                 Error_Msg_N
!                  ("type& cannot be used before end of its declaration", Def);
              end if;
  
           --  If this is not a subtype, then this is an access_definition
--- 1026,1033 ----
           if Nkind (Def) in N_Has_Etype then
              if Etype (Def) = T_Name then
                 Error_Msg_N
!                  ("type& cannot be used before the end of its declaration",
!                   Def);
              end if;
  
           --  If this is not a subtype, then this is an access_definition
*************** package body Sem_Ch3 is
*** 1029,1035 ****
                 Param := First (Parameter_Specifications (Def));
                 while Present (Param) loop
                    Check_For_Premature_Usage (Parameter_Type (Param));
!                   Param := Next (Param);
                 end loop;
              end if;
  
--- 1048,1054 ----
                 Param := First (Parameter_Specifications (Def));
                 while Present (Param) loop
                    Check_For_Premature_Usage (Parameter_Type (Param));
!                   Next (Param);
                 end loop;
              end if;
  
*************** package body Sem_Ch3 is
*** 1050,1057 ****
     --  Start of processing for Access_Subprogram_Declaration
  
     begin
-       Check_SPARK_05_Restriction ("access type is not allowed", T_Def);
- 
        --  Associate the Itype node with the inner full-type declaration or
        --  subprogram spec or entry body. This is required to handle nested
        --  anonymous declarations. For example:
--- 1069,1074 ----
*************** package body Sem_Ch3 is
*** 1062,1081 ****
        --                                   (Z : access T)))
  
        D_Ityp := Associated_Node_For_Itype (Desig_Type);
!       while not (Nkind_In (D_Ityp, N_Full_Type_Declaration,
!                                    N_Private_Type_Declaration,
!                                    N_Private_Extension_Declaration,
!                                    N_Procedure_Specification,
!                                    N_Function_Specification,
!                                    N_Entry_Body)
! 
!                    or else
!                  Nkind_In (D_Ityp, N_Object_Declaration,
!                                    N_Object_Renaming_Declaration,
!                                    N_Formal_Object_Declaration,
!                                    N_Formal_Type_Declaration,
!                                    N_Task_Type_Declaration,
!                                    N_Protected_Type_Declaration))
        loop
           D_Ityp := Parent (D_Ityp);
           pragma Assert (D_Ityp /= Empty);
--- 1079,1096 ----
        --                                   (Z : access T)))
  
        D_Ityp := Associated_Node_For_Itype (Desig_Type);
!       while Nkind (D_Ityp) not in N_Full_Type_Declaration
!                                 | N_Private_Type_Declaration
!                                 | N_Private_Extension_Declaration
!                                 | N_Procedure_Specification
!                                 | N_Function_Specification
!                                 | N_Entry_Body
!                                 | N_Object_Declaration
!                                 | N_Object_Renaming_Declaration
!                                 | N_Formal_Object_Declaration
!                                 | N_Formal_Type_Declaration
!                                 | N_Task_Type_Declaration
!                                 | N_Protected_Type_Declaration
        loop
           D_Ityp := Parent (D_Ityp);
           pragma Assert (D_Ityp /= Empty);
*************** package body Sem_Ch3 is
*** 1083,1097 ****
  
        Set_Associated_Node_For_Itype (Desig_Type, D_Ityp);
  
!       if Nkind_In (D_Ityp, N_Procedure_Specification,
!                            N_Function_Specification)
        then
           Set_Scope (Desig_Type, Scope (Defining_Entity (D_Ityp)));
  
!       elsif Nkind_In (D_Ityp, N_Full_Type_Declaration,
!                               N_Object_Declaration,
!                               N_Object_Renaming_Declaration,
!                               N_Formal_Type_Declaration)
        then
           Set_Scope (Desig_Type, Scope (Defining_Identifier (D_Ityp)));
        end if;
--- 1098,1111 ----
  
        Set_Associated_Node_For_Itype (Desig_Type, D_Ityp);
  
!       if Nkind (D_Ityp) in N_Procedure_Specification | N_Function_Specification
        then
           Set_Scope (Desig_Type, Scope (Defining_Entity (D_Ityp)));
  
!       elsif Nkind (D_Ityp) in N_Full_Type_Declaration
!                             | N_Object_Declaration
!                             | N_Object_Renaming_Declaration
!                             | N_Formal_Type_Declaration
        then
           Set_Scope (Desig_Type, Scope (Defining_Identifier (D_Ityp)));
        end if;
*************** package body Sem_Ch3 is
*** 1172,1178 ****
              end;
           end if;
  
!          if not (Is_Type (Etype (Desig_Type))) then
              Error_Msg_N
                ("expect type in function specification",
                 Result_Definition (T_Def));
--- 1186,1192 ----
              end;
           end if;
  
!          if not Is_Type (Etype (Desig_Type)) then
              Error_Msg_N
                ("expect type in function specification",
                 Result_Definition (T_Def));
*************** package body Sem_Ch3 is
*** 1198,1219 ****
           begin
              F := First (Formals);
  
-             --  In ASIS mode, the access_to_subprogram may be analyzed twice,
-             --  when it is part of an unconstrained type and subtype expansion
-             --  is disabled. To avoid back-end problems with shared profiles,
-             --  use previous subprogram type as the designated type, and then
-             --  remove scope added above.
- 
-             if ASIS_Mode and then Present (Scope (Defining_Identifier (F)))
-             then
-                Set_Etype                    (T_Name, T_Name);
-                Init_Size_Align              (T_Name);
-                Set_Directly_Designated_Type (T_Name,
-                  Scope (Defining_Identifier (F)));
-                End_Scope;
-                return;
-             end if;
- 
              while Present (F) loop
                 if No (Parent (Defining_Identifier (F))) then
                    Set_Parent (Defining_Identifier (F), F);
--- 1212,1217 ----
*************** package body Sem_Ch3 is
*** 1327,1340 ****
        Full_Desig : Entity_Id;
  
     begin
-       Check_SPARK_05_Restriction ("access type is not allowed", Def);
- 
        --  Check for permissible use of incomplete type
  
        if Nkind (S) /= N_Subtype_Indication then
           Analyze (S);
  
!          if Present (Entity (S))
             and then Ekind (Root_Type (Entity (S))) = E_Incomplete_Type
           then
              Set_Directly_Designated_Type (T, Entity (S));
--- 1325,1337 ----
        Full_Desig : Entity_Id;
  
     begin
        --  Check for permissible use of incomplete type
  
        if Nkind (S) /= N_Subtype_Indication then
           Analyze (S);
  
!          if Nkind (S) in N_Has_Entity
!            and then Present (Entity (S))
             and then Ekind (Root_Type (Entity (S))) = E_Incomplete_Type
           then
              Set_Directly_Designated_Type (T, Entity (S));
*************** package body Sem_Ch3 is
*** 1417,1422 ****
--- 1414,1439 ----
  
        Set_Etype (T, T);
  
+       --  For SPARK, check that the designated type is compatible with
+       --  respect to volatility with the access type.
+ 
+       if SPARK_Mode /= Off
+          and then Comes_From_Source (T)
+       then
+          --  ??? UNIMPLEMENTED
+          --  In the case where the designated type is incomplete at this point,
+          --  performing this check here is harmless but the check will need to
+          --  be repeated when the designated type is complete.
+ 
+          --  The preceding call to Comes_From_Source is needed because the
+          --  FE sometimes introduces implicitly declared access types. See,
+          --  for example, the expansion of nested_po.ads in OA28-015.
+ 
+          Check_Volatility_Compatibility
+            (Full_Desig, T, "designated type", "access type",
+             Srcpos_Bearer => T);
+       end if;
+ 
        --  If the type has appeared already in a with_type clause, it is frozen
        --  and the pointer size is already set. Else, initialize.
  
*************** package body Sem_Ch3 is
*** 1800,1812 ****
                 --  of locally defined tagged types (or compiling with static
                 --  dispatch tables generation disabled) the corresponding
                 --  entry of the secondary dispatch table is filled when such
!                --  an entity is frozen. This is an expansion activity that must
!                --  be suppressed for ASIS because it leads to gigi elaboration
!                --  issues in annotate mode.
  
!                if not ASIS_Mode then
!                   Set_Has_Delayed_Freeze (New_Subp);
!                end if;
              end if;
  
              <<Continue>>
--- 1817,1825 ----
                 --  of locally defined tagged types (or compiling with static
                 --  dispatch tables generation disabled) the corresponding
                 --  entry of the secondary dispatch table is filled when such
!                --  an entity is frozen.
  
!                Set_Has_Delayed_Freeze (New_Subp);
              end if;
  
              <<Continue>>
*************** package body Sem_Ch3 is
*** 1943,1952 ****
           T := Find_Type_Of_Object
                  (Subtype_Indication (Component_Definition (N)), N);
  
-          if not Nkind_In (Typ, N_Identifier, N_Expanded_Name) then
-             Check_SPARK_05_Restriction ("subtype mark required", Typ);
-          end if;
- 
        --  Ada 2005 (AI-230): Access Definition case
  
        else
--- 1956,1961 ----
*************** package body Sem_Ch3 is
*** 1997,2003 ****
        --  package Sem).
  
        if Present (E) then
-          Check_SPARK_05_Restriction ("default expression is not allowed", E);
           Preanalyze_Default_Expression (E, T);
           Check_Initialization (T, E);
  
--- 2006,2011 ----
*************** package body Sem_Ch3 is
*** 2305,2317 ****
  
           procedure Build_Assertion_Bodies_For_Type (Typ : Entity_Id) is
           begin
-             --  Preanalyze and resolve the Default_Initial_Condition assertion
-             --  expression at the end of the declarations to catch any errors.
- 
-             if Has_DIC (Typ) then
-                Build_DIC_Procedure_Body (Typ);
-             end if;
- 
              if Nkind (Context) = N_Package_Specification then
  
                 --  Preanalyze and resolve the class-wide invariants of an
--- 2313,2318 ----
*************** package body Sem_Ch3 is
*** 2334,2364 ****
                          Partial_Invariant => True);
                    end if;
  
!                --  Preanalyze and resolve the invariants of a private type
!                --  at the end of the visible declarations to catch potential
!                --  errors. Inherited class-wide invariants are not included
!                --  because they have already been resolved.
  
!                elsif Decls = Visible_Declarations (Context)
!                  and then Ekind_In (Typ, E_Limited_Private_Type,
!                                          E_Private_Type,
!                                          E_Record_Type_With_Private)
!                  and then Has_Own_Invariants (Typ)
!                then
!                   Build_Invariant_Procedure_Body
!                     (Typ               => Typ,
!                      Partial_Invariant => True);
  
!                --  Preanalyze and resolve the invariants of a private type's
!                --  full view at the end of the private declarations to catch
!                --  potential errors.
  
!                elsif Decls = Private_Declarations (Context)
!                  and then not Is_Private_Type (Typ)
!                  and then Has_Private_Declaration (Typ)
!                  and then Has_Invariants (Typ)
!                then
!                   Build_Invariant_Procedure_Body (Typ);
                 end if;
              end if;
           end Build_Assertion_Bodies_For_Type;
--- 2335,2391 ----
                          Partial_Invariant => True);
                    end if;
  
!                elsif Decls = Visible_Declarations (Context) then
!                   --  Preanalyze and resolve the invariants of a private type
!                   --  at the end of the visible declarations to catch potential
!                   --  errors. Inherited class-wide invariants are not included
!                   --  because they have already been resolved.
  
!                   if Ekind (Typ) in E_Limited_Private_Type
!                                   | E_Private_Type
!                                   | E_Record_Type_With_Private
!                     and then Has_Own_Invariants (Typ)
!                   then
!                      Build_Invariant_Procedure_Body
!                        (Typ               => Typ,
!                         Partial_Invariant => True);
!                   end if;
  
!                   --  Preanalyze and resolve the Default_Initial_Condition
!                   --  assertion expression at the end of the declarations to
!                   --  catch any errors.
  
!                   if Ekind (Typ) in E_Limited_Private_Type
!                                   | E_Private_Type
!                                   | E_Record_Type_With_Private
!                      and then Has_Own_DIC (Typ)
!                   then
!                      Build_DIC_Procedure_Body
!                        (Typ         => Typ,
!                         Partial_DIC => True);
!                   end if;
! 
!                elsif Decls = Private_Declarations (Context) then
! 
!                   --  Preanalyze and resolve the invariants of a private type's
!                   --  full view at the end of the private declarations to catch
!                   --  potential errors.
! 
!                   if (not Is_Private_Type (Typ)
!                        or else Present (Underlying_Full_View (Typ)))
!                     and then Has_Private_Declaration (Typ)
!                     and then Has_Invariants (Typ)
!                   then
!                      Build_Invariant_Procedure_Body (Typ);
!                   end if;
! 
!                   if (not Is_Private_Type (Typ)
!                        or else Present (Underlying_Full_View (Typ)))
!                     and then Has_Private_Declaration (Typ)
!                     and then Has_DIC (Typ)
!                   then
!                      Build_DIC_Procedure_Body (Typ);
!                   end if;
                 end if;
              end if;
           end Build_Assertion_Bodies_For_Type;
*************** package body Sem_Ch3 is
*** 2460,2466 ****
                 end if;
  
                 exit when Last_Entity (Current_Scope) = Curr;
!                Curr := Next_Entity (Curr);
              end loop;
           end if;
  
--- 2487,2493 ----
                 end if;
  
                 exit when Last_Entity (Current_Scope) = Curr;
!                Next_Entity (Curr);
              end loop;
           end if;
  
*************** package body Sem_Ch3 is
*** 2486,2494 ****
           --  controlled primitives.
  
           if Nkind (Body_Spec) /= N_Procedure_Specification
!            or else not Nam_In (Chars (Body_Id), Name_Adjust,
!                                                 Name_Finalize,
!                                                 Name_Initialize)
           then
              return;
  
--- 2513,2521 ----
           --  controlled primitives.
  
           if Nkind (Body_Spec) /= N_Procedure_Specification
!            or else Chars (Body_Id) not in Name_Adjust
!                                         | Name_Finalize
!                                         | Name_Initialize
           then
              return;
  
*************** package body Sem_Ch3 is
*** 2523,2529 ****
           Spec_Id := Current_Entity (Body_Id);
  
           while Present (Spec_Id) loop
!             if Ekind_In (Spec_Id, E_Procedure, E_Generic_Procedure)
                and then Scope (Spec_Id) = Current_Scope
                and then Present (First_Formal (Spec_Id))
                and then No (Next_Formal (First_Formal (Spec_Id)))
--- 2550,2556 ----
           Spec_Id := Current_Entity (Body_Id);
  
           while Present (Spec_Id) loop
!             if Ekind (Spec_Id) in E_Procedure | E_Generic_Procedure
                and then Scope (Spec_Id) = Current_Scope
                and then Present (First_Formal (Spec_Id))
                and then No (Next_Formal (First_Formal (Spec_Id)))
*************** package body Sem_Ch3 is
*** 2613,2644 ****
        --  Local variables
  
        Context     : Node_Id   := Empty;
        Freeze_From : Entity_Id := Empty;
        Next_Decl   : Node_Id;
  
-       Body_Seen : Boolean := False;
-       --  Flag set when the first body [stub] is encountered
- 
     --  Start of processing for Analyze_Declarations
  
     begin
-       if Restriction_Check_Required (SPARK_05) then
-          Check_Later_Vs_Basic_Declarations (L, During_Parsing => False);
-       end if;
- 
        Decl := First (L);
        while Present (Decl) loop
  
-          --  Package spec cannot contain a package declaration in SPARK
- 
-          if Nkind (Decl) = N_Package_Declaration
-            and then Nkind (Parent (L)) = N_Package_Specification
-          then
-             Check_SPARK_05_Restriction
-               ("package specification cannot contain a package declaration",
-                Decl);
-          end if;
- 
           --  Complete analysis of declaration
  
           Analyze (Decl);
--- 2640,2655 ----
        --  Local variables
  
        Context     : Node_Id   := Empty;
+       Ctrl_Typ    : Entity_Id := Empty;
        Freeze_From : Entity_Id := Empty;
        Next_Decl   : Node_Id;
  
     --  Start of processing for Analyze_Declarations
  
     begin
        Decl := First (L);
        while Present (Decl) loop
  
           --  Complete analysis of declaration
  
           Analyze (Decl);
*************** package body Sem_Ch3 is
*** 2648,2653 ****
--- 2659,2674 ----
              Freeze_From := First_Entity (Current_Scope);
           end if;
  
+          --  Remember if the declaration we just processed is the full type
+          --  declaration of a controlled type (to handle late overriding of
+          --  initialize, adjust or finalize).
+ 
+          if Nkind (Decl) = N_Full_Type_Declaration
+            and then Is_Controlled (Defining_Identifier (Decl))
+          then
+             Ctrl_Typ := Defining_Identifier (Decl);
+          end if;
+ 
           --  At the end of a declarative part, freeze remaining entities
           --  declared in it. The end of the visible declarations of package
           --  specification is not the end of a declarative part if private
*************** package body Sem_Ch3 is
*** 2668,2675 ****
              if Nkind (Parent (L)) = N_Component_List then
                 null;
  
!             elsif Nkind_In (Parent (L), N_Protected_Definition,
!                                         N_Task_Definition)
              then
                 Check_Entry_Contracts;
  
--- 2689,2696 ----
              if Nkind (Parent (L)) = N_Component_List then
                 null;
  
!             elsif Nkind (Parent (L)) in
!                     N_Protected_Definition | N_Task_Definition
              then
                 Check_Entry_Contracts;
  
*************** package body Sem_Ch3 is
*** 2695,2701 ****
                   and then Present (First_Entity (Current_Scope))
                 then
                    while Is_Generic_Formal (Freeze_From) loop
!                      Freeze_From := Next_Entity (Freeze_From);
                    end loop;
  
                    Freeze_All (Freeze_From, Decl);
--- 2716,2722 ----
                   and then Present (First_Entity (Current_Scope))
                 then
                    while Is_Generic_Formal (Freeze_From) loop
!                      Next_Entity (Freeze_From);
                    end loop;
  
                    Freeze_All (Freeze_From, Decl);
*************** package body Sem_Ch3 is
*** 2703,2716 ****
  
                 else
                    --  For declarations in a subprogram body there is no issue
!                   --  with name resolution in aspect specifications, but in
!                   --  ASIS mode we need to preanalyze aspect specifications
!                   --  that may otherwise only be analyzed during expansion
!                   --  (e.g. during generation of a related subprogram).
! 
!                   if ASIS_Mode then
!                      Resolve_Aspects;
!                   end if;
  
                    Freeze_All (First_Entity (Current_Scope), Decl);
                    Freeze_From := Last_Entity (Current_Scope);
--- 2724,2730 ----
  
                 else
                    --  For declarations in a subprogram body there is no issue
!                   --  with name resolution in aspect specifications.
  
                    Freeze_All (First_Entity (Current_Scope), Decl);
                    Freeze_From := Last_Entity (Current_Scope);
*************** package body Sem_Ch3 is
*** 2736,2751 ****
  
                 --  End of a package declaration
  
-                --  In compilation mode the expansion of freeze node takes care
-                --  of resolving expressions of all aspects in the list. In ASIS
-                --  mode this must be done explicitly.
- 
-                if ASIS_Mode
-                  and then Scope (Current_Scope) = Standard_Standard
-                then
-                   Resolve_Aspects;
-                end if;
- 
                 --  This is a freeze point because it is the end of a
                 --  compilation unit.
  
--- 2750,2755 ----
*************** package body Sem_Ch3 is
*** 2807,2835 ****
              --  to examine Next_Decl as the late primitive idiom can only apply
              --  to the first encountered body.
  
-             --  The spec of the late primitive is not generated in ASIS mode to
-             --  ensure a consistent list of primitives that indicates the true
-             --  semantic structure of the program (which is not relevant when
-             --  generating executable code).
- 
              --  ??? A cleaner approach may be possible and/or this solution
              --  could be extended to general-purpose late primitives, TBD.
  
!             if not ASIS_Mode
!               and then not Body_Seen
!               and then not Is_Body (Decl)
!             then
!                Body_Seen := True;
  
!                if Nkind (Next_Decl) = N_Subprogram_Body then
!                   Handle_Late_Controlled_Primitive (Next_Decl);
!                end if;
  
!             else
!                --  In ASIS mode, if the next declaration is a body, complete
!                --  the analysis of declarations so far.
  
!                Resolve_Aspects;
              end if;
  
              Adjust_Decl;
--- 2811,2830 ----
              --  to examine Next_Decl as the late primitive idiom can only apply
              --  to the first encountered body.
  
              --  ??? A cleaner approach may be possible and/or this solution
              --  could be extended to general-purpose late primitives, TBD.
  
!             if Present (Ctrl_Typ) then
  
!                --  No need to continue searching for late body overriding if
!                --  the controlled type is already frozen.
  
!                if Is_Frozen (Ctrl_Typ) then
!                   Ctrl_Typ := Empty;
  
!                elsif Nkind (Next_Decl) = N_Subprogram_Body then
!                   Handle_Late_Controlled_Primitive (Next_Decl);
!                end if;
              end if;
  
              Adjust_Decl;
*************** package body Sem_Ch3 is
*** 2851,2857 ****
        if Present (L) then
           Context := Parent (L);
  
!          --  Certain contract annocations have forward visibility semantics and
           --  must be analyzed after all declarative items have been processed.
           --  This timing ensures that entities referenced by such contracts are
           --  visible.
--- 2846,2852 ----
        if Present (L) then
           Context := Parent (L);
  
!          --  Certain contract annotations have forward visibility semantics and
           --  must be analyzed after all declarative items have been processed.
           --  This timing ensures that entities referenced by such contracts are
           --  visible.
*************** package body Sem_Ch3 is
*** 3126,3141 ****
           when N_Derived_Type_Definition =>
              null;
  
!          --  For record types, discriminants are allowed, unless we are in
!          --  SPARK.
  
           when N_Record_Definition =>
!             if Present (Discriminant_Specifications (N)) then
!                Check_SPARK_05_Restriction
!                  ("discriminant type is not allowed",
!                   Defining_Identifier
!                     (First (Discriminant_Specifications (N))));
!             end if;
  
           when others =>
              if Present (Discriminant_Specifications (N)) then
--- 3121,3130 ----
           when N_Derived_Type_Definition =>
              null;
  
!          --  For record types, discriminants are allowed.
  
           when N_Record_Definition =>
!             null;
  
           when others =>
              if Present (Discriminant_Specifications (N)) then
*************** package body Sem_Ch3 is
*** 3175,3180 ****
--- 3164,3180 ----
  
                 Validate_Access_Type_Declaration (T, N);
  
+                --  If the type has contracts, we create the corresponding
+                --  wrapper at once, before analyzing the aspect specifications,
+                --  so that pre/postconditions can be handled directly on the
+                --  generated wrapper.
+ 
+                if Ada_Version >= Ada_2020
+                  and then Present (Aspect_Specifications (N))
+                then
+                   Build_Access_Subprogram_Wrapper (N);
+                end if;
+ 
              when N_Access_To_Object_Definition =>
                 Access_Type_Declaration (T, Def);
  
*************** package body Sem_Ch3 is
*** 3246,3257 ****
           return;
        end if;
  
-       --  Controlled type is not allowed in SPARK
- 
-       if Is_Visibly_Controlled (T) then
-          Check_SPARK_05_Restriction ("controlled type is not allowed", N);
-       end if;
- 
        --  Some common processing for all types
  
        Set_Depends_On_Private (T, Has_Private_Component (T));
--- 3246,3251 ----
*************** package body Sem_Ch3 is
*** 3393,3400 ****
        T : Entity_Id;
  
     begin
-       Check_SPARK_05_Restriction ("incomplete type is not allowed", N);
- 
        Generate_Definition (Defining_Identifier (N));
  
        --  Process an incomplete declaration. The identifier must not have been
--- 3387,3392 ----
*************** package body Sem_Ch3 is
*** 3638,3644 ****
           return;
        end if;
  
!       if Nkind_In (E, N_Integer_Literal, N_Real_Literal) then
           Set_Etype (E, Etype (Id));
        end if;
  
--- 3630,3636 ----
           return;
        end if;
  
!       if Nkind (E) in N_Integer_Literal | N_Real_Literal then
           Set_Etype (E, Etype (Id));
        end if;
  
*************** package body Sem_Ch3 is
*** 3672,3679 ****
        --  E is set to Expression (N) throughout this routine. When Expression
        --  (N) is modified, E is changed accordingly.
  
-       Prev_Entity : Entity_Id := Empty;
- 
        procedure Check_Dynamic_Object (Typ : Entity_Id);
        --  A library-level object with nonstatic discriminant constraints may
        --  require dynamic allocation. The declaration is illegal if the
--- 3664,3669 ----
*************** package body Sem_Ch3 is
*** 3699,3705 ****
        --  has aspects that require delayed analysis, the resolution of the
        --  aggregate must be deferred to the freeze point of the object. This
        --  special processing was created for address clauses, but it must
!       --  also apply to Alignment. This must be done before the aspect
        --  specifications are analyzed because we must handle the aggregate
        --  before the analysis of the object declaration is complete.
  
--- 3689,3695 ----
        --  has aspects that require delayed analysis, the resolution of the
        --  aggregate must be deferred to the freeze point of the object. This
        --  special processing was created for address clauses, but it must
!       --  also apply to address aspects. This must be done before the aspect
        --  specifications are analyzed because we must handle the aggregate
        --  before the analysis of the object declaration is complete.
  
*************** package body Sem_Ch3 is
*** 3847,3853 ****
                 while Present (Comp) loop
                    Check_Component (Etype (Comp), Parent (Comp));
  
!                   Comp := Next_Component (Comp);
                 end loop;
              end if;
           end Check_Component;
--- 3837,3843 ----
                 while Present (Comp) loop
                    Check_Component (Etype (Comp), Parent (Comp));
  
!                   Next_Component (Comp);
                 end loop;
              end if;
           end Check_Component;
*************** package body Sem_Ch3 is
*** 3922,3931 ****
  
        begin
           if Present (Aspect_Specifications (N)) then
!             A    := First (Aspect_Specifications (N));
!             A_Id := Get_Aspect_Id (Chars (Identifier (A)));
              while Present (A) loop
!                if A_Id = Aspect_Alignment or else A_Id = Aspect_Address then
  
                    --  Set flag on object entity, for later processing at
                    --  the freeze point.
--- 3912,3923 ----
  
        begin
           if Present (Aspect_Specifications (N)) then
!             A := First (Aspect_Specifications (N));
! 
              while Present (A) loop
!                A_Id := Get_Aspect_Id (Chars (Identifier (A)));
! 
!                if A_Id = Aspect_Address then
  
                    --  Set flag on object entity, for later processing at
                    --  the freeze point.
*************** package body Sem_Ch3 is
*** 3947,3953 ****
        Saved_IGR : constant Node_Id         := Ignored_Ghost_Region;
        --  Save the Ghost-related attributes to restore on exit
  
!       Related_Id : Entity_Id;
        Full_View_Present : Boolean := False;
  
     --  Start of processing for Analyze_Object_Declaration
--- 3939,3946 ----
        Saved_IGR : constant Node_Id         := Ignored_Ghost_Region;
        --  Save the Ghost-related attributes to restore on exit
  
!       Prev_Entity       : Entity_Id := Empty;
!       Related_Id        : Entity_Id;
        Full_View_Present : Boolean := False;
  
     --  Start of processing for Analyze_Object_Declaration
*************** package body Sem_Ch3 is
*** 4078,4084 ****
              then
                 null;
  
!             else
                 declare
                    Save_Typ : constant Entity_Id := Etype (Id);
                 begin
--- 4071,4077 ----
              then
                 null;
  
!             elsif Comes_From_Source (Id) then
                 declare
                    Save_Typ : constant Entity_Id := Etype (Id);
                 begin
*************** package body Sem_Ch3 is
*** 4205,4242 ****
  
        Act_T := T;
  
-       --  These checks should be performed before the initialization expression
-       --  is considered, so that the Object_Definition node is still the same
-       --  as in source code.
- 
-       --  In SPARK, the nominal subtype is always given by a subtype mark
-       --  and must not be unconstrained. (The only exception to this is the
-       --  acceptance of declarations of constants of type String.)
- 
-       if not Nkind_In (Object_Definition (N), N_Expanded_Name, N_Identifier)
-       then
-          Check_SPARK_05_Restriction
-            ("subtype mark required", Object_Definition (N));
- 
-       elsif Is_Array_Type (T)
-         and then not Is_Constrained (T)
-         and then T /= Standard_String
-       then
-          Check_SPARK_05_Restriction
-            ("subtype mark of constrained type expected",
-             Object_Definition (N));
-       end if;
- 
        if Is_Library_Level_Entity (Id) then
           Check_Dynamic_Object (T);
        end if;
  
-       --  There are no aliased objects in SPARK
- 
-       if Aliased_Present (N) then
-          Check_SPARK_05_Restriction ("aliased object is not allowed", N);
-       end if;
- 
        --  Process initialization expression if present and not in error
  
        if Present (E) and then E /= Error then
--- 4198,4207 ----
*************** package body Sem_Ch3 is
*** 4263,4269 ****
           Analyze (E);
  
           --  In case of errors detected in the analysis of the expression,
!          --  decorate it with the expected type to avoid cascaded errors
  
           if No (Etype (E)) then
              Set_Etype (E, T);
--- 4228,4234 ----
           Analyze (E);
  
           --  In case of errors detected in the analysis of the expression,
!          --  decorate it with the expected type to avoid cascaded errors.
  
           if No (Etype (E)) then
              Set_Etype (E, T);
*************** package body Sem_Ch3 is
*** 4310,4316 ****
              --  If the aggregate is limited it will be built in place, and its
              --  expansion is deferred until the object declaration is expanded.
  
!             if Is_Limited_Type (T) then
                 Set_Expansion_Delayed (E);
              end if;
  
--- 4275,4285 ----
              --  If the aggregate is limited it will be built in place, and its
              --  expansion is deferred until the object declaration is expanded.
  
!             --  This is also required when generating C code to ensure that an
!             --  object with an alignment or address clause can be initialized
!             --  by means of component by component assignments.
! 
!             if Is_Limited_Type (T) or else Modify_Tree_For_C then
                 Set_Expansion_Delayed (E);
              end if;
  
*************** package body Sem_Ch3 is
*** 4427,4444 ****
           Apply_Scalar_Range_Check (E, T);
           Apply_Static_Length_Check (E, T);
  
-          if Nkind (Original_Node (N)) = N_Object_Declaration
-            and then Comes_From_Source (Original_Node (N))
- 
-            --  Only call test if needed
- 
-            and then Restriction_Check_Required (SPARK_05)
-            and then not Is_SPARK_05_Initialization_Expr (Original_Node (E))
-          then
-             Check_SPARK_05_Restriction
-               ("initialization expression is not appropriate", E);
-          end if;
- 
           --  A formal parameter of a specific tagged type whose related
           --  subprogram is subject to pragma Extensions_Visible with value
           --  "False" cannot be implicitly converted to a class-wide type by
--- 4396,4401 ----
*************** package body Sem_Ch3 is
*** 4476,4490 ****
        --  We need a predicate check if the type has predicates that are not
        --  ignored, and if either there is an initializing expression, or for
        --  default initialization when we have at least one case of an explicit
!       --  default initial value and then this is not an internal declaration
!       --  whose initialization comes later (as for an aggregate expansion).
        --  If expression is an aggregate it may be expanded into assignments
        --  and the declaration itself is marked with No_Initialization, but
        --  the predicate still applies.
  
        if not Suppress_Assignment_Checks (N)
!         and then Present (Predicate_Function (T))
!         and then not Predicates_Ignored (T)
          and then
            (not No_Initialization (N)
              or else (Present (E) and then Nkind (E) = N_Aggregate))
--- 4433,4448 ----
        --  We need a predicate check if the type has predicates that are not
        --  ignored, and if either there is an initializing expression, or for
        --  default initialization when we have at least one case of an explicit
!       --  default initial value (including via a Default_Value or
!       --  Default_Component_Value aspect, see AI12-0301) and then this is not
!       --  an internal declaration whose initialization comes later (as for an
!       --  aggregate expansion).
        --  If expression is an aggregate it may be expanded into assignments
        --  and the declaration itself is marked with No_Initialization, but
        --  the predicate still applies.
  
        if not Suppress_Assignment_Checks (N)
!         and then (Predicate_Enabled (T) or else Has_Static_Predicate (T))
          and then
            (not No_Initialization (N)
              or else (Present (E) and then Nkind (E) = N_Aggregate))
*************** package body Sem_Ch3 is
*** 4495,4509 ****
        then
           --  If the type has a static predicate and the expression is known at
           --  compile time, see if the expression satisfies the predicate.
  
           if Present (E) then
              Check_Expression_Against_Static_Predicate (E, T);
           end if;
  
           --  If the type is a null record and there is no explicit initial
           --  expression, no predicate check applies.
  
!          if No (E) and then Is_Null_Record_Type (T) then
              null;
  
           --  Do not generate a predicate check if the initialization expression
--- 4453,4475 ----
        then
           --  If the type has a static predicate and the expression is known at
           --  compile time, see if the expression satisfies the predicate.
+          --  In the case of a static expression, this must be done even if
+          --  the predicate is not enabled (as per static expression rules).
  
           if Present (E) then
              Check_Expression_Against_Static_Predicate (E, T);
           end if;
  
+          --  Do not perform further predicate-related checks unless
+          --  predicates are enabled for the subtype.
+ 
+          if not Predicate_Enabled (T) then
+             null;
+ 
           --  If the type is a null record and there is no explicit initial
           --  expression, no predicate check applies.
  
!          elsif No (E) and then Is_Null_Record_Type (T) then
              null;
  
           --  Do not generate a predicate check if the initialization expression
*************** package body Sem_Ch3 is
*** 4536,4549 ****
  
        if not Is_Definite_Subtype (T) then
  
-          --  In SPARK, a declaration of unconstrained type is allowed
-          --  only for constants of type string.
- 
-          if Is_String_Type (T) and then not Constant_Present (N) then
-             Check_SPARK_05_Restriction
-               ("declaration of object of unconstrained type not allowed", N);
-          end if;
- 
           --  Nothing to do in deferred constant case
  
           if Constant_Present (N) and then No (E) then
--- 4502,4507 ----
*************** package body Sem_Ch3 is
*** 4581,4587 ****
              end if;
  
           --  Case of initialization present but in error. Set initial
!          --  expression as absent (but do not make above complaints)
  
           elsif E = Error then
              Set_Expression (N, Empty);
--- 4539,4545 ----
              end if;
  
           --  Case of initialization present but in error. Set initial
!          --  expression as absent (but do not make above complaints).
  
           elsif E = Error then
              Set_Expression (N, Empty);
*************** package body Sem_Ch3 is
*** 4590,4608 ****
           --  Case of initialization present
  
           else
!             --  Check restrictions in Ada 83
! 
!             if not Constant_Present (N) then
! 
!                --  Unconstrained variables not allowed in Ada 83 mode
  
!                if Ada_Version = Ada_83
!                  and then Comes_From_Source (Object_Definition (N))
!                then
!                   Error_Msg_N
!                     ("(Ada 83) unconstrained variable not allowed",
!                      Object_Definition (N));
!                end if;
              end if;
  
              --  Now we constrain the variable from the initializing expression
--- 4548,4562 ----
           --  Case of initialization present
  
           else
!             --  Unconstrained variables not allowed in Ada 83
  
!             if Ada_Version = Ada_83
!               and then not Constant_Present (N)
!               and then Comes_From_Source (Object_Definition (N))
!             then
!                Error_Msg_N
!                  ("(Ada 83) unconstrained variable not allowed",
!                   Object_Definition (N));
              end if;
  
              --  Now we constrain the variable from the initializing expression
*************** package body Sem_Ch3 is
*** 4637,4652 ****
                    Set_Ekind (Id, E_Variable);
                 end if;
  
!                Rewrite (N,
!                  Make_Object_Renaming_Declaration (Loc,
!                    Defining_Identifier => Id,
!                    Subtype_Mark        => New_Occurrence_Of (T, Loc),
!                    Name                => E));
  
!                Set_Renamed_Object (Id, E);
!                Freeze_Before (N, T);
!                Set_Is_Frozen (Id);
!                goto Leave;
  
              else
                 --  Ensure that the generated subtype has a unique external name
--- 4591,4616 ----
                    Set_Ekind (Id, E_Variable);
                 end if;
  
!                --  If the expression is an aggregate it contains the required
!                --  discriminant values but it has not been resolved yet, so do
!                --  it now, and treat it as the initial expression of an object
!                --  declaration, rather than a renaming.
  
!                if Nkind (E) = N_Aggregate then
!                   Analyze_And_Resolve (E, T);
! 
!                else
!                   Rewrite (N,
!                     Make_Object_Renaming_Declaration (Loc,
!                       Defining_Identifier => Id,
!                       Subtype_Mark        => New_Occurrence_Of (T, Loc),
!                       Name                => E));
! 
!                   Set_Renamed_Object (Id, E);
!                   Freeze_Before (N, T);
!                   Set_Is_Frozen (Id);
!                   goto Leave;
!                end if;
  
              else
                 --  Ensure that the generated subtype has a unique external name
*************** package body Sem_Ch3 is
*** 4671,4677 ****
                 Act_T := Find_Type_Of_Object (Object_Definition (N), N);
              end if;
  
!             --  Propagate attributes to full view when needed.
  
              Set_Is_Constr_Subt_For_U_Nominal (Act_T);
  
--- 4635,4641 ----
                 Act_T := Find_Type_Of_Object (Object_Definition (N), N);
              end if;
  
!             --  Propagate attributes to full view when needed
  
              Set_Is_Constr_Subt_For_U_Nominal (Act_T);
  
*************** package body Sem_Ch3 is
*** 5142,5148 ****
             ("parent of type extension must be a tagged type ", Indic);
           goto Leave;
  
!       elsif Ekind_In (Parent_Type, E_Void, E_Incomplete_Type) then
           Error_Msg_N ("premature derivation of incomplete type", Indic);
           goto Leave;
  
--- 5106,5112 ----
             ("parent of type extension must be a tagged type ", Indic);
           goto Leave;
  
!       elsif Ekind (Parent_Type) in E_Void | E_Incomplete_Type then
           Error_Msg_N ("premature derivation of incomplete type", Indic);
           goto Leave;
  
*************** package body Sem_Ch3 is
*** 5338,5346 ****
       (N    : Node_Id;
        Skip : Boolean := False)
     is
!       Id       : constant Entity_Id := Defining_Identifier (N);
!       R_Checks : Check_Result;
!       T        : Entity_Id;
  
     begin
        Generate_Definition (Id);
--- 5302,5309 ----
       (N    : Node_Id;
        Skip : Boolean := False)
     is
!       Id : constant Entity_Id := Defining_Identifier (N);
!       T  : Entity_Id;
  
     begin
        Generate_Definition (Id);
*************** package body Sem_Ch3 is
*** 5441,5498 ****
           end if;
        end if;
  
-       --  Subtype of Boolean cannot have a constraint in SPARK
- 
-       if Is_Boolean_Type (T)
-         and then Nkind (Subtype_Indication (N)) = N_Subtype_Indication
-       then
-          Check_SPARK_05_Restriction
-            ("subtype of Boolean cannot have constraint", N);
-       end if;
- 
-       if Nkind (Subtype_Indication (N)) = N_Subtype_Indication then
-          declare
-             Cstr     : constant Node_Id := Constraint (Subtype_Indication (N));
-             One_Cstr : Node_Id;
-             Low      : Node_Id;
-             High     : Node_Id;
- 
-          begin
-             if Nkind (Cstr) = N_Index_Or_Discriminant_Constraint then
-                One_Cstr := First (Constraints (Cstr));
-                while Present (One_Cstr) loop
- 
-                   --  Index or discriminant constraint in SPARK must be a
-                   --  subtype mark.
- 
-                   if not
-                     Nkind_In (One_Cstr, N_Identifier, N_Expanded_Name)
-                   then
-                      Check_SPARK_05_Restriction
-                        ("subtype mark required", One_Cstr);
- 
-                   --  String subtype must have a lower bound of 1 in SPARK.
-                   --  Note that we do not need to test for the nonstatic case
-                   --  here, since that was already taken care of in
-                   --  Process_Range_Expr_In_Decl.
- 
-                   elsif Base_Type (T) = Standard_String then
-                      Get_Index_Bounds (One_Cstr, Low, High);
- 
-                      if Is_OK_Static_Expression (Low)
-                        and then Expr_Value (Low) /= 1
-                      then
-                         Check_SPARK_05_Restriction
-                           ("String subtype must have lower bound of 1", N);
-                      end if;
-                   end if;
- 
-                   Next (One_Cstr);
-                end loop;
-             end if;
-          end;
-       end if;
- 
        --  In the case where there is no constraint given in the subtype
        --  indication, Process_Subtype just returns the Subtype_Mark, so its
        --  semantic attributes must be established here.
--- 5404,5409 ----
*************** package body Sem_Ch3 is
*** 5500,5513 ****
        if Nkind (Subtype_Indication (N)) /= N_Subtype_Indication then
           Set_Etype (Id, Base_Type (T));
  
-          --  Subtype of unconstrained array without constraint is not allowed
-          --  in SPARK.
- 
-          if Is_Array_Type (T) and then not Is_Constrained (T) then
-             Check_SPARK_05_Restriction
-               ("subtype of unconstrained array must have constraint", N);
-          end if;
- 
           case Ekind (T) is
              when Array_Kind =>
                 Set_Ekind                     (Id, E_Array_Subtype);
--- 5411,5416 ----
*************** package body Sem_Ch3 is
*** 5571,5576 ****
--- 5474,5480 ----
                 Set_Class_Wide_Type      (Id, Class_Wide_Type    (T));
                 Set_Cloned_Subtype       (Id, T);
                 Set_Is_Tagged_Type       (Id, True);
+                Set_Is_Limited_Record    (Id, Is_Limited_Record  (T));
                 Set_Has_Unknown_Discriminants
                                          (Id, True);
                 Set_No_Tagged_Streams_Pragma
*************** package body Sem_Ch3 is
*** 5829,5840 ****
--- 5733,5765 ----
        then
           Set_Subprograms_For_Type (Id, Subprograms_For_Type (T));
  
+          --  If the current declaration created both a private and a full view,
+          --  then propagate Predicate_Function to the latter as well.
+ 
+          if Present (Full_View (Id))
+            and then No (Predicate_Function (Full_View (Id)))
+          then
+             Set_Subprograms_For_Type
+               (Full_View (Id), Subprograms_For_Type (Id));
+          end if;
+ 
           if Has_Static_Predicate (T) then
              Set_Has_Static_Predicate (Id);
              Set_Static_Discrete_Predicate (Id, Static_Discrete_Predicate (T));
           end if;
        end if;
  
+       --  If the base type is a scalar type, or else if there is no
+       --  constraint, the atomic flag is inherited by the subtype.
+       --  Ditto for the Independent aspect.
+ 
+       if Is_Scalar_Type (Id)
+         or else Is_Entity_Name (Subtype_Indication (N))
+       then
+          Set_Is_Atomic (Id, Is_Atomic (T));
+          Set_Is_Independent (Id, Is_Independent (T));
+       end if;
+ 
        --  Remaining processing depends on characteristics of base type
  
        T := Etype (Id);
*************** package body Sem_Ch3 is
*** 5845,5850 ****
--- 5770,5776 ----
  
        if Is_Interface (T) then
           Set_Is_Interface (Id);
+          Set_Is_Limited_Interface (Id, Is_Limited_Interface (T));
        end if;
  
        if Present (Generic_Parent_Type (N))
*************** package body Sem_Ch3 is
*** 5913,5993 ****
  
        --  Check that Constraint_Error is raised for a scalar subtype indication
        --  when the lower or upper bound of a non-null range lies outside the
!       --  range of the type mark.
  
        if Nkind (Subtype_Indication (N)) = N_Subtype_Indication then
!          if Is_Scalar_Type (Etype (Id))
!            and then Scalar_Range (Id) /=
!                     Scalar_Range
!                       (Etype (Subtype_Mark (Subtype_Indication (N))))
!          then
!             Apply_Range_Check
!               (Scalar_Range (Id),
!                Etype (Subtype_Mark (Subtype_Indication (N))));
! 
!          --  In the array case, check compatibility for each index
  
!          elsif Is_Array_Type (Etype (Id)) and then Present (First_Index (Id))
!          then
!             --  This really should be a subprogram that finds the indications
!             --  to check???
  
!             declare
!                Subt_Index   : Node_Id := First_Index (Id);
!                Target_Index : Node_Id :=
!                                 First_Index (Etype
!                                   (Subtype_Mark (Subtype_Indication (N))));
!                Has_Dyn_Chk  : Boolean := Has_Dynamic_Range_Check (N);
  
-             begin
                 while Present (Subt_Index) loop
!                   if ((Nkind (Subt_Index) = N_Identifier
!                         and then Ekind (Entity (Subt_Index)) in Scalar_Kind)
                         or else Nkind (Subt_Index) = N_Subtype_Indication)
                      and then
                        Nkind (Scalar_Range (Etype (Subt_Index))) = N_Range
                    then
!                      declare
!                         Target_Typ : constant Entity_Id :=
!                                        Etype (Target_Index);
!                      begin
!                         R_Checks :=
!                           Get_Range_Checks
!                             (Scalar_Range (Etype (Subt_Index)),
!                              Target_Typ,
!                              Etype (Subt_Index),
!                              Defining_Identifier (N));
! 
!                         --  Reset Has_Dynamic_Range_Check on the subtype to
!                         --  prevent elision of the index check due to a dynamic
!                         --  check generated for a preceding index (needed since
!                         --  Insert_Range_Checks tries to avoid generating
!                         --  redundant checks on a given declaration).
! 
!                         Set_Has_Dynamic_Range_Check (N, False);
! 
!                         Insert_Range_Checks
!                           (R_Checks,
!                            N,
!                            Target_Typ,
!                            Sloc (Defining_Identifier (N)));
! 
!                         --  Record whether this index involved a dynamic check
! 
!                         Has_Dyn_Chk :=
!                           Has_Dyn_Chk or else Has_Dynamic_Range_Check (N);
!                      end;
                    end if;
  
                    Next_Index (Subt_Index);
                    Next_Index (Target_Index);
                 end loop;
! 
!                --  Finally, mark whether the subtype involves dynamic checks
! 
!                Set_Has_Dynamic_Range_Check (N, Has_Dyn_Chk);
!             end;
!          end if;
        end if;
  
        Set_Optimize_Alignment_Flags (Id);
--- 5839,5884 ----
  
        --  Check that Constraint_Error is raised for a scalar subtype indication
        --  when the lower or upper bound of a non-null range lies outside the
!       --  range of the type mark. Likewise for an array subtype, but check the
!       --  compatibility for each index.
  
        if Nkind (Subtype_Indication (N)) = N_Subtype_Indication then
!          declare
!             Indic_Typ    : constant Entity_Id :=
!                              Etype (Subtype_Mark (Subtype_Indication (N)));
!             Subt_Index   : Node_Id;
!             Target_Index : Node_Id;
  
!          begin
!             if Is_Scalar_Type (Etype (Id))
!               and then Scalar_Range (Id) /= Scalar_Range (Indic_Typ)
!             then
!                Apply_Range_Check (Scalar_Range (Id), Indic_Typ);
  
!             elsif Is_Array_Type (Etype (Id))
!               and then Present (First_Index (Id))
!             then
!                Subt_Index   := First_Index (Id);
!                Target_Index := First_Index (Indic_Typ);
  
                 while Present (Subt_Index) loop
!                   if ((Nkind (Subt_Index) in N_Expanded_Name | N_Identifier
!                         and then Is_Scalar_Type (Entity (Subt_Index)))
                         or else Nkind (Subt_Index) = N_Subtype_Indication)
                      and then
                        Nkind (Scalar_Range (Etype (Subt_Index))) = N_Range
                    then
!                      Apply_Range_Check
!                        (Scalar_Range (Etype (Subt_Index)),
!                         Etype (Target_Index),
!                         Insert_Node => N);
                    end if;
  
                    Next_Index (Subt_Index);
                    Next_Index (Target_Index);
                 end loop;
!             end if;
!          end;
        end if;
  
        Set_Optimize_Alignment_Flags (Id);
*************** package body Sem_Ch3 is
*** 6129,6137 ****
        Element_Type  : Entity_Id;
        Implicit_Base : Entity_Id;
        Index         : Node_Id;
!       Nb_Index      : Nat;
        Priv          : Entity_Id;
!       Related_Id    : Entity_Id := Empty;
  
     begin
        if Nkind (Def) = N_Constrained_Array_Definition then
--- 6020,6028 ----
        Element_Type  : Entity_Id;
        Implicit_Base : Entity_Id;
        Index         : Node_Id;
!       Nb_Index      : Pos;
        Priv          : Entity_Id;
!       Related_Id    : Entity_Id;
  
     begin
        if Nkind (Def) = N_Constrained_Array_Definition then
*************** package body Sem_Ch3 is
*** 6162,6175 ****
              Set_Etype (Index, Standard_Boolean);
           end if;
  
-          --  Check SPARK restriction requiring a subtype mark
- 
-          if not Nkind_In (Index, N_Identifier, N_Expanded_Name) then
-             Check_SPARK_05_Restriction ("subtype mark required", Index);
-          end if;
- 
           --  Add a subtype declaration for each index of private array type
!          --  declaration whose etype is also private. For example:
  
           --     package Pkg is
           --        type Index is private;
--- 6053,6060 ----
              Set_Etype (Index, Standard_Boolean);
           end if;
  
           --  Add a subtype declaration for each index of private array type
!          --  declaration whose type is also private. For example:
  
           --     package Pkg is
           --        type Index is private;
*************** package body Sem_Ch3 is
*** 6179,6193 ****
  
           --  This is currently required by the expander for the internally
           --  generated equality subprogram of records with variant parts in
!          --  which the etype of some component is such private type.
  
!          if Ekind (Current_Scope) = E_Package
             and then In_Private_Part (Current_Scope)
             and then Has_Private_Declaration (Etype (Index))
           then
              declare
                 Loc   : constant Source_Ptr := Sloc (Def);
!                Decl  : Entity_Id;
                 New_E : Entity_Id;
  
              begin
--- 6064,6081 ----
  
           --  This is currently required by the expander for the internally
           --  generated equality subprogram of records with variant parts in
!          --  which the type of some component is such a private type. And it
!          --  also helps semantic analysis in peculiar cases where the array
!          --  type is referenced from an instance but not the index directly.
  
!          if Is_Package_Or_Generic_Package (Current_Scope)
             and then In_Private_Part (Current_Scope)
             and then Has_Private_Declaration (Etype (Index))
+            and then Scope (Etype (Index)) = Current_Scope
           then
              declare
                 Loc   : constant Source_Ptr := Sloc (Def);
!                Decl  : Node_Id;
                 New_E : Entity_Id;
  
              begin
*************** package body Sem_Ch3 is
*** 6240,6253 ****
  
        if Present (Component_Typ) then
           Element_Type := Process_Subtype (Component_Typ, P, Related_Id, 'C');
- 
           Set_Etype (Component_Typ, Element_Type);
  
-          if not Nkind_In (Component_Typ, N_Identifier, N_Expanded_Name) then
-             Check_SPARK_05_Restriction
-               ("subtype mark required", Component_Typ);
-          end if;
- 
        --  Ada 2005 (AI-230): Access Definition case
  
        else pragma Assert (Present (Access_Definition (Component_Def)));
--- 6128,6135 ----
*************** package body Sem_Ch3 is
*** 6289,6295 ****
        --  Constrained array case
  
        if No (T) then
!          T := Create_Itype (E_Void, P, Related_Id, 'T');
        end if;
  
        if Nkind (Def) = N_Constrained_Array_Definition then
--- 6171,6182 ----
        --  Constrained array case
  
        if No (T) then
!          --  We might be creating more than one itype with the same Related_Id,
!          --  e.g. for an array object definition and its initial value. Give
!          --  them unique suffixes, because GNATprove require distinct types to
!          --  have different names.
! 
!          T := Create_Itype (E_Void, P, Related_Id, 'T', Suffix_Index => -1);
        end if;
  
        if Nkind (Def) = N_Constrained_Array_Definition then
*************** package body Sem_Ch3 is
*** 6333,6339 ****
  
        --  Unconstrained array case
  
!       else
           Set_Ekind                    (T, E_Array_Type);
           Init_Size_Align              (T);
           Set_Etype                    (T, T);
--- 6220,6227 ----
  
        --  Unconstrained array case
  
!       else pragma Assert (Nkind (Def) = N_Unconstrained_Array_Definition);
! 
           Set_Ekind                    (T, E_Array_Type);
           Init_Size_Align              (T);
           Set_Etype                    (T, T);
*************** package body Sem_Ch3 is
*** 6358,6365 ****
        Set_Packed_Array_Impl_Type (T, Empty);
  
        if Aliased_Present (Component_Definition (Def)) then
-          Check_SPARK_05_Restriction
-            ("aliased is not allowed", Component_Definition (Def));
           Set_Has_Aliased_Components (Etype (T));
  
           --  AI12-001: All aliased objects are considered to be specified as
--- 6246,6251 ----
*************** package body Sem_Ch3 is
*** 6529,6589 ****
  
        Mark_Rewrite_Insertion (Decl);
  
-       --  In ASIS mode, analyze the profile on the original node, because
-       --  the separate copy does not provide enough links to recover the
-       --  original tree. Analysis is limited to type annotations, within
-       --  a temporary scope that serves as an anonymous subprogram to collect
-       --  otherwise useless temporaries and itypes.
- 
-       if ASIS_Mode then
-          declare
-             Typ : constant Entity_Id := Make_Temporary (Loc, 'S');
- 
-          begin
-             if Nkind (Spec) = N_Access_Function_Definition then
-                Set_Ekind (Typ, E_Function);
-             else
-                Set_Ekind (Typ, E_Procedure);
-             end if;
- 
-             Set_Parent (Typ, N);
-             Set_Scope  (Typ, Current_Scope);
-             Push_Scope (Typ);
- 
-             --  Nothing to do if procedure is parameterless
- 
-             if Present (Parameter_Specifications (Spec)) then
-                Process_Formals (Parameter_Specifications (Spec), Spec);
-             end if;
- 
-             if Nkind (Spec) = N_Access_Function_Definition then
-                declare
-                   Def : constant Node_Id := Result_Definition (Spec);
- 
-                begin
-                   --  The result might itself be an anonymous access type, so
-                   --  have to recurse.
- 
-                   if Nkind (Def) = N_Access_Definition then
-                      if Present (Access_To_Subprogram_Definition (Def)) then
-                         Set_Etype
-                           (Def,
-                            Replace_Anonymous_Access_To_Protected_Subprogram
-                             (Spec));
-                      else
-                         Find_Type (Subtype_Mark (Def));
-                      end if;
- 
-                   else
-                      Find_Type (Def);
-                   end if;
-                end;
-             end if;
- 
-             End_Scope;
-          end;
-       end if;
- 
        --  Insert the new declaration in the nearest enclosing scope. If the
        --  parent is a body and N is its return type, the declaration belongs
        --  in the enclosing scope. Likewise if N is the type of a parameter.
--- 6415,6420 ----
*************** package body Sem_Ch3 is
*** 6643,6649 ****
  
        Mark_Rewrite_Insertion (Comp);
  
!       if Nkind_In (N, N_Object_Declaration, N_Access_Function_Definition)
          or else (Nkind (Parent (N)) = N_Full_Type_Declaration
                    and then not Is_Type (Current_Scope))
        then
--- 6474,6480 ----
  
        Mark_Rewrite_Insertion (Comp);
  
!       if Nkind (N) in N_Object_Declaration | N_Access_Function_Definition
          or else (Nkind (Parent (N)) = N_Full_Type_Declaration
                    and then not Is_Type (Current_Scope))
        then
*************** package body Sem_Ch3 is
*** 6669,6674 ****
--- 6500,6643 ----
        return Anon;
     end Replace_Anonymous_Access_To_Protected_Subprogram;
  
+    -------------------------------------
+    -- Build_Access_Subprogram_Wrapper --
+    -------------------------------------
+ 
+    procedure Build_Access_Subprogram_Wrapper (Decl : Node_Id) is
+       Loc      : constant Source_Ptr := Sloc (Decl);
+       Id       : constant Entity_Id  := Defining_Identifier (Decl);
+       Type_Def : constant Node_Id    := Type_Definition (Decl);
+       Specs   :  constant List_Id    :=
+                               Parameter_Specifications (Type_Def);
+       Profile : constant List_Id     := New_List;
+       Subp    : constant Entity_Id   := Make_Temporary (Loc, 'A');
+ 
+       Contracts : constant List_Id := New_List;
+       Form_P    : Node_Id;
+       New_P     : Node_Id;
+       New_Decl  : Node_Id;
+       Spec      : Node_Id;
+ 
+       procedure Replace_Type_Name (Expr : Node_Id);
+       --  In the expressions for contract aspects, replace occurrences of the
+       --  access type with the name of the subprogram entity, as needed, e.g.
+       --  for 'Result. Aspects that are not contracts, e.g. Size or Alignment)
+       --  remain on the original access type declaration. What about expanded
+       --  names denoting formals, whose prefix in source is the type name ???
+ 
+       -----------------------
+       -- Replace_Type_Name --
+       -----------------------
+ 
+       procedure Replace_Type_Name (Expr : Node_Id) is
+          function Process (N : Node_Id) return Traverse_Result;
+          function Process (N : Node_Id) return Traverse_Result is
+          begin
+             if Nkind (N) = N_Attribute_Reference
+               and then Is_Entity_Name (Prefix (N))
+               and then Chars (Prefix (N)) = Chars (Id)
+             then
+                Set_Prefix (N, Make_Identifier (Sloc (N), Chars (Subp)));
+             end if;
+ 
+             return OK;
+          end Process;
+ 
+          procedure Traverse is new Traverse_Proc (Process);
+       begin
+          Traverse (Expr);
+       end Replace_Type_Name;
+ 
+    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
+          Error_Msg_N
+            ("illegal pre/postcondition on access type", Decl);
+          return;
+       end if;
+ 
+       declare
+          Asp  : Node_Id;
+          A_Id : Aspect_Id;
+          Cond : Node_Id;
+          Expr : Node_Id;
+ 
+       begin
+          Asp := First (Aspect_Specifications (Decl));
+          while Present (Asp) loop
+             A_Id := Get_Aspect_Id (Chars (Identifier (Asp)));
+             if A_Id = Aspect_Pre or else A_Id = Aspect_Post then
+                Cond := Asp;
+                Expr := Expression (Cond);
+                Replace_Type_Name (Expr);
+                Next (Asp);
+ 
+                Remove (Cond);
+                Append (Cond, Contracts);
+ 
+             else
+                Next (Asp);
+             end if;
+          end loop;
+       end;
+ 
+       --  If there are no contract aspects, no need for a wrapper.
+ 
+       if Is_Empty_List (Contracts) then
+          return;
+       end if;
+ 
+       Form_P := First (Specs);
+ 
+       while Present (Form_P) loop
+          New_P := New_Copy_Tree (Form_P);
+          Set_Defining_Identifier (New_P,
+            Make_Defining_Identifier
+             (Loc, Chars (Defining_Identifier (Form_P))));
+          Append (New_P, Profile);
+          Next (Form_P);
+       end loop;
+ 
+       --  Add to parameter specifications the access parameter that is passed
+       --  in from an indirect call.
+ 
+       Append (
+          Make_Parameter_Specification (Loc,
+            Defining_Identifier => Make_Temporary (Loc, 'P'),
+            Parameter_Type  =>  New_Occurrence_Of (Id, Loc)),
+          Profile);
+ 
+       if Nkind (Type_Def) = N_Access_Procedure_Definition then
+          Spec :=
+            Make_Procedure_Specification (Loc,
+              Defining_Unit_Name       => Subp,
+              Parameter_Specifications => Profile);
+       else
+          Spec :=
+            Make_Function_Specification (Loc,
+              Defining_Unit_Name       => Subp,
+              Parameter_Specifications => Profile,
+              Result_Definition        =>
+                New_Copy_Tree
+                  (Result_Definition (Type_Definition (Decl))));
+       end if;
+ 
+       New_Decl :=
+         Make_Subprogram_Declaration (Loc, Specification => Spec);
+       Set_Aspect_Specifications (New_Decl, Contracts);
+ 
+       Insert_After (Decl, New_Decl);
+       Set_Access_Subprogram_Wrapper (Designated_Type (Id), Subp);
+       Build_Access_Subprogram_Wrapper_Body (Decl, New_Decl);
+    end Build_Access_Subprogram_Wrapper;
+ 
     -------------------------------
     -- Build_Derived_Access_Type --
     -------------------------------
*************** package body Sem_Ch3 is
*** 7133,7146 ****
                    Error_Msg_NE
                      ("new discriminant& must constrain old one", N, New_Disc);
  
!                elsif not
!                  Subtypes_Statically_Compatible
!                    (Etype (New_Disc),
!                     Etype (Corresponding_Discriminant (New_Disc)))
!                then
!                   Error_Msg_NE
!                     ("& not statically compatible with parent discriminant",
!                       N, New_Disc);
                 end if;
  
                 Next_Discriminant (New_Disc);
--- 7102,7114 ----
                    Error_Msg_NE
                      ("new discriminant& must constrain old one", N, New_Disc);
  
!                --  If a new discriminant is used in the constraint, then its
!                --  subtype must be statically compatible with the subtype of
!                --  the parent discriminant (RM 3.7(15)).
! 
!                else
!                   Check_Constraining_Discriminant
!                     (New_Disc, Corresponding_Discriminant (New_Disc));
                 end if;
  
                 Next_Discriminant (New_Disc);
*************** package body Sem_Ch3 is
*** 7293,7299 ****
           --  Introduce an implicit base type for the derived type even if there
           --  is no constraint attached to it, since this seems closer to the
           --  Ada semantics. Build a full type declaration tree for the derived
!          --  type using the implicit base type as the defining identifier. The
           --  build a subtype declaration tree which applies the constraint (if
           --  any) have it replace the derived type declaration.
  
--- 7261,7267 ----
           --  Introduce an implicit base type for the derived type even if there
           --  is no constraint attached to it, since this seems closer to the
           --  Ada semantics. Build a full type declaration tree for the derived
!          --  type using the implicit base type as the defining identifier. Then
           --  build a subtype declaration tree which applies the constraint (if
           --  any) have it replace the derived type declaration.
  
*************** package body Sem_Ch3 is
*** 7513,7518 ****
--- 7481,7487 ----
        Set_First_Rep_Item (Implicit_Base, First_Rep_Item (Parent_Base));
        Set_Parent         (Implicit_Base, Parent (Derived_Type));
        Set_Is_Known_Valid (Implicit_Base, Is_Known_Valid (Parent_Base));
+       Set_Is_Volatile    (Implicit_Base, Is_Volatile    (Parent_Base));
  
        --  Set RM Size for discrete type or decimal fixed-point type
        --  Ordinary fixed-point is excluded, why???
*************** package body Sem_Ch3 is
*** 7696,7701 ****
--- 7665,7674 ----
        Full_Der  : Entity_Id           := New_Copy (Derived_Type);
        Full_P    : Entity_Id;
  
+       function Available_Full_View (Typ : Entity_Id) return Entity_Id;
+       --  Return the Full_View or Underlying_Full_View of Typ, whichever is
+       --  present (they cannot be both present for the same type), or Empty.
+ 
        procedure Build_Full_Derivation;
        --  Build full derivation, i.e. derive from the full view
  
*************** package body Sem_Ch3 is
*** 7703,7708 ****
--- 7676,7707 ----
        --  Copy derived type declaration, replace parent with its full view,
        --  and build derivation
  
+       -------------------------
+       -- Available_Full_View --
+       -------------------------
+ 
+       function Available_Full_View (Typ : Entity_Id) return Entity_Id is
+       begin
+          if Present (Full_View (Typ)) then
+             return Full_View (Typ);
+ 
+          elsif Present (Underlying_Full_View (Typ)) then
+ 
+             --  We should be called on a type with an underlying full view
+             --  only by means of the recursive call made in Copy_And_Build
+             --  through the first call to Build_Derived_Type, or else if
+             --  the parent scope is being analyzed because we are deriving
+             --  a completion.
+ 
+             pragma Assert (Is_Completion or else In_Private_Part (Par_Scope));
+ 
+             return Underlying_Full_View (Typ);
+ 
+          else
+             return Empty;
+          end if;
+       end Available_Full_View;
+ 
        ---------------------------
        -- Build_Full_Derivation --
        ---------------------------
*************** package body Sem_Ch3 is
*** 7722,7728 ****
           --  part of a child unit. In that case retrieve the full view of
           --  the parent momentarily.
  
!          elsif not In_Same_Source_Unit (N, Parent_Type) then
              Full_P := Full_View (Parent_Type);
              Exchange_Declarations (Parent_Type);
              Copy_And_Build;
--- 7721,7729 ----
           --  part of a child unit. In that case retrieve the full view of
           --  the parent momentarily.
  
!          elsif not In_Same_Source_Unit (N, Parent_Type)
!            and then Present (Full_View (Parent_Type))
!          then
              Full_P := Full_View (Parent_Type);
              Exchange_Declarations (Parent_Type);
              Copy_And_Build;
*************** package body Sem_Ch3 is
*** 7753,7771 ****
              Full_Parent := Full_View (Full_Parent);
           end if;
  
!          --  And its underlying full view if necessary
  
           if Is_Private_Type (Full_Parent)
             and then Present (Underlying_Full_View (Full_Parent))
           then
              Full_Parent := Underlying_Full_View (Full_Parent);
           end if;
  
!          --  For record, concurrent, access and most enumeration types, the
!          --  derivation from full view requires a fully-fledged declaration.
!          --  In the other cases, just use an itype.
  
!          if Is_Record_Type (Full_Parent)
             or else Is_Concurrent_Type (Full_Parent)
             or else Is_Access_Type (Full_Parent)
             or else
--- 7754,7781 ----
              Full_Parent := Full_View (Full_Parent);
           end if;
  
!          --  If the full view is itself derived from another private type
!          --  and has got an underlying full view, and this is done for a
!          --  completion, i.e. to build the underlying full view of the type,
!          --  then use this underlying full view. We cannot do that if this
!          --  is not a completion, i.e. to build the full view of the type,
!          --  because this would break the privacy of the parent type, except
!          --  if the parent scope is being analyzed because we are deriving a
!          --  completion.
  
           if Is_Private_Type (Full_Parent)
             and then Present (Underlying_Full_View (Full_Parent))
+            and then (Is_Completion or else In_Private_Part (Par_Scope))
           then
              Full_Parent := Underlying_Full_View (Full_Parent);
           end if;
  
!          --  For private, record, concurrent, access and almost all enumeration
!          --  types, the derivation from the full view requires a fully-fledged
!          --  declaration. In the other cases, just use an itype.
  
!          if Is_Private_Type (Full_Parent)
!            or else Is_Record_Type (Full_Parent)
             or else Is_Concurrent_Type (Full_Parent)
             or else Is_Access_Type (Full_Parent)
             or else
*************** package body Sem_Ch3 is
*** 7812,7820 ****
                 end if;
  
              else
                 Build_Derived_Type
                   (Full_N, Full_Parent, Full_Der,
!                   Is_Completion => False, Derive_Subps => False);
              end if;
  
              --  The full declaration has been introduced into the tree and
--- 7822,7834 ----
                 end if;
  
              else
+                --  If the parent type is private, this is not a completion and
+                --  we build the full derivation recursively as a completion.
+ 
                 Build_Derived_Type
                   (Full_N, Full_Parent, Full_Der,
!                   Is_Completion => Is_Private_Type (Full_Parent),
!                   Derive_Subps => False);
              end if;
  
              --  The full declaration has been introduced into the tree and
*************** package body Sem_Ch3 is
*** 8002,8008 ****
           --  case (see point 5. of its head comment) since we build it for the
           --  derived subtype.
  
!          if Present (Full_View (Parent_Type))
             and then not Is_Itype (Derived_Type)
           then
              declare
--- 8016,8022 ----
           --  case (see point 5. of its head comment) since we build it for the
           --  derived subtype.
  
!          if Present (Available_Full_View (Parent_Type))
             and then not Is_Itype (Derived_Type)
           then
              declare
*************** package body Sem_Ch3 is
*** 8054,8061 ****
              end;
           end if;
  
!       elsif Present (Full_View (Parent_Type))
!         and then Has_Discriminants (Full_View (Parent_Type))
        then
           if Has_Unknown_Discriminants (Parent_Type)
             and then Nkind (Subtype_Indication (Type_Definition (N))) =
--- 8068,8075 ----
              end;
           end if;
  
!       elsif Present (Available_Full_View (Parent_Type))
!         and then Has_Discriminants (Available_Full_View (Parent_Type))
        then
           if Has_Unknown_Discriminants (Parent_Type)
             and then Nkind (Subtype_Indication (Type_Definition (N))) =
*************** package body Sem_Ch3 is
*** 8092,8098 ****
  
           Set_Stored_Constraint (Derived_Type, No_Elist);
           Set_Is_Constrained
!            (Derived_Type, Is_Constrained (Full_View (Parent_Type)));
  
        else
           --  Untagged type, No discriminants on either view
--- 8106,8112 ----
  
           Set_Stored_Constraint (Derived_Type, No_Elist);
           Set_Is_Constrained
!            (Derived_Type, Is_Constrained (Available_Full_View (Parent_Type)));
  
        else
           --  Untagged type, No discriminants on either view
*************** package body Sem_Ch3 is
*** 8105,8112 ****
           end if;
  
           if Present (Discriminant_Specifications (N))
!            and then Present (Full_View (Parent_Type))
!            and then not Is_Tagged_Type (Full_View (Parent_Type))
           then
              Error_Msg_N ("cannot add discriminants to untagged type", N);
           end if;
--- 8119,8126 ----
           end if;
  
           if Present (Discriminant_Specifications (N))
!            and then Present (Available_Full_View (Parent_Type))
!            and then not Is_Tagged_Type (Available_Full_View (Parent_Type))
           then
              Error_Msg_N ("cannot add discriminants to untagged type", N);
           end if;
*************** package body Sem_Ch3 is
*** 8131,8148 ****
           end if;
  
           --  If this is not a completion, construct the implicit full view by
!          --  deriving from the full view of the parent type.
  
!          --  ??? If the parent is untagged private and its completion is
           --  tagged, this mechanism will not work because we cannot derive from
           --  the tagged full view unless we have an extension.
  
!          if Present (Full_View (Parent_Type))
!            and then not Is_Tagged_Type (Full_View (Parent_Type))
!            and then not Is_Completion
           then
              Build_Full_Derivation;
!             Set_Full_View (Derived_Type, Full_Der);
           end if;
        end if;
  
--- 8145,8170 ----
           end if;
  
           --  If this is not a completion, construct the implicit full view by
!          --  deriving from the full view of the parent type. But if this is a
!          --  completion, the derived private type being built is a full view
!          --  and the full derivation can only be its underlying full view.
  
!          --  ??? If the parent type is untagged private and its completion is
           --  tagged, this mechanism will not work because we cannot derive from
           --  the tagged full view unless we have an extension.
  
!          if Present (Available_Full_View (Parent_Type))
!            and then not Is_Tagged_Type (Available_Full_View (Parent_Type))
!            and then not Error_Posted (N)
           then
              Build_Full_Derivation;
! 
!             if not Is_Completion then
!                Set_Full_View (Derived_Type, Full_Der);
!             else
!                Set_Underlying_Full_View (Derived_Type, Full_Der);
!                Set_Is_Underlying_Full_View (Full_Der);
!             end if;
           end if;
        end if;
  
*************** package body Sem_Ch3 is
*** 9260,9300 ****
                 end if;
  
                 --  If a new discriminant is used in the constraint, then its
!                --  subtype must be statically compatible with the parent
!                --  discriminant's subtype (3.7(15)).
! 
!                --  However, if the record contains an array constrained by
!                --  the discriminant but with some different bound, the compiler
!                --  tries to create a smaller range for the discriminant type.
!                --  (See exp_ch3.Adjust_Discriminants). In this case, where
!                --  the discriminant type is a scalar type, the check must use
!                --  the original discriminant type in the parent declaration.
! 
!                declare
!                   Corr_Disc : constant Entity_Id :=
!                                 Corresponding_Discriminant (Discrim);
!                   Disc_Type : constant Entity_Id := Etype (Discrim);
!                   Corr_Type : Entity_Id;
! 
!                begin
!                   if Present (Corr_Disc) then
!                      if Is_Scalar_Type (Disc_Type) then
!                         Corr_Type :=
!                            Entity (Discriminant_Type (Parent (Corr_Disc)));
!                      else
!                         Corr_Type := Etype (Corr_Disc);
!                      end if;
  
!                      if not
!                         Subtypes_Statically_Compatible (Disc_Type, Corr_Type)
!                      then
!                         Error_Msg_N
!                           ("subtype must be compatible "
!                            & "with parent discriminant",
!                            Discrim);
!                      end if;
!                   end if;
!                end;
  
                 Next_Discriminant (Discrim);
              end loop;
--- 9282,9294 ----
                 end if;
  
                 --  If a new discriminant is used in the constraint, then its
!                --  subtype must be statically compatible with the subtype of
!                --  the parent discriminant (RM 3.7(15)).
  
!                if Present (Corresponding_Discriminant (Discrim)) then
!                   Check_Constraining_Discriminant
!                     (Discrim, Corresponding_Discriminant (Discrim));
!                end if;
  
                 Next_Discriminant (Discrim);
              end loop;
*************** package body Sem_Ch3 is
*** 9628,9634 ****
              Set_Stored_Constraint
                (Derived_Type, Expand_To_Stored_Constraint (Parent_Type, Discs));
  
!             Replace_Components (Derived_Type, New_Decl);
           end if;
  
           --  Insert the new derived type declaration
--- 9622,9628 ----
              Set_Stored_Constraint
                (Derived_Type, Expand_To_Stored_Constraint (Parent_Type, Discs));
  
!             Replace_Discriminants (Derived_Type, New_Decl);
           end if;
  
           --  Insert the new derived type declaration
*************** package body Sem_Ch3 is
*** 9650,9659 ****
        elsif not Private_Extension then
           Expand_Record_Extension (Derived_Type, Type_Def);
  
-          --  Note : previously in ASIS mode we set the Parent_Subtype of the
-          --  derived type to propagate some semantic information. This led
-          --  to other ASIS failures and has been removed.
- 
           --  Ada 2005 (AI-251): Addition of the Tag corresponding to all the
           --  implemented interfaces if we are in expansion mode
  
--- 9644,9649 ----
*************** package body Sem_Ch3 is
*** 9781,9786 ****
--- 9771,9783 ----
  
        Set_Convention (Derived_Type, Convention (Parent_Base));
  
+       if Is_Tagged_Type (Derived_Type)
+         and then Present (Class_Wide_Type (Derived_Type))
+       then
+          Set_Convention (Class_Wide_Type (Derived_Type),
+            Convention (Class_Wide_Type (Parent_Base)));
+       end if;
+ 
        --  Set SSO default for record or array type
  
        if (Is_Array_Type (Derived_Type) or else Is_Record_Type (Derived_Type))
*************** package body Sem_Ch3 is
*** 10496,10502 ****
           then
              Create_Constrained_Components (Def_Id, Related_Nod, T, Elist);
  
!          else
              Set_Cloned_Subtype (Def_Id, T);
           end if;
        end if;
--- 10493,10499 ----
           then
              Create_Constrained_Components (Def_Id, Related_Nod, T, Elist);
  
!          elsif not Is_Private_Type (T) then
              Set_Cloned_Subtype (Def_Id, T);
           end if;
        end if;
*************** package body Sem_Ch3 is
*** 10526,10534 ****
           --  build-in-place library function, child unit or not.
  
           if (Nkind (Nod) in N_Entity and then Is_Compilation_Unit (Nod))
!            or else (Nkind_In (Nod, N_Defining_Program_Unit_Name,
!                                    N_Subprogram_Declaration)
!                       and then Is_Compilation_Unit (Defining_Entity (Nod)))
           then
              Add_Global_Declaration (IR);
           else
--- 10523,10531 ----
           --  build-in-place library function, child unit or not.
  
           if (Nkind (Nod) in N_Entity and then Is_Compilation_Unit (Nod))
!            or else (Nkind (Nod) in
!                       N_Defining_Program_Unit_Name | N_Subprogram_Declaration
!                      and then Is_Compilation_Unit (Defining_Entity (Nod)))
           then
              Add_Global_Declaration (IR);
           else
*************** package body Sem_Ch3 is
*** 10558,10564 ****
  
        Analyze_And_Resolve (Bound, Base_Type (Par_T));
  
!       if Nkind_In (Bound, N_Integer_Literal, N_Real_Literal) then
           New_Bound := New_Copy (Bound);
           Set_Etype (New_Bound, Der_T);
           Set_Analyzed (New_Bound);
--- 10555,10561 ----
  
        Analyze_And_Resolve (Bound, Base_Type (Par_T));
  
!       if Nkind (Bound) in N_Integer_Literal | N_Real_Literal then
           New_Bound := New_Copy (Bound);
           Set_Etype (New_Bound, Der_T);
           Set_Analyzed (New_Bound);
*************** package body Sem_Ch3 is
*** 10808,10813 ****
--- 10805,10830 ----
           elsif Present (Interface_Alias (Subp)) then
              null;
  
+          --  AI12-0042: Test for rule in 7.3.2(6.1/4), that requires overriding
+          --  of a visible private primitive inherited from an ancestor with
+          --  the aspect Type_Invariant'Class, unless the inherited primitive
+          --  is abstract.
+ 
+          elsif not Is_Abstract_Subprogram (Subp)
+            and then not Comes_From_Source (Subp) -- An inherited subprogram
+            and then Requires_Overriding (Subp)
+            and then Present (Alias_Subp)
+            and then Has_Invariants (Etype (T))
+            and then Present (Get_Pragma (Etype (T), Pragma_Invariant))
+            and then Class_Present (Get_Pragma (Etype (T), Pragma_Invariant))
+            and then Is_Private_Primitive (Alias_Subp)
+          then
+             Error_Msg_NE
+               ("inherited private primitive & must be overridden", T, Subp);
+             Error_Msg_N
+               ("\because ancestor type has 'Type_'Invariant''Class " &
+                "(RM 7.3.2(6.1))", T);
+ 
           elsif (Is_Abstract_Subprogram (Subp)
                   or else Requires_Overriding (Subp)
                   or else
*************** package body Sem_Ch3 is
*** 10878,10883 ****
--- 10895,10907 ----
                    then
                       null;
  
+                   --  Subprogram renamings cannot be overridden
+ 
+                   elsif Comes_From_Source (Subp)
+                      and then Present (Alias (Subp))
+                   then
+                      null;
+ 
                    else
                       Error_Msg_NE
                         ("type must be declared abstract or & overridden",
*************** package body Sem_Ch3 is
*** 11046,11051 ****
--- 11070,11089 ----
              end if;
           end if;
  
+          --  Ada 2005 (AI95-0414) and Ada 2020 (AI12-0269): Diagnose failure to
+          --  match No_Return in parent, but do it unconditionally in Ada 95 too
+          --  for procedures, since this is our pragma.
+ 
+          if Present (Overridden_Operation (Subp))
+            and then No_Return (Overridden_Operation (Subp))
+            and then not No_Return (Subp)
+          then
+             Error_Msg_N ("overriding subprogram & must be No_Return", Subp);
+             Error_Msg_N
+               ("\since overridden subprogram is No_Return (RM 6.5.1(6/2))",
+                Subp);
+          end if;
+ 
           --  If the operation is a wrapper for a synchronized primitive, it
           --  may be called indirectly through a dispatching select. We assume
           --  that it will be referenced elsewhere indirectly, and suppress
*************** package body Sem_Ch3 is
*** 11482,11509 ****
  
              if Present (Acc_Def) then
                 Create_Extra_Formals (Designated_Type (Anon_Access));
- 
-             --  If an access to object, preserve entity of designated type,
-             --  for ASIS use, before rewriting the component definition.
- 
-             else
-                declare
-                   Desig : Entity_Id;
- 
-                begin
-                   Desig := Entity (Subtype_Indication (Type_Def));
- 
-                   --  If the access definition is to the current  record,
-                   --  the visible entity at this point is an  incomplete
-                   --  type. Retrieve the full view to simplify  ASIS queries
- 
-                   if Ekind (Desig) = E_Incomplete_Type then
-                      Desig := Full_View (Desig);
-                   end if;
- 
-                   Set_Entity
-                     (Subtype_Mark (Access_Definition  (Comp_Def)), Desig);
-                end;
              end if;
  
              Rewrite (Comp_Def,
--- 11520,11525 ----
*************** package body Sem_Ch3 is
*** 11577,11583 ****
  
        begin
           if not Comes_From_Source (E) then
!             if Ekind_In (E, E_Task_Type, E_Protected_Type) then
  
                 --  It may be an anonymous protected type created for a
                 --  single variable. Post error on variable, if present.
--- 11593,11599 ----
  
        begin
           if not Comes_From_Source (E) then
!             if Ekind (E) in E_Task_Type | E_Protected_Type then
  
                 --  It may be an anonymous protected type created for a
                 --  single variable. Post error on variable, if present.
*************** package body Sem_Ch3 is
*** 11707,11716 ****
           --  this kind is reserved for predefined operators, that are
           --  intrinsic and do not need completion.
  
!          elsif Ekind_In (E, E_Function,
!                             E_Procedure,
!                             E_Generic_Function,
!                             E_Generic_Procedure)
           then
              if Has_Completion (E) then
                 null;
--- 11723,11732 ----
           --  this kind is reserved for predefined operators, that are
           --  intrinsic and do not need completion.
  
!          elsif Ekind (E) in E_Function
!                           | E_Procedure
!                           | E_Generic_Function
!                           | E_Generic_Procedure
           then
              if Has_Completion (E) then
                 null;
*************** package body Sem_Ch3 is
*** 11740,11748 ****
              end if;
  
           elsif Is_Entry (E) then
!             if not Has_Completion (E) and then
!               (Ekind (Scope (E)) = E_Protected_Object
!                 or else Ekind (Scope (E)) = E_Protected_Type)
              then
                 Post_Error;
              end if;
--- 11756,11763 ----
              end if;
  
           elsif Is_Entry (E) then
!             if not Has_Completion (E)
!               and then Ekind (Scope (E)) = E_Protected_Type
              then
                 Post_Error;
              end if;
*************** package body Sem_Ch3 is
*** 11763,11795 ****
           --  A formal incomplete type (Ada 2012) does not require a completion;
           --  other incomplete type declarations do.
  
!          elsif Ekind (E) = E_Incomplete_Type
!            and then No (Underlying_Type (E))
!            and then not Is_Generic_Type (E)
!          then
!             Post_Error;
  
!          elsif Ekind_In (E, E_Task_Type, E_Protected_Type)
!            and then not Has_Completion (E)
!          then
!             Post_Error;
  
           --  A single task declared in the current scope is a constant, verify
           --  that the body of its anonymous type is in the same scope. If the
           --  task is defined elsewhere, this may be a renaming declaration for
           --  which no completion is needed.
  
!          elsif Ekind (E) = E_Constant
!            and then Ekind (Etype (E)) = E_Task_Type
!            and then not Has_Completion (Etype (E))
!            and then Scope (Etype (E)) = Current_Scope
!          then
!             Post_Error;
! 
!          elsif Ekind (E) = E_Protected_Object
!            and then not Has_Completion (Etype (E))
!          then
!             Post_Error;
  
           elsif Ekind (E) = E_Record_Type then
              if Is_Tagged_Type (E) then
--- 11778,11807 ----
           --  A formal incomplete type (Ada 2012) does not require a completion;
           --  other incomplete type declarations do.
  
!          elsif Ekind (E) = E_Incomplete_Type then
!             if No (Underlying_Type (E))
!               and then not Is_Generic_Type (E)
!             then
!                Post_Error;
!             end if;
  
!          elsif Ekind (E) in E_Task_Type | E_Protected_Type then
!             if not Has_Completion (E) then
!                Post_Error;
!             end if;
  
           --  A single task declared in the current scope is a constant, verify
           --  that the body of its anonymous type is in the same scope. If the
           --  task is defined elsewhere, this may be a renaming declaration for
           --  which no completion is needed.
  
!          elsif Ekind (E) = E_Constant then
!             if Ekind (Etype (E)) = E_Task_Type
!               and then not Has_Completion (Etype (E))
!               and then Scope (Etype (E)) = Current_Scope
!             then
!                Post_Error;
!             end if;
  
           elsif Ekind (E) = E_Record_Type then
              if Is_Tagged_Type (E) then
*************** package body Sem_Ch3 is
*** 11808,11813 ****
--- 11820,11860 ----
        end loop;
     end Check_Completion;
  
+    -------------------------------------
+    -- Check_Constraining_Discriminant --
+    -------------------------------------
+ 
+    procedure Check_Constraining_Discriminant (New_Disc, Old_Disc : Entity_Id)
+    is
+       New_Type : constant Entity_Id := Etype (New_Disc);
+       Old_Type : Entity_Id;
+ 
+    begin
+       --  If the record type contains an array constrained by the discriminant
+       --  but with some different bound, the compiler tries to create a smaller
+       --  range for the discriminant type (see exp_ch3.Adjust_Discriminants).
+       --  In this case, where the discriminant type is a scalar type, the check
+       --  must use the original discriminant type in the parent declaration.
+ 
+       if Is_Scalar_Type (New_Type) then
+          Old_Type := Entity (Discriminant_Type (Parent (Old_Disc)));
+       else
+          Old_Type := Etype (Old_Disc);
+       end if;
+ 
+       if not Subtypes_Statically_Compatible (New_Type, Old_Type) then
+          Error_Msg_N
+            ("subtype must be statically compatible with parent discriminant",
+             New_Disc);
+ 
+          if not Predicates_Compatible (New_Type, Old_Type) then
+             Error_Msg_N
+               ("\subtype predicate is not compatible with parent discriminant",
+                New_Disc);
+          end if;
+       end if;
+    end Check_Constraining_Discriminant;
+ 
     ------------------------------------
     -- Check_CPP_Type_Has_No_Defaults --
     ------------------------------------
*************** package body Sem_Ch3 is
*** 11978,11984 ****
        --  In gnatc or gnatprove mode, make sure set Do_Range_Check flag gets
        --  set unless we can be sure that no range check is required.
  
!       if (GNATprove_Mode or not Expander_Active)
          and then Is_Scalar_Type (T)
          and then not Is_In_Range (Exp, T, Assume_Valid => True)
        then
--- 12025,12031 ----
        --  In gnatc or gnatprove mode, make sure set Do_Range_Check flag gets
        --  set unless we can be sure that no range check is required.
  
!       if not Expander_Active
          and then Is_Scalar_Type (T)
          and then not Is_In_Range (Exp, T, Assume_Valid => True)
        then
*************** package body Sem_Ch3 is
*** 12544,12561 ****
           --  Show Full is simply a renaming of Full_Base
  
           Set_Cloned_Subtype (Full, Full_Base);
  
           --  Propagate predicates
  
!          if Has_Predicates (Full_Base) then
!             Set_Has_Predicates (Full);
! 
!             if Present (Predicate_Function (Full_Base))
!               and then No (Predicate_Function (Full))
!             then
!                Set_Predicate_Function (Full, Predicate_Function (Full_Base));
!             end if;
!          end if;
        end if;
  
        --  It is unsafe to share the bounds of a scalar type, because the Itype
--- 12591,12601 ----
           --  Show Full is simply a renaming of Full_Base
  
           Set_Cloned_Subtype (Full, Full_Base);
+          Set_Is_Limited_Record (Full, Is_Limited_Record (Full_Base));
  
           --  Propagate predicates
  
!          Propagate_Predicate_Attributes (Full, Full_Base);
        end if;
  
        --  It is unsafe to share the bounds of a scalar type, because the Itype
*************** package body Sem_Ch3 is
*** 12587,12597 ****
--- 12627,12644 ----
  
        if Is_Tagged_Type (Full_Base) then
           Set_Is_Tagged_Type (Full);
+          Set_Is_Limited_Record (Full, Is_Limited_Record (Full_Base));
+ 
           Set_Direct_Primitive_Operations
             (Full, Direct_Primitive_Operations (Full_Base));
           Set_No_Tagged_Streams_Pragma
             (Full, No_Tagged_Streams_Pragma (Full_Base));
  
+          if Is_Interface (Full_Base) then
+             Set_Is_Interface (Full);
+             Set_Is_Limited_Interface (Full, Is_Limited_Interface (Full_Base));
+          end if;
+ 
           --  Inherit class_wide type of full_base in case the partial view was
           --  not tagged. Otherwise it has already been created when the private
           --  subtype was analyzed.
*************** package body Sem_Ch3 is
*** 12700,12714 ****
        --  of the type or at the end of the visible part, and we must avoid
        --  generating them twice.
  
!       if Has_Predicates (Priv) then
!          Set_Has_Predicates (Full);
! 
!          if Present (Predicate_Function (Priv))
!            and then No (Predicate_Function (Full))
!          then
!             Set_Predicate_Function (Full, Predicate_Function (Priv));
!          end if;
!       end if;
  
        if Has_Delayed_Aspects (Priv) then
           Set_Has_Delayed_Aspects (Full);
--- 12747,12753 ----
        --  of the type or at the end of the visible part, and we must avoid
        --  generating them twice.
  
!       Propagate_Predicate_Attributes (Full, Priv);
  
        if Has_Delayed_Aspects (Priv) then
           Set_Has_Delayed_Aspects (Full);
*************** package body Sem_Ch3 is
*** 12954,12960 ****
           then
              Error_Msg_N
                ("deferred constant must be declared in visible part",
!                  Parent (Prev));
           end if;
  
           if Is_Access_Type (T)
--- 12993,12999 ----
           then
              Error_Msg_N
                ("deferred constant must be declared in visible part",
!                Parent (Prev));
           end if;
  
           if Is_Access_Type (T)
*************** package body Sem_Ch3 is
*** 13311,13325 ****
        --  Ditto for access types. Makes use of previous two functions, to
        --  constrain designated type.
  
-       function Build_Subtype (T : Entity_Id; C : List_Id) return Entity_Id;
-       --  T is an array or discriminated type, C is a list of constraints
-       --  that apply to T. This routine builds the constrained subtype.
- 
        function Is_Discriminant (Expr : Node_Id) return Boolean;
        --  Returns True if Expr is a discriminant
  
!       function Get_Discr_Value (Discrim : Entity_Id) return Node_Id;
!       --  Find the value of discriminant Discrim in Constraint
  
        -----------------------------------
        -- Build_Constrained_Access_Type --
--- 13350,13360 ----
        --  Ditto for access types. Makes use of previous two functions, to
        --  constrain designated type.
  
        function Is_Discriminant (Expr : Node_Id) return Boolean;
        --  Returns True if Expr is a discriminant
  
!       function Get_Discr_Value (Discr_Expr : Node_Id) return Node_Id;
!       --  Find the value of a discriminant named by Discr_Expr in Constraints
  
        -----------------------------------
        -- Build_Constrained_Access_Type --
*************** package body Sem_Ch3 is
*** 13334,13340 ****
           Scop          : Entity_Id;
  
        begin
!          --  if the original access type was not embedded in the enclosing
           --  type definition, there is no need to produce a new access
           --  subtype. In fact every access type with an explicit constraint
           --  generates an itype whose scope is the enclosing record.
--- 13369,13375 ----
           Scop          : Entity_Id;
  
        begin
!          --  If the original access type was not embedded in the enclosing
           --  type definition, there is no need to produce a new access
           --  subtype. In fact every access type with an explicit constraint
           --  generates an itype whose scope is the enclosing record.
*************** package body Sem_Ch3 is
*** 13433,13438 ****
--- 13468,13474 ----
                 Is_Discriminant (Hi_Expr)
              then
                 Need_To_Create_Itype := True;
+                exit;
              end if;
  
              Next_Index (Old_Index);
*************** package body Sem_Ch3 is
*** 13462,13468 ****
                 Next_Index (Old_Index);
              end loop;
  
!             return Build_Subtype (Old_Type, Constr_List);
  
           else
              return Old_Type;
--- 13498,13504 ----
                 Next_Index (Old_Index);
              end loop;
  
!             return Build_Subtype (Related_Node, Loc, Old_Type, Constr_List);
  
           else
              return Old_Type;
*************** package body Sem_Ch3 is
*** 13489,13494 ****
--- 13525,13531 ----
  
              if Is_Discriminant (Expr) then
                 Need_To_Create_Itype := True;
+                exit;
  
              --  After expansion of discriminated task types, the value
              --  of the discriminant may be converted to a run-time type
*************** package body Sem_Ch3 is
*** 13500,13505 ****
--- 13537,13543 ----
                and then Is_Discriminant (Expression (Expr))
              then
                 Need_To_Create_Itype := True;
+                exit;
              end if;
  
              Next_Elmt (Old_Constraint);
*************** package body Sem_Ch3 is
*** 13527,13612 ****
                 Next_Elmt (Old_Constraint);
              end loop;
  
!             return Build_Subtype (Old_Type, Constr_List);
  
           else
              return Old_Type;
           end if;
        end Build_Constrained_Discriminated_Type;
  
-       -------------------
-       -- Build_Subtype --
-       -------------------
- 
-       function Build_Subtype (T : Entity_Id; C : List_Id) return Entity_Id is
-          Indic       : Node_Id;
-          Subtyp_Decl : Node_Id;
-          Def_Id      : Entity_Id;
-          Btyp        : Entity_Id := Base_Type (T);
- 
-       begin
-          --  The Related_Node better be here or else we won't be able to
-          --  attach new itypes to a node in the tree.
- 
-          pragma Assert (Present (Related_Node));
- 
-          --  If the view of the component's type is incomplete or private
-          --  with unknown discriminants, then the constraint must be applied
-          --  to the full type.
- 
-          if Has_Unknown_Discriminants (Btyp)
-            and then Present (Underlying_Type (Btyp))
-          then
-             Btyp := Underlying_Type (Btyp);
-          end if;
- 
-          Indic :=
-            Make_Subtype_Indication (Loc,
-              Subtype_Mark => New_Occurrence_Of (Btyp, Loc),
-              Constraint   => Make_Index_Or_Discriminant_Constraint (Loc, C));
- 
-          Def_Id := Create_Itype (Ekind (T), Related_Node);
- 
-          Subtyp_Decl :=
-            Make_Subtype_Declaration (Loc,
-              Defining_Identifier => Def_Id,
-              Subtype_Indication  => Indic);
- 
-          Set_Parent (Subtyp_Decl, Parent (Related_Node));
- 
-          --  Itypes must be analyzed with checks off (see package Itypes)
- 
-          Analyze (Subtyp_Decl, Suppress => All_Checks);
- 
-          if Is_Itype (Def_Id) and then Has_Predicates (T) then
-             Inherit_Predicate_Flags (Def_Id, T);
- 
-             --  Indicate where the predicate function may be found
- 
-             if Is_Itype (T) then
-                if Present (Predicate_Function (Def_Id)) then
-                   null;
- 
-                elsif Present (Predicate_Function (T)) then
-                   Set_Predicate_Function (Def_Id, Predicate_Function (T));
- 
-                else
-                   Set_Predicated_Parent (Def_Id, Predicated_Parent (T));
-                end if;
- 
-             elsif No (Predicate_Function (Def_Id)) then
-                Set_Predicated_Parent (Def_Id, T);
-             end if;
-          end if;
- 
-          return Def_Id;
-       end Build_Subtype;
- 
        ---------------------
        -- Get_Discr_Value --
        ---------------------
  
!       function Get_Discr_Value (Discrim : Entity_Id) return Node_Id is
           D : Entity_Id;
           E : Elmt_Id;
  
--- 13565,13586 ----
                 Next_Elmt (Old_Constraint);
              end loop;
  
!             return Build_Subtype (Related_Node, Loc, Old_Type, Constr_List);
  
           else
              return Old_Type;
           end if;
        end Build_Constrained_Discriminated_Type;
  
        ---------------------
        -- Get_Discr_Value --
        ---------------------
  
!       function Get_Discr_Value (Discr_Expr : Node_Id) return Node_Id is
!          Discr_Id : constant Entity_Id := Entity (Discr_Expr);
!          --  Entity of a discriminant that appear as a standalone expression in
!          --  the constraint of a component.
! 
           D : Entity_Id;
           E : Elmt_Id;
  
*************** package body Sem_Ch3 is
*** 13622,13630 ****
           E := First_Elmt (Constraints);
  
           while Present (D) loop
!             if D = Entity (Discrim)
!               or else D = CR_Discriminant (Entity (Discrim))
!               or else Corresponding_Discriminant (D) = Entity (Discrim)
              then
                 return Node (E);
              end if;
--- 13596,13604 ----
           E := First_Elmt (Constraints);
  
           while Present (D) loop
!             if D = Discr_Id
!               or else D = CR_Discriminant (Discr_Id)
!               or else Corresponding_Discriminant (D) = Discr_Id
              then
                 return Node (E);
              end if;
*************** package body Sem_Ch3 is
*** 13644,13655 ****
           --  be present when the component is a discriminated task type?
  
           if Is_Derived_Type (Typ)
!            and then Scope (Entity (Discrim)) = Etype (Typ)
           then
              D := First_Discriminant (Etype (Typ));
              E := First_Elmt (Constraints);
              while Present (D) loop
!                if D = Entity (Discrim) then
                    return Node (E);
                 end if;
  
--- 13618,13629 ----
           --  be present when the component is a discriminated task type?
  
           if Is_Derived_Type (Typ)
!            and then Scope (Discr_Id) = Etype (Typ)
           then
              D := First_Discriminant (Etype (Typ));
              E := First_Elmt (Constraints);
              while Present (D) loop
!                if D = Discr_Id then
                    return Node (E);
                 end if;
  
*************** package body Sem_Ch3 is
*** 13860,13866 ****
     -- Constrain_Decimal --
     -----------------------
  
!    procedure Constrain_Decimal (Def_Id : Node_Id; S : Node_Id) is
        T           : constant Entity_Id  := Entity (Subtype_Mark (S));
        C           : constant Node_Id    := Constraint (S);
        Loc         : constant Source_Ptr := Sloc (C);
--- 13834,13840 ----
     -- Constrain_Decimal --
     -----------------------
  
!    procedure Constrain_Decimal (Def_Id : Entity_Id; S : Node_Id) is
        T           : constant Entity_Id  := Entity (Subtype_Mark (S));
        C           : constant Node_Id    := Constraint (S);
        Loc         : constant Source_Ptr := Sloc (C);
*************** package body Sem_Ch3 is
*** 13879,13886 ****
        else
           pragma Assert (Nkind (C) = N_Digits_Constraint);
  
-          Check_SPARK_05_Restriction ("digits constraint is not allowed", S);
- 
           Digits_Expr := Digits_Expression (C);
           Analyze_And_Resolve (Digits_Expr, Any_Integer);
  
--- 13853,13858 ----
*************** package body Sem_Ch3 is
*** 14079,14085 ****
     -- Constrain_Enumeration --
     ---------------------------
  
!    procedure Constrain_Enumeration (Def_Id : Node_Id; S : Node_Id) is
        T : constant Entity_Id := Entity (Subtype_Mark (S));
        C : constant Node_Id   := Constraint (S);
  
--- 14051,14057 ----
     -- Constrain_Enumeration --
     ---------------------------
  
!    procedure Constrain_Enumeration (Def_Id : Entity_Id; S : Node_Id) is
        T : constant Entity_Id := Entity (Subtype_Mark (S));
        C : constant Node_Id   := Constraint (S);
  
*************** package body Sem_Ch3 is
*** 14102,14108 ****
     -- Constrain_Float --
     ----------------------
  
!    procedure Constrain_Float (Def_Id : Node_Id; S : Node_Id) is
        T    : constant Entity_Id := Entity (Subtype_Mark (S));
        C    : Node_Id;
        D    : Node_Id;
--- 14074,14080 ----
     -- Constrain_Float --
     ----------------------
  
!    procedure Constrain_Float (Def_Id : Entity_Id; S : Node_Id) is
        T    : constant Entity_Id := Entity (Subtype_Mark (S));
        C    : Node_Id;
        D    : Node_Id;
*************** package body Sem_Ch3 is
*** 14122,14129 ****
        --  Digits constraint present
  
        if Nkind (C) = N_Digits_Constraint then
- 
-          Check_SPARK_05_Restriction ("digits constraint is not allowed", S);
           Check_Restriction (No_Obsolescent_Features, C);
  
           if Warn_On_Obsolescent_Feature then
--- 14094,14099 ----
*************** package body Sem_Ch3 is
*** 14183,14189 ****
        Related_Nod  : Node_Id;
        Related_Id   : Entity_Id;
        Suffix       : Character;
!       Suffix_Index : Nat)
     is
        Def_Id : Entity_Id;
        R      : Node_Id := Empty;
--- 14153,14159 ----
        Related_Nod  : Node_Id;
        Related_Id   : Entity_Id;
        Suffix       : Character;
!       Suffix_Index : Pos)
     is
        Def_Id : Entity_Id;
        R      : Node_Id := Empty;
*************** package body Sem_Ch3 is
*** 14313,14319 ****
     -- Constrain_Integer --
     -----------------------
  
!    procedure Constrain_Integer (Def_Id : Node_Id; S : Node_Id) is
        T : constant Entity_Id := Entity (Subtype_Mark (S));
        C : constant Node_Id   := Constraint (S);
  
--- 14283,14289 ----
     -- Constrain_Integer --
     -----------------------
  
!    procedure Constrain_Integer (Def_Id : Entity_Id; S : Node_Id) is
        T : constant Entity_Id := Entity (Subtype_Mark (S));
        C : constant Node_Id   := Constraint (S);
  
*************** package body Sem_Ch3 is
*** 14336,14342 ****
     -- Constrain_Ordinary_Fixed --
     ------------------------------
  
!    procedure Constrain_Ordinary_Fixed (Def_Id : Node_Id; S : Node_Id) is
        T    : constant Entity_Id := Entity (Subtype_Mark (S));
        C    : Node_Id;
        D    : Node_Id;
--- 14306,14312 ----
     -- Constrain_Ordinary_Fixed --
     ------------------------------
  
!    procedure Constrain_Ordinary_Fixed (Def_Id : Entity_Id; S : Node_Id) is
        T    : constant Entity_Id := Entity (Subtype_Mark (S));
        C    : Node_Id;
        D    : Node_Id;
*************** package body Sem_Ch3 is
*** 14356,14363 ****
        --  Delta constraint present
  
        if Nkind (C) = N_Delta_Constraint then
- 
-          Check_SPARK_05_Restriction ("delta constraint is not allowed", S);
           Check_Restriction (No_Obsolescent_Features, C);
  
           if Warn_On_Obsolescent_Feature then
--- 14326,14331 ----
*************** package body Sem_Ch3 is
*** 14651,14661 ****
        Comp_List   : constant Elist_Id   := New_Elmt_List;
        Parent_Type : constant Entity_Id  := Etype (Typ);
        Assoc_List  : constant List_Id    := New_List;
!       Discr_Val   : Elmt_Id;
!       Errors      : Boolean;
!       New_C       : Entity_Id;
!       Old_C       : Entity_Id;
!       Is_Static   : Boolean := True;
  
        procedure Collect_Fixed_Components (Typ : Entity_Id);
        --  Collect parent type components that do not appear in a variant part
--- 14619,14631 ----
        Comp_List   : constant Elist_Id   := New_Elmt_List;
        Parent_Type : constant Entity_Id  := Etype (Typ);
        Assoc_List  : constant List_Id    := New_List;
! 
!       Discr_Val             : Elmt_Id;
!       Errors                : Boolean;
!       New_C                 : Entity_Id;
!       Old_C                 : Entity_Id;
!       Is_Static             : Boolean := True;
!       Is_Compile_Time_Known : Boolean := True;
  
        procedure Collect_Fixed_Components (Typ : Entity_Id);
        --  Collect parent type components that do not appear in a variant part
*************** package body Sem_Ch3 is
*** 14699,14705 ****
           if Is_Tagged_Type (Typ) or else Has_Controlled_Component (Typ) then
              Old_C := First_Component (Typ);
              while Present (Old_C) loop
!                if Nam_In (Chars (Old_C), Name_uTag, Name_uParent) then
                    Append_Elmt (Old_C, Comp_List);
                 end if;
  
--- 14669,14675 ----
           if Is_Tagged_Type (Typ) or else Has_Controlled_Component (Typ) then
              Old_C := First_Component (Typ);
              while Present (Old_C) loop
!                if Chars (Old_C) in Name_uTag | Name_uParent then
                    Append_Elmt (Old_C, Comp_List);
                 end if;
  
*************** package body Sem_Ch3 is
*** 14805,14811 ****
        while Present (Discr_Val) loop
           if not Is_OK_Static_Expression (Node (Discr_Val)) then
              Is_Static := False;
!             exit;
           end if;
  
           Next_Elmt (Discr_Val);
--- 14775,14785 ----
        while Present (Discr_Val) loop
           if not Is_OK_Static_Expression (Node (Discr_Val)) then
              Is_Static := False;
! 
!             if not Compile_Time_Known_Value (Node (Discr_Val)) then
!                Is_Compile_Time_Known := False;
!                exit;
!             end if;
           end if;
  
           Next_Elmt (Discr_Val);
*************** package body Sem_Ch3 is
*** 14903,14921 ****
           end if;
        end Add_Discriminants;
  
!       if Is_Static
          and then Is_Variant_Record (Typ)
        then
           Collect_Fixed_Components (Typ);
! 
!          Gather_Components (
!            Typ,
!            Component_List (Type_Definition (Parent (Typ))),
!            Governed_By   => Assoc_List,
!            Into          => Comp_List,
!            Report_Errors => Errors);
!          pragma Assert (not Errors
!            or else Serious_Errors_Detected > 0);
  
           Create_All_Components;
  
--- 14877,14894 ----
           end if;
        end Add_Discriminants;
  
!       if Is_Compile_Time_Known
          and then Is_Variant_Record (Typ)
        then
           Collect_Fixed_Components (Typ);
!          Gather_Components
!            (Typ,
!             Component_List (Type_Definition (Parent (Typ))),
!             Governed_By          => Assoc_List,
!             Into                 => Comp_List,
!             Report_Errors        => Errors,
!             Allow_Compile_Time   => True);
!          pragma Assert (not Errors or else Serious_Errors_Detected > 0);
  
           Create_All_Components;
  
*************** package body Sem_Ch3 is
*** 14923,14929 ****
        --  with constraints, we retrieve the record definition of the parent
        --  type to select the components of the proper variant.
  
!       elsif Is_Static
          and then Is_Tagged_Type (Typ)
          and then Nkind (Parent (Typ)) = N_Full_Type_Declaration
          and then
--- 14896,14902 ----
        --  with constraints, we retrieve the record definition of the parent
        --  type to select the components of the proper variant.
  
!       elsif Is_Compile_Time_Known
          and then Is_Tagged_Type (Typ)
          and then Nkind (Parent (Typ)) = N_Full_Type_Declaration
          and then
*************** package body Sem_Ch3 is
*** 14931,14943 ****
          and then Is_Variant_Record (Parent_Type)
        then
           Collect_Fixed_Components (Typ);
- 
           Gather_Components
             (Typ,
              Component_List (Type_Definition (Parent (Parent_Type))),
!             Governed_By   => Assoc_List,
!             Into          => Comp_List,
!             Report_Errors => Errors);
  
           --  Note: previously there was a check at this point that no errors
           --  were detected. As a consequence of AI05-220 there may be an error
--- 14904,14916 ----
          and then Is_Variant_Record (Parent_Type)
        then
           Collect_Fixed_Components (Typ);
           Gather_Components
             (Typ,
              Component_List (Type_Definition (Parent (Parent_Type))),
!             Governed_By          => Assoc_List,
!             Into                 => Comp_List,
!             Report_Errors        => Errors,
!             Allow_Compile_Time   => True);
  
           --  Note: previously there was a check at this point that no errors
           --  were detected. As a consequence of AI05-220 there may be an error
*************** package body Sem_Ch3 is
*** 14945,14965 ****
           --  static constraint.
  
           --  If the tagged derivation has a type extension, collect all the
!          --  new components therein.
  
           if Present (Record_Extension_Part (Type_Definition (Parent (Typ))))
           then
!             Old_C := First_Component (Typ);
!             while Present (Old_C) loop
!                if Original_Record_Component (Old_C) = Old_C
!                  and then Chars (Old_C) /= Name_uTag
!                  and then Chars (Old_C) /= Name_uParent
!                then
!                   Append_Elmt (Old_C, Comp_List);
!                end if;
! 
!                Next_Component (Old_C);
!             end loop;
           end if;
  
           Create_All_Components;
--- 14918,14936 ----
           --  static constraint.
  
           --  If the tagged derivation has a type extension, collect all the
!          --  new relevant components therein via Gather_Components.
  
           if Present (Record_Extension_Part (Type_Definition (Parent (Typ))))
           then
!             Gather_Components
!               (Typ,
!                Component_List
!                  (Record_Extension_Part (Type_Definition (Parent (Typ)))),
!                Governed_By           => Assoc_List,
!                Into                  => Comp_List,
!                Report_Errors         => Errors,
!                Allow_Compile_Time    => True,
!                Include_Interface_Tag => True);
           end if;
  
           Create_All_Components;
*************** package body Sem_Ch3 is
*** 14996,15001 ****
--- 14967,14976 ----
        Loc           : constant Source_Ptr := Sloc (Def);
        Digs_Expr     : constant Node_Id    := Digits_Expression (Def);
        Delta_Expr    : constant Node_Id    := Delta_Expression (Def);
+       Max_Digits    : constant Nat        :=
+                         (if System_Max_Integer_Size = 128 then 38 else 18);
+       --  Maximum number of digits that can be represented in an integer
+ 
        Implicit_Base : Entity_Id;
        Digs_Val      : Uint;
        Delta_Val     : Ureal;
*************** package body Sem_Ch3 is
*** 15003,15010 ****
        Bound_Val     : Ureal;
  
     begin
-       Check_SPARK_05_Restriction
-         ("decimal fixed point type is not allowed", Def);
        Check_Restriction (No_Fixed_Point, Def);
  
        --  Create implicit base type
--- 14978,14983 ----
*************** package body Sem_Ch3 is
*** 15035,15043 ****
                 Scale_Val := Scale_Val + 1;
              end loop;
  
!             if Scale_Val > 18 then
!                Error_Msg_N ("scale exceeds maximum value of 18", Def);
!                Scale_Val := UI_From_Int (+18);
              end if;
  
           else
--- 15008,15017 ----
                 Scale_Val := Scale_Val + 1;
              end loop;
  
!             if Scale_Val > Max_Digits then
!                Error_Msg_Uint_1 := UI_From_Int (Max_Digits);
!                Error_Msg_N ("scale exceeds maximum value of ^", Def);
!                Scale_Val := UI_From_Int (Max_Digits);
              end if;
  
           else
*************** package body Sem_Ch3 is
*** 15046,15054 ****
                 Scale_Val := Scale_Val - 1;
              end loop;
  
!             if Scale_Val < -18 then
!                Error_Msg_N ("scale is less than minimum value of -18", Def);
!                Scale_Val := UI_From_Int (-18);
              end if;
           end if;
  
--- 15020,15029 ----
                 Scale_Val := Scale_Val - 1;
              end loop;
  
!             if Scale_Val < -Max_Digits then
!                Error_Msg_Uint_1 := UI_From_Int (-Max_Digits);
!                Error_Msg_N ("scale is less than minimum value of ^", Def);
!                Scale_Val := UI_From_Int (-Max_Digits);
              end if;
           end if;
  
*************** package body Sem_Ch3 is
*** 15070,15078 ****
        Check_Digits_Expression (Digs_Expr);
        Digs_Val := Expr_Value (Digs_Expr);
  
!       if Digs_Val > 18 then
!          Digs_Val := UI_From_Int (+18);
!          Error_Msg_N ("digits value out of range, maximum is 18", Digs_Expr);
        end if;
  
        Set_Digits_Value (Implicit_Base, Digs_Val);
--- 15045,15054 ----
        Check_Digits_Expression (Digs_Expr);
        Digs_Val := Expr_Value (Digs_Expr);
  
!       if Digs_Val > Max_Digits then
!          Error_Msg_Uint_1 := UI_From_Int (Max_Digits);
!          Error_Msg_N ("digits value out of range, maximum is ^", Digs_Expr);
!          Digs_Val := UI_From_Int (Max_Digits);
        end if;
  
        Set_Digits_Value (Implicit_Base, Digs_Val);
*************** package body Sem_Ch3 is
*** 15546,15554 ****
          or else Is_Private_Overriding
          or else Is_Internal_Name (Chars (Parent_Subp))
          or else (Is_Controlled (Parent_Type)
!                   and then Nam_In (Chars (Parent_Subp), Name_Adjust,
!                                                         Name_Finalize,
!                                                         Name_Initialize))
        then
           Set_Derived_Name;
  
--- 15522,15530 ----
          or else Is_Private_Overriding
          or else Is_Internal_Name (Chars (Parent_Subp))
          or else (Is_Controlled (Parent_Type)
!                   and then Chars (Parent_Subp) in Name_Adjust
!                                                 | Name_Finalize
!                                                 | Name_Initialize)
        then
           Set_Derived_Name;
  
*************** package body Sem_Ch3 is
*** 15640,15645 ****
--- 15616,15630 ----
        while Present (Formal) loop
           New_Formal := New_Copy (Formal);
  
+          --  Extra formals are not inherited from a limited interface parent
+          --  since limitedness is not inherited in such case (AI-419) and this
+          --  affects the extra formals.
+ 
+          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
           --  formals, we need to link up to the declaration (which is the
           --  parameter specification), and it is fine to link up to the
*************** package body Sem_Ch3 is
*** 15658,15663 ****
--- 15643,15664 ----
           Next_Formal (Formal);
        end loop;
  
+       --  Extra formals are shared between the parent subprogram and the
+       --  derived subprogram (implicit in the above copy of formals), unless
+       --  the parent type is a limited interface type; hence we must inherit
+       --  also the reference to the first extra formal. When the parent type is
+       --  an interface the extra formals will be added when the subprogram is
+       --  frozen (see Freeze.Freeze_Subprogram).
+ 
+       if not Is_Limited_Interface (Parent_Type) then
+          Set_Extra_Formals (New_Subp, Extra_Formals (Parent_Subp));
+ 
+          if Ekind (New_Subp) = E_Function then
+             Set_Extra_Accessibility_Of_Result (New_Subp,
+               Extra_Accessibility_Of_Result (Parent_Subp));
+          end if;
+       end if;
+ 
        --  If this derivation corresponds to a tagged generic actual, then
        --  primitive operations rename those of the actual. Otherwise the
        --  primitive operations rename those of the parent type, If the parent
*************** package body Sem_Ch3 is
*** 15722,15730 ****
        --  set on both views of the type.
  
        if Is_Controlled (Parent_Type)
!         and then Nam_In (Chars (Parent_Subp), Name_Initialize,
!                                               Name_Adjust,
!                                               Name_Finalize)
          and then Is_Hidden (Parent_Subp)
          and then not Is_Visibly_Controlled (Parent_Type)
        then
--- 15723,15731 ----
        --  set on both views of the type.
  
        if Is_Controlled (Parent_Type)
!         and then Chars (Parent_Subp) in Name_Initialize
!                                       | Name_Adjust
!                                       | Name_Finalize
          and then Is_Hidden (Parent_Subp)
          and then not Is_Visibly_Controlled (Parent_Type)
        then
*************** package body Sem_Ch3 is
*** 15743,15751 ****
        end if;
  
        --  No_Return must be inherited properly. If this is overridden in the
!       --  case of a dispatching operation, then a check is made in Sem_Disp
!       --  that the overriding operation is also No_Return (no such check is
!       --  required for the case of non-dispatching operation.
  
        Set_No_Return (New_Subp, No_Return (Parent_Subp));
  
--- 15744,15752 ----
        end if;
  
        --  No_Return must be inherited properly. If this is overridden in the
!       --  case of a dispatching operation, then the check is made later in
!       --  Check_Abstract_Overriding that the overriding operation is also
!       --  No_Return (no such check is required for the nondispatching case).
  
        Set_No_Return (New_Subp, No_Return (Parent_Subp));
  
*************** package body Sem_Ch3 is
*** 15761,15767 ****
           null;
  
        --  Ada 2005 (AI-228): Calculate the "require overriding" and "abstract"
!       --  properties of the subprogram, as defined in RM-3.9.3(4/2-6/2).
  
        --  A subprogram subject to pragma Extensions_Visible with value False
        --  requires overriding if the subprogram has at least one controlling
--- 15762,15773 ----
           null;
  
        --  Ada 2005 (AI-228): Calculate the "require overriding" and "abstract"
!       --  properties of the subprogram, as defined in RM-3.9.3(4/2-6/2). Note
!       --  that functions with controlling access results of record extensions
!       --  with a null extension part require overriding (AI95-00391/06).
! 
!       --  Ada 202x (AI12-0042): Similarly, set those properties for
!       --  implementing the rule of RM 7.3.2(6.1/4).
  
        --  A subprogram subject to pragma Extensions_Visible with value False
        --  requires overriding if the subprogram has at least one controlling
*************** package body Sem_Ch3 is
*** 15776,15785 ****
                               and then Ekind (Etype (New_Subp)) =
                                                         E_Anonymous_Access_Type
                               and then Designated_Type (Etype (New_Subp)) =
!                                                         Derived_Type
!                              and then not Is_Null_Extension (Derived_Type))
                     or else (Comes_From_Source (Alias (New_Subp))
!                              and then Is_EVF_Procedure (Alias (New_Subp))))
          and then No (Actual_Subp)
        then
           if not Is_Tagged_Type (Derived_Type)
--- 15782,15809 ----
                               and then Ekind (Etype (New_Subp)) =
                                                         E_Anonymous_Access_Type
                               and then Designated_Type (Etype (New_Subp)) =
!                                                         Derived_Type)
                     or else (Comes_From_Source (Alias (New_Subp))
!                              and then Is_EVF_Procedure (Alias (New_Subp)))
! 
!                    --  AI12-0042: Set Requires_Overriding when a type extension
!                    --  inherits a private operation that is visible at the
!                    --  point of extension (Has_Private_Ancestor is False) from
!                    --  an ancestor that has Type_Invariant'Class, and when the
!                    --  type extension is in a visible part (the latter as
!                    --  clarified by AI12-0382).
! 
!                    or else
!                      (not Has_Private_Ancestor (Derived_Type)
!                        and then Has_Invariants (Parent_Type)
!                        and then
!                          Present (Get_Pragma (Parent_Type, Pragma_Invariant))
!                        and then
!                          Class_Present
!                            (Get_Pragma (Parent_Type, Pragma_Invariant))
!                        and then Is_Private_Primitive (Parent_Subp)
!                        and then In_Visible_Part (Scope (Derived_Type))))
! 
          and then No (Actual_Subp)
        then
           if not Is_Tagged_Type (Derived_Type)
*************** package body Sem_Ch3 is
*** 15898,15903 ****
--- 15922,15938 ----
        if Ekind (New_Subp) = E_Function then
           Set_Mechanism (New_Subp, Mechanism (Parent_Subp));
        end if;
+ 
+       --  Ada 2020 (AI12-0279): If a Yield aspect is specified True for a
+       --  primitive subprogram S of a type T, then the aspect is inherited
+       --  by the corresponding primitive subprogram of each descendant of T.
+ 
+       if Is_Tagged_Type (Derived_Type)
+         and then Is_Dispatching_Operation (New_Subp)
+         and then Has_Yield_Aspect (Alias (New_Subp))
+       then
+          Set_Has_Yield_Aspect (New_Subp, Has_Yield_Aspect (Alias (New_Subp)));
+       end if;
     end Derive_Subprogram;
  
     ------------------------
*************** package body Sem_Ch3 is
*** 15955,15961 ****
                 return True;
              end if;
  
!             E := Next_Entity (E);
           end loop;
  
           List := Collect_Primitive_Operations (Derived_Type);
--- 15990,15996 ----
                 return True;
              end if;
  
!             Next_Entity (E);
           end loop;
  
           List := Collect_Primitive_Operations (Derived_Type);
*************** package body Sem_Ch3 is
*** 16646,16653 ****
        --  parent is also an interface.
  
        if Interface_Present (Def) then
-          Check_SPARK_05_Restriction ("interface is not allowed", Def);
- 
           if not Is_Interface (Parent_Type) then
              Diagnose_Interface (Indic, Parent_Type);
  
--- 16681,16686 ----
*************** package body Sem_Ch3 is
*** 16759,16764 ****
--- 16792,16805 ----
                 Next (Intf);
              end loop;
           end;
+ 
+          --  Check consistency of any nonoverridable aspects that are
+          --  inherited from multiple sources.
+ 
+          Check_Inherited_Nonoverridable_Aspects
+            (Inheritor      => T,
+             Interface_List => Interface_List (Def),
+             Parent_Type    => Parent_Type);
        end if;
  
        if Parent_Type = Any_Type
*************** package body Sem_Ch3 is
*** 16893,16903 ****
              if Is_Type (T) then
                 Set_Has_Discriminants (T, False);
              end if;
- 
-          --  The type is allowed to have discriminants
- 
-          else
-             Check_SPARK_05_Restriction ("discriminant type is not allowed", N);
           end if;
        end if;
  
--- 16934,16939 ----
*************** package body Sem_Ch3 is
*** 16911,16923 ****
        then
           if Ada_Version = Ada_83 and then Comes_From_Source (Indic) then
              Error_Msg_N
!               ("(Ada 83): premature use of type for derivation", Indic);
           end if;
        end if;
  
        --  Check for early use of incomplete or private type
  
!       if Ekind_In (Parent_Type, E_Void, E_Incomplete_Type) then
           Error_Msg_N ("premature derivation of incomplete type", Indic);
           return;
  
--- 16947,16959 ----
        then
           if Ada_Version = Ada_83 and then Comes_From_Source (Indic) then
              Error_Msg_N
!               ("(Ada 83) premature use of type for derivation", Indic);
           end if;
        end if;
  
        --  Check for early use of incomplete or private type
  
!       if Ekind (Parent_Type) in E_Void | E_Incomplete_Type then
           Error_Msg_N ("premature derivation of incomplete type", Indic);
           return;
  
*************** package body Sem_Ch3 is
*** 17084,17097 ****
              end if;
           end if;
        end if;
- 
-       --  In SPARK, there are no derived type definitions other than type
-       --  extensions of tagged record types.
- 
-       if No (Extension) then
-          Check_SPARK_05_Restriction
-            ("derived type is not allowed", Original_Node (N));
-       end if;
     end Derived_Type_Declaration;
  
     ------------------------
--- 17120,17125 ----
*************** package body Sem_Ch3 is
*** 17462,17475 ****
  
           --  Check invalid completion of private or incomplete type
  
!          elsif not Nkind_In (N, N_Full_Type_Declaration,
!                                 N_Task_Type_Declaration,
!                                 N_Protected_Type_Declaration)
             and then
               (Ada_Version < Ada_2012
                 or else not Is_Incomplete_Type (Prev)
!                or else not Nkind_In (N, N_Private_Type_Declaration,
!                                         N_Private_Extension_Declaration))
           then
              --  Completion must be a full type declarations (RM 7.3(4))
  
--- 17490,17503 ----
  
           --  Check invalid completion of private or incomplete type
  
!          elsif Nkind (N) not in N_Full_Type_Declaration
!                               | N_Task_Type_Declaration
!                               | N_Protected_Type_Declaration
             and then
               (Ada_Version < Ada_2012
                 or else not Is_Incomplete_Type (Prev)
!                or else Nkind (N) not in N_Private_Type_Declaration
!                                       | N_Private_Extension_Declaration)
           then
              --  Completion must be a full type declarations (RM 7.3(4))
  
*************** package body Sem_Ch3 is
*** 17546,17554 ****
              end if;
  
              if Nkind (N) = N_Full_Type_Declaration
!               and then Nkind_In
!                          (Type_Definition (N), N_Record_Definition,
!                                                N_Derived_Type_Definition)
                and then Interface_Present (Type_Definition (N))
              then
                 Error_Msg_N
--- 17574,17581 ----
              end if;
  
              if Nkind (N) = N_Full_Type_Declaration
!               and then Nkind (Type_Definition (N)) in
!                          N_Record_Definition | N_Derived_Type_Definition
                and then Interface_Present (Type_Definition (N))
              then
                 Error_Msg_N
*************** package body Sem_Ch3 is
*** 17565,17579 ****
                    New_Id := Id;
  
                 elsif Ekind (Prev) = E_Private_Type
!                  and then Nkind_In (N, N_Task_Type_Declaration,
!                                        N_Protected_Type_Declaration)
                 then
                    Error_Msg_N
                     ("completion of nonlimited type cannot be limited", N);
  
                 elsif Ekind (Prev) = E_Record_Type_With_Private
!                  and then Nkind_In (N, N_Task_Type_Declaration,
!                                        N_Protected_Type_Declaration)
                 then
                    if not Is_Limited_Record (Prev) then
                       Error_Msg_N
--- 17592,17606 ----
                    New_Id := Id;
  
                 elsif Ekind (Prev) = E_Private_Type
!                  and then Nkind (N) in N_Task_Type_Declaration
!                                      | N_Protected_Type_Declaration
                 then
                    Error_Msg_N
                     ("completion of nonlimited type cannot be limited", N);
  
                 elsif Ekind (Prev) = E_Record_Type_With_Private
!                  and then Nkind (N) in N_Task_Type_Declaration
!                                      | N_Protected_Type_Declaration
                 then
                    if not Is_Limited_Record (Prev) then
                       Error_Msg_N
*************** package body Sem_Ch3 is
*** 17590,17597 ****
              --  type or a protected type. This case arises when covering
              --  interface types.
  
!             elsif Nkind_In (N, N_Task_Type_Declaration,
!                                N_Protected_Type_Declaration)
              then
                 null;
  
--- 17617,17624 ----
              --  type or a protected type. This case arises when covering
              --  interface types.
  
!             elsif Nkind (N) in N_Task_Type_Declaration
!                              | N_Protected_Type_Declaration
              then
                 null;
  
*************** package body Sem_Ch3 is
*** 17688,17695 ****
  
              if Ada_Version >= Ada_2012
                and then Is_Incomplete_Type (Prev)
!               and then Nkind_In (N, N_Private_Type_Declaration,
!                                     N_Private_Extension_Declaration)
              then
                 --  No need to check private extensions since they are tagged
  
--- 17715,17722 ----
  
              if Ada_Version >= Ada_2012
                and then Is_Incomplete_Type (Prev)
!               and then Nkind (N) in N_Private_Type_Declaration
!                                   | N_Private_Extension_Declaration
              then
                 --  No need to check private extensions since they are tagged
  
*************** package body Sem_Ch3 is
*** 17703,17710 ****
              --  a synchronized type that implements interfaces) or a
              --  type extension, otherwise this is an error.
  
!             elsif Nkind_In (N, N_Task_Type_Declaration,
!                                N_Protected_Type_Declaration)
              then
                 if No (Interface_List (N)) and then not Error_Posted (N) then
                    Tag_Mismatch;
--- 17730,17737 ----
              --  a synchronized type that implements interfaces) or a
              --  type extension, otherwise this is an error.
  
!             elsif Nkind (N) in N_Task_Type_Declaration
!                              | N_Protected_Type_Declaration
              then
                 if No (Interface_List (N)) and then not Error_Posted (N) then
                    Tag_Mismatch;
*************** package body Sem_Ch3 is
*** 17772,17780 ****
  
        --  Case of an anonymous array subtype
  
!       if Nkind_In (Def_Kind, N_Constrained_Array_Definition,
!                              N_Unconstrained_Array_Definition)
!       then
           T := Empty;
           Array_Type_Declaration (T, Obj_Def);
  
--- 17799,17805 ----
  
        --  Case of an anonymous array subtype
  
!       if Def_Kind in N_Array_Type_Definition then
           T := Empty;
           Array_Type_Declaration (T, Obj_Def);
  
*************** package body Sem_Ch3 is
*** 17840,17858 ****
  
        else
           T := Process_Subtype (Obj_Def, Related_Nod);
- 
-          --  If expansion is disabled an object definition that is an aggregate
-          --  will not get expanded and may lead to scoping problems in the back
-          --  end, if the object is referenced in an inner scope. In that case
-          --  create an itype reference for the object definition now. This
-          --  may be redundant in some cases, but harmless.
- 
-          if Is_Itype (T)
-            and then Nkind (Related_Nod) = N_Object_Declaration
-            and then ASIS_Mode
-          then
-             Build_Itype_Reference (T, Related_Nod);
-          end if;
        end if;
  
        return T;
--- 17865,17870 ----
*************** package body Sem_Ch3 is
*** 18725,18732 ****
           then
              null;
  
!          elsif Ekind_In (Derived_Base, E_Private_Type,
!                                        E_Limited_Private_Type)
           then
              null;
  
--- 18737,18743 ----
           then
              null;
  
!          elsif Ekind (Derived_Base) in E_Private_Type | E_Limited_Private_Type
           then
              null;
  
*************** package body Sem_Ch3 is
*** 18752,18789 ****
        return Assoc_List;
     end Inherit_Components;
  
-    -----------------------------
-    -- Inherit_Predicate_Flags --
-    -----------------------------
- 
-    procedure Inherit_Predicate_Flags (Subt, Par : Entity_Id) is
-    begin
-       if Present (Predicate_Function (Subt)) then
-          return;
-       end if;
- 
-       Set_Has_Predicates (Subt, Has_Predicates (Par));
-       Set_Has_Static_Predicate_Aspect
-         (Subt, Has_Static_Predicate_Aspect (Par));
-       Set_Has_Dynamic_Predicate_Aspect
-         (Subt, Has_Dynamic_Predicate_Aspect (Par));
- 
-       --  A named subtype does not inherit the predicate function of its
-       --  parent but an itype declared for a loop index needs the discrete
-       --  predicate information of its parent to execute the loop properly.
-       --  A non-discrete type may has a static predicate (for example True)
-       --  but has no static_discrete_predicate.
- 
-       if Is_Itype (Subt) and then Present (Predicate_Function (Par)) then
-          Set_Subprograms_For_Type (Subt, Subprograms_For_Type (Par));
- 
-          if Has_Static_Predicate (Par) and then Is_Discrete_Type (Par) then
-             Set_Static_Discrete_Predicate
-               (Subt, Static_Discrete_Predicate (Par));
-          end if;
-       end if;
-    end Inherit_Predicate_Flags;
- 
     ----------------------
     -- Is_EVF_Procedure --
     ----------------------
--- 18763,18768 ----
*************** package body Sem_Ch3 is
*** 18863,18868 ****
--- 18842,18870 ----
        end if;
     end Is_Null_Extension;
  
+    --------------------------
+    -- Is_Private_Primitive --
+    --------------------------
+ 
+    function Is_Private_Primitive (Prim : Entity_Id) return Boolean is
+       Prim_Scope  : constant Entity_Id := Scope (Prim);
+       Priv_Entity : Entity_Id;
+    begin
+       if Is_Package_Or_Generic_Package (Prim_Scope) then
+          Priv_Entity := First_Private_Entity (Prim_Scope);
+ 
+          while Present (Priv_Entity) loop
+             if Priv_Entity = Prim then
+                return True;
+             end if;
+ 
+             Next_Entity (Priv_Entity);
+          end loop;
+       end if;
+ 
+       return False;
+    end Is_Private_Primitive;
+ 
     ------------------------------
     -- Is_Valid_Constraint_Kind --
     ------------------------------
*************** package body Sem_Ch3 is
*** 18879,18894 ****
              return Constraint_Kind = N_Range_Constraint;
  
           when Decimal_Fixed_Point_Kind =>
!             return Nkind_In (Constraint_Kind, N_Digits_Constraint,
!                                               N_Range_Constraint);
  
           when Ordinary_Fixed_Point_Kind =>
!             return Nkind_In (Constraint_Kind, N_Delta_Constraint,
!                                               N_Range_Constraint);
  
           when Float_Kind =>
!             return Nkind_In (Constraint_Kind, N_Digits_Constraint,
!                                               N_Range_Constraint);
  
           when Access_Kind
              | Array_Kind
--- 18881,18893 ----
              return Constraint_Kind = N_Range_Constraint;
  
           when Decimal_Fixed_Point_Kind =>
!             return Constraint_Kind in N_Digits_Constraint | N_Range_Constraint;
  
           when Ordinary_Fixed_Point_Kind =>
!             return Constraint_Kind in N_Delta_Constraint | N_Range_Constraint;
  
           when Float_Kind =>
!             return Constraint_Kind in N_Digits_Constraint | N_Range_Constraint;
  
           when Access_Kind
              | Array_Kind
*************** package body Sem_Ch3 is
*** 18948,18954 ****
     --  Start of processing for Is_Visible_Component
  
     begin
!       if Ekind_In (C, E_Component, E_Discriminant) then
           Original_Comp := Original_Record_Component (C);
        end if;
  
--- 18947,18953 ----
     --  Start of processing for Is_Visible_Component
  
     begin
!       if Ekind (C) in E_Component | E_Discriminant then
           Original_Comp := Original_Record_Component (C);
        end if;
  
*************** package body Sem_Ch3 is
*** 18999,19037 ****
        then
           return True;
  
-       --  In the body of an instantiation, check the visibility of a component
-       --  in case it has a homograph that is a primitive operation of a private
-       --  type which was not visible in the generic unit.
- 
-       --  Should Is_Prefixed_Call be propagated from template to instance???
- 
-       elsif In_Instance_Body then
-          if not Is_Tagged_Type (Original_Type)
-            or else not Is_Private_Type (Original_Type)
-          then
-             return True;
- 
-          else
-             declare
-                Subp_Elmt : Elmt_Id;
- 
-             begin
-                Subp_Elmt := First_Elmt (Primitive_Operations (Original_Type));
-                while Present (Subp_Elmt) loop
- 
-                   --  The component is hidden by a primitive operation
- 
-                   if Chars (Node (Subp_Elmt)) = Chars (C) then
-                      return False;
-                   end if;
- 
-                   Next_Elmt (Subp_Elmt);
-                end loop;
- 
-                return True;
-             end;
-          end if;
- 
        --  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
--- 18998,19003 ----
*************** package body Sem_Ch3 is
*** 19040,19046 ****
        --  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). 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
--- 19006,19014 ----
        --  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
*************** package body Sem_Ch3 is
*** 19050,19056 ****
          or else
            (not Is_Private_Descendant (Type_Scope)
              and then not In_Open_Scopes (Type_Scope)
!             and then Has_Private_Declaration (Original_Type))
        then
           --  If the type derives from an entity in a formal package, there
           --  are no additional visible components.
--- 19018,19025 ----
          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.
*************** package body Sem_Ch3 is
*** 19221,19228 ****
       (N            : Node_Id;
        Related_Nod  : Node_Id;
        Related_Id   : Entity_Id := Empty;
!       Suffix_Index : Nat       := 1;
!       In_Iter_Schm : Boolean   := False)
     is
        R      : Node_Id;
        T      : Entity_Id;
--- 19190,19196 ----
       (N            : Node_Id;
        Related_Nod  : Node_Id;
        Related_Id   : Entity_Id := Empty;
!       Suffix_Index : Pos       := 1)
     is
        R      : Node_Id;
        T      : Entity_Id;
*************** package body Sem_Ch3 is
*** 19313,19340 ****
              return;
           end if;
  
           if Nkind (Low_Bound (N)) = N_Attribute_Reference
             and then Attribute_Name (Low_Bound (N)) = Name_First
             and then Is_Entity_Name (Prefix (Low_Bound (N)))
-            and then Is_Type (Entity (Prefix (Low_Bound (N))))
             and then Is_Discrete_Type (Entity (Prefix (Low_Bound (N))))
-          then
-             --  The type of the index will be the type of the prefix, as long
-             --  as the upper bound is 'Last of the same type.
  
              Def_Id := Entity (Prefix (Low_Bound (N)));
- 
-             if Nkind (High_Bound (N)) /= N_Attribute_Reference
-               or else Attribute_Name (High_Bound (N)) /= Name_Last
-               or else not Is_Entity_Name (Prefix (High_Bound (N)))
-               or else Entity (Prefix (High_Bound (N))) /= Def_Id
-             then
-                Def_Id := Empty;
-             end if;
           end if;
  
           R := N;
!          Process_Range_Expr_In_Decl (R, T, In_Iter_Schm => In_Iter_Schm);
  
        elsif Nkind (N) = N_Subtype_Indication then
  
--- 19281,19304 ----
              return;
           end if;
  
+          --  If the range bounds are "T'Low .. T'High" where T is a name of
+          --  a discrete type, then use T as the type of the index.
+ 
           if Nkind (Low_Bound (N)) = N_Attribute_Reference
             and then Attribute_Name (Low_Bound (N)) = Name_First
             and then Is_Entity_Name (Prefix (Low_Bound (N)))
             and then Is_Discrete_Type (Entity (Prefix (Low_Bound (N))))
  
+            and then Nkind (High_Bound (N)) = N_Attribute_Reference
+            and then Attribute_Name (High_Bound (N)) = Name_Last
+            and then Is_Entity_Name (Prefix (High_Bound (N)))
+            and then Entity (Prefix (High_Bound (N))) = Def_Id
+          then
              Def_Id := Entity (Prefix (Low_Bound (N)));
           end if;
  
           R := N;
!          Process_Range_Expr_In_Decl (R, T);
  
        elsif Nkind (N) = N_Subtype_Indication then
  
*************** package body Sem_Ch3 is
*** 19351,19358 ****
           R := Range_Expression (Constraint (N));
  
           Resolve (R, T);
!          Process_Range_Expr_In_Decl
!            (R, Entity (Subtype_Mark (N)), In_Iter_Schm => In_Iter_Schm);
  
        elsif Nkind (N) = N_Attribute_Reference then
  
--- 19315,19321 ----
           R := Range_Expression (Constraint (N));
  
           Resolve (R, T);
!          Process_Range_Expr_In_Decl (R, Entity (Subtype_Mark (N)));
  
        elsif Nkind (N) = N_Attribute_Reference then
  
*************** package body Sem_Ch3 is
*** 19369,19375 ****
  
           if Is_Entity_Name (Prefix (N))
             and then Comes_From_Source (N)
-            and then Is_Type (Entity (Prefix (N)))
             and then Is_Discrete_Type (Entity (Prefix (N)))
           then
              Def_Id := Entity (Prefix (N));
--- 19332,19337 ----
*************** package body Sem_Ch3 is
*** 19475,19499 ****
              Set_First_Literal     (Def_Id, First_Literal (T));
           end if;
  
!          Set_Size_Info      (Def_Id,                  (T));
!          Set_RM_Size        (Def_Id, RM_Size          (T));
!          Set_First_Rep_Item (Def_Id, First_Rep_Item   (T));
  
           Set_Scalar_Range   (Def_Id, R);
           Conditional_Delay  (Def_Id, T);
  
           if Nkind (N) = N_Subtype_Indication then
              Inherit_Predicate_Flags (Def_Id, Entity (Subtype_Mark (N)));
-          end if;
  
!          --  In the subtype indication case, if the immediate parent of the
!          --  new subtype is nonstatic, then the subtype we create is nonstatic,
!          --  even if its bounds are static.
  
!          if Nkind (N) = N_Subtype_Indication
!            and then not Is_OK_Static_Subtype (Entity (Subtype_Mark (N)))
!          then
!             Set_Is_Non_Static_Subtype (Def_Id);
           end if;
        end if;
  
--- 19437,19466 ----
              Set_First_Literal     (Def_Id, First_Literal (T));
           end if;
  
!          Set_Size_Info      (Def_Id,                (T));
!          Set_RM_Size        (Def_Id, RM_Size        (T));
!          Set_First_Rep_Item (Def_Id, First_Rep_Item (T));
  
           Set_Scalar_Range   (Def_Id, R);
           Conditional_Delay  (Def_Id, T);
  
+          --  In the subtype indication case inherit properties of the parent
+ 
           if Nkind (N) = N_Subtype_Indication then
+ 
+             --  It is enough to inherit predicate flags and not the predicate
+             --  functions, because predicates on an index type are illegal
+             --  anyway and the flags are enough to detect them.
+ 
              Inherit_Predicate_Flags (Def_Id, Entity (Subtype_Mark (N)));
  
!             --  If the immediate parent of the new subtype is nonstatic, then
!             --  the subtype we create is nonstatic as well, even if its bounds
!             --  are static.
  
!             if not Is_OK_Static_Subtype (Entity (Subtype_Mark (N))) then
!                Set_Is_Non_Static_Subtype (Def_Id);
!             end if;
           end if;
        end if;
  
*************** package body Sem_Ch3 is
*** 19518,19534 ****
        ----------------------
  
        procedure Set_Modular_Size (Bits : Int) is
        begin
           Set_RM_Size (T, UI_From_Int (Bits));
  
!          if Bits <= 8 then
!             Init_Esize (T, 8);
  
!          elsif Bits <= 16 then
!             Init_Esize (T, 16);
  
!          elsif Bits <= 32 then
!             Init_Esize (T, 32);
  
           else
              Init_Esize (T, System_Max_Binary_Modulus_Power);
--- 19485,19504 ----
        ----------------------
  
        procedure Set_Modular_Size (Bits : Int) is
+          Siz : Int;
+ 
        begin
           Set_RM_Size (T, UI_From_Int (Bits));
  
!          if Bits < System_Max_Binary_Modulus_Power then
!             Siz := 8;
  
!             while Siz < 128 loop
!                exit when Bits <= Siz;
!                Siz := Siz * 2;
!             end loop;
  
!             Init_Esize (T, Siz);
  
           else
              Init_Esize (T, System_Max_Binary_Modulus_Power);
*************** package body Sem_Ch3 is
*** 19543,19556 ****
  
     begin
        --  If the mod expression is (exactly) 2 * literal, where literal is
!       --  64 or less,then almost certainly the * was meant to be **. Warn.
  
        if Warn_On_Suspicious_Modulus_Value
          and then Nkind (Mod_Expr) = N_Op_Multiply
          and then Nkind (Left_Opnd (Mod_Expr)) = N_Integer_Literal
          and then Intval (Left_Opnd (Mod_Expr)) = Uint_2
          and then Nkind (Right_Opnd (Mod_Expr)) = N_Integer_Literal
!         and then Intval (Right_Opnd (Mod_Expr)) <= Uint_64
        then
           Error_Msg_N
             ("suspicious MOD value, was '*'* intended'??M?", Mod_Expr);
--- 19513,19526 ----
  
     begin
        --  If the mod expression is (exactly) 2 * literal, where literal is
!       --  128 or less,then almost certainly the * was meant to be **. Warn.
  
        if Warn_On_Suspicious_Modulus_Value
          and then Nkind (Mod_Expr) = N_Op_Multiply
          and then Nkind (Left_Opnd (Mod_Expr)) = N_Integer_Literal
          and then Intval (Left_Opnd (Mod_Expr)) = Uint_2
          and then Nkind (Right_Opnd (Mod_Expr)) = N_Integer_Literal
!         and then Intval (Right_Opnd (Mod_Expr)) <= Uint_128
        then
           Error_Msg_N
             ("suspicious MOD value, was '*'* intended'??M?", Mod_Expr);
*************** package body Sem_Ch3 is
*** 19613,19619 ****
           --  Nonbinary case
  
           elsif M_Val < 2 ** Bits then
-             Check_SPARK_05_Restriction ("modulus should be a power of 2", T);
              Set_Non_Binary_Modulus (T);
  
              if Bits > System_Max_Nonbinary_Modulus_Power then
--- 19583,19588 ----
*************** package body Sem_Ch3 is
*** 20153,20159 ****
           --  Per-Object Expressions" in spec of package Sem).
  
           if Present (Expression (Discr)) then
!             Preanalyze_Spec_Expression (Expression (Discr), Discr_Type);
  
              --  Legaity checks
  
--- 20122,20128 ----
           --  Per-Object Expressions" in spec of package Sem).
  
           if Present (Expression (Discr)) then
!             Preanalyze_Default_Expression (Expression (Discr), Discr_Type);
  
              --  Legaity checks
  
*************** package body Sem_Ch3 is
*** 20201,20210 ****
                   (Defining_Identifier (Discr), Expression (Discr));
              end if;
  
!             --  In gnatc or gnatprove mode, make sure set Do_Range_Check flag
              --  gets set unless we can be sure that no range check is required.
  
!             if (GNATprove_Mode or not Expander_Active)
                and then not
                  Is_In_Range
                    (Expression (Discr), Discr_Type, Assume_Valid => True)
--- 20170,20179 ----
                   (Defining_Identifier (Discr), Expression (Discr));
              end if;
  
!             --  In gnatc or GNATprove mode, make sure set Do_Range_Check flag
              --  gets set unless we can be sure that no range check is required.
  
!             if not Expander_Active
                and then not
                  Is_In_Range
                    (Expression (Discr), Discr_Type, Assume_Valid => True)
*************** package body Sem_Ch3 is
*** 20296,20305 ****
  
           --  A discriminant cannot be effectively volatile (SPARK RM 7.1.3(4)).
           --  This check is relevant only when SPARK_Mode is on as it is not a
!          --  standard Ada legality rule.
  
           if SPARK_Mode = On
!            and then Is_Effectively_Volatile (Defining_Identifier (Discr))
           then
              Error_Msg_N ("discriminant cannot be volatile", Discr);
           end if;
--- 20265,20277 ----
  
           --  A discriminant cannot be effectively volatile (SPARK RM 7.1.3(4)).
           --  This check is relevant only when SPARK_Mode is on as it is not a
!          --  standard Ada legality rule. The only way for a discriminant to be
!          --  effectively volatile is to have an effectively volatile type, so
!          --  we check this directly, because the Ekind of Discr might not be
!          --  set yet (to help preventing cascaded errors on derived types).
  
           if SPARK_Mode = On
!            and then Is_Effectively_Volatile (Discr_Type)
           then
              Error_Msg_N ("discriminant cannot be volatile", Discr);
           end if;
*************** package body Sem_Ch3 is
*** 20621,20635 ****
           --  ELSE.
  
           else
-             --  In formal mode, when completing a private extension the type
-             --  named in the private part must be exactly the same as that
-             --  named in the visible part.
- 
-             if Priv_Parent /= Full_Parent then
-                Error_Msg_Name_1 := Chars (Priv_Parent);
-                Check_SPARK_05_Restriction ("% expected", Full_Indic);
-             end if;
- 
              --  Check the rules of 7.3(10): if the private extension inherits
              --  known discriminants, then the full type must also inherit those
              --  discriminants from the same (ancestor) type, and the parent
--- 20593,20598 ----
*************** package body Sem_Ch3 is
*** 20813,20821 ****
              Priv := Node (Priv_Elmt);
              Priv_Scop := Scope (Priv);
  
!             if Ekind_In (Priv, E_Private_Subtype,
!                                E_Limited_Private_Subtype,
!                                E_Record_Subtype_With_Private)
              then
                 Full := Make_Defining_Identifier (Sloc (Priv), Chars (Priv));
                 Set_Is_Itype (Full);
--- 20776,20784 ----
              Priv := Node (Priv_Elmt);
              Priv_Scop := Scope (Priv);
  
!             if Ekind (Priv) in E_Private_Subtype
!                              | E_Limited_Private_Subtype
!                              | E_Record_Subtype_With_Private
              then
                 Full := Make_Defining_Identifier (Sloc (Priv), Chars (Priv));
                 Set_Is_Itype (Full);
*************** package body Sem_Ch3 is
*** 20986,20992 ****
  
                 Prim := Next_Entity (Full_T);
                 while Present (Prim) and then Prim /= Priv_T loop
!                   if Ekind_In (Prim, E_Procedure, E_Function) then
                       Disp_Typ := Find_Dispatching_Type (Prim);
  
                       if Disp_Typ = Full_T
--- 20949,20955 ----
  
                 Prim := Next_Entity (Full_T);
                 while Present (Prim) and then Prim /= Priv_T loop
!                   if Ekind (Prim) in E_Procedure | E_Function then
                       Disp_Typ := Find_Dispatching_Type (Prim);
  
                       if Disp_Typ = Full_T
*************** package body Sem_Ch3 is
*** 21083,21098 ****
        end if;
  
        --  Propagate Default_Initial_Condition-related attributes from the
!       --  partial view to the full view and its base type.
  
        Propagate_DIC_Attributes (Full_T, From_Typ => Priv_T);
!       Propagate_DIC_Attributes (Base_Type (Full_T), From_Typ => Priv_T);
  
        --  Propagate invariant-related attributes from the partial view to the
!       --  full view and its base type.
  
        Propagate_Invariant_Attributes (Full_T, From_Typ => Priv_T);
!       Propagate_Invariant_Attributes (Base_Type (Full_T), From_Typ => Priv_T);
  
        --  AI12-0041: Detect an attempt to inherit a class-wide type invariant
        --  in the full view without advertising the inheritance in the partial
--- 21046,21077 ----
        end if;
  
        --  Propagate Default_Initial_Condition-related attributes from the
!       --  partial view to the full view.
  
        Propagate_DIC_Attributes (Full_T, From_Typ => Priv_T);
! 
!       --  And to the underlying full view, if any
! 
!       if Is_Private_Type (Full_T)
!         and then Present (Underlying_Full_View (Full_T))
!       then
!          Propagate_DIC_Attributes
!            (Underlying_Full_View (Full_T), From_Typ => Priv_T);
!       end if;
  
        --  Propagate invariant-related attributes from the partial view to the
!       --  full view.
  
        Propagate_Invariant_Attributes (Full_T, From_Typ => Priv_T);
! 
!       --  And to the underlying full view, if any
! 
!       if Is_Private_Type (Full_T)
!         and then Present (Underlying_Full_View (Full_T))
!       then
!          Propagate_Invariant_Attributes
!            (Underlying_Full_View (Full_T), From_Typ => Priv_T);
!       end if;
  
        --  AI12-0041: Detect an attempt to inherit a class-wide type invariant
        --  in the full view without advertising the inheritance in the partial
*************** package body Sem_Ch3 is
*** 21123,21134 ****
        --  view cannot be frozen yet, and the predicate function has not been
        --  built. Still it is a cheap check and seems safer to make it.
  
!       if Has_Predicates (Priv_T) then
!          Set_Has_Predicates (Full_T);
  
!          if Present (Predicate_Function (Priv_T)) then
!             Set_Predicate_Function (Full_T, Predicate_Function (Priv_T));
!          end if;
        end if;
  
     <<Leave>>
--- 21102,21114 ----
        --  view cannot be frozen yet, and the predicate function has not been
        --  built. Still it is a cheap check and seems safer to make it.
  
!       Propagate_Predicate_Attributes (Full_T, Priv_T);
  
!       if Is_Private_Type (Full_T)
!         and then Present (Underlying_Full_View (Full_T))
!       then
!          Propagate_Predicate_Attributes
!            (Underlying_Full_View (Full_T), Priv_T);
        end if;
  
     <<Leave>>
*************** package body Sem_Ch3 is
*** 21261,21269 ****
       (R            : Node_Id;
        T            : Entity_Id;
        Subtyp       : Entity_Id := Empty;
!       Check_List   : List_Id   := Empty_List;
!       R_Check_Off  : Boolean   := False;
!       In_Iter_Schm : Boolean   := False)
     is
        Lo, Hi      : Node_Id;
        R_Checks    : Check_Result;
--- 21241,21248 ----
       (R            : Node_Id;
        T            : Entity_Id;
        Subtyp       : Entity_Id := Empty;
!       Check_List   : List_Id   := No_List;
!       R_Check_Off  : Boolean   := False)
     is
        Lo, Hi      : Node_Id;
        R_Checks    : Check_Result;
*************** package body Sem_Ch3 is
*** 21274,21289 ****
        Analyze_And_Resolve (R, Base_Type (T));
  
        if Nkind (R) = N_Range then
- 
-          --  In SPARK, all ranges should be static, with the exception of the
-          --  discrete type definition of a loop parameter specification.
- 
-          if not In_Iter_Schm
-            and then not Is_OK_Static_Range (R)
-          then
-             Check_SPARK_05_Restriction ("range should be static", R);
-          end if;
- 
           Lo := Low_Bound (R);
           Hi := High_Bound (R);
  
--- 21253,21258 ----
*************** package body Sem_Ch3 is
*** 21434,21450 ****
                    exit when
                      Nkind (Insert_Node) in N_Declaration
                      and then
!                       not Nkind_In
!                         (Insert_Node, N_Component_Declaration,
!                                       N_Loop_Parameter_Specification,
!                                       N_Function_Specification,
!                                       N_Procedure_Specification);
  
!                   exit when Nkind (Insert_Node) in N_Later_Decl_Item
!                     or else Nkind (Insert_Node) in
!                               N_Statement_Other_Than_Procedure_Call
!                     or else Nkind_In (Insert_Node, N_Procedure_Call_Statement,
!                                                    N_Pragma);
  
                    Insert_Node := Parent (Insert_Node);
                 end loop;
--- 21403,21418 ----
                    exit when
                      Nkind (Insert_Node) in N_Declaration
                      and then
!                       Nkind (Insert_Node) not in N_Component_Declaration
!                                                | N_Loop_Parameter_Specification
!                                                | N_Function_Specification
!                                                | N_Procedure_Specification;
  
!                   exit when Nkind (Insert_Node) in
!                               N_Later_Decl_Item                     |
!                               N_Statement_Other_Than_Procedure_Call |
!                               N_Procedure_Call_Statement            |
!                               N_Pragma;
  
                    Insert_Node := Parent (Insert_Node);
                 end loop;
*************** package body Sem_Ch3 is
*** 21477,21490 ****
                                Insert_Node,
                                Def_Id,
                                Sloc (Insert_Node),
-                               R,
                                Do_Before => True);
                          end if;
                       end;
  
!                   --  Insertion before a declaration. If the declaration
!                   --  includes discriminants, the list of applicable checks
!                   --  is given by the caller.
  
                    elsif Nkind (Insert_Node) in N_Declaration then
                       Def_Id := Defining_Identifier (Insert_Node);
--- 21445,21461 ----
                                Insert_Node,
                                Def_Id,
                                Sloc (Insert_Node),
                                Do_Before => True);
                          end if;
                       end;
  
!                   --  Case of declarations. If the declaration is for a type
!                   --  and involves discriminants, the checks are premature at
!                   --  the declaration point and need to wait for the expansion
!                   --  of the initialization procedure, which will pass in the
!                   --  list to put them on; otherwise, the checks are done at
!                   --  the declaration point and there is no need to do them
!                   --  again in the initialization procedure.
  
                    elsif Nkind (Insert_Node) in N_Declaration then
                       Def_Id := Defining_Identifier (Insert_Node);
*************** package body Sem_Ch3 is
*** 21495,21513 ****
                          (Ekind (Def_Id) = E_Protected_Type
                            and then Has_Discriminants (Def_Id))
                       then
!                         Append_Range_Checks
!                           (R_Checks,
!                             Check_List, Def_Id, Sloc (Insert_Node), R);
  
                       else
!                         Insert_Range_Checks
!                           (R_Checks,
!                             Insert_Node, Def_Id, Sloc (Insert_Node), R);
! 
                       end if;
  
!                   --  Insertion before a statement. Range appears in the
!                   --  context of a quantified expression. Insertion will
                    --  take place when expression is expanded.
  
                    else
--- 21466,21487 ----
                          (Ekind (Def_Id) = E_Protected_Type
                            and then Has_Discriminants (Def_Id))
                       then
!                         if Present (Check_List) then
!                            Append_Range_Checks
!                              (R_Checks,
!                                Check_List, Def_Id, Sloc (Insert_Node));
!                         end if;
  
                       else
!                         if No (Check_List) then
!                            Insert_Range_Checks
!                              (R_Checks,
!                                Insert_Node, Def_Id, Sloc (Insert_Node));
!                         end if;
                       end if;
  
!                   --  Case of statements. Drop the checks, as the range appears
!                   --  in the context of a quantified expression. Insertion will
                    --  take place when expression is expanded.
  
                    else
*************** package body Sem_Ch3 is
*** 21586,21599 ****
        Related_Id  : Entity_Id := Empty;
        Suffix      : Character := ' ') return Entity_Id
     is
-       P               : Node_Id;
-       Def_Id          : Entity_Id;
-       Error_Node      : Node_Id;
-       Full_View_Id    : Entity_Id;
-       Subtype_Mark_Id : Entity_Id;
- 
-       May_Have_Null_Exclusion : Boolean;
- 
        procedure Check_Incomplete (T : Node_Id);
        --  Called to verify that an incomplete type is not used prematurely
  
--- 21560,21565 ----
*************** package body Sem_Ch3 is
*** 21618,21623 ****
--- 21584,21599 ----
           end if;
        end Check_Incomplete;
  
+       --  Local variables
+ 
+       P               : Node_Id;
+       Def_Id          : Entity_Id;
+       Error_Node      : Node_Id;
+       Full_View_Id    : Entity_Id;
+       Subtype_Mark_Id : Entity_Id;
+ 
+       May_Have_Null_Exclusion : Boolean;
+ 
     --  Start of processing for Process_Subtype
  
     begin
*************** package body Sem_Ch3 is
*** 21638,21647 ****
           Check_Incomplete (S);
           P := Parent (S);
  
           --  Ada 2005 (AI-231): Static check
  
           if Ada_Version >= Ada_2005
!            and then Present (P)
             and then Null_Exclusion_Present (P)
             and then Nkind (P) /= N_Access_To_Object_Definition
             and then not Is_Access_Type (Entity (S))
--- 21614,21644 ----
           Check_Incomplete (S);
           P := Parent (S);
  
+          --  The following mirroring of assertion in Null_Exclusion_Present is
+          --  ugly, can't we have a range, a static predicate or even a flag???
+ 
+          May_Have_Null_Exclusion :=
+            Present (P)
+              and then
+            Nkind (P) in N_Access_Definition
+                       | N_Access_Function_Definition
+                       | N_Access_Procedure_Definition
+                       | N_Access_To_Object_Definition
+                       | N_Allocator
+                       | N_Component_Definition
+                       | N_Derived_Type_Definition
+                       | N_Discriminant_Specification
+                       | N_Formal_Object_Declaration
+                       | N_Function_Specification
+                       | N_Object_Declaration
+                       | N_Object_Renaming_Declaration
+                       | N_Parameter_Specification
+                       | N_Subtype_Declaration;
+ 
           --  Ada 2005 (AI-231): Static check
  
           if Ada_Version >= Ada_2005
!            and then May_Have_Null_Exclusion
             and then Null_Exclusion_Present (P)
             and then Nkind (P) /= N_Access_To_Object_Definition
             and then not Is_Access_Type (Entity (S))
*************** package body Sem_Ch3 is
*** 21649,21672 ****
              Error_Msg_N ("`NOT NULL` only allowed for an access type", S);
           end if;
  
-          --  The following is ugly, can't we have a range or even a flag???
- 
-          May_Have_Null_Exclusion :=
-            Nkind_In (P, N_Access_Definition,
-                         N_Access_Function_Definition,
-                         N_Access_Procedure_Definition,
-                         N_Access_To_Object_Definition,
-                         N_Allocator,
-                         N_Component_Definition)
-              or else
-            Nkind_In (P, N_Derived_Type_Definition,
-                         N_Discriminant_Specification,
-                         N_Formal_Object_Declaration,
-                         N_Object_Declaration,
-                         N_Object_Renaming_Declaration,
-                         N_Parameter_Specification,
-                         N_Subtype_Declaration);
- 
           --  Create an Itype that is a duplicate of Entity (S) but with the
           --  null-exclusion attribute.
  
--- 21646,21651 ----
*************** package body Sem_Ch3 is
*** 21997,22010 ****
        --  Normal case
  
        if Ada_Version < Ada_2005 or else not Interface_Present (Def) then
-          if Limited_Present (Def) then
-             Check_SPARK_05_Restriction ("limited is not allowed", N);
-          end if;
- 
-          if Abstract_Present (Def) then
-             Check_SPARK_05_Restriction ("abstract is not allowed", N);
-          end if;
- 
           --  The flag Is_Tagged_Type might have already been set by
           --  Find_Type_Name if it detected an error for declaration T. This
           --  arises in the case of private tagged types where the full view
--- 21976,21981 ----
*************** package body Sem_Ch3 is
*** 22028,22035 ****
                                        or else Abstract_Present (Def));
  
        else
-          Check_SPARK_05_Restriction ("interface is not allowed", N);
- 
           Is_Tagged := True;
           Analyze_Interface_Declaration (T, Def);
  
--- 21999,22004 ----
*************** package body Sem_Ch3 is
*** 22171,22210 ****
           T := Prev_T;
        end if;
  
-       --  In SPARK, tagged types and type extensions may only be declared in
-       --  the specification of library unit packages.
- 
-       if Present (Def) and then Is_Tagged_Type (T) then
-          declare
-             Typ  : Node_Id;
-             Ctxt : Node_Id;
- 
-          begin
-             if Nkind (Parent (Def)) = N_Full_Type_Declaration then
-                Typ := Parent (Def);
-             else
-                pragma Assert
-                  (Nkind (Parent (Def)) = N_Derived_Type_Definition);
-                Typ := Parent (Parent (Def));
-             end if;
- 
-             Ctxt := Parent (Typ);
- 
-             if Nkind (Ctxt) = N_Package_Body
-               and then Nkind (Parent (Ctxt)) = N_Compilation_Unit
-             then
-                Check_SPARK_05_Restriction
-                  ("type should be defined in package specification", Typ);
- 
-             elsif Nkind (Ctxt) /= N_Package_Specification
-               or else Nkind (Parent (Parent (Ctxt))) /= N_Compilation_Unit
-             then
-                Check_SPARK_05_Restriction
-                  ("type should be defined in library unit package", Typ);
-             end if;
-          end;
-       end if;
- 
        Final_Storage_Only := not Is_Controlled (T);
  
        --  Ada 2005: Check whether an explicit Limited is present in a derived
--- 22140,22145 ----
*************** package body Sem_Ch3 is
*** 22223,22241 ****
        --  record extension, in which case the current scope may have inherited
        --  components.
  
!       if No (Def)
!         or else No (Component_List (Def))
!         or else Null_Present (Component_List (Def))
        then
-          if not Is_Tagged_Type (T) then
-             Check_SPARK_05_Restriction ("untagged record cannot be null", Def);
-          end if;
- 
-       else
           Analyze_Declarations (Component_Items (Component_List (Def)));
  
           if Present (Variant_Part (Component_List (Def))) then
-             Check_SPARK_05_Restriction ("variant part is not allowed", Def);
              Analyze (Variant_Part (Component_List (Def)));
           end if;
        end if;
--- 22158,22170 ----
        --  record extension, in which case the current scope may have inherited
        --  components.
  
!       if Present (Def)
!         and then Present (Component_List (Def))
!         and then not Null_Present (Component_List (Def))
        then
           Analyze_Declarations (Component_Items (Component_List (Def)));
  
           if Present (Variant_Part (Component_List (Def))) then
              Analyze (Variant_Part (Component_List (Def)));
           end if;
        end if;
*************** package body Sem_Ch3 is
*** 22292,22302 ****
        end if;
     end Record_Type_Definition;
  
!    ------------------------
!    -- Replace_Components --
!    ------------------------
  
!    procedure Replace_Components (Typ : Entity_Id; Decl : Node_Id) is
        function Process (N : Node_Id) return Traverse_Result;
  
        -------------
--- 22221,22231 ----
        end if;
     end Record_Type_Definition;
  
!    ---------------------------
!    -- Replace_Discriminants --
!    ---------------------------
  
!    procedure Replace_Discriminants (Typ : Entity_Id; Decl : Node_Id) is
        function Process (N : Node_Id) return Traverse_Result;
  
        -------------
*************** package body Sem_Ch3 is
*** 22310,22316 ****
           if Nkind (N) = N_Discriminant_Specification then
              Comp := First_Discriminant (Typ);
              while Present (Comp) loop
!                if Chars (Comp) = Chars (Defining_Identifier (N)) then
                    Set_Defining_Identifier (N, Comp);
                    exit;
                 end if;
--- 22239,22247 ----
           if Nkind (N) = N_Discriminant_Specification then
              Comp := First_Discriminant (Typ);
              while Present (Comp) loop
!                if Original_Record_Component (Comp) = Defining_Identifier (N)
!                  or else Chars (Comp) = Chars (Defining_Identifier (N))
!                then
                    Set_Defining_Identifier (N, Comp);
                    exit;
                 end if;
*************** package body Sem_Ch3 is
*** 22321,22343 ****
           elsif Nkind (N) = N_Variant_Part then
              Comp := First_Discriminant (Typ);
              while Present (Comp) loop
!                if Chars (Comp) = Chars (Name (N)) then
!                   Set_Entity (Name (N), Comp);
!                   exit;
!                end if;
! 
!                Next_Discriminant (Comp);
!             end loop;
  
!          elsif Nkind (N) = N_Component_Declaration then
!             Comp := First_Component (Typ);
!             while Present (Comp) loop
!                if Chars (Comp) = Chars (Defining_Identifier (N)) then
!                   Set_Defining_Identifier (N, Comp);
                    exit;
                 end if;
  
!                Next_Component (Comp);
              end loop;
           end if;
  
--- 22252,22276 ----
           elsif Nkind (N) = N_Variant_Part then
              Comp := First_Discriminant (Typ);
              while Present (Comp) loop
!                if Original_Record_Component (Comp) = Entity (Name (N))
!                  or else Chars (Comp) = Chars (Name (N))
!                then
!                   --  Make sure to preserve the type coming from the parent on
!                   --  the Name, even if the subtype of the discriminant can be
!                   --  constrained, so that discrete choices inherited from the
!                   --  parent in the variant part are not flagged as violating
!                   --  the constraints of the subtype.
  
!                   declare
!                      Typ : constant Entity_Id := Etype (Name (N));
!                   begin
!                      Rewrite (Name (N), New_Occurrence_Of (Comp, Sloc (N)));
!                      Set_Etype (Name (N), Typ);
!                   end;
                    exit;
                 end if;
  
!                Next_Discriminant (Comp);
              end loop;
           end if;
  
*************** package body Sem_Ch3 is
*** 22346,22356 ****
  
        procedure Replace is new Traverse_Proc (Process);
  
!    --  Start of processing for Replace_Components
  
     begin
        Replace (Decl);
!    end Replace_Components;
  
     -------------------------------
     -- Set_Completion_Referenced --
--- 22279,22289 ----
  
        procedure Replace is new Traverse_Proc (Process);
  
!    --  Start of processing for Replace_Discriminants
  
     begin
        Replace (Decl);
!    end Replace_Discriminants;
  
     -------------------------------
     -- Set_Completion_Referenced --
*************** package body Sem_Ch3 is
*** 22549,22566 ****
                ("non-static expression used for integer type bound!", Expr);
              Errs := True;
  
!          --  The bounds are folded into literals, and we set their type to be
!          --  universal, to avoid typing difficulties: we cannot set the type
!          --  of the literal to the new type, because this would be a forward
!          --  reference for the back end,  and if the original type is user-
!          --  defined this can lead to spurious semantic errors (e.g. 2928-003).
! 
!          else
!             if Is_Entity_Name (Expr) then
!                Fold_Uint (Expr, Expr_Value (Expr), True);
!             end if;
  
!             Set_Etype (Expr, Universal_Integer);
           end if;
        end Check_Bound;
  
--- 22482,22491 ----
                ("non-static expression used for integer type bound!", Expr);
              Errs := True;
  
!          --  Otherwise the bounds are folded into literals
  
!          elsif Is_Entity_Name (Expr) then
!             Fold_Uint (Expr, Expr_Value (Expr), True);
           end if;
        end Check_Bound;
  
*************** package body Sem_Ch3 is
*** 22582,22587 ****
--- 22507,22513 ----
        if Hi = Error or else Lo = Error then
           Base_Typ := Any_Integer;
           Set_Error_Posted (T, True);
+          Errs := True;
  
        --  Here both bounds are OK expressions
  
*************** package body Sem_Ch3 is
*** 22593,22600 ****
           Check_Bound (Hi);
  
           if Errs then
!             Hi := Type_High_Bound (Standard_Long_Long_Integer);
!             Lo := Type_Low_Bound (Standard_Long_Long_Integer);
           end if;
  
           --  Find type to derive from
--- 22519,22526 ----
           Check_Bound (Hi);
  
           if Errs then
!             Hi := Type_High_Bound (Standard_Long_Long_Long_Integer);
!             Lo := Type_Low_Bound  (Standard_Long_Long_Long_Integer);
           end if;
  
           --  Find type to derive from
*************** package body Sem_Ch3 is
*** 22618,22631 ****
              Check_Restriction (No_Long_Long_Integers, Def);
              Base_Typ := Base_Type (Standard_Long_Long_Integer);
  
           else
!             Base_Typ := Base_Type (Standard_Long_Long_Integer);
              Error_Msg_N ("integer type definition bounds out of range", Def);
!             Hi := Type_High_Bound (Standard_Long_Long_Integer);
!             Lo := Type_Low_Bound (Standard_Long_Long_Integer);
           end if;
        end if;
  
        --  Complete both implicit base and declared first subtype entities. The
        --  inheritance of the rep item chain ensures that SPARK-related pragmas
        --  are not clobbered when the signed integer type acts as a full view of
--- 22544,22572 ----
              Check_Restriction (No_Long_Long_Integers, Def);
              Base_Typ := Base_Type (Standard_Long_Long_Integer);
  
+          elsif Can_Derive_From (Standard_Long_Long_Long_Integer) then
+             Check_Restriction (No_Long_Long_Integers, Def);
+             Base_Typ := Base_Type (Standard_Long_Long_Long_Integer);
+ 
           else
!             Base_Typ := Base_Type (Standard_Long_Long_Long_Integer);
              Error_Msg_N ("integer type definition bounds out of range", Def);
!             Hi := Type_High_Bound (Standard_Long_Long_Long_Integer);
!             Lo := Type_Low_Bound  (Standard_Long_Long_Long_Integer);
           end if;
        end if;
  
+       --  Set the type of the bounds to the implicit base: we cannot set it to
+       --  the new type, because this would be a forward reference for the code
+       --  generator and, if the original type is user-defined, this could even
+       --  lead to spurious semantic errors. Furthermore we do not set it to be
+       --  universal, because this could make it much larger than needed here.
+ 
+       if not Errs then
+          Set_Etype (Lo, Implicit_Base);
+          Set_Etype (Hi, Implicit_Base);
+       end if;
+ 
        --  Complete both implicit base and declared first subtype entities. The
        --  inheritance of the rep item chain ensures that SPARK-related pragmas
        --  are not clobbered when the signed integer type acts as a full view of
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch3.ads gcc-11.1.0/gcc/ada/sem_ch3.ads
*** gcc-10.3.0/gcc/ada/sem_ch3.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch3.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,29 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with Nlists; use Nlists;
  with Types;  use Types;
  
  package Sem_Ch3 is
--- 23,28 ----
*************** package Sem_Ch3 is
*** 196,203 ****
       (N            : Node_Id;
        Related_Nod  : Node_Id;
        Related_Id   : Entity_Id := Empty;
!       Suffix_Index : Nat       := 1;
!       In_Iter_Schm : Boolean   := False);
     --  Process an index that is given in an array declaration, an entry
     --  family declaration or a loop iteration. The index is given by an index
     --  declaration (a 'box'), or by a discrete range. The later can be the name
--- 195,201 ----
       (N            : Node_Id;
        Related_Nod  : Node_Id;
        Related_Id   : Entity_Id := Empty;
!       Suffix_Index : Pos       := 1);
     --  Process an index that is given in an array declaration, an entry
     --  family declaration or a loop iteration. The index is given by an index
     --  declaration (a 'box'), or by a discrete range. The later can be the name
*************** package Sem_Ch3 is
*** 205,212 ****
     --
     --  Related_Nod is the node where the potential generated implicit types
     --  will be inserted. The next last parameters are used for creating the
!    --  name. In_Iter_Schm is True if Make_Index is called on the discrete
!    --  subtype definition in an iteration scheme.
  
     procedure Make_Class_Wide_Type (T : Entity_Id);
     --  A Class_Wide_Type is created for each tagged type definition. The
--- 203,209 ----
     --
     --  Related_Nod is the node where the potential generated implicit types
     --  will be inserted. The next last parameters are used for creating the
!    --  name.
  
     procedure Make_Class_Wide_Type (T : Entity_Id);
     --  A Class_Wide_Type is created for each tagged type definition. The
*************** package Sem_Ch3 is
*** 244,250 ****
     --  Default and per object expressions do not freeze their components, and
     --  must be analyzed and resolved accordingly. The analysis is done by
     --  calling the Preanalyze_And_Resolve routine and setting the global
!    --  In_Default_Expression flag. See the documentation section entitled
     --  "Handling of Default and Per-Object Expressions" in sem.ads for full
     --  details. N is the expression to be analyzed, T is the expected type.
     --  This mechanism is also used for aspect specifications that have an
--- 241,247 ----
     --  Default and per object expressions do not freeze their components, and
     --  must be analyzed and resolved accordingly. The analysis is done by
     --  calling the Preanalyze_And_Resolve routine and setting the global
!    --  In_Spec_Expression flag. See the documentation section entitled
     --  "Handling of Default and Per-Object Expressions" in sem.ads for full
     --  details. N is the expression to be analyzed, T is the expected type.
     --  This mechanism is also used for aspect specifications that have an
*************** package Sem_Ch3 is
*** 265,273 ****
       (R            : Node_Id;
        T            : Entity_Id;
        Subtyp       : Entity_Id := Empty;
!       Check_List   : List_Id   := Empty_List;
!       R_Check_Off  : Boolean   := False;
!       In_Iter_Schm : Boolean   := False);
     --  Process a range expression that appears in a declaration context. The
     --  range is analyzed and resolved with the base type of the given type, and
     --  an appropriate check for expressions in non-static contexts made on the
--- 262,269 ----
       (R            : Node_Id;
        T            : Entity_Id;
        Subtyp       : Entity_Id := Empty;
!       Check_List   : List_Id   := No_List;
!       R_Check_Off  : Boolean   := False);
     --  Process a range expression that appears in a declaration context. The
     --  range is analyzed and resolved with the base type of the given type, and
     --  an appropriate check for expressions in non-static contexts made on the
*************** package Sem_Ch3 is
*** 278,285 ****
     --  when the subprogram is called from Build_Record_Init_Proc and is used to
     --  return a set of constraint checking statements generated by the Checks
     --  package. R_Check_Off is set to True when the call to Range_Check is to
!    --  be skipped. In_Iter_Schm is True if Process_Range_Expr_In_Decl is called
!    --  on the discrete subtype definition in an iteration scheme.
     --
     --  If Subtyp is given, then the range is for the named subtype Subtyp, and
     --  in this case the bounds are captured if necessary using this name.
--- 274,280 ----
     --  when the subprogram is called from Build_Record_Init_Proc and is used to
     --  return a set of constraint checking statements generated by the Checks
     --  package. R_Check_Off is set to True when the call to Range_Check is to
!    --  be skipped.
     --
     --  If Subtyp is given, then the range is for the named subtype Subtyp, and
     --  in this case the bounds are captured if necessary using this name.
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch4.adb gcc-11.1.0/gcc/ada/sem_ch4.adb
*** gcc-10.3.0/gcc/ada/sem_ch4.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch4.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Ch4 is
*** 171,176 ****
--- 171,177 ----
     --  being called. The caller will have verified that the object is legal
     --  for the call. If the remaining parameters match, the first parameter
     --  will rewritten as a dereference if needed, prior to completing analysis.
+ 
     procedure Check_Misspelled_Selector
       (Prefix : Entity_Id;
        Sel    : Node_Id);
*************** package body Sem_Ch4 is
*** 276,295 ****
     --  type is not directly visible. The routine uses this type to emit a more
     --  informative message.
  
-    function Process_Implicit_Dereference_Prefix
-      (E : Entity_Id;
-       P : Node_Id) return Entity_Id;
-    --  Called when P is the prefix of an implicit dereference, denoting an
-    --  object E. The function returns the designated type of the prefix, taking
-    --  into account that the designated type of an anonymous access type may be
-    --  a limited view, when the nonlimited view is visible.
-    --
-    --  If in semantics only mode (-gnatc or generic), the function also records
-    --  that the prefix is a reference to E, if any. Normally, such a reference
-    --  is generated only when the implicit dereference is expanded into an
-    --  explicit one, but for consistency we must generate the reference when
-    --  expansion is disabled as well.
- 
     procedure Remove_Abstract_Operations (N : Node_Id);
     --  Ada 2005: implementation of AI-310. An abstract non-dispatching
     --  operation is not a candidate interpretation.
--- 277,282 ----
*************** package body Sem_Ch4 is
*** 299,304 ****
--- 286,292 ----
        Prefix : Node_Id;
        Exprs  : List_Id) return Boolean;
     --  AI05-0139: Generalized indexing to support iterators over containers
+    --  ??? Need to provide a more detailed spec of what this function does
  
     function Try_Indexed_Call
       (N          : Node_Id;
*************** package body Sem_Ch4 is
*** 392,398 ****
        if Nkind (N) in N_Membership_Test then
           Error_Msg_N ("ambiguous operands for membership",  N);
  
!       elsif Nkind_In (N, N_Op_Eq, N_Op_Ne) then
           Error_Msg_N ("ambiguous operands for equality",  N);
  
        else
--- 380,386 ----
        if Nkind (N) in N_Membership_Test then
           Error_Msg_N ("ambiguous operands for membership",  N);
  
!       elsif Nkind (N) in N_Op_Eq | N_Op_Ne then
           Error_Msg_N ("ambiguous operands for equality",  N);
  
        else
*************** package body Sem_Ch4 is
*** 469,476 ****
        Onode    : Node_Id;
  
     begin
-       Check_SPARK_05_Restriction ("allocator is not allowed", N);
- 
        --  Deal with allocator restrictions
  
        --  In accordance with H.4(7), the No_Allocators restriction only applies
--- 457,462 ----
*************** package body Sem_Ch4 is
*** 680,686 ****
                 --  that outside of spec expressions, otherwise the declaration
                 --  cannot be inserted and analyzed. In such a case, GNATprove
                 --  later rejects the allocator as it is not used here in
!                --  a non-interfering context (SPARK 4.8(2) and 7.1.3(12)).
  
                 if Expander_Active
                   or else (GNATprove_Mode and then not In_Spec_Expression)
--- 666,672 ----
                 --  that outside of spec expressions, otherwise the declaration
                 --  cannot be inserted and analyzed. In such a case, GNATprove
                 --  later rejects the allocator as it is not used here in
!                --  a non-interfering context (SPARK 4.8(2) and 7.1.3(10)).
  
                 if Expander_Active
                   or else (GNATprove_Mode and then not In_Spec_Expression)
*************** package body Sem_Ch4 is
*** 935,950 ****
  
        if Present (Op_Id) then
           if Ekind (Op_Id) = E_Operator then
! 
!             if Nkind_In (N, N_Op_Divide, N_Op_Mod, N_Op_Multiply, N_Op_Rem)
!               and then Treat_Fixed_As_Integer (N)
!             then
!                null;
!             else
!                Set_Etype (N, Any_Type);
!                Find_Arithmetic_Types (L, R, Op_Id, N);
!             end if;
! 
           else
              Set_Etype (N, Any_Type);
              Add_One_Interp (N, Op_Id, Etype (Op_Id));
--- 921,928 ----
  
        if Present (Op_Id) then
           if Ekind (Op_Id) = E_Operator then
!             Set_Etype (N, Any_Type);
!             Find_Arithmetic_Types (L, R, Op_Id, N);
           else
              Set_Etype (N, Any_Type);
              Add_One_Interp (N, Op_Id, Etype (Op_Id));
*************** package body Sem_Ch4 is
*** 998,1014 ****
        Nam     : Node_Id;
        X       : Interp_Index;
        It      : Interp;
!       Nam_Ent : Entity_Id;
        Success : Boolean := False;
  
        Deref : Boolean := False;
        --  Flag indicates whether an interpretation of the prefix is a
        --  parameterless call that returns an access_to_subprogram.
  
-       procedure Check_Mixed_Parameter_And_Named_Associations;
-       --  Check that parameter and named associations are not mixed. This is
-       --  a restriction in SPARK mode.
- 
        procedure Check_Writable_Actuals (N : Node_Id);
        --  If the call has out or in-out parameters then mark its outermost
        --  enclosing construct as a node on which the writable actuals check
--- 976,988 ----
        Nam     : Node_Id;
        X       : Interp_Index;
        It      : Interp;
!       Nam_Ent : Entity_Id := Empty;
        Success : Boolean := False;
  
        Deref : Boolean := False;
        --  Flag indicates whether an interpretation of the prefix is a
        --  parameterless call that returns an access_to_subprogram.
  
        procedure Check_Writable_Actuals (N : Node_Id);
        --  If the call has out or in-out parameters then mark its outermost
        --  enclosing construct as a node on which the writable actuals check
*************** package body Sem_Ch4 is
*** 1024,1059 ****
        procedure No_Interpretation;
        --  Output error message when no valid interpretation exists
  
-       --------------------------------------------------
-       -- Check_Mixed_Parameter_And_Named_Associations --
-       --------------------------------------------------
- 
-       procedure Check_Mixed_Parameter_And_Named_Associations is
-          Actual     : Node_Id;
-          Named_Seen : Boolean;
- 
-       begin
-          Named_Seen := False;
- 
-          Actual := First (Actuals);
-          while Present (Actual) loop
-             case Nkind (Actual) is
-                when N_Parameter_Association =>
-                   if Named_Seen then
-                      Check_SPARK_05_Restriction
-                        ("named association cannot follow positional one",
-                         Actual);
-                      exit;
-                   end if;
- 
-                when others =>
-                   Named_Seen := True;
-             end case;
- 
-             Next (Actual);
-          end loop;
-       end Check_Mixed_Parameter_And_Named_Associations;
- 
        ----------------------------
        -- Check_Writable_Actuals --
        ----------------------------
--- 998,1003 ----
*************** package body Sem_Ch4 is
*** 1119,1126 ****
                       --  performing the writable actuals check.
  
                       if Has_Arbitrary_Evaluation_Order (Nkind (P))
!                        and then not Nkind_In (P, N_Assignment_Statement,
!                                                  N_Object_Declaration)
                       then
                          Outermost := P;
                       end if;
--- 1063,1070 ----
                       --  performing the writable actuals check.
  
                       if Has_Arbitrary_Evaluation_Order (Nkind (P))
!                        and then Nkind (P) not in
!                                   N_Assignment_Statement | N_Object_Declaration
                       then
                          Outermost := P;
                       end if;
*************** package body Sem_Ch4 is
*** 1129,1136 ****
  
                       exit when Stop_Subtree_Climbing (Nkind (P))
                         or else (Nkind (P) = N_Range
!                                  and then not
!                                    Nkind_In (Parent (P), N_In, N_Not_In));
  
                       P := Parent (P);
                    end loop;
--- 1073,1080 ----
  
                       exit when Stop_Subtree_Climbing (Nkind (P))
                         or else (Nkind (P) = N_Range
!                                  and then
!                                    Nkind (Parent (P)) not in N_In | N_Not_In);
  
                       P := Parent (P);
                    end loop;
*************** package body Sem_Ch4 is
*** 1180,1187 ****
           --  Check for tasking cases where only an entry call will do
  
           elsif not L
!            and then Nkind_In (K, N_Entry_Call_Alternative,
!                                  N_Triggering_Alternative)
           then
              Error_Msg_N ("entry name expected", Nam);
  
--- 1124,1130 ----
           --  Check for tasking cases where only an entry call will do
  
           elsif not L
!            and then K in N_Entry_Call_Alternative | N_Triggering_Alternative
           then
              Error_Msg_N ("entry name expected", Nam);
  
*************** package body Sem_Ch4 is
*** 1195,1204 ****
     --  Start of processing for Analyze_Call
  
     begin
-       if Restriction_Check_Required (SPARK_05) then
-          Check_Mixed_Parameter_And_Named_Associations;
-       end if;
- 
        --  Initialize the type of the result of the call to the error type,
        --  which will be reset if the type is successfully resolved.
  
--- 1138,1143 ----
*************** package body Sem_Ch4 is
*** 1224,1231 ****
           --  type is an array, F (X) cannot be interpreted as an indirect call
           --  through the result of the call to F.
  
!          elsif Is_Access_Type (Etype (Nam))
!            and then Ekind (Designated_Type (Etype (Nam))) = E_Subprogram_Type
             and then
               (not Name_Denotes_Function
                 or else Nkind (N) = N_Procedure_Call_Statement
--- 1163,1169 ----
           --  type is an array, F (X) cannot be interpreted as an indirect call
           --  through the result of the call to F.
  
!          elsif Is_Access_Subprogram_Type (Base_Type (Etype (Nam)))
             and then
               (not Name_Denotes_Function
                 or else Nkind (N) = N_Procedure_Call_Statement
*************** package body Sem_Ch4 is
*** 1246,1255 ****
           elsif Nkind (Nam) = N_Selected_Component then
              Nam_Ent := Entity (Selector_Name (Nam));
  
!             if not Ekind_In (Nam_Ent, E_Entry,
!                                       E_Entry_Family,
!                                       E_Function,
!                                       E_Procedure)
              then
                 Error_Msg_N ("name in call is not a callable entity", Nam);
                 Set_Etype (N, Any_Type);
--- 1184,1193 ----
           elsif Nkind (Nam) = N_Selected_Component then
              Nam_Ent := Entity (Selector_Name (Nam));
  
!             if Ekind (Nam_Ent) not in E_Entry
!                                     | E_Entry_Family
!                                     | E_Function
!                                     | E_Procedure
              then
                 Error_Msg_N ("name in call is not a callable entity", Nam);
                 Set_Etype (N, Any_Type);
*************** package body Sem_Ch4 is
*** 1316,1321 ****
--- 1254,1278 ----
  
           Analyze_One_Call (N, Nam_Ent, True, Success);
  
+          --  If the nonoverloaded interpretation is a call to an abstract
+          --  nondispatching operation, then flag an error and return.
+ 
+          --  Should this be incorporated in Remove_Abstract_Operations (which
+          --  currently only deals with cases where the name is overloaded)? ???
+ 
+          if Is_Overloadable (Nam_Ent)
+            and then Is_Abstract_Subprogram (Nam_Ent)
+            and then not Is_Dispatching_Operation (Nam_Ent)
+          then
+             Set_Etype (N, Any_Type);
+ 
+             Error_Msg_Sloc := Sloc (Nam_Ent);
+             Error_Msg_NE
+               ("cannot call abstract operation& declared#", N, Nam_Ent);
+ 
+             return;
+          end if;
+ 
           --  If this is an indirect call, the return type of the access_to
           --  subprogram may be an incomplete type. At the point of the call,
           --  use the full type if available, and at the same time update the
*************** package body Sem_Ch4 is
*** 1424,1430 ****
                    Set_Etype (Nam, It.Typ);
                 end if;
  
!             elsif Nkind_In (Name (N), N_Function_Call, N_Selected_Component)
              then
                 Remove_Interp (X);
              end if;
--- 1381,1387 ----
                    Set_Etype (Nam, It.Typ);
                 end if;
  
!             elsif Nkind (Name (N)) in N_Function_Call | N_Selected_Component
              then
                 Remove_Interp (X);
              end if;
*************** package body Sem_Ch4 is
*** 1514,1519 ****
--- 1471,1516 ----
           End_Interp_List;
        end if;
  
+       --  Check the accessibility level for actuals for explicitly aliased
+       --  formals.
+ 
+       if Nkind (N) = N_Function_Call
+         and then Comes_From_Source (N)
+         and then Present (Nam_Ent)
+         and then In_Return_Value (N)
+       then
+          declare
+             Form : Node_Id;
+             Act  : Node_Id;
+          begin
+             Act  := First_Actual (N);
+             Form := First_Formal (Nam_Ent);
+ 
+             while Present (Form) and then Present (Act) loop
+                --  Check whether the formal is aliased and if the accessibility
+                --  level of the actual is deeper than the accessibility level
+                --  of the enclosing subprogam to which the current return
+                --  statement applies.
+ 
+                --  Should we be checking Is_Entity_Name on Act? Won't this miss
+                --  other cases ???
+ 
+                if Is_Explicitly_Aliased (Form)
+                  and then Is_Entity_Name (Act)
+                  and then Static_Accessibility_Level
+                             (Act, Zero_On_Dynamic_Level)
+                               > Subprogram_Access_Level (Current_Subprogram)
+                then
+                   Error_Msg_N ("actual for explicitly aliased formal is too"
+                                 & " short lived", Act);
+                end if;
+ 
+                Next_Formal (Form);
+                Next_Actual (Act);
+             end loop;
+          end;
+       end if;
+ 
        if Ada_Version >= Ada_2012 then
  
           --  Check if the call contains a function with writable actuals
*************** package body Sem_Ch4 is
*** 2100,2112 ****
     --  Start of processing for Analyze_Explicit_Dereference
  
     begin
-       --  If source node, check SPARK restriction. We guard this with the
-       --  source node check, because ???
- 
-       if Comes_From_Source (N) then
-          Check_SPARK_05_Restriction ("explicit dereference is not allowed", N);
-       end if;
- 
        --  In formal verification mode, keep track of all reads and writes
        --  through explicit dereferences.
  
--- 2097,2102 ----
*************** package body Sem_Ch4 is
*** 2286,2302 ****
--- 2276,2366 ----
     -------------------------------------
  
     procedure Analyze_Expression_With_Actions (N : Node_Id) is
+ 
+       procedure Check_Action_OK (A : Node_Id);
+       --  Check that the action is something that is allows as a declare_item
+       --  of a declare_expression, except the checks are suppressed for
+       --  generated code.
+ 
+       procedure Check_Action_OK (A : Node_Id) is
+       begin
+          if not Comes_From_Source (N) or else not Comes_From_Source (A) then
+             return; -- Allow anything in generated code
+          end if;
+ 
+          case Nkind (A) is
+             when N_Object_Declaration =>
+                if Nkind (Object_Definition (A)) = N_Access_Definition then
+                   Error_Msg_N
+                     ("anonymous access type not allowed in declare_expression",
+                      Object_Definition (A));
+                end if;
+ 
+                if Aliased_Present (A) then
+                   Error_Msg_N ("ALIASED not allowed in declare_expression", A);
+                end if;
+ 
+                if Constant_Present (A)
+                  and then not Is_Limited_Type (Etype (Defining_Identifier (A)))
+                then
+                   return; -- nonlimited constants are OK
+                end if;
+ 
+             when N_Object_Renaming_Declaration =>
+                if Present (Access_Definition (A)) then
+                   Error_Msg_N
+                     ("anonymous access type not allowed in declare_expression",
+                      Access_Definition (A));
+                end if;
+ 
+                if not Is_Limited_Type (Etype (Defining_Identifier (A))) then
+                   return; -- ???For now; the RM rule is a bit more complicated
+                end if;
+ 
+             when others =>
+                null; -- Nothing else allowed, not even pragmas
+          end case;
+ 
+          Error_Msg_N ("object renaming or constant declaration expected", A);
+       end Check_Action_OK;
+ 
        A : Node_Id;
+       EWA_Scop : Entity_Id;
+ 
+    --  Start of processing for Analyze_Expression_With_Actions
  
     begin
+       --  Create a scope, which is needed to provide proper visibility of the
+       --  declare_items.
+ 
+       EWA_Scop := New_Internal_Entity (E_Block, Current_Scope, Sloc (N), 'B');
+       Set_Etype  (EWA_Scop, Standard_Void_Type);
+       Set_Scope  (EWA_Scop, Current_Scope);
+       Set_Parent (EWA_Scop, N);
+       Push_Scope (EWA_Scop);
+ 
+       --  If this Expression_With_Actions node comes from source, then it
+       --  represents a declare_expression; increment the counter to take note
+       --  of that.
+ 
+       if Comes_From_Source (N) then
+          In_Declare_Expr := In_Declare_Expr + 1;
+       end if;
+ 
        A := First (Actions (N));
        while Present (A) loop
           Analyze (A);
+          Check_Action_OK (A);
           Next (A);
        end loop;
  
        Analyze_Expression (Expression (N));
        Set_Etype (N, Etype (Expression (N)));
+       End_Scope;
+ 
+       if Comes_From_Source (N) then
+          In_Declare_Expr := In_Declare_Expr - 1;
+       end if;
     end Analyze_Expression_With_Actions;
  
     ---------------------------
*************** package body Sem_Ch4 is
*** 2326,2335 ****
        Else_Expr := Next (Then_Expr);
  
        if Comes_From_Source (N) then
-          Check_SPARK_05_Restriction ("if expression is not allowed", N);
-       end if;
- 
-       if Comes_From_Source (N) then
           Check_Compiler_Unit ("if expression", N);
        end if;
  
--- 2390,2395 ----
*************** package body Sem_Ch4 is
*** 2389,2395 ****
  
              if Etype (N) = Any_Type then
                 Error_Msg_N
!                  ("type incompatible with that of `THEN` expression",
                    Else_Expr);
                 return;
              end if;
--- 2449,2455 ----
  
              if Etype (N) = Any_Type then
                 Error_Msg_N
!                  ("type incompatible with that of THEN expression",
                    Else_Expr);
                 return;
              end if;
*************** package body Sem_Ch4 is
*** 2411,2417 ****
  
        procedure Process_Function_Call;
        --  Prefix in indexed component form is an overloadable entity, so the
!       --  node is a function call. Reformat it as such.
  
        procedure Process_Indexed_Component;
        --  Prefix in indexed component form is actually an indexed component.
--- 2471,2480 ----
  
        procedure Process_Function_Call;
        --  Prefix in indexed component form is an overloadable entity, so the
!       --  node is very likely a function call; reformat it as such. The only
!       --  exception is a call to a parameterless function that returns an
!       --  array type, or an access type thereof, in which case this will be
!       --  undone later by Resolve_Call or Resolve_Entry_Call.
  
        procedure Process_Indexed_Component;
        --  Prefix in indexed component form is actually an indexed component.
*************** package body Sem_Ch4 is
*** 2522,2528 ****
              if Is_Access_Type (Array_Type) then
                 Error_Msg_NW
                   (Warn_On_Dereference, "?d?implicit dereference", N);
!                Array_Type := Process_Implicit_Dereference_Prefix (Pent, P);
              end if;
  
              if Is_Array_Type (Array_Type) then
--- 2585,2591 ----
              if Is_Access_Type (Array_Type) then
                 Error_Msg_NW
                   (Warn_On_Dereference, "?d?implicit dereference", N);
!                Array_Type := Implicitly_Designated_Type (Array_Type);
              end if;
  
              if Is_Array_Type (Array_Type) then
*************** package body Sem_Ch4 is
*** 2829,2846 ****
             and then Is_Overloadable (Entity (Selector_Name (P)))
           then
              Process_Function_Call;
- 
-          --  In ASIS mode within a generic, a prefixed call is analyzed and
-          --  partially rewritten but the original indexed component has not
-          --  yet been rewritten as a call. Perform the replacement now.
- 
-          elsif Nkind (P) = N_Selected_Component
-            and then Nkind (Parent (P)) = N_Function_Call
-            and then ASIS_Mode
-          then
-             Rewrite (N, Parent (P));
-             Analyze (N);
- 
           else
              --  Indexed component, slice, or a call to a member of a family
              --  entry, which will be converted to an entry call later.
--- 2892,2897 ----
*************** package body Sem_Ch4 is
*** 3047,3052 ****
--- 3098,3105 ----
           end if;
        end Analyze_Set_Membership;
  
+       Op : Node_Id;
+ 
     --  Start of processing for Analyze_Membership_Op
  
     begin
*************** package body Sem_Ch4 is
*** 3093,3109 ****
             and then Has_Compatible_Type (R, Etype (L))
           then
              if Nkind (N) = N_In then
!                Rewrite (N,
!                  Make_Op_Eq (Loc,
!                    Left_Opnd  => L,
!                    Right_Opnd => R));
              else
!                Rewrite (N,
!                  Make_Op_Ne (Loc,
!                    Left_Opnd  => L,
!                    Right_Opnd => R));
              end if;
  
              Analyze (N);
              return;
  
--- 3146,3165 ----
             and then Has_Compatible_Type (R, Etype (L))
           then
              if Nkind (N) = N_In then
!                Op := Make_Op_Eq (Loc, Left_Opnd  => L, Right_Opnd => R);
              else
!                Op := Make_Op_Ne (Loc, Left_Opnd  => L, Right_Opnd => R);
              end if;
  
+             if Is_Record_Or_Limited_Type (Etype (L)) then
+ 
+                --  We reset the Entity in order to use the primitive equality
+                --  of the type, as per RM 4.5.2 (28.1/4).
+ 
+                Set_Entity (Op, Empty);
+             end if;
+ 
+             Rewrite (N, Op);
              Analyze (N);
              return;
  
*************** package body Sem_Ch4 is
*** 3139,3145 ****
     begin
        --  A special warning check, if we have an expression of the form:
        --    expr mod 2 * literal
!       --  where literal is 64 or less, then probably what was meant was
        --    expr mod 2 ** literal
        --  so issue an appropriate warning.
  
--- 3195,3201 ----
     begin
        --  A special warning check, if we have an expression of the form:
        --    expr mod 2 * literal
!       --  where literal is 128 or less, then probably what was meant was
        --    expr mod 2 ** literal
        --  so issue an appropriate warning.
  
*************** package body Sem_Ch4 is
*** 3148,3154 ****
          and then Intval (Right_Opnd (N)) = Uint_2
          and then Nkind (Parent (N)) = N_Op_Multiply
          and then Nkind (Right_Opnd (Parent (N))) = N_Integer_Literal
!         and then Intval (Right_Opnd (Parent (N))) <= Uint_64
        then
           Error_Msg_N
             ("suspicious MOD value, was '*'* intended'??M?", Parent (N));
--- 3204,3210 ----
          and then Intval (Right_Opnd (N)) = Uint_2
          and then Nkind (Parent (N)) = N_Op_Multiply
          and then Nkind (Right_Opnd (Parent (N))) = N_Integer_Literal
!         and then Intval (Right_Opnd (Parent (N))) <= Uint_128
        then
           Error_Msg_N
             ("suspicious MOD value, was '*'* intended'??M?", Parent (N));
*************** package body Sem_Ch4 is
*** 3202,3209 ****
  
     procedure Analyze_Null (N : Node_Id) is
     begin
-       Check_SPARK_05_Restriction ("null is not allowed", N);
- 
        Set_Etype (N, Any_Access);
     end Analyze_Null;
  
--- 3258,3263 ----
*************** package body Sem_Ch4 is
*** 3282,3288 ****
        --  When the type Address is a visible integer type, and the DEC
        --  system extension is visible, the predefined operator may be
        --  hidden as well, by one of the address operations in auxdec.
!       --  Finally, The abstract operations on address do not hide the
        --  predefined operator (this is the purpose of making them abstract).
  
        -----------------------------------
--- 3336,3342 ----
        --  When the type Address is a visible integer type, and the DEC
        --  system extension is visible, the predefined operator may be
        --  hidden as well, by one of the address operations in auxdec.
!       --  Finally, the abstract operations on address do not hide the
        --  predefined operator (this is the purpose of making them abstract).
  
        -----------------------------------
*************** package body Sem_Ch4 is
*** 3294,3313 ****
           T2 : Entity_Id) return Boolean
        is
           function Common_Type (T : Entity_Id) return Entity_Id;
!          --  Find non-private full view if any, without going to ancestor type
!          --  (as opposed to Underlying_Type).
  
           -----------------
           -- Common_Type --
           -----------------
  
           function Common_Type (T : Entity_Id) return Entity_Id is
           begin
!             if Is_Private_Type (T) and then Present (Full_View (T)) then
!                return Base_Type (Full_View (T));
!             else
!                return Base_Type (T);
              end if;
           end Common_Type;
  
        --  Start of processing for Compatible_Types_In_Predicate
--- 3348,3377 ----
           T2 : Entity_Id) return Boolean
        is
           function Common_Type (T : Entity_Id) return Entity_Id;
!          --  Find non-private underlying full view if any, without going to
!          --  ancestor type (as opposed to Underlying_Type).
  
           -----------------
           -- Common_Type --
           -----------------
  
           function Common_Type (T : Entity_Id) return Entity_Id is
+             CT : Entity_Id;
+ 
           begin
!             CT := T;
! 
!             if Is_Private_Type (CT) and then Present (Full_View (CT)) then
!                CT := Full_View (CT);
!             end if;
! 
!             if Is_Private_Type (CT)
!               and then Present (Underlying_Full_View (CT))
!             then
!                CT := Underlying_Full_View (CT);
              end if;
+ 
+             return Base_Type (CT);
           end Common_Type;
  
        --  Start of processing for Compatible_Types_In_Predicate
*************** package body Sem_Ch4 is
*** 3350,3356 ****
           Success := True;
  
           --  If the prefix of the call is a name, indicate the entity
!          --  being called. If it is not a name,  it is an expression that
           --  denotes an access to subprogram or else an entry or family. In
           --  the latter case, the name is a selected component, and the entity
           --  being called is noted on the selector.
--- 3414,3420 ----
           Success := True;
  
           --  If the prefix of the call is a name, indicate the entity
!          --  being called. If it is not a name, it is an expression that
           --  denotes an access to subprogram or else an entry or family. In
           --  the latter case, the name is a selected component, and the entity
           --  being called is noted on the selector.
*************** package body Sem_Ch4 is
*** 3770,3791 ****
  
           --  To avoid breaking privacy, Is_Hidden gets set elsewhere on such
           --  primitives, but we still need to verify that Nam is indeed a
!          --  controlled subprogram. So, we do that here and issue the
!          --  appropriate error.
  
           if Is_Hidden (Nam)
             and then not In_Instance
             and then not Comes_From_Source (Nam)
             and then Comes_From_Source (N)
  
!            --  Verify Nam is a controlled primitive
  
!            and then Nam_In (Chars (Nam), Name_Adjust,
!                                          Name_Finalize,
!                                          Name_Initialize)
             and then Ekind (Nam) = E_Procedure
             and then Is_Controlled (Etype (First_Form))
             and then No (Next_Formal (First_Form))
           then
              Error_Msg_Node_2 := Etype (First_Form);
              Error_Msg_NE ("call to non-visible controlled primitive & on type"
--- 3834,3856 ----
  
           --  To avoid breaking privacy, Is_Hidden gets set elsewhere on such
           --  primitives, but we still need to verify that Nam is indeed a
!          --  non-visible controlled subprogram. So, we do that here and issue
!          --  the appropriate error.
  
           if Is_Hidden (Nam)
             and then not In_Instance
             and then not Comes_From_Source (Nam)
             and then Comes_From_Source (N)
  
!            --  Verify Nam is a non-visible controlled primitive
  
!            and then Chars (Nam) in Name_Adjust
!                                  | Name_Finalize
!                                  | Name_Initialize
             and then Ekind (Nam) = E_Procedure
             and then Is_Controlled (Etype (First_Form))
             and then No (Next_Formal (First_Form))
+            and then not Is_Visibly_Controlled (Etype (First_Form))
           then
              Error_Msg_Node_2 := Etype (First_Form);
              Error_Msg_NE ("call to non-visible controlled primitive & on type"
*************** package body Sem_Ch4 is
*** 3921,3935 ****
                   and then Is_Visible_Component (Comp, Sel)
                 then
  
!                   --  AI05-105:  if the context is an object renaming with
                    --  an anonymous access type, the expected type of the
                    --  object must be anonymous. This is a name resolution rule.
  
                    if Nkind (Parent (N)) /= N_Object_Renaming_Declaration
                      or else No (Access_Definition (Parent (N)))
!                     or else Ekind (Etype (Comp)) = E_Anonymous_Access_Type
!                     or else
!                       Ekind (Etype (Comp)) = E_Anonymous_Access_Subprogram_Type
                    then
                       Set_Entity (Sel, Comp);
                       Set_Etype (Sel, Etype (Comp));
--- 3986,3998 ----
                   and then Is_Visible_Component (Comp, Sel)
                 then
  
!                   --  AI05-105: if the context is an object renaming with
                    --  an anonymous access type, the expected type of the
                    --  object must be anonymous. This is a name resolution rule.
  
                    if Nkind (Parent (N)) /= N_Object_Renaming_Declaration
                      or else No (Access_Definition (Parent (N)))
!                     or else Is_Anonymous_Access_Type (Etype (Comp))
                    then
                       Set_Entity (Sel, Comp);
                       Set_Etype (Sel, Etype (Comp));
*************** package body Sem_Ch4 is
*** 3971,3988 ****
                    Set_Etype (Sel, Etype (Comp));
                    Set_Etype (N,   Etype (Comp));
                    Set_Etype (Nam, It.Typ);
- 
-                   --  For access type case, introduce explicit dereference for
-                   --  more uniform treatment of entry calls. Do this only once
-                   --  if several interpretations yield an access type.
- 
-                   if Is_Access_Type (Etype (Nam))
-                     and then Nkind (Nam) /= N_Explicit_Dereference
-                   then
-                      Insert_Explicit_Dereference (Nam);
-                      Error_Msg_NW
-                        (Warn_On_Dereference, "?d?implicit dereference", N);
-                   end if;
                 end if;
  
                 Next_Entity (Comp);
--- 4034,4039 ----
*************** package body Sem_Ch4 is
*** 4021,4034 ****
        Find_Type (Mark);
        T := Entity (Mark);
  
!       if Nkind_In (Enclosing_Declaration (N), N_Formal_Type_Declaration,
!                                               N_Full_Type_Declaration,
!                                               N_Incomplete_Type_Declaration,
!                                               N_Protected_Type_Declaration,
!                                               N_Private_Extension_Declaration,
!                                               N_Private_Type_Declaration,
!                                               N_Subtype_Declaration,
!                                               N_Task_Type_Declaration)
          and then T = Defining_Identifier (Enclosing_Declaration (N))
        then
           Error_Msg_N ("current instance not allowed", Mark);
--- 4072,4086 ----
        Find_Type (Mark);
        T := Entity (Mark);
  
!       if Nkind (Enclosing_Declaration (N)) in
!            N_Formal_Type_Declaration       |
!            N_Full_Type_Declaration         |
!            N_Incomplete_Type_Declaration   |
!            N_Protected_Type_Declaration    |
!            N_Private_Extension_Declaration |
!            N_Private_Type_Declaration      |
!            N_Subtype_Declaration           |
!            N_Task_Type_Declaration
          and then T = Defining_Identifier (Enclosing_Declaration (N))
        then
           Error_Msg_N ("current instance not allowed", Mark);
*************** package body Sem_Ch4 is
*** 4151,4158 ****
     --  Start of processing for Analyze_Quantified_Expression
  
     begin
-       Check_SPARK_05_Restriction ("quantified expression is not allowed", N);
- 
        --  Create a scope to emulate the loop-like behavior of the quantified
        --  expression. The scope is needed to provide proper visibility of the
        --  loop variable.
--- 4203,4208 ----
*************** package body Sem_Ch4 is
*** 4197,4202 ****
--- 4247,4253 ----
                 --  reflect the right kind. This is needed for proper ASIS
                 --  navigation. If expansion is enabled, the transformation is
                 --  performed when the expression is rewritten as a loop.
+                --  Is this still needed???
  
                 Set_Iterator_Specification (N,
                   New_Copy_Tree (Iterator_Specification (Parent (Loop_Par))));
*************** package body Sem_Ch4 is
*** 4228,4233 ****
--- 4279,4285 ----
  
        if Warn_On_Suspicious_Contract
          and then not Referenced (Loop_Id, Cond)
+         and then not Is_Internal_Name (Chars (Loop_Id))
        then
           --  Generating C, this check causes spurious warnings on inlined
           --  postconditions; we can safely disable it because this check
*************** package body Sem_Ch4 is
*** 4453,4459 ****
        In_Scope      : Boolean;
        Is_Private_Op : Boolean;
        Parent_N      : Node_Id;
-       Pent          : Entity_Id := Empty;
        Prefix_Type   : Entity_Id;
  
        Type_To_Use : Entity_Id;
--- 4505,4510 ----
*************** package body Sem_Ch4 is
*** 4482,4488 ****
        --  indexed component rather than a function call.
  
        function Has_Dereference (Nod : Node_Id) return Boolean;
!       --  Check whether prefix includes a dereference at any level.
  
        --------------------------------
        -- Find_Component_In_Instance --
--- 4533,4547 ----
        --  indexed component rather than a function call.
  
        function Has_Dereference (Nod : Node_Id) return Boolean;
!       --  Check whether prefix includes a dereference, explicit or implicit,
!       --  at any recursive level.
! 
!       function Try_By_Protected_Procedure_Prefixed_View return Boolean;
!       --  Return True if N is an access attribute whose prefix is a prefixed
!       --  class-wide (synchronized or protected) interface view for which some
!       --  interpretation is a procedure with synchronization kind By_Protected
!       --  _Procedure, and collect all its interpretations (since it may be an
!       --  overloaded interface primitive); otherwise return False.
  
        --------------------------------
        -- Find_Component_In_Instance --
*************** package body Sem_Ch4 is
*** 4594,4607 ****
           if Nkind (Nod) = N_Explicit_Dereference then
              return True;
  
-          --  When expansion is disabled an explicit dereference may not have
-          --  been inserted, but if this is an access type the indirection makes
-          --  the call safe.
- 
           elsif Is_Access_Type (Etype (Nod)) then
              return True;
  
!          elsif Nkind_In (Nod, N_Indexed_Component, N_Selected_Component) then
              return Has_Dereference (Prefix (Nod));
  
           else
--- 4653,4662 ----
           if Nkind (Nod) = N_Explicit_Dereference then
              return True;
  
           elsif Is_Access_Type (Etype (Nod)) then
              return True;
  
!          elsif Nkind (Nod) in N_Indexed_Component | N_Selected_Component then
              return Has_Dereference (Prefix (Nod));
  
           else
*************** package body Sem_Ch4 is
*** 4609,4614 ****
--- 4664,4728 ----
           end if;
        end Has_Dereference;
  
+       ----------------------------------------------
+       -- Try_By_Protected_Procedure_Prefixed_View --
+       ----------------------------------------------
+ 
+       function Try_By_Protected_Procedure_Prefixed_View return Boolean is
+          Candidate : Node_Id := Empty;
+          Elmt      : Elmt_Id;
+          Prim      : Node_Id;
+ 
+       begin
+          if Nkind (Parent (N)) = N_Attribute_Reference
+            and then Attribute_Name (Parent (N)) in
+                       Name_Access
+                     | Name_Unchecked_Access
+                     | Name_Unrestricted_Access
+            and then Is_Class_Wide_Type (Prefix_Type)
+            and then (Is_Synchronized_Interface (Prefix_Type)
+                        or else Is_Protected_Interface (Prefix_Type))
+          then
+             --  If we have not found yet any interpretation then mark this
+             --  one as the first interpretation (cf. Add_One_Interp).
+ 
+             if No (Etype (Sel)) then
+                Set_Etype (Sel, Any_Type);
+             end if;
+ 
+             Elmt := First_Elmt (Primitive_Operations (Etype (Prefix_Type)));
+             while Present (Elmt) loop
+                Prim := Node (Elmt);
+ 
+                if Chars (Prim) = Chars (Sel)
+                  and then Is_By_Protected_Procedure (Prim)
+                then
+                   Candidate := New_Copy (Prim);
+ 
+                   --  Skip the controlling formal; required to check type
+                   --  conformance of the target access to protected type
+                   --  (see Conforming_Types).
+ 
+                   Set_First_Entity (Candidate,
+                     Next_Entity (First_Entity (Prim)));
+ 
+                   Add_One_Interp (Sel, Candidate, Etype (Prim));
+                   Set_Etype (N, Etype (Prim));
+                end if;
+ 
+                Next_Elmt (Elmt);
+             end loop;
+          end if;
+ 
+          --  Propagate overloaded attribute
+ 
+          if Present (Candidate) and then Is_Overloaded (Sel) then
+             Set_Is_Overloaded (N);
+          end if;
+ 
+          return Present (Candidate);
+       end Try_By_Protected_Procedure_Prefixed_View;
+ 
     --  Start of processing for Analyze_Selected_Component
  
     begin
*************** package body Sem_Ch4 is
*** 4650,4665 ****
  
           else
              Error_Msg_NW (Warn_On_Dereference, "?d?implicit dereference", N);
! 
!             if Is_Entity_Name (Name) then
!                Pent := Entity (Name);
!             elsif Nkind (Name) = N_Selected_Component
!               and then Is_Entity_Name (Selector_Name (Name))
!             then
!                Pent := Entity (Selector_Name (Name));
!             end if;
! 
!             Prefix_Type := Process_Implicit_Dereference_Prefix (Pent, Name);
           end if;
  
        --  If we have an explicit dereference of a remote access-to-class-wide
--- 4764,4770 ----
  
           else
              Error_Msg_NW (Warn_On_Dereference, "?d?implicit dereference", N);
!             Prefix_Type := Implicitly_Designated_Type (Prefix_Type);
           end if;
  
        --  If we have an explicit dereference of a remote access-to-class-wide
*************** package body Sem_Ch4 is
*** 4747,4757 ****
           Set_Etype (N, Etype (Comp));
           Check_Implicit_Dereference (N, Etype (Comp));
  
-          if Is_Access_Type (Etype (Name)) then
-             Insert_Explicit_Dereference (Name);
-             Error_Msg_NW (Warn_On_Dereference, "?d?implicit dereference", N);
-          end if;
- 
        elsif Is_Record_Type (Prefix_Type) then
  
           --  Find component with given name. In an instance, if the node is
--- 4852,4857 ----
*************** package body Sem_Ch4 is
*** 4833,4842 ****
                       or else
                        (Nkind (Parent_N) = N_Attribute_Reference
                          and then
!                           Nam_In (Attribute_Name (Parent_N), Name_First,
!                                                              Name_Last,
!                                                              Name_Length,
!                                                              Name_Range)))
                 then
                    Set_Etype (N, Etype (Comp));
  
--- 4933,4942 ----
                       or else
                        (Nkind (Parent_N) = N_Attribute_Reference
                          and then
!                           Attribute_Name (Parent_N) in Name_First
!                                                      | Name_Last
!                                                      | Name_Length
!                                                      | Name_Range))
                 then
                    Set_Etype (N, Etype (Comp));
  
*************** package body Sem_Ch4 is
*** 4918,4923 ****
--- 5018,5026 ----
                    return;
                 end if;
  
+             elsif Try_By_Protected_Procedure_Prefixed_View then
+                return;
+ 
              elsif Try_Object_Operation (N) then
                 return;
              end if;
*************** package body Sem_Ch4 is
*** 5014,5022 ****
                    --  a visible entity is found.
  
                    if Is_Tagged_Type (Prefix_Type)
!                     and then Nkind_In (Parent (N), N_Function_Call,
!                                                    N_Indexed_Component,
!                                                    N_Procedure_Call_Statement)
                      and then Has_Mode_Conformant_Spec (Comp)
                    then
                       Has_Candidate := True;
--- 5117,5125 ----
                    --  a visible entity is found.
  
                    if Is_Tagged_Type (Prefix_Type)
!                     and then Nkind (Parent (N)) in N_Function_Call
!                                                  | N_Indexed_Component
!                                                  | N_Procedure_Call_Statement
                      and then Has_Mode_Conformant_Spec (Comp)
                    then
                       Has_Candidate := True;
*************** package body Sem_Ch4 is
*** 5025,5031 ****
                 --  Note: a selected component may not denote a component of a
                 --  protected type (4.1.3(7)).
  
!                elsif Ekind_In (Comp, E_Discriminant, E_Entry_Family)
                   or else (In_Scope
                              and then not Is_Protected_Type (Prefix_Type)
                              and then Is_Entity_Name (Name))
--- 5128,5134 ----
                 --  Note: a selected component may not denote a component of a
                 --  protected type (4.1.3(7)).
  
!                elsif Ekind (Comp) in E_Discriminant | E_Entry_Family
                   or else (In_Scope
                              and then not Is_Protected_Type (Prefix_Type)
                              and then Is_Entity_Name (Name))
*************** package body Sem_Ch4 is
*** 5052,5066 ****
                 if Ekind (Comp) = E_Discriminant then
                    Set_Original_Discriminant (Sel, Comp);
                 end if;
- 
-                --  For access type case, introduce explicit dereference for
-                --  more uniform treatment of entry calls.
- 
-                if Is_Access_Type (Etype (Name)) then
-                   Insert_Explicit_Dereference (Name);
-                   Error_Msg_NW
-                     (Warn_On_Dereference, "?d?implicit dereference", N);
-                end if;
              end if;
  
              <<Next_Comp>>
--- 5155,5160 ----
*************** package body Sem_Ch4 is
*** 5112,5118 ****
           then
              if Is_Task_Type (Prefix_Type)
                and then Present (Entity (Sel))
!               and then Ekind_In (Entity (Sel), E_Entry, E_Entry_Family)
              then
                 null;
  
--- 5206,5212 ----
           then
              if Is_Task_Type (Prefix_Type)
                and then Present (Entity (Sel))
!               and then Is_Entry (Entity (Sel))
              then
                 null;
  
*************** package body Sem_Ch4 is
*** 5302,5325 ****
                    end loop;
  
                 --  Another special case: the type is an extension of a private
!                --  type T, is an actual in an instance, and we are in the body
!                --  of the instance, so the generic body had a full view of the
!                --  type declaration for T or of some ancestor that defines the
!                --  component in question.
  
                 elsif Is_Derived_Type (Type_To_Use)
!                  and then Used_As_Generic_Actual (Type_To_Use)
                   and then In_Instance_Body
                 then
                    Find_Component_In_Instance (Parent_Subtype (Type_To_Use));
- 
-                --  In ASIS mode the generic parent type may be absent. Examine
-                --  the parent type directly for a component that may have been
-                --  visible in a parent generic unit.
- 
-                elsif Is_Derived_Type (Prefix_Type) then
-                   Par := Etype (Prefix_Type);
-                   Find_Component_In_Instance (Par);
                 end if;
              end;
  
--- 5396,5416 ----
                    end loop;
  
                 --  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.
  
                 elsif Is_Derived_Type (Type_To_Use)
!                  and then (Used_As_Generic_Actual (Type_To_Use)
!                             or else Is_Immediately_Visible (Type_To_Use))
                   and then In_Instance_Body
                 then
                    Find_Component_In_Instance (Parent_Subtype (Type_To_Use));
                 end if;
              end;
  
*************** package body Sem_Ch4 is
*** 5364,5370 ****
                       Apply_Compile_Time_Constraint_Error
                         (N, "component not present in }??",
                          CE_Discriminant_Check_Failed,
!                         Ent => Prefix_Type, Rep => False);
  
                       Set_Raises_Constraint_Error (N);
                       return;
--- 5455,5461 ----
                       Apply_Compile_Time_Constraint_Error
                         (N, "component not present in }??",
                          CE_Discriminant_Check_Failed,
!                         Ent => Prefix_Type);
  
                       Set_Raises_Constraint_Error (N);
                       return;
*************** package body Sem_Ch4 is
*** 5517,5526 ****
     --  Start of processing for Analyze_Slice
  
     begin
-       if Comes_From_Source (N) then
-          Check_SPARK_05_Restriction ("slice is not allowed", N);
-       end if;
- 
        Analyze (P);
        Analyze (D);
  
--- 5608,5613 ----
*************** package body Sem_Ch4 is
*** 5532,5539 ****
           Set_Etype (N, Any_Type);
  
           if Is_Access_Type (Array_Type) then
-             Array_Type := Designated_Type (Array_Type);
              Error_Msg_NW (Warn_On_Dereference, "?d?implicit dereference", N);
           end if;
  
           if not Is_Array_Type (Array_Type) then
--- 5619,5626 ----
           Set_Etype (N, Any_Type);
  
           if Is_Access_Type (Array_Type) then
              Error_Msg_NW (Warn_On_Dereference, "?d?implicit dereference", N);
+             Array_Type := Implicitly_Designated_Type (Array_Type);
           end if;
  
           if not Is_Array_Type (Array_Type) then
*************** package body Sem_Ch4 is
*** 5613,5619 ****
           Error_Msg_N ("\use qualified expression instead", N);
  
        elsif Nkind (Expr) = N_Allocator then
!          Error_Msg_N ("argument of conversion cannot be an allocator", N);
           Error_Msg_N ("\use qualified expression instead", N);
  
        elsif Nkind (Expr) = N_String_Literal then
--- 5700,5706 ----
           Error_Msg_N ("\use qualified expression instead", N);
  
        elsif Nkind (Expr) = N_Allocator then
!          Error_Msg_N ("argument of conversion cannot be allocator", N);
           Error_Msg_N ("\use qualified expression instead", N);
  
        elsif Nkind (Expr) = N_String_Literal then
*************** package body Sem_Ch4 is
*** 5624,5640 ****
           if Ada_Version = Ada_83 then
              Resolve (Expr, Typ);
           else
!             Error_Msg_N ("argument of conversion cannot be character literal",
!               N);
              Error_Msg_N ("\use qualified expression instead", N);
           end if;
  
        elsif Nkind (Expr) = N_Attribute_Reference
!         and then Nam_In (Attribute_Name (Expr), Name_Access,
!                                                 Name_Unchecked_Access,
!                                                 Name_Unrestricted_Access)
        then
!          Error_Msg_N ("argument of conversion cannot be access", N);
           Error_Msg_N ("\use qualified expression instead", N);
        end if;
  
--- 5711,5728 ----
           if Ada_Version = Ada_83 then
              Resolve (Expr, Typ);
           else
!             Error_Msg_N
!               ("argument of conversion cannot be character literal", N);
              Error_Msg_N ("\use qualified expression instead", N);
           end if;
  
        elsif Nkind (Expr) = N_Attribute_Reference
!         and then Attribute_Name (Expr) in Name_Access
!                                         | Name_Unchecked_Access
!                                         | Name_Unrestricted_Access
        then
!          Error_Msg_N
!            ("argument of conversion cannot be access attribute", N);
           Error_Msg_N ("\use qualified expression instead", N);
        end if;
  
*************** package body Sem_Ch4 is
*** 5721,5774 ****
  
     procedure Analyze_User_Defined_Binary_Op
       (N     : Node_Id;
!       Op_Id : Entity_Id)
!    is
     begin
!       --  Only do analysis if the operator Comes_From_Source, since otherwise
!       --  the operator was generated by the expander, and all such operators
!       --  always refer to the operators in package Standard.
! 
!       if Comes_From_Source (N) then
!          declare
!             F1 : constant Entity_Id := First_Formal (Op_Id);
!             F2 : constant Entity_Id := Next_Formal (F1);
  
!          begin
!             --  Verify that Op_Id is a visible binary function. Note that since
!             --  we know Op_Id is overloaded, potentially use visible means use
!             --  visible for sure (RM 9.4(11)).
  
!             if Ekind (Op_Id) = E_Function
!               and then Present (F2)
!               and then (Is_Immediately_Visible (Op_Id)
!                          or else Is_Potentially_Use_Visible (Op_Id))
!               and then Has_Compatible_Type (Left_Opnd (N), Etype (F1))
!               and then Has_Compatible_Type (Right_Opnd (N), Etype (F2))
!             then
!                Add_One_Interp (N, Op_Id, Etype (Op_Id));
  
!                --  If the left operand is overloaded, indicate that the current
!                --  type is a viable candidate. This is redundant in most cases,
!                --  but for equality and comparison operators where the context
!                --  does not impose a type on the operands, setting the proper
!                --  type is necessary to avoid subsequent ambiguities during
!                --  resolution, when both user-defined and predefined operators
!                --  may be candidates.
  
!                if Is_Overloaded (Left_Opnd (N)) then
!                   Set_Etype (Left_Opnd (N), Etype (F1));
!                end if;
  
!                if Debug_Flag_E then
!                   Write_Str ("user defined operator ");
!                   Write_Name (Chars (Op_Id));
!                   Write_Str (" on node ");
!                   Write_Int (Int (N));
!                   Write_Eol;
!                end if;
              end if;
!          end;
!       end if;
     end Analyze_User_Defined_Binary_Op;
  
     -----------------------------------
--- 5809,5855 ----
  
     procedure Analyze_User_Defined_Binary_Op
       (N     : Node_Id;
!       Op_Id : Entity_Id) is
     begin
!       declare
!          F1 : constant Entity_Id := First_Formal (Op_Id);
!          F2 : constant Entity_Id := Next_Formal (F1);
  
!       begin
!          --  Verify that Op_Id is a visible binary function. Note that since
!          --  we know Op_Id is overloaded, potentially use visible means use
!          --  visible for sure (RM 9.4(11)).
  
!          if Ekind (Op_Id) = E_Function
!            and then Present (F2)
!            and then (Is_Immediately_Visible (Op_Id)
!                       or else Is_Potentially_Use_Visible (Op_Id))
!            and then Has_Compatible_Type (Left_Opnd (N), Etype (F1))
!            and then Has_Compatible_Type (Right_Opnd (N), Etype (F2))
!          then
!             Add_One_Interp (N, Op_Id, Etype (Op_Id));
  
!             --  If the left operand is overloaded, indicate that the current
!             --  type is a viable candidate. This is redundant in most cases,
!             --  but for equality and comparison operators where the context
!             --  does not impose a type on the operands, setting the proper
!             --  type is necessary to avoid subsequent ambiguities during
!             --  resolution, when both user-defined and predefined operators
!             --  may be candidates.
  
!             if Is_Overloaded (Left_Opnd (N)) then
!                Set_Etype (Left_Opnd (N), Etype (F1));
!             end if;
  
!             if Debug_Flag_E then
!                Write_Str ("user defined operator ");
!                Write_Name (Chars (Op_Id));
!                Write_Str (" on node ");
!                Write_Int (Int (N));
!                Write_Eol;
              end if;
!          end if;
!       end;
     end Analyze_User_Defined_Binary_Op;
  
     -----------------------------------
*************** package body Sem_Ch4 is
*** 5901,5907 ****
     --  Start of processing for Check_Arithmetic_Pair
  
     begin
!       if Nam_In (Op_Name, Name_Op_Add, Name_Op_Subtract) then
           if Is_Numeric_Type (T1)
             and then Is_Numeric_Type (T2)
             and then (Covers (T1 => T1, T2 => T2)
--- 5982,5988 ----
     --  Start of processing for Check_Arithmetic_Pair
  
     begin
!       if Op_Name in Name_Op_Add | Name_Op_Subtract then
           if Is_Numeric_Type (T1)
             and then Is_Numeric_Type (T2)
             and then (Covers (T1 => T1, T2 => T2)
*************** package body Sem_Ch4 is
*** 5911,5939 ****
              Add_One_Interp (N, Op_Id, Specific_Type (T1, T2));
           end if;
  
!       elsif Nam_In (Op_Name, Name_Op_Multiply, Name_Op_Divide) then
           if Is_Fixed_Point_Type (T1)
             and then (Is_Fixed_Point_Type (T2) or else T2 = Universal_Real)
           then
!             --  If Treat_Fixed_As_Integer is set then the Etype is already set
!             --  and no further processing is required (this is the case of an
!             --  operator constructed by Exp_Fixd for a fixed point operation)
!             --  Otherwise add one interpretation with universal fixed result
!             --  If the operator is given in functional notation, it comes
!             --  from source and Fixed_As_Integer cannot apply.
  
!             if (Nkind (N) not in N_Op
!                  or else not Treat_Fixed_As_Integer (N))
!               and then
!                 (not Has_Fixed_Op (T1, Op_Id)
!                   or else Nkind (Parent (N)) = N_Type_Conversion)
              then
                 Add_One_Interp (N, Op_Id, Universal_Fixed);
              end if;
  
           elsif Is_Fixed_Point_Type (T2)
-            and then (Nkind (N) not in N_Op
-                       or else not Treat_Fixed_As_Integer (N))
             and then T1 = Universal_Real
             and then
               (not Has_Fixed_Op (T1, Op_Id)
--- 5992,6010 ----
              Add_One_Interp (N, Op_Id, Specific_Type (T1, T2));
           end if;
  
!       elsif Op_Name in Name_Op_Multiply | Name_Op_Divide then
           if Is_Fixed_Point_Type (T1)
             and then (Is_Fixed_Point_Type (T2) or else T2 = Universal_Real)
           then
!             --  Add one interpretation with universal fixed result
  
!             if not Has_Fixed_Op (T1, Op_Id)
!               or else Nkind (Parent (N)) = N_Type_Conversion
              then
                 Add_One_Interp (N, Op_Id, Universal_Fixed);
              end if;
  
           elsif Is_Fixed_Point_Type (T2)
             and then T1 = Universal_Real
             and then
               (not Has_Fixed_Op (T1, Op_Id)
*************** package body Sem_Ch4 is
*** 5985,5994 ****
  
        elsif Op_Name = Name_Op_Mod or else Op_Name = Name_Op_Rem then
  
-          --  Note: The fixed-point operands case with Treat_Fixed_As_Integer
-          --  set does not require any special processing, since the Etype is
-          --  already set (case of operation constructed by Exp_Fixed).
- 
           if Is_Integer_Type (T1)
             and then (Covers (T1 => T1, T2 => T2)
                         or else
--- 6056,6061 ----
*************** package body Sem_Ch4 is
*** 6051,6057 ****
           return;
        end if;
  
!       Comp  := First_Entity (Prefix);
        while Nr_Of_Suggestions <= Max_Suggestions and then Present (Comp) loop
           if Is_Visible_Component (Comp, Sel) then
              if Is_Bad_Spelling_Of (Chars (Comp), Chars (Sel)) then
--- 6118,6124 ----
           return;
        end if;
  
!       Comp := First_Entity (Prefix);
        while Nr_Of_Suggestions <= Max_Suggestions and then Present (Comp) loop
           if Is_Visible_Component (Comp, Sel) then
              if Is_Bad_Spelling_Of (Chars (Comp), Chars (Sel)) then
*************** package body Sem_Ch4 is
*** 6065,6071 ****
              end if;
           end if;
  
!          Comp := Next_Entity (Comp);
        end loop;
  
        --  Report at most two suggestions
--- 6132,6138 ----
              end if;
           end if;
  
!          Next_Entity (Comp);
        end loop;
  
        --  Report at most two suggestions
*************** package body Sem_Ch4 is
*** 6223,6229 ****
  
           else
              while Present (It.Nam) loop
!                if Ekind_In (It.Nam, E_Function, E_Operator) then
                    return;
                 else
                    Get_Next_Interp (X, It);
--- 6290,6296 ----
  
           else
              while Present (It.Nam) loop
!                if Ekind (It.Nam) in E_Function | E_Operator then
                    return;
                 else
                    Get_Next_Interp (X, It);
*************** package body Sem_Ch4 is
*** 6598,6609 ****
        Op_Id : Entity_Id;
        N     : Node_Id)
     is
!       Index : Interp_Index;
!       It    : Interp;
!       Found : Boolean := False;
!       I_F   : Interp_Index;
!       T_F   : Entity_Id;
!       Scop  : Entity_Id := Empty;
  
        procedure Try_One_Interp (T1 : Entity_Id);
        --  The context of the equality operator plays no role in resolving the
--- 6665,6708 ----
        Op_Id : Entity_Id;
        N     : Node_Id)
     is
!       Index               : Interp_Index := 0;
!       It                  : Interp;
!       Found               : Boolean := False;
!       Is_Universal_Access : Boolean := False;
!       I_F                 : Interp_Index;
!       T_F                 : Entity_Id;
!       Scop                : Entity_Id := Empty;
! 
!       procedure Check_Access_Attribute (N : Node_Id);
!       --  For any object, '[Unchecked_]Access of such object can never be
!       --  passed as a parameter of a call to the Universal_Access equality
!       --  operator.
!       --  This is because the expected type for Obj'Access in a call to
!       --  the Standard."=" operator whose formals are of type
!       --  Universal_Access is Universal_Integer, and Universal_Access
!       --  doesn't have a designated type. For more detail see RM 6.4.1(3)
!       --  and 3.10.2.
!       --  This procedure assumes that the context is a universal_access.
! 
!       function Check_Access_Object_Types
!         (N : Node_Id; Typ : Entity_Id) return Boolean;
!       --  Check for RM 4.5.2 (9.6/2): When both are of access-to-object types,
!       --  the designated types shall be the same or one shall cover the other,
!       --  and if the designated types are elementary or array types, then the
!       --  designated subtypes shall statically match.
!       --  If N is not overloaded, then its unique type must be compatible as
!       --  per above. Otherwise iterate through the interpretations of N looking
!       --  for a compatible one.
! 
!       procedure Check_Compatible_Profiles (N : Node_Id; Typ : Entity_Id);
!       --  Check for RM 4.5.2(9.7/2): When both are of access-to-subprogram
!       --  types, the designated profiles shall be subtype conformant.
! 
!       function References_Anonymous_Access_Type
!         (N : Node_Id; Typ : Entity_Id) return Boolean;
!       --  Return True either if N is not overloaded and its Etype is an
!       --  anonymous access type or if one of the interpretations of N refers
!       --  to an anonymous access type compatible with Typ.
  
        procedure Try_One_Interp (T1 : Entity_Id);
        --  The context of the equality operator plays no role in resolving the
*************** package body Sem_Ch4 is
*** 6612,6623 ****
        --  and an error can be emitted now, after trying to disambiguate, i.e.
        --  applying preference rules.
  
        --------------------
        -- Try_One_Interp --
        --------------------
  
        procedure Try_One_Interp (T1 : Entity_Id) is
!          Bas : Entity_Id;
  
        begin
           --  Perform a sanity check in case of previous errors
--- 6711,6908 ----
        --  and an error can be emitted now, after trying to disambiguate, i.e.
        --  applying preference rules.
  
+       ----------------------------
+       -- Check_Access_Attribute --
+       ----------------------------
+ 
+       procedure Check_Access_Attribute (N : Node_Id) is
+       begin
+          if Nkind (N) = N_Attribute_Reference
+            and then Attribute_Name (N) in Name_Access | Name_Unchecked_Access
+          then
+             Error_Msg_N
+               ("access attribute cannot be used as actual for "
+                & "universal_access equality", N);
+          end if;
+       end Check_Access_Attribute;
+ 
+       -------------------------------
+       -- Check_Access_Object_Types --
+       -------------------------------
+ 
+       function Check_Access_Object_Types
+         (N : Node_Id; Typ : Entity_Id) return Boolean
+       is
+          function Check_Designated_Types (DT1, DT2 : Entity_Id) return Boolean;
+          --  Check RM 4.5.2 (9.6/2) on the given designated types.
+ 
+          ----------------------------
+          -- Check_Designated_Types --
+          ----------------------------
+ 
+          function Check_Designated_Types
+            (DT1, DT2 : Entity_Id) return Boolean is
+          begin
+             --  If the designated types are elementary or array types, then
+             --  the designated subtypes shall statically match.
+ 
+             if Is_Elementary_Type (DT1) or else Is_Array_Type (DT1) then
+                if Base_Type (DT1) /= Base_Type (DT2) then
+                   return False;
+                else
+                   return Subtypes_Statically_Match (DT1, DT2);
+                end if;
+ 
+             --  Otherwise, the designated types shall be the same or one
+             --  shall cover the other.
+ 
+             else
+                return DT1 = DT2
+                  or else Covers (DT1, DT2)
+                  or else Covers (DT2, DT1);
+             end if;
+          end Check_Designated_Types;
+ 
+       --  Start of processing for Check_Access_Object_Types
+ 
+       begin
+          --  Return immediately with no checks if Typ is not an
+          --  access-to-object type.
+ 
+          if not Is_Access_Object_Type (Typ) then
+             return True;
+ 
+          --  Any_Type is compatible with all types in this context, and is used
+          --  in particular for the designated type of a 'null' value.
+ 
+          elsif Directly_Designated_Type (Typ) = Any_Type
+            or else Nkind (N) = N_Null
+          then
+             return True;
+          end if;
+ 
+          if not Is_Overloaded (N) then
+             if Is_Access_Object_Type (Etype (N)) then
+                return Check_Designated_Types
+                  (Designated_Type (Typ), Designated_Type (Etype (N)));
+             end if;
+          else
+             declare
+                Typ_Is_Anonymous : constant Boolean :=
+                  Is_Anonymous_Access_Type (Typ);
+ 
+                I  : Interp_Index;
+                It : Interp;
+ 
+             begin
+                Get_First_Interp (N, I, It);
+                while Present (It.Typ) loop
+ 
+                   --  The check on designated types if only relevant when one
+                   --  of the types is anonymous, ignore other (non relevant)
+                   --  types.
+ 
+                   if (Typ_Is_Anonymous
+                        or else Is_Anonymous_Access_Type (It.Typ))
+                     and then Is_Access_Object_Type (It.Typ)
+                   then
+                      if Check_Designated_Types
+                           (Designated_Type (Typ), Designated_Type (It.Typ))
+                      then
+                         return True;
+                      end if;
+                   end if;
+ 
+                   Get_Next_Interp (I, It);
+                end loop;
+             end;
+          end if;
+ 
+          return False;
+       end Check_Access_Object_Types;
+ 
+       -------------------------------
+       -- Check_Compatible_Profiles --
+       -------------------------------
+ 
+       procedure Check_Compatible_Profiles (N : Node_Id; Typ : Entity_Id) is
+          I     : Interp_Index;
+          It    : Interp;
+          I1    : Interp_Index := 0;
+          Found : Boolean      := False;
+          Tmp   : Entity_Id    := Empty;
+ 
+       begin
+          if not Is_Overloaded (N) then
+             Check_Subtype_Conformant
+               (Designated_Type (Etype (N)), Designated_Type (Typ), N);
+          else
+             Get_First_Interp (N, I, It);
+             while Present (It.Typ) loop
+                if Is_Access_Subprogram_Type (It.Typ) then
+                   if not Found then
+                      Found := True;
+                      Tmp   := It.Typ;
+                      I1    := I;
+ 
+                   else
+                      It := Disambiguate (N, I1, I, Any_Type);
+ 
+                      if It /= No_Interp then
+                         Tmp := It.Typ;
+                         I1  := I;
+                      else
+                         Found := False;
+                         exit;
+                      end if;
+                   end if;
+                end if;
+ 
+                Get_Next_Interp (I, It);
+             end loop;
+ 
+             if Found then
+                Check_Subtype_Conformant
+                  (Designated_Type (Tmp), Designated_Type (Typ), N);
+             end if;
+          end if;
+       end Check_Compatible_Profiles;
+ 
+       --------------------------------------
+       -- References_Anonymous_Access_Type --
+       --------------------------------------
+ 
+       function References_Anonymous_Access_Type
+         (N : Node_Id; Typ : Entity_Id) return Boolean
+       is
+          I  : Interp_Index;
+          It : Interp;
+       begin
+          if not Is_Overloaded (N) then
+             return Is_Anonymous_Access_Type (Etype (N));
+          else
+             Get_First_Interp (N, I, It);
+             while Present (It.Typ) loop
+                if Is_Anonymous_Access_Type (It.Typ)
+                  and then (Covers (It.Typ, Typ) or else Covers (Typ, It.Typ))
+                then
+                   return True;
+                end if;
+ 
+                Get_Next_Interp (I, It);
+             end loop;
+ 
+             return False;
+          end if;
+       end References_Anonymous_Access_Type;
+ 
        --------------------
        -- Try_One_Interp --
        --------------------
  
        procedure Try_One_Interp (T1 : Entity_Id) is
!          Universal_Access : Boolean;
!          Bas              : Entity_Id;
  
        begin
           --  Perform a sanity check in case of previous errors
*************** package body Sem_Ch4 is
*** 6637,6642 ****
--- 6922,6930 ----
           --  In Ada 2005, the equality operator for anonymous access types
           --  is declared in Standard, and preference rules apply to it.
  
+          Universal_Access := Is_Anonymous_Access_Type (T1)
+            or else References_Anonymous_Access_Type (R, T1);
+ 
           if Present (Scop) then
  
              --  Note that we avoid returning if we are currently within a
*************** package body Sem_Ch4 is
*** 6657,6704 ****
              then
                 null;
  
!             elsif Ekind (T1) = E_Anonymous_Access_Type
!               and then Scop = Standard_Standard
!             then
!                null;
  
-             else
                 --  The scope does not contain an operator for the type
  
                 return;
              end if;
  
           --  If we have infix notation, the operator must be usable. Within
!          --  an instance, if the type is already established we know it is
!          --  correct. If an operand is universal it is compatible with any
!          --  numeric type.
  
           elsif In_Open_Scopes (Scope (Bas))
             or else Is_Potentially_Use_Visible (Bas)
             or else In_Use (Bas)
             or else (In_Use (Scope (Bas)) and then not Is_Hidden (Bas))
- 
-             --  In an instance, the type may have been immediately visible.
-             --  Either the types are compatible, or one operand is universal
-             --  (numeric or null).
- 
             or else
               ((In_Instance or else In_Inlined_Body)
!                 and then
!                   (First_Subtype (T1) = First_Subtype (Etype (R))
!                     or else Nkind (R) = N_Null
!                     or else
!                       (Is_Numeric_Type (T1)
!                         and then Is_Universal_Numeric_Type (Etype (R)))))
! 
!            --  In Ada 2005, the equality on anonymous access types is declared
!            --  in Standard, and is always visible.
! 
!            or else Ekind (T1) = E_Anonymous_Access_Type
           then
              null;
  
!          else
              --  Save candidate type for subsequent error message, if any
  
              if not Is_Limited_Type (T1) then
--- 6945,6972 ----
              then
                 null;
  
!             elsif Scop /= Standard_Standard or else not Universal_Access then
  
                 --  The scope does not contain an operator for the type
  
                 return;
              end if;
  
           --  If we have infix notation, the operator must be usable. Within
!          --  an instance, the type may have been immediately visible if the
!          --  types are compatible.
  
           elsif In_Open_Scopes (Scope (Bas))
             or else Is_Potentially_Use_Visible (Bas)
             or else In_Use (Bas)
             or else (In_Use (Scope (Bas)) and then not Is_Hidden (Bas))
             or else
               ((In_Instance or else In_Inlined_Body)
!                 and then Has_Compatible_Type (R, T1))
           then
              null;
  
!          elsif not Universal_Access then
              --  Save candidate type for subsequent error message, if any
  
              if not Is_Limited_Type (T1) then
*************** package body Sem_Ch4 is
*** 6711,6719 ****
           --  Ada 2005 (AI-230): Keep restriction imposed by Ada 83 and 95:
           --  Do not allow anonymous access types in equality operators.
  
!          if Ada_Version < Ada_2005
!            and then Ekind (T1) = E_Anonymous_Access_Type
!          then
              return;
           end if;
  
--- 6979,6985 ----
           --  Ada 2005 (AI-230): Keep restriction imposed by Ada 83 and 95:
           --  Do not allow anonymous access types in equality operators.
  
!          if Ada_Version < Ada_2005 and then Universal_Access then
              return;
           end if;
  
*************** package body Sem_Ch4 is
*** 6725,6739 ****
           --  in Standard to be chosen, and the "/=" will be rewritten as a
           --  negation of "=" (see the end of Analyze_Equality_Op). This ensures
           --  that rewriting happens during analysis rather than being
!          --  delayed until expansion (this is needed for ASIS, which only sees
!          --  the unexpanded tree). Note that if the node is N_Op_Ne, but Op_Id
           --  is Name_Op_Eq then we still proceed with the interpretation,
           --  because that indicates the potential rewriting case where the
           --  interpretation to consider is actually "=" and the node may be
           --  about to be rewritten by Analyze_Equality_Op.
  
           if T1 /= Standard_Void_Type
!            and then Has_Compatible_Type (R, T1)
  
             and then
               ((not Is_Limited_Type (T1)
--- 6991,7006 ----
           --  in Standard to be chosen, and the "/=" will be rewritten as a
           --  negation of "=" (see the end of Analyze_Equality_Op). This ensures
           --  that rewriting happens during analysis rather than being
!          --  delayed until expansion (is this still needed now that ASIS mode
!          --  is gone???). Note that if the node is N_Op_Ne, but Op_Id
           --  is Name_Op_Eq then we still proceed with the interpretation,
           --  because that indicates the potential rewriting case where the
           --  interpretation to consider is actually "=" and the node may be
           --  about to be rewritten by Analyze_Equality_Op.
+          --  Finally, also check for RM 4.5.2 (9.6/2).
  
           if T1 /= Standard_Void_Type
!            and then (Universal_Access or else Has_Compatible_Type (R, T1))
  
             and then
               ((not Is_Limited_Type (T1)
*************** package body Sem_Ch4 is
*** 6748,6753 ****
--- 7015,7023 ----
               (Nkind (N) /= N_Op_Ne
                 or else not Is_Tagged_Type (T1)
                 or else Chars (Op_Id) = Name_Op_Eq)
+ 
+            and then (not Universal_Access
+                       or else Check_Access_Object_Types (R, T1))
           then
              if Found
                and then Base_Type (T1) /= Base_Type (T_F)
*************** package body Sem_Ch4 is
*** 6761,6772 ****
--- 7031,7044 ----
  
                 else
                    T_F := It.Typ;
+                   Is_Universal_Access := Universal_Access;
                 end if;
  
              else
                 Found := True;
                 T_F   := T1;
                 I_F   := Index;
+                Is_Universal_Access := Universal_Access;
              end if;
  
              if not Analyzed (L) then
*************** package body Sem_Ch4 is
*** 6780,6790 ****
              if Etype (N) = Any_Type then
                 Found := False;
              end if;
- 
-          elsif Scop = Standard_Standard
-            and then Ekind (T1) = E_Anonymous_Access_Type
-          then
-             Found := True;
           end if;
        end Try_One_Interp;
  
--- 7052,7057 ----
*************** package body Sem_Ch4 is
*** 6819,6825 ****
  
        if not Is_Overloaded (L) then
           Try_One_Interp (Etype (L));
- 
        else
           Get_First_Interp (L, Index, It);
           while Present (It.Typ) loop
--- 7086,7091 ----
*************** package body Sem_Ch4 is
*** 6827,6832 ****
--- 7093,7110 ----
              Get_Next_Interp (Index, It);
           end loop;
        end if;
+ 
+       if Is_Universal_Access then
+          if Is_Access_Subprogram_Type (Etype (L))
+            and then Nkind (L) /= N_Null
+            and then Nkind (R) /= N_Null
+          then
+             Check_Compatible_Profiles (R, Etype (L));
+          end if;
+ 
+          Check_Access_Attribute (R);
+          Check_Access_Attribute (L);
+       end if;
     end Find_Equality_Types;
  
     -------------------------
*************** package body Sem_Ch4 is
*** 7182,7188 ****
              --  pretty much know that the other operand should be Boolean, so
              --  resolve it that way (generating an error).
  
!             elsif Nkind_In (N, N_Op_And, N_Op_Or, N_Op_Xor) then
                 if Etype (L) = Standard_Boolean then
                    Resolve (R, Standard_Boolean);
                    return;
--- 7460,7466 ----
              --  pretty much know that the other operand should be Boolean, so
              --  resolve it that way (generating an error).
  
!             elsif Nkind (N) in N_Op_And | N_Op_Or | N_Op_Xor then
                 if Etype (L) = Standard_Boolean then
                    Resolve (R, Standard_Boolean);
                    return;
*************** package body Sem_Ch4 is
*** 7196,7212 ****
              --  is not the same numeric type. If it is a non-numeric type,
              --  then probably it is intended to match the other operand.
  
!             elsif Nkind_In (N, N_Op_Add,
!                                N_Op_Divide,
!                                N_Op_Ge,
!                                N_Op_Gt,
!                                N_Op_Le)
!               or else
!                   Nkind_In (N, N_Op_Lt,
!                                N_Op_Mod,
!                                N_Op_Multiply,
!                                N_Op_Rem,
!                                N_Op_Subtract)
              then
                 --  If Allow_Integer_Address is active, check whether the
                 --  operation becomes legal after converting an operand.
--- 7474,7489 ----
              --  is not the same numeric type. If it is a non-numeric type,
              --  then probably it is intended to match the other operand.
  
!             elsif Nkind (N) in N_Op_Add
!                              | N_Op_Divide
!                              | N_Op_Ge
!                              | N_Op_Gt
!                              | N_Op_Le
!                              | N_Op_Lt
!                              | N_Op_Mod
!                              | N_Op_Multiply
!                              | N_Op_Rem
!                              | N_Op_Subtract
              then
                 --  If Allow_Integer_Address is active, check whether the
                 --  operation becomes legal after converting an operand.
*************** package body Sem_Ch4 is
*** 7215,7224 ****
                   and then not Is_Numeric_Type (Etype (R))
                 then
                    if Address_Integer_Convert_OK (Etype (R), Etype (L)) then
                       Rewrite (R,
!                        Unchecked_Convert_To (Etype (L), Relocate_Node (R)));
  
!                      if Nkind_In (N, N_Op_Ge, N_Op_Gt, N_Op_Le, N_Op_Lt) then
                          Analyze_Comparison_Op (N);
                       else
                          Analyze_Arithmetic_Op (N);
--- 7492,7505 ----
                   and then not Is_Numeric_Type (Etype (R))
                 then
                    if Address_Integer_Convert_OK (Etype (R), Etype (L)) then
+                      Rewrite (L,
+                        Unchecked_Convert_To (
+                          Standard_Address, Relocate_Node (L)));
                       Rewrite (R,
!                        Unchecked_Convert_To (
!                          Standard_Address, Relocate_Node (R)));
  
!                      if Nkind (N) in N_Op_Ge | N_Op_Gt | N_Op_Le | N_Op_Lt then
                          Analyze_Comparison_Op (N);
                       else
                          Analyze_Arithmetic_Op (N);
*************** package body Sem_Ch4 is
*** 7234,7242 ****
                 then
                    if Address_Integer_Convert_OK (Etype (L), Etype (R)) then
                       Rewrite (L,
!                        Unchecked_Convert_To (Etype (R), Relocate_Node (L)));
  
!                      if Nkind_In (N, N_Op_Ge, N_Op_Gt, N_Op_Le, N_Op_Lt) then
                          Analyze_Comparison_Op (N);
                       else
                          Analyze_Arithmetic_Op (N);
--- 7515,7527 ----
                 then
                    if Address_Integer_Convert_OK (Etype (L), Etype (R)) then
                       Rewrite (L,
!                        Unchecked_Convert_To (
!                          Standard_Address, Relocate_Node (L)));
!                      Rewrite (R,
!                        Unchecked_Convert_To (
!                          Standard_Address, Relocate_Node (R)));
  
!                      if Nkind (N) in N_Op_Ge | N_Op_Gt | N_Op_Le | N_Op_Lt then
                          Analyze_Comparison_Op (N);
                       else
                          Analyze_Arithmetic_Op (N);
*************** package body Sem_Ch4 is
*** 7261,7272 ****
                    begin
                       Rewrite (L,
                         Unchecked_Convert_To (
!                          Standard_Integer, Relocate_Node (L)));
                       Rewrite (R,
                         Unchecked_Convert_To (
!                          Standard_Integer, Relocate_Node (R)));
  
!                      if Nkind_In (N, N_Op_Ge, N_Op_Gt, N_Op_Le, N_Op_Lt) then
                          Analyze_Comparison_Op (N);
                       else
                          Analyze_Arithmetic_Op (N);
--- 7546,7557 ----
                    begin
                       Rewrite (L,
                         Unchecked_Convert_To (
!                          Standard_Address, Relocate_Node (L)));
                       Rewrite (R,
                         Unchecked_Convert_To (
!                          Standard_Address, Relocate_Node (R)));
  
!                      if Nkind (N) in N_Op_Ge | N_Op_Gt | N_Op_Le | N_Op_Lt then
                          Analyze_Comparison_Op (N);
                       else
                          Analyze_Arithmetic_Op (N);
*************** package body Sem_Ch4 is
*** 7290,7296 ****
                 elsif Null_To_Null_Address_Convert_OK (N) then
                    Replace_Null_By_Null_Address (N);
  
!                   if Nkind_In (N, N_Op_Ge, N_Op_Gt, N_Op_Le, N_Op_Lt) then
                       Analyze_Comparison_Op (N);
                    else
                       Analyze_Arithmetic_Op (N);
--- 7575,7581 ----
                 elsif Null_To_Null_Address_Convert_OK (N) then
                    Replace_Null_By_Null_Address (N);
  
!                   if Nkind (N) in N_Op_Ge | N_Op_Gt | N_Op_Le | N_Op_Lt then
                       Analyze_Comparison_Op (N);
                    else
                       Analyze_Arithmetic_Op (N);
*************** package body Sem_Ch4 is
*** 7302,7308 ****
              --  Comparisons on A'Access are common enough to deserve a
              --  special message.
  
!             elsif Nkind_In (N, N_Op_Eq, N_Op_Ne)
                 and then Ekind (Etype (L)) = E_Access_Attribute_Type
                 and then Ekind (Etype (R)) = E_Access_Attribute_Type
              then
--- 7587,7593 ----
              --  Comparisons on A'Access are common enough to deserve a
              --  special message.
  
!             elsif Nkind (N) in N_Op_Eq | N_Op_Ne
                 and then Ekind (Etype (L)) = E_Access_Attribute_Type
                 and then Ekind (Etype (R)) = E_Access_Attribute_Type
              then
*************** package body Sem_Ch4 is
*** 7360,7369 ****
  
                 return;
  
!             elsif Nkind_In (N, N_Op_Eq, N_Op_Ne) then
                 if Address_Integer_Convert_OK (Etype (R), Etype (L)) then
                    Rewrite (R,
!                     Unchecked_Convert_To (Etype (L), Relocate_Node (R)));
                    Analyze_Equality_Op (N);
                    return;
  
--- 7645,7658 ----
  
                 return;
  
!             elsif Nkind (N) in N_Op_Eq | N_Op_Ne then
                 if Address_Integer_Convert_OK (Etype (R), Etype (L)) then
+                   Rewrite (L,
+                     Unchecked_Convert_To (
+                       Standard_Address, Relocate_Node (L)));
                    Rewrite (R,
!                     Unchecked_Convert_To (
!                       Standard_Address, Relocate_Node (R)));
                    Analyze_Equality_Op (N);
                    return;
  
*************** package body Sem_Ch4 is
*** 7447,7453 ****
                             --  indicate that the integer operand should be of
                             --  type Integer.
  
!                            if Nkind_In (N, N_Op_Multiply, N_Op_Divide)
                               and then Is_Fixed_Point_Type (Etype (L))
                               and then Is_Integer_Type (Etype (R))
                             then
--- 7736,7742 ----
                             --  indicate that the integer operand should be of
                             --  type Integer.
  
!                            if Nkind (N) in N_Op_Multiply | N_Op_Divide
                               and then Is_Fixed_Point_Type (Etype (L))
                               and then Is_Integer_Type (Etype (R))
                             then
*************** package body Sem_Ch4 is
*** 7481,7528 ****
        end if;
     end Operator_Check;
  
-    -----------------------------------------
-    -- Process_Implicit_Dereference_Prefix --
-    -----------------------------------------
- 
-    function Process_Implicit_Dereference_Prefix
-      (E : Entity_Id;
-       P : Entity_Id) return Entity_Id
-    is
-       Ref : Node_Id;
-       Typ : constant Entity_Id := Designated_Type (Etype (P));
- 
-    begin
-       if Present (E)
-         and then (Operating_Mode = Check_Semantics or else not Expander_Active)
-       then
-          --  We create a dummy reference to E to ensure that the reference is
-          --  not considered as part of an assignment (an implicit dereference
-          --  can never assign to its prefix). The Comes_From_Source attribute
-          --  needs to be propagated for accurate warnings.
- 
-          Ref := New_Occurrence_Of (E, Sloc (P));
-          Set_Comes_From_Source (Ref, Comes_From_Source (P));
-          Generate_Reference (E, Ref);
-       end if;
- 
-       --  An implicit dereference is a legal occurrence of an incomplete type
-       --  imported through a limited_with clause, if the full view is visible.
- 
-       if From_Limited_With (Typ)
-         and then not From_Limited_With (Scope (Typ))
-         and then
-           (Is_Immediately_Visible (Scope (Typ))
-             or else
-               (Is_Child_Unit (Scope (Typ))
-                 and then Is_Visible_Lib_Unit (Scope (Typ))))
-       then
-          return Available_View (Typ);
-       else
-          return Typ;
-       end if;
-    end Process_Implicit_Dereference_Prefix;
- 
     --------------------------------
     -- Remove_Abstract_Operations --
     --------------------------------
--- 7770,7775 ----
*************** package body Sem_Ch4 is
*** 7563,7569 ****
                 Formal := First_Entity (It.Nam);
  
                 if Op = Second_Op then
!                   Formal := Next_Entity (Formal);
                 end if;
  
                 if Is_Descendant_Of_Address (Etype (Formal)) then
--- 7810,7816 ----
                 Formal := First_Entity (It.Nam);
  
                 if Op = Second_Op then
!                   Next_Entity (Formal);
                 end if;
  
                 if Is_Descendant_Of_Address (Etype (Formal)) then
*************** package body Sem_Ch4 is
*** 7791,7797 ****
        Prefix : Node_Id;
        Exprs  : List_Id) return Boolean
     is
!       Pref_Typ : constant Entity_Id := Etype (Prefix);
  
        function Constant_Indexing_OK return Boolean;
        --  Constant_Indexing is legal if there is no Variable_Indexing defined
--- 8038,8044 ----
        Prefix : Node_Id;
        Exprs  : List_Id) return Boolean
     is
!       Pref_Typ : Entity_Id := Etype (Prefix);
  
        function Constant_Indexing_OK return Boolean;
        --  Constant_Indexing is legal if there is no Variable_Indexing defined
*************** package body Sem_Ch4 is
*** 7842,7849 ****
              --  resolution does not depend on the type of the parameter that
              --  includes the indexing operation.
  
!             elsif Nkind_In (Parent (Par), N_Function_Call,
!                                           N_Procedure_Call_Statement)
                and then Is_Entity_Name (Name (Parent (Par)))
              then
                 declare
--- 8089,8095 ----
              --  resolution does not depend on the type of the parameter that
              --  includes the indexing operation.
  
!             elsif Nkind (Parent (Par)) in N_Subprogram_Call
                and then Is_Entity_Name (Name (Parent (Par)))
              then
                 declare
*************** package body Sem_Ch4 is
*** 8227,8232 ****
--- 8473,8497 ----
           return True;
        end if;
  
+       --  An explicit dereference needs to be created in the case of a prefix
+       --  that's an access.
+ 
+       --  It seems that this should be done elsewhere, but not clear where that
+       --  should happen. Normally Insert_Explicit_Dereference is called via
+       --  Resolve_Implicit_Dereference, called from Resolve_Indexed_Component,
+       --  but that won't be called in this case because we transform the
+       --  indexing to a call. Resolve_Call.Check_Prefixed_Call takes care of
+       --  implicit dereferencing and referencing on prefixed calls, but that
+       --  would be too late, even if we expanded to a prefix call, because
+       --  Process_Indexed_Component will flag an error before the resolution
+       --  happens. ???
+ 
+       if Is_Access_Type (Pref_Typ) then
+          Pref_Typ := Implicitly_Designated_Type (Pref_Typ);
+          Insert_Explicit_Dereference (Prefix);
+          Error_Msg_NW (Warn_On_Dereference, "?d?implicit dereference", N);
+       end if;
+ 
        C_Type := Pref_Typ;
  
        --  If indexing a class-wide container, obtain indexing primitive from
*************** package body Sem_Ch4 is
*** 8268,8274 ****
           --  as such and retry.
  
           if Has_Implicit_Dereference (Pref_Typ) then
!             Build_Explicit_Dereference (Prefix, First_Discriminant (Pref_Typ));
              return Try_Container_Indexing (N, Prefix, Exprs);
  
           --  Otherwise this is definitely not container indexing
--- 8533,8540 ----
           --  as such and retry.
  
           if Has_Implicit_Dereference (Pref_Typ) then
!             Build_Explicit_Dereference
!               (Prefix, Get_Reference_Discriminant (Pref_Typ));
              return Try_Container_Indexing (N, Prefix, Exprs);
  
           --  Otherwise this is definitely not container indexing
*************** package body Sem_Ch4 is
*** 8290,8297 ****
        --  the Controlled types. The code below is motivated by containers that
        --  are derived from other types with a Reference aspect.
        --  Note as well that we need to examine the base type, given that
!       --  the container object may be a constrained subtype or itype which
!       --  does not have an explicit declaration,
  
        elsif Is_Derived_Type (C_Type)
          and then Etype (First_Formal (Entity (Func_Name))) /= Pref_Typ
--- 8556,8563 ----
        --  the Controlled types. The code below is motivated by containers that
        --  are derived from other types with a Reference aspect.
        --  Note as well that we need to examine the base type, given that
!       --  the container object may be a constrained subtype or itype that
!       --  does not have an explicit declaration.
  
        elsif Is_Derived_Type (C_Type)
          and then Etype (First_Formal (Entity (Func_Name))) /= Pref_Typ
*************** package body Sem_Ch4 is
*** 8348,8353 ****
--- 8614,8625 ----
        if not Is_Overloaded (Func_Name) then
           Func := Entity (Func_Name);
  
+          --  Can happen in case of e.g. cascaded errors
+ 
+          if No (Func) then
+             return False;
+          end if;
+ 
           Indexing :=
             Make_Function_Call (Loc,
               Name                   => New_Occurrence_Of (Func, Loc),
*************** package body Sem_Ch4 is
*** 8630,8636 ****
        --  Transform Obj.Operation (X, Y, ...) into Operation (Obj, X, Y ...).
        --  Call_Node is the resulting subprogram call, Node_To_Replace is
        --  either N or the parent of N, and Subprog is a reference to the
!       --  subprogram we are trying to match.
  
        function Try_Class_Wide_Operation
          (Call_Node       : Node_Id;
--- 8902,8910 ----
        --  Transform Obj.Operation (X, Y, ...) into Operation (Obj, X, Y ...).
        --  Call_Node is the resulting subprogram call, Node_To_Replace is
        --  either N or the parent of N, and Subprog is a reference to the
!       --  subprogram we are trying to match. Note that the transformation
!       --  may be partially destructive for the parent of N, so it needs to
!       --  be undone in the case where Try_Object_Operation returns false.
  
        function Try_Class_Wide_Operation
          (Call_Node       : Node_Id;
*************** package body Sem_Ch4 is
*** 8776,8791 ****
              Rewrite (First_Actual, Obj);
           end if;
  
!          --  The operation is obtained from the dispatch table and not by
!          --  visibility, and may be declared in a unit that is not explicitly
!          --  referenced in the source, but is nevertheless required in the
!          --  context of the current unit. Indicate that operation and its scope
!          --  are referenced, to prevent spurious and misleading warnings. If
!          --  the operation is overloaded, all primitives are in the same scope
!          --  and we can use any of them.
  
!          Set_Referenced (Entity (Subprog), True);
!          Set_Referenced (Scope (Entity (Subprog)), True);
  
           Rewrite (Node_To_Replace, Call_Node);
  
--- 9050,9069 ----
              Rewrite (First_Actual, Obj);
           end if;
  
!          if In_Extended_Main_Source_Unit (Current_Scope) then
!             --  The operation is obtained from the dispatch table and not by
!             --  visibility, and may be declared in a unit that is not
!             --  explicitly referenced in the source, but is nevertheless
!             --  required in the context of the current unit. Indicate that
!             --  operation and its scope are referenced, to prevent spurious and
!             --  misleading warnings. If the operation is overloaded, all
!             --  primitives are in the same scope and we can use any of them.
!             --  Don't do that outside the main unit since otherwise this will
!             --  e.g. prevent the detection of some unused with clauses.
  
!             Set_Referenced (Entity (Subprog), True);
!             Set_Referenced (Scope (Entity (Subprog)), True);
!          end if;
  
           Rewrite (Node_To_Replace, Call_Node);
  
*************** package body Sem_Ch4 is
*** 8888,8901 ****
           Actuals : List_Id;
  
        begin
-          --  Obj may already have been rewritten if it involves an implicit
-          --  dereference (e.g. if it is an access to a limited view). Preserve
-          --  a link to the original node for ASIS use.
- 
-          if not Comes_From_Source (Obj) then
-             Set_Original_Node (Dummy, Original_Node (Obj));
-          end if;
- 
           --  Common case covering 1) Call to a procedure and 2) Call to a
           --  function that has some additional actuals.
  
--- 9166,9171 ----
*************** package body Sem_Ch4 is
*** 8909,8915 ****
              --  example:
              --            Some_Subprogram (..., Obj.Operation, ...)
  
!             and then Name (Parent_Node) = N
           then
              Node_To_Replace := Parent_Node;
  
--- 9179,9185 ----
              --  example:
              --            Some_Subprogram (..., Obj.Operation, ...)
  
!             and then N = Name (Parent_Node)
           then
              Node_To_Replace := Parent_Node;
  
*************** package body Sem_Ch4 is
*** 9058,9064 ****
  
              Hom := Current_Entity (Subprog);
              while Present (Hom) loop
!                if Ekind_In (Hom, E_Procedure, E_Function)
                   and then Present (Renamed_Entity (Hom))
                   and then Is_Generic_Actual_Subprogram (Hom)
                   and then In_Open_Scopes (Scope (Hom))
--- 9328,9334 ----
  
              Hom := Current_Entity (Subprog);
              while Present (Hom) loop
!                if Ekind (Hom) in E_Procedure | E_Function
                   and then Present (Renamed_Entity (Hom))
                   and then Is_Generic_Actual_Subprogram (Hom)
                   and then In_Open_Scopes (Scope (Hom))
*************** package body Sem_Ch4 is
*** 9068,9074 ****
                    Candidate := Hom;
                 end if;
  
!                if Ekind_In (Candidate, E_Function, E_Procedure)
                   and then (not Is_Hidden (Candidate) or else In_Instance)
                   and then Scope (Candidate) = Scope (Base_Type (Anc_Type))
                   and then First_Formal_Match (Candidate, CW_Typ)
--- 9338,9344 ----
                    Candidate := Hom;
                 end if;
  
!                if Ekind (Candidate) in E_Function | E_Procedure
                   and then (not Is_Hidden (Candidate) or else In_Instance)
                   and then Scope (Candidate) = Scope (Base_Type (Anc_Type))
                   and then First_Formal_Match (Candidate, CW_Typ)
*************** package body Sem_Ch4 is
*** 9132,9137 ****
--- 9402,9408 ----
                          Error_Msg_NE ("ambiguous call to&", N, Hom);
                          Report_Ambiguity (Matching_Op);
                          Report_Ambiguity (Hom);
+                         Check_Ambiguous_Aggregate (New_Call_Node);
                          Error := True;
                          return;
                       end if;
*************** package body Sem_Ch4 is
*** 9246,9253 ****
              Obj_Type := Designated_Type (Obj_Type);
           end if;
  
!          if Ekind_In (Obj_Type, E_Private_Subtype,
!                                 E_Record_Subtype_With_Private)
           then
              Obj_Type := Base_Type (Obj_Type);
           end if;
--- 9517,9524 ----
              Obj_Type := Designated_Type (Obj_Type);
           end if;
  
!          if Ekind (Obj_Type)
!            in E_Private_Subtype | E_Record_Subtype_With_Private
           then
              Obj_Type := Base_Type (Obj_Type);
           end if;
*************** package body Sem_Ch4 is
*** 9417,9423 ****
              if Is_Derived_Type (T) then
                 return Primitive_Operations (T);
  
!             elsif Ekind_In (Scope (T), E_Procedure, E_Function) then
  
                 --  Scan the list of generic formals to find subprograms
                 --  that may have a first controlling formal of the type.
--- 9688,9694 ----
              if Is_Derived_Type (T) then
                 return Primitive_Operations (T);
  
!             elsif Ekind (Scope (T)) in E_Procedure | E_Function then
  
                 --  Scan the list of generic formals to find subprograms
                 --  that may have a first controlling formal of the type.
*************** package body Sem_Ch4 is
*** 9480,9486 ****
              Type_Scope : constant Entity_Id := Scope (T);
              Op_List    : Elist_Id := Primitive_Operations (T);
           begin
!             if Ekind_In (Type_Scope, E_Package, E_Generic_Package)
                and then ((In_Package_Body (Type_Scope)
                and then In_Open_Scopes (Type_Scope)) or else In_Instance_Body)
              then
--- 9751,9757 ----
              Type_Scope : constant Entity_Id := Scope (T);
              Op_List    : Elist_Id := Primitive_Operations (T);
           begin
!             if Is_Package_Or_Generic_Package (Type_Scope)
                and then ((In_Package_Body (Type_Scope)
                and then In_Open_Scopes (Type_Scope)) or else In_Instance_Body)
              then
*************** package body Sem_Ch4 is
*** 9754,9759 ****
--- 10025,10031 ----
                       Error_Msg_NE ("ambiguous call to&", N, Prim_Op);
                       Report_Ambiguity (Matching_Op);
                       Report_Ambiguity (Prim_Op);
+                      Check_Ambiguous_Aggregate (Call_Node);
                       return True;
                    end if;
                 end if;
*************** package body Sem_Ch4 is
*** 9947,9954 ****
           return True;
  
        else
!          --  There was no candidate operation, so report it as an error
!          --  in the caller: Analyze_Selected_Component.
  
           return False;
        end if;
--- 10219,10238 ----
           return True;
  
        else
!          --  There was no candidate operation, but Analyze_Selected_Component
!          --  may continue the analysis so we need to undo the change possibly
!          --  made to the Parent of N earlier by Transform_Object_Operation.
! 
!          declare
!             Parent_Node : constant Node_Id := Parent (N);
! 
!          begin
!             if Node_To_Replace = Parent_Node then
!                Remove (First (Parameter_Associations (New_Call_Node)));
!                Set_Parent
!                  (Parameter_Associations (New_Call_Node), Parent_Node);
!             end if;
!          end;
  
           return False;
        end if;
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch4.ads gcc-11.1.0/gcc/ada/sem_ch4.ads
*** gcc-10.3.0/gcc/ada/sem_ch4.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch4.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch5.adb gcc-11.1.0/gcc/ada/sem_ch5.adb
*** gcc-10.3.0/gcc/ada/sem_ch5.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch5.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 26,31 ****
--- 26,32 ----
  with Aspects;  use Aspects;
  with Atree;    use Atree;
  with Checks;   use Checks;
+ with Debug;    use Debug;
  with Einfo;    use Einfo;
  with Errout;   use Errout;
  with Expander; use Expander;
*************** with Namet;    use Namet;
*** 39,46 ****
  with Nlists;   use Nlists;
  with Nmake;    use Nmake;
  with Opt;      use Opt;
- with Restrict; use Restrict;
- with Rident;   use Rident;
  with Sem;      use Sem;
  with Sem_Aux;  use Sem_Aux;
  with Sem_Case; use Sem_Case;
--- 40,45 ----
*************** with Stand;    use Stand;
*** 60,65 ****
--- 59,65 ----
  with Sinfo;    use Sinfo;
  with Targparm; use Targparm;
  with Tbuild;   use Tbuild;
+ with Ttypes;   use Ttypes;
  with Uintp;    use Uintp;
  
  package body Sem_Ch5 is
*************** package body Sem_Ch5 is
*** 192,203 ****
                 --  directly.
  
                 elsif (Is_Prival (Ent) and then Within_Function)
!                    or else
!                      (Ekind (Ent) = E_Component
!                        and then Is_Protected_Type (Scope (Ent)))
                 then
                    Error_Msg_N
!                     ("protected function cannot modify protected object", N);
                    return;
                 end if;
              end;
--- 192,202 ----
                 --  directly.
  
                 elsif (Is_Prival (Ent) and then Within_Function)
!                    or else Is_Protected_Component (Ent)
                 then
                    Error_Msg_N
!                     ("protected function cannot modify its protected object",
!                      N);
                    return;
                 end if;
              end;
*************** package body Sem_Ch5 is
*** 305,314 ****
           --  also have an actual subtype.
  
           if Is_Entity_Name (Opnd)
!            and then (Ekind (Entity (Opnd)) = E_Out_Parameter
!                       or else Ekind_In (Entity (Opnd),
!                                         E_In_Out_Parameter,
!                                         E_Generic_In_Out_Parameter)
                        or else
                          (Ekind (Entity (Opnd)) = E_Variable
                            and then Nkind (Parent (Entity (Opnd))) =
--- 304,312 ----
           --  also have an actual subtype.
  
           if Is_Entity_Name (Opnd)
!            and then (Ekind (Entity (Opnd)) in E_Out_Parameter
!                                             | E_In_Out_Parameter
!                                             | E_Generic_In_Out_Parameter
                        or else
                          (Ekind (Entity (Opnd)) = E_Variable
                            and then Nkind (Parent (Entity (Opnd))) =
*************** package body Sem_Ch5 is
*** 321,327 ****
           --  If assignment operand is a component reference, then we get the
           --  actual subtype of the component for the unconstrained case.
  
!          elsif Nkind_In (Opnd, N_Selected_Component, N_Explicit_Dereference)
             and then not Is_Unchecked_Union (Opnd_Type)
           then
              Decl := Build_Actual_Subtype_Of_Component (Opnd_Type, Opnd);
--- 319,325 ----
           --  If assignment operand is a component reference, then we get the
           --  actual subtype of the component for the unconstrained case.
  
!          elsif Nkind (Opnd) in N_Selected_Component | N_Explicit_Dereference
             and then not Is_Unchecked_Union (Opnd_Type)
           then
              Decl := Build_Actual_Subtype_Of_Component (Opnd_Type, Opnd);
*************** package body Sem_Ch5 is
*** 352,359 ****
        function Should_Transform_BIP_Assignment
          (Typ : Entity_Id) return Boolean
        is
-          Result : Boolean;
- 
        begin
           if Expander_Active
             and then not Is_Limited_View (Typ)
--- 350,355 ----
*************** package body Sem_Ch5 is
*** 367,403 ****
              --  parameterless function call if it denotes a function.
              --  Finally, an attribute reference can be a function call.
  
!             case Nkind (Unqual_Conv (Rhs)) is
!                when N_Function_Call
!                   | N_Op
!                =>
!                   Result := True;
! 
!                when N_Expanded_Name
!                   | N_Identifier
!                =>
!                   case Ekind (Entity (Unqual_Conv (Rhs))) is
!                      when E_Function
!                         | E_Operator
!                      =>
!                         Result := True;
  
!                      when others =>
!                         Result := False;
!                   end case;
  
-                when N_Attribute_Reference =>
-                   Result := Attribute_Name (Unqual_Conv (Rhs)) = Name_Input;
                    --  T'Input will turn into a call whose result type is T
  
!                when others =>
!                   Result := False;
!             end case;
           else
!             Result := False;
           end if;
- 
-          return Result;
        end Should_Transform_BIP_Assignment;
  
        ------------------------------
--- 363,395 ----
              --  parameterless function call if it denotes a function.
              --  Finally, an attribute reference can be a function call.
  
!             declare
!                Unqual_Rhs : constant Node_Id := Unqual_Conv (Rhs);
!             begin
!                case Nkind (Unqual_Rhs) is
!                   when N_Function_Call
!                      | N_Op
!                   =>
!                      return True;
  
!                   when N_Expanded_Name
!                      | N_Identifier
!                   =>
!                      return
!                        Ekind (Entity (Unqual_Rhs)) in E_Function | E_Operator;
  
                    --  T'Input will turn into a call whose result type is T
  
!                   when N_Attribute_Reference =>
!                      return Attribute_Name (Unqual_Rhs) = Name_Input;
! 
!                   when others =>
!                      return False;
!                end case;
!             end;
           else
!             return False;
           end if;
        end Should_Transform_BIP_Assignment;
  
        ------------------------------
*************** package body Sem_Ch5 is
*** 714,720 ****
                      and then Convention (S) = Convention_Protected
                    then
                       Error_Msg_N
!                        ("protected function cannot modify protected object",
                          Lhs);
                    end if;
  
--- 706,713 ----
                      and then Convention (S) = Convention_Protected
                    then
                       Error_Msg_N
!                        ("protected function cannot modify its protected " &
!                         "object",
                          Lhs);
                    end if;
  
*************** package body Sem_Ch5 is
*** 780,786 ****
  
        if Is_Protected_Part_Of_Constituent (Lhs) and then Within_Function then
           Error_Msg_N
!            ("protected function cannot modify protected object", Lhs);
        end if;
  
        --  Resolution may have updated the subtype, in case the left-hand side
--- 773,779 ----
  
        if Is_Protected_Part_Of_Constituent (Lhs) and then Within_Function then
           Error_Msg_N
!            ("protected function cannot modify its protected object", Lhs);
        end if;
  
        --  Resolution may have updated the subtype, in case the left-hand side
*************** package body Sem_Ch5 is
*** 823,834 ****
        --  that of the target mutable object.
  
        if Is_Entity_Name (Lhs)
!         and then Ekind_In (Entity (Lhs), E_In_Out_Parameter,
!                                          E_Out_Parameter,
!                                          E_Variable)
          and then Is_Composite_Type (T1)
          and then not Is_Constrained (Etype (Entity (Lhs)))
!         and then Nkind_In (Rhs, N_If_Expression, N_Case_Expression)
        then
           Resolve (Rhs, Base_Type (T1));
  
--- 816,825 ----
        --  that of the target mutable object.
  
        if Is_Entity_Name (Lhs)
!         and then Is_Assignable (Entity (Lhs))
          and then Is_Composite_Type (T1)
          and then not Is_Constrained (Etype (Entity (Lhs)))
!         and then Nkind (Rhs) in N_If_Expression | N_Case_Expression
        then
           Resolve (Rhs, Base_Type (T1));
  
*************** package body Sem_Ch5 is
*** 965,971 ****
              Apply_Compile_Time_Constraint_Error
                (N      => Rhs,
                 Msg    =>
!                  "(Ada 2005) null not allowed in null-excluding objects??",
                 Reason => CE_Null_Not_Allowed);
  
              --  We still mark this as a possible modification, that's necessary
--- 956,962 ----
              Apply_Compile_Time_Constraint_Error
                (N      => Rhs,
                 Msg    =>
!                  "(Ada 2005) NULL not allowed in null-excluding objects??",
                 Reason => CE_Null_Not_Allowed);
  
              --  We still mark this as a possible modification, that's necessary
*************** package body Sem_Ch5 is
*** 997,1003 ****
          and then (Nkind (Rhs) /= N_Function_Call
                     or else Nkind (N) /= N_Block_Statement)
        then
!          --  Assignment verifies that the length of the Lsh and Rhs are equal,
           --  but of course the indexes do not have to match. If the right-hand
           --  side is a type conversion to an unconstrained type, a length check
           --  is performed on the expression itself during expansion. In rare
--- 988,994 ----
          and then (Nkind (Rhs) /= N_Function_Call
                     or else Nkind (N) /= N_Block_Statement)
        then
!          --  Assignment verifies that the length of the Lhs and Rhs are equal,
           --  but of course the indexes do not have to match. If the right-hand
           --  side is a type conversion to an unconstrained type, a length check
           --  is performed on the expression itself during expansion. In rare
*************** package body Sem_Ch5 is
*** 1005,1011 ****
           --  with a different representation, triggering incorrect code in the
           --  back end.
  
!          Apply_Length_Check (Rhs, Etype (Lhs));
  
        else
           --  Discriminant checks are applied in the course of expansion
--- 996,1002 ----
           --  with a different representation, triggering incorrect code in the
           --  back end.
  
!          Apply_Length_Check_On_Assignment (Rhs, Etype (Lhs), Lhs);
  
        else
           --  Discriminant checks are applied in the course of expansion
*************** package body Sem_Ch5 is
*** 1053,1059 ****
  
        if not Support_Composite_Assign_On_Target
          and then (Is_Array_Type (T1) or else Is_Record_Type (T1))
!         and then (not Has_Size_Clause (T1) or else Esize (T1) > 64)
        then
           Error_Msg_CRT ("composite assignment", N);
        end if;
--- 1044,1051 ----
  
        if not Support_Composite_Assign_On_Target
          and then (Is_Array_Type (T1) or else Is_Record_Type (T1))
!         and then (not Has_Size_Clause (T1)
!                    or else Esize (T1) > Ttypes.System_Max_Integer_Size)
        then
           Error_Msg_CRT ("composite assignment", N);
        end if;
*************** package body Sem_Ch5 is
*** 1242,1248 ****
  
              --  Do not install the return object
  
!             if not Ekind_In (Id, E_Constant, E_Variable)
                or else not Is_Return_Object (Id)
              then
                 Install_Entity (Id);
--- 1234,1240 ----
  
              --  Do not install the return object
  
!             if Ekind (Id) not in E_Constant | E_Variable
                or else not Is_Return_Object (Id)
              then
                 Install_Entity (Id);
*************** package body Sem_Ch5 is
*** 1263,1275 ****
     --  Start of processing for Analyze_Block_Statement
  
     begin
-       --  In SPARK mode, we reject block statements. Note that the case of
-       --  block statements generated by the expander is fine.
- 
-       if Nkind (Original_Node (N)) = N_Block_Statement then
-          Check_SPARK_05_Restriction ("block statement is not allowed", N);
-       end if;
- 
        --  If no handled statement sequence is present, things are really messed
        --  up, and we just return immediately (defence against previous errors).
  
--- 1255,1260 ----
*************** package body Sem_Ch5 is
*** 1404,1419 ****
     ----------------------------
  
     procedure Analyze_Case_Statement (N : Node_Id) is
!       Exp            : Node_Id;
!       Exp_Type       : Entity_Id;
!       Exp_Btype      : Entity_Id;
!       Last_Choice    : Nat;
! 
!       Others_Present : Boolean;
!       --  Indicates if Others was present
! 
!       pragma Warnings (Off, Last_Choice);
!       --  Don't care about assigned value
  
        Statements_Analyzed : Boolean := False;
        --  Set True if at least some statement sequences get analyzed. If False
--- 1389,1395 ----
     ----------------------------
  
     procedure Analyze_Case_Statement (N : Node_Id) is
!       Exp : constant Node_Id := Expression (N);
  
        Statements_Analyzed : Boolean := False;
        --  Set True if at least some statement sequences get analyzed. If False
*************** package body Sem_Ch5 is
*** 1421,1429 ****
        --  the case statement, and as a result it is not a good idea to output
        --  warning messages about unreachable code.
  
-       Save_Unblocked_Exit_Count : constant Nat := Unblocked_Exit_Count;
-       --  Recursively save value of this global, will be restored on exit
- 
        procedure Non_Static_Choice_Error (Choice : Node_Id);
        --  Error routine invoked by the generic instantiation below when the
        --  case statement has a non static choice.
--- 1397,1402 ----
*************** package body Sem_Ch5 is
*** 1483,1492 ****
           if Is_Entity_Name (Exp) then
              Ent := Entity (Exp);
  
!             if Ekind_In (Ent, E_Variable,
!                               E_In_Out_Parameter,
!                               E_Out_Parameter)
!             then
                 if List_Length (Choices) = 1
                   and then Nkind (First (Choices)) in N_Subexpr
                   and then Compile_Time_Known_Value (First (Choices))
--- 1456,1462 ----
           if Is_Entity_Name (Exp) then
              Ent := Entity (Exp);
  
!             if Is_Assignable (Ent) then
                 if List_Length (Choices) = 1
                   and then Nkind (First (Choices)) in N_Subexpr
                   and then Compile_Time_Known_Value (First (Choices))
*************** package body Sem_Ch5 is
*** 1510,1520 ****
           Analyze_Statements (Statements (Alternative));
        end Process_Statements;
  
     --  Start of processing for Analyze_Case_Statement
  
     begin
-       Unblocked_Exit_Count := 0;
-       Exp := Expression (N);
        Analyze (Exp);
  
        --  The expression must be of any discrete type. In rare cases, the
--- 1480,1499 ----
           Analyze_Statements (Statements (Alternative));
        end Process_Statements;
  
+       --  Local variables
+ 
+       Exp_Type  : Entity_Id;
+       Exp_Btype : Entity_Id;
+ 
+       Others_Present : Boolean;
+       --  Indicates if Others was present
+ 
+       Save_Unblocked_Exit_Count : constant Nat := Unblocked_Exit_Count;
+       --  Recursively save value of this global, will be restored on exit
+ 
     --  Start of processing for Analyze_Case_Statement
  
     begin
        Analyze (Exp);
  
        --  The expression must be of any discrete type. In rare cases, the
*************** package body Sem_Ch5 is
*** 1578,1595 ****
           Exp_Type := Exp_Btype;
        end if;
  
!       --  Call instantiated procedures to analyzwe and check discrete choices
  
        Analyze_Choices (Alternatives (N), Exp_Type);
        Check_Choices (N, Alternatives (N), Exp_Type, Others_Present);
  
-       --  Case statement with single OTHERS alternative not allowed in SPARK
- 
-       if Others_Present and then List_Length (Alternatives (N)) = 1 then
-          Check_SPARK_05_Restriction
-            ("OTHERS as unique case alternative is not allowed", N);
-       end if;
- 
        if Exp_Type = Universal_Integer and then not Others_Present then
           Error_Msg_N ("case on universal integer requires OTHERS choice", Exp);
        end if;
--- 1557,1569 ----
           Exp_Type := Exp_Btype;
        end if;
  
!       --  Call instantiated procedures to analyze and check discrete choices
! 
!       Unblocked_Exit_Count := 0;
  
        Analyze_Choices (Alternatives (N), Exp_Type);
        Check_Choices (N, Alternatives (N), Exp_Type, Others_Present);
  
        if Exp_Type = Universal_Integer and then not Others_Present then
           Error_Msg_N ("case on universal integer requires OTHERS choice", Exp);
        end if;
*************** package body Sem_Ch5 is
*** 1672,1682 ****
              return;
  
           else
-             if Has_Loop_In_Inner_Open_Scopes (U_Name) then
-                Check_SPARK_05_Restriction
-                  ("exit label must name the closest enclosing loop", N);
-             end if;
- 
              Set_Has_Exit (U_Name);
           end if;
  
--- 1646,1651 ----
*************** package body Sem_Ch5 is
*** 1712,1753 ****
           Check_Unset_Reference (Cond);
        end if;
  
-       --  In SPARK mode, verify that the exit statement respects the SPARK
-       --  restrictions.
- 
-       if Present (Cond) then
-          if Nkind (Parent (N)) /= N_Loop_Statement then
-             Check_SPARK_05_Restriction
-               ("exit with when clause must be directly in loop", N);
-          end if;
- 
-       else
-          if Nkind (Parent (N)) /= N_If_Statement then
-             if Nkind (Parent (N)) = N_Elsif_Part then
-                Check_SPARK_05_Restriction
-                  ("exit must be in IF without ELSIF", N);
-             else
-                Check_SPARK_05_Restriction ("exit must be directly in IF", N);
-             end if;
- 
-          elsif Nkind (Parent (Parent (N))) /= N_Loop_Statement then
-             Check_SPARK_05_Restriction
-               ("exit must be in IF directly in loop", N);
- 
-          --  First test the presence of ELSE, so that an exit in an ELSE leads
-          --  to an error mentioning the ELSE.
- 
-          elsif Present (Else_Statements (Parent (N))) then
-             Check_SPARK_05_Restriction ("exit must be in IF without ELSE", N);
- 
-          --  An exit in an ELSIF does not reach here, as it would have been
-          --  detected in the case (Nkind (Parent (N)) /= N_If_Statement).
- 
-          elsif Present (Elsif_Parts (Parent (N))) then
-             Check_SPARK_05_Restriction ("exit must be in IF without ELSIF", N);
-          end if;
-       end if;
- 
        --  Chain exit statement to associated loop entity
  
        Set_Next_Exit_Statement  (N, First_Exit_Statement (Scope_Id));
--- 1681,1686 ----
*************** package body Sem_Ch5 is
*** 1772,1779 ****
        Label_Ent   : Entity_Id;
  
     begin
-       Check_SPARK_05_Restriction ("goto statement is not allowed", N);
- 
        --  Actual semantic checks
  
        Check_Unreachable_Code (N);
--- 1705,1710 ----
*************** package body Sem_Ch5 is
*** 1812,1818 ****
           Scope_Id := Scope_Stack.Table (J).Entity;
  
           if Label_Scope = Scope_Id
!            or else not Ekind_In (Scope_Id, E_Block, E_Loop, E_Return_Statement)
           then
              if Scope_Id /= Label_Scope then
                 Error_Msg_N
--- 1743,1750 ----
           Scope_Id := Scope_Stack.Table (J).Entity;
  
           if Label_Scope = Scope_Id
!            or else Ekind (Scope_Id) not in
!                      E_Block | E_Loop | E_Return_Statement
           then
              if Scope_Id /= Label_Scope then
                 Error_Msg_N
*************** package body Sem_Ch5 is
*** 1842,1853 ****
     --  on which they depend will not be available at the freeze point.
  
     procedure Analyze_If_Statement (N : Node_Id) is
-       E : Node_Id;
- 
        Save_Unblocked_Exit_Count : constant Nat := Unblocked_Exit_Count;
        --  Recursively save value of this global, will be restored on exit
  
!       Save_In_Deleted_Code : Boolean;
  
        Del : Boolean := False;
        --  This flag gets set True if a True condition has been found, which
--- 1774,1783 ----
     --  on which they depend will not be available at the freeze point.
  
     procedure Analyze_If_Statement (N : Node_Id) is
        Save_Unblocked_Exit_Count : constant Nat := Unblocked_Exit_Count;
        --  Recursively save value of this global, will be restored on exit
  
!       Save_In_Deleted_Code : Boolean := In_Deleted_Code;
  
        Del : Boolean := False;
        --  This flag gets set True if a True condition has been found, which
*************** package body Sem_Ch5 is
*** 1893,1899 ****
  
              --  If condition is False, analyze THEN with expansion off
  
!             else -- Is_False (Expr_Value (Cond))
                 Expander_Mode_Save_And_Set (False);
                 In_Deleted_Code := True;
                 Analyze_Statements (Tstm);
--- 1823,1829 ----
  
              --  If condition is False, analyze THEN with expansion off
  
!             else pragma Assert (Is_False (Expr_Value (Cond)));
                 Expander_Mode_Save_And_Set (False);
                 In_Deleted_Code := True;
                 Analyze_Statements (Tstm);
*************** package body Sem_Ch5 is
*** 1908,1913 ****
--- 1838,1848 ----
           end if;
        end Analyze_Cond_Then;
  
+       --  Local variables
+ 
+       E : Node_Id;
+       --  For iterating over elsif parts
+ 
     --  Start of processing for Analyze_If_Statement
  
     begin
*************** package body Sem_Ch5 is
*** 2273,2280 ****
  
        --  If the domain of iteration is an expression, create a declaration for
        --  it, so that finalization actions are introduced outside of the loop.
!       --  The declaration must be a renaming because the body of the loop may
!       --  assign to elements.
  
        if not Is_Entity_Name (Iter_Name)
  
--- 2208,2215 ----
  
        --  If the domain of iteration is an expression, create a declaration for
        --  it, so that finalization actions are introduced outside of the loop.
!       --  The declaration must be a renaming (both in GNAT and GNATprove
!       --  modes), because the body of the loop may assign to elements.
  
        if not Is_Entity_Name (Iter_Name)
  
*************** package body Sem_Ch5 is
*** 2283,2296 ****
          --  doing expansion.
  
          and then (Nkind (Parent (N)) /= N_Quantified_Expression
!                    or else Operating_Mode = Check_Semantics)
  
!         --  Do not perform this expansion for ASIS and when expansion is
!         --  disabled, where the temporary may hide the transformation of a
!         --  selected component into a prefixed function call, and references
!         --  need to see the original expression.
  
!         and then Expander_Active
        then
           declare
              Id    : constant Entity_Id := Make_Temporary (Loc, 'R', Iter_Name);
--- 2218,2232 ----
          --  doing expansion.
  
          and then (Nkind (Parent (N)) /= N_Quantified_Expression
!                    or else (Operating_Mode = Check_Semantics
!                             and then not GNATprove_Mode))
  
!         --  Do not perform this expansion when expansion is disabled, where the
!         --  temporary may hide the transformation of a selected component into
!         --  a prefixed function call, and references need to see the original
!         --  expression.
  
!         and then (Expander_Active or GNATprove_Mode)
        then
           declare
              Id    : constant Entity_Id := Make_Temporary (Loc, 'R', Iter_Name);
*************** package body Sem_Ch5 is
*** 2300,2306 ****
           begin
  
              --  If the domain of iteration is an array component that depends
!             --  on a discriminant, create actual subtype for it. preanalysis
              --  does not generate the actual subtype of a selected component.
  
              if Nkind (Iter_Name) = N_Selected_Component
--- 2236,2242 ----
           begin
  
              --  If the domain of iteration is an array component that depends
!             --  on a discriminant, create actual subtype for it. Preanalysis
              --  does not generate the actual subtype of a selected component.
  
              if Nkind (Iter_Name) = N_Selected_Component
*************** package body Sem_Ch5 is
*** 2378,2383 ****
--- 2314,2320 ----
  
              Insert_Actions (Parent (Parent (N)), New_List (Decl));
              Rewrite (Name (N), New_Occurrence_Of (Id, Loc));
+             Analyze (Name (N));
              Set_Etype (Id, Typ);
              Set_Etype (Name (N), Typ);
           end;
*************** package body Sem_Ch5 is
*** 2449,2455 ****
              --  AI12-0047 stipulates that the domain (array or container)
              --  cannot be a component that depends on a discriminant if the
              --  enclosing object is mutable, to prevent a modification of the
!             --  dowmain of iteration in the course of an iteration.
  
              --  If the object is an expression it has been captured in a
              --  temporary, so examine original node.
--- 2386,2392 ----
              --  AI12-0047 stipulates that the domain (array or container)
              --  cannot be a component that depends on a discriminant if the
              --  enclosing object is mutable, to prevent a modification of the
!             --  domain of iteration in the course of an iteration.
  
              --  If the object is an expression it has been captured in a
              --  temporary, so examine original node.
*************** package body Sem_Ch5 is
*** 2515,2521 ****
  
                 Check_Subtype_Indication (Etype (Def_Id));
  
!             --  For a predefined container, The type of the loop variable is
              --  the Iterator_Element aspect of the container type.
  
              else
--- 2452,2458 ----
  
                 Check_Subtype_Indication (Etype (Def_Id));
  
!             --  For a predefined container, the type of the loop variable is
              --  the Iterator_Element aspect of the container type.
  
              else
*************** package body Sem_Ch5 is
*** 2580,2589 ****
                       if Nkind (Orig_Iter_Name) = N_Selected_Component
                         and then
                           Present (Entity (Selector_Name (Orig_Iter_Name)))
!                        and then Ekind_In
!                                   (Entity (Selector_Name (Orig_Iter_Name)),
!                                    E_Component,
!                                    E_Discriminant)
                         and then Is_Dependent_Component_Of_Mutable_Object
                                    (Orig_Iter_Name)
                       then
--- 2517,2525 ----
                       if Nkind (Orig_Iter_Name) = N_Selected_Component
                         and then
                           Present (Entity (Selector_Name (Orig_Iter_Name)))
!                        and then
!                          Ekind (Entity (Selector_Name (Orig_Iter_Name))) in
!                            E_Component | E_Discriminant
                         and then Is_Dependent_Component_Of_Mutable_Object
                                    (Orig_Iter_Name)
                       then
*************** package body Sem_Ch5 is
*** 2686,2691 ****
--- 2622,2634 ----
  
           end if;
        end if;
+ 
+       if Present (Iterator_Filter (N)) then
+          --  Preanalyze the filter. Expansion will take place when enclosing
+          --  loop is expanded.
+ 
+          Preanalyze_And_Resolve (Iterator_Filter (N), Standard_Boolean);
+       end if;
     end Analyze_Iterator_Specification;
  
     -------------------
*************** package body Sem_Ch5 is
*** 2857,2864 ****
              if Analyzed (Original_Bound) then
                 return Original_Bound;
  
!             elsif Nkind_In (Analyzed_Bound, N_Integer_Literal,
!                                             N_Character_Literal)
                or else Is_Entity_Name (Analyzed_Bound)
              then
                 Analyze_And_Resolve (Original_Bound, Typ);
--- 2800,2807 ----
              if Analyzed (Original_Bound) then
                 return Original_Bound;
  
!             elsif Nkind (Analyzed_Bound) in
!                     N_Integer_Literal | N_Character_Literal
                or else Is_Entity_Name (Analyzed_Bound)
              then
                 Analyze_And_Resolve (Original_Bound, Typ);
*************** package body Sem_Ch5 is
*** 3015,3027 ****
           end if;
        end;
  
-       --  Loop parameter specification must include subtype mark in SPARK
- 
-       if Nkind (DS) = N_Range then
-          Check_SPARK_05_Restriction
-            ("loop parameter specification must include subtype mark", N);
-       end if;
- 
        --  Analyze the subtype definition and create temporaries for the bounds.
        --  Do not evaluate the range when preanalyzing a quantified expression
        --  because bounds expressed as function calls with side effects will be
--- 2958,2963 ----
*************** package body Sem_Ch5 is
*** 3063,3070 ****
                       and then not Is_Type (Entity (DS_Copy)))
  
             or else (Nkind (DS_Copy) = N_Attribute_Reference
!                      and then Nam_In (Attribute_Name (DS_Copy),
!                                       Name_Loop_Entry, Name_Old))
  
             or else Has_Aspect (Etype (DS_Copy), Aspect_Iterable)
  
--- 2999,3006 ----
                       and then not Is_Type (Entity (DS_Copy)))
  
             or else (Nkind (DS_Copy) = N_Attribute_Reference
!                      and then Attribute_Name (DS_Copy) in
!                                 Name_Loop_Entry | Name_Old)
  
             or else Has_Aspect (Etype (DS_Copy), Aspect_Iterable)
  
*************** package body Sem_Ch5 is
*** 3088,3093 ****
--- 3024,3032 ----
              begin
                 Set_Iterator_Specification (Scheme, I_Spec);
                 Set_Loop_Parameter_Specification (Scheme, Empty);
+                Set_Iterator_Filter (I_Spec,
+                  Relocate_Node (Iterator_Filter (N)));
+ 
                 Analyze_Iterator_Specification (I_Spec);
  
                 --  In a generic context, analyze the original domain of
*************** package body Sem_Ch5 is
*** 3160,3166 ****
           Check_Predicate_Use (Entity (Subtype_Mark (DS)));
        end if;
  
!       Make_Index (DS, N, In_Iter_Schm => True);
        Set_Ekind (Id, E_Loop_Parameter);
  
        --  A quantified expression which appears in a pre- or post-condition may
--- 3099,3108 ----
           Check_Predicate_Use (Entity (Subtype_Mark (DS)));
        end if;
  
!       if Nkind (DS) not in N_Raise_xxx_Error then
!          Make_Index (DS, N);
!       end if;
! 
        Set_Ekind (Id, E_Loop_Parameter);
  
        --  A quantified expression which appears in a pre- or post-condition may
*************** package body Sem_Ch5 is
*** 3204,3217 ****
  
        --  Case where we have a range or a subtype, get type bounds
  
!       if Nkind_In (DS, N_Range, N_Subtype_Indication)
          and then not Error_Posted (DS)
          and then Etype (DS) /= Any_Type
          and then Is_Discrete_Type (Etype (DS))
        then
           declare
!             L : Node_Id;
!             H : Node_Id;
  
           begin
              if Nkind (DS) = N_Range then
--- 3146,3160 ----
  
        --  Case where we have a range or a subtype, get type bounds
  
!       if Nkind (DS) in N_Range | N_Subtype_Indication
          and then not Error_Posted (DS)
          and then Etype (DS) /= Any_Type
          and then Is_Discrete_Type (Etype (DS))
        then
           declare
!             L          : Node_Id;
!             H          : Node_Id;
!             Null_Range : Boolean := False;
  
           begin
              if Nkind (DS) = N_Range then
*************** package body Sem_Ch5 is
*** 3231,3236 ****
--- 3174,3187 ----
              --  null range may be detected statically.
  
              if Compile_Time_Compare (L, H, Assume_Valid => True) = GT then
+                if Compile_Time_Compare (L, H, Assume_Valid => False) = GT then
+                   --  Since we know the range of the loop is always null,
+                   --  set the appropriate flag to remove the loop entirely
+                   --  during expansion.
+ 
+                   Set_Is_Null_Loop (Loop_Nod);
+                   Null_Range := True;
+                end if;
  
                 --  Suppress the warning if inside a generic template or
                 --  instance, since in practice they tend to be dubious in these
*************** package body Sem_Ch5 is
*** 3241,3264 ****
                    --  Specialize msg if invalid values could make the loop
                    --  non-null after all.
  
!                   if Compile_Time_Compare
!                        (L, H, Assume_Valid => False) = GT
!                   then
!                      --  Since we know the range of the loop is null, set the
!                      --  appropriate flag to remove the loop entirely during
!                      --  expansion.
! 
!                      Set_Is_Null_Loop (Loop_Nod);
! 
                       if Comes_From_Source (N) then
                          Error_Msg_N
                            ("??loop range is null, loop will not execute", DS);
                       end if;
  
!                      --  Here is where the loop could execute because of
!                      --  invalid values, so issue appropriate message and in
!                      --  this case we do not set the Is_Null_Loop flag since
!                      --  the loop may execute.
  
                    elsif Comes_From_Source (N) then
                       Error_Msg_N
--- 3192,3205 ----
                    --  Specialize msg if invalid values could make the loop
                    --  non-null after all.
  
!                   if Null_Range then
                       if Comes_From_Source (N) then
                          Error_Msg_N
                            ("??loop range is null, loop will not execute", DS);
                       end if;
  
!                   --  Here is where the loop could execute because of
!                   --  invalid values, so issue appropriate message.
  
                    elsif Comes_From_Source (N) then
                       Error_Msg_N
*************** package body Sem_Ch5 is
*** 3367,3376 ****
           --  the warning is perfectly acceptable.
  
           exception
!             when others => null;
           end;
        end if;
  
        --  A loop parameter cannot be effectively volatile (SPARK RM 7.1.3(4)).
        --  This check is relevant only when SPARK_Mode is on as it is not a
        --  standard Ada legality check.
--- 3308,3327 ----
           --  the warning is perfectly acceptable.
  
           exception
!             when others =>
!                --  With debug flag K we will get an exception unless an error
!                --  has already occurred (useful for debugging).
! 
!                if Debug_Flag_K then
!                   Check_Error_Detected;
!                end if;
           end;
        end if;
  
+       if Present (Iterator_Filter (N)) then
+          Analyze_And_Resolve (Iterator_Filter (N), Standard_Boolean);
+       end if;
+ 
        --  A loop parameter cannot be effectively volatile (SPARK RM 7.1.3(4)).
        --  This check is relevant only when SPARK_Mode is on as it is not a
        --  standard Ada legality check.
*************** package body Sem_Ch5 is
*** 3389,3401 ****
        --  The following exception is raised by routine Prepare_Loop_Statement
        --  to avoid further analysis of a transformed loop.
  
-       function Disable_Constant (N : Node_Id) return Traverse_Result;
-       --  If N represents an E_Variable entity, set Is_True_Constant To False
- 
-       procedure Disable_Constants is new Traverse_Proc (Disable_Constant);
-       --  Helper for Analyze_Loop_Statement, to unset Is_True_Constant on
-       --  variables referenced within an OpenACC construct.
- 
        procedure Prepare_Loop_Statement
          (Iter            : Node_Id;
           Stop_Processing : out Boolean);
--- 3340,3345 ----
*************** package body Sem_Ch5 is
*** 3403,3424 ****
        --  transformed prior to analysis, and if so, perform it.
        --  If Stop_Processing is set to True, should stop further processing.
  
-       ----------------------
-       -- Disable_Constant --
-       ----------------------
- 
-       function Disable_Constant (N : Node_Id) return Traverse_Result is
-       begin
-          if Is_Entity_Name (N)
-             and then Present (Entity (N))
-             and then Ekind (Entity (N)) = E_Variable
-          then
-             Set_Is_True_Constant (Entity (N), False);
-          end if;
- 
-          return OK;
-       end Disable_Constant;
- 
        ----------------------------
        -- Prepare_Loop_Statement --
        ----------------------------
--- 3347,3352 ----
*************** package body Sem_Ch5 is
*** 3975,3981 ****
                    Enter_Name (Id);
                 end if;
  
!                --  In an element iterator, The loop parameter is a variable if
                 --  the domain of iteration (container or array) is a variable.
  
                 if not Of_Present (I_Spec)
--- 3903,3909 ----
                    Enter_Name (Id);
                 end if;
  
!                --  In an element iterator, the loop parameter is a variable if
                 --  the domain of iteration (container or array) is a variable.
  
                 if not Of_Present (I_Spec)
*************** package body Sem_Ch5 is
*** 3994,3999 ****
--- 3922,3933 ----
           Analyze_Statements (Statements (N));
        end if;
  
+       --  If the loop has no side effects, mark it for removal.
+ 
+       if Side_Effect_Free_Loop (N) then
+          Set_Is_Null_Loop (N);
+       end if;
+ 
        --  When the iteration scheme of a loop contains attribute 'Loop_Entry,
        --  the loop is transformed into a conditional block. Retrieve the loop.
  
*************** package body Sem_Ch5 is
*** 4030,4044 ****
        if No (Iter) and then not Has_Exit (Ent) then
           Check_Unreachable_Code (Stmt);
        end if;
- 
-       --  Variables referenced within a loop subject to possible OpenACC
-       --  offloading may be implicitly written to as part of the OpenACC
-       --  transaction. Clear flags possibly conveying that they are constant,
-       --  set for example when the code does not explicitly assign them.
- 
-       if Is_OpenAcc_Environment (Stmt) then
-          Disable_Constants (Stmt);
-       end if;
     end Analyze_Loop_Statement;
  
     ----------------------------
--- 3964,3969 ----
*************** package body Sem_Ch5 is
*** 4166,4177 ****
              end loop;
  
              --  If a label follows us, then we never have dead code, since
!             --  someone could branch to the label, so we just ignore it, unless
!             --  we are in formal mode where goto statements are not allowed.
  
!             if Nkind (Nxt) = N_Label
!               and then not Restriction_Check_Required (SPARK_05)
!             then
                 return;
  
              --  Otherwise see if we have a real statement following us
--- 4091,4099 ----
              end loop;
  
              --  If a label follows us, then we never have dead code, since
!             --  someone could branch to the label, so we just ignore it.
  
!             if Nkind (Nxt) = N_Label then
                 return;
  
              --  Otherwise see if we have a real statement following us
*************** package body Sem_Ch5 is
*** 4204,4211 ****
                    --  This is the one case where we remove dead code in the
                    --  semantics as opposed to the expander, and we do not want
                    --  to remove code if we are not in code generation mode,
!                   --  since this messes up the ASIS trees or loses useful
!                   --  information in the CodePeer tree.
  
                    --  Note that one might react by moving the whole circuit to
                    --  exp_ch5, but then we lose the warning in -gnatc mode.
--- 4126,4133 ----
                    --  This is the one case where we remove dead code in the
                    --  semantics as opposed to the expander, and we do not want
                    --  to remove code if we are not in code generation mode,
!                   --  since this messes up the tree or loses useful information
!                   --  for CodePeer.
  
                    --  Note that one might react by moving the whole circuit to
                    --  exp_ch5, but then we lose the warning in -gnatc mode.
*************** package body Sem_Ch5 is
*** 4230,4244 ****
                       end loop;
                    end if;
  
!                   --  Now issue the warning (or error in formal mode)
! 
!                   if Restriction_Check_Required (SPARK_05) then
!                      Check_SPARK_05_Restriction
!                        ("unreachable code is not allowed", Error_Node);
!                   else
!                      Error_Msg
!                        ("??unreachable code!", Sloc (Error_Node), Error_Node);
!                   end if;
                 end if;
  
              --  If the unconditional transfer of control instruction is the
--- 4152,4159 ----
                       end loop;
                    end if;
  
!                   Error_Msg
!                     ("??unreachable code!", Sloc (Error_Node), Error_Node);
                 end if;
  
              --  If the unconditional transfer of control instruction is the
*************** package body Sem_Ch5 is
*** 4478,4498 ****
           --  visible in the loop.
  
           elsif Has_Implicit_Dereference (Etype (R_Copy)) then
!             declare
!                Disc : Entity_Id;
! 
!             begin
!                Disc := First_Discriminant (Typ);
!                while Present (Disc) loop
!                   if Has_Implicit_Dereference (Disc) then
!                      Build_Explicit_Dereference (R_Copy, Disc);
!                      exit;
!                   end if;
! 
!                   Next_Discriminant (Disc);
!                end loop;
!             end;
! 
           end if;
        end if;
  
--- 4393,4400 ----
           --  visible in the loop.
  
           elsif Has_Implicit_Dereference (Etype (R_Copy)) then
!             Build_Explicit_Dereference
!               (R_Copy, Get_Reference_Discriminant (Etype (R_Copy)));
           end if;
        end if;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch5.ads gcc-11.1.0/gcc/ada/sem_ch5.ads
*** gcc-10.3.0/gcc/ada/sem_ch5.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch5.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch6.adb gcc-11.1.0/gcc/ada/sem_ch6.adb
*** gcc-10.3.0/gcc/ada/sem_ch6.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch6.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Einfo;     use Einfo;
*** 32,37 ****
--- 32,38 ----
  with Elists;    use Elists;
  with Errout;    use Errout;
  with Expander;  use Expander;
+ with Exp_Ch3;   use Exp_Ch3;
  with Exp_Ch6;   use Exp_Ch6;
  with Exp_Ch7;   use Exp_Ch7;
  with Exp_Ch9;   use Exp_Ch9;
*************** with Nmake;     use Nmake;
*** 51,57 ****
  with Opt;       use Opt;
  with Output;    use Output;
  with Restrict;  use Restrict;
- with Rident;    use Rident;
  with Rtsfind;   use Rtsfind;
  with Sem;       use Sem;
  with Sem_Aux;   use Sem_Aux;
--- 52,57 ----
*************** package body Sem_Ch6 is
*** 152,157 ****
--- 152,167 ----
     --  against a formal access-to-subprogram type so Get_Instance_Of must
     --  be called.
  
+    procedure Check_Formal_Subprogram_Conformance
+      (New_Id   : Entity_Id;
+       Old_Id   : Entity_Id;
+       Err_Loc  : Node_Id;
+       Errmsg   : Boolean;
+       Conforms : out Boolean);
+    --  Core implementation of Check_Formal_Subprogram_Conformance from spec.
+    --  Errmsg can be set to False to not emit error messages.
+    --  Conforms is set to True if there is conformance, False otherwise.
+ 
     procedure Check_Limited_Return
       (N      : Node_Id;
        Expr   : Node_Id;
*************** package body Sem_Ch6 is
*** 225,232 ****
                    Analyze_Subprogram_Specification (Specification (N));
  
     begin
-       Check_SPARK_05_Restriction ("abstract subprogram is not allowed", N);
- 
        Generate_Definition (Subp_Id);
  
        --  Set the SPARK mode from the current context (may be overwritten later
--- 235,240 ----
*************** package body Sem_Ch6 is
*** 298,305 ****
        --  If the expression is a completion, Prev is the entity whose
        --  declaration is completed. Def_Id is needed to analyze the spec.
  
-    --  Start of processing for Analyze_Expression_Function
- 
     begin
        --  This is one of the occasions on which we transform the tree during
        --  semantic analysis. If this is a completion, transform the expression
--- 306,311 ----
*************** package body Sem_Ch6 is
*** 423,436 ****
           Relocate_Pragmas_To_Body (N);
           Analyze (N);
  
-          --  Once the aspects of the generated body have been analyzed, create
-          --  a copy for ASIS purposes and associate it with the original node.
- 
-          if Has_Aspects (N) then
-             Set_Aspect_Specifications (Orig_N,
-               New_Copy_List_Tree (Aspect_Specifications (N)));
-          end if;
- 
           --  Prev is the previous entity with the same name, but it is can
           --  be an unrelated spec that is not completed by the expression
           --  function. In that case the relevant entity is the one in the body.
--- 429,434 ----
*************** package body Sem_Ch6 is
*** 484,497 ****
  
           Analyze (N);
  
-          --  Once the aspects of the generated spec have been analyzed, create
-          --  a copy for ASIS purposes and associate it with the original node.
- 
-          if Has_Aspects (N) then
-             Set_Aspect_Specifications (Orig_N,
-               New_Copy_List_Tree (Aspect_Specifications (N)));
-          end if;
- 
           --  If aspect SPARK_Mode was specified on the body, it needs to be
           --  repeated both on the generated spec and the body.
  
--- 482,487 ----
*************** package body Sem_Ch6 is
*** 517,525 ****
           --  Within a generic preanalyze the original expression for name
           --  capture. The body is also generated but plays no role in
           --  this because it is not part of the original source.
  
           if Inside_A_Generic then
!             Set_Has_Completion (Def_Id);
              Push_Scope (Def_Id);
              Install_Formals (Def_Id);
              Preanalyze_Spec_Expression (Expr, Etype (Def_Id));
--- 507,520 ----
           --  Within a generic preanalyze the original expression for name
           --  capture. The body is also generated but plays no role in
           --  this because it is not part of the original source.
+          --  If this is an ignored Ghost entity, analysis of the generated
+          --  body is needed to hide external references (as is done in
+          --  Analyze_Subprogram_Body) after which the the subprogram profile
+          --  can be frozen, which is needed to expand calls to such an ignored
+          --  Ghost subprogram.
  
           if Inside_A_Generic then
!             Set_Has_Completion (Def_Id, not Is_Ignored_Ghost_Entity (Def_Id));
              Push_Scope (Def_Id);
              Install_Formals (Def_Id);
              Preanalyze_Spec_Expression (Expr, Etype (Def_Id));
*************** package body Sem_Ch6 is
*** 571,576 ****
--- 566,621 ----
                    Check_Limited_Return (Original_Node (N), Expr, Typ);
                    End_Scope;
                 end if;
+ 
+                --  In the case of an expression function marked with the
+                --  aspect Static, we need to check the requirement that the
+                --  function's expression is a potentially static expression.
+                --  This is done by making a full copy of the expression tree
+                --  and performing a special preanalysis on that tree with
+                --  the global flag Checking_Potentially_Static_Expression
+                --  enabled. If the resulting expression is static, then it's
+                --  OK, but if not, that means the expression violates the
+                --  requirements of the Ada 202x RM in 4.9(3.2/5-3.4/5) and
+                --  we flag an error.
+ 
+                if Is_Static_Function (Def_Id) then
+                   if not Is_Static_Expression (Expr) then
+                      declare
+                         Exp_Copy : constant Node_Id := New_Copy_Tree (Expr);
+                      begin
+                         Set_Checking_Potentially_Static_Expression (True);
+ 
+                         Preanalyze_Formal_Expression (Exp_Copy, Typ);
+ 
+                         if not Is_Static_Expression (Exp_Copy) then
+                            Error_Msg_N
+                              ("static expression function requires "
+                                 & "potentially static expression", Expr);
+                         end if;
+ 
+                         Set_Checking_Potentially_Static_Expression (False);
+                      end;
+                   end if;
+ 
+                   --  We also make an additional copy of the expression and
+                   --  replace the expression of the expression function with
+                   --  this copy, because the currently present expression is
+                   --  now associated with the body created for the static
+                   --  expression function, which will later be analyzed and
+                   --  possibly rewritten, and we need to have the separate
+                   --  unanalyzed copy available for use with later static
+                   --  calls.
+ 
+                   Set_Expression
+                     (Original_Node (Subprogram_Spec (Def_Id)),
+                      New_Copy_Tree (Expr));
+ 
+                   --  Mark static expression functions as inlined, to ensure
+                   --  that even calls with nonstatic actuals will be inlined.
+ 
+                   Set_Has_Pragma_Inline (Def_Id);
+                   Set_Is_Inlined (Def_Id);
+                end if;
              end if;
           end;
        end if;
*************** package body Sem_Ch6 is
*** 627,635 ****
        end if;
     end Analyze_Expression_Function;
  
!    ----------------------------------------
!    -- Analyze_Extended_Return_Statement  --
!    ----------------------------------------
  
     procedure Analyze_Extended_Return_Statement (N : Node_Id) is
     begin
--- 672,680 ----
        end if;
     end Analyze_Expression_Function;
  
!    ---------------------------------------
!    -- Analyze_Extended_Return_Statement --
!    ---------------------------------------
  
     procedure Analyze_Extended_Return_Statement (N : Node_Id) is
     begin
*************** package body Sem_Ch6 is
*** 694,700 ****
        R_Type : constant Entity_Id := Etype (Scope_Id);
        --  Function result subtype
  
!       procedure Check_Return_Obj_Accessibility (Return_Stmt : Node_Id);
        --  Apply legality rule of 6.5 (5.9) to the access discriminants of an
        --  aggregate in a return statement.
  
--- 739,749 ----
        R_Type : constant Entity_Id := Etype (Scope_Id);
        --  Function result subtype
  
!       procedure Check_No_Return_Expression (Return_Expr : Node_Id);
!       --  Ada 2020: Check that the return expression in a No_Return function
!       --  meets the conditions specified by RM 6.5.1(5.1/5).
! 
!       procedure Check_Return_Construct_Accessibility (Return_Stmt : Node_Id);
        --  Apply legality rule of 6.5 (5.9) to the access discriminants of an
        --  aggregate in a return statement.
  
*************** package body Sem_Ch6 is
*** 702,733 ****
        --  Check that the return_subtype_indication properly matches the result
        --  subtype of the function, as required by RM-6.5(5.1/2-5.3/2).
  
!       ------------------------------------
!       -- Check_Return_Obj_Accessibility --
!       ------------------------------------
  
!       procedure Check_Return_Obj_Accessibility (Return_Stmt : Node_Id) is
!          Assoc         : Node_Id;
!          Agg           : Node_Id := Empty;
!          Discr         : Entity_Id;
!          Expr          : Node_Id;
!          Obj           : Node_Id;
!          Process_Exprs : Boolean := False;
!          Return_Obj    : Node_Id;
  
        begin
!          --  Only perform checks on record types with access discriminants
  
           if not Is_Record_Type (R_Type)
!            or else not Has_Discriminants (R_Type)
           then
              return;
           end if;
  
           --  We are only interested in return statements
  
!          if not Nkind_In (Return_Stmt, N_Extended_Return_Statement,
!                                        N_Simple_Return_Statement)
           then
              return;
           end if;
--- 751,847 ----
        --  Check that the return_subtype_indication properly matches the result
        --  subtype of the function, as required by RM-6.5(5.1/2-5.3/2).
  
!       --------------------------------
!       -- Check_No_Return_Expression --
!       --------------------------------
  
!       procedure Check_No_Return_Expression (Return_Expr : Node_Id) is
!          Kind : constant Node_Kind := Nkind (Return_Expr);
  
        begin
!          if Kind = N_Raise_Expression then
!             return;
! 
!          elsif Kind = N_Function_Call
!            and then Is_Entity_Name (Name (Return_Expr))
!            and then Ekind (Entity (Name (Return_Expr))) in
!                       E_Function | E_Generic_Function
!            and then No_Return (Entity (Name (Return_Expr)))
!          then
!             return;
!          end if;
! 
!          Error_Msg_N
!            ("illegal expression in RETURN statement of No_Return function",
!             Return_Expr);
!          Error_Msg_N
!            ("\must be raise expression or call to No_Return (RM 6.5.1(5.1/5))",
!             Return_Expr);
!       end Check_No_Return_Expression;
! 
!       ------------------------------------------
!       -- Check_Return_Construct_Accessibility --
!       ------------------------------------------
! 
!       procedure Check_Return_Construct_Accessibility (Return_Stmt : Node_Id) is
! 
!          function First_Selector (Assoc : Node_Id) return Node_Id;
!          --  Obtain the first selector or choice from a given association
! 
!          --------------------
!          -- First_Selector --
!          --------------------
! 
!          function First_Selector (Assoc : Node_Id) return Node_Id is
!          begin
!             if Nkind (Assoc) = N_Component_Association then
!                return First (Choices (Assoc));
! 
!             elsif Nkind (Assoc) = N_Discriminant_Association then
!                return (First (Selector_Names (Assoc)));
! 
!             else
!                raise Program_Error;
!             end if;
!          end First_Selector;
! 
!          --  Local declarations
! 
!          Assoc : Node_Id := Empty;
!          --  Assoc should perhaps be renamed and declared as a
!          --  Node_Or_Entity_Id since it encompasses not only component and
!          --  discriminant associations, but also discriminant components within
!          --  a type declaration or subtype indication ???
! 
!          Assoc_Expr    : Node_Id;
!          Assoc_Present : Boolean := False;
! 
!          Unseen_Disc_Count : Nat := 0;
!          Seen_Discs        : Elist_Id;
!          Disc              : Entity_Id;
!          First_Disc        : Entity_Id;
! 
!          Obj_Decl   : Node_Id;
!          Return_Con : Node_Id;
!          Unqual     : Node_Id;
! 
!       --  Start of processing for Check_Return_Construct_Accessibility
! 
!       begin
!          --  Only perform checks on record types with access discriminants and
!          --  non-internally generated functions.
  
           if not Is_Record_Type (R_Type)
!            or else not Has_Anonymous_Access_Discriminant (R_Type)
!            or else not Comes_From_Source (Return_Stmt)
           then
              return;
           end if;
  
           --  We are only interested in return statements
  
!          if Nkind (Return_Stmt) not in
!               N_Extended_Return_Statement | N_Simple_Return_Statement
           then
              return;
           end if;
*************** package body Sem_Ch6 is
*** 736,892 ****
           --  simple return statement the expression is part of the node.
  
           if Nkind (Return_Stmt) = N_Extended_Return_Statement then
!             Return_Obj := Last (Return_Object_Declarations (Return_Stmt));
  
!             --  We could be looking at something that's been expanded with
!             --  an initialzation procedure which we can safely ignore.
  
!             if Nkind (Return_Obj) /= N_Object_Declaration then
!                return;
!             end if;
           else
!             Return_Obj := Return_Stmt;
           end if;
  
!          --  We may need to check an aggregate or a subtype indication
!          --  depending on how the discriminants were specified and whether
!          --  we are looking at an extended return statement.
  
!          if Nkind (Return_Obj) = N_Object_Declaration
!            and then Nkind (Object_Definition (Return_Obj))
!                       = N_Subtype_Indication
           then
!             Assoc := First (Constraints
!                              (Constraint (Object_Definition (Return_Obj))));
           else
!             --  Qualified expressions may be nested
  
!             Agg := Original_Node (Expression (Return_Obj));
!             while Nkind (Agg) = N_Qualified_Expression loop
!                Agg := Original_Node (Expression (Agg));
              end loop;
  
!             --  If we are looking at an aggregate instead of a function call we
!             --  can continue checking accessibility for the supplied
!             --  discriminant associations.
  
-             if Nkind (Agg) = N_Aggregate then
-                if Present (Expressions (Agg)) then
-                   Assoc         := First (Expressions (Agg));
-                   Process_Exprs := True;
                 else
!                   Assoc := First (Component_Associations (Agg));
                 end if;
  
!             --  Otherwise the expression is not of interest ???
  
              else
!                return;
              end if;
           end if;
  
!          --  Move through the discriminants checking the accessibility level
!          --  of each co-extension's associated expression.
  
!          Discr := First_Discriminant (R_Type);
!          while Present (Discr) loop
!             if Ekind (Etype (Discr)) = E_Anonymous_Access_Type then
  
!                if Nkind (Assoc) = N_Attribute_Reference then
!                   Expr := Assoc;
!                elsif Nkind_In (Assoc, N_Component_Association,
!                                       N_Discriminant_Association)
!                then
!                   Expr := Expression (Assoc);
!                end if;
  
!                --  This anonymous access discriminant has an associated
!                --  expression which needs checking.
  
!                if Nkind (Expr) = N_Attribute_Reference
!                  and then Attribute_Name (Expr) /= Name_Unrestricted_Access
!                then
!                   --  Obtain the object to perform static checks on by moving
!                   --  up the prefixes in the expression taking into account
!                   --  named access types.
  
!                   Obj := Prefix (Expr);
!                   while Nkind_In (Obj, N_Indexed_Component,
!                                        N_Selected_Component)
!                   loop
!                      --  When we encounter a named access type then we can
!                      --  ignore accessibility checks on the dereference.
  
!                      if Ekind (Etype (Prefix (Obj)))
!                           in E_Access_Type ..
!                              E_Access_Protected_Subprogram_Type
!                      then
!                         if Nkind (Obj) = N_Selected_Component then
!                            Obj := Selector_Name (Obj);
!                         end if;
!                         exit;
!                      end if;
  
!                      --  Skip over the explicit dereference
  
!                      if Nkind (Prefix (Obj)) = N_Explicit_Dereference then
!                         Obj := Prefix (Prefix (Obj));
  
!                      --  Otherwise move up to the next prefix
  
!                      else
!                         Obj := Prefix (Obj);
!                      end if;
!                   end loop;
  
!                   --  Do not check aliased formals or function calls. A
!                   --  run-time check may still be needed ???
  
!                   if Is_Entity_Name (Obj)
!                     and then Comes_From_Source (Obj)
!                   then
!                      --  Explicitly aliased formals are allowed
  
!                      if Is_Formal (Entity (Obj))
!                        and then Is_Aliased (Entity (Obj))
!                      then
!                         null;
  
!                      elsif Object_Access_Level (Obj) >
!                              Scope_Depth (Scope (Scope_Id))
!                      then
!                         Error_Msg_N
!                           ("access discriminant in return aggregate would "
!                            & "be a dangling reference", Obj);
!                      end if;
                    end if;
                 end if;
-             end if;
  
!             Next_Discriminant (Discr);
  
-             if not Is_List_Member (Assoc) then
-                Assoc := Empty;
              else
!                Nlists.Next (Assoc);
              end if;
  
!             --  After aggregate expressions, examine component associations if
!             --  present.
  
!             if No (Assoc) then
!                if Present (Agg)
!                  and then Process_Exprs
!                  and then Present (Component_Associations (Agg))
                 then
!                   Assoc         := First (Component_Associations (Agg));
!                   Process_Exprs := False;
!                else
                    exit;
                 end if;
              end if;
           end loop;
!       end Check_Return_Obj_Accessibility;
  
        -------------------------------------
        -- Check_Return_Subtype_Indication --
--- 850,1244 ----
           --  simple return statement the expression is part of the node.
  
           if Nkind (Return_Stmt) = N_Extended_Return_Statement then
!             --  Obtain the object definition from the expanded extended return
  
!             Return_Con := First (Return_Object_Declarations (Return_Stmt));
!             while Present (Return_Con) loop
!                --  Inspect the original node to avoid object declarations
!                --  expanded into renamings.
  
!                if Nkind (Original_Node (Return_Con)) = N_Object_Declaration
!                  and then Comes_From_Source (Original_Node (Return_Con))
!                then
!                   exit;
!                end if;
! 
!                Nlists.Next (Return_Con);
!             end loop;
! 
!             pragma Assert (Present (Return_Con));
! 
!             --  Could be dealing with a renaming
! 
!             Return_Con := Original_Node (Return_Con);
           else
!             Return_Con := Expression (Return_Stmt);
           end if;
  
!          --  Obtain the accessibility levels of the expressions associated
!          --  with all anonymous access discriminants, then generate a
!          --  dynamic check or static error when relevant.
  
!          Unqual := Unqualify (Original_Node (Return_Con));
! 
!          --  Get the corresponding declaration based on the return object's
!          --  identifier.
! 
!          if Nkind (Unqual) = N_Identifier
!            and then Nkind (Parent (Entity (Unqual)))
!                       in N_Object_Declaration
!                        | N_Object_Renaming_Declaration
           then
!             Obj_Decl := Original_Node (Parent (Entity (Unqual)));
! 
!          --  We were passed the object declaration directly, so use it
! 
!          elsif Nkind (Unqual) in N_Object_Declaration
!                                | N_Object_Renaming_Declaration
!          then
!             Obj_Decl := Unqual;
! 
!          --  Otherwise, we are looking at something else
! 
           else
!             Obj_Decl := Empty;
  
!          end if;
! 
!          --  Hop up object renamings when present
! 
!          if Present (Obj_Decl)
!            and then Nkind (Obj_Decl) = N_Object_Renaming_Declaration
!          then
!             while Nkind (Obj_Decl) = N_Object_Renaming_Declaration loop
! 
!                if Nkind (Name (Obj_Decl)) not in N_Entity then
!                   --  We may be looking at the expansion of iterators or
!                   --  some other internally generated construct, so it is safe
!                   --  to ignore checks ???
! 
!                   if not Comes_From_Source (Obj_Decl) then
!                      return;
!                   end if;
! 
!                   Obj_Decl := Original_Node
!                                 (Declaration_Node
!                                   (Ultimate_Prefix (Name (Obj_Decl))));
! 
!                --  Move up to the next declaration based on the object's name
! 
!                else
!                   Obj_Decl := Original_Node
!                                 (Declaration_Node (Name (Obj_Decl)));
!                end if;
              end loop;
+          end if;
  
!          --  Obtain the discriminant values from the return aggregate
! 
!          --  Do we cover extension aggregates correctly ???
! 
!          if Nkind (Unqual) = N_Aggregate then
!             if Present (Expressions (Unqual)) then
!                Assoc := First (Expressions (Unqual));
!             else
!                Assoc := First (Component_Associations (Unqual));
!             end if;
! 
!          --  There is an object declaration for the return object
! 
!          elsif Present (Obj_Decl) then
!             --  When a subtype indication is present in an object declaration
!             --  it must contain the object's discriminants.
! 
!             if Nkind (Object_Definition (Obj_Decl)) = N_Subtype_Indication then
!                Assoc := First
!                           (Constraints
!                             (Constraint
!                               (Object_Definition (Obj_Decl))));
! 
!             --  The object declaration contains an aggregate
! 
!             elsif Present (Expression (Obj_Decl)) then
! 
!                if Nkind (Unqualify (Expression (Obj_Decl))) = N_Aggregate then
!                   --  Grab the first associated discriminant expresion
! 
!                   if Present
!                        (Expressions (Unqualify (Expression (Obj_Decl))))
!                   then
!                      Assoc := First
!                                 (Expressions
!                                   (Unqualify (Expression (Obj_Decl))));
!                   else
!                      Assoc := First
!                                 (Component_Associations
!                                   (Unqualify (Expression (Obj_Decl))));
!                   end if;
! 
!                --  Otherwise, this is something else
  
                 else
!                   return;
                 end if;
  
!             --  There are no supplied discriminants in the object declaration,
!             --  so get them from the type definition since they must be default
!             --  initialized.
! 
!             --  Do we handle constrained subtypes correctly ???
! 
!             elsif Nkind (Unqual) = N_Object_Declaration then
!                Assoc := First_Discriminant
!                           (Etype (Object_Definition (Obj_Decl)));
  
              else
!                Assoc := First_Discriminant (Etype (Unqual));
              end if;
+ 
+          --  When we are not looking at an aggregate or an identifier, return
+          --  since any other construct (like a function call) is not
+          --  applicable since checks will be performed on the side of the
+          --  callee.
+ 
+          else
+             return;
           end if;
  
!          --  Obtain the discriminants so we know the actual type in case the
!          --  value of their associated expression gets implicitly converted.
  
!          if No (Obj_Decl) then
!             pragma Assert (Nkind (Unqual) = N_Aggregate);
  
!             Disc := First_Discriminant (Etype (Unqual));
  
!          else
!             Disc := First_Discriminant
!                       (Etype (Defining_Identifier (Obj_Decl)));
!          end if;
  
!          --  Preserve the first discriminant for checking named associations
  
!          First_Disc := Disc;
  
!          --  Count the number of discriminants for processing an aggregate
!          --  which includes an others.
  
!          Disc := First_Disc;
!          while Present (Disc) loop
!             Unseen_Disc_Count := Unseen_Disc_Count + 1;
  
!             Next_Discriminant (Disc);
!          end loop;
  
!          Seen_Discs := New_Elmt_List;
  
!          --  Loop through each of the discriminants and check each expression
!          --  associated with an anonymous access discriminant.
  
!          --  When named associations occur in the return aggregate then
!          --  discriminants can be in any order, so we need to ensure we do
!          --  not continue to loop when all discriminants have been seen.
  
!          Disc := First_Disc;
!          while Present (Assoc)
!            and then (Present (Disc) or else Assoc_Present)
!            and then Unseen_Disc_Count > 0
!          loop
!             --  Handle named associations by searching through the names of
!             --  the relevant discriminant components.
  
!             if Nkind (Assoc)
!                  in N_Component_Association | N_Discriminant_Association
!             then
!                Assoc_Expr    := Expression (Assoc);
!                Assoc_Present := True;
  
!                --  We currently don't handle box initialized discriminants,
!                --  however, since default initialized anonymous access
!                --  discriminants are a corner case, this is ok for now ???
! 
!                if Nkind (Assoc) = N_Component_Association
!                  and then Box_Present (Assoc)
!                then
!                   Assoc_Present := False;
! 
!                   if Nkind (First_Selector (Assoc)) = N_Others_Choice then
!                      Unseen_Disc_Count := 0;
                    end if;
+ 
+                --  When others is present we must identify a discriminant we
+                --  haven't already seen so as to get the appropriate type for
+                --  the static accessibility check.
+ 
+                --  This works because all components within an others clause
+                --  must have the same type.
+ 
+                elsif Nkind (First_Selector (Assoc)) = N_Others_Choice then
+ 
+                   Disc := First_Disc;
+                   Outer : while Present (Disc) loop
+                      declare
+                         Current_Seen_Disc : Elmt_Id;
+                      begin
+                         --  Move through the list of identified discriminants
+ 
+                         Current_Seen_Disc := First_Elmt (Seen_Discs);
+                         while Present (Current_Seen_Disc) loop
+                            --  Exit the loop when we found a match
+ 
+                            exit when
+                              Chars (Node (Current_Seen_Disc)) = Chars (Disc);
+ 
+                            Next_Elmt (Current_Seen_Disc);
+                         end loop;
+ 
+                         --  When we have exited the above loop without finding
+                         --  a match then we know that Disc has not been seen.
+ 
+                         exit Outer when No (Current_Seen_Disc);
+                      end;
+ 
+                      Next_Discriminant (Disc);
+                   end loop Outer;
+ 
+                   --  If we got to an others clause with a non-zero
+                   --  discriminant count there must be a discriminant left to
+                   --  check.
+ 
+                   pragma Assert (Present (Disc));
+ 
+                   --  Set the unseen discriminant count to zero because we know
+                   --  an others clause sets all remaining components of an
+                   --  aggregate.
+ 
+                   Unseen_Disc_Count := 0;
+ 
+                --  Move through each of the selectors in the named association
+                --  and obtain a discriminant for accessibility checking if one
+                --  is referenced in the list. Also track which discriminants
+                --  are referenced for the purpose of handling an others clause.
+ 
+                else
+                   declare
+                      Assoc_Choice : Node_Id;
+                      Curr_Disc    : Node_Id;
+                   begin
+ 
+                      Disc      := Empty;
+                      Curr_Disc := First_Disc;
+                      while Present (Curr_Disc) loop
+                         --  Check each of the choices in the associations for a
+                         --  match to the name of the current discriminant.
+ 
+                         Assoc_Choice := First_Selector (Assoc);
+                         while Present (Assoc_Choice) loop
+                            --  When the name matches we track that we have seen
+                            --  the discriminant, but instead of exiting the
+                            --  loop we continue iterating to make sure all the
+                            --  discriminants within the named association get
+                            --  tracked.
+ 
+                            if Chars (Assoc_Choice) = Chars (Curr_Disc) then
+                               Append_Elmt (Curr_Disc, Seen_Discs);
+ 
+                               Disc              := Curr_Disc;
+                               Unseen_Disc_Count := Unseen_Disc_Count - 1;
+                            end if;
+ 
+                            Next (Assoc_Choice);
+                         end loop;
+ 
+                         Next_Discriminant (Curr_Disc);
+                      end loop;
+                   end;
                 end if;
  
!             --  Unwrap the associated expression if we are looking at a default
!             --  initialized type declaration. In this case Assoc is not really
!             --  an association, but a component declaration. Should Assoc be
!             --  renamed in some way to be more clear ???
! 
!             --  This occurs when the return object does not initialize
!             --  discriminant and instead relies on the type declaration for
!             --  their supplied values.
! 
!             elsif Nkind (Assoc) in N_Entity
!               and then Ekind (Assoc) = E_Discriminant
!             then
!                Append_Elmt (Disc, Seen_Discs);
! 
!                Assoc_Expr        := Discriminant_Default_Value (Assoc);
!                Unseen_Disc_Count := Unseen_Disc_Count - 1;
! 
!             --  Otherwise, there is nothing to do because Assoc is an
!             --  expression within the return aggregate itself.
  
              else
!                Append_Elmt (Disc, Seen_Discs);
! 
!                Assoc_Expr        := Assoc;
!                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
!             then
!                --  Perform a static check first, if possible
! 
!                if Static_Accessibility_Level
!                     (Expr              => Assoc_Expr,
!                      Level             => Zero_On_Dynamic_Level,
!                      In_Return_Context => True)
!                       > Scope_Depth (Scope (Scope_Id))
                 then
!                   Error_Msg_N
!                     ("access discriminant in return object would be a dangling"
!                      & " reference", Return_Stmt);
! 
                    exit;
                 end if;
+ 
+                --  Otherwise, generate a dynamic check based on the extra
+                --  accessibility of the result.
+ 
+                if Present (Extra_Accessibility_Of_Result (Scope_Id)) then
+                   Insert_Before_And_Analyze (Return_Stmt,
+                     Make_Raise_Program_Error (Loc,
+                       Condition =>
+                         Make_Op_Gt (Loc,
+                           Left_Opnd  => Accessibility_Level
+                                           (Expr              => Assoc_Expr,
+                                            Level             => Dynamic_Level,
+                                            In_Return_Context => True),
+                           Right_Opnd => Extra_Accessibility_Of_Result
+                                           (Scope_Id)),
+                       Reason    => PE_Accessibility_Check_Failed));
+                end if;
+             end if;
+ 
+             --  Iterate over the discriminants, except when we have encountered
+             --  a named association since the discriminant order becomes
+             --  irrelevant in that case.
+ 
+             if not Assoc_Present then
+                Next_Discriminant (Disc);
+             end if;
+ 
+             --  Iterate over associations
+ 
+             if not Is_List_Member (Assoc) then
+                exit;
+             else
+                Nlists.Next (Assoc);
              end if;
           end loop;
!       end Check_Return_Construct_Accessibility;
  
        -------------------------------------
        -- Check_Return_Subtype_Indication --
*************** package body Sem_Ch6 is
*** 1048,1055 ****
              --  This early expansion is done only when the return statement is
              --  not part of a handled sequence of statements.
  
!             if Nkind_In (Expr, N_Aggregate,
!                                N_Extension_Aggregate)
                and then Needs_Finalization (R_Type)
                and then Nkind (Parent (N)) /= N_Handled_Sequence_Of_Statements
              then
--- 1400,1406 ----
              --  This early expansion is done only when the return statement is
              --  not part of a handled sequence of statements.
  
!             if Nkind (Expr) in N_Aggregate | N_Extension_Aggregate
                and then Needs_Finalization (R_Type)
                and then Nkind (Parent (N)) /= N_Handled_Sequence_Of_Statements
              then
*************** package body Sem_Ch6 is
*** 1081,1087 ****
              if Expander_Active
                and then Serious_Errors_Detected = 0
                and then Is_Access_Type (R_Type)
!               and then not Nkind_In (Expr, N_Null, N_Raise_Expression)
                and then Is_Interface (Designated_Type (R_Type))
                and then Is_Progenitor (Designated_Type (R_Type),
                                        Designated_Type (Etype (Expr)))
--- 1432,1438 ----
              if Expander_Active
                and then Serious_Errors_Detected = 0
                and then Is_Access_Type (R_Type)
!               and then Nkind (Expr) not in N_Null | N_Raise_Expression
                and then Is_Interface (Designated_Type (R_Type))
                and then Is_Progenitor (Designated_Type (R_Type),
                                        Designated_Type (Etype (Expr)))
*************** package body Sem_Ch6 is
*** 1093,1114 ****
              Resolve (Expr, R_Type);
              Check_Limited_Return (N, Expr, R_Type);
  
!             Check_Return_Obj_Accessibility (N);
!          end if;
  
!          --  RETURN only allowed in SPARK as the last statement in function
  
!          if Nkind (Parent (N)) /= N_Handled_Sequence_Of_Statements
!            and then
!              (Nkind (Parent (Parent (N))) /= N_Subprogram_Body
!                or else Present (Next (N)))
!          then
!             Check_SPARK_05_Restriction
!               ("RETURN should be the last statement in function", N);
           end if;
- 
        else
-          Check_SPARK_05_Restriction ("extended RETURN is not allowed", N);
           Obj_Decl := Last (Return_Object_Declarations (N));
  
           --  Analyze parts specific to extended_return_statement:
--- 1444,1465 ----
              Resolve (Expr, R_Type);
              Check_Limited_Return (N, Expr, R_Type);
  
!             Check_Return_Construct_Accessibility (N);
  
!             --  Ada 2020 (AI12-0269): Any return statement that applies to a
!             --  nonreturning function shall be a simple_return_statement with
!             --  an expression that is a raise_expression, or else a call on a
!             --  nonreturning function, or else a parenthesized expression of
!             --  one of these.
  
!             if Ada_Version >= Ada_2020
!               and then No_Return (Scope_Id)
!               and then Comes_From_Source (N)
!             then
!                Check_No_Return_Expression (Original_Node (Expr));
!             end if;
           end if;
        else
           Obj_Decl := Last (Return_Object_Declarations (N));
  
           --  Analyze parts specific to extended_return_statement:
*************** package body Sem_Ch6 is
*** 1125,1131 ****
              --  object declaration.
  
              Set_Is_Return_Object (Defining_Identifier (Obj_Decl));
!             Analyze (Obj_Decl);
  
              Check_Return_Subtype_Indication (Obj_Decl);
  
--- 1476,1508 ----
              --  object declaration.
  
              Set_Is_Return_Object (Defining_Identifier (Obj_Decl));
! 
!             --  Returning a build-in-place unconstrained array type we defer
!             --  the full analysis of the returned object to avoid generating
!             --  the corresponding constrained subtype; otherwise the bounds
!             --  would be created in the stack and a dangling reference would
!             --  be returned pointing to the bounds. We perform its preanalysis
!             --  to report errors on the initializing aggregate now (if any);
!             --  we also ensure its activation chain and Master variable are
!             --  defined (if tasks are being declared) since they are generated
!             --  as part of the analysis and expansion of the object declaration
!             --  at this stage.
! 
!             if Is_Array_Type (R_Type)
!               and then not Is_Constrained (R_Type)
!               and then Is_Build_In_Place_Function (Scope_Id)
!               and then Needs_BIP_Alloc_Form (Scope_Id)
!               and then Nkind (Expr) in N_Aggregate | N_Extension_Aggregate
!             then
!                Preanalyze (Obj_Decl);
! 
!                if Expander_Active then
!                   Ensure_Activation_Chain_And_Master (Obj_Decl);
!                end if;
! 
!             else
!                Analyze (Obj_Decl);
!             end if;
  
              Check_Return_Subtype_Indication (Obj_Decl);
  
*************** package body Sem_Ch6 is
*** 1149,1155 ****
  
              Check_References (Stm_Entity);
  
!             Check_Return_Obj_Accessibility (N);
  
              --  Check RM 6.5 (5.9/3)
  
--- 1526,1532 ----
  
              Check_References (Stm_Entity);
  
!             Check_Return_Construct_Accessibility (N);
  
              --  Check RM 6.5 (5.9/3)
  
*************** package body Sem_Ch6 is
*** 1160,1173 ****
                    --  Can it really happen (extended return???)
  
                    Error_Msg_N
!                     ("aliased only allowed for limited return objects "
                       & "in Ada 2012??", N);
  
                 elsif not Is_Limited_View (R_Type) then
                    Error_Msg_N
!                     ("aliased only allowed for limited return objects", N);
                 end if;
              end if;
           end;
        end if;
  
--- 1537,1562 ----
                    --  Can it really happen (extended return???)
  
                    Error_Msg_N
!                     ("ALIASED only allowed for limited return objects "
                       & "in Ada 2012??", N);
  
                 elsif not Is_Limited_View (R_Type) then
                    Error_Msg_N
!                     ("ALIASED only allowed for limited return objects", N);
                 end if;
              end if;
+ 
+             --  Ada 2020 (AI12-0269): Any return statement that applies to a
+             --  nonreturning function shall be a simple_return_statement.
+ 
+             if Ada_Version >= Ada_2020
+               and then No_Return (Scope_Id)
+               and then Comes_From_Source (N)
+             then
+                Error_Msg_N
+                  ("extended RETURN statement not allowed in No_Return "
+                   & "function", N);
+             end if;
           end;
        end if;
  
*************** package body Sem_Ch6 is
*** 1200,1219 ****
  
           --  The return value is converted to the return type of the function,
           --  which implies a predicate check if the return type is predicated.
           --  We do not apply the check to a case expression because it will
           --  be expanded into a series of return statements, each of which
           --  will receive a predicate check.
  
!          if Nkind (Expr) /= N_Case_Expression then
              Apply_Predicate_Check (Expr, R_Type);
           end if;
  
           --  Ada 2005 (AI-318-02): When the result type is an anonymous access
           --  type, apply an implicit conversion of the expression to that type
           --  to force appropriate static and run-time accessibility checks.
  
           if Ada_Version >= Ada_2005
             and then Ekind (R_Type) = E_Anonymous_Access_Type
           then
              Rewrite (Expr, Convert_To (R_Type, Relocate_Node (Expr)));
              Analyze_And_Resolve (Expr, R_Type);
--- 1589,1619 ----
  
           --  The return value is converted to the return type of the function,
           --  which implies a predicate check if the return type is predicated.
+          --  We do not apply the check for an extended return statement because
+          --  Analyze_Object_Declaration has already done it on Obj_Decl above.
           --  We do not apply the check to a case expression because it will
           --  be expanded into a series of return statements, each of which
           --  will receive a predicate check.
  
!          if Nkind (N) /= N_Extended_Return_Statement
!            and then Nkind (Expr) /= N_Case_Expression
!          then
              Apply_Predicate_Check (Expr, R_Type);
           end if;
  
           --  Ada 2005 (AI-318-02): When the result type is an anonymous access
           --  type, apply an implicit conversion of the expression to that type
           --  to force appropriate static and run-time accessibility checks.
+          --  But we want to apply the checks to an extended return statement
+          --  only once, i.e. not to the simple return statement generated at
+          --  the end of its expansion because, prior to leaving the function,
+          --  the accessibility level of the return object changes to be a level
+          --  determined by the point of call (RM 3.10.2(10.8/3)).
  
           if Ada_Version >= Ada_2005
             and then Ekind (R_Type) = E_Anonymous_Access_Type
+            and then (Nkind (N) = N_Extended_Return_Statement
+                      or else not Comes_From_Extended_Return_Statement (N))
           then
              Rewrite (Expr, Convert_To (R_Type, Relocate_Node (Expr)));
              Analyze_And_Resolve (Expr, R_Type);
*************** package body Sem_Ch6 is
*** 1276,1283 ****
  
           if (Ada_Version < Ada_2005 or else Debug_Flag_Dot_L)
             and then Is_Limited_View (Etype (Scope_Id))
!            and then Object_Access_Level (Expr) >
!                       Subprogram_Access_Level (Scope_Id)
           then
              --  Suppress the message in a generic, where the rewriting
              --  is irrelevant.
--- 1676,1683 ----
  
           if (Ada_Version < Ada_2005 or else Debug_Flag_Dot_L)
             and then Is_Limited_View (Etype (Scope_Id))
!            and then Static_Accessibility_Level (Expr, Zero_On_Dynamic_Level)
!                       > Subprogram_Access_Level (Scope_Id)
           then
              --  Suppress the message in a generic, where the rewriting
              --  is irrelevant.
*************** package body Sem_Ch6 is
*** 1709,1720 ****
     --  is just a string, as in (conjunction = "or"). In these cases the parser
     --  generates this node, and the semantics does the disambiguation. Other
     --  such case are actuals in an instantiation, the generic unit in an
!    --  instantiation, and pragma arguments.
  
     procedure Analyze_Operator_Symbol (N : Node_Id) is
        Par : constant Node_Id := Parent (N);
  
     begin
        if        (Nkind (Par) = N_Function_Call and then N = Name (Par))
          or else  Nkind (Par) = N_Function_Instantiation
          or else (Nkind (Par) = N_Indexed_Component and then N = Prefix (Par))
--- 2109,2126 ----
     --  is just a string, as in (conjunction = "or"). In these cases the parser
     --  generates this node, and the semantics does the disambiguation. Other
     --  such case are actuals in an instantiation, the generic unit in an
!    --  instantiation, pragma arguments, and aspect specifications.
  
     procedure Analyze_Operator_Symbol (N : Node_Id) is
        Par : constant Node_Id := Parent (N);
  
+       Maybe_Aspect_Spec : Node_Id := Par;
     begin
+       if Nkind (Maybe_Aspect_Spec) /= N_Aspect_Specification then
+          --  deal with N_Aggregate nodes
+          Maybe_Aspect_Spec := Parent (Maybe_Aspect_Spec);
+       end if;
+ 
        if        (Nkind (Par) = N_Function_Call and then N = Name (Par))
          or else  Nkind (Par) = N_Function_Instantiation
          or else (Nkind (Par) = N_Indexed_Component and then N = Prefix (Par))
*************** package body Sem_Ch6 is
*** 1723,1728 ****
--- 2129,2138 ----
          or else  Nkind (Par) = N_Subprogram_Renaming_Declaration
          or else (Nkind (Par) = N_Attribute_Reference
                    and then Attribute_Name (Par) /= Name_Value)
+         or else (Nkind (Maybe_Aspect_Spec) = N_Aspect_Specification
+                   and then Get_Aspect_Id (Maybe_Aspect_Spec)
+                             --  include other aspects here ???
+                             in Aspect_Stable_Properties | Aspect_Aggregate)
        then
           Find_Direct_Name (N);
  
*************** package body Sem_Ch6 is
*** 1839,1847 ****
        --  Special processing for Elab_Spec, Elab_Body and Elab_Subp_Body calls
  
        if Nkind (P) = N_Attribute_Reference
!         and then Nam_In (Attribute_Name (P), Name_Elab_Spec,
!                                              Name_Elab_Body,
!                                              Name_Elab_Subp_Body)
        then
           if Present (Actuals) then
              Error_Msg_N
--- 2249,2257 ----
        --  Special processing for Elab_Spec, Elab_Body and Elab_Subp_Body calls
  
        if Nkind (P) = N_Attribute_Reference
!         and then Attribute_Name (P) in Name_Elab_Spec
!                                      | Name_Elab_Body
!                                      | Name_Elab_Subp_Body
        then
           if Present (Actuals) then
              Error_Msg_N
*************** package body Sem_Ch6 is
*** 1867,1872 ****
--- 2277,2286 ----
             and then Comes_From_Source (N)
           then
              Error_Msg_N ("missing explicit dereference in call", N);
+ 
+          elsif Ekind (Entity (P)) = E_Operator then
+             Error_Msg_Name_1 := Chars (P);
+             Error_Msg_N ("operator % cannot be used as a procedure", N);
           end if;
  
           Analyze_Call_And_Resolve;
*************** package body Sem_Ch6 is
*** 1927,1935 ****
        --  function, the context will select the operation whose type is Void.
  
        elsif Nkind (P) = N_Selected_Component
!         and then Ekind_In (Entity (Selector_Name (P)), E_Entry,
!                                                        E_Function,
!                                                        E_Procedure)
        then
           --  When front-end inlining is enabled, as with SPARK_Mode, a call
           --  in prefix notation may still be missing its controlling argument,
--- 2341,2348 ----
        --  function, the context will select the operation whose type is Void.
  
        elsif Nkind (P) = N_Selected_Component
!         and then Ekind (Entity (Selector_Name (P)))
!                    in E_Entry | E_Function | E_Procedure
        then
           --  When front-end inlining is enabled, as with SPARK_Mode, a call
           --  in prefix notation may still be missing its controlling argument,
*************** package body Sem_Ch6 is
*** 2017,2022 ****
--- 2430,2455 ----
  
        else
           Error_Msg_N ("invalid procedure or entry call", N);
+ 
+          --  Specialize the error message in the case where both a primitive
+          --  operation and a record component are visible at the same time.
+ 
+          if Nkind (P) = N_Selected_Component
+            and then Is_Entity_Name (Selector_Name (P))
+          then
+             declare
+                Sel : constant Entity_Id := Entity (Selector_Name (P));
+             begin
+                if Ekind (Sel) = E_Component
+                  and then Present (Homonym (Sel))
+                  and then Ekind (Homonym (Sel)) = E_Procedure
+                then
+                   Error_Msg_NE ("\component & conflicts with"
+                     & " homonym procedure (RM 4.1.3 (9.2/3))",
+                     Selector_Name (P), Sel);
+                end if;
+             end;
+          end if;
        end if;
  
     <<Leave>>
*************** package body Sem_Ch6 is
*** 2028,2035 ****
     ------------------------------
  
     procedure Analyze_Return_Statement (N : Node_Id) is
!       pragma Assert (Nkind_In (N, N_Extended_Return_Statement,
!                                   N_Simple_Return_Statement));
  
        Returns_Object : constant Boolean :=
                           Nkind (N) = N_Extended_Return_Statement
--- 2461,2468 ----
     ------------------------------
  
     procedure Analyze_Return_Statement (N : Node_Id) is
!       pragma Assert
!         (Nkind (N) in N_Extended_Return_Statement | N_Simple_Return_Statement);
  
        Returns_Object : constant Boolean :=
                           Nkind (N) = N_Extended_Return_Statement
*************** package body Sem_Ch6 is
*** 2057,2069 ****
           Result : Entity_Id := Empty;
  
        begin
!          --  Loop outward through the Scope_Stack, skipping blocks, loops,
!          --  and postconditions.
  
           for J in reverse 0 .. Scope_Stack.Last loop
              Result := Scope_Stack.Table (J).Entity;
!             exit when not Ekind_In (Result, E_Block, E_Loop)
!               and then Chars (Result) /= Name_uPostconditions;
           end loop;
  
           pragma Assert (Present (Result));
--- 2490,2500 ----
           Result : Entity_Id := Empty;
  
        begin
!          --  Loop outward through the Scope_Stack, skipping blocks, and loops
  
           for J in reverse 0 .. Scope_Stack.Last loop
              Result := Scope_Stack.Table (J).Entity;
!             exit when Ekind (Result) not in E_Block | E_Loop;
           end loop;
  
           pragma Assert (Present (Result));
*************** package body Sem_Ch6 is
*** 2097,2104 ****
        --  Check that pragma No_Return is obeyed. Don't complain about the
        --  implicitly-generated return that is placed at the end.
  
!       if No_Return (Scope_Id) and then Comes_From_Source (N) then
!          Error_Msg_N ("RETURN statement not allowed (No_Return)", N);
        end if;
  
        --  Warn on any unassigned OUT parameters if in procedure
--- 2528,2539 ----
        --  Check that pragma No_Return is obeyed. Don't complain about the
        --  implicitly-generated return that is placed at the end.
  
!       if No_Return (Scope_Id)
!         and then Kind in E_Procedure | E_Generic_Procedure
!         and then Comes_From_Source (N)
!       then
!          Error_Msg_N
!            ("RETURN statement not allowed in No_Return procedure", N);
        end if;
  
        --  Warn on any unassigned OUT parameters if in procedure
*************** package body Sem_Ch6 is
*** 2109,2125 ****
  
        --  Check that functions return objects, and other things do not
  
!       if Kind = E_Function or else Kind = E_Generic_Function then
           if not Returns_Object then
              Error_Msg_N ("missing expression in return from function", N);
           end if;
  
!       elsif Kind = E_Procedure or else Kind = E_Generic_Procedure then
           if Returns_Object then
              Error_Msg_N ("procedure cannot return value (use function)", N);
           end if;
  
!       elsif Kind = E_Entry or else Kind = E_Entry_Family then
           if Returns_Object then
              if Is_Protected_Type (Scope (Scope_Id)) then
                 Error_Msg_N ("entry body cannot return value", N);
--- 2544,2560 ----
  
        --  Check that functions return objects, and other things do not
  
!       if Kind in E_Function | E_Generic_Function then
           if not Returns_Object then
              Error_Msg_N ("missing expression in return from function", N);
           end if;
  
!       elsif Kind in E_Procedure | E_Generic_Procedure then
           if Returns_Object then
              Error_Msg_N ("procedure cannot return value (use function)", N);
           end if;
  
!       elsif Kind in E_Entry | E_Entry_Family then
           if Returns_Object then
              if Is_Protected_Type (Scope (Scope_Id)) then
                 Error_Msg_N ("entry body cannot return value", N);
*************** package body Sem_Ch6 is
*** 2153,2162 ****
           Error_Msg_N ("illegal context for return statement", N);
        end if;
  
!       if Ekind_In (Kind, E_Function, E_Generic_Function) then
           Analyze_Function_Return (N);
  
!       elsif Ekind_In (Kind, E_Procedure, E_Generic_Procedure) then
           Set_Return_Present (Scope_Id);
        end if;
  
--- 2588,2597 ----
           Error_Msg_N ("illegal context for return statement", N);
        end if;
  
!       if Kind in E_Function | E_Generic_Function then
           Analyze_Function_Return (N);
  
!       elsif Kind in E_Procedure | E_Generic_Procedure then
           Set_Return_Present (Scope_Id);
        end if;
  
*************** package body Sem_Ch6 is
*** 2196,2203 ****
  
        if Result_Definition (N) /= Error then
           if Nkind (Result_Definition (N)) = N_Access_Definition then
-             Check_SPARK_05_Restriction
-               ("access result is not allowed", Result_Definition (N));
  
              --  Ada 2005 (AI-254): Handle anonymous access to subprograms
  
--- 2631,2636 ----
*************** package body Sem_Ch6 is
*** 2227,2240 ****
              Typ := Entity (Result_Definition (N));
              Set_Etype (Designator, Typ);
  
-             --  Unconstrained array as result is not allowed in SPARK
- 
-             if Is_Array_Type (Typ) and then not Is_Constrained (Typ) then
-                Check_SPARK_05_Restriction
-                  ("returning an unconstrained array is not allowed",
-                   Result_Definition (N));
-             end if;
- 
              --  Ada 2005 (AI-231): Ensure proper usage of null exclusion
  
              Null_Exclusion_Static_Checks (N);
--- 2660,2665 ----
*************** package body Sem_Ch6 is
*** 2331,2338 ****
                       null;
  
                    elsif Nkind (Parent (N)) = N_Subprogram_Body
!                     or else Nkind_In (Parent (Parent (N)), N_Accept_Statement,
!                                                            N_Entry_Body)
                    then
                       Error_Msg_NE
                         ("invalid use of untagged incomplete type&",
--- 2756,2763 ----
                       null;
  
                    elsif Nkind (Parent (N)) = N_Subprogram_Body
!                     or else Nkind (Parent (Parent (N))) in
!                               N_Accept_Statement | N_Entry_Body
                    then
                       Error_Msg_NE
                         ("invalid use of untagged incomplete type&",
*************** package body Sem_Ch6 is
*** 2421,2426 ****
--- 2846,2854 ----
        Loc       : constant Source_Ptr := Sloc (N);
        Prev_Id   : constant Entity_Id  := Current_Entity_In_Scope (Body_Id);
  
+       Body_Nod         : Node_Id := Empty;
+       Minimum_Acc_Objs : List_Id := No_List;
+ 
        Conformant : Boolean;
        Desig_View : Entity_Id := Empty;
        Exch_Views : Elist_Id  := No_Elist;
*************** package body Sem_Ch6 is
*** 2459,2464 ****
--- 2887,2901 ----
        --  because it is specified directly on the body, or because it is
        --  inherited from the enclosing subprogram or package.
  
+       function Build_Internal_Protected_Declaration
+         (N : Node_Id) return Entity_Id;
+       --  A subprogram body without a previous spec that appears in a protected
+       --  body must be expanded separately to create a subprogram declaration
+       --  for it, in order to resolve internal calls to it from other protected
+       --  operations.
+       --
+       --  Possibly factor this with Exp_Dist.Copy_Specification ???
+ 
        procedure Build_Subprogram_Declaration;
        --  Create a matching subprogram declaration for subprogram body N
  
*************** package body Sem_Ch6 is
*** 2496,2501 ****
--- 2933,2945 ----
        --  limited views with the non-limited ones. Return the list of changes
        --  to be used to undo the transformation.
  
+       procedure Generate_Minimum_Accessibility
+         (Extra_Access : Entity_Id;
+          Related_Form : Entity_Id := Empty);
+       --  Generate a minimum accessibility object for a given extra
+       --  accessibility formal (Extra_Access) and its related formal if it
+       --  exists.
+ 
        function Is_Private_Concurrent_Primitive
          (Subp_Id : Entity_Id) return Boolean;
        --  Determine whether subprogram Subp_Id is a primitive of a concurrent
*************** package body Sem_Ch6 is
*** 2507,2512 ****
--- 2951,2962 ----
        --  the not-yet-frozen types referenced by the simple return statement
        --  of the function as formally frozen.
  
+       procedure Move_Pragmas (From : Node_Id; To : Node_Id);
+       --  Find all suitable source pragmas at the top of subprogram body
+       --  From's declarations and move them after arbitrary node To.
+       --  One exception is pragma SPARK_Mode which is copied rather than moved,
+       --  as it applies to the body too.
+ 
        procedure Restore_Limited_Views (Restore_List : Elist_Id);
        --  Undo the transformation done by Exchange_Limited_Views.
  
*************** package body Sem_Ch6 is
*** 2619,2686 ****
           return SPARK_Mode = On;
        end Body_Has_SPARK_Mode_On;
  
!       ----------------------------------
!       -- Build_Subprogram_Declaration --
!       ----------------------------------
  
!       procedure Build_Subprogram_Declaration is
!          procedure Move_Pragmas (From : Node_Id; To : Node_Id);
!          --  Relocate certain categorization pragmas from the declarative list
!          --  of subprogram body From and insert them after node To. The pragmas
!          --  in question are:
!          --    Ghost
!          --    Volatile_Function
!          --  Also copy pragma SPARK_Mode if present in the declarative list
!          --  of subprogram body From and insert it after node To. This pragma
!          --  should not be moved, as it applies to the body too.
  
!          ------------------
!          -- Move_Pragmas --
!          ------------------
  
!          procedure Move_Pragmas (From : Node_Id; To : Node_Id) is
!             Decl      : Node_Id;
!             Next_Decl : Node_Id;
  
           begin
!             pragma Assert (Nkind (From) = N_Subprogram_Body);
! 
!             --  The destination node must be part of a list, as the pragmas are
!             --  inserted after it.
! 
!             pragma Assert (Is_List_Member (To));
! 
!             --  Inspect the declarations of the subprogram body looking for
!             --  specific pragmas.
! 
!             Decl := First (Declarations (N));
              while Present (Decl) loop
-                Next_Decl := Next (Decl);
- 
                 if Nkind (Decl) = N_Pragma then
!                   if Pragma_Name_Unmapped (Decl) = Name_SPARK_Mode then
!                      Insert_After (To, New_Copy_Tree (Decl));
  
!                   elsif Nam_In (Pragma_Name_Unmapped (Decl),
!                                 Name_Ghost,
!                                 Name_Volatile_Function)
!                   then
!                      Remove (Decl);
!                      Insert_After (To, Decl);
!                   end if;
                 end if;
  
!                Decl := Next_Decl;
              end loop;
!          end Move_Pragmas;
  
           --  Local variables
  
           Decl      : Node_Id;
           Subp_Decl : Node_Id;
  
-       --  Start of processing for Build_Subprogram_Declaration
- 
        begin
           --  Create a matching subprogram spec using the profile of the body.
           --  The structure of the tree is identical, but has new entities for
--- 3069,3197 ----
           return SPARK_Mode = On;
        end Body_Has_SPARK_Mode_On;
  
!       ------------------------------------------
!       -- Build_Internal_Protected_Declaration --
!       ------------------------------------------
  
!       function Build_Internal_Protected_Declaration
!         (N : Node_Id) return Entity_Id
!       is
!          procedure Analyze_Pragmas (From : Node_Id);
!          --  Analyze all pragmas which follow arbitrary node From
  
!          ---------------------
!          -- Analyze_Pragmas --
!          ---------------------
  
!          procedure Analyze_Pragmas (From : Node_Id) is
!             Decl : Node_Id;
  
           begin
!             Decl := Next (From);
              while Present (Decl) loop
                 if Nkind (Decl) = N_Pragma then
!                   Analyze_Pragma (Decl);
  
!                --  No candidate pragmas are available for analysis
! 
!                else
!                   exit;
                 end if;
  
!                Next (Decl);
              end loop;
!          end Analyze_Pragmas;
  
           --  Local variables
  
+          Body_Id  : constant Entity_Id  := Defining_Entity (N);
+          Loc      : constant Source_Ptr := Sloc (N);
+          Decl     : Node_Id;
+          Formal   : Entity_Id;
+          Formals  : List_Id;
+          Spec     : Node_Id;
+          Spec_Id  : Entity_Id;
+ 
+       --  Start of processing for Build_Internal_Protected_Declaration
+ 
+       begin
+          Formal := First_Formal (Body_Id);
+ 
+          --  The protected operation always has at least one formal, namely the
+          --  object itself, but it is only placed in the parameter list if
+          --  expansion is enabled.
+ 
+          if Present (Formal) or else Expander_Active then
+             Formals := Copy_Parameter_List (Body_Id);
+          else
+             Formals := No_List;
+          end if;
+ 
+          Spec_Id :=
+            Make_Defining_Identifier (Sloc (Body_Id),
+              Chars => Chars (Body_Id));
+ 
+          --  Indicate that the entity comes from source, to ensure that cross-
+          --  reference information is properly generated. The body itself is
+          --  rewritten during expansion, and the body entity will not appear in
+          --  calls to the operation.
+ 
+          Set_Comes_From_Source (Spec_Id, True);
+ 
+          if Nkind (Specification (N)) = N_Procedure_Specification then
+             Spec :=
+               Make_Procedure_Specification (Loc,
+                  Defining_Unit_Name       => Spec_Id,
+                  Parameter_Specifications => Formals);
+          else
+             Spec :=
+               Make_Function_Specification (Loc,
+                 Defining_Unit_Name       => Spec_Id,
+                 Parameter_Specifications => Formals,
+                 Result_Definition        =>
+                   New_Occurrence_Of (Etype (Body_Id), Loc));
+          end if;
+ 
+          Decl := Make_Subprogram_Declaration (Loc, Specification => Spec);
+          Set_Corresponding_Body (Decl, Body_Id);
+          Set_Corresponding_Spec (N,    Spec_Id);
+ 
+          Insert_Before (N, Decl);
+ 
+          --  Associate all aspects and pragmas of the body with the spec. This
+          --  ensures that these annotations apply to the initial declaration of
+          --  the subprogram body.
+ 
+          Move_Aspects (From => N, To => Decl);
+          Move_Pragmas (From => N, To => Decl);
+ 
+          Analyze (Decl);
+ 
+          --  The analysis of the spec may generate pragmas which require manual
+          --  analysis. Since the generation of the spec and the relocation of
+          --  the annotations is driven by the expansion of the stand-alone
+          --  body, the pragmas will not be analyzed in a timely manner. Do this
+          --  now.
+ 
+          Analyze_Pragmas (Decl);
+ 
+          --  This subprogram has convention Intrinsic as per RM 6.3.1(10/2)
+          --  ensuring in particular that 'Access is illegal.
+ 
+          Set_Convention     (Spec_Id, Convention_Intrinsic);
+          Set_Has_Completion (Spec_Id);
+ 
+          return Spec_Id;
+       end Build_Internal_Protected_Declaration;
+ 
+       ----------------------------------
+       -- Build_Subprogram_Declaration --
+       ----------------------------------
+ 
+       procedure Build_Subprogram_Declaration is
           Decl      : Node_Id;
           Subp_Decl : Node_Id;
  
        begin
           --  Create a matching subprogram spec using the profile of the body.
           --  The structure of the tree is identical, but has new entities for
*************** package body Sem_Ch6 is
*** 2728,2737 ****
           --  Required to ensure that Expand_Call rewrites calls to this
           --  function by calls to the built procedure.
  
!          if Modify_Tree_For_C
             and then Nkind (Body_Spec) = N_Function_Specification
             and then
!               Rewritten_For_C (Defining_Entity (Specification (Subp_Decl)))
           then
              Set_Rewritten_For_C (Defining_Entity (Body_Spec));
              Set_Corresponding_Procedure (Defining_Entity (Body_Spec),
--- 3239,3248 ----
           --  Required to ensure that Expand_Call rewrites calls to this
           --  function by calls to the built procedure.
  
!          if Transform_Function_Array
             and then Nkind (Body_Spec) = N_Function_Specification
             and then
!              Rewritten_For_C (Defining_Entity (Specification (Subp_Decl)))
           then
              Set_Rewritten_For_C (Defining_Entity (Body_Spec));
              Set_Corresponding_Procedure (Defining_Entity (Body_Spec),
*************** package body Sem_Ch6 is
*** 2807,2828 ****
                             and then
                           Is_Limited_Record (Designated_Type (Etype (Scop)))))
             and then Expander_Active
- 
-            --  Avoid cases with no tasking support
- 
-            and then RTE_Available (RE_Current_Master)
-            and then not Restriction_Active (No_Task_Hierarchy)
           then
!             Decl :=
!               Make_Object_Declaration (Loc,
!                 Defining_Identifier =>
!                   Make_Defining_Identifier (Loc, Name_uMaster),
!                 Constant_Present => True,
!                 Object_Definition =>
!                   New_Occurrence_Of (RTE (RE_Master_Id), Loc),
!                 Expression =>
!                   Make_Explicit_Dereference (Loc,
!                     New_Occurrence_Of (RTE (RE_Current_Master), Loc)));
  
              if Present (Declarations (N)) then
                 Prepend (Decl, Declarations (N));
--- 3318,3325 ----
                             and then
                           Is_Limited_Record (Designated_Type (Etype (Scop)))))
             and then Expander_Active
           then
!             Decl := Build_Master_Declaration (Loc);
  
              if Present (Declarations (N)) then
                 Prepend (Decl, Declarations (N));
*************** package body Sem_Ch6 is
*** 2844,2851 ****
                 --  the environment task is our effective master, so nothing
                 --  to mark.
  
!                if Nkind_In
!                    (Par, N_Task_Body, N_Block_Statement, N_Subprogram_Body)
                 then
                    Set_Is_Task_Master (Par, True);
                    exit;
--- 3341,3348 ----
                 --  the environment task is our effective master, so nothing
                 --  to mark.
  
!                if Nkind (Par)
!                     in N_Task_Body | N_Block_Statement | N_Subprogram_Body
                 then
                    Set_Is_Task_Master (Par, True);
                    exit;
*************** package body Sem_Ch6 is
*** 2953,2959 ****
                    --  To ensure proper coverage when body is inlined, indicate
                    --  whether the subprogram comes from source.
  
!                   Set_Comes_From_Source (Subp, Comes_From_Source (N));
  
                    if Present (First_Formal (Body_Id)) then
                       Plist := Copy_Parameter_List (Body_Id);
--- 3450,3456 ----
                    --  To ensure proper coverage when body is inlined, indicate
                    --  whether the subprogram comes from source.
  
!                   Preserve_Comes_From_Source (Subp, N);
  
                    if Present (First_Formal (Body_Id)) then
                       Plist := Copy_Parameter_List (Body_Id);
*************** package body Sem_Ch6 is
*** 3046,3087 ****
                 Check_Returns (HSS, 'P', Missing_Ret, Id);
              end if;
           end if;
- 
-          --  Special checks in SPARK mode
- 
-          if Nkind (Body_Spec) = N_Function_Specification then
- 
-             --  In SPARK mode, last statement of a function should be a return
- 
-             declare
-                Stat : constant Node_Id := Last_Source_Statement (HSS);
-             begin
-                if Present (Stat)
-                  and then not Nkind_In (Stat, N_Simple_Return_Statement,
-                                               N_Extended_Return_Statement)
-                then
-                   Check_SPARK_05_Restriction
-                     ("last statement in function should be RETURN", Stat);
-                end if;
-             end;
- 
-          --  In SPARK mode, verify that a procedure has no return
- 
-          elsif Nkind (Body_Spec) = N_Procedure_Specification then
-             if Present (Spec_Id) then
-                Id := Spec_Id;
-             else
-                Id := Body_Id;
-             end if;
- 
-             --  Would be nice to point to return statement here, can we
-             --  borrow the Check_Returns procedure here ???
- 
-             if Return_Present (Id) then
-                Check_SPARK_05_Restriction
-                  ("procedure should not have RETURN", N);
-             end if;
-          end if;
        end Check_Missing_Return;
  
        -----------------------
--- 3543,3548 ----
*************** package body Sem_Ch6 is
*** 3234,3240 ****
           --  Do not process subprogram bodies as they already use the non-
           --  limited view of types.
  
!          if not Ekind_In (Subp_Id, E_Function, E_Procedure) then
              return No_Elist;
           end if;
  
--- 3695,3701 ----
           --  Do not process subprogram bodies as they already use the non-
           --  limited view of types.
  
!          if Ekind (Subp_Id) not in E_Function | E_Procedure then
              return No_Elist;
           end if;
  
*************** package body Sem_Ch6 is
*** 3256,3261 ****
--- 3717,3782 ----
           return Result;
        end Exchange_Limited_Views;
  
+       ------------------------------------
+       -- Generate_Minimum_Accessibility --
+       ------------------------------------
+ 
+       procedure Generate_Minimum_Accessibility
+         (Extra_Access : Entity_Id;
+          Related_Form : Entity_Id := Empty)
+       is
+          Loc      : constant Source_Ptr := Sloc (Body_Nod);
+          Form     : Entity_Id;
+          Obj_Node : Node_Id;
+       begin
+          --  When no related formal exists then we are dealing with an
+          --  extra accessibility formal for a function result.
+ 
+          if No (Related_Form) then
+             Form := Extra_Access;
+          else
+             Form := Related_Form;
+          end if;
+ 
+          --  Create the minimum accessibility object
+ 
+          Obj_Node :=
+             Make_Object_Declaration (Loc,
+              Defining_Identifier =>
+                Make_Temporary
+                  (Loc, 'A', Extra_Access),
+              Object_Definition   => New_Occurrence_Of
+                                       (Standard_Natural, Loc),
+              Expression          =>
+                Make_Attribute_Reference (Loc,
+                  Prefix         => New_Occurrence_Of
+                                      (Standard_Natural, Loc),
+                  Attribute_Name => Name_Min,
+                  Expressions    => New_List (
+                    Make_Integer_Literal (Loc,
+                      Scope_Depth (Body_Id)),
+                    New_Occurrence_Of
+                      (Extra_Access, Loc))));
+ 
+          --  Add the new local object to the Minimum_Acc_Obj to
+          --  be later prepended to the subprogram's list of
+          --  declarations after we are sure all expansion is
+          --  done.
+ 
+          if Present (Minimum_Acc_Objs) then
+             Prepend (Obj_Node, Minimum_Acc_Objs);
+          else
+             Minimum_Acc_Objs := New_List (Obj_Node);
+          end if;
+ 
+          --  Register the object and analyze it
+ 
+          Set_Minimum_Accessibility
+            (Form, Defining_Identifier (Obj_Node));
+ 
+          Analyze (Obj_Node);
+       end Generate_Minimum_Accessibility;
+ 
        -------------------------------------
        -- Is_Private_Concurrent_Primitive --
        -------------------------------------
*************** package body Sem_Ch6 is
*** 3337,3347 ****
              if Is_Entity_Name (Node) and then Present (Entity (Node)) then
                 Mask_Type (Etype (Entity (Node)));
  
!                if Ekind_In (Entity (Node), E_Component, E_Discriminant) then
                    Mask_Type (Scope (Entity (Node)));
                 end if;
  
!             elsif Nkind_In (Node, N_Aggregate, N_Null, N_Type_Conversion)
                and then Present (Etype (Node))
              then
                 Mask_Type (Etype (Node));
--- 3858,3868 ----
              if Is_Entity_Name (Node) and then Present (Entity (Node)) then
                 Mask_Type (Etype (Entity (Node)));
  
!                if Ekind (Entity (Node)) in E_Component | E_Discriminant then
                    Mask_Type (Scope (Entity (Node)));
                 end if;
  
!             elsif Nkind (Node) in N_Aggregate | N_Null | N_Type_Conversion
                and then Present (Etype (Node))
              then
                 Mask_Type (Etype (Node));
*************** package body Sem_Ch6 is
*** 3367,3372 ****
--- 3888,3963 ----
           return Result;
        end Mask_Unfrozen_Types;
  
+       ------------------
+       -- Move_Pragmas --
+       ------------------
+ 
+       procedure Move_Pragmas (From : Node_Id; To : Node_Id) is
+          Decl       : Node_Id;
+          Insert_Nod : Node_Id;
+          Next_Decl  : Node_Id;
+ 
+       begin
+          pragma Assert (Nkind (From) = N_Subprogram_Body);
+ 
+          --  The pragmas are moved in an order-preserving fashion
+ 
+          Insert_Nod := To;
+ 
+          --  Inspect the declarations of the subprogram body and relocate all
+          --  candidate pragmas.
+ 
+          Decl := First (Declarations (From));
+          while Present (Decl) loop
+ 
+             --  Preserve the following declaration for iteration purposes, due
+             --  to possible relocation of a pragma.
+ 
+             Next_Decl := Next (Decl);
+ 
+             if Nkind (Decl) = N_Pragma then
+                --  Copy pragma SPARK_Mode if present in the declarative list
+                --  of subprogram body From and insert it after node To. This
+                --  pragma should not be moved, as it applies to the body too.
+ 
+                if Pragma_Name_Unmapped (Decl) = Name_SPARK_Mode then
+                   Insert_After (Insert_Nod, New_Copy_Tree (Decl));
+ 
+                --  Move relevant pragmas to the spec
+ 
+                elsif Pragma_Name_Unmapped (Decl) in Name_Depends
+                                                   | Name_Ghost
+                                                   | Name_Global
+                                                   | Name_Pre
+                                                   | Name_Precondition
+                                                   | Name_Post
+                                                   | Name_Refined_Depends
+                                                   | Name_Refined_Global
+                                                   | Name_Refined_Post
+                                                   | Name_Inline
+                                                   | Name_Pure_Function
+                                                   | Name_Volatile_Function
+                then
+                   Remove (Decl);
+                   Insert_After (Insert_Nod, Decl);
+                   Insert_Nod := Decl;
+                end if;
+ 
+             --  Skip internally generated code
+ 
+             elsif not Comes_From_Source (Decl) then
+                null;
+ 
+             --  No candidate pragmas are available for relocation
+ 
+             else
+                exit;
+             end if;
+ 
+             Decl := Next_Decl;
+          end loop;
+       end Move_Pragmas;
+ 
        ---------------------------
        -- Restore_Limited_Views --
        ---------------------------
*************** package body Sem_Ch6 is
*** 3441,3449 ****
              --  expansion. As a result, we add an exception for this case.
  
              elsif not Present (Overridden_Operation (Spec_Id))
!               and then not (Nam_In (Chars (Spec_Id), Name_Adjust,
!                                                      Name_Finalize,
!                                                      Name_Initialize)
                               and then In_Instance)
              then
                 Error_Msg_NE
--- 4032,4040 ----
              --  expansion. As a result, we add an exception for this case.
  
              elsif not Present (Overridden_Operation (Spec_Id))
!               and then not (Chars (Spec_Id) in Name_Adjust
!                                              | Name_Finalize
!                                              | Name_Initialize
                               and then In_Instance)
              then
                 Error_Msg_NE
*************** package body Sem_Ch6 is
*** 3517,3525 ****
  
        --  Local variables
  
-       Body_Nod         : Node_Id := Empty;
-       Minimum_Acc_Objs : List_Id := No_List;
- 
        Saved_GM   : constant Ghost_Mode_Type := Ghost_Mode;
        Saved_IGR  : constant Node_Id         := Ignored_Ghost_Region;
        Saved_EA   : constant Boolean         := Expander_Active;
--- 4108,4113 ----
*************** package body Sem_Ch6 is
*** 3659,3664 ****
--- 4247,4254 ----
                 --  are legal and can be processed ahead of the body.
                 --  We make two copies of the given spec, one for the new
                 --  declaration, and one for the body.
+                --  ??? This should be conditioned on front-end inlining rather
+                --  than GNATprove_Mode.
  
                 if No (Spec_Id) and then GNATprove_Mode
  
*************** package body Sem_Ch6 is
*** 3699,3709 ****
                    Build_Subprogram_Declaration;
  
                 --  If this is a function that returns a constrained array, and
!                --  we are generating SPARK_For_C, create subprogram declaration
!                --  to simplify subsequent C generation.
  
                 elsif No (Spec_Id)
!                  and then Modify_Tree_For_C
                   and then Nkind (Body_Spec) = N_Function_Specification
                   and then Is_Array_Type (Etype (Body_Id))
                   and then Is_Constrained (Etype (Body_Id))
--- 4289,4299 ----
                    Build_Subprogram_Declaration;
  
                 --  If this is a function that returns a constrained array, and
!                --  Transform_Function_Array is set, create subprogram
!                --  declaration to simplify e.g. subsequent C generation.
  
                 elsif No (Spec_Id)
!                  and then Transform_Function_Array
                   and then Nkind (Body_Spec) = N_Function_Specification
                   and then Is_Array_Type (Etype (Body_Id))
                   and then Is_Constrained (Etype (Body_Id))
*************** package body Sem_Ch6 is
*** 3786,3829 ****
  
        --  Deal with special case of a fully private operation in the body of
        --  the protected type. We must create a declaration for the subprogram,
!       --  in order to attach the protected subprogram that will be used in
!       --  internal calls. We exclude compiler generated bodies from the
!       --  expander since the issue does not arise for those cases.
  
        if No (Spec_Id)
          and then Comes_From_Source (N)
          and then Is_Protected_Type (Current_Scope)
        then
!          Spec_Id := Build_Private_Protected_Declaration (N);
        end if;
  
!       --  If we are generating C and this is a function returning a constrained
!       --  array type for which we must create a procedure with an extra out
!       --  parameter, build and analyze the body now. The procedure declaration
!       --  has already been created. We reuse the source body of the function,
!       --  because in an instance it may contain global references that cannot
!       --  be reanalyzed. The source function itself is not used any further,
!       --  so we mark it as having a completion. If the subprogram is a stub the
!       --  transformation is done later, when the proper body is analyzed.
  
        if Expander_Active
!         and then Modify_Tree_For_C
!         and then Present (Spec_Id)
!         and then Ekind (Spec_Id) = E_Function
          and then Nkind (N) /= N_Subprogram_Body_Stub
-         and then Rewritten_For_C (Spec_Id)
        then
!          Set_Has_Completion (Spec_Id);
  
!          Rewrite (N, Build_Procedure_Body_Form (Spec_Id, N));
!          Analyze (N);
  
!          --  The entity for the created procedure must remain invisible, so it
!          --  does not participate in resolution of subsequent references to the
!          --  function.
  
!          Set_Is_Immediately_Visible (Corresponding_Spec (N), False);
!          goto Leave;
        end if;
  
        --  If a separate spec is present, then deal with freezing issues
--- 4376,4444 ----
  
        --  Deal with special case of a fully private operation in the body of
        --  the protected type. We must create a declaration for the subprogram,
!       --  in order to attach the subprogram that will be used in internal
!       --  calls. We exclude compiler generated bodies from the expander since
!       --  the issue does not arise for those cases.
  
        if No (Spec_Id)
          and then Comes_From_Source (N)
          and then Is_Protected_Type (Current_Scope)
        then
!          Spec_Id := Build_Internal_Protected_Declaration (N);
        end if;
  
!       --  If Transform_Function_Array is set and this is a function returning a
!       --  constrained array type for which we must create a procedure with an
!       --  extra out parameter, build and analyze the body now. The procedure
!       --  declaration has already been created. We reuse the source body of the
!       --  function, because in an instance it may contain global references
!       --  that cannot be reanalyzed. The source function itself is not used any
!       --  further, so we mark it as having a completion. If the subprogram is a
!       --  stub the transformation is done later, when the proper body is
!       --  analyzed.
  
        if Expander_Active
!         and then Transform_Function_Array
          and then Nkind (N) /= N_Subprogram_Body_Stub
        then
!          declare
!             S         : constant Entity_Id :=
!                           (if Present (Spec_Id)
!                            then Spec_Id
!                            else Defining_Unit_Name (Specification (N)));
!             Proc_Body : Node_Id;
  
!          begin
!             if Ekind (S) = E_Function and then Rewritten_For_C (S) then
!                Set_Has_Completion (S);
!                Proc_Body := Build_Procedure_Body_Form (S, N);
  
!                if Present (Spec_Id) then
!                   Rewrite (N, Proc_Body);
!                   Analyze (N);
  
!                   --  The entity for the created procedure must remain
!                   --  invisible, so it does not participate in resolution of
!                   --  subsequent references to the function.
! 
!                   Set_Is_Immediately_Visible (Corresponding_Spec (N), False);
! 
!                --  If we do not have a separate spec for N, build one and
!                --  insert the new body right after.
! 
!                else
!                   Rewrite (N,
!                     Make_Subprogram_Declaration (Loc,
!                       Specification => Relocate_Node (Specification (N))));
!                   Analyze (N);
!                   Insert_After_And_Analyze (N, Proc_Body);
!                   Set_Is_Immediately_Visible
!                     (Corresponding_Spec (Proc_Body), False);
!                end if;
! 
!                goto Leave;
!             end if;
!          end;
        end if;
  
        --  If a separate spec is present, then deal with freezing issues
*************** package body Sem_Ch6 is
*** 3839,3846 ****
           --  the freeze actions that include the bodies. In particular, extra
           --  formals for accessibility or for return-in-place may need to be
           --  generated. Freeze nodes, if any, are inserted before the current
!          --  body. These freeze actions are also needed in ASIS mode and in
!          --  Compile_Only mode to enable the proper back-end type annotations.
           --  They are necessary in any case to ensure proper elaboration order
           --  in gigi.
  
--- 4454,4461 ----
           --  the freeze actions that include the bodies. In particular, extra
           --  formals for accessibility or for return-in-place may need to be
           --  generated. Freeze nodes, if any, are inserted before the current
!          --  body. These freeze actions are also needed in Compile_Only mode to
!          --  enable the proper back-end type annotations.
           --  They are necessary in any case to ensure proper elaboration order
           --  in gigi.
  
*************** package body Sem_Ch6 is
*** 3849,3855 ****
             and then not Has_Completion (Spec_Id)
             and then Serious_Errors_Detected = 0
             and then (Expander_Active
-                       or else ASIS_Mode
                        or else Operating_Mode = Check_Semantics
                        or else Is_Ignored_Ghost_Entity (Spec_Id))
           then
--- 4464,4469 ----
*************** package body Sem_Ch6 is
*** 4040,4048 ****
  
              --  Within an instance, add local renaming declarations so that
              --  gdb can retrieve the values of actuals more easily. This is
!             --  only relevant if generating code (and indeed we definitely
!             --  do not want these definitions -gnatc mode, because that would
!             --  confuse ASIS).
  
              if Is_Generic_Instance (Spec_Id)
                and then Is_Wrapper_Package (Current_Scope)
--- 4654,4660 ----
  
              --  Within an instance, add local renaming declarations so that
              --  gdb can retrieve the values of actuals more easily. This is
!             --  only relevant if generating code.
  
              if Is_Generic_Instance (Spec_Id)
                and then Is_Wrapper_Package (Current_Scope)
*************** package body Sem_Ch6 is
*** 4251,4263 ****
  
        --  Handle inlining
  
!       --  Note: Normally we don't do any inlining if expansion is off, since
!       --  we won't generate code in any case. An exception arises in GNATprove
!       --  mode where we want to expand some calls in place, even with expansion
!       --  disabled, since the inlining eases formal verification.
! 
!       if not GNATprove_Mode
!         and then Expander_Active
          and then Serious_Errors_Detected = 0
          and then Present (Spec_Id)
          and then Has_Pragma_Inline (Spec_Id)
--- 4863,4869 ----
  
        --  Handle inlining
  
!       if Expander_Active
          and then Serious_Errors_Detected = 0
          and then Present (Spec_Id)
          and then Has_Pragma_Inline (Spec_Id)
*************** package body Sem_Ch6 is
*** 4265,4272 ****
           --  Legacy implementation (relying on front-end inlining)
  
           if not Back_End_Inlining then
!             if (Has_Pragma_Inline_Always (Spec_Id)
!                  and then not Opt.Disable_FE_Inline_Always)
                or else (Front_End_Inlining
                          and then not Opt.Disable_FE_Inline)
              then
--- 4871,4877 ----
           --  Legacy implementation (relying on front-end inlining)
  
           if not Back_End_Inlining then
!             if Has_Pragma_Inline_Always (Spec_Id)
                or else (Front_End_Inlining
                          and then not Opt.Disable_FE_Inline)
              then
*************** package body Sem_Ch6 is
*** 4405,4411 ****
  
        --  This method is used to supplement our "small integer model" for
        --  accessibility-check generation (for more information see
!       --  Dynamic_Accessibility_Level).
  
        --  Because we allow accessibility values greater than our expected value
        --  passing along the same extra accessibility formal as an actual
--- 5010,5016 ----
  
        --  This method is used to supplement our "small integer model" for
        --  accessibility-check generation (for more information see
!       --  Accessibility_Level).
  
        --  Because we allow accessibility values greater than our expected value
        --  passing along the same extra accessibility formal as an actual
*************** package body Sem_Ch6 is
*** 4454,4503 ****
                    then
                       --  Generate the minimum accessibility level object
  
!                      --    A60b : integer := integer'min(2, paramL);
  
!                      declare
!                         Loc      : constant Source_Ptr := Sloc (Body_Nod);
!                         Obj_Node : constant Node_Id :=
!                            Make_Object_Declaration (Loc,
!                             Defining_Identifier =>
!                               Make_Temporary
!                                 (Loc, 'A', Extra_Accessibility (Form)),
!                             Object_Definition   => New_Occurrence_Of
!                                                      (Standard_Integer, Loc),
!                             Expression          =>
!                               Make_Attribute_Reference (Loc,
!                                 Prefix         => New_Occurrence_Of
!                                                     (Standard_Integer, Loc),
!                                 Attribute_Name => Name_Min,
!                                 Expressions    => New_List (
!                                   Make_Integer_Literal (Loc,
!                                     Object_Access_Level (Form)),
!                                   New_Occurrence_Of
!                                     (Extra_Accessibility (Form), Loc))));
!                      begin
!                         --  Add the new local object to the Minimum_Acc_Obj to
!                         --  be later prepended to the subprogram's list of
!                         --  declarations after we are sure all expansion is
!                         --  done.
  
!                         if Present (Minimum_Acc_Objs) then
!                            Prepend (Obj_Node, Minimum_Acc_Objs);
!                         else
!                            Minimum_Acc_Objs := New_List (Obj_Node);
!                         end if;
  
!                         --  Register the object and analyze it
  
!                         Set_Minimum_Accessibility
!                           (Form, Defining_Identifier (Obj_Node));
  
!                         Analyze (Obj_Node);
!                      end;
!                   end if;
  
!                   Next_Formal (Form);
!                end loop;
              end if;
           end;
        end if;
--- 5059,5091 ----
                    then
                       --  Generate the minimum accessibility level object
  
!                      --    A60b : constant natural := natural'min(1, paramL);
  
!                      Generate_Minimum_Accessibility
!                        (Extra_Accessibility (Form), Form);
!                   end if;
  
!                   Next_Formal (Form);
!                end loop;
  
!                --  Generate the minimum accessibility level object for the
!                --  function's Extra_Accessibility_Of_Result.
  
!                --    A31b : constant natural := natural'min (2, funcL);
  
!                if Ekind (Body_Id) = E_Function
!                  and then Present (Extra_Accessibility_Of_Result (Body_Id))
!                then
!                   Generate_Minimum_Accessibility
!                     (Extra_Accessibility_Of_Result (Body_Id));
  
!                   --  Replace the Extra_Accessibility_Of_Result with the new
!                   --  minimum accessibility object.
! 
!                   Set_Extra_Accessibility_Of_Result
!                     (Body_Id, Minimum_Accessibility
!                                 (Extra_Accessibility_Of_Result (Body_Id)));
!                end if;
              end if;
           end;
        end if;
*************** package body Sem_Ch6 is
*** 4585,4590 ****
--- 5173,5187 ----
           elsif Nkind (Parent (Parent (Spec_Id))) = N_Subprogram_Body_Stub then
              null;
  
+          --  SPARK_Mode Off could complete no SPARK_Mode in a generic, either
+          --  as specified in source code, or because SPARK_Mode On is ignored
+          --  in an instance where the context is SPARK_Mode Off/Auto.
+ 
+          elsif Get_SPARK_Mode_From_Annotation (SPARK_Pragma (Body_Id)) = Off
+            and then (Is_Generic_Unit (Spec_Id) or else In_Instance)
+          then
+             null;
+ 
           else
              Error_Msg_Sloc := Sloc (SPARK_Pragma (Body_Id));
              Error_Msg_N ("incorrect application of SPARK_Mode #", N);
*************** package body Sem_Ch6 is
*** 4742,4750 ****
           --  Push_xxx_Error_Label to find the first real statement.
  
           Stm := First (Statements (HSS));
!          while Nkind_In (Stm, N_Call_Marker, N_Label)
!            or else Nkind (Stm) in N_Push_xxx_Label
!          loop
              Next (Stm);
           end loop;
  
--- 5339,5345 ----
           --  Push_xxx_Error_Label to find the first real statement.
  
           Stm := First (Statements (HSS));
!          while Nkind (Stm) in N_Call_Marker | N_Label | N_Push_xxx_Label loop
              Next (Stm);
           end loop;
  
*************** package body Sem_Ch6 is
*** 4898,4905 ****
        if Nkind (Specification (N)) = N_Procedure_Specification
          and then Null_Present (Specification (N))
        then
-          Check_SPARK_05_Restriction ("null procedure is not allowed", N);
- 
           --  Null procedures are allowed in protected types, following the
           --  recent AI12-0147.
  
--- 5493,5498 ----
*************** package body Sem_Ch6 is
*** 5163,5177 ****
     --  Start of processing for Analyze_Subprogram_Specification
  
     begin
-       --  User-defined operator is not allowed in SPARK, except as a renaming
- 
-       if Nkind (Defining_Unit_Name (N)) = N_Defining_Operator_Symbol
-         and then Nkind (Parent (N)) /= N_Subprogram_Renaming_Declaration
-       then
-          Check_SPARK_05_Restriction
-            ("user-defined operator is not allowed", N);
-       end if;
- 
        --  Proceed with analysis. Do not emit a cross-reference entry if the
        --  specification comes from an expression function, because it may be
        --  the completion of a previous declaration. If it is not, the cross-
--- 5756,5761 ----
*************** package body Sem_Ch6 is
*** 5311,5324 ****
           --  In case of primitives associated with abstract interface types
           --  the check is applied later (see Analyze_Subprogram_Declaration).
  
!          if not Nkind_In (Original_Node (Parent (N)),
!                           N_Abstract_Subprogram_Declaration,
!                           N_Formal_Abstract_Subprogram_Declaration,
!                           N_Subprogram_Renaming_Declaration)
           then
!             if Is_Abstract_Type (Etype (Designator))
!               and then not Is_Interface (Etype (Designator))
!             then
                 Error_Msg_N
                   ("function that returns abstract type must be abstract", N);
  
--- 5895,5906 ----
           --  In case of primitives associated with abstract interface types
           --  the check is applied later (see Analyze_Subprogram_Declaration).
  
!          if Nkind (Original_Node (Parent (N))) not in
!               N_Abstract_Subprogram_Declaration        |
!               N_Formal_Abstract_Subprogram_Declaration |
!               N_Subprogram_Renaming_Declaration
           then
!             if Is_Abstract_Type (Etype (Designator)) then
                 Error_Msg_N
                   ("function that returns abstract type must be abstract", N);
  
*************** package body Sem_Ch6 is
*** 5365,5374 ****
        --  in the message, and also provides the location for posting the
        --  message in the absence of a specified Err_Loc location.
  
!       function Conventions_Match
!         (Id1 : Entity_Id;
!          Id2 : Entity_Id) return Boolean;
!       --  Determine whether the conventions of arbitrary entities Id1 and Id2
        --  match.
  
        -----------------------
--- 5947,5957 ----
        --  in the message, and also provides the location for posting the
        --  message in the absence of a specified Err_Loc location.
  
!       function Conventions_Match (Id1, Id2 : Entity_Id) return Boolean;
!       --  True if the conventions of entities Id1 and Id2 match.
! 
!       function Null_Exclusions_Match (F1, F2 : Entity_Id) return Boolean;
!       --  True if the null exclusions of two formals of anonymous access type
        --  match.
  
        -----------------------
*************** package body Sem_Ch6 is
*** 5444,5454 ****
           --  the only way these may receive a convention is if they inherit
           --  the convention of a related subprogram.
  
!          if Ekind_In (Id1, E_Anonymous_Access_Subprogram_Type,
!                            E_Subprogram_Type)
                or else
!             Ekind_In (Id2, E_Anonymous_Access_Subprogram_Type,
!                            E_Subprogram_Type)
           then
              return True;
  
--- 6027,6037 ----
           --  the only way these may receive a convention is if they inherit
           --  the convention of a related subprogram.
  
!          if Ekind (Id1) in E_Anonymous_Access_Subprogram_Type
!                          | E_Subprogram_Type
                or else
!             Ekind (Id2) in E_Anonymous_Access_Subprogram_Type
!                          | E_Subprogram_Type
           then
              return True;
  
*************** package body Sem_Ch6 is
*** 5459,5471 ****
           end if;
        end Conventions_Match;
  
        --  Local Variables
  
        Old_Type           : constant Entity_Id := Etype (Old_Id);
        New_Type           : constant Entity_Id := Etype (New_Id);
        Old_Formal         : Entity_Id;
        New_Formal         : Entity_Id;
-       Access_Types_Match : Boolean;
        Old_Formal_Base    : Entity_Id;
        New_Formal_Base    : Entity_Id;
  
--- 6042,6097 ----
           end if;
        end Conventions_Match;
  
+       ---------------------------
+       -- Null_Exclusions_Match --
+       ---------------------------
+ 
+       function Null_Exclusions_Match (F1, F2 : Entity_Id) return Boolean is
+       begin
+          if not Is_Anonymous_Access_Type (Etype (F1))
+            or else not Is_Anonymous_Access_Type (Etype (F2))
+          then
+             return True;
+          end if;
+ 
+          --  AI12-0289-1: Case of controlling access parameter; False if the
+          --  partial view is untagged, the full view is tagged, and no explicit
+          --  "not null". Note that at this point, we're processing the package
+          --  body, so private/full types have been swapped. The Sloc test below
+          --  is to detect the (legal) case where F1 comes after the full type
+          --  declaration. This part is disabled pre-2005, because "not null" is
+          --  not allowed on those language versions.
+ 
+          if Ada_Version >= Ada_2005
+            and then Is_Controlling_Formal (F1)
+            and then not Null_Exclusion_Present (Parent (F1))
+            and then not Null_Exclusion_Present (Parent (F2))
+          then
+             declare
+                D : constant Entity_Id := Directly_Designated_Type (Etype (F1));
+                Partial_View_Of_Desig : constant Entity_Id :=
+                  Incomplete_Or_Partial_View (D);
+             begin
+                return No (Partial_View_Of_Desig)
+                  or else Is_Tagged_Type (Partial_View_Of_Desig)
+                  or else Sloc (D) < Sloc (F1);
+             end;
+ 
+          --  Not a controlling parameter, or one or both views have an explicit
+          --  "not null".
+ 
+          else
+             return Null_Exclusion_Present (Parent (F1)) =
+                    Null_Exclusion_Present (Parent (F2));
+          end if;
+       end Null_Exclusions_Match;
+ 
        --  Local Variables
  
        Old_Type           : constant Entity_Id := Etype (Old_Id);
        New_Type           : constant Entity_Id := Etype (New_Id);
        Old_Formal         : Entity_Id;
        New_Formal         : Entity_Id;
        Old_Formal_Base    : Entity_Id;
        New_Formal_Base    : Entity_Id;
  
*************** package body Sem_Ch6 is
*** 5557,5578 ****
                 Error_Msg_Name_2 :=
                   Name_Ada + Convention_Id'Pos (Convention (New_Id));
                 Conformance_Error ("\prior declaration for% has convention %!");
  
              else
                 Conformance_Error ("\calling conventions do not match!");
              end if;
  
!             return;
! 
!          elsif Is_Formal_Subprogram (Old_Id)
!            or else Is_Formal_Subprogram (New_Id)
!            or else (Is_Subprogram (New_Id)
!                      and then Present (Alias (New_Id))
!                      and then Is_Formal_Subprogram (Alias (New_Id)))
!          then
!             Conformance_Error
!               ("\formal subprograms are not subtype conformant "
!                & "(RM 6.3.1 (17/3))");
           end if;
        end if;
  
--- 6183,6201 ----
                 Error_Msg_Name_2 :=
                   Name_Ada + Convention_Id'Pos (Convention (New_Id));
                 Conformance_Error ("\prior declaration for% has convention %!");
+                return;
  
              else
                 Conformance_Error ("\calling conventions do not match!");
+                return;
              end if;
+          else
+             Check_Formal_Subprogram_Conformance
+               (New_Id, Old_Id, Err_Loc, Errmsg, Conforms);
  
!             if not Conforms then
!                return;
!             end if;
           end if;
        end if;
  
*************** package body Sem_Ch6 is
*** 5632,5656 ****
  
              --  Null exclusion must match
  
!             if Null_Exclusion_Present (Parent (Old_Formal))
!                  /=
!                Null_Exclusion_Present (Parent (New_Formal))
!             then
!                --  Only give error if both come from source. This should be
!                --  investigated some time, since it should not be needed ???
! 
!                if Comes_From_Source (Old_Formal)
!                     and then
!                   Comes_From_Source (New_Formal)
!                then
!                   Conformance_Error
!                     ("\null exclusion for& does not match", New_Formal);
  
!                   --  Mark error posted on the new formal to avoid duplicated
!                   --  complaint about types not matching.
  
!                   Set_Error_Posted (New_Formal);
!                end if;
              end if;
           end if;
  
--- 6255,6268 ----
  
              --  Null exclusion must match
  
!             if not Null_Exclusions_Match (Old_Formal, New_Formal) then
!                Conformance_Error
!                  ("\null exclusion for& does not match", New_Formal);
  
!                --  Mark error posted on the new formal to avoid duplicated
!                --  complaint about types not matching.
  
!                Set_Error_Posted (New_Formal);
              end if;
           end if;
  
*************** package body Sem_Ch6 is
*** 5674,5730 ****
              New_Formal_Base := Get_Instance_Of (New_Formal_Base);
           end if;
  
-          Access_Types_Match := Ada_Version >= Ada_2005
- 
-            --  Ensure that this rule is only applied when New_Id is a
-            --  renaming of Old_Id.
- 
-            and then Nkind (Parent (Parent (New_Id))) =
-                       N_Subprogram_Renaming_Declaration
-            and then Nkind (Name (Parent (Parent (New_Id)))) in N_Has_Entity
-            and then Present (Entity (Name (Parent (Parent (New_Id)))))
-            and then Entity (Name (Parent (Parent (New_Id)))) = Old_Id
- 
-            --  Now handle the allowed access-type case
- 
-            and then Is_Access_Type (Old_Formal_Base)
-            and then Is_Access_Type (New_Formal_Base)
- 
-            --  The type kinds must match. The only exception occurs with
-            --  multiple generics of the form:
- 
-            --   generic                    generic
-            --     type F is private;         type A is private;
-            --     type F_Ptr is access F;    type A_Ptr is access A;
-            --     with proc F_P (X : F_Ptr); with proc A_P (X : A_Ptr);
-            --   package F_Pack is ...      package A_Pack is
-            --                                package F_Inst is
-            --                                  new F_Pack (A, A_Ptr, A_P);
- 
-            --  When checking for conformance between the parameters of A_P
-            --  and F_P, the type kinds of F_Ptr and A_Ptr will not match
-            --  because the compiler has transformed A_Ptr into a subtype of
-            --  F_Ptr. We catch this case in the code below.
- 
-            and then (Ekind (Old_Formal_Base) = Ekind (New_Formal_Base)
-                       or else
-                         (Is_Generic_Type (Old_Formal_Base)
-                           and then Is_Generic_Type (New_Formal_Base)
-                           and then Is_Internal (New_Formal_Base)
-                           and then Etype (Etype (New_Formal_Base)) =
-                                                           Old_Formal_Base))
-                and then Directly_Designated_Type (Old_Formal_Base) =
-                                     Directly_Designated_Type (New_Formal_Base)
-            and then ((Is_Itype (Old_Formal_Base)
-                        and then (Can_Never_Be_Null (Old_Formal_Base)
-                                   or else Is_Access_Constant
-                                             (Old_Formal_Base)))
-                      or else
-                       (Is_Itype (New_Formal_Base)
-                         and then (Can_Never_Be_Null (New_Formal_Base)
-                                    or else Is_Access_Constant
-                                              (New_Formal_Base))));
- 
           --  Types must always match. In the visible part of an instance,
           --  usual overloading rules for dispatching operations apply, and
           --  we check base types (not the actual subtypes).
--- 6286,6291 ----
*************** package body Sem_Ch6 is
*** 5737,5743 ****
                        T2       => Base_Type (Etype (New_Formal)),
                        Ctype    => Ctype,
                        Get_Inst => Get_Inst)
-                and then not Access_Types_Match
              then
                 Conformance_Error ("\type of & does not match!", New_Formal);
                 return;
--- 6298,6303 ----
*************** package body Sem_Ch6 is
*** 5748,5754 ****
                        T2       => New_Formal_Base,
                        Ctype    => Ctype,
                        Get_Inst => Get_Inst)
-            and then not Access_Types_Match
           then
              --  Don't give error message if old type is Any_Type. This test
              --  avoids some cascaded errors, e.g. in case of a bad spec.
--- 6308,6313 ----
*************** package body Sem_Ch6 is
*** 5780,5786 ****
  
           if Ctype >= Mode_Conformant then
              if Parameter_Mode (Old_Formal) /= Parameter_Mode (New_Formal) then
!                if not Ekind_In (New_Id, E_Function, E_Procedure)
                   or else not Is_Primitive_Wrapper (New_Id)
                 then
                    Conformance_Error ("\mode of & does not match!", New_Formal);
--- 6339,6345 ----
  
           if Ctype >= Mode_Conformant then
              if Parameter_Mode (Old_Formal) /= Parameter_Mode (New_Formal) then
!                if Ekind (New_Id) not in E_Function | E_Procedure
                   or else not Is_Primitive_Wrapper (New_Id)
                 then
                    Conformance_Error ("\mode of & does not match!", New_Formal);
*************** package body Sem_Ch6 is
*** 5791,5797 ****
                    begin
                       if Is_Protected_Type (Corresponding_Concurrent_Type (T))
                       then
!                         Error_Msg_PT (New_Id, Ultimate_Alias (Old_Id));
                       else
                          Conformance_Error
                            ("\mode of & does not match!", New_Formal);
--- 6350,6360 ----
                    begin
                       if Is_Protected_Type (Corresponding_Concurrent_Type (T))
                       then
!                         Conforms := False;
! 
!                         if Errmsg then
!                            Error_Msg_PT (New_Id, Ultimate_Alias (Old_Id));
!                         end if;
                       else
                          Conformance_Error
                            ("\mode of & does not match!", New_Formal);
*************** package body Sem_Ch6 is
*** 5801,5810 ****
  
                 return;
  
!             --  Part of mode conformance for access types is having the same
!             --  constant modifier.
! 
!             elsif Access_Types_Match
                and then Is_Access_Constant (Old_Formal_Base) /=
                         Is_Access_Constant (New_Formal_Base)
              then
--- 6364,6371 ----
  
                 return;
  
!             elsif Is_Access_Type (Old_Formal_Base)
!               and then Is_Access_Type (New_Formal_Base)
                and then Is_Access_Constant (Old_Formal_Base) /=
                         Is_Access_Constant (New_Formal_Base)
              then
*************** package body Sem_Ch6 is
*** 5826,5833 ****
              --  (access formals in the bodies aren't marked Can_Never_Be_Null).
  
              if Ada_Version >= Ada_2005
!               and then Ekind (Etype (Old_Formal)) = E_Anonymous_Access_Type
!               and then Ekind (Etype (New_Formal)) = E_Anonymous_Access_Type
                and then
                  ((Can_Never_Be_Null (Etype (Old_Formal)) /=
                    Can_Never_Be_Null (Etype (New_Formal))
--- 6387,6394 ----
              --  (access formals in the bodies aren't marked Can_Never_Be_Null).
  
              if Ada_Version >= Ada_2005
!               and then Is_Anonymous_Access_Type (Etype (Old_Formal))
!               and then Is_Anonymous_Access_Type (Etype (New_Formal))
                and then
                  ((Can_Never_Be_Null (Etype (Old_Formal)) /=
                    Can_Never_Be_Null (Etype (New_Formal))
*************** package body Sem_Ch6 is
*** 6345,6350 ****
--- 6906,6961 ----
        end if;
     end Check_Discriminant_Conformance;
  
+    -----------------------------------------
+    -- Check_Formal_Subprogram_Conformance --
+    -----------------------------------------
+ 
+    procedure Check_Formal_Subprogram_Conformance
+      (New_Id   : Entity_Id;
+       Old_Id   : Entity_Id;
+       Err_Loc  : Node_Id;
+       Errmsg   : Boolean;
+       Conforms : out Boolean)
+    is
+       N : Node_Id;
+    begin
+       Conforms := True;
+ 
+       if Is_Formal_Subprogram (Old_Id)
+         or else Is_Formal_Subprogram (New_Id)
+         or else (Is_Subprogram (New_Id)
+                   and then Present (Alias (New_Id))
+                   and then Is_Formal_Subprogram (Alias (New_Id)))
+       then
+          if Present (Err_Loc) then
+             N := Err_Loc;
+          else
+             N := New_Id;
+          end if;
+ 
+          Conforms := False;
+ 
+          if Errmsg then
+             Error_Msg_Sloc := Sloc (Old_Id);
+             Error_Msg_N ("not subtype conformant with declaration#!", N);
+             Error_Msg_NE
+               ("\formal subprograms are not subtype conformant "
+                & "(RM 6.3.1 (17/3))", N, New_Id);
+          end if;
+       end if;
+    end Check_Formal_Subprogram_Conformance;
+ 
+    procedure Check_Formal_Subprogram_Conformance
+      (New_Id  : Entity_Id;
+       Old_Id  : Entity_Id;
+       Err_Loc : Node_Id := Empty)
+    is
+       Ignore : Boolean;
+    begin
+       Check_Formal_Subprogram_Conformance
+         (New_Id, Old_Id, Err_Loc, True, Ignore);
+    end Check_Formal_Subprogram_Conformance;
+ 
     ----------------------------
     -- Check_Fully_Conformant --
     ----------------------------
*************** package body Sem_Ch6 is
*** 6497,6507 ****
           Decl := Unit_Declaration_Node (Subp);
        end if;
  
!       if Nkind_In (Decl, N_Subprogram_Body,
!                          N_Subprogram_Body_Stub,
!                          N_Subprogram_Declaration,
!                          N_Abstract_Subprogram_Declaration,
!                          N_Subprogram_Renaming_Declaration)
        then
           Spec := Specification (Decl);
  
--- 7108,7118 ----
           Decl := Unit_Declaration_Node (Subp);
        end if;
  
!       if Nkind (Decl) in N_Subprogram_Body
!                        | N_Subprogram_Body_Stub
!                        | N_Subprogram_Declaration
!                        | N_Abstract_Subprogram_Declaration
!                        | N_Subprogram_Renaming_Declaration
        then
           Spec := Specification (Decl);
  
*************** package body Sem_Ch6 is
*** 6512,6517 ****
--- 7123,7141 ----
           return;
        end if;
  
+       --  An overriding indication is illegal on a subprogram declared
+       --  in a protected body, where there is no operation to override.
+ 
+       if (Must_Override (Spec) or else Must_Not_Override (Spec))
+         and then Is_List_Member (Decl)
+         and then Present (Parent (List_Containing (Decl)))
+         and then Nkind (Parent (List_Containing (Decl))) = N_Protected_Body
+       then
+          Error_Msg_N
+            ("illegal overriding indication in protected body", Decl);
+          return;
+       end if;
+ 
        --  The overriding operation is type conformant with the overridden one,
        --  but the names of the formals are not required to match. If the names
        --  appear permuted in the overriding operation, this is a possible
*************** package body Sem_Ch6 is
*** 6584,6592 ****
        if Present (Overridden_Subp)
          and then (not Is_Hidden (Overridden_Subp)
                     or else
!                      (Nam_In (Chars (Overridden_Subp), Name_Initialize,
!                                                        Name_Adjust,
!                                                        Name_Finalize)
                        and then Present (Alias (Overridden_Subp))
                        and then (not Is_Hidden (Alias (Overridden_Subp))
                                   or else In_Instance)))
--- 7208,7216 ----
        if Present (Overridden_Subp)
          and then (not Is_Hidden (Overridden_Subp)
                     or else
!                      (Chars (Overridden_Subp) in Name_Initialize
!                                                | Name_Adjust
!                                                | Name_Finalize
                        and then Present (Alias (Overridden_Subp))
                        and then (not Is_Hidden (Alias (Overridden_Subp))
                                   or else In_Instance)))
*************** package body Sem_Ch6 is
*** 6888,6899 ****
           --  Don't count exception junk
  
             or else
!              (Nkind_In (Last_Stm, N_Goto_Statement,
!                                    N_Label,
!                                    N_Object_Declaration)
                 and then Exception_Junk (Last_Stm))
!            or else Nkind (Last_Stm) in N_Push_xxx_Label
!            or else Nkind (Last_Stm) in N_Pop_xxx_Label
  
           --  Inserted code, such as finalization calls, is irrelevant: we only
           --  need to check original source.
--- 7512,7521 ----
           --  Don't count exception junk
  
             or else
!              (Nkind (Last_Stm) in
!                 N_Goto_Statement | N_Label | N_Object_Declaration
                 and then Exception_Junk (Last_Stm))
!            or else Nkind (Last_Stm) in N_Push_xxx_Label | N_Pop_xxx_Label
  
           --  Inserted code, such as finalization calls, is irrelevant: we only
           --  need to check original source.
*************** package body Sem_Ch6 is
*** 7321,7327 ****
        function Is_Valid_Formal (F : Entity_Id) return Boolean is
        begin
           return
!            Ekind_In (F, E_In_Out_Parameter, E_Out_Parameter)
               or else
                 (Nkind (Parameter_Type (Parent (F))) = N_Access_Definition
                   and then not Constant_Present (Parameter_Type (Parent (F))));
--- 7943,7949 ----
        function Is_Valid_Formal (F : Entity_Id) return Boolean is
        begin
           return
!            Ekind (F) in E_In_Out_Parameter | E_Out_Parameter
               or else
                 (Nkind (Parameter_Type (Parent (F))) = N_Access_Definition
                   and then not Constant_Present (Parameter_Type (Parent (F))));
*************** package body Sem_Ch6 is
*** 7398,7407 ****
           --  rest of the parameters.
  
           if not In_Scope then
!             Prim_Param := Next (Prim_Param);
           end if;
  
!          Iface_Param := Next (Iface_Param);
           while Present (Iface_Param) and then Present (Prim_Param) loop
              Iface_Id  := Defining_Identifier (Iface_Param);
              Iface_Typ := Find_Parameter_Type (Iface_Param);
--- 8020,8029 ----
           --  rest of the parameters.
  
           if not In_Scope then
!             Next (Prim_Param);
           end if;
  
!          Next (Iface_Param);
           while Present (Iface_Param) and then Present (Prim_Param) loop
              Iface_Id  := Defining_Identifier (Iface_Param);
              Iface_Typ := Find_Parameter_Type (Iface_Param);
*************** package body Sem_Ch6 is
*** 7558,7564 ****
              --  Entries and procedures can override abstract or null interface
              --  procedures.
  
!             elsif Ekind_In (Def_Id, E_Entry, E_Procedure)
                and then Ekind (Subp) = E_Procedure
                and then Matches_Prefixed_View_Profile
                           (Parameter_Specifications (Parent (Def_Id)),
--- 8180,8186 ----
              --  Entries and procedures can override abstract or null interface
              --  procedures.
  
!             elsif Ekind (Def_Id) in E_Entry | E_Procedure
                and then Ekind (Subp) = E_Procedure
                and then Matches_Prefixed_View_Profile
                           (Parameter_Specifications (Parent (Def_Id)),
*************** package body Sem_Ch6 is
*** 7578,7584 ****
                    --  override, the first parameter of the overridden routine
                    --  must be of mode "out", "in out", or access-to-variable.
  
!                   if Ekind_In (Candidate, E_Entry, E_Procedure)
                      and then Is_Protected_Type (Typ)
                      and then not Is_Valid_Formal (Formal)
                    then
--- 8200,8206 ----
                    --  override, the first parameter of the overridden routine
                    --  must be of mode "out", "in out", or access-to-variable.
  
!                   if Ekind (Candidate) in E_Entry | E_Procedure
                      and then Is_Protected_Type (Typ)
                      and then not Is_Valid_Formal (Formal)
                    then
*************** package body Sem_Ch6 is
*** 7984,7994 ****
        --  or both could be access to protected subprograms.
  
        Are_Anonymous_Access_To_Subprogram_Types :=
!         Ekind_In (Type_1, E_Anonymous_Access_Subprogram_Type,
!                           E_Anonymous_Access_Protected_Subprogram_Type)
            and then
!         Ekind_In (Type_2, E_Anonymous_Access_Subprogram_Type,
!                           E_Anonymous_Access_Protected_Subprogram_Type);
  
        --  Test anonymous access type case. For this case, static subtype
        --  matching is required for mode conformance (RM 6.3.1(15)). We check
--- 8606,8616 ----
        --  or both could be access to protected subprograms.
  
        Are_Anonymous_Access_To_Subprogram_Types :=
!         Ekind (Type_1) in E_Anonymous_Access_Subprogram_Type
!                         | E_Anonymous_Access_Protected_Subprogram_Type
            and then
!         Ekind (Type_2) in E_Anonymous_Access_Subprogram_Type
!                         | E_Anonymous_Access_Protected_Subprogram_Type;
  
        --  Test anonymous access type case. For this case, static subtype
        --  matching is required for mode conformance (RM 6.3.1(15)). We check
*************** package body Sem_Ch6 is
*** 8401,8406 ****
--- 9023,9031 ----
                   Add_Extra_Formal
                     (E, RTE (RE_Master_Id),
                      E, BIP_Formal_Suffix (BIP_Task_Master));
+ 
+                Set_Has_Master_Entity (E);
+ 
                 Discard :=
                   Add_Extra_Formal
                     (E, RTE (RE_Activation_Chain_Access),
*************** package body Sem_Ch6 is
*** 8447,8454 ****
                 --  to this are inherited operations from a parent type in which
                 --  case the derived type acts as their parent.
  
!                if Nkind_In (Subp_Decl, N_Function_Specification,
!                                        N_Procedure_Specification)
                 then
                    Subp_Decl := Parent (Subp_Decl);
                 end if;
--- 9072,9079 ----
                 --  to this are inherited operations from a parent type in which
                 --  case the derived type acts as their parent.
  
!                if Nkind (Subp_Decl) in N_Function_Specification
!                                      | N_Procedure_Specification
                 then
                    Subp_Decl := Parent (Subp_Decl);
                 end if;
*************** package body Sem_Ch6 is
*** 8662,8668 ****
  
              --  Warn unless genuine overloading. Do not emit warning on
              --  hiding predefined operators in Standard (these are either an
!             --  (artifact of our implicit declarations, or simple noise) but
              --  keep warning on a operator defined on a local subtype, because
              --  of the real danger that different operators may be applied in
              --  various parts of the program.
--- 9287,9293 ----
  
              --  Warn unless genuine overloading. Do not emit warning on
              --  hiding predefined operators in Standard (these are either an
!             --  artifact of our implicit declarations, or simple noise) but
              --  keep warning on a operator defined on a local subtype, because
              --  of the real danger that different operators may be applied in
              --  various parts of the program.
*************** package body Sem_Ch6 is
*** 8842,8851 ****
                ("equality operator appears too late (Ada 2012)?y?", Eq_Op);
           end if;
  
!       --  No error detected
  
        else
!          return;
        end if;
     end Check_Untagged_Equality;
  
--- 9467,9493 ----
                ("equality operator appears too late (Ada 2012)?y?", Eq_Op);
           end if;
  
!       --  Finally check for AI12-0352: declaration of a user-defined primitive
!       --  equality operation for a record type T is illegal if it occurs after
!       --  a type has been derived from T.
  
        else
!          Obj_Decl := Next (Parent (Typ));
! 
!          while Present (Obj_Decl) and then Obj_Decl /= Decl loop
!             if Nkind (Obj_Decl) = N_Full_Type_Declaration
!               and then Etype (Defining_Identifier (Obj_Decl)) = Typ
!             then
!                Error_Msg_N
!                  ("equality operator cannot appear after derivation", Eq_Op);
!                Error_Msg_NE
!                  ("an equality operator for& cannot be declared after "
!                   & "this point??",
!                   Obj_Decl, Typ);
!             end if;
! 
!             Next (Obj_Decl);
!          end loop;
        end if;
     end Check_Untagged_Equality;
  
*************** package body Sem_Ch6 is
*** 8974,8981 ****
                    --  conformant with it. That can occur in cases where an
                    --  actual type causes unrelated homographs in the instance.
  
!                   if Nkind_In (N, N_Subprogram_Body,
!                                   N_Subprogram_Renaming_Declaration)
                      and then Present (Homonym (E))
                      and then not Fully_Conformant (Designator, E)
                    then
--- 9616,9623 ----
                    --  conformant with it. That can occur in cases where an
                    --  actual type causes unrelated homographs in the instance.
  
!                   if Nkind (N) in N_Subprogram_Body
!                                 | N_Subprogram_Renaming_Declaration
                      and then Present (Homonym (E))
                      and then not Fully_Conformant (Designator, E)
                    then
*************** package body Sem_Ch6 is
*** 9239,9244 ****
--- 9881,9909 ----
           end if;
        end FCO;
  
+       function User_Defined_Numeric_Literal_Mismatch return Boolean;
+       --  Usually literals with the same value like 12345 and 12_345
+       --  or 123.0 and 123.00 conform, but not if they are
+       --  user-defined literals.
+ 
+       -------------------------------------------
+       -- User_Defined_Numeric_Literal_Mismatch --
+       -------------------------------------------
+ 
+       function User_Defined_Numeric_Literal_Mismatch return Boolean is
+          E1_Is_User_Defined : constant Boolean :=
+            Nkind (Given_E1) not in N_Integer_Literal | N_Real_Literal;
+          E2_Is_User_Defined : constant Boolean :=
+            Nkind (Given_E2) not in N_Integer_Literal | N_Real_Literal;
+ 
+       begin
+          pragma Assert (E1_Is_User_Defined = E2_Is_User_Defined);
+ 
+          return E1_Is_User_Defined and then
+            not String_Equal (String_From_Numeric_Literal (E1),
+                              String_From_Numeric_Literal (E2));
+       end User_Defined_Numeric_Literal_Mismatch;
+ 
        --  Local variables
  
        Result : Boolean;
*************** package body Sem_Ch6 is
*** 9303,9309 ****
                 Error_Msg_Sloc :=
                   Text_Ptr'Max (Sloc (Entity (E1)), Sloc (Entity (E2)));
                 Error_Msg_NE
!                  ("Meaning of& differs because of declaration#", E1, E2);
              end if;
  
              return Result;
--- 9968,9974 ----
                 Error_Msg_Sloc :=
                   Text_Ptr'Max (Sloc (Entity (E1)), Sloc (Entity (E2)));
                 Error_Msg_NE
!                  ("meaning of& differs because of declaration#", E1, E2);
              end if;
  
              return Result;
*************** package body Sem_Ch6 is
*** 9500,9506 ****
                   FCL (Expressions (E1), Expressions (E2));
  
              when N_Integer_Literal =>
!                return (Intval (E1) = Intval (E2));
  
              when N_Null =>
                 return True;
--- 10165,10172 ----
                   FCL (Expressions (E1), Expressions (E2));
  
              when N_Integer_Literal =>
!                return (Intval (E1) = Intval (E2))
!                  and then not User_Defined_Numeric_Literal_Mismatch;
  
              when N_Null =>
                 return True;
*************** package body Sem_Ch6 is
*** 9586,9592 ****
                   FCE (High_Bound (E1), High_Bound (E2));
  
              when N_Real_Literal =>
!                return (Realval (E1) = Realval (E2));
  
              when N_Selected_Component =>
                 return
--- 10252,10259 ----
                   FCE (High_Bound (E1), High_Bound (E2));
  
              when N_Real_Literal =>
!                return (Realval (E1) = Realval (E2))
!                  and then not User_Defined_Numeric_Literal_Mismatch;
  
              when N_Selected_Component =>
                 return
*************** package body Sem_Ch6 is
*** 10403,10412 ****
                       H := Homonym (H);
                       exit when not Present (H) or else Scope (H) /= Scope (S);
  
!                      if Nkind_In
!                        (Parent (H),
!                         N_Private_Extension_Declaration,
!                         N_Private_Type_Declaration)
                         and then Defining_Identifier (Parent (H)) = Partial_View
                       then
                          return True;
--- 11070,11078 ----
                       H := Homonym (H);
                       exit when not Present (H) or else Scope (H) /= Scope (S);
  
!                      if Nkind (Parent (H)) in
!                         N_Private_Extension_Declaration |
!                         N_Private_Type_Declaration
                         and then Defining_Identifier (Parent (H)) = Partial_View
                       then
                          return True;
*************** package body Sem_Ch6 is
*** 10461,10468 ****
                               ("\move subprogram to the visible part"
                                & " (RM 3.9.3(10))", S);
  
!                         --  AI05-0073: extend this test to the case of a
!                         --  function with a controlling access result.
  
                          elsif Ekind (Etype (S)) = E_Anonymous_Access_Type
                            and then Is_Tagged_Type (Designated_Type (Etype (S)))
--- 11127,11135 ----
                               ("\move subprogram to the visible part"
                                & " (RM 3.9.3(10))", S);
  
!                         --  Ada 2012 (AI05-0073): Extend this check to the case
!                         --  of a function whose result subtype is defined by an
!                         --  access_definition designating specific tagged type.
  
                          elsif Ekind (Etype (S)) = E_Anonymous_Access_Type
                            and then Is_Tagged_Type (Designated_Type (Etype (S)))
*************** package body Sem_Ch6 is
*** 11217,11222 ****
--- 11884,11901 ----
                       Inherit_Subprogram_Contract (E, S);
                    end if;
  
+                   --  When a dispatching operation overrides an inherited
+                   --  subprogram, it shall be subtype conformant with the
+                   --  inherited subprogram (RM 3.9.2 (10.2)).
+ 
+                   if Comes_From_Source (E)
+                     and then Is_Dispatching_Operation (E)
+                     and then Find_Dispatching_Type (S)
+                                = Find_Dispatching_Type (E)
+                   then
+                      Check_Subtype_Conformant (E, S);
+                   end if;
+ 
                    if Comes_From_Source (E) then
                       Check_Overriding_Indicator (E, S, Is_Primitive => False);
  
*************** package body Sem_Ch6 is
*** 11531,11544 ****
  
           Check_Ghost_Overriding (S, Overridden_Subp);
  
-          --  Overloading is not allowed in SPARK, except for operators
- 
-          if Nkind (S) /= N_Defining_Operator_Symbol then
-             Error_Msg_Sloc := Sloc (Homonym (S));
-             Check_SPARK_05_Restriction
-               ("overloading not allowed with entity#", S);
-          end if;
- 
           --  If S is a derived operation for an untagged type then by
           --  definition it's not a dispatching operation (even if the parent
           --  operation was dispatching), so Check_Dispatching_Operation is not
--- 12210,12215 ----
*************** package body Sem_Ch6 is
*** 11703,11711 ****
                      and then not Is_Generic_Type (Formal_Type)
                      and then not Is_Class_Wide_Type (Formal_Type)
                    then
!                      if not Nkind_In
!                               (Parent (T), N_Access_Function_Definition,
!                                            N_Access_Procedure_Definition)
                       then
                          Append_Elmt (Current_Scope,
                            Private_Dependents (Base_Type (Formal_Type)));
--- 12374,12382 ----
                      and then not Is_Generic_Type (Formal_Type)
                      and then not Is_Class_Wide_Type (Formal_Type)
                    then
!                      if Nkind (Parent (T)) not in
!                           N_Access_Function_Definition |
!                           N_Access_Procedure_Definition
                       then
                          Append_Elmt (Current_Scope,
                            Private_Dependents (Base_Type (Formal_Type)));
*************** package body Sem_Ch6 is
*** 11722,11729 ****
                       end if;
                    end if;
  
!                elsif not Nkind_In (Parent (T), N_Access_Function_Definition,
!                                                N_Access_Procedure_Definition)
                 then
                    --  AI05-0151: Tagged incomplete types are allowed in all
                    --  formal parts. Untagged incomplete types are not allowed
--- 12393,12400 ----
                       end if;
                    end if;
  
!                elsif Nkind (Parent (T)) not in N_Access_Function_Definition
!                                              | N_Access_Procedure_Definition
                 then
                    --  AI05-0151: Tagged incomplete types are allowed in all
                    --  formal parts. Untagged incomplete types are not allowed
*************** package body Sem_Ch6 is
*** 11750,11758 ****
                       then
                          null;
  
!                      elsif Nkind_In (Context, N_Accept_Statement,
!                                               N_Accept_Alternative,
!                                               N_Entry_Body)
                         or else (Nkind (Context) = N_Subprogram_Body
                                   and then Comes_From_Source (Context))
                       then
--- 12421,12429 ----
                       then
                          null;
  
!                      elsif Nkind (Context) in N_Accept_Statement
!                                             | N_Accept_Alternative
!                                             | N_Entry_Body
                         or else (Nkind (Context) = N_Subprogram_Body
                                   and then Comes_From_Source (Context))
                       then
*************** package body Sem_Ch6 is
*** 11870,11878 ****
           Default := Expression (Param_Spec);
  
           if Present (Default) then
-             Check_SPARK_05_Restriction
-               ("default expression is not allowed", Default);
- 
              if Out_Present (Param_Spec) then
                 Error_Msg_N
                   ("default initialization only allowed for IN parameters",
--- 12541,12546 ----
*************** package body Sem_Ch6 is
*** 11933,11944 ****
           --  these are not standard Ada legality rules.
  
           if SPARK_Mode = On then
!             if Ekind_In (Scope (Formal), E_Function, E_Generic_Function) then
  
                 --  A function cannot have a parameter of mode IN OUT or OUT
                 --  (SPARK RM 6.1).
  
!                if Ekind_In (Formal, E_In_Out_Parameter, E_Out_Parameter) then
                    Error_Msg_N
                      ("function cannot have parameter of mode `OUT` or "
                       & "`IN OUT`", Formal);
--- 12601,12612 ----
           --  these are not standard Ada legality rules.
  
           if SPARK_Mode = On then
!             if Ekind (Scope (Formal)) in E_Function | E_Generic_Function then
  
                 --  A function cannot have a parameter of mode IN OUT or OUT
                 --  (SPARK RM 6.1).
  
!                if Ekind (Formal) in E_In_Out_Parameter | E_Out_Parameter then
                    Error_Msg_N
                      ("function cannot have parameter of mode `OUT` or "
                       & "`IN OUT`", Formal);
*************** package body Sem_Ch6 is
*** 11946,11952 ****
  
              --  A procedure cannot have an effectively volatile formal
              --  parameter of mode IN because it behaves as a constant
!             --  (SPARK RM 7.1.3(6)). -- ??? maybe 7.1.3(4)
  
              elsif Ekind (Scope (Formal)) = E_Procedure
                and then Ekind (Formal) = E_In_Parameter
--- 12614,12620 ----
  
              --  A procedure cannot have an effectively volatile formal
              --  parameter of mode IN because it behaves as a constant
!             --  (SPARK RM 7.1.3(4)).
  
              elsif Ekind (Scope (Formal)) = E_Procedure
                and then Ekind (Formal) = E_In_Parameter
*************** package body Sem_Ch6 is
*** 11957,11962 ****
--- 12625,12651 ----
              end if;
           end if;
  
+          --  Deal with aspects on formal parameters. Only Unreferenced is
+          --  supported for the time being.
+ 
+          if Has_Aspects (Param_Spec) then
+             declare
+                Aspect : Node_Id := First (Aspect_Specifications (Param_Spec));
+             begin
+                while Present (Aspect) loop
+                   if Chars (Identifier (Aspect)) = Name_Unreferenced then
+                      Set_Has_Pragma_Unreferenced (Formal);
+                   else
+                      Error_Msg_NE
+                        ("unsupported aspect& on parameter",
+                         Aspect, Identifier (Aspect));
+                   end if;
+ 
+                   Next (Aspect);
+                end loop;
+             end;
+          end if;
+ 
        <<Continue>>
           Next (Param_Spec);
        end loop;
*************** package body Sem_Ch6 is
*** 12255,12267 ****
        --  point of the call.
  
        if Out_Present (Spec) then
!          if Ekind_In (Id, E_Entry, E_Entry_Family)
             or else Is_Subprogram_Or_Generic_Subprogram (Id)
           then
              Set_Has_Out_Or_In_Out_Parameter (Id, True);
           end if;
  
!          if Ekind_In (Id, E_Function, E_Generic_Function) then
  
              --  [IN] OUT parameters allowed for functions in Ada 2012
  
--- 12944,12956 ----
        --  point of the call.
  
        if Out_Present (Spec) then
!          if Is_Entry (Id)
             or else Is_Subprogram_Or_Generic_Subprogram (Id)
           then
              Set_Has_Out_Or_In_Out_Parameter (Id, True);
           end if;
  
!          if Ekind (Id) in E_Function | E_Generic_Function then
  
              --  [IN] OUT parameters allowed for functions in Ada 2012
  
*************** package body Sem_Ch6 is
*** 12443,12454 ****
        --  Verify that user-defined operators have proper number of arguments
        --  First case of operators which can only be unary
  
!       if Nam_In (Id, Name_Op_Not, Name_Op_Abs) then
           N_OK := (N = 1);
  
        --  Case of operators which can be unary or binary
  
!       elsif Nam_In (Id, Name_Op_Add, Name_Op_Subtract) then
           N_OK := (N in 1 .. 2);
  
        --  All other operators can only be binary
--- 13132,13143 ----
        --  Verify that user-defined operators have proper number of arguments
        --  First case of operators which can only be unary
  
!       if Id in Name_Op_Not | Name_Op_Abs then
           N_OK := (N = 1);
  
        --  Case of operators which can be unary or binary
  
!       elsif Id in Name_Op_Add | Name_Op_Subtract then
           N_OK := (N in 1 .. 2);
  
        --  All other operators can only be binary
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch6.ads gcc-11.1.0/gcc/ada/sem_ch6.ads
*** gcc-10.3.0/gcc/ada/sem_ch6.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch6.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Ch6 is
*** 69,74 ****
--- 69,84 ----
     --  the source location of the partial view, which may be different than
     --  Prev in the case of private types.
  
+    procedure Check_Formal_Subprogram_Conformance
+      (New_Id  : Entity_Id;
+       Old_Id  : Entity_Id;
+       Err_Loc : Node_Id := Empty);
+    --  Check RM 6.3.1(17/3): the profile of a generic formal subprogram is not
+    --  subtype conformant with any other profile and post an error message if
+    --  either New_Id or Old_Id denotes a formal subprogram, with the flag being
+    --  placed on the Err_Loc node if it is specified, and on New_Id if not. See
+    --  also spec of Check_Fully_Conformant below for New_Id and Old_Id usage.
+ 
     procedure Check_Fully_Conformant
       (New_Id  : Entity_Id;
        Old_Id  : Entity_Id;
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch7.adb gcc-11.1.0/gcc/ada/sem_ch7.adb
*** gcc-10.3.0/gcc/ada/sem_ch7.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch7.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Exp_Dist;  use Exp_Dist;
*** 40,45 ****
--- 40,46 ----
  with Exp_Dbug;  use Exp_Dbug;
  with Freeze;    use Freeze;
  with Ghost;     use Ghost;
+ with GNAT_CUDA; use GNAT_CUDA;
  with Lib;       use Lib;
  with Lib.Xref;  use Lib.Xref;
  with Namet;     use Namet;
*************** with Nmake;     use Nmake;
*** 47,53 ****
  with Nlists;    use Nlists;
  with Opt;       use Opt;
  with Output;    use Output;
- with Restrict;  use Restrict;
  with Rtsfind;   use Rtsfind;
  with Sem;       use Sem;
  with Sem_Aux;   use Sem_Aux;
--- 48,53 ----
*************** package body Sem_Ch7 is
*** 463,491 ****
  
                 --  Exceptions, objects and renamings do not need to be public
                 --  if they are not followed by a construct which can reference
!                --  and export them. Likewise for subprograms but we work harder
                 --  for them to see whether they are referenced on an individual
                 --  basis by looking into the table of referenced subprograms.
!                --  But we cannot say anything for entities declared in nested
!                --  instances because instantiations are not done yet so the
!                --  bodies are not visible and could contain references to them.
!                elsif Nkind_In (Decl, N_Exception_Declaration,
!                                      N_Object_Declaration,
!                                      N_Object_Renaming_Declaration,
!                                      N_Subprogram_Declaration,
!                                      N_Subprogram_Renaming_Declaration)
                 then
                    Decl_Id := Defining_Entity (Decl);
  
!                   if not In_Nested_Instance
                      and then not Is_Imported (Decl_Id)
                      and then not Is_Exported (Decl_Id)
                      and then No (Interface_Name (Decl_Id))
!                     and then
!                       ((Nkind (Decl) /= N_Subprogram_Declaration
!                          and then not Has_Referencer_Of_Non_Subprograms)
!                         or else (Nkind (Decl) = N_Subprogram_Declaration
!                                   and then not Subprogram_Table.Get (Decl_Id)))
                    then
                       Set_Is_Public (Decl_Id, False);
                    end if;
--- 463,506 ----
  
                 --  Exceptions, objects and renamings do not need to be public
                 --  if they are not followed by a construct which can reference
!                --  and export them.
! 
!                elsif Nkind (Decl) in N_Exception_Declaration
!                                    | N_Object_Declaration
!                                    | N_Object_Renaming_Declaration
!                then
!                   Decl_Id := Defining_Entity (Decl);
! 
!                   if not In_Nested_Instance
!                     and then not Is_Imported (Decl_Id)
!                     and then not Is_Exported (Decl_Id)
!                     and then No (Interface_Name (Decl_Id))
!                     and then not Has_Referencer_Of_Non_Subprograms
!                   then
!                      Set_Is_Public (Decl_Id, False);
!                   end if;
! 
!                --  Likewise for subprograms and renamings, but we work harder
                 --  for them to see whether they are referenced on an individual
                 --  basis by looking into the table of referenced subprograms.
! 
!                elsif Nkind (Decl) in N_Subprogram_Declaration
!                                    | N_Subprogram_Renaming_Declaration
                 then
                    Decl_Id := Defining_Entity (Decl);
  
!                   --  We cannot say anything for subprograms declared in nested
!                   --  instances because instantiations are not done yet so the
!                   --  bodies are not visible and could contain references to
!                   --  them, except if we still have no subprograms at all which
!                   --  are referenced by an inlined body.
! 
!                   if (not In_Nested_Instance
!                        or else not Subprogram_Table.Get_First)
                      and then not Is_Imported (Decl_Id)
                      and then not Is_Exported (Decl_Id)
                      and then No (Interface_Name (Decl_Id))
!                     and then not Subprogram_Table.Get (Decl_Id)
                    then
                       Set_Is_Public (Decl_Id, False);
                    end if;
*************** package body Sem_Ch7 is
*** 956,961 ****
--- 971,985 ----
                   ("\value Off was set for SPARK_Mode on & #", N, Spec_Id);
              end if;
  
+          --  SPARK_Mode Off could complete no SPARK_Mode in a generic, either
+          --  as specified in source code, or because SPARK_Mode On is ignored
+          --  in an instance where the context is SPARK_Mode Off/Auto.
+ 
+          elsif Get_SPARK_Mode_From_Annotation (SPARK_Pragma (Body_Id)) = Off
+            and then (Is_Generic_Unit (Spec_Id) or else In_Instance)
+          then
+             null;
+ 
           else
              Error_Msg_Sloc := Sloc (SPARK_Pragma (Body_Id));
              Error_Msg_N ("incorrect application of SPARK_Mode#", N);
*************** package body Sem_Ch7 is
*** 976,981 ****
--- 1000,1012 ----
           Analyze_List (Declarations (N));
        end if;
  
+       --  If procedures marked with CUDA_Global have been defined within N, we
+       --  need to register them with the CUDA runtime at program startup. This
+       --  requires multiple declarations and function calls which need to be
+       --  appended to N's declarations.
+ 
+       Build_And_Insert_CUDA_Initialization (N);
+ 
        HSS := Handled_Statement_Sequence (N);
  
        if Present (HSS) then
*************** package body Sem_Ch7 is
*** 1073,1081 ****
        --        unit, especially subprograms.
  
        --  This is done only for top-level library packages or child units as
!       --  the algorithm does a top-down traversal of the package body.
  
!       if (Scope (Spec_Id) = Standard_Standard or else Is_Child_Unit (Spec_Id))
          and then not Is_Generic_Unit (Spec_Id)
        then
           Hide_Public_Entities (Declarations (N));
--- 1104,1116 ----
        --        unit, especially subprograms.
  
        --  This is done only for top-level library packages or child units as
!       --  the algorithm does a top-down traversal of the package body. This is
!       --  also done for instances because instantiations are still pending by
!       --  the time the enclosing package body is analyzed.
  
!       if (Scope (Spec_Id) = Standard_Standard
!            or else Is_Child_Unit (Spec_Id)
!            or else Is_Generic_Instance (Spec_Id))
          and then not Is_Generic_Unit (Spec_Id)
        then
           Hide_Public_Entities (Declarations (N));
*************** package body Sem_Ch7 is
*** 1262,1271 ****
        --  private_with_clauses, and remove them at the end of the nested
        --  package.
  
-       procedure Check_One_Tagged_Type_Or_Extension_At_Most;
-       --  Issue an error in SPARK mode if a package specification contains
-       --  more than one tagged type or type extension.
- 
        procedure Clear_Constants (Id : Entity_Id; FE : Entity_Id);
        --  Clears constant indications (Never_Set_In_Source, Constant_Value, and
        --  Is_True_Constant) on all variables that are entities of Id, and on
--- 1297,1302 ----
*************** package body Sem_Ch7 is
*** 1292,1349 ****
        --  private part rather than being done in Sem_Ch12.Install_Parent
        --  (which is where the parents' visible declarations are installed).
  
-       ------------------------------------------------
-       -- Check_One_Tagged_Type_Or_Extension_At_Most --
-       ------------------------------------------------
- 
-       procedure Check_One_Tagged_Type_Or_Extension_At_Most is
-          Previous : Node_Id;
- 
-          procedure Check_Decls (Decls : List_Id);
-          --  Check that either Previous is Empty and Decls does not contain
-          --  more than one tagged type or type extension, or Previous is
-          --  already set and Decls contains no tagged type or type extension.
- 
-          -----------------
-          -- Check_Decls --
-          -----------------
- 
-          procedure Check_Decls (Decls : List_Id) is
-             Decl : Node_Id;
- 
-          begin
-             Decl := First (Decls);
-             while Present (Decl) loop
-                if Nkind (Decl) = N_Full_Type_Declaration
-                  and then Is_Tagged_Type (Defining_Identifier (Decl))
-                then
-                   if No (Previous) then
-                      Previous := Decl;
- 
-                   else
-                      Error_Msg_Sloc := Sloc (Previous);
-                      Check_SPARK_05_Restriction
-                        ("at most one tagged type or type extension allowed",
-                         "\\ previous declaration#",
-                         Decl);
-                   end if;
-                end if;
- 
-                Next (Decl);
-             end loop;
-          end Check_Decls;
- 
-       --  Start of processing for Check_One_Tagged_Type_Or_Extension_At_Most
- 
-       begin
-          Previous := Empty;
-          Check_Decls (Vis_Decls);
- 
-          if Present (Priv_Decls) then
-             Check_Decls (Priv_Decls);
-          end if;
-       end Check_One_Tagged_Type_Or_Extension_At_Most;
- 
        ---------------------
        -- Clear_Constants --
        ---------------------
--- 1323,1328 ----
*************** package body Sem_Ch7 is
*** 1399,1406 ****
           then
              Generate_Reference (Id, Scope (Id), 'k', False);
  
!          elsif not Nkind_In (Unit (Cunit (Main_Unit)), N_Subprogram_Body,
!                                                        N_Subunit)
           then
              --  If current unit is an ancestor of main unit, generate a
              --  reference to its own parent.
--- 1378,1385 ----
           then
              Generate_Reference (Id, Scope (Id), 'k', False);
  
!          elsif Nkind (Unit (Cunit (Main_Unit))) not in
!                  N_Subprogram_Body | N_Subunit
           then
              --  If current unit is an ancestor of main unit, generate a
              --  reference to its own parent.
*************** package body Sem_Ch7 is
*** 1466,1473 ****
              --  prevents cascaded errors when routines defined only for type
              --  entities are called with non-type entities.
  
!             if Nkind_In (Decl, N_Incomplete_Type_Declaration,
!                                N_Private_Type_Declaration)
                and then Is_Type (Defining_Identifier (Decl))
                and then Has_Discriminants (Defining_Identifier (Decl))
                and then Present (Full_View (Defining_Identifier (Decl)))
--- 1445,1452 ----
              --  prevents cascaded errors when routines defined only for type
              --  entities are called with non-type entities.
  
!             if Nkind (Decl) in N_Incomplete_Type_Declaration
!                              | N_Private_Type_Declaration
                and then Is_Type (Defining_Identifier (Decl))
                and then Has_Discriminants (Defining_Identifier (Decl))
                and then Present (Full_View (Defining_Identifier (Decl)))
*************** package body Sem_Ch7 is
*** 1501,1508 ****
           while Present (Gen_Par) and then Is_Child_Unit (Gen_Par) loop
              Inst_Node := Get_Unit_Instantiation_Node (Inst_Par);
  
!             if Nkind_In (Inst_Node, N_Package_Instantiation,
!                                     N_Formal_Package_Declaration)
                and then Nkind (Name (Inst_Node)) = N_Expanded_Name
              then
                 Inst_Par := Entity (Prefix (Name (Inst_Node)));
--- 1480,1487 ----
           while Present (Gen_Par) and then Is_Child_Unit (Gen_Par) loop
              Inst_Node := Get_Unit_Instantiation_Node (Inst_Par);
  
!             if Nkind (Inst_Node) in
!                  N_Package_Instantiation | N_Formal_Package_Declaration
                and then Nkind (Name (Inst_Node)) = N_Expanded_Name
              then
                 Inst_Par := Entity (Prefix (Name (Inst_Node)));
*************** package body Sem_Ch7 is
*** 1880,1890 ****
           Clear_Constants (Id, First_Private_Entity (Id));
        end if;
  
-       --  Issue an error in SPARK mode if a package specification contains
-       --  more than one tagged type or type extension.
- 
-       Check_One_Tagged_Type_Or_Extension_At_Most;
- 
        --  Output relevant information as to why the package requires a body.
        --  Do not consider generated packages as this exposes internal symbols
        --  and leads to confusing messages.
--- 1859,1864 ----
*************** package body Sem_Ch7 is
*** 2428,2434 ****
        --  defined in the associated package, subject to at least one Part_Of
        --  constituent.
  
!       if Ekind_In (P, E_Generic_Package, E_Package) then
           declare
              States     : constant Elist_Id := Abstract_States (P);
              State_Elmt : Elmt_Id;
--- 2402,2408 ----
        --  defined in the associated package, subject to at least one Part_Of
        --  constituent.
  
!       if Is_Package_Or_Generic_Package (P) then
           declare
              States     : constant Elist_Id := Abstract_States (P);
              State_Elmt : Elmt_Id;
*************** package body Sem_Ch7 is
*** 2674,2680 ****
        --  implicit completion at some point.
  
        elsif (Is_Overloadable (Id)
!               and then not Ekind_In (Id, E_Enumeration_Literal, E_Operator)
                and then not Is_Abstract_Subprogram (Id)
                and then not Has_Completion (Id)
                and then Comes_From_Source (Parent (Id)))
--- 2648,2654 ----
        --  implicit completion at some point.
  
        elsif (Is_Overloadable (Id)
!               and then Ekind (Id) not in E_Enumeration_Literal | E_Operator
                and then not Is_Abstract_Subprogram (Id)
                and then not Has_Completion (Id)
                and then Comes_From_Source (Parent (Id)))
*************** package body Sem_Ch7 is
*** 2691,2697 ****
              and then not Is_Generic_Type (Id))
  
          or else
!           (Ekind_In (Id, E_Task_Type, E_Protected_Type)
              and then not Has_Completion (Id))
  
          or else
--- 2665,2671 ----
              and then not Is_Generic_Type (Id))
  
          or else
!           (Ekind (Id) in E_Task_Type | E_Protected_Type
              and then not Has_Completion (Id))
  
          or else
*************** package body Sem_Ch7 is
*** 2759,2764 ****
--- 2733,2739 ----
           Set_Has_Pragma_Unreferenced_Objects
                                       (Priv, Has_Pragma_Unreferenced_Objects
                                                                         (Full));
+          Set_Predicates_Ignored      (Priv, Predicates_Ignored         (Full));
           if Is_Unchecked_Union (Full) then
              Set_Is_Unchecked_Union (Base_Type (Priv));
           end if;
*************** package body Sem_Ch7 is
*** 2792,2825 ****
           Set_Freeze_Node (Priv, Freeze_Node (Full));
  
           --  Propagate Default_Initial_Condition-related attributes from the
-          --  base type of the full view to the full view and vice versa. This
-          --  may seem strange, but is necessary depending on which type
-          --  triggered the generation of the DIC procedure body. As a result,
-          --  both the full view and its base type carry the same DIC-related
-          --  information.
- 
-          Propagate_DIC_Attributes (Full, From_Typ => Full_Base);
-          Propagate_DIC_Attributes (Full_Base, From_Typ => Full);
- 
-          --  Propagate Default_Initial_Condition-related attributes from the
           --  full view to the private view.
  
           Propagate_DIC_Attributes (Priv, From_Typ => Full);
  
-          --  Propagate invariant-related attributes from the base type of the
-          --  full view to the full view and vice versa. This may seem strange,
-          --  but is necessary depending on which type triggered the generation
-          --  of the invariant procedure body. As a result, both the full view
-          --  and its base type carry the same invariant-related information.
- 
-          Propagate_Invariant_Attributes (Full, From_Typ => Full_Base);
-          Propagate_Invariant_Attributes (Full_Base, From_Typ => Full);
- 
           --  Propagate invariant-related attributes from the full view to the
           --  private view.
  
           Propagate_Invariant_Attributes (Priv, From_Typ => Full);
  
           if Is_Tagged_Type (Priv)
             and then Is_Tagged_Type (Full)
             and then not Error_Posted (Full)
--- 2767,2786 ----
           Set_Freeze_Node (Priv, Freeze_Node (Full));
  
           --  Propagate Default_Initial_Condition-related attributes from the
           --  full view to the private view.
  
           Propagate_DIC_Attributes (Priv, From_Typ => Full);
  
           --  Propagate invariant-related attributes from the full view to the
           --  private view.
  
           Propagate_Invariant_Attributes (Priv, From_Typ => Full);
  
+          --  Propagate predicate-related attributes from the full view to the
+          --  private view.
+ 
+          Propagate_Predicate_Attributes (Priv, From_Typ => Full);
+ 
           if Is_Tagged_Type (Priv)
             and then Is_Tagged_Type (Full)
             and then not Error_Posted (Full)
*************** package body Sem_Ch7 is
*** 3007,3013 ****
              Check_Conventions (Id);
           end if;
  
!          if Ekind_In (Id, E_Private_Type, E_Limited_Private_Type)
             and then No (Full_View (Id))
             and then not Is_Generic_Type (Id)
             and then not Is_Derived_Type (Id)
--- 2968,2974 ----
              Check_Conventions (Id);
           end if;
  
!          if Ekind (Id) in E_Private_Type | E_Limited_Private_Type
             and then No (Full_View (Id))
             and then not Is_Generic_Type (Id)
             and then not Is_Derived_Type (Id)
*************** package body Sem_Ch7 is
*** 3232,3237 ****
--- 3193,3217 ----
                 end loop;
              end;
  
+          --  For subtypes of private types the frontend generates two entities:
+          --  one associated with the partial view and the other associated with
+          --  the full view. When the subtype declaration is public the frontend
+          --  places the former entity in the list of public entities of the
+          --  package and the latter entity in the private part of the package.
+          --  When the subtype declaration is private it generates these two
+          --  entities but both are placed in the private part of the package
+          --  (and the full view has the same source location as the partial
+          --  view and no parent; see Prepare_Private_Subtype_Completion).
+ 
+          elsif Ekind (Id) in E_Private_Subtype
+                            | E_Limited_Private_Subtype
+            and then Present (Full_View (Id))
+            and then Sloc (Id) = Sloc (Full_View (Id))
+            and then No (Parent (Full_View (Id)))
+          then
+             Set_Is_Hidden (Id);
+             Set_Is_Potentially_Use_Visible (Id, False);
+ 
           elsif not Is_Child_Unit (Id)
             and then (not Is_Private_Type (Id) or else No (Full_View (Id)))
           then
*************** package body Sem_Ch7 is
*** 3322,3328 ****
        --  performed if the caller requests this behavior.
  
        if Do_Abstract_States
!         and then Ekind_In (Pack_Id, E_Generic_Package, E_Package)
          and then Has_Non_Null_Abstract_State (Pack_Id)
          and then Requires_Body
        then
--- 3302,3308 ----
        --  performed if the caller requests this behavior.
  
        if Do_Abstract_States
!         and then Is_Package_Or_Generic_Package (Pack_Id)
          and then Has_Non_Null_Abstract_State (Pack_Id)
          and then Requires_Body
        then
*************** package body Sem_Ch7 is
*** 3380,3386 ****
        --  provided). If Ignore_Abstract_State is True, we don't do this check
        --  (so we can use Unit_Requires_Body to check for some other reason).
  
!       elsif Ekind_In (Pack_Id, E_Generic_Package, E_Package)
          and then Present (Abstract_States (Pack_Id))
          and then not Is_Null_State
                         (Node (First_Elmt (Abstract_States (Pack_Id))))
--- 3360,3366 ----
        --  provided). If Ignore_Abstract_State is True, we don't do this check
        --  (so we can use Unit_Requires_Body to check for some other reason).
  
!       elsif Is_Package_Or_Generic_Package (Pack_Id)
          and then Present (Abstract_States (Pack_Id))
          and then not Is_Null_State
                         (Node (First_Elmt (Abstract_States (Pack_Id))))
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch7.ads gcc-11.1.0/gcc/ada/sem_ch7.ads
*** gcc-10.3.0/gcc/ada/sem_ch7.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch7.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch8.adb gcc-11.1.0/gcc/ada/sem_ch8.adb
*** gcc-10.3.0/gcc/ada/sem_ch8.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch8.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sem_Cat;  use Sem_Cat;
*** 52,57 ****
--- 52,58 ----
  with Sem_Ch3;  use Sem_Ch3;
  with Sem_Ch4;  use Sem_Ch4;
  with Sem_Ch6;  use Sem_Ch6;
+ with Sem_Ch10; use Sem_Ch10;
  with Sem_Ch12; use Sem_Ch12;
  with Sem_Ch13; use Sem_Ch13;
  with Sem_Dim;  use Sem_Dim;
*************** package body Sem_Ch8 is
*** 501,506 ****
--- 502,511 ----
     --  Ada 2005 (AI-262): Determines if the current compilation unit has a
     --  private with on E.
  
+    function Has_Components (Typ : Entity_Id) return Boolean;
+    --  Determine if given type has components, i.e. is either a record type or
+    --  type or a type that has discriminants.
+ 
     function Has_Implicit_Operator (N : Node_Id) return Boolean;
     --  N is an expanded name whose selector is an operator name (e.g. P."+").
     --  declarative part contains an implicit declaration of an operator if it
*************** package body Sem_Ch8 is
*** 515,528 ****
     --  specification are discarded and replaced with those of the renamed
     --  subprogram, which are then used to recheck the default values.
  
-    function Is_Appropriate_For_Entry_Prefix (T : Entity_Id) return Boolean;
-    --  True if it is of a task type, a protected type, or else an access to one
-    --  of these types.
- 
-    function Is_Appropriate_For_Record (T : Entity_Id) return Boolean;
-    --  Prefix is appropriate for record if it is of a record type, or an access
-    --  to such.
- 
     function Most_Descendant_Use_Clause
       (Clause1 : Entity_Id;
        Clause2 : Entity_Id) return Entity_Id;
--- 520,525 ----
*************** package body Sem_Ch8 is
*** 568,575 ****
        Nam : constant Node_Id   := Name (N);
  
     begin
-       Check_SPARK_05_Restriction ("exception renaming is not allowed", N);
- 
        Enter_Name (Id);
        Analyze (Nam);
  
--- 565,570 ----
*************** package body Sem_Ch8 is
*** 682,689 ****
           return;
        end if;
  
-       Check_SPARK_05_Restriction ("generic renaming is not allowed", N);
- 
        Generate_Definition (New_P);
  
        if Current_Scope /= Standard_Standard then
--- 677,682 ----
*************** package body Sem_Ch8 is
*** 737,743 ****
           --  For subprograms, propagate the Intrinsic flag, to allow, e.g.
           --  renamings and subsequent instantiations of Unchecked_Conversion.
  
!          if Ekind_In (Old_P, E_Generic_Function, E_Generic_Procedure) then
              Set_Is_Intrinsic_Subprogram
                (New_P, Is_Intrinsic_Subprogram (Old_P));
           end if;
--- 730,736 ----
           --  For subprograms, propagate the Intrinsic flag, to allow, e.g.
           --  renamings and subsequent instantiations of Unchecked_Conversion.
  
!          if Is_Generic_Subprogram (Old_P) then
              Set_Is_Intrinsic_Subprogram
                (New_P, Is_Intrinsic_Subprogram (Old_P));
           end if;
*************** package body Sem_Ch8 is
*** 759,770 ****
     -----------------------------
  
     procedure Analyze_Object_Renaming (N : Node_Id) is
!       Id  : constant Entity_Id  := Defining_Identifier (N);
!       Loc : constant Source_Ptr := Sloc (N);
!       Nam : constant Node_Id    := Name (N);
!       Dec : Node_Id;
!       T   : Entity_Id;
!       T2  : Entity_Id;
  
        procedure Check_Constrained_Object;
        --  If the nominal type is unconstrained but the renamed object is
--- 752,764 ----
     -----------------------------
  
     procedure Analyze_Object_Renaming (N : Node_Id) is
!       Id            : constant Entity_Id  := Defining_Identifier (N);
!       Loc           : constant Source_Ptr := Sloc (N);
!       Nam           : constant Node_Id    := Name (N);
!       Is_Object_Ref : Boolean;
!       Dec           : Node_Id;
!       T             : Entity_Id;
!       T2            : Entity_Id;
  
        procedure Check_Constrained_Object;
        --  If the nominal type is unconstrained but the renamed object is
*************** package body Sem_Ch8 is
*** 778,793 ****
        --  Obtain the name of the object from node Nod which is being renamed by
        --  the object renaming declaration N.
  
        ------------------------------
        -- Check_Constrained_Object --
        ------------------------------
  
        procedure Check_Constrained_Object is
!          Typ  : constant Entity_Id := Etype (Nam);
!          Subt : Entity_Id;
  
        begin
!          if Nkind_In (Nam, N_Function_Call, N_Explicit_Dereference)
             and then Is_Composite_Type (Typ)
             and then not Is_Constrained (Typ)
             and then not Has_Unknown_Discriminants (Typ)
--- 772,813 ----
        --  Obtain the name of the object from node Nod which is being renamed by
        --  the object renaming declaration N.
  
+       function Find_Raise_Node (N : Node_Id) return Traverse_Result;
+       --  Process one node in search for N_Raise_xxx_Error nodes.
+       --  Return Abandon if found, OK otherwise.
+ 
+       ---------------------
+       -- Find_Raise_Node --
+       ---------------------
+ 
+       function Find_Raise_Node (N : Node_Id) return Traverse_Result is
+       begin
+          if Nkind (N) in N_Raise_xxx_Error then
+             return Abandon;
+          else
+             return OK;
+          end if;
+       end Find_Raise_Node;
+ 
+       ------------------------
+       -- No_Raise_xxx_Error --
+       ------------------------
+ 
+       function No_Raise_xxx_Error is new Traverse_Func (Find_Raise_Node);
+       --  Traverse tree to look for a N_Raise_xxx_Error node and returns
+       --  Abandon if so and OK if none found.
+ 
        ------------------------------
        -- Check_Constrained_Object --
        ------------------------------
  
        procedure Check_Constrained_Object is
!          Typ         : constant Entity_Id := Etype (Nam);
!          Subt        : Entity_Id;
!          Loop_Scheme : Node_Id;
  
        begin
!          if Nkind (Nam) in N_Function_Call | N_Explicit_Dereference
             and then Is_Composite_Type (Typ)
             and then not Is_Constrained (Typ)
             and then not Has_Unknown_Discriminants (Typ)
*************** package body Sem_Ch8 is
*** 795,801 ****
           then
              --  If Actual_Subtype is already set, nothing to do
  
!             if Ekind_In (Id, E_Variable, E_Constant)
                and then Present (Actual_Subtype (Id))
              then
                 null;
--- 815,821 ----
           then
              --  If Actual_Subtype is already set, nothing to do
  
!             if Ekind (Id) in E_Variable | E_Constant
                and then Present (Actual_Subtype (Id))
              then
                 null;
*************** package body Sem_Ch8 is
*** 836,841 ****
--- 856,884 ----
                 Rewrite (Subtype_Mark (N), New_Occurrence_Of (Subt, Loc));
                 Set_Etype (Nam, Subt);
  
+                --  Suppress discriminant checks on this subtype if the original
+                --  type has defaulted discriminants and Id is a "for of" loop
+                --  iterator.
+ 
+                if Has_Defaulted_Discriminants (Typ)
+                  and then Nkind (Original_Node (Parent (N))) = N_Loop_Statement
+                then
+                   Loop_Scheme := Iteration_Scheme (Original_Node (Parent (N)));
+ 
+                   if Present (Loop_Scheme)
+                     and then Present (Iterator_Specification (Loop_Scheme))
+                     and then
+                       Defining_Identifier
+                         (Iterator_Specification (Loop_Scheme)) = Id
+                   then
+                      Set_Checks_May_Be_Suppressed (Subt);
+                      Push_Local_Suppress_Stack_Entry
+                        (Entity   => Subt,
+                         Check    => Discriminant_Check,
+                         Suppress => True);
+                   end if;
+                end if;
+ 
                 --  Freeze subtype at once, to prevent order of elaboration
                 --  issues in the backend. The renamed object exists, so its
                 --  type is already frozen in any case.
*************** package body Sem_Ch8 is
*** 855,872 ****
        begin
           Obj_Nam := Nod;
           while Present (Obj_Nam) loop
!             if Nkind_In (Obj_Nam, N_Attribute_Reference,
!                                   N_Explicit_Dereference,
!                                   N_Indexed_Component,
!                                   N_Slice)
!             then
!                Obj_Nam := Prefix (Obj_Nam);
  
!             elsif Nkind (Obj_Nam) = N_Selected_Component then
!                Obj_Nam := Selector_Name (Obj_Nam);
!             else
!                exit;
!             end if;
           end loop;
  
           return Obj_Nam;
--- 898,920 ----
        begin
           Obj_Nam := Nod;
           while Present (Obj_Nam) loop
!             case Nkind (Obj_Nam) is
!                when N_Attribute_Reference
!                   | N_Explicit_Dereference
!                   | N_Indexed_Component
!                   | N_Slice
!                =>
!                   Obj_Nam := Prefix (Obj_Nam);
  
!                when N_Selected_Component =>
!                   Obj_Nam := Selector_Name (Obj_Nam);
! 
!                when N_Qualified_Expression | N_Type_Conversion =>
!                   Obj_Nam := Expression (Obj_Nam);
! 
!                when others =>
!                   exit;
!             end case;
           end loop;
  
           return Obj_Nam;
*************** package body Sem_Ch8 is
*** 879,886 ****
           return;
        end if;
  
-       Check_SPARK_05_Restriction ("object renaming is not allowed", N);
- 
        Set_Is_Pure (Id, Is_Pure (Current_Scope));
        Enter_Name (Id);
  
--- 927,932 ----
*************** package body Sem_Ch8 is
*** 907,923 ****
              T := Defining_Identifier (Dec);
              Set_Etype (Nam, T);
           end if;
! 
!          --  Complete analysis of the subtype mark in any case, for ASIS use
! 
           if Present (Subtype_Mark (N)) then
              Find_Type (Subtype_Mark (N));
!          end if;
  
!       elsif Present (Subtype_Mark (N)) then
!          Find_Type (Subtype_Mark (N));
!          T := Entity (Subtype_Mark (N));
!          Analyze (Nam);
  
           --  The object renaming declaration may become Ghost if it renames a
           --  Ghost entity.
--- 953,1068 ----
              T := Defining_Identifier (Dec);
              Set_Etype (Nam, T);
           end if;
!       elsif Present (Subtype_Mark (N))
!         or else not Present (Access_Definition (N))
!       then
           if Present (Subtype_Mark (N)) then
              Find_Type (Subtype_Mark (N));
!             T := Entity (Subtype_Mark (N));
!             Analyze (Nam);
  
!          --  AI12-0275: Case of object renaming without a subtype_mark
! 
!          else
!             Analyze (Nam);
! 
!             --  Normal case of no overloading in object name
! 
!             if not Is_Overloaded (Nam) then
! 
!                --  Catch error cases (such as attempting to rename a procedure
!                --  or package) using the shorthand form.
! 
!                if No (Etype (Nam))
!                  or else Etype (Nam) = Standard_Void_Type
!                then
!                   Error_Msg_N
!                     ("object name or value expected in renaming", Nam);
! 
!                   Set_Ekind (Id, E_Variable);
!                   Set_Etype (Id, Any_Type);
! 
!                   return;
! 
!                else
!                   T := Etype (Nam);
!                end if;
! 
!             --  Case of overloaded name, which will be illegal if there's more
!             --  than one acceptable interpretation (such as overloaded function
!             --  calls).
! 
!             else
!                declare
!                   I    : Interp_Index;
!                   I1   : Interp_Index;
!                   It   : Interp;
!                   It1  : Interp;
!                   Nam1 : Entity_Id;
! 
!                begin
!                   --  More than one candidate interpretation is available
! 
!                   --  Remove procedure calls, which syntactically cannot appear
!                   --  in this context, but which cannot be removed by type
!                   --  checking, because the context does not impose a type.
! 
!                   Get_First_Interp (Nam, I, It);
!                   while Present (It.Typ) loop
!                      if It.Typ = Standard_Void_Type then
!                         Remove_Interp (I);
!                      end if;
! 
!                      Get_Next_Interp (I, It);
!                   end loop;
! 
!                   Get_First_Interp (Nam, I, It);
!                   I1  := I;
!                   It1 := It;
! 
!                   --  If there's no type present, we have an error case (such
!                   --  as overloaded procedures named in the object renaming).
! 
!                   if No (It.Typ) then
!                      Error_Msg_N
!                        ("object name or value expected in renaming", Nam);
! 
!                      Set_Ekind (Id, E_Variable);
!                      Set_Etype (Id, Any_Type);
! 
!                      return;
!                   end if;
! 
!                   Get_Next_Interp (I, It);
! 
!                   if Present (It.Typ) then
!                      Nam1  := It1.Nam;
!                      It1 := Disambiguate (Nam, I1, I, Any_Type);
! 
!                      if It1 = No_Interp then
!                         Error_Msg_N ("ambiguous name in object renaming", Nam);
! 
!                         Error_Msg_Sloc := Sloc (It.Nam);
!                         Error_Msg_N ("\\possible interpretation#!", Nam);
! 
!                         Error_Msg_Sloc := Sloc (Nam1);
!                         Error_Msg_N ("\\possible interpretation#!", Nam);
! 
!                         return;
!                      end if;
!                   end if;
! 
!                   Set_Etype (Nam, It1.Typ);
!                   T := It1.Typ;
!                end;
!             end if;
! 
!             if Etype (Nam) = Standard_Exception_Type then
!                Error_Msg_N
!                  ("exception requires a subtype mark in renaming", Nam);
!                return;
!             end if;
!          end if;
  
           --  The object renaming declaration may become Ghost if it renames a
           --  Ghost entity.
*************** package body Sem_Ch8 is
*** 926,941 ****
              Mark_Ghost_Renaming (N, Entity (Nam));
           end if;
  
!          --  Reject renamings of conversions unless the type is tagged, or
!          --  the conversion is implicit (which can occur for cases of anonymous
!          --  access types in Ada 2012).
  
!          if Nkind (Nam) = N_Type_Conversion
!            and then Comes_From_Source (Nam)
!            and then not Is_Tagged_Type (T)
           then
              Error_Msg_N
!               ("renaming of conversion only allowed for tagged types", Nam);
           end if;
  
           Resolve (Nam, T);
--- 1071,1090 ----
              Mark_Ghost_Renaming (N, Entity (Nam));
           end if;
  
!          --  Check against AI12-0401 here before Resolve may rewrite Nam and
!          --  potentially generate spurious warnings.
  
!          if Nkind (Nam) = N_Qualified_Expression
!            and then Is_Variable (Expression (Nam))
!            and then not
!              (Subtypes_Statically_Match (T, Etype (Expression (Nam)))
!                 or else
!               Subtypes_Statically_Match (Base_Type (T), Etype (Nam)))
           then
              Error_Msg_N
!               ("subtype of renamed qualified expression does not " &
!                "statically match", N);
!             return;
           end if;
  
           Resolve (Nam, T);
*************** package body Sem_Ch8 is
*** 973,980 ****
  
           if Nkind (Nam) = N_Type_Conversion
             and then not Comes_From_Source (Nam)
!            and then Ekind (Etype (Expression (Nam))) = E_Anonymous_Access_Type
!            and then Ekind (T) /= E_Anonymous_Access_Type
           then
              Wrong_Type (Expression (Nam), T); -- Should we give better error???
           end if;
--- 1122,1129 ----
  
           if Nkind (Nam) = N_Type_Conversion
             and then not Comes_From_Source (Nam)
!            and then Is_Anonymous_Access_Type (Etype (Expression (Nam)))
!            and then not Is_Anonymous_Access_Type (T)
           then
              Wrong_Type (Expression (Nam), T); -- Should we give better error???
           end if;
*************** package body Sem_Ch8 is
*** 1178,1192 ****
           return;
        end if;
  
!       --  Ada 2005 (AI-327)
! 
!       if Ada_Version >= Ada_2005
!         and then Nkind (Nam) = N_Attribute_Reference
!         and then Attribute_Name (Nam) = Name_Priority
!       then
!          null;
! 
!       elsif Ada_Version >= Ada_2005 and then Nkind (Nam) in N_Has_Entity then
           declare
              Nam_Ent  : constant Entity_Id := Entity (Get_Object_Name (Nam));
              Nam_Decl : constant Node_Id   := Declaration_Node (Nam_Ent);
--- 1327,1333 ----
           return;
        end if;
  
!       if Ada_Version >= Ada_2005 and then Nkind (Nam) in N_Has_Entity then
           declare
              Nam_Ent  : constant Entity_Id := Entity (Get_Object_Name (Nam));
              Nam_Decl : constant Node_Id   := Declaration_Node (Nam_Ent);
*************** package body Sem_Ch8 is
*** 1207,1213 ****
                 then
                    if not Can_Never_Be_Null (Etype (Nam_Ent)) then
                       Error_Msg_N
!                        ("renamed formal does not exclude `NULL` "
                          & "(RM 8.5.1(4.6/2))", N);
  
                    elsif In_Package_Body (Scope (Id)) then
--- 1348,1354 ----
                 then
                    if not Can_Never_Be_Null (Etype (Nam_Ent)) then
                       Error_Msg_N
!                        ("object does not exclude `NULL` "
                          & "(RM 8.5.1(4.6/2))", N);
  
                    elsif In_Package_Body (Scope (Id)) then
*************** package body Sem_Ch8 is
*** 1221,1227 ****
  
                 elsif not Can_Never_Be_Null (Etype (Nam_Ent)) then
                    Error_Msg_N
!                     ("renamed object does not exclude `NULL` "
                       & "(RM 8.5.1(4.6/2))", N);
  
                 --  An instance is illegal if it contains a renaming that
--- 1362,1368 ----
  
                 elsif not Can_Never_Be_Null (Etype (Nam_Ent)) then
                    Error_Msg_N
!                     ("object does not exclude `NULL` "
                       & "(RM 8.5.1(4.6/2))", N);
  
                 --  An instance is illegal if it contains a renaming that
*************** package body Sem_Ch8 is
*** 1238,1245 ****
                                              N_Raise_Constraint_Error
                 then
                    Error_Msg_N
!                     ("renamed actual does not exclude `NULL` "
!                      & "(RM 8.5.1(4.6/2))", N);
  
                 --  Finally, if there is a null exclusion, the subtype mark
                 --  must not be null-excluding.
--- 1379,1385 ----
                                              N_Raise_Constraint_Error
                 then
                    Error_Msg_N
!                     ("actual does not exclude `NULL` (RM 8.5.1(4.6/2))", N);
  
                 --  Finally, if there is a null exclusion, the subtype mark
                 --  must not be null-excluding.
*************** package body Sem_Ch8 is
*** 1257,1264 ****
                and then not Can_Never_Be_Null (Etype (Nam_Ent))
              then
                 Error_Msg_N
!                  ("renamed object does not exclude `NULL` "
!                   & "(RM 8.5.1(4.6/2))", N);
  
              elsif Has_Null_Exclusion (N)
                and then No (Access_Definition (N))
--- 1397,1403 ----
                and then not Can_Never_Be_Null (Etype (Nam_Ent))
              then
                 Error_Msg_N
!                  ("object does not exclude `NULL` (RM 8.5.1(4.6/2))", N);
  
              elsif Has_Null_Exclusion (N)
                and then No (Access_Definition (N))
*************** package body Sem_Ch8 is
*** 1285,1297 ****
  
        Init_Object_Size_Align (Id);
  
        if T = Any_Type or else Etype (Nam) = Any_Type then
           return;
  
!       --  Verify that the renamed entity is an object or a function call. It
!       --  may have been rewritten in several ways.
  
!       elsif Is_Object_Reference (Nam) then
           if Comes_From_Source (N) then
              if Is_Dependent_Component_Of_Mutable_Object (Nam) then
                 Error_Msg_N
--- 1424,1456 ----
  
        Init_Object_Size_Align (Id);
  
+       --  If N comes from source then check that the original node is an
+       --  object reference since there may have been several rewritting and
+       --  folding. Do not do this for N_Function_Call or N_Explicit_Dereference
+       --  which might correspond to rewrites of e.g. N_Selected_Component
+       --  (for example Object.Method rewriting).
+       --  If N does not come from source then assume the tree is properly
+       --  formed and accept any object reference. In such cases we do support
+       --  more cases of renamings anyway, so the actual check on which renaming
+       --  is valid is better left to the code generator as a last sanity
+       --  check.
+ 
+       if Comes_From_Source (N) then
+          if Nkind (Nam) in N_Function_Call | N_Explicit_Dereference then
+             Is_Object_Ref := Is_Object_Reference (Nam);
+          else
+             Is_Object_Ref := Is_Object_Reference (Original_Node (Nam));
+          end if;
+       else
+          Is_Object_Ref := True;
+       end if;
+ 
        if T = Any_Type or else Etype (Nam) = Any_Type then
           return;
  
!       --  Verify that the renamed entity is an object or function call
  
!       elsif Is_Object_Ref then
           if Comes_From_Source (N) then
              if Is_Dependent_Component_Of_Mutable_Object (Nam) then
                 Error_Msg_N
*************** package body Sem_Ch8 is
*** 1310,1360 ****
              end if;
           end if;
  
!       --  A static function call may have been folded into a literal
! 
!       elsif Nkind (Original_Node (Nam)) = N_Function_Call
! 
!         --  When expansion is disabled, attribute reference is not rewritten
!         --  as function call. Otherwise it may be rewritten as a conversion,
!         --  so check original node.
! 
!         or else (Nkind (Original_Node (Nam)) = N_Attribute_Reference
!                   and then Is_Function_Attribute_Name
!                              (Attribute_Name (Original_Node (Nam))))
! 
!         --  Weird but legal, equivalent to renaming a function call. Illegal
!         --  if the literal is the result of constant-folding an attribute
!         --  reference that is not a function.
! 
!         or else (Is_Entity_Name (Nam)
!                   and then Ekind (Entity (Nam)) = E_Enumeration_Literal
!                   and then
!                     Nkind (Original_Node (Nam)) /= N_Attribute_Reference)
  
!         or else (Nkind (Nam) = N_Type_Conversion
!                   and then Is_Tagged_Type (Entity (Subtype_Mark (Nam))))
        then
           null;
  
!       elsif Nkind (Nam) = N_Type_Conversion then
!          Error_Msg_N
!            ("renaming of conversion only allowed for tagged types", Nam);
! 
!       --  Ada 2005 (AI-327)
  
!       elsif Ada_Version >= Ada_2005
!         and then Nkind (Nam) = N_Attribute_Reference
!         and then Attribute_Name (Nam) = Name_Priority
        then
!          null;
! 
!       --  Allow internally generated x'Ref resulting in N_Reference node
  
!       elsif Nkind (Nam) = N_Reference then
!          null;
  
!       else
!          Error_Msg_N ("expect object name in renaming", Nam);
        end if;
  
        Set_Etype (Id, T2);
--- 1469,1497 ----
              end if;
           end if;
  
!       --  Weird but legal, equivalent to renaming a function call. Illegal
!       --  if the literal is the result of constant-folding an attribute
!       --  reference that is not a function.
  
!       elsif Is_Entity_Name (Nam)
!         and then Ekind (Entity (Nam)) = E_Enumeration_Literal
!         and then Nkind (Original_Node (Nam)) /= N_Attribute_Reference
        then
           null;
  
!       --  A named number can only be renamed without a subtype mark
  
!       elsif Nkind (Nam) in N_Real_Literal | N_Integer_Literal
!         and then Present (Subtype_Mark (N))
!         and then Present (Original_Entity (Nam))
        then
!          Error_Msg_N ("incompatible types in renaming", Nam);
  
!       --  AI12-0383: Names that denote values can be renamed.
!       --  Ignore (accept) N_Raise_xxx_Error nodes in this context.
  
!       elsif No_Raise_xxx_Error (Nam) = OK then
!          Error_Msg_Ada_2020_Feature ("value in renaming", Sloc (Nam));
        end if;
  
        Set_Etype (Id, T2);
*************** package body Sem_Ch8 is
*** 1458,1463 ****
--- 1595,1615 ----
           Set_Ekind (New_P, E_Package);
           Set_Etype (New_P, Standard_Void_Type);
  
+       elsif Present (Renamed_Entity (Old_P))
+         and then (From_Limited_With (Renamed_Entity (Old_P))
+                     or else Has_Limited_View (Renamed_Entity (Old_P)))
+         and then not
+           Unit_Is_Visible (Cunit (Get_Source_Unit (Renamed_Entity (Old_P))))
+       then
+          Error_Msg_NE
+            ("renaming of limited view of package & not usable in this context"
+             & " (RM 8.5.3(3.1/2))", Name (N), Renamed_Entity (Old_P));
+ 
+          --  Set basic attributes to minimize cascaded errors
+ 
+          Set_Ekind (New_P, E_Package);
+          Set_Etype (New_P, Standard_Void_Type);
+ 
        --  Here for OK package renaming
  
        else
*************** package body Sem_Ch8 is
*** 1689,1694 ****
--- 1841,1849 ----
           --  The prefix can be an arbitrary expression that yields a task or
           --  protected object, so it must be resolved.
  
+          if Is_Access_Type (Etype (Prefix (Nam))) then
+             Insert_Explicit_Dereference (Prefix (Nam));
+          end if;
           Resolve (Prefix (Nam), Scope (Old_S));
        end if;
  
*************** package body Sem_Ch8 is
*** 1772,1777 ****
--- 1927,1933 ----
        Is_Body : Boolean)
     is
        Old_S : Entity_Id;
+       Nam   : Entity_Id;
  
        function Conforms
          (Subp : Entity_Id;
*************** package body Sem_Ch8 is
*** 1848,1854 ****
        end if;
  
        if Old_S = Any_Id then
!          Error_Msg_N (" no subprogram or entry matches specification",  N);
  
        else
           if Is_Body then
--- 2004,2010 ----
        end if;
  
        if Old_S = Any_Id then
!          Error_Msg_N ("no subprogram or entry matches specification",  N);
  
        else
           if Is_Body then
*************** package body Sem_Ch8 is
*** 1866,1871 ****
--- 2022,2042 ----
                 Error_Msg_N ("mode conformance error in renaming", N);
              end if;
  
+             --  AI12-0204: The prefix of a prefixed view that is renamed or
+             --  passed as a formal subprogram must be renamable as an object.
+ 
+             Nam := Prefix (Name (N));
+ 
+             if Is_Object_Reference (Nam) then
+                if Is_Dependent_Component_Of_Mutable_Object (Nam) then
+                   Error_Msg_N
+                     ("illegal renaming of discriminant-dependent component",
+                      Nam);
+                end if;
+             else
+                Error_Msg_N ("expect object name in renaming", Nam);
+             end if;
+ 
              --  Enforce the rule given in (RM 6.3.1 (10.1/2)): a prefixed
              --  view of a subprogram is intrinsic, because the compiler has
              --  to generate a wrapper for any call to it. If the name in a
*************** package body Sem_Ch8 is
*** 1942,1956 ****
        --  Ada 2005 (AI-423): Given renaming Ren of subprogram Sub, check the
        --  following AI rules:
        --
!       --    If Ren is a renaming of a formal subprogram and one of its
!       --    parameters has a null exclusion, then the corresponding formal
!       --    in Sub must also have one. Otherwise the subtype of the Sub's
!       --    formal parameter must exclude null.
        --
!       --    If Ren is a renaming of a formal function and its return
!       --    profile has a null exclusion, then Sub's return profile must
!       --    have one. Otherwise the subtype of Sub's return profile must
!       --    exclude null.
  
        procedure Check_SPARK_Primitive_Operation (Subp_Id : Entity_Id);
        --  Ensure that a SPARK renaming denoted by its entity Subp_Id does not
--- 2113,2126 ----
        --  Ada 2005 (AI-423): Given renaming Ren of subprogram Sub, check the
        --  following AI rules:
        --
!       --    If Ren denotes a generic formal object of a generic unit G, and the
!       --    renaming (or instantiation containing the actual) occurs within the
!       --    body of G or within the body of a generic unit declared within the
!       --    declarative region of G, then the corresponding parameter of G
!       --    shall have a null_exclusion; Otherwise the subtype of the Sub's
!       --    formal parameter shall exclude null.
        --
!       --    Similarly for its return profile.
  
        procedure Check_SPARK_Primitive_Operation (Subp_Id : Entity_Id);
        --  Ensure that a SPARK renaming denoted by its entity Subp_Id does not
*************** package body Sem_Ch8 is
*** 2042,2048 ****
              --  Generate:
              --    return Subp_Id (Actuals);
  
!             if Ekind_In (Subp_Id, E_Function, E_Operator) then
                 return
                   Make_Simple_Return_Statement (Loc,
                     Expression =>
--- 2212,2218 ----
              --  Generate:
              --    return Subp_Id (Actuals);
  
!             if Ekind (Subp_Id) in E_Function | E_Operator then
                 return
                   Make_Simple_Return_Statement (Loc,
                     Expression =>
*************** package body Sem_Ch8 is
*** 2074,2080 ****
              Formal   : Node_Id;
  
           begin
!             pragma Assert (Ekind_In (Subp_Id, E_Function, E_Operator));
  
              --  Build the actual parameters of the call
  
--- 2244,2250 ----
              Formal   : Node_Id;
  
           begin
!             pragma Assert (Ekind (Subp_Id) in E_Function | E_Operator);
  
              --  Build the actual parameters of the call
  
*************** package body Sem_Ch8 is
*** 2441,2447 ****
           --  dispatching call to the wrapped function is known during proof.
  
           if GNATprove_Mode
!            and then Ekind_In (Ren_Id, E_Function, E_Operator)
           then
              New_Spec := Build_Spec (Ren_Id);
              Body_Decl :=
--- 2611,2617 ----
           --  dispatching call to the wrapped function is known during proof.
  
           if GNATprove_Mode
!            and then Ekind (Ren_Id) in E_Function | E_Operator
           then
              New_Spec := Build_Spec (Ren_Id);
              Body_Decl :=
*************** package body Sem_Ch8 is
*** 2517,2536 ****
           Ren_Formal : Entity_Id;
           Sub_Formal : Entity_Id;
  
        begin
           --  Parameter check
  
           Ren_Formal := First_Formal (Ren);
           Sub_Formal := First_Formal (Sub);
           while Present (Ren_Formal) and then Present (Sub_Formal) loop
!             if Has_Null_Exclusion (Parent (Ren_Formal))
!               and then
!                 not (Has_Null_Exclusion (Parent (Sub_Formal))
!                       or else Can_Never_Be_Null (Etype (Sub_Formal)))
!             then
                 Error_Msg_NE
!                  ("`NOT NULL` required for parameter &",
!                   Parent (Sub_Formal), Sub_Formal);
              end if;
  
              Next_Formal (Ren_Formal);
--- 2687,2724 ----
           Ren_Formal : Entity_Id;
           Sub_Formal : Entity_Id;
  
+          function Null_Exclusion_Mismatch
+            (Renaming : Entity_Id; Renamed : Entity_Id) return Boolean;
+          --  Return True if there is a null exclusion mismatch between
+          --  Renaming and Renamed, False otherwise.
+ 
+          -----------------------------
+          -- Null_Exclusion_Mismatch --
+          -----------------------------
+ 
+          function Null_Exclusion_Mismatch
+            (Renaming : Entity_Id; Renamed : Entity_Id) return Boolean is
+          begin
+             return Has_Null_Exclusion (Parent (Renaming))
+               and then
+                 not (Has_Null_Exclusion (Parent (Renamed))
+                       or else (Can_Never_Be_Null (Etype (Renamed))
+                                 and then not
+                                   (Is_Formal_Subprogram (Sub)
+                                    and then In_Generic_Body (Current_Scope))));
+          end Null_Exclusion_Mismatch;
+ 
        begin
           --  Parameter check
  
           Ren_Formal := First_Formal (Ren);
           Sub_Formal := First_Formal (Sub);
           while Present (Ren_Formal) and then Present (Sub_Formal) loop
!             if Null_Exclusion_Mismatch (Ren_Formal, Sub_Formal) then
!                Error_Msg_Sloc := Sloc (Sub_Formal);
                 Error_Msg_NE
!                  ("`NOT NULL` required for parameter &#",
!                   Ren_Formal, Sub_Formal);
              end if;
  
              Next_Formal (Ren_Formal);
*************** package body Sem_Ch8 is
*** 2541,2553 ****
  
           if Nkind (Parent (Ren)) = N_Function_Specification
             and then Nkind (Parent (Sub)) = N_Function_Specification
!            and then Has_Null_Exclusion (Parent (Ren))
!            and then not (Has_Null_Exclusion (Parent (Sub))
!                           or else Can_Never_Be_Null (Etype (Sub)))
           then
!             Error_Msg_N
!               ("return must specify `NOT NULL`",
!                Result_Definition (Parent (Sub)));
           end if;
        end Check_Null_Exclusion;
  
--- 2729,2738 ----
  
           if Nkind (Parent (Ren)) = N_Function_Specification
             and then Nkind (Parent (Sub)) = N_Function_Specification
!            and then Null_Exclusion_Mismatch (Ren, Sub)
           then
!             Error_Msg_Sloc := Sloc (Sub);
!             Error_Msg_N ("return must specify `NOT NULL`#", Ren);
           end if;
        end Check_Null_Exclusion;
  
*************** package body Sem_Ch8 is
*** 2613,2619 ****
                    exit;
                 end if;
  
!                F := Next_Formal (F);
              end loop;
  
              if Ekind (Formal_Spec) = E_Function
--- 2798,2804 ----
                    exit;
                 end if;
  
!                Next_Formal (F);
              end loop;
  
              if Ekind (Formal_Spec) = E_Function
*************** package body Sem_Ch8 is
*** 2651,2657 ****
                       end if;
                    end if;
  
!                   F := Next_Formal (F);
                 end loop;
              end if;
           end if;
--- 2836,2842 ----
                       end if;
                    end if;
  
!                   Next_Formal (F);
                 end loop;
              end if;
           end if;
*************** package body Sem_Ch8 is
*** 2748,2759 ****
        if Nkind (Nam) = N_Attribute_Reference then
  
           --  In the case of an abstract formal subprogram association, rewrite
!          --  an actual given by a stream attribute as the name of the
!          --  corresponding stream primitive of the type.
  
!          --  In a generic context the stream operations are not generated, and
!          --  this must be treated as a normal attribute reference, to be
!          --  expanded in subsequent instantiations.
  
           if Is_Actual
             and then Is_Abstract_Subprogram (Formal_Spec)
--- 2933,2944 ----
        if Nkind (Nam) = N_Attribute_Reference then
  
           --  In the case of an abstract formal subprogram association, rewrite
!          --  an actual given by a stream or Put_Image attribute as the name of
!          --  the corresponding stream or Put_Image primitive of the type.
  
!          --  In a generic context the stream and Put_Image operations are not
!          --  generated, and this must be treated as a normal attribute
!          --  reference, to be expanded in subsequent instantiations.
  
           if Is_Actual
             and then Is_Abstract_Subprogram (Formal_Spec)
*************** package body Sem_Ch8 is
*** 2761,2772 ****
           then
              declare
                 Prefix_Type : constant Entity_Id := Entity (Prefix (Nam));
!                Stream_Prim : Entity_Id;
  
              begin
!                --  The class-wide forms of the stream attributes are not
!                --  primitive dispatching operations (even though they
!                --  internally dispatch to a stream attribute).
  
                 if Is_Class_Wide_Type (Prefix_Type) then
                    Error_Msg_N
--- 2946,2957 ----
           then
              declare
                 Prefix_Type : constant Entity_Id := Entity (Prefix (Nam));
!                Prim : Entity_Id;
  
              begin
!                --  The class-wide forms of the stream and Put_Image attributes
!                --  are not primitive dispatching operations (even though they
!                --  internally dispatch).
  
                 if Is_Class_Wide_Type (Prefix_Type) then
                    Error_Msg_N
*************** package body Sem_Ch8 is
*** 2783,2803 ****
  
                 case Attribute_Name (Nam) is
                    when Name_Input =>
!                      Stream_Prim :=
                         Find_Optional_Prim_Op (Prefix_Type, TSS_Stream_Input);
  
                    when Name_Output =>
!                      Stream_Prim :=
                         Find_Optional_Prim_Op (Prefix_Type, TSS_Stream_Output);
  
                    when Name_Read =>
!                      Stream_Prim :=
                         Find_Optional_Prim_Op (Prefix_Type, TSS_Stream_Read);
  
                    when Name_Write =>
!                      Stream_Prim :=
                         Find_Optional_Prim_Op (Prefix_Type, TSS_Stream_Write);
  
                    when others =>
                       Error_Msg_N
                         ("attribute must be a primitive dispatching operation",
--- 2968,2992 ----
  
                 case Attribute_Name (Nam) is
                    when Name_Input =>
!                      Prim :=
                         Find_Optional_Prim_Op (Prefix_Type, TSS_Stream_Input);
  
                    when Name_Output =>
!                      Prim :=
                         Find_Optional_Prim_Op (Prefix_Type, TSS_Stream_Output);
  
                    when Name_Read =>
!                      Prim :=
                         Find_Optional_Prim_Op (Prefix_Type, TSS_Stream_Read);
  
                    when Name_Write =>
!                      Prim :=
                         Find_Optional_Prim_Op (Prefix_Type, TSS_Stream_Write);
  
+                   when Name_Put_Image =>
+                      Prim :=
+                        Find_Optional_Prim_Op (Prefix_Type, TSS_Put_Image);
+ 
                    when others =>
                       Error_Msg_N
                         ("attribute must be a primitive dispatching operation",
*************** package body Sem_Ch8 is
*** 2805,2814 ****
                       return;
                 end case;
  
!                --  If no operation was found, and the type is limited, the user
!                --  should have defined one.
  
!                if No (Stream_Prim) then
                    if Is_Limited_Type (Prefix_Type) then
                       Error_Msg_NE
                        ("stream operation not defined for type&",
--- 2994,3006 ----
                       return;
                 end case;
  
!                --  If no stream operation was found, and the type is limited,
!                --  the user should have defined one. This rule does not apply
!                --  to Put_Image.
  
!                if No (Prim)
!                  and then Attribute_Name (Nam) /= Name_Put_Image
!                then
                    if Is_Limited_Type (Prefix_Type) then
                       Error_Msg_NE
                        ("stream operation not defined for type&",
*************** package body Sem_Ch8 is
*** 2829,2837 ****
                 declare
                    Prim_Name : constant Node_Id :=
                                  Make_Identifier (Sloc (Nam),
!                                   Chars => Chars (Stream_Prim));
                 begin
!                   Set_Entity (Prim_Name, Stream_Prim);
                    Rewrite (Nam, Prim_Name);
                    Analyze (Nam);
                 end;
--- 3021,3029 ----
                 declare
                    Prim_Name : constant Node_Id :=
                                  Make_Identifier (Sloc (Nam),
!                                   Chars => Chars (Prim));
                 begin
!                   Set_Entity (Prim_Name, Prim);
                    Rewrite (Nam, Prim_Name);
                    Analyze (Nam);
                 end;
*************** package body Sem_Ch8 is
*** 2863,2878 ****
           --  Check whether the renaming is for a defaulted actual subprogram
           --  with a class-wide actual.
  
!          --  The class-wide wrapper is not needed in GNATprove_Mode and there
!          --  is an external axiomatization on the package.
! 
!          if CW_Actual
!            and then Box_Present (Inst_Node)
!            and then not
!              (GNATprove_Mode
!                and then
!                  Present (Containing_Package_With_Ext_Axioms (Formal_Spec)))
!          then
              Build_Class_Wide_Wrapper (New_S, Old_S);
  
           elsif Is_Entity_Name (Nam)
--- 3055,3061 ----
           --  Check whether the renaming is for a defaulted actual subprogram
           --  with a class-wide actual.
  
!          if CW_Actual and then Box_Present (Inst_Node) then
              Build_Class_Wide_Wrapper (New_S, Old_S);
  
           elsif Is_Entity_Name (Nam)
*************** package body Sem_Ch8 is
*** 3037,3045 ****
           if No_Return (Rename_Spec)
             and then not No_Return (Entity (Nam))
           then
!             Error_Msg_N ("renaming completes a No_Return procedure", N);
              Error_Msg_N
!               ("\renamed procedure must be nonreturning (RM 6.5.1 (7/2))", N);
           end if;
  
           --  The specification does not introduce new formals, but only
--- 3220,3229 ----
           if No_Return (Rename_Spec)
             and then not No_Return (Entity (Nam))
           then
!             Error_Msg_NE
!               ("renamed subprogram & must be No_Return", N, Entity (Nam));
              Error_Msg_N
!               ("\since renaming subprogram is No_Return (RM 6.5.1(7/2))", N);
           end if;
  
           --  The specification does not introduce new formals, but only
*************** package body Sem_Ch8 is
*** 3076,3081 ****
--- 3260,3281 ----
              Error_Msg_NE ("subprogram& is not overriding", N, Rename_Spec);
           end if;
  
+          --  AI12-0132: a renames-as-body freezes the expression of any
+          --  expression function that it renames.
+ 
+          if Is_Entity_Name (Nam)
+            and then Is_Expression_Function (Entity (Nam))
+            and then not Inside_A_Generic
+          then
+             Freeze_Expr_Types
+               (Def_Id => Entity (Nam),
+                Typ    => Etype (Entity (Nam)),
+                Expr   =>
+                  Expression
+                    (Original_Node (Unit_Declaration_Node (Entity (Nam)))),
+                N      => N);
+          end if;
+ 
        --  Normal subprogram renaming (not renaming as body)
  
        else
*************** package body Sem_Ch8 is
*** 3101,3107 ****
  
        Set_Kill_Elaboration_Checks (New_S, True);
  
!       --  If we had a previous error, indicate a completely is present to stop
        --  junk cascaded messages, but don't take any further action.
  
        if Etype (Nam) = Any_Type then
--- 3301,3307 ----
  
        Set_Kill_Elaboration_Checks (New_S, True);
  
!       --  If we had a previous error, indicate a completion is present to stop
        --  junk cascaded messages, but don't take any further action.
  
        if Etype (Nam) = Any_Type then
*************** package body Sem_Ch8 is
*** 3276,3282 ****
           --  Guard against previous errors, and omit renamings of predefined
           --  operators.
  
!          elsif not Ekind_In (Old_S, E_Function, E_Procedure) then
              null;
  
           elsif Requires_Overriding (Old_S)
--- 3476,3482 ----
           --  Guard against previous errors, and omit renamings of predefined
           --  operators.
  
!          elsif Ekind (Old_S) not in E_Function | E_Procedure then
              null;
  
           elsif Requires_Overriding (Old_S)
*************** package body Sem_Ch8 is
*** 3339,3344 ****
--- 3539,3546 ----
  
                 if Original_Subprogram (Old_S) = Rename_Spec then
                    Error_Msg_N ("unfrozen subprogram cannot rename itself ", N);
+                else
+                   Check_Formal_Subprogram_Conformance (New_S, Old_S, Spec);
                 end if;
              else
                 Check_Subtype_Conformant (New_S, Old_S, Spec);
*************** package body Sem_Ch8 is
*** 3382,3391 ****
              then
                 Check_Mode_Conformant (New_S, Old_S);
              end if;
- 
-             if Is_Actual and then Error_Posted (New_S) then
-                Error_Msg_NE ("invalid actual subprogram: & #!", N, Old_S);
-             end if;
           end if;
  
           if No (Rename_Spec) then
--- 3584,3589 ----
*************** package body Sem_Ch8 is
*** 3702,3734 ****
           Analyze_Aspect_Specifications (N, New_S);
        end if;
  
!       Ada_Version := Save_AV;
!       Ada_Version_Pragma := Save_AVP;
!       Ada_Version_Explicit := Save_AV_Exp;
! 
!       --  In GNATprove mode, the renamings of actual subprograms are replaced
!       --  with wrapper functions that make it easier to propagate axioms to the
!       --  points of call within an instance. Wrappers are generated if formal
!       --  subprogram is subject to axiomatization.
! 
!       --  The types in the wrapper profiles are obtained from (instances of)
!       --  the types of the formal subprogram.
  
        if Is_Actual
!         and then GNATprove_Mode
!         and then Present (Containing_Package_With_Ext_Axioms (Formal_Spec))
!         and then not Inside_A_Generic
        then
!          if Ekind (Old_S) = E_Function then
!             Rewrite (N, Build_Function_Wrapper (Formal_Spec, Old_S));
!             Analyze (N);
! 
!          elsif Ekind (Old_S) = E_Operator then
!             Rewrite (N, Build_Operator_Wrapper (Formal_Spec, Old_S));
!             Analyze (N);
!          end if;
        end if;
  
        --  Check if we are looking at an Ada 2012 defaulted formal subprogram
        --  and mark any use_package_clauses that affect the visibility of the
        --  implicit generic actual.
--- 3900,3920 ----
           Analyze_Aspect_Specifications (N, New_S);
        end if;
  
!       --  AI12-0279
  
        if Is_Actual
!         and then Has_Yield_Aspect (Formal_Spec)
!         and then not Has_Yield_Aspect (Old_S)
        then
!          Error_Msg_Name_1 := Name_Yield;
!          Error_Msg_N
!            ("actual subprogram& must have aspect% to match formal", Name (N));
        end if;
  
+       Ada_Version := Save_AV;
+       Ada_Version_Pragma := Save_AVP;
+       Ada_Version_Explicit := Save_AV_Exp;
+ 
        --  Check if we are looking at an Ada 2012 defaulted formal subprogram
        --  and mark any use_package_clauses that affect the visibility of the
        --  implicit generic actual.
*************** package body Sem_Ch8 is
*** 3836,3843 ****
     --  Start of processing for Analyze_Use_Package
  
     begin
-       Check_SPARK_05_Restriction ("use clause is not allowed", N);
- 
        Set_Hidden_By_Use_Clause (N, No_Elist);
  
        --  Use clause not allowed in a spec of a predefined package declaration
--- 4022,4027 ----
*************** package body Sem_Ch8 is
*** 3890,3909 ****
           Set_Prev_Use_Clause (N, Current_Use_Clause (Pack));
        end if;
  
!       --  Mark all entities as potentially use visible.
  
        if Ekind (Pack) /= E_Package and then Etype (Pack) /= Any_Type then
           if Ekind (Pack) = E_Generic_Package then
              Error_Msg_N  -- CODEFIX
                ("a generic package is not allowed in a use clause", Name (N));
  
!          elsif Ekind_In (Pack, E_Generic_Function, E_Generic_Package)
!          then
              Error_Msg_N  -- CODEFIX
                ("a generic subprogram is not allowed in a use clause",
                 Name (N));
  
!          elsif Ekind_In (Pack, E_Function, E_Procedure, E_Operator) then
              Error_Msg_N  -- CODEFIX
                ("a subprogram is not allowed in a use clause", Name (N));
  
--- 4074,4092 ----
           Set_Prev_Use_Clause (N, Current_Use_Clause (Pack));
        end if;
  
!       --  Mark all entities as potentially use visible
  
        if Ekind (Pack) /= E_Package and then Etype (Pack) /= Any_Type then
           if Ekind (Pack) = E_Generic_Package then
              Error_Msg_N  -- CODEFIX
                ("a generic package is not allowed in a use clause", Name (N));
  
!          elsif Is_Generic_Subprogram (Pack) then
              Error_Msg_N  -- CODEFIX
                ("a generic subprogram is not allowed in a use clause",
                 Name (N));
  
!          elsif Is_Subprogram (Pack) then
              Error_Msg_N  -- CODEFIX
                ("a subprogram is not allowed in a use clause", Name (N));
  
*************** package body Sem_Ch8 is
*** 4132,4141 ****
        elsif Present (Expressions (Nam)) then
           Error_Msg_N ("illegal expressions in attribute reference", Nam);
  
!       elsif
!         Nam_In (Aname, Name_Compose, Name_Exponent, Name_Leading_Part,
!                        Name_Pos,     Name_Round,    Name_Scaling,
!                        Name_Val)
        then
           if Nkind (N) = N_Subprogram_Renaming_Declaration
             and then Present (Corresponding_Formal_Spec (N))
--- 4315,4323 ----
        elsif Present (Expressions (Nam)) then
           Error_Msg_N ("illegal expressions in attribute reference", Nam);
  
!       elsif Aname in Name_Compose | Name_Exponent | Name_Leading_Part |
!                      Name_Pos     | Name_Round    | Name_Scaling      |
!                      Name_Val
        then
           if Nkind (N) = N_Subprogram_Renaming_Declaration
             and then Present (Corresponding_Formal_Spec (N))
*************** package body Sem_Ch8 is
*** 4399,4406 ****
        elsif Is_Concurrent_Type (Scope (E)) then
           P := Parent (N);
           while Present (P)
!            and then not Nkind_In (P, N_Parameter_Specification,
!                                      N_Component_Declaration)
           loop
              P := Parent (P);
           end loop;
--- 4581,4588 ----
        elsif Is_Concurrent_Type (Scope (E)) then
           P := Parent (N);
           while Present (P)
!            and then Nkind (P) not in
!              N_Parameter_Specification | N_Component_Declaration
           loop
              P := Parent (P);
           end loop;
*************** package body Sem_Ch8 is
*** 4638,4645 ****
              Pop_Scope;
  
              while not (Is_List_Member (Decl))
!               or else Nkind_In (Parent (Decl), N_Protected_Definition,
!                                                N_Task_Definition)
              loop
                 Decl := Parent (Decl);
              end loop;
--- 4820,4827 ----
              Pop_Scope;
  
              while not (Is_List_Member (Decl))
!               or else Nkind (Parent (Decl)) in N_Protected_Definition
!                                              | N_Task_Definition
              loop
                 Decl := Parent (Decl);
              end loop;
*************** package body Sem_Ch8 is
*** 4889,4900 ****
     -- Find_Direct_Name --
     ----------------------
  
!    procedure Find_Direct_Name
!      (N            : Node_Id;
!       Errors_OK    : Boolean := True;
!       Marker_OK    : Boolean := True;
!       Reference_OK : Boolean := True)
!    is
        E   : Entity_Id;
        E2  : Entity_Id;
        Msg : Boolean;
--- 5071,5077 ----
     -- Find_Direct_Name --
     ----------------------
  
!    procedure Find_Direct_Name (N : Node_Id) is
        E   : Entity_Id;
        E2  : Entity_Id;
        Msg : Boolean;
*************** package body Sem_Ch8 is
*** 4930,4936 ****
        --  not know what procedure is being called if the procedure might be
        --  overloaded, so it is premature to go setting referenced flags or
        --  making calls to Generate_Reference. We will wait till Resolve_Actuals
!       --  for that processing
  
        function Known_But_Invisible (E : Entity_Id) return Boolean;
        --  This function determines whether a reference to the entity E, which
--- 5107,5118 ----
        --  not know what procedure is being called if the procedure might be
        --  overloaded, so it is premature to go setting referenced flags or
        --  making calls to Generate_Reference. We will wait till Resolve_Actuals
!       --  for that processing.
!       --  Note: there is a similar routine Sem_Util.Is_Actual_Parameter, but
!       --  it works for both function and procedure calls, while here we are
!       --  only concerned with procedure calls (and with entry calls as well,
!       --  but they are parsed as procedure calls and only later rewritten to
!       --  entry calls).
  
        function Known_But_Invisible (E : Entity_Id) return Boolean;
        --  This function determines whether a reference to the entity E, which
*************** package body Sem_Ch8 is
*** 5051,5065 ****
  
        function Is_Actual_Parameter return Boolean is
        begin
!          return
!            Nkind (N) = N_Identifier
!              and then
!                (Nkind (Parent (N)) = N_Procedure_Call_Statement
!                  or else
!                    (Nkind (Parent (N)) = N_Parameter_Association
!                      and then N = Explicit_Actual_Parameter (Parent (N))
!                      and then Nkind (Parent (Parent (N))) =
!                                           N_Procedure_Call_Statement));
        end Is_Actual_Parameter;
  
        -------------------------
--- 5233,5256 ----
  
        function Is_Actual_Parameter return Boolean is
        begin
!          if Nkind (N) = N_Identifier then
!             case Nkind (Parent (N)) is
!                when N_Procedure_Call_Statement =>
!                   return Is_List_Member (N)
!                     and then List_Containing (N) =
!                       Parameter_Associations (Parent (N));
! 
!                when N_Parameter_Association =>
!                   return N = Explicit_Actual_Parameter (Parent (N))
!                     and then Nkind (Parent (Parent (N))) =
!                                N_Procedure_Call_Statement;
! 
!                when others =>
!                   return False;
!             end case;
!          else
!             return False;
!          end if;
        end Is_Actual_Parameter;
  
        -------------------------
*************** package body Sem_Ch8 is
*** 5147,5156 ****
           Item      : Node_Id;
  
        begin
-          if not Errors_OK then
-             return;
-          end if;
- 
           --  Ada 2005 (AI-262): Generate a precise error concerning the
           --  Beaujolais effect that was previously detected
  
--- 5338,5343 ----
*************** package body Sem_Ch8 is
*** 5318,5325 ****
  
           --  Named aggregate should also be handled similarly ???
  
!          if Errors_OK
!            and then Nkind (N) = N_Identifier
             and then Nkind (Parent (N)) = N_Case_Statement_Alternative
           then
              declare
--- 5505,5511 ----
  
           --  Named aggregate should also be handled similarly ???
  
!          if Nkind (N) = N_Identifier
             and then Nkind (Parent (N)) = N_Case_Statement_Alternative
           then
              declare
*************** package body Sem_Ch8 is
*** 5345,5351 ****
                       return;
                    end if;
  
!                   Lit := Next_Literal (Lit);
                 end if;
              end;
           end if;
--- 5531,5537 ----
                       return;
                    end if;
  
!                   Next_Literal (Lit);
                 end if;
              end;
           end if;
*************** package body Sem_Ch8 is
*** 5355,5476 ****
           Set_Entity (N, Any_Id);
           Set_Etype  (N, Any_Type);
  
!          if Errors_OK then
! 
!             --  We use the table Urefs to keep track of entities for which we
!             --  have issued errors for undefined references. Multiple errors
!             --  for a single name are normally suppressed, however we modify
!             --  the error message to alert the programmer to this effect.
! 
!             for J in Urefs.First .. Urefs.Last loop
!                if Chars (N) = Chars (Urefs.Table (J).Node) then
!                   if Urefs.Table (J).Err /= No_Error_Msg
!                     and then Sloc (N) /= Urefs.Table (J).Loc
!                   then
!                      Error_Msg_Node_1 := Urefs.Table (J).Node;
  
!                      if Urefs.Table (J).Nvis then
!                         Change_Error_Text (Urefs.Table (J).Err,
!                           "& is not visible (more references follow)");
!                      else
!                         Change_Error_Text (Urefs.Table (J).Err,
!                           "& is undefined (more references follow)");
!                      end if;
  
!                      Urefs.Table (J).Err := No_Error_Msg;
                    end if;
  
!                   --  Although we will set Msg False, and thus suppress the
!                   --  message, we also set Error_Posted True, to avoid any
!                   --  cascaded messages resulting from the undefined reference.
! 
!                   Msg := False;
!                   Set_Error_Posted (N);
!                   return;
                 end if;
-             end loop;
  
!             --  If entry not found, this is first undefined occurrence
  
!             if Nvis then
!                Error_Msg_N ("& is not visible!", N);
!                Emsg := Get_Msg_Id;
  
!             else
!                Error_Msg_N ("& is undefined!", N);
!                Emsg := Get_Msg_Id;
  
!                --  A very bizarre special check, if the undefined identifier
!                --  is Put or Put_Line, then add a special error message (since
!                --  this is a very common error for beginners to make).
  
!                if Nam_In (Chars (N), Name_Put, Name_Put_Line) then
!                   Error_Msg_N -- CODEFIX
!                     ("\\possible missing `WITH Ada.Text_'I'O; " &
!                      "USE Ada.Text_'I'O`!", N);
  
!                --  Another special check if N is the prefix of a selected
!                --  component which is a known unit: add message complaining
!                --  about missing with for this unit.
  
!                elsif Nkind (Parent (N)) = N_Selected_Component
!                  and then N = Prefix (Parent (N))
!                  and then Is_Known_Unit (Parent (N))
!                then
!                   Error_Msg_Node_2 := Selector_Name (Parent (N));
!                   Error_Msg_N -- CODEFIX
!                     ("\\missing `WITH &.&;`", Prefix (Parent (N)));
!                end if;
  
!                --  Now check for possible misspellings
  
                 declare
!                   E      : Entity_Id;
!                   Ematch : Entity_Id := Empty;
! 
!                   Last_Name_Id : constant Name_Id :=
!                                    Name_Id (Nat (First_Name_Id) +
!                                               Name_Entries_Count - 1);
! 
                 begin
!                   for Nam in First_Name_Id .. Last_Name_Id loop
!                      E := Get_Name_Entity_Id (Nam);
  
!                      if Present (E)
!                         and then (Is_Immediately_Visible (E)
!                                     or else
!                                   Is_Potentially_Use_Visible (E))
!                      then
!                         if Is_Bad_Spelling_Of (Chars (N), Nam) then
!                            Ematch := E;
!                            exit;
!                         end if;
!                      end if;
!                   end loop;
  
!                   if Present (Ematch) then
!                      Error_Msg_NE -- CODEFIX
!                        ("\possible misspelling of&", N, Ematch);
                    end if;
                 end;
              end if;
  
!             --  Make entry in undefined references table unless the full errors
!             --  switch is set, in which case by refraining from generating the
!             --  table entry we guarantee that we get an error message for every
!             --  undefined reference. The entry is not added if we are ignoring
!             --  errors.
  
!             if not All_Errors_Mode and then Ignore_Errors_Enable = 0 then
!                Urefs.Append (
!                  (Node => N,
!                   Err  => Emsg,
!                   Nvis => Nvis,
!                   Loc  => Sloc (N)));
!             end if;
  
!             Msg := True;
           end if;
        end Undefined;
  
        --  Local variables
--- 5541,5673 ----
           Set_Entity (N, Any_Id);
           Set_Etype  (N, Any_Type);
  
!          --  We use the table Urefs to keep track of entities for which we
!          --  have issued errors for undefined references. Multiple errors
!          --  for a single name are normally suppressed, however we modify
!          --  the error message to alert the programmer to this effect.
  
!          for J in Urefs.First .. Urefs.Last loop
!             if Chars (N) = Chars (Urefs.Table (J).Node) then
!                if Urefs.Table (J).Err /= No_Error_Msg
!                  and then Sloc (N) /= Urefs.Table (J).Loc
!                then
!                   Error_Msg_Node_1 := Urefs.Table (J).Node;
  
!                   if Urefs.Table (J).Nvis then
!                      Change_Error_Text (Urefs.Table (J).Err,
!                        "& is not visible (more references follow)");
!                   else
!                      Change_Error_Text (Urefs.Table (J).Err,
!                        "& is undefined (more references follow)");
                    end if;
  
!                   Urefs.Table (J).Err := No_Error_Msg;
                 end if;
  
!                --  Although we will set Msg False, and thus suppress the
!                --  message, we also set Error_Posted True, to avoid any
!                --  cascaded messages resulting from the undefined reference.
  
!                Msg := False;
!                Set_Error_Posted (N);
!                return;
!             end if;
!          end loop;
  
!          --  If entry not found, this is first undefined occurrence
  
!          if Nvis then
!             Error_Msg_N ("& is not visible!", N);
!             Emsg := Get_Msg_Id;
  
!          else
!             Error_Msg_N ("& is undefined!", N);
!             Emsg := Get_Msg_Id;
  
!             --  A very bizarre special check, if the undefined identifier
!             --  is Put or Put_Line, then add a special error message (since
!             --  this is a very common error for beginners to make).
  
!             if Chars (N) in Name_Put | Name_Put_Line then
!                Error_Msg_N -- CODEFIX
!                  ("\\possible missing `WITH Ada.Text_'I'O; " &
!                   "USE Ada.Text_'I'O`!", N);
  
!             --  Another special check if N is the prefix of a selected
!             --  component which is a known unit: add message complaining
!             --  about missing with for this unit.
  
+             elsif Nkind (Parent (N)) = N_Selected_Component
+               and then N = Prefix (Parent (N))
+               and then Is_Known_Unit (Parent (N))
+             then
                 declare
!                   P : Node_Id := Parent (N);
                 begin
!                   Error_Msg_Name_1 := Chars (N);
!                   Error_Msg_Name_2 := Chars (Selector_Name (P));
  
!                   if Nkind (Parent (P)) = N_Selected_Component
!                     and then Is_Known_Unit (Parent (P))
!                   then
!                      P := Parent (P);
!                      Error_Msg_Name_3 := Chars (Selector_Name (P));
!                      Error_Msg_N -- CODEFIX
!                        ("\\missing `WITH %.%.%;`", N);
  
!                   else
!                      Error_Msg_N -- CODEFIX
!                        ("\\missing `WITH %.%;`", N);
                    end if;
                 end;
              end if;
  
!             --  Now check for possible misspellings
  
!             declare
!                E      : Entity_Id;
!                Ematch : Entity_Id := Empty;
!             begin
!                for Nam in First_Name_Id .. Last_Name_Id loop
!                   E := Get_Name_Entity_Id (Nam);
  
!                   if Present (E)
!                      and then (Is_Immediately_Visible (E)
!                                  or else
!                                Is_Potentially_Use_Visible (E))
!                   then
!                      if Is_Bad_Spelling_Of (Chars (N), Nam) then
!                         Ematch := E;
!                         exit;
!                      end if;
!                   end if;
!                end loop;
! 
!                if Present (Ematch) then
!                   Error_Msg_NE -- CODEFIX
!                     ("\possible misspelling of&", N, Ematch);
!                end if;
!             end;
!          end if;
! 
!          --  Make entry in undefined references table unless the full errors
!          --  switch is set, in which case by refraining from generating the
!          --  table entry we guarantee that we get an error message for every
!          --  undefined reference. The entry is not added if we are ignoring
!          --  errors.
! 
!          if not All_Errors_Mode
!            and then Ignore_Errors_Enable = 0
!            and then not Get_Ignore_Errors
!          then
!             Urefs.Append (
!               (Node => N,
!                Err  => Emsg,
!                Nvis => Nvis,
!                Loc  => Sloc (N)));
           end if;
+ 
+          Msg := True;
        end Undefined;
  
        --  Local variables
*************** package body Sem_Ch8 is
*** 5489,5494 ****
--- 5686,5706 ----
           if Is_Type (Entity (N)) then
              Set_Etype (N, Entity (N));
  
+          --  The exception to this general rule are constants associated with
+          --  discriminals of protected types because for each protected op
+          --  a new set of discriminals is internally created by the frontend
+          --  (see Exp_Ch9.Set_Discriminals), and the current decoration of the
+          --  entity pointer may have been set as part of a preanalysis, where
+          --  discriminals still reference the first subprogram or entry to be
+          --  expanded (see Expand_Protected_Body_Declarations).
+ 
+          elsif Full_Analysis
+            and then Ekind (Entity (N)) = E_Constant
+            and then Present (Discriminal_Link (Entity (N)))
+            and then Is_Protected_Type (Scope (Discriminal_Link (Entity (N))))
+          then
+             goto Find_Name;
+ 
           else
              declare
                 Entyp : constant Entity_Id := Etype (Entity (N));
*************** package body Sem_Ch8 is
*** 5500,5507 ****
                 --  happens for trees generated from Exp_Pakd, where expressions
                 --  can be deliberately "mis-typed" to the packed array type.
  
!                if Is_Array_Type (Entyp)
!                  and then Is_Packed (Entyp)
                   and then Present (Etype (N))
                   and then Etype (N) = Packed_Array_Impl_Type (Entyp)
                 then
--- 5712,5718 ----
                 --  happens for trees generated from Exp_Pakd, where expressions
                 --  can be deliberately "mis-typed" to the packed array type.
  
!                if Is_Packed_Array (Entyp)
                   and then Present (Etype (N))
                   and then Etype (N) = Packed_Array_Impl_Type (Entyp)
                 then
*************** package body Sem_Ch8 is
*** 5529,5534 ****
--- 5740,5747 ----
           return;
        end if;
  
+       <<Find_Name>>
+ 
        --  Preserve relevant elaboration-related attributes of the context which
        --  are no longer available or very expensive to recompute once analysis,
        --  resolution, and expansion are over.
*************** package body Sem_Ch8 is
*** 5614,5620 ****
                 --  outside the instance.
  
                 if From_Actual_Package (E)
!                  and then Scope_Depth (E2) < Scope_Depth (Inst)
                 then
                    goto Found;
                 else
--- 5827,5833 ----
                 --  outside the instance.
  
                 if From_Actual_Package (E)
!                  and then Scope_Depth (Scope (E2)) < Scope_Depth (Inst)
                 then
                    goto Found;
                 else
*************** package body Sem_Ch8 is
*** 5895,5901 ****
              --  If no homonyms were visible, the entity is unambiguous
  
              if not Is_Overloaded (N) then
!                if Reference_OK and then not Is_Actual_Parameter then
                    Generate_Reference (E, N);
                 end if;
              end if;
--- 6108,6114 ----
              --  If no homonyms were visible, the entity is unambiguous
  
              if not Is_Overloaded (N) then
!                if not Is_Actual_Parameter then
                    Generate_Reference (E, N);
                 end if;
              end if;
*************** package body Sem_Ch8 is
*** 5914,5921 ****
              --  in SPARK mode where renamings are traversed for generating
              --  local effects of subprograms.
  
!             if Reference_OK
!               and then Is_Object (E)
                and then Present (Renamed_Object (E))
                and then not GNATprove_Mode
              then
--- 6127,6133 ----
              --  in SPARK mode where renamings are traversed for generating
              --  local effects of subprograms.
  
!             if Is_Object (E)
                and then Present (Renamed_Object (E))
                and then not GNATprove_Mode
              then
*************** package body Sem_Ch8 is
*** 5943,5951 ****
  
                 begin
                    --  Generate reference unless this is an actual parameter
!                   --  (see comment below)
  
!                   if Reference_OK and then Is_Actual_Parameter then
                       Generate_Reference (E, N);
                       Set_Referenced (E, R);
                    end if;
--- 6155,6163 ----
  
                 begin
                    --  Generate reference unless this is an actual parameter
!                   --  (see comment below).
  
!                   if not Is_Actual_Parameter then
                       Generate_Reference (E, N);
                       Set_Referenced (E, R);
                    end if;
*************** package body Sem_Ch8 is
*** 5954,5964 ****
              --  Normal case, not a label: generate reference
  
              else
!                if Reference_OK and then not Is_Actual_Parameter then
  
                    --  Package or generic package is always a simple reference
  
!                   if Ekind_In (E, E_Package, E_Generic_Package) then
                       Generate_Reference (E, N, 'r');
  
                    --  Else see if we have a left hand side
--- 6166,6176 ----
              --  Normal case, not a label: generate reference
  
              else
!                if not Is_Actual_Parameter then
  
                    --  Package or generic package is always a simple reference
  
!                   if Is_Package_Or_Generic_Package (E) then
                       Generate_Reference (E, N, 'r');
  
                    --  Else see if we have a left hand side
*************** package body Sem_Ch8 is
*** 5974,5980 ****
                          --  If we don't know now, generate reference later
  
                          when Unknown =>
!                            Deferred_References.Append ((E, N));
                       end case;
                    end if;
                 end if;
--- 6186,6192 ----
                          --  If we don't know now, generate reference later
  
                          when Unknown =>
!                            Defer_Reference ((E, N));
                       end case;
                    end if;
                 end if;
*************** package body Sem_Ch8 is
*** 5989,5997 ****
              if Ada_Version >= Ada_2012
                and then
                  (Nkind (Parent (N)) in N_Subexpr
!                   or else Nkind_In (Parent (N), N_Assignment_Statement,
!                                                 N_Object_Declaration,
!                                                 N_Parameter_Association))
              then
                 Check_Implicit_Dereference (N, Etype (E));
              end if;
--- 6201,6209 ----
              if Ada_Version >= Ada_2012
                and then
                  (Nkind (Parent (N)) in N_Subexpr
!                   or else Nkind (Parent (N)) in N_Assignment_Statement
!                                               | N_Object_Declaration
!                                               | N_Parameter_Association)
              then
                 Check_Implicit_Dereference (N, Etype (E));
              end if;
*************** package body Sem_Ch8 is
*** 6023,6033 ****
        --  reference is a write when it appears on the left hand side of an
        --  assignment.
  
!       if Marker_OK
!         and then Needs_Variable_Reference_Marker
!                    (N        => N,
!                     Calls_OK => False)
!       then
           declare
              Is_Assignment_LHS : constant Boolean := Is_LHS (N) = Yes;
  
--- 6235,6241 ----
        --  reference is a write when it appears on the left hand side of an
        --  assignment.
  
!       if Needs_Variable_Reference_Marker (N => N, Calls_OK => False) then
           declare
              Is_Assignment_LHS : constant Boolean := Is_LHS (N) = Yes;
  
*************** package body Sem_Ch8 is
*** 6078,6090 ****
           Par := Nod;
           while Present (Par) loop
              if Nkind (Par) = N_Pragma then
!                if Nam_In (Pragma_Name_Unmapped (Par),
!                           Name_Abstract_State,
!                           Name_Depends,
!                           Name_Global,
!                           Name_Initializes,
!                           Name_Refined_Depends,
!                           Name_Refined_Global)
                 then
                    return True;
  
--- 6286,6298 ----
           Par := Nod;
           while Present (Par) loop
              if Nkind (Par) = N_Pragma then
!                if Pragma_Name_Unmapped (Par)
!                     in Name_Abstract_State
!                      | Name_Depends
!                      | Name_Global
!                      | Name_Initializes
!                      | Name_Refined_Depends
!                      | Name_Refined_Global
                 then
                    return True;
  
*************** package body Sem_Ch8 is
*** 6128,6133 ****
--- 6336,6357 ----
        then
           P_Name := Renamed_Object (P_Name);
  
+          if From_Limited_With (P_Name)
+            and then not Unit_Is_Visible (Cunit (Get_Source_Unit (P_Name)))
+          then
+             Error_Msg_NE
+               ("renaming of limited view of package & not usable in this"
+                & " context (RM 8.5.3(3.1/2))", Prefix (N), P_Name);
+ 
+          elsif Has_Limited_View (P_Name)
+            and then not Unit_Is_Visible (Cunit (Get_Source_Unit (P_Name)))
+            and then not Is_Visible_Through_Renamings (P_Name)
+          then
+             Error_Msg_NE
+               ("renaming of limited view of package & not usable in this"
+                & " context (RM 8.5.3(3.1/2))", Prefix (N), P_Name);
+          end if;
+ 
           --  Rewrite node with entity field pointing to renamed object
  
           Rewrite (Prefix (N), New_Copy (Prefix (N)));
*************** package body Sem_Ch8 is
*** 6185,6191 ****
              --  The non-limited view may itself be incomplete, in which case
              --  get the full view if available.
  
!             elsif Ekind_In (Id, E_Incomplete_Type, E_Class_Wide_Type)
                and then From_Limited_With (Id)
                and then Present (Non_Limited_View (Id))
                and then Scope (Non_Limited_View (Id)) = P_Name
--- 6409,6415 ----
              --  The non-limited view may itself be incomplete, in which case
              --  get the full view if available.
  
!             elsif Ekind (Id) in E_Incomplete_Type | E_Class_Wide_Type
                and then From_Limited_With (Id)
                and then Present (Non_Limited_View (Id))
                and then Scope (Non_Limited_View (Id)) = P_Name
*************** package body Sem_Ch8 is
*** 6193,6198 ****
--- 6417,6435 ----
                 Candidate        := Get_Full_View (Non_Limited_View (Id));
                 Is_New_Candidate := True;
  
+             --  Handle special case where the prefix is a renaming of a shadow
+             --  package which is visible. Required to avoid reporting spurious
+             --  errors.
+ 
+             elsif Ekind (P_Name) = E_Package
+               and then From_Limited_With (P_Name)
+               and then not From_Limited_With (Id)
+               and then Sloc (Scope (Id)) = Sloc (P_Name)
+               and then Unit_Is_Visible (Cunit (Get_Source_Unit (P_Name)))
+             then
+                Candidate        := Get_Full_View (Id);
+                Is_New_Candidate := True;
+ 
              --  An unusual case arises with a fully qualified name for an
              --  entity local to a generic child unit package, within an
              --  instantiation of that package. The name of the unit now
*************** package body Sem_Ch8 is
*** 6239,6245 ****
        end;
  
        if No (Id)
!         and then Ekind_In (P_Name, E_Procedure, E_Function)
          and then Is_Generic_Instance (P_Name)
        then
           --  Expanded name denotes entity in (instance of) generic subprogram.
--- 6476,6482 ----
        end;
  
        if No (Id)
!         and then Ekind (P_Name) in E_Procedure | E_Function
          and then Is_Generic_Instance (P_Name)
        then
           --  Expanded name denotes entity in (instance of) generic subprogram.
*************** package body Sem_Ch8 is
*** 6370,6378 ****
  
                          exit when S = Standard_Standard;
  
!                         if Ekind_In (S, E_Function,
!                                         E_Package,
!                                         E_Procedure)
                          then
                             P :=
                               Generic_Parent (Specification
--- 6607,6613 ----
  
                          exit when S = Standard_Standard;
  
!                         if Ekind (S) in E_Function | E_Package | E_Procedure
                          then
                             P :=
                               Generic_Parent (Specification
*************** package body Sem_Ch8 is
*** 6593,6599 ****
                 Generate_Reference (Id, N, 'r');
  
              when Unknown =>
!                Deferred_References.Append ((Id, N));
           end case;
        end if;
  
--- 6828,6834 ----
                 Generate_Reference (Id, N, 'r');
  
              when Unknown =>
!                Defer_Reference ((Id, N));
           end case;
        end if;
  
*************** package body Sem_Ch8 is
*** 7094,7103 ****
        --  is an array type we may already have a usable subtype for it, so we
        --  can use it rather than generating a new one, because the bounds
        --  will be the values of the discriminants and not discriminant refs.
!       --  This simplifies value tracing in GNATProve. For consistency, both
        --  the entity name and the subtype come from the constrained component.
  
!       --  This is only used in GNATProve mode: when generating code it may be
        --  necessary to create an itype in the scope of use of the selected
        --  component, e.g. in the context of a expanded record equality.
  
--- 7329,7338 ----
        --  is an array type we may already have a usable subtype for it, so we
        --  can use it rather than generating a new one, because the bounds
        --  will be the values of the discriminants and not discriminant refs.
!       --  This simplifies value tracing in GNATprove. For consistency, both
        --  the entity name and the subtype come from the constrained component.
  
!       --  This is only used in GNATprove mode: when generating code it may be
        --  necessary to create an itype in the scope of use of the selected
        --  component, e.g. in the context of a expanded record equality.
  
*************** package body Sem_Ch8 is
*** 7163,7169 ****
                 return True;
              end if;
  
!             Clause := Next (Clause);
           end loop;
  
           return False;
--- 7398,7404 ----
                 return True;
              end if;
  
!             Next (Clause);
           end loop;
  
           return False;
*************** package body Sem_Ch8 is
*** 7178,7198 ****
           return;
        end if;
  
-       --  Selector name cannot be a character literal or an operator symbol in
-       --  SPARK, except for the operator symbol in a renaming.
- 
-       if Restriction_Check_Required (SPARK_05) then
-          if Nkind (Selector_Name (N)) = N_Character_Literal then
-             Check_SPARK_05_Restriction
-               ("character literal cannot be prefixed", N);
-          elsif Nkind (Selector_Name (N)) = N_Operator_Symbol
-            and then Nkind (Parent (N)) /= N_Subprogram_Renaming_Declaration
-          then
-             Check_SPARK_05_Restriction
-               ("operator symbol cannot be prefixed", N);
-          end if;
-       end if;
- 
        --  If the selector already has an entity, the node has been constructed
        --  in the course of expansion, and is known to be valid. Do not verify
        --  that it is defined for the type (it may be a private component used
--- 7413,7418 ----
*************** package body Sem_Ch8 is
*** 7280,7302 ****
                 Set_Etype (N, C_Etype);
              end;
  
-             --  If this is the name of an entry or protected operation, and
-             --  the prefix is an access type, insert an explicit dereference,
-             --  so that entry calls are treated uniformly.
- 
-             if Is_Access_Type (Etype (P))
-               and then Is_Concurrent_Type (Designated_Type (Etype (P)))
-             then
-                declare
-                   New_P : constant Node_Id :=
-                             Make_Explicit_Dereference (Sloc (P),
-                               Prefix => Relocate_Node (P));
-                begin
-                   Rewrite (P, New_P);
-                   Set_Etype (P, Designated_Type (Etype (Prefix (P))));
-                end;
-             end if;
- 
           --  If the selected component appears within a default expression
           --  and it has an actual subtype, the preanalysis has not yet
           --  completed its analysis, because Insert_Actions is disabled in
--- 7500,7505 ----
*************** package body Sem_Ch8 is
*** 7340,7376 ****
              Write_Entity_Info (P_Type, "      "); Write_Eol;
           end if;
  
!          --  The designated type may be a limited view with no components.
!          --  Check whether the non-limited view is available, because in some
!          --  cases this will not be set when installing the context. Rewrite
!          --  the node by introducing an explicit dereference at once, and
!          --  setting the type of the rewritten prefix to the non-limited view
!          --  of the original designated type.
  
           if Is_Access_Type (P_Type) then
!             declare
!                Desig_Typ : constant Entity_Id :=
!                              Directly_Designated_Type (P_Type);
! 
!             begin
!                if Is_Incomplete_Type (Desig_Typ)
!                  and then From_Limited_With (Desig_Typ)
!                  and then Present (Non_Limited_View (Desig_Typ))
!                then
!                   Rewrite (P,
!                     Make_Explicit_Dereference (Sloc (P),
!                       Prefix => Relocate_Node (P)));
! 
!                   Set_Etype (P, Get_Full_View (Non_Limited_View (Desig_Typ)));
!                   P_Type := Etype (P);
!                end if;
!             end;
           end if;
  
           --  First check for components of a record object (not the
           --  result of a call, which is handled below).
  
!          if Is_Appropriate_For_Record (P_Type)
             and then not Is_Overloadable (P_Name)
             and then not Is_Type (P_Name)
           then
--- 7543,7558 ----
              Write_Entity_Info (P_Type, "      "); Write_Eol;
           end if;
  
!          --  If the prefix's type is an access type, get to the record type
  
           if Is_Access_Type (P_Type) then
!             P_Type := Implicitly_Designated_Type (P_Type);
           end if;
  
           --  First check for components of a record object (not the
           --  result of a call, which is handled below).
  
!          if Has_Components (P_Type)
             and then not Is_Overloadable (P_Name)
             and then not Is_Type (P_Name)
           then
*************** package body Sem_Ch8 is
*** 7384,7390 ****
  
           --  Reference to type name in predicate/invariant expression
  
!          elsif Is_Appropriate_For_Entry_Prefix (P_Type)
             and then not In_Open_Scopes (P_Name)
             and then (not Is_Concurrent_Type (Etype (P_Name))
                        or else not In_Open_Scopes (Etype (P_Name)))
--- 7566,7572 ----
  
           --  Reference to type name in predicate/invariant expression
  
!          elsif Is_Concurrent_Type (P_Type)
             and then not In_Open_Scopes (P_Name)
             and then (not Is_Concurrent_Type (Etype (P_Name))
                        or else not In_Open_Scopes (Etype (P_Name)))
*************** package body Sem_Ch8 is
*** 7432,7438 ****
              --  The subprogram may be a renaming (of an enclosing scope) as
              --  in the case of the name of the generic within an instantiation.
  
!             if Ekind_In (P_Name, E_Procedure, E_Function)
                and then Present (Alias (P_Name))
                and then Is_Generic_Instance (Alias (P_Name))
              then
--- 7614,7620 ----
              --  The subprogram may be a renaming (of an enclosing scope) as
              --  in the case of the name of the generic within an instantiation.
  
!             if Ekind (P_Name) in E_Procedure | E_Function
                and then Present (Alias (P_Name))
                and then Is_Generic_Instance (Alias (P_Name))
              then
*************** package body Sem_Ch8 is
*** 7535,7542 ****
                    --  routines, but this is too tricky for that.
  
                    --  Note that using Rewrite would be wrong, because we would
!                   --  have a tree where the original node is unanalyzed, and
!                   --  this violates the required interface for ASIS.
  
                    Replace (P,
                      Make_Function_Call (Sloc (P), Name => Nam));
--- 7717,7723 ----
                    --  routines, but this is too tricky for that.
  
                    --  Note that using Rewrite would be wrong, because we would
!                   --  have a tree where the original node is unanalyzed.
  
                    Replace (P,
                      Make_Function_Call (Sloc (P), Name => Nam));
*************** package body Sem_Ch8 is
*** 7564,7579 ****
           else
              --  Format node as expanded name, to avoid cascaded errors
  
-             --  If the limited_with transformation was applied earlier, restore
-             --  source for proper error reporting.
- 
-             if not Comes_From_Source (P)
-               and then Nkind (P) = N_Explicit_Dereference
-             then
-                Rewrite (P, Prefix (P));
-                P_Type := Etype (P);
-             end if;
- 
              Change_Selected_Component_To_Expanded_Name (N);
              Set_Entity (N, Any_Id);
              Set_Etype  (N, Any_Type);
--- 7745,7750 ----
*************** package body Sem_Ch8 is
*** 7586,7594 ****
  
              --  It is not an error if the prefix is the current instance of
              --  type name, e.g. the expression of a type aspect, when it is
!             --  analyzed for ASIS use, or within a generic unit. We still
!             --  have to verify that a component of that name exists, and
!             --  decorate the node accordingly.
  
              elsif Is_Entity_Name (P) and then Is_Current_Instance (P) then
                 declare
--- 7757,7765 ----
  
              --  It is not an error if the prefix is the current instance of
              --  type name, e.g. the expression of a type aspect, when it is
!             --  analyzed within a generic unit. We still have to verify that a
!             --  component of that name exists, and decorate the node
!             --  accordingly.
  
              elsif Is_Entity_Name (P) and then Is_Current_Instance (P) then
                 declare
*************** package body Sem_Ch8 is
*** 7635,7642 ****
  
                 Error_Msg_N ("invalid prefix in selected component&", P);
  
!                if Is_Access_Type (P_Type)
!                  and then Ekind (Designated_Type (P_Type)) = E_Incomplete_Type
                 then
                    Error_Msg_N
                      ("\dereference must not be of an incomplete type "
--- 7806,7813 ----
  
                 Error_Msg_N ("invalid prefix in selected component&", P);
  
!                if Is_Incomplete_Type (P_Type)
!                  and then Is_Access_Type (Etype (P))
                 then
                    Error_Msg_N
                      ("\dereference must not be of an incomplete type "
*************** package body Sem_Ch8 is
*** 7647,7667 ****
                 Error_Msg_N ("invalid prefix in selected component", P);
              end if;
           end if;
- 
-          --  Selector name is restricted in SPARK
- 
-          if Nkind (N) = N_Expanded_Name
-            and then Restriction_Check_Required (SPARK_05)
-          then
-             if Is_Subprogram (P_Name) then
-                Check_SPARK_05_Restriction
-                  ("prefix of expanded name cannot be a subprogram", P);
-             elsif Ekind (P_Name) = E_Loop then
-                Check_SPARK_05_Restriction
-                  ("prefix of expanded name cannot be a loop statement", P);
-             end if;
-          end if;
- 
        else
           --  If prefix is not the name of an entity, it must be an expression,
           --  whose type is appropriate for a record. This is determined by
--- 7818,7823 ----
*************** package body Sem_Ch8 is
*** 7745,7751 ****
  
                       elsif Warn_On_Obsolescent_Feature and then False then
                          Error_Msg_N
!                           ("applying 'Class to an untagged incomplete type"
                             & " is an obsolescent feature (RM J.11)?r?", N);
                       end if;
                    end if;
--- 7901,7907 ----
  
                       elsif Warn_On_Obsolescent_Feature and then False then
                          Error_Msg_N
!                           ("applying ''Class to an untagged incomplete type"
                             & " is an obsolescent feature (RM J.11)?r?", N);
                       end if;
                    end if;
*************** package body Sem_Ch8 is
*** 7819,7828 ****
           --  Base attribute, not allowed in Ada 83
  
           elsif Attribute_Name (N) = Name_Base then
-             Error_Msg_Name_1 := Name_Base;
-             Check_SPARK_05_Restriction
-               ("attribute% is only allowed as prefix of another attribute", N);
- 
              if Ada_Version = Ada_83 and then Comes_From_Source (N) then
                 Error_Msg_N
                   ("(Ada 83) Base attribute not allowed in subtype mark", N);
--- 7975,7980 ----
*************** package body Sem_Ch8 is
*** 7924,7930 ****
              --  limited-with clauses
  
              if From_Limited_With (T_Name)
!               and then Ekind (T_Name) in Incomplete_Kind
                and then Present (Non_Limited_View (T_Name))
                and then Is_Interface (Non_Limited_View (T_Name))
              then
--- 8076,8082 ----
              --  limited-with clauses
  
              if From_Limited_With (T_Name)
!               and then Is_Incomplete_Type (T_Name)
                and then Present (Non_Limited_View (T_Name))
                and then Is_Interface (Non_Limited_View (T_Name))
              then
*************** package body Sem_Ch8 is
*** 8009,8014 ****
--- 8161,8180 ----
        end if;
     end Find_Type;
  
+    --------------------
+    -- Has_Components --
+    --------------------
+ 
+    function Has_Components (Typ : Entity_Id) return Boolean is
+    begin
+       return Is_Record_Type (Typ)
+         or else (Is_Private_Type (Typ) and then Has_Discriminants (Typ))
+         or else (Is_Task_Type (Typ) and then Has_Discriminants (Typ))
+         or else (Is_Incomplete_Type (Typ)
+                   and then From_Limited_With (Typ)
+                   and then Is_Record_Type (Available_View (Typ)));
+    end Has_Components;
+ 
     ------------------------------------
     -- Has_Implicit_Character_Literal --
     ------------------------------------
*************** package body Sem_Ch8 is
*** 8145,8155 ****
                    else
                       Add_One_Interp (N, Predef_Op2, T);
                    end if;
- 
                 else
                    if not Is_Binary_Op then
                       Add_One_Interp (N, Predef_Op, T);
!                   else
                       Add_One_Interp (N, Predef_Op2, T);
                    end if;
                 end if;
--- 8311,8323 ----
                    else
                       Add_One_Interp (N, Predef_Op2, T);
                    end if;
                 else
                    if not Is_Binary_Op then
                       Add_One_Interp (N, Predef_Op, T);
! 
!                   --  Predef_Op2 may be empty in case of previous errors
! 
!                   elsif Present (Predef_Op2) then
                       Add_One_Interp (N, Predef_Op2, T);
                    end if;
                 end if;
*************** package body Sem_Ch8 is
*** 8407,8413 ****
  
           pragma Assert (No (Old_F));
  
!          if Ekind_In (Old_S, E_Function, E_Enumeration_Literal) then
              Set_Etype (New_S, Etype (Old_S));
           end if;
        end if;
--- 8575,8581 ----
  
           pragma Assert (No (Old_F));
  
!          if Ekind (Old_S) in E_Function | E_Enumeration_Literal then
              Set_Etype (New_S, Etype (Old_S));
           end if;
        end if;
*************** package body Sem_Ch8 is
*** 8452,8508 ****
        end loop;
     end Install_Use_Clauses;
  
-    -------------------------------------
-    -- Is_Appropriate_For_Entry_Prefix --
-    -------------------------------------
- 
-    function Is_Appropriate_For_Entry_Prefix (T : Entity_Id) return Boolean is
-       P_Type : Entity_Id := T;
- 
-    begin
-       if Is_Access_Type (P_Type) then
-          P_Type := Designated_Type (P_Type);
-       end if;
- 
-       return Is_Task_Type (P_Type) or else Is_Protected_Type (P_Type);
-    end Is_Appropriate_For_Entry_Prefix;
- 
-    -------------------------------
-    -- Is_Appropriate_For_Record --
-    -------------------------------
- 
-    function Is_Appropriate_For_Record (T : Entity_Id) return Boolean is
- 
-       function Has_Components (T1 : Entity_Id) return Boolean;
-       --  Determine if given type has components (i.e. is either a record
-       --  type or a type that has discriminants).
- 
-       --------------------
-       -- Has_Components --
-       --------------------
- 
-       function Has_Components (T1 : Entity_Id) return Boolean is
-       begin
-          return Is_Record_Type (T1)
-            or else (Is_Private_Type (T1) and then Has_Discriminants (T1))
-            or else (Is_Task_Type (T1) and then Has_Discriminants (T1))
-            or else (Is_Incomplete_Type (T1)
-                      and then From_Limited_With (T1)
-                      and then Present (Non_Limited_View (T1))
-                      and then Is_Record_Type
-                                 (Get_Full_View (Non_Limited_View (T1))));
-       end Has_Components;
- 
-    --  Start of processing for Is_Appropriate_For_Record
- 
-    begin
-       return
-         Present (T)
-           and then (Has_Components (T)
-                      or else (Is_Access_Type (T)
-                                and then Has_Components (Designated_Type (T))));
-    end Is_Appropriate_For_Record;
- 
     ----------------------
     -- Mark_Use_Clauses --
     ----------------------
--- 8620,8625 ----
*************** package body Sem_Ch8 is
*** 8534,8540 ****
           while Present (Curr) loop
              Mark_Use_Type (Curr);
  
!             Curr := Next_Formal (Curr);
           end loop;
  
           --  Handle the return type
--- 8651,8657 ----
           while Present (Curr) loop
              Mark_Use_Type (Curr);
  
!             Next_Formal (Curr);
           end loop;
  
           --  Handle the return type
*************** package body Sem_Ch8 is
*** 8659,8665 ****
        --  Use clauses in and of themselves do not count as a "use" of a
        --  package.
  
!       if Nkind_In (Parent (Id), N_Use_Package_Clause, N_Use_Type_Clause) then
           return;
        end if;
  
--- 8776,8782 ----
        --  Use clauses in and of themselves do not count as a "use" of a
        --  package.
  
!       if Nkind (Parent (Id)) in N_Use_Package_Clause | N_Use_Type_Clause then
           return;
        end if;
  
*************** package body Sem_Ch8 is
*** 8680,8691 ****
  
           --  Mark primitives
  
!          elsif (Ekind (Id) in Overloadable_Kind
!                  or else Ekind_In (Id, E_Generic_Function,
!                                        E_Generic_Procedure))
             and then (Is_Potentially_Use_Visible (Id)
                        or else Is_Intrinsic_Subprogram (Id)
!                       or else (Ekind_In (Id, E_Function, E_Procedure)
                                  and then Is_Generic_Actual_Subprogram (Id)))
           then
              Mark_Parameters (Id);
--- 8797,8807 ----
  
           --  Mark primitives
  
!          elsif (Is_Overloadable (Id)
!                  or else Is_Generic_Subprogram (Id))
             and then (Is_Potentially_Use_Visible (Id)
                        or else Is_Intrinsic_Subprogram (Id)
!                       or else (Ekind (Id) in E_Function | E_Procedure
                                  and then Is_Generic_Actual_Subprogram (Id)))
           then
              Mark_Parameters (Id);
*************** package body Sem_Ch8 is
*** 8721,8727 ****
              --  Ignore fully qualified names as they do not count as a "use" of
              --  a package.
  
!             if Nkind_In (Id, N_Identifier, N_Operator_Symbol)
                or else (Present (Prefix (Id))
                           and then Scope (Entity (Id)) /= Entity (Prefix (Id)))
              then
--- 8837,8843 ----
              --  Ignore fully qualified names as they do not count as a "use" of
              --  a package.
  
!             if Nkind (Id) in N_Identifier | N_Operator_Symbol
                or else (Present (Prefix (Id))
                           and then Scope (Entity (Id)) /= Entity (Prefix (Id)))
              then
*************** package body Sem_Ch8 is
*** 8787,8793 ****
  
        --  Set Default_Storage_Pool field of the library unit if necessary
  
!       if Ekind_In (S, E_Package, E_Generic_Package)
          and then
            Nkind (Parent (Unit_Declaration_Node (S))) = N_Compilation_Unit
        then
--- 8903,8909 ----
  
        --  Set Default_Storage_Pool field of the library unit if necessary
  
!       if Is_Package_Or_Generic_Package (S)
          and then
            Nkind (Parent (Unit_Declaration_Node (S))) = N_Compilation_Unit
        then
*************** package body Sem_Ch8 is
*** 8957,8963 ****
  
        if Is_Child_Unit (S)
          and then Present (E)
!         and then Ekind_In (E, E_Package, E_Generic_Package)
          and then
            Nkind (Parent (Unit_Declaration_Node (E))) = N_Compilation_Unit
        then
--- 9073,9079 ----
  
        if Is_Child_Unit (S)
          and then Present (E)
!         and then Is_Package_Or_Generic_Package (E)
          and then
            Nkind (Parent (Unit_Declaration_Node (E))) = N_Compilation_Unit
        then
*************** package body Sem_Ch8 is
*** 9000,9042 ****
           end if;
        end if;
  
!       if Kind  = N_Component_Declaration then
!          Error_Msg_N
!            ("component&! cannot be used before end of record declaration", N);
  
!       elsif Kind  = N_Parameter_Specification then
!          Error_Msg_N
!            ("formal parameter&! cannot be used before end of specification",
!             N);
  
!       elsif Kind  = N_Discriminant_Specification then
!          Error_Msg_N
!            ("discriminant&! cannot be used before end of discriminant part",
!             N);
  
!       elsif Kind  = N_Procedure_Specification
!         or else Kind = N_Function_Specification
!       then
!          Error_Msg_N
!            ("subprogram&! cannot be used before end of its declaration",
!             N);
  
!       elsif Kind = N_Full_Type_Declaration then
!          Error_Msg_N
!            ("type& cannot be used before end of its declaration!", N);
  
!       else
!          Error_Msg_N
!            ("object& cannot be used before end of its declaration!", N);
  
!          --  If the premature reference appears as the expression in its own
!          --  declaration, rewrite it to prevent compiler loops in subsequent
!          --  uses of this mangled declaration in address clauses.
  
!          if Nkind (Parent (N)) = N_Object_Declaration then
!             Set_Entity (N, Any_Id);
!          end if;
!       end if;
     end Premature_Usage;
  
     ------------------------
--- 9116,9158 ----
           end if;
        end if;
  
!       case Kind is
!          when N_Component_Declaration =>
!             Error_Msg_N
!               ("component&! cannot be used before end of record declaration",
!                N);
  
!          when N_Parameter_Specification =>
!             Error_Msg_N
!               ("formal parameter&! cannot be used before end of specification",
!                N);
  
!          when N_Discriminant_Specification =>
!             Error_Msg_N
!               ("discriminant&! cannot be used before end of discriminant part",
!                N);
  
!          when N_Procedure_Specification | N_Function_Specification =>
!             Error_Msg_N
!               ("subprogram&! cannot be used before end of its declaration",
!                N);
  
!          when N_Full_Type_Declaration | N_Subtype_Declaration =>
!             Error_Msg_N
!               ("type& cannot be used before end of its declaration!", N);
  
!          when others =>
!             Error_Msg_N
!               ("object& cannot be used before end of its declaration!", N);
  
!             --  If the premature reference appears as the expression in its own
!             --  declaration, rewrite it to prevent compiler loops in subsequent
!             --  uses of this mangled declaration in address clauses.
  
!             if Nkind (Parent (N)) = N_Object_Declaration then
!                Set_Entity (N, Any_Id);
!             end if;
!       end case;
     end Premature_Usage;
  
     ------------------------
*************** package body Sem_Ch8 is
*** 9415,9421 ****
                 Set_Current_Use_Clause (Entity (N), Prev_Use_Clause (Curr));
              end if;
  
!             Curr := Next_Use_Clause (Curr);
           end loop;
        end Update_Chain_In_Scope;
  
--- 9531,9537 ----
                 Set_Current_Use_Clause (Entity (N), Prev_Use_Clause (Curr));
              end if;
  
!             Next_Use_Clause (Curr);
           end loop;
        end Update_Chain_In_Scope;
  
*************** package body Sem_Ch8 is
*** 9477,9485 ****
--- 9593,9606 ----
  
           Set_Redundant_Use (Clause, True);
  
+          --  Do not check for redundant use if clause is generated, or in an
+          --  instance, or in a predefined unit to avoid misleading warnings
+          --  that may occur as part of a rtsfind load.
+ 
           if not Comes_From_Source (Clause)
             or else In_Instance
             or else not Warn_On_Redundant_Constructs
+            or else Is_Predefined_Unit (Current_Sem_Unit)
           then
              return;
           end if;
*************** package body Sem_Ch8 is
*** 9612,9621 ****
                           Private_Declarations (Parent (Decl))
              then
                 declare
!                   Par : constant Entity_Id := Defining_Entity (Parent (Decl));
!                   Spec : constant Node_Id  :=
!                            Specification (Unit (Cunit (Current_Sem_Unit)));
                    Cur_List : constant List_Id := List_Containing (Cur_Use);
                 begin
                    if Is_Compilation_Unit (Par)
                      and then Par /= Cunit_Entity (Current_Sem_Unit)
--- 9733,9744 ----
                           Private_Declarations (Parent (Decl))
              then
                 declare
!                   Par      : constant Entity_Id :=
!                     Defining_Entity (Parent (Decl));
!                   Spec     : constant Node_Id  :=
!                     Specification (Unit (Cunit (Current_Sem_Unit)));
                    Cur_List : constant List_Id := List_Containing (Cur_Use);
+ 
                 begin
                    if Is_Compilation_Unit (Par)
                      and then Par /= Cunit_Entity (Current_Sem_Unit)
*************** package body Sem_Ch8 is
*** 9657,9663 ****
  
              Error_Msg_Sloc := Sloc (Prev_Use);
              Error_Msg_NE -- CODEFIX
!               ("& is already use-visible through previous use_clause #??",
                 Redundant, Pack_Name);
           end if;
        end Note_Redundant_Use;
--- 9780,9786 ----
  
              Error_Msg_Sloc := Sloc (Prev_Use);
              Error_Msg_NE -- CODEFIX
!               ("& is already use-visible through previous use_clause #?r?",
                 Redundant, Pack_Name);
           end if;
        end Note_Redundant_Use;
*************** package body Sem_Ch8 is
*** 10248,10254 ****
                             & "use_type_clause #??", Clause1, T);
                          return;
  
!                      elsif Nkind_In (Unit2, N_Package_Body, N_Subprogram_Body)
                         and then Nkind (Unit1) /= Nkind (Unit2)
                         and then Nkind (Unit1) /= N_Subunit
                       then
--- 10371,10377 ----
                             & "use_type_clause #??", Clause1, T);
                          return;
  
!                      elsif Nkind (Unit2) in N_Package_Body | N_Subprogram_Body
                         and then Nkind (Unit1) /= Nkind (Unit2)
                         and then Nkind (Unit1) /= N_Subunit
                       then
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch8.ads gcc-11.1.0/gcc/ada/sem_ch8.ads
*** gcc-10.3.0/gcc/ada/sem_ch8.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch8.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Ch8 is
*** 82,92 ****
     --  Subsidiaries of End_Use_Clauses. Also called directly for use clauses
     --  appearing in context clauses.
  
!    procedure Find_Direct_Name
!      (N            : Node_Id;
!       Errors_OK    : Boolean := True;
!       Marker_OK    : Boolean := True;
!       Reference_OK : Boolean := True);
     --  Given a direct name (Identifier or Operator_Symbol), this routine scans
     --  the homonym chain for the name, searching for corresponding visible
     --  entities to find the referenced entity (or in the case of overloading,
--- 82,88 ----
     --  Subsidiaries of End_Use_Clauses. Also called directly for use clauses
     --  appearing in context clauses.
  
!    procedure Find_Direct_Name (N : Node_Id);
     --  Given a direct name (Identifier or Operator_Symbol), this routine scans
     --  the homonym chain for the name, searching for corresponding visible
     --  entities to find the referenced entity (or in the case of overloading,
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch9.adb gcc-11.1.0/gcc/ada/sem_ch9.adb
*** gcc-10.3.0/gcc/ada/sem_ch9.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch9.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Ch9 is
*** 133,140 ****
        --  when Lock_Free_Given is True.
  
     begin
!       pragma Assert (Nkind_In (N, N_Protected_Type_Declaration,
!                                   N_Protected_Body));
  
        --  The lock-free implementation is currently enabled through a debug
        --  flag. When Lock_Free_Given is True, an aspect Lock_Free forces the
--- 133,140 ----
        --  when Lock_Free_Given is True.
  
     begin
!       pragma Assert
!         (Nkind (N) in N_Protected_Type_Declaration | N_Protected_Body);
  
        --  The lock-free implementation is currently enabled through a debug
        --  flag. When Lock_Free_Given is True, an aspect Lock_Free forces the
*************** package body Sem_Ch9 is
*** 569,575 ****
                          if Ekind (Id) = E_Component then
                             Comp_Id := Id;
  
!                         elsif Ekind_In (Id, E_Constant, E_Variable)
                            and then Present (Prival_Link (Id))
                          then
                             Comp_Id := Prival_Link (Id);
--- 569,575 ----
                          if Ekind (Id) = E_Component then
                             Comp_Id := Id;
  
!                         elsif Ekind (Id) in E_Constant | E_Variable
                            and then Present (Prival_Link (Id))
                          then
                             Comp_Id := Prival_Link (Id);
*************** package body Sem_Ch9 is
*** 706,712 ****
  
     begin
        Tasking_Used := True;
-       Check_SPARK_05_Restriction ("abort statement is not allowed", N);
  
        T_Name := First (Names (N));
        while Present (T_Name) loop
--- 706,711 ----
*************** package body Sem_Ch9 is
*** 777,783 ****
  
     begin
        Tasking_Used := True;
-       Check_SPARK_05_Restriction ("accept statement is not allowed", N);
  
        --  Entry name is initialized to Any_Id. It should get reset to the
        --  matching entry entity. An error is signalled if it is not reset.
--- 776,781 ----
*************** package body Sem_Ch9 is
*** 792,804 ****
           if Kind /= E_Block and then Kind /= E_Loop
             and then not Is_Entry (Task_Nam)
           then
!             Error_Msg_N ("enclosing body of accept must be a task", N);
              return;
           end if;
        end loop;
  
        if Ekind (Etype (Task_Nam)) /= E_Task_Type then
!          Error_Msg_N ("invalid context for accept statement",  N);
           return;
        end if;
  
--- 790,802 ----
           if Kind /= E_Block and then Kind /= E_Loop
             and then not Is_Entry (Task_Nam)
           then
!             Error_Msg_N ("enclosing body of ACCEPT must be a task", N);
              return;
           end if;
        end loop;
  
        if Ekind (Etype (Task_Nam)) /= E_Task_Type then
!          Error_Msg_N ("invalid context for ACCEPT statement",  N);
           return;
        end if;
  
*************** package body Sem_Ch9 is
*** 846,852 ****
        end loop;
  
        if Entry_Nam = Any_Id then
!          Error_Msg_N ("no entry declaration matches accept statement",  N);
           return;
        else
           Set_Entity (Nam, Entry_Nam);
--- 844,850 ----
        end loop;
  
        if Entry_Nam = Any_Id then
!          Error_Msg_N ("no entry declaration matches ACCEPT statement",  N);
           return;
        else
           Set_Entity (Nam, Entry_Nam);
*************** package body Sem_Ch9 is
*** 884,890 ****
  
           if Entry_Nam = Scope_Stack.Table (J).Entity then
              Error_Msg_N
!               ("duplicate accept statement for same entry (RM 9.5.2 (15))", N);
  
              --  Do not continue analysis of accept statement, to prevent
              --  cascaded errors.
--- 882,888 ----
  
           if Entry_Nam = Scope_Stack.Table (J).Entity then
              Error_Msg_N
!               ("duplicate ACCEPT statement for same entry (RM 9.5.2 (15))", N);
  
              --  Do not continue analysis of accept statement, to prevent
              --  cascaded errors.
*************** package body Sem_Ch9 is
*** 906,913 ****
  
                 when N_Asynchronous_Select =>
                    Error_Msg_N
!                     ("accept statements are not allowed within an "
!                      & "asynchronous select inner to the enclosing task body",
                       N);
                    exit;
  
--- 904,911 ----
  
                 when N_Asynchronous_Select =>
                    Error_Msg_N
!                     ("ACCEPT statement not allowed within an "
!                      & "asynchronous SELECT inner to the enclosing task body",
                       N);
                    exit;
  
*************** package body Sem_Ch9 is
*** 917,928 ****
           end loop;
        end;
  
!       if Ekind (E) = E_Entry_Family then
           if No (Index) then
              Error_Msg_N ("missing entry index in accept for entry family", N);
           else
!             Analyze_And_Resolve (Index, Entry_Index_Type (E));
!             Apply_Range_Check (Index, Entry_Index_Type (E));
           end if;
  
        elsif Present (Index) then
--- 915,926 ----
           end loop;
        end;
  
!       if Ekind (Entry_Nam) = E_Entry_Family then
           if No (Index) then
              Error_Msg_N ("missing entry index in accept for entry family", N);
           else
!             Analyze_And_Resolve (Index, Entry_Index_Type (Entry_Nam));
!             Apply_Scalar_Range_Check (Index, Entry_Index_Type (Entry_Nam));
           end if;
  
        elsif Present (Index) then
*************** package body Sem_Ch9 is
*** 1019,1025 ****
  
     begin
        Tasking_Used := True;
-       Check_SPARK_05_Restriction ("select statement is not allowed", N);
        Check_Restriction (Max_Asynchronous_Select_Nesting, N);
        Check_Restriction (No_Select_Statements, N);
  
--- 1017,1022 ----
*************** package body Sem_Ch9 is
*** 1065,1071 ****
  
     begin
        Tasking_Used := True;
-       Check_SPARK_05_Restriction ("select statement is not allowed", N);
        Check_Restriction (No_Select_Statements, N);
  
        --  Ada 2005 (AI-345): The trigger may be a dispatching call
--- 1062,1067 ----
*************** package body Sem_Ch9 is
*** 1117,1123 ****
           Analyze_List (Pragmas_Before (N));
        end if;
  
!       if Nkind_In (Parent (N), N_Selective_Accept, N_Timed_Entry_Call) then
           Expr := Expression (Delay_Statement (N));
  
           --  Defer full analysis until the statement is expanded, to insure
--- 1113,1119 ----
           Analyze_List (Pragmas_Before (N));
        end if;
  
!       if Nkind (Parent (N)) in N_Selective_Accept | N_Timed_Entry_Call then
           Expr := Expression (Delay_Statement (N));
  
           --  Defer full analysis until the statement is expanded, to insure
*************** package body Sem_Ch9 is
*** 1163,1169 ****
  
     begin
        Tasking_Used := True;
-       Check_SPARK_05_Restriction ("delay statement is not allowed", N);
        Check_Restriction (No_Relative_Delay, N);
        Check_Restriction (No_Delay, N);
        Check_Potentially_Blocking_Operation (N);
--- 1159,1164 ----
*************** package body Sem_Ch9 is
*** 1189,1195 ****
  
     begin
        Tasking_Used := True;
-       Check_SPARK_05_Restriction ("delay statement is not allowed", N);
        Check_Restriction (No_Delay, N);
        Check_Potentially_Blocking_Operation (N);
        Analyze_And_Resolve (E);
--- 1184,1189 ----
*************** package body Sem_Ch9 is
*** 1258,1264 ****
        E := First_Entity (P_Type);
        while Present (E) loop
           if Chars (E) = Chars (Id)
!            and then (Ekind (E) = Ekind (Id))
             and then Type_Conformant (Id, E)
           then
              Entry_Name := E;
--- 1252,1258 ----
        E := First_Entity (P_Type);
        while Present (E) loop
           if Chars (E) = Chars (Id)
!            and then Ekind (E) = Ekind (Id)
             and then Type_Conformant (Id, E)
           then
              Entry_Name := E;
*************** package body Sem_Ch9 is
*** 1303,1309 ****
                          Set_Analyzed (Def, False);
  
                          --  Keep the original subtree to ensure a properly
!                         --  formed tree (e.g. for ASIS use).
  
                          Rewrite
                            (Discrete_Subtype_Definition (Index_Spec), Def);
--- 1297,1303 ----
                          Set_Analyzed (Def, False);
  
                          --  Keep the original subtree to ensure a properly
!                         --  formed tree.
  
                          Rewrite
                            (Discrete_Subtype_Definition (Index_Spec), Def);
*************** package body Sem_Ch9 is
*** 1505,1511 ****
  
     begin
        Tasking_Used := True;
-       Check_SPARK_05_Restriction ("entry call is not allowed", N);
  
        if Present (Pragmas_Before (N)) then
           Analyze_List (Pragmas_Before (N));
--- 1499,1504 ----
*************** package body Sem_Ch9 is
*** 1956,1962 ****
  
     begin
        Tasking_Used := True;
-       Check_SPARK_05_Restriction ("protected definition is not allowed", N);
        Analyze_Declarations (Visible_Declarations (N));
  
        if Present (Private_Declarations (N))
--- 1949,1954 ----
*************** package body Sem_Ch9 is
*** 1974,1980 ****
  
        Item_Id := First_Entity (Prot_Typ);
        while Present (Item_Id) loop
!          if Ekind_In (Item_Id, E_Function, E_Procedure) then
              Set_Convention (Item_Id, Convention_Protected);
           else
              Propagate_Concurrent_Flags (Prot_Typ, Etype (Item_Id));
--- 1966,1972 ----
  
        Item_Id := First_Entity (Prot_Typ);
        while Present (Item_Id) loop
!          if Ekind (Item_Id) in E_Function | E_Procedure then
              Set_Convention (Item_Id, Convention_Protected);
           else
              Propagate_Concurrent_Flags (Prot_Typ, Etype (Item_Id));
*************** package body Sem_Ch9 is
*** 2258,2263 ****
--- 2250,2260 ----
  
           Propagate_Invariant_Attributes (T, From_Typ => Def_Id);
  
+          --  Propagate predicate-related attributes from the private type to
+          --  the protected type.
+ 
+          Propagate_Predicate_Attributes (T, From_Typ => Def_Id);
+ 
           --  Create corresponding record now, because some private dependents
           --  may be subtypes of the partial view.
  
*************** package body Sem_Ch9 is
*** 2312,2318 ****
           Warnings => True);
  
        Tasking_Used := True;
-       Check_SPARK_05_Restriction ("requeue statement is not allowed", N);
        Check_Restriction (No_Requeue_Statements, N);
        Check_Unreachable_Code (N);
  
--- 2309,2314 ----
*************** package body Sem_Ch9 is
*** 2321,2327 ****
           Enclosing := Scope_Stack.Table (J).Entity;
           exit when Is_Entry (Enclosing);
  
!          if not Ekind_In (Enclosing, E_Block, E_Loop) then
              Error_Msg_N ("requeue must appear within accept or entry body", N);
              return;
           end if;
--- 2317,2323 ----
           Enclosing := Scope_Stack.Table (J).Entity;
           exit when Is_Entry (Enclosing);
  
!          if Ekind (Enclosing) not in E_Block | E_Loop then
              Error_Msg_N ("requeue must appear within accept or entry body", N);
              return;
           end if;
*************** package body Sem_Ch9 is
*** 2364,2370 ****
           --  entry body) unless it is a parameter of the innermost enclosing
           --  accept statement (or entry body).
  
!          if Object_Access_Level (Target_Obj) >= Scope_Depth (Outer_Ent)
             and then
               (not Is_Entity_Name (Target_Obj)
                 or else not Is_Formal (Entity (Target_Obj))
--- 2360,2367 ----
           --  entry body) unless it is a parameter of the innermost enclosing
           --  accept statement (or entry body).
  
!          if Static_Accessibility_Level (Target_Obj, Zero_On_Dynamic_Level)
!               >= Scope_Depth (Outer_Ent)
             and then
               (not Is_Entity_Name (Target_Obj)
                 or else not Is_Formal (Entity (Target_Obj))
*************** package body Sem_Ch9 is
*** 2554,2560 ****
                    --  perform an unconditional goto so that any further
                    --  references will not occur anyway.
  
!                   if Ekind_In (Ent, E_Out_Parameter, E_In_Out_Parameter) then
                       Set_Never_Set_In_Source (Ent, False);
                       Set_Is_True_Constant    (Ent, False);
                    end if;
--- 2551,2557 ----
                    --  perform an unconditional goto so that any further
                    --  references will not occur anyway.
  
!                   if Ekind (Ent) in E_Out_Parameter | E_In_Out_Parameter then
                       Set_Never_Set_In_Source (Ent, False);
                       Set_Is_True_Constant    (Ent, False);
                    end if;
*************** package body Sem_Ch9 is
*** 2606,2612 ****
  
     begin
        Tasking_Used := True;
-       Check_SPARK_05_Restriction ("select statement is not allowed", N);
        Check_Restriction (No_Select_Statements, N);
  
        --  Loop to analyze alternatives
--- 2603,2608 ----
*************** package body Sem_Ch9 is
*** 2675,2681 ****
                                if Entity (EDN1) = Ent then
                                   Error_Msg_Sloc := Sloc (Stm1);
                                   Error_Msg_N
!                                    ("accept duplicates one on line#??", Stm);
                                   exit;
                                end if;
                             end if;
--- 2671,2677 ----
                                if Entity (EDN1) = Ent then
                                   Error_Msg_Sloc := Sloc (Stm1);
                                   Error_Msg_N
!                                    ("ACCEPT duplicates one on line#??", Stm);
                                   exit;
                                end if;
                             end if;
*************** package body Sem_Ch9 is
*** 2695,2710 ****
        Check_Potentially_Blocking_Operation (N);
  
        if Terminate_Present and Delay_Present then
!          Error_Msg_N ("at most one of terminate or delay alternative", N);
  
        elsif not Accept_Present then
           Error_Msg_N
!            ("select must contain at least one accept alternative", N);
        end if;
  
        if Present (Else_Statements (N)) then
           if Terminate_Present or Delay_Present then
!             Error_Msg_N ("else part not allowed with other alternatives", N);
           end if;
  
           Analyze_Statements (Else_Statements (N));
--- 2691,2706 ----
        Check_Potentially_Blocking_Operation (N);
  
        if Terminate_Present and Delay_Present then
!          Error_Msg_N ("at most one of TERMINATE or DELAY alternative", N);
  
        elsif not Accept_Present then
           Error_Msg_N
!            ("SELECT must contain at least one ACCEPT alternative", N);
        end if;
  
        if Present (Else_Statements (N)) then
           if Terminate_Present or Delay_Present then
!             Error_Msg_N ("ELSE part not allowed with other alternatives", N);
           end if;
  
           Analyze_Statements (Else_Statements (N));
*************** package body Sem_Ch9 is
*** 2993,2998 ****
--- 2989,3012 ----
           else
              Set_First_Private_Entity (Spec_Id, First_Entity (Spec_Id));
           end if;
+ 
+          --  The entity list of the current scope now includes entities in
+          --  the spec as well as the body. Their declarations will become
+          --  part of the statement sequence of the task body procedure that
+          --  is built during expansion. Indicate that aspect specifications
+          --  for these entities need not be rechecked. The guards on
+          --  Check_Aspect_At_End_Of_Declarations are not sufficient to
+          --  suppress these checks, because the declarations come from source.
+ 
+          declare
+             Priv : Entity_Id := First_Private_Entity (Spec_Id);
+ 
+          begin
+             while Present (Priv) loop
+                Set_Has_Delayed_Aspects (Priv, False);
+                Next_Entity (Priv);
+             end loop;
+          end;
        end if;
  
        --  Mark all handlers as not suitable for local raise optimization,
*************** package body Sem_Ch9 is
*** 3050,3056 ****
  
     begin
        Tasking_Used := True;
-       Check_SPARK_05_Restriction ("task definition is not allowed", N);
  
        if Present (Visible_Declarations (N)) then
           Analyze_Declarations (Visible_Declarations (N));
--- 3064,3069 ----
*************** package body Sem_Ch9 is
*** 3239,3244 ****
--- 3252,3262 ----
  
           Propagate_Invariant_Attributes (T, From_Typ => Def_Id);
  
+          --  Propagate predicate-related attributes from the private type to
+          --  task type.
+ 
+          Propagate_Predicate_Attributes (T, From_Typ => Def_Id);
+ 
           --  Create corresponding record now, because some private dependents
           --  may be subtypes of the partial view.
  
*************** package body Sem_Ch9 is
*** 3292,3298 ****
  
     begin
        Tasking_Used := True;
-       Check_SPARK_05_Restriction ("select statement is not allowed", N);
        Check_Restriction (No_Select_Statements, N);
  
        --  Ada 2005 (AI-345): The trigger may be a dispatching call
--- 3310,3315 ----
*************** package body Sem_Ch9 is
*** 3454,3460 ****
  
     begin
        pragma Assert
!         (Nkind_In (N, N_Protected_Type_Declaration, N_Task_Type_Declaration));
  
        if Present (Interface_List (N)) then
           Set_Is_Tagged_Type (T);
--- 3471,3477 ----
  
     begin
        pragma Assert
!         (Nkind (N) in N_Protected_Type_Declaration | N_Task_Type_Declaration);
  
        if Present (Interface_List (N)) then
           Set_Is_Tagged_Type (T);
*************** package body Sem_Ch9 is
*** 3462,3468 ****
           --  The primitive operations of a tagged synchronized type are placed
           --  on the Corresponding_Record for proper dispatching, but are
           --  attached to the synchronized type itself when expansion is
!          --  disabled, for ASIS use.
  
           Set_Direct_Primitive_Operations (T, New_Elmt_List);
  
--- 3479,3485 ----
           --  The primitive operations of a tagged synchronized type are placed
           --  on the Corresponding_Record for proper dispatching, but are
           --  attached to the synchronized type itself when expansion is
!          --  disabled.
  
           Set_Direct_Primitive_Operations (T, New_Elmt_List);
  
*************** package body Sem_Ch9 is
*** 3516,3521 ****
--- 3533,3546 ----
  
              Next (Iface);
           end loop;
+ 
+          --  Check consistency of any nonoverridable aspects that are
+          --  inherited from multiple sources.
+ 
+          Check_Inherited_Nonoverridable_Aspects
+            (Inheritor      => N,
+             Interface_List => Interface_List (N),
+             Parent_Type    => Empty);
        end if;
  
        if not Has_Private_Declaration (T) then
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_ch9.ads gcc-11.1.0/gcc/ada/sem_ch9.ads
*** gcc-10.3.0/gcc/ada/sem_ch9.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_ch9.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_dim.adb gcc-11.1.0/gcc/ada/sem_dim.adb
*** gcc-10.3.0/gcc/ada/sem_dim.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_dim.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sem_Eval; use Sem_Eval;
*** 40,46 ****
  with Sem_Res;  use Sem_Res;
  with Sem_Util; use Sem_Util;
  with Sinfo;    use Sinfo;
- with Sinput;   use Sinput;
  with Snames;   use Snames;
  with Stand;    use Stand;
  with Stringt;  use Stringt;
--- 40,45 ----
*************** package body Sem_Dim is
*** 377,386 ****
     procedure Set_Symbol (E : Entity_Id; Val : String_Id);
     --  Associate a symbol representation of a dimension vector with a subtype
  
-    function String_From_Numeric_Literal (N : Node_Id) return String_Id;
-    --  Return the string that corresponds to the numeric litteral N as it
-    --  appears in the source.
- 
     function Symbol_Of (E : Entity_Id) return String_Id;
     --  E denotes a subtype with a dimension. Return the symbol representation
     --  of the dimension vector.
--- 376,381 ----
*************** package body Sem_Dim is
*** 628,635 ****
        --  Named symbol argument
  
        if No (Symbol_Expr)
!         or else not Nkind_In (Symbol_Expr, N_Character_Literal,
!                                            N_String_Literal)
        then
           Symbol_Expr := Empty;
  
--- 623,630 ----
        --  Named symbol argument
  
        if No (Symbol_Expr)
!         or else Nkind (Symbol_Expr) not in
!                   N_Character_Literal | N_String_Literal
        then
           Symbol_Expr := Empty;
  
*************** package body Sem_Dim is
*** 649,656 ****
  
                    --  Verify symbol expression is a string or a character
  
!                   if not Nkind_In (Symbol_Expr, N_Character_Literal,
!                                                 N_String_Literal)
                    then
                       Symbol_Expr := Empty;
                       Error_Msg_N
--- 644,651 ----
  
                    --  Verify symbol expression is a string or a character
  
!                   if Nkind (Symbol_Expr) not in
!                        N_Character_Literal | N_String_Literal
                    then
                       Symbol_Expr := Empty;
                       Error_Msg_N
*************** package body Sem_Dim is
*** 661,668 ****
                 --  Special error if no Symbol choice but expression is string
                 --  or character.
  
!                elsif Nkind_In (Expression (Assoc), N_Character_Literal,
!                                                    N_String_Literal)
                 then
                    Num_Choices := Num_Choices + 1;
                    Error_Msg_N
--- 656,663 ----
                 --  Special error if no Symbol choice but expression is string
                 --  or character.
  
!                elsif Nkind (Expression (Assoc)) in
!                        N_Character_Literal | N_String_Literal
                 then
                    Num_Choices := Num_Choices + 1;
                    Error_Msg_N
*************** package body Sem_Dim is
*** 681,687 ****
        --  Skip the symbol expression when present
  
        if Present (Symbol_Expr) and then Num_Choices = 0 then
!          Expr := Next (Expr);
        end if;
  
        Position := Low_Position_Bound;
--- 676,682 ----
        --  Skip the symbol expression when present
  
        if Present (Symbol_Expr) and then Num_Choices = 0 then
!          Next (Expr);
        end if;
  
        Position := Low_Position_Bound;
*************** package body Sem_Dim is
*** 1044,1051 ****
                 --  Check the second argument for each dimension aggregate is
                 --  a string or a character.
  
!                if not Nkind_In (Unit_Symbol, N_String_Literal,
!                                              N_Character_Literal)
                 then
                    Error_Msg_N
                      ("expected unit symbol (string or character)",
--- 1039,1046 ----
                 --  Check the second argument for each dimension aggregate is
                 --  a string or a character.
  
!                if Nkind (Unit_Symbol) not in
!                     N_String_Literal | N_Character_Literal
                 then
                    Error_Msg_N
                      ("expected unit symbol (string or character)",
*************** package body Sem_Dim is
*** 1077,1084 ****
                 --  Check the third argument for each dimension aggregate is
                 --  a string or a character.
  
!                if not Nkind_In (Dim_Symbol, N_String_Literal,
!                                             N_Character_Literal)
                 then
                    Error_Msg_N
                      ("expected dimension symbol (string or character)",
--- 1072,1079 ----
                 --  Check the third argument for each dimension aggregate is
                 --  a string or a character.
  
!                if Nkind (Dim_Symbol) not in
!                     N_String_Literal | N_Character_Literal
                 then
                    Error_Msg_N
                      ("expected dimension symbol (string or character)",
*************** package body Sem_Dim is
*** 1148,1160 ****
           return;
  
        elsif not Comes_From_Source (N) then
!          if Nkind_In (N, N_Explicit_Dereference,
!                          N_Identifier,
!                          N_Object_Declaration,
!                          N_Subtype_Declaration)
           then
-             null;
-          else
              return;
           end if;
        end if;
--- 1143,1153 ----
           return;
  
        elsif not Comes_From_Source (N) then
!          if Nkind (N) not in N_Explicit_Dereference
!                            | N_Identifier
!                            | N_Object_Declaration
!                            | N_Subtype_Declaration
           then
              return;
           end if;
        end if;
*************** package body Sem_Dim is
*** 1446,1454 ****
           return;
        end if;
  
!       if Nkind_In (N_Kind, N_Op_Add, N_Op_Expon, N_Op_Subtract)
!         or else N_Kind in N_Multiplying_Operator
!         or else N_Kind in N_Op_Compare
        then
           declare
              L                : constant Node_Id        := Left_Opnd (N);
--- 1439,1446 ----
           return;
        end if;
  
!       if N_Kind in N_Op_Add | N_Op_Expon  | N_Op_Subtract
!                  | N_Multiplying_Operator | N_Op_Compare
        then
           declare
              L                : constant Node_Id        := Left_Opnd (N);
*************** package body Sem_Dim is
*** 1464,1470 ****
           begin
              --  N_Op_Add, N_Op_Mod, N_Op_Rem or N_Op_Subtract case
  
!             if Nkind_In (N, N_Op_Add, N_Op_Mod, N_Op_Rem, N_Op_Subtract) then
  
                 --  Check both operands have same dimension
  
--- 1456,1462 ----
           begin
              --  N_Op_Add, N_Op_Mod, N_Op_Rem or N_Op_Subtract case
  
!             if N_Kind in N_Op_Add | N_Op_Mod | N_Op_Rem | N_Op_Subtract then
  
                 --  Check both operands have same dimension
  
*************** package body Sem_Dim is
*** 1480,1486 ****
  
              --  N_Op_Multiply or N_Op_Divide case
  
!             elsif Nkind_In (N_Kind, N_Op_Multiply, N_Op_Divide) then
  
                 --  Check at least one operand is not dimensionless
  
--- 1472,1478 ----
  
              --  N_Op_Multiply or N_Op_Divide case
  
!             elsif N_Kind in N_Op_Multiply | N_Op_Divide then
  
                 --  Check at least one operand is not dimensionless
  
*************** package body Sem_Dim is
*** 1598,1610 ****
                    --  literal is treated as if its dimension matches the type
                    --  dimension.
  
!                   elsif Nkind_In (Original_Node (L), N_Integer_Literal,
!                                                      N_Real_Literal)
                    then
                       Dim_Warning_For_Numeric_Literal (L, Etype (R));
  
!                   elsif Nkind_In (Original_Node (R), N_Integer_Literal,
!                                                      N_Real_Literal)
                    then
                       Dim_Warning_For_Numeric_Literal (R, Etype (L));
  
--- 1590,1602 ----
                    --  literal is treated as if its dimension matches the type
                    --  dimension.
  
!                   elsif Nkind (Original_Node (L)) in
!                           N_Integer_Literal | N_Real_Literal
                    then
                       Dim_Warning_For_Numeric_Literal (L, Etype (R));
  
!                   elsif Nkind (Original_Node (R)) in
!                           N_Integer_Literal | N_Real_Literal
                    then
                       Dim_Warning_For_Numeric_Literal (R, Etype (L));
  
*************** package body Sem_Dim is
*** 1880,1887 ****
              --  dimensionless to indicate the literal is treated as if its
              --  dimension matches the type dimension.
  
!             if Nkind_In (Original_Node (Expr), N_Real_Literal,
!                                                N_Integer_Literal)
              then
                 Dim_Warning_For_Numeric_Literal (Expr, Etyp);
  
--- 1872,1879 ----
              --  dimensionless to indicate the literal is treated as if its
              --  dimension matches the type dimension.
  
!             if Nkind (Original_Node (Expr)) in
!                  N_Real_Literal | N_Integer_Literal
              then
                 Dim_Warning_For_Numeric_Literal (Expr, Etyp);
  
*************** package body Sem_Dim is
*** 2070,2077 ****
  
                 if Present (Expr)
                   and then Dims_Of_Typ /= Dimensions_Of (Expr)
!                  and then Nkind_In (Original_Node (Expr), N_Real_Literal,
!                                                           N_Integer_Literal)
                 then
                    Dim_Warning_For_Numeric_Literal (Expr, Etype (Typ));
                 end if;
--- 2062,2069 ----
  
                 if Present (Expr)
                   and then Dims_Of_Typ /= Dimensions_Of (Expr)
!                  and then Nkind (Original_Node (Expr)) in
!                             N_Real_Literal | N_Integer_Literal
                 then
                    Dim_Warning_For_Numeric_Literal (Expr, Etype (Typ));
                 end if;
*************** package body Sem_Dim is
*** 2110,2116 ****
                 Check_Error_Detected;
                 return;
  
!             elsif Ekind_In (Id,  E_Constant, E_Named_Real)
                and then Exists (Dimensions_Of (Id))
              then
                 Set_Dimensions (N, Dimensions_Of (Id));
--- 2102,2108 ----
                 Check_Error_Detected;
                 return;
  
!             elsif Ekind (Id) in E_Constant | E_Named_Real
                and then Exists (Dimensions_Of (Id))
              then
                 Set_Dimensions (N, Dimensions_Of (Id));
*************** package body Sem_Dim is
*** 2247,2254 ****
              --  not dimensionless to indicate the literal is treated as if
              --  its dimension matches the type dimension.
  
!             if Nkind_In (Original_Node (Expr), N_Real_Literal,
!                                                N_Integer_Literal)
              then
                 Dim_Warning_For_Numeric_Literal (Expr, Etyp);
  
--- 2239,2246 ----
              --  not dimensionless to indicate the literal is treated as if
              --  its dimension matches the type dimension.
  
!             if Nkind (Original_Node (Expr)) in
!                  N_Real_Literal | N_Integer_Literal
              then
                 Dim_Warning_For_Numeric_Literal (Expr, Etyp);
  
*************** package body Sem_Dim is
*** 2590,2605 ****
              Result := No_Rational;
           end if;
  
-          --  Provide minimal semantic information on dimension expressions,
-          --  even though they have no run-time existence. This is for use by
-          --  ASIS tools, in particular pretty-printing. If generating code
-          --  standard operator resolution will take place.
- 
-          if ASIS_Mode then
-             Set_Entity (N, Standard_Op_Minus);
-             Set_Etype  (N, Standard_Integer);
-          end if;
- 
           return Result;
        end Process_Minus;
  
--- 2582,2587 ----
*************** package body Sem_Dim is
*** 2626,2641 ****
              Result := Left_Rat / Right_Rat;
           end if;
  
-          --  Provide minimal semantic information on dimension expressions,
-          --  even though they have no run-time existence. This is for use by
-          --  ASIS tools, in particular pretty-printing. If generating code
-          --  standard operator resolution will take place.
- 
-          if ASIS_Mode then
-             Set_Entity (N, Standard_Op_Divide);
-             Set_Etype  (N, Standard_Integer);
-          end if;
- 
           return Result;
        end Process_Divide;
  
--- 2608,2613 ----
*************** package body Sem_Dim is
*** 3760,3822 ****
        Symbol_Table.Set (E, Val);
     end Set_Symbol;
  
-    ---------------------------------
-    -- String_From_Numeric_Literal --
-    ---------------------------------
- 
-    function String_From_Numeric_Literal (N : Node_Id) return String_Id is
-       Loc     : constant Source_Ptr        := Sloc (N);
-       Sbuffer : constant Source_Buffer_Ptr :=
-                   Source_Text (Get_Source_File_Index (Loc));
-       Src_Ptr : Source_Ptr := Loc;
- 
-       C : Character  := Sbuffer (Src_Ptr);
-       --  Current source program character
- 
-       function Belong_To_Numeric_Literal (C : Character) return Boolean;
-       --  Return True if C belongs to a numeric literal
- 
-       -------------------------------
-       -- Belong_To_Numeric_Literal --
-       -------------------------------
- 
-       function Belong_To_Numeric_Literal (C : Character) return Boolean is
-       begin
-          case C is
-             when '0' .. '9'
-                | '_' | '.' | 'e' | '#' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F'
-             =>
-                return True;
- 
-             --  Make sure '+' or '-' is part of an exponent.
- 
-             when '+' | '-' =>
-                declare
-                   Prev_C : constant Character := Sbuffer (Src_Ptr - 1);
-                begin
-                   return Prev_C = 'e' or else Prev_C = 'E';
-                end;
- 
-             --  All other character doesn't belong to a numeric literal
- 
-             when others =>
-                return False;
-          end case;
-       end Belong_To_Numeric_Literal;
- 
-    --  Start of processing for String_From_Numeric_Literal
- 
-    begin
-       Start_String;
-       while Belong_To_Numeric_Literal (C) loop
-          Store_String_Char (C);
-          Src_Ptr := Src_Ptr + 1;
-          C       := Sbuffer (Src_Ptr);
-       end loop;
- 
-       return End_String;
-    end String_From_Numeric_Literal;
- 
     ---------------
     -- Symbol_Of --
     ---------------
--- 3732,3737 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_dim.ads gcc-11.1.0/gcc/ada/sem_dim.ads
*** gcc-10.3.0/gcc/ada/sem_dim.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_dim.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_disp.adb gcc-11.1.0/gcc/ada/sem_disp.adb
*** gcc-10.3.0/gcc/ada/sem_disp.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_disp.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Aspects;  use Aspects;
  with Atree;    use Atree;
  with Debug;    use Debug;
  with Elists;   use Elists;
*************** package body Sem_Disp is
*** 292,298 ****
           Next_Formal (Formal);
        end loop;
  
!       if Ekind_In (Subp, E_Function, E_Generic_Function) then
           Ctrl_Type := Check_Controlling_Type (Etype (Subp), Subp);
  
           if Present (Ctrl_Type) then
--- 293,299 ----
           Next_Formal (Formal);
        end loop;
  
!       if Ekind (Subp) in E_Function | E_Generic_Function then
           Ctrl_Type := Check_Controlling_Type (Etype (Subp), Subp);
  
           if Present (Ctrl_Type) then
*************** package body Sem_Disp is
*** 574,585 ****
              --  Similarly, if this is a pre/postcondition for an abstract
              --  subprogram, it may call another abstract function which is
              --  a primitive of an abstract type. The call is non-dispatching
!             --  but will be legal in overridings of the operation.
  
              elsif (Is_Subprogram (Scop)
                      or else Chars (Scop) = Name_Postcondition)
                and then
!                 (Is_Abstract_Subprogram (Scop)
                    or else
                      (Nkind (Parent (Scop)) = N_Procedure_Specification
                        and then Null_Present (Parent (Scop))))
--- 575,590 ----
              --  Similarly, if this is a pre/postcondition for an abstract
              --  subprogram, it may call another abstract function which is
              --  a primitive of an abstract type. The call is non-dispatching
!             --  but will be legal in overridings of the operation. However,
!             --  if the call is tag-indeterminate we want to continue with
!             --  with the error checking below, as this case is illegal even
!             --  for abstract subprograms (see AI12-0170).
  
              elsif (Is_Subprogram (Scop)
                      or else Chars (Scop) = Name_Postcondition)
                and then
!                 ((Is_Abstract_Subprogram (Scop)
!                    and then not Is_Tag_Indeterminate (N))
                    or else
                      (Nkind (Parent (Scop)) = N_Procedure_Specification
                        and then Null_Present (Parent (Scop))))
*************** package body Sem_Disp is
*** 620,626 ****
                    Par := Parent (Par);
                 end if;
  
!                if Nkind_In (Par, N_Function_Call, N_Procedure_Call_Statement)
                   and then Is_Entity_Name (Name (Par))
                 then
                    declare
--- 625,631 ----
                    Par := Parent (Par);
                 end if;
  
!                if Nkind (Par) in N_Subprogram_Call
                   and then Is_Entity_Name (Name (Par))
                 then
                    declare
*************** package body Sem_Disp is
*** 683,689 ****
                 --  For equality operators, one of the operands must be
                 --  statically or dynamically tagged.
  
!                elsif Nkind_In (Par, N_Op_Eq, N_Op_Ne) then
                    if N = Right_Opnd (Par)
                      and then Is_Tag_Indeterminate (Left_Opnd (Par))
                    then
--- 688,694 ----
                 --  For equality operators, one of the operands must be
                 --  statically or dynamically tagged.
  
!                elsif Nkind (Par) in N_Op_Eq | N_Op_Ne then
                    if N = Right_Opnd (Par)
                      and then Is_Tag_Indeterminate (Left_Opnd (Par))
                    then
*************** package body Sem_Disp is
*** 992,998 ****
     --  Start of processing for Check_Dispatching_Operation
  
     begin
!       if not Ekind_In (Subp, E_Function, E_Procedure) then
           return;
  
        --  The Default_Initial_Condition procedure is not a primitive subprogram
--- 997,1003 ----
     --  Start of processing for Check_Dispatching_Operation
  
     begin
!       if Ekind (Subp) not in E_Function | E_Procedure then
           return;
  
        --  The Default_Initial_Condition procedure is not a primitive subprogram
*************** package body Sem_Disp is
*** 1408,1414 ****
           --  visible operation that may be declared in a partial view when
           --  the full view is controlled.
  
!          if Nam_In (Chars (Subp), Name_Initialize, Name_Adjust, Name_Finalize)
             and then Is_Controlled (Tagged_Type)
             and then not Is_Visibly_Controlled (Tagged_Type)
             and then not Is_Inherited_Public_Operation (Ovr_Subp)
--- 1413,1419 ----
           --  visible operation that may be declared in a partial view when
           --  the full view is controlled.
  
!          if Chars (Subp) in Name_Initialize | Name_Adjust | Name_Finalize
             and then Is_Controlled (Tagged_Type)
             and then not Is_Visibly_Controlled (Tagged_Type)
             and then not Is_Inherited_Public_Operation (Ovr_Subp)
*************** package body Sem_Disp is
*** 1482,1503 ****
              end if;
           end if;
  
-       --  If the tagged type is a concurrent type then we must be compiling
-       --  with no code generation (we are either compiling a generic unit or
-       --  compiling under -gnatc mode) because we have previously tested that
-       --  no serious errors has been reported. In this case we do not add the
-       --  primitive to the list of primitives of Tagged_Type but we leave the
-       --  primitive decorated as a dispatching operation to be able to analyze
-       --  and report errors associated with the Object.Operation notation.
- 
-       elsif Is_Concurrent_Type (Tagged_Type) then
-          pragma Assert (not Expander_Active);
- 
-          --  Attach operation to list of primitives of the synchronized type
-          --  itself, for ASIS use.
- 
-          Add_Dispatching_Operation (Tagged_Type, Subp);
- 
        --  If no old subprogram, then we add this as a dispatching operation,
        --  but we avoid doing this if an error was posted, to prevent annoying
        --  cascaded errors.
--- 1487,1492 ----
*************** package body Sem_Disp is
*** 1584,1593 ****
           Set_DT_Position_Value (Subp, No_Uint);
  
        elsif Has_Controlled_Component (Tagged_Type)
!         and then Nam_In (Chars (Subp), Name_Initialize,
!                                        Name_Adjust,
!                                        Name_Finalize,
!                                        Name_Finalize_Address)
        then
           declare
              F_Node   : constant Node_Id := Freeze_Node (Tagged_Type);
--- 1573,1582 ----
           Set_DT_Position_Value (Subp, No_Uint);
  
        elsif Has_Controlled_Component (Tagged_Type)
!         and then Chars (Subp) in Name_Initialize
!                                | Name_Adjust
!                                | Name_Finalize
!                                | Name_Finalize_Address
        then
           declare
              F_Node   : constant Node_Id := Freeze_Node (Tagged_Type);
*************** package body Sem_Disp is
*** 1652,1657 ****
--- 1641,1682 ----
           end;
        end if;
  
+       --  AI12-0279: If the Yield aspect is specified for a dispatching
+       --  subprogram that inherits the aspect, the specified value shall
+       --  be confirming.
+ 
+       if Is_Dispatching_Operation (Subp)
+         and then Is_Primitive_Wrapper (Subp)
+         and then Present (Wrapped_Entity (Subp))
+         and then Comes_From_Source (Wrapped_Entity (Subp))
+         and then Present (Overridden_Operation (Subp))
+         and then Has_Yield_Aspect (Overridden_Operation (Subp))
+                    /= Has_Yield_Aspect (Wrapped_Entity (Subp))
+       then
+          declare
+             W_Ent  : constant Entity_Id := Wrapped_Entity (Subp);
+             W_Decl : constant Node_Id := Parent (W_Ent);
+             Asp    : Node_Id;
+ 
+          begin
+             if Present (Aspect_Specifications (W_Decl)) then
+                Asp := First (Aspect_Specifications (W_Decl));
+                while Present (Asp) loop
+                   if Chars (Identifier (Asp)) = Name_Yield then
+                      Error_Msg_Name_1 := Name_Yield;
+                      Error_Msg_N
+                        ("specification of inherited aspect% can only confirm "
+                         & "parent value", Asp);
+                   end if;
+ 
+                   Next (Asp);
+                end loop;
+             end if;
+ 
+             Set_Has_Yield_Aspect (Wrapped_Entity (Subp));
+          end;
+       end if;
+ 
        --  For similarity with record extensions, in Ada 9X the language should
        --  have disallowed adding visible operations to a tagged type after
        --  deriving a private extension from it. Report a warning if this
*************** package body Sem_Disp is
*** 1989,1995 ****
        Ctrl_Type : Entity_Id;
  
     begin
!       if Ekind_In (Subp, E_Function, E_Procedure)
          and then Present (DTC_Entity (Subp))
        then
           return Scope (DTC_Entity (Subp));
--- 2014,2020 ----
        Ctrl_Type : Entity_Id;
  
     begin
!       if Ekind (Subp) in E_Function | E_Procedure
          and then Present (DTC_Entity (Subp))
        then
           return Scope (DTC_Entity (Subp));
*************** package body Sem_Disp is
*** 2564,2577 ****
        Prim : Node_Id;
  
     begin
-       --  Diagnose failure to match No_Return in parent (Ada-2005, AI-414, but
-       --  we do it unconditionally in Ada 95 now, since this is our pragma).
- 
-       if No_Return (Prev_Op) and then not No_Return (New_Op) then
-          Error_Msg_N ("procedure & must have No_Return pragma", New_Op);
-          Error_Msg_N ("\since overridden procedure has No_Return", New_Op);
-       end if;
- 
        --  If there is no previous operation to override, the type declaration
        --  was malformed, and an error must have been emitted already.
  
--- 2589,2594 ----
*************** package body Sem_Disp is
*** 2682,2688 ****
           Set_Alias (Prev_Op, New_Op);
           Set_DTC_Entity (Prev_Op, Empty);
           Set_Has_Controlling_Result (New_Op, Has_Controlling_Result (Prev_Op));
-          return;
        end if;
     end Override_Dispatching_Operation;
  
--- 2699,2704 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_disp.ads gcc-11.1.0/gcc/ada/sem_disp.ads
*** gcc-10.3.0/gcc/ada/sem_disp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_disp.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Disp is
*** 64,74 ****
     --  this call actually do???
  
     procedure Check_Operation_From_Private_View (Subp, Old_Subp : Entity_Id);
!    --  Add Old_Subp to the list of primitive operations of the corresponding
!    --  tagged type if it is the full view of a private tagged type. The Alias
!    --  of Old_Subp is adjusted to point to the inherited procedure of the
!    --  full view because it is always this one which has to be called.
!    --  What is Subp used for???
  
     function Covered_Interface_Op (Prim : Entity_Id) return Entity_Id;
     --  Returns the interface primitive that Prim covers, when its controlling
--- 64,74 ----
     --  this call actually do???
  
     procedure Check_Operation_From_Private_View (Subp, Old_Subp : Entity_Id);
!    --  No action performed if Subp is not an alias of a dispatching operation.
!    --  Add Old_Subp (if not already present) to the list of primitives of the
!    --  tagged type T of Subp if T is the full view of a private tagged type.
!    --  The Alias of Old_Subp is adjusted to point to the inherited procedure
!    --  of the full view because it is always this one which has to be called.
  
     function Covered_Interface_Op (Prim : Entity_Id) return Entity_Id;
     --  Returns the interface primitive that Prim covers, when its controlling
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_dist.adb gcc-11.1.0/gcc/ada/sem_dist.adb
*** gcc-10.3.0/gcc/ada/sem_dist.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_dist.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Dist is
*** 746,758 ****
        --  we are generating code.
  
        if Comes_From_Source (P)
          and then Is_Record_Type (ET)
!         and then (Is_Remote_Call_Interface (ET)
!                    or else Is_Remote_Types (ET))
          and then Present (Corresponding_Remote_Type (ET))
!         and then Nkind_In (Parent (Parent (P)), N_Procedure_Call_Statement,
!                                                 N_Indexed_Component)
!         and then Expander_Active
        then
           RAS_E_Dereference (P);
           return True;
--- 746,757 ----
        --  we are generating code.
  
        if Comes_From_Source (P)
+         and then Expander_Active
          and then Is_Record_Type (ET)
!         and then (Is_Remote_Call_Interface (ET) or else Is_Remote_Types (ET))
          and then Present (Corresponding_Remote_Type (ET))
!         and then Nkind (Parent (Parent (P))) in
!                    N_Procedure_Call_Statement | N_Indexed_Component
        then
           RAS_E_Dereference (P);
           return True;
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_dist.ads gcc-11.1.0/gcc/ada/sem_dist.ads
*** gcc-10.3.0/gcc/ada/sem_dist.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_dist.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_elab.adb gcc-11.1.0/gcc/ada/sem_elab.adb
*** gcc-10.3.0/gcc/ada/sem_elab.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_elab.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Elab is
*** 75,82 ****
     --  The access-before-elaboration (ABE) mechanism implemented in this unit
     --  has the following objectives:
     --
!    --    * Diagnose at compile-time or install run-time checks to prevent ABE
!    --      access to data and behaviour.
     --
     --      The high-level idea is to accurately diagnose ABE issues within a
     --      single unit because the ABE mechanism can inspect the whole unit.
--- 75,82 ----
     --  The access-before-elaboration (ABE) mechanism implemented in this unit
     --  has the following objectives:
     --
!    --    * Diagnose at compile time or install run-time checks to prevent ABE
!    --      access to data and behavior.
     --
     --      The high-level idea is to accurately diagnose ABE issues within a
     --      single unit because the ABE mechanism can inspect the whole unit.
*************** package body Sem_Elab is
*** 111,117 ****
     --    * Dynamic model - This is the most permissive of the three models.
     --      When the dynamic model is in effect, the mechanism diagnoses and
     --      installs run-time checks to detect ABE issues in the main unit.
!    --      The behaviour of this model is identical to that specified by the
     --      Ada RM. This model is enabled with switch -gnatE.
     --
     --    Static model - This is the middle ground of the three models. When
--- 111,117 ----
     --    * Dynamic model - This is the most permissive of the three models.
     --      When the dynamic model is in effect, the mechanism diagnoses and
     --      installs run-time checks to detect ABE issues in the main unit.
!    --      The behavior of this model is identical to that specified by the
     --      Ada RM. This model is enabled with switch -gnatE.
     --
     --    Static model - This is the middle ground of the three models. When
*************** package body Sem_Elab is
*** 122,128 ****
     --      the prior elaboration of withed units. This is the default model.
     --
     --    * SPARK model - This is the most conservative of the three models and
!    --      impelements the semantics defined in SPARK RM 7.7. The SPARK model
     --      is in effect only when a context resides in a SPARK_Mode On region,
     --      otherwise the mechanism falls back to one of the previous models.
     --
--- 122,128 ----
     --      the prior elaboration of withed units. This is the default model.
     --
     --    * SPARK model - This is the most conservative of the three models and
!    --      implements the semantics defined in SPARK RM 7.7. The SPARK model
     --      is in effect only when a context resides in a SPARK_Mode On region,
     --      otherwise the mechanism falls back to one of the previous models.
     --
*************** package body Sem_Elab is
*** 186,192 ****
     --
     --  * Library level - A type of enclosing level. A scenario or target is at
     --    the library level if it appears in a package library unit, ignoring
!    --    enclosng packages.
     --
     --  * Non-library-level encapsulator - A construct that cannot be elaborated
     --    on its own and requires elaboration by a top-level scenario.
--- 186,192 ----
     --
     --  * Library level - A type of enclosing level. A scenario or target is at
     --    the library level if it appears in a package library unit, ignoring
!    --    enclosing packages.
     --
     --  * Non-library-level encapsulator - A construct that cannot be elaborated
     --    on its own and requires elaboration by a top-level scenario.
*************** package body Sem_Elab is
*** 400,406 ****
     --  capture the target and relevant attributes of the original call.
     --
     --  The diagnostics of the ABE mechanism depend on accurate source locations
!    --  to determine the spacial relation of nodes.
  
     -----------------------------------------
     -- Suppression of elaboration warnings --
--- 400,406 ----
     --  capture the target and relevant attributes of the original call.
     --
     --  The diagnostics of the ABE mechanism depend on accurate source locations
!    --  to determine the spatial relation of nodes.
  
     -----------------------------------------
     -- Suppression of elaboration warnings --
*************** package body Sem_Elab is
*** 590,596 ****
     --  -gnatH   legacy elaboration checking mode enabled
     --
     --           When this switch is in effect, the pre-18.x ABE model becomes
!    --           the defacto ABE model. This ammounts to cutting off all entry
     --           points into the new ABE mechanism, and giving full control to
     --           the old ABE mechanism.
     --
--- 590,596 ----
     --  -gnatH   legacy elaboration checking mode enabled
     --
     --           When this switch is in effect, the pre-18.x ABE model becomes
!    --           the de facto ABE model. This amounts to cutting off all entry
     --           points into the new ABE mechanism, and giving full control to
     --           the old ABE mechanism.
     --
*************** package body Sem_Elab is
*** 1952,1957 ****
--- 1952,1969 ----
     pragma Inline (Compilation_Unit);
     --  Return the N_Compilation_Unit node of unit Unit_Id
  
+    function Elaboration_Phase_Active return Boolean;
+    pragma Inline (Elaboration_Phase_Active);
+    --  Determine whether the elaboration phase of the compilation has started
+ 
+    procedure Error_Preelaborated_Call (N : Node_Id);
+    --  Give an error or warning for a non-static/non-preelaborable call in a
+    --  preelaborated unit.
+ 
+    procedure Finalize_All_Data_Structures;
+    pragma Inline (Finalize_All_Data_Structures);
+    --  Destroy all internal data structures
+ 
     function Find_Enclosing_Instance (N : Node_Id) return Node_Id;
     pragma Inline (Find_Enclosing_Instance);
     --  Find the declaration or body of the nearest expanded instance which
*************** package body Sem_Elab is
*** 1972,1985 ****
     --  Return the type of subprogram Subp_Id's first formal parameter. If the
     --  subprogram lacks formal parameters, return Empty.
  
-    function Elaboration_Phase_Active return Boolean;
-    pragma Inline (Elaboration_Phase_Active);
-    --  Determine whether the elaboration phase of the compilation has started
- 
-    procedure Finalize_All_Data_Structures;
-    pragma Inline (Finalize_All_Data_Structures);
-    --  Destroy all internal data structures
- 
     function Has_Body (Pack_Decl : Node_Id) return Boolean;
     pragma Inline (Has_Body);
     --  Determine whether package declaration Pack_Decl has a corresponding body
--- 1984,1989 ----
*************** package body Sem_Elab is
*** 2410,2419 ****
           --  Default_Initial_Condition
  
           elsif Is_Default_Initial_Condition_Proc (Subp_Id) then
!             Output_Verification_Call
!               (Pred    => "Default_Initial_Condition",
!                Id      => First_Formal_Type (Subp_Id),
!                Id_Kind => "type");
  
           --  Entries
  
--- 2414,2429 ----
           --  Default_Initial_Condition
  
           elsif Is_Default_Initial_Condition_Proc (Subp_Id) then
! 
!             --  Only do output for a normal DIC procedure, since partial DIC
!             --  procedures are subsidiary to those.
! 
!             if not Is_Partial_DIC_Procedure (Subp_Id) then
!                Output_Verification_Call
!                  (Pred    => "Default_Initial_Condition",
!                   Id      => First_Formal_Type (Subp_Id),
!                   Id_Kind => "type");
!             end if;
  
           --  Entries
  
*************** package body Sem_Elab is
*** 2605,2611 ****
  
              Par := Parent (Call);
              while Present (Par) loop
!                if Nkind_In (Par, N_Package_Body, N_Package_Declaration) then
                    return Defining_Entity (Par);
  
                 elsif Nkind (Par) = N_Handled_Sequence_Of_Statements then
--- 2615,2621 ----
  
              Par := Parent (Call);
              while Present (Par) loop
!                if Nkind (Par) in N_Package_Body | N_Package_Declaration then
                    return Defining_Entity (Par);
  
                 elsif Nkind (Par) = N_Handled_Sequence_Of_Statements then
*************** package body Sem_Elab is
*** 2954,2964 ****
              --  task objects found in the declarations.
  
              else
!                pragma Assert (Nkind_In (Context, N_Block_Statement,
!                                                  N_Entry_Body,
!                                                  N_Protected_Body,
!                                                  N_Subprogram_Body,
!                                                  N_Task_Body));
  
                 Traverse_List
                   (List      => Declarations (Context),
--- 2964,2973 ----
              --  task objects found in the declarations.
  
              else
!                pragma Assert
!                  (Nkind (Context) in
!                     N_Block_Statement | N_Entry_Body | N_Protected_Body |
!                     N_Subprogram_Body | N_Task_Body);
  
                 Traverse_List
                   (List      => Declarations (Context),
*************** package body Sem_Elab is
*** 2981,2990 ****
        --  When the name denotes an array or record component, find the whole
        --  object.
  
!       while Nkind_In (Nam, N_Explicit_Dereference,
!                            N_Indexed_Component,
!                            N_Selected_Component,
!                            N_Slice)
        loop
           Nam := Prefix (Nam);
        end loop;
--- 2990,2998 ----
        --  When the name denotes an array or record component, find the whole
        --  object.
  
!       while Nkind (Nam) in
!         N_Explicit_Dereference | N_Indexed_Component |
!         N_Selected_Component   | N_Slice
        loop
           Nam := Prefix (Nam);
        end loop;
*************** package body Sem_Elab is
*** 3294,3301 ****
              elsif (Debug_Flag_Underscore_A
                      or else Restriction_Active
                                (No_Entry_Calls_In_Elaboration_Code))
!               and then Nkind_In (Original_Node (Scen), N_Accept_Statement,
!                                                        N_Selective_Accept)
              then
                 return Abandon;
  
--- 3302,3309 ----
              elsif (Debug_Flag_Underscore_A
                      or else Restriction_Active
                                (No_Entry_Calls_In_Elaboration_Code))
!               and then Nkind (Original_Node (Scen)) in
!                          N_Accept_Statement | N_Selective_Accept
              then
                 return Abandon;
  
*************** package body Sem_Elab is
*** 3329,3346 ****
              --  until expansion transforms the node and relocates the contents.
              --  Examine these lists in case expansion is disabled.
  
!             elsif Nkind_In (Scen, N_And_Then, N_Or_Else) then
                 Traverse_List (Actions (Scen));
  
!             elsif Nkind_In (Scen, N_Elsif_Part, N_Iteration_Scheme) then
                 Traverse_List (Condition_Actions (Scen));
  
              elsif Nkind (Scen) = N_If_Expression then
                 Traverse_List (Then_Actions (Scen));
                 Traverse_List (Else_Actions (Scen));
  
!             elsif Nkind_In (Scen, N_Component_Association,
!                                   N_Iterated_Component_Association)
              then
                 Traverse_List (Loop_Actions (Scen));
  
--- 3337,3354 ----
              --  until expansion transforms the node and relocates the contents.
              --  Examine these lists in case expansion is disabled.
  
!             elsif Nkind (Scen) in N_And_Then | N_Or_Else then
                 Traverse_List (Actions (Scen));
  
!             elsif Nkind (Scen) in N_Elsif_Part | N_Iteration_Scheme then
                 Traverse_List (Condition_Actions (Scen));
  
              elsif Nkind (Scen) = N_If_Expression then
                 Traverse_List (Then_Actions (Scen));
                 Traverse_List (Else_Actions (Scen));
  
!             elsif Nkind (Scen) in
!                     N_Component_Association | N_Iterated_Component_Association
              then
                 Traverse_List (Loop_Actions (Scen));
  
*************** package body Sem_Elab is
*** 3511,3518 ****
              --  contexts because nested calls has not been relocated to their
              --  final context.
  
!             if Nkind_In (Par, N_Aspect_Specification,
!                               N_Generic_Association)
              then
                 return True;
  
--- 3519,3525 ----
              --  contexts because nested calls has not been relocated to their
              --  final context.
  
!             if Nkind (Par) in N_Aspect_Specification | N_Generic_Association
              then
                 return True;
  
*************** package body Sem_Elab is
*** 3540,3548 ****
           --  To qualify, the node must appear immediately within a source call
           --  which invokes a source target.
  
!          if Nkind_In (Outer_Call, N_Entry_Call_Statement,
!                                   N_Function_Call,
!                                   N_Procedure_Call_Statement)
             and then Comes_From_Source (Outer_Call)
           then
              Outer_Nam := Call_Name (Outer_Call);
--- 3547,3555 ----
           --  To qualify, the node must appear immediately within a source call
           --  which invokes a source target.
  
!          if Nkind (Outer_Call) in N_Entry_Call_Statement
!                                 | N_Function_Call
!                                 | N_Procedure_Call_Statement
             and then Comes_From_Source (Outer_Call)
           then
              Outer_Nam := Call_Name (Outer_Call);
*************** package body Sem_Elab is
*** 3572,3580 ****
           return
             Nkind (Subp_Decl) = N_Subprogram_Renaming_Declaration
               and then not Comes_From_Source (Subp_Decl)
!              and then Nkind_In (Context, N_Function_Specification,
!                                          N_Package_Specification,
!                                          N_Procedure_Specification)
               and then Present (Generic_Parent (Context));
        end Is_Generic_Formal_Subp;
  
--- 3579,3587 ----
           return
             Nkind (Subp_Decl) = N_Subprogram_Renaming_Declaration
               and then not Comes_From_Source (Subp_Decl)
!              and then Nkind (Context) in N_Function_Specification
!                                        | N_Package_Specification
!                                        | N_Procedure_Specification
               and then Present (Generic_Parent (Context));
        end Is_Generic_Formal_Subp;
  
*************** package body Sem_Elab is
*** 3594,3605 ****
        if Legacy_Elaboration_Checks then
           return;
  
-       --  Nothing to do for ASIS because ABE checks and diagnostics are not
-       --  performed in this mode.
- 
-       elsif ASIS_Mode then
-          return;
- 
        --  Nothing to do when the call is being preanalyzed as the marker will
        --  be inserted in the wrong place.
  
--- 3601,3606 ----
*************** package body Sem_Elab is
*** 3614,3623 ****
  
        --  Nothing to do when the input does not denote a call or a requeue
  
!       elsif not Nkind_In (N, N_Entry_Call_Statement,
!                              N_Function_Call,
!                              N_Procedure_Call_Statement,
!                              N_Requeue_Statement)
        then
           return;
  
--- 3615,3624 ----
  
        --  Nothing to do when the input does not denote a call or a requeue
  
!       elsif Nkind (N) not in N_Entry_Call_Statement
!                            | N_Function_Call
!                            | N_Procedure_Call_Statement
!                            | N_Requeue_Statement
        then
           return;
  
*************** package body Sem_Elab is
*** 3626,3632 ****
        --  elaboration) is in effect.
  
        elsif Debug_Flag_Underscore_E
!         and then Nkind_In (N, N_Entry_Call_Statement, N_Requeue_Statement)
        then
           return;
  
--- 3627,3633 ----
        --  elaboration) is in effect.
  
        elsif Debug_Flag_Underscore_E
!         and then Nkind (N) in N_Entry_Call_Statement | N_Requeue_Statement
        then
           return;
  
*************** package body Sem_Elab is
*** 3687,3692 ****
--- 3688,3698 ----
        then
           return;
  
+       --  Static expression functions require no ABE processing
+ 
+       elsif Is_Static_Function (Subp_Id) then
+          return;
+ 
        --  Source calls to source targets are always considered because they
        --  reflect the original call graph.
  
*************** package body Sem_Elab is
*** 3737,3744 ****
          (Marker, Find_Enclosing_Level (N) = Declaration_Level);
  
        Set_Is_Dispatching_Call
!         (Marker, Nkind_In (N, N_Function_Call, N_Procedure_Call_Statement)
!                    and then Present (Controlling_Argument (N)));
  
        Set_Is_Elaboration_Checks_OK_Node
          (Marker, Is_Elaboration_Checks_OK_Node (N));
--- 3743,3751 ----
          (Marker, Find_Enclosing_Level (N) = Declaration_Level);
  
        Set_Is_Dispatching_Call
!         (Marker,
!          Nkind (N) in N_Subprogram_Call
!            and then Present (Controlling_Argument (N)));
  
        Set_Is_Elaboration_Checks_OK_Node
          (Marker, Is_Elaboration_Checks_OK_Node (N));
*************** package body Sem_Elab is
*** 3751,3756 ****
--- 3758,3772 ----
        Set_Is_SPARK_Mode_On_Node (Marker, Is_SPARK_Mode_On_Node (N));
        Set_Target                (Marker, Subp_Id);
  
+       --  Ada 2020 (AI12-0175): Calls to certain functions that are essentially
+       --  unchecked conversions are preelaborable.
+ 
+       if Ada_Version >= Ada_2020 then
+          Set_Is_Preelaborable_Call (Marker, Is_Preelaborable_Construct (N));
+       else
+          Set_Is_Preelaborable_Call (Marker, False);
+       end if;
+ 
        --  The marker is inserted prior to the original call. This placement has
        --  several desirable effects:
  
*************** package body Sem_Elab is
*** 3937,3949 ****
           Finalize_All_Data_Structures;
           return;
  
-       --  Nothing to do for ASIS because ABE checks and diagnostics are not
-       --  performed in this mode.
- 
-       elsif ASIS_Mode then
-          Finalize_All_Data_Structures;
-          return;
- 
        --  Nothing to do when the elaboration phase of the compiler is not
        --  active.
  
--- 3953,3958 ----
*************** package body Sem_Elab is
*** 4532,4539 ****
        --  statement due to expansion activities.
  
        if Nkind (Comp_Unit) = N_Null_Statement
!         and then Nkind_In (Original_Node (Comp_Unit), N_Protected_Body,
!                                                       N_Task_Body)
        then
           Comp_Unit := Parent (Comp_Unit);
           pragma Assert (Nkind (Comp_Unit) = N_Subunit);
--- 4541,4548 ----
        --  statement due to expansion activities.
  
        if Nkind (Comp_Unit) = N_Null_Statement
!         and then Nkind (Original_Node (Comp_Unit)) in
!                    N_Protected_Body | N_Task_Body
        then
           Comp_Unit := Parent (Comp_Unit);
           pragma Assert (Nkind (Comp_Unit) = N_Subunit);
*************** package body Sem_Elab is
*** 4549,4557 ****
        --  the instantiated subprogram.
  
        if Nkind (Comp_Unit) = N_Package_Specification
!         and then Nkind_In (Original_Node (Parent (Comp_Unit)),
!                            N_Function_Instantiation,
!                            N_Procedure_Instantiation)
        then
           Comp_Unit := Parent (Parent (Comp_Unit));
  
--- 4558,4565 ----
        --  the instantiated subprogram.
  
        if Nkind (Comp_Unit) = N_Package_Specification
!         and then Nkind (Original_Node (Parent (Comp_Unit))) in
!                    N_Function_Instantiation | N_Procedure_Instantiation
        then
           Comp_Unit := Parent (Parent (Comp_Unit));
  
*************** package body Sem_Elab is
*** 4891,4896 ****
--- 4899,4906 ----
                         (Marker, Elaboration_Checks_OK (Attr_Rep));
              Set_Is_Elaboration_Warnings_OK_Node
                         (Marker, Elaboration_Warnings_OK (Attr_Rep));
+             Set_Is_Preelaborable_Call
+                        (Marker, False);
              Set_Is_Source_Call
                         (Marker, Comes_From_Source (Attr));
              Set_Is_SPARK_Mode_On_Node
*************** package body Sem_Elab is
*** 5684,5690 ****
  
           --  Ensure that the unit with the target body is elaborated prior to
           --  the main unit. The implicit Elaborate[_All] is generated only when
!          --  the call has elaboration checks enabled. This behaviour parallels
           --  that of the old ABE mechanism.
  
           if Elaboration_Checks_OK (Call_Rep) then
--- 5694,5700 ----
  
           --  Ensure that the unit with the target body is elaborated prior to
           --  the main unit. The implicit Elaborate[_All] is generated only when
!          --  the call has elaboration checks enabled. This behavior parallels
           --  that of the old ABE mechanism.
  
           if Elaboration_Checks_OK (Call_Rep) then
*************** package body Sem_Elab is
*** 6084,6090 ****
  
           --  Ensure that the unit with the generic body is elaborated prior
           --  to the main unit. No implicit pragma has to be generated if the
!          --  instantiation has elaboration checks suppressed. This behaviour
           --  parallels that of the old ABE mechanism.
  
           if Elaboration_Checks_OK (Inst_Rep) then
--- 6094,6100 ----
  
           --  Ensure that the unit with the generic body is elaborated prior
           --  to the main unit. No implicit pragma has to be generated if the
!          --  instantiation has elaboration checks suppressed. This behavior
           --  parallels that of the old ABE mechanism.
  
           if Elaboration_Checks_OK (Inst_Rep) then
*************** package body Sem_Elab is
*** 7024,7030 ****
                 --  Enter encapsulators by inspecting their declarations and/or
                 --  statements.
  
!                if Nkind_In (Curr, N_Block_Statement, N_Package_Body) then
                    Enter_Handled_Body (Curr);
  
                 elsif Nkind (Curr) = N_Package_Declaration then
--- 7034,7040 ----
                 --  Enter encapsulators by inspecting their declarations and/or
                 --  statements.
  
!                if Nkind (Curr) in N_Block_Statement | N_Package_Body then
                    Enter_Handled_Body (Curr);
  
                 elsif Nkind (Curr) = N_Package_Declaration then
*************** package body Sem_Elab is
*** 7055,7061 ****
                 --    amount of work, but has the beneficial effect of computing
                 --    the early call regions of all preceding bodies.
  
!                elsif Nkind_In (Curr, N_Entry_Body, N_Subprogram_Body) then
                    Start :=
                      Find_Early_Call_Region
                        (Body_Decl        => Curr,
--- 7065,7071 ----
                 --    amount of work, but has the beneficial effect of computing
                 --    the early call regions of all preceding bodies.
  
!                elsif Nkind (Curr) in N_Entry_Body | N_Subprogram_Body then
                    Start :=
                      Find_Early_Call_Region
                        (Body_Decl        => Curr,
*************** package body Sem_Elab is
*** 7091,7099 ****
                 --    visible declarations -> upper level
                 --    visible declarations -> terminate
  
!                if Nkind_In (Context, N_Package_Specification,
!                                      N_Protected_Definition,
!                                      N_Task_Definition)
                 then
                    Transition_Spec_Declarations (Context, Curr);
  
--- 7101,7109 ----
                 --    visible declarations -> upper level
                 --    visible declarations -> terminate
  
!                if Nkind (Context) in N_Package_Specification
!                                    | N_Protected_Definition
!                                    | N_Task_Definition
                 then
                    Transition_Spec_Declarations (Context, Curr);
  
*************** package body Sem_Elab is
*** 7113,7124 ****
                 --    declarations -> corresponding package spec (Elab_Body)
                 --    declarations -> terminate
  
!                elsif Nkind_In (Context, N_Block_Statement,
!                                         N_Entry_Body,
!                                         N_Package_Body,
!                                         N_Protected_Body,
!                                         N_Subprogram_Body,
!                                         N_Task_Body)
                 then
                    Transition_Body_Declarations (Context, Curr);
  
--- 7123,7134 ----
                 --    declarations -> corresponding package spec (Elab_Body)
                 --    declarations -> terminate
  
!                elsif Nkind (Context) in N_Block_Statement
!                                       | N_Entry_Body
!                                       | N_Package_Body
!                                       | N_Protected_Body
!                                       | N_Subprogram_Body
!                                       | N_Task_Body
                 then
                    Transition_Body_Declarations (Context, Curr);
  
*************** package body Sem_Elab is
*** 7423,7434 ****
              --  The search must come from the statements of certain bodies or
              --  statements.
  
!             pragma Assert (Nkind_In (Bod, N_Block_Statement,
!                                           N_Entry_Body,
!                                           N_Package_Body,
!                                           N_Protected_Body,
!                                           N_Subprogram_Body,
!                                           N_Task_Body));
  
              --  The search must come from the statements of the handled
              --  sequence.
--- 7433,7446 ----
              --  The search must come from the statements of certain bodies or
              --  statements.
  
!             pragma Assert
!               (Nkind (Bod) in
!                  N_Block_Statement |
!                  N_Entry_Body      |
!                  N_Package_Body    |
!                  N_Protected_Body  |
!                  N_Subprogram_Body |
!                  N_Task_Body);
  
              --  The search must come from the statements of the handled
              --  sequence.
*************** package body Sem_Elab is
*** 7824,7830 ****
           begin
              --  Nothing to do if the pragma is not related to elaboration
  
!             if not Nam_In (Prag_Nam, Name_Elaborate, Name_Elaborate_All) then
                 return;
  
              --  Nothing to do when the pragma is illegal
--- 7836,7842 ----
           begin
              --  Nothing to do if the pragma is not related to elaboration
  
!             if Prag_Nam not in Name_Elaborate | Name_Elaborate_All then
                 return;
  
              --  Nothing to do when the pragma is illegal
*************** package body Sem_Elab is
*** 7999,8005 ****
           --    body -> spec
  
           if Present (Unit_Id)
!            and then Nkind_In (Unit_Id, N_Package_Body, N_Subprogram_Body)
           then
              Find_Elaboration_Context (Parent (Unit_Id));
  
--- 8011,8017 ----
           --    body -> spec
  
           if Present (Unit_Id)
!            and then Nkind (Unit_Id) in N_Package_Body | N_Subprogram_Body
           then
              Find_Elaboration_Context (Parent (Unit_Id));
  
*************** package body Sem_Elab is
*** 8019,8028 ****
           --    parent spec -> grandparent spec and so on
  
           if Present (Unit_Id)
!            and then Nkind_In (Unit_Id, N_Generic_Package_Declaration,
!                                    N_Generic_Subprogram_Declaration,
!                                    N_Package_Declaration,
!                                    N_Subprogram_Declaration)
           then
              Find_Elaboration_Context (Parent (Unit_Id));
  
--- 8031,8040 ----
           --    parent spec -> grandparent spec and so on
  
           if Present (Unit_Id)
!            and then Nkind (Unit_Id) in N_Generic_Package_Declaration
!                                      | N_Generic_Subprogram_Declaration
!                                      | N_Package_Declaration
!                                      | N_Subprogram_Declaration
           then
              Find_Elaboration_Context (Parent (Unit_Id));
  
*************** package body Sem_Elab is
*** 8103,8114 ****
           Prag_Nam : Name_Id;
           In_State : Processing_In_State)
        is
!          pragma Assert (Nam_In (Prag_Nam, Name_Elaborate, Name_Elaborate_All));
  
        begin
           --  Nothing to do when the need for prior elaboration came from a
           --  partial finalization routine which occurs in an initialization
!          --  context. This behaviour parallels that of the old ABE mechanism.
  
           if In_State.Within_Partial_Finalization then
              return;
--- 8115,8126 ----
           Prag_Nam : Name_Id;
           In_State : Processing_In_State)
        is
!          pragma Assert (Prag_Nam in Name_Elaborate | Name_Elaborate_All);
  
        begin
           --  Nothing to do when the need for prior elaboration came from a
           --  partial finalization routine which occurs in an initialization
!          --  context. This behavior parallels that of the old ABE mechanism.
  
           if In_State.Within_Partial_Finalization then
              return;
*************** package body Sem_Elab is
*** 8574,8580 ****
           Req_Nam  : Name_Id;
           In_State : Processing_In_State)
        is
!          pragma Assert (Nam_In (Req_Nam, Name_Elaborate, Name_Elaborate_All));
  
           Main_Id : constant Entity_Id := Main_Unit_Entity;
           Unit_Id : constant Entity_Id := Find_Top_Unit (Targ_Id);
--- 8586,8592 ----
           Req_Nam  : Name_Id;
           In_State : Processing_In_State)
        is
!          pragma Assert (Req_Nam in Name_Elaborate | Name_Elaborate_All);
  
           Main_Id : constant Entity_Id := Main_Unit_Entity;
           Unit_Id : constant Entity_Id := Find_Top_Unit (Targ_Id);
*************** package body Sem_Elab is
*** 8770,8777 ****
              --  requirement.
  
              if Present (Unit_Prag)
!               and then Nam_In (Pragma_Name (Unit_Prag), Name_Elaborate_All,
!                                                         Req_Nam)
              then
                 Req_Met := True;
  
--- 8782,8788 ----
              --  requirement.
  
              if Present (Unit_Prag)
!               and then Pragma_Name (Unit_Prag) in Name_Elaborate_All | Req_Nam
              then
                 Req_Met := True;
  
*************** package body Sem_Elab is
*** 8851,8856 ****
--- 8862,8890 ----
        return Elaboration_Phase = Active;
     end Elaboration_Phase_Active;
  
+    ------------------------------
+    -- Error_Preelaborated_Call --
+    ------------------------------
+ 
+    procedure Error_Preelaborated_Call (N : Node_Id) is
+    begin
+       --  This is a warning in GNAT mode allowing such calls to be used in the
+       --  predefined library units with appropriate care.
+ 
+       Error_Msg_Warn := GNAT_Mode;
+ 
+       --  Ada 2020 (AI12-0175): Calls to certain functions that are essentially
+       --  unchecked conversions are preelaborable.
+ 
+       if Ada_Version >= Ada_2020 then
+          Error_Msg_N
+            ("<<non-preelaborable call not allowed in preelaborated unit", N);
+       else
+          Error_Msg_N
+            ("<<non-static call not allowed in preelaborated unit", N);
+       end if;
+    end Error_Preelaborated_Call;
+ 
     ----------------------------------
     -- Finalize_All_Data_Structures --
     ----------------------------------
*************** package body Sem_Elab is
*** 8877,8886 ****
  
        Par := N;
        while Present (Par) loop
!          if Nkind_In (Par, N_Package_Body,
!                            N_Package_Declaration,
!                            N_Subprogram_Body,
!                            N_Subprogram_Declaration)
             and then Is_Generic_Instance (Unique_Defining_Entity (Par))
           then
              return Par;
--- 8911,8920 ----
  
        Par := N;
        while Present (Par) loop
!          if Nkind (Par) in N_Package_Body
!                          | N_Package_Declaration
!                          | N_Subprogram_Body
!                          | N_Subprogram_Declaration
             and then Is_Generic_Instance (Unique_Defining_Entity (Par))
           then
              return Par;
*************** package body Sem_Elab is
*** 8953,8962 ****
        --  but are later relocated in a different context retain their original
        --  declaration level.
  
!       if Nkind_In (N, N_Call_Marker,
!                       N_Function_Instantiation,
!                       N_Package_Instantiation,
!                       N_Procedure_Instantiation)
          and then Is_Declaration_Level_Node (N)
        then
           return Declaration_Level;
--- 8987,8996 ----
        --  but are later relocated in a different context retain their original
        --  declaration level.
  
!       if Nkind (N) in N_Call_Marker
!                     | N_Function_Instantiation
!                     | N_Package_Instantiation
!                     | N_Procedure_Instantiation
          and then Is_Declaration_Level_Node (N)
        then
           return Declaration_Level;
*************** package body Sem_Elab is
*** 8977,8983 ****
           --  they are always elaborated when the enclosing context is invoked
           --  or elaborated.
  
!          elsif Nkind_In (Curr, N_Package_Body, N_Package_Declaration) then
              null;
  
           --  The current construct is a block statement
--- 9011,9017 ----
           --  they are always elaborated when the enclosing context is invoked
           --  or elaborated.
  
!          elsif Nkind (Curr) in N_Package_Body | N_Package_Declaration then
              null;
  
           --  The current construct is a block statement
*************** package body Sem_Elab is
*** 9009,9017 ****
  
           --  The current construct is a declaration-level encapsulator
  
!          elsif Nkind_In (Curr, N_Entry_Body,
!                                N_Subprogram_Body,
!                                N_Task_Body)
           then
              --  If the traversal came from the handled sequence of statments,
              --  then the node cannot possibly appear at any level. This is
--- 9043,9050 ----
  
           --  The current construct is a declaration-level encapsulator
  
!          elsif Nkind (Curr) in
!                  N_Entry_Body | N_Subprogram_Body | N_Task_Body
           then
              --  If the traversal came from the handled sequence of statments,
              --  then the node cannot possibly appear at any level. This is
*************** package body Sem_Elab is
*** 9099,9106 ****
        --  that of the "related instance".
  
        elsif Nkind (N) = N_Package_Declaration
!         and then Nkind_In (Orig_N, N_Function_Instantiation,
!                                    N_Procedure_Instantiation)
          and then Nkind (Context) = N_Compilation_Unit
        then
           return Related_Instance (Defining_Entity (N));
--- 9132,9139 ----
        --  that of the "related instance".
  
        elsif Nkind (N) = N_Package_Declaration
!         and then Nkind (Orig_N) in
!                    N_Function_Instantiation | N_Procedure_Instantiation
          and then Nkind (Context) = N_Compilation_Unit
        then
           return Related_Instance (Defining_Entity (N));
*************** package body Sem_Elab is
*** 9111,9118 ****
  
        elsif Nkind (N) = N_Subunit
          and then Nkind (Proper_Body (N)) = N_Null_Statement
!         and then Nkind_In (Original_Node (Proper_Body (N)), N_Protected_Body,
!                                                             N_Task_Body)
        then
           return Defining_Entity (Original_Node (Proper_Body (N)));
  
--- 9144,9151 ----
  
        elsif Nkind (N) = N_Subunit
          and then Nkind (Proper_Body (N)) = N_Null_Statement
!         and then Nkind (Original_Node (Proper_Body (N))) in
!                    N_Protected_Body | N_Task_Body
        then
           return Defining_Entity (Original_Node (Proper_Body (N)));
  
*************** package body Sem_Elab is
*** 9138,9144 ****
           --  Handle various combinations of concurrent and private types
  
           loop
!             if Ekind_In (Typ, E_Protected_Type, E_Task_Type)
                and then Present (Anonymous_Object (Typ))
              then
                 Typ := Anonymous_Object (Typ);
--- 9171,9177 ----
           --  Handle various combinations of concurrent and private types
  
           loop
!             if Ekind (Typ) in E_Protected_Type | E_Task_Type
                and then Present (Anonymous_Object (Typ))
              then
                 Typ := Anonymous_Object (Typ);
*************** package body Sem_Elab is
*** 9216,9225 ****
           Target_Decl : Node_Id;
           Target_Body : Node_Id) return Boolean
        is
        begin
           --  Avoid cascaded errors if there were previous serious infractions.
           --  As a result the scenario will not be treated as a guaranteed ABE.
!          --  This behaviour parallels that of the old ABE mechanism.
  
           if Serious_Errors_Detected > 0 then
              return False;
--- 9249,9259 ----
           Target_Decl : Node_Id;
           Target_Body : Node_Id) return Boolean
        is
+          Spec : Node_Id;
        begin
           --  Avoid cascaded errors if there were previous serious infractions.
           --  As a result the scenario will not be treated as a guaranteed ABE.
!          --  This behavior parallels that of the old ABE mechanism.
  
           if Serious_Errors_Detected > 0 then
              return False;
*************** package body Sem_Elab is
*** 9236,9247 ****
                 return Earlier_In_Extended_Unit (N, Target_Body);
  
              --  Otherwise the body has not been encountered yet. The scenario
!             --  is a guaranteed ABE since the body will appear later. It is
!             --  assumed that the caller has already ensured that the scenario
!             --  is ABE-safe because optional bodies are not considered here.
  
              else
!                return True;
              end if;
           end if;
  
--- 9270,9289 ----
                 return Earlier_In_Extended_Unit (N, Target_Body);
  
              --  Otherwise the body has not been encountered yet. The scenario
!             --  is a guaranteed ABE since the body will appear later, unless
!             --  this is a null specification, which can occur if expansion is
!             --  disabled (e.g. -gnatc or GNATprove mode). It is assumed that
!             --  the caller has already ensured that the scenario is ABE-safe
!             --  because optional bodies are not considered here.
  
              else
!                Spec := Specification (Target_Decl);
! 
!                if Nkind (Spec) /= N_Procedure_Specification
!                  or else not Null_Present (Spec)
!                then
!                   return True;
!                end if;
              end if;
           end if;
  
*************** package body Sem_Elab is
*** 9544,9550 ****
                 Error_Msg_N ("\Program_Error will be raised at run time", Call);
              end if;
  
!             --  Mark the call as a guarnateed ABE
  
              Set_Is_Known_Guaranteed_ABE (Call);
  
--- 9586,9592 ----
                 Error_Msg_N ("\Program_Error will be raised at run time", Call);
              end if;
  
!             --  Mark the call as a guaranteed ABE
  
              Set_Is_Known_Guaranteed_ABE (Call);
  
*************** package body Sem_Elab is
*** 10872,10884 ****
           elsif Is_Task_Type (Id) then
              Rec := Create_Task_Rep (Id);
  
!          elsif Ekind_In (Id, E_Constant, E_Variable) then
              Rec := Create_Variable_Rep (Id);
  
!          elsif Ekind_In (Id, E_Entry,
!                              E_Function,
!                              E_Operator,
!                              E_Procedure)
           then
              Rec := Create_Subprogram_Rep (Id);
  
--- 10914,10923 ----
           elsif Is_Task_Type (Id) then
              Rec := Create_Task_Rep (Id);
  
!          elsif Ekind (Id) in E_Constant | E_Variable then
              Rec := Create_Variable_Rep (Id);
  
!          elsif Ekind (Id) in E_Entry | E_Function | E_Operator | E_Procedure
           then
              Rec := Create_Subprogram_Rep (Id);
  
*************** package body Sem_Elab is
*** 11907,11912 ****
--- 11946,11952 ----
           Set_Is_Elaboration_Checks_OK_Node   (Marker, False);
           Set_Is_Elaboration_Warnings_OK_Node (Marker, False);
           Set_Is_Ignored_Ghost_Node           (Marker, False);
+          Set_Is_Preelaborable_Call           (Marker, False);
           Set_Is_Source_Call                  (Marker, False);
           Set_Is_SPARK_Mode_On_Node           (Marker, False);
  
*************** package body Sem_Elab is
*** 11946,11951 ****
--- 11986,11992 ----
           Set_Is_Elaboration_Checks_OK_Node   (Marker, False);
           Set_Is_Elaboration_Warnings_OK_Node (Marker, False);
           Set_Is_Ignored_Ghost_Node           (Marker, False);
+          Set_Is_Preelaborable_Call           (Marker, False);
           Set_Is_Source_Call                  (Marker, False);
           Set_Is_SPARK_Mode_On_Node           (Marker, False);
  
*************** package body Sem_Elab is
*** 12053,12066 ****
  
                 --  The main unit is a body
  
!                if Ekind_In (Main_Unit_Id, E_Package_Body,
!                                           E_Subprogram_Body)
                 then
                    return In_Body;
  
                 --  The main unit is a stand-alone subprogram body
  
!                elsif Ekind_In (Main_Unit_Id, E_Function, E_Procedure)
                   and then Nkind (Unit_Declaration_Node (Main_Unit_Id)) =
                              N_Subprogram_Body
                 then
--- 12094,12106 ----
  
                 --  The main unit is a body
  
!                if Ekind (Main_Unit_Id) in E_Package_Body | E_Subprogram_Body
                 then
                    return In_Body;
  
                 --  The main unit is a stand-alone subprogram body
  
!                elsif Ekind (Main_Unit_Id) in E_Function | E_Procedure
                   and then Nkind (Unit_Declaration_Node (Main_Unit_Id)) =
                              N_Subprogram_Body
                 then
*************** package body Sem_Elab is
*** 12075,12082 ****
              --  Otherwise the node is in the complementary unit of the main
              --  unit. The main unit is a body, the node is in the spec.
  
!             elsif Ekind_In (Main_Unit_Id, E_Package_Body,
!                                           E_Subprogram_Body)
              then
                 return In_Spec;
  
--- 12115,12121 ----
              --  Otherwise the node is in the complementary unit of the main
              --  unit. The main unit is a body, the node is in the spec.
  
!             elsif Ekind (Main_Unit_Id) in E_Package_Body | E_Subprogram_Body
              then
                 return In_Spec;
  
*************** package body Sem_Elab is
*** 12301,12308 ****
  
              --  Protected type
  
!             elsif Nkind_In (Decl, N_Protected_Type_Declaration,
!                                   N_Single_Protected_Declaration)
              then
                 Process_Protected_Type_Declaration
                   (Prot_Decl => Decl,
--- 12340,12347 ----
  
              --  Protected type
  
!             elsif Nkind (Decl) in N_Protected_Type_Declaration
!                                 | N_Single_Protected_Declaration
              then
                 Process_Protected_Type_Declaration
                   (Prot_Decl => Decl,
*************** package body Sem_Elab is
*** 12310,12317 ****
  
              --  Subprogram or entry
  
!             elsif Nkind_In (Decl, N_Entry_Declaration,
!                                   N_Subprogram_Declaration)
              then
                 Process_Subprogram_Declaration
                   (Subp_Decl => Decl,
--- 12349,12356 ----
  
              --  Subprogram or entry
  
!             elsif Nkind (Decl) in N_Entry_Declaration
!                                 | N_Subprogram_Declaration
              then
                 Process_Subprogram_Declaration
                   (Subp_Decl => Decl,
*************** package body Sem_Elab is
*** 12335,12342 ****
  
              --  Task type
  
!             elsif Nkind_In (Decl, N_Single_Task_Declaration,
!                                   N_Task_Type_Declaration)
              then
                 Process_Task_Type_Declaration
                   (Task_Decl => Decl,
--- 12374,12381 ----
  
              --  Task type
  
!             elsif Nkind (Decl) in N_Single_Task_Declaration
!                                 | N_Task_Type_Declaration
              then
                 Process_Task_Type_Declaration
                   (Task_Decl => Decl,
*************** package body Sem_Elab is
*** 12456,12462 ****
           --  Nothing to do for an abstract subprogram because it has no body to
           --  examine.
  
!          elsif Ekind_In (Subp_Id, E_Function, E_Procedure)
             and then Is_Abstract_Subprogram (Subp_Id)
           then
              return;
--- 12495,12501 ----
           --  Nothing to do for an abstract subprogram because it has no body to
           --  examine.
  
!          elsif Ekind (Subp_Id) in E_Function | E_Procedure
             and then Is_Abstract_Subprogram (Subp_Id)
           then
              return;
*************** package body Sem_Elab is
*** 12472,12478 ****
           --  DFS traversal into its barrier function and body.
  
           if In_Extended_Main_Code_Unit (Subp_Id) then
!             if Ekind_In (Subp_Id, E_Entry, E_Entry_Family, E_Procedure) then
                 Traverse_Invocation_Body
                   (N        => Barrier_Body_Declaration (Subp_Rep),
                    In_State => In_State);
--- 12511,12517 ----
           --  DFS traversal into its barrier function and body.
  
           if In_Extended_Main_Code_Unit (Subp_Id) then
!             if Ekind (Subp_Id) in E_Entry | E_Entry_Family | E_Procedure then
                 Traverse_Invocation_Body
                   (N        => Barrier_Body_Declaration (Subp_Rep),
                    In_State => In_State);
*************** package body Sem_Elab is
*** 12852,12859 ****
           --  Process the entries of the task type because they represent valid
           --  entry points into the task body.
  
!          if Nkind_In (Task_Decl, N_Single_Task_Declaration,
!                                  N_Task_Type_Declaration)
           then
              Task_Def := Task_Definition (Task_Decl);
  
--- 12891,12898 ----
           --  Process the entries of the task type because they represent valid
           --  entry points into the task body.
  
!          if Nkind (Task_Decl) in N_Single_Task_Declaration
!                                | N_Task_Type_Declaration
           then
              Task_Def := Task_Definition (Task_Decl);
  
*************** package body Sem_Elab is
*** 13151,13160 ****
              --  Entry, operator, or subprogram call. This case must come last
              --  because most invocations above are variations of this case.
  
!             elsif Ekind_In (Targ_Id, E_Entry,
!                                      E_Function,
!                                      E_Operator,
!                                      E_Procedure)
              then
                 Extra := Empty;
                 Kind  := Call;
--- 13190,13197 ----
              --  Entry, operator, or subprogram call. This case must come last
              --  because most invocations above are variations of this case.
  
!             elsif Ekind (Targ_Id) in
!                     E_Entry | E_Function | E_Operator | E_Procedure
              then
                 Extra := Empty;
                 Kind  := Call;
*************** package body Sem_Elab is
*** 13771,13776 ****
--- 13808,13818 ----
           if not Is_Source_Call (Call) then
              return;
  
+          --  Nothing to do when the call is preelaborable by definition
+ 
+          elsif Is_Preelaborable_Call (Call) then
+             return;
+ 
           --  Library-level calls are always considered because they are part of
           --  the associated unit's elaboration actions.
  
*************** package body Sem_Elab is
*** 13792,13804 ****
              return;
           end if;
  
!          --  The call appears within a preelaborated unit. Emit a warning only
!          --  for internal uses, otherwise this is an error.
  
           if In_Preelaborated_Context (Call) then
!             Error_Msg_Warn := GNAT_Mode;
!             Error_Msg_N
!               ("<<non-static call not allowed in preelaborated unit", Call);
           end if;
        end Check_Preelaborated_Call;
  
--- 13834,13843 ----
              return;
           end if;
  
!          --  If the call appears within a preelaborated unit, give an error
  
           if In_Preelaborated_Context (Call) then
!             Error_Preelaborated_Call (Call);
           end if;
        end Check_Preelaborated_Call;
  
*************** package body Sem_Elab is
*** 13826,13832 ****
           --  be on another machine.
  
           if Ekind (Body_Id) = E_Package_Body
!            and then Ekind_In (Spec_Id, E_Generic_Package, E_Package)
             and then (Is_Remote_Call_Interface (Spec_Id)
                        or else Is_Remote_Types (Spec_Id))
           then
--- 13865,13871 ----
           --  be on another machine.
  
           if Ekind (Body_Id) = E_Package_Body
!            and then Is_Package_Or_Generic_Package (Spec_Id)
             and then (Is_Remote_Call_Interface (Spec_Id)
                        or else Is_Remote_Types (Spec_Id))
           then
*************** package body Sem_Elab is
*** 14030,14041 ****
        if Legacy_Elaboration_Checks then
           return;
  
-       --  Nothing to do for ASIS because ABE checks and diagnostics are not
-       --  performed in this mode.
- 
-       elsif ASIS_Mode then
-          return;
- 
        --  Nothing to do when the scenario is being preanalyzed
  
        elsif Preanalysis_Active then
--- 14069,14074 ----
*************** package body Sem_Elab is
*** 14423,14431 ****
        begin
           --  An abstract subprogram does not have a body
  
!          if Ekind_In (Subp_Id, E_Function,
!                                E_Operator,
!                                E_Procedure)
             and then Is_Abstract_Subprogram (Subp_Id)
           then
              return True;
--- 14456,14462 ----
        begin
           --  An abstract subprogram does not have a body
  
!          if Ekind (Subp_Id) in E_Function | E_Operator | E_Procedure
             and then Is_Abstract_Subprogram (Subp_Id)
           then
              return True;
*************** package body Sem_Elab is
*** 14473,14481 ****
           Formal_Id : Entity_Id;
  
        begin
!          pragma Assert (Nam_In (Subp_Nam, Name_Adjust,
!                                           Name_Finalize,
!                                           Name_Initialize));
  
           --  To qualify, the subprogram must denote a source procedure with
           --  name Adjust, Finalize, or Initialize where the sole formal is
--- 14504,14511 ----
           Formal_Id : Entity_Id;
  
        begin
!          pragma Assert
!            (Subp_Nam in Name_Adjust | Name_Finalize | Name_Initialize);
  
           --  To qualify, the subprogram must denote a source procedure with
           --  name Adjust, Finalize, or Initialize where the sole formal is
*************** package body Sem_Elab is
*** 14663,14669 ****
           --  protected type.
  
           return
!            Ekind_In (Id, E_Function, E_Procedure)
               and then Is_Protected_Type (Non_Private_View (Scope (Id)));
        end Is_Protected_Subp;
  
--- 14693,14699 ----
           --  protected type.
  
           return
!            Ekind (Id) in E_Function | E_Procedure
               and then Is_Protected_Type (Non_Private_View (Scope (Id)));
        end Is_Protected_Subp;
  
*************** package body Sem_Elab is
*** 14677,14683 ****
           --  Protected_Subprogram set.
  
           return
!            Ekind_In (Id, E_Function, E_Procedure)
               and then Present (Protected_Subprogram (Id));
        end Is_Protected_Body_Subp;
  
--- 14707,14713 ----
           --  Protected_Subprogram set.
  
           return
!            Ekind (Id) in E_Function | E_Procedure
               and then Present (Protected_Subprogram (Id));
        end Is_Protected_Body_Subp;
  
*************** package body Sem_Elab is
*** 14729,14735 ****
           --  is hidden within an anonymous package, and is a generic instance.
  
           return
!            Ekind_In (Id, E_Function, E_Procedure)
               and then Is_Hidden (Id)
               and then Is_Generic_Instance (Id);
        end Is_Subprogram_Inst;
--- 14759,14765 ----
           --  is hidden within an anonymous package, and is a generic instance.
  
           return
!            Ekind (Id) in E_Function | E_Procedure
               and then Is_Hidden (Id)
               and then Is_Generic_Instance (Id);
        end Is_Subprogram_Inst;
*************** package body Sem_Elab is
*** 14798,14804 ****
               --  The attribute name must be one of the 'Access forms. Note that
               --  'Unchecked_Access cannot apply to a subprogram.
  
!              and then Nam_In (Nam, Name_Access, Name_Unrestricted_Access);
        end Is_Suitable_Access_Taken;
  
        ----------------------
--- 14828,14834 ----
               --  The attribute name must be one of the 'Access forms. Note that
               --  'Unchecked_Access cannot apply to a subprogram.
  
!              and then Nam in Name_Access | Name_Unrestricted_Access;
        end Is_Suitable_Access_Taken;
  
        ----------------------
*************** package body Sem_Elab is
*** 14926,14932 ****
              return False;
  
           --  Assignments are ignored in GNAT mode on the assumption that
!          --  they are ABE-safe. This behaviour parallels that of the old
           --  ABE mechanism.
  
           elsif GNAT_Mode then
--- 14956,14962 ----
              return False;
  
           --  Assignments are ignored in GNAT mode on the assumption that
!          --  they are ABE-safe. This behavior parallels that of the old
           --  ABE mechanism.
  
           elsif GNAT_Mode then
*************** package body Sem_Elab is
*** 15832,15841 ****
  
        --  Bodies
  
!       if Nkind_In (N, N_Package_Body,
!                       N_Protected_Body,
!                       N_Subprogram_Body,
!                       N_Task_Body)
        then
           Spec_Id := Corresponding_Spec (N);
  
--- 15862,15871 ----
  
        --  Bodies
  
!       if Nkind (N) in N_Package_Body
!                     | N_Protected_Body
!                     | N_Subprogram_Body
!                     | N_Task_Body
        then
           Spec_Id := Corresponding_Spec (N);
  
*************** package body Sem_Elab is
*** 15855,15867 ****
  
        --  Declarations
  
!       elsif Nkind_In (N, N_Entry_Declaration,
!                          N_Generic_Package_Declaration,
!                          N_Generic_Subprogram_Declaration,
!                          N_Package_Declaration,
!                          N_Protected_Type_Declaration,
!                          N_Subprogram_Declaration,
!                          N_Task_Type_Declaration)
        then
           Spec_Decl := N;
  
--- 15885,15897 ----
  
        --  Declarations
  
!       elsif Nkind (N) in N_Entry_Declaration
!                        | N_Generic_Package_Declaration
!                        | N_Generic_Subprogram_Declaration
!                        | N_Package_Declaration
!                        | N_Protected_Type_Declaration
!                        | N_Subprogram_Declaration
!                        | N_Task_Type_Declaration
        then
           Spec_Decl := N;
  
*************** package body Sem_Elab is
*** 15935,15946 ****
  
        begin
           return
!            Nkind_In (Decl, N_Generic_Package_Declaration,
!                            N_Generic_Subprogram_Declaration,
!                            N_Package_Declaration,
!                            N_Protected_Type_Declaration,
!                            N_Subprogram_Declaration,
!                            N_Task_Type_Declaration)
               and then Present (Corresponding_Body (Decl))
               and then Nkind (Parent (Unit_Declaration_Node
                          (Corresponding_Body (Decl)))) = N_Subunit;
--- 15965,15976 ----
  
        begin
           return
!            Nkind (Decl) in N_Generic_Package_Declaration
!                          | N_Generic_Subprogram_Declaration
!                          | N_Package_Declaration
!                          | N_Protected_Type_Declaration
!                          | N_Subprogram_Declaration
!                          | N_Task_Type_Declaration
               and then Present (Corresponding_Body (Decl))
               and then Nkind (Parent (Unit_Declaration_Node
                          (Corresponding_Body (Decl)))) = N_Subunit;
*************** package body Sem_Elab is
*** 16809,16816 ****
           if Nkind (Decl) = N_Subprogram_Body then
              Body_Acts_As_Spec := True;
  
!          elsif Nkind_In (Decl, N_Subprogram_Declaration,
!                                N_Subprogram_Body_Stub)
             or else Inst_Case
           then
              Body_Acts_As_Spec := False;
--- 16839,16846 ----
           if Nkind (Decl) = N_Subprogram_Body then
              Body_Acts_As_Spec := True;
  
!          elsif Nkind (Decl) in
!                  N_Subprogram_Declaration | N_Subprogram_Body_Stub
             or else Inst_Case
           then
              Body_Acts_As_Spec := False;
*************** package body Sem_Elab is
*** 17486,17493 ****
  
        P := Parent (N);
        while Present (P) loop
!          if Nkind_In (P, N_Parameter_Specification,
!                          N_Component_Declaration)
           then
              return;
  
--- 17516,17522 ----
  
        P := Parent (N);
        while Present (P) loop
!          if Nkind (P) in N_Parameter_Specification | N_Component_Declaration
           then
              return;
  
*************** package body Sem_Elab is
*** 17525,17541 ****
              --  Complain if ref that comes from source in preelaborated unit
              --  and we are not inside a subprogram (i.e. we are in elab code).
  
              if Comes_From_Source (N)
                and then In_Preelaborated_Unit
                and then not In_Inlined_Body
                and then Nkind (N) /= N_Attribute_Reference
              then
!                --  This is a warning in GNAT mode allowing such calls to be
!                --  used in the predefined library with appropriate care.
! 
!                Error_Msg_Warn := GNAT_Mode;
!                Error_Msg_N
!                  ("<<non-static call not allowed in preelaborated unit", N);
                 return;
              end if;
  
--- 17554,17570 ----
              --  Complain if ref that comes from source in preelaborated unit
              --  and we are not inside a subprogram (i.e. we are in elab code).
  
+             --  Ada 2020 (AI12-0175): Calls to certain functions that are
+             --  essentially unchecked conversions are preelaborable.
+ 
              if Comes_From_Source (N)
                and then In_Preelaborated_Unit
                and then not In_Inlined_Body
                and then Nkind (N) /= N_Attribute_Reference
+               and then not (Ada_Version >= Ada_2020
+                              and then Is_Preelaborable_Construct (N))
              then
!                Error_Preelaborated_Call (N);
                 return;
              end if;
  
*************** package body Sem_Elab is
*** 17582,17589 ****
                    --  Filter out case of default expressions, where we do not
                    --  do the check at this stage.
  
!                   if Nkind_In (P, N_Parameter_Specification,
!                                   N_Component_Declaration)
                    then
                       return;
                    end if;
--- 17611,17618 ----
                    --  Filter out case of default expressions, where we do not
                    --  do the check at this stage.
  
!                   if Nkind (P) in
!                        N_Parameter_Specification | N_Component_Declaration
                    then
                       return;
                    end if;
*************** package body Sem_Elab is
*** 17594,17603 ****
                    if Nkind (P) = N_Protected_Body then
                       return;
  
!                   elsif Nkind_In (P, N_Subprogram_Body,
!                                      N_Task_Body,
!                                      N_Block_Statement,
!                                      N_Entry_Body)
                    then
                       if L = Declarations (P) then
                          exit;
--- 17623,17632 ----
                    if Nkind (P) = N_Protected_Body then
                       return;
  
!                   elsif Nkind (P) in N_Subprogram_Body
!                                    | N_Task_Body
!                                    | N_Block_Statement
!                                    | N_Entry_Body
                    then
                       if L = Declarations (P) then
                          exit;
*************** package body Sem_Elab is
*** 17820,17829 ****
        --  then there is nothing to do (we do not know what is being assigned),
        --  but otherwise this is an assignment to the prefix.
  
!       if Nkind_In (N, N_Indexed_Component,
!                       N_Selected_Component,
!                       N_Slice)
!       then
           if not Is_Access_Type (Etype (Prefix (N))) then
              Check_Elab_Assign (Prefix (N));
           end if;
--- 17849,17855 ----
        --  then there is nothing to do (we do not know what is being assigned),
        --  but otherwise this is an assignment to the prefix.
  
!       if Nkind (N) in N_Indexed_Component | N_Selected_Component | N_Slice then
           if not Is_Access_Type (Etype (Prefix (N))) then
              Check_Elab_Assign (Prefix (N));
           end if;
*************** package body Sem_Elab is
*** 18248,18256 ****
        --  If not function or procedure call, instantiation, or 'Access, then
        --  ignore call (this happens in some error cases and rewriting cases).
  
!       elsif not Nkind_In (N, N_Attribute_Reference,
!                              N_Function_Call,
!                              N_Procedure_Call_Statement)
          and then not Inst_Case
        then
           return;
--- 18274,18282 ----
        --  If not function or procedure call, instantiation, or 'Access, then
        --  ignore call (this happens in some error cases and rewriting cases).
  
!       elsif Nkind (N) not in N_Attribute_Reference
!                            | N_Function_Call
!                            | N_Procedure_Call_Statement
          and then not Inst_Case
        then
           return;
*************** package body Sem_Elab is
*** 18350,18357 ****
           --  code, do not trace past an accept statement, because the rendez-
           --  vous will happen after elaboration.
  
!          if Nkind_In (Original_Node (N), N_Accept_Statement,
!                                          N_Selective_Accept)
             and then Restriction_Active (No_Entry_Calls_In_Elaboration_Code)
           then
              return Abandon;
--- 18376,18383 ----
           --  code, do not trace past an accept statement, because the rendez-
           --  vous will happen after elaboration.
  
!          if Nkind (Original_Node (N)) in
!               N_Accept_Statement | N_Selective_Accept
             and then Restriction_Active (No_Entry_Calls_In_Elaboration_Code)
           then
              return Abandon;
*************** package body Sem_Elab is
*** 18384,18391 ****
  
           elsif not Debug_Flag_Dot_UU
             and then Nkind (N) = N_Attribute_Reference
!            and then Nam_In (Attribute_Name (N), Name_Access,
!                                                 Name_Unrestricted_Access)
             and then Is_Entity_Name (Prefix (N))
             and then Is_Subprogram (Entity (Prefix (N)))
           then
--- 18410,18417 ----
  
           elsif not Debug_Flag_Dot_UU
             and then Nkind (N) = N_Attribute_Reference
!            and then
!              Attribute_Name (N) in Name_Access | Name_Unrestricted_Access
             and then Is_Entity_Name (Prefix (N))
             and then Is_Subprogram (Entity (Prefix (N)))
           then
*************** package body Sem_Elab is
*** 18466,18472 ****
  
        Sbody := Unit_Declaration_Node (E);
  
!       if not Nkind_In (Sbody, N_Subprogram_Body, N_Package_Body) then
           Ebody := Corresponding_Body (Sbody);
  
           if No (Ebody) then
--- 18492,18498 ----
  
        Sbody := Unit_Declaration_Node (E);
  
!       if Nkind (Sbody) not in N_Subprogram_Body | N_Package_Body then
           Ebody := Corresponding_Body (Sbody);
  
           if No (Ebody) then
*************** package body Sem_Elab is
*** 18560,18566 ****
                 --  Check we have an If statement or a null statement (happens
                 --  when the If has been expanded to be True).
  
!                exit when not Nkind_In (P, N_If_Statement, N_Null_Statement);
  
                 --  Our special case will be indicated either by the pragma
                 --  coming from an aspect ...
--- 18586,18592 ----
                 --  Check we have an If statement or a null statement (happens
                 --  when the If has been expanded to be True).
  
!                exit when Nkind (P) not in N_If_Statement | N_Null_Statement;
  
                 --  Our special case will be indicated either by the pragma
                 --  coming from an aspect ...
*************** package body Sem_Elab is
*** 18613,18628 ****
              elsif Nkind (N) = N_Attribute_Reference then
                 Error_Msg_NE
                   ("Access attribute of & before body seen<<", N, Orig_Ent);
!                Error_Msg_N ("\possible Program_Error on later references<", N);
                 Insert_Check := False;
  
              elsif Nkind (Unit_Declaration_Node (Orig_Ent)) /=
                      N_Subprogram_Renaming_Declaration
              then
                 Error_Msg_NE
                   ("cannot call& before body seen<<", N, Orig_Ent);
! 
!             elsif not Is_Generic_Actual_Subprogram (Orig_Ent) then
                 Insert_Check := False;
              end if;
  
--- 18639,18655 ----
              elsif Nkind (N) = N_Attribute_Reference then
                 Error_Msg_NE
                   ("Access attribute of & before body seen<<", N, Orig_Ent);
!                Error_Msg_N
!                  ("\possible Program_Error on later references<<", N);
                 Insert_Check := False;
  
              elsif Nkind (Unit_Declaration_Node (Orig_Ent)) /=
                      N_Subprogram_Renaming_Declaration
+               or else Is_Generic_Actual_Subprogram (Orig_Ent)
              then
                 Error_Msg_NE
                   ("cannot call& before body seen<<", N, Orig_Ent);
!             else
                 Insert_Check := False;
              end if;
  
*************** package body Sem_Elab is
*** 18721,18729 ****
                 --  A rather specific check. For Finalize/Adjust/Initialize, if
                 --  the type has Warnings_Off set, suppress the warning.
  
!                if Nam_In (Chars (E), Name_Adjust,
!                                      Name_Finalize,
!                                      Name_Initialize)
                   and then Present (First_Formal (E))
                 then
                    declare
--- 18748,18756 ----
                 --  A rather specific check. For Finalize/Adjust/Initialize, if
                 --  the type has Warnings_Off set, suppress the warning.
  
!                if Chars (E) in Name_Adjust
!                              | Name_Finalize
!                              | Name_Initialize
                   and then Present (First_Formal (E))
                 then
                    declare
*************** package body Sem_Elab is
*** 18813,18819 ****
              Comp := First_Component (Typ);
              while Present (Comp) loop
                 Add_Task_Proc (Etype (Comp));
!                Comp := Next_Component (Comp);
              end loop;
           end if;
  
--- 18840,18846 ----
              Comp := First_Component (Typ);
              while Present (Comp) loop
                 Add_Task_Proc (Etype (Comp));
!                Next_Component (Comp);
              end loop;
           end if;
  
*************** package body Sem_Elab is
*** 19341,19347 ****
  
     function Is_Call_Of_Generic_Formal (N : Node_Id) return Boolean is
     begin
!       return Nkind_In (N, N_Function_Call, N_Procedure_Call_Statement)
  
          --  Always return False if debug flag -gnatd.G is set
  
--- 19368,19374 ----
  
     function Is_Call_Of_Generic_Formal (N : Node_Id) return Boolean is
     begin
!       return Nkind (N) in N_Subprogram_Call
  
          --  Always return False if debug flag -gnatd.G is set
  
*************** package body Sem_Elab is
*** 19508,19514 ****
        S1 := Scop1;
        while S1 /= Standard_Standard
          and then not Is_Compilation_Unit (S1)
!         and then Ekind_In (S1, E_Package, E_Protected_Type, E_Block)
        loop
           S1 := Scope (S1);
        end loop;
--- 19535,19541 ----
        S1 := Scop1;
        while S1 /= Standard_Standard
          and then not Is_Compilation_Unit (S1)
!         and then Ekind (S1) in E_Package | E_Protected_Type | E_Block
        loop
           S1 := Scope (S1);
        end loop;
*************** package body Sem_Elab is
*** 19518,19524 ****
        S2 := Scop2;
        while S2 /= Standard_Standard
          and then not Is_Compilation_Unit (S2)
!         and then Ekind_In (S2, E_Package, E_Protected_Type, E_Block)
        loop
           S2 := Scope (S2);
        end loop;
--- 19545,19551 ----
        S2 := Scop2;
        while S2 /= Standard_Standard
          and then not Is_Compilation_Unit (S2)
!         and then Ekind (S2) in E_Package | E_Protected_Type | E_Block
        loop
           S2 := Scope (S2);
        end loop;
*************** package body Sem_Elab is
*** 19643,19649 ****
        --  Check for case of body entity
        --  Why is the check for E_Void needed???
  
!       if Ekind_In (E, E_Void, E_Subprogram_Body, E_Package_Body) then
           Decl := E;
  
           loop
--- 19670,19676 ----
        --  Check for case of body entity
        --  Why is the check for E_Void needed???
  
!       if Ekind (E) in E_Void | E_Subprogram_Body | E_Package_Body then
           Decl := E;
  
           loop
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_elab.ads gcc-11.1.0/gcc/ada/sem_elab.ads
*** gcc-10.3.0/gcc/ada/sem_elab.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_elab.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_elim.adb gcc-11.1.0/gcc/ada/sem_elim.adb
*** gcc-10.3.0/gcc/ada/sem_elim.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_elim.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Elim is
*** 428,434 ****
  
              --  Check for case of subprogram
  
!             elsif Ekind_In (E, E_Function, E_Procedure) then
  
                 --  If Source_Location present, then see if it matches
  
--- 428,434 ----
  
              --  Check for case of subprogram
  
!             elsif Ekind (E) in E_Function | E_Procedure then
  
                 --  If Source_Location present, then see if it matches
  
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_elim.ads gcc-11.1.0/gcc/ada/sem_elim.ads
*** gcc-10.3.0/gcc/ada/sem_elim.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_elim.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_eval.adb gcc-11.1.0/gcc/ada/sem_eval.adb
*** gcc-10.3.0/gcc/ada/sem_eval.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_eval.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Rtsfind;  use Rtsfind;
*** 43,50 ****
--- 43,52 ----
  with Sem;      use Sem;
  with Sem_Aux;  use Sem_Aux;
  with Sem_Cat;  use Sem_Cat;
+ with Sem_Ch3;  use Sem_Ch3;
  with Sem_Ch6;  use Sem_Ch6;
  with Sem_Ch8;  use Sem_Ch8;
+ with Sem_Elab; use Sem_Elab;
  with Sem_Res;  use Sem_Res;
  with Sem_Util; use Sem_Util;
  with Sem_Type; use Sem_Type;
*************** package body Sem_Eval is
*** 123,129 ****
  
     type CV_Cache_Array is array (CV_Range) of CV_Entry;
  
!    CV_Cache : CV_Cache_Array := (others => (Node_High_Bound, Uint_0));
     --  This is the actual cache, with entries consisting of node/value pairs,
     --  and the impossible value Node_High_Bound used for unset entries.
  
--- 125,131 ----
  
     type CV_Cache_Array is array (CV_Range) of CV_Entry;
  
!    CV_Cache : CV_Cache_Array;
     --  This is the actual cache, with entries consisting of node/value pairs,
     --  and the impossible value Node_High_Bound used for unset entries.
  
*************** package body Sem_Eval is
*** 131,136 ****
--- 133,143 ----
     --  Range membership may either be statically known to be in range or out
     --  of range, or not statically known. Used for Test_In_Range below.
  
+    Checking_For_Potentially_Static_Expression : Boolean := False;
+    --  Global flag that is set True during Analyze_Static_Expression_Function
+    --  in order to verify that the result expression of a static expression
+    --  function is a potentially static function (see RM202x 6.8(5.3)).
+ 
     -----------------------
     -- Local Subprograms --
     -----------------------
*************** package body Sem_Eval is
*** 166,171 ****
--- 173,181 ----
     --  discrete, real, or string type and must be a compile-time-known value
     --  (it is an error to make the call if these conditions are not met).
  
+    procedure Eval_Intrinsic_Call (N : Node_Id; E : Entity_Id);
+    --  Evaluate a call N to an intrinsic subprogram E.
+ 
     function Find_Universal_Operator_Type (N : Node_Id) return Entity_Id;
     --  Check whether an arithmetic operation with universal operands which is a
     --  rewritten function call with an explicit scope indication is ambiguous:
*************** package body Sem_Eval is
*** 174,179 ****
--- 184,205 ----
     --  (e.g. in the expression of a type conversion). If ambiguous, emit an
     --  error and return Empty, else return the result type of the operator.
  
+    procedure Fold_Dummy (N : Node_Id; Typ : Entity_Id);
+    --  Rewrite N as a constant dummy value in the relevant type if possible.
+ 
+    procedure Fold_Shift
+      (N          : Node_Id;
+       Left       : Node_Id;
+       Right      : Node_Id;
+       Op         : Node_Kind;
+       Static     : Boolean := False;
+       Check_Elab : Boolean := False);
+    --  Rewrite N as the result of evaluating Left <shift op> Right if possible.
+    --  Op represents the shift operation.
+    --  Static indicates whether the resulting node should be marked static.
+    --  Check_Elab indicates whether checks for elaboration calls should be
+    --  inserted when relevant.
+ 
     function From_Bits (B : Bits; T : Entity_Id) return Uint;
     --  Converts a bit string of length B'Length to a Uint value to be used for
     --  a target of type T, which is a modular type. This procedure includes the
*************** package body Sem_Eval is
*** 324,331 ****
     -----------------------------------------------
  
     procedure Check_Expression_Against_Static_Predicate
!      (Expr : Node_Id;
!       Typ  : Entity_Id)
     is
     begin
        --  Nothing to do if expression is not known at compile time, or the
--- 350,358 ----
     -----------------------------------------------
  
     procedure Check_Expression_Against_Static_Predicate
!      (Expr                    : Node_Id;
!       Typ                     : Entity_Id;
!       Static_Failure_Is_Error : Boolean := False)
     is
     begin
        --  Nothing to do if expression is not known at compile time, or the
*************** package body Sem_Eval is
*** 383,400 ****
        --  Here we know that the predicate will fail
  
        --  Special case of static expression failing a predicate (other than one
!       --  that was explicitly specified with a Dynamic_Predicate aspect). This
!       --  is the case where the expression is no longer considered static.
  
        if Is_Static_Expression (Expr)
          and then not Has_Dynamic_Predicate_Aspect (Typ)
        then
!          Error_Msg_NE
!            ("??static expression fails static predicate check on &",
!             Expr, Typ);
!          Error_Msg_N
!            ("\??expression is no longer considered static", Expr);
!          Set_Is_Static_Expression (Expr, False);
  
        --  In all other cases, this is just a warning that a test will fail.
        --  It does not matter if the expression is static or not, or if the
--- 410,437 ----
        --  Here we know that the predicate will fail
  
        --  Special case of static expression failing a predicate (other than one
!       --  that was explicitly specified with a Dynamic_Predicate aspect). If
!       --  the expression comes from a qualified_expression or type_conversion
!       --  this is an error (Static_Failure_Is_Error); otherwise we only issue
!       --  a warning and the expression is no longer considered static.
  
        if Is_Static_Expression (Expr)
          and then not Has_Dynamic_Predicate_Aspect (Typ)
        then
!          if Static_Failure_Is_Error then
!             Error_Msg_NE
!               ("static expression fails static predicate check on &",
!                Expr, Typ);
! 
!          else
!             Error_Msg_NE
!               ("??static expression fails static predicate check on &",
!                Expr, Typ);
!             Error_Msg_N
!               ("\??expression is no longer considered static", Expr);
! 
!             Set_Is_Static_Expression (Expr, False);
!          end if;
  
        --  In all other cases, this is just a warning that a test will fail.
        --  It does not matter if the expression is static or not, or if the
*************** package body Sem_Eval is
*** 403,408 ****
--- 440,456 ----
        else
           Error_Msg_NE
             ("??expression fails predicate check on &", Expr, Typ);
+ 
+          --  Force a check here, which is potentially a redundant check, but
+          --  this ensures a check will be done in cases where the expression
+          --  is folded, and since this is definitely a failure, extra checks
+          --  are OK.
+ 
+          if Predicate_Enabled (Typ) then
+             Insert_Action (Expr,
+               Make_Predicate_Check
+                 (Typ, Duplicate_Subexpr (Expr)), Suppress => All_Checks);
+          end if;
        end if;
     end Check_Expression_Against_Static_Predicate;
  
*************** package body Sem_Eval is
*** 575,588 ****
              --  mode since the actual target compiler may provide a wider
              --  range.
  
!             if CodePeer_Mode and then T = RTE (RE_Priority) then
                 Set_Do_Range_Check (N, False);
  
              --  Determine if the out-of-range violation constitutes a warning
              --  or an error based on context, according to RM 4.9 (34/3).
  
!             elsif Nkind_In (Original_Node (N), N_Type_Conversion,
!                                                N_Qualified_Expression)
                and then Comes_From_Source (Original_Node (N))
              then
                 Apply_Compile_Time_Constraint_Error
--- 623,636 ----
              --  mode since the actual target compiler may provide a wider
              --  range.
  
!             if CodePeer_Mode and then Is_RTE (T, RE_Priority) then
                 Set_Do_Range_Check (N, False);
  
              --  Determine if the out-of-range violation constitutes a warning
              --  or an error based on context, according to RM 4.9 (34/3).
  
!             elsif Nkind (Original_Node (N)) in
!                     N_Type_Conversion | N_Qualified_Expression
                and then Comes_From_Source (Original_Node (N))
              then
                 Apply_Compile_Time_Constraint_Error
*************** package body Sem_Eval is
*** 619,624 ****
--- 667,681 ----
        end if;
     end Check_String_Literal_Length;
  
+    --------------------------------------------
+    -- Checking_Potentially_Static_Expression --
+    --------------------------------------------
+ 
+    function Checking_Potentially_Static_Expression return Boolean is
+    begin
+       return Checking_For_Potentially_Static_Expression;
+    end Checking_Potentially_Static_Expression;
+ 
     --------------------
     -- Choice_Matches --
     --------------------
*************** package body Sem_Eval is
*** 904,910 ****
           --  Fixup only required for First/Last attribute reference
  
           if Nkind (N) = N_Attribute_Reference
!            and then Nam_In (Attribute_Name (N), Name_First, Name_Last)
           then
              Xtyp := Etype (Prefix (N));
  
--- 961,967 ----
           --  Fixup only required for First/Last attribute reference
  
           if Nkind (N) = N_Attribute_Reference
!            and then Attribute_Name (N) in Name_First | Name_Last
           then
              Xtyp := Etype (Prefix (N));
  
*************** package body Sem_Eval is
*** 954,960 ****
                 Subs := UI_To_Int (Expr_Value (First (Expressions (N))));
  
                 for J in 2 .. Subs loop
!                   Indx := Next_Index (Indx);
                 end loop;
              end if;
  
--- 1011,1017 ----
                 Subs := UI_To_Int (Expr_Value (First (Expressions (N))));
  
                 for J in 2 .. Subs loop
!                   Next_Index (Indx);
                 end loop;
              end if;
  
*************** package body Sem_Eval is
*** 981,987 ****
                      (Is_Known_Valid (Entity (Opnd))
                        or else Ekind (Entity (Opnd)) = E_In_Parameter
                        or else
!                         (Ekind (Entity (Opnd)) in Object_Kind
                            and then Present (Current_Value (Entity (Opnd))))))
             or else Is_OK_Static_Expression (Opnd);
        end Is_Known_Valid_Operand;
--- 1038,1044 ----
                      (Is_Known_Valid (Entity (Opnd))
                        or else Ekind (Entity (Opnd)) = E_In_Parameter
                        or else
!                         (Is_Object (Entity (Opnd))
                            and then Present (Current_Value (Entity (Opnd))))))
             or else Is_OK_Static_Expression (Opnd);
        end Is_Known_Valid_Operand;
*************** package body Sem_Eval is
*** 1057,1064 ****
           --  Values are the same if they refer to the same entity and the
           --  entity is nonvolatile.
  
!          elsif Nkind_In (Lf, N_Identifier, N_Expanded_Name)
!            and then Nkind_In (Rf, N_Identifier, N_Expanded_Name)
             and then Entity (Lf) = Entity (Rf)
  
             --  If the entity is a discriminant, the two expressions may be
--- 1114,1121 ----
           --  Values are the same if they refer to the same entity and the
           --  entity is nonvolatile.
  
!          elsif Nkind (Lf) in N_Identifier | N_Expanded_Name
!            and then Nkind (Rf) in N_Identifier | N_Expanded_Name
             and then Entity (Lf) = Entity (Rf)
  
             --  If the entity is a discriminant, the two expressions may be
*************** package body Sem_Eval is
*** 1100,1108 ****
  
           elsif Nkind (Lf) = N_Attribute_Reference
             and then Attribute_Name (Lf) = Attribute_Name (Rf)
!            and then Nam_In (Attribute_Name (Lf), Name_First, Name_Last)
!            and then Nkind_In (Prefix (Lf), N_Identifier, N_Expanded_Name)
!            and then Nkind_In (Prefix (Rf), N_Identifier, N_Expanded_Name)
             and then Entity (Prefix (Lf)) = Entity (Prefix (Rf))
             and then Is_Same_Subscript (Expressions (Lf), Expressions (Rf))
           then
--- 1157,1165 ----
  
           elsif Nkind (Lf) = N_Attribute_Reference
             and then Attribute_Name (Lf) = Attribute_Name (Rf)
!            and then Attribute_Name (Lf) in Name_First | Name_Last
!            and then Nkind (Prefix (Lf)) in N_Identifier | N_Expanded_Name
!            and then Nkind (Prefix (Rf)) in N_Identifier | N_Expanded_Name
             and then Entity (Prefix (Lf)) = Entity (Prefix (Rf))
             and then Is_Same_Subscript (Expressions (Lf), Expressions (Rf))
           then
*************** package body Sem_Eval is
*** 1795,1807 ****
  
           --  Other literals and NULL are known at compile time
  
!          elsif
!             Nkind_In (K, N_Character_Literal,
!                          N_Real_Literal,
!                          N_String_Literal,
!                          N_Null)
           then
              return True;
           end if;
        end if;
  
--- 1852,1867 ----
  
           --  Other literals and NULL are known at compile time
  
!          elsif K in
!            N_Character_Literal | N_Real_Literal | N_String_Literal | N_Null
           then
              return True;
+ 
+          --  Evaluate static discriminants, to eliminate dead paths and
+          --  redundant discriminant checks.
+ 
+          elsif Is_Static_Discriminant_Component (Op) then
+             return True;
           end if;
        end if;
  
*************** package body Sem_Eval is
*** 1814,1819 ****
--- 1874,1886 ----
  
     exception
        when others =>
+          --  With debug flag K we will get an exception unless an error has
+          --  already occurred (useful for debugging).
+ 
+          if Debug_Flag_K then
+             Check_Error_Detected;
+          end if;
+ 
           return False;
     end Compile_Time_Known_Value;
  
*************** package body Sem_Eval is
*** 2176,2184 ****
     --  Only the latter case is handled here, predefined operators are
     --  constant-folded elsewhere.
  
!    --  If the function is itself inherited (see 7423-001) the literal of
!    --  the parent type must be explicitly converted to the return type
!    --  of the function.
  
     procedure Eval_Call (N : Node_Id) is
        Loc : constant Source_Ptr := Sloc (N);
--- 2243,2250 ----
     --  Only the latter case is handled here, predefined operators are
     --  constant-folded elsewhere.
  
!    --  If the function is itself inherited the literal of the parent type must
!    --  be explicitly converted to the return type of the function.
  
     procedure Eval_Call (N : Node_Id) is
        Loc : constant Source_Ptr := Sloc (N);
*************** package body Sem_Eval is
*** 2204,2209 ****
--- 2270,2292 ----
  
              Resolve (N, Typ);
           end if;
+ 
+       elsif Nkind (N) = N_Function_Call
+         and then Is_Entity_Name (Name (N))
+         and then Is_Intrinsic_Subprogram (Entity (Name (N)))
+       then
+          Eval_Intrinsic_Call (N, Entity (Name (N)));
+ 
+       --  Ada 202x (AI12-0075): If checking for potentially static expressions
+       --  is enabled and we have a call to a static function, substitute a
+       --  static value for the call, to allow folding the expression. This
+       --  supports checking the requirement of RM 6.8(5.3/5) in
+       --  Analyze_Expression_Function.
+ 
+       elsif Checking_Potentially_Static_Expression
+         and then Is_Static_Function_Call (N)
+       then
+          Fold_Dummy (N, Typ);
        end if;
     end Eval_Call;
  
*************** package body Sem_Eval is
*** 2484,2489 ****
--- 2567,2584 ----
  
              return;
           end if;
+ 
+       --  Ada 202x (AI12-0075): If checking for potentially static expressions
+       --  is enabled and we have a reference to a formal parameter of mode in,
+       --  substitute a static value for the reference, to allow folding the
+       --  expression. This supports checking the requirement of RM 6.8(5.3/5)
+       --  in Analyze_Expression_Function.
+ 
+       elsif Ekind (Def_Id) = E_In_Parameter
+         and then Checking_Potentially_Static_Expression
+         and then Is_Static_Function (Scope (Def_Id))
+       then
+          Fold_Dummy (N, Etype (Def_Id));
        end if;
  
        --  Fall through if the name is not static
*************** package body Sem_Eval is
*** 2605,2611 ****
  
        --  Similarly if the indexed component appears as the prefix of an
        --  attribute we don't want to evaluate it, because at least for
!       --  some cases of attributes we need the identify (e.g. Access, Size)
  
        elsif Nkind (Parent (N)) = N_Attribute_Reference then
           return;
--- 2700,2706 ----
  
        --  Similarly if the indexed component appears as the prefix of an
        --  attribute we don't want to evaluate it, because at least for
!       --  some cases of attributes we need the identify (e.g. Access, Size).
  
        elsif Nkind (Parent (N)) = N_Attribute_Reference then
           return;
*************** package body Sem_Eval is
*** 2741,2751 ****
           --  so we can safely ignore these cases.
  
           return
!            Nkind_In (Context, N_Attribute_Definition_Clause,
!                               N_Attribute_Reference,
!                               N_Modular_Type_Definition,
!                               N_Number_Declaration,
!                               N_Signed_Integer_Type_Definition);
        end In_Any_Integer_Context;
  
        --  Local variables
--- 2836,2846 ----
           --  so we can safely ignore these cases.
  
           return
!            Nkind (Context) in N_Attribute_Definition_Clause
!                             | N_Attribute_Reference
!                             | N_Modular_Type_Definition
!                             | N_Number_Declaration
!                             | N_Signed_Integer_Type_Definition;
        end In_Any_Integer_Context;
  
        --  Local variables
*************** package body Sem_Eval is
*** 2768,2777 ****
        --  Check_Non_Static_Context on an expanded literal may lead to spurious
        --  and misleading warnings.
  
!       if (Nkind_In (Par, N_Case_Expression_Alternative, N_If_Expression)
!            or else Nkind (Parent (N)) not in N_Subexpr)
!         and then (not Nkind_In (Par, N_Case_Expression_Alternative,
!                                      N_If_Expression)
                     or else Comes_From_Source (N))
          and then not In_Any_Integer_Context (Par)
        then
--- 2863,2872 ----
        --  Check_Non_Static_Context on an expanded literal may lead to spurious
        --  and misleading warnings.
  
!       if (Nkind (Par) in N_Case_Expression_Alternative | N_If_Expression
!            or else Nkind (Par) not in N_Subexpr)
!         and then (Nkind (Par) not in N_Case_Expression_Alternative
!                                    | N_If_Expression
                     or else Comes_From_Source (N))
          and then not In_Any_Integer_Context (Par)
        then
*************** package body Sem_Eval is
*** 2787,2792 ****
--- 2882,2966 ----
        end if;
     end Eval_Integer_Literal;
  
+    -------------------------
+    -- Eval_Intrinsic_Call --
+    -------------------------
+ 
+    procedure Eval_Intrinsic_Call (N : Node_Id; E : Entity_Id) is
+ 
+       procedure Eval_Shift (N : Node_Id; E : Entity_Id; Op : Node_Kind);
+       --  Evaluate an intrinsic shift call N on the given subprogram E.
+       --  Op is the kind for the shift node.
+ 
+       ----------------
+       -- Eval_Shift --
+       ----------------
+ 
+       procedure Eval_Shift (N : Node_Id; E : Entity_Id; Op : Node_Kind) is
+          Left   : constant Node_Id := First_Actual (N);
+          Right  : constant Node_Id := Next_Actual (Left);
+          Static : constant Boolean := Is_Static_Function (E);
+ 
+       begin
+          if Static then
+             if Checking_Potentially_Static_Expression then
+                Fold_Dummy (N, Etype (N));
+                return;
+             end if;
+          end if;
+ 
+          Fold_Shift
+            (N, Left, Right, Op, Static => Static, Check_Elab => not Static);
+       end Eval_Shift;
+ 
+       Nam : Name_Id;
+ 
+    begin
+       --  Nothing to do if the intrinsic is handled by the back end.
+ 
+       if Present (Interface_Name (E)) then
+          return;
+       end if;
+ 
+       --  Intrinsic calls as part of a static function is a language extension.
+ 
+       if Checking_Potentially_Static_Expression
+         and then not Extensions_Allowed
+       then
+          return;
+       end if;
+ 
+       --  If we have a renaming, expand the call to the original operation,
+       --  which must itself be intrinsic, since renaming requires matching
+       --  conventions and this has already been checked.
+ 
+       if Present (Alias (E)) then
+          Eval_Intrinsic_Call (N, Alias (E));
+          return;
+       end if;
+ 
+       --  If the intrinsic subprogram is generic, gets its original name
+ 
+       if Present (Parent (E))
+         and then Present (Generic_Parent (Parent (E)))
+       then
+          Nam := Chars (Generic_Parent (Parent (E)));
+       else
+          Nam := Chars (E);
+       end if;
+ 
+       case Nam is
+          when Name_Shift_Left  =>
+             Eval_Shift (N, E, N_Op_Shift_Left);
+          when Name_Shift_Right =>
+             Eval_Shift (N, E, N_Op_Shift_Right);
+          when Name_Shift_Right_Arithmetic =>
+             Eval_Shift (N, E, N_Op_Shift_Right_Arithmetic);
+          when others           =>
+             null;
+       end case;
+    end Eval_Intrinsic_Call;
+ 
     ---------------------
     -- Eval_Logical_Op --
     ---------------------
*************** package body Sem_Eval is
*** 2826,2832 ****
                 To_Bits (Right_Int, Right_Bits);
  
                 --  Note: should really be able to use array ops instead of
!                --  these loops, but they weren't working at the time ???
  
                 if Nkind (N) = N_Op_And then
                    for J in Left_Bits'Range loop
--- 3000,3008 ----
                 To_Bits (Right_Int, Right_Bits);
  
                 --  Note: should really be able to use array ops instead of
!                --  these loops, but they break the build with a cryptic error
!                --  during the bind of gnat1 likely due to a wrong computation
!                --  of a date or checksum.
  
                 if Nkind (N) = N_Op_And then
                    for J in Left_Bits'Range loop
*************** package body Sem_Eval is
*** 3062,3068 ****
     -- Eval_Op_Not --
     -----------------
  
!    --  The not operation is a static functions, so the result is potentially
     --  static if the operand is potentially static (RM 4.9(7), 4.9(20)).
  
     procedure Eval_Op_Not (N : Node_Id) is
--- 3238,3244 ----
     -- Eval_Op_Not --
     -----------------
  
!    --  The not operation is a static function, so the result is potentially
     --  static if the operand is potentially static (RM 4.9(7), 4.9(20)).
  
     procedure Eval_Op_Not (N : Node_Id) is
*************** package body Sem_Eval is
*** 3106,3112 ****
     -------------------------------
  
     --  A qualified expression is potentially static if its subtype mark denotes
!    --  a static subtype and its expression is potentially static (RM 4.9 (11)).
  
     procedure Eval_Qualified_Expression (N : Node_Id) is
        Operand     : constant Node_Id   := Expression (N);
--- 3282,3288 ----
     -------------------------------
  
     --  A qualified expression is potentially static if its subtype mark denotes
!    --  a static subtype and its expression is potentially static (RM 4.9 (10)).
  
     procedure Eval_Qualified_Expression (N : Node_Id) is
        Operand     : constant Node_Id   := Expression (N);
*************** package body Sem_Eval is
*** 3129,3135 ****
        then
           Check_Non_Static_Context (Operand);
  
!          --  If operand is known to raise constraint_error, set the flag on the
           --  expression so it does not get optimized away.
  
           if Nkind (Operand) = N_Raise_Constraint_Error then
--- 3305,3311 ----
        then
           Check_Non_Static_Context (Operand);
  
!          --  If operand is known to raise Constraint_Error, set the flag on the
           --  expression so it does not get optimized away.
  
           if Nkind (Operand) = N_Raise_Constraint_Error then
*************** package body Sem_Eval is
*** 3137,3142 ****
--- 3313,3326 ----
           end if;
  
           return;
+ 
+       --  Also return if a semantic error has been posted on the node, as we
+       --  don't want to fold in that case (for GNATprove, the node might lead
+       --  to Constraint_Error but won't have been replaced with a raise node
+       --  or marked as raising CE).
+ 
+       elsif Error_Posted (N) then
+          return;
        end if;
  
        --  If not foldable we are done
*************** package body Sem_Eval is
*** 3153,3166 ****
           return;
        end if;
  
-       --  Here we will fold, save Print_In_Hex indication
- 
-       Hex := Nkind (Operand) = N_Integer_Literal
-                and then Print_In_Hex (Operand);
- 
        --  Fold the result of qualification
  
        if Is_Discrete_Type (Target_Type) then
           Fold_Uint (N, Expr_Value (Operand), Stat);
  
           --  Preserve Print_In_Hex indication
--- 3337,3351 ----
           return;
        end if;
  
        --  Fold the result of qualification
  
        if Is_Discrete_Type (Target_Type) then
+ 
+          --  Save Print_In_Hex indication
+ 
+          Hex := Nkind (Operand) = N_Integer_Literal
+                   and then Print_In_Hex (Operand);
+ 
           Fold_Uint (N, Expr_Value (Operand), Stat);
  
           --  Preserve Print_In_Hex indication
*************** package body Sem_Eval is
*** 3221,3228 ****
     ------------------------
  
     --  Relational operations are static functions, so the result is static if
!    --  both operands are static (RM 4.9(7), 4.9(20)), except that for strings,
!    --  the result is never static, even if the operands are.
  
     --  However, for internally generated nodes, we allow string equality and
     --  inequality to be static. This is because we rewrite A in "ABC" as an
--- 3406,3414 ----
     ------------------------
  
     --  Relational operations are static functions, so the result is static if
!    --  both operands are static (RM 4.9(7), 4.9(20)), except that up to Ada
!    --  2012, for strings the result is never static, even if the operands are.
!    --  The string case was relaxed in Ada 2020, see AI12-0201.
  
     --  However, for internally generated nodes, we allow string equality and
     --  inequality to be static. This is because we rewrite A in "ABC" as an
*************** package body Sem_Eval is
*** 3545,3621 ****
        if Is_Array_Type (Left_Typ)
          and then Left_Typ /= Any_Composite
          and then Number_Dimensions (Left_Typ) = 1
!         and then Nkind_In (N, N_Op_Eq, N_Op_Ne)
        then
           if Raises_Constraint_Error (Left)
                or else
              Raises_Constraint_Error (Right)
           then
              return;
  
           --  OK, we have the case where we may be able to do this fold
  
!          else
!             Left_Len  := Static_Length (Left);
!             Right_Len := Static_Length (Right);
  
!             if Left_Len /= Uint_Minus_1
!               and then Right_Len /= Uint_Minus_1
!               and then Left_Len /= Right_Len
!             then
!                Fold_Uint (N, Test (Nkind (N) = N_Op_Ne), False);
!                Warn_On_Known_Condition (N);
!                return;
!             end if;
           end if;
  
        --  General case
  
!       else
!          --  Initialize the value of Is_Static_Expression. The value of Fold
!          --  returned by Test_Expression_Is_Foldable is not needed since, even
!          --  when some operand is a variable, we can still perform the static
!          --  evaluation of the expression in some cases (for example, for a
!          --  variable of a subtype of Integer we statically know that any value
!          --  stored in such variable is smaller than Integer'Last).
  
!          Test_Expression_Is_Foldable
!            (N, Left, Right, Is_Static_Expression, Fold);
  
!          --  Only comparisons of scalars can give static results. A comparison
!          --  of strings never yields a static result, even if both operands are
!          --  static strings, except that as noted above, we allow equality and
!          --  inequality for strings.
  
!          if Is_String_Type (Left_Typ)
!            and then not Comes_From_Source (N)
!            and then Nkind_In (N, N_Op_Eq, N_Op_Ne)
           then
-             null;
- 
-          elsif not Is_Scalar_Type (Left_Typ) then
              Is_Static_Expression := False;
              Set_Is_Static_Expression (N, False);
           end if;
  
!          --  For operators on universal numeric types called as functions with
!          --  an explicit scope, determine appropriate specific numeric type,
!          --  and diagnose possible ambiguity.
  
!          if Is_Universal_Numeric_Type (Left_Typ)
!               and then
!             Is_Universal_Numeric_Type (Right_Typ)
!          then
!             Op_Typ := Find_Universal_Operator_Type (N);
!          end if;
  
!          --  Attempt to fold the relational operator
  
!          if Is_Static_Expression and then Is_Real_Type (Left_Typ) then
!             Fold_Static_Real_Op;
!          else
!             Fold_General_Op (Is_Static_Expression);
!          end if;
        end if;
  
        --  For the case of a folded relational operator on a specific numeric
--- 3731,3818 ----
        if Is_Array_Type (Left_Typ)
          and then Left_Typ /= Any_Composite
          and then Number_Dimensions (Left_Typ) = 1
!         and then Nkind (N) in N_Op_Eq | N_Op_Ne
        then
           if Raises_Constraint_Error (Left)
                or else
              Raises_Constraint_Error (Right)
           then
              return;
+          end if;
  
           --  OK, we have the case where we may be able to do this fold
  
!          Left_Len  := Static_Length (Left);
!          Right_Len := Static_Length (Right);
  
!          if Left_Len /= Uint_Minus_1
!            and then Right_Len /= Uint_Minus_1
!            and then Left_Len /= Right_Len
!          then
!             --  AI12-0201: comparison of string is static in Ada 202x
! 
!             Fold_Uint
!               (N,
!                Test (Nkind (N) = N_Op_Ne),
!                Static => Ada_Version >= Ada_2020
!                            and then Is_String_Type (Left_Typ));
!             Warn_On_Known_Condition (N);
!             return;
           end if;
+       end if;
  
        --  General case
  
!       --  Initialize the value of Is_Static_Expression. The value of Fold
!       --  returned by Test_Expression_Is_Foldable is not needed since, even
!       --  when some operand is a variable, we can still perform the static
!       --  evaluation of the expression in some cases (for example, for a
!       --  variable of a subtype of Integer we statically know that any value
!       --  stored in such variable is smaller than Integer'Last).
  
!       Test_Expression_Is_Foldable
!         (N, Left, Right, Is_Static_Expression, Fold);
  
!       --  Comparisons of scalars can give static results.
!       --  In addition starting with Ada 202x (AI12-0201), comparison of strings
!       --  can also give static results, and as noted above, we also allow for
!       --  earlier Ada versions internally generated equality and inequality for
!       --  strings.
!       --  ??? The Comes_From_Source test below isn't correct and will accept
!       --  some cases that are illegal in Ada 2012. and before. Now that Ada
!       --  202x has relaxed the rules, this doesn't really matter.
  
!       if Is_String_Type (Left_Typ) then
!          if Ada_Version < Ada_2020
!            and then (Comes_From_Source (N)
!                       or else Nkind (N) not in N_Op_Eq | N_Op_Ne)
           then
              Is_Static_Expression := False;
              Set_Is_Static_Expression (N, False);
           end if;
  
!       elsif not Is_Scalar_Type (Left_Typ) then
!          Is_Static_Expression := False;
!          Set_Is_Static_Expression (N, False);
!       end if;
  
!       --  For operators on universal numeric types called as functions with an
!       --  explicit scope, determine appropriate specific numeric type, and
!       --  diagnose possible ambiguity.
  
!       if Is_Universal_Numeric_Type (Left_Typ)
!            and then
!          Is_Universal_Numeric_Type (Right_Typ)
!       then
!          Op_Typ := Find_Universal_Operator_Type (N);
!       end if;
  
!       --  Attempt to fold the relational operator
! 
!       if Is_Static_Expression and then Is_Real_Type (Left_Typ) then
!          Fold_Static_Real_Op;
!       else
!          Fold_General_Op (Is_Static_Expression);
        end if;
  
        --  For the case of a folded relational operator on a specific numeric
*************** package body Sem_Eval is
*** 3628,3647 ****
        Warn_On_Known_Condition (N);
     end Eval_Relational_Op;
  
     ----------------
     -- Eval_Shift --
     ----------------
  
-    --  Shift operations are intrinsic operations that can never be static, so
-    --  the only processing required is to perform the required check for a non
-    --  static context for the two operands.
- 
-    --  Actually we could do some compile time evaluation here some time ???
- 
     procedure Eval_Shift (N : Node_Id) is
     begin
!       Check_Non_Static_Context (Left_Opnd (N));
!       Check_Non_Static_Context (Right_Opnd (N));
     end Eval_Shift;
  
     ------------------------
--- 3825,3859 ----
        Warn_On_Known_Condition (N);
     end Eval_Relational_Op;
  
+    -----------------------------
+    -- Eval_Selected_Component --
+    -----------------------------
+ 
+    procedure Eval_Selected_Component (N : Node_Id) is
+    begin
+       --  If an attribute reference or a LHS, nothing to do.
+       --  Also do not fold if N is an [in] out subprogram parameter.
+       --  Fold will perform the other relevant tests.
+ 
+       if Nkind (Parent (N)) /= N_Attribute_Reference
+         and then Is_LHS (N) = No
+         and then not Is_Actual_Out_Or_In_Out_Parameter (N)
+       then
+          Fold (N);
+       end if;
+    end Eval_Selected_Component;
+ 
     ----------------
     -- Eval_Shift --
     ----------------
  
     procedure Eval_Shift (N : Node_Id) is
     begin
!       --  This procedure is only called for compiler generated code (e.g.
!       --  packed arrays), so there is nothing to do except attempting to fold
!       --  the expression.
! 
!       Fold_Shift (N, Left_Opnd (N), Right_Opnd (N), Nkind (N));
     end Eval_Shift;
  
     ------------------------
*************** package body Sem_Eval is
*** 3755,3760 ****
--- 3967,3973 ----
  
     procedure Eval_Slice (N : Node_Id) is
        Drange : constant Node_Id := Discrete_Range (N);
+       Name   : constant Node_Id := Prefix (N);
  
     begin
        if Nkind (Drange) = N_Range then
*************** package body Sem_Eval is
*** 3766,3778 ****
        --  the type of A, is redundant, the slice can be replaced with A, and
        --  this is worth a warning.
  
!       if Is_Entity_Name (Prefix (N)) then
           declare
!             E : constant Entity_Id := Entity (Prefix (N));
              T : constant Entity_Id := Etype (E);
  
           begin
!             if Ekind (E) = E_Constant
                and then Is_Array_Type (T)
                and then Is_Entity_Name (Drange)
              then
--- 3979,3991 ----
        --  the type of A, is redundant, the slice can be replaced with A, and
        --  this is worth a warning.
  
!       if Is_Entity_Name (Name) then
           declare
!             E : constant Entity_Id := Entity (Name);
              T : constant Entity_Id := Etype (E);
  
           begin
!             if Is_Object (E)
                and then Is_Array_Type (T)
                and then Is_Entity_Name (Drange)
              then
*************** package body Sem_Eval is
*** 3834,3841 ****
        end if;
  
        --  If original node was a type conversion, then result if non-static
  
!       if Nkind (Original_Node (N)) = N_Type_Conversion then
           Set_Is_Static_Expression (N, False);
           return;
        end if;
--- 4047,4057 ----
        end if;
  
        --  If original node was a type conversion, then result if non-static
+       --  up to Ada 2012. AI12-0201 changes that with Ada 202x.
  
!       if Nkind (Original_Node (N)) = N_Type_Conversion
!         and then Ada_Version <= Ada_2012
!       then
           Set_Is_Static_Expression (N, False);
           return;
        end if;
*************** package body Sem_Eval is
*** 3918,3923 ****
--- 4134,4140 ----
     --  A type conversion is potentially static if its subtype mark is for a
     --  static scalar subtype, and its operand expression is potentially static
     --  (RM 4.9(10)).
+    --  Also add support for static string types.
  
     procedure Eval_Type_Conversion (N : Node_Id) is
        Operand     : constant Node_Id   := Expression (N);
*************** package body Sem_Eval is
*** 3991,4000 ****
        --  following type test, fixed-point counts as real unless the flag
        --  Conversion_OK is set, in which case it counts as integer.
  
!       --  Fold conversion, case of string type. The result is not static
  
        if Is_String_Type (Target_Type) then
!          Fold_Str (N, Strval (Get_String_Val (Operand)), Static => False);
           return;
  
        --  Fold conversion, case of integer target type
--- 4208,4221 ----
        --  following type test, fixed-point counts as real unless the flag
        --  Conversion_OK is set, in which case it counts as integer.
  
!       --  Fold conversion, case of string type. The result is static starting
!       --  with Ada 202x (AI12-0201).
  
        if Is_String_Type (Target_Type) then
!          Fold_Str
!            (N,
!             Strval (Get_String_Val (Operand)),
!             Static => Ada_Version >= Ada_2020);
           return;
  
        --  Fold conversion, case of integer target type
*************** package body Sem_Eval is
*** 4011,4018 ****
  
              --  Real to integer conversion
  
!             else
                 Result := UR_To_Uint (Expr_Value_R (Operand));
              end if;
  
              --  If fixed-point type (Conversion_OK must be set), then the
--- 4232,4244 ----
  
              --  Real to integer conversion
  
!             elsif To_Be_Treated_As_Real (Source_Type) then
                 Result := UR_To_Uint (Expr_Value_R (Operand));
+ 
+             --  Enumeration to integer conversion, aka 'Enum_Rep
+ 
+             else
+                Result := Expr_Rep_Value (Operand);
              end if;
  
              --  If fixed-point type (Conversion_OK must be set), then the
*************** package body Sem_Eval is
*** 4056,4062 ****
        if Is_Out_Of_Range (N, Etype (N), Assume_Valid => True) then
           Out_Of_Range (N);
        end if;
- 
     end Eval_Type_Conversion;
  
     -------------------
--- 4282,4287 ----
*************** package body Sem_Eval is
*** 4159,4166 ****
     --  processing is to check for a non-static context for the operand.
  
     procedure Eval_Unchecked_Conversion (N : Node_Id) is
     begin
!       Check_Non_Static_Context (Expression (N));
     end Eval_Unchecked_Conversion;
  
     --------------------
--- 4384,4445 ----
     --  processing is to check for a non-static context for the operand.
  
     procedure Eval_Unchecked_Conversion (N : Node_Id) is
+       Target_Type  : constant Entity_Id := Etype (N);
+       Operand      : constant Node_Id   := Expression (N);
+       Operand_Type : constant Entity_Id := Etype (Operand);
+ 
     begin
!       Check_Non_Static_Context (Operand);
! 
!       --  If we have a conversion of a compile time known value to a target
!       --  type and the value is in range of the target type, then we can simply
!       --  replace the construct by an integer literal of the correct type. We
!       --  only apply this to discrete types being converted. Possibly it may
!       --  apply in other cases, but it is too much trouble to worry about.
! 
!       --  Note that we do not do this transformation if the Kill_Range_Check
!       --  flag is set, since then the value may be outside the expected range.
!       --  This happens in the Normalize_Scalars case.
! 
!       --  We also skip this if either the target or operand type is biased
!       --  because in this case, the unchecked conversion is supposed to
!       --  preserve the bit pattern, not the integer value.
! 
!       if Is_Integer_Type (Target_Type)
!         and then not Has_Biased_Representation (Target_Type)
!         and then Is_Discrete_Type (Operand_Type)
!         and then not Has_Biased_Representation (Operand_Type)
!         and then Compile_Time_Known_Value (Operand)
!         and then not Kill_Range_Check (N)
!       then
!          declare
!             Val : constant Uint := Expr_Rep_Value (Operand);
! 
!          begin
!             if Compile_Time_Known_Value (Type_Low_Bound (Target_Type))
!                  and then
!                Compile_Time_Known_Value (Type_High_Bound (Target_Type))
!                  and then
!                Val >= Expr_Value (Type_Low_Bound (Target_Type))
!                  and then
!                Val <= Expr_Value (Type_High_Bound (Target_Type))
!             then
!                Rewrite (N, Make_Integer_Literal (Sloc (N), Val));
! 
!                --  If Address is the target type, just set the type to avoid a
!                --  spurious type error on the literal when Address is a visible
!                --  integer type.
! 
!                if Is_Descendant_Of_Address (Target_Type) then
!                   Set_Etype (N, Target_Type);
!                else
!                   Analyze_And_Resolve (N, Target_Type);
!                end if;
! 
!                return;
!             end if;
!          end;
!       end if;
     end Eval_Unchecked_Conversion;
  
     --------------------
*************** package body Sem_Eval is
*** 4203,4212 ****
           pragma Assert (Is_Fixed_Point_Type (Underlying_Type (Etype (N))));
           return Corresponding_Integer_Value (N);
  
!       --  Otherwise must be character literal
  
!       else
!          pragma Assert (Kind = N_Character_Literal);
           Ent := Entity (N);
  
           --  Since Character literals of type Standard.Character don't have any
--- 4482,4497 ----
           pragma Assert (Is_Fixed_Point_Type (Underlying_Type (Etype (N))));
           return Corresponding_Integer_Value (N);
  
!       --  The NULL access value
  
!       elsif Kind = N_Null then
!          pragma Assert (Is_Access_Type (Underlying_Type (Etype (N)))
!            or else Error_Posted (N));
!          return Uint_0;
! 
!       --  Character literal
! 
!       elsif Kind = N_Character_Literal then
           Ent := Entity (N);
  
           --  Since Character literals of type Standard.Character don't have any
*************** package body Sem_Eval is
*** 4220,4225 ****
--- 4505,4528 ----
           else
              return Enumeration_Rep (Ent);
           end if;
+ 
+       --  Unchecked conversion, which can come from System'To_Address (X)
+       --  where X is a static integer expression. Recursively evaluate X.
+ 
+       elsif Kind = N_Unchecked_Type_Conversion then
+          return Expr_Rep_Value (Expression (N));
+ 
+       --  Static discriminant value
+ 
+       elsif Is_Static_Discriminant_Component (N) then
+          return Expr_Rep_Value
+                   (Get_Discriminant_Value
+                      (Entity (Selector_Name (N)),
+                       Etype (Prefix (N)),
+                       Discriminant_Constraint (Etype (Prefix (N)))));
+ 
+       else
+          raise Program_Error;
        end if;
     end Expr_Rep_Value;
  
*************** package body Sem_Eval is
*** 4305,4310 ****
--- 4608,4622 ----
        elsif Kind = N_Unchecked_Type_Conversion then
           Val := Expr_Value (Expression (N));
  
+       --  Static discriminant value
+ 
+       elsif Is_Static_Discriminant_Component (N) then
+          Val := Expr_Value
+                   (Get_Discriminant_Value
+                      (Entity (Selector_Name (N)),
+                       Etype (Prefix (N)),
+                       Discriminant_Constraint (Etype (Prefix (N)))));
+ 
        else
           raise Program_Error;
        end if;
*************** package body Sem_Eval is
*** 4532,4537 ****
--- 4844,5051 ----
        end if;
     end Flag_Non_Static_Expr;
  
+    ----------
+    -- Fold --
+    ----------
+ 
+    procedure Fold (N : Node_Id) is
+       Typ : constant Entity_Id := Etype (N);
+    begin
+       --  If not known at compile time or if already a literal, nothing to do
+ 
+       if Nkind (N) in N_Numeric_Or_String_Literal
+         or else not Compile_Time_Known_Value (N)
+       then
+          null;
+ 
+       elsif Is_Discrete_Type (Typ) then
+          Fold_Uint (N, Expr_Value (N), Static => Is_Static_Expression (N));
+ 
+       elsif Is_Real_Type (Typ) then
+          Fold_Ureal (N, Expr_Value_R (N), Static => Is_Static_Expression (N));
+ 
+       elsif Is_String_Type (Typ) then
+          Fold_Str
+            (N, Strval (Expr_Value_S (N)), Static => Is_Static_Expression (N));
+       end if;
+    end Fold;
+ 
+    ----------------
+    -- Fold_Dummy --
+    ----------------
+ 
+    procedure Fold_Dummy (N : Node_Id; Typ : Entity_Id) is
+    begin
+       if Is_Integer_Type (Typ) then
+          Fold_Uint (N, Uint_1, Static => True);
+ 
+       elsif Is_Real_Type (Typ) then
+          Fold_Ureal (N, Ureal_1, Static => True);
+ 
+       elsif Is_Enumeration_Type (Typ) then
+          Fold_Uint
+            (N,
+             Expr_Value (Type_Low_Bound (Base_Type (Typ))),
+             Static => True);
+ 
+       elsif Is_String_Type (Typ) then
+          Fold_Str
+            (N,
+             Strval (Make_String_Literal (Sloc (N), "")),
+             Static => True);
+       end if;
+    end Fold_Dummy;
+ 
+    ----------------
+    -- Fold_Shift --
+    ----------------
+ 
+    procedure Fold_Shift
+      (N          : Node_Id;
+       Left       : Node_Id;
+       Right      : Node_Id;
+       Op         : Node_Kind;
+       Static     : Boolean := False;
+       Check_Elab : Boolean := False)
+    is
+       Typ : constant Entity_Id := Base_Type (Etype (Left));
+ 
+       procedure Check_Elab_Call;
+       --  Add checks related to calls in elaboration code
+ 
+       ---------------------
+       -- Check_Elab_Call --
+       ---------------------
+ 
+       procedure Check_Elab_Call is
+       begin
+          if Check_Elab then
+             if Legacy_Elaboration_Checks then
+                Check_Elab_Call (N);
+             end if;
+ 
+             Build_Call_Marker (N);
+          end if;
+       end Check_Elab_Call;
+ 
+       Modulus : Uint;
+ 
+    begin
+       if Compile_Time_Known_Value (Left)
+         and then Compile_Time_Known_Value (Right)
+       then
+          pragma Assert (not Non_Binary_Modulus (Typ));
+ 
+          if Op = N_Op_Shift_Left then
+             Check_Elab_Call;
+ 
+             declare
+                Modulus : Uint;
+             begin
+                if Is_Modular_Integer_Type (Typ) then
+                   Modulus := Einfo.Modulus (Typ);
+                else
+                   Modulus := Uint_2 ** RM_Size (Typ);
+                end if;
+ 
+                --  Fold Shift_Left (X, Y) by computing (X * 2**Y) rem modulus
+ 
+                Fold_Uint
+                  (N,
+                   (Expr_Value (Left) * (Uint_2 ** Expr_Value (Right)))
+                     rem Modulus,
+                   Static => Static);
+             end;
+ 
+          elsif Op = N_Op_Shift_Right then
+             Check_Elab_Call;
+ 
+             --  X >> 0 is a no-op
+ 
+             if Expr_Value (Right) = Uint_0 then
+                Fold_Uint (N, Expr_Value (Left), Static => Static);
+             else
+                if Is_Modular_Integer_Type (Typ) then
+                   Modulus := Einfo.Modulus (Typ);
+                else
+                   Modulus := Uint_2 ** RM_Size (Typ);
+                end if;
+ 
+                --  Fold X >> Y by computing (X [+ Modulus]) / 2**Y
+                --  Note that after a Shift_Right operation (with Y > 0), the
+                --  result is always positive, even if the original operand was
+                --  negative.
+ 
+                Fold_Uint
+                  (N,
+                   (Expr_Value (Left) +
+                      (if Expr_Value (Left) >= Uint_0 then Uint_0 else Modulus))
+                   / (Uint_2 ** Expr_Value (Right)),
+                   Static => Static);
+             end if;
+          elsif Op = N_Op_Shift_Right_Arithmetic then
+             Check_Elab_Call;
+ 
+             declare
+                Two_Y   : constant Uint := Uint_2 ** Expr_Value (Right);
+             begin
+                if Is_Modular_Integer_Type (Typ) then
+                   Modulus := Einfo.Modulus (Typ);
+                else
+                   Modulus := Uint_2 ** RM_Size (Typ);
+                end if;
+ 
+                --  X / 2**Y if X if positive or a small enough modular integer
+ 
+                if (Is_Modular_Integer_Type (Typ)
+                     and then Expr_Value (Left) < Modulus / Uint_2)
+                  or else
+                    (not Is_Modular_Integer_Type (Typ)
+                      and then Expr_Value (Left) >= 0)
+                then
+                   Fold_Uint (N, Expr_Value (Left) / Two_Y, Static => Static);
+ 
+                --  -1 (aka all 1's) if Y is larger than the number of bits
+                --  available or if X = -1.
+ 
+                elsif Two_Y > Modulus
+                  or else Expr_Value (Left) = Uint_Minus_1
+                then
+                   if Is_Modular_Integer_Type (Typ) then
+                      Fold_Uint (N, Modulus - Uint_1, Static => Static);
+                   else
+                      Fold_Uint (N, Uint_Minus_1, Static => Static);
+                   end if;
+ 
+                --  Large modular integer, compute via multiply/divide the
+                --  following: X >> Y + (1 << Y - 1) << (RM_Size - Y)
+ 
+                elsif Is_Modular_Integer_Type (Typ) then
+                   Fold_Uint
+                     (N,
+                      (Expr_Value (Left)) / Two_Y
+                         + (Two_Y - Uint_1)
+                           * Uint_2 ** (RM_Size (Typ) - Expr_Value (Right)),
+                      Static => Static);
+ 
+                --  Negative signed integer, compute via multiple/divide the
+                --  following:
+                --  (Modulus + X) >> Y + (1 << Y - 1) << (RM_Size - Y) - Modulus
+ 
+                else
+                   Fold_Uint
+                     (N,
+                      (Modulus + Expr_Value (Left)) / Two_Y
+                         + (Two_Y - Uint_1)
+                           * Uint_2 ** (RM_Size (Typ) - Expr_Value (Right))
+                         - Modulus,
+                      Static => Static);
+                end if;
+             end;
+          end if;
+       end if;
+    end Fold_Shift;
+ 
     --------------
     -- Fold_Str --
     --------------
*************** package body Sem_Eval is
*** 4579,4586 ****
           return;
        end if;
  
!       --  If we are folding a named number, retain the entity in the literal,
!       --  for ASIS use.
  
        if Is_Entity_Name (N) and then Ekind (Entity (N)) = E_Named_Integer then
           Ent := Entity (N);
--- 5093,5100 ----
           return;
        end if;
  
!       --  If we are folding a named number, retain the entity in the literal
!       --  in the original tree.
  
        if Is_Entity_Name (N) and then Ekind (Entity (N)) = E_Named_Integer then
           Ent := Entity (N);
*************** package body Sem_Eval is
*** 4594,4601 ****
  
        --  For a result of type integer, substitute an N_Integer_Literal node
        --  for the result of the compile time evaluation of the expression.
!       --  For ASIS use, set a link to the original named number when not in
!       --  a generic context.
  
        if Is_Integer_Type (Typ) then
           Rewrite (N, Make_Integer_Literal (Loc, Val));
--- 5108,5115 ----
  
        --  For a result of type integer, substitute an N_Integer_Literal node
        --  for the result of the compile time evaluation of the expression.
!       --  Set a link to the original named number when not in a generic context
!       --  for reference in the original tree.
  
        if Is_Integer_Type (Typ) then
           Rewrite (N, Make_Integer_Literal (Loc, Val));
*************** package body Sem_Eval is
*** 4641,4648 ****
           return;
        end if;
  
!       --  If we are folding a named number, retain the entity in the literal,
!       --  for ASIS use.
  
        if Is_Entity_Name (N) and then Ekind (Entity (N)) = E_Named_Real then
           Ent := Entity (N);
--- 5155,5162 ----
           return;
        end if;
  
!       --  If we are folding a named number, retain the entity in the literal
!       --  in the original tree.
  
        if Is_Entity_Name (N) and then Ekind (Entity (N)) = E_Named_Real then
           Ent := Entity (N);
*************** package body Sem_Eval is
*** 4652,4658 ****
  
        Rewrite (N, Make_Real_Literal (Loc, Realval => Val));
  
!       --  Set link to original named number, for ASIS use
  
        Set_Original_Entity (N, Ent);
  
--- 5166,5172 ----
  
        Rewrite (N, Make_Real_Literal (Loc, Realval => Val));
  
!       --  Set link to original named number
  
        Set_Original_Entity (N, Ent);
  
*************** package body Sem_Eval is
*** 4703,4709 ****
  
     function Get_String_Val (N : Node_Id) return Node_Id is
     begin
!       if Nkind_In (N, N_String_Literal, N_Character_Literal) then
           return N;
        else
           pragma Assert (Is_Entity_Name (N));
--- 5217,5223 ----
  
     function Get_String_Val (N : Node_Id) return Node_Id is
     begin
!       if Nkind (N) in N_String_Literal | N_Character_Literal then
           return N;
        else
           pragma Assert (Is_Entity_Name (N));
*************** package body Sem_Eval is
*** 4821,4834 ****
  
     exception
        when others =>
! 
!          --  Debug flag K disables this behavior (useful for debugging)
  
           if Debug_Flag_K then
!             raise;
!          else
!             return False;
           end if;
     end In_Subrange_Of;
  
     -----------------
--- 5335,5348 ----
  
     exception
        when others =>
!          --  With debug flag K we will get an exception unless an error has
!          --  already occurred (useful for debugging).
  
           if Debug_Flag_K then
!             Check_Error_Detected;
           end if;
+ 
+          return False;
     end In_Subrange_Of;
  
     -----------------
*************** package body Sem_Eval is
*** 5555,5599 ****
        end if;
     end Out_Of_Range;
  
     ----------------------
     -- Predicates_Match --
     ----------------------
  
     function Predicates_Match (T1, T2 : Entity_Id) return Boolean is
!       Pred1 : Node_Id;
!       Pred2 : Node_Id;
  
     begin
        if Ada_Version < Ada_2012 then
           return True;
  
!          --  Both types must have predicates or lack them
! 
!       elsif Has_Predicates (T1) /= Has_Predicates (T2) then
!          return False;
  
!          --  Check matching predicates
  
!       else
!          Pred1 :=
!            Get_Rep_Item
!              (T1, Name_Static_Predicate, Check_Parents => False);
!          Pred2 :=
!            Get_Rep_Item
!              (T2, Name_Static_Predicate, Check_Parents => False);
  
!          --  Subtypes statically match if the predicate comes from the
!          --  same declaration, which can only happen if one is a subtype
!          --  of the other and has no explicit predicate.
  
!          --  Suppress warnings on order of actuals, which is otherwise
!          --  triggered by one of the two calls below.
  
!          pragma Warnings (Off);
!          return Pred1 = Pred2
!            or else (No (Pred1) and then Is_Subtype_Of (T1, T2))
!            or else (No (Pred2) and then Is_Subtype_Of (T2, T1));
!          pragma Warnings (On);
        end if;
     end Predicates_Match;
  
--- 6069,6193 ----
        end if;
     end Out_Of_Range;
  
+    ---------------------------
+    -- Predicates_Compatible --
+    ---------------------------
+ 
+    function Predicates_Compatible (T1, T2 : Entity_Id) return Boolean is
+ 
+       function T2_Rep_Item_Applies_To_T1 (Nam : Name_Id) return Boolean;
+       --  Return True if the rep item for Nam is either absent on T2 or also
+       --  applies to T1.
+ 
+       -------------------------------
+       -- T2_Rep_Item_Applies_To_T1 --
+       -------------------------------
+ 
+       function T2_Rep_Item_Applies_To_T1 (Nam : Name_Id) return Boolean is
+          Rep_Item : constant Node_Id := Get_Rep_Item (T2, Nam);
+ 
+       begin
+          return No (Rep_Item) or else Get_Rep_Item (T1, Nam) = Rep_Item;
+       end T2_Rep_Item_Applies_To_T1;
+ 
+    --  Start of processing for Predicates_Compatible
+ 
+    begin
+       if Ada_Version < Ada_2012 then
+          return True;
+ 
+       --  If T2 has no predicates, there is no compatibility issue
+ 
+       elsif not Has_Predicates (T2) then
+          return True;
+ 
+       --  T2 has predicates, if T1 has none then we defer to the static check
+ 
+       elsif not Has_Predicates (T1) then
+          null;
+ 
+       --  Both T2 and T1 have predicates, check that all predicates that apply
+       --  to T2 apply also to T1 (RM 4.9.1(9/3)).
+ 
+       elsif T2_Rep_Item_Applies_To_T1 (Name_Static_Predicate)
+         and then T2_Rep_Item_Applies_To_T1 (Name_Dynamic_Predicate)
+         and then T2_Rep_Item_Applies_To_T1 (Name_Predicate)
+       then
+          return True;
+       end if;
+ 
+       --  Implement the static check prescribed by RM 4.9.1(10/3)
+ 
+       if Is_Static_Subtype (T1) and then Is_Static_Subtype (T2) then
+          --  We just need to query Interval_Lists for discrete types
+ 
+          if Is_Discrete_Type (T1) and then Is_Discrete_Type (T2) then
+             declare
+                Interval_List1 : constant Interval_Lists.Discrete_Interval_List
+                  := Interval_Lists.Type_Intervals (T1);
+                Interval_List2 : constant Interval_Lists.Discrete_Interval_List
+                  := Interval_Lists.Type_Intervals (T2);
+             begin
+                return Interval_Lists.Is_Subset (Interval_List1, Interval_List2)
+                  and then not (Has_Predicates (T1)
+                                 and then not Predicate_Checks_Suppressed (T2)
+                                 and then Predicate_Checks_Suppressed (T1));
+             end;
+ 
+          else
+             --  TBD: Implement Interval_Lists for real types
+ 
+             return False;
+          end if;
+ 
+       --  If either subtype is not static, the predicates are not compatible
+ 
+       else
+          return False;
+       end if;
+    end Predicates_Compatible;
+ 
     ----------------------
     -- Predicates_Match --
     ----------------------
  
     function Predicates_Match (T1, T2 : Entity_Id) return Boolean is
! 
!       function Have_Same_Rep_Item (Nam : Name_Id) return Boolean;
!       --  Return True if T1 and T2 have the same rep item for Nam
! 
!       ------------------------
!       -- Have_Same_Rep_Item --
!       ------------------------
! 
!       function Have_Same_Rep_Item (Nam : Name_Id) return Boolean is
!       begin
!          return Get_Rep_Item (T1, Nam) = Get_Rep_Item (T2, Nam);
!       end Have_Same_Rep_Item;
! 
!    --  Start of processing for Predicates_Match
  
     begin
        if Ada_Version < Ada_2012 then
           return True;
  
!       --  If T2 has no predicates, match if and only if T1 has none
  
!       elsif not Has_Predicates (T2) then
!          return not Has_Predicates (T1);
  
!       --  T2 has predicates, no match if T1 has none
  
!       elsif not Has_Predicates (T1) then
!          return False;
  
!       --  Both T2 and T1 have predicates, check that they all come
!       --  from the same declarations.
  
!       else
!          return Have_Same_Rep_Item (Name_Static_Predicate)
!            and then Have_Same_Rep_Item (Name_Dynamic_Predicate)
!            and then Have_Same_Rep_Item (Name_Predicate);
        end if;
     end Predicates_Match;
  
*************** package body Sem_Eval is
*** 5793,5798 ****
--- 6387,6407 ----
        Set_Is_Static_Expression (N, Stat);
     end Rewrite_In_Raise_CE;
  
+    ------------------------------------------------
+    -- Set_Checking_Potentially_Static_Expression --
+    ------------------------------------------------
+ 
+    procedure Set_Checking_Potentially_Static_Expression (Value : Boolean) is
+    begin
+       --  Verify that we're not currently checking for a potentially static
+       --  expression unless we're disabling such checking.
+ 
+       pragma Assert
+         (not Checking_For_Potentially_Static_Expression or else not Value);
+ 
+       Checking_For_Potentially_Static_Expression := Value;
+    end Set_Checking_Potentially_Static_Expression;
+ 
     ---------------------
     -- String_Type_Len --
     ---------------------
*************** package body Sem_Eval is
*** 5822,5841 ****
        Formal_Derived_Matching : Boolean := False) return Boolean
     is
     begin
        --  Scalar types
  
!       if Is_Scalar_Type (T1) then
  
           --  Definitely compatible if we match
  
           if Subtypes_Statically_Match (T1, T2) then
              return True;
  
!          --  If either subtype is nonstatic then they're not compatible
  
!          elsif not Is_OK_Static_Subtype (T1)
!                  or else
!                not Is_OK_Static_Subtype (T2)
           then
              return False;
  
--- 6431,6462 ----
        Formal_Derived_Matching : Boolean := False) return Boolean
     is
     begin
+       --  A type is always statically compatible with itself
+ 
+       if T1 = T2 then
+          return True;
+ 
+       --  Not compatible if predicates are not compatible
+ 
+       elsif not Predicates_Compatible (T1, T2) then
+          return False;
+ 
        --  Scalar types
  
!       elsif Is_Scalar_Type (T1) then
  
           --  Definitely compatible if we match
  
           if Subtypes_Statically_Match (T1, T2) then
              return True;
  
!          --  A scalar subtype S1 is compatible with S2 if their bounds
!          --  are static and compatible, even if S1 has dynamic predicates
!          --  and is thus non-static. Predicate compatibility has been
!          --  checked above.
  
!          elsif not Is_Static_Range (Scalar_Range (T1))
!                  or else not Is_Static_Range (Scalar_Range (T2))
           then
              return False;
  
*************** package body Sem_Eval is
*** 5883,5888 ****
--- 6504,6517 ----
             and then not (Can_Never_Be_Null (T2)
                            and then not Can_Never_Be_Null (T1));
  
+       --  Private types without discriminants can be handled specially.
+       --  Predicate matching has been checked above.
+ 
+       elsif Is_Private_Type (T1)
+         and then not Has_Discriminants (T1)
+       then
+          return not Has_Discriminants (T2);
+ 
        --  All other cases
  
        else
*************** package body Sem_Eval is
*** 6031,6036 ****
--- 6660,6688 ----
  
        elsif Has_Discriminants (T1) or else Has_Discriminants (T2) then
  
+          --  Handle derivations of private subtypes. For example S1 statically
+          --  matches the full view of T1 in the following example:
+ 
+          --      type T1(<>) is new Root with private;
+          --      subtype S1 is new T1;
+          --      overriding proc P1 (P : S1);
+          --    private
+          --      type T1 (D : Disc) is new Root with ...
+ 
+          if Ekind (T2) = E_Record_Subtype_With_Private
+            and then not Has_Discriminants (T2)
+            and then Partial_View_Has_Unknown_Discr (T1)
+            and then Etype (T2) = T1
+          then
+             return True;
+ 
+          elsif Ekind (T1) = E_Record_Subtype_With_Private
+            and then not Has_Discriminants (T1)
+            and then Partial_View_Has_Unknown_Discr (T2)
+            and then Etype (T1) = T2
+          then
+             return True;
+ 
           --  Because of view exchanges in multiple instantiations, conformance
           --  checking might try to match a partial view of a type with no
           --  discriminants with a full view that has defaulted discriminants.
*************** package body Sem_Eval is
*** 6038,6044 ****
           --  which must exist because we know that the two subtypes have the
           --  same base type.
  
!          if Has_Discriminants (T1) /= Has_Discriminants (T2) then
              if In_Instance then
                 if Is_Private_Type (T2)
                   and then Present (Full_View (T2))
--- 6690,6696 ----
           --  which must exist because we know that the two subtypes have the
           --  same base type.
  
!          elsif Has_Discriminants (T1) /= Has_Discriminants (T2) then
              if In_Instance then
                 if Is_Private_Type (T2)
                   and then Present (Full_View (T2))
*************** package body Sem_Eval is
*** 6061,6068 ****
           end if;
  
           declare
!             DL1 : constant Elist_Id := Discriminant_Constraint (T1);
!             DL2 : constant Elist_Id := Discriminant_Constraint (T2);
  
              DA1 : Elmt_Id;
              DA2 : Elmt_Id;
--- 6713,6777 ----
           end if;
  
           declare
! 
!             function Original_Discriminant_Constraint
!               (Typ : Entity_Id) return Elist_Id;
!             --  Returns Typ's discriminant constraint, or if the constraint
!             --  is inherited from an ancestor type, then climbs the parent
!             --  types to locate and return the constraint farthest up the
!             --  parent chain that Typ's constraint is ultimately inherited
!             --  from (stopping before a parent that doesn't impose a constraint
!             --  or a parent that has new discriminants). This ensures a proper
!             --  result from the equality comparison of Elist_Ids below (as
!             --  otherwise, derived types that inherit constraints may appear
!             --  to be unequal, because each level of derivation can have its
!             --  own copy of the constraint).
! 
!             function Original_Discriminant_Constraint
!               (Typ : Entity_Id) return Elist_Id
!             is
!             begin
!                if not Has_Discriminants (Typ) then
!                   return No_Elist;
! 
!                --  If Typ is not a derived type, then directly return the
!                --  its constraint.
! 
!                elsif not Is_Derived_Type (Typ) then
!                   return Discriminant_Constraint (Typ);
! 
!                --  If the parent type doesn't have discriminants, doesn't
!                --  have a constraint, or has new discriminants, then stop
!                --  and return Typ's constraint.
! 
!                elsif not Has_Discriminants (Etype (Typ))
! 
!                  --  No constraint on the parent type
! 
!                  or else not Present (Discriminant_Constraint (Etype (Typ)))
!                  or else Is_Empty_Elmt_List
!                            (Discriminant_Constraint (Etype (Typ)))
! 
!                  --  The parent type defines new discriminants
! 
!                  or else
!                    (Is_Base_Type (Etype (Typ))
!                      and then Present (Discriminant_Specifications
!                                          (Parent (Etype (Typ)))))
!                then
!                   return Discriminant_Constraint (Typ);
! 
!                --  Otherwise, make a recursive call on the parent type
! 
!                else
!                   return Original_Discriminant_Constraint (Etype (Typ));
!                end if;
!             end Original_Discriminant_Constraint;
! 
!             --  Local variables
! 
!             DL1 : constant Elist_Id := Original_Discriminant_Constraint (T1);
!             DL2 : constant Elist_Id := Original_Discriminant_Constraint (T2);
  
              DA1 : Elmt_Id;
              DA2 : Elmt_Id;
*************** package body Sem_Eval is
*** 6163,6170 ****
           if Can_Never_Be_Null (T1) /= Can_Never_Be_Null (T2) then
              return False;
  
!          elsif Ekind_In (T1, E_Access_Subprogram_Type,
!                              E_Anonymous_Access_Subprogram_Type)
           then
              return
                Subtype_Conformant
--- 6872,6879 ----
           if Can_Never_Be_Null (T1) /= Can_Never_Be_Null (T2) then
              return False;
  
!          elsif Ekind (T1) in E_Access_Subprogram_Type
!                            | E_Anonymous_Access_Subprogram_Type
           then
              return
                Subtype_Conformant
*************** package body Sem_Eval is
*** 6768,6774 ****
  
              elsif Ekind (E) = E_Constant then
  
!                --  One case we can give a metter message is when we have a
                 --  string literal created by concatenating an aggregate with
                 --  an others expression.
  
--- 7477,7483 ----
  
              elsif Ekind (E) = E_Constant then
  
!                --  One case we can give a better message is when we have a
                 --  string literal created by concatenating an aggregate with
                 --  an others expression.
  
*************** package body Sem_Eval is
*** 6872,6880 ****
              --  Flag array cases
  
              elsif Is_Array_Type (E) then
!                if not Nam_In (Attribute_Name (N), Name_First,
!                                                   Name_Last,
!                                                   Name_Length)
                 then
                    Error_Msg_N
                      ("!static array attribute must be Length, First, or Last "
--- 7581,7588 ----
              --  Flag array cases
  
              elsif Is_Array_Type (E) then
!                if Attribute_Name (N)
!                     not in Name_First | Name_Last | Name_Length
                 then
                    Error_Msg_N
                      ("!static array attribute must be Length, First, or Last "
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_eval.ads gcc-11.1.0/gcc/ada/sem_eval.ads
*** gcc-10.3.0/gcc/ada/sem_eval.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_eval.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Eval is
*** 125,139 ****
     -----------------
  
     procedure Check_Expression_Against_Static_Predicate
!      (Expr : Node_Id;
!       Typ  : Entity_Id);
     --  Determine whether an arbitrary expression satisfies the static predicate
     --  of a type. The routine does nothing if Expr is not known at compile time
!    --  or Typ lacks a static predicate, otherwise it may emit a warning if the
!    --  expression is prohibited by the predicate. If the expression is a static
!    --  expression and it fails a predicate that was not explicitly stated to be
!    --  a dynamic predicate, then an additional warning is given, and the flag
!    --  Is_Static_Expression is reset on Expr.
  
     procedure Check_Non_Static_Context (N : Node_Id);
     --  Deals with the special check required for a static expression that
--- 125,142 ----
     -----------------
  
     procedure Check_Expression_Against_Static_Predicate
!      (Expr                    : Node_Id;
!       Typ                     : Entity_Id;
!       Static_Failure_Is_Error : Boolean := False);
     --  Determine whether an arbitrary expression satisfies the static predicate
     --  of a type. The routine does nothing if Expr is not known at compile time
!    --  or Typ lacks a static predicate; otherwise it may emit a warning if the
!    --  expression is prohibited by the predicate, or if Static_Failure_Is_Error
!    --  is True then an error will be flagged. If the expression is a static
!    --  expression, it fails a predicate that was not explicitly stated to be
!    --  a dynamic predicate, and Static_Failure_Is_Error is False, then an
!    --  additional warning is given, and the flag Is_Static_Expression is reset
!    --  on Expr.
  
     procedure Check_Non_Static_Context (N : Node_Id);
     --  Deals with the special check required for a static expression that
*************** package Sem_Eval is
*** 162,167 ****
--- 165,178 ----
     --  In the former case, if the target type, Ttyp is constrained, then a
     --  check is made to see if the string literal is of appropriate length.
  
+    function Checking_Potentially_Static_Expression return Boolean;
+    --  Returns True if the checking for potentially static expressions is
+    --  enabled; otherwise returns False.
+ 
+    procedure Set_Checking_Potentially_Static_Expression (Value : Boolean);
+    --  Enables checking for potentially static expressions if Value is True,
+    --  and disables such checking if Value is False.
+ 
     type Compare_Result is (LT, LE, EQ, GT, GE, NE, Unknown);
     subtype Compare_GE is Compare_Result range EQ .. GE;
     subtype Compare_LE is Compare_Result range LT .. EQ;
*************** package Sem_Eval is
*** 276,282 ****
     --  or character literals. In the latter two cases, the value returned is
     --  the Pos value in the relevant enumeration type. It can also be used for
     --  fixed-point values, in which case it returns the corresponding integer
!    --  value. It cannot be used for floating-point values.
  
     function Expr_Value_E (N : Node_Id) return Entity_Id;
     --  Returns the folded value of the expression. This function is called in
--- 287,295 ----
     --  or character literals. In the latter two cases, the value returned is
     --  the Pos value in the relevant enumeration type. It can also be used for
     --  fixed-point values, in which case it returns the corresponding integer
!    --  value, but it cannot be used for floating-point values. Finally, it can
!    --  also be used for the Null access value, as well as for the result of an
!    --  unchecked conversion of the aforementioned handled values.
  
     function Expr_Value_E (N : Node_Id) return Entity_Id;
     --  Returns the folded value of the expression. This function is called in
*************** package Sem_Eval is
*** 317,322 ****
--- 330,336 ----
     procedure Eval_Op_Not                 (N : Node_Id);
     procedure Eval_Real_Literal           (N : Node_Id);
     procedure Eval_Relational_Op          (N : Node_Id);
+    procedure Eval_Selected_Component     (N : Node_Id);
     procedure Eval_Shift                  (N : Node_Id);
     procedure Eval_Short_Circuit          (N : Node_Id);
     procedure Eval_Slice                  (N : Node_Id);
*************** package Sem_Eval is
*** 374,379 ****
--- 388,397 ----
     --  The call has no effect if Raises_Constraint_Error (N) is True, since
     --  there is no point in folding if we have an error.
  
+    procedure Fold (N : Node_Id);
+    --  Rewrite N with the relevant value if Compile_Time_Known_Value (N) is
+    --  True, otherwise a no-op.
+ 
     function Is_In_Range
       (N            : Node_Id;
        Typ          : Entity_Id;
*************** package Sem_Eval is
*** 414,421 ****
     --  for compile time evaluation purposes. Use Compile_Time_Known_Value
     --  instead (see section on "Compile-Time Known Values" above).
  
-    --  WARNING: There is a matching C declaration of this subprogram in fe.h
- 
     function Is_OK_Static_Range (N : Node_Id) return Boolean;
     --  Determines if range is static, as defined in RM 4.9(26), and also checks
     --  that neither bound of the range raises constraint error, thus ensuring
--- 432,437 ----
*************** package Sem_Eval is
*** 476,486 ****
     --  it cannot (because the value of Lo or Hi is not known at compile time)
     --  then it returns False.
  
     function Predicates_Match (T1, T2 : Entity_Id) return Boolean;
!    --  In Ada 2012, subtypes statically match if their static predicates
!    --  match as well. This function performs the required check that
!    --  predicates match. Separated out from Subtypes_Statically_Match so
!    --  that it can be used in specializing error messages.
  
     function Subtypes_Statically_Compatible
       (T1                      : Entity_Id;
--- 492,508 ----
     --  it cannot (because the value of Lo or Hi is not known at compile time)
     --  then it returns False.
  
+    function Predicates_Compatible (T1, T2 : Entity_Id) return Boolean;
+    --  In Ada 2012, subtypes are statically compatible if the predicates are
+    --  compatible as well. This function performs the required check that
+    --  predicates are compatible. Split from Subtypes_Statically_Compatible
+    --  so that it can be used in specializing error messages.
+ 
     function Predicates_Match (T1, T2 : Entity_Id) return Boolean;
!    --  In Ada 2012, subtypes statically match if their predicates match as
!    --  as well. This function performs the required check that predicates
!    --  match. Separated out from Subtypes_Statically_Match so that it can
!    --  be used in specializing error messages.
  
     function Subtypes_Statically_Compatible
       (T1                      : Entity_Id;
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_intr.adb gcc-11.1.0/gcc/ada/sem_intr.adb
*** gcc-10.3.0/gcc/ada/sem_intr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_intr.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sinfo;    use Sinfo;
*** 38,43 ****
--- 38,44 ----
  with Snames;   use Snames;
  with Stand;    use Stand;
  with Stringt;  use Stringt;
+ with Ttypes;   use Ttypes;
  with Uintp;    use Uintp;
  
  package body Sem_Intr is
*************** package body Sem_Intr is
*** 76,82 ****
  
     procedure Check_Exception_Function (E : Entity_Id; N : Node_Id) is
     begin
!       if not Ekind_In (E, E_Function, E_Generic_Function) then
           Errint
             ("intrinsic exception subprogram must be a function", E, N);
  
--- 77,83 ----
  
     procedure Check_Exception_Function (E : Entity_Id; N : Node_Id) is
     begin
!       if Ekind (E) not in E_Function | E_Generic_Function then
           Errint
             ("intrinsic exception subprogram must be a function", E, N);
  
*************** package body Sem_Intr is
*** 129,137 ****
        --  literal is legal even in Ada 83 mode, where such literals are
        --  not static.
  
!       if Nam_In (Cnam, Name_Import_Address,
!                        Name_Import_Largest_Value,
!                        Name_Import_Value)
        then
           if Etype (Arg1) = Any_Type
             or else Raises_Constraint_Error (Arg1)
--- 130,138 ----
        --  literal is legal even in Ada 83 mode, where such literals are
        --  not static.
  
!       if Cnam in Name_Import_Address
!                | Name_Import_Largest_Value
!                | Name_Import_Value
        then
           if Etype (Arg1) = Any_Type
             or else Raises_Constraint_Error (Arg1)
*************** package body Sem_Intr is
*** 190,202 ****
     begin
        --  Arithmetic operators
  
!       if Nam_In (Nam, Name_Op_Add, Name_Op_Subtract, Name_Op_Multiply,
!                       Name_Op_Divide, Name_Op_Rem, Name_Op_Mod, Name_Op_Abs)
        then
           T1 := Etype (First_Formal (E));
  
           if No (Next_Formal (First_Formal (E))) then
!             if Nam_In (Nam, Name_Op_Add, Name_Op_Subtract, Name_Op_Abs) then
                 T2 := T1;
  
              --  Previous error in declaration
--- 191,204 ----
     begin
        --  Arithmetic operators
  
!       if Nam in Name_Op_Add    | Name_Op_Subtract | Name_Op_Multiply |
!                 Name_Op_Divide | Name_Op_Rem      | Name_Op_Mod      |
!                 Name_Op_Abs
        then
           T1 := Etype (First_Formal (E));
  
           if No (Next_Formal (First_Formal (E))) then
!             if Nam in Name_Op_Add | Name_Op_Subtract | Name_Op_Abs then
                 T2 := T1;
  
              --  Previous error in declaration
*************** package body Sem_Intr is
*** 231,238 ****
  
        --  Comparison operators
  
!       elsif Nam_In (Nam, Name_Op_Eq, Name_Op_Ge, Name_Op_Gt, Name_Op_Le,
!                          Name_Op_Lt, Name_Op_Ne)
        then
           T1 := Etype (First_Formal (E));
  
--- 233,240 ----
  
        --  Comparison operators
  
!       elsif Nam in Name_Op_Eq | Name_Op_Ge | Name_Op_Gt | Name_Op_Le |
!                    Name_Op_Lt | Name_Op_Ne
        then
           T1 := Etype (First_Formal (E));
  
*************** package body Sem_Intr is
*** 327,334 ****
        --  Shift cases. We allow user specification of intrinsic shift operators
        --  for any numeric types.
  
!       elsif Nam_In (Nam, Name_Rotate_Left, Name_Rotate_Right, Name_Shift_Left,
!                          Name_Shift_Right, Name_Shift_Right_Arithmetic)
        then
           Check_Shift (E, N);
  
--- 329,336 ----
        --  Shift cases. We allow user specification of intrinsic shift operators
        --  for any numeric types.
  
!       elsif Nam in Name_Rotate_Left | Name_Rotate_Right | Name_Shift_Left |
!                    Name_Shift_Right | Name_Shift_Right_Arithmetic
        then
           Check_Shift (E, N);
  
*************** package body Sem_Intr is
*** 344,352 ****
  
        --  Exception functions
  
!       elsif Nam_In (Nam, Name_Exception_Information,
!                          Name_Exception_Message,
!                          Name_Exception_Name)
        then
           Check_Exception_Function (E, N);
  
--- 346,354 ----
  
        --  Exception functions
  
!       elsif Nam in Name_Exception_Information
!                  | Name_Exception_Message
!                  | Name_Exception_Name
        then
           Check_Exception_Function (E, N);
  
*************** package body Sem_Intr is
*** 357,369 ****
  
        --  Source_Location and navigation functions
  
!       elsif Nam_In (Nam, Name_File,
!                          Name_Line,
!                          Name_Source_Location,
!                          Name_Enclosing_Entity,
!                          Name_Compilation_ISO_Date,
!                          Name_Compilation_Date,
!                          Name_Compilation_Time)
        then
           null;
  
--- 359,371 ----
  
        --  Source_Location and navigation functions
  
!       elsif Nam in Name_File
!                  | Name_Line
!                  | Name_Source_Location
!                  | Name_Enclosing_Entity
!                  | Name_Compilation_ISO_Date
!                  | Name_Compilation_Date
!                  | Name_Compilation_Time
        then
           null;
  
*************** package body Sem_Intr is
*** 388,394 ****
        Ptyp2 : Node_Id;
  
     begin
!       if not Ekind_In (E, E_Function, E_Generic_Function) then
           Errint ("intrinsic shift subprogram must be a function", E, N);
           return;
        end if;
--- 390,396 ----
        Ptyp2 : Node_Id;
  
     begin
!       if Ekind (E) not in E_Function | E_Generic_Function then
           Errint ("intrinsic shift subprogram must be a function", E, N);
           return;
        end if;
*************** package body Sem_Intr is
*** 429,439 ****
        if Size /= 8  and then
           Size /= 16 and then
           Size /= 32 and then
!          Size /= 64
        then
!          Errint
!            ("first argument for shift must have size 8, 16, 32 or 64",
!             Ptyp1, N, Relaxed => True);
           return;
  
        elsif Non_Binary_Modulus (Typ1) then
--- 431,448 ----
        if Size /= 8  and then
           Size /= 16 and then
           Size /= 32 and then
!          Size /= 64 and then
!          Size /= System_Max_Integer_Size
        then
!          if System_Max_Integer_Size > 64 then
!             Errint
!               ("first argument for shift must have size 8, 16, 32, 64 or 128",
!                Ptyp1, N, Relaxed => True);
!          else
!             Errint
!               ("first argument for shift must have size 8, 16, 32 or 64",
!                Ptyp1, N, Relaxed => True);
!          end if;
           return;
  
        elsif Non_Binary_Modulus (Typ1) then
*************** package body Sem_Intr is
*** 448,457 ****
          and then Modulus (Typ1) /= Uint_2 ** 16
          and then Modulus (Typ1) /= Uint_2 ** 32
          and then Modulus (Typ1) /= Uint_2 ** 64
        then
!          Errint
!            ("modular type for shift must have modulus of 2'*'*8, "
!             & "2'*'*16, 2'*'*32, or 2'*'*64", Ptyp1, N, Relaxed => True);
  
        elsif Etype (Arg1) /= Etype (E) then
           Errint
--- 457,475 ----
          and then Modulus (Typ1) /= Uint_2 ** 16
          and then Modulus (Typ1) /= Uint_2 ** 32
          and then Modulus (Typ1) /= Uint_2 ** 64
+         and then Modulus (Typ1) /= Uint_2 ** System_Max_Binary_Modulus_Power
        then
!          if System_Max_Binary_Modulus_Power > 64 then
!             Errint
!               ("modular type for shift must have modulus of 2'*'*8, "
!                & "2'*'*16, 2'*'*32, 2'*'*64 or 2'*'*128", Ptyp1, N,
!                Relaxed => True);
!          else
!             Errint
!               ("modular type for shift must have modulus of 2'*'*8, "
!                & "2'*'*16, 2'*'*32, or 2'*'*64", Ptyp1, N,
!                Relaxed => True);
!          end if;
  
        elsif Etype (Arg1) /= Etype (E) then
           Errint
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_intr.ads gcc-11.1.0/gcc/ada/sem_intr.ads
*** gcc-10.3.0/gcc/ada/sem_intr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_intr.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_mech.adb gcc-11.1.0/gcc/ada/sem_mech.adb
*** gcc-10.3.0/gcc/ada/sem_mech.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_mech.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Mech is
*** 181,191 ****
                 -- C --
                 -------
  
!                --  Note: Assembler, C++, Stdcall also use C conventions
  
                 when Convention_Assembler
!                   | Convention_C
!                   | Convention_CPP
                    | Convention_Stdcall
                 =>
                    --  The following values are passed by copy
--- 181,190 ----
                 -- C --
                 -------
  
!                --  Note: Assembler and Stdcall also use C conventions
  
                 when Convention_Assembler
!                   | Convention_C_Family
                    | Convention_Stdcall
                 =>
                    --  The following values are passed by copy
*************** package body Sem_Mech is
*** 231,238 ****
                       --  OUT and IN OUT parameters of record types are passed
                       --  by reference regardless of pragmas (RM B.3 (69/2)).
  
!                      elsif Ekind_In (Formal, E_Out_Parameter,
!                                              E_In_Out_Parameter)
                       then
                          Set_Mechanism (Formal, By_Reference);
  
--- 230,237 ----
                       --  OUT and IN OUT parameters of record types are passed
                       --  by reference regardless of pragmas (RM B.3 (69/2)).
  
!                      elsif Ekind (Formal) in
!                              E_Out_Parameter | E_In_Out_Parameter
                       then
                          Set_Mechanism (Formal, By_Reference);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_mech.ads gcc-11.1.0/gcc/ada/sem_mech.ads
*** gcc-10.3.0/gcc/ada/sem_mech.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_mech.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_prag.adb gcc-11.1.0/gcc/ada/sem_prag.adb
*** gcc-10.3.0/gcc/ada/sem_prag.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_prag.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Exp_Util;  use Exp_Util;
*** 44,49 ****
--- 44,50 ----
  with Expander;  use Expander;
  with Freeze;    use Freeze;
  with Ghost;     use Ghost;
+ with GNAT_CUDA; use GNAT_CUDA;
  with Gnatvsn;   use Gnatvsn;
  with Lib;       use Lib;
  with Lib.Writ;  use Lib.Writ;
*************** package body Sem_Prag is
*** 465,471 ****
              if Nkind (Case_Guard) = N_Others_Choice then
                 if Others_Seen then
                    Error_Msg_N
!                     ("only one others choice allowed in contract cases",
                       Case_Guard);
                 else
                    Others_Seen := True;
--- 466,472 ----
              if Nkind (Case_Guard) = N_Others_Choice then
                 if Others_Seen then
                    Error_Msg_N
!                     ("only one OTHERS choice allowed in contract cases",
                       Case_Guard);
                 else
                    Others_Seen := True;
*************** package body Sem_Prag is
*** 473,479 ****
  
              elsif Others_Seen then
                 Error_Msg_N
!                  ("others must be the last choice in contract cases", N);
              end if;
  
              --  Preanalyze the case guard and consequence
--- 474,480 ----
  
              elsif Others_Seen then
                 Error_Msg_N
!                  ("OTHERS must be the last choice in contract cases", N);
              end if;
  
              --  Preanalyze the case guard and consequence
*************** package body Sem_Prag is
*** 543,554 ****
        Set_Ghost_Mode (N);
  
        --  Single and multiple contract cases must appear in aggregate form. If
!       --  this is not the case, then either the parser of the analysis of the
!       --  pragma failed to produce an aggregate.
  
!       pragma Assert (Nkind (CCases) = N_Aggregate);
  
!       if Present (Component_Associations (CCases)) then
  
           --  Ensure that the formal parameters are visible when analyzing all
           --  clauses. This falls out of the general rule of aspects pertaining
--- 544,574 ----
        Set_Ghost_Mode (N);
  
        --  Single and multiple contract cases must appear in aggregate form. If
!       --  this is not the case, then either the parser or the analysis of the
!       --  pragma failed to produce an aggregate, e.g. when the contract is
!       --  "null" or a "(null record)".
  
!       pragma Assert
!         (if Nkind (CCases) = N_Aggregate
!          then Null_Record_Present (CCases)
!            xor (Present (Component_Associations (CCases))
!                   or
!                 Present (Expressions (CCases)))
!          else Nkind (CCases) = N_Null);
  
!       --  Only CASE_GUARD => CONSEQUENCE clauses are allowed
! 
!       if Nkind (CCases) = N_Aggregate
!         and then Present (Component_Associations (CCases))
!         and then No (Expressions (CCases))
!       then
! 
!          --  Check that the expression is a proper aggregate (no parentheses)
! 
!          if Paren_Count (CCases) /= 0 then
!             Error_Msg -- CODEFIX
!               ("redundant parentheses", First_Sloc (CCases));
!          end if;
  
           --  Ensure that the formal parameters are visible when analyzing all
           --  clauses. This falls out of the general rule of aspects pertaining
*************** package body Sem_Prag is
*** 583,589 ****
        --  Otherwise the pragma is illegal
  
        else
!          Error_Msg_N ("wrong syntax for constract cases", N);
        end if;
  
        Set_Is_Analyzed_Pragma (N);
--- 603,609 ----
        --  Otherwise the pragma is illegal
  
        else
!          Error_Msg_N ("wrong syntax for contract cases", N);
        end if;
  
        Set_Is_Analyzed_Pragma (N);
*************** package body Sem_Prag is
*** 697,704 ****
           elsif Ekind (Item_Id) = E_Constant then
              Add_Str_To_Name_Buffer ("constant");
  
!          elsif Ekind_In (Item_Id, E_Generic_In_Out_Parameter,
!                                   E_Generic_In_Parameter)
           then
              Add_Str_To_Name_Buffer ("generic parameter");
  
--- 717,724 ----
           elsif Ekind (Item_Id) = E_Constant then
              Add_Str_To_Name_Buffer ("constant");
  
!          elsif Ekind (Item_Id) in
!                  E_Generic_In_Out_Parameter | E_Generic_In_Parameter
           then
              Add_Str_To_Name_Buffer ("generic parameter");
  
*************** package body Sem_Prag is
*** 972,1003 ****
  
                    --  Constants
  
!                   if Ekind_In (Item_Id, E_Constant, E_Loop_Parameter)
                        or else
  
                      --  Current instances of concurrent types
  
!                     Ekind_In (Item_Id, E_Protected_Type, E_Task_Type)
                        or else
  
                      --  Formal parameters
  
!                     Ekind_In (Item_Id, E_Generic_In_Out_Parameter,
!                                        E_Generic_In_Parameter,
!                                        E_In_Parameter,
!                                        E_In_Out_Parameter,
!                                        E_Out_Parameter)
                        or else
  
                      --  States, variables
  
!                     Ekind_In (Item_Id, E_Abstract_State, E_Variable)
                    then
                       --  A [generic] function is not allowed to have Output
                       --  items in its dependency relations. Note that "null"
                       --  and attribute 'Result are still valid items.
  
!                      if Ekind_In (Spec_Id, E_Function, E_Generic_Function)
                         and then not Is_Input
                       then
                          SPARK_Msg_N
--- 992,1023 ----
  
                    --  Constants
  
!                   if Ekind (Item_Id) in E_Constant | E_Loop_Parameter
                        or else
  
                      --  Current instances of concurrent types
  
!                     Ekind (Item_Id) in E_Protected_Type | E_Task_Type
                        or else
  
                      --  Formal parameters
  
!                     Ekind (Item_Id) in E_Generic_In_Out_Parameter
!                                      | E_Generic_In_Parameter
!                                      | E_In_Parameter
!                                      | E_In_Out_Parameter
!                                      | E_Out_Parameter
                        or else
  
                      --  States, variables
  
!                     Ekind (Item_Id) in E_Abstract_State | E_Variable
                    then
                       --  A [generic] function is not allowed to have Output
                       --  items in its dependency relations. Note that "null"
                       --  and attribute 'Result are still valid items.
  
!                      if Ekind (Spec_Id) in E_Function | E_Generic_Function
                         and then not Is_Input
                       then
                          SPARK_Msg_N
*************** package body Sem_Prag is
*** 1009,1015 ****
                       --  they behave as objects in the context of pragma
                       --  [Refined_]Depends.
  
!                      if Ekind_In (Item_Id, E_Protected_Type, E_Task_Type) then
  
                          --  This use is legal as long as the concurrent type is
                          --  the current instance of an enclosing type.
--- 1029,1035 ----
                       --  they behave as objects in the context of pragma
                       --  [Refined_]Depends.
  
!                      if Ekind (Item_Id) in E_Protected_Type | E_Task_Type then
  
                          --  This use is legal as long as the concurrent type is
                          --  the current instance of an enclosing type.
*************** package body Sem_Prag is
*** 1144,1152 ****
                             Ref    => Item);
                       end if;
  
!                      if Ekind_In (Item_Id, E_Abstract_State,
!                                            E_Constant,
!                                            E_Variable)
                         and then Present (Encapsulating_State (Item_Id))
                       then
                          Append_New_Elmt (Item_Id, Constits_Seen);
--- 1164,1172 ----
                             Ref    => Item);
                       end if;
  
!                      if Ekind (Item_Id) in E_Abstract_State
!                                          | E_Constant
!                                          | E_Variable
                         and then Present (Encapsulating_State (Item_Id))
                       then
                          Append_New_Elmt (Item_Id, Constits_Seen);
*************** package body Sem_Prag is
*** 1222,1228 ****
  
        procedure Check_Function_Return is
        begin
!          if Ekind_In (Spec_Id, E_Function, E_Generic_Function)
             and then not Result_Seen
           then
              SPARK_Msg_NE
--- 1242,1248 ----
  
        procedure Check_Function_Return is
        begin
!          if Ekind (Spec_Id) in E_Function | E_Generic_Function
             and then not Result_Seen
           then
              SPARK_Msg_NE
*************** package body Sem_Prag is
*** 1262,1278 ****
             (Item_Is_Input  : out Boolean;
              Item_Is_Output : out Boolean)
           is
!             --  A constant or IN parameter of access type should be handled
!             --  like a variable, as the underlying memory pointed-to can be
!             --  modified. Use Adjusted_Kind to do this adjustment.
  
              Adjusted_Kind : Entity_Kind := Ekind (Item_Id);
  
           begin
!             if Ekind_In (Item_Id, E_Constant,
!                                   E_Generic_In_Parameter,
!                                   E_In_Parameter)
!               and then Is_Access_Type (Etype (Item_Id))
              then
                 Adjusted_Kind := E_Variable;
              end if;
--- 1282,1298 ----
             (Item_Is_Input  : out Boolean;
              Item_Is_Output : out Boolean)
           is
!             --  A constant or IN parameter of access-to-variable type should be
!             --  handled like a variable, as the underlying memory pointed-to
!             --  can be modified. Use Adjusted_Kind to do this adjustment.
  
              Adjusted_Kind : Entity_Kind := Ekind (Item_Id);
  
           begin
!             if Ekind (Item_Id) in E_Constant
!                                 | E_Generic_In_Parameter
!                                 | E_In_Parameter
!               and then Is_Access_Variable (Etype (Item_Id))
              then
                 Adjusted_Kind := E_Variable;
              end if;
*************** package body Sem_Prag is
*** 1970,1976 ****
           --  clause as this will lead to misleading errors.
  
           if Has_Extra_Parentheses (Deps) then
!             return;
           end if;
  
           if Present (Component_Associations (Deps)) then
--- 1990,1996 ----
           --  clause as this will lead to misleading errors.
  
           if Has_Extra_Parentheses (Deps) then
!             goto Leave;
           end if;
  
           if Present (Component_Associations (Deps)) then
*************** package body Sem_Prag is
*** 2001,2006 ****
--- 2021,2031 ----
                 Push_Scope (Spec_Id);
  
                 if Ekind (Spec_Id) = E_Task_Type then
+ 
+                   --  Task discriminants cannot appear in the [Refined_]Depends
+                   --  contract, but must be present for the analysis so that we
+                   --  can reject them with an informative error message.
+ 
                    if Has_Discriminants (Spec_Id) then
                       Install_Discriminants (Spec_Id);
                    end if;
*************** package body Sem_Prag is
*** 2031,2041 ****
  
                 --  Do not normalize a clause if errors were detected (count
                 --  of Serious_Errors has increased) because the inputs and/or
!                --  outputs may denote illegal items. Normalization is disabled
!                --  in ASIS mode as it alters the tree by introducing new nodes
!                --  similar to expansion.
  
!                if Serious_Errors_Detected = Errors and then not ASIS_Mode then
                    Normalize_Clause (Clause);
                 end if;
  
--- 2056,2064 ----
  
                 --  Do not normalize a clause if errors were detected (count
                 --  of Serious_Errors has increased) because the inputs and/or
!                --  outputs may denote illegal items.
  
!                if Serious_Errors_Detected = Errors then
                    Normalize_Clause (Clause);
                 end if;
  
*************** package body Sem_Prag is
*** 2058,2064 ****
  
           else
              Error_Msg_N ("malformed dependency relation", Deps);
!             return;
           end if;
  
        --  The top level dependency relation is malformed. This is a syntax
--- 2081,2087 ----
  
           else
              Error_Msg_N ("malformed dependency relation", Deps);
!             goto Leave;
           end if;
  
        --  The top level dependency relation is malformed. This is a syntax
*************** package body Sem_Prag is
*** 2097,2108 ****
        Expr     : Node_Id;
  
     begin
!       Expr_Val := False;
! 
!       --  Do not analyze the pragma multiple times
  
        if Is_Analyzed_Pragma (N) then
!          return;
        end if;
  
        Error_Msg_Name_1 := Pragma_Name (N);
--- 2120,2130 ----
        Expr     : Node_Id;
  
     begin
!       --  Do not analyze the pragma multiple times, but set the output
!       --  parameter to the argument specified by the pragma.
  
        if Is_Analyzed_Pragma (N) then
!          goto Leave;
        end if;
  
        Error_Msg_Name_1 := Pragma_Name (N);
*************** package body Sem_Prag is
*** 2119,2131 ****
        if Prag_Id /= Pragma_No_Caching
          and then not Is_Effectively_Volatile (Obj_Id)
        then
!          if No_Caching_Enabled (Obj_Id) then
              SPARK_Msg_N
                ("illegal combination of external property % and property "
                 & """No_Caching"" (SPARK RM 7.1.2(6))", N);
           else
              SPARK_Msg_N
!               ("external property % must apply to a volatile object", N);
           end if;
  
        --  Pragma No_Caching should only apply to volatile variables of
--- 2141,2156 ----
        if Prag_Id /= Pragma_No_Caching
          and then not Is_Effectively_Volatile (Obj_Id)
        then
!          if Ekind (Obj_Id) = E_Variable
!            and then No_Caching_Enabled (Obj_Id)
!          then
              SPARK_Msg_N
                ("illegal combination of external property % and property "
                 & """No_Caching"" (SPARK RM 7.1.2(6))", N);
           else
              SPARK_Msg_N
!               ("external property % must apply to a volatile type or object",
!                N);
           end if;
  
        --  Pragma No_Caching should only apply to volatile variables of
*************** package body Sem_Prag is
*** 2140,2145 ****
--- 2165,2174 ----
           end if;
        end if;
  
+       Set_Is_Analyzed_Pragma (N);
+ 
+       <<Leave>>
+ 
        --  Ensure that the Boolean expression (if present) is static. A missing
        --  argument defaults the value to True (SPARK RM 7.1.2(5)).
  
*************** package body Sem_Prag is
*** 2153,2159 ****
           end if;
        end if;
  
-       Set_Is_Analyzed_Pragma (N);
     end Analyze_External_Property_In_Decl_Part;
  
     ---------------------------------
--- 2182,2187 ----
*************** package body Sem_Prag is
*** 2274,2280 ****
                 --  the current instance of an enclosing protected or task type
                 --  (SPARK RM 6.1.4).
  
!                elsif Ekind_In (Item_Id, E_Protected_Type, E_Task_Type) then
                    if Is_CCT_Instance (Item_Id, Spec_Id) then
  
                       --  Pragma [Refined_]Global associated with a protected
--- 2302,2308 ----
                 --  the current instance of an enclosing protected or task type
                 --  (SPARK RM 6.1.4).
  
!                elsif Ekind (Item_Id) in E_Protected_Type | E_Task_Type then
                    if Is_CCT_Instance (Item_Id, Spec_Id) then
  
                       --  Pragma [Refined_]Global associated with a protected
*************** package body Sem_Prag is
*** 2361,2378 ****
                 --  The only legal references are those to abstract states,
                 --  objects and various kinds of constants (SPARK RM 6.1.4(4)).
  
!                elsif not Ekind_In (Item_Id, E_Abstract_State,
!                                             E_Constant,
!                                             E_Loop_Parameter,
!                                             E_Variable)
                 then
                    SPARK_Msg_N
                      ("global item must denote object, state or current "
                       & "instance of concurrent type", Item);
  
!                   if Ekind (Item_Id) in Named_Kind then
                       SPARK_Msg_NE
!                        ("\named number & is not an object", Item, Item);
                    end if;
  
                    return;
--- 2389,2406 ----
                 --  The only legal references are those to abstract states,
                 --  objects and various kinds of constants (SPARK RM 6.1.4(4)).
  
!                elsif Ekind (Item_Id) not in E_Abstract_State
!                                           | E_Constant
!                                           | E_Loop_Parameter
!                                           | E_Variable
                 then
                    SPARK_Msg_N
                      ("global item must denote object, state or current "
                       & "instance of concurrent type", Item);
  
!                   if Is_Named_Number (Item_Id) then
                       SPARK_Msg_NE
!                        ("\named number & is not an object", Item, Item_Id);
                    end if;
  
                    return;
*************** package body Sem_Prag is
*** 2408,2414 ****
                    --  nonvolatile function (SPARK RM 7.1.3(8)).
  
                    elsif Is_External_State (Item_Id)
!                     and then Ekind_In (Spec_Id, E_Function, E_Generic_Function)
                      and then not Is_Volatile_Function (Spec_Id)
                    then
                       SPARK_Msg_NE
--- 2436,2442 ----
                    --  nonvolatile function (SPARK RM 7.1.3(8)).
  
                    elsif Is_External_State (Item_Id)
!                     and then Ekind (Spec_Id) in E_Function | E_Generic_Function
                      and then not Is_Volatile_Function (Spec_Id)
                    then
                       SPARK_Msg_NE
*************** package body Sem_Prag is
*** 2435,2441 ****
                    --  Unless it is of an access type, a constant is a read-only
                    --  item, therefore it cannot act as an output.
  
!                   if Nam_In (Global_Mode, Name_In_Out, Name_Output) then
                       SPARK_Msg_NE
                         ("constant & cannot act as output", Item, Item_Id);
                       return;
--- 2463,2469 ----
                    --  Unless it is of an access type, a constant is a read-only
                    --  item, therefore it cannot act as an output.
  
!                   if Global_Mode in Name_In_Out | Name_Output then
                       SPARK_Msg_NE
                         ("constant & cannot act as output", Item, Item_Id);
                       return;
*************** package body Sem_Prag is
*** 2448,2454 ****
                    --  A loop parameter is a read-only item, therefore it cannot
                    --  act as an output.
  
!                   if Nam_In (Global_Mode, Name_In_Out, Name_Output) then
                       SPARK_Msg_NE
                         ("loop parameter & cannot act as output",
                          Item, Item_Id);
--- 2476,2482 ----
                    --  A loop parameter is a read-only item, therefore it cannot
                    --  act as an output.
  
!                   if Global_Mode in Name_In_Out | Name_Output then
                       SPARK_Msg_NE
                         ("loop parameter & cannot act as output",
                          Item, Item_Id);
*************** package body Sem_Prag is
*** 2461,2472 ****
  
                 elsif SPARK_Mode = On
                   and then Ekind (Item_Id) = E_Variable
!                  and then Is_Effectively_Volatile (Item_Id)
                 then
!                   --  An effectively volatile object cannot appear as a global
!                   --  item of a nonvolatile function (SPARK RM 7.1.3(8)).
  
!                   if Ekind_In (Spec_Id, E_Function, E_Generic_Function)
                      and then not Is_Volatile_Function (Spec_Id)
                    then
                       Error_Msg_NE
--- 2489,2512 ----
  
                 elsif SPARK_Mode = On
                   and then Ekind (Item_Id) = E_Variable
!                  and then Is_Effectively_Volatile_For_Reading (Item_Id)
                 then
!                   --  The current instance of a protected unit is not an
!                   --  effectively volatile object, unless the protected unit
!                   --  is already volatile for another reason (SPARK RM 7.1.2).
  
!                   if Is_Single_Protected_Object (Item_Id)
!                     and then Is_CCT_Instance (Etype (Item_Id), Spec_Id)
!                     and then not Is_Effectively_Volatile_For_Reading
!                       (Item_Id, Ignore_Protected => True)
!                   then
!                      null;
! 
!                   --  An effectively volatile object for reading cannot appear
!                   --  as a global item of a nonvolatile function (SPARK RM
!                   --  7.1.3(8)).
! 
!                   elsif Ekind (Spec_Id) in E_Function | E_Generic_Function
                      and then not Is_Volatile_Function (Spec_Id)
                    then
                       Error_Msg_NE
*************** package body Sem_Prag is
*** 2509,2515 ****
              --  Verify that an output does not appear as an input in an
              --  enclosing subprogram.
  
!             if Nam_In (Global_Mode, Name_In_Out, Name_Output) then
                 Check_Mode_Restriction_In_Enclosing_Context (Item, Item_Id);
              end if;
  
--- 2549,2555 ----
              --  Verify that an output does not appear as an input in an
              --  enclosing subprogram.
  
!             if Global_Mode in Name_In_Out | Name_Output then
                 Check_Mode_Restriction_In_Enclosing_Context (Item, Item_Id);
              end if;
  
*************** package body Sem_Prag is
*** 2540,2546 ****
                       Ref    => Item);
                 end if;
  
!                if Ekind_In (Item_Id, E_Abstract_State, E_Constant, E_Variable)
                   and then Present (Encapsulating_State (Item_Id))
                 then
                    Append_New_Elmt (Item_Id, Constits_Seen);
--- 2580,2586 ----
                       Ref    => Item);
                 end if;
  
!                if Ekind (Item_Id) in E_Abstract_State | E_Constant | E_Variable
                   and then Present (Encapsulating_State (Item_Id))
                 then
                    Append_New_Elmt (Item_Id, Constits_Seen);
*************** package body Sem_Prag is
*** 2644,2650 ****
  
           procedure Check_Mode_Restriction_In_Function (Mode : Node_Id) is
           begin
!             if Ekind_In (Spec_Id, E_Function, E_Generic_Function) then
                 SPARK_Msg_N
                   ("global mode & is not applicable to functions", Mode);
              end if;
--- 2684,2690 ----
  
           procedure Check_Mode_Restriction_In_Function (Mode : Node_Id) is
           begin
!             if Ekind (Spec_Id) in E_Function | E_Generic_Function then
                 SPARK_Msg_N
                   ("global mode & is not applicable to functions", Mode);
              end if;
*************** package body Sem_Prag is
*** 2664,2672 ****
  
           --  Single global item declaration
  
!          elsif Nkind_In (List, N_Expanded_Name,
!                                N_Identifier,
!                                N_Selected_Component)
           then
              Analyze_Global_Item (List, Global_Mode);
  
--- 2704,2712 ----
  
           --  Single global item declaration
  
!          elsif Nkind (List) in N_Expanded_Name
!                              | N_Identifier
!                              | N_Selected_Component
           then
              Analyze_Global_Item (List, Global_Mode);
  
*************** package body Sem_Prag is
*** 2792,2797 ****
--- 2832,2842 ----
              Push_Scope (Spec_Id);
  
              if Ekind (Spec_Id) = E_Task_Type then
+ 
+                --  Task discriminants cannot appear in the [Refined_]Global
+                --  contract, but must be present for the analysis so that we
+                --  can reject them with an informative error message.
+ 
                 if Has_Discriminants (Spec_Id) then
                    Install_Discriminants (Spec_Id);
                 end if;
*************** package body Sem_Prag is
*** 2897,2903 ****
        --  Verify the legality of a single initialization item followed by a
        --  list of input items.
  
!       procedure Collect_States_And_Objects;
        --  Inspect the visible declarations of the related package and gather
        --  the entities of all abstract states and objects in States_And_Objs.
  
--- 2942,2948 ----
        --  Verify the legality of a single initialization item followed by a
        --  list of input items.
  
!       procedure Collect_States_And_Objects (Pack_Decl : Node_Id);
        --  Inspect the visible declarations of the related package and gather
        --  the entities of all abstract states and objects in States_And_Objs.
  
*************** package body Sem_Prag is
*** 2916,2924 ****
              Item_Id := Entity_Of (Item);
  
              if Present (Item_Id)
!               and then Ekind_In (Item_Id, E_Abstract_State,
!                                           E_Constant,
!                                           E_Variable)
              then
                 --  When the initialization item is undefined, it appears as
                 --  Any_Id. Do not continue with the analysis of the item.
--- 2961,2968 ----
              Item_Id := Entity_Of (Item);
  
              if Present (Item_Id)
!               and then Ekind (Item_Id) in
!                          E_Abstract_State | E_Constant | E_Variable
              then
                 --  When the initialization item is undefined, it appears as
                 --  Any_Id. Do not continue with the analysis of the item.
*************** package body Sem_Prag is
*** 3028,3043 ****
                    Input_Id := Entity_Of (Input);
  
                    if Present (Input_Id)
!                     and then Ekind_In (Input_Id, E_Abstract_State,
!                                                  E_Constant,
!                                                  E_Generic_In_Out_Parameter,
!                                                  E_Generic_In_Parameter,
!                                                  E_In_Parameter,
!                                                  E_In_Out_Parameter,
!                                                  E_Out_Parameter,
!                                                  E_Protected_Type,
!                                                  E_Task_Type,
!                                                  E_Variable)
                    then
                       --  The input cannot denote states or objects declared
                       --  within the related package (SPARK RM 7.1.5(4)).
--- 3072,3087 ----
                    Input_Id := Entity_Of (Input);
  
                    if Present (Input_Id)
!                     and then Ekind (Input_Id) in E_Abstract_State
!                                                | E_Constant
!                                                | E_Generic_In_Out_Parameter
!                                                | E_Generic_In_Parameter
!                                                | E_In_Parameter
!                                                | E_In_Out_Parameter
!                                                | E_Out_Parameter
!                                                | E_Protected_Type
!                                                | E_Task_Type
!                                                | E_Variable
                    then
                       --  The input cannot denote states or objects declared
                       --  within the related package (SPARK RM 7.1.5(4)).
*************** package body Sem_Prag is
*** 3050,3061 ****
                          --  it is allowed for an initialization item to depend
                          --  on an input item.
  
!                         if Ekind_In (Input_Id, E_Generic_In_Out_Parameter,
!                                                E_Generic_In_Parameter)
                          then
                             null;
  
!                         elsif Ekind_In (Input_Id, E_Constant, E_Variable)
                            and then Present (Corresponding_Generic_Association
                                       (Declaration_Node (Input_Id)))
                          then
--- 3094,3105 ----
                          --  it is allowed for an initialization item to depend
                          --  on an input item.
  
!                         if Ekind (Input_Id) in E_Generic_In_Out_Parameter
!                                              | E_Generic_In_Parameter
                          then
                             null;
  
!                         elsif Ekind (Input_Id) in E_Constant | E_Variable
                            and then Present (Corresponding_Generic_Association
                                       (Declaration_Node (Input_Id)))
                          then
*************** package body Sem_Prag is
*** 3087,3095 ****
                          Append_New_Elmt (Input_Id, States_Seen);
                       end if;
  
!                      if Ekind_In (Input_Id, E_Abstract_State,
!                                             E_Constant,
!                                             E_Variable)
                         and then Present (Encapsulating_State (Input_Id))
                       then
                          Append_New_Elmt (Input_Id, Constits_Seen);
--- 3131,3139 ----
                          Append_New_Elmt (Input_Id, States_Seen);
                       end if;
  
!                      if Ekind (Input_Id) in E_Abstract_State
!                                           | E_Constant
!                                           | E_Variable
                         and then Present (Encapsulating_State (Input_Id))
                       then
                          Append_New_Elmt (Input_Id, Constits_Seen);
*************** package body Sem_Prag is
*** 3166,3180 ****
        -- Collect_States_And_Objects --
        --------------------------------
  
!       procedure Collect_States_And_Objects is
!          Pack_Spec : constant Node_Id := Specification (Pack_Decl);
!          Decl      : Node_Id;
  
        begin
           --  Collect the abstract states defined in the package (if any)
  
!          if Present (Abstract_States (Pack_Id)) then
!             States_And_Objs := New_Copy_Elist (Abstract_States (Pack_Id));
           end if;
  
           --  Collect all objects that appear in the visible declarations of the
--- 3210,3230 ----
        -- Collect_States_And_Objects --
        --------------------------------
  
!       procedure Collect_States_And_Objects (Pack_Decl : Node_Id) is
!          Pack_Spec  : constant Node_Id := Specification (Pack_Decl);
!          Pack_Id    : constant Entity_Id := Defining_Entity (Pack_Decl);
!          Decl       : Node_Id;
!          State_Elmt : Elmt_Id;
  
        begin
           --  Collect the abstract states defined in the package (if any)
  
!          if Has_Non_Null_Abstract_State (Pack_Id) then
!             State_Elmt := First_Elmt (Abstract_States (Pack_Id));
!             while Present (State_Elmt) loop
!                Append_New_Elmt (Node (State_Elmt), States_And_Objs);
!                Next_Elmt (State_Elmt);
!             end loop;
           end if;
  
           --  Collect all objects that appear in the visible declarations of the
*************** package body Sem_Prag is
*** 3184,3194 ****
              Decl := First (Visible_Declarations (Pack_Spec));
              while Present (Decl) loop
                 if Comes_From_Source (Decl)
!                  and then Nkind_In (Decl, N_Object_Declaration,
!                                           N_Object_Renaming_Declaration)
                 then
                    Append_New_Elmt (Defining_Entity (Decl), States_And_Objs);
  
                 elsif Is_Single_Concurrent_Type_Declaration (Decl) then
                    Append_New_Elmt
                      (Anonymous_Object (Defining_Entity (Decl)),
--- 3234,3247 ----
              Decl := First (Visible_Declarations (Pack_Spec));
              while Present (Decl) loop
                 if Comes_From_Source (Decl)
!                  and then Nkind (Decl) in N_Object_Declaration
!                                         | N_Object_Renaming_Declaration
                 then
                    Append_New_Elmt (Defining_Entity (Decl), States_And_Objs);
  
+                elsif Nkind (Decl) = N_Package_Declaration then
+                   Collect_States_And_Objects (Decl);
+ 
                 elsif Is_Single_Concurrent_Type_Declaration (Decl) then
                    Append_New_Elmt
                      (Anonymous_Object (Defining_Entity (Decl)),
*************** package body Sem_Prag is
*** 3228,3234 ****
  
        --  Initialize the various lists used during analysis
  
!       Collect_States_And_Objects;
  
        if Present (Expressions (Inits)) then
           Init := First (Expressions (Inits));
--- 3281,3287 ----
  
        --  Initialize the various lists used during analysis
  
!       Collect_States_And_Objects (Pack_Decl);
  
        if Present (Expressions (Inits)) then
           Init := First (Expressions (Inits));
*************** package body Sem_Prag is
*** 3488,3494 ****
           --  Only abstract states and variables can act as constituents of an
           --  encapsulating single concurrent type.
  
!          if Ekind_In (Item_Id, E_Abstract_State, E_Variable) then
              null;
  
           --  The constituent is a constant
--- 3541,3547 ----
           --  Only abstract states and variables can act as constituents of an
           --  encapsulating single concurrent type.
  
!          if Ekind (Item_Id) in E_Abstract_State | E_Variable then
              null;
  
           --  The constituent is a constant
*************** package body Sem_Prag is
*** 3531,3539 ****
           --  the single concurrent type (SPARK RM 9(3)).
  
           if Item_Context = Encap_Context then
!             if Nkind_In (Item_Context, N_Package_Specification,
!                                        N_Protected_Definition,
!                                        N_Task_Definition)
              then
                 Prv_Decls := Private_Declarations (Item_Context);
                 Vis_Decls := Visible_Declarations (Item_Context);
--- 3584,3592 ----
           --  the single concurrent type (SPARK RM 9(3)).
  
           if Item_Context = Encap_Context then
!             if Nkind (Item_Context) in N_Package_Specification
!                                      | N_Protected_Definition
!                                      | N_Task_Definition
              then
                 Prv_Decls := Private_Declarations (Item_Context);
                 Vis_Decls := Visible_Declarations (Item_Context);
*************** package body Sem_Prag is
*** 3618,3626 ****
        Encap_Id := Empty;
        Legal    := False;
  
!       if Nkind_In (Encap, N_Expanded_Name,
!                           N_Identifier,
!                           N_Selected_Component)
        then
           Analyze       (Encap);
           Resolve_State (Encap);
--- 3671,3678 ----
        Encap_Id := Empty;
        Legal    := False;
  
!       if Nkind (Encap) in
!            N_Expanded_Name | N_Identifier | N_Selected_Component
        then
           Analyze       (Encap);
           Resolve_State (Encap);
*************** package body Sem_Prag is
*** 3769,3775 ****
        Arg2 : Node_Id;
        Arg3 : Node_Id;
        Arg4 : Node_Id;
!       --  First four pragma arguments (pragma argument association nodes, or
        --  Empty if the corresponding argument does not exist).
  
        type Name_List is array (Natural range <>) of Name_Id;
--- 3821,3828 ----
        Arg2 : Node_Id;
        Arg3 : Node_Id;
        Arg4 : Node_Id;
!       Arg5 : Node_Id;
!       --  First five pragma arguments (pragma argument association nodes, or
        --  Empty if the corresponding argument does not exist).
  
        type Name_List is array (Natural range <>) of Name_Id;
*************** package body Sem_Prag is
*** 3780,3791 ****
        -- Local Subprograms --
        -----------------------
  
-       function Acc_First (N : Node_Id) return Node_Id;
-       --  Helper function to iterate over arguments given to OpenAcc pragmas
- 
-       function Acc_Next (N : Node_Id) return Node_Id;
-       --  Helper function to iterate over arguments given to OpenAcc pragmas
- 
        procedure Ada_2005_Pragma;
        --  Called for pragmas defined in Ada 2005, that are not in Ada 95. In
        --  Ada 95 mode, these are implementation defined pragmas, so should be
--- 3833,3838 ----
*************** package body Sem_Prag is
*** 3927,3936 ****
        procedure Check_At_Most_N_Arguments (N : Nat);
        --  Check there are no more than N arguments present
  
-       procedure Check_Atomic_VFA (E : Entity_Id; VFA : Boolean);
-       --  Apply legality checks to type or object E subject to an Atomic aspect
-       --  in Ada 2020 (RM C.6(13)) or to a Volatile_Full_Access aspect.
- 
        procedure Check_Component
          (Comp            : Node_Id;
           UU_Typ          : Entity_Id;
--- 3974,3979 ----
*************** package body Sem_Prag is
*** 4045,4051 ****
        --  than library level instantiations these can appear in contexts which
        --  would normally be invalid (they only apply to the original template
        --  and to library level instantiations), and they are simply ignored,
!       --  which is implemented by rewriting them as null statements.
  
        procedure Check_Variant (Variant : Node_Id; UU_Typ : Entity_Id);
        --  Check an Unchecked_Union variant for lack of nested variants and
--- 4088,4095 ----
        --  than library level instantiations these can appear in contexts which
        --  would normally be invalid (they only apply to the original template
        --  and to library level instantiations), and they are simply ignored,
!       --  which is implemented by rewriting them as null statements and raising
!       --  exception to terminate analysis.
  
        procedure Check_Variant (Variant : Node_Id; UU_Typ : Entity_Id);
        --  Check an Unchecked_Union variant for lack of nested variants and
*************** package body Sem_Prag is
*** 4055,4064 ****
        procedure Ensure_Aggregate_Form (Arg : Node_Id);
        --  Subsidiary routine to the processing of pragmas Abstract_State,
        --  Contract_Cases, Depends, Global, Initializes, Refined_Depends,
!       --  Refined_Global and Refined_State. Transform argument Arg into
!       --  an aggregate if not one already. N_Null is never transformed.
!       --  Arg may denote an aspect specification or a pragma argument
!       --  association.
  
        procedure Error_Pragma (Msg : String);
        pragma No_Return (Error_Pragma);
--- 4099,4108 ----
        procedure Ensure_Aggregate_Form (Arg : Node_Id);
        --  Subsidiary routine to the processing of pragmas Abstract_State,
        --  Contract_Cases, Depends, Global, Initializes, Refined_Depends,
!       --  Refined_Global, Refined_State and Subprogram_Variant. Transform
!       --  argument Arg into an aggregate if not one already. N_Null is never
!       --  transformed. Arg may denote an aspect specification or a pragma
!       --  argument association.
  
        procedure Error_Pragma (Msg : String);
        pragma No_Return (Error_Pragma);
*************** package body Sem_Prag is
*** 4329,4420 ****
        procedure Set_Ravenscar_Profile (Profile : Profile_Name; N : Node_Id);
        --  Activate the set of configuration pragmas and restrictions that make
        --  up the Profile. Profile must be either GNAT_Extended_Ravenscar,
!       --  GNAT_Ravenscar_EDF, or Ravenscar. N is the corresponding pragma node,
!       --  which is used for error messages on any constructs violating the
!       --  profile.
! 
!       procedure Validate_Acc_Condition_Clause (Clause : Node_Id);
!       --  Make sure the argument of a given Acc_If clause is a Boolean
! 
!       procedure Validate_Acc_Data_Clause (Clause : Node_Id);
!       --  Make sure the argument of an OpenAcc data clause (e.g. Copy, Copyin,
!       --  Copyout...) is an identifier or an aggregate of identifiers.
! 
!       procedure Validate_Acc_Int_Expr_Clause (Clause : Node_Id);
!       --  Make sure the argument of an OpenAcc clause is an Integer expression
! 
!       procedure Validate_Acc_Int_Expr_List_Clause (Clause : Node_Id);
!       --  Make sure the argument of an OpenAcc clause is an Integer expression
!       --  or a list of Integer expressions.
! 
!       procedure Validate_Acc_Loop_Collapse (Clause : Node_Id);
!       --  Make sure that the parent loop of the Acc_Loop(Collapse => N) pragma
!       --  contains at least N-1 nested loops.
! 
!       procedure Validate_Acc_Loop_Gang (Clause : Node_Id);
!       --  Make sure the argument of the Gang clause of a Loop directive is
!       --  either an integer expression or a (Static => integer expressions)
!       --  aggregate.
! 
!       procedure Validate_Acc_Loop_Vector (Clause : Node_Id);
!       --  When this procedure is called in a construct offloaded by an
!       --  Acc_Kernels pragma, makes sure that a Vector_Length clause does
!       --  not exist on said pragma. In all cases, make sure the argument
!       --  is an Integer expression.
! 
!       procedure Validate_Acc_Loop_Worker (Clause : Node_Id);
!       --  When this procedure is called in a construct offloaded by an
!       --  Acc_Parallel pragma, makes sure that no argument has been given.
!       --  When this procedure is called in a construct offloaded by an
!       --  Acc_Kernels pragma and if Loop_Worker was given an argument,
!       --  makes sure that the Num_Workers clause does not appear on the
!       --  Acc_Kernels pragma and that the argument is an integer.
! 
!       procedure Validate_Acc_Name_Reduction (Clause : Node_Id);
!       --  Make sure the reduction clause is an aggregate made of a string
!       --  representing a supported reduction operation (i.e. "+", "*", "and",
!       --  "or", "min" or "max") and either an identifier or aggregate of
!       --  identifiers.
! 
!       procedure Validate_Acc_Size_Expressions (Clause : Node_Id);
!       --  Makes sure that Clause is either an integer expression or an
!       --  association with a Static as name and a list of integer expressions
!       --  or "*" strings on the right hand side.
! 
!       ---------------
!       -- Acc_First --
!       ---------------
! 
!       function Acc_First (N : Node_Id) return Node_Id is
!       begin
!          if Nkind (N) = N_Aggregate then
!             if Present (Expressions (N)) then
!                return First (Expressions (N));
! 
!             elsif Present (Component_Associations (N)) then
!                return Expression (First (Component_Associations (N)));
!             end if;
!          end if;
! 
!          return N;
!       end Acc_First;
! 
!       --------------
!       -- Acc_Next --
!       --------------
! 
!       function Acc_Next (N : Node_Id) return Node_Id is
!       begin
!          if Nkind (Parent (N)) = N_Component_Association then
!             return Expression (Next (Parent (N)));
! 
!          elsif Nkind (Parent (N)) = N_Aggregate then
!             return Next (N);
! 
!          else
!             return Empty;
!          end if;
!       end Acc_Next;
  
        ---------------------
        -- Ada_2005_Pragma --
--- 4373,4381 ----
        procedure Set_Ravenscar_Profile (Profile : Profile_Name; N : Node_Id);
        --  Activate the set of configuration pragmas and restrictions that make
        --  up the Profile. Profile must be either GNAT_Extended_Ravenscar,
!       --  GNAT_Ravenscar_EDF, Jorvik, or Ravenscar. N is the corresponding
!       --  pragma node, which is used for error messages on any constructs
!       --  violating the profile.
  
        ---------------------
        -- Ada_2005_Pragma --
*************** package body Sem_Prag is
*** 4503,4509 ****
           --  Subprogram declaration
  
           elsif Nkind (Subp_Decl) = N_Subprogram_Declaration then
!             null;
  
           --  Task type
  
--- 4464,4480 ----
           --  Subprogram declaration
  
           elsif Nkind (Subp_Decl) = N_Subprogram_Declaration then
! 
!             --  Pragmas Global and Depends are forbidden on null procedures
!             --  (SPARK RM 6.1.2(2)).
! 
!             if Nkind (Specification (Subp_Decl)) = N_Procedure_Specification
!               and then Null_Present (Specification (Subp_Decl))
!             then
!                Error_Msg_N (Fix_Error
!                  ("pragma % cannot apply to null procedure"), N);
!                return;
!             end if;
  
           --  Task type
  
*************** package body Sem_Prag is
*** 4698,4709 ****
           --  original pragma name by routine Original_Aspect_Pragma_Name.
  
           if Comes_From_Source (N) then
!             if Nam_In (Pname, Name_Pre, Name_Pre_Class) then
                 Is_Pre_Post := True;
                 Set_Class_Present (N, Pname = Name_Pre_Class);
                 Rewrite (Prag_Iden, Make_Identifier (Loc, Name_Precondition));
  
!             elsif Nam_In (Pname, Name_Post, Name_Post_Class) then
                 Is_Pre_Post := True;
                 Set_Class_Present (N, Pname = Name_Post_Class);
                 Rewrite (Prag_Iden, Make_Identifier (Loc, Name_Postcondition));
--- 4669,4680 ----
           --  original pragma name by routine Original_Aspect_Pragma_Name.
  
           if Comes_From_Source (N) then
!             if Pname in Name_Pre | Name_Pre_Class then
                 Is_Pre_Post := True;
                 Set_Class_Present (N, Pname = Name_Pre_Class);
                 Rewrite (Prag_Iden, Make_Identifier (Loc, Name_Precondition));
  
!             elsif Pname in Name_Post | Name_Post_Class then
                 Is_Pre_Post := True;
                 Set_Class_Present (N, Pname = Name_Post_Class);
                 Rewrite (Prag_Iden, Make_Identifier (Loc, Name_Postcondition));
*************** package body Sem_Prag is
*** 4714,4720 ****
           --  in a body. Pragmas Precondition and Postcondition were introduced
           --  before aspects and are not subject to the same aspect-like rules.
  
!          if Nam_In (Pname, Name_Precondition, Name_Postcondition) then
              Duplicates_OK := True;
              In_Body_OK    := True;
           end if;
--- 4685,4691 ----
           --  in a body. Pragmas Precondition and Postcondition were introduced
           --  before aspects and are not subject to the same aspect-like rules.
  
!          if Pname in Name_Precondition | Name_Postcondition then
              Duplicates_OK := True;
              In_Body_OK    := True;
           end if;
*************** package body Sem_Prag is
*** 4838,4844 ****
           then
              null;
  
!          --  Otherwise the placement is illegal
  
           else
              Pragma_Misplaced;
--- 4809,4826 ----
           then
              null;
  
!          --  For Ada 2020, pre/postconditions can appear on formal subprograms
! 
!          elsif Nkind (Subp_Decl) = N_Formal_Concrete_Subprogram_Declaration
!             and then Ada_Version >= Ada_2020
!          then
!             null;
! 
!          --  An access-to-subprogram type can have pre/postconditions, but
!          --  these are transferred to the generated subprogram wrapper and
!          --  analyzed there.
! 
!          --  Otherwise the placement of the pragma is illegal
  
           else
              Pragma_Misplaced;
*************** package body Sem_Prag is
*** 4855,4868 ****
           --  Chain the pragma on the contract for further processing by
           --  Analyze_Pre_Post_Condition_In_Decl_Part.
  
!          Add_Contract_Item (N, Defining_Entity (Subp_Decl));
  
           --  Fully analyze the pragma when it appears inside an entry or
           --  subprogram body because it cannot benefit from forward references.
  
!          if Nkind_In (Subp_Decl, N_Entry_Body,
!                                  N_Subprogram_Body,
!                                  N_Subprogram_Body_Stub)
           then
              --  The legality checks of pragmas Precondition and Postcondition
              --  are affected by the SPARK mode in effect and the volatility of
--- 4837,4850 ----
           --  Chain the pragma on the contract for further processing by
           --  Analyze_Pre_Post_Condition_In_Decl_Part.
  
!          Add_Contract_Item (N, Subp_Id);
  
           --  Fully analyze the pragma when it appears inside an entry or
           --  subprogram body because it cannot benefit from forward references.
  
!          if Nkind (Subp_Decl) in N_Entry_Body
!                                | N_Subprogram_Body
!                                | N_Subprogram_Body_Stub
           then
              --  The legality checks of pragmas Precondition and Postcondition
              --  are affected by the SPARK mode in effect and the volatility of
*************** package body Sem_Prag is
*** 4902,4912 ****
  
           Body_Decl := Find_Related_Declaration_Or_Body (N, Do_Checks => True);
  
!          if not Nkind_In (Body_Decl, N_Entry_Body,
!                                      N_Subprogram_Body,
!                                      N_Subprogram_Body_Stub,
!                                      N_Task_Body,
!                                      N_Task_Body_Stub)
           then
              Pragma_Misplaced;
              return;
--- 4884,4892 ----
  
           Body_Decl := Find_Related_Declaration_Or_Body (N, Do_Checks => True);
  
!          if Nkind (Body_Decl) not in
!               N_Entry_Body | N_Subprogram_Body | N_Subprogram_Body_Stub |
!               N_Task_Body  | N_Task_Body_Stub
           then
              Pragma_Misplaced;
              return;
*************** package body Sem_Prag is
*** 4939,4948 ****
           --  When dealing with protected entries or protected subprograms, use
           --  the enclosing protected type as the proper context.
  
!          if Ekind_In (Spec_Id, E_Entry,
!                                E_Entry_Family,
!                                E_Function,
!                                E_Procedure)
             and then Ekind (Scope (Spec_Id)) = E_Protected_Type
           then
              Spec_Decl := Declaration_Node (Scope (Spec_Id));
--- 4919,4928 ----
           --  When dealing with protected entries or protected subprograms, use
           --  the enclosing protected type as the proper context.
  
!          if Ekind (Spec_Id) in E_Entry
!                              | E_Entry_Family
!                              | E_Function
!                              | E_Procedure
             and then Ekind (Scope (Spec_Id)) = E_Protected_Type
           then
              Spec_Decl := Declaration_Node (Scope (Spec_Id));
*************** package body Sem_Prag is
*** 4964,4970 ****
  
           Mark_Ghost_Pragma (N, Spec_Id);
  
!          if Nam_In (Pname, Name_Refined_Depends, Name_Refined_Global) then
              Ensure_Aggregate_Form (Get_Argument (N, Spec_Id));
           end if;
        end Analyze_Refined_Depends_Global_Post;
--- 4944,4950 ----
  
           Mark_Ghost_Pragma (N, Spec_Id);
  
!          if Pname in Name_Refined_Depends | Name_Refined_Global then
              Ensure_Aggregate_Form (Get_Argument (N, Spec_Id));
           end if;
        end Analyze_Refined_Depends_Global_Post;
*************** package body Sem_Prag is
*** 5529,5535 ****
        begin
           Check_Arg_Is_Identifier (Argx);
  
!          if not Nam_In (Chars (Argx), N1, N2) then
              Error_Msg_Name_2 := N1;
              Error_Msg_Name_3 := N2;
              Error_Pragma_Arg ("argument for pragma% must be% or%", Argx);
--- 5509,5515 ----
        begin
           Check_Arg_Is_Identifier (Argx);
  
!          if Chars (Argx) not in N1 | N2 then
              Error_Msg_Name_2 := N1;
              Error_Msg_Name_3 := N2;
              Error_Pragma_Arg ("argument for pragma% must be% or%", Argx);
*************** package body Sem_Prag is
*** 5545,5551 ****
        begin
           Check_Arg_Is_Identifier (Argx);
  
!          if not Nam_In (Chars (Argx), N1, N2, N3) then
              Error_Pragma_Arg ("invalid argument for pragma%", Argx);
           end if;
        end Check_Arg_Is_One_Of;
--- 5525,5531 ----
        begin
           Check_Arg_Is_Identifier (Argx);
  
!          if Chars (Argx) not in N1 | N2 | N3 then
              Error_Pragma_Arg ("invalid argument for pragma%", Argx);
           end if;
        end Check_Arg_Is_One_Of;
*************** package body Sem_Prag is
*** 5559,5565 ****
        begin
           Check_Arg_Is_Identifier (Argx);
  
!          if not Nam_In (Chars (Argx), N1, N2, N3, N4) then
              Error_Pragma_Arg ("invalid argument for pragma%", Argx);
           end if;
        end Check_Arg_Is_One_Of;
--- 5539,5545 ----
        begin
           Check_Arg_Is_Identifier (Argx);
  
!          if Chars (Argx) not in N1 | N2 | N3 | N4 then
              Error_Pragma_Arg ("invalid argument for pragma%", Argx);
           end if;
        end Check_Arg_Is_One_Of;
*************** package body Sem_Prag is
*** 5573,5579 ****
        begin
           Check_Arg_Is_Identifier (Argx);
  
!          if not Nam_In (Chars (Argx), N1, N2, N3, N4, N5) then
              Error_Pragma_Arg ("invalid argument for pragma%", Argx);
           end if;
        end Check_Arg_Is_One_Of;
--- 5553,5559 ----
        begin
           Check_Arg_Is_Identifier (Argx);
  
!          if Chars (Argx) not in N1 | N2 | N3 | N4 | N5 then
              Error_Pragma_Arg ("invalid argument for pragma%", Argx);
           end if;
        end Check_Arg_Is_One_Of;
*************** package body Sem_Prag is
*** 5684,5848 ****
           end if;
        end Check_At_Most_N_Arguments;
  
-       ------------------------
-       --  Check_Atomic_VFA  --
-       ------------------------
- 
-       procedure Check_Atomic_VFA (E : Entity_Id; VFA : Boolean) is
- 
-          Aliased_Subcomponent : exception;
-          --  Exception raised if an aliased subcomponent is found in E
- 
-          Independent_Subcomponent : exception;
-          --  Exception raised if an independent subcomponent is found in E
- 
-          procedure Check_Subcomponents (Typ : Entity_Id);
-          --  Apply checks to subcomponents for Atomic and Volatile_Full_Access
- 
-          -------------------------
-          -- Check_Subcomponents --
-          -------------------------
- 
-          procedure Check_Subcomponents (Typ : Entity_Id) is
-             Comp : Entity_Id;
- 
-          begin
-             if Is_Array_Type (Typ) then
-                Comp := Component_Type (Typ);
- 
-                --  For Atomic we accept any atomic subcomponents
- 
-                if not VFA
-                  and then (Has_Atomic_Components (Typ)
-                             or else Is_Atomic (Comp))
-                then
-                   null;
- 
-                --  Give an error if the components are aliased
- 
-                elsif Has_Aliased_Components (Typ)
-                  or else Is_Aliased (Comp)
-                then
-                   raise Aliased_Subcomponent;
- 
-                --  For VFA we accept non-aliased VFA subcomponents
- 
-                elsif VFA
-                  and then Is_Volatile_Full_Access (Comp)
-                then
-                   null;
- 
-                --  Give an error if the components are independent
- 
-                elsif Has_Independent_Components (Typ)
-                   or else Is_Independent (Comp)
-                then
-                   raise Independent_Subcomponent;
-                end if;
- 
-                --  Recurse on the component type
- 
-                Check_Subcomponents (Comp);
- 
-             --  Note: Has_Aliased_Components, like Has_Atomic_Components,
-             --  and Has_Independent_Components, applies only to arrays.
-             --  However, this flag does not have a corresponding pragma, so
-             --  perhaps it should be possible to apply it to record types as
-             --  well. Should this be done ???
- 
-             elsif Is_Record_Type (Typ) then
-                --  It is possible to have an aliased discriminant, so they
-                --  must be checked along with normal components.
- 
-                Comp := First_Component_Or_Discriminant (Typ);
-                while Present (Comp) loop
- 
-                   --  For Atomic we accept any atomic subcomponents
- 
-                   if not VFA
-                     and then (Is_Atomic (Comp)
-                                or else Is_Atomic (Etype (Comp)))
-                   then
-                      null;
- 
-                   --  Give an error if the component is aliased
- 
-                   elsif Is_Aliased (Comp)
-                     or else Is_Aliased (Etype (Comp))
-                   then
-                      raise Aliased_Subcomponent;
- 
-                   --  For VFA we accept non-aliased VFA subcomponents
- 
-                   elsif VFA
-                     and then (Is_Volatile_Full_Access (Comp)
-                                or else Is_Volatile_Full_Access (Etype (Comp)))
-                   then
-                      null;
- 
-                   --  Give an error if the component is independent
- 
-                   elsif Is_Independent (Comp)
-                      or else Is_Independent (Etype (Comp))
-                   then
-                      raise Independent_Subcomponent;
-                   end if;
- 
-                   --  Recurse on the component type
- 
-                   Check_Subcomponents (Etype (Comp));
- 
-                   Next_Component_Or_Discriminant (Comp);
-                end loop;
-             end if;
-          end Check_Subcomponents;
- 
-          Typ : Entity_Id;
- 
-       begin
-          --  Fetch the type in case we are dealing with an object or component
- 
-          if Is_Type (E) then
-             Typ := E;
-          else
-             pragma Assert (Is_Object (E)
-               or else
-                 Nkind (Declaration_Node (E)) = N_Component_Declaration);
- 
-             Typ := Etype (E);
-          end if;
- 
-          --  Check all the subcomponents of the type recursively, if any
- 
-          Check_Subcomponents (Typ);
- 
-       exception
-          when Aliased_Subcomponent =>
-             if VFA then
-                Error_Pragma
-                  ("cannot apply Volatile_Full_Access with aliased "
-                   & "subcomponent ");
-             else
-                Error_Pragma
-                  ("cannot apply Atomic with aliased subcomponent "
-                   & "(RM C.6(13))");
-             end if;
- 
-          when Independent_Subcomponent =>
-             if VFA then
-                Error_Pragma
-                  ("cannot apply Volatile_Full_Access with independent "
-                   & "subcomponent ");
-             else
-                Error_Pragma
-                  ("cannot apply Atomic with independent subcomponent "
-                   & "(RM C.6(13))");
-             end if;
- 
-          when others =>
-             raise Program_Error;
-       end Check_Atomic_VFA;
- 
        ---------------------
        -- Check_Component --
        ---------------------
--- 5664,5669 ----
*************** package body Sem_Prag is
*** 5956,5962 ****
              --  For a single protected or a single task object, the error is
              --  issued on the original entity.
  
!             if Ekind_In (Id, E_Task_Type, E_Protected_Type) then
                 Id := Defining_Identifier (Original_Node (Parent (Id)));
              end if;
  
--- 5777,5783 ----
              --  For a single protected or a single task object, the error is
              --  issued on the original entity.
  
!             if Ekind (Id) in E_Task_Type | E_Protected_Type then
                 Id := Defining_Identifier (Original_Node (Parent (Id)));
              end if;
  
*************** package body Sem_Prag is
*** 5965,5971 ****
              then
                 Error_Msg_NE ("aspect% for & previously given#", N, Id);
              else
!                Error_Msg_NE ("pragma% for & duplicates pragma#", N, Id);
              end if;
  
              raise Pragma_Exit;
--- 5786,5803 ----
              then
                 Error_Msg_NE ("aspect% for & previously given#", N, Id);
              else
!                --  If -gnatwr is set, warn in case of a duplicate pragma
!                --  [No_]Inline which is suspicious but not an error, generate
!                --  an error for other pragmas.
! 
!                if Pragma_Name (N) in Name_Inline | Name_No_Inline then
!                   if Warn_On_Redundant_Constructs then
!                      Error_Msg_NE
!                        ("?r?pragma% for & duplicates pragma#", N, Id);
!                   end if;
!                else
!                   Error_Msg_NE ("pragma% for & duplicates pragma#", N, Id);
!                end if;
              end if;
  
              raise Pragma_Exit;
*************** package body Sem_Prag is
*** 6274,6280 ****
                       --  The group and the current pragma are not in the same
                       --  declarative or statement list.
  
!                      if List_Containing (Stmt) /= List_Containing (N) then
                          Grouping_Error (Stmt);
  
                       --  Try to reach the current pragma from the first pragma
--- 6106,6112 ----
                       --  The group and the current pragma are not in the same
                       --  declarative or statement list.
  
!                      if not In_Same_List (Stmt, N) then
                          Grouping_Error (Stmt);
  
                       --  Try to reach the current pragma from the first pragma
*************** package body Sem_Prag is
*** 6378,6395 ****
           --------------------
  
           function Is_Loop_Pragma (Stmt : Node_Id) return Boolean is
           begin
              --  Inspect the original node as Loop_Invariant and Loop_Variant
              --  pragmas are rewritten to null when assertions are disabled.
  
!             if Nkind (Original_Node (Stmt)) = N_Pragma then
!                return
!                  Nam_In (Pragma_Name_Unmapped (Original_Node (Stmt)),
!                          Name_Loop_Invariant,
!                          Name_Loop_Variant);
!             else
!                return False;
!             end if;
           end Is_Loop_Pragma;
  
           ---------------------
--- 6210,6224 ----
           --------------------
  
           function Is_Loop_Pragma (Stmt : Node_Id) return Boolean is
+             Original_Stmt : constant Node_Id := Original_Node (Stmt);
+ 
           begin
              --  Inspect the original node as Loop_Invariant and Loop_Variant
              --  pragmas are rewritten to null when assertions are disabled.
  
!             return Nkind (Original_Stmt) = N_Pragma
!              and then Pragma_Name_Unmapped (Original_Stmt)
!                    in Name_Loop_Invariant | Name_Loop_Variant;
           end Is_Loop_Pragma;
  
           ---------------------
*************** package body Sem_Prag is
*** 6511,6519 ****
              elsif Nkind (P) = N_Handled_Sequence_Of_Statements then
                 exit;
  
!             elsif Nkind_In (P, N_Package_Specification,
!                                N_Block_Statement)
!             then
                 return;
  
              --  Note: the following tests seem a little peculiar, because
--- 6340,6346 ----
              elsif Nkind (P) = N_Handled_Sequence_Of_Statements then
                 exit;
  
!             elsif Nkind (P) in N_Package_Specification | N_Block_Statement then
                 return;
  
              --  Note: the following tests seem a little peculiar, because
*************** package body Sem_Prag is
*** 6522,6531 ****
              --  sequence, so the only way we get here is by being in the
              --  declarative part of the body.
  
!             elsif Nkind_In (P, N_Subprogram_Body,
!                                N_Package_Body,
!                                N_Task_Body,
!                                N_Entry_Body)
              then
                 return;
              end if;
--- 6349,6356 ----
              --  sequence, so the only way we get here is by being in the
              --  declarative part of the body.
  
!             elsif Nkind (P) in
!               N_Subprogram_Body | N_Package_Body | N_Task_Body | N_Entry_Body
              then
                 return;
              end if;
*************** package body Sem_Prag is
*** 6777,6783 ****
  
                 if Loc not in Source_First (Sindex) .. Source_Last (Sindex) then
                    Rewrite (N, Make_Null_Statement (Loc));
!                   return;
  
                 --  If before first declaration, the pragma applies to the
                 --  enclosing unit, and the name if present must be this name.
--- 6602,6608 ----
  
                 if Loc not in Source_First (Sindex) .. Source_Last (Sindex) then
                    Rewrite (N, Make_Null_Statement (Loc));
!                   raise Pragma_Exit;
  
                 --  If before first declaration, the pragma applies to the
                 --  enclosing unit, and the name if present must be this name.
*************** package body Sem_Prag is
*** 7023,7031 ****
           if Nkind (P) = N_Compilation_Unit then
              Unit_Kind := Nkind (Unit (P));
  
!             if Nkind_In (Unit_Kind, N_Subprogram_Declaration,
!                                     N_Package_Declaration)
!               or else Unit_Kind in N_Generic_Declaration
              then
                 Unit_Name := Defining_Entity (Unit (P));
  
--- 6848,6856 ----
           if Nkind (P) = N_Compilation_Unit then
              Unit_Kind := Nkind (Unit (P));
  
!             if Unit_Kind in N_Subprogram_Declaration
!                           | N_Package_Declaration
!                           | N_Generic_Declaration
              then
                 Unit_Name := Defining_Entity (Unit (P));
  
*************** package body Sem_Prag is
*** 7422,7429 ****
        ------------------------------------------------
  
        procedure Process_Atomic_Independent_Shared_Volatile is
!          procedure Check_VFA_Conflicts (Ent : Entity_Id);
!          --  Check that Volatile_Full_Access and VFA do not conflict
  
           procedure Mark_Component_Or_Object (Ent : Entity_Id);
           --  Appropriately set flags on the given entity, either an array or
--- 7247,7255 ----
        ------------------------------------------------
  
        procedure Process_Atomic_Independent_Shared_Volatile is
!          procedure Check_Full_Access_Only (Ent : Entity_Id);
!          --  Apply legality checks to type or object Ent subject to the
!          --  Full_Access_Only aspect in Ada 2020 (RM C.6(8.2)).
  
           procedure Mark_Component_Or_Object (Ent : Entity_Id);
           --  Appropriately set flags on the given entity, either an array or
*************** package body Sem_Prag is
*** 7440,7454 ****
           --  full access arrays. Note: this is necessary for derived types.
  
           -------------------------
!          -- Check_VFA_Conflicts --
           -------------------------
  
!          procedure Check_VFA_Conflicts (Ent : Entity_Id) is
!             Comp : Entity_Id;
              Typ  : Entity_Id;
  
!             VFA_And_Atomic : Boolean := False;
!             --  Set True if both VFA and Atomic present
  
           begin
              --  Fetch the type in case we are dealing with an object or
--- 7266,7333 ----
           --  full access arrays. Note: this is necessary for derived types.
  
           -------------------------
!          -- Check_Full_Access_Only --
           -------------------------
  
!          procedure Check_Full_Access_Only (Ent : Entity_Id) is
              Typ  : Entity_Id;
  
!             Full_Access_Subcomponent : exception;
!             --  Exception raised if a full access subcomponent is found
! 
!             Generic_Type_Subcomponent : exception;
!             --  Exception raised if a subcomponent with generic type is found
! 
!             procedure Check_Subcomponents (Typ : Entity_Id);
!             --  Apply checks to subcomponents recursively
! 
!             -------------------------
!             -- Check_Subcomponents --
!             -------------------------
! 
!             procedure Check_Subcomponents (Typ : Entity_Id) is
!                Comp : Entity_Id;
! 
!             begin
!                if Is_Array_Type (Typ) then
!                   Comp := Component_Type (Typ);
! 
!                   if Has_Atomic_Components (Typ)
!                     or else Is_Full_Access (Comp)
!                   then
!                      raise Full_Access_Subcomponent;
! 
!                   elsif Is_Generic_Type (Comp) then
!                      raise Generic_Type_Subcomponent;
!                   end if;
! 
!                   --  Recurse on the component type
! 
!                   Check_Subcomponents (Comp);
! 
!                elsif Is_Record_Type (Typ) then
!                   Comp := First_Component_Or_Discriminant (Typ);
!                   while Present (Comp) loop
! 
!                      if Is_Full_Access (Comp)
!                        or else Is_Full_Access (Etype (Comp))
!                      then
!                         raise Full_Access_Subcomponent;
! 
!                      elsif Is_Generic_Type (Etype (Comp)) then
!                         raise Generic_Type_Subcomponent;
!                      end if;
! 
!                      --  Recurse on the component type
! 
!                      Check_Subcomponents (Etype (Comp));
! 
!                      Next_Component_Or_Discriminant (Comp);
!                   end loop;
!                end if;
!             end Check_Subcomponents;
! 
!          --  Start of processing for Check_Full_Access_Only
  
           begin
              --  Fetch the type in case we are dealing with an object or
*************** package body Sem_Prag is
*** 7464,7512 ****
                 Typ := Etype (Ent);
              end if;
  
!             --  Check Atomic and VFA used together
! 
!             if Prag_Id = Pragma_Volatile_Full_Access
!               or else Is_Volatile_Full_Access (Ent)
!             then
!                if Prag_Id = Pragma_Atomic
!                  or else Prag_Id = Pragma_Shared
!                  or else Is_Atomic (Ent)
!                then
!                   VFA_And_Atomic := True;
! 
!                elsif Is_Array_Type (Typ) then
!                   VFA_And_Atomic := Has_Atomic_Components (Typ);
! 
!                --  Note: Has_Atomic_Components is not used below, as this flag
!                --  represents the pragma of the same name, Atomic_Components,
!                --  which only applies to arrays.
  
!                elsif Is_Record_Type (Typ) then
!                   --  Attributes cannot be applied to discriminants, only
!                   --  regular record components.
  
!                   Comp := First_Component (Typ);
!                   while Present (Comp) loop
!                      if Is_Atomic (Comp)
!                        or else Is_Atomic (Typ)
!                      then
!                         VFA_And_Atomic := True;
  
!                         exit;
!                      end if;
  
!                      Next_Component (Comp);
!                   end loop;
!                end if;
  
!                if VFA_And_Atomic then
!                   Error_Pragma
!                     ("cannot have Volatile_Full_Access and Atomic for same "
!                      & "entity");
!                end if;
!             end if;
!          end Check_VFA_Conflicts;
  
           ------------------------------
           -- Mark_Component_Or_Object --
--- 7343,7371 ----
                 Typ := Etype (Ent);
              end if;
  
!             if not Is_Volatile (Ent) and then not Is_Volatile (Typ) then
!                Error_Pragma
!                  ("cannot have Full_Access_Only without Volatile/Atomic "
!                   & "(RM C.6(8.2))");
!                return;
!             end if;
  
!             --  Check all the subcomponents of the type recursively, if any
  
!             Check_Subcomponents (Typ);
  
!          exception
!             when Full_Access_Subcomponent =>
!                Error_Pragma
!                  ("cannot have Full_Access_Only with full access subcomponent "
!                   & "(RM C.6(8.2))");
  
!             when Generic_Type_Subcomponent =>
!                Error_Pragma
!                  ("cannot have Full_Access_Only with subcomponent of generic "
!                   & "type (RM C.6(8.2))");
  
!          end Check_Full_Access_Only;
  
           ------------------------------
           -- Mark_Component_Or_Object --
*************** package body Sem_Prag is
*** 7562,7568 ****
              --  Attribute belongs on the base type. If the view of the type is
              --  currently private, it also belongs on the underlying type.
  
!             --  In Ada_2020, the pragma can apply to a formal type, for which
              --  there may be no underlying type.
  
              if Prag_Id = Pragma_Atomic
--- 7421,7427 ----
              --  Attribute belongs on the base type. If the view of the type is
              --  currently private, it also belongs on the underlying type.
  
!             --  In Ada 2020, the pragma can apply to a formal type, for which
              --  there may be no underlying type.
  
              if Prag_Id = Pragma_Atomic
*************** package body Sem_Prag is
*** 7662,7667 ****
--- 7521,7527 ----
           end if;
  
           E := Entity (E_Arg);
+          Decl := Declaration_Node (E);
  
           --  A pragma that applies to a Ghost entity becomes Ghost for the
           --  purposes of legality checks and removal of ignored Ghost code.
*************** package body Sem_Prag is
*** 7672,7680 ****
  
           Check_Duplicate_Pragma (E);
  
!          --  Check appropriateness of the entity
  
!          Decl := Declaration_Node (E);
  
           --  Deal with the case where the pragma/attribute is applied to a type
  
--- 7532,7574 ----
  
           Check_Duplicate_Pragma (E);
  
!          --  Check the constraints of Full_Access_Only in Ada 2020. Note that
!          --  they do not apply to GNAT's Volatile_Full_Access because 1) this
!          --  aspect subsumes the Volatile aspect and 2) nesting is supported
!          --  for this aspect and the outermost enclosing VFA object prevails.
  
!          --  Note also that we used to forbid specifying both Atomic and VFA on
!          --  the same type or object, but the restriction has been lifted in
!          --  light of the semantics of Full_Access_Only and Atomic in Ada 2020.
! 
!          if Prag_Id = Pragma_Volatile_Full_Access
!            and then From_Aspect_Specification (N)
!            and then
!              Get_Aspect_Id (Corresponding_Aspect (N)) = Aspect_Full_Access_Only
!          then
!             Check_Full_Access_Only (E);
!          end if;
! 
!          --  The following check is only relevant when SPARK_Mode is on as
!          --  this is not a standard Ada legality rule. Pragma Volatile can
!          --  only apply to a full type declaration or an object declaration
!          --  (SPARK RM 7.1.3(2)). Original_Node is necessary to account for
!          --  untagged derived types that are rewritten as subtypes of their
!          --  respective root types.
! 
!          if SPARK_Mode = On
!            and then Prag_Id = Pragma_Volatile
!            and then Nkind (Original_Node (Decl)) not in
!                       N_Full_Type_Declaration        |
!                       N_Formal_Type_Declaration      |
!                       N_Object_Declaration           |
!                       N_Single_Protected_Declaration |
!                       N_Single_Task_Declaration
!          then
!             Error_Pragma_Arg
!               ("argument of pragma % must denote a full type or object "
!                & "declaration", Arg1);
!          end if;
  
           --  Deal with the case where the pragma/attribute is applied to a type
  
*************** package body Sem_Prag is
*** 7707,7746 ****
           else
              Error_Pragma_Arg ("inappropriate entity for pragma%", Arg1);
           end if;
- 
-          --  Check that Volatile_Full_Access and Atomic do not conflict
- 
-          Check_VFA_Conflicts (E);
- 
-          --  Check for the application of Atomic or Volatile_Full_Access to
-          --  an entity that has [nonatomic] aliased, or else specified to be
-          --  independently addressable, subcomponents.
- 
-          if (Prag_Id = Pragma_Atomic and then Ada_Version >= Ada_2020)
-            or else Prag_Id = Pragma_Volatile_Full_Access
-          then
-             Check_Atomic_VFA (E, VFA => Prag_Id = Pragma_Volatile_Full_Access);
-          end if;
- 
-          --  The following check is only relevant when SPARK_Mode is on as
-          --  this is not a standard Ada legality rule. Pragma Volatile can
-          --  only apply to a full type declaration or an object declaration
-          --  (SPARK RM 7.1.3(2)). Original_Node is necessary to account for
-          --  untagged derived types that are rewritten as subtypes of their
-          --  respective root types.
- 
-          if SPARK_Mode = On
-            and then Prag_Id = Pragma_Volatile
-            and then not Nkind_In (Original_Node (Decl),
-                                   N_Full_Type_Declaration,
-                                   N_Object_Declaration,
-                                   N_Single_Protected_Declaration,
-                                   N_Single_Task_Declaration)
-          then
-             Error_Pragma_Arg
-               ("argument of pragma % must denote a full type or object "
-                & "declaration", Arg1);
-          end if;
        end Process_Atomic_Independent_Shared_Volatile;
  
        -------------------------------------------
--- 7601,7606 ----
*************** package body Sem_Prag is
*** 7750,7772 ****
        procedure Process_Compile_Time_Warning_Or_Error is
           P : Node_Id := Parent (N);
           Arg1x : constant Node_Id := Get_Pragma_Arg (Arg1);
        begin
!          --  In GNATprove mode, pragmas Compile_Time_Error and
           --  Compile_Time_Warning are ignored, as the analyzer may not have the
           --  same information as the compiler (in particular regarding size of
!          --  objects decided in gigi) so it makes no sense to issue an error or
!          --  warning in GNATprove.
  
           if GNATprove_Mode then
!             Rewrite (N, Make_Null_Statement (Loc));
              return;
           end if;
  
-          Check_Arg_Count (2);
-          Check_No_Identifiers;
-          Check_Arg_Is_OK_Static_Expression (Arg2, Standard_String);
-          Analyze_And_Resolve (Arg1x, Standard_Boolean);
- 
           --  If the condition is known at compile time (now), validate it now.
           --  Otherwise, register the expression for validation after the back
           --  end has been called, because it might be known at compile time
--- 7610,7669 ----
        procedure Process_Compile_Time_Warning_Or_Error is
           P : Node_Id := Parent (N);
           Arg1x : constant Node_Id := Get_Pragma_Arg (Arg1);
+ 
        begin
!          Check_Arg_Count (2);
!          Check_No_Identifiers;
!          Check_Arg_Is_OK_Static_Expression (Arg2, Standard_String);
!          Analyze_And_Resolve (Arg1x, Standard_Boolean);
! 
!          --  In GNATprove mode, pragma Compile_Time_Error is translated as
!          --  a Check pragma in GNATprove mode, handled as an assumption in
!          --  GNATprove. This is correct as the compiler will issue an error
!          --  if the condition cannot be statically evaluated to False.
           --  Compile_Time_Warning are ignored, as the analyzer may not have the
           --  same information as the compiler (in particular regarding size of
!          --  objects decided in gigi) so it makes no sense to issue a warning
!          --  in GNATprove.
  
           if GNATprove_Mode then
!             if Prag_Id = Pragma_Compile_Time_Error then
!                declare
!                   New_Args : List_Id;
!                begin
!                   --  Implement Compile_Time_Error by generating
!                   --  a corresponding Check pragma:
! 
!                   --    pragma Check (name, condition);
! 
!                   --  where name is the identifier matching the pragma name. So
!                   --  rewrite pragma in this manner and analyze the result.
! 
!                   New_Args := New_List
!                     (Make_Pragma_Argument_Association
!                        (Loc,
!                         Expression => Make_Identifier (Loc, Pname)),
!                      Make_Pragma_Argument_Association
!                        (Sloc (Arg1x),
!                         Expression => Arg1x));
! 
!                   --  Rewrite as Check pragma
! 
!                   Rewrite (N,
!                            Make_Pragma (Loc,
!                              Chars                        => Name_Check,
!                              Pragma_Argument_Associations => New_Args));
! 
!                   Analyze (N);
!                end;
! 
!             else
!                Rewrite (N, Make_Null_Statement (Loc));
!             end if;
! 
              return;
           end if;
  
           --  If the condition is known at compile time (now), validate it now.
           --  Otherwise, register the expression for validation after the back
           --  end has been called, because it might be known at compile time
*************** package body Sem_Prag is
*** 7780,7786 ****
           else
              while Present (P) and then Nkind (P) not in N_Generic_Declaration
              loop
!                if Nkind_In (P, N_Package_Body, N_Subprogram_Body) then
                    P := Corresponding_Spec (P);
                 else
                    P := Parent (P);
--- 7677,7683 ----
           else
              while Present (P) and then Nkind (P) not in N_Generic_Declaration
              loop
!                if Nkind (P) in N_Package_Body | N_Subprogram_Body then
                    P := Corresponding_Spec (P);
                 else
                    P := Parent (P);
*************** package body Sem_Prag is
*** 7926,7942 ****
                    then
                       --  Give error if same as our pragma or Export/Convention
  
!                      if Nam_In (Pragma_Name_Unmapped (Decl),
!                                 Name_Export,
!                                 Name_Convention,
!                                 Pragma_Name_Unmapped (N))
                       then
                          exit;
  
                       --  Case of Import/Interface or the other way round
  
!                      elsif Nam_In (Pragma_Name_Unmapped (Decl),
!                                    Name_Interface, Name_Import)
                       then
                          --  Here we know that we have Import and Interface. It
                          --  doesn't matter which way round they are. See if
--- 7823,7839 ----
                    then
                       --  Give error if same as our pragma or Export/Convention
  
!                      if Pragma_Name_Unmapped (Decl)
!                           in Name_Export
!                            | Name_Convention
!                            | Pragma_Name_Unmapped (N)
                       then
                          exit;
  
                       --  Case of Import/Interface or the other way round
  
!                      elsif Pragma_Name_Unmapped (Decl)
!                              in Name_Interface | Name_Import
                       then
                          --  Here we know that we have Import and Interface. It
                          --  doesn't matter which way round they are. See if
*************** package body Sem_Prag is
*** 7995,8053 ****
                 Error_Pragma_Arg
                   ("cannot change convention for overridden dispatching "
                    & "operation", Arg1);
-             end if;
- 
-             --  Special checks for Convention_Stdcall
- 
-             if C = Convention_Stdcall then
- 
-                --  A dispatching call is not allowed. A dispatching subprogram
-                --  cannot be used to interface to the Win32 API, so in fact
-                --  this check does not impose any effective restriction.
- 
-                if Is_Dispatching_Operation (E) then
-                   Error_Msg_Sloc := Sloc (E);
- 
-                   --  Note: make this unconditional so that if there is more
-                   --  than one call to which the pragma applies, we get a
-                   --  message for each call. Also don't use Error_Pragma,
-                   --  so that we get multiple messages.
- 
-                   Error_Msg_N
-                     ("dispatching subprogram# cannot use Stdcall convention!",
-                      Arg1);
- 
-                --  Several allowed cases
  
!                elsif Is_Subprogram_Or_Generic_Subprogram (E)
! 
!                  --  A variable is OK
! 
!                  or else Ekind (E) = E_Variable
! 
!                  --  A component as well. The entity does not have its Ekind
!                  --  set until the enclosing record declaration is fully
!                  --  analyzed.
! 
!                  or else Nkind (Parent (E)) = N_Component_Declaration
! 
!                  --  An access to subprogram is also allowed
! 
!                  or else
!                    (Is_Access_Type (E)
!                      and then Ekind (Designated_Type (E)) = E_Subprogram_Type)
! 
!                  --  Allow internal call to set convention of subprogram type
  
!                  or else Ekind (E) = E_Subprogram_Type
!                then
!                   null;
  
!                else
!                   Error_Pragma_Arg
!                     ("second argument of pragma% must be subprogram (type)",
!                      Arg2);
!                end if;
              end if;
  
              --  Set the convention
--- 7892,7915 ----
                 Error_Pragma_Arg
                   ("cannot change convention for overridden dispatching "
                    & "operation", Arg1);
  
!             --  Special check for convention Stdcall: a dispatching call is not
!             --  allowed. A dispatching subprogram cannot be used to interface
!             --  to the Win32 API, so this check actually does not impose any
!             --  effective restriction.
  
!             elsif Is_Dispatching_Operation (E)
!               and then C = Convention_Stdcall
!             then
!                --  Note: make this unconditional so that if there is more
!                --  than one call to which the pragma applies, we get a
!                --  message for each call. Also don't use Error_Pragma,
!                --  so that we get multiple messages.
  
!                Error_Msg_Sloc := Sloc (E);
!                Error_Msg_N
!                  ("dispatching subprogram# cannot use Stdcall convention!",
!                   Get_Pragma_Arg (Arg1));
              end if;
  
              --  Set the convention
*************** package body Sem_Prag is
*** 8058,8083 ****
              --  For the case of a record base type, also set the convention of
              --  any anonymous access types declared in the record which do not
              --  currently have a specified convention.
  
!             if Is_Record_Type (E) and then Is_Base_Type (E) then
!                declare
!                   Comp : Node_Id;
  
!                begin
!                   Comp := First_Component (E);
!                   while Present (Comp) loop
!                      if Present (Etype (Comp))
!                        and then Ekind_In (Etype (Comp),
!                                           E_Anonymous_Access_Type,
!                                           E_Anonymous_Access_Subprogram_Type)
!                        and then not Has_Convention_Pragma (Comp)
!                      then
!                         Set_Convention (Comp, C);
!                      end if;
  
!                      Next_Component (Comp);
!                   end loop;
!                end;
              end if;
  
              --  Deal with incomplete/private type case, where underlying type
--- 7920,7957 ----
              --  For the case of a record base type, also set the convention of
              --  any anonymous access types declared in the record which do not
              --  currently have a specified convention.
+             --  Similarly for an array base type and anonymous access types
+             --  components.
  
!             if Is_Base_Type (E) then
!                if Is_Record_Type (E) then
!                   declare
!                      Comp : Node_Id;
  
!                   begin
!                      Comp := First_Component (E);
!                      while Present (Comp) loop
!                         if Present (Etype (Comp))
!                           and then
!                             Ekind (Etype (Comp)) in
!                               E_Anonymous_Access_Type |
!                               E_Anonymous_Access_Subprogram_Type
!                           and then not Has_Convention_Pragma (Comp)
!                         then
!                            Set_Convention (Comp, C);
!                         end if;
  
!                         Next_Component (Comp);
!                      end loop;
!                   end;
! 
!                elsif Is_Array_Type (E)
!                  and then Ekind (Component_Type (E)) in
!                             E_Anonymous_Access_Type |
!                             E_Anonymous_Access_Subprogram_Type
!                then
!                   Set_Convention (Designated_Type (Component_Type (E)), C);
!                end if;
              end if;
  
              --  Deal with incomplete/private type case, where underlying type
*************** package body Sem_Prag is
*** 8139,8144 ****
--- 8013,8019 ----
           E         : Entity_Id;
           E1        : Entity_Id;
           Id        : Node_Id;
+          Subp      : Entity_Id;
  
        --  Start of processing for Process_Convention
  
*************** package body Sem_Prag is
*** 8235,8242 ****
  
                 E := Alias (E);
  
!             elsif Nkind_In (Parent (E), N_Full_Type_Declaration,
!                                         N_Private_Extension_Declaration)
                and then Scope (E) = Scope (Alias (E))
              then
                 E := Alias (E);
--- 8110,8117 ----
  
                 E := Alias (E);
  
!             elsif Nkind (Parent (E)) in
!                     N_Full_Type_Declaration | N_Private_Extension_Declaration
                and then Scope (E) = Scope (Alias (E))
              then
                 E := Alias (E);
*************** package body Sem_Prag is
*** 8260,8266 ****
  
           --  Check that we are not applying this to a named constant
  
!          if Ekind_In (E, E_Named_Integer, E_Named_Real) then
              Error_Msg_Name_1 := Pname;
              Error_Msg_N
                ("cannot apply pragma% to named constant!",
--- 8135,8141 ----
  
           --  Check that we are not applying this to a named constant
  
!          if Is_Named_Number (E) then
              Error_Msg_Name_1 := Pname;
              Error_Msg_N
                ("cannot apply pragma% to named constant!",
*************** package body Sem_Prag is
*** 8307,8322 ****
              --  Accept Intrinsic Export on types if Relaxed_RM_Semantics
  
              if not (Is_Type (E) and then Relaxed_RM_Semantics) then
                 Error_Pragma_Arg
!                  ("second argument of pragma% must be a subprogram", Arg2);
              end if;
           end if;
  
           --  Deal with non-subprogram cases
  
           if not Is_Subprogram_Or_Generic_Subprogram (E) then
-             Set_Convention_From_Pragma (E);
- 
              if Is_Type (E) then
  
                 --  The pragma must apply to a first subtype, but it can also
--- 8182,8304 ----
              --  Accept Intrinsic Export on types if Relaxed_RM_Semantics
  
              if not (Is_Type (E) and then Relaxed_RM_Semantics) then
+                if From_Aspect_Specification (N) then
+                   Error_Pragma_Arg
+                      ("entity for aspect% must be a subprogram", Arg2);
+                else
+                   Error_Pragma_Arg
+                      ("second argument of pragma% must be a subprogram", Arg2);
+                end if;
+             end if;
+ 
+          --  Special checks for C_Variadic_n
+ 
+          elsif C in Convention_C_Variadic then
+ 
+             --  Several allowed cases
+ 
+             if Is_Subprogram_Or_Generic_Subprogram (E) then
+                Subp := E;
+ 
+             --  An access to subprogram is also allowed
+ 
+             elsif Is_Access_Type (E)
+               and then Ekind (Designated_Type (E)) = E_Subprogram_Type
+             then
+                Subp := Designated_Type (E);
+ 
+             --  Allow internal call to set convention of subprogram type
+ 
+             elsif Ekind (E) = E_Subprogram_Type then
+                Subp := E;
+ 
+             else
                 Error_Pragma_Arg
!                  ("argument of pragma% must be subprogram or access type",
!                   Arg2);
!                Subp := Empty;
!             end if;
! 
!             --  ISO C requires a named parameter before the ellipsis, so a
!             --  variadic C function taking 0 fixed parameter cannot exist.
! 
!             if C = Convention_C_Variadic_0 then
! 
!                Error_Msg_N
!                  ("??C_Variadic_0 cannot be used for an 'I'S'O C function",
!                   Get_Pragma_Arg (Arg2));
! 
!             --  Now check the number of parameters of the subprogram and give
!             --  an error if it is lower than n.
! 
!             elsif Present (Subp) then
!                declare
!                   Minimum : constant Nat :=
!                     Convention_Id'Pos (C) -
!                       Convention_Id'Pos (Convention_C_Variadic_0);
! 
!                   Count  : Nat;
!                   Formal : Entity_Id;
! 
!                begin
!                   Count := 0;
!                   Formal := First_Formal (Subp);
!                   while Present (Formal) loop
!                      Count := Count + 1;
!                      Next_Formal (Formal);
!                   end loop;
! 
!                   if Count < Minimum then
!                      Error_Msg_Uint_1 := UI_From_Int (Minimum);
!                      Error_Pragma_Arg
!                        ("argument of pragma% must have at least"
!                         & "^ parameters", Arg2);
!                   end if;
!                end;
!             end if;
! 
!          --  Special checks for Stdcall
! 
!          elsif C = Convention_Stdcall then
! 
!             --  Several allowed cases
! 
!             if Is_Subprogram_Or_Generic_Subprogram (E)
! 
!               --  A variable is OK
! 
!               or else Ekind (E) = E_Variable
! 
!               --  A component as well. The entity does not have its Ekind
!               --  set until the enclosing record declaration is fully
!               --  analyzed.
! 
!               or else Nkind (Parent (E)) = N_Component_Declaration
! 
!               --  An access to subprogram is also allowed
! 
!               or else
!                 (Is_Access_Type (E)
!                   and then Ekind (Designated_Type (E)) = E_Subprogram_Type)
! 
!               --  Allow internal call to set convention of subprogram type
! 
!               or else Ekind (E) = E_Subprogram_Type
!             then
!                null;
! 
!             else
!                Error_Pragma_Arg
!                  ("argument of pragma% must be subprogram or access type",
!                   Arg2);
              end if;
           end if;
  
+          Set_Convention_From_Pragma (E);
+ 
           --  Deal with non-subprogram cases
  
           if not Is_Subprogram_Or_Generic_Subprogram (E) then
              if Is_Type (E) then
  
                 --  The pragma must apply to a first subtype, but it can also
*************** package body Sem_Prag is
*** 8344,8352 ****
           --  compilation unit.
  
           else
-             Comp_Unit := Get_Source_Unit (E);
-             Set_Convention_From_Pragma (E);
- 
              --  Treat a pragma Import as an implicit body, and pragma import
              --  as implicit reference (for navigation in GNAT Studio).
  
--- 8326,8331 ----
*************** package body Sem_Prag is
*** 8391,8396 ****
--- 8370,8376 ----
              --  Otherwise Loop through the homonyms of the pragma argument's
              --  entity, an apply convention to those in the current scope.
  
+             Comp_Unit := Get_Source_Unit (E);
              E1 := Ent;
  
              loop
*************** package body Sem_Prag is
*** 8516,8522 ****
           Process_Extended_Import_Export_Internal_Arg (Arg_Internal);
           Def_Id := Entity (Arg_Internal);
  
!          if not Ekind_In (Def_Id, E_Constant, E_Variable) then
              Error_Pragma_Arg
                ("pragma% must designate an object", Arg_Internal);
           end if;
--- 8496,8502 ----
           Process_Extended_Import_Export_Internal_Arg (Arg_Internal);
           Def_Id := Entity (Arg_Internal);
  
!          if Ekind (Def_Id) not in E_Constant | E_Variable then
              Error_Pragma_Arg
                ("pragma% must designate an object", Arg_Internal);
           end if;
*************** package body Sem_Prag is
*** 8741,8748 ****
                    Match := False;
  
                 elsif Etype (Def_Id) /= Standard_Void_Type
!                  and then Nam_In (Pname, Name_Export_Procedure,
!                                          Name_Import_Procedure)
                 then
                    Match := False;
  
--- 8721,8728 ----
                    Match := False;
  
                 elsif Etype (Def_Id) /= Standard_Void_Type
!                  and then
!                    Pname in Name_Export_Procedure | Name_Import_Procedure
                 then
                    Match := False;
  
*************** package body Sem_Prag is
*** 8896,8902 ****
                 Error_Pragma ("at least one parameter required for pragma%");
  
              elsif Ekind (Formal) /= E_Out_Parameter then
!                Error_Pragma ("first parameter must have mode out for pragma%");
  
              else
                 Set_Is_Valued_Procedure (Ent);
--- 8876,8882 ----
                 Error_Pragma ("at least one parameter required for pragma%");
  
              elsif Ekind (Formal) /= E_Out_Parameter then
!                Error_Pragma ("first parameter must have mode OUT for pragma%");
  
              else
                 Set_Is_Valued_Procedure (Ent);
*************** package body Sem_Prag is
*** 9000,9006 ****
                                Set_Mechanism_Value
                                  (Formal, Expression (Massoc));
  
!                               --  Set entity on identifier (needed by ASIS)
  
                                Set_Entity (Choice, Formal);
  
--- 8980,8987 ----
                                Set_Mechanism_Value
                                  (Formal, Expression (Massoc));
  
!                               --  Set entity on identifier for proper tree
!                               --  structure.
  
                                Set_Entity (Choice, Formal);
  
*************** package body Sem_Prag is
*** 9152,9158 ****
  
           --  Various error checks
  
!          if Ekind_In (Def_Id, E_Variable, E_Constant) then
  
              --  We do not permit Import to apply to a renaming declaration
  
--- 9133,9139 ----
  
           --  Various error checks
  
!          if Ekind (Def_Id) in E_Variable | E_Constant then
  
              --  We do not permit Import to apply to a renaming declaration
  
*************** package body Sem_Prag is
*** 9479,9488 ****
              Process_Import_Predefined_Type;
  
           else
!             Error_Pragma_Arg
!               ("second argument of pragma% must be object, subprogram "
!                & "or incomplete type",
!                Arg2);
           end if;
  
           --  If this pragma applies to a compilation unit, then the unit, which
--- 9460,9476 ----
              Process_Import_Predefined_Type;
  
           else
!             if From_Aspect_Specification (N) then
!                Error_Pragma_Arg
!                   ("entity for aspect% must be object, subprogram "
!                      & "or incomplete type",
!                    Arg2);
!             else
!                Error_Pragma_Arg
!                   ("second argument of pragma% must be object, subprogram "
!                      & "or incomplete type",
!                    Arg2);
!             end if;
           end if;
  
           --  If this pragma applies to a compilation unit, then the unit, which
*************** package body Sem_Prag is
*** 9651,9659 ****
                    --       pragma Inline_Always (Proc);
                    --    end Pack;
  
!                   elsif Nkind_In (Context, N_Package_Specification,
!                                            N_Protected_Definition,
!                                            N_Task_Definition)
                      and then Init_List = Visible_Declarations (Context)
                      and then Prag_List = Private_Declarations (Context)
                    then
--- 9639,9647 ----
                    --       pragma Inline_Always (Proc);
                    --    end Pack;
  
!                   elsif Nkind (Context) in N_Package_Specification
!                                          | N_Protected_Definition
!                                          | N_Task_Definition
                      and then Init_List = Visible_Declarations (Context)
                      and then Prag_List = Private_Declarations (Context)
                    then
*************** package body Sem_Prag is
*** 9913,9932 ****
                    --  the test will have been applied to the original generic.
  
                    elsif Nkind (Decl) in N_Formal_Subprogram_Declaration
!                     and then List_Containing (Decl) = List_Containing (N)
                      and then not In_Instance
                    then
                       Error_Msg_N
                         ("Inline cannot apply to a formal subprogram", N);
- 
-                   --  If Subp is a renaming, it is the renamed entity that
-                   --  will appear in any call, and be inlined. However, for
-                   --  ASIS uses it is convenient to indicate that the renaming
-                   --  itself is an inlined subprogram, so that some gnatcheck
-                   --  rules can be applied in the absence of expansion.
- 
-                   elsif Nkind (Decl) = N_Subprogram_Renaming_Declaration then
-                      Set_Inline_Flags (Subp);
                    end if;
                 end if;
  
--- 9901,9911 ----
                    --  the test will have been applied to the original generic.
  
                    elsif Nkind (Decl) in N_Formal_Subprogram_Declaration
!                     and then In_Same_List (Decl, N)
                      and then not In_Instance
                    then
                       Error_Msg_N
                         ("Inline cannot apply to a formal subprogram", N);
                    end if;
                 end if;
  
*************** package body Sem_Prag is
*** 10079,10084 ****
--- 10058,10075 ----
                    Applies := True;
  
                 else
+                   --  Check for RM 13.1(9.2/4): If a [...] aspect_specification
+                   --  is given that directly specifies an aspect of an entity,
+                   --  then it is illegal to give another [...]
+                   --  aspect_specification that directly specifies the same
+                   --  aspect of the entity.
+                   --  We only check Subp directly as per "directly specifies"
+                   --  above and because the case of pragma Inline is really
+                   --  special given its pre aspect usage.
+ 
+                   Check_Duplicate_Pragma (Subp);
+                   Record_Rep_Item (Subp, N);
+ 
                    Make_Inline (Subp);
  
                    --  For the pragma case, climb homonym chain. This is
*************** package body Sem_Prag is
*** 10090,10097 ****
                       while Present (Homonym (Subp))
                         and then Scope (Homonym (Subp)) = Current_Scope
                       loop
-                         Make_Inline (Homonym (Subp));
                          Subp := Homonym (Subp);
                       end loop;
                    end if;
                 end if;
--- 10081,10088 ----
                       while Present (Homonym (Subp))
                         and then Scope (Homonym (Subp)) = Current_Scope
                       loop
                          Subp := Homonym (Subp);
+                         Make_Inline (Subp);
                       end loop;
                    end if;
                 end if;
*************** package body Sem_Prag is
*** 10461,10485 ****
                    else
                       Add_To_Config_Boolean_Restrictions (No_Elaboration_Code);
                    end if;
                 end if;
  
!                --  If this is a warning, then set the warning unless we already
!                --  have a real restriction active (we never want a warning to
!                --  override a real restriction).
  
!                if Warn then
!                   if not Restriction_Active (R_Id) then
!                      Set_Restriction (R_Id, N);
!                      Restriction_Warnings (R_Id) := True;
!                   end if;
  
!                --  If real restriction case, then set it and make sure that the
!                --  restriction warning flag is off, since a real restriction
!                --  always overrides a warning.
  
!                else
!                   Set_Restriction (R_Id, N);
!                   Restriction_Warnings (R_Id) := False;
                 end if;
  
                 --  Check for obsolescent restrictions in Ada 2005 mode
--- 10452,10490 ----
                    else
                       Add_To_Config_Boolean_Restrictions (No_Elaboration_Code);
                    end if;
+ 
+                --  Special processing for No_Tasking restriction (not just a
+                --  warning) when it appears as a configuration pragma.
+ 
+                elsif R_Id = No_Tasking
+                  and then No (Cunit (Main_Unit))
+                  and then not Warn
+                then
+                   Set_Global_No_Tasking;
                 end if;
  
!                Set_Restriction (R_Id, N, Warn);
  
!                if R_Id = No_Dynamic_CPU_Assignment
!                  or else R_Id = No_Tasks_Unassigned_To_CPU
!                then
!                   --  These imply No_Dependence =>
!                   --     "System.Multiprocessors.Dispatching_Domains".
!                   --  This is not strictly what the AI says, but it eliminates
!                   --  the need for run-time checks, which are undesirable in
!                   --  this context.
  
!                   Set_Restriction_No_Dependence
!                     (Sel_Comp
!                        (Sel_Comp ("system", "multiprocessors", Loc),
!                         "dispatching_domains"),
!                      Warn);
!                end if;
  
!                if R_Id = No_Tasks_Unassigned_To_CPU then
!                   --  Likewise, imply No_Dynamic_CPU_Assignment
! 
!                   Set_Restriction (No_Dynamic_CPU_Assignment, N, Warn);
                 end if;
  
                 --  Check for obsolescent restrictions in Ada 2005 mode
*************** package body Sem_Prag is
*** 10623,10648 ****
                      ("pragma ignored, value too large??", Arg);
                 end if;
  
!                --  Warning case. If the real restriction is active, then we
!                --  ignore the request, since warning never overrides a real
!                --  restriction. Otherwise we set the proper warning. Note that
!                --  this circuit sets the warning again if it is already set,
!                --  which is what we want, since the constant may have changed.
! 
!                if Warn then
!                   if not Restriction_Active (R_Id) then
!                      Set_Restriction
!                        (R_Id, N, Integer (UI_To_Int (Val)));
!                      Restriction_Warnings (R_Id) := True;
!                   end if;
! 
!                --  Real restriction case, set restriction and make sure warning
!                --  flag is off since real restriction always overrides warning.
! 
!                else
!                   Set_Restriction (R_Id, N, Integer (UI_To_Int (Val)));
!                   Restriction_Warnings (R_Id) := False;
!                end if;
              end if;
  
              Next (Arg);
--- 10628,10634 ----
                      ("pragma ignored, value too large??", Arg);
                 end if;
  
!                Set_Restriction (R_Id, N, Warn, Integer (UI_To_Int (Val)));
              end if;
  
              Next (Arg);
*************** package body Sem_Prag is
*** 11196,11202 ****
        --    Set required policies
  
        --      pragma Task_Dispatching_Policy (FIFO_Within_Priorities)
!       --        (For Ravenscar and GNAT_Extended_Ravenscar profiles)
        --      pragma Task_Dispatching_Policy (EDF_Across_Priorities)
        --        (For GNAT_Ravenscar_EDF profile)
        --      pragma Locking_Policy (Ceiling_Locking)
--- 11182,11188 ----
        --    Set required policies
  
        --      pragma Task_Dispatching_Policy (FIFO_Within_Priorities)
!       --        (For Ravenscar, Jorvik, and GNAT_Extended_Ravenscar profiles)
        --      pragma Task_Dispatching_Policy (EDF_Across_Priorities)
        --        (For GNAT_Ravenscar_EDF profile)
        --      pragma Locking_Policy (Ceiling_Locking)
*************** package body Sem_Prag is
*** 11234,11246 ****
              Error_Msg_String (1 .. Name_Len) := Name_Buffer (1 .. Name_Len);
           end Set_Error_Msg_To_Profile_Name;
  
-          --  Local variables
- 
-          Nod     : Node_Id;
-          Pref    : Node_Id;
-          Pref_Id : Node_Id;
-          Sel_Id  : Node_Id;
- 
           Profile_Dispatching_Policy : Character;
  
        --  Start of processing for Set_Ravenscar_Profile
--- 11220,11225 ----
*************** package body Sem_Prag is
*** 11312,11689 ****
           --    No_Dependence => Ada.Calendar
           --    No_Dependence => Ada.Task_Attributes
           --  are already set by previous call to Set_Profile_Restrictions.
  
           --  Set the following restrictions which were added to Ada 2005:
           --    No_Dependence => Ada.Execution_Time.Group_Budget
           --    No_Dependence => Ada.Execution_Time.Timers
  
           if Ada_Version >= Ada_2005 then
!             Pref_Id := Make_Identifier (Loc, Name_Find ("ada"));
!             Sel_Id  := Make_Identifier (Loc, Name_Find ("execution_time"));
! 
!             Pref :=
!               Make_Selected_Component
!                 (Sloc          => Loc,
!                  Prefix        => Pref_Id,
!                  Selector_Name => Sel_Id);
! 
!             Sel_Id := Make_Identifier (Loc, Name_Find ("group_budgets"));
! 
!             Nod :=
!               Make_Selected_Component
!                 (Sloc          => Loc,
!                  Prefix        => Pref,
!                  Selector_Name => Sel_Id);
! 
!             Set_Restriction_No_Dependence
!               (Unit    => Nod,
!                Warn    => Treat_Restrictions_As_Warnings,
!                Profile => Ravenscar);
! 
!             Sel_Id := Make_Identifier (Loc, Name_Find ("timers"));
! 
!             Nod :=
!               Make_Selected_Component
!                 (Sloc          => Loc,
!                  Prefix        => Pref,
!                  Selector_Name => Sel_Id);
! 
!             Set_Restriction_No_Dependence
!               (Unit    => Nod,
!                Warn    => Treat_Restrictions_As_Warnings,
!                Profile => Ravenscar);
           end if;
  
           --  Set the following restriction which was added to Ada 2012 (see
!          --  AI-0171):
           --    No_Dependence => System.Multiprocessors.Dispatching_Domains
  
           if Ada_Version >= Ada_2012 then
-             Pref_Id := Make_Identifier (Loc, Name_Find ("system"));
-             Sel_Id  := Make_Identifier (Loc, Name_Find ("multiprocessors"));
- 
-             Pref :=
-               Make_Selected_Component
-                 (Sloc          => Loc,
-                  Prefix        => Pref_Id,
-                  Selector_Name => Sel_Id);
- 
-             Sel_Id := Make_Identifier (Loc, Name_Find ("dispatching_domains"));
- 
-             Nod :=
-               Make_Selected_Component
-                 (Sloc          => Loc,
-                  Prefix        => Pref,
-                  Selector_Name => Sel_Id);
- 
              Set_Restriction_No_Dependence
!               (Unit    => Nod,
                 Warn    => Treat_Restrictions_As_Warnings,
                 Profile => Ravenscar);
-          end if;
-       end Set_Ravenscar_Profile;
  
!       -----------------------------------
!       -- Validate_Acc_Condition_Clause --
!       -----------------------------------
! 
!       procedure Validate_Acc_Condition_Clause (Clause : Node_Id) is
!       begin
!          Analyze_And_Resolve (Clause);
! 
!          if not Is_Boolean_Type (Etype (Clause)) then
!             Error_Pragma ("expected a boolean");
!          end if;
!       end Validate_Acc_Condition_Clause;
! 
!       ------------------------------
!       -- Validate_Acc_Data_Clause --
!       ------------------------------
! 
!       procedure Validate_Acc_Data_Clause (Clause : Node_Id) is
!          Expr : Node_Id;
! 
!       begin
!          Expr := Acc_First (Clause);
!          while Present (Expr) loop
!             if Nkind (Expr) /= N_Identifier then
!                Error_Pragma ("expected an identifer");
!             end if;
! 
!             Analyze_And_Resolve (Expr);
! 
!             Expr := Acc_Next (Expr);
!          end loop;
!       end Validate_Acc_Data_Clause;
! 
!       ----------------------------------
!       -- Validate_Acc_Int_Expr_Clause --
!       ----------------------------------
! 
!       procedure Validate_Acc_Int_Expr_Clause (Clause : Node_Id) is
!       begin
!          Analyze_And_Resolve (Clause);
! 
!          if not Is_Integer_Type (Etype (Clause)) then
!             Error_Pragma_Arg ("expected an integer", Clause);
!          end if;
!       end Validate_Acc_Int_Expr_Clause;
! 
!       ---------------------------------------
!       -- Validate_Acc_Int_Expr_List_Clause --
!       ---------------------------------------
! 
!       procedure Validate_Acc_Int_Expr_List_Clause (Clause : Node_Id) is
!          Expr : Node_Id;
! 
!       begin
!          Expr := Acc_First (Clause);
!          while Present (Expr) loop
!             Analyze_And_Resolve (Expr);
  
!             if not Is_Integer_Type (Etype (Expr)) then
!                Error_Pragma ("expected an integer");
              end if;
- 
-             Expr := Acc_Next (Expr);
-          end loop;
-       end Validate_Acc_Int_Expr_List_Clause;
- 
-       --------------------------------
-       -- Validate_Acc_Loop_Collapse --
-       --------------------------------
- 
-       procedure Validate_Acc_Loop_Collapse (Clause : Node_Id) is
-          Count    : Uint;
-          Par_Loop : Node_Id;
-          Stmt     : Node_Id;
- 
-       begin
-          --  Make sure the argument is a positive integer
- 
-          Analyze_And_Resolve (Clause);
- 
-          Count := Static_Integer (Clause);
-          if Count = No_Uint or else Count < 1 then
-             Error_Pragma_Arg ("expected a positive integer", Clause);
-          end if;
- 
-          --  Then, make sure we have at least Count-1 tightly-nested loops
-          --  (i.e. loops with no statements in between).
- 
-          Par_Loop := Parent (Parent (Parent (Clause)));
-          Stmt     := First (Statements (Par_Loop));
- 
-          --  Skip first pragmas in the parent loop
- 
-          while Present (Stmt) and then Nkind (Stmt) = N_Pragma loop
-             Next (Stmt);
-          end loop;
- 
-          if not Present (Next (Stmt)) then
-             while Nkind (Stmt) = N_Loop_Statement and Count > 1 loop
-                Stmt := First (Statements (Stmt));
-                exit when Present (Next (Stmt));
- 
-                Count := Count - 1;
-             end loop;
-          end if;
- 
-          if Count > 1 then
-             Error_Pragma_Arg
-               ("Collapse argument too high or loops not tightly nested",
-                Clause);
           end if;
-       end Validate_Acc_Loop_Collapse;
- 
-       ----------------------------
-       -- Validate_Acc_Loop_Gang --
-       ----------------------------
- 
-       procedure Validate_Acc_Loop_Gang (Clause : Node_Id) is
-       begin
-          Error_Pragma_Arg ("Loop_Gang not implemented", Clause);
-       end Validate_Acc_Loop_Gang;
- 
-       ------------------------------
-       -- Validate_Acc_Loop_Vector --
-       ------------------------------
- 
-       procedure Validate_Acc_Loop_Vector (Clause : Node_Id) is
-       begin
-          Error_Pragma_Arg ("Loop_Vector not implemented", Clause);
-       end Validate_Acc_Loop_Vector;
- 
-       -------------------------------
-       --  Validate_Acc_Loop_Worker --
-       -------------------------------
- 
-       procedure Validate_Acc_Loop_Worker (Clause : Node_Id) is
-       begin
-          Error_Pragma_Arg ("Loop_Worker not implemented", Clause);
-       end Validate_Acc_Loop_Worker;
- 
-       ---------------------------------
-       -- Validate_Acc_Name_Reduction --
-       ---------------------------------
- 
-       procedure Validate_Acc_Name_Reduction (Clause : Node_Id) is
- 
-          --  ??? On top of the following operations, the OpenAcc spec adds the
-          --  "bitwise and", "bitwise or" and modulo for C and ".eqv" and
-          --  ".neqv" for Fortran. Can we, should we and how do we support them
-          --  in Ada?
- 
-          type Reduction_Op is (Add_Op, Mul_Op, Max_Op, Min_Op, And_Op, Or_Op);
- 
-          function To_Reduction_Op (Op : String) return Reduction_Op;
-          --  Convert operator Op described by a String into its corresponding
-          --  enumeration value.
- 
-          ---------------------
-          -- To_Reduction_Op --
-          ---------------------
- 
-          function To_Reduction_Op (Op : String) return Reduction_Op is
-          begin
-             if Op = "+" then
-                return Add_Op;
- 
-             elsif Op = "*" then
-                return Mul_Op;
- 
-             elsif Op = "max" then
-                return Max_Op;
- 
-             elsif Op = "min" then
-                return Min_Op;
- 
-             elsif Op = "and" then
-                return And_Op;
- 
-             elsif Op = "or" then
-                return Or_Op;
- 
-             else
-                Error_Pragma ("unsuported reduction operation");
-             end if;
-          end To_Reduction_Op;
- 
-          --  Local variables
- 
-          Seen : constant Elist_Id := New_Elmt_List;
- 
-          Expr      : Node_Id;
-          Reduc_Op  : Node_Id;
-          Reduc_Var : Node_Id;
- 
-       --  Start of processing for Validate_Acc_Name_Reduction
- 
-       begin
-          --  Reduction operations appear in the following form:
-          --    ("+" => (a, b), "*" => c)
- 
-          Expr := First (Component_Associations (Clause));
-          while Present (Expr) loop
-             Reduc_Op := First (Choices (Expr));
-             String_To_Name_Buffer (Strval (Reduc_Op));
- 
-             case To_Reduction_Op (Name_Buffer (1 .. Name_Len)) is
-                when Add_Op
-                   | Mul_Op
-                   | Max_Op
-                   | Min_Op
-                =>
-                   Reduc_Var := Acc_First (Expression (Expr));
-                   while Present (Reduc_Var) loop
-                      Analyze_And_Resolve (Reduc_Var);
- 
-                      if Contains (Seen, Entity (Reduc_Var)) then
-                         Error_Pragma ("variable used in multiple reductions");
- 
-                      else
-                         if Nkind (Reduc_Var) /= N_Identifier
-                           or not Is_Numeric_Type (Etype (Reduc_Var))
-                         then
-                            Error_Pragma
-                              ("expected an identifier for a Numeric");
-                         end if;
- 
-                         Append_Elmt (Entity (Reduc_Var), Seen);
-                      end if;
- 
-                      Reduc_Var := Acc_Next (Reduc_Var);
-                   end loop;
- 
-                when And_Op
-                   | Or_Op
-                =>
-                   Reduc_Var := Acc_First (Expression (Expr));
-                   while Present (Reduc_Var) loop
-                      Analyze_And_Resolve (Reduc_Var);
- 
-                      if Contains (Seen, Entity (Reduc_Var)) then
-                         Error_Pragma ("variable used in multiple reductions");
- 
-                      else
-                         if Nkind (Reduc_Var) /= N_Identifier
-                           or not Is_Boolean_Type (Etype (Reduc_Var))
-                         then
-                            Error_Pragma
-                              ("expected a variable of type boolean");
-                         end if;
- 
-                         Append_Elmt (Entity (Reduc_Var), Seen);
-                      end if;
- 
-                      Reduc_Var := Acc_Next (Reduc_Var);
-                   end loop;
-             end case;
- 
-             Next (Expr);
-          end loop;
-       end Validate_Acc_Name_Reduction;
- 
-       -----------------------------------
-       -- Validate_Acc_Size_Expressions --
-       -----------------------------------
- 
-       procedure Validate_Acc_Size_Expressions (Clause : Node_Id) is
-          function Validate_Size_Expr (Expr : Node_Id) return Boolean;
-          --  A size expr is either an integer expression or "*"
- 
-          ------------------------
-          -- Validate_Size_Expr --
-          ------------------------
  
!          function Validate_Size_Expr (Expr : Node_Id) return Boolean is
!          begin
!             if Nkind (Expr) = N_Operator_Symbol then
!                return Get_String_Char (Strval (Expr), 1) = Get_Char_Code ('*');
!             end if;
! 
!             Analyze_And_Resolve (Expr);
! 
!             return Is_Integer_Type (Etype (Expr));
!          end Validate_Size_Expr;
! 
!          --  Local variables
! 
!          Expr : Node_Id;
! 
!       --  Start of processing for Validate_Acc_Size_Expressions
! 
!       begin
!          Expr := Acc_First (Clause);
!          while Present (Expr) loop
!             if not Validate_Size_Expr (Expr) then
!                Error_Pragma
!                  ("Size expressions should be either integers or '*'");
!             end if;
! 
!             Expr := Acc_Next (Expr);
!          end loop;
!       end Validate_Acc_Size_Expressions;
  
     --  Start of processing for Analyze_Pragma
  
--- 11291,11350 ----
           --    No_Dependence => Ada.Calendar
           --    No_Dependence => Ada.Task_Attributes
           --  are already set by previous call to Set_Profile_Restrictions.
+          --  Really???
  
           --  Set the following restrictions which were added to Ada 2005:
           --    No_Dependence => Ada.Execution_Time.Group_Budget
           --    No_Dependence => Ada.Execution_Time.Timers
  
           if Ada_Version >= Ada_2005 then
!             declare
!                Execution_Time : constant Node_Id :=
!                  Sel_Comp ("ada", "execution_time", Loc);
!                Group_Budgets : constant Node_Id :=
!                  Sel_Comp (Execution_Time, "group_budgets");
!                Timers : constant Node_Id :=
!                  Sel_Comp (Execution_Time, "timers");
!             begin
!                Set_Restriction_No_Dependence
!                  (Unit    => Group_Budgets,
!                   Warn    => Treat_Restrictions_As_Warnings,
!                   Profile => Ravenscar);
!                Set_Restriction_No_Dependence
!                  (Unit    => Timers,
!                   Warn    => Treat_Restrictions_As_Warnings,
!                   Profile => Ravenscar);
!             end;
           end if;
  
           --  Set the following restriction which was added to Ada 2012 (see
!          --  AI05-0171):
           --    No_Dependence => System.Multiprocessors.Dispatching_Domains
  
           if Ada_Version >= Ada_2012 then
              Set_Restriction_No_Dependence
!               (Sel_Comp
!                  (Sel_Comp ("system", "multiprocessors", Loc),
!                   "dispatching_domains"),
                 Warn    => Treat_Restrictions_As_Warnings,
                 Profile => Ravenscar);
  
!             --  Set the following restriction which was added to Ada 2020,
!             --  but as a binding interpretation:
!             --     No_Dependence => Ada.Synchronous_Barriers
!             --  for Ravenscar (and therefore for Ravenscar variants) but not
!             --  for Jorvik. The unit Ada.Synchronous_Barriers was introduced
!             --  in Ada2012 (AI05-0174).
  
!             if Profile /= Jorvik then
!                Set_Restriction_No_Dependence
!                  (Sel_Comp ("ada", "synchronous_barriers", Loc),
!                   Warn    => Treat_Restrictions_As_Warnings,
!                   Profile => Ravenscar);
              end if;
           end if;
  
!       end Set_Ravenscar_Profile;
  
     --  Start of processing for Analyze_Pragma
  
*************** package body Sem_Prag is
*** 11700,11705 ****
--- 11361,11373 ----
  
        Check_Restriction_No_Use_Of_Pragma (N);
  
+       if Get_Aspect_Id (Chars (Pragma_Identifier (N))) /= No_Aspect then
+          --  6.1/3 No_Specification_of_Aspect: Identifies an aspect for which
+          --    no aspect_specification, attribute_definition_clause, or pragma
+          --    is given.
+          Check_Restriction_No_Specification_Of_Aspect (N);
+       end if;
+ 
        --  Ignore pragma if Ignore_Pragma applies. Also ignore pragma
        --  Default_Scalar_Storage_Order if the -gnatI switch was given.
  
*************** package body Sem_Prag is
*** 11713,11731 ****
        --  Deal with unrecognized pragma
  
        if not Is_Pragma_Name (Pname) then
!          if Warn_On_Unrecognized_Pragma then
!             Error_Msg_Name_1 := Pname;
!             Error_Msg_N ("?g?unrecognized pragma%!", Pragma_Identifier (N));
  
!             for PN in First_Pragma_Name .. Last_Pragma_Name loop
!                if Is_Bad_Spelling_Of (Pname, PN) then
!                   Error_Msg_Name_1 := PN;
!                   Error_Msg_N -- CODEFIX
!                     ("\?g?possible misspelling of %!", Pragma_Identifier (N));
!                   exit;
!                end if;
!             end loop;
!          end if;
  
           return;
        end if;
--- 11381,11406 ----
        --  Deal with unrecognized pragma
  
        if not Is_Pragma_Name (Pname) then
!          declare
!             Msg_Issued : Boolean := False;
!          begin
!             Check_Restriction
!               (Msg_Issued, No_Unrecognized_Pragmas, Pragma_Identifier (N));
!             if not Msg_Issued and then Warn_On_Unrecognized_Pragma then
!                Error_Msg_Name_1 := Pname;
!                Error_Msg_N ("?g?unrecognized pragma%!", Pragma_Identifier (N));
  
!                for PN in First_Pragma_Name .. Last_Pragma_Name loop
!                   if Is_Bad_Spelling_Of (Pname, PN) then
!                      Error_Msg_Name_1 := PN;
!                      Error_Msg_N -- CODEFIX
!                        ("\?g?possible misspelling of %!",
!                         Pragma_Identifier (N));
!                      exit;
!                   end if;
!                end loop;
!             end if;
!          end;
  
           return;
        end if;
*************** package body Sem_Prag is
*** 11781,11786 ****
--- 11456,11467 ----
           end if;
        end if;
  
+       --  Mark assertion pragmas as Ghost depending on their enclosing context
+ 
+       if Assertion_Expression_Pragma (Prag_Id) then
+          Mark_Ghost_Pragma (N, Current_Scope);
+       end if;
+ 
        --  Preset arguments
  
        Arg_Count := 0;
*************** package body Sem_Prag is
*** 11788,11793 ****
--- 11469,11475 ----
        Arg2      := Empty;
        Arg3      := Empty;
        Arg4      := Empty;
+       Arg5      := Empty;
  
        if Present (Pragma_Argument_Associations (N)) then
           Arg_Count := List_Length (Pragma_Argument_Associations (N));
*************** package body Sem_Prag is
*** 11801,11806 ****
--- 11483,11492 ----
  
                 if Present (Arg3) then
                    Arg4 := Next (Arg3);
+ 
+                   if Present (Arg4) then
+                      Arg5 := Next (Arg4);
+                   end if;
                 end if;
              end if;
           end if;
*************** package body Sem_Prag is
*** 11853,11859 ****
           --    SIMPLE_OPTION
           --  | NAME_VALUE_OPTION
  
!          --  SIMPLE_OPTION ::= Ghost | Synchronous
  
           --  NAME_VALUE_OPTION ::=
           --    Part_Of => ABSTRACT_STATE
--- 11539,11545 ----
           --    SIMPLE_OPTION
           --  | NAME_VALUE_OPTION
  
!          --  SIMPLE_OPTION ::= Ghost | Relaxed_Initialization | Synchronous
  
           --  NAME_VALUE_OPTION ::=
           --    Part_Of => ABSTRACT_STATE
*************** package body Sem_Prag is
*** 11923,11937 ****
              is
                 --  Flags used to verify the consistency of options
  
!                AR_Seen          : Boolean := False;
!                AW_Seen          : Boolean := False;
!                ER_Seen          : Boolean := False;
!                EW_Seen          : Boolean := False;
!                External_Seen    : Boolean := False;
!                Ghost_Seen       : Boolean := False;
!                Others_Seen      : Boolean := False;
!                Part_Of_Seen     : Boolean := False;
!                Synchronous_Seen : Boolean := False;
  
                 --  Flags used to store the static value of all external states'
                 --  expressions.
--- 11609,11624 ----
              is
                 --  Flags used to verify the consistency of options
  
!                AR_Seen                     : Boolean := False;
!                AW_Seen                     : Boolean := False;
!                ER_Seen                     : Boolean := False;
!                EW_Seen                     : Boolean := False;
!                External_Seen               : Boolean := False;
!                Ghost_Seen                  : Boolean := False;
!                Others_Seen                 : Boolean := False;
!                Part_Of_Seen                : Boolean := False;
!                Relaxed_Initialization_Seen : Boolean := False;
!                Synchronous_Seen            : Boolean := False;
  
                 --  Flags used to store the static value of all external states'
                 --  expressions.
*************** package body Sem_Prag is
*** 12075,12081 ****
                    if Nkind (Prop) = N_Others_Choice then
                       if Others_Seen then
                          SPARK_Msg_N
!                           ("only one others choice allowed in option External",
                             Prop);
                       else
                          Others_Seen := True;
--- 11762,11768 ----
                    if Nkind (Prop) = N_Others_Choice then
                       if Others_Seen then
                          SPARK_Msg_N
!                           ("only one OTHERS choice allowed in option External",
                             Prop);
                       else
                          Others_Seen := True;
*************** package body Sem_Prag is
*** 12083,12099 ****
  
                    elsif Others_Seen then
                       SPARK_Msg_N
!                        ("others must be the last property in option External",
                          Prop);
  
                    --  The only remaining legal options are the four predefined
                    --  external properties.
  
                    elsif Nkind (Prop) = N_Identifier
!                     and then Nam_In (Chars (Prop), Name_Async_Readers,
!                                                    Name_Async_Writers,
!                                                    Name_Effective_Reads,
!                                                    Name_Effective_Writes)
                    then
                       null;
  
--- 11770,11786 ----
  
                    elsif Others_Seen then
                       SPARK_Msg_N
!                        ("OTHERS must be the last property in option External",
                          Prop);
  
                    --  The only remaining legal options are the four predefined
                    --  external properties.
  
                    elsif Nkind (Prop) = N_Identifier
!                     and then Chars (Prop) in Name_Async_Readers
!                                            | Name_Async_Writers
!                                            | Name_Effective_Reads
!                                            | Name_Effective_Writes
                    then
                       null;
  
*************** package body Sem_Prag is
*** 12412,12417 ****
--- 12099,12110 ----
                             Check_Duplicate_Option (Opt, Synchronous_Seen);
                             Check_Ghost_Synchronous;
  
+                         --  Relaxed_Initialization
+ 
+                         elsif Chars (Opt) = Name_Relaxed_Initialization then
+                            Check_Duplicate_Option
+                              (Opt, Relaxed_Initialization_Seen);
+ 
                          --  Option Part_Of without an encapsulating state is
                          --  illegal (SPARK RM 7.1.4(8)).
  
*************** package body Sem_Prag is
*** 12564,12571 ****
  
              Pack_Decl := Find_Related_Package_Or_Body (N, Do_Checks => True);
  
!             if not Nkind_In (Pack_Decl, N_Generic_Package_Declaration,
!                                         N_Package_Declaration)
              then
                 Pragma_Misplaced;
                 return;
--- 12257,12264 ----
  
              Pack_Decl := Find_Related_Package_Or_Body (N, Do_Checks => True);
  
!             if Nkind (Pack_Decl) not in
!                  N_Generic_Package_Declaration | N_Package_Declaration
              then
                 Pragma_Misplaced;
                 return;
*************** package body Sem_Prag is
*** 12628,12933 ****
              Analyze_If_Present (Pragma_Initial_Condition);
           end Abstract_State;
  
-          --------------
-          -- Acc_Data --
-          --------------
- 
-          when Pragma_Acc_Data => Acc_Data : declare
-             Clause_Names : constant Name_List :=
-               (Name_Attach,
-                Name_Copy,
-                Name_Copy_In,
-                Name_Copy_Out,
-                Name_Create,
-                Name_Delete,
-                Name_Detach,
-                Name_Device_Ptr,
-                Name_No_Create,
-                Name_Present);
- 
-             Clause  : Node_Id;
-             Clauses : Args_List (Clause_Names'Range);
- 
-          begin
-             if not OpenAcc_Enabled then
-                return;
-             end if;
- 
-             GNAT_Pragma;
- 
-             if Nkind (Parent (N)) /= N_Loop_Statement then
-                Error_Pragma
-                  ("Acc_Data pragma should be placed in loop or block "
-                   & "statements");
-             end if;
- 
-             Gather_Associations (Clause_Names, Clauses);
- 
-             for Id in Clause_Names'First .. Clause_Names'Last loop
-                Clause := Clauses (Id);
- 
-                if Present (Clause) then
-                   case Clause_Names (Id) is
-                      when Name_Copy
-                         | Name_Copy_In
-                         | Name_Copy_Out
-                         | Name_Create
-                         | Name_Device_Ptr
-                         | Name_Present
-                      =>
-                         Validate_Acc_Data_Clause (Clause);
- 
-                      when Name_Attach
-                         | Name_Detach
-                         | Name_Delete
-                         | Name_No_Create
-                       =>
-                         Error_Pragma ("unsupported pragma clause");
- 
-                      when others =>
-                         raise Program_Error;
-                   end case;
-                end if;
-             end loop;
- 
-             Set_Is_OpenAcc_Environment (Parent (N));
-          end Acc_Data;
- 
-          --------------
-          -- Acc_Loop --
-          --------------
- 
-          when Pragma_Acc_Loop => Acc_Loop : declare
-             Clause_Names : constant Name_List :=
-               (Name_Auto,
-                Name_Collapse,
-                Name_Gang,
-                Name_Independent,
-                Name_Acc_Private,
-                Name_Reduction,
-                Name_Seq,
-                Name_Tile,
-                Name_Vector,
-                Name_Worker);
- 
-             Clause  : Node_Id;
-             Clauses : Args_List (Clause_Names'Range);
-             Par     : Node_Id;
- 
-          begin
-             if not OpenAcc_Enabled then
-                return;
-             end if;
- 
-             GNAT_Pragma;
- 
-             --  Make sure the pragma is in an openacc construct
- 
-             Check_Loop_Pragma_Placement;
- 
-             Par := Parent (N);
-             while Present (Par)
-               and then (Nkind (Par) /= N_Loop_Statement
-                          or else not Is_OpenAcc_Environment (Par))
-             loop
-                Par := Parent (Par);
-             end loop;
- 
-             if not Is_OpenAcc_Environment (Par) then
-                Error_Pragma
-                  ("Acc_Loop directive must be associated with an OpenAcc "
-                   & "construct region");
-             end if;
- 
-             Gather_Associations (Clause_Names, Clauses);
- 
-             for Id in Clause_Names'First .. Clause_Names'Last loop
-                Clause := Clauses (Id);
- 
-                if Present (Clause) then
-                   case Clause_Names (Id) is
-                      when Name_Auto
-                         | Name_Independent
-                         | Name_Seq
-                      =>
-                         null;
- 
-                      when Name_Collapse =>
-                         Validate_Acc_Loop_Collapse (Clause);
- 
-                      when Name_Gang =>
-                         Validate_Acc_Loop_Gang (Clause);
- 
-                      when Name_Acc_Private =>
-                         Validate_Acc_Data_Clause (Clause);
- 
-                      when Name_Reduction =>
-                         Validate_Acc_Name_Reduction (Clause);
- 
-                      when Name_Tile =>
-                         Validate_Acc_Size_Expressions (Clause);
- 
-                      when Name_Vector =>
-                         Validate_Acc_Loop_Vector (Clause);
- 
-                      when Name_Worker =>
-                         Validate_Acc_Loop_Worker (Clause);
- 
-                      when others =>
-                         raise Program_Error;
-                   end case;
-                end if;
-             end loop;
- 
-             Set_Is_OpenAcc_Loop (Parent (N));
-          end Acc_Loop;
- 
-          ----------------------------------
-          -- Acc_Parallel and Acc_Kernels --
-          ----------------------------------
- 
-          when Pragma_Acc_Parallel
-             | Pragma_Acc_Kernels
-          =>
-          Acc_Kernels_Or_Parallel : declare
-             Clause_Names : constant Name_List :=
-               (Name_Acc_If,
-                Name_Async,
-                Name_Copy,
-                Name_Copy_In,
-                Name_Copy_Out,
-                Name_Create,
-                Name_Default,
-                Name_Device_Ptr,
-                Name_Device_Type,
-                Name_Num_Gangs,
-                Name_Num_Workers,
-                Name_Present,
-                Name_Vector_Length,
-                Name_Wait,
- 
-                --  Parallel only
- 
-                Name_Acc_Private,
-                Name_First_Private,
-                Name_Reduction,
- 
-                --  Kernels only
- 
-                Name_Attach,
-                Name_No_Create);
- 
-             Clause  : Node_Id;
-             Clauses : Args_List (Clause_Names'Range);
- 
-          begin
-             if not OpenAcc_Enabled then
-                return;
-             end if;
- 
-             GNAT_Pragma;
-             Check_Loop_Pragma_Placement;
- 
-             if Nkind (Parent (N)) /= N_Loop_Statement then
-                Error_Pragma
-                  ("pragma should be placed in loop or block statements");
-             end if;
- 
-             Gather_Associations (Clause_Names, Clauses);
- 
-             for Id in Clause_Names'First .. Clause_Names'Last loop
-                Clause := Clauses (Id);
- 
-                if Present (Clause) then
-                   if Chars (Parent (Clause)) = No_Name then
-                      Error_Pragma ("all arguments should be associations");
-                   else
-                      case Clause_Names (Id) is
- 
-                         --  Note: According to the OpenAcc Standard v2.6,
-                         --  Async's argument should be optional. Because this
-                         --  complicates parsing the clause, the argument is
-                         --  made mandatory. The standard defines two negative
-                         --  values, acc_async_noval and acc_async_sync. When
-                         --  given acc_async_noval as value, the clause should
-                         --  behave as if no argument was given. According to
-                         --  the standard, acc_async_noval is defined in header
-                         --  files for C and Fortran, thus this value should
-                         --  probably be defined in the OpenAcc Ada library once
-                         --  it is implemented.
- 
-                         when Name_Async
-                            | Name_Num_Gangs
-                            | Name_Num_Workers
-                            | Name_Vector_Length
-                         =>
-                            Validate_Acc_Int_Expr_Clause (Clause);
- 
-                         when Name_Acc_If =>
-                            Validate_Acc_Condition_Clause (Clause);
- 
-                         --  Unsupported by GCC
- 
-                         when Name_Attach
-                            | Name_No_Create
-                         =>
-                            Error_Pragma ("unsupported clause");
- 
-                         when Name_Acc_Private
-                            | Name_First_Private
-                         =>
-                            if Prag_Id /= Pragma_Acc_Parallel then
-                               Error_Pragma
-                                 ("argument is only available for 'Parallel' "
-                                  & "construct");
-                            else
-                               Validate_Acc_Data_Clause (Clause);
-                            end if;
- 
-                         when Name_Copy
-                            | Name_Copy_In
-                            | Name_Copy_Out
-                            | Name_Create
-                            | Name_Device_Ptr
-                            | Name_Present
-                         =>
-                            Validate_Acc_Data_Clause (Clause);
- 
-                         when Name_Reduction =>
-                            if Prag_Id /= Pragma_Acc_Parallel then
-                               Error_Pragma
-                                 ("argument is only available for 'Parallel' "
-                                  & "construct");
-                            else
-                               Validate_Acc_Name_Reduction (Clause);
-                            end if;
- 
-                         when Name_Default =>
-                            if Chars (Clause) /= Name_None then
-                               Error_Pragma ("expected none");
-                            end if;
- 
-                         when Name_Device_Type =>
-                            Error_Pragma ("unsupported pragma clause");
- 
-                         --  Similar to Name_Async, Name_Wait's arguments should
-                         --  be optional. However, this can be simulated using
-                         --  acc_async_noval, hence, we do not bother making the
-                         --  argument optional for now.
- 
-                         when Name_Wait =>
-                            Validate_Acc_Int_Expr_List_Clause (Clause);
- 
-                         when others =>
-                            raise Program_Error;
-                      end case;
-                   end if;
-                end if;
-             end loop;
- 
-             Set_Is_OpenAcc_Environment (Parent (N));
-          end Acc_Kernels_Or_Parallel;
- 
           ------------
           -- Ada_83 --
           ------------
--- 12321,12326 ----
*************** package body Sem_Prag is
*** 13177,13186 ****
              Check_Ada_83_Warning;
              Check_Valid_Library_Unit_Pragma;
  
-             if Nkind (N) = N_Null_Statement then
-                return;
-             end if;
- 
              Lib_Entity := Find_Lib_Unit_Name;
  
              --  A pragma that applies to a Ghost entity becomes Ghost for the
--- 12570,12575 ----
*************** package body Sem_Prag is
*** 13497,13504 ****
              if Arg_Count > 1 then
                 Check_Optional_Identifier (Arg2, Name_Message);
  
!                --  Provide semantic annnotations for optional argument, for
                 --  ASIS use, before rewriting.
  
                 Preanalyze_And_Resolve (Expression (Arg2), Standard_String);
                 Append_To (New_Args, New_Copy_Tree (Arg2));
--- 12886,12894 ----
              if Arg_Count > 1 then
                 Check_Optional_Identifier (Arg2, Name_Message);
  
!                --  Provide semantic annotations for optional argument, for
                 --  ASIS use, before rewriting.
+                --  Is this still needed???
  
                 Preanalyze_And_Resolve (Expression (Arg2), Standard_String);
                 Append_To (New_Args, New_Copy_Tree (Arg2));
*************** package body Sem_Prag is
*** 13528,13557 ****
  
           --  ASSERTION_KIND ::= RM_ASSERTION_KIND | ID_ASSERTION_KIND
  
!          --  RM_ASSERTION_KIND ::= Assert               |
!          --                        Static_Predicate     |
!          --                        Dynamic_Predicate    |
!          --                        Pre                  |
!          --                        Pre'Class            |
!          --                        Post                 |
!          --                        Post'Class           |
!          --                        Type_Invariant       |
!          --                        Type_Invariant'Class
  
!          --  ID_ASSERTION_KIND ::= Assert_And_Cut            |
!          --                        Assume                    |
!          --                        Contract_Cases            |
!          --                        Debug                     |
!          --                        Default_Initial_Condition |
!          --                        Ghost                     |
!          --                        Initial_Condition         |
!          --                        Loop_Invariant            |
!          --                        Loop_Variant              |
!          --                        Postcondition             |
!          --                        Precondition              |
!          --                        Predicate                 |
!          --                        Refined_Post              |
!          --                        Statement_Assertions
  
           --  Note: The RM_ASSERTION_KIND list is language-defined, and the
           --  ID_ASSERTION_KIND list contains implementation-defined additions
--- 12918,12948 ----
  
           --  ASSERTION_KIND ::= RM_ASSERTION_KIND | ID_ASSERTION_KIND
  
!          --  RM_ASSERTION_KIND ::= Assert                     |
!          --                        Static_Predicate           |
!          --                        Dynamic_Predicate          |
!          --                        Pre                        |
!          --                        Pre'Class                  |
!          --                        Post                       |
!          --                        Post'Class                 |
!          --                        Type_Invariant             |
!          --                        Type_Invariant'Class       |
!          --                        Default_Initial_Condition
  
!          --  ID_ASSERTION_KIND ::= Assert_And_Cut       |
!          --                        Assume               |
!          --                        Contract_Cases       |
!          --                        Debug                |
!          --                        Ghost                |
!          --                        Initial_Condition    |
!          --                        Loop_Invariant       |
!          --                        Loop_Variant         |
!          --                        Postcondition        |
!          --                        Precondition         |
!          --                        Predicate            |
!          --                        Refined_Post         |
!          --                        Statement_Assertions |
!          --                        Subprogram_Variant
  
           --  Note: The RM_ASSERTION_KIND list is language-defined, and the
           --  ID_ASSERTION_KIND list contains implementation-defined additions
*************** package body Sem_Prag is
*** 13699,13707 ****
                       --  The Ghost policy must be either Check or Ignore
                       --  (SPARK RM 6.9(6)).
  
!                      if not Nam_In (Chars (Policy), Name_Check,
!                                                     Name_Ignore)
!                      then
                          Error_Pragma_Arg
                            ("argument of pragma % Ghost must be Check or "
                             & "Ignore", Policy);
--- 13090,13096 ----
                       --  The Ghost policy must be either Check or Ignore
                       --  (SPARK RM 6.9(6)).
  
!                      if Chars (Policy) not in Name_Check | Name_Ignore then
                          Error_Pragma_Arg
                            ("argument of pragma % Ghost must be Check or "
                             & "Ignore", Policy);
*************** package body Sem_Prag is
*** 13832,13872 ****
              | Pragma_No_Caching
           =>
           Async_Effective : declare
!             Obj_Decl : Node_Id;
!             Obj_Id   : Entity_Id;
! 
           begin
              GNAT_Pragma;
              Check_No_Identifiers;
              Check_At_Most_N_Arguments  (1);
  
!             Obj_Decl := Find_Related_Context (N, Do_Checks => True);
  
!             --  Object declaration
  
!             if Nkind (Obj_Decl) /= N_Object_Declaration then
!                Pragma_Misplaced;
!                return;
              end if;
  
!             Obj_Id := Defining_Entity (Obj_Decl);
  
              --  Perform minimal verification to ensure that the argument is at
!             --  least a variable. Subsequent finer grained checks will be done
!             --  at the end of the declarative region the contains the pragma.
  
!             if Ekind (Obj_Id) = E_Variable then
  
                 --  A pragma that applies to a Ghost entity becomes Ghost for
                 --  the purposes of legality checks and removal of ignored Ghost
                 --  code.
  
!                Mark_Ghost_Pragma (N, Obj_Id);
  
                 --  Chain the pragma on the contract for further processing by
                 --  Analyze_External_Property_In_Decl_Part.
  
!                Add_Contract_Item (N, Obj_Id);
  
                 --  Analyze the Boolean expression (if any)
  
--- 13221,13286 ----
              | Pragma_No_Caching
           =>
           Async_Effective : declare
!             Obj_Or_Type_Decl : Node_Id;
!             Obj_Or_Type_Id   : Entity_Id;
           begin
              GNAT_Pragma;
              Check_No_Identifiers;
              Check_At_Most_N_Arguments  (1);
  
!             Obj_Or_Type_Decl := Find_Related_Context (N, Do_Checks => True);
  
!             --  Pragma must apply to a object declaration or to a type
!             --  declaration (only the former in the No_Caching case).
!             --  Original_Node is necessary to account for untagged derived
!             --  types that are rewritten as subtypes of their
!             --  respective root types.
  
!             if Nkind (Obj_Or_Type_Decl) /= N_Object_Declaration then
!                if Prag_Id = Pragma_No_Caching
!                   or else Nkind (Original_Node (Obj_Or_Type_Decl)) not in
!                             N_Full_Type_Declaration    |
!                             N_Private_Type_Declaration |
!                             N_Formal_Type_Declaration  |
!                             N_Task_Type_Declaration    |
!                             N_Protected_Type_Declaration
!                then
!                   Pragma_Misplaced;
!                   return;
!                end if;
              end if;
  
!             Obj_Or_Type_Id := Defining_Entity (Obj_Or_Type_Decl);
  
              --  Perform minimal verification to ensure that the argument is at
!             --  least a variable or a type. Subsequent finer grained checks
!             --  will be done at the end of the declarative region that
!             --  contains the pragma.
  
!             if Ekind (Obj_Or_Type_Id) = E_Variable
!               or else Is_Type (Obj_Or_Type_Id)
!             then
! 
!                --  In the case of a type, pragma is a type-related
!                --  representation item and so requires checks common to
!                --  all type-related representation items.
! 
!                if Is_Type (Obj_Or_Type_Id)
!                  and then Rep_Item_Too_Late (Obj_Or_Type_Id, N)
!                then
!                   return;
!                end if;
  
                 --  A pragma that applies to a Ghost entity becomes Ghost for
                 --  the purposes of legality checks and removal of ignored Ghost
                 --  code.
  
!                Mark_Ghost_Pragma (N, Obj_Or_Type_Id);
  
                 --  Chain the pragma on the contract for further processing by
                 --  Analyze_External_Property_In_Decl_Part.
  
!                Add_Contract_Item (N, Obj_Or_Type_Id);
  
                 --  Analyze the Boolean expression (if any)
  
*************** package body Sem_Prag is
*** 13877,13883 ****
              --  Otherwise the external property applies to a constant
  
              else
!                Error_Pragma ("pragma % must apply to a volatile object");
              end if;
           end Async_Effective;
  
--- 13291,13298 ----
              --  Otherwise the external property applies to a constant
  
              else
!                Error_Pragma
!                  ("pragma % must apply to a volatile type or object");
              end if;
           end Async_Effective;
  
*************** package body Sem_Prag is
*** 14083,14091 ****
              if (Nkind (D) = N_Full_Type_Declaration and then Is_Array_Type (E))
                or else
                  (Nkind (D) = N_Object_Declaration
!                    and then (Ekind (E) = E_Constant
!                               or else
!                              Ekind (E) = E_Variable)
                     and then Nkind (Object_Definition (D)) =
                                         N_Constrained_Array_Definition)
                or else
--- 13498,13504 ----
              if (Nkind (D) = N_Full_Type_Declaration and then Is_Array_Type (E))
                or else
                  (Nkind (D) = N_Object_Declaration
!                    and then Ekind (E) in E_Constant | E_Variable
                     and then Nkind (Object_Definition (D)) =
                                         N_Constrained_Array_Definition)
                or else
*************** package body Sem_Prag is
*** 14101,14111 ****
                 --  Atomic implies both Independent and Volatile
  
                 if Prag_Id = Pragma_Atomic_Components then
-                   if Ada_Version >= Ada_2020 then
-                      Check_Atomic_VFA
-                        (Component_Type (Etype (E)), VFA => False);
-                   end if;
- 
                    Set_Has_Atomic_Components (E);
                    Set_Has_Independent_Components (E);
                 end if;
--- 13514,13519 ----
*************** package body Sem_Prag is
*** 14518,14524 ****
              --  identifier is Name.
  
              if Nkind (Arg1) /= N_Pragma_Argument_Association
!               or else Nam_In (Chars (Arg1), No_Name, Name_Name)
              then
                 --  Old syntax
  
--- 13926,13932 ----
              --  identifier is Name.
  
              if Nkind (Arg1) /= N_Pragma_Argument_Association
!               or else Chars (Arg1) in No_Name | Name_Name
              then
                 --  Old syntax
  
*************** package body Sem_Prag is
*** 14531,14537 ****
  
                 --  Check forbidden check kind
  
!                if Nam_In (Chars (Kind), Name_Name, Name_Policy) then
                    Error_Msg_Name_2 := Chars (Kind);
                    Error_Pragma_Arg
                      ("pragma% does not allow% as check name", Arg1);
--- 13939,13945 ----
  
                 --  Check forbidden check kind
  
!                if Chars (Kind) in Name_Name | Name_Policy then
                    Error_Msg_Name_2 := Chars (Kind);
                    Error_Pragma_Arg
                      ("pragma% does not allow% as check name", Arg1);
*************** package body Sem_Prag is
*** 14715,14721 ****
           --  pragma Complex_Representation ([Entity =>] LOCAL_NAME);
  
           when Pragma_Complex_Representation => Complex_Representation : declare
!             E_Id : Entity_Id;
              E    : Entity_Id;
              Ent  : Entity_Id;
  
--- 14123,14129 ----
           --  pragma Complex_Representation ([Entity =>] LOCAL_NAME);
  
           when Pragma_Complex_Representation => Complex_Representation : declare
!             E_Id : Node_Id;
              E    : Entity_Id;
              Ent  : Entity_Id;
  
*************** package body Sem_Prag is
*** 15054,15062 ****
              --  or subprogram body because it cannot benefit from forward
              --  references.
  
!             if Nkind_In (Subp_Decl, N_Entry_Body,
!                                     N_Subprogram_Body,
!                                     N_Subprogram_Body_Stub)
              then
                 --  The legality checks of pragma Contract_Cases are affected by
                 --  the SPARK mode in effect and the volatility of the context.
--- 14462,14470 ----
              --  or subprogram body because it cannot benefit from forward
              --  references.
  
!             if Nkind (Subp_Decl) in N_Entry_Body
!                                   | N_Subprogram_Body
!                                   | N_Subprogram_Body_Stub
              then
                 --  The legality checks of pragma Contract_Cases are affected by
                 --  the SPARK mode in effect and the volatility of the context.
*************** package body Sem_Prag is
*** 15286,15291 ****
--- 14694,14834 ----
                    & "effect?j?", N);
              end if;
  
+          --------------------
+          -- CUDA_Execute --
+          --------------------
+ 
+          --    pragma CUDA_Execute (PROCEDURE_CALL_STATEMENT,
+          --                         EXPRESSION,
+          --                         EXPRESSION,
+          --                         [, EXPRESSION
+          --                         [, EXPRESSION]]);
+ 
+          when Pragma_CUDA_Execute => CUDA_Execute : declare
+ 
+             function Is_Acceptable_Dim3 (N : Node_Id) return Boolean;
+             --  Returns True if N is an acceptable argument for CUDA_Execute,
+             --  False otherwise.
+ 
+             ------------------------
+             -- Is_Acceptable_Dim3 --
+             ------------------------
+ 
+             function Is_Acceptable_Dim3 (N : Node_Id) return Boolean is
+                Expr : Node_Id;
+             begin
+                if Is_RTE (Etype (N), RE_Dim3)
+                  or else Is_Integer_Type (Etype (N))
+                then
+                   return True;
+                end if;
+ 
+                if Nkind (N) = N_Aggregate
+                  and then List_Length (Expressions (N)) = 3
+                then
+                   Expr := First (Expressions (N));
+                   while Present (Expr) loop
+                      Analyze_And_Resolve (Expr, Any_Integer);
+                      Next (Expr);
+                   end loop;
+                   return True;
+                end if;
+ 
+                return False;
+             end Is_Acceptable_Dim3;
+ 
+             --  Local variables
+ 
+             Block_Dimensions : constant Node_Id := Get_Pragma_Arg (Arg3);
+             Grid_Dimensions  : constant Node_Id := Get_Pragma_Arg (Arg2);
+             Kernel_Call      : constant Node_Id := Get_Pragma_Arg (Arg1);
+             Shared_Memory    : Node_Id;
+             Stream           : Node_Id;
+ 
+             --  Start of processing for CUDA_Execute
+ 
+          begin
+             GNAT_Pragma;
+             Check_At_Least_N_Arguments (3);
+             Check_At_Most_N_Arguments (5);
+ 
+             Analyze_And_Resolve (Kernel_Call);
+             if Nkind (Kernel_Call) /= N_Function_Call
+                or else Etype (Kernel_Call) /= Standard_Void_Type
+             then
+                --  In `pragma CUDA_Execute (Kernel_Call (...), ...)`,
+                --  GNAT sees Kernel_Call as an N_Function_Call since
+                --  Kernel_Call "looks" like an expression. However, only
+                --  procedures can be kernels, so to make things easier for the
+                --  user the error message complains about Kernel_Call not being
+                --  a procedure call.
+ 
+                Error_Msg_N ("first argument of & must be a procedure call", N);
+             end if;
+ 
+             Analyze (Grid_Dimensions);
+             if not Is_Acceptable_Dim3 (Grid_Dimensions) then
+                Error_Msg_N
+                  ("second argument of & must be an Integer, Dim3 or aggregate "
+                   & "containing 3 Integers", N);
+             end if;
+ 
+             Analyze (Block_Dimensions);
+             if not Is_Acceptable_Dim3 (Block_Dimensions) then
+                Error_Msg_N
+                  ("third argument of & must be an Integer, Dim3 or aggregate "
+                   & "containing 3 Integers", N);
+             end if;
+ 
+             if Present (Arg4) then
+                Shared_Memory := Get_Pragma_Arg (Arg4);
+                Analyze_And_Resolve (Shared_Memory, Any_Integer);
+ 
+                if Present (Arg5) then
+                   Stream := Get_Pragma_Arg (Arg5);
+                   Analyze_And_Resolve (Stream, RTE (RE_Stream_T));
+                end if;
+             end if;
+          end CUDA_Execute;
+ 
+          -----------------
+          -- CUDA_Global --
+          -----------------
+ 
+          --  pragma CUDA_Global (IDENTIFIER);
+ 
+          when Pragma_CUDA_Global => CUDA_Global : declare
+             Arg_Node    : Node_Id;
+             Kernel_Proc : Entity_Id;
+             Pack_Id     : Entity_Id;
+          begin
+             GNAT_Pragma;
+             Check_At_Least_N_Arguments (1);
+             Check_At_Most_N_Arguments (1);
+             Check_Optional_Identifier (Arg1, Name_Entity);
+             Check_Arg_Is_Local_Name (Arg1);
+ 
+             Arg_Node := Get_Pragma_Arg (Arg1);
+             Analyze (Arg_Node);
+ 
+             Kernel_Proc := Entity (Arg_Node);
+             Pack_Id := Scope (Kernel_Proc);
+ 
+             if Ekind (Kernel_Proc) /= E_Procedure then
+                Error_Msg_NE ("& must be a procedure", N, Kernel_Proc);
+ 
+             elsif Ekind (Pack_Id) /= E_Package
+               or else not Is_Library_Level_Entity (Pack_Id)
+             then
+                Error_Msg_NE
+                   ("& must reside in a library-level package", N, Kernel_Proc);
+ 
+             else
+                Set_Is_CUDA_Kernel (Kernel_Proc);
+                Add_CUDA_Kernel (Pack_Id, Kernel_Proc);
+             end if;
+          end CUDA_Global;
+ 
           ----------------
           -- CPP_Vtable --
           ----------------
*************** package body Sem_Prag is
*** 15314,15326 ****
              Ada_2012_Pragma;
              Check_No_Identifiers;
              Check_Arg_Count (1);
  
              --  Subprogram case
  
              if Nkind (P) = N_Subprogram_Body then
                 Check_In_Main_Program;
  
-                Arg := Get_Pragma_Arg (Arg1);
                 Analyze_And_Resolve (Arg, Any_Integer);
  
                 Ent := Defining_Unit_Name (Specification (P));
--- 14857,14869 ----
              Ada_2012_Pragma;
              Check_No_Identifiers;
              Check_Arg_Count (1);
+             Arg := Get_Pragma_Arg (Arg1);
  
              --  Subprogram case
  
              if Nkind (P) = N_Subprogram_Body then
                 Check_In_Main_Program;
  
                 Analyze_And_Resolve (Arg, Any_Integer);
  
                 Ent := Defining_Unit_Name (Specification (P));
*************** package body Sem_Prag is
*** 15367,15373 ****
              --  Task case
  
              elsif Nkind (P) = N_Task_Definition then
-                Arg := Get_Pragma_Arg (Arg1);
                 Ent := Defining_Identifier (Parent (P));
  
                 --  The expression must be analyzed in the special manner
--- 14910,14915 ----
*************** package body Sem_Prag is
*** 15376,15381 ****
--- 14918,14933 ----
  
                 Preanalyze_Spec_Expression (Arg, RTE (RE_CPU_Range));
  
+                --  See comment in Sem_Ch13 about the following restrictions
+ 
+                if Is_OK_Static_Expression (Arg) then
+                   if Expr_Value (Arg) = Uint_0 then
+                      Check_Restriction (No_Tasks_Unassigned_To_CPU, N);
+                   end if;
+                else
+                   Check_Restriction (No_Dynamic_CPU_Assignment, N);
+                end if;
+ 
              --  Anything else is incorrect
  
              else
*************** package body Sem_Prag is
*** 15464,15474 ****
                 Call := Get_Pragma_Arg (Arg1);
              end if;
  
!             if Nkind_In (Call, N_Expanded_Name,
!                                N_Function_Call,
!                                N_Identifier,
!                                N_Indexed_Component,
!                                N_Selected_Component)
              then
                 --  If this pragma Debug comes from source, its argument was
                 --  parsed as a name form (which is syntactically identical).
--- 15016,15026 ----
                 Call := Get_Pragma_Arg (Arg1);
              end if;
  
!             if Nkind (Call) in N_Expanded_Name
!                              | N_Function_Call
!                              | N_Identifier
!                              | N_Indexed_Component
!                              | N_Selected_Component
              then
                 --  If this pragma Debug comes from source, its argument was
                 --  parsed as a name form (which is syntactically identical).
*************** package body Sem_Prag is
*** 15575,15581 ****
           begin
              GNAT_Pragma;
              Check_No_Identifiers;
!             Check_At_Most_N_Arguments (1);
  
              Typ  := Empty;
              Stmt := Prev (N);
--- 15127,15133 ----
           begin
              GNAT_Pragma;
              Check_No_Identifiers;
!             Check_At_Most_N_Arguments (2);  -- Accounts for implicit type arg
  
              Typ  := Empty;
              Stmt := Prev (N);
*************** package body Sem_Prag is
*** 15603,15610 ****
                 --  The associated private type [extension] has been found, stop
                 --  the search.
  
!                elsif Nkind_In (Stmt, N_Private_Extension_Declaration,
!                                      N_Private_Type_Declaration)
                 then
                    Typ := Defining_Entity (Stmt);
                    exit;
--- 15155,15162 ----
                 --  The associated private type [extension] has been found, stop
                 --  the search.
  
!                elsif Nkind (Stmt) in N_Private_Extension_Declaration
!                                    | N_Private_Type_Declaration
                 then
                    Typ := Defining_Entity (Stmt);
                    exit;
*************** package body Sem_Prag is
*** 15638,15643 ****
--- 15190,15216 ----
  
              Set_Has_Own_DIC (Typ);
  
+             --  A type entity argument is appended to facilitate inheriting the
+             --  aspect/pragma from parent types (see Build_DIC_Procedure_Body),
+             --  though that extra argument isn't documented for the pragma.
+ 
+             if not Present (Arg2) then
+                --  When the pragma has no arguments, create an argument with
+                --  the value Empty, so the type name argument can be appended
+                --  following it (since it's expected as the second argument).
+ 
+                if not Present (Arg1) then
+                   Set_Pragma_Argument_Associations (N, New_List (
+                     Make_Pragma_Argument_Association (Sloc (Typ),
+                       Expression => Empty)));
+                end if;
+ 
+                Append_To
+                  (Pragma_Argument_Associations (N),
+                   Make_Pragma_Argument_Association (Sloc (Typ),
+                     Expression => New_Occurrence_Of (Typ, Sloc (Typ))));
+             end if;
+ 
              --  Chain the pragma on the rep item chain for further processing
  
              Discard := Rep_Item_Too_Late (Typ, N, FOnly => True);
*************** package body Sem_Prag is
*** 15697,15703 ****
           -- Default_Storage_Pool --
           --------------------------
  
!          --  pragma Default_Storage_Pool (storage_pool_NAME | null);
  
           when Pragma_Default_Storage_Pool => Default_Storage_Pool : declare
              Pool : Node_Id;
--- 15270,15276 ----
           -- Default_Storage_Pool --
           --------------------------
  
!          --  pragma Default_Storage_Pool (storage_pool_NAME | null | Standard);
  
           when Pragma_Default_Storage_Pool => Default_Storage_Pool : declare
              Pool : Node_Id;
*************** package body Sem_Prag is
*** 15738,15743 ****
--- 15311,15328 ----
  
                    Set_Etype (Pool, Empty);
  
+                --  Case of Default_Storage_Pool (Standard);
+ 
+                elsif Nkind (Pool) = N_Identifier
+                  and then Chars (Pool) = Name_Standard
+                then
+                   Analyze (Pool);
+ 
+                   if Entity (Pool) /= Standard_Standard then
+                      Error_Pragma_Arg
+                        ("package Standard is not directly visible", Arg1);
+                   end if;
+ 
                 --  Case of Default_Storage_Pool (storage_pool_NAME);
  
                 else
*************** package body Sem_Prag is
*** 15745,15751 ****
                    --  argument is "null".
  
                    if Is_Configuration_Pragma then
!                      Error_Pragma_Arg ("NULL expected", Arg1);
                    end if;
  
                    --  The expected type for a non-"null" argument is
--- 15330,15336 ----
                    --  argument is "null".
  
                    if Is_Configuration_Pragma then
!                      Error_Pragma_Arg ("NULL or Standard expected", Arg1);
                    end if;
  
                    --  The expected type for a non-"null" argument is
*************** package body Sem_Prag is
*** 15853,15861 ****
                 --  or subprogram body because it cannot benefit from forward
                 --  references.
  
!                if Nkind_In (Subp_Decl, N_Entry_Body,
!                                        N_Subprogram_Body,
!                                        N_Subprogram_Body_Stub)
                 then
                    --  The legality checks of pragmas Depends and Global are
                    --  affected by the SPARK mode in effect and the volatility
--- 15438,15446 ----
                 --  or subprogram body because it cannot benefit from forward
                 --  references.
  
!                if Nkind (Subp_Decl) in N_Entry_Body
!                                      | N_Subprogram_Body
!                                      | N_Subprogram_Body_Stub
                 then
                    --  The legality checks of pragmas Depends and Global are
                    --  affected by the SPARK mode in effect and the volatility
*************** package body Sem_Prag is
*** 16197,16206 ****
              Check_Ada_83_Warning;
              Check_Valid_Library_Unit_Pragma;
  
-             if Nkind (N) = N_Null_Statement then
-                return;
-             end if;
- 
              Cunit_Node := Cunit (Current_Sem_Unit);
              Cunit_Ent  := Cunit_Entity (Current_Sem_Unit);
  
--- 15782,15787 ----
*************** package body Sem_Prag is
*** 16209,16216 ****
  
              Mark_Ghost_Pragma (N, Cunit_Ent);
  
!             if Nkind_In (Unit (Cunit_Node), N_Package_Body,
!                                             N_Subprogram_Body)
              then
                 Error_Pragma ("pragma% must refer to a spec, not a body");
              else
--- 15790,15797 ----
  
              Mark_Ghost_Pragma (N, Cunit_Ent);
  
!             if Nkind (Unit (Cunit_Node)) in
!                  N_Package_Body | N_Subprogram_Body
              then
                 Error_Pragma ("pragma% must refer to a spec, not a body");
              else
*************** package body Sem_Prag is
*** 17184,17191 ****
                 --  Task unit declared without a definition cannot be subject to
                 --  pragma Ghost (SPARK RM 6.9(19)).
  
!                elsif Nkind_In (Stmt, N_Single_Task_Declaration,
!                                      N_Task_Type_Declaration)
                 then
                    Error_Pragma ("pragma % cannot apply to a task type");
                    return;
--- 16765,16772 ----
                 --  Task unit declared without a definition cannot be subject to
                 --  pragma Ghost (SPARK RM 6.9(19)).
  
!                elsif Nkind (Stmt) in
!                        N_Single_Task_Declaration | N_Task_Type_Declaration
                 then
                    Error_Pragma ("pragma % cannot apply to a task type");
                    return;
*************** package body Sem_Prag is
*** 17198,17205 ****
                    --  When pragma Ghost applies to an untagged derivation, the
                    --  derivation is transformed into a [sub]type declaration.
  
!                   if Nkind_In (Stmt, N_Full_Type_Declaration,
!                                      N_Subtype_Declaration)
                      and then Comes_From_Source (Orig_Stmt)
                      and then Nkind (Orig_Stmt) = N_Full_Type_Declaration
                      and then Nkind (Type_Definition (Orig_Stmt)) =
--- 16779,16786 ----
                    --  When pragma Ghost applies to an untagged derivation, the
                    --  derivation is transformed into a [sub]type declaration.
  
!                   if Nkind (Stmt) in
!                        N_Full_Type_Declaration | N_Subtype_Declaration
                      and then Comes_From_Source (Orig_Stmt)
                      and then Nkind (Orig_Stmt) = N_Full_Type_Declaration
                      and then Nkind (Type_Definition (Orig_Stmt)) =
*************** package body Sem_Prag is
*** 17233,17246 ****
  
                 --  The pragma applies to a legal construct, stop the traversal
  
!                elsif Nkind_In (Stmt, N_Abstract_Subprogram_Declaration,
!                                      N_Full_Type_Declaration,
!                                      N_Generic_Subprogram_Declaration,
!                                      N_Object_Declaration,
!                                      N_Private_Extension_Declaration,
!                                      N_Private_Type_Declaration,
!                                      N_Subprogram_Declaration,
!                                      N_Subtype_Declaration)
                 then
                    Id := Defining_Entity (Stmt);
                    exit;
--- 16814,16827 ----
  
                 --  The pragma applies to a legal construct, stop the traversal
  
!                elsif Nkind (Stmt) in N_Abstract_Subprogram_Declaration
!                                    | N_Full_Type_Declaration
!                                    | N_Generic_Subprogram_Declaration
!                                    | N_Object_Declaration
!                                    | N_Private_Extension_Declaration
!                                    | N_Private_Type_Declaration
!                                    | N_Subprogram_Declaration
!                                    | N_Subtype_Declaration
                 then
                    Id := Defining_Entity (Stmt);
                    exit;
*************** package body Sem_Prag is
*** 17269,17280 ****
              --  Protected and task types cannot be subject to pragma Ghost
              --  (SPARK RM 6.9(19)).
  
!             if Nkind_In (Context, N_Protected_Body, N_Protected_Definition)
              then
                 Error_Pragma ("pragma % cannot apply to a protected type");
                 return;
  
!             elsif Nkind_In (Context, N_Task_Body, N_Task_Definition) then
                 Error_Pragma ("pragma % cannot apply to a task type");
                 return;
              end if;
--- 16850,16861 ----
              --  Protected and task types cannot be subject to pragma Ghost
              --  (SPARK RM 6.9(19)).
  
!             if Nkind (Context) in N_Protected_Body | N_Protected_Definition
              then
                 Error_Pragma ("pragma % cannot apply to a protected type");
                 return;
  
!             elsif Nkind (Context) in N_Task_Body | N_Task_Definition then
                 Error_Pragma ("pragma % cannot apply to a task type");
                 return;
              end if;
*************** package body Sem_Prag is
*** 17391,17397 ****
                       return;
                    end if;
  
!                --  Otherwie the expression is not static
  
                 else
                    Error_Pragma_Arg
--- 16972,16978 ----
                       return;
                    end if;
  
!                --  Otherwise the expression is not static
  
                 else
                    Error_Pragma_Arg
*************** package body Sem_Prag is
*** 17468,17476 ****
                 --  or subprogram body because it cannot benefit from forward
                 --  references.
  
!                if Nkind_In (Subp_Decl, N_Entry_Body,
!                                        N_Subprogram_Body,
!                                        N_Subprogram_Body_Stub)
                 then
                    --  The legality checks of pragmas Depends and Global are
                    --  affected by the SPARK mode in effect and the volatility
--- 17049,17057 ----
                 --  or subprogram body because it cannot benefit from forward
                 --  references.
  
!                if Nkind (Subp_Decl) in N_Entry_Body
!                                      | N_Subprogram_Body
!                                      | N_Subprogram_Body_Stub
                 then
                    --  The legality checks of pragmas Depends and Global are
                    --  affected by the SPARK mode in effect and the volatility
*************** package body Sem_Prag is
*** 17521,17528 ****
              begin
                 GP := Parent (Parent (N));
  
!                if Nkind_In (GP, N_Package_Declaration,
!                                 N_Generic_Package_Declaration)
                 then
                    GP := Parent (GP);
                 end if;
--- 17102,17109 ----
              begin
                 GP := Parent (Parent (N));
  
!                if Nkind (GP) in
!                     N_Package_Declaration | N_Generic_Package_Declaration
                 then
                    GP := Parent (GP);
                 end if;
*************** package body Sem_Prag is
*** 17535,17549 ****
  
                    if Present (CS) then
  
!                      --  If we have multiple instances, concatenate them, but
!                      --  not in ASIS, where we want the original tree.
  
!                      if not ASIS_Mode then
!                         Start_String (Strval (CS));
!                         Store_String_Char (' ');
!                         Store_String_Chars (Strval (Str));
!                         Set_Strval (CS, End_String);
!                      end if;
  
                    else
                       Set_Ident_String (Current_Sem_Unit, Str);
--- 17116,17127 ----
  
                    if Present (CS) then
  
!                      --  If we have multiple instances, concatenate them.
  
!                      Start_String (Strval (CS));
!                      Store_String_Char (' ');
!                      Store_String_Chars (Strval (Str));
!                      Set_Strval (CS, End_String);
  
                    else
                       Set_Ident_String (Current_Sem_Unit, Str);
*************** package body Sem_Prag is
*** 17673,17680 ****
                    --  "synchronized".
  
                     or else
!                     (Ekind_In (Typ, E_Record_Type_With_Private,
!                                     E_Record_Subtype_With_Private)
                         and then Synchronized_Present (Parent (Typ))))
                 then
                    null;
--- 17251,17258 ----
                    --  "synchronized".
  
                     or else
!                     (Ekind (Typ) in E_Record_Type_With_Private
!                                   | E_Record_Subtype_With_Private
                         and then Synchronized_Present (Parent (Typ))))
                 then
                    null;
*************** package body Sem_Prag is
*** 17689,17695 ****
                 --  By_Protected_Procedure to the primitive procedure of a task
                 --  interface.
  
!                if Chars (Arg2) = Name_By_Protected_Procedure
                   and then Is_Interface (Typ)
                   and then Is_Task_Interface (Typ)
                 then
--- 17267,17273 ----
                 --  By_Protected_Procedure to the primitive procedure of a task
                 --  interface.
  
!                if Chars (Get_Pragma_Arg (Arg2)) = Name_By_Protected_Procedure
                   and then Is_Interface (Typ)
                   and then Is_Task_Interface (Typ)
                 then
*************** package body Sem_Prag is
*** 17714,17719 ****
--- 17292,17309 ----
                 return;
              end if;
  
+             --  Ada 2012 (AI12-0279): Cannot apply the implementation_kind
+             --  By_Protected_Procedure to a procedure that has aspect Yield
+ 
+             if Chars (Get_Pragma_Arg (Arg2)) = Name_By_Protected_Procedure
+               and then Has_Yield_Aspect (Proc_Id)
+             then
+                Error_Pragma_Arg
+                  ("implementation kind By_Protected_Procedure cannot be "
+                   & "applied to entities with aspect 'Yield", Arg2);
+                return;
+             end if;
+ 
              Record_Rep_Item (Proc_Id, N);
           end Implemented;
  
*************** package body Sem_Prag is
*** 18118,18125 ****
  
              Pack_Decl := Find_Related_Package_Or_Body (N, Do_Checks => True);
  
!             if not Nkind_In (Pack_Decl, N_Generic_Package_Declaration,
!                                         N_Package_Declaration)
              then
                 Pragma_Misplaced;
                 return;
--- 17708,17715 ----
  
              Pack_Decl := Find_Related_Package_Or_Body (N, Do_Checks => True);
  
!             if Nkind (Pack_Decl) not in
!                  N_Generic_Package_Declaration | N_Package_Declaration
              then
                 Pragma_Misplaced;
                 return;
*************** package body Sem_Prag is
*** 18166,18180 ****
           --    Short_Float
           --  | Float
           --  | Long_Float
!          --  | Long_Long_Flat
           --  | Signed_8
           --  | Signed_16
           --  | Signed_32
           --  | Signed_64
           --  | Unsigned_8
           --  | Unsigned_16
           --  | Unsigned_32
           --  | Unsigned_64
  
           when Pragma_Initialize_Scalars => Do_Initialize_Scalars : declare
              Seen : array (Scalar_Id) of Node_Id := (others => Empty);
--- 17756,17772 ----
           --    Short_Float
           --  | Float
           --  | Long_Float
!          --  | Long_Long_Float
           --  | Signed_8
           --  | Signed_16
           --  | Signed_32
           --  | Signed_64
+          --  | Signed_128
           --  | Unsigned_8
           --  | Unsigned_16
           --  | Unsigned_32
           --  | Unsigned_64
+          --  | Unsigned_128
  
           when Pragma_Initialize_Scalars => Do_Initialize_Scalars : declare
              Seen : array (Scalar_Id) of Node_Id := (others => Empty);
*************** package body Sem_Prag is
*** 18227,18233 ****
              begin
                 Analyze_And_Resolve (Val_Expr, Any_Integer);
  
!                if Is_OK_Static_Expression (Val_Expr) then
                    Set_Invalid_Scalar_Value (Scal_Typ, Expr_Value (Val_Expr));
  
                 else
--- 17819,17832 ----
              begin
                 Analyze_And_Resolve (Val_Expr, Any_Integer);
  
!                if (Scal_Typ = Name_Signed_128
!                     or else Scal_Typ = Name_Unsigned_128)
!                  and then Ttypes.System_Max_Integer_Size < 128
!                then
!                   Error_Msg_Name_1 := Scal_Typ;
!                   Error_Msg_N ("value cannot be set for type %", Val_Expr);
! 
!                elsif Is_OK_Static_Expression (Val_Expr) then
                    Set_Invalid_Scalar_Value (Scal_Typ, Expr_Value (Val_Expr));
  
                 else
*************** package body Sem_Prag is
*** 18390,18397 ****
  
              Pack_Decl := Find_Related_Package_Or_Body (N, Do_Checks => True);
  
!             if not Nkind_In (Pack_Decl, N_Generic_Package_Declaration,
!                                         N_Package_Declaration)
              then
                 Pragma_Misplaced;
                 return;
--- 17989,17996 ----
  
              Pack_Decl := Find_Related_Package_Or_Body (N, Do_Checks => True);
  
!             if Nkind (Pack_Decl) not in
!                  N_Generic_Package_Declaration | N_Package_Declaration
              then
                 Pragma_Misplaced;
                 return;
*************** package body Sem_Prag is
*** 18728,18734 ****
                 Preanalyze_Spec_Expression (Arg, RTE (RE_Interrupt_Priority));
              end if;
  
!             if not Nkind_In (P, N_Task_Definition, N_Protected_Definition) then
                 Pragma_Misplaced;
                 return;
  
--- 18327,18333 ----
                 Preanalyze_Spec_Expression (Arg, RTE (RE_Interrupt_Priority));
              end if;
  
!             if Nkind (P) not in N_Task_Definition | N_Protected_Definition then
                 Pragma_Misplaced;
                 return;
  
*************** package body Sem_Prag is
*** 18927,18935 ****
              --  A [class-wide] invariant may be associated a [limited] private
              --  type or a private extension.
  
!             elsif Ekind_In (Typ, E_Limited_Private_Type,
!                                  E_Private_Type,
!                                  E_Record_Type_With_Private)
              then
                 null;
  
--- 18526,18534 ----
              --  A [class-wide] invariant may be associated a [limited] private
              --  type or a private extension.
  
!             elsif Ekind (Typ) in E_Limited_Private_Type
!                                | E_Private_Type
!                                | E_Record_Type_With_Private
              then
                 null;
  
*************** package body Sem_Prag is
*** 18974,18989 ****
              --  The pragma defines a type-specific invariant, the type is said
              --  to have invariants of its "own".
  
!             Set_Has_Own_Invariants (Typ);
! 
!             --  Set the Invariants_Ignored flag if that policy is in effect
! 
!             Set_Invariants_Ignored (Typ,
!               Present (Check_Policy_List)
!                 and then
!                   (Policy_In_Effect (Name_Invariant) = Name_Ignore
!                      and then
!                    Policy_In_Effect (Name_Type_Invariant) = Name_Ignore));
  
              --  If the invariant is class-wide, then it can be inherited by
              --  derived or interface implementing types. The type is said to
--- 18573,18579 ----
              --  The pragma defines a type-specific invariant, the type is said
              --  to have invariants of its "own".
  
!             Set_Has_Own_Invariants (Base_Type (Typ));
  
              --  If the invariant is class-wide, then it can be inherited by
              --  derived or interface implementing types. The type is said to
*************** package body Sem_Prag is
*** 19589,19596 ****
                 if Chars (Variant) = No_Name then
                    Error_Pragma_Arg_Ident ("expect name `Increases`", Variant);
  
!                elsif not Nam_In (Chars (Variant), Name_Decreases,
!                                                   Name_Increases)
                 then
                    declare
                       Name : String := Get_Name_String (Chars (Variant));
--- 19179,19185 ----
                 if Chars (Variant) = No_Name then
                    Error_Pragma_Arg_Ident ("expect name `Increases`", Variant);
  
!                elsif Chars (Variant) not in Name_Decreases | Name_Increases
                 then
                    declare
                       Name : String := Get_Name_String (Chars (Variant));
*************** package body Sem_Prag is
*** 19824,19830 ****
              --  Otherwise the pragma is associated with an illegal construct
  
              else
!                Error_Pragma ("pragma % must apply to a protected entry");
                 return;
              end if;
  
--- 19413,19420 ----
              --  Otherwise the pragma is associated with an illegal construct
  
              else
!                Error_Pragma
!                  ("pragma % must apply to a protected entry declaration");
                 return;
              end if;
  
*************** package body Sem_Prag is
*** 19896,19912 ****
              GNAT_Pragma;
              Check_Valid_Library_Unit_Pragma;
  
-             if Nkind (N) = N_Null_Statement then
-                return;
-             end if;
- 
              --  Must appear for a spec or generic spec
  
!             if not Nkind_In (Unit (Cunit (Current_Sem_Unit)),
!                              N_Generic_Package_Declaration,
!                              N_Generic_Subprogram_Declaration,
!                              N_Package_Declaration,
!                              N_Subprogram_Declaration)
              then
                 Error_Pragma
                   (Fix_Error
--- 19486,19498 ----
              GNAT_Pragma;
              Check_Valid_Library_Unit_Pragma;
  
              --  Must appear for a spec or generic spec
  
!             if Nkind (Unit (Cunit (Current_Sem_Unit))) not in
!                  N_Generic_Package_Declaration    |
!                  N_Generic_Subprogram_Declaration |
!                  N_Package_Declaration            |
!                  N_Subprogram_Declaration
              then
                 Error_Pragma
                   (Fix_Error
*************** package body Sem_Prag is
*** 20037,20043 ****
  
                 --  The pragma must apply to an access-to-object type
  
!                if Ekind_In (Typ, E_Access_Type, E_General_Access_Type) then
                    null;
  
                 --  Give a detailed error message on all other access type kinds
--- 19623,19629 ----
  
                 --  The pragma must apply to an access-to-object type
  
!                if Ekind (Typ) in E_Access_Type | E_General_Access_Type then
                    null;
  
                 --  Give a detailed error message on all other access type kinds
*************** package body Sem_Prag is
*** 20121,20127 ****
  
           --  pragma No_Return (procedure_LOCAL_NAME {, procedure_Local_Name});
  
!          when Pragma_No_Return => No_Return : declare
              Arg   : Node_Id;
              E     : Entity_Id;
              Found : Boolean;
--- 19707,19759 ----
  
           --  pragma No_Return (procedure_LOCAL_NAME {, procedure_Local_Name});
  
!          when Pragma_No_Return => Prag_No_Return : declare
! 
!             function Check_No_Return
!                (E : Entity_Id;
!                 N : Node_Id) return Boolean;
!             --  Check rule 6.5.1(4/3) of the Ada RM. If the rule is violated,
!             --  emit an error message and return False, otherwise return True.
!             --  6.5.1 Nonreturning procedures:
!             --  4/3 "Aspect No_Return shall not be specified for a null
!             --  procedure nor an instance of a generic unit."
! 
!             ---------------------
!             -- Check_No_Return --
!             ---------------------
! 
!             function Check_No_Return
!                (E : Entity_Id;
!                 N : Node_Id) return Boolean
!             is
!             begin
!                if Ekind (E) = E_Procedure then
! 
!                   --  If E is a generic instance, marking it with No_Return
!                   --  is forbidden, but having it inherit the No_Return of
!                   --  the generic is allowed. We check if E is inheriting its
!                   --  No_Return flag from the generic by checking if No_Return
!                   --  is already set.
! 
!                   if Is_Generic_Instance (E) and then not No_Return (E) then
!                      Error_Msg_NE
!                        ("generic instance & is marked as No_Return", N, E);
!                      Error_Msg_NE
!                        ("\generic procedure & must be marked No_Return",
!                         N,
!                         Generic_Parent (Parent (E)));
!                      return False;
! 
!                   elsif Null_Present (Subprogram_Specification (E)) then
!                      Error_Msg_NE
!                        ("null procedure & cannot be marked No_Return", N, E);
!                      return False;
!                   end if;
!                end if;
! 
!                return True;
!             end Check_No_Return;
! 
              Arg   : Node_Id;
              E     : Entity_Id;
              Found : Boolean;
*************** package body Sem_Prag is
*** 20155,20161 ****
                    raise Pragma_Exit;
                 end if;
  
!                --  Loop to find matching procedures
  
                 E := Entity (Id);
  
--- 19787,19793 ----
                    raise Pragma_Exit;
                 end if;
  
!                --  Loop to find matching procedures or functions (Ada 2020)
  
                 E := Entity (Id);
  
*************** package body Sem_Prag is
*** 20163,20170 ****
                 while Present (E)
                   and then Scope (E) = Current_Scope
                 loop
!                   if Ekind_In (E, E_Generic_Procedure, E_Procedure) then
  
                       --  Check that the pragma is not applied to a body.
                       --  First check the specless body case, to give a
                       --  different error message. These checks do not apply
--- 19795,19807 ----
                 while Present (E)
                   and then Scope (E) = Current_Scope
                 loop
!                   --  Ada 2020 (AI12-0269): A function can be No_Return
  
+                   if Ekind (E) in E_Generic_Procedure | E_Procedure
+                     or else (Ada_Version >= Ada_2020
+                               and then
+                              Ekind (E) in E_Generic_Function | E_Function)
+                   then
                       --  Check that the pragma is not applied to a body.
                       --  First check the specless body case, to give a
                       --  different error message. These checks do not apply
*************** package body Sem_Prag is
*** 20188,20194 ****
                          end if;
                       end if;
  
!                      Set_No_Return (E);
  
                       --  A pragma that applies to a Ghost entity becomes Ghost
                       --  for the purposes of legality checks and removal of
--- 19825,19833 ----
                          end if;
                       end if;
  
!                      if Check_No_Return (E, N) then
!                         Set_No_Return (E);
!                      end if;
  
                       --  A pragma that applies to a Ghost entity becomes Ghost
                       --  for the purposes of legality checks and removal of
*************** package body Sem_Prag is
*** 20227,20233 ****
  
                       --  Set flag on any alias as well
  
!                      if Is_Overloadable (E) and then Present (Alias (E)) then
                          Set_No_Return (Alias (E));
                       end if;
  
--- 19866,19875 ----
  
                       --  Set flag on any alias as well
  
!                      if Is_Overloadable (E)
!                        and then Present (Alias (E))
!                        and then Check_No_Return (Alias (E), N)
!                      then
                          Set_No_Return (Alias (E));
                       end if;
  
*************** package body Sem_Prag is
*** 20244,20251 ****
--- 19886,19899 ----
                 if not Found then
                    if Entity (Id) = Current_Scope
                      and then From_Aspect_Specification (N)
+                     and then Check_No_Return (Entity (Id), N)
                    then
                       Set_No_Return (Entity (Id));
+ 
+                   elsif Ada_Version >= Ada_2020 then
+                      Error_Pragma_Arg
+                        ("no subprogram& found for pragma%", Arg);
+ 
                    else
                       Error_Pragma_Arg ("no procedure& found for pragma%", Arg);
                    end if;
*************** package body Sem_Prag is
*** 20253,20259 ****
  
                 Next (Arg);
              end loop;
!          end No_Return;
  
           -----------------
           -- No_Run_Time --
--- 19901,19907 ----
  
                 Next (Arg);
              end loop;
!          end Prag_No_Return;
  
           -----------------
           -- No_Run_Time --
*************** package body Sem_Prag is
*** 20449,20456 ****
  
                 if Present (Ename) then
  
!                   --  If entity name matches, we are fine. Save entity in
!                   --  pragma argument, for ASIS use.
  
                    if Chars (Ename) = Chars (Ent) then
                       Set_Entity (Ename, Ent);
--- 20097,20103 ----
  
                 if Present (Ename) then
  
!                   --  If entity name matches, we are fine.
  
                    if Chars (Ename) = Chars (Ent) then
                       Set_Entity (Ename, Ent);
*************** package body Sem_Prag is
*** 20477,20483 ****
                             exit;
  
                          else
!                            Ent := Next_Literal (Ent);
                          end if;
                       end loop;
                    end if;
--- 20124,20130 ----
                             exit;
  
                          else
!                            Next_Literal (Ent);
                          end if;
                       end loop;
                    end if;
*************** package body Sem_Prag is
*** 20551,20559 ****
                and then
                  (Chars (Arg1) = Name_Entity
                     or else
!                      Nkind_In (Get_Pragma_Arg (Arg1), N_Character_Literal,
!                                                       N_Identifier,
!                                                       N_Operator_Symbol))
              then
                 Ename := Get_Pragma_Arg (Arg1);
  
--- 20198,20205 ----
                and then
                  (Chars (Arg1) = Name_Entity
                     or else
!                      Nkind (Get_Pragma_Arg (Arg1)) in
!                        N_Character_Literal | N_Identifier | N_Operator_Symbol)
              then
                 Ename := Get_Pragma_Arg (Arg1);
  
*************** package body Sem_Prag is
*** 20989,20997 ****
                       --  they may not depend on variable input. This check is
                       --  left to the SPARK prover.
  
!                      elsif Ekind_In (Item_Id, E_Abstract_State,
!                                               E_Constant,
!                                               E_Variable)
                       then
                          Has_Item := True;
                          Constits := Part_Of_Constituents (State_Id);
--- 20635,20642 ----
                       --  they may not depend on variable input. This check is
                       --  left to the SPARK prover.
  
!                      elsif Ekind (Item_Id) in
!                              E_Abstract_State | E_Constant | E_Variable
                       then
                          Has_Item := True;
                          Constits := Part_Of_Constituents (State_Id);
*************** package body Sem_Prag is
*** 21308,21316 ****
                 Check_Arg_Is_Library_Level_Local_Name (Arg1);
  
                 if not Is_Entity_Name (Get_Pragma_Arg (Arg1))
!                  or else not
!                    Ekind_In (Entity (Get_Pragma_Arg (Arg1)), E_Variable,
!                                                              E_Constant)
                 then
                    Error_Pragma_Arg ("pragma% only applies to objects", Arg1);
                 end if;
--- 20953,20961 ----
                 Check_Arg_Is_Library_Level_Local_Name (Arg1);
  
                 if not Is_Entity_Name (Get_Pragma_Arg (Arg1))
!                  or else
!                    Ekind (Entity (Get_Pragma_Arg (Arg1))) not in
!                      E_Variable | E_Constant
                 then
                    Error_Pragma_Arg ("pragma% only applies to objects", Arg1);
                 end if;
*************** package body Sem_Prag is
*** 21417,21435 ****
              Map_Pragma_Name (From => Chars (New_Name), To => Chars (Old_Name));
           end Rename_Pragma;
  
-          -------------
-          -- Polling --
-          -------------
- 
-          --  pragma Polling (ON | OFF);
- 
-          when Pragma_Polling =>
-             GNAT_Pragma;
-             Check_Arg_Count (1);
-             Check_No_Identifiers;
-             Check_Arg_Is_One_Of (Arg1, Name_On, Name_Off);
-             Polling_Required := (Chars (Get_Pragma_Arg (Arg1)) = Name_On);
- 
           -----------------------------------
           -- Post/Post_Class/Postcondition --
           -----------------------------------
--- 21062,21067 ----
*************** package body Sem_Prag is
*** 21577,21585 ****
              Set_Has_Delayed_Freeze (Typ);
  
              Set_Predicates_Ignored (Typ,
!               Present (Check_Policy_List)
!                 and then
!                   Policy_In_Effect (Name_Dynamic_Predicate) = Name_Ignore);
              Discard := Rep_Item_Too_Late (Typ, N, FOnly => True);
           end Predicate;
  
--- 21209,21215 ----
              Set_Has_Delayed_Freeze (Typ);
  
              Set_Predicates_Ignored (Typ,
!               Policy_In_Effect (Name_Dynamic_Predicate) = Name_Ignore);
              Discard := Rep_Item_Too_Late (Typ, N, FOnly => True);
           end Predicate;
  
*************** package body Sem_Prag is
*** 21641,21650 ****
              Check_Ada_83_Warning;
              Check_Valid_Library_Unit_Pragma;
  
-             if Nkind (N) = N_Null_Statement then
-                return;
-             end if;
- 
              Ent := Find_Lib_Unit_Name;
  
              --  A pragma that applies to a Ghost entity becomes Ghost for the
--- 21271,21276 ----
*************** package body Sem_Prag is
*** 21753,21772 ****
                 --  package does not trigger the required initialization of the
                 --  run-time library.
  
!                declare
!                   Discard : Entity_Id;
!                   pragma Warnings (Off, Discard);
!                begin
!                   if Restricted_Profile then
!                      Discard := RTE (RE_Activate_Restricted_Tasks);
!                   else
!                      Discard := RTE (RE_Activate_Tasks);
!                   end if;
!                end;
  
              --  Task or Protected, must be of type Integer
  
!             elsif Nkind_In (P, N_Protected_Definition, N_Task_Definition) then
                 Arg := Get_Pragma_Arg (Arg1);
                 Ent := Defining_Identifier (Parent (P));
  
--- 21379,21393 ----
                 --  package does not trigger the required initialization of the
                 --  run-time library.
  
!                if Restricted_Profile then
!                   Discard_Node (RTE (RE_Activate_Restricted_Tasks));
!                else
!                   Discard_Node (RTE (RE_Activate_Tasks));
!                end if;
  
              --  Task or Protected, must be of type Integer
  
!             elsif Nkind (P) in N_Protected_Definition | N_Task_Definition then
                 Arg := Get_Pragma_Arg (Arg1);
                 Ent := Defining_Identifier (Parent (P));
  
*************** package body Sem_Prag is
*** 21945,21953 ****
                 Argx : constant Node_Id := Get_Pragma_Arg (Arg1);
  
              begin
!                if Chars (Argx) = Name_Ravenscar then
                    Set_Ravenscar_Profile (Ravenscar, N);
  
                 elsif Chars (Argx) = Name_Gnat_Extended_Ravenscar then
                    Set_Ravenscar_Profile (GNAT_Extended_Ravenscar, N);
  
--- 21566,21581 ----
                 Argx : constant Node_Id := Get_Pragma_Arg (Arg1);
  
              begin
!                if Nkind (Argx) /= N_Identifier then
!                   Error_Msg_N
!                     ("argument of pragma Profile must be an identifier", N);
! 
!                elsif Chars (Argx) = Name_Ravenscar then
                    Set_Ravenscar_Profile (Ravenscar, N);
  
+                elsif Chars (Argx) = Name_Jorvik then
+                   Set_Ravenscar_Profile (Jorvik, N);
+ 
                 elsif Chars (Argx) = Name_Gnat_Extended_Ravenscar then
                    Set_Ravenscar_Profile (GNAT_Extended_Ravenscar, N);
  
*************** package body Sem_Prag is
*** 22130,22136 ****
  
                 --  Now declare the operators. We do this during analysis rather
                 --  than expansion, since we want the operators available if we
!                --  are operating in -gnatc or ASIS mode.
  
                 Declare_Shift_Operator (Name_Rotate_Left);
                 Declare_Shift_Operator (Name_Rotate_Right);
--- 21758,21764 ----
  
                 --  Now declare the operators. We do this during analysis rather
                 --  than expansion, since we want the operators available if we
!                --  are operating in -gnatc mode.
  
                 Declare_Shift_Operator (Name_Rotate_Left);
                 Declare_Shift_Operator (Name_Rotate_Right);
*************** package body Sem_Prag is
*** 22175,22183 ****
  
              procedure Check_Arg (Arg : Node_Id) is
              begin
!                if not Nkind_In (Original_Node (Arg),
!                                 N_String_Literal,
!                                 N_Identifier)
                 then
                    Error_Pragma_Arg
                      ("inappropriate argument for pragma %", Arg);
--- 21803,21810 ----
  
              procedure Check_Arg (Arg : Node_Id) is
              begin
!                if Nkind (Original_Node (Arg)) not in
!                     N_String_Literal | N_Identifier
                 then
                    Error_Pragma_Arg
                      ("inappropriate argument for pragma %", Arg);
*************** package body Sem_Prag is
*** 22193,22199 ****
  
              Def_Id := Entity (Internal);
  
!             if not Ekind_In (Def_Id, E_Constant, E_Variable) then
                 Error_Pragma_Arg
                   ("pragma% must designate an object", Internal);
              end if;
--- 21820,21826 ----
  
              Def_Id := Entity (Internal);
  
!             if Ekind (Def_Id) not in E_Constant | E_Variable then
                 Error_Pragma_Arg
                   ("pragma% must designate an object", Internal);
              end if;
*************** package body Sem_Prag is
*** 22284,22293 ****
                 Check_Valid_Library_Unit_Pragma;
              end if;
  
-             if Nkind (N) = N_Null_Statement then
-                return;
-             end if;
- 
              Ent := Find_Lib_Unit_Name;
  
              --  A pragma that applies to a Ghost entity becomes Ghost for the
--- 21911,21916 ----
*************** package body Sem_Prag is
*** 22343,22351 ****
                 loop
                    Def_Id := Get_Base_Subprogram (E);
  
!                   if not Ekind_In (Def_Id, E_Function,
!                                            E_Generic_Function,
!                                            E_Operator)
                    then
                       Error_Pragma_Arg
                         ("pragma% requires a function name", Arg1);
--- 21966,21973 ----
                 loop
                    Def_Id := Get_Base_Subprogram (E);
  
!                   if Ekind (Def_Id) not in
!                        E_Function | E_Generic_Function | E_Operator
                    then
                       Error_Pragma_Arg
                         ("pragma% requires a function name", Arg1);
*************** package body Sem_Prag is
*** 22825,22834 ****
              Check_Ada_83_Warning;
              Check_Valid_Library_Unit_Pragma;
  
-             if Nkind (N) = N_Null_Statement then
-                return;
-             end if;
- 
              Cunit_Node := Cunit (Current_Sem_Unit);
              K          := Nkind (Unit (Cunit_Node));
              Cunit_Ent  := Cunit_Entity (Current_Sem_Unit);
--- 22447,22452 ----
*************** package body Sem_Prag is
*** 22868,22877 ****
              Check_Ada_83_Warning;
              Check_Valid_Library_Unit_Pragma;
  
-             if Nkind (N) = N_Null_Statement then
-                return;
-             end if;
- 
              Cunit_Node := Cunit (Current_Sem_Unit);
              Cunit_Ent  := Cunit_Entity (Current_Sem_Unit);
  
--- 22486,22491 ----
*************** package body Sem_Prag is
*** 22880,22887 ****
  
              Mark_Ghost_Pragma (N, Cunit_Ent);
  
!             if not Nkind_In (Unit (Cunit_Node), N_Package_Declaration,
!                                                 N_Generic_Package_Declaration)
              then
                 Error_Pragma
                   ("pragma% can only apply to a package declaration");
--- 22494,22501 ----
  
              Mark_Ghost_Pragma (N, Cunit_Ent);
  
!             if Nkind (Unit (Cunit_Node)) not in
!                  N_Package_Declaration | N_Generic_Package_Declaration
              then
                 Error_Pragma
                   ("pragma% can only apply to a package declaration");
*************** package body Sem_Prag is
*** 23068,23077 ****
              Check_Ada_83_Warning;
              Check_Valid_Library_Unit_Pragma;
  
-             if Nkind (N) = N_Null_Statement then
-                return;
-             end if;
- 
              Cunit_Node := Cunit (Current_Sem_Unit);
              Cunit_Ent  := Cunit_Entity (Current_Sem_Unit);
  
--- 22682,22687 ----
*************** package body Sem_Prag is
*** 23080,23087 ****
  
              Mark_Ghost_Pragma (N, Cunit_Ent);
  
!             if not Nkind_In (Unit (Cunit_Node), N_Package_Declaration,
!                                                 N_Generic_Package_Declaration)
              then
                 Error_Pragma
                   ("pragma% can only apply to a package declaration");
--- 22690,22697 ----
  
              Mark_Ghost_Pragma (N, Cunit_Ent);
  
!             if Nkind (Unit (Cunit_Node)) not in
!                  N_Package_Declaration | N_Generic_Package_Declaration
              then
                 Error_Pragma
                   ("pragma% can only apply to a package declaration");
*************** package body Sem_Prag is
*** 23383,23389 ****
                    --  anonymous type whose name cannot be used to issue error
                    --  messages. Recover the original entity of the type.
  
!                   if Ekind_In (Entity, E_Protected_Type, E_Task_Type) then
                       Err_Id :=
                         Defining_Entity
                           (Original_Node (Unit_Declaration_Node (Entity)));
--- 22993,22999 ----
                    --  anonymous type whose name cannot be used to issue error
                    --  messages. Recover the original entity of the type.
  
!                   if Ekind (Entity) in E_Protected_Type | E_Task_Type then
                       Err_Id :=
                         Defining_Entity
                           (Original_Node (Unit_Declaration_Node (Entity)));
*************** package body Sem_Prag is
*** 23415,23420 ****
--- 23025,23035 ----
                    --  pragma in which case the current pragma is illegal as
                    --  it cannot "complete".
  
+                   elsif Get_SPARK_Mode_From_Annotation (N) = Off
+                     and then (Is_Generic_Unit (Entity) or else In_Instance)
+                   then
+                      null;
+ 
                    else
                       Error_Msg_N ("incorrect use of SPARK_Mode", Err_N);
                       Error_Msg_Sloc := Sloc (Err_Id);
*************** package body Sem_Prag is
*** 23440,23467 ****
  
                 procedure Add_Entity_To_Name_Buffer is
                 begin
!                   if Ekind_In (E, E_Entry, E_Entry_Family) then
                       Add_Str_To_Name_Buffer ("entry");
  
!                   elsif Ekind_In (E, E_Generic_Package,
!                                      E_Package,
!                                      E_Package_Body)
                    then
                       Add_Str_To_Name_Buffer ("package");
  
!                   elsif Ekind_In (E, E_Protected_Body, E_Protected_Type) then
                       Add_Str_To_Name_Buffer ("protected type");
  
!                   elsif Ekind_In (E, E_Function,
!                                      E_Generic_Function,
!                                      E_Generic_Procedure,
!                                      E_Procedure,
!                                      E_Subprogram_Body)
                    then
                       Add_Str_To_Name_Buffer ("subprogram");
  
                    else
!                      pragma Assert (Ekind_In (E, E_Task_Body, E_Task_Type));
                       Add_Str_To_Name_Buffer ("task type");
                    end if;
                 end Add_Entity_To_Name_Buffer;
--- 23055,23082 ----
  
                 procedure Add_Entity_To_Name_Buffer is
                 begin
!                   if Ekind (E) in E_Entry | E_Entry_Family then
                       Add_Str_To_Name_Buffer ("entry");
  
!                   elsif Ekind (E) in E_Generic_Package
!                                    | E_Package
!                                    | E_Package_Body
                    then
                       Add_Str_To_Name_Buffer ("package");
  
!                   elsif Ekind (E) in E_Protected_Body | E_Protected_Type then
                       Add_Str_To_Name_Buffer ("protected type");
  
!                   elsif Ekind (E) in E_Function
!                                    | E_Generic_Function
!                                    | E_Generic_Procedure
!                                    | E_Procedure
!                                    | E_Subprogram_Body
                    then
                       Add_Str_To_Name_Buffer ("subprogram");
  
                    else
!                      pragma Assert (Ekind (E) in E_Task_Body | E_Task_Type);
                       Add_Str_To_Name_Buffer ("task type");
                    end if;
                 end Add_Entity_To_Name_Buffer;
*************** package body Sem_Prag is
*** 23520,23526 ****
                 --    * The mode of the context
                 --    * The mode of the spec (if any)
  
!                if Nkind_In (Decl, N_Entry_Body, N_Subprogram_Body) then
  
                    --  A stand-alone subprogram body
  
--- 23135,23141 ----
                 --    * The mode of the context
                 --    * The mode of the spec (if any)
  
!                if Nkind (Decl) in N_Entry_Body | N_Subprogram_Body then
  
                    --  A stand-alone subprogram body
  
*************** package body Sem_Prag is
*** 23570,23576 ****
  
                 else
                    pragma Assert
!                     (Nkind_In (Decl, N_Protected_Body, N_Task_Body));
  
                    Check_Pragma_Conformance
                      (Context_Pragma => SPARK_Pragma (Body_Id),
--- 23185,23191 ----
  
                 else
                    pragma Assert
!                     (Nkind (Decl) in N_Protected_Body | N_Task_Body);
  
                    Check_Pragma_Conformance
                      (Context_Pragma => SPARK_Pragma (Body_Id),
*************** package body Sem_Prag is
*** 23692,23699 ****
                 --  SPARK_Mode of the context because the task does not have any
                 --  entries that could inherit the mode.
  
!                if not Nkind_In (Decl, N_Single_Task_Declaration,
!                                       N_Task_Type_Declaration)
                 then
                    Set_SPARK_Context;
                 end if;
--- 23307,23314 ----
                 --  SPARK_Mode of the context because the task does not have any
                 --  entries that could inherit the mode.
  
!                if Nkind (Decl) not in
!                     N_Single_Task_Declaration | N_Task_Type_Declaration
                 then
                    Set_SPARK_Context;
                 end if;
*************** package body Sem_Prag is
*** 23740,23755 ****
           --  Start of processing for Do_SPARK_Mode
  
           begin
-             --  When a SPARK_Mode pragma appears inside an instantiation whose
-             --  enclosing context has SPARK_Mode set to "off", the pragma has
-             --  no semantic effect.
- 
-             if Ignore_SPARK_Mode_Pragmas_In_Instance then
-                Rewrite (N, Make_Null_Statement (Loc));
-                Analyze (N);
-                return;
-             end if;
- 
              GNAT_Pragma;
              Check_No_Identifiers;
              Check_At_Most_N_Arguments (1);
--- 23355,23360 ----
*************** package body Sem_Prag is
*** 23766,23771 ****
--- 23371,23388 ----
              Mode_Id := Get_SPARK_Mode_Type (Mode);
              Context := Parent (N);
  
+             --  When a SPARK_Mode pragma appears inside an instantiation whose
+             --  enclosing context has SPARK_Mode set to "off", the pragma has
+             --  no semantic effect.
+ 
+             if Ignore_SPARK_Mode_Pragmas_In_Instance
+               and then Mode_Id /= Off
+             then
+                Rewrite (N, Make_Null_Statement (Loc));
+                Analyze (N);
+                return;
+             end if;
+ 
              --  The pragma appears in a configuration file
  
              if No (Context) then
*************** package body Sem_Prag is
*** 23852,23859 ****
                    --    procedure Proc ...;
                    --    pragma SPARK_Mode ...;
  
!                   elsif Nkind_In (Stmt, N_Generic_Subprogram_Declaration,
!                                         N_Subprogram_Declaration)
                      or else (Nkind (Stmt) = N_Entry_Declaration
                                and then Is_Protected_Type
                                           (Scope (Defining_Entity (Stmt))))
--- 23469,23476 ----
                    --    procedure Proc ...;
                    --    pragma SPARK_Mode ...;
  
!                   elsif Nkind (Stmt) in N_Generic_Subprogram_Declaration
!                                       | N_Subprogram_Declaration
                      or else (Nkind (Stmt) = N_Entry_Declaration
                                and then Is_Protected_Type
                                           (Scope (Defining_Entity (Stmt))))
*************** package body Sem_Prag is
*** 23898,23908 ****
                 --    protected body Prot is
                 --       pragma SPARK_Mode ...;
  
!                if Nkind_In (Context, N_Entry_Body,
!                                      N_Package_Body,
!                                      N_Protected_Body,
!                                      N_Subprogram_Body,
!                                      N_Task_Body)
                 then
                    Process_Body (Context);
  
--- 23515,23525 ----
                 --    protected body Prot is
                 --       pragma SPARK_Mode ...;
  
!                if Nkind (Context) in N_Entry_Body
!                                    | N_Package_Body
!                                    | N_Protected_Body
!                                    | N_Subprogram_Body
!                                    | N_Task_Body
                 then
                    Process_Body (Context);
  
*************** package body Sem_Prag is
*** 23919,23927 ****
                 --    private
                 --       pragma SPARK_Mode ...;
  
!                elsif Nkind_In (Context, N_Package_Specification,
!                                         N_Protected_Definition,
!                                         N_Task_Definition)
                 then
                    if List_Containing (N) = Visible_Declarations (Context) then
                       Process_Visible_Part (Parent (Context));
--- 23536,23544 ----
                 --    private
                 --       pragma SPARK_Mode ...;
  
!                elsif Nkind (Context) in N_Package_Specification
!                                       | N_Protected_Definition
!                                       | N_Task_Definition
                 then
                    if List_Containing (N) = Visible_Declarations (Context) then
                       Process_Visible_Part (Parent (Context));
*************** package body Sem_Prag is
*** 23947,23954 ****
                 --    procedure Proc ...;
                 --    pragma SPARK_Mode ...;
  
!                elsif Nkind_In (Context, N_Generic_Subprogram_Declaration,
!                                         N_Subprogram_Declaration)
                 then
                    Process_Overloadable (Context);
  
--- 23564,23571 ----
                 --    procedure Proc ...;
                 --    pragma SPARK_Mode ...;
  
!                elsif Nkind (Context) in N_Generic_Subprogram_Declaration
!                                       | N_Subprogram_Declaration
                 then
                    Process_Overloadable (Context);
  
*************** package body Sem_Prag is
*** 24077,24082 ****
--- 23694,23702 ----
                    Error_Pragma_Arg
                      ("argument for pragma% must be function of one argument",
                       Arg);
+                elsif Is_Abstract_Subprogram (Ent) then
+                   Error_Pragma_Arg
+                     ("argument for pragma% cannot be abstract", Arg);
                 end if;
              end Check_OK_Stream_Convert_Function;
  
*************** package body Sem_Prag is
*** 24263,24268 ****
--- 23883,24021 ----
              end if;
           end Style_Checks;
  
+          ------------------------
+          -- Subprogram_Variant --
+          ------------------------
+ 
+          --  pragma Subprogram_Variant ( SUBPROGRAM_VARIANT_ITEM
+          --                           {, SUBPROGRAM_VARIANT_ITEM } );
+ 
+          --  SUBPROGRAM_VARIANT_ITEM ::=
+          --    CHANGE_DIRECTION => discrete_EXPRESSION
+ 
+          --  CHANGE_DIRECTION ::= Increases | Decreases
+ 
+          --  Characteristics:
+ 
+          --    * Analysis - The annotation undergoes initial checks to verify
+          --    the legal placement and context. Secondary checks preanalyze the
+          --    expressions in:
+ 
+          --       Analyze_Subprogram_Variant_In_Decl_Part
+ 
+          --    * Expansion - The annotation is expanded during the expansion of
+          --    the related subprogram [body] contract as performed in:
+ 
+          --       Expand_Subprogram_Contract
+ 
+          --    * Template - The annotation utilizes the generic template of the
+          --    related subprogram [body] when it is:
+ 
+          --       aspect on subprogram declaration
+          --       aspect on stand-alone subprogram body
+          --       pragma on stand-alone subprogram body
+ 
+          --    The annotation must prepare its own template when it is:
+ 
+          --       pragma on subprogram declaration
+ 
+          --    * Globals - Capture of global references must occur after full
+          --    analysis.
+ 
+          --    * Instance - The annotation is instantiated automatically when
+          --    the related generic subprogram [body] is instantiated except for
+          --    the "pragma on subprogram declaration" case. In that scenario
+          --    the annotation must instantiate itself.
+ 
+          when Pragma_Subprogram_Variant => Subprogram_Variant : declare
+             Spec_Id   : Entity_Id;
+             Subp_Decl : Node_Id;
+             Subp_Spec : Node_Id;
+ 
+          begin
+             GNAT_Pragma;
+             Check_No_Identifiers;
+             Check_Arg_Count (1);
+ 
+             --  Ensure the proper placement of the pragma. Subprogram_Variant
+             --  must be associated with a subprogram declaration or a body that
+             --  acts as a spec.
+ 
+             Subp_Decl :=
+               Find_Related_Declaration_Or_Body (N, Do_Checks => True);
+ 
+             --  Generic subprogram
+ 
+             if Nkind (Subp_Decl) = N_Generic_Subprogram_Declaration then
+                null;
+ 
+             --  Body acts as spec
+ 
+             elsif Nkind (Subp_Decl) = N_Subprogram_Body
+               and then No (Corresponding_Spec (Subp_Decl))
+             then
+                null;
+ 
+             --  Body stub acts as spec
+ 
+             elsif Nkind (Subp_Decl) = N_Subprogram_Body_Stub
+               and then No (Corresponding_Spec_Of_Stub (Subp_Decl))
+             then
+                null;
+ 
+             --  Subprogram
+ 
+             elsif Nkind (Subp_Decl) = N_Subprogram_Declaration then
+                Subp_Spec := Specification (Subp_Decl);
+ 
+                --  Pragma Subprogram_Variant is forbidden on null procedures,
+                --  as this may lead to potential ambiguities in behavior when
+                --  interface null procedures are involved. Also, it just
+                --  wouldn't make sense, because null procedure is not
+                --  recursive.
+ 
+                if Nkind (Subp_Spec) = N_Procedure_Specification
+                  and then Null_Present (Subp_Spec)
+                then
+                   Error_Msg_N (Fix_Error
+                     ("pragma % cannot apply to null procedure"), N);
+                   return;
+                end if;
+ 
+             else
+                Pragma_Misplaced;
+                return;
+             end if;
+ 
+             Spec_Id := Unique_Defining_Entity (Subp_Decl);
+ 
+             --  A pragma that applies to a Ghost entity becomes Ghost for the
+             --  purposes of legality checks and removal of ignored Ghost code.
+ 
+             Mark_Ghost_Pragma (N, Spec_Id);
+             Ensure_Aggregate_Form (Get_Argument (N, Spec_Id));
+ 
+             --  Chain the pragma on the contract for further processing by
+             --  Analyze_Subprogram_Variant_In_Decl_Part.
+ 
+             Add_Contract_Item (N, Defining_Entity (Subp_Decl));
+ 
+             --  Fully analyze the pragma when it appears inside a subprogram
+             --  body because it cannot benefit from forward references.
+ 
+             if Nkind (Subp_Decl) in N_Subprogram_Body
+                                   | N_Subprogram_Body_Stub
+             then
+                --  The legality checks of pragma Subprogram_Variant are
+                --  affected by the SPARK mode in effect and the volatility
+                --  of the context. Analyze all pragmas in a specific order.
+ 
+                Analyze_If_Present (Pragma_SPARK_Mode);
+                Analyze_If_Present (Pragma_Volatile_Function);
+                Analyze_Subprogram_Variant_In_Decl_Part (N);
+             end if;
+          end Subprogram_Variant;
+ 
           --------------
           -- Subtitle --
           --------------
*************** package body Sem_Prag is
*** 24709,24716 ****
              --  in a library-level package. First determine whether the current
              --  compilation unit is a legal context.
  
!             if Nkind_In (Pack_Decl, N_Package_Declaration,
!                                     N_Generic_Package_Declaration)
              then
                 null;
  
--- 24462,24469 ----
              --  in a library-level package. First determine whether the current
              --  compilation unit is a legal context.
  
!             if Nkind (Pack_Decl) in N_Package_Declaration
!                                   | N_Generic_Package_Declaration
              then
                 null;
  
*************** package body Sem_Prag is
*** 24746,24756 ****
              --  The context is a [generic] subprogram declared at the top level
              --  of the [generic] package unit.
  
!             elsif Nkind_In (Subp_Decl, N_Generic_Subprogram_Declaration,
!                                        N_Subprogram_Declaration)
                and then Present (Context)
!               and then Nkind_In (Context, N_Generic_Package_Declaration,
!                                           N_Package_Declaration)
              then
                 null;
  
--- 24499,24509 ----
              --  The context is a [generic] subprogram declared at the top level
              --  of the [generic] package unit.
  
!             elsif Nkind (Subp_Decl) in N_Generic_Subprogram_Declaration
!                                      | N_Subprogram_Declaration
                and then Present (Context)
!               and then Nkind (Context) in N_Generic_Package_Declaration
!                                         | N_Package_Declaration
              then
                 null;
  
*************** package body Sem_Prag is
*** 24775,24784 ****
  
              Add_Contract_Item (N, Subp_Id);
  
!             --  Preanalyze the original aspect argument "Name" for ASIS or for
!             --  a generic subprogram to properly capture global references.
  
!             if ASIS_Mode or else Is_Generic_Subprogram (Subp_Id) then
                 Asp_Arg := Test_Case_Arg (N, Name_Name, From_Aspect => True);
  
                 if Present (Asp_Arg) then
--- 24528,24537 ----
  
              Add_Contract_Item (N, Subp_Id);
  
!             --  Preanalyze the original aspect argument "Name" for a generic
!             --  subprogram to properly capture global references.
  
!             if Is_Generic_Subprogram (Subp_Id) then
                 Asp_Arg := Test_Case_Arg (N, Name_Name, From_Aspect => True);
  
                 if Present (Asp_Arg) then
*************** package body Sem_Prag is
*** 24804,24812 ****
              --  or subprogram body because it cannot benefit from forward
              --  references.
  
!             if Nkind_In (Subp_Decl, N_Entry_Body,
!                                     N_Subprogram_Body,
!                                     N_Subprogram_Body_Stub)
              then
                 --  The legality checks of pragma Test_Case are affected by the
                 --  SPARK mode in effect and the volatility of the context.
--- 24557,24565 ----
              --  or subprogram body because it cannot benefit from forward
              --  references.
  
!             if Nkind (Subp_Decl) in N_Entry_Body
!                                   | N_Subprogram_Body
!                                   | N_Subprogram_Body_Stub
              then
                 --  The legality checks of pragma Test_Case are affected by the
                 --  SPARK mode in effect and the volatility of the context.
*************** package body Sem_Prag is
*** 25112,25129 ****
           --  body, not in the spec).
  
           when Pragma_Unimplemented_Unit => Unimplemented_Unit : declare
!             Cunitent : constant Entity_Id   :=
                           Cunit_Entity (Get_Source_Unit (Loc));
-             Ent_Kind : constant Entity_Kind := Ekind (Cunitent);
  
           begin
              GNAT_Pragma;
              Check_Arg_Count (0);
  
              if Operating_Mode = Generate_Code
!               or else Ent_Kind = E_Generic_Function
!               or else Ent_Kind = E_Generic_Procedure
!               or else Ent_Kind = E_Generic_Package
              then
                 Get_Name_String (Chars (Cunitent));
                 Set_Casing (Mixed_Case);
--- 24865,24879 ----
           --  body, not in the spec).
  
           when Pragma_Unimplemented_Unit => Unimplemented_Unit : declare
!             Cunitent : constant Entity_Id :=
                           Cunit_Entity (Get_Source_Unit (Loc));
  
           begin
              GNAT_Pragma;
              Check_Arg_Count (0);
  
              if Operating_Mode = Generate_Code
!               or else Is_Generic_Unit (Cunitent)
              then
                 Get_Name_String (Chars (Cunitent));
                 Set_Casing (Mixed_Case);
*************** package body Sem_Prag is
*** 25469,25475 ****
  
              Spec_Id := Unique_Defining_Entity (Subp_Decl);
  
!             if not Ekind_In (Spec_Id, E_Function, E_Generic_Function) then
                 Pragma_Misplaced;
                 return;
              end if;
--- 25219,25225 ----
  
              Spec_Id := Unique_Defining_Entity (Subp_Decl);
  
!             if Ekind (Spec_Id) not in E_Function | E_Generic_Function then
                 Pragma_Misplaced;
                 return;
              end if;
*************** package body Sem_Prag is
*** 25557,25563 ****
           --  DETAILS ::= static_string_EXPRESSION
           --  DETAILS ::= On | Off, static_string_EXPRESSION
  
!          --  TOOL_NAME ::= GNAT | GNATProve
  
           --  REASON ::= Reason => STRING_LITERAL {& STRING_LITERAL}
  
--- 25307,25313 ----
           --  DETAILS ::= static_string_EXPRESSION
           --  DETAILS ::= On | Off, static_string_EXPRESSION
  
!          --  TOOL_NAME ::= GNAT | GNATprove
  
           --  REASON ::= Reason => STRING_LITERAL {& STRING_LITERAL}
  
*************** package body Sem_Prag is
*** 25630,25639 ****
                 --  was given otherwise, by shifting the arguments.
  
                 if Nkind (Argx) = N_Identifier
!                  and then Nam_In (Chars (Argx), Name_Gnat, Name_Gnatprove)
                 then
                    if Chars (Argx) = Name_Gnat then
!                      if CodePeer_Mode or GNATprove_Mode or ASIS_Mode then
                          Rewrite (N, Make_Null_Statement (Loc));
                          Analyze (N);
                          raise Pragma_Exit;
--- 25380,25389 ----
                 --  was given otherwise, by shifting the arguments.
  
                 if Nkind (Argx) = N_Identifier
!                  and then Chars (Argx) in Name_Gnat | Name_Gnatprove
                 then
                    if Chars (Argx) = Name_Gnat then
!                      if CodePeer_Mode or GNATprove_Mode then
                          Rewrite (N, Make_Null_Statement (Loc));
                          Analyze (N);
                          raise Pragma_Exit;
*************** package body Sem_Prag is
*** 25683,25689 ****
                    --  On/Off one argument case was processed by parser
  
                    if Nkind (Argx) = N_Identifier
!                     and then Nam_In (Chars (Argx), Name_On, Name_Off)
                    then
                       null;
  
--- 25433,25439 ----
                    --  On/Off one argument case was processed by parser
  
                    if Nkind (Argx) = N_Identifier
!                     and then Chars (Argx) in Name_On | Name_Off
                    then
                       null;
  
*************** package body Sem_Prag is
*** 26055,26061 ****
             and then
               (Etype (Nod) = Disp_Typ
                 or else Etype (Nod) = Class_Wide_Type (Disp_Typ))
!            and then Ekind_In (Entity (Nod), E_Constant, E_Variable)
           then
              Error_Msg_NE
                ("object in class-wide condition must be formal of type &",
--- 25805,25811 ----
             and then
               (Etype (Nod) = Disp_Typ
                 or else Etype (Nod) = Class_Wide_Type (Disp_Typ))
!            and then Ekind (Entity (Nod)) in E_Constant | E_Variable
           then
              Error_Msg_NE
                ("object in class-wide condition must be formal of type &",
*************** package body Sem_Prag is
*** 26433,26441 ****
                       if Is_Entity_Name (Ref_Item) then
                          Ref_Item_Id := Entity_Of (Ref_Item);
  
!                         if Ekind_In (Ref_Item_Id, E_Abstract_State,
!                                                   E_Constant,
!                                                   E_Variable)
                            and then Present (Encapsulating_State (Ref_Item_Id))
                            and then Find_Encapsulating_State
                                       (Dep_States, Ref_Item_Id) = Dep_Item_Id
--- 26183,26190 ----
                       if Is_Entity_Name (Ref_Item) then
                          Ref_Item_Id := Entity_Of (Ref_Item);
  
!                         if Ekind (Ref_Item_Id) in
!                              E_Abstract_State | E_Constant | E_Variable
                            and then Present (Encapsulating_State (Ref_Item_Id))
                            and then Find_Encapsulating_State
                                       (Dep_States, Ref_Item_Id) = Dep_Item_Id
*************** package body Sem_Prag is
*** 27072,27080 ****
  
                 --  The input must be a constituent of a state
  
!                if Ekind_In (Input_Id, E_Abstract_State,
!                                       E_Constant,
!                                       E_Variable)
                   and then Present (Encapsulating_State (Input_Id))
                 then
                    State_Id := Encapsulating_State (Input_Id);
--- 26821,26828 ----
  
                 --  The input must be a constituent of a state
  
!                if Ekind (Input_Id) in
!                     E_Abstract_State | E_Constant | E_Variable
                   and then Present (Encapsulating_State (Input_Id))
                 then
                    State_Id := Encapsulating_State (Input_Id);
*************** package body Sem_Prag is
*** 27256,27268 ****
                 Body_Outputs => Body_Outputs);
           end if;
  
-          --  Matching is disabled in ASIS because clauses are not normalized as
-          --  this is a tree altering activity similar to expansion.
- 
-          if ASIS_Mode then
-             goto Leave;
-          end if;
- 
           --  Multiple dependency clauses appear as component associations of an
           --  aggregate. Note that the clauses are copied because the algorithm
           --  modifies them and this should not be visible in Depends.
--- 27004,27009 ----
*************** package body Sem_Prag is
*** 27989,27997 ****
           --  Start of processing for Check_Refined_Global_Item
  
           begin
!             if Ekind_In (Item_Id, E_Abstract_State,
!                                   E_Constant,
!                                   E_Variable)
              then
                 Enc_State := Find_Encapsulating_State (States, Item_Id);
              end if;
--- 27730,27736 ----
           --  Start of processing for Check_Refined_Global_Item
  
           begin
!             if Ekind (Item_Id) in E_Abstract_State | E_Constant | E_Variable
              then
                 Enc_State := Find_Encapsulating_State (States, Item_Id);
              end if;
*************** package body Sem_Prag is
*** 28085,28093 ****
  
           --  Single global item declaration
  
!          elsif Nkind_In (List, N_Expanded_Name,
!                                N_Identifier,
!                                N_Selected_Component)
           then
              Check_Refined_Global_Item (List, Global_Mode);
  
--- 27824,27832 ----
  
           --  Single global item declaration
  
!          elsif Nkind (List) in N_Expanded_Name
!                              | N_Identifier
!                              | N_Selected_Component
           then
              Check_Refined_Global_Item (List, Global_Mode);
  
*************** package body Sem_Prag is
*** 28217,28225 ****
  
           --  Single global item declaration
  
!          elsif Nkind_In (List, N_Expanded_Name,
!                                N_Identifier,
!                                N_Selected_Component)
           then
              Collect_Global_Item (List, Mode);
  
--- 27956,27964 ----
  
           --  Single global item declaration
  
!          elsif Nkind (List) in N_Expanded_Name
!                              | N_Identifier
!                              | N_Selected_Component
           then
              Collect_Global_Item (List, Mode);
  
*************** package body Sem_Prag is
*** 28764,28798 ****
                          Constit, Encapsulating_State (Constit_Id));
                    end if;
  
-                --  The only other source of legal constituents is the body
-                --  state space of the related package.
- 
                 else
!                   if Present (Body_States) then
!                      State_Elmt := First_Elmt (Body_States);
!                      while Present (State_Elmt) loop
  
!                         --  Consume a valid constituent to signal that it has
!                         --  been encountered.
  
!                         if Node (State_Elmt) = Constit_Id then
!                            Remove_Elmt (Body_States, State_Elmt);
!                            Collect_Constituent;
!                            return;
!                         end if;
  
!                         Next_Elmt (State_Elmt);
!                      end loop;
!                   end if;
  
!                   --  At this point it is known that the constituent is not
!                   --  part of the package hidden state and cannot be used in
!                   --  a refinement (SPARK RM 7.2.2(9)).
  
!                   Error_Msg_Name_1 := Chars (Spec_Id);
!                   SPARK_Msg_NE
!                     ("cannot use & in refinement, constituent is not a hidden "
!                      & "state of package %", Constit, Constit_Id);
                 end if;
              end Match_Constituent;
  
--- 28503,28571 ----
                          Constit, Encapsulating_State (Constit_Id));
                    end if;
  
                 else
!                   declare
!                      Pack_Id   : Entity_Id;
!                      Placement : State_Space_Kind;
!                   begin
!                      --  Find where the constituent lives with respect to the
!                      --  state space.
  
!                      Find_Placement_In_State_Space
!                        (Item_Id   => Constit_Id,
!                         Placement => Placement,
!                         Pack_Id   => Pack_Id);
  
!                      --  The constituent is part of the visible state of a
!                      --  private child package, but lacks a Part_Of indicator.
  
!                      if Placement = Visible_State_Space
!                        and then Is_Child_Unit (Pack_Id)
!                        and then not Is_Generic_Unit (Pack_Id)
!                        and then Is_Private_Descendant (Pack_Id)
!                      then
!                         Error_Msg_Name_1 := Chars (State_Id);
!                         SPARK_Msg_NE
!                           ("& cannot act as constituent of state %",
!                            Constit, Constit_Id);
!                         Error_Msg_Sloc :=
!                           Sloc (Enclosing_Declaration (Constit_Id));
!                         SPARK_Msg_NE
!                           ("\missing Part_Of indicator # should specify "
!                            & "encapsulator &",
!                            Constit, State_Id);
  
!                      --  The only other source of legal constituents is the
!                      --  body state space of the related package.
  
!                      else
!                         if Present (Body_States) then
!                            State_Elmt := First_Elmt (Body_States);
!                            while Present (State_Elmt) loop
! 
!                               --  Consume a valid constituent to signal that it
!                               --  has been encountered.
! 
!                               if Node (State_Elmt) = Constit_Id then
!                                  Remove_Elmt (Body_States, State_Elmt);
!                                  Collect_Constituent;
!                                  return;
!                               end if;
! 
!                               Next_Elmt (State_Elmt);
!                            end loop;
!                         end if;
! 
!                         --  At this point it is known that the constituent is
!                         --  not part of the package hidden state and cannot be
!                         --  used in a refinement (SPARK RM 7.2.2(9)).
! 
!                         Error_Msg_Name_1 := Chars (Spec_Id);
!                         SPARK_Msg_NE
!                           ("cannot use & in refinement, constituent is not a "
!                            & "hidden state of package %", Constit, Constit_Id);
!                      end if;
!                   end;
                 end if;
              end Match_Constituent;
  
*************** package body Sem_Prag is
*** 28906,28914 ****
  
                    --  The constituent is a valid state or object
  
!                   elsif Ekind_In (Constit_Id, E_Abstract_State,
!                                               E_Constant,
!                                               E_Variable)
                    then
                       Match_Constituent (Constit_Id);
  
--- 28679,28686 ----
  
                    --  The constituent is a valid state or object
  
!                   elsif Ekind (Constit_Id) in
!                           E_Abstract_State | E_Constant | E_Variable
                    then
                       Match_Constituent (Constit_Id);
  
*************** package body Sem_Prag is
*** 29215,29220 ****
--- 28987,29006 ----
           --  in the refinement clause.
  
           Report_Unused_Constituents (Part_Of_Constits);
+ 
+          --  Avoid a cascading error reporting a missing refinement by adding a
+          --  dummy constituent.
+ 
+          if No (Refinement_Constituents (State_Id)) then
+             Set_Refinement_Constituents (State_Id, New_Elmt_List (Any_Id));
+          end if;
+ 
+          --  At this point the refinement might be dummy, but must be
+          --  well-formed, to prevent cascaded errors.
+ 
+          pragma Assert (Has_Null_Refinement (State_Id)
+                           xor
+                         Has_Non_Null_Refinement (State_Id));
        end Analyze_Refinement_Clause;
  
        -----------------------------
*************** package body Sem_Prag is
*** 29295,29300 ****
--- 29081,29251 ----
        Set_Is_Analyzed_Pragma (N);
     end Analyze_Refined_State_In_Decl_Part;
  
+    ---------------------------------------------
+    -- Analyze_Subprogram_Variant_In_Decl_Part --
+    ---------------------------------------------
+ 
+    --  WARNING: This routine manages Ghost regions. Return statements must be
+    --  replaced by gotos which jump to the end of the routine and restore the
+    --  Ghost mode.
+ 
+    procedure Analyze_Subprogram_Variant_In_Decl_Part
+      (N         : Node_Id;
+       Freeze_Id : Entity_Id := Empty)
+    is
+       Subp_Decl : constant Node_Id   := Find_Related_Declaration_Or_Body (N);
+       Spec_Id   : constant Entity_Id := Unique_Defining_Entity (Subp_Decl);
+ 
+       procedure Analyze_Variant (Variant : Node_Id);
+       --  Verify the legality of a single contract case
+ 
+       ---------------------
+       -- Analyze_Variant --
+       ---------------------
+ 
+       procedure Analyze_Variant (Variant : Node_Id) is
+          Direction       : Node_Id;
+          Expr            : Node_Id;
+          Errors          : Nat;
+          Extra_Direction : Node_Id;
+ 
+       begin
+          if Nkind (Variant) /= N_Component_Association then
+             Error_Msg_N ("wrong syntax in subprogram variant", Variant);
+             return;
+          end if;
+ 
+          Direction := First (Choices (Variant));
+          Expr      := Expression (Variant);
+ 
+          --  Each variant must have exactly one direction
+ 
+          Extra_Direction := Next (Direction);
+ 
+          if Present (Extra_Direction) then
+             Error_Msg_N
+               ("subprogram variant case must have exactly one direction",
+                Extra_Direction);
+          end if;
+ 
+          --  Check placement of OTHERS if available (SPARK RM 6.1.3(1))
+ 
+          if Nkind (Direction) = N_Identifier then
+             if Chars (Direction) /= Name_Decreases
+                  and then
+                Chars (Direction) /= Name_Increases
+             then
+                Error_Msg_N ("wrong direction", Direction);
+             end if;
+          else
+             Error_Msg_N ("wrong syntax", Direction);
+          end if;
+ 
+          Errors := Serious_Errors_Detected;
+          Preanalyze_Assert_Expression (Expr, Any_Discrete);
+ 
+          --  Emit a clarification message when the variant expression
+          --  contains at least one undefined reference, possibly due
+          --  to contract freezing.
+ 
+          if Errors /= Serious_Errors_Detected
+            and then Present (Freeze_Id)
+            and then Has_Undefined_Reference (Expr)
+          then
+             Contract_Freeze_Error (Spec_Id, Freeze_Id);
+          end if;
+       end Analyze_Variant;
+ 
+       --  Local variables
+ 
+       Variants : constant Node_Id := Expression (Get_Argument (N, Spec_Id));
+ 
+       Saved_GM  : constant Ghost_Mode_Type := Ghost_Mode;
+       Saved_IGR : constant Node_Id         := Ignored_Ghost_Region;
+       --  Save the Ghost-related attributes to restore on exit
+ 
+       Variant       : Node_Id;
+       Restore_Scope : Boolean := False;
+ 
+    --  Start of processing for Analyze_Subprogram_Variant_In_Decl_Part
+ 
+    begin
+       --  Do not analyze the pragma multiple times
+ 
+       if Is_Analyzed_Pragma (N) then
+          return;
+       end if;
+ 
+       --  Set the Ghost mode in effect from the pragma. Due to the delayed
+       --  analysis of the pragma, the Ghost mode at point of declaration and
+       --  point of analysis may not necessarily be the same. Use the mode in
+       --  effect at the point of declaration.
+ 
+       Set_Ghost_Mode (N);
+ 
+       --  Single and multiple contract cases must appear in aggregate form. If
+       --  this is not the case, then either the parser of the analysis of the
+       --  pragma failed to produce an aggregate, e.g. when the contract is
+       --  "null" or a "(null record)".
+ 
+       pragma Assert
+         (if Nkind (Variants) = N_Aggregate
+          then Null_Record_Present (Variants)
+            xor (Present (Component_Associations (Variants))
+                   or
+                 Present (Expressions (Variants)))
+          else Nkind (Variants) = N_Null);
+ 
+       --  Only "change_direction => discrete_expression" clauses are allowed
+ 
+       if Nkind (Variants) = N_Aggregate
+         and then Present (Component_Associations (Variants))
+         and then No (Expressions (Variants))
+       then
+ 
+          --  Check that the expression is a proper aggregate (no parentheses)
+ 
+          if Paren_Count (Variants) /= 0 then
+             Error_Msg -- CODEFIX
+               ("redundant parentheses", First_Sloc (Variants));
+          end if;
+ 
+          --  Ensure that the formal parameters are visible when analyzing all
+          --  clauses. This falls out of the general rule of aspects pertaining
+          --  to subprogram declarations.
+ 
+          if not In_Open_Scopes (Spec_Id) then
+             Restore_Scope := True;
+             Push_Scope (Spec_Id);
+ 
+             if Is_Generic_Subprogram (Spec_Id) then
+                Install_Generic_Formals (Spec_Id);
+             else
+                Install_Formals (Spec_Id);
+             end if;
+          end if;
+ 
+          Variant := First (Component_Associations (Variants));
+          while Present (Variant) loop
+             Analyze_Variant (Variant);
+             Next (Variant);
+          end loop;
+ 
+          if Restore_Scope then
+             End_Scope;
+          end if;
+ 
+       --  Otherwise the pragma is illegal
+ 
+       else
+          Error_Msg_N ("wrong syntax for subprogram variant", N);
+       end if;
+ 
+       Set_Is_Analyzed_Pragma (N);
+ 
+       Restore_Ghost_Region (Saved_GM, Saved_IGR);
+    end Analyze_Subprogram_Variant_In_Decl_Part;
+ 
     ------------------------------------
     -- Analyze_Test_Case_In_Decl_Part --
     ------------------------------------
*************** package body Sem_Prag is
*** 29315,29324 ****
           Arg : Node_Id;
  
        begin
!          --  Preanalyze the original aspect argument for ASIS or for a generic
!          --  subprogram to properly capture global references.
  
!          if ASIS_Mode or else Is_Generic_Subprogram (Spec_Id) then
              Arg :=
                Test_Case_Arg
                  (Prag        => N,
--- 29266,29275 ----
           Arg : Node_Id;
  
        begin
!          --  Preanalyze the original aspect argument for a generic subprogram
!          --  to properly capture global references.
  
!          if Is_Generic_Subprogram (Spec_Id) then
              Arg :=
                Test_Case_Arg
                  (Prag        => N,
*************** package body Sem_Prag is
*** 29597,29607 ****
              if Ename = Pnm
                or else Pnm = Name_Assertion
                or else (Pnm = Name_Statement_Assertions
!                         and then Nam_In (Ename, Name_Assert,
!                                                 Name_Assert_And_Cut,
!                                                 Name_Assume,
!                                                 Name_Loop_Invariant,
!                                                 Name_Loop_Variant))
              then
                 Policy := Chars (Get_Pragma_Arg (Last (PPA)));
  
--- 29548,29558 ----
              if Ename = Pnm
                or else Pnm = Name_Assertion
                or else (Pnm = Name_Statement_Assertions
!                         and then Ename in Name_Assert
!                                         | Name_Assert_And_Cut
!                                         | Name_Assume
!                                         | Name_Loop_Invariant
!                                         | Name_Loop_Variant)
              then
                 Policy := Chars (Get_Pragma_Arg (Last (PPA)));
  
*************** package body Sem_Prag is
*** 29675,29718 ****
        ER   : Boolean;
        EW   : Boolean)
     is
!    begin
!       --  All properties enabled
! 
!       if AR and AW and ER and EW then
!          null;
! 
!       --  Async_Readers + Effective_Writes
!       --  Async_Readers + Async_Writers + Effective_Writes
! 
!       elsif AR and EW and not ER then
!          null;
! 
!       --  Async_Writers + Effective_Reads
!       --  Async_Readers + Async_Writers + Effective_Reads
! 
!       elsif AW and ER and not EW then
!          null;
! 
!       --  Async_Readers + Async_Writers
! 
!       elsif AR and AW and not ER and not EW then
!          null;
  
!       --  Async_Readers
  
!       elsif AR and not AW and not ER and not EW then
!          null;
  
!       --  Async_Writers
  
!       elsif AW and not AR and not ER and not EW then
!          null;
  
!       else
!          SPARK_Msg_N
!            ("illegal combination of external properties (SPARK RM 7.1.2(6))",
!             Item);
!       end if;
     end Check_External_Properties;
  
     ----------------
--- 29626,29663 ----
        ER   : Boolean;
        EW   : Boolean)
     is
!       type Properties is array (Positive range 1 .. 4) of Boolean;
!       type Combinations is array (Positive range <>) of Properties;
!       --  Arrays of Async_Readers, Async_Writers, Effective_Writes and
!       --  Effective_Reads properties and their combinations, respectively.
  
!       Specified : constant Properties := (AR, AW, EW, ER);
!       --  External properties, as given by the Item pragma
  
!       Allowed : constant Combinations :=
!         (1 => (True,  False, True,  False),
!          2 => (False, True,  False, True),
!          3 => (True,  False, False, False),
!          4 => (False, True,  False, False),
!          5 => (True,  True,  True,  False),
!          6 => (True,  True,  False, True),
!          7 => (True,  True,  False, False),
!          8 => (True,  True,  True,  True));
!       --  Allowed combinations, as listed in the SPARK RM 7.1.2(6) table
  
!    begin
!       --  Check if the specified properties match any of the allowed
!       --  combination; if not, then emit an error.
  
!       for J in Allowed'Range loop
!          if Specified = Allowed (J) then
!             return;
!          end if;
!       end loop;
  
!       SPARK_Msg_N
!         ("illegal combination of external properties (SPARK RM 7.1.2(6))",
!          Item);
     end Check_External_Properties;
  
     ----------------
*************** package body Sem_Prag is
*** 29736,29746 ****
                or else (Pnm = Name_Assertion
                          and then Is_Valid_Assertion_Kind (Nam))
                or else (Pnm = Name_Statement_Assertions
!                         and then Nam_In (Nam, Name_Assert,
!                                               Name_Assert_And_Cut,
!                                               Name_Assume,
!                                               Name_Loop_Invariant,
!                                               Name_Loop_Variant))
              then
                 case (Chars (Get_Pragma_Arg (Last (PPA)))) is
                    when Name_Check
--- 29681,29691 ----
                or else (Pnm = Name_Assertion
                          and then Is_Valid_Assertion_Kind (Nam))
                or else (Pnm = Name_Statement_Assertions
!                         and then Nam in Name_Assert
!                                       | Name_Assert_And_Cut
!                                       | Name_Assume
!                                       | Name_Loop_Invariant
!                                       | Name_Loop_Variant)
              then
                 case (Chars (Get_Pragma_Arg (Last (PPA)))) is
                    when Name_Check
*************** package body Sem_Prag is
*** 29820,29826 ****
              --  they depend on variable input. This check is left to the SPARK
              --  prover.
  
!             elsif Ekind_In (Item_Id, E_Abstract_State, E_Variable) then
                 return True;
  
              --  Recursively peek into nested packages and instantiations
--- 29765,29771 ----
              --  they depend on variable input. This check is left to the SPARK
              --  prover.
  
!             elsif Ekind (Item_Id) in E_Abstract_State | E_Variable then
                 return True;
  
              --  Recursively peek into nested packages and instantiations
*************** package body Sem_Prag is
*** 30042,30048 ****
        --  explicit contract.
  
        Prags        : constant Node_Id := Contract (Parent_Subp);
!       In_Spec_Expr : Boolean;
        Installed    : Boolean;
        Prag         : Node_Id;
        New_Prag     : Node_Id;
--- 29987,29993 ----
        --  explicit contract.
  
        Prags        : constant Node_Id := Contract (Parent_Subp);
!       In_Spec_Expr : Boolean := In_Spec_Expression;
        Installed    : Boolean;
        Prag         : Node_Id;
        New_Prag     : Node_Id;
*************** package body Sem_Prag is
*** 30057,30064 ****
           Prag := Pre_Post_Conditions (Prags);
  
           while Present (Prag) loop
!             if Nam_In (Pragma_Name_Unmapped (Prag),
!                        Name_Precondition, Name_Postcondition)
                and then Class_Present (Prag)
              then
                 --  The generated pragma must be analyzed in the context of
--- 30002,30009 ----
           Prag := Pre_Post_Conditions (Prags);
  
           while Present (Prag) loop
!             if Pragma_Name_Unmapped (Prag)
!                  in Name_Precondition | Name_Postcondition
                and then Class_Present (Prag)
              then
                 --  The generated pragma must be analyzed in the context of
*************** package body Sem_Prag is
*** 30211,30221 ****
  
           procedure Collect_Global_Item (Item : Node_Id; Mode : Name_Id) is
           begin
!             if Nam_In (Mode, Name_In_Out, Name_Input) then
                 Append_New_Elmt (Item, Subp_Inputs);
              end if;
  
!             if Nam_In (Mode, Name_In_Out, Name_Output) then
                 Append_New_Elmt (Item, Subp_Outputs);
              end if;
           end Collect_Global_Item;
--- 30156,30166 ----
  
           procedure Collect_Global_Item (Item : Node_Id; Mode : Name_Id) is
           begin
!             if Mode in Name_In_Out | Name_Input then
                 Append_New_Elmt (Item, Subp_Inputs);
              end if;
  
!             if Mode in Name_In_Out | Name_Output then
                 Append_New_Elmt (Item, Subp_Outputs);
              end if;
           end Collect_Global_Item;
*************** package body Sem_Prag is
*** 30233,30241 ****
  
           --  Single global item declaration
  
!          elsif Nkind_In (List, N_Expanded_Name,
!                                N_Identifier,
!                                N_Selected_Component)
           then
              Collect_Global_Item (List, Mode);
  
--- 30178,30186 ----
  
           --  Single global item declaration
  
!          elsif Nkind (List) in N_Expanded_Name
!                              | N_Identifier
!                              | N_Selected_Component
           then
              Collect_Global_Item (List, Mode);
  
*************** package body Sem_Prag is
*** 30287,30299 ****
        --  Process all formal parameters of entries, [generic] subprograms, and
        --  their bodies.
  
!       if Ekind_In (Subp_Id, E_Entry,
!                             E_Entry_Family,
!                             E_Function,
!                             E_Generic_Function,
!                             E_Generic_Procedure,
!                             E_Procedure,
!                             E_Subprogram_Body)
        then
           Subp_Decl := Unit_Declaration_Node (Subp_Id);
           Spec_Id   := Unique_Defining_Entity (Subp_Decl);
--- 30232,30244 ----
        --  Process all formal parameters of entries, [generic] subprograms, and
        --  their bodies.
  
!       if Ekind (Subp_Id) in E_Entry
!                           | E_Entry_Family
!                           | E_Function
!                           | E_Generic_Function
!                           | E_Generic_Procedure
!                           | E_Procedure
!                           | E_Subprogram_Body
        then
           Subp_Decl := Unit_Declaration_Node (Subp_Id);
           Spec_Id   := Unique_Defining_Entity (Subp_Decl);
*************** package body Sem_Prag is
*** 30302,30315 ****
  
           Formal := First_Entity (Spec_Id);
           while Present (Formal) loop
!             if Ekind_In (Formal, E_In_Out_Parameter, E_In_Parameter) then
                 Append_New_Elmt (Formal, Subp_Inputs);
              end if;
  
!             if Ekind_In (Formal, E_In_Out_Parameter, E_Out_Parameter) then
                 Append_New_Elmt (Formal, Subp_Outputs);
  
!                --  Out parameters can act as inputs when the related type is
                 --  tagged, unconstrained array, unconstrained record, or record
                 --  with unconstrained components.
  
--- 30247,30270 ----
  
           Formal := First_Entity (Spec_Id);
           while Present (Formal) loop
!             if Ekind (Formal) in E_In_Out_Parameter | E_In_Parameter then
! 
!                --  IN parameters can act as output when the related type is
!                --  access-to-variable.
! 
!                if Ekind (Formal) = E_In_Parameter
!                  and then Is_Access_Variable (Etype (Formal))
!                then
!                   Append_New_Elmt (Formal, Subp_Outputs);
!                end if;
! 
                 Append_New_Elmt (Formal, Subp_Inputs);
              end if;
  
!             if Ekind (Formal) in E_In_Out_Parameter | E_Out_Parameter then
                 Append_New_Elmt (Formal, Subp_Outputs);
  
!                --  OUT parameters can act as inputs when the related type is
                 --  tagged, unconstrained array, unconstrained record, or record
                 --  with unconstrained components.
  
*************** package body Sem_Prag is
*** 30326,30332 ****
        --  Otherwise the input denotes a task type, a task body, or the
        --  anonymous object created for a single task type.
  
!       elsif Ekind_In (Subp_Id, E_Task_Type, E_Task_Body)
          or else Is_Single_Task_Object (Subp_Id)
        then
           Subp_Decl := Declaration_Node (Subp_Id);
--- 30281,30287 ----
        --  Otherwise the input denotes a task type, a task body, or the
        --  anonymous object created for a single task type.
  
!       elsif Ekind (Subp_Id) in E_Task_Type | E_Task_Body
          or else Is_Single_Task_Object (Subp_Id)
        then
           Subp_Decl := Declaration_Node (Subp_Id);
*************** package body Sem_Prag is
*** 30338,30350 ****
        --  outputs.
  
        if Is_Entry_Body (Subp_Id)
!         or else Ekind_In (Subp_Id, E_Subprogram_Body, E_Task_Body)
        then
           Depends := Get_Pragma (Subp_Id, Pragma_Refined_Depends);
           Global  := Get_Pragma (Subp_Id, Pragma_Refined_Global);
  
        --  Subprogram declaration or stand-alone body case, look for pragmas
!       --  Depends and Global
  
        else
           Depends := Get_Pragma (Spec_Id, Pragma_Depends);
--- 30293,30305 ----
        --  outputs.
  
        if Is_Entry_Body (Subp_Id)
!         or else Ekind (Subp_Id) in E_Subprogram_Body | E_Task_Body
        then
           Depends := Get_Pragma (Subp_Id, Pragma_Refined_Depends);
           Global  := Get_Pragma (Subp_Id, Pragma_Refined_Global);
  
        --  Subprogram declaration or stand-alone body case, look for pragmas
!       --  Depends and Global.
  
        else
           Depends := Get_Pragma (Spec_Id, Pragma_Depends);
*************** package body Sem_Prag is
*** 30396,30402 ****
  
           Append_New_Elmt (Typ, Subp_Inputs);
  
!          if Ekind_In (Spec_Id, E_Entry, E_Entry_Family, E_Procedure) then
              Append_New_Elmt (Typ, Subp_Outputs);
           end if;
  
--- 30351,30357 ----
  
           Append_New_Elmt (Typ, Subp_Inputs);
  
!          if Ekind (Spec_Id) in E_Entry | E_Entry_Family | E_Procedure then
              Append_New_Elmt (Typ, Subp_Outputs);
           end if;
  
*************** package body Sem_Prag is
*** 30445,30452 ****
  
     function Delay_Config_Pragma_Analyze (N : Node_Id) return Boolean is
     begin
!       return Nam_In (Pragma_Name_Unmapped (N),
!                      Name_Interrupt_State, Name_Priority_Specific_Dispatching);
     end Delay_Config_Pragma_Analyze;
  
     -----------------------
--- 30400,30407 ----
  
     function Delay_Config_Pragma_Analyze (N : Node_Id) return Boolean is
     begin
!       return Pragma_Name_Unmapped (N)
!         in Name_Interrupt_State | Name_Priority_Specific_Dispatching;
     end Delay_Config_Pragma_Analyze;
  
     -----------------------
*************** package body Sem_Prag is
*** 30536,30542 ****
  
           --  Skip internally generated code
  
!          elsif not Comes_From_Source (Stmt) then
  
              --  The anonymous object created for a single concurrent type is a
              --  suitable context.
--- 30491,30499 ----
  
           --  Skip internally generated code
  
!          elsif not Comes_From_Source (Stmt)
!            and then not Comes_From_Source (Original_Node (Stmt))
!          then
  
              --  The anonymous object created for a single concurrent type is a
              --  suitable context.
*************** package body Sem_Prag is
*** 30586,30596 ****
  
           if From_Aspect_Specification (Prag) then
              Error_Msg_N
!               ("aspect % cannot apply to a stand alone expression function",
                 Prag);
           else
              Error_Msg_N
!               ("pragma % cannot apply to a stand alone expression function",
                 Prag);
           end if;
        end Expression_Function_Error;
--- 30543,30553 ----
  
           if From_Aspect_Specification (Prag) then
              Error_Msg_N
!               ("aspect % cannot apply to a standalone expression function",
                 Prag);
           else
              Error_Msg_N
!               ("pragma % cannot apply to a standalone expression function",
                 Prag);
           end if;
        end Expression_Function_Error;
*************** package body Sem_Prag is
*** 30601,30610 ****
        Stmt    : Node_Id;
  
        Look_For_Body : constant Boolean :=
!                         Nam_In (Prag_Nam, Name_Refined_Depends,
!                                           Name_Refined_Global,
!                                           Name_Refined_Post,
!                                           Name_Refined_State);
        --  Refinement pragmas must be associated with a subprogram body [stub]
  
     --  Start of processing for Find_Related_Declaration_Or_Body
--- 30558,30567 ----
        Stmt    : Node_Id;
  
        Look_For_Body : constant Boolean :=
!                         Prag_Nam in Name_Refined_Depends
!                                   | Name_Refined_Global
!                                   | Name_Refined_Post
!                                   | Name_Refined_State;
        --  Refinement pragmas must be associated with a subprogram body [stub]
  
     --  Start of processing for Find_Related_Declaration_Or_Body
*************** package body Sem_Prag is
*** 30681,30686 ****
--- 30638,30657 ----
  
                 elsif Present (Generic_Parent (Specification (Stmt))) then
                    return Stmt;
+ 
+                --  Ada 2020: contract on formal subprogram or on generated
+                --  Access_Subprogram_Wrapper, which appears after the related
+                --  Access_Subprogram declaration.
+ 
+                elsif Is_Generic_Actual_Subprogram (Defining_Entity (Stmt))
+                  and then Ada_Version >= Ada_2020
+                then
+                   return Stmt;
+ 
+                elsif Is_Access_Subprogram_Wrapper (Defining_Entity (Stmt))
+                  and then Ada_Version >= Ada_2020
+                then
+                   return Stmt;
                 end if;
              end if;
  
*************** package body Sem_Prag is
*** 30710,30717 ****
        --  The pragma appears inside the statements of a subprogram body. This
        --  placement is the result of subprogram contract expansion.
  
!       elsif Nkind (Context) = N_Handled_Sequence_Of_Statements then
!          return Parent (Context);
  
        --  The pragma appears inside the declarative part of a package body
  
--- 30681,30690 ----
        --  The pragma appears inside the statements of a subprogram body. This
        --  placement is the result of subprogram contract expansion.
  
!       elsif Is_Statement (Context)
!         and then Present (Enclosing_HSS (Context))
!       then
!          return Parent (Enclosing_HSS (Context));
  
        --  The pragma appears inside the declarative part of a package body
  
*************** package body Sem_Prag is
*** 30846,30859 ****
        Args : constant List_Id := Pragma_Argument_Associations (Prag);
  
     begin
!       --  Use the expression of the original aspect when compiling for ASIS or
!       --  when analyzing the template of a generic unit. In both cases the
!       --  aspect's tree must be decorated to allow for ASIS queries or to save
!       --  the global references in the generic context.
  
        if From_Aspect_Specification (Prag)
!         and then (ASIS_Mode or else (Present (Context_Id)
!                                       and then Is_Generic_Unit (Context_Id)))
        then
           return Corresponding_Aspect (Prag);
  
--- 30819,30830 ----
        Args : constant List_Id := Pragma_Argument_Associations (Prag);
  
     begin
!       --  Use the expression of the original aspect when analyzing the template
!       --  of a generic unit. In both cases the aspect's tree must be decorated
!       --  to save the global references in the generic context.
  
        if From_Aspect_Specification (Prag)
!         and then (Present (Context_Id) and then Is_Generic_Unit (Context_Id))
        then
           return Corresponding_Aspect (Prag);
  
*************** package body Sem_Prag is
*** 31141,31150 ****
     Sig_Flags : constant array (Pragma_Id) of Int :=
       (Pragma_Abort_Defer                    => -1,
        Pragma_Abstract_State                 => -1,
-       Pragma_Acc_Data                       =>  0,
-       Pragma_Acc_Kernels                    =>  0,
-       Pragma_Acc_Loop                       =>  0,
-       Pragma_Acc_Parallel                   =>  0,
        Pragma_Ada_83                         => -1,
        Pragma_Ada_95                         => -1,
        Pragma_Ada_05                         => -1,
--- 31112,31117 ----
*************** package body Sem_Prag is
*** 31180,31185 ****
--- 31147,31154 ----
        Pragma_C_Pass_By_Copy                 =>  0,
        Pragma_Comment                        => -1,
        Pragma_Common_Object                  =>  0,
+       Pragma_CUDA_Execute                   => -1,
+       Pragma_CUDA_Global                    => -1,
        Pragma_Compile_Time_Error             => -1,
        Pragma_Compile_Time_Warning           => -1,
        Pragma_Compiler_Unit                  => -1,
*************** package body Sem_Prag is
*** 31195,31205 ****
        Pragma_Deadline_Floor                 => -1,
        Pragma_Debug                          => -1,
        Pragma_Debug_Policy                   =>  0,
-       Pragma_Detect_Blocking                =>  0,
        Pragma_Default_Initial_Condition      => -1,
        Pragma_Default_Scalar_Storage_Order   =>  0,
        Pragma_Default_Storage_Pool           =>  0,
        Pragma_Depends                        => -1,
        Pragma_Disable_Atomic_Synchronization =>  0,
        Pragma_Discard_Names                  =>  0,
        Pragma_Dispatching_Domain             => -1,
--- 31164,31174 ----
        Pragma_Deadline_Floor                 => -1,
        Pragma_Debug                          => -1,
        Pragma_Debug_Policy                   =>  0,
        Pragma_Default_Initial_Condition      => -1,
        Pragma_Default_Scalar_Storage_Order   =>  0,
        Pragma_Default_Storage_Pool           =>  0,
        Pragma_Depends                        => -1,
+       Pragma_Detect_Blocking                =>  0,
        Pragma_Disable_Atomic_Synchronization =>  0,
        Pragma_Discard_Names                  =>  0,
        Pragma_Dispatching_Domain             => -1,
*************** package body Sem_Prag is
*** 31221,31229 ****
        Pragma_Extensions_Allowed             =>  0,
        Pragma_Extensions_Visible             =>  0,
        Pragma_External                       => -1,
-       Pragma_Favor_Top_Level                =>  0,
        Pragma_External_Name_Casing           =>  0,
        Pragma_Fast_Math                      =>  0,
        Pragma_Finalize_Storage_Only          =>  0,
        Pragma_Ghost                          =>  0,
        Pragma_Global                         => -1,
--- 31190,31198 ----
        Pragma_Extensions_Allowed             =>  0,
        Pragma_Extensions_Visible             =>  0,
        Pragma_External                       => -1,
        Pragma_External_Name_Casing           =>  0,
        Pragma_Fast_Math                      =>  0,
+       Pragma_Favor_Top_Level                =>  0,
        Pragma_Finalize_Storage_Only          =>  0,
        Pragma_Ghost                          =>  0,
        Pragma_Global                         => -1,
*************** package body Sem_Prag is
*** 31287,31303 ****
        Pragma_Obsolescent                    =>  0,
        Pragma_Optimize                       =>  0,
        Pragma_Optimize_Alignment             =>  0,
        Pragma_Overflow_Mode                  =>  0,
        Pragma_Overriding_Renamings           =>  0,
-       Pragma_Ordered                        =>  0,
        Pragma_Pack                           =>  0,
        Pragma_Page                           =>  0,
        Pragma_Part_Of                        =>  0,
        Pragma_Partition_Elaboration_Policy   =>  0,
        Pragma_Passive                        =>  0,
        Pragma_Persistent_BSS                 =>  0,
-       Pragma_Polling                        =>  0,
-       Pragma_Prefix_Exception_Messages      =>  0,
        Pragma_Post                           => -1,
        Pragma_Postcondition                  => -1,
        Pragma_Post_Class                     => -1,
--- 31256,31270 ----
        Pragma_Obsolescent                    =>  0,
        Pragma_Optimize                       =>  0,
        Pragma_Optimize_Alignment             =>  0,
+       Pragma_Ordered                        =>  0,
        Pragma_Overflow_Mode                  =>  0,
        Pragma_Overriding_Renamings           =>  0,
        Pragma_Pack                           =>  0,
        Pragma_Page                           =>  0,
        Pragma_Part_Of                        =>  0,
        Pragma_Partition_Elaboration_Policy   =>  0,
        Pragma_Passive                        =>  0,
        Pragma_Persistent_BSS                 =>  0,
        Pragma_Post                           => -1,
        Pragma_Postcondition                  => -1,
        Pragma_Post_Class                     => -1,
*************** package body Sem_Prag is
*** 31307,31312 ****
--- 31274,31280 ----
        Pragma_Predicate_Failure              => -1,
        Pragma_Preelaborable_Initialization   => -1,
        Pragma_Preelaborate                   =>  0,
+       Pragma_Prefix_Exception_Messages      =>  0,
        Pragma_Pre_Class                      => -1,
        Pragma_Priority                       => -1,
        Pragma_Priority_Specific_Dispatching  =>  0,
*************** package body Sem_Prag is
*** 31325,31359 ****
        Pragma_Refined_Post                   => -1,
        Pragma_Refined_State                  => -1,
        Pragma_Relative_Deadline              =>  0,
-       Pragma_Rename_Pragma                  =>  0,
        Pragma_Remote_Access_Type             => -1,
        Pragma_Remote_Call_Interface          => -1,
        Pragma_Remote_Types                   => -1,
        Pragma_Restricted_Run_Time            =>  0,
        Pragma_Restriction_Warnings           =>  0,
        Pragma_Restrictions                   =>  0,
        Pragma_Reviewable                     => -1,
        Pragma_Secondary_Stack_Size           => -1,
-       Pragma_Short_Circuit_And_Or           =>  0,
        Pragma_Share_Generic                  =>  0,
        Pragma_Shared                         =>  0,
        Pragma_Shared_Passive                 =>  0,
        Pragma_Short_Descriptors              =>  0,
        Pragma_Simple_Storage_Pool_Type       =>  0,
        Pragma_Source_File_Name               =>  0,
        Pragma_Source_File_Name_Project       =>  0,
        Pragma_Source_Reference               =>  0,
        Pragma_SPARK_Mode                     =>  0,
        Pragma_Storage_Size                   => -1,
        Pragma_Storage_Unit                   =>  0,
-       Pragma_Static_Elaboration_Desired     =>  0,
        Pragma_Stream_Convert                 =>  0,
        Pragma_Style_Checks                   =>  0,
        Pragma_Subtitle                       =>  0,
        Pragma_Suppress                       =>  0,
-       Pragma_Suppress_Exception_Locations   =>  0,
        Pragma_Suppress_All                   =>  0,
        Pragma_Suppress_Debug_Info            =>  0,
        Pragma_Suppress_Initialization        =>  0,
        Pragma_System_Name                    =>  0,
        Pragma_Task_Dispatching_Policy        =>  0,
--- 31293,31328 ----
        Pragma_Refined_Post                   => -1,
        Pragma_Refined_State                  => -1,
        Pragma_Relative_Deadline              =>  0,
        Pragma_Remote_Access_Type             => -1,
        Pragma_Remote_Call_Interface          => -1,
        Pragma_Remote_Types                   => -1,
+       Pragma_Rename_Pragma                  =>  0,
        Pragma_Restricted_Run_Time            =>  0,
        Pragma_Restriction_Warnings           =>  0,
        Pragma_Restrictions                   =>  0,
        Pragma_Reviewable                     => -1,
        Pragma_Secondary_Stack_Size           => -1,
        Pragma_Share_Generic                  =>  0,
        Pragma_Shared                         =>  0,
        Pragma_Shared_Passive                 =>  0,
+       Pragma_Short_Circuit_And_Or           =>  0,
        Pragma_Short_Descriptors              =>  0,
        Pragma_Simple_Storage_Pool_Type       =>  0,
        Pragma_Source_File_Name               =>  0,
        Pragma_Source_File_Name_Project       =>  0,
        Pragma_Source_Reference               =>  0,
        Pragma_SPARK_Mode                     =>  0,
+       Pragma_Static_Elaboration_Desired     =>  0,
        Pragma_Storage_Size                   => -1,
        Pragma_Storage_Unit                   =>  0,
        Pragma_Stream_Convert                 =>  0,
        Pragma_Style_Checks                   =>  0,
+       Pragma_Subprogram_Variant             => -1,
        Pragma_Subtitle                       =>  0,
        Pragma_Suppress                       =>  0,
        Pragma_Suppress_All                   =>  0,
        Pragma_Suppress_Debug_Info            =>  0,
+       Pragma_Suppress_Exception_Locations   =>  0,
        Pragma_Suppress_Initialization        =>  0,
        Pragma_System_Name                    =>  0,
        Pragma_Task_Dispatching_Policy        =>  0,
*************** package body Sem_Prag is
*** 31612,31618 ****
              --  RM defined
  
                Name_Assert
-             | Name_Assertion_Policy
              | Name_Static_Predicate
              | Name_Dynamic_Predicate
              | Name_Pre
--- 31581,31586 ----
*************** package body Sem_Prag is
*** 31640,31645 ****
--- 31608,31614 ----
              | Name_Predicate
              | Name_Refined_Post
              | Name_Statement_Assertions
+             | Name_Subprogram_Variant
           =>
              return True;
  
*************** package body Sem_Prag is
*** 31687,31692 ****
--- 31656,31664 ----
        Arg1x : constant Node_Id := Get_Pragma_Arg (Arg1);
        Arg2  : constant Node_Id := Next (Arg1);
  
+       Pname   : constant Name_Id   := Pragma_Name_Unmapped (N);
+       Prag_Id : constant Pragma_Id := Get_Pragma_Id (Pname);
+ 
     begin
        Analyze_And_Resolve (Arg1x, Standard_Boolean);
  
*************** package body Sem_Prag is
*** 31700,31707 ****
  
              declare
                 Cent    : constant Entity_Id := Cunit_Entity (Current_Sem_Unit);
-                Pname   : constant Name_Id   := Pragma_Name_Unmapped (N);
-                Prag_Id : constant Pragma_Id := Get_Pragma_Id (Pname);
                 Str     : constant String_Id :=
                             Strval (Expr_Value_S (Get_Pragma_Arg (Arg2)));
                 Str_Len : constant Nat       := String_Length (Str);
--- 31672,31677 ----
*************** package body Sem_Prag is
*** 31761,31770 ****
  
                    if Force then
                       if Cont = False then
!                         Error_Msg ("<<~!!", Eloc);
                          Cont := True;
                       else
!                         Error_Msg ("\<<~!!", Eloc);
                       end if;
  
                    --  Error, rather than warning, or in a body, so we do not
--- 31731,31742 ----
  
                    if Force then
                       if Cont = False then
!                         Error_Msg
!                            ("<<~!!", Eloc, Is_Compile_Time_Pragma => True);
                          Cont := True;
                       else
!                         Error_Msg
!                            ("\<<~!!", Eloc, Is_Compile_Time_Pragma => True);
                       end if;
  
                    --  Error, rather than warning, or in a body, so we do not
*************** package body Sem_Prag is
*** 31775,31784 ****
  
                    else
                       if Cont = False then
!                         Error_Msg ("<<~", Eloc);
                          Cont := True;
                       else
!                         Error_Msg ("\<<~", Eloc);
                       end if;
                    end if;
  
--- 31747,31758 ----
  
                    else
                       if Cont = False then
!                         Error_Msg
!                            ("<<~", Eloc, Is_Compile_Time_Pragma => True);
                          Cont := True;
                       else
!                         Error_Msg
!                            ("\<<~", Eloc, Is_Compile_Time_Pragma => True);
                       end if;
                    end if;
  
*************** package body Sem_Prag is
*** 31787,31799 ****
              end;
           end if;
  
!       --  Arg1x is not known at compile time, so issue a warning. This can
!       --  happen only if the pragma's processing was deferred until after the
!       --  back end is run (see Process_Compile_Time_Warning_Or_Error).
!       --  Note that the warning control switch applies to both pragmas.
  
        elsif Warn_On_Unknown_Compile_Time_Warning then
!          Error_Msg_N ("?condition is not known at compile time", Arg1x);
        end if;
     end Validate_Compile_Time_Warning_Or_Error;
  
--- 31761,31777 ----
              end;
           end if;
  
!       --  Arg1x is not known at compile time, so possibly issue an error
!       --  or warning. This can happen only if the pragma's processing
!       --  was deferred until after the back end is run (see
!       --  Process_Compile_Time_Warning_Or_Error). Note that the warning
!       --  control switch applies to only the warning case.
! 
!       elsif Prag_Id = Pragma_Compile_Time_Error then
!          Error_Msg_N ("condition is not known at compile time", Arg1x);
  
        elsif Warn_On_Unknown_Compile_Time_Warning then
!          Error_Msg_N ("??condition is not known at compile time", Arg1x);
        end if;
     end Validate_Compile_Time_Warning_Or_Error;
  
*************** package body Sem_Prag is
*** 32098,32104 ****
        elsif Nkind (N) = N_Identifier
          and then From_Policy
          and then Serious_Errors_Detected = 0
-         and then not ASIS_Mode
        then
           if Chars (N) = Name_Precondition
             or else Chars (N) = Name_Postcondition
--- 32076,32081 ----
*************** package body Sem_Prag is
*** 32261,32266 ****
--- 32238,32301 ----
        Generate_Reference (Entity (With_Item), N, Set_Ref => False);
     end Set_Elab_Unit_Name;
  
+    -----------------------
+    -- Set_Overflow_Mode --
+    -----------------------
+ 
+    procedure Set_Overflow_Mode (N : Node_Id) is
+ 
+       function Get_Overflow_Mode (Arg : Node_Id) return Overflow_Mode_Type;
+       --  Function to process one pragma argument, Arg
+ 
+       -----------------------
+       -- Get_Overflow_Mode --
+       -----------------------
+ 
+       function Get_Overflow_Mode (Arg : Node_Id) return Overflow_Mode_Type is
+          Argx : constant Node_Id := Get_Pragma_Arg (Arg);
+ 
+       begin
+          if Chars (Argx) = Name_Strict then
+             return Strict;
+ 
+          elsif Chars (Argx) = Name_Minimized then
+             return Minimized;
+ 
+          elsif Chars (Argx) = Name_Eliminated then
+             return Eliminated;
+ 
+          else
+             raise Program_Error;
+          end if;
+       end Get_Overflow_Mode;
+ 
+       --  Local variables
+ 
+       Arg1 : constant Node_Id := First (Pragma_Argument_Associations (N));
+       Arg2 : constant Node_Id := Next (Arg1);
+ 
+    --  Start of processing for Set_Overflow_Mode
+ 
+    begin
+       --  Process first argument
+ 
+       Scope_Suppress.Overflow_Mode_General :=
+         Get_Overflow_Mode (Arg1);
+ 
+       --  Case of only one argument
+ 
+       if No (Arg2) then
+          Scope_Suppress.Overflow_Mode_Assertions :=
+            Scope_Suppress.Overflow_Mode_General;
+ 
+       --  Case of two arguments present
+ 
+       else
+          Scope_Suppress.Overflow_Mode_Assertions  :=
+            Get_Overflow_Mode (Arg2);
+       end if;
+    end Set_Overflow_Mode;
+ 
     -------------------
     -- Test_Case_Arg --
     -------------------
*************** package body Sem_Prag is
*** 32275,32284 ****
        Args   : Node_Id;
  
     begin
!       pragma Assert (Nam_In (Arg_Nam, Name_Ensures,
!                                       Name_Mode,
!                                       Name_Name,
!                                       Name_Requires));
  
        --  The caller requests the aspect argument
  
--- 32310,32317 ----
        Args   : Node_Id;
  
     begin
!       pragma Assert
!         (Arg_Nam in Name_Ensures | Name_Mode | Name_Name | Name_Requires);
  
        --  The caller requests the aspect argument
  
*************** package body Sem_Prag is
*** 32357,32365 ****
        return Empty;
     end Test_Case_Arg;
  
!    -----------------------------------------
     -- Defer_Compile_Time_Warning_Error_To_BE --
!    -----------------------------------------
  
     procedure Defer_Compile_Time_Warning_Error_To_BE (N : Node_Id) is
        Arg1  : constant Node_Id := First (Pragma_Argument_Associations (N));
--- 32390,32398 ----
        return Empty;
     end Test_Case_Arg;
  
!    --------------------------------------------
     -- Defer_Compile_Time_Warning_Error_To_BE --
!    --------------------------------------------
  
     procedure Defer_Compile_Time_Warning_Error_To_BE (N : Node_Id) is
        Arg1  : constant Node_Id := First (Pragma_Argument_Associations (N));
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_prag.ads gcc-11.1.0/gcc/ada/sem_prag.ads
*** gcc-10.3.0/gcc/ada/sem_prag.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_prag.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Prag is
*** 49,54 ****
--- 49,55 ----
        Pragma_Contract_Cases               => True,
        Pragma_Convention                   => True,
        Pragma_CPU                          => True,
+       Pragma_CUDA_Global                  => True,
        Pragma_Default_Initial_Condition    => True,
        Pragma_Default_Storage_Pool         => True,
        Pragma_Depends                      => True,
*************** package Sem_Prag is
*** 264,269 ****
--- 265,277 ----
     --  the entity of [generic] package body or [generic] subprogram body which
     --  caused "freezing" of the related contract where the pragma resides.
  
+    procedure Analyze_Subprogram_Variant_In_Decl_Part
+      (N         : Node_Id;
+       Freeze_Id : Entity_Id := Empty);
+    --  Perform full analysis of delayed pragma Subprogram_Variant. Freeze_Id is
+    --  the entity of [generic] package body or [generic] subprogram body which
+    --  caused "freezing" of the related contract where the pragma resides.
+ 
     procedure Analyze_Test_Case_In_Decl_Part (N : Node_Id);
     --  Perform preanalysis of pragma Test_Case
  
*************** package Sem_Prag is
*** 426,432 ****
     --  of the pragma. The argument is extracted in the following manner:
     --
     --    When the pragma is generated from an aspect, return the corresponding
!    --    aspect for ASIS or when Context_Id denotes a generic unit.
     --
     --    Otherwise return the first argument of Prag
     --
--- 434,440 ----
     --  of the pragma. The argument is extracted in the following manner:
     --
     --    When the pragma is generated from an aspect, return the corresponding
!    --    aspect when Context_Id denotes a generic unit.
     --
     --    Otherwise return the first argument of Prag
     --
*************** package Sem_Prag is
*** 530,535 ****
--- 538,548 ----
     --  the value of the Interface_Name. Otherwise it is encoded as needed by
     --  particular operating systems. See the body for details of the encoding.
  
+    procedure Set_Overflow_Mode (N : Node_Id);
+    --  Sets Sem.Scope_Suppress according to the overflow modes specified in
+    --  the pragma Overflow_Mode passed in argument. This should only be called
+    --  after N has been successfully analyzed.
+ 
     function Test_Case_Arg
       (Prag        : Node_Id;
        Arg_Nam     : Name_Id;
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_res.adb gcc-11.1.0/gcc/ada/sem_res.adb
*** gcc-10.3.0/gcc/ada/sem_res.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_res.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Aspects;  use Aspects;
  with Atree;    use Atree;
  with Checks;   use Checks;
  with Debug;    use Debug;
*************** package body Sem_Res is
*** 177,182 ****
--- 178,184 ----
     procedure Resolve_Case_Expression           (N : Node_Id; Typ : Entity_Id);
     procedure Resolve_Character_Literal         (N : Node_Id; Typ : Entity_Id);
     procedure Resolve_Comparison_Op             (N : Node_Id; Typ : Entity_Id);
+    procedure Resolve_Declare_Expression        (N : Node_Id; Typ : Entity_Id);
     procedure Resolve_Entity_Name               (N : Node_Id; Typ : Entity_Id);
     procedure Resolve_Equality_Op               (N : Node_Id; Typ : Entity_Id);
     procedure Resolve_Explicit_Dereference      (N : Node_Id; Typ : Entity_Id);
*************** package body Sem_Res is
*** 226,231 ****
--- 228,239 ----
     --  is the context type, which is used when the operation is a protected
     --  function with no arguments, and the return value is indexed.
  
+    procedure Resolve_Implicit_Dereference (P : Node_Id);
+    --  Called when P is the prefix of an indexed component, or of a selected
+    --  component, or of a slice. If P is of an access type, we unconditionally
+    --  rewrite it as an explicit dereference. This ensures that the expander
+    --  and the code generator have a fully explicit tree to work with.
+ 
     procedure Resolve_Intrinsic_Operator (N : Node_Id; Typ : Entity_Id);
     --  A call to a user-defined intrinsic operator is rewritten as a call to
     --  the corresponding predefined operator, with suitable conversions. Note
*************** package body Sem_Res is
*** 265,272 ****
  
     procedure Simplify_Type_Conversion (N : Node_Id);
     --  Called after N has been resolved and evaluated, but before range checks
!    --  have been applied. Currently simplifies a combination of floating-point
!    --  to integer conversion and Rounding or Truncation attribute.
  
     function Unique_Fixed_Point_Type (N : Node_Id) return Entity_Id;
     --  A universal_fixed expression in an universal context is unambiguous if
--- 273,279 ----
  
     procedure Simplify_Type_Conversion (N : Node_Id);
     --  Called after N has been resolved and evaluated, but before range checks
!    --  have been applied. This rewrites the conversion into a simpler form.
  
     function Unique_Fixed_Point_Type (N : Node_Id) return Entity_Id;
     --  A universal_fixed expression in an universal context is unambiguous if
*************** package body Sem_Res is
*** 448,455 ****
                and then not
                  (Nkind (Parent (P)) = N_Subtype_Indication
                    and then
!                     Nkind_In (Parent (Parent (P)), N_Component_Definition,
!                                                    N_Subtype_Declaration)
                    and then Paren_Count (N) = 0)
              then
                 Error_Msg_N
--- 455,462 ----
                and then not
                  (Nkind (Parent (P)) = N_Subtype_Indication
                    and then
!                     Nkind (Parent (Parent (P))) in N_Component_Definition
!                                                  | N_Subtype_Declaration
                    and then Paren_Count (N) = 0)
              then
                 Error_Msg_N
*************** package body Sem_Res is
*** 573,580 ****
  
        --  Legal case is in index or discriminant constraint
  
!       elsif Nkind_In (PN, N_Index_Or_Discriminant_Constraint,
!                           N_Discriminant_Association)
        then
           if Paren_Count (N) > 0 then
              Error_Msg_N
--- 580,587 ----
  
        --  Legal case is in index or discriminant constraint
  
!       elsif Nkind (PN) in N_Index_Or_Discriminant_Constraint
!                         | N_Discriminant_Association
        then
           if Paren_Count (N) > 0 then
              Error_Msg_N
*************** package body Sem_Res is
*** 595,603 ****
        else
           D := PN;
           P := Parent (PN);
!          while not Nkind_In (P, N_Component_Declaration,
!                                 N_Subtype_Indication,
!                                 N_Entry_Declaration)
           loop
              D := P;
              P := Parent (P);
--- 602,609 ----
        else
           D := PN;
           P := Parent (PN);
!          while Nkind (P) not in
!            N_Component_Declaration | N_Subtype_Indication | N_Entry_Declaration
           loop
              D := P;
              P := Parent (P);
*************** package body Sem_Res is
*** 610,617 ****
           --  course a double fault.
  
           if (Nkind (P) = N_Subtype_Indication
!               and then Nkind_In (Parent (P), N_Component_Definition,
!                                              N_Derived_Type_Definition)
                and then D = Constraint (P))
  
             --  The constraint itself may be given by a subtype indication,
--- 616,623 ----
           --  course a double fault.
  
           if (Nkind (P) = N_Subtype_Indication
!               and then Nkind (Parent (P)) in N_Component_Definition
!                                            | N_Derived_Type_Definition
                and then D = Constraint (P))
  
             --  The constraint itself may be given by a subtype indication,
*************** package body Sem_Res is
*** 803,814 ****
        function Is_Conditional_Statement (N : Node_Id) return Boolean is
        begin
           return
!            Nkind_In (N, N_And_Then,
!                         N_Case_Expression,
!                         N_Case_Statement,
!                         N_If_Expression,
!                         N_If_Statement,
!                         N_Or_Else);
        end Is_Conditional_Statement;
  
        -------------------------------
--- 809,820 ----
        function Is_Conditional_Statement (N : Node_Id) return Boolean is
        begin
           return
!            Nkind (N) in N_And_Then
!                       | N_Case_Expression
!                       | N_Case_Statement
!                       | N_If_Expression
!                       | N_If_Statement
!                       | N_Or_Else;
        end Is_Conditional_Statement;
  
        -------------------------------
*************** package body Sem_Res is
*** 834,840 ****
        begin
           return
             Nkind (HSS) = N_Handled_Sequence_Of_Statements
!              and then Nkind_In (Parent (HSS), N_Entry_Body, N_Subprogram_Body)
               and then Is_List_Member (N)
               and then List_Containing (N) = Statements (HSS);
        end Is_Immediately_Within_Body;
--- 840,846 ----
        begin
           return
             Nkind (HSS) = N_Handled_Sequence_Of_Statements
!              and then Nkind (Parent (HSS)) in N_Entry_Body | N_Subprogram_Body
               and then Is_List_Member (N)
               and then List_Containing (N) = Statements (HSS);
        end Is_Immediately_Within_Body;
*************** package body Sem_Res is
*** 1142,1150 ****
           --  functions, this is never a parameterless call (RM 4.1.4(6)).
  
           if Nkind (Parent (N)) = N_Attribute_Reference
!             and then Nam_In (Attribute_Name (Parent (N)), Name_Address,
!                                                           Name_Code_Address,
!                                                           Name_Access)
           then
              return False;
           end if;
--- 1148,1155 ----
           --  functions, this is never a parameterless call (RM 4.1.4(6)).
  
           if Nkind (Parent (N)) = N_Attribute_Reference
!             and then Attribute_Name (Parent (N))
!                        in Name_Address | Name_Code_Address | Name_Access
           then
              return False;
           end if;
*************** package body Sem_Res is
*** 1194,1202 ****
          and then Ekind (Entity (N)) = E_Procedure
          and then not Is_Overloaded (N)
          and then
!          Nkind_In (Parent (N), N_Parameter_Association,
!                                N_Function_Call,
!                                N_Procedure_Call_Statement)
        then
           return;
        end if;
--- 1199,1207 ----
          and then Ekind (Entity (N)) = E_Procedure
          and then not Is_Overloaded (N)
          and then
!          Nkind (Parent (N)) in N_Parameter_Association
!                              | N_Function_Call
!                              | N_Procedure_Call_Statement
        then
           return;
        end if;
*************** package body Sem_Res is
*** 1231,1238 ****
          (Nkind (N) = N_Selected_Component
            and then (Ekind (Entity (Selector_Name (N))) = E_Function
                       or else
!                        (Ekind_In (Entity (Selector_Name (N)), E_Entry,
!                                                               E_Procedure)
                           and then Is_Overloaded (Selector_Name (N)))))
  
        --  If one of the above three conditions is met, rewrite as call. Apply
--- 1236,1243 ----
          (Nkind (N) = N_Selected_Component
            and then (Ekind (Entity (Selector_Name (N))) = E_Function
                       or else
!                        (Ekind (Entity (Selector_Name (N))) in
!                           E_Entry | E_Procedure
                           and then Is_Overloaded (Selector_Name (N)))))
  
        --  If one of the above three conditions is met, rewrite as call. Apply
*************** package body Sem_Res is
*** 1540,1548 ****
           elsif In_Instance then
              null;
  
!          elsif Nam_In (Op_Name, Name_Op_Multiply, Name_Op_Divide)
!            and then Is_Fixed_Point_Type (Etype (Left_Opnd  (Op_Node)))
!            and then Is_Fixed_Point_Type (Etype (Right_Opnd (Op_Node)))
           then
              if Pack /= Standard_Standard then
                 Error := True;
--- 1545,1553 ----
           elsif In_Instance then
              null;
  
!          elsif Op_Name in Name_Op_Multiply | Name_Op_Divide
!            and then Is_Fixed_Point_Type (Etype (Act1))
!            and then Is_Fixed_Point_Type (Etype (Act2))
           then
              if Pack /= Standard_Standard then
                 Error := True;
*************** package body Sem_Res is
*** 1552,1559 ****
           --  available.
  
           elsif Ada_Version >= Ada_2005
!            and then Nam_In (Op_Name, Name_Op_Eq, Name_Op_Ne)
!            and then Ekind (Etype (Act1)) = E_Anonymous_Access_Type
           then
              null;
  
--- 1557,1565 ----
           --  available.
  
           elsif Ada_Version >= Ada_2005
!            and then Op_Name in Name_Op_Eq | Name_Op_Ne
!            and then (Is_Anonymous_Access_Type (Etype (Act1))
!                       or else Is_Anonymous_Access_Type (Etype (Act2)))
           then
              null;
  
*************** package body Sem_Res is
*** 1662,1668 ****
             and then not In_Instance
           then
              if Is_Fixed_Point_Type (Typ)
!               and then Nam_In (Op_Name, Name_Op_Multiply, Name_Op_Divide)
              then
                 --  Already checked above
  
--- 1668,1674 ----
             and then not In_Instance
           then
              if Is_Fixed_Point_Type (Typ)
!               and then Op_Name in Name_Op_Multiply | Name_Op_Divide
              then
                 --  Already checked above
  
*************** package body Sem_Res is
*** 1699,1705 ****
        --  the equality node will not resolve any remaining ambiguity, and it
        --  assumes that the first operand is not overloaded.
  
!       if Nam_In (Op_Name, Name_Op_Eq, Name_Op_Ne)
          and then Ekind (Func) = E_Function
          and then Is_Overloaded (Act1)
        then
--- 1705,1711 ----
        --  the equality node will not resolve any remaining ambiguity, and it
        --  assumes that the first operand is not overloaded.
  
!       if Op_Name in Name_Op_Eq | Name_Op_Ne
          and then Ekind (Func) = E_Function
          and then Is_Overloaded (Act1)
        then
*************** package body Sem_Res is
*** 1752,1829 ****
        else
           Resolve (N, Typ);
        end if;
- 
-       --  If in ASIS_Mode, propagate operand types to original actuals of
-       --  function call, which would otherwise not be fully resolved. If
-       --  the call has already been constant-folded, nothing to do. We
-       --  relocate the operand nodes rather than copy them, to preserve
-       --  original_node pointers, given that the operands themselves may
-       --  have been rewritten. If the call was itself a rewriting of an
-       --  operator node, nothing to do.
- 
-       if ASIS_Mode
-         and then Nkind (N) in N_Op
-         and then Nkind (Original_Node (N)) = N_Function_Call
-       then
-          declare
-             L : Node_Id;
-             R : constant Node_Id := Right_Opnd (N);
- 
-             Old_First : constant Node_Id :=
-                           First (Parameter_Associations (Original_Node (N)));
-             Old_Sec   : Node_Id;
- 
-          begin
-             if Is_Binary then
-                L       := Left_Opnd (N);
-                Old_Sec := Next (Old_First);
- 
-                --  If the original call has named associations, replace the
-                --  explicit actual parameter in the association with the proper
-                --  resolved operand.
- 
-                if Nkind (Old_First) = N_Parameter_Association then
-                   if Chars (Selector_Name (Old_First)) =
-                      Chars (First_Entity (Op_Id))
-                   then
-                      Rewrite (Explicit_Actual_Parameter (Old_First),
-                        Relocate_Node (L));
-                   else
-                      Rewrite (Explicit_Actual_Parameter (Old_First),
-                        Relocate_Node (R));
-                   end if;
- 
-                else
-                   Rewrite (Old_First, Relocate_Node (L));
-                end if;
- 
-                if Nkind (Old_Sec) = N_Parameter_Association then
-                   if Chars (Selector_Name (Old_Sec)) =
-                      Chars (First_Entity (Op_Id))
-                   then
-                      Rewrite (Explicit_Actual_Parameter (Old_Sec),
-                        Relocate_Node (L));
-                   else
-                      Rewrite (Explicit_Actual_Parameter (Old_Sec),
-                        Relocate_Node (R));
-                   end if;
- 
-                else
-                   Rewrite (Old_Sec, Relocate_Node (R));
-                end if;
- 
-             else
-                if Nkind (Old_First) = N_Parameter_Association then
-                   Rewrite (Explicit_Actual_Parameter (Old_First),
-                     Relocate_Node (R));
-                else
-                   Rewrite (Old_First, Relocate_Node (R));
-                end if;
-             end if;
-          end;
- 
-          Set_Parent (Original_Node (N), Parent (N));
-       end if;
     end Make_Call_Into_Operator;
  
     -------------------
--- 1758,1763 ----
*************** package body Sem_Res is
*** 2163,2169 ****
           then
              Error_Msg_NE ("ambiguous call to&", Arg, Name (Arg));
  
!             --  Could use comments on what is going on here???
  
              Get_First_Interp (Name (Arg), I, It);
              while Present (It.Nam) loop
--- 2097,2104 ----
           then
              Error_Msg_NE ("ambiguous call to&", Arg, Name (Arg));
  
!             --  Examine possible interpretations, and adapt the message
!             --  for inherited subprograms declared by a type derivation.
  
              Get_First_Interp (Name (Arg), I, It);
              while Present (It.Nam) loop
*************** package body Sem_Res is
*** 2178,2183 ****
--- 2113,2123 ----
                 Get_Next_Interp (I, It);
              end loop;
           end if;
+ 
+          --  Additional message and hint if the ambiguity involves an Ada2020
+          --  container aggregate.
+ 
+          Check_Ambiguous_Aggregate (N);
        end Report_Ambiguous_Argument;
  
        -----------------------
*************** package body Sem_Res is
*** 2209,2214 ****
--- 2149,2164 ----
           return;
        end Resolution_Failed;
  
+       Literal_Aspect_Map :
+         constant array (N_Numeric_Or_String_Literal) of Aspect_Id :=
+           (N_Integer_Literal => Aspect_Integer_Literal,
+            N_Real_Literal    => Aspect_Real_Literal,
+            N_String_Literal  => Aspect_String_Literal);
+ 
+       Named_Number_Aspect_Map : constant array (Named_Kind) of Aspect_Id :=
+         (E_Named_Integer => Aspect_Integer_Literal,
+          E_Named_Real    => Aspect_Real_Literal);
+ 
     --  Start of processing for Resolve
  
     begin
*************** package body Sem_Res is
*** 2220,2228 ****
        --  access-to-subprogram type.
  
        if Nkind (N) = N_Attribute_Reference
!         and then Nam_In (Attribute_Name (N), Name_Access,
!                                              Name_Unrestricted_Access,
!                                              Name_Unchecked_Access)
          and then Comes_From_Source (N)
          and then Is_Entity_Name (Prefix (N))
          and then Is_Subprogram (Entity (Prefix (N)))
--- 2170,2178 ----
        --  access-to-subprogram type.
  
        if Nkind (N) = N_Attribute_Reference
!         and then Attribute_Name (N) in Name_Access
!                                      | Name_Unrestricted_Access
!                                      | Name_Unchecked_Access
          and then Comes_From_Source (N)
          and then Is_Entity_Name (Prefix (N))
          and then Is_Subprogram (Entity (Prefix (N)))
*************** package body Sem_Res is
*** 2344,2353 ****
        Check_Parameterless_Call (N);
  
        --  The resolution of an Expression_With_Actions is determined by
!       --  its Expression.
  
        if Nkind (N) = N_Expression_With_Actions then
!          Resolve (Expression (N), Typ);
  
           Found := True;
           Expr_Type := Etype (Expression (N));
--- 2294,2308 ----
        Check_Parameterless_Call (N);
  
        --  The resolution of an Expression_With_Actions is determined by
!       --  its Expression, but if the node comes from source it is a
!       --  Declare_Expression and requires scope management.
  
        if Nkind (N) = N_Expression_With_Actions then
!          if Comes_From_Source (N) and then N = Original_Node (N) then
!             Resolve_Declare_Expression (N, Typ);
!          else
!             Resolve (Expression (N), Typ);
!          end if;
  
           Found := True;
           Expr_Type := Etype (Expression (N));
*************** package body Sem_Res is
*** 2632,2641 ****
                    Set_Entity (N, Seen);
                    Generate_Reference (Seen, N);
  
!                elsif Nkind_In (N, N_Case_Expression,
!                                   N_Character_Literal,
!                                   N_Delta_Aggregate,
!                                   N_If_Expression)
                 then
                    Set_Etype (N, Expr_Type);
  
--- 2587,2596 ----
                    Set_Entity (N, Seen);
                    Generate_Reference (Seen, N);
  
!                elsif Nkind (N) in N_Case_Expression
!                                 | N_Character_Literal
!                                 | N_Delta_Aggregate
!                                 | N_If_Expression
                 then
                    Set_Etype (N, Expr_Type);
  
*************** package body Sem_Res is
*** 2701,2715 ****
                 --  with a name that is an explicit dereference, there is
                 --  nothing to be done at this point.
  
!                elsif Nkind_In (N, N_Attribute_Reference,
!                                   N_And_Then,
!                                   N_Explicit_Dereference,
!                                   N_Identifier,
!                                   N_Indexed_Component,
!                                   N_Or_Else,
!                                   N_Range,
!                                   N_Selected_Component,
!                                   N_Slice)
                   or else Nkind (Name (N)) = N_Explicit_Dereference
                 then
                    null;
--- 2656,2670 ----
                 --  with a name that is an explicit dereference, there is
                 --  nothing to be done at this point.
  
!                elsif Nkind (N) in N_Attribute_Reference
!                                 | N_And_Then
!                                 | N_Explicit_Dereference
!                                 | N_Identifier
!                                 | N_Indexed_Component
!                                 | N_Or_Else
!                                 | N_Range
!                                 | N_Selected_Component
!                                 | N_Slice
                   or else Nkind (Name (N)) = N_Explicit_Dereference
                 then
                    null;
*************** package body Sem_Res is
*** 2826,2831 ****
--- 2781,2797 ----
              elsif Nkind (N) = N_Aggregate
                and then Etype (N) = Any_Composite
              then
+                if Ada_Version >= Ada_2020
+                  and then Has_Aspect (Typ, Aspect_Aggregate)
+                then
+                   Resolve_Container_Aggregate (N, Typ);
+ 
+                   if Expander_Active then
+                      Expand (N);
+                   end if;
+                   return;
+                end if;
+ 
                 --  Disable expansion in any case. If there is a type mismatch
                 --  it may be fatal to try to expand the aggregate. The flag
                 --  would otherwise be set to false when the error is posted.
*************** package body Sem_Res is
*** 2912,2917 ****
--- 2878,3002 ----
                 end;
              end if;
  
+             --  Rewrite Literal as a call if the corresponding literal aspect
+             --  is set.
+ 
+             if (Nkind (N) in N_Numeric_Or_String_Literal
+                  and then
+                    Present
+                      (Find_Aspect (Typ, Literal_Aspect_Map (Nkind (N)))))
+               or else
+                 (Nkind (N) = N_Identifier
+                   and then Is_Named_Number (Entity (N))
+                   and then
+                     Present
+                       (Find_Aspect
+                         (Typ, Named_Number_Aspect_Map (Ekind (Entity (N))))))
+             then
+                declare
+                   Lit_Aspect : constant Aspect_Id :=
+                     (if Nkind (N) = N_Identifier
+                      then Named_Number_Aspect_Map (Ekind (Entity (N)))
+                      else Literal_Aspect_Map (Nkind (N)));
+ 
+                   Loc  : constant Source_Ptr := Sloc (N);
+ 
+                   Callee : Entity_Id :=
+                     Entity (Expression (Find_Aspect (Typ, Lit_Aspect)));
+ 
+                   Name : constant Node_Id :=
+                     Make_Identifier (Loc, Chars (Callee));
+ 
+                   Param1 : Node_Id;
+                   Param2 : Node_Id;
+                   Params : List_Id;
+                   Call   : Node_Id;
+                   Expr   : Node_Id;
+ 
+                begin
+                   if Nkind (N) = N_Identifier then
+                      Expr := Expression (Declaration_Node (Entity (N)));
+ 
+                      if Ekind (Entity (N)) = E_Named_Integer then
+                         UI_Image (Expr_Value (Expr), Decimal);
+                         Start_String;
+                         Store_String_Chars
+                           (UI_Image_Buffer (1 .. UI_Image_Length));
+                         Param1 := Make_String_Literal (Loc, End_String);
+                         Params := New_List (Param1);
+ 
+                      else
+                         UI_Image (Norm_Num (Expr_Value_R (Expr)), Decimal);
+                         Start_String;
+                         Store_String_Chars
+                           (UI_Image_Buffer (1 .. UI_Image_Length));
+                         Param1 := Make_String_Literal (Loc, End_String);
+ 
+                         --  Note: Set_Etype is called below on Param1
+ 
+                         UI_Image (Norm_Den (Expr_Value_R (Expr)), Decimal);
+                         Start_String;
+                         Store_String_Chars
+                           (UI_Image_Buffer (1 .. UI_Image_Length));
+                         Param2 := Make_String_Literal (Loc, End_String);
+                         Set_Etype (Param2, Standard_String);
+ 
+                         Params := New_List (Param1, Param2);
+ 
+                         if Present (Related_Expression (Callee)) then
+                            Callee := Related_Expression (Callee);
+                         else
+                            Error_Msg_NE
+                              ("cannot resolve & for a named real", N, Callee);
+                            return;
+                         end if;
+                      end if;
+ 
+                   elsif Nkind (N) = N_String_Literal then
+                      Param1 := Make_String_Literal (Loc, Strval (N));
+                      Params := New_List (Param1);
+                   else
+                      Param1 :=
+                        Make_String_Literal
+                          (Loc, String_From_Numeric_Literal (N));
+                      Params := New_List (Param1);
+                   end if;
+ 
+                   Call :=
+                     Make_Function_Call
+                       (Sloc                   => Loc,
+                        Name                   => Name,
+                        Parameter_Associations => Params);
+ 
+                   Set_Entity (Name, Callee);
+                   Set_Is_Overloaded (Name, False);
+ 
+                   if Lit_Aspect = Aspect_String_Literal then
+                      Set_Etype (Param1, Standard_Wide_Wide_String);
+                   else
+                      Set_Etype (Param1, Standard_String);
+                   end if;
+ 
+                   Set_Etype (Call, Etype (Callee));
+ 
+                   --  Conversion needed in case of an inherited aspect
+                   --  of a derived type.
+                   --
+                   --  ??? Need to do something different here for downward
+                   --  tagged conversion case (which is only possible in the
+                   --  case of a null extension); the current call to
+                   --  Convert_To results in an error message about an illegal
+                   --  downward conversion.
+ 
+                   Call := Convert_To (Typ, Call);
+ 
+                   Rewrite (N, Call);
+                end;
+ 
+                Analyze_And_Resolve (N, Typ);
+                return;
+             end if;
+ 
              --  Looks like we have a type error, but check for special case
              --  of Address wanted, integer found, with the configuration pragma
              --  Allow_Integer_Address active. If we have this case, introduce
*************** package body Sem_Res is
*** 2925,2931 ****
                 return;
  
              --  Under relaxed RM semantics silently replace occurrences of null
!             --  by System.Address_Null.
  
              elsif Null_To_Null_Address_Convert_OK (N, Typ) then
                 Replace_Null_By_Null_Address (N);
--- 3010,3016 ----
                 return;
  
              --  Under relaxed RM semantics silently replace occurrences of null
!             --  by System.Null_Address.
  
              elsif Null_To_Null_Address_Convert_OK (N, Typ) then
                 Replace_Null_By_Null_Address (N);
*************** package body Sem_Res is
*** 3000,3006 ****
           Resolution_Failed;
           return;
  
!       --  Only one intepretation
  
        else
           --  In Ada 2005, if we have something like "X : T := 2 + 2;", where
--- 3085,3091 ----
           Resolution_Failed;
           return;
  
!       --  Only one interpretation
  
        else
           --  In Ada 2005, if we have something like "X : T := 2 + 2;", where
*************** package body Sem_Res is
*** 3395,3401 ****
  
        procedure Flag_Effectively_Volatile_Objects (Expr : Node_Id);
        --  Emit an error concerning the illegal usage of an effectively volatile
!       --  object in interfering context (SPARK RM 7.13(12)).
  
        procedure Insert_Default;
        --  If the actual is missing in a call, insert in the actuals list
--- 3480,3486 ----
  
        procedure Flag_Effectively_Volatile_Objects (Expr : Node_Id);
        --  Emit an error concerning the illegal usage of an effectively volatile
!       --  object for reading in interfering context (SPARK RM 7.1.3(10)).
  
        procedure Insert_Default;
        --  If the actual is missing in a call, insert in the actuals list
*************** package body Sem_Res is
*** 3440,3452 ****
  
                 elsif Has_Discriminants (F_Typ)
                   and then not Is_Constrained (F_Typ)
!                  and then not Has_Constrained_Partial_View (F_Typ)
!                  and then not Is_Generic_Type (F_Typ)
                 then
                    null;
  
                 else
!                   Error_Msg_NE ("untagged actual does not match "
                                  & "aliased formal&", A, F);
                 end if;
  
--- 3525,3537 ----
  
                 elsif Has_Discriminants (F_Typ)
                   and then not Is_Constrained (F_Typ)
!                  and then not Object_Type_Has_Constrained_Partial_View
!                                 (Typ => F_Typ, Scop => Current_Scope)
                 then
                    null;
  
                 else
!                   Error_Msg_NE ("untagged actual does not statically match "
                                  & "aliased formal&", A, F);
                 end if;
  
*************** package body Sem_Res is
*** 3460,3475 ****
  
              elsif Ekind (Etype (Nam)) = E_Anonymous_Access_Type then
                 if Nkind (Parent (N)) = N_Type_Conversion
!                  and then Type_Access_Level (Etype (Parent (N))) <
!                                                         Object_Access_Level (A)
                 then
                    Error_Msg_N ("aliased actual has wrong accessibility", A);
                 end if;
  
              elsif Nkind (Parent (N)) = N_Qualified_Expression
                and then Nkind (Parent (Parent (N))) = N_Allocator
!               and then Type_Access_Level (Etype (Parent (Parent (N)))) <
!                                                         Object_Access_Level (A)
              then
                 Error_Msg_N
                   ("aliased actual in allocator has wrong accessibility", A);
--- 3545,3560 ----
  
              elsif Ekind (Etype (Nam)) = E_Anonymous_Access_Type then
                 if Nkind (Parent (N)) = N_Type_Conversion
!                  and then Type_Access_Level (Etype (Parent (N)))
!                             < Static_Accessibility_Level (A, Object_Decl_Level)
                 then
                    Error_Msg_N ("aliased actual has wrong accessibility", A);
                 end if;
  
              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
                 Error_Msg_N
                   ("aliased actual in allocator has wrong accessibility", A);
*************** package body Sem_Res is
*** 3654,3660 ****
        procedure Flag_Effectively_Volatile_Objects (Expr : Node_Id) is
           function Flag_Object (N : Node_Id) return Traverse_Result;
           --  Determine whether arbitrary node N denotes an effectively volatile
!          --  object and if it does, emit an error.
  
           -----------------
           -- Flag_Object --
--- 3739,3745 ----
        procedure Flag_Effectively_Volatile_Objects (Expr : Node_Id) is
           function Flag_Object (N : Node_Id) return Traverse_Result;
           --  Determine whether arbitrary node N denotes an effectively volatile
!          --  object for reading and if it does, emit an error.
  
           -----------------
           -- Flag_Object --
*************** package body Sem_Res is
*** 3674,3686 ****
                 Id := Entity (N);
  
                 if Is_Object (Id)
!                  and then Is_Effectively_Volatile (Id)
!                  and then (Async_Writers_Enabled (Id)
!                             or else Effective_Reads_Enabled (Id))
                 then
                    Error_Msg_N
                      ("volatile object cannot appear in this context (SPARK "
!                      & "RM 7.1.3(11))", N);
                    return Skip;
                 end if;
              end if;
--- 3759,3769 ----
                 Id := Entity (N);
  
                 if Is_Object (Id)
!                  and then Is_Effectively_Volatile_For_Reading (Id)
                 then
                    Error_Msg_N
                      ("volatile object cannot appear in this context (SPARK "
!                      & "RM 7.1.3(10))", N);
                    return Skip;
                 end if;
              end if;
*************** package body Sem_Res is
*** 4077,4145 ****
                and then not Is_Class_Wide_Type (Etype (Expression (A)))
                and then not Is_Interface (Etype (A))
              then
!                if Ekind (F) = E_In_Out_Parameter
!                  and then Is_Array_Type (Etype (F))
!                then
!                   --  In a view conversion, the conversion must be legal in
!                   --  both directions, and thus both component types must be
!                   --  aliased, or neither (4.6 (8)).
  
!                   --  The extra rule in 4.6 (24.9.2) seems unduly restrictive:
!                   --  the privacy requirement should not apply to generic
!                   --  types, and should be checked in an instance. ARG query
!                   --  is in order ???
  
!                   if Has_Aliased_Components (Etype (Expression (A))) /=
!                      Has_Aliased_Components (Etype (F))
                    then
!                      Error_Msg_N
!                        ("both component types in a view conversion must be"
!                          & " aliased, or neither", A);
! 
!                   --  Comment here??? what set of cases???
  
!                   elsif
!                      not Same_Ancestor (Etype (F), Etype (Expression (A)))
!                   then
!                      --  Check view conv between unrelated by ref array types
  
!                      if Is_By_Reference_Type (Etype (F))
!                         or else Is_By_Reference_Type (Etype (Expression (A)))
                       then
!                         Error_Msg_N
!                           ("view conversion between unrelated by reference "
!                            & "array types not allowed (\'A'I-00246)", A);
  
!                      --  In Ada 2005 mode, check view conversion component
!                      --  type cannot be private, tagged, or volatile. Note
!                      --  that we only apply this to source conversions. The
!                      --  generated code can contain conversions which are
!                      --  not subject to this test, and we cannot extract the
!                      --  component type in such cases since it is not present.
  
!                      elsif Comes_From_Source (A)
!                        and then Ada_Version >= Ada_2005
                       then
!                         declare
!                            Comp_Type : constant Entity_Id :=
!                                          Component_Type
!                                            (Etype (Expression (A)));
!                         begin
!                            if (Is_Private_Type (Comp_Type)
!                                  and then not Is_Generic_Type (Comp_Type))
!                              or else Is_Tagged_Type (Comp_Type)
!                              or else Is_Volatile (Comp_Type)
!                            then
!                               Error_Msg_N
!                                 ("component type of a view conversion cannot"
!                                    & " be private, tagged, or volatile"
!                                    & " (RM 4.6 (24))",
!                                    Expression (A));
!                            end if;
!                         end;
                       end if;
                    end if;
!                end if;
  
                 --  Resolve expression if conversion is all OK
  
--- 4160,4266 ----
                and then not Is_Class_Wide_Type (Etype (Expression (A)))
                and then not Is_Interface (Etype (A))
              then
!                declare
!                   Expr_Typ : constant Entity_Id := Etype (Expression (A));
  
!                begin
!                   --  Check RM 4.6 (24.2/2)
  
!                   if Is_Array_Type (Etype (F))
!                     and then Is_View_Conversion (A)
                    then
!                      --  In a view conversion, the conversion must be legal in
!                      --  both directions, and thus both component types must be
!                      --  aliased, or neither (4.6 (8)).
  
!                      --  Check RM 4.6 (24.8/2)
  
!                      if Has_Aliased_Components (Expr_Typ) /=
!                         Has_Aliased_Components (Etype (F))
                       then
!                         --  This normally illegal conversion is legal in an
!                         --  expanded instance body because of RM 12.3(11).
!                         --  At runtime, conversion must create a new object.
  
!                         if not In_Instance then
!                            Error_Msg_N
!                              ("both component types in a view conversion must"
!                               & " be aliased, or neither", A);
!                         end if;
  
!                      --  Check RM 4.6 (24/3)
! 
!                      elsif not Same_Ancestor (Etype (F), Expr_Typ) then
!                         --  Check view conv between unrelated by ref array
!                         --  types.
! 
!                         if Is_By_Reference_Type (Etype (F))
!                           or else Is_By_Reference_Type (Expr_Typ)
!                         then
!                            Error_Msg_N
!                              ("view conversion between unrelated by reference "
!                               & "array types not allowed ('A'I-00246)", A);
! 
!                         --  In Ada 2005 mode, check view conversion component
!                         --  type cannot be private, tagged, or volatile. Note
!                         --  that we only apply this to source conversions. The
!                         --  generated code can contain conversions which are
!                         --  not subject to this test, and we cannot extract the
!                         --  component type in such cases since it is not
!                         --  present.
! 
!                         elsif Comes_From_Source (A)
!                           and then Ada_Version >= Ada_2005
!                         then
!                            declare
!                               Comp_Type : constant Entity_Id :=
!                                             Component_Type (Expr_Typ);
!                            begin
!                               if (Is_Private_Type (Comp_Type)
!                                     and then not Is_Generic_Type (Comp_Type))
!                                 or else Is_Tagged_Type (Comp_Type)
!                                 or else Is_Volatile (Comp_Type)
!                               then
!                                  Error_Msg_N
!                                    ("component type of a view conversion " &
!                                     "cannot be private, tagged, or volatile" &
!                                     " (RM 4.6 (24))",
!                                     Expression (A));
!                               end if;
!                            end;
!                         end if;
!                      end if;
! 
!                   --  AI12-0074 & AI12-0377
!                   --  Check 6.4.1: If the mode is out, the actual parameter is
!                   --  a view conversion, and the type of the formal parameter
!                   --  is a scalar type, then either:
!                   --    - the target and operand type both do not have the
!                   --      Default_Value aspect specified; or
!                   --    - the target and operand type both have the
!                   --      Default_Value aspect specified, and there shall exist
!                   --      a type (other than a root numeric type) that is an
!                   --      ancestor of both the target type and the operand
!                   --      type.
! 
!                   elsif Ekind (F) = E_Out_Parameter
!                     and then Is_Scalar_Type (Etype (F))
!                   then
!                      if Has_Default_Aspect (Etype (F)) /=
!                         Has_Default_Aspect (Expr_Typ)
                       then
!                         Error_Msg_N
!                           ("view conversion requires Default_Value on both " &
!                            "types (RM 6.4.1)", A);
!                      elsif Has_Default_Aspect (Expr_Typ)
!                        and then not Same_Ancestor (Etype (F), Expr_Typ)
!                      then
!                         Error_Msg_N
!                           ("view conversion between unrelated types with "
!                            & "Default_Value not allowed (RM 6.4.1)", A);
                       end if;
                    end if;
!                end;
  
                 --  Resolve expression if conversion is all OK
  
*************** package body Sem_Res is
*** 4349,4419 ****
                   ("invalid use of untagged formal incomplete type", A);
              end if;
  
-             if Comes_From_Source (Original_Node (N))
-               and then Nkind_In (Original_Node (N), N_Function_Call,
-                                                     N_Procedure_Call_Statement)
-             then
-                --  In formal mode, check that actual parameters matching
-                --  formals of tagged types are objects (or ancestor type
-                --  conversions of objects), not general expressions.
- 
-                if Is_Actual_Tagged_Parameter (A) then
-                   if Is_SPARK_05_Object_Reference (A) then
-                      null;
- 
-                   elsif Nkind (A) = N_Type_Conversion then
-                      declare
-                         Operand     : constant Node_Id   := Expression (A);
-                         Operand_Typ : constant Entity_Id := Etype (Operand);
-                         Target_Typ  : constant Entity_Id := A_Typ;
- 
-                      begin
-                         if not Is_SPARK_05_Object_Reference (Operand) then
-                            Check_SPARK_05_Restriction
-                              ("object required", Operand);
- 
-                         --  In formal mode, the only view conversions are those
-                         --  involving ancestor conversion of an extended type.
- 
-                         elsif not
-                           (Is_Tagged_Type (Target_Typ)
-                            and then not Is_Class_Wide_Type (Target_Typ)
-                            and then Is_Tagged_Type (Operand_Typ)
-                            and then not Is_Class_Wide_Type (Operand_Typ)
-                            and then Is_Ancestor (Target_Typ, Operand_Typ))
-                         then
-                            if Ekind_In
-                              (F, E_Out_Parameter, E_In_Out_Parameter)
-                            then
-                               Check_SPARK_05_Restriction
-                                 ("ancestor conversion is the only permitted "
-                                  & "view conversion", A);
-                            else
-                               Check_SPARK_05_Restriction
-                                 ("ancestor conversion required", A);
-                            end if;
- 
-                         else
-                            null;
-                         end if;
-                      end;
- 
-                   else
-                      Check_SPARK_05_Restriction ("object required", A);
-                   end if;
- 
-                --  In formal mode, the only view conversions are those
-                --  involving ancestor conversion of an extended type.
- 
-                elsif Nkind (A) = N_Type_Conversion
-                  and then Ekind_In (F, E_Out_Parameter, E_In_Out_Parameter)
-                then
-                   Check_SPARK_05_Restriction
-                     ("ancestor conversion is the only permitted view "
-                      & "conversion", A);
-                end if;
-             end if;
- 
              --  has warnings suppressed, then we reset Never_Set_In_Source for
              --  the calling entity. The reason for this is to catch cases like
              --  GNAT.Spitbol.Patterns.Vstring_Var where the called subprogram
--- 4470,4475 ----
*************** package body Sem_Res is
*** 4551,4557 ****
  
              --  Apply appropriate constraint/predicate checks for IN [OUT] case
  
!             if Ekind_In (F, E_In_Parameter, E_In_Out_Parameter) then
  
                 --  Apply predicate tests except in certain special cases. Note
                 --  that it might be more consistent to apply these only when
--- 4607,4613 ----
  
              --  Apply appropriate constraint/predicate checks for IN [OUT] case
  
!             if Ekind (F) in E_In_Parameter | E_In_Out_Parameter then
  
                 --  Apply predicate tests except in certain special cases. Note
                 --  that it might be more consistent to apply these only when
*************** package body Sem_Res is
*** 4624,4630 ****
                    elsif Ada_Version >= Ada_2005 then
                       Apply_Compile_Time_Constraint_Error
                         (N      => A,
!                         Msg    => "(Ada 2005) null not allowed in "
                                    & "null-excluding formal??",
                          Reason => CE_Null_Not_Allowed);
                    end if;
--- 4680,4686 ----
                    elsif Ada_Version >= Ada_2005 then
                       Apply_Compile_Time_Constraint_Error
                         (N      => A,
!                         Msg    => "(Ada 2005) NULL not allowed in "
                                    & "null-excluding formal??",
                          Reason => CE_Null_Not_Allowed);
                    end if;
*************** package body Sem_Res is
*** 4633,4639 ****
  
              --  Checks for OUT parameters and IN OUT parameters
  
!             if Ekind_In (F, E_Out_Parameter, E_In_Out_Parameter) then
  
                 --  If there is a type conversion, make sure the return value
                 --  meets the constraints of the variable before the conversion.
--- 4689,4695 ----
  
              --  Checks for OUT parameters and IN OUT parameters
  
!             if Ekind (F) in E_Out_Parameter | E_In_Out_Parameter then
  
                 --  If there is a type conversion, make sure the return value
                 --  meets the constraints of the variable before the conversion.
*************** package body Sem_Res is
*** 4646,4651 ****
--- 4702,4708 ----
                       --  This is for Starlet only though, so long obsolete.
  
                       if Mechanism (F) = By_Reference
+                        and then Ekind (Nam) = E_Procedure
                         and then Is_Valued_Procedure (Nam)
                       then
                          null;
*************** package body Sem_Res is
*** 4715,4721 ****
                 end if;
              end if;
  
!             --  Check illegal cases of atomic/volatile actual (RM C.6(12,13))
  
              if (Is_By_Reference_Type (Etype (F)) or else Is_Aliased (F))
                and then Comes_From_Source (N)
--- 4772,4778 ----
                 end if;
              end if;
  
!             --  Check illegal cases of atomic/volatile/VFA actual (RM C.6(12))
  
              if (Is_By_Reference_Type (Etype (F)) or else Is_Aliased (F))
                and then Comes_From_Source (N)
*************** package body Sem_Res is
*** 4737,4753 ****
                       A, F);
                    Error_Msg_N
                      ("\which is passed by reference (RM C.6(12))", A);
                 end if;
  
                 if Ada_Version >= Ada_2020
!                  and then Is_Subcomponent_Of_Atomic_Object (A)
                   and then not Is_Atomic_Object (A)
                 then
                    Error_Msg_N
!                     ("cannot pass nonatomic subcomponent of atomic object",
!                      A);
                    Error_Msg_NE
!                     ("\to formal & which is passed by reference (RM C.6(13))",
                       A, F);
                 end if;
              end if;
--- 4794,4822 ----
                       A, F);
                    Error_Msg_N
                      ("\which is passed by reference (RM C.6(12))", A);
+ 
+                elsif Is_Volatile_Full_Access_Object (A)
+                  and then not Is_Volatile_Full_Access (Etype (F))
+                then
+                   Error_Msg_NE
+                     ("cannot pass full access object to nonfull access "
+                      & "formal&", A, F);
+                   Error_Msg_N
+                     ("\which is passed by reference (RM C.6(12))", A);
                 end if;
  
+                --  Check for nonatomic subcomponent of a full access object
+                --  in Ada 2020 (RM C.6 (12)).
+ 
                 if Ada_Version >= Ada_2020
!                  and then Is_Subcomponent_Of_Full_Access_Object (A)
                   and then not Is_Atomic_Object (A)
                 then
                    Error_Msg_N
!                     ("cannot pass nonatomic subcomponent of full access "
!                      & "object", A);
                    Error_Msg_NE
!                     ("\to formal & which is passed by reference (RM C.6(12))",
                       A, F);
                 end if;
              end if;
*************** package body Sem_Res is
*** 4869,4904 ****
  
              if SPARK_Mode = On and then Comes_From_Source (A) then
  
!                --  An effectively volatile object may act as an actual when the
!                --  corresponding formal is of a non-scalar effectively volatile
!                --  type (SPARK RM 7.1.3(11)).
  
                 if not Is_Scalar_Type (Etype (F))
!                  and then Is_Effectively_Volatile (Etype (F))
                 then
                    null;
  
!                --  An effectively volatile object may act as an actual in a
!                --  call to an instance of Unchecked_Conversion.
!                --  (SPARK RM 7.1.3(11)).
  
                 elsif Is_Unchecked_Conversion_Instance (Nam) then
                    null;
  
                 --  The actual denotes an object
  
!                elsif Is_Effectively_Volatile_Object (A) then
                    Error_Msg_N
                      ("volatile object cannot act as actual in a call (SPARK "
!                      & "RM 7.1.3(11))", A);
  
                 --  Otherwise the actual denotes an expression. Inspect the
!                --  expression and flag each effectively volatile object with
!                --  enabled property Async_Writers or Effective_Reads as illegal
!                --  because it apprears within an interfering context. Note that
!                --  this is usually done in Resolve_Entity_Name, but when the
!                --  effectively volatile object appears as an actual in a call,
!                --  the call must be resolved first.
  
                 else
                    Flag_Effectively_Volatile_Objects (A);
--- 4938,4973 ----
  
              if SPARK_Mode = On and then Comes_From_Source (A) then
  
!                --  An effectively volatile object for reading may act as an
!                --  actual when the corresponding formal is of a non-scalar
!                --  effectively volatile type for reading (SPARK RM 7.1.3(10)).
  
                 if not Is_Scalar_Type (Etype (F))
!                  and then Is_Effectively_Volatile_For_Reading (Etype (F))
                 then
                    null;
  
!                --  An effectively volatile object for reading may act as an
!                --  actual in a call to an instance of Unchecked_Conversion.
!                --  (SPARK RM 7.1.3(10)).
  
                 elsif Is_Unchecked_Conversion_Instance (Nam) then
                    null;
  
                 --  The actual denotes an object
  
!                elsif Is_Effectively_Volatile_Object_For_Reading (A) then
                    Error_Msg_N
                      ("volatile object cannot act as actual in a call (SPARK "
!                      & "RM 7.1.3(10))", A);
  
                 --  Otherwise the actual denotes an expression. Inspect the
!                --  expression and flag each effectively volatile object
!                --  for reading as illegal because it apprears within an
!                --  interfering context. Note that this is usually done in
!                --  Resolve_Entity_Name, but when the effectively volatile
!                --  object for reading appears as an actual in a call, the
!                --  call must be resolved first.
  
                 else
                    Flag_Effectively_Volatile_Objects (A);
*************** package body Sem_Res is
*** 4916,4922 ****
                    A_Id := Entity (A);
  
                    if Ekind (A_Id) = E_Variable
!                     and then Is_Effectively_Volatile (Etype (A_Id))
                      and then Effective_Reads_Enabled (A_Id)
                    then
                       Error_Msg_NE
--- 4985,4991 ----
                    A_Id := Entity (A);
  
                    if Ekind (A_Id) = E_Variable
!                     and then Is_Effectively_Volatile_For_Reading (Etype (A_Id))
                      and then Effective_Reads_Enabled (A_Id)
                    then
                       Error_Msg_NE
*************** package body Sem_Res is
*** 4951,4957 ****
  
              if Comes_From_Source (Nam)
                and then Is_Ghost_Entity (Nam)
!               and then Ekind_In (F, E_In_Out_Parameter, E_Out_Parameter)
                and then Is_Entity_Name (A)
                and then Present (Entity (A))
                and then not Is_Ghost_Entity (Entity (A))
--- 5020,5026 ----
  
              if Comes_From_Source (Nam)
                and then Is_Ghost_Entity (Nam)
!               and then Ekind (F) in E_In_Out_Parameter | E_Out_Parameter
                and then Is_Entity_Name (A)
                and then Present (Entity (A))
                and then not Is_Ghost_Entity (Entity (A))
*************** package body Sem_Res is
*** 5038,5045 ****
           elsif Nkind (Disc_Exp) = N_Attribute_Reference
             and then Get_Attribute_Id (Attribute_Name (Disc_Exp)) =
                        Attribute_Access
!            and then Object_Access_Level (Prefix (Disc_Exp)) >
!                       Deepest_Type_Access_Level (Alloc_Typ)
           then
              Error_Msg_N
                ("prefix of attribute has deeper level than allocator type",
--- 5107,5115 ----
           elsif Nkind (Disc_Exp) = N_Attribute_Reference
             and then Get_Attribute_Id (Attribute_Name (Disc_Exp)) =
                        Attribute_Access
!            and then Static_Accessibility_Level
!                       (Disc_Exp, Zero_On_Dynamic_Level)
!                         > Deepest_Type_Access_Level (Alloc_Typ)
           then
              Error_Msg_N
                ("prefix of attribute has deeper level than allocator type",
*************** package body Sem_Res is
*** 5050,5057 ****
  
           elsif Ekind (Etype (Disc_Exp)) = E_Anonymous_Access_Type
             and then Nkind (Disc_Exp) = N_Selected_Component
!            and then Object_Access_Level (Prefix (Disc_Exp)) >
!                       Deepest_Type_Access_Level (Alloc_Typ)
           then
              Error_Msg_N
                ("access discriminant has deeper level than allocator type",
--- 5120,5128 ----
  
           elsif Ekind (Etype (Disc_Exp)) = E_Anonymous_Access_Type
             and then Nkind (Disc_Exp) = N_Selected_Component
!            and then Static_Accessibility_Level
!                       (Disc_Exp, Zero_On_Dynamic_Level)
!                         > Deepest_Type_Access_Level (Alloc_Typ)
           then
              Error_Msg_N
                ("access discriminant has deeper level than allocator type",
*************** package body Sem_Res is
*** 5092,5098 ****
              Expr := Next (First (Expressions (Disc_Exp)));
              if Present (Expr) then
                 Check_Allocator_Discrim_Accessibility_Exprs (Expr, Alloc_Typ);
!                Expr := Next (Expr);
                 if Present (Expr) then
                    Check_Allocator_Discrim_Accessibility_Exprs
                      (Expr, Alloc_Typ);
--- 5163,5169 ----
              Expr := Next (First (Expressions (Disc_Exp)));
              if Present (Expr) then
                 Check_Allocator_Discrim_Accessibility_Exprs (Expr, Alloc_Typ);
!                Next (Expr);
                 if Present (Expr) then
                    Check_Allocator_Discrim_Accessibility_Exprs
                      (Expr, Alloc_Typ);
*************** package body Sem_Res is
*** 5158,5165 ****
                ("class-wide allocator not allowed for this access type", N);
           end if;
  
!          Resolve (Expression (E), Etype (E));
!          Check_Non_Static_Context (Expression (E));
           Check_Unset_Reference (Expression (E));
  
           --  Allocators generated by the build-in-place expansion mechanism
--- 5229,5237 ----
                ("class-wide allocator not allowed for this access type", N);
           end if;
  
!          --  Do a full resolution to apply constraint and predicate checks
! 
!          Resolve_Qualified_Expression (E, Etype (E));
           Check_Unset_Reference (Expression (E));
  
           --  Allocators generated by the build-in-place expansion mechanism
*************** package body Sem_Res is
*** 5193,5208 ****
              end if;
           end if;
  
-          --  A qualified expression requires an exact match of the type. Class-
-          --  wide matching is not allowed.
- 
-          if (Is_Class_Wide_Type (Etype (Expression (E)))
-               or else Is_Class_Wide_Type (Etype (E)))
-            and then Base_Type (Etype (Expression (E))) /= Base_Type (Etype (E))
-          then
-             Wrong_Type (Expression (E), Etype (E));
-          end if;
- 
           --  Calls to build-in-place functions are not currently supported in
           --  allocators for access types associated with a simple storage pool.
           --  Supporting such allocators may require passing additional implicit
--- 5265,5270 ----
*************** package body Sem_Res is
*** 5247,5253 ****
              Aggr := Original_Node (Expression (E));
  
              if Has_Discriminants (Subtyp)
!               and then Nkind_In (Aggr, N_Aggregate, N_Extension_Aggregate)
              then
                 Discrim := First_Discriminant (Base_Type (Subtyp));
  
--- 5309,5315 ----
              Aggr := Original_Node (Expression (E));
  
              if Has_Discriminants (Subtyp)
!               and then Nkind (Aggr) in N_Aggregate | N_Extension_Aggregate
              then
                 Discrim := First_Discriminant (Base_Type (Subtyp));
  
*************** package body Sem_Res is
*** 5386,5394 ****
  
                 --  Do not apply Ada 2005 accessibility checks on a class-wide
                 --  allocator if the type given in the allocator is a formal
!                --  type. A run-time check will be performed in the instance.
  
!                elsif not Is_Generic_Type (Exp_Typ) then
                    Error_Msg_N
                      ("type in allocator has deeper level than designated "
                       & "class-wide type", E);
--- 5448,5459 ----
  
                 --  Do not apply Ada 2005 accessibility checks on a class-wide
                 --  allocator if the type given in the allocator is a formal
!                --  type or within a formal package. A run-time check will be
!                --  performed in the instance.
  
!                elsif not Is_Generic_Type (Exp_Typ)
!                  and then not In_Generic_Formal_Package (Exp_Typ)
!                then
                    Error_Msg_N
                      ("type in allocator has deeper level than designated "
                       & "class-wide type", E);
*************** package body Sem_Res is
*** 5604,5621 ****
           --  N is the expression after "delta" in a fixed_point_definition;
           --  see RM-3.5.9(6):
  
!          return Nkind_In (Parent (N), N_Ordinary_Fixed_Point_Definition,
!                                       N_Decimal_Fixed_Point_Definition,
  
           --  N is one of the bounds in a real_range_specification;
           --  see RM-3.5.7(5):
  
!                                       N_Real_Range_Specification,
  
           --  N is the expression of a delta_constraint;
           --  see RM-J.3(3):
  
!                                       N_Delta_Constraint);
        end Expected_Type_Is_Any_Real;
  
        -----------------------------
--- 5669,5686 ----
           --  N is the expression after "delta" in a fixed_point_definition;
           --  see RM-3.5.9(6):
  
!          return Nkind (Parent (N)) in N_Ordinary_Fixed_Point_Definition
!                                     | N_Decimal_Fixed_Point_Definition
  
           --  N is one of the bounds in a real_range_specification;
           --  see RM-3.5.7(5):
  
!                                     | N_Real_Range_Specification
  
           --  N is the expression of a delta_constraint;
           --  see RM-J.3(3):
  
!                                     | N_Delta_Constraint;
        end Expected_Type_Is_Any_Real;
  
        -----------------------------
*************** package body Sem_Res is
*** 5697,5703 ****
              --  a conversion will be applied to each operand, so resolve it
              --  with its own type.
  
!             if Nkind_In (Parent (N), N_Op_Divide, N_Op_Multiply) then
                 Resolve (N);
  
              else
--- 5762,5768 ----
              --  a conversion will be applied to each operand, so resolve it
              --  with its own type.
  
!             if Nkind (Parent (N)) in N_Op_Divide | N_Op_Multiply then
                 Resolve (N);
  
              else
*************** package body Sem_Res is
*** 5785,5791 ****
           --  involving a fixed-point operand) the conditional expression must
           --  resolve to a unique visible fixed_point type, normally Duration.
  
!          elsif Nkind_In (N, N_Case_Expression, N_If_Expression)
             and then Etype (N) = Universal_Real
             and then Is_Fixed_Point_Type (B_Typ)
           then
--- 5850,5856 ----
           --  involving a fixed-point operand) the conditional expression must
           --  resolve to a unique visible fixed_point type, normally Duration.
  
!          elsif Nkind (N) in N_Case_Expression | N_If_Expression
             and then Etype (N) = Universal_Real
             and then Is_Fixed_Point_Type (B_Typ)
           then
*************** package body Sem_Res is
*** 5850,5856 ****
                          and then (Is_Integer_Or_Universal (L)
                                      or else
                                    Is_Integer_Or_Universal (R))))
!         and then Nkind_In (N, N_Op_Multiply, N_Op_Divide)
        then
           if TL = Universal_Integer or else TR = Universal_Integer then
              Check_For_Visible_Operator (N, B_Typ);
--- 5915,5921 ----
                          and then (Is_Integer_Or_Universal (L)
                                      or else
                                    Is_Integer_Or_Universal (R))))
!         and then Nkind (N) in N_Op_Multiply | N_Op_Divide
        then
           if TL = Universal_Integer or else TR = Universal_Integer then
              Check_For_Visible_Operator (N, B_Typ);
*************** package body Sem_Res is
*** 5896,5903 ****
           then
              if B_Typ = Universal_Fixed
                and then not Expected_Type_Is_Any_Real (N)
!               and then not Nkind_In (Parent (N), N_Type_Conversion,
!                                                  N_Unchecked_Type_Conversion)
              then
                 Error_Msg_N ("type cannot be determined from context!", N);
                 Error_Msg_N ("\explicit conversion to result type required", N);
--- 5961,5968 ----
           then
              if B_Typ = Universal_Fixed
                and then not Expected_Type_Is_Any_Real (N)
!               and then Nkind (Parent (N)) not in
!                          N_Type_Conversion | N_Unchecked_Type_Conversion
              then
                 Error_Msg_N ("type cannot be determined from context!", N);
                 Error_Msg_N ("\explicit conversion to result type required", N);
*************** package body Sem_Res is
*** 5908,5916 ****
              else
                 if Ada_Version = Ada_83
                   and then Etype (N) = Universal_Fixed
!                  and then not
!                    Nkind_In (Parent (N), N_Type_Conversion,
!                                          N_Unchecked_Type_Conversion)
                 then
                    Error_Msg_N
                      ("(Ada 83) fixed-point operation needs explicit "
--- 5973,5980 ----
              else
                 if Ada_Version = Ada_83
                   and then Etype (N) = Universal_Fixed
!                  and then Nkind (Parent (N)) not in
!                             N_Type_Conversion | N_Unchecked_Type_Conversion
                 then
                    Error_Msg_N
                      ("(Ada 83) fixed-point operation needs explicit "
*************** package body Sem_Res is
*** 5989,6008 ****
        Analyze_Dimension (N);
        Eval_Arithmetic_Op (N);
  
-       --  In SPARK, a multiplication or division with operands of fixed point
-       --  types must be qualified or explicitly converted to identify the
-       --  result type.
- 
-       if (Is_Fixed_Point_Type (Etype (L))
-            or else Is_Fixed_Point_Type (Etype (R)))
-         and then Nkind_In (N, N_Op_Multiply, N_Op_Divide)
-         and then
-           not Nkind_In (Parent (N), N_Qualified_Expression, N_Type_Conversion)
-       then
-          Check_SPARK_05_Restriction
-            ("operation should be qualified or explicitly converted", N);
-       end if;
- 
        --  Set overflow and division checking bit
  
        if Nkind (N) in N_Op then
--- 6053,6058 ----
*************** package body Sem_Res is
*** 6012,6018 ****
  
           --  Give warning if explicit division by zero
  
!          if Nkind_In (N, N_Op_Divide, N_Op_Rem, N_Op_Mod)
             and then not Division_Checks_Suppressed (Etype (N))
           then
              Rop := Right_Opnd (N);
--- 6062,6068 ----
  
           --  Give warning if explicit division by zero
  
!          if Nkind (N) in N_Op_Divide | N_Op_Rem | N_Op_Mod
             and then not Division_Checks_Suppressed (Etype (N))
           then
              Rop := Right_Opnd (N);
*************** package body Sem_Res is
*** 6093,6099 ****
           --  if both operands can be negative.
  
           if Restriction_Check_Required (No_Implicit_Conditionals)
!            and then Nkind_In (N, N_Op_Rem, N_Op_Mod)
           then
              declare
                 Lo : Uint;
--- 6143,6149 ----
           --  if both operands can be negative.
  
           if Restriction_Check_Required (No_Implicit_Conditionals)
!            and then Nkind (N) in N_Op_Rem | N_Op_Mod
           then
              declare
                 Lo : Uint;
*************** package body Sem_Res is
*** 6143,6169 ****
     ------------------
  
     procedure Resolve_Call (N : Node_Id; Typ : Entity_Id) is
-       function Same_Or_Aliased_Subprograms
-         (S : Entity_Id;
-          E : Entity_Id) return Boolean;
-       --  Returns True if the subprogram entity S is the same as E or else
-       --  S is an alias of E.
- 
-       ---------------------------------
-       -- Same_Or_Aliased_Subprograms --
-       ---------------------------------
- 
-       function Same_Or_Aliased_Subprograms
-         (S : Entity_Id;
-          E : Entity_Id) return Boolean
-       is
-          Subp_Alias : constant Entity_Id := Alias (S);
-       begin
-          return S = E or else (Present (Subp_Alias) and then Subp_Alias = E);
-       end Same_Or_Aliased_Subprograms;
- 
-       --  Local variables
- 
        Loc      : constant Source_Ptr := Sloc (N);
        Subp     : constant Node_Id    := Name (N);
        Body_Id  : Entity_Id;
--- 6193,6198 ----
*************** package body Sem_Res is
*** 6176,6183 ****
        Rtype    : Entity_Id;
        Scop     : Entity_Id;
  
-    --  Start of processing for Resolve_Call
- 
     begin
        --  Preserve relevant elaboration-related attributes of the context which
        --  are no longer available or very expensive to recompute once analysis,
--- 6205,6210 ----
*************** package body Sem_Res is
*** 6243,6251 ****
        --  operations use the same circuitry because the name in the call
        --  can be an arbitrary expression with special resolution rules.
  
!       elsif Nkind_In (Subp, N_Selected_Component, N_Indexed_Component)
!         or else (Is_Entity_Name (Subp)
!                   and then Ekind_In (Entity (Subp), E_Entry, E_Entry_Family))
        then
           Resolve_Entry_Call (N, Typ);
  
--- 6270,6277 ----
        --  operations use the same circuitry because the name in the call
        --  can be an arbitrary expression with special resolution rules.
  
!       elsif Nkind (Subp) in N_Selected_Component | N_Indexed_Component
!         or else (Is_Entity_Name (Subp) and then Is_Entry (Entity (Subp)))
        then
           Resolve_Entry_Call (N, Typ);
  
*************** package body Sem_Res is
*** 6267,6273 ****
  
        --  Normal subprogram call with name established in Resolve
  
!       elsif not (Is_Type (Entity (Subp))) then
           Nam := Entity (Subp);
           Set_Entity_With_Checks (Subp, Nam);
  
--- 6293,6299 ----
  
        --  Normal subprogram call with name established in Resolve
  
!       elsif not Is_Type (Entity (Subp)) then
           Nam := Entity (Subp);
           Set_Entity_With_Checks (Subp, Nam);
  
*************** package body Sem_Res is
*** 6293,6318 ****
           end loop;
        end if;
  
-       if Is_Access_Subprogram_Type (Base_Type (Etype (Nam)))
-         and then not Is_Access_Subprogram_Type (Base_Type (Typ))
-         and then Nkind (Subp) /= N_Explicit_Dereference
-         and then Present (Parameter_Associations (N))
-       then
-          --  The prefix is a parameterless function call that returns an access
-          --  to subprogram. If parameters are present in the current call, add
-          --  add an explicit dereference. We use the base type here because
-          --  within an instance these may be subtypes.
- 
-          --  The dereference is added either in Analyze_Call or here. Should
-          --  be consolidated ???
- 
-          Set_Is_Overloaded (Subp, False);
-          Set_Etype (Subp, Etype (Nam));
-          Insert_Explicit_Dereference (Subp);
-          Nam := Designated_Type (Etype (Nam));
-          Resolve (Subp, Nam);
-       end if;
- 
        --  Check that a call to Current_Task does not occur in an entry body
  
        if Is_RTE (Nam, RE_Current_Task) then
--- 6319,6324 ----
*************** package body Sem_Res is
*** 6381,6410 ****
           end if;
        end if;
  
-       --  If the SPARK_05 restriction is active, we are not allowed
-       --  to have a call to a subprogram before we see its completion.
- 
-       if not Has_Completion (Nam)
-         and then Restriction_Check_Required (SPARK_05)
- 
-         --  Don't flag strange internal calls
- 
-         and then Comes_From_Source (N)
-         and then Comes_From_Source (Nam)
- 
-         --  Only flag calls in extended main source
- 
-         and then In_Extended_Main_Source_Unit (Nam)
-         and then In_Extended_Main_Source_Unit (N)
- 
-         --  Exclude enumeration literals from this processing
- 
-         and then Ekind (Nam) /= E_Enumeration_Literal
-       then
-          Check_SPARK_05_Restriction
-            ("call to subprogram cannot appear before its body", N);
-       end if;
- 
        --  Check that this is not a call to a protected procedure or entry from
        --  within a protected function.
  
--- 6387,6392 ----
*************** package body Sem_Res is
*** 6565,6571 ****
  
                    Set_Etype (Prefix (N), Ret_Type);
                    Set_Etype (N, Typ);
-                   Resolve_Indexed_Component (N, Typ);
  
                    if Legacy_Elaboration_Checks then
                       Check_Elab_Call (Prefix (N));
--- 6547,6552 ----
*************** package body Sem_Res is
*** 6577,6582 ****
--- 6558,6565 ----
                    --  the ABE Processing phase.
  
                    Build_Call_Marker (Prefix (N));
+ 
+                   Resolve_Indexed_Component (N, Typ);
                 end if;
              end if;
  
*************** package body Sem_Res is
*** 6639,6659 ****
        if Comes_From_Source (N) then
           Scop := Current_Scope;
  
-          --  Check violation of SPARK_05 restriction which does not permit
-          --  a subprogram body to contain a call to the subprogram directly.
- 
-          if Restriction_Check_Required (SPARK_05)
-            and then Same_Or_Aliased_Subprograms (Nam, Scop)
-          then
-             Check_SPARK_05_Restriction
-               ("subprogram may not contain direct call to itself", N);
-          end if;
- 
           --  Issue warning for possible infinite recursion in the absence
           --  of the No_Recursion restriction.
  
           if Same_Or_Aliased_Subprograms (Nam, Scop)
             and then not Restriction_Active (No_Recursion)
             and then Check_Infinite_Recursion (N)
           then
              --  Here we detected and flagged an infinite recursion, so we do
--- 6622,6633 ----
        if Comes_From_Source (N) then
           Scop := Current_Scope;
  
           --  Issue warning for possible infinite recursion in the absence
           --  of the No_Recursion restriction.
  
           if Same_Or_Aliased_Subprograms (Nam, Scop)
             and then not Restriction_Active (No_Recursion)
+            and then not Is_Static_Function (Scop)
             and then Check_Infinite_Recursion (N)
           then
              --  Here we detected and flagged an infinite recursion, so we do
*************** package body Sem_Res is
*** 6671,6676 ****
--- 6645,6663 ----
              Scope_Loop : while Scop /= Standard_Standard loop
                 if Same_Or_Aliased_Subprograms (Nam, Scop) then
  
+                   --  Ada 202x (AI12-0075): Static functions are never allowed
+                   --  to make a recursive call, as specified by 6.8(5.4/5).
+ 
+                   if Is_Static_Function (Scop) then
+                      Error_Msg_N
+                        ("recursive call not allowed in static expression "
+                           & "function", N);
+ 
+                      Set_Error_Posted (Scop);
+ 
+                      exit Scope_Loop;
+                   end if;
+ 
                    --  Although in general case, recursion is not statically
                    --  checkable, the case of calling an immediately containing
                    --  subprogram is easy to catch.
*************** package body Sem_Res is
*** 6714,6721 ****
                          begin
                             P := Prev (N);
                             while Present (P) loop
!                               if not Nkind_In (P, N_Assignment_Statement,
!                                                   N_Raise_Constraint_Error)
                                then
                                   exit Scope_Loop;
                                end if;
--- 6701,6708 ----
                          begin
                             P := Prev (N);
                             while Present (P) loop
!                               if Nkind (P) not in N_Assignment_Statement
!                                                 | N_Raise_Constraint_Error
                                then
                                   exit Scope_Loop;
                                end if;
*************** package body Sem_Res is
*** 6808,6813 ****
--- 6795,6805 ----
        --  is already present. It may not be available if e.g. the subprogram is
        --  declared in a child instance.
  
+       --  g) If the subprogram is a static expression function and the call is
+       --  a static call (the actuals are all static expressions), then we never
+       --  want to create a transient scope (this could occur in the case of a
+       --  static string-returning call).
+ 
        if Is_Inlined (Nam)
          and then Has_Pragma_Inline (Nam)
          and then Nkind (Unit_Declaration_Node (Nam)) = N_Subprogram_Declaration
*************** package body Sem_Res is
*** 6819,6824 ****
--- 6811,6817 ----
          or else Is_Build_In_Place_Function (Nam)
          or else Is_Intrinsic_Subprogram (Nam)
          or else Is_Inlinable_Expression_Function (Nam)
+         or else Is_Static_Function_Call (N)
        then
           null;
  
*************** package body Sem_Res is
*** 6826,6832 ****
        --  secondary stack (or any other one).
  
        elsif Expander_Active
!         and then Ekind_In (Nam, E_Function, E_Subprogram_Type)
          and then Requires_Transient_Scope (Etype (Nam))
          and then not Is_Ignored_Ghost_Entity (Nam)
        then
--- 6819,6825 ----
        --  secondary stack (or any other one).
  
        elsif Expander_Active
!         and then Ekind (Nam) in E_Function | E_Subprogram_Type
          and then Requires_Transient_Scope (Etype (Nam))
          and then not Is_Ignored_Ghost_Entity (Nam)
        then
*************** package body Sem_Res is
*** 6925,6931 ****
              F := First_Formal (Nam);
              A := First_Actual (N);
              while Present (F) and then Present (A) loop
!                if Ekind_In (F, E_Out_Parameter, E_In_Out_Parameter)
                   and then Warn_On_Modified_As_Out_Parameter (F)
                   and then Is_Entity_Name (A)
                   and then Present (Entity (A))
--- 6918,6924 ----
              F := First_Formal (Nam);
              A := First_Actual (N);
              while Present (F) and then Present (A) loop
!                if Ekind (F) in E_Out_Parameter | E_In_Out_Parameter
                   and then Warn_On_Modified_As_Out_Parameter (F)
                   and then Is_Entity_Name (A)
                   and then Present (Entity (A))
*************** package body Sem_Res is
*** 7006,7022 ****
  
        Check_For_Eliminated_Subprogram (Subp, Nam);
  
-       --  In formal mode, the primitive operations of a tagged type or type
-       --  extension do not include functions that return the tagged type.
- 
-       if Nkind (N) = N_Function_Call
-         and then Is_Tagged_Type (Etype (N))
-         and then Is_Entity_Name (Name (N))
-         and then Is_Inherited_Operation_For_Type (Entity (Name (N)), Etype (N))
-       then
-          Check_SPARK_05_Restriction ("function not inherited", N);
-       end if;
- 
        --  Implement rule in 12.5.1 (23.3/2): In an instance, if the actual is
        --  class-wide and the call dispatches on result in a context that does
        --  not provide a tag, the call raises Program_Error.
--- 6999,7004 ----
*************** package body Sem_Res is
*** 7094,7105 ****
  
        Warn_On_Overlapping_Actuals (Nam, N);
  
        --  In GNATprove mode, expansion is disabled, but we want to inline some
        --  subprograms to facilitate formal verification. Indirect calls through
        --  a subprogram type or within a generic cannot be inlined. Inlining is
        --  performed only for calls subject to SPARK_Mode on.
  
!       if GNATprove_Mode
          and then SPARK_Mode = On
          and then Is_Overloadable (Nam)
          and then not Inside_A_Generic
--- 7076,7102 ----
  
        Warn_On_Overlapping_Actuals (Nam, N);
  
+       --  Ada 202x (AI12-0075): If the call is a static call to a static
+       --  expression function, then we want to "inline" the call, replacing
+       --  it with the folded static result. This is not done if the checking
+       --  for a potentially static expression is enabled or if an error has
+       --  been posted on the call (which may be due to the check for recursive
+       --  calls, in which case we don't want to fall into infinite recursion
+       --  when doing the inlining).
+ 
+       if not Checking_Potentially_Static_Expression
+         and then Is_Static_Function_Call (N)
+         and then not Is_Intrinsic_Subprogram (Ultimate_Alias (Nam))
+         and then not Error_Posted (Ultimate_Alias (Nam))
+       then
+          Inline_Static_Function_Call (N, Ultimate_Alias (Nam));
+ 
        --  In GNATprove mode, expansion is disabled, but we want to inline some
        --  subprograms to facilitate formal verification. Indirect calls through
        --  a subprogram type or within a generic cannot be inlined. Inlining is
        --  performed only for calls subject to SPARK_Mode on.
  
!       elsif GNATprove_Mode
          and then SPARK_Mode = On
          and then Is_Overloadable (Nam)
          and then not Inside_A_Generic
*************** package body Sem_Res is
*** 7125,7134 ****
              --  on expression functions.
  
              elsif In_Assertion_Expr /= 0 then
!                if Present (Body_Id) then
!                   Cannot_Inline
!                     ("cannot inline & (in assertion expression)?", N, Nam_UA);
!                end if;
  
              --  Calls cannot be inlined inside default expressions
  
--- 7122,7130 ----
              --  on expression functions.
  
              elsif In_Assertion_Expr /= 0 then
!                Cannot_Inline
!                  ("cannot inline & (in assertion expression)?", N, Nam_UA,
!                   Suppress_Info => No (Body_Id));
  
              --  Calls cannot be inlined inside default expressions
  
*************** package body Sem_Res is
*** 7449,7468 ****
        Generate_Operator_Reference (N, T);
        Check_Low_Bound_Tested (N);
  
-       --  In SPARK, ordering operators <, <=, >, >= are not defined for Boolean
-       --  types or array types except String.
- 
-       if Is_Boolean_Type (T) then
-          Check_SPARK_05_Restriction
-            ("comparison is not defined on Boolean type", N);
- 
-       elsif Is_Array_Type (T)
-         and then Base_Type (T) /= Standard_String
-       then
-          Check_SPARK_05_Restriction
-            ("comparison is not defined on array types other than String", N);
-       end if;
- 
        --  Check comparison on unordered enumeration
  
        if Bad_Unordered_Enumeration_Reference (N, Etype (L)) then
--- 7445,7450 ----
*************** package body Sem_Res is
*** 7474,7495 ****
  
        Analyze_Dimension (N);
  
!       --  Evaluate the relation (note we do this after the above check since
!       --  this Eval call may change N to True/False. Skip this evaluation
!       --  inside assertions, in order to keep assertions as written by users
!       --  for tools that rely on these, e.g. GNATprove for loop invariants.
!       --  Except evaluation is still performed even inside assertions for
!       --  comparisons between values of universal type, which are useless
!       --  for static analysis tools, and not supported even by GNATprove.
  
!       if In_Assertion_Expr = 0
!         or else (Is_Universal_Numeric_Type (Etype (L))
!                    and then
!                  Is_Universal_Numeric_Type (Etype (R)))
!       then
!          Eval_Relational_Op (N);
        end if;
!    end Resolve_Comparison_Op;
  
     -----------------------------------------
     -- Resolve_Discrete_Subtype_Indication --
--- 7456,7533 ----
  
        Analyze_Dimension (N);
  
!       Eval_Relational_Op (N);
!    end Resolve_Comparison_Op;
  
!    --------------------------------
!    -- Resolve_Declare_Expression --
!    --------------------------------
! 
!    procedure Resolve_Declare_Expression
!      (N   : Node_Id;
!       Typ : Entity_Id)
!    is
!       Decl                 : Node_Id;
!       Need_Transient_Scope : Boolean := False;
!    begin
!       --  Install the scope created for local declarations, if
!       --  any. The syntax allows a Declare_Expression with no
!       --  declarations, in analogy with block statements.
!       --  Note that that scope has no explicit declaration, but
!       --  appears as the scope of all entities declared therein.
! 
!       Decl := First (Actions (N));
!       while Present (Decl) loop
!          exit when Nkind (Decl)
!                      in N_Object_Declaration | N_Object_Renaming_Declaration;
!          Next (Decl);
!       end loop;
! 
!       if Present (Decl) then
! 
!          --  Need to establish a transient scope in case Expression (N)
!          --  requires actions to be wrapped.
! 
!          declare
!             Node : Node_Id;
!          begin
!             Node := First (Actions (N));
!             while Present (Node) loop
!                if Nkind (Node) = N_Object_Declaration
!                  and then Requires_Transient_Scope
!                             (Etype (Defining_Identifier (Node)))
!                then
!                   Need_Transient_Scope := True;
!                   exit;
!                end if;
! 
!                Next (Node);
!             end loop;
!          end;
! 
!          if Need_Transient_Scope then
!             Establish_Transient_Scope (Decl, True);
!          else
!             Push_Scope (Scope (Defining_Identifier (Decl)));
!          end if;
! 
!          declare
!             E : Entity_Id := First_Entity (Current_Scope);
!          begin
!             while Present (E) loop
!                Set_Current_Entity (E);
!                Set_Is_Immediately_Visible (E);
!                Next_Entity (E);
!             end loop;
!          end;
! 
!          Resolve (Expression (N), Typ);
!          End_Scope;
! 
!       else
!          Resolve (Expression (N), Typ);
        end if;
!    end Resolve_Declare_Expression;
  
     -----------------------------------------
     -- Resolve_Discrete_Subtype_Indication --
*************** package body Sem_Res is
*** 7595,7600 ****
--- 7633,7642 ----
        --  Determine whether node Context denotes an assignment statement or an
        --  object declaration whose expression is node Expr.
  
+       function Is_Attribute_Expression (Expr : Node_Id) return Boolean;
+       --  Determine whether Expr is part of an N_Attribute_Reference
+       --  expression.
+ 
        ----------------------------------------
        -- Is_Assignment_Or_Object_Expression --
        ----------------------------------------
*************** package body Sem_Res is
*** 7604,7611 ****
           Expr    : Node_Id) return Boolean
        is
        begin
!          if Nkind_In (Context, N_Assignment_Statement,
!                                N_Object_Declaration)
             and then Expression (Context) = Expr
           then
              return True;
--- 7646,7653 ----
           Expr    : Node_Id) return Boolean
        is
        begin
!          if Nkind (Context) in
!               N_Assignment_Statement | N_Object_Declaration
             and then Expression (Context) = Expr
           then
              return True;
*************** package body Sem_Res is
*** 7613,7627 ****
           --  Check whether a construct that yields a name is the expression of
           --  an assignment statement or an object declaration.
  
!          elsif (Nkind_In (Context, N_Attribute_Reference,
!                                    N_Explicit_Dereference,
!                                    N_Indexed_Component,
!                                    N_Selected_Component,
!                                    N_Slice)
                    and then Prefix (Context) = Expr)
             or else
!                (Nkind_In (Context, N_Type_Conversion,
!                                    N_Unchecked_Type_Conversion)
                    and then Expression (Context) = Expr)
           then
              return
--- 7655,7669 ----
           --  Check whether a construct that yields a name is the expression of
           --  an assignment statement or an object declaration.
  
!          elsif (Nkind (Context) in N_Attribute_Reference
!                                  | N_Explicit_Dereference
!                                  | N_Indexed_Component
!                                  | N_Selected_Component
!                                  | N_Slice
                    and then Prefix (Context) = Expr)
             or else
!                (Nkind (Context) in N_Type_Conversion
!                                  | N_Unchecked_Type_Conversion
                    and then Expression (Context) = Expr)
           then
              return
*************** package body Sem_Res is
*** 7637,7642 ****
--- 7679,7702 ----
           end if;
        end Is_Assignment_Or_Object_Expression;
  
+       -----------------------------
+       -- Is_Attribute_Expression --
+       -----------------------------
+ 
+       function Is_Attribute_Expression (Expr : Node_Id) return Boolean is
+          N : Node_Id := Expr;
+       begin
+          while Present (N) loop
+             if Nkind (N) = N_Attribute_Reference then
+                return True;
+             end if;
+ 
+             N := Parent (N);
+          end loop;
+ 
+          return False;
+       end Is_Attribute_Expression;
+ 
        --  Local variables
  
        E   : constant Entity_Id := Entity (N);
*************** package body Sem_Res is
*** 7707,7714 ****
        --  array types (i.e. bounds and length) are legal.
  
        elsif Ekind (E) = E_Out_Parameter
!         and then (Nkind (Parent (N)) /= N_Attribute_Reference
!                    or else Is_Scalar_Type (Etype (E)))
  
          and then (Nkind (Parent (N)) in N_Op
                     or else Nkind (Parent (N)) = N_Explicit_Dereference
--- 7767,7774 ----
        --  array types (i.e. bounds and length) are legal.
  
        elsif Ekind (E) = E_Out_Parameter
!         and then (Is_Scalar_Type (Etype (E))
!                    or else not Is_Attribute_Expression (Parent (N)))
  
          and then (Nkind (Parent (N)) in N_Op
                     or else Nkind (Parent (N)) = N_Explicit_Dereference
*************** package body Sem_Res is
*** 7766,7784 ****
  
           if SPARK_Mode = On then
  
!             --  An effectively volatile object subject to enabled properties
!             --  Async_Writers or Effective_Reads must appear in non-interfering
!             --  context (SPARK RM 7.1.3(12)).
  
              if Is_Object (E)
!               and then Is_Effectively_Volatile (E)
!               and then (Async_Writers_Enabled (E)
!                          or else Effective_Reads_Enabled (E))
                and then not Is_OK_Volatile_Context (Par, N)
              then
                 SPARK_Msg_N
                   ("volatile object cannot appear in this context "
!                   & "(SPARK RM 7.1.3(12))", N);
              end if;
  
              --  Check for possible elaboration issues with respect to reads of
--- 7826,7841 ----
  
           if SPARK_Mode = On then
  
!             --  An effectively volatile object for reading must appear in
!             --  non-interfering context (SPARK RM 7.1.3(10)).
  
              if Is_Object (E)
!               and then Is_Effectively_Volatile_For_Reading (E)
                and then not Is_OK_Volatile_Context (Par, N)
              then
                 SPARK_Msg_N
                   ("volatile object cannot appear in this context "
!                   & "(SPARK RM 7.1.3(10))", N);
              end if;
  
              --  Check for possible elaboration issues with respect to reads of
*************** package body Sem_Res is
*** 7854,7860 ****
           --  to the discriminant of the same name in the target task. If the
           --  entry name is the target of a requeue statement and the entry is
           --  in the current protected object, the bound to be used is the
!          --  discriminal of the object (see Apply_Range_Checks for details of
           --  the transformation).
  
           -----------------------------
--- 7911,7917 ----
           --  to the discriminant of the same name in the target task. If the
           --  entry name is the target of a requeue statement and the entry is
           --  in the current protected object, the bound to be used is the
!          --  discriminal of the object (see Apply_Range_Check for details of
           --  the transformation).
  
           -----------------------------
*************** package body Sem_Res is
*** 8014,8023 ****
--- 8071,8093 ----
  
        if Nkind (Entry_Name) = N_Selected_Component then
           Resolve (Prefix (Entry_Name));
+          Resolve_Implicit_Dereference (Prefix (Entry_Name));
  
        else pragma Assert (Nkind (Entry_Name) = N_Indexed_Component);
           Nam := Entity (Selector_Name (Prefix (Entry_Name)));
           Resolve (Prefix (Prefix (Entry_Name)));
+          Resolve_Implicit_Dereference (Prefix (Prefix (Entry_Name)));
+ 
+          --  We do not resolve the prefix because an Entry_Family has no type,
+          --  although it has the semantics of an array since it can be indexed.
+          --  In order to perform the associated range check, we would need to
+          --  build an array type on the fly and set it on the prefix, but this
+          --  would be wasteful since only the index type matters. Therefore we
+          --  attach this index type directly, so that Actual_Index_Expression
+          --  can pick it up later in order to generate the range check.
+ 
+          Set_Etype (Prefix (Entry_Name), Actual_Index_Type (Nam));
+ 
           Index := First (Expressions (Entry_Name));
           Resolve (Index, Entry_Index_Type (Nam));
  
*************** package body Sem_Res is
*** 8033,8039 ****
           if Nkind (Index) = N_Parameter_Association then
              Error_Msg_N ("expect expression for entry index", Index);
           else
!             Apply_Range_Check (Index, Actual_Index_Type (Nam));
           end if;
        end if;
     end Resolve_Entry;
--- 8103,8109 ----
           if Nkind (Index) = N_Parameter_Association then
              Error_Msg_N ("expect expression for entry index", Index);
           else
!             Apply_Scalar_Range_Check (Index, Etype (Prefix (Entry_Name)));
           end if;
        end if;
     end Resolve_Entry;
*************** package body Sem_Res is
*** 8159,8165 ****
           end;
        end if;
  
!       if Ekind_In (Nam, E_Entry, E_Entry_Family)
          and then Present (Contract_Wrapper (Nam))
          and then Current_Scope /= Contract_Wrapper (Nam)
        then
--- 8229,8235 ----
           end;
        end if;
  
!       if Is_Entry (Nam)
          and then Present (Contract_Wrapper (Nam))
          and then Current_Scope /= Contract_Wrapper (Nam)
        then
*************** package body Sem_Res is
*** 8230,8236 ****
  
        Generate_Reference (Nam, Entry_Name, 's');
  
!       if Ekind_In (Nam, E_Entry, E_Entry_Family) then
           Check_Potentially_Blocking_Operation (N);
        end if;
  
--- 8300,8306 ----
  
        Generate_Reference (Nam, Entry_Name, 's');
  
!       if Is_Entry (Nam) then
           Check_Potentially_Blocking_Operation (N);
        end if;
  
*************** package body Sem_Res is
*** 8312,8317 ****
--- 8382,8394 ----
        then
           Establish_Transient_Scope (N, Manage_Sec_Stack => True);
        end if;
+ 
+       --  Now we know that this is not a call to a function that returns an
+       --  array type; moreover, we know the name of the called entry. Detect
+       --  overlapping actuals, just like for a subprogram call.
+ 
+       Warn_On_Overlapping_Actuals (Nam, N);
+ 
     end Resolve_Entry_Call;
  
     -------------------------
*************** package body Sem_Res is
*** 8350,8355 ****
--- 8427,8437 ----
        --  This is semantically dubious, and of no interest to any real code,
        --  but c48008a makes it all worthwhile.
  
+       function Suspicious_Prio_For_Equality return Boolean;
+       --  Returns True iff the parent node is a and/or/xor operation that
+       --  could be the cause of confused priorities. Note that if the not is
+       --  in parens, then False is returned.
+ 
        -------------------------
        -- Check_If_Expression --
        -------------------------
*************** package body Sem_Res is
*** 8447,8459 ****
           S   : Entity_Id;
  
        begin
!          if Ekind_In (Etype (R), E_Allocator_Type,
!                                  E_Access_Attribute_Type)
           then
              Acc := Designated_Type (Etype (R));
  
!          elsif Ekind_In (Etype (L), E_Allocator_Type,
!                                     E_Access_Attribute_Type)
           then
              Acc := Designated_Type (Etype (L));
           else
--- 8529,8539 ----
           S   : Entity_Id;
  
        begin
!          if Ekind (Etype (R)) in E_Allocator_Type | E_Access_Attribute_Type
           then
              Acc := Designated_Type (Etype (R));
  
!          elsif Ekind (Etype (L)) in E_Allocator_Type | E_Access_Attribute_Type
           then
              Acc := Designated_Type (Etype (L));
           else
*************** package body Sem_Res is
*** 8481,8486 ****
--- 8561,8607 ----
           return Empty;
        end Find_Unique_Access_Type;
  
+       ----------------------------------
+       -- Suspicious_Prio_For_Equality --
+       ----------------------------------
+ 
+       function Suspicious_Prio_For_Equality return Boolean is
+          Par : constant Node_Id := Parent (N);
+ 
+       begin
+          --  Check if parent node is one of and/or/xor, not parenthesized
+          --  explicitly, and its own parent is not of this kind. Otherwise,
+          --  it's a case of chained Boolean conditions which is likely well
+          --  parenthesized.
+ 
+          if Nkind (Par) in N_Op_And | N_Op_Or | N_Op_Xor
+            and then Paren_Count (N) = 0
+            and then Nkind (Parent (Par)) not in N_Op_And | N_Op_Or | N_Op_Xor
+          then
+             declare
+                Compar : Node_Id :=
+                  (if Left_Opnd (Par) = N then
+                      Right_Opnd (Par)
+                   else
+                      Left_Opnd (Par));
+             begin
+                --  Compar may have been rewritten, for example from (a /= b)
+                --  into not (a = b). Use the Original_Node instead.
+ 
+                Compar := Original_Node (Compar);
+ 
+                --  If the other argument of the and/or/xor is also a
+                --  comparison, or another and/or/xor then most likely
+                --  the priorities are correctly set.
+ 
+                return Nkind (Compar) not in N_Op_Boolean;
+             end;
+ 
+          else
+             return False;
+          end if;
+       end Suspicious_Prio_For_Equality;
+ 
     --  Start of processing for Resolve_Equality_Op
  
     begin
*************** package body Sem_Res is
*** 8506,8512 ****
              return;
  
           elsif T = Any_Access
!            or else Ekind_In (T, E_Allocator_Type, E_Access_Attribute_Type)
           then
              T := Find_Unique_Access_Type;
  
--- 8627,8633 ----
              return;
  
           elsif T = Any_Access
!            or else Ekind (T) in E_Allocator_Type | E_Access_Attribute_Type
           then
              T := Find_Unique_Access_Type;
  
*************** package body Sem_Res is
*** 8523,8532 ****
           --  Why no similar processing for case expressions???
  
           elsif Ada_Version >= Ada_2012
!            and then Ekind_In (Etype (L), E_Anonymous_Access_Type,
!                                          E_Anonymous_Access_Subprogram_Type)
!            and then Ekind_In (Etype (R), E_Anonymous_Access_Type,
!                                          E_Anonymous_Access_Subprogram_Type)
           then
              Check_If_Expression (L);
              Check_If_Expression (R);
--- 8644,8651 ----
           --  Why no similar processing for case expressions???
  
           elsif Ada_Version >= Ada_2012
!            and then Is_Anonymous_Access_Type (Etype (L))
!            and then Is_Anonymous_Access_Type (Etype (R))
           then
              Check_If_Expression (L);
              Check_If_Expression (R);
*************** package body Sem_Res is
*** 8535,8561 ****
           Resolve (L, T);
           Resolve (R, T);
  
-          --  In SPARK, equality operators = and /= for array types other than
-          --  String are only defined when, for each index position, the
-          --  operands have equal static bounds.
- 
-          if Is_Array_Type (T) then
- 
-             --  Protect call to Matching_Static_Array_Bounds to avoid costly
-             --  operation if not needed.
- 
-             if Restriction_Check_Required (SPARK_05)
-               and then Base_Type (T) /= Standard_String
-               and then Base_Type (Etype (L)) = Base_Type (Etype (R))
-               and then Etype (L) /= Any_Composite  --  or else L in error
-               and then Etype (R) /= Any_Composite  --  or else R in error
-               and then not Matching_Static_Array_Bounds (Etype (L), Etype (R))
-             then
-                Check_SPARK_05_Restriction
-                  ("array types should have matching static bounds", N);
-             end if;
-          end if;
- 
           --  If the unique type is a class-wide type then it will be expanded
           --  into a dispatching call to the predefined primitive. Therefore we
           --  check here for potential violation of such restriction.
--- 8654,8659 ----
*************** package body Sem_Res is
*** 8584,8589 ****
--- 8682,8705 ----
              Explain_Redundancy (Original_Node (R));
           end if;
  
+          --  Warn on a (in)equality between boolean values which is not
+          --  parenthesized when the parent expression is one of and/or/xor, as
+          --  this is interpreted as (a = b) op c where most likely a = (b op c)
+          --  was intended. Do not generate a warning in generic instances, as
+          --  the problematic expression may be implicitly parenthesized in
+          --  the generic itself if one of the operators is a generic formal.
+          --  Also do not generate a warning for generated equality, for
+          --  example from rewritting a membership test.
+ 
+          if Warn_On_Questionable_Missing_Parens
+            and then not In_Instance
+            and then Comes_From_Source (N)
+            and then Is_Boolean_Type (T)
+            and then Suspicious_Prio_For_Equality
+          then
+             Error_Msg_N ("?q?equality should be parenthesized here!", N);
+          end if;
+ 
           --  If the equality is overloaded and the operands have resolved
           --  properly, set the proper equality operator on the node. The
           --  current setting is the first one found during analysis, which
*************** package body Sem_Res is
*** 8670,8677 ****
  
           if Expander_Active
             and then
!              (Ekind_In (T, E_Anonymous_Access_Type,
!                            E_Anonymous_Access_Subprogram_Type)
                 or else Is_Private_Type (T))
           then
              if Etype (L) /= T then
--- 8786,8793 ----
  
           if Expander_Active
             and then
!              (Ekind (T) in E_Anonymous_Access_Type
!                          | E_Anonymous_Access_Subprogram_Type
                 or else Is_Private_Type (T))
           then
              if Etype (L) /= T then
*************** package body Sem_Res is
*** 8806,8813 ****
        --  actual subtype. We also exclude generated code (which builds actual
        --  subtypes directly if they are needed).
  
!       if Is_Array_Type (Etype (N))
!         and then Is_Packed (Etype (N))
          and then not Is_Constrained (Etype (N))
          and then Nkind (Parent (N)) /= N_Attribute_Reference
          and then Comes_From_Source (N)
--- 8922,8928 ----
        --  actual subtype. We also exclude generated code (which builds actual
        --  subtypes directly if they are needed).
  
!       if Is_Packed_Array (Etype (N))
          and then not Is_Constrained (Etype (N))
          and then Nkind (Parent (N)) /= N_Attribute_Reference
          and then Comes_From_Source (N)
*************** package body Sem_Res is
*** 8827,8894 ****
     -------------------------------------
  
     procedure Resolve_Expression_With_Actions (N : Node_Id; Typ : Entity_Id) is
-    begin
-       Set_Etype (N, Typ);
  
!       --  If N has no actions, and its expression has been constant folded,
!       --  then rewrite N as just its expression. Note, we can't do this in
!       --  the general case of Is_Empty_List (Actions (N)) as this would cause
!       --  Expression (N) to be expanded again.
  
!       if Is_Empty_List (Actions (N))
!         and then Compile_Time_Known_Value (Expression (N))
!       then
!          Rewrite (N, Expression (N));
!       end if;
!    end Resolve_Expression_With_Actions;
  
!    ----------------------------------
!    -- Resolve_Generalized_Indexing --
!    ----------------------------------
  
!    procedure Resolve_Generalized_Indexing (N : Node_Id; Typ : Entity_Id) is
!       Indexing : constant Node_Id := Generalized_Indexing (N);
!       Call     : Node_Id;
!       Indexes  : List_Id;
!       Pref     : Node_Id;
  
!    begin
!       --  In ASIS mode, propagate the information about the indexes back to
!       --  to the original indexing node. The generalized indexing is either
!       --  a function call, or a dereference of one. The actuals include the
!       --  prefix of the original node, which is the container expression.
  
!       if ASIS_Mode then
!          Resolve (Indexing, Typ);
!          Set_Etype  (N, Etype (Indexing));
!          Set_Is_Overloaded (N, False);
  
!          Call := Indexing;
!          while Nkind_In (Call, N_Explicit_Dereference, N_Selected_Component)
!          loop
!             Call := Prefix (Call);
           end loop;
  
!          if Nkind (Call) = N_Function_Call then
!             Indexes := New_Copy_List (Parameter_Associations (Call));
!             Pref := Remove_Head (Indexes);
!             Set_Expressions (N, Indexes);
  
!             --  If expression is to be reanalyzed, reset Generalized_Indexing
!             --  to recreate call node, as is the case when the expression is
!             --  part of an expression function.
  
!             if In_Spec_Expression then
!                Set_Generalized_Indexing (N, Empty);
!             end if;
  
!             Set_Prefix (N, Pref);
!          end if;
  
!       else
!          Rewrite (N, Indexing);
!          Resolve (N, Typ);
        end if;
     end Resolve_Generalized_Indexing;
  
     ---------------------------
--- 8942,9055 ----
     -------------------------------------
  
     procedure Resolve_Expression_With_Actions (N : Node_Id; Typ : Entity_Id) is
  
!       function OK_For_Static (Act : Node_Id) return Boolean;
!       --  True if Act is an action of a declare_expression that is allowed in a
!       --  static declare_expression.
  
!       function All_OK_For_Static return Boolean;
!       --  True if all actions of N are allowed in a static declare_expression.
  
!       function Get_Literal (Expr : Node_Id) return Node_Id;
!       --  Expr is an expression with compile-time-known value. This returns the
!       --  literal node that reprsents that value.
  
!       function OK_For_Static (Act : Node_Id) return Boolean is
!       begin
!          case Nkind (Act) is
!             when N_Object_Declaration =>
!                if Constant_Present (Act)
!                  and then Is_Static_Expression (Expression (Act))
!                then
!                   return True;
!                end if;
  
!             when N_Object_Renaming_Declaration =>
!                if Statically_Names_Object (Name (Act)) then
!                   return True;
!                end if;
  
!             when others =>
!                --  No other declarations, nor even pragmas, are allowed in a
!                --  declare expression, so if we see something else, it must be
!                --  an internally generated expression_with_actions.
!                null;
!          end case;
  
!          return False;
!       end OK_For_Static;
! 
!       function All_OK_For_Static return Boolean is
!          Act : Node_Id := First (Actions (N));
!       begin
!          while Present (Act) loop
!             if not OK_For_Static (Act) then
!                return False;
!             end if;
! 
!             Next (Act);
           end loop;
  
!          return True;
!       end All_OK_For_Static;
  
!       function Get_Literal (Expr : Node_Id) return Node_Id is
!          pragma Assert (Compile_Time_Known_Value (Expr));
!          Result : Node_Id;
!       begin
!          case Nkind (Expr) is
!             when N_Has_Entity =>
!                if Ekind (Entity (Expr)) = E_Enumeration_Literal then
!                   Result := Expr;
!                else
!                   Result := Constant_Value (Entity (Expr));
!                end if;
!             when N_Numeric_Or_String_Literal =>
!                Result := Expr;
!             when others =>
!                raise Program_Error;
!          end case;
  
!          pragma Assert
!            (Nkind (Result) in N_Numeric_Or_String_Literal
!               or else Ekind (Entity (Result)) = E_Enumeration_Literal);
!          return Result;
!       end Get_Literal;
  
!       Loc : constant Source_Ptr := Sloc (N);
  
!    begin
!       Set_Etype (N, Typ);
! 
!       if Is_Empty_List (Actions (N)) then
!          pragma Assert (All_OK_For_Static); null;
!       end if;
! 
!       --  If the value of the expression is known at compile time, and all
!       --  of the actions (if any) are suitable, then replace the declare
!       --  expression with its expression. This allows the declare expression
!       --  as a whole to be static if appropriate. See AI12-0368.
! 
!       if Compile_Time_Known_Value (Expression (N)) then
!          if Is_Empty_List (Actions (N)) then
!             Rewrite (N, Expression (N));
!          elsif All_OK_For_Static then
!             Rewrite
!               (N, New_Copy_Tree
!                     (Get_Literal (Expression (N)), New_Sloc => Loc));
!          end if;
        end if;
+    end Resolve_Expression_With_Actions;
+ 
+    ----------------------------------
+    -- Resolve_Generalized_Indexing --
+    ----------------------------------
+ 
+    procedure Resolve_Generalized_Indexing (N : Node_Id; Typ : Entity_Id) is
+       Indexing : constant Node_Id := Generalized_Indexing (N);
+    begin
+       Rewrite (N, Indexing);
+       Resolve (N, Typ);
     end Resolve_Generalized_Indexing;
  
     ---------------------------
*************** package body Sem_Res is
*** 9013,9018 ****
--- 9174,9205 ----
        Analyze_Dimension (N);
     end Resolve_If_Expression;
  
+    ----------------------------------
+    -- Resolve_Implicit_Dereference --
+    ----------------------------------
+ 
+    procedure Resolve_Implicit_Dereference (P : Node_Id) is
+       Desig_Typ : Entity_Id;
+ 
+    begin
+       --  In an instance the proper view may not always be correct for
+       --  private types, see e.g. Sem_Type.Covers for similar handling.
+ 
+       if Is_Private_Type (Etype (P))
+         and then Present (Full_View (Etype (P)))
+         and then Is_Access_Type (Full_View (Etype (P)))
+         and then In_Instance
+       then
+          Set_Etype (P, Full_View (Etype (P)));
+       end if;
+ 
+       if Is_Access_Type (Etype (P)) then
+          Desig_Typ := Implicitly_Designated_Type (Etype (P));
+          Insert_Explicit_Dereference (P);
+          Analyze_And_Resolve (P, Desig_Typ);
+       end if;
+    end Resolve_Implicit_Dereference;
+ 
     -------------------------------
     -- Resolve_Indexed_Component --
     -------------------------------
*************** package body Sem_Res is
*** 9085,9099 ****
        Resolve (Name, Array_Type);
        Array_Type := Get_Actual_Subtype_If_Available (Name);
  
!       --  If prefix is access type, dereference to get real array type.
!       --  Note: we do not apply an access check because the expander always
!       --  introduces an explicit dereference, and the check will happen there.
  
        if Is_Access_Type (Array_Type) then
!          Array_Type := Designated_Type (Array_Type);
        end if;
  
!       --  If name was overloaded, set component type correctly now
        --  If a misplaced call to an entry family (which has no index types)
        --  return. Error will be diagnosed from calling context.
  
--- 9272,9286 ----
        Resolve (Name, Array_Type);
        Array_Type := Get_Actual_Subtype_If_Available (Name);
  
!       --  If the prefix's type is an access type, get to the real array type.
!       --  Note: we do not apply an access check because an explicit dereference
!       --  will be introduced later, and the check will happen there.
  
        if Is_Access_Type (Array_Type) then
!          Array_Type := Implicitly_Designated_Type (Array_Type);
        end if;
  
!       --  If name was overloaded, set component type correctly now.
        --  If a misplaced call to an entry family (which has no index types)
        --  return. Error will be diagnosed from calling context.
  
*************** package body Sem_Res is
*** 9115,9135 ****
           Resolve (Expr, Standard_Positive);
  
        else
!          while Present (Index) and Present (Expr) loop
              Resolve (Expr, Etype (Index));
              Check_Unset_Reference (Expr);
  
!             if Is_Scalar_Type (Etype (Expr)) then
!                Apply_Scalar_Range_Check (Expr, Etype (Index));
!             else
!                Apply_Range_Check (Expr, Get_Actual_Subtype (Index));
!             end if;
  
              Next_Index (Index);
              Next (Expr);
           end loop;
        end if;
  
        Analyze_Dimension (N);
  
        --  Do not generate the warning on suspicious index if we are analyzing
--- 9302,9319 ----
           Resolve (Expr, Standard_Positive);
  
        else
!          while Present (Index) and then Present (Expr) loop
              Resolve (Expr, Etype (Index));
              Check_Unset_Reference (Expr);
  
!             Apply_Scalar_Range_Check (Expr, Etype (Index));
  
              Next_Index (Index);
              Next (Expr);
           end loop;
        end if;
  
+       Resolve_Implicit_Dereference (Prefix (N));
        Analyze_Dimension (N);
  
        --  Do not generate the warning on suspicious index if we are analyzing
*************** package body Sem_Res is
*** 9145,9154 ****
           Eval_Indexed_Component (N);
        end if;
  
!       --  If the array type is atomic, and the component is not atomic, then
!       --  this is worth a warning, since we have a situation where the access
!       --  to the component may cause extra read/writes of the atomic array
!       --  object, or partial word accesses, which could be unexpected.
  
        if Nkind (N) = N_Indexed_Component
          and then Is_Atomic_Ref_With_Address (N)
--- 9329,9338 ----
           Eval_Indexed_Component (N);
        end if;
  
!       --  If the array type is atomic and the component is not, then this is
!       --  worth a warning before Ada 2020, since we have a situation where the
!       --  access to the component may cause extra read/writes of the atomic
!       --  object, or partial word accesses, both of which may be unexpected.
  
        if Nkind (N) = N_Indexed_Component
          and then Is_Atomic_Ref_With_Address (N)
*************** package body Sem_Res is
*** 9157,9162 ****
--- 9341,9347 ----
                                   and then Has_Atomic_Components
                                              (Entity (Prefix (N)))))
          and then not Is_Atomic (Component_Type (Array_Type))
+         and then Ada_Version < Ada_2020
        then
           Error_Msg_N
             ("??access to non-atomic component of atomic array", Prefix (N));
*************** package body Sem_Res is
*** 9198,9204 ****
           Res : Node_Id;
  
        begin
!          if Nkind_In (Opnd, N_Integer_Literal, N_Real_Literal) then
              Res :=
                Make_Qualified_Expression (Loc,
                  Subtype_Mark => New_Occurrence_Of (Btyp, Loc),
--- 9383,9389 ----
           Res : Node_Id;
  
        begin
!          if Nkind (Opnd) in N_Integer_Literal | N_Real_Literal then
              Res :=
                Make_Qualified_Expression (Loc,
                  Subtype_Mark => New_Occurrence_Of (Btyp, Loc),
*************** package body Sem_Res is
*** 9391,9397 ****
  
        if Short_Circuit_And_Or
          and then B_Typ = Standard_Boolean
!         and then Nkind_In (N, N_Op_And, N_Op_Or)
        then
           --  Mark the corresponding putative SCO operator as truly a logical
           --  (and short-circuit) operator.
--- 9576,9582 ----
  
        if Short_Circuit_And_Or
          and then B_Typ = Standard_Boolean
!         and then Nkind (N) in N_Op_And | N_Op_Or
        then
           --  Mark the corresponding putative SCO operator as truly a logical
           --  (and short-circuit) operator.
*************** package body Sem_Res is
*** 9432,9465 ****
        Set_Etype (N, B_Typ);
        Generate_Operator_Reference (N, B_Typ);
        Eval_Logical_Op (N);
- 
-       --  In SPARK, logical operations AND, OR and XOR for arrays are defined
-       --  only when both operands have same static lower and higher bounds. Of
-       --  course the types have to match, so only check if operands are
-       --  compatible and the node itself has no errors.
- 
-       if Is_Array_Type (B_Typ)
-         and then Nkind (N) in N_Binary_Op
-       then
-          declare
-             Left_Typ  : constant Node_Id := Etype (Left_Opnd (N));
-             Right_Typ : constant Node_Id := Etype (Right_Opnd (N));
- 
-          begin
-             --  Protect call to Matching_Static_Array_Bounds to avoid costly
-             --  operation if not needed.
- 
-             if Restriction_Check_Required (SPARK_05)
-               and then Base_Type (Left_Typ) = Base_Type (Right_Typ)
-               and then Left_Typ /= Any_Composite  --  or Left_Opnd in error
-               and then Right_Typ /= Any_Composite  --  or Right_Opnd in error
-               and then not Matching_Static_Array_Bounds (Left_Typ, Right_Typ)
-             then
-                Check_SPARK_05_Restriction
-                  ("array types should have matching static bounds", N);
-             end if;
-          end;
-       end if;
     end Resolve_Logical_Op;
  
     ---------------------------
--- 9617,9622 ----
*************** package body Sem_Res is
*** 9471,9485 ****
     --  universal types applies.
  
     procedure Resolve_Membership_Op (N : Node_Id; Typ : Entity_Id) is
!       pragma Warnings (Off, Typ);
  
        L : constant Node_Id := Left_Opnd  (N);
        R : constant Node_Id := Right_Opnd (N);
        T : Entity_Id;
  
        procedure Resolve_Set_Membership;
!       --  Analysis has determined a unique type for the left operand. Use it to
!       --  resolve the disjuncts.
  
        ----------------------------
        -- Resolve_Set_Membership --
--- 9628,9642 ----
     --  universal types applies.
  
     procedure Resolve_Membership_Op (N : Node_Id; Typ : Entity_Id) is
!       pragma Assert (Is_Boolean_Type (Typ));
  
        L : constant Node_Id := Left_Opnd  (N);
        R : constant Node_Id := Right_Opnd (N);
        T : Entity_Id;
  
        procedure Resolve_Set_Membership;
!       --  Analysis has determined a unique type for the left operand. Use it as
!       --  the basis to resolve the disjuncts.
  
        ----------------------------
        -- Resolve_Set_Membership --
*************** package body Sem_Res is
*** 9487,9504 ****
  
        procedure Resolve_Set_Membership is
           Alt  : Node_Id;
-          Ltyp : Entity_Id;
  
        begin
           --  If the left operand is overloaded, find type compatible with not
           --  overloaded alternative of the right operand.
  
           if Is_Overloaded (L) then
!             Ltyp := Empty;
!             Alt := First (Alternatives (N));
              while Present (Alt) loop
                 if not Is_Overloaded (Alt) then
!                   Ltyp := Intersect_Types (L, Alt);
                    exit;
                 else
                    Next (Alt);
--- 9644,9660 ----
  
        procedure Resolve_Set_Membership is
           Alt  : Node_Id;
  
        begin
           --  If the left operand is overloaded, find type compatible with not
           --  overloaded alternative of the right operand.
  
+          Alt := First (Alternatives (N));
           if Is_Overloaded (L) then
!             T := Empty;
              while Present (Alt) loop
                 if not Is_Overloaded (Alt) then
!                   T := Intersect_Types (L, Alt);
                    exit;
                 else
                    Next (Alt);
*************** package body Sem_Res is
*** 9508,9522 ****
              --  Unclear how to resolve expression if all alternatives are also
              --  overloaded.
  
!             if No (Ltyp) then
                 Error_Msg_N ("ambiguous expression", N);
              end if;
  
           else
!             Ltyp := Etype (L);
           end if;
  
!          Resolve (L, Ltyp);
  
           Alt := First (Alternatives (N));
           while Present (Alt) loop
--- 9664,9678 ----
              --  Unclear how to resolve expression if all alternatives are also
              --  overloaded.
  
!             if No (T) then
                 Error_Msg_N ("ambiguous expression", N);
              end if;
  
           else
!             T := Intersect_Types (L, Alt);
           end if;
  
!          Resolve (L, T);
  
           Alt := First (Alternatives (N));
           while Present (Alt) loop
*************** package body Sem_Res is
*** 9527,9533 ****
              if not Is_Entity_Name (Alt)
                or else not Is_Type (Entity (Alt))
              then
!                Resolve (Alt, Ltyp);
              end if;
  
              Next (Alt);
--- 9683,9689 ----
              if not Is_Entity_Name (Alt)
                or else not Is_Type (Entity (Alt))
              then
!                Resolve (Alt, T);
              end if;
  
              Next (Alt);
*************** package body Sem_Res is
*** 9535,9541 ****
  
           --  Check for duplicates for discrete case
  
!          if Is_Discrete_Type (Ltyp) then
              declare
                 type Ent is record
                    Alt : Node_Id;
--- 9691,9697 ----
  
           --  Check for duplicates for discrete case
  
!          if Is_Discrete_Type (T) then
              declare
                 type Ent is record
                    Alt : Node_Id;
*************** package body Sem_Res is
*** 9553,9561 ****
                 Alt := First (Alternatives (N));
                 while Present (Alt) loop
                    if Is_OK_Static_Expression (Alt)
!                     and then (Nkind_In (Alt, N_Integer_Literal,
!                                              N_Character_Literal)
!                                or else Nkind (Alt) in N_Has_Entity)
                    then
                       Nalts := Nalts + 1;
                       Alts (Nalts) := (Alt, Expr_Value (Alt));
--- 9709,9717 ----
                 Alt := First (Alternatives (N));
                 while Present (Alt) loop
                    if Is_OK_Static_Expression (Alt)
!                     and then Nkind (Alt) in N_Integer_Literal
!                                           | N_Character_Literal
!                                           | N_Has_Entity
                    then
                       Nalts := Nalts + 1;
                       Alts (Nalts) := (Alt, Expr_Value (Alt));
*************** package body Sem_Res is
*** 9568,9574 ****
                       end loop;
                    end if;
  
!                   Alt := Next (Alt);
                 end loop;
              end;
           end if;
--- 9724,9730 ----
                       end loop;
                    end if;
  
!                   Next (Alt);
                 end loop;
              end;
           end if;
*************** package body Sem_Res is
*** 9578,9588 ****
           --  equality for the type. This may be confusing to users, and the
           --  following warning appears useful for the most common case.
  
!          if Is_Scalar_Type (Ltyp)
!            and then Present (Get_User_Defined_Eq (Ltyp))
           then
              Error_Msg_NE
!               ("membership test on& uses predefined equality?", N, Ltyp);
              Error_Msg_N
                ("\even if user-defined equality exists (RM 4.5.2 (28.1/3)?", N);
           end if;
--- 9734,9744 ----
           --  equality for the type. This may be confusing to users, and the
           --  following warning appears useful for the most common case.
  
!          if Is_Scalar_Type (Etype (L))
!            and then Present (Get_User_Defined_Eq (Etype (L)))
           then
              Error_Msg_NE
!               ("membership test on& uses predefined equality?", N, Etype (L));
              Error_Msg_N
                ("\even if user-defined equality exists (RM 4.5.2 (28.1/3)?", N);
           end if;
*************** package body Sem_Res is
*** 9689,9701 ****
  
           if Nkind (Parent (N)) in N_Subprogram_Call then
              Error_Msg_N
!               ("null is not allowed as argument for an access parameter", N);
  
           --  Standard message for all other cases (are there any?)
  
           else
              Error_Msg_N
!               ("null cannot be of an anonymous access type", N);
           end if;
        end if;
  
--- 9845,9857 ----
  
           if Nkind (Parent (N)) in N_Subprogram_Call then
              Error_Msg_N
!               ("NULL is not allowed as argument for an access parameter", N);
  
           --  Standard message for all other cases (are there any?)
  
           else
              Error_Msg_N
!               ("NULL cannot be of an anonymous access type", N);
           end if;
        end if;
  
*************** package body Sem_Res is
*** 9742,9748 ****
           else
              Insert_Action
                (Compile_Time_Constraint_Error (N,
!                  "(Ada 2005) null not allowed in null-excluding objects??"),
                 Make_Raise_Constraint_Error (Loc,
                   Reason => CE_Access_Check_Failed));
           end if;
--- 9898,9904 ----
           else
              Insert_Action
                (Compile_Time_Constraint_Error (N,
!                  "(Ada 2005) NULL not allowed in null-excluding objects??"),
                 Make_Raise_Constraint_Error (Loc,
                   Reason => CE_Access_Check_Failed));
           end if;
*************** package body Sem_Res is
*** 9817,9827 ****
           exit when NN = N;
           NN := Parent (NN);
        end loop;
- 
-       if Base_Type (Etype (N)) /= Standard_String then
-          Check_SPARK_05_Restriction
-            ("result of concatenation should have type String", N);
-       end if;
     end Resolve_Op_Concat;
  
     ---------------------------
--- 9973,9978 ----
*************** package body Sem_Res is
*** 9946,9979 ****
           Resolve (Arg, Btyp);
        end if;
  
-       --  Concatenation is restricted in SPARK: each operand must be either a
-       --  string literal, the name of a string constant, a static character or
-       --  string expression, or another concatenation. Arg cannot be a
-       --  concatenation here as callers of Resolve_Op_Concat_Arg call it
-       --  separately on each final operand, past concatenation operations.
- 
-       if Is_Character_Type (Etype (Arg)) then
-          if not Is_OK_Static_Expression (Arg) then
-             Check_SPARK_05_Restriction
-               ("character operand for concatenation should be static", Arg);
-          end if;
- 
-       elsif Is_String_Type (Etype (Arg)) then
-          if not (Nkind_In (Arg, N_Identifier, N_Expanded_Name)
-                   and then Is_Constant_Object (Entity (Arg)))
-            and then not Is_OK_Static_Expression (Arg)
-          then
-             Check_SPARK_05_Restriction
-               ("string operand for concatenation should be static", Arg);
-          end if;
- 
-       --  Do not issue error on an operand that is neither a character nor a
-       --  string, as the error is issued in Resolve_Op_Concat.
- 
-       else
-          null;
-       end if;
- 
        Check_Unset_Reference (Arg);
     end Resolve_Op_Concat_Arg;
  
--- 10097,10102 ----
*************** package body Sem_Res is
*** 10128,10135 ****
     --------------------
  
     procedure Resolve_Op_Not (N : Node_Id; Typ : Entity_Id) is
-       B_Typ : Entity_Id;
- 
        function Parent_Is_Boolean return Boolean;
        --  This function determines if the parent node is a boolean operator or
        --  operation (comparison op, membership test, or short circuit form) and
--- 10251,10256 ----
*************** package body Sem_Res is
*** 10142,10173 ****
  
        function Parent_Is_Boolean return Boolean is
        begin
!          if Paren_Count (N) /= 0 then
!             return False;
  
!          else
!             case Nkind (Parent (N)) is
!                when N_And_Then
!                   | N_In
!                   | N_Not_In
!                   | N_Op_And
!                   | N_Op_Eq
!                   | N_Op_Ge
!                   | N_Op_Gt
!                   | N_Op_Le
!                   | N_Op_Lt
!                   | N_Op_Ne
!                   | N_Op_Or
!                   | N_Op_Xor
!                   | N_Or_Else
!                =>
!                   return Left_Opnd (Parent (N)) = N;
  
!                when others =>
!                   return False;
!             end case;
!          end if;
!       end Parent_Is_Boolean;
  
     --  Start of processing for Resolve_Op_Not
  
--- 10263,10278 ----
  
        function Parent_Is_Boolean return Boolean is
        begin
!          return Paren_Count (N) = 0
!            and then Nkind (Parent (N)) in N_Membership_Test
!                                         | N_Op_Boolean
!                                         | N_Short_Circuit
!             and then Left_Opnd (Parent (N)) = N;
!       end Parent_Is_Boolean;
  
!       --  Local variables
  
!       B_Typ : Entity_Id;
  
     --  Start of processing for Resolve_Op_Not
  
*************** package body Sem_Res is
*** 10194,10200 ****
        elsif Typ = Universal_Integer or else Typ = Any_Modular then
           if Parent_Is_Boolean then
              Error_Msg_N
!               ("operand of not must be enclosed in parentheses",
                 Right_Opnd (N));
           else
              Error_Msg_N
--- 10299,10305 ----
        elsif Typ = Universal_Integer or else Typ = Any_Modular then
           if Parent_Is_Boolean then
              Error_Msg_N
!               ("operand of NOT must be enclosed in parentheses",
                 Right_Opnd (N));
           else
              Error_Msg_N
*************** package body Sem_Res is
*** 10241,10247 ****
  
           begin
              if B_Typ = Standard_Boolean
!               and then Nkind_In (Opnd, N_Op_Eq, N_Op_Ne)
                and then Is_Overloaded (Opnd)
              then
                 Resolve_Equality_Op (Opnd, B_Typ);
--- 10346,10352 ----
  
           begin
              if B_Typ = Standard_Boolean
!               and then Nkind (Opnd) in N_Op_Eq | N_Op_Ne
                and then Is_Overloaded (Opnd)
              then
                 Resolve_Equality_Op (Opnd, B_Typ);
*************** package body Sem_Res is
*** 10299,10317 ****
     begin
        Resolve (Expr, Target_Typ);
  
-       --  Protect call to Matching_Static_Array_Bounds to avoid costly
-       --  operation if not needed.
- 
-       if Restriction_Check_Required (SPARK_05)
-         and then Is_Array_Type (Target_Typ)
-         and then Is_Array_Type (Etype (Expr))
-         and then Etype (Expr) /= Any_Composite  --  or else Expr in error
-         and then not Matching_Static_Array_Bounds (Target_Typ, Etype (Expr))
-       then
-          Check_SPARK_05_Restriction
-            ("array types should have matching static bounds", N);
-       end if;
- 
        --  A qualified expression requires an exact match of the type, class-
        --  wide matching is not allowed. However, if the qualifying type is
        --  specific and the expression has a class-wide type, it may still be
--- 10404,10409 ----
*************** package body Sem_Res is
*** 10330,10339 ****
  
        --  If the target type is unconstrained, then we reset the type of the
        --  result from the type of the expression. For other cases, the actual
!       --  subtype of the expression is the target type.
  
        if Is_Composite_Type (Target_Typ)
          and then not Is_Constrained (Target_Typ)
        then
           Set_Etype (N, Etype (Expr));
        end if;
--- 10422,10433 ----
  
        --  If the target type is unconstrained, then we reset the type of the
        --  result from the type of the expression. For other cases, the actual
!       --  subtype of the expression is the target type. But we avoid doing it
!       --  for an allocator since this is not needed and might be problematic.
  
        if Is_Composite_Type (Target_Typ)
          and then not Is_Constrained (Target_Typ)
+         and then Nkind (Parent (N)) /= N_Allocator
        then
           Set_Etype (N, Etype (Expr));
        end if;
*************** package body Sem_Res is
*** 10347,10377 ****
        --  check may convert an illegal static expression and result in warning
        --  rather than giving an error (e.g Integer'(Integer'Last + 1)).
  
!       if Nkind (N) = N_Qualified_Expression and then Is_Scalar_Type (Typ) then
!          Apply_Scalar_Range_Check (Expr, Typ);
        end if;
  
!       --  Finally, check whether a predicate applies to the target type. This
!       --  comes from AI12-0100. As for type conversions, check the enclosing
!       --  context to prevent an infinite expansion.
  
        if Has_Predicates (Target_Typ) then
!          if Nkind (Parent (N)) = N_Function_Call
!            and then Present (Name (Parent (N)))
!            and then (Is_Predicate_Function (Entity (Name (Parent (N))))
!                        or else
!                      Is_Predicate_Function_M (Entity (Name (Parent (N)))))
!          then
!             null;
! 
!          --  In the case of a qualified expression in an allocator, the check
!          --  is applied when expanding the allocator, so avoid redundant check.
! 
!          elsif Nkind (N) = N_Qualified_Expression
!            and then Nkind (Parent (N)) /= N_Allocator
!          then
!             Apply_Predicate_Check (N, Target_Typ);
!          end if;
        end if;
     end Resolve_Qualified_Expression;
  
--- 10441,10459 ----
        --  check may convert an illegal static expression and result in warning
        --  rather than giving an error (e.g Integer'(Integer'Last + 1)).
  
!       if Nkind (N) = N_Qualified_Expression
!         and then Is_Scalar_Type (Target_Typ)
!       then
!          Apply_Scalar_Range_Check (Expr, Target_Typ);
        end if;
  
!       --  AI12-0100: Once the qualified expression is resolved, check whether
!       --  operand statisfies a static predicate of the target subtype, if any.
!       --  In the static expression case, a predicate check failure is an error.
  
        if Has_Predicates (Target_Typ) then
!          Check_Expression_Against_Static_Predicate
!            (Expr, Target_Typ, Static_Failure_Is_Error => True);
        end if;
     end Resolve_Qualified_Expression;
  
*************** package body Sem_Res is
*** 10436,10448 ****
     begin
        Set_Etype (N, Typ);
  
-       --  The lower bound should be in Typ. The higher bound can be in Typ's
-       --  base type if the range is null. It may still be invalid if it is
-       --  higher than the lower bound. This is checked later in the context in
-       --  which the range appears.
- 
        Resolve (L, Typ);
!       Resolve (H, Base_Type (Typ));
  
        --  Reanalyze the lower bound after both bounds have been analyzed, so
        --  that the range is known to be static or not by now. This may trigger
--- 10518,10525 ----
     begin
        Set_Etype (N, Typ);
  
        Resolve (L, Typ);
!       Resolve (H, Typ);
  
        --  Reanalyze the lower bound after both bounds have been analyzed, so
        --  that the range is known to be static or not by now. This may trigger
*************** package body Sem_Res is
*** 10712,10718 ****
                                while Present (Comp1)
                                  and then Chars (Comp1) /= Chars (S)
                                loop
!                                  Comp1 := Next_Entity (Comp1);
                                end loop;
                             end if;
  
--- 10789,10795 ----
                                while Present (Comp1)
                                  and then Chars (Comp1) /= Chars (S)
                                loop
!                                  Next_Entity (Comp1);
                                end loop;
                             end if;
  
*************** package body Sem_Res is
*** 10721,10727 ****
                       end if;
                    end if;
  
!                   Comp := Next_Entity (Comp);
                 end loop;
              end if;
  
--- 10798,10804 ----
                       end if;
                    end if;
  
!                   Next_Entity (Comp);
                 end loop;
              end if;
  
*************** package body Sem_Res is
*** 10777,10788 ****
           Generate_Reference (Entity (S), S, 'r');
        end if;
  
!       --  If prefix is an access type, the node will be transformed into an
!       --  explicit dereference during expansion. The type of the node is the
!       --  designated type of that of the prefix.
  
        if Is_Access_Type (Etype (P)) then
!          T := Designated_Type (Etype (P));
           Check_Fully_Declared_Prefix (T, P);
  
        else
--- 10854,10865 ----
           Generate_Reference (Entity (S), S, 'r');
        end if;
  
!       --  If the prefix's type is an access type, get to the real record type.
!       --  Note: we do not apply an access check because an explicit dereference
!       --  will be introduced later, and the check will happen there.
  
        if Is_Access_Type (Etype (P)) then
!          T := Implicitly_Designated_Type (Etype (P));
           Check_Fully_Declared_Prefix (T, P);
  
        else
*************** package body Sem_Res is
*** 10835,10862 ****
           Set_Etype (N, Base_Type (Typ));
        end if;
  
!       --  Note: No Eval processing is required, because the prefix is of a
!       --  record type, or protected type, and neither can possibly be static.
  
!       --  If the record type is atomic, and the component is non-atomic, then
!       --  this is worth a warning, since we have a situation where the access
!       --  to the component may cause extra read/writes of the atomic array
!       --  object, or partial word accesses, both of which may be unexpected.
  
!       if Nkind (N) = N_Selected_Component
!         and then Is_Atomic_Ref_With_Address (N)
!         and then not Is_Atomic (Entity (S))
!         and then not Is_Atomic (Etype (Entity (S)))
!       then
!          Error_Msg_N
!            ("??access to non-atomic component of atomic record",
!             Prefix (N));
!          Error_Msg_N
!            ("\??may cause unexpected accesses to atomic object",
!             Prefix (N));
!       end if;
  
!       Analyze_Dimension (N);
     end Resolve_Selected_Component;
  
     -------------------
--- 10912,10945 ----
           Set_Etype (N, Base_Type (Typ));
        end if;
  
!       --  Eval_Selected_Component may e.g. fold statically known discriminants.
  
!       Eval_Selected_Component (N);
  
!       if Nkind (N) = N_Selected_Component then
  
!          --  If the record type is atomic and the component is not, then this
!          --  is worth a warning before Ada 2020, since we have a situation
!          --  where the access to the component may cause extra read/writes of
!          --  the atomic object, or partial word accesses, both of which may be
!          --  unexpected.
! 
!          if Is_Atomic_Ref_With_Address (N)
!            and then not Is_Atomic (Entity (S))
!            and then not Is_Atomic (Etype (Entity (S)))
!            and then Ada_Version < Ada_2020
!          then
!             Error_Msg_N
!               ("??access to non-atomic component of atomic record",
!                Prefix (N));
!             Error_Msg_N
!               ("\??may cause unexpected accesses to atomic object",
!                Prefix (N));
!          end if;
! 
!          Resolve_Implicit_Dereference (Prefix (N));
!          Analyze_Dimension (N);
!       end if;
     end Resolve_Selected_Component;
  
     -------------------
*************** package body Sem_Res is
*** 10913,10919 ****
              --  Set Comes_From_Source on L to preserve warnings for unset
              --  reference.
  
!             Set_Comes_From_Source (L, Comes_From_Source (Reloc_L));
           end;
        end if;
  
--- 10996,11002 ----
              --  Set Comes_From_Source on L to preserve warnings for unset
              --  reference.
  
!             Preserve_Comes_From_Source (L, Reloc_L);
           end;
        end if;
  
*************** package body Sem_Res is
*** 11086,11094 ****
  
        Resolve (Name, Array_Type);
  
        if Is_Access_Type (Array_Type) then
!          Apply_Access_Check (N);
!          Array_Type := Designated_Type (Array_Type);
  
           --  If the prefix is an access to an unconstrained array, we must use
           --  the actual subtype of the object to perform the index checks. The
--- 11169,11180 ----
  
        Resolve (Name, Array_Type);
  
+       --  If the prefix's type is an access type, get to the real array type.
+       --  Note: we do not apply an access check because an explicit dereference
+       --  will be introduced later, and the check will happen there.
+ 
        if Is_Access_Type (Array_Type) then
!          Array_Type := Implicitly_Designated_Type (Array_Type);
  
           --  If the prefix is an access to an unconstrained array, we must use
           --  the actual subtype of the object to perform the index checks. The
*************** package body Sem_Res is
*** 11232,11237 ****
--- 11318,11324 ----
           Warn_On_Suspicious_Index (Name, High_Bound (Drange));
        end if;
  
+       Resolve_Implicit_Dereference (Prefix (N));
        Analyze_Dimension (N);
        Eval_Slice (N);
     end Resolve_Slice;
*************** package body Sem_Res is
*** 11281,11290 ****
  
        elsif Nkind (Parent (N)) = N_Op_Concat
          and then not Need_Check
!         and then not Nkind_In (Original_Node (N), N_Character_Literal,
!                                                   N_Attribute_Reference,
!                                                   N_Qualified_Expression,
!                                                   N_Type_Conversion)
        then
           Subtype_Id := Typ;
  
--- 11368,11377 ----
  
        elsif Nkind (Parent (N)) = N_Op_Concat
          and then not Need_Check
!         and then Nkind (Original_Node (N)) not in N_Character_Literal
!                                                 | N_Attribute_Reference
!                                                 | N_Qualified_Expression
!                                                 | N_Type_Conversion
        then
           Subtype_Id := Typ;
  
*************** package body Sem_Res is
*** 11570,11583 ****
           --  precision.
  
           if Is_Fixed_Point_Type (Typ)
!            and then Nkind_In (Operand, N_Op_Divide, N_Op_Multiply)
             and then Etype (Left_Opnd  (Operand)) = Any_Fixed
             and then Etype (Right_Opnd (Operand)) = Any_Fixed
           then
              Set_Etype (Operand, Universal_Real);
  
           elsif Is_Numeric_Type (Typ)
!            and then Nkind_In (Operand, N_Op_Multiply, N_Op_Divide)
             and then (Etype (Right_Opnd (Operand)) = Universal_Real
                         or else
                       Etype (Left_Opnd  (Operand)) = Universal_Real)
--- 11657,11670 ----
           --  precision.
  
           if Is_Fixed_Point_Type (Typ)
!            and then Nkind (Operand) in N_Op_Divide | N_Op_Multiply
             and then Etype (Left_Opnd  (Operand)) = Any_Fixed
             and then Etype (Right_Opnd (Operand)) = Any_Fixed
           then
              Set_Etype (Operand, Universal_Real);
  
           elsif Is_Numeric_Type (Typ)
!            and then Nkind (Operand) in N_Op_Multiply | N_Op_Divide
             and then (Etype (Right_Opnd (Operand)) = Universal_Real
                         or else
                       Etype (Left_Opnd  (Operand)) = Universal_Real)
*************** package body Sem_Res is
*** 11633,11667 ****
  
        Resolve (Operand);
  
-       --  In SPARK, a type conversion between array types should be restricted
-       --  to types which have matching static bounds.
- 
-       --  Protect call to Matching_Static_Array_Bounds to avoid costly
-       --  operation if not needed.
- 
-       if Restriction_Check_Required (SPARK_05)
-         and then Is_Array_Type (Target_Typ)
-         and then Is_Array_Type (Operand_Typ)
-         and then Operand_Typ /= Any_Composite  --  or else Operand in error
-         and then not Matching_Static_Array_Bounds (Target_Typ, Operand_Typ)
-       then
-          Check_SPARK_05_Restriction
-            ("array types should have matching static bounds", N);
-       end if;
- 
-       --  In formal mode, the operand of an ancestor type conversion must be an
-       --  object (not an expression).
- 
-       if Is_Tagged_Type (Target_Typ)
-         and then not Is_Class_Wide_Type (Target_Typ)
-         and then Is_Tagged_Type (Operand_Typ)
-         and then not Is_Class_Wide_Type (Operand_Typ)
-         and then Is_Ancestor (Target_Typ, Operand_Typ)
-         and then not Is_SPARK_05_Object_Reference (Operand)
-       then
-          Check_SPARK_05_Restriction ("object required", Operand);
-       end if;
- 
        Analyze_Dimension (N);
  
        --  Note: we do the Eval_Type_Conversion call before applying the
--- 11720,11725 ----
*************** package body Sem_Res is
*** 11684,11699 ****
        Simplify_Type_Conversion (N);
  
        --  If after evaluation we still have a type conversion, then we may need
!       --  to apply checks required for a subtype conversion.
! 
!       --  Skip these type conversion checks if universal fixed operands
!       --  operands involved, since range checks are handled separately for
!       --  these cases (in the appropriate Expand routines in unit Exp_Fixd).
  
        if Nkind (N) = N_Type_Conversion
          and then not Is_Generic_Type (Root_Type (Target_Typ))
!         and then Target_Typ  /= Universal_Fixed
!         and then Operand_Typ /= Universal_Fixed
        then
           Apply_Type_Conversion_Checks (N);
        end if;
--- 11742,11755 ----
        Simplify_Type_Conversion (N);
  
        --  If after evaluation we still have a type conversion, then we may need
!       --  to apply checks required for a subtype conversion. But skip them if
!       --  universal fixed operands are involved, since range checks are handled
!       --  separately for these cases, after the expansion done by Exp_Fixd.
  
        if Nkind (N) = N_Type_Conversion
          and then not Is_Generic_Type (Root_Type (Target_Typ))
!         and then Target_Typ /= Universal_Fixed
!         and then Etype (Operand) /= Universal_Fixed
        then
           Apply_Type_Conversion_Checks (N);
        end if;
*************** package body Sem_Res is
*** 11732,11737 ****
--- 11788,11794 ----
           --  odd subtype coming from the bounds).
  
           if (Is_Entity_Name (Orig_N)
+               and then Present (Entity (Orig_N))
                and then
                  (Etype (Entity (Orig_N)) = Orig_T
                    or else
*************** package body Sem_Res is
*** 11767,11777 ****
              --  newer language version.
  
              elsif Nkind (Orig_N) = N_Qualified_Expression
!               and then Nkind_In (Parent (N), N_Attribute_Reference,
!                                              N_Indexed_Component,
!                                              N_Selected_Component,
!                                              N_Slice,
!                                              N_Explicit_Dereference)
              then
                 null;
  
--- 11824,11834 ----
              --  newer language version.
  
              elsif Nkind (Orig_N) = N_Qualified_Expression
!               and then Nkind (Parent (N)) in N_Attribute_Reference
!                                            | N_Indexed_Component
!                                            | N_Selected_Component
!                                            | N_Slice
!                                            | N_Explicit_Dereference
              then
                 null;
  
*************** package body Sem_Res is
*** 11786,11802 ****
              --  entity, give the name of the entity in the message. If not,
              --  just mention the expression.
  
-             --  Shoudn't we test Warn_On_Redundant_Constructs here ???
- 
              else
                 if Is_Entity_Name (Orig_N) then
                    Error_Msg_Node_2 := Orig_T;
                    Error_Msg_NE -- CODEFIX
!                     ("??redundant conversion, & is of type &!",
                       N, Entity (Orig_N));
                 else
                    Error_Msg_NE
!                     ("??redundant conversion, expression is of type&!",
                       N, Orig_T);
                 end if;
              end if;
--- 11843,11857 ----
              --  entity, give the name of the entity in the message. If not,
              --  just mention the expression.
  
              else
                 if Is_Entity_Name (Orig_N) then
                    Error_Msg_Node_2 := Orig_T;
                    Error_Msg_NE -- CODEFIX
!                     ("?r?redundant conversion, & is of type &!",
                       N, Entity (Orig_N));
                 else
                    Error_Msg_NE
!                     ("?r?redundant conversion, expression is of type&!",
                       N, Orig_T);
                 end if;
              end if;
*************** package body Sem_Res is
*** 11903,11909 ****
  
                 --  Handle subtypes
  
!                if Ekind_In (Opnd, E_Protected_Subtype, E_Task_Subtype) then
                    Opnd := Etype (Opnd);
                 end if;
  
--- 11958,11964 ----
  
                 --  Handle subtypes
  
!                if Ekind (Opnd) in E_Protected_Subtype | E_Task_Subtype then
                    Opnd := Etype (Opnd);
                 end if;
  
*************** package body Sem_Res is
*** 11924,11949 ****
           end;
        end if;
  
!       --  Ada 2012: once the type conversion is resolved, check whether the
!       --  operand statisfies the static predicate of the target type.
  
        if Has_Predicates (Target_Typ) then
!          Check_Expression_Against_Static_Predicate (N, Target_Typ);
        end if;
  
!       --  If at this stage we have a real to integer conversion, make sure that
!       --  the Do_Range_Check flag is set, because such conversions in general
!       --  need a range check. We only need this if expansion is off.
!       --  In GNATprove mode, we only do that when converting from fixed-point
!       --  (as floating-point to integer conversions are now handled in
!       --  GNATprove mode).
  
        if Nkind (N) = N_Type_Conversion
          and then not Expander_Active
          and then Is_Integer_Type (Target_Typ)
!         and then (Is_Fixed_Point_Type (Operand_Typ)
!                    or else (not GNATprove_Mode
!                              and then Is_Floating_Point_Type (Operand_Typ)))
          and then not Range_Checks_Suppressed (Target_Typ)
          and then not Range_Checks_Suppressed (Operand_Typ)
        then
--- 11979,12001 ----
           end;
        end if;
  
!       --  Ada 2012: Once the type conversion is resolved, check whether the
!       --  operand statisfies a static predicate of the target subtype, if any.
!       --  In the static expression case, a predicate check failure is an error.
  
        if Has_Predicates (Target_Typ) then
!          Check_Expression_Against_Static_Predicate
!            (N, Target_Typ, Static_Failure_Is_Error => True);
        end if;
  
!       --  If at this stage we have a fixed to integer conversion, make sure the
!       --  Do_Range_Check flag is set, because such conversions in general need
!       --  a range check. We only need this if expansion is off, see above why.
  
        if Nkind (N) = N_Type_Conversion
          and then not Expander_Active
          and then Is_Integer_Type (Target_Typ)
!         and then Is_Fixed_Point_Type (Operand_Typ)
          and then not Range_Checks_Suppressed (Target_Typ)
          and then not Range_Checks_Suppressed (Operand_Typ)
        then
*************** package body Sem_Res is
*** 11980,11991 ****
        Hi    : Uint;
  
     begin
-       if Is_Modular_Integer_Type (Typ) and then Nkind (N) /= N_Op_Not then
-          Error_Msg_Name_1 := Chars (Typ);
-          Check_SPARK_05_Restriction
-            ("unary operator not defined for modular type%", N);
-       end if;
- 
        --  Deal with intrinsic unary operators
  
        if Comes_From_Source (N)
--- 12032,12037 ----
*************** package body Sem_Res is
*** 12065,12071 ****
              --  mod. These are the cases where the grouping can affect results.
  
              if Paren_Count (Rorig) = 0
!               and then Nkind_In (Rorig, N_Op_Mod, N_Op_Multiply, N_Op_Divide)
              then
                 --  For mod, we always give the warning, since the value is
                 --  affected by the parenthesization (e.g. (-5) mod 315 /=
--- 12111,12117 ----
              --  mod. These are the cases where the grouping can affect results.
  
              if Paren_Count (Rorig) = 0
!               and then Nkind (Rorig) in N_Op_Mod | N_Op_Multiply | N_Op_Divide
              then
                 --  For mod, we always give the warning, since the value is
                 --  affected by the parenthesization (e.g. (-5) mod 315 /=
*************** package body Sem_Res is
*** 12147,12153 ****
                 --  overflow is impossible (divisor > 1) or we have a case of
                 --  division by zero in any case.
  
!                if Nkind_In (Rorig, N_Op_Divide, N_Op_Rem)
                   and then Compile_Time_Known_Value (Right_Opnd (Rorig))
                   and then UI_Abs (Expr_Value (Right_Opnd (Rorig))) /= 1
                 then
--- 12193,12199 ----
                 --  overflow is impossible (divisor > 1) or we have a case of
                 --  division by zero in any case.
  
!                if Nkind (Rorig) in N_Op_Divide | N_Op_Rem
                   and then Compile_Time_Known_Value (Right_Opnd (Rorig))
                   and then UI_Abs (Expr_Value (Right_Opnd (Rorig))) /= 1
                 then
*************** package body Sem_Res is
*** 12196,12201 ****
--- 12242,12259 ----
  
        Resolve (Operand, Opnd_Type);
  
+       --  If the expression is a conversion to universal integer of an
+       --  an expression with an integer type, then we can eliminate the
+       --  intermediate conversion to universal integer.
+ 
+       if Nkind (Operand) = N_Type_Conversion
+         and then Entity (Subtype_Mark (Operand)) = Universal_Integer
+         and then Is_Integer_Type (Etype (Expression (Operand)))
+       then
+          Rewrite (Operand, Relocate_Node (Expression (Operand)));
+          Analyze_And_Resolve (Operand);
+       end if;
+ 
        --  In an inlined context, the unchecked conversion may be applied
        --  to a literal, in which case its type is the type of the context.
        --  (In other contexts conversions cannot apply to literals).
*************** package body Sem_Res is
*** 12438,12446 ****
        --  the point where actions for the slice are analyzed). Note that this
        --  is different from freezing the itype immediately, which might be
        --  premature (e.g. if the slice is within a transient scope). This needs
!       --  to be done only if expansion is enabled.
  
!       elsif Expander_Active then
           Ensure_Defined (Typ => Slice_Subtype, N => N);
        end if;
     end Set_Slice_Subtype;
--- 12496,12505 ----
        --  the point where actions for the slice are analyzed). Note that this
        --  is different from freezing the itype immediately, which might be
        --  premature (e.g. if the slice is within a transient scope). This needs
!       --  to be done only if expansion is enabled, or in GNATprove mode to
!       --  capture the associated run-time exceptions if any.
  
!       elsif Expander_Active or GNATprove_Mode then
           Ensure_Defined (Typ => Slice_Subtype, N => N);
        end if;
     end Set_Slice_Subtype;
*************** package body Sem_Res is
*** 12477,12513 ****
  
        --  If the lower bound is not static we create a range for the string
        --  literal, using the index type and the known length of the literal.
!       --  The index type is not necessarily Positive, so the upper bound is
!       --  computed as T'Val (T'Pos (Low_Bound) + L - 1).
  
        else
           declare
!             Index_List : constant List_Id   := New_List;
!             Index_Type : constant Entity_Id := Etype (First_Index (Typ));
!             High_Bound : constant Node_Id   :=
!                            Make_Attribute_Reference (Loc,
!                              Attribute_Name => Name_Val,
!                              Prefix         =>
!                                New_Occurrence_Of (Index_Type, Loc),
!                              Expressions    => New_List (
!                                Make_Op_Add (Loc,
!                                  Left_Opnd  =>
!                                    Make_Attribute_Reference (Loc,
!                                      Attribute_Name => Name_Pos,
!                                      Prefix         =>
!                                        New_Occurrence_Of (Index_Type, Loc),
!                                      Expressions    =>
!                                        New_List (New_Copy_Tree (Low_Bound))),
!                                  Right_Opnd =>
!                                    Make_Integer_Literal (Loc,
!                                      String_Length (Strval (N)) - 1))));
! 
              Array_Subtype : Entity_Id;
              Drange        : Node_Id;
              Index         : Node_Id;
              Index_Subtype : Entity_Id;
  
           begin
              if Is_Integer_Type (Index_Type) then
                 Set_String_Literal_Low_Bound
                   (Subtype_Id, Make_Integer_Literal (Loc, 1));
--- 12536,12586 ----
  
        --  If the lower bound is not static we create a range for the string
        --  literal, using the index type and the known length of the literal.
!       --  If the length is 1, then the upper bound is set to a mere copy of
!       --  the lower bound; or else, if the index type is a signed integer,
!       --  then the upper bound is computed as Low_Bound + L - 1; otherwise,
!       --  the upper bound is computed as T'Val (T'Pos (Low_Bound) + L - 1).
  
        else
           declare
!             Length        : constant Nat := String_Length (Strval (N));
!             Index_List    : constant List_Id   := New_List;
!             Index_Type    : constant Entity_Id := Etype (First_Index (Typ));
              Array_Subtype : Entity_Id;
              Drange        : Node_Id;
+             High_Bound    : Node_Id;
              Index         : Node_Id;
              Index_Subtype : Entity_Id;
  
           begin
+             if Length = 1 then
+                High_Bound := New_Copy_Tree (Low_Bound);
+ 
+             elsif Is_Signed_Integer_Type (Index_Type) then
+                High_Bound :=
+                  Make_Op_Add (Loc,
+                    Left_Opnd  => New_Copy_Tree (Low_Bound),
+                    Right_Opnd => Make_Integer_Literal (Loc, Length - 1));
+ 
+             else
+                High_Bound :=
+                  Make_Attribute_Reference (Loc,
+                    Attribute_Name => Name_Val,
+                    Prefix         =>
+                      New_Occurrence_Of (Index_Type, Loc),
+                    Expressions    => New_List (
+                      Make_Op_Add (Loc,
+                        Left_Opnd  =>
+                          Make_Attribute_Reference (Loc,
+                            Attribute_Name => Name_Pos,
+                            Prefix         =>
+                              New_Occurrence_Of (Index_Type, Loc),
+                            Expressions    =>
+                              New_List (New_Copy_Tree (Low_Bound))),
+                        Right_Opnd =>
+                          Make_Integer_Literal (Loc, Length - 1))));
+             end if;
+ 
              if Is_Integer_Type (Index_Type) then
                 Set_String_Literal_Low_Bound
                   (Subtype_Id, Make_Integer_Literal (Loc, 1));
*************** package body Sem_Res is
*** 12522,12531 ****
                      Attribute_Name => Name_First,
                      Prefix         =>
                        New_Occurrence_Of (Base_Type (Index_Type), Loc)));
-                Set_Etype (String_Literal_Low_Bound (Subtype_Id), Index_Type);
              end if;
  
!             Analyze_And_Resolve (String_Literal_Low_Bound (Subtype_Id));
  
              --  Build bona fide subtype for the string, and wrap it in an
              --  unchecked conversion, because the back end expects the
--- 12595,12604 ----
                      Attribute_Name => Name_First,
                      Prefix         =>
                        New_Occurrence_Of (Base_Type (Index_Type), Loc)));
              end if;
  
!             Analyze_And_Resolve
!               (String_Literal_Low_Bound (Subtype_Id), Base_Type (Index_Type));
  
              --  Build bona fide subtype for the string, and wrap it in an
              --  unchecked conversion, because the back end expects the
*************** package body Sem_Res is
*** 12599,12607 ****
                    or else (Is_Fixed_Point_Type (Target_Typ)
                              and then Conversion_OK (N)))
                and then Nkind (Operand) = N_Attribute_Reference
!               and then Nam_In (Attribute_Name (Operand), Name_Rounding,
!                                                          Name_Machine_Rounding,
!                                                          Name_Truncation)
              then
                 declare
                    Truncate : constant Boolean :=
--- 12672,12680 ----
                    or else (Is_Fixed_Point_Type (Target_Typ)
                              and then Conversion_OK (N)))
                and then Nkind (Operand) = N_Attribute_Reference
!               and then Attribute_Name (Operand) in Name_Rounding
!                                                  | Name_Machine_Rounding
!                                                  | Name_Truncation
              then
                 declare
                    Truncate : constant Boolean :=
*************** package body Sem_Res is
*** 12611,12616 ****
--- 12684,12713 ----
                      Relocate_Node (First (Expressions (Operand))));
                    Set_Float_Truncate (N, Truncate);
                 end;
+ 
+             --  Special processing for the conversion of an integer literal to
+             --  a dynamic type: we first convert the literal to the root type
+             --  and then convert the result to the target type, the goal being
+             --  to avoid doing range checks in universal integer.
+ 
+             elsif Is_Integer_Type (Target_Typ)
+               and then not Is_Generic_Type (Root_Type (Target_Typ))
+               and then Nkind (Operand) = N_Integer_Literal
+               and then Opnd_Typ = Universal_Integer
+             then
+                Convert_To_And_Rewrite (Root_Type (Target_Typ), Operand);
+                Analyze_And_Resolve (Operand);
+ 
+             --  If the expression is a conversion to universal integer of an
+             --  an expression with an integer type, then we can eliminate the
+             --  intermediate conversion to universal integer.
+ 
+             elsif Nkind (Operand) = N_Type_Conversion
+               and then Entity (Subtype_Mark (Operand)) = Universal_Integer
+               and then Is_Integer_Type (Etype (Expression (Operand)))
+             then
+                Rewrite (Operand, Relocate_Node (Expression (Operand)));
+                Analyze_And_Resolve (Operand);
              end if;
           end;
        end if;
*************** package body Sem_Res is
*** 12710,12716 ****
           --  When the context is a type conversion, issue the warning on the
           --  expression of the conversion because it is the actual operation.
  
!          if Nkind_In (N, N_Type_Conversion, N_Unchecked_Type_Conversion) then
              ErrN := Expression (N);
           else
              ErrN := N;
--- 12807,12813 ----
           --  When the context is a type conversion, issue the warning on the
           --  expression of the conversion because it is the actual operation.
  
!          if Nkind (N) in N_Type_Conversion | N_Unchecked_Type_Conversion then
              ErrN := Expression (N);
           else
              ErrN := N;
*************** package body Sem_Res is
*** 12757,12762 ****
--- 12854,12871 ----
        --  are not rechecked because type visbility may lead to spurious errors,
        --  but conversions in an actual for a formal object must be checked.
  
+       function Is_Discrim_Of_Bad_Access_Conversion_Argument
+         (Expr : Node_Id) return Boolean;
+       --  Implicit anonymous-to-named access type conversions are not allowed
+       --  if the "statically deeper than" relationship does not apply to the
+       --  type of the conversion operand. See RM 8.6(28.1) and AARM 8.6(28.d).
+       --  We deal with most such cases elsewhere so that we can emit more
+       --  specific error messages (e.g., if the operand is an access parameter
+       --  or a saooaaat (stand-alone object of an anonymous access type)), but
+       --  here is where we catch the case where the operand is an access
+       --  discriminant selected from a dereference of another such "bad"
+       --  conversion argument.
+ 
        function Valid_Tagged_Conversion
          (Target_Type : Entity_Id;
           Opnd_Type   : Entity_Id) return Boolean;
*************** package body Sem_Res is
*** 12859,12864 ****
--- 12968,13040 ----
           end if;
        end In_Instance_Code;
  
+       --------------------------------------------------
+       -- Is_Discrim_Of_Bad_Access_Conversion_Argument --
+       --------------------------------------------------
+ 
+       function Is_Discrim_Of_Bad_Access_Conversion_Argument
+         (Expr : Node_Id) return Boolean
+       is
+          Exp_Type : Entity_Id := Base_Type (Etype (Expr));
+          pragma Assert (Is_Access_Type (Exp_Type));
+ 
+          Associated_Node : Node_Id;
+          Deref_Prefix : Node_Id;
+       begin
+          if not Is_Anonymous_Access_Type (Exp_Type) then
+             return False;
+          end if;
+ 
+          pragma Assert (Is_Itype (Exp_Type));
+          Associated_Node := Associated_Node_For_Itype (Exp_Type);
+ 
+          if Nkind (Associated_Node) /= N_Discriminant_Specification then
+             return False; -- not the type of an access discriminant
+          end if;
+ 
+          --  return False if Expr not of form <prefix>.all.Some_Component
+ 
+          if (Nkind (Expr) /= N_Selected_Component)
+            or else (Nkind (Prefix (Expr)) /= N_Explicit_Dereference)
+          then
+             --  conditional expressions, declare expressions ???
+             return False;
+          end if;
+ 
+          Deref_Prefix := Prefix (Prefix (Expr));
+          Exp_Type := Base_Type (Etype (Deref_Prefix));
+ 
+          --  The "statically deeper relationship" does not apply
+          --  to generic formal access types, so a prefix of such
+          --  a type is a "bad" prefix.
+ 
+          if Is_Generic_Formal (Exp_Type) then
+             return True;
+ 
+          --  The "statically deeper relationship" does apply to
+          --  any other named access type.
+ 
+          elsif not Is_Anonymous_Access_Type (Exp_Type) then
+             return False;
+          end if;
+ 
+          pragma Assert (Is_Itype (Exp_Type));
+          Associated_Node := Associated_Node_For_Itype (Exp_Type);
+ 
+          --  The "statically deeper relationship" applies to some
+          --  anonymous access types and not to others. Return
+          --  True for the cases where it does not apply. Also check
+          --  recursively for the
+          --     <prefix>.all.Access_Discrim.all.Access_Discrim case,
+          --  where the correct result depends on <prefix>.
+ 
+          return Nkind (Associated_Node) in
+                   N_Procedure_Specification |  -- access parameter
+                   N_Function_Specification  |  -- access parameter
+                   N_Object_Declaration         -- saooaaat
+            or else Is_Discrim_Of_Bad_Access_Conversion_Argument (Deref_Prefix);
+       end Is_Discrim_Of_Bad_Access_Conversion_Argument;
+ 
        ----------------------------
        -- Valid_Array_Conversion --
        ----------------------------
*************** package body Sem_Res is
*** 12929,12937 ****
                 --  checks that must be applied to such conversions to prevent
                 --  out-of-scope references.
  
!             elsif Ekind_In
!                     (Target_Comp_Base, E_Anonymous_Access_Type,
!                                        E_Anonymous_Access_Subprogram_Type)
                and then Ekind (Opnd_Comp_Base) = Ekind (Target_Comp_Base)
                and then
                  Subtypes_Statically_Match (Target_Comp_Type, Opnd_Comp_Type)
--- 13105,13113 ----
                 --  checks that must be applied to such conversions to prevent
                 --  out-of-scope references.
  
!             elsif Ekind (Target_Comp_Base) in
!                     E_Anonymous_Access_Type
!                   | E_Anonymous_Access_Subprogram_Type
                and then Ekind (Opnd_Comp_Base) = Ekind (Target_Comp_Base)
                and then
                  Subtypes_Statically_Match (Target_Comp_Type, Opnd_Comp_Type)
*************** package body Sem_Res is
*** 13240,13247 ****
        --  interface type.
  
        elsif Is_Access_Type (Opnd_Type)
!         and then Ekind_In (Target_Type, E_General_Access_Type,
!                                         E_Anonymous_Access_Type)
          and then Is_Interface (Directly_Designated_Type (Target_Type))
        then
           --  Check the static accessibility rule of 4.6(17). Note that the
--- 13416,13423 ----
        --  interface type.
  
        elsif Is_Access_Type (Opnd_Type)
!         and then Ekind (Target_Type) in
!                    E_General_Access_Type | E_Anonymous_Access_Type
          and then Is_Interface (Directly_Designated_Type (Target_Type))
        then
           --  Check the static accessibility rule of 4.6(17). Note that the
*************** package body Sem_Res is
*** 13284,13295 ****
              then
                 --  When the operand is a selected access discriminant the check
                 --  needs to be made against the level of the object denoted by
!                --  the prefix of the selected name (Object_Access_Level handles
                 --  checking the prefix of the operand for this case).
  
                 if Nkind (Operand) = N_Selected_Component
!                  and then Object_Access_Level (Operand) >
!                    Deepest_Type_Access_Level (Target_Type)
                 then
                    --  In an instance, this is a run-time check, but one we know
                    --  will fail, so generate an appropriate warning. The raise
--- 13460,13472 ----
              then
                 --  When the operand is a selected access discriminant the check
                 --  needs to be made against the level of the object denoted by
!                --  the prefix of the selected name (Accessibility_Level handles
                 --  checking the prefix of the operand for this case).
  
                 if Nkind (Operand) = N_Selected_Component
!                  and then Static_Accessibility_Level
!                             (Operand, Zero_On_Dynamic_Level)
!                               > Deepest_Type_Access_Level (Target_Type)
                 then
                    --  In an instance, this is a run-time check, but one we know
                    --  will fail, so generate an appropriate warning. The raise
*************** package body Sem_Res is
*** 13321,13327 ****
                 if Is_Entity_Name (Operand)
                   and then not Is_Local_Anonymous_Access (Opnd_Type)
                   and then
!                    Ekind_In (Entity (Operand), E_In_Parameter, E_Constant)
                   and then Present (Discriminal_Link (Entity (Operand)))
                 then
                    Conversion_Error_N
--- 13498,13504 ----
                 if Is_Entity_Name (Operand)
                   and then not Is_Local_Anonymous_Access (Opnd_Type)
                   and then
!                    Ekind (Entity (Operand)) in E_In_Parameter | E_Constant
                   and then Present (Discriminal_Link (Entity (Operand)))
                 then
                    Conversion_Error_N
*************** package body Sem_Res is
*** 13336,13349 ****
  
        --  General and anonymous access types
  
!       elsif Ekind_In (Target_Type, E_General_Access_Type,
!                                    E_Anonymous_Access_Type)
            and then
              Conversion_Check
                (Is_Access_Type (Opnd_Type)
!                 and then not
!                   Ekind_In (Opnd_Type, E_Access_Subprogram_Type,
!                                        E_Access_Protected_Subprogram_Type),
                 "must be an access-to-object type")
        then
           if Is_Access_Constant (Opnd_Type)
--- 13513,13527 ----
  
        --  General and anonymous access types
  
!       elsif Ekind (Target_Type) in
!               E_General_Access_Type | E_Anonymous_Access_Type
            and then
              Conversion_Check
                (Is_Access_Type (Opnd_Type)
!                 and then
!                   Ekind (Opnd_Type) not in
!                     E_Access_Subprogram_Type |
!                     E_Access_Protected_Subprogram_Type,
                 "must be an access-to-object type")
        then
           if Is_Access_Constant (Opnd_Type)
*************** package body Sem_Res is
*** 13372,13382 ****
              --  rewritten. The Comes_From_Source test isn't sufficient because
              --  nodes in inlined calls to predefined library routines can have
              --  Comes_From_Source set to False. (Is there a better way to test
!             --  for implicit conversions???)
  
              if Ada_Version >= Ada_2012
                and then not Comes_From_Source (N)
                and then Is_Rewrite_Substitution (N)
                and then Ekind (Base_Type (Target_Type)) = E_General_Access_Type
                and then Ekind (Opnd_Type) = E_Anonymous_Access_Type
              then
--- 13550,13570 ----
              --  rewritten. The Comes_From_Source test isn't sufficient because
              --  nodes in inlined calls to predefined library routines can have
              --  Comes_From_Source set to False. (Is there a better way to test
!             --  for implicit conversions???).
!             --
!             --  Do not treat a rewritten 'Old attribute reference like other
!             --  rewrite substitutions. This makes a difference, for example,
!             --  in the case where we are generating the expansion of a
!             --  membership test of the form
!             --     Saooaaat'Old in Named_Access_Type
!             --  because in this case Valid_Conversion needs to return True
!             --  (otherwise the expansion will be False - see the call site
!             --  in exp_ch4.adb).
  
              if Ada_Version >= Ada_2012
                and then not Comes_From_Source (N)
                and then Is_Rewrite_Substitution (N)
+               and then not Is_Attribute_Old (Original_Node (N))
                and then Ekind (Base_Type (Target_Type)) = E_General_Access_Type
                and then Ekind (Opnd_Type) = E_Anonymous_Access_Type
              then
*************** package body Sem_Res is
*** 13395,13420 ****
                       return False;
  
                    --  Implicit conversions aren't allowed for anonymous access
!                   --  parameters. The "not Is_Local_Anonymous_Access_Type" test
!                   --  is done to exclude anonymous access results.
  
                    elsif not Is_Local_Anonymous_Access (Opnd_Type)
!                     and then Nkind_In (Associated_Node_For_Itype (Opnd_Type),
!                                        N_Function_Specification,
!                                        N_Procedure_Specification)
                    then
                       Conversion_Error_N
!                        ("implicit conversion of anonymous access formal "
                          & "not allowed", Operand);
                       return False;
  
!                   --  This is a case where there's an enclosing object whose
!                   --  to which the "statically deeper than" relationship does
!                   --  not apply (such as an access discriminant selected from
!                   --  a dereference of an access parameter).
  
!                   elsif Object_Access_Level (Operand)
!                           = Scope_Depth (Standard_Standard)
                    then
                       Conversion_Error_N
                         ("implicit conversion of anonymous access value "
--- 13583,13606 ----
                       return False;
  
                    --  Implicit conversions aren't allowed for anonymous access
!                   --  parameters. We exclude anonymous access results as well
!                   --  as universal_access "=".
  
                    elsif not Is_Local_Anonymous_Access (Opnd_Type)
!                     and then Nkind (Associated_Node_For_Itype (Opnd_Type)) in
!                                N_Function_Specification |
!                                N_Procedure_Specification
!                     and then Nkind (Parent (N)) not in N_Op_Eq | N_Op_Ne
                    then
                       Conversion_Error_N
!                        ("implicit conversion of anonymous access parameter "
                          & "not allowed", Operand);
                       return False;
  
!                   --  Detect access discriminant values that are illegal
!                   --  implicit anonymous-to-named access conversion operands.
  
!                   elsif Is_Discrim_Of_Bad_Access_Conversion_Argument (Operand)
                    then
                       Conversion_Error_N
                         ("implicit conversion of anonymous access value "
*************** package body Sem_Res is
*** 13426,13432 ****
                    --  implicit conversion is disallowed (by RM12-8.6(27.1/3)).
  
                    elsif Type_Access_Level (Opnd_Type) >
!                         Deepest_Type_Access_Level (Target_Type)
                    then
                       Conversion_Error_N
                         ("implicit conversion of anonymous access value "
--- 13612,13618 ----
                    --  implicit conversion is disallowed (by RM12-8.6(27.1/3)).
  
                    elsif Type_Access_Level (Opnd_Type) >
!                     Deepest_Type_Access_Level (Target_Type)
                    then
                       Conversion_Error_N
                         ("implicit conversion of anonymous access value "
*************** package body Sem_Res is
*** 13435,13442 ****
--- 13621,13646 ----
                    end if;
                 end if;
  
+             --  Check if the operand is deeper than the target type, taking
+             --  care to avoid the case where we are converting a result of a
+             --  function returning an anonymous access type since the "master
+             --  of the call" would be target type of the conversion unless
+             --  the target type is anonymous access as well - see RM 3.10.2
+             --  (10.3/3).
+ 
              elsif Type_Access_Level (Opnd_Type) >
                      Deepest_Type_Access_Level (Target_Type)
+               and then (Nkind (Associated_Node_For_Itype (Opnd_Type)) /=
+                          N_Function_Specification
+                         or else Ekind (Target_Type) in
+                                   Anonymous_Access_Kind)
+ 
+               --  Check we are not in a return value ???
+ 
+               and then (not In_Return_Value (N)
+                          or else
+                            Nkind (Associated_Node_For_Itype (Target_Type))
+                              = N_Component_Declaration)
              then
                 --  In an instance, this is a run-time check, but one we know
                 --  will fail, so generate an appropriate warning. The raise
*************** package body Sem_Res is
*** 13471,13482 ****
              then
                 --  When the operand is a selected access discriminant the check
                 --  needs to be made against the level of the object denoted by
!                --  the prefix of the selected name (Object_Access_Level handles
                 --  checking the prefix of the operand for this case).
  
                 if Nkind (Operand) = N_Selected_Component
!                  and then Object_Access_Level (Operand) >
!                           Deepest_Type_Access_Level (Target_Type)
                 then
                    --  In an instance, this is a run-time check, but one we know
                    --  will fail, so generate an appropriate warning. The raise
--- 13675,13687 ----
              then
                 --  When the operand is a selected access discriminant the check
                 --  needs to be made against the level of the object denoted by
!                --  the prefix of the selected name (Accessibility_Level handles
                 --  checking the prefix of the operand for this case).
  
                 if Nkind (Operand) = N_Selected_Component
!                  and then Static_Accessibility_Level
!                             (Operand, Zero_On_Dynamic_Level)
!                               > Deepest_Type_Access_Level (Target_Type)
                 then
                    --  In an instance, this is a run-time check, but one we know
                    --  will fail, so generate an appropriate warning. The raise
*************** package body Sem_Res is
*** 13507,13513 ****
  
                 if Is_Entity_Name (Operand)
                   and then
!                    Ekind_In (Entity (Operand), E_In_Parameter, E_Constant)
                   and then Present (Discriminal_Link (Entity (Operand)))
                 then
                    Conversion_Error_N
--- 13712,13718 ----
  
                 if Is_Entity_Name (Operand)
                   and then
!                    Ekind (Entity (Operand)) in E_In_Parameter | E_Constant
                   and then Present (Discriminal_Link (Entity (Operand)))
                 then
                    Conversion_Error_N
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_res.ads gcc-11.1.0/gcc/ada/sem_res.ads
*** gcc-10.3.0/gcc/ada/sem_res.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_res.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_scil.adb gcc-11.1.0/gcc/ada/sem_scil.adb
*** gcc-10.3.0/gcc/ada/sem_scil.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_scil.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_SCIL is
*** 86,93 ****
              --  object or parameter declaration. Interface types are still
              --  unsupported.
  
!             elsif Nkind_In (Ctrl_Tag, N_Object_Declaration,
!                                       N_Parameter_Specification)
              then
                 Ctrl_Typ := Etype (Defining_Identifier (Ctrl_Tag));
  
--- 86,93 ----
              --  object or parameter declaration. Interface types are still
              --  unsupported.
  
!             elsif Nkind (Ctrl_Tag) in
!                     N_Object_Declaration | N_Parameter_Specification
              then
                 Ctrl_Typ := Etype (Defining_Identifier (Ctrl_Tag));
  
*************** package body Sem_SCIL is
*** 132,141 ****
              --  Check contents of the boolean expression associated with the
              --  membership test.
  
!             pragma Assert (Nkind_In (N, N_Identifier,
!                                         N_And_Then,
!                                         N_Or_Else,
!                                         N_Expression_With_Actions)
                and then Etype (N) = Standard_Boolean);
  
              --  Check the entity identifier of the associated tagged type (that
--- 132,141 ----
              --  Check contents of the boolean expression associated with the
              --  membership test.
  
!             pragma Assert
!               (Nkind (N) in
!                  N_Identifier | N_And_Then | N_Or_Else |
!                  N_Expression_With_Actions | N_Function_Call
                and then Etype (N) = Standard_Boolean);
  
              --  Check the entity identifier of the associated tagged type (that
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_scil.ads gcc-11.1.0/gcc/ada/sem_scil.ads
*** gcc-10.3.0/gcc/ada/sem_scil.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_scil.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_smem.adb gcc-11.1.0/gcc/ada/sem_smem.adb
*** gcc-10.3.0/gcc/ada/sem_smem.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_smem.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Smem is
*** 126,132 ****
                 if Is_Access_Type (Etype (C)) then
                    return True;
                 else
!                   C := Next_Discriminant (C);
                 end if;
              end loop;
           end if;
--- 126,132 ----
                 if Is_Access_Type (Etype (C)) then
                    return True;
                 else
!                   Next_Discriminant (C);
                 end if;
              end loop;
           end if;
*************** package body Sem_Smem is
*** 145,151 ****
              then
                 return True;
              else
!                C := Next_Component (C);
              end if;
           end loop;
  
--- 145,151 ----
              then
                 return True;
              else
!                Next_Component (C);
              end if;
           end loop;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_smem.ads gcc-11.1.0/gcc/ada/sem_smem.ads
*** gcc-10.3.0/gcc/ada/sem_smem.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_smem.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_type.adb gcc-11.1.0/gcc/ada/sem_type.adb
*** gcc-10.3.0/gcc/ada/sem_type.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_type.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Aspects;  use Aspects;
  with Atree;    use Atree;
  with Alloc;
  with Debug;    use Debug;
*************** package body Sem_Type is
*** 325,332 ****
              return False;
  
           elsif Nkind (N) in N_Binary_Op then
!             return Present (Universal_Interpretation (Left_Opnd (N)))
!               and then Present (Universal_Interpretation (Right_Opnd (N)));
  
           elsif Nkind (N) in N_Unary_Op then
              return Present (Universal_Interpretation (Right_Opnd (N)));
--- 326,344 ----
              return False;
  
           elsif Nkind (N) in N_Binary_Op then
!             if Present (Universal_Interpretation (Left_Opnd (N)))
!               and then Present (Universal_Interpretation (Right_Opnd (N)))
!             then
!                return True;
!             elsif Nkind (N) in N_Op_Eq | N_Op_Ne
!               and then
!                 (Is_Anonymous_Access_Type (Etype (Left_Opnd (N)))
!                   or else Is_Anonymous_Access_Type (Etype (Right_Opnd (N))))
!             then
!                return True;
!             else
!                return False;
!             end if;
  
           elsif Nkind (N) in N_Unary_Op then
              return Present (Universal_Interpretation (Right_Opnd (N)));
*************** package body Sem_Type is
*** 375,381 ****
             or else Nkind (N) = N_Expanded_Name
             or else (Nkind (N) in N_Op and then E = Entity (N))
             or else (In_Instance or else In_Inlined_Body)
!            or else Ekind (Vis_Type) = E_Anonymous_Access_Type
           then
              null;
  
--- 387,393 ----
             or else Nkind (N) = N_Expanded_Name
             or else (Nkind (N) in N_Op and then E = Entity (N))
             or else (In_Instance or else In_Inlined_Body)
!            or else Is_Anonymous_Access_Type (Vis_Type)
           then
              null;
  
*************** package body Sem_Type is
*** 958,989 ****
              --  Note: test for presence of E is defense against previous error.
  
              if No (E) then
! 
!                --  If expansion is disabled the Corresponding_Record_Type may
!                --  not be available yet, so use the interface list in the
!                --  declaration directly.
! 
!                if ASIS_Mode
!                  and then Nkind (Parent (BT2)) = N_Protected_Type_Declaration
!                  and then Present (Interface_List (Parent (BT2)))
!                then
!                   declare
!                      Intf : Node_Id := First (Interface_List (Parent (BT2)));
!                   begin
!                      while Present (Intf) loop
!                         if Is_Ancestor (Etype (T1), Entity (Intf)) then
!                            return True;
!                         else
!                            Next (Intf);
!                         end if;
!                      end loop;
!                   end;
! 
!                   return False;
! 
!                else
!                   Check_Error_Detected;
!                end if;
  
              --  Here we have a corresponding record type
  
--- 970,976 ----
              --  Note: test for presence of E is defense against previous error.
  
              if No (E) then
!                Check_Error_Detected;
  
              --  Here we have a corresponding record type
  
*************** package body Sem_Type is
*** 1033,1038 ****
--- 1020,1034 ----
        elsif T2 = Any_Composite and then Is_Aggregate_Type (T1) then
           return True;
  
+       --  In Ada_2020, an aggregate is compatible with the type that
+       --  as the ccorrespoding aspect.
+ 
+       elsif Ada_Version >= Ada_2020
+         and then T2 = Any_Composite
+         and then Present (Find_Aspect (T1, Aspect_Aggregate))
+       then
+          return True;
+ 
        --  If the expected type is an anonymous access, the designated type must
        --  cover that of the expression. Use the base type for this check: even
        --  though access subtypes are rare in sources, they are generated for
*************** package body Sem_Type is
*** 1046,1068 ****
  
        --  Ada 2012 (AI05-0149): Allow an anonymous access type in the context
        --  of a named general access type. An implicit conversion will be
!       --  applied. For the resolution, one designated type must cover the
!       --  other.
  
        elsif Ada_Version >= Ada_2012
          and then Ekind (BT1) = E_General_Access_Type
          and then Ekind (BT2) = E_Anonymous_Access_Type
!         and then (Covers (Designated_Type (T1), Designated_Type (T2))
!                     or else
!                   Covers (Designated_Type (T2), Designated_Type (T1)))
        then
           return True;
  
        --  An Access_To_Subprogram is compatible with itself, or with an
        --  anonymous type created for an attribute reference Access.
  
!       elsif Ekind_In (BT1, E_Access_Subprogram_Type,
!                            E_Access_Protected_Subprogram_Type)
          and then Is_Access_Type (T2)
          and then (not Comes_From_Source (T1)
                     or else not Comes_From_Source (T2))
--- 1042,1066 ----
  
        --  Ada 2012 (AI05-0149): Allow an anonymous access type in the context
        --  of a named general access type. An implicit conversion will be
!       --  applied. For the resolution, the designated types must match if
!       --  untagged; further, if the designated type is tagged, the designated
!       --  type of the anonymous access type shall be covered by the designated
!       --  type of the named access type.
  
        elsif Ada_Version >= Ada_2012
          and then Ekind (BT1) = E_General_Access_Type
          and then Ekind (BT2) = E_Anonymous_Access_Type
!         and then Covers (Designated_Type (T1), Designated_Type (T2))
!         and then (Is_Class_Wide_Type (Designated_Type (T1)) >=
!                   Is_Class_Wide_Type (Designated_Type (T2)))
        then
           return True;
  
        --  An Access_To_Subprogram is compatible with itself, or with an
        --  anonymous type created for an attribute reference Access.
  
!       elsif Ekind (BT1) in E_Access_Subprogram_Type
!                          | E_Access_Protected_Subprogram_Type
          and then Is_Access_Type (T2)
          and then (not Comes_From_Source (T1)
                     or else not Comes_From_Source (T2))
*************** package body Sem_Type is
*** 1077,1084 ****
        --  with itself, or with an anonymous type created for an attribute
        --  reference Access.
  
!       elsif Ekind_In (BT1, E_Anonymous_Access_Subprogram_Type,
!                            E_Anonymous_Access_Protected_Subprogram_Type)
          and then Is_Access_Type (T2)
          and then (not Comes_From_Source (T1)
                     or else not Comes_From_Source (T2))
--- 1075,1082 ----
        --  with itself, or with an anonymous type created for an attribute
        --  reference Access.
  
!       elsif Ekind (BT1) in E_Anonymous_Access_Subprogram_Type
!                          | E_Anonymous_Access_Protected_Subprogram_Type
          and then Is_Access_Type (T2)
          and then (not Comes_From_Source (T1)
                     or else not Comes_From_Source (T2))
*************** package body Sem_Type is
*** 1128,1134 ****
        --  imposed by context.
  
        elsif Ekind (T2) = E_Access_Attribute_Type
!         and then Ekind_In (BT1, E_General_Access_Type, E_Access_Type)
          and then Covers (Designated_Type (T1), Designated_Type (T2))
        then
           --  If the target type is a RACW type while the source is an access
--- 1126,1132 ----
        --  imposed by context.
  
        elsif Ekind (T2) = E_Access_Attribute_Type
!         and then Ekind (BT1) in E_General_Access_Type | E_Access_Type
          and then Covers (Designated_Type (T1), Designated_Type (T2))
        then
           --  If the target type is a RACW type while the source is an access
*************** package body Sem_Type is
*** 1169,1184 ****
        --  useless unchecked conversions, and since this can only arise in
        --  (known correct) expanded code, no harm is done.
  
!       elsif Is_Array_Type (T2)
!         and then Is_Packed (T2)
          and then T1 = Packed_Array_Impl_Type (T2)
        then
           return True;
  
        --  Similarly an array type covers its corresponding packed array type
  
!       elsif Is_Array_Type (T1)
!         and then Is_Packed (T1)
          and then T2 = Packed_Array_Impl_Type (T1)
        then
           return True;
--- 1167,1180 ----
        --  useless unchecked conversions, and since this can only arise in
        --  (known correct) expanded code, no harm is done.
  
!       elsif Is_Packed_Array (T2)
          and then T1 = Packed_Array_Impl_Type (T2)
        then
           return True;
  
        --  Similarly an array type covers its corresponding packed array type
  
!       elsif Is_Packed_Array (T1)
          and then T2 = Packed_Array_Impl_Type (T1)
        then
           return True;
*************** package body Sem_Type is
*** 1264,1271 ****
        --                                   Formal_Obj => Actual_Obj);
  
        elsif Ada_Version >= Ada_2005
!         and then Ekind (T1) = E_Anonymous_Access_Type
!         and then Ekind (T2) = E_Anonymous_Access_Type
          and then Is_Generic_Type (Directly_Designated_Type (T1))
          and then Get_Instance_Of (Directly_Designated_Type (T1)) =
                                                 Directly_Designated_Type (T2)
--- 1260,1267 ----
        --                                   Formal_Obj => Actual_Obj);
  
        elsif Ada_Version >= Ada_2005
!         and then Is_Anonymous_Access_Type (T1)
!         and then Is_Anonymous_Access_Type (T2)
          and then Is_Generic_Type (Directly_Designated_Type (T1))
          and then Get_Instance_Of (Directly_Designated_Type (T1)) =
                                                 Directly_Designated_Type (T2)
*************** package body Sem_Type is
*** 1351,1356 ****
--- 1347,1359 ----
        --  for special handling of expressions with universal operands, see
        --  comments to Has_Abstract_Interpretation below.
  
+       function Is_User_Defined_Anonymous_Access_Equality
+         (User_Subp, Predef_Subp : Entity_Id) return Boolean;
+       --  Check for Ada 2005, AI-020: If the context involves an anonymous
+       --  access operand, recognize a user-defined equality (User_Subp) with
+       --  the proper signature, declared in the same declarative list as the
+       --  type and not hiding a predefined equality Predef_Subp.
+ 
        ---------------------------
        -- Inherited_From_Actual --
        ---------------------------
*************** package body Sem_Type is
*** 1383,1389 ****
        begin
           return In_Same_List (Parent (Typ), Op_Decl)
             or else
!              (Ekind_In (Scop, E_Package, E_Generic_Package)
                 and then List_Containing (Op_Decl) =
                                Visible_Declarations (Parent (Scop))
                 and then List_Containing (Parent (Typ)) =
--- 1386,1392 ----
        begin
           return In_Same_List (Parent (Typ), Op_Decl)
             or else
!              (Is_Package_Or_Generic_Package (Scop)
                 and then List_Containing (Op_Decl) =
                                Visible_Declarations (Parent (Scop))
                 and then List_Containing (Parent (Typ)) =
*************** package body Sem_Type is
*** 1621,1630 ****
                   and then Is_Overloaded (Act1)
                   and then
                     (Nkind (Act1) in N_Unary_Op
!                      or else Nkind_In (Left_Opnd (Act1), N_Integer_Literal,
!                                                          N_Real_Literal))
!                  and then Nkind_In (Right_Opnd (Act1), N_Integer_Literal,
!                                                        N_Real_Literal)
                   and then Has_Compatible_Type (Act1, Standard_Boolean)
                   and then Etype (F1) = Standard_Boolean
                 then
--- 1624,1633 ----
                   and then Is_Overloaded (Act1)
                   and then
                     (Nkind (Act1) in N_Unary_Op
!                      or else Nkind (Left_Opnd (Act1)) in
!                                N_Integer_Literal | N_Real_Literal)
!                  and then Nkind (Right_Opnd (Act1)) in
!                             N_Integer_Literal | N_Real_Literal
                   and then Has_Compatible_Type (Act1, Standard_Boolean)
                   and then Etype (F1) = Standard_Boolean
                 then
*************** package body Sem_Type is
*** 1649,1656 ****
                    elsif Present (Act2)
                      and then Nkind (Act2) in N_Op
                      and then Is_Overloaded (Act2)
!                     and then Nkind_In (Right_Opnd (Act2), N_Integer_Literal,
!                                                           N_Real_Literal)
                      and then Has_Compatible_Type (Act2, Standard_Boolean)
                    then
                       --  The preference rule on the first actual is not
--- 1652,1659 ----
                    elsif Present (Act2)
                      and then Nkind (Act2) in N_Op
                      and then Is_Overloaded (Act2)
!                     and then Nkind (Right_Opnd (Act2)) in
!                                N_Integer_Literal | N_Real_Literal
                      and then Has_Compatible_Type (Act2, Standard_Boolean)
                    then
                       --  The preference rule on the first actual is not
*************** package body Sem_Type is
*** 1756,1761 ****
--- 1759,1795 ----
           end if;
        end Standard_Operator;
  
+       -----------------------------------------------
+       -- Is_User_Defined_Anonymous_Access_Equality --
+       -----------------------------------------------
+ 
+       function Is_User_Defined_Anonymous_Access_Equality
+         (User_Subp, Predef_Subp : Entity_Id) return Boolean is
+       begin
+          return Present (User_Subp)
+ 
+          --  Check for Ada 2005 and use of anonymous access
+ 
+            and then Ada_Version >= Ada_2005
+            and then Etype (User_Subp) = Standard_Boolean
+            and then Is_Anonymous_Access_Type (Operand_Type)
+ 
+          --  This check is only relevant if User_Subp is visible and not in
+          --  an instance
+ 
+            and then (In_Open_Scopes (Scope (User_Subp))
+                       or else Is_Potentially_Use_Visible (User_Subp))
+            and then not In_Instance
+            and then not Hides_Op (User_Subp, Predef_Subp)
+ 
+          --  Is User_Subp declared in the same declarative list as the type?
+ 
+            and then
+              In_Same_Declaration_List
+                (Designated_Type (Operand_Type),
+                 Unit_Declaration_Node (User_Subp));
+       end Is_User_Defined_Anonymous_Access_Equality;
+ 
     --  Start of processing for Disambiguate
  
     begin
*************** package body Sem_Type is
*** 1869,1885 ****
                    Arg2 := Next_Actual (Arg1);
                 end if;
  
!                if Present (Arg2)
!                  and then Present (Universal_Interpretation (Arg1))
!                  and then Universal_Interpretation (Arg2) =
!                           Universal_Interpretation (Arg1)
!                then
!                   Get_First_Interp (N, I, It);
!                   while Scope (It.Nam) /= Standard_Standard loop
!                      Get_Next_Interp (I, It);
!                   end loop;
  
!                   return It;
                 end if;
              end;
           end if;
--- 1903,1943 ----
                    Arg2 := Next_Actual (Arg1);
                 end if;
  
!                if Present (Arg2) then
!                   if Ekind (Nam1) = E_Operator then
!                      Predef_Subp := Nam1;
!                      User_Subp   := Nam2;
!                   elsif Ekind (Nam2) = E_Operator then
!                      Predef_Subp := Nam2;
!                      User_Subp   := Nam1;
!                   else
!                      Predef_Subp := Empty;
!                      User_Subp   := Empty;
!                   end if;
  
!                   --  Take into account universal interpretation as well as
!                   --  universal_access equality, as long as AI05-0020 does not
!                   --  trigger.
! 
!                   if (Present (Universal_Interpretation (Arg1))
!                        and then Universal_Interpretation (Arg2) =
!                                 Universal_Interpretation (Arg1))
!                     or else
!                       (Nkind (N) in N_Op_Eq | N_Op_Ne
!                         and then (Is_Anonymous_Access_Type (Etype (Arg1))
!                                     or else
!                                   Is_Anonymous_Access_Type (Etype (Arg2)))
!                         and then not
!                           Is_User_Defined_Anonymous_Access_Equality
!                             (User_Subp, Predef_Subp))
!                   then
!                      Get_First_Interp (N, I, It);
!                      while Scope (It.Nam) /= Standard_Standard loop
!                         Get_Next_Interp (I, It);
!                      end loop;
! 
!                      return It;
!                   end if;
                 end if;
              end;
           end if;
*************** package body Sem_Type is
*** 1910,1918 ****
        elsif Nkind (Parent (N)) = N_Object_Renaming_Declaration
          and then Present (Access_Definition (Parent (N)))
        then
!          if Ekind_In (It1.Typ, E_Anonymous_Access_Type,
!                                E_Anonymous_Access_Subprogram_Type)
!          then
              if Ekind (It2.Typ) = Ekind (It1.Typ) then
  
                 --  True ambiguity
--- 1968,1974 ----
        elsif Nkind (Parent (N)) = N_Object_Renaming_Declaration
          and then Present (Access_Definition (Parent (N)))
        then
!          if Is_Anonymous_Access_Type (It1.Typ) then
              if Ekind (It2.Typ) = Ekind (It1.Typ) then
  
                 --  True ambiguity
*************** package body Sem_Type is
*** 1923,1931 ****
                 return It1;
              end if;
  
!          elsif Ekind_In (It2.Typ, E_Anonymous_Access_Type,
!                                   E_Anonymous_Access_Subprogram_Type)
!          then
              return It2;
  
           --  No legal interpretation
--- 1979,1985 ----
                 return It1;
              end if;
  
!          elsif Is_Anonymous_Access_Type (It2.Typ) then
              return It2;
  
           --  No legal interpretation
*************** package body Sem_Type is
*** 2120,2126 ****
             and then not In_Instance
           then
              if Is_Fixed_Point_Type (Typ)
!               and then Nam_In (Chars (Nam1), Name_Op_Multiply, Name_Op_Divide)
                and then
                  (Ada_Version = Ada_83
                    or else (Ada_Version >= Ada_2012
--- 2174,2180 ----
             and then not In_Instance
           then
              if Is_Fixed_Point_Type (Typ)
!               and then Chars (Nam1) in Name_Op_Multiply | Name_Op_Divide
                and then
                  (Ada_Version = Ada_83
                    or else (Ada_Version >= Ada_2012
*************** package body Sem_Type is
*** 2134,2153 ****
                    return It2;
                 end if;
  
!             --  Ada 2005, AI-420: preference rule for "=" on Universal_Access
!             --  states that the operator defined in Standard is not available
!             --  if there is a user-defined equality with the proper signature,
!             --  declared in the same declarative list as the type. The node
!             --  may be an operator or a function call.
  
!             elsif Nam_In (Chars (Nam1), Name_Op_Eq, Name_Op_Ne)
!               and then Ada_Version >= Ada_2005
!               and then Etype (User_Subp) = Standard_Boolean
!               and then Ekind (Operand_Type) = E_Anonymous_Access_Type
!               and then
!                 In_Same_Declaration_List
!                   (Designated_Type (Operand_Type),
!                    Unit_Declaration_Node (User_Subp))
              then
                 if It2.Nam = Predef_Subp then
                    return It1;
--- 2188,2198 ----
                    return It2;
                 end if;
  
!             --  Check for AI05-020
  
!             elsif Chars (Nam1) in Name_Op_Eq | Name_Op_Ne
!               and then Is_User_Defined_Anonymous_Access_Equality
!                          (User_Subp, Predef_Subp)
              then
                 if It2.Nam = Predef_Subp then
                    return It1;
*************** package body Sem_Type is
*** 2274,2308 ****
        elsif T = Universal_Fixed then
           return Etype (R);
  
-       --  Ada 2005 (AI-230): Support the following operators:
- 
-       --    function "="  (L, R : universal_access) return Boolean;
-       --    function "/=" (L, R : universal_access) return Boolean;
- 
-       --  Pool specific access types (E_Access_Type) are not covered by these
-       --  operators because of the legality rule of 4.5.2(9.2): "The operands
-       --  of the equality operators for universal_access shall be convertible
-       --  to one another (see 4.6)". For example, considering the type decla-
-       --  ration "type P is access Integer" and an anonymous access to Integer,
-       --  P is convertible to "access Integer" by 4.6 (24.11-24.15), but there
-       --  is no rule in 4.6 that allows "access Integer" to be converted to P.
-       --  Note that this does not preclude one operand to be a pool-specific
-       --  access type, as a previous version of this code enforced.
- 
-       elsif Ada_Version >= Ada_2005
-         and then Ekind_In (Etype (L), E_Anonymous_Access_Type,
-                                       E_Anonymous_Access_Subprogram_Type)
-         and then Is_Access_Type (Etype (R))
-       then
-          return Etype (L);
- 
-       elsif Ada_Version >= Ada_2005
-         and then Ekind_In (Etype (R), E_Anonymous_Access_Type,
-                                       E_Anonymous_Access_Subprogram_Type)
-         and then Is_Access_Type (Etype (L))
-       then
-          return Etype (R);
- 
        --  If one operand is a raise_expression, use type of other operand
  
        elsif Nkind (L) = N_Raise_Expression then
--- 2319,2324 ----
*************** package body Sem_Type is
*** 2450,2456 ****
             or else
               (not Is_Tagged_Type (Typ)
                 and then Ekind (Typ) /= E_Anonymous_Access_Type
!                and then Covers (Etype (N), Typ));
  
        --  Overloaded case
  
--- 2466,2484 ----
             or else
               (not Is_Tagged_Type (Typ)
                 and then Ekind (Typ) /= E_Anonymous_Access_Type
!                and then Covers (Etype (N), Typ))
! 
!            or else
!              (Nkind (N) = N_Integer_Literal
!                and then Present (Find_Aspect (Typ, Aspect_Integer_Literal)))
! 
!            or else
!              (Nkind (N) = N_Real_Literal
!                and then Present (Find_Aspect (Typ, Aspect_Real_Literal)))
! 
!            or else
!              (Nkind (N) = N_String_Literal
!                and then Present (Find_Aspect (Typ, Aspect_String_Literal)));
  
        --  Overloaded case
  
*************** package body Sem_Type is
*** 3148,3154 ****
        elsif Num = 1 then
           T1 := Etype (New_First_F);
  
!          if Nam_In (Op_Name, Name_Op_Subtract, Name_Op_Add, Name_Op_Abs) then
              return Base_Type (T1) = Base_Type (T)
                and then Is_Numeric_Type (T);
  
--- 3176,3182 ----
        elsif Num = 1 then
           T1 := Etype (New_First_F);
  
!          if Op_Name in Name_Op_Subtract | Name_Op_Add | Name_Op_Abs then
              return Base_Type (T1) = Base_Type (T)
                and then Is_Numeric_Type (T);
  
*************** package body Sem_Type is
*** 3166,3189 ****
           T1 := Etype (New_First_F);
           T2 := Etype (Next_Formal (New_First_F));
  
!          if Nam_In (Op_Name, Name_Op_And, Name_Op_Or, Name_Op_Xor) then
              return Base_Type (T1) = Base_Type (T2)
                and then Base_Type (T1) = Base_Type (T)
                and then Valid_Boolean_Arg (Base_Type (T));
  
!          elsif Nam_In (Op_Name, Name_Op_Eq, Name_Op_Ne) then
              return Base_Type (T1) = Base_Type (T2)
                and then not Is_Limited_Type (T1)
                and then Is_Boolean_Type (T);
  
!          elsif Nam_In (Op_Name, Name_Op_Lt, Name_Op_Le,
!                                 Name_Op_Gt, Name_Op_Ge)
           then
              return Base_Type (T1) = Base_Type (T2)
                and then Valid_Comparison_Arg (T1)
                and then Is_Boolean_Type (T);
  
!          elsif Nam_In (Op_Name, Name_Op_Add, Name_Op_Subtract) then
              return Base_Type (T1) = Base_Type (T2)
                and then Base_Type (T1) = Base_Type (T)
                and then Is_Numeric_Type (T);
--- 3194,3216 ----
           T1 := Etype (New_First_F);
           T2 := Etype (Next_Formal (New_First_F));
  
!          if Op_Name in Name_Op_And | Name_Op_Or | Name_Op_Xor then
              return Base_Type (T1) = Base_Type (T2)
                and then Base_Type (T1) = Base_Type (T)
                and then Valid_Boolean_Arg (Base_Type (T));
  
!          elsif Op_Name in Name_Op_Eq | Name_Op_Ne then
              return Base_Type (T1) = Base_Type (T2)
                and then not Is_Limited_Type (T1)
                and then Is_Boolean_Type (T);
  
!          elsif Op_Name in Name_Op_Lt | Name_Op_Le | Name_Op_Gt | Name_Op_Ge
           then
              return Base_Type (T1) = Base_Type (T2)
                and then Valid_Comparison_Arg (T1)
                and then Is_Boolean_Type (T);
  
!          elsif Op_Name in Name_Op_Add | Name_Op_Subtract then
              return Base_Type (T1) = Base_Type (T2)
                and then Base_Type (T1) = Base_Type (T)
                and then Is_Numeric_Type (T);
*************** package body Sem_Type is
*** 3236,3242 ****
                          and then Is_Floating_Point_Type (T2)
                          and then Base_Type (T2) = Base_Type (T));
  
!          elsif Nam_In (Op_Name, Name_Op_Mod, Name_Op_Rem) then
              return Base_Type (T1) = Base_Type (T2)
                and then Base_Type (T1) = Base_Type (T)
                and then Is_Integer_Type (T);
--- 3263,3269 ----
                          and then Is_Floating_Point_Type (T2)
                          and then Base_Type (T2) = Base_Type (T));
  
!          elsif Op_Name in Name_Op_Mod | Name_Op_Rem then
              return Base_Type (T1) = Base_Type (T2)
                and then Base_Type (T1) = Base_Type (T)
                and then Is_Integer_Type (T);
*************** package body Sem_Type is
*** 3448,3486 ****
        then
           return T2;
  
!       elsif Ekind_In (B1, E_Access_Subprogram_Type,
!                           E_Access_Protected_Subprogram_Type)
          and then Ekind (Designated_Type (B1)) /= E_Subprogram_Type
          and then Is_Access_Type (T2)
        then
           return T2;
  
!       elsif Ekind_In (B2, E_Access_Subprogram_Type,
!                           E_Access_Protected_Subprogram_Type)
          and then Ekind (Designated_Type (B2)) /= E_Subprogram_Type
          and then Is_Access_Type (T1)
        then
           return T1;
  
!       elsif Ekind_In (T1, E_Allocator_Type,
!                           E_Access_Attribute_Type,
!                           E_Anonymous_Access_Type)
          and then Is_Access_Type (T2)
        then
           return T2;
  
!       elsif Ekind_In (T2, E_Allocator_Type,
!                           E_Access_Attribute_Type,
!                           E_Anonymous_Access_Type)
          and then Is_Access_Type (T1)
        then
           return T1;
  
!       --  If none of the above cases applies, types are not compatible
  
!       else
!          return Any_Type;
        end if;
     end Specific_Type;
  
     ---------------------
--- 3475,3553 ----
        then
           return T2;
  
!       elsif Is_Access_Type (T1)
!         and then Is_Access_Type (T2)
!         and then Is_Class_Wide_Type (Designated_Type (T1))
!         and then not Is_Class_Wide_Type (Designated_Type (T2))
!         and then
!           Is_Ancestor (Root_Type (Designated_Type (T1)), Designated_Type (T2))
!       then
!          return T1;
! 
!       elsif Is_Access_Type (T1)
!         and then Is_Access_Type (T2)
!         and then Is_Class_Wide_Type (Designated_Type (T2))
!         and then not Is_Class_Wide_Type (Designated_Type (T1))
!         and then
!           Is_Ancestor (Root_Type (Designated_Type (T2)), Designated_Type (T1))
!       then
!          return T2;
! 
!       elsif Ekind (B1) in E_Access_Subprogram_Type
!                         | E_Access_Protected_Subprogram_Type
          and then Ekind (Designated_Type (B1)) /= E_Subprogram_Type
          and then Is_Access_Type (T2)
        then
           return T2;
  
!       elsif Ekind (B2) in E_Access_Subprogram_Type
!                         | E_Access_Protected_Subprogram_Type
          and then Ekind (Designated_Type (B2)) /= E_Subprogram_Type
          and then Is_Access_Type (T1)
        then
           return T1;
  
!       elsif Ekind (T1) in E_Allocator_Type | E_Access_Attribute_Type
          and then Is_Access_Type (T2)
        then
           return T2;
  
!       elsif Ekind (T2) in E_Allocator_Type | E_Access_Attribute_Type
          and then Is_Access_Type (T1)
        then
           return T1;
  
!       --  Ada 2005 (AI-230): Support the following operators:
  
!       --    function "="  (L, R : universal_access) return Boolean;
!       --    function "/=" (L, R : universal_access) return Boolean;
! 
!       --  Pool-specific access types (E_Access_Type) are not covered by these
!       --  operators because of the legality rule of 4.5.2(9.2): "The operands
!       --  of the equality operators for universal_access shall be convertible
!       --  to one another (see 4.6)". For example, considering the type decla-
!       --  ration "type P is access Integer" and an anonymous access to Integer,
!       --  P is convertible to "access Integer" by 4.6 (24.11-24.15), but there
!       --  is no rule in 4.6 that allows "access Integer" to be converted to P.
!       --  Note that this does not preclude one operand to be a pool-specific
!       --  access type, as a previous version of this code enforced.
! 
!       elsif Ada_Version >= Ada_2005 then
!          if Is_Anonymous_Access_Type (T1)
!            and then Is_Access_Type (T2)
!          then
!             return T1;
! 
!          elsif Is_Anonymous_Access_Type (T2)
!            and then Is_Access_Type (T1)
!          then
!             return T2;
!          end if;
        end if;
+ 
+       --  If none of the above cases applies, types are not compatible
+ 
+       return Any_Type;
     end Specific_Type;
  
     ---------------------
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_type.ads gcc-11.1.0/gcc/ada/sem_type.ads
*** gcc-10.3.0/gcc/ada/sem_type.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_type.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Type is
*** 196,202 ****
     --  a compatible one.
  
     function Hides_Op (F : Entity_Id; Op : Entity_Id) return Boolean;
!    --  A user-defined function hides a predefined operator if it is matches the
     --  signature of the operator, and is declared in an open scope, or in the
     --  scope of the result type.
  
--- 196,202 ----
     --  a compatible one.
  
     function Hides_Op (F : Entity_Id; Op : Entity_Id) return Boolean;
!    --  A user-defined function hides a predefined operator if it matches the
     --  signature of the operator, and is declared in an open scope, or in the
     --  scope of the result type.
  
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_util.adb gcc-11.1.0/gcc/ada/sem_util.adb
*** gcc-10.3.0/gcc/ada/sem_util.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_util.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,41 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with Treepr; -- ???For debugging code below
- 
- with Aspects;  use Aspects;
  with Casing;   use Casing;
  with Checks;   use Checks;
  with Debug;    use Debug;
  with Elists;   use Elists;
  with Errout;   use Errout;
  with Erroutc;  use Erroutc;
  with Exp_Ch11; use Exp_Ch11;
  with Exp_Util; use Exp_Util;
  with Fname;    use Fname;
  with Freeze;   use Freeze;
  with Lib;      use Lib;
  with Lib.Xref; use Lib.Xref;
  with Namet.Sp; use Namet.Sp;
--- 23,40 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with Casing;   use Casing;
  with Checks;   use Checks;
  with Debug;    use Debug;
  with Elists;   use Elists;
  with Errout;   use Errout;
  with Erroutc;  use Erroutc;
+ with Exp_Ch3;  use Exp_Ch3;
  with Exp_Ch11; use Exp_Ch11;
  with Exp_Util; use Exp_Util;
  with Fname;    use Fname;
  with Freeze;   use Freeze;
+ with Itypes;   use Itypes;
  with Lib;      use Lib;
  with Lib.Xref; use Lib.Xref;
  with Namet.Sp; use Namet.Sp;
*************** with Rtsfind;  use Rtsfind;
*** 48,55 ****
--- 47,56 ----
  with Sem;      use Sem;
  with Sem_Aux;  use Sem_Aux;
  with Sem_Attr; use Sem_Attr;
+ with Sem_Cat;  use Sem_Cat;
  with Sem_Ch6;  use Sem_Ch6;
  with Sem_Ch8;  use Sem_Ch8;
+ with Sem_Ch13; use Sem_Ch13;
  with Sem_Disp; use Sem_Disp;
  with Sem_Elab; use Sem_Elab;
  with Sem_Eval; use Sem_Eval;
*************** package body Sem_Util is
*** 115,122 ****
       (Item_Id  : Entity_Id;
        Property : Name_Id) return Boolean;
     --  Subsidiary to routines Async_xxx_Enabled and Effective_xxx_Enabled.
!    --  Determine whether an abstract state or a variable denoted by entity
!    --  Item_Id has enabled property Property.
  
     function Has_Null_Extension (T : Entity_Id) return Boolean;
     --  T is a derived tagged type. Check whether the type extension is null.
--- 116,123 ----
       (Item_Id  : Entity_Id;
        Property : Name_Id) return Boolean;
     --  Subsidiary to routines Async_xxx_Enabled and Effective_xxx_Enabled.
!    --  Determine whether the state abstraction, object, or type denoted by
!    --  entity Item_Id has enabled property Property.
  
     function Has_Null_Extension (T : Entity_Id) return Boolean;
     --  T is a derived tagged type. Check whether the type extension is null.
*************** package body Sem_Util is
*** 126,137 ****
--- 127,154 ----
     --  Determine whether arbitrary entity Id denotes an atomic object as per
     --  RM C.6(7).
  
+    function Is_Container_Aggregate (Exp : Node_Id) return Boolean;
+    --  Is the given expression a container aggregate?
+ 
+    generic
+       with function Is_Effectively_Volatile_Entity
+         (Id : Entity_Id) return Boolean;
+       --  Function to use on object and type entities
+    function Is_Effectively_Volatile_Object_Shared
+      (N : Node_Id) return Boolean;
+    --  Shared function used to detect effectively volatile objects and
+    --  effectively volatile objects for reading.
+ 
     function Is_Fully_Initialized_Variant (Typ : Entity_Id) return Boolean;
     --  Subsidiary to Is_Fully_Initialized_Type. For an unconstrained type
     --  with discriminants whose default values are static, examine only the
     --  components in the selected variant to determine whether all of them
     --  have a default.
  
+    function Is_Preelaborable_Function (Id : Entity_Id) return Boolean;
+    --  Ada 2020: Determine whether the specified function is suitable as the
+    --  name of a call in a preelaborable construct (RM 10.2.1(7/5)).
+ 
     type Null_Status_Kind is
       (Is_Null,
        --  This value indicates that a subexpression is known to have a null
*************** package body Sem_Util is
*** 151,174 ****
     --  routine does not take simple flow diagnostics into account, it relies on
     --  static facts such as the presence of null exclusions.
  
-    function Old_Requires_Transient_Scope (Id : Entity_Id) return Boolean;
-    function New_Requires_Transient_Scope (Id : Entity_Id) return Boolean;
-    --  ???We retain the old and new algorithms for Requires_Transient_Scope for
-    --  the time being. New_Requires_Transient_Scope is used by default; the
-    --  debug switch -gnatdQ can be used to do Old_Requires_Transient_Scope
-    --  instead. The intent is to use this temporarily to measure before/after
-    --  efficiency. Note: when this temporary code is removed, the documentation
-    --  of dQ in debug.adb should be removed.
- 
-    procedure Results_Differ
-      (Id      : Entity_Id;
-       Old_Val : Boolean;
-       New_Val : Boolean);
-    --  ???Debugging code. Called when the Old_Val and New_Val differ. This
-    --  routine will be removed eventially when New_Requires_Transient_Scope
-    --  becomes Requires_Transient_Scope and Old_Requires_Transient_Scope is
-    --  eliminated.
- 
     function Subprogram_Name (N : Node_Id) return String;
     --  Return the fully qualified name of the enclosing subprogram for the
     --  given node N, with file:line:col information appended, e.g.
--- 168,173 ----
*************** package body Sem_Util is
*** 190,197 ****
  
           Nod := Declaration_Node (Base_Type (Typ));
  
!          if Nkind_In (Nod, N_Full_Type_Declaration,
!                            N_Private_Type_Declaration)
           then
              return Empty_List;
           end if;
--- 189,195 ----
  
           Nod := Declaration_Node (Base_Type (Typ));
  
!          if Nkind (Nod) in N_Full_Type_Declaration | N_Private_Type_Declaration
           then
              return Empty_List;
           end if;
*************** package body Sem_Util is
*** 252,257 ****
--- 250,863 ----
        return Interface_List (Nod);
     end Abstract_Interface_List;
  
+    -------------------------
+    -- Accessibility_Level --
+    -------------------------
+ 
+    function Accessibility_Level
+      (Expr              : Node_Id;
+       Level             : Accessibility_Level_Kind;
+       In_Return_Context : Boolean := False) return Node_Id
+    is
+       Loc : constant Source_Ptr := Sloc (Expr);
+ 
+       function Accessibility_Level (Expr : Node_Id) return Node_Id
+         is (Accessibility_Level (Expr, Level, In_Return_Context));
+       --  Renaming of the enclosing function to facilitate recursive calls
+ 
+       function Make_Level_Literal (Level : Uint) return Node_Id;
+       --  Construct an integer literal representing an accessibility level
+       --  with its type set to Natural.
+ 
+       function Innermost_Master_Scope_Depth
+         (N : Node_Id) return Uint;
+       --  Returns the scope depth of the given node's innermost
+       --  enclosing dynamic scope (effectively the accessibility
+       --  level of the innermost enclosing master).
+ 
+       function Function_Call_Or_Allocator_Level
+         (N : Node_Id) return Node_Id;
+       --  Centralized processing of subprogram calls which may appear in
+       --  prefix notation.
+ 
+       ----------------------------------
+       -- Innermost_Master_Scope_Depth --
+       ----------------------------------
+ 
+       function Innermost_Master_Scope_Depth
+         (N : Node_Id) return Uint
+       is
+          Encl_Scop           : Entity_Id;
+          Node_Par            : Node_Id := Parent (N);
+          Master_Lvl_Modifier : Int     := 0;
+ 
+       begin
+          --  Locate the nearest enclosing node (by traversing Parents)
+          --  that Defining_Entity can be applied to, and return the
+          --  depth of that entity's nearest enclosing dynamic scope.
+ 
+          --  The rules that define what a master are defined in
+          --  RM 7.6.1 (3), and include statements and conditions for loops
+          --  among other things. These cases are detected properly ???
+ 
+          while Present (Node_Par) loop
+ 
+             if Present (Defining_Entity
+                          (Node_Par, Empty_On_Errors => True))
+             then
+                Encl_Scop := Nearest_Dynamic_Scope
+                               (Defining_Entity (Node_Par));
+ 
+                --  Ignore transient scopes made during expansion
+ 
+                if Comes_From_Source (Node_Par) then
+                   return Scope_Depth (Encl_Scop) + Master_Lvl_Modifier;
+                end if;
+ 
+             --  For a return statement within a function, return
+             --  the depth of the function itself. This is not just
+             --  a small optimization, but matters when analyzing
+             --  the expression in an expression function before
+             --  the body is created.
+ 
+             elsif Nkind (Node_Par) in N_Extended_Return_Statement
+                                     | N_Simple_Return_Statement
+               and then Ekind (Current_Scope) = E_Function
+             then
+                return Scope_Depth (Current_Scope);
+ 
+             --  Statements are counted as masters
+ 
+             elsif Is_Master (Node_Par) then
+                Master_Lvl_Modifier := Master_Lvl_Modifier + 1;
+ 
+             end if;
+ 
+             Node_Par := Parent (Node_Par);
+          end loop;
+ 
+          --  Should never reach the following return
+ 
+          pragma Assert (False);
+ 
+          return Scope_Depth (Current_Scope) + 1;
+       end Innermost_Master_Scope_Depth;
+ 
+       ------------------------
+       -- Make_Level_Literal --
+       ------------------------
+ 
+       function Make_Level_Literal (Level : Uint) return Node_Id is
+          Result : constant Node_Id := Make_Integer_Literal (Loc, Level);
+ 
+       begin
+          Set_Etype (Result, Standard_Natural);
+          return Result;
+       end Make_Level_Literal;
+ 
+       --------------------------------------
+       -- Function_Call_Or_Allocator_Level --
+       --------------------------------------
+ 
+       function Function_Call_Or_Allocator_Level (N : Node_Id) return Node_Id is
+          Par      : Node_Id;
+          Prev_Par : Node_Id;
+       begin
+          --  Results of functions are objects, so we either get the
+          --  accessibility of the function or, in case of a call which is
+          --  indirect, the level of the access-to-subprogram type.
+ 
+          --  This code looks wrong ???
+ 
+          if Nkind (N) = N_Function_Call
+            and then Ada_Version < Ada_2005
+          then
+             if Is_Entity_Name (Name (N)) then
+                return Make_Level_Literal
+                         (Subprogram_Access_Level (Entity (Name (N))));
+             else
+                return Make_Level_Literal
+                         (Type_Access_Level (Etype (Prefix (Name (N)))));
+             end if;
+ 
+          --  We ignore coextensions as they cannot be implemented under the
+          --  "small-integer" model.
+ 
+          elsif Nkind (N) = N_Allocator
+            and then (Is_Static_Coextension (N)
+                       or else Is_Dynamic_Coextension (N))
+          then
+             return Make_Level_Literal
+                      (Scope_Depth (Standard_Standard));
+          end if;
+ 
+          --  Named access types have a designated level
+ 
+          if Is_Named_Access_Type (Etype (N)) then
+             return Make_Level_Literal (Type_Access_Level (Etype (N)));
+ 
+          --  Otherwise, the level is dictated by RM 3.10.2 (10.7/3)
+ 
+          else
+             if Nkind (N) = N_Function_Call 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 library accessibility level to null
+                --  out the check on the side of the caller.
+ 
+                if In_Return_Value (N)
+                  or else In_Return_Context
+                then
+                   return Make_Level_Literal
+                            (Subprogram_Access_Level (Current_Subprogram));
+                end if;
+             end if;
+ 
+             --  Find any relevant enclosing parent nodes that designate an
+             --  object being initialized.
+ 
+             --  Note: The above is only relevant if the result is used "in its
+             --  entirety" as RM 3.10.2 (10.2/3) states. However, this is
+             --  accounted for in the case statement in the main body of
+             --  Accessibility_Level for N_Selected_Component.
+ 
+             Par      := Parent (Expr);
+             Prev_Par := Empty;
+             while Present (Par) loop
+                --  Detect an expanded implicit conversion, typically this
+                --  occurs on implicitly converted actuals in calls.
+ 
+                --  Does this catch all implicit conversions ???
+ 
+                if Nkind (Par) = N_Type_Conversion
+                  and then Is_Named_Access_Type (Etype (Par))
+                then
+                   return Make_Level_Literal
+                            (Type_Access_Level (Etype (Par)));
+                end if;
+ 
+                --  Jump out when we hit an object declaration or the right-hand
+                --  side of an assignment, or a construct such as an aggregate
+                --  subtype indication which would be the result is not used
+                --  "in its entirety."
+ 
+                exit when Nkind (Par) in N_Object_Declaration
+                            or else (Nkind (Par) = N_Assignment_Statement
+                                      and then Name (Par) /= Prev_Par);
+ 
+                Prev_Par := Par;
+                Par      := Parent (Par);
+             end loop;
+ 
+             --  Assignment statements are handled in a similar way in
+             --  accordance to the left-hand part. However, strictly speaking,
+             --  this is illegal according to the RM, but this change is needed
+             --  to pass an ACATS C-test and is useful in general ???
+ 
+             case Nkind (Par) is
+                when N_Object_Declaration =>
+                   return Make_Level_Literal
+                            (Scope_Depth
+                              (Scope (Defining_Identifier (Par))));
+ 
+                when N_Assignment_Statement =>
+                   --  Return the accessiblity level of the left-hand part
+ 
+                   return Accessibility_Level
+                            (Expr              => Name (Par),
+                             Level             => Object_Decl_Level,
+                             In_Return_Context => In_Return_Context);
+ 
+                when others =>
+                   return Make_Level_Literal
+                            (Innermost_Master_Scope_Depth (Expr));
+             end case;
+          end if;
+       end Function_Call_Or_Allocator_Level;
+ 
+       --  Local variables
+ 
+       E   : Entity_Id := Original_Node (Expr);
+       Pre : Node_Id;
+ 
+    --  Start of processing for Accessibility_Level
+ 
+    begin
+       --  We could be looking at a reference to a formal due to the expansion
+       --  of entries and other cases, so obtain the renaming if necessary.
+ 
+       if Present (Param_Entity (Expr)) then
+          E := Param_Entity (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
+ 
+          if Ekind (E) in E_Constant | E_Variable and then Is_Prival (E) then
+             E := Prival_Link (E);
+          end if;
+       end if;
+ 
+       --  Perform the processing on the expression
+ 
+       case Nkind (E) is
+          --  The level of an aggregate is that of the innermost master that
+          --  evaluates it as defined in RM 3.10.2 (10/4).
+ 
+          when N_Aggregate =>
+             return Make_Level_Literal (Innermost_Master_Scope_Depth (Expr));
+ 
+          --  The accessibility level is that of the access type, except for an
+          --  anonymous allocators which have special rules defined in RM 3.10.2
+          --  (14/3).
+ 
+          when N_Allocator =>
+             return Function_Call_Or_Allocator_Level (E);
+ 
+          --  We could reach this point for two reasons. Either the expression
+          --  applies to a special attribute ('Loop_Entry, 'Result, or 'Old), or
+          --  we are looking at the access attributes directly ('Access,
+          --  'Address, or 'Unchecked_Access).
+ 
+          when N_Attribute_Reference =>
+             Pre := Original_Node (Prefix (E));
+ 
+             --  Regular 'Access attribute presence means we have to look at the
+             --  prefix.
+ 
+             if Attribute_Name (E) = Name_Access then
+                return Accessibility_Level (Prefix (E));
+ 
+             --  Unchecked or unrestricted attributes have unlimited depth
+ 
+             elsif Attribute_Name (E) in Name_Address
+                                       | Name_Unchecked_Access
+                                       | Name_Unrestricted_Access
+             then
+                return Make_Level_Literal (Scope_Depth (Standard_Standard));
+ 
+             --  'Access can be taken further against other special attributes,
+             --  so handle these cases explicitly.
+ 
+             elsif Attribute_Name (E)
+                     in Name_Old | Name_Loop_Entry | Name_Result
+             then
+                --  Named access types
+ 
+                if Is_Named_Access_Type (Etype (Pre)) then
+                   return Make_Level_Literal
+                            (Type_Access_Level (Etype (Pre)));
+ 
+                --  Anonymous access types
+ 
+                elsif Nkind (Pre) in N_Has_Entity
+                  and then Present (Get_Dynamic_Accessibility (Entity (Pre)))
+                  and then Level = Dynamic_Level
+                then
+                   return New_Occurrence_Of
+                            (Get_Dynamic_Accessibility (Entity (Pre)), Loc);
+ 
+                --  Otherwise the level is treated in a similar way as
+                --  aggregates according to RM 6.1.1 (35.1/4) which concerns
+                --  an implicit constant declaration - in turn defining the
+                --  accessibility level to be that of the implicit constant
+                --  declaration.
+ 
+                else
+                   return Make_Level_Literal
+                            (Innermost_Master_Scope_Depth (Expr));
+                end if;
+ 
+             else
+                raise Program_Error;
+             end if;
+ 
+          --  This is the "base case" for accessibility level calculations which
+          --  means we are near the end of our recursive traversal.
+ 
+          when N_Defining_Identifier =>
+             --  A dynamic check is performed on the side of the callee when we
+             --  are within a return statement, so return a library-level
+             --  accessibility level to null out checks on the side of the
+             --  caller.
+ 
+             if Is_Explicitly_Aliased (E)
+               and then Level /= Dynamic_Level
+               and then (In_Return_Value (Expr)
+                          or else In_Return_Context)
+             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 not Present (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;
+ 
+                return
+                  New_Occurrence_Of (Get_Dynamic_Accessibility (E), Loc);
+ 
+             --  Initialization procedures have a special extra accessitility
+             --  parameter associated with the level at which the object
+             --  begin initialized exists
+ 
+             elsif Ekind (E) = E_Record_Type
+               and then Is_Limited_Record (E)
+               and then Current_Scope = Init_Proc (E)
+               and then Present (Init_Proc_Level_Formal (Current_Scope))
+             then
+                return New_Occurrence_Of
+                         (Init_Proc_Level_Formal (Current_Scope), Loc);
+ 
+             --  Current instance of the type is deeper than that of the type
+             --  according to RM 3.10.2 (21).
+ 
+             elsif Is_Type (E) then
+                return Make_Level_Literal
+                         (Type_Access_Level (E) + 1);
+ 
+             --  Move up the renamed entity if it came from source since
+             --  expansion may have created a dummy renaming under certain
+             --  circumstances.
+ 
+             elsif Present (Renamed_Object (E))
+               and then Comes_From_Source (Renamed_Object (E))
+             then
+                return Accessibility_Level (Renamed_Object (E));
+ 
+             --  Named access types get their level from their associated type
+ 
+             elsif Is_Named_Access_Type (Etype (E)) then
+                return Make_Level_Literal
+                         (Type_Access_Level (Etype (E)));
+ 
+             --  When E is a component of the current instance of a
+             --  protected type, we assume the level to be deeper than that of
+             --  the type itself.
+ 
+             elsif not Is_Overloadable (E)
+               and then Ekind (Scope (E)) = E_Protected_Type
+               and then Comes_From_Source (Scope (E))
+             then
+                return Make_Level_Literal
+                         (Scope_Depth (Enclosing_Dynamic_Scope (E)) + 1);
+ 
+             --  Normal object - get the level of the enclosing scope
+ 
+             else
+                return Make_Level_Literal
+                         (Scope_Depth (Enclosing_Dynamic_Scope (E)));
+             end if;
+ 
+          --  Handle indexed and selected components including the special cases
+          --  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 =>
+             Pre := Original_Node (Prefix (E));
+ 
+             --  When E is an indexed component or selected component and
+             --  the current Expr is a function call, we know that we are
+             --  looking at an expanded call in prefix notation.
+ 
+             if Nkind (Expr) = N_Function_Call then
+                return Function_Call_Or_Allocator_Level (Expr);
+ 
+             --  If the prefix is a named access type, then we are dealing
+             --  with an implicit deferences. In that case the level is that
+             --  of the named access type in the prefix.
+ 
+             elsif Is_Named_Access_Type (Etype (Pre)) then
+                return Make_Level_Literal
+                         (Type_Access_Level (Etype (Pre)));
+ 
+             --  The current expression is a named access type, so there is no
+             --  reason to look at the prefix. Instead obtain the level of E's
+             --  named access type.
+ 
+             elsif Is_Named_Access_Type (Etype (E)) then
+                return Make_Level_Literal
+                         (Type_Access_Level (Etype (E)));
+ 
+             --  A non-discriminant selected component where the component
+             --  is an anonymous access type means that its associated
+             --  level is that of the containing type - see RM 3.10.2 (16).
+ 
+             elsif Nkind (E) = N_Selected_Component
+               and then Ekind (Etype (E))   =  E_Anonymous_Access_Type
+               and then Ekind (Etype (Pre)) /= E_Anonymous_Access_Type
+               and then not (Nkind (Selector_Name (E)) in N_Has_Entity
+                              and then Ekind (Entity (Selector_Name (E)))
+                                         = E_Discriminant)
+             then
+                return Make_Level_Literal
+                         (Type_Access_Level (Etype (Prefix (E))));
+ 
+             --  Similar to the previous case - arrays featuring components of
+             --  anonymous access components get their corresponding level from
+             --  their containing type's declaration.
+ 
+             elsif Nkind (E) = N_Indexed_Component
+               and then Ekind (Etype (E)) = E_Anonymous_Access_Type
+               and then Ekind (Etype (Pre)) in Array_Kind
+               and then Ekind (Component_Type (Base_Type (Etype (Pre))))
+                          = E_Anonymous_Access_Type
+             then
+                return Make_Level_Literal
+                         (Type_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));
+ 
+             --  Otherwise, continue recursing over the expression prefixes
+ 
+             else
+                return Accessibility_Level (Prefix (E));
+             end if;
+ 
+          --  Qualified expressions
+ 
+          when N_Qualified_Expression =>
+             if Is_Named_Access_Type (Etype (E)) then
+                return Make_Level_Literal
+                         (Type_Access_Level (Etype (E)));
+             else
+                return Accessibility_Level (Expression (E));
+             end if;
+ 
+          --  Handle function calls
+ 
+          when N_Function_Call =>
+             return Function_Call_Or_Allocator_Level (E);
+ 
+          --  Explicit dereference accessibility level calculation
+ 
+          when N_Explicit_Dereference =>
+             Pre := Original_Node (Prefix (E));
+ 
+             --  The prefix is a named access type so the level is taken from
+             --  its type.
+ 
+             if Is_Named_Access_Type (Etype (Pre)) then
+                return Make_Level_Literal (Type_Access_Level (Etype (Pre)));
+ 
+             --  Otherwise, recurse deeper
+ 
+             else
+                return Accessibility_Level (Prefix (E));
+             end if;
+ 
+          --  Type conversions
+ 
+          when N_Type_Conversion | N_Unchecked_Type_Conversion =>
+             --  View conversions are special in that they require use to
+             --  inspect the expression of the type conversion.
+ 
+             --  Allocators of anonymous access types are internally generated,
+             --  so recurse deeper in that case as well.
+ 
+             if Is_View_Conversion (E)
+               or else Ekind (Etype (E)) = E_Anonymous_Access_Type
+             then
+                return Accessibility_Level (Expression (E));
+ 
+             --  We don't care about the master if we are looking at a named
+             --  access type.
+ 
+             elsif Is_Named_Access_Type (Etype (E)) then
+                return Make_Level_Literal
+                         (Type_Access_Level (Etype (E)));
+ 
+             --  In section RM 3.10.2 (10/4) the accessibility rules for
+             --  aggregates and value conversions are outlined. Are these
+             --  followed in the case of initialization of an object ???
+ 
+             --  Should use Innermost_Master_Scope_Depth ???
+ 
+             else
+                return Accessibility_Level (Current_Scope);
+             end if;
+ 
+          --  Default to the type accessibility level for the type of the
+          --  expression's entity.
+ 
+          when others =>
+             return Make_Level_Literal (Type_Access_Level (Etype (E)));
+       end case;
+    end Accessibility_Level;
+ 
+    --------------------------------
+    -- Static_Accessibility_Level --
+    --------------------------------
+ 
+    function Static_Accessibility_Level
+      (Expr              : Node_Id;
+       Level             : Static_Accessibility_Level_Kind;
+       In_Return_Context : Boolean := False) return Uint
+    is
+    begin
+       return Intval
+                (Accessibility_Level (Expr, Level, In_Return_Context));
+    end Static_Accessibility_Level;
+ 
     ----------------------------------
     -- Acquire_Warning_Match_String --
     ----------------------------------
*************** package body Sem_Util is
*** 310,316 ****
  
     procedure Add_Block_Identifier (N : Node_Id; Id : out Entity_Id) is
        Loc : constant Source_Ptr := Sloc (N);
- 
     begin
        pragma Assert (Nkind (N) = N_Block_Statement);
  
--- 916,921 ----
*************** package body Sem_Util is
*** 415,428 ****
     -- Addressable --
     -----------------
  
-    --  For now, just 8/16/32/64
- 
     function Addressable (V : Uint) return Boolean is
     begin
        return V = Uint_8  or else
               V = Uint_16 or else
               V = Uint_32 or else
!              V = Uint_64;
     end Addressable;
  
     function Addressable (V : Int) return Boolean is
--- 1020,1032 ----
     -- Addressable --
     -----------------
  
     function Addressable (V : Uint) return Boolean is
     begin
        return V = Uint_8  or else
               V = Uint_16 or else
               V = Uint_32 or else
!              V = Uint_64 or else
!              (V = Uint_128 and then System_Max_Integer_Size = 128);
     end Addressable;
  
     function Addressable (V : Int) return Boolean is
*************** package body Sem_Util is
*** 430,436 ****
        return V = 8  or else
               V = 16 or else
               V = 32 or else
!              V = 64;
     end Addressable;
  
     ---------------------------------
--- 1034,1041 ----
        return V = 8  or else
               V = 16 or else
               V = 32 or else
!              V = 64 or else
!              V = System_Max_Integer_Size;
     end Addressable;
  
     ---------------------------------
*************** package body Sem_Util is
*** 978,984 ****
                     Reason => PE_Bad_Predicated_Generic_Type));
  
              else
!                Error_Msg_FE (Msg & "<<", N, Typ);
              end if;
  
           else
--- 1583,1589 ----
                     Reason => PE_Bad_Predicated_Generic_Type));
  
              else
!                Error_Msg_FE (Msg, N, Typ);
              end if;
  
           else
*************** package body Sem_Util is
*** 1019,1029 ****
        HSS : Node_Id;
  
     begin
!       pragma Assert (Nkind_In (N, N_Block_Statement,
!                                   N_Entry_Body,
!                                   N_Package_Body,
!                                   N_Subprogram_Body,
!                                   N_Task_Body));
  
        HSS := Handled_Statement_Sequence (N);
  
--- 1624,1636 ----
        HSS : Node_Id;
  
     begin
!       pragma Assert
!         (Nkind (N) in
!            N_Block_Statement |
!            N_Entry_Body      |
!            N_Package_Body    |
!            N_Subprogram_Body |
!            N_Task_Body);
  
        HSS := Handled_Statement_Sequence (N);
  
*************** package body Sem_Util is
*** 1218,1223 ****
--- 1825,1834 ----
        --  Similar to previous one, for discriminated components constrained
        --  by the discriminant of the enclosing object.
  
+       function Copy_And_Maybe_Dereference (N : Node_Id) return Node_Id;
+       --  Copy the subtree rooted at N and insert an explicit dereference if it
+       --  is of an access type.
+ 
        -----------------------------------
        -- Build_Actual_Array_Constraint --
        -----------------------------------
*************** package body Sem_Util is
*** 1239,1245 ****
              if Denotes_Discriminant (Old_Lo) then
                 Lo :=
                   Make_Selected_Component (Loc,
!                    Prefix => New_Copy_Tree (P),
                     Selector_Name => New_Occurrence_Of (Entity (Old_Lo), Loc));
  
              else
--- 1850,1856 ----
              if Denotes_Discriminant (Old_Lo) then
                 Lo :=
                   Make_Selected_Component (Loc,
!                    Prefix => Copy_And_Maybe_Dereference (P),
                     Selector_Name => New_Occurrence_Of (Entity (Old_Lo), Loc));
  
              else
*************** package body Sem_Util is
*** 1257,1263 ****
              if Denotes_Discriminant (Old_Hi) then
                 Hi :=
                   Make_Selected_Component (Loc,
!                    Prefix => New_Copy_Tree (P),
                     Selector_Name => New_Occurrence_Of (Entity (Old_Hi), Loc));
  
              else
--- 1868,1874 ----
              if Denotes_Discriminant (Old_Hi) then
                 Hi :=
                   Make_Selected_Component (Loc,
!                    Prefix => Copy_And_Maybe_Dereference (P),
                     Selector_Name => New_Occurrence_Of (Entity (Old_Hi), Loc));
  
              else
*************** package body Sem_Util is
*** 1286,1292 ****
           while Present (D) loop
              if Denotes_Discriminant (Node (D)) then
                 D_Val := Make_Selected_Component (Loc,
!                  Prefix => New_Copy_Tree (P),
                  Selector_Name => New_Occurrence_Of (Entity (Node (D)), Loc));
  
              else
--- 1897,1903 ----
           while Present (D) loop
              if Denotes_Discriminant (Node (D)) then
                 D_Val := Make_Selected_Component (Loc,
!                  Prefix => Copy_And_Maybe_Dereference (P),
                  Selector_Name => New_Occurrence_Of (Entity (Node (D)), Loc));
  
              else
*************** package body Sem_Util is
*** 1322,1334 ****
                 D_Val := New_Copy_Tree (D);
                 Set_Expression (D_Val,
                   Make_Selected_Component (Loc,
!                    Prefix => New_Copy_Tree (P),
                     Selector_Name =>
                       New_Occurrence_Of (Entity (Expression (D)), Loc)));
  
              elsif Denotes_Discriminant (D) then
                 D_Val := Make_Selected_Component (Loc,
!                  Prefix => New_Copy_Tree (P),
                   Selector_Name => New_Occurrence_Of (Entity (D), Loc));
  
              else
--- 1933,1945 ----
                 D_Val := New_Copy_Tree (D);
                 Set_Expression (D_Val,
                   Make_Selected_Component (Loc,
!                    Prefix => Copy_And_Maybe_Dereference (P),
                     Selector_Name =>
                       New_Occurrence_Of (Entity (Expression (D)), Loc)));
  
              elsif Denotes_Discriminant (D) then
                 D_Val := Make_Selected_Component (Loc,
!                  Prefix => Copy_And_Maybe_Dereference (P),
                   Selector_Name => New_Occurrence_Of (Entity (D), Loc));
  
              else
*************** package body Sem_Util is
*** 1342,1347 ****
--- 1953,1974 ----
           return Constraints;
        end Build_Access_Record_Constraint;
  
+       --------------------------------
+       -- Copy_And_Maybe_Dereference --
+       --------------------------------
+ 
+       function Copy_And_Maybe_Dereference (N : Node_Id) return Node_Id is
+          New_N : constant Node_Id := New_Copy_Tree (N);
+ 
+       begin
+          if Is_Access_Type (Etype (N)) then
+             return Make_Explicit_Dereference (Sloc (Parent (N)), New_N);
+ 
+          else
+             return New_N;
+          end if;
+       end Copy_And_Maybe_Dereference;
+ 
     --  Start of processing for Build_Actual_Subtype_Of_Component
  
     begin
*************** package body Sem_Util is
*** 1396,1402 ****
        if Ekind (Desig_Typ) = E_Array_Subtype then
           Id := First_Index (Desig_Typ);
  
!          --  Check whether an index bound is constrained by a discriminant.
  
           while Present (Id) loop
              Index_Typ := Underlying_Type (Etype (Id));
--- 2023,2029 ----
        if Ekind (Desig_Typ) = E_Array_Subtype then
           Id := First_Index (Desig_Typ);
  
!          --  Check whether an index bound is constrained by a discriminant
  
           while Present (Id) loop
              Index_Typ := Underlying_Type (Etype (Id));
*************** package body Sem_Util is
*** 1485,1501 ****
        Loc        : constant Source_Ptr := Sloc (Bod);
        Clone_Id   : constant Entity_Id  := Class_Wide_Clone (Spec_Id);
        Clone_Body : Node_Id;
  
     begin
        --  The declaration of the class-wide clone was created when the
        --  corresponding class-wide condition was analyzed.
  
        Clone_Body :=
          Make_Subprogram_Body (Loc,
            Specification              =>
              Copy_Subprogram_Spec (Parent (Clone_Id)),
            Declarations               => Declarations (Bod),
!           Handled_Statement_Sequence => Handled_Statement_Sequence (Bod));
  
        --  The new operation is internal and overriding indicators do not apply
        --  (the original primitive may have carried one).
--- 2112,2149 ----
        Loc        : constant Source_Ptr := Sloc (Bod);
        Clone_Id   : constant Entity_Id  := Class_Wide_Clone (Spec_Id);
        Clone_Body : Node_Id;
+       Assoc_List : constant Elist_Id := New_Elmt_List;
  
     begin
        --  The declaration of the class-wide clone was created when the
        --  corresponding class-wide condition was analyzed.
  
+       --  The body of the original condition may contain references to
+       --  the formals of Spec_Id. In the body of the class-wide clone,
+       --  these must be replaced with the corresponding formals of
+       --  the clone.
+ 
+       declare
+          Spec_Formal_Id  : Entity_Id := First_Formal (Spec_Id);
+          Clone_Formal_Id : Entity_Id := First_Formal (Clone_Id);
+       begin
+          while Present (Spec_Formal_Id) loop
+             Append_Elmt (Spec_Formal_Id,  Assoc_List);
+             Append_Elmt (Clone_Formal_Id, Assoc_List);
+ 
+             Next_Formal (Spec_Formal_Id);
+             Next_Formal (Clone_Formal_Id);
+          end loop;
+       end;
+ 
        Clone_Body :=
          Make_Subprogram_Body (Loc,
            Specification              =>
              Copy_Subprogram_Spec (Parent (Clone_Id)),
            Declarations               => Declarations (Bod),
!           Handled_Statement_Sequence =>
!             New_Copy_Tree (Handled_Statement_Sequence (Bod),
!               Map => Assoc_List));
  
        --  The new operation is internal and overriding indicators do not apply
        --  (the original primitive may have carried one).
*************** package body Sem_Util is
*** 1618,1623 ****
--- 2266,2278 ----
        --  wrapper call to inherited operation.
  
        Set_Class_Wide_Clone (Spec_Id, Clone_Id);
+ 
+       --  Inherit debug info flag from Spec_Id to Clone_Id to allow debugging
+       --  of the class-wide clone subprogram.
+ 
+       if Needs_Debug_Info (Spec_Id) then
+          Set_Debug_Info_Needed (Clone_Id);
+       end if;
     end Build_Class_Wide_Clone_Decl;
  
     -----------------------------
*************** package body Sem_Util is
*** 1656,1661 ****
--- 2311,2388 ----
        return Decl;
     end Build_Component_Subtype;
  
+    -----------------------------
+    -- Build_Constrained_Itype --
+    -----------------------------
+ 
+    procedure Build_Constrained_Itype
+      (N              : Node_Id;
+       Typ            : Entity_Id;
+       New_Assoc_List : List_Id)
+    is
+       Constrs     : constant List_Id    := New_List;
+       Loc         : constant Source_Ptr := Sloc (N);
+       Def_Id      : Entity_Id;
+       Indic       : Node_Id;
+       New_Assoc   : Node_Id;
+       Subtyp_Decl : Node_Id;
+ 
+    begin
+       New_Assoc := First (New_Assoc_List);
+       while Present (New_Assoc) loop
+ 
+          --  There is exactly one choice in the component association (and
+          --  it is either a discriminant, a component or the others clause).
+          pragma Assert (List_Length (Choices (New_Assoc)) = 1);
+ 
+          --  Duplicate expression for the discriminant and put it on the
+          --  list of constraints for the itype declaration.
+ 
+          if Is_Entity_Name (First (Choices (New_Assoc)))
+            and then
+              Ekind (Entity (First (Choices (New_Assoc)))) = E_Discriminant
+          then
+             Append_To (Constrs, Duplicate_Subexpr (Expression (New_Assoc)));
+          end if;
+ 
+          Next (New_Assoc);
+       end loop;
+ 
+       if Has_Unknown_Discriminants (Typ)
+         and then Present (Underlying_Record_View (Typ))
+       then
+          Indic :=
+            Make_Subtype_Indication (Loc,
+              Subtype_Mark =>
+                New_Occurrence_Of (Underlying_Record_View (Typ), Loc),
+              Constraint   =>
+                Make_Index_Or_Discriminant_Constraint (Loc,
+                  Constraints => Constrs));
+       else
+          Indic :=
+            Make_Subtype_Indication (Loc,
+              Subtype_Mark =>
+                New_Occurrence_Of (Base_Type (Typ), Loc),
+              Constraint   =>
+                Make_Index_Or_Discriminant_Constraint (Loc,
+                  Constraints => Constrs));
+       end if;
+ 
+       Def_Id := Create_Itype (Ekind (Typ), N);
+ 
+       Subtyp_Decl :=
+         Make_Subtype_Declaration (Loc,
+           Defining_Identifier => Def_Id,
+           Subtype_Indication  => Indic);
+       Set_Parent (Subtyp_Decl, Parent (N));
+ 
+       --  Itypes must be analyzed with checks off (see itypes.ads)
+ 
+       Analyze (Subtyp_Decl, Suppress => All_Checks);
+ 
+       Set_Etype (N, Def_Id);
+    end Build_Constrained_Itype;
+ 
     ---------------------------
     -- Build_Default_Subtype --
     ---------------------------
*************** package body Sem_Util is
*** 1745,1751 ****
  
        function Build_Discriminal_Array_Constraint return List_Id;
        --  If one or more of the bounds of the component depends on
!       --  discriminants, build  actual constraint using the discriminants
        --  of the prefix.
  
        function Build_Discriminal_Record_Constraint return List_Id;
--- 2472,2478 ----
  
        function Build_Discriminal_Array_Constraint return List_Id;
        --  If one or more of the bounds of the component depends on
!       --  discriminants, build actual constraint using the discriminants
        --  of the prefix.
  
        function Build_Discriminal_Record_Constraint return List_Id;
*************** package body Sem_Util is
*** 1899,1910 ****
        if Present (Elaboration_Entity (Spec_Id)) then
           return;
  
-       --  Ignore in ASIS mode, elaboration entity is not in source and plays
-       --  no role in analysis.
- 
-       elsif ASIS_Mode then
-          return;
- 
        --  Do not generate an elaboration entity in GNATprove move because the
        --  elaboration counter is a form of expansion.
  
--- 2626,2631 ----
*************** package body Sem_Util is
*** 2099,2104 ****
--- 2820,2900 ----
        return New_Spec;
     end Build_Overriding_Spec;
  
+    -------------------
+    -- Build_Subtype --
+    -------------------
+ 
+    function Build_Subtype
+      (Related_Node : Node_Id;
+       Loc          : Source_Ptr;
+       Typ          : Entity_Id;
+       Constraints  : List_Id)
+       return Entity_Id
+    is
+       Indic       : Node_Id;
+       Subtyp_Decl : Node_Id;
+       Def_Id      : Entity_Id;
+       Btyp        : Entity_Id := Base_Type (Typ);
+ 
+    begin
+       --  The Related_Node better be here or else we won't be able to
+       --  attach new itypes to a node in the tree.
+ 
+       pragma Assert (Present (Related_Node));
+ 
+       --  If the view of the component's type is incomplete or private
+       --  with unknown discriminants, then the constraint must be applied
+       --  to the full type.
+ 
+       if Has_Unknown_Discriminants (Btyp)
+         and then Present (Underlying_Type (Btyp))
+       then
+          Btyp := Underlying_Type (Btyp);
+       end if;
+ 
+       Indic :=
+         Make_Subtype_Indication (Loc,
+           Subtype_Mark => New_Occurrence_Of (Btyp, Loc),
+           Constraint   =>
+             Make_Index_Or_Discriminant_Constraint (Loc, Constraints));
+ 
+       Def_Id := Create_Itype (Ekind (Typ), Related_Node);
+ 
+       Subtyp_Decl :=
+         Make_Subtype_Declaration (Loc,
+           Defining_Identifier => Def_Id,
+           Subtype_Indication  => Indic);
+ 
+       Set_Parent (Subtyp_Decl, Parent (Related_Node));
+ 
+       --  Itypes must be analyzed with checks off (see package Itypes)
+ 
+       Analyze (Subtyp_Decl, Suppress => All_Checks);
+ 
+       if Is_Itype (Def_Id) and then Has_Predicates (Typ) then
+          Inherit_Predicate_Flags (Def_Id, Typ);
+ 
+          --  Indicate where the predicate function may be found
+ 
+          if Is_Itype (Typ) then
+             if Present (Predicate_Function (Def_Id)) then
+                null;
+ 
+             elsif Present (Predicate_Function (Typ)) then
+                Set_Predicate_Function (Def_Id, Predicate_Function (Typ));
+ 
+             else
+                Set_Predicated_Parent (Def_Id, Predicated_Parent (Typ));
+             end if;
+ 
+          elsif No (Predicate_Function (Def_Id)) then
+             Set_Predicated_Parent (Def_Id, Typ);
+          end if;
+       end if;
+ 
+       return Def_Id;
+    end Build_Subtype;
+ 
     -----------------------------------
     -- Cannot_Raise_Constraint_Error --
     -----------------------------------
*************** package body Sem_Util is
*** 2221,2226 ****
--- 3017,3043 ----
        end if;
     end Cannot_Raise_Constraint_Error;
  
+    -------------------------------
+    -- Check_Ambiguous_Aggregate --
+    -------------------------------
+ 
+    procedure Check_Ambiguous_Aggregate (Call : Node_Id) is
+       Actual : Node_Id;
+ 
+    begin
+       if Extensions_Allowed then
+          Actual := First_Actual (Call);
+          while Present (Actual) loop
+             if Nkind (Actual) = N_Aggregate then
+                Error_Msg_N
+                  ("\add type qualification to aggregate actual", Actual);
+                exit;
+             end if;
+             Next_Actual (Actual);
+          end loop;
+       end if;
+    end Check_Ambiguous_Aggregate;
+ 
     -----------------------------------------
     -- Check_Dynamically_Tagged_Expression --
     -----------------------------------------
*************** package body Sem_Util is
*** 2340,2349 ****
        --  second occurrence, the error is reported, and the tree traversal
        --  is abandoned.
  
-       procedure Preanalyze_Without_Errors (N : Node_Id);
-       --  Preanalyze N without reporting errors. Very dubious, you can't just
-       --  go analyzing things more than once???
- 
        -------------------------
        -- Collect_Identifiers --
        -------------------------
--- 3157,3162 ----
*************** package body Sem_Util is
*** 2376,2385 ****
  
                 --  Don't collect identifiers of packages, called functions, etc
  
!                elsif Ekind_In (Entity (N), E_Package,
!                                            E_Function,
!                                            E_Procedure,
!                                            E_Entry)
                 then
                    return Skip;
  
--- 3189,3196 ----
  
                 --  Don't collect identifiers of packages, called functions, etc
  
!                elsif Ekind (Entity (N)) in
!                        E_Package | E_Function | E_Procedure | E_Entry
                 then
                    return Skip;
  
*************** package body Sem_Util is
*** 2399,2407 ****
                 --  to identify a corner case???
  
                 elsif Nkind (Parent (N)) = N_Component_Association
!                   and then Nkind_In (Parent (Parent (N)),
!                                      N_Aggregate,
!                                      N_Extension_Aggregate)
                 then
                    declare
                       Choice : constant Node_Id := First (Choices (Parent (N)));
--- 3210,3217 ----
                 --  to identify a corner case???
  
                 elsif Nkind (Parent (N)) = N_Component_Association
!                   and then Nkind (Parent (Parent (N))) in
!                              N_Aggregate | N_Extension_Aggregate
                 then
                    declare
                       Choice : constant Node_Id := First (Choices (Parent (N)));
*************** package body Sem_Util is
*** 2435,2449 ****
                          return Abandon;
                       end if;
  
!                      if Ekind_In (Id, E_Function, E_Generic_Function)
                         and then Has_Out_Or_In_Out_Parameter (Id)
                       then
                          Formal := First_Formal (Id);
                          Actual := First_Actual (Call);
                          while Present (Actual) and then Present (Formal) loop
                             if Actual = N then
!                               if Ekind_In (Formal, E_Out_Parameter,
!                                                    E_In_Out_Parameter)
                                then
                                   Is_Writable_Actual := True;
                                end if;
--- 3245,3259 ----
                          return Abandon;
                       end if;
  
!                      if Ekind (Id) in E_Function | E_Generic_Function
                         and then Has_Out_Or_In_Out_Parameter (Id)
                       then
                          Formal := First_Formal (Id);
                          Actual := First_Actual (Call);
                          while Present (Actual) and then Present (Formal) loop
                             if Actual = N then
!                               if Ekind (Formal) in E_Out_Parameter
!                                                  | E_In_Out_Parameter
                                then
                                   Is_Writable_Actual := True;
                                end if;
*************** package body Sem_Util is
*** 2573,2590 ****
           Do_Traversal (N);
        end Collect_Identifiers;
  
-       -------------------------------
-       -- Preanalyze_Without_Errors --
-       -------------------------------
- 
-       procedure Preanalyze_Without_Errors (N : Node_Id) is
-          Status : constant Boolean := Get_Ignore_Errors;
-       begin
-          Set_Ignore_Errors (True);
-          Preanalyze (N);
-          Set_Ignore_Errors (Status);
-       end Preanalyze_Without_Errors;
- 
     --  Start of processing for Check_Function_Writable_Actuals
  
     begin
--- 3383,3388 ----
*************** package body Sem_Util is
*** 2594,2608 ****
  
        if Ada_Version < Ada_2012
          or else not Check_Actuals (N)
!         or else (not (Nkind (N) in N_Op)
!                   and then not (Nkind (N) in N_Membership_Test)
!                   and then not Nkind_In (N, N_Range,
!                                             N_Aggregate,
!                                             N_Extension_Aggregate,
!                                             N_Full_Type_Declaration,
!                                             N_Function_Call,
!                                             N_Procedure_Call_Statement,
!                                             N_Entry_Call_Statement))
          or else (Nkind (N) = N_Full_Type_Declaration
                    and then not Is_Record_Type (Defining_Identifier (N)))
  
--- 3392,3406 ----
  
        if Ada_Version < Ada_2012
          or else not Check_Actuals (N)
!         or else Nkind (N) not in N_Op
!                                | N_Membership_Test
!                                | N_Range
!                                | N_Aggregate
!                                | N_Extension_Aggregate
!                                | N_Full_Type_Declaration
!                                | N_Function_Call
!                                | N_Procedure_Call_Statement
!                                | N_Entry_Call_Statement
          or else (Nkind (N) = N_Full_Type_Declaration
                    and then not Is_Record_Type (Defining_Identifier (N)))
  
*************** package body Sem_Util is
*** 2642,2648 ****
                    Collect_Identifiers (Right_Opnd (N));
                 end if;
  
!                if Nkind_In (N, N_In, N_Not_In)
                   and then Present (Alternatives (N))
                 then
                    Expr := First (Alternatives (N));
--- 3440,3446 ----
                    Collect_Identifiers (Right_Opnd (N));
                 end if;
  
!                if Nkind (N) in N_In | N_Not_In
                   and then Present (Alternatives (N))
                 then
                    Expr := First (Alternatives (N));
*************** package body Sem_Util is
*** 2720,2727 ****
                 Formal := First_Formal (Id);
                 Actual := First_Actual (N);
                 while Present (Actual) and then Present (Formal) loop
!                   if Ekind_In (Formal, E_Out_Parameter,
!                                        E_In_Out_Parameter)
                    then
                       Collect_Identifiers (Actual);
                    end if;
--- 3518,3524 ----
                 Formal := First_Formal (Id);
                 Actual := First_Actual (N);
                 while Present (Actual) and then Present (Formal) loop
!                   if Ekind (Formal) in E_Out_Parameter | E_In_Out_Parameter
                    then
                       Collect_Identifiers (Actual);
                    end if;
*************** package body Sem_Util is
*** 2759,2765 ****
                    declare
                       Count_Components   : Uint := Uint_0;
                       Num_Components     : Uint;
!                      Others_Assoc       : Node_Id;
                       Others_Choice      : Node_Id := Empty;
                       Others_Box_Present : Boolean := False;
  
--- 3556,3562 ----
                    declare
                       Count_Components   : Uint := Uint_0;
                       Num_Components     : Uint;
!                      Others_Assoc       : Node_Id := Empty;
                       Others_Choice      : Node_Id := Empty;
                       Others_Box_Present : Boolean := False;
  
*************** package body Sem_Util is
*** 2788,2795 ****
  
                             --  Count several components
  
!                            elsif Nkind_In (Choice, N_Range,
!                                                    N_Subtype_Indication)
                               or else (Is_Entity_Name (Choice)
                                         and then Is_Type (Entity (Choice)))
                             then
--- 3585,3592 ----
  
                             --  Count several components
  
!                            elsif Nkind (Choice) in
!                                    N_Range | N_Subtype_Indication
                               or else (Is_Entity_Name (Choice)
                                         and then Is_Type (Entity (Choice)))
                             then
*************** package body Sem_Util is
*** 2844,2849 ****
--- 3641,3648 ----
                             --  minimum decoration required to collect the
                             --  identifiers.
  
+                            pragma Assert (Present (Others_Assoc));
+ 
                             if not Expander_Active then
                                Comp_Expr := Expression (Others_Assoc);
                             else
*************** package body Sem_Util is
*** 2889,2896 ****
                       while Present (Assoc) loop
                          Choice := First (Choices (Assoc));
                          while Present (Choice) loop
!                            if Nkind_In (Choice, N_Range,
!                                                    N_Subtype_Indication)
                               or else (Is_Entity_Name (Choice)
                                         and then Is_Type (Entity (Choice)))
                             then
--- 3688,3695 ----
                       while Present (Assoc) loop
                          Choice := First (Choices (Assoc));
                          while Present (Choice) loop
!                            if Nkind (Choice) in
!                                 N_Range | N_Subtype_Indication
                               or else (Is_Entity_Name (Choice)
                                         and then Is_Type (Entity (Choice)))
                             then
*************** package body Sem_Util is
*** 3250,3257 ****
  
                 elsif Nkind (P) = N_Parameter_Specification
                   and then Scope (Current_Scope) = Scope (Nam)
!                  and then Nkind_In (Parent (P), N_Entry_Declaration,
!                                                 N_Subprogram_Declaration)
                 then
                    Error_Msg_N
                      ("internal call cannot appear in default for formal of "
--- 4049,4056 ----
  
                 elsif Nkind (P) = N_Parameter_Specification
                   and then Scope (Current_Scope) = Scope (Nam)
!                  and then Nkind (Parent (P)) in
!                             N_Entry_Declaration | N_Subprogram_Declaration
                 then
                    Error_Msg_N
                      ("internal call cannot appear in default for formal of "
*************** package body Sem_Util is
*** 3320,3326 ****
        --  Loop through sequence of basic declarative items
  
        Outer : while Present (Decl) loop
!          if not Nkind_In (Decl, N_Subprogram_Body, N_Package_Body, N_Task_Body)
             and then Nkind (Decl) not in N_Body_Stub
           then
              Next (Decl);
--- 4119,4126 ----
        --  Loop through sequence of basic declarative items
  
        Outer : while Present (Decl) loop
!          if Nkind (Decl) not in
!               N_Subprogram_Body | N_Package_Body | N_Task_Body
             and then Nkind (Decl) not in N_Body_Stub
           then
              Next (Decl);
*************** package body Sem_Util is
*** 3339,3348 ****
                          Error_Msg_N
                            ("(Ada 83) decl cannot appear after body#", Decl);
                       end if;
-                   else
-                      Error_Msg_Sloc := Body_Sloc;
-                      Check_SPARK_05_Restriction
-                        ("decl cannot appear after body#", Decl);
                    end if;
                 end if;
  
--- 4139,4144 ----
*************** package body Sem_Util is
*** 3362,3368 ****
        Scop        : Entity_Id;
  
     begin
!       pragma Assert (Ekind_In (Id, E_Abstract_State, E_Variable));
  
        --  Nothing to do for internally-generated abstract states and variables
        --  because they do not represent the hidden state of the source unit.
--- 4158,4164 ----
        Scop        : Entity_Id;
  
     begin
!       pragma Assert (Ekind (Id) in E_Abstract_State | E_Variable);
  
        --  Nothing to do for internally-generated abstract states and variables
        --  because they do not represent the hidden state of the source unit.
*************** package body Sem_Util is
*** 3387,3409 ****
              return;
  
           --  Objects and states that appear immediately within a subprogram or
!          --  inside a construct nested within a subprogram do not introduce a
!          --  hidden state. They behave as local variable declarations.
  
!          elsif Is_Subprogram (Context) then
              return;
- 
-          --  When examining a package body, use the entity of the spec as it
-          --  carries the abstract state declarations.
- 
-          elsif Ekind (Context) = E_Package_Body then
-             Context := Spec_Entity (Context);
           end if;
  
           --  Stop the traversal when a package subject to a null abstract state
           --  has been found.
  
!          if Ekind_In (Context, E_Generic_Package, E_Package)
             and then Has_Null_Abstract_State (Context)
           then
              exit;
--- 4183,4203 ----
              return;
  
           --  Objects and states that appear immediately within a subprogram or
!          --  entry inside a construct nested within a subprogram do not
!          --  introduce a hidden state. They behave as local variable
!          --  declarations. The same is true for elaboration code inside a block
!          --  or a task.
  
!          elsif Is_Subprogram_Or_Entry (Context)
!            or else Ekind (Context) in E_Block | E_Task_Type
!          then
              return;
           end if;
  
           --  Stop the traversal when a package subject to a null abstract state
           --  has been found.
  
!          if Is_Package_Or_Generic_Package (Context)
             and then Has_Null_Abstract_State (Context)
           then
              exit;
*************** package body Sem_Util is
*** 3426,3431 ****
--- 4220,4351 ----
        end if;
     end Check_No_Hidden_State;
  
+    ---------------------------------------------
+    -- Check_Nonoverridable_Aspect_Consistency --
+    ---------------------------------------------
+ 
+    procedure Check_Inherited_Nonoverridable_Aspects
+      (Inheritor      : Entity_Id;
+       Interface_List : List_Id;
+       Parent_Type    : Entity_Id) is
+ 
+       --  array needed for iterating over subtype values
+       Nonoverridable_Aspects : constant array (Positive range <>) of
+         Nonoverridable_Aspect_Id :=
+           (Aspect_Default_Iterator,
+            Aspect_Iterator_Element,
+            Aspect_Implicit_Dereference,
+            Aspect_Constant_Indexing,
+            Aspect_Variable_Indexing,
+            Aspect_Aggregate,
+            Aspect_Max_Entry_Queue_Length
+            --  , Aspect_No_Controlled_Parts
+           );
+ 
+       --  Note that none of these 8 aspects can be specified (for a type)
+       --  via a pragma. For 7 of them, the corresponding pragma does not
+       --  exist. The Pragma_Id enumeration type does include
+       --  Pragma_Max_Entry_Queue_Length, but that pragma is only use to
+       --  specify the aspect for a protected entry or entry family, not for
+       --  a type, and therefore cannot introduce the sorts of inheritance
+       --  issues that we are concerned with in this procedure.
+ 
+       type Entity_Array is array (Nat range <>) of Entity_Id;
+ 
+       function Ancestor_Entities return Entity_Array;
+       --  Returns all progenitors (including parent type, if present)
+ 
+       procedure Check_Consistency_For_One_Aspect_Of_Two_Ancestors
+         (Aspect        : Nonoverridable_Aspect_Id;
+          Ancestor_1    : Entity_Id;
+          Aspect_Spec_1 : Node_Id;
+          Ancestor_2    : Entity_Id;
+          Aspect_Spec_2 : Node_Id);
+       --  A given aspect has been specified for each of two ancestors;
+       --  check that the two aspect specifications are compatible (see
+       --  RM 13.1.1(18.5) and AI12-0211).
+ 
+       -----------------------
+       -- Ancestor_Entities --
+       -----------------------
+ 
+       function Ancestor_Entities return Entity_Array is
+          Ifc_Count : constant Nat := List_Length (Interface_List);
+          Ifc_Ancestors : Entity_Array (1 .. Ifc_Count);
+          Ifc : Node_Id := First (Interface_List);
+       begin
+          for Idx in Ifc_Ancestors'Range loop
+             Ifc_Ancestors (Idx) := Entity (Ifc);
+             pragma Assert (Present (Ifc_Ancestors (Idx)));
+             Ifc := Next (Ifc);
+          end loop;
+          pragma Assert (not Present (Ifc));
+          if Present (Parent_Type) then
+             return Parent_Type & Ifc_Ancestors;
+          else
+             return Ifc_Ancestors;
+          end if;
+       end Ancestor_Entities;
+ 
+       -------------------------------------------------------
+       -- Check_Consistency_For_One_Aspect_Of_Two_Ancestors --
+       -------------------------------------------------------
+ 
+       procedure Check_Consistency_For_One_Aspect_Of_Two_Ancestors
+         (Aspect        : Nonoverridable_Aspect_Id;
+          Ancestor_1    : Entity_Id;
+          Aspect_Spec_1 : Node_Id;
+          Ancestor_2    : Entity_Id;
+          Aspect_Spec_2 : Node_Id) is
+       begin
+          if not Is_Confirming (Aspect, Aspect_Spec_1, Aspect_Spec_2) then
+             Error_Msg_Name_1 := Aspect_Names (Aspect);
+             Error_Msg_Name_2 := Chars (Ancestor_1);
+             Error_Msg_Name_3 := Chars (Ancestor_2);
+ 
+             Error_Msg (
+               "incompatible % aspects inherited from ancestors % and %",
+               Sloc (Inheritor));
+          end if;
+       end Check_Consistency_For_One_Aspect_Of_Two_Ancestors;
+ 
+       Ancestors : constant Entity_Array := Ancestor_Entities;
+ 
+       --  start of processing for Check_Inherited_Nonoverridable_Aspects
+    begin
+       --  No Ada_Version check here; AI12-0211 is a binding interpretation.
+ 
+       if Ancestors'Length < 2 then
+          return; --  Inconsistency impossible; it takes 2 to disagree.
+       elsif In_Instance_Body then
+          return;  -- No legality checking in an instance body.
+       end if;
+ 
+       for Aspect of Nonoverridable_Aspects loop
+          declare
+             First_Ancestor_With_Aspect : Entity_Id := Empty;
+             First_Aspect_Spec, Current_Aspect_Spec : Node_Id := Empty;
+          begin
+             for Ancestor of Ancestors loop
+                Current_Aspect_Spec := Find_Aspect (Ancestor, Aspect);
+                if Present (Current_Aspect_Spec) then
+                   if Present (First_Ancestor_With_Aspect) then
+                      Check_Consistency_For_One_Aspect_Of_Two_Ancestors
+                        (Aspect        => Aspect,
+                         Ancestor_1    => First_Ancestor_With_Aspect,
+                         Aspect_Spec_1 => First_Aspect_Spec,
+                         Ancestor_2    => Ancestor,
+                         Aspect_Spec_2 => Current_Aspect_Spec);
+                   else
+                      First_Ancestor_With_Aspect := Ancestor;
+                      First_Aspect_Spec := Current_Aspect_Spec;
+                   end if;
+                end if;
+             end loop;
+          end;
+       end loop;
+    end Check_Inherited_Nonoverridable_Aspects;
+ 
     ----------------------------------------
     -- Check_Nonvolatile_Function_Profile --
     ----------------------------------------
*************** package body Sem_Util is
*** 3438,3444 ****
  
        Formal := First_Formal (Func_Id);
        while Present (Formal) loop
!          if Is_Effectively_Volatile (Etype (Formal)) then
              Error_Msg_NE
                ("nonvolatile function & cannot have a volatile parameter",
                 Formal, Func_Id);
--- 4358,4364 ----
  
        Formal := First_Formal (Func_Id);
        while Present (Formal) loop
!          if Is_Effectively_Volatile_For_Reading (Etype (Formal)) then
              Error_Msg_NE
                ("nonvolatile function & cannot have a volatile parameter",
                 Formal, Func_Id);
*************** package body Sem_Util is
*** 3449,3455 ****
  
        --  Inspect the return type
  
!       if Is_Effectively_Volatile (Etype (Func_Id)) then
           Error_Msg_NE
             ("nonvolatile function & cannot have a volatile return type",
              Result_Definition (Parent (Func_Id)), Func_Id);
--- 4369,4375 ----
  
        --  Inspect the return type
  
!       if Is_Effectively_Volatile_For_Reading (Etype (Func_Id)) then
           Error_Msg_NE
             ("nonvolatile function & cannot have a volatile return type",
              Result_Definition (Parent (Func_Id)), Func_Id);
*************** package body Sem_Util is
*** 3613,3619 ****
              --  Initial_Condition and Initializes as this is part of the
              --  elaboration checks for the constituent (SPARK RM 9(3)).
  
!             if Nam_In (Prag_Nam, Name_Initial_Condition, Name_Initializes) then
                 return;
  
              --  When the reference appears within pragma Depends or Global,
--- 4533,4539 ----
              --  Initial_Condition and Initializes as this is part of the
              --  elaboration checks for the constituent (SPARK RM 9(3)).
  
!             if Prag_Nam in Name_Initial_Condition | Name_Initializes then
                 return;
  
              --  When the reference appears within pragma Depends or Global,
*************** package body Sem_Util is
*** 3621,3627 ****
              --  that the pragma may not encapsulated by the type definition,
              --  but this is still a valid context.
  
!             elsif Nam_In (Prag_Nam, Name_Depends, Name_Global)
                and then Is_Single_Task_Pragma (Par, Conc_Obj)
              then
                 return;
--- 4541,4547 ----
              --  that the pragma may not encapsulated by the type definition,
              --  but this is still a valid context.
  
!             elsif Prag_Nam in Name_Depends | Name_Global
                and then Is_Single_Task_Pragma (Par, Conc_Obj)
              then
                 return;
*************** package body Sem_Util is
*** 3630,3637 ****
           --  The reference appears somewhere in the definition of a single
           --  concurrent type (SPARK RM 9(3)).
  
!          elsif Nkind_In (Par, N_Single_Protected_Declaration,
!                               N_Single_Task_Declaration)
             and then Defining_Entity (Par) = Conc_Obj
           then
              return;
--- 4550,4557 ----
           --  The reference appears somewhere in the definition of a single
           --  concurrent type (SPARK RM 9(3)).
  
!          elsif Nkind (Par) in
!                  N_Single_Protected_Declaration | N_Single_Task_Declaration
             and then Defining_Entity (Par) = Conc_Obj
           then
              return;
*************** package body Sem_Util is
*** 3639,3648 ****
           --  The reference appears within the declaration or body of a single
           --  concurrent type (SPARK RM 9(3)).
  
!          elsif Nkind_In (Par, N_Protected_Body,
!                               N_Protected_Type_Declaration,
!                               N_Task_Body,
!                               N_Task_Type_Declaration)
             and then Is_Single_Declaration_Or_Body (Par, Conc_Obj)
           then
              return;
--- 4559,4568 ----
           --  The reference appears within the declaration or body of a single
           --  concurrent type (SPARK RM 9(3)).
  
!          elsif Nkind (Par) in N_Protected_Body
!                             | N_Protected_Type_Declaration
!                             | N_Task_Body
!                             | N_Task_Type_Declaration
             and then Is_Single_Declaration_Or_Body (Par, Conc_Obj)
           then
              return;
*************** package body Sem_Util is
*** 3661,3670 ****
           --  real check was already performed in the original context of the
           --  reference.
  
!          elsif Nkind_In (Par, N_Package_Body,
!                               N_Package_Declaration,
!                               N_Subprogram_Body,
!                               N_Subprogram_Declaration)
             and then Is_Internal_Declaration_Or_Body (Par)
           then
              return;
--- 4581,4590 ----
           --  real check was already performed in the original context of the
           --  reference.
  
!          elsif Nkind (Par) in N_Package_Body
!                             | N_Package_Declaration
!                             | N_Subprogram_Body
!                             | N_Subprogram_Declaration
             and then Is_Internal_Declaration_Or_Body (Par)
           then
              return;
*************** package body Sem_Util is
*** 3874,3883 ****
                 --  Empty list (no global items) or single global item
                 --  declaration (only input items).
  
!                if Nkind_In (List, N_Null,
!                                   N_Expanded_Name,
!                                   N_Identifier,
!                                   N_Selected_Component)
                 then
                    return False;
  
--- 4794,4803 ----
                 --  Empty list (no global items) or single global item
                 --  declaration (only input items).
  
!                if Nkind (List) in N_Null
!                                 | N_Expanded_Name
!                                 | N_Identifier
!                                 | N_Selected_Component
                 then
                    return False;
  
*************** package body Sem_Util is
*** 3928,3934 ****
  
                 Param := First_Formal (Subp);
                 while Present (Param) loop
!                   if Ekind_In (Param, E_Out_Parameter, E_In_Out_Parameter) then
                       return False;
                    end if;
  
--- 4848,4854 ----
  
                 Param := First_Formal (Subp);
                 while Present (Param) loop
!                   if Ekind (Param) in E_Out_Parameter | E_In_Out_Parameter then
                       return False;
                    end if;
  
*************** package body Sem_Util is
*** 3993,3999 ****
  
           procedure Check_Conjuncts (Expr : Node_Id) is
           begin
!             if Nkind_In (Expr, N_Op_And, N_And_Then) then
                 Check_Conjuncts (Left_Opnd (Expr));
                 Check_Conjuncts (Right_Opnd (Expr));
              else
--- 4913,4919 ----
  
           procedure Check_Conjuncts (Expr : Node_Id) is
           begin
!             if Nkind (Expr) in N_Op_And | N_And_Then then
                 Check_Conjuncts (Left_Opnd (Expr));
                 Check_Conjuncts (Right_Opnd (Expr));
              else
*************** package body Sem_Util is
*** 4075,4085 ****
                 Ent : Entity_Id;
  
              begin
!                if Nkind_In (N, N_Explicit_Dereference, N_Function_Call) then
                    Post_State_Seen := True;
                    return Abandon;
  
!                elsif Nkind_In (N, N_Expanded_Name, N_Identifier) then
                    Ent := Entity (N);
  
                    --  Treat an undecorated reference as OK
--- 4995,5005 ----
                 Ent : Entity_Id;
  
              begin
!                if Nkind (N) in N_Explicit_Dereference | N_Function_Call then
                    Post_State_Seen := True;
                    return Abandon;
  
!                elsif Nkind (N) in N_Expanded_Name | N_Identifier then
                    Ent := Entity (N);
  
                    --  Treat an undecorated reference as OK
*************** package body Sem_Util is
*** 4089,4098 ****
                      --  A reference to an assignable entity is considered a
                      --  change in the post-state of a subprogram.
  
!                     or else Ekind_In (Ent, E_Generic_In_Out_Parameter,
!                                            E_In_Out_Parameter,
!                                            E_Out_Parameter,
!                                            E_Variable)
  
                      --  The reference may be modified through a dereference
  
--- 5009,5018 ----
                      --  A reference to an assignable entity is considered a
                      --  change in the post-state of a subprogram.
  
!                     or else Ekind (Ent) in E_Generic_In_Out_Parameter
!                                          | E_In_Out_Parameter
!                                          | E_Out_Parameter
!                                          | E_Variable
  
                      --  The reference may be modified through a dereference
  
*************** package body Sem_Util is
*** 4150,4157 ****
  
           --  Examine the expression of a postcondition
  
!          else pragma Assert (Nam_In (Nam, Name_Postcondition,
!                                           Name_Refined_Post));
              Check_Expression (Expr);
           end if;
        end Check_Result_And_Post_State_In_Pragma;
--- 5070,5076 ----
  
           --  Examine the expression of a postcondition
  
!          else pragma Assert (Nam in Name_Postcondition | Name_Refined_Post);
              Check_Expression (Expr);
           end if;
        end Check_Result_And_Post_State_In_Pragma;
*************** package body Sem_Util is
*** 4225,4232 ****
  
        Prag := Pre_Post_Conditions (Items);
        while Present (Prag) loop
!          if Nam_In (Pragma_Name_Unmapped (Prag),
!                     Name_Postcondition, Name_Refined_Post)
             and then not Error_Posted (Prag)
           then
              Post_Prag := Prag;
--- 5144,5151 ----
  
        Prag := Pre_Post_Conditions (Items);
        while Present (Prag) loop
!          if Pragma_Name_Unmapped (Prag)
!               in Name_Postcondition | Name_Refined_Post
             and then not Error_Posted (Prag)
           then
              Post_Prag := Prag;
*************** package body Sem_Util is
*** 4253,4259 ****
  
        --  Do not emit any errors if the subprogram is not a function
  
!       if not Ekind_In (Spec_Id, E_Function, E_Generic_Function) then
           null;
  
        --  Regardless of whether the function has postconditions or contract
--- 5172,5178 ----
  
        --  Do not emit any errors if the subprogram is not a function
  
!       if Ekind (Spec_Id) not in E_Function | E_Generic_Function then
           null;
  
        --  Regardless of whether the function has postconditions or contract
*************** package body Sem_Util is
*** 4386,4393 ****
           if Present (Decls) then
              Decl := First (Decls);
              while Present (Decl) loop
!                if Nkind_In (Decl, N_Generic_Package_Declaration,
!                                   N_Package_Declaration)
                 then
                    Check_Package (Decl);
                 end if;
--- 5305,5312 ----
           if Present (Decls) then
              Decl := First (Decls);
              while Present (Decl) loop
!                if Nkind (Decl) in N_Generic_Package_Declaration
!                                 | N_Package_Declaration
                 then
                    Check_Package (Decl);
                 end if;
*************** package body Sem_Util is
*** 4430,4439 ****
        --  An entry, protected, subprogram, or task body may declare a nested
        --  package.
  
!       elsif Nkind_In (Context, N_Entry_Body,
!                                N_Protected_Body,
!                                N_Subprogram_Body,
!                                N_Task_Body)
        then
           --  Do not verify proper state refinement when the body is subject to
           --  pragma SPARK_Mode Off because this disables the requirement for
--- 5349,5358 ----
        --  An entry, protected, subprogram, or task body may declare a nested
        --  package.
  
!       elsif Nkind (Context) in N_Entry_Body
!                              | N_Protected_Body
!                              | N_Subprogram_Body
!                              | N_Task_Body
        then
           --  Do not verify proper state refinement when the body is subject to
           --  pragma SPARK_Mode Off because this disables the requirement for
*************** package body Sem_Util is
*** 4458,4465 ****
  
        --  A library level [generic] package may declare a nested package
  
!       elsif Nkind_In (Context, N_Generic_Package_Declaration,
!                                N_Package_Declaration)
          and then Is_Main_Unit
        then
           Check_Package (Context);
--- 5377,5384 ----
  
        --  A library level [generic] package may declare a nested package
  
!       elsif Nkind (Context) in
!               N_Generic_Package_Declaration | N_Package_Declaration
          and then Is_Main_Unit
        then
           Check_Package (Context);
*************** package body Sem_Util is
*** 4512,4518 ****
  
           --  For indexed and selected components, recursively check the prefix
  
!          if Nkind_In (Obj, N_Indexed_Component, N_Selected_Component) then
              return Enclosing_Protected_Type (Prefix (Obj));
  
           --  The object does not denote a protected component
--- 5431,5437 ----
  
           --  For indexed and selected components, recursively check the prefix
  
!          if Nkind (Obj) in N_Indexed_Component | N_Selected_Component then
              return Enclosing_Protected_Type (Prefix (Obj));
  
           --  The object does not denote a protected component
*************** package body Sem_Util is
*** 4567,4574 ****
           if Present (Pref_Encl_Typ)
             and then No (Cont_Encl_Typ)
             and then Is_Public_Operation
!            and then Scope_Depth (Pref_Encl_Typ) >=
!                                        Object_Access_Level (Context)
           then
              Error_Msg_N
                ("??possible unprotected access to protected data", Expr);
--- 5486,5494 ----
           if Present (Pref_Encl_Typ)
             and then No (Cont_Encl_Typ)
             and then Is_Public_Operation
!            and then Scope_Depth (Pref_Encl_Typ)
!                       >= Static_Accessibility_Level
!                            (Context, Object_Decl_Level)
           then
              Error_Msg_N
                ("??possible unprotected access to protected data", Expr);
*************** package body Sem_Util is
*** 4616,4624 ****
                 Constit_Id := Entity_Of (Constit);
  
                 if Present (Constit_Id)
!                  and then Ekind_In (Constit_Id, E_Abstract_State,
!                                                 E_Constant,
!                                                 E_Variable)
                 then
                    Remove (States, Constit_Id);
                 end if;
--- 5536,5543 ----
                 Constit_Id := Entity_Of (Constit);
  
                 if Present (Constit_Id)
!                  and then Ekind (Constit_Id) in
!                             E_Abstract_State | E_Constant | E_Variable
                 then
                    Remove (States, Constit_Id);
                 end if;
*************** package body Sem_Util is
*** 4746,4751 ****
--- 5665,5760 ----
        end if;
     end Check_Unused_Body_States;
  
+    ------------------------------------
+    -- Check_Volatility_Compatibility --
+    ------------------------------------
+ 
+    procedure Check_Volatility_Compatibility
+      (Id1, Id2                     : Entity_Id;
+       Description_1, Description_2 : String;
+       Srcpos_Bearer                : Node_Id) is
+ 
+    begin
+       if SPARK_Mode /= On then
+          return;
+       end if;
+ 
+       declare
+          AR1 : constant Boolean := Async_Readers_Enabled (Id1);
+          AW1 : constant Boolean := Async_Writers_Enabled (Id1);
+          ER1 : constant Boolean := Effective_Reads_Enabled (Id1);
+          EW1 : constant Boolean := Effective_Writes_Enabled (Id1);
+          AR2 : constant Boolean := Async_Readers_Enabled (Id2);
+          AW2 : constant Boolean := Async_Writers_Enabled (Id2);
+          ER2 : constant Boolean := Effective_Reads_Enabled (Id2);
+          EW2 : constant Boolean := Effective_Writes_Enabled (Id2);
+ 
+          AR_Check_Failed : constant Boolean := AR1 and not AR2;
+          AW_Check_Failed : constant Boolean := AW1 and not AW2;
+          ER_Check_Failed : constant Boolean := ER1 and not ER2;
+          EW_Check_Failed : constant Boolean := EW1 and not EW2;
+ 
+          package Failure_Description is
+             procedure Note_If_Failure
+               (Failed : Boolean; Aspect_Name : String);
+             --  If Failed is False, do nothing.
+             --  If Failed is True, add Aspect_Name to the failure description.
+ 
+             function Failure_Text return String;
+             --  returns accumulated list of failing aspects
+          end Failure_Description;
+ 
+          package body Failure_Description is
+             Description_Buffer : Bounded_String;
+ 
+             ---------------------
+             -- Note_If_Failure --
+             ---------------------
+ 
+             procedure Note_If_Failure
+               (Failed : Boolean; Aspect_Name : String) is
+             begin
+                if Failed then
+                   if Description_Buffer.Length /= 0 then
+                      Append (Description_Buffer, ", ");
+                   end if;
+                   Append (Description_Buffer, Aspect_Name);
+                end if;
+             end Note_If_Failure;
+ 
+             ------------------
+             -- Failure_Text --
+             ------------------
+ 
+             function Failure_Text return String is
+             begin
+                return +Description_Buffer;
+             end Failure_Text;
+          end Failure_Description;
+ 
+          use Failure_Description;
+       begin
+          if AR_Check_Failed
+            or AW_Check_Failed
+            or ER_Check_Failed
+            or EW_Check_Failed
+          then
+             Note_If_Failure (AR_Check_Failed, "Async_Readers");
+             Note_If_Failure (AW_Check_Failed, "Async_Writers");
+             Note_If_Failure (ER_Check_Failed, "Effective_Reads");
+             Note_If_Failure (EW_Check_Failed, "Effective_Writes");
+ 
+             Error_Msg_N
+               (Description_1
+                  & " and "
+                  & Description_2
+                  & " are not compatible with respect to volatility due to "
+                  & Failure_Text,
+                Srcpos_Bearer);
+          end if;
+       end;
+    end Check_Volatility_Compatibility;
+ 
     -----------------
     -- Choice_List --
     -----------------
*************** package body Sem_Util is
*** 4800,4806 ****
              elsif Ekind (Item_Id) = E_Abstract_State then
                 Append_New_Elmt (Item_Id, States);
  
!             elsif Ekind_In (Item_Id, E_Constant, E_Variable)
                and then Is_Visible_Object (Item_Id)
              then
                 Append_New_Elmt (Item_Id, States);
--- 5809,5815 ----
              elsif Ekind (Item_Id) = E_Abstract_State then
                 Append_New_Elmt (Item_Id, States);
  
!             elsif Ekind (Item_Id) in E_Constant | E_Variable
                and then Is_Visible_Object (Item_Id)
              then
                 Append_New_Elmt (Item_Id, States);
*************** package body Sem_Util is
*** 5425,5435 ****
                         and then Etype (First_Formal (Id)) =
                                  Etype (Next_Formal (First_Formal (Id)))
                       then
!                         if No (Eq_Prims_List) then
!                            Eq_Prims_List := New_Elmt_List;
!                         end if;
! 
!                         Append_Elmt (Id, Eq_Prims_List);
                       end if;
                    end if;
                 end if;
--- 6434,6440 ----
                         and then Etype (First_Formal (Id)) =
                                  Etype (Next_Formal (First_Formal (Id)))
                       then
!                         Append_New_Elmt (Id, Eq_Prims_List);
                       end if;
                    end if;
                 end if;
*************** package body Sem_Util is
*** 5587,5593 ****
           --  will happen when something is evaluated if it never will be
           --  evaluated.
  
!          if not Is_Statically_Unevaluated (N) then
              if Present (Ent) then
                 Error_Msg_NEL (Msgc (1 .. Msgl), N, Ent, Eloc);
              else
--- 6592,6605 ----
           --  will happen when something is evaluated if it never will be
           --  evaluated.
  
!          --  Suppress error reporting when checking that the expression of a
!          --  static expression function is a potentially static expression,
!          --  because we don't want additional errors being reported during the
!          --  preanalysis of the expression (see Analyze_Expression_Function).
! 
!          if not Is_Statically_Unevaluated (N)
!            and then not Checking_Potentially_Static_Expression
!          then
              if Present (Ent) then
                 Error_Msg_NEL (Msgc (1 .. Msgl), N, Ent, Eloc);
              else
*************** package body Sem_Util is
*** 5860,5873 ****
     -- Current_Entity_In_Scope --
     -----------------------------
  
!    function Current_Entity_In_Scope (N : Node_Id) return Entity_Id is
        E  : Entity_Id;
        CS : constant Entity_Id := Current_Scope;
  
        Transient_Case : constant Boolean := Scope_Is_Transient;
  
     begin
!       E := Get_Name_Entity_Id (Chars (N));
        while Present (E)
          and then Scope (E) /= CS
          and then (not Transient_Case or else Scope (E) /= Scope (CS))
--- 6872,6885 ----
     -- Current_Entity_In_Scope --
     -----------------------------
  
!    function Current_Entity_In_Scope (N : Name_Id) return Entity_Id is
        E  : Entity_Id;
        CS : constant Entity_Id := Current_Scope;
  
        Transient_Case : constant Boolean := Scope_Is_Transient;
  
     begin
!       E := Get_Name_Entity_Id (N);
        while Present (E)
          and then Scope (E) /= CS
          and then (not Transient_Case or else Scope (E) /= Scope (CS))
*************** package body Sem_Util is
*** 5878,5883 ****
--- 6890,6904 ----
        return E;
     end Current_Entity_In_Scope;
  
+    -----------------------------
+    -- Current_Entity_In_Scope --
+    -----------------------------
+ 
+    function Current_Entity_In_Scope (N : Node_Id) return Entity_Id is
+    begin
+       return Current_Entity_In_Scope (Chars (N));
+    end Current_Entity_In_Scope;
+ 
     -------------------
     -- Current_Scope --
     -------------------
*************** package body Sem_Util is
*** 5937,5945 ****
        end if;
     end Current_Subprogram;
  
!    ----------------------------------
     -- Deepest_Type_Access_Level --
!    ----------------------------------
  
     function Deepest_Type_Access_Level (Typ : Entity_Id) return Uint is
     begin
--- 6958,6966 ----
        end if;
     end Current_Subprogram;
  
!    -------------------------------
     -- Deepest_Type_Access_Level --
!    -------------------------------
  
     function Deepest_Type_Access_Level (Typ : Entity_Id) return Uint is
     begin
*************** package body Sem_Util is
*** 5970,5976 ****
     -- Defining_Entity --
     ---------------------
  
!    function Defining_Entity (N : Node_Id) return Entity_Id is
     begin
        case Nkind (N) is
           when N_Abstract_Subprogram_Declaration
--- 6991,7000 ----
     -- Defining_Entity --
     ---------------------
  
!    function Defining_Entity
!      (N               : Node_Id;
!       Empty_On_Errors : Boolean := False) return Entity_Id
!    is
     begin
        case Nkind (N) is
           when N_Abstract_Subprogram_Declaration
*************** package body Sem_Util is
*** 6069,6074 ****
--- 7093,7102 ----
              return Entity (Identifier (N));
  
           when others =>
+             if Empty_On_Errors then
+                return Empty;
+             end if;
+ 
              raise Program_Error;
        end case;
     end Defining_Entity;
*************** package body Sem_Util is
*** 6126,6133 ****
  
        function Is_Renaming (N : Node_Id) return Boolean is
        begin
!          return
!            Is_Entity_Name (N) and then Present (Renamed_Entity (Entity (N)));
        end Is_Renaming;
  
        -----------------------
--- 7154,7181 ----
  
        function Is_Renaming (N : Node_Id) return Boolean is
        begin
!          if not Is_Entity_Name (N) then
!             return False;
!          end if;
! 
!          case Ekind (Entity (N)) is
!             when E_Variable | E_Constant =>
!                return Present (Renamed_Object (Entity (N)));
! 
!             when E_Exception
!                | E_Function
!                | E_Generic_Function
!                | E_Generic_Package
!                | E_Generic_Procedure
!                | E_Operator
!                | E_Package
!                | E_Procedure
!             =>
!                return Present (Renamed_Entity (Entity (N)));
! 
!             when others =>
!                return False;
!          end case;
        end Is_Renaming;
  
        -----------------------
*************** package body Sem_Util is
*** 6354,6360 ****
     function Denotes_Same_Prefix (A1, A2 : Node_Id) return Boolean is
     begin
        if Is_Entity_Name (A1) then
!          if Nkind_In (A2, N_Selected_Component, N_Indexed_Component)
             and then not Is_Access_Type (Etype (A1))
           then
              return Denotes_Same_Object (A1, Prefix (A2))
--- 7402,7408 ----
     function Denotes_Same_Prefix (A1, A2 : Node_Id) return Boolean is
     begin
        if Is_Entity_Name (A1) then
!          if Nkind (A2) in N_Selected_Component | N_Indexed_Component
             and then not Is_Access_Type (Etype (A1))
           then
              return Denotes_Same_Object (A1, Prefix (A2))
*************** package body Sem_Util is
*** 6366,6374 ****
        elsif Is_Entity_Name (A2) then
           return Denotes_Same_Prefix (A1 => A2, A2 => A1);
  
!       elsif Nkind_In (A1, N_Selected_Component, N_Indexed_Component, N_Slice)
                and then
!             Nkind_In (A2, N_Selected_Component, N_Indexed_Component, N_Slice)
        then
           declare
              Root1, Root2   : Node_Id;
--- 7414,7422 ----
        elsif Is_Entity_Name (A2) then
           return Denotes_Same_Prefix (A1 => A2, A2 => A1);
  
!       elsif Nkind (A1) in N_Selected_Component | N_Indexed_Component | N_Slice
                and then
!             Nkind (A2) in N_Selected_Component | N_Indexed_Component | N_Slice
        then
           declare
              Root1, Root2   : Node_Id;
*************** package body Sem_Util is
*** 6377,6384 ****
           begin
              Root1 := Prefix (A1);
              while not Is_Entity_Name (Root1) loop
!                if not Nkind_In
!                  (Root1, N_Selected_Component, N_Indexed_Component)
                 then
                    return False;
                 else
--- 7425,7432 ----
           begin
              Root1 := Prefix (A1);
              while not Is_Entity_Name (Root1) loop
!                if Nkind (Root1) not in
!                     N_Selected_Component | N_Indexed_Component
                 then
                    return False;
                 else
*************** package body Sem_Util is
*** 6390,6397 ****
  
              Root2 := Prefix (A2);
              while not Is_Entity_Name (Root2) loop
!                if not Nkind_In (Root2, N_Selected_Component,
!                                        N_Indexed_Component)
                 then
                    return False;
                 else
--- 7438,7445 ----
  
              Root2 := Prefix (A2);
              while not Is_Entity_Name (Root2) loop
!                if Nkind (Root2) not in
!                     N_Selected_Component | N_Indexed_Component
                 then
                    return False;
                 else
*************** package body Sem_Util is
*** 6452,6457 ****
--- 7500,7570 ----
        return Denotes_Discriminant (L) or else Denotes_Discriminant (H);
     end Depends_On_Discriminant;
  
+    -------------------------------------
+    -- Derivation_Too_Early_To_Inherit --
+    -------------------------------------
+ 
+    function Derivation_Too_Early_To_Inherit
+      (Typ : Entity_Id; Streaming_Op : TSS_Name_Type) return Boolean is
+       Btyp        : constant Entity_Id := Implementation_Base_Type (Typ);
+       Parent_Type : Entity_Id;
+    begin
+       if Is_Derived_Type (Btyp) then
+          Parent_Type := Implementation_Base_Type (Etype (Btyp));
+          pragma Assert (Parent_Type /= Btyp);
+          if Has_Stream_Attribute_Definition
+               (Parent_Type, Streaming_Op)
+            and then In_Same_Extended_Unit (Btyp, Parent_Type)
+            and then Instantiation (Get_Source_File_Index (Sloc (Btyp))) =
+                     Instantiation (Get_Source_File_Index (Sloc (Parent_Type)))
+          then
+             declare
+                --  ??? Avoid code duplication here with
+                --  Sem_Cat.Has_Stream_Attribute_Definition by introducing a
+                --  new function to be called from both places?
+ 
+                Rep_Item : Node_Id := First_Rep_Item (Parent_Type);
+                Real_Rep : Node_Id;
+                Found    : Boolean := False;
+             begin
+                while Present (Rep_Item) loop
+                   Real_Rep := Rep_Item;
+ 
+                   if Nkind (Rep_Item) = N_Aspect_Specification then
+                      Real_Rep := Aspect_Rep_Item (Rep_Item);
+                   end if;
+ 
+                   if Nkind (Real_Rep) = N_Attribute_Definition_Clause then
+                      case Chars (Real_Rep) is
+                         when Name_Read =>
+                            Found := Streaming_Op = TSS_Stream_Read;
+ 
+                         when Name_Write =>
+                            Found := Streaming_Op = TSS_Stream_Write;
+ 
+                         when Name_Input =>
+                            Found := Streaming_Op = TSS_Stream_Input;
+ 
+                         when Name_Output =>
+                            Found := Streaming_Op = TSS_Stream_Output;
+ 
+                         when others =>
+                            null;
+                      end case;
+                   end if;
+ 
+                   if Found then
+                      return Earlier_In_Extended_Unit (Btyp, Real_Rep);
+                   end if;
+ 
+                   Next_Rep_Item (Rep_Item);
+                end loop;
+             end;
+          end if;
+       end if;
+       return False;
+    end Derivation_Too_Early_To_Inherit;
+ 
     -------------------------
     -- Designate_Same_Unit --
     -------------------------
*************** package body Sem_Util is
*** 6501,6519 ****
     --  Start of processing for Designate_Same_Unit
  
     begin
!       if Nkind_In (K1, N_Identifier, N_Defining_Identifier)
             and then
!          Nkind_In (K2, N_Identifier, N_Defining_Identifier)
        then
           return Chars (Name1) = Chars (Name2);
  
!       elsif Nkind_In (K1, N_Expanded_Name,
!                           N_Selected_Component,
!                           N_Defining_Program_Unit_Name)
!               and then
!             Nkind_In (K2, N_Expanded_Name,
!                           N_Selected_Component,
!                           N_Defining_Program_Unit_Name)
        then
           return
             (Chars (Select_Node (Name1)) = Chars (Select_Node (Name2)))
--- 7614,7632 ----
     --  Start of processing for Designate_Same_Unit
  
     begin
!       if K1 in N_Identifier | N_Defining_Identifier
             and then
!          K2 in N_Identifier | N_Defining_Identifier
        then
           return Chars (Name1) = Chars (Name2);
  
!       elsif K1 in N_Expanded_Name
!                 | N_Selected_Component
!                 | N_Defining_Program_Unit_Name
!         and then
!             K2 in N_Expanded_Name
!                 | N_Selected_Component
!                 | N_Defining_Program_Unit_Name
        then
           return
             (Chars (Select_Node (Name1)) = Chars (Select_Node (Name2)))
*************** package body Sem_Util is
*** 6566,6768 ****
        Analyze (N);
     end Diagnose_Iterated_Component_Association;
  
-    ---------------------------------
-    -- Dynamic_Accessibility_Level --
-    ---------------------------------
- 
-    function Dynamic_Accessibility_Level (N : Node_Id) return Node_Id is
-       Loc : constant Source_Ptr := Sloc (N);
- 
-       function Make_Level_Literal (Level : Uint) return Node_Id;
-       --  Construct an integer literal representing an accessibility level
-       --  with its type set to Natural.
- 
-       ------------------------
-       -- Make_Level_Literal --
-       ------------------------
- 
-       function Make_Level_Literal (Level : Uint) return Node_Id is
-          Result : constant Node_Id := Make_Integer_Literal (Loc, Level);
- 
-       begin
-          Set_Etype (Result, Standard_Natural);
-          return Result;
-       end Make_Level_Literal;
- 
-       --  Local variables
- 
-       Expr : Node_Id := Original_Node (N);
-       --  Expr references the original node because at this stage N may be the
-       --  reference to a variable internally created by the frontend to remove
-       --  side effects of an expression.
- 
-       E    : Entity_Id;
- 
-    --  Start of processing for Dynamic_Accessibility_Level
- 
-    begin
-       if Is_Entity_Name (Expr) then
-          E := Entity (Expr);
- 
-          if Present (Renamed_Object (E)) then
-             return Dynamic_Accessibility_Level (Renamed_Object (E));
-          end if;
- 
-          if (Is_Formal (E)
-               or else Ekind_In (E, E_Variable, E_Constant))
-            and then Present (Get_Accessibility (E))
-          then
-             return New_Occurrence_Of (Get_Accessibility (E), Loc);
-          end if;
-       end if;
- 
-       --  Handle a constant-folded conditional expression by avoiding use of
-       --  the original node.
- 
-       if Nkind_In (Expr, N_Case_Expression, N_If_Expression) then
-          Expr := N;
-       end if;
- 
-       --  Unimplemented: Ptr.all'Access, where Ptr has Extra_Accessibility ???
- 
-       case Nkind (Expr) is
-          --  It may be possible that we have an access object denoted by an
-          --  attribute reference for 'Loop_Entry which may, in turn, have an
-          --  indexed component representing a loop identifier.
- 
-          --  In this case we must climb up the indexed component and set expr
-          --  to the attribute reference so the rest of the machinery can
-          --  operate as expected.
- 
-          when N_Indexed_Component =>
-             if Nkind (Prefix (Expr)) = N_Attribute_Reference
-               and then Get_Attribute_Id (Attribute_Name (Prefix (Expr)))
-                          = Attribute_Loop_Entry
-             then
-                Expr := Prefix (Expr);
-             end if;
- 
-          --  For access discriminant, the level of the enclosing object
- 
-          when N_Selected_Component =>
-             if Ekind (Entity (Selector_Name (Expr))) = E_Discriminant
-               and then Ekind (Etype (Entity (Selector_Name (Expr)))) =
-                                             E_Anonymous_Access_Type
-             then
-                return Make_Level_Literal (Object_Access_Level (Expr));
-             end if;
- 
-          when N_Attribute_Reference =>
-             case Get_Attribute_Id (Attribute_Name (Expr)) is
- 
-                --  Ignore 'Loop_Entry, 'Result, and 'Old as they can be used to
-                --  identify access objects and do not have an effect on
-                --  accessibility level.
- 
-                when Attribute_Loop_Entry | Attribute_Old | Attribute_Result =>
-                   null;
- 
-                --  For X'Access, the level of the prefix X
- 
-                when Attribute_Access =>
-                   return Make_Level_Literal
-                            (Object_Access_Level (Prefix (Expr)));
- 
-                --  Treat the unchecked attributes as library-level
- 
-                when Attribute_Unchecked_Access
-                   | Attribute_Unrestricted_Access
-                =>
-                   return Make_Level_Literal (Scope_Depth (Standard_Standard));
- 
-                --  No other access-valued attributes
- 
-                when others =>
-                   raise Program_Error;
-             end case;
- 
-          when N_Allocator =>
- 
-             --  This is not fully implemented since it depends on context (see
-             --  3.10.2(14/3-14.2/3). More work is needed in the following cases
-             --
-             --  1) For an anonymous allocator defining the value of an access
-             --     parameter, the accessibility level is that of the innermost
-             --     master of the call; however currently we pass the level of
-             --     execution of the called subprogram, which is one greater
-             --     than the current scope level (see Expand_Call_Helper).
-             --
-             --     For example, a statement is a master and a declaration is
-             --     not a master; so we should not pass in the same level for
-             --     the following cases:
-             --
-             --         function F (X : access Integer) return T is ... ;
-             --         Decl : T := F (new Integer); -- level is off by one
-             --      begin
-             --         Decl := F (new Integer); -- we get this case right
-             --
-             --  2) For an anonymous allocator that defines the result of a
-             --     function with an access result, the accessibility level is
-             --     determined as though the allocator were in place of the call
-             --     of the function. In the special case of a call that is the
-             --     operand of a type conversion the level is that of the target
-             --     access type of the conversion.
-             --
-             --  3) For an anonymous allocator defining an access discriminant
-             --     the accessibility level is determined as follows:
-             --       * for an allocator used to define the discriminant of an
-             --         object, the level of the object
-             --       * for an allocator used to define the constraint in a
-             --         subtype_indication in any other context, the level of
-             --         the master that elaborates the subtype_indication.
- 
-             case Nkind (Parent (N)) is
-                when N_Object_Declaration =>
- 
-                   --  For an anonymous allocator whose type is that of a
-                   --  stand-alone object of an anonymous access-to-object type,
-                   --  the accessibility level is that of the declaration of the
-                   --  stand-alone object.
- 
-                   return
-                     Make_Level_Literal
-                       (Object_Access_Level
-                          (Defining_Identifier (Parent (N))));
- 
-                when N_Assignment_Statement =>
-                   return
-                     Make_Level_Literal
-                       (Object_Access_Level (Name (Parent (N))));
- 
-                when others =>
-                   declare
-                      S : constant String :=
-                            Node_Kind'Image (Nkind (Parent (N)));
-                   begin
-                      Error_Msg_Strlen := S'Length;
-                      Error_Msg_String (1 .. Error_Msg_Strlen) := S;
-                      Error_Msg_N
-                        ("unsupported context for anonymous allocator (~)",
-                         Parent (N));
-                   end;
-             end case;
- 
-          when N_Type_Conversion =>
-             if not Is_Local_Anonymous_Access (Etype (Expr)) then
- 
-                --  Handle type conversions introduced for a rename of an
-                --  Ada 2012 stand-alone object of an anonymous access type.
- 
-                return Dynamic_Accessibility_Level (Expression (Expr));
-             end if;
- 
-          when others =>
-             null;
-       end case;
- 
-       return Make_Level_Literal (Type_Access_Level (Etype (Expr)));
-    end Dynamic_Accessibility_Level;
- 
     ------------------------
     -- Discriminated_Size --
     ------------------------
--- 7679,7684 ----
*************** package body Sem_Util is
*** 6919,6924 ****
--- 7835,7842 ----
                          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);
*************** package body Sem_Util is
*** 6938,6950 ****
     begin
        Par := Parent (N);
        while Present (Par) loop
!          if Nkind_In (Par, N_Package_Body, N_Subprogram_Body) then
              Spec_Id := Corresponding_Spec (Par);
  
              if Present (Spec_Id)
!               and then Nkind_In (Unit_Declaration_Node (Spec_Id),
!                                  N_Generic_Package_Declaration,
!                                  N_Generic_Subprogram_Declaration)
              then
                 return Par;
              end if;
--- 7856,7868 ----
     begin
        Par := Parent (N);
        while Present (Par) loop
!          if Nkind (Par) in N_Package_Body | N_Subprogram_Body then
              Spec_Id := Corresponding_Spec (Par);
  
              if Present (Spec_Id)
!               and then Nkind (Unit_Declaration_Node (Spec_Id)) in
!                          N_Generic_Package_Declaration |
!                          N_Generic_Subprogram_Declaration
              then
                 return Par;
              end if;
*************** package body Sem_Util is
*** 6968,6986 ****
     begin
        Par := Parent (N);
        while Present (Par) loop
!          if Nkind_In (Par, N_Generic_Package_Declaration,
!                            N_Generic_Subprogram_Declaration)
           then
              return Par;
  
!          elsif Nkind_In (Par, N_Package_Body, N_Subprogram_Body) then
              Spec_Id := Corresponding_Spec (Par);
  
              if Present (Spec_Id) then
                 Spec_Decl := Unit_Declaration_Node (Spec_Id);
  
!                if Nkind_In (Spec_Decl, N_Generic_Package_Declaration,
!                                        N_Generic_Subprogram_Declaration)
                 then
                    return Spec_Decl;
                 end if;
--- 7886,7904 ----
     begin
        Par := Parent (N);
        while Present (Par) loop
!          if Nkind (Par) in N_Generic_Package_Declaration
!                          | N_Generic_Subprogram_Declaration
           then
              return Par;
  
!          elsif Nkind (Par) in N_Package_Body | N_Subprogram_Body then
              Spec_Id := Corresponding_Spec (Par);
  
              if Present (Spec_Id) then
                 Spec_Decl := Unit_Declaration_Node (Spec_Id);
  
!                if Nkind (Spec_Decl) in N_Generic_Package_Declaration
!                                      | N_Generic_Subprogram_Declaration
                 then
                    return Spec_Decl;
                 end if;
*************** package body Sem_Util is
*** 6993,6998 ****
--- 7911,7944 ----
        return Empty;
     end Enclosing_Generic_Unit;
  
+    -------------------
+    -- Enclosing_HSS --
+    -------------------
+ 
+    function Enclosing_HSS (Stmt : Node_Id) return Node_Id is
+       Par : Node_Id;
+    begin
+       pragma Assert (Is_Statement (Stmt));
+ 
+       Par := Parent (Stmt);
+       while Present (Par) loop
+ 
+          if Nkind (Par) = N_Handled_Sequence_Of_Statements then
+             return Par;
+ 
+          --  Prevent the search from going too far
+ 
+          elsif Is_Body_Or_Package_Declaration (Par) then
+             return Empty;
+ 
+          end if;
+ 
+          Par := Parent (Par);
+       end loop;
+ 
+       return Par;
+    end Enclosing_HSS;
+ 
     -------------------------------
     -- Enclosing_Lib_Unit_Entity --
     -------------------------------
*************** package body Sem_Util is
*** 7050,7058 ****
        elsif Dynamic_Scope = Empty then
           return Empty;
  
!       elsif Ekind_In (Dynamic_Scope, E_Generic_Package,
!                                      E_Package,
!                                      E_Package_Body)
        then
           return Dynamic_Scope;
  
--- 7996,8003 ----
        elsif Dynamic_Scope = Empty then
           return Empty;
  
!       elsif Ekind (Dynamic_Scope) in
!               E_Generic_Package | E_Package | E_Package_Body
        then
           return Dynamic_Scope;
  
*************** package body Sem_Util is
*** 7101,7110 ****
        elsif Ekind (Dyn_Scop) = E_Subprogram_Body then
           return Corresponding_Spec (Parent (Parent (Dyn_Scop)));
  
!       elsif Ekind_In (Dyn_Scop, E_Block, E_Loop, E_Return_Statement) then
           return Enclosing_Subprogram (Dyn_Scop);
  
!       elsif Ekind_In (Dyn_Scop, E_Entry, E_Entry_Family) then
  
           --  For a task entry or entry family, return the enclosing subprogram
           --  of the task itself.
--- 8046,8055 ----
        elsif Ekind (Dyn_Scop) = E_Subprogram_Body then
           return Corresponding_Spec (Parent (Parent (Dyn_Scop)));
  
!       elsif Ekind (Dyn_Scop) in E_Block | E_Loop | E_Return_Statement then
           return Enclosing_Subprogram (Dyn_Scop);
  
!       elsif Ekind (Dyn_Scop) in E_Entry | E_Entry_Family then
  
           --  For a task entry or entry family, return the enclosing subprogram
           --  of the task itself.
*************** package body Sem_Util is
*** 7126,7142 ****
        --  The scope may appear as a private type or as a private extension
        --  whose completion is a task or protected type.
  
!       elsif Ekind_In (Dyn_Scop, E_Limited_Private_Type,
!                                 E_Record_Type_With_Private)
          and then Present (Full_View (Dyn_Scop))
!         and then Ekind_In (Full_View (Dyn_Scop), E_Task_Type, E_Protected_Type)
        then
           return Get_Task_Body_Procedure (Full_View (Dyn_Scop));
  
        --  No body is generated if the protected operation is eliminated
  
!       elsif Convention (Dyn_Scop) = Convention_Protected
!         and then not Is_Eliminated (Dyn_Scop)
          and then Present (Protected_Body_Subprogram (Dyn_Scop))
        then
           return Protected_Body_Subprogram (Dyn_Scop);
--- 8071,8086 ----
        --  The scope may appear as a private type or as a private extension
        --  whose completion is a task or protected type.
  
!       elsif Ekind (Dyn_Scop) in
!               E_Limited_Private_Type | E_Record_Type_With_Private
          and then Present (Full_View (Dyn_Scop))
!         and then Ekind (Full_View (Dyn_Scop)) in E_Task_Type | E_Protected_Type
        then
           return Get_Task_Body_Procedure (Full_View (Dyn_Scop));
  
        --  No body is generated if the protected operation is eliminated
  
!       elsif not Is_Eliminated (Dyn_Scop)
          and then Present (Protected_Body_Subprogram (Dyn_Scop))
        then
           return Protected_Body_Subprogram (Dyn_Scop);
*************** package body Sem_Util is
*** 7188,7198 ****
     --  Start of processing for End_Keyword_Location
  
     begin
!       if Nkind_In (N, N_Block_Statement,
!                       N_Entry_Body,
!                       N_Package_Body,
!                       N_Subprogram_Body,
!                       N_Task_Body)
        then
           Owner := Handled_Statement_Sequence (N);
  
--- 8132,8142 ----
     --  Start of processing for End_Keyword_Location
  
     begin
!       if Nkind (N) in N_Block_Statement
!                     | N_Entry_Body
!                     | N_Package_Body
!                     | N_Subprogram_Body
!                     | N_Task_Body
        then
           Owner := Handled_Statement_Sequence (N);
  
*************** package body Sem_Util is
*** 7202,7214 ****
        elsif Nkind (N) = N_Protected_Body then
           Owner := N;
  
!       elsif Nkind_In (N, N_Protected_Type_Declaration,
!                          N_Single_Protected_Declaration)
        then
           Owner := Protected_Definition (N);
  
!       elsif Nkind_In (N, N_Single_Task_Declaration,
!                          N_Task_Type_Declaration)
        then
           Owner := Task_Definition (N);
  
--- 8146,8157 ----
        elsif Nkind (N) = N_Protected_Body then
           Owner := N;
  
!       elsif Nkind (N) in N_Protected_Type_Declaration
!                        | N_Single_Protected_Declaration
        then
           Owner := Protected_Definition (N);
  
!       elsif Nkind (N) in N_Single_Task_Declaration | N_Task_Type_Declaration
        then
           Owner := Task_Definition (N);
  
*************** package body Sem_Util is
*** 7353,7358 ****
--- 8296,8308 ----
                    else
                       Set_Name_Entity_Id (Chars (E), Homonym (E));
                    end if;
+ 
+                   --  The inherited operation cannot be retrieved
+                   --  by name, even though it may remain accesssible
+                   --  in some cases involving subprogram bodies without
+                   --  specs appearing in with_clauses..
+ 
+                   Set_Is_Immediately_Visible (E, False);
                 end if;
              end;
  
*************** package body Sem_Util is
*** 7464,7470 ****
                 --  Avoid cascaded messages with duplicate components in
                 --  derived types.
  
!                if Ekind_In (E, E_Component, E_Discriminant) then
                    return;
                 end if;
              end if;
--- 8414,8420 ----
                 --  Avoid cascaded messages with duplicate components in
                 --  derived types.
  
!                if Ekind (E) in E_Component | E_Discriminant then
                    return;
                 end if;
              end if;
*************** package body Sem_Util is
*** 7499,7505 ****
        --  of inheriting components in a derived record definition. Preserve
        --  their Ekind and Etype.
  
!       if Ekind_In (Def_Id, E_Discriminant, E_Component) then
           null;
  
        --  If a type is already set, leave it alone (happens when a type
--- 8449,8455 ----
        --  of inheriting components in a derived record definition. Preserve
        --  their Ekind and Etype.
  
!       if Ekind (Def_Id) in E_Discriminant | E_Component then
           null;
  
        --  If a type is already set, leave it alone (happens when a type
*************** package body Sem_Util is
*** 7516,7533 ****
           Set_Etype (Def_Id, Any_Type);
        end if;
  
!       --  Inherited discriminants and components in derived record types are
!       --  immediately visible. Itypes are not.
! 
!       --  Unless the Itype is for a record type with a corresponding remote
!       --  type (what is that about, it was not commented ???)
  
!       if Ekind_In (Def_Id, E_Discriminant, E_Component)
!         or else
!           ((not Is_Record_Type (Def_Id)
!              or else No (Corresponding_Remote_Type (Def_Id)))
!             and then not Is_Itype (Def_Id))
!       then
           Set_Is_Immediately_Visible (Def_Id);
           Set_Current_Entity         (Def_Id);
        end if;
--- 8466,8474 ----
           Set_Etype (Def_Id, Any_Type);
        end if;
  
!       --  All entities except Itypes are immediately visible
  
!       if not Is_Itype (Def_Id) then
           Set_Is_Immediately_Visible (Def_Id);
           Set_Current_Entity         (Def_Id);
        end if;
*************** package body Sem_Util is
*** 7536,7587 ****
        Append_Entity     (Def_Id, S);
        Set_Public_Status (Def_Id);
  
-       --  Declaring a homonym is not allowed in SPARK ...
- 
-       if Present (C) and then Restriction_Check_Required (SPARK_05) then
-          declare
-             Enclosing_Subp : constant Node_Id := Enclosing_Subprogram (Def_Id);
-             Enclosing_Pack : constant Node_Id := Enclosing_Package (Def_Id);
-             Other_Scope    : constant Node_Id := Enclosing_Dynamic_Scope (C);
- 
-          begin
-             --  ... unless the new declaration is in a subprogram, and the
-             --  visible declaration is a variable declaration or a parameter
-             --  specification outside that subprogram.
- 
-             if Present (Enclosing_Subp)
-               and then Nkind_In (Parent (C), N_Object_Declaration,
-                                              N_Parameter_Specification)
-               and then not Scope_Within_Or_Same (Other_Scope, Enclosing_Subp)
-             then
-                null;
- 
-             --  ... or the new declaration is in a package, and the visible
-             --  declaration occurs outside that package.
- 
-             elsif Present (Enclosing_Pack)
-               and then not Scope_Within_Or_Same (Other_Scope, Enclosing_Pack)
-             then
-                null;
- 
-             --  ... or the new declaration is a component declaration in a
-             --  record type definition.
- 
-             elsif Nkind (Parent (Def_Id)) = N_Component_Declaration then
-                null;
- 
-             --  Don't issue error for non-source entities
- 
-             elsif Comes_From_Source (Def_Id)
-               and then Comes_From_Source (C)
-             then
-                Error_Msg_Sloc := Sloc (C);
-                Check_SPARK_05_Restriction
-                  ("redeclaration of identifier &#", Def_Id);
-             end if;
-          end;
-       end if;
- 
        --  Warn if new entity hides an old one
  
        if Warn_On_Hiding and then Present (C)
--- 8477,8482 ----
*************** package body Sem_Util is
*** 7920,7927 ****
  
              elsif Comes_From_Source (Decl)
                or else
!                 (Nkind_In (Decl, N_Subprogram_Body,
!                                  N_Subprogram_Declaration)
                    and then Is_Expression_Function (Defining_Entity (Decl)))
              then
                 exit;
--- 8815,8821 ----
  
              elsif Comes_From_Source (Decl)
                or else
!                 (Nkind (Decl) in N_Subprogram_Body | N_Subprogram_Declaration
                    and then Is_Expression_Function (Defining_Entity (Decl)))
              then
                 exit;
*************** package body Sem_Util is
*** 7993,7999 ****
        Call_Nam : Node_Id;
  
     begin
!       if Nkind_In (Context, N_Indexed_Component, N_Selected_Component)
          and then N = Prefix (Context)
        then
           Find_Actual (Context, Formal, Call);
--- 8887,8893 ----
        Call_Nam : Node_Id;
  
     begin
!       if Nkind (Context) in N_Indexed_Component | N_Selected_Component
          and then N = Prefix (Context)
        then
           Find_Actual (Context, Formal, Call);
*************** package body Sem_Util is
*** 8004,8012 ****
        then
           Call := Parent (Context);
  
!       elsif Nkind_In (Context, N_Entry_Call_Statement,
!                                N_Function_Call,
!                                N_Procedure_Call_Statement)
        then
           Call := Context;
  
--- 8898,8906 ----
        then
           Call := Parent (Context);
  
!       elsif Nkind (Context) in N_Entry_Call_Statement
!                              | N_Function_Call
!                              | N_Procedure_Call_Statement
        then
           Call := Context;
  
*************** package body Sem_Util is
*** 8020,8028 ****
        --  we exclude overloaded calls, since we don't know enough to be sure
        --  of giving the right answer in this case.
  
!       if Nkind_In (Call, N_Entry_Call_Statement,
!                          N_Function_Call,
!                          N_Procedure_Call_Statement)
        then
           Call_Nam := Name (Call);
  
--- 8914,8922 ----
        --  we exclude overloaded calls, since we don't know enough to be sure
        --  of giving the right answer in this case.
  
!       if Nkind (Call) in N_Entry_Call_Statement
!                        | N_Function_Call
!                        | N_Procedure_Call_Statement
        then
           Call_Nam := Name (Call);
  
*************** package body Sem_Util is
*** 8066,8073 ****
                    return;
  
                 else
!                   Actual := Next_Actual (Actual);
!                   Formal := Next_Formal (Formal);
                 end if;
              end loop;
           end if;
--- 8960,8967 ----
                    return;
  
                 else
!                   Next_Actual (Actual);
!                   Next_Formal (Formal);
                 end if;
              end loop;
           end if;
*************** package body Sem_Util is
*** 8189,8195 ****
        if Has_Own_DIC (Typ) then
           DIC_Typ := Typ;
  
!          --  Otherwise the DIC pragma is inherited from a parent type
  
        else
           pragma Assert (Has_Inherited_DIC (Typ));
--- 9083,9089 ----
        if Has_Own_DIC (Typ) then
           DIC_Typ := Typ;
  
!       --  Otherwise the DIC pragma is inherited from a parent type
  
        else
           pragma Assert (Has_Inherited_DIC (Typ));
*************** package body Sem_Util is
*** 8422,8428 ****
                 Expr := Prefix (Expr);
                 exit;
  
!                --  Check for Const where Const is a constant entity
  
              elsif Is_Entity_Name (Expr)
                and then Ekind (Entity (Expr)) = E_Constant
--- 9316,9322 ----
                 Expr := Prefix (Expr);
                 exit;
  
!             --  Check for Const where Const is a constant entity
  
              elsif Is_Entity_Name (Expr)
                and then Ekind (Entity (Expr)) = E_Constant
*************** package body Sem_Util is
*** 8448,8455 ****
  
              --  Check for components
  
!             elsif
!               Nkind_In (Expr, N_Selected_Component, N_Indexed_Component)
              then
                 Expr := Prefix (Expr);
                 Off := True;
--- 9342,9348 ----
  
              --  Check for components
  
!             elsif Nkind (Expr) in N_Selected_Component | N_Indexed_Component
              then
                 Expr := Prefix (Expr);
                 Off := True;
*************** package body Sem_Util is
*** 8800,8806 ****
  
           --  Single global item declaration (only input items)
  
!          elsif Nkind_In (List, N_Expanded_Name, N_Identifier) then
              if Global_Mode = Name_Input then
                 return List;
              else
--- 9693,9699 ----
  
           --  Single global item declaration (only input items)
  
!          elsif Nkind (List) in N_Expanded_Name | N_Identifier then
              if Global_Mode = Name_Input then
                 return List;
              else
*************** package body Sem_Util is
*** 8854,8863 ****
     --  Start of processing for First_Global
  
     begin
!       pragma Assert (Nam_In (Global_Mode, Name_In_Out,
!                                           Name_Input,
!                                           Name_Output,
!                                           Name_Proof_In));
  
        --  Retrieve the suitable pragma Global or Refined_Global. In the second
        --  case, it can only be located on the body entity.
--- 9747,9756 ----
     --  Start of processing for First_Global
  
     begin
!       pragma Assert (Global_Mode in Name_In_Out
!                                   | Name_Input
!                                   | Name_Output
!                                   | Name_Proof_In);
  
        --  Retrieve the suitable pragma Global or Refined_Global. In the second
        --  case, it can only be located on the body entity.
*************** package body Sem_Util is
*** 8906,8912 ****
  
     function Fix_Msg (Id : Entity_Id; Msg : String) return String is
        Is_Task   : constant Boolean :=
!                     Ekind_In (Id, E_Task_Body, E_Task_Type)
                        or else Is_Single_Task_Object (Id);
        Msg_Last  : constant Natural := Msg'Last;
        Msg_Index : Natural;
--- 9799,9805 ----
  
     function Fix_Msg (Id : Entity_Id; Msg : String) return String is
        Is_Task   : constant Boolean :=
!                     Ekind (Id) in E_Task_Body | E_Task_Type
                        or else Is_Single_Task_Object (Id);
        Msg_Last  : constant Natural := Msg'Last;
        Msg_Index : Natural;
*************** package body Sem_Util is
*** 8926,8932 ****
           if Msg_Index <= Msg_Last - 10
             and then Msg (Msg_Index .. Msg_Index + 9) = "subprogram"
           then
!             if Ekind_In (Id, E_Entry, E_Entry_Family) then
                 Res (Res_Index .. Res_Index + 4) := "entry";
                 Res_Index := Res_Index + 5;
  
--- 9819,9825 ----
           if Msg_Index <= Msg_Last - 10
             and then Msg (Msg_Index .. Msg_Index + 9) = "subprogram"
           then
!             if Is_Entry (Id) then
                 Res (Res_Index .. Res_Index + 4) := "entry";
                 Res_Index := Res_Index + 5;
  
*************** package body Sem_Util is
*** 8983,8993 ****
     -----------------------
  
     procedure Gather_Components
!      (Typ           : Entity_Id;
!       Comp_List     : Node_Id;
!       Governed_By   : List_Id;
!       Into          : Elist_Id;
!       Report_Errors : out Boolean)
     is
        Assoc           : Node_Id;
        Variant         : Node_Id;
--- 9876,9888 ----
     -----------------------
  
     procedure Gather_Components
!      (Typ                   : Entity_Id;
!       Comp_List             : Node_Id;
!       Governed_By           : List_Id;
!       Into                  : Elist_Id;
!       Report_Errors         : out Boolean;
!       Allow_Compile_Time    : Boolean := False;
!       Include_Interface_Tag : Boolean := False)
     is
        Assoc           : Node_Id;
        Variant         : Node_Id;
*************** package body Sem_Util is
*** 9019,9033 ****
  
        while Present (Comp_Item) loop
  
!          --  Skip the tag of a tagged record, the interface tags, as well
!          --  as all items that are not user components (anonymous types,
!          --  rep clauses, Parent field, controller field).
  
           if Nkind (Comp_Item) = N_Component_Declaration then
              declare
                 Comp : constant Entity_Id := Defining_Identifier (Comp_Item);
              begin
!                if not Is_Tag (Comp) and then Chars (Comp) /= Name_uParent then
                    Append_Elmt (Comp, Into);
                 end if;
              end;
--- 9914,9933 ----
  
        while Present (Comp_Item) loop
  
!          --  Skip the tag of a tagged record, as well as all items that are not
!          --  user components (anonymous types, rep clauses, Parent field,
!          --  controller field).
  
           if Nkind (Comp_Item) = N_Component_Declaration then
              declare
                 Comp : constant Entity_Id := Defining_Identifier (Comp_Item);
              begin
!                if not (Is_Tag (Comp)
!                         and then not
!                           (Include_Interface_Tag
!                             and then Etype (Comp) = RTE (RE_Interface_Tag)))
!                  and then Chars (Comp) /= Name_uParent
!                then
                    Append_Elmt (Comp, Into);
                 end if;
              end;
*************** package body Sem_Util is
*** 9136,9142 ****
        end loop Find_Constraint;
  
        Discrim_Value := Expression (Assoc);
!       if Is_OK_Static_Expression (Discrim_Value) then
           Discrim_Value_Status := Static_Expr;
        else
           if Ada_Version >= Ada_2020 then
--- 10036,10046 ----
        end loop Find_Constraint;
  
        Discrim_Value := Expression (Assoc);
! 
!       if Is_OK_Static_Expression (Discrim_Value)
!         or else (Allow_Compile_Time
!                  and then Compile_Time_Known_Value (Discrim_Value))
!       then
           Discrim_Value_Status := Static_Expr;
        else
           if Ada_Version >= Ada_2020 then
*************** package body Sem_Util is
*** 9315,9329 ****
           end if;
  
           Gather_Components
!            (Typ, Component_List (Variant), Governed_By, Into, Report_Errors);
        end if;
     end Gather_Components;
  
!    -----------------------
!    -- Get_Accessibility --
!    -----------------------
  
!    function Get_Accessibility (E : Entity_Id) return Node_Id is
     begin
        --  When minimum accessibility is set for E then we utilize it - except
        --  in a few edge cases like the expansion of select statements where
--- 10219,10234 ----
           end if;
  
           Gather_Components
!            (Typ, Component_List (Variant), Governed_By, Into,
!             Report_Errors, Allow_Compile_Time);
        end if;
     end Gather_Components;
  
!    -------------------------------
!    -- Get_Dynamic_Accessibility --
!    -------------------------------
  
!    function Get_Dynamic_Accessibility (E : Entity_Id) return Entity_Id is
     begin
        --  When minimum accessibility is set for E then we utilize it - except
        --  in a few edge cases like the expansion of select statements where
*************** package body Sem_Util is
*** 9333,9339 ****
        --  To avoid these situations where expansion may get complex we verify
        --  that the minimum accessibility object is within scope.
  
!       if Ekind (E) in Formal_Kind
          and then Present (Minimum_Accessibility (E))
          and then In_Open_Scopes (Scope (Minimum_Accessibility (E)))
        then
--- 10238,10244 ----
        --  To avoid these situations where expansion may get complex we verify
        --  that the minimum accessibility object is within scope.
  
!       if Is_Formal (E)
          and then Present (Minimum_Accessibility (E))
          and then In_Open_Scopes (Scope (Minimum_Accessibility (E)))
        then
*************** package body Sem_Util is
*** 9341,9347 ****
        end if;
  
        return Extra_Accessibility (E);
!    end Get_Accessibility;
  
     ------------------------
     -- Get_Actual_Subtype --
--- 10246,10252 ----
        end if;
  
        return Extra_Accessibility (E);
!    end Get_Dynamic_Accessibility;
  
     ------------------------
     -- Get_Actual_Subtype --
*************** package body Sem_Util is
*** 9550,9556 ****
           then
              if Cursor /= Any_Type then
                 Error_Msg_N
!                  ("Operation First for iterable type must be unique", Aspect);
                 return Any_Type;
              else
                 Cursor := Etype (Func);
--- 10455,10461 ----
           then
              if Cursor /= Any_Type then
                 Error_Msg_N
!                  ("operation First for iterable type must be unique", Aspect);
                 return Any_Type;
              else
                 Cursor := Etype (Func);
*************** package body Sem_Util is
*** 9668,9674 ****
  
           --  Position in the enumeration type starts at 0
  
!          if UI_To_Int (Pos) < 0 then
              raise Constraint_Error;
           end if;
  
--- 10573,10579 ----
  
           --  Position in the enumeration type starts at 0
  
!          if Pos < 0 then
              raise Constraint_Error;
           end if;
  
*************** package body Sem_Util is
*** 9697,9702 ****
--- 10602,10686 ----
        end if;
     end Get_Enum_Lit_From_Pos;
  
+    ----------------------
+    -- Get_Fullest_View --
+    ----------------------
+ 
+    function Get_Fullest_View
+      (E : Entity_Id; Include_PAT : Boolean := True) return Entity_Id is
+    begin
+       --  Prevent cascaded errors
+ 
+       if No (E) then
+          return E;
+       end if;
+ 
+       --  Strictly speaking, the recursion below isn't necessary, but
+       --  it's both simplest and safest.
+ 
+       case Ekind (E) is
+          when Incomplete_Kind =>
+             if From_Limited_With (E) then
+                return Get_Fullest_View (Non_Limited_View (E), Include_PAT);
+             elsif Present (Full_View (E)) then
+                return Get_Fullest_View (Full_View (E), Include_PAT);
+             elsif Ekind (E) = E_Incomplete_Subtype then
+                return Get_Fullest_View (Etype (E));
+             end if;
+ 
+          when Private_Kind =>
+             if Present (Underlying_Full_View (E)) then
+                return
+                  Get_Fullest_View (Underlying_Full_View (E), Include_PAT);
+             elsif Present (Full_View (E)) then
+                return Get_Fullest_View (Full_View (E), Include_PAT);
+             elsif Etype (E) /= E then
+                return Get_Fullest_View (Etype (E), Include_PAT);
+             end if;
+ 
+          when Array_Kind =>
+             if Include_PAT and then Present (Packed_Array_Impl_Type (E)) then
+                return Get_Fullest_View (Packed_Array_Impl_Type (E));
+             end if;
+ 
+          when E_Record_Subtype =>
+             if Present (Cloned_Subtype (E)) then
+                return Get_Fullest_View (Cloned_Subtype (E), Include_PAT);
+             end if;
+ 
+          when E_Class_Wide_Type =>
+             return Get_Fullest_View (Root_Type (E), Include_PAT);
+ 
+          when  E_Class_Wide_Subtype =>
+             if Present (Equivalent_Type (E)) then
+                return Get_Fullest_View (Equivalent_Type (E), Include_PAT);
+             elsif Present (Cloned_Subtype (E)) then
+                return Get_Fullest_View (Cloned_Subtype (E), Include_PAT);
+             end if;
+ 
+          when E_Protected_Type | E_Protected_Subtype
+             | E_Task_Type |  E_Task_Subtype =>
+             if Present (Corresponding_Record_Type (E)) then
+                return Get_Fullest_View (Corresponding_Record_Type (E),
+                                         Include_PAT);
+             end if;
+ 
+          when E_Access_Protected_Subprogram_Type
+             | E_Anonymous_Access_Protected_Subprogram_Type =>
+             if Present (Equivalent_Type (E)) then
+                return Get_Fullest_View (Equivalent_Type (E), Include_PAT);
+             end if;
+ 
+          when E_Access_Subtype =>
+             return Get_Fullest_View (Base_Type (E), Include_PAT);
+ 
+          when others =>
+             null;
+       end case;
+ 
+       return E;
+    end Get_Fullest_View;
+ 
     ------------------------
     -- Get_Generic_Entity --
     ------------------------
*************** package body Sem_Util is
*** 9946,9951 ****
--- 10930,10945 ----
       (Typ : Entity_Id;
        Nam : Name_Id) return Entity_Id
     is
+       pragma Assert
+         (Is_Type (Typ)
+          and then
+            Nam in Name_Element
+                 | Name_First
+                 | Name_Has_Element
+                 | Name_Last
+                 | Name_Next
+                 | Name_Previous);
+ 
        Funcs : constant Node_Id := Find_Value_Of_Aspect (Typ, Aspect_Iterable);
        Assoc : Node_Id;
  
*************** package body Sem_Util is
*** 9960,9966 ****
                 return Entity (Expression (Assoc));
              end if;
  
!             Assoc := Next (Assoc);
           end loop;
  
           return Empty;
--- 10954,10960 ----
                 return Entity (Expression (Assoc));
              end if;
  
!             Next (Assoc);
           end loop;
  
           return Empty;
*************** package body Sem_Util is
*** 10181,10186 ****
--- 11175,11181 ----
     begin
        R := N;
        while Is_Entity_Name (R)
+         and then Is_Object (Entity (R))
          and then Present (Renamed_Object (Entity (R)))
        loop
           R := Renamed_Object (Entity (R));
*************** package body Sem_Util is
*** 10246,10259 ****
        --  Strip the subprogram call
  
        loop
!          if Nkind_In (Subp, N_Explicit_Dereference,
!                             N_Indexed_Component,
!                             N_Selected_Component)
           then
              Subp := Prefix (Subp);
  
!          elsif Nkind_In (Subp, N_Type_Conversion,
!                                N_Unchecked_Type_Conversion)
           then
              Subp := Expression (Subp);
  
--- 11241,11254 ----
        --  Strip the subprogram call
  
        loop
!          if Nkind (Subp) in N_Explicit_Dereference
!                           | N_Indexed_Component
!                           | N_Selected_Component
           then
              Subp := Prefix (Subp);
  
!          elsif Nkind (Subp) in N_Type_Conversion
!                              | N_Unchecked_Type_Conversion
           then
              Subp := Expression (Subp);
  
*************** package body Sem_Util is
*** 10337,10343 ****
       (Typ       : Entity_Id;
        Priv_Typ  : out Entity_Id;
        Full_Typ  : out Entity_Id;
!       Full_Base : out Entity_Id;
        CRec_Typ  : out Entity_Id)
     is
        IP_View : Entity_Id;
--- 11332,11338 ----
       (Typ       : Entity_Id;
        Priv_Typ  : out Entity_Id;
        Full_Typ  : out Entity_Id;
!       UFull_Typ : out Entity_Id;
        CRec_Typ  : out Entity_Id)
     is
        IP_View : Entity_Id;
*************** package body Sem_Util is
*** 10347,10353 ****
  
        Priv_Typ  := Empty;
        Full_Typ  := Empty;
!       Full_Base := Empty;
        CRec_Typ  := Empty;
  
        --  The input type is the corresponding record type of a protected or a
--- 11342,11348 ----
  
        Priv_Typ  := Empty;
        Full_Typ  := Empty;
!       UFull_Typ := Empty;
        CRec_Typ  := Empty;
  
        --  The input type is the corresponding record type of a protected or a
*************** package body Sem_Util is
*** 10356,10365 ****
        if Ekind (Typ) = E_Record_Type
          and then Is_Concurrent_Record_Type (Typ)
        then
!          CRec_Typ  := Typ;
!          Full_Typ  := Corresponding_Concurrent_Type (CRec_Typ);
!          Full_Base := Base_Type (Full_Typ);
!          Priv_Typ  := Incomplete_Or_Partial_View (Full_Typ);
  
        --  Otherwise the input type denotes an arbitrary type
  
--- 11351,11359 ----
        if Ekind (Typ) = E_Record_Type
          and then Is_Concurrent_Record_Type (Typ)
        then
!          CRec_Typ := Typ;
!          Full_Typ := Corresponding_Concurrent_Type (CRec_Typ);
!          Priv_Typ := Incomplete_Or_Partial_View (Full_Typ);
  
        --  Otherwise the input type denotes an arbitrary type
  
*************** package body Sem_Util is
*** 10384,10393 ****
              Full_Typ := Typ;
           end if;
  
!          if Present (Full_Typ) then
!             Full_Base := Base_Type (Full_Typ);
  
!             if Ekind_In (Full_Typ, E_Protected_Type, E_Task_Type) then
                 CRec_Typ := Corresponding_Record_Type (Full_Typ);
              end if;
           end if;
--- 11378,11396 ----
              Full_Typ := Typ;
           end if;
  
!          if Present (Full_Typ) and then Is_Private_Type (Full_Typ) then
!             UFull_Typ := Underlying_Full_View (Full_Typ);
  
!             if Present (UFull_Typ)
!               and then Ekind (UFull_Typ) in E_Protected_Type | E_Task_Type
!             then
!                CRec_Typ := Corresponding_Record_Type (UFull_Typ);
!             end if;
! 
!          else
!             if Present (Full_Typ)
!               and then Ekind (Full_Typ) in E_Protected_Type | E_Task_Type
!             then
                 CRec_Typ := Corresponding_Record_Type (Full_Typ);
              end if;
           end if;
*************** package body Sem_Util is
*** 10422,10428 ****
              Comp : Entity_Id;
  
           begin
!             --  Loop to Check components
  
              Comp := First_Component_Or_Discriminant (Typ);
              while Present (Comp) loop
--- 11425,11431 ----
              Comp : Entity_Id;
  
           begin
!             --  Loop to check components
  
              Comp := First_Component_Or_Discriminant (Typ);
              while Present (Comp) loop
*************** package body Sem_Util is
*** 10447,10452 ****
--- 11450,11480 ----
        end if;
     end Has_Access_Values;
  
+    ---------------------------------------
+    -- Has_Anonymous_Access_Discriminant --
+    ---------------------------------------
+ 
+    function Has_Anonymous_Access_Discriminant (Typ : Entity_Id) return Boolean
+    is
+       Disc : Node_Id;
+ 
+    begin
+       if not Has_Discriminants (Typ) then
+          return False;
+       end if;
+ 
+       Disc := First_Discriminant (Typ);
+       while Present (Disc) loop
+          if Ekind (Etype (Disc)) = E_Anonymous_Access_Type then
+             return True;
+          end if;
+ 
+          Next_Discriminant (Disc);
+       end loop;
+ 
+       return False;
+    end Has_Anonymous_Access_Discriminant;
+ 
     ------------------------------
     -- Has_Compatible_Alignment --
     ------------------------------
*************** package body Sem_Util is
*** 10781,10795 ****
  
     function Has_Declarations (N : Node_Id) return Boolean is
     begin
!       return Nkind_In (Nkind (N), N_Accept_Statement,
!                                   N_Block_Statement,
!                                   N_Compilation_Unit_Aux,
!                                   N_Entry_Body,
!                                   N_Package_Body,
!                                   N_Protected_Body,
!                                   N_Subprogram_Body,
!                                   N_Task_Body,
!                                   N_Package_Specification);
     end Has_Declarations;
  
     ---------------------------------
--- 11809,11823 ----
  
     function Has_Declarations (N : Node_Id) return Boolean is
     begin
!       return Nkind (N) in N_Accept_Statement
!                         | N_Block_Statement
!                         | N_Compilation_Unit_Aux
!                         | N_Entry_Body
!                         | N_Package_Body
!                         | N_Protected_Body
!                         | N_Subprogram_Body
!                         | N_Task_Body
!                         | N_Package_Specification;
     end Has_Declarations;
  
     ---------------------------------
*************** package body Sem_Util is
*** 10878,10888 ****
  
     begin
        --  Inspect the formal parameters looking for an effectively volatile
!       --  type.
  
        Formal := First_Formal (Subp_Id);
        while Present (Formal) loop
!          if Is_Effectively_Volatile (Etype (Formal)) then
              return True;
           end if;
  
--- 11906,11916 ----
  
     begin
        --  Inspect the formal parameters looking for an effectively volatile
!       --  type for reading.
  
        Formal := First_Formal (Subp_Id);
        while Present (Formal) loop
!          if Is_Effectively_Volatile_For_Reading (Etype (Formal)) then
              return True;
           end if;
  
*************** package body Sem_Util is
*** 10891,10898 ****
  
        --  Inspect the return type of functions
  
!       if Ekind_In (Subp_Id, E_Function, E_Generic_Function)
!         and then Is_Effectively_Volatile (Etype (Subp_Id))
        then
           return True;
        end if;
--- 11919,11926 ----
  
        --  Inspect the return type of functions
  
!       if Ekind (Subp_Id) in E_Function | E_Generic_Function
!         and then Is_Effectively_Volatile_For_Reading (Etype (Subp_Id))
        then
           return True;
        end if;
*************** package body Sem_Util is
*** 10908,10935 ****
       (Item_Id  : Entity_Id;
        Property : Name_Id) return Boolean
     is
!       function Protected_Object_Has_Enabled_Property return Boolean;
!       --  Determine whether a protected object denoted by Item_Id has the
!       --  property enabled.
  
        function State_Has_Enabled_Property return Boolean;
        --  Determine whether a state denoted by Item_Id has the property enabled
  
!       function Variable_Has_Enabled_Property return Boolean;
!       --  Determine whether a variable denoted by Item_Id has the property
!       --  enabled.
! 
!       -------------------------------------------
!       -- Protected_Object_Has_Enabled_Property --
!       -------------------------------------------
  
!       function Protected_Object_Has_Enabled_Property return Boolean is
!          Constits     : constant Elist_Id := Part_Of_Constituents (Item_Id);
!          Constit_Elmt : Elmt_Id;
!          Constit_Id   : Entity_Id;
  
        begin
!          --  Protected objects always have the properties Async_Readers and
           --  Async_Writers (SPARK RM 7.1.2(16)).
  
           if Property = Name_Async_Readers
--- 11936,11961 ----
       (Item_Id  : Entity_Id;
        Property : Name_Id) return Boolean
     is
!       function Protected_Type_Or_Variable_Has_Enabled_Property return Boolean;
!       --  Determine whether a protected type or variable denoted by Item_Id
!       --  has the property enabled.
  
        function State_Has_Enabled_Property return Boolean;
        --  Determine whether a state denoted by Item_Id has the property enabled
  
!       function Type_Or_Variable_Has_Enabled_Property
!         (Item_Id : Entity_Id) return Boolean;
!       --  Determine whether type or variable denoted by Item_Id has the
!       --  property enabled.
  
!       -----------------------------------------------------
!       -- Protected_Type_Or_Variable_Has_Enabled_Property --
!       -----------------------------------------------------
  
+       function Protected_Type_Or_Variable_Has_Enabled_Property return Boolean
+       is
        begin
!          --  Protected entities always have the properties Async_Readers and
           --  Async_Writers (SPARK RM 7.1.2(16)).
  
           if Property = Name_Async_Readers
*************** package body Sem_Util is
*** 10941,10961 ****
           --  properties Effective_Reads and Effective_Writes
           --  (SPARK RM 7.1.2(16)).
  
!          elsif Present (Constits) then
!             Constit_Elmt := First_Elmt (Constits);
!             while Present (Constit_Elmt) loop
!                Constit_Id := Node (Constit_Elmt);
  
!                if Has_Enabled_Property (Constit_Id, Property) then
!                   return True;
!                end if;
  
!                Next_Elmt (Constit_Elmt);
!             end loop;
           end if;
  
           return False;
!       end Protected_Object_Has_Enabled_Property;
  
        --------------------------------
        -- State_Has_Enabled_Property --
--- 11967,11996 ----
           --  properties Effective_Reads and Effective_Writes
           --  (SPARK RM 7.1.2(16)).
  
!          elsif Is_Single_Protected_Object (Item_Id) then
!             declare
!                Constit_Elmt : Elmt_Id;
!                Constit_Id   : Entity_Id;
!                Constits     : constant Elist_Id
!                  := Part_Of_Constituents (Item_Id);
!             begin
!                if Present (Constits) then
!                   Constit_Elmt := First_Elmt (Constits);
!                   while Present (Constit_Elmt) loop
!                      Constit_Id := Node (Constit_Elmt);
  
!                      if Has_Enabled_Property (Constit_Id, Property) then
!                         return True;
!                      end if;
  
!                      Next_Elmt (Constit_Elmt);
!                   end loop;
!                end if;
!             end;
           end if;
  
           return False;
!       end Protected_Type_Or_Variable_Has_Enabled_Property;
  
        --------------------------------
        -- State_Has_Enabled_Property --
*************** package body Sem_Util is
*** 11111,11127 ****
           --  Synchronous (SPARK RM 7.1.4(9)).
  
           elsif Has_Synchronous then
!             return Nam_In (Property, Name_Async_Readers, Name_Async_Writers);
           end if;
  
           return False;
        end State_Has_Enabled_Property;
  
!       -----------------------------------
!       -- Variable_Has_Enabled_Property --
!       -----------------------------------
  
!       function Variable_Has_Enabled_Property return Boolean is
           function Is_Enabled (Prag : Node_Id) return Boolean;
           --  Determine whether property pragma Prag (if present) denotes an
           --  enabled property.
--- 12146,12164 ----
           --  Synchronous (SPARK RM 7.1.4(9)).
  
           elsif Has_Synchronous then
!             return Property in Name_Async_Readers | Name_Async_Writers;
           end if;
  
           return False;
        end State_Has_Enabled_Property;
  
!       -------------------------------------------
!       -- Type_Or_Variable_Has_Enabled_Property --
!       -------------------------------------------
  
!       function Type_Or_Variable_Has_Enabled_Property
!         (Item_Id : Entity_Id) return Boolean
!       is
           function Is_Enabled (Prag : Node_Id) return Boolean;
           --  Determine whether property pragma Prag (if present) denotes an
           --  enabled property.
*************** package body Sem_Util is
*** 11169,11175 ****
           EW : constant Node_Id :=
                  Get_Pragma (Item_Id, Pragma_Effective_Writes);
  
!       --  Start of processing for Variable_Has_Enabled_Property
  
        begin
           --  A non-effectively volatile object can never possess external
--- 12206,12216 ----
           EW : constant Node_Id :=
                  Get_Pragma (Item_Id, Pragma_Effective_Writes);
  
!          Is_Derived_Type_With_Volatile_Parent_Type : constant Boolean :=
!            Is_Derived_Type (Item_Id)
!            and then Is_Effectively_Volatile (Etype (Base_Type (Item_Id)));
! 
!       --  Start of processing for Type_Or_Variable_Has_Enabled_Property
  
        begin
           --  A non-effectively volatile object can never possess external
*************** package body Sem_Util is
*** 11184,11206 ****
           --  property is enabled when the flag evaluates to True or the flag is
           --  missing altogether.
  
!          elsif Property = Name_Async_Readers    and then Is_Enabled (AR) then
!             return True;
  
!          elsif Property = Name_Async_Writers    and then Is_Enabled (AW) then
!             return True;
  
!          elsif Property = Name_Effective_Reads  and then Is_Enabled (ER) then
!             return True;
  
!          elsif Property = Name_Effective_Writes and then Is_Enabled (EW) then
!             return True;
  
           --  The implicit case lacks all property pragmas
  
           elsif No (AR) and then No (AW) and then No (ER) and then No (EW) then
              if Is_Protected_Type (Etype (Item_Id)) then
!                return Protected_Object_Has_Enabled_Property;
              else
                 return True;
              end if;
--- 12225,12281 ----
           --  property is enabled when the flag evaluates to True or the flag is
           --  missing altogether.
  
!          elsif Property = Name_Async_Readers    and then Present (AR) then
!             return Is_Enabled (AR);
  
!          elsif Property = Name_Async_Writers    and then Present (AW) then
!             return Is_Enabled (AW);
  
!          elsif Property = Name_Effective_Reads  and then Present (ER) then
!             return Is_Enabled (ER);
  
!          elsif Property = Name_Effective_Writes and then Present (EW) then
!             return Is_Enabled (EW);
! 
!          --  If other properties are set explicitly, then this one is set
!          --  implicitly to False, except in the case of a derived type
!          --  whose parent type is volatile (in that case, we will inherit
!          --  from the parent type, below).
! 
!          elsif (Present (AR)
!            or else Present (AW)
!            or else Present (ER)
!            or else Present (EW))
!            and then not Is_Derived_Type_With_Volatile_Parent_Type
!          then
!             return False;
! 
!          --  For a private type, may need to look at the full view
! 
!          elsif Is_Private_Type (Item_Id) and then Present (Full_View (Item_Id))
!          then
!             return Type_Or_Variable_Has_Enabled_Property (Full_View (Item_Id));
! 
!          --  For a derived type whose parent type is volatile, the
!          --  property may be inherited (but ignore a non-volatile parent).
! 
!          elsif Is_Derived_Type_With_Volatile_Parent_Type then
!             return Type_Or_Variable_Has_Enabled_Property
!               (First_Subtype (Etype (Base_Type (Item_Id))));
! 
!          --  If not specified explicitly for an object and the type
!          --  is effectively volatile, then take result from the type.
! 
!          elsif not Is_Type (Item_Id)
!            and then Is_Effectively_Volatile (Etype (Item_Id))
!          then
!             return Has_Enabled_Property (Etype (Item_Id), Property);
  
           --  The implicit case lacks all property pragmas
  
           elsif No (AR) and then No (AW) and then No (ER) and then No (EW) then
              if Is_Protected_Type (Etype (Item_Id)) then
!                return Protected_Type_Or_Variable_Has_Enabled_Property;
              else
                 return True;
              end if;
*************** package body Sem_Util is
*** 11208,11214 ****
           else
              return False;
           end if;
!       end Variable_Has_Enabled_Property;
  
     --  Start of processing for Has_Enabled_Property
  
--- 12283,12289 ----
           else
              return False;
           end if;
!       end Type_Or_Variable_Has_Enabled_Property;
  
     --  Start of processing for Has_Enabled_Property
  
*************** package body Sem_Util is
*** 11219,11234 ****
        if Ekind (Item_Id) = E_Abstract_State then
           return State_Has_Enabled_Property;
  
!       elsif Ekind (Item_Id) = E_Variable then
!          return Variable_Has_Enabled_Property;
  
!       --  By default, protected objects only have the properties Async_Readers
!       --  and Async_Writers. If they have Part_Of components, they also inherit
!       --  their properties Effective_Reads and Effective_Writes
!       --  (SPARK RM 7.1.2(16)).
  
!       elsif Ekind (Item_Id) = E_Protected_Object then
!          return Protected_Object_Has_Enabled_Property;
  
        --  Otherwise a property is enabled when the related item is effectively
        --  volatile.
--- 12294,12313 ----
        if Ekind (Item_Id) = E_Abstract_State then
           return State_Has_Enabled_Property;
  
!       elsif Ekind (Item_Id) in E_Variable | E_Constant then
!          return Type_Or_Variable_Has_Enabled_Property (Item_Id);
  
!       --  Other objects can only inherit properties through their type. We
!       --  cannot call directly Type_Or_Variable_Has_Enabled_Property on
!       --  these as they don't have contracts attached, which is expected by
!       --  this function.
  
!       elsif Is_Object (Item_Id) then
!          return Type_Or_Variable_Has_Enabled_Property (Etype (Item_Id));
! 
!       elsif Is_Type (Item_Id) then
!          return Type_Or_Variable_Has_Enabled_Property
!            (Item_Id => First_Subtype (Item_Id));
  
        --  Otherwise a property is enabled when the related item is effectively
        --  volatile.
*************** package body Sem_Util is
*** 11286,11302 ****
           --  Inspect all entities defined in the scope of the type, looking for
           --  uninitialized components.
  
!          Comp := First_Entity (Typ);
           while Present (Comp) loop
!             if Ekind (Comp) = E_Component
!               and then Comes_From_Source (Comp)
                and then No (Expression (Parent (Comp)))
                and then not Has_Full_Default_Initialization (Etype (Comp))
              then
                 return False;
              end if;
  
!             Next_Entity (Comp);
           end loop;
  
           --  Ensure that the parent type of a type extension is fully default
--- 12365,12380 ----
           --  Inspect all entities defined in the scope of the type, looking for
           --  uninitialized components.
  
!          Comp := First_Component (Typ);
           while Present (Comp) loop
!             if Comes_From_Source (Comp)
                and then No (Expression (Parent (Comp)))
                and then not Has_Full_Default_Initialization (Etype (Comp))
              then
                 return False;
              end if;
  
!             Next_Component (Comp);
           end loop;
  
           --  Ensure that the parent type of a type extension is fully default
*************** package body Sem_Util is
*** 11490,11501 ****
  
        elsif Nkind (N) in N_Has_Entity then
           return Present (Entity (N))
!            and then Ekind_In (Entity (N), E_Variable,
!                                           E_Constant,
!                                           E_Enumeration_Literal,
!                                           E_In_Parameter,
!                                           E_Out_Parameter,
!                                           E_In_Out_Parameter)
             and then not Is_Volatile (Entity (N));
  
        else
--- 12568,12577 ----
  
        elsif Nkind (N) in N_Has_Entity then
           return Present (Entity (N))
!            and then
!              Ekind (Entity (N)) in
!                E_Variable     | E_Constant      | E_Enumeration_Literal |
!                E_In_Parameter | E_Out_Parameter | E_In_Out_Parameter
             and then not Is_Volatile (Entity (N));
  
        else
*************** package body Sem_Util is
*** 11534,11540 ****
           Node := First (L);
  
           loop
!             if Nkind (Node) /= N_Null_Statement then
                 return True;
              end if;
  
--- 12610,12616 ----
           Node := First (L);
  
           loop
!             if Nkind (Node) not in N_Null_Statement | N_Call_Marker then
                 return True;
              end if;
  
*************** package body Sem_Util is
*** 11547,11562 ****
     end Has_Non_Null_Statements;
  
     ----------------------------------
     -- Has_Non_Trivial_Precondition --
     ----------------------------------
  
     function Has_Non_Trivial_Precondition (Subp : Entity_Id) return Boolean is
!       Pre : constant Node_Id := Find_Aspect (Subp, Aspect_Pre);
! 
     begin
        return
          Present (Pre)
-           and then Class_Present (Pre)
            and then not Is_Entity_Name (Expression (Pre));
     end Has_Non_Trivial_Precondition;
  
--- 12623,12768 ----
     end Has_Non_Null_Statements;
  
     ----------------------------------
+    -- Is_Access_Subprogram_Wrapper --
+    ----------------------------------
+ 
+    function Is_Access_Subprogram_Wrapper (E : Entity_Id) return Boolean is
+       Formal : constant Entity_Id := Last_Formal (E);
+    begin
+       return Present (Formal)
+         and then Ekind (Etype (Formal)) in Access_Subprogram_Kind
+         and then Access_Subprogram_Wrapper
+            (Directly_Designated_Type (Etype (Formal))) = E;
+    end Is_Access_Subprogram_Wrapper;
+ 
+    ---------------------------
+    -- Is_Explicitly_Aliased --
+    ---------------------------
+ 
+    function Is_Explicitly_Aliased (N : Node_Id) return Boolean is
+    begin
+       return Is_Formal (N)
+                and then Present (Parent (N))
+                and then Nkind (Parent (N)) = N_Parameter_Specification
+                and then Aliased_Present (Parent (N));
+    end Is_Explicitly_Aliased;
+ 
+    ----------------------------
+    -- Is_Container_Aggregate --
+    ----------------------------
+ 
+    function Is_Container_Aggregate (Exp : Node_Id) return Boolean is
+ 
+       function Is_Record_Aggregate return Boolean is (False);
+       --  ??? Unimplemented. Given an aggregate whose type is a
+       --  record type with specified Aggregate aspect, how do we
+       --  determine whether it is a record aggregate or a container
+       --  aggregate? If the code where the aggregate occurs can see only
+       --  a partial view of the aggregate's type then the aggregate
+       --  cannot be a record type; an aggregate of a private type has to
+       --  be a container aggregate.
+ 
+    begin
+       return Nkind (Exp) = N_Aggregate
+         and then Present (Find_Aspect (Etype (Exp), Aspect_Aggregate))
+         and then not Is_Record_Aggregate;
+    end Is_Container_Aggregate;
+ 
+    ---------------------------------
+    -- Side_Effect_Free_Statements --
+    ---------------------------------
+ 
+    function Side_Effect_Free_Statements (L : List_Id) return Boolean is
+       Node : Node_Id;
+ 
+    begin
+       if Is_Non_Empty_List (L) then
+          Node := First (L);
+ 
+          loop
+             case Nkind (Node) is
+                when N_Null_Statement | N_Call_Marker | N_Raise_xxx_Error =>
+                   null;
+                when N_Object_Declaration =>
+                   if Present (Expression (Node))
+                     and then not Side_Effect_Free (Expression (Node))
+                   then
+                      return False;
+                   end if;
+ 
+                when others =>
+                   return False;
+             end case;
+ 
+             Next (Node);
+             exit when Node = Empty;
+          end loop;
+       end if;
+ 
+       return True;
+    end Side_Effect_Free_Statements;
+ 
+    ---------------------------
+    -- Side_Effect_Free_Loop --
+    ---------------------------
+ 
+    function Side_Effect_Free_Loop (N : Node_Id) return Boolean is
+       Scheme : Node_Id;
+       Spec   : Node_Id;
+       Subt   : Node_Id;
+ 
+    begin
+       --  If this is not a loop (e.g. because the loop has been rewritten),
+       --  then return false.
+ 
+       if Nkind (N) /= N_Loop_Statement then
+          return False;
+       end if;
+ 
+       --  First check the statements
+ 
+       if Side_Effect_Free_Statements (Statements (N)) then
+ 
+          --  Then check the loop condition/indexes
+ 
+          if Present (Iteration_Scheme (N)) then
+             Scheme := Iteration_Scheme (N);
+ 
+             if Present (Condition (Scheme))
+               or else Present (Iterator_Specification (Scheme))
+             then
+                return False;
+             elsif Present (Loop_Parameter_Specification (Scheme)) then
+                Spec := Loop_Parameter_Specification (Scheme);
+                Subt := Discrete_Subtype_Definition (Spec);
+ 
+                if Present (Subt) then
+                   if Nkind (Subt) = N_Range then
+                      return Side_Effect_Free (Low_Bound (Subt))
+                        and then Side_Effect_Free (High_Bound (Subt));
+                   else
+                      --  subtype indication
+ 
+                      return True;
+                   end if;
+                end if;
+             end if;
+          end if;
+       end if;
+ 
+       return False;
+    end Side_Effect_Free_Loop;
+ 
+    ----------------------------------
     -- Has_Non_Trivial_Precondition --
     ----------------------------------
  
     function Has_Non_Trivial_Precondition (Subp : Entity_Id) return Boolean is
!       Pre : constant Node_Id := Find_Aspect (Subp, Aspect_Pre,
!                                              Class_Present => True);
     begin
        return
          Present (Pre)
            and then not Is_Entity_Name (Expression (Pre));
     end Has_Non_Trivial_Precondition;
  
*************** package body Sem_Util is
*** 11639,11645 ****
  
           when N_Component_Definition
              | N_Formal_Object_Declaration
-             | N_Object_Renaming_Declaration
           =>
              if Present (Subtype_Mark (N)) then
                 return Null_Exclusion_Present (N);
--- 12845,12850 ----
*************** package body Sem_Util is
*** 11647,11652 ****
--- 12852,12866 ----
                 return Null_Exclusion_Present (Access_Definition (N));
              end if;
  
+          when N_Object_Renaming_Declaration =>
+             if Present (Subtype_Mark (N)) then
+                return Null_Exclusion_Present (N);
+             elsif Present (Access_Definition (N)) then
+                return Null_Exclusion_Present (Access_Definition (N));
+             else
+                return False;  -- Case of no subtype in renaming (AI12-0275)
+             end if;
+ 
           when N_Discriminant_Specification =>
              if Nkind (Discriminant_Type (N)) = N_Access_Definition then
                 return Null_Exclusion_Present (Discriminant_Type (N));
*************** package body Sem_Util is
*** 11663,11669 ****
  
           when N_Parameter_Specification =>
              if Nkind (Parameter_Type (N)) = N_Access_Definition then
!                return Null_Exclusion_Present (Parameter_Type (N));
              else
                 return Null_Exclusion_Present (N);
              end if;
--- 12877,12884 ----
  
           when N_Parameter_Specification =>
              if Nkind (Parameter_Type (N)) = N_Access_Definition then
!                return Null_Exclusion_Present (Parameter_Type (N))
!                  or else Null_Exclusion_Present (N);
              else
                 return Null_Exclusion_Present (N);
              end if;
*************** package body Sem_Util is
*** 11975,11988 ****
  
     function Has_Prefix (N : Node_Id) return Boolean is
     begin
!       return
!         Nkind_In (N, N_Attribute_Reference,
!                      N_Expanded_Name,
!                      N_Explicit_Dereference,
!                      N_Indexed_Component,
!                      N_Reference,
!                      N_Selected_Component,
!                      N_Slice);
     end Has_Prefix;
  
     ---------------------------
--- 13190,13199 ----
  
     function Has_Prefix (N : Node_Id) return Boolean is
     begin
!       return Nkind (N) in
!         N_Attribute_Reference | N_Expanded_Name | N_Explicit_Dereference |
!         N_Indexed_Component   | N_Reference     | N_Selected_Component   |
!         N_Slice;
     end Has_Prefix;
  
     ---------------------------
*************** package body Sem_Util is
*** 12046,12051 ****
--- 13257,13403 ----
        end if;
     end Has_Private_Component;
  
+    --------------------------------
+    -- Has_Relaxed_Initialization --
+    --------------------------------
+ 
+    function Has_Relaxed_Initialization (E : Entity_Id) return Boolean is
+ 
+       function Denotes_Relaxed_Parameter
+         (Expr  : Node_Id;
+          Param : Entity_Id)
+          return Boolean;
+       --  Returns True iff expression Expr denotes a formal parameter or
+       --  function Param (through its attribute Result).
+ 
+       -------------------------------
+       -- Denotes_Relaxed_Parameter --
+       -------------------------------
+ 
+       function Denotes_Relaxed_Parameter
+         (Expr  : Node_Id;
+          Param : Entity_Id) return Boolean is
+       begin
+          if Nkind (Expr) in N_Identifier | N_Expanded_Name then
+             return Entity (Expr) = Param;
+          else
+             pragma Assert (Is_Attribute_Result (Expr));
+             return Entity (Prefix (Expr)) = Param;
+          end if;
+       end Denotes_Relaxed_Parameter;
+ 
+    --  Start of processing for Has_Relaxed_Initialization
+ 
+    begin
+       --  When analyzing, we checked all syntax legality rules for the aspect
+       --  Relaxed_Initialization, but didn't store the property anywhere (e.g.
+       --  as an Einfo flag). To query the property we look directly at the AST,
+       --  but now without any syntactic checks.
+ 
+       case Ekind (E) is
+          --  Abstract states have option Relaxed_Initialization
+ 
+          when E_Abstract_State =>
+             return Is_Relaxed_Initialization_State (E);
+ 
+          --  Constants have this aspect attached directly; for deferred
+          --  constants, the aspect is attached to the partial view.
+ 
+          when E_Constant =>
+             return Has_Aspect (E, Aspect_Relaxed_Initialization);
+ 
+          --  Variables have this aspect attached directly
+ 
+          when E_Variable =>
+             return Has_Aspect (E, Aspect_Relaxed_Initialization);
+ 
+          --  Types have this aspect attached directly (though we only allow it
+          --  to be specified for the first subtype). For private types, the
+          --  aspect is attached to the partial view.
+ 
+          when Type_Kind =>
+             pragma Assert (Is_First_Subtype (E));
+             return Has_Aspect (E, Aspect_Relaxed_Initialization);
+ 
+          --  Formal parameters and functions have the Relaxed_Initialization
+          --  aspect attached to the subprogram entity and must be listed in
+          --  the aspect expression.
+ 
+          when Formal_Kind
+             | E_Function
+          =>
+             declare
+                Subp_Id     : Entity_Id;
+                Aspect_Expr : Node_Id;
+                Param_Expr  : Node_Id;
+                Assoc       : Node_Id;
+ 
+             begin
+                if Is_Formal (E) then
+                   Subp_Id := Scope (E);
+                else
+                   Subp_Id := E;
+                end if;
+ 
+                if Has_Aspect (Subp_Id, Aspect_Relaxed_Initialization) then
+                   Aspect_Expr :=
+                     Find_Value_Of_Aspect
+                       (Subp_Id, Aspect_Relaxed_Initialization);
+ 
+                   --  Aspect expression is either an aggregate with an optional
+                   --  Boolean expression (which defaults to True), e.g.:
+                   --
+                   --    function F (X : Integer) return Integer
+                   --      with Relaxed_Initialization => (X => True, F'Result);
+ 
+                   if Nkind (Aspect_Expr) = N_Aggregate then
+ 
+                      if Present (Component_Associations (Aspect_Expr)) then
+                         Assoc := First (Component_Associations (Aspect_Expr));
+ 
+                         while Present (Assoc) loop
+                            if Denotes_Relaxed_Parameter
+                              (First (Choices (Assoc)), E)
+                            then
+                               return
+                                 Is_True
+                                   (Static_Boolean (Expression (Assoc)));
+                            end if;
+ 
+                            Next (Assoc);
+                         end loop;
+                      end if;
+ 
+                      Param_Expr := First (Expressions (Aspect_Expr));
+ 
+                      while Present (Param_Expr) loop
+                         if Denotes_Relaxed_Parameter (Param_Expr, E) then
+                            return True;
+                         end if;
+ 
+                         Next (Param_Expr);
+                      end loop;
+ 
+                      return False;
+ 
+                   --  or it is a single identifier, e.g.:
+                   --
+                   --    function F (X : Integer) return Integer
+                   --      with Relaxed_Initialization => X;
+ 
+                   else
+                      return Denotes_Relaxed_Parameter (Aspect_Expr, E);
+                   end if;
+                else
+                   return False;
+                end if;
+             end;
+ 
+          when others =>
+             raise Program_Error;
+       end case;
+    end Has_Relaxed_Initialization;
+ 
     ----------------------
     -- Has_Signed_Zeros --
     ----------------------
*************** package body Sem_Util is
*** 12217,12229 ****
  
     begin
        pragma Assert (Relaxed_RM_Semantics);
!       pragma Assert (Nkind_In (N, N_Null,
!                                   N_Op_Eq,
!                                   N_Op_Ge,
!                                   N_Op_Gt,
!                                   N_Op_Le,
!                                   N_Op_Lt,
!                                   N_Op_Ne));
  
        if Nkind (N) = N_Null then
           Rewrite (N, New_Occurrence_Of (RTE (RE_Null_Address), Sloc (N)));
--- 13569,13577 ----
  
     begin
        pragma Assert (Relaxed_RM_Semantics);
!       pragma Assert
!         (Nkind (N) in
!            N_Null | N_Op_Eq | N_Op_Ge | N_Op_Gt | N_Op_Le | N_Op_Lt | N_Op_Ne);
  
        if Nkind (N) = N_Null then
           Rewrite (N, New_Occurrence_Of (RTE (RE_Null_Address), Sloc (N)));
*************** package body Sem_Util is
*** 12274,12279 ****
--- 13622,13653 ----
        end if;
     end Has_Tagged_Component;
  
+    --------------------------------------------
+    -- Has_Unconstrained_Access_Discriminants --
+    --------------------------------------------
+ 
+    function Has_Unconstrained_Access_Discriminants
+      (Subtyp : Entity_Id) return Boolean
+    is
+       Discr : Entity_Id;
+ 
+    begin
+       if Has_Discriminants (Subtyp)
+         and then not Is_Constrained (Subtyp)
+       then
+          Discr := First_Discriminant (Subtyp);
+          while Present (Discr) loop
+             if Ekind (Etype (Discr)) = E_Anonymous_Access_Type then
+                return True;
+             end if;
+ 
+             Next_Discriminant (Discr);
+          end loop;
+       end if;
+ 
+       return False;
+    end Has_Unconstrained_Access_Discriminants;
+ 
     -----------------------------
     -- Has_Undefined_Reference --
     -----------------------------
*************** package body Sem_Util is
*** 12336,12342 ****
                 return True;
              end if;
  
!             Comp := Next_Component (Comp);
           end loop;
        end if;
  
--- 13710,13716 ----
                 return True;
              end if;
  
!             Next_Component (Comp);
           end loop;
        end if;
  
*************** package body Sem_Util is
*** 12402,12407 ****
--- 13776,13807 ----
        return False;
     end Implements_Interface;
  
+    --------------------------------
+    -- Implicitly_Designated_Type --
+    --------------------------------
+ 
+    function Implicitly_Designated_Type (Typ : Entity_Id) return Entity_Id is
+       Desig : constant Entity_Id := Designated_Type (Typ);
+ 
+    begin
+       --  An implicit dereference is a legal occurrence of an incomplete type
+       --  imported through a limited_with clause, if the full view is visible.
+ 
+       if Is_Incomplete_Type (Desig)
+         and then From_Limited_With (Desig)
+         and then not From_Limited_With (Scope (Desig))
+         and then
+           (Is_Immediately_Visible (Scope (Desig))
+             or else
+               (Is_Child_Unit (Scope (Desig))
+                 and then Is_Visible_Lib_Unit (Scope (Desig))))
+       then
+          return Available_View (Desig);
+       else
+          return Desig;
+       end if;
+    end Implicitly_Designated_Type;
+ 
     ------------------------------------
     -- In_Assertion_Expression_Pragma --
     ------------------------------------
*************** package body Sem_Util is
*** 12453,12458 ****
--- 13853,13904 ----
            and then Assertion_Expression_Pragma (Get_Pragma_Id (Prag));
     end In_Assertion_Expression_Pragma;
  
+    -------------------
+    -- In_Check_Node --
+    -------------------
+ 
+    function In_Check_Node (N : Node_Id) return Boolean is
+       Par : Node_Id := Parent (N);
+    begin
+       while Present (Par) loop
+          if Nkind (Par) in N_Raise_xxx_Error then
+             return True;
+ 
+          --  Prevent the search from going too far
+ 
+          elsif Is_Body_Or_Package_Declaration (Par) then
+             return False;
+ 
+          else
+             Par := Parent (Par);
+          end if;
+       end loop;
+ 
+       return False;
+    end In_Check_Node;
+ 
+    -------------------------------
+    -- In_Generic_Formal_Package --
+    -------------------------------
+ 
+    function In_Generic_Formal_Package (E : Entity_Id) return Boolean is
+       Par : Node_Id;
+ 
+    begin
+       Par := Parent (E);
+       while Present (Par) loop
+          if Nkind (Par) = N_Formal_Package_Declaration
+            or else Nkind (Original_Node (Par)) = N_Formal_Package_Declaration
+          then
+             return True;
+          end if;
+ 
+          Par := Parent (Par);
+       end loop;
+ 
+       return False;
+    end In_Generic_Formal_Package;
+ 
     ----------------------
     -- In_Generic_Scope --
     ----------------------
*************** package body Sem_Util is
*** 12519,12525 ****
     begin
        S := Current_Scope;
        while Present (S) and then S /= Standard_Standard loop
!          if Ekind_In (S, E_Function, E_Procedure)
             and then Is_Generic_Instance (S)
           then
              return True;
--- 13965,13971 ----
     begin
        S := Current_Scope;
        while Present (S) and then S /= Standard_Standard loop
!          if Ekind (S) in E_Function | E_Procedure
             and then Is_Generic_Instance (S)
           then
              return True;
*************** package body Sem_Util is
*** 12547,12553 ****
     begin
        S := Current_Scope;
        while Present (S) and then S /= Standard_Standard loop
!          if Ekind_In (S, E_Function, E_Procedure)
             and then Is_Generic_Instance (S)
           then
              return True;
--- 13993,13999 ----
     begin
        S := Current_Scope;
        while Present (S) and then S /= Standard_Standard loop
!          if Ekind (S) in E_Function | E_Procedure
             and then Is_Generic_Instance (S)
           then
              return True;
*************** package body Sem_Util is
*** 12751,12765 ****
           if Nod = Cont then
              return True;
  
!          elsif Nkind_In (Nod, N_Accept_Statement,
!                               N_Block_Statement,
!                               N_Compilation_Unit,
!                               N_Entry_Body,
!                               N_Package_Body,
!                               N_Package_Declaration,
!                               N_Protected_Body,
!                               N_Subprogram_Body,
!                               N_Task_Body)
           then
              return False;
  
--- 14197,14211 ----
           if Nod = Cont then
              return True;
  
!          elsif Nkind (Nod) in N_Accept_Statement
!                             | N_Block_Statement
!                             | N_Compilation_Unit
!                             | N_Entry_Body
!                             | N_Package_Body
!                             | N_Package_Declaration
!                             | N_Protected_Body
!                             | N_Subprogram_Body
!                             | N_Task_Body
           then
              return False;
  
*************** package body Sem_Util is
*** 12848,12853 ****
--- 14294,14389 ----
     end In_Subtree;
  
     ---------------------
+    -- In_Return_Value --
+    ---------------------
+ 
+    function In_Return_Value (Expr : Node_Id) return Boolean is
+       Par              : Node_Id;
+       Prev_Par         : Node_Id;
+       Pre              : Node_Id;
+       In_Function_Call : Boolean := False;
+ 
+    begin
+       --  Move through parent nodes to determine if Expr contributes to the
+       --  return value of the current subprogram.
+ 
+       Par      := Expr;
+       Prev_Par := Empty;
+       while Present (Par) loop
+ 
+          case Nkind (Par) is
+             --  Ignore ranges and they don't contribute to the result
+ 
+             when N_Range =>
+                return False;
+ 
+             --  An object declaration whose parent is an extended return
+             --  statement is a return object.
+ 
+             when N_Object_Declaration =>
+                if Present (Parent (Par))
+                  and then Nkind (Parent (Par)) = N_Extended_Return_Statement
+                then
+                   return True;
+                end if;
+ 
+             --  We hit a simple return statement, so we know we are in one
+ 
+             when N_Simple_Return_Statement =>
+                return True;
+ 
+             --  Only include one nexting level of function calls
+ 
+             when N_Function_Call =>
+                if not In_Function_Call then
+                   In_Function_Call := True;
+                else
+                   return False;
+                end if;
+ 
+             --  Check if we are on the right-hand side of an assignment
+             --  statement to a return object.
+ 
+             --  This is not specified in the RM ???
+ 
+             when N_Assignment_Statement =>
+                if Prev_Par = Name (Par) then
+                   return False;
+                end if;
+ 
+                Pre := Name (Par);
+                while Present (Pre) loop
+                   if Is_Entity_Name (Pre)
+                     and then Is_Return_Object (Entity (Pre))
+                   then
+                      return True;
+                   end if;
+ 
+                   exit when Nkind (Pre) not in N_Selected_Component
+                                              | N_Indexed_Component
+                                              | N_Slice;
+ 
+                   Pre := Prefix (Pre);
+                end loop;
+ 
+             --  Otherwise, we hit a master which was not relevant
+ 
+             when others =>
+                if Is_Master (Par) then
+                   return False;
+                end if;
+          end case;
+ 
+          --  Iterate up to the next parent, keeping track of the previous one
+ 
+          Prev_Par := Par;
+          Par      := Parent (Par);
+       end loop;
+ 
+       return False;
+    end In_Return_Value;
+ 
+    ---------------------
     -- In_Visible_Part --
     ---------------------
  
*************** package body Sem_Util is
*** 12924,12932 ****
              --  declaration hold the partial view and the full view is an
              --  itype.
  
!             elsif Nkind_In (Decl, N_Full_Type_Declaration,
!                                   N_Private_Extension_Declaration,
!                                   N_Private_Type_Declaration)
              then
                 Match := Defining_Identifier (Decl);
              end if;
--- 14460,14468 ----
              --  declaration hold the partial view and the full view is an
              --  itype.
  
!             elsif Nkind (Decl) in N_Full_Type_Declaration
!                                 | N_Private_Extension_Declaration
!                                 | N_Private_Type_Declaration
              then
                 Match := Defining_Identifier (Decl);
              end if;
*************** package body Sem_Util is
*** 12974,12980 ****
  
        begin
           if Present (Pkg)
!            and then Ekind_In (Pkg, E_Generic_Package, E_Package)
           then
              while Nkind (Pkg_Decl) /= N_Package_Specification loop
                 Pkg_Decl := Parent (Pkg_Decl);
--- 14510,14516 ----
  
        begin
           if Present (Pkg)
!            and then Is_Package_Or_Generic_Package (Pkg)
           then
              while Nkind (Pkg_Decl) /= N_Package_Specification loop
                 Pkg_Decl := Parent (Pkg_Decl);
*************** package body Sem_Util is
*** 13032,13044 ****
              Ent : Entity_Id := First_Entity (Limited_View (Scope (Typ)));
           begin
              while Present (Ent) loop
!                if Ekind (Ent) in Incomplete_Kind
                   and then Non_Limited_View (Ent) = Typ
                 then
                    return Ent;
                 end if;
  
!                Ent := Next_Entity (Ent);
              end loop;
           end;
        end if;
--- 14568,14580 ----
              Ent : Entity_Id := First_Entity (Limited_View (Scope (Typ)));
           begin
              while Present (Ent) loop
!                if Is_Incomplete_Type (Ent)
                   and then Non_Limited_View (Ent) = Typ
                 then
                    return Ent;
                 end if;
  
!                Next_Entity (Ent);
              end loop;
           end;
        end if;
*************** package body Sem_Util is
*** 13099,13104 ****
--- 14635,14674 ----
        return Off * (Expr_Value (Exp) - Expr_Value (Low_Bound ((Ind))));
     end Indexed_Component_Bit_Offset;
  
+    -----------------------------
+    -- Inherit_Predicate_Flags --
+    -----------------------------
+ 
+    procedure Inherit_Predicate_Flags (Subt, Par : Entity_Id) is
+    begin
+       if Ada_Version < Ada_2012
+         or else Present (Predicate_Function (Subt))
+       then
+          return;
+       end if;
+ 
+       Set_Has_Predicates (Subt, Has_Predicates (Par));
+       Set_Has_Static_Predicate_Aspect
+         (Subt, Has_Static_Predicate_Aspect (Par));
+       Set_Has_Dynamic_Predicate_Aspect
+         (Subt, Has_Dynamic_Predicate_Aspect (Par));
+ 
+       --  A named subtype does not inherit the predicate function of its
+       --  parent but an itype declared for a loop index needs the discrete
+       --  predicate information of its parent to execute the loop properly.
+       --  A non-discrete type may has a static predicate (for example True)
+       --  but has no static_discrete_predicate.
+ 
+       if Is_Itype (Subt) and then Present (Predicate_Function (Par)) then
+          Set_Subprograms_For_Type (Subt, Subprograms_For_Type (Par));
+ 
+          if Has_Static_Predicate (Par) and then Is_Discrete_Type (Par) then
+             Set_Static_Discrete_Predicate
+               (Subt, Static_Discrete_Predicate (Par));
+          end if;
+       end if;
+    end Inherit_Predicate_Flags;
+ 
     ----------------------------
     -- Inherit_Rep_Item_Chain --
     ----------------------------
*************** package body Sem_Util is
*** 13226,13232 ****
              --                      ^
              --                     Item
  
!             if Has_Rep_Item (From_Typ, Next_Item) then
                 exit;
              end if;
  
--- 14796,14802 ----
              --                      ^
              --                     Item
  
!             if Present_In_Rep_Item (From_Typ, Next_Item) then
                 exit;
              end if;
  
*************** package body Sem_Util is
*** 13265,13271 ****
     procedure Insert_Explicit_Dereference (N : Node_Id) is
        New_Prefix : constant Node_Id := Relocate_Node (N);
        Ent        : Entity_Id := Empty;
!       Pref       : Node_Id;
        I          : Interp_Index;
        It         : Interp;
        T          : Entity_Id;
--- 14835,14841 ----
     procedure Insert_Explicit_Dereference (N : Node_Id) is
        New_Prefix : constant Node_Id := Relocate_Node (N);
        Ent        : Entity_Id := Empty;
!       Pref       : Node_Id := Empty;
        I          : Interp_Index;
        It         : Interp;
        T          : Entity_Id;
*************** package body Sem_Util is
*** 13311,13323 ****
           --  For a retrieval of a subcomponent of some composite object,
           --  retrieve the ultimate entity if there is one.
  
!          elsif Nkind_In (New_Prefix, N_Selected_Component,
!                                      N_Indexed_Component)
           then
              Pref := Prefix (New_Prefix);
              while Present (Pref)
!               and then Nkind_In (Pref, N_Selected_Component,
!                                        N_Indexed_Component)
              loop
                 Pref := Prefix (Pref);
              end loop;
--- 14881,14892 ----
           --  For a retrieval of a subcomponent of some composite object,
           --  retrieve the ultimate entity if there is one.
  
!          elsif Nkind (New_Prefix) in N_Selected_Component | N_Indexed_Component
           then
              Pref := Prefix (New_Prefix);
              while Present (Pref)
!               and then Nkind (Pref) in
!                          N_Selected_Component | N_Indexed_Component
              loop
                 Pref := Prefix (Pref);
              end loop;
*************** package body Sem_Util is
*** 13366,13372 ****
                Defining_Identifier (Decl));
           end if;
  
!          Decl := Next (Decl);
        end loop;
     end Inspect_Deferred_Constant_Completion;
  
--- 14935,14941 ----
                Defining_Identifier (Decl));
           end if;
  
!          Next (Decl);
        end loop;
     end Inspect_Deferred_Constant_Completion;
  
*************** package body Sem_Util is
*** 13573,13582 ****
                 Name_Signed_16       => RTE (RE_IS_Is2),
                 Name_Signed_32       => RTE (RE_IS_Is4),
                 Name_Signed_64       => RTE (RE_IS_Is8),
                 Name_Unsigned_8      => RTE (RE_IS_Iu1),
                 Name_Unsigned_16     => RTE (RE_IS_Iu2),
                 Name_Unsigned_32     => RTE (RE_IS_Iu4),
!                Name_Unsigned_64     => RTE (RE_IS_Iu8));
           end if;
        end Set_Invalid_Binder_Values;
  
--- 15142,15161 ----
                 Name_Signed_16       => RTE (RE_IS_Is2),
                 Name_Signed_32       => RTE (RE_IS_Is4),
                 Name_Signed_64       => RTE (RE_IS_Is8),
+                Name_Signed_128      => Empty,
                 Name_Unsigned_8      => RTE (RE_IS_Iu1),
                 Name_Unsigned_16     => RTE (RE_IS_Iu2),
                 Name_Unsigned_32     => RTE (RE_IS_Iu4),
!                Name_Unsigned_64     => RTE (RE_IS_Iu8),
!                Name_Unsigned_128    => Empty);
! 
!             if System_Max_Integer_Size < 128 then
!                Invalid_Binder_Values (Name_Signed_128)   := RTE (RE_IS_Is8);
!                Invalid_Binder_Values (Name_Unsigned_128) := RTE (RE_IS_Iu8);
!             else
!                Invalid_Binder_Values (Name_Signed_128)   := RTE (RE_IS_Is16);
!                Invalid_Binder_Values (Name_Unsigned_128) := RTE (RE_IS_Iu16);
!             end if;
           end if;
        end Set_Invalid_Binder_Values;
  
*************** package body Sem_Util is
*** 13591,13596 ****
--- 15170,15207 ----
        end if;
     end Invalid_Scalar_Value;
  
+    --------------------------------
+    -- Is_Anonymous_Access_Actual --
+    --------------------------------
+ 
+    function Is_Anonymous_Access_Actual (N : Node_Id) return Boolean is
+       Par : Node_Id;
+    begin
+       if Ekind (Etype (N)) /= E_Anonymous_Access_Type then
+          return False;
+       end if;
+ 
+       Par := Parent (N);
+       while Present (Par)
+         and then Nkind (Par) in N_Case_Expression
+                               | N_If_Expression
+                               | N_Parameter_Association
+       loop
+          Par := Parent (Par);
+       end loop;
+       return Nkind (Par) in N_Subprogram_Call;
+    end Is_Anonymous_Access_Actual;
+ 
+    ------------------------
+    -- Is_Access_Variable --
+    ------------------------
+ 
+    function Is_Access_Variable (E : Entity_Id) return Boolean is
+    begin
+       return Is_Access_Object_Type (E)
+         and then not Is_Access_Constant (E);
+    end Is_Access_Variable;
+ 
     -----------------------------
     -- Is_Actual_Out_Parameter --
     -----------------------------
*************** package body Sem_Util is
*** 13603,13608 ****
--- 15214,15244 ----
        return Present (Formal) and then Ekind (Formal) = E_Out_Parameter;
     end Is_Actual_Out_Parameter;
  
+    --------------------------------
+    -- Is_Actual_In_Out_Parameter --
+    --------------------------------
+ 
+    function Is_Actual_In_Out_Parameter (N : Node_Id) return Boolean is
+       Formal : Entity_Id;
+       Call   : Node_Id;
+    begin
+       Find_Actual (N, Formal, Call);
+       return Present (Formal) and then Ekind (Formal) = E_In_Out_Parameter;
+    end Is_Actual_In_Out_Parameter;
+ 
+    ---------------------------------------
+    -- Is_Actual_Out_Or_In_Out_Parameter --
+    ---------------------------------------
+ 
+    function Is_Actual_Out_Or_In_Out_Parameter (N : Node_Id) return Boolean is
+       Formal : Entity_Id;
+       Call   : Node_Id;
+    begin
+       Find_Actual (N, Formal, Call);
+       return Present (Formal)
+         and then Ekind (Formal) in E_Out_Parameter | E_In_Out_Parameter;
+    end Is_Actual_Out_Or_In_Out_Parameter;
+ 
     -------------------------
     -- Is_Actual_Parameter --
     -------------------------
*************** package body Sem_Util is
*** 13688,13697 ****
                 and then Has_Aliased_Components
                            (Designated_Type (Etype (Prefix (Obj)))));
  
!       elsif Nkind_In (Obj, N_Unchecked_Type_Conversion, N_Type_Conversion) then
           return Is_Tagged_Type (Etype (Obj))
             and then Is_Aliased_View (Expression (Obj));
  
        elsif Nkind (Obj) = N_Explicit_Dereference then
           return Nkind (Original_Node (Obj)) /= N_Function_Call;
  
--- 15324,15340 ----
                 and then Has_Aliased_Components
                            (Designated_Type (Etype (Prefix (Obj)))));
  
!       elsif Nkind (Obj) in N_Unchecked_Type_Conversion | N_Type_Conversion then
           return Is_Tagged_Type (Etype (Obj))
             and then Is_Aliased_View (Expression (Obj));
  
+       --  Ada 202x AI12-0228
+ 
+       elsif Nkind (Obj) = N_Qualified_Expression
+         and then Ada_Version >= Ada_2012
+       then
+          return Is_Aliased_View (Expression (Obj));
+ 
        elsif Nkind (Obj) = N_Explicit_Dereference then
           return Nkind (Original_Node (Obj)) /= N_Function_Call;
  
*************** package body Sem_Util is
*** 13788,13800 ****
     end Is_Atomic_Object_Entity;
  
     -----------------------------
!    -- Is_Atomic_Or_VFA_Object --
     -----------------------------
  
!    function Is_Atomic_Or_VFA_Object (N : Node_Id) return Boolean is
     begin
!       return Is_Atomic_Object (N) or else Is_Volatile_Full_Access_Object (N);
!    end Is_Atomic_Or_VFA_Object;
  
     ----------------------
     -- Is_Attribute_Old --
--- 15431,15444 ----
     end Is_Atomic_Object_Entity;
  
     -----------------------------
!    -- Is_Attribute_Loop_Entry --
     -----------------------------
  
!    function Is_Attribute_Loop_Entry (N : Node_Id) return Boolean is
     begin
!       return Nkind (N) = N_Attribute_Reference
!         and then Attribute_Name (N) = Name_Loop_Entry;
!    end Is_Attribute_Loop_Entry;
  
     ----------------------
     -- Is_Attribute_Old --
*************** package body Sem_Util is
*** 13854,13859 ****
--- 15498,15514 ----
                    Is_RTE (Root_Type (Under), RO_WW_Super_String));
     end Is_Bounded_String;
  
+    -------------------------------
+    -- Is_By_Protected_Procedure --
+    -------------------------------
+ 
+    function Is_By_Protected_Procedure (Id : Entity_Id) return Boolean is
+    begin
+       return Ekind (Id) = E_Procedure
+         and then Present (Get_Rep_Pragma (Id, Name_Implemented))
+         and then Implementation_Kind (Id) = Name_By_Protected_Procedure;
+    end Is_By_Protected_Procedure;
+ 
     ---------------------
     -- Is_CCT_Instance --
     ---------------------
*************** package body Sem_Util is
*** 13863,13883 ****
        Context_Id : Entity_Id) return Boolean
     is
     begin
!       pragma Assert (Ekind_In (Ref_Id, E_Protected_Type, E_Task_Type));
  
        if Is_Single_Task_Object (Context_Id) then
           return Scope_Within_Or_Same (Etype (Context_Id), Ref_Id);
  
        else
!          pragma Assert (Ekind_In (Context_Id, E_Entry,
!                                               E_Entry_Family,
!                                               E_Function,
!                                               E_Package,
!                                               E_Procedure,
!                                               E_Protected_Type,
!                                               E_Task_Type)
!                           or else
!                         Is_Record_Type (Context_Id));
           return Scope_Within_Or_Same (Context_Id, Ref_Id);
        end if;
     end Is_CCT_Instance;
--- 15518,15534 ----
        Context_Id : Entity_Id) return Boolean
     is
     begin
!       pragma Assert (Ekind (Ref_Id) in E_Protected_Type | E_Task_Type);
  
        if Is_Single_Task_Object (Context_Id) then
           return Scope_Within_Or_Same (Etype (Context_Id), Ref_Id);
  
        else
!          pragma Assert
!            (Ekind (Context_Id) in
!               E_Entry     | E_Entry_Family   | E_Function  | E_Package |
!               E_Procedure | E_Protected_Type | E_Task_Type
!              or else Is_Record_Type (Context_Id));
           return Scope_Within_Or_Same (Context_Id, Ref_Id);
        end if;
     end Is_CCT_Instance;
*************** package body Sem_Util is
*** 14039,14044 ****
--- 15690,15809 ----
        return False;
     end Is_Child_Or_Sibling;
  
+    -------------------
+    -- Is_Confirming --
+    -------------------
+ 
+    function Is_Confirming (Aspect : Nonoverridable_Aspect_Id;
+                            Aspect_Spec_1, Aspect_Spec_2 : Node_Id)
+                           return Boolean is
+       function Names_Match (Nm1, Nm2 : Node_Id) return Boolean;
+       function Names_Match (Nm1, Nm2 : Node_Id) return Boolean is
+       begin
+          if Nkind (Nm1) /= Nkind (Nm2) then
+             return False;
+          end if;
+          case Nkind (Nm1) is
+             when N_Identifier =>
+                return Name_Equals (Chars (Nm1), Chars (Nm2));
+             when N_Expanded_Name =>
+                return Names_Match (Prefix (Nm1), Prefix (Nm2))
+                  and then Names_Match (Selector_Name (Nm1),
+                                        Selector_Name (Nm2));
+             when N_Empty =>
+                return True; -- needed for Aggregate aspect checking
+ 
+             when others =>
+                --  e.g., 'Class attribute references
+                if Is_Entity_Name (Nm1) and Is_Entity_Name (Nm2) then
+                   return Entity (Nm1) = Entity (Nm2);
+                end if;
+ 
+                raise Program_Error;
+          end case;
+       end Names_Match;
+    begin
+       --  allow users to disable "shall be confirming" check, at least for now
+       if Relaxed_RM_Semantics then
+          return True;
+       end if;
+ 
+       --  ??? Type conversion here (along with "when others =>" below) is a
+       --  workaround for a bootstrapping problem related to casing on a
+       --  static-predicate-bearing subtype.
+ 
+       case Aspect_Id (Aspect) is
+          --  name-valued aspects; compare text of names, not resolution.
+          when Aspect_Default_Iterator
+             | Aspect_Iterator_Element
+             | Aspect_Constant_Indexing
+             | Aspect_Variable_Indexing
+             | Aspect_Implicit_Dereference =>
+             declare
+                Item_1 : constant Node_Id := Aspect_Rep_Item (Aspect_Spec_1);
+                Item_2 : constant Node_Id := Aspect_Rep_Item (Aspect_Spec_2);
+             begin
+                if (Nkind (Item_1) /= N_Attribute_Definition_Clause)
+                  or (Nkind (Item_2) /= N_Attribute_Definition_Clause)
+                then
+                   pragma Assert (Serious_Errors_Detected > 0);
+                   return True;
+                end if;
+ 
+                return Names_Match (Expression (Item_1),
+                                    Expression (Item_2));
+             end;
+ 
+          --  one of a kind
+          when Aspect_Aggregate =>
+             declare
+                Empty_1,
+                Add_Named_1,
+                Add_Unnamed_1,
+                New_Indexed_1,
+                Assign_Indexed_1,
+                Empty_2,
+                Add_Named_2,
+                Add_Unnamed_2,
+                New_Indexed_2,
+                Assign_Indexed_2 : Node_Id := Empty;
+             begin
+                Parse_Aspect_Aggregate
+                  (N                   => Expression (Aspect_Spec_1),
+                   Empty_Subp          => Empty_1,
+                   Add_Named_Subp      => Add_Named_1,
+                   Add_Unnamed_Subp    => Add_Unnamed_1,
+                   New_Indexed_Subp    => New_Indexed_1,
+                   Assign_Indexed_Subp => Assign_Indexed_1);
+                Parse_Aspect_Aggregate
+                  (N                   => Expression (Aspect_Spec_2),
+                   Empty_Subp          => Empty_2,
+                   Add_Named_Subp      => Add_Named_2,
+                   Add_Unnamed_Subp    => Add_Unnamed_2,
+                   New_Indexed_Subp    => New_Indexed_2,
+                   Assign_Indexed_Subp => Assign_Indexed_2);
+                return
+                  Names_Match (Empty_1, Empty_2) and then
+                  Names_Match (Add_Named_1, Add_Named_2) and then
+                  Names_Match (Add_Unnamed_1, Add_Unnamed_2) and then
+                  Names_Match (New_Indexed_1, New_Indexed_2) and then
+                  Names_Match (Assign_Indexed_1, Assign_Indexed_2);
+             end;
+ 
+          --  scalar-valued aspects; compare (static) values.
+          when Aspect_Max_Entry_Queue_Length --  | Aspect_No_Controlled_Parts
+               =>
+             --  This should be unreachable. No_Controlled_Parts is
+             --  not yet supported at all in GNAT and Max_Entry_Queue_Length
+             --  is supported only for protected entries, not for types.
+             pragma Assert (Serious_Errors_Detected /= 0);
+             return True;
+ 
+          when others =>
+             raise Program_Error;
+       end case;
+    end Is_Confirming;
+ 
     -----------------------------
     -- Is_Concurrent_Interface --
     -----------------------------
*************** package body Sem_Util is
*** 14191,14200 ****
                 elsif Nkind (Parent (Par)) = N_Object_Renaming_Declaration then
                    return False;
  
!                elsif Nkind_In
!                  (Nkind (Parent (Par)), N_Function_Call,
!                                         N_Procedure_Call_Statement,
!                                         N_Entry_Call_Statement)
                 then
                    --  Check that the element is not part of an actual for an
                    --  in-out parameter.
--- 15956,15965 ----
                 elsif Nkind (Parent (Par)) = N_Object_Renaming_Declaration then
                    return False;
  
!                elsif Nkind (Parent (Par)) in
!                        N_Function_Call            |
!                        N_Procedure_Call_Statement |
!                        N_Entry_Call_Statement
                 then
                    --  Check that the element is not part of an actual for an
                    --  in-out parameter.
*************** package body Sem_Util is
*** 14354,14362 ****
  
           P := Parent (N);
           while Present (P) loop
!             if Nkind_In (P, N_Full_Type_Declaration,
!                             N_Private_Type_Declaration,
!                             N_Subtype_Declaration)
                and then Comes_From_Source (P)
                and then Defining_Entity (P) = Typ
              then
--- 16119,16127 ----
  
           P := Parent (N);
           while Present (P) loop
!             if Nkind (P) in N_Full_Type_Declaration
!                           | N_Private_Type_Declaration
!                           | N_Subtype_Declaration
                and then Comes_From_Source (P)
                and then Defining_Entity (P) = Typ
              then
*************** package body Sem_Util is
*** 14388,14393 ****
--- 16153,16211 ----
        return False;
     end Is_Current_Instance;
  
+    --------------------------------------------------
+    -- Is_Current_Instance_Reference_In_Type_Aspect --
+    --------------------------------------------------
+ 
+    function Is_Current_Instance_Reference_In_Type_Aspect
+      (N : Node_Id) return Boolean
+    is
+    begin
+       --  When a current_instance is referenced within an aspect_specification
+       --  of a type or subtype, it will show up as a reference to the formal
+       --  parameter of the aspect's associated subprogram rather than as a
+       --  reference to the type or subtype itself (in fact, the original name
+       --  is never even analyzed). We check for predicate, invariant, and
+       --  Default_Initial_Condition subprograms (in theory there could be
+       --  other cases added, in which case this function will need updating).
+ 
+       if Is_Entity_Name (N) then
+          return Present (Entity (N))
+            and then Ekind (Entity (N)) = E_In_Parameter
+            and then Ekind (Scope (Entity (N))) in E_Function | E_Procedure
+            and then
+              (Is_Predicate_Function (Scope (Entity (N)))
+                or else Is_Predicate_Function_M (Scope (Entity (N)))
+                or else Is_Invariant_Procedure (Scope (Entity (N)))
+                or else Is_Partial_Invariant_Procedure (Scope (Entity (N)))
+                or else Is_DIC_Procedure (Scope (Entity (N))));
+ 
+       else
+          case Nkind (N) is
+             when N_Indexed_Component
+                | N_Slice
+             =>
+                return
+                  Is_Current_Instance_Reference_In_Type_Aspect (Prefix (N));
+ 
+             when N_Selected_Component =>
+                return
+                  Is_Current_Instance_Reference_In_Type_Aspect (Prefix (N));
+ 
+             when N_Type_Conversion =>
+                return Is_Current_Instance_Reference_In_Type_Aspect
+                         (Expression (N));
+ 
+             when N_Qualified_Expression =>
+                return Is_Current_Instance_Reference_In_Type_Aspect
+                         (Expression (N));
+ 
+             when others =>
+                return False;
+          end case;
+       end if;
+    end Is_Current_Instance_Reference_In_Type_Aspect;
+ 
     --------------------
     -- Is_Declaration --
     --------------------
*************** package body Sem_Util is
*** 14523,14529 ****
        P_Aliased   : Boolean := False;
        Comp        : Entity_Id;
  
!       Deref : Node_Id := Object;
        --  Dereference node, in something like X.all.Y(2)
  
     --  Start of processing for Is_Dependent_Component_Of_Mutable_Object
--- 16341,16347 ----
        P_Aliased   : Boolean := False;
        Comp        : Entity_Id;
  
!       Deref : Node_Id := Original_Node (Object);
        --  Dereference node, in something like X.all.Y(2)
  
     --  Start of processing for Is_Dependent_Component_Of_Mutable_Object
*************** package body Sem_Util is
*** 14531,14541 ****
     begin
        --  Find the dereference node if any
  
!       while Nkind_In (Deref, N_Indexed_Component,
!                              N_Selected_Component,
!                              N_Slice)
        loop
!          Deref := Prefix (Deref);
        end loop;
  
        --  If the prefix is a qualified expression of a variable, then function
--- 16349,16358 ----
     begin
        --  Find the dereference node if any
  
!       while Nkind (Deref) in
!               N_Indexed_Component | N_Selected_Component | N_Slice
        loop
!          Deref := Original_Node (Prefix (Deref));
        end loop;
  
        --  If the prefix is a qualified expression of a variable, then function
*************** package body Sem_Util is
*** 14555,14563 ****
  
        if Is_Variable (Object)
          or else Is_Variable (Deref)
!         or else (Ada_Version >= Ada_2005
!                   and then (Nkind (Deref) = N_Explicit_Dereference
!                              or else Is_Access_Type (Etype (Deref))))
        then
           if Nkind (Object) = N_Selected_Component then
  
--- 16372,16382 ----
  
        if Is_Variable (Object)
          or else Is_Variable (Deref)
!         or else
!           (Ada_Version >= Ada_2005
!             and then (Nkind (Deref) = N_Explicit_Dereference
!                        or else (Present (Etype (Deref))
!                                  and then Is_Access_Type (Etype (Deref)))))
        then
           if Nkind (Object) = N_Selected_Component then
  
*************** package body Sem_Util is
*** 14565,14572 ****
              --  False (it could be a function selector in a prefix form call
              --  occurring in an iterator specification).
  
!             if not Ekind_In (Entity (Selector_Name (Object)), E_Component,
!                                                               E_Discriminant)
              then
                 return False;
              end if;
--- 16384,16391 ----
              --  False (it could be a function selector in a prefix form call
              --  occurring in an iterator specification).
  
!             if Ekind (Entity (Selector_Name (Object))) not in
!                  E_Component | E_Discriminant
              then
                 return False;
              end if;
*************** package body Sem_Util is
*** 14711,14724 ****
           elsif Nkind (Object) = N_Indexed_Component
             or else Nkind (Object) = N_Slice
           then
!             return Is_Dependent_Component_Of_Mutable_Object (Prefix (Object));
  
           --  A type conversion that Is_Variable is a view conversion:
           --  go back to the denoted object.
  
           elsif Nkind (Object) = N_Type_Conversion then
              return
!               Is_Dependent_Component_Of_Mutable_Object (Expression (Object));
           end if;
        end if;
  
--- 16530,16545 ----
           elsif Nkind (Object) = N_Indexed_Component
             or else Nkind (Object) = N_Slice
           then
!             return Is_Dependent_Component_Of_Mutable_Object
!                      (Original_Node (Prefix (Object)));
  
           --  A type conversion that Is_Variable is a view conversion:
           --  go back to the denoted object.
  
           elsif Nkind (Object) = N_Type_Conversion then
              return
!               Is_Dependent_Component_Of_Mutable_Object
!                 (Original_Node (Expression (Object)));
           end if;
        end if;
  
*************** package body Sem_Util is
*** 14732,14741 ****
     function Is_Dereferenced (N : Node_Id) return Boolean is
        P : constant Node_Id := Parent (N);
     begin
!       return Nkind_In (P, N_Selected_Component,
!                           N_Explicit_Dereference,
!                           N_Indexed_Component,
!                           N_Slice)
          and then Prefix (P) = N;
     end Is_Dereferenced;
  
--- 16553,16562 ----
     function Is_Dereferenced (N : Node_Id) return Boolean is
        P : constant Node_Id := Parent (N);
     begin
!       return Nkind (P) in N_Selected_Component
!                         | N_Explicit_Dereference
!                         | N_Indexed_Component
!                         | N_Slice
          and then Prefix (P) = N;
     end Is_Dereferenced;
  
*************** package body Sem_Util is
*** 14852,14858 ****
     -- Is_Effectively_Volatile --
     -----------------------------
  
!    function Is_Effectively_Volatile (Id : Entity_Id) return Boolean is
     begin
        if Is_Type (Id) then
  
--- 16673,16681 ----
     -- Is_Effectively_Volatile --
     -----------------------------
  
!    function Is_Effectively_Volatile
!      (Id               : Entity_Id;
!       Ignore_Protected : Boolean := False) return Boolean is
     begin
        if Is_Type (Id) then
  
*************** package body Sem_Util is
*** 14867,14892 ****
           --  effectively volatile.
  
           elsif Is_Array_Type (Id) then
!             declare
!                Anc : Entity_Id := Base_Type (Id);
!             begin
!                if Is_Private_Type (Anc) then
!                   Anc := Full_View (Anc);
!                end if;
  
!                --  Test for presence of ancestor, as the full view of a private
!                --  type may be missing in case of error.
  
!                return
!                  Has_Volatile_Components (Id)
!                    or else
!                  (Present (Anc)
!                    and then Is_Effectively_Volatile (Component_Type (Anc)));
!             end;
  
!          --  A protected type is always volatile
  
!          elsif Is_Protected_Type (Id) then
              return True;
  
           --  A descendant of Ada.Synchronous_Task_Control.Suspension_Object is
--- 16690,16718 ----
           --  effectively volatile.
  
           elsif Is_Array_Type (Id) then
!             if Has_Volatile_Components (Id) then
!                return True;
!             else
!                declare
!                   Anc : Entity_Id := Base_Type (Id);
!                begin
!                   if Is_Private_Type (Anc) then
!                      Anc := Full_View (Anc);
!                   end if;
  
!                   --  Test for presence of ancestor, as the full view of a
!                   --  private type may be missing in case of error.
  
!                   return Present (Anc)
!                     and then Is_Effectively_Volatile
!                       (Component_Type (Anc), Ignore_Protected);
!                end;
!             end if;
  
!          --  A protected type is always volatile unless Ignore_Protected is
!          --  True.
  
!          elsif Is_Protected_Type (Id) and then not Ignore_Protected then
              return True;
  
           --  A descendant of Ada.Synchronous_Task_Control.Suspension_Object is
*************** package body Sem_Util is
*** 14903,14941 ****
  
        --  Otherwise Id denotes an object
  
!       else
           --  A volatile object for which No_Caching is enabled is not
           --  effectively volatile.
  
           return
!            (Is_Volatile (Id) and then not No_Caching_Enabled (Id))
               or else Has_Volatile_Components (Id)
!              or else Is_Effectively_Volatile (Etype (Id));
        end if;
     end Is_Effectively_Volatile;
  
     ------------------------------------
     -- Is_Effectively_Volatile_Object --
     ------------------------------------
  
     function Is_Effectively_Volatile_Object (N : Node_Id) return Boolean is
     begin
        if Is_Entity_Name (N) then
!          return Is_Effectively_Volatile (Entity (N));
  
!       elsif Nkind (N) = N_Indexed_Component then
!          return Is_Effectively_Volatile_Object (Prefix (N));
  
        elsif Nkind (N) = N_Selected_Component then
           return
!            Is_Effectively_Volatile_Object (Prefix (N))
               or else
!            Is_Effectively_Volatile_Object (Selector_Name (N));
  
        else
           return False;
        end if;
!    end Is_Effectively_Volatile_Object;
  
     -------------------
     -- Is_Entry_Body --
--- 16729,16866 ----
  
        --  Otherwise Id denotes an object
  
!       else pragma Assert (Is_Object (Id));
           --  A volatile object for which No_Caching is enabled is not
           --  effectively volatile.
  
           return
!            (Is_Volatile (Id)
!             and then not
!               (Ekind (Id) = E_Variable and then No_Caching_Enabled (Id)))
               or else Has_Volatile_Components (Id)
!              or else Is_Effectively_Volatile (Etype (Id), Ignore_Protected);
        end if;
     end Is_Effectively_Volatile;
  
+    -----------------------------------------
+    -- Is_Effectively_Volatile_For_Reading --
+    -----------------------------------------
+ 
+    function Is_Effectively_Volatile_For_Reading
+      (Id               : Entity_Id;
+       Ignore_Protected : Boolean := False) return Boolean
+    is
+    begin
+       --  A concurrent type is effectively volatile for reading, except for a
+       --  protected type when Ignore_Protected is True.
+ 
+       if Is_Task_Type (Id)
+         or else (Is_Protected_Type (Id) and then not Ignore_Protected)
+       then
+          return True;
+ 
+       elsif Is_Effectively_Volatile (Id, Ignore_Protected) then
+ 
+         --  Other volatile types and objects are effectively volatile for
+         --  reading when they have property Async_Writers or Effective_Reads
+         --  set to True. This includes the case of an array type whose
+         --  Volatile_Components aspect is True (hence it is effectively
+         --  volatile) which does not have the properties Async_Writers
+         --  and Effective_Reads set to False.
+ 
+          if Async_Writers_Enabled (Id)
+            or else Effective_Reads_Enabled (Id)
+          then
+             return True;
+ 
+          --  In addition, an array type is effectively volatile for reading
+          --  when its component type is effectively volatile for reading.
+ 
+          elsif Is_Array_Type (Id) then
+             declare
+                Anc : Entity_Id := Base_Type (Id);
+             begin
+                if Is_Private_Type (Anc) then
+                   Anc := Full_View (Anc);
+                end if;
+ 
+                --  Test for presence of ancestor, as the full view of a
+                --  private type may be missing in case of error.
+ 
+                return Present (Anc)
+                  and then Is_Effectively_Volatile_For_Reading
+                    (Component_Type (Anc), Ignore_Protected);
+             end;
+          end if;
+       end if;
+ 
+       return False;
+ 
+    end Is_Effectively_Volatile_For_Reading;
+ 
     ------------------------------------
     -- Is_Effectively_Volatile_Object --
     ------------------------------------
  
     function Is_Effectively_Volatile_Object (N : Node_Id) return Boolean is
+       function Is_Effectively_Volatile (E : Entity_Id) return Boolean is
+          (Is_Effectively_Volatile (E, Ignore_Protected => False));
+ 
+       function Is_Effectively_Volatile_Object_Inst
+       is new Is_Effectively_Volatile_Object_Shared (Is_Effectively_Volatile);
+    begin
+       return Is_Effectively_Volatile_Object_Inst (N);
+    end Is_Effectively_Volatile_Object;
+ 
+    ------------------------------------------------
+    -- Is_Effectively_Volatile_Object_For_Reading --
+    ------------------------------------------------
+ 
+    function Is_Effectively_Volatile_Object_For_Reading
+      (N : Node_Id) return Boolean
+    is
+       function Is_Effectively_Volatile_For_Reading
+         (E : Entity_Id) return Boolean
+       is (Is_Effectively_Volatile_For_Reading (E, Ignore_Protected => False));
+ 
+       function Is_Effectively_Volatile_Object_For_Reading_Inst
+       is new Is_Effectively_Volatile_Object_Shared
+         (Is_Effectively_Volatile_For_Reading);
+    begin
+       return Is_Effectively_Volatile_Object_For_Reading_Inst (N);
+    end Is_Effectively_Volatile_Object_For_Reading;
+ 
+    -------------------------------------------
+    -- Is_Effectively_Volatile_Object_Shared --
+    -------------------------------------------
+ 
+    function Is_Effectively_Volatile_Object_Shared
+      (N : Node_Id) return Boolean
+    is
     begin
        if Is_Entity_Name (N) then
!          return Is_Object (Entity (N))
!            and then Is_Effectively_Volatile_Entity (Entity (N));
  
!       elsif Nkind (N) in N_Indexed_Component | N_Slice then
!          return Is_Effectively_Volatile_Object_Shared (Prefix (N));
  
        elsif Nkind (N) = N_Selected_Component then
           return
!            Is_Effectively_Volatile_Object_Shared (Prefix (N))
               or else
!            Is_Effectively_Volatile_Object_Shared (Selector_Name (N));
! 
!       elsif Nkind (N) in N_Qualified_Expression
!                        | N_Unchecked_Type_Conversion
!                        | N_Type_Conversion
!       then
!          return Is_Effectively_Volatile_Object_Shared (Expression (N));
  
        else
           return False;
        end if;
!    end Is_Effectively_Volatile_Object_Shared;
  
     -------------------
     -- Is_Entry_Body --
*************** package body Sem_Util is
*** 14944,14950 ****
     function Is_Entry_Body (Id : Entity_Id) return Boolean is
     begin
        return
!         Ekind_In (Id, E_Entry, E_Entry_Family)
            and then Nkind (Unit_Declaration_Node (Id)) = N_Entry_Body;
     end Is_Entry_Body;
  
--- 16869,16875 ----
     function Is_Entry_Body (Id : Entity_Id) return Boolean is
     begin
        return
!         Is_Entry (Id)
            and then Nkind (Unit_Declaration_Node (Id)) = N_Entry_Body;
     end Is_Entry_Body;
  
*************** package body Sem_Util is
*** 14955,14961 ****
     function Is_Entry_Declaration (Id : Entity_Id) return Boolean is
     begin
        return
!         Ekind_In (Id, E_Entry, E_Entry_Family)
            and then Nkind (Unit_Declaration_Node (Id)) = N_Entry_Declaration;
     end Is_Entry_Declaration;
  
--- 16880,16886 ----
     function Is_Entry_Declaration (Id : Entity_Id) return Boolean is
     begin
        return
!         Is_Entry (Id)
            and then Nkind (Unit_Declaration_Node (Id)) = N_Entry_Declaration;
     end Is_Entry_Declaration;
  
*************** package body Sem_Util is
*** 14979,14985 ****
  
     function Is_Expression_Function (Subp : Entity_Id) return Boolean is
     begin
!       if Ekind_In (Subp, E_Function, E_Subprogram_Body) then
           return
             Nkind (Original_Node (Unit_Declaration_Node (Subp))) =
               N_Expression_Function;
--- 16904,16910 ----
  
     function Is_Expression_Function (Subp : Entity_Id) return Boolean is
     begin
!       if Ekind (Subp) in E_Function | E_Subprogram_Body then
           return
             Nkind (Original_Node (Unit_Declaration_Node (Subp))) =
               N_Expression_Function;
*************** package body Sem_Util is
*** 15074,15082 ****
        --  A qualified expression or a type conversion is an EVF expression when
        --  its operand is an EVF expression.
  
!       elsif Nkind_In (N, N_Qualified_Expression,
!                          N_Unchecked_Type_Conversion,
!                          N_Type_Conversion)
        then
           return Is_EVF_Expression (Expression (N));
  
--- 16999,17007 ----
        --  A qualified expression or a type conversion is an EVF expression when
        --  its operand is an EVF expression.
  
!       elsif Nkind (N) in N_Qualified_Expression
!                        | N_Unchecked_Type_Conversion
!                        | N_Type_Conversion
        then
           return Is_EVF_Expression (Expression (N));
  
*************** package body Sem_Util is
*** 15084,15092 ****
        --  their prefix denotes an EVF expression.
  
        elsif Nkind (N) = N_Attribute_Reference
!         and then Nam_In (Attribute_Name (N), Name_Loop_Entry,
!                                              Name_Old,
!                                              Name_Update)
        then
           return Is_EVF_Expression (Prefix (N));
        end if;
--- 17009,17017 ----
        --  their prefix denotes an EVF expression.
  
        elsif Nkind (N) = N_Attribute_Reference
!         and then Attribute_Name (N) in Name_Loop_Entry
!                                      | Name_Old
!                                      | Name_Update
        then
           return Is_EVF_Expression (Prefix (N));
        end if;
*************** package body Sem_Util is
*** 15119,15124 ****
--- 17044,17058 ----
        return R;
     end Is_Fixed_Model_Number;
  
+    -----------------------------
+    -- Is_Full_Access_Object --
+    -----------------------------
+ 
+    function Is_Full_Access_Object (N : Node_Id) return Boolean is
+    begin
+       return Is_Atomic_Object (N) or else Is_Volatile_Full_Access_Object (N);
+    end Is_Full_Access_Object;
+ 
     -------------------------------
     -- Is_Fully_Initialized_Type --
     -------------------------------
*************** package body Sem_Util is
*** 15412,15425 ****
     begin
        --  Package/subprogram body
  
!       if Nkind_In (Decl, N_Package_Body, N_Subprogram_Body)
          and then Present (Corresponding_Spec (Decl))
        then
           Spec_Decl := Unit_Declaration_Node (Corresponding_Spec (Decl));
  
        --  Package/subprogram body stub
  
!       elsif Nkind_In (Decl, N_Package_Body_Stub, N_Subprogram_Body_Stub)
          and then Present (Corresponding_Spec_Of_Stub (Decl))
        then
           Spec_Decl :=
--- 17346,17359 ----
     begin
        --  Package/subprogram body
  
!       if Nkind (Decl) in N_Package_Body | N_Subprogram_Body
          and then Present (Corresponding_Spec (Decl))
        then
           Spec_Decl := Unit_Declaration_Node (Corresponding_Spec (Decl));
  
        --  Package/subprogram body stub
  
!       elsif Nkind (Decl) in N_Package_Body_Stub | N_Subprogram_Body_Stub
          and then Present (Corresponding_Spec_Of_Stub (Decl))
        then
           Spec_Decl :=
*************** package body Sem_Util is
*** 15437,15444 ****
        --  calls.
  
        return
!         Nkind_In (Spec_Decl, N_Generic_Package_Declaration,
!                              N_Generic_Subprogram_Declaration);
     end Is_Generic_Declaration_Or_Body;
  
     ---------------------------
--- 17371,17378 ----
        --  calls.
  
        return
!         Nkind (Spec_Decl) in N_Generic_Package_Declaration
!                            | N_Generic_Subprogram_Declaration;
     end Is_Generic_Declaration_Or_Body;
  
     ---------------------------
*************** package body Sem_Util is
*** 15560,15566 ****
          and then not Is_Dispatching_Operation (Subp)
          and then Needs_Finalization (Etype (Subp))
          and then not Is_Class_Wide_Type (Etype (Subp))
!         and then not (Has_Invariants (Etype (Subp)))
          and then Present (Subprogram_Body (Subp))
          and then Was_Expression_Function (Subprogram_Body (Subp))
        then
--- 17494,17500 ----
          and then not Is_Dispatching_Operation (Subp)
          and then Needs_Finalization (Etype (Subp))
          and then not Is_Class_Wide_Type (Etype (Subp))
!         and then not Has_Invariants (Etype (Subp))
          and then Present (Subprogram_Body (Subp))
          and then Was_Expression_Function (Subprogram_Body (Subp))
        then
*************** package body Sem_Util is
*** 15597,15604 ****
           --  a predefined unit, i.e the one that declares iterator interfaces.
  
           return
!            Nam_In (Chars (Iter_Typ), Name_Forward_Iterator,
!                                      Name_Reversible_Iterator)
               and then In_Predefined_Unit (Root_Type (Iter_Typ));
        end Denotes_Iterator;
  
--- 17531,17537 ----
           --  a predefined unit, i.e the one that declares iterator interfaces.
  
           return
!            Chars (Iter_Typ) in Name_Forward_Iterator | Name_Reversible_Iterator
               and then In_Predefined_Unit (Root_Type (Iter_Typ));
        end Denotes_Iterator;
  
*************** package body Sem_Util is
*** 15674,15680 ****
  
        --  Case of prefix of indexed or selected component or slice
  
!       elsif Nkind_In (P, N_Indexed_Component, N_Selected_Component, N_Slice)
          and then N = Prefix (P)
        then
           --  Here we have the case where the parent P is N.Q or N(Q .. R).
--- 17607,17613 ----
  
        --  Case of prefix of indexed or selected component or slice
  
!       elsif Nkind (P) in N_Indexed_Component | N_Selected_Component | N_Slice
          and then N = Prefix (P)
        then
           --  Here we have the case where the parent P is N.Q or N(Q .. R).
*************** package body Sem_Util is
*** 15752,15758 ****
              Ent : constant Entity_Id := Entity (Expr);
              Sub : constant Entity_Id := Enclosing_Subprogram (Ent);
           begin
!             if not Ekind_In (Ent, E_Variable, E_In_Out_Parameter) then
                 return False;
              else
                 return Present (Sub) and then Sub = Current_Subprogram;
--- 17685,17691 ----
              Ent : constant Entity_Id := Entity (Expr);
              Sub : constant Entity_Id := Enclosing_Subprogram (Ent);
           begin
!             if Ekind (Ent) not in E_Variable | E_In_Out_Parameter then
                 return False;
              else
                 return Present (Sub) and then Sub = Current_Subprogram;
*************** package body Sem_Util is
*** 15761,15766 ****
--- 17694,17755 ----
        end if;
     end Is_Local_Variable_Reference;
  
+    ---------------
+    -- Is_Master --
+    ---------------
+ 
+    function Is_Master (N : Node_Id) return Boolean is
+       Disable_Subexpression_Masters : constant Boolean := True;
+ 
+    begin
+       if Nkind (N) in N_Subprogram_Body | N_Task_Body | N_Entry_Body
+         or else Is_Statement (N)
+       then
+          return True;
+       end if;
+ 
+       --  We avoid returning True when the master is a subexpression described
+       --  in RM 7.6.1(3/2) for the proposes of accessibility level calculation
+       --  in Accessibility_Level_Helper.Innermost_Master_Scope_Depth ???
+ 
+       if not Disable_Subexpression_Masters
+         and then Nkind (N) in N_Subexpr
+       then
+          declare
+             Par : Node_Id := N;
+ 
+             subtype N_Simple_Statement_Other_Than_Simple_Return
+               is Node_Kind with Static_Predicate =>
+                 N_Simple_Statement_Other_Than_Simple_Return
+                   in N_Abort_Statement
+                    | N_Assignment_Statement
+                    | N_Code_Statement
+                    | N_Delay_Statement
+                    | N_Entry_Call_Statement
+                    | N_Free_Statement
+                    | N_Goto_Statement
+                    | N_Null_Statement
+                    | N_Raise_Statement
+                    | N_Requeue_Statement
+                    | N_Exit_Statement
+                    | N_Procedure_Call_Statement;
+          begin
+             while Present (Par) loop
+                Par := Parent (Par);
+                if Nkind (Par) in N_Subexpr |
+                  N_Simple_Statement_Other_Than_Simple_Return
+                then
+                   return False;
+                end if;
+             end loop;
+ 
+             return True;
+          end;
+       end if;
+ 
+       return False;
+    end Is_Master;
+ 
     -----------------------
     -- Is_Name_Reference --
     -----------------------
*************** package body Sem_Util is
*** 15782,15789 ****
           --  Attributes 'Input, 'Old and 'Result produce objects
  
           when N_Attribute_Reference =>
!             return
!               Nam_In (Attribute_Name (N), Name_Input, Name_Old, Name_Result);
  
           when N_Selected_Component =>
              return
--- 17771,17777 ----
           --  Attributes 'Input, 'Old and 'Result produce objects
  
           when N_Attribute_Reference =>
!             return Attribute_Name (N) in Name_Input | Name_Old | Name_Result;
  
           when N_Selected_Component =>
              return
*************** package body Sem_Util is
*** 16016,16021 ****
--- 18004,18012 ----
  
                 Visit (Discrete_Subtype_Definition (Nod));
  
+             when N_Parameter_Association =>
+                Visit (Explicit_Actual_Parameter (N));
+ 
              when N_Protected_Definition =>
  
                 --  End_Label is left out because it is not relevant for
*************** package body Sem_Util is
*** 16181,16186 ****
--- 18172,18192 ----
                 Visit_List (Actions (Expr));
                 Visit (Expression (Expr));
  
+             when N_Function_Call =>
+ 
+                --  Ada 2020 (AI12-0175): Calls to certain functions that are
+                --  essentially unchecked conversions are preelaborable.
+ 
+                if Ada_Version >= Ada_2020
+                  and then Nkind (Expr) = N_Function_Call
+                  and then Is_Entity_Name (Name (Expr))
+                  and then Is_Preelaborable_Function (Entity (Name (Expr)))
+                then
+                   Visit_List (Parameter_Associations (Expr));
+                else
+                   raise Non_Preelaborable;
+                end if;
+ 
              when N_If_Expression =>
                 Visit_List (Expressions (Expr));
  
*************** package body Sem_Util is
*** 16214,16220 ****
                          if Ekind (Id) = E_Discriminant then
                             null;
  
!                         elsif Ekind_In (Id, E_Constant, E_In_Parameter)
                            and then Present (Discriminal_Link (Id))
                          then
                             null;
--- 18220,18226 ----
                          if Ekind (Id) = E_Discriminant then
                             null;
  
!                         elsif Ekind (Id) in E_Constant | E_In_Parameter
                            and then Present (Discriminal_Link (Id))
                          then
                             null;
*************** package body Sem_Util is
*** 16306,16318 ****
  
     function Is_Object_Image (Prefix : Node_Id) return Boolean is
     begin
-       --  When the type of the prefix is not scalar, then the prefix is not
-       --  valid in any scenario.
- 
-       if not Is_Scalar_Type (Etype (Prefix)) then
-          return False;
-       end if;
- 
        --  Here we test for the case that the prefix is not a type and assume
        --  if it is not then it must be a named value or an object reference.
        --  This is because the parser always checks that prefixes of attributes
--- 18312,18317 ----
*************** package body Sem_Util is
*** 16326,16361 ****
     -------------------------
  
     function Is_Object_Reference (N : Node_Id) return Boolean is
!       function Is_Internally_Generated_Renaming (N : Node_Id) return Boolean;
!       --  Determine whether N is the name of an internally-generated renaming
! 
!       --------------------------------------
!       -- Is_Internally_Generated_Renaming --
!       --------------------------------------
  
!       function Is_Internally_Generated_Renaming (N : Node_Id) return Boolean is
!          P : Node_Id;
  
        begin
!          P := N;
!          while Present (P) loop
!             if Nkind (P) = N_Object_Renaming_Declaration then
!                return not Comes_From_Source (P);
!             elsif Is_List_Member (P) then
!                return False;
!             end if;
! 
!             P := Parent (P);
!          end loop;
! 
!          return False;
!       end Is_Internally_Generated_Renaming;
! 
!    --  Start of processing for Is_Object_Reference
  
     begin
        if Is_Entity_Name (N) then
!          return Present (Entity (N)) and then Is_Object (Entity (N));
  
        else
           case Nkind (N) is
--- 18325,18355 ----
     -------------------------
  
     function Is_Object_Reference (N : Node_Id) return Boolean is
!       function Safe_Prefix (N : Node_Id) return Node_Id;
!       --  Return Prefix (N) unless it has been rewritten as an
!       --  N_Raise_xxx_Error node, in which case return its original node.
  
!       -----------------
!       -- Safe_Prefix --
!       -----------------
  
+       function Safe_Prefix (N : Node_Id) return Node_Id is
        begin
!          if Nkind (Prefix (N)) in N_Raise_xxx_Error then
!             return Original_Node (Prefix (N));
!          else
!             return Prefix (N);
!          end if;
!       end Safe_Prefix;
  
     begin
+       --  AI12-0068: Note that a current instance reference in a type or
+       --  subtype's aspect_specification is considered a value, not an object
+       --  (see RM 8.6(18/5)).
+ 
        if Is_Entity_Name (N) then
!          return Present (Entity (N)) and then Is_Object (Entity (N))
!            and then not Is_Current_Instance_Reference_In_Type_Aspect (N);
  
        else
           case Nkind (N) is
*************** package body Sem_Util is
*** 16363,16370 ****
                 | N_Slice
              =>
                 return
!                  Is_Object_Reference (Prefix (N))
!                    or else Is_Access_Type (Etype (Prefix (N)));
  
              --  In Ada 95, a function call is a constant object; a procedure
              --  call is not.
--- 18357,18364 ----
                 | N_Slice
              =>
                 return
!                  Is_Object_Reference (Safe_Prefix (N))
!                    or else Is_Access_Type (Etype (Safe_Prefix (N)));
  
              --  In Ada 95, a function call is a constant object; a procedure
              --  call is not.
*************** package body Sem_Util is
*** 16372,16399 ****
              --  Note that predefined operators are functions as well, and so
              --  are attributes that are (can be renamed as) functions.
  
!             when N_Binary_Op
!                | N_Function_Call
!                | N_Unary_Op
              =>
                 return Etype (N) /= Standard_Void_Type;
  
!             --  Attributes references 'Loop_Entry, 'Old, and 'Result yield
!             --  objects, even though they are not functions.
  
              when N_Attribute_Reference =>
                 return
!                  Nam_In (Attribute_Name (N), Name_Loop_Entry,
!                                              Name_Old,
!                                              Name_Result)
                     or else Is_Function_Attribute_Name (Attribute_Name (N));
  
              when N_Selected_Component =>
                 return
                   Is_Object_Reference (Selector_Name (N))
                     and then
!                      (Is_Object_Reference (Prefix (N))
!                        or else Is_Access_Type (Etype (Prefix (N))));
  
              --  An explicit dereference denotes an object, except that a
              --  conditional expression gets turned into an explicit dereference
--- 18366,18393 ----
              --  Note that predefined operators are functions as well, and so
              --  are attributes that are (can be renamed as) functions.
  
!             when N_Function_Call
!                | N_Op
              =>
                 return Etype (N) /= Standard_Void_Type;
  
!             --  Attributes references 'Loop_Entry, 'Old, 'Priority and 'Result
!             --  yield objects, even though they are not functions.
  
              when N_Attribute_Reference =>
                 return
!                  Attribute_Name (N) in Name_Loop_Entry
!                                      | Name_Old
!                                      | Name_Priority
!                                      | Name_Result
                     or else Is_Function_Attribute_Name (Attribute_Name (N));
  
              when N_Selected_Component =>
                 return
                   Is_Object_Reference (Selector_Name (N))
                     and then
!                      (Is_Object_Reference (Safe_Prefix (N))
!                        or else Is_Access_Type (Etype (Safe_Prefix (N))));
  
              --  An explicit dereference denotes an object, except that a
              --  conditional expression gets turned into an explicit dereference
*************** package body Sem_Util is
*** 16401,16415 ****
              --  names.
  
              when N_Explicit_Dereference =>
!                return not Nkind_In (Original_Node (N), N_Case_Expression,
!                                                        N_If_Expression);
  
              --  A view conversion of a tagged object is an object reference
  
              when N_Type_Conversion =>
!                return Is_Tagged_Type (Etype (Subtype_Mark (N)))
!                  and then Is_Tagged_Type (Etype (Expression (N)))
!                  and then Is_Object_Reference (Expression (N));
  
              --  An unchecked type conversion is considered to be an object if
              --  the operand is an object (this construction arises only as a
--- 18395,18419 ----
              --  names.
  
              when N_Explicit_Dereference =>
!                return Nkind (Original_Node (N)) not in
!                         N_Case_Expression | N_If_Expression;
  
              --  A view conversion of a tagged object is an object reference
  
              when N_Type_Conversion =>
!                if Ada_Version <= Ada_2012 then
!                   --  A view conversion of a tagged object is an object
!                   --  reference.
!                   return Is_Tagged_Type (Etype (Subtype_Mark (N)))
!                     and then Is_Tagged_Type (Etype (Expression (N)))
!                     and then Is_Object_Reference (Expression (N));
! 
!                else
!                   --  AI12-0226: In Ada 202x a value conversion of an object is
!                   --  an object.
! 
!                   return Is_Object_Reference (Expression (N));
!                end if;
  
              --  An unchecked type conversion is considered to be an object if
              --  the operand is an object (this construction arises only as a
*************** package body Sem_Util is
*** 16418,16442 ****
              when N_Unchecked_Type_Conversion =>
                 return True;
  
-             --  Allow string literals to act as objects as long as they appear
-             --  in internally-generated renamings. The expansion of iterators
-             --  may generate such renamings when the range involves a string
-             --  literal.
- 
-             when N_String_Literal =>
-                return Is_Internally_Generated_Renaming (Parent (N));
- 
              --  AI05-0003: In Ada 2012 a qualified expression is a name.
              --  This allows disambiguation of function calls and the use
              --  of aggregates in more contexts.
  
              when N_Qualified_Expression =>
!                if Ada_Version <  Ada_2012 then
!                   return False;
!                else
!                   return Is_Object_Reference (Expression (N))
!                     or else Nkind (Expression (N)) = N_Aggregate;
!                end if;
  
              when others =>
                 return False;
--- 18422,18455 ----
              when N_Unchecked_Type_Conversion =>
                 return True;
  
              --  AI05-0003: In Ada 2012 a qualified expression is a name.
              --  This allows disambiguation of function calls and the use
              --  of aggregates in more contexts.
  
              when N_Qualified_Expression =>
!                return Ada_Version >= Ada_2012
!                  and then Is_Object_Reference (Expression (N));
! 
!             --  In Ada 95 an aggregate is an object reference
! 
!             when N_Aggregate
!                | N_Delta_Aggregate
!                | N_Extension_Aggregate
!             =>
!                return Ada_Version >= Ada_95;
! 
!             --  A string literal is not an object reference, but it might come
!             --  from rewriting of an object reference, e.g. from folding of an
!             --  aggregate.
! 
!             when N_String_Literal =>
!                return Is_Rewrite_Substitution (N)
!                  and then Is_Object_Reference (Original_Node (N));
! 
!             --  AI12-0125: Target name represents a constant object
! 
!             when N_Target_Name =>
!                return True;
  
              when others =>
                 return False;
*************** package body Sem_Util is
*** 16470,16479 ****
        --  check whether the context requires an access_to_variable type.
  
        elsif Nkind (AV) = N_Explicit_Dereference
-         and then Ada_Version >= Ada_2012
-         and then Nkind (Original_Node (AV)) = N_Indexed_Component
          and then Present (Etype (Original_Node (AV)))
          and then Has_Implicit_Dereference (Etype (Original_Node (AV)))
        then
           return not Is_Access_Constant (Etype (Prefix (AV)));
  
--- 18483,18491 ----
        --  check whether the context requires an access_to_variable type.
  
        elsif Nkind (AV) = N_Explicit_Dereference
          and then Present (Etype (Original_Node (AV)))
          and then Has_Implicit_Dereference (Etype (Original_Node (AV)))
+         and then Ada_Version >= Ada_2012
        then
           return not Is_Access_Constant (Etype (Prefix (AV)));
  
*************** package body Sem_Util is
*** 16486,16492 ****
        --  expansion of a packed array aggregate).
  
        elsif Nkind (AV) = N_Unchecked_Type_Conversion then
!          if Nkind_In (Original_Node (AV), N_Function_Call, N_Aggregate) then
              return False;
  
           elsif Comes_From_Source (AV)
--- 18498,18504 ----
        --  expansion of a packed array aggregate).
  
        elsif Nkind (AV) = N_Unchecked_Type_Conversion then
!          if Nkind (Original_Node (AV)) in N_Function_Call | N_Aggregate then
              return False;
  
           elsif Comes_From_Source (AV)
*************** package body Sem_Util is
*** 16531,16558 ****
        --  but we still want to allow the conversion if it converts a variable).
  
        elsif Is_Rewrite_Substitution (AV) then
! 
!          --  In Ada 2012, the explicit dereference may be a rewritten call to a
!          --  Reference function.
! 
!          if Ada_Version >= Ada_2012
!            and then Nkind (Original_Node (AV)) = N_Function_Call
!            and then
!              Has_Implicit_Dereference (Etype (Name (Original_Node (AV))))
!          then
! 
!             --  Check that this is not a constant reference.
! 
!             return not Is_Access_Constant (Etype (Prefix (AV)));
! 
!          elsif Has_Implicit_Dereference (Etype (Original_Node (AV))) then
!             return
!               not Is_Access_Constant (Etype
!                 (Get_Reference_Discriminant (Etype (Original_Node (AV)))));
! 
!          else
!             return Is_OK_Variable_For_Out_Formal (Original_Node (AV));
!          end if;
  
        --  All other non-variables are rejected
  
--- 18543,18549 ----
        --  but we still want to allow the conversion if it converts a variable).
  
        elsif Is_Rewrite_Substitution (AV) then
!          return Is_OK_Variable_For_Out_Formal (Original_Node (AV));
  
        --  All other non-variables are rejected
  
*************** package body Sem_Util is
*** 16603,16612 ****
                  and then Is_Protected_Type (Etype (Pref))
                  and then Is_Entity_Name (Subp)
                  and then Present (Entity (Subp))
!                 and then Ekind_In (Entity (Subp), E_Entry,
!                                                   E_Entry_Family,
!                                                   E_Function,
!                                                   E_Procedure);
           else
              return False;
           end if;
--- 18594,18601 ----
                  and then Is_Protected_Type (Etype (Pref))
                  and then Is_Entity_Name (Subp)
                  and then Present (Entity (Subp))
!                 and then Ekind (Entity (Subp)) in
!                            E_Entry | E_Entry_Family | E_Function | E_Procedure;
           else
              return False;
           end if;
*************** package body Sem_Util is
*** 16651,16657 ****
  
           Func_Id := Id;
           while Present (Func_Id) and then Func_Id /= Standard_Standard loop
!             if Ekind_In (Func_Id, E_Function, E_Generic_Function) then
                 return Is_Volatile_Function (Func_Id);
              end if;
  
--- 18640,18646 ----
  
           Func_Id := Id;
           while Present (Func_Id) and then Func_Id /= Standard_Standard loop
!             if Ekind (Func_Id) in E_Function | E_Generic_Function then
                 return Is_Volatile_Function (Func_Id);
              end if;
  
*************** package body Sem_Util is
*** 16679,16684 ****
--- 18668,18674 ----
        elsif Nkind (Context) = N_Object_Declaration
          and then Present (Expression (Context))
          and then Expression (Context) = Obj_Ref
+         and then Nkind (Parent (Context)) /= N_Expression_With_Actions
        then
           Obj_Id := Defining_Entity (Context);
  
*************** package body Sem_Util is
*** 16730,16740 ****
        --  The volatile object appears as the prefix of a name occurring in a
        --  non-interfering context.
  
!       elsif Nkind_In (Context, N_Attribute_Reference,
!                       N_Explicit_Dereference,
!                       N_Indexed_Component,
!                       N_Selected_Component,
!                       N_Slice)
          and then Prefix (Context) = Obj_Ref
          and then Is_OK_Volatile_Context
                     (Context => Parent (Context),
--- 18720,18731 ----
        --  The volatile object appears as the prefix of a name occurring in a
        --  non-interfering context.
  
!       elsif Nkind (Context) in
!               N_Attribute_Reference  |
!               N_Explicit_Dereference |
!               N_Indexed_Component    |
!               N_Selected_Component   |
!               N_Slice
          and then Prefix (Context) = Obj_Ref
          and then Is_OK_Volatile_Context
                     (Context => Parent (Context),
*************** package body Sem_Util is
*** 16748,16772 ****
  
        elsif Nkind (Context) = N_Attribute_Reference
          and then Prefix (Context) = Obj_Ref
!         and then Nam_In (Attribute_Name (Context), Name_Address,
!                                                    Name_Alignment,
!                                                    Name_Component_Size,
!                                                    Name_First,
!                                                    Name_First_Bit,
!                                                    Name_Last,
!                                                    Name_Last_Bit,
!                                                    Name_Length,
!                                                    Name_Position,
!                                                    Name_Size,
!                                                    Name_Storage_Size)
        then
           return True;
  
        --  The volatile object appears as the expression of a type conversion
        --  occurring in a non-interfering context.
  
!       elsif Nkind_In (Context, N_Type_Conversion,
!                                N_Unchecked_Type_Conversion)
          and then Expression (Context) = Obj_Ref
          and then Is_OK_Volatile_Context
                     (Context => Parent (Context),
--- 18739,18764 ----
  
        elsif Nkind (Context) = N_Attribute_Reference
          and then Prefix (Context) = Obj_Ref
!         and then Attribute_Name (Context) in Name_Address
!                                            | Name_Alignment
!                                            | Name_Component_Size
!                                            | Name_First
!                                            | Name_First_Bit
!                                            | Name_Last
!                                            | Name_Last_Bit
!                                            | Name_Length
!                                            | Name_Position
!                                            | Name_Size
!                                            | Name_Storage_Size
        then
           return True;
  
        --  The volatile object appears as the expression of a type conversion
        --  occurring in a non-interfering context.
  
!       elsif Nkind (Context) in N_Qualified_Expression
!                              | N_Type_Conversion
!                              | N_Unchecked_Type_Conversion
          and then Expression (Context) = Obj_Ref
          and then Is_OK_Volatile_Context
                     (Context => Parent (Context),
*************** package body Sem_Util is
*** 16832,16838 ****
     is
     begin
        if Is_Scalar_Type (Typ) then
!          return False;
  
        elsif Is_Access_Type (Typ) then
           return Include_Implicit;
--- 18824,18830 ----
     is
     begin
        if Is_Scalar_Type (Typ) then
!          return Has_Default_Aspect (Base_Type (Typ));
  
        elsif Is_Access_Type (Typ) then
           return Include_Implicit;
*************** package body Sem_Util is
*** 16841,16848 ****
  
           --  If component type is partially initialized, so is array type
  
!          if Is_Partially_Initialized_Type
!               (Component_Type (Typ), Include_Implicit)
           then
              return True;
  
--- 18833,18841 ----
  
           --  If component type is partially initialized, so is array type
  
!          if Has_Default_Aspect (Base_Type (Typ))
!            or else Is_Partially_Initialized_Type
!                      (Component_Type (Typ), Include_Implicit)
           then
              return True;
  
*************** package body Sem_Util is
*** 16871,16877 ****
  
           else
              declare
!                Ent : Entity_Id;
  
                 Component_Present : Boolean := False;
                 --  Set True if at least one component is present. If no
--- 18864,18870 ----
  
           else
              declare
!                Comp : Entity_Id;
  
                 Component_Present : Boolean := False;
                 --  Set True if at least one component is present. If no
*************** package body Sem_Util is
*** 16881,16910 ****
              begin
                 --  Loop through components
  
!                Ent := First_Entity (Typ);
!                while Present (Ent) loop
!                   if Ekind (Ent) = E_Component then
!                      Component_Present := True;
  
!                      --  If a component has an initialization expression then
!                      --  the enclosing record type is partially initialized
  
!                      if Present (Parent (Ent))
!                        and then Present (Expression (Parent (Ent)))
!                      then
!                         return True;
  
!                      --  If a component is of a type which is itself partially
!                      --  initialized, then the enclosing record type is also.
  
!                      elsif Is_Partially_Initialized_Type
!                              (Etype (Ent), Include_Implicit)
!                      then
!                         return True;
!                      end if;
                    end if;
  
!                   Next_Entity (Ent);
                 end loop;
  
                 --  No initialized components found. If we found any components
--- 18874,18901 ----
              begin
                 --  Loop through components
  
!                Comp := First_Component (Typ);
!                while Present (Comp) loop
!                   Component_Present := True;
  
!                   --  If a component has an initialization expression then the
!                   --  enclosing record type is partially initialized
  
!                   if Present (Parent (Comp))
!                     and then Present (Expression (Parent (Comp)))
!                   then
!                      return True;
  
!                   --  If a component is of a type which is itself partially
!                   --  initialized, then the enclosing record type is also.
  
!                   elsif Is_Partially_Initialized_Type
!                           (Etype (Comp), Include_Implicit)
!                   then
!                      return True;
                    end if;
  
!                   Next_Component (Comp);
                 end loop;
  
                 --  No initialized components found. If we found any components
*************** package body Sem_Util is
*** 17018,17026 ****
--- 19009,19204 ----
     --------------------------------
  
     function Is_Potentially_Unevaluated (N : Node_Id) return Boolean is
+       function Has_Null_Others_Choice (Aggr : Node_Id) return Boolean;
+       --  Aggr is an array aggregate with static bounds and an others clause;
+       --  return True if the others choice of the given array aggregate does
+       --  not cover any component (i.e. is null).
+ 
+       function Immediate_Context_Implies_Is_Potentially_Unevaluated
+         (Expr : Node_Id) return Boolean;
+       --  Return True if the *immediate* context of this expression tells us
+       --  that it is potentially unevaluated; return False if the *immediate*
+       --  context doesn't provide an answer to this question and we need to
+       --  keep looking.
+ 
+       function Non_Static_Or_Null_Range (N : Node_Id) return Boolean;
+       --  Return True if the given range is nonstatic or null
+ 
+       ----------------------------
+       -- Has_Null_Others_Choice --
+       ----------------------------
+ 
+       function Has_Null_Others_Choice (Aggr : Node_Id) return Boolean is
+          Idx : constant Node_Id := First_Index (Etype (Aggr));
+          Hiv : constant Uint := Expr_Value (Type_High_Bound (Etype (Idx)));
+          Lov : constant Uint := Expr_Value (Type_Low_Bound (Etype (Idx)));
+ 
+       begin
+          declare
+             Intervals : constant Interval_Lists.Discrete_Interval_List :=
+               Interval_Lists.Aggregate_Intervals (Aggr);
+ 
+          begin
+             --  The others choice is null if, after normalization, we
+             --  have a single interval covering the whole aggregate.
+ 
+             return Intervals'Length = 1
+               and then
+                 Intervals (Intervals'First).Low = Lov
+               and then
+                 Intervals (Intervals'First).High = Hiv;
+          end;
+ 
+       --  If the aggregate is malformed (that is, indexes are not disjoint)
+       --  then no action is needed at this stage; the error will be reported
+       --  later by the frontend.
+ 
+       exception
+          when Interval_Lists.Intervals_Error =>
+             return False;
+       end Has_Null_Others_Choice;
+ 
+       ----------------------------------------------------------
+       -- Immediate_Context_Implies_Is_Potentially_Unevaluated --
+       ----------------------------------------------------------
+ 
+       function Immediate_Context_Implies_Is_Potentially_Unevaluated
+         (Expr : Node_Id) return Boolean
+       is
+          Par : constant Node_Id := Parent (Expr);
+ 
+          function Aggregate_Type return Node_Id is (Etype (Parent (Par)));
+       begin
+          if Nkind (Par) = N_If_Expression then
+             return Is_Elsif (Par) or else Expr /= First (Expressions (Par));
+ 
+          elsif Nkind (Par) = N_Case_Expression then
+             return Expr /= Expression (Par);
+ 
+          elsif Nkind (Par) in N_And_Then | N_Or_Else then
+             return Expr = Right_Opnd (Par);
+ 
+          elsif Nkind (Par) in N_In | N_Not_In then
+ 
+             --  If the membership includes several alternatives, only the first
+             --  is definitely evaluated.
+ 
+             if Present (Alternatives (Par)) then
+                return Expr /= First (Alternatives (Par));
+ 
+             --  If this is a range membership both bounds are evaluated
+ 
+             else
+                return False;
+             end if;
+ 
+          elsif Nkind (Par) = N_Quantified_Expression then
+             return Expr = Condition (Par);
+ 
+          elsif Nkind (Par) = N_Component_Association
+            and then Expr = Expression (Par)
+            and then Nkind (Parent (Par))
+               in N_Aggregate | N_Delta_Aggregate | N_Extension_Aggregate
+            and then Present (Aggregate_Type)
+            and then Aggregate_Type /= Any_Composite
+          then
+             if Is_Array_Type (Aggregate_Type) then
+                if Ada_Version >= Ada_2020 then
+                   --  For Ada_2020, this predicate returns True for
+                   --  any "repeatedly evaluated" expression.
+                   return True;
+                end if;
+ 
+                declare
+                   Choice           : Node_Id;
+                   In_Others_Choice : Boolean := False;
+                   Array_Agg        : constant Node_Id := Parent (Par);
+                begin
+                   --  The expression of an array_component_association is
+                   --  potentially unevaluated if the associated choice is a
+                   --  subtype_indication or range that defines a nonstatic or
+                   --  null range.
+ 
+                   Choice := First (Choices (Par));
+                   while Present (Choice) loop
+                      if Nkind (Choice) = N_Range
+                        and then Non_Static_Or_Null_Range (Choice)
+                      then
+                         return True;
+ 
+                      elsif Nkind (Choice) = N_Identifier
+                        and then Present (Scalar_Range (Etype (Choice)))
+                        and then
+                          Non_Static_Or_Null_Range
+                            (Scalar_Range (Etype (Choice)))
+                      then
+                         return True;
+ 
+                      elsif Nkind (Choice) = N_Others_Choice then
+                         In_Others_Choice := True;
+                      end if;
+ 
+                      Next (Choice);
+                   end loop;
+ 
+                   --  It is also potentially unevaluated if the associated
+                   --  choice is an others choice and the applicable index
+                   --  constraint is nonstatic or null.
+ 
+                   if In_Others_Choice then
+                      if not Compile_Time_Known_Bounds (Aggregate_Type) then
+                         return True;
+                      else
+                         return Has_Null_Others_Choice (Array_Agg);
+                      end if;
+                   end if;
+                end;
+ 
+             elsif Is_Container_Aggregate (Parent (Par)) then
+                --  a component of a container aggregate
+                return True;
+             end if;
+ 
+             return False;
+ 
+          else
+             return False;
+          end if;
+       end Immediate_Context_Implies_Is_Potentially_Unevaluated;
+ 
+       ------------------------------
+       -- Non_Static_Or_Null_Range --
+       ------------------------------
+ 
+       function Non_Static_Or_Null_Range (N : Node_Id) return Boolean is
+          Low, High : Node_Id;
+ 
+       begin
+          Get_Index_Bounds (N, Low, High);
+ 
+          --  Check static bounds
+ 
+          if not Compile_Time_Known_Value (Low)
+            or else not Compile_Time_Known_Value (High)
+          then
+             return True;
+ 
+          --  Check null range
+ 
+          elsif Expr_Value (High) < Expr_Value (Low) then
+             return True;
+          end if;
+ 
+          return False;
+       end Non_Static_Or_Null_Range;
+ 
+       --  Local variables
+ 
        Par  : Node_Id;
        Expr : Node_Id;
  
+    --  Start of processing for Is_Potentially_Unevaluated
+ 
     begin
        Expr := N;
        Par  := N;
*************** package body Sem_Util is
*** 17049,17070 ****
        --  conjunct in a postcondition) with a potentially unevaluated operand.
  
        Par := Parent (Expr);
!       while not Nkind_In (Par, N_And_Then,
!                                N_Case_Expression,
!                                N_If_Expression,
!                                N_In,
!                                N_Not_In,
!                                N_Or_Else,
!                                N_Quantified_Expression)
        loop
!          Expr := Par;
!          Par  := Parent (Par);
  
           --  If the context is not an expression, or if is the result of
           --  expansion of an enclosing construct (such as another attribute)
           --  the predicate does not apply.
  
!          if Nkind (Par) = N_Case_Expression_Alternative then
              null;
  
           elsif Nkind (Par) not in N_Subexpr
--- 19227,19253 ----
        --  conjunct in a postcondition) with a potentially unevaluated operand.
  
        Par := Parent (Expr);
! 
!       while Present (Par)
!         and then Nkind (Par) /= N_Pragma_Argument_Association
        loop
!          if Comes_From_Source (Par)
!            and then
!              Immediate_Context_Implies_Is_Potentially_Unevaluated (Expr)
!          then
!             return True;
! 
!          --  For component associations continue climbing; it may be part of
!          --  an array aggregate.
! 
!          elsif Nkind (Par) = N_Component_Association then
!             null;
  
           --  If the context is not an expression, or if is the result of
           --  expansion of an enclosing construct (such as another attribute)
           --  the predicate does not apply.
  
!          elsif Nkind (Par) = N_Case_Expression_Alternative then
              null;
  
           elsif Nkind (Par) not in N_Subexpr
*************** package body Sem_Util is
*** 17072,17108 ****
           then
              return False;
           end if;
-       end loop;
- 
-       if Nkind (Par) = N_If_Expression then
-          return Is_Elsif (Par) or else Expr /= First (Expressions (Par));
- 
-       elsif Nkind (Par) = N_Case_Expression then
-          return Expr /= Expression (Par);
- 
-       elsif Nkind_In (Par, N_And_Then, N_Or_Else) then
-          return Expr = Right_Opnd (Par);
- 
-       elsif Nkind_In (Par, N_In, N_Not_In) then
- 
-          --  If the membership includes several alternatives, only the first is
-          --  definitely evaluated.
- 
-          if Present (Alternatives (Par)) then
-             return Expr /= First (Alternatives (Par));
- 
-          --  If this is a range membership both bounds are evaluated
- 
-          else
-             return False;
-          end if;
  
!       elsif Nkind (Par) = N_Quantified_Expression then
!          return Expr = Condition (Par);
  
!       else
!          return False;
!       end if;
     end Is_Potentially_Unevaluated;
  
     -----------------------------------------
--- 19255,19266 ----
           then
              return False;
           end if;
  
!          Expr := Par;
!          Par  := Parent (Par);
!       end loop;
  
!       return False;
     end Is_Potentially_Unevaluated;
  
     -----------------------------------------
*************** package body Sem_Util is
*** 17130,17136 ****
             TSS_Name_Type
               (Name_Buffer (Name_Len - TSS_Name'Length + 1 .. Name_Len));
  
!          if Nam_In (Chars (E), Name_uAssign, Name_uSize)
             or else
               (Chars (E) = Name_Op_Eq
                 and then Etype (First_Formal (E)) = Etype (Last_Formal (E)))
--- 19288,19294 ----
             TSS_Name_Type
               (Name_Buffer (Name_Len - TSS_Name'Length + 1 .. Name_Len));
  
!          if Chars (E) in Name_uAssign | Name_uSize
             or else
               (Chars (E) = Name_Op_Eq
                 and then Etype (First_Formal (E)) = Etype (Last_Formal (E)))
*************** package body Sem_Util is
*** 17140,17145 ****
--- 19298,19304 ----
             or else TSS_Name = TSS_Stream_Output
             or else TSS_Name = TSS_Stream_Read
             or else TSS_Name = TSS_Stream_Write
+            or else TSS_Name = TSS_Put_Image
             or else Is_Predefined_Interface_Primitive (E)
           then
              return True;
*************** package body Sem_Util is
*** 17160,17171 ****
        --  these primitives.
  
        return (Ada_Version >= Ada_2005 or else not Tagged_Type_Expansion)
!         and then Nam_In (Chars (E), Name_uDisp_Asynchronous_Select,
!                                     Name_uDisp_Conditional_Select,
!                                     Name_uDisp_Get_Prim_Op_Kind,
!                                     Name_uDisp_Get_Task_Id,
!                                     Name_uDisp_Requeue,
!                                     Name_uDisp_Timed_Select);
     end Is_Predefined_Interface_Primitive;
  
     ---------------------------------------
--- 19319,19330 ----
        --  these primitives.
  
        return (Ada_Version >= Ada_2005 or else not Tagged_Type_Expansion)
!         and then Chars (E) in Name_uDisp_Asynchronous_Select
!                             | Name_uDisp_Conditional_Select
!                             | Name_uDisp_Get_Prim_Op_Kind
!                             | Name_uDisp_Get_Task_Id
!                             | Name_uDisp_Requeue
!                             | Name_uDisp_Timed_Select;
     end Is_Predefined_Interface_Primitive;
  
     ---------------------------------------
*************** package body Sem_Util is
*** 17193,17199 ****
             TSS_Name_Type
               (Name_Buffer (Name_Len - TSS_Name'Length + 1 .. Name_Len));
  
!          if Nam_In (Chars (E), Name_uSize, Name_uAssign)
             or else
               (Chars (E) = Name_Op_Eq
                 and then Etype (First_Formal (E)) = Etype (Last_Formal (E)))
--- 19352,19358 ----
             TSS_Name_Type
               (Name_Buffer (Name_Len - TSS_Name'Length + 1 .. Name_Len));
  
!          if Chars (E) in Name_uSize | Name_uAssign
             or else
               (Chars (E) = Name_Op_Eq
                 and then Etype (First_Formal (E)) = Etype (Last_Formal (E)))
*************** package body Sem_Util is
*** 17323,17329 ****
     begin
        --  Aggregates
  
!       if Nkind_In (N, N_Aggregate, N_Extension_Aggregate) then
           return Is_Preelaborable_Aggregate (N);
  
        --  Attributes are allowed in general, even if their prefix is a formal
--- 19482,19488 ----
     begin
        --  Aggregates
  
!       if Nkind (N) in N_Aggregate | N_Extension_Aggregate then
           return Is_Preelaborable_Aggregate (N);
  
        --  Attributes are allowed in general, even if their prefix is a formal
*************** package body Sem_Util is
*** 17348,17354 ****
          and then Present (Entity (N))
          and then
            (Ekind (Entity (N)) = E_Discriminant
!             or else (Ekind_In (Entity (N), E_Constant, E_In_Parameter)
                        and then Present (Discriminal_Link (Entity (N)))))
        then
           return True;
--- 19507,19513 ----
          and then Present (Entity (N))
          and then
            (Ekind (Entity (N)) = E_Discriminant
!             or else (Ekind (Entity (N)) in E_Constant | E_In_Parameter
                        and then Present (Discriminal_Link (Entity (N)))))
        then
           return True;
*************** package body Sem_Util is
*** 17358,17363 ****
--- 19517,19546 ----
        elsif Nkind (N) = N_Null then
           return True;
  
+       --  Ada 2020 (AI12-0175): Calls to certain functions that are essentially
+       --  unchecked conversions are preelaborable.
+ 
+       elsif Ada_Version >= Ada_2020
+         and then Nkind (N) = N_Function_Call
+         and then Is_Entity_Name (Name (N))
+         and then Is_Preelaborable_Function (Entity (Name (N)))
+       then
+          declare
+             A : Node_Id;
+          begin
+             A := First_Actual (N);
+ 
+             while Present (A) loop
+                if not Is_Preelaborable_Construct (A) then
+                   return False;
+                end if;
+ 
+                Next_Actual (A);
+             end loop;
+          end;
+ 
+          return True;
+ 
        --  Otherwise the construct is not preelaborable
  
        else
*************** package body Sem_Util is
*** 17365,17370 ****
--- 19548,19597 ----
        end if;
     end Is_Preelaborable_Construct;
  
+    -------------------------------
+    -- Is_Preelaborable_Function --
+    -------------------------------
+ 
+    function Is_Preelaborable_Function (Id : Entity_Id) return Boolean is
+       SATAC : constant Rtsfind.RTU_Id := System_Address_To_Access_Conversions;
+       Scop  : constant Entity_Id := Scope (Id);
+ 
+    begin
+       --  Small optimization: every allowed function has convention Intrinsic
+       --  (see Analyze_Subprogram_Instantiation for the subtlety in the test).
+ 
+       if not Is_Intrinsic_Subprogram (Id)
+         and then Convention (Id) /= Convention_Intrinsic
+       then
+          return False;
+       end if;
+ 
+       --  An instance of Unchecked_Conversion
+ 
+       if Is_Unchecked_Conversion_Instance (Id) then
+          return True;
+       end if;
+ 
+       --  A function declared in System.Storage_Elements
+ 
+       if Is_RTU (Scop, System_Storage_Elements) then
+          return True;
+       end if;
+ 
+       --  The functions To_Pointer and To_Address declared in an instance of
+       --  System.Address_To_Access_Conversions (they are the only ones).
+ 
+       if Ekind (Scop) = E_Package
+         and then Nkind (Parent (Scop)) = N_Package_Specification
+         and then Present (Generic_Parent (Parent (Scop)))
+         and then Is_RTU (Generic_Parent (Parent (Scop)), SATAC)
+       then
+          return True;
+       end if;
+ 
+       return False;
+    end Is_Preelaborable_Function;
+ 
     ---------------------------------
     -- Is_Protected_Self_Reference --
     ---------------------------------
*************** package body Sem_Util is
*** 17568,17595 ****
        return False;
     end Is_Renamed_Entry;
  
-    -----------------------------
-    -- Is_Renaming_Declaration --
-    -----------------------------
- 
-    function Is_Renaming_Declaration (N : Node_Id) return Boolean is
-    begin
-       case Nkind (N) is
-          when N_Exception_Renaming_Declaration
-             | N_Generic_Function_Renaming_Declaration
-             | N_Generic_Package_Renaming_Declaration
-             | N_Generic_Procedure_Renaming_Declaration
-             | N_Object_Renaming_Declaration
-             | N_Package_Renaming_Declaration
-             | N_Subprogram_Renaming_Declaration
-           =>
-             return True;
- 
-          when others =>
-             return False;
-       end case;
-    end Is_Renaming_Declaration;
- 
     ----------------------------
     -- Is_Reversible_Iterator --
     ----------------------------
--- 19795,19800 ----
*************** package body Sem_Util is
*** 17636,17647 ****
     begin
        if not Is_List_Member (N) then
           declare
!             P : constant Node_Id   := Parent (N);
           begin
!             return Nkind_In (P, N_Expanded_Name,
!                                 N_Generic_Association,
!                                 N_Parameter_Association,
!                                 N_Selected_Component)
                and then Selector_Name (P) = N;
           end;
  
--- 19841,19852 ----
     begin
        if not Is_List_Member (N) then
           declare
!             P : constant Node_Id := Parent (N);
           begin
!             return Nkind (P) in N_Expanded_Name
!                               | N_Generic_Association
!                               | N_Parameter_Association
!                               | N_Selected_Component
                and then Selector_Name (P) = N;
           end;
  
*************** package body Sem_Util is
*** 17676,17682 ****
     function Is_Single_Concurrent_Type (Id : Entity_Id) return Boolean is
     begin
        return
!         Ekind_In (Id, E_Protected_Type, E_Task_Type)
            and then Is_Single_Concurrent_Type_Declaration
                       (Declaration_Node (Id));
     end Is_Single_Concurrent_Type;
--- 19881,19887 ----
     function Is_Single_Concurrent_Type (Id : Entity_Id) return Boolean is
     begin
        return
!         Ekind (Id) in E_Protected_Type | E_Task_Type
            and then Is_Single_Concurrent_Type_Declaration
                       (Declaration_Node (Id));
     end Is_Single_Concurrent_Type;
*************** package body Sem_Util is
*** 17689,17696 ****
       (N : Node_Id) return Boolean
     is
     begin
!       return Nkind_In (Original_Node (N), N_Single_Protected_Declaration,
!                                           N_Single_Task_Declaration);
     end Is_Single_Concurrent_Type_Declaration;
  
     ---------------------------------------------
--- 19894,19901 ----
       (N : Node_Id) return Boolean
     is
     begin
!       return Nkind (Original_Node (N)) in
!                N_Single_Protected_Declaration | N_Single_Task_Declaration;
     end Is_Single_Concurrent_Type_Declaration;
  
     ---------------------------------------------
*************** package body Sem_Util is
*** 17731,17887 ****
            and then Is_Single_Concurrent_Type (Etype (Id));
     end Is_Single_Task_Object;
  
!    -------------------------------------
!    -- Is_SPARK_05_Initialization_Expr --
!    -------------------------------------
! 
!    function Is_SPARK_05_Initialization_Expr (N : Node_Id) return Boolean is
!       Is_Ok     : Boolean;
!       Expr      : Node_Id;
!       Comp_Assn : Node_Id;
!       Orig_N    : constant Node_Id := Original_Node (N);
  
     begin
!       Is_Ok := True;
  
!       if not Comes_From_Source (Orig_N) then
!          goto Done;
        end if;
  
!       pragma Assert (Nkind (Orig_N) in N_Subexpr);
! 
!       case Nkind (Orig_N) is
!          when N_Character_Literal
!             | N_Integer_Literal
!             | N_Real_Literal
!             | N_String_Literal
!          =>
!             null;
! 
!          when N_Expanded_Name
!             | N_Identifier
!          =>
!             if Is_Entity_Name (Orig_N)
!               and then Present (Entity (Orig_N))  --  needed in some cases
!             then
!                case Ekind (Entity (Orig_N)) is
!                   when E_Constant
!                      | E_Enumeration_Literal
!                      | E_Named_Integer
!                      | E_Named_Real
!                   =>
!                      null;
! 
!                   when others =>
!                      if Is_Type (Entity (Orig_N)) then
!                         null;
!                      else
!                         Is_Ok := False;
!                      end if;
!                end case;
!             end if;
! 
!          when N_Qualified_Expression
!             | N_Type_Conversion
!          =>
!             Is_Ok := Is_SPARK_05_Initialization_Expr (Expression (Orig_N));
! 
!          when N_Unary_Op =>
!             Is_Ok := Is_SPARK_05_Initialization_Expr (Right_Opnd (Orig_N));
! 
!          when N_Binary_Op
!             | N_Membership_Test
!             | N_Short_Circuit
!          =>
!             Is_Ok := Is_SPARK_05_Initialization_Expr (Left_Opnd (Orig_N))
!                        and then
!                          Is_SPARK_05_Initialization_Expr (Right_Opnd (Orig_N));
! 
!          when N_Aggregate
!             | N_Extension_Aggregate
!          =>
!             if Nkind (Orig_N) = N_Extension_Aggregate then
!                Is_Ok :=
!                  Is_SPARK_05_Initialization_Expr (Ancestor_Part (Orig_N));
!             end if;
! 
!             Expr := First (Expressions (Orig_N));
!             while Present (Expr) loop
!                if not Is_SPARK_05_Initialization_Expr (Expr) then
!                   Is_Ok := False;
!                   goto Done;
!                end if;
! 
!                Next (Expr);
!             end loop;
! 
!             Comp_Assn := First (Component_Associations (Orig_N));
!             while Present (Comp_Assn) loop
!                Expr := Expression (Comp_Assn);
! 
!                --  Note: test for Present here needed for box assocation
! 
!                if Present (Expr)
!                  and then not Is_SPARK_05_Initialization_Expr (Expr)
!                then
!                   Is_Ok := False;
!                   goto Done;
!                end if;
! 
!                Next (Comp_Assn);
!             end loop;
! 
!          when N_Attribute_Reference =>
!             if Nkind (Prefix (Orig_N)) in N_Subexpr then
!                Is_Ok := Is_SPARK_05_Initialization_Expr (Prefix (Orig_N));
!             end if;
! 
!             Expr := First (Expressions (Orig_N));
!             while Present (Expr) loop
!                if not Is_SPARK_05_Initialization_Expr (Expr) then
!                   Is_Ok := False;
!                   goto Done;
!                end if;
! 
!                Next (Expr);
!             end loop;
! 
!          --  Selected components might be expanded named not yet resolved, so
!          --  default on the safe side. (Eg on sparklex.ads)
! 
!          when N_Selected_Component =>
!             null;
! 
!          when others =>
!             Is_Ok := False;
!       end case;
! 
!    <<Done>>
!       return Is_Ok;
!    end Is_SPARK_05_Initialization_Expr;
! 
!    ----------------------------------
!    -- Is_SPARK_05_Object_Reference --
!    ----------------------------------
! 
!    function Is_SPARK_05_Object_Reference (N : Node_Id) return Boolean is
!    begin
!       if Is_Entity_Name (N) then
!          return Present (Entity (N))
!            and then
!              (Ekind_In (Entity (N), E_Constant, E_Variable)
!                or else Ekind (Entity (N)) in Formal_Kind);
! 
!       else
!          case Nkind (N) is
!             when N_Selected_Component =>
!                return Is_SPARK_05_Object_Reference (Prefix (N));
  
!             when others =>
!                return False;
!          end case;
!       end if;
!    end Is_SPARK_05_Object_Reference;
  
     -----------------------------
     -- Is_Specific_Tagged_Type --
--- 19936,19972 ----
            and then Is_Single_Concurrent_Type (Etype (Id));
     end Is_Single_Task_Object;
  
!    --------------------------------------
!    -- Is_Special_Aliased_Formal_Access --
!    --------------------------------------
  
+    function Is_Special_Aliased_Formal_Access
+      (Exp               : Node_Id;
+       In_Return_Context : Boolean := False) return Boolean
+    is
+       Scop : constant Entity_Id := Current_Subprogram;
     begin
!       --  Verify the expression is an access reference to 'Access within a
!       --  return statement as this is the only time an explicitly aliased
!       --  formal has different semantics.
  
!       if Nkind (Exp) /= N_Attribute_Reference
!         or else Get_Attribute_Id (Attribute_Name (Exp)) /= Attribute_Access
!         or else not (In_Return_Value (Exp)
!                       or else In_Return_Context)
!         or else not Needs_Result_Accessibility_Level (Scop)
!       then
!          return False;
        end if;
  
!       --  Check if the prefix of the reference is indeed an explicitly aliased
!       --  formal parameter for the function Scop. Additionally, we must check
!       --  that Scop returns an anonymous access type, otherwise the special
!       --  rules dictating a need for a dynamic check are not in effect.
  
!       return Is_Entity_Name (Prefix (Exp))
!                and then Is_Explicitly_Aliased (Entity (Prefix (Exp)));
!    end Is_Special_Aliased_Formal_Access;
  
     -----------------------------
     -- Is_Specific_Tagged_Type --
*************** package body Sem_Util is
*** 17915,17950 ****
            or else Nkind (N) = N_Procedure_Call_Statement;
     end Is_Statement;
  
!    ----------------------------------------
!    --  Is_Subcomponent_Of_Atomic_Object  --
!    ----------------------------------------
  
!    function Is_Subcomponent_Of_Atomic_Object (N : Node_Id) return Boolean is
        R : Node_Id;
  
     begin
        R := Get_Referenced_Object (N);
  
!       while Nkind_In (R, N_Indexed_Component, N_Selected_Component, N_Slice)
        loop
           R := Get_Referenced_Object (Prefix (R));
  
           --  If the prefix is an access value, only the designated type matters
  
           if Is_Access_Type (Etype (R)) then
!             if Is_Atomic (Designated_Type (Etype (R))) then
                 return True;
              end if;
  
           else
!             if Is_Atomic_Object (R) then
                 return True;
              end if;
           end if;
        end loop;
  
        return False;
!    end Is_Subcomponent_Of_Atomic_Object;
  
     ---------------------------------------
     -- Is_Subprogram_Contract_Annotation --
--- 20000,20125 ----
            or else Nkind (N) = N_Procedure_Call_Statement;
     end Is_Statement;
  
!    --------------------------------------
!    -- Is_Static_Discriminant_Component --
!    --------------------------------------
  
!    function Is_Static_Discriminant_Component (N : Node_Id) return Boolean is
!    begin
!       return Nkind (N) = N_Selected_Component
!         and then not Is_In_Discriminant_Check (N)
!         and then Present (Etype (Prefix (N)))
!         and then Ekind (Etype (Prefix (N))) = E_Record_Subtype
!         and then Has_Static_Discriminants (Etype (Prefix (N)))
!         and then Present (Entity (Selector_Name (N)))
!         and then Ekind (Entity (Selector_Name (N))) = E_Discriminant
!         and then not In_Check_Node (N);
!    end Is_Static_Discriminant_Component;
! 
!    ------------------------
!    -- Is_Static_Function --
!    ------------------------
! 
!    function Is_Static_Function (Subp : Entity_Id) return Boolean is
!    begin
!       --  Always return False for pre Ada 2020 to e.g. ignore the Static
!       --  aspect in package Interfaces for Ada_Version < 2020 and also
!       --  for efficiency.
! 
!       return Ada_Version >= Ada_2020
!         and then Has_Aspect (Subp, Aspect_Static)
!         and then
!           (No (Find_Value_Of_Aspect (Subp, Aspect_Static))
!             or else Is_True (Static_Boolean
!                                (Find_Value_Of_Aspect (Subp, Aspect_Static))));
!    end Is_Static_Function;
! 
!    -----------------------------
!    -- Is_Static_Function_Call --
!    -----------------------------
! 
!    function Is_Static_Function_Call (Call : Node_Id) return Boolean is
!       function Has_All_Static_Actuals (Call : Node_Id) return Boolean;
!       --  Return whether all actual parameters of Call are static expressions
! 
!       ----------------------------
!       -- Has_All_Static_Actuals --
!       ----------------------------
! 
!       function Has_All_Static_Actuals (Call : Node_Id) return Boolean is
!          Actual        : Node_Id := First_Actual (Call);
!          String_Result : constant Boolean :=
!                            Is_String_Type (Etype (Entity (Name (Call))));
! 
!       begin
!          while Present (Actual) loop
!             if not Is_Static_Expression (Actual) then
! 
!                --  ??? In the string-returning case we want to avoid a call
!                --  being made to Establish_Transient_Scope in Resolve_Call,
!                --  but at the point where that's tested for (which now includes
!                --  a call to test Is_Static_Function_Call), the actuals of the
!                --  call haven't been resolved, so expressions of the actuals
!                --  may not have been marked Is_Static_Expression yet, so we
!                --  force them to be resolved here, so we can tell if they're
!                --  static. Calling Resolve here is admittedly a kludge, and we
!                --  limit this call to string-returning cases.
! 
!                if String_Result then
!                   Resolve (Actual);
!                end if;
! 
!                --  Test flag again in case it's now True due to above Resolve
! 
!                if not Is_Static_Expression (Actual) then
!                   return False;
!                end if;
!             end if;
! 
!             Next_Actual (Actual);
!          end loop;
! 
!          return True;
!       end Has_All_Static_Actuals;
! 
!    begin
!       return Nkind (Call) = N_Function_Call
!         and then Is_Entity_Name (Name (Call))
!         and then Is_Static_Function (Entity (Name (Call)))
!         and then Has_All_Static_Actuals (Call);
!    end Is_Static_Function_Call;
! 
!    -------------------------------------------
!    -- Is_Subcomponent_Of_Full_Access_Object --
!    -------------------------------------------
! 
!    function Is_Subcomponent_Of_Full_Access_Object (N : Node_Id) return Boolean
!    is
        R : Node_Id;
  
     begin
        R := Get_Referenced_Object (N);
  
!       while Nkind (R) in N_Indexed_Component | N_Selected_Component | N_Slice
        loop
           R := Get_Referenced_Object (Prefix (R));
  
           --  If the prefix is an access value, only the designated type matters
  
           if Is_Access_Type (Etype (R)) then
!             if Is_Full_Access (Designated_Type (Etype (R))) then
                 return True;
              end if;
  
           else
!             if Is_Full_Access_Object (R) then
                 return True;
              end if;
           end if;
        end loop;
  
        return False;
!    end Is_Subcomponent_Of_Full_Access_Object;
  
     ---------------------------------------
     -- Is_Subprogram_Contract_Annotation --
*************** package body Sem_Util is
*** 17976,17981 ****
--- 20151,20157 ----
          or else Nam = Name_Refined_Depends
          or else Nam = Name_Refined_Global
          or else Nam = Name_Refined_Post
+         or else Nam = Name_Subprogram_Variant
          or else Nam = Name_Test_Case;
     end Is_Subprogram_Contract_Annotation;
  
*************** package body Sem_Util is
*** 18082,18090 ****
           then
              return True;
  
!          --  A constant is a synchronized object by default
  
!          elsif Ekind (Id) = E_Constant then
              return True;
  
           --  A variable is a synchronized object if it is subject to pragma
--- 20258,20269 ----
           then
              return True;
  
!          --  A constant is a synchronized object by default, unless its type is
!          --  access-to-variable type.
  
!          elsif Ekind (Id) = E_Constant
!            and then not Is_Access_Variable (Etype (Id))
!          then
              return True;
  
           --  A variable is a synchronized object if it is subject to pragma
*************** package body Sem_Util is
*** 18176,18182 ****
  
     function Is_True (U : Uint) return Boolean is
     begin
!       return (U /= 0);
     end Is_True;
  
     --------------------------------------
--- 20355,20361 ----
  
     function Is_True (U : Uint) return Boolean is
     begin
!       return U /= 0;
     end Is_True;
  
     --------------------------------------
*************** package body Sem_Util is
*** 18281,18287 ****
              end if;
           end if;
  
!          Idx := Next_Index (Idx);
        end loop;
  
        return False;
--- 20460,20466 ----
              end if;
           end if;
  
!          Next_Index (Idx);
        end loop;
  
        return False;
*************** package body Sem_Util is
*** 18395,18402 ****
  
           elsif Nkind (P) = N_Type_Conversion
             and then not Comes_From_Source (P)
!            and then Is_Array_Type (Etype (P))
!            and then Is_Packed (Etype (P))
           then
              return Is_Variable (Expression (P));
  
--- 20574,20580 ----
  
           elsif Nkind (P) = N_Type_Conversion
             and then not Comes_From_Source (P)
!            and then Is_Packed_Array (Etype (P))
           then
              return Is_Variable (Expression (P));
  
*************** package body Sem_Util is
*** 18461,18474 ****
             or else
               Is_Variable_Prefix (Original_Node (Prefix (N)));
  
!       --  in Ada 2012, the dereference may have been added for a type with
!       --  a declared implicit dereference aspect. Check that it is not an
!       --  access to constant.
  
        elsif Nkind (N) = N_Explicit_Dereference
          and then Present (Etype (Orig_Node))
-         and then Ada_Version >= Ada_2012
          and then Has_Implicit_Dereference (Etype (Orig_Node))
        then
           return not Is_Access_Constant (Etype (Prefix (N)));
  
--- 20639,20652 ----
             or else
               Is_Variable_Prefix (Original_Node (Prefix (N)));
  
!       --  Generalized indexing operations are rewritten as explicit
!       --  dereferences, and it is only during resolution that we can
!       --  check whether the context requires an access_to_variable type.
  
        elsif Nkind (N) = N_Explicit_Dereference
          and then Present (Etype (Orig_Node))
          and then Has_Implicit_Dereference (Etype (Orig_Node))
+         and then Ada_Version >= Ada_2012
        then
           return not Is_Access_Constant (Etype (Prefix (N)));
  
*************** package body Sem_Util is
*** 18567,18572 ****
--- 20745,20775 ----
        end if;
     end Is_Variable;
  
+    ------------------------
+    -- Is_View_Conversion --
+    ------------------------
+ 
+    function Is_View_Conversion (N : Node_Id) return Boolean is
+    begin
+       if Nkind (N) = N_Type_Conversion
+         and then Nkind (Unqual_Conv (N)) in N_Has_Etype
+       then
+          if Is_Tagged_Type (Etype (N))
+            and then Is_Tagged_Type (Etype (Unqual_Conv (N)))
+          then
+             return True;
+ 
+          elsif Is_Actual_Parameter (N)
+            and then (Is_Actual_Out_Parameter (N)
+                        or else Is_Actual_In_Out_Parameter (N))
+          then
+             return True;
+          end if;
+       end if;
+ 
+       return False;
+    end Is_View_Conversion;
+ 
     ---------------------------
     -- Is_Visibly_Controlled --
     ---------------------------
*************** package body Sem_Util is
*** 18624,18630 ****
  
     function Is_Volatile_Function (Func_Id : Entity_Id) return Boolean is
     begin
!       pragma Assert (Ekind_In (Func_Id, E_Function, E_Generic_Function));
  
        --  A function declared within a protected type is volatile
  
--- 20827,20833 ----
  
     function Is_Volatile_Function (Func_Id : Entity_Id) return Boolean is
     begin
!       pragma Assert (Ekind (Func_Id) in E_Function | E_Generic_Function);
  
        --  A function declared within a protected type is volatile
  
*************** package body Sem_Util is
*** 18755,18762 ****
     begin
        pragma Assert (Is_Itype (Id));
        return Present (Parent (Id))
!         and then Nkind_In (Parent (Id), N_Full_Type_Declaration,
!                                         N_Subtype_Declaration)
          and then Defining_Entity (Parent (Id)) = Id;
     end Itype_Has_Declaration;
  
--- 20958,20965 ----
     begin
        pragma Assert (Is_Itype (Id));
        return Present (Parent (Id))
!         and then Nkind (Parent (Id)) in
!                    N_Full_Type_Declaration | N_Subtype_Declaration
          and then Defining_Entity (Parent (Id)) = Id;
     end Itype_Has_Declaration;
  
*************** package body Sem_Util is
*** 19167,19175 ****
        --    Obj := new ...'(new Coextension ...);
  
        if Nkind (Context_Nod) = N_Assignment_Statement then
!          Is_Dynamic :=
!            Nkind_In (Expression (Context_Nod), N_Allocator,
!                                                N_Qualified_Expression);
  
        --  An allocator that appears within the expression of a simple return
        --  statement is treated as a potentially dynamic coextension when the
--- 21370,21377 ----
        --    Obj := new ...'(new Coextension ...);
  
        if Nkind (Context_Nod) = N_Assignment_Statement then
!          Is_Dynamic := Nkind (Expression (Context_Nod)) in
!                          N_Allocator | N_Qualified_Expression;
  
        --  An allocator that appears within the expression of a simple return
        --  statement is treated as a potentially dynamic coextension when the
*************** package body Sem_Util is
*** 19179,19188 ****
        --    return new ...'(new Coextension ...);
  
        elsif Nkind (Context_Nod) = N_Simple_Return_Statement then
!          Is_Dynamic :=
!            Nkind_In (Expression (Context_Nod), N_Aggregate,
!                                                N_Allocator,
!                                                N_Qualified_Expression);
  
        --  An alloctor that appears within the initialization expression of an
        --  object declaration is considered a potentially dynamic coextension
--- 21381,21388 ----
        --    return new ...'(new Coextension ...);
  
        elsif Nkind (Context_Nod) = N_Simple_Return_Statement then
!          Is_Dynamic := Nkind (Expression (Context_Nod)) in
!                          N_Aggregate | N_Allocator | N_Qualified_Expression;
  
        --  An alloctor that appears within the initialization expression of an
        --  object declaration is considered a potentially dynamic coextension
*************** package body Sem_Util is
*** 19198,19207 ****
        --    return Obj : ... := (new Coextension ...);
  
        elsif Nkind (Context_Nod) = N_Object_Declaration then
!          Is_Dynamic :=
!            Nkind_In (Root_Nod, N_Allocator, N_Qualified_Expression)
!              or else
!                Nkind (Parent (Context_Nod)) = N_Extended_Return_Statement;
  
        --  This routine should not be called with constructs that cannot contain
        --  coextensions.
--- 21398,21405 ----
        --    return Obj : ... := (new Coextension ...);
  
        elsif Nkind (Context_Nod) = N_Object_Declaration then
!          Is_Dynamic := Nkind (Root_Nod) in N_Allocator | N_Qualified_Expression
!            or else Nkind (Parent (Context_Nod)) = N_Extended_Return_Statement;
  
        --  This routine should not be called with constructs that cannot contain
        --  coextensions.
*************** package body Sem_Util is
*** 19367,19378 ****
              --  suppressed. As a result the elaboration checks of the call must
              --  be disabled in order to preserve this dependency.
  
!             if Nkind_In (N, N_Entry_Call_Statement,
!                             N_Function_Call,
!                             N_Function_Instantiation,
!                             N_Package_Instantiation,
!                             N_Procedure_Call_Statement,
!                             N_Procedure_Instantiation)
              then
                 Nam := Extract_Name (N);
  
--- 21565,21576 ----
              --  suppressed. As a result the elaboration checks of the call must
              --  be disabled in order to preserve this dependency.
  
!             if Nkind (N) in N_Entry_Call_Statement
!                           | N_Function_Call
!                           | N_Function_Instantiation
!                           | N_Package_Instantiation
!                           | N_Procedure_Call_Statement
!                           | N_Procedure_Instantiation
              then
                 Nam := Extract_Name (N);
  
*************** package body Sem_Util is
*** 19451,19466 ****
  
        --  Obtain the complimentary unit of the main unit
  
!       if Nkind_In (Main_Unit, N_Generic_Package_Declaration,
!                               N_Generic_Subprogram_Declaration,
!                               N_Package_Declaration,
!                               N_Subprogram_Declaration)
        then
           Aux_Id := Corresponding_Body (Main_Unit);
  
!       elsif Nkind_In (Main_Unit, N_Package_Body,
!                                  N_Subprogram_Body,
!                                  N_Subprogram_Renaming_Declaration)
        then
           Aux_Id := Corresponding_Spec (Main_Unit);
        end if;
--- 21649,21664 ----
  
        --  Obtain the complimentary unit of the main unit
  
!       if Nkind (Main_Unit) in N_Generic_Package_Declaration
!                             | N_Generic_Subprogram_Declaration
!                             | N_Package_Declaration
!                             | N_Subprogram_Declaration
        then
           Aux_Id := Corresponding_Body (Main_Unit);
  
!       elsif Nkind (Main_Unit) in N_Package_Body
!                                | N_Subprogram_Body
!                                | N_Subprogram_Renaming_Declaration
        then
           Aux_Id := Corresponding_Spec (Main_Unit);
        end if;
*************** package body Sem_Util is
*** 19791,19802 ****
  
        function Process (N : Node_Id) return Traverse_Result is
        begin
!          if Nkind_In (N, N_Procedure_Call_Statement,
!                          N_Function_Call,
!                          N_Raise_Statement,
!                          N_Raise_Constraint_Error,
!                          N_Raise_Program_Error,
!                          N_Raise_Storage_Error)
           then
              Result := True;
              return Abandon;
--- 21989,21998 ----
  
        function Process (N : Node_Id) return Traverse_Result is
        begin
!          if Nkind (N) in N_Procedure_Call_Statement
!                        | N_Function_Call
!                        | N_Raise_Statement
!                        | N_Raise_xxx_Error
           then
              Result := True;
              return Abandon;
*************** package body Sem_Util is
*** 19978,19983 ****
--- 22174,22317 ----
        end if;
     end Needs_One_Actual;
  
+    --------------------------------------
+    -- Needs_Result_Accessibility_Level --
+    --------------------------------------
+ 
+    function Needs_Result_Accessibility_Level
+      (Func_Id : Entity_Id) return Boolean
+    is
+       Func_Typ : constant Entity_Id := Underlying_Type (Etype (Func_Id));
+ 
+       function Has_Unconstrained_Access_Discriminant_Component
+         (Comp_Typ : Entity_Id) return Boolean;
+       --  Returns True if any component of the type has an unconstrained access
+       --  discriminant.
+ 
+       -----------------------------------------------------
+       -- Has_Unconstrained_Access_Discriminant_Component --
+       -----------------------------------------------------
+ 
+       function Has_Unconstrained_Access_Discriminant_Component
+         (Comp_Typ :  Entity_Id) return Boolean
+       is
+       begin
+          if not Is_Limited_Type (Comp_Typ) then
+             return False;
+ 
+             --  Only limited types can have access discriminants with
+             --  defaults.
+ 
+          elsif Has_Unconstrained_Access_Discriminants (Comp_Typ) then
+             return True;
+ 
+          elsif Is_Array_Type (Comp_Typ) then
+             return Has_Unconstrained_Access_Discriminant_Component
+                      (Underlying_Type (Component_Type (Comp_Typ)));
+ 
+          elsif Is_Record_Type (Comp_Typ) then
+             declare
+                Comp : Entity_Id;
+ 
+             begin
+                Comp := First_Component (Comp_Typ);
+                while Present (Comp) loop
+                   if Has_Unconstrained_Access_Discriminant_Component
+                        (Underlying_Type (Etype (Comp)))
+                   then
+                      return True;
+                   end if;
+ 
+                   Next_Component (Comp);
+                end loop;
+             end;
+          end if;
+ 
+          return False;
+       end Has_Unconstrained_Access_Discriminant_Component;
+ 
+       Disable_Coextension_Cases : constant Boolean := True;
+       --  Flag used to temporarily disable a "True" result for types with
+       --  access discriminants and related coextension cases.
+ 
+    --  Start of processing for Needs_Result_Accessibility_Level
+ 
+    begin
+       --  False if completion unavailable (how does this happen???)
+ 
+       if not Present (Func_Typ) then
+          return False;
+ 
+       --  False if not a function, also handle enum-lit renames case
+ 
+       elsif Func_Typ = Standard_Void_Type
+         or else Is_Scalar_Type (Func_Typ)
+       then
+          return False;
+ 
+       --  Handle a corner case, a cross-dialect subp renaming. For example,
+       --  an Ada 2012 renaming of an Ada 2005 subprogram. This can occur when
+       --  an Ada 2005 (or earlier) unit references predefined run-time units.
+ 
+       elsif Present (Alias (Func_Id)) then
+ 
+          --  Unimplemented: a cross-dialect subp renaming which does not set
+          --  the Alias attribute (e.g., a rename of a dereference of an access
+          --  to subprogram value). ???
+ 
+          return Present (Extra_Accessibility_Of_Result (Alias (Func_Id)));
+ 
+       --  Remaining cases require Ada 2012 mode
+ 
+       elsif Ada_Version < Ada_2012 then
+          return False;
+ 
+       --  Handle the situation where a result is an anonymous access type
+       --  RM 3.10.2 (10.3/3).
+ 
+       elsif Ekind (Func_Typ) = E_Anonymous_Access_Type then
+          return True;
+ 
+       --  The following cases are related to coextensions and do not fully
+       --  cover everything mentioned in RM 3.10.2 (12) ???
+ 
+       --  Temporarily disabled ???
+ 
+       elsif Disable_Coextension_Cases then
+          return False;
+ 
+       --  In the case of, say, a null tagged record result type, the need for
+       --  this extra parameter might not be obvious so this function returns
+       --  True for all tagged types for compatibility reasons.
+ 
+       --  A function with, say, a tagged null controlling result type might
+       --  be overridden by a primitive of an extension having an access
+       --  discriminant and the overrider and overridden must have compatible
+       --  calling conventions (including implicitly declared parameters).
+ 
+       --  Similarly, values of one access-to-subprogram type might designate
+       --  both a primitive subprogram of a given type and a function which is,
+       --  for example, not a primitive subprogram of any type. Again, this
+       --  requires calling convention compatibility. It might be possible to
+       --  solve these issues by introducing wrappers, but that is not the
+       --  approach that was chosen.
+ 
+       elsif Is_Tagged_Type (Func_Typ) then
+          return True;
+ 
+       elsif Has_Unconstrained_Access_Discriminants (Func_Typ) then
+          return True;
+ 
+       elsif Has_Unconstrained_Access_Discriminant_Component (Func_Typ) then
+          return True;
+ 
+       --  False for all other cases
+ 
+       else
+          return False;
+       end if;
+    end Needs_Result_Accessibility_Level;
+ 
     ---------------------------------
     -- Needs_Simple_Initialization --
     ---------------------------------
*************** package body Sem_Util is
*** 20087,20095 ****
              --  subprogram call, and the caller requests this behavior.
  
              elsif not Calls_OK
!               and then Nkind_In (Par, N_Entry_Call_Statement,
!                                       N_Function_Call,
!                                       N_Procedure_Call_Statement)
              then
                 return False;
  
--- 22421,22429 ----
              --  subprogram call, and the caller requests this behavior.
  
              elsif not Calls_OK
!               and then Nkind (Par) in N_Entry_Call_Statement
!                                     | N_Function_Call
!                                     | N_Procedure_Call_Statement
              then
                 return False;
  
*************** package body Sem_Util is
*** 20120,20131 ****
        if Legacy_Elaboration_Checks then
           return False;
  
-       --  No marker needs to be created for ASIS because ABE diagnostics and
-       --  checks are not performed in this mode.
- 
-       elsif ASIS_Mode then
-          return False;
- 
        --  No marker needs to be created when the reference is preanalyzed
        --  because the marker will be inserted in the wrong place.
  
--- 22454,22459 ----
*************** package body Sem_Util is
*** 20134,20140 ****
  
        --  Only references warrant a marker
  
!       elsif not Nkind_In (N, N_Expanded_Name, N_Identifier) then
           return False;
  
        --  Only source references warrant a marker
--- 22462,22468 ----
  
        --  Only references warrant a marker
  
!       elsif Nkind (N) not in N_Expanded_Name | N_Identifier then
           return False;
  
        --  Only source references warrant a marker
*************** package body Sem_Util is
*** 20198,20210 ****
  
           while Present (E) loop
              Append (New_Copy_Tree (E), NL);
!             E := Next (E);
           end loop;
  
           return NL;
        end if;
     end New_Copy_List_Tree;
  
     -------------------
     -- New_Copy_Tree --
     -------------------
--- 22526,22646 ----
  
           while Present (E) loop
              Append (New_Copy_Tree (E), NL);
!             Next (E);
           end loop;
  
           return NL;
        end if;
     end New_Copy_List_Tree;
  
+    ----------------------------
+    -- New_Copy_Separate_List --
+    ----------------------------
+ 
+    function New_Copy_Separate_List (List : List_Id) return List_Id is
+    begin
+       if List = No_List then
+          return No_List;
+ 
+       else
+          declare
+             List_Copy : constant List_Id := New_List;
+             N         : Node_Id := First (List);
+ 
+          begin
+             while Present (N) loop
+                Append (New_Copy_Separate_Tree (N), List_Copy);
+                Next (N);
+             end loop;
+ 
+             return List_Copy;
+          end;
+       end if;
+    end New_Copy_Separate_List;
+ 
+    ----------------------------
+    -- New_Copy_Separate_Tree --
+    ----------------------------
+ 
+    function New_Copy_Separate_Tree (Source : Node_Id) return Node_Id is
+       function Search_Decl (N : Node_Id) return Traverse_Result;
+       --  Subtree visitor which collects declarations
+ 
+       procedure Search_Declarations is new Traverse_Proc (Search_Decl);
+       --  Subtree visitor instantiation
+ 
+       -----------------
+       -- Search_Decl --
+       -----------------
+ 
+       Decls : Elist_Id;
+ 
+       function Search_Decl (N : Node_Id) return Traverse_Result is
+       begin
+          if Nkind (N) in N_Declaration then
+             Append_New_Elmt (N, Decls);
+          end if;
+ 
+          return OK;
+       end Search_Decl;
+ 
+       --  Local variables
+ 
+       Source_Copy : constant Node_Id := New_Copy_Tree (Source);
+ 
+    --  Start of processing for New_Copy_Separate_Tree
+ 
+    begin
+       Decls := No_Elist;
+       Search_Declarations (Source_Copy);
+ 
+       --  Associate a new Entity with all the subtree declarations (keeping
+       --  their original name).
+ 
+       if Present (Decls) then
+          declare
+             Elmt  : Elmt_Id;
+             Decl  : Node_Id;
+             New_E : Entity_Id;
+ 
+          begin
+             Elmt := First_Elmt (Decls);
+             while Present (Elmt) loop
+                Decl  := Node (Elmt);
+                New_E := Make_Defining_Identifier (Sloc (Decl),
+                           New_Internal_Name ('P'));
+ 
+                if Nkind (Decl) = N_Expression_Function then
+                   Decl := Specification (Decl);
+                end if;
+ 
+                if Nkind (Decl) in N_Function_Instantiation
+                                 | N_Function_Specification
+                                 | N_Generic_Function_Renaming_Declaration
+                                 | N_Generic_Package_Renaming_Declaration
+                                 | N_Generic_Procedure_Renaming_Declaration
+                                 | N_Package_Body
+                                 | N_Package_Instantiation
+                                 | N_Package_Renaming_Declaration
+                                 | N_Package_Specification
+                                 | N_Procedure_Instantiation
+                                 | N_Procedure_Specification
+                then
+                   Set_Chars (New_E, Chars (Defining_Unit_Name (Decl)));
+                   Set_Defining_Unit_Name (Decl, New_E);
+                else
+                   Set_Chars (New_E, Chars (Defining_Identifier (Decl)));
+                   Set_Defining_Identifier (Decl, New_E);
+                end if;
+ 
+                Next_Elmt (Elmt);
+             end loop;
+          end;
+       end if;
+ 
+       return Source_Copy;
+    end New_Copy_Separate_Tree;
+ 
     -------------------
     -- New_Copy_Tree --
     -------------------
*************** package body Sem_Util is
*** 20312,20318 ****
        --  New_Id is the corresponding new entity generated during Phase 1.
  
        procedure Add_Pending_Itype (Assoc_Nod : Node_Id; Itype : Entity_Id);
!       pragma Inline (Add_New_Entity);
        --  Add an entry in the NCT_Pending_Itypes which maps key Assoc_Nod to
        --  value Itype. Assoc_Nod is the associated node of an itype. Itype is
        --  an itype.
--- 22748,22754 ----
        --  New_Id is the corresponding new entity generated during Phase 1.
  
        procedure Add_Pending_Itype (Assoc_Nod : Node_Id; Itype : Entity_Id);
!       pragma Inline (Add_Pending_Itype);
        --  Add an entry in the NCT_Pending_Itypes which maps key Assoc_Nod to
        --  value Itype. Assoc_Nod is the associated node of an itype. Itype is
        --  an itype.
*************** package body Sem_Util is
*** 20633,20638 ****
--- 23069,23133 ----
           New_Par  : Node_Id := Empty;
           Semantic : Boolean := False) return Union_Id
        is
+          function Has_More_Ids (N : Node_Id) return Boolean;
+          --  Return True when N has attribute More_Ids set to True
+ 
+          function Is_Syntactic_Node return Boolean;
+          --  Return True when Field is a syntactic node
+ 
+          ------------------
+          -- Has_More_Ids --
+          ------------------
+ 
+          function Has_More_Ids (N : Node_Id) return Boolean is
+          begin
+             if Nkind (N) in N_Component_Declaration
+                           | N_Discriminant_Specification
+                           | N_Exception_Declaration
+                           | N_Formal_Object_Declaration
+                           | N_Number_Declaration
+                           | N_Object_Declaration
+                           | N_Parameter_Specification
+                           | N_Use_Package_Clause
+                           | N_Use_Type_Clause
+             then
+                return More_Ids (N);
+             else
+                return False;
+             end if;
+          end Has_More_Ids;
+ 
+          -----------------------
+          -- Is_Syntactic_Node --
+          -----------------------
+ 
+          function Is_Syntactic_Node return Boolean is
+             Old_N : constant Node_Id := Node_Id (Field);
+ 
+          begin
+             if Parent (Old_N) = Old_Par then
+                return True;
+ 
+             elsif not Has_More_Ids (Old_Par) then
+                return False;
+ 
+             --  Perform the check using the last last id in the syntactic chain
+ 
+             else
+                declare
+                   N : Node_Id := Old_Par;
+ 
+                begin
+                   while Present (N) and then More_Ids (N) loop
+                      Next (N);
+                   end loop;
+ 
+                   pragma Assert (Prev_Ids (N));
+                   return Parent (Old_N) = N;
+                end;
+             end if;
+          end Is_Syntactic_Node;
+ 
        begin
           --  The field is empty
  
*************** package body Sem_Util is
*** 20644,20650 ****
           elsif Field in Node_Range then
              declare
                 Old_N     : constant Node_Id := Node_Id (Field);
!                Syntactic : constant Boolean := Parent (Old_N) = Old_Par;
  
                 New_N : Node_Id;
  
--- 23139,23145 ----
           elsif Field in Node_Range then
              declare
                 Old_N     : constant Node_Id := Node_Id (Field);
!                Syntactic : constant Boolean := Is_Syntactic_Node;
  
                 New_N : Node_Id;
  
*************** package body Sem_Util is
*** 20835,20843 ****
              --  Update the First/Next_Named_Association chain for a replicated
              --  call.
  
!             if Nkind_In (N, N_Entry_Call_Statement,
!                             N_Function_Call,
!                             N_Procedure_Call_Statement)
              then
                 Update_Named_Associations
                   (Old_Call => N,
--- 23330,23338 ----
              --  Update the First/Next_Named_Association chain for a replicated
              --  call.
  
!             if Nkind (N) in N_Entry_Call_Statement
!                           | N_Function_Call
!                           | N_Procedure_Call_Statement
              then
                 Update_Named_Associations
                   (Old_Call => N,
*************** package body Sem_Util is
*** 20872,20877 ****
--- 23367,23377 ----
                    Set_Chars (Result, Chars (Entity (Result)));
                 end if;
              end if;
+ 
+             if Has_Aspects (N) then
+                Set_Aspect_Specifications (Result,
+                  Copy_List_With_Replacement (Aspect_Specifications (N)));
+             end if;
           end if;
  
           return Result;
*************** package body Sem_Util is
*** 21254,21265 ****
           --  an entity declaration that must be replaced when the expander is
           --  active if the expression has been preanalyzed or analyzed.
  
!          elsif not Ekind_In (Id, E_Block,
!                                  E_Constant,
!                                  E_Label,
!                                  E_Loop_Parameter,
!                                  E_Procedure,
!                                  E_Variable)
             and then not Is_Type (Id)
           then
              return;
--- 23754,23762 ----
           --  an entity declaration that must be replaced when the expander is
           --  active if the expression has been preanalyzed or analyzed.
  
!          elsif Ekind (Id) not in
!                  E_Block     | E_Constant | E_Label | E_Loop_Parameter |
!                  E_Procedure | E_Variable
             and then not Is_Type (Id)
           then
              return;
*************** package body Sem_Util is
*** 21464,21470 ****
           --  shared. Thus cloned_Subtype must be set to indicate the sharing.
           --  ??? What does this do?
  
!          if Ekind_In (Itype, E_Class_Wide_Subtype, E_Record_Subtype) then
              Set_Cloned_Subtype (New_Itype, Itype);
           end if;
  
--- 23961,23967 ----
           --  shared. Thus cloned_Subtype must be set to indicate the sharing.
           --  ??? What does this do?
  
!          if Ekind (Itype) in E_Class_Wide_Subtype | E_Record_Subtype then
              Set_Cloned_Subtype (New_Itype, Itype);
           end if;
  
*************** package body Sem_Util is
*** 21552,21560 ****
              EWA_Level := EWA_Level + 1;
  
           elsif EWA_Level > 0
!            and then Nkind_In (N, N_Block_Statement,
!                                  N_Subprogram_Body,
!                                  N_Subprogram_Declaration)
           then
              EWA_Inner_Scope_Level := EWA_Inner_Scope_Level + 1;
           end if;
--- 24049,24057 ----
              EWA_Level := EWA_Level + 1;
  
           elsif EWA_Level > 0
!            and then Nkind (N) in N_Block_Statement
!                                | N_Subprogram_Body
!                                | N_Subprogram_Declaration
           then
              EWA_Inner_Scope_Level := EWA_Inner_Scope_Level + 1;
           end if;
*************** package body Sem_Util is
*** 21580,21588 ****
             Par_Nod => N);
  
           if EWA_Level > 0
!            and then Nkind_In (N, N_Block_Statement,
!                                  N_Subprogram_Body,
!                                  N_Subprogram_Declaration)
           then
              EWA_Inner_Scope_Level := EWA_Inner_Scope_Level - 1;
  
--- 24077,24085 ----
             Par_Nod => N);
  
           if EWA_Level > 0
!            and then Nkind (N) in N_Block_Statement
!                                | N_Subprogram_Body
!                                | N_Subprogram_Declaration
           then
              EWA_Inner_Scope_Level := EWA_Inner_Scope_Level - 1;
  
*************** package body Sem_Util is
*** 21849,21857 ****
              --  In case of a build-in-place call, the call will no longer be a
              --  call; it will have been rewritten.
  
!             if Nkind_In (Par, N_Entry_Call_Statement,
!                               N_Function_Call,
!                               N_Procedure_Call_Statement)
              then
                 return First_Named_Actual (Par);
  
--- 24346,24354 ----
              --  In case of a build-in-place call, the call will no longer be a
              --  call; it will have been rewritten.
  
!             if Nkind (Par) in N_Entry_Call_Statement
!                             | N_Function_Call
!                             | N_Procedure_Call_Statement
              then
                 return First_Named_Actual (Par);
  
*************** package body Sem_Util is
*** 21903,22139 ****
        Node := Next_Global (Node);
     end Next_Global;
  
-    ----------------------------------
-    -- New_Requires_Transient_Scope --
-    ----------------------------------
- 
-    function New_Requires_Transient_Scope (Id : Entity_Id) return Boolean is
-       function Caller_Known_Size_Record (Typ : Entity_Id) return Boolean;
-       --  This is called for untagged records and protected types, with
-       --  nondefaulted discriminants. Returns True if the size of function
-       --  results is known at the call site, False otherwise. Returns False
-       --  if there is a variant part that depends on the discriminants of
-       --  this type, or if there is an array constrained by the discriminants
-       --  of this type. ???Currently, this is overly conservative (the array
-       --  could be nested inside some other record that is constrained by
-       --  nondiscriminants). That is, the recursive calls are too conservative.
- 
-       function Large_Max_Size_Mutable (Typ : Entity_Id) return Boolean;
-       --  Returns True if Typ is a nonlimited record with defaulted
-       --  discriminants whose max size makes it unsuitable for allocating on
-       --  the primary stack.
- 
-       ------------------------------
-       -- Caller_Known_Size_Record --
-       ------------------------------
- 
-       function Caller_Known_Size_Record (Typ : Entity_Id) return Boolean is
-          pragma Assert (Typ = Underlying_Type (Typ));
- 
-       begin
-          if Has_Variant_Part (Typ) and then not Is_Definite_Subtype (Typ) then
-             return False;
-          end if;
- 
-          declare
-             Comp : Entity_Id;
- 
-          begin
-             Comp := First_Entity (Typ);
-             while Present (Comp) loop
- 
-                --  Only look at E_Component entities. No need to look at
-                --  E_Discriminant entities, and we must ignore internal
-                --  subtypes generated for constrained components.
- 
-                if Ekind (Comp) = E_Component then
-                   declare
-                      Comp_Type : constant Entity_Id :=
-                                    Underlying_Type (Etype (Comp));
- 
-                   begin
-                      if Is_Record_Type (Comp_Type)
-                            or else
-                         Is_Protected_Type (Comp_Type)
-                      then
-                         if not Caller_Known_Size_Record (Comp_Type) then
-                            return False;
-                         end if;
- 
-                      elsif Is_Array_Type (Comp_Type) then
-                         if Size_Depends_On_Discriminant (Comp_Type) then
-                            return False;
-                         end if;
-                      end if;
-                   end;
-                end if;
- 
-                Next_Entity (Comp);
-             end loop;
-          end;
- 
-          return True;
-       end Caller_Known_Size_Record;
- 
-       ------------------------------
-       -- Large_Max_Size_Mutable --
-       ------------------------------
- 
-       function Large_Max_Size_Mutable (Typ : Entity_Id) return Boolean is
-          pragma Assert (Typ = Underlying_Type (Typ));
- 
-          function Is_Large_Discrete_Type (T : Entity_Id) return Boolean;
-          --  Returns true if the discrete type T has a large range
- 
-          ----------------------------
-          -- Is_Large_Discrete_Type --
-          ----------------------------
- 
-          function Is_Large_Discrete_Type (T : Entity_Id) return Boolean is
-             Threshold : constant Int := 16;
-             --  Arbitrary threshold above which we consider it "large". We want
-             --  a fairly large threshold, because these large types really
-             --  shouldn't have default discriminants in the first place, in
-             --  most cases.
- 
-          begin
-             return UI_To_Int (RM_Size (T)) > Threshold;
-          end Is_Large_Discrete_Type;
- 
-       --  Start of processing for Large_Max_Size_Mutable
- 
-       begin
-          if Is_Record_Type (Typ)
-            and then not Is_Limited_View (Typ)
-            and then Has_Defaulted_Discriminants (Typ)
-          then
-             --  Loop through the components, looking for an array whose upper
-             --  bound(s) depends on discriminants, where both the subtype of
-             --  the discriminant and the index subtype are too large.
- 
-             declare
-                Comp : Entity_Id;
- 
-             begin
-                Comp := First_Entity (Typ);
-                while Present (Comp) loop
-                   if Ekind (Comp) = E_Component then
-                      declare
-                         Comp_Type : constant Entity_Id :=
-                                       Underlying_Type (Etype (Comp));
- 
-                         Hi   : Node_Id;
-                         Indx : Node_Id;
-                         Ityp : Entity_Id;
- 
-                      begin
-                         if Is_Array_Type (Comp_Type) then
-                            Indx := First_Index (Comp_Type);
- 
-                            while Present (Indx) loop
-                               Ityp := Etype (Indx);
-                               Hi := Type_High_Bound (Ityp);
- 
-                               if Nkind (Hi) = N_Identifier
-                                 and then Ekind (Entity (Hi)) = E_Discriminant
-                                 and then Is_Large_Discrete_Type (Ityp)
-                                 and then Is_Large_Discrete_Type
-                                            (Etype (Entity (Hi)))
-                               then
-                                  return True;
-                               end if;
- 
-                               Next_Index (Indx);
-                            end loop;
-                         end if;
-                      end;
-                   end if;
- 
-                   Next_Entity (Comp);
-                end loop;
-             end;
-          end if;
- 
-          return False;
-       end Large_Max_Size_Mutable;
- 
-       --  Local declarations
- 
-       Typ : constant Entity_Id := Underlying_Type (Id);
- 
-    --  Start of processing for New_Requires_Transient_Scope
- 
-    begin
-       --  This is a private type which is not completed yet. This can only
-       --  happen in a default expression (of a formal parameter or of a
-       --  record component). Do not expand transient scope in this case.
- 
-       if No (Typ) then
-          return False;
- 
-       --  Do not expand transient scope for non-existent procedure return or
-       --  string literal types.
- 
-       elsif Typ = Standard_Void_Type
-         or else Ekind (Typ) = E_String_Literal_Subtype
-       then
-          return False;
- 
-       --  If Typ is a generic formal incomplete type, then we want to look at
-       --  the actual type.
- 
-       elsif Ekind (Typ) = E_Record_Subtype
-         and then Present (Cloned_Subtype (Typ))
-       then
-          return New_Requires_Transient_Scope (Cloned_Subtype (Typ));
- 
-       --  Functions returning specific tagged types may dispatch on result, so
-       --  their returned value is allocated on the secondary stack, even in the
-       --  definite case. We must treat nondispatching functions the same way,
-       --  because access-to-function types can point at both, so the calling
-       --  conventions must be compatible. Is_Tagged_Type includes controlled
-       --  types and class-wide types. Controlled type temporaries need
-       --  finalization.
- 
-       --  ???It's not clear why we need to return noncontrolled types with
-       --  controlled components on the secondary stack.
- 
-       elsif Is_Tagged_Type (Typ) or else Has_Controlled_Component (Typ) then
-          return True;
- 
-       --  Untagged definite subtypes are known size. This includes all
-       --  elementary [sub]types. Tasks are known size even if they have
-       --  discriminants. So we return False here, with one exception:
-       --  For a type like:
-       --    type T (Last : Natural := 0) is
-       --       X : String (1 .. Last);
-       --    end record;
-       --  we return True. That's because for "P(F(...));", where F returns T,
-       --  we don't know the size of the result at the call site, so if we
-       --  allocated it on the primary stack, we would have to allocate the
-       --  maximum size, which is way too big.
- 
-       elsif Is_Definite_Subtype (Typ) or else Is_Task_Type (Typ) then
-          return Large_Max_Size_Mutable (Typ);
- 
-       --  Indefinite (discriminated) untagged record or protected type
- 
-       elsif Is_Record_Type (Typ) or else Is_Protected_Type (Typ) then
-          return not Caller_Known_Size_Record (Typ);
- 
-       --  Unconstrained array
- 
-       else
-          pragma Assert (Is_Array_Type (Typ) and not Is_Definite_Subtype (Typ));
-          return True;
-       end if;
-    end New_Requires_Transient_Scope;
- 
     ------------------------
     -- No_Caching_Enabled --
     ------------------------
  
     function No_Caching_Enabled (Id : Entity_Id) return Boolean is
        Prag : constant Node_Id := Get_Pragma (Id, Pragma_No_Caching);
        Arg1 : Node_Id;
  
--- 24400,24411 ----
        Node := Next_Global (Node);
     end Next_Global;
  
     ------------------------
     -- No_Caching_Enabled --
     ------------------------
  
     function No_Caching_Enabled (Id : Entity_Id) return Boolean is
+       pragma Assert (Ekind (Id) = E_Variable);
        Prag : constant Node_Id := Get_Pragma (Id, Pragma_No_Caching);
        Arg1 : Node_Id;
  
*************** package body Sem_Util is
*** 22167,22173 ****
  
     function No_Heap_Finalization (Typ : Entity_Id) return Boolean is
     begin
!       if Ekind_In (Typ, E_Access_Type, E_General_Access_Type)
          and then Is_Library_Level_Entity (Typ)
        then
           --  A global No_Heap_Finalization pragma applies to all library-level
--- 24439,24445 ----
  
     function No_Heap_Finalization (Typ : Entity_Id) return Boolean is
     begin
!       if Ekind (Typ) in E_Access_Type | E_General_Access_Type
          and then Is_Library_Level_Entity (Typ)
        then
           --  A global No_Heap_Finalization pragma applies to all library-level
*************** package body Sem_Util is
*** 22397,22405 ****
                       then
                          if No (Actuals)
                            and then
!                             Nkind_In (Parent (N), N_Procedure_Call_Statement,
!                                                   N_Function_Call,
!                                                   N_Parameter_Association)
                            and then Ekind (S) /= E_Function
                          then
                             Set_Etype (N, Etype (S));
--- 24669,24677 ----
                       then
                          if No (Actuals)
                            and then
!                             Nkind (Parent (N)) in N_Procedure_Call_Statement
!                                                 | N_Function_Call
!                                                 | N_Parameter_Association
                            and then Ekind (S) /= E_Function
                          then
                             Set_Etype (N, Etype (S));
*************** package body Sem_Util is
*** 22551,22565 ****
                 end if;
              end;
  
!          elsif Nkind_In (Exp, N_Type_Conversion,
!                               N_Unchecked_Type_Conversion)
           then
              Exp := Expression (Exp);
              goto Continue;
  
!          elsif Nkind_In (Exp, N_Slice,
!                               N_Indexed_Component,
!                               N_Selected_Component)
           then
              --  Special check, if the prefix is an access type, then return
              --  since we are modifying the thing pointed to, not the prefix.
--- 24823,24835 ----
                 end if;
              end;
  
!          elsif Nkind (Exp) in N_Type_Conversion | N_Unchecked_Type_Conversion
           then
              Exp := Expression (Exp);
              goto Continue;
  
!          elsif Nkind (Exp) in
!                  N_Slice | N_Indexed_Component | N_Selected_Component
           then
              --  Special check, if the prefix is an access type, then return
              --  since we are modifying the thing pointed to, not the prefix.
*************** package body Sem_Util is
*** 22620,22626 ****
  
                 --  Follow renaming chain
  
!                if (Ekind (Ent) = E_Variable or else Ekind (Ent) = E_Constant)
                   and then Present (Renamed_Object (Ent))
                 then
                    Exp := Renamed_Object (Ent);
--- 24890,24896 ----
  
                 --  Follow renaming chain
  
!                if Ekind (Ent) in E_Variable | E_Constant
                   and then Present (Renamed_Object (Ent))
                 then
                    Exp := Renamed_Object (Ent);
*************** package body Sem_Util is
*** 22643,22650 ****
                 --  a modification of the container.
  
                 elsif Comes_From_Source (Original_Node (Exp))
!                  and then Nkind_In (Original_Node (Exp), N_Selected_Component,
!                                                          N_Indexed_Component)
                 then
                    Exp := Prefix (Original_Node (Exp));
                    goto Continue;
--- 24913,24920 ----
                 --  a modification of the container.
  
                 elsif Comes_From_Source (Original_Node (Exp))
!                  and then Nkind (Original_Node (Exp)) in
!                             N_Selected_Component | N_Indexed_Component
                 then
                    Exp := Prefix (Original_Node (Exp));
                    goto Continue;
*************** package body Sem_Util is
*** 22737,22749 ****
  
        function Is_Null_Excluding_Def (Def : Node_Id) return Boolean is
        begin
!          return
!            Nkind_In (Def, N_Access_Definition,
!                           N_Access_Function_Definition,
!                           N_Access_Procedure_Definition,
!                           N_Access_To_Object_Definition,
!                           N_Component_Definition,
!                           N_Derived_Type_Definition)
               and then Null_Exclusion_Present (Def);
        end Is_Null_Excluding_Def;
  
--- 25007,25018 ----
  
        function Is_Null_Excluding_Def (Def : Node_Id) return Boolean is
        begin
!          return Nkind (Def) in N_Access_Definition
!                              | N_Access_Function_Definition
!                              | N_Access_Procedure_Definition
!                              | N_Access_To_Object_Definition
!                              | N_Component_Definition
!                              | N_Derived_Type_Definition
               and then Null_Exclusion_Present (Def);
        end Is_Null_Excluding_Def;
  
*************** package body Sem_Util is
*** 22765,22776 ****
           if Is_Imported (Id) or else Is_Exported (Id) then
              return Unknown;
  
!          elsif Nkind_In (Decl, N_Component_Declaration,
!                                N_Discriminant_Specification,
!                                N_Formal_Object_Declaration,
!                                N_Object_Declaration,
!                                N_Object_Renaming_Declaration,
!                                N_Parameter_Specification)
           then
              --  A component declaration yields a non-null value when either
              --  its component definition or access definition carries a null
--- 25034,25045 ----
           if Is_Imported (Id) or else Is_Exported (Id) then
              return Unknown;
  
!          elsif Nkind (Decl) in N_Component_Declaration
!                              | N_Discriminant_Specification
!                              | N_Formal_Object_Declaration
!                              | N_Object_Declaration
!                              | N_Object_Renaming_Declaration
!                              | N_Parameter_Specification
           then
              --  A component declaration yields a non-null value when either
              --  its component definition or access definition carries a null
*************** package body Sem_Util is
*** 22891,22899 ****
        --  Taking the 'Access of something yields a non-null value
  
        elsif Nkind (N) = N_Attribute_Reference
!         and then Nam_In (Attribute_Name (N), Name_Access,
!                                              Name_Unchecked_Access,
!                                              Name_Unrestricted_Access)
        then
           return Is_Non_Null;
  
--- 25160,25168 ----
        --  Taking the 'Access of something yields a non-null value
  
        elsif Nkind (N) = N_Attribute_Reference
!         and then Attribute_Name (N) in Name_Access
!                                      | Name_Unchecked_Access
!                                      | Name_Unrestricted_Access
        then
           return Is_Non_Null;
  
*************** package body Sem_Util is
*** 22937,22943 ****
        if Nkind (N) = N_Null then
           return Present (Typ) and then Is_Descendant_Of_Address (Typ);
  
!       elsif Nkind_In (N, N_Op_Eq, N_Op_Ge, N_Op_Gt, N_Op_Le, N_Op_Lt, N_Op_Ne)
        then
           declare
              L : constant Node_Id := Left_Opnd (N);
--- 25206,25213 ----
        if Nkind (N) = N_Null then
           return Present (Typ) and then Is_Descendant_Of_Address (Typ);
  
!       elsif Nkind (N) in
!               N_Op_Eq | N_Op_Ge | N_Op_Gt | N_Op_Le | N_Op_Lt | N_Op_Ne
        then
           declare
              L : constant Node_Id := Left_Opnd (N);
*************** package body Sem_Util is
*** 23004,23420 ****
        return Num;
     end Number_Of_Elements_In_Array;
  
-    -------------------------
-    -- Object_Access_Level --
-    -------------------------
- 
-    --  Returns the static accessibility level of the view denoted by Obj. Note
-    --  that the value returned is the result of a call to Scope_Depth. Only
-    --  scope depths associated with dynamic scopes can actually be returned.
-    --  Since only relative levels matter for accessibility checking, the fact
-    --  that the distance between successive levels of accessibility is not
-    --  always one is immaterial (invariant: if level(E2) is deeper than
-    --  level(E1), then Scope_Depth(E1) < Scope_Depth(E2)).
- 
-    function Object_Access_Level (Obj : Node_Id) return Uint is
-       function Is_Interface_Conversion (N : Node_Id) return Boolean;
-       --  Determine whether N is a construct of the form
-       --    Some_Type (Operand._tag'Address)
-       --  This construct appears in the context of dispatching calls.
- 
-       function Reference_To (Obj : Node_Id) return Node_Id;
-       --  An explicit dereference is created when removing side effects from
-       --  expressions for constraint checking purposes. In this case a local
-       --  access type is created for it. The correct access level is that of
-       --  the original source node. We detect this case by noting that the
-       --  prefix of the dereference is created by an object declaration whose
-       --  initial expression is a reference.
- 
-       -----------------------------
-       -- Is_Interface_Conversion --
-       -----------------------------
- 
-       function Is_Interface_Conversion (N : Node_Id) return Boolean is
-       begin
-          return Nkind (N) = N_Unchecked_Type_Conversion
-            and then Nkind (Expression (N)) = N_Attribute_Reference
-            and then Attribute_Name (Expression (N)) = Name_Address;
-       end Is_Interface_Conversion;
- 
-       ------------------
-       -- Reference_To --
-       ------------------
- 
-       function Reference_To (Obj : Node_Id) return Node_Id is
-          Pref : constant Node_Id := Prefix (Obj);
-       begin
-          if Is_Entity_Name (Pref)
-            and then Nkind (Parent (Entity (Pref))) = N_Object_Declaration
-            and then Present (Expression (Parent (Entity (Pref))))
-            and then Nkind (Expression (Parent (Entity (Pref)))) = N_Reference
-          then
-             return (Prefix (Expression (Parent (Entity (Pref)))));
-          else
-             return Empty;
-          end if;
-       end Reference_To;
- 
-       --  Local variables
- 
-       E : Entity_Id;
- 
-    --  Start of processing for Object_Access_Level
- 
-    begin
-       if Nkind (Obj) = N_Defining_Identifier
-         or else Is_Entity_Name (Obj)
-       then
-          if Nkind (Obj) = N_Defining_Identifier then
-             E := Obj;
-          else
-             E := Entity (Obj);
-          end if;
- 
-          if Is_Prival (E) then
-             E := Prival_Link (E);
-          end if;
- 
-          --  If E is a type then it denotes a current instance. For this case
-          --  we add one to the normal accessibility level of the type to ensure
-          --  that current instances are treated as always being deeper than
-          --  than the level of any visible named access type (see 3.10.2(21)).
- 
-          if Is_Type (E) then
-             return Type_Access_Level (E) +  1;
- 
-          elsif Present (Renamed_Object (E)) then
-             return Object_Access_Level (Renamed_Object (E));
- 
-          --  Similarly, if E is a component of the current instance of a
-          --  protected type, any instance of it is assumed to be at a deeper
-          --  level than the type. For a protected object (whose type is an
-          --  anonymous protected type) its components are at the same level
-          --  as the type itself.
- 
-          elsif not Is_Overloadable (E)
-            and then Ekind (Scope (E)) = E_Protected_Type
-            and then Comes_From_Source (Scope (E))
-          then
-             return Type_Access_Level (Scope (E)) + 1;
- 
-          else
-             --  Aliased formals of functions take their access level from the
-             --  point of call, i.e. require a dynamic check. For static check
-             --  purposes, this is smaller than the level of the subprogram
-             --  itself. For procedures the aliased makes no difference.
- 
-             if Is_Formal (E)
-                and then Is_Aliased (E)
-                and then Ekind (Scope (E)) = E_Function
-             then
-                return Type_Access_Level (Etype (E));
- 
-             else
-                return Scope_Depth (Enclosing_Dynamic_Scope (E));
-             end if;
-          end if;
- 
-       elsif Nkind_In (Obj, N_Indexed_Component, N_Selected_Component) then
-          if Is_Access_Type (Etype (Prefix (Obj))) then
-             return Type_Access_Level (Etype (Prefix (Obj)));
-          else
-             return Object_Access_Level (Prefix (Obj));
-          end if;
- 
-       elsif Nkind (Obj) = N_Explicit_Dereference then
- 
-          --  If the prefix is a selected access discriminant then we make a
-          --  recursive call on the prefix, which will in turn check the level
-          --  of the prefix object of the selected discriminant.
- 
-          --  In Ada 2012, if the discriminant has implicit dereference and
-          --  the context is a selected component, treat this as an object of
-          --  unknown scope (see below). This is necessary in compile-only mode;
-          --  otherwise expansion will already have transformed the prefix into
-          --  a temporary.
- 
-          if Nkind (Prefix (Obj)) = N_Selected_Component
-            and then Ekind (Etype (Prefix (Obj))) = E_Anonymous_Access_Type
-            and then
-              Ekind (Entity (Selector_Name (Prefix (Obj)))) = E_Discriminant
-            and then
-              (not Has_Implicit_Dereference
-                     (Entity (Selector_Name (Prefix (Obj))))
-                or else Nkind (Parent (Obj)) /= N_Selected_Component)
-          then
-             return Object_Access_Level (Prefix (Obj));
- 
-          --  Detect an interface conversion in the context of a dispatching
-          --  call. Use the original form of the conversion to find the access
-          --  level of the operand.
- 
-          elsif Is_Interface (Etype (Obj))
-            and then Is_Interface_Conversion (Prefix (Obj))
-            and then Nkind (Original_Node (Obj)) = N_Type_Conversion
-          then
-             return Object_Access_Level (Original_Node (Obj));
- 
-          elsif not Comes_From_Source (Obj) then
-             declare
-                Ref : constant Node_Id := Reference_To (Obj);
-             begin
-                if Present (Ref) then
-                   return Object_Access_Level (Ref);
-                else
-                   return Type_Access_Level (Etype (Prefix (Obj)));
-                end if;
-             end;
- 
-          else
-             return Type_Access_Level (Etype (Prefix (Obj)));
-          end if;
- 
-       elsif Nkind_In (Obj, N_Type_Conversion, N_Unchecked_Type_Conversion) then
-          return Object_Access_Level (Expression (Obj));
- 
-       elsif Nkind (Obj) = N_Function_Call then
- 
-          --  Function results are objects, so we get either the access level of
-          --  the function or, in the case of an indirect call, the level of the
-          --  access-to-subprogram type. (This code is used for Ada 95, but it
-          --  looks wrong, because it seems that we should be checking the level
-          --  of the call itself, even for Ada 95. However, using the Ada 2005
-          --  version of the code causes regressions in several tests that are
-          --  compiled with -gnat95. ???)
- 
-          if Ada_Version < Ada_2005 then
-             if Is_Entity_Name (Name (Obj)) then
-                return Subprogram_Access_Level (Entity (Name (Obj)));
-             else
-                return Type_Access_Level (Etype (Prefix (Name (Obj))));
-             end if;
- 
-          --  For Ada 2005, the level of the result object of a function call is
-          --  defined to be the level of the call's innermost enclosing master.
-          --  We determine that by querying the depth of the innermost enclosing
-          --  dynamic scope.
- 
-          else
-             Return_Master_Scope_Depth_Of_Call : declare
-                function Innermost_Master_Scope_Depth
-                  (N : Node_Id) return Uint;
-                --  Returns the scope depth of the given node's innermost
-                --  enclosing dynamic scope (effectively the accessibility
-                --  level of the innermost enclosing master).
- 
-                ----------------------------------
-                -- Innermost_Master_Scope_Depth --
-                ----------------------------------
- 
-                function Innermost_Master_Scope_Depth
-                  (N : Node_Id) return Uint
-                is
-                   Node_Par : Node_Id := Parent (N);
- 
-                begin
-                   --  Locate the nearest enclosing node (by traversing Parents)
-                   --  that Defining_Entity can be applied to, and return the
-                   --  depth of that entity's nearest enclosing dynamic scope.
- 
-                   while Present (Node_Par) loop
-                      case Nkind (Node_Par) is
-                         when N_Abstract_Subprogram_Declaration
-                            | N_Block_Statement
-                            | N_Body_Stub
-                            | N_Component_Declaration
-                            | N_Entry_Body
-                            | N_Entry_Declaration
-                            | N_Exception_Declaration
-                            | N_Formal_Object_Declaration
-                            | N_Formal_Package_Declaration
-                            | N_Formal_Subprogram_Declaration
-                            | N_Formal_Type_Declaration
-                            | N_Full_Type_Declaration
-                            | N_Function_Specification
-                            | N_Generic_Declaration
-                            | N_Generic_Instantiation
-                            | N_Implicit_Label_Declaration
-                            | N_Incomplete_Type_Declaration
-                            | N_Loop_Parameter_Specification
-                            | N_Number_Declaration
-                            | N_Object_Declaration
-                            | N_Package_Declaration
-                            | N_Package_Specification
-                            | N_Parameter_Specification
-                            | N_Private_Extension_Declaration
-                            | N_Private_Type_Declaration
-                            | N_Procedure_Specification
-                            | N_Proper_Body
-                            | N_Protected_Type_Declaration
-                            | N_Renaming_Declaration
-                            | N_Single_Protected_Declaration
-                            | N_Single_Task_Declaration
-                            | N_Subprogram_Declaration
-                            | N_Subtype_Declaration
-                            | N_Subunit
-                            | N_Task_Type_Declaration
-                         =>
-                            return Scope_Depth
-                                     (Nearest_Dynamic_Scope
-                                        (Defining_Entity (Node_Par)));
- 
-                         --  For a return statement within a function, return
-                         --  the depth of the function itself. This is not just
-                         --  a small optimization, but matters when analyzing
-                         --  the expression in an expression function before
-                         --  the body is created.
- 
-                         when N_Simple_Return_Statement =>
-                            if Ekind (Current_Scope) = E_Function then
-                               return Scope_Depth (Current_Scope);
-                            end if;
- 
-                         when others =>
-                            null;
-                      end case;
- 
-                      Node_Par := Parent (Node_Par);
-                   end loop;
- 
-                   pragma Assert (False);
- 
-                   --  Should never reach the following return
- 
-                   return Scope_Depth (Current_Scope) + 1;
-                end Innermost_Master_Scope_Depth;
- 
-             --  Start of processing for Return_Master_Scope_Depth_Of_Call
- 
-             begin
-                return Innermost_Master_Scope_Depth (Obj);
-             end Return_Master_Scope_Depth_Of_Call;
-          end if;
- 
-       --  For convenience we handle qualified expressions, even though they
-       --  aren't technically object names.
- 
-       elsif Nkind (Obj) = N_Qualified_Expression then
-          return Object_Access_Level (Expression (Obj));
- 
-       --  Ditto for aggregates. They have the level of the temporary that
-       --  will hold their value.
- 
-       elsif Nkind (Obj) = N_Aggregate then
-          return Object_Access_Level (Current_Scope);
- 
-       --  Otherwise return the scope level of Standard. (If there are cases
-       --  that fall through to this point they will be treated as having
-       --  global accessibility for now. ???)
- 
-       else
-          return Scope_Depth (Standard_Standard);
-       end if;
-    end Object_Access_Level;
- 
-    ----------------------------------
-    -- Old_Requires_Transient_Scope --
-    ----------------------------------
- 
-    function Old_Requires_Transient_Scope (Id : Entity_Id) return Boolean is
-       Typ : constant Entity_Id := Underlying_Type (Id);
- 
-    begin
-       --  This is a private type which is not completed yet. This can only
-       --  happen in a default expression (of a formal parameter or of a
-       --  record component). Do not expand transient scope in this case.
- 
-       if No (Typ) then
-          return False;
- 
-       --  Do not expand transient scope for non-existent procedure return
- 
-       elsif Typ = Standard_Void_Type then
-          return False;
- 
-       --  Elementary types do not require a transient scope
- 
-       elsif Is_Elementary_Type (Typ) then
-          return False;
- 
-       --  Generally, indefinite subtypes require a transient scope, since the
-       --  back end cannot generate temporaries, since this is not a valid type
-       --  for declaring an object. It might be possible to relax this in the
-       --  future, e.g. by declaring the maximum possible space for the type.
- 
-       elsif not Is_Definite_Subtype (Typ) then
-          return True;
- 
-       --  Functions returning tagged types may dispatch on result so their
-       --  returned value is allocated on the secondary stack. Controlled
-       --  type temporaries need finalization.
- 
-       elsif Is_Tagged_Type (Typ) or else Has_Controlled_Component (Typ) then
-          return True;
- 
-       --  Record type
- 
-       elsif Is_Record_Type (Typ) then
-          declare
-             Comp : Entity_Id;
- 
-          begin
-             Comp := First_Entity (Typ);
-             while Present (Comp) loop
-                if Ekind (Comp) = E_Component then
- 
-                   --  ???It's not clear we need a full recursive call to
-                   --  Old_Requires_Transient_Scope here. Note that the
-                   --  following can't happen.
- 
-                   pragma Assert (Is_Definite_Subtype (Etype (Comp)));
-                   pragma Assert (not Has_Controlled_Component (Etype (Comp)));
- 
-                   if Old_Requires_Transient_Scope (Etype (Comp)) then
-                      return True;
-                   end if;
-                end if;
- 
-                Next_Entity (Comp);
-             end loop;
-          end;
- 
-          return False;
- 
-       --  String literal types never require transient scope
- 
-       elsif Ekind (Typ) = E_String_Literal_Subtype then
-          return False;
- 
-       --  Array type. Note that we already know that this is a constrained
-       --  array, since unconstrained arrays will fail the indefinite test.
- 
-       elsif Is_Array_Type (Typ) then
- 
-          --  If component type requires a transient scope, the array does too
- 
-          if Old_Requires_Transient_Scope (Component_Type (Typ)) then
-             return True;
- 
-          --  Otherwise, we only need a transient scope if the size depends on
-          --  the value of one or more discriminants.
- 
-          else
-             return Size_Depends_On_Discriminant (Typ);
-          end if;
- 
-       --  All other cases do not require a transient scope
- 
-       else
-          pragma Assert (Is_Protected_Type (Typ) or else Is_Task_Type (Typ));
-          return False;
-       end if;
-    end Old_Requires_Transient_Scope;
- 
     ---------------------------------
     -- Original_Aspect_Pragma_Name --
     ---------------------------------
--- 25274,25279 ----
*************** package body Sem_Util is
*** 23424,23430 ****
        Item_Nam : Name_Id;
  
     begin
!       pragma Assert (Nkind_In (N, N_Aspect_Specification, N_Pragma));
  
        Item := N;
  
--- 25283,25289 ----
        Item_Nam : Name_Id;
  
     begin
!       pragma Assert (Nkind (N) in N_Aspect_Specification | N_Pragma);
  
        Item := N;
  
*************** package body Sem_Util is
*** 23463,23470 ****
           elsif Item_Nam = Name_Pre then
              Item_Nam := Name_uPre;
  
!          elsif Nam_In (Item_Nam, Name_Type_Invariant,
!                                  Name_Type_Invariant_Class)
           then
              Item_Nam := Name_uType_Invariant;
  
--- 25322,25328 ----
           elsif Item_Nam = Name_Pre then
              Item_Nam := Name_uPre;
  
!          elsif Item_Nam in Name_Type_Invariant | Name_Type_Invariant_Class
           then
              Item_Nam := Name_uType_Invariant;
  
*************** package body Sem_Util is
*** 23543,23548 ****
--- 25401,25500 ----
        Write_Eol;
     end Output_Name;
  
+    ------------------
+    -- Param_Entity --
+    ------------------
+ 
+    --  This would be trivial, simply a test for an identifier that was a
+    --  reference to a formal, if it were not for the fact that a previous call
+    --  to Expand_Entry_Parameter will have modified the reference to the
+    --  identifier. A formal of a protected entity is rewritten as
+ 
+    --    typ!(recobj).rec.all'Constrained
+ 
+    --  where rec is a selector whose Entry_Formal link points to the formal
+ 
+    --  If the type of the entry parameter has a representation clause, then an
+    --  extra temp is involved (see below).
+ 
+    --  For a formal of a task entity, the formal is rewritten as a local
+    --  renaming.
+ 
+    --  In addition, a formal that is marked volatile because it is aliased
+    --  through an address clause is rewritten as dereference as well.
+ 
+    function Param_Entity (N : Node_Id) return Entity_Id is
+       Renamed_Obj : Node_Id;
+ 
+    begin
+       --  Simple reference case
+ 
+       if Nkind (N) in N_Identifier | N_Expanded_Name then
+          if Is_Formal (Entity (N)) then
+             return Entity (N);
+ 
+          --  Handle renamings of formal parameters and formals of tasks that
+          --  are rewritten as renamings.
+ 
+          elsif Nkind (Parent (Entity (N))) = N_Object_Renaming_Declaration then
+             Renamed_Obj := Get_Referenced_Object (Renamed_Object (Entity (N)));
+ 
+             if Is_Entity_Name (Renamed_Obj)
+               and then Is_Formal (Entity (Renamed_Obj))
+             then
+                return Entity (Renamed_Obj);
+ 
+             elsif
+               Nkind (Parent (Parent (Entity (N)))) = N_Accept_Statement
+             then
+                return Entity (N);
+             end if;
+          end if;
+ 
+       else
+          if Nkind (N) = N_Explicit_Dereference then
+             declare
+                P    : Node_Id := Prefix (N);
+                S    : Node_Id;
+                E    : Entity_Id;
+                Decl : Node_Id;
+ 
+             begin
+                --  If the type of an entry parameter has a representation
+                --  clause, then the prefix is not a selected component, but
+                --  instead a reference to a temp pointing at the selected
+                --  component. In this case, set P to be the initial value of
+                --  that temp.
+ 
+                if Nkind (P) = N_Identifier then
+                   E := Entity (P);
+ 
+                   if Ekind (E) = E_Constant then
+                      Decl := Parent (E);
+ 
+                      if Nkind (Decl) = N_Object_Declaration then
+                         P := Expression (Decl);
+                      end if;
+                   end if;
+                end if;
+ 
+                if Nkind (P) = N_Selected_Component then
+                   S := Selector_Name (P);
+ 
+                   if Present (Entry_Formal (Entity (S))) then
+                      return Entry_Formal (Entity (S));
+                   end if;
+ 
+                elsif Nkind (Original_Node (N)) = N_Identifier then
+                   return Param_Entity (Original_Node (N));
+                end if;
+             end;
+          end if;
+       end if;
+ 
+       return Empty;
+    end Param_Entity;
+ 
     ----------------------
     -- Policy_In_Effect --
     ----------------------
*************** package body Sem_Util is
*** 23572,23578 ****
              --  The current Check_Policy pragma matches the requested policy or
              --  appears in the single argument form (Assertion, policy_id).
  
!             if Nam_In (Chars (Arg1), Name_Assertion, Policy) then
                 return Chars (Arg2);
              end if;
  
--- 25524,25530 ----
              --  The current Check_Policy pragma matches the requested policy or
              --  appears in the single argument form (Assertion, policy_id).
  
!             if Chars (Arg1) in Name_Assertion | Policy then
                 return Chars (Arg2);
              end if;
  
*************** package body Sem_Util is
*** 23619,23625 ****
        --  assertions, unless they are disabled. Force Name_Check on
        --  ignored assertions.
  
!       if Nam_In (Kind, Name_Ignore, Name_Off)
          and then (CodePeer_Mode or GNATprove_Mode)
        then
           Kind := Name_Check;
--- 25571,25577 ----
        --  assertions, unless they are disabled. Force Name_Check on
        --  ignored assertions.
  
!       if Kind in Name_Ignore | Name_Off
          and then (CodePeer_Mode or GNATprove_Mode)
        then
           Kind := Name_Check;
*************** package body Sem_Util is
*** 23628,23633 ****
--- 25580,25608 ----
        return Kind;
     end Policy_In_Effect;
  
+    -------------------------------
+    -- Preanalyze_Without_Errors --
+    -------------------------------
+ 
+    procedure Preanalyze_Without_Errors (N : Node_Id) is
+       Status : constant Boolean := Get_Ignore_Errors;
+    begin
+       Set_Ignore_Errors (True);
+       Preanalyze (N);
+       Set_Ignore_Errors (Status);
+    end Preanalyze_Without_Errors;
+ 
+    -----------------------
+    -- Predicate_Enabled --
+    -----------------------
+ 
+    function Predicate_Enabled (Typ : Entity_Id) return Boolean is
+    begin
+       return Present (Predicate_Function (Typ))
+         and then not Predicates_Ignored (Typ)
+         and then not Predicate_Checks_Suppressed (Empty);
+    end Predicate_Enabled;
+ 
     ----------------------------------
     -- Predicate_Tests_On_Arguments --
     ----------------------------------
*************** package body Sem_Util is
*** 23966,23984 ****
  
           Get_Decoded_Name_String (Chars (Endl));
           Set_Sloc (Endl, Sloc (Endl) + Source_Ptr (Name_Len));
- 
-       else
-          --  In SPARK mode, no missing label is allowed for packages and
-          --  subprogram bodies. Detect those cases by testing whether
-          --  Process_End_Label was called for a body (Typ = 't') or a package.
- 
-          if Restriction_Check_Required (SPARK_05)
-            and then (Typ = 't' or else Ekind (Ent) = E_Package)
-          then
-             Error_Msg_Node_1 := Endl;
-             Check_SPARK_05_Restriction
-               ("`END &` required", Endl, Force => True);
-          end if;
        end if;
  
        --  Now generate the e/t reference
--- 25941,25946 ----
*************** package body Sem_Util is
*** 24021,24027 ****
       (Typ      : Entity_Id;
        From_Typ : Entity_Id)
     is
!       DIC_Proc : Entity_Id;
  
     begin
        if Present (Typ) and then Present (From_Typ) then
--- 25983,25990 ----
       (Typ      : Entity_Id;
        From_Typ : Entity_Id)
     is
!       DIC_Proc         : Entity_Id;
!       Partial_DIC_Proc : Entity_Id;
  
     begin
        if Present (Typ) and then Present (From_Typ) then
*************** package body Sem_Util is
*** 24042,24064 ****
           end if;
  
           DIC_Proc := DIC_Procedure (From_Typ);
  
           --  The setting of the attributes is intentionally conservative. This
           --  prevents accidental clobbering of enabled attributes.
  
!          if Has_Inherited_DIC (From_Typ)
!            and then not Has_Inherited_DIC (Typ)
!          then
              Set_Has_Inherited_DIC (Typ);
           end if;
  
!          if Has_Own_DIC (From_Typ) and then not Has_Own_DIC (Typ) then
              Set_Has_Own_DIC (Typ);
           end if;
  
           if Present (DIC_Proc) and then No (DIC_Procedure (Typ)) then
              Set_DIC_Procedure (Typ, DIC_Proc);
           end if;
        end if;
     end Propagate_DIC_Attributes;
  
--- 26005,26032 ----
           end if;
  
           DIC_Proc := DIC_Procedure (From_Typ);
+          Partial_DIC_Proc := Partial_DIC_Procedure (From_Typ);
  
           --  The setting of the attributes is intentionally conservative. This
           --  prevents accidental clobbering of enabled attributes.
  
!          if Has_Inherited_DIC (From_Typ) then
              Set_Has_Inherited_DIC (Typ);
           end if;
  
!          if Has_Own_DIC (From_Typ) then
              Set_Has_Own_DIC (Typ);
           end if;
  
           if Present (DIC_Proc) and then No (DIC_Procedure (Typ)) then
              Set_DIC_Procedure (Typ, DIC_Proc);
           end if;
+ 
+          if Present (Partial_DIC_Proc)
+            and then No (Partial_DIC_Procedure (Typ))
+          then
+             Set_Partial_DIC_Procedure (Typ, Partial_DIC_Proc);
+          end if;
        end if;
     end Propagate_DIC_Attributes;
  
*************** package body Sem_Util is
*** 24090,24111 ****
           --  The setting of the attributes is intentionally conservative. This
           --  prevents accidental clobbering of enabled attributes.
  
!          if Has_Inheritable_Invariants (From_Typ)
!            and then not Has_Inheritable_Invariants (Typ)
!          then
              Set_Has_Inheritable_Invariants (Typ);
           end if;
  
!          if Has_Inherited_Invariants (From_Typ)
!            and then not Has_Inherited_Invariants (Typ)
!          then
              Set_Has_Inherited_Invariants (Typ);
           end if;
  
!          if Has_Own_Invariants (From_Typ)
!            and then not Has_Own_Invariants (Typ)
!          then
!             Set_Has_Own_Invariants (Typ);
           end if;
  
           if Present (Full_IP) and then No (Invariant_Procedure (Typ)) then
--- 26058,26073 ----
           --  The setting of the attributes is intentionally conservative. This
           --  prevents accidental clobbering of enabled attributes.
  
!          if Has_Inheritable_Invariants (From_Typ) then
              Set_Has_Inheritable_Invariants (Typ);
           end if;
  
!          if Has_Inherited_Invariants (From_Typ) then
              Set_Has_Inherited_Invariants (Typ);
           end if;
  
!          if Has_Own_Invariants (From_Typ) then
!             Set_Has_Own_Invariants (Base_Type (Typ));
           end if;
  
           if Present (Full_IP) and then No (Invariant_Procedure (Typ)) then
*************** package body Sem_Util is
*** 24119,24124 ****
--- 26081,26128 ----
        end if;
     end Propagate_Invariant_Attributes;
  
+    ------------------------------------
+    -- Propagate_Predicate_Attributes --
+    ------------------------------------
+ 
+    procedure Propagate_Predicate_Attributes
+      (Typ      : Entity_Id;
+       From_Typ : Entity_Id)
+    is
+       Pred_Func   : Entity_Id;
+       Pred_Func_M : Entity_Id;
+ 
+    begin
+       if Present (Typ) and then Present (From_Typ) then
+          pragma Assert (Is_Type (Typ) and then Is_Type (From_Typ));
+ 
+          --  Nothing to do if both the source and the destination denote the
+          --  same type.
+ 
+          if From_Typ = Typ then
+             return;
+          end if;
+ 
+          Pred_Func   := Predicate_Function (From_Typ);
+          Pred_Func_M := Predicate_Function_M (From_Typ);
+ 
+          --  The setting of the attributes is intentionally conservative. This
+          --  prevents accidental clobbering of enabled attributes.
+ 
+          if Has_Predicates (From_Typ) then
+             Set_Has_Predicates (Typ);
+          end if;
+ 
+          if Present (Pred_Func) and then No (Predicate_Function (Typ)) then
+             Set_Predicate_Function (Typ, Pred_Func);
+          end if;
+ 
+          if Present (Pred_Func_M) and then No (Predicate_Function_M (Typ)) then
+             Set_Predicate_Function_M (Typ, Pred_Func_M);
+          end if;
+       end if;
+    end Propagate_Predicate_Attributes;
+ 
     ---------------------------------------
     -- Record_Possible_Part_Of_Reference --
     ---------------------------------------
*************** package body Sem_Util is
*** 24316,24322 ****
        --  The entity denotes a primitive subprogram. Remove it from the list of
        --  primitives of the associated controlling type.
  
!       if Ekind_In (Id, E_Function, E_Procedure) and then Is_Primitive (Id) then
           Formal := First_Formal (Id);
           while Present (Formal) loop
              if Is_Controlling_Formal (Formal) then
--- 26320,26326 ----
        --  The entity denotes a primitive subprogram. Remove it from the list of
        --  primitives of the associated controlling type.
  
!       if Ekind (Id) in E_Function | E_Procedure and then Is_Primitive (Id) then
           Formal := First_Formal (Id);
           while Present (Formal) loop
              if Is_Controlling_Formal (Formal) then
*************** package body Sem_Util is
*** 24367,24418 ****
     --  generated before the next instruction.
  
     function Requires_Transient_Scope (Id : Entity_Id) return Boolean is
!       Old_Result : constant Boolean := Old_Requires_Transient_Scope (Id);
  
!    begin
!       if Debug_Flag_QQ then
!          return Old_Result;
!       end if;
  
!       declare
!          New_Result : constant Boolean := New_Requires_Transient_Scope (Id);
  
        begin
!          --  Assert that we're not putting things on the secondary stack if we
!          --  didn't before; we are trying to AVOID secondary stack when
!          --  possible.
  
!          if not Old_Result then
!             pragma Assert (not New_Result);
!             null;
           end if;
  
!          if New_Result /= Old_Result then
!             Results_Differ (Id, Old_Result, New_Result);
           end if;
  
!          return New_Result;
!       end;
!    end Requires_Transient_Scope;
  
!    --------------------
!    -- Results_Differ --
!    --------------------
  
-    procedure Results_Differ
-      (Id      : Entity_Id;
-       Old_Val : Boolean;
-       New_Val : Boolean)
-    is
     begin
!       if False then -- False to disable; True for debugging
!          Treepr.Print_Tree_Node (Id);
  
!          if Old_Val = New_Val then
!             raise Program_Error;
!          end if;
        end if;
!    end Results_Differ;
  
     --------------------------
     -- Reset_Analyzed_Flags --
--- 26371,26639 ----
     --  generated before the next instruction.
  
     function Requires_Transient_Scope (Id : Entity_Id) return Boolean is
!       function Caller_Known_Size_Record (Typ : Entity_Id) return Boolean;
!       --  This is called for untagged records and protected types, with
!       --  nondefaulted discriminants. Returns True if the size of function
!       --  results is known at the call site, False otherwise. Returns False
!       --  if there is a variant part that depends on the discriminants of
!       --  this type, or if there is an array constrained by the discriminants
!       --  of this type. ???Currently, this is overly conservative (the array
!       --  could be nested inside some other record that is constrained by
!       --  nondiscriminants). That is, the recursive calls are too conservative.
  
!       procedure Ensure_Minimum_Decoration (Typ : Entity_Id);
!       --  If Typ is not frozen then add to Typ the minimum decoration required
!       --  by Requires_Transient_Scope to reliably provide its functionality;
!       --  otherwise no action is performed.
  
!       function Large_Max_Size_Mutable (Typ : Entity_Id) return Boolean;
!       --  Returns True if Typ is a nonlimited record with defaulted
!       --  discriminants whose max size makes it unsuitable for allocating on
!       --  the primary stack.
! 
!       ------------------------------
!       -- Caller_Known_Size_Record --
!       ------------------------------
! 
!       function Caller_Known_Size_Record (Typ : Entity_Id) return Boolean is
!          pragma Assert (Typ = Underlying_Type (Typ));
  
        begin
!          if Has_Variant_Part (Typ) and then not Is_Definite_Subtype (Typ) then
!             return False;
!          end if;
  
!          declare
!             Comp : Entity_Id;
! 
!          begin
!             Comp := First_Component (Typ);
!             while Present (Comp) loop
! 
!                --  Only look at E_Component entities. No need to look at
!                --  E_Discriminant entities, and we must ignore internal
!                --  subtypes generated for constrained components.
! 
!                declare
!                   Comp_Type : constant Entity_Id :=
!                                 Underlying_Type (Etype (Comp));
! 
!                begin
!                   if Is_Record_Type (Comp_Type)
!                         or else
!                      Is_Protected_Type (Comp_Type)
!                   then
!                      if not Caller_Known_Size_Record (Comp_Type) then
!                         return False;
!                      end if;
! 
!                   elsif Is_Array_Type (Comp_Type) then
!                      if Size_Depends_On_Discriminant (Comp_Type) then
!                         return False;
!                      end if;
!                   end if;
!                end;
! 
!                Next_Component (Comp);
!             end loop;
!          end;
! 
!          return True;
!       end Caller_Known_Size_Record;
! 
!       -------------------------------
!       -- Ensure_Minimum_Decoration --
!       -------------------------------
! 
!       procedure Ensure_Minimum_Decoration (Typ : Entity_Id) is
!          Comp : Entity_Id;
!       begin
!          --  Do not set Has_Controlled_Component on a class-wide equivalent
!          --  type. See Make_CW_Equivalent_Type.
! 
!          if Present (Typ)
!            and then not Is_Frozen (Typ)
!            and then (Is_Record_Type (Typ)
!                        or else Is_Concurrent_Type (Typ)
!                        or else Is_Incomplete_Or_Private_Type (Typ))
!            and then not Is_Class_Wide_Equivalent_Type (Typ)
!          then
!             Comp := First_Component (Typ);
!             while Present (Comp) loop
!                if Has_Controlled_Component (Etype (Comp))
!                  or else
!                    (Chars (Comp) /= Name_uParent
!                       and then Is_Controlled (Etype (Comp)))
!                  or else
!                    (Is_Protected_Type (Etype (Comp))
!                       and then
!                         Present (Corresponding_Record_Type (Etype (Comp)))
!                       and then
!                         Has_Controlled_Component
!                           (Corresponding_Record_Type (Etype (Comp))))
!                then
!                   Set_Has_Controlled_Component (Typ);
!                   exit;
!                end if;
! 
!                Next_Component (Comp);
!             end loop;
           end if;
+       end Ensure_Minimum_Decoration;
  
!       ------------------------------
!       -- Large_Max_Size_Mutable --
!       ------------------------------
! 
!       function Large_Max_Size_Mutable (Typ : Entity_Id) return Boolean is
!          pragma Assert (Typ = Underlying_Type (Typ));
! 
!          function Is_Large_Discrete_Type (T : Entity_Id) return Boolean;
!          --  Returns true if the discrete type T has a large range
! 
!          ----------------------------
!          -- Is_Large_Discrete_Type --
!          ----------------------------
! 
!          function Is_Large_Discrete_Type (T : Entity_Id) return Boolean is
!             Threshold : constant Int := 16;
!             --  Arbitrary threshold above which we consider it "large". We want
!             --  a fairly large threshold, because these large types really
!             --  shouldn't have default discriminants in the first place, in
!             --  most cases.
! 
!          begin
!             return UI_To_Int (RM_Size (T)) > Threshold;
!          end Is_Large_Discrete_Type;
! 
!       --  Start of processing for Large_Max_Size_Mutable
! 
!       begin
!          if Is_Record_Type (Typ)
!            and then not Is_Limited_View (Typ)
!            and then Has_Defaulted_Discriminants (Typ)
!          then
!             --  Loop through the components, looking for an array whose upper
!             --  bound(s) depends on discriminants, where both the subtype of
!             --  the discriminant and the index subtype are too large.
! 
!             declare
!                Comp : Entity_Id;
! 
!             begin
!                Comp := First_Component (Typ);
!                while Present (Comp) loop
!                   declare
!                      Comp_Type : constant Entity_Id :=
!                                    Underlying_Type (Etype (Comp));
! 
!                      Hi   : Node_Id;
!                      Indx : Node_Id;
!                      Ityp : Entity_Id;
! 
!                   begin
!                      if Is_Array_Type (Comp_Type) then
!                         Indx := First_Index (Comp_Type);
! 
!                         while Present (Indx) loop
!                            Ityp := Etype (Indx);
!                            Hi := Type_High_Bound (Ityp);
! 
!                            if Nkind (Hi) = N_Identifier
!                              and then Ekind (Entity (Hi)) = E_Discriminant
!                              and then Is_Large_Discrete_Type (Ityp)
!                              and then Is_Large_Discrete_Type
!                                         (Etype (Entity (Hi)))
!                            then
!                               return True;
!                            end if;
! 
!                            Next_Index (Indx);
!                         end loop;
!                      end if;
!                   end;
! 
!                   Next_Component (Comp);
!                end loop;
!             end;
           end if;
  
!          return False;
!       end Large_Max_Size_Mutable;
  
!       --  Local declarations
! 
!       Typ : constant Entity_Id := Underlying_Type (Id);
! 
!    --  Start of processing for Requires_Transient_Scope
  
     begin
!       Ensure_Minimum_Decoration (Id);
  
!       --  This is a private type which is not completed yet. This can only
!       --  happen in a default expression (of a formal parameter or of a
!       --  record component). Do not expand transient scope in this case.
! 
!       if No (Typ) then
!          return False;
! 
!       --  Do not expand transient scope for non-existent procedure return or
!       --  string literal types.
! 
!       elsif Typ = Standard_Void_Type
!         or else Ekind (Typ) = E_String_Literal_Subtype
!       then
!          return False;
! 
!       --  If Typ is a generic formal incomplete type, then we want to look at
!       --  the actual type.
! 
!       elsif Ekind (Typ) = E_Record_Subtype
!         and then Present (Cloned_Subtype (Typ))
!       then
!          return Requires_Transient_Scope (Cloned_Subtype (Typ));
! 
!       --  Functions returning specific tagged types may dispatch on result, so
!       --  their returned value is allocated on the secondary stack, even in the
!       --  definite case. We must treat nondispatching functions the same way,
!       --  because access-to-function types can point at both, so the calling
!       --  conventions must be compatible. Is_Tagged_Type includes controlled
!       --  types and class-wide types. Controlled type temporaries need
!       --  finalization.
! 
!       --  ???It's not clear why we need to return noncontrolled types with
!       --  controlled components on the secondary stack.
! 
!       elsif Is_Tagged_Type (Typ) or else Has_Controlled_Component (Typ) then
!          return True;
! 
!       --  Untagged definite subtypes are known size. This includes all
!       --  elementary [sub]types. Tasks are known size even if they have
!       --  discriminants. So we return False here, with one exception:
!       --  For a type like:
!       --    type T (Last : Natural := 0) is
!       --       X : String (1 .. Last);
!       --    end record;
!       --  we return True. That's because for "P(F(...));", where F returns T,
!       --  we don't know the size of the result at the call site, so if we
!       --  allocated it on the primary stack, we would have to allocate the
!       --  maximum size, which is way too big.
! 
!       elsif Is_Definite_Subtype (Typ) or else Is_Task_Type (Typ) then
!          return Large_Max_Size_Mutable (Typ);
! 
!       --  Indefinite (discriminated) untagged record or protected type
! 
!       elsif Is_Record_Type (Typ) or else Is_Protected_Type (Typ) then
!          return not Caller_Known_Size_Record (Typ);
! 
!       --  Unconstrained array
! 
!       else
!          pragma Assert (Is_Array_Type (Typ) and not Is_Definite_Subtype (Typ));
!          return True;
        end if;
!    end Requires_Transient_Scope;
  
     --------------------------
     -- Reset_Analyzed_Flags --
*************** package body Sem_Util is
*** 24500,24522 ****
     is
     begin
        --  The only entities for which we track constant values are variables
!       --  which are not renamings, constants, out parameters, and in out
!       --  parameters, so check if we have this case.
  
        --  Note: it may seem odd to track constant values for constants, but in
        --  fact this routine is used for other purposes than simply capturing
!       --  the value. In particular, the setting of Known[_Non]_Null.
  
        if (Ekind (Ent) = E_Variable and then No (Renamed_Object (Ent)))
!             or else
!           Ekind_In (Ent, E_Constant, E_Out_Parameter, E_In_Out_Parameter)
        then
           null;
  
!       --  For conditionals, we also allow loop parameters and all formals,
!       --  including in parameters.
  
!       elsif Cond and then Ekind_In (Ent, E_Loop_Parameter, E_In_Parameter) then
           null;
  
        --  For all other cases, not just unsafe, but impossible to capture
--- 26721,26745 ----
     is
     begin
        --  The only entities for which we track constant values are variables
!       --  which are not renamings, constants and formal parameters, so check
!       --  if we have this case.
  
        --  Note: it may seem odd to track constant values for constants, but in
        --  fact this routine is used for other purposes than simply capturing
!       --  the value. In particular, the setting of Known[_Non]_Null and
!       --  Is_Known_Valid.
  
        if (Ekind (Ent) = E_Variable and then No (Renamed_Object (Ent)))
!            or else
!          Ekind (Ent) = E_Constant
!            or else
!          Is_Formal (Ent)
        then
           null;
  
!       --  For conditionals, we also allow loop parameters
  
!       elsif Cond and then Ekind (Ent) = E_Loop_Parameter then
           null;
  
        --  For all other cases, not just unsafe, but impossible to capture
*************** package body Sem_Util is
*** 24556,24562 ****
           while R_Scope /= Standard_Standard loop
              exit when R_Scope = E_Scope;
  
!             if not Ekind_In (R_Scope, E_Package, E_Block, E_Loop) then
                 return False;
              else
                 R_Scope := Scope (R_Scope);
--- 26779,26785 ----
           while R_Scope /= Standard_Standard loop
              exit when R_Scope = E_Scope;
  
!             if Ekind (R_Scope) not in E_Package | E_Block | E_Loop then
                 return False;
              else
                 R_Scope := Scope (R_Scope);
*************** package body Sem_Util is
*** 24670,24676 ****
              EN2 : constant Entity_Id := Entity (N2);
           begin
              if Present (EN1) and then Present (EN2)
!               and then (Ekind_In (EN1, E_Variable, E_Constant)
                           or else Is_Formal (EN1))
                and then EN1 = EN2
              then
--- 26893,26899 ----
              EN2 : constant Entity_Id := Entity (N2);
           begin
              if Present (EN1) and then Present (EN2)
!               and then (Ekind (EN1) in E_Variable | E_Constant
                           or else Is_Formal (EN1))
                and then EN1 = EN2
              then
*************** package body Sem_Util is
*** 24730,24735 ****
--- 26953,26971 ----
        end if;
     end Same_Object;
  
+    ---------------------------------
+    -- Same_Or_Aliased_Subprograms --
+    ---------------------------------
+ 
+    function Same_Or_Aliased_Subprograms
+      (S : Entity_Id;
+       E : Entity_Id) return Boolean
+    is
+       Subp_Alias : constant Entity_Id := Alias (S);
+    begin
+       return S = E or else (Present (Subp_Alias) and then Subp_Alias = E);
+    end Same_Or_Aliased_Subprograms;
+ 
     ---------------
     -- Same_Type --
     ---------------
*************** package body Sem_Util is
*** 24960,24967 ****
              Typ : constant Entity_Id := Etype (E);
  
           begin
!             if Ekind_In (Typ, E_Anonymous_Access_Type,
!                               E_Anonymous_Access_Subprogram_Type)
                and then not Has_Convention_Pragma (Typ)
              then
                 Basic_Set_Convention (Typ, Val);
--- 27196,27203 ----
              Typ : constant Entity_Id := Etype (E);
  
           begin
!             if Ekind (Typ) in E_Anonymous_Access_Type
!                             | E_Anonymous_Access_Subprogram_Type
                and then not Has_Convention_Pragma (Typ)
              then
                 Basic_Set_Convention (Typ, Val);
*************** package body Sem_Util is
*** 25099,25105 ****
              begin
                 while Present (Indx) loop
                    Set_Debug_Info_Needed_If_Not_Set (Etype (Indx));
!                   Indx := Next_Index (Indx);
                 end loop;
              end;
  
--- 27335,27341 ----
              begin
                 while Present (Indx) loop
                    Set_Debug_Info_Needed_If_Not_Set (Etype (Indx));
!                   Next_Index (Indx);
                 end loop;
              end;
  
*************** package body Sem_Util is
*** 25166,25171 ****
--- 27402,27418 ----
        end if;
     end Set_Debug_Info_Needed;
  
+    --------------------------------
+    -- Set_Debug_Info_Defining_Id --
+    --------------------------------
+ 
+    procedure Set_Debug_Info_Defining_Id (N : Node_Id) is
+    begin
+       if Comes_From_Source (Defining_Identifier (N)) then
+          Set_Debug_Info_Needed (Defining_Identifier (N));
+       end if;
+    end Set_Debug_Info_Defining_Id;
+ 
     ----------------------------
     -- Set_Entity_With_Checks --
     ----------------------------
*************** package body Sem_Util is
*** 25279,25285 ****
                or else
                  (Present (Scope (Val))
                    and then Is_Implementation_Defined (Scope (Val))))
!            and then not (Ekind_In (Val, E_Package, E_Generic_Package)
                            and then Is_Library_Level_Entity (Val))
           then
              Check_Restriction (No_Implementation_Identifiers, Post_Node);
--- 27526,27532 ----
                or else
                  (Present (Scope (Val))
                    and then Is_Implementation_Defined (Scope (Val))))
!            and then not (Is_Package_Or_Generic_Package (Val)
                            and then Is_Library_Level_Entity (Val))
           then
              Check_Restriction (No_Implementation_Identifiers, Post_Node);
*************** package body Sem_Util is
*** 25322,25329 ****
              Style.Check_Identifier (Nod, Val_Actual);
           end if;
        end if;
- 
-       Set_Entity (N, Val);
     end Set_Entity_With_Checks;
  
     ------------------------------
--- 27569,27574 ----
*************** package body Sem_Util is
*** 25418,25425 ****
              if No (N) then
                 return False;
  
!             elsif Nkind_In (N, N_Handled_Sequence_Of_Statements,
!                                N_If_Statement)
              then
                 return True;
              end if;
--- 27663,27670 ----
              if No (N) then
                 return False;
  
!             elsif Nkind (N) in
!                     N_Handled_Sequence_Of_Statements | N_If_Statement
              then
                 return True;
              end if;
*************** package body Sem_Util is
*** 25445,25452 ****
        --  never needs to be made public and furthermore, making it public can
        --  cause back end problems.
  
!       elsif Nkind_In (Parent (Id), N_Object_Declaration,
!                                    N_Function_Specification)
          and then Within_HSS_Or_If (Id)
        then
           return;
--- 27690,27697 ----
        --  never needs to be made public and furthermore, making it public can
        --  cause back end problems.
  
!       elsif Nkind (Parent (Id)) in
!               N_Object_Declaration | N_Function_Specification
          and then Within_HSS_Or_If (Id)
        then
           return;
*************** package body Sem_Util is
*** 25478,25484 ****
     begin
        --  Deal with indexed or selected component where prefix is modified
  
!       if Nkind_In (N, N_Indexed_Component, N_Selected_Component) then
           Pref := Prefix (N);
  
           --  If prefix is access type, then it is the designated object that is
--- 27723,27729 ----
     begin
        --  Deal with indexed or selected component where prefix is modified
  
!       if Nkind (N) in N_Indexed_Component | N_Selected_Component then
           Pref := Prefix (N);
  
           --  If prefix is access type, then it is the designated object that is
*************** package body Sem_Util is
*** 25643,25648 ****
--- 27888,27921 ----
        end if;
     end Static_Integer;
  
+    -------------------------------
+    -- Statically_Denotes_Entity --
+    -------------------------------
+    function Statically_Denotes_Entity (N : Node_Id) return Boolean is
+       E : Entity_Id;
+    begin
+       if not Is_Entity_Name (N) then
+          return False;
+       else
+          E := Entity (N);
+       end if;
+ 
+       return
+         Nkind (Parent (E)) /= N_Object_Renaming_Declaration
+           or else Is_Prival (E)
+           or else Statically_Denotes_Entity (Renamed_Object (E));
+    end Statically_Denotes_Entity;
+ 
+    -------------------------------
+    -- Statically_Denotes_Object --
+    -------------------------------
+ 
+    function Statically_Denotes_Object (N : Node_Id) return Boolean is
+    begin
+       return Statically_Denotes_Entity (N)
+          and then Is_Object_Reference (N);
+    end Statically_Denotes_Object;
+ 
     --------------------------
     -- Statically_Different --
     --------------------------
*************** package body Sem_Util is
*** 25658,25663 ****
--- 27931,28092 ----
          and then not Is_Formal (Entity (R2));
     end Statically_Different;
  
+    -----------------------------
+    -- Statically_Names_Object --
+    -----------------------------
+ 
+    function Statically_Names_Object (N : Node_Id) return Boolean is
+    begin
+       if Statically_Denotes_Object (N) then
+          return True;
+       elsif Is_Entity_Name (N) then
+          declare
+             E : constant Entity_Id := Entity (N);
+          begin
+             return Nkind (Parent (E)) = N_Object_Renaming_Declaration
+               and then Statically_Names_Object (Renamed_Object (E));
+          end;
+       end if;
+ 
+       case Nkind (N) is
+          when N_Indexed_Component =>
+             if Is_Access_Type (Etype (Prefix (N))) then
+                --  treat implicit dereference same as explicit
+                return False;
+             end if;
+ 
+             if not Is_Constrained (Etype (Prefix (N))) then
+                return False;
+             end if;
+ 
+             declare
+                Indx : Node_Id := First_Index (Etype (Prefix (N)));
+                Expr : Node_Id := First (Expressions (N));
+                Index_Subtype : Node_Id;
+             begin
+                loop
+                   Index_Subtype := Etype (Indx);
+ 
+                   if not Is_Static_Subtype (Index_Subtype) then
+                      return False;
+                   end if;
+                   if not Is_OK_Static_Expression (Expr) then
+                      return False;
+                   end if;
+ 
+                   declare
+                      Index_Value : constant Uint := Expr_Value (Expr);
+                      Low_Value   : constant Uint :=
+                        Expr_Value (Type_Low_Bound (Index_Subtype));
+                      High_Value   : constant Uint :=
+                        Expr_Value (Type_High_Bound (Index_Subtype));
+                   begin
+                      if (Index_Value < Low_Value)
+                        or (Index_Value > High_Value)
+                      then
+                         return False;
+                      end if;
+                   end;
+ 
+                   Next_Index (Indx);
+                   Expr := Next (Expr);
+                   pragma Assert ((Present (Indx) = Present (Expr))
+                     or else (Serious_Errors_Detected > 0));
+                   exit when not (Present (Indx) and Present (Expr));
+                end loop;
+             end;
+ 
+          when N_Selected_Component =>
+             if Is_Access_Type (Etype (Prefix (N))) then
+                --  treat implicit dereference same as explicit
+                return False;
+             end if;
+ 
+             if Ekind (Entity (Selector_Name (N))) not in
+                  E_Component | E_Discriminant
+             then
+                return False;
+             end if;
+ 
+             declare
+                Comp : constant Entity_Id :=
+                  Original_Record_Component (Entity (Selector_Name (N)));
+             begin
+               --  AI12-0373 confirms that we should not call
+               --  Has_Discriminant_Dependent_Constraint here which would be
+               --  too strong.
+ 
+                if Is_Declared_Within_Variant (Comp) then
+                   return False;
+                end if;
+             end;
+ 
+          when others => -- includes N_Slice, N_Explicit_Dereference
+             return False;
+       end case;
+ 
+       pragma Assert (Present (Prefix (N)));
+ 
+       return Statically_Names_Object (Prefix (N));
+    end Statically_Names_Object;
+ 
+    ---------------------------------
+    -- String_From_Numeric_Literal --
+    ---------------------------------
+ 
+    function String_From_Numeric_Literal (N : Node_Id) return String_Id is
+       Loc     : constant Source_Ptr        := Sloc (N);
+       Sbuffer : constant Source_Buffer_Ptr :=
+                   Source_Text (Get_Source_File_Index (Loc));
+       Src_Ptr : Source_Ptr := Loc;
+ 
+       C : Character  := Sbuffer (Src_Ptr);
+       --  Current source program character
+ 
+       function Belongs_To_Numeric_Literal (C : Character) return Boolean;
+       --  Return True if C belongs to the numeric literal
+ 
+       --------------------------------
+       -- Belongs_To_Numeric_Literal --
+       --------------------------------
+ 
+       function Belongs_To_Numeric_Literal (C : Character) return Boolean is
+       begin
+          case C is
+             when '0' .. '9'
+                | '_' | '.' | 'e' | '#' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F'
+             =>
+                return True;
+ 
+             --  Make sure '+' or '-' is part of an exponent
+ 
+             when '+' | '-' =>
+                declare
+                   Prev_C : constant Character := Sbuffer (Src_Ptr - 1);
+                begin
+                   return Prev_C = 'e' or else Prev_C = 'E';
+                end;
+ 
+             --  Other characters cannot belong to a numeric literal
+ 
+             when others =>
+                return False;
+          end case;
+       end Belongs_To_Numeric_Literal;
+ 
+    --  Start of processing for String_From_Numeric_Literal
+ 
+    begin
+       Start_String;
+       while Belongs_To_Numeric_Literal (C) loop
+          Store_String_Char (C);
+          Src_Ptr := Src_Ptr + 1;
+          C       := Sbuffer (Src_Ptr);
+       end loop;
+ 
+       return End_String;
+    end String_From_Numeric_Literal;
+ 
     --------------------------------------
     -- Subject_To_Loop_Entry_Attributes --
     --------------------------------------
*************** package body Sem_Util is
*** 25672,25678 ****
        --  'Loop_Entry attribute into a conditional block. Infinite loops lack
        --  the conditional part.
  
!       if Nkind_In (Stmt, N_Block_Statement, N_If_Statement)
          and then Nkind (Original_Node (N)) = N_Loop_Statement
        then
           Stmt := Original_Node (N);
--- 28101,28107 ----
        --  'Loop_Entry attribute into a conditional block. Infinite loops lack
        --  the conditional part.
  
!       if Nkind (Stmt) in N_Block_Statement | N_If_Statement
          and then Nkind (Original_Node (N)) = N_Loop_Statement
        then
           Stmt := Original_Node (N);
*************** package body Sem_Util is
*** 26334,26343 ****
  
     begin
        Pref := N;
!       while Nkind_In (Pref, N_Explicit_Dereference,
!                             N_Indexed_Component,
!                             N_Selected_Component,
!                             N_Slice)
        loop
           Pref := Prefix (Pref);
        end loop;
--- 28763,28772 ----
  
     begin
        Pref := N;
!       while Nkind (Pref) in N_Explicit_Dereference
!                           | N_Indexed_Component
!                           | N_Selected_Component
!                           | N_Slice
        loop
           Pref := Prefix (Pref);
        end loop;
*************** package body Sem_Util is
*** 26808,26816 ****
        --  Recurse to handle unlikely case of multiple levels of qualification
        --  and/or conversion.
  
!       if Nkind_In (Expr, N_Qualified_Expression,
!                          N_Type_Conversion,
!                          N_Unchecked_Type_Conversion)
        then
           return Unqual_Conv (Expression (Expr));
  
--- 29237,29245 ----
        --  Recurse to handle unlikely case of multiple levels of qualification
        --  and/or conversion.
  
!       if Nkind (Expr) in N_Qualified_Expression
!                        | N_Type_Conversion
!                        | N_Unchecked_Type_Conversion
        then
           return Unqual_Conv (Expression (Expr));
  
*************** package body Sem_Util is
*** 26964,26972 ****
  
        Par := N;
        while Present (Par) loop
!          if Nkind_In (Par, N_Entry_Call_Statement,
!                            N_Function_Call,
!                            N_Procedure_Call_Statement)
           then
              return True;
  
--- 29393,29401 ----
  
        Par := N;
        while Present (Par) loop
!          if Nkind (Par) in N_Entry_Call_Statement
!                          | N_Function_Call
!                          | N_Procedure_Call_Statement
           then
              return True;
  
*************** package body Sem_Util is
*** 27040,27047 ****
                 if No (E) then
                    return False;
  
!                elsif not Ekind_In (E, E_Discriminant, E_Component)
!                  or else Nam_In (Chars (E), Name_uTag, Name_uParent)
                 then
                    Next_Entity (E);
  
--- 29469,29476 ----
                 if No (E) then
                    return False;
  
!                elsif Ekind (E) not in E_Discriminant | E_Component
!                  or else Chars (E) in Name_uTag | Name_uParent
                 then
                    Next_Entity (E);
  
*************** package body Sem_Util is
*** 27096,27107 ****
        then
           return;
  
!       --  In  an instance, there is an ongoing problem with completion of
        --  types derived from private types. Their structure is what Gigi
!       --  expects, but the  Etype is the parent type rather than the
!       --  derived private type itself. Do not flag error in this case. The
!       --  private completion is an entity without a parent, like an Itype.
!       --  Similarly, full and partial views may be incorrect in the instance.
        --  There is no simple way to insure that it is consistent ???
  
        --  A similar view discrepancy can happen in an inlined body, for the
--- 29525,29536 ----
        then
           return;
  
!       --  In an instance, there is an ongoing problem with completion of
        --  types derived from private types. Their structure is what Gigi
!       --  expects, but the Etype is the parent type rather than the derived
!       --  private type itself. Do not flag error in this case. The private
!       --  completion is an entity without a parent, like an Itype. Similarly,
!       --  full and partial views may be incorrect in the instance.
        --  There is no simple way to insure that it is consistent ???
  
        --  A similar view discrepancy can happen in an inlined body, for the
*************** package body Sem_Util is
*** 27181,27190 ****
          and then Covers
            (Designated_Type (Expec_Type), Designated_Type (Found_Type))
        then
!          Error_Msg_N -- CODEFIX
             ("result must be general access type!", Expr);
           Error_Msg_NE -- CODEFIX
!            ("add ALL to }!", Expr, Expec_Type);
  
        --  Another special check, if the expected type is an integer type,
        --  but the expression is of type System.Address, and the parent is
--- 29610,29619 ----
          and then Covers
            (Designated_Type (Expec_Type), Designated_Type (Found_Type))
        then
!          Error_Msg_N
             ("result must be general access type!", Expr);
           Error_Msg_NE -- CODEFIX
!            ("\add ALL to }!", Expr, Expec_Type);
  
        --  Another special check, if the expected type is an integer type,
        --  but the expression is of type System.Address, and the parent is
*************** package body Sem_Util is
*** 27195,27201 ****
  
        elsif Is_Integer_Type (Expec_Type)
          and then Is_RTE (Found_Type, RE_Address)
!         and then Nkind_In (Parent (Expr), N_Op_Add, N_Op_Subtract)
          and then Expr = Left_Opnd (Parent (Expr))
          and then Is_Integer_Type (Etype (Right_Opnd (Parent (Expr))))
        then
--- 29624,29630 ----
  
        elsif Is_Integer_Type (Expec_Type)
          and then Is_RTE (Found_Type, RE_Address)
!         and then Nkind (Parent (Expr)) in N_Op_Add | N_Op_Subtract
          and then Expr = Left_Opnd (Parent (Expr))
          and then Is_Integer_Type (Etype (Right_Opnd (Parent (Expr))))
        then
*************** package body Sem_Util is
*** 27285,27291 ****
              Error_Msg_N ("\\found package name!", Expr);
  
           elsif Is_Entity_Name (Expr)
!            and then Ekind_In (Entity (Expr), E_Procedure, E_Generic_Procedure)
           then
              if Ekind (Expec_Type) = E_Access_Subprogram_Type then
                 Error_Msg_N
--- 29714,29720 ----
              Error_Msg_N ("\\found package name!", Expr);
  
           elsif Is_Entity_Name (Expr)
!            and then Ekind (Entity (Expr)) in E_Procedure | E_Generic_Procedure
           then
              if Ekind (Expec_Type) = E_Access_Subprogram_Type then
                 Error_Msg_N
*************** package body Sem_Util is
*** 27333,27339 ****
  
           if Expec_Type = Standard_Boolean
             and then Is_Modular_Integer_Type (Found_Type)
!            and then Nkind_In (Parent (Expr), N_Op_And, N_Op_Or, N_Op_Xor)
             and then Nkind (Right_Opnd (Parent (Expr))) in N_Op_Compare
           then
              declare
--- 29762,29768 ----
  
           if Expec_Type = Standard_Boolean
             and then Is_Modular_Integer_Type (Found_Type)
!            and then Nkind (Parent (Expr)) in N_Op_And | N_Op_Or | N_Op_Xor
             and then Nkind (Right_Opnd (Parent (Expr))) in N_Op_Compare
           then
              declare
*************** package body Sem_Util is
*** 27472,27478 ****
     begin
        --  Integer and real literals are of a universal type
  
!       if Nkind_In (N, N_Integer_Literal, N_Real_Literal) then
           return True;
  
        --  The values of certain attributes are of a universal type
--- 29901,29907 ----
     begin
        --  Integer and real literals are of a universal type
  
!       if Nkind (N) in N_Integer_Literal | N_Real_Literal then
           return True;
  
        --  The values of certain attributes are of a universal type
*************** package body Sem_Util is
*** 27490,27515 ****
  
     package body Interval_Lists is
  
        function In_Interval
          (Value : Uint; Interval : Discrete_Interval) return Boolean;
        --  Does the given value lie within the given interval?
  
!       -----------------
!       -- In_Interval --
!       -----------------
!       function In_Interval
!         (Value : Uint; Interval : Discrete_Interval) return Boolean is
        begin
!          return Value >= Interval.Low and then Value <= Interval.High;
!       end In_Interval;
  
!       procedure Check_Consistency (Intervals : Discrete_Interval_List);
!       --  Check that list is sorted, lacks null intervals, and has gaps
!       --  between intervals.
  
        ------------------------
        --  Check_Consistency --
        ------------------------
        procedure Check_Consistency (Intervals : Discrete_Interval_List) is
        begin
           if Serious_Errors_Detected > 0 then
--- 29919,30031 ----
  
     package body Interval_Lists is
  
+       procedure Check_Consistency (Intervals : Discrete_Interval_List);
+       --  Check that list is sorted, lacks null intervals, and has gaps
+       --  between intervals.
+ 
+       function Chosen_Interval (Choice : Node_Id) return Discrete_Interval;
+       --  Given an element of a Discrete_Choices list, a
+       --  Static_Discrete_Predicate list, or an Others_Discrete_Choices
+       --  list (but not an N_Others_Choice node) return the corresponding
+       --  interval. If an element that does not represent a single
+       --  contiguous interval due to a static predicate (or which
+       --  represents a single contiguous interval whose bounds depend on
+       --  a static predicate) is encountered, then that is an error on the
+       --  part of whoever built the list in question.
+ 
        function In_Interval
          (Value : Uint; Interval : Discrete_Interval) return Boolean;
        --  Does the given value lie within the given interval?
  
!       procedure Normalize_Interval_List
!          (List : in out Discrete_Interval_List; Last : out Nat);
!       --  Perform sorting and merging as required by Check_Consistency.
! 
!       -------------------------
!       -- Aggregate_Intervals --
!       -------------------------
! 
!       function Aggregate_Intervals (N : Node_Id) return Discrete_Interval_List
!       is
!          pragma Assert (Nkind (N) = N_Aggregate
!            and then Is_Array_Type (Etype (N)));
! 
!          function Unmerged_Intervals_Count return Nat;
!          --  Count the number of intervals given in the aggregate N; the others
!          --  choice (if present) is not taken into account.
! 
!          function Unmerged_Intervals_Count return Nat is
!             Count  : Nat := 0;
!             Choice : Node_Id;
!             Comp   : Node_Id;
!          begin
!             Comp := First (Component_Associations (N));
!             while Present (Comp) loop
!                Choice := First (Choices (Comp));
! 
!                while Present (Choice) loop
!                   if Nkind (Choice) /= N_Others_Choice then
!                      Count := Count + 1;
!                   end if;
! 
!                   Next (Choice);
!                end loop;
! 
!                Next (Comp);
!             end loop;
! 
!             return Count;
!          end Unmerged_Intervals_Count;
! 
!          --  Local variables
! 
!          Comp      : Node_Id;
!          Max_I     : constant Nat := Unmerged_Intervals_Count;
!          Intervals : Discrete_Interval_List (1 .. Max_I);
!          Num_I     : Nat := 0;
! 
!       --  Start of processing for Aggregate_Intervals
! 
        begin
!          --  No action needed if there are no intervals
  
!          if Max_I = 0 then
!             return Intervals;
!          end if;
! 
!          --  Internally store all the unsorted intervals
! 
!          Comp := First (Component_Associations (N));
!          while Present (Comp) loop
!             declare
!                Choice_Intervals : constant Discrete_Interval_List
!                  := Choice_List_Intervals (Choices (Comp));
!             begin
!                for J in Choice_Intervals'Range loop
!                   Num_I := Num_I + 1;
!                   Intervals (Num_I) := Choice_Intervals (J);
!                end loop;
!             end;
! 
!             Next (Comp);
!          end loop;
! 
!          --  Normalize the lists sorting and merging the intervals
! 
!          declare
!             Aggr_Intervals : Discrete_Interval_List (1 .. Num_I)
!                                := Intervals (1 .. Num_I);
!          begin
!             Normalize_Interval_List (Aggr_Intervals, Num_I);
!             Check_Consistency (Aggr_Intervals (1 .. Num_I));
!             return Aggr_Intervals (1 .. Num_I);
!          end;
!       end Aggregate_Intervals;
  
        ------------------------
        --  Check_Consistency --
        ------------------------
+ 
        procedure Check_Consistency (Intervals : Discrete_Interval_List) is
        begin
           if Serious_Errors_Detected > 0 then
*************** package body Sem_Util is
*** 27530,27548 ****
           end loop;
        end Check_Consistency;
  
!       function Chosen_Interval (Choice : Node_Id) return Discrete_Interval;
!       --  Given an element of a Discrete_Choices list, a
!       --  Static_Discrete_Predicate list, or an Others_Discrete_Choices
!       --  list (but not an N_Others_Choice node) return the corresponding
!       --  interval. If an element that does not represent a single
!       --  contiguous interval due to a static predicate (or which
!       --  represents a single contiguous interval whose bounds depend on
!       --  a static predicate) is encountered, then that is an error on the
!       --  part of whoever built the list in question.
  
        ---------------------
        -- Chosen_Interval --
        ---------------------
        function Chosen_Interval (Choice : Node_Id) return Discrete_Interval is
        begin
           case Nkind (Choice) is
--- 30046,30124 ----
           end loop;
        end Check_Consistency;
  
!       ---------------------------
!       -- Choice_List_Intervals --
!       ---------------------------
! 
!       function Choice_List_Intervals
!         (Discrete_Choices : List_Id) return Discrete_Interval_List
!       is
!          function Unmerged_Choice_Count return Nat;
!          --  The number of intervals before adjacent intervals are merged.
! 
!          ---------------------------
!          -- Unmerged_Choice_Count --
!          ---------------------------
! 
!          function Unmerged_Choice_Count return Nat is
!             Choice : Node_Id := First (Discrete_Choices);
!             Count  : Nat := 0;
!          begin
!             while Present (Choice) loop
!                --  Non-contiguous choices involving static predicates
!                --  have already been normalized away.
! 
!                if Nkind (Choice) = N_Others_Choice then
!                   Count :=
!                     Count + List_Length (Others_Discrete_Choices (Choice));
!                else
!                   Count := Count + 1;  -- an ordinary expression or range
!                end if;
! 
!                Next (Choice);
!             end loop;
!             return Count;
!          end Unmerged_Choice_Count;
! 
!          --  Local variables
! 
!          Choice : Node_Id := First (Discrete_Choices);
!          Result : Discrete_Interval_List (1 .. Unmerged_Choice_Count);
!          Count  : Nat := 0;
! 
!       --  Start of processing for Choice_List_Intervals
! 
!       begin
!          while Present (Choice) loop
!             if Nkind (Choice) = N_Others_Choice then
!                declare
!                   Others_Choice : Node_Id
!                     := First (Others_Discrete_Choices (Choice));
!                begin
!                   while Present (Others_Choice) loop
!                      Count := Count + 1;
!                      Result (Count) := Chosen_Interval (Others_Choice);
!                      Next (Others_Choice);
!                   end loop;
!                end;
!             else
!                Count := Count + 1;
!                Result (Count) := Chosen_Interval (Choice);
!             end if;
! 
!             Next (Choice);
!          end loop;
! 
!          pragma Assert (Count = Result'Last);
!          Normalize_Interval_List (Result, Count);
!          Check_Consistency (Result (1 .. Count));
!          return Result (1 .. Count);
!       end Choice_List_Intervals;
  
        ---------------------
        -- Chosen_Interval --
        ---------------------
+ 
        function Chosen_Interval (Choice : Node_Id) return Discrete_Interval is
        begin
           case Nkind (Choice) is
*************** package body Sem_Util is
*** 27575,27671 ****
           end case;
        end Chosen_Interval;
  
!       --------------------
!       -- Type_Intervals --
!       --------------------
!       function Type_Intervals
!         (Typ : Entity_Id) return Discrete_Interval_List
        is
        begin
!          if Has_Static_Predicate (Typ) then
!             declare
!                --  No sorting or merging needed
!                SDP_List : constant List_Id := Static_Discrete_Predicate (Typ);
!                Range_Or_Expr : Node_Id := First (SDP_List);
!                Result :
!                  Discrete_Interval_List (1 .. List_Length (SDP_List));
!             begin
!                for Idx in Result'Range loop
!                   Result (Idx) := Chosen_Interval (Range_Or_Expr);
!                   Range_Or_Expr := Next (Range_Or_Expr);
                 end loop;
!                pragma Assert (not Present (Range_Or_Expr));
!                Check_Consistency (Result);
!                return Result;
!             end;
!          else
!             declare
!                Low  : constant Uint := Expr_Value (Type_Low_Bound (Typ));
!                High : constant Uint := Expr_Value (Type_High_Bound (Typ));
!             begin
!                if Low > High then
!                   declare
!                      Null_Array : Discrete_Interval_List (1 .. 0);
!                   begin
!                      return Null_Array;
!                   end;
!                else
!                   return (1 => (Low => Low, High => High));
                 end if;
!             end;
!          end if;
!       end Type_Intervals;
  
!       procedure Normalize_Interval_List
!          (List : in out Discrete_Interval_List; Last : out Nat);
!       --  Perform sorting and merging as required by Check_Consistency.
  
        -----------------------------
        -- Normalize_Interval_List --
        -----------------------------
        procedure Normalize_Interval_List
!         (List : in out Discrete_Interval_List; Last : out Nat) is
  
!          procedure Move_Interval (From, To : Natural);
!          --  Copy interval from one location to another
  
           function Lt_Interval (Idx1, Idx2 : Natural) return Boolean;
           --  Compare two list elements
  
!          Temp_0 : Discrete_Interval := (others => Uint_0);
!          --  cope with Heap_Sort_G idiosyncrasies.
  
           function Read_Interval (From : Natural) return Discrete_Interval;
           --  Normal array indexing unless From = 0
  
!          -------------------
!          -- Read_Interval --
!          -------------------
!          function Read_Interval (From : Natural) return Discrete_Interval is
!          begin
!             if From = 0 then
!                return Temp_0;
!             else
!                return List (Pos (From));
!             end if;
!          end Read_Interval;
  
!          -------------------
!          -- Move_Interval --
!          -------------------
!          procedure Move_Interval (From, To : Natural) is
!             Rhs : constant Discrete_Interval := Read_Interval (From);
           begin
!             if To = 0 then
!                Temp_0 := Rhs;
!             else
!                List (Pos (To)) := Rhs;
!             end if;
!          end Move_Interval;
  
           -----------------
           -- Lt_Interval --
           -----------------
           function Lt_Interval (Idx1, Idx2 : Natural) return Boolean is
              Elem1  : constant Discrete_Interval := Read_Interval (Idx1);
              Elem2  : constant Discrete_Interval := Read_Interval (Idx2);
--- 30151,30255 ----
           end case;
        end Chosen_Interval;
  
!       -----------------
!       -- In_Interval --
!       -----------------
! 
!       function In_Interval
!         (Value : Uint; Interval : Discrete_Interval) return Boolean is
!       begin
!          return Value >= Interval.Low and then Value <= Interval.High;
!       end In_Interval;
! 
!       ---------------
!       -- Is_Subset --
!       ---------------
! 
!       function Is_Subset
!         (Subset, Of_Set : Discrete_Interval_List) return Boolean
        is
+          --  Returns True iff for each interval of Subset we can find
+          --  a single interval of Of_Set which contains the Subset interval.
        begin
!          if Of_Set'Length = 0 then
!             return Subset'Length = 0;
!          end if;
! 
!          declare
!             Set_Index : Pos range Of_Set'Range := Of_Set'First;
! 
!          begin
!             for Ss_Idx in Subset'Range loop
!                while not In_Interval
!                  (Value    => Subset (Ss_Idx).Low,
!                   Interval => Of_Set (Set_Index))
!                loop
!                   if Set_Index = Of_Set'Last then
!                      return False;
!                   end if;
! 
!                   Set_Index := Set_Index + 1;
                 end loop;
! 
!                if not In_Interval
!                  (Value    => Subset (Ss_Idx).High,
!                   Interval => Of_Set (Set_Index))
!                then
!                   return False;
                 end if;
!             end loop;
!          end;
  
!          return True;
!       end Is_Subset;
  
        -----------------------------
        -- Normalize_Interval_List --
        -----------------------------
+ 
        procedure Normalize_Interval_List
!         (List : in out Discrete_Interval_List; Last : out Nat)
!       is
!          Temp_0 : Discrete_Interval := (others => Uint_0);
!          --  Cope with Heap_Sort_G idiosyncrasies.
  
!          function Is_Null (Idx : Pos) return Boolean;
!          --  True iff List (Idx) defines a null range
  
           function Lt_Interval (Idx1, Idx2 : Natural) return Boolean;
           --  Compare two list elements
  
!          procedure Merge_Intervals (Null_Interval_Count : out Nat);
!          --  Merge contiguous ranges by replacing one with merged range and
!          --  the other with a null value. Return a count of the null intervals,
!          --  both preexisting and those introduced by merging.
! 
!          procedure Move_Interval (From, To : Natural);
!          --  Copy interval from one location to another
  
           function Read_Interval (From : Natural) return Discrete_Interval;
           --  Normal array indexing unless From = 0
  
!          ----------------------
!          -- Interval_Sorting --
!          ----------------------
  
!          package Interval_Sorting is
!            new Gnat.Heap_Sort_G (Move_Interval, Lt_Interval);
! 
!          -------------
!          -- Is_Null --
!          -------------
! 
!          function Is_Null (Idx : Pos) return Boolean is
           begin
!             return List (Idx).Low > List (Idx).High;
!          end Is_Null;
  
           -----------------
           -- Lt_Interval --
           -----------------
+ 
           function Lt_Interval (Idx1, Idx2 : Natural) return Boolean is
              Elem1  : constant Discrete_Interval := Read_Interval (Idx1);
              Elem2  : constant Discrete_Interval := Read_Interval (Idx2);
*************** package body Sem_Util is
*** 27675,27707 ****
              if Null_1 /= Null_2 then
                 --  So that sorting moves null intervals to high end
                 return Null_2;
              elsif Elem1.Low /= Elem2.Low then
                 return Elem1.Low < Elem2.Low;
              else
                 return Elem1.High < Elem2.High;
              end if;
           end Lt_Interval;
  
-          package Interval_Sorting is
-            new Gnat.Heap_Sort_G (Move_Interval, Lt_Interval);
- 
-          function Is_Null (Idx : Pos) return Boolean;
-          --  True iff List (Idx) defines a null range
- 
-          function Is_Null (Idx : Pos) return Boolean is
-          begin
-             return List (Idx).Low > List (Idx).High;
-          end Is_Null;
- 
-          procedure Merge_Intervals (Null_Interval_Count : out Nat);
-          --  Merge contiguous ranges by replacing one with merged range
-          --  and the other with a null value. Return a count of the
-          --  null intervals, both preexisting and those introduced by
-          --  merging.
- 
           ---------------------
           -- Merge_Intervals --
           ---------------------
           procedure Merge_Intervals (Null_Interval_Count : out Nat) is
              Not_Null : Pos range List'Range;
              --  Index of the most recently examined non-null interval
--- 30259,30277 ----
              if Null_1 /= Null_2 then
                 --  So that sorting moves null intervals to high end
                 return Null_2;
+ 
              elsif Elem1.Low /= Elem2.Low then
                 return Elem1.Low < Elem2.Low;
+ 
              else
                 return Elem1.High < Elem2.High;
              end if;
           end Lt_Interval;
  
           ---------------------
           -- Merge_Intervals --
           ---------------------
+ 
           procedure Merge_Intervals (Null_Interval_Count : out Nat) is
              Not_Null : Pos range List'Range;
              --  Index of the most recently examined non-null interval
*************** package body Sem_Util is
*** 27717,27746 ****
--- 30287,30360 ----
  
              Null_Interval_Count := 0;
              Not_Null := List'First;
+ 
              for Idx in List'First + 1 .. List'Last loop
                 if Is_Null (Idx) then
+ 
                    --  all remaining elements are null
+ 
                    Null_Interval_Count :=
                      Null_Interval_Count + List (Idx .. List'Last)'Length;
                    return;
+ 
                 elsif List (Idx).Low = List (Not_Null).High + 1 then
+ 
                    --  Merge the two intervals into one; discard the other
+ 
                    List (Not_Null).High := List (Idx).High;
                    List (Idx) := Null_Interval;
                    Null_Interval_Count := Null_Interval_Count + 1;
+ 
                 else
+                   if List (Idx).Low <= List (Not_Null).High then
+                      raise Intervals_Error;
+                   end if;
+ 
                    pragma Assert (List (Idx).Low > List (Not_Null).High);
                    Not_Null := Idx;
                 end if;
              end loop;
           end Merge_Intervals;
+ 
+          -------------------
+          -- Move_Interval --
+          -------------------
+ 
+          procedure Move_Interval (From, To : Natural) is
+             Rhs : constant Discrete_Interval := Read_Interval (From);
+          begin
+             if To = 0 then
+                Temp_0 := Rhs;
+             else
+                List (Pos (To)) := Rhs;
+             end if;
+          end Move_Interval;
+ 
+          -------------------
+          -- Read_Interval --
+          -------------------
+ 
+          function Read_Interval (From : Natural) return Discrete_Interval is
+          begin
+             if From = 0 then
+                return Temp_0;
+             else
+                return List (Pos (From));
+             end if;
+          end Read_Interval;
+ 
+       --  Start of processing for Normalize_Interval_Lists
+ 
        begin
           Interval_Sorting.Sort (Natural (List'Last));
+ 
           declare
              Null_Interval_Count : Nat;
+ 
           begin
              Merge_Intervals (Null_Interval_Count);
              Last := List'Last - Null_Interval_Count;
+ 
              if Null_Interval_Count /= 0 then
                 --  Move null intervals introduced during merging to high end
                 Interval_Sorting.Sort (Natural (List'Last));
*************** package body Sem_Util is
*** 27748,27854 ****
           end;
        end Normalize_Interval_List;
  
!       ---------------------------
!       -- Choice_List_Intervals --
!       ---------------------------
!       function Choice_List_Intervals
!         (Discrete_Choices : List_Id) return Discrete_Interval_List
        is
!          function Unmerged_Choice_Count return Nat;
!          --  The number of intervals before adjacent intervals are merged.
  
           ---------------------------
!          -- Unmerged_Choice_Count --
           ---------------------------
!          function Unmerged_Choice_Count return Nat is
!             Choice : Node_Id := First (Discrete_Choices);
!             Count  : Nat := 0;
           begin
!             while Present (Choice) loop
!                --  Non-contiguous choices involving static predicates
!                --  have already been normalized away.
  
!                if Nkind (Choice) = N_Others_Choice then
!                   Count :=
!                     Count + List_Length (Others_Discrete_Choices (Choice));
!                else
!                   Count := Count + 1;  -- an ordinary expression or range
!                end if;
  
!                Choice := Next (Choice);
              end loop;
!             return Count;
!          end Unmerged_Choice_Count;
  
!          Choice : Node_Id := First (Discrete_Choices);
!          Result : Discrete_Interval_List (1 .. Unmerged_Choice_Count);
!          Count  : Nat := 0;
!       begin
!          while Present (Choice) loop
!             if Nkind (Choice) = N_Others_Choice then
                 declare
!                   Others_Choice : Node_Id
!                     := First (Others_Discrete_Choices (Choice));
                 begin
!                   while Present (Others_Choice) loop
!                      Count := Count + 1;
!                      Result (Count) := Chosen_Interval (Others_Choice);
!                      Others_Choice := Next (Others_Choice);
                    end loop;
                 end;
!             else
!                Count := Count + 1;
!                Result (Count) := Chosen_Interval (Choice);
              end if;
!             Choice := Next (Choice);
!          end loop;
!          pragma Assert (Count = Result'Last);
!          Normalize_Interval_List (Result, Count);
!          Check_Consistency (Result (1 .. Count));
!          return Result (1 .. Count);
!       end Choice_List_Intervals;
  
!       ---------------
!       -- Is_Subset --
!       ---------------
!       function Is_Subset
!         (Subset, Of_Set : Discrete_Interval_List) return Boolean
!       is
!          --  Returns True iff for each interval of Subset we can find
!          --  a single interval of Of_Set which contains the Subset interval.
!       begin
!          if Of_Set'Length = 0 then
!             return Subset'Length = 0;
!          end if;
  
-          declare
-             Set_Index : Pos range Of_Set'Range := Of_Set'First;
           begin
!             for Ss_Idx in Subset'Range loop
!                while not In_Interval
!                  (Value    => Subset (Ss_Idx).Low,
!                   Interval => Of_Set (Set_Index))
!                loop
!                   if Set_Index = Of_Set'Last then
                       return False;
                    end if;
!                   Set_Index := Set_Index + 1;
                 end loop;
  
!                if not In_Interval
!                  (Value    => Subset (Ss_Idx).High,
!                   Interval => Of_Set (Set_Index))
                 then
!                   return False;
                 end if;
-             end loop;
-          end;
  
!          return True;
!       end Is_Subset;
  
!    end Interval_Lists;
  
  begin
     Erroutc.Subprogram_Name_Ptr := Subprogram_Name'Access;
  end Sem_Util;
--- 30362,31326 ----
           end;
        end Normalize_Interval_List;
  
!       --------------------
!       -- Type_Intervals --
!       --------------------
! 
!       function Type_Intervals (Typ : Entity_Id) return Discrete_Interval_List
        is
!       begin
!          if Has_Static_Predicate (Typ) then
!             declare
!                --  No sorting or merging needed
!                SDP_List : constant List_Id := Static_Discrete_Predicate (Typ);
!                Range_Or_Expr : Node_Id := First (SDP_List);
!                Result : Discrete_Interval_List (1 .. List_Length (SDP_List));
! 
!             begin
!                for Idx in Result'Range loop
!                   Result (Idx) := Chosen_Interval (Range_Or_Expr);
!                   Next (Range_Or_Expr);
!                end loop;
! 
!                pragma Assert (not Present (Range_Or_Expr));
!                Check_Consistency (Result);
!                return Result;
!             end;
!          else
!             declare
!                Low  : constant Uint := Expr_Value (Type_Low_Bound (Typ));
!                High : constant Uint := Expr_Value (Type_High_Bound (Typ));
!             begin
!                if Low > High then
!                   declare
!                      Null_Array : Discrete_Interval_List (1 .. 0);
!                   begin
!                      return Null_Array;
!                   end;
!                else
!                   return (1 => (Low => Low, High => High));
!                end if;
!             end;
!          end if;
!       end Type_Intervals;
! 
!    end Interval_Lists;
! 
!    package body Old_Attr_Util is
!       package body Conditional_Evaluation is
!          type Determining_Expr_Context is
!            (No_Context, If_Expr, Case_Expr, Short_Circuit_Op, Membership_Test);
! 
!          --  Determining_Expr_Context enumeration elements (except for
!          --  No_Context) correspond to the list items in RM 6.1.1 definition
!          --  of "determining expression".
! 
!          type Determining_Expr
!            (Context : Determining_Expr_Context := No_Context)
!          is record
!             Expr : Node_Id := Empty;
!             case Context is
!                when Short_Circuit_Op =>
!                   Is_And_Then         : Boolean;
!                when If_Expr =>
!                   Is_Then_Part        : Boolean;
!                when Case_Expr =>
!                   Alternatives        : Node_Id;
!                when Membership_Test =>
!                   --  Given a subexpression of <exp4> in a membership test
!                   --    <exp1> in <exp2> | <exp3> | <exp4> | <exp5>
!                   --  the corresponding determining expression value would
!                   --  have First_Non_Preceding = <exp4> (See RM 6.1.1).
!                   First_Non_Preceding : Node_Id;
!                when No_Context =>
!                   null;
!             end case;
!          end record;
! 
!          type Determining_Expression_List is
!            array (Positive range <>) of Determining_Expr;
! 
!          function Determining_Condition (Det : Determining_Expr)
!            return Node_Id;
!          --  Given a determining expression, build a Boolean-valued
!          --  condition that incorporates that expression into condition
!          --  suitable for deciding whether to initialize a 'Old constant.
!          --  Polarity is "True => initialize the constant".
! 
!          function Determining_Expressions
!            (Expr : Node_Id; Expr_Trailer : Node_Id := Empty)
!            return Determining_Expression_List;
!          --  Given a conditionally evaluated expression, return its
!          --  determining expressions.
!          --  See RM 6.1.1 for definition of term "determining expressions".
!          --  Tests should be performed in the order they occur in the
!          --  array, with short circuiting.
!          --  A determining expression need not be of a boolean type (e.g.,
!          --  it might be the determining expression of a case expression).
!          --  The Expr_Trailer parameter should be defaulted for nonrecursive
!          --  calls.
! 
!          function Is_Conditionally_Evaluated (Expr : Node_Id) return Boolean;
!          --  See RM 6.1.1 for definition of term "conditionally evaluated".
! 
!          function Is_Known_On_Entry (Expr : Node_Id) return Boolean;
!          --  See RM 6.1.1 for definition of term "known on entry".
! 
!          --------------------------------------
!          -- Conditional_Evaluation_Condition --
!          --------------------------------------
! 
!          function Conditional_Evaluation_Condition
!            (Expr : Node_Id) return Node_Id
!          is
!             Determiners : constant Determining_Expression_List :=
!               Determining_Expressions (Expr);
!             Loc         : constant Source_Ptr := Sloc (Expr);
!             Result      : Node_Id :=
!               New_Occurrence_Of (Standard_True, Loc);
!          begin
!             pragma Assert (Determiners'Length > 0 or else
!                            Is_Anonymous_Access_Type (Etype (Expr)));
! 
!             for I in Determiners'Range loop
!                Result := Make_And_Then
!                           (Loc,
!                            Left_Opnd  => Result,
!                            Right_Opnd =>
!                              Determining_Condition (Determiners (I)));
!             end loop;
!             return Result;
!          end Conditional_Evaluation_Condition;
  
           ---------------------------
!          -- Determining_Condition --
           ---------------------------
! 
!          function Determining_Condition (Det : Determining_Expr) return Node_Id
!          is
!             Loc : constant Source_Ptr := Sloc (Det.Expr);
           begin
!             case Det.Context is
!                when Short_Circuit_Op =>
!                   if Det.Is_And_Then then
!                      return New_Copy_Tree (Det.Expr);
!                   else
!                      return Make_Op_Not (Loc, New_Copy_Tree (Det.Expr));
!                   end if;
  
!                when If_Expr =>
!                   if Det.Is_Then_Part then
!                      return New_Copy_Tree (Det.Expr);
!                   else
!                      return Make_Op_Not (Loc, New_Copy_Tree (Det.Expr));
!                   end if;
  
!                when Case_Expr =>
!                   declare
!                      Alts : List_Id := Discrete_Choices (Det.Alternatives);
!                   begin
!                      if Nkind (First (Alts)) = N_Others_Choice then
!                         Alts := Others_Discrete_Choices (First (Alts));
!                      end if;
! 
!                      return Make_In (Loc,
!                        Left_Opnd    => New_Copy_Tree (Det.Expr),
!                        Right_Opnd   => Empty,
!                        Alternatives => New_Copy_List (Alts));
!                   end;
! 
!                when Membership_Test =>
!                   declare
!                      function Copy_Prefix
!                        (List : List_Id; Suffix_Start : Node_Id)
!                        return List_Id;
!                      --  Given a list and a member of that list, returns
!                      --  a copy (similar to Nlists.New_Copy_List) of the
!                      --  prefix of the list up to but not including
!                      --  Suffix_Start.
! 
!                      -----------------
!                      -- Copy_Prefix --
!                      -----------------
! 
!                      function Copy_Prefix
!                        (List : List_Id; Suffix_Start : Node_Id)
!                        return List_Id
!                      is
!                         Result : constant List_Id := New_List;
!                         Elem   : Node_Id := First (List);
!                      begin
!                         while Elem /= Suffix_Start loop
!                            Append (New_Copy (Elem), Result);
!                            Next (Elem);
!                            pragma Assert (Present (Elem));
!                         end loop;
!                         return Result;
!                      end Copy_Prefix;
! 
!                   begin
!                      return Make_In (Loc,
!                        Left_Opnd    => New_Copy_Tree (Left_Opnd (Det.Expr)),
!                        Right_Opnd   => Empty,
!                        Alternatives => Copy_Prefix
!                                          (Alternatives (Det.Expr),
!                                           Det.First_Non_Preceding));
!                   end;
! 
!                when No_Context =>
!                   raise Program_Error;
!             end case;
!          end Determining_Condition;
! 
!          -----------------------------
!          -- Determining_Expressions --
!          -----------------------------
! 
!          function Determining_Expressions
!            (Expr : Node_Id; Expr_Trailer : Node_Id := Empty)
!            return Determining_Expression_List
!          is
!             Par           : Node_Id := Expr;
!             Trailer       : Node_Id := Expr_Trailer;
!             Next_Element  : Determining_Expr;
!          begin
!             --  We want to stop climbing up the tree when we reach the
!             --  postcondition expression. An aspect_specification is
!             --  transformed into a pragma, so reaching a pragma is our
!             --  termination condition. This relies on the fact that
!             --  pragmas are not allowed in declare expressions (or any
!             --  other kind of expression).
! 
!             loop
!                Next_Element.Expr := Empty;
! 
!                case Nkind (Par) is
!                   when N_Short_Circuit =>
!                      if Trailer = Right_Opnd (Par) then
!                         Next_Element :=
!                           (Expr        => Left_Opnd (Par),
!                            Context     => Short_Circuit_Op,
!                            Is_And_Then => Nkind (Par) = N_And_Then);
!                      end if;
! 
!                   when N_If_Expression =>
!                      --  For an expression like
!                      --    (if C1 then ... elsif C2 then ... else Foo'Old)
!                      --  the RM says are two determining expressions,
!                      --  C1 and C2. Our treatment here (where we only add
!                      --  one determining expression to the list) is ok because
!                      --  we will see two if-expressions, one within the other.
! 
!                      if Trailer /= First (Expressions (Par)) then
!                         Next_Element :=
!                            (Expr         => First (Expressions (Par)),
!                             Context      => If_Expr,
!                             Is_Then_Part =>
!                               Trailer = Next (First (Expressions (Par))));
!                      end if;
! 
!                   when N_Case_Expression_Alternative =>
!                      pragma Assert (Nkind (Parent (Par)) = N_Case_Expression);
! 
!                      Next_Element :=
!                        (Expr         => Expression (Parent (Par)),
!                         Context      => Case_Expr,
!                         Alternatives => Par);
! 
!                   when N_Membership_Test =>
!                      if Trailer /= Left_Opnd (Par)
!                        and then Is_Non_Empty_List (Alternatives (Par))
!                        and then Trailer /= First (Alternatives (Par))
!                      then
!                         pragma Assert (not Present (Right_Opnd (Par)));
!                         pragma Assert
!                           (Is_List_Member (Trailer)
!                            and then List_Containing (Trailer)
!                                     = Alternatives (Par));
! 
!                         --  This one is different than the others
!                         --  because one element in the array result
!                         --  may represent multiple determining
!                         --  expressions (i.e. every member of the list
!                         --     Alternatives (Par)
!                         --  up to but not including Trailer).
! 
!                         Next_Element :=
!                           (Expr                => Par,
!                            Context             => Membership_Test,
!                            First_Non_Preceding => Trailer);
!                      end if;
! 
!                   when N_Pragma =>
!                      declare
!                         Previous : constant Node_Id := Prev (Par);
!                         Prev_Expr : Node_Id;
!                      begin
!                         if Nkind (Previous) = N_Pragma and then
!                           Split_PPC (Previous)
!                         then
!                            --  A source-level postcondition of
!                            --    A and then B and then C
!                            --  results in
!                            --    pragma Postcondition (A);
!                            --    pragma Postcondition (B);
!                            --    pragma Postcondition (C);
!                            --  with Split_PPC set to True on all but the
!                            --  last pragma. We account for that here.
! 
!                            Prev_Expr :=
!                              Expression (First
!                                (Pragma_Argument_Associations (Previous)));
! 
!                            --  This Analyze call is needed in the case when
!                            --  Sem_Attr.Analyze_Attribute calls
!                            --  Eligible_For_Conditional_Evaluation. Without
!                            --  it, we end up passing an unanalyzed expression
!                            --  to Is_Known_On_Entry and that doesn't work.
! 
!                            Analyze (Prev_Expr);
! 
!                            Next_Element :=
!                              (Expr        => Prev_Expr,
!                               Context     => Short_Circuit_Op,
!                               Is_And_Then => True);
! 
!                            return Determining_Expressions (Prev_Expr)
!                              & Next_Element;
!                         else
!                            pragma Assert
!                              (Get_Pragma_Id (Pragma_Name (Par)) in
!                                 Pragma_Post | Pragma_Postcondition
!                                 | Pragma_Post_Class | Pragma_Refined_Post
!                                 | Pragma_Check | Pragma_Contract_Cases);
! 
!                            return (1 .. 0 => <>); -- recursion terminates here
!                         end if;
!                      end;
! 
!                   when N_Empty =>
!                      --  This case should be impossible, but if it does
!                      --  happen somehow then we don't want an infinite loop.
!                      raise Program_Error;
! 
!                   when others =>
!                      null;
!                end case;
! 
!                Trailer := Par;
!                Par := Parent (Par);
! 
!                if Present (Next_Element.Expr) then
!                   return Determining_Expressions
!                            (Expr => Par, Expr_Trailer => Trailer)
!                          & Next_Element;
!                end if;
              end loop;
!          end Determining_Expressions;
  
!          -----------------------------------------
!          -- Eligible_For_Conditional_Evaluation --
!          -----------------------------------------
! 
!          function Eligible_For_Conditional_Evaluation
!            (Expr : Node_Id) return Boolean
!          is
!          begin
!             if Is_Anonymous_Access_Type (Etype (Expr)) then
!                --  The code in exp_attr.adb that also builds declarations
!                --  for 'Old constants doesn't handle the anonymous access
!                --  type case correctly, so we avoid that problem by
!                --  returning True here.
!                return True;
!             elsif Ada_Version < Ada_2020 then
!                return False;
!             elsif not Is_Conditionally_Evaluated (Expr) then
!                return False;
!             else
                 declare
!                   Determiners : constant Determining_Expression_List :=
!                     Determining_Expressions (Expr);
                 begin
!                   pragma Assert (Determiners'Length > 0);
! 
!                   for Idx in Determiners'Range loop
!                      if not Is_Known_On_Entry (Determiners (Idx).Expr) then
!                         return False;
!                      end if;
                    end loop;
                 end;
!                return True;
              end if;
!          end Eligible_For_Conditional_Evaluation;
  
!          --------------------------------
!          -- Is_Conditionally_Evaluated --
!          --------------------------------
! 
!          function Is_Conditionally_Evaluated (Expr : Node_Id) return Boolean
!          is
!             --  There are three possibilities - the expression is
!             --  unconditionally evaluated, repeatedly evaluated, or
!             --  conditionally evaluated (see RM 6.1.1). So we implement
!             --  this test by testing for the other two.
! 
!             function Is_Repeatedly_Evaluated (Expr : Node_Id) return Boolean;
!             --  See RM 6.1.1 for definition of "repeatedly evaluated".
! 
!             -----------------------------
!             -- Is_Repeatedly_Evaluated --
!             -----------------------------
! 
!             function Is_Repeatedly_Evaluated (Expr : Node_Id) return Boolean is
!                Par : Node_Id := Expr;
!                Trailer : Node_Id := Empty;
! 
!                --  There are three ways that an expression can be repeatedly
!                --  evaluated.
!             begin
!                --  An aspect_specification is transformed into a pragma, so
!                --  reaching a pragma is our termination condition. We want to
!                --  stop when we reach the postcondition expression.
! 
!                while Nkind (Par) /= N_Pragma loop
!                   pragma Assert (Present (Par));
! 
!                   --  test for case 1:
!                   --    A subexpression of a predicate of a
!                   --    quantified_expression.
! 
!                   if Nkind (Par) = N_Quantified_Expression
!                      and then Trailer = Condition (Par)
!                   then
!                      return True;
!                   end if;
! 
!                   --  test for cases 2 and 3:
!                   --    A subexpression of the expression of an
!                   --    array_component_association or of
!                   --    a container_element_associatiation.
! 
!                   if Nkind (Par) = N_Component_Association
!                     and then Trailer = Expression (Par)
!                   then
!                      --  determine whether Par is part of an array aggregate
!                      --  or a container aggregate
!                      declare
!                         Rover : Node_Id := Par;
!                      begin
!                         while Nkind (Rover) not in N_Has_Etype loop
!                            pragma Assert (Present (Rover));
!                            Rover := Parent (Rover);
!                         end loop;
!                         if Present (Etype (Rover)) then
!                            if Is_Array_Type (Etype (Rover))
!                              or else Is_Container_Aggregate (Rover)
!                            then
!                               return True;
!                            end if;
!                         end if;
!                      end;
!                   end if;
! 
!                   Trailer := Par;
!                   Par := Parent (Par);
!                end loop;
! 
!                return False;
!             end Is_Repeatedly_Evaluated;
  
           begin
!             if not Is_Potentially_Unevaluated (Expr) then
!                --  the expression is unconditionally evaluated
!                return False;
!             elsif Is_Repeatedly_Evaluated (Expr) then
!                return False;
!             end if;
! 
!             return True;
!          end Is_Conditionally_Evaluated;
! 
!          -----------------------
!          -- Is_Known_On_Entry --
!          -----------------------
! 
!          function Is_Known_On_Entry (Expr : Node_Id) return Boolean is
!             --  ??? This implementation is incomplete. See RM 6.1.1
!             --  for details. In particular, this function *should* return
!             --  True for a function call (or a user-defined literal, which
!             --  is equivalent to a function call) if all actual parameters
!             --  (including defaulted params) are known on entry and the
!             --  function has "Globals => null" specified; the current
!             --  implementation will incorrectly return False in this case.
! 
!             function All_Exps_Known_On_Entry
!               (Expr_List : List_Id) return Boolean;
!             --  Given a list of expressions, returns False iff
!             --  Is_Known_On_Entry is False for at least one list element.
! 
!             -----------------------------
!             -- All_Exps_Known_On_Entry --
!             -----------------------------
! 
!             function All_Exps_Known_On_Entry
!               (Expr_List : List_Id) return Boolean
!             is
!                Expr : Node_Id := First (Expr_List);
!             begin
!                while Present (Expr) loop
!                   if not Is_Known_On_Entry (Expr) then
                       return False;
                    end if;
!                   Next (Expr);
                 end loop;
+                return True;
+             end All_Exps_Known_On_Entry;
  
!          begin
!             if Is_Static_Expression (Expr) then
!                return True;
!             end if;
! 
!             if Is_Attribute_Old (Expr) then
!                return True;
!             end if;
! 
!             declare
!                Pref : Node_Id := Expr;
!             begin
!                loop
!                   case Nkind (Pref) is
!                      when N_Selected_Component =>
!                         null;
! 
!                      when N_Indexed_Component =>
!                         if not All_Exps_Known_On_Entry (Expressions (Pref))
!                         then
!                            return False;
!                         end if;
! 
!                      when N_Slice =>
!                         return False; -- just to be clear about this case
! 
!                      when others =>
!                         exit;
!                   end case;
! 
!                   Pref := Prefix (Pref);
!                end loop;
! 
!                if Is_Entity_Name (Pref)
!                  and then Is_Constant_Object (Entity (Pref))
                 then
!                   declare
!                      Obj     : constant Entity_Id := Entity (Pref);
!                      Obj_Typ : constant Entity_Id := Etype (Obj);
!                   begin
!                      case Ekind (Obj) is
!                         when E_In_Parameter =>
!                            if not Is_Elementary_Type (Obj_Typ) then
!                               return False;
!                            elsif Is_Aliased (Obj) then
!                               return False;
!                            end if;
! 
!                         when E_Constant =>
!                            --  return False for a deferred constant
!                            if Present (Full_View (Obj)) then
!                               return False;
!                            end if;
! 
!                            --  return False if not "all views are constant".
!                            if Is_Immutably_Limited_Type (Obj_Typ)
!                              or Needs_Finalization (Obj_Typ)
!                            then
!                               return False;
!                            end if;
! 
!                         when others =>
!                            null;
!                      end case;
!                   end;
! 
!                   return True;
                 end if;
  
!                --  ??? Cope with a malformed tree. Code to cope with a
!                --  nonstatic use of an enumeration literal should not be
!                --  necessary.
!                if Is_Entity_Name (Pref)
!                  and then Ekind (Entity (Pref)) = E_Enumeration_Literal
!                then
!                   return True;
!                end if;
!             end;
  
!             case Nkind (Expr) is
!                when N_Unary_Op =>
!                   return Is_Known_On_Entry (Right_Opnd (Expr));
! 
!                when N_Binary_Op =>
!                   return Is_Known_On_Entry (Left_Opnd (Expr))
!                     and then Is_Known_On_Entry (Right_Opnd (Expr));
! 
!                when N_Type_Conversion | N_Qualified_Expression =>
!                   return Is_Known_On_Entry (Expression (Expr));
! 
!                when N_If_Expression =>
!                   if not All_Exps_Known_On_Entry (Expressions (Expr)) then
!                      return False;
!                   end if;
! 
!                when N_Case_Expression =>
!                   if not Is_Known_On_Entry (Expression (Expr)) then
!                      return False;
!                   end if;
! 
!                   declare
!                      Alt : Node_Id := First (Alternatives (Expr));
!                   begin
!                      while Present (Alt) loop
!                         if not Is_Known_On_Entry (Expression (Alt)) then
!                            return False;
!                         end if;
!                         Next (Alt);
!                      end loop;
!                   end;
! 
!                   return True;
! 
!                when others =>
!                   null;
!             end case;
! 
!             return False;
!          end Is_Known_On_Entry;
! 
!       end Conditional_Evaluation;
! 
!       package body Indirect_Temps is
! 
!          Indirect_Temp_Access_Type_Char : constant Character := 'K';
!          --  The character passed to Make_Temporary when declaring
!          --  the access type that is used in the implementation of an
!          --  indirect temporary.
! 
!          --------------------------
!          -- Indirect_Temp_Needed --
!          --------------------------
! 
!          function Indirect_Temp_Needed (Typ : Entity_Id) return Boolean is
!          begin
!             --  There should be no correctness issues if the only cases where
!             --  this function returns False are cases where Typ is an
!             --  anonymous access type and we need to generate a saooaaat (a
!             --  stand-alone object of an anonymous access type) in order get
!             --  accessibility right. In other cases where this function
!             --  returns False, there would be no correctness problems with
!             --  returning True instead; however, returning False when we can
!             --  generally results in simpler code.
! 
!             return False
! 
!                --  If Typ is not definite, then we cannot generate
!                --    Temp : Typ;
! 
!               or else not Is_Definite_Subtype (Typ)
! 
!               --  If Typ is tagged, then generating
!               --    Temp : Typ;
!               --  might generate an object with the wrong tag. If we had
!               --  a predicate that indicated whether the nominal tag is
!               --  trustworthy, we could use that predicate here.
! 
!               or else Is_Tagged_Type (Typ)
! 
!               --  If Typ needs finalization, then generating an implicit
!               --    Temp : Typ;
!               --  declaration could have user-visible side effects.
! 
!               or else Needs_Finalization (Typ)
! 
!               --  In the anonymous access type case, we need to
!               --  generate a saooaaat. We don't want the code in
!               --  in exp_attr.adb that deals with the case where this
!               --  function returns False to have to deal with that case
!               --  (just to avoid code duplication). So we cheat a little
!               --  bit and return True here for an anonymous access type.
! 
!               or else Is_Anonymous_Access_Type (Typ);
! 
!             --  ??? Unimplemented - spec description says:
!             --    For an unconstrained-but-definite discriminated subtype,
!             --    returns True if the potential difference in size between an
!             --    unconstrained object and a constrained object is large.
!             --
!             --  For example,
!             --    type Typ (Len : Natural := 0) is
!             --      record F : String (1 .. Len); end record;
!             --
!             --  See Large_Max_Size_Mutable function elsewhere in this
!             --  file (currently declared inside of
!             --  Requires_Transient_Scope, so it would have to be
!             --  moved if we want it to be callable from here).
! 
!          end Indirect_Temp_Needed;
! 
!          ---------------------------
!          -- Declare_Indirect_Temp --
!          ---------------------------
! 
!          procedure Declare_Indirect_Temp
!            (Attr_Prefix : Node_Id; Indirect_Temp : out Entity_Id)
!          is
!             Loc         : constant Source_Ptr := Sloc (Attr_Prefix);
!             Prefix_Type : constant Entity_Id := Etype (Attr_Prefix);
!             Temp_Id     : constant Entity_Id :=
!               Make_Temporary (Loc, 'P', Attr_Prefix);
! 
!             procedure Declare_Indirect_Temp_Via_Allocation;
!             --  Handle the usual case.
! 
!             -------------------------------------------
!             --  Declare_Indirect_Temp_Via_Allocation --
!             -------------------------------------------
! 
!             procedure Declare_Indirect_Temp_Via_Allocation is
!                Access_Type_Id : constant Entity_Id
!                  := Make_Temporary
!                       (Loc, Indirect_Temp_Access_Type_Char, Attr_Prefix);
! 
!                Temp_Decl : constant Node_Id :=
!                  Make_Object_Declaration (Loc,
!                    Defining_Identifier => Temp_Id,
!                    Object_Definition   =>
!                      New_Occurrence_Of (Access_Type_Id, Loc));
  
+                Allocate_Class_Wide : constant Boolean :=
+                  Is_Specific_Tagged_Type (Prefix_Type);
+                --  If True then access type designates the class-wide type in
+                --  order to preserve (at run time) the value of the underlying
+                --  tag.
+                --  ??? We could do better here (in the case where Prefix_Type
+                --  is tagged and specific) if we had a predicate which takes an
+                --  expression and returns True iff the expression is of
+                --  a specific tagged type and the underlying tag (at run time)
+                --  is statically known to match that of the specific type.
+                --  In that case, Allocate_Class_Wide could safely be False.
+ 
+                function Designated_Subtype_Mark return Node_Id;
+                --  Usually, a subtype mark indicating the subtype of the
+                --  attribute prefix. If that subtype is a specific tagged
+                --  type, then returns the corresponding class-wide type.
+                --  If the prefix is of an anonymous access type, then returns
+                --  the designated type of that type.
+ 
+                -----------------------------
+                -- Designated_Subtype_Mark --
+                -----------------------------
+ 
+                function Designated_Subtype_Mark return Node_Id is
+                   Typ : Entity_Id := Prefix_Type;
+                begin
+                   if Allocate_Class_Wide then
+                      if Is_Private_Type (Typ)
+                        and then Present (Full_View (Typ))
+                      then
+                         Typ := Full_View (Typ);
+                      end if;
+                      Typ := Class_Wide_Type (Typ);
+                   end if;
+ 
+                   return New_Occurrence_Of (Typ, Loc);
+                end Designated_Subtype_Mark;
+ 
+                Access_Type_Def : constant Node_Id
+                  := Make_Access_To_Object_Definition
+                       (Loc, Subtype_Indication => Designated_Subtype_Mark);
+ 
+                Access_Type_Decl : constant Node_Id
+                  := Make_Full_Type_Declaration
+                       (Loc, Access_Type_Id,
+                        Type_Definition => Access_Type_Def);
+             begin
+                Set_Ekind (Temp_Id, E_Variable);
+                Set_Etype (Temp_Id, Access_Type_Id);
+                Set_Ekind (Access_Type_Id, E_Access_Type);
+ 
+                if Append_Decls_In_Reverse_Order then
+                   Append_Item (Temp_Decl, Is_Eval_Stmt => False);
+                   Append_Item (Access_Type_Decl, Is_Eval_Stmt => False);
+                else
+                   Append_Item (Access_Type_Decl, Is_Eval_Stmt => False);
+                   Append_Item (Temp_Decl, Is_Eval_Stmt => False);
+                end if;
+ 
+                --  When a type associated with an indirect temporary gets
+                --  created for a 'Old attribute reference we need to mark
+                --  the type as such. This allows, for example, finalization
+                --  masters associated with them to be finalized in the correct
+                --  order after postcondition checks.
+ 
+                if Attribute_Name (Parent (Attr_Prefix)) = Name_Old then
+                   Set_Stores_Attribute_Old_Prefix (Access_Type_Id);
+                end if;
+ 
+                Analyze (Access_Type_Decl);
+                Analyze (Temp_Decl);
+ 
+                pragma Assert
+                  (Is_Access_Type_For_Indirect_Temp (Access_Type_Id));
+ 
+                declare
+                   Expression : Node_Id := Attr_Prefix;
+                   Allocator  : Node_Id;
+                begin
+                   if Allocate_Class_Wide then
+                      --  generate T'Class'(T'Class (<prefix>))
+                      Expression :=
+                        Make_Type_Conversion (Loc,
+                          Subtype_Mark => Designated_Subtype_Mark,
+                          Expression   => Expression);
+                   end if;
+ 
+                   Allocator :=
+                     Make_Allocator (Loc,
+                       Make_Qualified_Expression
+                         (Loc,
+                          Subtype_Mark => Designated_Subtype_Mark,
+                          Expression   => Expression));
+ 
+                   --  Allocate saved prefix value on the secondary stack
+                   --  in order to avoid introducing a storage leak. This
+                   --  allocated object is never explicitly reclaimed.
+                   --
+                   --  ??? Emit storage leak warning if RE_SS_Pool
+                   --  unavailable?
+ 
+                   if RTE_Available (RE_SS_Pool) then
+                      Set_Storage_Pool (Allocator, RTE (RE_SS_Pool));
+                      Set_Procedure_To_Call
+                        (Allocator, RTE (RE_SS_Allocate));
+                      Set_Uses_Sec_Stack (Current_Scope);
+                   end if;
+ 
+                   Append_Item
+                     (Make_Assignment_Statement (Loc,
+                        Name       => New_Occurrence_Of (Temp_Id, Loc),
+                        Expression => Allocator),
+                      Is_Eval_Stmt => True);
+                end;
+             end Declare_Indirect_Temp_Via_Allocation;
+ 
+          begin
+             Indirect_Temp := Temp_Id;
+ 
+             if Is_Anonymous_Access_Type (Prefix_Type) then
+                --  In the anonymous access type case, we do not want a level
+                --  indirection (which would result in declaring an
+                --  access-to-access type); that would result in correctness
+                --  problems - the accessibility level of the type of the
+                --  'Old constant would be wrong (See 6.1.1.). So in that case,
+                --  we do not generate an allocator. Instead we generate
+                --     Temp : access Designated := null;
+                --  which is unconditionally elaborated and then
+                --     Temp := <attribute prefix>;
+                --  which is conditionally executed.
+ 
+                declare
+                   Temp_Decl : constant Node_Id :=
+                     Make_Object_Declaration (Loc,
+                       Defining_Identifier => Temp_Id,
+                       Object_Definition   =>
+                         Make_Access_Definition
+                           (Loc,
+                            Constant_Present =>
+                              Is_Access_Constant (Prefix_Type),
+                            Subtype_Mark =>
+                              New_Occurrence_Of
+                                (Designated_Type (Prefix_Type), Loc)));
+                begin
+                   Append_Item (Temp_Decl, Is_Eval_Stmt => False);
+                   Analyze (Temp_Decl);
+                   Append_Item
+                     (Make_Assignment_Statement (Loc,
+                        Name       => New_Occurrence_Of (Temp_Id, Loc),
+                        Expression => Attr_Prefix),
+                      Is_Eval_Stmt => True);
+                end;
+             else
+                --  the usual case
+                Declare_Indirect_Temp_Via_Allocation;
+             end if;
+          end Declare_Indirect_Temp;
+ 
+          -------------------------
+          -- Indirect_Temp_Value --
+          -------------------------
+ 
+          function Indirect_Temp_Value
+            (Temp : Entity_Id;
+             Typ  : Entity_Id;
+             Loc  : Source_Ptr) return Node_Id
+          is
+             Result : Node_Id;
+          begin
+             if Is_Anonymous_Access_Type (Typ) then
+                --  No indirection in this case; just evaluate the temp.
+                Result := New_Occurrence_Of (Temp, Loc);
+                Set_Etype (Result, Etype (Temp));
+ 
+             else
+                Result := Make_Explicit_Dereference (Loc,
+                                      New_Occurrence_Of (Temp, Loc));
+ 
+                Set_Etype (Result, Designated_Type (Etype (Temp)));
+ 
+                if Is_Specific_Tagged_Type (Typ) then
+                   --  The designated type of the access type is class-wide, so
+                   --  convert to the specific type.
+ 
+                   Result :=
+                     Make_Type_Conversion (Loc,
+                       Subtype_Mark => New_Occurrence_Of (Typ, Loc),
+                       Expression   => Result);
+ 
+                   Set_Etype (Result, Typ);
+                end if;
+             end if;
+ 
+             return Result;
+          end Indirect_Temp_Value;
+ 
+          function Is_Access_Type_For_Indirect_Temp
+            (T : Entity_Id) return Boolean is
+          begin
+             if Is_Access_Type (T)
+                and then not Comes_From_Source (T)
+                and then Is_Internal_Name (Chars (T))
+                and then Nkind (Scope (T)) in N_Entity
+                and then Ekind (Scope (T))
+                  in E_Entry | E_Entry_Family | E_Function | E_Procedure
+                and then
+                  (Present (Postconditions_Proc (Scope (T)))
+                   or else Present (Contract (Scope (T))))
+             then
+                --  ??? Should define a flag for this. We could incorrectly
+                --  return True if other clients of Make_Temporary happen to
+                --  pass in the same character.
+                declare
+                   Name : constant String := Get_Name_String (Chars (T));
+                begin
+                   if Name (Name'First) = Indirect_Temp_Access_Type_Char then
+                      return True;
+                   end if;
+                end;
+             end if;
+             return False;
+          end Is_Access_Type_For_Indirect_Temp;
+ 
+       end Indirect_Temps;
+    end Old_Attr_Util;
  begin
     Erroutc.Subprogram_Name_Ptr := Subprogram_Name'Access;
  end Sem_Util;
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_util.ads gcc-11.1.0/gcc/ada/sem_util.ads
*** gcc-10.3.0/gcc/ada/sem_util.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_util.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 25,30 ****
--- 25,31 ----
  
  --  Package containing utility procedures used throughout the semantics
  
+ with Aspects; use Aspects;
  with Atree;   use Atree;
  with Einfo;   use Einfo;
  with Exp_Tss; use Exp_Tss;
*************** package Sem_Util is
*** 42,47 ****
--- 43,78 ----
     --  including the cases where there can't be any because e.g. the type is
     --  not tagged.
  
+    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 SAOOAAT may be returned or an N_Integer_Literal node.
+    --  When the level is Object_Decl_Level, an N_Integer_Literal node is
+    --  returned containing the level of the declaration of the object if
+    --  relevant (be it a SAOOAAT or otherwise). Finally, Zero_On_Dynamic_Level
+    --  returns library level for all cases where the accessibility level is
+    --  dynamic (used to bypass static accessibility checks in dynamic cases).
+ 
+    function Accessibility_Level
+      (Expr              : Node_Id;
+       Level             : Accessibility_Level_Kind;
+       In_Return_Context : Boolean := False) return Node_Id;
+    --  Centralized accessibility level calculation routine for finding the
+    --  accessibility level of a given expression Expr.
+ 
+    --  In_Return_Context forcing the Accessibility_Level calculations to be
+    --  carried out "as if" Expr existed in a return value. This is useful for
+    --  calculating the accessibility levels for discriminant associations
+    --  and return aggregates.
+ 
     function Acquire_Warning_Match_String (Str_Lit : Node_Id) return String;
     --  Used by pragma Warnings (Off, string), and Warn_As_Error (string) to get
     --  the given string argument, adding leading and trailing asterisks if they
*************** package Sem_Util is
*** 80,86 ****
     function Addressable (V : Int)  return Boolean;
     pragma Inline (Addressable);
     --  Returns True if the value of V is the word size or an addressable factor
!    --  of the word size (typically 8, 16, 32 or 64).
  
     procedure Aggregate_Constraint_Checks
       (Exp       : Node_Id;
--- 111,117 ----
     function Addressable (V : Int)  return Boolean;
     pragma Inline (Addressable);
     --  Returns True if the value of V is the word size or an addressable factor
!    --  or multiple of the word size (typically 8, 16, 32, 64 or 128).
  
     procedure Aggregate_Constraint_Checks
       (Exp       : Node_Id;
*************** package Sem_Util is
*** 157,170 ****
     --  force an error).
  
     function Async_Readers_Enabled (Id : Entity_Id) return Boolean;
!    --  Given the entity of an abstract state or a variable, determine whether
!    --  Id is subject to external property Async_Readers and if it is, the
!    --  related expression evaluates to True.
  
     function Async_Writers_Enabled (Id : Entity_Id) return Boolean;
!    --  Given the entity of an abstract state or a variable, determine whether
!    --  Id is subject to external property Async_Writers and if it is, the
!    --  related expression evaluates to True.
  
     function Available_Full_View_Of_Component (T : Entity_Id) return Boolean;
     --  If at the point of declaration an array type has a private or limited
--- 188,199 ----
     --  force an error).
  
     function Async_Readers_Enabled (Id : Entity_Id) return Boolean;
!    --  Id should be the entity of a state abstraction, an object, or a type.
!    --  Returns True iff Id is subject to external property Async_Readers.
  
     function Async_Writers_Enabled (Id : Entity_Id) return Boolean;
!    --  Id should be the entity of a state abstraction, an object, or a type.
!    --  Returns True iff Id is subject to external property Async_Writers.
  
     function Available_Full_View_Of_Component (T : Entity_Id) return Boolean;
     --  If at the point of declaration an array type has a private or limited
*************** package Sem_Util is
*** 273,278 ****
--- 302,328 ----
     --  through a type-specific wrapper for all inherited subprograms that
     --  may have a modified condition.
  
+    procedure Build_Constrained_Itype
+      (N              : Node_Id;
+       Typ            : Entity_Id;
+       New_Assoc_List : List_Id);
+    --  Build a constrained itype for the newly created record aggregate N and
+    --  set it as a type of N. The itype will have Typ as its base type and
+    --  will be constrained by the values of discriminants from the component
+    --  association list New_Assoc_List.
+ 
+    --  ??? This code used to be pretty much a copy of Build_Subtype, but now
+    --  those two routines behave differently for types with unknown
+    --  discriminants. They are both exported in from this package in the hope
+    --  to eventually unify them (a not duplicate them even more until then).
+ 
+    --  ??? Performance WARNING. The current implementation creates a new itype
+    --  for all aggregates whose base type is discriminated. This means that
+    --  for record aggregates nested inside an array aggregate we will create
+    --  a new itype for each record aggregate if the array component type has
+    --  discriminants. For large aggregates this may be a problem. What should
+    --  be done in this case is to reuse itypes as much as possible.
+ 
     function Build_Default_Subtype
       (T : Entity_Id;
        N : Node_Id) return Entity_Id;
*************** package Sem_Util is
*** 291,304 ****
     --  the compilation unit, and install it in the Elaboration_Entity field
     --  of Spec_Id, the entity for the compilation unit.
  
-    function Build_Overriding_Spec
-      (Op  : Node_Id;
-       Typ : Entity_Id) return Node_Id;
-    --  Build a subprogram specification for the wrapper of an inherited
-    --  operation with a modified pre- or postcondition (See AI12-0113).
-    --  Op is the parent operation, and Typ is the descendant type that
-    --  inherits the operation.
- 
     procedure Build_Explicit_Dereference
       (Expr : Node_Id;
        Disc : Entity_Id);
--- 341,346 ----
*************** package Sem_Util is
*** 308,319 ****
--- 350,392 ----
     --  loaded with both interpretations, and the dereference interpretation
     --  carries the name of the reference discriminant.
  
+    function Build_Overriding_Spec
+      (Op  : Node_Id;
+       Typ : Entity_Id) return Node_Id;
+    --  Build a subprogram specification for the wrapper of an inherited
+    --  operation with a modified pre- or postcondition (See AI12-0113).
+    --  Op is the parent operation, and Typ is the descendant type that
+    --  inherits the operation.
+ 
+    function Build_Subtype
+      (Related_Node : Node_Id;
+       Loc          : Source_Ptr;
+       Typ          : Entity_Id;
+       Constraints  : List_Id)
+       return Entity_Id;
+    --  Typ is an array or discriminated type, Constraints is a list of
+    --  constraints that apply to Typ. This routine builds the constrained
+    --  subtype using Loc as the source location and attached this subtype
+    --  declaration to Related_Node. The returned subtype inherits predicates
+    --  from Typ.
+ 
+    --  ??? The routine is mostly a duplicate of Build_Constrained_Itype, so be
+    --  careful which of the two better suits your needs (and certainly do not
+    --  duplicate their code).
+ 
     function Cannot_Raise_Constraint_Error (Expr : Node_Id) return Boolean;
     --  Returns True if the expression cannot possibly raise Constraint_Error.
     --  The response is conservative in the sense that a result of False does
     --  not necessarily mean that CE could be raised, but a response of True
     --  means that for sure CE cannot be raised.
  
+    procedure Check_Ambiguous_Aggregate (Call : Node_Id);
+    --  Additional information on an ambiguous call in Ada_2020 when a
+    --  subprogram call has an actual that is an aggregate, and the
+    --  presence of container aggregates (or types with the correwponding
+    --  aspect)  provides an additional interpretation. Message indicates
+    --  that an aggregate actual should carry a type qualification.
+ 
     procedure Check_Dynamically_Tagged_Expression
       (Expr        : Node_Id;
        Typ         : Entity_Id;
*************** package Sem_Util is
*** 371,379 ****
     --  Determine whether object or state Id introduces a hidden state. If this
     --  is the case, emit an error.
  
     procedure Check_Nonvolatile_Function_Profile (Func_Id : Entity_Id);
     --  Verify that the profile of nonvolatile function Func_Id does not contain
!    --  effectively volatile parameters or return type.
  
     procedure Check_Part_Of_Reference (Var_Id : Entity_Id; Ref : Node_Id);
     --  Verify the legality of reference Ref to variable Var_Id when the
--- 444,463 ----
     --  Determine whether object or state Id introduces a hidden state. If this
     --  is the case, emit an error.
  
+    procedure Check_Inherited_Nonoverridable_Aspects
+      (Inheritor      : Entity_Id;
+       Interface_List : List_Id;
+       Parent_Type    : Entity_Id);
+    --  Verify consistency of inherited nonoverridable aspects
+    --  when aspects are inherited from more than one source.
+    --  Parent_Type may be void (e.g., for a tagged task/protected type
+    --  whose declaration includes a non-empty interface list).
+    --  In the error case, error message is associate with Inheritor;
+    --  Inheritor parameter is otherwise unused.
+ 
     procedure Check_Nonvolatile_Function_Profile (Func_Id : Entity_Id);
     --  Verify that the profile of nonvolatile function Func_Id does not contain
!    --  effectively volatile parameters or return type for reading.
  
     procedure Check_Part_Of_Reference (Var_Id : Entity_Id; Ref : Node_Id);
     --  Verify the legality of reference Ref to variable Var_Id when the
*************** package Sem_Util is
*** 419,424 ****
--- 503,521 ----
     --  and the context is external to the protected operation, to warn against
     --  a possible unlocked access to data.
  
+    procedure Check_Volatility_Compatibility
+      (Id1, Id2                     : Entity_Id;
+       Description_1, Description_2 : String;
+       Srcpos_Bearer                : Node_Id);
+    --  Id1 and Id2 should each be the entity of a state abstraction, a
+    --  variable, or a type (i.e., something suitable for passing to
+    --  Async_Readers_Enabled and similar functions).
+    --  Does nothing if SPARK_Mode /= On. Otherwise, flags a legality violation
+    --  if one or more of the four volatility-related aspects is False for Id1
+    --  and True for Id2. The two descriptions are included in the error message
+    --  text; the source position for the generated message is determined by
+    --  Srcpos_Bearer.
+ 
     function Choice_List (N : Node_Id) return List_Id;
     --  Utility to retrieve the choices of a Component_Association or the
     --  Discrete_Choices of an Iterated_Component_Association. For various
*************** package Sem_Util is
*** 526,534 ****
     --  Find the currently visible definition for a given identifier, that is to
     --  say the first entry in the visibility chain for the Chars of N.
  
     function Current_Entity_In_Scope (N : Node_Id) return Entity_Id;
!    --  Find whether there is a previous definition for identifier N in the
!    --  current scope. Because declarations for a scope are not necessarily
     --  contiguous (e.g. for packages) the first entry on the visibility chain
     --  for N is not necessarily in the current scope.
  
--- 623,632 ----
     --  Find the currently visible definition for a given identifier, that is to
     --  say the first entry in the visibility chain for the Chars of N.
  
+    function Current_Entity_In_Scope (N : Name_Id) return Entity_Id;
     function Current_Entity_In_Scope (N : Node_Id) return Entity_Id;
!    --  Find whether there is a previous definition for name or identifier N in
!    --  the current scope. Because declarations for a scope are not necessarily
     --  contiguous (e.g. for packages) the first entry on the visibility chain
     --  for N is not necessarily in the current scope.
  
*************** package Sem_Util is
*** 554,560 ****
     --  in the case of a descendant of a generic formal type (returns Int'Last
     --  instead of 0).
  
!    function Defining_Entity (N : Node_Id) return Entity_Id;
     --  Given a declaration N, returns the associated defining entity. If the
     --  declaration has a specification, the entity is obtained from the
     --  specification. If the declaration has a defining unit name, then the
--- 652,660 ----
     --  in the case of a descendant of a generic formal type (returns Int'Last
     --  instead of 0).
  
!    function Defining_Entity
!      (N               : Node_Id;
!       Empty_On_Errors : Boolean := False) return Entity_Id;
     --  Given a declaration N, returns the associated defining entity. If the
     --  declaration has a specification, the entity is obtained from the
     --  specification. If the declaration has a defining unit name, then the
*************** package Sem_Util is
*** 565,570 ****
--- 665,680 ----
     --  local entities declared during loop expansion. These entities need
     --  debugging information, generated through Qualify_Entity_Names, and
     --  the loop declaration must be placed in the table Name_Qualify_Units.
+    --
+    --  Set flag Empty_On_Errors to change the behavior of this routine as
+    --  follows:
+    --
+    --    * True  - A declaration that lacks a defining entity returns Empty.
+    --      A node that does not allow for a defining entity returns Empty.
+    --
+    --    * False - A declaration that lacks a defining entity is given a new
+    --      internally generated entity which is subsequently returned. A node
+    --      that does not allow for a defining entity raises Program_Error
  
     --  WARNING: There is a matching C declaration of this subprogram in fe.h
  
*************** package Sem_Util is
*** 597,602 ****
--- 707,720 ----
     --  indication or a scalar subtype where one of the bounds is a
     --  discriminant.
  
+    function Derivation_Too_Early_To_Inherit
+      (Typ : Entity_Id; Streaming_Op : TSS_Name_Type) return Boolean;
+    --  Returns True if Typ is a derived type, the given Streaming_Op
+    --  (one of Read, Write, Input, or Output) is explicitly specified
+    --  for Typ's parent type, and that attribute specification is *not*
+    --  inherited by Typ because the declaration of Typ precedes that
+    --  of the attribute specification.
+ 
     function Designate_Same_Unit
       (Name1 : Node_Id;
        Name2 : Node_Id) return  Boolean;
*************** package Sem_Util is
*** 616,640 ****
     --  private components of protected objects, but is generally useful when
     --  restriction No_Implicit_Heap_Allocation is active.
  
-    function Dynamic_Accessibility_Level (N : Node_Id) return Node_Id;
-    --  N should be an expression of an access type. Builds an integer literal
-    --  except in cases involving anonymous access types, where accessibility
-    --  levels are tracked at run time (access parameters and Ada 2012 stand-
-    --  alone objects).
- 
     function Effective_Extra_Accessibility (Id : Entity_Id) return Entity_Id;
     --  Same as Einfo.Extra_Accessibility except thtat object renames
     --  are looked through.
  
     function Effective_Reads_Enabled (Id : Entity_Id) return Boolean;
!    --  Given the entity of an abstract state or a variable, determine whether
!    --  Id is subject to external property Effective_Reads and if it is, the
!    --  related expression evaluates to True.
  
     function Effective_Writes_Enabled (Id : Entity_Id) return Boolean;
!    --  Given the entity of an abstract state or a variable, determine whether
!    --  Id is subject to external property Effective_Writes and if it is, the
!    --  related expression evaluates to True.
  
     function Enclosing_Comp_Unit_Node (N : Node_Id) return Node_Id;
     --  Returns the enclosing N_Compilation_Unit node that is the root of a
--- 734,750 ----
     --  private components of protected objects, but is generally useful when
     --  restriction No_Implicit_Heap_Allocation is active.
  
     function Effective_Extra_Accessibility (Id : Entity_Id) return Entity_Id;
     --  Same as Einfo.Extra_Accessibility except thtat object renames
     --  are looked through.
  
     function Effective_Reads_Enabled (Id : Entity_Id) return Boolean;
!    --  Id should be the entity of a state abstraction, an object, or a type.
!    --  Returns True iff Id is subject to external property Effective_Reads.
  
     function Effective_Writes_Enabled (Id : Entity_Id) return Boolean;
!    --  Id should be the entity of a state abstraction, an object, or a type.
!    --  Returns True iff Id is subject to external property Effective_Writes.
  
     function Enclosing_Comp_Unit_Node (N : Node_Id) return Node_Id;
     --  Returns the enclosing N_Compilation_Unit node that is the root of a
*************** package Sem_Util is
*** 655,660 ****
--- 765,774 ----
     --  Returns the Node_Id associated with the innermost enclosing generic
     --  unit, if any. If none, then returns Empty.
  
+    function Enclosing_HSS (Stmt : Node_Id) return Node_Id;
+    --  Returns the nearest handled sequence of statements that encloses a given
+    --  statement, or Empty.
+ 
     function Enclosing_Lib_Unit_Entity
       (E : Entity_Id := Current_Scope) return Entity_Id;
     --  Returns the entity of enclosing library unit node which is the root of
*************** package Sem_Util is
*** 694,700 ****
     --  Insert new name in symbol table of current scope with check for
     --  duplications (error message is issued if a conflict is found).
     --  Note: Enter_Name is not used for overloadable entities, instead these
!    --  are entered using Sem_Ch6.Enter_Overloadable_Entity.
  
     function Entity_Of (N : Node_Id) return Entity_Id;
     --  Obtain the entity of arbitrary node N. If N is a renaming, return the
--- 808,814 ----
     --  Insert new name in symbol table of current scope with check for
     --  duplications (error message is issued if a conflict is found).
     --  Note: Enter_Name is not used for overloadable entities, instead these
!    --  are entered using Sem_Ch6.Enter_Overloaded_Entity.
  
     function Entity_Of (N : Node_Id) return Entity_Id;
     --  Obtain the entity of arbitrary node N. If N is a renaming, return the
*************** package Sem_Util is
*** 935,945 ****
     --  be installed on the scope stack to prevent spurious visibility errors.
  
     procedure Gather_Components
!      (Typ           : Entity_Id;
!       Comp_List     : Node_Id;
!       Governed_By   : List_Id;
!       Into          : Elist_Id;
!       Report_Errors : out Boolean);
     --  The purpose of this procedure is to gather the valid components in a
     --  record type according to the values of its discriminants, in order to
     --  validate the components of a record aggregate.
--- 1049,1061 ----
     --  be installed on the scope stack to prevent spurious visibility errors.
  
     procedure Gather_Components
!      (Typ                   : Entity_Id;
!       Comp_List             : Node_Id;
!       Governed_By           : List_Id;
!       Into                  : Elist_Id;
!       Report_Errors         : out Boolean;
!       Allow_Compile_Time    : Boolean := False;
!       Include_Interface_Tag : Boolean := False);
     --  The purpose of this procedure is to gather the valid components in a
     --  record type according to the values of its discriminants, in order to
     --  validate the components of a record aggregate.
*************** package Sem_Util is
*** 962,974 ****
     --    Report_Errors is set to True if the values of the discriminants are
     --     non-static.
     --
     --  This procedure is also used when building a record subtype. If the
     --  discriminant constraint of the subtype is static, the components of the
     --  subtype are only those of the variants selected by the values of the
     --  discriminants. Otherwise all components of the parent must be included
     --  in the subtype for semantic analysis.
  
!    function Get_Accessibility (E : Entity_Id) return Node_Id;
     --  Obtain the accessibility level for a given entity formal taking into
     --  account both extra and minimum accessibility.
  
--- 1078,1096 ----
     --    Report_Errors is set to True if the values of the discriminants are
     --     non-static.
     --
+    --    Allow_Compile_Time if set to True, allows compile time known values in
+    --     Governed_By expressions in addition to static expressions.
+    --
+    --    Include_Interface_Tag if set to True, gather any interface tag
+    --     component, otherwise exclude them.
+    --
     --  This procedure is also used when building a record subtype. If the
     --  discriminant constraint of the subtype is static, the components of the
     --  subtype are only those of the variants selected by the values of the
     --  discriminants. Otherwise all components of the parent must be included
     --  in the subtype for semantic analysis.
  
!    function Get_Dynamic_Accessibility (E : Entity_Id) return Entity_Id;
     --  Obtain the accessibility level for a given entity formal taking into
     --  account both extra and minimum accessibility.
  
*************** package Sem_Util is
*** 1079,1086 ****
     function Get_Iterable_Type_Primitive
       (Typ : Entity_Id;
        Nam : Name_Id) return Entity_Id;
!    --  Retrieve one of the primitives First, Next, Has_Element, Element from
!    --  the value of the Iterable aspect of a type.
  
     procedure Get_Library_Unit_Name_String (Decl_Node : Node_Id);
     --  Retrieve the fully expanded name of the library unit declared by
--- 1201,1208 ----
     function Get_Iterable_Type_Primitive
       (Typ : Entity_Id;
        Nam : Name_Id) return Entity_Id;
!    --  Retrieve one of the primitives First, Last, Next, Previous, Has_Element,
!    --  Element from the value of the Iterable aspect of a type.
  
     procedure Get_Library_Unit_Name_String (Decl_Node : Node_Id);
     --  Retrieve the fully expanded name of the library unit declared by
*************** package Sem_Util is
*** 1138,1146 ****
     --  corresponding aspect.
  
     function Get_Referenced_Object (N : Node_Id) return Node_Id;
!    --  Given a node, return the renamed object if the node represents a renamed
!    --  object, otherwise return the node unchanged. The node may represent an
!    --  arbitrary expression.
  
     function Get_Renamed_Entity (E : Entity_Id) return Entity_Id;
     --  Given an entity for an exception, package, subprogram or generic unit,
--- 1260,1269 ----
     --  corresponding aspect.
  
     function Get_Referenced_Object (N : Node_Id) return Node_Id;
!    --  Given an arbitrary node, return the renamed object if the node
!    --  represents a renamed object; otherwise return the node unchanged.
!    --  The node can represent an arbitrary expression or any other kind of
!    --  node (such as the name of a type).
  
     function Get_Renamed_Entity (E : Entity_Id) return Entity_Id;
     --  Given an entity for an exception, package, subprogram or generic unit,
*************** package Sem_Util is
*** 1170,1184 ****
       (Typ       : Entity_Id;
        Priv_Typ  : out Entity_Id;
        Full_Typ  : out Entity_Id;
!       Full_Base : out Entity_Id;
        CRec_Typ  : out Entity_Id);
!    --  Obtain the partial and full view of type Typ and in addition any extra
!    --  types the full view may have. The return entities are as follows:
     --
     --    Priv_Typ  - the partial view (a private type)
     --    Full_Typ  - the full view
!    --    Full_Base - the base type of the full view
!    --    CRec_Typ  - the corresponding record type of the full view
  
     function Has_Access_Values (T : Entity_Id) return Boolean;
     --  Returns true if type or subtype T is an access type, or has a component
--- 1293,1313 ----
       (Typ       : Entity_Id;
        Priv_Typ  : out Entity_Id;
        Full_Typ  : out Entity_Id;
!       UFull_Typ : out Entity_Id;
        CRec_Typ  : out Entity_Id);
!    --  Obtain the partial and full views of type Typ and in addition any extra
!    --  types the full views may have. The return entities are as follows:
     --
     --    Priv_Typ  - the partial view (a private type)
     --    Full_Typ  - the full view
!    --    UFull_Typ - the underlying full view, if the full view is private
!    --    CRec_Typ  - the corresponding record type of the full views
! 
!    function Get_Fullest_View
!      (E : Entity_Id; Include_PAT : Boolean := True) return Entity_Id;
!    --  Get the fullest possible view of E, looking through private,
!    --  limited, packed array and other implementation types.  If Include_PAT
!    --  is False, don't look inside packed array types.
  
     function Has_Access_Values (T : Entity_Id) return Boolean;
     --  Returns true if type or subtype T is an access type, or has a component
*************** package Sem_Util is
*** 1189,1194 ****
--- 1318,1326 ----
     --  as an access type internally, this function tests only for access types
     --  known to the programmer. See also Has_Tagged_Component.
  
+    function Has_Anonymous_Access_Discriminant (Typ : Entity_Id) return Boolean;
+    --  Returns True if Typ has one or more anonymous access discriminants
+ 
     type Alignment_Result is (Known_Compatible, Unknown, Known_Incompatible);
     --  Result of Has_Compatible_Alignment test, description found below. Note
     --  that the values are arranged in increasing order of problematicness.
*************** package Sem_Util is
*** 1235,1241 ****
     function Has_Effectively_Volatile_Profile
       (Subp_Id : Entity_Id) return Boolean;
     --  Determine whether subprogram Subp_Id has an effectively volatile formal
!    --  parameter or returns an effectively volatile value.
  
     function Has_Full_Default_Initialization (Typ : Entity_Id) return Boolean;
     --  Determine whether type Typ defines "full default initialization" as
--- 1367,1374 ----
     function Has_Effectively_Volatile_Profile
       (Subp_Id : Entity_Id) return Boolean;
     --  Determine whether subprogram Subp_Id has an effectively volatile formal
!    --  parameter for reading or returns an effectively volatile value for
!    --  reading.
  
     function Has_Full_Default_Initialization (Typ : Entity_Id) return Boolean;
     --  Determine whether type Typ defines "full default initialization" as
*************** package Sem_Util is
*** 1250,1255 ****
--- 1383,1389 ----
     --    * A task type
     --    * A private type with pragma Default_Initial_Condition that provides
     --      full default initialization.
+    --  This function is not used in GNATprove anymore, but is used in CodePeer.
  
     function Has_Fully_Default_Initializing_DIC_Pragma
       (Typ : Entity_Id) return Boolean;
*************** package Sem_Util is
*** 1308,1313 ****
--- 1442,1468 ----
     function Has_Non_Null_Statements (L : List_Id) return Boolean;
     --  Return True if L has non-null statements
  
+    function Side_Effect_Free_Statements (L : List_Id) return Boolean;
+    --  Return True if L has no statements with side effects
+ 
+    function Side_Effect_Free_Loop (N : Node_Id) return Boolean;
+    --  Return True if the loop has no side effect and can therefore be
+    --  marked for removal. Return False if N is not a N_Loop_Statement.
+ 
+    subtype Static_Accessibility_Level_Kind
+      is Accessibility_Level_Kind range Object_Decl_Level
+                                          .. Zero_On_Dynamic_Level;
+    --  Restrict the reange of Accessibility_Level_Kind to be non-dynamic for
+    --  use in the static version of Accessibility_Level below.
+ 
+    function Static_Accessibility_Level
+      (Expr              : Node_Id;
+       Level             : Static_Accessibility_Level_Kind;
+       In_Return_Context : Boolean := False) return Uint;
+    --  Overloaded version of Accessibility_Level which returns a universal
+    --  integer for use in compile-time checking. Note: Level is restricted to
+    --  be non-dynamic.
+ 
     function Has_Overriding_Initialize (T : Entity_Id) return Boolean;
     --  Predicate to determine whether a controlled type has a user-defined
     --  Initialize primitive (and, in Ada 2012, whether that primitive is
*************** package Sem_Util is
*** 1325,1330 ****
--- 1480,1491 ----
     --  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,
+    --  entry or an abstract state. For private types and deferred constants
+    --  E should be the private view, because aspect can only be attached there.
+ 
     function Has_Signed_Zeros (E : Entity_Id) return Boolean;
     --  Determines if the floating-point type E supports signed zeros.
     --  Returns False if E is not a floating-point type.
*************** package Sem_Util is
*** 1354,1362 ****
     function Has_Tagged_Component (Typ : Entity_Id) return Boolean;
     --  Returns True if Typ is a composite type (array or record) that is either
     --  a tagged type or has a subcomponent that is tagged. Returns False for a
!    --  noncomposite type, or if no tagged subcomponents are present. This
!    --  function is used to check if "=" has to be expanded into a bunch
!    --  component comparisons.
  
     function Has_Undefined_Reference (Expr : Node_Id) return Boolean;
     --  Given arbitrary expression Expr, determine whether it contains at
--- 1515,1526 ----
     function Has_Tagged_Component (Typ : Entity_Id) return Boolean;
     --  Returns True if Typ is a composite type (array or record) that is either
     --  a tagged type or has a subcomponent that is tagged. Returns False for a
!    --  noncomposite type, or if no tagged subcomponents are present.
! 
!    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 Has_Undefined_Reference (Expr : Node_Id) return Boolean;
     --  Given arbitrary expression Expr, determine whether it contains at
*************** package Sem_Util is
*** 1377,1386 ****
--- 1541,1561 ----
        Exclude_Parents : Boolean := False) return Boolean;
     --  Returns true if the Typ_Ent implements interface Iface_Ent
  
+    function Implicitly_Designated_Type (Typ : Entity_Id) return Entity_Id;
+    --  Called when Typ is the type of the prefix of an implicit dereference.
+    --  Return the designated type of Typ, taking into account that this type
+    --  may be a limited view, when the nonlimited view is visible.
+ 
     function In_Assertion_Expression_Pragma (N : Node_Id) return Boolean;
     --  Returns True if node N appears within a pragma that acts as an assertion
     --  expression. See Sem_Prag for the list of qualifying pragmas.
  
+    function In_Check_Node (N : Node_Id) return Boolean;
+    --  Return True if N is part of a N_Raise_xxx_Error node
+ 
+    function In_Generic_Formal_Package (E : Entity_Id) return Boolean;
+    --  Returns True if entity E is inside a generic formal package
+ 
     function In_Generic_Scope (E : Entity_Id) return Boolean;
     --  Returns True if entity E is inside a generic scope
  
*************** package Sem_Util is
*** 1413,1418 ****
--- 1588,1598 ----
     function In_Quantified_Expression (N : Node_Id) return Boolean;
     --  Returns true if the expression N occurs within a quantified expression
  
+    function In_Return_Value (Expr : Node_Id) return Boolean;
+    --  Returns true if the expression Expr occurs within a simple return
+    --  statement or is part of an assignment to the return object in an
+    --  extended return statement.
+ 
     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.
*************** package Sem_Util is
*** 1466,1471 ****
--- 1646,1655 ----
     --  either the value is not yet known before back-end processing or it is
     --  not known at compile time after back-end processing.
  
+    procedure Inherit_Predicate_Flags (Subt, Par : Entity_Id);
+    --  Propagate static and dynamic predicate flags from a parent to the
+    --  subtype in a subtype declaration with and without constraints.
+ 
     procedure Inherit_Rep_Item_Chain (Typ : Entity_Id; From_Typ : Entity_Id);
     --  Inherit the rep item chain of type From_Typ without clobbering any
     --  existing rep items on Typ's chain. Typ is the destination type.
*************** package Sem_Util is
*** 1505,1513 ****
--- 1689,1716 ----
     --  pragma Initialize_Scalars or by the binder. Return an expression created
     --  at source location Loc, which denotes the invalid value.
  
+    function Is_Anonymous_Access_Actual (N : Node_Id) return Boolean;
+    --  Determine if N is used as an actual for a call whose corresponding
+    --  formal is of an anonymous access type.
+ 
+    function Is_Access_Subprogram_Wrapper (E : Entity_Id) return Boolean;
+    --  True if E is the constructed wrapper for an access_to_subprogram
+    --  type with Pre/Postconditions.
+ 
+    function Is_Access_Variable (E : Entity_Id) return Boolean;
+    --  Determines if type E is an access-to-variable
+ 
+    function Is_Actual_In_Out_Parameter (N : Node_Id) return Boolean;
+    --  Determines if N is an actual parameter of in-out mode in a subprogram
+    --  call.
+ 
     function Is_Actual_Out_Parameter (N : Node_Id) return Boolean;
     --  Determines if N is an actual parameter of out mode in a subprogram call
  
+    function Is_Actual_Out_Or_In_Out_Parameter (N : Node_Id) return Boolean;
+    --  Determines if N is an actual parameter of out or in out mode in a
+    --  subprogram call.
+ 
     function Is_Actual_Parameter (N : Node_Id) return Boolean;
     --  Determines if N is an actual parameter in a subprogram call
  
*************** package Sem_Util is
*** 1533,1541 ****
     --  Determine whether arbitrary node N denotes a reference to an atomic
     --  object as per RM C.6(7) and the crucial remark in RM C.6(8).
  
!    function Is_Atomic_Or_VFA_Object (N : Node_Id) return Boolean;
!    --  Determine whether arbitrary node N denotes a reference to an object
!    --  which is either atomic or Volatile_Full_Access.
  
     function Is_Attribute_Old (N : Node_Id) return Boolean;
     --  Determine whether node N denotes attribute 'Old
--- 1736,1743 ----
     --  Determine whether arbitrary node N denotes a reference to an atomic
     --  object as per RM C.6(7) and the crucial remark in RM C.6(8).
  
!    function Is_Attribute_Loop_Entry (N : Node_Id) return Boolean;
!    --  Determine whether node N denotes attribute 'Loop_Entry
  
     function Is_Attribute_Old (N : Node_Id) return Boolean;
     --  Determine whether node N denotes attribute 'Old
*************** package Sem_Util is
*** 1553,1558 ****
--- 1755,1770 ----
     --  True if T is a bounded string type. Used to make sure "=" composes
     --  properly for bounded string types.
  
+    function Is_By_Protected_Procedure (Id : Entity_Id) return Boolean;
+    --  Determine whether entity Id denotes a procedure with synchronization
+    --  kind By_Protected_Procedure.
+ 
+    function Is_Confirming (Aspect : Nonoverridable_Aspect_Id;
+                            Aspect_Spec_1, Aspect_Spec_2 : Node_Id)
+                           return Boolean;
+    --  Returns true if the two specifications of the given
+    --  nonoverridable aspect are compatible.
+ 
     function Is_Constant_Bound (Exp : Node_Id) return Boolean;
     --  Exp is the expression for an array bound. Determines whether the
     --  bound is a compile-time known value, or a constant entity, or an
*************** package Sem_Util is
*** 1609,1614 ****
--- 1821,1833 ----
     --  declarations. In Ada 2012 it also covers type and subtype declarations
     --  with aspects: Invariant, Predicate, and Default_Initial_Condition.
  
+    function Is_Current_Instance_Reference_In_Type_Aspect
+      (N : Node_Id) return Boolean;
+    --  True if N is a reference to a current instance object that occurs within
+    --  an aspect_specification for a type or subtype. In this case N will be
+    --  a formal parameter of a subprogram created for a predicate, invariant,
+    --  or Default_Initial_Condition aspect.
+ 
     function Is_Declaration
       (N                : Node_Id;
        Body_OK          : Boolean := True;
*************** package Sem_Util is
*** 1680,1686 ****
     --  . machine_emax = 2**10
     --  . machine_emin = 3 - machine_emax
  
!    function Is_Effectively_Volatile (Id : Entity_Id) return Boolean;
     --  Determine whether a type or object denoted by entity Id is effectively
     --  volatile (SPARK RM 7.1.2). To qualify as such, the entity must be either
     --    * Volatile without No_Caching
--- 1899,1907 ----
     --  . machine_emax = 2**10
     --  . machine_emin = 3 - machine_emax
  
!    function Is_Effectively_Volatile
!      (Id               : Entity_Id;
!       Ignore_Protected : Boolean := False) return Boolean;
     --  Determine whether a type or object denoted by entity Id is effectively
     --  volatile (SPARK RM 7.1.2). To qualify as such, the entity must be either
     --    * Volatile without No_Caching
*************** package Sem_Util is
*** 1688,1704 ****
     --    * An array type whose component type is effectively volatile
     --    * A protected type
     --    * Descendant of type Ada.Synchronous_Task_Control.Suspension_Object
  
!    function Is_Effectively_Volatile_Object (N : Node_Id) return Boolean;
     --  Determine whether an arbitrary node denotes an effectively volatile
     --  object (SPARK RM 7.1.2).
  
     function Is_Entry_Body (Id : Entity_Id) return Boolean;
     --  Determine whether entity Id is the body entity of an entry [family]
  
     function Is_Entry_Declaration (Id : Entity_Id) return Boolean;
     --  Determine whether entity Id is the spec entity of an entry [family]
  
     function Is_Expanded_Priority_Attribute (E : Entity_Id) return Boolean;
     --  Check whether a function in a call is an expanded priority attribute,
     --  which is transformed into an Rtsfind call to Get_Ceiling. This expansion
--- 1909,1957 ----
     --    * An array type whose component type is effectively volatile
     --    * A protected type
     --    * Descendant of type Ada.Synchronous_Task_Control.Suspension_Object
+    --
+    --  If Ignore_Protected is True, then a protected object/type is treated
+    --  like a non-protected record object/type for computing the result of
+    --  this query.
  
!    function Is_Effectively_Volatile_For_Reading
!      (Id               : Entity_Id;
!       Ignore_Protected : Boolean := False) return Boolean;
!    --  Determine whether a type or object denoted by entity Id is effectively
!    --  volatile for reading (SPARK RM 7.1.2). To qualify as such, the entity
!    --  must be either
!    --    * Volatile without No_Caching and have Async_Writers or
!    --      Effective_Reads set to True
!    --    * An array type subject to aspect Volatile_Components, unless it has
!    --      Async_Writers and Effective_Reads set to False
!    --    * An array type whose component type is effectively volatile for
!    --      reading
!    --    * A protected type
!    --    * Descendant of type Ada.Synchronous_Task_Control.Suspension_Object
!    --
!    --  If Ignore_Protected is True, then a protected object/type is treated
!    --  like a non-protected record object/type for computing the result of
!    --  this query.
! 
!    function Is_Effectively_Volatile_Object
!      (N : Node_Id) return Boolean;
     --  Determine whether an arbitrary node denotes an effectively volatile
     --  object (SPARK RM 7.1.2).
  
+    function Is_Effectively_Volatile_Object_For_Reading
+      (N : Node_Id) return Boolean;
+    --  Determine whether an arbitrary node denotes an effectively volatile
+    --  object for reading (SPARK RM 7.1.2).
+ 
     function Is_Entry_Body (Id : Entity_Id) return Boolean;
     --  Determine whether entity Id is the body entity of an entry [family]
  
     function Is_Entry_Declaration (Id : Entity_Id) return Boolean;
     --  Determine whether entity Id is the spec entity of an entry [family]
  
+    function Is_Explicitly_Aliased (N : Node_Id) return Boolean;
+    --  Determine if a given node N is an explicitly aliased formal parameter.
+ 
     function Is_Expanded_Priority_Attribute (E : Entity_Id) return Boolean;
     --  Check whether a function in a call is an expanded priority attribute,
     --  which is transformed into an Rtsfind call to Get_Ceiling. This expansion
*************** package Sem_Util is
*** 1732,1737 ****
--- 1985,1994 ----
     --  Returns True iff the number U is a model number of the fixed-point type
     --  T, i.e. if it is an exact multiple of Small.
  
+    function Is_Full_Access_Object (N : Node_Id) return Boolean;
+    --  Determine whether arbitrary node N denotes a reference to a full access
+    --  object as per Ada 2020 RM C.6(8.2).
+ 
     function Is_Fully_Initialized_Type (Typ : Entity_Id) return Boolean;
     --  Typ is a type entity. This function returns true if this type is fully
     --  initialized, meaning that an object of the type is fully initialized.
*************** package Sem_Util is
*** 1807,1812 ****
--- 2064,2072 ----
     --  parameter of the current enclosing subprogram.
     --  Why are OUT parameters not considered here ???
  
+    function Is_Master (N : Node_Id) return Boolean;
+    --  Determine if the given node N constitutes a finalization master
+ 
     function Is_Name_Reference (N : Node_Id) return Boolean;
     --  Determine whether arbitrary node N is a reference to a name. This is
     --  similar to Is_Object_Reference but returns True only if N can be renamed
*************** package Sem_Util is
*** 1828,1840 ****
     --  null component list.
  
     function Is_Object_Image (Prefix : Node_Id) return Boolean;
!    --  Returns True if an 'Image, 'Wide_Image, or 'Wide_Wide_Image attribute
!    --  is applied to a given object or named value prefix (see below).
! 
!    --  AI12-00124: The ARG has adopted the GNAT semantics of 'Img for scalar
!    --  types, so that the prefix of any 'Image attribute can be an object, a
!    --  named value, or a type, and there is no need for an argument in the
!    --  case it is an object reference.
  
     function Is_Object_Reference (N : Node_Id) return Boolean;
     --  Determines if the tree referenced by N represents an object. Both
--- 2088,2095 ----
     --  null component list.
  
     function Is_Object_Image (Prefix : Node_Id) return Boolean;
!    --  Returns True if an 'Img, 'Image, 'Wide_Image, or 'Wide_Wide_Image
!    --  attribute is applied to an object.
  
     function Is_Object_Reference (N : Node_Id) return Boolean;
     --  Determines if the tree referenced by N represents an object. Both
*************** package Sem_Util is
*** 1851,1857 ****
       (Context : Node_Id;
        Obj_Ref : Node_Id) return Boolean;
     --  Determine whether node Context denotes a "non-interfering context" (as
!    --  defined in SPARK RM 7.1.3(12)) where volatile reference Obj_Ref can
     --  safely reside.
  
     function Is_Package_Contract_Annotation (Item : Node_Id) return Boolean;
--- 2106,2112 ----
       (Context : Node_Id;
        Obj_Ref : Node_Id) return Boolean;
     --  Determine whether node Context denotes a "non-interfering context" (as
!    --  defined in SPARK RM 7.1.3(10)) where volatile reference Obj_Ref can
     --  safely reside.
  
     function Is_Package_Contract_Annotation (Item : Node_Id) return Boolean;
*************** package Sem_Util is
*** 1868,1874 ****
     --  Typ is a type entity. This function returns true if this type is partly
     --  initialized, meaning that an object of the type is at least partly
     --  initialized (in particular in the record case, that at least one
!    --  component has an initialization expression). Note that initialization
     --  resulting from the use of pragma Normalize_Scalars does not count.
     --  Include_Implicit controls whether implicit initialization of access
     --  values to null, and of discriminant values, is counted as making the
--- 2123,2130 ----
     --  Typ is a type entity. This function returns true if this type is partly
     --  initialized, meaning that an object of the type is at least partly
     --  initialized (in particular in the record case, that at least one
!    --  component has an initialization expression, including via Default_Value
!    --  and Default_Component_Value aspects). Note that initialization
     --  resulting from the use of pragma Normalize_Scalars does not count.
     --  Include_Implicit controls whether implicit initialization of access
     --  values to null, and of discriminant values, is counted as making the
*************** package Sem_Util is
*** 1931,1939 ****
     function Is_Renamed_Entry (Proc_Nam : Entity_Id) return Boolean;
     --  Return True if Proc_Nam is a procedure renaming of an entry
  
-    function Is_Renaming_Declaration (N : Node_Id) return Boolean;
-    --  Determine whether arbitrary node N denotes a renaming declaration
- 
     function Is_Reversible_Iterator (Typ : Entity_Id) return Boolean;
     --  AI05-0139-2: Check whether Typ is derived from the predefined interface
     --  Ada.Iterator_Interfaces.Reversible_Iterator.
--- 2187,2192 ----
*************** package Sem_Util is
*** 1973,1988 ****
     --  Determine whether arbitrary entity Id denotes the anonymous object
     --  created for a single task type.
  
!    function Is_SPARK_05_Initialization_Expr (N : Node_Id) return Boolean;
!    --  Determines if the tree referenced by N represents an initialization
!    --  expression in SPARK 2005, suitable for initializing an object in an
!    --  object declaration.
  
!    function Is_SPARK_05_Object_Reference (N : Node_Id) return Boolean;
!    --  Determines if the tree referenced by N represents an object in SPARK
!    --  2005. This differs from Is_Object_Reference in that only variables,
!    --  constants, formal parameters, and selected_components of those are
!    --  valid objects in SPARK 2005.
  
     function Is_Specific_Tagged_Type (Typ : Entity_Id) return Boolean;
     --  Determine whether an arbitrary [private] type is specifically tagged
--- 2226,2245 ----
     --  Determine whether arbitrary entity Id denotes the anonymous object
     --  created for a single task type.
  
!    function Is_Special_Aliased_Formal_Access
!      (Exp               : Node_Id;
!       In_Return_Context : Boolean := False) return Boolean;
!    --  Determines whether a dynamic check must be generated for explicitly
!    --  aliased formals within a function Scop for the expression Exp.
  
!    --  In_Return_Context forces Is_Special_Aliased_Formal_Access to assume
!    --  that Exp is within a return value which is useful for checking
!    --  expressions within discriminant associations of return objects.
! 
!    --  More specially, Is_Special_Aliased_Formal_Access checks that Exp is a
!    --  'Access attribute reference within a return statement where the ultimate
!    --  prefix is an aliased formal of Scop and that Scop returns an anonymous
!    --  access type. See RM 3.10.2 for more details.
  
     function Is_Specific_Tagged_Type (Typ : Entity_Id) return Boolean;
     --  Determine whether an arbitrary [private] type is specifically tagged
*************** package Sem_Util is
*** 1994,2002 ****
     --  the N_Statement_Other_Than_Procedure_Call subtype from Sinfo).
     --  Note that a label is *not* a statement, and will return False.
  
!    function Is_Subcomponent_Of_Atomic_Object (N : Node_Id) return Boolean;
     --  Determine whether arbitrary node N denotes a reference to a subcomponent
!    --  of an atomic object as per RM C.6(7).
  
     function Is_Subprogram_Contract_Annotation (Item : Node_Id) return Boolean;
     --  Determine whether aspect specification or pragma Item is one of the
--- 2251,2275 ----
     --  the N_Statement_Other_Than_Procedure_Call subtype from Sinfo).
     --  Note that a label is *not* a statement, and will return False.
  
!    function Is_Static_Discriminant_Component (N : Node_Id) return Boolean;
!    --  Return True if N is guaranteed to a selected component containing a
!    --  statically known discriminant.
!    --  Note that this routine takes a conservative view and may return False
!    --  in some cases where N would match the criteria. In other words this
!    --  routine should be used to simplify or optimize the expanded code.
! 
!    function Is_Static_Function (Subp : Entity_Id) return Boolean;
!    --  Determine whether subprogram Subp denotes a static function,
!    --  which is a function with the aspect Static with value True.
! 
!    function Is_Static_Function_Call (Call : Node_Id) return Boolean;
!    --  Determine whether Call is a static call to a static function,
!    --  meaning that the name of the call denotes a static function
!    --  and all of the call's actual parameters are given by static expressions.
! 
!    function Is_Subcomponent_Of_Full_Access_Object (N : Node_Id) return Boolean;
     --  Determine whether arbitrary node N denotes a reference to a subcomponent
!    --  of a full access object as per RM C.6(7).
  
     function Is_Subprogram_Contract_Annotation (Item : Node_Id) return Boolean;
     --  Determine whether aspect specification or pragma Item is one of the
*************** package Sem_Util is
*** 2014,2019 ****
--- 2287,2293 ----
     --    Refined_Depends
     --    Refined_Global
     --    Refined_Post
+    --    Subprogram_Variant
     --    Test_Case
  
     function Is_Subprogram_Stub_Without_Prior_Declaration
*************** package Sem_Util is
*** 2035,2041 ****
     --  such, the object must be
     --    * Of a type that yields a synchronized object
     --    * An atomic object with enabled Async_Writers
!    --    * A constant
     --    * A variable subject to pragma Constant_After_Elaboration
  
     function Is_Synchronized_Tagged_Type (E : Entity_Id) return Boolean;
--- 2309,2315 ----
     --  such, the object must be
     --    * Of a type that yields a synchronized object
     --    * An atomic object with enabled Async_Writers
!    --    * A constant not of access-to-variable type
     --    * A variable subject to pragma Constant_After_Elaboration
  
     function Is_Synchronized_Tagged_Type (E : Entity_Id) return Boolean;
*************** package Sem_Util is
*** 2088,2093 ****
--- 2362,2373 ----
     --  default is True since this routine is commonly invoked as part of the
     --  semantic analysis and it must not be disturbed by the rewriten nodes.
  
+    function Is_View_Conversion (N : Node_Id) return Boolean;
+    --  Returns True if N is a type_conversion whose operand is the name of an
+    --  object and both its target type and operand type are tagged, or it
+    --  appears in a call as an actual parameter of mode out or in out
+    --  (RM 4.6(5/2)).
+ 
     function Is_Visibly_Controlled (T : Entity_Id) return Boolean;
     --  Check whether T is derived from a visibly controlled type. This is true
     --  if the root type is declared in Ada.Finalization. If T is derived
*************** package Sem_Util is
*** 2237,2243 ****
     --  entity E. If no such instance exits, return Empty.
  
     function Needs_Finalization (Typ : Entity_Id) return Boolean;
!    --  Determine whether type Typ is controlled and this requires finalization
     --  actions.
  
     function Needs_One_Actual (E : Entity_Id) return Boolean;
--- 2517,2523 ----
     --  entity E. If no such instance exits, return Empty.
  
     function Needs_Finalization (Typ : Entity_Id) return Boolean;
!    --  Determine whether type Typ is controlled and thus requires finalization
     --  actions.
  
     function Needs_One_Actual (E : Entity_Id) return Boolean;
*************** package Sem_Util is
*** 2246,2251 ****
--- 2526,2537 ----
     --  syntactic ambiguity that results from an indexing of a function call
     --  that returns an array, so that Obj.F (X, Y) may mean F (Ob) (X, Y).
  
+    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".
+ 
     function Needs_Simple_Initialization
       (Typ         : Entity_Id;
        Consider_IS : Boolean := True) return Boolean;
*************** package Sem_Util is
*** 2271,2276 ****
--- 2557,2572 ----
     --  below. As for New_Copy_Tree, it is illegal to attempt to copy extended
     --  nodes (entities) either directly or indirectly using this function.
  
+    function New_Copy_Separate_List (List : List_Id) return List_Id;
+    --  Copy recursively a list of nodes using New_Copy_Separate_Tree
+ 
+    function New_Copy_Separate_Tree (Source : Node_Id) return Node_Id;
+    --  Perform a deep copy of the subtree rooted at Source using New_Copy_Tree
+    --  replacing entities of local declarations by new entities. This behavior
+    --  is required by the backend to ensure entities uniqueness when a copy of
+    --  a subtree is attached to the tree. The new entities keep their original
+    --  names to facilitate debugging the tree copy.
+ 
     function New_Copy_Tree
       (Source           : Node_Id;
        Map              : Elist_Id   := No_Elist;
*************** package Sem_Util is
*** 2400,2406 ****
     --  with the same mode.
  
     procedure Next_Global (Node : in out Node_Id);
!    pragma Inline (Next_Actual);
     --  Next_Global (N) is equivalent to N := Next_Global (N). Note that we
     --  inline this procedural form, but not the functional form above.
  
--- 2696,2702 ----
     --  with the same mode.
  
     procedure Next_Global (Node : in out Node_Id);
!    pragma Inline (Next_Global);
     --  Next_Global (N) is equivalent to N := Next_Global (N). Note that we
     --  inline this procedural form, but not the functional form above.
  
*************** package Sem_Util is
*** 2446,2456 ****
     --  is known at compile time. If the bounds are not known at compile time,
     --  the function returns the value zero.
  
-    function Object_Access_Level (Obj : Node_Id) return Uint;
-    --  Return the accessibility level of the view of the object Obj. For
-    --  convenience, qualified expressions applied to object names are also
-    --  allowed as actuals for this function.
- 
     function Original_Aspect_Pragma_Name (N : Node_Id) return Name_Id;
     --  Retrieve the name of aspect or pragma N, taking into account a possible
     --  rewrite and whether the pragma is generated from an aspect as the names
--- 2742,2747 ----
*************** package Sem_Util is
*** 2485,2494 ****
--- 2776,2796 ----
     --  WARNING: this routine should be used in debugging scenarios such as
     --  tracking down undefined symbols as it is fairly low level.
  
+    function Param_Entity (N : Node_Id) return Entity_Id;
+    --  Given an expression N, determines if the expression is a reference
+    --  to a formal (of a subprogram or entry), and if so returns the Id
+    --  of the corresponding formal entity, otherwise returns Empty. Also
+    --  handles the case of references to renamings of formals.
+ 
     function Policy_In_Effect (Policy : Name_Id) return Name_Id;
     --  Given a policy, return the policy identifier associated with it. If no
     --  such policy is in effect, the value returned is No_Name.
  
+    function Predicate_Enabled (Typ : Entity_Id) return Boolean;
+    --  Return True if a predicate check should be emitted for the given type
+    --  Typ, taking into account Predicates_Ignored and
+    --  Predicate_Checks_Suppressed.
+ 
     function Predicate_Tests_On_Arguments (Subp : Entity_Id) return Boolean;
     --  Subp is the entity for a subprogram call. This function returns True if
     --  predicate tests are required for the arguments in this call (this is the
*************** package Sem_Util is
*** 2542,2547 ****
--- 2844,2855 ----
     --  Inherit all invariant-related attributes form type From_Typ. Typ is the
     --  destination type.
  
+    procedure Propagate_Predicate_Attributes
+      (Typ      : Entity_Id;
+       From_Typ : Entity_Id);
+    --  Inherit some predicate-related attributes form type From_Typ. Typ is the
+    --  destination type. Probably to be completed with more attributes???
+ 
     procedure Record_Possible_Part_Of_Reference
       (Var_Id : Entity_Id;
        Ref    : Node_Id);
*************** package Sem_Util is
*** 2628,2640 ****
       (N    : Node_Id;
        Ent  : Entity_Id;
        Cond : Boolean := False) return Boolean;
!    --  The caller is interested in capturing a value (either the current value,
!    --  or an indication that the value is non-null) for the given entity Ent.
!    --  This value can only be captured if sequential execution semantics can be
!    --  properly guaranteed so that a subsequent reference will indeed be sure
!    --  that this current value indication is correct. The node N is the
!    --  construct which resulted in the possible capture of the value (this
!    --  is used to check if we are in a conditional).
     --
     --  Cond is used to skip the test for being inside a conditional. It is used
     --  in the case of capturing values from if/while tests, which already do a
--- 2936,2949 ----
       (N    : Node_Id;
        Ent  : Entity_Id;
        Cond : Boolean := False) return Boolean;
!    --  The caller is interested in capturing a value (either the current
!    --  value, an indication that the value is [non-]null or an indication that
!    --  the value is valid) for the given entity Ent. This value can only be
!    --  captured if sequential execution semantics can be properly guaranteed so
!    --  that a subsequent reference will indeed be sure that this current value
!    --  indication is correct. The node N is the construct which resulted in
!    --  the possible capture of the value (this is used to check if we are in
!    --  a conditional).
     --
     --  Cond is used to skip the test for being inside a conditional. It is used
     --  in the case of capturing values from if/while tests, which already do a
*************** package Sem_Util is
*** 2656,2661 ****
--- 2965,2976 ----
     --  mean that different objects are designated, just that this could not
     --  be reliably determined at compile time.
  
+    function Same_Or_Aliased_Subprograms
+      (S : Entity_Id;
+       E : Entity_Id) return Boolean;
+    --  Returns True if the subprogram entity S is the same as E or else S is an
+    --  alias of E.
+ 
     function Same_Type (T1, T2 : Entity_Id) return Boolean;
     --  Determines if T1 and T2 represent exactly the same type. Two types
     --  are the same if they are identical, or if one is an unconstrained
*************** package Sem_Util is
*** 2702,2707 ****
--- 3017,3026 ----
     --  Establish the entity E as the currently visible definition of its
     --  associated name (i.e. the Node_Id associated with its name).
  
+    procedure Set_Debug_Info_Defining_Id (N : Node_Id);
+    --  Call Set_Debug_Info_Needed on Defining_Identifier (N) if it comes
+    --  from source.
+ 
     procedure Set_Debug_Info_Needed (T : Entity_Id);
     --  Sets the Debug_Info_Needed flag on entity T , and also on any entities
     --  that are needed by T (for an object, the type of the object is needed,
*************** package Sem_Util is
*** 2814,2823 ****
--- 3133,3155 ----
     --  universal expression is returned, otherwise an error message is output
     --  and a value of No_Uint is returned.
  
+    function Statically_Denotes_Entity (N : Node_Id) return Boolean;
+    --  Return True iff N is a name that "statically denotes" an entity.
+ 
+    function Statically_Denotes_Object (N : Node_Id) return Boolean;
+    --  Return True iff N is a name that "statically denotes" an object.
+ 
     function Statically_Different (E1, E2 : Node_Id) return Boolean;
     --  Return True if it can be statically determined that the Expressions
     --  E1 and E2 refer to different objects
  
+    function Statically_Names_Object (N : Node_Id) return Boolean;
+    --  Return True iff N is a name that "statically names" an object.
+ 
+    function String_From_Numeric_Literal (N : Node_Id) return String_Id;
+    --  Return the string that corresponds to the numeric literal N as it
+    --  appears in the source.
+ 
     function Subject_To_Loop_Entry_Attributes (N : Node_Id) return Boolean;
     --  Determine whether node N is a loop statement subject to at least one
     --  'Loop_Entry attribute.
*************** package Sem_Util is
*** 2925,2934 ****
     --  conversions, and unchecked conversions.
  
     function Validated_View (Typ : Entity_Id) return Entity_Id;
!    --  Obtain the "validated view" of arbitrary type Typ which is suitable
!    --  for verification by attributes 'Valid and 'Valid_Scalars. This view
!    --  is the type itself or its full 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
--- 3257,3266 ----
     --  conversions, and unchecked conversions.
  
     function Validated_View (Typ : Entity_Id) return Entity_Id;
!    --  Obtain the "validated view" of arbitrary type Typ which is suitable for
!    --  verification by attributes 'Valid_Scalars. This view is the type itself
!    --  or its full 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
*************** package Sem_Util is
*** 2971,2976 ****
--- 3303,3311 ----
     function Yields_Universal_Type (N : Node_Id) return Boolean;
     --  Determine whether unanalyzed node N yields a universal type
  
+    procedure Preanalyze_Without_Errors (N : Node_Id);
+    --  Preanalyze N without reporting errors
+ 
     package Interval_Lists is
        type Discrete_Interval is
           record
*************** package Sem_Util is
*** 2984,3000 ****
        --  successive intervals (i.e., mergeable intervals are merged).
        --  Low bound is one; high bound is nonnegative.
  
        function Type_Intervals (Typ : Entity_Id) return Discrete_Interval_List;
        --  Given a static discrete type or subtype, returns the (unique)
        --  interval list representing the values of the type/subtype.
        --  If no static predicates are involved, the length of the result
        --  will be at most one.
  
-       function Choice_List_Intervals (Discrete_Choices : List_Id)
-                                      return Discrete_Interval_List;
-       --  Given a discrete choice list, returns the (unique) interval
-       --  list representing the chosen values.
- 
        function Is_Subset (Subset, Of_Set : Discrete_Interval_List)
          return Boolean;
        --  Returns True iff every value belonging to some interval of
--- 3319,3341 ----
        --  successive intervals (i.e., mergeable intervals are merged).
        --  Low bound is one; high bound is nonnegative.
  
+       function Aggregate_Intervals (N : Node_Id) return Discrete_Interval_List;
+       --  Given an array aggregate N, returns the (unique) interval list
+       --  representing the values of the aggregate choices; if all the array
+       --  components are covered by the others choice then the length of the
+       --  result is zero.
+ 
+       function Choice_List_Intervals
+         (Discrete_Choices : List_Id) return Discrete_Interval_List;
+       --  Given a discrete choice list, returns the (unique) interval
+       --  list representing the chosen values.
+ 
        function Type_Intervals (Typ : Entity_Id) return Discrete_Interval_List;
        --  Given a static discrete type or subtype, returns the (unique)
        --  interval list representing the values of the type/subtype.
        --  If no static predicates are involved, the length of the result
        --  will be at most one.
  
        function Is_Subset (Subset, Of_Set : Discrete_Interval_List)
          return Boolean;
        --  Returns True iff every value belonging to some interval of
*************** package Sem_Util is
*** 3004,3010 ****
        --  correctly for real types with static predicates, we may need
        --  an analogous Real_Interval_List type. Most of the language
        --  rules that reference "is statically compatible" pertain to
!       --  discriminants and therefore do require support for real types;
        --  the exception is 12.5.1(8).
     end Interval_Lists;
  end Sem_Util;
--- 3345,3441 ----
        --  correctly for real types with static predicates, we may need
        --  an analogous Real_Interval_List type. Most of the language
        --  rules that reference "is statically compatible" pertain to
!       --  discriminants and therefore do not require support for real types;
        --  the exception is 12.5.1(8).
+ 
+       Intervals_Error : exception;
+       --  Raised when the list of non-empty pair-wise disjoint intervals cannot
+       --  be built.
     end Interval_Lists;
+ 
+    package Old_Attr_Util is
+       --  Operations related to 'Old attribute evaluation. This
+       --  includes cases where a level of indirection is needed due to
+       --  conditional evaluation as well as support for the
+       --  "known on entry" rules.
+ 
+       package Conditional_Evaluation is
+          function Eligible_For_Conditional_Evaluation
+            (Expr : Node_Id) return Boolean;
+          --  Given a subexpression of a Postcondition expression
+          --  (typically a 'Old attribute reference), returns True if
+          --     - the expression is conditionally evaluated; and
+          --     - its determining expressions are all known on entry; and
+          --     - Ada_Version >= Ada_2020.
+          --  See RM 6.1.1 for definitions of these terms.
+          --
+          --  Also returns True if Expr is of an anonymous access type;
+          --  this is just because we want the code that knows how to build
+          --  'Old temps in that case to reside in only one place.
+ 
+          function Conditional_Evaluation_Condition
+            (Expr : Node_Id) return Node_Id;
+          --  Given an expression which is eligible for conditional evaluation,
+          --  build a Boolean expression whose value indicates whether the
+          --  expression should be evaluated.
+       end Conditional_Evaluation;
+ 
+       package Indirect_Temps is
+          generic
+             with procedure Append_Item (N : Node_Id; Is_Eval_Stmt : Boolean);
+             --  If Is_Eval_Stmt is True, then N is a statement that should
+             --  only be executed in the case where the 'Old prefix is to be
+             --  evaluated. If Is_Eval_Stmt is False, then N is a declaration
+             --  which should be elaborated unconditionally.
+             --  Client is responsible for ensuring that any appended
+             --  Eval_Stmt nodes are eventually analyzed.
+ 
+             Append_Decls_In_Reverse_Order : Boolean := False;
+             --  This parameter is for the convenience of exp_prag.adb, where we
+             --  want to Prepend rather than Append so it is better to get the
+             --  Append calls in reverse order.
+ 
+          procedure Declare_Indirect_Temp
+            (Attr_Prefix   : Node_Id; -- prefix of 'Old attribute (or similar?)
+             Indirect_Temp : out Entity_Id);
+          --  Indirect_Temp is of an access type; it is unconditionally
+          --  declared but only conditionally initialized to reference the
+          --  saved value of Attr_Prefix.
+ 
+          function Indirect_Temp_Needed (Typ : Entity_Id) return Boolean;
+          --  Returns True for a specific tagged type because the temp must
+          --  be of the class-wide type in order to preserve the underlying tag.
+          --
+          --  Also returns True in the case of an anonymous access type
+          --  because we want the code that knows how to deal with
+          --  this case to reside in only one place.
+          --
+          --  For an unconstrained-but-definite discriminated subtype, returns
+          --  True if the potential difference in size between an
+          --  unconstrained object and a constrained object is large.
+          --  [This part is not implemented yet.]
+          --
+          --  Otherwise, returns False if a declaration of the form
+          --     Temp : Typ;
+          --  is legal and side-effect-free (assuming that default
+          --  initialization is suppressed). For example, returns True if Typ is
+          --  indefinite, or if Typ has a controlled part.
+          --
+ 
+          function Indirect_Temp_Value
+            (Temp : Entity_Id;
+             Typ  : Entity_Id;
+             Loc  : Source_Ptr) return Node_Id;
+          --  Evaluate a temp declared by Declare_Indirect_Temp.
+ 
+          function Is_Access_Type_For_Indirect_Temp
+            (T : Entity_Id) return Boolean;
+          --  True for an access type that was declared via a call
+          --  to Declare_Indirect_Temp.
+          --  Indicates that the given access type should be treated
+          --  the same with respect to finalization as a
+          --  user-defined "comes from source" access type.
+ 
+       end Indirect_Temps;
+    end Old_Attr_Util;
  end Sem_Util;
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_warn.adb gcc-11.1.0/gcc/ada/sem_warn.adb
*** gcc-10.3.0/gcc/ada/sem_warn.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_warn.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Warn is
*** 750,758 ****
           Fstm : constant Node_Id :=
                    Original_Node (First (Statements (Loop_Statement)));
        begin
!          if Nkind (Fstm) = N_Delay_Relative_Statement
!            or else Nkind (Fstm) = N_Delay_Until_Statement
!          then
              return;
           end if;
        end;
--- 750,756 ----
           Fstm : constant Node_Id :=
                    Original_Node (First (Statements (Loop_Statement)));
        begin
!          if Nkind (Fstm) in N_Delay_Statement then
              return;
           end if;
        end;
*************** package body Sem_Warn is
*** 1165,1171 ****
  
              if Ekind (E1) = E_Variable
                or else
!                 (Ekind_In (E1, E_Out_Parameter, E_In_Out_Parameter)
                    and then not Is_Protected_Type (Current_Scope))
              then
                 --  If the formal has a class-wide type, retrieve its type
--- 1163,1169 ----
  
              if Ekind (E1) = E_Variable
                or else
!                 (Ekind (E1) in E_Out_Parameter | E_In_Out_Parameter
                    and then not Is_Protected_Type (Current_Scope))
              then
                 --  If the formal has a class-wide type, retrieve its type
*************** package body Sem_Warn is
*** 1416,1423 ****
                            and then not Warnings_Off_E1
                            and then not Has_Junk_Name (E1)
                          then
!                            Output_Reference_Error
!                              ("?v?variable& is read but never assigned!");
                             May_Need_Initialized_Actual (E1);
                          end if;
  
--- 1414,1427 ----
                            and then not Warnings_Off_E1
                            and then not Has_Junk_Name (E1)
                          then
!                            if Is_Access_Type (E1T)
!                              or else
!                                not Is_Partially_Initialized_Type (E1T, False)
!                            then
!                               Output_Reference_Error
!                                 ("?v?variable& is read but never assigned!");
!                            end if;
! 
                             May_Need_Initialized_Actual (E1);
                          end if;
  
*************** package body Sem_Warn is
*** 1469,1477 ****
  
                    UR := Original_Node (UR);
                    loop
!                      if Nkind_In (UR, N_Expression_With_Actions,
!                                       N_Qualified_Expression,
!                                       N_Type_Conversion)
                       then
                          UR := Expression (UR);
  
--- 1473,1481 ----
  
                    UR := Original_Node (UR);
                    loop
!                      if Nkind (UR) in N_Expression_With_Actions
!                                     | N_Qualified_Expression
!                                     | N_Type_Conversion
                       then
                          UR := Expression (UR);
  
*************** package body Sem_Warn is
*** 1612,1620 ****
                and then (Is_Object (E1)
                           or else Is_Type (E1)
                           or else Ekind (E1) = E_Label
!                          or else Ekind_In (E1, E_Exception,
!                                                E_Named_Integer,
!                                                E_Named_Real)
                           or else Is_Overloadable (E1)
  
                           --  Package case, if the main unit is a package spec
--- 1616,1624 ----
                and then (Is_Object (E1)
                           or else Is_Type (E1)
                           or else Ekind (E1) = E_Label
!                          or else Ekind (E1) in E_Exception
!                                              | E_Named_Integer
!                                              | E_Named_Real
                           or else Is_Overloadable (E1)
  
                           --  Package case, if the main unit is a package spec
*************** package body Sem_Warn is
*** 1835,1841 ****
           elsif Nkind (Pref) = N_Explicit_Dereference then
              return True;
  
!             --  If prefix is itself a component reference or slice check prefix
  
           elsif Nkind (Pref) = N_Slice
             or else Nkind (Pref) = N_Indexed_Component
--- 1839,1845 ----
           elsif Nkind (Pref) = N_Explicit_Dereference then
              return True;
  
!          --  If prefix is itself a component reference or slice check prefix
  
           elsif Nkind (Pref) = N_Slice
             or else Nkind (Pref) = N_Indexed_Component
*************** package body Sem_Warn is
*** 1872,1878 ****
        --  have a reference from generated code, it is bogus (e.g. calls to init
        --  procs to set default discriminant values).
  
!       if not Comes_From_Source (N) then
           return;
        end if;
  
--- 1876,1882 ----
        --  have a reference from generated code, it is bogus (e.g. calls to init
        --  procs to set default discriminant values).
  
!       if not Comes_From_Source (Original_Node (N)) then
           return;
        end if;
  
*************** package body Sem_Warn is
*** 1895,1901 ****
                 E : constant Entity_Id := Entity (N);
  
              begin
!                if Ekind_In (E, E_Variable, E_Out_Parameter)
                   and then Never_Set_In_Source_Check_Spec (E)
                   and then not Has_Initial_Value (E)
                   and then (No (Unset_Reference (E))
--- 1899,1905 ----
                 E : constant Entity_Id := Entity (N);
  
              begin
!                if Ekind (E) in E_Variable | E_Out_Parameter
                   and then Never_Set_In_Source_Check_Spec (E)
                   and then not Has_Initial_Value (E)
                   and then (No (Unset_Reference (E))
*************** package body Sem_Warn is
*** 1975,1984 ****
                          Nod := Parent (N);
                          while Present (Nod) loop
                             if Nkind (Nod) = N_Pragma
!                              and then Nam_In (Pragma_Name_Unmapped (Nod),
!                                               Name_Postcondition,
!                                               Name_Refined_Post,
!                                               Name_Contract_Cases)
                             then
                                return True;
  
--- 1979,1989 ----
                          Nod := Parent (N);
                          while Present (Nod) loop
                             if Nkind (Nod) = N_Pragma
!                              and then
!                                Pragma_Name_Unmapped (Nod)
!                                 in Name_Postcondition
!                                  | Name_Refined_Post
!                                  | Name_Contract_Cases
                             then
                                return True;
  
*************** package body Sem_Warn is
*** 2102,2108 ****
                                P := Parent (P);
                                exit when No (P);
  
!                               if Nkind_In (P, N_If_Statement, N_Elsif_Part)
                                  and then Ref_In (Condition (P))
                                then
                                   return;
--- 2107,2113 ----
                                P := Parent (P);
                                exit when No (P);
  
!                               if Nkind (P) in N_If_Statement | N_Elsif_Part
                                  and then Ref_In (Condition (P))
                                then
                                   return;
*************** package body Sem_Warn is
*** 2247,2256 ****
     ------------------------
  
     procedure Check_Unused_Withs (Spec_Unit : Unit_Number_Type := No_Unit) is
-       Cnode : Node_Id;
-       Item  : Node_Id;
-       Lunit : Node_Id;
-       Ent   : Entity_Id;
  
        Munite : constant Entity_Id := Cunit_Entity (Main_Unit);
        --  This is needed for checking the special renaming case
--- 2252,2257 ----
*************** package body Sem_Warn is
*** 2263,2270 ****
        --------------------
  
        procedure Check_One_Unit (Unit : Unit_Number_Type) is
           Is_Visible_Renaming : Boolean := False;
-          Pack                : Entity_Id;
  
           procedure Check_Inner_Package (Pack : Entity_Id);
           --  Pack is a package local to a unit in a with_clause. Both the unit
--- 2264,2272 ----
        --------------------
  
        procedure Check_One_Unit (Unit : Unit_Number_Type) is
+          Cnode : constant Node_Id := Cunit (Unit);
+ 
           Is_Visible_Renaming : Boolean := False;
  
           procedure Check_Inner_Package (Pack : Entity_Id);
           --  Pack is a package local to a unit in a with_clause. Both the unit
*************** package body Sem_Warn is
*** 2272,2278 ****
           --  referenced, then the only occurrence of Pack is in a USE clause
           --  or a pragma, and a warning is worthwhile as well.
  
!          function Check_System_Aux return Boolean;
           --  Before giving a warning on a with_clause for System, check whether
           --  a system extension is present.
  
--- 2274,2280 ----
           --  referenced, then the only occurrence of Pack is in a USE clause
           --  or a pragma, and a warning is worthwhile as well.
  
!          function Check_System_Aux (Lunit : Entity_Id) return Boolean;
           --  Before giving a warning on a with_clause for System, check whether
           --  a system extension is present.
  
*************** package body Sem_Warn is
*** 2351,2357 ****
           -- Check_System_Aux --
           ----------------------
  
!          function Check_System_Aux return Boolean is
              Ent : Entity_Id;
  
           begin
--- 2353,2359 ----
           -- Check_System_Aux --
           ----------------------
  
!          function Check_System_Aux (Lunit : Entity_Id) return Boolean is
              Ent : Entity_Id;
  
           begin
*************** package body Sem_Warn is
*** 2446,2456 ****
              return False;
           end Has_Visible_Entities;
  
        --  Start of processing for Check_One_Unit
  
        begin
-          Cnode := Cunit (Unit);
- 
           --  Only do check in units that are part of the extended main unit.
           --  This is actually a necessary restriction, because in the case of
           --  subprogram acting as its own specification, there can be with's in
--- 2448,2463 ----
              return False;
           end Has_Visible_Entities;
  
+          --  Local variables
+ 
+          Ent   : Entity_Id;
+          Item  : Node_Id;
+          Lunit : Entity_Id;
+          Pack  : Entity_Id;
+ 
        --  Start of processing for Check_One_Unit
  
        begin
           --  Only do check in units that are part of the extended main unit.
           --  This is actually a necessary restriction, because in the case of
           --  subprogram acting as its own specification, there can be with's in
*************** package body Sem_Warn is
*** 2500,2506 ****
                       --  package with only a linker options pragma and nothing
                       --  else or a pragma elaborate with a body library task).
  
!                      elsif Has_Visible_Entities (Entity (Name (Item))) then
                          Error_Msg_N -- CODEFIX
                            ("?u?unit& is not referenced!", Name (Item));
                       end if;
--- 2507,2513 ----
                       --  package with only a linker options pragma and nothing
                       --  else or a pragma elaborate with a body library task).
  
!                      elsif Has_Visible_Entities (Lunit) then
                          Error_Msg_N -- CODEFIX
                            ("?u?unit& is not referenced!", Name (Item));
                       end if;
*************** package body Sem_Warn is
*** 2569,2632 ****
                             if Unit = Spec_Unit then
                                Set_No_Entities_Ref_In_Spec (Item);
  
!                            elsif Check_System_Aux then
                                null;
  
                             --  Else the warning may be needed
  
                             else
!                               declare
!                                  Eitem : constant Entity_Id :=
!                                            Entity (Name (Item));
! 
!                               begin
!                                  --  Warn if we unreferenced flag set and we
!                                  --  have not had serious errors. The reason we
!                                  --  inhibit the message if there are errors is
!                                  --  to prevent false positives from disabling
!                                  --  expansion.
  
!                                  if not Has_Unreferenced (Eitem)
!                                    and then Serious_Errors_Detected = 0
!                                  then
!                                     --  Get possible package renaming
  
!                                     Pack :=
!                                       Find_Package_Renaming (Munite, Lunit);
  
!                                     --  No warning if either the package or its
!                                     --  renaming is used as a generic actual.
  
!                                     if Used_As_Generic_Actual (Eitem)
!                                       or else
!                                         (Present (Pack)
!                                           and then
!                                             Used_As_Generic_Actual (Pack))
!                                     then
!                                        exit;
!                                     end if;
  
!                                     --  Here we give the warning
  
!                                     Error_Msg_N -- CODEFIX
!                                       ("?u?no entities of & are referenced!",
!                                        Name (Item));
  
!                                     --  Flag renaming of package as well. If
!                                     --  the original package has warnings off,
!                                     --  we suppress the warning on the renaming
!                                     --  as well.
  
!                                     if Present (Pack)
!                                       and then not Has_Warnings_Off (Lunit)
!                                       and then not Has_Unreferenced (Pack)
!                                     then
!                                        Error_Msg_NE -- CODEFIX
!                                          ("?u?no entities of& are referenced!",
!                                           Unit_Declaration_Node (Pack), Pack);
!                                     end if;
                                   end if;
!                               end;
                             end if;
  
                             exit;
--- 2576,2631 ----
                             if Unit = Spec_Unit then
                                Set_No_Entities_Ref_In_Spec (Item);
  
!                            elsif Check_System_Aux (Lunit) then
                                null;
  
                             --  Else the warning may be needed
  
                             else
!                               --  Warn if we unreferenced flag set and we have
!                               --  not had serious errors. The reason we inhibit
!                               --  the message if there are errors is to prevent
!                               --  false positives from disabling expansion.
  
!                               if not Has_Unreferenced (Lunit)
!                                 and then Serious_Errors_Detected = 0
!                               then
!                                  --  Get possible package renaming
  
!                                  Pack := Find_Package_Renaming (Munite, Lunit);
  
!                                  --  No warning if either the package or its
!                                  --  renaming is used as a generic actual.
  
!                                  if Used_As_Generic_Actual (Lunit)
!                                    or else
!                                      (Present (Pack)
!                                        and then
!                                          Used_As_Generic_Actual (Pack))
!                                  then
!                                     exit;
!                                  end if;
  
!                                  --  Here we give the warning
  
!                                  Error_Msg_N -- CODEFIX
!                                    ("?u?no entities of & are referenced!",
!                                     Name (Item));
  
!                                  --  Flag renaming of package as well. If
!                                  --  the original package has warnings off,
!                                  --  we suppress the warning on the renaming
!                                  --  as well.
  
!                                  if Present (Pack)
!                                    and then not Has_Warnings_Off (Lunit)
!                                    and then not Has_Unreferenced (Pack)
!                                  then
!                                     Error_Msg_NE -- CODEFIX
!                                       ("?u?no entities of& are referenced!",
!                                        Unit_Declaration_Node (Pack), Pack);
                                   end if;
!                               end if;
                             end if;
  
                             exit;
*************** package body Sem_Warn is
*** 2993,2998 ****
--- 2992,3004 ----
  
     exception
        when others =>
+          --  With debug flag K we will get an exception unless an error has
+          --  already occurred (useful for debugging).
+ 
+          if Debug_Flag_K then
+             Check_Error_Detected;
+          end if;
+ 
           return False;
     end Operand_Has_Warnings_Suppressed;
  
*************** package body Sem_Warn is
*** 3069,3082 ****
              --  Here we generate the warning
  
              else
!                --  If -gnatwc is set then output message that we could be IN
  
                 if not Is_Trivial_Subprogram (Scope (E1)) then
                    if Warn_On_Constant then
                       Error_Msg_N
!                        ("?u?formal parameter & is not modified!", E1);
                       Error_Msg_N
!                        ("\?u?mode could be IN instead of `IN OUT`!", E1);
  
                       --  We do not generate warnings for IN OUT parameters
                       --  unless we have at least -gnatwu. This is deliberately
--- 3075,3088 ----
              --  Here we generate the warning
  
              else
!                --  If -gnatwk is set then output message that we could be IN
  
                 if not Is_Trivial_Subprogram (Scope (E1)) then
                    if Warn_On_Constant then
                       Error_Msg_N
!                        ("?k?formal parameter & is not modified!", E1);
                       Error_Msg_N
!                        ("\?k?mode could be IN instead of `IN OUT`!", E1);
  
                       --  We do not generate warnings for IN OUT parameters
                       --  unless we have at least -gnatwu. This is deliberately
*************** package body Sem_Warn is
*** 3181,3187 ****
  
        --  Reference to obsolescent component
  
!       elsif Ekind_In (E, E_Component, E_Discriminant) then
           Error_Msg_NE
             ("??reference to obsolescent component& declared#", N, E);
  
--- 3187,3193 ----
  
        --  Reference to obsolescent component
  
!       elsif Ekind (E) in E_Component | E_Discriminant then
           Error_Msg_NE
             ("??reference to obsolescent component& declared#", N, E);
  
*************** package body Sem_Warn is
*** 3386,3396 ****
  
           if True_Result then
              Error_Msg_N
!               ("condition can only be False if invalid values present??", Op);
  
           elsif False_Result then
              Error_Msg_N
!               ("condition can only be True if invalid values present??", Op);
           end if;
        end if;
     end Warn_On_Constant_Valid_Condition;
--- 3392,3402 ----
  
           if True_Result then
              Error_Msg_N
!               ("condition can only be False if invalid values present?c?", Op);
  
           elsif False_Result then
              Error_Msg_N
!               ("condition can only be True if invalid values present?c?", Op);
           end if;
        end if;
     end Warn_On_Constant_Valid_Condition;
*************** package body Sem_Warn is
*** 3520,3525 ****
--- 3526,3532 ----
        if Constant_Condition_Warnings
          and then Is_Known_Branch
          and then Comes_From_Source (Orig)
+         and then Nkind (Orig) in N_Has_Entity
          and then not In_Instance
        then
           --  Don't warn if comparison of result of attribute against a constant
*************** package body Sem_Warn is
*** 3559,3566 ****
              --  node, since assert pragmas get rewritten at analysis time.
  
              elsif Nkind (Original_Node (P)) = N_Pragma
!               and then Nam_In (Pragma_Name_Unmapped (Original_Node (P)),
!                                Name_Assert, Name_Check)
              then
                 return;
              end if;
--- 3566,3574 ----
              --  node, since assert pragmas get rewritten at analysis time.
  
              elsif Nkind (Original_Node (P)) = N_Pragma
!               and then
!                 Pragma_Name_Unmapped (Original_Node (P))
!                   in Name_Assert | Name_Check
              then
                 return;
              end if;
*************** package body Sem_Warn is
*** 3643,3651 ****
     ---------------------------------
  
     procedure Warn_On_Overlapping_Actuals (Subp : Entity_Id; N : Node_Id) is
-       function Is_Covered_Formal (Formal : Node_Id) return Boolean;
-       --  Return True if Formal is covered by the rule
- 
        function Refer_Same_Object
          (Act1 : Node_Id;
           Act2 : Node_Id) return Boolean;
--- 3651,3656 ----
*************** package body Sem_Warn is
*** 3658,3676 ****
        --  (RM 6.4.1(6.11/3))
  
        -----------------------
-       -- Is_Covered_Formal --
-       -----------------------
- 
-       function Is_Covered_Formal (Formal : Node_Id) return Boolean is
-       begin
-          return
-            Ekind_In (Formal, E_Out_Parameter, E_In_Out_Parameter)
-              and then (Is_Elementary_Type (Etype (Formal))
-                         or else Is_Record_Type (Etype (Formal))
-                         or else Is_Array_Type (Etype (Formal)));
-       end Is_Covered_Formal;
- 
-       -----------------------
        -- Refer_Same_Object --
        -----------------------
  
--- 3663,3668 ----
*************** package body Sem_Warn is
*** 3690,3698 ****
        Act2      : Node_Id;
        Form1     : Entity_Id;
        Form2     : Entity_Id;
-       Warn_Only : Boolean;
-       --  GNAT warns on overlapping in-out parameters of any type, not just for
-       --  elementary in-out parameters (as specified in RM 6.4.1 (15/3-17/3)).
  
     --  Start of processing for Warn_On_Overlapping_Actuals
  
--- 3682,3687 ----
*************** package body Sem_Warn is
*** 3702,3730 ****
           return;
        end if;
  
-       --  The call is illegal only if there are at least two in-out parameters
-       --  of the same elementary type.
- 
-       Warn_Only := True;
-       Form1 := First_Formal (Subp);
-       while Present (Form1) loop
-          Form2 := Next_Formal (Form1);
-          while Present (Form2) loop
-             if Is_Elementary_Type (Etype (Form1))
-               and then Is_Elementary_Type (Etype (Form2))
-               and then Ekind (Form1) /= E_In_Parameter
-               and then Ekind (Form2) /= E_In_Parameter
-             then
-                Warn_Only := False;
-                exit;
-             end if;
- 
-             Next_Formal (Form2);
-          end loop;
- 
-          Next_Formal (Form1);
-       end loop;
- 
        --  Exclude calls rewritten as enumeration literals
  
        if Nkind (N) not in N_Subprogram_Call
--- 3691,3696 ----
*************** package body Sem_Warn is
*** 3738,3828 ****
        --  N that is passed as a parameter of mode in out or out to the call C,
        --  there is no other name among the other parameters of mode in out or
        --  out to C that is known to denote the same object (RM 6.4.1(6.15/3))
  
        --  If appropriate warning switch is set, we also report warnings on
!       --  overlapping parameters that are record types or array types.
  
        Form1 := First_Formal (Subp);
        Act1  := First_Actual (N);
        while Present (Form1) and then Present (Act1) loop
!          if Is_Covered_Formal (Form1) then
!             Form2 := First_Formal (Subp);
!             Act2  := First_Actual (N);
              while Present (Form2) and then Present (Act2) loop
!                if Form1 /= Form2
!                  and then Is_Covered_Formal (Form2)
!                  and then Refer_Same_Object (Act1, Act2)
!                then
!                   --  Guard against previous errors
  
!                   if Error_Posted (N)
!                     or else No (Etype (Act1))
!                     or else No (Etype (Act2))
!                   then
!                      null;
  
!                   --  If the actual is a function call in prefix notation,
!                   --  there is no real overlap.
  
!                   elsif Nkind (Act2) = N_Function_Call then
!                      null;
  
!                   --  If type is not by-copy, assume that aliasing is intended
  
!                   elsif
!                     Present (Underlying_Type (Etype (Form1)))
!                       and then
!                         (Is_By_Reference_Type (Underlying_Type (Etype (Form1)))
!                           or else
!                             Convention (Underlying_Type (Etype (Form1))) =
!                                               Convention_Ada_Pass_By_Reference)
!                   then
!                      null;
  
!                   --  Under Ada 2012 we only report warnings on overlapping
!                   --  arrays and record types if switch is set.
  
!                   elsif Ada_Version >= Ada_2012
!                     and then not Is_Elementary_Type (Etype (Form1))
!                     and then not Warn_On_Overlap
                    then
-                      null;
  
!                   --  Here we may need to issue overlap message
  
!                   else
!                      Error_Msg_Warn :=
  
!                        --  Overlap checking is an error only in Ada 2012. For
!                        --  earlier versions of Ada, this is a warning.
  
!                        Ada_Version < Ada_2012
  
!                        --  Overlap is only illegal in Ada 2012 in the case of
!                        --  elementary types (passed by copy). For other types,
!                        --  we always have a warning in all Ada versions.
  
!                        or else not Is_Elementary_Type (Etype (Form1))
  
!                        --  debug flag -gnatd.E changes the error to a warning
!                        --  even in Ada 2012 mode.
  
!                        or else Error_To_Warning
!                        or else Warn_Only;
  
!                      declare
!                         Act  : Node_Id;
!                         Form : Entity_Id;
  
!                      begin
!                         --  Find matching actual
  
!                         Act  := First_Actual (N);
!                         Form := First_Formal (Subp);
!                         while Act /= Act2 loop
!                            Next_Formal (Form);
!                            Next_Actual (Act);
!                         end loop;
  
                          if Is_Elementary_Type (Etype (Act1))
                            and then Ekind (Form2) = E_In_Parameter
--- 3704,3840 ----
        --  N that is passed as a parameter of mode in out or out to the call C,
        --  there is no other name among the other parameters of mode in out or
        --  out to C that is known to denote the same object (RM 6.4.1(6.15/3))
+       --  This has been clarified in AI12-0216 to indicate that the illegality
+       --  only occurs if both formals are of an elementary type, because of the
+       --  nondeterminism on the write-back of the corresponding actuals.
+       --  Earlier versions of the language made it illegal if only one of the
+       --  actuals was an elementary parameter that overlapped a composite
+       --  actual, and both were writable.
  
        --  If appropriate warning switch is set, we also report warnings on
!       --  overlapping parameters that are composite types. Users find these
!       --  warnings useful, and they are used in style guides.
! 
!       --  It is also worthwhile to warn on overlaps of composite objects when
!       --  only one of the formals is (in)-out. Note that the RM rule above is
!       --  a legality rule. We choose to implement this check as a warning to
!       --  avoid major incompatibilities with legacy code.
! 
!       --  Note also that the rule in 6.4.1 (6.17/3), introduced by AI12-0324,
!       --  is potentially more expensive to verify, and is not yet implemented.
  
        Form1 := First_Formal (Subp);
        Act1  := First_Actual (N);
        while Present (Form1) and then Present (Act1) loop
!          if Is_Generic_Type (Etype (Act1)) then
!             return;
!          end if;
! 
!          --  One of the formals must be either (in)-out or composite.
!          --  The other must be (in)-out.
! 
!          if Is_Elementary_Type (Etype (Act1))
!            and then Ekind (Form1) = E_In_Parameter
!          then
!             null;
! 
!          else
!             Form2 := Next_Formal (Form1);
!             Act2  := Next_Actual (Act1);
              while Present (Form2) and then Present (Act2) loop
!                if Refer_Same_Object (Act1, Act2) then
!                   if Is_Generic_Type (Etype (Act2)) then
!                      return;
!                   end if;
  
!                   --  First case : two writable elementary parameters
!                   --  that overlap.
  
!                   if (Is_Elementary_Type (Etype (Form1))
!                     and then Is_Elementary_Type (Etype (Form2))
!                     and then Ekind (Form1) /= E_In_Parameter
!                     and then Ekind (Form2) /= E_In_Parameter)
  
!                   --  Second case : two composite parameters that overlap,
!                   --  one of which is writable.
  
!                     or else (Is_Composite_Type (Etype (Form1))
!                      and then Is_Composite_Type (Etype (Form2))
!                      and then (Ekind (Form1) /= E_In_Parameter
!                        or else Ekind (Form2) /= E_In_Parameter))
  
!                   --  Third case : an elementary writable parameter that
!                   --  overlaps a composite one.
  
!                     or else (Is_Elementary_Type (Etype (Form1))
!                      and then Ekind (Form1) /= E_In_Parameter
!                      and then Is_Composite_Type (Etype (Form2)))
  
!                    or else (Is_Elementary_Type (Etype (Form2))
!                      and then Ekind (Form2) /= E_In_Parameter
!                      and then Is_Composite_Type (Etype (Form1)))
                    then
  
!                   --  Guard against previous errors
  
!                      if Error_Posted (N)
!                        or else No (Etype (Act1))
!                        or else No (Etype (Act2))
!                      then
!                         null;
  
!                      --  If the actual is a function call in prefix notation,
!                      --  there is no real overlap.
  
!                      elsif Nkind (Act2) = N_Function_Call then
!                         null;
  
!                      --  If type is explicitly not by-copy, assume that
!                      --  aliasing is intended.
  
!                      elsif
!                        Present (Underlying_Type (Etype (Form1)))
!                          and then
!                            (Is_By_Reference_Type
!                              (Underlying_Type (Etype (Form1)))
!                              or else
!                                Convention (Underlying_Type (Etype (Form1))) =
!                                             Convention_Ada_Pass_By_Reference)
!                      then
!                         null;
  
!                      --  Under Ada 2012 we only report warnings on overlapping
!                      --  arrays and record types if switch is set.
  
!                      elsif Ada_Version >= Ada_2012
!                        and then not Is_Elementary_Type (Etype (Form1))
!                        and then not Warn_On_Overlap
!                      then
!                         null;
  
!                      --  Here we may need to issue overlap message
  
!                      else
!                         Error_Msg_Warn :=
  
!                           --  Overlap checking is an error only in Ada 2012.
!                           --  For earlier versions of Ada, this is a warning.
! 
!                           Ada_Version < Ada_2012
! 
!                           --  Overlap is only illegal in Ada 2012 in the case
!                           --  of elementary types (passed by copy). For other
!                           --  types we always have a warning in all versions.
!                           --  This is clarified by AI12-0216.
! 
!                           or else not
!                            (Is_Elementary_Type (Etype (Form1))
!                             and then Is_Elementary_Type (Etype (Form2)))
! 
!                           --  debug flag -gnatd.E changes the error to a
!                           --  warning even in Ada 2012 mode.
! 
!                           or else Error_To_Warning;
  
                          if Is_Elementary_Type (Etype (Act1))
                            and then Ekind (Form2) = E_In_Parameter
*************** package body Sem_Warn is
*** 3836,3847 ****
  
                          --  If the call was written in prefix notation, and
                          --  thus its prefix before rewriting was a selected
!                         --  component, count only visible actuals in the call.
  
                          elsif Is_Entity_Name (First_Actual (N))
                            and then Nkind (Original_Node (N)) = Nkind (N)
                            and then Nkind (Name (Original_Node (N))) =
!                                                          N_Selected_Component
                            and then
                              Is_Entity_Name (Prefix (Name (Original_Node (N))))
                            and then
--- 3848,3859 ----
  
                          --  If the call was written in prefix notation, and
                          --  thus its prefix before rewriting was a selected
!                         --  component, count only visible actuals in call.
  
                          elsif Is_Entity_Name (First_Actual (N))
                            and then Nkind (Original_Node (N)) = Nkind (N)
                            and then Nkind (Name (Original_Node (N))) =
!                                                         N_Selected_Component
                            and then
                              Is_Entity_Name (Prefix (Name (Original_Node (N))))
                            and then
*************** package body Sem_Warn is
*** 3850,3879 ****
                          then
                             if Act1 = First_Actual (N) then
                                Error_Msg_FE
!                                 ("<<`IN OUT` prefix overlaps with "
!                                  & "actual for&", Act1, Form);
  
                             else
                                --  For greater clarity, give name of formal
  
!                               Error_Msg_Node_2 := Form;
                                Error_Msg_FE
!                                 ("<<writable actual for & overlaps with "
!                                  & "actual for&", Act1, Form);
                             end if;
  
                          else
                             --  For greater clarity, give name of formal
  
!                            Error_Msg_Node_2 := Form;
  
                             --  This is one of the messages
  
                             Error_Msg_FE
!                              ("<<writable actual for & overlaps with "
                                & "actual for&", Act1, Form1);
                          end if;
!                      end;
                    end if;
  
                    return;
--- 3862,3891 ----
                          then
                             if Act1 = First_Actual (N) then
                                Error_Msg_FE
!                                 ("<I<`IN OUT` prefix overlaps with "
!                                  & "actual for&", Act1, Form2);
  
                             else
                                --  For greater clarity, give name of formal
  
!                               Error_Msg_Node_2 := Form2;
                                Error_Msg_FE
!                                 ("<I<writable actual for & overlaps with "
!                                  & "actual for&", Act1, Form2);
                             end if;
  
                          else
                             --  For greater clarity, give name of formal
  
!                            Error_Msg_Node_2 := Form2;
  
                             --  This is one of the messages
  
                             Error_Msg_FE
!                              ("<I<writable actual for & overlaps with "
                                & "actual for&", Act1, Form1);
                          end if;
!                      end if;
                    end if;
  
                    return;
*************** package body Sem_Warn is
*** 4220,4226 ****
        --  Only process if warnings activated
  
        if Warn_On_Suspicious_Contract then
!          if Nkind_In (Par, N_Op_Eq, N_Op_Ne) then
              if N = Left_Opnd (Par) then
                 Arg := Right_Opnd (Par);
              else
--- 4232,4238 ----
        --  Only process if warnings activated
  
        if Warn_On_Suspicious_Contract then
!          if Nkind (Par) in N_Op_Eq | N_Op_Ne then
              if N = Left_Opnd (Par) then
                 Arg := Right_Opnd (Par);
              else
*************** package body Sem_Warn is
*** 4330,4340 ****
                 --  the message if the variable is volatile, has an address
                 --  clause, is aliased, or is a renaming, or is imported.
  
!                if Referenced_As_LHS_Check_Spec (E)
!                  and then No (Address_Clause (E))
!                  and then not Is_Volatile (E)
!                then
                    if Warn_On_Modified_Unread
                      and then not Is_Imported (E)
                      and then not Is_Aliased (E)
                      and then No (Renamed_Object (E))
--- 4342,4351 ----
                 --  the message if the variable is volatile, has an address
                 --  clause, is aliased, or is a renaming, or is imported.
  
!                if Referenced_As_LHS_Check_Spec (E) then
                    if Warn_On_Modified_Unread
+                     and then No (Address_Clause (E))
+                     and then not Is_Volatile (E)
                      and then not Is_Imported (E)
                      and then not Is_Aliased (E)
                      and then No (Renamed_Object (E))
*************** package body Sem_Warn is
*** 4408,4430 ****
                       end if;
  
                       declare
!                         B : constant Node_Id := Parent (Parent (Scope (E)));
!                         S : Entity_Id := Empty;
                       begin
!                         if Nkind_In (B,
!                                      N_Expression_Function,
!                                      N_Subprogram_Body,
!                                      N_Subprogram_Renaming_Declaration)
!                         then
!                            S := Corresponding_Spec (B);
                          end if;
  
                          --  Do not warn for dispatching operations, because
                          --  that causes too much noise. Also do not warn for
!                         --  trivial subprograms.
  
!                         if (not Present (S)
!                             or else not Is_Dispatching_Operation (S))
                            and then not Is_Trivial_Subprogram (Scope (E))
                          then
                             Error_Msg_NE -- CODEFIX
--- 4419,4448 ----
                       end if;
  
                       declare
!                         S : Node_Id := Scope (E);
                       begin
!                         if Ekind (S) = E_Subprogram_Body then
!                            S := Parent (S);
! 
!                            while Nkind (S) not in
!                              N_Expression_Function             |
!                              N_Subprogram_Body                 |
!                              N_Subprogram_Renaming_Declaration |
!                              N_Empty
!                            loop
!                               S := Parent (S);
!                            end loop;
! 
!                            if Present (S) then
!                               S := Corresponding_Spec (S);
!                            end if;
                          end if;
  
                          --  Do not warn for dispatching operations, because
                          --  that causes too much noise. Also do not warn for
!                         --  trivial subprograms (e.g. stubs).
  
!                         if (No (S) or else not Is_Dispatching_Operation (S))
                            and then not Is_Trivial_Subprogram (Scope (E))
                          then
                             Error_Msg_NE -- CODEFIX
*************** package body Sem_Warn is
*** 4576,4585 ****
  
              --  When we hit a package/subprogram body, issue warning and exit
  
!             elsif Nkind_In (P, N_Entry_Body,
!                                N_Package_Body,
!                                N_Subprogram_Body,
!                                N_Task_Body)
              then
                 --  Case of assigned value never referenced
  
--- 4594,4603 ----
  
              --  When we hit a package/subprogram body, issue warning and exit
  
!             elsif Nkind (P) in N_Entry_Body
!                              | N_Package_Body
!                              | N_Subprogram_Body
!                              | N_Task_Body
              then
                 --  Case of assigned value never referenced
  
*************** package body Sem_Warn is
*** 4603,4610 ****
                          --  Give appropriate message, distinguishing between
                          --  assignment statements and out parameters.
  
!                         if Nkind_In (Parent (LA), N_Parameter_Association,
!                                                   N_Procedure_Call_Statement)
                          then
                             Error_Msg_NE
                               ("?m?& modified by call, but value might not be "
--- 4621,4628 ----
                          --  Give appropriate message, distinguishing between
                          --  assignment statements and out parameters.
  
!                         if Nkind (Parent (LA)) in N_Parameter_Association
!                                                 | N_Procedure_Call_Statement
                          then
                             Error_Msg_NE
                               ("?m?& modified by call, but value might not be "
*************** package body Sem_Warn is
*** 4630,4637 ****
                       --  Give appropriate message, distinguishing between
                       --  assignment statements and out parameters.
  
!                      if Nkind_In (Parent (LA), N_Procedure_Call_Statement,
!                                                N_Parameter_Association)
                       then
                          Error_Msg_NE
                            ("?m?& modified by call, but value overwritten #!",
--- 4648,4655 ----
                       --  Give appropriate message, distinguishing between
                       --  assignment statements and out parameters.
  
!                      if Nkind (Parent (LA)) in N_Procedure_Call_Statement
!                                              | N_Parameter_Association
                       then
                          Error_Msg_NE
                            ("?m?& modified by call, but value overwritten #!",
*************** package body Sem_Warn is
*** 4662,4671 ****
                    --  not generate the warning, since the variable in question
                    --  may be accessed after an exception in the outer block.
  
!                   if not Nkind_In (Parent (P), N_Entry_Body,
!                                                N_Package_Body,
!                                                N_Subprogram_Body,
!                                                N_Task_Body)
                    then
                       Set_Last_Assignment (Ent, Empty);
                       return;
--- 4680,4689 ----
                    --  not generate the warning, since the variable in question
                    --  may be accessed after an exception in the outer block.
  
!                   if Nkind (Parent (P)) not in N_Entry_Body
!                                              | N_Package_Body
!                                              | N_Subprogram_Body
!                                              | N_Task_Body
                    then
                       Set_Last_Assignment (Ent, Empty);
                       return;
*************** package body Sem_Warn is
*** 4690,4696 ****
                                return;
                             end if;
  
!                            X := Next (X);
                          end loop;
                       end if;
                    end if;
--- 4708,4714 ----
                                return;
                             end if;
  
!                            Next (X);
                          end loop;
                       end if;
                    end if;
diff -Nrcpad gcc-10.3.0/gcc/ada/sem_warn.ads gcc-11.1.0/gcc/ada/sem_warn.ads
*** gcc-10.3.0/gcc/ada/sem_warn.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sem_warn.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/set_targ.adb gcc-11.1.0/gcc/ada/set_targ.adb
*** gcc-10.3.0/gcc/ada/set_targ.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/set_targ.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2013-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2013-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Set_Targ is
*** 55,60 ****
--- 55,61 ----
     S_Float_Words_BE             : constant Str := "Float_Words_BE";
     S_Int_Size                   : constant Str := "Int_Size";
     S_Long_Double_Size           : constant Str := "Long_Double_Size";
+    S_Long_Long_Long_Size        : constant Str := "Long_Long_Long_Size";
     S_Long_Long_Size             : constant Str := "Long_Long_Size";
     S_Long_Size                  : constant Str := "Long_Size";
     S_Maximum_Alignment          : constant Str := "Maximum_Alignment";
*************** package body Set_Targ is
*** 84,89 ****
--- 85,91 ----
            S_Float_Words_BE             'Unrestricted_Access,
            S_Int_Size                   'Unrestricted_Access,
            S_Long_Double_Size           'Unrestricted_Access,
+           S_Long_Long_Long_Size        'Unrestricted_Access,
            S_Long_Long_Size             'Unrestricted_Access,
            S_Long_Size                  'Unrestricted_Access,
            S_Maximum_Alignment          'Unrestricted_Access,
*************** package body Set_Targ is
*** 111,116 ****
--- 113,119 ----
            Float_Words_BE             'Address,
            Int_Size                   'Address,
            Long_Double_Size           'Address,
+           Long_Long_Long_Size        'Address,
            Long_Long_Size             'Address,
            Long_Size                  'Address,
            Maximum_Alignment          'Address,
*************** package body Set_Targ is
*** 745,752 ****
  
        for J in DTR'Range loop
           if not DTR (J) then
!             Fail ("missing entry for " & DTN (J).all & " in file "
!                   & File_Name);
           end if;
        end loop;
  
--- 748,762 ----
  
        for J in DTR'Range loop
           if not DTR (J) then
!             --  Make an exception for Long_Long_Long_Size???
! 
!             if DTN (J) = S_Long_Long_Long_Size'Unrestricted_Access then
!                Long_Long_Long_Size := Long_Long_Size;
! 
!             else
!                Fail ("missing entry for " & DTN (J).all & " in file "
!                      & File_Name);
!             end if;
           end if;
        end loop;
  
*************** begin
*** 934,939 ****
--- 944,950 ----
              Double_Scalar_Alignment    := Get_Double_Scalar_Alignment;
              Float_Words_BE             := Get_Float_Words_BE;
              Int_Size                   := Get_Int_Size;
+             Long_Long_Long_Size        := Get_Long_Long_Long_Size;
              Long_Long_Size             := Get_Long_Long_Size;
              Long_Size                  := Get_Long_Size;
              Maximum_Alignment          := Get_Maximum_Alignment;
diff -Nrcpad gcc-10.3.0/gcc/ada/set_targ.ads gcc-11.1.0/gcc/ada/set_targ.ads
*** gcc-10.3.0/gcc/ada/set_targ.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/set_targ.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2013-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2013-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Set_Targ is
*** 71,76 ****
--- 71,77 ----
     Float_Words_BE             : Nat; -- Float words stored big-endian?
     Int_Size                   : Pos; -- Standard.Integer'Size
     Long_Double_Size           : Pos; -- Standard.Long_Long_Float'Size
+    Long_Long_Long_Size        : Pos; -- Standard.Long_Long_Long_Integer'Size
     Long_Long_Size             : Pos; -- Standard.Long_Long_Integer'Size
     Long_Size                  : Pos; -- Standard.Long_Integer'Size
     Maximum_Alignment          : Pos; -- Maximum permitted alignment
diff -Nrcpad gcc-10.3.0/gcc/ada/sfn_scan.adb gcc-11.1.0/gcc/ada/sfn_scan.adb
*** gcc-10.3.0/gcc/ada/sfn_scan.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sfn_scan.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2000-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2000-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/sfn_scan.ads gcc-11.1.0/gcc/ada/sfn_scan.ads
*** gcc-10.3.0/gcc/ada/sfn_scan.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sfn_scan.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sigtramp-armdroid.c gcc-11.1.0/gcc/ada/sigtramp-armdroid.c
*** gcc-10.3.0/gcc/ada/sigtramp-armdroid.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sigtramp-armdroid.c	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                         Asm Implementation File                          *
   *                                                                          *
!  *           Copyright (C) 2015-2019, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                         Asm Implementation File                          *
   *                                                                          *
!  *           Copyright (C) 2015-2020, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/sigtramp-ios.c gcc-11.1.0/gcc/ada/sigtramp-ios.c
*** gcc-10.3.0/gcc/ada/sigtramp-ios.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sigtramp-ios.c	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                         Asm Implementation File                          *
   *                                                                          *
!  *           Copyright (C) 2015-2019, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                         Asm Implementation File                          *
   *                                                                          *
!  *           Copyright (C) 2015-2020, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/sigtramp-qnx.c gcc-11.1.0/gcc/ada/sigtramp-qnx.c
*** gcc-10.3.0/gcc/ada/sigtramp-qnx.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sigtramp-qnx.c	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                         Asm Implementation File                          *
   *                                                                          *
!  *           Copyright (C) 2017-2019, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                         Asm Implementation File                          *
   *                                                                          *
!  *           Copyright (C) 2017-2020, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/sigtramp-vxworks.c gcc-11.1.0/gcc/ada/sigtramp-vxworks.c
*** gcc-10.3.0/gcc/ada/sigtramp-vxworks.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sigtramp-vxworks.c	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                         Asm Implementation File                          *
   *                                                                          *
!  *         Copyright (C) 2011-2019, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                         Asm Implementation File                          *
   *                                                                          *
!  *         Copyright (C) 2011-2020, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/sigtramp.h gcc-11.1.0/gcc/ada/sigtramp.h
*** gcc-10.3.0/gcc/ada/sigtramp.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sigtramp.h	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 2011-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 2011-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/sinfo-cn.adb gcc-11.1.0/gcc/ada/sinfo-cn.adb
*** gcc-10.3.0/gcc/ada/sinfo-cn.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sinfo-cn.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sinfo-cn.ads gcc-11.1.0/gcc/ada/sinfo-cn.ads
*** gcc-10.3.0/gcc/ada/sinfo-cn.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sinfo-cn.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sinfo.adb gcc-11.1.0/gcc/ada/sinfo.adb
*** gcc-10.3.0/gcc/ada/sinfo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sinfo.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,37 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  --                                                                          --
  ------------------------------------------------------------------------------
  
- pragma Style_Checks (All_Checks);
- --  No subprogram ordering check, due to logical grouping
- 
  with Atree; use Atree;
  
  package body Sinfo is
--- 6,28 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with Atree; use Atree;
  
  package body Sinfo is
*************** package body Sinfo is
*** 371,377 ****
          or else NT (N).Nkind = N_Formal_Concrete_Subprogram_Declaration
          or else NT (N).Nkind = N_Formal_Package_Declaration
          or else NT (N).Nkind = N_Generic_Association
!         or else NT (N).Nkind = N_Iterated_Component_Association);
        return Flag15 (N);
     end Box_Present;
  
--- 362,369 ----
          or else NT (N).Nkind = N_Formal_Concrete_Subprogram_Declaration
          or else NT (N).Nkind = N_Formal_Package_Declaration
          or else NT (N).Nkind = N_Generic_Association
!         or else NT (N).Nkind = N_Iterated_Component_Association
!         or else NT (N).Nkind = N_Iterated_Element_Association);
        return Flag15 (N);
     end Box_Present;
  
*************** package body Sinfo is
*** 1278,1283 ****
--- 1270,1276 ----
          or else NT (N).Nkind = N_Expression_With_Actions
          or else NT (N).Nkind = N_Free_Statement
          or else NT (N).Nkind = N_Iterated_Component_Association
+         or else NT (N).Nkind = N_Iterated_Element_Association
          or else NT (N).Nkind = N_Mod_Clause
          or else NT (N).Nkind = N_Modular_Type_Definition
          or else NT (N).Nkind = N_Number_Declaration
*************** package body Sinfo is
*** 1523,1537 ****
        return Flag10 (N);
     end Has_Dynamic_Length_Check;
  
-    function Has_Dynamic_Range_Check
-       (N : Node_Id) return Boolean is
-    begin
-       pragma Assert (False
-         or else NT (N).Nkind =  N_Subtype_Declaration
-         or else NT (N).Nkind in N_Subexpr);
-       return Flag12 (N);
-    end Has_Dynamic_Range_Check;
- 
     function Has_Init_Expression
        (N : Node_Id) return Boolean is
     begin
--- 1516,1521 ----
*************** package body Sinfo is
*** 2089,2110 ****
        return Flag16 (N);
     end Is_Null_Loop;
  
-    function Is_OpenAcc_Environment
-       (N : Node_Id) return Boolean is
-    begin
-       pragma Assert (False
-         or else NT (N).Nkind = N_Loop_Statement);
-       return Flag13 (N);
-    end Is_OpenAcc_Environment;
- 
-    function Is_OpenAcc_Loop
-       (N : Node_Id) return Boolean is
-    begin
-       pragma Assert (False
-         or else NT (N).Nkind = N_Loop_Statement);
-       return Flag14 (N);
-    end Is_OpenAcc_Loop;
- 
     function Is_Overloaded
        (N : Node_Id) return Boolean is
     begin
--- 2073,2078 ----
*************** package body Sinfo is
*** 2121,2126 ****
--- 2089,2102 ----
        return Flag13 (N);
     end Is_Power_Of_2_For_Shift;
  
+    function Is_Preelaborable_Call
+       (N : Node_Id) return Boolean is
+    begin
+       pragma Assert (False
+         or else NT (N).Nkind = N_Call_Marker);
+       return Flag7 (N);
+    end Is_Preelaborable_Call;
+ 
     function Is_Prefixed_Call
        (N : Node_Id) return Boolean is
     begin
*************** package body Sinfo is
*** 2240,2245 ****
--- 2216,2230 ----
        return Flag5 (N);
     end Is_Write;
  
+    function Iterator_Filter
+      (N : Node_Id) return Node_Id is
+    begin
+       pragma Assert (False
+         or else NT (N).Nkind = N_Iterator_Specification
+         or else NT (N).Nkind = N_Loop_Parameter_Specification);
+       return Node3 (N);
+    end Iterator_Filter;
+ 
     function Iteration_Scheme
        (N : Node_Id) return Node_Id is
     begin
*************** package body Sinfo is
*** 2252,2257 ****
--- 2237,2244 ----
       (N : Node_Id) return Node_Id is
     begin
        pragma Assert (False
+         or else NT (N).Nkind = N_Iterated_Component_Association
+         or else NT (N).Nkind = N_Iterated_Element_Association
          or else NT (N).Nkind = N_Iteration_Scheme
          or else NT (N).Nkind = N_Quantified_Expression);
        return Node2 (N);
*************** package body Sinfo is
*** 2265,2270 ****
--- 2252,2265 ----
        return Node1 (N);
     end Itype;
  
+    function Key_Expression
+       (N : Node_Id) return Node_Id is
+    begin
+       pragma Assert (False
+       or else NT (N).Nkind = N_Iterated_Element_Association);
+       return Node1 (N);
+    end Key_Expression;
+ 
     function Kill_Range_Check
        (N : Node_Id) return Boolean is
     begin
*************** package body Sinfo is
*** 2374,2387 ****
     begin
        pragma Assert (False
          or else NT (N).Nkind = N_Component_Association
!         or else NT (N).Nkind = N_Iterated_Component_Association);
!       return List2 (N);
     end Loop_Actions;
  
     function Loop_Parameter_Specification
        (N : Node_Id) return Node_Id is
     begin
        pragma Assert (False
          or else NT (N).Nkind = N_Iteration_Scheme
          or else NT (N).Nkind = N_Quantified_Expression);
        return Node4 (N);
--- 2369,2384 ----
     begin
        pragma Assert (False
          or else NT (N).Nkind = N_Component_Association
!         or else NT (N).Nkind = N_Iterated_Component_Association
!         or else NT (N).Nkind = N_Iterated_Element_Association);
!       return List5 (N);
     end Loop_Actions;
  
     function Loop_Parameter_Specification
        (N : Node_Id) return Node_Id is
     begin
        pragma Assert (False
+         or else NT (N).Nkind = N_Iterated_Element_Association
          or else NT (N).Nkind = N_Iteration_Scheme
          or else NT (N).Nkind = N_Quantified_Expression);
        return Node4 (N);
*************** package body Sinfo is
*** 2554,2559 ****
--- 2551,2557 ----
          or else NT (N).Nkind = N_Aspect_Specification
          or else NT (N).Nkind = N_Attribute_Definition_Clause
          or else NT (N).Nkind = N_Enumeration_Representation_Clause
+         or else NT (N).Nkind = N_Null_Statement
          or else NT (N).Nkind = N_Pragma
          or else NT (N).Nkind = N_Record_Representation_Clause);
        return Node5 (N);
*************** package body Sinfo is
*** 3411,3427 ****
        return List2 (N);
     end Then_Statements;
  
-    function Treat_Fixed_As_Integer
-       (N : Node_Id) return Boolean is
-    begin
-       pragma Assert (False
-         or else NT (N).Nkind = N_Op_Divide
-         or else NT (N).Nkind = N_Op_Mod
-         or else NT (N).Nkind = N_Op_Multiply
-         or else NT (N).Nkind = N_Op_Rem);
-       return Flag14 (N);
-    end Treat_Fixed_As_Integer;
- 
     function Triggering_Alternative
        (N : Node_Id) return Node_Id is
     begin
--- 3409,3414 ----
*************** package body Sinfo is
*** 3548,3553 ****
--- 3535,3548 ----
        return Flag2 (N);
     end Was_Attribute_Reference;
  
+    function Was_Default_Init_Box_Association
+      (N : Node_Id) return Boolean is
+    begin
+       pragma Assert (False
+         or else NT (N).Nkind = N_Component_Association);
+       return Flag14 (N);
+    end Was_Default_Init_Box_Association;
+ 
     function Was_Expression_Function
        (N : Node_Id) return Boolean is
     begin
*************** package body Sinfo is
*** 3881,3887 ****
          or else NT (N).Nkind = N_Formal_Concrete_Subprogram_Declaration
          or else NT (N).Nkind = N_Formal_Package_Declaration
          or else NT (N).Nkind = N_Generic_Association
!         or else NT (N).Nkind = N_Iterated_Component_Association);
        Set_Flag15 (N, Val);
     end Set_Box_Present;
  
--- 3876,3883 ----
          or else NT (N).Nkind = N_Formal_Concrete_Subprogram_Declaration
          or else NT (N).Nkind = N_Formal_Package_Declaration
          or else NT (N).Nkind = N_Generic_Association
!         or else NT (N).Nkind = N_Iterated_Component_Association
!         or else NT (N).Nkind = N_Iterated_Element_Association);
        Set_Flag15 (N, Val);
     end Set_Box_Present;
  
*************** package body Sinfo is
*** 4779,4784 ****
--- 4775,4781 ----
          or else NT (N).Nkind = N_Expression_With_Actions
          or else NT (N).Nkind = N_Free_Statement
          or else NT (N).Nkind = N_Iterated_Component_Association
+         or else NT (N).Nkind = N_Iterated_Element_Association
          or else NT (N).Nkind = N_Mod_Clause
          or else NT (N).Nkind = N_Modular_Type_Definition
          or else NT (N).Nkind = N_Number_Declaration
*************** package body Sinfo is
*** 5024,5038 ****
        Set_Flag10 (N, Val);
     end Set_Has_Dynamic_Length_Check;
  
-    procedure Set_Has_Dynamic_Range_Check
-       (N : Node_Id; Val : Boolean := True) is
-    begin
-       pragma Assert (False
-         or else NT (N).Nkind =  N_Subtype_Declaration
-         or else NT (N).Nkind in N_Subexpr);
-       Set_Flag12 (N, Val);
-    end Set_Has_Dynamic_Range_Check;
- 
     procedure Set_Has_Init_Expression
        (N : Node_Id; Val : Boolean := True) is
     begin
--- 5021,5026 ----
*************** package body Sinfo is
*** 5592,5613 ****
        Set_Flag16 (N, Val);
     end Set_Is_Null_Loop;
  
-    procedure Set_Is_OpenAcc_Environment
-       (N : Node_Id; Val : Boolean := True) is
-    begin
-       pragma Assert (False
-         or else NT (N).Nkind = N_Loop_Statement);
-       Set_Flag13 (N, Val);
-    end Set_Is_OpenAcc_Environment;
- 
-    procedure Set_Is_OpenAcc_Loop
-       (N : Node_Id; Val : Boolean := True) is
-    begin
-       pragma Assert (False
-         or else NT (N).Nkind = N_Loop_Statement);
-       Set_Flag14 (N, Val);
-    end Set_Is_OpenAcc_Loop;
- 
     procedure Set_Is_Overloaded
        (N : Node_Id; Val : Boolean := True) is
     begin
--- 5580,5585 ----
*************** package body Sinfo is
*** 5624,5629 ****
--- 5596,5609 ----
        Set_Flag13 (N, Val);
     end Set_Is_Power_Of_2_For_Shift;
  
+    procedure Set_Is_Preelaborable_Call
+       (N : Node_Id; Val : Boolean := True) is
+    begin
+       pragma Assert (False
+         or else NT (N).Nkind = N_Call_Marker);
+       Set_Flag7 (N, Val);
+    end Set_Is_Preelaborable_Call;
+ 
     procedure Set_Is_Prefixed_Call
        (N : Node_Id; Val : Boolean := True) is
     begin
*************** package body Sinfo is
*** 5745,5750 ****
--- 5725,5739 ----
        Set_Flag5 (N, Val);
     end Set_Is_Write;
  
+    procedure Set_Iterator_Filter
+      (N : Node_Id; Val : Node_Id) is
+    begin
+       pragma Assert (False
+         or else NT (N).Nkind = N_Iterator_Specification
+         or else NT (N).Nkind = N_Loop_Parameter_Specification);
+       Set_Node3_With_Parent (N, Val);
+    end Set_Iterator_Filter;
+ 
     procedure Set_Iteration_Scheme
        (N : Node_Id; Val : Node_Id) is
     begin
*************** package body Sinfo is
*** 5757,5762 ****
--- 5746,5753 ----
       (N : Node_Id; Val : Node_Id) is
     begin
        pragma Assert (False
+         or else NT (N).Nkind = N_Iterated_Component_Association
+         or else NT (N).Nkind = N_Iterated_Element_Association
          or else NT (N).Nkind = N_Iteration_Scheme
          or else NT (N).Nkind = N_Quantified_Expression);
        Set_Node2_With_Parent (N, Val);
*************** package body Sinfo is
*** 5770,5775 ****
--- 5761,5774 ----
        Set_Node1 (N, Val); -- no parent, semantic field
     end Set_Itype;
  
+    procedure Set_Key_Expression
+       (N : Node_Id; Val : Entity_Id) is
+    begin
+       pragma Assert (False
+       or else NT (N).Nkind = N_Iterated_Element_Association);
+       Set_Node1_With_Parent (N, Val);
+    end Set_Key_Expression;
+ 
     procedure Set_Kill_Range_Check
        (N : Node_Id; Val : Boolean := True) is
     begin
*************** package body Sinfo is
*** 5879,5892 ****
     begin
        pragma Assert (False
          or else NT (N).Nkind = N_Component_Association
!         or else NT (N).Nkind = N_Iterated_Component_Association);
!       Set_List2 (N, Val); -- semantic field, no parent set
     end Set_Loop_Actions;
  
     procedure Set_Loop_Parameter_Specification
        (N : Node_Id; Val : Node_Id) is
     begin
        pragma Assert (False
          or else NT (N).Nkind = N_Iteration_Scheme
          or else NT (N).Nkind = N_Quantified_Expression);
        Set_Node4_With_Parent (N, Val);
--- 5878,5893 ----
     begin
        pragma Assert (False
          or else NT (N).Nkind = N_Component_Association
!         or else NT (N).Nkind = N_Iterated_Component_Association
!         or else NT (N).Nkind = N_Iterated_Element_Association);
!       Set_List5 (N, Val); -- semantic field, no parent set
     end Set_Loop_Actions;
  
     procedure Set_Loop_Parameter_Specification
        (N : Node_Id; Val : Node_Id) is
     begin
        pragma Assert (False
+         or else NT (N).Nkind = N_Iterated_Element_Association
          or else NT (N).Nkind = N_Iteration_Scheme
          or else NT (N).Nkind = N_Quantified_Expression);
        Set_Node4_With_Parent (N, Val);
*************** package body Sinfo is
*** 6059,6064 ****
--- 6060,6066 ----
          or else NT (N).Nkind = N_Aspect_Specification
          or else NT (N).Nkind = N_Attribute_Definition_Clause
          or else NT (N).Nkind = N_Enumeration_Representation_Clause
+         or else NT (N).Nkind = N_Null_Statement
          or else NT (N).Nkind = N_Pragma
          or else NT (N).Nkind = N_Record_Representation_Clause);
        Set_Node5 (N, Val); -- semantic field, no parent set
*************** package body Sinfo is
*** 6916,6932 ****
        Set_List2_With_Parent (N, Val);
     end Set_Then_Statements;
  
-    procedure Set_Treat_Fixed_As_Integer
-       (N : Node_Id; Val : Boolean := True) is
-    begin
-       pragma Assert (False
-         or else NT (N).Nkind = N_Op_Divide
-         or else NT (N).Nkind = N_Op_Mod
-         or else NT (N).Nkind = N_Op_Multiply
-         or else NT (N).Nkind = N_Op_Rem);
-       Set_Flag14 (N, Val);
-    end Set_Treat_Fixed_As_Integer;
- 
     procedure Set_Triggering_Alternative
        (N : Node_Id; Val : Node_Id) is
     begin
--- 6918,6923 ----
*************** package body Sinfo is
*** 7053,7058 ****
--- 7044,7057 ----
        Set_Flag2 (N, Val);
     end Set_Was_Attribute_Reference;
  
+    procedure Set_Was_Default_Init_Box_Association
+      (N : Node_Id; Val : Boolean := True) is
+    begin
+       pragma Assert (False
+         or else NT (N).Nkind = N_Component_Association);
+       Set_Flag14 (N, Val);
+    end Set_Was_Default_Init_Box_Association;
+ 
     procedure Set_Was_Expression_Function
        (N : Node_Id; Val : Boolean := True) is
     begin
*************** package body Sinfo is
*** 7133,7370 ****
          UI_From_Int (Int (S) - Int (Sloc (N))));
     end Set_End_Location;
  
-    --------------
-    -- Nkind_In --
-    --------------
- 
-    function Nkind_In
-      (T  : Node_Kind;
-       V1 : Node_Kind;
-       V2 : Node_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2;
-    end Nkind_In;
- 
-    function Nkind_In
-      (T  : Node_Kind;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3;
-    end Nkind_In;
- 
-    function Nkind_In
-      (T  : Node_Kind;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4;
-    end Nkind_In;
- 
-    function Nkind_In
-      (T  : Node_Kind;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5;
-    end Nkind_In;
- 
-    function Nkind_In
-      (T  : Node_Kind;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind;
-       V6 : Node_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5 or else
-              T = V6;
-    end Nkind_In;
- 
-    function Nkind_In
-      (T  : Node_Kind;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind;
-       V6 : Node_Kind;
-       V7 : Node_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5 or else
-              T = V6 or else
-              T = V7;
-    end Nkind_In;
- 
-    function Nkind_In
-      (T  : Node_Kind;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind;
-       V6 : Node_Kind;
-       V7 : Node_Kind;
-       V8 : Node_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5 or else
-              T = V6 or else
-              T = V7 or else
-              T = V8;
-    end Nkind_In;
- 
-    function Nkind_In
-      (T  : Node_Kind;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind;
-       V6 : Node_Kind;
-       V7 : Node_Kind;
-       V8 : Node_Kind;
-       V9 : Node_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5 or else
-              T = V6 or else
-              T = V7 or else
-              T = V8 or else
-              T = V9;
-    end Nkind_In;
- 
-    function Nkind_In
-      (T   : Node_Kind;
-       V1  : Node_Kind;
-       V2  : Node_Kind;
-       V3  : Node_Kind;
-       V4  : Node_Kind;
-       V5  : Node_Kind;
-       V6  : Node_Kind;
-       V7  : Node_Kind;
-       V8  : Node_Kind;
-       V9  : Node_Kind;
-       V10 : Node_Kind) return Boolean
-    is
-    begin
-       return T = V1 or else
-              T = V2 or else
-              T = V3 or else
-              T = V4 or else
-              T = V5 or else
-              T = V6 or else
-              T = V7 or else
-              T = V8 or else
-              T = V9 or else
-              T = V10;
-    end Nkind_In;
- 
-    function Nkind_In
-      (T   : Node_Kind;
-       V1  : Node_Kind;
-       V2  : Node_Kind;
-       V3  : Node_Kind;
-       V4  : Node_Kind;
-       V5  : Node_Kind;
-       V6  : Node_Kind;
-       V7  : Node_Kind;
-       V8  : Node_Kind;
-       V9  : Node_Kind;
-       V10 : Node_Kind;
-       V11 : Node_Kind) return Boolean
-    is
-    begin
-       return T = V1  or else
-              T = V2  or else
-              T = V3  or else
-              T = V4  or else
-              T = V5  or else
-              T = V6  or else
-              T = V7  or else
-              T = V8  or else
-              T = V9  or else
-              T = V10 or else
-              T = V11;
-    end Nkind_In;
- 
-    function Nkind_In
-      (T   : Node_Kind;
-       V1  : Node_Kind;
-       V2  : Node_Kind;
-       V3  : Node_Kind;
-       V4  : Node_Kind;
-       V5  : Node_Kind;
-       V6  : Node_Kind;
-       V7  : Node_Kind;
-       V8  : Node_Kind;
-       V9  : Node_Kind;
-       V10 : Node_Kind;
-       V11 : Node_Kind;
-       V12 : Node_Kind;
-       V13 : Node_Kind;
-       V14 : Node_Kind;
-       V15 : Node_Kind;
-       V16 : Node_Kind) return Boolean
-    is
-    begin
-       return T = V1  or else
-              T = V2  or else
-              T = V3  or else
-              T = V4  or else
-              T = V5  or else
-              T = V6  or else
-              T = V7  or else
-              T = V8  or else
-              T = V9  or else
-              T = V10 or else
-              T = V11 or else
-              T = V12 or else
-              T = V13 or else
-              T = V14 or else
-              T = V15 or else
-              T = V16;
-    end Nkind_In;
- 
     --------------------------
     -- Pragma_Name_Unmapped --
     --------------------------
--- 7132,7137 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/sinfo.ads gcc-11.1.0/gcc/ada/sinfo.ads
*** gcc-10.3.0/gcc/ada/sinfo.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sinfo.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Sinfo is
*** 381,387 ****
     --  subprogram instance, and the other is an anonymous subprogram nested
     --  within a wrapper package that contains the renamings for the actuals.
     --  Both of these entities have the Sloc of the defining entity in the
!    --  instantiation node. This simplifies some ASIS queries.
  
     -----------------------
     -- Field Definitions --
--- 375,382 ----
     --  subprogram instance, and the other is an anonymous subprogram nested
     --  within a wrapper package that contains the renamings for the actuals.
     --  Both of these entities have the Sloc of the defining entity in the
!    --  instantiation node. This simplified for instance in the past some ASIS
!    --  queries.
  
     -----------------------
     -- Field Definitions --
*************** package Sinfo is
*** 398,407 ****
     --  (defined in Tree_Print_Strings) used to print trees. The following
     --  abbreviations are used:
  
-    --  Note: the utility program that creates the Treeprs spec (in the file
-    --  xtreeprs.adb) knows about the special fields here, so it must be
-    --  modified if any change is made to these fields.
- 
     --    "plus fields for binary operator"
     --       Chars                    (Name1)      Name_Id for the operator
     --       Left_Opnd                (Node2)      left operand expression
--- 393,398 ----
*************** package Sinfo is
*** 428,437 ****
     --       Must_Not_Freeze          (Flag8-Sem)  set if must not freeze
     --       Do_Range_Check           (Flag9-Sem)  set if a range check needed
     --       Has_Dynamic_Length_Check (Flag10-Sem) set if length check inserted
-    --       Has_Dynamic_Range_Check  (Flag12-Sem) set if range check inserted
     --       Assignment_OK            (Flag15-Sem) set if modification is OK
     --       Is_Controlling_Actual    (Flag16-Sem) set for controlling argument
  
     --  Note: see under (EXPRESSION) for further details on the use of
     --  the Paren_Count field to record the number of parentheses levels.
  
--- 419,431 ----
     --       Must_Not_Freeze          (Flag8-Sem)  set if must not freeze
     --       Do_Range_Check           (Flag9-Sem)  set if a range check needed
     --       Has_Dynamic_Length_Check (Flag10-Sem) set if length check inserted
     --       Assignment_OK            (Flag15-Sem) set if modification is OK
     --       Is_Controlling_Actual    (Flag16-Sem) set for controlling argument
  
+    --  Note: the utility program that creates the Treeprs spec (in the file
+    --  xtreeprs.adb) knows about the special fields here, so it must be
+    --  modified if any change is made to these fields.
+ 
     --  Note: see under (EXPRESSION) for further details on the use of
     --  the Paren_Count field to record the number of parentheses levels.
  
*************** package Sinfo is
*** 458,529 ****
     --  code is being generated, since they involved expander actions that
     --  destroy the tree.
  
-    ---------------
-    -- ASIS Mode --
-    ---------------
- 
-    --  When a file is compiled in ASIS mode (-gnatct), expansion is skipped,
-    --  and the analysis must generate a tree in a form that meets all ASIS
-    --  requirements.
- 
-    --  ASIS must be able to recover the original tree that corresponds to the
-    --  source. It relies heavily on Original_Node for this purpose, which as
-    --  described in Atree, records the history when a node is rewritten. ASIS
-    --  uses Original_Node to recover the original node before the Rewrite.
- 
-    --  At least in ASIS mode (not really important in non-ASIS mode), when
-    --  N1 is rewritten as N2:
- 
-    --    The subtree rooted by the original node N1 should be fully decorated,
-    --    i.e. all semantic fields noted in sinfo.ads should be set properly
-    --    and any referenced entities should be complete (with exceptions for
-    --    representation information, noted below).
- 
-    --    For all the direct descendants of N1 (original node) their Parent
-    --    links should point not to N1, but to N2 (rewriting node).
- 
-    --    The Parent links of rewritten nodes (N1 in this example) are set in
-    --    some cases (to point to the rewritten parent), but in other cases
-    --    they are set to Empty. This needs sorting out ??? It would be much
-    --    cleaner if they could always be set in the original node ???
- 
-    --  There are a few cases when ASIS has to use not the original, but the
-    --  rewritten tree structures. This happens when because of some important
-    --  technical reasons it is impossible or very hard to have the original
-    --  structure properly decorated by semantic information, and the rewritten
-    --  structure fully reproduces the original source. Below is the (incomplete
-    --  for the moment???) list of such exceptions:
-    --
-    --    Generic specifications and generic bodies
-    --    Function calls that use prefixed notation (Operand.Operation [(...)])
- 
-    --  Representation Information
- 
-    --    For the purposes of the data description annex, the representation
-    --    information for source declared entities must be complete in the
-    --    ASIS tree.
- 
-    --    This requires that the front end call the back end (gigi/gcc) in
-    --    a special "back annotate only" mode to obtain information on layout
-    --    from the back end.
- 
-    --    For the purposes of this special "back annotate only" mode, the
-    --    requirements that would normally need to be met to generate code
-    --    are relaxed as follows:
- 
-    --      Anonymous types need not have full representation information (e.g.
-    --      sizes need not be set for types where the front end would normally
-    --      set the sizes), since anonymous types can be ignored in this mode.
- 
-    --      In this mode, gigi will see at least fragments of a fully annotated
-    --      unexpanded tree. This means that it will encounter nodes it does
-    --      not normally handle (such as stubs, task bodies etc). It should
-    --      simply ignore these nodes, since they are not relevant to the task
-    --      of back annotating representation information.
- 
-    --  Some other ASIS-specific issues are covered in specific comments in
-    --  sections for particular nodes or flags.
- 
     ----------------
     -- Ghost Mode --
     ----------------
--- 452,457 ----
*************** package Sinfo is
*** 750,764 ****
     --  These three flags are always set by the front end during semantic
     --  analysis, on expression nodes that may trigger the corresponding
     --  check. The front end then inserts or not the check during expansion. In
!    --  particular, these flags should also be correctly set in ASIS mode and
!    --  GNATprove mode. As a special case, the front end does not insert a
!    --  Do_Division_Check flag on float exponentiation expressions, for the case
!    --  where the value is 0.0 and the exponent is negative, although this case
!    --  does lead to a division check failure. As another special case,
!    --  the front end does not insert a Do_Range_Check on an allocator where
!    --  the designated type is scalar, and the designated type is more
!    --  constrained than the type of the initialized allocator value or the type
!    --  of the default value for an uninitialized allocator.
  
     --  Note that the expander always takes care of the Do_Range_Check case, so
     --  this flag will never be set in the expanded tree passed to the back end.
--- 678,692 ----
     --  These three flags are always set by the front end during semantic
     --  analysis, on expression nodes that may trigger the corresponding
     --  check. The front end then inserts or not the check during expansion. In
!    --  particular, these flags should also be correctly set in GNATprove mode.
!    --  As a special case, the front end does not insert a Do_Division_Check
!    --  flag on float exponentiation expressions, for the case where the value
!    --  is 0.0 and the exponent is negative, although this case does lead to a
!    --  division check failure. As another special case, the front end does not
!    --  insert a Do_Range_Check on an allocator where the designated type is
!    --  scalar, and the designated type is more constrained than the type of the
!    --  initialized allocator value or the type of the default value for an
!    --  uninitialized allocator.
  
     --  Note that the expander always takes care of the Do_Range_Check case, so
     --  this flag will never be set in the expanded tree passed to the back end.
*************** package Sinfo is
*** 1083,1090 ****
     --    A flag set on type conversion nodes to indicate that the conversion
     --    is to be considered as being valid, even though it is the case that
     --    the conversion is not valid Ada. This is used for attributes Enum_Rep,
!    --    Fixed_Value and Integer_Value, for internal conversions done for
!    --    fixed-point operations, and for certain conversions for calls to
     --    initialization procedures. If Conversion_OK is set, then Etype must be
     --    set (the analyzer assumes that Etype has been set). For the case of
     --    fixed-point operands, it also indicates that the conversion is to be
--- 1011,1018 ----
     --    A flag set on type conversion nodes to indicate that the conversion
     --    is to be considered as being valid, even though it is the case that
     --    the conversion is not valid Ada. This is used for attributes Enum_Rep,
!    --    Pos, Val, Fixed_Value and Integer_Value, for internal conversions done
!    --    for fixed-point operations, and for certain conversions for calls to
     --    initialization procedures. If Conversion_OK is set, then Etype must be
     --    set (the analyzer assumes that Etype has been set). For the case of
     --    fixed-point operands, it also indicates that the conversion is to be
*************** package Sinfo is
*** 1095,1101 ****
     --    Present in N_Raise_Expression nodes that appear in the body of the
     --    special predicateM function used to test a predicate in the context
     --    of a membership test, where raise expression results in returning a
!    --    value of False rather than raising an exception.
  
     --  Corresponding_Aspect (Node3-Sem)
     --    Present in N_Pragma node. Used to point back to the source aspect from
--- 1023,1029 ----
     --    Present in N_Raise_Expression nodes that appear in the body of the
     --    special predicateM function used to test a predicate in the context
     --    of a membership test, where raise expression results in returning a
!    --    value of False rather than raising an exception.???obsolete flag
  
     --  Corresponding_Aspect (Node3-Sem)
     --    Present in N_Pragma node. Used to point back to the source aspect from
*************** package Sinfo is
*** 1120,1127 ****
     --    map generic formals to their actuals. If set, the field points either
     --    to a copy of a default expression for an actual of mode IN or to a
     --    generic_association which is the original parent of the expression or
!    --    name appearing in the declaration. This simplifies ASIS and GNATprove
!    --    queries.
  
     --  Corresponding_Integer_Value (Uint4-Sem)
     --    This field is set in real literals of fixed-point types (it is not
--- 1048,1054 ----
     --    map generic formals to their actuals. If set, the field points either
     --    to a copy of a default expression for an actual of mode IN or to a
     --    generic_association which is the original parent of the expression or
!    --    name appearing in the declaration. This simplifies GNATprove queries.
  
     --  Corresponding_Integer_Value (Uint4-Sem)
     --    This field is set in real literals of fixed-point types (it is not
*************** package Sinfo is
*** 1487,1494 ****
     --    attribute is a function call (possibly dereferenced) that corresponds
     --    to the proper expansion of the source indexing operation. Before
     --    expansion, the source node is rewritten as the resolved generalized
!    --    indexing. In ASIS mode, the expansion does not take place, so that
!    --    the source is preserved and properly annotated with types.
  
     --  Generic_Parent (Node5-Sem)
     --    Generic_Parent is defined on declaration nodes that are instances. The
--- 1414,1420 ----
     --    attribute is a function call (possibly dereferenced) that corresponds
     --    to the proper expansion of the source indexing operation. Before
     --    expansion, the source node is rewritten as the resolved generalized
!    --    indexing.
  
     --  Generic_Parent (Node5-Sem)
     --    Generic_Parent is defined on declaration nodes that are instances. The
*************** package Sinfo is
*** 1523,1536 ****
     --    action which has been inserted at the flagged node. This is used to
     --    avoid the generation of duplicate checks.
  
-    --  Has_Dynamic_Range_Check (Flag12-Sem)
-    --    This flag is present in N_Subtype_Declaration nodes and on all
-    --    expression nodes. It is set to indicate that one of the routines in
-    --    unit Checks has generated a range check action which has been inserted
-    --    at the flagged node. This is used to avoid the generation of duplicate
-    --    checks. Why does this occur on N_Subtype_Declaration nodes, what does
-    --    it mean in that context???
- 
     --  Has_Local_Raise (Flag8-Sem)
     --    Present in exception handler nodes. Set if the handler can be entered
     --    via a local raise that gets transformed to a goto statement. This will
--- 1449,1454 ----
*************** package Sinfo is
*** 1838,1844 ****
     --      Test_Case
  
     --  Is_Homogeneous_Aggregate (Flag14)
!    --    A flag set on an Ada2020 aggregate that uses square brackets as
     --    delimiters, and thus denotes an array or container aggregate, or
     --    the prefix of a reduction attribute.
  
--- 1756,1762 ----
     --      Test_Case
  
     --  Is_Homogeneous_Aggregate (Flag14)
!    --    A flag set on an Ada 2020 aggregate that uses square brackets as
     --    delimiters, and thus denotes an array or container aggregate, or
     --    the prefix of a reduction attribute.
  
*************** package Sinfo is
*** 1908,1921 ****
     --    can be determined to be null at compile time. This is used to remove
     --    the loop entirely at expansion time.
  
-    --  Is_OpenAcc_Environment (Flag13-Sem)
-    --    This flag is set in an N_Loop_Statement node if it contains an
-    --    Acc_Data, Acc_Parallel or Add_Kernels pragma.
- 
-    --  Is_OpenAcc_Loop (Flag14-Sem)
-    --    This flag is set in an N_Loop_Statement node if it contains an
-    --    OpenAcc_Loop pragma.
- 
     --  Is_Overloaded (Flag5-Sem)
     --    A flag present in all expression nodes. Used temporarily during
     --    overloading determination. The setting of this flag is not relevant
--- 1826,1831 ----
*************** package Sinfo is
*** 1933,1938 ****
--- 1843,1852 ----
     --    conditions holds, and the flag is set, then the division or
     --    multiplication can be (and is) converted to a shift.
  
+    --  Is_Preelaborable_Call (Flag7-Sem)
+    --    Present in call marker nodes. Set when the related call is non-static
+    --    but preelaborable.
+ 
     --  Is_Prefixed_Call (Flag17-Sem)
     --    This flag is set in a selected component within a generic unit, if
     --    it resolves to a prefixed call to a primitive operation. The flag
*************** package Sinfo is
*** 2028,2037 ****
     --  Label_Construct (Node2-Sem)
     --    Used in an N_Implicit_Label_Declaration node. Refers to an N_Label,
     --    N_Block_Statement or N_Loop_Statement node to which the label
!    --    declaration applies. This attribute is used both in the compiler and
!    --    in the implementation of ASIS queries. The field is left empty for the
!    --    special labels generated as part of expanding raise statements with a
!    --    local exception handler.
  
     --  Library_Unit (Node4-Sem)
     --    In a stub node, Library_Unit points to the compilation unit node of
--- 1942,1950 ----
     --  Label_Construct (Node2-Sem)
     --    Used in an N_Implicit_Label_Declaration node. Refers to an N_Label,
     --    N_Block_Statement or N_Loop_Statement node to which the label
!    --    declaration applies. The field is left empty for the special labels
!    --    generated as part of expanding raise statements with a local exception
!    --    handler.
  
     --  Library_Unit (Node4-Sem)
     --    In a stub node, Library_Unit points to the compilation unit node of
*************** package Sinfo is
*** 2074,2080 ****
     --    N_Raise_xxx_Error nodes since the transformation of these nodes is
     --    handled by the back end (using the N_Push/N_Pop mechanism).
  
!    --  Loop_Actions (List2-Sem)
     --    A list present in Component_Association nodes in array aggregates.
     --    Used to collect actions that must be executed within the loop because
     --    they may need to be evaluated anew each time through.
--- 1987,1993 ----
     --    N_Raise_xxx_Error nodes since the transformation of these nodes is
     --    handled by the back end (using the N_Push/N_Pop mechanism).
  
!    --  Loop_Actions (List5-Sem)
     --    A list present in Component_Association nodes in array aggregates.
     --    Used to collect actions that must be executed within the loop because
     --    they may need to be evaluated anew each time through.
*************** package Sinfo is
*** 2162,2170 ****
  
     --  Next_Rep_Item (Node5-Sem)
     --    Present in pragma nodes, attribute definition nodes, enumeration rep
!    --    clauses, record rep clauses, aspect specification nodes. Used to link
!    --    representation items that apply to an entity. See full description of
!    --    First_Rep_Item field in Einfo for further details.
  
     --  Next_Use_Clause (Node3-Sem)
     --    While use clauses are active during semantic processing, they are
--- 2075,2083 ----
  
     --  Next_Rep_Item (Node5-Sem)
     --    Present in pragma nodes, attribute definition nodes, enumeration rep
!    --    clauses, record rep clauses, aspect specification and null statement
!    --    nodes. Used to link representation items that apply to an entity. See
!    --    full description of First_Rep_Item field in Einfo for further details.
  
     --  Next_Use_Clause (Node3-Sem)
     --    While use clauses are active during semantic processing, they are
*************** package Sinfo is
*** 2251,2257 ****
     --    Original_Entity is empty. This field is needed to handle properly
     --    named numbers in generic units, where the Associated_Node field
     --    interferes with the Entity field, making it impossible to preserve the
!    --    original entity at the point of instantiation (ASIS problem).
  
     --  Others_Discrete_Choices (List1-Sem)
     --    When a case statement or variant is analyzed, the semantic checks
--- 2164,2170 ----
     --    Original_Entity is empty. This field is needed to handle properly
     --    named numbers in generic units, where the Associated_Node field
     --    interferes with the Entity field, making it impossible to preserve the
!    --    original entity at the point of instantiation.
  
     --  Others_Discrete_Choices (List1-Sem)
     --    When a case statement or variant is analyzed, the semantic checks
*************** package Sinfo is
*** 2289,2296 ****
     --    values, this expression evaluates to False (zero) if variant is not
     --    present, and True (non-zero) if it is present. See unit Repinfo for
     --    further details on gigi back annotation. This field is used during
!    --    ASIS processing (data decomposition annex) to determine if a field is
!    --    present or not.
  
     --  Prev_Use_Clause (Node1-Sem)
     --    Present in both N_Use_Package_Clause and N_Use_Type_Clause. Used in
--- 2202,2209 ----
     --    values, this expression evaluates to False (zero) if variant is not
     --    present, and True (non-zero) if it is present. See unit Repinfo for
     --    further details on gigi back annotation. This field is used during
!    --    back-annotation processing (for -gnatR -gnatc) to determine if a field
!    --    is present or not.
  
     --  Prev_Use_Clause (Node1-Sem)
     --    Present in both N_Use_Package_Clause and N_Use_Type_Clause. Used in
*************** package Sinfo is
*** 2451,2470 ****
     --    need for this field, so in the tree passed to Gigi, this field is
     --    always set to No_List.
  
-    --  Treat_Fixed_As_Integer (Flag14-Sem)
-    --    This flag appears in operator nodes for divide, multiply, mod, and rem
-    --    on fixed-point operands. It indicates that the operands are to be
-    --    treated as integer values, ignoring small values. This flag is only
-    --    set as a result of expansion of fixed-point operations. Typically a
-    --    fixed-point multiplication in the source generates subsidiary
-    --    multiplication and division operations that work with the underlying
-    --    integer values and have this flag set. Note that this flag is not
-    --    needed on other arithmetic operations (add, neg, subtract etc.) since
-    --    in these cases it is always the case that fixed is treated as integer.
-    --    The Etype field MUST be set if this flag is set. The analyzer knows to
-    --    leave such nodes alone, and whoever makes them must set the correct
-    --    Etype value.
- 
     --  TSS_Elist (Elist3-Sem)
     --    Present in N_Freeze_Entity nodes. Holds an element list containing
     --    entries for each TSS (type support subprogram) associated with the
--- 2364,2369 ----
*************** package Sinfo is
*** 2513,2525 ****
     --    instantiation prologue renames these attributes, and expansion later
     --    converts them into subprogram bodies.
  
     --  Was_Expression_Function (Flag18-Sem)
     --    Present in N_Subprogram_Body. True if the original source had an
     --    N_Expression_Function, which was converted to the N_Subprogram_Body
!    --    by Analyze_Expression_Function. This is needed by ASIS to correctly
!    --    recreate the expression function (for the instance body) when the
!    --    completion of a generic function declaration is an expression
!    --    function.
  
     --  Was_Originally_Stub (Flag13-Sem)
     --    This flag is set in the node for a proper body that replaces stub.
--- 2412,2426 ----
     --    instantiation prologue renames these attributes, and expansion later
     --    converts them into subprogram bodies.
  
+    --  Was_Default_Init_Box_Association (Flag14-Sem)
+    --    Present in N_Component_Association. Set to True if the original source
+    --    is an aggregate component association with a box (<>) for a component
+    --    that is initialized by default.
+ 
     --  Was_Expression_Function (Flag18-Sem)
     --    Present in N_Subprogram_Body. True if the original source had an
     --    N_Expression_Function, which was converted to the N_Subprogram_Body
!    --    by Analyze_Expression_Function.
  
     --  Was_Originally_Stub (Flag13-Sem)
     --    This flag is set in the node for a proper body that replaces stub.
*************** package Sinfo is
*** 2959,2965 ****
        --  Subtype_Indication (Node5)
        --  Generic_Parent_Type (Node4-Sem) (set for an actual derived type).
        --  Exception_Junk (Flag8-Sem)
-       --  Has_Dynamic_Range_Check (Flag12-Sem)
  
        -------------------------------
        -- 3.2.2  Subtype Indication --
--- 2860,2865 ----
*************** package Sinfo is
*** 3711,3719 ****
        --  Note: in the list of Discrete_Choices, the tree passed to the back
        --  end does not have choice entries corresponding to names of statically
        --  predicated subtypes. Such entries are always expanded out to the list
!       --  of equivalent values or ranges. The ASIS tree generated in -gnatct
!       --  mode also has this expansion, but done with a proper Rewrite call on
!       --  the N_Variant node so that ASIS can properly retrieve the original.
  
        ---------------------------------
        -- 3.8.1  Discrete Choice List --
--- 3611,3617 ----
        --  Note: in the list of Discrete_Choices, the tree passed to the back
        --  end does not have choice entries corresponding to names of statically
        --  predicated subtypes. Such entries are always expanded out to the list
!       --  of equivalent values or ranges.
  
        ---------------------------------
        -- 3.8.1  Discrete Choice List --
*************** package Sinfo is
*** 4224,4232 ****
        --  N_Component_Association
        --  Sloc points to first selector name
        --  Choices (List1)
-       --  Loop_Actions (List2-Sem)
        --  Expression (Node3) (empty if Box_Present)
        --  Box_Present (Flag15)
        --  Inherited_Discriminant (Flag13)
  
        --  Note: this structure is used for both record component associations
--- 4122,4131 ----
        --  N_Component_Association
        --  Sloc points to first selector name
        --  Choices (List1)
        --  Expression (Node3) (empty if Box_Present)
+       --  Loop_Actions (List5-Sem)
        --  Box_Present (Flag15)
+       --  Was_Default_Init_Box_Association (Flag14)
        --  Inherited_Discriminant (Flag13)
  
        --  Note: this structure is used for both record component associations
*************** package Sinfo is
*** 4235,4241 ****
        --  list of selector names in the record aggregate case, or a list of
        --  discrete choices in the array aggregate case or an N_Others_Choice
        --  node (which appears as a singleton list). Box_Present gives support
!       --  to Ada 2005 (AI-287).
  
        ----------------------------------
        -- 4.3.1  Component Choice List --
--- 4134,4142 ----
        --  list of selector names in the record aggregate case, or a list of
        --  discrete choices in the array aggregate case or an N_Others_Choice
        --  node (which appears as a singleton list). Box_Present gives support
!       --  to Ada 2005 (AI-287). Was_Default_Init_Box_Association is used for
!       --  determining the need for Default_Initial_Condition check on component
!       --  associations with a box.
  
        ----------------------------------
        -- 4.3.1  Component Choice List --
*************** package Sinfo is
*** 4323,4331 ****
        --  N_Iterated_Component_Association
        --  Sloc points to FOR
        --  Defining_Identifier (Node1)
!       --  Loop_Actions (List2-Sem)
        --  Expression (Node3)
        --  Discrete_Choices (List4)
        --  Box_Present (Flag15)
  
        --  Note that Box_Present is always False, but it is intentionally added
--- 4224,4233 ----
        --  N_Iterated_Component_Association
        --  Sloc points to FOR
        --  Defining_Identifier (Node1)
!       --  Iterator_Specification (Node2) (set to Empty if no Iterator_Spec)
        --  Expression (Node3)
        --  Discrete_Choices (List4)
+       --  Loop_Actions (List5-Sem)
        --  Box_Present (Flag15)
  
        --  Note that Box_Present is always False, but it is intentionally added
*************** package Sinfo is
*** 4339,4344 ****
--- 4241,4268 ----
        --  Sloc points to left parenthesis
        --  Expression (Node3)
        --  Component_Associations (List2)
+       --  Etype (Node5-Sem)
+ 
+       ---------------------------------
+       --  3.4.5 Comtainer_Aggregates --
+       ---------------------------------
+ 
+       --  N_Iterated_Element_Association
+       --  Key_Expression (Node1)
+       --  Iterator_Specification (Node2)
+       --  Expression (Node3)
+       --  Loop_Parameter_Specification (Node4)
+       --  Loop_Actions (List5-Sem)
+       --  Box_Present (Flag15)
+ 
+       --  Exactly one of Iterator_Specification or Loop_Parameter_
+       --  specification is present. If the Key_Expression is absent,
+       --  the construct is parsed as an Iterated_Component_Association,
+       --  and legality checks are performed during semantic analysis.
+ 
+       --  Both iterated associations are Ada2020 features that are
+       --  expanded during aggregate construction, and do not appear in
+       --  expanded code.
  
        --------------------------------------------------
        -- 4.4  Expression/Relation/Term/Factor/Primary --
*************** package Sinfo is
*** 4527,4546 ****
  
        --  HIGHEST_PRECEDENCE_OPERATOR  ::=  **  | abs | not
  
!       --  Sprint syntax if Treat_Fixed_As_Integer is set:
! 
!       --     x #* y
!       --     x #/ y
!       --     x #mod y
!       --     x #rem y
! 
!       --  Gigi restriction: For * / mod rem with fixed-point operands, Gigi
!       --  will only be given nodes with the Treat_Fixed_As_Integer flag set.
!       --  All handling of smalls for multiplication and division is handled
!       --  by the front end (mod and rem result only from expansion). Gigi
!       --  thus never needs to worry about small values (for other operators
!       --  operating on fixed-point, e.g. addition, the small value does not
!       --  have any semantic effect anyway, these are always integer operations.
  
        --  Gigi restriction: For all operators taking Boolean operands, the
        --  type is always Standard.Boolean. The expander inserts the required
--- 4451,4463 ----
  
        --  HIGHEST_PRECEDENCE_OPERATOR  ::=  **  | abs | not
  
!       --  Gigi restriction: Gigi will never be given * / mod rem nodes with
!       --  fixed-point operands. All handling of smalls for multiplication and
!       --  division is handled by the front end (mod and rem result only from
!       --  expansion). Gigi thus never needs to worry about small values (for
!       --  other operators operating on fixed-point, e.g. addition, the small
!       --  value does not have any semantic effect anyway, these are always
!       --  integer operations).
  
        --  Gigi restriction: For all operators taking Boolean operands, the
        --  type is always Standard.Boolean. The expander inserts the required
*************** package Sinfo is
*** 4613,4626 ****
  
        --  N_Op_Multiply
        --  Sloc points to *
-       --  Treat_Fixed_As_Integer (Flag14-Sem)
        --  Rounded_Result (Flag18-Sem)
        --  plus fields for binary operator
        --  plus fields for expression
  
        --  N_Op_Divide
        --  Sloc points to /
-       --  Treat_Fixed_As_Integer (Flag14-Sem)
        --  Do_Division_Check (Flag13-Sem)
        --  Rounded_Result (Flag18-Sem)
        --  plus fields for binary operator
--- 4530,4541 ----
*************** package Sinfo is
*** 4628,4641 ****
  
        --  N_Op_Mod
        --  Sloc points to MOD
-       --  Treat_Fixed_As_Integer (Flag14-Sem)
        --  Do_Division_Check (Flag13-Sem)
        --  plus fields for binary operator
        --  plus fields for expression
  
        --  N_Op_Rem
        --  Sloc points to REM
-       --  Treat_Fixed_As_Integer (Flag14-Sem)
        --  Do_Division_Check (Flag13-Sem)
        --  plus fields for binary operator
        --  plus fields for expression
--- 4543,4554 ----
*************** package Sinfo is
*** 4672,4680 ****
        --  the semantics is to treat these simply as integer operations, with
        --  the small values being ignored (the bounds are already stored in
        --  units of small, so that constraint checking works as usual). For the
!       --  case of multiply/divide/rem/mod operations, Gigi will only see fixed
!       --  point operands if the Treat_Fixed_As_Integer flag is set and will
!       --  thus treat these nodes in identical manner, ignoring small values.
  
        --  Note on equality/inequality tests for records. In the expanded tree,
        --  record comparisons are always expanded to be a series of component
--- 4585,4591 ----
        --  the semantics is to treat these simply as integer operations, with
        --  the small values being ignored (the bounds are already stored in
        --  units of small, so that constraint checking works as usual). For the
!       --  case of multiply/divide/rem/mod operations, Gigi will never see them.
  
        --  Note on equality/inequality tests for records. In the expanded tree,
        --  record comparisons are always expanded to be a series of component
*************** package Sinfo is
*** 4757,4762 ****
--- 4668,4674 ----
        --  Sloc points to CASE
        --  Expression (Node3) (the selecting expression)
        --  Alternatives (List4) (the case expression alternatives)
+       --  Etype (Node5-Sem)
        --  Do_Overflow_Check (Flag17-Sem)
  
        ----------------------------------------
*************** package Sinfo is
*** 4959,4964 ****
--- 4871,4877 ----
  
        --  N_Null_Statement
        --  Sloc points to NULL
+       --  Next_Rep_Item (Node5-Sem)
  
        ----------------
        -- 5.1  Label --
*************** package Sinfo is
*** 5118,5125 ****
        --  Note: in the list of Discrete_Choices, the tree passed to the back
        --  end does not have choice entries corresponding to names of statically
        --  predicated subtypes. Such entries are always expanded out to the list
!       --  of equivalent values or ranges. The ASIS tree generated in -gnatct
!       --  mode does not have this expansion, and has the original choices.
  
        -------------------------
        -- 5.5  Loop Statement --
--- 5031,5037 ----
        --  Note: in the list of Discrete_Choices, the tree passed to the back
        --  end does not have choice entries corresponding to names of statically
        --  predicated subtypes. Such entries are always expanded out to the list
!       --  of equivalent values or ranges.
  
        -------------------------
        -- 5.5  Loop Statement --
*************** package Sinfo is
*** 5153,5160 ****
        --  Iteration_Scheme (Node2) (set to Empty if no iteration scheme)
        --  Statements (List3)
        --  End_Label (Node4)
-       --  Is_OpenAcc_Environment (Flag13-Sem)
-       --  Is_OpenAcc_Loop (Flag14-Sem)
        --  Has_Created_Identifier (Flag15)
        --  Is_Null_Loop (Flag16)
        --  Suppress_Loop_Warnings (Flag17)
--- 5065,5070 ----
*************** package Sinfo is
*** 5196,5206 ****
--- 5106,5120 ----
  
        --  LOOP_PARAMETER_SPECIFICATION ::=
        --    DEFINING_IDENTIFIER in [reverse] DISCRETE_SUBTYPE_DEFINITION
+       --    [Iterator_Filter]
+ 
+       --  Note; the optional Iterator_Filter is an Ada_2020 construct.
  
        --  N_Loop_Parameter_Specification
        --  Sloc points to first identifier
        --  Defining_Identifier (Node1)
        --  Reverse_Present (Flag15)
+       --  Iterator_Filter (Node3) (set to Empty if not present)
        --  Discrete_Subtype_Definition (Node4)
  
        -----------------------------------
*************** package Sinfo is
*** 5217,5222 ****
--- 5131,5137 ----
        --  Name (Node2)
        --  Reverse_Present (Flag15)
        --  Of_Present (Flag16)
+       --  Iterator_Filter (Node3) (set to Empty if not present)
        --  Subtype_Indication (Node5)
  
        --  Note: The Of_Present flag distinguishes the two forms
*************** package Sinfo is
*** 5502,5510 ****
  
        --  PARAMETER_SPECIFICATION ::=
        --    DEFINING_IDENTIFIER_LIST : [ALIASED] MODE [NULL_EXCLUSION]
!       --      SUBTYPE_MARK [:= DEFAULT_EXPRESSION]
        --  | DEFINING_IDENTIFIER_LIST : ACCESS_DEFINITION
!       --      [:= DEFAULT_EXPRESSION]
  
        --  Although the syntax allows multiple identifiers in the list, the
        --  semantics is as though successive specifications were given with
--- 5417,5425 ----
  
        --  PARAMETER_SPECIFICATION ::=
        --    DEFINING_IDENTIFIER_LIST : [ALIASED] MODE [NULL_EXCLUSION]
!       --      SUBTYPE_MARK [:= DEFAULT_EXPRESSION] [ASPECT_SPECIFICATIONS]
        --  | DEFINING_IDENTIFIER_LIST : ACCESS_DEFINITION
!       --      [:= DEFAULT_EXPRESSION] [ASPECT_SPECIFICATIONS]
  
        --  Although the syntax allows multiple identifiers in the list, the
        --  semantics is as though successive specifications were given with
*************** package Sinfo is
*** 6796,6803 ****
        --  limited with clause is changed into a normal with clause, because we
        --  are not prepared to deal with limited with in the context of Rtsfind.
        --  So in this case, the Limited_Present flag will be False in the final
!       --  tree. However, we do NOT do this transformation in ASIS mode, so for
!       --  ASIS the flag will remain set in this situation.
  
        ----------------------
        -- With_Type clause --
--- 6711,6717 ----
        --  limited with clause is changed into a normal with clause, because we
        --  are not prepared to deal with limited with in the context of Rtsfind.
        --  So in this case, the Limited_Present flag will be False in the final
!       --  tree.
  
        ----------------------
        -- With_Type clause --
*************** package Sinfo is
*** 7950,7955 ****
--- 7864,7870 ----
        --  Is_Source_Call (Flag4-Sem)
        --  Is_Declaration_Level_Node (Flag5-Sem)
        --  Is_Dispatching_Call (Flag6-Sem)
+       --  Is_Preelaborable_Call (Flag7-Sem)
        --  Is_Known_Guaranteed_ABE (Flag18-Sem)
  
        ------------------------
*************** package Sinfo is
*** 8033,8040 ****
        --  operation) are also in this list.
  
        --  Contract_Test_Cases contains a collection of pragmas that correspond
!       --  to aspects/pragmas Contract_Cases and Test_Case. The ordering in the
!       --  list is in LIFO fashion.
  
        --  Classifications contains pragmas that either declare, categorize, or
        --  establish dependencies between subprogram or package inputs and
--- 7948,7955 ----
        --  operation) are also in this list.
  
        --  Contract_Test_Cases contains a collection of pragmas that correspond
!       --  to aspects/pragmas Contract_Cases, Test_Case and Subprogram_Variant.
!       --  The ordering in the list is in LIFO fashion.
  
        --  Classifications contains pragmas that either declare, categorize, or
        --  establish dependencies between subprogram or package inputs and
*************** package Sinfo is
*** 8109,8117 ****
        --  executing all the actions.
  
        --  If the actions contain declarations, then these declarations may
!       --  be referenced within the expression. However note that there is
!       --  no proper scope associated with the expression-with-action, so the
!       --  back-end will elaborate them in the context of the enclosing scope.
  
        --  Sprint syntax:  do
        --                    action;
--- 8024,8041 ----
        --  executing all the actions.
  
        --  If the actions contain declarations, then these declarations may
!       --  be referenced within the expression.
! 
!       --  (AI12-0236-1): In Ada 2020, for a declare_expression, the parser
!       --  generates an N_Expression_With_Actions. Declare_expressions have
!       --  various restrictions, which we do not enforce on
!       --  N_Expression_With_Actions nodes that are generated by the
!       --  expander. The two cases can be distinguished by looking at
!       --  Comes_From_Source.
! 
!       --  ???Perhaps we should change the name of this node to
!       --  N_Declare_Expression, and perhaps we should change the Sprint syntax
!       --  to match the RM syntax for declare_expression.
  
        --  Sprint syntax:  do
        --                    action;
*************** package Sinfo is
*** 8707,8713 ****
        N_Op_Expon,
        N_Op_Subtract,
  
!       --  N_Binary_Op, N_Op, N_Subexpr, N_Has_Treat_Fixed_As_Integer
        --  N_Has_Etype, N_Has_Chars, N_Has_Entity, N_Multiplying_Operator
  
        N_Op_Divide,
--- 8631,8637 ----
        N_Op_Expon,
        N_Op_Subtract,
  
!       --  N_Binary_Op, N_Op, N_Subexpr,
        --  N_Has_Etype, N_Has_Chars, N_Has_Entity, N_Multiplying_Operator
  
        N_Op_Divide,
*************** package Sinfo is
*** 9016,9021 ****
--- 8940,8946 ----
        N_Handled_Sequence_Of_Statements,
        N_Index_Or_Discriminant_Constraint,
        N_Iterated_Component_Association,
+       N_Iterated_Element_Association,
        N_Itype_Reference,
        N_Label,
        N_Modular_Type_Definition,
*************** package Sinfo is
*** 9115,9124 ****
       N_Error ..
       N_Subtype_Indication;
  
-    subtype N_Has_Treat_Fixed_As_Integer is Node_Kind range
-       N_Op_Divide ..
-       N_Op_Rem;
- 
     subtype N_Multiplying_Operator is Node_Kind range
        N_Op_Divide ..
        N_Op_Rem;
--- 9040,9045 ----
*************** package Sinfo is
*** 9702,9710 ****
     function Has_Dynamic_Length_Check
       (N : Node_Id) return Boolean;    -- Flag10
  
-    function Has_Dynamic_Range_Check
-      (N : Node_Id) return Boolean;    -- Flag12
- 
     function Has_Init_Expression
       (N : Node_Id) return Boolean;    -- Flag14
  
--- 9623,9628 ----
*************** package Sinfo is
*** 9888,9905 ****
     function Is_Null_Loop
       (N : Node_Id) return Boolean;    -- Flag16
  
-    function Is_OpenAcc_Environment
-      (N : Node_Id) return Boolean;    -- Flag13
- 
-    function Is_OpenAcc_Loop
-      (N : Node_Id) return Boolean;    -- Flag14
- 
     function Is_Overloaded
       (N : Node_Id) return Boolean;    -- Flag5
  
     function Is_Power_Of_2_For_Shift
       (N : Node_Id) return Boolean;    -- Flag13
  
     function Is_Prefixed_Call
       (N : Node_Id) return Boolean;    -- Flag17
  
--- 9806,9820 ----
     function Is_Null_Loop
       (N : Node_Id) return Boolean;    -- Flag16
  
     function Is_Overloaded
       (N : Node_Id) return Boolean;    -- Flag5
  
     function Is_Power_Of_2_For_Shift
       (N : Node_Id) return Boolean;    -- Flag13
  
+    function Is_Preelaborable_Call
+      (N : Node_Id) return Boolean;    -- Flag7
+ 
     function Is_Prefixed_Call
       (N : Node_Id) return Boolean;    -- Flag17
  
*************** package Sinfo is
*** 9942,9953 ****
--- 9857,9874 ----
     function Iteration_Scheme
       (N : Node_Id) return Node_Id;    -- Node2
  
+    function Iterator_Filter
+      (N : Node_Id) return Node_Id;    -- Node3
+ 
     function Iterator_Specification
       (N : Node_Id) return Node_Id;    -- Node2
  
     function Itype
       (N : Node_Id) return Entity_Id;  -- Node1
  
+    function Key_Expression
+      (N : Node_Id) return Node_Id;    -- Node1
+ 
     function Kill_Range_Check
       (N : Node_Id) return Boolean;    -- Flag11
  
*************** package Sinfo is
*** 9982,9988 ****
       (N : Node_Id) return Elist_Id;   -- Elist1
  
     function Loop_Actions
!      (N : Node_Id) return List_Id;    -- List2
  
     function Loop_Parameter_Specification
       (N : Node_Id) return Node_Id;    -- Node4
--- 9903,9909 ----
       (N : Node_Id) return Elist_Id;   -- Elist1
  
     function Loop_Actions
!      (N : Node_Id) return List_Id;    -- List5
  
     function Loop_Parameter_Specification
       (N : Node_Id) return Node_Id;    -- Node4
*************** package Sinfo is
*** 10296,10304 ****
     function Then_Statements
       (N : Node_Id) return List_Id;    -- List2
  
-    function Treat_Fixed_As_Integer
-      (N : Node_Id) return Boolean;    -- Flag14
- 
     function Triggering_Alternative
       (N : Node_Id) return Node_Id;    -- Node1
  
--- 10217,10222 ----
*************** package Sinfo is
*** 10344,10349 ****
--- 10262,10270 ----
     function Was_Attribute_Reference
       (N : Node_Id) return Boolean;    -- Flag2
  
+    function Was_Default_Init_Box_Association
+      (N : Node_Id) return Boolean;    -- Flag14
+ 
     function Was_Expression_Function
       (N : Node_Id) return Boolean;    -- Flag18
  
*************** package Sinfo is
*** 10817,10825 ****
     procedure Set_Has_Dynamic_Length_Check
       (N : Node_Id; Val : Boolean := True);    -- Flag10
  
-    procedure Set_Has_Dynamic_Range_Check
-      (N : Node_Id; Val : Boolean := True);    -- Flag12
- 
     procedure Set_Has_Init_Expression
       (N : Node_Id; Val : Boolean := True);    -- Flag14
  
--- 10738,10743 ----
*************** package Sinfo is
*** 11003,11020 ****
     procedure Set_Is_Null_Loop
       (N : Node_Id; Val : Boolean := True);    -- Flag16
  
-    procedure Set_Is_OpenAcc_Environment
-      (N : Node_Id; Val : Boolean := True);    -- Flag13
- 
-    procedure Set_Is_OpenAcc_Loop
-      (N : Node_Id; Val : Boolean := True);    -- Flag14
- 
     procedure Set_Is_Overloaded
       (N : Node_Id; Val : Boolean := True);    -- Flag5
  
     procedure Set_Is_Power_Of_2_For_Shift
       (N : Node_Id; Val : Boolean := True);    -- Flag13
  
     procedure Set_Is_Prefixed_Call
       (N : Node_Id; Val : Boolean := True);    -- Flag17
  
--- 10921,10935 ----
     procedure Set_Is_Null_Loop
       (N : Node_Id; Val : Boolean := True);    -- Flag16
  
     procedure Set_Is_Overloaded
       (N : Node_Id; Val : Boolean := True);    -- Flag5
  
     procedure Set_Is_Power_Of_2_For_Shift
       (N : Node_Id; Val : Boolean := True);    -- Flag13
  
+    procedure Set_Is_Preelaborable_Call
+      (N : Node_Id; Val : Boolean := True);    -- Flag7
+ 
     procedure Set_Is_Prefixed_Call
       (N : Node_Id; Val : Boolean := True);    -- Flag17
  
*************** package Sinfo is
*** 11054,11059 ****
--- 10969,10977 ----
     procedure Set_Is_Write
       (N : Node_Id; Val : Boolean := True);    -- Flag5
  
+    procedure Set_Iterator_Filter
+      (N : Node_Id; Val : Node_Id);            -- Node3
+ 
     procedure Set_Iteration_Scheme
       (N : Node_Id; Val : Node_Id);            -- Node2
  
*************** package Sinfo is
*** 11063,11068 ****
--- 10981,10989 ----
     procedure Set_Itype
       (N : Node_Id; Val : Entity_Id);          -- Node1
  
+    procedure Set_Key_Expression
+      (N : Node_Id; Val : Node_Id);            -- Node1
+ 
     procedure Set_Kill_Range_Check
       (N : Node_Id; Val : Boolean := True);    -- Flag11
  
*************** package Sinfo is
*** 11097,11103 ****
       (N : Node_Id; Val : Elist_Id);           -- Elist1
  
     procedure Set_Loop_Actions
!      (N : Node_Id; Val : List_Id);            -- List2
  
     procedure Set_Loop_Parameter_Specification
       (N : Node_Id; Val : Node_Id);            -- Node4
--- 11018,11024 ----
       (N : Node_Id; Val : Elist_Id);           -- Elist1
  
     procedure Set_Loop_Actions
!      (N : Node_Id; Val : List_Id);            -- List5
  
     procedure Set_Loop_Parameter_Specification
       (N : Node_Id; Val : Node_Id);            -- Node4
*************** package Sinfo is
*** 11411,11419 ****
     procedure Set_Then_Statements
       (N : Node_Id; Val : List_Id);            -- List2
  
-    procedure Set_Treat_Fixed_As_Integer
-      (N : Node_Id; Val : Boolean := True);    -- Flag14
- 
     procedure Set_Triggering_Alternative
       (N : Node_Id; Val : Node_Id);            -- Node1
  
--- 11332,11337 ----
*************** package Sinfo is
*** 11459,11464 ****
--- 11377,11385 ----
     procedure Set_Was_Attribute_Reference
       (N : Node_Id; Val : Boolean := True);    -- Flag2
  
+    procedure Set_Was_Default_Init_Box_Association
+      (N : Node_Id; Val : Boolean := True);    -- Flag14
+ 
     procedure Set_Was_Expression_Function
       (N : Node_Id; Val : Boolean := True);    -- Flag18
  
*************** package Sinfo is
*** 11498,11632 ****
     --  for the argument. This is Arg itself, or, in the case where Arg is a
     --  pragma argument association node, the expression from this node.
  
-    --------------------------------
-    -- Node_Kind Membership Tests --
-    --------------------------------
- 
-    --  The following functions allow a convenient notation for testing whether
-    --  a Node_Kind value matches any one of a list of possible values. In each
-    --  case True is returned if the given T argument is equal to any of the V
-    --  arguments. Note that there is a similar set of functions defined in
-    --  Atree where the first argument is a Node_Id whose Nkind field is tested.
- 
-    function Nkind_In
-      (T  : Node_Kind;
-       V1 : Node_Kind;
-       V2 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (T  : Node_Kind;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (T  : Node_Kind;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (T  : Node_Kind;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (T  : Node_Kind;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind;
-       V6 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (T  : Node_Kind;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind;
-       V6 : Node_Kind;
-       V7 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (T  : Node_Kind;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind;
-       V6 : Node_Kind;
-       V7 : Node_Kind;
-       V8 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (T  : Node_Kind;
-       V1 : Node_Kind;
-       V2 : Node_Kind;
-       V3 : Node_Kind;
-       V4 : Node_Kind;
-       V5 : Node_Kind;
-       V6 : Node_Kind;
-       V7 : Node_Kind;
-       V8 : Node_Kind;
-       V9 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (T   : Node_Kind;
-       V1  : Node_Kind;
-       V2  : Node_Kind;
-       V3  : Node_Kind;
-       V4  : Node_Kind;
-       V5  : Node_Kind;
-       V6  : Node_Kind;
-       V7  : Node_Kind;
-       V8  : Node_Kind;
-       V9  : Node_Kind;
-       V10 : Node_Kind) return Boolean;
- 
-    function Nkind_In
-      (T   : Node_Kind;
-       V1  : Node_Kind;
-       V2  : Node_Kind;
-       V3  : Node_Kind;
-       V4  : Node_Kind;
-       V5  : Node_Kind;
-       V6  : Node_Kind;
-       V7  : Node_Kind;
-       V8  : Node_Kind;
-       V9  : Node_Kind;
-       V10 : Node_Kind;
-       V11 : Node_Kind) return Boolean;
- 
-    --  12..15-parameter versions are not yet needed
- 
-    function Nkind_In
-      (T   : Node_Kind;
-       V1  : Node_Kind;
-       V2  : Node_Kind;
-       V3  : Node_Kind;
-       V4  : Node_Kind;
-       V5  : Node_Kind;
-       V6  : Node_Kind;
-       V7  : Node_Kind;
-       V8  : Node_Kind;
-       V9  : Node_Kind;
-       V10 : Node_Kind;
-       V11 : Node_Kind;
-       V12 : Node_Kind;
-       V13 : Node_Kind;
-       V14 : Node_Kind;
-       V15 : Node_Kind;
-       V16 : Node_Kind) return Boolean;
- 
-    pragma Inline (Nkind_In);
-    --  Inline all above functions
- 
     -----------------------
     -- Utility Functions --
     -----------------------
--- 11419,11424 ----
*************** package Sinfo is
*** 12003,12022 ****
  
       N_Component_Association =>
         (1 => True,    --  Choices (List1)
!         2 => False,   --  Loop_Actions (List2-Sem)
          3 => True,    --  Expression (Node3)
          4 => False,   --  unused
!         5 => False),  --  unused
  
       N_Iterated_Component_Association =>
         (1 => True,    --  Defining_Identifier (Node1)
!         2 => True,    --  Loop_Actions (List2-Sem)
          3 => True,    --  Expression (Node3)
          4 => True,    --  Discrete_Choices (List4)
!         5 => False),  --  unused
  
       N_Delta_Aggregate =>
!        (1 => False,   --  Expressions (List1-Sem)
          2 => True,    --  Component_Associations (List2)
          3 => True,    --  Expression (Node3)
          4 => False,   --  Unused
--- 11795,11821 ----
  
       N_Component_Association =>
         (1 => True,    --  Choices (List1)
!         2 => False,   --  unused
          3 => True,    --  Expression (Node3)
          4 => False,   --  unused
!         5 => True),   --  Loop_Actions (List5-Sem);
  
       N_Iterated_Component_Association =>
         (1 => True,    --  Defining_Identifier (Node1)
!         2 => True,    --  Iterator_Specification
          3 => True,    --  Expression (Node3)
          4 => True,    --  Discrete_Choices (List4)
!         5 => True),   --  Loop_Actions (List5-Sem);
! 
!      N_Iterated_Element_Association =>
!        (1 => True,    --  Key_expression
!         2 => True,    --  Iterator_Specification
!         3 => True,    --  Expression (Node3)
!         4 => True,    --  Loop_Parameter_Specification
!         5 => True),   --  Loop_Actions (List5-Sem);
  
       N_Delta_Aggregate =>
!        (1 => False,   --  Unused
          2 => True,    --  Component_Associations (List2)
          3 => True,    --  Expression (Node3)
          4 => False,   --  Unused
*************** package Sinfo is
*** 12230,12236 ****
          2 => True,    --  Iterator_Specification (Node2)
          3 => False,   --  unused
          4 => True,    --  Loop_Parameter_Specification (Node4)
!         5 => False),  --  Etype (Node5-Sem)
  
       N_Allocator =>
         (1 => False,   --  Storage_Pool (Node1-Sem)
--- 12029,12035 ----
          2 => True,    --  Iterator_Specification (Node2)
          3 => False,   --  unused
          4 => True,    --  Loop_Parameter_Specification (Node4)
!         5 => False),  --  unused
  
       N_Allocator =>
         (1 => False,   --  Storage_Pool (Node1-Sem)
*************** package Sinfo is
*** 12286,12292 ****
          2 => False,   --  unused
          3 => True,    --  Expression (Node3)
          4 => True,    --  Alternatives (List4)
!         5 => False),  --  unused
  
       N_Case_Expression_Alternative =>
         (1 => False,   --  Actions (List1-Sem)
--- 12085,12091 ----
          2 => False,   --  unused
          3 => True,    --  Expression (Node3)
          4 => True,    --  Alternatives (List4)
!         5 => False),  --  Etype (Node5-Sem)
  
       N_Case_Expression_Alternative =>
         (1 => False,   --  Actions (List1-Sem)
*************** package Sinfo is
*** 12328,12334 ****
          2 => False,   --  unused
          3 => False,   --  unused
          4 => True,    --  Discrete_Subtype_Definition (Node4)
!         5 => False),  --  unused
  
       N_Iterator_Specification =>
         (1 => True,    --  Defining_Identifier (Node1)
--- 12127,12133 ----
          2 => False,   --  unused
          3 => False,   --  unused
          4 => True,    --  Discrete_Subtype_Definition (Node4)
!         5 => True),  --   Iterator_Filter (Node5)
  
       N_Iterator_Specification =>
         (1 => True,    --  Defining_Identifier (Node1)
*************** package Sinfo is
*** 13479,13485 ****
     pragma Inline (Has_Created_Identifier);
     pragma Inline (Has_Dereference_Action);
     pragma Inline (Has_Dynamic_Length_Check);
-    pragma Inline (Has_Dynamic_Range_Check);
     pragma Inline (Has_Init_Expression);
     pragma Inline (Has_Local_Raise);
     pragma Inline (Has_Self_Reference);
--- 13278,13283 ----
*************** package Sinfo is
*** 13542,13551 ****
     pragma Inline (Is_Known_Guaranteed_ABE);
     pragma Inline (Is_Machine_Number);
     pragma Inline (Is_Null_Loop);
-    pragma Inline (Is_OpenAcc_Environment);
-    pragma Inline (Is_OpenAcc_Loop);
     pragma Inline (Is_Overloaded);
     pragma Inline (Is_Power_Of_2_For_Shift);
     pragma Inline (Is_Prefixed_Call);
     pragma Inline (Is_Protected_Subprogram_Body);
     pragma Inline (Is_Qualified_Universal_Literal);
--- 13340,13348 ----
     pragma Inline (Is_Known_Guaranteed_ABE);
     pragma Inline (Is_Machine_Number);
     pragma Inline (Is_Null_Loop);
     pragma Inline (Is_Overloaded);
     pragma Inline (Is_Power_Of_2_For_Shift);
+    pragma Inline (Is_Preelaborable_Call);
     pragma Inline (Is_Prefixed_Call);
     pragma Inline (Is_Protected_Subprogram_Body);
     pragma Inline (Is_Qualified_Universal_Literal);
*************** package Sinfo is
*** 13559,13566 ****
--- 13356,13365 ----
     pragma Inline (Is_Task_Body_Procedure);
     pragma Inline (Is_Task_Master);
     pragma Inline (Is_Write);
+    pragma Inline (Iterator_Filter);
     pragma Inline (Iteration_Scheme);
     pragma Inline (Itype);
+    pragma Inline (Key_Expression);
     pragma Inline (Kill_Range_Check);
     pragma Inline (Last_Bit);
     pragma Inline (Last_Name);
*************** package Sinfo is
*** 13679,13685 ****
     pragma Inline (Then_Statements);
     pragma Inline (Triggering_Alternative);
     pragma Inline (Triggering_Statement);
-    pragma Inline (Treat_Fixed_As_Integer);
     pragma Inline (TSS_Elist);
     pragma Inline (Type_Definition);
     pragma Inline (Uneval_Old_Accept);
--- 13478,13483 ----
*************** package Sinfo is
*** 13693,13698 ****
--- 13491,13497 ----
     pragma Inline (Visible_Declarations);
     pragma Inline (Used_Operations);
     pragma Inline (Was_Attribute_Reference);
+    pragma Inline (Was_Default_Init_Box_Association);
     pragma Inline (Was_Expression_Function);
     pragma Inline (Was_Originally_Stub);
  
*************** package Sinfo is
*** 13847,13853 ****
     pragma Inline (Set_Has_Created_Identifier);
     pragma Inline (Set_Has_Dereference_Action);
     pragma Inline (Set_Has_Dynamic_Length_Check);
-    pragma Inline (Set_Has_Dynamic_Range_Check);
     pragma Inline (Set_Has_Init_Expression);
     pragma Inline (Set_Has_Local_Raise);
     pragma Inline (Set_Has_No_Elaboration_Code);
--- 13646,13651 ----
*************** package Sinfo is
*** 13909,13918 ****
     pragma Inline (Set_Is_Known_Guaranteed_ABE);
     pragma Inline (Set_Is_Machine_Number);
     pragma Inline (Set_Is_Null_Loop);
-    pragma Inline (Set_Is_OpenAcc_Environment);
-    pragma Inline (Set_Is_OpenAcc_Loop);
     pragma Inline (Set_Is_Overloaded);
     pragma Inline (Set_Is_Power_Of_2_For_Shift);
     pragma Inline (Set_Is_Prefixed_Call);
     pragma Inline (Set_Is_Protected_Subprogram_Body);
     pragma Inline (Set_Is_Qualified_Universal_Literal);
--- 13707,13715 ----
     pragma Inline (Set_Is_Known_Guaranteed_ABE);
     pragma Inline (Set_Is_Machine_Number);
     pragma Inline (Set_Is_Null_Loop);
     pragma Inline (Set_Is_Overloaded);
     pragma Inline (Set_Is_Power_Of_2_For_Shift);
+    pragma Inline (Set_Is_Preelaborable_Call);
     pragma Inline (Set_Is_Prefixed_Call);
     pragma Inline (Set_Is_Protected_Subprogram_Body);
     pragma Inline (Set_Is_Qualified_Universal_Literal);
*************** package Sinfo is
*** 13926,13934 ****
--- 13723,13733 ----
     pragma Inline (Set_Is_Task_Body_Procedure);
     pragma Inline (Set_Is_Task_Master);
     pragma Inline (Set_Is_Write);
+    pragma Inline (Set_Iterator_Filter);
     pragma Inline (Set_Iteration_Scheme);
     pragma Inline (Set_Iterator_Specification);
     pragma Inline (Set_Itype);
+    pragma Inline (Set_Key_Expression);
     pragma Inline (Set_Kill_Range_Check);
     pragma Inline (Set_Label_Construct);
     pragma Inline (Set_Last_Bit);
*************** package Sinfo is
*** 14044,14050 ****
     pragma Inline (Set_Task_Present);
     pragma Inline (Set_Then_Actions);
     pragma Inline (Set_Then_Statements);
-    pragma Inline (Set_Treat_Fixed_As_Integer);
     pragma Inline (Set_Triggering_Alternative);
     pragma Inline (Set_Triggering_Statement);
     pragma Inline (Set_Type_Definition);
--- 13843,13848 ----
*************** package Sinfo is
*** 14059,14064 ****
--- 13857,13863 ----
     pragma Inline (Set_Variants);
     pragma Inline (Set_Visible_Declarations);
     pragma Inline (Set_Was_Attribute_Reference);
+    pragma Inline (Set_Was_Default_Init_Box_Association);
     pragma Inline (Set_Was_Expression_Function);
     pragma Inline (Set_Was_Originally_Stub);
  
diff -Nrcpad gcc-10.3.0/gcc/ada/sinput-c.adb gcc-11.1.0/gcc/ada/sinput-c.adb
*** gcc-10.3.0/gcc/ada/sinput-c.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sinput-c.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sinput-c.ads gcc-11.1.0/gcc/ada/sinput-c.ads
*** gcc-10.3.0/gcc/ada/sinput-c.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sinput-c.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sinput-d.adb gcc-11.1.0/gcc/ada/sinput-d.adb
*** gcc-10.3.0/gcc/ada/sinput-d.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sinput-d.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sinput-d.ads gcc-11.1.0/gcc/ada/sinput-d.ads
*** gcc-10.3.0/gcc/ada/sinput-d.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sinput-d.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sinput-l.adb gcc-11.1.0/gcc/ada/sinput-l.adb
*** gcc-10.3.0/gcc/ada/sinput-l.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sinput-l.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sinput-l.ads gcc-11.1.0/gcc/ada/sinput-l.ads
*** gcc-10.3.0/gcc/ada/sinput-l.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sinput-l.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/sinput.adb gcc-11.1.0/gcc/ada/sinput.adb
*** gcc-10.3.0/gcc/ada/sinput.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sinput.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** with Debug;    use Debug;
*** 37,43 ****
  with Opt;      use Opt;
  with Output;   use Output;
  with Scans;    use Scans;
- with Tree_IO;  use Tree_IO;
  with Widechar; use Widechar;
  
  with GNAT.Byte_Order_Mark; use GNAT.Byte_Order_Mark;
--- 31,36 ----
*************** package body Sinput is
*** 938,943 ****
--- 931,938 ----
  
     procedure Sloc_Range (N : Node_Id; Min, Max : out Source_Ptr) is
  
+       Indx : constant Source_File_Index :=  Get_Source_File_Index (Sloc (N));
+ 
        function Process (N : Node_Id) return Traverse_Result;
        --  Process function for traversing the node tree
  
*************** package body Sinput is
*** 951,956 ****
--- 946,959 ----
           Orig : constant Node_Id := Original_Node (N);
  
        begin
+          --  Skip nodes that may have been added during expansion and
+          --  that originate in other units, such as code for contracts
+          --  in subprogram bodies.
+ 
+          if Get_Source_File_Index (Sloc (Orig)) /= Indx then
+             return Skip;
+          end if;
+ 
           if Sloc (Orig) < Min then
              if Sloc (Orig) > No_Location then
                 Min := Sloc (Orig);
*************** package body Sinput is
*** 1004,1163 ****
        return Oldloc;
     end Top_Level_Location;
  
-    ---------------
-    -- Tree_Read --
-    ---------------
- 
-    procedure Tree_Read is
-    begin
-       --  First we must free any old source buffer pointers
- 
-       for J in Source_File.First .. Source_File.Last loop
-          declare
-             S : Source_File_Record renames Source_File.Table (J);
-          begin
-             if S.Instance = No_Instance_Id then
-                Free_Source_Buffer (S.Source_Text);
- 
-                if S.Lines_Table /= null then
-                   Memory.Free (To_Address (S.Lines_Table));
-                   S.Lines_Table := null;
-                end if;
- 
-                if S.Logical_Lines_Table /= null then
-                   Memory.Free (To_Address (S.Logical_Lines_Table));
-                   S.Logical_Lines_Table := null;
-                end if;
- 
-             else
-                Free_Dope (S.Source_Text'Address);
-                S.Source_Text := null;
-             end if;
-          end;
-       end loop;
- 
-       --  Read in source file table and instance table
- 
-       Source_File.Tree_Read;
-       Instances.Tree_Read;
- 
-       --  The pointers we read in there for the source buffer and lines table
-       --  pointers are junk. We now read in the actual data that is referenced
-       --  by these two fields.
- 
-       for J in Source_File.First .. Source_File.Last loop
-          declare
-             S : Source_File_Record renames Source_File.Table (J);
-          begin
-             --  Normal case (non-instantiation)
- 
-             if S.Instance = No_Instance_Id then
-                S.Lines_Table := null;
-                S.Logical_Lines_Table := null;
-                Alloc_Line_Tables (S, Int (S.Last_Source_Line));
- 
-                for J in 1 .. S.Last_Source_Line loop
-                   Tree_Read_Int (Int (S.Lines_Table (J)));
-                end loop;
- 
-                if S.Num_SRef_Pragmas /= 0 then
-                   for J in 1 .. S.Last_Source_Line loop
-                      Tree_Read_Int (Int (S.Logical_Lines_Table (J)));
-                   end loop;
-                end if;
- 
-                --  Allocate source buffer and read in the data
- 
-                declare
-                   T : constant Source_Buffer_Ptr_Var :=
-                     new Source_Buffer (S.Source_First .. S.Source_Last);
-                begin
-                   Tree_Read_Data (T (S.Source_First)'Address,
-                      Int (S.Source_Last) - Int (S.Source_First) + 1);
-                   S.Source_Text := T.all'Access;
-                end;
- 
-             --  For the instantiation case, we do not read in any data. Instead
-             --  we share the data for the generic template entry. Since the
-             --  template always occurs first, we can safely refer to its data.
- 
-             else
-                declare
-                   ST : Source_File_Record renames
-                          Source_File.Table (S.Template);
- 
-                begin
-                   --  The lines tables are copied from the template entry
- 
-                   S.Lines_Table := ST.Lines_Table;
-                   S.Logical_Lines_Table := ST.Logical_Lines_Table;
- 
-                   --  The Source_Text of the instance is the same data as that
-                   --  of the template, but with different bounds.
- 
-                   declare
-                      Dope : constant Dope_Ptr :=
-                        new Dope_Rec'(S.Source_First, S.Source_Last);
-                   begin
-                      S.Source_Text := ST.Source_Text;
-                      Set_Dope (S.Source_Text'Address, Dope);
-                   end;
-                end;
-             end if;
-          end;
- 
-          Set_Source_File_Index_Table (J);
-       end loop;
-    end Tree_Read;
- 
-    ----------------
-    -- Tree_Write --
-    ----------------
- 
-    procedure Tree_Write is
-    begin
-       Source_File.Tree_Write;
-       Instances.Tree_Write;
- 
-       --  The pointers we wrote out there for the source buffer and lines
-       --  table pointers are junk, we now write out the actual data that
-       --  is referenced by these two fields.
- 
-       for J in Source_File.First .. Source_File.Last loop
-          declare
-             S : Source_File_Record renames Source_File.Table (J);
- 
-          begin
-             --  For instantiations, there is nothing to do, since the data is
-             --  shared with the generic template. When the tree is read, the
-             --  pointers must be set, but no extra data needs to be written.
-             --  For the normal case, write out the data of the tables.
- 
-             if S.Instance = No_Instance_Id then
-                --  Lines table
- 
-                for J in 1 .. S.Last_Source_Line loop
-                   Tree_Write_Int (Int (S.Lines_Table (J)));
-                end loop;
- 
-                --  Logical lines table if present
- 
-                if S.Num_SRef_Pragmas /= 0 then
-                   for J in 1 .. S.Last_Source_Line loop
-                      Tree_Write_Int (Int (S.Logical_Lines_Table (J)));
-                   end loop;
-                end if;
- 
-                --  Source buffer
- 
-                Tree_Write_Data
-                  (S.Source_Text (S.Source_First)'Address,
-                    Int (S.Source_Last) - Int (S.Source_First) + 1);
-             end if;
-          end;
-       end loop;
-    end Tree_Write;
- 
     --------------------
     -- Write_Location --
     --------------------
--- 1007,1012 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/sinput.ads gcc-11.1.0/gcc/ada/sinput.ads
*** gcc-10.3.0/gcc/ada/sinput.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sinput.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Sinput is
*** 715,728 ****
     procedure Write_Time_Stamp (S : Source_File_Index);
     --  Writes time stamp of specified file in YY-MM-DD HH:MM.SS format
  
-    procedure Tree_Read;
-    --  Initializes internal tables from current tree file using the relevant
-    --  Table.Tree_Read routines.
- 
-    procedure Tree_Write;
-    --  Writes out internal tables to current tree file using the relevant
-    --  Table.Tree_Write routines.
- 
     procedure Clear_Source_File_Table;
     --  This procedure frees memory allocated in the Source_File table (in the
     --  private). It should only be used when it is guaranteed that all source
--- 709,714 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/snames.adb-tmpl gcc-11.1.0/gcc/ada/snames.adb-tmpl
*** gcc-10.3.0/gcc/ada/snames.adb-tmpl	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/snames.adb-tmpl	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package body Snames is
*** 103,110 ****
--- 97,106 ----
     --    xxxDF   deep finalize routine for type xxx                 (Exp_TSS)
     --    xxxDI   deep initialize routine for type xxx               (Exp_TSS)
     --    xxxEQ   composite equality routine for record type xxx     (Exp_TSS)
+    --    xxxFD   finalize address routine for type xxx              (Exp_TSS)
     --    xxxFA   PolyORB/DSA From_Any converter for type xxx        (Exp_TSS)
     --    xxxIP   initialization procedure for type xxx              (Exp_TSS)
+    --    xxxIC   init C++ dispatch tables procedure for type xxx    (Exp_TSS)
     --    xxxRA   RAS type access routine for type xxx               (Exp_TSS)
     --    xxxRD   RAS type dereference routine for type xxx          (Exp_TSS)
     --    xxxRP   Rep to Pos conversion for enumeration type xxx     (Exp_TSS)
*************** package body Snames is
*** 113,118 ****
--- 109,115 ----
     --    xxxSO   stream output attribute subprogram for type xxx    (Exp_TSS)
     --    xxxSR   stream read attribute subprogram for type xxx      (Exp_TSS)
     --    xxxSW   stream write attribute subprogram for type xxx     (Exp_TSS)
+    --    xxxPI   Put_Image attribute subprogram for type xxx        (Exp_TSS)
     --    xxxTA   PolyORB/DSA To_Any converter for type xxx          (Exp_TSS)
     --    xxxTC   PolyORB/DSA Typecode for type xxx                  (Exp_TSS)
  
*************** package body Snames is
*** 152,157 ****
--- 149,171 ----
                                                Convention_Ada_Pass_By_Reference;
           when Name_Assembler             => return Convention_Assembler;
           when Name_C                     => return Convention_C;
+          when Name_C_Variadic_0          => return Convention_C_Variadic_0;
+          when Name_C_Variadic_1          => return Convention_C_Variadic_1;
+          when Name_C_Variadic_2          => return Convention_C_Variadic_2;
+          when Name_C_Variadic_3          => return Convention_C_Variadic_3;
+          when Name_C_Variadic_4          => return Convention_C_Variadic_4;
+          when Name_C_Variadic_5          => return Convention_C_Variadic_5;
+          when Name_C_Variadic_6          => return Convention_C_Variadic_6;
+          when Name_C_Variadic_7          => return Convention_C_Variadic_7;
+          when Name_C_Variadic_8          => return Convention_C_Variadic_8;
+          when Name_C_Variadic_9          => return Convention_C_Variadic_9;
+          when Name_C_Variadic_10         => return Convention_C_Variadic_10;
+          when Name_C_Variadic_11         => return Convention_C_Variadic_11;
+          when Name_C_Variadic_12         => return Convention_C_Variadic_12;
+          when Name_C_Variadic_13         => return Convention_C_Variadic_13;
+          when Name_C_Variadic_14         => return Convention_C_Variadic_14;
+          when Name_C_Variadic_15         => return Convention_C_Variadic_15;
+          when Name_C_Variadic_16         => return Convention_C_Variadic_16;
           when Name_COBOL                 => return Convention_COBOL;
           when Name_CPP                   => return Convention_CPP;
           when Name_Fortran               => return Convention_Fortran;
*************** package body Snames is
*** 186,191 ****
--- 200,222 ----
              return Name_Ada_Pass_By_Reference;
           when Convention_Assembler             => return Name_Assembler;
           when Convention_C                     => return Name_C;
+          when Convention_C_Variadic_0          => return Name_C_Variadic_0;
+          when Convention_C_Variadic_1          => return Name_C_Variadic_1;
+          when Convention_C_Variadic_2          => return Name_C_Variadic_2;
+          when Convention_C_Variadic_3          => return Name_C_Variadic_3;
+          when Convention_C_Variadic_4          => return Name_C_Variadic_4;
+          when Convention_C_Variadic_5          => return Name_C_Variadic_5;
+          when Convention_C_Variadic_6          => return Name_C_Variadic_6;
+          when Convention_C_Variadic_7          => return Name_C_Variadic_7;
+          when Convention_C_Variadic_8          => return Name_C_Variadic_8;
+          when Convention_C_Variadic_9          => return Name_C_Variadic_9;
+          when Convention_C_Variadic_10         => return Name_C_Variadic_10;
+          when Convention_C_Variadic_11         => return Name_C_Variadic_11;
+          when Convention_C_Variadic_12         => return Name_C_Variadic_12;
+          when Convention_C_Variadic_13         => return Name_C_Variadic_13;
+          when Convention_C_Variadic_14         => return Name_C_Variadic_14;
+          when Convention_C_Variadic_15         => return Name_C_Variadic_15;
+          when Convention_C_Variadic_16         => return Name_C_Variadic_16;
           when Convention_COBOL                 => return Name_COBOL;
           when Convention_CPP                   => return Name_CPP;
           when Convention_Entry                 => return Name_Entry;
*************** package body Snames is
*** 422,430 ****
        return N in First_Locking_Policy_Name .. Last_Locking_Policy_Name;
     end Is_Locking_Policy_Name;
  
!    -------------------------------------
!    -- Is_Partition_Elaboration_Policy --
!    -------------------------------------
  
     function Is_Partition_Elaboration_Policy_Name
       (N : Name_Id) return Boolean
--- 453,461 ----
        return N in First_Locking_Policy_Name .. Last_Locking_Policy_Name;
     end Is_Locking_Policy_Name;
  
!    ------------------------------------------
!    -- Is_Partition_Elaboration_Policy_Name --
!    ------------------------------------------
  
     function Is_Partition_Elaboration_Policy_Name
       (N : Name_Id) return Boolean
diff -Nrcpad gcc-10.3.0/gcc/ada/snames.ads-tmpl gcc-11.1.0/gcc/ada/snames.ads-tmpl
*** gcc-10.3.0/gcc/ada/snames.ads-tmpl	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/snames.ads-tmpl	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2017, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** with Namet; use Namet;
*** 33,42 ****
  
  package Snames is
  
! --  This package contains definitions of standard names (i.e. entries in the
! --  Names table) that are used throughout the GNAT compiler. It also contains
! --  the definitions of some enumeration types whose definitions are tied to the
! --  order of these preset names.
  
     ------------------
     -- Preset Names --
--- 27,41 ----
  
  package Snames is
  
!    --  This package contains definitions of standard names (i.e. entries in
!    --  the Names table) that are used throughout the GNAT compiler. It also
!    --  contains the definitions of some enumeration types whose definitions
!    --  are tied to the order of these preset names.
! 
!    --  NOTE WELL: If you add names of attributes, the enumeration type
!    --  Attribute_Id must be kept in synch (same names in same order, with
!    --  some exceptions). See the body of Get_Attribute_Id for details. The
!    --  same is true of other enumeration types declared in this package.
  
     ------------------
     -- Preset Names --
*************** package Snames is
*** 143,149 ****
--- 142,155 ----
     Name_Dimension_System               : constant Name_Id := N + $;
     Name_Disable_Controlled             : constant Name_Id := N + $;
     Name_Dynamic_Predicate              : constant Name_Id := N + $;
+    Name_Exclusive_Functions            : constant Name_Id := N + $;
+    Name_Full_Access_Only               : constant Name_Id := N + $;
+    Name_Integer_Literal                : constant Name_Id := N + $;
+    Name_Real_Literal                   : constant Name_Id := N + $;
+    Name_Relaxed_Initialization         : constant Name_Id := N + $;
+    Name_Stable_Properties              : constant Name_Id := N + $;
     Name_Static_Predicate               : constant Name_Id := N + $;
+    Name_String_Literal                 : constant Name_Id := N + $;
     Name_Synchronization                : constant Name_Id := N + $;
     Name_Unimplemented                  : constant Name_Id := N + $;
  
*************** package Snames is
*** 162,179 ****
--- 168,191 ----
     Name_uEntry_Bodies                  : constant Name_Id := N + $;
     Name_uExpunge                       : constant Name_Id := N + $;
     Name_uFinalizer                     : constant Name_Id := N + $;
+    Name_uFinalizer_Old                 : constant Name_Id := N + $;
+    Name_uFinalization_Controller       : constant Name_Id := N + $;
     Name_uIdepth                        : constant Name_Id := N + $;
     Name_uInit                          : constant Name_Id := N + $;
+    Name_uInit_Level                    : constant Name_Id := N + $;
     Name_uInvariant                     : constant Name_Id := N + $;
     Name_uMaster                        : constant Name_Id := N + $;
     Name_uObject                        : constant Name_Id := N + $;
     Name_uPost                          : constant Name_Id := N + $;
     Name_uPostconditions                : constant Name_Id := N + $;
+    Name_uPostcond_Enabled              : constant Name_Id := N + $;
     Name_uPre                           : constant Name_Id := N + $;
     Name_uPriority                      : constant Name_Id := N + $;
     Name_uProcess_ATSD                  : constant Name_Id := N + $;
     Name_uRelative_Deadline             : constant Name_Id := N + $;
     Name_uResult                        : constant Name_Id := N + $;
+    Name_uResult_Object_For_Postcond    : constant Name_Id := N + $;
+    Name_uReturn_Success_For_Postcond   : constant Name_Id := N + $;
     Name_uSecondary_Stack               : constant Name_Id := N + $;
     Name_uSecondary_Stack_Size          : constant Name_Id := N + $;
     Name_uService                       : constant Name_Id := N + $;
*************** package Snames is
*** 186,191 ****
--- 198,204 ----
     Name_uTask_Name                     : constant Name_Id := N + $;
     Name_uTrace_Sp                      : constant Name_Id := N + $;
     Name_uType_Invariant                : constant Name_Id := N + $;
+    Name_uVariants                      : constant Name_Id := N + $;
  
     --  Names of predefined primitives used in the expansion of dispatching
     --  requeue and select statements, Abort, 'Callable and 'Terminated.
*************** package Snames is
*** 444,450 ****
     Name_Overriding_Renamings           : constant Name_Id := N + $; -- GNAT
     Name_Partition_Elaboration_Policy   : constant Name_Id := N + $; -- Ada 05
     Name_Persistent_BSS                 : constant Name_Id := N + $; -- GNAT
-    Name_Polling                        : constant Name_Id := N + $; -- GNAT
     Name_Prefix_Exception_Messages      : constant Name_Id := N + $; -- GNAT
     Name_Priority_Specific_Dispatching  : constant Name_Id := N + $; -- Ada 05
     Name_Profile                        : constant Name_Id := N + $; -- Ada 05
--- 457,462 ----
*************** package Snames is
*** 481,490 ****
  
     Name_Abort_Defer                    : constant Name_Id := N + $; -- GNAT
     Name_Abstract_State                 : constant Name_Id := N + $; -- GNAT
-    Name_Acc_Data                       : constant Name_Id := N + $;
-    Name_Acc_Kernels                    : constant Name_Id := N + $;
-    Name_Acc_Loop                       : constant Name_Id := N + $;
-    Name_Acc_Parallel                   : constant Name_Id := N + $;
     Name_All_Calls_Remote               : constant Name_Id := N + $;
     Name_Assert                         : constant Name_Id := N + $; -- Ada 05
     Name_Assert_And_Cut                 : constant Name_Id := N + $; -- GNAT
--- 493,498 ----
*************** package Snames is
*** 509,514 ****
--- 517,524 ----
     Name_CPP_Constructor                : constant Name_Id := N + $; -- GNAT
     Name_CPP_Virtual                    : constant Name_Id := N + $; -- GNAT
     Name_CPP_Vtable                     : constant Name_Id := N + $; -- GNAT
+    Name_CUDA_Execute                   : constant Name_Id := N + $; -- GNAT
+    Name_CUDA_Global                    : constant Name_Id := N + $; -- GNAT
  
     --  Note: CPU is not in this list because its name matches the name of
     --  the corresponding attribute. However, it is included in the definition
*************** package Snames is
*** 661,675 ****
     Name_Source_Reference               : constant Name_Id := N + $; -- GNAT
     Name_Static_Elaboration_Desired     : constant Name_Id := N + $; -- GNAT
     Name_Stream_Convert                 : constant Name_Id := N + $; -- GNAT
     Name_Subtitle                       : constant Name_Id := N + $; -- GNAT
     Name_Suppress_All                   : constant Name_Id := N + $; -- GNAT
     Name_Suppress_Debug_Info            : constant Name_Id := N + $; -- GNAT
     Name_Suppress_Initialization        : constant Name_Id := N + $; -- GNAT
     Name_System_Name                    : constant Name_Id := N + $; -- Ada 83
-    Name_Test_Case                      : constant Name_Id := N + $; -- GNAT
     Name_Task_Info                      : constant Name_Id := N + $; -- GNAT
     Name_Task_Name                      : constant Name_Id := N + $; -- GNAT
     Name_Task_Storage                   : constant Name_Id := N + $; -- GNAT
     Name_Thread_Local_Storage           : constant Name_Id := N + $; -- GNAT
     Name_Time_Slice                     : constant Name_Id := N + $; -- GNAT
     Name_Title                          : constant Name_Id := N + $; -- GNAT
--- 671,686 ----
     Name_Source_Reference               : constant Name_Id := N + $; -- GNAT
     Name_Static_Elaboration_Desired     : constant Name_Id := N + $; -- GNAT
     Name_Stream_Convert                 : constant Name_Id := N + $; -- GNAT
+    Name_Subprogram_Variant             : constant Name_Id := N + $; -- GNAT
     Name_Subtitle                       : constant Name_Id := N + $; -- GNAT
     Name_Suppress_All                   : constant Name_Id := N + $; -- GNAT
     Name_Suppress_Debug_Info            : constant Name_Id := N + $; -- GNAT
     Name_Suppress_Initialization        : constant Name_Id := N + $; -- GNAT
     Name_System_Name                    : constant Name_Id := N + $; -- Ada 83
     Name_Task_Info                      : constant Name_Id := N + $; -- GNAT
     Name_Task_Name                      : constant Name_Id := N + $; -- GNAT
     Name_Task_Storage                   : constant Name_Id := N + $; -- GNAT
+    Name_Test_Case                      : constant Name_Id := N + $; -- GNAT
     Name_Thread_Local_Storage           : constant Name_Id := N + $; -- GNAT
     Name_Time_Slice                     : constant Name_Id := N + $; -- GNAT
     Name_Title                          : constant Name_Id := N + $; -- GNAT
*************** package Snames is
*** 704,709 ****
--- 715,737 ----
     Name_Ada_Pass_By_Copy               : constant Name_Id := N + $;
     Name_Ada_Pass_By_Reference          : constant Name_Id := N + $;
     Name_Assembler                      : constant Name_Id := N + $;
+    Name_C_Variadic_0                   : constant Name_Id := N + $;
+    Name_C_Variadic_1                   : constant Name_Id := N + $;
+    Name_C_Variadic_2                   : constant Name_Id := N + $;
+    Name_C_Variadic_3                   : constant Name_Id := N + $;
+    Name_C_Variadic_4                   : constant Name_Id := N + $;
+    Name_C_Variadic_5                   : constant Name_Id := N + $;
+    Name_C_Variadic_6                   : constant Name_Id := N + $;
+    Name_C_Variadic_7                   : constant Name_Id := N + $;
+    Name_C_Variadic_8                   : constant Name_Id := N + $;
+    Name_C_Variadic_9                   : constant Name_Id := N + $;
+    Name_C_Variadic_10                  : constant Name_Id := N + $;
+    Name_C_Variadic_11                  : constant Name_Id := N + $;
+    Name_C_Variadic_12                  : constant Name_Id := N + $;
+    Name_C_Variadic_13                  : constant Name_Id := N + $;
+    Name_C_Variadic_14                  : constant Name_Id := N + $;
+    Name_C_Variadic_15                  : constant Name_Id := N + $;
+    Name_C_Variadic_16                  : constant Name_Id := N + $;
     Name_COBOL                          : constant Name_Id := N + $;
     Name_CPP                            : constant Name_Id := N + $;
     Name_Fortran                        : constant Name_Id := N + $;
*************** package Snames is
*** 712,717 ****
--- 740,748 ----
     Name_Stubbed                        : constant Name_Id := N + $;
     Last_Convention_Name                : constant Name_Id := N + $;
  
+    subtype Name_C_Variadic is Name_Id
+      range Name_C_Variadic_0 .. Name_C_Variadic_16;
+ 
     --  The following names are preset as synonyms for Assembler
  
     Name_Asm                            : constant Name_Id := N + $;
*************** package Snames is
*** 731,738 ****
     Name_DLL                            : constant Name_Id := N + $;
     Name_Win32                          : constant Name_Id := N + $;
  
!    --  Other special names used in processing attributes and pragmas
  
     Name_Allow                          : constant Name_Id := N + $;
     Name_Amount                         : constant Name_Id := N + $;
     Name_As_Is                          : constant Name_Id := N + $;
--- 762,770 ----
     Name_DLL                            : constant Name_Id := N + $;
     Name_Win32                          : constant Name_Id := N + $;
  
!    --  Other special names used in processing attributes, aspects, and pragmas
  
+    Name_Aggregate                      : constant Name_Id := N + $;
     Name_Allow                          : constant Name_Id := N + $;
     Name_Amount                         : constant Name_Id := N + $;
     Name_As_Is                          : constant Name_Id := N + $;
*************** package Snames is
*** 781,786 ****
--- 813,819 ----
     Name_Info                           : constant Name_Id := N + $;
     Name_Internal                       : constant Name_Id := N + $;
     Name_Ivdep                          : constant Name_Id := N + $;
+    Name_Jorvik                         : constant Name_Id := N + $;
     Name_Link_Name                      : constant Name_Id := N + $;
     Name_Low_Order_First                : constant Name_Id := N + $;
     Name_Lowercase                      : constant Name_Id := N + $;
*************** package Snames is
*** 813,821 ****
--- 846,857 ----
     Name_No_Use_Of_Entity               : constant Name_Id := N + $;
     Name_No_Use_Of_Pragma               : constant Name_Id := N + $;
     Name_No_Unroll                      : constant Name_Id := N + $;
+    Name_No_Unrecognized_Aspects        : constant Name_Id := N + $;
+    Name_No_Unrecognized_Pragmas        : constant Name_Id := N + $;
     Name_No_Vector                      : constant Name_Id := N + $;
     Name_Nominal                        : constant Name_Id := N + $;
     Name_Non_Volatile                   : constant Name_Id := N + $;
+    Name_None                           : constant Name_Id := N + $;
     Name_On                             : constant Name_Id := N + $;
     Name_Optional                       : constant Name_Id := N + $;
     Name_Policy                         : constant Name_Id := N + $;
*************** package Snames is
*** 866,900 ****
     Name_Warn                           : constant Name_Id := N + $;
     Name_Working_Storage                : constant Name_Id := N + $;
  
!    --  OpenAcc-specific clause names for Parallel, Kernels, Data
  
-    Name_Acc_If                         : constant Name_Id := N + $;
-    Name_Acc_Private                    : constant Name_Id := N + $;
-    Name_Attach                         : constant Name_Id := N + $;
-    Name_Copy_In                        : constant Name_Id := N + $;
-    Name_Copy_Out                       : constant Name_Id := N + $;
-    Name_Create                         : constant Name_Id := N + $;
-    Name_Delete                         : constant Name_Id := N + $;
-    Name_Detach                         : constant Name_Id := N + $;
-    Name_Device_Ptr                     : constant Name_Id := N + $;
-    Name_Device_Type                    : constant Name_Id := N + $;
-    Name_First_Private                  : constant Name_Id := N + $;
-    Name_No_Create                      : constant Name_Id := N + $;
-    Name_Num_Gangs                      : constant Name_Id := N + $;
-    Name_Num_Workers                    : constant Name_Id := N + $;
     Name_Present                        : constant Name_Id := N + $;
-    Name_Reduction                      : constant Name_Id := N + $;
-    Name_Vector_Length                  : constant Name_Id := N + $;
-    Name_Wait                           : constant Name_Id := N + $;
- 
-    --  Loop
- 
-    Name_Auto                           : constant Name_Id := N + $;
-    Name_Collapse                       : constant Name_Id := N + $;
-    Name_Gang                           : constant Name_Id := N + $;
-    Name_Seq                            : constant Name_Id := N + $;
-    Name_Tile                           : constant Name_Id := N + $;
-    Name_Worker                         : constant Name_Id := N + $;
  
     --  Names of recognized attributes. The entries with the comment "Ada 83"
     --  are attributes that are defined in Ada 83, but not in Ada 95. These
--- 902,910 ----
     Name_Warn                           : constant Name_Id := N + $;
     Name_Working_Storage                : constant Name_Id := N + $;
  
!    --  used by Repinfo JSON I/O
  
     Name_Present                        : constant Name_Id := N + $;
  
     --  Names of recognized attributes. The entries with the comment "Ada 83"
     --  are attributes that are defined in Ada 83, but not in Ada 95. These
*************** package Snames is
*** 956,963 ****
     Name_Has_Same_Storage               : constant Name_Id := N + $; -- Ada 12
     Name_Has_Tagged_Values              : constant Name_Id := N + $; -- GNAT
     Name_Identity                       : constant Name_Id := N + $;
-    Name_Img                            : constant Name_Id := N + $; -- GNAT
     Name_Implicit_Dereference           : constant Name_Id := N + $; -- GNAT
     Name_Integer_Value                  : constant Name_Id := N + $; -- GNAT
     Name_Invalid_Value                  : constant Name_Id := N + $; -- GNAT
     Name_Iterator_Element               : constant Name_Id := N + $; -- GNAT
--- 966,973 ----
     Name_Has_Same_Storage               : constant Name_Id := N + $; -- Ada 12
     Name_Has_Tagged_Values              : constant Name_Id := N + $; -- GNAT
     Name_Identity                       : constant Name_Id := N + $;
     Name_Implicit_Dereference           : constant Name_Id := N + $; -- GNAT
+    Name_Initialized                    : constant Name_Id := N + $; -- GNAT
     Name_Integer_Value                  : constant Name_Id := N + $; -- GNAT
     Name_Invalid_Value                  : constant Name_Id := N + $; -- GNAT
     Name_Iterator_Element               : constant Name_Id := N + $; -- GNAT
*************** package Snames is
*** 981,986 ****
--- 991,997 ----
     Name_Machine_Size                   : constant Name_Id := N + $; -- GNAT
     Name_Mantissa                       : constant Name_Id := N + $; -- Ada 83
     Name_Max_Alignment_For_Allocation   : constant Name_Id := N + $; -- Ada 12
+    Name_Max_Integer_Size               : constant Name_Id := N + $; -- GNAT
     Name_Max_Size_In_Storage_Elements   : constant Name_Id := N + $;
     Name_Maximum_Alignment              : constant Name_Id := N + $; -- GNAT
     Name_Mechanism_Code                 : constant Name_Id := N + $; -- GNAT
*************** package Snames is
*** 1002,1008 ****
     Name_Priority                       : constant Name_Id := N + $; -- Ada 05
     Name_Range                          : constant Name_Id := N + $;
     Name_Range_Length                   : constant Name_Id := N + $; -- GNAT
!    Name_Reduce                         : constant Name_Id := N + $;
     Name_Ref                            : constant Name_Id := N + $; -- GNAT
     Name_Restriction_Set                : constant Name_Id := N + $; -- GNAT
     Name_Result                         : constant Name_Id := N + $; -- GNAT
--- 1013,1019 ----
     Name_Priority                       : constant Name_Id := N + $; -- Ada 05
     Name_Range                          : constant Name_Id := N + $;
     Name_Range_Length                   : constant Name_Id := N + $; -- GNAT
!    Name_Reduce                         : constant Name_Id := N + $; -- GNAT
     Name_Ref                            : constant Name_Id := N + $; -- GNAT
     Name_Restriction_Set                : constant Name_Id := N + $; -- GNAT
     Name_Result                         : constant Name_Id := N + $; -- GNAT
*************** package Snames is
*** 1018,1023 ****
--- 1029,1036 ----
     Name_Signed_Zeros                   : constant Name_Id := N + $;
     Name_Size                           : constant Name_Id := N + $;
     Name_Small                          : constant Name_Id := N + $; -- Ada 83
+    Name_Small_Denominator              : constant Name_Id := N + $; -- GNAT
+    Name_Small_Numerator                : constant Name_Id := N + $; -- GNAT
     Name_Storage_Size                   : constant Name_Id := N + $;
     Name_Storage_Unit                   : constant Name_Id := N + $; -- GNAT
     Name_Stream_Size                    : constant Name_Id := N + $; -- Ada 05
*************** package Snames is
*** 1059,1064 ****
--- 1072,1078 ----
     Name_Fraction                       : constant Name_Id := N + $;
     Name_From_Any                       : constant Name_Id := N + $; -- GNAT
     Name_Image                          : constant Name_Id := N + $;
+    Name_Img                            : constant Name_Id := N + $; -- GNAT
     Name_Input                          : constant Name_Id := N + $;
     Name_Machine                        : constant Name_Id := N + $;
     Name_Max                            : constant Name_Id := N + $;
*************** package Snames is
*** 1082,1087 ****
--- 1096,1102 ----
  
     First_Procedure_Attribute           : constant Name_Id := N + $;
     Name_Output                         : constant Name_Id := N + $;
+    Name_Put_Image                      : constant Name_Id := N + $;
     Name_Read                           : constant Name_Id := N + $;
     Name_Write                          : constant Name_Id := N + $;
     Last_Procedure_Attribute            : constant Name_Id := N + $;
*************** package Snames is
*** 1184,1202 ****
     Name_Signed_16                      : constant Name_Id := N + $; -- GNAT
     Name_Signed_32                      : constant Name_Id := N + $; -- GNAT
     Name_Signed_64                      : constant Name_Id := N + $; -- GNAT
     Name_Unsigned_8                     : constant Name_Id := N + $; -- GNAT
     Name_Unsigned_16                    : constant Name_Id := N + $; -- GNAT
     Name_Unsigned_32                    : constant Name_Id := N + $; -- GNAT
     Name_Unsigned_64                    : constant Name_Id := N + $; -- GNAT
  
!    subtype Scalar_Id is Name_Id range
!      Name_Short_Float .. Name_Unsigned_64;
  
!    subtype Float_Scalar_Id is Name_Id range
!      Name_Short_Float .. Name_Long_Long_Float;
  
!    subtype Integer_Scalar_Id is Name_Id range
!      Name_Signed_8 .. Name_Unsigned_64;
  
     --  Names of recognized checks for pragma Suppress
  
--- 1199,1219 ----
     Name_Signed_16                      : constant Name_Id := N + $; -- GNAT
     Name_Signed_32                      : constant Name_Id := N + $; -- GNAT
     Name_Signed_64                      : constant Name_Id := N + $; -- GNAT
+    Name_Signed_128                     : constant Name_Id := N + $; -- GNAT
     Name_Unsigned_8                     : constant Name_Id := N + $; -- GNAT
     Name_Unsigned_16                    : constant Name_Id := N + $; -- GNAT
     Name_Unsigned_32                    : constant Name_Id := N + $; -- GNAT
     Name_Unsigned_64                    : constant Name_Id := N + $; -- GNAT
+    Name_Unsigned_128                   : constant Name_Id := N + $; -- GNAT
  
!    subtype Scalar_Id is Name_Id
!      range Name_Short_Float .. Name_Unsigned_128;
  
!    subtype Float_Scalar_Id is Name_Id
!      range Name_Short_Float .. Name_Long_Long_Float;
  
!    subtype Integer_Scalar_Id is Name_Id
!      range Name_Signed_8 .. Name_Unsigned_128;
  
     --  Names of recognized checks for pragma Suppress
  
*************** package Snames is
*** 1209,1228 ****
--- 1226,1254 ----
     Name_Alignment_Check                : constant Name_Id := N + $; -- GNAT
     Name_Allocation_Check               : constant Name_Id := N + $;
     Name_Atomic_Synchronization         : constant Name_Id := N + $; -- GNAT
+    Name_Characters_Assertion_Check     : constant Name_Id := N + $;
+    Name_Containers_Assertion_Check     : constant Name_Id := N + $;
     Name_Discriminant_Check             : constant Name_Id := N + $;
     Name_Division_Check                 : constant Name_Id := N + $;
     Name_Duplicated_Tag_Check           : constant Name_Id := N + $; -- GNAT
     Name_Elaboration_Check              : constant Name_Id := N + $;
     Name_Index_Check                    : constant Name_Id := N + $;
+    Name_Interfaces_Assertion_Check     : constant Name_Id := N + $;
+    Name_IO_Assertion_Check             : constant Name_Id := N + $;
     Name_Length_Check                   : constant Name_Id := N + $;
+    Name_Numerics_Assertion_Check       : constant Name_Id := N + $;
     Name_Overflow_Check                 : constant Name_Id := N + $;
     Name_Predicate_Check                : constant Name_Id := N + $; -- GNAT
+    Name_Program_Error_Check            : constant Name_Id := N + $;
     Name_Range_Check                    : constant Name_Id := N + $;
     Name_Storage_Check                  : constant Name_Id := N + $;
+    Name_Strings_Assertion_Check        : constant Name_Id := N + $;
+    Name_System_Assertion_Check         : constant Name_Id := N + $;
     Name_Tag_Check                      : constant Name_Id := N + $;
     Name_Validity_Check                 : constant Name_Id := N + $; -- GNAT
     Name_Container_Checks               : constant Name_Id := N + $; -- GNAT
     Name_Tampering_Check                : constant Name_Id := N + $; -- GNAT
+    Name_Tasking_Check                  : constant Name_Id := N + $;
     Name_All_Checks                     : constant Name_Id := N + $;
     Last_Check_Name                     : constant Name_Id := N + $;
  
*************** package Snames is
*** 1335,1527 ****
     Name_Tagged                           : constant Name_Id := N + $;
     Last_95_Reserved_Word                 : constant Name_Id := N + $;
  
!    subtype Ada_95_Reserved_Words is
!      Name_Id range First_95_Reserved_Word .. Last_95_Reserved_Word;
  
     --  Miscellaneous names used in semantic checking
  
     Name_Raise_Exception                  : constant Name_Id := N + $;
  
-    --  Additional reserved words and identifiers used in GNAT Project Files
-    --  Note that Name_External is already previously declared.
- 
-    --  Names with a -- GB annotation are only used in gprbuild or gprclean
- 
-    Name_Active                           : constant Name_Id := N + $;
-    Name_Aggregate                        : constant Name_Id := N + $;
-    Name_Archive_Builder                  : constant Name_Id := N + $;
-    Name_Archive_Builder_Append_Option    : constant Name_Id := N + $;
-    Name_Archive_Indexer                  : constant Name_Id := N + $;
-    Name_Archive_Suffix                   : constant Name_Id := N + $;
-    Name_Artifacts                        : constant Name_Id := N + $;
-    Name_Artifacts_In_Exec_Dir            : constant Name_Id := N + $; -- GB
-    Name_Artifacts_In_Object_Dir          : constant Name_Id := N + $; -- GB
-    Name_Binder                           : constant Name_Id := N + $;
-    Name_Body_Suffix                      : constant Name_Id := N + $;
-    Name_Builder                          : constant Name_Id := N + $;
-    Name_Clean                            : constant Name_Id := N + $;
-    Name_Compiler                         : constant Name_Id := N + $;
-    Name_Compiler_Command                 : constant Name_Id := N + $; -- GB
-    Name_Config_Body_File_Name            : constant Name_Id := N + $;
-    Name_Config_Body_File_Name_Index      : constant Name_Id := N + $;
-    Name_Config_Body_File_Name_Pattern    : constant Name_Id := N + $;
-    Name_Config_File_Switches             : constant Name_Id := N + $;
-    Name_Config_File_Unique               : constant Name_Id := N + $;
-    Name_Config_Spec_File_Name            : constant Name_Id := N + $;
-    Name_Config_Spec_File_Name_Index      : constant Name_Id := N + $;
-    Name_Config_Spec_File_Name_Pattern    : constant Name_Id := N + $;
-    Name_Configuration                    : constant Name_Id := N + $;
-    Name_Cross_Reference                  : constant Name_Id := N + $;
-    Name_Default_Language                 : constant Name_Id := N + $;
-    Name_Default_Switches                 : constant Name_Id := N + $;
-    Name_Dependency_Driver                : constant Name_Id := N + $;
-    Name_Dependency_Kind                  : constant Name_Id := N + $;
-    Name_Dependency_Switches              : constant Name_Id := N + $;
-    Name_Driver                           : constant Name_Id := N + $;
-    Name_Excluded_Source_Dirs             : constant Name_Id := N + $;
-    Name_Excluded_Source_Files            : constant Name_Id := N + $;
-    Name_Excluded_Source_List_File        : constant Name_Id := N + $;
-    Name_Exec_Dir                         : constant Name_Id := N + $;
-    Name_Exec_Subdir                      : constant Name_Id := N + $;
-    Name_Excluded_Patterns                : constant Name_Id := N + $;
-    Name_Executable                       : constant Name_Id := N + $;
-    Name_Executable_Suffix                : constant Name_Id := N + $;
-    Name_Extends                          : constant Name_Id := N + $;
-    Name_External_As_List                 : constant Name_Id := N + $;
-    Name_Externally_Built                 : constant Name_Id := N + $;
-    Name_Finder                           : constant Name_Id := N + $;
-    Name_Global_Compilation_Switches      : constant Name_Id := N + $;
-    Name_Global_Configuration_Pragmas     : constant Name_Id := N + $;
-    Name_Global_Config_File               : constant Name_Id := N + $; -- GB
-    Name_Gnatls                           : constant Name_Id := N + $;
-    Name_Gnatstub                         : constant Name_Id := N + $;
-    Name_Gnu                              : constant Name_Id := N + $;
-    Name_Ide                              : constant Name_Id := N + $;
-    Name_Ignore_Source_Sub_Dirs           : constant Name_Id := N + $;
-    Name_Implementation                   : constant Name_Id := N + $;
-    Name_Implementation_Exceptions        : constant Name_Id := N + $;
-    Name_Implementation_Suffix            : constant Name_Id := N + $;
-    Name_Included_Artifact_Patterns       : constant Name_Id := N + $;
-    Name_Included_Patterns                : constant Name_Id := N + $;
-    Name_Include_Switches                 : constant Name_Id := N + $;
-    Name_Include_Path                     : constant Name_Id := N + $;
-    Name_Include_Path_File                : constant Name_Id := N + $;
-    Name_Inherit_Source_Path              : constant Name_Id := N + $;
-    Name_Install                          : constant Name_Id := N + $;
-    Name_Install_Name                     : constant Name_Id := N + $;
-    Name_Languages                        : constant Name_Id := N + $;
-    Name_Language_Kind                    : constant Name_Id := N + $;
-    Name_Leading_Library_Options          : constant Name_Id := N + $;
-    Name_Leading_Required_Switches        : constant Name_Id := N + $;
-    Name_Leading_Switches                 : constant Name_Id := N + $;
-    Name_Lib_Subdir                       : constant Name_Id := N + $;
-    Name_Link_Lib_Subdir                  : constant Name_Id := N + $;
-    Name_Library                          : constant Name_Id := N + $;
-    Name_Library_Ali_Dir                  : constant Name_Id := N + $;
-    Name_Library_Auto_Init                : constant Name_Id := N + $;
-    Name_Library_Auto_Init_Supported      : constant Name_Id := N + $;
-    Name_Library_Builder                  : constant Name_Id := N + $;
-    Name_Library_Dir                      : constant Name_Id := N + $;
-    Name_Library_GCC                      : constant Name_Id := N + $;
-    Name_Library_Install_Name_Option      : constant Name_Id := N + $;
-    Name_Library_Interface                : constant Name_Id := N + $;
-    Name_Library_Kind                     : constant Name_Id := N + $;
-    Name_Library_Name                     : constant Name_Id := N + $;
-    Name_Library_Major_Minor_Id_Supported : constant Name_Id := N + $;
-    Name_Library_Options                  : constant Name_Id := N + $;
-    Name_Library_Partial_Linker           : constant Name_Id := N + $;
-    Name_Library_Reference_Symbol_File    : constant Name_Id := N + $;
-    Name_Library_Rpath_Options            : constant Name_Id := N + $; -- GB
-    Name_Library_Standalone               : constant Name_Id := N + $;
-    Name_Library_Encapsulated_Options     : constant Name_Id := N + $; -- GB
-    Name_Library_Encapsulated_Supported   : constant Name_Id := N + $; -- GB
-    Name_Library_Src_Dir                  : constant Name_Id := N + $;
-    Name_Library_Support                  : constant Name_Id := N + $;
-    Name_Library_Symbol_File              : constant Name_Id := N + $;
-    Name_Library_Symbol_Policy            : constant Name_Id := N + $;
-    Name_Library_Version                  : constant Name_Id := N + $;
-    Name_Library_Version_Switches         : constant Name_Id := N + $;
-    Name_Linker                           : constant Name_Id := N + $;
-    Name_Linker_Executable_Option         : constant Name_Id := N + $;
-    Name_Linker_Lib_Dir_Option            : constant Name_Id := N + $;
-    Name_Linker_Lib_Name_Option           : constant Name_Id := N + $;
-    Name_Local_Config_File                : constant Name_Id := N + $; -- GB
-    Name_Local_Configuration_Pragmas      : constant Name_Id := N + $;
-    Name_Locally_Removed_Files            : constant Name_Id := N + $;
-    Name_Map_File_Option                  : constant Name_Id := N + $;
-    Name_Mapping_File_Switches            : constant Name_Id := N + $;
-    Name_Mapping_Spec_Suffix              : constant Name_Id := N + $;
-    Name_Mapping_Body_Suffix              : constant Name_Id := N + $;
-    Name_Max_Command_Line_Length          : constant Name_Id := N + $;
-    Name_Metrics                          : constant Name_Id := N + $;
-    Name_Multi_Unit_Object_Separator      : constant Name_Id := N + $;
-    Name_Multi_Unit_Switches              : constant Name_Id := N + $;
-    Name_Naming                           : constant Name_Id := N + $;
-    Name_None                             : constant Name_Id := N + $;
-    Name_Object_Artifact_Extensions       : constant Name_Id := N + $;
-    Name_Object_File_Suffix               : constant Name_Id := N + $;
-    Name_Object_File_Switches             : constant Name_Id := N + $;
-    Name_Object_Generated                 : constant Name_Id := N + $;
-    Name_Object_List                      : constant Name_Id := N + $;
-    Name_Object_Path_Switches             : constant Name_Id := N + $;
-    Name_Objects_Linked                   : constant Name_Id := N + $;
-    Name_Objects_Path                     : constant Name_Id := N + $;
-    Name_Objects_Path_File                : constant Name_Id := N + $;
-    Name_Object_Dir                       : constant Name_Id := N + $;
-    Name_Option_List                      : constant Name_Id := N + $;
-    Name_Path_Syntax                      : constant Name_Id := N + $;
-    Name_Pic_Option                       : constant Name_Id := N + $;
-    Name_Pretty_Printer                   : constant Name_Id := N + $;
-    Name_Prefix                           : constant Name_Id := N + $;
-    Name_Project                          : constant Name_Id := N + $;
-    Name_Project_Dir                      : constant Name_Id := N + $;
-    Name_Project_Files                    : constant Name_Id := N + $;
-    Name_Project_Path                     : constant Name_Id := N + $;
-    Name_Project_Subdir                   : constant Name_Id := N + $;
-    Name_Remote                           : constant Name_Id := N + $;
-    Name_Required_Artifacts               : constant Name_Id := N + $;
-    Name_Response_File_Format             : constant Name_Id := N + $;
-    Name_Response_File_Switches           : constant Name_Id := N + $;
-    Name_Root_Dir                         : constant Name_Id := N + $;
-    Name_Roots                            : constant Name_Id := N + $; -- GB
-    Name_Required_Switches                : constant Name_Id := N + $;
-    Name_Run_Path_Option                  : constant Name_Id := N + $;
-    Name_Run_Path_Origin                  : constant Name_Id := N + $;
-    Name_Separate_Run_Path_Options        : constant Name_Id := N + $;
-    Name_Shared_Library_Minimum_Switches  : constant Name_Id := N + $;
-    Name_Shared_Library_Prefix            : constant Name_Id := N + $;
-    Name_Shared_Library_Suffix            : constant Name_Id := N + $;
-    Name_Separate_Suffix                  : constant Name_Id := N + $;
-    Name_Source_Artifact_Extensions       : constant Name_Id := N + $;
-    Name_Source_Dirs                      : constant Name_Id := N + $;
-    Name_Source_File_Switches             : constant Name_Id := N + $;
-    Name_Source_Files                     : constant Name_Id := N + $;
-    Name_Source_List_File                 : constant Name_Id := N + $;
-    Name_Sources_Subdir                   : constant Name_Id := N + $;
-    Name_Spec                             : constant Name_Id := N + $;
-    Name_Spec_Suffix                      : constant Name_Id := N + $;
-    Name_Specification                    : constant Name_Id := N + $;
-    Name_Specification_Exceptions         : constant Name_Id := N + $;
-    Name_Specification_Suffix             : constant Name_Id := N + $;
-    Name_Stack                            : constant Name_Id := N + $;
-    Name_Switches                         : constant Name_Id := N + $;
-    Name_Symbolic_Link_Supported          : constant Name_Id := N + $;
-    Name_Synchronize                      : constant Name_Id := N + $;
-    Name_Toolchain_Description            : constant Name_Id := N + $;
-    Name_Toolchain_Version                : constant Name_Id := N + $;
-    Name_Trailing_Required_Switches       : constant Name_Id := N + $;
-    Name_Trailing_Switches                : constant Name_Id := N + $;
-    Name_Runtime_Library_Dir              : constant Name_Id := N + $;
-    Name_Runtime_Source_Dir               : constant Name_Id := N + $;
- 
     --  Additional names used by the Repinfo unit
  
     Name_Discriminant                     : constant Name_Id := N + $;
     Name_Operands                         : constant Name_Id := N + $;
  
     --  Other miscellaneous names used in front end
  
     Name_Unaligned_Valid                  : constant Name_Id := N + $;
     Name_Suspension_Object                : constant Name_Id := N + $;
     Name_Synchronous_Task_Control         : constant Name_Id := N + $;
  
--- 1361,1384 ----
     Name_Tagged                           : constant Name_Id := N + $;
     Last_95_Reserved_Word                 : constant Name_Id := N + $;
  
!    subtype Ada_95_Reserved_Words is Name_Id
!      range First_95_Reserved_Word .. Last_95_Reserved_Word;
  
     --  Miscellaneous names used in semantic checking
  
     Name_Raise_Exception                  : constant Name_Id := N + $;
  
     --  Additional names used by the Repinfo unit
  
     Name_Discriminant                     : constant Name_Id := N + $;
     Name_Operands                         : constant Name_Id := N + $;
  
     --  Other miscellaneous names used in front end
+    --  Note that the UP_ prefix means use the rest of the name in uppercase,
+    --  e.g. Name_UP_RESULT corresponds to the name "RESULT".
  
     Name_Unaligned_Valid                  : constant Name_Id := N + $;
+    Name_UP_RESULT                        : constant Name_Id := N + $;
     Name_Suspension_Object                : constant Name_Id := N + $;
     Name_Synchronous_Task_Control         : constant Name_Id := N + $;
  
*************** package Snames is
*** 1539,1544 ****
--- 1396,1410 ----
     Name_Reference_Control_Type           : constant Name_Id := N + $;
     Name_Get_Element_Access               : constant Name_Id := N + $;
  
+    --  Names for Ada 202x Aggregate aspect. Name_Aggregate is already
+    --  present for gprbuild.
+ 
+    Name_Empty                            : constant Name_Id := N + $;
+    Name_Add_Named                        : constant Name_Id := N + $;
+    Name_Add_Unnamed                      : constant Name_Id := N + $;
+    Name_New_Indexed                      : constant Name_Id := N + $;
+    Name_Assign_Indexed                   : constant Name_Id := N + $;
+ 
     --  Ada 2005 reserved words
  
     First_2005_Reserved_Word              : constant Name_Id := N + $;
*************** package Snames is
*** 1547,1554 ****
     Name_Synchronized                     : constant Name_Id := N + $;
     Last_2005_Reserved_Word               : constant Name_Id := N + $;
  
!    subtype Ada_2005_Reserved_Words is
!      Name_Id range First_2005_Reserved_Word .. Last_2005_Reserved_Word;
  
     --  Ada 2012 reserved words
  
--- 1413,1420 ----
     Name_Synchronized                     : constant Name_Id := N + $;
     Last_2005_Reserved_Word               : constant Name_Id := N + $;
  
!    subtype Ada_2005_Reserved_Words is Name_Id
!      range First_2005_Reserved_Word .. Last_2005_Reserved_Word;
  
     --  Ada 2012 reserved words
  
*************** package Snames is
*** 1556,1563 ****
     Name_Some                             : constant Name_Id := N + $;
     Last_2012_Reserved_Word               : constant Name_Id := N + $;
  
!    subtype Ada_2012_Reserved_Words is
!      Name_Id range First_2012_Reserved_Word .. Last_2012_Reserved_Word;
  
     --  Mark last defined name for consistency check in Snames body
  
--- 1422,1429 ----
     Name_Some                             : constant Name_Id := N + $;
     Last_2012_Reserved_Word               : constant Name_Id := N + $;
  
!    subtype Ada_2012_Reserved_Words is Name_Id
!      range First_2012_Reserved_Word .. Last_2012_Reserved_Word;
  
     --  Mark last defined name for consistency check in Snames body
  
*************** package Snames is
*** 1567,1577 ****
     -- Subtypes Defining Name Categories --
     ---------------------------------------
  
!    subtype Any_Operator_Name is Name_Id range
!      First_Operator_Name .. Last_Operator_Name;
  
!    subtype Configuration_Pragma_Names is Name_Id range
!      First_Pragma_Name .. Last_Configuration_Pragma_Name;
  
     ------------------------------
     -- Attribute ID Definitions --
--- 1433,1443 ----
     -- Subtypes Defining Name Categories --
     ---------------------------------------
  
!    subtype Any_Operator_Name is Name_Id
!      range First_Operator_Name .. Last_Operator_Name;
  
!    subtype Configuration_Pragma_Names is Name_Id
!      range First_Pragma_Name .. Last_Configuration_Pragma_Name;
  
     ------------------------------
     -- Attribute ID Definitions --
*************** package Snames is
*** 1629,1636 ****
        Attribute_Has_Same_Storage,
        Attribute_Has_Tagged_Values,
        Attribute_Identity,
-       Attribute_Img,
        Attribute_Implicit_Dereference,
        Attribute_Integer_Value,
        Attribute_Invalid_Value,
        Attribute_Iterator_Element,
--- 1495,1502 ----
        Attribute_Has_Same_Storage,
        Attribute_Has_Tagged_Values,
        Attribute_Identity,
        Attribute_Implicit_Dereference,
+       Attribute_Initialized,
        Attribute_Integer_Value,
        Attribute_Invalid_Value,
        Attribute_Iterator_Element,
*************** package Snames is
*** 1654,1659 ****
--- 1520,1526 ----
        Attribute_Machine_Size,
        Attribute_Mantissa,
        Attribute_Max_Alignment_For_Allocation,
+       Attribute_Max_Integer_Size,
        Attribute_Max_Size_In_Storage_Elements,
        Attribute_Maximum_Alignment,
        Attribute_Mechanism_Code,
*************** package Snames is
*** 1691,1696 ****
--- 1558,1565 ----
        Attribute_Signed_Zeros,
        Attribute_Size,
        Attribute_Small,
+       Attribute_Small_Denominator,
+       Attribute_Small_Numerator,
        Attribute_Storage_Size,
        Attribute_Storage_Unit,
        Attribute_Stream_Size,
*************** package Snames is
*** 1729,1734 ****
--- 1598,1604 ----
        Attribute_Fraction,
        Attribute_From_Any,
        Attribute_Image,
+       Attribute_Img,
        Attribute_Input,
        Attribute_Machine,
        Attribute_Max,
*************** package Snames is
*** 1750,1755 ****
--- 1620,1626 ----
        --  Attributes designating procedures
  
        Attribute_Output,
+       Attribute_Put_Image,
        Attribute_Read,
        Attribute_Write,
  
*************** package Snames is
*** 1775,1782 ****
        Attribute_Dispatching_Domain,
        Attribute_Interrupt_Priority);
  
!    subtype Internal_Attribute_Id is Attribute_Id range
!      Attribute_CPU .. Attribute_Interrupt_Priority;
  
     type Attribute_Class_Array is array (Attribute_Id) of Boolean;
     --  Type used to build attribute classification flag arrays
--- 1646,1653 ----
        Attribute_Dispatching_Domain,
        Attribute_Interrupt_Priority);
  
!    subtype Internal_Attribute_Id is Attribute_Id
!      range Attribute_CPU .. Attribute_Interrupt_Priority;
  
     type Attribute_Class_Array is array (Attribute_Id) of Boolean;
     --  Type used to build attribute classification flag arrays
*************** package Snames is
*** 1804,1815 ****
  
        --  The remaining conventions are foreign language conventions
  
!       Convention_Assembler,  --  also Asm, Assembly
!       Convention_C,          --  also Default, External
!       Convention_COBOL,
        Convention_CPP,
        Convention_Fortran,
!       Convention_Stdcall);   --  also DLL, Win32
  
        --  Note: Convention C_Pass_By_Copy is allowed only for record types
        --  (where it is treated like C except that the appropriate flag is set
--- 1675,1703 ----
  
        --  The remaining conventions are foreign language conventions
  
!       Convention_Assembler,      --  also Asm, Assembly
!       Convention_C,              --  also Default, External
!       Convention_C_Variadic_0,
!       Convention_C_Variadic_1,
!       Convention_C_Variadic_2,
!       Convention_C_Variadic_3,
!       Convention_C_Variadic_4,
!       Convention_C_Variadic_5,
!       Convention_C_Variadic_6,
!       Convention_C_Variadic_7,
!       Convention_C_Variadic_8,
!       Convention_C_Variadic_9,
!       Convention_C_Variadic_10,
!       Convention_C_Variadic_11,
!       Convention_C_Variadic_12,
!       Convention_C_Variadic_13,
!       Convention_C_Variadic_14,
!       Convention_C_Variadic_15,
!       Convention_C_Variadic_16,
        Convention_CPP,
+       Convention_COBOL,
        Convention_Fortran,
!       Convention_Stdcall);       --  also DLL, Win32
  
        --  Note: Convention C_Pass_By_Copy is allowed only for record types
        --  (where it is treated like C except that the appropriate flag is set
*************** package Snames is
*** 1819,1826 ****
     for Convention_Id'Size use 8;
     --  Plenty of space for expansion
  
!    subtype Foreign_Convention is
!      Convention_Id range Convention_Assembler .. Convention_Id'Last;
  
     -----------------------------------
     -- Locking Policy ID Definitions --
--- 1707,1720 ----
     for Convention_Id'Size use 8;
     --  Plenty of space for expansion
  
!    subtype Convention_C_Family is Convention_Id
!      range Convention_C .. Convention_CPP;
! 
!    subtype Convention_C_Variadic is Convention_Id
!      range Convention_C_Variadic_0 .. Convention_C_Variadic_16;
! 
!    subtype Foreign_Convention is Convention_Id
!      range Convention_Assembler .. Convention_Stdcall;
  
     -----------------------------------
     -- Locking Policy ID Definitions --
*************** package Snames is
*** 1893,1899 ****
        Pragma_Overriding_Renamings,
        Pragma_Partition_Elaboration_Policy,
        Pragma_Persistent_BSS,
-       Pragma_Polling,
        Pragma_Prefix_Exception_Messages,
        Pragma_Priority_Specific_Dispatching,
        Pragma_Profile,
--- 1787,1792 ----
*************** package Snames is
*** 1929,1938 ****
  
        Pragma_Abort_Defer,
        Pragma_Abstract_State,
-       Pragma_Acc_Data,
-       Pragma_Acc_Kernels,
-       Pragma_Acc_Loop,
-       Pragma_Acc_Parallel,
        Pragma_All_Calls_Remote,
        Pragma_Assert,
        Pragma_Assert_And_Cut,
--- 1822,1827 ----
*************** package Snames is
*** 1957,1962 ****
--- 1846,1853 ----
        Pragma_CPP_Constructor,
        Pragma_CPP_Virtual,
        Pragma_CPP_Vtable,
+       Pragma_CUDA_Execute,
+       Pragma_CUDA_Global,
        Pragma_Deadline_Floor,
        Pragma_Debug,
        Pragma_Default_Initial_Condition,
*************** package Snames is
*** 2056,2070 ****
        Pragma_Source_Reference,
        Pragma_Static_Elaboration_Desired,
        Pragma_Stream_Convert,
        Pragma_Subtitle,
        Pragma_Suppress_All,
        Pragma_Suppress_Debug_Info,
        Pragma_Suppress_Initialization,
        Pragma_System_Name,
-       Pragma_Test_Case,
        Pragma_Task_Info,
        Pragma_Task_Name,
        Pragma_Task_Storage,
        Pragma_Thread_Local_Storage,
        Pragma_Time_Slice,
        Pragma_Title,
--- 1947,1962 ----
        Pragma_Source_Reference,
        Pragma_Static_Elaboration_Desired,
        Pragma_Stream_Convert,
+       Pragma_Subprogram_Variant,
        Pragma_Subtitle,
        Pragma_Suppress_All,
        Pragma_Suppress_Debug_Info,
        Pragma_Suppress_Initialization,
        Pragma_System_Name,
        Pragma_Task_Info,
        Pragma_Task_Name,
        Pragma_Task_Storage,
+       Pragma_Test_Case,
        Pragma_Thread_Local_Storage,
        Pragma_Time_Slice,
        Pragma_Title,
*************** package Snames is
*** 2250,2262 ****
  
  private
     pragma Inline (Is_Attribute_Name);
     pragma Inline (Is_Entity_Attribute_Name);
!    pragma Inline (Is_Type_Attribute_Name);
     pragma Inline (Is_Locking_Policy_Name);
     pragma Inline (Is_Partition_Elaboration_Policy_Name);
     pragma Inline (Is_Operator_Symbol_Name);
-    pragma Inline (Is_Queuing_Policy_Name);
     pragma Inline (Is_Pragma_Name);
     pragma Inline (Is_Task_Dispatching_Policy_Name);
  
  end Snames;
--- 2142,2158 ----
  
  private
     pragma Inline (Is_Attribute_Name);
+    pragma Inline (Is_Configuration_Pragma_Name);
     pragma Inline (Is_Entity_Attribute_Name);
!    pragma Inline (Is_Function_Attribute_Name);
!    pragma Inline (Is_Internal_Attribute_Name);
     pragma Inline (Is_Locking_Policy_Name);
     pragma Inline (Is_Partition_Elaboration_Policy_Name);
     pragma Inline (Is_Operator_Symbol_Name);
     pragma Inline (Is_Pragma_Name);
+    pragma Inline (Is_Procedure_Attribute_Name);
+    pragma Inline (Is_Queuing_Policy_Name);
     pragma Inline (Is_Task_Dispatching_Policy_Name);
+    pragma Inline (Is_Type_Attribute_Name);
  
  end Snames;
diff -Nrcpad gcc-10.3.0/gcc/ada/socket.c gcc-11.1.0/gcc/ada/socket.c
*** gcc-10.3.0/gcc/ada/socket.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/socket.c	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 2003-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 2003-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** __gnat_getservbyport (int port, const ch
*** 333,340 ****
  }
  #else
  int
! __gnat_gethostbyname (const char *name,
!   struct hostent *ret, char *buf, size_t buflen,
    int *h_errnop)
  {
    struct hostent *rh;
--- 333,340 ----
  }
  #else
  int
! __gnat_gethostbyname (const char *name, struct hostent *ret,
!   char *buf ATTRIBUTE_UNUSED, size_t buflen ATTRIBUTE_UNUSED,
    int *h_errnop)
  {
    struct hostent *rh;
*************** __gnat_gethostbyname (const char *name,
*** 349,356 ****
  }
  
  int
! __gnat_gethostbyaddr (const char *addr, int len, int type,
!   struct hostent *ret, char *buf, size_t buflen,
    int *h_errnop)
  {
    struct hostent *rh;
--- 349,356 ----
  }
  
  int
! __gnat_gethostbyaddr (const char *addr, int len, int type, struct hostent *ret,
!   char *buf ATTRIBUTE_UNUSED, size_t buflen ATTRIBUTE_UNUSED,
    int *h_errnop)
  {
    struct hostent *rh;
*************** __gnat_gethostbyaddr (const char *addr,
*** 365,372 ****
  }
  
  int
! __gnat_getservbyname (const char *name, const char *proto,
!   struct servent *ret, char *buf, size_t buflen)
  {
    struct servent *rh;
    rh = getservbyname (name, proto);
--- 365,372 ----
  }
  
  int
! __gnat_getservbyname (const char *name, const char *proto, struct servent *ret,
!   char *buf ATTRIBUTE_UNUSED, size_t buflen ATTRIBUTE_UNUSED)
  {
    struct servent *rh;
    rh = getservbyname (name, proto);
*************** __gnat_getservbyname (const char *name,
*** 377,384 ****
  }
  
  int
! __gnat_getservbyport (int port, const char *proto,
!   struct servent *ret, char *buf, size_t buflen)
  {
    struct servent *rh;
    rh = getservbyport (port, proto);
--- 377,384 ----
  }
  
  int
! __gnat_getservbyport (int port, const char *proto, struct servent *ret,
!   char *buf ATTRIBUTE_UNUSED, size_t buflen ATTRIBUTE_UNUSED)
  {
    struct servent *rh;
    rh = getservbyport (port, proto);
*************** __gnat_getservbyport (int port, const ch
*** 397,415 ****
  void
  __gnat_last_socket_in_set (fd_set *set, int *last)
  {
-   int s;
    int l;
    l = -1;
  
  #ifdef _WIN32
    /* More efficient method for NT. */
!   for (s = 0; s < set->fd_count; s++)
      if ((int) set->fd_array[s] > l)
        l = set->fd_array[s];
  
  #else
  
!   for (s = *last; s != -1; s--)
      if (FD_ISSET (s, set))
        {
  	l = s;
--- 397,414 ----
  void
  __gnat_last_socket_in_set (fd_set *set, int *last)
  {
    int l;
    l = -1;
  
  #ifdef _WIN32
    /* More efficient method for NT. */
!   for (unsigned int s = 0; s < set->fd_count; s++)
      if ((int) set->fd_array[s] > l)
        l = set->fd_array[s];
  
  #else
  
!   for (int s = *last; s != -1; s--)
      if (FD_ISSET (s, set))
        {
  	l = s;
*************** __gnat_get_h_errno (void) {
*** 517,523 ****
  int
  __gnat_socket_ioctl (int fd, IOCTL_Req_T req, int *arg) {
  #if defined (_WIN32)
!   return ioctlsocket (fd, req, arg);
  #elif defined (__APPLE__)
    /*
     * On Darwin, req is an unsigned long, and we want to convert without sign
--- 516,522 ----
  int
  __gnat_socket_ioctl (int fd, IOCTL_Req_T req, int *arg) {
  #if defined (_WIN32)
!   return ioctlsocket (fd, req, (unsigned long *)arg);
  #elif defined (__APPLE__)
    /*
     * On Darwin, req is an unsigned long, and we want to convert without sign
*************** __gnat_inet_pton (int af, const char *sr
*** 553,559 ****
    int rc;
  
    ss.ss_family = af;
!   rc = WSAStringToAddressA (src, af, NULL, (struct sockaddr *)&ss, &sslen);
    if (rc == 0) {
      switch (af) {
        case AF_INET:
--- 552,559 ----
    int rc;
  
    ss.ss_family = af;
!   rc = WSAStringToAddressA ((char *)src, af, NULL, (struct sockaddr *)&ss,
!                             &sslen);
    if (rc == 0) {
      switch (af) {
        case AF_INET:
*************** int __gnat_minus_500ms() {
*** 803,812 ****
  #if defined (_WIN32)
    // Windows Server 2019 and Windows 8.0 do not need 500 millisecond socket
    // timeout correction.
!   return !(IsWindows8OrGreater() && !IsWindowsServer()
!            || IsWindowsVersionOrGreater(10, 0, 17763));
  #else
!    return 0;
  #endif
  }
  
--- 803,824 ----
  #if defined (_WIN32)
    // Windows Server 2019 and Windows 8.0 do not need 500 millisecond socket
    // timeout correction.
!   if (IsWindowsServer()) {
!     OSVERSIONINFO osvi;
!     ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
!     osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
!     // Documentation proposes to use IsWindowsVersionOrGreater(10, 0, 17763)
!     // but it does not compare by the build number (last parameter).
!     GetVersionEx(&osvi);
!     return osvi.dwMajorVersion < 10
!         || (osvi.dwMajorVersion == 10
!             && osvi.dwMinorVersion == 0
!             && osvi.dwBuildNumber < 17763);
!   } else {
!     return !IsWindows8OrGreater();
!   }
  #else
!   return 0;
  #endif
  }
  
diff -Nrcpad gcc-10.3.0/gcc/ada/spark_xrefs.adb gcc-11.1.0/gcc/ada/spark_xrefs.adb
*** gcc-10.3.0/gcc/ada/spark_xrefs.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/spark_xrefs.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/spark_xrefs.ads gcc-11.1.0/gcc/ada/spark_xrefs.ads
*** gcc-10.3.0/gcc/ada/spark_xrefs.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/spark_xrefs.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package SPARK_Xrefs is
*** 57,63 ****
     Heap : Entity_Id := Empty;
     --  A special entity which denotes the heap object; it should be considered
     --  constant, but needs to be variable, because it can only be initialized
!    --  after the node tables are created.
  
     -----------------
     -- Subprograms --
--- 57,64 ----
     Heap : Entity_Id := Empty;
     --  A special entity which denotes the heap object; it should be considered
     --  constant, but needs to be variable, because it can only be initialized
!    --  after the node tables are created. Also, it is only created if there is
!    --  an actual need for it, and remains Empty otherwise.
  
     -----------------
     -- Subprograms --
diff -Nrcpad gcc-10.3.0/gcc/ada/sprint.adb gcc-11.1.0/gcc/ada/sprint.adb
*** gcc-10.3.0/gcc/ada/sprint.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sprint.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sprint is
*** 176,186 ****
     --  Used to print output lines in Debug_Generated_Code mode (this is used
     --  as the argument for a call to Set_Special_Output in package Output).
  
-    procedure Process_TFAI_RR_Flags (Nod : Node_Id);
-    --  Given a divide, multiplication or division node, check the flags
-    --  Treat_Fixed_As_Integer and Rounded_Flags, and if set, output the
-    --  appropriate special syntax characters (# and @).
- 
     procedure Set_Debug_Sloc;
     --  If Dump_Node is non-empty, this routine sets the appropriate value
     --  in its Sloc field, from the current location in the debug source file
--- 176,181 ----
*************** package body Sprint is
*** 425,430 ****
--- 420,427 ----
        Dump_Original_Only  := False;
        Dump_Freeze_Null    := True;
        Current_Source_File := No_Source_File;
+       Push_Output;
+       Set_Standard_Output;
  
        if Arg in List_Range then
           Sprint_Node_List (List_Id (Arg), New_Lines => True);
*************** package body Sprint is
*** 437,442 ****
--- 434,440 ----
        end if;
  
        Write_Eol;
+       Pop_Output;
     end pg;
  
     --------
*************** package body Sprint is
*** 446,453 ****
     procedure po (Arg : Union_Id) is
     begin
        Dump_Generated_Only := False;
!       Dump_Original_Only := True;
        Current_Source_File := No_Source_File;
  
        if Arg in List_Range then
           Sprint_Node_List (List_Id (Arg), New_Lines => True);
--- 444,454 ----
     procedure po (Arg : Union_Id) is
     begin
        Dump_Generated_Only := False;
!       Dump_Original_Only  := True;
!       Dump_Freeze_Null    := False;
        Current_Source_File := No_Source_File;
+       Push_Output;
+       Set_Standard_Output;
  
        if Arg in List_Range then
           Sprint_Node_List (List_Id (Arg), New_Lines => True);
*************** package body Sprint is
*** 460,465 ****
--- 461,467 ----
        end if;
  
        Write_Eol;
+       Pop_Output;
     end po;
  
     ----------------------
*************** package body Sprint is
*** 471,491 ****
        Write_Debug_Line (S, Debug_Sloc);
     end Print_Debug_Line;
  
-    ---------------------------
-    -- Process_TFAI_RR_Flags --
-    ---------------------------
- 
-    procedure Process_TFAI_RR_Flags (Nod : Node_Id) is
-    begin
-       if Treat_Fixed_As_Integer (Nod) then
-          Write_Char ('#');
-       end if;
- 
-       if Rounded_Result (Nod) then
-          Write_Char ('@');
-       end if;
-    end Process_TFAI_RR_Flags;
- 
     --------
     -- ps --
     --------
--- 473,478 ----
*************** package body Sprint is
*** 493,500 ****
     procedure ps (Arg : Union_Id) is
     begin
        Dump_Generated_Only := False;
!       Dump_Original_Only := False;
        Current_Source_File := No_Source_File;
  
        if Arg in List_Range then
           Sprint_Node_List (List_Id (Arg), New_Lines => True);
--- 480,490 ----
     procedure ps (Arg : Union_Id) is
     begin
        Dump_Generated_Only := False;
!       Dump_Original_Only  := False;
!       Dump_Freeze_Null    := False;
        Current_Source_File := No_Source_File;
+       Push_Output;
+       Set_Standard_Output;
  
        if Arg in List_Range then
           Sprint_Node_List (List_Id (Arg), New_Lines => True);
*************** package body Sprint is
*** 507,512 ****
--- 497,503 ----
        end if;
  
        Write_Eol;
+       Pop_Output;
     end ps;
  
     --------------------
*************** package body Sprint is
*** 552,558 ****
           --  We do not know the actual end location in the generated code and
           --  it could be much closer than in the source code, so play safe.
  
!          if Nkind_In (Dump_Node, N_Case_Statement, N_If_Statement) then
              Set_End_Location (Dump_Node, Debug_Sloc + Source_Ptr (Column - 1));
           end if;
  
--- 543,549 ----
           --  We do not know the actual end location in the generated code and
           --  it could be much closer than in the source code, so play safe.
  
!          if Nkind (Dump_Node) in N_Case_Statement | N_If_Statement then
              Set_End_Location (Dump_Node, Debug_Sloc + Source_Ptr (Column - 1));
           end if;
  
*************** package body Sprint is
*** 1345,1350 ****
--- 1336,1357 ----
              Write_Str (" => ");
              Sprint_Node (Expression (Node));
  
+          when N_Iterated_Element_Association =>
+             Set_Debug_Sloc;
+             if Present (Iterator_Specification (Node)) then
+                Sprint_Node (Iterator_Specification (Node));
+             else
+                Sprint_Node (Loop_Parameter_Specification (Node));
+             end if;
+ 
+             if Present (Key_Expression (Node)) then
+                Write_Str (" use ");
+                Sprint_Node (Key_Expression (Node));
+             end if;
+ 
+             Write_Str (" => ");
+             Sprint_Node (Expression (Node));
+ 
           when N_Component_Clause =>
              Write_Indent;
              Sprint_Node (Component_Name (Node));
*************** package body Sprint is
*** 2411,2416 ****
--- 2418,2424 ----
  
                    if Present (Expression (Node))
                      and then Expression (Node) /= Error
+                     and then not No_Initialization (Node)
                    then
                       Write_Str (" := ");
                       Sprint_Node (Expression (Node));
*************** package body Sprint is
*** 2461,2474 ****
              Write_Indent;
              Set_Debug_Sloc;
              Sprint_Node (Defining_Identifier (Node));
-             Write_Str (" : ");
  
              --  Ada 2005 (AI-230): Access renamings
  
              if Present (Access_Definition (Node)) then
                 Sprint_Node (Access_Definition (Node));
  
              elsif Present (Subtype_Mark (Node)) then
  
                 --  Ada 2005 (AI-423): Object renaming with a null exclusion
  
--- 2469,2483 ----
              Write_Indent;
              Set_Debug_Sloc;
              Sprint_Node (Defining_Identifier (Node));
  
              --  Ada 2005 (AI-230): Access renamings
  
              if Present (Access_Definition (Node)) then
+                Write_Str (" : ");
                 Sprint_Node (Access_Definition (Node));
  
              elsif Present (Subtype_Mark (Node)) then
+                Write_Str (" : ");
  
                 --  Ada 2005 (AI-423): Object renaming with a null exclusion
  
*************** package body Sprint is
*** 2478,2485 ****
  
                 Sprint_Node (Subtype_Mark (Node));
  
              else
!                Write_Str (" ??? ");
              end if;
  
              Write_Str_With_Col_Check (" renames ");
--- 2487,2499 ----
  
                 Sprint_Node (Subtype_Mark (Node));
  
+             --  AI12-0275: Object_Renaming_Declaration without explicit subtype
+ 
+             elsif Ada_Version >= Ada_2020 then
+                null;
+ 
              else
!                Write_Str (" :  ??? ");
              end if;
  
              Write_Str_With_Col_Check (" renames ");
*************** package body Sprint is
*** 2508,2514 ****
           when N_Op_Divide =>
              Sprint_Left_Opnd (Node);
              Write_Char (' ');
!             Process_TFAI_RR_Flags (Node);
              Write_Operator (Node, "/ ");
              Sprint_Right_Opnd (Node);
  
--- 2522,2530 ----
           when N_Op_Divide =>
              Sprint_Left_Opnd (Node);
              Write_Char (' ');
!             if Rounded_Result (Node) then
!                Write_Char ('@');
!             end if;
              Write_Operator (Node, "/ ");
              Sprint_Right_Opnd (Node);
  
*************** package body Sprint is
*** 2548,2565 ****
  
           when N_Op_Mod =>
              Sprint_Left_Opnd (Node);
- 
-             if Treat_Fixed_As_Integer (Node) then
-                Write_Str (" #");
-             end if;
- 
              Write_Operator (Node, " mod ");
              Sprint_Right_Opnd (Node);
  
           when N_Op_Multiply =>
              Sprint_Left_Opnd (Node);
              Write_Char (' ');
!             Process_TFAI_RR_Flags (Node);
              Write_Operator (Node, "* ");
              Sprint_Right_Opnd (Node);
  
--- 2564,2578 ----
  
           when N_Op_Mod =>
              Sprint_Left_Opnd (Node);
              Write_Operator (Node, " mod ");
              Sprint_Right_Opnd (Node);
  
           when N_Op_Multiply =>
              Sprint_Left_Opnd (Node);
              Write_Char (' ');
!             if Rounded_Result (Node) then
!                Write_Char ('@');
!             end if;
              Write_Operator (Node, "* ");
              Sprint_Right_Opnd (Node);
  
*************** package body Sprint is
*** 2583,2593 ****
  
           when N_Op_Rem =>
              Sprint_Left_Opnd (Node);
- 
-             if Treat_Fixed_As_Integer (Node) then
-                Write_Str (" #");
-             end if;
- 
              Write_Operator (Node, " rem ");
              Sprint_Right_Opnd (Node);
  
--- 2596,2601 ----
*************** package body Sprint is
*** 3540,3547 ****
        --  where the aspects are printed inside the package specification.
  
        if Has_Aspects (Node)
!         and then not Nkind_In (Node, N_Generic_Package_Declaration,
!                                      N_Package_Declaration)
          and then not Is_Empty_List (Aspect_Specifications (Node))
        then
           Sprint_Aspect_Specifications (Node, Semicolon => True);
--- 3548,3555 ----
        --  where the aspects are printed inside the package specification.
  
        if Has_Aspects (Node)
!         and then Nkind (Node) not in
!                    N_Generic_Package_Declaration | N_Package_Declaration
          and then not Is_Empty_List (Aspect_Specifications (Node))
        then
           Sprint_Aspect_Specifications (Node, Semicolon => True);
*************** package body Sprint is
*** 4509,4514 ****
--- 4517,4559 ----
                                Write_Str (", ");
                             end loop;
  
+                            if Present (Extra_Formals (Typ)) then
+                               Param := Extra_Formals (Typ);
+ 
+                               while Present (Param) loop
+                                  Write_Str (", ");
+                                  Write_Id (Param);
+                                  Write_Str (" : ");
+                                  Write_Id (Etype (Param));
+ 
+                                  Param := Extra_Formal (Param);
+                               end loop;
+                            end if;
+ 
+                            Write_Char (')');
+                         end;
+ 
+                      elsif Present (Extra_Formals (Typ)) then
+                         declare
+                            Param : Entity_Id;
+ 
+                         begin
+                            Write_Str (" (");
+ 
+                            Param := Extra_Formals (Typ);
+ 
+                            while Present (Param) loop
+                               Write_Id (Param);
+                               Write_Str (" : ");
+                               Write_Id (Etype (Param));
+ 
+                               if Present (Extra_Formal (Param)) then
+                                  Write_Str (", ");
+                               end if;
+ 
+                               Param := Extra_Formal (Param);
+                            end loop;
+ 
                             Write_Char (')');
                          end;
                       end if;
*************** package body Sprint is
*** 4711,4719 ****
  
        --  See if we have extra formals
  
!       if Nkind_In (N, N_Function_Specification,
!                       N_Procedure_Specification)
!       then
           Ent := Defining_Entity (N);
  
           --  Loop to write extra formals (if any)
--- 4756,4762 ----
  
        --  See if we have extra formals
  
!       if Nkind (N) in N_Function_Specification | N_Procedure_Specification then
           Ent := Defining_Entity (N);
  
           --  Loop to write extra formals (if any)
diff -Nrcpad gcc-10.3.0/gcc/ada/sprint.ads gcc-11.1.0/gcc/ada/sprint.ads
*** gcc-10.3.0/gcc/ada/sprint.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sprint.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sprint is
*** 51,57 ****
     --    Convert wi Conversion_OK            target?(source)
     --    Convert wi Float_Truncate           target^(source)
     --    Convert wi Rounded_Result           target@(source)
-    --    Divide wi Treat_Fixed_As_Integer    x #/ y
     --    Divide wi Rounded_Result            x @/ y
     --    Expression with actions             do action; .. action; in expr end
     --    Expression with range check         {expression}
--- 51,56 ----
*************** package Sprint is
*** 66,74 ****
     --    Itype declaration                   [(sub)type declaration without ;]
     --    Itype reference                     reference itype
     --    Label declaration                   labelname : label
-    --    Mod wi Treat_Fixed_As_Integer       x #mod y
     --    Multiple concatenation              expr && expr && expr ... && expr
-    --    Multiply wi Treat_Fixed_As_Integer  x #* y
     --    Multiply wi Rounded_Result          x @* y
     --    Operator with overflow check        {operator} (e.g. {+})
     --    Others choice for cleanup           when all others
--- 65,71 ----
*************** package Sprint is
*** 77,83 ****
     --    Raise xxx error                     [xxx_error [when cond]]
     --    Raise xxx error with msg            [xxx_error [when cond], "msg"]
     --    Rational literal                    [expression]
-    --    Rem wi Treat_Fixed_As_Integer       x #rem y
     --    Reference                           expression'reference
     --    Shift nodes                         shift_name!(expr, count)
     --    Static declaration                  name : static xxx
--- 74,79 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/stand.adb gcc-11.1.0/gcc/ada/stand.adb
*** gcc-10.3.0/gcc/ada/stand.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/stand.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,190 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                                S T A N D                                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.        --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Elists;  use Elists;
- with System;  use System;
- with Tree_IO; use Tree_IO;
- 
- package body Stand is
- 
-    ---------------
-    -- Tree_Read --
-    ---------------
- 
-    procedure Tree_Read is
-    begin
-       Tree_Read_Data (Standard_Entity'Address,
-                        Standard_Entity_Array_Type'Size / Storage_Unit);
- 
-       Tree_Read_Int (Int (Standard_Package_Node));
-       Tree_Read_Int (Int (Last_Standard_Node_Id));
-       Tree_Read_Int (Int (Last_Standard_List_Id));
- 
-       Tree_Read_Int (Int (Boolean_Literals (False)));
-       Tree_Read_Int (Int (Boolean_Literals (True)));
- 
-       Tree_Read_Int (Int (Standard_Void_Type));
-       Tree_Read_Int (Int (Standard_Exception_Type));
-       Tree_Read_Int (Int (Standard_A_String));
-       Tree_Read_Int (Int (Standard_A_Char));
-       Tree_Read_Int (Int (Standard_Debug_Renaming_Type));
- 
-       --  Deal with Predefined_Float_Types, which is an Elist. We wrote the
-       --  entities out in sequence, terminated by an Empty entry.
- 
-       declare
-          Elmt : Entity_Id;
-       begin
-          Predefined_Float_Types := New_Elmt_List;
-          loop
-             Tree_Read_Int (Int (Elmt));
-             exit when Elmt = Empty;
-             Append_Elmt (Elmt, Predefined_Float_Types);
-          end loop;
-       end;
- 
-       --  Remainder of special entities
- 
-       Tree_Read_Int (Int (Any_Id));
-       Tree_Read_Int (Int (Any_Type));
-       Tree_Read_Int (Int (Any_Access));
-       Tree_Read_Int (Int (Any_Array));
-       Tree_Read_Int (Int (Any_Boolean));
-       Tree_Read_Int (Int (Any_Character));
-       Tree_Read_Int (Int (Any_Composite));
-       Tree_Read_Int (Int (Any_Discrete));
-       Tree_Read_Int (Int (Any_Fixed));
-       Tree_Read_Int (Int (Any_Integer));
-       Tree_Read_Int (Int (Any_Modular));
-       Tree_Read_Int (Int (Any_Numeric));
-       Tree_Read_Int (Int (Any_Real));
-       Tree_Read_Int (Int (Any_Scalar));
-       Tree_Read_Int (Int (Any_String));
-       Tree_Read_Int (Int (Raise_Type));
-       Tree_Read_Int (Int (Universal_Integer));
-       Tree_Read_Int (Int (Universal_Real));
-       Tree_Read_Int (Int (Universal_Fixed));
-       Tree_Read_Int (Int (Standard_Integer_8));
-       Tree_Read_Int (Int (Standard_Integer_16));
-       Tree_Read_Int (Int (Standard_Integer_32));
-       Tree_Read_Int (Int (Standard_Integer_64));
-       Tree_Read_Int (Int (Standard_Short_Short_Unsigned));
-       Tree_Read_Int (Int (Standard_Short_Unsigned));
-       Tree_Read_Int (Int (Standard_Unsigned));
-       Tree_Read_Int (Int (Standard_Long_Unsigned));
-       Tree_Read_Int (Int (Standard_Long_Long_Unsigned));
-       Tree_Read_Int (Int (Standard_Unsigned_64));
-       Tree_Read_Int (Int (Abort_Signal));
-       Tree_Read_Int (Int (Standard_Op_Rotate_Left));
-       Tree_Read_Int (Int (Standard_Op_Rotate_Right));
-       Tree_Read_Int (Int (Standard_Op_Shift_Left));
-       Tree_Read_Int (Int (Standard_Op_Shift_Right));
-       Tree_Read_Int (Int (Standard_Op_Shift_Right_Arithmetic));
-    end Tree_Read;
- 
-    ----------------
-    -- Tree_Write --
-    ----------------
- 
-    procedure Tree_Write is
-    begin
-       Tree_Write_Data (Standard_Entity'Address,
-                        Standard_Entity_Array_Type'Size / Storage_Unit);
- 
-       Tree_Write_Int (Int (Standard_Package_Node));
-       Tree_Write_Int (Int (Last_Standard_Node_Id));
-       Tree_Write_Int (Int (Last_Standard_List_Id));
- 
-       Tree_Write_Int (Int (Boolean_Literals (False)));
-       Tree_Write_Int (Int (Boolean_Literals (True)));
- 
-       Tree_Write_Int (Int (Standard_Void_Type));
-       Tree_Write_Int (Int (Standard_Exception_Type));
-       Tree_Write_Int (Int (Standard_A_String));
-       Tree_Write_Int (Int (Standard_A_Char));
-       Tree_Write_Int (Int (Standard_Debug_Renaming_Type));
- 
-       --  Deal with Predefined_Float_Types, which is an Elist. Write the
-       --  entities out in sequence, terminated by an Empty entry.
- 
-       declare
-          Elmt : Elmt_Id;
- 
-       begin
-          Elmt := First_Elmt (Predefined_Float_Types);
-          while Present (Elmt) loop
-             Tree_Write_Int (Int (Node (Elmt)));
-             Next_Elmt (Elmt);
-          end loop;
- 
-          Tree_Write_Int (Int (Empty));
-       end;
- 
-       --  Remainder of special entries
- 
-       Tree_Write_Int (Int (Any_Id));
-       Tree_Write_Int (Int (Any_Type));
-       Tree_Write_Int (Int (Any_Access));
-       Tree_Write_Int (Int (Any_Array));
-       Tree_Write_Int (Int (Any_Boolean));
-       Tree_Write_Int (Int (Any_Character));
-       Tree_Write_Int (Int (Any_Composite));
-       Tree_Write_Int (Int (Any_Discrete));
-       Tree_Write_Int (Int (Any_Fixed));
-       Tree_Write_Int (Int (Any_Integer));
-       Tree_Write_Int (Int (Any_Modular));
-       Tree_Write_Int (Int (Any_Numeric));
-       Tree_Write_Int (Int (Any_Real));
-       Tree_Write_Int (Int (Any_Scalar));
-       Tree_Write_Int (Int (Any_String));
-       Tree_Write_Int (Int (Raise_Type));
-       Tree_Write_Int (Int (Universal_Integer));
-       Tree_Write_Int (Int (Universal_Real));
-       Tree_Write_Int (Int (Universal_Fixed));
-       Tree_Write_Int (Int (Standard_Integer_8));
-       Tree_Write_Int (Int (Standard_Integer_16));
-       Tree_Write_Int (Int (Standard_Integer_32));
-       Tree_Write_Int (Int (Standard_Integer_64));
-       Tree_Write_Int (Int (Standard_Short_Short_Unsigned));
-       Tree_Write_Int (Int (Standard_Short_Unsigned));
-       Tree_Write_Int (Int (Standard_Unsigned));
-       Tree_Write_Int (Int (Standard_Long_Unsigned));
-       Tree_Write_Int (Int (Standard_Long_Long_Unsigned));
-       Tree_Write_Int (Int (Standard_Unsigned_64));
-       Tree_Write_Int (Int (Abort_Signal));
-       Tree_Write_Int (Int (Standard_Op_Rotate_Left));
-       Tree_Write_Int (Int (Standard_Op_Rotate_Right));
-       Tree_Write_Int (Int (Standard_Op_Shift_Left));
-       Tree_Write_Int (Int (Standard_Op_Shift_Right));
-       Tree_Write_Int (Int (Standard_Op_Shift_Right_Arithmetic));
-    end Tree_Write;
- 
- end Stand;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/stand.ads gcc-11.1.0/gcc/ada/stand.ads
*** gcc-10.3.0/gcc/ada/stand.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/stand.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Stand is
*** 52,58 ****
  
        --  Types and subtypes defined in package Standard (in the order in which
        --  they appear in the RM, so that the declarations are in the right
!       --  order for the purposes of ASIS traversals
  
        S_Boolean,
  
--- 46,52 ----
  
        --  Types and subtypes defined in package Standard (in the order in which
        --  they appear in the RM, so that the declarations are in the right
!       --  order for the purposes of e.g. ASIS traversals
  
        S_Boolean,
  
*************** package Stand is
*** 61,66 ****
--- 55,61 ----
        S_Integer,
        S_Long_Integer,
        S_Long_Long_Integer,
+       S_Long_Long_Long_Integer,
  
        S_Natural,
        S_Positive,
*************** package Stand is
*** 283,288 ****
--- 278,286 ----
     Standard_Long_Integer        : Entity_Id renames SE (S_Long_Integer);
     Standard_Long_Long_Integer   : Entity_Id renames SE (S_Long_Long_Integer);
  
+    Standard_Long_Long_Long_Integer : Entity_Id renames
+                                                  SE (S_Long_Long_Long_Integer);
+ 
     Standard_Op_Add              : Entity_Id renames SE (S_Op_Add);
     Standard_Op_And              : Entity_Id renames SE (S_Op_And);
     Standard_Op_Concat           : Entity_Id renames SE (S_Op_Concat);
*************** package Stand is
*** 436,443 ****
  
     Universal_Integer : Entity_Id;
     --  Entity for universal integer type. The bounds of this type correspond
!    --  to the largest supported integer type (i.e. Long_Long_Integer). It is
!    --  the type used for runtime calculations in type universal integer.
  
     Universal_Real : Entity_Id;
     --  Entity for universal real type. The bounds of this type correspond to
--- 434,441 ----
  
     Universal_Integer : Entity_Id;
     --  Entity for universal integer type. The bounds of this type correspond
!    --  to the largest supported integer type (i.e. Long_Long_Long_Integer).
!    --  It is the type used for runtime calculations in type universal integer.
  
     Universal_Real : Entity_Id;
     --  Entity for universal real type. The bounds of this type correspond to
*************** package Stand is
*** 453,474 ****
     --  universal integer and universal real, it is never used for runtime
     --  calculations).
  
!    Standard_Integer_8  : Entity_Id;
!    Standard_Integer_16 : Entity_Id;
!    Standard_Integer_32 : Entity_Id;
!    Standard_Integer_64 : Entity_Id;
     --  These are signed integer types with the indicated sizes. Used for the
     --  underlying implementation types for fixed-point and enumeration types.
  
!    Standard_Short_Short_Unsigned : Entity_Id;
!    Standard_Short_Unsigned       : Entity_Id;
!    Standard_Unsigned             : Entity_Id;
!    Standard_Long_Unsigned        : Entity_Id;
!    Standard_Long_Long_Unsigned   : Entity_Id;
     --  Unsigned types with same Esize as corresponding signed integer types
  
     Standard_Unsigned_64 : Entity_Id;
!    --  An unsigned type, mod 2 ** 64, size of 64 bits.
  
     Abort_Signal : Entity_Id;
     --  Entity for abort signal exception
--- 451,478 ----
     --  universal integer and universal real, it is never used for runtime
     --  calculations).
  
!    Standard_Integer_8   : Entity_Id;
!    Standard_Integer_16  : Entity_Id;
!    Standard_Integer_32  : Entity_Id;
!    Standard_Integer_64  : Entity_Id;
!    Standard_Integer_128 : Entity_Id;
     --  These are signed integer types with the indicated sizes. Used for the
     --  underlying implementation types for fixed-point and enumeration types.
  
!    Standard_Short_Short_Unsigned    : Entity_Id;
!    Standard_Short_Unsigned          : Entity_Id;
!    Standard_Unsigned                : Entity_Id;
!    Standard_Long_Unsigned           : Entity_Id;
!    Standard_Long_Long_Unsigned      : Entity_Id;
!    Standard_Long_Long_Long_Unsigned : Entity_Id;
     --  Unsigned types with same Esize as corresponding signed integer types
  
     Standard_Unsigned_64 : Entity_Id;
!    --  Entity for an unsigned type mod 2 ** 64, size of 64 bits.
! 
!    Standard_Address : Entity_Id;
!    --  Entity for an unsigned type mod 2 ** System_Address_Size, size of
!    --  System_Address_Size bits. Used for implementing Allow_Integer_Address.
  
     Abort_Signal : Entity_Id;
     --  Entity for abort signal exception
*************** package Stand is
*** 480,496 ****
     Standard_Op_Shift_Right_Arithmetic : Entity_Id;
     --  These entities are used for shift operators generated by the expander
  
-    -----------------
-    -- Subprograms --
-    -----------------
- 
-    procedure Tree_Read;
-    --  Initializes entity values in this package from the current tree file
-    --  using Tree_IO. Note that Tree_Read includes all the initialization that
-    --  is carried out by Create_Standard.
- 
-    procedure Tree_Write;
-    --  Writes out the entity values in this package to the current tree file
-    --  using Tree_IO.
- 
  end Stand;
--- 484,487 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/stringt.adb gcc-11.1.0/gcc/ada/stringt.adb
*** gcc-10.3.0/gcc/ada/stringt.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/stringt.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package body Stringt is
*** 360,385 ****
        return To_String (Buf);
     end To_String;
  
-    ---------------
-    -- Tree_Read --
-    ---------------
- 
-    procedure Tree_Read is
-    begin
-       String_Chars.Tree_Read;
-       Strings.Tree_Read;
-    end Tree_Read;
- 
-    ----------------
-    -- Tree_Write --
-    ----------------
- 
-    procedure Tree_Write is
-    begin
-       String_Chars.Tree_Write;
-       Strings.Tree_Write;
-    end Tree_Write;
- 
     ------------
     -- Unlock --
     ------------
--- 354,359 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/stringt.ads gcc-11.1.0/gcc/ada/stringt.ads
*** gcc-10.3.0/gcc/ada/stringt.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/stringt.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
***************
*** 30,36 ****
  ------------------------------------------------------------------------------
  
  with Namet;  use Namet;
! with System; use System;
  with Types;  use Types;
  
  package Stringt is
--- 24,30 ----
  ------------------------------------------------------------------------------
  
  with Namet;  use Namet;
! with System;
  with Types;  use Types;
  
  package Stringt is
*************** package Stringt is
*** 62,69 ****
     --------------------------------------
  
     procedure Initialize;
!    --  Initializes the strings table for a new compilation. Note that
!    --  Initialize must not be called if Tree_Read is used.
  
     procedure Lock;
     --  Lock internal tables before calling back end
--- 56,62 ----
     --------------------------------------
  
     procedure Initialize;
!    --  Initializes the strings table for a new compilation.
  
     procedure Lock;
     --  Lock internal tables before calling back end
*************** package Stringt is
*** 148,162 ****
     function Strings_Address return System.Address;
     --  Return address of Strings table (used by Back_End call to Gigi)
  
-    procedure Tree_Read;
-    --  Initializes internal tables from current tree file using the relevant
-    --  Table.Tree_Read routines. Note that Initialize should not be called if
-    --  Tree_Read is used. Tree_Read includes all necessary initialization.
- 
-    procedure Tree_Write;
-    --  Writes out internal tables to current tree file using the relevant
-    --  Table.Tree_Write routines.
- 
     procedure Write_Char_Code (Code : Char_Code);
     --  Procedure to write a character code value, used for debugging purposes
     --  for writing character codes. If the character code is in the range
--- 141,146 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/stringt.h gcc-11.1.0/gcc/ada/stringt.h
*** gcc-10.3.0/gcc/ada/stringt.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/stringt.h	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2019, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2020, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/style.adb gcc-11.1.0/gcc/ada/style.adb
*** gcc-10.3.0/gcc/ada/style.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/style.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/style.ads gcc-11.1.0/gcc/ada/style.ads
*** gcc-10.3.0/gcc/ada/style.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/style.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/styleg.adb gcc-11.1.0/gcc/ada/styleg.adb
*** gcc-10.3.0/gcc/ada/styleg.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/styleg.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Styleg is
*** 207,219 ****
  
        function OK_Boolean_Operand (N : Node_Id) return Boolean is
        begin
!          if Nkind_In (N, N_Identifier, N_Expanded_Name) then
              return True;
  
           elsif Nkind (N) = N_Op_Not then
              return OK_Boolean_Operand (Original_Node (Right_Opnd (N)));
  
!          elsif Nkind_In (N, N_Op_And, N_Op_Or) then
              return OK_Boolean_Operand (Original_Node (Left_Opnd (N)))
                       and then
                     OK_Boolean_Operand (Original_Node (Right_Opnd (N)));
--- 207,219 ----
  
        function OK_Boolean_Operand (N : Node_Id) return Boolean is
        begin
!          if Nkind (N) in N_Identifier | N_Expanded_Name then
              return True;
  
           elsif Nkind (N) = N_Op_Not then
              return OK_Boolean_Operand (Original_Node (Right_Opnd (N)));
  
!          elsif Nkind (N) in N_Op_And | N_Op_Or then
              return OK_Boolean_Operand (Original_Node (Left_Opnd (N)))
                       and then
                     OK_Boolean_Operand (Original_Node (Right_Opnd (N)));
*************** package body Styleg is
*** 233,239 ****
              Orig : constant Node_Id := Original_Node (Node);
  
           begin
!             if Nkind_In (Orig, N_Op_And, N_Op_Or) then
                 declare
                    L : constant Node_Id := Original_Node (Left_Opnd  (Orig));
                    R : constant Node_Id := Original_Node (Right_Opnd (Orig));
--- 233,239 ----
              Orig : constant Node_Id := Original_Node (Node);
  
           begin
!             if Nkind (Orig) in N_Op_And | N_Op_Or then
                 declare
                    L : constant Node_Id := Original_Node (Left_Opnd  (Orig));
                    R : constant Node_Id := Original_Node (Right_Opnd (Orig));
diff -Nrcpad gcc-10.3.0/gcc/ada/styleg.ads gcc-11.1.0/gcc/ada/styleg.ads
*** gcc-10.3.0/gcc/ada/styleg.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/styleg.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/stylesw.adb gcc-11.1.0/gcc/ada/stylesw.adb
*** gcc-10.3.0/gcc/ada/stylesw.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/stylesw.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/stylesw.ads gcc-11.1.0/gcc/ada/stylesw.ads
*** gcc-10.3.0/gcc/ada/stylesw.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/stylesw.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/switch-b.adb gcc-11.1.0/gcc/ada/switch-b.adb
*** gcc-10.3.0/gcc/ada/switch-b.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/switch-b.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/switch-b.ads gcc-11.1.0/gcc/ada/switch-b.ads
*** gcc-10.3.0/gcc/ada/switch-b.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/switch-b.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/switch-c.adb gcc-11.1.0/gcc/ada/switch-c.adb
*** gcc-10.3.0/gcc/ada/switch-c.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/switch-c.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Switch.C is
*** 486,491 ****
--- 486,497 ----
                       Ptr := Ptr + 1;
                       Check_Aliasing_Of_Parameters := True;
  
+                   --  -gnateb (config file basenames and checksums in ALI)
+ 
+                   when 'b' =>
+                      Ptr := Ptr + 1;
+                      Config_Files_Store_Basename := True;
+ 
                    --  -gnatec (configuration pragmas)
  
                    when 'c' =>
*************** package body Switch.C is
*** 673,678 ****
--- 679,691 ----
                         new String'(Switch_Chars (Ptr .. Max));
                       return;
  
+                   --  -gnaten (memory to allocate for nodes)
+ 
+                   when 'n' =>
+                      Ptr := Ptr + 1;
+                      Scan_Pos
+                        (Switch_Chars, Max, Ptr, Nodes_Size_In_Meg, C);
+ 
                    --  -gnateO= (object path file)
  
                    --  This is an internal switch
*************** package body Switch.C is
*** 723,728 ****
--- 736,742 ----
  
                    when 'P' =>
                       Treat_Categorization_Errors_As_Warnings := True;
+                      Ptr := Ptr + 1;
  
                    --  -gnates=file (specify extra file switches for gnat2why)
  
*************** package body Switch.C is
*** 808,815 ****
                    --  -gnateu (unrecognized y,V,w switches)
  
                    when 'u' =>
-                      Ptr := Ptr + 1;
                       Ignore_Unrecognized_VWY_Switches := True;
  
                    --  -gnateV (validity checks on parameters)
  
--- 822,829 ----
                    --  -gnateu (unrecognized y,V,w switches)
  
                    when 'u' =>
                       Ignore_Unrecognized_VWY_Switches := True;
+                      Ptr := Ptr + 1;
  
                    --  -gnateV (validity checks on parameters)
  
*************** package body Switch.C is
*** 1154,1165 ****
                    Suppress_Options.Overflow_Mode_Assertions := Strict;
                 end if;
  
-             --  -gnatP (periodic poll)
- 
-             when 'P' =>
-                Ptr := Ptr + 1;
-                Polling_Required := True;
- 
              --  -gnatq (don't quit)
  
              when 'q' =>
--- 1168,1173 ----
*************** package body Switch.C is
*** 1170,1176 ****
  
              when 'Q' =>
                 Ptr := Ptr + 1;
!                Force_ALI_Tree_File := True;
                 Try_Semantics := True;
  
              --  -gnatr (restrictions as warnings)
--- 1178,1184 ----
  
              when 'Q' =>
                 Ptr := Ptr + 1;
!                Force_ALI_File := True;
                 Try_Semantics := True;
  
              --  -gnatr (restrictions as warnings)
*************** package body Switch.C is
*** 1250,1262 ****
                 Print_Standard := True;
                 Ptr := Ptr + 1;
  
-             --  -gnatt (output tree)
- 
-             when 't' =>
-                Ptr := Ptr + 1;
-                Tree_Output := True;
-                Back_Annotate_Rep_Info := True;
- 
              --  -gnatT (change start of internal table sizes)
  
              when 'T' =>
--- 1258,1263 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/switch-c.ads gcc-11.1.0/gcc/ada/switch-c.ads
*** gcc-10.3.0/gcc/ada/switch-c.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/switch-c.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/switch-m.adb gcc-11.1.0/gcc/ada/switch-m.adb
*** gcc-10.3.0/gcc/ada/switch-m.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/switch-m.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/switch-m.ads gcc-11.1.0/gcc/ada/switch-m.ads
*** gcc-10.3.0/gcc/ada/switch-m.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/switch-m.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/switch.adb gcc-11.1.0/gcc/ada/switch.adb
*** gcc-10.3.0/gcc/ada/switch.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/switch.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Switch is
*** 163,171 ****
        return Is_Switch (Switch_Chars)
          and then
            (Switch_Chars (First .. Last) = "-param"        or else
             Switch_Chars (First .. Last) = "dumpbase"      or else
!            Switch_Chars (First .. Last) = "auxbase-strip" or else
!            Switch_Chars (First .. Last) = "auxbase");
     end Is_Internal_GCC_Switch;
  
     ---------------
--- 163,171 ----
        return Is_Switch (Switch_Chars)
          and then
            (Switch_Chars (First .. Last) = "-param"        or else
+            Switch_Chars (First .. Last) = "dumpdir"       or else
             Switch_Chars (First .. Last) = "dumpbase"      or else
!            Switch_Chars (First .. Last) = "dumpbase-ext");
     end Is_Internal_GCC_Switch;
  
     ---------------
diff -Nrcpad gcc-10.3.0/gcc/ada/switch.ads gcc-11.1.0/gcc/ada/switch.ads
*** gcc-10.3.0/gcc/ada/switch.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/switch.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Switch is
*** 77,83 ****
  
     function Is_Internal_GCC_Switch (Switch_Chars : String) return Boolean;
     --  Returns True iff Switch_Chars represents an internal GCC switch to be
!    --  followed by a single argument, such as -dumpbase, --param or -auxbase.
     --  Even though passed by the "gcc" driver, these need not be stored in ALI
     --  files and may safely be ignored by non GCC back-ends.
  
--- 77,83 ----
  
     function Is_Internal_GCC_Switch (Switch_Chars : String) return Boolean;
     --  Returns True iff Switch_Chars represents an internal GCC switch to be
!    --  followed by a single argument, such as -dumpbase, or --param.
     --  Even though passed by the "gcc" driver, these need not be stored in ALI
     --  files and may safely be ignored by non GCC back-ends.
  
diff -Nrcpad gcc-10.3.0/gcc/ada/symbols.adb gcc-11.1.0/gcc/ada/symbols.adb
*** gcc-10.3.0/gcc/ada/symbols.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/symbols.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,90 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                              S Y M B O L S                               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
- -- for  more details.  You should have  received  a copy of the GNU General --
- -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
- -- http://www.gnu.org/licenses for a complete copy of the license.          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is the default version of this package, used when the creation
- --  of symbol files is not supported.
- 
- with Ada.Text_IO; use Ada.Text_IO;
- 
- package body Symbols is
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize
-      (Symbol_File   : String;
-       Reference     : String;
-       Symbol_Policy : Policy;
-       Quiet         : Boolean;
-       Version       : String;
-       Success       : out Boolean)
-    is
-       pragma Unreferenced (Symbol_File);
-       pragma Unreferenced (Reference);
-       pragma Unreferenced (Symbol_Policy);
-       pragma Unreferenced (Quiet);
-       pragma Unreferenced (Version);
-    begin
-       Put_Line
-         ("creation of symbol files are not supported on this platform");
-       Success := False;
-    end Initialize;
- 
-    ----------------
-    -- Processing --
-    ----------------
- 
-    package body Processing is
- 
-       -------------
-       -- Process --
-       -------------
- 
-       procedure Process
-         (Object_File : String;
-          Success     : out Boolean)
-       is
-          pragma Unreferenced (Object_File);
-       begin
-          Success := False;
-       end Process;
- 
-    end Processing;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize
-      (Quiet   : Boolean;
-       Success : out Boolean)
-    is
-       pragma Unreferenced (Quiet);
-    begin
-       Success := False;
-    end Finalize;
- 
- end Symbols;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/symbols.ads gcc-11.1.0/gcc/ada/symbols.ads
*** gcc-10.3.0/gcc/ada/symbols.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/symbols.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,115 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                              S Y M B O L S                               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
- -- for  more details.  You should have  received  a copy of the GNU General --
- -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
- -- http://www.gnu.org/licenses for a complete copy of the license.          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package allows the creation of symbol files to be used for linking
- --  libraries. The format of symbol files depends on the platform, so there is
- --  several implementations of the body.
- 
- with GNAT.Dynamic_Tables;
- 
- with System.OS_Lib; use System.OS_Lib;
- 
- package Symbols is
- 
-    type Policy is
-    --  Symbol policy
- 
-      (Autonomous,
-       --  Create a symbol file without considering any reference
- 
-       Compliant,
-       --  Either create a symbol file with the same major and minor IDs if
-       --  all symbols are already found in the reference file or with an
-       --  incremented minor ID, if not.
- 
-       Controlled,
-       --  Fail if symbols are not the same as those in the reference file
- 
-       Restricted,
-       --  Restrict the symbols to those in the symbol file. Fail if some
-       --  symbols in the symbol file are not exported from the object files.
- 
-       Direct);
-       --  The reference symbol file is copied to the symbol file
- 
-    type Symbol_Kind is (Data, Proc);
-    --  To distinguish between the different kinds of symbols
- 
-    type Symbol_Data is record
-       Name    : String_Access;
-       Kind    : Symbol_Kind := Data;
-       Present : Boolean := True;
-    end record;
-    --  Data (name and kind) for each of the symbols
- 
-    package Symbol_Table is new GNAT.Dynamic_Tables
-      (Table_Component_Type => Symbol_Data,
-       Table_Index_Type     => Natural,
-       Table_Low_Bound      => 0,
-       Table_Initial        => 100,
-       Table_Increment      => 100);
-    --  The symbol tables
- 
-    Original_Symbols : Symbol_Table.Instance;
-    --  The symbols, if any, found in the reference symbol table
- 
-    Complete_Symbols : Symbol_Table.Instance;
-    --  The symbols, if any, found in the objects files
- 
-    procedure Initialize
-      (Symbol_File   : String;
-       Reference     : String;
-       Symbol_Policy : Policy;
-       Quiet         : Boolean;
-       Version       : String;
-       Success       : out Boolean);
-    --  Initialize a symbol file. This procedure must be called before
-    --  Processing any object file. Depending on the platforms and the
-    --  circumstances, additional messages may be issued if Quiet is False.
- 
-    package Processing is
- 
-    --  This package, containing a single visible procedure Process, exists
-    --  so that it can be a subunits, for some platforms, the body of package
-    --  Symbols is common, while the subunit Processing is not.
- 
-       procedure Process
-         (Object_File : String;
-          Success     : out Boolean);
-       --  Get the symbols from an object file. Success is set to True if the
-       --  object file exists and has the expected format.
- 
-    end Processing;
- 
-    procedure Finalize
-      (Quiet   : Boolean;
-       Success : out Boolean);
-    --  Finalize the symbol file. This procedure should be called after
-    --  Initialize (once) and Process (one or more times). If Success is
-    --  True, the symbol file is written and closed, ready to be used for
-    --  linking the library. Depending on the platforms and the circumstances,
-    --  additional messages may be issued if Quiet is False.
- 
- end Symbols;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/sysdep.c gcc-11.1.0/gcc/ada/sysdep.c
*** gcc-10.3.0/gcc/ada/sysdep.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/sysdep.c	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *         Copyright (C) 1992-2019, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *         Copyright (C) 1992-2020, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** __gnat_localtime_tzoff (const time_t *ti
*** 703,709 ****
         to get timezone settings that depend on the year. We cannot use them as
         we still support Windows XP and Windows 2003.  */
  
!     status = (tzi_status >= 0 && tzi_status <= 2)
        && FileTimeToSystemTime (&utc_time.ft_time, &utc_sys_time)
        && SystemTimeToTzSpecificLocalTime (&tzi, &utc_sys_time, &local_sys_time)
        && SystemTimeToFileTime (&local_sys_time, &local_time.ft_time);
--- 703,709 ----
         to get timezone settings that depend on the year. We cannot use them as
         we still support Windows XP and Windows 2003.  */
  
!     status = tzi_status <= 2
        && FileTimeToSystemTime (&utc_time.ft_time, &utc_sys_time)
        && SystemTimeToTzSpecificLocalTime (&tzi, &utc_sys_time, &local_sys_time)
        && SystemTimeToFileTime (&local_sys_time, &local_time.ft_time);
diff -Nrcpad gcc-10.3.0/gcc/ada/table.adb gcc-11.1.0/gcc/ada/table.adb
*** gcc-10.3.0/gcc/ada/table.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/table.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** with Debug;   use Debug;
*** 33,39 ****
  with Opt;     use Opt;
  with Output;  use Output;
  with System;  use System;
- with Tree_IO; use Tree_IO;
  
  with System.Memory; use System.Memory;
  
--- 27,32 ----
*************** package body Table is
*** 60,69 ****
        --  in Max. Works correctly to do an initial allocation if the table
        --  is currently null.
  
-       function Tree_Get_Table_Address return Address;
-       --  Return Null_Address if the table length is zero,
-       --  Table (First)'Address if not.
- 
        pragma Warnings (Off);
        --  Turn off warnings. The following unchecked conversions are only used
        --  internally in this package, and cannot never result in any instances
--- 53,58 ----
*************** package body Table is
*** 400,459 ****
           end if;
        end Set_Last;
  
-       ----------------------------
-       -- Tree_Get_Table_Address --
-       ----------------------------
- 
-       function Tree_Get_Table_Address return Address is
-       begin
-          if Length = 0 then
-             return Null_Address;
-          else
-             return Table (First)'Address;
-          end if;
-       end Tree_Get_Table_Address;
- 
-       ---------------
-       -- Tree_Read --
-       ---------------
- 
-       --  Note: we allocate only the space required to accommodate the data
-       --  actually written, which means that a Tree_Write/Tree_Read sequence
-       --  does an implicit Release.
- 
-       procedure Tree_Read is
-       begin
-          Tree_Read_Int (Max);
-          Last_Val := Max;
-          Length := Max - Min + 1;
-          Reallocate;
- 
-          Tree_Read_Data
-            (Tree_Get_Table_Address,
-              (Last_Val - Int (First) + 1) *
- 
-                --  Note the importance of parenthesizing the following division
-                --  to avoid the possibility of intermediate overflow.
- 
-                (Table_Type'Component_Size / Storage_Unit));
-       end Tree_Read;
- 
-       ----------------
-       -- Tree_Write --
-       ----------------
- 
-       --  Note: we write out only the currently valid data, not the entire
-       --  contents of the allocated array. See note above on Tree_Read.
- 
-       procedure Tree_Write is
-       begin
-          Tree_Write_Int (Int (Last));
-          Tree_Write_Data
-            (Tree_Get_Table_Address,
-             (Last_Val - Int (First) + 1) *
-               (Table_Type'Component_Size / Storage_Unit));
-       end Tree_Write;
- 
     begin
        Init;
     end Table;
--- 389,394 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/table.ads gcc-11.1.0/gcc/ada/table.ads
*** gcc-10.3.0/gcc/ada/table.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/table.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Table is
*** 221,233 ****
        --  Given a Saved_Table value returned by a prior call to Save, restores
        --  the table to the state it was in at the time of the Save call.
  
-       procedure Tree_Write;
-       --  Writes out contents of table using Tree_IO
- 
-       procedure Tree_Read;
-       --  Initializes table by reading contents previously written with the
-       --  Tree_Write call (also using Tree_IO).
- 
     private
  
        Last_Val : Int;
--- 215,220 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/targext.c gcc-11.1.0/gcc/ada/targext.c
*** gcc-10.3.0/gcc/ada/targext.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/targext.c	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *        Copyright (C) 2005-2019, Free Software Foundation, Inc.           *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *        Copyright (C) 2005-2020, Free Software Foundation, Inc.           *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/targparm.adb gcc-11.1.0/gcc/ada/targparm.adb
*** gcc-10.3.0/gcc/ada/targparm.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/targparm.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Targparm is
*** 39,46 ****
     --  The following array defines a tag name for each entry
  
     type Targparm_Tags is
!      (AAM,  --   AAMP
!       ACR,  --   Always_Compatible_Rep
        ASD,  --   Atomic_Sync_Default
        BDC,  --   Backend_Divide_Checks
        BOC,  --   Backend_Overflow_Checks
--- 39,45 ----
     --  The following array defines a tag name for each entry
  
     type Targparm_Tags is
!      (ACR,  --   Always_Compatible_Rep
        ASD,  --   Atomic_Sync_Default
        BDC,  --   Backend_Divide_Checks
        BOC,  --   Backend_Overflow_Checks
*************** package body Targparm is
*** 49,57 ****
        D32,  --   Duration_32_Bits
        DEN,  --   Denorm
        EXS,  --   Exit_Status_Supported
-       FEL,  --   Frontend_Layout
        FEX,  --   Frontend_Exceptions
-       FFO,  --   Fractional_Fixed_Ops
        MOV,  --   Machine_Overflows
        MRN,  --   Machine_Rounds
        PAS,  --   Preallocated_Stacks
--- 48,54 ----
*************** package body Targparm is
*** 73,79 ****
  
     --  The following list of string constants gives the parameter names
  
-    AAM_Str : aliased constant Source_Buffer := "AAMP";
     ACR_Str : aliased constant Source_Buffer := "Always_Compatible_Rep";
     ASD_Str : aliased constant Source_Buffer := "Atomic_Sync_Default";
     BDC_Str : aliased constant Source_Buffer := "Backend_Divide_Checks";
--- 70,75 ----
*************** package body Targparm is
*** 83,91 ****
     D32_Str : aliased constant Source_Buffer := "Duration_32_Bits";
     DEN_Str : aliased constant Source_Buffer := "Denorm";
     EXS_Str : aliased constant Source_Buffer := "Exit_Status_Supported";
-    FEL_Str : aliased constant Source_Buffer := "Frontend_Layout";
     FEX_Str : aliased constant Source_Buffer := "Frontend_Exceptions";
-    FFO_Str : aliased constant Source_Buffer := "Fractional_Fixed_Ops";
     MOV_Str : aliased constant Source_Buffer := "Machine_Overflows";
     MRN_Str : aliased constant Source_Buffer := "Machine_Rounds";
     PAS_Str : aliased constant Source_Buffer := "Preallocated_Stacks";
--- 79,85 ----
*************** package body Targparm is
*** 107,114 ****
  
     type Buffer_Ptr is access constant Source_Buffer;
     Targparm_Str : constant array (Targparm_Tags) of Buffer_Ptr :=
!      (AAM => AAM_Str'Access,
!       ACR => ACR_Str'Access,
        ASD => ASD_Str'Access,
        BDC => BDC_Str'Access,
        BOC => BOC_Str'Access,
--- 101,107 ----
  
     type Buffer_Ptr is access constant Source_Buffer;
     Targparm_Str : constant array (Targparm_Tags) of Buffer_Ptr :=
!      (ACR => ACR_Str'Access,
        ASD => ASD_Str'Access,
        BDC => BDC_Str'Access,
        BOC => BOC_Str'Access,
*************** package body Targparm is
*** 117,125 ****
        D32 => D32_Str'Access,
        DEN => DEN_Str'Access,
        EXS => EXS_Str'Access,
-       FEL => FEL_Str'Access,
        FEX => FEX_Str'Access,
-       FFO => FFO_Str'Access,
        MOV => MOV_Str'Access,
        MRN => MRN_Str'Access,
        PAS => PAS_Str'Access,
--- 110,116 ----
*************** package body Targparm is
*** 334,339 ****
--- 325,338 ----
              Opt.Locking_Policy          := 'C';
              goto Line_Loop_Continue;
  
+          --  Test for pragma Profile (Jorvik);
+ 
+          elsif Looking_At_Skip ("pragma Profile (Jorvik);") then
+             Set_Profile_Restrictions (Jorvik);
+             Opt.Task_Dispatching_Policy := 'F';
+             Opt.Locking_Policy          := 'C';
+             goto Line_Loop_Continue;
+ 
           --  Test for pragma Profile (GNAT_Extended_Ravenscar);
  
           elsif Looking_At_Skip
*************** package body Targparm is
*** 647,658 ****
              Opt.Partition_Elaboration_Policy_Sloc := System_Location;
              goto Line_Loop_Continue;
  
-          --  Polling (On)
- 
-          elsif Looking_At_Skip ("pragma Polling (On);") then
-             Opt.Polling_Required := True;
-             goto Line_Loop_Continue;
- 
           --  Queuing Policy
  
           elsif Looking_At_Skip ("pragma Queuing_Policy (") then
--- 646,651 ----
*************** package body Targparm is
*** 801,807 ****
                    Result := (System_Text (P) = 'T');
  
                    case K is
-                      when AAM => null;
                       when ACR => Always_Compatible_Rep_On_Target     := Result;
                       when ASD => Atomic_Sync_Default_On_Target       := Result;
                       when BDC => Backend_Divide_Checks_On_Target     := Result;
--- 794,799 ----
*************** package body Targparm is
*** 811,819 ****
                       when D32 => Duration_32_Bits_On_Target          := Result;
                       when DEN => Denorm_On_Target                    := Result;
                       when EXS => Exit_Status_Supported_On_Target     := Result;
-                      when FEL => null;
                       when FEX => Frontend_Exceptions_On_Target       := Result;
-                      when FFO => Fractional_Fixed_Ops_On_Target      := Result;
                       when MOV => Machine_Overflows_On_Target         := Result;
                       when MRN => Machine_Rounds_On_Target            := Result;
                       when PAS => Preallocated_Stacks_On_Target       := Result;
--- 803,809 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/targparm.ads gcc-11.1.0/gcc/ada/targparm.ads
*** gcc-10.3.0/gcc/ada/targparm.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/targparm.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Targparm is
*** 101,109 ****
     --  policy name, and Opt.Task_Dispatching_Policy_Sloc is set to
     --  System_Location.
  
-    --  If a pragma Polling (On) appears, then the flag Opt.Polling_Required
-    --  is set to True.
- 
     --  If a pragma Detect_Blocking appears, then the flag Opt.Detect_Blocking
     --  is set to True.
  
--- 101,106 ----
*************** package Targparm is
*** 547,562 ****
  
     --  WARNING: There is a matching C declaration of this variable in fe.h
  
-    -------------------------------------------
-    -- Boolean-Valued Fixed-Point Attributes --
-    -------------------------------------------
- 
-    Fractional_Fixed_Ops_On_Target : Boolean := False;
-    --  Set to True for targets that support fixed-by-fixed multiplication
-    --  and division for fixed-point types with a small value equal to
-    --  2 ** (-(T'Object_Size - 1)) and whose values have an absolute
-    --  value less than 1.0.
- 
     -----------------
     -- Subprograms --
     -----------------
--- 544,549 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/tb-gcc.c gcc-11.1.0/gcc/ada/tb-gcc.c
*** gcc-10.3.0/gcc/ada/tb-gcc.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/tb-gcc.c	Thu Jan  1 00:00:00 1970
***************
*** 1,125 ****
- /****************************************************************************
-  *                                                                          *
-  *                         GNAT RUN-TIME COMPONENTS                         *
-  *                                                                          *
-  *                   T R A C E B A C K - G C C t a b l e s                  *
-  *                                                                          *
-  *                          C Implementation File                           *
-  *                                                                          *
-  *          Copyright (C) 2004-2019, Free Software Foundation, Inc.         *
-  *                                                                          *
-  * GNAT is free software;  you can  redistribute it  and/or modify it under *
-  * terms of the  GNU General Public License as published  by the Free Soft- *
-  * ware  Foundation;  either version 3,  or (at your option) any later ver- *
-  * sion.  GNAT is distributed in the hope that it will be useful, but WITH- *
-  * OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY *
-  * or FITNESS FOR A PARTICULAR PURPOSE.                                     *
-  *                                                                          *
-  * As a special exception under Section 7 of GPL version 3, you are granted *
-  * additional permissions described in the GCC Runtime Library Exception,   *
-  * version 3.1, as published by the Free Software Foundation.               *
-  *                                                                          *
-  * You should have received a copy of the GNU General Public License and    *
-  * a copy of the GCC Runtime Library Exception along with this program;     *
-  * see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    *
-  * <http://www.gnu.org/licenses/>.                                          *
-  *                                                                          *
-  * GNAT was originally developed  by the GNAT team at  New York University. *
-  * Extensive contributions were provided by Ada Core Technologies Inc.      *
-  *                                                                          *
-  ****************************************************************************/
- 
- /* This is an implementation of the __gnat_backtrace routine using the
-    underlying GCC unwinding support associated with the exception handling
-    infrastructure.  This will only work for ZCX based applications.  */
- 
- #include <unwind.h>
- 
- /* The implementation boils down to a call to _Unwind_Backtrace with a
-    tailored callback and carried-on data structure to keep track of the
-    input parameters we got as well as of the basic processing state.  */
- 
- /******************
-  * trace_callback *
-  ******************/
- 
- #if !defined (__USING_SJLJ_EXCEPTIONS__)
- 
- typedef struct {
-   void ** traceback;
-   int max_len;
-   void * exclude_min;
-   void * exclude_max;
-   int  n_frames_to_skip;
-   int  n_frames_skipped;
-   int  n_entries_filled;
- } uw_data_t;
- 
- #if defined (__ia64__) && defined (__hpux__)
- #include <uwx.h>
- #endif
- 
- static _Unwind_Reason_Code
- trace_callback (struct _Unwind_Context * uw_context, uw_data_t * uw_data)
- {
-   char * pc;
- 
- #if defined (__ia64__) && defined (__hpux__) && defined (USE_LIBUNWIND_EXCEPTIONS)
-   /* Work around problem with _Unwind_GetIP on ia64 HP-UX. */
-   uwx_get_reg ((struct uwx_env *) uw_context, UWX_REG_IP, (uint64_t *) &pc);
- #else
-   pc = (char *) _Unwind_GetIP (uw_context);
- #endif
- 
-   if (uw_data->n_frames_skipped < uw_data->n_frames_to_skip)
-     {
-       uw_data->n_frames_skipped ++;
-       return _URC_NO_REASON;
-     }
- 
-   if (uw_data->n_entries_filled >= uw_data->max_len)
-     return _URC_NORMAL_STOP;
- 
-   if (pc < (char *)uw_data->exclude_min || pc > (char *)uw_data->exclude_max)
-     uw_data->traceback [uw_data->n_entries_filled ++] = pc + PC_ADJUST;
- 
-   return _URC_NO_REASON;
- }
- 
- #endif
- 
- /********************
-  * __gnat_backtrace *
-  ********************/
- 
- int
- __gnat_backtrace (void ** traceback __attribute__((unused)),
- 		  int max_len __attribute__((unused)),
- 		  void * exclude_min __attribute__((unused)),
- 		  void * exclude_max __attribute__((unused)),
- 		  int skip_frames __attribute__((unused)))
- {
- #if defined (__USING_SJLJ_EXCEPTIONS__)
-   /* We have no unwind material (tables) at hand with sjlj eh, and no
-      way to retrieve complete and accurate call chain information from
-      the context stack we maintain.  */
-   return 0;
- #else
-   uw_data_t uw_data;
-   /* State carried over during the whole unwinding process.  */
- 
-   uw_data.traceback   = traceback;
-   uw_data.max_len     = max_len;
-   uw_data.exclude_min = exclude_min;
-   uw_data.exclude_max = exclude_max;
- 
-   uw_data.n_frames_to_skip = skip_frames;
- 
-   uw_data.n_frames_skipped = 0;
-   uw_data.n_entries_filled = 0;
- 
-   _Unwind_Backtrace ((_Unwind_Trace_Fn)trace_callback, &uw_data);
- 
-   return uw_data.n_entries_filled;
- #endif
- }
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/tbuild.adb gcc-11.1.0/gcc/ada/tbuild.adb
*** gcc-10.3.0/gcc/ada/tbuild.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/tbuild.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Tbuild is
*** 116,125 ****
        Result : Node_Id;
  
     begin
!       if Present (Etype (Expr))
!         and then (Etype (Expr)) = Typ
!       then
           return Relocate_Node (Expr);
        else
           Result :=
             Make_Type_Conversion (Sloc (Expr),
--- 116,124 ----
        Result : Node_Id;
  
     begin
!       if Present (Etype (Expr)) and then Etype (Expr) = Typ then
           return Relocate_Node (Expr);
+ 
        else
           Result :=
             Make_Type_Conversion (Sloc (Expr),
*************** package body Tbuild is
*** 176,183 ****
                Attribute_Name => Attribute_Name);
  
     begin
!       pragma Assert (Nam_In (Attribute_Name, Name_Address,
!                                              Name_Unrestricted_Access));
        Set_Must_Be_Byte_Aligned (N, True);
        return N;
     end Make_Byte_Aligned_Attribute_Reference;
--- 175,182 ----
                Attribute_Name => Attribute_Name);
  
     begin
!       pragma Assert
!         (Attribute_Name in Name_Address | Name_Unrestricted_Access);
        Set_Must_Be_Byte_Aligned (N, True);
        return N;
     end Make_Byte_Aligned_Attribute_Reference;
*************** package body Tbuild is
*** 353,358 ****
--- 352,358 ----
        Check_Restriction (No_Implicit_Loops, Node);
  
        if Present (Iteration_Scheme)
+         and then Nkind (Iteration_Scheme) /= N_Iterator_Specification
          and then Present (Condition (Iteration_Scheme))
        then
           Check_Restriction (No_Implicit_Conditionals, Node);
*************** package body Tbuild is
*** 366,371 ****
--- 366,389 ----
          End_Label              => End_Label);
     end Make_Implicit_Loop_Statement;
  
+    --------------------
+    -- Make_Increment --
+    --------------------
+ 
+    function Make_Increment
+      (Loc : Source_Ptr; Index : Entity_Id; Typ : Entity_Id) return Node_Id is
+    begin
+       return Make_Assignment_Statement (Loc,
+                Name => New_Occurrence_Of (Index, Loc),
+                Expression =>
+                  Make_Attribute_Reference (Loc,
+                    Prefix =>
+                      New_Occurrence_Of (Typ, Loc),
+                    Attribute_Name => Name_Succ,
+                    Expressions => New_List (
+                      New_Occurrence_Of (Index, Loc))));
+    end Make_Increment;
+ 
     --------------------------
     -- Make_Integer_Literal --
     ---------------------------
*************** package body Tbuild is
*** 779,784 ****
--- 797,819 ----
        return Result;
     end OK_Convert_To;
  
+    --------------
+    -- Sel_Comp --
+    --------------
+ 
+    function Sel_Comp (Pre : Node_Id; Sel : String) return Node_Id is
+    begin
+       return Make_Selected_Component
+         (Sloc          => Sloc (Pre),
+          Prefix        => Pre,
+          Selector_Name => Make_Identifier (Sloc (Pre), Name_Find (Sel)));
+    end Sel_Comp;
+ 
+    function Sel_Comp (Pre, Sel : String; Loc : Source_Ptr) return Node_Id is
+    begin
+       return Sel_Comp (Make_Identifier (Loc, Name_Find (Pre)), Sel);
+    end Sel_Comp;
+ 
     -------------
     -- Set_NOD --
     -------------
*************** package body Tbuild is
*** 853,860 ****
        then
           return Relocate_Node (Expr);
  
!       --  Cases where the inner expression is itself an unchecked conversion
!       --  to the same type, and we can thus eliminate the outer conversion.
  
        elsif Nkind (Expr) = N_Unchecked_Type_Conversion
          and then Entity (Subtype_Mark (Expr)) = Typ
--- 888,895 ----
        then
           return Relocate_Node (Expr);
  
!       --  Case where the expression is itself an unchecked conversion to
!       --  the same type, and we can thus eliminate the outer conversion.
  
        elsif Nkind (Expr) = N_Unchecked_Type_Conversion
          and then Entity (Subtype_Mark (Expr)) = Typ
diff -Nrcpad gcc-10.3.0/gcc/ada/tbuild.ads gcc-11.1.0/gcc/ada/tbuild.ads
*** gcc-10.3.0/gcc/ada/tbuild.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/tbuild.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Tbuild is
*** 140,145 ****
--- 140,149 ----
     --  all cases, and the second only for while loops), and if one of these
     --  restrictions is being violated, an error message is posted on Node.
  
+    function Make_Increment
+      (Loc : Source_Ptr; Index : Entity_Id; Typ : Entity_Id) return Node_Id;
+    --  Return an assignment statement of the form "Index := Typ'Succ (Index);"
+ 
     function Make_Integer_Literal
       (Loc    : Source_Ptr;
        Intval : Int) return Node_Id;
*************** package Tbuild is
*** 331,336 ****
--- 335,345 ----
     --  fixed-point small is called typ_SMALL where typ is the name of the
     --  fixed-point type (as passed in Related_Id), and Suffix is "SMALL".
  
+    function Sel_Comp (Pre, Sel : String; Loc : Source_Ptr) return Node_Id;
+    function Sel_Comp (Pre : Node_Id; Sel : String) return Node_Id;
+    --  Create a selected component of the form Pre.Sel; that is, Pre is the
+    --  prefix, and Sel is the selector name.
+ 
     function OK_Convert_To (Typ : Entity_Id; Expr : Node_Id) return Node_Id;
     --  Like Convert_To, except that a conversion node is always generated, and
     --  the Conversion_OK flag is set on this conversion node.
diff -Nrcpad gcc-10.3.0/gcc/ada/tempdir.adb gcc-11.1.0/gcc/ada/tempdir.adb
*** gcc-10.3.0/gcc/ada/tempdir.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/tempdir.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/tempdir.ads gcc-11.1.0/gcc/ada/tempdir.ads
*** gcc-10.3.0/gcc/ada/tempdir.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/tempdir.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/terminals.c gcc-11.1.0/gcc/ada/terminals.c
*** gcc-10.3.0/gcc/ada/terminals.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/terminals.c	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *                     Copyright (C) 2008-2019, AdaCore                     *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *                     Copyright (C) 2008-2020, AdaCore                     *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** __gnat_setup_winsize (void *desc ATTRIBU
*** 153,158 ****
--- 153,159 ----
  
  #include <windows.h>
  #include <winternl.h>
+ #include <io.h>
  
  #define MAXPATHLEN 1024
  
*************** is_gui_app (char *exe)
*** 194,202 ****
  {
    HANDLE hImage;
  
-   DWORD  bytes;
-   DWORD  iSection;
-   DWORD  SectionOffset;
    DWORD  CoffHeaderOffset;
    DWORD  MoreDosHeader[16];
    CHAR   *file;
--- 195,200 ----
*************** is_gui_app (char *exe)
*** 207,213 ****
    IMAGE_DOS_HEADER      image_dos_header;
    IMAGE_FILE_HEADER     image_file_header;
    IMAGE_OPTIONAL_HEADER image_optional_header;
-   IMAGE_SECTION_HEADER  image_section_header;
  
    /*
     *  Open the reference file.
--- 205,210 ----
*************** is_gui_app (char *exe)
*** 264,270 ****
     */
    CoffHeaderOffset = AbsoluteSeek(hImage, image_dos_header.e_lfanew) +
                       sizeof(ULONG);
!   if (CoffHeaderOffset < 0) {
      CloseHandle (hImage);
      return -1;
    }
--- 261,267 ----
     */
    CoffHeaderOffset = AbsoluteSeek(hImage, image_dos_header.e_lfanew) +
                       sizeof(ULONG);
!   if (CoffHeaderOffset == (DWORD) -1) {
      CloseHandle (hImage);
      return -1;
    }
*************** is_gui_app (char *exe)
*** 278,286 ****
        return -1;
      }
  
-   SectionOffset = CoffHeaderOffset + IMAGE_SIZEOF_FILE_HEADER +
-     IMAGE_SIZEOF_NT_OPTIONAL_HEADER;
- 
    ReadBytes(hImage, &image_file_header, IMAGE_SIZEOF_FILE_HEADER);
  
    /*
--- 275,280 ----
*************** ReadBytes (HANDLE hFile, LPVOID buffer,
*** 351,368 ****
  }
  
  static int
! nt_spawnve (char *exe, char **argv, char *env, struct TTY_Process *process)
  {
    STARTUPINFO start;
    SECURITY_ATTRIBUTES sec_attrs;
    SECURITY_DESCRIPTOR sec_desc;
    DWORD flags;
-   char dir[ MAXPATHLEN ];
    int pid;
    int is_gui, use_cmd;
    char *cmdline, *parg, **targ;
    int do_quoting = 0;
!   char escape_char;
    int arglen;
  
    /* we have to do some conjuring here to put argv and envp into the
--- 345,362 ----
  }
  
  static int
! nt_spawnve (char *exe ATTRIBUTE_UNUSED, char **argv, char *env,
!             struct TTY_Process *process)
  {
    STARTUPINFO start;
    SECURITY_ATTRIBUTES sec_attrs;
    SECURITY_DESCRIPTOR sec_desc;
    DWORD flags;
    int pid;
    int is_gui, use_cmd;
    char *cmdline, *parg, **targ;
    int do_quoting = 0;
!   char escape_char = 0;
    int arglen;
  
    /* we have to do some conjuring here to put argv and envp into the
*************** nt_spawnve (char *exe, char **argv, char
*** 483,494 ****
        if (need_quotes)
  	{
  	  int escape_char_run = 0;
- 	  char * first;
- 	  char * last;
  
  	  p = *targ;
- 	  first = p;
- 	  last = p + strlen (p) - 1;
  	  *parg++ = '"';
  	  for ( ; *p; p++)
  	    {
--- 477,484 ----
*************** nt_spawnve (char *exe, char **argv, char
*** 572,579 ****
  		      flags, env, NULL, &start, &process->procinfo))
      goto EH_Fail;
  
!   pid = (int) process->procinfo.hProcess;
!   process->pid=pid;
  
    return pid;
  
--- 562,569 ----
  		      flags, env, NULL, &start, &process->procinfo))
      goto EH_Fail;
  
!   pid = (int) (intptr_t) process->procinfo.hProcess;
!   process->pid = pid;
  
    return pid;
  
*************** __gnat_setup_child_communication
*** 635,641 ****
     int Use_Pipes)
  {
    int cpid;
-   HANDLE parent;
    SECURITY_ATTRIBUTES sec_attrs;
    char slavePath [MAX_PATH];
    char **nargv;
--- 625,630 ----
*************** __gnat_setup_child_communication
*** 644,651 ****
    char pipeNameIn[100];
    HANDLE hSlaveInDrv = NULL; /* Handle to communicate with slave driver */
  
-   parent = GetCurrentProcess ();
- 
    /* Set inheritance for the pipe handles */
    sec_attrs.nLength = sizeof (SECURITY_ATTRIBUTES);
    sec_attrs.bInheritHandle = TRUE;
--- 633,638 ----
*************** __gnat_setup_child_communication
*** 674,680 ****
      /* We create a named pipe for Input, as we handle input by sending special
         commands to the explaunch process, that uses it to feed the actual input
         of the process */
!     sprintf(pipeNameIn, "%sIn%08x_%08x", EXP_PIPE_BASENAME,
  	    GetCurrentProcessId(), pipeNameId);
      pipeNameId++;
  
--- 661,667 ----
      /* We create a named pipe for Input, as we handle input by sending special
         commands to the explaunch process, that uses it to feed the actual input
         of the process */
!     sprintf(pipeNameIn, "%sIn%08lx_%08x", EXP_PIPE_BASENAME,
  	    GetCurrentProcessId(), pipeNameId);
      pipeNameId++;
  
*************** __gnat_setup_parent_communication
*** 765,772 ****
     int* err,
     int* pid)
  {
!   *in = _open_osfhandle ((long) process->w_infd, 0);
!   *out = _open_osfhandle ((long) process->w_outfd, 0);
    /* child's stderr is always redirected to outfd */
    *err = *out;
    *pid = process->pid;
--- 752,759 ----
     int* err,
     int* pid)
  {
!   *in = _open_osfhandle ((intptr_t) process->w_infd, 0);
!   *out = _open_osfhandle ((intptr_t) process->w_outfd, 0);
    /* child's stderr is always redirected to outfd */
    *err = *out;
    *pid = process->pid;
*************** cache_system_info (void)
*** 811,823 ****
      os_subtype = OS_NT;
  }
  
! static BOOL CALLBACK
! find_child_console (HWND hwnd, child_process * cp)
  {
!   DWORD thread_id;
    DWORD process_id;
  
!   thread_id = GetWindowThreadProcessId (hwnd, &process_id);
    if (process_id == cp->procinfo->dwProcessId)
      {
        char window_class[32];
--- 798,810 ----
      os_subtype = OS_NT;
  }
  
! static WINBOOL CALLBACK
! find_child_console (HWND hwnd, LPARAM param)
  {
!   child_process *cp = (child_process *) param;
    DWORD process_id;
  
!   (void) GetWindowThreadProcessId (hwnd, &process_id);
    if (process_id == cp->procinfo->dwProcessId)
      {
        char window_class[32];
*************** find_child_console (HWND hwnd, child_pro
*** 837,863 ****
  }
  
  int
- __gnat_interrupt_process (struct TTY_Process* p)
- {
-   char buf[2];
-   DWORD written;
-   BOOL bret;
- 
-   if (p->usePipe == TRUE) {
-     bret = FALSE;
-   } else {
-     buf[0] = EXP_SLAVE_KILL;
-     buf[1] = EXP_KILL_CTRL_C;
-     bret = WriteFile (p->w_infd, buf, 2, &written, NULL);
-   }
- 
-   if (bret == FALSE) {
-     return __gnat_interrupt_pid (p->procinfo.dwProcessId);
-   }
-   return 0;
- }
- 
- int
  __gnat_interrupt_pid (int pid)
  {
    volatile child_process cp;
--- 824,829 ----
*************** __gnat_interrupt_pid (int pid)
*** 943,948 ****
--- 909,935 ----
    return rc;
  }
  
+ int
+ __gnat_interrupt_process (struct TTY_Process* p)
+ {
+   char buf[2];
+   DWORD written;
+   BOOL bret;
+ 
+   if (p->usePipe == TRUE) {
+     bret = FALSE;
+   } else {
+     buf[0] = EXP_SLAVE_KILL;
+     buf[1] = EXP_KILL_CTRL_C;
+     bret = WriteFile (p->w_infd, buf, 2, &written, NULL);
+   }
+ 
+   if (bret == FALSE) {
+     return __gnat_interrupt_pid (p->procinfo.dwProcessId);
+   }
+   return 0;
+ }
+ 
  /* kill a process, as this implementation use CreateProcess on Win32 we need
     to use Win32 TerminateProcess API */
  int
*************** typedef struct {
*** 974,986 ****
    HANDLE hwnd;
  } pid_struct;
  
! static BOOL CALLBACK
! find_process_handle (HWND hwnd, pid_struct * ps)
  {
!   DWORD thread_id;
    DWORD process_id;
  
!   thread_id = GetWindowThreadProcessId (hwnd, &process_id);
    if (process_id == ps->dwProcessId)
      {
        ps->hwnd = hwnd;
--- 961,973 ----
    HANDLE hwnd;
  } pid_struct;
  
! static WINBOOL CALLBACK
! find_process_handle (HWND hwnd, LPARAM param)
  {
!   pid_struct *ps = (pid_struct *) param;
    DWORD process_id;
  
!   (void) GetWindowThreadProcessId (hwnd, &process_id);
    if (process_id == ps->dwProcessId)
      {
        ps->hwnd = hwnd;
*************** __gnat_new_tty (void)
*** 1085,1093 ****
  }
  
  void
! __gnat_reset_tty (TTY_Handle* t)
  {
-   return;
  }
  
  void
--- 1072,1079 ----
  }
  
  void
! __gnat_reset_tty (TTY_Handle* t ATTRIBUTE_UNUSED)
  {
  }
  
  void
*************** __gnat_close_tty (TTY_Handle* t)
*** 1097,1103 ****
  }
  
  void
! __gnat_setup_winsize (void *desc, int rows, int columns)
  {
  }
  
--- 1083,1090 ----
  }
  
  void
! __gnat_setup_winsize (void *desc ATTRIBUTE_UNUSED,
!   int rows ATTRIBUTE_UNUSED, int columns ATTRIBUTE_UNUSED)
  {
  }
  
*************** allocate_pty_desc (pty_desc **desc) {
*** 1257,1263 ****
    result->slave_fd   = slave_fd;
    /* the string returned by ptsname or _getpty is a static allocated string. So
       we should make a copy */
!   strncpy (result->slave_name, slave_name, sizeof (result->slave_name));
    result->slave_name[sizeof (result->slave_name) - 1] = '\0';
    result->child_pid  = -1;
    *desc=result;
--- 1244,1250 ----
    result->slave_fd   = slave_fd;
    /* the string returned by ptsname or _getpty is a static allocated string. So
       we should make a copy */
!   strncpy (result->slave_name, slave_name, sizeof (result->slave_name) - 1);
    result->slave_name[sizeof (result->slave_name) - 1] = '\0';
    result->child_pid  = -1;
    *desc=result;
diff -Nrcpad gcc-10.3.0/gcc/ada/tracebak.c gcc-11.1.0/gcc/ada/tracebak.c
*** gcc-10.3.0/gcc/ada/tracebak.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/tracebak.c	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2000-2019, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2000-2020, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** __gnat_backtrace (void **array,
*** 309,314 ****
--- 309,321 ----
  #define USING_ARM_UNWINDING 1
  #endif
  
+ /*---------------------- ARM Linux ------------------------------------ -*/
+ #elif (defined (__ARMEL__) && defined (__linux))
+ 
+ #define USE_GCC_UNWINDER
+ #define PC_ADJUST -2
+ #define USING_ARM_UNWINDING 1
+ 
  /*---------------------- PPC AIX/PPC Lynx 178/Older Darwin --------------*/
  #elif ((defined (_POWER) && defined (_AIX)) || \
         (defined (__powerpc__) && defined (__Lynx__) && !defined(__ELF__)) || \
*************** is_return_from(void *symbol_addr, void *
*** 588,594 ****
     define it to a reasonable value to avoid a compilation error.  */
  #define _URC_NORMAL_STOP 0
  #endif
! #include "tb-gcc.c"
  
  /*------------------------------------------------------------------*
   *-- The generic implementation based on frame layout assumptions --*
--- 595,695 ----
     define it to a reasonable value to avoid a compilation error.  */
  #define _URC_NORMAL_STOP 0
  #endif
! 
! /* This is an implementation of the __gnat_backtrace routine using the
!    underlying GCC unwinding support associated with the exception handling
!    infrastructure.  This will only work for ZCX based applications.  */
! 
! #include <unwind.h>
! 
! /* The implementation boils down to a call to _Unwind_Backtrace with a
!    tailored callback and carried-on data structure to keep track of the
!    input parameters we got as well as of the basic processing state.  */
! 
! /******************
!  * trace_callback *
!  ******************/
! 
! #if !defined (__USING_SJLJ_EXCEPTIONS__)
! 
! typedef struct {
!   void ** traceback;
!   int max_len;
!   void * exclude_min;
!   void * exclude_max;
!   int  n_frames_to_skip;
!   int  n_frames_skipped;
!   int  n_entries_filled;
! } uw_data_t;
! 
! #if defined (__ia64__) && defined (__hpux__)
! #include <uwx.h>
! #endif
! 
! static _Unwind_Reason_Code
! trace_callback (struct _Unwind_Context * uw_context, uw_data_t * uw_data)
! {
!   char * pc;
! 
! #if defined (__ia64__) && defined (__hpux__) && defined (USE_LIBUNWIND_EXCEPTIONS)
!   /* Work around problem with _Unwind_GetIP on ia64 HP-UX. */
!   uwx_get_reg ((struct uwx_env *) uw_context, UWX_REG_IP, (uint64_t *) &pc);
! #else
!   pc = (char *) _Unwind_GetIP (uw_context);
! #endif
! 
!   if (uw_data->n_frames_skipped < uw_data->n_frames_to_skip)
!     {
!       uw_data->n_frames_skipped ++;
!       return _URC_NO_REASON;
!     }
! 
!   if (uw_data->n_entries_filled >= uw_data->max_len)
!     return _URC_NORMAL_STOP;
! 
!   if (pc < (char *)uw_data->exclude_min || pc > (char *)uw_data->exclude_max)
!     uw_data->traceback [uw_data->n_entries_filled ++] = pc + PC_ADJUST;
! 
!   return _URC_NO_REASON;
! }
! 
! #endif
! 
! /********************
!  * __gnat_backtrace *
!  ********************/
! 
! int
! __gnat_backtrace (void ** traceback __attribute__((unused)),
! 		  int max_len __attribute__((unused)),
! 		  void * exclude_min __attribute__((unused)),
! 		  void * exclude_max __attribute__((unused)),
! 		  int skip_frames __attribute__((unused)))
! {
! #if defined (__USING_SJLJ_EXCEPTIONS__)
!   /* We have no unwind material (tables) at hand with sjlj eh, and no
!      way to retrieve complete and accurate call chain information from
!      the context stack we maintain.  */
!   return 0;
! #else
!   uw_data_t uw_data;
!   /* State carried over during the whole unwinding process.  */
! 
!   uw_data.traceback   = traceback;
!   uw_data.max_len     = max_len;
!   uw_data.exclude_min = exclude_min;
!   uw_data.exclude_max = exclude_max;
! 
!   uw_data.n_frames_to_skip = skip_frames;
! 
!   uw_data.n_frames_skipped = 0;
!   uw_data.n_entries_filled = 0;
! 
!   _Unwind_Backtrace ((_Unwind_Trace_Fn)trace_callback, &uw_data);
! 
!   return uw_data.n_entries_filled;
! #endif
! }
  
  /*------------------------------------------------------------------*
   *-- The generic implementation based on frame layout assumptions --*
*************** is_return_from(void *symbol_addr, void *
*** 596,601 ****
--- 697,705 ----
  
  #elif defined (USE_GENERIC_UNWINDER)
  
+ /* No warning since the cases where FRAME_LEVEL > 0 are known to work.  */
+ #pragma GCC diagnostic ignored "-Wframe-address"
+ 
  #ifndef CURRENT_STACK_FRAME
  # define CURRENT_STACK_FRAME  ({ char __csf; &__csf; })
  #endif
diff -Nrcpad gcc-10.3.0/gcc/ada/tree_gen.adb gcc-11.1.0/gcc/ada/tree_gen.adb
*** gcc-10.3.0/gcc/ada/tree_gen.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/tree_gen.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,72 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                             T R E E _ G E N                              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
- -- for  more details.  You should have  received  a copy of the GNU General --
- -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
- -- http://www.gnu.org/licenses for a complete copy of the license.          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Aspects;
- with Atree;
- with Elists;
- with Fname;
- with Lib;
- with Namet;
- with Nlists;
- with Opt;
- with Osint.C;
- with Repinfo;
- with Sem_Aux;
- with Sinput;
- with Stand;
- with Stringt;
- with Uintp;
- with Urealp;
- 
- with Tree_In;
- pragma Warnings (Off, Tree_In);
- --  We do not use Tree_In in the compiler, but it is small, and worth including
- --  so that we get the proper license check for Tree_In when the compiler is
- --  built. This will avoid adding bad dependencies to Tree_In and blowing ASIS.
- 
- procedure Tree_Gen is
- begin
-    if Opt.Tree_Output then
-       Osint.C.Tree_Create;
- 
-       Opt.Tree_Write;
-       Atree.Tree_Write;
-       Elists.Tree_Write;
-       Fname.Tree_Write;
-       Lib.Tree_Write;
-       Namet.Tree_Write;
-       Nlists.Tree_Write;
-       Sem_Aux.Tree_Write;
-       Sinput.Tree_Write;
-       Stand.Tree_Write;
-       Stringt.Tree_Write;
-       Uintp.Tree_Write;
-       Urealp.Tree_Write;
-       Repinfo.Tree_Write;
-       Aspects.Tree_Write;
- 
-       Osint.C.Tree_Close;
-    end if;
- end Tree_Gen;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/tree_gen.ads gcc-11.1.0/gcc/ada/tree_gen.ads
*** gcc-10.3.0/gcc/ada/tree_gen.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/tree_gen.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,28 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                             T R E E _ G E N                              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
- -- for  more details.  You should have  received  a copy of the GNU General --
- -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
- -- http://www.gnu.org/licenses for a complete copy of the license.          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This procedure is used to write out the tree if the option is set
- 
- procedure Tree_Gen;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/tree_in.adb gcc-11.1.0/gcc/ada/tree_in.adb
*** gcc-10.3.0/gcc/ada/tree_in.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/tree_in.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,71 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                              T R E E _ I N                               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Aspects;
- with Atree;
- with Csets;
- with Elists;
- with Fname;
- with Lib;
- with Namet;
- with Nlists;
- with Opt;
- with Repinfo;
- with Sem_Aux;
- with Sinput;
- with Stand;
- with Stringt;
- with Tree_IO;
- with Uintp;
- with Urealp;
- 
- procedure Tree_In (Desc : File_Descriptor) is
- begin
-    Tree_IO.Tree_Read_Initialize (Desc);
- 
-    Opt.Tree_Read;
-    Atree.Tree_Read;
-    Elists.Tree_Read;
-    Fname.Tree_Read;
-    Lib.Tree_Read;
-    Namet.Tree_Read;
-    Nlists.Tree_Read;
-    Sem_Aux.Tree_Read;
-    Sinput.Tree_Read;
-    Stand.Tree_Read;
-    Stringt.Tree_Read;
-    Uintp.Tree_Read;
-    Urealp.Tree_Read;
-    Repinfo.Tree_Read;
-    Aspects.Tree_Read;
- 
-    Csets.Initialize;
- end Tree_In;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/tree_in.ads gcc-11.1.0/gcc/ada/tree_in.ads
*** gcc-10.3.0/gcc/ada/tree_in.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/tree_in.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,42 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                              T R E E _ I N                               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This procedure is used to read in a tree if the option is set. Note that
- --  it is not part of the compiler proper, but rather the interface from
- --  tools that need to read the tree to the tree reading routines, and is
- --  thus bound as part of such tools.
- 
- with System.OS_Lib; use System.OS_Lib;
- 
- procedure Tree_In (Desc : File_Descriptor);
- --  Desc is the file descriptor for the file containing the tree, as written
- --  by the compiler in a previous compilation using Tree_Gen. On return the
- --  global data structures are appropriately initialized.
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/tree_io.adb gcc-11.1.0/gcc/ada/tree_io.adb
*** gcc-10.3.0/gcc/ada/tree_io.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/tree_io.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,661 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                              T R E E _ I O                               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Debug;  use Debug;
- with Output; use Output;
- with Unchecked_Conversion;
- 
- package body Tree_IO is
-    Debug_Flag_Tree : Boolean := False;
-    --  Debug flag for debug output from tree read/write
- 
-    -------------------------------------------
-    -- Compression Scheme Used for Tree File --
-    -------------------------------------------
- 
-    --  We don't just write the data directly, but instead do a mild form
-    --  of compression, since we expect lots of compressible zeroes and
-    --  blanks. The compression scheme is as follows:
- 
-    --    00nnnnnn followed by nnnnnn bytes (non compressed data)
-    --    01nnnnnn indicates nnnnnn binary zero bytes
-    --    10nnnnnn indicates nnnnnn ASCII space bytes
-    --    11nnnnnn bbbbbbbb indicates nnnnnnnn occurrences of byte bbbbbbbb
- 
-    --  Since we expect many zeroes in trees, and many spaces in sources,
-    --  this compression should be reasonably efficient. We can put in
-    --  something better later on.
- 
-    --  Note that this compression applies to the Write_Tree_Data and
-    --  Read_Tree_Data calls, not to the calls to read and write single
-    --  scalar values, which are written in memory format without any
-    --  compression.
- 
-    C_Noncomp : constant := 2#00_000000#;
-    C_Zeros   : constant := 2#01_000000#;
-    C_Spaces  : constant := 2#10_000000#;
-    C_Repeat  : constant := 2#11_000000#;
-    --  Codes for compression sequences
- 
-    Max_Count : constant := 63;
-    --  Maximum data length for one compression sequence
- 
-    --  The above compression scheme applies only to data written with the
-    --  Tree_Write routine and read with Tree_Read. Data written using the
-    --  Tree_Write_Char or Tree_Write_Int routines and read using the
-    --  corresponding input routines is not compressed.
- 
-    type Int_Bytes is array (1 .. 4) of Byte;
-    for Int_Bytes'Size use 32;
- 
-    function To_Int_Bytes is new Unchecked_Conversion (Int, Int_Bytes);
-    function To_Int       is new Unchecked_Conversion (Int_Bytes, Int);
- 
-    ----------------------
-    -- Global Variables --
-    ----------------------
- 
-    Tree_FD : File_Descriptor;
-    --  File descriptor for tree
- 
-    Buflen : constant Int := 8_192;
-    --  Length of buffer for read and write file data
- 
-    Buf : array (Pos range 1 .. Buflen) of Byte;
-    --  Read/write file data buffer
- 
-    Bufn : Nat;
-    --  Number of bytes read/written from/to buffer
- 
-    Buft : Nat;
-    --  Total number of bytes in input buffer containing valid data. Used only
-    --  for input operations. There is data left to be processed in the buffer
-    --  if Buft > Bufn. A value of zero for Buft means that the buffer is empty.
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Read_Buffer;
-    --  Reads data into buffer, setting Bufn appropriately
- 
-    function Read_Byte return Byte;
-    pragma Inline (Read_Byte);
-    --  Returns next byte from input file, raises Tree_Format_Error if none left
- 
-    procedure Write_Buffer;
-    --  Writes out current buffer contents
- 
-    procedure Write_Byte (B : Byte);
-    pragma Inline (Write_Byte);
-    --  Write one byte to output buffer, checking for buffer-full condition
- 
-    -----------------
-    -- Read_Buffer --
-    -----------------
- 
-    procedure Read_Buffer is
-    begin
-       Buft := Int (Read (Tree_FD, Buf (1)'Address, Integer (Buflen)));
- 
-       if Buft = 0 then
-          raise Tree_Format_Error;
-       else
-          Bufn := 0;
-       end if;
-    end Read_Buffer;
- 
-    ---------------
-    -- Read_Byte --
-    ---------------
- 
-    function Read_Byte return Byte is
-    begin
-       if Bufn = Buft then
-          Read_Buffer;
-       end if;
- 
-       Bufn := Bufn + 1;
-       return Buf (Bufn);
-    end Read_Byte;
- 
-    --------------------
-    -- Tree_Read_Bool --
-    --------------------
- 
-    procedure Tree_Read_Bool (B : out Boolean) is
-    begin
-       B := Boolean'Val (Read_Byte);
- 
-       if Debug_Flag_Tree then
-          if B then
-             Write_Str ("True");
-          else
-             Write_Str ("False");
-          end if;
- 
-          Write_Eol;
-       end if;
-    end Tree_Read_Bool;
- 
-    --------------------
-    -- Tree_Read_Char --
-    --------------------
- 
-    procedure Tree_Read_Char (C : out Character) is
-    begin
-       C := Character'Val (Read_Byte);
- 
-       if Debug_Flag_Tree then
-          Write_Str ("==> transmitting Character = ");
-          Write_Char (C);
-          Write_Eol;
-       end if;
-    end Tree_Read_Char;
- 
-    --------------------
-    -- Tree_Read_Data --
-    --------------------
- 
-    procedure Tree_Read_Data (Addr : Address; Length : Int) is
- 
-       type S is array (Pos) of Byte;
-       --  This is a big array, for which we have to suppress the warning
- 
-       type SP is access all S;
- 
-       function To_SP is new Unchecked_Conversion (Address, SP);
- 
-       Data : constant SP := To_SP (Addr);
-       --  Data buffer to be read as an indexable array of bytes
- 
-       OP : Pos := 1;
-       --  Pointer to next byte of data buffer to be read into
- 
-       B : Byte;
-       C : Byte;
-       L : Int;
- 
-    begin
-       if Debug_Flag_Tree then
-          Write_Str ("==> transmitting ");
-          Write_Int (Length);
-          Write_Str (" data bytes");
-          Write_Eol;
-       end if;
- 
-       --  Verify data length
- 
-       Tree_Read_Int (L);
- 
-       if L /= Length then
-          Write_Str ("==> transmitting, expected ");
-          Write_Int (Length);
-          Write_Str (" bytes, found length = ");
-          Write_Int (L);
-          Write_Eol;
-          raise Tree_Format_Error;
-       end if;
- 
-       --  Loop to read data
- 
-       while OP <= Length loop
- 
-          --  Get compression control character
- 
-          B := Read_Byte;
-          C := B and 2#00_111111#;
-          B := B and 2#11_000000#;
- 
-          --  Non-repeat case
- 
-          if B = C_Noncomp then
-             if Debug_Flag_Tree then
-                Write_Str ("==>    uncompressed:  ");
-                Write_Int (Int (C));
-                Write_Str (", starting at ");
-                Write_Int (OP);
-                Write_Eol;
-             end if;
- 
-             for J in 1 .. C loop
-                Data (OP) := Read_Byte;
-                OP := OP + 1;
-             end loop;
- 
-          --  Repeated zeroes
- 
-          elsif B = C_Zeros then
-             if Debug_Flag_Tree then
-                Write_Str ("==>    zeroes:        ");
-                Write_Int (Int (C));
-                Write_Str (", starting at ");
-                Write_Int (OP);
-                Write_Eol;
-             end if;
- 
-             for J in 1 .. C loop
-                Data (OP) := 0;
-                OP := OP + 1;
-             end loop;
- 
-          --  Repeated spaces
- 
-          elsif B = C_Spaces then
-             if Debug_Flag_Tree then
-                Write_Str ("==>    spaces:        ");
-                Write_Int (Int (C));
-                Write_Str (", starting at ");
-                Write_Int (OP);
-                Write_Eol;
-             end if;
- 
-             for J in 1 .. C loop
-                Data (OP) := Character'Pos (' ');
-                OP := OP + 1;
-             end loop;
- 
-          --  Specified repeated character
- 
-          else -- B = C_Repeat
-             B := Read_Byte;
- 
-             if Debug_Flag_Tree then
-                Write_Str ("==>    other char:    ");
-                Write_Int (Int (C));
-                Write_Str (" (");
-                Write_Int (Int (B));
-                Write_Char (')');
-                Write_Str (", starting at ");
-                Write_Int (OP);
-                Write_Eol;
-             end if;
- 
-             for J in 1 .. C loop
-                Data (OP) := B;
-                OP := OP + 1;
-             end loop;
-          end if;
-       end loop;
- 
-       --  At end of loop, data item must be exactly filled
- 
-       if OP /= Length + 1 then
-          raise Tree_Format_Error;
-       end if;
- 
-    end Tree_Read_Data;
- 
-    --------------------------
-    -- Tree_Read_Initialize --
-    --------------------------
- 
-    procedure Tree_Read_Initialize (Desc : File_Descriptor) is
-    begin
-       Buft := 0;
-       Bufn := 0;
-       Tree_FD := Desc;
-       Debug_Flag_Tree := Debug_Flag_5;
-    end Tree_Read_Initialize;
- 
-    -------------------
-    -- Tree_Read_Int --
-    -------------------
- 
-    procedure Tree_Read_Int (N : out Int) is
-       N_Bytes : Int_Bytes;
- 
-    begin
-       for J in 1 .. 4 loop
-          N_Bytes (J) := Read_Byte;
-       end loop;
- 
-       N := To_Int (N_Bytes);
- 
-       if Debug_Flag_Tree then
-          Write_Str ("==> transmitting Int = ");
-          Write_Int (N);
-          Write_Eol;
-       end if;
-    end Tree_Read_Int;
- 
-    -------------------
-    -- Tree_Read_Str --
-    -------------------
- 
-    procedure Tree_Read_Str (S : out String_Ptr) is
-       N : Nat;
- 
-    begin
-       Tree_Read_Int (N);
-       S := new String (1 .. Natural (N));
-       Tree_Read_Data (S.all (1)'Address, N);
-    end Tree_Read_Str;
- 
-    -------------------------
-    -- Tree_Read_Terminate --
-    -------------------------
- 
-    procedure Tree_Read_Terminate is
-    begin
-       --  Must be at end of input buffer, so we should get Tree_Format_Error
-       --  if we try to read one more byte, if not, we have a format error.
- 
-       declare
-          B : Byte;
-          pragma Warnings (Off, B);
- 
-       begin
-          B := Read_Byte;
- 
-       exception
-          when Tree_Format_Error => return;
-       end;
- 
-       raise Tree_Format_Error;
-    end Tree_Read_Terminate;
- 
-    ---------------------
-    -- Tree_Write_Bool --
-    ---------------------
- 
-    procedure Tree_Write_Bool (B : Boolean) is
-    begin
-       if Debug_Flag_Tree then
-          Write_Str ("==> transmitting Boolean = ");
- 
-          if B then
-             Write_Str ("True");
-          else
-             Write_Str ("False");
-          end if;
- 
-          Write_Eol;
-       end if;
- 
-       Write_Byte (Boolean'Pos (B));
-    end Tree_Write_Bool;
- 
-    ---------------------
-    -- Tree_Write_Char --
-    ---------------------
- 
-    procedure Tree_Write_Char (C : Character) is
-    begin
-       if Debug_Flag_Tree then
-          Write_Str ("==> transmitting Character = ");
-          Write_Char (C);
-          Write_Eol;
-       end if;
- 
-       Write_Byte (Character'Pos (C));
-    end Tree_Write_Char;
- 
-    ---------------------
-    -- Tree_Write_Data --
-    ---------------------
- 
-    procedure Tree_Write_Data (Addr : Address; Length : Int) is
- 
-       type S is array (Pos) of Byte;
-       --  This is a big array, for which we have to suppress the warning
- 
-       type SP is access all S;
- 
-       function To_SP is new Unchecked_Conversion (Address, SP);
- 
-       Data : constant SP := To_SP (Addr);
-       --  Pointer to data to be written, converted to array type
- 
-       IP : Pos := 1;
-       --  Input buffer pointer, next byte to be processed
- 
-       NC : Nat range 0 .. Max_Count := 0;
-       --  Number of bytes of non-compressible sequence
- 
-       C  : Byte;
- 
-       procedure Write_Non_Compressed_Sequence;
-       --  Output currently collected sequence of non-compressible data
- 
-       -----------------------------------
-       -- Write_Non_Compressed_Sequence --
-       -----------------------------------
- 
-       procedure Write_Non_Compressed_Sequence is
-       begin
-          if NC > 0 then
-             Write_Byte (C_Noncomp + Byte (NC));
- 
-             if Debug_Flag_Tree then
-                Write_Str ("==>    uncompressed:  ");
-                Write_Int (NC);
-                Write_Str (", starting at ");
-                Write_Int (IP - NC);
-                Write_Eol;
-             end if;
- 
-             for J in reverse 1 .. NC loop
-                Write_Byte (Data (IP - J));
-             end loop;
- 
-             NC := 0;
-          end if;
-       end Write_Non_Compressed_Sequence;
- 
-    --  Start of processing for Tree_Write_Data
- 
-    begin
-       if Debug_Flag_Tree then
-          Write_Str ("==> transmitting ");
-          Write_Int (Length);
-          Write_Str (" data bytes");
-          Write_Eol;
-       end if;
- 
-       --  We write the count at the start, so that we can check it on
-       --  the corresponding read to make sure that reads and writes match
- 
-       Tree_Write_Int (Length);
- 
-       --  Conversion loop
-       --    IP is index of next input character
-       --    NC is number of non-compressible bytes saved up
- 
-       loop
-          --  If input is completely processed, then we are all done
- 
-          if IP > Length then
-             Write_Non_Compressed_Sequence;
-             return;
-          end if;
- 
-          --  Test for compressible sequence, must be at least three identical
-          --  bytes in a row to be worthwhile compressing.
- 
-          if IP + 2 <= Length
-            and then Data (IP) = Data (IP + 1)
-            and then Data (IP) = Data (IP + 2)
-          then
-             Write_Non_Compressed_Sequence;
- 
-             --  Count length of new compression sequence
- 
-             C := 3;
-             IP := IP + 3;
- 
-             while IP < Length
-               and then Data (IP) = Data (IP - 1)
-               and then C < Max_Count
-             loop
-                C := C + 1;
-                IP := IP + 1;
-             end loop;
- 
-             --  Output compression sequence
- 
-             if Data (IP - 1) = 0 then
-                if Debug_Flag_Tree then
-                   Write_Str ("==>    zeroes:        ");
-                   Write_Int (Int (C));
-                   Write_Str (", starting at ");
-                   Write_Int (IP - Int (C));
-                   Write_Eol;
-                end if;
- 
-                Write_Byte (C_Zeros + C);
- 
-             elsif Data (IP - 1) = Character'Pos (' ') then
-                if Debug_Flag_Tree then
-                   Write_Str ("==>    spaces:        ");
-                   Write_Int (Int (C));
-                   Write_Str (", starting at ");
-                   Write_Int (IP - Int (C));
-                   Write_Eol;
-                end if;
- 
-                Write_Byte (C_Spaces + C);
- 
-             else
-                if Debug_Flag_Tree then
-                   Write_Str ("==>    other char:    ");
-                   Write_Int (Int (C));
-                   Write_Str (" (");
-                   Write_Int (Int (Data (IP - 1)));
-                   Write_Char (')');
-                   Write_Str (", starting at ");
-                   Write_Int (IP - Int (C));
-                   Write_Eol;
-                end if;
- 
-                Write_Byte (C_Repeat + C);
-                Write_Byte (Data (IP - 1));
-             end if;
- 
-          --  No compression possible here
- 
-          else
-             --  Output non-compressed sequence if at maximum length
- 
-             if NC = Max_Count then
-                Write_Non_Compressed_Sequence;
-             end if;
- 
-             NC := NC + 1;
-             IP := IP + 1;
-          end if;
-       end loop;
- 
-    end Tree_Write_Data;
- 
-    ---------------------------
-    -- Tree_Write_Initialize --
-    ---------------------------
- 
-    procedure Tree_Write_Initialize (Desc : File_Descriptor) is
-    begin
-       Bufn := 0;
-       Tree_FD := Desc;
-       Set_Standard_Error;
-       Debug_Flag_Tree := Debug_Flag_5;
-    end Tree_Write_Initialize;
- 
-    --------------------
-    -- Tree_Write_Int --
-    --------------------
- 
-    procedure Tree_Write_Int (N : Int) is
-       N_Bytes : constant Int_Bytes := To_Int_Bytes (N);
- 
-    begin
-       if Debug_Flag_Tree then
-          Write_Str ("==> transmitting Int = ");
-          Write_Int (N);
-          Write_Eol;
-       end if;
- 
-       for J in 1 .. 4 loop
-          Write_Byte (N_Bytes (J));
-       end loop;
-    end Tree_Write_Int;
- 
-    --------------------
-    -- Tree_Write_Str --
-    --------------------
- 
-    procedure Tree_Write_Str (S : String_Ptr) is
-    begin
-       Tree_Write_Int (S'Length);
-       Tree_Write_Data (S (1)'Address, S'Length);
-    end Tree_Write_Str;
- 
-    --------------------------
-    -- Tree_Write_Terminate --
-    --------------------------
- 
-    procedure Tree_Write_Terminate is
-    begin
-       if Bufn > 0 then
-          Write_Buffer;
-       end if;
-    end Tree_Write_Terminate;
- 
-    ------------------
-    -- Write_Buffer --
-    ------------------
- 
-    procedure Write_Buffer is
-    begin
-       if Integer (Bufn) = Write (Tree_FD, Buf'Address, Integer (Bufn)) then
-          Bufn := 0;
- 
-       else
-          Set_Standard_Error;
-          Write_Str ("fatal error: disk full");
-          OS_Exit (2);
-       end if;
-    end Write_Buffer;
- 
-    ----------------
-    -- Write_Byte --
-    ----------------
- 
-    procedure Write_Byte (B : Byte) is
-    begin
-       Bufn := Bufn + 1;
-       Buf (Bufn) := B;
- 
-       if Bufn = Buflen then
-          Write_Buffer;
-       end if;
-    end Write_Byte;
- 
- end Tree_IO;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/tree_io.ads gcc-11.1.0/gcc/ada/tree_io.ads
*** gcc-10.3.0/gcc/ada/tree_io.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/tree_io.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,128 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                              T R E E _ I O                               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception under Section 7 of GPL version 3, you are granted --
- -- additional permissions described in the GCC Runtime Library Exception,   --
- -- version 3.1, as published by the Free Software Foundation.               --
- --                                                                          --
- -- You should have received a copy of the GNU General Public License and    --
- -- a copy of the GCC Runtime Library Exception along with this program;     --
- -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
- -- <http://www.gnu.org/licenses/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package contains the routines used to read and write the tree files
- --  used by ASIS. Only the actual read and write routines are here. The open,
- --  create and close routines are elsewhere (in Osint in the compiler, and in
- --  the tree read driver for the tree read interface).
- 
- with Types;  use Types;
- with System; use System;
- 
- pragma Warnings (Off);
- --  This package is used also by gnatcoll
- with System.OS_Lib; use System.OS_Lib;
- pragma Warnings (On);
- 
- package Tree_IO is
- 
-    Tree_Format_Error : exception;
-    --  Raised if a format error is detected in the input file
- 
-    ASIS_Version_Number : constant := 34;
-    --  ASIS Version. This is used to check for consistency between the compiler
-    --  used to generate trees and an ASIS application that is reading the
-    --  trees. It must be incremented whenever a change is made to the tree
-    --  format that would result in the compiler being incompatible with an
-    --  older version of ASIS.
-    --
-    --  27  Changes in the tree structures for expression functions
-    --  28  Changes in Snames
-    --  29  Changes in Sem_Ch3 (tree copying in case of discriminant constraint
-    --      for concurrent types).
-    --  30  Add Check_Float_Overflow boolean to tree file
-    --  31  Remove read/write of Debug_Pragmas_Disabled/Debug_Pragmas_Enabled
-    --  32  Change the way entities are changed through Next_Entity field in
-    --      the hierarchy of child units
-    --  33  Add copying subtrees for rewriting infix calls of operator
-    --      functions for the corresponding original nodes.
-    --  34  Add read/write of Address_Is_Private, Ignore_Rep_Clauses,
-    --      Ignore_Style_Check_Pragmas, Multiple_Unit_Index. Also this
-    --      is the version where rep clauses are removed by -gnatI.
- 
-    procedure Tree_Read_Initialize (Desc : File_Descriptor);
-    --  Called to initialize reading of a tree file. This call must be made
-    --  before calls to Tree_Read_xx. No calls to Tree_Write_xx are permitted
-    --  after this call.
- 
-    procedure Tree_Read_Data (Addr : Address; Length : Int);
-    --  Checks that the Length provided is the same as what has been provided
-    --  to the corresponding Tree_Write_Data from the current tree file,
-    --  Tree_Format_Error is raised if it is not the case. If Length is
-    --  correct and non zero, reads Length bytes of information into memory
-    --  starting at Addr from the current tree file.
- 
-    procedure Tree_Read_Bool (B : out Boolean);
-    --  Reads a single boolean value. The boolean value must have been written
-    --  with a call to the Tree_Write_Bool procedure.
- 
-    procedure Tree_Read_Char (C : out Character);
-    --  Reads a single character. The character must have been written with a
-    --  call to the Tree_Write_Char procedure.
- 
-    procedure Tree_Read_Int (N : out Int);
-    --  Reads a single integer value. The integer must have been written with
-    --  a call to the Tree_Write_Int procedure.
- 
-    procedure Tree_Read_Str (S : out String_Ptr);
-    --  Read string, allocate on heap, and return pointer to allocated string
-    --  which always has a lower bound of 1.
- 
-    procedure Tree_Read_Terminate;
-    --  Called after reading all data, checks that the buffer pointers is at
-    --  the end of file, raising Tree_Format_Error if not.
- 
-    procedure Tree_Write_Initialize (Desc : File_Descriptor);
-    --  Called to initialize writing of a tree file. This call must be made
-    --  before calls to Tree_Write_xx. No calls to Tree_Read_xx are permitted
-    --  after this call.
- 
-    procedure Tree_Write_Data (Addr : Address; Length : Int);
-    --  Writes Length then, if Length is not null, Length bytes of data
-    --  starting at Addr to current tree file
- 
-    procedure Tree_Write_Bool (B : Boolean);
-    --  Writes a single boolean value to the current tree file
- 
-    procedure Tree_Write_Char (C : Character);
-    --  Writes a single character to the current tree file
- 
-    procedure Tree_Write_Int (N : Int);
-    --  Writes a single integer value to the current tree file
- 
-    procedure Tree_Write_Str (S : String_Ptr);
-    --  Write out string value referenced by S (low bound of S must be 1)
- 
-    procedure Tree_Write_Terminate;
-    --  Terminates writing of the file (flushing the buffer), but does not
-    --  close the file (the caller is responsible for closing the file).
- 
- end Tree_IO;
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/treepr.adb gcc-11.1.0/gcc/ada/treepr.adb
*** gcc-10.3.0/gcc/ada/treepr.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/treepr.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Treepr is
*** 264,269 ****
--- 264,272 ----
        Lid : Int;
  
     begin
+       Push_Output;
+       Set_Standard_Output;
+ 
        if L < 0 then
           Lid := L;
  
*************** package body Treepr is
*** 292,297 ****
--- 295,301 ----
        --  Now output the list
  
        Print_Tree_List (List_Id (Lid));
+       Pop_Output;
     end pl;
  
     --------
*************** package body Treepr is
*** 300,305 ****
--- 304,312 ----
  
     procedure pn (N : Union_Id) is
     begin
+       Push_Output;
+       Set_Standard_Output;
+ 
        case N is
           when List_Low_Bound .. List_High_Bound - 1 =>
              pl (Int (N));
*************** package body Treepr is
*** 332,337 ****
--- 339,346 ----
              Write_Int (Int (N));
              Write_Eol;
        end case;
+ 
+       Pop_Output;
     end pn;
  
     --------
*************** package body Treepr is
*** 869,874 ****
--- 878,885 ----
     ----------------
  
     procedure Print_Init is
+       Max_Hash_Entries : constant Nat :=
+         Approx_Num_Nodes_And_Entities + Num_Lists + Num_Elists;
     begin
        Printing_Descendants := True;
        Write_Eol;
*************** package body Treepr is
*** 877,883 ****
        --  the maximum possible number of entries, so that the hash table
        --  cannot get significantly overloaded.
  
!       Hash_Table_Len := (150 * (Num_Nodes + Num_Lists + Num_Elists)) / 100;
        Hash_Table := new Hash_Table_Type  (0 .. Hash_Table_Len - 1);
  
        for J in Hash_Table'Range loop
--- 888,894 ----
        --  the maximum possible number of entries, so that the hash table
        --  cannot get significantly overloaded.
  
!       Hash_Table_Len := (150 * Max_Hash_Entries) / 100;
        Hash_Table := new Hash_Table_Type  (0 .. Hash_Table_Len - 1);
  
        for J in Hash_Table'Range loop
*************** package body Treepr is
*** 1006,1011 ****
--- 1017,1031 ----
           return;
        end if;
  
+       --  Similarly, if N points to an extension, avoid crashing
+ 
+       if Atree_Private_Part.Nodes.Table (N).Is_Extension then
+          Print_Int (Int (N));
+          Print_Str (" is an extension, not a node");
+          Print_Eol;
+          return;
+       end if;
+ 
        Prefix_Str_Char (Prefix_Str'Range)    := Prefix_Str;
        Prefix_Str_Char (Prefix_Str'Last + 1) := Prefix_Char;
  
*************** package body Treepr is
*** 1131,1142 ****
                 Print_Eol;
              end if;
  
-             if Has_Dynamic_Range_Check (N) then
-                Print_Str (Prefix_Str_Char);
-                Print_Str ("Has_Dynamic_Range_Check = True");
-                Print_Eol;
-             end if;
- 
              if Is_Controlling_Actual (N) then
                 Print_Str (Prefix_Str_Char);
                 Print_Str ("Is_Controlling_Actual = True");
--- 1151,1156 ----
*************** package body Treepr is
*** 1170,1176 ****
  
              if Raises_Constraint_Error (N) then
                 Print_Str (Prefix_Str_Char);
!                Print_Str ("Raise_Constraint_Error = True");
                 Print_Eol;
              end if;
  
--- 1184,1190 ----
  
              if Raises_Constraint_Error (N) then
                 Print_Str (Prefix_Str_Char);
!                Print_Str ("Raises_Constraint_Error = True");
                 Print_Eol;
              end if;
  
*************** package body Treepr is
*** 1271,1277 ****
                 --  Special case End_Span = Uint5
  
                 when F_Field5 =>
!                   if Nkind_In (N, N_Case_Statement, N_If_Statement) then
                       Print_End_Span (N);
                    else
                       Print_Field (Field5 (N), Fmt);
--- 1285,1291 ----
                 --  Special case End_Span = Uint5
  
                 when F_Field5 =>
!                   if Nkind (N) in N_Case_Statement | N_If_Statement then
                       Print_End_Span (N);
                    else
                       Print_Field (Field5 (N), Fmt);
*************** package body Treepr is
*** 2185,2191 ****
                 Nod := N;
                 while Present (Nod) loop
                    Visit_Descendant (Union_Id (Next_Entity (Nod)));
!                   Nod := Next_Entity (Nod);
                 end loop;
              end;
           end if;
--- 2199,2205 ----
                 Nod := N;
                 while Present (Nod) loop
                    Visit_Descendant (Union_Id (Next_Entity (Nod)));
!                   Next_Entity (Nod);
                 end loop;
              end;
           end if;
diff -Nrcpad gcc-10.3.0/gcc/ada/treepr.ads gcc-11.1.0/gcc/ada/treepr.ads
*** gcc-10.3.0/gcc/ada/treepr.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/treepr.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/ttypes.ads gcc-11.1.0/gcc/ada/ttypes.ads
*** gcc-10.3.0/gcc/ada/ttypes.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/ttypes.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 26,32 ****
  --  This package contains constants describing target properties
  
  with Types;    use Types;
- with Get_Targ;
  with Set_Targ;
  
  package Ttypes is
--- 26,31 ----
*************** package Ttypes is
*** 102,158 ****
  
     Standard_Short_Short_Integer_Size  : constant Pos :=
                                            Set_Targ.Char_Size;
-    Standard_Short_Short_Integer_Width : constant Pos :=
-                                           Get_Targ.Width_From_Size
-                                            (Standard_Short_Short_Integer_Size);
  
     Standard_Short_Integer_Size        : constant Pos :=
                                            Set_Targ.Short_Size;
-    Standard_Short_Integer_Width       : constant Pos :=
-                                           Get_Targ.Width_From_Size
-                                             (Standard_Short_Integer_Size);
  
     Standard_Integer_Size              : constant Pos :=
                                            Set_Targ.Int_Size;
-    Standard_Integer_Width             : constant Pos :=
-                                           Get_Targ.Width_From_Size
-                                             (Standard_Integer_Size);
  
     Standard_Long_Integer_Size         : constant Pos :=
                                            Set_Targ.Long_Size;
-    Standard_Long_Integer_Width        : constant Pos :=
-                                           Get_Targ.Width_From_Size
-                                             (Standard_Long_Integer_Size);
  
     Standard_Long_Long_Integer_Size    : constant Pos :=
                                            Set_Targ.Long_Long_Size;
!    Standard_Long_Long_Integer_Width   : constant Pos :=
!                                           Get_Targ.Width_From_Size
!                                             (Standard_Long_Long_Integer_Size);
  
     Standard_Short_Float_Size          : constant Pos :=
                                            Set_Targ.Float_Size;
-    Standard_Short_Float_Digits        : constant Pos :=
-                                           Get_Targ.Digits_From_Size
-                                             (Standard_Short_Float_Size);
  
     Standard_Float_Size                : constant Pos :=
                                            Set_Targ.Float_Size;
-    Standard_Float_Digits              : constant Pos :=
-                                           Get_Targ.Digits_From_Size
-                                             (Standard_Float_Size);
  
     Standard_Long_Float_Size           : constant Pos :=
                                            Set_Targ.Double_Size;
-    Standard_Long_Float_Digits         : constant Pos :=
-                                           Get_Targ.Digits_From_Size
-                                             (Standard_Long_Float_Size);
  
     Standard_Long_Long_Float_Size      : constant Pos :=
                                            Set_Targ.Long_Double_Size;
-    Standard_Long_Long_Float_Digits    : constant Pos :=
-                                           Get_Targ.Digits_From_Size
-                                             (Standard_Long_Long_Float_Size);
  
     Standard_Character_Size            : constant Pos := Set_Targ.Char_Size;
  
--- 101,133 ----
  
     Standard_Short_Short_Integer_Size  : constant Pos :=
                                            Set_Targ.Char_Size;
  
     Standard_Short_Integer_Size        : constant Pos :=
                                            Set_Targ.Short_Size;
  
     Standard_Integer_Size              : constant Pos :=
                                            Set_Targ.Int_Size;
  
     Standard_Long_Integer_Size         : constant Pos :=
                                            Set_Targ.Long_Size;
  
     Standard_Long_Long_Integer_Size    : constant Pos :=
                                            Set_Targ.Long_Long_Size;
! 
!    Standard_Long_Long_Long_Integer_Size : Pos :=
!                                             Set_Targ.Long_Long_Long_Size;
  
     Standard_Short_Float_Size          : constant Pos :=
                                            Set_Targ.Float_Size;
  
     Standard_Float_Size                : constant Pos :=
                                            Set_Targ.Float_Size;
  
     Standard_Long_Float_Size           : constant Pos :=
                                            Set_Targ.Double_Size;
  
     Standard_Long_Long_Float_Size      : constant Pos :=
                                            Set_Targ.Long_Double_Size;
  
     Standard_Character_Size            : constant Pos := Set_Targ.Char_Size;
  
*************** package Ttypes is
*** 176,183 ****
     System_Address_Size : constant Pos := Set_Targ.Pointer_Size;
     --  System.Address'Size (also size of all thin pointers)
  
!    System_Max_Binary_Modulus_Power : constant Pos :=
!                                        Standard_Long_Long_Integer_Size;
  
     System_Max_Nonbinary_Modulus_Power : constant Pos := Standard_Integer_Size;
  
--- 151,160 ----
     System_Address_Size : constant Pos := Set_Targ.Pointer_Size;
     --  System.Address'Size (also size of all thin pointers)
  
!    System_Max_Integer_Size : Pos := Standard_Long_Long_Long_Integer_Size;
! 
!    System_Max_Binary_Modulus_Power : Pos :=
!                                        Standard_Long_Long_Long_Integer_Size;
  
     System_Max_Nonbinary_Modulus_Power : constant Pos := Standard_Integer_Size;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/types.adb gcc-11.1.0/gcc/ada/types.adb
*** gcc-10.3.0/gcc/ada/types.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/types.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/types.ads gcc-11.1.0/gcc/ada/types.ads
*** gcc-10.3.0/gcc/ada/types.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/types.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Types is
*** 265,361 ****
  
     --  These types are represented as integer indices into various tables.
     --  However, they should be treated as private, except in a few documented
!    --  cases. In particular it is never appropriate to perform arithmetic
!    --  operations using these types.
  
     --  In most contexts, the strongly typed interface determines which of these
     --  types is present. However, there are some situations (involving untyped
     --  traversals of the tree), where it is convenient to be easily able to
     --  distinguish these values. The underlying representation in all cases is
     --  an integer type Union_Id, and we ensure that the range of the various
!    --  possible values for each of the above types is disjoint so that this
!    --  distinction is possible.
  
     --  Note: it is also helpful for debugging purposes to make these ranges
     --  distinct. If a bug leads to misidentification of a value, then it will
     --  typically result in an out of range value and a Constraint_Error.
  
     type Union_Id is new Int;
     --  The type in the tree for a union of possible ID values
  
!    List_Low_Bound : constant := -100_000_000;
     --  The List_Id values are subscripts into an array of list headers which
!    --  has List_Low_Bound as its lower bound. This value is chosen so that all
!    --  List_Id values are negative, and the value zero is in the range of both
!    --  List_Id and Node_Id values (see further description below).
  
     List_High_Bound : constant := 0;
!    --  Maximum List_Id subscript value. This allows up to 100 million list Id
!    --  values, which is in practice infinite, and there is no need to check the
!    --  range. The range overlaps the node range by one element (with value
!    --  zero), which is used both for the Empty node, and for indicating no
!    --  list. The fact that the same value is used is convenient because it
!    --  means that the default value of Empty applies to both nodes and lists,
!    --  and also is more efficient to test for.
  
     Node_Low_Bound : constant := 0;
     --  The tree Id values start at zero, because we use zero for Empty (to
!    --  allow a zero test for Empty). Actual tree node subscripts start at 0
!    --  since Empty is a legitimate node value.
  
!    Node_High_Bound : constant := 099_999_999;
!    --  Maximum number of nodes that can be allocated is 100 million, which
!    --  is in practice infinite, and there is no need to check the range.
  
!    Elist_Low_Bound : constant := 100_000_000;
     --  The Elist_Id values are subscripts into an array of elist headers which
     --  has Elist_Low_Bound as its lower bound.
  
!    Elist_High_Bound : constant := 199_999_999;
!    --  Maximum Elist_Id subscript value. This allows up to 100 million Elists,
!    --  which is in practice infinite and there is no need to check the range.
  
!    Elmt_Low_Bound : constant := 200_000_000;
     --  Low bound of element Id values. The use of these values is internal to
     --  the Elists package, but the definition of the range is included here
     --  since it must be disjoint from other Id values. The Elmt_Id values are
     --  subscripts into an array of list elements which has this as lower bound.
  
!    Elmt_High_Bound : constant := 299_999_999;
!    --  Upper bound of Elmt_Id values. This allows up to 100 million element
!    --  list members, which is in practice infinite (no range check needed).
  
!    Names_Low_Bound : constant := 300_000_000;
!    --  Low bound for name Id values
  
!    Names_High_Bound : constant := 399_999_999;
!    --  Maximum number of names that can be allocated is 100 million, which is
!    --  in practice infinite and there is no need to check the range.
  
!    Strings_Low_Bound : constant := 400_000_000;
!    --  Low bound for string Id values
  
!    Strings_High_Bound : constant := 499_999_999;
!    --  Maximum number of strings that can be allocated is 100 million, which
!    --  is in practice infinite and there is no need to check the range.
  
!    Ureal_Low_Bound : constant := 500_000_000;
!    --  Low bound for Ureal values
  
!    Ureal_High_Bound : constant := 599_999_999;
!    --  Maximum number of Ureal values stored is 100_000_000 which is in
!    --  practice infinite so that no check is required.
  
!    Uint_Low_Bound : constant := 600_000_000;
     --  Low bound for Uint values
  
!    Uint_Table_Start : constant := 2_000_000_000;
     --  Location where table entries for universal integers start (see
     --  Uintp spec for details of the representation of Uint values).
  
!    Uint_High_Bound : constant := 2_099_999_999;
!    --  The range of Uint values is very large, since a substantial part
!    --  of this range is used to store direct values, see Uintp for details.
  
     --  The following subtype definitions are used to provide convenient names
     --  for membership tests on Int values to see what data type range they
--- 259,344 ----
  
     --  These types are represented as integer indices into various tables.
     --  However, they should be treated as private, except in a few documented
!    --  cases. In particular it is usually inappropriate to perform arithmetic
!    --  operations using these types. One exception is in computing hash
!    --  functions of these types.
  
     --  In most contexts, the strongly typed interface determines which of these
     --  types is present. However, there are some situations (involving untyped
     --  traversals of the tree), where it is convenient to be easily able to
     --  distinguish these values. The underlying representation in all cases is
     --  an integer type Union_Id, and we ensure that the range of the various
!    --  possible values for each of the above types is disjoint (except that
!    --  List_Id and Node_Id overlap at Empty) so that this distinction is
!    --  possible.
  
     --  Note: it is also helpful for debugging purposes to make these ranges
     --  distinct. If a bug leads to misidentification of a value, then it will
     --  typically result in an out of range value and a Constraint_Error.
  
+    --  The range of Node_Id is most of the nonnegative integers. The other
+    --  ranges are negative. Uint has a very large range, because a substantial
+    --  part of this range is used to store direct values; see Uintp for
+    --  details. The other types have 100 million values, which should be
+    --  plenty.
+ 
     type Union_Id is new Int;
     --  The type in the tree for a union of possible ID values
  
!    --  Following are the Low and High bounds of the various ranges.
! 
!    List_Low_Bound : constant := -099_999_999;
     --  The List_Id values are subscripts into an array of list headers which
!    --  has List_Low_Bound as its lower bound.
  
     List_High_Bound : constant := 0;
!    --  Maximum List_Id subscript value. The ranges of List_Id and Node_Id
!    --  overlap by one element (with value zero), which is used both for the
!    --  Empty node, and for No_List. The fact that the same value is used is
!    --  convenient because it means that the default value of Empty applies to
!    --  both nodes and lists, and also is more efficient to test for.
  
     Node_Low_Bound : constant := 0;
     --  The tree Id values start at zero, because we use zero for Empty (to
!    --  allow a zero test for Empty).
  
!    Node_High_Bound : constant :=
!      (if Standard'Address_Size = 32 then 299_999_999 else 1_999_999_999);
  
!    Elist_Low_Bound : constant := -199_999_999;
     --  The Elist_Id values are subscripts into an array of elist headers which
     --  has Elist_Low_Bound as its lower bound.
  
!    Elist_High_Bound : constant := -100_000_000;
  
!    Elmt_Low_Bound : constant := -299_999_999;
     --  Low bound of element Id values. The use of these values is internal to
     --  the Elists package, but the definition of the range is included here
     --  since it must be disjoint from other Id values. The Elmt_Id values are
     --  subscripts into an array of list elements which has this as lower bound.
  
!    Elmt_High_Bound : constant := -200_000_000;
  
!    Names_Low_Bound : constant := -399_999_999;
  
!    Names_High_Bound : constant := -300_000_000;
  
!    Strings_Low_Bound : constant := -499_999_999;
  
!    Strings_High_Bound : constant := -400_000_000;
  
!    Ureal_Low_Bound : constant := -599_999_999;
  
!    Ureal_High_Bound : constant := -500_000_000;
  
!    Uint_Low_Bound : constant := -2_100_000_000;
     --  Low bound for Uint values
  
!    Uint_Table_Start : constant := -699_999_999;
     --  Location where table entries for universal integers start (see
     --  Uintp spec for details of the representation of Uint values).
  
!    Uint_High_Bound : constant := -600_000_000;
  
     --  The following subtype definitions are used to provide convenient names
     --  for membership tests on Int values to see what data type range they
*************** package Types is
*** 668,697 ****
     No_Check_Id : constant := 0;
     --  Check_Id value used to indicate no check
  
!    Access_Check           : constant :=  1;
!    Accessibility_Check    : constant :=  2;
!    Alignment_Check        : constant :=  3;
!    Allocation_Check       : constant :=  4;
!    Atomic_Synchronization : constant :=  5;
!    Discriminant_Check     : constant :=  6;
!    Division_Check         : constant :=  7;
!    Duplicated_Tag_Check   : constant :=  8;
!    Elaboration_Check      : constant :=  9;
!    Index_Check            : constant := 10;
!    Length_Check           : constant := 11;
!    Overflow_Check         : constant := 12;
!    Predicate_Check        : constant := 13;
!    Range_Check            : constant := 14;
!    Storage_Check          : constant := 15;
!    Tag_Check              : constant := 16;
!    Validity_Check         : constant := 17;
!    Container_Checks       : constant := 18;
!    Tampering_Check        : constant := 19;
     --  Values used to represent individual predefined checks (including the
     --  setting of Atomic_Synchronization, which is implemented internally using
     --  a "check" whose name is Atomic_Synchronization).
  
!    All_Checks : constant := 20;
     --  Value used to represent All_Checks value
  
     subtype Predefined_Check_Id is Check_Id range 1 .. All_Checks;
--- 651,689 ----
     No_Check_Id : constant := 0;
     --  Check_Id value used to indicate no check
  
!    Access_Check               : constant :=  1;
!    Accessibility_Check        : constant :=  2;
!    Alignment_Check            : constant :=  3;
!    Allocation_Check           : constant :=  4;
!    Atomic_Synchronization     : constant :=  5;
!    Characters_Assertion_Check : constant :=  6;
!    Containers_Assertion_Check : constant :=  7;
!    Discriminant_Check         : constant :=  8;
!    Division_Check             : constant :=  9;
!    Duplicated_Tag_Check       : constant := 10;
!    Elaboration_Check          : constant := 11;
!    Index_Check                : constant := 12;
!    Interfaces_Assertion_Check : constant := 13;
!    IO_Assertion_Check         : constant := 14;
!    Length_Check               : constant := 15;
!    Numerics_Assertion_Check   : constant := 16;
!    Overflow_Check             : constant := 17;
!    Predicate_Check            : constant := 18;
!    Program_Error_Check        : constant := 19;
!    Range_Check                : constant := 20;
!    Storage_Check              : constant := 21;
!    Strings_Assertion_Check    : constant := 22;
!    System_Assertion_Check     : constant := 23;
!    Tag_Check                  : constant := 24;
!    Validity_Check             : constant := 25;
!    Container_Checks           : constant := 26;
!    Tampering_Check            : constant := 27;
!    Tasking_Check              : constant := 28;
     --  Values used to represent individual predefined checks (including the
     --  setting of Atomic_Synchronization, which is implemented internally using
     --  a "check" whose name is Atomic_Synchronization).
  
!    All_Checks : constant := 29;
     --  Value used to represent All_Checks value
  
     subtype Predefined_Check_Id is Check_Id range 1 .. All_Checks;
*************** package Types is
*** 715,721 ****
     --  To add a new check type to GNAT, the following steps are required:
  
     --    1.  Add an entry to Snames spec for the new name
!    --    2.  Add an entry to the definition of Check_Id above
     --    3.  Add a new function to Checks to handle the new check test
     --    4.  Add a new Do_xxx_Check flag to Sinfo (if required)
     --    5.  Add appropriate checks for the new test
--- 707,714 ----
     --  To add a new check type to GNAT, the following steps are required:
  
     --    1.  Add an entry to Snames spec for the new name
!    --    2.  Add an entry to the definition of Check_Id above (very important:
!    --        these definitions should be in the same order in Snames and here)
     --    3.  Add a new function to Checks to handle the new check test
     --    4.  Add a new Do_xxx_Check flag to Sinfo (if required)
     --    5.  Add appropriate checks for the new test
diff -Nrcpad gcc-10.3.0/gcc/ada/types.h gcc-11.1.0/gcc/ada/types.h
*** gcc-10.3.0/gcc/ada/types.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/types.h	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2019, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2020, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** typedef Text_Ptr Source_Ptr;
*** 139,176 ****
  /* Used for Sloc in all nodes in the representation of package Standard.  */
  #define Standard_Location -2
  
! /* Instance identifiers */
  typedef Nat Instance_Id;
  
! /* Type used for union of all possible ID values covering all ranges */
  typedef int Union_Id;
  
  /* Range definitions for Tree Data:  */
  
! #define List_Low_Bound		-100000000
  #define List_High_Bound		0
  
  #define Node_Low_Bound		0
! #define Node_High_Bound		99999999
  
! #define Elist_Low_Bound		100000000
! #define Elist_High_Bound	199999999
  
! #define Elmt_Low_Bound		200000000
! #define Elmt_High_Bound		299999999
  
! #define Names_Low_Bound		300000000
! #define Names_High_Bound	399999999
  
! #define Strings_Low_Bound	400000000
! #define Strings_High_Bound	499999999
  
! #define Ureal_Low_Bound		500000000
! #define Ureal_High_Bound        599999999
  
! #define Uint_Low_Bound		600000000
! #define Uint_Table_Start        2000000000
! #define Uint_High_Bound	        2099999999
  
  SUBTYPE (List_Range,      Int, List_Low_Bound,    List_High_Bound)
  SUBTYPE (Node_Range,      Int, Node_Low_Bound,    Node_High_Bound)
--- 139,181 ----
  /* Used for Sloc in all nodes in the representation of package Standard.  */
  #define Standard_Location -2
  
! /* Convention identifiers.  */
! typedef Byte Convention_Id;
! 
! /* Instance identifiers.  */
  typedef Nat Instance_Id;
  
! /* Type used for union of all possible ID values covering all ranges.  */
  typedef int Union_Id;
  
  /* Range definitions for Tree Data:  */
  
! #define List_Low_Bound		-99999999
  #define List_High_Bound		0
  
  #define Node_Low_Bound		0
! #define Node_High_Bound		1999999999
! /* Above is the correct value of Node_High_Bound for 64-bit machines. It is
!    wrong for 32-bit machines, but that doesn't matter. */
  
! #define Elist_Low_Bound		-199999999
! #define Elist_High_Bound	-100000000
  
! #define Elmt_Low_Bound		-299999999
! #define Elmt_High_Bound		-200000000
  
! #define Names_Low_Bound		-399999999
! #define Names_High_Bound	-300000000
  
! #define Strings_Low_Bound	-499999999
! #define Strings_High_Bound	-400000000
  
! #define Ureal_Low_Bound		-599999999
! #define Ureal_High_Bound        -500000000
  
! #define Uint_Low_Bound		-2100000000
! #define Uint_Table_Start        -699999999
! #define Uint_High_Bound	        -600000000
  
  SUBTYPE (List_Range,      Int, List_Low_Bound,    List_High_Bound)
  SUBTYPE (Node_Range,      Int, Node_Low_Bound,    Node_High_Bound)
diff -Nrcpad gcc-10.3.0/gcc/ada/uintp.adb gcc-11.1.0/gcc/ada/uintp.adb
*** gcc-10.3.0/gcc/ada/uintp.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/uintp.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,36 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Output;  use Output;
! with Tree_IO; use Tree_IO;
  
  with GNAT.HTable; use GNAT.HTable;
  
--- 6,29 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Output; use Output;
  
  with GNAT.HTable; use GNAT.HTable;
  
*************** package body Uintp is
*** 50,56 ****
     Uint_Int_Last : Uint;
     --  Uint value containing Int'Last value set by Initialize
  
!    UI_Power_2 : array (Int range 0 .. 64) of Uint;
     --  This table is used to memoize exponentiations by powers of 2. The Nth
     --  entry, if set, contains the Uint value 2**N. Initially UI_Power_2_Set
     --  is zero and only the 0'th entry is set, the invariant being that all
--- 43,49 ----
     Uint_Int_Last : Uint;
     --  Uint value containing Int'Last value set by Initialize
  
!    UI_Power_2 : array (Int range 0 .. 128) of Uint;
     --  This table is used to memoize exponentiations by powers of 2. The Nth
     --  entry, if set, contains the Uint value 2**N. Initially UI_Power_2_Set
     --  is zero and only the 0'th entry is set, the invariant being that all
*************** package body Uintp is
*** 59,65 ****
     UI_Power_2_Set : Nat;
     --  Number of entries set in UI_Power_2;
  
!    UI_Power_10 : array (Int range 0 .. 64) of Uint;
     --  This table is used to memoize exponentiations by powers of 10 in the
     --  same manner as described above for UI_Power_2.
  
--- 52,58 ----
     UI_Power_2_Set : Nat;
     --  Number of entries set in UI_Power_2;
  
!    UI_Power_10 : array (Int range 0 .. 128) of Uint;
     --  This table is used to memoize exponentiations by powers of 10 in the
     --  same manner as described above for UI_Power_2.
  
*************** package body Uintp is
*** 716,773 ****
        end if;
     end Release_And_Save;
  
-    ---------------
-    -- Tree_Read --
-    ---------------
- 
-    procedure Tree_Read is
-    begin
-       Uints.Tree_Read;
-       Udigits.Tree_Read;
- 
-       Tree_Read_Int (Int (Uint_Int_First));
-       Tree_Read_Int (Int (Uint_Int_Last));
-       Tree_Read_Int (UI_Power_2_Set);
-       Tree_Read_Int (UI_Power_10_Set);
-       Tree_Read_Int (Int (Uints_Min));
-       Tree_Read_Int (Udigits_Min);
- 
-       for J in 0 .. UI_Power_2_Set loop
-          Tree_Read_Int (Int (UI_Power_2 (J)));
-       end loop;
- 
-       for J in 0 .. UI_Power_10_Set loop
-          Tree_Read_Int (Int (UI_Power_10 (J)));
-       end loop;
- 
-    end Tree_Read;
- 
-    ----------------
-    -- Tree_Write --
-    ----------------
- 
-    procedure Tree_Write is
-    begin
-       Uints.Tree_Write;
-       Udigits.Tree_Write;
- 
-       Tree_Write_Int (Int (Uint_Int_First));
-       Tree_Write_Int (Int (Uint_Int_Last));
-       Tree_Write_Int (UI_Power_2_Set);
-       Tree_Write_Int (UI_Power_10_Set);
-       Tree_Write_Int (Int (Uints_Min));
-       Tree_Write_Int (Udigits_Min);
- 
-       for J in 0 .. UI_Power_2_Set loop
-          Tree_Write_Int (Int (UI_Power_2 (J)));
-       end loop;
- 
-       for J in 0 .. UI_Power_10_Set loop
-          Tree_Write_Int (Int (UI_Power_10 (J)));
-       end loop;
- 
-    end Tree_Write;
- 
     -------------
     -- UI_Abs --
     -------------
--- 709,714 ----
*************** package body Uintp is
*** 1294,1299 ****
--- 1235,1241 ----
                    Discard_Int : Int;
                    pragma Warnings (Off, Discard_Int);
                 begin
+                   pragma Assert (D /= Int'(0));
                    UI_Div_Vector
                      (Dividend (Dividend'Last - R_Length + 1 .. Dividend'Last),
                       D,
*************** package body Uintp is
*** 1369,1377 ****
  
        --  Cases which can be done by table lookup
  
!       elsif Right <= Uint_64 then
  
!          --  2**N for N in 2 .. 64
  
           if Left = Uint_2 then
              declare
--- 1311,1319 ----
  
        --  Cases which can be done by table lookup
  
!       elsif Right <= Uint_128 then
  
!          --  2**N for N in 2 .. 128
  
           if Left = Uint_2 then
              declare
*************** package body Uintp is
*** 1391,1397 ****
                 return UI_Power_2 (Right_Int);
              end;
  
!          --  10**N for N in 2 .. 64
  
           elsif Left = Uint_10 then
              declare
--- 1333,1339 ----
                 return UI_Power_2 (Right_Int);
              end;
  
!          --  10**N for N in 2 .. 128
  
           elsif Left = Uint_10 then
              declare
diff -Nrcpad gcc-10.3.0/gcc/ada/uintp.ads gcc-11.1.0/gcc/ada/uintp.ads
*** gcc-10.3.0/gcc/ada/uintp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/uintp.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Uintp is
*** 69,78 ****
--- 63,74 ----
     Uint_15  : constant Uint;
     Uint_16  : constant Uint;
     Uint_24  : constant Uint;
+    Uint_31  : constant Uint;
     Uint_32  : constant Uint;
     Uint_63  : constant Uint;
     Uint_64  : constant Uint;
     Uint_80  : constant Uint;
+    Uint_127 : constant Uint;
     Uint_128 : constant Uint;
  
     Uint_Minus_1   : constant Uint;
*************** package Uintp is
*** 85,93 ****
--- 81,93 ----
     Uint_Minus_8   : constant Uint;
     Uint_Minus_9   : constant Uint;
     Uint_Minus_12  : constant Uint;
+    Uint_Minus_18  : constant Uint;
+    Uint_Minus_31  : constant Uint;
     Uint_Minus_36  : constant Uint;
     Uint_Minus_63  : constant Uint;
+    Uint_Minus_76  : constant Uint;
     Uint_Minus_80  : constant Uint;
+    Uint_Minus_127 : constant Uint;
     Uint_Minus_128 : constant Uint;
  
     type UI_Vector is array (Pos range <>) of Int;
*************** package Uintp is
*** 107,126 ****
     -----------------
  
     procedure Initialize;
!    --  Initialize Uint tables. Note that Initialize must not be called if
!    --  Tree_Read is used. Note also that there is no lock routine in this
     --  unit, these are among the few tables that can be expanded during
     --  gigi processing.
  
-    procedure Tree_Read;
-    --  Initializes internal tables from current tree file using the relevant
-    --  Table.Tree_Read routines. Note that Initialize should not be called if
-    --  Tree_Read is used. Tree_Read includes all necessary initialization.
- 
-    procedure Tree_Write;
-    --  Writes out internal tables to current tree file using the relevant
-    --  Table.Tree_Write routines.
- 
     function UI_Abs (Right : Uint) return Uint;
     pragma Inline (UI_Abs);
     --  Returns abs function of universal integer
--- 107,116 ----
     -----------------
  
     procedure Initialize;
!    --  Initialize Uint tables. Note also that there is no lock routine in this
     --  unit, these are among the few tables that can be expanded during
     --  gigi processing.
  
     function UI_Abs (Right : Uint) return Uint;
     pragma Inline (UI_Abs);
     --  Returns abs function of universal integer
*************** package Uintp is
*** 296,302 ****
     --  or decimal format. Auto, the default setting, lets the routine make a
     --  decision based on the value.
  
!    UI_Image_Max    : constant := 48; -- Enough for a 128-bit number
     UI_Image_Buffer : String (1 .. UI_Image_Max);
     UI_Image_Length : Natural;
     --  Buffer used for UI_Image as described below
--- 286,292 ----
     --  or decimal format. Auto, the default setting, lets the routine make a
     --  decision based on the value.
  
!    UI_Image_Max    : constant := 1024;
     UI_Image_Buffer : String (1 .. UI_Image_Max);
     UI_Image_Length : Natural;
     --  Buffer used for UI_Image as described below
*************** private
*** 485,494 ****
--- 475,486 ----
     Uint_15  : constant Uint := Uint (Uint_Direct_Bias + 15);
     Uint_16  : constant Uint := Uint (Uint_Direct_Bias + 16);
     Uint_24  : constant Uint := Uint (Uint_Direct_Bias + 24);
+    Uint_31  : constant Uint := Uint (Uint_Direct_Bias + 31);
     Uint_32  : constant Uint := Uint (Uint_Direct_Bias + 32);
     Uint_63  : constant Uint := Uint (Uint_Direct_Bias + 63);
     Uint_64  : constant Uint := Uint (Uint_Direct_Bias + 64);
     Uint_80  : constant Uint := Uint (Uint_Direct_Bias + 80);
+    Uint_127 : constant Uint := Uint (Uint_Direct_Bias + 127);
     Uint_128 : constant Uint := Uint (Uint_Direct_Bias + 128);
  
     Uint_Minus_1   : constant Uint := Uint (Uint_Direct_Bias - 1);
*************** private
*** 501,509 ****
--- 493,505 ----
     Uint_Minus_8   : constant Uint := Uint (Uint_Direct_Bias - 8);
     Uint_Minus_9   : constant Uint := Uint (Uint_Direct_Bias - 9);
     Uint_Minus_12  : constant Uint := Uint (Uint_Direct_Bias - 12);
+    Uint_Minus_18  : constant Uint := Uint (Uint_Direct_Bias - 18);
+    Uint_Minus_31  : constant Uint := Uint (Uint_Direct_Bias - 31);
     Uint_Minus_36  : constant Uint := Uint (Uint_Direct_Bias - 36);
     Uint_Minus_63  : constant Uint := Uint (Uint_Direct_Bias - 63);
+    Uint_Minus_76  : constant Uint := Uint (Uint_Direct_Bias - 76);
     Uint_Minus_80  : constant Uint := Uint (Uint_Direct_Bias - 80);
+    Uint_Minus_127 : constant Uint := Uint (Uint_Direct_Bias - 127);
     Uint_Minus_128 : constant Uint := Uint (Uint_Direct_Bias - 128);
  
     Uint_Max_Simple_Mul : constant := Uint_Direct_Bias + 2**15;
diff -Nrcpad gcc-10.3.0/gcc/ada/uintp.h gcc-11.1.0/gcc/ada/uintp.h
*** gcc-10.3.0/gcc/ada/uintp.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/uintp.h	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2019, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2020, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/uname.adb gcc-11.1.0/gcc/ada/uname.adb
*** gcc-10.3.0/gcc/ada/uname.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/uname.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/uname.ads gcc-11.1.0/gcc/ada/uname.ads
*** gcc-10.3.0/gcc/ada/uname.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/uname.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
diff -Nrcpad gcc-10.3.0/gcc/ada/urealp.adb gcc-11.1.0/gcc/ada/urealp.adb
*** gcc-10.3.0/gcc/ada/urealp.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/urealp.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
***************
*** 30,38 ****
  ------------------------------------------------------------------------------
  
  with Alloc;
! with Output;  use Output;
  with Table;
- with Tree_IO; use Tree_IO;
  
  package body Urealp is
  
--- 24,31 ----
  ------------------------------------------------------------------------------
  
  with Alloc;
! with Output; use Output;
  with Table;
  
  package body Urealp is
  
*************** package body Urealp is
*** 57,63 ****
  
     --  The following representation clause ensures that the above record
     --  has no holes. We do this so that when instances of this record are
!    --  written by Tree_Gen, we do not write uninitialized values to the file.
  
     for Ureal_Entry use record
        Num      at  0 range 0 .. 31;
--- 50,56 ----
  
     --  The following representation clause ensures that the above record
     --  has no holes. We do this so that when instances of this record are
!    --  written, we do not write uninitialized values to the file.
  
     for Ureal_Entry use record
        Num      at  0 range 0 .. 31;
*************** package body Urealp is
*** 80,103 ****
     --  The following universal reals are the values returned by the constant
     --  functions. They are initialized by the initialization procedure.
  
!    UR_0       : Ureal;
!    UR_M_0     : Ureal;
!    UR_Tenth   : Ureal;
!    UR_Half    : Ureal;
!    UR_1       : Ureal;
!    UR_2       : Ureal;
!    UR_10      : Ureal;
!    UR_10_36   : Ureal;
!    UR_M_10_36 : Ureal;
!    UR_100     : Ureal;
!    UR_2_128   : Ureal;
!    UR_2_80    : Ureal;
!    UR_2_M_128 : Ureal;
!    UR_2_M_80  : Ureal;
! 
!    Num_Ureal_Constants : constant := 10;
!    --  This is used for an assertion check in Tree_Read and Tree_Write to
!    --  help remember to add values to these routines when we add to the list.
  
     Normalized_Real : Ureal := No_Ureal;
     --  Used to memoize Norm_Num and Norm_Den, if either of these functions
--- 73,100 ----
     --  The following universal reals are the values returned by the constant
     --  functions. They are initialized by the initialization procedure.
  
!    UR_0         : Ureal;
!    UR_M_0       : Ureal;
!    UR_Tenth     : Ureal;
!    UR_Half      : Ureal;
!    UR_1         : Ureal;
!    UR_2         : Ureal;
!    UR_10        : Ureal;
!    UR_2_10_18   : Ureal;
!    UR_9_10_36   : Ureal;
!    UR_10_76     : Ureal;
!    UR_M_2_10_18 : Ureal;
!    UR_M_9_10_36 : Ureal;
!    UR_M_10_76   : Ureal;
!    UR_100       : Ureal;
!    UR_2_127     : Ureal;
!    UR_2_128     : Ureal;
!    UR_2_31      : Ureal;
!    UR_2_63      : Ureal;
!    UR_2_80      : Ureal;
!    UR_2_M_127   : Ureal;
!    UR_2_M_128   : Ureal;
!    UR_2_M_80    : Ureal;
  
     Normalized_Real : Ureal := No_Ureal;
     --  Used to memoize Norm_Num and Norm_Den, if either of these functions
*************** package body Urealp is
*** 114,126 ****
  
     function Decimal_Exponent_Hi (V : Ureal) return Int;
     --  Returns an estimate of the exponent of Val represented as a normalized
!    --  decimal number (non-zero digit before decimal point), The estimate is
     --  either correct, or high, but never low. The accuracy of the estimate
     --  affects only the efficiency of the comparison routines.
  
     function Decimal_Exponent_Lo (V : Ureal) return Int;
     --  Returns an estimate of the exponent of Val represented as a normalized
!    --  decimal number (non-zero digit before decimal point), The estimate is
     --  either correct, or low, but never high. The accuracy of the estimate
     --  affects only the efficiency of the comparison routines.
  
--- 111,123 ----
  
     function Decimal_Exponent_Hi (V : Ureal) return Int;
     --  Returns an estimate of the exponent of Val represented as a normalized
!    --  decimal number (non-zero digit before decimal point), the estimate is
     --  either correct, or high, but never low. The accuracy of the estimate
     --  affects only the efficiency of the comparison routines.
  
     function Decimal_Exponent_Lo (V : Ureal) return Int;
     --  Returns an estimate of the exponent of Val represented as a normalized
!    --  decimal number (non-zero digit before decimal point), the estimate is
     --  either correct, or low, but never high. The accuracy of the estimate
     --  affects only the efficiency of the comparison routines.
  
*************** package body Urealp is
*** 299,318 ****
     procedure Initialize is
     begin
        Ureals.Init;
!       UR_0       := UR_From_Components (Uint_0, Uint_1,         0, False);
!       UR_M_0     := UR_From_Components (Uint_0, Uint_1,         0, True);
!       UR_Half    := UR_From_Components (Uint_1, Uint_1,         2, False);
!       UR_Tenth   := UR_From_Components (Uint_1, Uint_1,        10, False);
!       UR_1       := UR_From_Components (Uint_1, Uint_1,         0, False);
!       UR_2       := UR_From_Components (Uint_1, Uint_Minus_1,   2, False);
!       UR_10      := UR_From_Components (Uint_1, Uint_Minus_1,  10, False);
!       UR_10_36   := UR_From_Components (Uint_1, Uint_Minus_36, 10, False);
!       UR_M_10_36 := UR_From_Components (Uint_1, Uint_Minus_36, 10, True);
!       UR_100     := UR_From_Components (Uint_1, Uint_Minus_2,  10, False);
!       UR_2_128   := UR_From_Components (Uint_1, Uint_Minus_128, 2, False);
!       UR_2_M_128 := UR_From_Components (Uint_1, Uint_128,       2, False);
!       UR_2_80    := UR_From_Components (Uint_1, Uint_Minus_80,  2, False);
!       UR_2_M_80  := UR_From_Components (Uint_1, Uint_80,        2, False);
     end Initialize;
  
     ----------------
--- 296,323 ----
     procedure Initialize is
     begin
        Ureals.Init;
!       UR_0         := UR_From_Components (Uint_0, Uint_1,         0, False);
!       UR_M_0       := UR_From_Components (Uint_0, Uint_1,         0, True);
!       UR_Half      := UR_From_Components (Uint_1, Uint_1,         2, False);
!       UR_Tenth     := UR_From_Components (Uint_1, Uint_1,        10, False);
!       UR_1         := UR_From_Components (Uint_1, Uint_1,         0, False);
!       UR_2         := UR_From_Components (Uint_1, Uint_Minus_1,   2, False);
!       UR_10        := UR_From_Components (Uint_1, Uint_Minus_1,  10, False);
!       UR_2_10_18   := UR_From_Components (Uint_2, Uint_Minus_18, 10, False);
!       UR_9_10_36   := UR_From_Components (Uint_9, Uint_Minus_36, 10, False);
!       UR_10_76     := UR_From_Components (Uint_1, Uint_Minus_76, 10, False);
!       UR_M_2_10_18 := UR_From_Components (Uint_2, Uint_Minus_18, 10, True);
!       UR_M_9_10_36 := UR_From_Components (Uint_9, Uint_Minus_36, 10, True);
!       UR_M_10_76   := UR_From_Components (Uint_1, Uint_Minus_76, 10, True);
!       UR_100       := UR_From_Components (Uint_1, Uint_Minus_2,  10, False);
!       UR_2_127     := UR_From_Components (Uint_1, Uint_Minus_127, 2, False);
!       UR_2_M_127   := UR_From_Components (Uint_1, Uint_127,       2, False);
!       UR_2_128     := UR_From_Components (Uint_1, Uint_Minus_128, 2, False);
!       UR_2_M_128   := UR_From_Components (Uint_1, Uint_128,       2, False);
!       UR_2_31      := UR_From_Components (Uint_1, Uint_Minus_31,  2, False);
!       UR_2_63      := UR_From_Components (Uint_1, Uint_Minus_63,  2, False);
!       UR_2_80      := UR_From_Components (Uint_1, Uint_Minus_80,  2, False);
!       UR_2_M_80    := UR_From_Components (Uint_1, Uint_80,        2, False);
     end Initialize;
  
     ----------------
*************** package body Urealp is
*** 487,538 ****
        return Store_Ureal (Normalize (Val));
     end Store_Ureal_Normalized;
  
-    ---------------
-    -- Tree_Read --
-    ---------------
- 
-    procedure Tree_Read is
-    begin
-       pragma Assert (Num_Ureal_Constants = 10);
- 
-       Ureals.Tree_Read;
-       Tree_Read_Int (Int (UR_0));
-       Tree_Read_Int (Int (UR_M_0));
-       Tree_Read_Int (Int (UR_Tenth));
-       Tree_Read_Int (Int (UR_Half));
-       Tree_Read_Int (Int (UR_1));
-       Tree_Read_Int (Int (UR_2));
-       Tree_Read_Int (Int (UR_10));
-       Tree_Read_Int (Int (UR_100));
-       Tree_Read_Int (Int (UR_2_128));
-       Tree_Read_Int (Int (UR_2_M_128));
- 
-       --  Clear the normalization cache
- 
-       Normalized_Real := No_Ureal;
-    end Tree_Read;
- 
-    ----------------
-    -- Tree_Write --
-    ----------------
- 
-    procedure Tree_Write is
-    begin
-       pragma Assert (Num_Ureal_Constants = 10);
- 
-       Ureals.Tree_Write;
-       Tree_Write_Int (Int (UR_0));
-       Tree_Write_Int (Int (UR_M_0));
-       Tree_Write_Int (Int (UR_Tenth));
-       Tree_Write_Int (Int (UR_Half));
-       Tree_Write_Int (Int (UR_1));
-       Tree_Write_Int (Int (UR_2));
-       Tree_Write_Int (Int (UR_10));
-       Tree_Write_Int (Int (UR_100));
-       Tree_Write_Int (Int (UR_2_128));
-       Tree_Write_Int (Int (UR_2_M_128));
-    end Tree_Write;
- 
     ------------
     -- UR_Abs --
     ------------
--- 492,497 ----
*************** package body Urealp is
*** 568,573 ****
--- 527,535 ----
        Num  : Uint;
  
     begin
+       pragma Annotate (CodePeer, Modified, Lval);
+       pragma Annotate (CodePeer, Modified, Rval);
+ 
        --  Note, in the temporary Ureal_Entry values used in this procedure,
        --  we store the sign as the sign of the numerator (i.e. xxx.Num may
        --  be negative, even though in stored entries this can never be so)
*************** package body Urealp is
*** 685,690 ****
--- 647,654 ----
        Rneg : constant Boolean     := Rval.Negative xor Lval.Negative;
  
     begin
+       pragma Annotate (CodePeer, Modified, Lval);
+       pragma Annotate (CodePeer, Modified, Rval);
        pragma Assert (Rval.Num /= Uint_0);
  
        if Lval.Rbase = 0 then
*************** package body Urealp is
*** 1460,1473 ****
              UI_Write (Int (UI_Image_Length - 1) - Val.Den, Decimal);
           end if;
  
-       --  Constants in a base other than 10 can still be easily written in
-       --  normal Ada literal style if the numerator is one.
- 
-       elsif Val.Rbase /= 0 and then Val.Num = 1 then
-          Write_Int (Val.Rbase);
-          Write_Str ("#1.0#E");
-          UI_Write (-Val.Den);
- 
        --  Other constants with a base other than 10 are written using one of
        --  the following forms, depending on the sign of the number and the
        --  sign of the exponent (= minus denominator value). See that we are
--- 1424,1429 ----
*************** package body Urealp is
*** 1577,1590 ****
        return UR_100;
     end Ureal_100;
  
     -----------------
!    -- Ureal_10_36 --
     -----------------
  
!    function Ureal_10_36 return Ureal is
     begin
!       return UR_10_36;
!    end Ureal_10_36;
  
     ----------------
     -- Ureal_2_80 --
--- 1533,1582 ----
        return UR_100;
     end Ureal_100;
  
+    -------------------
+    -- Ureal_2_10_18 --
+    -------------------
+ 
+    function Ureal_2_10_18 return Ureal is
+    begin
+       return UR_2_10_18;
+    end Ureal_2_10_18;
+ 
+    -------------------
+    -- Ureal_9_10_36 --
+    -------------------
+ 
+    function Ureal_9_10_36 return Ureal is
+    begin
+       return UR_9_10_36;
+    end Ureal_9_10_36;
+ 
     -----------------
!    -- Ureal_10_76 --
     -----------------
  
!    function Ureal_10_76 return Ureal is
     begin
!       return UR_10_76;
!    end Ureal_10_76;
! 
!    ----------------
!    -- Ureal_2_31 --
!    ----------------
! 
!    function Ureal_2_31 return Ureal is
!    begin
!       return UR_2_31;
!    end Ureal_2_31;
! 
!    ----------------
!    -- Ureal_2_63 --
!    ----------------
! 
!    function Ureal_2_63 return Ureal is
!    begin
!       return UR_2_63;
!    end Ureal_2_63;
  
     ----------------
     -- Ureal_2_80 --
*************** package body Urealp is
*** 1596,1601 ****
--- 1588,1602 ----
     end Ureal_2_80;
  
     -----------------
+    -- Ureal_2_127 --
+    -----------------
+ 
+    function Ureal_2_127 return Ureal is
+    begin
+       return UR_2_127;
+    end Ureal_2_127;
+ 
+    -----------------
     -- Ureal_2_128 --
     -----------------
  
*************** package body Urealp is
*** 1614,1619 ****
--- 1615,1629 ----
     end Ureal_2_M_80;
  
     -------------------
+    -- Ureal_2_M_127 --
+    -------------------
+ 
+    function Ureal_2_M_127 return Ureal is
+    begin
+       return UR_2_M_127;
+    end Ureal_2_M_127;
+ 
+    -------------------
     -- Ureal_2_M_128 --
     -------------------
  
*************** package body Urealp is
*** 1640,1653 ****
        return UR_M_0;
     end Ureal_M_0;
  
     -------------------
!    -- Ureal_M_10_36 --
     -------------------
  
!    function Ureal_M_10_36 return Ureal is
     begin
!       return UR_M_10_36;
!    end Ureal_M_10_36;
  
     -----------------
     -- Ureal_Tenth --
--- 1650,1681 ----
        return UR_M_0;
     end Ureal_M_0;
  
+    ---------------------
+    -- Ureal_M_2_10_18 --
+    ---------------------
+ 
+    function Ureal_M_2_10_18 return Ureal is
+    begin
+       return UR_M_2_10_18;
+    end Ureal_M_2_10_18;
+ 
+    ---------------------
+    -- Ureal_M_9_10_36 --
+    ---------------------
+ 
+    function Ureal_M_9_10_36 return Ureal is
+    begin
+       return UR_M_9_10_36;
+    end Ureal_M_9_10_36;
+ 
     -------------------
!    -- Ureal_M_10_76 --
     -------------------
  
!    function Ureal_M_10_76 return Ureal is
     begin
!       return UR_M_10_76;
!    end Ureal_M_10_76;
  
     -----------------
     -- Ureal_Tenth --
diff -Nrcpad gcc-10.3.0/gcc/ada/urealp.ads gcc-11.1.0/gcc/ada/urealp.ads
*** gcc-10.3.0/gcc/ada/urealp.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/urealp.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Urealp is
*** 112,154 ****
     function Ureal_100 return Ureal;
     --  Returns value 100.0
  
     function Ureal_2_80 return Ureal;
     --  Returns value 2.0 ** 80
  
     function Ureal_2_M_80 return Ureal;
     --  Returns value 2.0 ** (-80)
  
     function Ureal_2_128 return Ureal;
     --  Returns value 2.0 ** 128
  
     function Ureal_2_M_128 return Ureal;
     --  Returns value 2.0 ** (-128)
  
!    function Ureal_10_36 return Ureal;
!    --  Returns value 10.0 ** 36
  
!    function Ureal_M_10_36 return Ureal;
!    --  Returns value -10.0 ** 36
  
     -----------------
     -- Subprograms --
     -----------------
  
     procedure Initialize;
!    --  Initialize Ureal tables. Note that Initialize must not be called if
!    --  Tree_Read is used. Note also that there is no Lock routine in this
     --  unit. These tables are among the few tables that can be expanded
     --  during Gigi processing.
  
-    procedure Tree_Read;
-    --  Initializes internal tables from current tree file using the relevant
-    --  Table.Tree_Read routines. Note that Initialize should not be called if
-    --  Tree_Read is used. Tree_Read includes all necessary initialization.
- 
-    procedure Tree_Write;
-    --  Writes out internal tables to current tree file using the relevant
-    --  Table.Tree_Write routines.
- 
     function Rbase (Real : Ureal) return Nat;
     --  Return the base of the universal real
  
--- 106,162 ----
     function Ureal_100 return Ureal;
     --  Returns value 100.0
  
+    function Ureal_2_31 return Ureal;
+    --  Returns value 2.0 ** 31
+ 
+    function Ureal_2_63 return Ureal;
+    --  Returns value 2.0 ** 63
+ 
     function Ureal_2_80 return Ureal;
     --  Returns value 2.0 ** 80
  
     function Ureal_2_M_80 return Ureal;
     --  Returns value 2.0 ** (-80)
  
+    function Ureal_2_127 return Ureal;
+    --  Returns value 2.0 ** 127
+ 
+    function Ureal_2_M_127 return Ureal;
+    --  Returns value 2.0 ** (-127)
+ 
     function Ureal_2_128 return Ureal;
     --  Returns value 2.0 ** 128
  
     function Ureal_2_M_128 return Ureal;
     --  Returns value 2.0 ** (-128)
  
!    function Ureal_2_10_18 return Ureal;
!    --  Returns value 2.0 * 10.0 ** 18
  
!    function Ureal_M_2_10_18 return Ureal;
!    --  Returns value -2.0 * 10.0 ** 18
! 
!    function Ureal_9_10_36 return Ureal;
!    --  Returns value 9.0 * 10.0 ** 36
! 
!    function Ureal_M_9_10_36 return Ureal;
!    --  Returns value -9.0 * 10.0 ** 36
! 
!    function Ureal_10_76 return Ureal;
!    --  Returns value 10.0 ** 76
! 
!    function Ureal_M_10_76 return Ureal;
!    --  Returns value -10.0 ** 76
  
     -----------------
     -- Subprograms --
     -----------------
  
     procedure Initialize;
!    --  Initialize Ureal tables. Note that there is no Lock routine in this
     --  unit. These tables are among the few tables that can be expanded
     --  during Gigi processing.
  
     function Rbase (Real : Ureal) return Nat;
     --  Return the base of the universal real
  
diff -Nrcpad gcc-10.3.0/gcc/ada/urealp.h gcc-11.1.0/gcc/ada/urealp.h
*** gcc-10.3.0/gcc/ada/urealp.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/urealp.h	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2019, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2020, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-10.3.0/gcc/ada/usage.adb gcc-11.1.0/gcc/ada/usage.adb
*** gcc-10.3.0/gcc/ada/usage.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/usage.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** begin
*** 378,388 ****
     Write_Switch_Char ("p");
     Write_Line ("Suppress all checks");
  
-    --  Line for -gnatP switch
- 
-    Write_Switch_Char ("P");
-    Write_Line ("Generate periodic calls to System.Polling.Poll");
- 
     --  Line for -gnatq switch
  
     Write_Switch_Char ("q");
--- 378,383 ----
*************** begin
*** 418,428 ****
     Write_Switch_Char ("S");
     Write_Line ("Print listing of package Standard");
  
-    --  Line for -gnatt switch
- 
-    Write_Switch_Char ("t");
-    Write_Line ("Tree output file to be generated");
- 
     --  Line for -gnatTnn switch
  
     Write_Switch_Char ("Tnn");
--- 413,418 ----
*************** begin
*** 495,500 ****
--- 485,494 ----
     Write_Line ("        C*   turn off warnings for constant conditional");
     Write_Line ("        .c+  turn on warnings for unrepped components");
     Write_Line ("        .C*  turn off warnings for unrepped components");
+    Write_Line ("        _c*  turn on warnings for unknown " &
+                                                  "Compile_Time_Warning");
+    Write_Line ("        _C   turn off warnings for unknown " &
+                                                  "Compile_Time_Warning");
     Write_Line ("        d    turn on warnings for implicit dereference");
     Write_Line ("        D*   turn off warnings for implicit dereference");
     Write_Line ("        .d   turn on tagging of warnings with -gnatw switch");
*************** begin
*** 571,576 ****
--- 565,572 ----
     Write_Line ("        R*   turn off warnings for redundant construct");
     Write_Line ("        .r+  turn on warnings for object renaming function");
     Write_Line ("        .R*  turn off warnings for object renaming function");
+    Write_Line ("        _r   turn on warnings for components out of order");
+    Write_Line ("        _R   turn off warnings for components out of order");
     Write_Line ("        s    suppress all info/warnings");
     Write_Line ("        .s   turn on warnings for overridden size clause");
     Write_Line ("        .S*  turn off warnings for overridden size clause");
diff -Nrcpad gcc-10.3.0/gcc/ada/usage.ads gcc-11.1.0/gcc/ada/usage.ads
*** gcc-10.3.0/gcc/ada/usage.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/usage.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/validsw.adb gcc-11.1.0/gcc/ada/validsw.adb
*** gcc-10.3.0/gcc/ada/validsw.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/validsw.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Validsw is
*** 47,102 ****
        Validity_Check_Tests          := False;
     end Reset_Validity_Check_Options;
  
-    ---------------------------------
-    -- Save_Validity_Check_Options --
-    ---------------------------------
- 
-    procedure Save_Validity_Check_Options
-      (Options : out Validity_Check_Options)
-    is
-       P : Natural := 0;
- 
-       procedure Add (C : Character; S : Boolean);
-       --  Add given character C to string if switch S is true
- 
-       procedure Add (C : Character; S : Boolean) is
-       begin
-          if S then
-             P := P + 1;
-             Options (P) := C;
-          end if;
-       end Add;
- 
-    --  Start of processing for Save_Validity_Check_Options
- 
-    begin
-       for K in Options'Range loop
-          Options (K) := ' ';
-       end loop;
- 
-       Add ('e', Validity_Check_Components);
-       Add ('c', Validity_Check_Copies);
-       Add ('d', Validity_Check_Default);
-       Add ('f', Validity_Check_Floating_Point);
-       Add ('i', Validity_Check_In_Params);
-       Add ('m', Validity_Check_In_Out_Params);
-       Add ('o', Validity_Check_Operands);
-       Add ('p', Validity_Check_Parameters);
-       Add ('r', Validity_Check_Returns);
-       Add ('s', Validity_Check_Subscripts);
-       Add ('t', Validity_Check_Tests);
-    end Save_Validity_Check_Options;
- 
-    ----------------------------------------
-    -- Set_Default_Validity_Check_Options --
-    ----------------------------------------
- 
-    procedure Set_Default_Validity_Check_Options is
-    begin
-       Reset_Validity_Check_Options;
-       Set_Validity_Check_Options ("d");
-    end Set_Default_Validity_Check_Options;
- 
     --------------------------------
     -- Set_Validity_Check_Options --
     --------------------------------
--- 47,52 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/validsw.ads gcc-11.1.0/gcc/ada/validsw.ads
*** gcc-10.3.0/gcc/ada/validsw.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/validsw.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Validsw is
*** 126,135 ****
     -- Subprograms --
     -----------------
  
-    procedure Set_Default_Validity_Check_Options;
-    --  This procedure is called to set the default validity checking options
-    --  that apply if no Validity_Check switches or pragma is given.
- 
     procedure Set_Validity_Check_Options
       (Options  : String;
        OK       : out Boolean;
--- 126,131 ----
*************** package Validsw is
*** 146,153 ****
     procedure Set_Validity_Check_Options (Options : String);
     --  Like the above procedure, except that the call is simply ignored if
     --  there are any error conditions, this is for example appropriate for
!    --  calls where the string is known to be valid, e.g. because it was
!    --  obtained by Save_Validity_Check_Options.
  
     procedure Reset_Validity_Check_Options;
     --  Sets all validity check options to off
--- 142,148 ----
     procedure Set_Validity_Check_Options (Options : String);
     --  Like the above procedure, except that the call is simply ignored if
     --  there are any error conditions, this is for example appropriate for
!    --  calls where the string is known to be valid.
  
     procedure Reset_Validity_Check_Options;
     --  Sets all validity check options to off
*************** package Validsw is
*** 155,164 ****
     subtype Validity_Check_Options is String (1 .. 16);
     --  Long enough string to hold all options from Save call below
  
-    procedure Save_Validity_Check_Options
-      (Options : out Validity_Check_Options);
-    --  Sets Options to represent current selection of options. This
-    --  set can be restored by first calling Reset_Validity_Check_Options,
-    --  and then calling Set_Validity_Check_Options with the Options string.
- 
  end Validsw;
--- 150,153 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/vast.adb gcc-11.1.0/gcc/ada/vast.adb
*** gcc-10.3.0/gcc/ada/vast.adb	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/vast.adb	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,40 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                                 V A S T                                  --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --             Copyright (C) 2020, Free Software Foundation, Inc.           --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+ -- for  more details.  You should have  received  a copy of the GNU General --
+ -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+ -- http://www.gnu.org/licenses for a complete copy of the license.          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Dummy implementation
+ 
+ package body VAST is
+ 
+    ----------------
+    -- Check_Tree --
+    ----------------
+ 
+    procedure Check_Tree (GNAT_Root : Node_Id) is
+       pragma Unreferenced (GNAT_Root);
+    begin
+       null;
+    end Check_Tree;
+ 
+ end VAST;
diff -Nrcpad gcc-10.3.0/gcc/ada/vast.ads gcc-11.1.0/gcc/ada/vast.ads
*** gcc-10.3.0/gcc/ada/vast.ads	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/vast.ads	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,36 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                                 V A S T                                  --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --             Copyright (C) 2020, Free Software Foundation, Inc.           --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+ -- for  more details.  You should have  received  a copy of the GNU General --
+ -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+ -- http://www.gnu.org/licenses for a complete copy of the license.          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package is the entry point for VAST: Verifier for the Ada Semantic
+ --  Tree.
+ 
+ with Types; use Types;
+ 
+ package VAST is
+ 
+    procedure Check_Tree (GNAT_Root : Node_Id);
+    --  Check the validity of the given Root tree
+ 
+ end VAST;
diff -Nrcpad gcc-10.3.0/gcc/ada/vxworks7-cert-rtp-link.spec gcc-11.1.0/gcc/ada/vxworks7-cert-rtp-link.spec
*** gcc-10.3.0/gcc/ada/vxworks7-cert-rtp-link.spec	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/ada/vxworks7-cert-rtp-link.spec	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,9 ----
+ *self_spec:
+ + %{!nostdlib:-nodefaultlibs -nostartfiles}
+ 
+ *link:
+ + %{!nostdlib:%{mrtp:%{!shared: \
+      -l:certRtp.o \
+      -L%:getenv(VSB_DIR /usr/lib/common/objcert) \
+      -T%:getenv(VSB_DIR /usr/ldscripts/rtp.ld) \
+    }}}
diff -Nrcpad gcc-10.3.0/gcc/ada/warnsw.adb gcc-11.1.0/gcc/ada/warnsw.adb
*** gcc-10.3.0/gcc/ada/warnsw.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/warnsw.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/warnsw.ads gcc-11.1.0/gcc/ada/warnsw.ads
*** gcc-10.3.0/gcc/ada/warnsw.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/warnsw.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Warnsw is
*** 49,56 ****
     --  extensions.
  
     Warn_On_Unknown_Compile_Time_Warning : Boolean := True;
!    --  Warn on a pragma Compile_Time_Warning or Compile_Time_Error whose
!    --  condition has a value that is not known at compile time.
  
     Warn_On_Overridden_Size : Boolean := False;
     --  Warn when explicit record component clause or array component_size
--- 49,56 ----
     --  extensions.
  
     Warn_On_Unknown_Compile_Time_Warning : Boolean := True;
!    --  Warn on a pragma Compile_Time_Warning whose condition has a value that
!    --  is not known at compile time.
  
     Warn_On_Overridden_Size : Boolean := False;
     --  Warn when explicit record component clause or array component_size
diff -Nrcpad gcc-10.3.0/gcc/ada/widechar.adb gcc-11.1.0/gcc/ada/widechar.adb
*** gcc-10.3.0/gcc/ada/widechar.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/widechar.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package body Widechar is
*** 203,209 ****
     --  Start of processing for Skip_Wide
  
     begin
!       Discard := WC_Skip (Skip_Char, Wide_Character_Encoding_Method);
        Wide_Char_Byte_Count := Wide_Char_Byte_Count + Nat (P - P_Init - 1);
     end Skip_Wide;
  
--- 197,212 ----
     --  Start of processing for Skip_Wide
  
     begin
!       --  Capture invalid wide characters errors since we are going to discard
!       --  the result anyway. We just want to move past it.
! 
!       begin
!          Discard := WC_Skip (Skip_Char, Wide_Character_Encoding_Method);
!       exception
!          when Constraint_Error =>
!             null;
!       end;
! 
        Wide_Char_Byte_Count := Wide_Char_Byte_Count + Nat (P - P_Init - 1);
     end Skip_Wide;
  
*************** package body Widechar is
*** 235,241 ****
     --  Start of processing for Skip_Wide
  
     begin
!       Discard := WC_Skip (Skip_Char, Wide_Character_Encoding_Method);
        Wide_Char_Byte_Count := Wide_Char_Byte_Count + Nat (P - P_Init - 1);
     end Skip_Wide;
  
--- 238,253 ----
     --  Start of processing for Skip_Wide
  
     begin
!       --  Capture invalid wide characters errors since we are going to discard
!       --  the result anyway. We just want to move past it.
! 
!       begin
!          Discard := WC_Skip (Skip_Char, Wide_Character_Encoding_Method);
!       exception
!          when Constraint_Error =>
!             null;
!       end;
! 
        Wide_Char_Byte_Count := Wide_Char_Byte_Count + Nat (P - P_Init - 1);
     end Skip_Wide;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/widechar.ads gcc-11.1.0/gcc/ada/widechar.ads
*** gcc-10.3.0/gcc/ada/widechar.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/widechar.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,28 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
! --                                                                          --
! -- As a special exception under Section 7 of GPL version 3, you are granted --
! -- additional permissions described in the GCC Runtime Library Exception,   --
! -- version 3.1, as published by the Free Software Foundation.               --
! --                                                                          --
! -- You should have received a copy of the GNU General Public License and    --
! -- a copy of the GCC Runtime Library Exception along with this program;     --
! -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
! -- <http://www.gnu.org/licenses/>.                                          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
--- 6,22 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
  -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
! -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
! -- for  more details.  You should have  received  a copy of the GNU General --
! -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
! -- http://www.gnu.org/licenses for a complete copy of the license.          --
  --                                                                          --
  -- GNAT was originally developed  by the GNAT team at  New York University. --
  -- Extensive contributions were provided by Ada Core Technologies Inc.      --
*************** package Widechar is
*** 81,89 ****
     --  On entry, S (P) points to an ESC character for a wide character escape
     --  sequence or to an upper half character if the encoding method uses the
     --  upper bit, or to a left bracket if the brackets encoding method is in
!    --  use. On exit, P is bumped past the wide character sequence. No error
!    --  checking is done, since this is only used on escape sequences generated
!    --  by Set_Wide, which are known to be correct.
  
     procedure Skip_Wide (S : Source_Buffer_Ptr; P : in out Source_Ptr);
     --  Similar to the above procedure, but operates on a source buffer
--- 75,81 ----
     --  On entry, S (P) points to an ESC character for a wide character escape
     --  sequence or to an upper half character if the encoding method uses the
     --  upper bit, or to a left bracket if the brackets encoding method is in
!    --  use. On exit, P is bumped past the wide character sequence.
  
     procedure Skip_Wide (S : Source_Buffer_Ptr; P : in out Source_Ptr);
     --  Similar to the above procedure, but operates on a source buffer
diff -Nrcpad gcc-10.3.0/gcc/ada/xeinfo.adb gcc-11.1.0/gcc/ada/xeinfo.adb
*** gcc-10.3.0/gcc/ada/xeinfo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/xeinfo.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** procedure XEinfo is
*** 126,135 ****
     Get_Cmnt : constant Pattern := BreakX ('-') * A & "--";
     Get_Expr : constant Pattern := wsp & "return " & Break (';') * Expr;
     Chek_End : constant Pattern := wsp & "end" & BreakX (';') & ';';
     Get_B1   : constant Pattern := BreakX (' ') * A & " in " & Rest * B;
     Get_B2   : constant Pattern := BreakX (' ') * A & " = " & Rest * B;
     Get_B3   : constant Pattern := BreakX (' ') * A & " /= " & Rest * B;
-    Get_B4   : constant Pattern := BreakX (' ') * A & " or else " & Rest * B;
     To_Paren : constant Pattern := wsp * Filler & '(';
     Get_Fml  : constant Pattern := Break (" :") * Formal & wsp & ':' & wsp
                                    & BreakX (" );") * Formaltyp;
--- 126,135 ----
     Get_Cmnt : constant Pattern := BreakX ('-') * A & "--";
     Get_Expr : constant Pattern := wsp & "return " & Break (';') * Expr;
     Chek_End : constant Pattern := wsp & "end" & BreakX (';') & ';';
+    Get_B0   : constant Pattern := BreakX (' ') * A & " or else " & Rest * B;
     Get_B1   : constant Pattern := BreakX (' ') * A & " in " & Rest * B;
     Get_B2   : constant Pattern := BreakX (' ') * A & " = " & Rest * B;
     Get_B3   : constant Pattern := BreakX (' ') * A & " /= " & Rest * B;
     To_Paren : constant Pattern := wsp * Filler & '(';
     Get_Fml  : constant Pattern := Break (" :") * Formal & wsp & ':' & wsp
                                    & BreakX (" );") * Formaltyp;
*************** procedure XEinfo is
*** 164,169 ****
--- 164,172 ----
     procedure Sethead (Line : in out VString; Term : String);
     --  Process function header into C
  
+    procedure Translate_Expr (Expr : in out VString);
+    --  Translate expression from Ada to C
+ 
     -------------
     -- Badfunc --
     -------------
*************** procedure XEinfo is
*** 242,247 ****
--- 245,266 ----
        end if;
     end Sethead;
  
+    --------------------
+    -- Translate_Expr --
+    --------------------
+ 
+    procedure Translate_Expr (Expr : in out VString) is
+       M : Match_Result;
+ 
+    begin
+       Match (Expr, Get_B1, M);
+       Replace (M, "IN (" & A & ", " & B & ')');
+       Match (Expr, Get_B2, M);
+       Replace (M, A & " == " & B);
+       Match (Expr, Get_B3, M);
+       Replace (M, A & " != " & B);
+    end Translate_Expr;
+ 
  --  Start of processing for XEinfo
  
  begin
*************** begin
*** 485,498 ****
              Badfunc;
           end if;
  
!          Match (Expr, Get_B1, M);
!          Replace (M, "IN (" & A & ", " & B & ')');
!          Match (Expr, Get_B2, M);
!          Replace (M, A & " == " & B);
!          Match (Expr, Get_B3, M);
!          Replace (M, A & " != " & B);
!          Match (Expr, Get_B4, M);
!          Replace (M, A & " || " & B);
           Put_Line (Ofile, "");
           Sethead (Fline, "");
           Put_Line (Ofile, C & "   { return " & Expr & "; }");
--- 504,524 ----
              Badfunc;
           end if;
  
!          --  Process expression
! 
!          if Match (Expr, Get_B0, M) then
!             declare
!                Saved_A : VString := A;
!                Saved_B : VString := B;
!             begin
!                Translate_Expr (Saved_A);
!                Translate_Expr (Saved_B);
!                Replace (M, Saved_A & " || " & Saved_B);
!             end;
!          else
!             Translate_Expr (Expr);
!          end if;
! 
           Put_Line (Ofile, "");
           Sethead (Fline, "");
           Put_Line (Ofile, C & "   { return " & Expr & "; }");
diff -Nrcpad gcc-10.3.0/gcc/ada/xnmake.adb gcc-11.1.0/gcc/ada/xnmake.adb
*** gcc-10.3.0/gcc/ada/xnmake.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/xnmake.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/xoscons.adb gcc-11.1.0/gcc/ada/xoscons.adb
*** gcc-10.3.0/gcc/ada/xoscons.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/xoscons.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2008-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2008-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** procedure XOSCons is
*** 494,499 ****
--- 494,502 ----
        Value1 := Get_Value (Slice (Sline, 2));
        Value2 := Get_Value (Slice (Sline, 4));
  
+       pragma Annotate (CodePeer, Modified, Value1);
+       pragma Annotate (CodePeer, Modified, Value2);
+ 
        if Slice (Sline, 3) = ">" then
           Res := Cond and (Value1 > Value2);
  
*************** procedure XOSCons is
*** 619,625 ****
     Current_Line : Integer;
     Current_Info : Integer;
     In_Comment   : Boolean;
!    In_Template  : Boolean;
  
  --  Start of processing for XOSCons
  
--- 622,628 ----
     Current_Line : Integer;
     Current_Info : Integer;
     In_Comment   : Boolean;
!    In_Template  : Boolean := False;
  
  --  Start of processing for XOSCons
  
diff -Nrcpad gcc-10.3.0/gcc/ada/xr_tabls.adb gcc-11.1.0/gcc/ada/xr_tabls.adb
*** gcc-10.3.0/gcc/ada/xr_tabls.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/xr_tabls.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Xr_Tabls is
*** 1015,1026 ****
        Decl         : Declaration_Reference := Entities_HTable.Get_First;
        Arr          : Reference_Array_Access;
        Index        : Natural;
!       End_Index    : Natural;
        Current_File : File_Reference;
        Current_Line : Cst_String_Access;
        Buffer       : GNAT.OS_Lib.String_Access;
        Ref          : Reference;
!       Line         : Natural;
  
     begin
        --  Create a temporary array, where all references will be
--- 1015,1026 ----
        Decl         : Declaration_Reference := Entities_HTable.Get_First;
        Arr          : Reference_Array_Access;
        Index        : Natural;
!       End_Index    : Natural := 0;
        Current_File : File_Reference;
        Current_Line : Cst_String_Access;
        Buffer       : GNAT.OS_Lib.String_Access;
        Ref          : Reference;
!       Line         : Natural := Natural'Last;
  
     begin
        --  Create a temporary array, where all references will be
diff -Nrcpad gcc-10.3.0/gcc/ada/xr_tabls.ads gcc-11.1.0/gcc/ada/xr_tabls.ads
*** gcc-10.3.0/gcc/ada/xr_tabls.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/xr_tabls.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/xref_lib.adb gcc-11.1.0/gcc/ada/xref_lib.adb
*** gcc-10.3.0/gcc/ada/xref_lib.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/xref_lib.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,30 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ pragma Ada_2012;
+ 
  with Osint;
  with Output; use Output;
  with Types;  use Types;
*************** package body Xref_Lib is
*** 767,779 ****
  
        E_Line   : Natural;   --  Line number of current entity
        E_Col    : Natural;   --  Column number of current entity
-       E_Type   : Character; --  Type of current entity
        E_Name   : Positive;  --  Pointer to begin of entity name
        E_Global : Boolean;   --  True iff entity is global
  
        R_Line   : Natural;   --  Line number of current reference
        R_Col    : Natural;   --  Column number of current reference
!       R_Type   : Character; --  Type of current reference
  
        Decl_Ref : Declaration_Reference;
        File_Ref : File_Reference := Current_Xref_File (File);
--- 769,782 ----
  
        E_Line   : Natural;   --  Line number of current entity
        E_Col    : Natural;   --  Column number of current entity
        E_Name   : Positive;  --  Pointer to begin of entity name
        E_Global : Boolean;   --  True iff entity is global
+       E_Type   : Character; --  Type of current entity
  
        R_Line   : Natural;   --  Line number of current reference
        R_Col    : Natural;   --  Column number of current reference
! 
!       R_Type   : Character := ASCII.NUL; --  Type of current reference
  
        Decl_Ref : Declaration_Reference;
        File_Ref : File_Reference := Current_Xref_File (File);
*************** package body Xref_Lib is
*** 876,893 ****
        if Ali (Ptr) > ' ' then
           E_Type := Ali (Ptr);
           Ptr := Ptr + 1;
-       end if;
  
!       --  Ignore some of the entities (labels,...)
  
!       case E_Type is
!          when 'l' | 'L' | 'q' =>
              Parse_EOL (Ali, Ptr, Skip_Continuation_Line => True);
              return;
  
!          when others =>
!             null;
!       end case;
  
        Parse_Number (Ali, Ptr, E_Col);
  
--- 879,897 ----
        if Ali (Ptr) > ' ' then
           E_Type := Ali (Ptr);
           Ptr := Ptr + 1;
  
!          --  Ignore some of the entities (labels,...)
  
!          if E_Type in 'l' | 'L' | 'q' then
              Parse_EOL (Ali, Ptr, Skip_Continuation_Line => True);
              return;
+          end if;
+       else
+          --  Unexpected contents, skip line and return
  
!          Parse_EOL (Ali, Ptr, Skip_Continuation_Line => True);
!          return;
!       end if;
  
        Parse_Number (Ali, Ptr, E_Col);
  
*************** package body Xref_Lib is
*** 966,972 ****
              Parse_Derived_Info : declare
                 P_Line   : Natural;          --  parent entity line
                 P_Column : Natural;          --  parent entity column
!                P_Eun    : Positive;         --  parent entity file number
  
              begin
                 Parse_Number (Ali, Ptr, P_Line);
--- 970,976 ----
              Parse_Derived_Info : declare
                 P_Line   : Natural;          --  parent entity line
                 P_Column : Natural;          --  parent entity column
!                P_Eun    : Natural := 0;     --  parent entity file number
  
              begin
                 Parse_Number (Ali, Ptr, P_Line);
*************** package body Xref_Lib is
*** 1010,1015 ****
--- 1014,1021 ----
                 --  on or if we want to output the type hierarchy
  
                 if Der_Info or else Type_Tree then
+                   pragma Assert (P_Eun /= 0);
+ 
                    declare
                       Symbol : constant String :=
                                  Get_Symbol_Name (P_Eun, P_Line, P_Column);
*************** package body Xref_Lib is
*** 1126,1133 ****
              --    5U14*Foo2 5>20 6b<c,myfoo2>22   # Imported entity
              --    5U14*Foo2 5>20 6i<c,myfoo2>22   # Exported entity
  
!             if (R_Type = 'b' or else R_Type = 'i')
!               and then Ali (Ptr) = '<'
              then
                 while Ptr <= Ali'Last
                   and then Ali (Ptr) /= '>'
--- 1132,1139 ----
              --    5U14*Foo2 5>20 6b<c,myfoo2>22   # Imported entity
              --    5U14*Foo2 5>20 6i<c,myfoo2>22   # Exported entity
  
!             if Ali (Ptr) = '<'
!               and then (R_Type = 'b' or else R_Type = 'i')
              then
                 while Ptr <= Ali'Last
                   and then Ali (Ptr) /= '>'
*************** package body Xref_Lib is
*** 1139,1144 ****
--- 1145,1152 ----
  
              Parse_Number (Ali, Ptr, R_Col);
  
+             pragma Assert (R_Type /= ASCII.NUL);
+ 
              --  Insert the reference or body in the table
  
              Add_Reference
diff -Nrcpad gcc-10.3.0/gcc/ada/xref_lib.ads gcc-11.1.0/gcc/ada/xref_lib.ads
*** gcc-10.3.0/gcc/ada/xref_lib.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/xref_lib.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/xsinfo.adb gcc-11.1.0/gcc/ada/xsinfo.adb
*** gcc-10.3.0/gcc/ada/xsinfo.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/xsinfo.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/xsnamest.adb gcc-11.1.0/gcc/ada/xsnamest.adb
*** gcc-10.3.0/gcc/ada/xsnamest.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/xsnamest.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** procedure XSnamesT is
*** 58,63 ****
--- 58,64 ----
     Line  : VString := Nul;
     Name0 : VString := Nul;
     Name1 : VString := Nul;
+    Name2 : VString := Nul;
     Oval  : VString := Nul;
     Restl : VString := Nul;
  
*************** procedure XSnamesT is
*** 69,74 ****
--- 70,76 ----
     Get_Name : constant Pattern := "Name_" & Rest * Name1;
     Chk_Low  : constant Pattern := Pos (0) & Any (Lower_Set) & Rest & Pos (1);
     Findu    : constant Pattern := Span ('u') * A;
+    Is_Conv  : constant Pattern := "Convention_" & Rest;
  
     Val : Natural;
  
*************** procedure XSnamesT is
*** 98,109 ****
  
     --  Patterns used in the spec file
  
!    Get_Attr : constant Pattern := Span (' ') & "Attribute_"
!                                   & Break (",)") * Name1;
!    Get_Conv : constant Pattern := Span (' ') & "Convention_"
!                                   & Break (",)") * Name1;
!    Get_Prag : constant Pattern := Span (' ') & "Pragma_"
!                                   & Break (",)") * Name1;
  
     type Header_Symbol_Counter is array (Header_Symbol) of Natural;
     Header_Counter : Header_Symbol_Counter := (0, 0, 0, 0, 0);
--- 100,117 ----
  
     --  Patterns used in the spec file
  
!    Get_Attr  : constant Pattern := Span (' ') & "Attribute_"
!                                    & Break (",)") * Name1;
!    Get_Conv  : constant Pattern := Span (' ') & "Convention_"
!                                    & Break (",)") * Name1;
!    Get_Prag  : constant Pattern := Span (' ') & "Pragma_"
!                                    & Break (",)") * Name1;
!    Get_Subt1 : constant Pattern := Span (' ') & "subtype "
!                                    & Break (' ') * Name1
!                                    & " is " & Rest * Name2;
!    Get_Subt2 : constant Pattern := Span (' ') & "range "
!                                    & Break (' ') * Name1
!                                    & " .. " & Break (";") * Name2;
  
     type Header_Symbol_Counter is array (Header_Symbol) of Natural;
     Header_Counter : Header_Symbol_Counter := (0, 0, 0, 0, 0);
*************** procedure XSnamesT is
*** 143,149 ****
  
        if Header_Current_Symbol /= S then
           declare
-             Name2 : VString;
              Pat : constant Pattern := "#define  "
                                         & Header_Prefix (S).all
                                         & Break (' ') * Name2;
--- 151,156 ----
*************** begin
*** 227,232 ****
--- 234,244 ----
              Output_Header_Line (Conv);
           elsif Match (Line, Get_Prag) then
              Output_Header_Line (Prag);
+          elsif Match (Line, Get_Subt1) and then Match (Name2, Is_Conv) then
+             New_Line (OutH);
+             Put_Line (OutH, "SUBTYPE (" & Name1 & ", " & Name2 & ", ");
+          elsif Match (Line, Get_Subt2) and then Match (Name1, Is_Conv) then
+             Put_Line (OutH, "   " & Name1 & ", " & Name2 & ')');
           end if;
        else
  
*************** begin
*** 248,258 ****
                 Replace (M, Translate (A, Xlate_U_Und));
                 Translate (Name0, Lower_Case_Map);
  
!             elsif not Match (Name0, "Op_", "") then
!                Translate (Name0, Lower_Case_Map);
  
!             else
                 Name0 := 'O' & Translate (Name0, Lower_Case_Map);
              end if;
  
              if not Match (Name0, Chk_Low) then
--- 260,273 ----
                 Replace (M, Translate (A, Xlate_U_Und));
                 Translate (Name0, Lower_Case_Map);
  
!             elsif Match (Name0, "UP_", "") then
!                Translate (Name0, Upper_Case_Map);
  
!             elsif Match (Name0, "Op_", "") then
                 Name0 := 'O' & Translate (Name0, Lower_Case_Map);
+ 
+             else
+                Translate (Name0, Lower_Case_Map);
              end if;
  
              if not Match (Name0, Chk_Low) then
diff -Nrcpad gcc-10.3.0/gcc/ada/xtreeprs.adb gcc-11.1.0/gcc/ada/xtreeprs.adb
*** gcc-10.3.0/gcc/ada/xtreeprs.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/xtreeprs.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/xutil.adb gcc-11.1.0/gcc/ada/xutil.adb
*** gcc-10.3.0/gcc/ada/xutil.adb	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/xutil.adb	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/ada/xutil.ads gcc-11.1.0/gcc/ada/xutil.ads
*** gcc-10.3.0/gcc/ada/xutil.ads	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/ada/xutil.ads	Tue Apr 27 10:00:13 2021
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2019, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-10.3.0/gcc/addresses.h gcc-11.1.0/gcc/addresses.h
*** gcc-10.3.0/gcc/addresses.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/addresses.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Inline functions to test validity of reg classes for addressing modes.
!    Copyright (C) 2006-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Inline functions to test validity of reg classes for addressing modes.
!    Copyright (C) 2006-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/adjust-alignment.c gcc-11.1.0/gcc/adjust-alignment.c
*** gcc-10.3.0/gcc/adjust-alignment.c	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/adjust-alignment.c	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,85 ----
+ /* Adjust alignment for local variable.
+    Copyright (C) 2020-2021 Free Software Foundation, Inc.
+    Contributed by Kito Cheng <kito.cheng@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/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "backend.h"
+ #include "target.h"
+ #include "tree.h"
+ #include "tree-pass.h"
+ #include "memmodel.h"
+ #include "tm_p.h"
+ 
+ namespace {
+ 
+ const pass_data pass_data_adjust_alignment =
+ {
+   GIMPLE_PASS, /* type */
+   "adjust_alignment", /* name */
+   OPTGROUP_NONE, /* optinfo_flags */
+   TV_NONE, /* tv_id */
+   0, /* properties_required */
+   0, /* properties_provided */
+   0, /* properties_destroyed */
+   0, /* todo_flags_start */
+   0, /* todo_flags_finish */
+ };
+ 
+ class pass_adjust_alignment : public gimple_opt_pass
+ {
+ public:
+   pass_adjust_alignment (gcc::context *ctxt)
+     : gimple_opt_pass (pass_data_adjust_alignment, ctxt)
+   {}
+ 
+   virtual unsigned int execute (function *);
+ }; // class pass_adjust_alignment
+ 
+ } // anon namespace
+ 
+ /* Entry point to adjust_alignment pass.  */
+ unsigned int
+ pass_adjust_alignment::execute (function *fun)
+ {
+   size_t i;
+   tree var;
+ 
+   FOR_EACH_LOCAL_DECL (fun, i, var)
+     {
+       /* Don't adjust aligment for static local var and hard register var.  */
+       if (is_global_var (var) || DECL_HARD_REGISTER (var))
+ 	continue;
+ 
+       unsigned align = LOCAL_DECL_ALIGNMENT (var);
+ 
+       /* Make sure alignment only increase.  */
+       gcc_assert (align >= DECL_ALIGN (var));
+ 
+       SET_DECL_ALIGN (var, align);
+     }
+   return 0;
+ }
+ 
+ gimple_opt_pass *
+ make_pass_adjust_alignment (gcc::context *ctxt)
+ {
+   return new pass_adjust_alignment (ctxt);
+ }
diff -Nrcpad gcc-10.3.0/gcc/alias.c gcc-11.1.0/gcc/alias.c
*** gcc-10.3.0/gcc/alias.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/alias.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Alias analysis for GNU C
!    Copyright (C) 1997-2020 Free Software Foundation, Inc.
     Contributed by John Carr (jfc@mit.edu).
  
  This file is part of GCC.
--- 1,5 ----
  /* Alias analysis for GNU C
!    Copyright (C) 1997-2021 Free Software Foundation, Inc.
     Contributed by John Carr (jfc@mit.edu).
  
  This file is part of GCC.
*************** static tree decl_for_component_ref (tree
*** 159,165 ****
  static int write_dependence_p (const_rtx,
  			       const_rtx, machine_mode, rtx,
  			       bool, bool, bool);
! static int compare_base_symbol_refs (const_rtx, const_rtx);
  
  static void memory_modified_1 (rtx, const_rtx, void *);
  
--- 159,166 ----
  static int write_dependence_p (const_rtx,
  			       const_rtx, machine_mode, rtx,
  			       bool, bool, bool);
! static int compare_base_symbol_refs (const_rtx, const_rtx,
! 				     HOST_WIDE_INT * = NULL);
  
  static void memory_modified_1 (rtx, const_rtx, void *);
  
*************** get_deref_alias_set (tree t)
*** 737,743 ****
     adjusted to point to the outermost component reference that
     can be used for assigning an alias set.  */
   
! static tree
  reference_alias_ptr_type_1 (tree *t)
  {
    tree inner;
--- 738,744 ----
     adjusted to point to the outermost component reference that
     can be used for assigning an alias set.  */
   
! tree
  reference_alias_ptr_type_1 (tree *t)
  {
    tree inner;
*************** rtx_equal_for_memref_p (const_rtx x, con
*** 1837,1843 ****
        return label_ref_label (x) == label_ref_label (y);
  
      case SYMBOL_REF:
!       return compare_base_symbol_refs (x, y) == 1;
  
      case ENTRY_VALUE:
        /* This is magic, don't go through canonicalization et al.  */
--- 1838,1848 ----
        return label_ref_label (x) == label_ref_label (y);
  
      case SYMBOL_REF:
!       {
! 	HOST_WIDE_INT distance = 0;
! 	return (compare_base_symbol_refs (x, y, &distance) == 1
! 		&& distance == 0);
!       }
  
      case ENTRY_VALUE:
        /* This is magic, don't go through canonicalization et al.  */
*************** compare_base_decls (tree base1, tree bas
*** 2142,2151 ****
  
    /* If we have two register decls with register specification we
       cannot decide unless their assembler names are the same.  */
!   if (DECL_REGISTER (base1)
!       && DECL_REGISTER (base2)
!       && HAS_DECL_ASSEMBLER_NAME_P (base1)
!       && HAS_DECL_ASSEMBLER_NAME_P (base2)
        && DECL_ASSEMBLER_NAME_SET_P (base1)
        && DECL_ASSEMBLER_NAME_SET_P (base2))
      {
--- 2147,2156 ----
  
    /* If we have two register decls with register specification we
       cannot decide unless their assembler names are the same.  */
!   if (VAR_P (base1)
!       && VAR_P (base2)
!       && DECL_HARD_REGISTER (base1)
!       && DECL_HARD_REGISTER (base2)
        && DECL_ASSEMBLER_NAME_SET_P (base1)
        && DECL_ASSEMBLER_NAME_SET_P (base2))
      {
*************** compare_base_decls (tree base1, tree bas
*** 2172,2181 ****
    return ret;
  }
  
! /* Same as compare_base_decls but for SYMBOL_REF.  */
  
  static int
! compare_base_symbol_refs (const_rtx x_base, const_rtx y_base)
  {
    tree x_decl = SYMBOL_REF_DECL (x_base);
    tree y_decl = SYMBOL_REF_DECL (y_base);
--- 2177,2196 ----
    return ret;
  }
  
! /* Compare SYMBOL_REFs X_BASE and Y_BASE.
! 
!    - Return 1 if Y_BASE - X_BASE is constant, adding that constant
!      to *DISTANCE if DISTANCE is nonnull.
! 
!    - Return 0 if no accesses based on X_BASE can alias Y_BASE.
! 
!    - Return -1 if one of the two results applies, but we can't tell
!      which at compile time.  Update DISTANCE in the same way as
!      for a return value of 1, for the case in which that holds.  */
  
  static int
! compare_base_symbol_refs (const_rtx x_base, const_rtx y_base,
! 			  HOST_WIDE_INT *distance)
  {
    tree x_decl = SYMBOL_REF_DECL (x_base);
    tree y_decl = SYMBOL_REF_DECL (y_base);
*************** compare_base_symbol_refs (const_rtx x_ba
*** 2192,2199 ****
  	  std::swap (x_decl, y_decl);
  	  std::swap (x_base, y_base);
  	}
!       /* We handle specially only section anchors and assume that other
!  	 labels may overlap with user variables in an arbitrary way.  */
        if (!SYMBOL_REF_HAS_BLOCK_INFO_P (y_base))
          return -1;
        /* Anchors contains static VAR_DECLs and CONST_DECLs.  We are safe
--- 2207,2214 ----
  	  std::swap (x_decl, y_decl);
  	  std::swap (x_base, y_base);
  	}
!       /* We handle specially only section anchors.  Other symbols are
! 	 either equal (via aliasing) or refer to different objects.  */
        if (!SYMBOL_REF_HAS_BLOCK_INFO_P (y_base))
          return -1;
        /* Anchors contains static VAR_DECLs and CONST_DECLs.  We are safe
*************** compare_base_symbol_refs (const_rtx x_ba
*** 2222,2235 ****
      {
        if (SYMBOL_REF_BLOCK (x_base) != SYMBOL_REF_BLOCK (y_base))
  	return 0;
!       if (SYMBOL_REF_BLOCK_OFFSET (x_base) == SYMBOL_REF_BLOCK_OFFSET (y_base))
! 	return binds_def ? 1 : -1;
!       if (SYMBOL_REF_ANCHOR_P (x_base) != SYMBOL_REF_ANCHOR_P (y_base))
! 	return -1;
!       return 0;
      }
!   /* In general we assume that memory locations pointed to by different labels
!      may overlap in undefined ways.  */
    return -1;
  }
  
--- 2237,2249 ----
      {
        if (SYMBOL_REF_BLOCK (x_base) != SYMBOL_REF_BLOCK (y_base))
  	return 0;
!       if (distance)
! 	*distance += (SYMBOL_REF_BLOCK_OFFSET (y_base)
! 		      - SYMBOL_REF_BLOCK_OFFSET (x_base));
!       return binds_def ? 1 : -1;
      }
!   /* Either the symbols are equal (via aliasing) or they refer to
!      different objects.  */
    return -1;
  }
  
*************** memrefs_conflict_p (poly_int64 xsize, rt
*** 2513,2523 ****
  
    if (GET_CODE (x) == SYMBOL_REF && GET_CODE (y) == SYMBOL_REF)
      {
!       int cmp = compare_base_symbol_refs (x,y);
  
        /* If both decls are the same, decide by offsets.  */
        if (cmp == 1)
!         return offset_overlap_p (c, xsize, ysize);
        /* Assume a potential overlap for symbolic addresses that went
  	 through alignment adjustments (i.e., that have negative
  	 sizes), because we can't know how far they are from each
--- 2527,2538 ----
  
    if (GET_CODE (x) == SYMBOL_REF && GET_CODE (y) == SYMBOL_REF)
      {
!       HOST_WIDE_INT distance = 0;
!       int cmp = compare_base_symbol_refs (x, y, &distance);
  
        /* If both decls are the same, decide by offsets.  */
        if (cmp == 1)
! 	return offset_overlap_p (c + distance, xsize, ysize);
        /* Assume a potential overlap for symbolic addresses that went
  	 through alignment adjustments (i.e., that have negative
  	 sizes), because we can't know how far they are from each
*************** memrefs_conflict_p (poly_int64 xsize, rt
*** 2526,2532 ****
  	return -1;
        /* If decls are different or we know by offsets that there is no overlap,
  	 we win.  */
!       if (!cmp || !offset_overlap_p (c, xsize, ysize))
  	return 0;
        /* Decls may or may not be different and offsets overlap....*/
        return -1;
--- 2541,2547 ----
  	return -1;
        /* If decls are different or we know by offsets that there is no overlap,
  	 we win.  */
!       if (!cmp || !offset_overlap_p (c + distance, xsize, ysize))
  	return 0;
        /* Decls may or may not be different and offsets overlap....*/
        return -1;
*************** init_alias_analysis (void)
*** 3349,3355 ****
  
    timevar_push (TV_ALIAS_ANALYSIS);
  
!   vec_safe_grow_cleared (reg_known_value, maxreg - FIRST_PSEUDO_REGISTER);
    reg_known_equiv_p = sbitmap_alloc (maxreg - FIRST_PSEUDO_REGISTER);
    bitmap_clear (reg_known_equiv_p);
  
--- 3364,3371 ----
  
    timevar_push (TV_ALIAS_ANALYSIS);
  
!   vec_safe_grow_cleared (reg_known_value, maxreg - FIRST_PSEUDO_REGISTER,
! 			 true);
    reg_known_equiv_p = sbitmap_alloc (maxreg - FIRST_PSEUDO_REGISTER);
    bitmap_clear (reg_known_equiv_p);
  
*************** init_alias_analysis (void)
*** 3360,3366 ****
    if (reg_base_value)
      reg_base_value->truncate (0);
  
!   vec_safe_grow_cleared (reg_base_value, maxreg);
  
    new_reg_base_value = XNEWVEC (rtx, maxreg);
    reg_seen = sbitmap_alloc (maxreg);
--- 3376,3382 ----
    if (reg_base_value)
      reg_base_value->truncate (0);
  
!   vec_safe_grow_cleared (reg_base_value, maxreg, true);
  
    new_reg_base_value = XNEWVEC (rtx, maxreg);
    reg_seen = sbitmap_alloc (maxreg);
diff -Nrcpad gcc-10.3.0/gcc/alias.h gcc-11.1.0/gcc/alias.h
*** gcc-10.3.0/gcc/alias.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/alias.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Exported functions from alias.c
!    Copyright (C) 2004-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Exported functions from alias.c
!    Copyright (C) 2004-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern int objects_must_conflict_p (tree
*** 36,41 ****
--- 36,42 ----
  extern int nonoverlapping_memrefs_p (const_rtx, const_rtx, bool);
  extern void dump_alias_stats_in_alias_c (FILE *s);
  tree reference_alias_ptr_type (tree);
+ tree reference_alias_ptr_type_1 (tree *);
  bool alias_ptr_types_compatible_p (tree, tree);
  int compare_base_decls (tree, tree);
  bool refs_same_for_tbaa_p (tree, tree);
diff -Nrcpad gcc-10.3.0/gcc/align.h gcc-11.1.0/gcc/align.h
*** gcc-10.3.0/gcc/align.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/align.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Alignment-related classes.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Alignment-related classes.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/alloc-pool.c gcc-11.1.0/gcc/alloc-pool.c
*** gcc-10.3.0/gcc/alloc-pool.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/alloc-pool.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Functions to support a pool of allocatable objects.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
     Contributed by Daniel Berlin <dan@cgsoftware.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* Functions to support a pool of allocatable objects.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
     Contributed by Daniel Berlin <dan@cgsoftware.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/alloc-pool.h gcc-11.1.0/gcc/alloc-pool.h
*** gcc-10.3.0/gcc/alloc-pool.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/alloc-pool.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Functions to support a pool of allocatable objects
!    Copyright (C) 1997-2020 Free Software Foundation, Inc.
     Contributed by Daniel Berlin <dan@cgsoftware.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* Functions to support a pool of allocatable objects
!    Copyright (C) 1997-2021 Free Software Foundation, Inc.
     Contributed by Daniel Berlin <dan@cgsoftware.com>
  
  This file is part of GCC.
*************** public:
*** 60,66 ****
  
    /* Dump usage coupled to LOC location, where TOTAL is sum of all rows.  */
    inline void
!   dump (mem_location *loc, mem_usage &total) const
    {
      char *location_string = loc->to_string ();
  
--- 60,66 ----
  
    /* Dump usage coupled to LOC location, where TOTAL is sum of all rows.  */
    inline void
!   dump (mem_location *loc, const mem_usage &total) const
    {
      char *location_string = loc->to_string ();
  
*************** public:
*** 524,529 ****
--- 524,535 ----
      m_allocator.remove (object);
    }
  
+   inline void
+   remove_raw (void *object)
+   {
+     m_allocator.remove (object);
+   }
+ 
    inline size_t
    num_elts_current ()
    {
diff -Nrcpad gcc-10.3.0/gcc/analyzer/ChangeLog gcc-11.1.0/gcc/analyzer/ChangeLog
*** gcc-10.3.0/gcc/analyzer/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-11.1.0/gcc/analyzer/ChangeLog	Tue Apr 27 10:00:13 2021
***************
*** 1,14 ****
! 2021-04-08  Release Manager
  
! 	* GCC 10.3.0 released.
  
! 2020-07-23  Release Manager
  
! 	* GCC 10.2.0 released.
  
! 2020-05-07  Release Manager
  
! 	* GCC 10.1.0 released.
  
  2020-04-28  David Malcolm  <dmalcolm@redhat.com>
  
--- 1,3254 ----
! 2021-04-27  Release Manager
  
! 	* GCC 11.1.0 released.
  
! 2021-04-13  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR analyzer/98599
! 	* supergraph.cc (saved_uids::make_uid_unique): New.
! 	(saved_uids::restore_uids): New.
! 	(supergraph::supergraph): Replace assignments to stmt->uid with
! 	calls to m_stmt_uids.make_uid_unique.
! 	(supergraph::~supergraph): New.
! 	* supergraph.h (class saved_uids): New.
! 	(supergraph::~supergraph): New decl.
! 	(supergraph::m_stmt_uids): New field.
  
! 2021-04-10  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR analyzer/100011
! 	* region-model.cc (region_model::on_assignment): Avoid NULL
! 	dereference if ctxt is NULL when assigning from a STRING_CST.
! 
! 2021-04-08  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/99042
! 	PR analyzer/99774
! 	* engine.cc
! 	(impl_region_model_context::impl_region_model_context): Add
! 	uncertainty param and use it to initialize m_uncertainty.
! 	(impl_region_model_context::get_uncertainty): New.
! 	(impl_sm_context::get_fndecl_for_call): Add NULL for new
! 	uncertainty param when constructing impl_region_model_context.
! 	(impl_sm_context::get_state): Likewise.
! 	(impl_sm_context::set_next_state): Likewise.
! 	(impl_sm_context::warn): Likewise.
! 	(exploded_node::on_stmt): Add uncertainty param
! 	and use it when constructing impl_region_model_context.
! 	(exploded_node::on_edge): Add uncertainty param and pass
! 	to on_edge call.
! 	(exploded_node::detect_leaks): Create uncertainty_t and pass to
! 	impl_region_model_context.
! 	(exploded_graph::get_or_create_node): Create uncertainty_t and
! 	pass to prune_for_point.
! 	(maybe_process_run_of_before_supernode_enodes): Create
! 	uncertainty_t and pass to impl_region_model_context.
! 	(exploded_graph::process_node): Create uncertainty_t instances and
! 	pass around as needed.
! 	* exploded-graph.h
! 	(impl_region_model_context::impl_region_model_context): Add
! 	uncertainty param.
! 	(impl_region_model_context::get_uncertainty): New decl.
! 	(impl_region_model_context::m_uncertainty): New field.
! 	(exploded_node::on_stmt): Add uncertainty param.
! 	(exploded_node::on_edge): Likewise.
! 	* program-state.cc (sm_state_map::on_liveness_change): Get
! 	uncertainty from context and use it to unset sm-state from
! 	svalues as appropriate.
! 	(program_state::on_edge): Add uncertainty param and use it when
! 	constructing impl_region_model_context.  Fix indentation.
! 	(program_state::prune_for_point): Add uncertainty param and use it
! 	when constructing impl_region_model_context.
! 	(program_state::detect_leaks): Get any uncertainty from ctxt and
! 	use it to get maybe-live svalues for dest_state, rather than
! 	definitely-live ones; use this when determining which svalues
! 	have leaked.
! 	(selftest::test_program_state_merging): Create uncertainty_t and
! 	pass to impl_region_model_context.
! 	* program-state.h (program_state::on_edge): Add uncertainty param.
! 	(program_state::prune_for_point): Likewise.
! 	* region-model-impl-calls.cc (call_details::get_uncertainty): New.
! 	(region_model::impl_call_memcpy): Pass uncertainty to
! 	mark_region_as_unknown call.
! 	(region_model::impl_call_memset): Likewise.
! 	(region_model::impl_call_strcpy): Likewise.
! 	* region-model-reachability.cc (reachable_regions::handle_sval):
! 	Also add sval to m_mutable_svals.
! 	* region-model.cc (region_model::on_assignment): Pass any
! 	uncertainty from ctxt to the store::set_value call.
! 	(region_model::handle_unrecognized_call): Get any uncertainty from
! 	ctxt and use it to record mutable svalues at the unknown call.
! 	(region_model::get_reachable_svalues): Add uncertainty param and
! 	use it to mark any maybe-bound svalues as being reachable.
! 	(region_model::set_value): Pass any uncertainty from ctxt to the
! 	store::set_value call.
! 	(region_model::mark_region_as_unknown): Add uncertainty param and
! 	pass it on to the store::mark_region_as_unknown call.
! 	(region_model::update_for_call_summary): Add uncertainty param and
! 	pass it on to the region_model::mark_region_as_unknown call.
! 	* region-model.h (call_details::get_uncertainty): New decl.
! 	(region_model::get_reachable_svalues): Add uncertainty param.
! 	(region_model::mark_region_as_unknown): Add uncertainty param.
! 	(region_model_context::get_uncertainty): New vfunc.
! 	(noop_region_model_context::get_uncertainty): New vfunc
! 	implementation.
! 	* store.cc (dump_svalue_set): New.
! 	(uncertainty_t::dump_to_pp): New.
! 	(uncertainty_t::dump): New.
! 	(binding_cluster::clobber_region): Pass NULL for uncertainty to
! 	remove_overlapping_bindings.
! 	(binding_cluster::mark_region_as_unknown): Add uncertainty param
! 	and pass it to remove_overlapping_bindings.
! 	(binding_cluster::remove_overlapping_bindings): Add uncertainty param.
! 	Use it to record any svalues that were in clobbered bindings.
! 	(store::set_value): Add uncertainty param.  Pass it to
! 	binding_cluster::mark_region_as_unknown when handling symbolic
! 	regions.
! 	(store::mark_region_as_unknown): Add uncertainty param and pass it
! 	to binding_cluster::mark_region_as_unknown.
! 	(store::remove_overlapping_bindings): Add uncertainty param and
! 	pass it to binding_cluster::remove_overlapping_bindings.
! 	* store.h (binding_cluster::mark_region_as_unknown): Add
! 	uncertainty param.
! 	(binding_cluster::remove_overlapping_bindings): Likewise.
! 	(store::set_value): Likewise.
! 	(store::mark_region_as_unknown): Likewise.
! 
! 2021-04-05  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/99906
! 	* analyzer.cc (maybe_reconstruct_from_def_stmt): Fix NULL
! 	dereference on calls with zero arguments.
! 	* sm-malloc.cc (malloc_state_machine::on_stmt): When handling
! 	__attribute__((nonnull)), only call get_diagnostic_tree if the
! 	result will be used.
! 
! 2021-04-05  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/99886
! 	* diagnostic-manager.cc
! 	(diagnostic_manager::prune_interproc_events): Use signed integers
! 	when subtracting one from path->num_events ().
! 	(diagnostic_manager::consolidate_conditions): Likewise.  Convert
! 	next_idx to a signed int.
! 
! 2021-04-01  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* diagnostic-manager.cc (diagnostic_manager::add_diagnostic): Make
! 	enode param non-constant, and call add_diagnostic on it.  Add
! 	enode index to log message.
! 	(diagnostic_manager::add_diagnostic): Make enode param
! 	non-constant.
! 	* diagnostic-manager.h (diagnostic_manager::add_diagnostic):
! 	Likewise for both decls.
! 	* engine.cc
! 	(impl_region_model_context::impl_region_model_context): Likewise
! 	for enode_for_diag.
! 	(impl_sm_context::impl_sm_context): Likewise.
! 	(impl_sm_context::m_enode_for_diag): Likewise.
! 	(exploded_node::dump_dot): Don't pass the diagnostic manager
! 	to dump_saved_diagnostics.
! 	(exploded_node::dump_saved_diagnostics): Drop param.  Iterate
! 	directly through all saved diagnostics for the enode, rather
! 	than all saved diagnostics in the diagnostic_manager and
! 	filtering.
! 	(exploded_node::on_stmt): Make non-const.
! 	(exploded_node::on_edge): Likewise.
! 	(exploded_node::on_longjmp): Likewise.
! 	(exploded_node::detect_leaks): Likewise.
! 	(exploded_graph::get_or_create_node): Make enode_for_diag param
! 	non-const.
! 	(exploded_graph_annotator::print_enode): Iterate
! 	directly through all saved diagnostics for the enode, rather
! 	than all saved diagnostics in the diagnostic_manager and
! 	filtering.
! 	* exploded-graph.h
! 	(impl_region_model_context::impl_region_model_context): Make
! 	enode_for_diag param non-constant.
! 	(impl_region_model_context::m_enode_for_diag): Likewise.
! 	(exploded_node::dump_saved_diagnostics): Drop param.
! 	(exploded_node::on_stmt): Make non-const.
! 	(exploded_node::on_edge): Likewise.
! 	(exploded_node::on_longjmp): Likewise.
! 	(exploded_node::detect_leaks): Likewise.
! 	(exploded_node::add_diagnostic): New.
! 	(exploded_node::get_num_diagnostics): New.
! 	(exploded_node::get_saved_diagnostic): New.
! 	(exploded_node::m_saved_diagnostics): New.
! 	(exploded_graph::get_or_create_node): Make enode_for_diag param
! 	non-constant.
! 	* feasible-graph.cc (feasible_node::dump_dot): Drop
! 	diagnostic_manager from call to dump_saved_diagnostics.
! 	* program-state.cc (program_state::on_edge): Convert enode param
! 	to non-const pointer.
! 	(program_state::prune_for_point): Likewise for enode_for_diag
! 	param.
! 	* program-state.h (program_state::on_edge): Convert enode param
! 	to non-const pointer.
! 	(program_state::prune_for_point): Likewise for enode_for_diag
! 	param.
! 
! 2021-03-31  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/99771
! 	* analyzer.cc (maybe_reconstruct_from_def_stmt): New.
! 	(fixup_tree_for_diagnostic_1): New.
! 	(fixup_tree_for_diagnostic): New.
! 	* analyzer.h (fixup_tree_for_diagnostic): New decl.
! 	* checker-path.cc (call_event::get_desc): Call
! 	fixup_tree_for_diagnostic and use it for the call_with_state call.
! 	(warning_event::get_desc): Likewise for the final_event and
! 	make_label_text calls.
! 	* engine.cc (impl_region_model_context::on_state_leak): Likewise
! 	for the on_leak and add_diagnostic calls.
! 	* region-model.cc (region_model::get_representative_tree):
! 	Likewise for the result.
! 
! 2021-03-30  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* region.h (region::dump_to_pp): Remove old decl.
! 
! 2021-03-30  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* sm-file.cc (fileptr_state_machine::on_stmt): Only call
! 	get_diagnostic_tree if the result will be used.
! 	* sm-malloc.cc (malloc_state_machine::on_stmt): Likewise.
! 	(malloc_state_machine::on_deallocator_call): Likewise.
! 	(malloc_state_machine::on_realloc_call): Likewise.
! 	(malloc_state_machine::on_realloc_call): Likewise.
! 	* sm-sensitive.cc
! 	(sensitive_state_machine::warn_for_any_exposure): Likewise.
! 	* sm-taint.cc (taint_state_machine::on_stmt): Likewise.
! 
! 2021-03-25  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/93695
! 	PR analyzer/99044
! 	PR analyzer/99716
! 	* engine.cc (exploded_node::on_stmt): Clear sm-state involving
! 	an SSA name at the def-stmt of that SSA name.
! 	* program-state.cc (sm_state_map::purge_state_involving): New.
! 	* program-state.h (sm_state_map::purge_state_involving): New decl.
! 	* region-model.cc (selftest::test_involves_p): New.
! 	(selftest::analyzer_region_model_cc_tests): Call it.
! 	* svalue.cc (class involvement_visitor): New class
! 	(svalue::involves_p): New.
! 	* svalue.h (svalue::involves_p): New decl.
! 
! 2021-03-19  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/99614
! 	* diagnostic-manager.cc (class epath_finder): Add
! 	DISABLE_COPY_AND_ASSIGN.
! 
! 2021-03-15  Martin Liska  <mliska@suse.cz>
! 
! 	* sm-file.cc (get_file_using_fns): Add missing comma in initializer.
! 
! 2021-03-11  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96374
! 	* analyzer.opt (-param=analyzer-max-infeasible-edges=): New param.
! 	(fdump-analyzer-feasibility): New flag.
! 	* diagnostic-manager.cc: Include "analyzer/trimmed-graph.h" and
! 	"analyzer/feasible-graph.h".
! 	(epath_finder::epath_finder): Convert m_sep to a pointer and
! 	only create it if !flag_analyzer_feasibility.
! 	(epath_finder::~epath_finder): New.
! 	(epath_finder::m_sep): Convert to a pointer.
! 	(epath_finder::get_best_epath): Add param "diag_idx" and use it
! 	when logging.  Rather than finding the shortest path and then
! 	checking feasibility, instead use explore_feasible_paths unless
! 	!flag_analyzer_feasibility, in which case simply use the shortest
! 	path, and note if it is infeasible.  Update for m_sep becoming a
! 	pointer.
! 	(class feasible_worklist): New.
! 	(epath_finder::explore_feasible_paths): New.
! 	(epath_finder::process_worklist_item): New.
! 	(class dump_eg_with_shortest_path): New.
! 	(epath_finder::dump_trimmed_graph): New.
! 	(epath_finder::dump_feasible_graph): New.
! 	(saved_diagnostic::saved_diagnostic): Add "idx" param, using it
! 	on new field m_idx.
! 	(saved_diagnostic::to_json): Dump m_idx.
! 	(saved_diagnostic::calc_best_epath): Pass m_idx to get_best_epath.
! 	Remove assertion that m_problem was set when m_best_epath is NULL.
! 	(diagnostic_manager::add_diagnostic): Pass an index when created
! 	saved_diagnostic instances.
! 	* diagnostic-manager.h (saved_diagnostic::saved_diagnostic): Add
! 	"idx" param.
! 	(saved_diagnostic::get_index): New accessor.
! 	(saved_diagnostic::m_idx): New field.
! 	* engine.cc (exploded_node::dump_dot): Call args.dump_extra_info.
! 	Move code to...
! 	(exploded_node::dump_processed_stmts): ...this new function and...
! 	(exploded_node::dump_saved_diagnostics): ...this new function.
! 	Add index of each diagnostic.
! 	(exploded_edge::dump_dot):  Move bulk of code to...
! 	(exploded_edge::dump_dot_label): ...this new function.
! 	* exploded-graph.h (eg_traits::dump_args_t::dump_extra_info): New
! 	vfunc.
! 	(exploded_node::dump_processed_stmts): New decl.
! 	(exploded_node::dump_saved_diagnostics): New decl.
! 	(exploded_edge::dump_dot_label): New decl.
! 	* feasible-graph.cc: New file.
! 	* feasible-graph.h: New file.
! 	* trimmed-graph.cc: New file.
! 	* trimmed-graph.h: New file.
! 
! 2021-03-11  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* diagnostic-manager.cc (epath_finder::epath_finder):
! 	Update shortest_paths init for new param.
! 
! 2021-03-10  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96374
! 	* engine.cc (exploded_path::feasible_p): Move "snodes_visited" and
! 	"model" locals into a new class feasibility_state.  Move heart
! 	of per-edge processing into
! 	feasibility_state::maybe_update_for_edge.
! 	(feasibility_state::feasibility_state): New.
! 	(feasibility_state::maybe_update_for_edge): New, based on loop
! 	body in exploded_path::feasible_p.
! 	* exploded-graph.h (class feasibility_state): New.
! 
! 2021-03-10  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* supergraph.h
! 	(callgraph_superedge::dyn_cast_callgraph_superedge): New.
! 	(call_superedge::dyn_cast_callgraph_superedge): Delete.
! 	(return_superedge::dyn_cast_callgraph_superedge): Delete.
! 
! 2021-03-02  Martin Liska  <mliska@suse.cz>
! 
! 	* diagnostic-manager.cc (diagnostic_manager::emit_saved_diagnostics):
! 	Do not pass engine.
! 
! 2021-02-26  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* engine.cc (exploded_path::exploded_path): New copy-ctor.
! 	* exploded-graph.h (exploded_path::operator=): Drop decl.
! 
! 2021-02-26  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96374
! 	* diagnostic-manager.cc (class epath_finder): New.
! 	(epath_finder::get_best_epath): New.
! 	(saved_diagnostic::saved_diagnostic): Update for replacement of
! 	m_state and m_epath_length with m_best_epath.
! 	(saved_diagnostic::~saved_diagnostic): Delete m_best_epath.
! 	(saved_diagnostic::to_json): Update "path_length" to be optional.
! 	(saved_diagnostic::calc_best_epath): New, based on
! 	dedupe_winners::add and parts of dedupe_key::dedupe_key.
! 	(saved_diagnostic::get_epath_length): New.
! 	(saved_diagnostic::add_duplicate): New.
! 	(dedupe_key::dedupe_key): Drop epath param.  Move invocation of
! 	stmt_finder to saved_diagnostic::calc_best_epath.
! 	(class dedupe_candidate): Delete.
! 	(class dedupe_hash_map_traits): Update to use saved_diagnotic *
! 	rather than dedupe_candidate * as the value_type/compare_type.
! 	(dedupe_winners::~dedupe_winners): Don't delete the values.
! 	(dedupe_winners::add): Convert param from shortest_exploded_paths to
! 	epath_finder.  Drop "eg" param.  Drop dedupe_candidate, moving
! 	path generation and feasiblity checking to
! 	epath_finder::get_best_epath.  Update winner-selection for move
! 	of epaths from dedupe_candidate to saved_diagnostic.
! 	(dedupe_winners::emit_best):  Update for removal of class
! 	dedupe_candidate.
! 	(dedupe_winners::map_t): Update to use saved_diagnotic * rather
! 	than dedupe_candidate * as the value_type/compare_type.
! 	(diagnostic_manager::emit_saved_diagnostics): Move
! 	shortest_exploded_paths instance into epath_finder and pass that
! 	around instead.
! 	(diagnostic_manager::emit_saved_diagnostic): Drop epath, stmt
! 	and num_dupes params, instead getting these from the
! 	saved_diagnostic.  Use correct location in inform_n call.
! 	* diagnostic-manager.h (class epath_finder): New forward decl.
! 	(saved_diagnostic::status): Drop enum.
! 	(saved_diagnostic::set_feasible): Drop.
! 	(saved_diagnostic::set_infeasible): Drop.
! 	(saved_diagnostic::get_status): Drop.
! 	(saved_diagnostic::calc_best_epath): New decl.
! 	(saved_diagnostic::get_best_epath): New decl.
! 	(saved_diagnostic::get_epath_length): New decl.
! 	(saved_diagnostic::set_epath_length): Drop.
! 	(saved_diagnostic::get_epath_length): Drop inline implementation.
! 	(saved_diagnostic::add_duplicate): New.
! 	(saved_diagnostic::get_num_dupes): New.
! 	(saved_diagnostic::m_d): Document ownership.
! 	(saved_diagnostic::m_trailing_eedge): Make const.
! 	(saved_diagnostic::m_status): Drop field.
! 	(saved_diagnostic::m_epath_length): Drop field.
! 	(saved_diagnostic::m_best_epath): New field.
! 	(saved_diagnostic::m_problem): Document ownership.
! 	(saved_diagnostic::m_duplicates): New field.
! 	(diagnostic_manager::emit_saved_diagnostic): Drop params epath,
! 	stmt, and num_dupes.
! 	* engine.cc (exploded_graph_annotator::print_saved_diagnostic):
! 	Update for changes to saved_diagnostic class.
! 	* exploded-graph.h (exploded_path::feasible_p): Drop unused
! 	overloaded decl.
! 
! 2021-02-25  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/99193
! 	* region-model-impl-calls.cc (region_model::impl_call_realloc): New.
! 	* region-model.cc (region_model::on_call_pre): Call it.
! 	* region-model.h (region_model::impl_call_realloc): New decl.
! 	* sm-malloc.cc (enum wording): Add WORDING_REALLOCATED.
! 	(malloc_state_machine::m_realloc): New field.
! 	(use_after_free::describe_state_change): Add case for
! 	WORDING_REALLOCATED.
! 	(use_after_free::describe_final_event): Likewise.
! 	(malloc_state_machine::malloc_state_machine): Initialize
! 	m_realloc.
! 	(malloc_state_machine::on_stmt): Handle realloc by calling...
! 	(malloc_state_machine::on_realloc_call): New.
! 
! 2021-02-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/99196
! 	* engine.cc (exploded_node::on_stmt): Provide terminate_path
! 	flag as a way for on_call_pre to terminate the current analysis
! 	path.
! 	* region-model-impl-calls.cc (call_details::num_args): New.
! 	(region_model::impl_call_error): New.
! 	* region-model.cc (region_model::on_call_pre): Add param
! 	"out_terminate_path".  Handle "error" and "error_at_line".
! 	* region-model.h (call_details::num_args): New decl.
! 	(region_model::on_call_pre): Add param "out_terminate_path".
! 	(region_model::impl_call_error): New decl.
! 
! 2021-02-17  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/98969
! 	* constraint-manager.cc (dead_svalue_purger::should_purge_p):
! 	Update for change to svalue::live_p.
! 	* program-state.cc (sm_state_map::on_liveness_change): Likewise.
! 	(program_state::detect_leaks): Likewise.
! 	* region-model-reachability.cc (reachable_regions::init_cluster):
! 	When dealing with a symbolic region, if the underlying pointer is
! 	implicitly live, add the region to the reachable regions.
! 	* region-model.cc (region_model::compare_initial_and_pointer):
! 	Move logic for detecting initial values of params to
! 	initial_svalue::initial_value_of_param_p.
! 	* svalue.cc (svalue::live_p): Convert "live_svalues" from a
! 	reference to a pointer; support it being NULL.
! 	(svalue::implicitly_live_p): Convert first param from a
! 	refererence to a pointer.
! 	(region_svalue::implicitly_live_p): Likewise.
! 	(constant_svalue::implicitly_live_p): Likewise.
! 	(initial_svalue::implicitly_live_p): Likewise.  Treat the initial
! 	values of params for the top level frame as still live.
! 	(initial_svalue::initial_value_of_param_p): New function, taken
! 	from a test in region_model::compare_initial_and_pointer.
! 	(unaryop_svalue::implicitly_live_p): Convert first param from a
! 	refererence to a pointer.
! 	(binop_svalue::implicitly_live_p): Likewise.
! 	(sub_svalue::implicitly_live_p): Likewise.
! 	(unmergeable_svalue::implicitly_live_p): Likewise.
! 	* svalue.h (svalue::live_p): Likewise.
! 	(svalue::implicitly_live_p): Likewise.
! 	(region_svalue::implicitly_live_p): Likewise.
! 	(constant_svalue::implicitly_live_p): Likewise.
! 	(initial_svalue::implicitly_live_p): Likewise.
! 	(initial_svalue::initial_value_of_param_p): New decl.
! 	(unaryop_svalue::implicitly_live_p): Convert first param from a
! 	refererence to a pointer.
! 	(binop_svalue::implicitly_live_p): Likewise.
! 	(sub_svalue::implicitly_live_p): Likewise.
! 	(unmergeable_svalue::implicitly_live_p): Likewise.
! 
! 2021-02-12  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/98969
! 	* engine.cc (readability): Add names for the various arbitrary
! 	values.  Handle NOP_EXPR and INTEGER_CST.
! 	(readability_comparator): Combine the readability tests for
! 	tree and stack depth, rather than performing them sequentially.
! 	(impl_region_model_context::on_state_leak): Strip off top-level
! 	casts.
! 	* region-model.cc (region_model::get_representative_path_var): Add
! 	type-checking, moving the bulk of the implementation to...
! 	(region_model::get_representative_path_var_1): ...here.  Respect
! 	types in casts by recursing and re-adding the cast, rather than
! 	merely stripping them off.  Use the correct type when handling
! 	region_svalue.
! 	(region_model::get_representative_tree): Strip off any top-level
! 	cast.
! 	(region_model::get_representative_path_var): Add type-checking,
! 	moving the bulk of the implementation to...
! 	(region_model::get_representative_path_var_1): ...here.
! 	* region-model.h (region_model::get_representative_path_var_1):
! 	New decl
! 	(region_model::get_representative_path_var_1): New decl.
! 	* store.cc (append_pathvar_with_type): New.
! 	(binding_cluster::get_representative_path_vars): Cast path_vars
! 	to the correct type when adding them to *OUT_PVS.
! 
! 2021-02-09  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/98575
! 	* sm-file.cc (is_file_using_fn_p): Support "_IO_"-prefixed
! 	variants.
! 
! 2021-02-09  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/98575
! 	* store.cc (store::set_value): Treat a pointer written to *UNKNOWN
! 	as having escaped.
! 
! 2021-02-02  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/93355
! 	PR analyzer/96374
! 	* engine.cc (toplevel_function_p): Simplify so that
! 	we only reject functions with a "__analyzer_" prefix.
! 	(add_any_callbacks): Delete.
! 	(exploded_graph::build_initial_worklist): Update for
! 	dropped param of toplevel_function_p.
! 	(exploded_graph::build_initial_worklist): Don't bother
! 	looking for callbacks that are reachable from global
! 	initializers.
! 
! 2021-02-01  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/98918
! 	* region-model-manager.cc
! 	(region_model_manager::get_or_create_initial_value):
! 	Fold the initial value of *UNKNOWN_PTR to an UNKNOWN value.
! 	(region_model_manager::get_field_region): Fold the value
! 	of UNKNOWN_PTR->FIELD to *UNKNOWN_PTR_OF_&FIELD_TYPE.
! 
! 2021-01-29  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* checker-path.cc (event_kind_to_string): Handle
! 	EK_START_CONSOLIDATED_CFG_EDGES and
! 	EK_END_CONSOLIDATED_CFG_EDGES.
! 	(start_consolidated_cfg_edges_event::get_desc): New.
! 	(checker_path::cfg_edge_pair_at_p): New.
! 	* checker-path.h (enum event_kind): Add
! 	EK_START_CONSOLIDATED_CFG_EDGES and
! 	EK_END_CONSOLIDATED_CFG_EDGES.
! 	(class start_consolidated_cfg_edges_event): New class.
! 	(class end_consolidated_cfg_edges_event): New class.
! 	(checker_path::delete_events): New.
! 	(checker_path::replace_event): New.
! 	(checker_path::cfg_edge_pair_at_p): New decl.
! 	* diagnostic-manager.cc (diagnostic_manager::prune_path): Call
! 	consolidate_conditions.
! 	(same_line_as_p): New.
! 	(diagnostic_manager::consolidate_conditions): New.
! 	* diagnostic-manager.h
! 	(diagnostic_manager::consolidate_conditions): New decl.
! 
! 2021-01-18  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer.h (is_std_named_call_p): New decl.
! 	* diagnostic-manager.cc (path_builder::get_sm): New.
! 	(state_change_event_creator::state_change_event_creator): Add "pb"
! 	param.
! 	(state_change_event_creator::on_global_state_change): Don't consider
! 	state changes affecting other state_machines.
! 	(state_change_event_creator::on_state_change): Likewise.
! 	(state_change_event_creator::m_pb): New field.
! 	(diagnostic_manager::add_events_for_eedge): Pass pb to visitor
! 	ctor.
! 	* region-model-impl-calls.cc
! 	(region_model::impl_deallocation_call): New.
! 	* region-model.cc: Include "attribs.h".
! 	(region_model::on_call_post): Handle fndecls referenced by
! 	__attribute__((deallocated_by(FOO))).
! 	* region-model.h (region_model::impl_deallocation_call): New decl.
! 	* sm-malloc.cc: Include "stringpool.h" and "attribs.h".  Add
! 	leading comment.
! 	(class api): Delete.
! 	(enum resource_state): Update comment for change from api to
! 	deallocator and deallocator_set.
! 	(allocation_state::allocation_state): Drop api param.  Add
! 	"deallocators" and "deallocator".
! 	(allocation_state::m_api): Drop field in favor of...
! 	(allocation_state::m_deallocators): New field.
! 	(allocation_state::m_deallocator): New field.
! 	(enum wording): Add WORDING_DEALLOCATED.
! 	(struct deallocator): New.
! 	(struct standard_deallocator): New.
! 	(struct custom_deallocator): New.
! 	(struct deallocator_set): New.
! 	(struct custom_deallocator_set): New.
! 	(struct standard_deallocator_set): New.
! 	(struct deallocator_set_map_traits): New.
! 	(malloc_state_machine::m_malloc): Drop field
! 	(malloc_state_machine::m_scalar_new): Likewise.
! 	(malloc_state_machine::m_vector_new): Likewise.
! 	(malloc_state_machine::m_free): New field
! 	(malloc_state_machine::m_scalar_delete): Likewise.
! 	(malloc_state_machine::m_vector_delete): Likewise.
! 	(malloc_state_machine::deallocator_map_t): New typedef.
! 	(malloc_state_machine::m_deallocator_map): New field.
! 	(malloc_state_machine::deallocator_set_cache_t): New typedef.
! 	(malloc_state_machine::m_custom_deallocator_set_cache): New field.
! 	(malloc_state_machine::custom_deallocator_set_map_t): New typedef.
! 	(malloc_state_machine::m_custom_deallocator_set_map): New field.
! 	(malloc_state_machine::m_dynamic_sets): New field.
! 	(malloc_state_machine::m_dynamic_deallocators): New field.
! 	(api::api): Delete.
! 	(deallocator::deallocator): New ctor.
! 	(deallocator::hash): New.
! 	(deallocator::dump_to_pp): New.
! 	(deallocator::cmp): New.
! 	(deallocator::cmp_ptr_ptr): New.
! 	(standard_deallocator::standard_deallocator): New ctor.
! 	(deallocator_set::deallocator_set): New ctor.
! 	(deallocator_set::dump): New.
! 	(custom_deallocator_set::custom_deallocator_set): New ctor.
! 	(custom_deallocator_set::contains_p): New.
! 	(custom_deallocator_set::maybe_get_single): New.
! 	(custom_deallocator_set::dump_to_pp): New.
! 	(standard_deallocator_set::standard_deallocator_set): New ctor.
! 	(standard_deallocator_set::contains_p): New.
! 	(standard_deallocator_set::maybe_get_single): New.
! 	(standard_deallocator_set::dump_to_pp): New.
! 	(start_p): New.
! 	(class mismatching_deallocation): Update for conversion from api
! 	to deallocator_set and deallocator.
! 	(double_free::emit): Use %qs.
! 	(class use_after_free): Update for conversion from api to
! 	deallocator_set and deallocator.
! 	(malloc_leak::describe_state_change): Only emit "allocated here" on
! 	a start->nonnull transition, rather than on other transitions to
! 	nonnull.
! 	(allocation_state::dump_to_pp): Update for conversion from api to
! 	deallocator_set.
! 	(allocation_state::get_nonnull): Likewise.
! 	(malloc_state_machine::malloc_state_machine): Likewise.
! 	(malloc_state_machine::~malloc_state_machine): New.
! 	(malloc_state_machine::add_state): Update for conversion from api
! 	to deallocator_set.
! 	(malloc_state_machine::get_or_create_custom_deallocator_set): New.
! 	(malloc_state_machine::maybe_create_custom_deallocator_set): New.
! 	(malloc_state_machine::get_or_create_deallocator): New.
! 	(malloc_state_machine::on_stmt): Update for conversion from api
! 	to deallocator_set.  Handle "__attribute__((malloc(FOO)))", and
! 	the special attribute set on FOO.
! 	(malloc_state_machine::on_allocator_call): Update for conversion
! 	from api to deallocator_set.  Add "returns_nonnull" param and use
! 	it to affect which state to transition to.
! 	(malloc_state_machine::on_deallocator_call): Update for conversion
! 	from api to deallocator_set.
! 
! 2021-01-14  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* engine.cc (strongly_connected_components::to_json): New.
! 	(worklist::to_json): New.
! 	(exploded_graph::to_json): JSON-ify the worklist.
! 	* exploded-graph.h (strongly_connected_components::to_json): New
! 	decl.
! 	(worklist::to_json): New decl.
! 	* store.cc (store::to_json): Fix comment.
! 	* supergraph.cc (supernode::to_json): Fix reference to
! 	"returning_call" in comment.  Add optional "fun" to JSON.
! 	(edge_kind_to_string): New.
! 	(superedge::to_json): Add "kind" to JSON.
! 
! 2021-01-14  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/98679
! 	* analyzer.h (region_offset::operator==): Make const.
! 	* pending-diagnostic.h (pending_diagnostic::equal_p): Likewise.
! 	* store.h (binding_cluster::for_each_value): Likewise.
! 	(binding_cluster::for_each_binding): Likewise.
! 
! 2021-01-12  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/98628
! 	* store.cc (binding_cluster::make_unknown_relative_to): Don't mark
! 	dereferenced unknown pointers as having escaped.
! 
! 2021-01-07  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/98580
! 	* region.cc (decl_region::get_svalue_for_initializer): Gracefully
! 	handle when LTO writes out DECL_INITIAL as error_mark_node.
! 
! 2021-01-07  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/97074
! 	* store.cc (binding_cluster::can_merge_p): Add "out_store" param
! 	and pass to calls to binding_cluster::make_unknown_relative_to.
! 	(binding_cluster::make_unknown_relative_to): Add "out_store"
! 	param.  Use it to mark base regions that are pointed to by
! 	pointers that become unknown as having escaped.
! 	(store::can_merge_p): Pass out_store to
! 	binding_cluster::can_merge_p.
! 	* store.h (binding_cluster::can_merge_p): Add "out_store" param.
! 	(binding_cluster::make_unknown_relative_to): Likewise.
! 	* svalue.cc (region_svalue::implicitly_live_p): New vfunc.
! 	* svalue.h (region_svalue::implicitly_live_p): New vfunc decl.
! 
! 2021-01-07  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/98564
! 	* engine.cc (exploded_path::feasible_p): Add missing call to
! 	bitmap_clear.
! 
! 2021-01-06  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/97072
! 	* region-model-reachability.cc (reachable_regions::init_cluster):
! 	Convert symbolic region handling to a switch statement.  Add cases
! 	to handle SK_UNKNOWN and SK_CONJURED.
! 
! 2021-01-05  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/98293
! 	* store.cc (binding_map::apply_ctor_to_region): When "index" is
! 	NULL, iterate through the fields for RECORD_TYPEs, rather than
! 	creating an INTEGER_CST index.
! 
! 2020-11-30  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer-pass.cc: Include "analyzer/analyzer.h" for the
! 	declaration of sorry_no_analyzer; include "tree.h" and
! 	"function.h" as these are needed by it.
! 
! 2020-11-30  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer-pass.cc (pass_analyzer::execute): Move sorry call to...
! 	(sorry_no_analyzer): New.
! 	* analyzer.h (class state_machine): New forward decl.
! 	(class logger): New forward decl.
! 	(class plugin_analyzer_init_iface): New.
! 	(sorry_no_analyzer): New decl.
! 	* checker-path.cc (checker_path::fixup_locations): New.
! 	* checker-path.h (checker_event::set_location): New.
! 	(checker_path::fixup_locations): New decl.
! 	* diagnostic-manager.cc
! 	(diagnostic_manager::emit_saved_diagnostic): Call
! 	checker_path::fixup_locations, and call fixup_location
! 	on the primary location.
! 	* engine.cc: Include "plugin.h".
! 	(class plugin_analyzer_init_impl): New.
! 	(impl_run_checkers): Invoke PLUGIN_ANALYZER_INIT callbacks.
! 	* pending-diagnostic.h (pending_diagnostic::fixup_location): New
! 	vfunc.
! 
! 2020-11-18  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/97893
! 	* sm-malloc.cc (null_deref::emit): Use CWE-476 rather than
! 	CWE-690, as this isn't due to an unchecked return value.
! 	(null_arg::emit): Likewise.
! 
! 2020-11-12  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* checker-path.h (checker_event::get_id_ptr): New.
! 	* diagnostic-manager.cc (path_builder::path_builder): Add "sd"
! 	param and use it to initialize new field "m_sd".
! 	(path_builder::get_pending_diagnostic): New.
! 	(path_builder::m_sd): New field.
! 	(diagnostic_manager::emit_saved_diagnostic): Pass sd to
! 	path_builder ctor.
! 	(diagnostic_manager::add_events_for_superedge): Call new
! 	maybe_add_custom_events_for_superedge vfunc.
! 	* engine.cc (stale_jmp_buf::stale_jmp_buf): Add "setjmp_point"
! 	param and use it to initialize new field "m_setjmp_point".
! 	Initialize new field "m_stack_pop_event".
! 	(stale_jmp_buf::maybe_add_custom_events_for_superedge): New vfunc
! 	implementation.
! 	(stale_jmp_buf::describe_final_event): New vfunc implementation.
! 	(stale_jmp_buf::m_setjmp_point): New field.
! 	(stale_jmp_buf::m_stack_pop_event): New field.
! 	(exploded_node::on_longjmp): Pass setjmp_point to stale_jmp_buf
! 	ctor.
! 	* pending-diagnostic.h
! 	(pending_diagnostic::maybe_add_custom_events_for_superedge): New
! 	vfunc.
! 
! 2020-11-12  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR tree-optimization/97424
! 	* analyzer.opt (Wanalyzer-shift-count-negative): New.
! 	(Wanalyzer-shift-count-overflow): New.
! 	* region-model.cc (class shift_count_negative_diagnostic): New.
! 	(class shift_count_overflow_diagnostic): New.
! 	(region_model::get_gassign_result): Complain about shift counts that
! 	are negative or are >= the operand's type's width.
! 
! 2020-11-10  Martin Liska  <mliska@suse.cz>
! 
! 	* constraint-manager.cc (constraint_manager::merge): Remove
! 	unused code.
! 	* constraint-manager.h: Likewise.
! 	* program-state.cc (sm_state_map::sm_state_map): Likewise.
! 	(program_state::program_state): Likewise.
! 	(test_sm_state_map): Likewise.
! 	* program-state.h: Likewise.
! 	* region-model-reachability.cc (reachable_regions::reachable_regions): Likewise.
! 	* region-model-reachability.h: Likewise.
! 	* region-model.cc (region_model::handle_unrecognized_call): Likewise.
! 	(region_model::get_reachable_svalues): Likewise.
! 	(region_model::can_merge_with_p): Likewise.
! 
! 2020-11-05  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/97668
! 	* svalue.cc (cmp_cst): Handle COMPLEX_CST.
! 
! 2020-10-29  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* program-state.cc (sm_state_map::on_liveness_change): Sort the
! 	leaking svalues before calling on_state_leak.
! 	(program_state::detect_leaks): Likewise when calling
! 	on_svalue_leak.
! 	* region-model-reachability.cc
! 	(reachable_regions::mark_escaped_clusters): Likewise when
! 	calling on_escaped_function.
! 
! 2020-10-29  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/97608
! 	* region-model-reachability.cc (reachable_regions::handle_sval):
! 	Operands of reachable reversible operations are reachable.
! 
! 2020-10-29  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer.h (class state_machine): New forward decl.
! 	(class logger): Likewise.
! 	(class visitor): Likewise.
! 	* complexity.cc: New file, taken from svalue.cc.
! 	* complexity.h: New file, taken from region-model.h.
! 	* region-model.h: Include "analyzer/svalue.h" and
! 	"analyzer/region.h".  Move struct complexity to complexity.h.
! 	Move svalue, its subclasses and supporting decls to svalue.h.
! 	Move region, its subclasses and supporting decls to region.h.
! 	* region.cc: Include "analyzer/region.h".
! 	(symbolic_region::symbolic_region): Move here from region-model.h.
! 	* region.h: New file, based on material from region-model.h.
! 	* svalue.cc: Include "analyzer/svalue.h".
! 	(complexity::complexity): Move to complexity.cc.
! 	(complexity::from_pair): Likewise.
! 	* svalue.h: New file, based on material from region-model.h.
! 
! 2020-10-29  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* program-state.cc (sm_state_map::print): Guard the printing of
! 	the origin pointer with !flag_dump_noaddr.
! 	* region.cc (string_region::dump_to_pp): Likewise for
! 	m_string_cst.
! 
! 2020-10-27  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/97568
! 	* region-model.cc (region_model::get_initial_value_for_global):
! 	Move check that !DECL_EXTERNAL from here to...
! 	* region.cc (decl_region::get_svalue_for_initializer): ...here,
! 	using it to reject zero initialization.
! 
! 2020-10-27  Markus Böck  <markus.boeck02@gmail.com>
! 
! 	PR analyzer/96608
! 	* store.h (hash): Cast to intptr_t instead of long
! 
! 2020-10-27  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* constraint-manager.cc (svalue_cmp_by_ptr): Delete.
! 	(equiv_class::canonicalize): Use svalue::cmp_ptr_ptr instead.
! 	(equiv_class_cmp): Eliminate pointer comparison.
! 	* diagnostic-manager.cc (dedupe_key::comparator): If they are at
! 	the same location, also compare epath ength and pending_diagnostic
! 	kind.
! 	* engine.cc (readability_comparator): If two path_vars have the
! 	same readability, then impose an arbitrary ordering on them.
! 	(worklist::key_t::cmp): If two points have the same plan ordering,
! 	continue the comparison.  Call sm_state_map::cmp rather than
! 	comparing hash values.
! 	* program-state.cc (sm_state_map::entry_t::cmp): New.
! 	(sm_state_map::cmp): New.
! 	* program-state.h (sm_state_map::entry_t::cmp): New decl.
! 	(sm_state_map::elements): New.
! 	(sm_state_map::cmp): New.
! 
! 2020-10-27  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* engine.cc (setjmp_record::cmp): New.
! 	(supernode_cluster::dump_dot): Avoid embedding pointer in cluster
! 	name.
! 	(supernode_cluster::cmp_ptr_ptr): New.
! 	(function_call_string_cluster::dump_dot): Avoid embedding pointer
! 	in cluster name.  Sort m_map when dumping child clusters.
! 	(function_call_string_cluster::cmp_ptr_ptr): New.
! 	(root_cluster::dump_dot): Sort m_map when dumping child clusters.
! 	* program-point.cc (function_point::cmp): New.
! 	(function_point::cmp_ptr): New.
! 	* program-point.h (function_point::cmp): New decl.
! 	(function_point::cmp_ptr): New decl.
! 	* program-state.cc (sm_state_map::print): Sort the values.  Guard
! 	the printing of pointers with !flag_dump_noaddr.
! 	(program_state::prune_for_point): Sort the regions.
! 	(log_set_of_svalues): Sort the values.  Guard the printing of
! 	pointers with !flag_dump_noaddr.
! 	* region-model-manager.cc (log_uniq_map): Sort the values.
! 	* region-model-reachability.cc (dump_set): New function template.
! 	(reachable_regions::dump_to_pp): Use it.
! 	* region-model.h (svalue::cmp_ptr): New decl.
! 	(svalue::cmp_ptr_ptr): New decl.
! 	(setjmp_record::cmp): New decl.
! 	(placeholder_svalue::get_name): New accessor.
! 	(widening_svalue::get_point): New accessor.
! 	(compound_svalue::get_map): New accessor.
! 	(conjured_svalue::get_stmt): New accessor.
! 	(conjured_svalue::get_id_region): New accessor.
! 	(region::cmp_ptrs): Rename to...
! 	(region::cmp_ptr_ptr): ...this.
! 	* region.cc (region::cmp_ptrs): Rename to...
! 	(region::cmp_ptr_ptr): ...this.
! 	* state-purge.cc
! 	(state_purge_per_ssa_name::state_purge_per_ssa_name): Sort
! 	m_points_needing_name when dumping.
! 	* store.cc (concrete_binding::cmp_ptr_ptr): New.
! 	(symbolic_binding::cmp_ptr_ptr): New.
! 	(binding_map::cmp): New.
! 	(get_sorted_parent_regions): Update for renaming of
! 	region::cmp_ptrs to region::cmp_ptr_ptr.
! 	(store::dump_to_pp): Likewise.
! 	(store::to_json): Likewise.
! 	(store::can_merge_p): Sort the base regions before considering
! 	them.
! 	* store.h (concrete_binding::cmp_ptr_ptr): New decl.
! 	(symbolic_binding::cmp_ptr_ptr): New decl.
! 	(binding_map::cmp): New decl.
! 	* supergraph.cc (supergraph::supergraph): Assign UIDs to the
! 	gimple stmts.
! 	* svalue.cc (cmp_cst): New.
! 	(svalue::cmp_ptr): New.
! 	(svalue::cmp_ptr_ptr): New.
! 
! 2020-10-27  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* engine.cc (exploded_graph::get_or_create_node): Fix off-by-one
! 	when imposing param_analyzer_max_enodes_per_program_point limit.
! 
! 2020-10-27  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* region-model.cc (region_model::get_representative_path_var):
! 	Implement case RK_LABEL.
! 	* region-model.h (label_region::get_label): New accessor.
! 
! 2020-10-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/97514
! 	* engine.cc (exploded_graph::add_function_entry): Handle failure
! 	to create an enode, rather than asserting.
! 
! 2020-10-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/97489
! 	* engine.cc (exploded_graph::add_function_entry): Assert that we
! 	have a function body.
! 	(exploded_graph::on_escaped_function): Reject fndecls that don't
! 	have a function body.
! 
! 2020-10-14  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/93388
! 	* region-model.cc (region_model::get_initial_value_for_global):
! 	Fall back to returning an initial_svalue if
! 	decl_region::get_svalue_for_initializer fails.
! 	* region.cc (decl_region::get_svalue_for_initializer): Don't
! 	attempt to create a compound_svalue if the region has an unknown
! 	size.
! 
! 2020-10-14  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/93723
! 	* store.cc (binding_map::apply_ctor_to_region): Remove redundant
! 	assertion.
! 
! 2020-10-12  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/97258
! 	* engine.cc (impl_region_model_context::on_escaped_function): New
! 	vfunc.
! 	(exploded_graph::add_function_entry): Use m_functions_with_enodes
! 	to implement idempotency.
! 	(add_any_callbacks): New.
! 	(exploded_graph::build_initial_worklist): Use the above to find
! 	callbacks that are reachable from global initializers.
! 	(exploded_graph::on_escaped_function): New.
! 	* exploded-graph.h
! 	(impl_region_model_context::on_escaped_function): New decl.
! 	(exploded_graph::on_escaped_function): New decl.
! 	(exploded_graph::m_functions_with_enodes): New field.
! 	* region-model-reachability.cc
! 	(reachable_regions::reachable_regions): Replace "store" param with
! 	"model" param; use it to initialize m_model.
! 	(reachable_regions::add): When getting the svalue for the region,
! 	call get_store_value on the model rather than using an initial
! 	value.
! 	(reachable_regions::mark_escaped_clusters): Add ctxt param and
! 	use it to call on_escaped_function when a function_region escapes.
! 	* region-model-reachability.h
! 	(reachable_regions::reachable_regions): Replace "store" param with
! 	"model" param.
! 	(reachable_regions::mark_escaped_clusters): Add ctxt param.
! 	(reachable_regions::m_model): New field.
! 	* region-model.cc (region_model::handle_unrecognized_call): Update
! 	for change in reachable_regions ctor.
! 	(region_model::handle_unrecognized_call): Pass ctxt to
! 	mark_escaped_clusters.
! 	(region_model::get_reachable_svalues): Update for change in
! 	reachable_regions ctor.
! 	(region_model::get_initial_value_for_global): Read-only variables
! 	keep their initial values.
! 	* region-model.h (region_model_context::on_escaped_function): New
! 	vfunc.
! 	(noop_region_model_context::on_escaped_function): New.
! 
! 2020-10-12  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer.opt (Wanalyzer-write-to-const): New.
! 	(Wanalyzer-write-to-string-literal): New.
! 	* region-model-impl-calls.cc (region_model::impl_call_memcpy):
! 	Call check_for_writable_region.
! 	(region_model::impl_call_memset): Likewise.
! 	(region_model::impl_call_strcpy): Likewise.
! 	* region-model.cc (class write_to_const_diagnostic): New.
! 	(class write_to_string_literal_diagnostic): New.
! 	(region_model::check_for_writable_region): New.
! 	(region_model::set_value): Call check_for_writable_region.
! 	* region-model.h (region_model::check_for_writable_region): New
! 	decl.
! 
! 2020-10-07  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/97116
! 	* sm-malloc.cc (method_p): New.
! 	(describe_argument_index): New.
! 	(inform_nonnull_attribute): Use describe_argument_index.
! 	(possible_null_arg::describe_final_event): Likewise.
! 	(null_arg::describe_final_event): Likewise.
! 
! 2020-09-29  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/95188
! 	* engine.cc (stmt_requires_new_enode_p): Split enodes before
! 	"signal" calls.
! 
! 2020-09-29  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* constraint-manager.cc
! 	(constraint_manager::add_constraint_internal): Whitespace fixes.
! 	Silence -Wsign-compare warning.
! 	* engine.cc (maybe_process_run_of_before_supernode_enodes):
! 	Silence -Wsign-compare warning.
! 
! 2020-09-28  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* region-model.h (binop_svalue::dyn_cast_binop_svalue): Remove
! 	redundant "virtual".  Add FINAL OVERRIDE.
! 	(widening_svalue::dyn_cast_widening_svalue): Add FINAL OVERRIDE.
! 	(compound_svalue::dyn_cast_compound_svalue): Likewise.
! 	(conjured_svalue::dyn_cast_conjured_svalue): Likewise.
! 
! 2020-09-28  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* diagnostic-manager.cc (null_assignment_sm_context::m_visitor):
! 	Remove unused field.
! 
! 2020-09-28  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/97233
! 	* analyzer.cc (is_longjmp_call_p): Require the initial argument
! 	to be a pointer.
! 	* engine.cc (exploded_node::on_longjmp): Likewise.
! 
! 2020-09-28  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* program-state.cc (sm_state_map::print): Update check
! 	for m_global_state being the start state.
! 
! 2020-09-26  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96646
! 	PR analyzer/96841
! 	* region-model.cc (region_model::get_representative_path_var):
! 	When handling offset_region, wrap the MEM_REF's first argument in
! 	an ADDR_EXPR of pointer type, rather than simply using the tree
! 	for the parent region.  Require the MEM_REF's second argument to
! 	be an integer constant.
! 
! 2020-09-24  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer.h (struct rejected_constraint): New decl.
! 	* analyzer.opt (fanalyzer-feasibility): New option.
! 	* diagnostic-manager.cc (path_builder::path_builder): Add
! 	"problem" param and use it to initialize new field.
! 	(path_builder::get_feasibility_problem): New accessor.
! 	(path_builder::m_feasibility_problem): New field.
! 	(dedupe_winners::add): Remove inversion of logic in "if" clause,
! 	swapping if/else suites.  In the !feasible_p suite, inspect
! 	flag_analyzer_feasibility and add code to handle when this
! 	is off, accepting the infeasible path, but recording the
! 	feasibility_problem.
! 	(diagnostic_manager::emit_saved_diagnostic): Pass the
! 	feasibility_problem to the path_builder.
! 	(diagnostic_manager::add_events_for_eedge): If we have
! 	a feasibility_problem at this edge, use it to add a custom event.
! 	* engine.cc (exploded_path::feasible_p): Pass a
! 	rejected_constraint ** to model.maybe_update_for_edge and transfer
! 	ownership of any created instance to any feasibility_problem.
! 	(feasibility_problem::dump_to_pp): New.
! 	* exploded-graph.h (feasibility_problem::feasibility_problem):
! 	Drop "model" param; add rejected_constraint * param.
! 	(feasibility_problem::~feasibility_problem): New.
! 	(feasibility_problem::dump_to_pp): New decl.
! 	(feasibility_problem::m_model): Drop field.
! 	(feasibility_problem::m_rc): New field.
! 	* program-point.cc (function_point::get_location): Handle
! 	PK_BEFORE_SUPERNODE and PK_AFTER_SUPERNODE.
! 	* program-state.cc (program_state::on_edge): Pass NULL to new
! 	param of region_model::maybe_update_for_edge.
! 	* region-model.cc (region_model::add_constraint): New overload
! 	adding a rejected_constraint ** param.
! 	(region_model::maybe_update_for_edge): Add rejected_constraint **
! 	param and pass it to the various apply_constraints_for_ calls.
! 	(region_model::apply_constraints_for_gcond): Add
! 	rejected_constraint ** param and pass it to add_constraint calls.
! 	(region_model::apply_constraints_for_gswitch): Likewise.
! 	(region_model::apply_constraints_for_exception): Likewise.
! 	(rejected_constraint::dump_to_pp): New.
! 	* region-model.h (region_model::maybe_update_for_edge):
! 	Add rejected_constraint ** param.
! 	(region_model::add_constraint): New overload adding a
! 	rejected_constraint ** param.
! 	(region_model::apply_constraints_for_gcond): Add
! 	rejected_constraint ** param.
! 	(region_model::apply_constraints_for_gswitch): Likewise.
! 	(region_model::apply_constraints_for_exception): Likewise.
! 	(struct rejected_constraint): New.
! 
! 2020-09-23  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/97178
! 	* engine.cc (impl_run_checkers): Update for change to ext_state
! 	ctor.
! 	* program-state.cc (selftest::test_sm_state_map): Pass an engine
! 	instance to ext_state ctor.
! 	(selftest::test_program_state_1): Likewise.
! 	(selftest::test_program_state_2): Likewise.
! 	(selftest::test_program_state_merging): Likewise.
! 	(selftest::test_program_state_merging_2): Likewise.
! 	* program-state.h (extrinsic_state::extrinsic_state): Remove NULL
! 	default value for "eng" param.
! 
! 2020-09-23  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	* analyzer-logging.cc: Guard '#pragma ... ignored "-Wformat-diag"'
! 	by '#if __GNUC__ >= 10'
! 	* analyzer.h: Likewise.
! 	* call-string.cc: Likewise.
! 
! 2020-09-23  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* engine.cc (exploded_node::on_stmt): Replace sequence of dyn_cast
! 	with switch.
! 
! 2020-09-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analysis-plan.cc: Include "json.h".
! 	* analyzer.opt (fdump-analyzer-json): New.
! 	* call-string.cc: Include "json.h".
! 	(call_string::to_json): New.
! 	* call-string.h (call_string::to_json): New decl.
! 	* checker-path.cc: Include "json.h".
! 	* constraint-manager.cc: Include "json.h".
! 	(equiv_class::to_json): New.
! 	(constraint::to_json): New.
! 	(constraint_manager::to_json): New.
! 	* constraint-manager.h (equiv_class::to_json): New decl.
! 	(constraint::to_json): New decl.
! 	(constraint_manager::to_json): New decl.
! 	* diagnostic-manager.cc: Include "json.h".
! 	(saved_diagnostic::to_json): New.
! 	(diagnostic_manager::to_json): New.
! 	* diagnostic-manager.h (saved_diagnostic::to_json): New decl.
! 	(diagnostic_manager::to_json): New decl.
! 	* engine.cc: Include "json.h", <zlib.h>.
! 	(exploded_node::status_to_str): New.
! 	(exploded_node::to_json): New.
! 	(exploded_edge::to_json): New.
! 	(exploded_graph::to_json): New.
! 	(dump_analyzer_json): New.
! 	(impl_run_checkers): Call it.
! 	* exploded-graph.h (exploded_node::status_to_str): New decl.
! 	(exploded_node::to_json): New.
! 	(exploded_edge::to_json): New.
! 	(exploded_graph::to_json): New.
! 	* pending-diagnostic.cc: Include "json.h".
! 	* program-point.cc: Include "json.h".
! 	(program_point::to_json): New.
! 	* program-point.h (program_point::to_json): New decl.
! 	* program-state.cc: Include "json.h".
! 	(extrinsic_state::to_json): New.
! 	(sm_state_map::to_json): New.
! 	(program_state::to_json): New.
! 	* program-state.h (extrinsic_state::to_json): New decl.
! 	(sm_state_map::to_json): New decl.
! 	(program_state::to_json): New decl.
! 	* region-model-impl-calls.cc: Include "json.h".
! 	* region-model-manager.cc: Include "json.h".
! 	* region-model-reachability.cc: Include "json.h".
! 	* region-model.cc: Include "json.h".
! 	* region-model.h (svalue::to_json): New decl.
! 	(region::to_json): New decl.
! 	* region.cc: Include "json.h".
! 	(region::to_json: New.
! 	* sm-file.cc: Include "json.h".
! 	* sm-malloc.cc: Include "json.h".
! 	* sm-pattern-test.cc: Include "json.h".
! 	* sm-sensitive.cc: Include "json.h".
! 	* sm-signal.cc: Include "json.h".
! 	(signal_delivery_edge_info_t::to_json): New.
! 	* sm-taint.cc: Include "json.h".
! 	* sm.cc: Include "diagnostic.h", "tree-diagnostic.h", and
! 	"json.h".
! 	(state_machine::state::to_json): New.
! 	(state_machine::to_json): New.
! 	* sm.h (state_machine::state::to_json): New.
! 	(state_machine::to_json): New.
! 	* state-purge.cc: Include "json.h".
! 	* store.cc: Include "json.h".
! 	(binding_key::get_desc): New.
! 	(binding_map::to_json): New.
! 	(binding_cluster::to_json): New.
! 	(store::to_json): New.
! 	* store.h (binding_key::get_desc): New decl.
! 	(binding_map::to_json): New decl.
! 	(binding_cluster::to_json): New decl.
! 	(store::to_json): New decl.
! 	* supergraph.cc: Include "json.h".
! 	(supergraph::to_json): New.
! 	(supernode::to_json): New.
! 	(superedge::to_json): New.
! 	* supergraph.h (supergraph::to_json): New decl.
! 	(supernode::to_json): New decl.
! 	(superedge::to_json): New decl.
! 	* svalue.cc: Include "json.h".
! 	(svalue::to_json): New.
! 
! 2020-09-21  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/97130
! 	* region-model-impl-calls.cc (call_details::get_arg_type): New.
! 	* region-model.cc (region_model::on_call_pre): Check that the
! 	initial arg is a pointer before calling impl_call_memset and
! 	impl_call_strlen.
! 	* region-model.h (call_details::get_arg_type): New decl.
! 
! 2020-09-21  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/93355
! 	* sm-malloc.cc (malloc_state_machine::get_default_state): Look at
! 	the base region when considering pointers.  Treat pointers to
! 	decls as being non-heap.
! 
! 2020-09-18  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* checker-path.cc (warning_event::get_desc): Handle global state
! 	changes.
! 
! 2020-09-18  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* sm-malloc.cc (malloc_state_machine::on_stmt): Handle strdup and
! 	strndup as being malloc-like allocators.
! 
! 2020-09-16  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* engine.cc (strongly_connected_components::strong_connect): Only
! 	consider intraprocedural edges when creating SCCs.
! 	(worklist::key_t::cmp): Add comment.  Treat call_string
! 	differences as more important than differences of program_point
! 	within a supernode.
! 
! 2020-09-16  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* engine.cc (supernode_cluster::dump_dot): Show the SCC id
! 	in the per-supernode clusters in FILENAME.eg.dot output.
! 	(exploded_graph_annotator::add_node_annotations):
! 	Show the SCC of the supernode in FILENAME.supernode.eg.dot output.
! 	* exploded-graph.h (worklist::scc_id): New.
! 	(exploded_graph::get_scc_id): New.
! 
! 2020-09-16  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* engine.cc (exploded_node::dump_dot): Show STATUS_BULK_MERGED.
! 	(exploded_graph::process_worklist): Call
! 	maybe_process_run_of_before_supernode_enodes.
! 	(exploded_graph::maybe_process_run_of_before_supernode_enodes):
! 	New.
! 	(exploded_graph_annotator::print_enode): Show STATUS_BULK_MERGED.
! 	* exploded-graph.h (enum exploded_node::status): Add
! 	STATUS_BULK_MERGED.
! 
! 2020-09-16  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* engine.cc
! 	(exploded_graph::process_node) <case PK_BEFORE_SUPERNODE>:
! 	Simplify by using program_point::get_next.
! 	* program-point.cc (program_point::get_next): New.
! 	* program-point.h (program_point::get_next): New decl.
! 
! 2020-09-16  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* engine.cc (exploded_graph::get_or_create_node): Show the
! 	program point when issuing -Wanalyzer-too-complex due to hitting
! 	the per-program-point limit.
! 
! 2020-09-16  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* region-model.cc (region_model::on_call_pre): Treat getchar as
! 	having no side-effects.
! 
! 2020-09-15  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96650
! 	* constraint-manager.cc (merger_fact_visitor::on_fact): Replace
! 	assertion that add_constraint succeeded with an assertion that
! 	if it fails, -fanalyzer-transitivity is off.
! 
! 2020-09-14  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer.opt (-param=analyzer-max-constraints=): New param.
! 	* constraint-manager.cc
! 	(constraint_manager::add_constraint_internal): Silently reject
! 	attempts to add constraints when the above limit is reached.
! 
! 2020-09-14  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96653
! 	* constraint-manager.cc
! 	(constraint_manager::get_or_add_equiv_class): Don't accumulate
! 	transitive closure of all constraints on constants.
! 
! 2020-09-14  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/97029
! 	* analyzer.cc (is_setjmp_call_p): Require the initial arg to be a
! 	pointer.
! 	* region-model.cc (region_model::deref_rvalue): Assert that the
! 	svalue is of pointer type.
! 
! 2020-09-11  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96798
! 	* region-model-impl-calls.cc (region_model::impl_call_memcpy):
! 	New.
! 	(region_model::impl_call_strcpy): New.
! 	* region-model.cc (region_model::on_call_pre): Flag unhandled
! 	builtins that are non-pure as having unknown side-effects.
! 	Implement BUILT_IN_MEMCPY, BUILT_IN_MEMCPY_CHK, BUILT_IN_STRCPY,
! 	BUILT_IN_STRCPY_CHK, BUILT_IN_FPRINTF, BUILT_IN_FPRINTF_UNLOCKED,
! 	BUILT_IN_PUTC, BUILT_IN_PUTC_UNLOCKED, BUILT_IN_FPUTC,
! 	BUILT_IN_FPUTC_UNLOCKED, BUILT_IN_FPUTS, BUILT_IN_FPUTS_UNLOCKED,
! 	BUILT_IN_FWRITE, BUILT_IN_FWRITE_UNLOCKED, BUILT_IN_PRINTF,
! 	BUILT_IN_PRINTF_UNLOCKED, BUILT_IN_PUTCHAR,
! 	BUILT_IN_PUTCHAR_UNLOCKED, BUILT_IN_PUTS, BUILT_IN_PUTS_UNLOCKED,
! 	BUILT_IN_VFPRINTF, BUILT_IN_VPRINTF.
! 	* region-model.h (region_model::impl_call_memcpy): New decl.
! 	(region_model::impl_call_strcpy): New decl.
! 
! 2020-09-09  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/94355
! 	* analyzer.opt (Wanalyzer-mismatching-deallocation): New warning.
! 	* region-model-impl-calls.cc
! 	(region_model::impl_call_operator_new): New.
! 	(region_model::impl_call_operator_delete): New.
! 	* region-model.cc (region_model::on_call_pre): Detect operator new
! 	and operator delete.
! 	(region_model::on_call_post): Likewise.
! 	(region_model::maybe_update_for_edge): Detect EH edges and call...
! 	(region_model::apply_constraints_for_exception): New function.
! 	* region-model.h (region_model::impl_call_operator_new): New decl.
! 	(region_model::impl_call_operator_delete): New decl.
! 	(region_model::apply_constraints_for_exception): New decl.
! 	* sm-malloc.cc (enum resource_state): New.
! 	(struct allocation_state): New state subclass.
! 	(enum wording): New.
! 	(struct api): New.
! 	(malloc_state_machine::custom_data_t): New typedef.
! 	(malloc_state_machine::add_state): New decl.
! 	(malloc_state_machine::m_unchecked)
! 	(malloc_state_machine::m_nonnull)
! 	(malloc_state_machine::m_freed): Delete these states in favor
! 	of...
! 	(malloc_state_machine::m_malloc)
! 	(malloc_state_machine::m_scalar_new)
! 	(malloc_state_machine::m_vector_new): ...this new api instances,
! 	which own their own versions of these states.
! 	(malloc_state_machine::on_allocator_call): New decl.
! 	(malloc_state_machine::on_deallocator_call): New decl.
! 	(api::api): New ctor.
! 	(dyn_cast_allocation_state): New.
! 	(as_a_allocation_state): New.
! 	(get_rs): New.
! 	(unchecked_p): New.
! 	(nonnull_p): New.
! 	(freed_p): New.
! 	(malloc_diagnostic::describe_state_change): Use unchecked_p and
! 	nonnull_p.
! 	(class mismatching_deallocation): New.
! 	(double_free::double_free): Add funcname param for initializing
! 	m_funcname.
! 	(double_free::emit): Use m_funcname in warning message rather
! 	than hardcoding "free".
! 	(double_free::describe_state_change): Likewise.  Use freed_p.
! 	(double_free::describe_call_with_state): Use freed_p.
! 	(double_free::describe_final_event): Use m_funcname in message
! 	rather than hardcoding "free".
! 	(double_free::m_funcname): New field.
! 	(possible_null::describe_state_change): Use unchecked_p.
! 	(possible_null::describe_return_of_state): Likewise.
! 	(use_after_free::use_after_free): Add param for initializing m_api.
! 	(use_after_free::emit): Use m_api->m_dealloc_funcname in message
! 	rather than hardcoding "free".
! 	(use_after_free::describe_state_change): Use freed_p.  Change the
! 	wording of the message based on the API.
! 	(use_after_free::describe_final_event): Use
! 	m_api->m_dealloc_funcname in message rather than hardcoding
! 	"free".  Change the wording of the message based on the API.
! 	(use_after_free::m_api): New field.
! 	(malloc_leak::describe_state_change): Use unchecked_p.  Update
! 	for renaming of m_malloc_event to m_alloc_event.
! 	(malloc_leak::describe_final_event): Update for renaming of
! 	m_malloc_event to m_alloc_event.
! 	(malloc_leak::m_malloc_event): Rename...
! 	(malloc_leak::m_alloc_event): ...to this.
! 	(free_of_non_heap::free_of_non_heap): Add param for initializing
! 	m_funcname.
! 	(free_of_non_heap::emit): Use m_funcname in message rather than
! 	hardcoding "free".
! 	(free_of_non_heap::describe_final_event): Likewise.
! 	(free_of_non_heap::m_funcname): New field.
! 	(allocation_state::dump_to_pp): New.
! 	(allocation_state::get_nonnull): New.
! 	(malloc_state_machine::malloc_state_machine): Update for changes
! 	to state fields and new api fields.
! 	(malloc_state_machine::add_state): New.
! 	(malloc_state_machine::on_stmt): Move malloc/calloc handling to
! 	on_allocator_call and call it, passing in the API pointer.
! 	Likewise for free, moving it to on_deallocator_call.  Handle calls
! 	to operator new and delete in an analogous way.  Use unchecked_p
! 	when testing for possibly-null-arg and possibly-null-deref, and
! 	transition to the non-null for the correct API.  Remove redundant
! 	node param from call to on_zero_assignment.  Use freed_p for
! 	use-after-free check, and pass in API.
! 	(malloc_state_machine::on_allocator_call): New, based on code in
! 	on_stmt.
! 	(malloc_state_machine::on_deallocator_call): Likewise.
! 	(malloc_state_machine::on_phi): Mark node param with
! 	ATTRIBUTE_UNUSED; don't pass it to on_zero_assignment.
! 	(malloc_state_machine::on_condition): Mark node param with
! 	ATTRIBUTE_UNUSED.  Replace on_transition calls with get_state and
! 	set_next_state pairs, transitioning to the non-null state for the
! 	appropriate API.
! 	(malloc_state_machine::can_purge_p): Port to new state approach.
! 	(malloc_state_machine::on_zero_assignment): Replace on_transition
! 	calls with get_state and set_next_state pairs.  Drop redundant
! 	node param.
! 	* sm.h (state_machine::add_custom_state): New.
! 
! 2020-09-09  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* diagnostic-manager.cc
! 	(null_assignment_sm_context::warn_for_state): Replace with...
! 	(null_assignment_sm_context::warn): ...this.
! 	* engine.cc (impl_sm_context::warn_for_state): Replace with...
! 	(impl_sm_context::warn): ...this.
! 	* sm-file.cc (fileptr_state_machine::on_stmt): Replace
! 	warn_for_state and on_transition calls with a get_state
! 	test guarding warn and set_next_state calls.
! 	* sm-malloc.cc (malloc_state_machine::on_stmt): Likewise.
! 	* sm-pattern-test.cc (pattern_test_state_machine::on_condition):
! 	Replace warn_for_state call with warn call.
! 	* sm-sensitive.cc
! 	(sensitive_state_machine::warn_for_any_exposure): Replace
! 	warn_for_state call with a get_state test guarding a warn call.
! 	* sm-signal.cc (signal_state_machine::on_stmt): Likewise.
! 	* sm-taint.cc (taint_state_machine::on_stmt):  Replace
! 	warn_for_state and on_transition calls with a get_state
! 	test guarding warn and set_next_state calls.
! 	* sm.h (sm_context::warn_for_state): Replace with...
! 	(sm_context::warn): ...this.
! 
! 2020-09-09  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* diagnostic-manager.cc
! 	(null_assignment_sm_context::null_assignment_sm_context): Add old_state
! 	and ext_state params, initializing m_old_state and m_ext_state.
! 	(null_assignment_sm_context::on_transition): Split into...
! 	(null_assignment_sm_context::get_state): ...this new vfunc
! 	implementation and...
! 	(null_assignment_sm_context::set_next_state): ...this new vfunc
! 	implementation.
! 	(null_assignment_sm_context::m_old_state): New field.
! 	(null_assignment_sm_context::m_ext_state): New field.
! 	(diagnostic_manager::add_events_for_eedge): Pass in old state and
! 	ext_state when creating sm_ctxt.
! 	* engine.cc (impl_sm_context::on_transition): Split into...
! 	(impl_sm_context::get_state): ...this new vfunc
! 	implementation and...
! 	(impl_sm_context::set_next_state): ...this new vfunc
! 	implementation.
! 	* sm.h (sm_context::get_state): New pure virtual function.
! 	(sm_context::set_next_state): Likewise.
! 	(sm_context::on_transition): Convert from a pure virtual function
! 	to a regular function implemented in terms of get_state and
! 	set_next_state.
! 
! 2020-09-09  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* checker-path.cc (state_change_event::get_desc): Update
! 	state_machine::get_state_name calls to state::get_name.
! 	(warning_event::get_desc): Likewise.
! 	* diagnostic-manager.cc
! 	(null_assignment_sm_context::on_transition): Update comparison
! 	against 0 with comparison with m_sm.get_start_state.
! 	(diagnostic_manager::prune_for_sm_diagnostic): Update
! 	state_machine::get_state_name calls to state::get_name.
! 	* engine.cc (impl_sm_context::on_transition): Likewise.
! 	(exploded_node::get_dot_fillcolor): Use get_id when summing
! 	the sm states.
! 	* program-state.cc (sm_state_map::sm_state_map): Don't hardcode
! 	0 as the start state when initializing m_global_state.
! 	(sm_state_map::print): Use dump_to_pp rather than get_state_name
! 	when dumping states.
! 	(sm_state_map::is_empty_p): Don't hardcode 0 as the start state
! 	when examining m_global_state.
! 	(sm_state_map::hash): Use get_id when hashing states.
! 	(selftest::test_sm_state_map): Use state objects rather than
! 	arbitrary hardcoded integers.
! 	(selftest::test_program_state_merging): Likewise.
! 	(selftest::test_program_state_merging_2): Likewise.
! 	* sm-file.cc (fileptr_state_machine::m_start): Move to base class.
! 	(file_diagnostic::describe_state_change): Use get_start_state.
! 	(fileptr_state_machine::fileptr_state_machine): Drop m_start
! 	initialization.
! 	* sm-malloc.cc (malloc_state_machine::m_start): Move to base
! 	class.
! 	(malloc_diagnostic::describe_state_change): Use get_start_state.
! 	(possible_null::describe_state_change): Likewise.
! 	(malloc_state_machine::malloc_state_machine): Drop m_start
! 	initialization.
! 	* sm-pattern-test.cc (pattern_test_state_machine::m_start): Move
! 	to base class.
! 	(pattern_test_state_machine::pattern_test_state_machine): Drop
! 	m_start initialization.
! 	* sm-sensitive.cc (sensitive_state_machine::m_start): Move to base
! 	class.
! 	(sensitive_state_machine::sensitive_state_machine): Drop m_start
! 	initialization.
! 	* sm-signal.cc (signal_state_machine::m_start): Move to base
! 	class.
! 	(signal_state_machine::signal_state_machine): Drop m_start
! 	initialization.
! 	* sm-taint.cc (taint_state_machine::m_start): Move to base class.
! 	(taint_state_machine::taint_state_machine): Drop m_start
! 	initialization.
! 	* sm.cc (state_machine::state::dump_to_pp): New.
! 	(state_machine::state_machine): Move here from sm.h.  Initialize
! 	m_next_state_id and m_start.
! 	(state_machine::add_state): Reimplement in terms of state objects.
! 	(state_machine::get_state_name): Delete.
! 	(state_machine::get_state_by_name): Reimplement in terms of state
! 	objects.  Make const.
! 	(state_machine::validate): Delete.
! 	(state_machine::dump_to_pp): Reimplement in terms of state
! 	objects.
! 	* sm.h (state_machine::state): New class.
! 	(state_machine::state_t): Convert typedef from "unsigned" to
! 	"const state_machine::state *".
! 	(state_machine::state_machine): Move to sm.cc.
! 	(state_machine::get_default_state): Use m_start rather than
! 	hardcoding 0.
! 	(state_machine::get_state_name): Delete.
! 	(state_machine::get_state_by_name): Make const.
! 	(state_machine::get_start_state): New accessor.
! 	(state_machine::alloc_state_id): New.
! 	(state_machine::m_state_names): Drop in favor of...
! 	(state_machine::m_states): New field
! 	(state_machine::m_start): New field
! 	(start_start_p): Delete.
! 
! 2020-09-08  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96949
! 	* store.cc (binding_map::apply_ctor_val_to_range): Add
! 	error-handling for the cases where we have symbolic offsets.
! 
! 2020-09-08  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96950
! 	* store.cc (binding_map::apply_ctor_to_region): Handle RANGE_EXPR
! 	where min_index == max_index.
! 	(binding_map::apply_ctor_val_to_range): Replace assertion that we
! 	don't have a CONSTRUCTOR value with error-handling.
! 
! 2020-09-08  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96962
! 	* region-model.cc (region_model::on_call_pre): Fix guard on switch
! 	on built-ins to only consider BUILT_IN_NORMAL, rather than other
! 	kinds of build-ins.
! 
! 2020-09-01  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96792
! 	* region-model.cc (region_model::deref_rvalue): Add the constraint
! 	that PTR_SVAL is non-NULL.
! 
! 2020-08-31  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96798
! 	* region-model.cc (region_model::on_call_pre): Handle
! 	BUILT_IN_MEMSET_CHK.
! 
! 2020-08-31  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* region-model.cc (region_model::on_call_pre): Gather handling of
! 	builtins and of internal fns into switch statements.  Handle
! 	"alloca" and BUILT_IN_ALLOCA_WITH_ALIGN.
! 
! 2020-08-31  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96860
! 	* region.cc (decl_region::get_svalue_for_constructor): Support
! 	apply_ctor_to_region failing.
! 	* store.cc (binding_map::apply_ctor_to_region): Add failure
! 	handling.
! 	(binding_map::apply_ctor_val_to_range): Likewise.
! 	(binding_map::apply_ctor_pair_to_child_region): Likewise.  Replace
! 	assertion that child_base_offset is not symbolic with error
! 	handling.
! 	* store.h (binding_map::apply_ctor_to_region): Convert return type
! 	from void to bool.
! 	(binding_map::apply_ctor_val_to_range): Likewise.
! 	(binding_map::apply_ctor_pair_to_child_region): Likewise.
! 
! 2020-08-31  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96763
! 	* store.cc (binding_map::apply_ctor_to_region): Handle RANGE_EXPR
! 	by calling a new binding_map::apply_ctor_val_to_range subroutine.
! 	Split out the existing non-CONSTRUCTOR-handling code to a new
! 	apply_ctor_pair_to_child_region subroutine.
! 	(binding_map::apply_ctor_val_to_range): New.
! 	(binding_map::apply_ctor_pair_to_child_region): New, split out
! 	from binding_map::apply_ctor_to_region as noted above.
! 	* store.h (binding_map::apply_ctor_val_to_range): New decl.
! 	(binding_map::apply_ctor_pair_to_child_region): New decl.
! 
! 2020-08-31  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96764
! 	* region-model-manager.cc
! 	(region_model_manager::maybe_fold_unaryop): Handle VIEW_CONVERT_EXPR.
! 	(region_model_manager::get_or_create_cast): Move logic for
! 	real->integer casting to...
! 	(get_code_for_cast): ...this new function, and add logic for
! 	real->non-integer casts.
! 	(region_model_manager::maybe_fold_sub_svalue): Handle
! 	VIEW_CONVERT_EXPR.
! 	* region-model.cc
! 	(region_model::add_any_constraints_from_gassign): Likewise.
! 	* svalue.cc (svalue::maybe_undo_cast): Likewise.
! 	(unaryop_svalue::dump_to_pp): Likewise.
! 
! 2020-08-26  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/94858
! 	* region-model-manager.cc
! 	(region_model_manager::get_or_create_widening_svalue): Assert that
! 	neither of the inputs are themselves widenings.
! 	* store.cc (store::eval_alias_1): The initial value of a pointer
! 	can't point to a region that was allocated on the heap after the
! 	beginning of the path.  A widened pointer value can't alias anything
! 	that the initial pointer value can't alias.
! 	* svalue.cc (svalue::can_merge_p): Merge BINOP (X, OP, CST) with X
! 	to a widening svalue.  Merge
! 	BINOP(WIDENING(BASE, BINOP(BASE, X)), X) and BINOP(BASE, X) to
! 	to the LHS of the first BINOP.
! 
! 2020-08-26  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96777
! 	* region-model.h (class compound_svalue): Document that all keys
! 	must be concrete.
! 	(compound_svalue::compound_svalue): Move definition to svalue.cc.
! 	* store.cc (binding_map::apply_ctor_to_region): Handle
! 	initializers for trailing arrays with incomplete size.
! 	* svalue.cc (compound_svalue::compound_svalue): Move definition
! 	here from region-model.h.  Add assertion that all keys are
! 	concrete.
! 
! 2020-08-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/94851
! 	* region-model-manager.cc
! 	(region_model_manager::maybe_fold_binop): Fold bitwise "& 0" to 0.
! 
! 2020-08-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* store.cc (store::eval_alias): Make const.  Split out 2nd half
! 	into store::eval_alias_1 and call it twice for symmetry, avoiding
! 	test duplication.
! 	(store::eval_alias_1): New function, split out from the above.
! 	* store.h (store::eval_alias): Make const.
! 	(store::eval_alias_1): New decl.
! 
! 2020-08-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* region-model.cc (region_model::push_frame): Bind the default
! 	SSA name for each parm if it exists, falling back to the parm
! 	itself otherwise, rather than doing both.
! 
! 2020-08-20  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96723
! 	* region-model-manager.cc
! 	(region_model_manager::get_field_region): Assert that field is a
! 	FIELD_DECL.
! 	* region.cc (region::get_subregions_for_binding): In
! 	union-handling, filter the TYPE_FIELDS traversal to just FIELD_DECLs.
! 
! 2020-08-20  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96713
! 	* region-model.cc (region_model::get_gassign_result): For
! 	comparisons, only use eval_condition when the lhs has boolean
! 	type, and use get_or_create_constant_svalue on the boolean
! 	constants directly rather than via get_rvalue.
! 
! 2020-08-19  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96643
! 	* region-model.cc (region_model::deref_rvalue): Rather than
! 	attempting to handle all svalue kinds in the switch, only cover
! 	the special cases, and move symbolic-region handling to after
! 	the switch, thus implicitly handling the missing case SK_COMPOUND.
! 
! 2020-08-19  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96705
! 	* region-model-manager.cc
! 	(region_model_manager::maybe_fold_binop): Check that we have an
! 	integral type before calling build_int_cst.
! 
! 2020-08-19  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96699
! 	* region-model-manager.cc
! 	(region_model_manager::get_or_create_cast): Use FIX_TRUNC_EXPR for
! 	casting from REAL_TYPE to INTEGER_TYPE.
! 
! 2020-08-19  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96651
! 	* region-model.cc (region_model::called_from_main_p): New.
! 	(region_model::get_store_value): Move handling for globals into...
! 	(region_model::get_initial_value_for_global): ...this new
! 	function, and add logic for extracting values from decl
! 	initializers.
! 	* region-model.h (decl_region::get_svalue_for_constructor): New
! 	decl.
! 	(decl_region::get_svalue_for_initializer): New decl.
! 	(region_model::called_from_main_p): New decl.
! 	(region_model::get_initial_value_for_global): New.
! 	* region.cc (decl_region::maybe_get_constant_value): Move logic
! 	for getting an svalue from a CONSTRUCTOR node to...
! 	(decl_region::get_svalue_for_constructor): ...this new function.
! 	(decl_region::get_svalue_for_initializer): New.
! 	* store.cc (get_svalue_for_ctor_val): Rewrite in terms of
! 	region_model::get_rvalue.
! 	* store.h (binding_cluster::get_map): New accessor.
! 
! 2020-08-19  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96648
! 	* region.cc (get_field_at_bit_offset): Gracefully handle negative
! 	values for bit_offset.
! 
! 2020-08-18  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* region-model.cc (region_model::get_rvalue_1): Fix name of local.
! 
! 2020-08-18  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96641
! 	* region-model.cc (region_model::get_rvalue_1): Handle
! 	unrecognized tree codes by returning "UNKNOWN.
! 
! 2020-08-18  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96640
! 	* region-model.cc (region_model::get_gassign_result): Handle various
! 	VEC_* tree codes by returning UNKNOWN.
! 	(region_model::on_assignment): Handle unrecognized tree codes by
! 	setting lhs to an unknown value, rather than issuing a "sorry" and
! 	asserting.
! 
! 2020-08-17  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96644
! 	* region-model-manager.cc (get_region_for_unexpected_tree_code):
! 	Handle ctxt being NULL.
! 
! 2020-08-17  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96639
! 	* region.cc (region::get_subregions_for_binding): Check for "type"
! 	being NULL.
! 
! 2020-08-17  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96642
! 	* store.cc (get_svalue_for_ctor_val): New.
! 	(binding_map::apply_ctor_to_region): Call it.
! 
! 2020-08-14  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR testsuite/96609
! 	PR analyzer/96616
! 	* region-model.cc (region_model::get_store_value): Call
! 	maybe_get_constant_value on decl_regions first.
! 	* region-model.h (decl_region::maybe_get_constant_value): New decl.
! 	* region.cc (decl_region::get_stack_depth): Likewise.
! 	(decl_region::maybe_get_constant_value): New.
! 	* store.cc (get_subregion_within_ctor): New.
! 	(binding_map::apply_ctor_to_region): New.
! 	* store.h (binding_map::apply_ctor_to_region): New decl.
! 
! 2020-08-14  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/96611
! 	* store.cc (store::mark_as_escaped): Reject attempts to
! 	get a cluster for an unknown pointer.
! 
! 2020-08-13  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/93032
! 	PR analyzer/93938
! 	PR analyzer/94011
! 	PR analyzer/94099
! 	PR analyzer/94399
! 	PR analyzer/94458
! 	PR analyzer/94503
! 	PR analyzer/94640
! 	PR analyzer/94688
! 	PR analyzer/94689
! 	PR analyzer/94839
! 	PR analyzer/95026
! 	PR analyzer/95042
! 	PR analyzer/95240
! 	* analyzer-logging.cc: Ignore "-Wformat-diag".
! 	(logger::enter_scope): Use inc_indent in both overloads.
! 	(logger::exit_scope): Use dec_indent.
! 	* analyzer-logging.h (logger::inc_indent): New.
! 	(logger::dec_indent): New.
! 	* analyzer-selftests.cc (run_analyzer_selftests): Call
! 	analyzer_store_cc_tests.
! 	* analyzer-selftests.h (analyzer_store_cc_tests): New decl.
! 	* analyzer.cc (get_stmt_location): New function.
! 	* analyzer.h (class initial_svalue): New forward decl.
! 	(class unaryop_svalue): New forward decl.
! 	(class binop_svalue): New forward decl.
! 	(class sub_svalue): New forward decl.
! 	(class unmergeable_svalue): New forward decl.
! 	(class placeholder_svalue): New forward decl.
! 	(class widening_svalue): New forward decl.
! 	(class compound_svalue): New forward decl.
! 	(class conjured_svalue): New forward decl.
! 	(svalue_set): New typedef.
! 	(class map_region): Delete.
! 	(class array_region): Delete.
! 	(class frame_region): New forward decl.
! 	(class function_region): New forward decl.
! 	(class label_region): New forward decl.
! 	(class decl_region): New forward decl.
! 	(class element_region): New forward decl.
! 	(class offset_region): New forward decl.
! 	(class cast_region): New forward decl.
! 	(class field_region): New forward decl.
! 	(class string_region): New forward decl.
! 	(class region_model_manager): New forward decl.
! 	(class store_manager): New forward decl.
! 	(class store): New forward decl.
! 	(class call_details): New forward decl.
! 	(struct svalue_id_merger_mapping): Delete.
! 	(struct canonicalization): Delete.
! 	(class function_point): New forward decl.
! 	(class engine): New forward decl.
! 	(dump_tree): New function decl.
! 	(print_quoted_type): New function decl.
! 	(readability_comparator): New function decl.
! 	(tree_cmp): New function decl.
! 	(class path_var): Move here from region-model.h
! 	(bit_offset_t, bit_size_t, byte_size_t): New typedefs.
! 	(class region_offset): New class.
! 	(get_stmt_location): New decl.
! 	(struct member_function_hash_traits): New struct.
! 	(class consolidation_map): New class.
! 	Ignore "-Wformat-diag".
! 	* analyzer.opt (-param=analyzer-max-svalue-depth=): New param.
! 	(-param=analyzer-max-enodes-for-full-dump=): New param.
! 	* call-string.cc: Ignore -Wformat-diag.
! 	* checker-path.cc: Move includes of "analyzer/call-string.h" and
! 	"analyzer/program-point.h" to before "analyzer/region-model.h",
! 	and also include "analyzer/store.h" before it.
! 	(state_change_event::state_change_event): Replace "tree var" param
! 	with "const svalue *sval".  Convert "origin" param from tree to
! 	"const svalue *".
! 	(state_change_event::get_desc): Call get_representative_tree to
! 	convert the var and origin from const svalue * to tree.  Use
! 	svalue::get_desc rather than %qE when describing state changes.
! 	(checker_path::add_final_event): Use get_stmt_location.
! 	* checker-path.h (state_change_event::state_change_event): Port
! 	from tree to const svalue *.
! 	(state_change_event::get_lvalue): Delete.
! 	(state_change_event::get_dest_function): New.
! 	(state_change_event::m_var): Replace with...
! 	(state_change_event::m_sval): ...this.
! 	(state_change_event::m_origin): Convert from tree to
! 	const svalue *.
! 	* constraint-manager.cc: Include "analyzer/call-string.h",
! 	"analyzer/program-point.h", and "analyzer/store.h" before
! 	"analyzer/region-model.h".
! 	(struct bound, struct range): Move to constraint-manager.h.
! 	(compare_constants): New function.
! 	(range::dump): Rename to...
! 	(range::dump_to_pp): ...this.  Support NULL constants.
! 	(range::dump): Reintroduce for dumping to stderr.
! 	(range::constrained_to_single_element): Return result, rather than
! 	writing to *OUT.
! 	(range::eval_condition): New.
! 	(range::below_lower_bound): New.
! 	(range::above_upper_bound): New.
! 	(equiv_class::equiv_class): Port from svalue_id to const svalue *.
! 	(equiv_class::print): Likewise.
! 	(equiv_class::hash): Likewise.
! 	(equiv_class::operator==): Port from svalue_id to const svalue *.
! 	(equiv_class::add): Port from svalue_id to const svalue *. Drop
! 	"cm" param.
! 	(equiv_class::del): Port from svalue_id to const svalue *.
! 	(equiv_class::get_representative): Likewise.
! 	(equiv_class::remap_svalue_ids): Delete.
! 	(svalue_id_cmp_by_id): Rename to...
! 	(svalue_cmp_by_ptr): ...this, porting from svalue_id to
! 	const svalue *.
! 	(equiv_class::canonicalize): Update qsort comparator.
! 	(constraint::implied_by): New.
! 	(constraint_manager::constraint_manager): Copy m_mgr in copy ctor.
! 	(constraint_manager::dump_to_pp): Add "multiline" param
! 	(constraint_manager::dump): Pass "true" for "multiline".
! 	(constraint_manager::add_constraint): Port from svalue_id to
! 	const svalue *.  Split out second part into...
! 	(constraint_manager::add_unknown_constraint): ...this new
! 	function.  Remove self-constraints when merging equivalence
! 	classes.
! 	(constraint_manager::add_constraint_internal): Remove constraints
! 	that would be implied by the new constraint.  Port from svalue_id
! 	to const svalue *.
! 	(constraint_manager::get_equiv_class_by_sid): Rename to...
! 	(constraint_manager::get_equiv_class_by_svalue): ...this, porting
! 	from svalue_id to const svalue *.
! 	(constraint_manager::get_or_add_equiv_class): Port from svalue_id
! 	to const svalue *.
! 	(constraint_manager::eval_condition): Make const.  Call
! 	compare_constants and return early if it provides a known result.
! 	(constraint_manager::get_ec_bounds): New.
! 	(constraint_manager::eval_condition): New overloads.  Make
! 	existing one const, and use compare_constants.
! 	(constraint_manager::purge): Convert "p" param to a template
! 	rather that an abstract base class.  Port from svalue_id to
! 	const svalue *.
! 	(class dead_svalue_purger): New class.
! 	(constraint_manager::remap_svalue_ids): Delete.
! 	(constraint_manager::on_liveness_change): New.
! 	(equiv_class_cmp): Port from svalue_id to const svalue *.
! 	(constraint_manager::canonicalize): Likewise.  Combine with
! 	purging of redundant equivalence classes and constraints.
! 	(class cleaned_constraint_manager): Delete.
! 	(class merger_fact_visitor): Make "m_cm_b" const.  Add "m_merger"
! 	field.
! 	(merger_fact_visitor::fact): Port from svalue_id to const svalue *.
! 	Add special case for widening.
! 	(constraint_manager::merge): Port from svalue_id to const svalue *.
! 	(constraint_manager::clean_merger_input): Delete.
! 	(constraint_manager::for_each_fact): Port from svalue_id to
! 	const svalue *.
! 	(constraint_manager::validate): Likewise.
! 	(selftest::test_constraint_conditions): Provide a
! 	region_model_manager when creating region_model instances.
! 	Add test for self-equality not creating equivalence classes.
! 	(selftest::test_transitivity): Provide a region_model_manager when
! 	creating region_model instances.  Verify that EC-merging happens
! 	when constraints are implied.
! 	(selftest::test_constant_comparisons):  Provide a
! 	region_model_manager when creating region_model instances.
! 	(selftest::test_constraint_impl): Likewise.  Remove over-specified
! 	assertions.
! 	(selftest::test_equality): Provide a region_model_manager when
! 	creating region_model instances.
! 	(selftest::test_many_constants): Likewise.  Provide a
! 	program_point when testing merging.
! 	(selftest::run_constraint_manager_tests): Move call to
! 	test_constant_comparisons to outside the transitivity guard.
! 	* constraint-manager.h (struct bound): Move here from
! 	constraint-manager.cc.
! 	(struct range): Likewise.
! 	(struct::eval_condition): New decl.
! 	(struct::below_lower_bound): New decl.
! 	(struct::above_upper_bound): New decl.
! 	(equiv_class::add): Port from svalue_id to const svalue *.
! 	(equiv_class::del): Likewise.
! 	(equiv_class::get_representative): Likewise.
! 	(equiv_class::remap_svalue_ids): Drop.
! 	(equiv_class::m_cst_sid): Convert to..
! 	(equiv_class::m_cst_sval): ...this.
! 	(equiv_class::m_vars): Port from svalue_id to const svalue *.
! 	(constraint::bool implied_by): New decl.
! 	(fact_visitor::on_fact): Port from svalue_id to const svalue *.
! 	(constraint_manager::constraint_manager): Add mgr param.
! 	(constraint_manager::clone): Delete.
! 	(constraint_manager::maybe_get_constant): Delete.
! 	(constraint_manager::get_sid_for_constant): Delete.
! 	(constraint_manager::get_num_svalues): Delete.
! 	(constraint_manager::dump_to_pp): Add "multiline" param.
! 	(constraint_manager::get_equiv_class): Port from svalue_id to
! 	const svalue *.
! 	(constraint_manager::add_constraint):  Likewise.
! 	(constraint_manager::get_equiv_class_by_sid): Rename to...
! 	(constraint_manager::get_equiv_class_by_svalue): ...this, porting
! 	from svalue_id to const svalue *.
! 	(constraint_manager::add_unknown_constraint): New decl.
! 	(constraint_manager::get_or_add_equiv_class): Port from svalue_id
! 	to const svalue *.
! 	(constraint_manager::eval_condition): Likewise.  Add overloads.
! 	(constraint_manager::get_ec_bounds): New decl.
! 	(constraint_manager::purge): Convert to template.
! 	(constraint_manager::remap_svalue_ids): Delete.
! 	(constraint_manager::on_liveness_change): New decl.
! 	(constraint_manager::canonicalize): Drop param.
! 	(constraint_manager::clean_merger_input): Delete.
! 	(constraint_manager::m_mgr): New field.
! 	* diagnostic-manager.cc: Move includes of
! 	"analyzer/call-string.h" and "analyzer/program-point.h" to before
! 	"analyzer/region-model.h", and also include "analyzer/store.h"
! 	before it.
! 	(saved_diagnostic::saved_diagnostic): Add "sval" param.
! 	(diagnostic_manager::diagnostic_manager): Add engine param.
! 	(diagnostic_manager::add_diagnostic): Add "sval" param, passing it
! 	to saved_diagnostic ctor.  Update overload to pass NULL for it.
! 	(dedupe_winners::dedupe_winners): Add engine param.
! 	(dedupe_winners::add): Add "eg" param.  Pass m_engine to
! 	feasible_p.
! 	(dedupe_winner::m_engine): New field.
! 	(diagnostic_manager::emit_saved_diagnostics): Pass engine to
! 	dedupe_winners.  Pass &eg when adding candidates.  Pass svalue
! 	rather than tree to prune_path.  Use get_stmt_location to get
! 	primary location of diagnostic.
! 	(diagnostic_manager::emit_saved_diagnostic): Likewise.
! 	(get_any_origin): Drop.
! 	(state_change_event_creator::on_global_state_change): Pass NULL
! 	const svalue * rather than NULL_TREE trees to state_change_event
! 	ctor.
! 	(state_change_event_creator::on_state_change): Port from tree and
! 	svalue_id to const svalue *.
! 	(for_each_state_change): Port from svalue_id to const svalue *.
! 	(struct null_assignment_sm_context): New.
! 	(diagnostic_manager::add_events_for_eedge):  Add state change
! 	events for assignment to NULL.
! 	(diagnostic_manager::prune_path): Update param from tree to
! 	const svalue *.
! 	(diagnostic_manager::prune_for_sm_diagnostic): Port from tracking
! 	by tree to by const svalue *.
! 	* diagnostic-manager.h (saved_diagnostic::saved_diagnostic): Add sval
! 	param.
! 	(saved_diagnostic::m_sval): New field.
! 	(diagnostic_manager::diagnostic_manager): Add engine param.
! 	(diagnostic_manager::get_engine): New.
! 	(diagnostic_manager::add_diagnostic): Add "sval" param.
! 	(diagnostic_manager::prune_path): Likewise.
! 	(diagnostic_manager::prune_for_sm_diagnostic): New overload.
! 	(diagnostic_manager::m_eng): New field.
! 	* engine.cc: Move includes of "analyzer/call-string.h" and
! 	"analyzer/program-point.h" to before "analyzer/region-model.h",
! 	and also include "analyzer/store.h" before it.
! 	(impl_region_model_context::impl_region_model_context): Update for
! 	removal of m_change field.
! 	(impl_region_model_context::remap_svalue_ids): Delete.
! 	(impl_region_model_context::on_svalue_leak): New.
! 	(impl_region_model_context::on_svalue_purge): Delete.
! 	(impl_region_model_context::on_liveness_change): New.
! 	(impl_region_model_context::on_unknown_change): Update param
! 	from svalue_id to const svalue *.  Add is_mutable param.
! 	(setjmp_svalue::compare_fields): Delete.
! 	(setjmp_svalue::accept): New.
! 	(setjmp_svalue::add_to_hash): Delete.
! 	(setjmp_svalue::dump_to_pp): New.
! 	(setjmp_svalue::print_details): Delete.
! 	(impl_sm_context::impl_sm_context): Drop "change" param.
! 	(impl_sm_context::get_fndecl_for_call): Drop "m_change".
! 	(impl_sm_context::on_transition): Drop ATTRIBUTE_UNUSED from
! 	"stmt" param.  Drop m_change.  Port from svalue_id to
! 	const svalue *.
! 	(impl_sm_context::warn_for_state): Drop m_change.  Port from
! 	svalue_id to const svalue *.
! 	(impl_sm_context::get_readable_tree): Rename to...
! 	(impl_sm_context::get_diagnostic_tree): ...this.  Port from
! 	svalue_id to const svalue *.
! 	(impl_sm_context::is_zero_assignment): New.
! 	(impl_sm_context::m_change): Delete field.
! 	(leak_stmt_finder::find_stmt): Handle m_var being NULL.
! 	(readability):  Increase penalty for MEM_REF.  For SSA_NAMEs,
! 	slightly favor the underlying var over the SSA name.  Heavily
! 	penalize temporaries.  Handle RESULT_DECL.
! 	(readability_comparator): Make non-static.  Consider stack depths.
! 	(impl_region_model_context::on_state_leak): Convert from svalue_id
! 	to const svalue *, updating for region_model changes.  Use
! 	id_equal.
! 	(impl_region_model_context::on_inherited_svalue): Delete.
! 	(impl_region_model_context::on_cast): Delete.
! 	(impl_region_model_context::on_condition):  Drop m_change.
! 	(impl_region_model_context::on_phi): Likewise.
! 	(impl_region_model_context::on_unexpected_tree_code): Handle t
! 	being NULL.
! 	(point_and_state::validate): Update stack checking for
! 	region_model changes.
! 	(eg_traits::dump_args_t::show_enode_details_p): New.
! 	(exploded_node::exploded_node): Initialize m_num_processed_stmts.
! 	(exploded_node::get_processed_stmt): New function.
! 	(exploded_node::get_dot_fillcolor): Add more colors.
! 	(exploded_node::dump_dot): Guard the printing of the point and
! 	state with show_enode_details_p.  Print the processed stmts for
! 	this enode after the initial state.
! 	(exploded_node::dump_to_pp): Pass true for new multiline param
! 	of program_state::dump_to_pp.
! 	(exploded_node::on_stmt): Drop "change" param.  Log the stmt.
! 	Set input_location.  Implement __analyzer_describe.  Update
! 	implementation of __analyzer_dump and __analyzer_eval.
! 	Remove purging of sm-state for unknown fncalls from here.
! 	(exploded_node::on_edge): Drop "change" param.
! 	(exploded_node::on_longjmp): Port from region_id/svalue_id to
! 	const region */const svalue *.  Call program_state::detect_leaks.
! 	Drop state_change.
! 	(exploded_node::detect_leaks): Update for changes to region_model.
! 	Call program_state::detect_leaks.
! 	(exploded_edge::exploded_edge): Drop ext_state and change params.
! 	(exploded_edge::dump_dot): "args" is no longer used.  Drop dumping
! 	of m_change.
! 	(exploded_graph::exploded_graph): Pass engine to
! 	m_diagnostic_manager ctor.  Use program_point::origin.
! 	(exploded_graph::add_function_entry):  Drop ctxt.  Use
! 	program_state::push_frame.  Drop state_change.
! 	(exploded_graph::get_or_create_node): Drop "change" param.  Add
! 	"enode_for_diag" param.  Update dumping calls for API changes.
! 	Pass point to can_merge_with_p.  Show enode indices
! 	within -Wanalyzer-too-complex diagnostic for hitting the per-point
! 	limit.
! 	(exploded_graph::add_edge): Drop "change" param.  Log which nodes
! 	are being connected.  Update for changes to exploded_edge ctor.
! 	(exploded_graph::get_per_program_point_data): New.
! 	(exploded_graph::process_worklist): Pass point to
! 	can_merge_with_p.  Drop state_change.  Update dumping call for API
! 	change.
! 	(exploded_graph::process_node):  Drop state_change.  Split the
! 	node in-place if an sm-state-change occurs.  Update
! 	m_num_processed_stmts.  Update dumping calls for API change.
! 	(exploded_graph::log_stats): Call engine::log_stats.
! 	(exploded_graph::dump_states_for_supernode): Update dumping
! 	call.
! 	(exploded_path::feasible_p): Add "eng" and "eg" params.
! 	Rename "i" to "end_idx".  Pass the manager to the region_model
! 	ctor.  Update for every processed stmt in the enode, not just the
! 	first.  Keep track of which snodes have been visited, and call
! 	loop_replay_fixup when revisiting one.
! 	(enode_label::get_text): Update dump call for new param.
! 	(exploded_graph::dump_exploded_nodes): Likewise.
! 	(exploded_graph::get_node_by_index): New.
! 	(impl_run_checkers): Create engine instance and pass its address
! 	to extrinsic_state ctor.
! 	* exploded-graph.h
! 	(impl_region_model_context::impl_region_model_context): Drop
! 	"change" params.
! 	(impl_region_model_context::void remap_svalue_ids): Delete.
! 	(impl_region_model_context::on_svalue_purge): Delete.
! 	(impl_region_model_context::on_svalue_leak): New.
! 	(impl_region_model_context::on_liveness_change): New.
! 	(impl_region_model_context::on_state_leak): Update signature.
! 	(impl_region_model_context::on_inherited_svalue): Delete.
! 	(impl_region_model_context::on_cast): Delete.
! 	(impl_region_model_context::on_unknown_change): Update signature.
! 	(impl_region_model_context::m_change): Delete.
! 	(eg_traits::dump_args_t::show_enode_details_p): New.
! 	(exploded_node::on_stmt): Drop "change" param.
! 	(exploded_node::on_edge): Likewise.
! 	(exploded_node::get_processed_stmt): New decl.
! 	(exploded_node::m_num_processed_stmts): New field.
! 	(exploded_edge::exploded_edge): Drop ext_state and change params.
! 	(exploded_edge::m_change): Delete.
! 	(exploded_graph::get_engine): New accessor.
! 	(exploded_graph::get_or_create_node): Drop "change" param.  Add
! 	"enode_for_diag" param.
! 	(exploded_graph::add_edge): Drop "change" param.
! 	(exploded_graph::get_per_program_point_data): New decl.
! 	(exploded_graph::get_node_by_index): New decl.
! 	(exploded_path::feasible_p): Add "eng" and "eg" params.
! 	* program-point.cc: Include "analyzer/store.h" before including
! 	"analyzer/region-model.h".
! 	(function_point::function_point): Move here from
! 	program-point.h.
! 	(function_point::get_function): Likewise.
! 	(function_point::from_function_entry): Likewise.
! 	(function_point::before_supernode): Likewise.
! 	(function_point::next_stmt): New function.
! 	* program-point.h (function_point::function_point): Move
! 	implementation from here to program-point.cc.
! 	(function_point::get_function): Likewise.
! 	(function_point::from_function_entry): Likewise.
! 	(function_point::before_supernode): Likewise.
! 	(function_point::next_stmt): New decl.
! 	(program_point::operator!=): New.
! 	(program_point::origin): New.
! 	(program_point::next_stmt): New.
! 	(program_point::m_function_point): Make non-const.
! 	* program-state.cc: Move includes of "analyzer/call-string.h" and
! 	"analyzer/program-point.h" to before "analyzer/region-model.h",
! 	and also include "analyzer/store.h" before it.
! 	(extrinsic_state::get_model_manager): New.
! 	(sm_state_map::sm_state_map): Pass in sm and sm_idx to ctor,
! 	rather than pass the around.
! 	(sm_state_map::clone_with_remapping): Delete.
! 	(sm_state_map::print): Remove "sm" param in favor of "m_sm".  Add
! 	"simple" and "multiline" params and support multiline vs single
! 	line dumping.
! 	(sm_state_map::dump): Remove "sm" param in favor of "m_sm".  Add
! 	"simple" param.
! 	(sm_state_map::hash): Port from svalue_id to const svalue *.
! 	(sm_state_map::operator==): Likewise.
! 	(sm_state_map::get_state): Likewise.  Call canonicalize_svalue on
! 	input.  Handle inheritance of sm-state.  Call get_default_state.
! 	(sm_state_map::get_origin): Port from svalue_id to const svalue *.
! 	(sm_state_map::set_state): Likewise.  Pass in ext_state.  Reject
! 	attempts to set state on UNKNOWN.
! 	(sm_state_map::impl_set_state): Port from svalue_id to
! 	const svalue *.  Pass in ext_state.  Call canonicalize_svalue on
! 	input.
! 	(sm_state_map::purge_for_unknown_fncall): Delete.
! 	(sm_state_map::on_svalue_leak): New.
! 	(sm_state_map::remap_svalue_ids): Delete.
! 	(sm_state_map::on_liveness_change): New.
! 	(sm_state_map::on_unknown_change): Reimplement.
! 	(sm_state_map::on_svalue_purge): Delete.
! 	(sm_state_map::on_inherited_svalue): Delete.
! 	(sm_state_map::on_cast): Delete.
! 	(sm_state_map::validate): Delete.
! 	(sm_state_map::canonicalize_svalue): New.
! 	(program_state::program_state): Update to pass manager to
! 	region_model's ctor.  Constify num_states and pass state machine
! 	and index to sm_state_map ctor.
! 	(program_state::print): Update for changes to dump API.
! 	(program_state::dump_to_pp): Ignore the summarize param.  Add
! 	"multiline" param.
! 	(program_state::dump_to_file): Add "multiline" param.
! 	(program_state::dump): Pass "true" for new "multiline" param.
! 	(program_state::push_frame): New.
! 	(program_state::on_edge): Drop "change" param.  Call
! 	program_state::detect_leaks.
! 	(program_state::prune_for_point): Add enode_for_diag param.
! 	Reimplement based on store class.  Call detect_leaks
! 	(program_state::remap_svalue_ids): Delete.
! 	(program_state::get_representative_tree): Port from svalue_id to
! 	const svalue *.
! 	(program_state::can_merge_with_p): Add "point" param.  Add early
! 	reject for sm-differences.  Drop id remapping.
! 	(program_state::validate): Drop region model and sm_state_map
! 	validation.
! 	(state_change::sm_change::dump): Delete.
! 	(state_change::sm_change::remap_svalue_ids): Delete.
! 	(state_change::sm_change::on_svalue_purge): Delete.
! 	(log_set_of_svalues): New.
! 	(state_change::sm_change::validate): Delete.
! 	(state_change::state_change): Delete.
! 	(state_change::add_sm_change): Delete.
! 	(state_change::affects_p): Delete.
! 	(state_change::dump): Delete.
! 	(state_change::remap_svalue_ids): Delete.
! 	(state_change::on_svalue_purge): Delete.
! 	(state_change::validate): Delete.
! 	(selftest::assert_dump_eq): Delete.
! 	(ASSERT_DUMP_EQ): Delete.
! 	(selftest::test_sm_state_map): Update for changes to region_model
! 	and sm_state_map, porting from svalue_id to const svalue *.
! 	(selftest::test_program_state_dumping): Likewise.  Drop test of
! 	dumping, renaming to...
! 	(selftest::test_program_state_1): ...this.
! 	(selftest::test_program_state_dumping_2): Likewise, renaming to...
! 	(selftest::test_program_state_2): ...this.
! 	(selftest::test_program_state_merging): Update for changes to
! 	region_model.
! 	(selftest::test_program_state_merging_2): Likewise.
! 	(selftest::analyzer_program_state_cc_tests): Update for renamed
! 	tests.
! 	* program-state.h (extrinsic_state::extrinsic_state): Add logger
! 	and engine params.
! 	(extrinsic_state::get_logger): New accessor.
! 	(extrinsic_state::get_engine): New accessor.
! 	(extrinsic_state::get_model_manager): New accessor.
! 	(extrinsic_state::m_logger): New field.
! 	(extrinsic_state::m_engine): New field.
! 	(struct default_hash_traits<svalue_id>): Delete.
! 	(pod_hash_traits<svalue_id>::hash): Delete.
! 	(pod_hash_traits<svalue_id>::equal): Delete.
! 	(pod_hash_traits<svalue_id>::mark_deleted): Delete.
! 	(pod_hash_traits<svalue_id>::mark_empty): Delete.
! 	(pod_hash_traits<svalue_id>::is_deleted): Delete.
! 	(pod_hash_traits<svalue_id>::is_empty): Delete.
! 	(sm_state_map::entry_t::entry_t): Port from svalue_id to
! 	const svalue *.
! 	(sm_state_map::entry_t::m_origin): Likewise.
! 	(sm_state_map::map_t): Likewise.
! 	(sm_state_map::sm_state_map): Add state_machine and index params.
! 	(sm_state_map::clone_with_remapping): Delete.
! 	(sm_state_map::print):  Drop sm param; add simple and multiline
! 	params.
! 	(sm_state_map::dump): Drop sm param; add simple param.
! 	(sm_state_map::get_state): Port from svalue_id to const svalue *.
! 	Add ext_state param.
! 	(sm_state_map::get_origin): Likewise.
! 	(sm_state_map::set_state): Likewise.
! 	(sm_state_map::impl_set_state): Likewise.
! 	(sm_state_map::purge_for_unknown_fncall): Delete.
! 	(sm_state_map::remap_svalue_ids): Delete.
! 	(sm_state_map::on_svalue_purge): Delete.
! 	(sm_state_map::on_svalue_leak): New.
! 	(sm_state_map::on_liveness_change): New.
! 	(sm_state_map::on_inherited_svalue): Delete.
! 	(sm_state_map::on_cast): Delete.
! 	(sm_state_map::validate): Delete.
! 	(sm_state_map::on_unknown_change): Port from svalue_id to
! 	const svalue *.  Add is_mutable and ext_state params.
! 	(sm_state_map::canonicalize_svalue): New.
! 	(sm_state_map::m_sm): New field.
! 	(sm_state_map::m_sm_idx): New field.
! 	(program_state::operator=): Delete.
! 	(program_state::dump_to_pp): Drop "summarize" param, adding
! 	"simple" and "multiline".
! 	(program_state::dump_to_file): Likewise.
! 	(program_state::dump): Rename "summarize" to "simple".
! 	(program_state::push_frame): New.
! 	(program_state::get_current_function): New.
! 	(program_state::on_edge): Drop "change" param.
! 	(program_state::prune_for_point): Likewise.  Add enode_for_diag
! 	param.
! 	(program_state::remap_svalue_ids): Delete.
! 	(program_state::get_representative_tree): Port from svalue_id to
! 	const svalue *.
! 	(program_state::can_purge_p): Likewise.  Pass ext_state to get_state.
! 	(program_state::can_merge_with_p): Add point param.
! 	(program_state::detect_leaks): New.
! 	(state_change_visitor::on_state_change): Port from tree and
! 	svalue_id to a pair of const svalue *.
! 	(class state_change): Delete.
! 	* region.cc: New file.
! 	* region-model-impl-calls.cc: New file.
! 	* region-model-manager.cc: New file.
! 	* region-model-reachability.cc: New file.
! 	* region-model-reachability.h: New file.
! 	* region-model.cc: Include "analyzer/call-string.h",
! 	"analyzer/program-point.h", and "analyzer/store.h" before
! 	"analyzer/region-model.h".  Include
! 	"analyzer/region-model-reachability.h".
! 	(dump_tree): Make non-static.
! 	(dump_quoted_tree): Make non-static.
! 	(print_quoted_type): Make non-static.
! 	(path_var::dump): Delete.
! 	(dump_separator): Delete.
! 	(class impl_constraint_manager): Delete.
! 	(svalue_id::print): Delete.
! 	(svalue_id::dump_node_name_to_pp): Delete.
! 	(svalue_id::validate): Delete.
! 	(region_id::print): Delete.
! 	(region_id::dump_node_name_to_pp): Delete.
! 	(region_id::validate): Delete.
! 	(region_id_set::region_id_set): Delete.
! 	(svalue_id_set::svalue_id_set): Delete.
! 	(svalue::operator==): Delete.
! 	(svalue::hash): Delete.
! 	(svalue::print): Delete.
! 	(svalue::dump_dot_to_pp): Delete.
! 	(svalue::remap_region_ids): Delete.
! 	(svalue::walk_for_canonicalization): Delete.
! 	(svalue::get_child_sid): Delete.
! 	(svalue::maybe_get_constant): Delete.
! 	(region_svalue::compare_fields): Delete.
! 	(region_svalue::add_to_hash): Delete.
! 	(region_svalue::print_details): Delete.
! 	(region_svalue::dump_dot_to_pp): Delete.
! 	(region_svalue::remap_region_ids): Delete.
! 	(region_svalue::merge_values): Delete.
! 	(region_svalue::walk_for_canonicalization): Delete.
! 	(region_svalue::eval_condition): Delete.
! 	(constant_svalue::compare_fields): Delete.
! 	(constant_svalue::add_to_hash): Delete.
! 	(constant_svalue::merge_values): Delete.
! 	(constant_svalue::eval_condition): Move to svalue.cc.
! 	(constant_svalue::print_details): Delete.
! 	(constant_svalue::get_child_sid): Delete.
! 	(unknown_svalue::compare_fields): Delete.
! 	(unknown_svalue::add_to_hash): Delete.
! 	(unknown_svalue::print_details): Delete.
! 	(poison_kind_to_str): Move to svalue.cc.
! 	(poisoned_svalue::compare_fields): Delete.
! 	(poisoned_svalue::add_to_hash): Delete.
! 	(poisoned_svalue::print_details): Delete.
! 	(region_kind_to_str): Move to region.cc and reimplement.
! 	(region::operator==): Delete.
! 	(region::get_parent_region): Delete.
! 	(region::set_value): Delete.
! 	(region::become_active_view): Delete.
! 	(region::deactivate_any_active_view): Delete.
! 	(region::deactivate_view): Delete.
! 	(region::get_value): Delete.
! 	(region::get_inherited_child_sid): Delete.
! 	(region_model::copy_region): Delete.
! 	(region_model::copy_struct_region): Delete.
! 	(region_model::copy_union_region): Delete.
! 	(region_model::copy_array_region): Delete.
! 	(region::hash): Delete.
! 	(region::print): Delete.
! 	(region::dump_dot_to_pp): Delete.
! 	(region::dump_to_pp): Delete.
! 	(region::dump_child_label): Delete.
! 	(region::validate): Delete.
! 	(region::remap_svalue_ids): Delete.
! 	(region::remap_region_ids): Delete.
! 	(region::add_view): Delete.
! 	(region::get_view): Delete.
! 	(region::region): Move to region.cc.
! 	(region::add_to_hash): Delete.
! 	(region::print_fields): Delete.
! 	(region::non_null_p): Delete.
! 	(primitive_region::clone): Delete.
! 	(primitive_region::walk_for_canonicalization): Delete.
! 	(map_region::map_region): Delete.
! 	(map_region::compare_fields): Delete.
! 	(map_region::print_fields): Delete.
! 	(map_region::validate): Delete.
! 	(map_region::dump_dot_to_pp): Delete.
! 	(map_region::dump_child_label): Delete.
! 	(map_region::get_or_create): Delete.
! 	(map_region::get): Delete.
! 	(map_region::add_to_hash): Delete.
! 	(map_region::remap_region_ids): Delete.
! 	(map_region::unbind): Delete.
! 	(map_region::get_tree_for_child_region): Delete.
! 	(map_region::get_tree_for_child_region): Delete.
! 	(tree_cmp): Move to region.cc.
! 	(map_region::can_merge_p): Delete.
! 	(map_region::walk_for_canonicalization): Delete.
! 	(map_region::get_value_by_name): Delete.
! 	(struct_or_union_region::valid_key_p): Delete.
! 	(struct_or_union_region::compare_fields): Delete.
! 	(struct_region::clone): Delete.
! 	(struct_region::compare_fields): Delete.
! 	(union_region::clone): Delete.
! 	(union_region::compare_fields): Delete.
! 	(frame_region::compare_fields): Delete.
! 	(frame_region::clone): Delete.
! 	(frame_region::valid_key_p): Delete.
! 	(frame_region::print_fields): Delete.
! 	(frame_region::add_to_hash): Delete.
! 	(globals_region::compare_fields): Delete.
! 	(globals_region::clone): Delete.
! 	(globals_region::valid_key_p): Delete.
! 	(code_region::compare_fields): Delete.
! 	(code_region::clone): Delete.
! 	(code_region::valid_key_p): Delete.
! 	(array_region::array_region): Delete.
! 	(array_region::get_element): Delete.
! 	(array_region::clone): Delete.
! 	(array_region::compare_fields): Delete.
! 	(array_region::print_fields): Delete.
! 	(array_region::validate): Delete.
! 	(array_region::dump_dot_to_pp): Delete.
! 	(array_region::dump_child_label): Delete.
! 	(array_region::get_or_create): Delete.
! 	(array_region::get): Delete.
! 	(array_region::add_to_hash): Delete.
! 	(array_region::remap_region_ids): Delete.
! 	(array_region::get_key_for_child_region): Delete.
! 	(array_region::key_cmp): Delete.
! 	(array_region::walk_for_canonicalization): Delete.
! 	(array_region::key_from_constant): Delete.
! 	(array_region::constant_from_key): Delete.
! 	(function_region::compare_fields): Delete.
! 	(function_region::clone): Delete.
! 	(function_region::valid_key_p): Delete.
! 	(stack_region::stack_region): Delete.
! 	(stack_region::compare_fields): Delete.
! 	(stack_region::clone): Delete.
! 	(stack_region::print_fields): Delete.
! 	(stack_region::dump_child_label): Delete.
! 	(stack_region::validate): Delete.
! 	(stack_region::push_frame): Delete.
! 	(stack_region::get_current_frame_id): Delete.
! 	(stack_region::pop_frame): Delete.
! 	(stack_region::add_to_hash): Delete.
! 	(stack_region::remap_region_ids): Delete.
! 	(stack_region::can_merge_p): Delete.
! 	(stack_region::walk_for_canonicalization): Delete.
! 	(stack_region::get_value_by_name): Delete.
! 	(heap_region::heap_region): Delete.
! 	(heap_region::compare_fields): Delete.
! 	(heap_region::clone): Delete.
! 	(heap_region::walk_for_canonicalization): Delete.
! 	(root_region::root_region): Delete.
! 	(root_region::compare_fields): Delete.
! 	(root_region::clone): Delete.
! 	(root_region::print_fields): Delete.
! 	(root_region::validate): Delete.
! 	(root_region::dump_child_label): Delete.
! 	(root_region::push_frame): Delete.
! 	(root_region::get_current_frame_id): Delete.
! 	(root_region::pop_frame): Delete.
! 	(root_region::ensure_stack_region): Delete.
! 	(root_region::get_stack_region): Delete.
! 	(root_region::ensure_globals_region): Delete.
! 	(root_region::get_code_region): Delete.
! 	(root_region::ensure_code_region): Delete.
! 	(root_region::get_globals_region): Delete.
! 	(root_region::ensure_heap_region): Delete.
! 	(root_region::get_heap_region): Delete.
! 	(root_region::remap_region_ids): Delete.
! 	(root_region::can_merge_p): Delete.
! 	(root_region::add_to_hash): Delete.
! 	(root_region::walk_for_canonicalization): Delete.
! 	(root_region::get_value_by_name): Delete.
! 	(symbolic_region::symbolic_region): Delete.
! 	(symbolic_region::compare_fields): Delete.
! 	(symbolic_region::clone): Delete.
! 	(symbolic_region::walk_for_canonicalization): Delete.
! 	(symbolic_region::print_fields): Delete.
! 	(region_model::region_model): Add region_model_manager * param.
! 	Reimplement in terms of store, dropping impl_constraint_manager
! 	subclass.
! 	(region_model::operator=): Reimplement in terms of store
! 	(region_model::operator==): Likewise.
! 	(region_model::hash): Likewise.
! 	(region_model::print): Delete.
! 	(region_model::print_svalue): Delete.
! 	(region_model::dump_dot_to_pp): Delete.
! 	(region_model::dump_dot_to_file): Delete.
! 	(region_model::dump_dot): Delete.
! 	(region_model::dump_to_pp): Replace "summarize" param with
! 	"simple" and "multiline".  Port to store-based implementation.
! 	(region_model::dump): Replace "summarize" param with "simple" and
! 	"multiline".
! 	(dump_vec_of_tree): Delete.
! 	(region_model::dump_summary_of_rep_path_vars): Delete.
! 	(region_model::validate): Delete.
! 	(svalue_id_cmp_by_constant_svalue_model): Delete.
! 	(svalue_id_cmp_by_constant_svalue): Delete.
! 	(region_model::canonicalize): Drop "ctxt" param.  Reimplement in
! 	terms of store and constraints.
! 	(region_model::canonicalized_p): Remove NULL arg to canonicalize.
! 	(region_model::loop_replay_fixup): New.
! 	(poisoned_value_diagnostic::emit): Tweak wording of warnings.
! 	(region_model::check_for_poison): Delete.
! 	(region_model::get_gassign_result): New.
! 	(region_model::on_assignment): Port to store-based implementation.
! 	(region_model::on_call_pre): Delete calls to check_for_poison.
! 	Move implementations to region-model-impl-calls.c and port to
! 	store-based implementation.
! 	(region_model::on_call_post): Likewise.
! 	(class reachable_regions): Move to region-model-reachability.h/cc
! 	and port to store-based implementation.
! 	(region_model::handle_unrecognized_call): Port to store-based
! 	implementation.
! 	(region_model::get_reachable_svalues): New.
! 	(region_model::on_setjmp): Port to store-based implementation.
! 	(region_model::on_longjmp): Likewise.
! 	(region_model::handle_phi): Drop is_back_edge param and the logic
! 	using it.
! 	(region_model::get_lvalue_1): Port from region_id to const region *.
! 	(region_model::make_region_for_unexpected_tree_code): Delete.
! 	(assert_compat_types): If the check fails, use internal_error to
! 	show the types.
! 	(region_model::get_lvalue): Port from region_id to const region *.
! 	(region_model::get_rvalue_1): Port from svalue_id to const svalue *.
! 	(region_model::get_rvalue): Likewise.
! 	(region_model::get_or_create_ptr_svalue): Delete.
! 	(region_model::get_or_create_constant_svalue): Delete.
! 	(region_model::get_svalue_for_fndecl): Delete.
! 	(region_model::get_region_for_fndecl): Delete.
! 	(region_model::get_svalue_for_label): Delete.
! 	(region_model::get_region_for_label): Delete.
! 	(build_cast): Delete.
! 	(region_model::maybe_cast_1): Delete.
! 	(region_model::maybe_cast): Delete.
! 	(region_model::get_field_region): Delete.
! 	(region_model::get_store_value): New.
! 	(region_model::region_exists_p): New.
! 	(region_model::deref_rvalue): Port from svalue_id to const svalue *.
! 	(region_model::set_value): Likewise.
! 	(region_model::clobber_region): New.
! 	(region_model::purge_region): New.
! 	(region_model::zero_fill_region): New.
! 	(region_model::mark_region_as_unknown): New.
! 	(region_model::eval_condition): Port from svalue_id to
! 	const svalue *.
! 	(region_model::eval_condition_without_cm): Likewise.
! 	(region_model::compare_initial_and_pointer): New.
! 	(region_model::add_constraint): Port from svalue_id to
! 	const svalue *.
! 	(region_model::maybe_get_constant): Delete.
! 	(region_model::get_representative_path_var): New.
! 	(region_model::add_new_malloc_region): Delete.
! 	(region_model::get_representative_tree): Port to const svalue *.
! 	(region_model::get_representative_path_var): Port to
! 	const region *.
! 	(region_model::get_path_vars_for_svalue): Delete.
! 	(region_model::set_to_new_unknown_value): Delete.
! 	(region_model::update_for_phis): Don't pass is_back_edge to handle_phi.
! 	(region_model::update_for_call_superedge): Port from svalue_id to
! 	const svalue *.
! 	(region_model::update_for_return_superedge): Port to store-based
! 	implementation.
! 	(region_model::update_for_call_summary): Replace
! 	set_to_new_unknown_value with mark_region_as_unknown.
! 	(region_model::get_root_region): Delete.
! 	(region_model::get_stack_region_id): Delete.
! 	(region_model::push_frame): Delete.
! 	(region_model::get_current_frame_id): Delete.
! 	(region_model::get_current_function): Delete.
! 	(region_model::pop_frame): Delete.
! 	(region_model::on_top_level_param): New.
! 	(region_model::get_stack_depth): Delete.
! 	(region_model::get_function_at_depth): Delete.
! 	(region_model::get_globals_region_id): Delete.
! 	(region_model::add_svalue): Delete.
! 	(region_model::replace_svalue): Delete.
! 	(region_model::add_region): Delete.
! 	(region_model::get_svalue): Delete.
! 	(region_model::get_region): Delete.
! 	(make_region_for_type): Delete.
! 	(region_model::add_region_for_type): Delete.
! 	(region_model::on_top_level_param): New.
! 	(class restrict_to_used_svalues): Delete.
! 	(region_model::purge_unused_svalues): Delete.
! 	(region_model::push_frame): New.
! 	(region_model::remap_svalue_ids): Delete.
! 	(region_model::remap_region_ids): Delete.
! 	(region_model::purge_regions): Delete.
! 	(region_model::get_descendents): Delete.
! 	(region_model::delete_region_and_descendents): Delete.
! 	(region_model::poison_any_pointers_to_bad_regions): Delete.
! 	(region_model::can_merge_with_p): Delete.
! 	(region_model::get_current_function): New.
! 	(region_model::get_value_by_name): Delete.
! 	(region_model::convert_byte_offset_to_array_index): Delete.
! 	(region_model::pop_frame): New.
! 	(region_model::get_or_create_mem_ref): Delete.
! 	(region_model::get_stack_depth): New.
! 	(region_model::get_frame_at_index): New.
! 	(region_model::unbind_region_and_descendents): New.
! 	(struct bad_pointer_finder): New.
! 	(region_model::get_or_create_pointer_plus_expr): Delete.
! 	(region_model::poison_any_pointers_to_descendents): New.
! 	(region_model::get_or_create_view): Delete.
! 	(region_model::can_merge_with_p): New.
! 	(region_model::get_fndecl_for_call):  Port from svalue_id to
! 	const svalue *.
! 	(struct append_ssa_names_cb_data): New.
! 	(get_ssa_name_regions_for_current_frame): New.
! 	(region_model::append_ssa_names_cb): New.
! 	(model_merger::dump_to_pp): Add "simple" param.  Drop dumping of
! 	remappings.
! 	(model_merger::dump): Add "simple" param to both overloads.
! 	(model_merger::can_merge_values_p): Delete.
! 	(model_merger::record_regions): Delete.
! 	(model_merger::record_svalues): Delete.
! 	(svalue_id_merger_mapping::svalue_id_merger_mapping): Delete.
! 	(svalue_id_merger_mapping::dump_to_pp): Delete.
! 	(svalue_id_merger_mapping::dump): Delete.
! 	(region_model::create_region_for_heap_alloc): New.
! 	(region_model::create_region_for_alloca): New.
! 	(region_model::record_dynamic_extents): New.
! 	(canonicalization::canonicalization): Delete.
! 	(canonicalization::walk_rid): Delete.
! 	(canonicalization::walk_sid): Delete.
! 	(canonicalization::dump_to_pp): Delete.
! 	(canonicalization::dump): Delete.
! 	(inchash::add): Delete overloads for svalue_id and region_id.
! 	(engine::log_stats): New.
! 	(assert_condition): Add overload comparing svalues.
! 	(assert_dump_eq): Pass "true" for multiline.
! 	(selftest::test_dump): Update for rewrite of region_model.
! 	(selftest::test_dump_2): Rename to...
! 	(selftest::test_struct): ...this.  Provide a region_model_manager
! 	when creating region_model instance.  Remove dump test.  Add
! 	checks for get_offset.
! 	(selftest::test_dump_3): Rename to...
! 	(selftest::test_array_1): ...this.  Provide a region_model_manager
! 	when creating region_model instance.  Remove dump test.
! 	(selftest::test_get_representative_tree): Port from svalue_id to
! 	new API.  Add test coverage for various expressions.
! 	(selftest::test_unique_constants): Provide a region_model_manager
! 	for the region_model.  Add test coverage for comparing const vs
! 	non-const.
! 	(selftest::test_svalue_equality): Delete.
! 	(selftest::test_region_equality): Delete.
! 	(selftest::test_unique_unknowns): New.
! 	(class purge_all_svalue_ids): Delete.
! 	(class purge_one_svalue_id): Delete.
! 	(selftest::test_purging_by_criteria): Delete.
! 	(selftest::test_initial_svalue_folding): New.
! 	(selftest::test_unaryop_svalue_folding): New.
! 	(selftest::test_binop_svalue_folding): New.
! 	(selftest::test_sub_svalue_folding): New.
! 	(selftest::test_purge_unused_svalues): Delete.
! 	(selftest::test_descendent_of_p): New.
! 	(selftest::test_assignment): Provide a region_model_manager for
! 	the region_model.  Drop the dump test.
! 	(selftest::test_compound_assignment): Likewise.
! 	(selftest::test_stack_frames): Port to new implementation.
! 	(selftest::test_get_representative_path_var): Likewise.
! 	(selftest::test_canonicalization_1): Rename to...
! 	(selftest::test_equality_1): ...this.  Port to new API, and add
! 	(selftest::test_canonicalization_2): Provide a
! 	region_model_manager when creating region_model instances.
! 	Remove redundant canicalization.
! 	(selftest::test_canonicalization_3): Provide a
! 	region_model_manager when creating region_model instances.
! 	Remove param from calls to region_model::canonicalize.
! 	(selftest::test_canonicalization_4): Likewise.
! 	(selftest::assert_region_models_merge): Constify
! 	out_merged_svalue.  Port to new API.
! 	(selftest::test_state_merging): Provide a
! 	region_model_manager when creating region_model instances.
! 	Provide a program_point point when merging them.  Replace
! 	set_to_new_unknown_value with usage of placeholder_svalues.
! 	Drop get_value_by_name.  Port from svalue_id to const svalue *.
! 	Add test of heap allocation.
! 	(selftest::test_constraint_merging):  Provide a
! 	region_model_manager when creating region_model instances.
! 	Provide a program_point point when merging them.  Eliminate use
! 	of set_to_new_unknown_value.
! 	(selftest::test_widening_constraints): New.
! 	(selftest::test_iteration_1): New.
! 	(selftest::test_malloc_constraints): Port to store-based
! 	implementation.
! 	(selftest::test_var): New test.
! 	(selftest::test_array_2): New test.
! 	(selftest::test_mem_ref): New test.
! 	(selftest::test_POINTER_PLUS_EXPR_then_MEM_REF): New.
! 	(selftest::test_malloc): New.
! 	(selftest::test_alloca): New.
! 	(selftest::analyzer_region_model_cc_tests): Update for renamings.
! 	Call new functions.
! 	* region-model.h (class path_var): Move to analyzer.h.
! 	(class svalue_id): Delete.
! 	(class region_id): Delete.
! 	(class id_map): Delete.
! 	(svalue_id_map): Delete.
! 	(region_id_map): Delete.
! 	(id_map<T>::id_map): Delete.
! 	(id_map<T>::put): Delete.
! 	(id_map<T>::get_dst_for_src): Delete.
! 	(id_map<T>::get_src_for_dst): Delete.
! 	(id_map<T>::dump_to_pp): Delete.
! 	(id_map<T>::dump): Delete.
! 	(id_map<T>::update): Delete.
! 	(one_way_svalue_id_map): Delete.
! 	(one_way_region_id_map): Delete.
! 	(class region_id_set): Delete.
! 	(class svalue_id_set): Delete.
! 	(struct complexity): New.
! 	(class visitor): New.
! 	(enum svalue_kind): Add SK_SETJMP, SK_INITIAL, SK_UNARYOP,
! 	SK_BINOP, SK_SUB,SK_UNMERGEABLE, SK_PLACEHOLDER, SK_WIDENING,
! 	SK_COMPOUND, and SK_CONJURED.
! 	(svalue::operator==): Delete.
! 	(svalue::operator!=): Delete.
! 	(svalue::clone): Delete.
! 	(svalue::hash): Delete.
! 	(svalue::dump_dot_to_pp): Delete.
! 	(svalue::dump_to_pp): New.
! 	(svalue::dump): New.
! 	(svalue::get_desc): New.
! 	(svalue::dyn_cast_initial_svalue): New.
! 	(svalue::dyn_cast_unaryop_svalue): New.
! 	(svalue::dyn_cast_binop_svalue): New.
! 	(svalue::dyn_cast_sub_svalue): New.
! 	(svalue::dyn_cast_unmergeable_svalue): New.
! 	(svalue::dyn_cast_widening_svalue): New.
! 	(svalue::dyn_cast_compound_svalue): New.
! 	(svalue::dyn_cast_conjured_svalue): New.
! 	(svalue::maybe_undo_cast): New.
! 	(svalue::unwrap_any_unmergeable): New.
! 	(svalue::remap_region_ids): Delete
! 	(svalue::can_merge_p): New.
! 	(svalue::walk_for_canonicalization): Delete
! 	(svalue::get_complexity): New.
! 	(svalue::get_child_sid): Delete
! 	(svalue::accept): New.
! 	(svalue::live_p): New.
! 	(svalue::implicitly_live_p): New.
! 	(svalue::svalue): Add complexity param.
! 	(svalue::add_to_hash): Delete
! 	(svalue::print_details): Delete
! 	(svalue::m_complexity): New field.
! 	(region_svalue::key_t): New struct.
! 	(region_svalue::region_svalue): Port from region_id to
! 	const region_id *.  Add complexity.
! 	(region_svalue::compare_fields): Delete.
! 	(region_svalue::clone): Delete.
! 	(region_svalue::dump_dot_to_pp): Delete.
! 	(region_svalue::get_pointee): Port from region_id to
! 	const region_id *.
! 	(region_svalue::remap_region_ids): Delete.
! 	(region_svalue::merge_values): Delete.
! 	(region_svalue::dump_to_pp): New.
! 	(region_svalue::accept): New.
! 	(region_svalue::walk_for_canonicalization): Delete.
! 	(region_svalue::eval_condition): Make params const.
! 	(region_svalue::add_to_hash): Delete.
! 	(region_svalue::print_details): Delete.
! 	(region_svalue::m_rid): Replace with...
! 	(region_svalue::m_reg): ...this.
! 	(is_a_helper <region_svalue *>::test): Convert to...
! 	(is_a_helper <const region_svalue *>::test): ...this.
! 	(template <> struct default_hash_traits<region_svalue::key_t>):
! 	New.
! 	(constant_svalue::constant_svalue): Add complexity.
! 	(constant_svalue::compare_fields): Delete.
! 	(constant_svalue::clone): Delete.
! 	(constant_svalue::add_to_hash): Delete.
! 	(constant_svalue::dump_to_pp): New.
! 	(constant_svalue::accept): New.
! 	(constant_svalue::implicitly_live_p): New.
! 	(constant_svalue::merge_values): Delete.
! 	(constant_svalue::eval_condition): Make params const.
! 	(constant_svalue::get_child_sid): Delete.
! 	(constant_svalue::print_details): Delete.
! 	(is_a_helper <constant_svalue *>::test): Convert to...
! 	(is_a_helper <const constant_svalue *>::test): ...this.
! 	(class unknown_svalue): Update leading comment.
! 	(unknown_svalue::unknown_svalue): Add complexity.
! 	(unknown_svalue::compare_fields): Delete.
! 	(unknown_svalue::add_to_hash): Delete.
! 	(unknown_svalue::dyn_cast_unknown_svalue): Delete.
! 	(unknown_svalue::print_details): Delete.
! 	(unknown_svalue::dump_to_pp): New.
! 	(unknown_svalue::accept): New.
! 	(poisoned_svalue::key_t): New struct.
! 	(poisoned_svalue::poisoned_svalue): Add complexity.
! 	(poisoned_svalue::compare_fields): Delete.
! 	(poisoned_svalue::clone): Delete.
! 	(poisoned_svalue::add_to_hash): Delete.
! 	(poisoned_svalue::dump_to_pp): New.
! 	(poisoned_svalue::accept): New.
! 	(poisoned_svalue::print_details): Delete.
! 	(is_a_helper <poisoned_svalue *>::test): Convert to...
! 	(is_a_helper <const poisoned_svalue *>::test): ...this.
! 	(template <> struct default_hash_traits<poisoned_svalue::key_t>):
! 	New.
! 	(setjmp_record::add_to_hash): New.
! 	(setjmp_svalue::key_t): New struct.
! 	(setjmp_svalue::compare_fields): Delete.
! 	(setjmp_svalue::clone): Delete.
! 	(setjmp_svalue::add_to_hash): Delete.
! 	(setjmp_svalue::setjmp_svalue): Add complexity.
! 	(setjmp_svalue::dump_to_pp): New.
! 	(setjmp_svalue::accept): New.
! 	(setjmp_svalue::void print_details): Delete.
! 	(is_a_helper <const setjmp_svalue *>::test): New.
! 	(template <> struct default_hash_traits<setjmp_svalue::key_t>): New.
! 	(class initial_svalue : public svalue): New.
! 	(is_a_helper <const initial_svalue *>::test): New.
! 	(class unaryop_svalue): New.
! 	(is_a_helper <const unaryop_svalue *>::test): New.
! 	(template <> struct default_hash_traits<unaryop_svalue::key_t>): New.
! 	(class binop_svalue): New.
! 	(is_a_helper <const binop_svalue *>::test): New.
! 	(template <> struct default_hash_traits<binop_svalue::key_t>): New.
! 	(class sub_svalue): New.
! 	(is_a_helper <const sub_svalue *>::test): New.
! 	(template <> struct default_hash_traits<sub_svalue::key_t>): New.
! 	(class unmergeable_svalue): New.
! 	(is_a_helper <const unmergeable_svalue *>::test): New.
! 	(class placeholder_svalue): New.
! 	(is_a_helper <placeholder_svalue *>::test): New.
! 	(class widening_svalue): New.
! 	(is_a_helper <widening_svalue *>::test): New.
! 	(template <> struct default_hash_traits<widening_svalue::key_t>): New.
! 	(class compound_svalue): New.
! 	(is_a_helper <compound_svalue *>::test): New.
! 	(template <> struct default_hash_traits<compound_svalue::key_t>): New.
! 	(class conjured_svalue): New.
! 	(is_a_helper <conjured_svalue *>::test): New.
! 	(template <> struct default_hash_traits<conjured_svalue::key_t>): New.
! 	(enum region_kind): Delete RK_PRIMITIVE, RK_STRUCT, RK_UNION, and
! 	RK_ARRAY.  Add RK_LABEL, RK_DECL, RK_FIELD, RK_ELEMENT, RK_OFFSET,
! 	RK_CAST, RK_HEAP_ALLOCATED, RK_ALLOCA, RK_STRING, and RK_UNKNOWN.
! 	(region_kind_to_str): Delete.
! 	(region::~region): Move implementation to region.cc.
! 	(region::operator==): Delete.
! 	(region::operator!=): Delete.
! 	(region::clone): Delete.
! 	(region::get_id): New.
! 	(region::cmp_ids): New.
! 	(region::dyn_cast_map_region): Delete.
! 	(region::dyn_cast_array_region): Delete.
! 	(region::region_id get_parent): Delete.
! 	(region::get_parent_region): Convert to a simple accessor.
! 	(region::void set_value): Delete.
! 	(region::svalue_id get_value): Delete.
! 	(region::svalue_id get_value_direct): Delete.
! 	(region::svalue_id get_inherited_child_sid): Delete.
! 	(region::dyn_cast_frame_region): New.
! 	(region::dyn_cast_function_region): New.
! 	(region::dyn_cast_decl_region): New.
! 	(region::dyn_cast_field_region): New.
! 	(region::dyn_cast_element_region): New.
! 	(region::dyn_cast_offset_region): New.
! 	(region::dyn_cast_cast_region): New.
! 	(region::dyn_cast_string_region): New.
! 	(region::accept): New.
! 	(region::get_base_region): New.
! 	(region::base_region_p): New.
! 	(region::descendent_of_p): New.
! 	(region::maybe_get_frame_region): New.
! 	(region::maybe_get_decl): New.
! 	(region::hash): Delete.
! 	(region::rint): Delete.
! 	(region::dump_dot_to_pp): Delete.
! 	(region::get_desc): New.
! 	(region::dump_to_pp): Convert to vfunc, changing signature.
! 	(region::dump_child_label): Delete.
! 	(region::remap_svalue_ids): Delete.
! 	(region::remap_region_ids): Delete.
! 	(region::dump): New.
! 	(region::walk_for_canonicalization): Delete.
! 	(region::non_null_p): Drop region_model param.
! 	(region::add_view): Delete.
! 	(region::get_view): Delete.
! 	(region::get_active_view): Delete.
! 	(region::is_view_p): Delete.
! 	(region::cmp_ptrs): New.
! 	(region::validate): Delete.
! 	(region::get_offset): New.
! 	(region::get_byte_size): New.
! 	(region::get_bit_size): New.
! 	(region::get_subregions_for_binding): New.
! 	(region::region): Add complexity param.  Convert parent from
! 	region_id to const region *.  Drop svalue_id.  Drop copy ctor.
! 	(region::symbolic_for_unknown_ptr_p): New.
! 	(region::add_to_hash): Delete.
! 	(region::print_fields): Delete.
! 	(region::get_complexity): New accessor.
! 	(region::become_active_view): Delete.
! 	(region::deactivate_any_active_view): Delete.
! 	(region::deactivate_view): Delete.
! 	(region::calc_offset): New.
! 	(region::m_parent_rid): Delete.
! 	(region::m_sval_id): Delete.
! 	(region::m_complexity): New.
! 	(region::m_id): New.
! 	(region::m_parent): New.
! 	(region::m_view_rids): Delete.
! 	(region::m_is_view): Delete.
! 	(region::m_active_view_rid): Delete.
! 	(region::m_cached_offset): New.
! 	(is_a_helper <region *>::test): Convert to...
! 	(is_a_helper <const region *>::test): ... this.
! 	(class primitive_region): Delete.
! 	(class space_region): New.
! 	(class map_region): Delete.
! 	(is_a_helper <map_region *>::test): Delete.
! 	(class frame_region): Reimplement.
! 	(template <> struct default_hash_traits<frame_region::key_t>):
! 	New.
! 	(class globals_region): Reimplement.
! 	(is_a_helper <globals_region *>::test): Convert to...
! 	(is_a_helper <const globals_region *>::test): ...this.
! 	(class struct_or_union_region): Delete.
! 	(is_a_helper <struct_or_union_region *>::test): Delete.
! 	(class code_region): Reimplement.
! 	(is_a_helper <const code_region *>::test): New.
! 	(class struct_region): Delete.
! 	(is_a_helper <struct_region *>::test): Delete.
! 	(class function_region): Reimplement.
! 	(is_a_helper <function_region *>::test): Convert to...
! 	(is_a_helper <const function_region *>::test): ...this.
! 	(class union_region): Delete.
! 	(is_a_helper <union_region *>::test): Delete.
! 	(class label_region): New.
! 	(is_a_helper <const label_region *>::test): New.
! 	(class scope_region): Delete.
! 	(class stack_region): Reimplement.
! 	(is_a_helper <stack_region *>::test): Convert to...
! 	(is_a_helper <const stack_region *>::test): ...this.
! 	(class heap_region): Reimplement.
! 	(is_a_helper <heap_region *>::test): Convert to...
! 	(is_a_helper <const heap_region *>::test): ...this.
! 	(class root_region): Reimplement.
! 	(is_a_helper <root_region *>::test): Convert to...
! 	(is_a_helper <const root_region *>::test): ...this.
! 	(class symbolic_region): Reimplement.
! 	(is_a_helper <const symbolic_region *>::test): New.
! 	(template <> struct default_hash_traits<symbolic_region::key_t>):
! 	New.
! 	(class decl_region): New.
! 	(is_a_helper <const decl_region *>::test): New.
! 	(class field_region): New.
! 	(template <> struct default_hash_traits<field_region::key_t>): New.
! 	(class array_region): Delete.
! 	(class element_region): New.
! 	(is_a_helper <array_region *>::test): Delete.
! 	(is_a_helper <const element_region *>::test): New.
! 	(template <> struct default_hash_traits<element_region::key_t>):
! 	New.
! 	(class offset_region): New.
! 	(is_a_helper <const offset_region *>::test): New.
! 	(template <> struct default_hash_traits<offset_region::key_t>):
! 	New.
! 	(class cast_region): New.
! 	(is_a_helper <const cast_region *>::test): New.
! 	(template <> struct default_hash_traits<cast_region::key_t>): New.
! 	(class heap_allocated_region): New.
! 	(class alloca_region): New.
! 	(class string_region): New.
! 	(is_a_helper <const string_region *>::test): New.
! 	(class unknown_region): New.
! 	(class region_model_manager): New.
! 	(struct append_ssa_names_cb_data): New.
! 	(class call_details): New.
! 	(region_model::region_model): Add region_model_manager param.
! 	(region_model::print_svalue): Delete.
! 	(region_model::dump_dot_to_pp): Delete.
! 	(region_model::dump_dot_to_file): Delete.
! 	(region_model::dump_dot): Delete.
! 	(region_model::dump_to_pp): Drop summarize param in favor of
! 	simple and multiline.
! 	(region_model::dump): Likewise.
! 	(region_model::summarize_to_pp): Delete.
! 	(region_model::summarize): Delete.
! 	(region_model::void canonicalize): Drop ctxt param.
! 	(region_model::void check_for_poison): Delete.
! 	(region_model::get_gassign_result): New.
! 	(region_model::impl_call_alloca): New.
! 	(region_model::impl_call_analyzer_describe): New.
! 	(region_model::impl_call_analyzer_eval): New.
! 	(region_model::impl_call_builtin_expect): New.
! 	(region_model::impl_call_calloc): New.
! 	(region_model::impl_call_free): New.
! 	(region_model::impl_call_malloc): New.
! 	(region_model::impl_call_memset): New.
! 	(region_model::impl_call_strlen): New.
! 	(region_model::get_reachable_svalues): New.
! 	(region_model::handle_phi): Drop is_back_edge param.
! 	(region_model::region_id get_root_rid): Delete.
! 	(region_model::root_region *get_root_region): Delete.
! 	(region_model::region_id get_stack_region_id): Delete.
! 	(region_model::push_frame): Convert from region_id and svalue_id
! 	to const region * and const svalue *.
! 	(region_model::get_current_frame_id): Replace with...
! 	(region_model::get_current_frame): ...this.
! 	(region_model::pop_frame): Convert from region_id to
! 	const region *.  Drop purge and stats param.  Add out_result.
! 	(region_model::function *get_function_at_depth): Delete.
! 	(region_model::get_globals_region_id): Delete.
! 	(region_model::add_svalue): Delete.
! 	(region_model::replace_svalue): Delete.
! 	(region_model::add_region): Delete.
! 	(region_model::add_region_for_type): Delete.
! 	(region_model::get_svalue): Delete.
! 	(region_model::get_region): Delete.
! 	(region_model::get_lvalue): Convert from region_id to
! 	const region *.
! 	(region_model::get_rvalue): Convert from svalue_id to
! 	const svalue *.
! 	(region_model::get_or_create_ptr_svalue): Delete.
! 	(region_model::get_or_create_constant_svalue): Delete.
! 	(region_model::get_svalue_for_fndecl): Delete.
! 	(region_model::get_svalue_for_label): Delete.
! 	(region_model::get_region_for_fndecl): Delete.
! 	(region_model::get_region_for_label): Delete.
! 	(region_model::get_frame_at_index (int index) const;): New.
! 	(region_model::maybe_cast): Delete.
! 	(region_model::maybe_cast_1): Delete.
! 	(region_model::get_field_region): Delete.
! 	(region_model::id deref_rvalue): Convert from region_id and
! 	svalue_id to const region * and const svalue *.  Drop overload,
! 	passing in both a tree and an svalue.
! 	(region_model::set_value): Convert from region_id and svalue_id to
! 	const region * and const svalue *.
! 	(region_model::set_to_new_unknown_value): Delete.
! 	(region_model::clobber_region (const region *reg);): New.
! 	(region_model::purge_region (const region *reg);): New.
! 	(region_model::zero_fill_region (const region *reg);): New.
! 	(region_model::mark_region_as_unknown (const region *reg);): New.
! 	(region_model::copy_region): Convert from region_id to
! 	const region *.
! 	(region_model::eval_condition): Convert from svalue_id to
! 	const svalue *.
! 	(region_model::eval_condition_without_cm): Likewise.
! 	(region_model::compare_initial_and_pointer): New.
! 	(region_model:maybe_get_constant): Delete.
! 	(region_model::add_new_malloc_region): Delete.
! 	(region_model::get_representative_tree): Convert from svalue_id to
! 	const svalue *.
! 	(region_model::get_representative_path_var): Delete decl taking a
! 	region_id in favor of two decls, for svalue vs region, with an
! 	svalue_set to ensure termination.
! 	(region_model::get_path_vars_for_svalue): Delete.
! 	(region_model::create_region_for_heap_alloc): New.
! 	(region_model::create_region_for_alloca): New.
! 	(region_model::purge_unused_svalues): Delete.
! 	(region_model::remap_svalue_ids): Delete.
! 	(region_model::remap_region_ids): Delete.
! 	(region_model::purge_regions): Delete.
! 	(region_model::get_num_svalues): Delete.
! 	(region_model::get_num_regions): Delete.
! 	(region_model::get_descendents): Delete.
! 	(region_model::get_store): New.
! 	(region_model::delete_region_and_descendents): Delete.
! 	(region_model::get_manager): New.
! 	(region_model::unbind_region_and_descendents): New.
! 	(region_model::can_merge_with_p): Add point param.  Drop
! 	svalue_id_merger_mapping.
! 	(region_model::get_value_by_name): Delete.
! 	(region_model::convert_byte_offset_to_array_index): Delete.
! 	(region_model::get_or_create_mem_ref): Delete.
! 	(region_model::get_or_create_pointer_plus_expr): Delete.
! 	(region_model::get_or_create_view): Delete.
! 	(region_model::get_lvalue_1): Convert from region_id to
! 	const region *.
! 	(region_model::get_rvalue_1): Convert from svalue_id to
! 	const svalue *.
! 	(region_model::get_ssa_name_regions_for_current_frame): New.
! 	(region_model::append_ssa_names_cb): New.
! 	(region_model::get_store_value): New.
! 	(region_model::copy_struct_region): Delete.
! 	(region_model::copy_union_region): Delete.
! 	(region_model::copy_array_region): Delete.
! 	(region_model::region_exists_p): New.
! 	(region_model::make_region_for_unexpected_tree_code): Delete.
! 	(region_model::loop_replay_fixup): New.
! 	(region_model::poison_any_pointers_to_bad_regions): Delete.
! 	(region_model::poison_any_pointers_to_descendents): New.
! 	(region_model::dump_summary_of_rep_path_vars): Delete.
! 	(region_model::on_top_level_param): New.
! 	(region_model::record_dynamic_extents): New.
! 	(region_model::m_mgr;): New.
! 	(region_model::m_store;): New.
! 	(region_model::m_svalues;): Delete.
! 	(region_model::m_regions;): Delete.
! 	(region_model::m_root_rid;): Delete.
! 	(region_model::m_current_frame;): New.
! 	(region_model_context::remap_svalue_ids): Delete.
! 	(region_model_context::can_purge_p): Delete.
! 	(region_model_context::on_svalue_leak): New.
! 	(region_model_context::on_svalue_purge): Delete.
! 	(region_model_context::on_liveness_change): New.
! 	(region_model_context::on_inherited_svalue): Delete.
! 	(region_model_context::on_cast): Delete.
! 	(region_model_context::on_unknown_change): Convert from svalue_id to
! 	const svalue * and add is_mutable.
! 	(class noop_region_model_context): Update for region_model_context
! 	changes.
! 	(model_merger::model_merger): Add program_point.  Drop
! 	svalue_id_merger_mapping.
! 	(model_merger::dump_to_pp): Add "simple" param.
! 	(model_merger::dump): Likewise.
! 	(model_merger::get_region_a): Delete.
! 	(model_merger::get_region_b): Delete.
! 	(model_merger::can_merge_values_p): Delete.
! 	(model_merger::record_regions): Delete.
! 	(model_merger::record_svalues): Delete.
! 	(model_merger::m_point): New field.
! 	(model_merger::m_map_regions_from_a_to_m): Delete.
! 	(model_merger::m_map_regions_from_b_to_m): Delete.
! 	(model_merger::m_sid_mapping): Delete.
! 	(struct svalue_id_merger_mapping): Delete.
! 	(class engine): New.
! 	(struct canonicalization): Delete.
! 	(inchash::add): Delete decls for hashing svalue_id and region_id.
! 	(test_region_model_context::on_unexpected_tree_code): Require t to
! 	be non-NULL.
! 	(selftest::assert_condition): Add overload comparing a pair of
! 	const svalue *.
! 	* sm-file.cc: Include "tristate.h", "selftest.h",
! 	"analyzer/call-string.h", "analyzer/program-point.h",
! 	"analyzer/store.h", and "analyzer/region-model.h".
! 	(fileptr_state_machine::get_default_state): New.
! 	(fileptr_state_machine::on_stmt): Remove calls to
! 	get_readable_tree in favor of get_diagnostic_tree.
! 	* sm-malloc.cc: Include "tristate.h", "selftest.h",
! 	"analyzer/call-string.h", "analyzer/program-point.h",
! 	"analyzer/store.h", and "analyzer/region-model.h".
! 	(malloc_state_machine::get_default_state): New.
! 	(malloc_state_machine::reset_when_passed_to_unknown_fn_p): New.
! 	(malloc_diagnostic::describe_state_change): Handle change.m_expr
! 	being NULL.
! 	(null_arg::emit): Avoid printing "NULL '0'".
! 	(null_arg::describe_final_event): Avoid printing "(0) NULL".
! 	(malloc_leak::emit): Handle m_arg being NULL.
! 	(malloc_leak::describe_final_event): Handle ev.m_expr being NULL.
! 	(malloc_state_machine::on_stmt): Don't call get_readable_tree.
! 	Call get_diagnostic_tree when creating pending diagnostics.
! 	Update for is_zero_assignment becoming a member function of
! 	sm_ctxt.
! 	Don't transition to m_non_heap for ADDR_EXPR(MEM_REF()).
! 	(malloc_state_machine::reset_when_passed_to_unknown_fn_p): New
! 	vfunc implementation.
! 	* sm-sensitive.cc (sensitive_state_machine::warn_for_any_exposure): Call
! 	get_diagnostic_tree and pass the result to warn_for_state.
! 	* sm-signal.cc: Move includes of "analyzer/call-string.h" and
! 	"analyzer/program-point.h" to before "analyzer/region-model.h",
! 	and also include "analyzer/store.h" before it.
! 	(signal_unsafe_call::describe_state_change): Use
! 	get_dest_function to get handler.
! 	(update_model_for_signal_handler): Pass manager to region_model
! 	ctor.
! 	(register_signal_handler::impl_transition): Update for changes to
! 	get_or_create_node and add_edge.
! 	* sm-taint.cc (taint_state_machine::on_stmt): Remove calls to
! 	get_readable_tree, replacing them when calling warn_for_state with
! 	calls to get_diagnostic_tree.
! 	* sm.cc (is_zero_assignment): Delete.
! 	(any_pointer_p): Move to within namespace ana.
! 	* sm.h (is_zero_assignment): Remove decl.
! 	(any_pointer_p): Move decl to within namespace ana.
! 	(state_machine::get_default_state): New vfunc.
! 	(state_machine::reset_when_passed_to_unknown_fn_p): New vfunc.
! 	(sm_context::get_readable_tree): Rename to...
! 	(sm_context::get_diagnostic_tree): ...this.
! 	(sm_context::is_zero_assignment): New vfunc.
! 	* store.cc: New file.
! 	* store.h: New file.
! 	* svalue.cc: New file.
! 
! 2020-05-22  Mark Wielaard  <mark@klomp.org>
! 
! 	* sm-signal.cc(signal_unsafe_call::emit): Possibly add
! 	gcc_rich_location note for replacement.
! 	(signal_unsafe_call::get_replacement_fn): New private function.
! 	(get_async_signal_unsafe_fns): Add "exit".
  
  2020-04-28  David Malcolm  <dmalcolm@redhat.com>
  
***************
*** 1361,1367 ****
  	* Initial creation
  
  
! Copyright (C) 2019-2020 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 4601,4607 ----
  	* Initial creation
  
  
! Copyright (C) 2019-2021 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-10.3.0/gcc/analyzer/analysis-plan.cc gcc-11.1.0/gcc/analyzer/analysis-plan.cc
*** gcc-10.3.0/gcc/analyzer/analysis-plan.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/analysis-plan.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* A class to encapsulate decisions about how the analysis should happen.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* A class to encapsulate decisions about how the analysis should happen.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 27,32 ****
--- 27,33 ----
  #include "timevar.h"
  #include "ipa-utils.h"
  #include "function.h"
+ #include "json.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-core.h"
  #include "analyzer/analyzer-logging.h"
diff -Nrcpad gcc-10.3.0/gcc/analyzer/analysis-plan.h gcc-11.1.0/gcc/analyzer/analysis-plan.h
*** gcc-10.3.0/gcc/analyzer/analysis-plan.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/analysis-plan.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* A class to encapsulate decisions about how the analysis should happen.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* A class to encapsulate decisions about how the analysis should happen.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/analyzer/analyzer-logging.cc gcc-11.1.0/gcc/analyzer/analyzer-logging.cc
*** gcc-10.3.0/gcc/analyzer/analyzer-logging.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/analyzer-logging.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Hierarchical log messages for the analyzer.
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Hierarchical log messages for the analyzer.
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 30,35 ****
--- 30,39 ----
  
  #if ENABLE_ANALYZER
  
+ #if __GNUC__ >= 10
+ #pragma GCC diagnostic ignored "-Wformat-diag"
+ #endif
+ 
  namespace ana {
  
  /* Implementation of class logger.  */
*************** void
*** 164,170 ****
  logger::enter_scope (const char *scope_name)
  {
    log ("entering: %s", scope_name);
!   m_indent_level += 1;
  }
  
  void
--- 168,174 ----
  logger::enter_scope (const char *scope_name)
  {
    log ("entering: %s", scope_name);
!   inc_indent ();
  }
  
  void
*************** logger::enter_scope (const char *scope_n
*** 175,181 ****
    log_va_partial (fmt, ap);
    end_log_line ();
  
!   m_indent_level += 1;
  }
  
  
--- 179,185 ----
    log_va_partial (fmt, ap);
    end_log_line ();
  
!   inc_indent ();
  }
  
  
*************** void
*** 186,192 ****
  logger::exit_scope (const char *scope_name)
  {
    if (m_indent_level)
!     m_indent_level -= 1;
    else
      log ("(mismatching indentation)");
    log ("exiting: %s", scope_name);
--- 190,196 ----
  logger::exit_scope (const char *scope_name)
  {
    if (m_indent_level)
!     dec_indent ();
    else
      log ("(mismatching indentation)");
    log ("exiting: %s", scope_name);
diff -Nrcpad gcc-10.3.0/gcc/analyzer/analyzer-logging.h gcc-11.1.0/gcc/analyzer/analyzer-logging.h
*** gcc-10.3.0/gcc/analyzer/analyzer-logging.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/analyzer-logging.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Hierarchical log messages for the analyzer.
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Hierarchical log messages for the analyzer.
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** class logger
*** 52,57 ****
--- 52,59 ----
    void enter_scope (const char *scope_name, const char *fmt, va_list *ap)
      ATTRIBUTE_GCC_DIAG(3, 0);
    void exit_scope (const char *scope_name);
+   void inc_indent () { m_indent_level++; }
+   void dec_indent () { m_indent_level--; }
  
    pretty_printer *get_printer () const { return m_pp; }
    FILE *get_file () const { return m_f_out; }
diff -Nrcpad gcc-10.3.0/gcc/analyzer/analyzer-pass.cc gcc-11.1.0/gcc/analyzer/analyzer-pass.cc
*** gcc-10.3.0/gcc/analyzer/analyzer-pass.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/analyzer-pass.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Integration of the analyzer with GCC's pass manager.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Integration of the analyzer with GCC's pass manager.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 25,30 ****
--- 25,33 ----
  #include "tree-pass.h"
  #include "diagnostic.h"
  #include "options.h"
+ #include "tree.h"
+ #include "function.h"
+ #include "analyzer/analyzer.h"
  #include "analyzer/engine.h"
  
  namespace {
*************** pass_analyzer::execute (function *)
*** 83,91 ****
  #if ENABLE_ANALYZER
    ana::run_checkers ();
  #else
!   sorry ("%qs was not enabled in this build of GCC"
! 	 " (missing configure-time option %qs)",
! 	 "-fanalyzer", "--enable-analyzer");
  #endif
  
    return 0;
--- 86,92 ----
  #if ENABLE_ANALYZER
    ana::run_checkers ();
  #else
!   sorry_no_analyzer ();
  #endif
  
    return 0;
*************** make_pass_analyzer (gcc::context *ctxt)
*** 100,102 ****
--- 101,117 ----
  {
    return new pass_analyzer (ctxt);
  }
+ 
+ #if !ENABLE_ANALYZER
+ 
+ /* Issue a "sorry" diagnostic that the analyzer was not enabled.  */
+ 
+ void
+ sorry_no_analyzer ()
+ {
+   sorry ("%qs was not enabled in this build of GCC"
+ 	 " (missing configure-time option %qs)",
+ 	 "-fanalyzer", "--enable-analyzer");
+ }
+ 
+ #endif /* #if !ENABLE_ANALYZER */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/analyzer-selftests.cc gcc-11.1.0/gcc/analyzer/analyzer-selftests.cc
*** gcc-10.3.0/gcc/analyzer/analyzer-selftests.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/analyzer-selftests.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Selftest support for the analyzer.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Selftest support for the analyzer.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** run_analyzer_selftests ()
*** 58,63 ****
--- 58,64 ----
    analyzer_region_model_cc_tests ();
    analyzer_sm_file_cc_tests ();
    analyzer_sm_signal_cc_tests ();
+   analyzer_store_cc_tests ();
  #endif /* #if ENABLE_ANALYZER */
  }
  
diff -Nrcpad gcc-10.3.0/gcc/analyzer/analyzer-selftests.h gcc-11.1.0/gcc/analyzer/analyzer-selftests.h
*** gcc-10.3.0/gcc/analyzer/analyzer-selftests.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/analyzer-selftests.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Selftests for the analyzer.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Selftests for the analyzer.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** extern void analyzer_program_state_cc_te
*** 41,46 ****
--- 41,47 ----
  extern void analyzer_region_model_cc_tests ();
  extern void analyzer_sm_file_cc_tests ();
  extern void analyzer_sm_signal_cc_tests ();
+ extern void analyzer_store_cc_tests ();
  
  } /* end of namespace ana::selftest.  */
  
diff -Nrcpad gcc-10.3.0/gcc/analyzer/analyzer.cc gcc-11.1.0/gcc/analyzer/analyzer.cc
*** gcc-10.3.0/gcc/analyzer/analyzer.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/analyzer.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Utility functions for the analyzer.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Utility functions for the analyzer.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 32,37 ****
--- 32,195 ----
  
  #if ENABLE_ANALYZER
  
+ namespace ana {
+ 
+ /* Workaround for missing location information for some stmts,
+    which ultimately should be solved by fixing the frontends
+    to provide the locations (TODO).  */
+ 
+ location_t
+ get_stmt_location (const gimple *stmt, function *fun)
+ {
+   if (get_pure_location (stmt->location) == UNKNOWN_LOCATION)
+     {
+       /* Workaround for missing location information for clobber
+ 	 stmts, which seem to lack location information in the C frontend
+ 	 at least.  Created by gimplify_bind_expr, which uses the
+ 	   BLOCK_SOURCE_END_LOCATION (BIND_EXPR_BLOCK (bind_expr))
+ 	 but this is never set up when the block is created in
+ 	 c_end_compound_stmt's pop_scope.
+ 	 TODO: fix this missing location information.
+ 
+ 	 For now, as a hackish workaround, use the location of the end of
+ 	 the function.  */
+       if (gimple_clobber_p (stmt) && fun)
+ 	return fun->function_end_locus;
+     }
+ 
+   return stmt->location;
+ }
+ 
+ static tree
+ fixup_tree_for_diagnostic_1 (tree expr, hash_set<tree> *visited);
+ 
+ /*  Subroutine of fixup_tree_for_diagnostic_1, called on SSA names.
+     Attempt to reconstruct a a tree expression for SSA_NAME
+     based on its def-stmt.
+     SSA_NAME must be non-NULL.
+     VISITED must be non-NULL; it is used to ensure termination.
+ 
+     Return NULL_TREE if there is a problem.  */
+ 
+ static tree
+ maybe_reconstruct_from_def_stmt (tree ssa_name,
+ 				 hash_set<tree> *visited)
+ {
+   /* Ensure termination.  */
+   if (visited->contains (ssa_name))
+     return NULL_TREE;
+   visited->add (ssa_name);
+ 
+   gimple *def_stmt = SSA_NAME_DEF_STMT (ssa_name);
+ 
+   switch (gimple_code (def_stmt))
+     {
+     default:
+       gcc_unreachable ();
+     case GIMPLE_NOP:
+     case GIMPLE_PHI:
+       /* Can't handle these.  */
+       return NULL_TREE;
+     case GIMPLE_ASSIGN:
+       {
+ 	enum tree_code code = gimple_assign_rhs_code (def_stmt);
+ 
+ 	/* Reverse the effect of extract_ops_from_tree during
+ 	   gimplification.  */
+ 	switch (get_gimple_rhs_class (code))
+ 	  {
+ 	  default:
+ 	  case GIMPLE_INVALID_RHS:
+ 	    gcc_unreachable ();
+ 	  case GIMPLE_TERNARY_RHS:
+ 	  case GIMPLE_BINARY_RHS:
+ 	  case GIMPLE_UNARY_RHS:
+ 	    {
+ 	      tree t = make_node (code);
+ 	      TREE_TYPE (t) = TREE_TYPE (ssa_name);
+ 	      unsigned num_rhs_args = gimple_num_ops (def_stmt) - 1;
+ 	      for (unsigned i = 0; i < num_rhs_args; i++)
+ 		{
+ 		  tree op = gimple_op (def_stmt, i + 1);
+ 		  if (op)
+ 		    {
+ 		      op = fixup_tree_for_diagnostic_1 (op, visited);
+ 		      if (op == NULL_TREE)
+ 			return NULL_TREE;
+ 		    }
+ 		  TREE_OPERAND (t, i) = op;
+ 		}
+ 	      return t;
+ 	    }
+ 	  case GIMPLE_SINGLE_RHS:
+ 	    {
+ 	      tree op = gimple_op (def_stmt, 1);
+ 	      op = fixup_tree_for_diagnostic_1 (op, visited);
+ 	      return op;
+ 	    }
+ 	  }
+       }
+       break;
+     case GIMPLE_CALL:
+       {
+ 	gcall *call_stmt = as_a <gcall *> (def_stmt);
+ 	tree return_type = gimple_call_return_type (call_stmt);
+ 	tree fn = fixup_tree_for_diagnostic_1 (gimple_call_fn (call_stmt),
+ 					       visited);
+ 	unsigned num_args = gimple_call_num_args (call_stmt);
+ 	auto_vec<tree> args (num_args);
+ 	for (unsigned i = 0; i < num_args; i++)
+ 	  {
+ 	    tree arg = gimple_call_arg (call_stmt, i);
+ 	    arg = fixup_tree_for_diagnostic_1 (arg, visited);
+ 	    if (arg == NULL_TREE)
+ 	      return NULL_TREE;
+ 	    args.quick_push (arg);
+ 	  }
+ 	return build_call_array_loc (gimple_location (call_stmt),
+ 				     return_type, fn,
+ 				     num_args, args.address ());
+       }
+       break;
+     }
+ }
+ 
+ /* Subroutine of fixup_tree_for_diagnostic: attempt to fixup EXPR,
+    which can be NULL.
+    VISITED must be non-NULL; it is used to ensure termination.  */
+ 
+ static tree
+ fixup_tree_for_diagnostic_1 (tree expr, hash_set<tree> *visited)
+ {
+   if (expr
+       && TREE_CODE (expr) == SSA_NAME
+       && (SSA_NAME_VAR (expr) == NULL_TREE
+ 	  || DECL_ARTIFICIAL (SSA_NAME_VAR (expr))))
+     if (tree expr2 = maybe_reconstruct_from_def_stmt (expr, visited))
+       return expr2;
+   return expr;
+ }
+ 
+ /* We don't want to print '<unknown>' in our diagnostics (PR analyzer/99771),
+    but sometimes we generate diagnostics involving an ssa name for a
+    temporary.
+ 
+    Work around this by attempting to reconstruct a tree expression for
+    such temporaries based on their def-stmts.
+ 
+    Otherwise return EXPR.
+ 
+    EXPR can be NULL.  */
+ 
+ tree
+ fixup_tree_for_diagnostic (tree expr)
+ {
+   hash_set<tree> visited;
+   return fixup_tree_for_diagnostic_1 (expr, &visited);
+ }
+ 
+ } // namespace ana
+ 
  /* Helper function for checkers.  Is the CALL to the given function name,
     and with the given number of arguments?
  
*************** is_setjmp_call_p (const gcall *call)
*** 174,180 ****
  {
    if (is_special_named_call_p (call, "setjmp", 1)
        || is_special_named_call_p (call, "sigsetjmp", 2))
!     return true;
  
    return false;
  }
--- 332,340 ----
  {
    if (is_special_named_call_p (call, "setjmp", 1)
        || is_special_named_call_p (call, "sigsetjmp", 2))
!     /* region_model::on_setjmp requires a pointer.  */
!     if (POINTER_TYPE_P (TREE_TYPE (gimple_call_arg (call, 0))))
!       return true;
  
    return false;
  }
*************** is_longjmp_call_p (const gcall *call)
*** 186,192 ****
  {
    if (is_special_named_call_p (call, "longjmp", 2)
        || is_special_named_call_p (call, "siglongjmp", 2))
!     return true;
  
    return false;
  }
--- 346,355 ----
  {
    if (is_special_named_call_p (call, "longjmp", 2)
        || is_special_named_call_p (call, "siglongjmp", 2))
!     /* exploded_node::on_longjmp requires a pointer for the initial
!        argument.  */
!     if (POINTER_TYPE_P (TREE_TYPE (gimple_call_arg (call, 0))))
!       return true;
  
    return false;
  }
diff -Nrcpad gcc-10.3.0/gcc/analyzer/analyzer.h gcc-11.1.0/gcc/analyzer/analyzer.h
*** gcc-10.3.0/gcc/analyzer/analyzer.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/analyzer.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Utility functions for the analyzer.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Utility functions for the analyzer.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** class superedge;
*** 35,58 ****
    class callgraph_superedge;
      class call_superedge;
      class return_superedge;
  class svalue;
    class region_svalue;
    class constant_svalue;
-   class poisoned_svalue;
    class unknown_svalue;
    class setjmp_svalue;
  class region;
!   class map_region;
!   class array_region;
    class symbolic_region;
  class region_model;
  class region_model_context;
    class impl_region_model_context;
  class constraint_manager;
  class equiv_class;
! struct model_merger;
! struct svalue_id_merger_mapping;
! struct canonicalization;
  class pending_diagnostic;
  class state_change_event;
  class checker_path;
--- 35,80 ----
    class callgraph_superedge;
      class call_superedge;
      class return_superedge;
+ 
  class svalue;
    class region_svalue;
    class constant_svalue;
    class unknown_svalue;
+   class poisoned_svalue;
    class setjmp_svalue;
+   class initial_svalue;
+   class unaryop_svalue;
+   class binop_svalue;
+   class sub_svalue;
+   class unmergeable_svalue;
+   class placeholder_svalue;
+   class widening_svalue;
+   class compound_svalue;
+   class conjured_svalue;
+ typedef hash_set<const svalue *> svalue_set;
  class region;
!   class frame_region;
!   class function_region;
!   class label_region;
!   class decl_region;
    class symbolic_region;
+   class element_region;
+   class offset_region;
+   class cast_region;
+   class field_region;
+   class string_region;
+ class region_model_manager;
+ struct model_merger;
+ class store_manager;
+ class store;
  class region_model;
  class region_model_context;
    class impl_region_model_context;
+ class call_details;
+ struct rejected_constraint;
  class constraint_manager;
  class equiv_class;
! 
  class pending_diagnostic;
  class state_change_event;
  class checker_path;
*************** class extrinsic_state;
*** 60,65 ****
--- 82,88 ----
  class sm_state_map;
  class stmt_finder;
  class program_point;
+ class function_point;
  class program_state;
  class exploded_graph;
  class exploded_node;
*************** class state_purge_per_ssa_name;
*** 73,81 ****
--- 96,203 ----
  class state_change;
  class rewind_info_t;
  
+ class engine;
+ class state_machine;
+ class logger;
+ class visitor;
+ 
  /* Forward decls of functions.  */
  
+ extern void dump_tree (pretty_printer *pp, tree t);
  extern void dump_quoted_tree (pretty_printer *pp, tree t);
+ extern void print_quoted_type (pretty_printer *pp, tree t);
+ extern int readability_comparator (const void *p1, const void *p2);
+ extern int tree_cmp (const void *p1, const void *p2);
+ extern tree fixup_tree_for_diagnostic (tree);
+ 
+ /* A tree, extended with stack frame information for locals, so that
+    we can distinguish between different values of locals within a potentially
+    recursive callstack.  */
+ 
+ class path_var
+ {
+ public:
+   path_var (tree t, int stack_depth)
+   : m_tree (t), m_stack_depth (stack_depth)
+   {
+     // TODO: ignore stack depth for globals and constants
+   }
+ 
+   bool operator== (const path_var &other) const
+   {
+     return (m_tree == other.m_tree
+ 	    && m_stack_depth == other.m_stack_depth);
+   }
+ 
+   operator bool () const
+   {
+     return m_tree != NULL_TREE;
+   }
+ 
+   void dump (pretty_printer *pp) const;
+ 
+   tree m_tree;
+   int m_stack_depth; // or -1 for globals?
+ };
+ 
+ typedef offset_int bit_offset_t;
+ typedef offset_int bit_size_t;
+ typedef offset_int byte_size_t;
+ 
+ /* The location of a region expressesd as an offset relative to a
+    base region.  */
+ 
+ class region_offset
+ {
+ public:
+   static region_offset make_concrete (const region *base_region,
+ 				      bit_offset_t offset)
+   {
+     return region_offset (base_region, offset, false);
+   }
+   static region_offset make_symbolic (const region *base_region)
+   {
+     return region_offset (base_region, 0, true);
+   }
+ 
+   const region *get_base_region () const { return m_base_region; }
+ 
+   bool symbolic_p () const { return m_is_symbolic; }
+ 
+   bit_offset_t get_bit_offset () const
+   {
+     gcc_assert (!symbolic_p ());
+     return m_offset;
+   }
+ 
+   bool operator== (const region_offset &other) const
+   {
+     return (m_base_region == other.m_base_region
+ 	    && m_offset == other.m_offset
+ 	    && m_is_symbolic == other.m_is_symbolic);
+   }
+ 
+ private:
+   region_offset (const region *base_region, bit_offset_t offset,
+ 		 bool is_symbolic)
+   : m_base_region (base_region), m_offset (offset), m_is_symbolic (is_symbolic)
+   {}
+ 
+   const region *m_base_region;
+   bit_offset_t m_offset;
+   bool m_is_symbolic;
+ };
+ 
+ extern location_t get_stmt_location (const gimple *stmt, function *fun);
+ 
+ /* Passed by pointer to PLUGIN_ANALYZER_INIT callbacks.  */
+ 
+ class plugin_analyzer_init_iface
+ {
+ public:
+   virtual void register_state_machine (state_machine *) = 0;
+   virtual logger *get_logger () const = 0;
+ };
  
  } // namespace ana
  
*************** extern bool is_special_named_call_p (con
*** 84,89 ****
--- 206,212 ----
  extern bool is_named_call_p (tree fndecl, const char *funcname);
  extern bool is_named_call_p (tree fndecl, const char *funcname,
  			     const gcall *call, unsigned int num_args);
+ extern bool is_std_named_call_p (tree fndecl, const char *funcname);
  extern bool is_std_named_call_p (tree fndecl, const char *funcname,
  				 const gcall *call, unsigned int num_args);
  extern bool is_setjmp_call_p (const gcall *call);
*************** struct pod_hash_traits : typed_noop_remo
*** 124,127 ****
--- 247,327 ----
    static inline bool is_empty (Type);
  };
  
+ /* A hash traits class that uses member functions to implement
+    the various required ops.  */
+ 
+ template <typename Type>
+ struct member_function_hash_traits : public typed_noop_remove<Type>
+ {
+   typedef Type value_type;
+   typedef Type compare_type;
+   static inline hashval_t hash (value_type v) { return v.hash (); }
+   static inline bool equal (const value_type &existing,
+ 			    const value_type &candidate)
+   {
+     return existing == candidate;
+   }
+   static inline void mark_deleted (Type &t) { t.mark_deleted (); }
+   static inline void mark_empty (Type &t) { t.mark_empty (); }
+   static inline bool is_deleted (Type t) { return t.is_deleted (); }
+   static inline bool is_empty (Type t) { return t.is_empty (); }
+ };
+ 
+ /* A map from T::key_t to T* for use in consolidating instances of T.
+    Owns all instances of T.
+    T::key_t should have operator== and be hashable.  */
+ 
+ template <typename T>
+ class consolidation_map
+ {
+ public:
+   typedef typename T::key_t key_t;
+   typedef T instance_t;
+   typedef hash_map<key_t, instance_t *> inner_map_t;
+   typedef typename inner_map_t::iterator iterator;
+ 
+   /* Delete all instances of T.  */
+ 
+   ~consolidation_map ()
+   {
+     for (typename inner_map_t::iterator iter = m_inner_map.begin ();
+ 	 iter != m_inner_map.end (); ++iter)
+       delete (*iter).second;
+   }
+ 
+   /* Get the instance of T for K if one exists, or NULL.  */
+ 
+   T *get (const key_t &k) const
+   {
+     if (instance_t **slot = const_cast<inner_map_t &> (m_inner_map).get (k))
+       return *slot;
+     return NULL;
+   }
+ 
+   /* Take ownership of INSTANCE.  */
+ 
+   void put (const key_t &k, T *instance)
+   {
+     m_inner_map.put (k, instance);
+   }
+ 
+   size_t elements () const { return m_inner_map.elements (); }
+ 
+   iterator begin () const { return m_inner_map.begin (); }
+   iterator end () const { return m_inner_map.end (); }
+ 
+ private:
+   inner_map_t m_inner_map;
+ };
+ 
+ /* Disable -Wformat-diag; we want to be able to use pp_printf
+    for logging/dumping without complying with the rules for diagnostics.  */
+ #if __GNUC__ >= 10
+ #pragma GCC diagnostic ignored "-Wformat-diag"
+ #endif
+ 
+ #if !ENABLE_ANALYZER
+ extern void sorry_no_analyzer ();
+ #endif /* #if !ENABLE_ANALYZER */
+ 
  #endif /* GCC_ANALYZER_ANALYZER_H */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/analyzer.opt gcc-11.1.0/gcc/analyzer/analyzer.opt
*** gcc-10.3.0/gcc/analyzer/analyzer.opt	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/analyzer.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; analyzer.opt -- Options for the analyzer.
  
! ; Copyright (C) 2019-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; analyzer.opt -- Options for the analyzer.
  
! ; Copyright (C) 2019-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** The maximum number of 'after supernode'
*** 30,43 ****
--- 30,59 ----
  Common Joined UInteger Var(param_analyzer_max_enodes_per_program_point) Init(8) Param
  The maximum number of exploded nodes per program point within the analyzer, before terminating analysis of that point.
  
+ -param=analyzer-max-constraints=
+ Common Joined UInteger Var(param_analyzer_max_constraints) Init(20) Param
+ The maximum number of constraints per state.
+ 
+ -param=analyzer-max-infeasible-edges=
+ Common Joined UInteger Var(param_analyzer_max_infeasible_edges) Init(10) Param
+ The maximum number of infeasible edges to reject before declaring a diagnostic as infeasible.
+ 
  -param=analyzer-max-recursion-depth=
  Common Joined UInteger Var(param_analyzer_max_recursion_depth) Init(2) Param
  The maximum number of times a callsite can appear in a call stack within the analyzer, before terminating analysis of a call that would recurse deeper.
  
+ -param=analyzer-max-svalue-depth=
+ Common Joined UInteger Var(param_analyzer_max_svalue_depth) Init(13) Param
+ The maximum depth of a symbolic value, before approximating the value as unknown.
+ 
  -param=analyzer-min-snodes-for-call-summary=
  Common Joined UInteger Var(param_analyzer_min_snodes_for_call_summary) Init(10) Param
  The minimum number of supernodes within a function for the analyzer to consider summarizing its effects at call sites.
  
+ -param=analyzer-max-enodes-for-full-dump=
+ Common Joined UInteger Var(param_analyzer_max_enodes_for_full_dump) Init(200) Param
+ The maximum depth of exploded nodes that should appear in a dot dump before switching to a less verbose format.
+ 
  Wanalyzer-double-fclose
  Common Var(warn_analyzer_double_fclose) Init(1) Warning
  Warn about code paths in which a stdio FILE can be closed more than once.
*************** Wanalyzer-malloc-leak
*** 62,67 ****
--- 78,87 ----
  Common Var(warn_analyzer_malloc_leak) Init(1) Warning
  Warn about code paths in which a heap-allocated pointer leaks.
  
+ Wanalyzer-mismatching-deallocation
+ Common Var(warn_analyzer_mismatching_deallocation) Init(1) Warning
+ Warn about code paths in which the wrong deallocation function is called.
+ 
  Wanalyzer-possible-null-argument
  Common Var(warn_analyzer_possible_null_argument) Init(1) Warning
  Warn about code paths in which a possibly-NULL value is passed to a must-not-be-NULL function argument.
*************** Wanalyzer-null-dereference
*** 82,87 ****
--- 102,115 ----
  Common Var(warn_analyzer_null_dereference) Init(1) Warning
  Warn about code paths in which a NULL pointer is dereferenced.
  
+ Wanalyzer-shift-count-negative
+ Common Var(warn_analyzer_shift_count_negative) Init(1) Warning
+ Warn about code paths in which a shift with negative count is attempted.
+ 
+ Wanalyzer-shift-count-overflow
+ Common Var(warn_analyzer_shift_count_overflow) Init(1) Warning
+ Warn about code paths in which a shift with count >= width of type is attempted.
+ 
  Wanalyzer-stale-setjmp-buffer
  Common Var(warn_analyzer_stale_setjmp_buffer) Init(1) Warning
  Warn about code paths in which a longjmp rewinds to a jmp_buf saved in a stack frame that has returned.
*************** Wanalyzer-use-of-pointer-in-stale-stack-
*** 98,103 ****
--- 126,139 ----
  Common Var(warn_analyzer_use_of_pointer_in_stale_stack_frame) Init(1) Warning
  Warn about code paths in which a pointer to a stale stack frame is used.
  
+ Wanalyzer-write-to-const
+ Common Var(warn_analyzer_write_to_const) Init(1) Warning
+ Warn about code paths which attempt to write to a const object.
+ 
+ Wanalyzer-write-to-string-literal
+ Common Var(warn_analyzer_write_to_string_literal) Init(1) Warning
+ Warn about code paths which attempt to write to a string literal.
+ 
  Wanalyzer-too-complex
  Common Var(warn_analyzer_too_complex) Init(0) Warning
  Warn if the code is too complicated for the analyzer to fully explore.
*************** fanalyzer-fine-grained
*** 110,115 ****
--- 146,155 ----
  Common Var(flag_analyzer_fine_grained) Init(0)
  Avoid combining multiple statements into one exploded edge.
  
+ fanalyzer-feasibility
+ Common Var(flag_analyzer_feasibility) Init(1)
+ Verify that paths are feasible when emitting diagnostics.
+ 
  fanalyzer-show-duplicate-count
  Common Var(flag_analyzer_show_duplicate_count) Init(0)
  Issue a note when diagnostics are deduplicated.
*************** fdump-analyzer-exploded-nodes-3
*** 170,175 ****
--- 210,223 ----
  Common RejectNegative Var(flag_dump_analyzer_exploded_nodes_3)
  Dump a textual representation of the exploded graph to SRCFILE.eg-ID.txt.
  
+ fdump-analyzer-feasibility
+ Common RejectNegative Var(flag_dump_analyzer_feasibility)
+ Dump various analyzer internals to SRCFILE.*.fg.dot and SRCFILE.*.tg.dot.
+ 
+ fdump-analyzer-json
+ Common RejectNegative Var(flag_dump_analyzer_json)
+ Dump analyzer-specific data to a SRCFILE.analyzer.json.gz file.
+ 
  fdump-analyzer-state-purge
  Common RejectNegative Var(flag_dump_analyzer_state_purge)
  Dump state-purging information to a SRCFILE.state-purge.dot file.
diff -Nrcpad gcc-10.3.0/gcc/analyzer/bar-chart.cc gcc-11.1.0/gcc/analyzer/bar-chart.cc
*** gcc-10.3.0/gcc/analyzer/bar-chart.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/bar-chart.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Support for plotting bar charts in dumps.
!    Copyright (C) 2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Support for plotting bar charts in dumps.
!    Copyright (C) 2020-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/analyzer/bar-chart.h gcc-11.1.0/gcc/analyzer/bar-chart.h
*** gcc-10.3.0/gcc/analyzer/bar-chart.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/bar-chart.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Support for plotting bar charts in dumps.
!    Copyright (C) 2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Support for plotting bar charts in dumps.
!    Copyright (C) 2020-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/analyzer/call-string.cc gcc-11.1.0/gcc/analyzer/call-string.cc
*** gcc-10.3.0/gcc/analyzer/call-string.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/call-string.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Call stacks at program points.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Call stacks at program points.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 24,29 ****
--- 24,30 ----
  #include "pretty-print.h"
  #include "tree.h"
  #include "options.h"
+ #include "json.h"
  #include "analyzer/call-string.h"
  #include "ordered-hash-map.h"
  #include "options.h"
*************** along with GCC; see the file COPYING3.
*** 38,43 ****
--- 39,48 ----
  
  #if ENABLE_ANALYZER
  
+ #if __GNUC__ >= 10
+ #pragma GCC diagnostic ignored "-Wformat-diag"
+ #endif
+ 
  /* class call_string.  */
  
  /* call_string's copy ctor.  */
*************** call_string::print (pretty_printer *pp)
*** 102,107 ****
--- 107,140 ----
    pp_string (pp, "]");
  }
  
+ /* Return a new json::array of the form
+    [{"src_snode_idx" : int,
+      "dst_snode_idx" : int,
+      "funcname" : str},
+      ...for each return_superedge in the callstring].  */
+ 
+ json::value *
+ call_string::to_json () const
+ {
+   json::array *arr = new json::array ();
+ 
+   const return_superedge *e;
+   int i;
+   FOR_EACH_VEC_ELT (m_return_edges, i, e)
+     {
+       json::object *e_obj = new json::object ();
+       e_obj->set ("src_snode_idx",
+ 		  new json::integer_number (e->m_src->m_index));
+       e_obj->set ("dst_snode_idx",
+ 		  new json::integer_number (e->m_dest->m_index));
+       e_obj->set ("funcname",
+ 		  new json::string (function_name (e->m_dest->m_fun)));
+       arr->append (e_obj);
+     }
+ 
+   return arr;
+ }
+ 
  /* Generate a hash value for this call_string.  */
  
  hashval_t
diff -Nrcpad gcc-10.3.0/gcc/analyzer/call-string.h gcc-11.1.0/gcc/analyzer/call-string.h
*** gcc-10.3.0/gcc/analyzer/call-string.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/call-string.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Call stacks at program points.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Call stacks at program points.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** public:
*** 47,52 ****
--- 47,54 ----
  
    void print (pretty_printer *pp) const;
  
+   json::value *to_json () const;
+ 
    hashval_t hash () const;
  
    bool empty_p () const { return m_return_edges.is_empty (); }
diff -Nrcpad gcc-10.3.0/gcc/analyzer/checker-path.cc gcc-11.1.0/gcc/analyzer/checker-path.cc
*** gcc-10.3.0/gcc/analyzer/checker-path.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/checker-path.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subclasses of diagnostic_path and diagnostic_event for analyzer diagnostics.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Subclasses of diagnostic_path and diagnostic_event for analyzer diagnostics.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 38,43 ****
--- 38,44 ----
  #include "fibonacci_heap.h"
  #include "diagnostic-event-id.h"
  #include "shortest-paths.h"
+ #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
*************** along with GCC; see the file COPYING3.
*** 46,51 ****
--- 47,55 ----
  #include "tristate.h"
  #include "ordered-hash-map.h"
  #include "selftest.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "analyzer/program-state.h"
  #include "analyzer/checker-path.h"
*************** along with GCC; see the file COPYING3.
*** 56,63 ****
  #include "analyzer/constraint-manager.h"
  #include "analyzer/diagnostic-manager.h"
  #include "analyzer/checker-path.h"
- #include "analyzer/call-string.h"
- #include "analyzer/program-point.h"
  #include "analyzer/exploded-graph.h"
  
  #if ENABLE_ANALYZER
--- 60,65 ----
*************** event_kind_to_string (enum event_kind ek
*** 91,96 ****
--- 93,102 ----
        return "EK_CALL_EDGE";
      case EK_RETURN_EDGE:
        return "EK_RETURN_EDGE";
+     case EK_START_CONSOLIDATED_CFG_EDGES:
+       return "EK_START_CONSOLIDATED_CFG_EDGES";
+     case EK_END_CONSOLIDATED_CFG_EDGES:
+       return "EK_END_CONSOLIDATED_CFG_EDGES";
      case EK_SETJMP:
        return "EK_SETJMP";
      case EK_REWIND_FROM_LONGJMP:
*************** state_change_event::state_change_event (
*** 214,229 ****
  					const gimple *stmt,
  					int stack_depth,
  					const state_machine &sm,
! 					tree var,
  					state_machine::state_t from,
  					state_machine::state_t to,
! 					tree origin,
  					const program_state &dst_state)
  : checker_event (EK_STATE_CHANGE,
  		 stmt->location, node->m_fun->decl,
  		 stack_depth),
    m_node (node), m_stmt (stmt), m_sm (sm),
!   m_var (var), m_from (from), m_to (to),
    m_origin (origin),
    m_dst_state (dst_state)
  {
--- 220,235 ----
  					const gimple *stmt,
  					int stack_depth,
  					const state_machine &sm,
! 					const svalue *sval,
  					state_machine::state_t from,
  					state_machine::state_t to,
! 					const svalue *origin,
  					const program_state &dst_state)
  : checker_event (EK_STATE_CHANGE,
  		 stmt->location, node->m_fun->decl,
  		 stack_depth),
    m_node (node), m_stmt (stmt), m_sm (sm),
!   m_sval (sval), m_from (from), m_to (to),
    m_origin (origin),
    m_dst_state (dst_state)
  {
*************** state_change_event::get_desc (bool can_c
*** 245,253 ****
  {
    if (m_pending_diagnostic)
      {
        label_text custom_desc
  	= m_pending_diagnostic->describe_state_change
! 	    (evdesc::state_change (can_colorize, m_var, m_origin,
  				   m_from, m_to, m_emission_id, *this));
        if (custom_desc.m_buffer)
  	{
--- 251,262 ----
  {
    if (m_pending_diagnostic)
      {
+       region_model *model = m_dst_state.m_region_model;
+       tree var = model->get_representative_tree (m_sval);
+       tree origin = model->get_representative_tree (m_origin);
        label_text custom_desc
  	= m_pending_diagnostic->describe_state_change
! 	    (evdesc::state_change (can_colorize, var, origin,
  				   m_from, m_to, m_emission_id, *this));
        if (custom_desc.m_buffer)
  	{
*************** state_change_event::get_desc (bool can_c
*** 260,277 ****
  		  (can_colorize,
  		   "%s (state of %qE: %qs -> %qs, origin: %qE)",
  		   custom_desc.m_buffer,
! 		   m_var,
! 		   m_sm.get_state_name (m_from),
! 		   m_sm.get_state_name (m_to),
! 		   m_origin);
  	      else
  		result = make_label_text
  		  (can_colorize,
! 		   "%s (state of %qE: %qs -> %qs, origin: NULL)",
  		   custom_desc.m_buffer,
! 		   m_var,
! 		   m_sm.get_state_name (m_from),
! 		   m_sm.get_state_name (m_to));
  	      custom_desc.maybe_free ();
  	      return result;
  	    }
--- 269,286 ----
  		  (can_colorize,
  		   "%s (state of %qE: %qs -> %qs, origin: %qE)",
  		   custom_desc.m_buffer,
! 		   var,
! 		   m_from->get_name (),
! 		   m_to->get_name (),
! 		   origin);
  	      else
  		result = make_label_text
  		  (can_colorize,
! 		   "%s (state of %qE: %qs -> %qs, NULL origin)",
  		   custom_desc.m_buffer,
! 		   var,
! 		   m_from->get_name (),
! 		   m_to->get_name ());
  	      custom_desc.maybe_free ();
  	      return result;
  	    }
*************** state_change_event::get_desc (bool can_c
*** 281,312 ****
      }
  
    /* Fallback description.  */
!   if (m_var)
      {
        if (m_origin)
! 	return make_label_text
! 	  (can_colorize,
! 	   "state of %qE: %qs -> %qs (origin: %qE)",
! 	   m_var,
! 	   m_sm.get_state_name (m_from),
! 	   m_sm.get_state_name (m_to),
! 	   m_origin);
        else
  	return make_label_text
  	  (can_colorize,
! 	   "state of %qE: %qs -> %qs (origin: NULL)",
! 	   m_var,
! 	   m_sm.get_state_name (m_from),
! 	   m_sm.get_state_name (m_to));
      }
    else
      {
!       gcc_assert (m_origin == NULL_TREE);
        return make_label_text
  	(can_colorize,
  	 "global state: %qs -> %qs",
! 	 m_sm.get_state_name (m_from),
! 	 m_sm.get_state_name (m_to));
      }
  }
  
--- 290,325 ----
      }
  
    /* Fallback description.  */
!   if (m_sval)
      {
+       label_text sval_desc = m_sval->get_desc ();
        if (m_origin)
! 	{
! 	  label_text origin_desc = m_origin->get_desc ();
! 	  return make_label_text
! 	    (can_colorize,
! 	     "state of %qs: %qs -> %qs (origin: %qs)",
! 	     sval_desc.m_buffer,
! 	     m_from->get_name (),
! 	     m_to->get_name (),
! 	     origin_desc.m_buffer);
! 	}
        else
  	return make_label_text
  	  (can_colorize,
! 	   "state of %qs: %qs -> %qs (NULL origin)",
! 	   sval_desc.m_buffer,
! 	   m_from->get_name (),
! 	   m_to->get_name ());
      }
    else
      {
!       gcc_assert (m_origin == NULL);
        return make_label_text
  	(can_colorize,
  	 "global state: %qs -> %qs",
! 	 m_from->get_name (),
! 	 m_to->get_name ());
      }
  }
  
*************** call_event::get_desc (bool can_colorize)
*** 621,632 ****
    if (m_critical_state && m_pending_diagnostic)
      {
        gcc_assert (m_var);
        label_text custom_desc
  	= m_pending_diagnostic->describe_call_with_state
  	    (evdesc::call_with_state (can_colorize,
  				      m_sedge->m_src->m_fun->decl,
  				      m_sedge->m_dest->m_fun->decl,
! 				      m_var,
  				      m_critical_state));
        if (custom_desc.m_buffer)
  	return custom_desc;
--- 634,646 ----
    if (m_critical_state && m_pending_diagnostic)
      {
        gcc_assert (m_var);
+       tree var = fixup_tree_for_diagnostic (m_var);
        label_text custom_desc
  	= m_pending_diagnostic->describe_call_with_state
  	    (evdesc::call_with_state (can_colorize,
  				      m_sedge->m_src->m_fun->decl,
  				      m_sedge->m_dest->m_fun->decl,
! 				      var,
  				      m_critical_state));
        if (custom_desc.m_buffer)
  	return custom_desc;
*************** return_event::is_return_p () const
*** 700,705 ****
--- 714,729 ----
    return true;
  }
  
+ /* class start_consolidated_cfg_edges_event : public checker_event.  */
+ 
+ label_text
+ start_consolidated_cfg_edges_event::get_desc (bool can_colorize) const
+ {
+   return make_label_text (can_colorize,
+ 			  "following %qs branch...",
+ 			  m_edge_sense ? "true" : "false");
+ }
+ 
  /* class setjmp_event : public checker_event.  */
  
  /* Implementation of diagnostic_event::get_desc vfunc for
*************** warning_event::get_desc (bool can_colori
*** 857,874 ****
  {
    if (m_pending_diagnostic)
      {
        label_text ev_desc
  	= m_pending_diagnostic->describe_final_event
! 	    (evdesc::final_event (can_colorize, m_var, m_state));
        if (ev_desc.m_buffer)
  	{
  	  if (m_sm && flag_analyzer_verbose_state_changes)
  	    {
! 	      label_text result
! 		= make_label_text (can_colorize,
! 				   "%s (%qE is in state %qs)",
! 				   ev_desc.m_buffer,
! 				   m_var,m_sm->get_state_name (m_state));
  	      ev_desc.maybe_free ();
  	      return result;
  	    }
--- 881,905 ----
  {
    if (m_pending_diagnostic)
      {
+       tree var = fixup_tree_for_diagnostic (m_var);
        label_text ev_desc
  	= m_pending_diagnostic->describe_final_event
! 	    (evdesc::final_event (can_colorize, var, m_state));
        if (ev_desc.m_buffer)
  	{
  	  if (m_sm && flag_analyzer_verbose_state_changes)
  	    {
! 	      label_text result;
! 	      if (var)
! 		result = make_label_text (can_colorize,
! 					  "%s (%qE is in state %qs)",
! 					  ev_desc.m_buffer,
! 					  var, m_state->get_name ());
! 	      else
! 		result = make_label_text (can_colorize,
! 					  "%s (in global state %qs)",
! 					  ev_desc.m_buffer,
! 					  m_state->get_name ());
  	      ev_desc.maybe_free ();
  	      return result;
  	    }
*************** warning_event::get_desc (bool can_colori
*** 878,887 ****
      }
  
    if (m_sm)
!     return make_label_text (can_colorize,
! 			    "here (%qE is in state %qs)",
! 			    m_var,
! 			    m_sm->get_state_name (m_state));
    else
      return label_text::borrow ("here");
  }
--- 909,924 ----
      }
  
    if (m_sm)
!     {
!       if (m_var)
! 	return make_label_text (can_colorize,
! 				"here (%qE is in state %qs)",
! 				m_var, m_state->get_name ());
!       else
! 	return make_label_text (can_colorize,
! 				"here (in global state %qs)",
! 				m_state->get_name ());
!     }
    else
      return label_text::borrow ("here");
  }
*************** checker_path::add_final_event (const sta
*** 954,966 ****
  			       tree var, state_machine::state_t state)
  {
    checker_event *end_of_path
!     = new warning_event (stmt->location,
  			 enode->get_function ()->decl,
  			 enode->get_stack_depth (),
  			 sm, var, state);
    add_event (end_of_path);
  }
  
  } // namespace ana
  
  #endif /* #if ENABLE_ANALYZER */
--- 991,1024 ----
  			       tree var, state_machine::state_t state)
  {
    checker_event *end_of_path
!     = new warning_event (get_stmt_location (stmt, enode->get_function ()),
  			 enode->get_function ()->decl,
  			 enode->get_stack_depth (),
  			 sm, var, state);
    add_event (end_of_path);
  }
  
+ void
+ checker_path::fixup_locations (pending_diagnostic *pd)
+ {
+   checker_event *e;
+   int i;
+   FOR_EACH_VEC_ELT (m_events, i, e)
+     e->set_location (pd->fixup_location (e->get_location ()));
+ }
+ 
+ /* Return true if there is a (start_cfg_edge_event, end_cfg_edge_event) pair
+    at (IDX, IDX + 1).  */
+ 
+ bool
+ checker_path::cfg_edge_pair_at_p (unsigned idx) const
+ {
+   if (m_events.length () < idx + 1)
+     return false;
+   return (m_events[idx]->m_kind == EK_START_CFG_EDGE
+ 	  && m_events[idx + 1]->m_kind == EK_END_CFG_EDGE);
+ }
+ 
  } // namespace ana
  
  #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/checker-path.h gcc-11.1.0/gcc/analyzer/checker-path.h
*** gcc-10.3.0/gcc/analyzer/checker-path.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/checker-path.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subclasses of diagnostic_path and diagnostic_event for analyzer diagnostics.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Subclasses of diagnostic_path and diagnostic_event for analyzer diagnostics.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** enum event_kind
*** 37,42 ****
--- 37,44 ----
    EK_END_CFG_EDGE,
    EK_CALL_EDGE,
    EK_RETURN_EDGE,
+   EK_START_CONSOLIDATED_CFG_EDGES,
+   EK_END_CONSOLIDATED_CFG_EDGES,
    EK_SETJMP,
    EK_REWIND_FROM_LONGJMP,
    EK_REWIND_TO_SETJMP,
*************** extern const char *event_kind_to_string
*** 63,68 ****
--- 65,72 ----
  	   end_cfg_edge_event (EK_END_CFG_EDGE)
           call_event (EK_CALL_EDGE)
           return_edge (EK_RETURN_EDGE)
+        start_consolidated_cfg_edges_event (EK_START_CONSOLIDATED_CFG_EDGES)
+        end_consolidated_cfg_edges_event (EK_END_CONSOLIDATED_CFG_EDGES)
         setjmp_event (EK_SETJMP)
         rewind_event
           rewind_from_longjmp_event (EK_REWIND_FROM_LONGJMP)
*************** public:
*** 97,104 ****
--- 101,116 ----
    virtual bool is_function_entry_p () const  { return false; }
    virtual bool is_return_p () const  { return false; }
  
+   /* For use with %@.  */
+   const diagnostic_event_id_t *get_id_ptr () const
+   {
+     return &m_emission_id;
+   }
+ 
    void dump (pretty_printer *pp) const;
  
+   void set_location (location_t loc) { m_loc = loc; }
+ 
   public:
    const enum event_kind m_kind;
   protected:
*************** public:
*** 193,218 ****
    state_change_event (const supernode *node, const gimple *stmt,
  		      int stack_depth,
  		      const state_machine &sm,
! 		      tree var,
  		      state_machine::state_t from,
  		      state_machine::state_t to,
! 		      tree origin,
  		      const program_state &dst_state);
  
    label_text get_desc (bool can_colorize) const FINAL OVERRIDE;
  
!   region_id get_lvalue (tree expr, region_model_context *ctxt) const
    {
!     return m_dst_state.m_region_model->get_lvalue (expr, ctxt);
    }
  
    const supernode *m_node;
    const gimple *m_stmt;
    const state_machine &m_sm;
!   tree m_var;
    state_machine::state_t m_from;
    state_machine::state_t m_to;
!   tree m_origin;
    program_state m_dst_state;
  };
  
--- 205,230 ----
    state_change_event (const supernode *node, const gimple *stmt,
  		      int stack_depth,
  		      const state_machine &sm,
! 		      const svalue *sval,
  		      state_machine::state_t from,
  		      state_machine::state_t to,
! 		      const svalue *origin,
  		      const program_state &dst_state);
  
    label_text get_desc (bool can_colorize) const FINAL OVERRIDE;
  
!   function *get_dest_function () const
    {
!     return m_dst_state.get_current_function ();
    }
  
    const supernode *m_node;
    const gimple *m_stmt;
    const state_machine &m_sm;
!   const svalue *m_sval;
    state_machine::state_t m_from;
    state_machine::state_t m_to;
!   const svalue *m_origin;
    program_state m_dst_state;
  };
  
*************** public:
*** 329,334 ****
--- 341,382 ----
    bool is_return_p () const FINAL OVERRIDE;
  };
  
+ /* A concrete event subclass for the start of a consolidated run of CFG
+    edges all either TRUE or FALSE e.g. "following 'false' branch...'.  */
+ 
+ class start_consolidated_cfg_edges_event : public checker_event
+ {
+ public:
+   start_consolidated_cfg_edges_event (location_t loc, tree fndecl, int depth,
+ 				      bool edge_sense)
+   : checker_event (EK_START_CONSOLIDATED_CFG_EDGES, loc, fndecl, depth),
+     m_edge_sense (edge_sense)
+   {
+   }
+ 
+   label_text get_desc (bool can_colorize) const FINAL OVERRIDE;
+ 
+  private:
+   bool m_edge_sense;
+ };
+ 
+ /* A concrete event subclass for the end of a consolidated run of
+    CFG edges e.g. "...to here'.  */
+ 
+ class end_consolidated_cfg_edges_event : public checker_event
+ {
+ public:
+   end_consolidated_cfg_edges_event (location_t loc, tree fndecl, int depth)
+   : checker_event (EK_END_CONSOLIDATED_CFG_EDGES, loc, fndecl, depth)
+   {
+   }
+ 
+   label_text get_desc (bool /*can_colorize*/) const FINAL OVERRIDE
+   {
+     return label_text::borrow ("...to here");
+   }
+ };
+ 
  /* A concrete event subclass for a setjmp or sigsetjmp call.  */
  
  class setjmp_event : public checker_event
*************** public:
*** 482,487 ****
--- 530,548 ----
      delete event;
    }
  
+   void delete_events (unsigned start_idx, unsigned len)
+   {
+     for (unsigned i = start_idx; i < start_idx + len; i++)
+       delete m_events[i];
+     m_events.block_remove (start_idx, len);
+   }
+ 
+   void replace_event (unsigned idx, checker_event *new_event)
+   {
+     delete m_events[idx];
+     m_events[idx] = new_event;
+   }
+ 
    void add_final_event (const state_machine *sm,
  			const exploded_node *enode, const gimple *stmt,
  			tree var, state_machine::state_t state);
*************** public:
*** 498,503 ****
--- 559,566 ----
        e->prepare_for_emission (this, pd, diagnostic_event_id_t (i));
    }
  
+   void fixup_locations (pending_diagnostic *pd);
+ 
    void record_setjmp_event (const exploded_node *enode,
  			    diagnostic_event_id_t setjmp_emission_id)
    {
*************** public:
*** 515,520 ****
--- 578,585 ----
      return false;
    }
  
+   bool cfg_edge_pair_at_p (unsigned idx) const;
+ 
  private:
    DISABLE_COPY_AND_ASSIGN(checker_path);
  
diff -Nrcpad gcc-10.3.0/gcc/analyzer/complexity.cc gcc-11.1.0/gcc/analyzer/complexity.cc
*** gcc-10.3.0/gcc/analyzer/complexity.cc	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/analyzer/complexity.cc	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,95 ----
+ /* Measuring the complexity of svalues/regions.
+    Copyright (C) 2020-2021 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.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/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "diagnostic-core.h"
+ #include "gimple-pretty-print.h"
+ #include "function.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "gimple-iterator.h"
+ #include "diagnostic-core.h"
+ #include "graphviz.h"
+ #include "options.h"
+ #include "cgraph.h"
+ #include "tree-dfa.h"
+ #include "stringpool.h"
+ #include "convert.h"
+ #include "target.h"
+ #include "fold-const.h"
+ #include "tree-pretty-print.h"
+ #include "tristate.h"
+ #include "bitmap.h"
+ #include "selftest.h"
+ #include "function.h"
+ #include "json.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "options.h"
+ #include "cgraph.h"
+ #include "cfg.h"
+ #include "digraph.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
+ #include "analyzer/complexity.h"
+ #include "analyzer/svalue.h"
+ #include "analyzer/region.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* struct complexity.  */
+ 
+ /* Get complexity for a new node that references REG
+    (the complexity of REG, plus one for the new node).  */
+ 
+ complexity::complexity (const region *reg)
+ : m_num_nodes (reg->get_complexity ().m_num_nodes + 1),
+   m_max_depth (reg->get_complexity ().m_max_depth + 1)
+ {
+ }
+ 
+ /* Get complexity for a new node that references SVAL.
+    (the complexity of SVAL, plus one for the new node).  */
+ 
+ complexity::complexity (const svalue *sval)
+ : m_num_nodes (sval->get_complexity ().m_num_nodes + 1),
+   m_max_depth (sval->get_complexity ().m_max_depth + 1)
+ {
+ }
+ 
+ /* Get complexity for a new node that references nodes with complexity
+    C1 and C2.  */
+ 
+ complexity
+ complexity::from_pair (const complexity &c1, const complexity &c2)
+ {
+   return complexity (c1.m_num_nodes + c2.m_num_nodes + 1,
+ 		     MAX (c1.m_max_depth, c2.m_max_depth) + 1);
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/complexity.h gcc-11.1.0/gcc/analyzer/complexity.h
*** gcc-10.3.0/gcc/analyzer/complexity.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/analyzer/complexity.h	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,51 ----
+ /* Measuring the complexity of svalues/regions.
+    Copyright (C) 2020-2021 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.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/>.  */
+ 
+ #ifndef GCC_ANALYZER_COMPLEXITY_H
+ #define GCC_ANALYZER_COMPLEXITY_H
+ 
+ namespace ana {
+ 
+ /* A measurement of the complexity of an svalue or region, so that
+    we can impose bounds on the growth of these tree-like structures
+    and thus avoid infinite chains of analysis.  */
+ 
+ struct complexity
+ {
+   complexity (unsigned num_nodes, unsigned max_depth)
+   : m_num_nodes (num_nodes), m_max_depth (max_depth)
+   {}
+ 
+   complexity (const region *reg);
+   complexity (const svalue *sval);
+   static complexity from_pair (const complexity &c1, const complexity &c);
+ 
+   /* The total number of svalues and regions in the tree of this
+      entity, including the entity itself.  */
+   unsigned m_num_nodes;
+ 
+   /* The maximum depth of the tree of this entity, including the
+      entity itself.  */
+   unsigned m_max_depth;
+ };
+ 
+ } // namespace ana
+ 
+ #endif /* GCC_ANALYZER_COMPLEXITY_H */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/constraint-manager.cc gcc-11.1.0/gcc/analyzer/constraint-manager.cc
*** gcc-10.3.0/gcc/analyzer/constraint-manager.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/constraint-manager.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Tracking equivalence classes and constraints at a point on an execution path.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Tracking equivalence classes and constraints at a point on an execution path.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 31,36 ****
--- 31,37 ----
  #include "diagnostic-core.h"
  #include "graphviz.h"
  #include "function.h"
+ #include "json.h"
  #include "analyzer/analyzer.h"
  #include "ordered-hash-map.h"
  #include "options.h"
*************** along with GCC; see the file COPYING3.
*** 41,46 ****
--- 42,50 ----
  #include "sbitmap.h"
  #include "bitmap.h"
  #include "tristate.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "analyzer/constraint-manager.h"
  #include "analyzer/analyzer-selftests.h"
*************** along with GCC; see the file COPYING3.
*** 49,86 ****
  
  namespace ana {
  
! /* One of the end-points of a range.  */
! 
! struct bound
! {
!   bound () : m_constant (NULL_TREE), m_closed (false) {}
!   bound (tree constant, bool closed)
!   : m_constant (constant), m_closed (closed) {}
! 
!   void ensure_closed (bool is_upper);
! 
!   const char * get_relation_as_str () const;
! 
!   tree m_constant;
!   bool m_closed;
! };
! 
! /* A range of values, used for determining if a value has been
!    constrained to just one possible constant value.  */
! 
! struct range
  {
!   range () : m_lower_bound (), m_upper_bound () {}
!   range (const bound &lower, const bound &upper)
!   : m_lower_bound (lower), m_upper_bound (upper) {}
! 
!   void dump (pretty_printer *pp) const;
! 
!   bool constrained_to_single_element (tree *out);
! 
!   bound m_lower_bound;
!   bound m_upper_bound;
! };
  
  /* struct bound.  */
  
--- 53,69 ----
  
  namespace ana {
  
! static tristate
! compare_constants (tree lhs_const, enum tree_code op, tree rhs_const)
  {
!   tree comparison
!     = fold_binary (op, boolean_type_node, lhs_const, rhs_const);
!   if (comparison == boolean_true_node)
!     return tristate (tristate::TS_TRUE);
!   if (comparison == boolean_false_node)
!     return tristate (tristate::TS_FALSE);
!   return tristate (tristate::TS_UNKNOWN);
! }
  
  /* struct bound.  */
  
*************** bound::get_relation_as_str () const
*** 120,145 ****
  /* Dump this range to PP, which must support %E for tree.  */
  
  void
! range::dump (pretty_printer *pp) const
  {
!   pp_printf (pp, "%qE %s x %s %qE",
! 	     m_lower_bound.m_constant,
! 	     m_lower_bound.get_relation_as_str (),
! 	     m_upper_bound.get_relation_as_str (),
! 	     m_upper_bound.m_constant);
  }
  
  /* Determine if there is only one possible value for this range.
!    If so, return true and write the constant to *OUT.
!    Otherwise, return false.  */
  
! bool
! range::constrained_to_single_element (tree *out)
  {
    if (!INTEGRAL_TYPE_P (TREE_TYPE (m_lower_bound.m_constant)))
!     return false;
    if (!INTEGRAL_TYPE_P (TREE_TYPE (m_upper_bound.m_constant)))
!     return false;
  
    /* Convert any open bounds to closed bounds.  */
    m_lower_bound.ensure_closed (false);
--- 103,162 ----
  /* Dump this range to PP, which must support %E for tree.  */
  
  void
! range::dump_to_pp (pretty_printer *pp) const
  {
!   if (m_lower_bound.m_constant)
!     {
!       if (m_upper_bound.m_constant)
! 	pp_printf (pp, "%qE %s x %s %qE",
! 		   m_lower_bound.m_constant,
! 		   m_lower_bound.get_relation_as_str (),
! 		   m_upper_bound.get_relation_as_str (),
! 		   m_upper_bound.m_constant);
!       else
! 	pp_printf (pp, "%qE %s x",
! 		   m_lower_bound.m_constant,
! 		   m_lower_bound.get_relation_as_str ());
!     }
!   else
!     {
!       if (m_upper_bound.m_constant)
! 	pp_printf (pp, "x %s %qE",
! 		   m_upper_bound.get_relation_as_str (),
! 		   m_upper_bound.m_constant);
!       else
! 	pp_string (pp, "x");
!     }
! }
! 
! /* Dump this range to stderr.  */
! 
! DEBUG_FUNCTION void
! range::dump () const
! {
!   pretty_printer pp;
!   pp_format_decoder (&pp) = default_tree_printer;
!   pp_show_color (&pp) = pp_show_color (global_dc->printer);
!   pp.buffer->stream = stderr;
!   dump_to_pp (&pp);
!   pp_newline (&pp);
!   pp_flush (&pp);
  }
  
  /* Determine if there is only one possible value for this range.
!    If so, return the constant; otherwise, return NULL_TREE.  */
  
! tree
! range::constrained_to_single_element ()
  {
+   if (m_lower_bound.m_constant == NULL_TREE
+       || m_upper_bound.m_constant == NULL_TREE)
+     return NULL_TREE;
+ 
    if (!INTEGRAL_TYPE_P (TREE_TYPE (m_lower_bound.m_constant)))
!     return NULL_TREE;
    if (!INTEGRAL_TYPE_P (TREE_TYPE (m_upper_bound.m_constant)))
!     return NULL_TREE;
  
    /* Convert any open bounds to closed bounds.  */
    m_lower_bound.ensure_closed (false);
*************** range::constrained_to_single_element (tr
*** 150,161 ****
  				 m_lower_bound.m_constant,
  				 m_upper_bound.m_constant);
    if (comparison == boolean_true_node)
      {
!       *out = m_lower_bound.m_constant;
!       return true;
      }
!   else
      return false;
  }
  
  /* class equiv_class.  */
--- 167,258 ----
  				 m_lower_bound.m_constant,
  				 m_upper_bound.m_constant);
    if (comparison == boolean_true_node)
+     return m_lower_bound.m_constant;
+   else
+     return NULL_TREE;
+ }
+ 
+ /* Eval the condition "X OP RHS_CONST" for X within the range.  */
+ 
+ tristate
+ range::eval_condition (enum tree_code op, tree rhs_const) const
+ {
+   range copy (*this);
+   if (tree single_element = copy.constrained_to_single_element ())
+     return compare_constants (single_element, op, rhs_const);
+ 
+   switch (op)
      {
!     case EQ_EXPR:
!       if (below_lower_bound (rhs_const))
! 	return tristate (tristate::TS_FALSE);
!       if (above_upper_bound (rhs_const))
! 	return tristate (tristate::TS_FALSE);
!       break;
! 
!     case LT_EXPR:
!     case LE_EXPR:
!       /* Qn: "X </<= RHS_CONST".  */
!       /* If RHS_CONST > upper bound, then it's true.
! 	 If RHS_CONST < lower bound, then it's false.
! 	 Otherwise unknown.  */
!       if (above_upper_bound (rhs_const))
! 	return tristate (tristate::TS_TRUE);
!       if (below_lower_bound (rhs_const))
! 	return tristate (tristate::TS_FALSE);
!       break;
! 
!     case NE_EXPR:
!       /* Qn: "X != RHS_CONST".  */
!       /* If RHS_CONST < lower bound, then it's true.
! 	 If RHS_CONST > upper bound, then it's false.
! 	 Otherwise unknown.  */
!       if (below_lower_bound (rhs_const))
! 	return tristate (tristate::TS_TRUE);
!       if (above_upper_bound (rhs_const))
! 	return tristate (tristate::TS_TRUE);
!       break;
! 
!     case GE_EXPR:
!     case GT_EXPR:
!       /* Qn: "X >=/> RHS_CONST".  */
!       if (above_upper_bound (rhs_const))
! 	return tristate (tristate::TS_FALSE);
!       if (below_lower_bound (rhs_const))
! 	return tristate (tristate::TS_TRUE);
!       break;
! 
!     default:
!       gcc_unreachable ();
!       break;
      }
!   return tristate (tristate::TS_UNKNOWN);
! }
! 
! /* Return true if RHS_CONST is below the lower bound of this range.  */
! 
! bool
! range::below_lower_bound (tree rhs_const) const
! {
!   if (!m_lower_bound.m_constant)
      return false;
+ 
+   return compare_constants (rhs_const,
+ 			    m_lower_bound.m_closed ? LT_EXPR : LE_EXPR,
+ 			    m_lower_bound.m_constant).is_true ();
+ }
+ 
+ /* Return true if RHS_CONST is above the upper bound of this range.  */
+ 
+ bool
+ range::above_upper_bound (tree rhs_const) const
+ {
+   if (!m_upper_bound.m_constant)
+     return false;
+ 
+   return compare_constants (rhs_const,
+ 			    m_upper_bound.m_closed ? GT_EXPR : GE_EXPR,
+ 			    m_upper_bound.m_constant).is_true ();
  }
  
  /* class equiv_class.  */
*************** range::constrained_to_single_element (tr
*** 163,183 ****
  /* equiv_class's default ctor.  */
  
  equiv_class::equiv_class ()
! : m_constant (NULL_TREE), m_cst_sid (svalue_id::null ()),
!   m_vars ()
  {
  }
  
  /* equiv_class's copy ctor.  */
  
  equiv_class::equiv_class (const equiv_class &other)
! : m_constant (other.m_constant), m_cst_sid (other.m_cst_sid),
    m_vars (other.m_vars.length ())
  {
    int i;
!   svalue_id *sid;
!   FOR_EACH_VEC_ELT (other.m_vars, i, sid)
!     m_vars.quick_push (*sid);
  }
  
  /* Print an all-on-one-line representation of this equiv_class to PP,
--- 260,279 ----
  /* equiv_class's default ctor.  */
  
  equiv_class::equiv_class ()
! : m_constant (NULL_TREE), m_cst_sval (NULL), m_vars ()
  {
  }
  
  /* equiv_class's copy ctor.  */
  
  equiv_class::equiv_class (const equiv_class &other)
! : m_constant (other.m_constant), m_cst_sval (other.m_cst_sval),
    m_vars (other.m_vars.length ())
  {
    int i;
!   const svalue *sval;
!   FOR_EACH_VEC_ELT (other.m_vars, i, sval)
!     m_vars.quick_push (sval);
  }
  
  /* Print an all-on-one-line representation of this equiv_class to PP,
*************** equiv_class::print (pretty_printer *pp)
*** 188,225 ****
  {
    pp_character (pp, '{');
    int i;
!   svalue_id *sid;
!   FOR_EACH_VEC_ELT (m_vars, i, sid)
      {
        if (i > 0)
  	pp_string (pp, " == ");
!       sid->print (pp);
      }
    if (m_constant)
      {
        if (i > 0)
  	pp_string (pp, " == ");
!       pp_printf (pp, "%qE", m_constant);
      }
    pp_character (pp, '}');
  }
  
! /* Generate a hash value for this equiv_class.  */
  
  hashval_t
  equiv_class::hash () const
  {
    inchash::hash hstate;
-   int i;
-   svalue_id *sid;
  
    inchash::add_expr (m_constant, hstate);
!   FOR_EACH_VEC_ELT (m_vars, i, sid)
!     inchash::add (*sid, hstate);
    return hstate.end ();
  }
  
! /* Equality operator for equiv_class.  */
  
  bool
  equiv_class::operator== (const equiv_class &other)
--- 284,353 ----
  {
    pp_character (pp, '{');
    int i;
!   const svalue *sval;
!   FOR_EACH_VEC_ELT (m_vars, i, sval)
      {
        if (i > 0)
  	pp_string (pp, " == ");
!       sval->dump_to_pp (pp, true);
      }
    if (m_constant)
      {
        if (i > 0)
  	pp_string (pp, " == ");
!       pp_printf (pp, "[m_constant]%qE", m_constant);
      }
    pp_character (pp, '}');
  }
  
! /* Return a new json::object of the form
!    {"svals" : [str],
!     "constant" : optional str}.  */
! 
! json::object *
! equiv_class::to_json () const
! {
!   json::object *ec_obj = new json::object ();
! 
!   json::array *sval_arr = new json::array ();
!   int i;
!   const svalue *sval;
!   FOR_EACH_VEC_ELT (m_vars, i, sval)
!     sval_arr->append (sval->to_json ());
!   ec_obj->set ("svals", sval_arr);
! 
!   if (m_constant)
!     {
!       pretty_printer pp;
!       pp_format_decoder (&pp) = default_tree_printer;
!       pp_printf (&pp, "%qE", m_constant);
!       ec_obj->set ("constant", new json::string (pp_formatted_text (&pp)));
!     }
! 
!   return ec_obj;
! }
! 
! /* Generate a hash value for this equiv_class.
!    This relies on the ordering of m_vars, and so this object needs to
!    have been canonicalized for this to be meaningful.  */
  
  hashval_t
  equiv_class::hash () const
  {
    inchash::hash hstate;
  
    inchash::add_expr (m_constant, hstate);
!   int i;
!   const svalue *sval;
!   FOR_EACH_VEC_ELT (m_vars, i, sval)
!     hstate.add_ptr (sval);
    return hstate.end ();
  }
  
! /* Equality operator for equiv_class.
!    This relies on the ordering of m_vars, and so this object
!    and OTHER need to have been canonicalized for this to be
!    meaningful.  */
  
  bool
  equiv_class::operator== (const equiv_class &other)
*************** equiv_class::operator== (const equiv_cla
*** 227,241 ****
    if (m_constant != other.m_constant)
      return false; // TODO: use tree equality here?
  
!   /* FIXME: should we compare m_cst_sid?  */
  
    if (m_vars.length () != other.m_vars.length ())
      return false;
  
    int i;
!   svalue_id *sid;
!   FOR_EACH_VEC_ELT (m_vars, i, sid)
!     if (! (*sid == other.m_vars[i]))
        return false;
  
    return true;
--- 355,369 ----
    if (m_constant != other.m_constant)
      return false; // TODO: use tree equality here?
  
!   /* FIXME: should we compare m_cst_sval?  */
  
    if (m_vars.length () != other.m_vars.length ())
      return false;
  
    int i;
!   const svalue *sval;
!   FOR_EACH_VEC_ELT (m_vars, i, sval)
!     if (sval != other.m_vars[i])
        return false;
  
    return true;
*************** equiv_class::operator== (const equiv_cla
*** 244,261 ****
  /* Add SID to this equiv_class, using CM to check if it's a constant.  */
  
  void
! equiv_class::add (svalue_id sid, const constraint_manager &cm)
  {
!   gcc_assert (!sid.null_p ());
!   if (tree cst = cm.maybe_get_constant (sid))
      {
        gcc_assert (CONSTANT_CLASS_P (cst));
        /* FIXME: should we canonicalize which svalue is the constant
  	 when there are multiple equal constants?  */
        m_constant = cst;
!       m_cst_sid = sid;
      }
!   m_vars.safe_push (sid);
  }
  
  /* Remove SID from this equivalence class.
--- 372,389 ----
  /* Add SID to this equiv_class, using CM to check if it's a constant.  */
  
  void
! equiv_class::add (const svalue *sval)
  {
!   gcc_assert (sval);
!   if (tree cst = sval->maybe_get_constant ())
      {
        gcc_assert (CONSTANT_CLASS_P (cst));
        /* FIXME: should we canonicalize which svalue is the constant
  	 when there are multiple equal constants?  */
        m_constant = cst;
!       m_cst_sval = sval;
      }
!   m_vars.safe_push (sval);
  }
  
  /* Remove SID from this equivalence class.
*************** equiv_class::add (svalue_id sid, const c
*** 263,278 ****
     a possible leak).  */
  
  bool
! equiv_class::del (svalue_id sid)
  {
!   gcc_assert (!sid.null_p ());
!   gcc_assert (sid != m_cst_sid);
  
    int i;
!   svalue_id *iv;
    FOR_EACH_VEC_ELT (m_vars, i, iv)
      {
!       if (*iv == sid)
  	{
  	  m_vars[i] = m_vars[m_vars.length () - 1];
  	  m_vars.pop ();
--- 391,406 ----
     a possible leak).  */
  
  bool
! equiv_class::del (const svalue *sval)
  {
!   gcc_assert (sval);
!   gcc_assert (sval != m_cst_sval);
  
    int i;
!   const svalue *iv;
    FOR_EACH_VEC_ELT (m_vars, i, iv)
      {
!       if (iv == sval)
  	{
  	  m_vars[i] = m_vars[m_vars.length () - 1];
  	  m_vars.pop ();
*************** equiv_class::del (svalue_id sid)
*** 280,286 ****
  	}
      }
  
!   /* SID must be in the class.  */
    gcc_unreachable ();
    return false;
  }
--- 408,414 ----
  	}
      }
  
!   /* SVAL must be in the class.  */
    gcc_unreachable ();
    return false;
  }
*************** equiv_class::del (svalue_id sid)
*** 288,333 ****
  /* Get a representative member of this class, for handling cases
     where the IDs can change mid-traversal.  */
  
! svalue_id
  equiv_class::get_representative () const
  {
!   if (!m_cst_sid.null_p ())
!     return m_cst_sid;
!   else
!     {
!       gcc_assert (m_vars.length () > 0);
!       return m_vars[0];
!     }
! }
! 
! /* Remap all svalue_ids within this equiv_class using MAP.  */
! 
! void
! equiv_class::remap_svalue_ids (const svalue_id_map &map)
! {
!   int i;
!   svalue_id *iv;
!   FOR_EACH_VEC_ELT (m_vars, i, iv)
!     map.update (iv);
!   map.update (&m_cst_sid);
! }
! 
! /* Comparator for use by equiv_class::canonicalize.  */
! 
! static int
! svalue_id_cmp_by_id (const void *p1, const void *p2)
! {
!   const svalue_id *sid1 = (const svalue_id *)p1;
!   const svalue_id *sid2 = (const svalue_id *)p2;
!   return sid1->as_int () - sid2->as_int ();
  }
  
! /* Sort the svalues_ids within this equiv_class.  */
  
  void
  equiv_class::canonicalize ()
  {
!   m_vars.qsort (svalue_id_cmp_by_id);
  }
  
  /* Get a debug string for C_OP.  */
--- 416,434 ----
  /* Get a representative member of this class, for handling cases
     where the IDs can change mid-traversal.  */
  
! const svalue *
  equiv_class::get_representative () const
  {
!   gcc_assert (m_vars.length () > 0);
!   return m_vars[0];
  }
  
! /* Sort the svalues within this equiv_class.  */
  
  void
  equiv_class::canonicalize ()
  {
!   m_vars.qsort (svalue::cmp_ptr_ptr);
  }
  
  /* Get a debug string for C_OP.  */
*************** constraint::print (pretty_printer *pp, c
*** 412,417 ****
--- 513,535 ----
    m_rhs.get_obj (cm).print (pp);
  }
  
+ /* Return a new json::object of the form
+    {"lhs" : int, the EC index
+     "op"  : str,
+     "rhs" : int, the EC index}.  */
+ 
+ json::object *
+ constraint::to_json () const
+ {
+   json::object *con_obj = new json::object ();
+ 
+   con_obj->set ("lhs", new json::integer_number (m_lhs.as_int ()));
+   con_obj->set ("op", new json::string (constraint_op_code (m_op)));
+   con_obj->set ("rhs", new json::integer_number (m_rhs.as_int ()));
+ 
+   return con_obj;
+ }
+ 
  /* Generate a hash value for this constraint.  */
  
  hashval_t
*************** constraint::operator== (const constraint
*** 438,443 ****
--- 556,587 ----
    return true;
  }
  
+ /* Return true if this constraint is implied by OTHER.  */
+ 
+ bool
+ constraint::implied_by (const constraint &other,
+ 			 const constraint_manager &cm) const
+ {
+   if (m_lhs == other.m_lhs)
+     if (tree rhs_const = m_rhs.get_obj (cm).get_any_constant ())
+       if (tree other_rhs_const = other.m_rhs.get_obj (cm).get_any_constant ())
+ 	if (m_lhs.get_obj (cm).get_any_constant () == NULL_TREE)
+ 	  if (m_op == other.m_op)
+ 	    switch (m_op)
+ 	      {
+ 	      default:
+ 		break;
+ 	      case CONSTRAINT_LE:
+ 	      case CONSTRAINT_LT:
+ 		if (compare_constants (rhs_const,
+ 				       GE_EXPR,
+ 				       other_rhs_const).is_true ())
+ 		  return true;
+ 		break;
+ 	      }
+   return false;
+ }
+ 
  /* class equiv_class_id.  */
  
  /* Get the underlying equiv_class for this ID from CM.  */
*************** equiv_class_id::print (pretty_printer *p
*** 473,479 ****
  
  constraint_manager::constraint_manager (const constraint_manager &other)
  : m_equiv_classes (other.m_equiv_classes.length ()),
!   m_constraints (other.m_constraints.length ())
  {
    int i;
    equiv_class *ec;
--- 617,624 ----
  
  constraint_manager::constraint_manager (const constraint_manager &other)
  : m_equiv_classes (other.m_equiv_classes.length ()),
!   m_constraints (other.m_constraints.length ()),
!   m_mgr (other.m_mgr)
  {
    int i;
    equiv_class *ec;
*************** constraint_manager::print (pretty_printe
*** 575,608 ****
    pp_printf (pp, "}");
  }
  
! /* Dump a multiline representation of this constraint_manager to PP
     (which must support %E for trees).  */
  
  void
! constraint_manager::dump_to_pp (pretty_printer *pp) const
  {
!   // TODO
!   pp_string (pp, "  equiv classes:");
!   pp_newline (pp);
    int i;
    equiv_class *ec;
    FOR_EACH_VEC_ELT (m_equiv_classes, i, ec)
      {
!       pp_string (pp, "    ");
        equiv_class_id (i).print (pp);
        pp_string (pp, ": ");
        ec->print (pp);
!       pp_newline (pp);
      }
!   pp_string (pp, "  constraints:");
!   pp_newline (pp);
    constraint *c;
    FOR_EACH_VEC_ELT (m_constraints, i, c)
      {
!       pp_printf (pp, "    %i: ", i);
        c->print (pp, *this);
!       pp_newline (pp);
      }
  }
  
  /* Dump a multiline representation of this constraint_manager to FP.  */
--- 720,773 ----
    pp_printf (pp, "}");
  }
  
! /* Dump a representation of this constraint_manager to PP
     (which must support %E for trees).  */
  
  void
! constraint_manager::dump_to_pp (pretty_printer *pp, bool multiline) const
  {
!   if (multiline)
!     pp_string (pp, "  ");
!   pp_string (pp, "equiv classes:");
!   if (multiline)
!     pp_newline (pp);
!   else
!     pp_string (pp, " {");
    int i;
    equiv_class *ec;
    FOR_EACH_VEC_ELT (m_equiv_classes, i, ec)
      {
!       if (multiline)
! 	pp_string (pp, "    ");
!       else if (i > 0)
! 	pp_string (pp, ", ");
        equiv_class_id (i).print (pp);
        pp_string (pp, ": ");
        ec->print (pp);
!       if (multiline)
! 	pp_newline (pp);
      }
!   if (multiline)
!     pp_string (pp, "  ");
!   else
!     pp_string (pp, "}");
!   pp_string (pp, "constraints:");
!   if (multiline)
!     pp_newline (pp);
!   else
!     pp_string (pp, "{");
    constraint *c;
    FOR_EACH_VEC_ELT (m_constraints, i, c)
      {
!       if (multiline)
! 	pp_string (pp, "    ");
!       pp_printf (pp, "%i: ", i);
        c->print (pp, *this);
!       if (multiline)
! 	pp_newline (pp);
      }
+   if (!multiline)
+     pp_string (pp, "}");
  }
  
  /* Dump a multiline representation of this constraint_manager to FP.  */
*************** constraint_manager::dump (FILE *fp) cons
*** 614,620 ****
    pp_format_decoder (&pp) = default_tree_printer;
    pp_show_color (&pp) = pp_show_color (global_dc->printer);
    pp.buffer->stream = fp;
!   dump_to_pp (&pp);
    pp_flush (&pp);
  }
  
--- 779,785 ----
    pp_format_decoder (&pp) = default_tree_printer;
    pp_show_color (&pp) = pp_show_color (global_dc->printer);
    pp.buffer->stream = fp;
!   dump_to_pp (&pp, true);
    pp_flush (&pp);
  }
  
*************** debug (const constraint_manager &cm)
*** 634,651 ****
    cm.dump ();
  }
  
  /* Attempt to add the constraint LHS OP RHS to this constraint_manager.
     Return true if the constraint could be added (or is already true).
     Return false if the constraint contradicts existing knowledge.  */
  
  bool
! constraint_manager::add_constraint (svalue_id lhs,
! 				    enum tree_code op,
! 				    svalue_id rhs)
  {
    equiv_class_id lhs_ec_id = get_or_add_equiv_class (lhs);
    equiv_class_id rhs_ec_id = get_or_add_equiv_class (rhs);
!   return add_constraint (lhs_ec_id, op,rhs_ec_id);
  }
  
  /* Attempt to add the constraint LHS_EC_ID OP RHS_EC_ID to this
--- 799,886 ----
    cm.dump ();
  }
  
+ /* Return a new json::object of the form
+    {"ecs" : array of objects, one per equiv_class
+     "constraints" : array of objects, one per constraint}.  */
+ 
+ json::object *
+ constraint_manager::to_json () const
+ {
+   json::object *cm_obj = new json::object ();
+ 
+   /* Equivalence classes.  */
+   {
+     json::array *ec_arr = new json::array ();
+     int i;
+     equiv_class *ec;
+     FOR_EACH_VEC_ELT (m_equiv_classes, i, ec)
+       ec_arr->append (ec->to_json ());
+     cm_obj->set ("ecs", ec_arr);
+   }
+ 
+   /* Constraints.  */
+   {
+     json::array *con_arr = new json::array ();
+     int i;
+     constraint *c;
+     FOR_EACH_VEC_ELT (m_constraints, i, c)
+       con_arr->append (c->to_json ());
+     cm_obj->set ("constraints", con_arr);
+   }
+ 
+   return cm_obj;
+ }
+ 
  /* Attempt to add the constraint LHS OP RHS to this constraint_manager.
     Return true if the constraint could be added (or is already true).
     Return false if the constraint contradicts existing knowledge.  */
  
  bool
! constraint_manager::add_constraint (const svalue *lhs,
! 				     enum tree_code op,
! 				     const svalue *rhs)
  {
+   lhs = lhs->unwrap_any_unmergeable ();
+   rhs = rhs->unwrap_any_unmergeable ();
+ 
+   /* Nothing can be known about unknown values.  */
+   if (lhs->get_kind () == SK_UNKNOWN
+       || rhs->get_kind () == SK_UNKNOWN)
+     /* Not a contradiction.  */
+     return true;
+ 
+   /* Check the conditions on svalues.  */
+   {
+     tristate t_cond = eval_condition (lhs, op, rhs);
+ 
+     /* If we already have the condition, do nothing.  */
+     if (t_cond.is_true ())
+       return true;
+ 
+     /* Reject a constraint that would contradict existing knowledge, as
+        unsatisfiable.  */
+     if (t_cond.is_false ())
+       return false;
+   }
+ 
    equiv_class_id lhs_ec_id = get_or_add_equiv_class (lhs);
    equiv_class_id rhs_ec_id = get_or_add_equiv_class (rhs);
! 
!   /* Check the stronger conditions on ECs.  */
!   {
!     tristate t = eval_condition (lhs_ec_id, op, rhs_ec_id);
! 
!     /* Discard constraints that are already known.  */
!     if (t.is_true ())
!       return true;
! 
!     /* Reject unsatisfiable constraints.  */
!     if (t.is_false ())
!       return false;
!   }
! 
!   add_unknown_constraint (lhs_ec_id, op, rhs_ec_id);
!   return true;
  }
  
  /* Attempt to add the constraint LHS_EC_ID OP RHS_EC_ID to this
*************** constraint_manager::add_constraint (sval
*** 655,662 ****
  
  bool
  constraint_manager::add_constraint (equiv_class_id lhs_ec_id,
! 				    enum tree_code op,
! 				    equiv_class_id rhs_ec_id)
  {
    tristate t = eval_condition (lhs_ec_id, op, rhs_ec_id);
  
--- 890,897 ----
  
  bool
  constraint_manager::add_constraint (equiv_class_id lhs_ec_id,
! 				     enum tree_code op,
! 				     equiv_class_id rhs_ec_id)
  {
    tristate t = eval_condition (lhs_ec_id, op, rhs_ec_id);
  
*************** constraint_manager::add_constraint (equi
*** 668,673 ****
--- 903,920 ----
    if (t.is_false ())
      return false;
  
+   add_unknown_constraint (lhs_ec_id, op, rhs_ec_id);
+   return true;
+ }
+ 
+ /* Add the constraint LHS_EC_ID OP RHS_EC_ID to this constraint_manager,
+    where the constraint has already been checked for being "unknown".  */
+ 
+ void
+ constraint_manager::add_unknown_constraint (equiv_class_id lhs_ec_id,
+ 					     enum tree_code op,
+ 					     equiv_class_id rhs_ec_id)
+ {
    gcc_assert (lhs_ec_id != rhs_ec_id);
  
    /* For now, simply accumulate constraints, without attempting any further
*************** constraint_manager::add_constraint (equi
*** 681,694 ****
  	const equiv_class &rhs_ec_obj = rhs_ec_id.get_obj (*this);
  
  	int i;
! 	svalue_id *sid;
! 	FOR_EACH_VEC_ELT (rhs_ec_obj.m_vars, i, sid)
! 	  lhs_ec_obj.add (*sid, *this);
  
  	if (rhs_ec_obj.m_constant)
  	  {
  	    lhs_ec_obj.m_constant = rhs_ec_obj.m_constant;
! 	    lhs_ec_obj.m_cst_sid = rhs_ec_obj.m_cst_sid;
  	  }
  
  	/* Drop rhs equivalence class, overwriting it with the
--- 928,941 ----
  	const equiv_class &rhs_ec_obj = rhs_ec_id.get_obj (*this);
  
  	int i;
! 	const svalue *sval;
! 	FOR_EACH_VEC_ELT (rhs_ec_obj.m_vars, i, sval)
! 	  lhs_ec_obj.add (sval);
  
  	if (rhs_ec_obj.m_constant)
  	  {
  	    lhs_ec_obj.m_constant = rhs_ec_obj.m_constant;
! 	    lhs_ec_obj.m_cst_sval = rhs_ec_obj.m_cst_sval;
  	  }
  
  	/* Drop rhs equivalence class, overwriting it with the
*************** constraint_manager::add_constraint (equi
*** 718,723 ****
--- 965,976 ----
  	    if (c->m_rhs == final_ec_id)
  	      c->m_rhs = rhs_ec_id;
  	  }
+ 
+ 	/* We may now have self-comparisons due to the merger; these
+ 	   constraints should be removed.  */
+ 	unsigned read_index, write_index;
+ 	VEC_ORDERED_REMOVE_IF (m_constraints, read_index, write_index, c,
+ 			       (c->m_lhs == c->m_rhs));
        }
        break;
      case GE_EXPR:
*************** constraint_manager::add_constraint (equi
*** 740,746 ****
        break;
      }
    validate ();
-   return true;
  }
  
  /* Subroutine of constraint_manager::add_constraint, for handling all
--- 993,998 ----
*************** constraint_manager::add_constraint_inter
*** 751,758 ****
  					     enum constraint_op c_op,
  					     equiv_class_id rhs_id)
  {
    /* Add the constraint.  */
!   m_constraints.safe_push (constraint (lhs_id, c_op, rhs_id));
  
    if (!flag_analyzer_transitivity)
      return;
--- 1003,1022 ----
  					     enum constraint_op c_op,
  					     equiv_class_id rhs_id)
  {
+   if (m_constraints.length () >= (unsigned)param_analyzer_max_constraints)
+     return;
+ 
+   constraint new_c (lhs_id, c_op, rhs_id);
+ 
+   /* Remove existing constraints that would be implied by the
+      new constraint.  */
+   unsigned read_index, write_index;
+   constraint *c;
+   VEC_ORDERED_REMOVE_IF (m_constraints, read_index, write_index, c,
+ 			 (c->implied_by (new_c, *this)));
+ 
    /* Add the constraint.  */
!   m_constraints.safe_push (new_c);
  
    if (!flag_analyzer_transitivity)
      return;
*************** constraint_manager::add_constraint_inter
*** 762,769 ****
        /* The following can potentially add EQ_EXPR facts, which could lead
  	 to ECs being merged, which would change the meaning of the EC IDs.
  	 Hence we need to do this via representatives.  */
!       svalue_id lhs = lhs_id.get_obj (*this).get_representative ();
!       svalue_id rhs = rhs_id.get_obj (*this).get_representative ();
  
        /* We have LHS </<= RHS */
  
--- 1026,1033 ----
        /* The following can potentially add EQ_EXPR facts, which could lead
  	 to ECs being merged, which would change the meaning of the EC IDs.
  	 Hence we need to do this via representatives.  */
!       const svalue *lhs = lhs_id.get_obj (*this).get_representative ();
!       const svalue *rhs = rhs_id.get_obj (*this).get_representative ();
  
        /* We have LHS </<= RHS */
  
*************** constraint_manager::add_constraint_inter
*** 833,845 ****
  		      range r (bound (lhs_const, c_op == CONSTRAINT_LE),
  			       bound (other_rhs_const,
  				      other->m_op == CONSTRAINT_LE));
! 		      tree constant;
! 		      if (r.constrained_to_single_element (&constant))
  			{
! 			  svalue_id cst_sid = get_sid_for_constant (constant);
  			  add_constraint
  			    (rhs_id, EQ_EXPR,
! 			     get_or_add_equiv_class (cst_sid));
  			  return;
  			}
  		    }
--- 1097,1109 ----
  		      range r (bound (lhs_const, c_op == CONSTRAINT_LE),
  			       bound (other_rhs_const,
  				      other->m_op == CONSTRAINT_LE));
! 		      if (tree constant = r.constrained_to_single_element ())
  			{
! 			  const svalue *cst_sval
! 			    = m_mgr->get_or_create_constant_svalue (constant);
  			  add_constraint
  			    (rhs_id, EQ_EXPR,
! 			     get_or_add_equiv_class (cst_sval));
  			  return;
  			}
  		    }
*************** constraint_manager::add_constraint_inter
*** 865,877 ****
  				      other->m_op == CONSTRAINT_LE),
  			       bound (rhs_const,
  				      c_op == CONSTRAINT_LE));
! 		      tree constant;
! 		      if (r.constrained_to_single_element (&constant))
  			{
! 			  svalue_id cst_sid = get_sid_for_constant (constant);
  			  add_constraint
  			    (lhs_id, EQ_EXPR,
! 			     get_or_add_equiv_class (cst_sid));
  			  return;
  			}
  		    }
--- 1129,1141 ----
  				      other->m_op == CONSTRAINT_LE),
  			       bound (rhs_const,
  				      c_op == CONSTRAINT_LE));
! 		      if (tree constant = r.constrained_to_single_element ())
  			{
! 			  const svalue *cst_sval
! 			    = m_mgr->get_or_create_constant_svalue (constant);
  			  add_constraint
  			    (lhs_id, EQ_EXPR,
! 			     get_or_add_equiv_class (cst_sval));
  			  return;
  			}
  		    }
*************** constraint_manager::add_constraint_inter
*** 887,897 ****
      }
  }
  
! /* Look for SID within the equivalence classes of this constraint_manager;
!    if found, write the id to *OUT and return true, otherwise return false.  */
  
  bool
! constraint_manager::get_equiv_class_by_sid (svalue_id sid, equiv_class_id *out) const
  {
    /* TODO: should we have a map, rather than these searches?  */
    int i;
--- 1151,1163 ----
      }
  }
  
! /* Look for SVAL within the equivalence classes of this constraint_manager;
!    if found, return true, writing the id to *OUT if OUT is non-NULL,
!    otherwise return false.  */
  
  bool
! constraint_manager::get_equiv_class_by_svalue (const svalue *sval,
! 					       equiv_class_id *out) const
  {
    /* TODO: should we have a map, rather than these searches?  */
    int i;
*************** constraint_manager::get_equiv_class_by_s
*** 899,929 ****
    FOR_EACH_VEC_ELT (m_equiv_classes, i, ec)
      {
        int j;
!       svalue_id *iv;
        FOR_EACH_VEC_ELT (ec->m_vars, j, iv)
! 	if (*iv == sid)
  	  {
! 	    *out = equiv_class_id (i);
  	    return true;
  	  }
      }
    return false;
  }
  
! /* Ensure that SID has an equivalence class within this constraint_manager;
     return the ID of the class.  */
  
  equiv_class_id
! constraint_manager::get_or_add_equiv_class (svalue_id sid)
  {
    equiv_class_id result (-1);
  
!   /* Try svalue_id match.  */
!   if (get_equiv_class_by_sid (sid, &result))
      return result;
  
    /* Try equality of constants.  */
!   if (tree cst = maybe_get_constant (sid))
      {
        int i;
        equiv_class *ec;
--- 1165,1205 ----
    FOR_EACH_VEC_ELT (m_equiv_classes, i, ec)
      {
        int j;
!       const svalue *iv;
        FOR_EACH_VEC_ELT (ec->m_vars, j, iv)
! 	if (iv == sval)
  	  {
! 	    if (out)
! 	      *out = equiv_class_id (i);
  	    return true;
  	  }
      }
    return false;
  }
  
! /* Ensure that SVAL has an equivalence class within this constraint_manager;
     return the ID of the class.  */
  
  equiv_class_id
! constraint_manager::get_or_add_equiv_class (const svalue *sval)
  {
    equiv_class_id result (-1);
  
!   gcc_assert (sval->get_kind () != SK_UNKNOWN);
! 
!   /* Convert all NULL pointers to (void *) to avoid state explosions
!      involving all of the various (foo *)NULL vs (bar *)NULL.  */
!   if (POINTER_TYPE_P (sval->get_type ()))
!     if (tree cst = sval->maybe_get_constant ())
!       if (zerop (cst))
! 	sval = m_mgr->get_or_create_constant_svalue (null_pointer_node);
! 
!   /* Try svalue match.  */
!   if (get_equiv_class_by_svalue (sval, &result))
      return result;
  
    /* Try equality of constants.  */
!   if (tree cst = sval->maybe_get_constant ())
      {
        int i;
        equiv_class *ec;
*************** constraint_manager::get_or_add_equiv_cla
*** 936,942 ****
  				   cst, ec->m_constant);
  	    if (eq == boolean_true_node)
  	      {
! 		ec->add (sid, *this);
  		return equiv_class_id (i);
  	      }
  	  }
--- 1212,1218 ----
  				   cst, ec->m_constant);
  	    if (eq == boolean_true_node)
  	      {
! 		ec->add (sval);
  		return equiv_class_id (i);
  	      }
  	  }
*************** constraint_manager::get_or_add_equiv_cla
*** 945,988 ****
  
    /* Not found.  */
    equiv_class *new_ec = new equiv_class ();
!   new_ec->add (sid, *this);
    m_equiv_classes.safe_push (new_ec);
  
    equiv_class_id new_id (m_equiv_classes.length () - 1);
  
-   if (maybe_get_constant (sid))
-     {
-       /* If we have a new EC for a constant, add constraints comparing this
- 	 to other constants we may have (so that we accumulate the transitive
- 	 closure of all constraints on constants as the constants are
- 	 added).  */
-       for (equiv_class_id other_id (0); other_id.m_idx < new_id.m_idx;
- 	   other_id.m_idx++)
- 	{
- 	  const equiv_class &other_ec = other_id.get_obj (*this);
- 	  if (other_ec.m_constant
- 	      && types_compatible_p (TREE_TYPE (new_ec->m_constant),
- 				     TREE_TYPE (other_ec.m_constant)))
- 	    {
- 	      /* If we have two ECs, both with constants, the constants must be
- 		 non-equal (or they would be in the same EC).
- 		 Determine the direction of the inequality, and record that
- 		 fact.  */
- 	      tree lt
- 		= fold_binary (LT_EXPR, boolean_type_node,
- 			       new_ec->m_constant, other_ec.m_constant);
- 	      if (lt == boolean_true_node)
- 		add_constraint_internal (new_id, CONSTRAINT_LT, other_id);
- 	      else if (lt == boolean_false_node)
- 		add_constraint_internal (other_id, CONSTRAINT_LT, new_id);
- 	      /* Refresh new_id, in case ECs were merged.  SID should always
- 		 be present by now, so this should never lead to a
- 		 recursion.  */
- 	      new_id = get_or_add_equiv_class (sid);
- 	    }
- 	}
-     }
- 
    return new_id;
  }
  
--- 1221,1231 ----
  
    /* Not found.  */
    equiv_class *new_ec = new equiv_class ();
!   new_ec->add (sval);
    m_equiv_classes.safe_push (new_ec);
  
    equiv_class_id new_id (m_equiv_classes.length () - 1);
  
    return new_id;
  }
  
*************** constraint_manager::get_or_add_equiv_cla
*** 991,997 ****
  tristate
  constraint_manager::eval_condition (equiv_class_id lhs_ec,
  				    enum tree_code op,
! 				    equiv_class_id rhs_ec)
  {
    if (lhs_ec == rhs_ec)
      {
--- 1234,1240 ----
  tristate
  constraint_manager::eval_condition (equiv_class_id lhs_ec,
  				    enum tree_code op,
! 				    equiv_class_id rhs_ec) const
  {
    if (lhs_ec == rhs_ec)
      {
*************** constraint_manager::eval_condition (equi
*** 1015,1026 ****
    tree rhs_const = rhs_ec.get_obj (*this).get_any_constant ();
    if (lhs_const && rhs_const)
      {
!       tree comparison
! 	= fold_binary (op, boolean_type_node, lhs_const, rhs_const);
!       if (comparison == boolean_true_node)
! 	return tristate (tristate::TS_TRUE);
!       if (comparison == boolean_false_node)
! 	return tristate (tristate::TS_FALSE);
      }
  
    enum tree_code swapped_op = swap_tree_comparison (op);
--- 1258,1267 ----
    tree rhs_const = rhs_ec.get_obj (*this).get_any_constant ();
    if (lhs_const && rhs_const)
      {
!       tristate result_for_constants
! 	= compare_constants (lhs_const, op, rhs_const);
!       if (result_for_constants.is_known ())
! 	return result_for_constants;
      }
  
    enum tree_code swapped_op = swap_tree_comparison (op);
*************** constraint_manager::eval_condition (equi
*** 1051,1093 ****
    return tristate (tristate::TS_UNKNOWN);
  }
  
! /* Evaluate the condition LHS OP RHS, creating equiv_class instances for
!    LHS and RHS if they aren't already in equiv_classes.  */
  
  tristate
! constraint_manager::eval_condition (svalue_id lhs,
  				    enum tree_code op,
! 				    svalue_id rhs)
  {
!   return eval_condition (get_or_add_equiv_class (lhs),
! 			 op,
! 			 get_or_add_equiv_class (rhs));
  }
  
! /* Delete any information about svalue_id instances identified by P.
     Such instances are removed from equivalence classes, and any
     redundant ECs and constraints are also removed.
     Accumulate stats into STATS.  */
  
  void
! constraint_manager::purge (const purge_criteria &p, purge_stats *stats)
  {
!   /* Delete any svalue_ids identified by P within the various equivalence
       classes.  */
    for (unsigned ec_idx = 0; ec_idx < m_equiv_classes.length (); )
      {
        equiv_class *ec = m_equiv_classes[ec_idx];
  
        int i;
!       svalue_id *pv;
        bool delete_ec = false;
!       FOR_EACH_VEC_ELT (ec->m_vars, i, pv)
  	{
! 	  if (*pv == ec->m_cst_sid)
  	    continue;
! 	  if (p.should_purge_p (*pv))
  	    {
! 	      if (ec->del (*pv))
  		if (!ec->m_constant)
  		  delete_ec = true;
  	    }
--- 1292,1532 ----
    return tristate (tristate::TS_UNKNOWN);
  }
  
! range
! constraint_manager::get_ec_bounds (equiv_class_id ec_id) const
! {
!   range result;
! 
!   int i;
!   constraint *c;
!   FOR_EACH_VEC_ELT (m_constraints, i, c)
!     {
!       if (c->m_lhs == ec_id)
! 	{
! 	  if (tree other_cst = c->m_rhs.get_obj (*this).get_any_constant ())
! 	    switch (c->m_op)
! 	      {
! 	      default:
! 		gcc_unreachable ();
! 	      case CONSTRAINT_NE:
! 		continue;
! 
! 	      case CONSTRAINT_LT:
! 		/* We have "EC_ID < OTHER_CST".  */
! 		result.m_upper_bound = bound (other_cst, false);
! 		break;
! 
! 	      case CONSTRAINT_LE:
! 		/* We have "EC_ID <= OTHER_CST".  */
! 		result.m_upper_bound = bound (other_cst, true);
! 		break;
! 	      }
! 	}
!       if (c->m_rhs == ec_id)
! 	{
! 	  if (tree other_cst = c->m_lhs.get_obj (*this).get_any_constant ())
! 	    switch (c->m_op)
! 	      {
! 	      default:
! 		gcc_unreachable ();
! 	      case CONSTRAINT_NE:
! 		continue;
! 
! 	      case CONSTRAINT_LT:
! 		/* We have "OTHER_CST < EC_ID"
! 		   i.e. "EC_ID > OTHER_CST".  */
! 		result.m_lower_bound = bound (other_cst, false);
! 		break;
! 
! 	      case CONSTRAINT_LE:
! 		/* We have "OTHER_CST <= EC_ID"
! 		   i.e. "EC_ID >= OTHER_CST".  */
! 		result.m_lower_bound = bound (other_cst, true);
! 		break;
! 	      }
! 	}
!     }
! 
!   return result;
! }
! 
! /* Evaluate the condition LHS_EC OP RHS_CONST, avoiding the creation
!    of equiv_class instances.  */
  
  tristate
! constraint_manager::eval_condition (equiv_class_id lhs_ec,
  				    enum tree_code op,
! 				    tree rhs_const) const
  {
!   gcc_assert (!lhs_ec.null_p ());
!   gcc_assert (CONSTANT_CLASS_P (rhs_const));
! 
!   if (tree lhs_const = lhs_ec.get_obj (*this).get_any_constant ())
!     return compare_constants (lhs_const, op, rhs_const);
! 
!   /* Check for known inequalities of the form
!        (LHS_EC != OTHER_CST) or (OTHER_CST != LHS_EC).
!      If RHS_CONST == OTHER_CST, then we also know that LHS_EC != OTHER_CST.
!      For example, we might have the constraint
!        ptr != (void *)0
!      so we want the condition
!        ptr == (foo *)0
!      to be false.  */
!   int i;
!   constraint *c;
!   FOR_EACH_VEC_ELT (m_constraints, i, c)
!     {
!       if (c->m_op == CONSTRAINT_NE)
! 	{
! 	  if (c->m_lhs == lhs_ec)
! 	    {
! 	      if (tree other_cst = c->m_rhs.get_obj (*this).get_any_constant ())
! 		if (compare_constants
! 		      (rhs_const, EQ_EXPR, other_cst).is_true ())
! 		  {
! 		    switch (op)
! 		      {
! 		      case EQ_EXPR:
! 			return tristate (tristate::TS_FALSE);
! 		      case NE_EXPR:
! 			return tristate (tristate::TS_TRUE);
! 		      default:
! 			break;
! 		      }
! 		  }
! 	    }
! 	  if (c->m_rhs == lhs_ec)
! 	    {
! 	      if (tree other_cst = c->m_lhs.get_obj (*this).get_any_constant ())
! 		if (compare_constants
! 		      (rhs_const, EQ_EXPR, other_cst).is_true ())
! 		  {
! 		    switch (op)
! 		      {
! 		      case EQ_EXPR:
! 			return tristate (tristate::TS_FALSE);
! 		      case NE_EXPR:
! 			return tristate (tristate::TS_TRUE);
! 		      default:
! 			break;
! 		      }
! 		  }
! 	    }
! 	}
!     }
!   /* Look at existing bounds on LHS_EC.  */
!   range lhs_bounds = get_ec_bounds (lhs_ec);
!   return lhs_bounds.eval_condition (op, rhs_const);
  }
  
! /* Evaluate the condition LHS OP RHS, without modifying this
!    constraint_manager (avoiding the creation of equiv_class instances).  */
! 
! tristate
! constraint_manager::eval_condition (const svalue *lhs,
! 				    enum tree_code op,
! 				    const svalue *rhs) const
! {
!   lhs = lhs->unwrap_any_unmergeable ();
!   rhs = rhs->unwrap_any_unmergeable ();
! 
!   /* Nothing can be known about unknown or poisoned values.  */
!   if (lhs->get_kind () == SK_UNKNOWN
!       || lhs->get_kind () == SK_POISONED
!       || rhs->get_kind () == SK_UNKNOWN
!       || rhs->get_kind () == SK_POISONED)
!     return tristate (tristate::TS_UNKNOWN);
! 
!   if (lhs == rhs
!       && !(FLOAT_TYPE_P (lhs->get_type ())
! 	   || FLOAT_TYPE_P (rhs->get_type ())))
!     {
!       switch (op)
! 	{
! 	case EQ_EXPR:
! 	case GE_EXPR:
! 	case LE_EXPR:
! 	  return tristate (tristate::TS_TRUE);
! 
! 	case NE_EXPR:
! 	case GT_EXPR:
! 	case LT_EXPR:
! 	  return tristate (tristate::TS_FALSE);
! 	default:
! 	  break;
! 	}
!     }
! 
!   equiv_class_id lhs_ec (-1);
!   equiv_class_id rhs_ec (-1);
!   get_equiv_class_by_svalue (lhs, &lhs_ec);
!   get_equiv_class_by_svalue (rhs, &rhs_ec);
!   if (!lhs_ec.null_p () && !rhs_ec.null_p ())
!     {
!       tristate result_for_ecs
! 	= eval_condition (lhs_ec, op, rhs_ec);
!       if (result_for_ecs.is_known ())
! 	return result_for_ecs;
!     }
! 
!   /* If at least one is not in an EC, we have no constraints
!      comparing LHS and RHS yet.
!      They might still be comparable if one (or both) is a constant.
! 
!      Alternatively, we can also get here if we had ECs but they weren't
!      comparable.  Again, constant comparisons might give an answer.  */
!   tree lhs_const = lhs->maybe_get_constant ();
!   tree rhs_const = rhs->maybe_get_constant ();
!   if (lhs_const && rhs_const)
!     {
!       tristate result_for_constants
! 	= compare_constants (lhs_const, op, rhs_const);
!       if (result_for_constants.is_known ())
! 	return result_for_constants;
!     }
! 
!   if (!lhs_ec.null_p ())
!     {
!       if (rhs_const)
! 	return eval_condition (lhs_ec, op, rhs_const);
!     }
!   if (!rhs_ec.null_p ())
!     {
!       if (lhs_const)
! 	{
! 	  enum tree_code swapped_op = swap_tree_comparison (op);
! 	  return eval_condition (rhs_ec, swapped_op, lhs_const);
! 	}
!     }
! 
!   return tristate (tristate::TS_UNKNOWN);
! }
! 
! /* Delete any information about svalues identified by P.
     Such instances are removed from equivalence classes, and any
     redundant ECs and constraints are also removed.
     Accumulate stats into STATS.  */
  
+ template <typename PurgeCriteria>
  void
! constraint_manager::purge (const PurgeCriteria &p, purge_stats *stats)
  {
!   /* Delete any svalues identified by P within the various equivalence
       classes.  */
    for (unsigned ec_idx = 0; ec_idx < m_equiv_classes.length (); )
      {
        equiv_class *ec = m_equiv_classes[ec_idx];
  
        int i;
!       const svalue *sval;
        bool delete_ec = false;
!       FOR_EACH_VEC_ELT (ec->m_vars, i, sval)
  	{
! 	  if (sval == ec->m_cst_sval)
  	    continue;
! 	  if (p.should_purge_p (sval))
  	    {
! 	      if (ec->del (sval))
  		if (!ec->m_constant)
  		  delete_ec = true;
  	    }
*************** constraint_manager::purge (const purge_c
*** 1190,1209 ****
    validate ();
  }
  
! /* Remap all svalue_ids within this constraint_manager using MAP.  */
  
  void
! constraint_manager::remap_svalue_ids (const svalue_id_map &map)
  {
!   int i;
!   equiv_class *ec;
!   FOR_EACH_VEC_ELT (m_equiv_classes, i, ec)
!     ec->remap_svalue_ids (map);
  }
  
  /* Comparator for use by constraint_manager::canonicalize.
     Sort a pair of equiv_class instances, using the representative
!    svalue_id as a sort key.  */
  
  static int
  equiv_class_cmp (const void *p1, const void *p2)
--- 1629,1671 ----
    validate ();
  }
  
! /* Implementation of PurgeCriteria: purge svalues that are not live
!    with respect to LIVE_SVALUES and MODEL.  */
! 
! class dead_svalue_purger
! {
! public:
!   dead_svalue_purger (const svalue_set &live_svalues,
! 		      const region_model *model)
!   : m_live_svalues (live_svalues), m_model (model)
!   {
!   }
! 
!   bool should_purge_p (const svalue *sval) const
!   {
!     return !sval->live_p (&m_live_svalues, m_model);
!   }
! 
! private:
!   const svalue_set &m_live_svalues;
!   const region_model *m_model;
! };
! 
! /* Purge dead svalues from equivalence classes and update constraints
!    accordingly.  */
  
  void
! constraint_manager::
! on_liveness_change (const svalue_set &live_svalues,
! 		    const region_model *model)
  {
!   dead_svalue_purger p (live_svalues, model);
!   purge (p, NULL);
  }
  
  /* Comparator for use by constraint_manager::canonicalize.
     Sort a pair of equiv_class instances, using the representative
!    svalue as a sort key.  */
  
  static int
  equiv_class_cmp (const void *p1, const void *p2)
*************** equiv_class_cmp (const void *p1, const v
*** 1211,1220 ****
    const equiv_class *ec1 = *(const equiv_class * const *)p1;
    const equiv_class *ec2 = *(const equiv_class * const *)p2;
  
!   svalue_id rep1 = ec1->get_representative ();
!   svalue_id rep2 = ec2->get_representative ();
  
!   return rep1.as_int () - rep2.as_int ();
  }
  
  /* Comparator for use by constraint_manager::canonicalize.
--- 1673,1685 ----
    const equiv_class *ec1 = *(const equiv_class * const *)p1;
    const equiv_class *ec2 = *(const equiv_class * const *)p2;
  
!   const svalue *rep1 = ec1->get_representative ();
!   const svalue *rep2 = ec2->get_representative ();
  
!   gcc_assert (rep1);
!   gcc_assert (rep2);
! 
!   return svalue::cmp_ptr (rep1, rep2);
  }
  
  /* Comparator for use by constraint_manager::canonicalize.
*************** constraint_cmp (const void *p1, const vo
*** 1234,1281 ****
    return c1->m_op - c2->m_op;
  }
  
! /* Reorder the equivalence classes and constraints within this
!    constraint_manager into a canonical order, to increase the
     chances of finding equality with another instance.  */
  
  void
! constraint_manager::canonicalize (unsigned num_svalue_ids)
  {
!   /* First, sort svalue_ids within the ECs.  */
    unsigned i;
    equiv_class *ec;
    FOR_EACH_VEC_ELT (m_equiv_classes, i, ec)
      ec->canonicalize ();
  
!   /* Next, sort the ECs into a canonical order.  */
  
!   /* We will need to remap the equiv_class_ids in the constraints,
       so we need to store the original index of each EC.
!      Build a lookup table, mapping from representative svalue_id
!      to the original equiv_class_id of that svalue_id.  */
!   auto_vec<equiv_class_id> original_ec_id (num_svalue_ids);
!   for (i = 0; i < num_svalue_ids; i++)
!     original_ec_id.quick_push (equiv_class_id::null ());
    FOR_EACH_VEC_ELT (m_equiv_classes, i, ec)
      {
!       svalue_id rep = ec->get_representative ();
!       gcc_assert (!rep.null_p ());
!       original_ec_id[rep.as_int ()] = i;
      }
  
!   /* Sort the equivalence classes.  */
    m_equiv_classes.qsort (equiv_class_cmp);
  
    /* Populate ec_id_map based on the old vs new EC ids.  */
!   one_way_id_map<equiv_class_id> ec_id_map (m_equiv_classes.length ());
    FOR_EACH_VEC_ELT (m_equiv_classes, i, ec)
      {
!       svalue_id rep = ec->get_representative ();
!       ec_id_map.put (original_ec_id[rep.as_int ()], i);
      }
  
!   /* Update the EC ids within the constraints.  */
!   constraint *c;
    FOR_EACH_VEC_ELT (m_constraints, i, c)
      {
        ec_id_map.update (&c->m_lhs);
--- 1699,1777 ----
    return c1->m_op - c2->m_op;
  }
  
! /* Purge redundant equivalence classes and constraints, and reorder them
!    within this constraint_manager into a canonical order, to increase the
     chances of finding equality with another instance.  */
  
  void
! constraint_manager::canonicalize ()
  {
!   /* First, sort svalues within the ECs.  */
    unsigned i;
    equiv_class *ec;
    FOR_EACH_VEC_ELT (m_equiv_classes, i, ec)
      ec->canonicalize ();
  
!   /* TODO: remove constraints where both sides have a constant, and are
!      thus implicit.  But does this break transitivity?  */
  
!   /* We will be purging and reordering ECs.
!      We will need to remap the equiv_class_ids in the constraints,
       so we need to store the original index of each EC.
!      Build a lookup table, mapping from the representative svalue
!      to the original equiv_class_id of that svalue.  */
!   hash_map<const svalue *, equiv_class_id> original_ec_id;
!   const unsigned orig_num_equiv_classes = m_equiv_classes.length ();
    FOR_EACH_VEC_ELT (m_equiv_classes, i, ec)
      {
!       const svalue *rep = ec->get_representative ();
!       gcc_assert (rep);
!       original_ec_id.put (rep, i);
      }
  
!   /* Find ECs used by constraints.  */
!   hash_set<const equiv_class *> used_ecs;
!   constraint *c;
!   FOR_EACH_VEC_ELT (m_constraints, i, c)
!     {
!       used_ecs.add (m_equiv_classes[c->m_lhs.as_int ()]);
!       used_ecs.add (m_equiv_classes[c->m_rhs.as_int ()]);
!     }
! 
!   /* Purge unused ECs: those that aren't used by constraints and
!      that effectively have only one svalue (either in m_constant
!      or in m_vars).  */
!   {
!     /* "unordered remove if" from a vec.  */
!     unsigned i = 0;
!     while (i < m_equiv_classes.length ())
!       {
! 	equiv_class *ec = m_equiv_classes[i];
! 	if (!used_ecs.contains (ec)
! 	    && ((ec->m_vars.length () < 2 && ec->m_constant == NULL_TREE)
! 		|| (ec->m_vars.length () == 0)))
! 	  {
! 	    m_equiv_classes.unordered_remove (i);
! 	    delete ec;
! 	  }
! 	else
! 	  i++;
!       }
!   }
! 
!   /* Next, sort the surviving ECs into a canonical order.  */
    m_equiv_classes.qsort (equiv_class_cmp);
  
    /* Populate ec_id_map based on the old vs new EC ids.  */
!   one_way_id_map<equiv_class_id> ec_id_map (orig_num_equiv_classes);
    FOR_EACH_VEC_ELT (m_equiv_classes, i, ec)
      {
!       const svalue *rep = ec->get_representative ();
!       gcc_assert (rep);
!       ec_id_map.put (*original_ec_id.get (rep), i);
      }
  
!   /* Use ec_id_map to update the EC ids within the constraints.  */
    FOR_EACH_VEC_ELT (m_constraints, i, c)
      {
        ec_id_map.update (&c->m_lhs);
*************** constraint_manager::canonicalize (unsign
*** 1286,1322 ****
    m_constraints.qsort (constraint_cmp);
  }
  
- /* A concrete subclass of constraint_manager for use when
-    merging two constraint_manager into a third constraint_manager,
-    each of which has its own region_model.
-    Calls are delegated to the constraint_manager for the merged model,
-    and thus affect its region_model.  */
- 
- class cleaned_constraint_manager : public constraint_manager
- {
- public:
-   cleaned_constraint_manager (constraint_manager *merged) : m_merged (merged) {}
- 
-   constraint_manager *clone (region_model *) const FINAL OVERRIDE
-   {
-     gcc_unreachable ();
-   }
-   tree maybe_get_constant (svalue_id sid) const FINAL OVERRIDE
-   {
-     return m_merged->maybe_get_constant (sid);
-   }
-   svalue_id get_sid_for_constant (tree cst) const FINAL OVERRIDE
-   {
-     return m_merged->get_sid_for_constant (cst);
-   }
-   virtual int get_num_svalues () const FINAL OVERRIDE
-   {
-     return m_merged->get_num_svalues ();
-   }
- private:
-   constraint_manager *m_merged;
- };
- 
  /* Concrete subclass of fact_visitor for use by constraint_manager::merge.
     For every fact in CM_A, see if it is also true in *CM_B.  Add such
     facts to *OUT.  */
--- 1782,1787 ----
*************** private:
*** 1324,1346 ****
  class merger_fact_visitor : public fact_visitor
  {
  public:
!   merger_fact_visitor (constraint_manager *cm_b,
  		       constraint_manager *out)
    : m_cm_b (cm_b), m_out (out)
    {}
  
!   void on_fact (svalue_id lhs, enum tree_code code, svalue_id rhs)
      FINAL OVERRIDE
    {
      if (m_cm_b->eval_condition (lhs, code, rhs).is_true ())
        {
  	bool sat = m_out->add_constraint (lhs, code, rhs);
! 	gcc_assert (sat);
        }
    }
  
  private:
!   constraint_manager *m_cm_b;
    constraint_manager *m_out;
  };
  
--- 1789,1829 ----
  class merger_fact_visitor : public fact_visitor
  {
  public:
!   merger_fact_visitor (const constraint_manager *cm_b,
  		       constraint_manager *out)
    : m_cm_b (cm_b), m_out (out)
    {}
  
!   void on_fact (const svalue *lhs, enum tree_code code, const svalue *rhs)
      FINAL OVERRIDE
    {
+     /* Special-case for widening.  */
+     if (lhs->get_kind () == SK_WIDENING)
+       if (!m_cm_b->get_equiv_class_by_svalue (lhs, NULL))
+ 	{
+ 	  /* LHS isn't constrained within m_cm_b.  */
+ 	  bool sat = m_out->add_constraint (lhs, code, rhs);
+ 	  gcc_assert (sat);
+ 	  return;
+ 	}
+ 
      if (m_cm_b->eval_condition (lhs, code, rhs).is_true ())
        {
  	bool sat = m_out->add_constraint (lhs, code, rhs);
! 	if (!sat)
! 	  {
! 	    /* If -fanalyzer-transitivity is off, we can encounter cases
! 	       where at least one of the two constraint_managers being merged
! 	       is infeasible, but we only discover that infeasibility
! 	       during merging (PR analyzer/96650).
! 	       Silently drop such constraints.  */
! 	    gcc_assert (!flag_analyzer_transitivity);
! 	  }
        }
    }
  
  private:
!   const constraint_manager *m_cm_b;
    constraint_manager *m_out;
  };
  
*************** private:
*** 1353,1445 ****
  void
  constraint_manager::merge (const constraint_manager &cm_a,
  			   const constraint_manager &cm_b,
! 			   constraint_manager *out,
! 			   const model_merger &merger)
  {
-   gcc_assert (merger.m_sid_mapping);
- 
-   /* Map svalue_ids in each equiv class from both sources
-      to the merged region_model, dropping ids that don't survive merger,
-      and potentially creating svalues in *OUT for constants.  */
-   cleaned_constraint_manager cleaned_cm_a (out);
-   const one_way_svalue_id_map &map_a_to_m
-     = merger.m_sid_mapping->m_map_from_a_to_m;
-   clean_merger_input (cm_a, map_a_to_m, &cleaned_cm_a);
- 
-   cleaned_constraint_manager cleaned_cm_b (out);
-   const one_way_svalue_id_map &map_b_to_m
-     = merger.m_sid_mapping->m_map_from_b_to_m;
-   clean_merger_input (cm_b, map_b_to_m, &cleaned_cm_b);
- 
-   /* At this point, the two cleaned CMs have ECs and constraints referring
-      to svalues in the merged region model, but both of them have separate
-      ECs.  */
- 
    /* Merge the equivalence classes and constraints.
       The easiest way to do this seems to be to enumerate all of the facts
!      in cleaned_cm_a, see which are also true in cleaned_cm_b,
       and add those to *OUT.  */
!   merger_fact_visitor v (&cleaned_cm_b, out);
!   cleaned_cm_a.for_each_fact (&v);
! }
! 
! /* A subroutine of constraint_manager::merge.
!    Use MAP_SID_TO_M to map equivalence classes and constraints from
!    SM_IN to *OUT.  Purge any non-constant svalue_id that don't appear
!    in the result of MAP_SID_TO_M, purging any ECs and their constraints
!    that become empty as a result.  Potentially create svalues in
!    the merged region_model for constants that weren't already in use there.  */
! 
! void
! constraint_manager::
! clean_merger_input (const constraint_manager &cm_in,
! 		    const one_way_svalue_id_map &map_sid_to_m,
! 		    constraint_manager *out)
! {
!   one_way_id_map<equiv_class_id> map_ec_to_m
!     (cm_in.m_equiv_classes.length ());
!   unsigned ec_idx;
!   equiv_class *ec;
!   FOR_EACH_VEC_ELT (cm_in.m_equiv_classes, ec_idx, ec)
!     {
!       equiv_class cleaned_ec;
!       if (tree cst = ec->get_any_constant ())
! 	{
! 	  cleaned_ec.m_constant = cst;
! 	  /* Lazily create the constant in the out region_model.  */
! 	  cleaned_ec.m_cst_sid = out->get_sid_for_constant (cst);
! 	}
!       unsigned var_idx;
!       svalue_id *var_in_sid;
!       FOR_EACH_VEC_ELT (ec->m_vars, var_idx, var_in_sid)
! 	{
! 	  svalue_id var_m_sid = map_sid_to_m.get_dst_for_src (*var_in_sid);
! 	  if (!var_m_sid.null_p ())
! 	    cleaned_ec.m_vars.safe_push (var_m_sid);
! 	}
!       if (cleaned_ec.get_any_constant () || !cleaned_ec.m_vars.is_empty ())
! 	{
! 	  map_ec_to_m.put (ec_idx, out->m_equiv_classes.length ());
! 	  out->m_equiv_classes.safe_push (new equiv_class (cleaned_ec));
! 	}
!     }
! 
!   /* Write out to *OUT any constraints for which both sides survived
!      cleaning, using the new EC IDs.  */
!   unsigned con_idx;
!   constraint *c;
!   FOR_EACH_VEC_ELT (cm_in.m_constraints, con_idx, c)
!     {
!       equiv_class_id new_lhs = map_ec_to_m.get_dst_for_src (c->m_lhs);
!       if (new_lhs.null_p ())
! 	continue;
!       equiv_class_id new_rhs = map_ec_to_m.get_dst_for_src (c->m_rhs);
!       if (new_rhs.null_p ())
! 	continue;
!       out->m_constraints.safe_push (constraint (new_lhs,
! 						c->m_op,
! 						new_rhs));
!     }
  }
  
  /* Call VISITOR's on_fact vfunc repeatedly to express the various
--- 1836,1849 ----
  void
  constraint_manager::merge (const constraint_manager &cm_a,
  			   const constraint_manager &cm_b,
! 			   constraint_manager *out)
  {
    /* Merge the equivalence classes and constraints.
       The easiest way to do this seems to be to enumerate all of the facts
!      in cm_a, see which are also true in cm_b,
       and add those to *OUT.  */
!   merger_fact_visitor v (&cm_b, out);
!   cm_a.for_each_fact (&v);
  }
  
  /* Call VISITOR's on_fact vfunc repeatedly to express the various
*************** constraint_manager::for_each_fact (fact_
*** 1455,1466 ****
    equiv_class *ec;
    FOR_EACH_VEC_ELT (m_equiv_classes, ec_idx, ec)
      {
!       if (!ec->m_cst_sid.null_p ())
  	{
  	  unsigned i;
! 	  svalue_id *sid;
! 	  FOR_EACH_VEC_ELT (ec->m_vars, i, sid)
! 	    visitor->on_fact (ec->m_cst_sid, EQ_EXPR, *sid);
  	}
        for (unsigned i = 0; i < ec->m_vars.length (); i++)
  	for (unsigned j = i + 1; j < ec->m_vars.length (); j++)
--- 1859,1870 ----
    equiv_class *ec;
    FOR_EACH_VEC_ELT (m_equiv_classes, ec_idx, ec)
      {
!       if (ec->m_cst_sval)
  	{
  	  unsigned i;
! 	  const svalue *sval;
! 	  FOR_EACH_VEC_ELT (ec->m_vars, i, sval)
! 	    visitor->on_fact (ec->m_cst_sval, EQ_EXPR, sval);
  	}
        for (unsigned i = 0; i < ec->m_vars.length (); i++)
  	for (unsigned j = i + 1; j < ec->m_vars.length (); j++)
*************** constraint_manager::for_each_fact (fact_
*** 1476,1492 ****
        const equiv_class &ec_rhs = c->m_rhs.get_obj (*this);
        enum tree_code code = constraint_tree_code (c->m_op);
  
!       if (!ec_lhs.m_cst_sid.null_p ())
  	{
  	  for (unsigned j = 0; j < ec_rhs.m_vars.length (); j++)
  	    {
! 	      visitor->on_fact (ec_lhs.m_cst_sid, code, ec_rhs.m_vars[j]);
  	    }
  	}
        for (unsigned i = 0; i < ec_lhs.m_vars.length (); i++)
  	{
! 	  if (!ec_rhs.m_cst_sid.null_p ())
! 	    visitor->on_fact (ec_lhs.m_vars[i], code, ec_rhs.m_cst_sid);
  	  for (unsigned j = 0; j < ec_rhs.m_vars.length (); j++)
  	    visitor->on_fact (ec_lhs.m_vars[i], code, ec_rhs.m_vars[j]);
  	}
--- 1880,1896 ----
        const equiv_class &ec_rhs = c->m_rhs.get_obj (*this);
        enum tree_code code = constraint_tree_code (c->m_op);
  
!       if (ec_lhs.m_cst_sval)
  	{
  	  for (unsigned j = 0; j < ec_rhs.m_vars.length (); j++)
  	    {
! 	      visitor->on_fact (ec_lhs.m_cst_sval, code, ec_rhs.m_vars[j]);
  	    }
  	}
        for (unsigned i = 0; i < ec_lhs.m_vars.length (); i++)
  	{
! 	  if (ec_rhs.m_cst_sval)
! 	    visitor->on_fact (ec_lhs.m_vars[i], code, ec_rhs.m_cst_sval);
  	  for (unsigned j = 0; j < ec_rhs.m_vars.length (); j++)
  	    visitor->on_fact (ec_lhs.m_vars[i], code, ec_rhs.m_vars[j]);
  	}
*************** constraint_manager::validate () const
*** 1510,1526 ****
        gcc_assert (ec);
  
        int j;
!       svalue_id *sid;
!       FOR_EACH_VEC_ELT (ec->m_vars, j, sid)
! 	{
! 	  gcc_assert (!sid->null_p ());
! 	  gcc_assert (sid->as_int () < get_num_svalues ());
! 	}
        if (ec->m_constant)
  	{
  	  gcc_assert (CONSTANT_CLASS_P (ec->m_constant));
! 	  gcc_assert (!ec->m_cst_sid.null_p ());
! 	  gcc_assert (ec->m_cst_sid.as_int () < get_num_svalues ());
  	}
  #if 0
        else
--- 1914,1926 ----
        gcc_assert (ec);
  
        int j;
!       const svalue *sval;
!       FOR_EACH_VEC_ELT (ec->m_vars, j, sval)
! 	gcc_assert (sval);
        if (ec->m_constant)
  	{
  	  gcc_assert (CONSTANT_CLASS_P (ec->m_constant));
! 	  gcc_assert (ec->m_cst_sval);
  	}
  #if 0
        else
*************** namespace selftest {
*** 1544,1551 ****
  
  /* Various constraint_manager selftests.
     These have to be written in terms of a region_model, since
!    the latter is responsible for managing svalue and svalue_id
!    instances.  */
  
  /* Verify that setting and getting simple conditions within a region_model
     work (thus exercising the underlying constraint_manager).  */
--- 1944,1950 ----
  
  /* Various constraint_manager selftests.
     These have to be written in terms of a region_model, since
!    the latter is responsible for managing svalue instances.  */
  
  /* Verify that setting and getting simple conditions within a region_model
     work (thus exercising the underlying constraint_manager).  */
*************** test_constraint_conditions ()
*** 1562,1568 ****
  
    /* Self-comparisons.  */
    {
!     region_model model;
      ASSERT_CONDITION_TRUE (model, x, EQ_EXPR, x);
      ASSERT_CONDITION_TRUE (model, x, LE_EXPR, x);
      ASSERT_CONDITION_TRUE (model, x, GE_EXPR, x);
--- 1961,1968 ----
  
    /* Self-comparisons.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ASSERT_CONDITION_TRUE (model, x, EQ_EXPR, x);
      ASSERT_CONDITION_TRUE (model, x, LE_EXPR, x);
      ASSERT_CONDITION_TRUE (model, x, GE_EXPR, x);
*************** test_constraint_conditions ()
*** 1571,1579 ****
      ASSERT_CONDITION_FALSE (model, x, GT_EXPR, x);
    }
  
    /* x == y.  */
    {
!     region_model model;
      ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, y);
  
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, y);
--- 1971,1995 ----
      ASSERT_CONDITION_FALSE (model, x, GT_EXPR, x);
    }
  
+   /* Adding self-equality shouldn't add equiv classes.  */
+   {
+     region_model_manager mgr;
+     region_model model (&mgr);
+     ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, x);
+     ADD_SAT_CONSTRAINT (model, int_42, EQ_EXPR, int_42);
+     /* ...even when done directly via svalues: */
+     const svalue *sval_int_42 = model.get_rvalue (int_42, NULL);
+     bool sat = model.get_constraints ()->add_constraint (sval_int_42,
+ 							  EQ_EXPR,
+ 							  sval_int_42);
+     ASSERT_TRUE (sat);
+     ASSERT_EQ (model.get_constraints ()->m_equiv_classes.length (), 0);
+   }
+ 
    /* x == y.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, y);
  
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, y);
*************** test_constraint_conditions ()
*** 1604,1610 ****
  
    /* x == y, then y == z  */
    {
!     region_model model;
      ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, y);
  
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, y);
--- 2020,2027 ----
  
    /* x == y, then y == z  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, y);
  
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, y);
*************** test_constraint_conditions ()
*** 1620,1626 ****
  
    /* x != y.  */
    {
!     region_model model;
  
      ADD_SAT_CONSTRAINT (model, x, NE_EXPR, y);
  
--- 2037,2044 ----
  
    /* x != y.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
  
      ADD_SAT_CONSTRAINT (model, x, NE_EXPR, y);
  
*************** test_constraint_conditions ()
*** 1650,1656 ****
  
    /* x < y.  */
    {
!     region_model model;
  
      ADD_SAT_CONSTRAINT (model, x, LT_EXPR, y);
  
--- 2068,2075 ----
  
    /* x < y.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
  
      ADD_SAT_CONSTRAINT (model, x, LT_EXPR, y);
  
*************** test_constraint_conditions ()
*** 1672,1678 ****
  
    /* x <= y.  */
    {
!     region_model model;
  
      ADD_SAT_CONSTRAINT (model, x, LE_EXPR, y);
  
--- 2091,2098 ----
  
    /* x <= y.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
  
      ADD_SAT_CONSTRAINT (model, x, LE_EXPR, y);
  
*************** test_constraint_conditions ()
*** 1694,1700 ****
  
    /* x > y.  */
    {
!     region_model model;
  
      ADD_SAT_CONSTRAINT (model, x, GT_EXPR, y);
  
--- 2114,2121 ----
  
    /* x > y.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
  
      ADD_SAT_CONSTRAINT (model, x, GT_EXPR, y);
  
*************** test_constraint_conditions ()
*** 1716,1722 ****
  
    /* x >= y.  */
    {
!     region_model model;
  
      ADD_SAT_CONSTRAINT (model, x, GE_EXPR, y);
  
--- 2137,2144 ----
  
    /* x >= y.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
  
      ADD_SAT_CONSTRAINT (model, x, GE_EXPR, y);
  
*************** test_constraint_conditions ()
*** 1740,1746 ****
  
    /* Constants.  */
    {
!     region_model model;
      ASSERT_CONDITION_FALSE (model, int_0, EQ_EXPR, int_42);
      ASSERT_CONDITION_TRUE (model, int_0, NE_EXPR, int_42);
      ASSERT_CONDITION_TRUE (model, int_0, LT_EXPR, int_42);
--- 2162,2169 ----
  
    /* Constants.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ASSERT_CONDITION_FALSE (model, int_0, EQ_EXPR, int_42);
      ASSERT_CONDITION_TRUE (model, int_0, NE_EXPR, int_42);
      ASSERT_CONDITION_TRUE (model, int_0, LT_EXPR, int_42);
*************** test_constraint_conditions ()
*** 1751,1757 ****
  
    /* x == 0, y == 42.  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, int_0);
      ADD_SAT_CONSTRAINT (model, y, EQ_EXPR, int_42);
  
--- 2174,2181 ----
  
    /* x == 0, y == 42.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, int_0);
      ADD_SAT_CONSTRAINT (model, y, EQ_EXPR, int_42);
  
*************** test_constraint_conditions ()
*** 1767,1808 ****
  
    /* x == y && x != y.  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, y);
      ADD_UNSAT_CONSTRAINT (model, x, NE_EXPR, y);
    }
  
    /* x == 0 then x == 42.  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, int_0);
      ADD_UNSAT_CONSTRAINT (model, x, EQ_EXPR, int_42);
    }
  
    /* x == 0 then x != 0.  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, int_0);
      ADD_UNSAT_CONSTRAINT (model, x, NE_EXPR, int_0);
    }
  
    /* x == 0 then x > 0.  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, int_0);
      ADD_UNSAT_CONSTRAINT (model, x, GT_EXPR, int_0);
    }
  
    /* x != y && x == y.  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, x, NE_EXPR, y);
      ADD_UNSAT_CONSTRAINT (model, x, EQ_EXPR, y);
    }
  
    /* x <= y && x > y.  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, x, LE_EXPR, y);
      ADD_UNSAT_CONSTRAINT (model, x, GT_EXPR, y);
    }
--- 2191,2238 ----
  
    /* x == y && x != y.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, y);
      ADD_UNSAT_CONSTRAINT (model, x, NE_EXPR, y);
    }
  
    /* x == 0 then x == 42.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, int_0);
      ADD_UNSAT_CONSTRAINT (model, x, EQ_EXPR, int_42);
    }
  
    /* x == 0 then x != 0.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, int_0);
      ADD_UNSAT_CONSTRAINT (model, x, NE_EXPR, int_0);
    }
  
    /* x == 0 then x > 0.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, int_0);
      ADD_UNSAT_CONSTRAINT (model, x, GT_EXPR, int_0);
    }
  
    /* x != y && x == y.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, x, NE_EXPR, y);
      ADD_UNSAT_CONSTRAINT (model, x, EQ_EXPR, y);
    }
  
    /* x <= y && x > y.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, x, LE_EXPR, y);
      ADD_UNSAT_CONSTRAINT (model, x, GT_EXPR, y);
    }
*************** test_transitivity ()
*** 1822,1828 ****
  
    /* a == b, then c == d, then c == b.  */
    {
!     region_model model;
      ASSERT_CONDITION_UNKNOWN (model, a, EQ_EXPR, b);
      ASSERT_CONDITION_UNKNOWN (model, b, EQ_EXPR, c);
      ASSERT_CONDITION_UNKNOWN (model, c, EQ_EXPR, d);
--- 2252,2259 ----
  
    /* a == b, then c == d, then c == b.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ASSERT_CONDITION_UNKNOWN (model, a, EQ_EXPR, b);
      ASSERT_CONDITION_UNKNOWN (model, b, EQ_EXPR, c);
      ASSERT_CONDITION_UNKNOWN (model, c, EQ_EXPR, d);
*************** test_transitivity ()
*** 1842,1848 ****
  
    /* Transitivity: "a < b", "b < c" should imply "a < c".  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, a, LT_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, LT_EXPR, c);
  
--- 2273,2280 ----
  
    /* Transitivity: "a < b", "b < c" should imply "a < c".  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, a, LT_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, LT_EXPR, c);
  
*************** test_transitivity ()
*** 1852,1858 ****
  
    /* Transitivity: "a <= b", "b < c" should imply "a < c".  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, a, LE_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, LT_EXPR, c);
  
--- 2284,2291 ----
  
    /* Transitivity: "a <= b", "b < c" should imply "a < c".  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, a, LE_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, LT_EXPR, c);
  
*************** test_transitivity ()
*** 1862,1868 ****
  
    /* Transitivity: "a <= b", "b <= c" should imply "a <= c".  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, a, LE_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, LE_EXPR, c);
  
--- 2295,2302 ----
  
    /* Transitivity: "a <= b", "b <= c" should imply "a <= c".  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, a, LE_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, LE_EXPR, c);
  
*************** test_transitivity ()
*** 1872,1878 ****
  
    /* Transitivity: "a > b", "b > c" should imply "a > c".  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, a, GT_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, GT_EXPR, c);
  
--- 2306,2313 ----
  
    /* Transitivity: "a > b", "b > c" should imply "a > c".  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, a, GT_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, GT_EXPR, c);
  
*************** test_transitivity ()
*** 1882,1888 ****
  
    /* Transitivity: "a >= b", "b > c" should imply " a > c".  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, a, GE_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, GT_EXPR, c);
  
--- 2317,2324 ----
  
    /* Transitivity: "a >= b", "b > c" should imply " a > c".  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, a, GE_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, GT_EXPR, c);
  
*************** test_transitivity ()
*** 1892,1898 ****
  
    /* Transitivity: "a >= b", "b >= c" should imply "a >= c".  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, a, GE_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, GE_EXPR, c);
  
--- 2328,2335 ----
  
    /* Transitivity: "a >= b", "b >= c" should imply "a >= c".  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, a, GE_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, GE_EXPR, c);
  
*************** test_transitivity ()
*** 1907,1913 ****
       but also that:
         (a < d).  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, a, LT_EXPR, b);
      ADD_SAT_CONSTRAINT (model, c, LT_EXPR, d);
      ADD_SAT_CONSTRAINT (model, b, LT_EXPR, c);
--- 2344,2351 ----
       but also that:
         (a < d).  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, a, LT_EXPR, b);
      ADD_SAT_CONSTRAINT (model, c, LT_EXPR, d);
      ADD_SAT_CONSTRAINT (model, b, LT_EXPR, c);
*************** test_transitivity ()
*** 1919,1935 ****
  
    /* Transitivity: "a >= b", "b >= a" should imply that a == b.  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, a, GE_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, GE_EXPR, a);
  
      // TODO:
      ASSERT_CONDITION_TRUE (model, a, EQ_EXPR, b);
    }
  
    /* Transitivity: "a >= b", "b > a" should be impossible.  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, a, GE_EXPR, b);
      ADD_UNSAT_CONSTRAINT (model, b, GT_EXPR, a);
    }
--- 2357,2379 ----
  
    /* Transitivity: "a >= b", "b >= a" should imply that a == b.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, a, GE_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, GE_EXPR, a);
  
      // TODO:
      ASSERT_CONDITION_TRUE (model, a, EQ_EXPR, b);
+ 
+     /* The ECs for a and b should have merged, and any constraints removed.  */
+     ASSERT_EQ (model.get_constraints ()->m_equiv_classes.length (), 1);
+     ASSERT_EQ (model.get_constraints ()->m_constraints.length (), 0);
    }
  
    /* Transitivity: "a >= b", "b > a" should be impossible.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, a, GE_EXPR, b);
      ADD_UNSAT_CONSTRAINT (model, b, GT_EXPR, a);
    }
*************** test_transitivity ()
*** 1937,1943 ****
    /* Transitivity: "a >= b", "b >= c", "c >= a" should imply
       that a == b == c.  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, a, GE_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, GE_EXPR, c);
      ADD_SAT_CONSTRAINT (model, c, GE_EXPR, a);
--- 2381,2388 ----
    /* Transitivity: "a >= b", "b >= c", "c >= a" should imply
       that a == b == c.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, a, GE_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, GE_EXPR, c);
      ADD_SAT_CONSTRAINT (model, c, GE_EXPR, a);
*************** test_transitivity ()
*** 1948,1954 ****
    /* Transitivity: "a > b", "b > c", "c > a"
       should be impossible.  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, a, GT_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, GT_EXPR, c);
      ADD_UNSAT_CONSTRAINT (model, c, GT_EXPR, a);
--- 2393,2400 ----
    /* Transitivity: "a > b", "b > c", "c > a"
       should be impossible.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, a, GT_EXPR, b);
      ADD_SAT_CONSTRAINT (model, b, GT_EXPR, c);
      ADD_UNSAT_CONSTRAINT (model, c, GT_EXPR, a);
*************** test_constant_comparisons ()
*** 1974,1987 ****
  
    /* Given a >= 1024, then a <= 1023 should be impossible.  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, a, GE_EXPR, int_1024);
      ADD_UNSAT_CONSTRAINT (model, a, LE_EXPR, int_1023);
    }
  
    /* a > 4.  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, a, GT_EXPR, int_4);
      ASSERT_CONDITION_TRUE (model, a, GT_EXPR, int_4);
      ASSERT_CONDITION_TRUE (model, a, NE_EXPR, int_3);
--- 2420,2435 ----
  
    /* Given a >= 1024, then a <= 1023 should be impossible.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, a, GE_EXPR, int_1024);
      ADD_UNSAT_CONSTRAINT (model, a, LE_EXPR, int_1023);
    }
  
    /* a > 4.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, a, GT_EXPR, int_4);
      ASSERT_CONDITION_TRUE (model, a, GT_EXPR, int_4);
      ASSERT_CONDITION_TRUE (model, a, NE_EXPR, int_3);
*************** test_constant_comparisons ()
*** 1990,1996 ****
  
    /* a <= 4.  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, a, LE_EXPR, int_4);
      ASSERT_CONDITION_FALSE (model, a, GT_EXPR, int_4);
      ASSERT_CONDITION_FALSE (model, a, GT_EXPR, int_5);
--- 2438,2445 ----
  
    /* a <= 4.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, a, LE_EXPR, int_4);
      ASSERT_CONDITION_FALSE (model, a, GT_EXPR, int_4);
      ASSERT_CONDITION_FALSE (model, a, GT_EXPR, int_5);
*************** test_constant_comparisons ()
*** 1999,2005 ****
  
    /* If "a > b" and "a == 3", then "b == 4" ought to be unsatisfiable.  */
    {
!     region_model model;
      ADD_SAT_CONSTRAINT (model, a, GT_EXPR, b);
      ADD_SAT_CONSTRAINT (model, a, EQ_EXPR, int_3);
      ADD_UNSAT_CONSTRAINT (model, b, EQ_EXPR, int_4);
--- 2448,2455 ----
  
    /* If "a > b" and "a == 3", then "b == 4" ought to be unsatisfiable.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, a, GT_EXPR, b);
      ADD_SAT_CONSTRAINT (model, a, EQ_EXPR, int_3);
      ADD_UNSAT_CONSTRAINT (model, b, EQ_EXPR, int_4);
*************** test_constant_comparisons ()
*** 2010,2016 ****
      /* If "a <= 4" && "a > 3", then "a == 4",
         assuming a is of integral type.  */
      {
!       region_model model;
        ADD_SAT_CONSTRAINT (model, a, LE_EXPR, int_4);
        ADD_SAT_CONSTRAINT (model, a, GT_EXPR, int_3);
        ASSERT_CONDITION_TRUE (model, a, EQ_EXPR, int_4);
--- 2460,2467 ----
      /* If "a <= 4" && "a > 3", then "a == 4",
         assuming a is of integral type.  */
      {
!       region_model_manager mgr;
!       region_model model (&mgr);
        ADD_SAT_CONSTRAINT (model, a, LE_EXPR, int_4);
        ADD_SAT_CONSTRAINT (model, a, GT_EXPR, int_3);
        ASSERT_CONDITION_TRUE (model, a, EQ_EXPR, int_4);
*************** test_constant_comparisons ()
*** 2019,2025 ****
      /* If "a > 3" && "a <= 4", then "a == 4",
         assuming a is of integral type.  */
      {
!       region_model model;
        ADD_SAT_CONSTRAINT (model, a, GT_EXPR, int_3);
        ADD_SAT_CONSTRAINT (model, a, LE_EXPR, int_4);
        ASSERT_CONDITION_TRUE (model, a, EQ_EXPR, int_4);
--- 2470,2477 ----
      /* If "a > 3" && "a <= 4", then "a == 4",
         assuming a is of integral type.  */
      {
!       region_model_manager mgr;
!       region_model model (&mgr);
        ADD_SAT_CONSTRAINT (model, a, GT_EXPR, int_3);
        ADD_SAT_CONSTRAINT (model, a, LE_EXPR, int_4);
        ASSERT_CONDITION_TRUE (model, a, EQ_EXPR, int_4);
*************** test_constant_comparisons ()
*** 2027,2033 ****
      /* If "a > 3" && "a < 5", then "a == 4",
         assuming a is of integral type.  */
      {
!       region_model model;
        ADD_SAT_CONSTRAINT (model, a, GT_EXPR, int_3);
        ADD_SAT_CONSTRAINT (model, a, LT_EXPR, int_5);
        ASSERT_CONDITION_TRUE (model, a, EQ_EXPR, int_4);
--- 2479,2486 ----
      /* If "a > 3" && "a < 5", then "a == 4",
         assuming a is of integral type.  */
      {
!       region_model_manager mgr;
!       region_model model (&mgr);
        ADD_SAT_CONSTRAINT (model, a, GT_EXPR, int_3);
        ADD_SAT_CONSTRAINT (model, a, LT_EXPR, int_5);
        ASSERT_CONDITION_TRUE (model, a, EQ_EXPR, int_4);
*************** test_constant_comparisons ()
*** 2035,2048 ****
      /* If "a >= 4" && "a < 5", then "a == 4",
         assuming a is of integral type.  */
      {
!       region_model model;
        ADD_SAT_CONSTRAINT (model, a, GE_EXPR, int_4);
        ADD_SAT_CONSTRAINT (model, a, LT_EXPR, int_5);
        ASSERT_CONDITION_TRUE (model, a, EQ_EXPR, int_4);
      }
      /* If "a >= 4" && "a <= 4", then "a == 4".  */
      {
!       region_model model;
        ADD_SAT_CONSTRAINT (model, a, GE_EXPR, int_4);
        ADD_SAT_CONSTRAINT (model, a, LE_EXPR, int_4);
        ASSERT_CONDITION_TRUE (model, a, EQ_EXPR, int_4);
--- 2488,2503 ----
      /* If "a >= 4" && "a < 5", then "a == 4",
         assuming a is of integral type.  */
      {
!       region_model_manager mgr;
!       region_model model (&mgr);
        ADD_SAT_CONSTRAINT (model, a, GE_EXPR, int_4);
        ADD_SAT_CONSTRAINT (model, a, LT_EXPR, int_5);
        ASSERT_CONDITION_TRUE (model, a, EQ_EXPR, int_4);
      }
      /* If "a >= 4" && "a <= 4", then "a == 4".  */
      {
!       region_model_manager mgr;
!       region_model model (&mgr);
        ADD_SAT_CONSTRAINT (model, a, GE_EXPR, int_4);
        ADD_SAT_CONSTRAINT (model, a, LE_EXPR, int_4);
        ASSERT_CONDITION_TRUE (model, a, EQ_EXPR, int_4);
*************** test_constant_comparisons ()
*** 2056,2062 ****
      tree float_3 = build_real_from_int_cst (double_type_node, int_3);
      tree float_4 = build_real_from_int_cst (double_type_node, int_4);
  
!     region_model model;
      ADD_SAT_CONSTRAINT (model, f, GT_EXPR, float_3);
      ADD_SAT_CONSTRAINT (model, f, LE_EXPR, float_4);
      ASSERT_CONDITION_UNKNOWN (model, f, EQ_EXPR, float_4);
--- 2511,2518 ----
      tree float_3 = build_real_from_int_cst (double_type_node, int_3);
      tree float_4 = build_real_from_int_cst (double_type_node, int_4);
  
!     region_model_manager mgr;
!     region_model model (&mgr);
      ADD_SAT_CONSTRAINT (model, f, GT_EXPR, float_3);
      ADD_SAT_CONSTRAINT (model, f, LE_EXPR, float_4);
      ASSERT_CONDITION_UNKNOWN (model, f, EQ_EXPR, float_4);
*************** test_constraint_impl ()
*** 2079,2085 ****
  
    /* x == y.  */
    {
!     region_model model;
  
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, y);
  
--- 2535,2542 ----
  
    /* x == y.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
  
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, y);
  
*************** test_constraint_impl ()
*** 2091,2097 ****
  
    /* y <= z; x == y.  */
    {
!     region_model model;
      ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, y);
      ASSERT_CONDITION_UNKNOWN (model, x, GE_EXPR, z);
  
--- 2548,2555 ----
  
    /* y <= z; x == y.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, y);
      ASSERT_CONDITION_UNKNOWN (model, x, GE_EXPR, z);
  
*************** test_constraint_impl ()
*** 2112,2118 ****
  
    /* y <= z; y == x.  */
    {
!     region_model model;
      ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, y);
      ASSERT_CONDITION_UNKNOWN (model, x, GE_EXPR, z);
  
--- 2570,2577 ----
  
    /* y <= z; y == x.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
      ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, y);
      ASSERT_CONDITION_UNKNOWN (model, x, GE_EXPR, z);
  
*************** test_constraint_impl ()
*** 2133,2152 ****
  
    /* x == 0, then x != 42.  */
    {
!     region_model model;
  
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, int_0);
      ADD_SAT_CONSTRAINT (model, x, NE_EXPR, int_42);
  
      /* Assert various things about the insides of model.  */
      constraint_manager *cm = model.get_constraints ();
!     ASSERT_EQ (cm->m_constraints.length (), 1);
!     ASSERT_EQ (cm->m_equiv_classes.length (), 2);
!     ASSERT_EQ (cm->m_constraints[0].m_lhs,
! 	       cm->get_or_add_equiv_class (model.get_rvalue (int_0, NULL)));
!     ASSERT_EQ (cm->m_constraints[0].m_rhs,
! 	       cm->get_or_add_equiv_class (model.get_rvalue (int_42, NULL)));
!     ASSERT_EQ (cm->m_constraints[0].m_op, CONSTRAINT_LT);
    }
  
    // TODO: selftest for merging ecs "in the middle"
--- 2592,2607 ----
  
    /* x == 0, then x != 42.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
  
      ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, int_0);
      ADD_SAT_CONSTRAINT (model, x, NE_EXPR, int_42);
  
      /* Assert various things about the insides of model.  */
      constraint_manager *cm = model.get_constraints ();
!     ASSERT_EQ (cm->m_constraints.length (), 0);
!     ASSERT_EQ (cm->m_equiv_classes.length (), 1);
    }
  
    // TODO: selftest for merging ecs "in the middle"
*************** test_equality ()
*** 2165,2172 ****
    tree y = build_global_decl ("y", integer_type_node);
  
    {
!     region_model model0;
!     region_model model1;
  
      constraint_manager *cm0 = model0.get_constraints ();
      constraint_manager *cm1 = model1.get_constraints ();
--- 2620,2628 ----
    tree y = build_global_decl ("y", integer_type_node);
  
    {
!     region_model_manager mgr;
!     region_model model0 (&mgr);
!     region_model model1 (&mgr);
  
      constraint_manager *cm0 = model0.get_constraints ();
      constraint_manager *cm1 = model1.get_constraints ();
*************** test_equality ()
*** 2184,2190 ****
      ASSERT_NE (model0.hash (), model1.hash ());
      ASSERT_NE (model0, model1);
  
!     region_model model2;
      constraint_manager *cm2 = model2.get_constraints ();
      /* Make the same change to cm2.  */
      ADD_SAT_CONSTRAINT (model2, x, EQ_EXPR, y);
--- 2640,2646 ----
      ASSERT_NE (model0.hash (), model1.hash ());
      ASSERT_NE (model0, model1);
  
!     region_model model2 (&mgr);
      constraint_manager *cm2 = model2.get_constraints ();
      /* Make the same change to cm2.  */
      ADD_SAT_CONSTRAINT (model2, x, EQ_EXPR, y);
*************** test_equality ()
*** 2201,2209 ****
  static void
  test_many_constants ()
  {
    tree a = build_global_decl ("a", integer_type_node);
  
!   region_model model;
    auto_vec<tree> constants;
    for (int i = 0; i < 20; i++)
      {
--- 2657,2667 ----
  static void
  test_many_constants ()
  {
+   program_point point (program_point::origin ());
    tree a = build_global_decl ("a", integer_type_node);
  
!   region_model_manager mgr;
!   region_model model (&mgr);
    auto_vec<tree> constants;
    for (int i = 0; i < 20; i++)
      {
*************** test_many_constants ()
*** 2214,2223 ****
        /* Merge, and check the result.  */
        region_model other (model);
  
!       region_model merged;
!       ASSERT_TRUE (model.can_merge_with_p (other, &merged));
!       model.canonicalize (NULL);
!       merged.canonicalize (NULL);
        ASSERT_EQ (model, merged);
  
        for (int j = 0; j <= i; j++)
--- 2672,2681 ----
        /* Merge, and check the result.  */
        region_model other (model);
  
!       region_model merged (&mgr);
!       ASSERT_TRUE (model.can_merge_with_p (other, point, &merged));
!       model.canonicalize ();
!       merged.canonicalize ();
        ASSERT_EQ (model, merged);
  
        for (int j = 0; j <= i; j++)
*************** run_constraint_manager_tests (bool trans
*** 2239,2246 ****
      {
        /* These selftests assume transitivity.  */
        test_transitivity ();
-       test_constant_comparisons ();
      }
    test_constraint_impl ();
    test_equality ();
    test_many_constants ();
--- 2697,2704 ----
      {
        /* These selftests assume transitivity.  */
        test_transitivity ();
      }
+   test_constant_comparisons ();
    test_constraint_impl ();
    test_equality ();
    test_many_constants ();
diff -Nrcpad gcc-10.3.0/gcc/analyzer/constraint-manager.h gcc-11.1.0/gcc/analyzer/constraint-manager.h
*** gcc-10.3.0/gcc/analyzer/constraint-manager.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/constraint-manager.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Tracking equivalence classes and constraints at a point on an execution path.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Tracking equivalence classes and constraints at a point on an execution path.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** namespace ana {
*** 25,41 ****
  
  class constraint_manager;
  
! /* Abstract base class for specifying how state should be purged.  */
  
! class purge_criteria
  {
! public:
!   virtual ~purge_criteria () {}
!   virtual bool should_purge_p (svalue_id sid) const = 0;
  };
  
  /* An equivalence class within a constraint manager: a set of
!    svalue_ids that are known to all be equal to each other,
     together with an optional tree constant that they are equal to.  */
  
  class equiv_class
--- 25,71 ----
  
  class constraint_manager;
  
! /* One of the end-points of a range.  */
  
! struct bound
  {
!   bound () : m_constant (NULL_TREE), m_closed (false) {}
!   bound (tree constant, bool closed)
!   : m_constant (constant), m_closed (closed) {}
! 
!   void ensure_closed (bool is_upper);
! 
!   const char * get_relation_as_str () const;
! 
!   tree m_constant;
!   bool m_closed;
! };
! 
! /* A range of values, used for determining if a value has been
!    constrained to just one possible constant value.  */
! 
! struct range
! {
!   range () : m_lower_bound (), m_upper_bound () {}
!   range (const bound &lower, const bound &upper)
!   : m_lower_bound (lower), m_upper_bound (upper) {}
! 
!   void dump_to_pp (pretty_printer *pp) const;
!   void dump () const;
! 
!   tree constrained_to_single_element ();
! 
!   tristate eval_condition (enum tree_code op,
! 			   tree rhs_const) const;
!   bool below_lower_bound (tree rhs_const) const;
!   bool above_upper_bound (tree rhs_const) const;
! 
!   bound m_lower_bound;
!   bound m_upper_bound;
  };
  
  /* An equivalence class within a constraint manager: a set of
!    svalues that are known to all be equal to each other,
     together with an optional tree constant that they are equal to.  */
  
  class equiv_class
*************** public:
*** 47,73 ****
    hashval_t hash () const;
    bool operator== (const equiv_class &other);
  
!   void add (svalue_id sid, const constraint_manager &cm);
!   bool del (svalue_id sid);
  
    tree get_any_constant () const { return m_constant; }
  
!   svalue_id get_representative () const;
! 
!   void remap_svalue_ids (const svalue_id_map &map);
  
    void canonicalize ();
  
    void print (pretty_printer *pp) const;
  
    /* An equivalence class can contain multiple constants (e.g. multiple
       different zeroes, for different types); these are just for the last
       constant added.  */
    tree m_constant;
!   svalue_id m_cst_sid;
  
    // TODO: should this be a set rather than a vec?
!   auto_vec<svalue_id> m_vars;
  };
  
  /* The various kinds of constraint.  */
--- 77,103 ----
    hashval_t hash () const;
    bool operator== (const equiv_class &other);
  
!   void add (const svalue *sval);
!   bool del (const svalue *sval);
  
    tree get_any_constant () const { return m_constant; }
  
!   const svalue *get_representative () const;
  
    void canonicalize ();
  
    void print (pretty_printer *pp) const;
  
+   json::object *to_json () const;
+ 
    /* An equivalence class can contain multiple constants (e.g. multiple
       different zeroes, for different types); these are just for the last
       constant added.  */
    tree m_constant;
!   const svalue *m_cst_sval;
  
    // TODO: should this be a set rather than a vec?
!   auto_vec<const svalue *> m_vars;
  };
  
  /* The various kinds of constraint.  */
*************** class constraint
*** 132,137 ****
--- 162,169 ----
  
    void print (pretty_printer *pp, const constraint_manager &cm) const;
  
+   json::object *to_json () const;
+ 
    hashval_t hash () const;
    bool operator== (const constraint &other) const;
  
*************** class constraint
*** 141,146 ****
--- 173,181 ----
      return m_op != CONSTRAINT_NE;
    }
  
+   bool implied_by (const constraint &other,
+ 		   const constraint_manager &cm) const;
+ 
    equiv_class_id m_lhs;
    enum constraint_op m_op;
    equiv_class_id m_rhs;
*************** class fact_visitor
*** 152,158 ****
  {
   public:
    virtual ~fact_visitor () {}
!   virtual void on_fact (svalue_id lhs, enum tree_code, svalue_id rhs) = 0;
  };
  
  /* A collection of equivalence classes and constraints on them.
--- 187,195 ----
  {
   public:
    virtual ~fact_visitor () {}
!   virtual void on_fact (const svalue *lhs,
! 			enum tree_code,
! 			const svalue *rhs) = 0;
  };
  
  /* A collection of equivalence classes and constraints on them.
*************** class fact_visitor
*** 164,178 ****
  class constraint_manager
  {
  public:
!   constraint_manager () {}
    constraint_manager (const constraint_manager &other);
    virtual ~constraint_manager () {}
  
-   virtual constraint_manager *clone (region_model *) const = 0;
-   virtual tree maybe_get_constant (svalue_id sid) const = 0;
-   virtual svalue_id get_sid_for_constant (tree cst) const = 0;
-   virtual int get_num_svalues () const = 0;
- 
    constraint_manager& operator= (const constraint_manager &other);
  
    hashval_t hash () const;
--- 201,210 ----
  class constraint_manager
  {
  public:
!   constraint_manager (region_model_manager *mgr) : m_mgr (mgr) {}
    constraint_manager (const constraint_manager &other);
    virtual ~constraint_manager () {}
  
    constraint_manager& operator= (const constraint_manager &other);
  
    hashval_t hash () const;
*************** public:
*** 183,192 ****
    }
  
    void print (pretty_printer *pp) const;
!   void dump_to_pp (pretty_printer *pp) const;
    void dump (FILE *fp) const;
    void dump () const;
  
    const equiv_class &get_equiv_class_by_index (unsigned idx) const
    {
      return *m_equiv_classes[idx];
--- 215,226 ----
    }
  
    void print (pretty_printer *pp) const;
!   void dump_to_pp (pretty_printer *pp, bool multiline) const;
    void dump (FILE *fp) const;
    void dump () const;
  
+   json::object *to_json () const;
+ 
    const equiv_class &get_equiv_class_by_index (unsigned idx) const
    {
      return *m_equiv_classes[idx];
*************** public:
*** 196,232 ****
      return *m_equiv_classes[idx];
    }
  
!   equiv_class &get_equiv_class (svalue_id sid)
    {
!     equiv_class_id ec_id = get_or_add_equiv_class (sid);
      return ec_id.get_obj (*this);
    }
  
!   bool add_constraint (svalue_id lhs, enum tree_code op, svalue_id rhs);
  
    bool add_constraint (equiv_class_id lhs_ec_id,
  		       enum tree_code op,
  		       equiv_class_id rhs_ec_id);
  
!   bool get_equiv_class_by_sid (svalue_id sid, equiv_class_id *out) const;
!   equiv_class_id get_or_add_equiv_class (svalue_id sid);
    tristate eval_condition (equiv_class_id lhs,
  			   enum tree_code op,
! 			   equiv_class_id rhs);
!   tristate eval_condition (svalue_id lhs,
  			   enum tree_code op,
! 			   svalue_id rhs);
  
!   void purge (const purge_criteria &p, purge_stats *stats);
  
!   void remap_svalue_ids (const svalue_id_map &map);
  
!   void canonicalize (unsigned num_svalue_ids);
  
    static void merge (const constraint_manager &cm_a,
  		     const constraint_manager &cm_b,
! 		     constraint_manager *out,
! 		     const model_merger &merger);
  
    void for_each_fact (fact_visitor *) const;
  
--- 230,280 ----
      return *m_equiv_classes[idx];
    }
  
!   equiv_class &get_equiv_class (const svalue *sval)
    {
!     equiv_class_id ec_id = get_or_add_equiv_class (sval);
      return ec_id.get_obj (*this);
    }
  
!   bool add_constraint (const svalue *lhs,
! 		       enum tree_code op,
! 		       const svalue *rhs);
  
    bool add_constraint (equiv_class_id lhs_ec_id,
  		       enum tree_code op,
  		       equiv_class_id rhs_ec_id);
  
!   void add_unknown_constraint (equiv_class_id lhs_ec_id,
! 			       enum tree_code op,
! 			       equiv_class_id rhs_ec_id);
! 
!   bool get_equiv_class_by_svalue (const svalue *sval,
! 				    equiv_class_id *out) const;
!   equiv_class_id get_or_add_equiv_class (const svalue *sval);
    tristate eval_condition (equiv_class_id lhs,
  			   enum tree_code op,
! 			   equiv_class_id rhs) const;
!   tristate eval_condition (equiv_class_id lhs_ec,
  			   enum tree_code op,
! 			   tree rhs_const) const;
!   tristate eval_condition (const svalue *lhs,
! 			   enum tree_code op,
! 			   const svalue *rhs) const;
!   range get_ec_bounds (equiv_class_id ec_id) const;
  
!   /* PurgeCriteria should have:
!      bool should_purge_p (const svalue *sval) const.  */
!   template <typename PurgeCriteria>
!   void purge (const PurgeCriteria &p, purge_stats *stats);
  
!   void on_liveness_change (const svalue_set &live_svalues,
! 			   const region_model *model);
  
!   void canonicalize ();
  
    static void merge (const constraint_manager &cm_a,
  		     const constraint_manager &cm_b,
! 		     constraint_manager *out);
  
    void for_each_fact (fact_visitor *) const;
  
*************** public:
*** 236,248 ****
    auto_vec<constraint> m_constraints;
  
   private:
-   static void clean_merger_input (const constraint_manager &cm_in,
- 				  const one_way_svalue_id_map &map_sid_to_m,
- 				  constraint_manager *out);
- 
    void add_constraint_internal (equiv_class_id lhs_id,
  				enum constraint_op c_op,
  				equiv_class_id rhs_id);
  };
  
  } // namespace ana
--- 284,294 ----
    auto_vec<constraint> m_constraints;
  
   private:
    void add_constraint_internal (equiv_class_id lhs_id,
  				enum constraint_op c_op,
  				equiv_class_id rhs_id);
+ 
+   region_model_manager *m_mgr;
  };
  
  } // namespace ana
diff -Nrcpad gcc-10.3.0/gcc/analyzer/diagnostic-manager.cc gcc-11.1.0/gcc/analyzer/diagnostic-manager.cc
*** gcc-10.3.0/gcc/analyzer/diagnostic-manager.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/diagnostic-manager.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Classes for saving, deduplicating, and emitting analyzer diagnostics.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for saving, deduplicating, and emitting analyzer diagnostics.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 37,47 ****
--- 37,51 ----
  #include "tristate.h"
  #include "selftest.h"
  #include "ordered-hash-map.h"
+ #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
  #include "analyzer/pending-diagnostic.h"
  #include "analyzer/diagnostic-manager.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "analyzer/constraint-manager.h"
  #include "cfg.h"
*************** along with GCC; see the file COPYING3.
*** 51,60 ****
  #include "cgraph.h"
  #include "digraph.h"
  #include "analyzer/supergraph.h"
- #include "analyzer/call-string.h"
- #include "analyzer/program-point.h"
  #include "analyzer/program-state.h"
  #include "analyzer/exploded-graph.h"
  #include "analyzer/checker-path.h"
  #include "analyzer/reachability.h"
  
--- 55,64 ----
  #include "cgraph.h"
  #include "digraph.h"
  #include "analyzer/supergraph.h"
  #include "analyzer/program-state.h"
  #include "analyzer/exploded-graph.h"
+ #include "analyzer/trimmed-graph.h"
+ #include "analyzer/feasible-graph.h"
  #include "analyzer/checker-path.h"
  #include "analyzer/reachability.h"
  
*************** along with GCC; see the file COPYING3.
*** 62,67 ****
--- 66,578 ----
  
  namespace ana {
  
+ class feasible_worklist;
+ 
+ /* State for finding the shortest feasible exploded_path for a
+    saved_diagnostic.
+    This is shared between all diagnostics, so that we avoid repeating work.  */
+ 
+ class epath_finder
+ {
+ public:
+   epath_finder (const exploded_graph &eg)
+   : m_eg (eg),
+     m_sep (NULL)
+   {
+     /* This is shared by all diagnostics, but only needed if
+        !flag_analyzer_feasibility.  */
+     if (!flag_analyzer_feasibility)
+       m_sep = new shortest_exploded_paths (eg, eg.get_origin (),
+ 					   SPS_FROM_GIVEN_ORIGIN);
+   }
+ 
+   ~epath_finder () { delete m_sep; }
+ 
+   logger *get_logger () const { return m_eg.get_logger (); }
+ 
+   exploded_path *get_best_epath (const exploded_node *target_enode,
+ 				 const char *desc, unsigned diag_idx,
+ 				 feasibility_problem **out_problem);
+ 
+ private:
+   DISABLE_COPY_AND_ASSIGN(epath_finder);
+ 
+   exploded_path *explore_feasible_paths (const exploded_node *target_enode,
+ 					 const char *desc, unsigned diag_idx);
+   bool process_worklist_item (feasible_worklist *worklist,
+ 			      const trimmed_graph &tg,
+ 			      feasible_graph *fg,
+ 			      const exploded_node *target_enode,
+ 			      unsigned diag_idx,
+ 			      exploded_path **out_best_path) const;
+   void dump_trimmed_graph (const exploded_node *target_enode,
+ 			   const char *desc, unsigned diag_idx,
+ 			   const trimmed_graph &tg,
+ 			   const shortest_paths<eg_traits, exploded_path> &sep);
+   void dump_feasible_graph (const exploded_node *target_enode,
+ 			    const char *desc, unsigned diag_idx,
+ 			    const feasible_graph &fg);
+ 
+   const exploded_graph &m_eg;
+   shortest_exploded_paths *m_sep;
+ };
+ 
+ /* class epath_finder.  */
+ 
+ /* Get the "best" exploded_path for reaching ENODE from the origin,
+    returning ownership of it to the caller.
+ 
+    Ideally we want to report the shortest feasible path.
+    Return NULL if we could not find a feasible path
+    (when flag_analyzer_feasibility is true).
+ 
+    If flag_analyzer_feasibility is false, then simply return the
+    shortest path.
+ 
+    Use DESC and DIAG_IDX when logging.
+ 
+    Write any feasibility_problem to *OUT_PROBLEM.  */
+ 
+ exploded_path *
+ epath_finder::get_best_epath (const exploded_node *enode,
+ 			      const char *desc, unsigned diag_idx,
+ 			      feasibility_problem **out_problem)
+ {
+   logger *logger = get_logger ();
+   LOG_SCOPE (logger);
+ 
+   unsigned snode_idx = enode->get_supernode ()->m_index;
+   if (logger)
+     logger->log ("considering %qs at EN: %i, SN: %i (sd: %i)",
+ 		 desc, enode->m_index, snode_idx, diag_idx);
+ 
+   /* State-merging means that not every path in the egraph corresponds
+      to a feasible one w.r.t. states.
+ 
+      We want to find the shortest feasible path from the origin to ENODE
+      in the egraph.  */
+ 
+   if (flag_analyzer_feasibility)
+     {
+       /* Attempt to find the shortest feasible path using feasible_graph.  */
+       if (logger)
+ 	logger->log ("trying to find shortest feasible path");
+       if (exploded_path *epath = explore_feasible_paths (enode, desc, diag_idx))
+ 	{
+ 	  if (logger)
+ 	    logger->log ("accepting %qs at EN: %i, SN: %i (sd: %i)"
+ 			 " with feasible path (length: %i)",
+ 			 desc, enode->m_index, snode_idx, diag_idx,
+ 			 epath->length ());
+ 	  return epath;
+ 	}
+       else
+ 	{
+ 	  if (logger)
+ 	    logger->log ("rejecting %qs at EN: %i, SN: %i (sd: %i)"
+ 			 " due to not finding feasible path",
+ 			 desc, enode->m_index, snode_idx, diag_idx);
+ 	  return NULL;
+ 	}
+     }
+   else
+     {
+       /* As a crude approximation to shortest feasible path, simply find
+ 	 the shortest path, and note whether it is feasible.
+ 	 There could be longer feasible paths within the egraph, so this
+ 	 approach would lead to diagnostics being falsely rejected
+ 	 (PR analyzer/96374).  */
+       if (logger)
+ 	logger->log ("trying to find shortest path ignoring feasibility");
+       gcc_assert (m_sep);
+       exploded_path *epath
+ 	= new exploded_path (m_sep->get_shortest_path (enode));
+       if (epath->feasible_p (logger, out_problem, m_eg.get_engine (), &m_eg))
+ 	{
+ 	  if (logger)
+ 	    logger->log ("accepting %qs at EN: %i, SN: %i (sn: %i)"
+ 			 " with feasible path (length: %i)",
+ 			 desc, enode->m_index, snode_idx, diag_idx,
+ 			 epath->length ());
+ 	}
+       else
+ 	{
+ 	  if (logger)
+ 	    logger->log ("accepting %qs at EN: %i, SN: %i (sn: %i) (length: %i)"
+ 			 " despite infeasible path (due to %qs)",
+ 			 desc, enode->m_index, snode_idx, diag_idx,
+ 			 epath->length (),
+ 			 "-fno-analyzer-feasibility");
+ 	}
+       return epath;
+     }
+ }
+ 
+ /* A class for managing the worklist of feasible_nodes in
+    epath_finder::explore_feasible_paths, prioritizing them
+    so that shorter paths appear earlier in the queue.  */
+ 
+ class feasible_worklist
+ {
+ public:
+   feasible_worklist (const shortest_paths<eg_traits, exploded_path> &sep)
+   : m_queue (key_t (*this, NULL)),
+     m_sep (sep)
+   {
+   }
+ 
+   feasible_node *take_next () { return m_queue.extract_min (); }
+ 
+   void add_node (feasible_node *fnode)
+   {
+     m_queue.insert (key_t (*this, fnode), fnode);
+   }
+ 
+ private:
+   struct key_t
+   {
+     key_t (const feasible_worklist &w, feasible_node *fnode)
+     : m_worklist (w), m_fnode (fnode)
+     {}
+ 
+     bool operator< (const key_t &other) const
+     {
+       return cmp (*this, other) < 0;
+     }
+ 
+     bool operator== (const key_t &other) const
+     {
+       return cmp (*this, other) == 0;
+     }
+ 
+     bool operator> (const key_t &other) const
+     {
+       return !(*this == other || *this < other);
+     }
+ 
+   private:
+     static int cmp (const key_t &ka, const key_t &kb)
+     {
+       /* Choose the node for which if the remaining path were feasible,
+ 	 it would be the shortest path (summing the length of the
+ 	 known-feasible path so far with that of the remaining
+ 	 possibly-feasible path).  */
+       int ca = ka.m_worklist.get_estimated_cost (ka.m_fnode);
+       int cb = kb.m_worklist.get_estimated_cost (kb.m_fnode);
+       return ca - cb;
+     }
+ 
+     const feasible_worklist &m_worklist;
+     feasible_node *m_fnode;
+   };
+ 
+   /* Get the estimated length of a path involving FNODE from
+      the origin to the target enode.
+      Sum the length of the known-feasible path so far with
+      that of the remaining possibly-feasible path.  */
+ 
+   int get_estimated_cost (const feasible_node *fnode) const
+   {
+     unsigned length_so_far = fnode->get_path_length ();
+     int shortest_remaining_path
+       = m_sep.get_shortest_distance (fnode->get_inner_node ());
+ 
+     gcc_assert (shortest_remaining_path >= 0);
+     /* This should be true since we're only exploring nodes within
+        the trimmed graph (and we anticipate it being much smaller
+        than this, and thus not overflowing the sum).  */
+     gcc_assert (shortest_remaining_path < INT_MAX);
+ 
+     return length_so_far + shortest_remaining_path;
+   }
+ 
+   /* Priority queue, backed by a fibonacci_heap.  */
+   typedef fibonacci_heap<key_t, feasible_node> queue_t;
+   queue_t m_queue;
+   const shortest_paths<eg_traits, exploded_path> &m_sep;
+ };
+ 
+ /* Attempt to find the shortest feasible path from the origin to
+    TARGET_ENODE by iteratively building a feasible_graph, in which
+    every path to a feasible_node is feasible by construction.
+ 
+    We effectively explore the tree of feasible paths in order of shortest
+    path until we either find a feasible path to TARGET_ENODE, or hit
+    a limit and give up.
+ 
+    Preliminaries:
+    - Find the shortest path from each node to the TARGET_ENODE (without
+    checking feasibility), so that we can prioritize our worklist.
+    - Construct a trimmed_graph: the subset of nodes/edges that
+    are on a path that eventually reaches TARGET_ENODE.  We will only need
+    to consider these when considering the shortest feasible path.
+ 
+    Build a feasible_graph, in which every path to a feasible_node
+    is feasible by construction.
+    We use a worklist to flatten the exploration into an iteration.
+    Starting at the origin, find feasible out-edges within the trimmed graph.
+    At each stage, choose the node for which if the remaining path were feasible,
+    it would be the shortest path (summing the length of the known-feasible path
+    so far with that of the remaining possibly-feasible path).
+    This way, the first feasible path we find to TARGET_ENODE is the shortest.
+    We start by trying the shortest possible path, but if that fails,
+    we explore progressively longer paths, eventually trying iterations through
+    loops.  The exploration is captured in the feasible_graph, which can be
+    dumped as a .dot file to visualize the exploration.  The indices of the
+    feasible_nodes show the order in which they were created.
+ 
+    This is something of a brute-force approach, but the trimmed_graph
+    hopefully keeps the complexity manageable.
+ 
+    Terminate with failure when the number of infeasible edges exceeds
+    a threshold (--param=analyzer-max-infeasible-edges=).
+    This is guaranteed to eventually lead to terminatation, as
+    we can't keep creating feasible nodes without eventually
+    either reaching an infeasible edge, or reaching the
+    TARGET_ENODE.  Specifically, there can't be a cycle of
+    feasible edges that doesn't reach the target_enode without
+    an out-edge that either fails feasibility or gets closer
+    to the TARGET_ENODE: on each iteration we are either:
+    - effectively getting closer to the TARGET_ENODE (which can't
+      continue forever without reaching the target), or
+    - getting monotonically closer to the termination threshold.  */
+ 
+ exploded_path *
+ epath_finder::explore_feasible_paths (const exploded_node *target_enode,
+ 				      const char *desc, unsigned diag_idx)
+ {
+   logger *logger = get_logger ();
+   LOG_SCOPE (logger);
+ 
+   /* Determine the shortest path to TARGET_ENODE from each node in
+      the exploded graph.  */
+   shortest_paths<eg_traits, exploded_path> sep
+     (m_eg, target_enode, SPS_TO_GIVEN_TARGET);
+ 
+   /* Construct a trimmed_graph: the subset of nodes/edges that
+      are on a path that eventually reaches TARGET_ENODE.
+      We only need to consider these when considering the shortest
+      feasible path.  */
+   trimmed_graph tg (m_eg, target_enode);
+ 
+   if (flag_dump_analyzer_feasibility)
+     dump_trimmed_graph (target_enode, desc, diag_idx, tg, sep);
+ 
+   feasible_graph fg;
+   feasible_worklist worklist (sep);
+ 
+   /* Populate the worklist with the origin node.  */
+   {
+     feasibility_state init_state (m_eg.get_engine ()->get_model_manager (),
+ 				  m_eg.get_supergraph ());
+     feasible_node *origin = fg.add_node (m_eg.get_origin (), init_state, 0);
+     worklist.add_node (origin);
+   }
+ 
+   /* Iteratively explore the tree of feasible paths in order of shortest
+      path until we either find a feasible path to TARGET_ENODE, or hit
+      a limit.  */
+ 
+   /* Set this if we find a feasible path to TARGET_ENODE.  */
+   exploded_path *best_path = NULL;
+ 
+   while (process_worklist_item (&worklist, tg, &fg, target_enode, diag_idx,
+ 				&best_path))
+     {
+       /* Empty; the work is done within process_worklist_item.  */
+     }
+ 
+   if (logger)
+     {
+       logger->log ("tg for sd: %i:", diag_idx);
+       logger->inc_indent ();
+       tg.log_stats (logger);
+       logger->dec_indent ();
+ 
+       logger->log ("fg for sd: %i:", diag_idx);
+       logger->inc_indent ();
+       fg.log_stats (logger);
+       logger->dec_indent ();
+     }
+ 
+   /* Dump the feasible_graph.  */
+   if (flag_dump_analyzer_feasibility)
+     dump_feasible_graph (target_enode, desc, diag_idx, fg);
+ 
+   return best_path;
+ }
+ 
+ /* Process the next item in WORKLIST, potentially adding new items
+    based on feasible out-edges, and extending FG accordingly.
+    Use TG to ignore out-edges that don't lead to TARGET_ENODE.
+    Return true if the worklist processing should continue.
+    Return false if the processing of the worklist should stop
+    (either due to reaching TARGET_ENODE, or hitting a limit).
+    Write to *OUT_BEST_PATH if stopping due to finding a feasible path
+    to TARGET_ENODE.  */
+ 
+ bool
+ epath_finder::process_worklist_item (feasible_worklist *worklist,
+ 				     const trimmed_graph &tg,
+ 				     feasible_graph *fg,
+ 				     const exploded_node *target_enode,
+ 				     unsigned diag_idx,
+ 				     exploded_path **out_best_path) const
+ {
+   logger *logger = get_logger ();
+ 
+   feasible_node *fnode = worklist->take_next ();
+   if (!fnode)
+     {
+       if (logger)
+ 	logger->log ("drained worklist for sd: %i"
+ 		     " without finding feasible path",
+ 		     diag_idx);
+       return false;
+     }
+ 
+   log_scope s (logger, "fg worklist item",
+ 	       "considering FN: %i (EN: %i) for sd: %i",
+ 	       fnode->get_index (), fnode->get_inner_node ()->m_index,
+ 	       diag_idx);
+ 
+   /* Iterate through all out-edges from this item.  */
+   unsigned i;
+   exploded_edge *succ_eedge;
+   FOR_EACH_VEC_ELT (fnode->get_inner_node ()->m_succs, i, succ_eedge)
+     {
+       log_scope s (logger, "edge", "considering edge: EN:%i -> EN:%i",
+ 		   succ_eedge->m_src->m_index,
+ 		   succ_eedge->m_dest->m_index);
+       /* Reject edges that aren't in the trimmed graph.  */
+       if (!tg.contains_p (succ_eedge))
+ 	{
+ 	  if (logger)
+ 	    logger->log ("rejecting: not in trimmed graph");
+ 	  continue;
+ 	}
+ 
+       feasibility_state succ_state (fnode->get_state ());
+       rejected_constraint *rc = NULL;
+       if (succ_state.maybe_update_for_edge (logger, succ_eedge, &rc))
+ 	{
+ 	  gcc_assert (rc == NULL);
+ 	  feasible_node *succ_fnode
+ 	    = fg->add_node (succ_eedge->m_dest,
+ 			    succ_state,
+ 			    fnode->get_path_length () + 1);
+ 	  if (logger)
+ 	    logger->log ("accepting as FN: %i", succ_fnode->get_index ());
+ 	  fg->add_edge (new feasible_edge (fnode, succ_fnode, succ_eedge));
+ 
+ 	  /* Have we reached TARGET_ENODE?  */
+ 	  if (succ_fnode->get_inner_node () == target_enode)
+ 	    {
+ 	      if (logger)
+ 		logger->log ("success: got feasible path to EN: %i (sd: %i)"
+ 			     " (length: %i)",
+ 			     target_enode->m_index, diag_idx,
+ 			     succ_fnode->get_path_length ());
+ 	      *out_best_path = fg->make_epath (succ_fnode);
+ 	      /* Success: stop the worklist iteration.  */
+ 	      return false;
+ 	    }
+ 	  else
+ 	    worklist->add_node (succ_fnode);
+ 	}
+       else
+ 	{
+ 	  if (logger)
+ 	    logger->log ("infeasible");
+ 	  gcc_assert (rc);
+ 	  fg->add_feasibility_problem (fnode,
+ 				       succ_eedge,
+ 				       *rc);
+ 	  delete rc;
+ 
+ 	  /* Give up if there have been too many infeasible edges.  */
+ 	  if (fg->get_num_infeasible ()
+ 	      > (unsigned)param_analyzer_max_infeasible_edges)
+ 	    {
+ 	      if (logger)
+ 		logger->log ("too many infeasible edges (%i); giving up",
+ 			     fg->get_num_infeasible ());
+ 	      return false;
+ 	    }
+ 	}
+     }
+ 
+   /* Continue the worklist iteration.  */
+   return true;
+ }
+ 
+ /* Helper class for epath_finder::dump_trimmed_graph
+    to dump extra per-node information.
+    Use SEP to add the length of the shortest path from each
+    node to the target node to each node's dump.  */
+ 
+ class dump_eg_with_shortest_path : public eg_traits::dump_args_t
+ {
+ public:
+   dump_eg_with_shortest_path
+     (const exploded_graph &eg,
+      const shortest_paths<eg_traits, exploded_path> &sep)
+   : dump_args_t (eg),
+     m_sep (sep)
+   {
+   }
+ 
+   void dump_extra_info (const exploded_node *enode,
+ 			pretty_printer *pp) const FINAL OVERRIDE
+   {
+     pp_printf (pp, "sp: %i", m_sep.get_shortest_path (enode).length ());
+     pp_newline (pp);
+   }
+ 
+ private:
+   const shortest_paths<eg_traits, exploded_path> &m_sep;
+ };
+ 
+ /* Dump TG to "BASE_NAME.DESC.DIAG_IDX.to-enN.tg.dot",
+    annotating each node with the length of the shortest path
+    from that node to TARGET_ENODE (using SEP).  */
+ 
+ void
+ epath_finder::
+ dump_trimmed_graph (const exploded_node *target_enode,
+ 		    const char *desc, unsigned diag_idx,
+ 		    const trimmed_graph &tg,
+ 		    const shortest_paths<eg_traits, exploded_path> &sep)
+ {
+   auto_timevar tv (TV_ANALYZER_DUMP);
+   dump_eg_with_shortest_path inner_args (m_eg, sep);
+   trimmed_graph::dump_args_t args (inner_args);
+   pretty_printer pp;
+   pp_printf (&pp, "%s.%s.%i.to-en%i.tg.dot",
+ 	     dump_base_name, desc, diag_idx, target_enode->m_index);
+   char *filename = xstrdup (pp_formatted_text (&pp));
+   tg.dump_dot (filename, NULL, args);
+   free (filename);
+ }
+ 
+ /* Dump FG to "BASE_NAME.DESC.DIAG_IDX.to-enN.fg.dot".  */
+ 
+ void
+ epath_finder::dump_feasible_graph (const exploded_node *target_enode,
+ 				   const char *desc, unsigned diag_idx,
+ 				   const feasible_graph &fg)
+ {
+   auto_timevar tv (TV_ANALYZER_DUMP);
+   exploded_graph::dump_args_t inner_args (m_eg);
+   feasible_graph::dump_args_t args (inner_args);
+   pretty_printer pp;
+   pp_printf (&pp, "%s.%s.%i.to-en%i.fg.dot",
+ 	     dump_base_name, desc, diag_idx, target_enode->m_index);
+   char *filename = xstrdup (pp_formatted_text (&pp));
+   fg.dump_dot (filename, NULL, args);
+   free (filename);
+ }
+ 
  /* class saved_diagnostic.  */
  
  /* saved_diagnostic's ctor.
*************** saved_diagnostic::saved_diagnostic (cons
*** 71,85 ****
  				    const exploded_node *enode,
  				    const supernode *snode, const gimple *stmt,
  				    stmt_finder *stmt_finder,
! 				    tree var, state_machine::state_t state,
! 				    pending_diagnostic *d)
  : m_sm (sm), m_enode (enode), m_snode (snode), m_stmt (stmt),
   /* stmt_finder could be on-stack; we want our own copy that can
      outlive that.  */
    m_stmt_finder (stmt_finder ? stmt_finder->clone () : NULL),
!   m_var (var), m_state (state),
    m_d (d), m_trailing_eedge (NULL),
!   m_status (STATUS_NEW), m_epath_length (0), m_problem (NULL)
  {
    gcc_assert (m_stmt || m_stmt_finder);
  
--- 582,600 ----
  				    const exploded_node *enode,
  				    const supernode *snode, const gimple *stmt,
  				    stmt_finder *stmt_finder,
! 				    tree var,
! 				    const svalue *sval,
! 				    state_machine::state_t state,
! 				    pending_diagnostic *d,
! 				    unsigned idx)
  : m_sm (sm), m_enode (enode), m_snode (snode), m_stmt (stmt),
   /* stmt_finder could be on-stack; we want our own copy that can
      outlive that.  */
    m_stmt_finder (stmt_finder ? stmt_finder->clone () : NULL),
!   m_var (var), m_sval (sval), m_state (state),
    m_d (d), m_trailing_eedge (NULL),
!   m_idx (idx),
!   m_best_epath (NULL), m_problem (NULL)
  {
    gcc_assert (m_stmt || m_stmt_finder);
  
*************** saved_diagnostic::~saved_diagnostic ()
*** 94,99 ****
--- 609,615 ----
  {
    delete m_stmt_finder;
    delete m_d;
+   delete m_best_epath;
    delete m_problem;
  }
  
*************** saved_diagnostic::operator== (const save
*** 111,116 ****
--- 627,727 ----
  	  && m_trailing_eedge == other.m_trailing_eedge);
  }
  
+ /* Return a new json::object of the form
+    {"sm": optional str,
+     "enode": int,
+     "snode": int,
+     "sval": optional str,
+     "state": optional str,
+     "path_length": optional int,
+     "pending_diagnostic": str,
+     "idx": int}.  */
+ 
+ json::object *
+ saved_diagnostic::to_json () const
+ {
+   json::object *sd_obj = new json::object ();
+ 
+   if (m_sm)
+     sd_obj->set ("sm", new json::string (m_sm->get_name ()));
+   sd_obj->set ("enode", new json::integer_number (m_enode->m_index));
+   sd_obj->set ("snode", new json::integer_number (m_snode->m_index));
+   if (m_sval)
+     sd_obj->set ("sval", m_sval->to_json ());
+   if (m_state)
+     sd_obj->set ("state", m_state->to_json ());
+   if (m_best_epath)
+     sd_obj->set ("path_length", new json::integer_number (get_epath_length ()));
+   sd_obj->set ("pending_diagnostic", new json::string (m_d->get_kind ()));
+   sd_obj->set ("idx", new json::integer_number (m_idx));
+ 
+   /* We're not yet JSONifying the following fields:
+      const gimple *m_stmt;
+      stmt_finder *m_stmt_finder;
+      tree m_var;
+      exploded_edge *m_trailing_eedge;
+      enum status m_status;
+      feasibility_problem *m_problem;
+   */
+ 
+   return sd_obj;
+ }
+ 
+ /* Use PF to find the best exploded_path for this saved_diagnostic,
+    and store it in m_best_epath.
+    If m_stmt is still NULL, use m_stmt_finder on the epath to populate
+    m_stmt.
+    Return true if a best path was found.  */
+ 
+ bool
+ saved_diagnostic::calc_best_epath (epath_finder *pf)
+ {
+   logger *logger = pf->get_logger ();
+   LOG_SCOPE (logger);
+   delete m_best_epath;
+   delete m_problem;
+   m_problem = NULL;
+ 
+   m_best_epath = pf->get_best_epath (m_enode, m_d->get_kind (), m_idx,
+ 				     &m_problem);
+ 
+   /* Handle failure to find a feasible path.  */
+   if (m_best_epath == NULL)
+     return false;
+ 
+   gcc_assert (m_best_epath);
+   if (m_stmt == NULL)
+     {
+       gcc_assert (m_stmt_finder);
+       m_stmt = m_stmt_finder->find_stmt (*m_best_epath);
+     }
+   gcc_assert (m_stmt);
+ 
+   return true;
+ }
+ 
+ unsigned
+ saved_diagnostic::get_epath_length () const
+ {
+   gcc_assert (m_best_epath);
+   return m_best_epath->length ();
+ }
+ 
+ /* Record that OTHER (and its duplicates) are duplicates
+    of this saved_diagnostic.  */
+ 
+ void
+ saved_diagnostic::add_duplicate (saved_diagnostic *other)
+ {
+   gcc_assert (other);
+   m_duplicates.reserve (m_duplicates.length ()
+ 			+ other->m_duplicates.length ()
+ 			+ 1);
+   m_duplicates.splice (other->m_duplicates);
+   other->m_duplicates.truncate (0);
+   m_duplicates.safe_push (other);
+ }
+ 
  /* State for building a checker_path from a particular exploded_path.
     In particular, this precomputes reachability information: the set of
     source enodes for which a path be found to the diagnostic enode.  */
*************** class path_builder
*** 119,132 ****
  {
  public:
    path_builder (const exploded_graph &eg,
! 		const exploded_path &epath)
    : m_eg (eg),
      m_diag_enode (epath.get_final_enode ()),
!     m_reachability (eg, m_diag_enode)
    {}
  
    const exploded_node *get_diag_node () const { return m_diag_enode; }
  
    bool reachable_from_p (const exploded_node *src_enode) const
    {
      return m_reachability.reachable_from_p (src_enode);
--- 730,752 ----
  {
  public:
    path_builder (const exploded_graph &eg,
! 		const exploded_path &epath,
! 		const feasibility_problem *problem,
! 		const saved_diagnostic &sd)
    : m_eg (eg),
      m_diag_enode (epath.get_final_enode ()),
!     m_sd (sd),
!     m_reachability (eg, m_diag_enode),
!     m_feasibility_problem (problem)
    {}
  
    const exploded_node *get_diag_node () const { return m_diag_enode; }
  
+   pending_diagnostic *get_pending_diagnostic () const
+   {
+     return m_sd.m_d;
+   }
+ 
    bool reachable_from_p (const exploded_node *src_enode) const
    {
      return m_reachability.reachable_from_p (src_enode);
*************** public:
*** 134,139 ****
--- 754,766 ----
  
    const extrinsic_state &get_ext_state () const { return m_eg.get_ext_state (); }
  
+   const feasibility_problem *get_feasibility_problem () const
+   {
+     return m_feasibility_problem;
+   }
+ 
+   const state_machine *get_sm () const { return m_sd.m_sm; }
+ 
  private:
    typedef reachability<eg_traits> enode_reachability;
  
*************** private:
*** 142,157 ****
    /* The enode where the diagnostic occurs.  */
    const exploded_node *m_diag_enode;
  
    /* Precompute all enodes from which the diagnostic is reachable.  */
    enode_reachability m_reachability;
  };
  
  /* class diagnostic_manager.  */
  
  /* diagnostic_manager's ctor.  */
  
! diagnostic_manager::diagnostic_manager (logger *logger, int verbosity)
! : log_user (logger), m_verbosity (verbosity)
  {
  }
  
--- 769,789 ----
    /* The enode where the diagnostic occurs.  */
    const exploded_node *m_diag_enode;
  
+   const saved_diagnostic &m_sd;
+ 
    /* Precompute all enodes from which the diagnostic is reachable.  */
    enode_reachability m_reachability;
+ 
+   const feasibility_problem *m_feasibility_problem;
  };
  
  /* class diagnostic_manager.  */
  
  /* diagnostic_manager's ctor.  */
  
! diagnostic_manager::diagnostic_manager (logger *logger, engine *eng,
! 					int verbosity)
! : log_user (logger), m_eng (eng), m_verbosity (verbosity)
  {
  }
  
*************** diagnostic_manager::diagnostic_manager (
*** 159,168 ****
  
  void
  diagnostic_manager::add_diagnostic (const state_machine *sm,
! 				    const exploded_node *enode,
  				    const supernode *snode, const gimple *stmt,
  				    stmt_finder *finder,
! 				    tree var, state_machine::state_t state,
  				    pending_diagnostic *d)
  {
    LOG_FUNC (get_logger ());
--- 791,802 ----
  
  void
  diagnostic_manager::add_diagnostic (const state_machine *sm,
! 				    exploded_node *enode,
  				    const supernode *snode, const gimple *stmt,
  				    stmt_finder *finder,
! 				    tree var,
! 				    const svalue *sval,
! 				    state_machine::state_t state,
  				    pending_diagnostic *d)
  {
    LOG_FUNC (get_logger ());
*************** diagnostic_manager::add_diagnostic (cons
*** 172,216 ****
    gcc_assert (enode);
  
    saved_diagnostic *sd
!     = new saved_diagnostic (sm, enode, snode, stmt, finder, var, state, d);
    m_saved_diagnostics.safe_push (sd);
    if (get_logger ())
!     log ("adding saved diagnostic %i at SN %i: %qs",
! 	 m_saved_diagnostics.length () - 1,
! 	 snode->m_index, d->get_kind ());
  }
  
  /* Queue pending_diagnostic D at ENODE for later emission.  */
  
  void
! diagnostic_manager::add_diagnostic (const exploded_node *enode,
  				    const supernode *snode, const gimple *stmt,
  				    stmt_finder *finder,
  				    pending_diagnostic *d)
  {
    gcc_assert (enode);
!   add_diagnostic (NULL, enode, snode, stmt, finder, NULL_TREE, 0, d);
  }
  
  /* A class for identifying sets of duplicated pending_diagnostic.
  
!    We want to find the simplest dedupe_candidate amongst those that share a
     dedupe_key.  */
  
  class dedupe_key
  {
  public:
!   dedupe_key (const saved_diagnostic &sd,
! 	      const exploded_path &epath)
    : m_sd (sd), m_stmt (sd.m_stmt)
    {
-     /* Support deferring the choice of stmt until after an emission path has
-      been built, using an optional stmt_finder.  */
-     if (m_stmt == NULL)
-       {
- 	gcc_assert (sd.m_stmt_finder);
- 	m_stmt = sd.m_stmt_finder->find_stmt (epath);
-       }
      gcc_assert (m_stmt);
    }
  
--- 806,864 ----
    gcc_assert (enode);
  
    saved_diagnostic *sd
!     = new saved_diagnostic (sm, enode, snode, stmt, finder, var, sval,
! 			    state, d, m_saved_diagnostics.length ());
    m_saved_diagnostics.safe_push (sd);
+   enode->add_diagnostic (sd);
    if (get_logger ())
!     log ("adding saved diagnostic %i at SN %i to EN %i: %qs",
! 	 sd->get_index (),
! 	 snode->m_index, enode->m_index, d->get_kind ());
  }
  
  /* Queue pending_diagnostic D at ENODE for later emission.  */
  
  void
! diagnostic_manager::add_diagnostic (exploded_node *enode,
  				    const supernode *snode, const gimple *stmt,
  				    stmt_finder *finder,
  				    pending_diagnostic *d)
  {
    gcc_assert (enode);
!   add_diagnostic (NULL, enode, snode, stmt, finder, NULL_TREE, NULL, 0, d);
! }
! 
! /* Return a new json::object of the form
!    {"diagnostics"  : [obj for saved_diagnostic]}.  */
! 
! json::object *
! diagnostic_manager::to_json () const
! {
!   json::object *dm_obj = new json::object ();
! 
!   {
!     json::array *sd_arr = new json::array ();
!     int i;
!     saved_diagnostic *sd;
!     FOR_EACH_VEC_ELT (m_saved_diagnostics, i, sd)
!       sd_arr->append (sd->to_json ());
!     dm_obj->set ("diagnostics", sd_arr);
!   }
! 
!   return dm_obj;
  }
  
  /* A class for identifying sets of duplicated pending_diagnostic.
  
!    We want to find the simplest saved_diagnostic amongst those that share a
     dedupe_key.  */
  
  class dedupe_key
  {
  public:
!   dedupe_key (const saved_diagnostic &sd)
    : m_sd (sd), m_stmt (sd.m_stmt)
    {
      gcc_assert (m_stmt);
    }
  
*************** public:
*** 244,291 ****
      location_t loc1 = pk1->get_location ();
      location_t loc2 = pk2->get_location ();
  
!     return linemap_compare_locations (line_table, loc2, loc1);
    }
  
    const saved_diagnostic &m_sd;
    const gimple *m_stmt;
  };
  
- /* The value of a slot for a dedupe_key within dedupe_winners:
-    the exploded_path for the best candidate for that key, and the
-    number of duplicates seen so far.  */
- 
- class dedupe_candidate
- {
- public:
-   // has the exploded_path
-   dedupe_candidate (const shortest_exploded_paths &sp,
- 		    saved_diagnostic *sd)
-   : m_epath (sp.get_shortest_path (sd->m_enode)),
-     m_num_dupes (0)
-   {
-   }
- 
-   unsigned length () const { return m_epath.length (); }
-   const exploded_path &get_path () const { return m_epath; }
- 
-   void add_duplicate () { m_num_dupes++; }
-   int get_num_dupes () const { return m_num_dupes; }
- 
- private:
-   exploded_path m_epath;
- public:
-   int m_num_dupes;
- };
- 
  /* Traits for use by dedupe_winners.  */
  
  class dedupe_hash_map_traits
  {
  public:
    typedef const dedupe_key *key_type;
!   typedef dedupe_candidate *value_type;
!   typedef dedupe_candidate *compare_type;
  
    static inline hashval_t hash (const key_type &v)
    {
--- 892,920 ----
      location_t loc1 = pk1->get_location ();
      location_t loc2 = pk2->get_location ();
  
!     if (int cmp = linemap_compare_locations (line_table, loc2, loc1))
!       return cmp;
!     if (int cmp = ((int)pk1->m_sd.get_epath_length ()
! 		   - (int)pk2->m_sd.get_epath_length ()))
!       return cmp;
!     if (int cmp = strcmp (pk1->m_sd.m_d->get_kind (),
! 			  pk2->m_sd.m_d->get_kind ()))
!       return cmp;
!     return 0;
    }
  
    const saved_diagnostic &m_sd;
    const gimple *m_stmt;
  };
  
  /* Traits for use by dedupe_winners.  */
  
  class dedupe_hash_map_traits
  {
  public:
    typedef const dedupe_key *key_type;
!   typedef saved_diagnostic *value_type;
!   typedef saved_diagnostic *compare_type;
  
    static inline hashval_t hash (const key_type &v)
    {
*************** public:
*** 324,428 ****
  };
  
  /* A class for deduplicating diagnostics and finding (and emitting) the
!    best diagnostic within each partition.  */
  
  class dedupe_winners
  {
  public:
    ~dedupe_winners ()
    {
!     /* Delete all keys and candidates.  */
      for (map_t::iterator iter = m_map.begin ();
  	 iter != m_map.end ();
  	 ++iter)
!       {
! 	delete (*iter).first;
! 	delete (*iter).second;
!       }
    }
  
!   /* Determine an exploded_path for SD using SP and, if it's feasible,
!      determine if it's the best seen so far for its dedupe_key.
!      Retain the winner for each dedupe_key, and discard the rest.  */
  
    void add (logger *logger,
! 	    const shortest_exploded_paths &sp,
  	    saved_diagnostic *sd)
    {
!     /* Build a dedupe_candidate for SD.
!        This uses SP to build an exploded_path.  */
!     dedupe_candidate *dc = new dedupe_candidate (sp, sd);
! 
!     sd->set_epath_length (dc->length ());
! 
!     /* Verify that the epath is feasible.
!        State-merging means that not every path in the epath corresponds
!        to a feasible one w.r.t. states.
!        Here we simply check each duplicate saved_diagnostic's
!        shortest_path, and reject any that aren't feasible.
!        This could introduce false negatives, as there could be longer
!        feasible paths within the egraph.  */
!     if (logger)
!       logger->log ("considering %qs at EN: %i, SN: %i",
! 		   sd->m_d->get_kind (), sd->m_enode->m_index,
! 		   sd->m_snode->m_index);
! 
!     feasibility_problem *p = NULL;
!     if (!dc->get_path ().feasible_p (logger, &p))
!       {
! 	if (logger)
! 	  logger->log ("rejecting %qs at EN: %i, SN: %i"
! 		       " due to infeasible path",
! 		       sd->m_d->get_kind (), sd->m_enode->m_index,
! 		       sd->m_snode->m_index);
! 	sd->set_infeasible (p);
! 	delete dc;
! 	return;
!       }
!     else
!       if (logger)
! 	logger->log ("accepting %qs at EN: %i, SN: %i with feasible path",
! 		     sd->m_d->get_kind (), sd->m_enode->m_index,
! 		     sd->m_snode->m_index);
! 
!     sd->set_feasible ();
  
!     dedupe_key *key = new dedupe_key (*sd, dc->get_path ());
!     if (dedupe_candidate **slot = m_map.get (key))
        {
  	if (logger)
  	  logger->log ("already have this dedupe_key");
  
! 	(*slot)->add_duplicate ();
  
! 	if (dc->length () < (*slot)->length ())
  	  {
  	    /* We've got a shorter path for the key; replace
! 	       the current candidate.  */
  	    if (logger)
  	      logger->log ("length %i is better than existing length %i;"
  			   " taking over this dedupe_key",
! 			   dc->length (), (*slot)->length ());
! 	    dc->m_num_dupes = (*slot)->get_num_dupes ();
! 	    delete *slot;
! 	    *slot = dc;
  	  }
  	else
! 	  /* We haven't beaten the current best candidate;
! 	     drop the new candidate.  */
  	  {
  	    if (logger)
  	      logger->log ("length %i isn't better than existing length %i;"
  			   " dropping this candidate",
! 			   dc->length (), (*slot)->length ());
! 	    delete dc;
  	  }
  	delete key;
        }
      else
        {
  	/* This is the first candidate for this key.  */
! 	m_map.put (key, dc);
  	if (logger)
  	  logger->log ("first candidate for this dedupe_key");
        }
--- 953,1021 ----
  };
  
  /* A class for deduplicating diagnostics and finding (and emitting) the
!    best saved_diagnostic within each partition.  */
  
  class dedupe_winners
  {
  public:
    ~dedupe_winners ()
    {
!     /* Delete all keys, but not the saved_diagnostics.  */
      for (map_t::iterator iter = m_map.begin ();
  	 iter != m_map.end ();
  	 ++iter)
!       delete (*iter).first;
    }
  
!   /* Determine an exploded_path for SD using PF and, if it's feasible,
!      determine if SD is the best seen so far for its dedupe_key.
!      Record the winning SD for each dedupe_key.  */
  
    void add (logger *logger,
! 	    epath_finder *pf,
  	    saved_diagnostic *sd)
    {
!     /* Determine best epath for SD.  */
!     if (!sd->calc_best_epath (pf))
!       return;
  
!     dedupe_key *key = new dedupe_key (*sd);
!     if (saved_diagnostic **slot = m_map.get (key))
        {
  	if (logger)
  	  logger->log ("already have this dedupe_key");
  
! 	saved_diagnostic *cur_best_sd = *slot;
  
! 	if (sd->get_epath_length () < cur_best_sd->get_epath_length ())
  	  {
  	    /* We've got a shorter path for the key; replace
! 	       the current candidate, marking it as a duplicate of SD.  */
  	    if (logger)
  	      logger->log ("length %i is better than existing length %i;"
  			   " taking over this dedupe_key",
! 			   sd->get_epath_length (),
! 			   cur_best_sd->get_epath_length ());
! 	    sd->add_duplicate (cur_best_sd);
! 	    *slot = sd;
  	  }
  	else
! 	  /* We haven't beaten the current best candidate; add SD
! 	     as a duplicate of it.  */
  	  {
  	    if (logger)
  	      logger->log ("length %i isn't better than existing length %i;"
  			   " dropping this candidate",
! 			   sd->get_epath_length (),
! 			   cur_best_sd->get_epath_length ());
! 	    cur_best_sd->add_duplicate (sd);
  	  }
  	delete key;
        }
      else
        {
  	/* This is the first candidate for this key.  */
! 	m_map.put (key, sd);
  	if (logger)
  	  logger->log ("first candidate for this dedupe_key");
        }
*************** public:
*** 447,472 ****
      /* Sort into a good emission order.  */
      keys.qsort (dedupe_key::comparator);
  
!     /* Emit the best candidate for each key.  */
      int i;
      const dedupe_key *key;
      FOR_EACH_VEC_ELT (keys, i, key)
        {
! 	dedupe_candidate **slot = m_map.get (key);
  	gcc_assert (*slot);
! 	const dedupe_candidate &dc = **slot;
! 
! 	dm->emit_saved_diagnostic (eg, key->m_sd,
! 				   dc.get_path (), key->m_stmt,
! 				   dc.get_num_dupes ());
        }
    }
  
  private:
  
!   /* This maps from each dedupe_key to a current best dedupe_candidate.  */
! 
!   typedef hash_map<const dedupe_key *, dedupe_candidate *,
  		   dedupe_hash_map_traits> map_t;
    map_t m_map;
  };
--- 1040,1061 ----
      /* Sort into a good emission order.  */
      keys.qsort (dedupe_key::comparator);
  
!     /* Emit the best saved_diagnostics for each key.  */
      int i;
      const dedupe_key *key;
      FOR_EACH_VEC_ELT (keys, i, key)
        {
! 	saved_diagnostic **slot = m_map.get (key);
  	gcc_assert (*slot);
! 	const saved_diagnostic *sd = *slot;
! 	dm->emit_saved_diagnostic (eg, *sd);
        }
    }
  
  private:
+   /* This maps from each dedupe_key to a current best saved_diagnostic.  */
  
!   typedef hash_map<const dedupe_key *, saved_diagnostic *,
  		   dedupe_hash_map_traits> map_t;
    map_t m_map;
  };
*************** diagnostic_manager::emit_saved_diagnosti
*** 493,499 ****
      return;
  
    /* Compute the shortest_paths once, sharing it between all diagnostics.  */
!   shortest_exploded_paths sp (eg, eg.get_origin ());
  
    /* Iterate through all saved diagnostics, adding them to a dedupe_winners
       instance.  This partitions the saved diagnostics by dedupe_key,
--- 1082,1088 ----
      return;
  
    /* Compute the shortest_paths once, sharing it between all diagnostics.  */
!   epath_finder pf (eg);
  
    /* Iterate through all saved diagnostics, adding them to a dedupe_winners
       instance.  This partitions the saved diagnostics by dedupe_key,
*************** diagnostic_manager::emit_saved_diagnosti
*** 504,551 ****
    int i;
    saved_diagnostic *sd;
    FOR_EACH_VEC_ELT (m_saved_diagnostics, i, sd)
!     best_candidates.add (get_logger (), sp, sd);
  
    /* For each dedupe-key, call emit_saved_diagnostic on the "best"
       saved_diagnostic.  */
    best_candidates.emit_best (this, eg);
  }
  
! /* Given a saved_diagnostic SD at STMT with feasible path EPATH through EG,
     create an checker_path of suitable events and use it to call
     SD's underlying pending_diagnostic "emit" vfunc to emit a diagnostic.  */
  
  void
  diagnostic_manager::emit_saved_diagnostic (const exploded_graph &eg,
! 					   const saved_diagnostic &sd,
! 					   const exploded_path &epath,
! 					   const gimple *stmt,
! 					   int num_dupes)
  {
    LOG_SCOPE (get_logger ());
    log ("sd: %qs at SN: %i", sd.m_d->get_kind (), sd.m_snode->m_index);
!   log ("num dupes: %i", num_dupes);
  
    pretty_printer *pp = global_dc->printer->clone ();
  
    /* Precompute all enodes from which the diagnostic is reachable.  */
!   path_builder pb (eg, epath);
  
    /* This is the diagnostic_path subclass that will be built for
       the diagnostic.  */
    checker_path emission_path;
  
    /* Populate emission_path with a full description of EPATH.  */
!   build_emission_path (pb, epath, &emission_path);
  
    /* Now prune it to just cover the most pertinent events.  */
!   prune_path (&emission_path, sd.m_sm, sd.m_var, sd.m_state);
  
    /* Add a final event to the path, covering the diagnostic itself.
       We use the final enode from the epath, which might be different from
       the sd.m_enode, as the dedupe code doesn't care about enodes, just
       snodes.  */
!   emission_path.add_final_event (sd.m_sm, epath.get_final_enode (), stmt,
  				 sd.m_var, sd.m_state);
  
    /* The "final" event might not be final; if the saved_diagnostic has a
--- 1093,1140 ----
    int i;
    saved_diagnostic *sd;
    FOR_EACH_VEC_ELT (m_saved_diagnostics, i, sd)
!     best_candidates.add (get_logger (), &pf, sd);
  
    /* For each dedupe-key, call emit_saved_diagnostic on the "best"
       saved_diagnostic.  */
    best_candidates.emit_best (this, eg);
  }
  
! /* Given a saved_diagnostic SD with m_best_epath through EG,
     create an checker_path of suitable events and use it to call
     SD's underlying pending_diagnostic "emit" vfunc to emit a diagnostic.  */
  
  void
  diagnostic_manager::emit_saved_diagnostic (const exploded_graph &eg,
! 					   const saved_diagnostic &sd)
  {
    LOG_SCOPE (get_logger ());
    log ("sd: %qs at SN: %i", sd.m_d->get_kind (), sd.m_snode->m_index);
!   log ("num dupes: %i", sd.get_num_dupes ());
  
    pretty_printer *pp = global_dc->printer->clone ();
  
+   const exploded_path *epath = sd.get_best_epath ();
+   gcc_assert (epath);
+ 
    /* Precompute all enodes from which the diagnostic is reachable.  */
!   path_builder pb (eg, *epath, sd.get_feasibility_problem (), sd);
  
    /* This is the diagnostic_path subclass that will be built for
       the diagnostic.  */
    checker_path emission_path;
  
    /* Populate emission_path with a full description of EPATH.  */
!   build_emission_path (pb, *epath, &emission_path);
  
    /* Now prune it to just cover the most pertinent events.  */
!   prune_path (&emission_path, sd.m_sm, sd.m_sval, sd.m_state);
  
    /* Add a final event to the path, covering the diagnostic itself.
       We use the final enode from the epath, which might be different from
       the sd.m_enode, as the dedupe code doesn't care about enodes, just
       snodes.  */
!   emission_path.add_final_event (sd.m_sm, epath->get_final_enode (), sd.m_stmt,
  				 sd.m_var, sd.m_state);
  
    /* The "final" event might not be final; if the saved_diagnostic has a
*************** diagnostic_manager::emit_saved_diagnosti
*** 556,626 ****
  
    emission_path.prepare_for_emission (sd.m_d);
  
!   gcc_rich_location rich_loc (stmt->location);
    rich_loc.set_path (&emission_path);
  
    auto_diagnostic_group d;
    auto_cfun sentinel (sd.m_snode->m_fun);
    if (sd.m_d->emit (&rich_loc))
      {
        if (flag_analyzer_show_duplicate_count && num_dupes > 0)
! 	inform_n (stmt->location, num_dupes,
  		  "%i duplicate", "%i duplicates",
  		  num_dupes);
      }
    delete pp;
  }
  
- /* Given a state change to DST_REP, determine a tree that gives the origin
-    of that state at STMT, using DST_STATE's region model, so that state
-    changes based on assignments can be tracked back to their origins.
- 
-    For example, if we have
- 
-      (S1) _1 = malloc (64);
-      (S2) EXPR = _1;
- 
-    then at stmt S2 we can get the origin of EXPR's state as being _1,
-    and thus track the allocation back to S1.  */
- 
- static tree
- get_any_origin (const gimple *stmt,
- 		tree dst_rep,
- 		const program_state &dst_state)
- {
-   if (!stmt)
-     return NULL_TREE;
- 
-   gcc_assert (dst_rep);
- 
-   if (const gassign *assign = dyn_cast <const gassign *> (stmt))
-     {
-       tree lhs = gimple_assign_lhs (assign);
-       /* Use region IDs to compare lhs with DST_REP, bulletproofing against
- 	 cases where they can't have lvalues by using
- 	 tentative_region_model_context.  */
-       tentative_region_model_context ctxt;
-       region_id lhs_rid = dst_state.m_region_model->get_lvalue (lhs, &ctxt);
-       region_id dst_rep_rid
- 	= dst_state.m_region_model->get_lvalue (dst_rep, &ctxt);
-       if (lhs_rid == dst_rep_rid && !ctxt.had_errors_p ())
- 	{
- 	  tree rhs1 = gimple_assign_rhs1 (assign);
- 	  enum tree_code op = gimple_assign_rhs_code (assign);
- 	  switch (op)
- 	    {
- 	    default:
- 	      //gcc_unreachable ();  // TODO
- 	      break;
- 	    case COMPONENT_REF:
- 	    case SSA_NAME:
- 	      return rhs1;
- 	    }
- 	}
-     }
-   return NULL_TREE;
- }
- 
  /* Emit a "path" of events to EMISSION_PATH describing the exploded path
     EPATH within EG.  */
  
--- 1145,1173 ----
  
    emission_path.prepare_for_emission (sd.m_d);
  
!   location_t loc = get_stmt_location (sd.m_stmt, sd.m_snode->m_fun);
! 
!   /* Allow the pending_diagnostic to fix up the primary location
!      and any locations for events.  */
!   loc = sd.m_d->fixup_location (loc);
!   emission_path.fixup_locations (sd.m_d);
! 
!   gcc_rich_location rich_loc (loc);
    rich_loc.set_path (&emission_path);
  
    auto_diagnostic_group d;
    auto_cfun sentinel (sd.m_snode->m_fun);
    if (sd.m_d->emit (&rich_loc))
      {
+       unsigned num_dupes = sd.get_num_dupes ();
        if (flag_analyzer_show_duplicate_count && num_dupes > 0)
! 	inform_n (loc, num_dupes,
  		  "%i duplicate", "%i duplicates",
  		  num_dupes);
      }
    delete pp;
  }
  
  /* Emit a "path" of events to EMISSION_PATH describing the exploded path
     EPATH within EG.  */
  
*************** diagnostic_manager::build_emission_path
*** 643,651 ****
  class state_change_event_creator : public state_change_visitor
  {
  public:
!   state_change_event_creator (const exploded_edge &eedge,
  			      checker_path *emission_path)
!     : m_eedge (eedge),
        m_emission_path (emission_path)
    {}
  
--- 1190,1200 ----
  class state_change_event_creator : public state_change_visitor
  {
  public:
!   state_change_event_creator (const path_builder &pb,
! 			      const exploded_edge &eedge,
  			      checker_path *emission_path)
!     : m_pb (pb),
!       m_eedge (eedge),
        m_emission_path (emission_path)
    {}
  
*************** public:
*** 654,659 ****
--- 1203,1210 ----
  			       state_machine::state_t dst_sm_val)
      FINAL OVERRIDE
    {
+     if (&sm != m_pb.get_sm ())
+       return false;
      const exploded_node *src_node = m_eedge.m_src;
      const program_point &src_point = src_node->get_point ();
      const int src_stack_depth = src_point.get_stack_depth ();
*************** public:
*** 668,677 ****
  							stmt,
  							stack_depth,
  							sm,
! 							NULL_TREE,
  							src_sm_val,
  							dst_sm_val,
! 							NULL_TREE,
  							dst_state));
      return false;
    }
--- 1219,1228 ----
  							stmt,
  							stack_depth,
  							sm,
! 							NULL,
  							src_sm_val,
  							dst_sm_val,
! 							NULL,
  							dst_state));
      return false;
    }
*************** public:
*** 679,687 ****
    bool on_state_change (const state_machine &sm,
  			state_machine::state_t src_sm_val,
  			state_machine::state_t dst_sm_val,
! 			tree dst_rep,
! 			svalue_id dst_origin_sid) FINAL OVERRIDE
    {
      const exploded_node *src_node = m_eedge.m_src;
      const program_point &src_point = src_node->get_point ();
      const int src_stack_depth = src_point.get_stack_depth ();
--- 1230,1240 ----
    bool on_state_change (const state_machine &sm,
  			state_machine::state_t src_sm_val,
  			state_machine::state_t dst_sm_val,
! 			const svalue *sval,
! 			const svalue *dst_origin_sval) FINAL OVERRIDE
    {
+     if (&sm != m_pb.get_sm ())
+       return false;
      const exploded_node *src_node = m_eedge.m_src;
      const program_point &src_point = src_node->get_point ();
      const int src_stack_depth = src_point.get_stack_depth ();
*************** public:
*** 705,727 ****
      if (!stmt)
        return false;
  
-     tree origin_rep
-       = dst_state.get_representative_tree (dst_origin_sid);
- 
-     if (origin_rep == NULL_TREE)
-       origin_rep = get_any_origin (stmt, dst_rep, dst_state);
      m_emission_path->add_event (new state_change_event (supernode,
  							stmt,
  							stack_depth,
  							sm,
! 							dst_rep,
  							src_sm_val,
  							dst_sm_val,
! 							origin_rep,
  							dst_state));
      return false;
    }
  
    const exploded_edge &m_eedge;
    checker_path *m_emission_path;
  };
--- 1258,1276 ----
      if (!stmt)
        return false;
  
      m_emission_path->add_event (new state_change_event (supernode,
  							stmt,
  							stack_depth,
  							sm,
! 							sval,
  							src_sm_val,
  							dst_sm_val,
! 							dst_origin_sval,
  							dst_state));
      return false;
    }
  
+   const path_builder &m_pb;
    const exploded_edge &m_eedge;
    checker_path *m_emission_path;
  };
*************** for_each_state_change (const program_sta
*** 771,814 ****
  	   iter != dst_smap.end ();
  	   ++iter)
  	{
! 	  /* Ideally we'd directly compare the SM state between src state
! 	     and dst state, but there's no guarantee that the IDs can
! 	     be meaningfully compared.  */
! 	  svalue_id dst_sid = (*iter).first;
  	  state_machine::state_t dst_sm_val = (*iter).second.m_state;
! 
! 	  auto_vec<path_var> dst_pvs;
! 	  dst_state.m_region_model->get_path_vars_for_svalue (dst_sid,
! 							      &dst_pvs);
! 
! 	  unsigned j;
! 	  path_var *dst_pv;
! 	  FOR_EACH_VEC_ELT (dst_pvs, j, dst_pv)
  	    {
! 	      tree dst_rep = dst_pv->m_tree;
! 	      gcc_assert (dst_rep);
! 	      if (dst_pv->m_stack_depth
! 		  >= src_state.m_region_model->get_stack_depth ())
! 		continue;
! 	      tentative_region_model_context ctxt;
! 	      svalue_id src_sid
! 		= src_state.m_region_model->get_rvalue (*dst_pv, &ctxt);
! 	      if (src_sid.null_p () || ctxt.had_errors_p ())
! 		continue;
! 	      state_machine::state_t src_sm_val = src_smap.get_state (src_sid);
! 	      if (dst_sm_val != src_sm_val)
! 		{
! 		  svalue_id dst_origin_sid = (*iter).second.m_origin;
! 		  if (visitor->on_state_change (sm, src_sm_val, dst_sm_val,
! 						dst_rep, dst_origin_sid))
! 		    return true;
! 		}
  	    }
  	}
      }
    return false;
  }
  
  /* Subroutine of diagnostic_manager::build_emission_path.
     Add any events for EEDGE to EMISSION_PATH.  */
  
--- 1320,1452 ----
  	   iter != dst_smap.end ();
  	   ++iter)
  	{
! 	  const svalue *sval = (*iter).first;
  	  state_machine::state_t dst_sm_val = (*iter).second.m_state;
! 	  state_machine::state_t src_sm_val
! 	    = src_smap.get_state (sval, ext_state);
! 	  if (dst_sm_val != src_sm_val)
  	    {
! 	      const svalue *origin_sval = (*iter).second.m_origin;
! 	      if (visitor->on_state_change (sm, src_sm_val, dst_sm_val,
! 					    sval, origin_sval))
! 		return true;
  	    }
  	}
      }
    return false;
  }
  
+ /* An sm_context for adding state_change_event on assignments to NULL,
+    where the default state isn't m_start.  Storing such state in the
+    sm_state_map would lead to bloat of the exploded_graph, so we want
+    to leave it as a default state, and inject state change events here
+    when we have a diagnostic.
+    Find transitions of constants, for handling on_zero_assignment.  */
+ 
+ struct null_assignment_sm_context : public sm_context
+ {
+   null_assignment_sm_context (int sm_idx,
+ 			      const state_machine &sm,
+ 			      const program_state *old_state,
+ 			      const program_state *new_state,
+ 			      const gimple *stmt,
+ 			      const program_point *point,
+ 			      checker_path *emission_path,
+ 			      const extrinsic_state &ext_state)
+   : sm_context (sm_idx, sm), m_old_state (old_state), m_new_state (new_state),
+     m_stmt (stmt), m_point (point), m_emission_path (emission_path),
+     m_ext_state (ext_state)
+   {
+   }
+ 
+   tree get_fndecl_for_call (const gcall */*call*/) FINAL OVERRIDE
+   {
+     return NULL_TREE;
+   }
+ 
+   state_machine::state_t get_state (const gimple *stmt ATTRIBUTE_UNUSED,
+ 				    tree var) FINAL OVERRIDE
+   {
+     const svalue *var_old_sval
+       = m_old_state->m_region_model->get_rvalue (var, NULL);
+     const sm_state_map *old_smap = m_old_state->m_checker_states[m_sm_idx];
+ 
+     state_machine::state_t current
+       = old_smap->get_state (var_old_sval, m_ext_state);
+ 
+     return current;
+   }
+ 
+   void set_next_state (const gimple *stmt,
+ 		       tree var,
+ 		       state_machine::state_t to,
+ 		       tree origin ATTRIBUTE_UNUSED) FINAL OVERRIDE
+   {
+     state_machine::state_t from = get_state (stmt, var);
+     if (from != m_sm.get_start_state ())
+       return;
+ 
+     const svalue *var_new_sval
+       = m_new_state->m_region_model->get_rvalue (var, NULL);
+     const supernode *supernode = m_point->get_supernode ();
+     int stack_depth = m_point->get_stack_depth ();
+ 
+     m_emission_path->add_event (new state_change_event (supernode,
+ 							m_stmt,
+ 							stack_depth,
+ 							m_sm,
+ 							var_new_sval,
+ 							from, to,
+ 							NULL,
+ 							*m_new_state));
+   }
+ 
+   void warn (const supernode *, const gimple *,
+ 	     tree, pending_diagnostic *d) FINAL OVERRIDE
+   {
+     delete d;
+   }
+ 
+   tree get_diagnostic_tree (tree expr) FINAL OVERRIDE
+   {
+     return expr;
+   }
+ 
+   state_machine::state_t get_global_state () const FINAL OVERRIDE
+   {
+     return 0;
+   }
+ 
+   void set_global_state (state_machine::state_t) FINAL OVERRIDE
+   {
+     /* No-op.  */
+   }
+ 
+   void on_custom_transition (custom_transition *) FINAL OVERRIDE
+   {
+   }
+ 
+   tree is_zero_assignment (const gimple *stmt) FINAL OVERRIDE
+   {
+     const gassign *assign_stmt = dyn_cast <const gassign *> (stmt);
+     if (!assign_stmt)
+      return NULL_TREE;
+     if (const svalue *sval
+ 	= m_new_state->m_region_model->get_gassign_result (assign_stmt, NULL))
+       if (tree cst = sval->maybe_get_constant ())
+ 	if (::zerop(cst))
+ 	  return gimple_assign_lhs (assign_stmt);
+     return NULL_TREE;
+   }
+ 
+   const program_state *m_old_state;
+   const program_state *m_new_state;
+   const gimple *m_stmt;
+   const program_point *m_point;
+   checker_path *m_emission_path;
+   const extrinsic_state &m_ext_state;
+ };
+ 
  /* Subroutine of diagnostic_manager::build_emission_path.
     Add any events for EEDGE to EMISSION_PATH.  */
  
*************** diagnostic_manager::add_events_for_eedge
*** 852,858 ****
        | ~~~~~~~~~~~~~^~~~~
        |              |
        |              (3) ...to here        (end_cfg_edge_event).  */
!   state_change_event_creator visitor (eedge, emission_path);
    for_each_state_change (src_state, dst_state, pb.get_ext_state (),
  			 &visitor);
  
--- 1490,1496 ----
        | ~~~~~~~~~~~~~^~~~~
        |              |
        |              (3) ...to here        (end_cfg_edge_event).  */
!   state_change_event_creator visitor (pb, eedge, emission_path);
    for_each_state_change (src_state, dst_state, pb.get_ext_state (),
  			 &visitor);
  
*************** diagnostic_manager::add_events_for_eedge
*** 898,906 ****
--- 1536,1598 ----
  	    (new statement_event (stmt,
  				  dst_point.get_fndecl (),
  				  dst_stack_depth, dst_state));
+ 
+ 	/* Create state change events for assignment to NULL.
+ 	   Iterate through the stmts in dst_enode, adding state change
+ 	   events for them.  */
+ 	if (dst_state.m_region_model)
+ 	  {
+ 	    program_state iter_state (dst_state);
+ 	    program_point iter_point (dst_point);
+ 	    while (1)
+ 	      {
+ 		const gimple *stmt = iter_point.get_stmt ();
+ 		if (const gassign *assign = dyn_cast<const gassign *> (stmt))
+ 		  {
+ 		    const extrinsic_state &ext_state = pb.get_ext_state ();
+ 		    program_state old_state (iter_state);
+ 		    iter_state.m_region_model->on_assignment (assign, NULL);
+ 		    for (unsigned i = 0; i < ext_state.get_num_checkers (); i++)
+ 		      {
+ 			const state_machine &sm = ext_state.get_sm (i);
+ 			null_assignment_sm_context sm_ctxt (i, sm,
+ 							    &old_state,
+ 							    &iter_state,
+ 							    stmt,
+ 							    &iter_point,
+ 							    emission_path,
+ 							    pb.get_ext_state ());
+ 			sm.on_stmt (&sm_ctxt, dst_point.get_supernode (), stmt);
+ 			// TODO: what about phi nodes?
+ 		      }
+ 		  }
+ 		iter_point.next_stmt ();
+ 		if (iter_point.get_kind () == PK_AFTER_SUPERNODE
+ 		    || (dst_node->m_succs.length () > 1
+ 			&& (iter_point
+ 			    == dst_node->m_succs[0]->m_dest->get_point ())))
+ 		  break;
+ 	      }
+ 	  }
        }
        break;
      }
+ 
+   if (pb.get_feasibility_problem ()
+       && &pb.get_feasibility_problem ()->m_eedge == &eedge)
+     {
+       pretty_printer pp;
+       pp_format_decoder (&pp) = default_tree_printer;
+       pp_string (&pp,
+ 		 "this path would have been rejected as infeasible"
+ 		 " at this edge: ");
+       pb.get_feasibility_problem ()->dump_to_pp (&pp);
+       emission_path->add_event (new custom_event
+ 				(dst_point.get_location (),
+ 				 dst_point.get_fndecl (),
+ 				 dst_stack_depth,
+ 				 pp_formatted_text (&pp)));
+     }
  }
  
  /* Return true if EEDGE is a significant edge in the path to the diagnostic
*************** diagnostic_manager::add_events_for_super
*** 987,992 ****
--- 1679,1689 ----
  {
    gcc_assert (eedge.m_sedge);
  
+   /* Give diagnostics an opportunity to override this function.  */
+   pending_diagnostic *pd = pb.get_pending_diagnostic ();
+   if (pd->maybe_add_custom_events_for_superedge (eedge, emission_path))
+     return;
+ 
    /* Don't add events for insignificant edges at verbosity levels below 3.  */
    if (m_verbosity < 3)
      if (!significant_edge_p (pb, eedge))
*************** diagnostic_manager::add_events_for_super
*** 1076,1088 ****
  void
  diagnostic_manager::prune_path (checker_path *path,
  				const state_machine *sm,
! 				tree var,
  				state_machine::state_t state) const
  {
    LOG_FUNC (get_logger ());
    path->maybe_log (get_logger (), "path");
!   prune_for_sm_diagnostic (path, sm, var, state);
    prune_interproc_events (path);
    finish_pruning (path);
    path->maybe_log (get_logger (), "pruned");
  }
--- 1773,1786 ----
  void
  diagnostic_manager::prune_path (checker_path *path,
  				const state_machine *sm,
! 				const svalue *sval,
  				state_machine::state_t state) const
  {
    LOG_FUNC (get_logger ());
    path->maybe_log (get_logger (), "path");
!   prune_for_sm_diagnostic (path, sm, sval, state);
    prune_interproc_events (path);
+   consolidate_conditions (path);
    finish_pruning (path);
    path->maybe_log (get_logger (), "pruned");
  }
*************** can_be_expr_of_interest_p (tree expr)
*** 1125,1135 ****
  void
  diagnostic_manager::prune_for_sm_diagnostic (checker_path *path,
  					     const state_machine *sm,
! 					     tree var,
  					     state_machine::state_t state) const
  {
-   update_for_unsuitable_sm_exprs (&var);
- 
    int idx = path->num_events () - 1;
    while (idx >= 0 && idx < (signed)path->num_events ())
      {
--- 1823,1831 ----
  void
  diagnostic_manager::prune_for_sm_diagnostic (checker_path *path,
  					     const state_machine *sm,
! 					     const svalue *sval,
  					     state_machine::state_t state) const
  {
    int idx = path->num_events () - 1;
    while (idx >= 0 && idx < (signed)path->num_events ())
      {
*************** diagnostic_manager::prune_for_sm_diagnos
*** 1138,1154 ****
  	{
  	  if (sm)
  	    {
! 	      if (var)
! 		log ("considering event %i, with var: %qE, state: %qs",
! 		     idx, var, sm->get_state_name (state));
  	      else
! 		log ("considering event %i, with global state: %qs",
! 		     idx, sm->get_state_name (state));
  	    }
  	  else
  	    log ("considering event %i", idx);
  	}
!       gcc_assert (var == NULL || can_be_expr_of_interest_p (var));
        switch (base_event->m_kind)
  	{
  	default:
--- 1834,1855 ----
  	{
  	  if (sm)
  	    {
! 	      if (sval)
! 		{
! 		  label_text sval_desc = sval->get_desc ();
! 		  log ("considering event %i (%s), with sval: %qs, state: %qs",
! 		       idx, event_kind_to_string (base_event->m_kind),
! 		       sval_desc.m_buffer, state->get_name ());
! 		}
  	      else
! 		log ("considering event %i (%s), with global state: %qs",
! 		     idx, event_kind_to_string (base_event->m_kind),
! 		     state->get_name ());
  	    }
  	  else
  	    log ("considering event %i", idx);
  	}
! 
        switch (base_event->m_kind)
  	{
  	default:
*************** diagnostic_manager::prune_for_sm_diagnos
*** 1168,1186 ****
  
  	case EK_STMT:
  	  {
- 	    /* If this stmt is the origin of "var", update var.  */
- 	    if (var)
- 	      {
- 		statement_event *stmt_event = (statement_event *)base_event;
- 		tree new_var = get_any_origin (stmt_event->m_stmt, var,
- 					       stmt_event->m_dst_state);
- 		if (new_var)
- 		  {
- 		    log ("event %i: switching var of interest from %qE to %qE",
- 			 idx, var, new_var);
- 		    var = new_var;
- 		  }
- 	      }
  	    if (m_verbosity < 4)
  	      {
  		log ("filtering event %i: statement event", idx);
--- 1869,1874 ----
*************** diagnostic_manager::prune_for_sm_diagnos
*** 1200,1237 ****
  	case EK_STATE_CHANGE:
  	  {
  	    state_change_event *state_change = (state_change_event *)base_event;
! 	    /* Use region IDs to compare var with the state_change's m_var,
! 	       bulletproofing against cases where they can't have lvalues by
! 	       using tentative_region_model_context.  */
! 	    tentative_region_model_context ctxt;
! 	    region_id state_var_rid
! 	      = state_change->get_lvalue (state_change->m_var, &ctxt);
! 	    region_id var_rid = state_change->get_lvalue (var, &ctxt);
! 	    if (state_var_rid == var_rid && !ctxt.had_errors_p ())
  	      {
  		if (state_change->m_origin)
  		  {
! 		    log ("event %i: switching var of interest from %qE to %qE",
! 			 idx, var, state_change->m_origin);
! 		    var = state_change->m_origin;
! 		    update_for_unsuitable_sm_exprs (&var);
  		  }
  		log ("event %i: switching state of interest from %qs to %qs",
! 		     idx, sm->get_state_name (state_change->m_to),
! 		     sm->get_state_name (state_change->m_from));
  		state = state_change->m_from;
  	      }
  	    else if (m_verbosity < 4)
  	      {
! 		if (var)
! 		  log ("filtering event %i:"
! 		       " state change to %qE unrelated to %qE",
! 		       idx, state_change->m_var, var);
! 		else
! 		  log ("filtering event %i: state change to %qE",
! 		       idx, state_change->m_var);
! 		if (ctxt.had_errors_p ())
! 		  log ("context had errors");
  		path->delete_event (idx);
  	      }
  	  }
--- 1888,1939 ----
  	case EK_STATE_CHANGE:
  	  {
  	    state_change_event *state_change = (state_change_event *)base_event;
! 	    gcc_assert (state_change->m_dst_state.m_region_model);
! 
! 	    if (state_change->m_sval == sval)
  	      {
  		if (state_change->m_origin)
  		  {
! 		    if (get_logger ())
! 		      {
! 			label_text sval_desc = sval->get_desc ();
! 			label_text origin_sval_desc
! 			  = state_change->m_origin->get_desc ();
! 			log ("event %i:"
! 			     " switching var of interest from %qs to %qs",
! 			     idx, sval_desc.m_buffer,
! 			     origin_sval_desc.m_buffer);
! 		      }
! 		    sval = state_change->m_origin;
  		  }
  		log ("event %i: switching state of interest from %qs to %qs",
! 		     idx, state_change->m_to->get_name (),
! 		     state_change->m_from->get_name ());
  		state = state_change->m_from;
  	      }
  	    else if (m_verbosity < 4)
  	      {
! 		if (get_logger ())
! 		  {
! 		    if (state_change->m_sval)
! 		      {
! 			label_text change_sval_desc
! 			  = state_change->m_sval->get_desc ();
! 			if (sval)
! 			  {
! 			    label_text sval_desc = sval->get_desc ();
! 			    log ("filtering event %i:"
! 				 " state change to %qs unrelated to %qs",
! 				 idx, change_sval_desc.m_buffer,
! 				 sval_desc.m_buffer);
! 			  }
! 			else
! 			  log ("filtering event %i: state change to %qs",
! 			       idx, change_sval_desc.m_buffer);
! 		      }
! 		    else
! 		      log ("filtering event %i: global state change", idx);
! 		  }
  		path->delete_event (idx);
  	      }
  	  }
*************** diagnostic_manager::prune_for_sm_diagnos
*** 1240,1273 ****
  	case EK_START_CFG_EDGE:
  	  {
  	    cfg_edge_event *event = (cfg_edge_event *)base_event;
- 	    const cfg_superedge& cfg_superedge
- 	      = event->get_cfg_superedge ();
- 	    const supernode *dest = event->m_sedge->m_dest;
- 	    /* Do we have an SSA_NAME defined via a phi node in
- 	       the dest CFG node?  */
- 	    if (var && TREE_CODE (var) == SSA_NAME)
- 	      if (SSA_NAME_DEF_STMT (var)->bb == dest->m_bb)
- 		{
- 		  if (gphi *phi
- 		      = dyn_cast <gphi *> (SSA_NAME_DEF_STMT (var)))
- 		    {
- 		      /* Update var based on its phi node.  */
- 		      tree old_var = var;
- 		      var = cfg_superedge.get_phi_arg (phi);
- 		      log ("updating from %qE to %qE based on phi node",
- 			   old_var, var);
- 		      if (get_logger ())
- 			{
- 			  pretty_printer pp;
- 			  pp_gimple_stmt_1 (&pp, phi, 0, (dump_flags_t)0);
- 			  log ("  phi: %s", pp_formatted_text (&pp));
- 			}
- 		      /* If we've chosen a bad exploded_path, then the
- 			 phi arg might be a constant.  Fail gracefully for
- 			 this case.  */
- 		      update_for_unsuitable_sm_exprs (&var);
- 		    }
- 		}
  
  	    /* TODO: is this edge significant to var?
  	       See if var can be in other states in the dest, but not
--- 1942,1947 ----
*************** diagnostic_manager::prune_for_sm_diagnos
*** 1276,1282 ****
  
  	    if (event->should_filter_p (m_verbosity))
  	      {
! 		log ("filtering event %i: CFG edge", idx);
  		path->delete_event (idx);
  		/* Also delete the corresponding EK_END_CFG_EDGE.  */
  		gcc_assert (path->get_checker_event (idx)->m_kind
--- 1950,1956 ----
  
  	    if (event->should_filter_p (m_verbosity))
  	      {
! 		log ("filtering events %i and %i: CFG edge", idx, idx + 1);
  		path->delete_event (idx);
  		/* Also delete the corresponding EK_END_CFG_EDGE.  */
  		gcc_assert (path->get_checker_event (idx)->m_kind
*************** diagnostic_manager::prune_for_sm_diagnos
*** 1296,1340 ****
  	    call_event *event = (call_event *)base_event;
  	    const callgraph_superedge& cg_superedge
  	      = event->get_callgraph_superedge ();
  	    callsite_expr expr;
  	    tree caller_var
! 	      = cg_superedge.map_expr_from_callee_to_caller (var, &expr);
  	    if (caller_var)
  	      {
! 		log ("event %i:"
! 		     " switching var of interest"
! 		     " from %qE in callee to %qE in caller",
! 		     idx, var, caller_var);
! 		var = caller_var;
  		if (expr.param_p ())
! 		  event->record_critical_state (var, state);
! 		update_for_unsuitable_sm_exprs (&var);
  	      }
  	  }
  	  break;
  
  	case EK_RETURN_EDGE:
- 	  // TODO: potentially update var/state based on return value,
- 	  // args etc
  	  {
! 	    if (var)
  	      {
  		return_event *event = (return_event *)base_event;
  		const callgraph_superedge& cg_superedge
  		  = event->get_callgraph_superedge ();
  		callsite_expr expr;
  		tree callee_var
! 		  = cg_superedge.map_expr_from_caller_to_callee (var, &expr);
  		if (callee_var)
  		  {
! 		    log ("event %i:"
! 			 " switching var of interest"
! 			 " from %qE in caller to %qE in callee",
! 			 idx, var, callee_var);
! 		    var = callee_var;
  		    if (expr.return_value_p ())
! 		      event->record_critical_state (var, state);
! 		    update_for_unsuitable_sm_exprs (&var);
  		  }
  	      }
  	  }
--- 1970,2027 ----
  	    call_event *event = (call_event *)base_event;
  	    const callgraph_superedge& cg_superedge
  	      = event->get_callgraph_superedge ();
+ 	    const region_model *callee_model
+ 	      = event->m_eedge.m_dest->get_state ().m_region_model;
+ 	    tree callee_var = callee_model->get_representative_tree (sval);
+ 	    /* We could just use caller_model->get_representative_tree (sval);
+ 	       to get the caller_var, but for now use
+ 	       map_expr_from_callee_to_caller so as to only record critical
+ 	       state for parms and the like.  */
  	    callsite_expr expr;
  	    tree caller_var
! 	      = cg_superedge.map_expr_from_callee_to_caller (callee_var, &expr);
  	    if (caller_var)
  	      {
! 		if (get_logger ())
! 		  {
! 		    label_text sval_desc = sval->get_desc ();
! 		    log ("event %i:"
! 			 " recording critical state for %qs at call"
! 			 " from %qE in callee to %qE in caller",
! 			 idx, sval_desc.m_buffer, callee_var, caller_var);
! 		  }
  		if (expr.param_p ())
! 		  event->record_critical_state (caller_var, state);
  	      }
  	  }
  	  break;
  
  	case EK_RETURN_EDGE:
  	  {
! 	    if (sval)
  	      {
  		return_event *event = (return_event *)base_event;
  		const callgraph_superedge& cg_superedge
  		  = event->get_callgraph_superedge ();
+ 		const region_model *caller_model
+ 		  = event->m_eedge.m_dest->get_state ().m_region_model;
+ 		tree caller_var = caller_model->get_representative_tree (sval);
  		callsite_expr expr;
  		tree callee_var
! 		  = cg_superedge.map_expr_from_caller_to_callee (caller_var,
! 								 &expr);
  		if (callee_var)
  		  {
! 		    if (get_logger ())
! 		      {
! 			label_text sval_desc = sval->get_desc ();
! 			log ("event %i:"
! 			     " recording critical state for %qs at return"
! 			     " from %qE in caller to %qE in callee",
! 			     idx, sval_desc.m_buffer, callee_var, callee_var);
! 		      }
  		    if (expr.return_value_p ())
! 		      event->record_critical_state (callee_var, state);
  		  }
  	      }
  	  }
*************** diagnostic_manager::prune_interproc_even
*** 1394,1400 ****
    do
      {
        changed = false;
!       int idx = path->num_events () - 1;
        while (idx >= 0)
  	{
  	  /* Prune [..., call, function-entry, return, ...] triples.  */
--- 2081,2087 ----
    do
      {
        changed = false;
!       int idx = (signed)path->num_events () - 1;
        while (idx >= 0)
  	{
  	  /* Prune [..., call, function-entry, return, ...] triples.  */
*************** diagnostic_manager::prune_interproc_even
*** 1449,1454 ****
--- 2136,2288 ----
    while (changed);
  }
  
+ /* Return true iff event IDX within PATH is on the same line as REF_EXP_LOC.  */
+ 
+ static bool
+ same_line_as_p (const expanded_location &ref_exp_loc,
+ 		checker_path *path, unsigned idx)
+ {
+   const checker_event *ev = path->get_checker_event (idx);
+   expanded_location idx_exp_loc = expand_location (ev->get_location ());
+   gcc_assert (ref_exp_loc.file);
+   if (idx_exp_loc.file == NULL)
+     return false;
+   if (strcmp (ref_exp_loc.file, idx_exp_loc.file))
+     return false;
+   return ref_exp_loc.line == idx_exp_loc.line;
+ }
+ 
+ /* This path-readability optimization reduces the verbosity of compound
+    conditional statements (without needing to reconstruct the AST, which
+    has already been lost).
+ 
+    For example, it converts:
+ 
+     |   61 |   if (cp[0] != '\0' && cp[0] != '#')
+     |      |      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     |      |      |              |    |
+     |      |      |              |    (6) ...to here
+     |      |      |              (7) following ‘true’ branch...
+     |      |      (5) following ‘true’ branch...
+     |   62 |     {
+     |   63 |       alias = cp++;
+     |      |               ~~~~
+     |      |                 |
+     |      |                 (8) ...to here
+ 
+    into:
+ 
+     |   61 |   if (cp[0] != '\0' && cp[0] != '#')
+     |      |      ~
+     |      |      |
+     |      |      (5) following ‘true’ branch...
+     |   62 |     {
+     |   63 |       alias = cp++;
+     |      |               ~~~~
+     |      |                 |
+     |      |                 (6) ...to here
+ 
+    by combining events 5-8 into new events 5-6.
+ 
+    Find runs of consecutive (start_cfg_edge_event, end_cfg_edge_event) pairs
+    in which all events apart from the final end_cfg_edge_event are on the same
+    line, and for which either all the CFG edges are TRUE edges, or all are
+    FALSE edges.
+ 
+    Consolidate each such run into a
+      (start_consolidated_cfg_edges_event, end_consolidated_cfg_edges_event)
+    pair.  */
+ 
+ void
+ diagnostic_manager::consolidate_conditions (checker_path *path) const
+ {
+   /* Don't simplify edges if we're debugging them.  */
+   if (flag_analyzer_verbose_edges)
+     return;
+ 
+   for (int start_idx = 0;
+        start_idx < (signed)path->num_events () - 1;
+        start_idx++)
+     {
+       if (path->cfg_edge_pair_at_p (start_idx))
+ 	{
+ 	  const checker_event *old_start_ev
+ 	    = path->get_checker_event (start_idx);
+ 	  expanded_location start_exp_loc
+ 	    = expand_location (old_start_ev->get_location ());
+ 	  if (start_exp_loc.file == NULL)
+ 	    continue;
+ 	  if (!same_line_as_p (start_exp_loc, path, start_idx + 1))
+ 	    continue;
+ 
+ 	  /* Are we looking for a run of all TRUE edges, or all FALSE edges?  */
+ 	  gcc_assert (old_start_ev->m_kind == EK_START_CFG_EDGE);
+ 	  const start_cfg_edge_event *old_start_cfg_ev
+ 	    = (const start_cfg_edge_event *)old_start_ev;
+ 	  const cfg_superedge& first_cfg_sedge
+ 	    = old_start_cfg_ev->get_cfg_superedge ();
+ 	  bool edge_sense;
+ 	  if (first_cfg_sedge.true_value_p ())
+ 	    edge_sense = true;
+ 	  else if (first_cfg_sedge.false_value_p ())
+ 	    edge_sense = false;
+ 	  else
+ 	    continue;
+ 
+ 	  /* Find a run of CFG start/end event pairs from
+ 	       [start_idx, next_idx)
+ 	     where all apart from the final event are on the same line,
+ 	     and all are either TRUE or FALSE edges, matching the initial.  */
+ 	  int next_idx = start_idx + 2;
+ 	  while (path->cfg_edge_pair_at_p (next_idx)
+ 		 && same_line_as_p (start_exp_loc, path, next_idx))
+ 	    {
+ 	      const checker_event *iter_ev
+ 		= path->get_checker_event (next_idx);
+ 	      gcc_assert (iter_ev->m_kind == EK_START_CFG_EDGE);
+ 	      const start_cfg_edge_event *iter_cfg_ev
+ 		= (const start_cfg_edge_event *)iter_ev;
+ 	      const cfg_superedge& iter_cfg_sedge
+ 		= iter_cfg_ev->get_cfg_superedge ();
+ 	      if (edge_sense)
+ 		{
+ 		  if (!iter_cfg_sedge.true_value_p ())
+ 		    break;
+ 		}
+ 	      else
+ 		{
+ 		  if (!iter_cfg_sedge.false_value_p ())
+ 		    break;
+ 		}
+ 	      next_idx += 2;
+ 	    }
+ 
+ 	  /* If we have more than one pair in the run, consolidate.  */
+ 	  if (next_idx > start_idx + 2)
+ 	    {
+ 	      const checker_event *old_end_ev
+ 		= path->get_checker_event (next_idx - 1);
+ 	      log ("consolidating CFG edge events %i-%i into %i-%i",
+ 		   start_idx, next_idx - 1, start_idx, start_idx +1);
+ 	      start_consolidated_cfg_edges_event *new_start_ev
+ 		= new start_consolidated_cfg_edges_event
+ 		(old_start_ev->get_location (),
+ 		 old_start_ev->get_fndecl (),
+ 		 old_start_ev->get_stack_depth (),
+ 		 edge_sense);
+ 	      checker_event *new_end_ev
+ 		= new end_consolidated_cfg_edges_event
+ 		(old_end_ev->get_location (),
+ 		 old_end_ev->get_fndecl (),
+ 		 old_end_ev->get_stack_depth ());
+ 	      path->replace_event (start_idx, new_start_ev);
+ 	      path->replace_event (start_idx + 1, new_end_ev);
+ 	      path->delete_events (start_idx + 2, next_idx - (start_idx + 2));
+ 	    }
+ 	}
+     }
+ }
+ 
  /* Final pass of diagnostic_manager::prune_path.
  
     If all we're left with is in one function, then filter function entry
diff -Nrcpad gcc-10.3.0/gcc/analyzer/diagnostic-manager.h gcc-11.1.0/gcc/analyzer/diagnostic-manager.h
*** gcc-10.3.0/gcc/analyzer/diagnostic-manager.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/diagnostic-manager.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Classes for saving, deduplicating, and emitting analyzer diagnostics.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for saving, deduplicating, and emitting analyzer diagnostics.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 23,70 ****
  
  namespace ana {
  
  /* A to-be-emitted diagnostic stored within diagnostic_manager.  */
  
  class saved_diagnostic
  {
  public:
-   enum status
-   {
-    STATUS_NEW,
-    STATUS_INFEASIBLE_PATH,
-    STATUS_FEASIBLE_PATH
-   };
- 
    saved_diagnostic (const state_machine *sm,
  		    const exploded_node *enode,
  		    const supernode *snode, const gimple *stmt,
  		    stmt_finder *stmt_finder,
! 		    tree var, state_machine::state_t state,
! 		    pending_diagnostic *d);
    ~saved_diagnostic ();
  
    bool operator== (const saved_diagnostic &other) const;
  
!   void set_feasible ()
!   {
!     gcc_assert (m_status == STATUS_NEW);
!     m_status = STATUS_FEASIBLE_PATH;
!   }
!   void set_infeasible (feasibility_problem *p)
!   {
!     gcc_assert (m_status == STATUS_NEW);
!     m_status = STATUS_INFEASIBLE_PATH;
!     m_problem = p; // take ownership
!   }
    const feasibility_problem *get_feasibility_problem () const
    {
      return m_problem;
    }
  
!   enum status get_status () const { return m_status; }
  
!   void set_epath_length (unsigned length) { m_epath_length = length; }
!   unsigned get_epath_length () const { return m_epath_length; }
  
    //private:
    const state_machine *m_sm;
--- 23,62 ----
  
  namespace ana {
  
+ class epath_finder;
+ 
  /* A to-be-emitted diagnostic stored within diagnostic_manager.  */
  
  class saved_diagnostic
  {
  public:
    saved_diagnostic (const state_machine *sm,
  		    const exploded_node *enode,
  		    const supernode *snode, const gimple *stmt,
  		    stmt_finder *stmt_finder,
! 		    tree var, const svalue *sval,
! 		    state_machine::state_t state,
! 		    pending_diagnostic *d,
! 		    unsigned idx);
    ~saved_diagnostic ();
  
    bool operator== (const saved_diagnostic &other) const;
  
!   json::object *to_json () const;
! 
    const feasibility_problem *get_feasibility_problem () const
    {
      return m_problem;
    }
  
!   bool calc_best_epath (epath_finder *pf);
!   const exploded_path *get_best_epath () const { return m_best_epath; }
!   unsigned get_epath_length () const;
  
!   void add_duplicate (saved_diagnostic *other);
!   unsigned get_num_dupes () const { return m_duplicates.length (); }
! 
!   unsigned get_index () const { return m_idx; }
  
    //private:
    const state_machine *m_sm;
*************** public:
*** 73,88 ****
    const gimple *m_stmt;
    stmt_finder *m_stmt_finder;
    tree m_var;
    state_machine::state_t m_state;
!   pending_diagnostic *m_d;
!   exploded_edge *m_trailing_eedge;
  
  private:
    DISABLE_COPY_AND_ASSIGN (saved_diagnostic);
  
!   enum status m_status;
!   unsigned m_epath_length;
!   feasibility_problem *m_problem;
  };
  
  class path_builder;
--- 65,83 ----
    const gimple *m_stmt;
    stmt_finder *m_stmt_finder;
    tree m_var;
+   const svalue *m_sval;
    state_machine::state_t m_state;
!   pending_diagnostic *m_d; // owned
!   const exploded_edge *m_trailing_eedge;
  
  private:
    DISABLE_COPY_AND_ASSIGN (saved_diagnostic);
  
!   unsigned m_idx;
!   exploded_path *m_best_epath; // owned
!   feasibility_problem *m_problem; // owned
! 
!   auto_vec<const saved_diagnostic *> m_duplicates;
  };
  
  class path_builder;
*************** class path_builder;
*** 99,114 ****
  class diagnostic_manager : public log_user
  {
  public:
!   diagnostic_manager (logger *logger, int verbosity);
  
    void add_diagnostic (const state_machine *sm,
! 		       const exploded_node *enode,
  		       const supernode *snode, const gimple *stmt,
  		       stmt_finder *finder,
! 		       tree var, state_machine::state_t state,
  		       pending_diagnostic *d);
  
!   void add_diagnostic (const exploded_node *enode,
  		       const supernode *snode, const gimple *stmt,
  		       stmt_finder *finder,
  		       pending_diagnostic *d);
--- 94,115 ----
  class diagnostic_manager : public log_user
  {
  public:
!   diagnostic_manager (logger *logger, engine *eng, int verbosity);
! 
!   engine *get_engine () const { return m_eng; }
! 
!   json::object *to_json () const;
  
    void add_diagnostic (const state_machine *sm,
! 		       exploded_node *enode,
  		       const supernode *snode, const gimple *stmt,
  		       stmt_finder *finder,
! 		       tree var,
! 		       const svalue *sval,
! 		       state_machine::state_t state,
  		       pending_diagnostic *d);
  
!   void add_diagnostic (exploded_node *enode,
  		       const supernode *snode, const gimple *stmt,
  		       stmt_finder *finder,
  		       pending_diagnostic *d);
*************** public:
*** 116,125 ****
    void emit_saved_diagnostics (const exploded_graph &eg);
  
    void emit_saved_diagnostic (const exploded_graph &eg,
! 			      const saved_diagnostic &sd,
! 			      const exploded_path &epath,
! 			      const gimple *stmt,
! 			      int num_dupes);
  
    unsigned get_num_diagnostics () const
    {
--- 117,123 ----
    void emit_saved_diagnostics (const exploded_graph &eg);
  
    void emit_saved_diagnostic (const exploded_graph &eg,
! 			      const saved_diagnostic &sd);
  
    unsigned get_num_diagnostics () const
    {
*************** private:
*** 152,167 ****
  
    void prune_path (checker_path *path,
  		   const state_machine *sm,
! 		   tree var, state_machine::state_t state) const;
  
    void prune_for_sm_diagnostic (checker_path *path,
  				const state_machine *sm,
  				tree var,
  				state_machine::state_t state) const;
    void update_for_unsuitable_sm_exprs (tree *expr) const;
    void prune_interproc_events (checker_path *path) const;
    void finish_pruning (checker_path *path) const;
  
    auto_delete_vec<saved_diagnostic> m_saved_diagnostics;
    const int m_verbosity;
  };
--- 150,172 ----
  
    void prune_path (checker_path *path,
  		   const state_machine *sm,
! 		   const svalue *sval,
! 		   state_machine::state_t state) const;
  
    void prune_for_sm_diagnostic (checker_path *path,
  				const state_machine *sm,
  				tree var,
  				state_machine::state_t state) const;
+   void prune_for_sm_diagnostic (checker_path *path,
+ 				const state_machine *sm,
+ 				const svalue *sval,
+ 				state_machine::state_t state) const;
    void update_for_unsuitable_sm_exprs (tree *expr) const;
    void prune_interproc_events (checker_path *path) const;
+   void consolidate_conditions (checker_path *path) const;
    void finish_pruning (checker_path *path) const;
  
+   engine *m_eng;
    auto_delete_vec<saved_diagnostic> m_saved_diagnostics;
    const int m_verbosity;
  };
diff -Nrcpad gcc-10.3.0/gcc/analyzer/engine.cc gcc-11.1.0/gcc/analyzer/engine.cc
*** gcc-10.3.0/gcc/analyzer/engine.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/engine.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* The analysis "engine".
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* The analysis "engine".
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 37,44 ****
--- 37,48 ----
  #include "tristate.h"
  #include "ordered-hash-map.h"
  #include "selftest.h"
+ #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "analyzer/constraint-manager.h"
  #include "analyzer/sm.h"
*************** along with GCC; see the file COPYING3.
*** 52,65 ****
  #include "cgraph.h"
  #include "digraph.h"
  #include "analyzer/supergraph.h"
- #include "analyzer/call-string.h"
- #include "analyzer/program-point.h"
  #include "analyzer/program-state.h"
  #include "analyzer/exploded-graph.h"
  #include "analyzer/analysis-plan.h"
  #include "analyzer/checker-path.h"
  #include "analyzer/state-purge.h"
  #include "analyzer/bar-chart.h"
  
  /* For an overview, see gcc/doc/analyzer.texi.  */
  
--- 56,69 ----
  #include "cgraph.h"
  #include "digraph.h"
  #include "analyzer/supergraph.h"
  #include "analyzer/program-state.h"
  #include "analyzer/exploded-graph.h"
  #include "analyzer/analysis-plan.h"
  #include "analyzer/checker-path.h"
  #include "analyzer/state-purge.h"
  #include "analyzer/bar-chart.h"
+ #include <zlib.h>
+ #include "plugin.h"
  
  /* For an overview, see gcc/doc/analyzer.texi.  */
  
*************** along with GCC; see the file COPYING3.
*** 67,107 ****
  
  namespace ana {
  
- static int readability_comparator (const void *p1, const void *p2);
- 
  /* class impl_region_model_context : public region_model_context.  */
  
  impl_region_model_context::
  impl_region_model_context (exploded_graph &eg,
! 			   const exploded_node *enode_for_diag,
  			   const program_state *old_state,
  			   program_state *new_state,
! 			   state_change *change,
  			   const gimple *stmt,
  			   stmt_finder *stmt_finder)
  : m_eg (&eg), m_logger (eg.get_logger ()),
    m_enode_for_diag (enode_for_diag),
    m_old_state (old_state),
    m_new_state (new_state),
-   m_change (change),
    m_stmt (stmt),
    m_stmt_finder (stmt_finder),
!   m_ext_state (eg.get_ext_state ())
  {
  }
  
  impl_region_model_context::
  impl_region_model_context (program_state *state,
- 			   state_change *change,
  			   const extrinsic_state &ext_state,
  			   logger *logger)
  : m_eg (NULL), m_logger (logger), m_enode_for_diag (NULL),
    m_old_state (NULL),
    m_new_state (state),
-   m_change (change),
    m_stmt (NULL),
    m_stmt_finder (NULL),
!   m_ext_state (ext_state)
  {
  }
  
--- 71,109 ----
  
  namespace ana {
  
  /* class impl_region_model_context : public region_model_context.  */
  
  impl_region_model_context::
  impl_region_model_context (exploded_graph &eg,
! 			   exploded_node *enode_for_diag,
  			   const program_state *old_state,
  			   program_state *new_state,
! 			   uncertainty_t *uncertainty,
  			   const gimple *stmt,
  			   stmt_finder *stmt_finder)
  : m_eg (&eg), m_logger (eg.get_logger ()),
    m_enode_for_diag (enode_for_diag),
    m_old_state (old_state),
    m_new_state (new_state),
    m_stmt (stmt),
    m_stmt_finder (stmt_finder),
!   m_ext_state (eg.get_ext_state ()),
!   m_uncertainty (uncertainty)
  {
  }
  
  impl_region_model_context::
  impl_region_model_context (program_state *state,
  			   const extrinsic_state &ext_state,
+ 			   uncertainty_t *uncertainty,
  			   logger *logger)
  : m_eg (NULL), m_logger (logger), m_enode_for_diag (NULL),
    m_old_state (NULL),
    m_new_state (state),
    m_stmt (NULL),
    m_stmt_finder (NULL),
!   m_ext_state (ext_state),
!   m_uncertainty (uncertainty)
  {
  }
  
*************** impl_region_model_context::warn (pending
*** 116,173 ****
  }
  
  void
! impl_region_model_context::remap_svalue_ids (const svalue_id_map &map)
  {
!   m_new_state->remap_svalue_ids (map);
!   if (m_change)
!     m_change->remap_svalue_ids (map);
  }
  
! int
! impl_region_model_context::on_svalue_purge (svalue_id first_unused_sid,
! 					    const svalue_id_map &map)
  {
-   int total = 0;
    int sm_idx;
    sm_state_map *smap;
    FOR_EACH_VEC_ELT (m_new_state->m_checker_states, sm_idx, smap)
!     {
!       const state_machine &sm = m_ext_state.get_sm (sm_idx);
!       total += smap->on_svalue_purge (sm, sm_idx, first_unused_sid,
! 				      map, this);
!     }
!   if (m_change)
!     total += m_change->on_svalue_purge (first_unused_sid);
!   return total;
  }
  
  void
! impl_region_model_context::on_unknown_change (svalue_id sid)
  {
    int sm_idx;
    sm_state_map *smap;
    FOR_EACH_VEC_ELT (m_new_state->m_checker_states, sm_idx, smap)
!     smap->on_unknown_change (sid);
  }
  
  /* class setjmp_svalue : public svalue.  */
  
! /* Compare the fields of this setjmp_svalue with OTHER, returning true
!    if they are equal.
!    For use by svalue::operator==.  */
  
! bool
! setjmp_svalue::compare_fields (const setjmp_svalue &other) const
  {
!   return m_setjmp_record == other.m_setjmp_record;
  }
  
! /* Implementation of svalue::add_to_hash vfunc for setjmp_svalue.  */
  
  void
! setjmp_svalue::add_to_hash (inchash::hash &hstate) const
  {
!   hstate.add_int (m_setjmp_record.m_enode->m_index);
  }
  
  /* Get the index of the stored exploded_node.  */
--- 118,195 ----
  }
  
  void
! impl_region_model_context::on_svalue_leak (const svalue *sval)
! 
  {
!   int sm_idx;
!   sm_state_map *smap;
!   FOR_EACH_VEC_ELT (m_new_state->m_checker_states, sm_idx, smap)
!     smap->on_svalue_leak (sval, this);
  }
  
! void
! impl_region_model_context::
! on_liveness_change (const svalue_set &live_svalues,
! 		    const region_model *model)
  {
    int sm_idx;
    sm_state_map *smap;
    FOR_EACH_VEC_ELT (m_new_state->m_checker_states, sm_idx, smap)
!     smap->on_liveness_change (live_svalues, model, this);
  }
  
  void
! impl_region_model_context::on_unknown_change (const svalue *sval,
! 					      bool is_mutable)
  {
    int sm_idx;
    sm_state_map *smap;
    FOR_EACH_VEC_ELT (m_new_state->m_checker_states, sm_idx, smap)
!     smap->on_unknown_change (sval, is_mutable, m_ext_state);
! }
! 
! void
! impl_region_model_context::on_escaped_function (tree fndecl)
! {
!   m_eg->on_escaped_function (fndecl);
! }
! 
! uncertainty_t *
! impl_region_model_context::get_uncertainty ()
! {
!   return m_uncertainty;
! }
! 
! /* struct setjmp_record.  */
! 
! int
! setjmp_record::cmp (const setjmp_record &rec1, const setjmp_record &rec2)
! {
!   if (int cmp_enode = rec1.m_enode->m_index - rec2.m_enode->m_index)
!     return cmp_enode;
!   gcc_assert (&rec1 == &rec2);
!   return 0;
  }
  
  /* class setjmp_svalue : public svalue.  */
  
! /* Implementation of svalue::accept vfunc for setjmp_svalue.  */
  
! void
! setjmp_svalue::accept (visitor *v) const
  {
!   v->visit_setjmp_svalue (this);
  }
  
! /* Implementation of svalue::dump_to_pp vfunc for setjmp_svalue.  */
  
  void
! setjmp_svalue::dump_to_pp (pretty_printer *pp, bool simple) const
  {
!   if (simple)
!     pp_printf (pp, "SETJMP(EN: %i)", get_enode_index ());
!   else
!     pp_printf (pp, "setjmp_svalue(EN%i)", get_enode_index ());
  }
  
  /* Get the index of the stored exploded_node.  */
*************** setjmp_svalue::get_enode_index () const
*** 178,193 ****
    return m_setjmp_record.m_enode->m_index;
  }
  
- /* Implementation of svalue::print_details vfunc for setjmp_svalue.  */
- 
- void
- setjmp_svalue::print_details (const region_model &model ATTRIBUTE_UNUSED,
- 			      svalue_id this_sid ATTRIBUTE_UNUSED,
- 			      pretty_printer *pp) const
- {
-   pp_printf (pp, "setjmp: EN: %i", get_enode_index ());
- }
- 
  /* Concrete implementation of sm_context, wiring it up to the rest of this
     file.  */
  
--- 200,205 ----
*************** public:
*** 197,206 ****
    impl_sm_context (exploded_graph &eg,
  		   int sm_idx,
  		   const state_machine &sm,
! 		   const exploded_node *enode_for_diag,
  		   const program_state *old_state,
  		   program_state *new_state,
- 		   state_change *change,
  		   const sm_state_map *old_smap,
  		   sm_state_map *new_smap,
  		   stmt_finder *stmt_finder = NULL)
--- 209,217 ----
    impl_sm_context (exploded_graph &eg,
  		   int sm_idx,
  		   const state_machine &sm,
! 		   exploded_node *enode_for_diag,
  		   const program_state *old_state,
  		   program_state *new_state,
  		   const sm_state_map *old_smap,
  		   sm_state_map *new_smap,
  		   stmt_finder *stmt_finder = NULL)
*************** public:
*** 208,214 ****
      m_logger (eg.get_logger ()),
      m_eg (eg), m_enode_for_diag (enode_for_diag),
      m_old_state (old_state), m_new_state (new_state),
-     m_change (change),
      m_old_smap (old_smap), m_new_smap (new_smap),
      m_stmt_finder (stmt_finder)
    {
--- 219,224 ----
*************** public:
*** 220,296 ****
    {
      impl_region_model_context old_ctxt
        (m_eg, m_enode_for_diag, NULL, NULL/*m_enode->get_state ()*/,
!        m_change, call);
      region_model *model = m_new_state->m_region_model;
      return model->get_fndecl_for_call (call, &old_ctxt);
    }
  
!   void on_transition (const supernode *node  ATTRIBUTE_UNUSED,
! 		      const gimple *stmt  ATTRIBUTE_UNUSED,
! 		      tree var,
! 		      state_machine::state_t from,
! 		      state_machine::state_t to,
! 		      tree origin) FINAL OVERRIDE
    {
      logger * const logger = get_logger ();
      LOG_FUNC (logger);
      impl_region_model_context old_ctxt
        (m_eg, m_enode_for_diag, NULL, NULL/*m_enode->get_state ()*/,
!        m_change, stmt);
!     svalue_id var_old_sid
        = m_old_state->m_region_model->get_rvalue (var, &old_ctxt);
  
      impl_region_model_context new_ctxt (m_eg, m_enode_for_diag,
  					m_old_state, m_new_state,
! 					m_change, NULL);
!     svalue_id var_new_sid
        = m_new_state->m_region_model->get_rvalue (var, &new_ctxt);
!     svalue_id origin_new_sid
        = m_new_state->m_region_model->get_rvalue (origin, &new_ctxt);
  
!     state_machine::state_t current = m_old_smap->get_state (var_old_sid);
!     if (current == from)
!       {
! 	if (logger)
! 	  logger->log ("%s: state transition of %qE: %s -> %s",
! 		       m_sm.get_name (),
! 		       var,
! 		       m_sm.get_state_name (from),
! 		       m_sm.get_state_name (to));
! 	m_new_smap->set_state (m_new_state->m_region_model, var_new_sid,
! 			       to, origin_new_sid);
! 	if (m_change)
! 	  m_change->add_sm_change (m_sm_idx, var_new_sid, from, to);
!       }
    }
  
!   void warn_for_state (const supernode *snode, const gimple *stmt,
! 		       tree var, state_machine::state_t state,
! 		       pending_diagnostic *d) FINAL OVERRIDE
    {
      LOG_FUNC (get_logger ());
      gcc_assert (d); // take ownership
- 
      impl_region_model_context old_ctxt
!       (m_eg, m_enode_for_diag, m_old_state, m_new_state, m_change, NULL);
!     state_machine::state_t current;
!     if (var)
!       {
! 	svalue_id var_old_sid
! 	  = m_old_state->m_region_model->get_rvalue (var, &old_ctxt);
! 	current = m_old_smap->get_state (var_old_sid);
!       }
!     else
!       current = m_old_smap->get_global_state ();
  
!     if (state == current)
!       {
! 	m_eg.get_diagnostic_manager ().add_diagnostic
! 	  (&m_sm, m_enode_for_diag, snode, stmt, m_stmt_finder,
! 	   var, state, d);
!       }
!     else
!       delete d;
    }
  
    /* Hook for picking more readable trees for SSA names of temporaries,
--- 230,307 ----
    {
      impl_region_model_context old_ctxt
        (m_eg, m_enode_for_diag, NULL, NULL/*m_enode->get_state ()*/,
!        NULL, call);
      region_model *model = m_new_state->m_region_model;
      return model->get_fndecl_for_call (call, &old_ctxt);
    }
  
!   state_machine::state_t get_state (const gimple *stmt,
! 				    tree var)
    {
      logger * const logger = get_logger ();
      LOG_FUNC (logger);
      impl_region_model_context old_ctxt
        (m_eg, m_enode_for_diag, NULL, NULL/*m_enode->get_state ()*/,
!        NULL, stmt);
!     const svalue *var_old_sval
!       = m_old_state->m_region_model->get_rvalue (var, &old_ctxt);
! 
!     state_machine::state_t current
!       = m_old_smap->get_state (var_old_sval, m_eg.get_ext_state ());
!     return current;
!   }
! 
!   void set_next_state (const gimple *stmt,
! 		       tree var,
! 		       state_machine::state_t to,
! 		       tree origin)
!   {
!     logger * const logger = get_logger ();
!     LOG_FUNC (logger);
!     impl_region_model_context old_ctxt
!       (m_eg, m_enode_for_diag, NULL, NULL/*m_enode->get_state ()*/,
!        NULL, stmt);
!     const svalue *var_old_sval
        = m_old_state->m_region_model->get_rvalue (var, &old_ctxt);
  
      impl_region_model_context new_ctxt (m_eg, m_enode_for_diag,
  					m_old_state, m_new_state,
! 					NULL,
! 					stmt);
!     const svalue *var_new_sval
        = m_new_state->m_region_model->get_rvalue (var, &new_ctxt);
!     const svalue *origin_new_sval
        = m_new_state->m_region_model->get_rvalue (origin, &new_ctxt);
  
!     state_machine::state_t current
!       = m_old_smap->get_state (var_old_sval, m_eg.get_ext_state ());
!     if (logger)
!       logger->log ("%s: state transition of %qE: %s -> %s",
! 		   m_sm.get_name (),
! 		   var,
! 		   current->get_name (),
! 		   to->get_name ());
!     m_new_smap->set_state (m_new_state->m_region_model, var_new_sval,
! 			   to, origin_new_sval, m_eg.get_ext_state ());
    }
  
!   void warn (const supernode *snode, const gimple *stmt,
! 	     tree var, pending_diagnostic *d) FINAL OVERRIDE
    {
      LOG_FUNC (get_logger ());
      gcc_assert (d); // take ownership
      impl_region_model_context old_ctxt
!       (m_eg, m_enode_for_diag, m_old_state, m_new_state, NULL, NULL);
  
!     const svalue *var_old_sval
!       = m_old_state->m_region_model->get_rvalue (var, &old_ctxt);
!     state_machine::state_t current
!       = (var
! 	 ? m_old_smap->get_state (var_old_sval, m_eg.get_ext_state ())
! 	 : m_old_smap->get_global_state ());
!     m_eg.get_diagnostic_manager ().add_diagnostic
!       (&m_sm, m_enode_for_diag, snode, stmt, m_stmt_finder,
!        var, var_old_sval, current, d);
    }
  
    /* Hook for picking more readable trees for SSA names of temporaries,
*************** public:
*** 299,305 ****
       we can print:
         "double-free of 'inbuf.data'".  */
  
!   tree get_readable_tree (tree expr) FINAL OVERRIDE
    {
      /* Only for SSA_NAMEs of temporaries; otherwise, return EXPR, as it's
         likely to be the least surprising tree to report.  */
--- 310,316 ----
       we can print:
         "double-free of 'inbuf.data'".  */
  
!   tree get_diagnostic_tree (tree expr) FINAL OVERRIDE
    {
      /* Only for SSA_NAMEs of temporaries; otherwise, return EXPR, as it's
         likely to be the least surprising tree to report.  */
*************** public:
*** 309,324 ****
        return expr;
  
      gcc_assert (m_new_state);
!     svalue_id sid = m_new_state->m_region_model->get_rvalue (expr, NULL);
      /* Find trees for all regions storing the value.  */
!     auto_vec<path_var> pvs;
!     m_new_state->m_region_model->get_path_vars_for_svalue (sid, &pvs);
!     if (pvs.length () < 1)
        return expr;
-     /* Pick the "best" such tree.  */
-     // TODO: should we also consider (and consolidate) equiv classes?
-     pvs.qsort (readability_comparator);
-     return pvs[0].m_tree;
    }
  
    state_machine::state_t get_global_state () const FINAL OVERRIDE
--- 320,331 ----
        return expr;
  
      gcc_assert (m_new_state);
!     const svalue *sval = m_new_state->m_region_model->get_rvalue (expr, NULL);
      /* Find trees for all regions storing the value.  */
!     if (tree t = m_new_state->m_region_model->get_representative_tree (sval))
!       return t;
!     else
        return expr;
    }
  
    state_machine::state_t get_global_state () const FINAL OVERRIDE
*************** public:
*** 338,349 ****
  				 m_sm_idx);
    }
  
    log_user m_logger;
    exploded_graph &m_eg;
!   const exploded_node *m_enode_for_diag;
    const program_state *m_old_state;
    program_state *m_new_state;
-   state_change *m_change;
    const sm_state_map *m_old_smap;
    sm_state_map *m_new_smap;
    stmt_finder *m_stmt_finder;
--- 345,371 ----
  				 m_sm_idx);
    }
  
+   tree is_zero_assignment (const gimple *stmt) FINAL OVERRIDE
+   {
+     const gassign *assign_stmt = dyn_cast <const gassign *> (stmt);
+     if (!assign_stmt)
+      return NULL_TREE;
+     impl_region_model_context old_ctxt
+       (m_eg, m_enode_for_diag, m_old_state, m_new_state, NULL, stmt);
+     if (const svalue *sval
+ 	= m_new_state->m_region_model->get_gassign_result (assign_stmt,
+ 							    &old_ctxt))
+       if (tree cst = sval->maybe_get_constant ())
+ 	if (::zerop(cst))
+ 	  return gimple_assign_lhs (assign_stmt);
+     return NULL_TREE;
+   }
+ 
    log_user m_logger;
    exploded_graph &m_eg;
!   exploded_node *m_enode_for_diag;
    const program_state *m_old_state;
    program_state *m_new_state;
    const sm_state_map *m_old_smap;
    sm_state_map *m_new_smap;
    stmt_finder *m_stmt_finder;
*************** public:
*** 369,375 ****
      logger * const logger = m_eg.get_logger ();
      LOG_FUNC (logger);
  
!     if (TREE_CODE (m_var) == SSA_NAME)
        {
  	/* Locate the final write to this SSA name in the path.  */
  	const gimple *def_stmt = SSA_NAME_DEF_STMT (m_var);
--- 391,397 ----
      logger * const logger = m_eg.get_logger ();
      LOG_FUNC (logger);
  
!     if (m_var && TREE_CODE (m_var) == SSA_NAME)
        {
  	/* Locate the final write to this SSA name in the path.  */
  	const gimple *def_stmt = SSA_NAME_DEF_STMT (m_var);
*************** private:
*** 445,450 ****
--- 467,475 ----
  static int
  readability (const_tree expr)
  {
+   /* Arbitrarily-chosen "high readability" value.  */
+   const int HIGH_READABILITY = 65536;
+ 
    gcc_assert (expr);
    switch (TREE_CODE (expr))
      {
*************** readability (const_tree expr)
*** 452,471 ****
      case MEM_REF:
        /* Impose a slight readability penalty relative to that of
  	 operand 0.  */
!       return readability (TREE_OPERAND (expr, 0)) - 1;
  
      case SSA_NAME:
        {
  	if (tree var = SSA_NAME_VAR (expr))
! 	  return readability (var);
  	/* Avoid printing '<unknown>' for SSA names for temporaries.  */
  	return -1;
        }
        break;
  
      case VAR_DECL:
!       /* Arbitrarily-chosen "high readability" value.  */
!       return 256;
  
      default:
        return 0;
--- 477,519 ----
      case MEM_REF:
        /* Impose a slight readability penalty relative to that of
  	 operand 0.  */
!       return readability (TREE_OPERAND (expr, 0)) - 16;
  
      case SSA_NAME:
        {
  	if (tree var = SSA_NAME_VAR (expr))
! 	  /* Slightly favor the underlying var over the SSA name to
! 	     avoid having them compare equal.  */
! 	  return readability (var) - 1;
  	/* Avoid printing '<unknown>' for SSA names for temporaries.  */
  	return -1;
        }
        break;
  
+     case PARM_DECL:
      case VAR_DECL:
!       if (DECL_NAME (expr))
! 	return HIGH_READABILITY;
!       else
! 	/* We don't want to print temporaries.  For example, the C FE
! 	   prints them as e.g. "<Uxxxx>" where "xxxx" is the low 16 bits
! 	   of the tree pointer (see pp_c_tree_decl_identifier).  */
! 	return -1;
! 
!     case RESULT_DECL:
!       /* Printing "<return-value>" isn't ideal, but is less awful than
! 	 trying to print a temporary.  */
!       return HIGH_READABILITY / 2;
! 
!     case NOP_EXPR:
!       {
! 	/* Impose a moderate readability penalty for casts.  */
! 	const int CAST_PENALTY = 32;
! 	return readability (TREE_OPERAND (expr, 0)) - CAST_PENALTY;
!       }
! 
!     case INTEGER_CST:
!       return HIGH_READABILITY;
  
      default:
        return 0;
*************** readability (const_tree expr)
*** 477,585 ****
  /* A qsort comparator for trees to sort them into most user-readable to
     least user-readable.  */
  
! static int
  readability_comparator (const void *p1, const void *p2)
  {
    path_var pv1 = *(path_var const *)p1;
    path_var pv2 = *(path_var const *)p2;
  
!   /* TODO: should we consider stack depths?  */
!   int r1 = readability (pv1.m_tree);
!   int r2 = readability (pv2.m_tree);
  
!   return r2 - r1;
  }
  
! /* Create an sm_context and use it to call SM's on_leak vfunc, so that
!    it can potentially complain about a leak of DST_SID (in a new region_model)
!    in the given STATE, where MAP can be used to map SID back to an "old"
!    region_model.  */
  
  void
  impl_region_model_context::on_state_leak (const state_machine &sm,
! 					  int sm_idx,
! 					  svalue_id dst_sid,
! 					  svalue_id first_unused_sid,
! 					  const svalue_id_map &map,
  					  state_machine::state_t state)
  {
    logger * const logger = get_logger ();
    LOG_SCOPE (logger);
    if (logger)
!     logger->log ("considering leak of sv%i", dst_sid.as_int ());
  
    if (!m_eg)
      return;
  
    /* m_old_state also needs to be non-NULL so that the sm_ctxt can look
!      up the old state of the sid.  */
    gcc_assert (m_old_state);
  
!   /* Don't report on sid leaking if it's equal to one of the used sids.
!      For example, given:
!        some_non_trivial_expression = malloc (sizeof (struct foo));
!      we have:
!        _1 = malloc;                         (void *)
!        some_non_trivial_expression = _1;    (struct foo *)
!      and at leak-detection time we may have:
!        sv5: {type: 'struct foo *', &r3}  (used)
!        sv6: {type: 'void *', &r3}         (unused)
!      where both point to the same region.  We don't want to report a
!      leak of sv6, so we reject the report due to its equality with sv5.  */
!   gcc_assert (m_new_state);
!   gcc_assert (!first_unused_sid.null_p ());
!   for (int i = 0; i < first_unused_sid.as_int (); i++)
!     {
!       svalue_id used_sid = svalue_id::from_int (i);
! 
!       /* Use the "_without_cm" form of eval_condition, since
! 	 we're half-way through purging - we don't want to introduce new
! 	 equivalence classes into the constraint_manager for "sid" and
! 	 for each of the used_sids.  */
!       const region_model &rm = *m_new_state->m_region_model;
!       tristate eq = rm.eval_condition_without_cm (dst_sid, EQ_EXPR, used_sid);
!       if (eq.is_true ())
! 	{
! 	  if (logger)
! 	    logger->log ("rejecting leak of sv%i due to equality with sv%i",
! 			 dst_sid.as_int (), used_sid.as_int ());
! 	  return;
! 	}
!     }
! 
!   /* SID has leaked within the new state: no regions use it.
!      We need to convert it back to a tree, but since no regions use it, we
!      have to use MAP to convert it back to an svalue_id within the old state.
!      We can then look that svalue_id up to locate regions and thus tree(s)
!      that use it.  */
! 
!   svalue_id old_sid = map.get_src_for_dst (dst_sid);
! 
!   auto_vec<path_var> leaked_pvs;
!   m_old_state->m_region_model->get_path_vars_for_svalue (old_sid, &leaked_pvs);
! 
!   if (leaked_pvs.length () < 1)
!     return;
  
!   /* Find "best" leaked tree.
!      Sort the leaks into most human-readable first, through
!      to least user-readable.  Given that we only emit one
!      leak per EC, this ought to ensure that we pick the most
!      user-readable description of each leaking EC.
!      This assumes that all vars in the EC have the same state.  */
!   leaked_pvs.qsort (readability_comparator);
  
!   tree leaked_tree = leaked_pvs[0].m_tree;
    if (logger)
!     logger->log ("best leaked_tree: %qE", leaked_tree);
  
    leak_stmt_finder stmt_finder (*m_eg, leaked_tree);
-   impl_sm_context sm_ctxt (*m_eg, sm_idx, sm, m_enode_for_diag,
- 			   m_old_state, m_new_state,
- 			   m_change,
- 			   m_old_state->m_checker_states[sm_idx],
- 			   m_new_state->m_checker_states[sm_idx],
- 			   &stmt_finder);
    gcc_assert (m_enode_for_diag);
  
    /* Don't complain about leaks when returning from "main".  */
--- 525,635 ----
  /* A qsort comparator for trees to sort them into most user-readable to
     least user-readable.  */
  
! int
  readability_comparator (const void *p1, const void *p2)
  {
    path_var pv1 = *(path_var const *)p1;
    path_var pv2 = *(path_var const *)p2;
  
!   const int tree_r1 = readability (pv1.m_tree);
!   const int tree_r2 = readability (pv2.m_tree);
  
!   /* Favor items that are deeper on the stack and hence more recent;
!      this also favors locals over globals.  */
!   const int COST_PER_FRAME = 64;
!   const int depth_r1 = pv1.m_stack_depth * COST_PER_FRAME;
!   const int depth_r2 = pv2.m_stack_depth * COST_PER_FRAME;
! 
!   /* Combine the scores from the tree and from the stack depth.
!      This e.g. lets us have a slightly penalized cast in the most
!      recent stack frame "beat" an uncast value in an older stack frame.  */
!   const int sum_r1 = tree_r1 + depth_r1;
!   const int sum_r2 = tree_r2 + depth_r2;
!   if (int cmp = sum_r2 - sum_r1)
!     return cmp;
! 
!   /* Otherwise, more readable trees win.  */
!   if (int cmp = tree_r2 - tree_r1)
!     return cmp;
! 
!   /* Otherwise, if they have the same readability, then impose an
!      arbitrary deterministic ordering on them.  */
! 
!   if (int cmp = TREE_CODE (pv1.m_tree) - TREE_CODE (pv2.m_tree))
!     return cmp;
! 
!   switch (TREE_CODE (pv1.m_tree))
!     {
!     default:
!       break;
!     case SSA_NAME:
!       if (int cmp = (SSA_NAME_VERSION (pv1.m_tree)
! 		     - SSA_NAME_VERSION (pv2.m_tree)))
! 	return cmp;
!       break;
!     case PARM_DECL:
!     case VAR_DECL:
!     case RESULT_DECL:
!       if (int cmp = DECL_UID (pv1.m_tree) - DECL_UID (pv2.m_tree))
! 	return cmp;
!       break;
!     }
! 
!   /* TODO: We ought to find ways of sorting such cases.  */
!   return 0;
  }
  
! /* Find the best tree for SVAL and call SM's on_leak vfunc with it.
!    If on_leak returns a pending_diagnostic, queue it up to be reported,
!    so that we potentially complain about a leak of SVAL in the given STATE.  */
  
  void
  impl_region_model_context::on_state_leak (const state_machine &sm,
! 					  const svalue *sval,
  					  state_machine::state_t state)
  {
    logger * const logger = get_logger ();
    LOG_SCOPE (logger);
    if (logger)
!     {
!       logger->start_log_line ();
!       logger->log_partial ("considering leak of ");
!       sval->dump_to_pp (logger->get_printer (), true);
!       logger->end_log_line ();
!     }
  
    if (!m_eg)
      return;
  
    /* m_old_state also needs to be non-NULL so that the sm_ctxt can look
!      up the old state of SVAL.  */
    gcc_assert (m_old_state);
  
!   /* SVAL has leaked within the new state: it is not used by any reachable
!      regions.
!      We need to convert it back to a tree, but since it's likely no regions
!      use it, we have to find the "best" tree for it in the old_state.  */
!   svalue_set visited;
!   path_var leaked_pv
!     = m_old_state->m_region_model->get_representative_path_var (sval,
! 								&visited);
  
!   /* Strip off top-level casts  */
!   if (leaked_pv.m_tree && TREE_CODE (leaked_pv.m_tree) == NOP_EXPR)
!     leaked_pv.m_tree = TREE_OPERAND (leaked_pv.m_tree, 0);
  
!   /* This might be NULL; the pending_diagnostic subclasses need to cope
!      with this.  */
!   tree leaked_tree = leaked_pv.m_tree;
    if (logger)
!     {
!       if (leaked_tree)
! 	logger->log ("best leaked_tree: %qE", leaked_tree);
!       else
! 	logger->log ("best leaked_tree: NULL");
!     }
  
    leak_stmt_finder stmt_finder (*m_eg, leaked_tree);
    gcc_assert (m_enode_for_diag);
  
    /* Don't complain about leaks when returning from "main".  */
*************** impl_region_model_context::on_state_leak
*** 587,593 ****
        && m_enode_for_diag->get_supernode ()->return_p ())
      {
        tree fndecl = m_enode_for_diag->get_function ()->decl;
!       if (0 == strcmp (IDENTIFIER_POINTER (DECL_NAME (fndecl)), "main"))
  	{
  	  if (logger)
  	    logger->log ("not reporting leak from main");
--- 637,643 ----
        && m_enode_for_diag->get_supernode ()->return_p ())
      {
        tree fndecl = m_enode_for_diag->get_function ()->decl;
!       if (id_equal (DECL_NAME (fndecl), "main"))
  	{
  	  if (logger)
  	    logger->log ("not reporting leak from main");
*************** impl_region_model_context::on_state_leak
*** 595,647 ****
  	}
      }
  
!   pending_diagnostic *pd = sm.on_leak (leaked_tree);
    if (pd)
      m_eg->get_diagnostic_manager ().add_diagnostic
        (&sm, m_enode_for_diag, m_enode_for_diag->get_supernode (),
         m_stmt, &stmt_finder,
!        leaked_tree, state, pd);
! }
! 
! /* Implementation of region_model_context::on_inherited_svalue vfunc
!    for impl_region_model_context.
!    Notify all checkers that CHILD_SID has been created from PARENT_SID,
!    so that those state machines that inherit state can propagate the state
!    from parent to child.  */
! 
! void
! impl_region_model_context::on_inherited_svalue (svalue_id parent_sid,
! 						svalue_id child_sid)
! {
!   if (!m_new_state)
!     return;
! 
!   int sm_idx;
!   sm_state_map *smap;
!   FOR_EACH_VEC_ELT (m_new_state->m_checker_states, sm_idx, smap)
!     {
!       const state_machine &sm = m_ext_state.get_sm (sm_idx);
!       if (sm.inherited_state_p ())
! 	smap->on_inherited_svalue (parent_sid, child_sid);
!     }
! }
! 
! /* Implementation of region_model_context::on_cast vfunc
!    for impl_region_model_context.
!    Notify all checkers that DST_SID is a cast of SRC_SID, so that sm-state
!    can be propagated from src to dst.  */
! 
! void
! impl_region_model_context::on_cast (svalue_id src_sid,
! 				    svalue_id dst_sid)
! {
!   if (!m_new_state)
!     return;
! 
!   int sm_idx;
!   sm_state_map *smap;
!   FOR_EACH_VEC_ELT (m_new_state->m_checker_states, sm_idx, smap)
!     smap->on_cast (src_sid, dst_sid);
  }
  
  /* Implementation of region_model_context::on_condition vfunc.
--- 645,657 ----
  	}
      }
  
!   tree leaked_tree_for_diag = fixup_tree_for_diagnostic (leaked_tree);
!   pending_diagnostic *pd = sm.on_leak (leaked_tree_for_diag);
    if (pd)
      m_eg->get_diagnostic_manager ().add_diagnostic
        (&sm, m_enode_for_diag, m_enode_for_diag->get_supernode (),
         m_stmt, &stmt_finder,
!        leaked_tree_for_diag, sval, state, pd);
  }
  
  /* Implementation of region_model_context::on_condition vfunc.
*************** impl_region_model_context::on_condition
*** 658,664 ****
        const state_machine &sm = m_ext_state.get_sm (sm_idx);
        impl_sm_context sm_ctxt (*m_eg, sm_idx, sm, m_enode_for_diag,
  			       m_old_state, m_new_state,
- 			       m_change,
  			       m_old_state->m_checker_states[sm_idx],
  			       m_new_state->m_checker_states[sm_idx]);
        sm.on_condition (&sm_ctxt,
--- 668,673 ----
*************** impl_region_model_context::on_phi (const
*** 681,687 ****
        const state_machine &sm = m_ext_state.get_sm (sm_idx);
        impl_sm_context sm_ctxt (*m_eg, sm_idx, sm, m_enode_for_diag,
  			       m_old_state, m_new_state,
- 			       m_change,
  			       m_old_state->m_checker_states[sm_idx],
  			       m_new_state->m_checker_states[sm_idx]);
        sm.on_phi (&sm_ctxt, m_enode_for_diag->get_supernode (), phi, rhs);
--- 690,695 ----
*************** impl_region_model_context::on_unexpected
*** 699,705 ****
    logger * const logger = get_logger ();
    if (logger)
      logger->log ("unhandled tree code: %qs in %qs at %s:%i",
! 		 t ? get_tree_code_name (TREE_CODE (t)) : "(null)",
  		 loc.get_impl_location ().m_function,
  		 loc.get_impl_location ().m_file,
  		 loc.get_impl_location ().m_line);
--- 707,713 ----
    logger * const logger = get_logger ();
    if (logger)
      logger->log ("unhandled tree code: %qs in %qs at %s:%i",
! 		 get_tree_code_name (TREE_CODE (t)),
  		 loc.get_impl_location ().m_function,
  		 loc.get_impl_location ().m_file,
  		 loc.get_impl_location ().m_line);
*************** point_and_state::validate (const extrins
*** 730,739 ****
  	      == m_state.m_region_model->get_stack_depth ());
    /* Check the functions in the callstring vs those in the frames
       at each depth.  */
!   for (int depth = 0; depth < m_point.get_stack_depth (); ++depth)
      {
!       gcc_assert (m_point.get_function_at_depth (depth)
! 		  == m_state.m_region_model->get_function_at_depth (depth));
      }
  }
  
--- 738,750 ----
  	      == m_state.m_region_model->get_stack_depth ());
    /* Check the functions in the callstring vs those in the frames
       at each depth.  */
!   for (const frame_region *iter_frame
! 	 = m_state.m_region_model->get_current_frame ();
!        iter_frame; iter_frame = iter_frame->get_calling_frame ())
      {
!       int index = iter_frame->get_index ();
!       gcc_assert (m_point.get_function_at_depth (index)
! 		  == iter_frame->get_function ());
      }
  }
  
*************** print_enode_indices (pretty_printer *pp,
*** 797,813 ****
      }
  }
  
  /* class exploded_node : public dnode<eg_traits>.  */
  
  /* exploded_node's ctor.  */
  
  exploded_node::exploded_node (const point_and_state &ps,
  			      int index)
! : m_ps (ps), m_status (STATUS_WORKLIST), m_index (index)
  {
    gcc_checking_assert (ps.get_state ().m_region_model->canonicalized_p ());
  }
  
  /* For use by dump_dot, get a value for the .dot "fillcolor" attribute.
     Colorize by sm-state, to make it easier to see how sm-state propagates
     through the exploded_graph.  */
--- 808,891 ----
      }
  }
  
+ /* struct eg_traits::dump_args_t.  */
+ 
+ /* The <FILENAME>.eg.dot output can quickly become unwieldy if we show
+    full details for all enodes (both in terms of CPU time to render it,
+    and in terms of being meaningful to a human viewing it).
+ 
+    If we show just the IDs then the resulting graph is usually viewable,
+    but then we have to keep switching back and forth between the .dot
+    view and other dumps.
+ 
+    This function implements a heuristic for showing detail at the enodes
+    that (we hope) matter, and just the ID at other enodes, fixing the CPU
+    usage of the .dot viewer, and drawing the attention of the viewer
+    to these enodes.
+ 
+    Return true if ENODE should be shown in detail in .dot output.
+    Return false if no detail should be shown for ENODE.  */
+ 
+ bool
+ eg_traits::dump_args_t::show_enode_details_p (const exploded_node &enode) const
+ {
+   /* If the number of exploded nodes isn't too large, we may as well show
+      all enodes in full detail in the .dot output.  */
+   if (m_eg.m_nodes.length ()
+ 	<= (unsigned) param_analyzer_max_enodes_for_full_dump)
+     return true;
+ 
+   /* Otherwise, assume that what's most interesting are state explosions,
+      and thus the places where this happened.
+      Expand enodes at program points where we hit the per-enode limit, so we
+      can investigate what exploded.  */
+   const per_program_point_data *per_point_data
+     = m_eg.get_per_program_point_data (enode.get_point ());
+   return per_point_data->m_excess_enodes > 0;
+ }
+ 
  /* class exploded_node : public dnode<eg_traits>.  */
  
+ const char *
+ exploded_node::status_to_str (enum status s)
+ {
+   switch (s)
+     {
+     default: gcc_unreachable ();
+     case STATUS_WORKLIST: return "WORKLIST";
+     case STATUS_PROCESSED: return "PROCESSED";
+     case STATUS_MERGER: return "MERGER";
+     case STATUS_BULK_MERGED: return "BULK_MERGED";
+     }
+ }
+ 
  /* exploded_node's ctor.  */
  
  exploded_node::exploded_node (const point_and_state &ps,
  			      int index)
! : m_ps (ps), m_status (STATUS_WORKLIST), m_index (index),
!   m_num_processed_stmts (0)
  {
    gcc_checking_assert (ps.get_state ().m_region_model->canonicalized_p ());
  }
  
+ /* Get the stmt that was processed in this enode at index IDX.
+    IDX is an index within the stmts processed at this enode, rather
+    than within those of the supernode.  */
+ 
+ const gimple *
+ exploded_node::get_processed_stmt (unsigned idx) const
+ {
+   gcc_assert (idx < m_num_processed_stmts);
+   const program_point &point = get_point ();
+   gcc_assert (point.get_kind () == PK_BEFORE_STMT);
+   const supernode *snode = get_supernode ();
+   const unsigned int point_stmt_idx = point.get_stmt_idx ();
+   const unsigned int idx_within_snode = point_stmt_idx + idx;
+   const gimple *stmt = snode->m_stmts[idx_within_snode];
+   return stmt;
+ }
+ 
  /* For use by dump_dot, get a value for the .dot "fillcolor" attribute.
     Colorize by sm-state, to make it easier to see how sm-state propagates
     through the exploded_graph.  */
*************** exploded_node::get_dot_fillcolor () cons
*** 829,845 ****
    FOR_EACH_VEC_ELT (state.m_checker_states, i, smap)
      {
        for (sm_state_map::iterator_t iter = smap->begin ();
! 	 iter != smap->end ();
  	   ++iter)
! 	total_sm_state += (*iter).second.m_state;
!       total_sm_state += smap->get_global_state ();
      }
  
    if (total_sm_state > 0)
      {
        /* An arbitrarily-picked collection of light colors.  */
        const char * const colors[]
! 	= {"azure", "coral", "cornsilk", "lightblue", "yellow"};
        const int num_colors = sizeof (colors) / sizeof (colors[0]);
        return colors[total_sm_state % num_colors];
      }
--- 907,925 ----
    FOR_EACH_VEC_ELT (state.m_checker_states, i, smap)
      {
        for (sm_state_map::iterator_t iter = smap->begin ();
! 	   iter != smap->end ();
  	   ++iter)
! 	total_sm_state += (*iter).second.m_state->get_id ();
!       total_sm_state += smap->get_global_state ()->get_id ();
      }
  
    if (total_sm_state > 0)
      {
        /* An arbitrarily-picked collection of light colors.  */
        const char * const colors[]
! 	= {"azure", "coral", "cornsilk", "lightblue", "yellow",
! 	   "honeydew", "lightpink", "lightsalmon", "palegreen1",
! 	   "wheat", "seashell"};
        const int num_colors = sizeof (colors) / sizeof (colors[0]);
        return colors[total_sm_state % num_colors];
      }
*************** exploded_node::dump_dot (graphviz_out *g
*** 863,906 ****
    pp_printf (pp, "EN: %i", m_index);
    if (m_status == STATUS_MERGER)
      pp_string (pp, " (merger)");
    pp_newline (pp);
  
!   format f (true);
!   m_ps.get_point ().print (pp, f);
!   pp_newline (pp);
  
!   const extrinsic_state &ext_state = args.m_eg.get_ext_state ();
!   const program_state &state = m_ps.get_state ();
!   state.dump_to_pp (ext_state, true, pp);
!   pp_newline (pp);
  
!   {
!     int i;
!     sm_state_map *smap;
!     FOR_EACH_VEC_ELT (state.m_checker_states, i, smap)
!       {
! 	if (!smap->is_empty_p ())
! 	  {
! 	    pp_printf (pp, "%s: ", ext_state.get_name (i));
! 	    smap->print (ext_state.get_sm (i), state.m_region_model, pp);
! 	    pp_newline (pp);
! 	  }
!       }
!   }
  
!   /* Dump any saved_diagnostics at this enode.  */
!   {
!     const diagnostic_manager &dm = args.m_eg.get_diagnostic_manager ();
!     for (unsigned i = 0; i < dm.get_num_diagnostics (); i++)
!       {
! 	const saved_diagnostic *sd = dm.get_saved_diagnostic (i);
! 	if (sd->m_enode == this)
! 	  {
! 	    pp_printf (pp, "DIAGNOSTIC: %s", sd->m_d->get_kind ());
! 	    pp_newline (pp);
! 	  }
!       }
!   }
  
    pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/true);
  
--- 943,969 ----
    pp_printf (pp, "EN: %i", m_index);
    if (m_status == STATUS_MERGER)
      pp_string (pp, " (merger)");
+   else if (m_status == STATUS_BULK_MERGED)
+     pp_string (pp, " (bulk merged)");
    pp_newline (pp);
  
!   if (args.show_enode_details_p (*this))
!     {
!       format f (true);
!       m_ps.get_point ().print (pp, f);
!       pp_newline (pp);
  
!       const extrinsic_state &ext_state = args.m_eg.get_ext_state ();
!       const program_state &state = m_ps.get_state ();
!       state.dump_to_pp (ext_state, false, true, pp);
!       pp_newline (pp);
  
!       dump_processed_stmts (pp);
!     }
  
!   dump_saved_diagnostics (pp);
! 
!   args.dump_extra_info (this, pp);
  
    pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/true);
  
*************** exploded_node::dump_dot (graphviz_out *g
*** 908,913 ****
--- 971,1016 ----
    pp_flush (pp);
  }
  
+ /* Show any stmts that were processed within this enode,
+    and their index within the supernode.  */
+ void
+ exploded_node::dump_processed_stmts (pretty_printer *pp) const
+ {
+   if (m_num_processed_stmts > 0)
+     {
+       const program_point &point = get_point ();
+       gcc_assert (point.get_kind () == PK_BEFORE_STMT);
+       const supernode *snode = get_supernode ();
+       const unsigned int point_stmt_idx = point.get_stmt_idx ();
+ 
+       pp_printf (pp, "stmts: %i", m_num_processed_stmts);
+       pp_newline (pp);
+       for (unsigned i = 0; i < m_num_processed_stmts; i++)
+ 	{
+ 	  const unsigned int idx_within_snode = point_stmt_idx + i;
+ 	  const gimple *stmt = snode->m_stmts[idx_within_snode];
+ 	  pp_printf (pp, "  %i: ", idx_within_snode);
+ 	  pp_gimple_stmt_1 (pp, stmt, 0, (dump_flags_t)0);
+ 	  pp_newline (pp);
+ 	}
+     }
+ }
+ 
+ /* Dump any saved_diagnostics at this enode to PP.  */
+ 
+ void
+ exploded_node::dump_saved_diagnostics (pretty_printer *pp) const
+ {
+   unsigned i;
+   const saved_diagnostic *sd;
+   FOR_EACH_VEC_ELT (m_saved_diagnostics, i, sd)
+     {
+       pp_printf (pp, "DIAGNOSTIC: %s (sd: %i)",
+ 		 sd->m_d->get_kind (), sd->get_index ());
+       pp_newline (pp);
+     }
+ }
+ 
  /* Dump this to PP in a form suitable for use as an id in .dot output.  */
  
  void
*************** exploded_node::dump_to_pp (pretty_printe
*** 929,935 ****
    m_ps.get_point ().print (pp, f);
    pp_newline (pp);
  
!   m_ps.get_state ().dump_to_pp (ext_state, false, pp);
    pp_newline (pp);
  }
  
--- 1032,1038 ----
    m_ps.get_point ().print (pp, f);
    pp_newline (pp);
  
!   m_ps.get_state ().dump_to_pp (ext_state, false, true, pp);
    pp_newline (pp);
  }
  
*************** exploded_node::dump (const extrinsic_sta
*** 955,960 ****
--- 1058,1085 ----
    dump (stderr, ext_state);
  }
  
+ /* Return a new json::object of the form
+    {"point"  : object for program_point,
+     "state"  : object for program_state,
+     "status" : str,
+     "idx"    : int,
+     "processed_stmts" : int}.  */
+ 
+ json::object *
+ exploded_node::to_json (const extrinsic_state &ext_state) const
+ {
+   json::object *enode_obj = new json::object ();
+ 
+   enode_obj->set ("point", get_point ().to_json ());
+   enode_obj->set ("state", get_state ().to_json (ext_state));
+   enode_obj->set ("status", new json::string (status_to_str (m_status)));
+   enode_obj->set ("idx", new json::integer_number (m_index));
+   enode_obj->set ("processed_stmts",
+ 		  new json::integer_number (m_num_processed_stmts));
+ 
+   return enode_obj;
+ }
+ 
  } // namespace ana
  
  /* Return true if FNDECL has a gimple body.  */
*************** exploded_node::on_stmt (exploded_graph &
*** 1003,1010 ****
  			const supernode *snode,
  			const gimple *stmt,
  			program_state *state,
! 			state_change *change) const
  {
    /* Preserve the old state.  It is used here for looking
       up old checker states, for determining state transitions, and
       also within impl_region_model_context and impl_sm_context for
--- 1128,1150 ----
  			const supernode *snode,
  			const gimple *stmt,
  			program_state *state,
! 			uncertainty_t *uncertainty)
  {
+   logger *logger = eg.get_logger ();
+   LOG_SCOPE (logger);
+   if (logger)
+     {
+       logger->start_log_line ();
+       pp_gimple_stmt_1 (logger->get_printer (), stmt, 0, (dump_flags_t)0);
+       logger->end_log_line ();
+     }
+ 
+   /* Update input_location in case of ICE: make it easier to track down which
+      source construct we're failing to handle.  */
+   input_location = stmt->location;
+ 
+   gcc_assert (state->m_region_model);
+ 
    /* Preserve the old state.  It is used here for looking
       up old checker states, for determining state transitions, and
       also within impl_region_model_context and impl_sm_context for
*************** exploded_node::on_stmt (exploded_graph &
*** 1012,1088 ****
    const program_state old_state (*state);
  
    impl_region_model_context ctxt (eg, this,
! 				  &old_state, state, change,
  				  stmt);
  
-   if (const gassign *assign = dyn_cast <const gassign *> (stmt))
-     state->m_region_model->on_assignment (assign, &ctxt);
- 
-   if (const greturn *return_ = dyn_cast <const greturn *> (stmt))
-     state->m_region_model->on_return (return_, &ctxt);
- 
-   /* Track whether we have a gcall to a function that's not recognized by
-      anything, for which we don't have a function body, or for which we
-      don't know the fndecl.  */
    bool unknown_side_effects = false;
!   if (const gcall *call = dyn_cast <const gcall *> (stmt))
      {
!       /* Debugging/test support.  */
!       if (is_special_named_call_p (call, "__analyzer_dump", 0))
! 	{
! 	  /* Handle the builtin "__analyzer_dump" by dumping state
! 	     to stderr.  */
! 	  dump (eg.get_ext_state ());
! 	}
!       else if (is_special_named_call_p (call, "__analyzer_dump_path", 0))
! 	{
! 	  /* Handle the builtin "__analyzer_dump_path" by queuing a
! 	     diagnostic at this exploded_node.  */
! 	  ctxt.warn (new dump_path_diagnostic ());
! 	}
!       else if (is_special_named_call_p (call, "__analyzer_dump_region_model", 0))
! 	{
! 	  /* Handle the builtin "__analyzer_dump_region_model" by dumping
! 	     the region model's state to stderr.  */
! 	  state->m_region_model->dump (false);
! 	}
!       else if (is_special_named_call_p (call, "__analyzer_eval", 1))
! 	{
! 	  /* Handle the builtin "__analyzer_eval" by evaluating the input
! 	     and dumping as a dummy warning, so that test cases can use
! 	     dg-warning to validate the result (and so unexpected warnings will
! 	     lead to DejaGnu failures).  */
! 	  tree t_arg = gimple_call_arg (call, 0);
! 	  tristate t
! 	    = state->m_region_model->eval_condition (t_arg,
! 						     NE_EXPR,
! 						     integer_zero_node,
! 						     &ctxt);
! 	  warning_at (call->location, 0, "%s", t.as_string ());
! 	}
!       else if (is_special_named_call_p (call, "__analyzer_break", 0))
! 	{
! 	  /* Handle the builtin "__analyzer_break" by triggering a
! 	     breakpoint.  */
! 	  /* TODO: is there a good cross-platform way to do this?  */
! 	  raise (SIGINT);
! 	}
!       else if (is_special_named_call_p (call, "__analyzer_dump_exploded_nodes",
! 					1))
! 	{
! 	  /* This is handled elsewhere.  */
! 	}
!       else if (is_setjmp_call_p (call))
! 	state->m_region_model->on_setjmp (call, this, &ctxt);
!       else if (is_longjmp_call_p (call))
! 	{
! 	  on_longjmp (eg, call, state, &ctxt);
! 	  return on_stmt_flags::terminate_path ();
! 	}
!       else
! 	unknown_side_effects = state->m_region_model->on_call_pre (call, &ctxt);
      }
  
    bool any_sm_changes = false;
    int sm_idx;
    sm_state_map *smap;
--- 1152,1248 ----
    const program_state old_state (*state);
  
    impl_region_model_context ctxt (eg, this,
! 				  &old_state, state, uncertainty,
  				  stmt);
  
    bool unknown_side_effects = false;
!   bool terminate_path = false;
! 
!   switch (gimple_code (stmt))
      {
!     default:
!       /* No-op for now.  */
!       break;
! 
!     case GIMPLE_ASSIGN:
!       {
! 	const gassign *assign = as_a <const gassign *> (stmt);
! 	state->m_region_model->on_assignment (assign, &ctxt);
!       }
!       break;
! 
!     case GIMPLE_ASM:
!       /* No-op for now.  */
!       break;
! 
!     case GIMPLE_CALL:
!       {
! 	/* Track whether we have a gcall to a function that's not recognized by
! 	   anything, for which we don't have a function body, or for which we
! 	   don't know the fndecl.  */
! 	const gcall *call = as_a <const gcall *> (stmt);
! 
! 	/* Debugging/test support.  */
! 	if (is_special_named_call_p (call, "__analyzer_describe", 2))
! 	  state->m_region_model->impl_call_analyzer_describe (call, &ctxt);
! 	else if (is_special_named_call_p (call, "__analyzer_dump", 0))
! 	  {
! 	    /* Handle the builtin "__analyzer_dump" by dumping state
! 	       to stderr.  */
! 	    state->dump (eg.get_ext_state (), true);
! 	  }
! 	else if (is_special_named_call_p (call, "__analyzer_dump_path", 0))
! 	  {
! 	    /* Handle the builtin "__analyzer_dump_path" by queuing a
! 	       diagnostic at this exploded_node.  */
! 	    ctxt.warn (new dump_path_diagnostic ());
! 	  }
! 	else if (is_special_named_call_p (call, "__analyzer_dump_region_model",
! 					  0))
! 	  {
! 	    /* Handle the builtin "__analyzer_dump_region_model" by dumping
! 	       the region model's state to stderr.  */
! 	    state->m_region_model->dump (false);
! 	  }
! 	else if (is_special_named_call_p (call, "__analyzer_eval", 1))
! 	  state->m_region_model->impl_call_analyzer_eval (call, &ctxt);
! 	else if (is_special_named_call_p (call, "__analyzer_break", 0))
! 	  {
! 	    /* Handle the builtin "__analyzer_break" by triggering a
! 	       breakpoint.  */
! 	    /* TODO: is there a good cross-platform way to do this?  */
! 	    raise (SIGINT);
! 	  }
! 	else if (is_special_named_call_p (call,
! 					  "__analyzer_dump_exploded_nodes",
! 					  1))
! 	  {
! 	    /* This is handled elsewhere.  */
! 	  }
! 	else if (is_setjmp_call_p (call))
! 	  state->m_region_model->on_setjmp (call, this, &ctxt);
! 	else if (is_longjmp_call_p (call))
! 	  {
! 	    on_longjmp (eg, call, state, &ctxt);
! 	    return on_stmt_flags::terminate_path ();
! 	  }
! 	else
! 	  unknown_side_effects
! 	    = state->m_region_model->on_call_pre (call, &ctxt, &terminate_path);
!       }
!       break;
! 
!     case GIMPLE_RETURN:
!       {
! 	const greturn *return_ = as_a <const greturn *> (stmt);
! 	state->m_region_model->on_return (return_, &ctxt);
!       }
!       break;
      }
  
+   if (terminate_path)
+     return on_stmt_flags::terminate_path ();
+ 
    bool any_sm_changes = false;
    int sm_idx;
    sm_state_map *smap;
*************** exploded_node::on_stmt (exploded_graph &
*** 1093,1117 ****
  	= old_state.m_checker_states[sm_idx];
        sm_state_map *new_smap = state->m_checker_states[sm_idx];
        impl_sm_context sm_ctxt (eg, sm_idx, sm, this, &old_state, state,
- 			       change,
  			       old_smap, new_smap);
        /* Allow the state_machine to handle the stmt.  */
        if (sm.on_stmt (&sm_ctxt, snode, stmt))
  	unknown_side_effects = false;
-       else
- 	{
- 	  /* For those stmts that were not handled by the state machine.  */
- 	  if (const gcall *call = dyn_cast <const gcall *> (stmt))
- 	    {
- 	      tree callee_fndecl
- 		= state->m_region_model->get_fndecl_for_call (call, &ctxt);
- 
- 	      if (!fndecl_has_gimple_body_p (callee_fndecl))
- 		new_smap->purge_for_unknown_fncall (eg, sm, call, callee_fndecl,
- 						    state->m_region_model,
- 						    &ctxt);
- 	    }
- 	}
        if (*old_smap != *new_smap)
  	any_sm_changes = true;
      }
--- 1253,1287 ----
  	= old_state.m_checker_states[sm_idx];
        sm_state_map *new_smap = state->m_checker_states[sm_idx];
        impl_sm_context sm_ctxt (eg, sm_idx, sm, this, &old_state, state,
  			       old_smap, new_smap);
+ 
+       /* If we're at the def-stmt of an SSA name, then potentially purge
+ 	 any sm-state for svalues that involve that SSA name.  This avoids
+ 	 false positives in loops, since a symbolic value referring to the
+ 	 SSA name will be referring to the previous value of that SSA name.
+ 	 For example, in:
+ 	   while ((e = hashmap_iter_next(&iter))) {
+ 	     struct oid2strbuf *e_strbuf = (struct oid2strbuf *)e;
+ 	     free (e_strbuf->value);
+ 	   }
+ 	 at the def-stmt of e_8:
+ 	   e_8 = hashmap_iter_next (&iter);
+ 	 we should purge the "freed" state of:
+ 	   INIT_VAL(CAST_REG(‘struct oid2strbuf’, (*INIT_VAL(e_8))).value)
+ 	 which is the "e_strbuf->value" value from the previous iteration,
+ 	 or we will erroneously report a double-free - the "e_8" within it
+ 	 refers to the previous value.  */
+       if (tree lhs = gimple_get_lhs (stmt))
+ 	if (TREE_CODE (lhs) == SSA_NAME)
+ 	  {
+ 	    const svalue *sval
+ 	      = old_state.m_region_model->get_rvalue (lhs, &ctxt);
+ 	    new_smap->purge_state_involving (sval, eg.get_ext_state ());
+ 	  }
+ 
        /* Allow the state_machine to handle the stmt.  */
        if (sm.on_stmt (&sm_ctxt, snode, stmt))
  	unknown_side_effects = false;
        if (*old_smap != *new_smap)
  	any_sm_changes = true;
      }
*************** exploded_node::on_edge (exploded_graph &
*** 1143,1156 ****
  			const superedge *succ,
  			program_point *next_point,
  			program_state *next_state,
! 			state_change *change) const
  {
    LOG_FUNC (eg.get_logger ());
  
    if (!next_point->on_edge (eg, succ))
      return false;
  
!   if (!next_state->on_edge (eg, *this, succ, change))
      return false;
  
    return true;
--- 1313,1326 ----
  			const superedge *succ,
  			program_point *next_point,
  			program_state *next_state,
! 			uncertainty_t *uncertainty)
  {
    LOG_FUNC (eg.get_logger ());
  
    if (!next_point->on_edge (eg, succ))
      return false;
  
!   if (!next_state->on_edge (eg, this, succ, uncertainty))
      return false;
  
    return true;
*************** valid_longjmp_stack_p (const program_poi
*** 1189,1196 ****
  class stale_jmp_buf : public pending_diagnostic_subclass<dump_path_diagnostic>
  {
  public:
!   stale_jmp_buf (const gcall *setjmp_call, const gcall *longjmp_call)
!   : m_setjmp_call (setjmp_call), m_longjmp_call (longjmp_call)
    {}
  
    bool emit (rich_location *richloc) FINAL OVERRIDE
--- 1359,1368 ----
  class stale_jmp_buf : public pending_diagnostic_subclass<dump_path_diagnostic>
  {
  public:
!   stale_jmp_buf (const gcall *setjmp_call, const gcall *longjmp_call,
! 		 const program_point &setjmp_point)
!   : m_setjmp_call (setjmp_call), m_longjmp_call (longjmp_call),
!     m_setjmp_point (setjmp_point), m_stack_pop_event (NULL)
    {}
  
    bool emit (rich_location *richloc) FINAL OVERRIDE
*************** public:
*** 1211,1219 ****
--- 1383,1438 ----
  	    && m_longjmp_call == other.m_longjmp_call);
    }
  
+   bool
+   maybe_add_custom_events_for_superedge (const exploded_edge &eedge,
+ 					 checker_path *emission_path)
+     FINAL OVERRIDE
+   {
+     /* Detect exactly when the stack first becomes invalid,
+        and issue an event then.  */
+     if (m_stack_pop_event)
+       return false;
+     const exploded_node *src_node = eedge.m_src;
+     const program_point &src_point = src_node->get_point ();
+     const exploded_node *dst_node = eedge.m_dest;
+     const program_point &dst_point = dst_node->get_point ();
+     if (valid_longjmp_stack_p (src_point, m_setjmp_point)
+ 	&& !valid_longjmp_stack_p (dst_point, m_setjmp_point))
+       {
+ 	/* Compare with diagnostic_manager::add_events_for_superedge.  */
+ 	const int src_stack_depth = src_point.get_stack_depth ();
+ 	m_stack_pop_event = new custom_event
+ 	  (src_point.get_location (),
+ 	   src_point.get_fndecl (),
+ 	   src_stack_depth,
+ 	   "stack frame is popped here, invalidating saved environment");
+ 	emission_path->add_event (m_stack_pop_event);
+ 	return false;
+       }
+     return false;
+   }
+ 
+   label_text describe_final_event (const evdesc::final_event &ev)
+   {
+     if (m_stack_pop_event)
+       return ev.formatted_print
+ 	("%qs called after enclosing function of %qs returned at %@",
+ 	 get_user_facing_name (m_longjmp_call),
+ 	 get_user_facing_name (m_setjmp_call),
+ 	 m_stack_pop_event->get_id_ptr ());
+     else
+       return ev.formatted_print
+ 	("%qs called after enclosing function of %qs has returned",
+ 	 get_user_facing_name (m_longjmp_call),
+ 	 get_user_facing_name (m_setjmp_call));;
+   }
+ 
+ 
  private:
    const gcall *m_setjmp_call;
    const gcall *m_longjmp_call;
+   program_point m_setjmp_point;
+   custom_event *m_stack_pop_event;
  };
  
  /* Handle LONGJMP_CALL, a call to longjmp or siglongjmp.
*************** void
*** 1226,1247 ****
  exploded_node::on_longjmp (exploded_graph &eg,
  			   const gcall *longjmp_call,
  			   program_state *new_state,
! 			   region_model_context *ctxt) const
  {
    tree buf_ptr = gimple_call_arg (longjmp_call, 0);
  
    region_model *new_region_model = new_state->m_region_model;
!   region_id buf_rid = new_region_model->deref_rvalue (buf_ptr, ctxt);
!   region *buf = new_region_model->get_region (buf_rid);
!   if (!buf)
!     return;
  
!   svalue_id buf_content_sid
!     = buf->get_value (*new_region_model, false, ctxt);
!   svalue *buf_content_sval = new_region_model->get_svalue (buf_content_sid);
!   if (!buf_content_sval)
!     return;
!   setjmp_svalue *setjmp_sval = buf_content_sval->dyn_cast_setjmp_svalue ();
    if (!setjmp_sval)
      return;
  
--- 1445,1463 ----
  exploded_node::on_longjmp (exploded_graph &eg,
  			   const gcall *longjmp_call,
  			   program_state *new_state,
! 			   region_model_context *ctxt)
  {
    tree buf_ptr = gimple_call_arg (longjmp_call, 0);
+   gcc_assert (POINTER_TYPE_P (TREE_TYPE (buf_ptr)));
  
    region_model *new_region_model = new_state->m_region_model;
!   const svalue *buf_ptr_sval = new_region_model->get_rvalue (buf_ptr, ctxt);
!   const region *buf = new_region_model->deref_rvalue (buf_ptr_sval, buf_ptr,
! 						       ctxt);
  
!   const svalue *buf_content_sval = new_region_model->get_store_value (buf);
!   const setjmp_svalue *setjmp_sval
!     = buf_content_sval->dyn_cast_setjmp_svalue ();
    if (!setjmp_sval)
      return;
  
*************** exploded_node::on_longjmp (exploded_grap
*** 1259,1265 ****
    /* Verify that the setjmp's call_stack hasn't been popped.  */
    if (!valid_longjmp_stack_p (longjmp_point, setjmp_point))
      {
!       ctxt->warn (new stale_jmp_buf (setjmp_call, longjmp_call));
        return;
      }
  
--- 1475,1481 ----
    /* Verify that the setjmp's call_stack hasn't been popped.  */
    if (!valid_longjmp_stack_p (longjmp_point, setjmp_point))
      {
!       ctxt->warn (new stale_jmp_buf (setjmp_call, longjmp_call, setjmp_point));
        return;
      }
  
*************** exploded_node::on_longjmp (exploded_grap
*** 1277,1295 ****
    new_region_model->on_longjmp (longjmp_call, setjmp_call,
  				setjmp_point.get_stack_depth (), ctxt);
  
    program_point next_point
      = program_point::after_supernode (setjmp_point.get_supernode (),
  				      setjmp_point.get_call_string ());
  
!   state_change change;
!   exploded_node *next = eg.get_or_create_node (next_point, *new_state, &change);
  
    /* Create custom exploded_edge for a longjmp.  */
    if (next)
      {
        exploded_edge *eedge
  	= eg.add_edge (const_cast<exploded_node *> (this), next, NULL,
- 		       change,
  		       new rewind_info_t (tmp_setjmp_record, longjmp_call));
  
        /* For any diagnostics that were queued here (such as leaks) we want
--- 1493,1514 ----
    new_region_model->on_longjmp (longjmp_call, setjmp_call,
  				setjmp_point.get_stack_depth (), ctxt);
  
+   /* Detect leaks in the new state relative to the old state.  */
+   program_state::detect_leaks (get_state (), *new_state, NULL,
+ 				eg.get_ext_state (), ctxt);
+ 
    program_point next_point
      = program_point::after_supernode (setjmp_point.get_supernode (),
  				      setjmp_point.get_call_string ());
  
!   exploded_node *next
!     = eg.get_or_create_node (next_point, *new_state, this);
  
    /* Create custom exploded_edge for a longjmp.  */
    if (next)
      {
        exploded_edge *eedge
  	= eg.add_edge (const_cast<exploded_node *> (this), next, NULL,
  		       new rewind_info_t (tmp_setjmp_record, longjmp_call));
  
        /* For any diagnostics that were queued here (such as leaks) we want
*************** exploded_node::on_longjmp (exploded_grap
*** 1335,1341 ****
     leaks.  */
  
  void
! exploded_node::detect_leaks (exploded_graph &eg) const
  {
    LOG_FUNC_1 (eg.get_logger (), "EN: %i", m_index);
  
--- 1554,1560 ----
     leaks.  */
  
  void
! exploded_node::detect_leaks (exploded_graph &eg)
  {
    LOG_FUNC_1 (eg.get_logger (), "EN: %i", m_index);
  
*************** exploded_node::detect_leaks (exploded_gr
*** 1357,1369 ****
  
    gcc_assert (new_state.m_region_model);
  
!   purge_stats stats;
    impl_region_model_context ctxt (eg, this,
! 				  &old_state, &new_state,
! 				  NULL,
  				  get_stmt ());
!   new_state.m_region_model->pop_frame (region_id::null (),
! 				       true, &stats, &ctxt);
  }
  
  /* Dump the successors and predecessors of this enode to OUTF.  */
--- 1576,1589 ----
  
    gcc_assert (new_state.m_region_model);
  
!   uncertainty_t uncertainty;
    impl_region_model_context ctxt (eg, this,
! 				  &old_state, &new_state, &uncertainty,
  				  get_stmt ());
!   const svalue *result = NULL;
!   new_state.m_region_model->pop_frame (NULL, &result, &ctxt);
!   program_state::detect_leaks (old_state, new_state, result,
! 			       eg.get_ext_state (), &ctxt);
  }
  
  /* Dump the successors and predecessors of this enode to OUTF.  */
*************** rewind_info_t::add_events_to_path (check
*** 1448,1461 ****
  /* exploded_edge's ctor.  */
  
  exploded_edge::exploded_edge (exploded_node *src, exploded_node *dest,
- 			      const extrinsic_state &ext_state,
  			      const superedge *sedge,
- 			      const state_change &change,
  			      custom_info_t *custom_info)
! : dedge<eg_traits> (src, dest), m_sedge (sedge), m_change (change),
    m_custom_info (custom_info)
  {
-   change.validate (dest->get_state (), ext_state);
  }
  
  /* exploded_edge's dtor.  */
--- 1668,1678 ----
  /* exploded_edge's ctor.  */
  
  exploded_edge::exploded_edge (exploded_node *src, exploded_node *dest,
  			      const superedge *sedge,
  			      custom_info_t *custom_info)
! : dedge<eg_traits> (src, dest), m_sedge (sedge),
    m_custom_info (custom_info)
  {
  }
  
  /* exploded_edge's dtor.  */
*************** exploded_edge::~exploded_edge ()
*** 1469,1478 ****
     Use the label of the underlying superedge, if any.  */
  
  void
! exploded_edge::dump_dot (graphviz_out *gv, const dump_args_t &args) const
  {
    pretty_printer *pp = gv->get_pp ();
  
    const char *style = "\"solid,bold\"";
    const char *color = "black";
    int weight = 10;
--- 1686,1707 ----
     Use the label of the underlying superedge, if any.  */
  
  void
! exploded_edge::dump_dot (graphviz_out *gv, const dump_args_t &) const
  {
    pretty_printer *pp = gv->get_pp ();
  
+   m_src->dump_dot_id (pp);
+   pp_string (pp, " -> ");
+   m_dest->dump_dot_id (pp);
+   dump_dot_label (pp);
+ }
+ 
+ /* Second half of exploded_edge::dump_dot.  This is split out
+    for use by trimmed_graph::dump_dot and base_feasible_edge::dump_dot.  */
+ 
+ void
+ exploded_edge::dump_dot_label (pretty_printer *pp) const
+ {
    const char *style = "\"solid,bold\"";
    const char *color = "black";
    int weight = 10;
*************** exploded_edge::dump_dot (graphviz_out *g
*** 1503,1511 ****
        style = "\"dotted\"";
      }
  
-   m_src->dump_dot_id (pp);
-   pp_string (pp, " -> ");
-   m_dest->dump_dot_id (pp);
    pp_printf (pp,
  	     (" [style=%s, color=%s, weight=%d, constraint=%s,"
  	      " headlabel=\""),
--- 1732,1737 ----
*************** exploded_edge::dump_dot (graphviz_out *g
*** 1516,1527 ****
    else if (m_custom_info)
      m_custom_info->print (pp);
  
-   m_change.dump (pp, args.m_eg.get_ext_state ());
    //pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/false);
  
    pp_printf (pp, "\"];\n");
  }
  
  /* struct stats.  */
  
  /* stats' ctor.  */
--- 1742,1776 ----
    else if (m_custom_info)
      m_custom_info->print (pp);
  
    //pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/false);
  
    pp_printf (pp, "\"];\n");
  }
  
+ /* Return a new json::object of the form
+    {"src_idx": int, the index of the source exploded edge,
+     "dst_idx": int, the index of the destination exploded edge,
+     "sedge": (optional) object for the superedge, if any,
+     "custom": (optional) str, a description, if this is a custom edge}.  */
+ 
+ json::object *
+ exploded_edge::to_json () const
+ {
+   json::object *eedge_obj = new json::object ();
+   eedge_obj->set ("src_idx", new json::integer_number (m_src->m_index));
+   eedge_obj->set ("dst_idx", new json::integer_number (m_dest->m_index));
+   if (m_sedge)
+     eedge_obj->set ("sedge", m_sedge->to_json ());
+   if (m_custom_info)
+     {
+       pretty_printer pp;
+       pp_format_decoder (&pp) = default_tree_printer;
+       m_custom_info->print (&pp);
+       eedge_obj->set ("custom", new json::string (pp_formatted_text (&pp)));
+     }
+   return eedge_obj;
+ }
+ 
  /* struct stats.  */
  
  /* stats' ctor.  */
*************** strongly_connected_components::dump () c
*** 1614,1619 ****
--- 1863,1879 ----
      }
  }
  
+ /* Return a new json::array of per-snode SCC ids.  */
+ 
+ json::array *
+ strongly_connected_components::to_json () const
+ {
+   json::array *scc_arr = new json::array ();
+   for (int i = 0; i < m_sg.num_nodes (); i++)
+     scc_arr->append (new json::integer_number (get_scc_id (i)));
+   return scc_arr;
+ }
+ 
  /* Subroutine of strongly_connected_components's ctor, part of Tarjan's
     SCC algorithm.  */
  
*************** strongly_connected_components::strong_co
*** 1635,1640 ****
--- 1895,1903 ----
    superedge *sedge;
    FOR_EACH_VEC_ELT (v_snode->m_succs, i, sedge)
      {
+       if (sedge->get_kind () != SUPEREDGE_CFG_EDGE
+ 	  && sedge->get_kind () != SUPEREDGE_INTRAPROCEDURAL_CALL)
+ 	continue;
        supernode *w_snode = sedge->m_dest;
        per_node_data *w = &m_per_node[w_snode->m_index];
        if (w->m_index == -1)
*************** worklist::add_node (exploded_node *enode
*** 1710,1716 ****
  /* Comparator for implementing worklist::key_t comparison operators.
     Return negative if KA is before KB
     Return positive if KA is after KB
!    Return 0 if they are equal.  */
  
  int
  worklist::key_t::cmp (const worklist::key_t &ka, const worklist::key_t &kb)
--- 1973,1986 ----
  /* Comparator for implementing worklist::key_t comparison operators.
     Return negative if KA is before KB
     Return positive if KA is after KB
!    Return 0 if they are equal.
! 
!    The ordering of the worklist is critical for performance and for
!    avoiding node explosions.  Ideally we want all enodes at a CFG join-point
!    with the same callstring to be sorted next to each other in the worklist
!    so that a run of consecutive enodes can be merged and processed "in bulk"
!    rather than individually or pairwise, minimizing the number of new enodes
!    created.  */
  
  int
  worklist::key_t::cmp (const worklist::key_t &ka, const worklist::key_t &kb)
*************** worklist::key_t::cmp (const worklist::ke
*** 1729,1736 ****
        && point_b.get_function () != NULL
        && point_a.get_function () != point_b.get_function ())
      {
!       return ka.m_worklist.m_plan.cmp_function (point_a.get_function (),
! 						point_b.get_function ());
      }
  
    /* First, order by SCC.  */
--- 1999,2007 ----
        && point_b.get_function () != NULL
        && point_a.get_function () != point_b.get_function ())
      {
!       if (int cmp = ka.m_worklist.m_plan.cmp_function (point_a.get_function (),
! 						       point_b.get_function ()))
! 	return cmp;
      }
  
    /* First, order by SCC.  */
*************** worklist::key_t::cmp (const worklist::ke
*** 1762,1767 ****
--- 2033,2043 ----
  
    gcc_assert (snode_a == snode_b);
  
+   /* The points might vary by callstring; try sorting by callstring.  */
+   int cs_cmp = call_string::cmp (call_string_a, call_string_b);
+   if (cs_cmp)
+     return cs_cmp;
+ 
    /* Order within supernode via program point.  */
    int within_snode_cmp
      = function_point::cmp_within_supernode (point_a.get_function_point (),
*************** worklist::key_t::cmp (const worklist::ke
*** 1769,1779 ****
    if (within_snode_cmp)
      return within_snode_cmp;
  
-   /* The points might vary by callstring; try sorting by callstring.  */
-   int cs_cmp = call_string::cmp (call_string_a, call_string_b);
-   if (cs_cmp)
-     return cs_cmp;
- 
    /* Otherwise, we ought to have the same program_point.  */
    gcc_assert (point_a == point_b);
  
--- 2045,2050 ----
*************** worklist::key_t::cmp (const worklist::ke
*** 1781,1800 ****
    const program_state &state_b = kb.m_enode->get_state ();
  
    /* Sort by sm-state, so that identical sm-states are grouped
!      together in the worklist.
!      For now, sort by the hash value (might not be deterministic).  */
    for (unsigned sm_idx = 0; sm_idx < state_a.m_checker_states.length ();
         ++sm_idx)
      {
        sm_state_map *smap_a = state_a.m_checker_states[sm_idx];
        sm_state_map *smap_b = state_b.m_checker_states[sm_idx];
  
!       hashval_t hash_a = smap_a->hash ();
!       hashval_t hash_b = smap_b->hash ();
!       if (hash_a < hash_b)
! 	return -1;
!       else if (hash_a > hash_b)
! 	return 1;
      }
  
    /* Otherwise, we have two enodes at the same program point but with
--- 2052,2066 ----
    const program_state &state_b = kb.m_enode->get_state ();
  
    /* Sort by sm-state, so that identical sm-states are grouped
!      together in the worklist.  */
    for (unsigned sm_idx = 0; sm_idx < state_a.m_checker_states.length ();
         ++sm_idx)
      {
        sm_state_map *smap_a = state_a.m_checker_states[sm_idx];
        sm_state_map *smap_b = state_b.m_checker_states[sm_idx];
  
!       if (int smap_cmp = sm_state_map::cmp (*smap_a, *smap_b))
! 	return smap_cmp;
      }
  
    /* Otherwise, we have two enodes at the same program point but with
*************** worklist::key_t::cmp (const worklist::ke
*** 1804,1809 ****
--- 2070,2091 ----
    return ka.m_enode->m_index - kb.m_enode->m_index;
  }
  
+ /* Return a new json::object of the form
+    {"scc" : [per-snode-IDs]},  */
+ 
+ json::object *
+ worklist::to_json () const
+ {
+   json::object *worklist_obj = new json::object ();
+ 
+   worklist_obj->set ("scc", m_scc.to_json ());
+ 
+   /* The following field isn't yet being JSONified:
+      queue_t m_queue;  */
+ 
+   return worklist_obj;
+ }
+ 
  /* exploded_graph's ctor.  */
  
  exploded_graph::exploded_graph (const supergraph &sg, logger *logger,
*************** exploded_graph::exploded_graph (const su
*** 1816,1829 ****
    m_ext_state (ext_state),
    m_purge_map (purge_map),
    m_plan (plan),
!   m_diagnostic_manager (logger, verbosity),
    m_global_stats (m_sg.num_nodes ()),
    m_functionless_stats (m_sg.num_nodes ()),
    m_PK_AFTER_SUPERNODE_per_snode (m_sg.num_nodes ())
  {
!   m_origin = get_or_create_node (program_point (function_point (NULL, NULL,
! 								0, PK_ORIGIN),
! 						call_string ()),
  				 program_state (ext_state), NULL);
    for (int i = 0; i < m_sg.num_nodes (); i++)
      m_PK_AFTER_SUPERNODE_per_snode.quick_push (i);
--- 2098,2109 ----
    m_ext_state (ext_state),
    m_purge_map (purge_map),
    m_plan (plan),
!   m_diagnostic_manager (logger, ext_state.get_engine (), verbosity),
    m_global_stats (m_sg.num_nodes ()),
    m_functionless_stats (m_sg.num_nodes ()),
    m_PK_AFTER_SUPERNODE_per_snode (m_sg.num_nodes ())
  {
!   m_origin = get_or_create_node (program_point::origin (),
  				 program_state (ext_state), NULL);
    for (int i = 0; i < m_sg.num_nodes (); i++)
      m_PK_AFTER_SUPERNODE_per_snode.quick_push (i);
*************** exploded_graph::~exploded_graph ()
*** 1855,1885 ****
  exploded_node *
  exploded_graph::add_function_entry (function *fun)
  {
    program_point point = program_point::from_function_entry (m_sg, fun);
    program_state state (m_ext_state);
!   impl_region_model_context ctxt (&state, NULL, m_ext_state, get_logger ());
!   state.m_region_model->push_frame (fun, NULL, &ctxt);
  
    if (!state.m_valid)
      return NULL;
  
    exploded_node *enode = get_or_create_node (point, state, NULL);
!   /* We should never fail to add such a node.  */
!   gcc_assert (enode);
!   state_change change;
!   add_edge (m_origin, enode, NULL, change);
    return enode;
  }
  
  /* Get or create an exploded_node for (POINT, STATE).
     If a new node is created, it is added to the worklist.
!    If CHANGE is non-NULL, use it to suppress some purging of state,
!    to make generation of state_change_event instances easier.  */
  
  exploded_node *
  exploded_graph::get_or_create_node (const program_point &point,
  				    const program_state &state,
! 				    state_change *change)
  {
    logger * const logger = get_logger ();
    LOG_FUNC (logger);
--- 2135,2180 ----
  exploded_node *
  exploded_graph::add_function_entry (function *fun)
  {
+   gcc_assert (gimple_has_body_p (fun->decl));
+ 
+   /* Be idempotent.  */
+   if (m_functions_with_enodes.contains (fun))
+     {
+       logger * const logger = get_logger ();
+        if (logger)
+ 	logger->log ("entrypoint for %qE already exists", fun->decl);
+       return NULL;
+     }
+ 
    program_point point = program_point::from_function_entry (m_sg, fun);
    program_state state (m_ext_state);
!   state.push_frame (m_ext_state, fun);
  
    if (!state.m_valid)
      return NULL;
  
    exploded_node *enode = get_or_create_node (point, state, NULL);
!   if (!enode)
!     return NULL;
! 
!   add_edge (m_origin, enode, NULL);
! 
!   m_functions_with_enodes.add (fun);
! 
    return enode;
  }
  
  /* Get or create an exploded_node for (POINT, STATE).
     If a new node is created, it is added to the worklist.
! 
!    Use ENODE_FOR_DIAG, a pre-existing enode, for any diagnostics
!    that need to be emitted (e.g. when purging state *before* we have
!    a new enode).  */
  
  exploded_node *
  exploded_graph::get_or_create_node (const program_point &point,
  				    const program_state &state,
! 				    exploded_node *enode_for_diag)
  {
    logger * const logger = get_logger ();
    LOG_FUNC (logger);
*************** exploded_graph::get_or_create_node (cons
*** 1893,1899 ****
        logger->end_log_line ();
        logger->start_log_line ();
        pp_string (pp, "state: ");
!       state.dump_to_pp (m_ext_state, true, pp);
        logger->end_log_line ();
      }
  
--- 2188,2194 ----
        logger->end_log_line ();
        logger->start_log_line ();
        pp_string (pp, "state: ");
!       state.dump_to_pp (m_ext_state, true, false, pp);
        logger->end_log_line ();
      }
  
*************** exploded_graph::get_or_create_node (cons
*** 1914,1920 ****
  
    /* Prune state to try to improve the chances of a cache hit,
       avoiding generating redundant nodes.  */
!   program_state pruned_state = state.prune_for_point (*this, point, change);
  
    pruned_state.validate (get_ext_state ());
  
--- 2209,2217 ----
  
    /* Prune state to try to improve the chances of a cache hit,
       avoiding generating redundant nodes.  */
!   uncertainty_t uncertainty;
!   program_state pruned_state
!     = state.prune_for_point (*this, point, enode_for_diag, &uncertainty);
  
    pruned_state.validate (get_ext_state ());
  
*************** exploded_graph::get_or_create_node (cons
*** 1925,1933 ****
        pretty_printer *pp = logger->get_printer ();
        logger->start_log_line ();
        pp_string (pp, "pruned_state: ");
!       pruned_state.dump_to_pp (m_ext_state, true, pp);
        logger->end_log_line ();
!       pruned_state.m_region_model->dump_to_pp (logger->get_printer (), true);
      }
  
    stats *per_fn_stats = get_or_create_function_stats (point.get_function ());
--- 2222,2231 ----
        pretty_printer *pp = logger->get_printer ();
        logger->start_log_line ();
        pp_string (pp, "pruned_state: ");
!       pruned_state.dump_to_pp (m_ext_state, true, false, pp);
        logger->end_log_line ();
!       pruned_state.m_region_model->dump_to_pp (logger->get_printer (), true,
! 						false);
      }
  
    stats *per_fn_stats = get_or_create_function_stats (point.get_function ());
*************** exploded_graph::get_or_create_node (cons
*** 1967,1973 ****
  	  /* This merges successfully within the loop.  */
  
  	  program_state merged_state (m_ext_state);
! 	  if (pruned_state.can_merge_with_p (existing_state, m_ext_state,
  					     &merged_state))
  	    {
  	      if (logger)
--- 2265,2271 ----
  	  /* This merges successfully within the loop.  */
  
  	  program_state merged_state (m_ext_state);
! 	  if (pruned_state.can_merge_with_p (existing_state, point,
  					     &merged_state))
  	    {
  	      if (logger)
*************** exploded_graph::get_or_create_node (cons
*** 1979,1986 ****
  		 relationship to those of the input state, and thus to those
  		 of CHANGE, so we must purge any svalue_ids from *CHANGE.  */
  	      ps.set_state (merged_state);
- 	      if (change)
- 		change->on_svalue_purge (svalue_id::from_int (0));
  
  	      if (exploded_node **slot = m_point_and_state_to_node.get (&ps))
  		{
--- 2277,2282 ----
*************** exploded_graph::get_or_create_node (cons
*** 2003,2014 ****
    /* Impose a limit on the number of enodes per program point, and
       simply stop if we exceed it.  */
    if ((int)per_point_data->m_enodes.length ()
!       > param_analyzer_max_enodes_per_program_point)
      {
        if (logger)
! 	logger->log ("not creating enode; too many at program point");
        warning_at (point.get_location (), OPT_Wanalyzer_too_complex,
! 		  "terminating analysis for this program point");
        per_point_data->m_excess_enodes++;
        return NULL;
      }
--- 2299,2315 ----
    /* Impose a limit on the number of enodes per program point, and
       simply stop if we exceed it.  */
    if ((int)per_point_data->m_enodes.length ()
!       >= param_analyzer_max_enodes_per_program_point)
      {
+       pretty_printer pp;
+       point.print (&pp, format (false));
+       print_enode_indices (&pp, per_point_data->m_enodes);
        if (logger)
! 	logger->log ("not creating enode; too many at program point: %s",
! 		     pp_formatted_text (&pp));
        warning_at (point.get_location (), OPT_Wanalyzer_too_complex,
! 		  "terminating analysis for this program point: %s",
! 		  pp_formatted_text (&pp));
        per_point_data->m_excess_enodes++;
        return NULL;
      }
*************** exploded_graph::get_or_create_node (cons
*** 2042,2048 ****
        logger->end_log_line ();
        logger->start_log_line ();
        pp_string (pp, "pruned_state: ");
!       pruned_state.dump_to_pp (m_ext_state, true, pp);
        logger->end_log_line ();
      }
  
--- 2343,2349 ----
        logger->end_log_line ();
        logger->start_log_line ();
        pp_string (pp, "pruned_state: ");
!       pruned_state.dump_to_pp (m_ext_state, true, false, pp);
        logger->end_log_line ();
      }
  
*************** exploded_graph::get_or_create_node (cons
*** 2059,2069 ****
  exploded_edge *
  exploded_graph::add_edge (exploded_node *src, exploded_node *dest,
  			  const superedge *sedge,
- 			  const state_change &change,
  			  exploded_edge::custom_info_t *custom_info)
  {
!   exploded_edge *e = new exploded_edge (src, dest, m_ext_state,
! 					sedge, change, custom_info);
    digraph<eg_traits>::add_edge (e);
    return e;
  }
--- 2360,2371 ----
  exploded_edge *
  exploded_graph::add_edge (exploded_node *src, exploded_node *dest,
  			  const superedge *sedge,
  			  exploded_edge::custom_info_t *custom_info)
  {
!   if (get_logger ())
!     get_logger ()->log ("creating edge EN: %i -> EN: %i",
! 			src->m_index, dest->m_index);
!   exploded_edge *e = new exploded_edge (src, dest, sedge, custom_info);
    digraph<eg_traits>::add_edge (e);
    return e;
  }
*************** get_or_create_per_program_point_data (co
*** 2083,2088 ****
--- 2385,2403 ----
    return per_point_data;
  }
  
+ /* Get this graph's per-program-point-data for POINT if there is any,
+    otherwise NULL.  */
+ 
+ per_program_point_data *
+ exploded_graph::get_per_program_point_data (const program_point &point) const
+ {
+   if (per_program_point_data **slot
+       = const_cast <point_map_t &> (m_per_point_data).get (&point))
+     return *slot;
+ 
+   return NULL;
+ }
+ 
  /* Ensure that this graph has per-call_string-data for CS;
     borrow a pointer to it.  */
  
*************** exploded_graph::get_per_function_data (f
*** 2125,2162 ****
    return NULL;
  }
  
! /* Return true if NODE and FUN should be traversed directly, rather than
     called via other functions.  */
  
  static bool
! toplevel_function_p (cgraph_node *node, function *fun, logger *logger)
  {
!   /* TODO: better logic here
!      e.g. only if more than one caller, and significantly complicated.
!      Perhaps some whole-callgraph analysis to decide if it's worth summarizing
!      an edge, and if so, we need summaries.  */
!   if (flag_analyzer_call_summaries)
!     {
!       int num_call_sites = 0;
!       for (cgraph_edge *edge = node->callers; edge; edge = edge->next_caller)
! 	++num_call_sites;
! 
!       /* For now, if there's more than one in-edge, and we want call
! 	 summaries, do it at the top level so that there's a chance
! 	 we'll have a summary when we need one.  */
!       if (num_call_sites > 1)
! 	{
! 	  if (logger)
! 	    logger->log ("traversing %qE (%i call sites)",
! 			 fun->decl, num_call_sites);
! 	  return true;
! 	}
!     }
! 
!   if (!TREE_PUBLIC (fun->decl))
      {
        if (logger)
! 	logger->log ("not traversing %qE (static)", fun->decl);
        return false;
      }
  
--- 2440,2466 ----
    return NULL;
  }
  
! /* Return true if FUN should be traversed directly, rather than only as
     called via other functions.  */
  
  static bool
! toplevel_function_p (function *fun, logger *logger)
  {
!   /* Don't directly traverse into functions that have an "__analyzer_"
!      prefix.  Doing so is useful for the analyzer test suite, allowing
!      us to have functions that are called in traversals, but not directly
!      explored, thus testing how the analyzer handles calls and returns.
!      With this, we can have DejaGnu directives that cover just the case
!      of where a function is called by another function, without generating
!      excess messages from the case of the first function being traversed
!      directly.  */
! #define ANALYZER_PREFIX "__analyzer_"
!   if (!strncmp (IDENTIFIER_POINTER (DECL_NAME (fun->decl)), ANALYZER_PREFIX,
! 		strlen (ANALYZER_PREFIX)))
      {
        if (logger)
! 	logger->log ("not traversing %qE (starts with %qs)",
! 		     fun->decl, ANALYZER_PREFIX);
        return false;
      }
  
*************** exploded_graph::build_initial_worklist (
*** 2179,2185 ****
    FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (node)
    {
      function *fun = node->get_fun ();
!     if (!toplevel_function_p (node, fun, logger))
        continue;
      exploded_node *enode = add_function_entry (fun);
      if (logger)
--- 2483,2489 ----
    FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (node)
    {
      function *fun = node->get_fun ();
!     if (!toplevel_function_p (fun, logger))
        continue;
      exploded_node *enode = add_function_entry (fun);
      if (logger)
*************** exploded_graph::process_worklist ()
*** 2216,2221 ****
--- 2520,2531 ----
        if (logger)
  	logger->log ("next to process: EN: %i", node->m_index);
  
+       /* If we have a run of nodes that are before-supernode, try merging and
+ 	 processing them together, rather than pairwise or individually.  */
+       if (flag_analyzer_state_merge && node != m_origin)
+ 	if (maybe_process_run_of_before_supernode_enodes (node))
+ 	  goto handle_limit;
+ 
        /* Avoid exponential explosions of nodes by attempting to merge
  	 nodes that are at the same program point and which have
  	 sufficiently similar state.  */
*************** exploded_graph::process_worklist ()
*** 2234,2239 ****
--- 2544,2550 ----
  
  	    if (node->get_point () == node_2->get_point ())
  	      {
+ 		const program_point &point = node->get_point ();
  		if (logger)
  		  {
  		    format f (false);
*************** exploded_graph::process_worklist ()
*** 2242,2251 ****
  		    logger->log_partial
  		      ("got potential merge EN: %i and EN: %i at ",
  		       node->m_index, node_2->m_index);
! 		    node->get_point ().print (pp, f);
  		    logger->end_log_line ();
  		  }
- 
  		const program_state &state = node->get_state ();
  		const program_state &state_2 = node_2->get_state ();
  
--- 2553,2561 ----
  		    logger->log_partial
  		      ("got potential merge EN: %i and EN: %i at ",
  		       node->m_index, node_2->m_index);
! 		    point.print (pp, f);
  		    logger->end_log_line ();
  		  }
  		const program_state &state = node->get_state ();
  		const program_state &state_2 = node_2->get_state ();
  
*************** exploded_graph::process_worklist ()
*** 2254,2262 ****
  		gcc_assert (state != state_2);
  
  		program_state merged_state (m_ext_state);
! 		state_change change;
! 		if (state.can_merge_with_p (state_2, m_ext_state,
! 					    &merged_state))
  		  {
  		    if (logger)
  		      logger->log ("merging EN: %i and EN: %i",
--- 2564,2570 ----
  		gcc_assert (state != state_2);
  
  		program_state merged_state (m_ext_state);
! 		if (state.can_merge_with_p (state_2, point, &merged_state))
  		  {
  		    if (logger)
  		      logger->log ("merging EN: %i and EN: %i",
*************** exploded_graph::process_worklist ()
*** 2265,2271 ****
  		    if (merged_state == state)
  		      {
  			/* Then merge node_2 into node by adding an edge.  */
! 			add_edge (node_2, node, NULL, change);
  
  			/* Remove node_2 from the worklist.  */
  			m_worklist.take_next ();
--- 2573,2579 ----
  		    if (merged_state == state)
  		      {
  			/* Then merge node_2 into node by adding an edge.  */
! 			add_edge (node_2, node, NULL);
  
  			/* Remove node_2 from the worklist.  */
  			m_worklist.take_next ();
*************** exploded_graph::process_worklist ()
*** 2278,2284 ****
  			/* Then merge node into node_2, and leave node_2
  			   in the worklist, to be processed on the next
  			   iteration.  */
! 			add_edge (node, node_2, NULL, change);
  			node->set_status (exploded_node::STATUS_MERGER);
  			continue;
  		      }
--- 2586,2592 ----
  			/* Then merge node into node_2, and leave node_2
  			   in the worklist, to be processed on the next
  			   iteration.  */
! 			add_edge (node, node_2, NULL);
  			node->set_status (exploded_node::STATUS_MERGER);
  			continue;
  		      }
*************** exploded_graph::process_worklist ()
*** 2294,2300 ****
  			   states, adding to the worklist.  */
  			exploded_node *merged_enode
  			  = get_or_create_node (node->get_point (),
! 						merged_state, &change);
  			if (merged_enode == NULL)
  			  continue;
  
--- 2602,2608 ----
  			   states, adding to the worklist.  */
  			exploded_node *merged_enode
  			  = get_or_create_node (node->get_point (),
! 						merged_state, node);
  			if (merged_enode == NULL)
  			  continue;
  
*************** exploded_graph::process_worklist ()
*** 2323,2329 ****
  			  m_worklist.add_node (merged_enode);
  			else
  			  {
! 			    add_edge (node, merged_enode, NULL, change);
  			    node->set_status (exploded_node::STATUS_MERGER);
  			  }
  
--- 2631,2637 ----
  			  m_worklist.add_node (merged_enode);
  			else
  			  {
! 			    add_edge (node, merged_enode, NULL);
  			    node->set_status (exploded_node::STATUS_MERGER);
  			  }
  
*************** exploded_graph::process_worklist ()
*** 2331,2337 ****
  			  m_worklist.add_node (merged_enode);
  			else
  			  {
! 			    add_edge (node_2, merged_enode, NULL, change);
  			    node_2->set_status (exploded_node::STATUS_MERGER);
  			  }
  
--- 2639,2645 ----
  			  m_worklist.add_node (merged_enode);
  			else
  			  {
! 			    add_edge (node_2, merged_enode, NULL);
  			    node_2->set_status (exploded_node::STATUS_MERGER);
  			  }
  
*************** exploded_graph::process_worklist ()
*** 2347,2352 ****
--- 2655,2661 ----
  
        process_node (node);
  
+     handle_limit:
        /* Impose a hard limit on the number of exploded nodes, to ensure
  	 that the analysis terminates in the face of pathological state
  	 explosion (or bugs).
*************** exploded_graph::process_worklist ()
*** 2374,2379 ****
--- 2683,2885 ----
      }
  }
  
+ /* Attempt to process a consecutive run of sufficiently-similar nodes in
+    the worklist at a CFG join-point (having already popped ENODE from the
+    head of the worklist).
+ 
+    If ENODE's point is of the form (before-supernode, SNODE) and the next
+    nodes in the worklist are a consecutive run of enodes of the same form,
+    for the same supernode as ENODE (but potentially from different in-edges),
+    process them all together, setting their status to STATUS_BULK_MERGED,
+    and return true.
+    Otherwise, return false, in which case ENODE must be processed in the
+    normal way.
+ 
+    When processing them all together, generate successor states based
+    on phi nodes for the appropriate CFG edges, and then attempt to merge
+    these states into a minimal set of merged successor states, partitioning
+    the inputs by merged successor state.
+ 
+    Create new exploded nodes for all of the merged states, and add edges
+    connecting the input enodes to the corresponding merger exploded nodes.
+ 
+    We hope we have a much smaller number of merged successor states
+    compared to the number of input enodes - ideally just one,
+    if all successor states can be merged.
+ 
+    Processing and merging many together as one operation rather than as
+    pairs avoids scaling issues where per-pair mergers could bloat the
+    graph with merger nodes (especially so after switch statements).  */
+ 
+ bool
+ exploded_graph::
+ maybe_process_run_of_before_supernode_enodes (exploded_node *enode)
+ {
+   /* A struct for tracking per-input state.  */
+   struct item
+   {
+     item (exploded_node *input_enode)
+     : m_input_enode (input_enode),
+       m_processed_state (input_enode->get_state ()),
+       m_merger_idx (-1)
+     {}
+ 
+     exploded_node *m_input_enode;
+     program_state m_processed_state;
+     int m_merger_idx;
+   };
+ 
+   gcc_assert (enode->get_status () == exploded_node::STATUS_WORKLIST);
+   gcc_assert (enode->m_succs.length () == 0);
+ 
+   const program_point &point = enode->get_point ();
+ 
+   if (point.get_kind () != PK_BEFORE_SUPERNODE)
+     return false;
+ 
+   const supernode *snode = point.get_supernode ();
+ 
+   logger * const logger = get_logger ();
+   LOG_SCOPE (logger);
+ 
+   /* Find a run of enodes in the worklist that are before the same supernode,
+      but potentially from different in-edges.  */
+   auto_vec <exploded_node *> enodes;
+   enodes.safe_push (enode);
+   while (exploded_node *enode_2 = m_worklist.peek_next ())
+     {
+       gcc_assert (enode_2->get_status ()
+ 		  == exploded_node::STATUS_WORKLIST);
+       gcc_assert (enode_2->m_succs.length () == 0);
+ 
+       const program_point &point_2 = enode_2->get_point ();
+ 
+       if (point_2.get_kind () == PK_BEFORE_SUPERNODE
+ 	  && point_2.get_supernode () == snode
+ 	  && point_2.get_call_string () == point.get_call_string ())
+ 	{
+ 	  enodes.safe_push (enode_2);
+ 	  m_worklist.take_next ();
+ 	}
+       else
+ 	break;
+     }
+ 
+   /* If the only node is ENODE, then give up.  */
+   if (enodes.length () == 1)
+     return false;
+ 
+   if (logger)
+     logger->log ("got run of %i enodes for SN: %i",
+ 		 enodes.length (), snode->m_index);
+ 
+   /* All of these enodes have a shared successor point (even if they
+      were for different in-edges).  */
+   program_point next_point (point.get_next ());
+ 
+   /* Calculate the successor state for each enode in enodes.  */
+   auto_delete_vec<item> items (enodes.length ());
+   unsigned i;
+   exploded_node *iter_enode;
+   FOR_EACH_VEC_ELT (enodes, i, iter_enode)
+     {
+       item *it = new item (iter_enode);
+       items.quick_push (it);
+       const program_state &state = iter_enode->get_state ();
+       program_state *next_state = &it->m_processed_state;
+       const program_point &iter_point = iter_enode->get_point ();
+       if (const superedge *iter_sedge = iter_point.get_from_edge ())
+ 	{
+ 	  uncertainty_t uncertainty;
+ 	  impl_region_model_context ctxt (*this, iter_enode,
+ 					  &state, next_state,
+ 					  &uncertainty, NULL);
+ 	  const cfg_superedge *last_cfg_superedge
+ 	    = iter_sedge->dyn_cast_cfg_superedge ();
+ 	  if (last_cfg_superedge)
+ 	    next_state->m_region_model->update_for_phis
+ 	      (snode, last_cfg_superedge, &ctxt);
+ 	}
+     }
+ 
+   /* Attempt to partition the items into a set of merged states.
+      We hope we have a much smaller number of merged states
+      compared to the number of input enodes - ideally just one,
+      if all can be merged.  */
+   auto_delete_vec <program_state> merged_states;
+   auto_vec<item *> first_item_for_each_merged_state;
+   item *it;
+   FOR_EACH_VEC_ELT (items, i, it)
+     {
+       const program_state &it_state = it->m_processed_state;
+       program_state *merged_state;
+       unsigned iter_merger_idx;
+       FOR_EACH_VEC_ELT (merged_states, iter_merger_idx, merged_state)
+ 	{
+ 	  program_state merge (m_ext_state);
+ 	  if (it_state.can_merge_with_p (*merged_state, next_point, &merge))
+ 	    {
+ 	      *merged_state = merge;
+ 	      it->m_merger_idx = iter_merger_idx;
+ 	      if (logger)
+ 		logger->log ("reusing merger state %i for item %i (EN: %i)",
+ 			     it->m_merger_idx, i, it->m_input_enode->m_index);
+ 	      goto got_merger;
+ 	    }
+ 	}
+       /* If it couldn't be merged with any existing merged_states,
+ 	 create a new one.  */
+       if (it->m_merger_idx == -1)
+ 	{
+ 	  it->m_merger_idx = merged_states.length ();
+ 	  merged_states.safe_push (new program_state (it_state));
+ 	  first_item_for_each_merged_state.safe_push (it);
+ 	  if (logger)
+ 	    logger->log ("using new merger state %i for item %i (EN: %i)",
+ 			 it->m_merger_idx, i, it->m_input_enode->m_index);
+ 	}
+     got_merger:
+       gcc_assert (it->m_merger_idx >= 0);
+       gcc_assert ((unsigned)it->m_merger_idx < merged_states.length ());
+     }
+ 
+   /* Create merger nodes.  */
+   auto_vec<exploded_node *> next_enodes (merged_states.length ());
+   program_state *merged_state;
+   FOR_EACH_VEC_ELT (merged_states, i, merged_state)
+     {
+       exploded_node *src_enode
+ 	= first_item_for_each_merged_state[i]->m_input_enode;
+       exploded_node *next
+ 	= get_or_create_node (next_point, *merged_state, src_enode);
+       /* "next" could be NULL; we handle that when adding the edges below.  */
+       next_enodes.quick_push (next);
+       if (logger)
+ 	{
+ 	  if (next)
+ 	    logger->log ("using EN: %i for merger state %i", next->m_index, i);
+ 	  else
+ 	    logger->log ("using NULL enode for merger state %i", i);
+ 	}
+     }
+ 
+   /* Create edges from each input enode to the appropriate successor enode.
+      Update the status of the now-processed input enodes.  */
+   FOR_EACH_VEC_ELT (items, i, it)
+     {
+       exploded_node *next = next_enodes[it->m_merger_idx];
+       if (next)
+ 	add_edge (it->m_input_enode, next, NULL);
+       it->m_input_enode->set_status (exploded_node::STATUS_BULK_MERGED);
+     }
+ 
+   if (logger)
+     logger->log ("merged %i in-enodes into %i out-enode(s) at SN: %i",
+ 		 items.length (), merged_states.length (), snode->m_index);
+ 
+   return true;
+ }
+ 
  /* Return true if STMT must appear at the start of its exploded node, and
     thus we can't consolidate its effects within a run of other statements,
     where PREV_STMT was the previous statement.  */
*************** static bool
*** 2382,2394 ****
  stmt_requires_new_enode_p (const gimple *stmt,
  			   const gimple *prev_stmt)
  {
-   /* Stop consolidating at calls to
-      "__analyzer_dump_exploded_nodes", so they always appear at the
-      start of an exploded_node.  */
    if (const gcall *call = dyn_cast <const gcall *> (stmt))
!     if (is_special_named_call_p (call, "__analyzer_dump_exploded_nodes",
! 			 1))
!       return true;
  
    /* If we had a PREV_STMT with an unknown location, and this stmt
       has a known location, then if a state change happens here, it
--- 2888,2910 ----
  stmt_requires_new_enode_p (const gimple *stmt,
  			   const gimple *prev_stmt)
  {
    if (const gcall *call = dyn_cast <const gcall *> (stmt))
!     {
!       /* Stop consolidating at calls to
! 	 "__analyzer_dump_exploded_nodes", so they always appear at the
! 	 start of an exploded_node.  */
!       if (is_special_named_call_p (call, "__analyzer_dump_exploded_nodes",
! 				   1))
! 	return true;
! 
!       /* sm-signal.cc injects an additional custom eedge at "signal" calls
! 	 from the registration enode to the handler enode, separate from the
! 	 regular next state, which defeats the "detect state change" logic
! 	 in process_node.  Work around this via special-casing, to ensure
! 	 we split the enode immediately before any "signal" call.  */
!       if (is_special_named_call_p (call, "signal", 2))
! 	return true;
!     }
  
    /* If we had a PREV_STMT with an unknown location, and this stmt
       has a known location, then if a state change happens here, it
*************** exploded_graph::process_node (exploded_n
*** 2435,2441 ****
        pp_string (pp, "point: ");
        point.print (pp, format (false));
        pp_string (pp, ", state: ");
!       state.dump_to_pp (m_ext_state, true, pp);
        logger->end_log_line ();
      }
  
--- 2951,2957 ----
        pp_string (pp, "point: ");
        point.print (pp, format (false));
        pp_string (pp, ", state: ");
!       state.dump_to_pp (m_ext_state, true, false, pp);
        logger->end_log_line ();
      }
  
*************** exploded_graph::process_node (exploded_n
*** 2451,2463 ****
      case PK_BEFORE_SUPERNODE:
        {
  	program_state next_state (state);
! 	state_change change;
  
  	if (point.get_from_edge ())
  	  {
  	    impl_region_model_context ctxt (*this, node,
! 					    &state, &next_state, &change,
! 					    NULL);
  	    const cfg_superedge *last_cfg_superedge
  	      = point.get_from_edge ()->dyn_cast_cfg_superedge ();
  	    if (last_cfg_superedge)
--- 2967,2979 ----
      case PK_BEFORE_SUPERNODE:
        {
  	program_state next_state (state);
! 	uncertainty_t uncertainty;
  
  	if (point.get_from_edge ())
  	  {
  	    impl_region_model_context ctxt (*this, node,
! 					    &state, &next_state,
! 					    &uncertainty, NULL);
  	    const cfg_superedge *last_cfg_superedge
  	      = point.get_from_edge ()->dyn_cast_cfg_superedge ();
  	    if (last_cfg_superedge)
*************** exploded_graph::process_node (exploded_n
*** 2467,2492 ****
  		 &ctxt);
  	  }
  
! 	if (point.get_supernode ()->m_stmts.length () > 0)
! 	  {
! 	    program_point next_point
! 	      = program_point::before_stmt (point.get_supernode (), 0,
! 					    point.get_call_string ());
! 	    exploded_node *next
! 	      = get_or_create_node (next_point, next_state, &change);
! 	    if (next)
! 	      add_edge (node, next, NULL, change);
! 	  }
! 	else
! 	  {
! 	    program_point next_point
! 	      = program_point::after_supernode (point.get_supernode (),
! 						point.get_call_string ());
! 	    exploded_node *next = get_or_create_node (next_point, next_state,
! 						      &change);
! 	    if (next)
! 	      add_edge (node, next, NULL, change);
! 	  }
        }
        break;
      case PK_BEFORE_STMT:
--- 2983,2992 ----
  		 &ctxt);
  	  }
  
! 	program_point next_point (point.get_next ());
! 	exploded_node *next = get_or_create_node (next_point, next_state, node);
! 	if (next)
! 	  add_edge (node, next, NULL);
        }
        break;
      case PK_BEFORE_STMT:
*************** exploded_graph::process_node (exploded_n
*** 2505,2513 ****
  	   their enode (for which stmt_requires_new_enode_p returns true)
  
  	   Update next_state in-place, to get the result of the one
! 	   or more stmts that are processed.  */
  	program_state next_state (state);
! 	state_change change;
  	const supernode *snode = point.get_supernode ();
  	unsigned stmt_idx;
  	const gimple *prev_stmt = NULL;
--- 3005,3017 ----
  	   their enode (for which stmt_requires_new_enode_p returns true)
  
  	   Update next_state in-place, to get the result of the one
! 	   or more stmts that are processed.
! 
! 	   Split the node in-place if an sm-state-change occurs, so that
! 	   the sm-state-change occurs on an edge where the src enode has
! 	   exactly one stmt, the one that caused the change. */
  	program_state next_state (state);
! 	uncertainty_t uncertainty;
  	const supernode *snode = point.get_supernode ();
  	unsigned stmt_idx;
  	const gimple *prev_stmt = NULL;
*************** exploded_graph::process_node (exploded_n
*** 2525,2541 ****
  		}
  	    prev_stmt = stmt;
  
  	    /* Process the stmt.  */
  	    exploded_node::on_stmt_flags flags
! 	      = node->on_stmt (*this, snode, stmt, &next_state, &change);
  
  	    /* If flags.m_terminate_path, stop analyzing; any nodes/edges
  	       will have been added by on_stmt (e.g. for handling longjmp).  */
  	    if (flags.m_terminate_path)
  	      return;
  
  	    if (flags.m_sm_changes || flag_analyzer_fine_grained)
! 	      break;
  	  }
  	unsigned next_idx = stmt_idx + 1;
  	program_point next_point
--- 3029,3101 ----
  		}
  	    prev_stmt = stmt;
  
+ 	    program_state old_state (next_state);
+ 
  	    /* Process the stmt.  */
  	    exploded_node::on_stmt_flags flags
! 	      = node->on_stmt (*this, snode, stmt, &next_state, &uncertainty);
! 	    node->m_num_processed_stmts++;
  
  	    /* If flags.m_terminate_path, stop analyzing; any nodes/edges
  	       will have been added by on_stmt (e.g. for handling longjmp).  */
  	    if (flags.m_terminate_path)
  	      return;
  
+ 	    if (next_state.m_region_model)
+ 	      {
+ 		impl_region_model_context ctxt (*this, node,
+ 						&old_state, &next_state,
+ 						&uncertainty, stmt);
+ 		program_state::detect_leaks (old_state, next_state, NULL,
+ 					     get_ext_state (), &ctxt);
+ 	      }
+ 
+ 	    unsigned next_idx = stmt_idx + 1;
+ 	    program_point next_point
+ 	      = (next_idx < point.get_supernode ()->m_stmts.length ()
+ 		 ? program_point::before_stmt (point.get_supernode (), next_idx,
+ 					       point.get_call_string ())
+ 		 : program_point::after_supernode (point.get_supernode (),
+ 						   point.get_call_string ()));
+ 	    next_state = next_state.prune_for_point (*this, next_point, node,
+ 						     &uncertainty);
+ 
  	    if (flags.m_sm_changes || flag_analyzer_fine_grained)
! 	      {
! 		program_point split_point
! 		  = program_point::before_stmt (point.get_supernode (),
! 						stmt_idx,
! 						point.get_call_string ());
! 		if (split_point != node->get_point ())
! 		  {
! 		    /* If we're not at the start of NODE, split the enode at
! 		       this stmt, so we have:
! 			 node -> split_enode
! 		       so that when split_enode is processed the next edge
! 		       we add will be:
! 			 split_enode -> next
! 		       and any state change will effectively occur on that
! 		       latter edge, and split_enode will contain just stmt.  */
! 		    if (logger)
! 		      logger->log ("getting split_enode");
! 		    exploded_node *split_enode
! 		      = get_or_create_node (split_point, old_state, node);
! 		    if (!split_enode)
! 		      return;
! 		    /* "stmt" will be reprocessed when split_enode is
! 		       processed.  */
! 		    node->m_num_processed_stmts--;
! 		    if (logger)
! 		      logger->log ("creating edge to split_enode");
! 		    add_edge (node, split_enode, NULL);
! 		    return;
! 		  }
! 		else
! 		  /* If we're at the start of NODE, stop iterating,
! 		     so that an edge will be created from NODE to
! 		     (next_point, next_state) below. */
! 		  break;
! 	      }
  	  }
  	unsigned next_idx = stmt_idx + 1;
  	program_point next_point
*************** exploded_graph::process_node (exploded_n
*** 2544,2553 ****
  					   point.get_call_string ())
  	     : program_point::after_supernode (point.get_supernode (),
  					       point.get_call_string ()));
! 	exploded_node *next = get_or_create_node (next_point,
! 						  next_state, &change);
  	if (next)
! 	  add_edge (node, next, NULL, change);
        }
        break;
      case PK_AFTER_SUPERNODE:
--- 3104,3112 ----
  					   point.get_call_string ())
  	     : program_point::after_supernode (point.get_supernode (),
  					       point.get_call_string ()));
! 	exploded_node *next = get_or_create_node (next_point, next_state, node);
  	if (next)
! 	  add_edge (node, next, NULL);
        }
        break;
      case PK_AFTER_SUPERNODE:
*************** exploded_graph::process_node (exploded_n
*** 2570,2576 ****
  		    logger->log_partial
  		      ("would create function summary for %qE; state: ",
  		       point.get_fndecl ());
! 		    state.dump_to_pp (m_ext_state, true, pp);
  		    logger->end_log_line ();
  		  }
  		per_function_data *per_fn_data
--- 3129,3135 ----
  		    logger->log_partial
  		      ("would create function summary for %qE; state: ",
  		       point.get_fndecl ());
! 		    state.dump_to_pp (m_ext_state, true, false, pp);
  		    logger->end_log_line ();
  		  }
  		per_function_data *per_fn_data
*************** exploded_graph::process_node (exploded_n
*** 2587,2611 ****
  	      logger->log ("considering SN: %i -> SN: %i",
  			   succ->m_src->m_index, succ->m_dest->m_index);
  
- 	    state_change change;
- 
  	    program_point next_point
  	      = program_point::before_supernode (succ->m_dest, succ,
  						 point.get_call_string ());
  	    program_state next_state (state);
! 
! 	    if (!node->on_edge (*this, succ, &next_point, &next_state, &change))
  	      {
  		if (logger)
  		  logger->log ("skipping impossible edge to SN: %i",
  			       succ->m_dest->m_index);
  		continue;
  	      }
- 
  	    exploded_node *next = get_or_create_node (next_point, next_state,
! 						      &change);
  	    if (next)
! 	      add_edge (node, next, succ, change);
  	  }
        }
        break;
--- 3146,3168 ----
  	      logger->log ("considering SN: %i -> SN: %i",
  			   succ->m_src->m_index, succ->m_dest->m_index);
  
  	    program_point next_point
  	      = program_point::before_supernode (succ->m_dest, succ,
  						 point.get_call_string ());
  	    program_state next_state (state);
! 	    uncertainty_t uncertainty;
! 	    if (!node->on_edge (*this, succ, &next_point, &next_state,
! 				&uncertainty))
  	      {
  		if (logger)
  		  logger->log ("skipping impossible edge to SN: %i",
  			       succ->m_dest->m_index);
  		continue;
  	      }
  	    exploded_node *next = get_or_create_node (next_point, next_state,
! 						      node);
  	    if (next)
! 	      add_edge (node, next, succ);
  	  }
        }
        break;
*************** exploded_graph::log_stats () const
*** 2739,2744 ****
--- 3296,3303 ----
  
    LOG_SCOPE (logger);
  
+   m_ext_state.get_engine ()->log_stats (logger);
+ 
    logger->log ("m_sg.num_nodes (): %i", m_sg.num_nodes ());
    logger->log ("m_nodes.length (): %i", m_nodes.length ());
    logger->log ("m_edges.length (): %i", m_edges.length ());
*************** exploded_graph::dump_states_for_supernod
*** 2802,2808 ****
  	{
  	  pretty_printer pp;
  	  pp_format_decoder (&pp) = default_tree_printer;
! 	  enode->get_state ().dump_to_pp (m_ext_state, true, &pp);
  	  fprintf (out, "state %i: EN: %i\n  %s\n",
  		   state_idx++, enode->m_index,
  		   pp_formatted_text (&pp));
--- 3361,3367 ----
  	{
  	  pretty_printer pp;
  	  pp_format_decoder (&pp) = default_tree_printer;
! 	  enode->get_state ().dump_to_pp (m_ext_state, true, false, &pp);
  	  fprintf (out, "state %i: EN: %i\n  %s\n",
  		   state_idx++, enode->m_index,
  		   pp_formatted_text (&pp));
*************** exploded_graph::dump_states_for_supernod
*** 2812,2817 ****
--- 3371,3438 ----
  	   snode->m_index, state_idx);
  }
  
+ /* Return a new json::object of the form
+    {"nodes" : [objs for enodes],
+     "edges" : [objs for eedges],
+     "ext_state": object for extrinsic_state,
+     "diagnostic_manager": object for diagnostic_manager}.  */
+ 
+ json::object *
+ exploded_graph::to_json () const
+ {
+   json::object *egraph_obj = new json::object ();
+ 
+   /* Nodes.  */
+   {
+     json::array *nodes_arr = new json::array ();
+     unsigned i;
+     exploded_node *n;
+     FOR_EACH_VEC_ELT (m_nodes, i, n)
+       nodes_arr->append (n->to_json (m_ext_state));
+     egraph_obj->set ("nodes", nodes_arr);
+   }
+ 
+   /* Edges.  */
+   {
+     json::array *edges_arr = new json::array ();
+     unsigned i;
+     exploded_edge *n;
+     FOR_EACH_VEC_ELT (m_edges, i, n)
+       edges_arr->append (n->to_json ());
+     egraph_obj->set ("edges", edges_arr);
+   }
+ 
+   /* m_sg is JSONified at the top-level.  */
+ 
+   egraph_obj->set ("ext_state", m_ext_state.to_json ());
+   egraph_obj->set ("worklist", m_worklist.to_json ());
+   egraph_obj->set ("diagnostic_manager", m_diagnostic_manager.to_json ());
+ 
+   /* The following fields aren't yet being JSONified:
+      const state_purge_map *const m_purge_map;
+      const analysis_plan &m_plan;
+      stats m_global_stats;
+      function_stat_map_t m_per_function_stats;
+      stats m_functionless_stats;
+      call_string_data_map_t m_per_call_string_data;
+      auto_vec<int> m_PK_AFTER_SUPERNODE_per_snode;  */
+ 
+   return egraph_obj;
+ }
+ 
+ /* class exploded_path.  */
+ 
+ /* Copy ctor.  */
+ 
+ exploded_path::exploded_path (const exploded_path &other)
+ : m_edges (other.m_edges.length ())
+ {
+   int i;
+   const exploded_edge *eedge;
+   FOR_EACH_VEC_ELT (other.m_edges, i, eedge)
+     m_edges.quick_push (eedge);
+ }
+ 
  /* Look for the last use of SEARCH_STMT within this path.
     If found write the edge's index to *OUT_IDX and return true, otherwise
     return false.  */
*************** exploded_path::get_final_enode () const
*** 2850,2958 ****
     feasibility_problem to *OUT.  */
  
  bool
! exploded_path::feasible_p (logger *logger, feasibility_problem **out) const
  {
    LOG_SCOPE (logger);
  
!   /* Traverse the path, updating this model.  */
!   region_model model;
!   for (unsigned i = 0; i < m_edges.length (); i++)
      {
!       const exploded_edge *eedge = m_edges[i];
        if (logger)
  	logger->log ("considering edge %i: EN:%i -> EN:%i",
! 		     i,
  		     eedge->m_src->m_index,
  		     eedge->m_dest->m_index);
-       const exploded_node &src_enode = *eedge->m_src;
-       const program_point &src_point = src_enode.get_point ();
-       if (logger)
- 	{
- 	  logger->start_log_line ();
- 	  src_point.print (logger->get_printer (), format (false));
- 	  logger->end_log_line ();
- 	}
- 
-       if (const gimple *stmt = src_point.get_stmt ())
- 	{
- 	  /* Update cfun and input_location in case of ICE: make it easier to
- 	     track down which source construct we're failing to handle.  */
- 	  auto_cfun sentinel (src_point.get_function ());
- 	  input_location = stmt->location;
- 
- 	  if (const gassign *assign = dyn_cast <const gassign *> (stmt))
- 	    model.on_assignment (assign, NULL);
- 	  else if (const greturn *return_ = dyn_cast <const greturn *> (stmt))
- 	    model.on_return (return_, NULL);
- 	}
- 
-       const superedge *sedge = eedge->m_sedge;
-       if (sedge)
- 	{
- 	  if (logger)
- 	    logger->log ("  sedge: SN:%i -> SN:%i %s",
- 			 sedge->m_src->m_index,
- 			 sedge->m_dest->m_index,
- 			 sedge->get_description (false));
- 
- 	  const gimple *last_stmt = src_point.get_supernode ()->get_last_stmt ();
- 	  if (!model.maybe_update_for_edge (*sedge, last_stmt, NULL))
- 	    {
- 	      if (logger)
- 		{
- 		  logger->log ("rejecting due to region model");
- 		  model.dump_to_pp (logger->get_printer (), false);
- 		}
- 	      if (out)
- 		*out = new feasibility_problem (i, model, *eedge, last_stmt);
- 	      return false;
- 	    }
- 	}
-       else
- 	{
- 	  /* Special-case the initial eedge from the origin node to the
- 	     initial function by pushing a frame for it.  */
- 	  if (i == 0)
- 	    {
- 	      gcc_assert (eedge->m_src->m_index == 0);
- 	      gcc_assert (src_point.get_kind () == PK_ORIGIN);
- 	      gcc_assert (eedge->m_dest->get_point ().get_kind ()
- 			  == PK_BEFORE_SUPERNODE);
- 	      function *fun = eedge->m_dest->get_function ();
- 	      gcc_assert (fun);
- 	      model.push_frame (fun, NULL, NULL);
- 	      if (logger)
- 		logger->log ("  pushing frame for %qD", fun->decl);
- 	    }
- 	  else if (eedge->m_custom_info)
- 	    eedge->m_custom_info->update_model (&model, *eedge);
- 	}
  
!       /* Handle phi nodes on an edge leaving a PK_BEFORE_SUPERNODE (to
! 	 a PK_BEFORE_STMT, or a PK_AFTER_SUPERNODE if no stmts).
! 	 This will typically not be associated with a superedge.  */
!       if (src_point.get_from_edge ())
  	{
! 	  const cfg_superedge *last_cfg_superedge
! 	    = src_point.get_from_edge ()->dyn_cast_cfg_superedge ();
! 	  if (last_cfg_superedge)
  	    {
! 	      if (logger)
! 		logger->log ("  update for phis");
! 	      model.update_for_phis (src_enode.get_supernode (),
! 				     last_cfg_superedge,
! 				     NULL);
  	    }
  	}
  
        if (logger)
  	{
  	  logger->log ("state after edge %i: EN:%i -> EN:%i",
! 		       i,
  		       eedge->m_src->m_index,
  		       eedge->m_dest->m_index);
  	  logger->start_log_line ();
! 	  model.dump_to_pp (logger->get_printer (), true);
  	  logger->end_log_line ();
  	}
      }
--- 3471,3520 ----
     feasibility_problem to *OUT.  */
  
  bool
! exploded_path::feasible_p (logger *logger, feasibility_problem **out,
! 			    engine *eng, const exploded_graph *eg) const
  {
    LOG_SCOPE (logger);
  
!   feasibility_state state (eng->get_model_manager (),
! 			   eg->get_supergraph ());
! 
!   /* Traverse the path, updating this state.  */
!   for (unsigned edge_idx = 0; edge_idx < m_edges.length (); edge_idx++)
      {
!       const exploded_edge *eedge = m_edges[edge_idx];
        if (logger)
  	logger->log ("considering edge %i: EN:%i -> EN:%i",
! 		     edge_idx,
  		     eedge->m_src->m_index,
  		     eedge->m_dest->m_index);
  
!       rejected_constraint *rc = NULL;
!       if (!state.maybe_update_for_edge (logger, eedge, &rc))
  	{
! 	  gcc_assert (rc);
! 	  if (out)
  	    {
! 	      const exploded_node &src_enode = *eedge->m_src;
! 	      const program_point &src_point = src_enode.get_point ();
! 	      const gimple *last_stmt
! 		= src_point.get_supernode ()->get_last_stmt ();
! 	      *out = new feasibility_problem (edge_idx, *eedge,
! 					      last_stmt, rc);
  	    }
+ 	  else
+ 	    delete rc;
+ 	  return false;
  	}
  
        if (logger)
  	{
  	  logger->log ("state after edge %i: EN:%i -> EN:%i",
! 		       edge_idx,
  		       eedge->m_src->m_index,
  		       eedge->m_dest->m_index);
  	  logger->start_log_line ();
! 	  state.get_model ().dump_to_pp (logger->get_printer (), true, false);
  	  logger->end_log_line ();
  	}
      }
*************** exploded_path::dump () const
*** 2997,3002 ****
--- 3559,3713 ----
    dump (stderr);
  }
  
+ /* class feasibility_problem.  */
+ 
+ void
+ feasibility_problem::dump_to_pp (pretty_printer *pp) const
+ {
+   pp_printf (pp, "edge from EN: %i to EN: %i",
+ 	     m_eedge.m_src->m_index, m_eedge.m_dest->m_index);
+   if (m_rc)
+     {
+       pp_string (pp, "; rejected constraint: ");
+       m_rc->dump_to_pp (pp);
+       pp_string (pp, "; rmodel: ");
+       m_rc->m_model.dump_to_pp (pp, true, false);
+     }
+ }
+ 
+ /* class feasibility_state.  */
+ 
+ /* Ctor for feasibility_state, at the beginning of a path.  */
+ 
+ feasibility_state::feasibility_state (region_model_manager *manager,
+ 				      const supergraph &sg)
+ : m_model (manager),
+   m_snodes_visited (sg.m_nodes.length ())
+ {
+   bitmap_clear (m_snodes_visited);
+ }
+ 
+ /* Copy ctor for feasibility_state, for extending a path.  */
+ 
+ feasibility_state::feasibility_state (const feasibility_state &other)
+ : m_model (other.m_model),
+   m_snodes_visited (const_sbitmap (other.m_snodes_visited)->n_bits)
+ {
+   bitmap_copy (m_snodes_visited, other.m_snodes_visited);
+ }
+ 
+ /* The heart of feasibility-checking.
+ 
+    Attempt to update this state in-place based on traversing EEDGE
+    in a path.
+    Update the model for the stmts in the src enode.
+    Attempt to add constraints for EEDGE.
+ 
+    If feasible, return true.
+    Otherwise, return false and write to *OUT_RC.  */
+ 
+ bool
+ feasibility_state::maybe_update_for_edge (logger *logger,
+ 					  const exploded_edge *eedge,
+ 					  rejected_constraint **out_rc)
+ {
+   const exploded_node &src_enode = *eedge->m_src;
+   const program_point &src_point = src_enode.get_point ();
+   if (logger)
+     {
+       logger->start_log_line ();
+       src_point.print (logger->get_printer (), format (false));
+       logger->end_log_line ();
+     }
+ 
+   /* Update state for the stmts that were processed in each enode.  */
+   for (unsigned stmt_idx = 0; stmt_idx < src_enode.m_num_processed_stmts;
+        stmt_idx++)
+     {
+       const gimple *stmt = src_enode.get_processed_stmt (stmt_idx);
+ 
+       /* Update cfun and input_location in case of ICE: make it easier to
+ 	 track down which source construct we're failing to handle.  */
+       auto_cfun sentinel (src_point.get_function ());
+       input_location = stmt->location;
+ 
+       if (const gassign *assign = dyn_cast <const gassign *> (stmt))
+ 	m_model.on_assignment (assign, NULL);
+       else if (const greturn *return_ = dyn_cast <const greturn *> (stmt))
+ 	m_model.on_return (return_, NULL);
+     }
+ 
+   const superedge *sedge = eedge->m_sedge;
+   if (sedge)
+     {
+       if (logger)
+ 	logger->log ("  sedge: SN:%i -> SN:%i %s",
+ 		     sedge->m_src->m_index,
+ 		     sedge->m_dest->m_index,
+ 		     sedge->get_description (false));
+ 
+       const gimple *last_stmt = src_point.get_supernode ()->get_last_stmt ();
+       if (!m_model.maybe_update_for_edge (*sedge, last_stmt, NULL, out_rc))
+ 	{
+ 	  if (logger)
+ 	    {
+ 	      logger->log ("rejecting due to region model");
+ 	      m_model.dump_to_pp (logger->get_printer (), true, false);
+ 	    }
+ 	  return false;
+ 	}
+     }
+   else
+     {
+       /* Special-case the initial eedge from the origin node to the
+ 	 initial function by pushing a frame for it.  */
+       if (src_point.get_kind () == PK_ORIGIN)
+ 	{
+ 	  gcc_assert (eedge->m_src->m_index == 0);
+ 	  gcc_assert (eedge->m_dest->get_point ().get_kind ()
+ 		      == PK_BEFORE_SUPERNODE);
+ 	  function *fun = eedge->m_dest->get_function ();
+ 	  gcc_assert (fun);
+ 	  m_model.push_frame (fun, NULL, NULL);
+ 	  if (logger)
+ 	    logger->log ("  pushing frame for %qD", fun->decl);
+ 	}
+       else if (eedge->m_custom_info)
+ 	{
+ 	  eedge->m_custom_info->update_model (&m_model, *eedge);
+ 	}
+     }
+ 
+   /* Handle phi nodes on an edge leaving a PK_BEFORE_SUPERNODE (to
+      a PK_BEFORE_STMT, or a PK_AFTER_SUPERNODE if no stmts).
+      This will typically not be associated with a superedge.  */
+   if (src_point.get_from_edge ())
+     {
+       const cfg_superedge *last_cfg_superedge
+ 	= src_point.get_from_edge ()->dyn_cast_cfg_superedge ();
+       const exploded_node &dst_enode = *eedge->m_dest;
+       const unsigned dst_snode_idx = dst_enode.get_supernode ()->m_index;
+       if (last_cfg_superedge)
+ 	{
+ 	  if (logger)
+ 	    logger->log ("  update for phis");
+ 	  m_model.update_for_phis (src_enode.get_supernode (),
+ 				  last_cfg_superedge,
+ 				  NULL);
+ 	  /* If we've entering an snode that we've already visited on this
+ 	     epath, then we need do fix things up for loops; see the
+ 	     comment for store::loop_replay_fixup.
+ 	     Perhaps we should probably also verify the callstring,
+ 	     and track program_points,  but hopefully doing it by supernode
+ 	     is good enough.  */
+ 	  if (bitmap_bit_p (m_snodes_visited, dst_snode_idx))
+ 	    m_model.loop_replay_fixup (dst_enode.get_state ().m_region_model);
+ 	}
+       bitmap_set_bit (m_snodes_visited, dst_snode_idx);
+     }
+   return true;
+ }
+ 
  /* A family of cluster subclasses for use when generating .dot output for
     exploded graphs (-fdump-analyzer-exploded-graph), for grouping the
     enodes into hierarchical boxes.
*************** public:
*** 3028,3039 ****
  
    void dump_dot (graphviz_out *gv, const dump_args_t &args) const FINAL OVERRIDE
    {
!     gv->println ("subgraph \"cluster_supernode_%p\" {",
! 		 (const void *)this);
      gv->indent ();
      gv->println ("style=\"dashed\";");
!     gv->println ("label=\"SN: %i (bb: %i)\";",
! 		 m_supernode->m_index, m_supernode->m_bb->index);
  
      int i;
      exploded_node *enode;
--- 3739,3750 ----
  
    void dump_dot (graphviz_out *gv, const dump_args_t &args) const FINAL OVERRIDE
    {
!     gv->println ("subgraph \"cluster_supernode_%i\" {", m_supernode->m_index);
      gv->indent ();
      gv->println ("style=\"dashed\";");
!     gv->println ("label=\"SN: %i (bb: %i; scc: %i)\";",
! 		 m_supernode->m_index, m_supernode->m_bb->index,
! 		 args.m_eg.get_scc_id (*m_supernode));
  
      int i;
      exploded_node *enode;
*************** public:
*** 3050,3055 ****
--- 3761,3777 ----
      m_enodes.safe_push (en);
    }
  
+   /* Comparator for use by auto_vec<supernode_cluster *>::qsort.  */
+ 
+   static int cmp_ptr_ptr (const void *p1, const void *p2)
+   {
+     const supernode_cluster *c1
+       = *(const supernode_cluster * const *)p1;
+     const supernode_cluster *c2
+       = *(const supernode_cluster * const *)p2;
+     return c1->m_supernode->m_index - c2->m_supernode->m_index;
+   }
+ 
  private:
    const supernode *m_supernode;
    auto_vec <exploded_node *> m_enodes;
*************** public:
*** 3076,3082 ****
    {
      const char *funcname = function_name (m_fun);
  
!     gv->println ("subgraph \"cluster_function_%p\" {", (const void *)this);
      gv->indent ();
      gv->write_indent ();
      gv->print ("label=\"call string: ");
--- 3798,3805 ----
    {
      const char *funcname = function_name (m_fun);
  
!     gv->println ("subgraph \"cluster_function_%s\" {",
! 		 IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (m_fun->decl)));
      gv->indent ();
      gv->write_indent ();
      gv->print ("label=\"call string: ");
*************** public:
*** 3084,3093 ****
      gv->print (" function: %s \";", funcname);
      gv->print ("\n");
  
      for (map_t::iterator iter = m_map.begin ();
  	 iter != m_map.end ();
  	 ++iter)
!       (*iter).second->dump_dot (gv, args);
  
      /* Terminate subgraph.  */
      gv->outdent ();
--- 3807,3825 ----
      gv->print (" function: %s \";", funcname);
      gv->print ("\n");
  
+     /* Dump m_map, sorting it to avoid churn when comparing dumps.  */
+     auto_vec<supernode_cluster *> child_clusters (m_map.elements ());
      for (map_t::iterator iter = m_map.begin ();
  	 iter != m_map.end ();
  	 ++iter)
!       child_clusters.quick_push ((*iter).second);
! 
!     child_clusters.qsort (supernode_cluster::cmp_ptr_ptr);
! 
!     unsigned i;
!     supernode_cluster *child_cluster;
!     FOR_EACH_VEC_ELT (child_clusters, i, child_cluster)
!       child_cluster->dump_dot (gv, args);
  
      /* Terminate subgraph.  */
      gv->outdent ();
*************** public:
*** 3109,3114 ****
--- 3841,3861 ----
        }
    }
  
+   /* Comparator for use by auto_vec<function_call_string_cluster *>.  */
+ 
+   static int cmp_ptr_ptr (const void *p1, const void *p2)
+   {
+     const function_call_string_cluster *c1
+       = *(const function_call_string_cluster * const *)p1;
+     const function_call_string_cluster *c2
+       = *(const function_call_string_cluster * const *)p2;
+     if (int cmp_names
+ 	= strcmp (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (c1->m_fun->decl)),
+ 		  IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (c2->m_fun->decl))))
+       return cmp_names;
+     return call_string::cmp (c1->m_cs, c2->m_cs);
+   }
+ 
  private:
    function *m_fun;
    call_string m_cs;
*************** public:
*** 3201,3210 ****
      FOR_EACH_VEC_ELT (m_functionless_enodes, i, enode)
        enode->dump_dot (gv, args);
  
      for (map_t::iterator iter = m_map.begin ();
  	 iter != m_map.end ();
  	 ++iter)
!       (*iter).second->dump_dot (gv, args);
    }
  
    void add_node (exploded_node *en) FINAL OVERRIDE
--- 3948,3965 ----
      FOR_EACH_VEC_ELT (m_functionless_enodes, i, enode)
        enode->dump_dot (gv, args);
  
+     /* Dump m_map, sorting it to avoid churn when comparing dumps.  */
+     auto_vec<function_call_string_cluster *> child_clusters (m_map.elements ());
      for (map_t::iterator iter = m_map.begin ();
  	 iter != m_map.end ();
  	 ++iter)
!       child_clusters.quick_push ((*iter).second);
! 
!     child_clusters.qsort (function_call_string_cluster::cmp_ptr_ptr);
! 
!     function_call_string_cluster *child_cluster;
!     FOR_EACH_VEC_ELT (child_clusters, i, child_cluster)
!       child_cluster->dump_dot (gv, args);
    }
  
    void add_node (exploded_node *en) FINAL OVERRIDE
*************** class enode_label : public range_label
*** 3259,3265 ****
    {
      pretty_printer pp;
      pp_format_decoder (&pp) = default_tree_printer;
!     m_enode->get_state ().dump_to_pp (m_ext_state, true, &pp);
      return make_label_text (false, "EN: %i: %s",
  			    m_enode->m_index, pp_formatted_text (&pp));
    }
--- 4014,4020 ----
    {
      pretty_printer pp;
      pp_format_decoder (&pp) = default_tree_printer;
!     m_enode->get_state ().dump_to_pp (m_ext_state, true, false, &pp);
      return make_label_text (false, "EN: %i: %s",
  			    m_enode->m_index, pp_formatted_text (&pp));
    }
*************** exploded_graph::dump_exploded_nodes () c
*** 3346,3352 ****
  	  pretty_printer pp;
  	  enode->get_point ().print (&pp, format (true));
  	  fprintf (outf, "%s\n", pp_formatted_text (&pp));
! 	  enode->get_state ().dump_to_file (m_ext_state, false, outf);
  	}
  
        fclose (outf);
--- 4101,4107 ----
  	  pretty_printer pp;
  	  enode->get_point ().print (&pp, format (true));
  	  fprintf (outf, "%s\n", pp_formatted_text (&pp));
! 	  enode->get_state ().dump_to_file (m_ext_state, false, true, outf);
  	}
  
        fclose (outf);
*************** exploded_graph::dump_exploded_nodes () c
*** 3373,3379 ****
  	  pretty_printer pp;
  	  enode->get_point ().print (&pp, format (true));
  	  fprintf (outf, "%s\n", pp_formatted_text (&pp));
! 	  enode->get_state ().dump_to_file (m_ext_state, false, outf);
  
  	  fclose (outf);
  	}
--- 4128,4134 ----
  	  pretty_printer pp;
  	  enode->get_point ().print (&pp, format (true));
  	  fprintf (outf, "%s\n", pp_formatted_text (&pp));
! 	  enode->get_state ().dump_to_file (m_ext_state, false, true, outf);
  
  	  fclose (outf);
  	}
*************** exploded_graph::dump_exploded_nodes () c
*** 3482,3487 ****
--- 4237,4280 ----
      }
  }
  
+ DEBUG_FUNCTION exploded_node *
+ exploded_graph::get_node_by_index (int idx) const
+ {
+   exploded_node *enode = m_nodes[idx];
+   gcc_assert (enode->m_index == idx);
+   return enode;
+ }
+ 
+ /* Ensure that there is an exploded_node for a top-level call to FNDECL.  */
+ 
+ void
+ exploded_graph::on_escaped_function (tree fndecl)
+ {
+   logger * const logger = get_logger ();
+   LOG_FUNC_1 (logger, "%qE", fndecl);
+ 
+   cgraph_node *cgnode = cgraph_node::get (fndecl);
+   if (!cgnode)
+     return;
+ 
+   function *fun = cgnode->get_fun ();
+   if (!fun)
+     return;
+ 
+   if (!gimple_has_body_p (fndecl))
+     return;
+ 
+   exploded_node *enode = add_function_entry (fun);
+   if (logger)
+     {
+       if (enode)
+ 	logger->log ("created EN %i for %qE entrypoint",
+ 		     enode->m_index, fun->decl);
+       else
+ 	logger->log ("did not create enode for %qE entrypoint", fun->decl);
+     }
+ }
+ 
  /* A collection of classes for visualizing the callgraph in .dot form
     (as represented in the supergraph).  */
  
*************** public:
*** 3776,3781 ****
--- 4569,4575 ----
  
      gv->begin_td ();
      pp_string (pp, "BEFORE");
+     pp_printf (pp, " (scc: %i)", m_eg.get_scc_id (n));
      gv->end_td ();
  
      unsigned i;
*************** private:
*** 3884,3901 ****
        case exploded_node::STATUS_MERGER:
  	pp_string (pp, "(M)");
  	break;
        }
      gv->end_tdtr ();
      /* Dump any saved_diagnostics at this enode.  */
!     {
!       const diagnostic_manager &dm = m_eg.get_diagnostic_manager ();
!       for (unsigned i = 0; i < dm.get_num_diagnostics (); i++)
! 	{
! 	  const saved_diagnostic *sd = dm.get_saved_diagnostic (i);
! 	  if (sd->m_enode == enode)
! 	    print_saved_diagnostic (gv, sd);
! 	}
!     }
      pp_printf (pp, "</TABLE>");
      pp_printf (pp, "</TD>");
    }
--- 4678,4695 ----
        case exploded_node::STATUS_MERGER:
  	pp_string (pp, "(M)");
  	break;
+       case exploded_node::STATUS_BULK_MERGED:
+ 	pp_string (pp, "(BM)");
+ 	break;
        }
      gv->end_tdtr ();
+ 
      /* Dump any saved_diagnostics at this enode.  */
!     for (unsigned i = 0; i < enode->get_num_diagnostics (); i++)
!       {
! 	const saved_diagnostic *sd = enode->get_saved_diagnostic (i);
! 	print_saved_diagnostic (gv, sd);
!       }
      pp_printf (pp, "</TABLE>");
      pp_printf (pp, "</TD>");
    }
*************** private:
*** 3914,3958 ****
      pp_printf (pp, "DIAGNOSTIC: %s", sd->m_d->get_kind ());
      gv->end_tdtr ();
      gv->begin_trtd ();
!     pp_printf (pp, "epath length: %i", sd->get_epath_length ());
      gv->end_tdtr ();
!     switch (sd->get_status ())
        {
-       default:
-       case saved_diagnostic::STATUS_NEW:
- 	gcc_unreachable ();
- 	break;
-       case saved_diagnostic::STATUS_INFEASIBLE_PATH:
- 	{
- 	  gv->begin_trtd ();
- 	  pp_printf (pp, "INFEASIBLE");
- 	  gv->end_tdtr ();
- 	  const feasibility_problem *p = sd->get_feasibility_problem ();
- 	  gcc_assert (p);
- 	  gv->begin_trtd ();
- 	  pp_printf (pp, "at eedge %i: EN:%i -> EN:%i",
- 		     p->m_eedge_idx,
- 		     p->m_eedge.m_src->m_index,
- 		     p->m_eedge.m_dest->m_index);
- 	  pp_write_text_as_html_like_dot_to_stream (pp);
- 	  gv->end_tdtr ();
- 	  gv->begin_trtd ();
- 	  p->m_eedge.m_sedge->dump (pp);
- 	  pp_write_text_as_html_like_dot_to_stream (pp);
- 	  gv->end_tdtr ();
- 	  gv->begin_trtd ();
- 	  pp_gimple_stmt_1 (pp, p->m_last_stmt, 0, (dump_flags_t)0);
- 	  pp_write_text_as_html_like_dot_to_stream (pp);
- 	  gv->end_tdtr ();
- 	  /* Ideally we'd print p->m_model here; see the notes above about
- 	     tooltips.  */
- 	}
- 	break;
-       case saved_diagnostic::STATUS_FEASIBLE_PATH:
  	gv->begin_trtd ();
! 	pp_printf (pp, "FEASIBLE");
  	gv->end_tdtr ();
! 	break;
        }
      pp_printf (pp, "</TABLE>");
      gv->end_tdtr ();
--- 4708,4737 ----
      pp_printf (pp, "DIAGNOSTIC: %s", sd->m_d->get_kind ());
      gv->end_tdtr ();
      gv->begin_trtd ();
!     if (sd->get_best_epath ())
!       pp_printf (pp, "epath length: %i", sd->get_epath_length ());
!     else
!       pp_printf (pp, "no best epath");
      gv->end_tdtr ();
!     if (const feasibility_problem *p = sd->get_feasibility_problem ())
        {
  	gv->begin_trtd ();
! 	pp_printf (pp, "INFEASIBLE at eedge %i: EN:%i -> EN:%i",
! 		   p->m_eedge_idx,
! 		   p->m_eedge.m_src->m_index,
! 		   p->m_eedge.m_dest->m_index);
! 	pp_write_text_as_html_like_dot_to_stream (pp);
  	gv->end_tdtr ();
! 	gv->begin_trtd ();
! 	p->m_eedge.m_sedge->dump (pp);
! 	pp_write_text_as_html_like_dot_to_stream (pp);
! 	gv->end_tdtr ();
! 	gv->begin_trtd ();
! 	pp_gimple_stmt_1 (pp, p->m_last_stmt, 0, (dump_flags_t)0);
! 	pp_write_text_as_html_like_dot_to_stream (pp);
! 	gv->end_tdtr ();
! 	/* Ideally we'd print p->m_model here; see the notes above about
! 	   tooltips.  */
        }
      pp_printf (pp, "</TABLE>");
      gv->end_tdtr ();
*************** private:
*** 3962,3967 ****
--- 4741,4806 ----
    auto_delete_vec<auto_vec <exploded_node *> > m_enodes_per_snodes;
  };
  
+ /* Implement -fdump-analyzer-json.  */
+ 
+ static void
+ dump_analyzer_json (const supergraph &sg,
+ 		    const exploded_graph &eg)
+ {
+   auto_timevar tv (TV_ANALYZER_DUMP);
+   char *filename = concat (dump_base_name, ".analyzer.json.gz", NULL);
+   gzFile output = gzopen (filename, "w");
+   if (!output)
+     {
+       error_at (UNKNOWN_LOCATION, "unable to open %qs for writing", filename);
+       free (filename);
+       return;
+     }
+ 
+   json::object *toplev_obj = new json::object ();
+   toplev_obj->set ("sgraph", sg.to_json ());
+   toplev_obj->set ("egraph", eg.to_json ());
+ 
+   pretty_printer pp;
+   toplev_obj->print (&pp);
+   pp_formatted_text (&pp);
+ 
+   delete toplev_obj;
+ 
+   if (gzputs (output, pp_formatted_text (&pp)) == EOF
+       || gzclose (output))
+     error_at (UNKNOWN_LOCATION, "error writing %qs", filename);
+ 
+   free (filename);
+ }
+ 
+ /* Concrete subclass of plugin_analyzer_init_iface, allowing plugins
+    to register new state machines.  */
+ 
+ class plugin_analyzer_init_impl : public plugin_analyzer_init_iface
+ {
+ public:
+   plugin_analyzer_init_impl (auto_delete_vec <state_machine> *checkers,
+ 			     logger *logger)
+   : m_checkers (checkers),
+     m_logger (logger)
+   {}
+ 
+   void register_state_machine (state_machine *sm) FINAL OVERRIDE
+   {
+     m_checkers->safe_push (sm);
+   }
+ 
+   logger *get_logger () const FINAL OVERRIDE
+   {
+     return m_logger;
+   }
+ 
+ private:
+   auto_delete_vec <state_machine> *m_checkers;
+   logger *m_logger;
+ };
+ 
  /* Run the analysis "engine".  */
  
  void
*************** impl_run_checkers (logger *logger)
*** 3974,3979 ****
--- 4813,4820 ----
    FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (node)
      node->get_untransformed_body ();
  
+   engine eng;
+ 
    /* Create the supergraph.  */
    supergraph sg (logger);
  
*************** impl_run_checkers (logger *logger)
*** 4005,4010 ****
--- 4846,4854 ----
    auto_delete_vec <state_machine> checkers;
    make_checkers (checkers, logger);
  
+   plugin_analyzer_init_impl data (&checkers, logger);
+   invoke_plugin_callbacks (PLUGIN_ANALYZER_INIT, &data);
+ 
    if (logger)
      {
        int i;
*************** impl_run_checkers (logger *logger)
*** 4014,4020 ****
      }
  
    /* Extrinsic state shared by nodes in the graph.  */
!   const extrinsic_state ext_state (checkers);
  
    const analysis_plan plan (sg, logger);
  
--- 4858,4864 ----
      }
  
    /* Extrinsic state shared by nodes in the graph.  */
!   const extrinsic_state ext_state (checkers, &eng, logger);
  
    const analysis_plan plan (sg, logger);
  
*************** impl_run_checkers (logger *logger)
*** 4060,4065 ****
--- 4904,4912 ----
        free (filename);
      }
  
+   if (flag_dump_analyzer_json)
+     dump_analyzer_json (sg, eg);
+ 
    delete purge_map;
  }
  
diff -Nrcpad gcc-10.3.0/gcc/analyzer/engine.h gcc-11.1.0/gcc/analyzer/engine.h
*** gcc-10.3.0/gcc/analyzer/engine.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/engine.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* The analysis "engine".
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* The analysis "engine".
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/analyzer/exploded-graph.h gcc-11.1.0/gcc/analyzer/exploded-graph.h
*** gcc-10.3.0/gcc/analyzer/exploded-graph.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/exploded-graph.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Classes for managing a directed graph of <point, state> pairs.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for managing a directed graph of <point, state> pairs.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** class impl_region_model_context : public
*** 30,94 ****
  {
   public:
    impl_region_model_context (exploded_graph &eg,
! 			     const exploded_node *enode_for_diag,
  
  			     /* TODO: should we be getting the ECs from the
  				old state, rather than the new?  */
  			     const program_state *old_state,
  			     program_state *new_state,
! 			     state_change *change,
  
  			     const gimple *stmt,
  			     stmt_finder *stmt_finder = NULL);
  
    impl_region_model_context (program_state *state,
- 			     state_change *change,
  			     const extrinsic_state &ext_state,
  			     logger *logger = NULL);
  
    void warn (pending_diagnostic *d) FINAL OVERRIDE;
! 
!   void remap_svalue_ids (const svalue_id_map &map) FINAL OVERRIDE;
! 
!   int on_svalue_purge (svalue_id first_unused_sid,
! 		       const svalue_id_map &map) FINAL OVERRIDE;
! 
    logger *get_logger () FINAL OVERRIDE
    {
      return m_logger.get_logger ();
    }
  
    void on_state_leak (const state_machine &sm,
! 		      int sm_idx,
! 		      svalue_id sid,
! 		      svalue_id first_unused_sid,
! 		      const svalue_id_map &map,
  		      state_machine::state_t state);
  
-   void on_inherited_svalue (svalue_id parent_sid,
- 			    svalue_id child_sid) FINAL OVERRIDE;
- 
-   void on_cast (svalue_id src_sid,
- 		svalue_id dst_sid) FINAL OVERRIDE;
- 
    void on_condition (tree lhs, enum tree_code op, tree rhs) FINAL OVERRIDE;
  
!   void on_unknown_change (svalue_id sid ATTRIBUTE_UNUSED) FINAL OVERRIDE;
  
    void on_phi (const gphi *phi, tree rhs) FINAL OVERRIDE;
  
    void on_unexpected_tree_code (tree t,
  				const dump_location_t &loc) FINAL OVERRIDE;
  
    exploded_graph *m_eg;
    log_user m_logger;
!   const exploded_node *m_enode_for_diag;
    const program_state *m_old_state;
    program_state *m_new_state;
-   state_change *m_change;
    const gimple *m_stmt;
    stmt_finder *m_stmt_finder;
    const extrinsic_state &m_ext_state;
  };
  
  /* A <program_point, program_state> pair, used internally by
--- 30,86 ----
  {
   public:
    impl_region_model_context (exploded_graph &eg,
! 			     exploded_node *enode_for_diag,
  
  			     /* TODO: should we be getting the ECs from the
  				old state, rather than the new?  */
  			     const program_state *old_state,
  			     program_state *new_state,
! 			     uncertainty_t *uncertainty,
  
  			     const gimple *stmt,
  			     stmt_finder *stmt_finder = NULL);
  
    impl_region_model_context (program_state *state,
  			     const extrinsic_state &ext_state,
+ 			     uncertainty_t *uncertainty,
  			     logger *logger = NULL);
  
    void warn (pending_diagnostic *d) FINAL OVERRIDE;
!   void on_svalue_leak (const svalue *) OVERRIDE;
!   void on_liveness_change (const svalue_set &live_svalues,
! 			   const region_model *model) FINAL OVERRIDE;
    logger *get_logger () FINAL OVERRIDE
    {
      return m_logger.get_logger ();
    }
  
    void on_state_leak (const state_machine &sm,
! 		      const svalue *sval,
  		      state_machine::state_t state);
  
    void on_condition (tree lhs, enum tree_code op, tree rhs) FINAL OVERRIDE;
  
!   void on_unknown_change (const svalue *sval, bool is_mutable) FINAL OVERRIDE;
  
    void on_phi (const gphi *phi, tree rhs) FINAL OVERRIDE;
  
    void on_unexpected_tree_code (tree t,
  				const dump_location_t &loc) FINAL OVERRIDE;
  
+   void on_escaped_function (tree fndecl) FINAL OVERRIDE;
+ 
+   uncertainty_t *get_uncertainty () FINAL OVERRIDE;
+ 
    exploded_graph *m_eg;
    log_user m_logger;
!   exploded_node *m_enode_for_diag;
    const program_state *m_old_state;
    program_state *m_new_state;
    const gimple *m_stmt;
    stmt_finder *m_stmt_finder;
    const extrinsic_state &m_ext_state;
+   uncertainty_t *m_uncertainty;
  };
  
  /* A <program_point, program_state> pair, used internally by
*************** struct eg_traits
*** 145,150 ****
--- 137,148 ----
    struct dump_args_t
    {
      dump_args_t (const exploded_graph &eg) : m_eg (eg) {}
+ 
+     bool show_enode_details_p (const exploded_node &enode) const;
+ 
+     virtual void
+     dump_extra_info (const exploded_node *, pretty_printer *) const {}
+ 
      const exploded_graph &m_eg;
    };
    typedef exploded_cluster cluster_t;
*************** class exploded_node : public dnode<eg_tr
*** 172,179 ****
  
      /* Node was left unprocessed due to merger; it won't have had
         exploded_graph::process_node called on it.  */
!     STATUS_MERGER
    };
  
    exploded_node (const point_and_state &ps, int index);
  
--- 170,181 ----
  
      /* Node was left unprocessed due to merger; it won't have had
         exploded_graph::process_node called on it.  */
!     STATUS_MERGER,
! 
!     /* Node was processed by maybe_process_run_of_before_supernode_enodes.  */
!     STATUS_BULK_MERGED
    };
+   static const char * status_to_str (enum status s);
  
    exploded_node (const point_and_state &ps, int index);
  
*************** class exploded_node : public dnode<eg_tr
*** 188,193 ****
--- 190,200 ----
    void dump (FILE *fp, const extrinsic_state &ext_state) const;
    void dump (const extrinsic_state &ext_state) const;
  
+   void dump_processed_stmts (pretty_printer *pp) const;
+   void dump_saved_diagnostics (pretty_printer *pp) const;
+ 
+   json::object *to_json (const extrinsic_state &ext_state) const;
+ 
    /* The result of on_stmt.  */
    struct on_stmt_flags
    {
*************** class exploded_node : public dnode<eg_tr
*** 225,242 ****
  			 const supernode *snode,
  			 const gimple *stmt,
  			 program_state *state,
! 			 state_change *change) const;
    bool on_edge (exploded_graph &eg,
  		const superedge *succ,
  		program_point *next_point,
  		program_state *next_state,
! 		state_change *change) const;
    void on_longjmp (exploded_graph &eg,
  		   const gcall *call,
  		   program_state *new_state,
! 		   region_model_context *ctxt) const;
  
!   void detect_leaks (exploded_graph &eg) const;
  
    const program_point &get_point () const { return m_ps.get_point (); }
    const supernode *get_supernode () const
--- 232,249 ----
  			 const supernode *snode,
  			 const gimple *stmt,
  			 program_state *state,
! 			 uncertainty_t *uncertainty);
    bool on_edge (exploded_graph &eg,
  		const superedge *succ,
  		program_point *next_point,
  		program_state *next_state,
! 		uncertainty_t *uncertainty);
    void on_longjmp (exploded_graph &eg,
  		   const gcall *call,
  		   program_state *new_state,
! 		   region_model_context *ctxt);
  
!   void detect_leaks (exploded_graph &eg);
  
    const program_point &get_point () const { return m_ps.get_point (); }
    const supernode *get_supernode () const
*************** class exploded_node : public dnode<eg_tr
*** 252,257 ****
--- 259,265 ----
      return get_point ().get_stack_depth ();
    }
    const gimple *get_stmt () const { return get_point ().get_stmt (); }
+   const gimple *get_processed_stmt (unsigned idx) const;
  
    const program_state &get_state () const { return m_ps.get_state (); }
  
*************** class exploded_node : public dnode<eg_tr
*** 267,272 ****
--- 275,293 ----
      m_status = status;
    }
  
+   void add_diagnostic (const saved_diagnostic *sd)
+   {
+     m_saved_diagnostics.safe_push (sd);
+   }
+   unsigned get_num_diagnostics () const
+   {
+     return m_saved_diagnostics.length ();
+   }
+   const saved_diagnostic *get_saved_diagnostic (unsigned idx) const
+   {
+     return m_saved_diagnostics[idx];
+   }
+ 
  private:
    DISABLE_COPY_AND_ASSIGN (exploded_node);
  
*************** private:
*** 276,284 ****
--- 297,313 ----
  
    enum status m_status;
  
+   /* The saved_diagnostics at this enode, borrowed from the
+      diagnostic_manager.  */
+   auto_vec <const saved_diagnostic *> m_saved_diagnostics;
+ 
  public:
    /* The index of this exploded_node.  */
    const int m_index;
+ 
+   /* The number of stmts that were processed when process_node was
+      called on this enode.  */
+   unsigned m_num_processed_stmts;
  };
  
  /* An edge within the exploded graph.
*************** class exploded_edge : public dedge<eg_tr
*** 307,325 ****
    };
  
    exploded_edge (exploded_node *src, exploded_node *dest,
- 		 const extrinsic_state &ext_state,
  		 const superedge *sedge,
- 		 const state_change &change,
  		 custom_info_t *custom_info);
    ~exploded_edge ();
    void dump_dot (graphviz_out *gv, const dump_args_t &args)
      const FINAL OVERRIDE;
  
    //private:
    const superedge *const m_sedge;
  
-   const state_change m_change;
- 
    /* NULL for most edges; will be non-NULL for special cases
       such as an unwind from a longjmp to a setjmp, or when
       a signal is delivered to a signal-handler.
--- 336,353 ----
    };
  
    exploded_edge (exploded_node *src, exploded_node *dest,
  		 const superedge *sedge,
  		 custom_info_t *custom_info);
    ~exploded_edge ();
    void dump_dot (graphviz_out *gv, const dump_args_t &args)
      const FINAL OVERRIDE;
+   void dump_dot_label (pretty_printer *pp) const;
+ 
+   json::object *to_json () const;
  
    //private:
    const superedge *const m_sedge;
  
    /* NULL for most edges; will be non-NULL for special cases
       such as an unwind from a longjmp to a setjmp, or when
       a signal is delivered to a signal-handler.
*************** public:
*** 625,630 ****
--- 653,660 ----
  
    void dump () const;
  
+   json::array *to_json () const;
+ 
  private:
    struct per_node_data
    {
*************** public:
*** 662,667 ****
--- 692,703 ----
    exploded_node *take_next ();
    exploded_node *peek_next ();
    void add_node (exploded_node *enode);
+   int get_scc_id (const supernode &snode) const
+   {
+     return m_scc.get_scc_id (snode.m_index);
+   }
+ 
+   json::object *to_json () const;
  
  private:
    class key_t
*************** public:
*** 733,738 ****
--- 769,775 ----
  
    const supergraph &get_supergraph () const { return m_sg; }
    const extrinsic_state &get_ext_state () const { return m_ext_state; }
+   engine *get_engine () const { return m_ext_state.get_engine (); }
    const state_purge_map *get_purge_map () const { return m_purge_map; }
    const analysis_plan &get_analysis_plan () const { return m_plan; }
  
*************** public:
*** 742,759 ****
  
    void build_initial_worklist ();
    void process_worklist ();
    void process_node (exploded_node *node);
  
    exploded_node *get_or_create_node (const program_point &point,
  				     const program_state &state,
! 				     state_change *change);
    exploded_edge *add_edge (exploded_node *src, exploded_node *dest,
  			   const superedge *sedge,
- 			   const state_change &change,
  			   exploded_edge::custom_info_t *custom = NULL);
  
    per_program_point_data *
    get_or_create_per_program_point_data (const program_point &);
  
    per_call_string_data *
    get_or_create_per_call_string_data (const call_string &);
--- 779,798 ----
  
    void build_initial_worklist ();
    void process_worklist ();
+   bool maybe_process_run_of_before_supernode_enodes (exploded_node *node);
    void process_node (exploded_node *node);
  
    exploded_node *get_or_create_node (const program_point &point,
  				     const program_state &state,
! 				     exploded_node *enode_for_diag);
    exploded_edge *add_edge (exploded_node *src, exploded_node *dest,
  			   const superedge *sedge,
  			   exploded_edge::custom_info_t *custom = NULL);
  
    per_program_point_data *
    get_or_create_per_program_point_data (const program_point &);
+   per_program_point_data *
+   get_per_program_point_data (const program_point &) const;
  
    per_call_string_data *
    get_or_create_per_call_string_data (const call_string &);
*************** public:
*** 785,793 ****
--- 824,843 ----
    void dump_states_for_supernode (FILE *, const supernode *snode) const;
    void dump_exploded_nodes () const;
  
+   json::object *to_json () const;
+ 
+   exploded_node *get_node_by_index (int idx) const;
+ 
    const call_string_data_map_t *get_per_call_string_data () const
    { return &m_per_call_string_data; }
  
+   int get_scc_id (const supernode &node) const
+   {
+     return m_worklist.get_scc_id (node);
+   }
+ 
+   void on_escaped_function (tree fndecl);
+ 
  private:
    void print_bar_charts (pretty_printer *pp) const;
  
*************** private:
*** 834,839 ****
--- 884,893 ----
    call_string_data_map_t m_per_call_string_data;
  
    auto_vec<int> m_PK_AFTER_SUPERNODE_per_snode;
+ 
+   /* Functions with a top-level enode, to make add_function_entry
+      be idempotent, for use in handling callbacks.  */
+   hash_set<function *> m_functions_with_enodes;
  };
  
  /* A path within an exploded_graph: a sequence of edges.  */
*************** class exploded_path
*** 843,849 ****
  public:
    exploded_path () : m_edges () {}
    exploded_path (const exploded_path &other);
-   exploded_path & operator= (const exploded_path &other);
  
    unsigned length () const { return m_edges.length (); }
  
--- 897,902 ----
*************** public:
*** 856,862 ****
    void dump (FILE *fp) const;
    void dump () const;
  
!   bool feasible_p (logger *logger, feasibility_problem **out) const;
  
    auto_vec<const exploded_edge *> m_edges;
  };
--- 909,916 ----
    void dump (FILE *fp) const;
    void dump () const;
  
!   bool feasible_p (logger *logger, feasibility_problem **out,
! 		    engine *eng, const exploded_graph *eg) const;
  
    auto_vec<const exploded_edge *> m_edges;
  };
*************** class feasibility_problem
*** 867,883 ****
  {
  public:
    feasibility_problem (unsigned eedge_idx,
- 		       const region_model &model,
  		       const exploded_edge &eedge,
! 		       const gimple *last_stmt)
!   : m_eedge_idx (eedge_idx), m_model (model), m_eedge (eedge),
!     m_last_stmt (last_stmt)
    {}
  
    unsigned m_eedge_idx;
-   region_model m_model;
    const exploded_edge &m_eedge;
    const gimple *m_last_stmt;
  };
  
  /* Finding the shortest exploded_path within an exploded_graph.  */
--- 921,962 ----
  {
  public:
    feasibility_problem (unsigned eedge_idx,
  		       const exploded_edge &eedge,
! 		       const gimple *last_stmt,
! 		       rejected_constraint *rc)
!   : m_eedge_idx (eedge_idx), m_eedge (eedge),
!     m_last_stmt (last_stmt), m_rc (rc)
    {}
+   ~feasibility_problem () { delete m_rc; }
+ 
+   void dump_to_pp (pretty_printer *pp) const;
  
    unsigned m_eedge_idx;
    const exploded_edge &m_eedge;
    const gimple *m_last_stmt;
+   rejected_constraint *m_rc;
+ };
+ 
+ /* A class for capturing the state of a node when checking a path
+    through the exploded_graph for feasibility.  */
+ 
+ class feasibility_state
+ {
+ public:
+   feasibility_state (region_model_manager *manager,
+ 		     const supergraph &sg);
+   feasibility_state (const feasibility_state &other);
+ 
+   bool maybe_update_for_edge (logger *logger,
+ 			      const exploded_edge *eedge,
+ 			      rejected_constraint **out_rc);
+ 
+   const region_model &get_model () const { return m_model; }
+   const auto_sbitmap &get_snodes_visited () const { return m_snodes_visited; }
+ 
+ private:
+   region_model m_model;
+   auto_sbitmap m_snodes_visited;
  };
  
  /* Finding the shortest exploded_path within an exploded_graph.  */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/feasible-graph.cc gcc-11.1.0/gcc/analyzer/feasible-graph.cc
*** gcc-10.3.0/gcc/analyzer/feasible-graph.cc	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/analyzer/feasible-graph.cc	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,234 ----
+ /* A graph for exploring trees of feasible paths through the egraph.
+    Copyright (C) 2021 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.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/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "pretty-print.h"
+ #include "gcc-rich-location.h"
+ #include "gimple-pretty-print.h"
+ #include "function.h"
+ #include "diagnostic-core.h"
+ #include "diagnostic-event-id.h"
+ #include "diagnostic-path.h"
+ #include "alloc-pool.h"
+ #include "fibonacci_heap.h"
+ #include "shortest-paths.h"
+ #include "sbitmap.h"
+ #include "bitmap.h"
+ #include "tristate.h"
+ #include "selftest.h"
+ #include "ordered-hash-map.h"
+ #include "json.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "analyzer/sm.h"
+ #include "analyzer/pending-diagnostic.h"
+ #include "analyzer/diagnostic-manager.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
+ #include "analyzer/region-model.h"
+ #include "analyzer/constraint-manager.h"
+ #include "cfg.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "gimple-iterator.h"
+ #include "cgraph.h"
+ #include "digraph.h"
+ #include "analyzer/supergraph.h"
+ #include "analyzer/program-state.h"
+ #include "analyzer/exploded-graph.h"
+ #include "analyzer/feasible-graph.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* class base_feasible_node : public dnode<fg_traits>.  */
+ 
+ /* Print an id to PP for this node suitable for use in .dot dumps.  */
+ 
+ void
+ base_feasible_node::dump_dot_id (pretty_printer *pp) const
+ {
+   pp_printf (pp, "fnode_%i", m_index);
+ }
+ 
+ /* class feasible_node : public base_feasible_node.  */
+ 
+ /* Implementation of dump_dot vfunc for feasible_node.  */
+ 
+ void
+ feasible_node::dump_dot (graphviz_out *gv,
+ 			const dump_args_t &) const
+ {
+   pretty_printer *pp = gv->get_pp ();
+ 
+   dump_dot_id (pp);
+   pp_printf (pp, " [shape=none,margin=0,style=filled,fillcolor=%s,label=\"",
+ 	     m_inner_node->get_dot_fillcolor ());
+   pp_write_text_to_stream (pp);
+ 
+   pp_printf (pp, "FN: %i (EN: %i); len=%i", m_index, m_inner_node->m_index,
+ 	     m_path_length);
+   pp_newline (pp);
+ 
+   format f (true);
+   m_inner_node->get_point ().print (pp, f);
+   pp_newline (pp);
+ 
+   /* Show the model at this point along expansion of the feasible path,
+      rather than the model within the enode.  */
+   m_state.get_model ().dump_to_pp (pp, true, true);
+   pp_newline (pp);
+ 
+   m_inner_node->dump_processed_stmts (pp);
+   m_inner_node->dump_saved_diagnostics (pp);
+ 
+   pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/true);
+ 
+   pp_string (pp, "\"];\n\n");
+   pp_flush (pp);
+ }
+ 
+ /* Implementation of dump_dot vfunc for infeasible_node.
+    In particular, show the rejected constraint.  */
+ 
+ void
+ infeasible_node::dump_dot (graphviz_out *gv,
+ 			   const dump_args_t &) const
+ {
+   pretty_printer *pp = gv->get_pp ();
+ 
+   dump_dot_id (pp);
+   pp_printf (pp, " [shape=none,margin=0,style=filled,fillcolor=%s,label=\"",
+ 	     m_inner_node->get_dot_fillcolor ());
+   pp_write_text_to_stream (pp);
+ 
+   pp_printf (pp, "infeasible edge to EN: %i", m_inner_node->m_index);
+   pp_newline (pp);
+ 
+   pp_string (pp, "rejected constraint:");
+   pp_newline (pp);
+   m_rc.dump_to_pp (pp);
+ 
+   pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/true);
+ 
+   pp_string (pp, "\"];\n\n");
+   pp_flush (pp);
+ }
+ 
+ /* class base_feasible_edge : public dedge<fg_traits>.  */
+ 
+ /* Implementation of dump_dot vfunc for base_easible_edge.  */
+ 
+ void
+ base_feasible_edge::dump_dot (graphviz_out *gv, const dump_args_t &) const
+ {
+   pretty_printer *pp = gv->get_pp ();
+ 
+   m_src->dump_dot_id (pp);
+   pp_string (pp, " -> ");
+   m_dest->dump_dot_id (pp);
+ 
+   m_inner_edge->dump_dot_label (pp);
+ }
+ 
+ /* class feasible_graph : public digraph <fg_traits>.  */
+ 
+ /* Ctor for feasible_graph.  */
+ 
+ feasible_graph::feasible_graph ()
+ : m_num_infeasible (0)
+ {
+ }
+ 
+ /* Add a feasible_node to this graph for ENODE, STATE with the
+    given PATH_LENGTH. */
+ 
+ feasible_node *
+ feasible_graph::add_node (const exploded_node *enode,
+ 			  const feasibility_state &state,
+ 			  unsigned path_length)
+ {
+   /* We don't attempt get_or_create here.  */
+   feasible_node *fnode = new feasible_node (enode, m_nodes.length (),
+ 					    state, path_length);
+   digraph<fg_traits>::add_node (fnode);
+   return fnode;
+ }
+ 
+ /* Add an infeasible_node to this graph and an infeasible_edge connecting
+    to it from SRC_FNODE, capturing a failure of RC along EEDGE.  */
+ 
+ void
+ feasible_graph::add_feasibility_problem (feasible_node *src_fnode,
+ 					 const exploded_edge *eedge,
+ 					 const rejected_constraint &rc)
+ {
+   infeasible_node *dst_fnode
+     = new infeasible_node (eedge->m_dest, m_nodes.length (), rc);
+   digraph<fg_traits>::add_node (dst_fnode);
+   add_edge (new infeasible_edge (src_fnode, dst_fnode, eedge));
+   m_num_infeasible++;
+ }
+ 
+ /* Make an exploded_path from the origin to FNODE's exploded_node,
+    following the edges in the feasible_graph.  */
+ 
+ exploded_path *
+ feasible_graph::make_epath (feasible_node *fnode) const
+ {
+   exploded_path *epath = new exploded_path ();
+ 
+   /* FG is actually a tree.  Built the path backwards, by walking
+      backwards from FNODE until we reach the origin.  */
+   while (fnode->get_inner_node ()->m_index != 0)
+     {
+       gcc_assert (fnode->m_preds.length () == 1);
+       feasible_edge *pred_fedge
+ 	= static_cast <feasible_edge *> (fnode->m_preds[0]);
+       epath->m_edges.safe_push (pred_fedge->get_inner_edge ());
+       fnode = static_cast <feasible_node *> (pred_fedge->m_src);
+     }
+ 
+   /* Now reverse it.  */
+   epath->m_edges.reverse ();
+ 
+   return epath;
+ }
+ 
+ /* Dump stats about this graph to LOGGER.  */
+ 
+ void
+ feasible_graph::log_stats (logger *logger) const
+ {
+   logger->log ("#nodes: %i", m_nodes.length ());
+   logger->log ("#edges: %i", m_edges.length ());
+   logger->log ("#feasible nodes: %i", m_nodes.length () - m_num_infeasible);
+   logger->log ("#feasible edges: %i", m_edges.length () - m_num_infeasible);
+   logger->log ("#infeasible nodes/edges: %i", m_num_infeasible);
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/feasible-graph.h gcc-11.1.0/gcc/analyzer/feasible-graph.h
*** gcc-10.3.0/gcc/analyzer/feasible-graph.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/analyzer/feasible-graph.h	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,213 ----
+ /* A graph for exploring trees of feasible paths through the egraph.
+    Copyright (C) 2021 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.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/>.  */
+ 
+ #ifndef GCC_ANALYZER_FEASIBLE_GRAPH_H
+ #define GCC_ANALYZER_FEASIBLE_GRAPH_H
+ 
+ namespace ana {
+ 
+ /* Forward decls.  */
+ 
+ class base_feasible_node;
+   class feasible_node;
+   class infeasible_node;
+ class base_feasible_edge;
+   class feasible_edge;
+   class infeasible_edge;
+ class feasible_graph;
+ class feasible_cluster;
+ 
+ /* A traits class for feasible_graph.  */
+ 
+ struct fg_traits
+ {
+   typedef base_feasible_node node_t;
+   typedef base_feasible_edge edge_t;
+   typedef feasible_graph graph_t;
+   struct dump_args_t
+   {
+     typedef typename eg_traits::dump_args_t inner_args_t;
+ 
+     dump_args_t (const inner_args_t &inner_args)
+     : m_inner_args (inner_args)
+     {
+     }
+ 
+     const inner_args_t &m_inner_args;
+   };
+   typedef feasible_cluster cluster_t;
+ };
+ 
+ /* Base class of node within a feasible_graph.
+    There can be 0 or more base_feasible_nodes per exploded_node.  */
+ 
+ class base_feasible_node : public dnode<fg_traits>
+ {
+  public:
+   void dump_dot_id (pretty_printer *pp) const;
+ 
+   const exploded_node *get_inner_node () const { return m_inner_node; }
+   unsigned get_index () const { return m_index; }
+ 
+  protected:
+   base_feasible_node (const exploded_node *inner_node, unsigned index)
+   : m_inner_node (inner_node), m_index (index)
+   {}
+ 
+   const exploded_node *m_inner_node;
+   unsigned m_index;
+ };
+ 
+ /* Subclass of base_feasible_node for a node that is reachable via a
+    feasible path, with a particular state.  */
+ 
+ class feasible_node : public base_feasible_node
+ {
+ public:
+   feasible_node (const exploded_node *inner_node, unsigned index,
+ 		 const feasibility_state &state,
+ 		 unsigned path_length)
+   : base_feasible_node (inner_node, index),
+     m_state (state),
+     m_path_length (path_length)
+   {
+   }
+ 
+   void dump_dot (graphviz_out *gv,
+ 		 const dump_args_t &args) const FINAL OVERRIDE;
+ 
+   const feasibility_state &get_state () const { return m_state; }
+   const region_model &get_model () const { return m_state.get_model (); }
+   const auto_sbitmap &get_snodes_visited () const
+   {
+     return m_state.get_snodes_visited ();
+   }
+ 
+   unsigned get_path_length () const { return m_path_length; }
+ 
+ private:
+   feasibility_state m_state;
+   unsigned m_path_length;
+ };
+ 
+ /* Subclass of base_feasible_node for a node that requires following
+    an infeasible edge to reach (and thus terminating this part of the
+    exploration).  */
+ 
+ class infeasible_node : public base_feasible_node
+ {
+ public:
+   infeasible_node (const exploded_node *inner_node, unsigned index,
+ 		   const rejected_constraint &rc)
+   : base_feasible_node (inner_node, index),
+     m_rc (rc)
+   {
+   }
+ 
+   void dump_dot (graphviz_out *gv,
+ 		 const dump_args_t &args) const FINAL OVERRIDE;
+ 
+ private:
+   rejected_constraint m_rc;
+ };
+ 
+ /* Base class of edge within a feasible_graph.  */
+ 
+ class base_feasible_edge : public dedge<fg_traits>
+ {
+  public:
+   void dump_dot (graphviz_out *gv,
+ 		 const dump_args_t &args) const FINAL OVERRIDE;
+ 
+   const exploded_edge *get_inner_edge () const { return m_inner_edge; }
+ 
+  protected:
+   base_feasible_edge (base_feasible_node *src, base_feasible_node *dest,
+ 		      const exploded_edge *inner_edge)
+   : dedge<fg_traits> (src, dest), m_inner_edge (inner_edge)
+   {
+   }
+ 
+   const exploded_edge *m_inner_edge;
+ };
+ 
+ /* Subclass of base_feasible_edge for connecting two feasible_nodes.  */
+ 
+ class feasible_edge : public base_feasible_edge
+ {
+  public:
+   feasible_edge (feasible_node *src, feasible_node *dest,
+ 		 const exploded_edge *inner_edge)
+   : base_feasible_edge (src, dest, inner_edge)
+   {
+   }
+ };
+ 
+ /* Subclass of base_feasible_edge for connecting a feasible_node
+    to an infeasible_node (and thus terminating this part of the
+    exploration).  */
+ 
+ class infeasible_edge : public base_feasible_edge
+ {
+  public:
+   infeasible_edge (feasible_node *src, infeasible_node *dest,
+ 		   const exploded_edge *inner_edge)
+   : base_feasible_edge (src, dest, inner_edge)
+   {
+   }
+ };
+ 
+ /* A digraph subclass for exploring trees of feasible paths through
+    the egraph.  This is actually a tree.
+ 
+    The paths within the graph of feasible_nodes express feasible paths
+    through the graph, and it also captures known infeasible edges,
+    which is invaluable for debugging.  */
+ 
+ class feasible_graph : public digraph <fg_traits>
+ {
+  public:
+   feasible_graph ();
+ 
+   feasible_node *add_node (const exploded_node *enode,
+ 			   const feasibility_state &state,
+ 			   unsigned path_length);
+ 
+   void add_feasibility_problem (feasible_node *src_fnode,
+ 				const exploded_edge *eedge,
+ 				const rejected_constraint &rc);
+ 
+   exploded_path *make_epath (feasible_node *fnode) const;
+ 
+   unsigned get_num_infeasible () const { return m_num_infeasible; }
+ 
+   void log_stats (logger *logger) const;
+ 
+ private:
+   unsigned m_num_infeasible;
+ };
+ 
+ class feasible_cluster : public cluster <fg_traits>
+ {
+ };
+ 
+ } // namespace ana
+ 
+ #endif /* GCC_ANALYZER_FEASIBLE_GRAPH_H */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/function-set.cc gcc-11.1.0/gcc/analyzer/function-set.cc
*** gcc-10.3.0/gcc/analyzer/function-set.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/function-set.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Sets of function names.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Sets of function names.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/analyzer/function-set.h gcc-11.1.0/gcc/analyzer/function-set.h
*** gcc-10.3.0/gcc/analyzer/function-set.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/function-set.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Sets of function names.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Sets of function names.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/analyzer/pending-diagnostic.cc gcc-11.1.0/gcc/analyzer/pending-diagnostic.cc
*** gcc-10.3.0/gcc/analyzer/pending-diagnostic.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/pending-diagnostic.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Classes for analyzer diagnostics.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for analyzer diagnostics.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 25,30 ****
--- 25,31 ----
  #include "intl.h"
  #include "diagnostic.h"
  #include "function.h"
+ #include "json.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/analyzer-logging.h"
diff -Nrcpad gcc-10.3.0/gcc/analyzer/pending-diagnostic.h gcc-11.1.0/gcc/analyzer/pending-diagnostic.h
*** gcc-10.3.0/gcc/analyzer/pending-diagnostic.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/pending-diagnostic.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Classes for analyzer diagnostics.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for analyzer diagnostics.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** class pending_diagnostic
*** 157,163 ****
    /* Compare for equality with OTHER, which might be of a different
       subclass.  */
  
!   bool equal_p (const pending_diagnostic &other)
    {
      /* Check for pointer equality on the IDs from get_kind.  */
      if (get_kind () != other.get_kind ())
--- 157,163 ----
    /* Compare for equality with OTHER, which might be of a different
       subclass.  */
  
!   bool equal_p (const pending_diagnostic &other) const
    {
      /* Check for pointer equality on the IDs from get_kind.  */
      if (get_kind () != other.get_kind ())
*************** class pending_diagnostic
*** 175,180 ****
--- 175,188 ----
       diagnostic deduplication.  */
    static bool same_tree_p (tree t1, tree t2);
  
+   /* A vfunc for fixing up locations (both the primary location for the
+      diagnostic, and for events in their paths), e.g. to avoid unwinding
+      inside specific macros.  */
+   virtual location_t fixup_location (location_t loc) const
+   {
+     return loc;
+   }
+ 
    /* For greatest precision-of-wording, the various following "describe_*"
       virtual functions give the pending diagnostic a way to describe events
       in a diagnostic_path in terms that make sense for that diagnostic.
*************** class pending_diagnostic
*** 246,251 ****
--- 254,274 ----
    }
  
    /* End of precision-of-wording vfuncs.  */
+ 
+   /* Vfunc for extending/overriding creation of the events for an
+      exploded_edge that corresponds to a superedge, allowing for custom
+      events to be created that are pertinent to a particular
+      pending_diagnostic subclass.
+ 
+      For example, the -Wanalyzer-stale-setjmp-buffer diagnostic adds a
+      custom event showing when the pertinent stack frame is popped
+      (and thus the point at which the jmp_buf becomes invalid).  */
+ 
+   virtual bool maybe_add_custom_events_for_superedge (const exploded_edge &,
+ 						      checker_path *)
+   {
+     return false;
+   }
  };
  
  /* A template to make it easier to make subclasses of pending_diagnostic.
diff -Nrcpad gcc-10.3.0/gcc/analyzer/program-point.cc gcc-11.1.0/gcc/analyzer/program-point.cc
*** gcc-10.3.0/gcc/analyzer/program-point.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/program-point.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Classes for representing locations within the program.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for representing locations within the program.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 24,29 ****
--- 24,30 ----
  #include "tree.h"
  #include "gimple-pretty-print.h"
  #include "gcc-rich-location.h"
+ #include "json.h"
  #include "analyzer/call-string.h"
  #include "ordered-hash-map.h"
  #include "options.h"
*************** along with GCC; see the file COPYING3.
*** 42,47 ****
--- 43,49 ----
  #include "bitmap.h"
  #include "tristate.h"
  #include "selftest.h"
+ #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "analyzer/sm.h"
  #include "analyzer/program-state.h"
*************** point_kind_to_string (enum point_kind pk
*** 84,89 ****
--- 86,107 ----
  
  /* class function_point.  */
  
+ function_point::function_point (const supernode *supernode,
+ 				const superedge *from_edge,
+ 				unsigned stmt_idx,
+ 				enum point_kind kind)
+ : m_supernode (supernode), m_from_edge (from_edge),
+   m_stmt_idx (stmt_idx), m_kind (kind)
+ {
+   if (from_edge)
+     {
+       gcc_checking_assert (m_kind == PK_BEFORE_SUPERNODE);
+       gcc_checking_assert (from_edge->get_kind () == SUPEREDGE_CFG_EDGE);
+     }
+   if (stmt_idx)
+     gcc_checking_assert (m_kind == PK_BEFORE_STMT);
+ }
+ 
  /* Print this function_point to PP.  */
  
  void
*************** function_point::hash () const
*** 149,154 ****
--- 167,183 ----
    return hstate.end ();
  }
  
+ /* Get the function at this point, if any.  */
+ 
+ function *
+ function_point::get_function () const
+ {
+   if (m_supernode)
+     return m_supernode->m_fun;
+   else
+     return NULL;
+ }
+ 
  /* Get the gimple stmt for this function_point, if any.  */
  
  const gimple *
*************** function_point::get_location () const
*** 170,177 ****
    const gimple *stmt = get_stmt ();
    if (stmt)
      return stmt->location;
  
!   return UNKNOWN_LOCATION;
  }
  
  /* A subclass of diagnostic_context for use by
--- 199,230 ----
    const gimple *stmt = get_stmt ();
    if (stmt)
      return stmt->location;
+   if (m_kind == PK_BEFORE_SUPERNODE)
+     return m_supernode->get_start_location ();
+   else if (m_kind == PK_AFTER_SUPERNODE)
+     return m_supernode->get_end_location ();
+   else
+     return UNKNOWN_LOCATION;
+ }
  
! /* Create a function_point representing the entrypoint of function FUN.  */
! 
! function_point
! function_point::from_function_entry (const supergraph &sg, function *fun)
! {
!   return before_supernode (sg.get_node_for_function_entry (fun), NULL);
! }
! 
! /* Create a function_point representing entering supernode SUPERNODE,
!    having reached it via FROM_EDGE (which could be NULL).  */
! 
! function_point
! function_point::before_supernode (const supernode *supernode,
! 				  const superedge *from_edge)
! {
!   if (from_edge && from_edge->get_kind () != SUPEREDGE_CFG_EDGE)
!     from_edge = NULL;
!   return function_point (supernode, from_edge, 0, PK_BEFORE_SUPERNODE);
  }
  
  /* A subclass of diagnostic_context for use by
*************** program_point::dump () const
*** 233,238 ****
--- 286,328 ----
    pp_flush (&pp);
  }
  
+ /* Return a new json::object of the form
+    {"kind"  : str,
+     "snode_idx" : int (optional), the index of the supernode,
+     "from_edge_snode_idx" : int (only for kind=='PK_BEFORE_SUPERNODE'),
+     "stmt_idx": int (only for kind=='PK_BEFORE_STMT',
+     "call_string": object for the call_string}.  */
+ 
+ json::object *
+ program_point::to_json () const
+ {
+   json::object *point_obj = new json::object ();
+ 
+   point_obj->set ("kind",
+ 		  new json::string (point_kind_to_string (get_kind ())));
+ 
+   if (get_supernode ())
+     point_obj->set ("snode_idx",
+ 		    new json::integer_number (get_supernode ()->m_index));
+ 
+   switch (get_kind ())
+     {
+     default: break;
+     case PK_BEFORE_SUPERNODE:
+       if (const superedge *sedge = get_from_edge ())
+ 	point_obj->set ("from_edge_snode_idx",
+ 			new json::integer_number (sedge->m_src->m_index));
+       break;
+     case PK_BEFORE_STMT:
+       point_obj->set ("stmt_idx", new json::integer_number (get_stmt_idx ()));
+       break;
+     }
+ 
+   point_obj->set ("call_string", m_call_string.to_json ());
+ 
+   return point_obj;
+ }
+ 
  /* Generate a hash value for this program_point.  */
  
  hashval_t
*************** function_point::cmp_within_supernode (co
*** 468,473 ****
--- 558,632 ----
    return result;
  }
  
+ /* Comparator for imposing an order on function_points.  */
+ 
+ int
+ function_point::cmp (const function_point &point_a,
+ 		     const function_point &point_b)
+ {
+   int idx_a = point_a.m_supernode ? point_a.m_supernode->m_index : -1;
+   int idx_b = point_b.m_supernode ? point_b.m_supernode->m_index : -1;
+   if (int cmp_idx = idx_a - idx_b)
+     return cmp_idx;
+   gcc_assert (point_a.m_supernode == point_b.m_supernode);
+   if (point_a.m_supernode)
+     return cmp_within_supernode (point_a, point_b);
+   else
+     return 0;
+ }
+ 
+ /* Comparator for use by vec<function_point>::qsort.  */
+ 
+ int
+ function_point::cmp_ptr (const void *p1, const void *p2)
+ {
+   const function_point *fp1 = (const function_point *)p1;
+   const function_point *fp2 = (const function_point *)p2;
+   return cmp (*fp1, *fp2);
+ }
+ 
+ /* For PK_BEFORE_STMT, go to next stmt (or to PK_AFTER_SUPERNODE).  */
+ 
+ void
+ function_point::next_stmt ()
+ {
+   gcc_assert (m_kind == PK_BEFORE_STMT);
+   if (++m_stmt_idx == m_supernode->m_stmts.length ())
+     {
+       m_kind = PK_AFTER_SUPERNODE;
+       m_stmt_idx = 0;
+     }
+ }
+ 
+ /* For those program points for which there is a uniquely-defined
+    successor, return it.  */
+ 
+ program_point
+ program_point::get_next () const
+ {
+   switch (m_function_point.get_kind ())
+     {
+     default:
+       gcc_unreachable ();
+     case PK_ORIGIN:
+     case PK_AFTER_SUPERNODE:
+       gcc_unreachable (); /* Not uniquely defined.  */
+     case PK_BEFORE_SUPERNODE:
+       if (get_supernode ()->m_stmts.length () > 0)
+ 	return before_stmt (get_supernode (), 0, get_call_string ());
+       else
+ 	return after_supernode (get_supernode (), get_call_string ());
+     case PK_BEFORE_STMT:
+       {
+ 	unsigned next_idx = get_stmt_idx ();
+ 	if (next_idx < get_supernode ()->m_stmts.length ())
+ 	  return before_stmt (get_supernode (), next_idx, get_call_string ());
+ 	else
+ 	  return after_supernode (get_supernode (), get_call_string ());
+       }
+     }
+ }
+ 
  #if CHECKING_P
  
  namespace selftest {
diff -Nrcpad gcc-10.3.0/gcc/analyzer/program-point.h gcc-11.1.0/gcc/analyzer/program-point.h
*** gcc-10.3.0/gcc/analyzer/program-point.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/program-point.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Classes for representing locations within the program.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for representing locations within the program.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** public:
*** 72,89 ****
    function_point (const supernode *supernode,
  		  const superedge *from_edge,
  		  unsigned stmt_idx,
! 		  enum point_kind kind)
!   : m_supernode (supernode), m_from_edge (from_edge),
!     m_stmt_idx (stmt_idx), m_kind (kind)
!   {
!     if (from_edge)
!       {
! 	gcc_checking_assert (m_kind == PK_BEFORE_SUPERNODE);
! 	gcc_checking_assert (from_edge->get_kind () == SUPEREDGE_CFG_EDGE);
!       }
!     if (stmt_idx)
!       gcc_checking_assert (m_kind == PK_BEFORE_STMT);
!   }
  
    void print (pretty_printer *pp, const format &f) const;
    void print_source_line (pretty_printer *pp) const;
--- 72,78 ----
    function_point (const supernode *supernode,
  		  const superedge *from_edge,
  		  unsigned stmt_idx,
! 		  enum point_kind kind);
  
    void print (pretty_printer *pp, const format &f) const;
    void print_source_line (pretty_printer *pp) const;
*************** public:
*** 101,113 ****
    /* Accessors.  */
  
    const supernode *get_supernode () const { return m_supernode; }
!   function *get_function () const
!   {
!     if (m_supernode)
!       return m_supernode->m_fun;
!     else
!       return NULL;
!   }
    const gimple *get_stmt () const;
    location_t get_location () const;
    enum point_kind get_kind () const { return m_kind; }
--- 90,96 ----
    /* Accessors.  */
  
    const supernode *get_supernode () const { return m_supernode; }
!   function *get_function () const;
    const gimple *get_stmt () const;
    location_t get_location () const;
    enum point_kind get_kind () const { return m_kind; }
*************** public:
*** 124,142 ****
    /* Factory functions for making various kinds of program_point.  */
  
    static function_point from_function_entry (const supergraph &sg,
! 					    function *fun)
!   {
!     return before_supernode (sg.get_node_for_function_entry (fun),
! 			     NULL);
!   }
  
    static function_point before_supernode (const supernode *supernode,
! 					  const superedge *from_edge)
!   {
!     if (from_edge && from_edge->get_kind () != SUPEREDGE_CFG_EDGE)
!       from_edge = NULL;
!     return function_point (supernode, from_edge, 0, PK_BEFORE_SUPERNODE);
!   }
  
    static function_point before_stmt (const supernode *supernode,
  				     unsigned stmt_idx)
--- 107,116 ----
    /* Factory functions for making various kinds of program_point.  */
  
    static function_point from_function_entry (const supergraph &sg,
! 					     function *fun);
  
    static function_point before_supernode (const supernode *supernode,
! 					  const superedge *from_edge);
  
    static function_point before_stmt (const supernode *supernode,
  				     unsigned stmt_idx)
*************** public:
*** 164,169 ****
--- 138,149 ----
  				     const function_point &point_b);
    static int cmp_within_supernode (const function_point &point_a,
  				   const function_point &point_b);
+   static int cmp (const function_point &point_a,
+ 		  const function_point &point_b);
+   static int cmp_ptr (const void *p1, const void *p2);
+ 
+   /* For before_stmt, go to next stmt.  */
+   void next_stmt ();
  
   private:
    const supernode *m_supernode;
*************** public:
*** 198,209 ****
--- 178,195 ----
    void print_source_line (pretty_printer *pp) const;
    void dump () const;
  
+   json::object *to_json () const;
+ 
    hashval_t hash () const;
    bool operator== (const program_point &other) const
    {
      return (m_function_point == other.m_function_point
  	    && m_call_string == other.m_call_string);
    }
+   bool operator!= (const program_point &other) const
+   {
+     return !(*this == other);
+   }
  
    /* Accessors.  */
  
*************** public:
*** 257,262 ****
--- 243,254 ----
    }
  
    /* Factory functions for making various kinds of program_point.  */
+   static program_point origin ()
+   {
+     return program_point (function_point (NULL, NULL,
+ 					  0, PK_ORIGIN),
+ 			  call_string ());
+   }
  
    static program_point from_function_entry (const supergraph &sg,
  					    function *fun)
*************** public:
*** 304,311 ****
  
    void validate () const;
  
   private:
!   const function_point m_function_point;
    call_string m_call_string;
  };
  
--- 296,308 ----
  
    void validate () const;
  
+   /* For before_stmt, go to next stmt.  */
+   void next_stmt () { m_function_point.next_stmt (); }
+ 
+   program_point get_next () const;
+ 
   private:
!   function_point m_function_point;
    call_string m_call_string;
  };
  
diff -Nrcpad gcc-10.3.0/gcc/analyzer/program-state.cc gcc-11.1.0/gcc/analyzer/program-state.cc
*** gcc-10.3.0/gcc/analyzer/program-state.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/program-state.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Classes for representing the state of interest at a given path of analysis.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for representing the state of interest at a given path of analysis.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 25,30 ****
--- 25,31 ----
  #include "diagnostic-core.h"
  #include "diagnostic.h"
  #include "function.h"
+ #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
*************** along with GCC; see the file COPYING3.
*** 33,45 ****
  #include "tristate.h"
  #include "ordered-hash-map.h"
  #include "selftest.h"
  #include "analyzer/region-model.h"
  #include "analyzer/program-state.h"
  #include "analyzer/constraint-manager.h"
  #include "alloc-pool.h"
  #include "fibonacci_heap.h"
  #include "shortest-paths.h"
- #include "analyzer/constraint-manager.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/pending-diagnostic.h"
  #include "analyzer/diagnostic-manager.h"
--- 34,48 ----
  #include "tristate.h"
  #include "ordered-hash-map.h"
  #include "selftest.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "analyzer/program-state.h"
  #include "analyzer/constraint-manager.h"
  #include "alloc-pool.h"
  #include "fibonacci_heap.h"
  #include "shortest-paths.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/pending-diagnostic.h"
  #include "analyzer/diagnostic-manager.h"
*************** along with GCC; see the file COPYING3.
*** 50,57 ****
  #include "cgraph.h"
  #include "digraph.h"
  #include "analyzer/supergraph.h"
- #include "analyzer/call-string.h"
- #include "analyzer/program-point.h"
  #include "analyzer/program-state.h"
  #include "analyzer/exploded-graph.h"
  #include "analyzer/state-purge.h"
--- 53,58 ----
*************** extrinsic_state::dump () const
*** 99,192 ****
    dump_to_file (stderr);
  }
  
! /* class sm_state_map.  */
  
! /* sm_state_map's ctor.  */
  
! sm_state_map::sm_state_map ()
! : m_map (), m_global_state (0)
  {
  }
  
! /* Clone the sm_state_map.  */
  
! sm_state_map *
! sm_state_map::clone () const
  {
!   return new sm_state_map (*this);
  }
  
! /* Clone this sm_state_map, remapping all svalue_ids within it with ID_MAP.
  
!    Return NULL if there are any svalue_ids that have sm-state for which
!    ID_MAP maps them to svalue_id::null (and thus the clone would have lost
!    the sm-state information). */
  
! sm_state_map *
! sm_state_map::clone_with_remapping (const one_way_svalue_id_map &id_map) const
  {
!   sm_state_map *result = new sm_state_map ();
!   result->m_global_state = m_global_state;
!   for (map_t::iterator iter = m_map.begin ();
!        iter != m_map.end ();
!        ++iter)
!     {
!       svalue_id sid = (*iter).first;
!       gcc_assert (!sid.null_p ());
!       entry_t e = (*iter).second;
!       /* TODO: what should we do if the origin maps from non-null to null?
! 	 Is that loss of information acceptable?  */
!       id_map.update (&e.m_origin);
  
!       svalue_id new_sid = id_map.get_dst_for_src (sid);
!       if (new_sid.null_p ())
! 	{
! 	  delete result;
! 	  return NULL;
! 	}
!       result->m_map.put (new_sid, e);
!     }
!   return result;
  }
  
! /* Print this sm_state_map (for SM) to PP.
     If MODEL is non-NULL, print representative tree values where
     available.  */
  
  void
! sm_state_map::print (const state_machine &sm, const region_model *model,
! 		     pretty_printer *pp) const
  {
    bool first = true;
!   pp_string (pp, "{");
!   if (m_global_state != 0)
      {
!       pp_printf (pp, "global: %s", sm.get_state_name (m_global_state));
        first = false;
      }
    for (map_t::iterator iter = m_map.begin ();
         iter != m_map.end ();
         ++iter)
      {
!       if (!first)
  	pp_string (pp, ", ");
        first = false;
!       svalue_id sid = (*iter).first;
!       sid.print (pp);
  
!       entry_t e = (*iter).second;
!       pp_printf (pp, ": %s", sm.get_state_name (e.m_state));
        if (model)
! 	if (tree rep = model->get_representative_tree (sid))
  	  {
  	    pp_string (pp, " (");
  	    dump_quoted_tree (pp, rep);
  	    pp_character (pp, ')');
  	  }
!       if (!e.m_origin.null_p ())
  	{
  	  pp_string (pp, " (origin: ");
! 	  e.m_origin.print (pp);
  	  if (model)
  	    if (tree rep = model->get_representative_tree (e.m_origin))
  	      {
--- 100,235 ----
    dump_to_file (stderr);
  }
  
! /* Return a new json::object of the form
!    {"checkers"  : array of objects, one for each state_machine}.  */
  
! json::object *
! extrinsic_state::to_json () const
! {
!   json::object *ext_state_obj = new json::object ();
  
!   {
!     json::array *checkers_arr = new json::array ();
!     unsigned i;
!     state_machine *sm;
!     FOR_EACH_VEC_ELT (m_checkers, i, sm)
!       checkers_arr->append (sm->to_json ());
!     ext_state_obj->set ("checkers", checkers_arr);
!   }
! 
!   return ext_state_obj;
! }
! 
! /* Get the region_model_manager for this extrinsic_state.  */
! 
! region_model_manager *
! extrinsic_state::get_model_manager () const
  {
+   if (m_engine)
+     return m_engine->get_model_manager ();
+   else
+     return NULL; /* for selftests.  */
  }
  
! /* struct sm_state_map::entry_t.  */
  
! int
! sm_state_map::entry_t::cmp (const entry_t &entry_a, const entry_t &entry_b)
  {
!   gcc_assert (entry_a.m_state);
!   gcc_assert (entry_b.m_state);
!   if (int cmp_state = ((int)entry_a.m_state->get_id ()
! 		       - (int)entry_b.m_state->get_id ()))
!     return cmp_state;
!   if (entry_a.m_origin && entry_b.m_origin)
!     return svalue::cmp_ptr (entry_a.m_origin, entry_b.m_origin);
!   if (entry_a.m_origin)
!     return 1;
!   if (entry_b.m_origin)
!     return -1;
!   return 0;
  }
  
! /* class sm_state_map.  */
  
! /* sm_state_map's ctor.  */
  
! sm_state_map::sm_state_map (const state_machine &sm)
! : m_sm (sm), m_map (), m_global_state (sm.get_start_state ())
  {
! }
  
! /* Clone the sm_state_map.  */
! 
! sm_state_map *
! sm_state_map::clone () const
! {
!   return new sm_state_map (*this);
  }
  
! /* Print this sm_state_map to PP.
     If MODEL is non-NULL, print representative tree values where
     available.  */
  
  void
! sm_state_map::print (const region_model *model,
! 		      bool simple, bool multiline,
! 		      pretty_printer *pp) const
  {
    bool first = true;
!   if (!multiline)
!     pp_string (pp, "{");
!   if (m_global_state != m_sm.get_start_state ())
      {
!       if (multiline)
! 	pp_string (pp, "  ");
!       pp_string (pp, "global: ");
!       m_global_state->dump_to_pp (pp);
!       if (multiline)
! 	pp_newline (pp);
        first = false;
      }
+   auto_vec <const svalue *> keys (m_map.elements ());
    for (map_t::iterator iter = m_map.begin ();
         iter != m_map.end ();
         ++iter)
+     keys.quick_push ((*iter).first);
+   keys.qsort (svalue::cmp_ptr_ptr);
+   unsigned i;
+   const svalue *sval;
+   FOR_EACH_VEC_ELT (keys, i, sval)
      {
!       if (multiline)
! 	pp_string (pp, "  ");
!       else if (!first)
  	pp_string (pp, ", ");
        first = false;
!       if (!flag_dump_noaddr)
! 	{
! 	  pp_pointer (pp, sval);
! 	  pp_string (pp, ": ");
! 	}
!       sval->dump_to_pp (pp, simple);
  
!       entry_t e = *const_cast <map_t &> (m_map).get (sval);
!       pp_string (pp, ": ");
!       e.m_state->dump_to_pp (pp);
        if (model)
! 	if (tree rep = model->get_representative_tree (sval))
  	  {
  	    pp_string (pp, " (");
  	    dump_quoted_tree (pp, rep);
  	    pp_character (pp, ')');
  	  }
!       if (e.m_origin)
  	{
  	  pp_string (pp, " (origin: ");
! 	  if (!flag_dump_noaddr)
! 	    {
! 	      pp_pointer (pp, e.m_origin);
! 	      pp_string (pp, ": ");
! 	    }
! 	  e.m_origin->dump_to_pp (pp, simple);
  	  if (model)
  	    if (tree rep = model->get_representative_tree (e.m_origin))
  	      {
*************** sm_state_map::print (const state_machine
*** 196,225 ****
  	      }
  	  pp_string (pp, ")");
  	}
      }
!   pp_string (pp, "}");
  }
  
! /* Dump this object (for SM) to stderr.  */
  
  DEBUG_FUNCTION void
! sm_state_map::dump (const state_machine &sm) const
  {
    pretty_printer pp;
    pp_show_color (&pp) = pp_show_color (global_dc->printer);
    pp.buffer->stream = stderr;
!   print (sm, NULL, &pp);
    pp_newline (&pp);
    pp_flush (&pp);
  }
  
  /* Return true if no states have been set within this map
     (all expressions are for the start state).  */
  
  bool
  sm_state_map::is_empty_p () const
  {
!   return m_map.elements () == 0 && m_global_state == 0;
  }
  
  /* Generate a hash value for this sm_state_map.  */
--- 239,298 ----
  	      }
  	  pp_string (pp, ")");
  	}
+       if (multiline)
+ 	pp_newline (pp);
      }
!   if (!multiline)
!     pp_string (pp, "}");
  }
  
! /* Dump this object to stderr.  */
  
  DEBUG_FUNCTION void
! sm_state_map::dump (bool simple) const
  {
    pretty_printer pp;
    pp_show_color (&pp) = pp_show_color (global_dc->printer);
    pp.buffer->stream = stderr;
!   print (NULL, simple, true, &pp);
    pp_newline (&pp);
    pp_flush (&pp);
  }
  
+ /* Return a new json::object of the form
+    {"global"  : (optional) value for global state,
+     SVAL_DESC : value for state}.  */
+ 
+ json::object *
+ sm_state_map::to_json () const
+ {
+   json::object *map_obj = new json::object ();
+ 
+   if (m_global_state != m_sm.get_start_state ())
+     map_obj->set ("global", m_global_state->to_json ());
+   for (map_t::iterator iter = m_map.begin ();
+        iter != m_map.end ();
+        ++iter)
+     {
+       const svalue *sval = (*iter).first;
+       entry_t e = (*iter).second;
+ 
+       label_text sval_desc = sval->get_desc ();
+       map_obj->set (sval_desc.m_buffer, e.m_state->to_json ());
+       sval_desc.maybe_free ();
+ 
+       /* This doesn't yet JSONify e.m_origin.  */
+     }
+   return map_obj;
+ }
+ 
  /* Return true if no states have been set within this map
     (all expressions are for the start state).  */
  
  bool
  sm_state_map::is_empty_p () const
  {
!   return m_map.elements () == 0 && m_global_state == m_sm.get_start_state ();
  }
  
  /* Generate a hash value for this sm_state_map.  */
*************** sm_state_map::hash () const
*** 237,249 ****
         ++iter)
      {
        inchash::hash hstate;
!       inchash::add ((*iter).first, hstate);
        entry_t e = (*iter).second;
!       hstate.add_int (e.m_state);
!       inchash::add (e.m_origin, hstate);
        result ^= hstate.end ();
      }
!   result ^= m_global_state;
  
    return result;
  }
--- 310,322 ----
         ++iter)
      {
        inchash::hash hstate;
!       hstate.add_ptr ((*iter).first);
        entry_t e = (*iter).second;
!       hstate.add_int (e.m_state->get_id ());
!       hstate.add_ptr (e.m_origin);
        result ^= hstate.end ();
      }
!   result ^= m_global_state->get_id ();
  
    return result;
  }
*************** sm_state_map::operator== (const sm_state
*** 263,271 ****
         iter != m_map.end ();
         ++iter)
      {
!       svalue_id sid = (*iter).first;
        entry_t e = (*iter).second;
!       entry_t *other_slot = const_cast <map_t &> (other.m_map).get (sid);
        if (other_slot == NULL)
  	return false;
        if (e != *other_slot)
--- 336,344 ----
         iter != m_map.end ();
         ++iter)
      {
!       const svalue *sval = (*iter).first;
        entry_t e = (*iter).second;
!       entry_t *other_slot = const_cast <map_t &> (other.m_map).get (sval);
        if (other_slot == NULL)
  	return false;
        if (e != *other_slot)
*************** sm_state_map::operator== (const sm_state
*** 277,310 ****
    return true;
  }
  
! /* Get the state of SID within this object.
     States default to the start state.  */
  
  state_machine::state_t
! sm_state_map::get_state (svalue_id sid) const
  {
!   gcc_assert (!sid.null_p ());
  
    if (entry_t *slot
!       = const_cast <map_t &> (m_map).get (sid))
      return slot->m_state;
!   else
!     return 0;
  }
  
! /* Get the "origin" svalue_id for any state of SID.  */
  
! svalue_id
! sm_state_map::get_origin (svalue_id sid) const
  {
!   gcc_assert (!sid.null_p ());
  
    entry_t *slot
!     = const_cast <map_t &> (m_map).get (sid);
    if (slot)
      return slot->m_origin;
    else
!     return svalue_id::null ();
  }
  
  /* Set the state of SID within MODEL to STATE, recording that
--- 350,412 ----
    return true;
  }
  
! /* Get the state of SVAL within this object.
     States default to the start state.  */
  
  state_machine::state_t
! sm_state_map::get_state (const svalue *sval,
! 			  const extrinsic_state &ext_state) const
  {
!   gcc_assert (sval);
! 
!   sval = canonicalize_svalue (sval, ext_state);
  
    if (entry_t *slot
!       = const_cast <map_t &> (m_map).get (sval))
      return slot->m_state;
! 
!   /* SVAL has no explicit sm-state.
!      If this sm allows for state inheritance, then SVAL might have implicit
!      sm-state inherited via a parent.
!      For example INIT_VAL(foo.field) might inherit taintedness state from
!      INIT_VAL(foo).  */
!   if (m_sm.inherited_state_p ())
!     if (region_model_manager *mgr = ext_state.get_model_manager ())
!       if (const initial_svalue *init_sval = sval->dyn_cast_initial_svalue ())
! 	{
! 	  const region *reg = init_sval->get_region ();
! 	  /* Try recursing upwards (up to the base region for the cluster).  */
! 	  if (!reg->base_region_p ())
! 	    if (const region *parent_reg = reg->get_parent_region ())
! 	      {
! 		const svalue *parent_init_sval
! 		  = mgr->get_or_create_initial_value (parent_reg);
! 		state_machine::state_t parent_state
! 		  = get_state (parent_init_sval, ext_state);
! 		if (parent_state)
! 		  return parent_state;
! 	      }
! 	}
! 
!   return m_sm.get_default_state (sval);
  }
  
! /* Get the "origin" svalue for any state of SVAL.  */
  
! const svalue *
! sm_state_map::get_origin (const svalue *sval,
! 			   const extrinsic_state &ext_state) const
  {
!   gcc_assert (sval);
! 
!   sval = canonicalize_svalue (sval, ext_state);
  
    entry_t *slot
!     = const_cast <map_t &> (m_map).get (sval);
    if (slot)
      return slot->m_origin;
    else
!     return NULL;
  }
  
  /* Set the state of SID within MODEL to STATE, recording that
*************** sm_state_map::get_origin (svalue_id sid)
*** 312,339 ****
  
  void
  sm_state_map::set_state (region_model *model,
! 			 svalue_id sid,
  			 state_machine::state_t state,
! 			 svalue_id origin)
  {
    if (model == NULL)
      return;
-   equiv_class &ec = model->get_constraints ()->get_equiv_class (sid);
-   if (!set_state (ec, state, origin))
-     return;
  
!   /* Also do it for all svalues that are equal via non-cm, so that
!      e.g. (void *)&r and (foo *)&r transition together.  */
!   for (unsigned i = 0; i < model->get_num_svalues (); i++)
!     {
!       svalue_id other_sid = svalue_id::from_int (i);
!       if (other_sid == sid)
! 	continue;
  
!       tristate eq = model->eval_condition_without_cm (sid, EQ_EXPR, other_sid);
!       if (eq.is_true ())
! 	impl_set_state (other_sid, state, origin);
!     }
  }
  
  /* Set the state of EC to STATE, recording that the state came from
--- 414,434 ----
  
  void
  sm_state_map::set_state (region_model *model,
! 			 const svalue *sval,
  			 state_machine::state_t state,
! 			 const svalue *origin,
! 			 const extrinsic_state &ext_state)
  {
    if (model == NULL)
      return;
  
!   /* Reject attempts to set state on UNKNOWN.  */
!   if (sval->get_kind () == SK_UNKNOWN)
!     return;
  
!   equiv_class &ec = model->get_constraints ()->get_equiv_class (sval);
!   if (!set_state (ec, state, origin, ext_state))
!     return;
  }
  
  /* Set the state of EC to STATE, recording that the state came from
*************** sm_state_map::set_state (region_model *m
*** 343,377 ****
  bool
  sm_state_map::set_state (const equiv_class &ec,
  			 state_machine::state_t state,
! 			 svalue_id origin)
  {
    int i;
!   svalue_id *sid;
    bool any_changed = false;
!   FOR_EACH_VEC_ELT (ec.m_vars, i, sid)
!     any_changed |= impl_set_state (*sid, state, origin);
    return any_changed;
  }
  
! /* Set state of SID to STATE, bypassing equivalence classes.
     Return true if the state changed.  */
  
  bool
! sm_state_map::impl_set_state (svalue_id sid, state_machine::state_t state,
! 			      svalue_id origin)
  {
!   if (get_state (sid) == state)
      return false;
  
    /* Special-case state 0 as the default value.  */
    if (state == 0)
      {
!       if (m_map.get (sid))
! 	m_map.remove (sid);
        return true;
      }
!   gcc_assert (!sid.null_p ());
!   m_map.put (sid, entry_t (state, origin));
    return true;
  }
  
--- 438,477 ----
  bool
  sm_state_map::set_state (const equiv_class &ec,
  			 state_machine::state_t state,
! 			 const svalue *origin,
! 			 const extrinsic_state &ext_state)
  {
    int i;
!   const svalue *sval;
    bool any_changed = false;
!   FOR_EACH_VEC_ELT (ec.m_vars, i, sval)
!     any_changed |= impl_set_state (sval, state, origin, ext_state);
    return any_changed;
  }
  
! /* Set state of SVAL to STATE, bypassing equivalence classes.
     Return true if the state changed.  */
  
  bool
! sm_state_map::impl_set_state (const svalue *sval,
! 			      state_machine::state_t state,
! 			      const svalue *origin,
! 			      const extrinsic_state &ext_state)
  {
!   sval = canonicalize_svalue (sval, ext_state);
! 
!   if (get_state (sval, ext_state) == state)
      return false;
  
    /* Special-case state 0 as the default value.  */
    if (state == 0)
      {
!       if (m_map.get (sval))
! 	m_map.remove (sval);
        return true;
      }
!   gcc_assert (sval);
!   m_map.put (sval, entry_t (state, origin));
    return true;
  }
  
*************** sm_state_map::get_global_state () const
*** 391,593 ****
    return m_global_state;
  }
  
! /* Handle CALL to unknown FNDECL with an unknown function body, which
!    could do anything to the states passed to it.
!    Clear any state for SM for the params and any LHS.
!    Note that the function might be known to other state machines, but
!    not to this one.  */
  
  void
! sm_state_map::purge_for_unknown_fncall (const exploded_graph &eg,
! 					const state_machine &sm,
! 					const gcall *call,
! 					tree fndecl,
! 					region_model *new_model,
! 					region_model_context *ctxt)
  {
!   logger * const logger = eg.get_logger ();
!   if (logger)
      {
!       if (fndecl)
! 	logger->log ("function %qE is unknown to checker %qs",
! 		     fndecl, sm.get_name ());
!       else
! 	logger->log ("unknown function pointer for checker %qs",
! 		     sm.get_name ());
      }
  
!   /* Purge any state for parms.  */
!   tree iter_param_types = NULL_TREE;
!   if (fndecl)
!     iter_param_types = TYPE_ARG_TYPES (TREE_TYPE (fndecl));
!   for (unsigned arg_idx = 0; arg_idx < gimple_call_num_args (call); arg_idx++)
!     {
!       /* Track expected param type, where available.  */
!       if (iter_param_types)
! 	{
! 	  tree param_type = TREE_VALUE (iter_param_types);
! 	  gcc_assert (param_type);
! 	  iter_param_types = TREE_CHAIN (iter_param_types);
  
! 	  /* Don't purge state if it was passed as a const pointer
! 	     e.g. for things like strlen (PTR).  */
! 	  if (TREE_CODE (param_type) == POINTER_TYPE)
! 	    if (TYPE_READONLY (TREE_TYPE (param_type)))
! 	      continue;
! 	}
!       tree parm = gimple_call_arg (call, arg_idx);
!       svalue_id parm_sid = new_model->get_rvalue (parm, ctxt);
!       set_state (new_model, parm_sid, 0, svalue_id::null ());
  
!       /* Also clear sm-state from svalue_ids that are passed via a
! 	 pointer.  */
!       if (TREE_CODE (parm) == ADDR_EXPR)
  	{
! 	  tree pointee = TREE_OPERAND (parm, 0);
! 	  svalue_id parm_sid = new_model->get_rvalue (pointee, ctxt);
! 	  set_state (new_model, parm_sid, 0, svalue_id::null ());
  	}
      }
  
!   /* Purge any state for any LHS.  */
!   if (tree lhs = gimple_call_lhs (call))
      {
!       svalue_id lhs_sid = new_model->get_rvalue (lhs, ctxt);
!       set_state (new_model, lhs_sid, 0, svalue_id::null ());
      }
  }
  
! /* Update this map based on MAP.  */
  
  void
! sm_state_map::remap_svalue_ids (const svalue_id_map &map)
  {
!   map_t tmp_map;
  
-   /* Build an intermediate map, using the new sids.  */
    for (map_t::iterator iter = m_map.begin ();
         iter != m_map.end ();
         ++iter)
      {
!       svalue_id sid = (*iter).first;
        entry_t e = (*iter).second;
! 
!       map.update (&sid);
!       map.update (&e.m_origin);
!       tmp_map.put (sid, e);
      }
  
!   /* Clear the existing values.  */
!   m_map.empty ();
! 
!   /* Copy over from intermediate map.  */
!   for (map_t::iterator iter = tmp_map.begin ();
!        iter != tmp_map.end ();
!        ++iter)
!     {
!       svalue_id sid = (*iter).first;
!       entry_t e = (*iter).second;
! 
!       impl_set_state (sid, e.m_state, e.m_origin);
!     }
  }
  
! /* Purge any state for svalue_ids >= FIRST_UNUSED_SID.
!    If !SM::can_purge_p, then report the state as leaking,
!    using SM_IDX, CTXT, and MAP.
!    Return the number of states that were purged.  */
  
! int
! sm_state_map::on_svalue_purge (const state_machine &sm,
! 			       int sm_idx,
! 			       svalue_id first_unused_sid,
! 			       const svalue_id_map &map,
! 			       impl_region_model_context *ctxt)
  {
!   /* TODO: ideally remove the slot directly; for now
!      do it in two stages.  */
!   auto_vec<svalue_id> to_remove;
    for (map_t::iterator iter = m_map.begin ();
         iter != m_map.end ();
         ++iter)
      {
!       svalue_id dst_sid ((*iter).first);
!       if (dst_sid.as_int () >= first_unused_sid.as_int ())
! 	{
! 	  /* Complain about leaks here.  */
! 	  entry_t e = (*iter).second;
! 
! 	  if (!sm.can_purge_p (e.m_state))
! 	    ctxt->on_state_leak (sm, sm_idx, dst_sid, first_unused_sid,
! 				 map, e.m_state);
! 
! 	  to_remove.safe_push (dst_sid);
! 	}
!       else if ((*iter).second.m_origin.as_int () >= first_unused_sid.as_int ())
! 	{
! 	  /* If the origin svalue is being purged, then reset it to null.  */
! 	  (*iter).second.m_origin = svalue_id::null ();
! 	}
      }
  
!   int i;
!   svalue_id *dst_sid;
!   FOR_EACH_VEC_ELT (to_remove, i, dst_sid)
!     m_map.remove (*dst_sid);
! 
!   return to_remove.length ();
  }
  
! /* Set the state of CHILD_SID to that of PARENT_SID.  */
  
! void
! sm_state_map::on_inherited_svalue (svalue_id parent_sid,
! 				   svalue_id child_sid)
  {
!   state_machine::state_t state = get_state (parent_sid);
!   impl_set_state (child_sid, state, parent_sid);
! }
  
! /* Set the state of DST_SID to that of SRC_SID.  */
  
! void
! sm_state_map::on_cast (svalue_id src_sid,
! 		       svalue_id dst_sid)
! {
!   state_machine::state_t state = get_state (src_sid);
!   impl_set_state (dst_sid, state, get_origin (src_sid));
! }
  
! /* Purge state from SID (in response to a call to an unknown function).  */
  
! void
! sm_state_map::on_unknown_change (svalue_id sid)
! {
!   impl_set_state (sid, (state_machine::state_t)0, svalue_id::null ());
  }
  
! /* Assert that this object is sane.  */
  
! void
! sm_state_map::validate (const state_machine &sm,
! 			int num_svalues) const
  {
!   /* Skip this in a release build.  */
! #if !CHECKING_P
!   return;
! #endif
! 
!   for (map_t::iterator iter = m_map.begin ();
!        iter != m_map.end ();
!        ++iter)
!     {
!       svalue_id sid = (*iter).first;
!       entry_t e = (*iter).second;
  
!       gcc_assert (sid.as_int () < num_svalues);
!       sm.validate (e.m_state);
!       gcc_assert (e.m_origin.as_int () < num_svalues);
!     }
  }
  
  /* class program_state.  */
--- 491,678 ----
    return m_global_state;
  }
  
! /* Purge any state for SVAL.
!    If !SM::can_purge_p, then report the state as leaking,
!    using CTXT.  */
  
  void
! sm_state_map::on_svalue_leak (const svalue *sval,
! 			      impl_region_model_context *ctxt)
  {
!   if (state_machine::state_t state = get_state (sval, ctxt->m_ext_state))
      {
!       if (!m_sm.can_purge_p (state))
! 	ctxt->on_state_leak (m_sm, sval, state);
!       m_map.remove (sval);
      }
+ }
  
! /* Purge any state for svalues that aren't live with respect to LIVE_SVALUES
!    and MODEL.  */
  
! void
! sm_state_map::on_liveness_change (const svalue_set &live_svalues,
! 				  const region_model *model,
! 				  impl_region_model_context *ctxt)
! {
!   svalue_set svals_to_unset;
!   uncertainty_t *uncertainty = ctxt->get_uncertainty ();
  
!   auto_vec<const svalue *> leaked_svals (m_map.elements ());
!   for (map_t::iterator iter = m_map.begin ();
!        iter != m_map.end ();
!        ++iter)
!     {
!       const svalue *iter_sval = (*iter).first;
!       if (!iter_sval->live_p (&live_svalues, model))
  	{
! 	  svals_to_unset.add (iter_sval);
! 	  entry_t e = (*iter).second;
! 	  if (!m_sm.can_purge_p (e.m_state))
! 	    leaked_svals.quick_push (iter_sval);
  	}
+       if (uncertainty)
+ 	if (uncertainty->unknown_sm_state_p (iter_sval))
+ 	  svals_to_unset.add (iter_sval);
      }
  
!   leaked_svals.qsort (svalue::cmp_ptr_ptr);
! 
!   unsigned i;
!   const svalue *sval;
!   FOR_EACH_VEC_ELT (leaked_svals, i, sval)
      {
!       entry_t e = *m_map.get (sval);
!       ctxt->on_state_leak (m_sm, sval, e.m_state);
      }
+ 
+   for (svalue_set::iterator iter = svals_to_unset.begin ();
+        iter != svals_to_unset.end (); ++iter)
+     m_map.remove (*iter);
  }
  
! /* Purge state from SVAL (in response to a call to an unknown function).  */
  
  void
! sm_state_map::on_unknown_change (const svalue *sval,
! 				 bool is_mutable,
! 				 const extrinsic_state &ext_state)
  {
!   svalue_set svals_to_unset;
  
    for (map_t::iterator iter = m_map.begin ();
         iter != m_map.end ();
         ++iter)
      {
!       const svalue *key = (*iter).first;
        entry_t e = (*iter).second;
!       /* We only want to purge state for some states when things
! 	 are mutable.  For example, in sm-malloc.cc, an on-stack ptr
! 	 doesn't stop being stack-allocated when passed to an unknown fn.  */
!       if (!m_sm.reset_when_passed_to_unknown_fn_p (e.m_state, is_mutable))
! 	continue;
!       if (key == sval)
! 	svals_to_unset.add (key);
!       /* If we have INIT_VAL(BASE_REG), then unset any INIT_VAL(REG)
! 	 for REG within BASE_REG.  */
!       if (const initial_svalue *init_sval = sval->dyn_cast_initial_svalue ())
! 	if (const initial_svalue *init_key = key->dyn_cast_initial_svalue ())
! 	  {
! 	    const region *changed_reg = init_sval->get_region ();
! 	    const region *changed_key = init_key->get_region ();
! 	    if (changed_key->get_base_region () == changed_reg)
! 	      svals_to_unset.add (key);
! 	  }
      }
  
!   for (svalue_set::iterator iter = svals_to_unset.begin ();
!        iter != svals_to_unset.end (); ++iter)
!     impl_set_state (*iter, (state_machine::state_t)0, NULL, ext_state);
  }
  
! /* Purge state for things involving SVAL.
!    For use when SVAL changes meaning, at the def_stmt on an SSA_NAME.   */
  
! void
! sm_state_map::purge_state_involving (const svalue *sval,
! 				     const extrinsic_state &ext_state)
  {
!   /* Currently svalue::involves_p requires this.  */
!   if (sval->get_kind () != SK_INITIAL)
!     return;
! 
!   svalue_set svals_to_unset;
! 
    for (map_t::iterator iter = m_map.begin ();
         iter != m_map.end ();
         ++iter)
      {
!       const svalue *key = (*iter).first;
!       entry_t e = (*iter).second;
!       if (!m_sm.can_purge_p (e.m_state))
! 	continue;
!       if (key->involves_p (sval))
! 	svals_to_unset.add (key);
      }
  
!   for (svalue_set::iterator iter = svals_to_unset.begin ();
!        iter != svals_to_unset.end (); ++iter)
!     impl_set_state (*iter, (state_machine::state_t)0, NULL, ext_state);
  }
  
! /* Comparator for imposing an order on sm_state_map instances.  */
  
! int
! sm_state_map::cmp (const sm_state_map &smap_a, const sm_state_map &smap_b)
  {
!   if (int cmp_count = smap_a.elements () - smap_b.elements ())
!     return cmp_count;
  
!   auto_vec <const svalue *> keys_a (smap_a.elements ());
!   for (map_t::iterator iter = smap_a.begin ();
!        iter != smap_a.end ();
!        ++iter)
!     keys_a.quick_push ((*iter).first);
!   keys_a.qsort (svalue::cmp_ptr_ptr);
  
!   auto_vec <const svalue *> keys_b (smap_b.elements ());
!   for (map_t::iterator iter = smap_b.begin ();
!        iter != smap_b.end ();
!        ++iter)
!     keys_b.quick_push ((*iter).first);
!   keys_b.qsort (svalue::cmp_ptr_ptr);
  
!   unsigned i;
!   const svalue *sval_a;
!   FOR_EACH_VEC_ELT (keys_a, i, sval_a)
!     {
!       const svalue *sval_b = keys_b[i];
!       if (int cmp_sval = svalue::cmp_ptr (sval_a, sval_b))
! 	return cmp_sval;
!       const entry_t *e_a = const_cast <map_t &> (smap_a.m_map).get (sval_a);
!       const entry_t *e_b = const_cast <map_t &> (smap_b.m_map).get (sval_b);
!       if (int cmp_entry = entry_t::cmp (*e_a, *e_b))
! 	return cmp_entry;
!     }
  
!   return 0;
  }
  
! /* Canonicalize SVAL before getting/setting it within the map.
!    Convert all NULL pointers to (void *) to avoid state explosions
!    involving all of the various (foo *)NULL vs (bar *)NULL.  */
  
! const svalue *
! sm_state_map::canonicalize_svalue (const svalue *sval,
! 				   const extrinsic_state &ext_state)
  {
!   region_model_manager *mgr = ext_state.get_model_manager ();
!   if (mgr && sval->get_type () && POINTER_TYPE_P (sval->get_type ()))
!     if (tree cst = sval->maybe_get_constant ())
!       if (zerop (cst))
! 	return mgr->get_or_create_constant_svalue (null_pointer_node);
  
!   return sval;
  }
  
  /* class program_state.  */
*************** sm_state_map::validate (const state_mach
*** 595,607 ****
  /* program_state's ctor.  */
  
  program_state::program_state (const extrinsic_state &ext_state)
! : m_region_model (new region_model ()),
    m_checker_states (ext_state.get_num_checkers ()),
    m_valid (true)
  {
!   int num_states = ext_state.get_num_checkers ();
    for (int i = 0; i < num_states; i++)
!     m_checker_states.quick_push (new sm_state_map ());
  }
  
  /* program_state's copy ctor.  */
--- 680,698 ----
  /* program_state's ctor.  */
  
  program_state::program_state (const extrinsic_state &ext_state)
! : m_region_model (NULL),
    m_checker_states (ext_state.get_num_checkers ()),
    m_valid (true)
  {
!   engine *eng = ext_state.get_engine ();
!   region_model_manager *mgr = eng->get_model_manager ();
!   m_region_model = new region_model (mgr);
!   const int num_states = ext_state.get_num_checkers ();
    for (int i = 0; i < num_states; i++)
!     {
!       sm_state_map *sm = new sm_state_map (ext_state.get_sm (i));
!       m_checker_states.quick_push (sm);
!     }
  }
  
  /* program_state's copy ctor.  */
*************** program_state::print (const extrinsic_st
*** 708,714 ****
  		      pretty_printer *pp) const
  {
    pp_printf (pp, "rmodel: ");
!   m_region_model->print (pp);
    pp_newline (pp);
  
    int i;
--- 799,805 ----
  		      pretty_printer *pp) const
  {
    pp_printf (pp, "rmodel: ");
!   m_region_model->dump_to_pp (pp, true, false);
    pp_newline (pp);
  
    int i;
*************** program_state::print (const extrinsic_st
*** 718,724 ****
        if (!smap->is_empty_p ())
  	{
  	  pp_printf (pp, "%s: ", ext_state.get_name (i));
! 	  smap->print (ext_state.get_sm (i), m_region_model, pp);
  	  pp_newline (pp);
  	}
      }
--- 809,815 ----
        if (!smap->is_empty_p ())
  	{
  	  pp_printf (pp, "%s: ", ext_state.get_name (i));
! 	  smap->print (m_region_model, true, false, pp);
  	  pp_newline (pp);
  	}
      }
*************** program_state::print (const extrinsic_st
*** 729,745 ****
      }
  }
  
! /* Dump a representation of this state to PP.
!    If SUMMARIZE is true, print a one-line summary;
!    if false, print a detailed multiline representation.  */
  
  void
  program_state::dump_to_pp (const extrinsic_state &ext_state,
! 			   bool summarize,
  			   pretty_printer *pp) const
  {
!   pp_printf (pp, "rmodel: ");
!   m_region_model->dump_to_pp (pp, summarize);
  
    int i;
    sm_state_map *smap;
--- 820,844 ----
      }
  }
  
! /* Dump a representation of this state to PP.  */
  
  void
  program_state::dump_to_pp (const extrinsic_state &ext_state,
! 			   bool /*summarize*/, bool multiline,
  			   pretty_printer *pp) const
  {
!   if (!multiline)
!     pp_string (pp, "{");
!   {
!     pp_printf (pp, "rmodel:");
!     if (multiline)
!       pp_newline (pp);
!     else
!       pp_string (pp, " {");
!     m_region_model->dump_to_pp (pp, true, multiline);
!     if (!multiline)
!       pp_string (pp, "}");
!   }
  
    int i;
    sm_state_map *smap;
*************** program_state::dump_to_pp (const extrins
*** 747,776 ****
      {
        if (!smap->is_empty_p ())
  	{
! 	  if (summarize)
! 	    pp_space (pp);
  	  pp_printf (pp, "%s: ", ext_state.get_name (i));
! 	  smap->print (ext_state.get_sm (i), m_region_model, pp);
! 	  if (!summarize)
  	    pp_newline (pp);
  	}
      }
  
    if (!m_valid)
      {
!       if (summarize)
  	pp_space (pp);
        pp_printf (pp, "invalid state");
!       if (!summarize)
  	pp_newline (pp);
      }
  }
  
! /* Dump a multiline representation of this state to OUTF.  */
  
  void
  program_state::dump_to_file (const extrinsic_state &ext_state,
! 			     bool summarize,
  			     FILE *outf) const
  {
    pretty_printer pp;
--- 846,879 ----
      {
        if (!smap->is_empty_p ())
  	{
! 	  if (!multiline)
! 	    pp_string (pp, " {");
  	  pp_printf (pp, "%s: ", ext_state.get_name (i));
! 	  if (multiline)
  	    pp_newline (pp);
+ 	  smap->print (m_region_model, true, multiline, pp);
+ 	  if (!multiline)
+ 	    pp_string (pp, "}");
  	}
      }
  
    if (!m_valid)
      {
!       if (!multiline)
  	pp_space (pp);
        pp_printf (pp, "invalid state");
!       if (multiline)
  	pp_newline (pp);
      }
+   if (!multiline)
+     pp_string (pp, "}");
  }
  
! /* Dump a representation of this state to OUTF.  */
  
  void
  program_state::dump_to_file (const extrinsic_state &ext_state,
! 			     bool summarize, bool multiline,
  			     FILE *outf) const
  {
    pretty_printer pp;
*************** program_state::dump_to_file (const extri
*** 778,784 ****
    if (outf == stderr)
      pp_show_color (&pp) = pp_show_color (global_dc->printer);
    pp.buffer->stream = outf;
!   dump_to_pp (ext_state, summarize, &pp);
    pp_flush (&pp);
  }
  
--- 881,887 ----
    if (outf == stderr)
      pp_show_color (&pp) = pp_show_color (global_dc->printer);
    pp.buffer->stream = outf;
!   dump_to_pp (ext_state, summarize, multiline, &pp);
    pp_flush (&pp);
  }
  
*************** DEBUG_FUNCTION void
*** 788,794 ****
  program_state::dump (const extrinsic_state &ext_state,
  		     bool summarize) const
  {
!   dump_to_file (ext_state, summarize, stderr);
  }
  
  /* Determine if following edge SUCC from ENODE is valid within the graph EG
--- 891,952 ----
  program_state::dump (const extrinsic_state &ext_state,
  		     bool summarize) const
  {
!   dump_to_file (ext_state, summarize, true, stderr);
! }
! 
! /* Return a new json::object of the form
!    {"store"  : object for store,
!     "constraints" : object for constraint_manager,
!     "curr_frame" : (optional) str for current frame,
!     "checkers" : { STATE_NAME : object per sm_state_map },
!     "valid" : true/false}.  */
! 
! json::object *
! program_state::to_json (const extrinsic_state &ext_state) const
! {
!   json::object *state_obj = new json::object ();
! 
!   state_obj->set ("store", m_region_model->get_store ()->to_json ());
!   state_obj->set ("constraints",
! 		  m_region_model->get_constraints ()->to_json ());
!   if (m_region_model->get_current_frame ())
!     state_obj->set ("curr_frame",
! 		    m_region_model->get_current_frame ()->to_json ());
! 
!   /* Provide m_checker_states as an object, using names as keys.  */
!   {
!     json::object *checkers_obj = new json::object ();
! 
!     int i;
!     sm_state_map *smap;
!     FOR_EACH_VEC_ELT (m_checker_states, i, smap)
!       if (!smap->is_empty_p ())
! 	checkers_obj->set (ext_state.get_name (i), smap->to_json ());
! 
!     state_obj->set ("checkers", checkers_obj);
!   }
! 
!   state_obj->set ("valid", new json::literal (m_valid));
! 
!   return state_obj;
! }
! 
! /* Update this program_state to reflect a top-level call to FUN.
!    The params will have initial_svalues.  */
! 
! void
! program_state::push_frame (const extrinsic_state &ext_state ATTRIBUTE_UNUSED,
! 			   function *fun)
! {
!   m_region_model->push_frame (fun, NULL, NULL);
! }
! 
! /* Get the current function of this state.  */
! 
! function *
! program_state::get_current_function () const
! {
!   return m_region_model->get_current_function ();
  }
  
  /* Determine if following edge SUCC from ENODE is valid within the graph EG
*************** program_state::dump (const extrinsic_sta
*** 805,816 ****
  
  bool
  program_state::on_edge (exploded_graph &eg,
! 			const exploded_node &enode,
  			const superedge *succ,
! 			state_change *change)
  {
    /* Update state.  */
!   const program_point &point = enode.get_point ();
    const gimple *last_stmt = point.get_supernode ()->get_last_stmt ();
  
    /* For conditionals and switch statements, add the
--- 963,974 ----
  
  bool
  program_state::on_edge (exploded_graph &eg,
! 			exploded_node *enode,
  			const superedge *succ,
! 			uncertainty_t *uncertainty)
  {
    /* Update state.  */
!   const program_point &point = enode->get_point ();
    const gimple *last_stmt = point.get_supernode ()->get_last_stmt ();
  
    /* For conditionals and switch statements, add the
*************** program_state::on_edge (exploded_graph &
*** 822,834 ****
       sm-state transitions (e.g. transitions due to ptrs becoming known
       to be NULL or non-NULL) */
  
!   impl_region_model_context ctxt (eg, &enode,
! 				  &enode.get_state (),
! 				  this, change,
  				  last_stmt);
    if (!m_region_model->maybe_update_for_edge (*succ,
  					      last_stmt,
! 					      &ctxt))
      {
        logger * const logger = eg.get_logger ();
        if (logger)
--- 980,993 ----
       sm-state transitions (e.g. transitions due to ptrs becoming known
       to be NULL or non-NULL) */
  
!   impl_region_model_context ctxt (eg, enode,
! 				  &enode->get_state (),
! 				  this,
! 				  uncertainty,
  				  last_stmt);
    if (!m_region_model->maybe_update_for_edge (*succ,
  					      last_stmt,
! 					      &ctxt, NULL))
      {
        logger * const logger = eg.get_logger ();
        if (logger)
*************** program_state::on_edge (exploded_graph &
*** 838,843 ****
--- 997,1006 ----
        return false;
      }
  
+   program_state::detect_leaks (enode->get_state (), *this,
+ 			       NULL, eg.get_ext_state (),
+ 			       &ctxt);
+ 
    return true;
  }
  
*************** program_state::on_edge (exploded_graph &
*** 845,859 ****
     relevant at POINT.
     The idea is that we're more likely to be able to consolidate
     multiple (point, state) into single exploded_nodes if we discard
!    irrelevant state (e.g. at the end of functions).
! 
!    Retain state affected by CHANGE, to make it easier to generate
!    state_change_events.  */
  
  program_state
  program_state::prune_for_point (exploded_graph &eg,
  				const program_point &point,
! 				state_change *change) const
  {
    logger * const logger = eg.get_logger ();
    LOG_SCOPE (logger);
--- 1008,1020 ----
     relevant at POINT.
     The idea is that we're more likely to be able to consolidate
     multiple (point, state) into single exploded_nodes if we discard
!    irrelevant state (e.g. at the end of functions).  */
  
  program_state
  program_state::prune_for_point (exploded_graph &eg,
  				const program_point &point,
! 				exploded_node *enode_for_diag,
! 				uncertainty_t *uncertainty) const
  {
    logger * const logger = eg.get_logger ();
    LOG_SCOPE (logger);
*************** program_state::prune_for_point (exploded
*** 864,1070 ****
  
    program_state new_state (*this);
  
-   purge_stats stats;
- 
    const state_purge_map *pm = eg.get_purge_map ();
    if (pm)
      {
!       region_id_set purgeable_ssa_regions (new_state.m_region_model);
!       region_id frame_rid
! 	= new_state.m_region_model->get_current_frame_id ();
!       frame_region *frame
! 	= new_state.m_region_model->get_region <frame_region>(frame_rid);
! 
!       /* TODO: maybe move to a member of region_model?  */
! 
!       auto_vec<tree> ssa_names_to_purge;
!       for (frame_region::map_t::iterator iter = frame->begin ();
! 	   iter != frame->end ();
! 	   ++iter)
  	{
! 	  tree var = (*iter).first;
! 	  region_id rid = (*iter).second;
! 	  if (TREE_CODE (var) == SSA_NAME)
  	    {
! 	      const state_purge_per_ssa_name &per_ssa
! 		= pm->get_data_for_ssa_name (var);
! 	      if (!per_ssa.needed_at_point_p (point.get_function_point ()))
! 		{
! 		  region *region
! 		    = new_state.m_region_model->get_region (rid);
! 		  svalue_id sid = region->get_value_direct ();
! 		  if (!sid.null_p ())
! 		    {
! 		      if (!new_state.can_purge_p (eg.get_ext_state (), sid))
! 			{
! 			  /* (currently only state maps can keep things
! 			     alive).  */
! 			  if (logger)
! 			    logger->log ("not purging RID: %i for %qE"
! 					 " (used by state map)",
! 					 rid.as_int (), var);
! 			  continue;
! 			}
  
! 		      /* Don't purge regions containing svalues that
! 			 have a change of sm-state, to make it easier to
! 			 generate state_change_event messages.  */
! 		      if (change)
! 			if (change->affects_p (sid))
! 			  {
! 			    if (logger)
! 			      logger->log ("not purging RID: %i for %qE"
! 					   " (affected by change)",
! 					   rid.as_int (), var);
! 			    continue;
! 			  }
! 		    }
! 		  purgeable_ssa_regions.add_region (rid);
! 		  ssa_names_to_purge.safe_push (var);
  		  if (logger)
! 		    logger->log ("purging RID: %i for %qE", rid.as_int (), var);
! 		  /* We also need to remove the region from the map.
! 		     We're in mid-traversal, so the removal is done in
! 		     unbind below.  */
  		}
  	    }
  	}
  
!       /* Unbind the regions from the frame's map of vars-to-regions.  */
!       unsigned i;
!       tree var;
!       FOR_EACH_VEC_ELT (ssa_names_to_purge, i, var)
! 	frame->unbind (var);
! 
!       /* Purge the regions.  Nothing should point to them, and they
! 	 should have no children, as they are for SSA names.  */
!       new_state.m_region_model->purge_regions (purgeable_ssa_regions,
! 					       &stats,
! 					       eg.get_logger ());
!     }
! 
!   /* Purge unused svalues.  */
!   // TODO: which enode to use, if any?
!   impl_region_model_context ctxt (eg, NULL,
! 				  this,
! 				  &new_state,
! 				  change,
! 				  NULL);
!   new_state.m_region_model->purge_unused_svalues (&stats, &ctxt);
!   if (logger)
!     {
!       logger->log ("num svalues purged: %i", stats.m_num_svalues);
!       logger->log ("num regions purged: %i", stats.m_num_regions);
!       logger->log ("num equiv_classes purged: %i", stats.m_num_equiv_classes);
!       logger->log ("num constraints purged: %i", stats.m_num_constraints);
!       logger->log ("num sm map items purged: %i", stats.m_num_client_items);
      }
  
!   new_state.m_region_model->canonicalize (&ctxt);
  
    return new_state;
  }
  
! /* Remap all svalue_ids in this state's m_checker_states according to MAP.
!    The svalues_ids in the region_model are assumed to already have been
!    remapped.  */
! 
! void
! program_state::remap_svalue_ids (const svalue_id_map &map)
! {
!   int i;
!   sm_state_map *smap;
!   FOR_EACH_VEC_ELT (m_checker_states, i, smap)
!     smap->remap_svalue_ids (map);
! }
! 
! /* Attempt to return a tree that represents SID, or return NULL_TREE.
!    Find the first region that stores the value (e.g. a local) and
!    generate a representative tree for it.  */
  
  tree
! program_state::get_representative_tree (svalue_id sid) const
  {
!   return m_region_model->get_representative_tree (sid);
  }
  
! /* Attempt to merge this state with OTHER, both using EXT_STATE.
     Write the result to *OUT.
     If the states were merged successfully, return true.  */
  
  bool
  program_state::can_merge_with_p (const program_state &other,
! 				 const extrinsic_state &ext_state,
  				 program_state *out) const
  {
    gcc_assert (out);
  
!   /* TODO:  initially I had an early reject here if there
!      are sm-differences between the states.  However, this was
!      falsely rejecting merger opportunities for states where the
!      only difference was in svalue_id ordering.  */
  
    /* Attempt to merge the region_models.  */
- 
-   svalue_id_merger_mapping sid_mapping (*m_region_model,
- 					*other.m_region_model);
    if (!m_region_model->can_merge_with_p (*other.m_region_model,
! 					 out->m_region_model,
! 					 &sid_mapping))
      return false;
  
!   /* Copy m_checker_states to result, remapping svalue_ids using
!      sid_mapping.  */
!   int i;
!   sm_state_map *smap;
    FOR_EACH_VEC_ELT (out->m_checker_states, i, smap)
-     delete smap;
-   out->m_checker_states.truncate (0);
- 
-   /* Remap this and other's m_checker_states using sid_mapping.
-      Only merge states that have equality between the two end-results:
-      sm-state differences are likely to be interesting to end-users, and
-      hence are worth exploring as separate paths in the exploded graph.  */
-   FOR_EACH_VEC_ELT (m_checker_states, i, smap)
      {
!       sm_state_map *other_smap = other.m_checker_states[i];
! 
!       /* If clone_with_remapping returns NULL for one of the input smaps,
! 	 then it has sm-state for an svalue_id where the svalue_id is
! 	 being mapped to svalue_id::null in its sid_mapping, meaning that
! 	 the svalue is to be dropped during the merger.  We don't want
! 	 to lose sm-state during a state merger, so return false for these
! 	 cases.  */
!       sm_state_map *remapped_a_smap
! 	= smap->clone_with_remapping (sid_mapping.m_map_from_a_to_m);
!       if (!remapped_a_smap)
! 	return false;
!       sm_state_map *remapped_b_smap
! 	= other_smap->clone_with_remapping (sid_mapping.m_map_from_b_to_m);
!       if (!remapped_b_smap)
! 	{
! 	  delete remapped_a_smap;
! 	  return false;
! 	}
! 
!       /* Both states have sm-state for the same values; now ensure that the
! 	 states are equal.  */
!       if (*remapped_a_smap == *remapped_b_smap)
! 	{
! 	  out->m_checker_states.safe_push (remapped_a_smap);
! 	  delete remapped_b_smap;
! 	}
!       else
! 	{
! 	  /* Don't merge if there are sm-state differences.  */
! 	  delete remapped_a_smap;
! 	  delete remapped_b_smap;
! 	  return false;
! 	}
      }
  
!   impl_region_model_context ctxt (out, NULL, ext_state);
!   out->m_region_model->canonicalize (&ctxt);
  
    return true;
  }
--- 1025,1136 ----
  
    program_state new_state (*this);
  
    const state_purge_map *pm = eg.get_purge_map ();
    if (pm)
      {
!       unsigned num_ssas_purged = 0;
!       auto_vec<const decl_region *> ssa_name_regs;
!       new_state.m_region_model->get_ssa_name_regions_for_current_frame
! 	(&ssa_name_regs);
!       ssa_name_regs.qsort (region::cmp_ptr_ptr);
!       unsigned i;
!       const decl_region *reg;
!       FOR_EACH_VEC_ELT (ssa_name_regs, i, reg)
  	{
! 	  tree ssa_name = reg->get_decl ();
! 	  const state_purge_per_ssa_name &per_ssa
! 	    = pm->get_data_for_ssa_name (ssa_name);
! 	  if (!per_ssa.needed_at_point_p (point.get_function_point ()))
  	    {
! 	      /* Don't purge bindings of SSA names to svalues
! 		 that have unpurgable sm-state, so that leaks are
! 		 reported at the end of the function, rather than
! 		 at the last place that such an SSA name is referred to.
  
! 		 But do purge them for temporaries (when SSA_NAME_VAR is
! 		 NULL), so that we report for cases where a leak happens when
! 		 a variable is overwritten with another value, so that the leak
! 		 is reported at the point of overwrite, rather than having
! 		 temporaries keep the value reachable until the frame is
! 		 popped.  */
! 	      const svalue *sval
! 		= new_state.m_region_model->get_store_value (reg);
! 	      if (!new_state.can_purge_p (eg.get_ext_state (), sval)
! 		  && SSA_NAME_VAR (ssa_name))
! 		{
! 		  /* (currently only state maps can keep things
! 		     alive).  */
  		  if (logger)
! 		    logger->log ("not purging binding for %qE"
! 				 " (used by state map)", ssa_name);
! 		  continue;
  		}
+ 
+ 	      new_state.m_region_model->purge_region (reg);
+ 	      num_ssas_purged++;
  	    }
  	}
  
!       if (num_ssas_purged > 0)
! 	{
! 	  if (logger)
! 	    logger->log ("num_ssas_purged: %i", num_ssas_purged);
! 	  impl_region_model_context ctxt (eg, enode_for_diag,
! 					  this,
! 					  &new_state,
! 					  uncertainty,
! 					  point.get_stmt ());
! 	  detect_leaks (*this, new_state, NULL, eg.get_ext_state (), &ctxt);
! 	}
      }
  
!   new_state.m_region_model->canonicalize ();
  
    return new_state;
  }
  
! /* Get a representative tree to use for describing SVAL.  */
  
  tree
! program_state::get_representative_tree (const svalue *sval) const
  {
!   gcc_assert (m_region_model);
!   return m_region_model->get_representative_tree (sval);
  }
  
! /* Attempt to merge this state with OTHER, both at POINT.
     Write the result to *OUT.
     If the states were merged successfully, return true.  */
  
  bool
  program_state::can_merge_with_p (const program_state &other,
! 				 const program_point &point,
  				 program_state *out) const
  {
    gcc_assert (out);
+   gcc_assert (m_region_model);
  
!   /* Early reject if there are sm-differences between the states.  */
!   int i;
!   sm_state_map *smap;
!   FOR_EACH_VEC_ELT (out->m_checker_states, i, smap)
!     if (*m_checker_states[i] != *other.m_checker_states[i])
!       return false;
  
    /* Attempt to merge the region_models.  */
    if (!m_region_model->can_merge_with_p (*other.m_region_model,
! 					  point,
! 					  out->m_region_model))
      return false;
  
!   /* Copy m_checker_states to OUT.  */
    FOR_EACH_VEC_ELT (out->m_checker_states, i, smap)
      {
!       delete smap;
!       out->m_checker_states[i] = m_checker_states[i]->clone ();
      }
  
!   out->m_region_model->canonicalize ();
  
    return true;
  }
*************** program_state::validate (const extrinsic
*** 1079,1290 ****
    return;
  #endif
  
-   m_region_model->validate ();
    gcc_assert (m_checker_states.length () == ext_state.get_num_checkers ());
-   int sm_idx;
-   sm_state_map *smap;
-   FOR_EACH_VEC_ELT (m_checker_states, sm_idx, smap)
-     {
-       const state_machine &sm = ext_state.get_sm (sm_idx);
-       smap->validate (sm, m_region_model->get_num_svalues ());
-     }
- }
- 
- /* Dump this sm_change to PP.  */
- 
- void
- state_change::sm_change::dump (pretty_printer *pp,
- 			       const extrinsic_state &ext_state) const
- {
-   const state_machine &sm = get_sm (ext_state);
-   pp_string (pp, "(");
-   m_new_sid.print (pp);
-   pp_printf (pp, ": %s: %qs -> %qs)",
- 	     sm.get_name (),
- 	     sm.get_state_name (m_old_state),
- 	     sm.get_state_name (m_new_state));
- }
- 
- /* Remap all svalue_ids in this change according to MAP.  */
- 
- void
- state_change::sm_change::remap_svalue_ids (const svalue_id_map &map)
- {
-   map.update (&m_new_sid);
  }
  
! /* Purge any svalue_ids >= FIRST_UNUSED_SID.
!    Return the number of states that were purged.  */
! 
! int
! state_change::sm_change::on_svalue_purge (svalue_id first_unused_sid)
  {
!   if (m_new_sid.as_int () >= first_unused_sid.as_int ())
      {
!       m_new_sid = svalue_id::null ();
!       return 1;
      }
! 
!   return 0;
! }
! 
! /* Assert that this object is sane.  */
! 
! void
! state_change::sm_change::validate (const program_state &new_state,
! 				   const extrinsic_state &ext_state) const
! {
!   gcc_assert ((unsigned)m_sm_idx < ext_state.get_num_checkers ());
!   const state_machine &sm = ext_state.get_sm (m_sm_idx);
!   sm.validate (m_old_state);
!   sm.validate (m_new_state);
!   m_new_sid.validate (*new_state.m_region_model);
! }
! 
! /* state_change's ctor.  */
! 
! state_change::state_change ()
! {
  }
  
! /* state_change's copy ctor.  */
  
! state_change::state_change (const state_change &other)
! : m_sm_changes (other.m_sm_changes.length ())
! {
!   unsigned i;
!   sm_change *change;
!   FOR_EACH_VEC_ELT (other.m_sm_changes, i, change)
!     m_sm_changes.quick_push (*change);
! }
  
! /* Record a state-machine state change.  */
  
  void
! state_change::add_sm_change (int sm_idx,
! 			     svalue_id new_sid,
! 			     state_machine::state_t old_state,
! 			     state_machine::state_t new_state)
! {
!   m_sm_changes.safe_push (sm_change (sm_idx,
! 				     new_sid,
! 				     old_state, new_state));
! }
! 
! /* Return true if SID (in the new state) was affected by any
!    sm-state changes.  */
! 
! bool
! state_change::affects_p (svalue_id sid) const
  {
!   unsigned i;
!   sm_change *change;
!   FOR_EACH_VEC_ELT (m_sm_changes, i, change)
      {
!       if (sid == change->m_new_sid)
! 	return true;
      }
-   return false;
- }
  
! /* Dump this state_change to PP.  */
  
! void
! state_change::dump (pretty_printer *pp,
! 		    const extrinsic_state &ext_state) const
! {
!   unsigned i;
!   sm_change *change;
!   FOR_EACH_VEC_ELT (m_sm_changes, i, change)
      {
!       if (i > 0)
! 	pp_string (pp, ", ");
!       change->dump (pp, ext_state);
      }
- }
- 
- /* Dump this state_change to stderr.  */
- 
- void
- state_change::dump (const extrinsic_state &ext_state) const
- {
-   pretty_printer pp;
-   pp_show_color (&pp) = pp_show_color (global_dc->printer);
-   pp.buffer->stream = stderr;
-   dump (&pp, ext_state);
-   pp_newline (&pp);
-   pp_flush (&pp);
- }
- 
- /* Remap all svalue_ids in this state_change according to MAP.  */
- 
- void
- state_change::remap_svalue_ids (const svalue_id_map &map)
- {
-   unsigned i;
-   sm_change *change;
-   FOR_EACH_VEC_ELT (m_sm_changes, i, change)
-     change->remap_svalue_ids (map);
- }
  
! /* Purge any svalue_ids >= FIRST_UNUSED_SID.
!    Return the number of states that were purged.  */
  
! int
! state_change::on_svalue_purge (svalue_id first_unused_sid)
! {
!   int result = 0;
    unsigned i;
!   sm_change *change;
!   FOR_EACH_VEC_ELT (m_sm_changes, i, change)
!     result += change->on_svalue_purge (first_unused_sid);
!   return result;
! }
  
! /* Assert that this object is sane.  */
  
! void
! state_change::validate (const program_state &new_state,
! 			const extrinsic_state &ext_state) const
! {
!   /* Skip this in a release build.  */
! #if !CHECKING_P
!   return;
! #endif
!   unsigned i;
!   sm_change *change;
!   FOR_EACH_VEC_ELT (m_sm_changes, i, change)
!     change->validate (new_state, ext_state);
  }
  
  #if CHECKING_P
  
  namespace selftest {
  
- /* Implementation detail of ASSERT_DUMP_EQ.  */
- 
- static void
- assert_dump_eq (const location &loc,
- 		const program_state &state,
- 		const extrinsic_state &ext_state,
- 		bool summarize,
- 		const char *expected)
- {
-   auto_fix_quotes sentinel;
-   pretty_printer pp;
-   pp_format_decoder (&pp) = default_tree_printer;
-   state.dump_to_pp (ext_state, summarize, &pp);
-   ASSERT_STREQ_AT (loc, pp_formatted_text (&pp), expected);
- }
- 
- /* Assert that STATE.dump_to_pp (SUMMARIZE) is EXPECTED.  */
- 
- #define ASSERT_DUMP_EQ(STATE, EXT_STATE, SUMMARIZE, EXPECTED)		\
-   SELFTEST_BEGIN_STMT							\
-   assert_dump_eq ((SELFTEST_LOCATION), (STATE), (EXT_STATE), (SUMMARIZE), \
- 		  (EXPECTED));						\
-   SELFTEST_END_STMT
- 
  /* Tests for sm_state_map.  */
  
  static void
--- 1145,1285 ----
    return;
  #endif
  
    gcc_assert (m_checker_states.length () == ext_state.get_num_checkers ());
  }
  
! static void
! log_set_of_svalues (logger *logger, const char *name,
! 		    const svalue_set &set)
  {
!   logger->log (name);
!   logger->inc_indent ();
!   auto_vec<const svalue *> sval_vecs (set.elements ());
!   for (svalue_set::iterator iter = set.begin ();
!        iter != set.end (); ++iter)
!     sval_vecs.quick_push (*iter);
!   sval_vecs.qsort (svalue::cmp_ptr_ptr);
!   unsigned i;
!   const svalue *sval;
!   FOR_EACH_VEC_ELT (sval_vecs, i, sval)
      {
!       logger->start_log_line ();
!       pretty_printer *pp = logger->get_printer ();
!       if (!flag_dump_noaddr)
! 	{
! 	  pp_pointer (pp, sval);
! 	  pp_string (pp, ": ");
! 	}
!       sval->dump_to_pp (pp, false);
!       logger->end_log_line ();
      }
!   logger->dec_indent ();
  }
  
! /* Compare the sets of svalues reachable from each of SRC_STATE and DEST_STATE.
!    For all svalues that are reachable in SRC_STATE and are not live in
!    DEST_STATE (whether explicitly reachable in DEST_STATE, or implicitly live
!    based on the former set), call CTXT->on_svalue_leak for them.
  
!    Call on_liveness_change on both the CTXT and on the DEST_STATE's
!    constraint_manager, purging dead svalues from sm-state and from
!    constraints, respectively.
  
!    This function should be called at each fine-grained state change, not
!    just at exploded edges.  */
  
  void
! program_state::detect_leaks (const program_state &src_state,
! 			     const program_state &dest_state,
! 			     const svalue *extra_sval,
! 			     const extrinsic_state &ext_state,
! 			     region_model_context *ctxt)
  {
!   logger *logger = ext_state.get_logger ();
!   LOG_SCOPE (logger);
!   const uncertainty_t *uncertainty = ctxt->get_uncertainty ();
!   if (logger)
      {
!       pretty_printer *pp = logger->get_printer ();
!       logger->start_log_line ();
!       pp_string (pp, "src_state: ");
!       src_state.dump_to_pp (ext_state, true, false, pp);
!       logger->end_log_line ();
!       logger->start_log_line ();
!       pp_string (pp, "dest_state: ");
!       dest_state.dump_to_pp (ext_state, true, false, pp);
!       logger->end_log_line ();
!       if (extra_sval)
! 	{
! 	  logger->start_log_line ();
! 	  pp_string (pp, "extra_sval: ");
! 	  extra_sval->dump_to_pp (pp, true);
! 	  logger->end_log_line ();
! 	}
!       if (uncertainty)
! 	{
! 	  logger->start_log_line ();
! 	  pp_string (pp, "uncertainty: ");
! 	  uncertainty->dump_to_pp (pp, true);
! 	  logger->end_log_line ();
! 	}
      }
  
!   /* Get svalues reachable from each of src_state and dest_state.
!      Get svalues *known* to be reachable in src_state.
!      Pass in uncertainty for dest_state so that we additionally get svalues that
!      *might* still be reachable in dst_state.  */
!   svalue_set known_src_svalues;
!   src_state.m_region_model->get_reachable_svalues (&known_src_svalues,
! 						   NULL, NULL);
!   svalue_set maybe_dest_svalues;
!   dest_state.m_region_model->get_reachable_svalues (&maybe_dest_svalues,
! 						    extra_sval, uncertainty);
  
!   if (logger)
      {
!       log_set_of_svalues (logger, "src_state known reachable svalues:",
! 			  known_src_svalues);
!       log_set_of_svalues (logger, "dest_state maybe reachable svalues:",
! 			  maybe_dest_svalues);
      }
  
!   auto_vec <const svalue *> dead_svals (known_src_svalues.elements ());
!   for (svalue_set::iterator iter = known_src_svalues.begin ();
!        iter != known_src_svalues.end (); ++iter)
!     {
!       const svalue *sval = (*iter);
!       /* For each sval reachable from SRC_STATE, determine if it is
! 	 live in DEST_STATE: either explicitly reachable, implicitly
! 	 live based on the set of explicitly reachable svalues,
! 	 or possibly reachable as recorded in uncertainty.
! 	 Record those that have ceased to be live i.e. were known
! 	 to be live, and are now not known to be even possibly-live.  */
!       if (!sval->live_p (&maybe_dest_svalues, dest_state.m_region_model))
! 	dead_svals.quick_push (sval);
!     }
  
!   /* Call CTXT->on_svalue_leak on all svals in SRC_STATE  that have ceased
!      to be live, sorting them first to ensure deterministic behavior.  */
!   dead_svals.qsort (svalue::cmp_ptr_ptr);
    unsigned i;
!   const svalue *sval;
!   FOR_EACH_VEC_ELT (dead_svals, i, sval)
!     ctxt->on_svalue_leak (sval);
  
!   /* Purge dead svals from sm-state.  */
!   ctxt->on_liveness_change (maybe_dest_svalues,
! 			    dest_state.m_region_model);
  
!   /* Purge dead svals from constraints.  */
!   dest_state.m_region_model->get_constraints ()->on_liveness_change
!     (maybe_dest_svalues, dest_state.m_region_model);
  }
  
  #if CHECKING_P
  
  namespace selftest {
  
  /* Tests for sm_state_map.  */
  
  static void
*************** test_sm_state_map ()
*** 1294,1427 ****
    tree y = build_global_decl ("y", integer_type_node);
    tree z = build_global_decl ("z", integer_type_node);
  
    /* Test setting states on svalue_id instances directly.  */
    {
!     region_model model;
!     svalue_id sid_x = model.get_rvalue (x, NULL);
!     svalue_id sid_y = model.get_rvalue (y, NULL);
!     svalue_id sid_z = model.get_rvalue (z, NULL);
  
!     sm_state_map map;
      ASSERT_TRUE (map.is_empty_p ());
!     ASSERT_EQ (map.get_state (sid_x), 0);
  
!     map.impl_set_state (sid_x, 42, sid_z);
!     ASSERT_EQ (map.get_state (sid_x), 42);
!     ASSERT_EQ (map.get_origin (sid_x), sid_z);
!     ASSERT_EQ (map.get_state (sid_y), 0);
      ASSERT_FALSE (map.is_empty_p ());
  
!     map.impl_set_state (sid_y, 0, sid_z);
!     ASSERT_EQ (map.get_state (sid_y), 0);
  
!     map.impl_set_state (sid_x, 0, sid_z);
!     ASSERT_EQ (map.get_state (sid_x), 0);
      ASSERT_TRUE (map.is_empty_p ());
    }
  
    /* Test setting states via equivalence classes.  */
    {
!     region_model model;
!     svalue_id sid_x = model.get_rvalue (x, NULL);
!     svalue_id sid_y = model.get_rvalue (y, NULL);
!     svalue_id sid_z = model.get_rvalue (z, NULL);
  
!     sm_state_map map;
      ASSERT_TRUE (map.is_empty_p ());
!     ASSERT_EQ (map.get_state (sid_x), 0);
!     ASSERT_EQ (map.get_state (sid_y), 0);
  
      model.add_constraint (x, EQ_EXPR, y, NULL);
  
      /* Setting x to a state should also update y, as they
         are in the same equivalence class.  */
!     map.set_state (&model, sid_x, 5, sid_z);
!     ASSERT_EQ (map.get_state (sid_x), 5);
!     ASSERT_EQ (map.get_state (sid_y), 5);
!     ASSERT_EQ (map.get_origin (sid_x), sid_z);
!     ASSERT_EQ (map.get_origin (sid_y), sid_z);
    }
  
    /* Test equality and hashing.  */
    {
!     region_model model;
!     svalue_id sid_y = model.get_rvalue (y, NULL);
!     svalue_id sid_z = model.get_rvalue (z, NULL);
  
!     sm_state_map map0;
!     sm_state_map map1;
!     sm_state_map map2;
  
      ASSERT_EQ (map0.hash (), map1.hash ());
      ASSERT_EQ (map0, map1);
  
!     map1.impl_set_state (sid_y, 5, sid_z);
      ASSERT_NE (map0.hash (), map1.hash ());
      ASSERT_NE (map0, map1);
  
      /* Make the same change to map2.  */
!     map2.impl_set_state (sid_y, 5, sid_z);
      ASSERT_EQ (map1.hash (), map2.hash ());
      ASSERT_EQ (map1, map2);
    }
  
    /* Equality and hashing shouldn't depend on ordering.  */
    {
!     sm_state_map map0;
!     sm_state_map map1;
!     sm_state_map map2;
  
      ASSERT_EQ (map0.hash (), map1.hash ());
      ASSERT_EQ (map0, map1);
  
!     map1.impl_set_state (svalue_id::from_int (14), 2, svalue_id::null ());
!     map1.impl_set_state (svalue_id::from_int (16), 3, svalue_id::null ());
!     map1.impl_set_state (svalue_id::from_int (1), 2, svalue_id::null ());
!     map1.impl_set_state (svalue_id::from_int (9), 2, svalue_id::null ());
  
!     map2.impl_set_state (svalue_id::from_int (1), 2, svalue_id::null ());
!     map2.impl_set_state (svalue_id::from_int (16), 3, svalue_id::null ());
!     map2.impl_set_state (svalue_id::from_int (14), 2, svalue_id::null ());
!     map2.impl_set_state (svalue_id::from_int (9), 2, svalue_id::null ());
  
      ASSERT_EQ (map1.hash (), map2.hash ());
      ASSERT_EQ (map1, map2);
    }
  
-   /* Test sm_state_map::remap_svalue_ids.  */
-   {
-     sm_state_map map;
-     svalue_id sid_0 = svalue_id::from_int (0);
-     svalue_id sid_1 = svalue_id::from_int (1);
-     svalue_id sid_2 = svalue_id::from_int (2);
- 
-     map.impl_set_state (sid_0, 42, sid_2);
-     ASSERT_EQ (map.get_state (sid_0), 42);
-     ASSERT_EQ (map.get_origin (sid_0), sid_2);
-     ASSERT_EQ (map.get_state (sid_1), 0);
-     ASSERT_EQ (map.get_state (sid_2), 0);
- 
-     /* Apply a remapping to the IDs.  */
-     svalue_id_map remapping (3);
-     remapping.put (sid_0, sid_1);
-     remapping.put (sid_1, sid_2);
-     remapping.put (sid_2, sid_0);
-     map.remap_svalue_ids (remapping);
- 
-     /* Verify that the IDs have been remapped.  */
-     ASSERT_EQ (map.get_state (sid_1), 42);
-     ASSERT_EQ (map.get_origin (sid_1), sid_0);
-     ASSERT_EQ (map.get_state (sid_2), 0);
-     ASSERT_EQ (map.get_state (sid_0), 0);
-   }
- 
    // TODO: coverage for purging
  }
  
! /* Verify that program_state::dump_to_pp works as expected.  */
  
  static void
! test_program_state_dumping ()
  {
    /* Create a program_state for a global ptr "p" that has
       malloc sm-state, pointing to a region on the heap.  */
--- 1289,1418 ----
    tree y = build_global_decl ("y", integer_type_node);
    tree z = build_global_decl ("z", integer_type_node);
  
+   state_machine *sm = make_malloc_state_machine (NULL);
+   auto_delete_vec <state_machine> checkers;
+   checkers.safe_push (sm);
+   engine eng;
+   extrinsic_state ext_state (checkers, &eng);
+   state_machine::state_t start = sm->get_start_state ();
+ 
    /* Test setting states on svalue_id instances directly.  */
    {
!     const state_machine::state test_state_42 ("test state 42", 42);
!     const state_machine::state_t TEST_STATE_42 = &test_state_42;
!     region_model_manager mgr;
!     region_model model (&mgr);
!     const svalue *x_sval = model.get_rvalue (x, NULL);
!     const svalue *y_sval = model.get_rvalue (y, NULL);
!     const svalue *z_sval = model.get_rvalue (z, NULL);
  
!     sm_state_map map (*sm);
      ASSERT_TRUE (map.is_empty_p ());
!     ASSERT_EQ (map.get_state (x_sval, ext_state), start);
  
!     map.impl_set_state (x_sval, TEST_STATE_42, z_sval, ext_state);
!     ASSERT_EQ (map.get_state (x_sval, ext_state), TEST_STATE_42);
!     ASSERT_EQ (map.get_origin (x_sval, ext_state), z_sval);
!     ASSERT_EQ (map.get_state (y_sval, ext_state), start);
      ASSERT_FALSE (map.is_empty_p ());
  
!     map.impl_set_state (y_sval, 0, z_sval, ext_state);
!     ASSERT_EQ (map.get_state (y_sval, ext_state), start);
  
!     map.impl_set_state (x_sval, 0, z_sval, ext_state);
!     ASSERT_EQ (map.get_state (x_sval, ext_state), start);
      ASSERT_TRUE (map.is_empty_p ());
    }
  
+   const state_machine::state test_state_5 ("test state 5", 5);
+   const state_machine::state_t TEST_STATE_5 = &test_state_5;
+ 
    /* Test setting states via equivalence classes.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
!     const svalue *x_sval = model.get_rvalue (x, NULL);
!     const svalue *y_sval = model.get_rvalue (y, NULL);
!     const svalue *z_sval = model.get_rvalue (z, NULL);
  
!     sm_state_map map (*sm);
      ASSERT_TRUE (map.is_empty_p ());
!     ASSERT_EQ (map.get_state (x_sval, ext_state), start);
!     ASSERT_EQ (map.get_state (y_sval, ext_state), start);
  
      model.add_constraint (x, EQ_EXPR, y, NULL);
  
      /* Setting x to a state should also update y, as they
         are in the same equivalence class.  */
!     map.set_state (&model, x_sval, TEST_STATE_5, z_sval, ext_state);
!     ASSERT_EQ (map.get_state (x_sval, ext_state), TEST_STATE_5);
!     ASSERT_EQ (map.get_state (y_sval, ext_state), TEST_STATE_5);
!     ASSERT_EQ (map.get_origin (x_sval, ext_state), z_sval);
!     ASSERT_EQ (map.get_origin (y_sval, ext_state), z_sval);
    }
  
    /* Test equality and hashing.  */
    {
!     region_model_manager mgr;
!     region_model model (&mgr);
!     const svalue *y_sval = model.get_rvalue (y, NULL);
!     const svalue *z_sval = model.get_rvalue (z, NULL);
  
!     sm_state_map map0 (*sm);
!     sm_state_map map1 (*sm);
!     sm_state_map map2 (*sm);
  
      ASSERT_EQ (map0.hash (), map1.hash ());
      ASSERT_EQ (map0, map1);
  
!     map1.impl_set_state (y_sval, TEST_STATE_5, z_sval, ext_state);
      ASSERT_NE (map0.hash (), map1.hash ());
      ASSERT_NE (map0, map1);
  
      /* Make the same change to map2.  */
!     map2.impl_set_state (y_sval, TEST_STATE_5, z_sval, ext_state);
      ASSERT_EQ (map1.hash (), map2.hash ());
      ASSERT_EQ (map1, map2);
    }
  
    /* Equality and hashing shouldn't depend on ordering.  */
    {
!     const state_machine::state test_state_2 ("test state 2", 2);
!     const state_machine::state_t TEST_STATE_2 = &test_state_2;
!     const state_machine::state test_state_3 ("test state 3", 3);
!     const state_machine::state_t TEST_STATE_3 = &test_state_3;
!     sm_state_map map0 (*sm);
!     sm_state_map map1 (*sm);
!     sm_state_map map2 (*sm);
  
      ASSERT_EQ (map0.hash (), map1.hash ());
      ASSERT_EQ (map0, map1);
  
!     region_model_manager mgr;
!     region_model model (&mgr);
!     const svalue *x_sval = model.get_rvalue (x, NULL);
!     const svalue *y_sval = model.get_rvalue (y, NULL);
!     const svalue *z_sval = model.get_rvalue (z, NULL);
  
!     map1.impl_set_state (x_sval, TEST_STATE_2, NULL, ext_state);
!     map1.impl_set_state (y_sval, TEST_STATE_3, NULL, ext_state);
!     map1.impl_set_state (z_sval, TEST_STATE_2, NULL, ext_state);
! 
!     map2.impl_set_state (z_sval, TEST_STATE_2, NULL, ext_state);
!     map2.impl_set_state (y_sval, TEST_STATE_3, NULL, ext_state);
!     map2.impl_set_state (x_sval, TEST_STATE_2, NULL, ext_state);
  
      ASSERT_EQ (map1.hash (), map2.hash ());
      ASSERT_EQ (map1, map2);
    }
  
    // TODO: coverage for purging
  }
  
! /* Check program_state works as expected.  */
  
  static void
! test_program_state_1 ()
  {
    /* Create a program_state for a global ptr "p" that has
       malloc sm-state, pointing to a region on the heap.  */
*************** test_program_state_dumping ()
*** 1432,1514 ****
      = sm->get_state_by_name ("unchecked");
    auto_delete_vec <state_machine> checkers;
    checkers.safe_push (sm);
-   extrinsic_state ext_state (checkers);
  
    program_state s (ext_state);
    region_model *model = s.m_region_model;
!   region_id new_rid = model->add_new_malloc_region ();
!   svalue_id ptr_sid
!       = model->get_or_create_ptr_svalue (ptr_type_node, new_rid);
    model->set_value (model->get_lvalue (p, NULL),
! 		    ptr_sid, NULL);
    sm_state_map *smap = s.m_checker_states[0];
  
!   smap->impl_set_state (ptr_sid, UNCHECKED_STATE, svalue_id::null ());
!   ASSERT_EQ (smap->get_state (ptr_sid), UNCHECKED_STATE);
! 
!   ASSERT_DUMP_EQ
!     (s, ext_state, false,
!      "rmodel: r0: {kind: `root', parent: null, sval: null}\n"
!      "|-heap: r1: {kind: `heap', parent: r0, sval: null}\n"
!      "|  `-r2: {kind: `symbolic', parent: r1, sval: null, possibly_null: true}\n"
!      "`-globals: r3: {kind: `globals', parent: r0, sval: null, map: {`p': r4}}\n"
!      "  `-`p': r4: {kind: `primitive', parent: r3, sval: sv0, type: `void *'}\n"
!      "    |: sval: sv0: {type: `void *', &r2}\n"
!      "    |: type: `void *'\n"
!      "svalues:\n"
!      "  sv0: {type: `void *', &r2}\n"
!      "constraint manager:\n"
!      "  equiv classes:\n"
!      "  constraints:\n"
!      "malloc: {sv0: unchecked (`p')}\n");
! 
!   ASSERT_DUMP_EQ (s, ext_state, true,
! 		  "rmodel: p: &r2 malloc: {sv0: unchecked (`p')}");
  }
  
! /* Verify that program_state::dump_to_pp works for string literals.  */
  
  static void
! test_program_state_dumping_2 ()
  {
!     /* Create a program_state for a global ptr "p" that points to
!        a string constant.  */
    tree p = build_global_decl ("p", ptr_type_node);
  
    tree string_cst_ptr = build_string_literal (4, "foo");
  
    auto_delete_vec <state_machine> checkers;
!   extrinsic_state ext_state (checkers);
  
    program_state s (ext_state);
    region_model *model = s.m_region_model;
!   region_id p_rid = model->get_lvalue (p, NULL);
!   svalue_id str_sid = model->get_rvalue (string_cst_ptr, NULL);
!   model->set_value (p_rid, str_sid, NULL);
! 
!   ASSERT_DUMP_EQ
!     (s, ext_state, false,
!      "rmodel: r0: {kind: `root', parent: null, sval: null}\n"
!      "|-globals: r1: {kind: `globals', parent: r0, sval: null, map: {`p': r2}}\n"
!      "|  `-`p': r2: {kind: `primitive', parent: r1, sval: sv3, type: `void *'}\n"
!      "|    |: sval: sv3: {type: `void *', &r4}\n"
!      "|    |: type: `void *'\n"
!      "`-r3: {kind: `array', parent: r0, sval: sv0, type: `const char[4]', array: {[0]: r4}}\n"
!      "  |: sval: sv0: {type: `const char[4]', `\"foo\"'}\n"
!      "  |: type: `const char[4]'\n"
!      "  `-[0]: r4: {kind: `primitive', parent: r3, sval: null, type: `const char'}\n"
!      "    |: type: `const char'\n"
!      "svalues:\n"
!      "  sv0: {type: `const char[4]', `\"foo\"'}\n"
!      "  sv1: {type: `int', `0'}\n"
!      "  sv2: {type: `const char *', &r4}\n"
!      "  sv3: {type: `void *', &r4}\n"
!      "constraint manager:\n"
!      "  equiv classes:\n"
!      "  constraints:\n");
! 
!   ASSERT_DUMP_EQ (s, ext_state, true,
! 		  "rmodel: p: &\"foo\"[0]");
  }
  
  /* Verify that program_states with identical sm-state can be merged,
--- 1423,1466 ----
      = sm->get_state_by_name ("unchecked");
    auto_delete_vec <state_machine> checkers;
    checkers.safe_push (sm);
  
+   engine eng;
+   extrinsic_state ext_state (checkers, &eng);
+   region_model_manager *mgr = eng.get_model_manager ();
    program_state s (ext_state);
    region_model *model = s.m_region_model;
!   const svalue *size_in_bytes
!     = mgr->get_or_create_unknown_svalue (integer_type_node);
!   const region *new_reg = model->create_region_for_heap_alloc (size_in_bytes);
!   const svalue *ptr_sval = mgr->get_ptr_svalue (ptr_type_node, new_reg);
    model->set_value (model->get_lvalue (p, NULL),
! 		    ptr_sval, NULL);
    sm_state_map *smap = s.m_checker_states[0];
  
!   smap->impl_set_state (ptr_sval, UNCHECKED_STATE, NULL, ext_state);
!   ASSERT_EQ (smap->get_state (ptr_sval, ext_state), UNCHECKED_STATE);
  }
  
! /* Check that program_state works for string literals.  */
  
  static void
! test_program_state_2 ()
  {
!   /* Create a program_state for a global ptr "p" that points to
!      a string constant.  */
    tree p = build_global_decl ("p", ptr_type_node);
  
    tree string_cst_ptr = build_string_literal (4, "foo");
  
    auto_delete_vec <state_machine> checkers;
!   engine eng;
!   extrinsic_state ext_state (checkers, &eng);
  
    program_state s (ext_state);
    region_model *model = s.m_region_model;
!   const region *p_reg = model->get_lvalue (p, NULL);
!   const svalue *str_sval = model->get_rvalue (string_cst_ptr, NULL);
!   model->set_value (p_reg, str_sval, NULL);
  }
  
  /* Verify that program_states with identical sm-state can be merged,
*************** test_program_state_merging ()
*** 1521,1548 ****
       malloc sm-state, pointing to a region on the heap.  */
    tree p = build_global_decl ("p", ptr_type_node);
  
    auto_delete_vec <state_machine> checkers;
    checkers.safe_push (make_malloc_state_machine (NULL));
!   extrinsic_state ext_state (checkers);
  
    program_state s0 (ext_state);
!   impl_region_model_context ctxt (&s0, NULL, ext_state);
  
    region_model *model0 = s0.m_region_model;
!   region_id new_rid = model0->add_new_malloc_region ();
!   svalue_id ptr_sid
!       = model0->get_or_create_ptr_svalue (ptr_type_node, new_rid);
    model0->set_value (model0->get_lvalue (p, &ctxt),
! 		     ptr_sid, &ctxt);
    sm_state_map *smap = s0.m_checker_states[0];
!   const state_machine::state_t TEST_STATE = 3;
!   smap->impl_set_state (ptr_sid, TEST_STATE, svalue_id::null ());
!   ASSERT_EQ (smap->get_state (ptr_sid), TEST_STATE);
  
!   model0->canonicalize (&ctxt);
  
    /* Verify that canonicalization preserves sm-state.  */
!   ASSERT_EQ (smap->get_state (model0->get_rvalue (p, NULL)), TEST_STATE);
  
    /* Make a copy of the program_state.  */
    program_state s1 (s0);
--- 1473,1507 ----
       malloc sm-state, pointing to a region on the heap.  */
    tree p = build_global_decl ("p", ptr_type_node);
  
+   program_point point (program_point::origin ());
    auto_delete_vec <state_machine> checkers;
    checkers.safe_push (make_malloc_state_machine (NULL));
!   engine eng;
!   extrinsic_state ext_state (checkers, &eng);
!   region_model_manager *mgr = eng.get_model_manager ();
  
    program_state s0 (ext_state);
!   uncertainty_t uncertainty;
!   impl_region_model_context ctxt (&s0, ext_state, &uncertainty);
  
    region_model *model0 = s0.m_region_model;
!   const svalue *size_in_bytes
!     = mgr->get_or_create_unknown_svalue (integer_type_node);
!   const region *new_reg = model0->create_region_for_heap_alloc (size_in_bytes);
!   const svalue *ptr_sval = mgr->get_ptr_svalue (ptr_type_node, new_reg);
    model0->set_value (model0->get_lvalue (p, &ctxt),
! 		     ptr_sval, &ctxt);
    sm_state_map *smap = s0.m_checker_states[0];
!   const state_machine::state test_state ("test state", 0);
!   const state_machine::state_t TEST_STATE = &test_state;
!   smap->impl_set_state (ptr_sval, TEST_STATE, NULL, ext_state);
!   ASSERT_EQ (smap->get_state (ptr_sval, ext_state), TEST_STATE);
  
!   model0->canonicalize ();
  
    /* Verify that canonicalization preserves sm-state.  */
!   ASSERT_EQ (smap->get_state (model0->get_rvalue (p, NULL), ext_state),
! 	     TEST_STATE);
  
    /* Make a copy of the program_state.  */
    program_state s1 (s0);
*************** test_program_state_merging ()
*** 1552,1573 ****
       with the given sm-state.
       They ought to be mergeable, preserving the sm-state.  */
    program_state merged (ext_state);
!   ASSERT_TRUE (s0.can_merge_with_p (s1, ext_state, &merged));
    merged.validate (ext_state);
  
    /* Verify that the merged state has the sm-state for "p".  */
    region_model *merged_model = merged.m_region_model;
    sm_state_map *merged_smap = merged.m_checker_states[0];
!   ASSERT_EQ (merged_smap->get_state (merged_model->get_rvalue (p, NULL)),
  	     TEST_STATE);
  
    /* Try canonicalizing.  */
!   impl_region_model_context merged_ctxt (&merged, NULL, ext_state);
!   merged.m_region_model->canonicalize (&merged_ctxt);
    merged.validate (ext_state);
  
    /* Verify that the merged state still has the sm-state for "p".  */
!   ASSERT_EQ (merged_smap->get_state (merged_model->get_rvalue (p, NULL)),
  	     TEST_STATE);
  
    /* After canonicalization, we ought to have equality with the inputs.  */
--- 1511,1533 ----
       with the given sm-state.
       They ought to be mergeable, preserving the sm-state.  */
    program_state merged (ext_state);
!   ASSERT_TRUE (s0.can_merge_with_p (s1, point, &merged));
    merged.validate (ext_state);
  
    /* Verify that the merged state has the sm-state for "p".  */
    region_model *merged_model = merged.m_region_model;
    sm_state_map *merged_smap = merged.m_checker_states[0];
!   ASSERT_EQ (merged_smap->get_state (merged_model->get_rvalue (p, NULL),
! 				     ext_state),
  	     TEST_STATE);
  
    /* Try canonicalizing.  */
!   merged.m_region_model->canonicalize ();
    merged.validate (ext_state);
  
    /* Verify that the merged state still has the sm-state for "p".  */
!   ASSERT_EQ (merged_smap->get_state (merged_model->get_rvalue (p, NULL),
! 				     ext_state),
  	     TEST_STATE);
  
    /* After canonicalization, we ought to have equality with the inputs.  */
*************** test_program_state_merging ()
*** 1580,1593 ****
  static void
  test_program_state_merging_2 ()
  {
    auto_delete_vec <state_machine> checkers;
    checkers.safe_push (make_signal_state_machine (NULL));
!   extrinsic_state ext_state (checkers);
  
    program_state s0 (ext_state);
    {
      sm_state_map *smap0 = s0.m_checker_states[0];
-     const state_machine::state_t TEST_STATE_0 = 0;
      smap0->set_global_state (TEST_STATE_0);
      ASSERT_EQ (smap0->get_global_state (), TEST_STATE_0);
    }
--- 1540,1559 ----
  static void
  test_program_state_merging_2 ()
  {
+   program_point point (program_point::origin ());
    auto_delete_vec <state_machine> checkers;
    checkers.safe_push (make_signal_state_machine (NULL));
!   engine eng;
!   extrinsic_state ext_state (checkers, &eng);
! 
!   const state_machine::state test_state_0 ("test state 0", 0);
!   const state_machine::state test_state_1 ("test state 1", 1);
!   const state_machine::state_t TEST_STATE_0 = &test_state_0;
!   const state_machine::state_t TEST_STATE_1 = &test_state_1;
  
    program_state s0 (ext_state);
    {
      sm_state_map *smap0 = s0.m_checker_states[0];
      smap0->set_global_state (TEST_STATE_0);
      ASSERT_EQ (smap0->get_global_state (), TEST_STATE_0);
    }
*************** test_program_state_merging_2 ()
*** 1595,1601 ****
    program_state s1 (ext_state);
    {
      sm_state_map *smap1 = s1.m_checker_states[0];
-     const state_machine::state_t TEST_STATE_1 = 1;
      smap1->set_global_state (TEST_STATE_1);
      ASSERT_EQ (smap1->get_global_state (), TEST_STATE_1);
    }
--- 1561,1566 ----
*************** test_program_state_merging_2 ()
*** 1604,1610 ****
  
    /* They ought to not be mergeable.  */
    program_state merged (ext_state);
!   ASSERT_FALSE (s0.can_merge_with_p (s1, ext_state, &merged));
  }
  
  /* Run all of the selftests within this file.  */
--- 1569,1575 ----
  
    /* They ought to not be mergeable.  */
    program_state merged (ext_state);
!   ASSERT_FALSE (s0.can_merge_with_p (s1, point, &merged));
  }
  
  /* Run all of the selftests within this file.  */
*************** void
*** 1613,1620 ****
  analyzer_program_state_cc_tests ()
  {
    test_sm_state_map ();
!   test_program_state_dumping ();
!   test_program_state_dumping_2 ();
    test_program_state_merging ();
    test_program_state_merging_2 ();
  }
--- 1578,1585 ----
  analyzer_program_state_cc_tests ()
  {
    test_sm_state_map ();
!   test_program_state_1 ();
!   test_program_state_2 ();
    test_program_state_merging ();
    test_program_state_merging_2 ();
  }
diff -Nrcpad gcc-10.3.0/gcc/analyzer/program-state.h gcc-11.1.0/gcc/analyzer/program-state.h
*** gcc-10.3.0/gcc/analyzer/program-state.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/program-state.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Classes for representing the state of interest at a given path of analysis.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for representing the state of interest at a given path of analysis.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** namespace ana {
*** 28,35 ****
  class extrinsic_state
  {
  public:
!   extrinsic_state (auto_delete_vec <state_machine> &checkers)
!   : m_checkers (checkers)
    {
    }
  
--- 28,37 ----
  class extrinsic_state
  {
  public:
!   extrinsic_state (auto_delete_vec <state_machine> &checkers,
! 		   engine *eng,
! 		   logger *logger = NULL)
!   : m_checkers (checkers), m_logger (logger), m_engine (eng)
    {
    }
  
*************** public:
*** 45,109 ****
  
    unsigned get_num_checkers () const { return m_checkers.length (); }
  
    void dump_to_pp (pretty_printer *pp) const;
    void dump_to_file (FILE *outf) const;
    void dump () const;
  
  private:
    /* The state machines.  */
    auto_delete_vec <state_machine> &m_checkers;
- };
  
! } // namespace ana
! 
! template <> struct default_hash_traits<svalue_id>
! : public pod_hash_traits<svalue_id>
! {
!   static const bool empty_zero_p = false;
  };
  
! template <>
! inline hashval_t
! pod_hash_traits<svalue_id>::hash (value_type v)
! {
!   return v.as_int ();
! }
! 
! template <>
! inline bool
! pod_hash_traits<svalue_id>::equal (const value_type &existing,
! 				   const value_type &candidate)
! {
!   return existing == candidate;
! }
! template <>
! inline void
! pod_hash_traits<svalue_id>::mark_deleted (value_type &v)
! {
!   v = svalue_id::from_int (-2);
! }
! template <>
! inline void
! pod_hash_traits<svalue_id>::mark_empty (value_type &v)
! {
!   v = svalue_id::null ();
! }
! template <>
! inline bool
! pod_hash_traits<svalue_id>::is_deleted (value_type v)
! {
!   return v.as_int () == -2;
! }
! template <>
! inline bool
! pod_hash_traits<svalue_id>::is_empty (value_type v)
! {
!   return v.null_p ();
! }
! 
! namespace ana {
! 
! /* Map from svalue_id to state machine state, also capturing the origin of
     each state.  */
  
  class sm_state_map
--- 47,72 ----
  
    unsigned get_num_checkers () const { return m_checkers.length (); }
  
+   logger *get_logger () const { return m_logger; }
+ 
    void dump_to_pp (pretty_printer *pp) const;
    void dump_to_file (FILE *outf) const;
    void dump () const;
  
+   json::object *to_json () const;
+ 
+   engine *get_engine () const { return m_engine; }
+   region_model_manager *get_model_manager () const;
+ 
  private:
    /* The state machines.  */
    auto_delete_vec <state_machine> &m_checkers;
  
!   logger *m_logger;
!   engine *m_engine;
  };
  
! /* Map from svalue * to state machine state, also capturing the origin of
     each state.  */
  
  class sm_state_map
*************** public:
*** 114,125 ****
    {
      /* Default ctor needed by hash_map::empty.  */
      entry_t ()
!     : m_state (0), m_origin (svalue_id::null ())
      {
      }
  
      entry_t (state_machine::state_t state,
! 	     svalue_id origin)
      : m_state (state), m_origin (origin)
      {}
  
--- 77,88 ----
    {
      /* Default ctor needed by hash_map::empty.  */
      entry_t ()
!     : m_state (0), m_origin (NULL)
      {
      }
  
      entry_t (state_machine::state_t state,
! 	     const svalue *origin)
      : m_state (state), m_origin (origin)
      {}
  
*************** public:
*** 133,154 ****
        return !(*this == other);
      }
  
      state_machine::state_t m_state;
!     svalue_id m_origin;
    };
!   typedef hash_map <svalue_id, entry_t> map_t;
    typedef map_t::iterator iterator_t;
  
!   sm_state_map ();
  
    sm_state_map *clone () const;
  
!   sm_state_map *
!   clone_with_remapping (const one_way_svalue_id_map &id_map) const;
! 
!   void print (const state_machine &sm, const region_model *model,
  	      pretty_printer *pp) const;
!   void dump (const state_machine &sm) const;
  
    bool is_empty_p () const;
  
--- 96,119 ----
        return !(*this == other);
      }
  
+     static int cmp (const entry_t &entry_a, const entry_t &entry_b);
+ 
      state_machine::state_t m_state;
!     const svalue *m_origin;
    };
!   typedef hash_map <const svalue *, entry_t> map_t;
    typedef map_t::iterator iterator_t;
  
!   sm_state_map (const state_machine &sm);
  
    sm_state_map *clone () const;
  
!   void print (const region_model *model,
! 	      bool simple, bool multiline,
  	      pretty_printer *pp) const;
!   void dump (bool simple) const;
! 
!   json::object *to_json () const;
  
    bool is_empty_p () const;
  
*************** public:
*** 160,210 ****
      return !(*this == other);
    }
  
!   state_machine::state_t get_state (svalue_id sid) const;
!   svalue_id get_origin (svalue_id sid) const;
  
    void set_state (region_model *model,
! 		  svalue_id sid,
  		  state_machine::state_t state,
! 		  svalue_id origin);
    bool set_state (const equiv_class &ec,
  		  state_machine::state_t state,
! 		  svalue_id origin);
!   bool impl_set_state (svalue_id sid,
  		       state_machine::state_t state,
! 		       svalue_id origin);
  
    void set_global_state (state_machine::state_t state);
    state_machine::state_t get_global_state () const;
  
!   void purge_for_unknown_fncall (const exploded_graph &eg,
! 				 const state_machine &sm,
! 				 const gcall *call, tree fndecl,
! 				 region_model *new_model,
! 				 region_model_context *ctxt);
! 
!   void remap_svalue_ids (const svalue_id_map &map);
! 
!   int on_svalue_purge (const state_machine &sm,
! 		       int sm_idx,
! 		       svalue_id first_unused_sid,
! 		       const svalue_id_map &map,
  		       impl_region_model_context *ctxt);
  
!   void on_inherited_svalue (svalue_id parent_sid,
! 			    svalue_id child_sid);
! 
!   void on_cast (svalue_id src_sid,
! 		svalue_id dst_sid);
! 
!   void on_unknown_change (svalue_id sid);
  
!   void validate (const state_machine &sm, int num_svalues) const;
  
    iterator_t begin () const { return m_map.begin (); }
    iterator_t end () const { return m_map.end (); }
  
  private:
    map_t m_map;
    state_machine::state_t m_global_state;
  };
--- 125,176 ----
      return !(*this == other);
    }
  
!   state_machine::state_t get_state (const svalue *sval,
! 				    const extrinsic_state &ext_state) const;
!   const svalue *get_origin (const svalue *sval,
! 			    const extrinsic_state &ext_state) const;
  
    void set_state (region_model *model,
! 		  const svalue *sval,
  		  state_machine::state_t state,
! 		  const svalue *origin,
! 		  const extrinsic_state &ext_state);
    bool set_state (const equiv_class &ec,
  		  state_machine::state_t state,
! 		  const svalue *origin,
! 		  const extrinsic_state &ext_state);
!   bool impl_set_state (const svalue *sval,
  		       state_machine::state_t state,
! 		       const svalue *origin,
! 		       const extrinsic_state &ext_state);
  
    void set_global_state (state_machine::state_t state);
    state_machine::state_t get_global_state () const;
  
!   void on_svalue_leak (const svalue *sval,
  		       impl_region_model_context *ctxt);
+   void on_liveness_change (const svalue_set &live_svalues,
+ 			   const region_model *model,
+ 			   impl_region_model_context *ctxt);
  
!   void on_unknown_change (const svalue *sval,
! 			  bool is_mutable,
! 			  const extrinsic_state &ext_state);
  
!   void purge_state_involving (const svalue *sval,
! 			      const extrinsic_state &ext_state);
  
    iterator_t begin () const { return m_map.begin (); }
    iterator_t end () const { return m_map.end (); }
+   size_t elements () const { return m_map.elements (); }
+ 
+   static int cmp (const sm_state_map &smap_a, const sm_state_map &smap_b);
+ 
+   static const svalue *
+   canonicalize_svalue (const svalue *sval, const extrinsic_state &ext_state);
  
  private:
+   const state_machine &m_sm;
    map_t m_map;
    state_machine::state_t m_global_state;
  };
*************** public:
*** 229,235 ****
  
  #if __cplusplus >= 201103
    program_state (program_state &&other);
-   program_state& operator= (program_state &&other); // doesn't seem to be used
  #endif
  
    ~program_state ();
--- 195,200 ----
*************** public:
*** 244,270 ****
    void print (const extrinsic_state &ext_state,
  	      pretty_printer *pp) const;
  
!   void dump_to_pp (const extrinsic_state &ext_state, bool summarize,
! 		   pretty_printer *pp) const;
!   void dump_to_file (const extrinsic_state &ext_state, bool summarize,
! 		     FILE *outf) const;
!   void dump (const extrinsic_state &ext_state, bool summarize) const;
  
    bool on_edge (exploded_graph &eg,
! 		const exploded_node &enode,
  		const superedge *succ,
! 		state_change *change);
  
    program_state prune_for_point (exploded_graph &eg,
  				 const program_point &point,
! 				 state_change *change) const;
! 
!   void remap_svalue_ids (const svalue_id_map &map);
  
!   tree get_representative_tree (svalue_id sid) const;
  
    bool can_purge_p (const extrinsic_state &ext_state,
! 		    svalue_id sid)
    {
      /* Don't purge vars that have non-purgeable sm state, to avoid
         generating false "leak" complaints.  */
--- 209,239 ----
    void print (const extrinsic_state &ext_state,
  	      pretty_printer *pp) const;
  
!   void dump_to_pp (const extrinsic_state &ext_state, bool simple,
! 		   bool multiline, pretty_printer *pp) const;
!   void dump_to_file (const extrinsic_state &ext_state, bool simple,
! 		     bool multiline, FILE *outf) const;
!   void dump (const extrinsic_state &ext_state, bool simple) const;
! 
!   json::object *to_json (const extrinsic_state &ext_state) const;
! 
!   void push_frame (const extrinsic_state &ext_state, function *fun);
!   function * get_current_function () const;
  
    bool on_edge (exploded_graph &eg,
! 		exploded_node *enode,
  		const superedge *succ,
! 		uncertainty_t *uncertainty);
  
    program_state prune_for_point (exploded_graph &eg,
  				 const program_point &point,
! 				 exploded_node *enode_for_diag,
! 				 uncertainty_t *uncertainty) const;
  
!   tree get_representative_tree (const svalue *sval) const;
  
    bool can_purge_p (const extrinsic_state &ext_state,
! 		    const svalue *sval)
    {
      /* Don't purge vars that have non-purgeable sm state, to avoid
         generating false "leak" complaints.  */
*************** public:
*** 273,290 ****
      FOR_EACH_VEC_ELT (m_checker_states, i, smap)
        {
  	const state_machine &sm = ext_state.get_sm (i);
! 	if (!sm.can_purge_p (smap->get_state (sid)))
  	  return false;
        }
      return true;
    }
  
    bool can_merge_with_p (const program_state &other,
! 			 const extrinsic_state &ext_state,
  			 program_state *out) const;
  
    void validate (const extrinsic_state &ext_state) const;
  
    /* TODO: lose the pointer here (const-correctness issues?).  */
    region_model *m_region_model;
    auto_delete_vec<sm_state_map> m_checker_states;
--- 242,265 ----
      FOR_EACH_VEC_ELT (m_checker_states, i, smap)
        {
  	const state_machine &sm = ext_state.get_sm (i);
! 	if (!sm.can_purge_p (smap->get_state (sval, ext_state)))
  	  return false;
        }
      return true;
    }
  
    bool can_merge_with_p (const program_state &other,
! 			 const program_point &point,
  			 program_state *out) const;
  
    void validate (const extrinsic_state &ext_state) const;
  
+   static void detect_leaks (const program_state &src_state,
+ 			    const program_state &dest_state,
+ 			    const svalue *extra_sval,
+ 			    const extrinsic_state &ext_state,
+ 			    region_model_context *ctxt);
+ 
    /* TODO: lose the pointer here (const-correctness issues?).  */
    region_model *m_region_model;
    auto_delete_vec<sm_state_map> m_checker_states;
*************** public:
*** 311,386 ****
    virtual bool on_state_change (const state_machine &sm,
  				state_machine::state_t src_sm_val,
  				state_machine::state_t dst_sm_val,
! 				tree dst_rep,
! 				svalue_id dst_origin_sid) = 0;
  };
  
  extern bool for_each_state_change (const program_state &src_state,
! 				   const program_state &dst_state,
! 				   const extrinsic_state &ext_state,
! 				   state_change_visitor *visitor);
! 
! /* A class for recording "interesting" state changes.
!    This is used for annotating edges in the GraphViz output of the
!    exploded_graph, and for recording sm-state-changes, so that
!    values that change aren't purged (to make it easier to generate
!    state_change_event instances in the diagnostic_path).  */
! 
! class state_change
! {
!  public:
!   struct sm_change
!   {
!     sm_change (int sm_idx,
! 	       svalue_id new_sid,
! 	       state_machine::state_t old_state,
! 	       state_machine::state_t new_state)
!     : m_sm_idx (sm_idx),
!       m_new_sid (new_sid),
!       m_old_state (old_state), m_new_state (new_state)
!     {}
! 
!     const state_machine &get_sm (const extrinsic_state &ext_state) const
!     {
!       return ext_state.get_sm (m_sm_idx);
!     }
! 
!     void dump (pretty_printer *pp, const extrinsic_state &ext_state) const;
! 
!     void remap_svalue_ids (const svalue_id_map &map);
!     int on_svalue_purge (svalue_id first_unused_sid);
! 
!     void validate (const program_state &new_state,
! 		   const extrinsic_state &ext_state) const;
! 
!     int m_sm_idx;
!     svalue_id m_new_sid;
!     state_machine::state_t m_old_state;
!     state_machine::state_t m_new_state;
!   };
! 
!   state_change ();
!   state_change (const state_change &other);
! 
!   void add_sm_change (int sm_idx,
! 		      svalue_id new_sid,
! 		      state_machine::state_t old_state,
! 		      state_machine::state_t new_state);
! 
!   bool affects_p (svalue_id sid) const;
! 
!   void dump (pretty_printer *pp, const extrinsic_state &ext_state) const;
!   void dump (const extrinsic_state &ext_state) const;
! 
!   void remap_svalue_ids (const svalue_id_map &map);
!   int on_svalue_purge (svalue_id first_unused_sid);
! 
!   void validate (const program_state &new_state,
! 		 const extrinsic_state &ext_state) const;
! 
!  private:
!   auto_vec<sm_change> m_sm_changes;
! };
  
  } // namespace ana
  
--- 286,299 ----
    virtual bool on_state_change (const state_machine &sm,
  				state_machine::state_t src_sm_val,
  				state_machine::state_t dst_sm_val,
! 				const svalue *dst_sval,
! 				const svalue *dst_origin_sval) = 0;
  };
  
  extern bool for_each_state_change (const program_state &src_state,
! 				    const program_state &dst_state,
! 				    const extrinsic_state &ext_state,
! 				    state_change_visitor *visitor);
  
  } // namespace ana
  
diff -Nrcpad gcc-10.3.0/gcc/analyzer/reachability.h gcc-11.1.0/gcc/analyzer/reachability.h
*** gcc-10.3.0/gcc/analyzer/reachability.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/reachability.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Digraph reachability.
!    Copyright (C) 2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Digraph reachability.
!    Copyright (C) 2020-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/analyzer/region-model-impl-calls.cc gcc-11.1.0/gcc/analyzer/region-model-impl-calls.cc
*** gcc-10.3.0/gcc/analyzer/region-model-impl-calls.cc	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/analyzer/region-model-impl-calls.cc	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,507 ----
+ /* Handling for the known behavior of various specific functions.
+    Copyright (C) 2020-2021 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.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/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "function.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "gimple-iterator.h"
+ #include "diagnostic-core.h"
+ #include "graphviz.h"
+ #include "options.h"
+ #include "cgraph.h"
+ #include "tree-dfa.h"
+ #include "stringpool.h"
+ #include "convert.h"
+ #include "target.h"
+ #include "fold-const.h"
+ #include "tree-pretty-print.h"
+ #include "diagnostic-color.h"
+ #include "diagnostic-metadata.h"
+ #include "tristate.h"
+ #include "bitmap.h"
+ #include "selftest.h"
+ #include "function.h"
+ #include "json.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "ordered-hash-map.h"
+ #include "options.h"
+ #include "cgraph.h"
+ #include "cfg.h"
+ #include "digraph.h"
+ #include "analyzer/supergraph.h"
+ #include "sbitmap.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
+ #include "analyzer/region-model.h"
+ #include "gimple-pretty-print.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* class call_details.  */
+ 
+ /* call_details's ctor.  */
+ 
+ call_details::call_details (const gcall *call, region_model *model,
+ 			    region_model_context *ctxt)
+ : m_call (call), m_model (model), m_ctxt (ctxt),
+   m_lhs_type (NULL_TREE), m_lhs_region (NULL)
+ {
+   m_lhs_type = NULL_TREE;
+   if (tree lhs = gimple_call_lhs (call))
+     {
+       m_lhs_region = model->get_lvalue (lhs, ctxt);
+       m_lhs_type = TREE_TYPE (lhs);
+     }
+ }
+ 
+ /* Get any uncertainty_t associated with the region_model_context.  */
+ 
+ uncertainty_t *
+ call_details::get_uncertainty () const
+ {
+   return m_ctxt->get_uncertainty ();
+ }
+ 
+ /* If the callsite has a left-hand-side region, set it to RESULT
+    and return true.
+    Otherwise do nothing and return false.  */
+ 
+ bool
+ call_details::maybe_set_lhs (const svalue *result) const
+ {
+   gcc_assert (result);
+   if (m_lhs_region)
+     {
+       m_model->set_value (m_lhs_region, result, m_ctxt);
+       return true;
+     }
+   else
+     return false;
+ }
+ 
+ /* Return the number of arguments used by the call statement.  */
+ 
+ unsigned
+ call_details::num_args () const
+ {
+   return gimple_call_num_args (m_call);
+ }
+ 
+ /* Get argument IDX at the callsite as a tree.  */
+ 
+ tree
+ call_details::get_arg_tree (unsigned idx) const
+ {
+   return gimple_call_arg (m_call, idx);
+ }
+ 
+ /* Get the type of argument IDX.  */
+ 
+ tree
+ call_details::get_arg_type (unsigned idx) const
+ {
+   return TREE_TYPE (gimple_call_arg (m_call, idx));
+ }
+ 
+ /* Get argument IDX at the callsite as an svalue.  */
+ 
+ const svalue *
+ call_details::get_arg_svalue (unsigned idx) const
+ {
+   tree arg = get_arg_tree (idx);
+   return m_model->get_rvalue (arg, m_ctxt);
+ }
+ 
+ /* Dump a multiline representation of this call to PP.  */
+ 
+ void
+ call_details::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   pp_string (pp, "gcall: ");
+   pp_gimple_stmt_1 (pp, m_call, 0 /* spc */, TDF_NONE /* flags */);
+   pp_newline (pp);
+   pp_string (pp, "return region: ");
+   if (m_lhs_region)
+     m_lhs_region->dump_to_pp (pp, simple);
+   else
+     pp_string (pp, "NULL");
+   pp_newline (pp);
+   for (unsigned i = 0; i < gimple_call_num_args (m_call); i++)
+     {
+       const svalue *arg_sval = get_arg_svalue (i);
+       pp_printf (pp, "arg %i: ", i);
+       arg_sval->dump_to_pp (pp, simple);
+       pp_newline (pp);
+     }
+ }
+ 
+ /* Dump a multiline representation of this call to stderr.  */
+ 
+ DEBUG_FUNCTION void
+ call_details::dump (bool simple) const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+   pp_show_color (&pp) = pp_show_color (global_dc->printer);
+   pp.buffer->stream = stderr;
+   dump_to_pp (&pp, simple);
+   pp_flush (&pp);
+ }
+ 
+ /* Implementations of specific functions.  */
+ 
+ /* Handle the on_call_pre part of "alloca".  */
+ 
+ bool
+ region_model::impl_call_alloca (const call_details &cd)
+ {
+   const svalue *size_sval = cd.get_arg_svalue (0);
+   const region *new_reg = create_region_for_alloca (size_sval);
+   const svalue *ptr_sval
+     = m_mgr->get_ptr_svalue (cd.get_lhs_type (), new_reg);
+   cd.maybe_set_lhs (ptr_sval);
+   return true;
+ }
+ 
+ /* Handle a call to "__analyzer_describe".
+ 
+    Emit a warning describing the 2nd argument (which can be of any
+    type), at the given verbosity level.  This is for use when
+    debugging, and may be of use in DejaGnu tests.  */
+ 
+ void
+ region_model::impl_call_analyzer_describe (const gcall *call,
+ 					   region_model_context *ctxt)
+ {
+   tree t_verbosity = gimple_call_arg (call, 0);
+   tree t_val = gimple_call_arg (call, 1);
+   const svalue *sval = get_rvalue (t_val, ctxt);
+   bool simple = zerop (t_verbosity);
+   label_text desc = sval->get_desc (simple);
+   warning_at (call->location, 0, "svalue: %qs", desc.m_buffer);
+ }
+ 
+ /* Handle a call to "__analyzer_eval" by evaluating the input
+    and dumping as a dummy warning, so that test cases can use
+    dg-warning to validate the result (and so unexpected warnings will
+    lead to DejaGnu failures).
+    Broken out as a subroutine to make it easier to put a breakpoint on it
+    - though typically this doesn't help, as we have an SSA name as the arg,
+    and what's more interesting is usually the def stmt for that name.  */
+ 
+ void
+ region_model::impl_call_analyzer_eval (const gcall *call,
+ 				       region_model_context *ctxt)
+ {
+   tree t_arg = gimple_call_arg (call, 0);
+   tristate t = eval_condition (t_arg, NE_EXPR, integer_zero_node, ctxt);
+   warning_at (call->location, 0, "%s", t.as_string ());
+ }
+ 
+ /* Handle the on_call_pre part of "__builtin_expect" etc.  */
+ 
+ bool
+ region_model::impl_call_builtin_expect (const call_details &cd)
+ {
+   /* __builtin_expect's return value is its initial argument.  */
+   const svalue *sval = cd.get_arg_svalue (0);
+   cd.maybe_set_lhs (sval);
+   return false;
+ }
+ 
+ /* Handle the on_call_pre part of "calloc".  */
+ 
+ bool
+ region_model::impl_call_calloc (const call_details &cd)
+ {
+   const svalue *nmemb_sval = cd.get_arg_svalue (0);
+   const svalue *size_sval = cd.get_arg_svalue (1);
+   /* TODO: check for overflow here?  */
+   const svalue *prod_sval
+     = m_mgr->get_or_create_binop (size_type_node, MULT_EXPR,
+ 				  nmemb_sval, size_sval);
+   const region *new_reg = create_region_for_heap_alloc (prod_sval);
+   zero_fill_region (new_reg);
+   if (cd.get_lhs_type ())
+     {
+       const svalue *ptr_sval
+ 	= m_mgr->get_ptr_svalue (cd.get_lhs_type (), new_reg);
+       cd.maybe_set_lhs (ptr_sval);
+     }
+   return true;
+ }
+ 
+ /* Handle the on_call_pre part of "error" and "error_at_line" from
+    GNU's non-standard <error.h>.
+    MIN_ARGS identifies the minimum number of expected arguments
+    to be consistent with such a call (3 and 5 respectively).
+    Return true if handling it as one of these functions.
+    Write true to *OUT_TERMINATE_PATH if this execution path should be
+    terminated (e.g. the function call terminates the process).  */
+ 
+ bool
+ region_model::impl_call_error (const call_details &cd, unsigned min_args,
+ 			       bool *out_terminate_path)
+ {
+   /* Bail if not enough args.  */
+   if (cd.num_args () < min_args)
+     return false;
+ 
+   /* Initial argument ought to be of type "int".  */
+   if (cd.get_arg_type (0) != integer_type_node)
+     return false;
+ 
+   /* The process exits if status != 0, so it only continues
+      for the case where status == 0.
+      Add that constraint, or terminate this analysis path.  */
+   tree status = cd.get_arg_tree (0);
+   if (!add_constraint (status, EQ_EXPR, integer_zero_node, cd.get_ctxt ()))
+     *out_terminate_path = true;
+ 
+   return true;
+ }
+ 
+ /* Handle the on_call_post part of "free", after sm-handling.
+ 
+    If the ptr points to an underlying heap region, delete the region,
+    poisoning pointers to it and regions within it.
+ 
+    We delay this until after sm-state has been updated so that the
+    sm-handling can transition all of the various casts of the pointer
+    to a "freed" state *before* we delete the related region here.
+ 
+    This has to be done here so that the sm-handling can use the fact
+    that they point to the same region to establish that they are equal
+    (in region_model::eval_condition_without_cm), and thus transition
+    all pointers to the region to the "freed" state together, regardless
+    of casts.  */
+ 
+ void
+ region_model::impl_call_free (const call_details &cd)
+ {
+   const svalue *ptr_sval = cd.get_arg_svalue (0);
+   if (const region_svalue *ptr_to_region_sval
+       = ptr_sval->dyn_cast_region_svalue ())
+     {
+       /* If the ptr points to an underlying heap region, delete it,
+ 	 poisoning pointers.  */
+       const region *freed_reg = ptr_to_region_sval->get_pointee ();
+       unbind_region_and_descendents (freed_reg, POISON_KIND_FREED);
+     }
+ }
+ 
+ /* Handle the on_call_pre part of "malloc".  */
+ 
+ bool
+ region_model::impl_call_malloc (const call_details &cd)
+ {
+   const svalue *size_sval = cd.get_arg_svalue (0);
+   const region *new_reg = create_region_for_heap_alloc (size_sval);
+   if (cd.get_lhs_type ())
+     {
+       const svalue *ptr_sval
+ 	= m_mgr->get_ptr_svalue (cd.get_lhs_type (), new_reg);
+       cd.maybe_set_lhs (ptr_sval);
+     }
+   return true;
+ }
+ 
+ /* Handle the on_call_pre part of "memcpy" and "__builtin_memcpy".  */
+ 
+ void
+ region_model::impl_call_memcpy (const call_details &cd)
+ {
+   const svalue *dest_sval = cd.get_arg_svalue (0);
+   const svalue *num_bytes_sval = cd.get_arg_svalue (2);
+ 
+   const region *dest_reg = deref_rvalue (dest_sval, cd.get_arg_tree (0),
+ 					 cd.get_ctxt ());
+ 
+   cd.maybe_set_lhs (dest_sval);
+ 
+   if (tree num_bytes = num_bytes_sval->maybe_get_constant ())
+     {
+       /* "memcpy" of zero size is a no-op.  */
+       if (zerop (num_bytes))
+ 	return;
+     }
+ 
+   check_for_writable_region (dest_reg, cd.get_ctxt ());
+ 
+   /* Otherwise, mark region's contents as unknown.  */
+   mark_region_as_unknown (dest_reg, cd.get_uncertainty ());
+ }
+ 
+ /* Handle the on_call_pre part of "memset" and "__builtin_memset".  */
+ 
+ bool
+ region_model::impl_call_memset (const call_details &cd)
+ {
+   const svalue *dest_sval = cd.get_arg_svalue (0);
+   const svalue *fill_value_sval = cd.get_arg_svalue (1);
+   const svalue *num_bytes_sval = cd.get_arg_svalue (2);
+ 
+   const region *dest_reg = deref_rvalue (dest_sval, cd.get_arg_tree (0),
+ 					  cd.get_ctxt ());
+ 
+   if (tree num_bytes = num_bytes_sval->maybe_get_constant ())
+     {
+       /* "memset" of zero size is a no-op.  */
+       if (zerop (num_bytes))
+ 	return true;
+ 
+       /* Set with known amount.  */
+       byte_size_t reg_size;
+       if (dest_reg->get_byte_size (&reg_size))
+ 	{
+ 	  /* Check for an exact size match.  */
+ 	  if (reg_size == wi::to_offset (num_bytes))
+ 	    {
+ 	      if (tree cst = fill_value_sval->maybe_get_constant ())
+ 		{
+ 		  if (zerop (cst))
+ 		    {
+ 		      zero_fill_region (dest_reg);
+ 		      return true;
+ 		    }
+ 		}
+ 	    }
+ 	}
+     }
+ 
+   check_for_writable_region (dest_reg, cd.get_ctxt ());
+ 
+   /* Otherwise, mark region's contents as unknown.  */
+   mark_region_as_unknown (dest_reg, cd.get_uncertainty ());
+   return false;
+ }
+ 
+ /* Handle the on_call_pre part of "operator new".  */
+ 
+ bool
+ region_model::impl_call_operator_new (const call_details &cd)
+ {
+   const svalue *size_sval = cd.get_arg_svalue (0);
+   const region *new_reg = create_region_for_heap_alloc (size_sval);
+   if (cd.get_lhs_type ())
+     {
+       const svalue *ptr_sval
+ 	= m_mgr->get_ptr_svalue (cd.get_lhs_type (), new_reg);
+       cd.maybe_set_lhs (ptr_sval);
+     }
+   return false;
+ }
+ 
+ /* Handle the on_call_pre part of "operator delete", which comes in
+    both sized and unsized variants (2 arguments and 1 argument
+    respectively).  */
+ 
+ bool
+ region_model::impl_call_operator_delete (const call_details &cd)
+ {
+   const svalue *ptr_sval = cd.get_arg_svalue (0);
+   if (const region_svalue *ptr_to_region_sval
+       = ptr_sval->dyn_cast_region_svalue ())
+     {
+       /* If the ptr points to an underlying heap region, delete it,
+ 	 poisoning pointers.  */
+       const region *freed_reg = ptr_to_region_sval->get_pointee ();
+       unbind_region_and_descendents (freed_reg, POISON_KIND_FREED);
+     }
+   return false;
+ }
+ 
+ /* Handle the on_call_pre part of "realloc".  */
+ 
+ void
+ region_model::impl_call_realloc (const call_details &)
+ {
+   /* Currently we don't support bifurcating state, so there's no good
+      way to implement realloc(3).
+      For now, malloc_state_machine::on_realloc_call has a minimal
+      implementation to suppress false positives.  */
+ }
+ 
+ /* Handle the on_call_pre part of "strcpy" and "__builtin_strcpy_chk".  */
+ 
+ void
+ region_model::impl_call_strcpy (const call_details &cd)
+ {
+   const svalue *dest_sval = cd.get_arg_svalue (0);
+   const region *dest_reg = deref_rvalue (dest_sval, cd.get_arg_tree (0),
+ 					 cd.get_ctxt ());
+ 
+   cd.maybe_set_lhs (dest_sval);
+ 
+   check_for_writable_region (dest_reg, cd.get_ctxt ());
+ 
+   /* For now, just mark region's contents as unknown.  */
+   mark_region_as_unknown (dest_reg, cd.get_uncertainty ());
+ }
+ 
+ /* Handle the on_call_pre part of "strlen".
+    Return true if the LHS is updated.  */
+ 
+ bool
+ region_model::impl_call_strlen (const call_details &cd)
+ {
+   region_model_context *ctxt = cd.get_ctxt ();
+   const svalue *arg_sval = cd.get_arg_svalue (0);
+   const region *buf_reg = deref_rvalue (arg_sval, cd.get_arg_tree (0), ctxt);
+   if (const string_region *str_reg
+       = buf_reg->dyn_cast_string_region ())
+     {
+       tree str_cst = str_reg->get_string_cst ();
+       /* TREE_STRING_LENGTH is sizeof, not strlen.  */
+       int sizeof_cst = TREE_STRING_LENGTH (str_cst);
+       int strlen_cst = sizeof_cst - 1;
+       if (cd.get_lhs_type ())
+ 	{
+ 	  tree t_cst = build_int_cst (cd.get_lhs_type (), strlen_cst);
+ 	  const svalue *result_sval
+ 	    = m_mgr->get_or_create_constant_svalue (t_cst);
+ 	  cd.maybe_set_lhs (result_sval);
+ 	  return true;
+ 	}
+     }
+   /* Otherwise an unknown value.  */
+   return true;
+ }
+ 
+ /* Handle calls to functions referenced by
+    __attribute__((malloc(FOO))).  */
+ 
+ void
+ region_model::impl_deallocation_call (const call_details &cd)
+ {
+   impl_call_free (cd);
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/region-model-manager.cc gcc-11.1.0/gcc/analyzer/region-model-manager.cc
*** gcc-10.3.0/gcc/analyzer/region-model-manager.cc	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/analyzer/region-model-manager.cc	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,1153 ----
+ /* Consolidation of svalues and regions.
+    Copyright (C) 2020-2021 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.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/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "diagnostic-core.h"
+ #include "gimple-pretty-print.h"
+ #include "function.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "gimple-iterator.h"
+ #include "diagnostic-core.h"
+ #include "graphviz.h"
+ #include "options.h"
+ #include "cgraph.h"
+ #include "tree-dfa.h"
+ #include "stringpool.h"
+ #include "convert.h"
+ #include "target.h"
+ #include "fold-const.h"
+ #include "tree-pretty-print.h"
+ #include "tristate.h"
+ #include "bitmap.h"
+ #include "selftest.h"
+ #include "function.h"
+ #include "json.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "ordered-hash-map.h"
+ #include "options.h"
+ #include "cgraph.h"
+ #include "cfg.h"
+ #include "digraph.h"
+ #include "analyzer/supergraph.h"
+ #include "sbitmap.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
+ #include "analyzer/region-model.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* class region_model_manager.  */
+ 
+ /* region_model_manager's ctor.  */
+ 
+ region_model_manager::region_model_manager ()
+ : m_next_region_id (0),
+   m_root_region (alloc_region_id ()),
+   m_stack_region (alloc_region_id (), &m_root_region),
+   m_heap_region (alloc_region_id (), &m_root_region),
+   m_unknown_NULL (NULL),
+   m_max_complexity (0, 0),
+   m_code_region (alloc_region_id (), &m_root_region),
+   m_fndecls_map (), m_labels_map (),
+   m_globals_region (alloc_region_id (), &m_root_region),
+   m_globals_map (),
+   m_store_mgr (this)
+ {
+ }
+ 
+ /* region_model_manager's dtor.  Delete all of the managed svalues
+    and regions.  */
+ 
+ region_model_manager::~region_model_manager ()
+ {
+   /* Delete consolidated svalues.  */
+   for (constants_map_t::iterator iter = m_constants_map.begin ();
+        iter != m_constants_map.end (); ++iter)
+     delete (*iter).second;
+   for (unknowns_map_t::iterator iter = m_unknowns_map.begin ();
+        iter != m_unknowns_map.end (); ++iter)
+     delete (*iter).second;
+   delete m_unknown_NULL;
+   for (setjmp_values_map_t::iterator iter = m_setjmp_values_map.begin ();
+        iter != m_setjmp_values_map.end (); ++iter)
+     delete (*iter).second;
+   for (poisoned_values_map_t::iterator iter = m_poisoned_values_map.begin ();
+        iter != m_poisoned_values_map.end (); ++iter)
+     delete (*iter).second;
+   for (initial_values_map_t::iterator iter = m_initial_values_map.begin ();
+        iter != m_initial_values_map.end (); ++iter)
+     delete (*iter).second;
+   for (pointer_values_map_t::iterator iter = m_pointer_values_map.begin ();
+        iter != m_pointer_values_map.end (); ++iter)
+     delete (*iter).second;
+   for (unaryop_values_map_t::iterator iter = m_unaryop_values_map.begin ();
+        iter != m_unaryop_values_map.end (); ++iter)
+     delete (*iter).second;
+   for (binop_values_map_t::iterator iter = m_binop_values_map.begin ();
+        iter != m_binop_values_map.end (); ++iter)
+     delete (*iter).second;
+   for (sub_values_map_t::iterator iter = m_sub_values_map.begin ();
+        iter != m_sub_values_map.end (); ++iter)
+     delete (*iter).second;
+   for (unmergeable_values_map_t::iterator iter
+ 	 = m_unmergeable_values_map.begin ();
+        iter != m_unmergeable_values_map.end (); ++iter)
+     delete (*iter).second;
+   for (widening_values_map_t::iterator iter = m_widening_values_map.begin ();
+        iter != m_widening_values_map.end (); ++iter)
+     delete (*iter).second;
+   for (compound_values_map_t::iterator iter = m_compound_values_map.begin ();
+        iter != m_compound_values_map.end (); ++iter)
+     delete (*iter).second;
+   for (conjured_values_map_t::iterator iter = m_conjured_values_map.begin ();
+        iter != m_conjured_values_map.end (); ++iter)
+     delete (*iter).second;
+ 
+   /* Delete consolidated regions.  */
+   for (fndecls_map_t::iterator iter = m_fndecls_map.begin ();
+        iter != m_fndecls_map.end (); ++iter)
+     delete (*iter).second;
+   for (labels_map_t::iterator iter = m_labels_map.begin ();
+        iter != m_labels_map.end (); ++iter)
+     delete (*iter).second;
+   for (globals_map_t::iterator iter = m_globals_map.begin ();
+        iter != m_globals_map.end (); ++iter)
+     delete (*iter).second;
+   for (string_map_t::iterator iter = m_string_map.begin ();
+        iter != m_string_map.end (); ++iter)
+     delete (*iter).second;
+ }
+ 
+ /* Return true if C exceeds the complexity limit for svalues.  */
+ 
+ bool
+ region_model_manager::too_complex_p (const complexity &c) const
+ {
+   if (c.m_max_depth > (unsigned)param_analyzer_max_svalue_depth)
+     return true;
+   return false;
+ }
+ 
+ /* If SVAL exceeds the complexity limit for svalues, delete it
+    and return true.
+    Otherwise update m_max_complexity and return false.  */
+ 
+ bool
+ region_model_manager::reject_if_too_complex (svalue *sval)
+ {
+   const complexity &c = sval->get_complexity ();
+   if (!too_complex_p (c))
+     {
+       if (m_max_complexity.m_num_nodes < c.m_num_nodes)
+ 	m_max_complexity.m_num_nodes = c.m_num_nodes;
+       if (m_max_complexity.m_max_depth < c.m_max_depth)
+ 	m_max_complexity.m_max_depth = c.m_max_depth;
+       return false;
+     }
+ 
+   delete sval;
+   return true;
+ }
+ 
+ /* Macro for imposing a complexity limit on svalues, for use within
+    region_model_manager member functions.
+ 
+    If SVAL exceeds the complexity limit, delete it and return an UNKNOWN
+    value of the same type.
+    Otherwise update m_max_complexity and carry on.  */
+ 
+ #define RETURN_UNKNOWN_IF_TOO_COMPLEX(SVAL)			\
+   do {								\
+     svalue *sval_ = (SVAL);					\
+     tree type_ = sval_->get_type ();				\
+     if (reject_if_too_complex (sval_))				\
+       return get_or_create_unknown_svalue (type_);		\
+   } while (0)
+ 
+ /* svalue consolidation.  */
+ 
+ /* Return the svalue * for a constant_svalue for CST_EXPR,
+    creating it if necessary.
+    The constant_svalue instances are reused, based on pointer equality
+    of trees  */
+ 
+ const svalue *
+ region_model_manager::get_or_create_constant_svalue (tree cst_expr)
+ {
+   gcc_assert (cst_expr);
+ 
+   constant_svalue **slot = m_constants_map.get (cst_expr);
+   if (slot)
+     return *slot;
+   constant_svalue *cst_sval = new constant_svalue (cst_expr);
+   RETURN_UNKNOWN_IF_TOO_COMPLEX (cst_sval);
+   m_constants_map.put (cst_expr, cst_sval);
+   return cst_sval;
+ }
+ 
+ /* Return the svalue * for a unknown_svalue for TYPE (which can be NULL),
+    creating it if necessary.
+    The unknown_svalue instances are reused, based on pointer equality
+    of the types  */
+ 
+ const svalue *
+ region_model_manager::get_or_create_unknown_svalue (tree type)
+ {
+   /* Special-case NULL, so that the hash_map can use NULL as the
+      "empty" value.  */
+   if (type == NULL_TREE)
+     {
+       if (!m_unknown_NULL)
+ 	m_unknown_NULL = new unknown_svalue (type);
+       return m_unknown_NULL;
+     }
+ 
+   unknown_svalue **slot = m_unknowns_map.get (type);
+   if (slot)
+     return *slot;
+   unknown_svalue *sval = new unknown_svalue (type);
+   m_unknowns_map.put (type, sval);
+   return sval;
+ }
+ 
+ /* Return the svalue * for the initial value of REG, creating it if
+    necessary.  */
+ 
+ const svalue *
+ region_model_manager::get_or_create_initial_value (const region *reg)
+ {
+   /* The initial value of a cast is a cast of the initial value.  */
+   if (const cast_region *cast_reg = reg->dyn_cast_cast_region ())
+     {
+       const region *original_reg = cast_reg->get_original_region ();
+       return get_or_create_cast (cast_reg->get_type (),
+ 				 get_or_create_initial_value (original_reg));
+     }
+ 
+   /* INIT_VAL (*UNKNOWN_PTR) -> UNKNOWN_VAL.  */
+   if (reg->symbolic_for_unknown_ptr_p ())
+     return get_or_create_unknown_svalue (reg->get_type ());
+ 
+   if (initial_svalue **slot = m_initial_values_map.get (reg))
+     return *slot;
+   initial_svalue *initial_sval = new initial_svalue (reg->get_type (), reg);
+   RETURN_UNKNOWN_IF_TOO_COMPLEX (initial_sval);
+   m_initial_values_map.put (reg, initial_sval);
+   return initial_sval;
+ }
+ 
+ /* Return the svalue * for R using type TYPE, creating it if
+    necessary.  */
+ 
+ const svalue *
+ region_model_manager::get_or_create_setjmp_svalue (const setjmp_record &r,
+ 						   tree type)
+ {
+   setjmp_svalue::key_t key (r, type);
+   if (setjmp_svalue **slot = m_setjmp_values_map.get (key))
+     return *slot;
+   setjmp_svalue *setjmp_sval = new setjmp_svalue (r, type);
+   RETURN_UNKNOWN_IF_TOO_COMPLEX (setjmp_sval);
+   m_setjmp_values_map.put (key, setjmp_sval);
+   return setjmp_sval;
+ }
+ 
+ /* Return the svalue * for a poisoned value of KIND and TYPE, creating it if
+    necessary.  */
+ 
+ const svalue *
+ region_model_manager::get_or_create_poisoned_svalue (enum poison_kind kind,
+ 						     tree type)
+ {
+   poisoned_svalue::key_t key (kind, type);
+   if (poisoned_svalue **slot = m_poisoned_values_map.get (key))
+     return *slot;
+   poisoned_svalue *poisoned_sval = new poisoned_svalue (kind, type);
+   RETURN_UNKNOWN_IF_TOO_COMPLEX (poisoned_sval);
+   m_poisoned_values_map.put (key, poisoned_sval);
+   return poisoned_sval;
+ }
+ 
+ /* Return the svalue * for a pointer to POINTEE of type PTR_TYPE,
+    creating it if necessary.  */
+ 
+ const svalue *
+ region_model_manager::get_ptr_svalue (tree ptr_type, const region *pointee)
+ {
+   /* If this is a symbolic region from dereferencing a pointer, and the types
+      match, then return the original pointer.  */
+   if (const symbolic_region *sym_reg = pointee->dyn_cast_symbolic_region ())
+     if (ptr_type == sym_reg->get_pointer ()->get_type ())
+       return sym_reg->get_pointer ();
+ 
+   region_svalue::key_t key (ptr_type, pointee);
+   if (region_svalue **slot = m_pointer_values_map.get (key))
+     return *slot;
+   region_svalue *sval = new region_svalue (ptr_type, pointee);
+   RETURN_UNKNOWN_IF_TOO_COMPLEX (sval);
+   m_pointer_values_map.put (key, sval);
+   return sval;
+ }
+ 
+ /* Subroutine of region_model_manager::get_or_create_unaryop.
+    Attempt to fold the inputs and return a simpler svalue *.
+    Otherwise, return NULL.  */
+ 
+ const svalue *
+ region_model_manager::maybe_fold_unaryop (tree type, enum tree_code op,
+ 					  const svalue *arg)
+ {
+   /* Ops on "unknown" are also unknown.  */
+   if (arg->get_kind () == SK_UNKNOWN)
+     return get_or_create_unknown_svalue (type);
+ 
+   switch (op)
+     {
+     default: break;
+     case VIEW_CONVERT_EXPR:
+     case NOP_EXPR:
+       {
+ 	/* Handle redundant casts.  */
+ 	if (arg->get_type ()
+ 	    && useless_type_conversion_p (arg->get_type (), type))
+ 	  return arg;
+ 
+ 	/* Fold "cast<TYPE> (cast <INNER_TYPE> (innermost_arg))
+ 	     => "cast<TYPE> (innermost_arg)",
+ 	   unless INNER_TYPE is narrower than TYPE.  */
+ 	if (const svalue *innermost_arg = arg->maybe_undo_cast ())
+ 	  {
+ 	    tree inner_type = arg->get_type ();
+ 	    if (TYPE_SIZE (type)
+ 		&& TYPE_SIZE (inner_type)
+ 		&& (fold_binary (LE_EXPR, boolean_type_node,
+ 				 TYPE_SIZE (type), TYPE_SIZE (inner_type))
+ 		    == boolean_true_node))
+ 	      return maybe_fold_unaryop (type, op, innermost_arg);
+ 	  }
+       }
+       break;
+     case TRUTH_NOT_EXPR:
+       {
+ 	/* Invert comparisons e.g. "!(x == y)" => "x != y".  */
+ 	if (const binop_svalue *binop = arg->dyn_cast_binop_svalue ())
+ 	  if (TREE_CODE_CLASS (binop->get_op ()) == tcc_comparison)
+ 	    {
+ 	      enum tree_code inv_op
+ 		= invert_tree_comparison (binop->get_op (),
+ 					  HONOR_NANS (binop->get_type ()));
+ 	      if (inv_op != ERROR_MARK)
+ 		return get_or_create_binop (binop->get_type (), inv_op,
+ 					    binop->get_arg0 (),
+ 					    binop->get_arg1 ());
+ 	    }
+       }
+       break;
+     }
+ 
+   /* Constants.  */
+   if (tree cst = arg->maybe_get_constant ())
+     if (tree result = fold_unary (op, type, cst))
+       return get_or_create_constant_svalue (result);
+ 
+   return NULL;
+ }
+ 
+ /* Return the svalue * for an unary operation OP on ARG with a result of
+    type TYPE, creating it if necessary.  */
+ 
+ const svalue *
+ region_model_manager::get_or_create_unaryop (tree type, enum tree_code op,
+ 					     const svalue *arg)
+ {
+   if (const svalue *folded = maybe_fold_unaryop  (type, op, arg))
+     return folded;
+   unaryop_svalue::key_t key (type, op, arg);
+   if (unaryop_svalue **slot = m_unaryop_values_map.get (key))
+     return *slot;
+   unaryop_svalue *unaryop_sval = new unaryop_svalue (type, op, arg);
+   RETURN_UNKNOWN_IF_TOO_COMPLEX (unaryop_sval);
+   m_unaryop_values_map.put (key, unaryop_sval);
+   return unaryop_sval;
+ }
+ 
+ /* Get a tree code for a cast to DST_TYPE from SRC_TYPE.
+    Use NOP_EXPR if possible (e.g. to help fold_unary convert casts
+    of 0 to (T*) to simple pointer constants), but use FIX_TRUNC_EXPR
+    and VIEW_CONVERT_EXPR for cases that fold_unary would otherwise crash
+    on.  */
+ 
+ static enum tree_code
+ get_code_for_cast (tree dst_type, tree src_type)
+ {
+   gcc_assert (dst_type);
+   if (!src_type)
+     return NOP_EXPR;
+ 
+   if (TREE_CODE (src_type) == REAL_TYPE)
+     {
+       if (TREE_CODE (dst_type) == INTEGER_TYPE)
+ 	return FIX_TRUNC_EXPR;
+       else
+ 	return VIEW_CONVERT_EXPR;
+     }
+ 
+   return NOP_EXPR;
+ }
+ 
+ /* Return the svalue * for a cast of ARG to type TYPE, creating it
+    if necessary.  */
+ 
+ const svalue *
+ region_model_manager::get_or_create_cast (tree type, const svalue *arg)
+ {
+   gcc_assert (type);
+   enum tree_code op = get_code_for_cast (type, arg->get_type ());
+   return get_or_create_unaryop (type, op, arg);
+ }
+ 
+ /* Subroutine of region_model_manager::get_or_create_binop.
+    Attempt to fold the inputs and return a simpler svalue *.
+    Otherwise, return NULL.  */
+ 
+ const svalue *
+ region_model_manager::maybe_fold_binop (tree type, enum tree_code op,
+ 					const svalue *arg0,
+ 					const svalue *arg1)
+ {
+   tree cst0 = arg0->maybe_get_constant ();
+   tree cst1 = arg1->maybe_get_constant ();
+   /* (CST OP CST).  */
+   if (cst0 && cst1)
+     {
+       if (tree result = fold_binary (op, type, cst0, cst1))
+ 	if (CONSTANT_CLASS_P (result))
+ 	  return get_or_create_constant_svalue (result);
+     }
+ 
+   if (FLOAT_TYPE_P (type)
+       || (arg0->get_type () && FLOAT_TYPE_P (arg0->get_type ()))
+       || (arg1->get_type () && FLOAT_TYPE_P (arg1->get_type ())))
+     return NULL;
+ 
+   switch (op)
+     {
+     default:
+       break;
+     case POINTER_PLUS_EXPR:
+     case PLUS_EXPR:
+       /* (VAL + 0) -> VAL.  */
+       if (cst1 && zerop (cst1) && type == arg0->get_type ())
+ 	return arg0;
+       break;
+     case MINUS_EXPR:
+       /* (VAL - 0) -> VAL.  */
+       if (cst1 && zerop (cst1) && type == arg0->get_type ())
+ 	return arg0;
+       break;
+     case MULT_EXPR:
+       /* (VAL * 0).  */
+       if (cst1 && zerop (cst1) && INTEGRAL_TYPE_P (type))
+ 	return get_or_create_constant_svalue (build_int_cst (type, 0));
+       /* (VAL * 1) -> VAL.  */
+       if (cst1 && integer_onep (cst1))
+ 	return arg0;
+       break;
+     case BIT_AND_EXPR:
+       if (cst1)
+ 	if (zerop (cst1) && INTEGRAL_TYPE_P (type))
+ 	  /* "(ARG0 & 0)" -> "0".  */
+ 	  return get_or_create_constant_svalue (build_int_cst (type, 0));
+       break;
+     case TRUTH_ANDIF_EXPR:
+     case TRUTH_AND_EXPR:
+       if (cst1)
+ 	{
+ 	  if (zerop (cst1) && INTEGRAL_TYPE_P (type))
+ 	    /* "(ARG0 && 0)" -> "0".  */
+ 	    return get_or_create_constant_svalue (build_int_cst (type, 0));
+ 	  else
+ 	    /* "(ARG0 && nonzero-cst)" -> "ARG0".  */
+ 	    return get_or_create_cast (type, arg0);
+ 	}
+       break;
+     case TRUTH_ORIF_EXPR:
+     case TRUTH_OR_EXPR:
+       if (cst1)
+ 	{
+ 	  if (zerop (cst1))
+ 	    /* "(ARG0 || 0)" -> "ARG0".  */
+ 	    return get_or_create_cast (type, arg0);
+ 	  else
+ 	    /* "(ARG0 && nonzero-cst)" -> "nonzero-cst".  */
+ 	    return get_or_create_cast (type, arg1);
+ 	}
+       break;
+     }
+ 
+   /* For associative ops, fold "(X op CST_A) op CST_B)" to
+      "X op (CST_A op CST_B)".  */
+   if (cst1 && associative_tree_code (op))
+     if (const binop_svalue *binop = arg0->dyn_cast_binop_svalue ())
+       if (binop->get_op () == op
+ 	  && binop->get_arg1 ()->maybe_get_constant ()
+ 	  && type == binop->get_type ()
+ 	  && type == binop->get_arg0 ()->get_type ()
+ 	  && type == binop->get_arg1 ()->get_type ())
+ 	return get_or_create_binop
+ 	  (type, op, binop->get_arg0 (),
+ 	   get_or_create_binop (type, op,
+ 				binop->get_arg1 (), arg1));
+ 
+   /* associative_tree_code is false for POINTER_PLUS_EXPR, but we
+      can fold:
+        "(PTR ptr+ CST_A) ptr+ CST_B)" to "PTR ptr+ (CST_A ptr+ CST_B)"
+      e.g. in data-model-1.c: test_4c.  */
+   if (cst1 && op == POINTER_PLUS_EXPR)
+     if (const binop_svalue *binop = arg0->dyn_cast_binop_svalue ())
+       if (binop->get_op () == POINTER_PLUS_EXPR)
+ 	if (binop->get_arg1 ()->maybe_get_constant ())
+ 	  return get_or_create_binop
+ 	    (type, op, binop->get_arg0 (),
+ 	     get_or_create_binop (size_type_node, op,
+ 				  binop->get_arg1 (), arg1));
+ 
+   /* Ops on "unknown" are also unknown (unless we can use one of the
+      identities above).  */
+   if (arg0->get_kind () == SK_UNKNOWN
+       || arg1->get_kind () == SK_UNKNOWN)
+     return get_or_create_unknown_svalue (type);
+ 
+   /* etc.  */
+ 
+   return NULL;
+ }
+ 
+ /* Return the svalue * for an binary operation OP on ARG0 and ARG1
+    with a result of type TYPE, creating it if necessary.  */
+ 
+ const svalue *
+ region_model_manager::get_or_create_binop (tree type, enum tree_code op,
+ 					   const svalue *arg0,
+ 					   const svalue *arg1)
+ {
+   /* For commutative ops, put any constant on the RHS.  */
+   if (arg0->maybe_get_constant () && commutative_tree_code (op))
+     std::swap (arg0, arg1);
+ 
+   if (const svalue *folded = maybe_fold_binop (type, op, arg0, arg1))
+     return folded;
+ 
+   binop_svalue::key_t key (type, op, arg0, arg1);
+   if (binop_svalue **slot = m_binop_values_map.get (key))
+     return *slot;
+   binop_svalue *binop_sval = new binop_svalue (type, op, arg0, arg1);
+   RETURN_UNKNOWN_IF_TOO_COMPLEX (binop_sval);
+   m_binop_values_map.put (key, binop_sval);
+   return binop_sval;
+ }
+ 
+ /* Subroutine of region_model_manager::get_or_create_sub_svalue.
+    Return a folded svalue, or NULL.  */
+ 
+ const svalue *
+ region_model_manager::maybe_fold_sub_svalue (tree type,
+ 					     const svalue *parent_svalue,
+ 					     const region *subregion)
+ {
+   /* Subvalues of "unknown" are unknown.  */
+   if (parent_svalue->get_kind () == SK_UNKNOWN)
+     return get_or_create_unknown_svalue (type);
+ 
+   /* If we have a subregion of a zero-fill, it's zero.  */
+   if (const unaryop_svalue *unary
+       = parent_svalue->dyn_cast_unaryop_svalue ())
+     {
+       if (unary->get_op () == NOP_EXPR
+ 	  || unary->get_op () == VIEW_CONVERT_EXPR)
+ 	if (tree cst = unary->get_arg ()->maybe_get_constant ())
+ 	  if (zerop (cst))
+ 	    {
+ 	      const svalue *cst_sval
+ 		= get_or_create_constant_svalue (cst);
+ 	      return get_or_create_cast (type, cst_sval);
+ 	    }
+     }
+ 
+   /* Handle getting individual chars from a STRING_CST.  */
+   if (tree cst = parent_svalue->maybe_get_constant ())
+     if (TREE_CODE (cst) == STRING_CST)
+       if (const element_region *element_reg
+ 	    = subregion->dyn_cast_element_region ())
+ 	{
+ 	  const svalue *idx_sval = element_reg->get_index ();
+ 	  if (tree cst_idx = idx_sval->maybe_get_constant ())
+ 	    if (const svalue *char_sval
+ 		= maybe_get_char_from_string_cst (cst, cst_idx))
+ 	      return get_or_create_cast (type, char_sval);
+ 	}
+ 
+   /* SUB(INIT(r)).FIELD -> INIT(r.FIELD)
+      i.e.
+      Subvalue(InitialValue(R1), FieldRegion(R2, F))
+        -> InitialValue(FieldRegion(R1, F)).  */
+   if (const initial_svalue *init_sval
+         = parent_svalue->dyn_cast_initial_svalue ())
+     {
+       if (const field_region *field_reg = subregion->dyn_cast_field_region ())
+ 	{
+ 	  const region *field_reg_new
+ 	    = get_field_region (init_sval->get_region (),
+ 				field_reg->get_field ());
+ 	  return get_or_create_initial_value (field_reg_new);
+ 	}
+     }
+ 
+   return NULL;
+ }
+ 
+ /* Return the svalue * for extracting a subvalue of type TYPE from
+    PARENT_SVALUE based on SUBREGION, creating it if necessary.  */
+ 
+ const svalue *
+ region_model_manager::get_or_create_sub_svalue (tree type,
+ 						const svalue *parent_svalue,
+ 						const region *subregion)
+ {
+   if (const svalue *folded
+ 	= maybe_fold_sub_svalue (type, parent_svalue, subregion))
+     return folded;
+ 
+   sub_svalue::key_t key (type, parent_svalue, subregion);
+   if (sub_svalue **slot = m_sub_values_map.get (key))
+     return *slot;
+   sub_svalue *sub_sval
+     = new sub_svalue (type, parent_svalue, subregion);
+   RETURN_UNKNOWN_IF_TOO_COMPLEX (sub_sval);
+   m_sub_values_map.put (key, sub_sval);
+   return sub_sval;
+ }
+ 
+ /* Return the svalue * that decorates ARG as being unmergeable,
+    creating it if necessary.  */
+ 
+ const svalue *
+ region_model_manager::get_or_create_unmergeable (const svalue *arg)
+ {
+   if (arg->get_kind () == SK_UNMERGEABLE)
+     return arg;
+ 
+   if (unmergeable_svalue **slot = m_unmergeable_values_map.get (arg))
+     return *slot;
+   unmergeable_svalue *unmergeable_sval = new unmergeable_svalue (arg);
+   RETURN_UNKNOWN_IF_TOO_COMPLEX (unmergeable_sval);
+   m_unmergeable_values_map.put (arg, unmergeable_sval);
+   return unmergeable_sval;
+ }
+ 
+ /* Return the svalue * of type TYPE for the merger of value BASE_SVAL
+    and ITER_SVAL at POINT, creating it if necessary.  */
+ 
+ const svalue *
+ region_model_manager::get_or_create_widening_svalue (tree type,
+ 						     const program_point &point,
+ 						     const svalue *base_sval,
+ 						     const svalue *iter_sval)
+ {
+   gcc_assert (base_sval->get_kind () != SK_WIDENING);
+   gcc_assert (iter_sval->get_kind () != SK_WIDENING);
+   widening_svalue::key_t key (type, point, base_sval, iter_sval);
+   if (widening_svalue **slot = m_widening_values_map.get (key))
+     return *slot;
+   widening_svalue *widening_sval
+     = new widening_svalue (type, point, base_sval, iter_sval);
+   RETURN_UNKNOWN_IF_TOO_COMPLEX (widening_sval);
+   m_widening_values_map.put (key, widening_sval);
+   return widening_sval;
+ }
+ 
+ /* Return the svalue * of type TYPE for the compound values in MAP,
+    creating it if necessary.  */
+ 
+ const svalue *
+ region_model_manager::get_or_create_compound_svalue (tree type,
+ 						     const binding_map &map)
+ {
+   compound_svalue::key_t tmp_key (type, &map);
+   if (compound_svalue **slot = m_compound_values_map.get (tmp_key))
+     return *slot;
+   compound_svalue *compound_sval
+     = new compound_svalue (type, map);
+   RETURN_UNKNOWN_IF_TOO_COMPLEX (compound_sval);
+   /* Use make_key rather than reusing the key, so that we use a
+      ptr to compound_sval's binding_map, rather than the MAP param.  */
+   m_compound_values_map.put (compound_sval->make_key (), compound_sval);
+   return compound_sval;
+ }
+ 
+ /* Return the svalue * of type TYPE for the value conjured for ID_REG
+    at STMT, creating it if necessary.  */
+ 
+ const svalue *
+ region_model_manager::get_or_create_conjured_svalue (tree type,
+ 						     const gimple *stmt,
+ 						     const region *id_reg)
+ {
+   conjured_svalue::key_t key (type, stmt, id_reg);
+   if (conjured_svalue **slot = m_conjured_values_map.get (key))
+     return *slot;
+   conjured_svalue *conjured_sval
+     = new conjured_svalue (type, stmt, id_reg);
+   RETURN_UNKNOWN_IF_TOO_COMPLEX (conjured_sval);
+   m_conjured_values_map.put (key, conjured_sval);
+   return conjured_sval;
+ }
+ 
+ /* Given STRING_CST, a STRING_CST and BYTE_OFFSET_CST a constant,
+    attempt to get the character at that offset, returning either
+    the svalue for the character constant, or NULL if unsuccessful.  */
+ 
+ const svalue *
+ region_model_manager::maybe_get_char_from_string_cst (tree string_cst,
+ 						      tree byte_offset_cst)
+ {
+   gcc_assert (TREE_CODE (string_cst) == STRING_CST);
+ 
+   /* Adapted from fold_read_from_constant_string.  */
+   scalar_int_mode char_mode;
+   if (TREE_CODE (byte_offset_cst) == INTEGER_CST
+       && compare_tree_int (byte_offset_cst,
+ 			   TREE_STRING_LENGTH (string_cst)) < 0
+       && is_int_mode (TYPE_MODE (TREE_TYPE (TREE_TYPE (string_cst))),
+ 		      &char_mode)
+       && GET_MODE_SIZE (char_mode) == 1)
+     {
+       tree char_cst
+ 	= build_int_cst_type (TREE_TYPE (TREE_TYPE (string_cst)),
+ 			      (TREE_STRING_POINTER (string_cst)
+ 			       [TREE_INT_CST_LOW (byte_offset_cst)]));
+       return get_or_create_constant_svalue (char_cst);
+     }
+   return NULL;
+ }
+ 
+ /* region consolidation.  */
+ 
+ /* Return the region for FNDECL, creating it if necessary.  */
+ 
+ const function_region *
+ region_model_manager::get_region_for_fndecl (tree fndecl)
+ {
+   gcc_assert (TREE_CODE (fndecl) == FUNCTION_DECL);
+ 
+   function_region **slot = m_fndecls_map.get (fndecl);
+   if (slot)
+     return *slot;
+   function_region *reg
+     = new function_region (alloc_region_id (), &m_code_region, fndecl);
+   m_fndecls_map.put (fndecl, reg);
+   return reg;
+ }
+ 
+ /* Return the region for LABEL, creating it if necessary.  */
+ 
+ const label_region *
+ region_model_manager::get_region_for_label (tree label)
+ {
+   gcc_assert (TREE_CODE (label) == LABEL_DECL);
+ 
+   label_region **slot = m_labels_map.get (label);
+   if (slot)
+     return *slot;
+ 
+   tree fndecl = DECL_CONTEXT (label);
+   gcc_assert (fndecl && TREE_CODE (fndecl) == FUNCTION_DECL);
+ 
+   const function_region *func_reg = get_region_for_fndecl (fndecl);
+   label_region *reg
+     = new label_region (alloc_region_id (), func_reg, label);
+   m_labels_map.put (label, reg);
+   return reg;
+ }
+ 
+ /* Return the region for EXPR, creating it if necessary.  */
+ 
+ const decl_region *
+ region_model_manager::get_region_for_global (tree expr)
+ {
+   gcc_assert (TREE_CODE (expr) == VAR_DECL);
+ 
+   decl_region **slot = m_globals_map.get (expr);
+   if (slot)
+     return *slot;
+   decl_region *reg
+     = new decl_region (alloc_region_id (), &m_globals_region, expr);
+   m_globals_map.put (expr, reg);
+   return reg;
+ }
+ 
+ /* Return the region that describes accessing field FIELD of PARENT,
+    creating it if necessary.  */
+ 
+ const region *
+ region_model_manager::get_field_region (const region *parent, tree field)
+ {
+   gcc_assert (TREE_CODE (field) == FIELD_DECL);
+ 
+   /* (*UNKNOWN_PTR).field is (*UNKNOWN_PTR_OF_&FIELD_TYPE).  */
+   if (parent->symbolic_for_unknown_ptr_p ())
+     {
+       tree ptr_to_field_type = build_pointer_type (TREE_TYPE (field));
+       const svalue *unknown_ptr_to_field
+ 	= get_or_create_unknown_svalue (ptr_to_field_type);
+       return get_symbolic_region (unknown_ptr_to_field);
+     }
+ 
+   field_region::key_t key (parent, field);
+   if (field_region *reg = m_field_regions.get (key))
+     return reg;
+ 
+   field_region *field_reg
+     = new field_region (alloc_region_id (), parent, field);
+   m_field_regions.put (key, field_reg);
+   return field_reg;
+ }
+ 
+ /* Return the region that describes accessing the element of type
+    ELEMENT_TYPE at index INDEX of PARENT, creating it if necessary.  */
+ 
+ const region *
+ region_model_manager::get_element_region (const region *parent,
+ 					  tree element_type,
+ 					  const svalue *index)
+ {
+   element_region::key_t key (parent, element_type, index);
+   if (element_region *reg = m_element_regions.get (key))
+     return reg;
+ 
+   element_region *element_reg
+     = new element_region (alloc_region_id (), parent, element_type, index);
+   m_element_regions.put (key, element_reg);
+   return element_reg;
+ }
+ 
+ /* Return the region that describes accessing the subregion of type
+    ELEMENT_TYPE at offset BYTE_OFFSET within PARENT, creating it if
+    necessary.  */
+ 
+ const region *
+ region_model_manager::get_offset_region (const region *parent,
+ 					 tree type,
+ 					 const svalue *byte_offset)
+ {
+   /* If BYTE_OFFSET is zero, return PARENT.  */
+   if (tree cst_offset = byte_offset->maybe_get_constant ())
+     if (zerop (cst_offset))
+       return get_cast_region (parent, type);
+ 
+   /* Fold OFFSET_REGION(OFFSET_REGION(REG, X), Y)
+      to   OFFSET_REGION(REG, (X + Y)).  */
+   if (const offset_region *parent_offset_reg
+ 	= parent->dyn_cast_offset_region ())
+     {
+       const svalue *sval_x = parent_offset_reg->get_byte_offset ();
+       const svalue *sval_sum
+ 	= get_or_create_binop (byte_offset->get_type (),
+ 			       PLUS_EXPR, sval_x, byte_offset);
+       return get_offset_region (parent->get_parent_region (), type, sval_sum);
+     }
+ 
+   offset_region::key_t key (parent, type, byte_offset);
+   if (offset_region *reg = m_offset_regions.get (key))
+     return reg;
+ 
+   offset_region *offset_reg
+     = new offset_region (alloc_region_id (), parent, type, byte_offset);
+   m_offset_regions.put (key, offset_reg);
+   return offset_reg;
+ }
+ 
+ /* Return the region that describes accessing PARENT_REGION as if
+    it were of type TYPE, creating it if necessary.  */
+ 
+ const region *
+ region_model_manager::get_cast_region (const region *original_region,
+ 				       tree type)
+ {
+   /* If types match, return ORIGINAL_REGION.  */
+   if (type == original_region->get_type ())
+     return original_region;
+ 
+   cast_region::key_t key (original_region, type);
+   if (cast_region *reg = m_cast_regions.get (key))
+     return reg;
+ 
+   cast_region *cast_reg
+     = new cast_region (alloc_region_id (), original_region, type);
+   m_cast_regions.put (key, cast_reg);
+   return cast_reg;
+ }
+ 
+ /* Return the frame_region for call to FUN from CALLING_FRAME, creating it
+    if necessary.  CALLING_FRAME may be NULL.  */
+ 
+ const frame_region *
+ region_model_manager::get_frame_region (const frame_region *calling_frame,
+ 					function *fun)
+ {
+   int index = calling_frame ? calling_frame->get_index () + 1 : 0;
+ 
+   frame_region::key_t key (calling_frame, fun);
+   if (frame_region *reg = m_frame_regions.get (key))
+     return reg;
+ 
+   frame_region *frame_reg
+     = new frame_region (alloc_region_id (), &m_stack_region, calling_frame,
+ 			 fun, index);
+   m_frame_regions.put (key, frame_reg);
+   return frame_reg;
+ }
+ 
+ /* Return the region that describes dereferencing SVAL, creating it
+    if necessary.  */
+ 
+ const region *
+ region_model_manager::get_symbolic_region (const svalue *sval)
+ {
+   symbolic_region::key_t key (&m_root_region, sval);
+   if (symbolic_region *reg = m_symbolic_regions.get (key))
+     return reg;
+ 
+   symbolic_region *symbolic_reg
+     = new symbolic_region (alloc_region_id (), &m_root_region, sval);
+   m_symbolic_regions.put (key, symbolic_reg);
+   return symbolic_reg;
+ }
+ 
+ /* Return the region that describes accessing STRING_CST, creating it
+    if necessary.  */
+ 
+ const string_region *
+ region_model_manager::get_region_for_string (tree string_cst)
+ {
+   gcc_assert (TREE_CODE (string_cst) == STRING_CST);
+ 
+   string_region **slot = m_string_map.get (string_cst);
+   if (slot)
+     return *slot;
+   string_region *reg
+     = new string_region (alloc_region_id (), &m_root_region, string_cst);
+   m_string_map.put (string_cst, reg);
+   return reg;
+ }
+ 
+ /* If we see a tree code we don't know how to handle, rather than
+    ICE or generate bogus results, create a dummy region, and notify
+    CTXT so that it can mark the new state as being not properly
+    modelled.  The exploded graph can then stop exploring that path,
+    since any diagnostics we might issue will have questionable
+    validity.  */
+ 
+ const region *
+ region_model_manager::
+ get_region_for_unexpected_tree_code (region_model_context *ctxt,
+ 				     tree t,
+ 				     const dump_location_t &loc)
+ {
+   tree type = TYPE_P (t) ? t : TREE_TYPE (t);
+   region *new_reg
+     = new unknown_region (alloc_region_id (), &m_root_region, type);
+   if (ctxt)
+     ctxt->on_unexpected_tree_code (t, loc);
+   return new_reg;
+ }
+ 
+ /* Return a new region describing a heap-allocated block of memory.  */
+ 
+ const region *
+ region_model_manager::create_region_for_heap_alloc ()
+ {
+   region *reg
+     = new heap_allocated_region (alloc_region_id (), &m_heap_region);
+   m_managed_dynamic_regions.safe_push (reg);
+   return reg;
+ }
+ 
+ /* Return a new region describing a block of memory allocated within FRAME.  */
+ 
+ const region *
+ region_model_manager::create_region_for_alloca (const frame_region *frame)
+ {
+   gcc_assert (frame);
+   region *reg = new alloca_region (alloc_region_id (), frame);
+   m_managed_dynamic_regions.safe_push (reg);
+   return reg;
+ }
+ 
+ /* Log OBJ to LOGGER.  */
+ 
+ template <typename T>
+ static void
+ log_managed_object (logger *logger, const T *obj)
+ {
+   logger->start_log_line ();
+   pretty_printer *pp = logger->get_printer ();
+   pp_string (pp, "    ");
+   obj->dump_to_pp (pp, true);
+   logger->end_log_line ();
+ }
+ 
+ /* Specialization for frame_region, which also logs the count of locals
+    managed by the frame_region.  */
+ 
+ template <>
+ void
+ log_managed_object (logger *logger, const frame_region *obj)
+ {
+   logger->start_log_line ();
+   pretty_printer *pp = logger->get_printer ();
+   pp_string (pp, "    ");
+   obj->dump_to_pp (pp, true);
+   pp_printf (pp, " [with %i region(s) for locals]", obj->get_num_locals ());
+   logger->end_log_line ();
+ }
+ 
+ /* Dump the number of objects that were managed by UNIQ_MAP to LOGGER.
+    If SHOW_OBJS is true, also dump the objects themselves.  */
+ 
+ template <typename K, typename T>
+ static void
+ log_uniq_map (logger *logger, bool show_objs, const char *title,
+ 	      const hash_map<K, T*> &uniq_map)
+ {
+   logger->log ("  # %s: %li", title, uniq_map.elements ());
+   if (!show_objs)
+     return;
+   auto_vec<const T *> vec_objs (uniq_map.elements ());
+   for (typename hash_map<K, T*>::iterator iter = uniq_map.begin ();
+        iter != uniq_map.end (); ++iter)
+     vec_objs.quick_push ((*iter).second);
+ 
+   vec_objs.qsort (T::cmp_ptr_ptr);
+ 
+   unsigned i;
+   const T *obj;
+   FOR_EACH_VEC_ELT (vec_objs, i, obj)
+     log_managed_object<T> (logger, obj);
+ }
+ 
+ /* Dump the number of objects that were managed by MAP to LOGGER.
+    If SHOW_OBJS is true, also dump the objects themselves.  */
+ 
+ template <typename T>
+ static void
+ log_uniq_map (logger *logger, bool show_objs, const char *title,
+ 	      const consolidation_map<T> &map)
+ {
+   logger->log ("  # %s: %li", title, map.elements ());
+   if (!show_objs)
+     return;
+ 
+   auto_vec<const T *> vec_objs (map.elements ());
+   for (typename consolidation_map<T>::iterator iter = map.begin ();
+        iter != map.end (); ++iter)
+     vec_objs.quick_push ((*iter).second);
+ 
+   vec_objs.qsort (T::cmp_ptr_ptr);
+ 
+   unsigned i;
+   const T *obj;
+   FOR_EACH_VEC_ELT (vec_objs, i, obj)
+     log_managed_object<T> (logger, obj);
+ }
+ 
+ /* Dump the number of objects of each class that were managed by this
+    manager to LOGGER.
+    If SHOW_OBJS is true, also dump the objects themselves.  */
+ 
+ void
+ region_model_manager::log_stats (logger *logger, bool show_objs) const
+ {
+   LOG_SCOPE (logger);
+   logger->log ("svalue consolidation");
+   log_uniq_map (logger, show_objs, "constant_svalue", m_constants_map);
+   log_uniq_map (logger, show_objs, "unknown_svalue", m_unknowns_map);
+   if (m_unknown_NULL)
+     log_managed_object (logger, m_unknown_NULL);
+   log_uniq_map (logger, show_objs, "poisoned_svalue", m_poisoned_values_map);
+   log_uniq_map (logger, show_objs, "setjmp_svalue", m_setjmp_values_map);
+   log_uniq_map (logger, show_objs, "initial_svalue", m_initial_values_map);
+   log_uniq_map (logger, show_objs, "region_svalue", m_pointer_values_map);
+   log_uniq_map (logger, show_objs, "unaryop_svalue", m_unaryop_values_map);
+   log_uniq_map (logger, show_objs, "binop_svalue", m_binop_values_map);
+   log_uniq_map (logger, show_objs, "sub_svalue", m_sub_values_map);
+   log_uniq_map (logger, show_objs, "unmergeable_svalue",
+ 		m_unmergeable_values_map);
+   log_uniq_map (logger, show_objs, "widening_svalue", m_widening_values_map);
+   log_uniq_map (logger, show_objs, "compound_svalue", m_compound_values_map);
+   log_uniq_map (logger, show_objs, "conjured_svalue", m_conjured_values_map);
+   logger->log ("max accepted svalue num_nodes: %i",
+ 	       m_max_complexity.m_num_nodes);
+   logger->log ("max accepted svalue max_depth: %i",
+ 	       m_max_complexity.m_max_depth);
+ 
+   logger->log ("region consolidation");
+   logger->log ("  next region id: %i", m_next_region_id);
+   log_uniq_map (logger, show_objs, "function_region", m_fndecls_map);
+   log_uniq_map (logger, show_objs, "label_region", m_labels_map);
+   log_uniq_map (logger, show_objs, "decl_region for globals", m_globals_map);
+   log_uniq_map (logger, show_objs, "field_region", m_field_regions);
+   log_uniq_map (logger, show_objs, "element_region", m_element_regions);
+   log_uniq_map (logger, show_objs, "offset_region", m_offset_regions);
+   log_uniq_map (logger, show_objs, "cast_region", m_cast_regions);
+   log_uniq_map (logger, show_objs, "frame_region", m_frame_regions);
+   log_uniq_map (logger, show_objs, "symbolic_region", m_symbolic_regions);
+   log_uniq_map (logger, show_objs, "string_region", m_string_map);
+   logger->log ("  # managed dynamic regions: %i",
+ 	       m_managed_dynamic_regions.length ());
+   m_store_mgr.log_stats (logger, show_objs);
+ }
+ 
+ /* Dump the number of objects of each class that were managed by this
+    manager to LOGGER.
+    If SHOW_OBJS is true, also dump the objects themselves.
+    This is here so it can use log_uniq_map.  */
+ 
+ void
+ store_manager::log_stats (logger *logger, bool show_objs) const
+ {
+   LOG_SCOPE (logger);
+   log_uniq_map (logger, show_objs, "concrete_binding",
+ 		m_concrete_binding_key_mgr);
+   log_uniq_map (logger, show_objs, "symbolic_binding",
+ 		m_symbolic_binding_key_mgr);
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/region-model-reachability.cc gcc-11.1.0/gcc/analyzer/region-model-reachability.cc
*** gcc-10.3.0/gcc/analyzer/region-model-reachability.cc	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/analyzer/region-model-reachability.cc	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,352 ----
+ /* Finding reachable regions and values.
+    Copyright (C) 2020-2021 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.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/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "function.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "gimple-iterator.h"
+ #include "diagnostic-core.h"
+ #include "graphviz.h"
+ #include "options.h"
+ #include "cgraph.h"
+ #include "tree-dfa.h"
+ #include "stringpool.h"
+ #include "convert.h"
+ #include "target.h"
+ #include "fold-const.h"
+ #include "tree-pretty-print.h"
+ #include "tristate.h"
+ #include "bitmap.h"
+ #include "selftest.h"
+ #include "function.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "ordered-hash-map.h"
+ #include "options.h"
+ #include "cgraph.h"
+ #include "cfg.h"
+ #include "digraph.h"
+ #include "json.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
+ #include "analyzer/region-model.h"
+ #include "analyzer/region-model-reachability.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ reachable_regions::reachable_regions (region_model *model)
+ : m_model (model), m_store (model->get_store ()),
+   m_reachable_base_regs (), m_mutable_base_regs ()
+ {
+ }
+ 
+ /* Callback called for each cluster when initializing this object.  */
+ 
+ void
+ reachable_regions::init_cluster_cb (const region *base_reg,
+ 				    reachable_regions *this_ptr)
+ {
+   this_ptr->init_cluster (base_reg);
+ }
+ 
+ /* Called for each cluster when initializing this object.  */
+ void
+ reachable_regions::init_cluster (const region *base_reg)
+ {
+   /* Mark any globals as mutable (and traverse what they point to).  */
+   const region *parent = base_reg->get_parent_region ();
+   gcc_assert (parent);
+   if (parent->get_kind () == RK_GLOBALS)
+     add (base_reg, true);
+ 
+   /* Mark any clusters that already escaped in previous unknown calls
+      as mutable (and traverse what they currently point to).  */
+   if (m_store->escaped_p (base_reg))
+     add (base_reg, true);
+ 
+   if (const symbolic_region *sym_reg = base_reg->dyn_cast_symbolic_region ())
+     {
+       const svalue *ptr = sym_reg->get_pointer ();
+       if (ptr->implicitly_live_p (NULL, m_model))
+ 	add (base_reg, true);
+       switch (ptr->get_kind ())
+ 	{
+ 	default:
+ 	  break;
+ 	case SK_INITIAL:
+ 	  {
+ 	    /* If BASE_REG is *INIT_VAL(REG) for some other REG, see if REG is
+ 	       unbound and untouched.  If so, then add BASE_REG as a root.  */
+ 	    const initial_svalue *init_sval
+ 	      = as_a <const initial_svalue *> (ptr);
+ 	    const region *init_sval_reg = init_sval->get_region ();
+ 	    const region *other_base_reg = init_sval_reg->get_base_region ();
+ 	    const binding_cluster *other_cluster
+ 	      = m_store->get_cluster (other_base_reg);
+ 	    if (other_cluster == NULL
+ 		|| !other_cluster->touched_p ())
+ 	      add (base_reg, true);
+ 	  }
+ 	  break;
+ 
+ 	case SK_UNKNOWN:
+ 	case SK_CONJURED:
+ 	  {
+ 	    /* If this cluster is due to dereferencing an unknown/conjured
+ 	       pointer, any values written through the pointer could still
+ 	       be live.  */
+ 	    add (base_reg, true);
+ 	  }
+ 	  break;
+ 	}
+     }
+ }
+ 
+   /* Lazily mark the cluster containing REG as being reachable, recursively
+      adding clusters reachable from REG's cluster.  */
+ void
+ reachable_regions::add (const region *reg, bool is_mutable)
+ {
+   gcc_assert (reg);
+ 
+   const region *base_reg = const_cast <region *> (reg->get_base_region ());
+   gcc_assert (base_reg);
+ 
+   /* Bail out if this cluster is already in the sets at the IS_MUTABLE
+      level of mutability.  */
+   if (!is_mutable && m_reachable_base_regs.contains (base_reg))
+     return;
+   m_reachable_base_regs.add (base_reg);
+ 
+   if (is_mutable)
+     {
+       if (m_mutable_base_regs.contains (base_reg))
+ 	return;
+       else
+ 	m_mutable_base_regs.add (base_reg);
+     }
+ 
+   /* Add values within the cluster.  If any are pointers, add the pointee.  */
+   if (binding_cluster *bind_cluster = m_store->get_cluster (base_reg))
+     bind_cluster->for_each_value (handle_sval_cb, this);
+   else
+     handle_sval (m_model->get_store_value (reg));
+ }
+ 
+ void
+ reachable_regions::handle_sval_cb (const svalue *sval,
+ 				   reachable_regions *this_ptr)
+ {
+   this_ptr->handle_sval (sval);
+ }
+ 
+ /* Add SVAL.  If it is a pointer, add the pointed-to region.  */
+ 
+ void
+ reachable_regions::handle_sval (const svalue *sval)
+ {
+   m_reachable_svals.add (sval);
+   m_mutable_svals.add (sval);
+   if (const region_svalue *ptr = sval->dyn_cast_region_svalue ())
+     {
+       const region *pointee = ptr->get_pointee ();
+       /* Use const-ness of pointer type to affect mutability.  */
+       bool ptr_is_mutable = true;
+       if (ptr->get_type ()
+ 	  && TREE_CODE (ptr->get_type ()) == POINTER_TYPE
+ 	  && TYPE_READONLY (TREE_TYPE (ptr->get_type ())))
+ 	{
+ 	  ptr_is_mutable = false;
+ 	}
+       else
+ 	{
+ 	  m_mutable_svals.add (sval);
+ 	}
+       add (pointee, ptr_is_mutable);
+     }
+   /* Treat all svalues within a compound_svalue as reachable.  */
+   if (const compound_svalue *compound_sval
+       = sval->dyn_cast_compound_svalue ())
+     {
+       for (compound_svalue::iterator_t iter = compound_sval->begin ();
+ 	   iter != compound_sval->end (); ++iter)
+ 	{
+ 	  const svalue *iter_sval = (*iter).second;
+ 	  handle_sval (iter_sval);
+ 	}
+     }
+   if (const svalue *cast = sval->maybe_undo_cast ())
+     handle_sval (cast);
+ 
+   /* If SVAL is the result of a reversible operation, then the operands
+      are reachable.  */
+   switch (sval->get_kind ())
+     {
+     default:
+       break;
+     case SK_UNARYOP:
+       {
+ 	const unaryop_svalue *unaryop_sval = (const unaryop_svalue *)sval;
+ 	switch (unaryop_sval->get_op ())
+ 	  {
+ 	  default:
+ 	    break;
+ 	  case NEGATE_EXPR:
+ 	    handle_sval (unaryop_sval->get_arg ());
+ 	    break;
+ 	  }
+       }
+       break;
+     case SK_BINOP:
+       {
+ 	const binop_svalue *binop_sval = (const binop_svalue *)sval;
+ 	switch (binop_sval->get_op ())
+ 	  {
+ 	  default:
+ 	    break;
+ 	  case POINTER_PLUS_EXPR:
+ 	    handle_sval (binop_sval->get_arg0 ());
+ 	    handle_sval (binop_sval->get_arg1 ());
+ 	    break;
+ 	  }
+       }
+     }
+ }
+ 
+ /* Add SVAL.  If it is a pointer, add the pointed-to region.
+    Use PARAM_TYPE for determining mutability.  */
+ 
+ void
+ reachable_regions::handle_parm (const svalue *sval, tree param_type)
+ {
+   bool is_mutable = true;
+   if (param_type
+       && TREE_CODE (param_type) == POINTER_TYPE
+       &&  TYPE_READONLY (TREE_TYPE (param_type)))
+     is_mutable = false;
+   if (is_mutable)
+     m_mutable_svals.add (sval);
+   else
+     m_reachable_svals.add (sval);
+   if (const region_svalue *parm_ptr
+       = sval->dyn_cast_region_svalue ())
+     {
+       const region *pointee_reg = parm_ptr->get_pointee ();
+       add (pointee_reg, is_mutable);
+     }
+ }
+ 
+ /* Update the store to mark the clusters that were found to be mutable
+    as having escaped.
+    Notify CTXT about escaping function_decls.  */
+ 
+ void
+ reachable_regions::mark_escaped_clusters (region_model_context *ctxt)
+ {
+   gcc_assert (ctxt);
+   auto_vec<const function_region *> escaped_fn_regs
+     (m_mutable_base_regs.elements ());
+   for (hash_set<const region *>::iterator iter = m_mutable_base_regs.begin ();
+        iter != m_mutable_base_regs.end (); ++iter)
+     {
+       const region *base_reg = *iter;
+       m_store->mark_as_escaped (base_reg);
+ 
+       /* If we have a function that's escaped, potentially add
+ 	 it to the worklist.  */
+       if (const function_region *fn_reg = base_reg->dyn_cast_function_region ())
+ 	escaped_fn_regs.quick_push (fn_reg);
+     }
+   /* Sort to ensure deterministic results.  */
+   escaped_fn_regs.qsort (region::cmp_ptr_ptr);
+   unsigned i;
+   const function_region *fn_reg;
+   FOR_EACH_VEC_ELT (escaped_fn_regs, i, fn_reg)
+     ctxt->on_escaped_function (fn_reg->get_fndecl ());
+ }
+ 
+ /* Dump SET to PP, sorting it to avoid churn when comparing dumps.  */
+ 
+ template <typename T>
+ static void
+ dump_set (const hash_set<const T *> &set, pretty_printer *pp)
+ {
+   auto_vec<const T *> elements (set.elements ());
+   for (typename hash_set<const T *>::iterator iter = set.begin ();
+        iter != set.end (); ++iter)
+     elements.quick_push (*iter);
+ 
+   elements.qsort (T::cmp_ptr_ptr);
+ 
+   unsigned i;
+   const T *element;
+   FOR_EACH_VEC_ELT (elements, i, element)
+     {
+       pp_string (pp, "  ");
+       element->dump_to_pp (pp, true);
+       pp_newline (pp);
+     }
+ }
+ 
+ /* Dump a multiline representation of this object to PP.  */
+ 
+ void
+ reachable_regions::dump_to_pp (pretty_printer *pp) const
+ {
+   pp_string (pp, "reachable clusters: ");
+   pp_newline (pp);
+   dump_set (m_reachable_base_regs, pp);
+ 
+   pp_string (pp, "mutable clusters: ");
+   pp_newline (pp);
+   dump_set (m_mutable_base_regs, pp);
+ 
+   pp_string (pp, "reachable svals: ");
+   pp_newline (pp);
+   dump_set (m_reachable_svals, pp);
+ 
+   pp_string (pp, "mutable svals: ");
+   pp_newline (pp);
+   dump_set (m_mutable_svals, pp);
+ }
+ 
+ /* Dump a multiline representation of this object to stderr.  */
+ 
+ DEBUG_FUNCTION void
+ reachable_regions::dump () const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+   pp_show_color (&pp) = pp_show_color (global_dc->printer);
+   pp.buffer->stream = stderr;
+   dump_to_pp (&pp);
+   pp_flush (&pp);
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/region-model-reachability.h gcc-11.1.0/gcc/analyzer/region-model-reachability.h
*** gcc-10.3.0/gcc/analyzer/region-model-reachability.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/analyzer/region-model-reachability.h	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,118 ----
+ /* Finding reachable regions and values.
+    Copyright (C) 2020-2021 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.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/>.  */
+ 
+ #ifndef GCC_ANALYZER_REGION_MODEL_REACHABILITY_H
+ #define GCC_ANALYZER_REGION_MODEL_REACHABILITY_H
+ 
+ namespace ana {
+ 
+ /* A class for determining which regions and svalues are reachable.
+ 
+    Used by region_model::handle_unrecognized_call for keeping
+    track of all regions that are reachable, and, of those, which are
+    mutable.
+ 
+    Used by program_state::detect_leaks
+    (via region_model::get_reachable_svalues) for detecting leaks.  */
+ 
+ class reachable_regions
+ {
+ public:
+   reachable_regions (region_model *model);
+ 
+   /* Callback called for each cluster when initializing this object.  */
+   static void init_cluster_cb (const region *base_reg,
+ 			       reachable_regions *this_ptr);
+ 
+   /* Called for each cluster when initializing this object.  */
+   void init_cluster (const region *base_reg);
+ 
+   /* Lazily mark the cluster containing REG as being reachable, recursively
+      adding clusters reachable from REG's cluster.  */
+   void add (const region *reg, bool is_mutable);
+ 
+   static void handle_sval_cb (const svalue *sval,
+ 			      reachable_regions *this_ptr);
+ 
+   /* Add SVAL.  If it is a pointer, add the pointed-to region.  */
+   void handle_sval (const svalue *sval);
+ 
+   /* Add SVAL.  If it is a pointer, add the pointed-to region.
+      Use PARAM_TYPE for determining mutability.  */
+   void handle_parm (const svalue *sval, tree param_type);
+ 
+   /* Update the store to mark the clusters that were found to be mutable
+      as having escaped.
+      Notify CTXT about escaping function_decls.  */
+   void mark_escaped_clusters (region_model_context *ctxt);
+ 
+   /* Iteration over reachable base regions.  */
+   hash_set<const region *>::iterator begin ()
+   {
+     return m_reachable_base_regs.begin ();
+   }
+   hash_set<const region *>::iterator end ()
+   {
+     return m_reachable_base_regs.end ();
+   }
+ 
+   svalue_set::iterator begin_reachable_svals ()
+   {
+     return m_reachable_svals.begin ();
+   }
+   svalue_set::iterator end_reachable_svals ()
+   {
+     return m_reachable_svals.end ();
+   }
+   svalue_set::iterator begin_mutable_svals ()
+   {
+     return m_mutable_svals.begin ();
+   }
+   svalue_set::iterator end_mutable_svals ()
+   {
+     return m_mutable_svals.end ();
+   }
+ 
+   void dump_to_pp (pretty_printer *pp) const;
+ 
+   DEBUG_FUNCTION void dump () const;
+ 
+ private:
+   region_model *m_model;
+   store *m_store;
+ 
+   /* The base regions already seen.  */
+   hash_set<const region *> m_reachable_base_regs;
+ 
+   /* The base regions that can be changed (accessed via non-const pointers).  */
+   hash_set<const region *> m_mutable_base_regs;
+ 
+   /* svalues that were passed as const pointers, so e.g. couldn't have
+      been freed (but could have e.g. had "close" called on them if an
+      int file-descriptor).  */
+   svalue_set m_reachable_svals;
+   /* svalues that were passed as non-const pointers, so e.g. could have
+      been freed.  */
+   svalue_set m_mutable_svals;
+ };
+ 
+ } // namespace ana
+ 
+ #endif /* GCC_ANALYZER_REGION_MODEL_REACHABILITY_H */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/region-model.cc gcc-11.1.0/gcc/analyzer/region-model.cc
*** gcc-10.3.0/gcc/analyzer/region-model.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/region-model.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Classes for modeling the state of memory.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for modeling the state of memory.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 42,47 ****
--- 42,48 ----
  #include "bitmap.h"
  #include "selftest.h"
  #include "function.h"
+ #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "ordered-hash-map.h"
*************** along with GCC; see the file COPYING3.
*** 51,56 ****
--- 52,60 ----
  #include "digraph.h"
  #include "analyzer/supergraph.h"
  #include "sbitmap.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "analyzer/constraint-manager.h"
  #include "diagnostic-event-id.h"
*************** along with GCC; see the file COPYING3.
*** 58,65 ****
--- 62,71 ----
  #include "diagnostic-event-id.h"
  #include "analyzer/sm.h"
  #include "analyzer/pending-diagnostic.h"
+ #include "analyzer/region-model-reachability.h"
  #include "analyzer/analyzer-selftests.h"
  #include "stor-layout.h"
+ #include "attribs.h"
  
  #if ENABLE_ANALYZER
  
*************** namespace ana {
*** 68,74 ****
  /* Dump T to PP in language-independent form, for debugging/logging/dumping
     purposes.  */
  
! static void
  dump_tree (pretty_printer *pp, tree t)
  {
    dump_generic_node (pp, t, 0, TDF_SLIM, 0);
--- 74,80 ----
  /* Dump T to PP in language-independent form, for debugging/logging/dumping
     purposes.  */
  
! void
  dump_tree (pretty_printer *pp, tree t)
  {
    dump_generic_node (pp, t, 0, TDF_SLIM, 0);
*************** dump_quoted_tree (pretty_printer *pp, tr
*** 96,102 ****
     Ideally pp_printf could be made to be reentrant, but in the meantime
     this function provides a workaround.  */
  
! static void
  print_quoted_type (pretty_printer *pp, tree t)
  {
    pp_begin_quote (pp, pp_show_color (pp));
--- 102,108 ----
     Ideally pp_printf could be made to be reentrant, but in the meantime
     this function provides a workaround.  */
  
! void
  print_quoted_type (pretty_printer *pp, tree t)
  {
    pp_begin_quote (pp, pp_show_color (pp));
*************** print_quoted_type (pretty_printer *pp, t
*** 104,3492 ****
    pp_end_quote (pp, pp_show_color (pp));
  }
  
- /* Dump this path_var to PP (which must support %E for trees).
- 
-    Express the stack depth using an "@DEPTH" suffix, so e.g. given
-      void foo (int j);
-      void bar (int i)
-      {
-        foo (i);
-      }
-    then:
-    - the "i" in "bar" would be "(i @ 0)"
-    - the "j" in "foo" would be "(j @ 1)".  */
- 
- void
- path_var::dump (pretty_printer *pp) const
- {
-   if (m_tree == NULL_TREE)
-     pp_string (pp, "NULL");
-   if (CONSTANT_CLASS_P (m_tree))
-     pp_printf (pp, "%qE", m_tree);
-   else
-     pp_printf (pp, "(%qE @ %i)", m_tree, m_stack_depth);
- }
- 
- /* For use in printing a comma-separated list.  */
- 
- static void
- dump_separator (pretty_printer *pp, bool *is_first)
- {
-   if (!*is_first)
-     pp_string (pp, ", ");
-   *is_first = false;
- }
- 
- /* Concrete subclass of constraint_manager that wires it up to a region_model
-    (whilst allowing the constraint_manager and region_model to be somewhat
-    at arms length).
-    TODO: revisit this; maybe put the region_model * into the constraint_manager
-    base class.  */
- 
- class impl_constraint_manager : public constraint_manager
- {
-  public:
-   impl_constraint_manager (region_model *model)
-   : constraint_manager (),
-     m_model (model)
-   {}
- 
-   impl_constraint_manager (const impl_constraint_manager &other,
- 			   region_model *model)
-   : constraint_manager (other),
-     m_model (model)
-   {}
- 
-   constraint_manager *clone (region_model *model) const
-   {
-     return new impl_constraint_manager (*this, model);
-   }
- 
-   tree maybe_get_constant (svalue_id sid) const FINAL OVERRIDE
-   {
-     svalue *svalue = m_model->get_svalue (sid);
-     return svalue->maybe_get_constant ();
-   }
- 
-   svalue_id get_sid_for_constant (tree cst) const FINAL OVERRIDE
-   {
-     gcc_assert (CONSTANT_CLASS_P (cst));
-     return m_model->get_rvalue (cst, NULL);
-   }
- 
-   int get_num_svalues () const FINAL OVERRIDE
-   {
-     return m_model->get_num_svalues ();
-   }
- 
-  private:
-   region_model *m_model;
- };
- 
- /* class svalue_id.  */
- 
- /* Print this svalue_id to PP.  */
- 
- void
- svalue_id::print (pretty_printer *pp) const
- {
-   if (null_p ())
-     pp_printf (pp, "null");
-   else
-     pp_printf (pp, "sv%i", m_idx);
- }
- 
- /* Print this svalue_id in .dot format to PP.  */
- 
- void
- svalue_id::dump_node_name_to_pp (pretty_printer *pp) const
- {
-   gcc_assert (!null_p ());
-   pp_printf (pp, "svalue_%i", m_idx);
- }
- 
- /* Assert that this object is valid (w.r.t. MODEL).  */
- 
- void
- svalue_id::validate (const region_model &model) const
- {
-   gcc_assert (null_p () || m_idx < (int)model.get_num_svalues ());
- }
- 
- /* class region_id.  */
- 
- /* Print this region_id to PP.  */
- 
- void
- region_id::print (pretty_printer *pp) const
- {
-   if (null_p ())
-     pp_printf (pp, "null");
-   else
-     pp_printf (pp, "r%i", m_idx);
- }
- 
- /* Print this region_id in .dot format to PP.  */
- 
- void
- region_id::dump_node_name_to_pp (pretty_printer *pp) const
- {
-   gcc_assert (!null_p ());
-   pp_printf (pp, "region_%i", m_idx);
- }
- 
- /* Assert that this object is valid (w.r.t. MODEL).  */
- 
- void
- region_id::validate (const region_model &model) const
- {
-   gcc_assert (null_p () || m_idx < (int)model.get_num_regions ());
- }
- 
- /* class region_id_set.  */
- 
- region_id_set::region_id_set (const region_model *model)
- : m_bitmap (model->get_num_regions ())
- {
-   bitmap_clear (m_bitmap);
- }
- 
- /* class svalue_id_set.  */
- 
- svalue_id_set::svalue_id_set ()
- : m_bitmap (NULL)
- {
-   bitmap_clear (m_bitmap);
- }
- 
- /* class svalue and its various subclasses.  */
- 
- /* class svalue.  */
- 
- /* svalue's equality operator.  Most of the work is done by the
-    a "compare_fields" implementation on each subclass.  */
- 
- bool
- svalue::operator== (const svalue &other) const
- {
-   enum svalue_kind this_kind = get_kind ();
-   enum svalue_kind other_kind = other.get_kind ();
-   if (this_kind != other_kind)
-     return false;
- 
-   if (m_type != other.m_type)
-     return false;
- 
-   switch (this_kind)
-     {
-     default:
-       gcc_unreachable ();
-     case SK_REGION:
-       {
- 	const region_svalue &this_sub
- 	  = (const region_svalue &)*this;
- 	const region_svalue &other_sub
- 	  = (const region_svalue &)other;
- 	return this_sub.compare_fields (other_sub);
-       }
-       break;
-     case SK_CONSTANT:
-       {
- 	const constant_svalue &this_sub
- 	  = (const constant_svalue &)*this;
- 	const constant_svalue &other_sub
- 	  = (const constant_svalue &)other;
- 	return this_sub.compare_fields (other_sub);
-       }
-       break;
-     case SK_UNKNOWN:
-       {
- 	const unknown_svalue &this_sub
- 	  = (const unknown_svalue &)*this;
- 	const unknown_svalue &other_sub
- 	  = (const unknown_svalue &)other;
- 	return this_sub.compare_fields (other_sub);
-       }
-       break;
-     case SK_POISONED:
-       {
- 	const poisoned_svalue &this_sub
- 	  = (const poisoned_svalue &)*this;
- 	const poisoned_svalue &other_sub
- 	  = (const poisoned_svalue &)other;
- 	return this_sub.compare_fields (other_sub);
-       }
-       break;
-     case SK_SETJMP:
-       {
- 	const setjmp_svalue &this_sub
- 	  = (const setjmp_svalue &)*this;
- 	const setjmp_svalue &other_sub
- 	  = (const setjmp_svalue &)other;
- 	return this_sub.compare_fields (other_sub);
-       }
-       break;
-     }
- }
- 
- /* Generate a hash value for this svalue.  Most of the work is done by the
-    add_to_hash vfunc.  */
- 
- hashval_t
- svalue::hash () const
- {
-   inchash::hash hstate;
-   if (m_type)
-     hstate.add_int (TYPE_UID (m_type));
-   add_to_hash (hstate);
-   return hstate.end ();
- }
- 
- /* Print this svalue and its ID to PP.  */
- 
- void
- svalue::print (const region_model &model,
- 	       svalue_id this_sid,
- 	       pretty_printer *pp) const
- {
-   this_sid.print (pp);
-   pp_string (pp, ": {");
- 
-   if (m_type)
-     {
-       gcc_assert (TYPE_P (m_type));
-       pp_string (pp, "type: ");
-       print_quoted_type (pp, m_type);
-       pp_string (pp, ", ");
-     }
- 
-   /* vfunc.  */
-   print_details (model, this_sid, pp);
- 
-   pp_string (pp, "}");
- }
- 
- /* Dump this svalue in the form of a .dot record to PP.  */
- 
- void
- svalue::dump_dot_to_pp (const region_model &model,
- 			svalue_id this_sid,
- 			pretty_printer *pp) const
- {
-   this_sid.dump_node_name_to_pp (pp);
-   pp_printf (pp, " [label=\"");
-   pp_write_text_to_stream (pp);
-   this_sid.print (pp);
-   pp_string (pp, ": {");
-   print (model, this_sid, pp);
-   pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/false);
-   pp_string (pp, "}\"];");
-   pp_newline (pp);
- }
- 
- /* Base implementation of svalue::remap_region_ids vfunc.  */
- 
- void
- svalue::remap_region_ids (const region_id_map &)
- {
-   /* Empty.  */
- }
- 
- /* Base implementation of svalue::walk_for_canonicalization vfunc.  */
- 
- void
- svalue::walk_for_canonicalization (canonicalization *) const
- {
-   /* Empty.  */
- }
- 
- /* Base implementation of svalue::get_child_sid vfunc.  */
- 
- svalue_id
- svalue::get_child_sid (region *parent ATTRIBUTE_UNUSED,
- 		       region *child,
- 		       region_model &model,
- 		       region_model_context *ctxt ATTRIBUTE_UNUSED)
- {
-   svalue *new_child_value = clone ();
-   if (child->get_type ())
-     new_child_value->m_type = child->get_type ();
-   svalue_id new_child_sid = model.add_svalue (new_child_value);
-   return new_child_sid;
- }
- 
- /* If this svalue is a constant_svalue, return the underlying tree constant.
-    Otherwise return NULL_TREE.  */
- 
- tree
- svalue::maybe_get_constant () const
- {
-   if (const constant_svalue *cst_sval = dyn_cast_constant_svalue ())
-     return cst_sval->get_constant ();
-   else
-     return NULL_TREE;
- }
- 
- /* class region_svalue : public svalue.  */
- 
- /* Compare the fields of this region_svalue with OTHER, returning true
-    if they are equal.
-    For use by svalue::operator==.  */
- 
- bool
- region_svalue::compare_fields (const region_svalue &other) const
- {
-   return m_rid == other.m_rid;
- }
- 
- /* Implementation of svalue::add_to_hash vfunc for region_svalue.  */
- 
- void
- region_svalue::add_to_hash (inchash::hash &hstate) const
- {
-   inchash::add (m_rid, hstate);
- }
- 
- /* Implementation of svalue::print_details vfunc for region_svalue.  */
- 
- void
- region_svalue::print_details (const region_model &model ATTRIBUTE_UNUSED,
- 			      svalue_id this_sid ATTRIBUTE_UNUSED,
- 			      pretty_printer *pp) const
- {
-   if (m_rid.null_p ())
-     pp_string (pp, "NULL");
-   else
-     {
-       pp_string (pp, "&");
-       m_rid.print (pp);
-     }
- }
- 
- /* Implementation of svalue::dump_dot_to_pp for region_svalue.  */
- 
- void
- region_svalue::dump_dot_to_pp (const region_model &model,
- 			       svalue_id this_sid,
- 			       pretty_printer *pp) const
- {
-   svalue::dump_dot_to_pp (model, this_sid, pp);
- 
-   /* If non-NULL, add an edge to the pointed-to region.  */
-   if (!m_rid.null_p ())
-     {
-       this_sid.dump_node_name_to_pp (pp);
-       pp_string (pp, " -> ");
-       m_rid.dump_node_name_to_pp (pp);
-       pp_string (pp, ";");
-       pp_newline (pp);
-   }
- }
- 
- /* Implementation of svalue::remap_region_ids vfunc for region_svalue.  */
- 
- void
- region_svalue::remap_region_ids (const region_id_map &map)
- {
-   map.update (&m_rid);
- }
- 
- /* Merge REGION_SVAL_A and REGION_SVAL_B using MERGER, writing the result
-    into *MERGED_SID.  */
- 
- void
- region_svalue::merge_values (const region_svalue &region_sval_a,
- 			     const region_svalue &region_sval_b,
- 			     svalue_id *merged_sid,
- 			     tree type,
- 			     model_merger *merger)
- {
-   region_id a_rid = region_sval_a.get_pointee ();
-   region_id b_rid = region_sval_b.get_pointee ();
- 
-   /* Both are non-NULL. */
-   gcc_assert (!a_rid.null_p () && !b_rid.null_p ());
- 
-   /* Have these ptr-values already been merged?  */
- 
-   region_id a_rid_in_m
-     = merger->m_map_regions_from_a_to_m.get_dst_for_src (a_rid);
-   region_id b_rid_in_m
-     = merger->m_map_regions_from_b_to_m.get_dst_for_src (b_rid);
- 
-   /* "null_p" here means "we haven't seen this ptr-value before".
-      If we've seen one but not the other, or we have different
-      regions, then the merged ptr has to be "unknown".  */
-   if (a_rid_in_m != b_rid_in_m)
-     {
-       svalue *merged_sval = new unknown_svalue (type);
-       *merged_sid = merger->m_merged_model->add_svalue (merged_sval);
-       return;
-     }
- 
-   /* Have we seen this yet?  If so, reuse the value.  */
-   if (!a_rid_in_m.null_p ())
-     {
-       *merged_sid
- 	= merger->m_merged_model->get_or_create_ptr_svalue (type, a_rid_in_m);
-       return;
-     }
- 
-   /* Otherwise we have A/B regions that haven't been referenced yet.  */
- 
-   /* Are the regions the "same", when seen from the tree point-of-view.
-      If so, create a merged pointer to it.  */
-   path_var pv_a = merger->m_model_a->get_representative_path_var (a_rid);
-   path_var pv_b = merger->m_model_b->get_representative_path_var (b_rid);
-   if (pv_a.m_tree
-       && pv_a == pv_b)
-     {
-       region_id merged_pointee_rid
- 	= merger->m_merged_model->get_lvalue (pv_a, NULL);
-       *merged_sid
- 	= merger->m_merged_model->get_or_create_ptr_svalue (type,
- 							    merged_pointee_rid);
-       merger->record_regions (a_rid, b_rid, merged_pointee_rid);
-       return;
-     }
- 
-   /* Handle an A/B pair of ptrs that both point at heap regions.
-      If they both have a heap region in the merger model, merge them.  */
-   region *region_a = merger->m_model_a->get_region (a_rid);
-   region *region_b = merger->m_model_b->get_region (b_rid);
-   region_id a_parent_rid = region_a->get_parent ();
-   region_id b_parent_rid = region_b->get_parent ();
-   region *parent_region_a = merger->m_model_a->get_region (a_parent_rid);
-   region *parent_region_b = merger->m_model_b->get_region (b_parent_rid);
-   if (parent_region_a
-       && parent_region_b
-       && parent_region_a->get_kind () == RK_HEAP
-       && parent_region_b->get_kind () == RK_HEAP)
-     {
- 	/* We have an A/B pair of ptrs that both point at heap regions.  */
- 	/* presumably we want to see if each A/B heap region already
- 	   has a merged region, and, if so, is it the same one.  */
- 	// This check is above
- 
- 	region_id merged_pointee_rid
- 	  = merger->m_merged_model->add_new_malloc_region ();
- 	*merged_sid
- 	  = merger->m_merged_model->get_or_create_ptr_svalue
- 	     (type, merged_pointee_rid);
- 	merger->record_regions (a_rid, b_rid, merged_pointee_rid);
- 	return;
-     }
- 
-   /* Two different non-NULL pointers?  Merge to unknown.  */
-   svalue *merged_sval = new unknown_svalue (type);
-   *merged_sid = merger->m_merged_model->add_svalue (merged_sval);
-   return;
- }
- 
- /* Implementation of svalue::walk_for_canonicalization vfunc for
-    region_svalue.  */
- 
- void
- region_svalue::walk_for_canonicalization (canonicalization *c) const
- {
-   c->walk_rid (m_rid);
- }
- 
- /* Evaluate the condition LHS OP RHS.
-    Subroutine of region_model::eval_condition for when we have a pair of
-    pointers.  */
- 
- tristate
- region_svalue::eval_condition (region_svalue *lhs,
- 			       enum tree_code op,
- 			       region_svalue *rhs)
- {
-   /* See if they point to the same region.  */
-   /* TODO: what about child regions where the child is the first child
-      (or descendent)?  */
-   region_id lhs_rid = lhs->get_pointee ();
-   region_id rhs_rid = rhs->get_pointee ();
-   switch (op)
-     {
-     default:
-       gcc_unreachable ();
- 
-     case EQ_EXPR:
-       if (lhs_rid == rhs_rid)
- 	return tristate::TS_TRUE;
-       else
- 	return tristate::TS_FALSE;
-       break;
- 
-     case NE_EXPR:
-       if (lhs_rid != rhs_rid)
- 	return tristate::TS_TRUE;
-       else
- 	return tristate::TS_FALSE;
-       break;
- 
-     case GE_EXPR:
-     case LE_EXPR:
-       if (lhs_rid == rhs_rid)
- 	return tristate::TS_TRUE;
-       break;
- 
-     case GT_EXPR:
-     case LT_EXPR:
-       if (lhs_rid == rhs_rid)
- 	return tristate::TS_FALSE;
-       break;
-     }
- 
-   return tristate::TS_UNKNOWN;
- }
- 
- /* class constant_svalue : public svalue.  */
- 
- /* Compare the fields of this constant_svalue with OTHER, returning true
-    if they are equal.
-    For use by svalue::operator==.  */
- 
- bool
- constant_svalue::compare_fields (const constant_svalue &other) const
- {
-   return m_cst_expr == other.m_cst_expr;
- }
- 
- /* Implementation of svalue::add_to_hash vfunc for constant_svalue.  */
- 
- void
- constant_svalue::add_to_hash (inchash::hash &hstate) const
- {
-   inchash::add_expr (m_cst_expr, hstate);
- }
- 
- /* Merge the CST_SVAL_A and CST_SVAL_B using MERGER, writing the id of
-    the resulting svalue into *MERGED_SID.  */
- 
- void
- constant_svalue::merge_values (const constant_svalue &cst_sval_a,
- 			       const constant_svalue &cst_sval_b,
- 			       svalue_id *merged_sid,
- 			       model_merger *merger)
- {
-   tree cst_a = cst_sval_a.get_constant ();
-   tree cst_b = cst_sval_b.get_constant ();
-   svalue *merged_sval;
-   if (cst_a == cst_b)
-     {
-       /* If they are the same constant, merge as that constant value.  */
-       merged_sval = new constant_svalue (cst_a);
-     }
-   else
-     {
-       /* Otherwise, we have two different constant values.
- 	 Merge as an unknown value.
- 	 TODO: impose constraints on the value?
- 	 (maybe just based on A, to avoid infinite chains)  */
-       merged_sval = new unknown_svalue (TREE_TYPE (cst_a));
-     }
-   *merged_sid = merger->m_merged_model->add_svalue (merged_sval);
- }
- 
- /* Evaluate the condition LHS OP RHS.
-    Subroutine of region_model::eval_condition for when we have a pair of
-    constants.  */
- 
- tristate
- constant_svalue::eval_condition (constant_svalue *lhs,
- 				 enum tree_code op,
- 				 constant_svalue *rhs)
- {
-   tree lhs_const = lhs->get_constant ();
-   tree rhs_const = rhs->get_constant ();
- 
-   gcc_assert (CONSTANT_CLASS_P (lhs_const));
-   gcc_assert (CONSTANT_CLASS_P (rhs_const));
- 
-   /* Check for comparable types.  */
-   if (types_compatible_p (TREE_TYPE (lhs_const), TREE_TYPE (rhs_const)))
-     {
-       tree comparison
- 	= fold_binary (op, boolean_type_node, lhs_const, rhs_const);
-       if (comparison == boolean_true_node)
- 	return tristate (tristate::TS_TRUE);
-       if (comparison == boolean_false_node)
- 	return tristate (tristate::TS_FALSE);
-     }
-   return tristate::TS_UNKNOWN;
- }
- 
- /* Implementation of svalue::print_details vfunc for constant_svalue.  */
- 
- void
- constant_svalue::print_details (const region_model &model ATTRIBUTE_UNUSED,
- 				svalue_id this_sid ATTRIBUTE_UNUSED,
- 				pretty_printer *pp) const
- {
-   pp_printf (pp, "%qE", m_cst_expr);
- }
- 
- /* Implementation of svalue::get_child_sid vfunc for constant_svalue.  */
- 
- svalue_id
- constant_svalue::get_child_sid (region *parent ATTRIBUTE_UNUSED,
- 				region *child,
- 				region_model &model,
- 				region_model_context *ctxt ATTRIBUTE_UNUSED)
- {
-   /* TODO: handle the all-zeroes case by returning an all-zeroes of the
-      child type.  */
- 
-   /* Otherwise, we don't have a good way to get a child value out of a
-      constant.
- 
-      Handle this case by using an unknown value.  */
-   svalue *unknown_sval = new unknown_svalue (child->get_type ());
-   return model.add_svalue (unknown_sval);
- }
- 
- /* class unknown_svalue : public svalue.  */
- 
- /* Compare the fields of this unknown_svalue with OTHER, returning true
-    if they are equal.
-    For use by svalue::operator==.  */
- 
- bool
- unknown_svalue::compare_fields (const unknown_svalue &) const
- {
-   /* I *think* we want to return true here, in that when comparing
-      two region models, we want two peer unknown_svalue instances
-      to be the "same".  */
-   return true;
- }
- 
- /* Implementation of svalue::add_to_hash vfunc for unknown_svalue.  */
- 
- void
- unknown_svalue::add_to_hash (inchash::hash &) const
- {
-   /* Empty.  */
- }
- 
- /* Implementation of svalue::print_details vfunc for unknown_svalue.  */
- 
- void
- unknown_svalue::print_details (const region_model &model ATTRIBUTE_UNUSED,
- 			       svalue_id this_sid ATTRIBUTE_UNUSED,
- 			       pretty_printer *pp) const
- {
-   pp_string (pp, "unknown");
- }
- 
- /* Get a string for KIND for use in debug dumps.  */
- 
- const char *
- poison_kind_to_str (enum poison_kind kind)
- {
-   switch (kind)
-     {
-     default:
-       gcc_unreachable ();
-     case POISON_KIND_FREED:
-       return "freed";
-     case POISON_KIND_POPPED_STACK:
-       return "popped stack";
-     }
- }
- 
- /* class poisoned_svalue : public svalue.  */
- 
- /* Compare the fields of this poisoned_svalue with OTHER, returning true
-    if they are equal.
-    For use by svalue::operator==.  */
- 
- bool
- poisoned_svalue::compare_fields (const poisoned_svalue &other) const
- {
-   return m_kind == other.m_kind;
- }
- 
- /* Implementation of svalue::add_to_hash vfunc for poisoned_svalue.  */
- 
- void
- poisoned_svalue::add_to_hash (inchash::hash &hstate) const
- {
-   hstate.add_int (m_kind);
- }
- 
- /* Implementation of svalue::print_details vfunc for poisoned_svalue.  */
- 
- void
- poisoned_svalue::print_details (const region_model &model ATTRIBUTE_UNUSED,
- 				svalue_id this_sid ATTRIBUTE_UNUSED,
- 				pretty_printer *pp) const
- {
-   pp_printf (pp, "poisoned: %s", poison_kind_to_str (m_kind));
- }
- 
- /* class setjmp_svalue's implementation is in engine.cc, so that it can use
-    the declaration of exploded_node.  */
- 
- /* class region and its various subclasses.  */
- 
- /* Get a string for KIND for use in debug dumps.  */
- 
- const char *
- region_kind_to_str (enum region_kind kind)
- {
-   switch (kind)
-     {
-     default:
-       gcc_unreachable ();
-     case RK_PRIMITIVE:
-       return "primitive";
-     case RK_STRUCT:
-       return "struct";
-     case RK_UNION:
-       return "union";
-     case RK_ARRAY:
-       return "array";
-     case RK_FRAME:
-       return "frame";
-     case RK_GLOBALS:
-       return "globals";
-     case RK_CODE:
-       return "code";
-     case RK_FUNCTION:
-       return "function";
-     case RK_STACK:
-       return "stack";
-     case RK_HEAP:
-       return "heap";
-     case RK_ROOT:
-       return "root";
-     case RK_SYMBOLIC:
-       return "symbolic";
-     }
- }
- 
- /* class region.  */
- 
- /* Equality operator for region.
-    After comparing base class fields and kind, the rest of the
-    comparison is handled off to a "compare_fields" member function
-    specific to the appropriate subclass.  */
- 
- bool
- region::operator== (const region &other) const
- {
-   if (m_parent_rid != other.m_parent_rid)
-     return false;
-   if (m_sval_id != other.m_sval_id)
-     return false;
-   if (m_type != other.m_type)
-     return false;
- 
-   enum region_kind this_kind = get_kind ();
-   enum region_kind other_kind = other.get_kind ();
-   if (this_kind != other_kind)
-     return false;
- 
-   /* Compare views.  */
-   if (m_view_rids.length () != other.m_view_rids.length ())
-     return false;
-   int i;
-   region_id *rid;
-   FOR_EACH_VEC_ELT (m_view_rids, i, rid)
-     if (! (*rid == other.m_view_rids[i]))
-       return false;
- 
-   switch (this_kind)
-     {
-     default:
-       gcc_unreachable ();
-     case RK_PRIMITIVE:
-       {
- #if 1
- 	return true;
- #else
- 	const primitive_region &this_sub
- 	  = (const primitive_region &)*this;
- 	const primitive_region &other_sub
- 	  = (const primitive_region &)other;
- 	return this_sub.compare_fields (other_sub);
- #endif
-       }
-     case RK_STRUCT:
-       {
- 	const struct_region &this_sub
- 	  = (const struct_region &)*this;
- 	const struct_region &other_sub
- 	  = (const struct_region &)other;
- 	return this_sub.compare_fields (other_sub);
-       }
-     case RK_UNION:
-       {
- 	const union_region &this_sub
- 	  = (const union_region &)*this;
- 	const union_region &other_sub
- 	  = (const union_region &)other;
- 	return this_sub.compare_fields (other_sub);
-       }
-     case RK_ARRAY:
-       {
- 	const array_region &this_sub
- 	  = (const array_region &)*this;
- 	const array_region &other_sub
- 	  = (const array_region &)other;
- 	return this_sub.compare_fields (other_sub);
-       }
-     case RK_FRAME:
-       {
- 	const frame_region &this_sub
- 	  = (const frame_region &)*this;
- 	const frame_region &other_sub
- 	  = (const frame_region &)other;
- 	return this_sub.compare_fields (other_sub);
-       }
-     case RK_GLOBALS:
-       {
- 	const globals_region &this_sub
- 	  = (const globals_region &)*this;
- 	const globals_region &other_sub
- 	  = (const globals_region &)other;
- 	return this_sub.compare_fields (other_sub);
-       }
-     case RK_CODE:
-       {
- 	const code_region &this_sub
- 	  = (const code_region &)*this;
- 	const code_region &other_sub
- 	  = (const code_region &)other;
- 	return this_sub.compare_fields (other_sub);
-       }
-     case RK_FUNCTION:
-       {
- 	const function_region &this_sub
- 	  = (const function_region &)*this;
- 	const function_region &other_sub
- 	  = (const function_region &)other;
- 	return this_sub.compare_fields (other_sub);
-       }
-     case RK_STACK:
-       {
- 	const stack_region &this_sub
- 	  = (const stack_region &)*this;
- 	const stack_region &other_sub
- 	  = (const stack_region &)other;
- 	return this_sub.compare_fields (other_sub);
-       }
-     case RK_ROOT:
-       {
- 	const root_region &this_sub
- 	  = (const root_region &)*this;
- 	const root_region &other_sub
- 	  = (const root_region &)other;
- 	return this_sub.compare_fields (other_sub);
-       }
-     case RK_SYMBOLIC:
-       {
- 	const symbolic_region &this_sub
- 	  = (const symbolic_region &)*this;
- 	const symbolic_region &other_sub
- 	  = (const symbolic_region &)other;
- 	return this_sub.compare_fields (other_sub);
-       }
-     case RK_HEAP:
-       {
- 	const heap_region &this_sub
- 	  = (const heap_region &)*this;
- 	const heap_region &other_sub
- 	  = (const heap_region &)other;
- 	return this_sub.compare_fields (other_sub);
-       }
-     }
- }
- 
- /* Get the parent region of this region.  */
- 
- region *
- region::get_parent_region (const region_model &model) const
- {
-   return model.get_region (m_parent_rid);
- }
- 
- /* Set this region's value to RHS_SID (or potentially a variant of it,
-    for some kinds of casts).  */
- 
- void
- region::set_value (region_model &model, region_id this_rid, svalue_id rhs_sid,
- 		   region_model_context *ctxt)
- {
-   /* Handle some kinds of casting.  */
-   if (m_type)
-     {
-       svalue *sval = model.get_svalue (rhs_sid);
-       if (sval->get_type ())
- 	rhs_sid = model.maybe_cast (m_type, rhs_sid, ctxt);
- 
-       sval = model.get_svalue (rhs_sid);
-       if (sval->get_type ())
- 	gcc_assert (m_type == sval->get_type ());
-     }
- 
-   m_sval_id = rhs_sid;
- 
-   /* Update views.
-      If this is a view, it becomes its parent's active view.
-      If there was already an active views, invalidate its value; otherwise
-      if the parent itself had a value, invalidate it.
-      If it's not a view, then deactivate any view that is active on this
-      region.  */
-   {
-     if (m_is_view)
-       become_active_view (model, this_rid);
-     else
-       {
- 	deactivate_any_active_view (model);
- 	gcc_assert (m_active_view_rid.null_p ());
-       }
-   }
- }
- 
- /* Make this region (with id THIS_RID) the "active" view of its parent.
-    Any other active view has its value set to "unknown" and descendent values
-    cleared.
-    If there wasn't an active view, then set the parent's value to unknown, and
-    clear its descendent values (apart from this view).  */
- 
- void
- region::become_active_view (region_model &model, region_id this_rid)
- {
-   gcc_assert (m_is_view);
- 
-   region *parent_reg = model.get_region (m_parent_rid);
-   gcc_assert (parent_reg);
- 
-   region_id old_active_view_rid = parent_reg->m_active_view_rid;
- 
-   if (old_active_view_rid == this_rid)
-     {
-       /* Already the active view: do nothing.  */
-       return;
-     }
- 
-   /* We have a change of active view.  */
-   parent_reg->m_active_view_rid = this_rid;
- 
-   if (old_active_view_rid.null_p ())
-     {
-       /* No previous active view, but the parent and its other children
- 	 might have values.
- 	 If so, invalidate those values - but not that of the new view.  */
-       region_id_set below_region (&model);
-       model.get_descendents (m_parent_rid, &below_region, this_rid);
-       for (unsigned i = 0; i < model.get_num_regions (); i++)
- 	{
- 	  region_id rid (region_id::from_int (i));
- 	  if (below_region.region_p (rid))
- 	    {
- 	      region *other_reg = model.get_region (rid);
- 	      other_reg->m_sval_id = svalue_id::null ();
- 	    }
- 	}
-       region *parent = model.get_region (m_parent_rid);
-       parent->m_sval_id
- 	= model.add_svalue (new unknown_svalue (parent->get_type ()));
-     }
-   else
-     {
-       /* If there was an active view, invalidate it.  */
-       region *old_active_view = model.get_region (old_active_view_rid);
-       old_active_view->deactivate_view (model, old_active_view_rid);
-     }
- }
- 
- /* If this region (with id THIS_RID) has an active view, deactivate it,
-    clearing m_active_view_rid.  */
- 
- void
- region::deactivate_any_active_view (region_model &model)
- {
-   if (m_active_view_rid.null_p ())
-     return;
-   region *view = model.get_region (m_active_view_rid);
-   view->deactivate_view (model, m_active_view_rid);
-   m_active_view_rid = region_id::null ();
- }
- 
- /* Clear any values for regions below THIS_RID.
-    Set the view's value to unknown.  */
- 
- void
- region::deactivate_view (region_model &model, region_id this_view_rid)
- {
-   gcc_assert (is_view_p ());
- 
-   /* Purge values from old_active_this_view_rid and all its
-      descendents.  Potentially we could use a poison value
-      for this, but let's use unknown for now.  */
-   region_id_set below_view (&model);
-   model.get_descendents (this_view_rid, &below_view, region_id::null ());
- 
-   for (unsigned i = 0; i < model.get_num_regions (); i++)
-     {
-       region_id rid (region_id::from_int (i));
-       if (below_view.region_p (rid))
- 	{
- 	  region *other_reg = model.get_region (rid);
- 	  other_reg->m_sval_id = svalue_id::null ();
- 	}
-     }
- 
-   m_sval_id = model.add_svalue (new unknown_svalue (get_type ()));
- }
- 
- /* Get a value for this region, either its value if it has one,
-    or, failing that, "inherit" a value from first ancestor with a
-    non-null value.
- 
-    For example, when getting the value for a local variable within
-    a stack frame that doesn't have one, the frame doesn't have a value
-    either, but the stack as a whole will have an "uninitialized" poison
-    value, so inherit that.  */
- 
- svalue_id
- region::get_value (region_model &model, bool non_null,
- 		   region_model_context *ctxt)
- {
-   /* If this region has a value, use it. */
-   if (!m_sval_id.null_p ())
-     return m_sval_id;
- 
-   /* Otherwise, "inherit" value from first ancestor with a
-      non-null value. */
- 
-   region *parent = model.get_region (m_parent_rid);
-   if (parent)
-     {
-       svalue_id inherited_sid
- 	= parent->get_inherited_child_sid (this, model, ctxt);
-       if (!inherited_sid.null_p ())
- 	return inherited_sid;
-     }
- 
-   /* If a non-null value has been requested, then generate
-      a new unknown value.  Store it, so that repeated reads from this
-      region will yield the same unknown value.  */
-   if (non_null)
-     {
-       svalue_id unknown_sid = model.add_svalue (new unknown_svalue (m_type));
-       m_sval_id = unknown_sid;
-       return unknown_sid;
-     }
- 
-   return svalue_id::null ();
- }
- 
- /* Get a value for CHILD, inheriting from this region.
- 
-    Recurse, so this region will inherit a value if it doesn't already
-    have one.  */
- 
- svalue_id
- region::get_inherited_child_sid (region *child,
- 				 region_model &model,
- 				 region_model_context *ctxt)
- {
-   if (m_sval_id.null_p ())
-     {
-       /* Recurse.  */
-       if (!m_parent_rid.null_p ())
- 	{
- 	  region *parent = model.get_region (m_parent_rid);
- 	  m_sval_id = parent->get_inherited_child_sid (this, model, ctxt);
- 	}
-     }
- 
-   if (!m_sval_id.null_p ())
-     {
-       /* Clone the parent's value, so that attempts to update it
- 	 (e.g giving a specific value to an inherited "uninitialized"
- 	 value) touch the child, and not the parent.  */
-       svalue *this_value = model.get_svalue (m_sval_id);
-       svalue_id new_child_sid
- 	= this_value->get_child_sid (this, child, model, ctxt);
-       if (ctxt)
- 	ctxt->on_inherited_svalue (m_sval_id, new_child_sid);
-       child->m_sval_id = new_child_sid;
-       return new_child_sid;
-     }
- 
-   return svalue_id::null ();
- }
- 
- /* Copy from SRC_RID to DST_RID, using CTXT for any issues that occur.
-    Copy across any value for the region, and handle structs, unions
-    and arrays recursively.  */
- 
- void
- region_model::copy_region (region_id dst_rid, region_id src_rid,
- 			   region_model_context *ctxt)
- {
-   gcc_assert (!dst_rid.null_p ());
-   gcc_assert (!src_rid.null_p ());
-   if (dst_rid == src_rid)
-     return;
-   region *dst_reg = get_region (dst_rid);
-   region *src_reg = get_region (src_rid);
- 
-   /* Copy across any value for the src region itself.  */
-   svalue_id sid = src_reg->get_value (*this, true, ctxt);
-   set_value (dst_rid, sid, ctxt);
- 
-   if (dst_reg->get_kind () != src_reg->get_kind ())
-     return;
- 
-   /* Copy across child regions for structs, unions, and arrays.  */
-   switch (dst_reg->get_kind ())
-     {
-     case RK_PRIMITIVE:
-       return;
-     case RK_STRUCT:
-       {
- 	struct_region *dst_sub = as_a <struct_region *> (dst_reg);
- 	struct_region *src_sub = as_a <struct_region *> (src_reg);
- 	copy_struct_region (dst_rid, dst_sub, src_sub, ctxt);
-       }
-       return;
-     case RK_UNION:
-       {
- 	union_region *src_sub = as_a <union_region *> (src_reg);
- 	copy_union_region (dst_rid, src_sub, ctxt);
-       }
-       return;
-     case RK_FRAME:
-     case RK_GLOBALS:
-     case RK_CODE:
-     case RK_FUNCTION:
-       return;
-     case RK_ARRAY:
-       {
- 	array_region *dst_sub = as_a <array_region *> (dst_reg);
- 	array_region *src_sub = as_a <array_region *> (src_reg);
- 	copy_array_region (dst_rid, dst_sub, src_sub, ctxt);
-       }
-       return;
-     case RK_STACK:
-     case RK_HEAP:
-     case RK_ROOT:
-     case RK_SYMBOLIC:
-       return;
-     }
- }
- 
- /* Subroutine of region_model::copy_region for copying the child
-    regions for a struct.  */
- 
- void
- region_model::copy_struct_region (region_id dst_rid,
- 				  struct_region *dst_reg,
- 				  struct_region *src_reg,
- 				  region_model_context *ctxt)
- {
-   for (map_region::iterator_t iter = src_reg->begin ();
-        iter != src_reg->end (); ++iter)
-     {
-       tree src_key = (*iter).first;
-       region_id src_field_rid = (*iter).second;
-       region *src_field_reg = get_region (src_field_rid);
-       region_id dst_field_rid
- 	= dst_reg->get_or_create (this, dst_rid, src_key,
- 				  src_field_reg->get_type (), ctxt);
-       copy_region (dst_field_rid, src_field_rid, ctxt);
-     }
- }
- 
- /* Subroutine of region_model::copy_region for copying the active
-    child region for a union.  */
- 
- void
- region_model::copy_union_region (region_id dst_rid,
- 				 union_region *src_reg,
- 				 region_model_context *ctxt)
- {
-   region_id src_active_view_rid = src_reg->get_active_view ();
-   if (src_active_view_rid.null_p ())
-     return;
-   region *src_active_view = get_region (src_active_view_rid);
-   tree type = src_active_view->get_type ();
-   region_id dst_active_view_rid = get_or_create_view (dst_rid, type, ctxt);
-   copy_region (dst_active_view_rid, src_active_view_rid, ctxt);
- }
- 
- /* Subroutine of region_model::copy_region for copying the child
-    regions for an array.  */
- 
- void
- region_model::copy_array_region (region_id dst_rid,
- 				 array_region *dst_reg,
- 				 array_region *src_reg,
- 				 region_model_context *ctxt)
- {
-   for (array_region::iterator_t iter = src_reg->begin ();
-        iter != src_reg->end (); ++iter)
-     {
-       array_region::key_t src_key = (*iter).first;
-       region_id src_field_rid = (*iter).second;
-       region *src_field_reg = get_region (src_field_rid);
-       region_id dst_field_rid
- 	= dst_reg->get_or_create (this, dst_rid, src_key,
- 				  src_field_reg->get_type (), ctxt);
-       copy_region (dst_field_rid, src_field_rid, ctxt);
-     }
- }
- 
- /* Generate a hash value for this region.  The work is done by the
-    add_to_hash vfunc.  */
- 
- hashval_t
- region::hash () const
- {
-   inchash::hash hstate;
-   add_to_hash (hstate);
-   return hstate.end ();
- }
- 
- /* Print a one-liner representation of this region to PP, assuming
-    that this region is within MODEL and its id is THIS_RID.  */
- 
- void
- region::print (const region_model &model,
- 	       region_id this_rid,
- 	       pretty_printer *pp) const
- {
-   this_rid.print (pp);
-   pp_string (pp, ": {");
- 
-   /* vfunc.  */
-   print_fields (model, this_rid, pp);
- 
-   pp_string (pp, "}");
- }
- 
- /* Base class implementation of region::dump_dot_to_pp vfunc.  */
- 
- void
- region::dump_dot_to_pp (const region_model &model,
- 			region_id this_rid,
- 			pretty_printer *pp) const
- {
-   this_rid.dump_node_name_to_pp (pp);
-   pp_printf (pp, " [shape=none,margin=0,style=filled,fillcolor=%s,label=\"",
- 	     "lightgrey");
-   pp_write_text_to_stream (pp);
-   print (model, this_rid, pp);
-   pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/false);
-   pp_string (pp, "\"];");
-   pp_newline (pp);
- 
-   /* Add edge to svalue.  */
-   if (!m_sval_id.null_p ())
-     {
-       this_rid.dump_node_name_to_pp (pp);
-       pp_string (pp, " -> ");
-       m_sval_id.dump_node_name_to_pp (pp);
-       pp_string (pp, ";");
-       pp_newline (pp);
-     }
- 
-   /* Add edge to parent.  */
-   if (!m_parent_rid.null_p ())
-     {
-       this_rid.dump_node_name_to_pp (pp);
-       pp_string (pp, " -> ");
-       m_parent_rid.dump_node_name_to_pp (pp);
-       pp_string (pp, ";");
-       pp_newline (pp);
-     }
- }
- 
- /* Dump a tree-like ASCII-art representation of this region to PP.  */
- 
- void
- region::dump_to_pp (const region_model &model,
- 		    region_id this_rid,
- 		    pretty_printer *pp,
- 		    const char *prefix,
- 		    bool is_last_child) const
- {
-   print (model, this_rid, pp);
-   pp_newline (pp);
- 
-   const char *new_prefix;
-   if (!m_parent_rid.null_p ())
-     new_prefix = ACONCAT ((prefix, is_last_child ? "  " : "|  ", NULL));
-   else
-     new_prefix = prefix;
- 
-   const char *begin_color = colorize_start (pp_show_color (pp), "note");
-   const char *end_color = colorize_stop (pp_show_color (pp));
-   char *field_prefix
-     = ACONCAT ((begin_color, new_prefix, "|:", end_color, NULL));
- 
-   if (!m_sval_id.null_p ())
-     {
-       pp_printf (pp, "%s sval: ", field_prefix);
-       model.get_svalue (m_sval_id)->print (model, m_sval_id, pp);
-       pp_newline (pp);
-     }
-   if (m_type)
-     {
-       pp_printf (pp, "%s type: ", field_prefix);
-       print_quoted_type (pp, m_type);
-       pp_newline (pp);
-     }
- 
-   /* Find the children.  */
- 
-   auto_vec<region_id> child_rids;
-   unsigned i;
-   for (unsigned i = 0; i < model.get_num_regions (); ++i)
-     {
-       region_id rid = region_id::from_int (i);
-       region *child = model.get_region (rid);
-       if (child->m_parent_rid == this_rid)
- 	child_rids.safe_push (rid);
-     }
- 
-   /* Print the children, using dump_child_label to label them.  */
- 
-   region_id *child_rid;
-   FOR_EACH_VEC_ELT (child_rids, i, child_rid)
-     {
-       is_last_child = (i == child_rids.length () - 1);
-       if (!this_rid.null_p ())
- 	{
- 	  const char *tail = is_last_child ? "`-" : "|-";
- 	  pp_printf (pp, "%r%s%s%R", "note", new_prefix, tail);
- 	}
-       dump_child_label (model, this_rid, *child_rid, pp);
-       model.get_region (*child_rid)->dump_to_pp (model, *child_rid, pp,
- 						 new_prefix,
- 						 is_last_child);
-     }
- }
- 
- /* Base implementation of region::dump_child_label vfunc.  */
- 
- void
- region::dump_child_label (const region_model &model,
- 			  region_id this_rid ATTRIBUTE_UNUSED,
- 			  region_id child_rid,
- 			  pretty_printer *pp) const
- {
-   region *child = model.get_region (child_rid);
-   if (child->m_is_view)
-     {
-       gcc_assert (TYPE_P (child->get_type ()));
-       if (m_active_view_rid == child_rid)
- 	pp_string (pp, "active ");
-       else
- 	pp_string (pp, "inactive ");
-       pp_string (pp, "view as ");
-       print_quoted_type (pp, child->get_type ());
-       pp_string (pp, ": ");
-     }
- }
- 
- /* Base implementation of region::validate vfunc.
-    Assert that the fields of "region" are valid; subclasses should
-    chain up their implementation to this one.  */
- 
- void
- region::validate (const region_model &model) const
- {
-   m_parent_rid.validate (model);
-   m_sval_id.validate (model);
-   unsigned i;
-   region_id *view_rid;
-   FOR_EACH_VEC_ELT (m_view_rids, i, view_rid)
-     {
-       gcc_assert (!view_rid->null_p ());
-       view_rid->validate (model);
-     }
-   m_active_view_rid.validate (model);
- }
- 
- /* Apply MAP to svalue_ids to this region.  This updates the value
-    for the region (if any).  */
- 
- void
- region::remap_svalue_ids (const svalue_id_map &map)
- {
-   map.update (&m_sval_id);
- }
- 
- /* Base implementation of region::remap_region_ids vfunc; subclasses should
-    chain up to this, updating any region_id data.  */
- 
- void
- region::remap_region_ids (const region_id_map &map)
- {
-   map.update (&m_parent_rid);
-   unsigned i;
-   region_id *view_rid;
-   FOR_EACH_VEC_ELT (m_view_rids, i, view_rid)
-     map.update (view_rid);
-   map.update (&m_active_view_rid);
- }
- 
- /* Add a new region with id VIEW_RID as a view of this region.  */
- 
- void
- region::add_view (region_id view_rid, region_model *model)
- {
-   gcc_assert (!view_rid.null_p ());
-   region *new_view = model->get_region (view_rid);
-   new_view->m_is_view = true;
-   gcc_assert (!new_view->m_parent_rid.null_p ());
-   gcc_assert (new_view->m_sval_id.null_p ());
- 
-   //gcc_assert (new_view->get_type () != NULL_TREE);
-   // TODO: this can sometimes be NULL, when viewing through a (void *)
- 
-   // TODO: the type ought to not be present yet
- 
-   m_view_rids.safe_push (view_rid);
- }
- 
- /* Look for a view of type TYPE of this region, returning its id if found,
-    or null otherwise.  */
- 
- region_id
- region::get_view (tree type, region_model *model) const
- {
-   unsigned i;
-   region_id *view_rid;
-   FOR_EACH_VEC_ELT (m_view_rids, i, view_rid)
-     {
-       region *view = model->get_region (*view_rid);
-       gcc_assert (view->m_is_view);
-       if (view->get_type () == type)
- 	return *view_rid;
-     }
-   return region_id::null ();
- }
- 
- /* region's ctor.  */
- 
- region::region (region_id parent_rid, svalue_id sval_id, tree type)
- : m_parent_rid (parent_rid), m_sval_id (sval_id), m_type (type),
-   m_view_rids (), m_is_view (false), m_active_view_rid (region_id::null ())
- {
-   gcc_assert (type == NULL_TREE || TYPE_P (type));
- }
- 
- /* region's copy ctor.  */
- 
- region::region (const region &other)
- : m_parent_rid (other.m_parent_rid), m_sval_id (other.m_sval_id),
-   m_type (other.m_type), m_view_rids (other.m_view_rids.length ()),
-   m_is_view (other.m_is_view), m_active_view_rid (other.m_active_view_rid)
- {
-   int i;
-   region_id *rid;
-   FOR_EACH_VEC_ELT (other.m_view_rids, i, rid)
-     m_view_rids.quick_push (*rid);
- }
- 
- /* Base implementation of region::add_to_hash vfunc; subclasses should
-    chain up to this.  */
- 
- void
- region::add_to_hash (inchash::hash &hstate) const
- {
-   inchash::add (m_parent_rid, hstate);
-   inchash::add (m_sval_id, hstate);
-   hstate.add_ptr (m_type);
-   // TODO: views
- }
- 
- /* Base implementation of region::print_fields vfunc.  */
- 
- void
- region::print_fields (const region_model &model ATTRIBUTE_UNUSED,
- 		      region_id this_rid ATTRIBUTE_UNUSED,
- 		      pretty_printer *pp) const
- {
-   pp_printf (pp, "kind: %qs", region_kind_to_str (get_kind ()));
- 
-   pp_string (pp, ", parent: ");
-   m_parent_rid.print (pp);
- 
-   pp_printf (pp, ", sval: ");
-   m_sval_id.print (pp);
- 
-   if (m_type)
-     {
-       pp_printf (pp, ", type: ");
-       print_quoted_type (pp, m_type);
-     }
- }
- 
- /* Determine if a pointer to this region must be non-NULL.
- 
-    Generally, pointers to regions must be non-NULL, but pointers
-    to symbolic_regions might, in fact, be NULL.
- 
-    This allows us to simulate functions like malloc and calloc with:
-    - only one "outcome" from each statement,
-    - the idea that the pointer is on the heap if non-NULL
-    - the possibility that the pointer could be NULL
-    - the idea that successive values returned from malloc are non-equal
-    - to be able to zero-fill for calloc.  */
- 
- bool
- region::non_null_p (const region_model &model) const
- {
-   /* Look through views to get at the underlying region.  */
-   if (is_view_p ())
-     return model.get_region (m_parent_rid)->non_null_p (model);
- 
-   /* Are we within a symbolic_region?  If so, it could be NULL.  */
-   if (const symbolic_region *sym_reg = dyn_cast_symbolic_region ())
-     {
-       if (sym_reg->m_possibly_null)
- 	return false;
-     }
- 
-   return true;
- }
- 
- /* class primitive_region : public region.  */
- 
- /* Implementation of region::clone vfunc for primitive_region.  */
- 
- region *
- primitive_region::clone () const
- {
-   return new primitive_region (*this);
- }
- 
- /* Implementation of region::walk_for_canonicalization vfunc for
-    primitive_region.  */
- 
- void
- primitive_region::walk_for_canonicalization (canonicalization *) const
- {
-   /* Empty.  */
- }
- 
- /* class map_region : public region.  */
- 
- /* map_region's copy ctor.  */
- 
- map_region::map_region (const map_region &other)
- : region (other),
-   m_map (other.m_map)
- {
- }
- 
- /* Compare the fields of this map_region with OTHER, returning true
-    if they are equal.
-    For use by region::operator==.  */
- 
- bool
- map_region::compare_fields (const map_region &other) const
- {
-   if (m_map.elements () != other.m_map.elements ())
-     return false;
- 
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end ();
-        ++iter)
-     {
-       tree key = (*iter).first;
-       region_id e = (*iter).second;
-       region_id *other_slot = const_cast <map_t &> (other.m_map).get (key);
-       if (other_slot == NULL)
- 	return false;
-       if (e != *other_slot)
- 	return false;
-     }
-   return true;
- }
- 
- /* Implementation of region::print_fields vfunc for map_region.  */
- 
- void
- map_region::print_fields (const region_model &model,
- 			  region_id this_rid,
- 			  pretty_printer *pp) const
- {
-   region::print_fields (model, this_rid, pp);
-   pp_string (pp, ", map: {");
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end ();
-        ++iter)
-     {
-       if (iter != m_map.begin ())
- 	pp_string (pp, ", ");
-       tree expr = (*iter).first;
-       region_id child_rid = (*iter).second;
-       dump_quoted_tree (pp, expr);
-       pp_string (pp, ": ");
-       child_rid.print (pp);
-     }
-   pp_string (pp, "}");
- }
- 
- /* Implementation of region::validate vfunc for map_region.  */
- 
- void
- map_region::validate (const region_model &model) const
- {
-   region::validate (model);
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end ();
-        ++iter)
-     {
-       region_id child_rid = (*iter).second;
-       child_rid.validate (model);
-     }
- }
- 
- /* Implementation of region::dump_dot_to_pp vfunc for map_region.  */
- 
- void
- map_region::dump_dot_to_pp (const region_model &model,
- 			    region_id this_rid,
- 			    pretty_printer *pp) const
- {
-   region::dump_dot_to_pp (model, this_rid, pp);
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end ();
-        ++iter)
-     {
-       // TODO: add nodes/edges to label things
- 
-       tree expr = (*iter).first;
-       region_id child_rid = (*iter).second;
- 
-       pp_printf (pp, "rid_label_%i [label=\"", child_rid.as_int ());
-       pp_write_text_to_stream (pp);
-       pp_printf (pp, "%qE", expr);
-       pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/false);
-       pp_string (pp, "\"];");
-       pp_newline (pp);
- 
-       pp_printf (pp, "rid_label_%i", child_rid.as_int ());
-       pp_string (pp, " -> ");
-       child_rid.dump_node_name_to_pp (pp);
-       pp_string (pp, ";");
-       pp_newline (pp);
-     }
- }
- 
- /* Implementation of region::dump_child_label vfunc for map_region.  */
- 
- void
- map_region::dump_child_label (const region_model &model,
- 			      region_id this_rid,
- 			      region_id child_rid,
- 			      pretty_printer *pp) const
- {
-   region::dump_child_label (model, this_rid, child_rid, pp);
- 
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end ();
-        ++iter)
-     {
-       if (child_rid == (*iter).second)
- 	{
- 	  tree key = (*iter).first;
- 	  dump_quoted_tree (pp, key);
- 	  pp_string (pp, ": ");
- 	}
-     }
- }
- 
- /* Look for a child region for KEY within this map_region.
-    If it doesn't already exist, create a child map_region, using TYPE for
-    its type.
-    Return the region_id of the child (whether pre-existing, or
-    newly-created).
-    Notify CTXT if we don't know how to handle TYPE.  */
- 
- region_id
- map_region::get_or_create (region_model *model,
- 			   region_id this_rid,
- 			   tree key,
- 			   tree type,
- 			   region_model_context *ctxt)
- {
-   gcc_assert (key);
-   gcc_assert (valid_key_p (key));
-   region_id *slot = m_map.get (key);
-   if (slot)
-     return *slot;
-   region_id child_rid = model->add_region_for_type (this_rid, type, ctxt);
-   m_map.put (key, child_rid);
-   return child_rid;
- }
- 
- /* Get the region_id for the child region for KEY within this
-    MAP_REGION, or NULL if there is no such child region.  */
- 
- region_id *
- map_region::get (tree key)
- {
-   gcc_assert (key);
-   gcc_assert (valid_key_p (key));
-   region_id *slot = m_map.get (key);
-   return slot;
- }
- 
- /* Implementation of region::add_to_hash vfunc for map_region.  */
- 
- void
- map_region::add_to_hash (inchash::hash &hstate) const
- {
-   region::add_to_hash (hstate);
-   // TODO
- }
- 
- /* Implementation of region::remap_region_ids vfunc for map_region.  */
- 
- void
- map_region::remap_region_ids (const region_id_map &map)
- {
-   region::remap_region_ids (map);
- 
-   /* Remap the region ids within the map entries.  */
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end (); ++iter)
-     map.update (&(*iter).second);
- }
- 
- /* Remove the binding of KEY to its child region (but not the
-    child region itself).
-    For use when purging unneeded SSA names.  */
- 
- void
- map_region::unbind (tree key)
- {
-   gcc_assert (key);
-   gcc_assert (valid_key_p (key));
-   m_map.remove (key);
- }
- 
- /* Look for a child region with id CHILD_RID within this map_region.
-    If one is found, return its tree key, otherwise return NULL_TREE.  */
- 
- tree
- map_region::get_tree_for_child_region (region_id child_rid) const
- {
-   // TODO: do we want to store an inverse map?
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end ();
-        ++iter)
-     {
-       tree key = (*iter).first;
-       region_id r = (*iter).second;
-       if (r == child_rid)
- 	return key;
-     }
- 
-   return NULL_TREE;
- }
- 
- /* Look for a child region CHILD within this map_region.
-    If one is found, return its tree key, otherwise return NULL_TREE.  */
- 
- tree
- map_region::get_tree_for_child_region (region *child,
- 				       const region_model &model) const
- {
-   // TODO: do we want to store an inverse map?
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end ();
-        ++iter)
-     {
-       tree key = (*iter).first;
-       region_id r = (*iter).second;
-       if (model.get_region (r) == child)
- 	return key;
-     }
- 
-   return NULL_TREE;
- }
- 
- /* Comparator for trees to impose a deterministic ordering on
-    T1 and T2.  */
- 
- static int
- tree_cmp (const_tree t1, const_tree t2)
- {
-   gcc_assert (t1);
-   gcc_assert (t2);
- 
-   /* Test tree codes first.  */
-   if (TREE_CODE (t1) != TREE_CODE (t2))
-     return TREE_CODE (t1) - TREE_CODE (t2);
- 
-   /* From this point on, we know T1 and T2 have the same tree code.  */
- 
-   if (DECL_P (t1))
-     {
-       if (DECL_NAME (t1) && DECL_NAME (t2))
- 	return strcmp (IDENTIFIER_POINTER (DECL_NAME (t1)),
- 		       IDENTIFIER_POINTER (DECL_NAME (t2)));
-       else
- 	{
- 	  if (DECL_NAME (t1))
- 	    return -1;
- 	  else if (DECL_NAME (t2))
- 	    return 1;
- 	  else
- 	    return DECL_UID (t1) - DECL_UID (t2);
- 	}
-     }
- 
-   switch (TREE_CODE (t1))
-     {
-     case SSA_NAME:
-       {
- 	if (SSA_NAME_VAR (t1) && SSA_NAME_VAR (t2))
- 	  {
- 	    int var_cmp = tree_cmp (SSA_NAME_VAR (t1), SSA_NAME_VAR (t2));
- 	    if (var_cmp)
- 	      return var_cmp;
- 	    return SSA_NAME_VERSION (t1) - SSA_NAME_VERSION (t2);
- 	  }
- 	else
- 	  {
- 	    if (SSA_NAME_VAR (t1))
- 	      return -1;
- 	    else if (SSA_NAME_VAR (t2))
- 	      return 1;
- 	    else
- 	      return SSA_NAME_VERSION (t1) - SSA_NAME_VERSION (t2);
- 	  }
-       }
-       break;
- 
-     case INTEGER_CST:
-       return tree_int_cst_compare (t1, t2);
- 
-     case REAL_CST:
-       {
- 	const real_value *rv1 = TREE_REAL_CST_PTR (t1);
- 	const real_value *rv2 = TREE_REAL_CST_PTR (t2);
- 	if (real_compare (UNORDERED_EXPR, rv1, rv2))
- 	  {
- 	    /* Impose an arbitrary order on NaNs relative to other NaNs
- 	       and to non-NaNs.  */
- 	    if (int cmp_isnan = real_isnan (rv1) - real_isnan (rv2))
- 	      return cmp_isnan;
- 	    if (int cmp_issignaling_nan
- 		  = real_issignaling_nan (rv1) - real_issignaling_nan (rv2))
- 	      return cmp_issignaling_nan;
- 	    return real_isneg (rv1) - real_isneg (rv2);
- 	  }
- 	if (real_compare (LT_EXPR, rv1, rv2))
- 	  return -1;
- 	if (real_compare (GT_EXPR, rv1, rv2))
- 	  return 1;
- 	return 0;
-       }
- 
-     case STRING_CST:
-       return strcmp (TREE_STRING_POINTER (t1),
- 		     TREE_STRING_POINTER (t2));
- 
-     default:
-       gcc_unreachable ();
-       break;
-     }
- 
-   gcc_unreachable ();
- 
-   return 0;
- }
- 
- /* qsort comparator for trees to impose a deterministic ordering on
-    P1 and P2.  */
- 
- static int
- tree_cmp (const void *p1, const void *p2)
- {
-   const_tree t1 = *(const_tree const *)p1;
-   const_tree t2 = *(const_tree const *)p2;
- 
-   return tree_cmp (t1, t2);
- }
- 
- /* Attempt to merge MAP_REGION_A and MAP_REGION_B into MERGED_MAP_REGION,
-    which has region_id MERGED_RID, using MERGER.
-    Return true if the merger is possible, false otherwise.  */
- 
- bool
- map_region::can_merge_p (const map_region *map_region_a,
- 			 const map_region *map_region_b,
- 			 map_region *merged_map_region,
- 			 region_id merged_rid,
- 			 model_merger *merger)
- {
-   for (map_t::iterator iter = map_region_a->m_map.begin ();
-        iter != map_region_a->m_map.end ();
-        ++iter)
-     {
-       tree key_a = (*iter).first;
-       region_id rid_a = (*iter).second;
- 
-       if (const region_id *slot_b
- 	  = const_cast<map_region *>(map_region_b)->m_map.get (key_a))
- 	{
- 	  region_id rid_b = *slot_b;
- 
- 	  region *child_region_a = merger->get_region_a <region> (rid_a);
- 	  region *child_region_b = merger->get_region_b <region> (rid_b);
- 
- 	  gcc_assert (child_region_a->get_type ()
- 		      == child_region_b->get_type ());
- 
- 	  gcc_assert (child_region_a->get_kind ()
- 		      == child_region_b->get_kind ());
- 
- 	  region_id child_merged_rid
- 	    = merged_map_region->get_or_create (merger->m_merged_model,
- 						merged_rid,
- 						key_a,
- 						child_region_a->get_type (),
- 						NULL);
- 
- 	  region *child_merged_region
- 	    = merger->m_merged_model->get_region (child_merged_rid);
- 
- 	  /* Consider values.  */
- 	  svalue_id child_a_sid = child_region_a->get_value_direct ();
- 	  svalue_id child_b_sid = child_region_b->get_value_direct ();
- 	  svalue_id child_merged_sid;
- 	  if (!merger->can_merge_values_p (child_a_sid, child_b_sid,
- 					   &child_merged_sid))
- 	    return false;
- 	  if (!child_merged_sid.null_p ())
- 	    child_merged_region->set_value (*merger->m_merged_model,
- 					    child_merged_rid,
- 					    child_merged_sid,
- 					    NULL);
- 
- 	  if (map_region *map_region_a = child_region_a->dyn_cast_map_region ())
- 	    {
- 	      /* Recurse.  */
- 	      if (!can_merge_p (map_region_a,
- 				as_a <map_region *> (child_region_b),
- 				as_a <map_region *> (child_merged_region),
- 				child_merged_rid,
- 				merger))
- 		return false;
- 	    }
- 
- 	}
-       else
- 	{
- 	  /* TODO: region is present in A, but absent in B.  */
- 	}
-     }
- 
-   /* TODO: check for keys in B that aren't in A.  */
- 
-   return true;
- }
- 
- 
- /* Implementation of region::walk_for_canonicalization vfunc for
-    map_region.  */
- 
- void
- map_region::walk_for_canonicalization (canonicalization *c) const
- {
-   auto_vec<tree> keys (m_map.elements ());
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end ();
-        ++iter)
-     {
-       tree key_a = (*iter).first;
-       keys.quick_push (key_a);
-     }
-   keys.qsort (tree_cmp);
- 
-   unsigned i;
-   tree key;
-   FOR_EACH_VEC_ELT (keys, i, key)
-     {
-       region_id rid = *const_cast<map_region *>(this)->m_map.get (key);
-       c->walk_rid (rid);
-     }
- }
- 
- /* For debugging purposes: look for a child region for a decl named
-    IDENTIFIER (or an SSA_NAME for such a decl), returning its value,
-    or svalue_id::null if none are found.  */
- 
- svalue_id
- map_region::get_value_by_name (tree identifier,
- 			       const region_model &model) const
- {
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end ();
-        ++iter)
-     {
-       tree key = (*iter).first;
-       if (TREE_CODE (key) == SSA_NAME)
- 	if (SSA_NAME_VAR (key))
- 	  key = SSA_NAME_VAR (key);
-       if (DECL_P (key))
- 	if (DECL_NAME (key) == identifier)
- 	  {
- 	    region_id rid = (*iter).second;
- 	    region *region = model.get_region (rid);
- 	    return region->get_value (const_cast<region_model &>(model),
- 				      false, NULL);
- 	  }
-     }
-   return svalue_id::null ();
- }
- 
- /* class struct_or_union_region : public map_region.  */
- 
- /* Implementation of map_region::valid_key_p vfunc for
-    struct_or_union_region.  */
- 
- bool
- struct_or_union_region::valid_key_p (tree key) const
- {
-   return TREE_CODE (key) == FIELD_DECL;
- }
- 
- /* Compare the fields of this struct_or_union_region with OTHER, returning
-    true if they are equal.
-    For use by region::operator==.  */
- 
- bool
- struct_or_union_region::compare_fields (const struct_or_union_region &other)
-   const
- {
-   return map_region::compare_fields (other);
- }
- 
- /* class struct_region : public struct_or_union_region.  */
- 
- /* Implementation of region::clone vfunc for struct_region.  */
- 
- region *
- struct_region::clone () const
- {
-   return new struct_region (*this);
- }
- 
- /* Compare the fields of this struct_region with OTHER, returning true
-    if they are equal.
-    For use by region::operator==.  */
- 
- bool
- struct_region::compare_fields (const struct_region &other) const
- {
-   return struct_or_union_region::compare_fields (other);
- }
- 
- /* class union_region : public struct_or_union_region.  */
- 
- /* Implementation of region::clone vfunc for union_region.  */
- 
- region *
- union_region::clone () const
- {
-   return new union_region (*this);
- }
- 
- /* Compare the fields of this union_region with OTHER, returning true
-    if they are equal.
-    For use by region::operator==.  */
- 
- bool
- union_region::compare_fields (const union_region &other) const
- {
-   return struct_or_union_region::compare_fields (other);
- }
- 
- /* class frame_region : public map_region.  */
- 
- /* Compare the fields of this frame_region with OTHER, returning true
-    if they are equal.
-    For use by region::operator==.  */
- 
- bool
- frame_region::compare_fields (const frame_region &other) const
- {
-   if (!map_region::compare_fields (other))
-     return false;
-   if (m_fun != other.m_fun)
-     return false;
-   if (m_depth != other.m_depth)
-     return false;
-   return true;
- }
- 
- /* Implementation of region::clone vfunc for frame_region.  */
- 
- region *
- frame_region::clone () const
- {
-   return new frame_region (*this);
- }
- 
- /* Implementation of map_region::valid_key_p vfunc for frame_region.  */
- 
- bool
- frame_region::valid_key_p (tree key) const
- {
-   // TODO: could also check that VAR_DECLs are locals
-   return (TREE_CODE (key) == PARM_DECL
- 	  || TREE_CODE (key) == VAR_DECL
- 	  || TREE_CODE (key) == SSA_NAME
- 	  || TREE_CODE (key) == RESULT_DECL);
- }
- 
- /* Implementation of region::print_fields vfunc for frame_region.  */
- 
- void
- frame_region::print_fields (const region_model &model,
- 			    region_id this_rid,
- 			    pretty_printer *pp) const
- {
-   map_region::print_fields (model, this_rid, pp);
-   pp_printf (pp, ", function: %qs, depth: %i", function_name (m_fun), m_depth);
- }
- 
- /* Implementation of region::add_to_hash vfunc for frame_region.  */
- 
- void
- frame_region::add_to_hash (inchash::hash &hstate) const
- {
-   map_region::add_to_hash (hstate);
-   hstate.add_ptr (m_fun);
-   hstate.add_int (m_depth);
- }
- 
- /* class globals_region : public scope_region.  */
- 
- /* Compare the fields of this globals_region with OTHER, returning true
-    if they are equal.
-    For use by region::operator==.  */
- 
- bool
- globals_region::compare_fields (const globals_region &other) const
- {
-   return map_region::compare_fields (other);
- }
- 
- /* Implementation of region::clone vfunc for globals_region.  */
- 
- region *
- globals_region::clone () const
- {
-   return new globals_region (*this);
- }
- 
- /* Implementation of map_region::valid_key_p vfunc for globals_region.  */
- 
- bool
- globals_region::valid_key_p (tree key) const
- {
-   return TREE_CODE (key) == VAR_DECL;
- }
- 
- /* class code_region : public map_region.  */
- 
- /* Compare the fields of this code_region with OTHER, returning true
-    if they are equal.
-    For use by region::operator==.  */
- 
- bool
- code_region::compare_fields (const code_region &other) const
- {
-   return map_region::compare_fields (other);
- }
- 
- /* Implementation of region::clone vfunc for code_region.  */
- 
- region *
- code_region::clone () const
- {
-   return new code_region (*this);
- }
- 
- /* Implementation of map_region::valid_key_p vfunc for code_region.  */
- 
- bool
- code_region::valid_key_p (tree key) const
- {
-   return TREE_CODE (key) == FUNCTION_DECL;
- }
- 
- /* class array_region : public region.  */
- 
- /* array_region's copy ctor.  */
- 
- array_region::array_region (const array_region &other)
- : region (other),
-   m_map (other.m_map)
- {
- }
- 
- /* Get a child region for the element with index INDEX_SID.  */
- 
- region_id
- array_region::get_element (region_model *model,
- 			   region_id this_rid,
- 			   svalue_id index_sid,
- 			   region_model_context *ctxt)
- {
-   tree element_type = TREE_TYPE (get_type ());
-   svalue *index_sval = model->get_svalue (index_sid);
-   if (tree cst_index = index_sval->maybe_get_constant ())
-     {
-       key_t key = key_from_constant (cst_index);
-       region_id element_rid
- 	= get_or_create (model, this_rid, key, element_type, ctxt);
-       return element_rid;
-    }
- 
-   return model->get_or_create_view (this_rid, element_type, ctxt);
- }
- 
- /* Implementation of region::clone vfunc for array_region.  */
- 
- region *
- array_region::clone () const
- {
-   return new array_region (*this);
- }
- 
- /* Compare the fields of this array_region with OTHER, returning true
-    if they are equal.
-    For use by region::operator==.  */
- 
- bool
- array_region::compare_fields (const array_region &other) const
- {
-   if (m_map.elements () != other.m_map.elements ())
-     return false;
- 
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end ();
-        ++iter)
-     {
-       int key = (*iter).first;
-       region_id e = (*iter).second;
-       region_id *other_slot = const_cast <map_t &> (other.m_map).get (key);
-       if (other_slot == NULL)
- 	return false;
-       if (e != *other_slot)
- 	return false;
-     }
-   return true;
- }
- 
- /* Implementation of region::print_fields vfunc for array_region.  */
- 
- void
- array_region::print_fields (const region_model &model,
- 			    region_id this_rid,
- 			    pretty_printer *pp) const
- {
-   region::print_fields (model, this_rid, pp);
-   pp_string (pp, ", array: {");
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end ();
-        ++iter)
-     {
-       if (iter != m_map.begin ())
- 	pp_string (pp, ", ");
-       int key = (*iter).first;
-       region_id child_rid = (*iter).second;
-       pp_printf (pp, "[%i]: ", key);
-       child_rid.print (pp);
-     }
-   pp_string (pp, "}");
- }
- 
- /* Implementation of region::validate vfunc for array_region.  */
- 
- void
- array_region::validate (const region_model &model) const
- {
-   region::validate (model);
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end ();
-        ++iter)
-     {
-       region_id child_rid = (*iter).second;
-       child_rid.validate (model);
-     }
- }
- 
- /* Implementation of region::dump_dot_to_pp vfunc for array_region.  */
- 
- void
- array_region::dump_dot_to_pp (const region_model &model,
- 			      region_id this_rid,
- 			      pretty_printer *pp) const
- {
-   region::dump_dot_to_pp (model, this_rid, pp);
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end ();
-        ++iter)
-     {
-       // TODO: add nodes/edges to label things
- 
-       int key = (*iter).first;
-       region_id child_rid = (*iter).second;
- 
-       pp_printf (pp, "rid_label_%i [label=\"", child_rid.as_int ());
-       pp_write_text_to_stream (pp);
-       pp_printf (pp, "%qi", key);
-       pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/false);
-       pp_string (pp, "\"];");
-       pp_newline (pp);
- 
-       pp_printf (pp, "rid_label_%i", child_rid.as_int ());
-       pp_string (pp, " -> ");
-       child_rid.dump_node_name_to_pp (pp);
-       pp_string (pp, ";");
-       pp_newline (pp);
-     }
- }
- 
- /* Implementation of region::dump_child_label vfunc for array_region.  */
- 
- void
- array_region::dump_child_label (const region_model &model,
- 			      region_id this_rid,
- 			      region_id child_rid,
- 			      pretty_printer *pp) const
- {
-   region::dump_child_label (model, this_rid, child_rid, pp);
- 
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end ();
-        ++iter)
-     {
-       if (child_rid == (*iter).second)
- 	{
- 	  int key = (*iter).first;
- 	  pp_printf (pp, "[%i]: ", key);
- 	}
-     }
- }
- 
- /* Look for a child region for KEY within this array_region.
-    If it doesn't already exist, create a child array_region, using TYPE for
-    its type.
-    Return the region_id of the child (whether pre-existing, or
-    newly-created).
-    Notify CTXT if we don't know how to handle TYPE.  */
- 
- region_id
- array_region::get_or_create (region_model *model,
- 			     region_id this_rid,
- 			     key_t key,
- 			     tree type,
- 			     region_model_context *ctxt)
- {
-   region_id *slot = m_map.get (key);
-   if (slot)
-     return *slot;
-   region_id child_rid = model->add_region_for_type (this_rid, type, ctxt);
-   m_map.put (key, child_rid);
-   return child_rid;
- }
- 
- /* Get the region_id for the child region for KEY within this
-    ARRAY_REGION, or NULL if there is no such child region.  */
- 
- region_id *
- array_region::get (key_t key)
- {
-   region_id *slot = m_map.get (key);
-   return slot;
- }
- 
- /* Implementation of region::add_to_hash vfunc for array_region.  */
- 
- void
- array_region::add_to_hash (inchash::hash &hstate) const
- {
-   region::add_to_hash (hstate);
-   // TODO
- }
- 
- /* Implementation of region::remap_region_ids vfunc for array_region.  */
- 
- void
- array_region::remap_region_ids (const region_id_map &map)
- {
-   region::remap_region_ids (map);
- 
-   /* Remap the region ids within the map entries.  */
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end (); ++iter)
-     map.update (&(*iter).second);
- }
- 
- /* Look for a child region with id CHILD_RID within this array_region.
-    If one is found, write its key to *OUT and return true,
-    otherwise return false.  */
- 
- bool
- array_region::get_key_for_child_region (region_id child_rid, key_t *out) const
- {
-   // TODO: do we want to store an inverse map?
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end ();
-        ++iter)
-     {
-       key_t key = (*iter).first;
-       region_id r = (*iter).second;
-       if (r == child_rid)
- 	{
- 	  *out = key;
- 	  return true;
- 	}
-     }
- 
-   return false;
- }
- 
- /* qsort comparator for array_region's keys.  */
- 
- int
- array_region::key_cmp (const void *p1, const void *p2)
- {
-   key_t i1 = *(const key_t *)p1;
-   key_t i2 = *(const key_t *)p2;
- 
-   if (i1 > i2)
-     return 1;
-   else if (i1 < i2)
-     return -1;
-   else
-     return 0;
- }
- 
- /* Implementation of region::walk_for_canonicalization vfunc for
-    array_region.  */
- 
- void
- array_region::walk_for_canonicalization (canonicalization *c) const
- {
-   auto_vec<int> keys (m_map.elements ());
-   for (map_t::iterator iter = m_map.begin ();
-        iter != m_map.end ();
-        ++iter)
-     {
-       int key_a = (*iter).first;
-       keys.quick_push (key_a);
-     }
-   keys.qsort (key_cmp);
- 
-   unsigned i;
-   int key;
-   FOR_EACH_VEC_ELT (keys, i, key)
-     {
-       region_id rid = *const_cast<array_region *>(this)->m_map.get (key);
-       c->walk_rid (rid);
-     }
- }
- 
- /* Convert constant CST into an array_region::key_t.  */
- 
- array_region::key_t
- array_region::key_from_constant (tree cst)
- {
-   gcc_assert (CONSTANT_CLASS_P (cst));
-   wide_int w = wi::to_wide (cst);
-   key_t result = w.to_shwi ();
-   return result;
- }
- 
- /* Convert array_region::key_t KEY into a tree constant.  */
- 
- tree
- array_region::constant_from_key (key_t key)
- {
-   tree array_type = get_type ();
-   tree index_type = TYPE_DOMAIN (array_type);
-   return build_int_cst (index_type, key);
- }
- 
- /* class function_region : public map_region.  */
- 
- /* Compare the fields of this function_region with OTHER, returning true
-    if they are equal.
-    For use by region::operator==.  */
- 
- bool
- function_region::compare_fields (const function_region &other) const
- {
-   return map_region::compare_fields (other);
- }
- 
- /* Implementation of region::clone vfunc for function_region.  */
- 
- region *
- function_region::clone () const
- {
-   return new function_region (*this);
- }
- 
- /* Implementation of map_region::valid_key_p vfunc for function_region.  */
- 
- bool
- function_region::valid_key_p (tree key) const
- {
-   return TREE_CODE (key) == LABEL_DECL;
- }
- 
- /* class stack_region : public region.  */
- 
- /* stack_region's copy ctor.  */
- 
- stack_region::stack_region (const stack_region &other)
- : region (other),
-   m_frame_rids (other.m_frame_rids.length ())
- {
-   int i;
-   region_id *frame_rid;
-   FOR_EACH_VEC_ELT (other.m_frame_rids, i, frame_rid)
-     m_frame_rids.quick_push (*frame_rid);
- }
- 
- /* Compare the fields of this stack_region with OTHER, returning true
-    if they are equal.
-    For use by region::operator==.  */
- 
- bool
- stack_region::compare_fields (const stack_region &other) const
- {
-   if (m_frame_rids.length () != other.m_frame_rids.length ())
-     return false;
- 
-   int i;
-   region_id *frame_rid;
-   FOR_EACH_VEC_ELT (m_frame_rids, i, frame_rid)
-     if (m_frame_rids[i] != other.m_frame_rids[i])
-       return false;
- 
-   return true;
- }
- 
- /* Implementation of region::clone vfunc for stack_region.  */
- 
- region *
- stack_region::clone () const
- {
-   return new stack_region (*this);
- }
- 
- /* Implementation of region::print_fields vfunc for stack_region.  */
- 
- void
- stack_region::print_fields (const region_model &model,
- 			    region_id this_rid,
- 			    pretty_printer *pp) const
- {
-   region::print_fields (model, this_rid, pp);
-   // TODO
- }
- 
- /* Implementation of region::dump_child_label vfunc for stack_region.  */
- 
- void
- stack_region::dump_child_label (const region_model &model,
- 				region_id this_rid ATTRIBUTE_UNUSED,
- 				region_id child_rid,
- 				pretty_printer *pp) const
- {
-   function *fun = model.get_region<frame_region> (child_rid)->get_function ();
-   pp_printf (pp, "frame for %qs: ", function_name (fun));
- }
- 
- /* Implementation of region::validate vfunc for stack_region.  */
- 
- void
- stack_region::validate (const region_model &model) const
- {
-   region::validate (model);
-   int i;
-   region_id *frame_rid;
-   FOR_EACH_VEC_ELT (m_frame_rids, i, frame_rid)
-     m_frame_rids[i].validate (model);
- }
- 
- /* Push FRAME_RID (for a frame_region) onto this stack.  */
- 
- void
- stack_region::push_frame (region_id frame_rid)
- {
-   m_frame_rids.safe_push (frame_rid);
- }
- 
- /* Get the region_id of the top-most frame in this stack, if any.  */
- 
- region_id
- stack_region::get_current_frame_id () const
- {
-   if (m_frame_rids.length () > 0)
-     return m_frame_rids[m_frame_rids.length () - 1];
-   else
-     return region_id::null ();
- }
- 
- /* Pop the topmost frame_region from this stack.
- 
-    If RESULT_DST_RID is non-null, copy any return value from the frame
-    into RESULT_DST_RID's region.
- 
-    Purge the frame region and all its descendent regions.
-    Convert any pointers that point into such regions into
-    POISON_KIND_POPPED_STACK svalues.
- 
-    If PURGE, then purge all unused svalues, with the exception of any
-    returned values.
- 
-    Accumulate stats on purged entities into STATS.  */
- 
- void
- stack_region::pop_frame (region_model *model, region_id result_dst_rid,
- 			 bool purge, purge_stats *stats,
- 			 region_model_context *ctxt)
- {
-   gcc_assert (m_frame_rids.length () > 0);
- 
-   region_id frame_rid = get_current_frame_id ();
-   frame_region *frame = model->get_region<frame_region> (frame_rid);
- 
-   /* Evaluate the result, within the callee frame.  */
-   svalue_id_set returned_sids;
-   tree fndecl = frame->get_function ()->decl;
-   tree result = DECL_RESULT (fndecl);
-   if (result && TREE_TYPE (result) != void_type_node)
-     {
-       if (!result_dst_rid.null_p ())
- 	{
- 	  /* Copy the result to RESULT_DST_RID.  */
- 	  model->copy_region (result_dst_rid, model->get_lvalue (result, ctxt),
- 			      ctxt);
- 	}
-       if (purge)
- 	{
- 	  /* Populate returned_sids, to avoid purging them.  */
- 	  region_id return_rid = model->get_lvalue (result, NULL);
- 	  region_id_set returned_rids (model);
- 	  model->get_descendents (return_rid, &returned_rids,
- 				  region_id::null ());
- 	  for (unsigned i = 0; i < model->get_num_regions (); i++)
- 	    {
- 	      region_id rid = region_id::from_int (i);
- 	      if (returned_rids.region_p (rid))
- 		{
- 		  svalue_id sid = model->get_region (rid)->get_value_direct ();
- 		  returned_sids.add_svalue (sid);
- 		}
- 	    }
- 	}
-     }
- 
-   /* Pop the frame RID.  */
-   m_frame_rids.pop ();
- 
-   model->delete_region_and_descendents (frame_rid,
- 					POISON_KIND_POPPED_STACK,
- 					stats,
- 					ctxt ? ctxt->get_logger () : NULL);
- 
-   /* Delete unused svalues, but don't delete the return value(s).  */
-   if (purge)
-     model->purge_unused_svalues (stats, ctxt, &returned_sids);
- 
-   model->validate ();
- }
- 
- /* Implementation of region::add_to_hash vfunc for stack_region.  */
- 
- void
- stack_region::add_to_hash (inchash::hash &hstate) const
- {
-   region::add_to_hash (hstate);
- 
-   int i;
-   region_id *frame_rid;
-   FOR_EACH_VEC_ELT (m_frame_rids, i, frame_rid)
-     inchash::add (*frame_rid, hstate);
- }
- 
- /* Implementation of region::remap_region_ids vfunc for stack_region.  */
- 
- void
- stack_region::remap_region_ids (const region_id_map &map)
- {
-   region::remap_region_ids (map);
-   int i;
-   region_id *frame_rid;
-   FOR_EACH_VEC_ELT (m_frame_rids, i, frame_rid)
-     map.update (&m_frame_rids[i]);
- }
- 
- /* Attempt to merge STACK_REGION_A and STACK_REGION_B using MERGER.
-    Return true if the merger is possible, false otherwise.  */
- 
- bool
- stack_region::can_merge_p (const stack_region *stack_region_a,
- 			   const stack_region *stack_region_b,
- 			   model_merger *merger)
- {
-   if (stack_region_a->get_num_frames ()
-       != stack_region_b->get_num_frames ())
-     return false;
- 
-   region_model *merged_model = merger->m_merged_model;
- 
-   region_id rid_merged_stack
-     = merged_model->get_root_region ()->ensure_stack_region (merged_model);
- 
-   stack_region *merged_stack
-     = merged_model->get_region <stack_region> (rid_merged_stack);
- 
-   /* First, create all frames in the merged model, without populating them.
-      The merging code assumes that all frames in the merged model already exist,
-      so we have to do this first to handle the case in which a local in an
-      older frame points at a local in a more recent frame.  */
-     for (unsigned i = 0; i < stack_region_a->get_num_frames (); i++)
-       {
- 	region_id rid_a = stack_region_a->get_frame_rid (i);
- 	frame_region *frame_a = merger->get_region_a <frame_region> (rid_a);
- 
- 	region_id rid_b = stack_region_b->get_frame_rid (i);
- 	frame_region *frame_b = merger->get_region_b <frame_region> (rid_b);
- 
- 	if (frame_a->get_function () != frame_b->get_function ())
- 	  return false;
- 
- 	frame_region *merged_frame = new frame_region (rid_merged_stack,
- 						       frame_a->get_function (),
- 						       frame_a->get_depth ());
- 	region_id rid_merged_frame = merged_model->add_region (merged_frame);
- 	merged_stack->push_frame (rid_merged_frame);
-       }
- 
-     /* Now populate the frames we created.  */
-     for (unsigned i = 0; i < stack_region_a->get_num_frames (); i++)
-       {
- 	region_id rid_a = stack_region_a->get_frame_rid (i);
- 	frame_region *frame_a = merger->get_region_a <frame_region> (rid_a);
- 
- 	region_id rid_b = stack_region_b->get_frame_rid (i);
- 	frame_region *frame_b = merger->get_region_b <frame_region> (rid_b);
- 
- 	region_id rid_merged_frame = merged_stack->get_frame_rid (i);
- 	frame_region *merged_frame
- 	  = merged_model->get_region <frame_region> (rid_merged_frame);
- 	if (!map_region::can_merge_p (frame_a, frame_b,
- 				      merged_frame, rid_merged_frame,
- 				      merger))
- 	  return false;
-       }
- 
-   return true;
- }
- 
- /* Implementation of region::walk_for_canonicalization vfunc for
-    stack_region.  */
- 
- void
- stack_region::walk_for_canonicalization (canonicalization *c) const
- {
-   int i;
-   region_id *frame_rid;
-   FOR_EACH_VEC_ELT (m_frame_rids, i, frame_rid)
-     c->walk_rid (*frame_rid);
- }
- 
- /* For debugging purposes: look for a grandchild region within one of
-    the child frame regions, where the grandchild is for a decl named
-    IDENTIFIER (or an SSA_NAME for such a decl):
- 
-      stack_region
-      `-frame_region
-        `-region for decl named IDENTIFIER
- 
-    returning its value, or svalue_id::null if none are found.  */
- 
- svalue_id
- stack_region::get_value_by_name (tree identifier,
- 				 const region_model &model) const
- {
-   int i;
-   region_id *frame_rid;
-   FOR_EACH_VEC_ELT (m_frame_rids, i, frame_rid)
-     {
-       frame_region *frame = model.get_region<frame_region> (*frame_rid);
-       svalue_id sid = frame->get_value_by_name (identifier, model);
-       if (!sid.null_p ())
- 	return sid;
-     }
- 
-   return svalue_id::null ();
- }
- 
- /* class heap_region : public region.  */
- 
- /* heap_region's copy ctor.  */
- 
- heap_region::heap_region (const heap_region &other)
- : region (other)
- {
- }
- 
- /* Compare the fields of this heap_region with OTHER, returning true
-    if they are equal.
-    For use by region::operator==.  */
- 
- bool
- heap_region::compare_fields (const heap_region &) const
- {
-   /* Empty.  */
-   return true;
- }
- 
- /* Implementation of region::clone vfunc for heap_region.  */
- 
- region *
- heap_region::clone () const
- {
-   return new heap_region (*this);
- }
- 
- /* Implementation of region::walk_for_canonicalization vfunc for
-    heap_region.  */
- 
- void
- heap_region::walk_for_canonicalization (canonicalization *) const
- {
-   /* Empty.  */
- }
- 
- /* class root_region : public region.  */
- 
- /* root_region's default ctor.  */
- 
- root_region::root_region ()
- : region (region_id::null (),
- 	  svalue_id::null (),
- 	  NULL_TREE)
- {
- }
- 
- /* root_region's copy ctor.  */
- 
- root_region::root_region (const root_region &other)
- : region (other),
-   m_stack_rid (other.m_stack_rid),
-   m_globals_rid (other.m_globals_rid),
-   m_code_rid (other.m_code_rid),
-   m_heap_rid (other.m_heap_rid)
- {
- }
- 
- /* Compare the fields of this root_region with OTHER, returning true
-    if they are equal.
-    For use by region::operator==.  */
- 
- bool
- root_region::compare_fields (const root_region &other) const
- {
-   if (m_stack_rid != other.m_stack_rid)
-     return false;
-   if (m_globals_rid != other.m_globals_rid)
-     return false;
-   if (m_code_rid != other.m_code_rid)
-     return false;
-   if (m_heap_rid != other.m_heap_rid)
-     return false;
-   return true;
- }
- 
- /* Implementation of region::clone vfunc for root_region.  */
- 
- region *
- root_region::clone () const
- {
-   return new root_region (*this);
- }
- 
- /* Implementation of region::print_fields vfunc for root_region.  */
- 
- void
- root_region::print_fields (const region_model &model,
- 			   region_id this_rid,
- 			   pretty_printer *pp) const
- {
-   region::print_fields (model, this_rid, pp);
-   // TODO
- }
- 
- /* Implementation of region::validate vfunc for root_region.  */
- 
- void
- root_region::validate (const region_model &model) const
- {
-   region::validate (model);
-   m_stack_rid.validate (model);
-   m_globals_rid.validate (model);
-   m_code_rid.validate (model);
-   m_heap_rid.validate (model);
- }
- 
- /* Implementation of region::dump_child_label vfunc for root_region.  */
- 
- void
- root_region::dump_child_label (const region_model &model ATTRIBUTE_UNUSED,
- 			       region_id this_rid ATTRIBUTE_UNUSED,
- 			       region_id child_rid,
- 			       pretty_printer *pp) const
- {
-   if (child_rid == m_stack_rid)
-     pp_printf (pp, "stack: ");
-   else if (child_rid == m_globals_rid)
-     pp_printf (pp, "globals: ");
-   else if (child_rid == m_code_rid)
-     pp_printf (pp, "code: ");
-   else if (child_rid == m_heap_rid)
-     pp_printf (pp, "heap: ");
- }
- 
- /* Create a new frame_region for a call to FUN and push it onto
-    the stack.
- 
-    If ARG_SIDS is non-NULL, use it to populate the parameters
-    in the new frame.
-    Otherwise, populate them with unknown values.
- 
-    Return the region_id of the new frame.  */
- 
- region_id
- root_region::push_frame (region_model *model, function *fun,
- 			 vec<svalue_id> *arg_sids,
- 			 region_model_context *ctxt)
- {
-   gcc_assert (fun);
-   /* arg_sids can be NULL.  */
- 
-   ensure_stack_region (model);
-   stack_region *stack = model->get_region <stack_region> (m_stack_rid);
- 
-   frame_region *region = new frame_region (m_stack_rid, fun,
- 					   stack->get_num_frames ());
-   region_id frame_rid = model->add_region (region);
- 
-   // TODO: unify these cases by building a vec of unknown?
- 
-   if (arg_sids)
-     {
-       /* Arguments supplied from a caller frame.  */
- 
-       tree fndecl = fun->decl;
-       unsigned idx = 0;
-       for (tree iter_parm = DECL_ARGUMENTS (fndecl); iter_parm;
- 	   iter_parm = DECL_CHAIN (iter_parm), ++idx)
- 	{
- 	  /* If there's a mismatching declaration, the call stmt might
- 	     not have enough args.  Handle this case by leaving the
- 	     rest of the params as uninitialized.  */
- 	  if (idx >= arg_sids->length ())
- 	    break;
- 	  svalue_id arg_sid = (*arg_sids)[idx];
- 	  region_id parm_rid
- 	    = region->get_or_create (model, frame_rid, iter_parm,
- 				     TREE_TYPE (iter_parm), ctxt);
- 	  model->set_value (parm_rid, arg_sid, ctxt);
- 
- 	  /* Also do it for default SSA name (sharing the same unknown
- 	     value).  */
- 	  tree parm_default_ssa = ssa_default_def (fun, iter_parm);
- 	  if (parm_default_ssa)
- 	    {
- 	      region_id defssa_rid
- 		= region->get_or_create (model, frame_rid, parm_default_ssa,
- 					 TREE_TYPE (iter_parm), ctxt);
- 	      model->set_value (defssa_rid, arg_sid, ctxt);
- 	    }
- 	}
-     }
-   else
-     {
-       /* No known arguments (a top-level call within the analysis).  */
- 
-       /* Params have a defined, unknown value; they should not inherit
- 	 from the poisoned uninit value.  */
-       tree fndecl = fun->decl;
-       for (tree iter_parm = DECL_ARGUMENTS (fndecl); iter_parm;
- 	   iter_parm = DECL_CHAIN (iter_parm))
- 	{
- 	  region_id parm_rid
- 	    = region->get_or_create (model, frame_rid, iter_parm,
- 				     TREE_TYPE (iter_parm), ctxt);
- 	  svalue_id parm_sid
- 	    = model->set_to_new_unknown_value (parm_rid, TREE_TYPE (iter_parm),
- 					       ctxt);
- 
- 	  /* Also do it for default SSA name (sharing the same unknown
- 	     value).  */
- 	  tree parm_default_ssa = ssa_default_def (fun, iter_parm);
- 	  if (parm_default_ssa)
- 	    {
- 	      region_id defssa_rid
- 		= region->get_or_create (model, frame_rid, parm_default_ssa,
- 					 TREE_TYPE (iter_parm), ctxt);
- 	      model->get_region (defssa_rid)->set_value (*model, defssa_rid,
- 							 parm_sid, ctxt);
- 	    }
- 	}
-     }
- 
-   stack->push_frame (frame_rid);
- 
-   return frame_rid;
- }
- 
- /* Get the region_id of the top-most frame in this root_region's stack,
-    if any.  */
- 
- region_id
- root_region::get_current_frame_id (const region_model &model) const
- {
-   stack_region *stack = model.get_region <stack_region> (m_stack_rid);
-   if (stack)
-     return stack->get_current_frame_id ();
-   else
-     return region_id::null ();
- }
- 
- /* Pop the topmost frame_region from this root_region's stack;
-    see the comment for stack_region::pop_frame.  */
- 
- void
- root_region::pop_frame (region_model *model, region_id result_dst_rid,
- 			bool purge, purge_stats *out,
- 			region_model_context *ctxt)
- {
-   stack_region *stack = model->get_region <stack_region> (m_stack_rid);
-   stack->pop_frame (model, result_dst_rid, purge, out, ctxt);
- }
- 
- /* Return the region_id of the stack region, creating it if doesn't
-    already exist.  */
- 
- region_id
- root_region::ensure_stack_region (region_model *model)
- {
-   if (m_stack_rid.null_p ())
-     {
-       m_stack_rid
- 	= model->add_region (new stack_region (model->get_root_rid (),
- 					       svalue_id::null ()));
-     }
-   return m_stack_rid;
- }
- 
- /* Return the stack region (which could be NULL).  */
- 
- stack_region *
- root_region::get_stack_region (const region_model *model) const
- {
-   return model->get_region <stack_region> (m_stack_rid);
- }
- 
- /* Return the region_id of the globals region, creating it if doesn't
-    already exist.  */
- 
- region_id
- root_region::ensure_globals_region (region_model *model)
- {
-   if (m_globals_rid.null_p ())
-     m_globals_rid
-       = model->add_region (new globals_region (model->get_root_rid ()));
-   return m_globals_rid;
- }
- 
- /* Return the code region (which could be NULL).  */
- 
- code_region *
- root_region::get_code_region (const region_model *model) const
- {
-   return model->get_region <code_region> (m_code_rid);
- }
- 
- /* Return the region_id of the code region, creating it if doesn't
-    already exist.  */
- 
- region_id
- root_region::ensure_code_region (region_model *model)
- {
-   if (m_code_rid.null_p ())
-     m_code_rid
-       = model->add_region (new code_region (model->get_root_rid ()));
-   return m_code_rid;
- }
- 
- /* Return the globals region (which could be NULL).  */
- 
- globals_region *
- root_region::get_globals_region (const region_model *model) const
- {
-   return model->get_region <globals_region> (m_globals_rid);
- }
- 
- /* Return the region_id of the heap region, creating it if doesn't
-    already exist.  */
- 
- region_id
- root_region::ensure_heap_region (region_model *model)
- {
-   if (m_heap_rid.null_p ())
-     {
-       m_heap_rid
- 	= model->add_region (new heap_region (model->get_root_rid (),
- 					      svalue_id::null ()));
-     }
-   return m_heap_rid;
- }
- 
- /* Return the heap region (which could be NULL).  */
- 
- heap_region *
- root_region::get_heap_region (const region_model *model) const
- {
-   return model->get_region <heap_region> (m_heap_rid);
- }
- 
- /* Implementation of region::remap_region_ids vfunc for root_region.  */
- 
- void
- root_region::remap_region_ids (const region_id_map &map)
- {
-   map.update (&m_stack_rid);
-   map.update (&m_globals_rid);
-   map.update (&m_code_rid);
-   map.update (&m_heap_rid);
- }
- 
- /* Attempt to merge ROOT_REGION_A and ROOT_REGION_B into
-    MERGED_ROOT_REGION using MERGER.
-    Return true if the merger is possible, false otherwise.  */
- 
- bool
- root_region::can_merge_p (const root_region *root_region_a,
- 			  const root_region *root_region_b,
- 			  root_region *merged_root_region,
- 			  model_merger *merger)
- {
-   /* We can only merge if the stacks are sufficiently similar.  */
-   stack_region *stack_a = root_region_a->get_stack_region (merger->m_model_a);
-   stack_region *stack_b = root_region_b->get_stack_region (merger->m_model_b);
-   if (stack_a && stack_b)
-     {
-       /* If the two models both have a stack, attempt to merge them.  */
-       merged_root_region->ensure_stack_region (merger->m_merged_model);
-       if (!stack_region::can_merge_p (stack_a, stack_b, merger))
- 	return false;
-     }
-   else if (stack_a || stack_b)
-     /* Don't attempt to merge if one model has a stack and the other
-        doesn't.  */
-     return false;
- 
-   map_region *globals_a = root_region_a->get_globals_region (merger->m_model_a);
-   map_region *globals_b = root_region_b->get_globals_region (merger->m_model_b);
-   if (globals_a && globals_b)
-     {
-       /* If both models have globals regions, attempt to merge them.  */
-       region_id merged_globals_rid
- 	= merged_root_region->ensure_globals_region (merger->m_merged_model);
-       map_region *merged_globals
- 	= merged_root_region->get_globals_region (merger->m_merged_model);
-       if (!map_region::can_merge_p (globals_a, globals_b,
- 				    merged_globals, merged_globals_rid,
- 				    merger))
- 	return false;
-     }
-   /* otherwise, merge as "no globals".  */
- 
-   map_region *code_a = root_region_a->get_code_region (merger->m_model_a);
-   map_region *code_b = root_region_b->get_code_region (merger->m_model_b);
-   if (code_a && code_b)
-     {
-       /* If both models have code regions, attempt to merge them.  */
-       region_id merged_code_rid
- 	= merged_root_region->ensure_code_region (merger->m_merged_model);
-       map_region *merged_code
- 	= merged_root_region->get_code_region (merger->m_merged_model);
-       if (!map_region::can_merge_p (code_a, code_b,
- 				    merged_code, merged_code_rid,
- 				    merger))
- 	return false;
-     }
-   /* otherwise, merge as "no code".  */
- 
-   heap_region *heap_a = root_region_a->get_heap_region (merger->m_model_a);
-   heap_region *heap_b = root_region_b->get_heap_region (merger->m_model_b);
-   if (heap_a && heap_b)
-     {
-       /* If both have a heap, create a "merged" heap.
- 	 Actually merging the heap contents happens via the region_svalue
- 	 instances, as needed, when seeing pairs of region_svalue instances.  */
-       merged_root_region->ensure_heap_region (merger->m_merged_model);
-     }
-   /* otherwise, merge as "no heap".  */
- 
-   return true;
- }
- 
- /* Implementation of region::add_to_hash vfunc for root_region.  */
- 
- void
- root_region::add_to_hash (inchash::hash &hstate) const
- {
-   region::add_to_hash (hstate);
-   inchash::add (m_stack_rid, hstate);
-   inchash::add (m_globals_rid, hstate);
-   inchash::add (m_code_rid, hstate);
-   inchash::add (m_heap_rid, hstate);
- }
- 
- /* Implementation of region::walk_for_canonicalization vfunc for
-    root_region.  */
- 
- void
- root_region::walk_for_canonicalization (canonicalization *c) const
- {
-   c->walk_rid (m_stack_rid);
-   c->walk_rid (m_globals_rid);
-   c->walk_rid (m_code_rid);
-   c->walk_rid (m_heap_rid);
- }
- 
- /* For debugging purposes: look for a descendant region for a local
-    or global decl named IDENTIFIER (or an SSA_NAME for such a decl),
-    returning its value, or svalue_id::null if none are found.  */
- 
- svalue_id
- root_region::get_value_by_name (tree identifier,
- 				const region_model &model) const
- {
-   if (stack_region *stack = get_stack_region (&model))
-     {
-       svalue_id sid = stack->get_value_by_name (identifier, model);
-       if (!sid.null_p ())
- 	return sid;
-     }
-   if (map_region *globals = get_globals_region (&model))
-     {
-       svalue_id sid = globals->get_value_by_name (identifier, model);
-       if (!sid.null_p ())
- 	return sid;
-     }
-   return svalue_id::null ();
- }
- 
- /* class symbolic_region : public map_region.  */
- 
- /* symbolic_region's copy ctor.  */
- 
- symbolic_region::symbolic_region (const symbolic_region &other)
- : region (other),
-   m_possibly_null (other.m_possibly_null)
- {
- }
- 
- /* Compare the fields of this symbolic_region with OTHER, returning true
-    if they are equal.
-    For use by region::operator==.  */
- 
- bool
- symbolic_region::compare_fields (const symbolic_region &other) const
- {
-   return m_possibly_null == other.m_possibly_null;
- }
- 
- /* Implementation of region::clone vfunc for symbolic_region.  */
- 
- region *
- symbolic_region::clone () const
- {
-   return new symbolic_region (*this);
- }
- 
- /* Implementation of region::walk_for_canonicalization vfunc for
-    symbolic_region.  */
- 
- void
- symbolic_region::walk_for_canonicalization (canonicalization *) const
- {
-   /* Empty.  */
- }
- 
- /* Implementation of region::print_fields vfunc for symbolic_region.  */
- 
- void
- symbolic_region::print_fields (const region_model &model,
- 			       region_id this_rid,
- 			       pretty_printer *pp) const
- {
-   region::print_fields (model, this_rid, pp);
-   pp_printf (pp, ", possibly_null: %s", m_possibly_null ? "true" : "false");
- }
- 
  /* class region_model.  */
  
! /* region_model's default ctor.  */
  
! region_model::region_model ()
  {
!   m_root_rid = add_region (new root_region ());
!   m_constraints = new impl_constraint_manager (this);
!   // TODO
  }
  
  /* region_model's copy ctor.  */
  
  region_model::region_model (const region_model &other)
! : m_svalues (other.m_svalues.length ()),
!   m_regions (other.m_regions.length ()),
!   m_root_rid (other.m_root_rid)
  {
-   /* Clone the svalues and regions.  */
-   int i;
- 
-   svalue *svalue;
-   FOR_EACH_VEC_ELT (other.m_svalues, i, svalue)
-     m_svalues.quick_push (svalue->clone ());
- 
-   region *region;
-   FOR_EACH_VEC_ELT (other.m_regions, i, region)
-     m_regions.quick_push (region->clone ());
- 
-   m_constraints = other.m_constraints->clone (this);
  }
  
  /* region_model's dtor.  */
--- 110,132 ----
    pp_end_quote (pp, pp_show_color (pp));
  }
  
  /* class region_model.  */
  
! /* Ctor for region_model: construct an "empty" model.  */
  
! region_model::region_model (region_model_manager *mgr)
! : m_mgr (mgr), m_store (), m_current_frame (NULL)
  {
!   m_constraints = new constraint_manager (mgr);
  }
  
  /* region_model's copy ctor.  */
  
  region_model::region_model (const region_model &other)
! : m_mgr (other.m_mgr), m_store (other.m_store),
!   m_constraints (new constraint_manager (*other.m_constraints)),
!   m_current_frame (other.m_current_frame)
  {
  }
  
  /* region_model's dtor.  */
*************** region_model::~region_model ()
*** 3501,3568 ****
  region_model &
  region_model::operator= (const region_model &other)
  {
!   unsigned i;
!   svalue *svalue;
!   region *region;
! 
!   /* Delete existing content.  */
!   FOR_EACH_VEC_ELT (m_svalues, i, svalue)
!     delete svalue;
!   m_svalues.truncate (0);
  
!   FOR_EACH_VEC_ELT (m_regions, i, region)
!     delete region;
!   m_regions.truncate (0);
  
    delete m_constraints;
  
!   /* Clone the svalues and regions.  */
!   m_svalues.reserve (other.m_svalues.length (), true);
!   FOR_EACH_VEC_ELT (other.m_svalues, i, svalue)
!     m_svalues.quick_push (svalue->clone ());
! 
!   m_regions.reserve (other.m_regions.length (), true);
!   FOR_EACH_VEC_ELT (other.m_regions, i, region)
!     m_regions.quick_push (region->clone ());
! 
!   m_root_rid = other.m_root_rid;
! 
!   m_constraints = other.m_constraints->clone (this);
  
    return *this;
  }
  
  /* Equality operator for region_model.
  
!    Amongst other things this directly compares the svalue and region
!    vectors and so for this to be meaningful both this and OTHER should
     have been canonicalized.  */
  
  bool
  region_model::operator== (const region_model &other) const
  {
!   if (m_root_rid != other.m_root_rid)
!     return false;
! 
!   if (m_svalues.length () != other.m_svalues.length ())
!     return false;
  
!   if (m_regions.length () != other.m_regions.length ())
      return false;
  
    if (*m_constraints != *other.m_constraints)
      return false;
  
!   unsigned i;
!   svalue *svalue;
!   FOR_EACH_VEC_ELT (other.m_svalues, i, svalue)
!     if (!(*m_svalues[i] == *other.m_svalues[i]))
!       return false;
! 
!   region *region;
!   FOR_EACH_VEC_ELT (other.m_regions, i, region)
!     if (!(*m_regions[i] == *other.m_regions[i]))
!       return false;
  
    gcc_checking_assert (hash () == other.hash ());
  
--- 141,179 ----
  region_model &
  region_model::operator= (const region_model &other)
  {
!   /* m_mgr is const.  */
!   gcc_assert (m_mgr == other.m_mgr);
  
!   m_store = other.m_store;
  
    delete m_constraints;
+   m_constraints = new constraint_manager (*other.m_constraints);
  
!   m_current_frame = other.m_current_frame;
  
    return *this;
  }
  
  /* Equality operator for region_model.
  
!    Amongst other things this directly compares the stores and the constraint
!    managers, so for this to be meaningful both this and OTHER should
     have been canonicalized.  */
  
  bool
  region_model::operator== (const region_model &other) const
  {
!   /* We can only compare instances that use the same manager.  */
!   gcc_assert (m_mgr == other.m_mgr);
  
!   if (m_store != other.m_store)
      return false;
  
    if (*m_constraints != *other.m_constraints)
      return false;
  
!   if (m_current_frame != other.m_current_frame)
!     return false;
  
    gcc_checking_assert (hash () == other.hash ());
  
*************** region_model::operator== (const region_m
*** 3574,4029 ****
  hashval_t
  region_model::hash () const
  {
!   hashval_t result = 0;
!   int i;
! 
!   svalue *svalue;
!   FOR_EACH_VEC_ELT (m_svalues, i, svalue)
!     result ^= svalue->hash ();
! 
!   region *region;
!   FOR_EACH_VEC_ELT (m_regions, i, region)
!     result ^= region->hash ();
! 
    result ^= m_constraints->hash ();
- 
    return result;
  }
  
! /* Print an all-on-one-line representation of this region_model to PP,
!    which must support %E for trees.  */
  
  void
! region_model::print (pretty_printer *pp) const
  {
!   int i;
! 
!   pp_string (pp, "svalues: [");
!   svalue *svalue;
!   FOR_EACH_VEC_ELT (m_svalues, i, svalue)
!     {
!       if (i > 0)
! 	pp_string (pp, ", ");
!       print_svalue (svalue_id::from_int (i), pp);
!     }
! 
!   pp_string (pp, "], regions: [");
! 
!   region *region;
!   FOR_EACH_VEC_ELT (m_regions, i, region)
      {
!       if (i > 0)
  	pp_string (pp, ", ");
!       region->print (*this, region_id::from_int (i), pp);
!     }
! 
!   pp_string (pp, "], constraints: ");
! 
!   m_constraints->print (pp);
! }
! 
! /* Print the svalue with id SID to PP.  */
! 
! void
! region_model::print_svalue (svalue_id sid, pretty_printer *pp) const
! {
!   get_svalue (sid)->print (*this, sid, pp);
! }
! 
! /* Dump a .dot representation of this region_model to PP, showing
!    the values and the hierarchy of regions.  */
! 
! void
! region_model::dump_dot_to_pp (pretty_printer *pp) const
! {
!   graphviz_out gv (pp);
! 
!   pp_string (pp, "digraph \"");
!   pp_write_text_to_stream (pp);
!   pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/false);
!   pp_string (pp, "\" {\n");
! 
!   gv.indent ();
! 
!   pp_string (pp, "overlap=false;\n");
!   pp_string (pp, "compound=true;\n");
! 
!   int i;
! 
!   svalue *svalue;
!   FOR_EACH_VEC_ELT (m_svalues, i, svalue)
!     svalue->dump_dot_to_pp (*this, svalue_id::from_int (i), pp);
! 
!   region *region;
!   FOR_EACH_VEC_ELT (m_regions, i, region)
!     region->dump_dot_to_pp (*this, region_id::from_int (i), pp);
! 
!   /* TODO: constraints.  */
! 
!   /* Terminate "digraph" */
!   gv.outdent ();
!   pp_string (pp, "}");
!   pp_newline (pp);
! }
! 
! /* Dump a .dot representation of this region_model to FP.  */
! 
! void
! region_model::dump_dot_to_file (FILE *fp) const
! {
!   pretty_printer pp;
!   pp_format_decoder (&pp) = default_tree_printer;
!   pp.buffer->stream = fp;
!   dump_dot_to_pp (&pp);
!   pp_flush (&pp);
! }
! 
! /* Dump a .dot representation of this region_model to PATH.  */
! 
! void
! region_model::dump_dot (const char *path) const
! {
!   FILE *fp = fopen (path, "w");
!   dump_dot_to_file (fp);
!   fclose (fp);
! }
! 
! /* Dump a multiline representation of this model to PP, showing the
!    region hierarchy, the svalues, and any constraints.
! 
!    If SUMMARIZE is true, show only the most pertinent information,
!    in a form that attempts to be less verbose.
!    Otherwise, show all information.  */
! 
! void
! region_model::dump_to_pp (pretty_printer *pp, bool summarize) const
! {
!   if (summarize)
!     {
!       auto_vec<path_var> rep_path_vars;
! 
!       unsigned i;
!       region *reg;
!       FOR_EACH_VEC_ELT (m_regions, i, reg)
! 	{
! 	  region_id rid = region_id::from_int (i);
! 	  path_var pv = get_representative_path_var (rid);
! 	  if (pv.m_tree)
! 	    rep_path_vars.safe_push (pv);
! 	}
!       bool is_first = true;
! 
!       /* Work with a copy in case the get_lvalue calls change anything
! 	 (they shouldn't).  */
!       region_model copy (*this);
!       copy.dump_summary_of_rep_path_vars (pp, &rep_path_vars, &is_first);
! 
!       equiv_class *ec;
!       FOR_EACH_VEC_ELT (m_constraints->m_equiv_classes, i, ec)
! 	{
! 	  for (unsigned j = 0; j < ec->m_vars.length (); j++)
! 	    {
! 	      svalue_id lhs_sid = ec->m_vars[j];
! 	      tree lhs_tree = get_representative_tree (lhs_sid);
! 	      if (lhs_tree == NULL_TREE)
! 		continue;
! 	      for (unsigned k = j + 1; k < ec->m_vars.length (); k++)
! 		{
! 		  svalue_id rhs_sid = ec->m_vars[k];
! 		  tree rhs_tree = get_representative_tree (rhs_sid);
! 		  if (rhs_tree
! 		      && !(CONSTANT_CLASS_P (lhs_tree)
! 			   && CONSTANT_CLASS_P (rhs_tree)))
! 		    {
! 		      dump_separator (pp, &is_first);
! 		      dump_tree (pp, lhs_tree);
! 		      pp_string (pp, " == ");
! 		      dump_tree (pp, rhs_tree);
! 		    }
! 		}
! 	    }
! 	}
! 
!       constraint *c;
!       FOR_EACH_VEC_ELT (m_constraints->m_constraints, i, c)
! 	{
! 	  const equiv_class &lhs = c->m_lhs.get_obj (*m_constraints);
! 	  const equiv_class &rhs = c->m_rhs.get_obj (*m_constraints);
! 	  svalue_id lhs_sid = lhs.get_representative ();
! 	  svalue_id rhs_sid = rhs.get_representative ();
! 	  tree lhs_tree = get_representative_tree (lhs_sid);
! 	  tree rhs_tree = get_representative_tree (rhs_sid);
! 	  if (lhs_tree && rhs_tree
! 	      && !(CONSTANT_CLASS_P (lhs_tree) && CONSTANT_CLASS_P (rhs_tree)))
! 	    {
! 	      dump_separator (pp, &is_first);
! 	      dump_tree (pp, lhs_tree);
! 	      pp_printf (pp, " %s ", constraint_op_code (c->m_op));
! 	      dump_tree (pp, rhs_tree);
! 	   }
! 	}
! 
!       return;
      }
  
!   get_region (m_root_rid)->dump_to_pp (*this, m_root_rid, pp, "", true);
! 
!   pp_string (pp, "svalues:");
!   pp_newline (pp);
!   int i;
!   svalue *svalue;
!   FOR_EACH_VEC_ELT (m_svalues, i, svalue)
!     {
!       pp_string (pp, "  ");
!       svalue_id sid = svalue_id::from_int (i);
!       print_svalue (sid, pp);
!       pp_newline (pp);
!     }
  
!   pp_string (pp, "constraint manager:");
!   pp_newline (pp);
!   m_constraints->dump_to_pp (pp);
  }
  
! /* Dump a multiline representation of this model to FILE.  */
  
  void
! region_model::dump (FILE *fp, bool summarize) const
  {
    pretty_printer pp;
    pp_format_decoder (&pp) = default_tree_printer;
    pp_show_color (&pp) = pp_show_color (global_dc->printer);
    pp.buffer->stream = fp;
!   dump_to_pp (&pp, summarize);
    pp_flush (&pp);
  }
  
  /* Dump a multiline representation of this model to stderr.  */
  
  DEBUG_FUNCTION void
! region_model::dump (bool summarize) const
  {
!   dump (stderr, summarize);
  }
  
! /* Dump RMODEL fully to stderr (i.e. without summarization).  */
  
  DEBUG_FUNCTION void
  region_model::debug () const
  {
!   dump (false);
! }
! 
! /* Dump VEC to PP, in the form "{VEC elements}: LABEL".  */
! 
! static void
! dump_vec_of_tree (pretty_printer *pp,
! 		  bool *is_first,
! 		  const auto_vec<tree> &vec,
! 		  const char *label)
! {
!   if (vec.length () == 0)
!     return;
! 
!   dump_separator (pp, is_first);
!   pp_printf (pp, "{");
!   unsigned i;
!   tree key;
!   FOR_EACH_VEC_ELT (vec, i, key)
!     {
!       if (i > 0)
! 	pp_string (pp, ", ");
!       dump_tree (pp, key);
!     }
!   pp_printf (pp, "}: %s", label);
! }
! 
! /* Dump all *REP_PATH_VARS to PP in compact form, updating *IS_FIRST.
!    Subroutine of region_model::dump_to_pp.  */
! 
! void
! region_model::dump_summary_of_rep_path_vars (pretty_printer *pp,
! 					     auto_vec<path_var> *rep_path_vars,
! 					     bool *is_first)
! {
!   /* Print pointers, constants, and poisoned values that aren't "uninit";
!      gather keys for unknown and uninit values.  */
!   unsigned i;
!   path_var *pv;
!   auto_vec<tree> unknown_trees;
!   FOR_EACH_VEC_ELT (*rep_path_vars, i, pv)
!     {
!       if (TREE_CODE (pv->m_tree) == STRING_CST)
! 	continue;
!       tentative_region_model_context ctxt;
!       region_id child_rid = get_lvalue (*pv, &ctxt);
!       if (ctxt.had_errors_p ())
! 	continue;
!       region *child_region = get_region (child_rid);
!       if (!child_region)
! 	continue;
!       svalue_id sid = child_region->get_value_direct ();
!       if (sid.null_p ())
! 	continue;
!       svalue *sval = get_svalue (sid);
!       switch (sval->get_kind ())
! 	{
! 	default:
! 	  gcc_unreachable ();
! 	case SK_REGION:
! 	  {
! 	    region_svalue *region_sval = as_a <region_svalue *> (sval);
! 	    region_id pointee_rid = region_sval->get_pointee ();
! 	    gcc_assert (!pointee_rid.null_p ());
! 	    tree pointee = get_representative_path_var (pointee_rid).m_tree;
! 	    dump_separator (pp, is_first);
! 	    dump_tree (pp, pv->m_tree);
! 	    pp_string (pp, ": ");
! 	    pp_character (pp, '&');
! 	    if (pointee)
! 	      dump_tree (pp, pointee);
! 	    else
! 	      pointee_rid.print (pp);
! 	  }
! 	  break;
! 	case SK_CONSTANT:
! 	  dump_separator (pp, is_first);
! 	  dump_tree (pp, pv->m_tree);
! 	  pp_string (pp, ": ");
! 	  dump_tree (pp, sval->dyn_cast_constant_svalue ()->get_constant ());
! 	  break;
! 	case SK_UNKNOWN:
! 	  unknown_trees.safe_push (pv->m_tree);
! 	  break;
! 	case SK_POISONED:
! 	  {
! 	    poisoned_svalue *poisoned_sval = as_a <poisoned_svalue *> (sval);
! 	    enum poison_kind pkind = poisoned_sval->get_poison_kind ();
! 	    dump_separator (pp, is_first);
! 	    dump_tree (pp, pv->m_tree);
! 	    pp_printf (pp, ": %s", poison_kind_to_str (pkind));
! 	  }
! 	  break;
! 	case SK_SETJMP:
! 	  dump_separator (pp, is_first);
! 	  pp_printf (pp, "setjmp: EN: %i",
! 		     sval->dyn_cast_setjmp_svalue ()->get_enode_index ());
! 	  break;
! 	}
!     }
! 
!   /* Print unknown and uninitialized values in consolidated form.  */
!   dump_vec_of_tree (pp, is_first, unknown_trees, "unknown");
! }
! 
! /* Assert that this object is valid.  */
! 
! void
! region_model::validate () const
! {
!   /* Skip this in a release build.  */
! #if !CHECKING_P
!   return;
! #endif
! 
!   m_constraints->validate ();
! 
!   unsigned i;
!   region *r;
!   FOR_EACH_VEC_ELT (m_regions, i, r)
!     r->validate (*this);
! 
!   // TODO: anything else?
! }
! 
! /* Global data for use by svalue_id_cmp_by_constant_svalue.  */
! 
! static region_model *svalue_id_cmp_by_constant_svalue_model = NULL;
! 
! /* Comparator for use by region_model::canonicalize.  */
! 
! static int
! svalue_id_cmp_by_constant_svalue (const void *p1, const void *p2)
! {
!   const svalue_id *sid1 = (const svalue_id *)p1;
!   const svalue_id *sid2 = (const svalue_id *)p2;
!   gcc_assert (!sid1->null_p ());
!   gcc_assert (!sid2->null_p ());
!   gcc_assert (svalue_id_cmp_by_constant_svalue_model);
!   const svalue &sval1
!     = *svalue_id_cmp_by_constant_svalue_model->get_svalue (*sid1);
!   const svalue &sval2
!     = *svalue_id_cmp_by_constant_svalue_model->get_svalue (*sid2);
!   gcc_assert (sval1.get_kind () == SK_CONSTANT);
!   gcc_assert (sval2.get_kind () == SK_CONSTANT);
! 
!   tree cst1 = ((const constant_svalue &)sval1).get_constant ();
!   tree cst2 = ((const constant_svalue &)sval2).get_constant ();
!   return tree_cmp (cst1, cst2);
  }
  
! /* Reorder the regions and svalues into a deterministic "canonical" order,
!    to maximize the chance of equality.
!    If non-NULL, notify CTXT about the svalue id remapping.  */
  
  void
! region_model::canonicalize (region_model_context *ctxt)
  {
!   /* Walk all regions and values in a deterministic order, visiting
!      rids and sids, generating a rid and sid map.  */
!   canonicalization c (*this);
! 
!   /* (1): Walk all svalues, putting constants first, sorting the constants
!      (thus imposing an ordering on any constants that are purely referenced
!      by constraints).
!      Ignore other svalues for now.  */
!   {
!     unsigned i;
!     auto_vec<svalue_id> sids;
!     svalue *sval;
!     FOR_EACH_VEC_ELT (m_svalues, i, sval)
!       {
! 	if (sval->get_kind () == SK_CONSTANT)
! 	  sids.safe_push (svalue_id::from_int (i));
!       }
!     svalue_id_cmp_by_constant_svalue_model = this;
!     sids.qsort (svalue_id_cmp_by_constant_svalue);
!     svalue_id_cmp_by_constant_svalue_model = NULL;
!     svalue_id *sid;
!     FOR_EACH_VEC_ELT (sids, i, sid)
!       c.walk_sid (*sid);
!   }
! 
!   /* (2): Walk all regions (and thus their values) in a deterministic
!      order.  */
!   c.walk_rid (m_root_rid);
! 
!   /* (3): Ensure we've visited everything, as we don't want to purge
!      at this stage.  Anything we visit for the first time here has
!      arbitrary order.  */
!   {
!     unsigned i;
!     region *region;
!     FOR_EACH_VEC_ELT (m_regions, i, region)
!       c.walk_rid (region_id::from_int (i));
!     svalue *sval;
!     FOR_EACH_VEC_ELT (m_svalues, i, sval)
!       c.walk_sid (svalue_id::from_int (i));
!   }
! 
!   /* (4): We now have a reordering of the regions and values.
!      Apply it.  */
!   remap_svalue_ids (c.m_sid_map);
!   remap_region_ids (c.m_rid_map);
!   if (ctxt)
!     ctxt->remap_svalue_ids (c.m_sid_map);
! 
!   /* (5): Canonicalize the constraint_manager (it has already had its
!      svalue_ids remapped above).  This makes use of the new svalue_id
!      values, and so must happen last.  */
!   m_constraints->canonicalize (get_num_svalues ());
! 
!   validate ();
  }
  
  /* Return true if this region_model is in canonical form.  */
--- 185,281 ----
  hashval_t
  region_model::hash () const
  {
!   hashval_t result = m_store.hash ();
    result ^= m_constraints->hash ();
    return result;
  }
  
! /* Dump a representation of this model to PP, showing the
!    stack, the store, and any constraints.
!    Use SIMPLE to control how svalues and regions are printed.  */
  
  void
! region_model::dump_to_pp (pretty_printer *pp, bool simple,
! 			  bool multiline) const
  {
!   /* Dump stack.  */
!   pp_printf (pp, "stack depth: %i", get_stack_depth ());
!   if (multiline)
!     pp_newline (pp);
!   else
!     pp_string (pp, " {");
!   for (const frame_region *iter_frame = m_current_frame; iter_frame;
!        iter_frame = iter_frame->get_calling_frame ())
      {
!       if (multiline)
! 	pp_string (pp, "  ");
!       else if (iter_frame != m_current_frame)
  	pp_string (pp, ", ");
!       pp_printf (pp, "frame (index %i): ", iter_frame->get_index ());
!       iter_frame->dump_to_pp (pp, simple);
!       if (multiline)
! 	pp_newline (pp);
      }
+   if (!multiline)
+     pp_string (pp, "}");
  
!   /* Dump store.  */
!   if (!multiline)
!     pp_string (pp, ", {");
!   m_store.dump_to_pp (pp, simple, multiline,
! 		      m_mgr->get_store_manager ());
!   if (!multiline)
!     pp_string (pp, "}");
  
!   /* Dump constraints.  */
!   pp_string (pp, "constraint_manager:");
!   if (multiline)
!     pp_newline (pp);
!   else
!     pp_string (pp, " {");
!   m_constraints->dump_to_pp (pp, multiline);
!   if (!multiline)
!     pp_string (pp, "}");
  }
  
! /* Dump a representation of this model to FILE.  */
  
  void
! region_model::dump (FILE *fp, bool simple, bool multiline) const
  {
    pretty_printer pp;
    pp_format_decoder (&pp) = default_tree_printer;
    pp_show_color (&pp) = pp_show_color (global_dc->printer);
    pp.buffer->stream = fp;
!   dump_to_pp (&pp, simple, multiline);
!   pp_newline (&pp);
    pp_flush (&pp);
  }
  
  /* Dump a multiline representation of this model to stderr.  */
  
  DEBUG_FUNCTION void
! region_model::dump (bool simple) const
  {
!   dump (stderr, simple, true);
  }
  
! /* Dump a multiline representation of this model to stderr.  */
  
  DEBUG_FUNCTION void
  region_model::debug () const
  {
!   dump (true);
  }
  
! /* Canonicalize the store and constraints, to maximize the chance of
!    equality between region_model instances.  */
  
  void
! region_model::canonicalize ()
  {
!   m_store.canonicalize (m_mgr->get_store_manager ());
!   m_constraints->canonicalize ();
  }
  
  /* Return true if this region_model is in canonical form.  */
*************** bool
*** 4032,4041 ****
  region_model::canonicalized_p () const
  {
    region_model copy (*this);
!   copy.canonicalize (NULL);
    return *this == copy;
  }
  
  /* A subclass of pending_diagnostic for complaining about uses of
     poisoned values.  */
  
--- 284,301 ----
  region_model::canonicalized_p () const
  {
    region_model copy (*this);
!   copy.canonicalize ();
    return *this == copy;
  }
  
+ /* See the comment for store::loop_replay_fixup.  */
+ 
+ void
+ region_model::loop_replay_fixup (const region_model *dst_state)
+ {
+   m_store.loop_replay_fixup (dst_state->get_store (), m_mgr);
+ }
+ 
  /* A subclass of pending_diagnostic for complaining about uses of
     poisoned values.  */
  
*************** public:
*** 4073,4082 ****
        case POISON_KIND_POPPED_STACK:
  	{
  	  /* TODO: which CWE?  */
! 	  return warning_at (rich_loc,
! 			     OPT_Wanalyzer_use_of_pointer_in_stale_stack_frame,
! 			     "use of pointer %qE within stale stack frame",
! 			     m_expr);
  	}
  	break;
        }
--- 333,343 ----
        case POISON_KIND_POPPED_STACK:
  	{
  	  /* TODO: which CWE?  */
! 	  return warning_at
! 	    (rich_loc,
! 	     OPT_Wanalyzer_use_of_pointer_in_stale_stack_frame,
! 	     "dereferencing pointer %qE to within stale stack frame",
! 	     m_expr);
  	}
  	break;
        }
*************** public:
*** 4093,4099 ****
  				   m_expr);
        case POISON_KIND_POPPED_STACK:
  	return ev.formatted_print
! 	  ("use of pointer %qE within stale stack frame here",
  	   m_expr);
        }
    }
--- 354,360 ----
  				   m_expr);
        case POISON_KIND_POPPED_STACK:
  	return ev.formatted_print
! 	  ("dereferencing pointer %qE to within stale stack frame",
  	   m_expr);
        }
    }
*************** private:
*** 4103,4187 ****
    enum poison_kind m_pkind;
  };
  
! /* Determine if EXPR is poisoned, and if so, queue a diagnostic to CTXT.  */
  
! void
! region_model::check_for_poison (tree expr, region_model_context *ctxt)
  {
!   if (!ctxt)
!     return;
  
!   // TODO: this is disabled for now (too many false positives)
!   return;
  
!   svalue_id expr_sid = get_rvalue (expr, ctxt);
!   gcc_assert (!expr_sid.null_p ());
!   svalue *expr_svalue = get_svalue (expr_sid);
!   gcc_assert (expr_svalue);
!   if (const poisoned_svalue *poisoned_sval
! 	= expr_svalue->dyn_cast_poisoned_svalue ())
!     {
!       enum poison_kind pkind = poisoned_sval->get_poison_kind ();
!       ctxt->warn (new poisoned_value_diagnostic (expr, pkind));
!     }
! }
  
! /* Update this model for the ASSIGN stmt, using CTXT to report any
!    diagnostics.  */
  
! void
! region_model::on_assignment (const gassign *assign, region_model_context *ctxt)
  {
!   tree lhs = gimple_assign_lhs (assign);
!   tree rhs1 = gimple_assign_rhs1 (assign);
  
!   region_id lhs_rid = get_lvalue (lhs, ctxt);
  
!   /* Check for uses of poisoned values.  */
!   switch (get_gimple_rhs_class (gimple_expr_code (assign)))
!     {
!     case GIMPLE_INVALID_RHS:
!       gcc_unreachable ();
!       break;
!     case GIMPLE_TERNARY_RHS:
!       check_for_poison (gimple_assign_rhs3 (assign), ctxt);
!       /* Fallthru */
!     case GIMPLE_BINARY_RHS:
!       check_for_poison (gimple_assign_rhs2 (assign), ctxt);
!       /* Fallthru */
!     case GIMPLE_UNARY_RHS:
!     case GIMPLE_SINGLE_RHS:
!       check_for_poison (gimple_assign_rhs1 (assign), ctxt);
!     }
  
!   if (lhs_rid.null_p ())
!     return;
!   // TODO: issue a warning for this case
  
    enum tree_code op = gimple_assign_rhs_code (assign);
    switch (op)
      {
      default:
!       {
! 	if (0)
! 	  sorry_at (assign->location, "unhandled assignment op: %qs",
! 		    get_tree_code_name (op));
! 	set_to_new_unknown_value (lhs_rid, TREE_TYPE (lhs), ctxt);
!       }
!       break;
! 
!     case BIT_FIELD_REF:
!       {
! 	// TODO
!       }
!       break;
! 
!     case CONSTRUCTOR:
!       {
! 	/* e.g. "x ={v} {CLOBBER};"  */
! 	// TODO
!       }
!       break;
  
      case POINTER_PLUS_EXPR:
        {
--- 364,467 ----
    enum poison_kind m_pkind;
  };
  
! /* A subclass of pending_diagnostic for complaining about shifts
!    by negative counts.  */
  
! class shift_count_negative_diagnostic
! : public pending_diagnostic_subclass<shift_count_negative_diagnostic>
  {
! public:
!   shift_count_negative_diagnostic (const gassign *assign, tree count_cst)
!   : m_assign (assign), m_count_cst (count_cst)
!   {}
  
!   const char *get_kind () const FINAL OVERRIDE
!   {
!     return "shift_count_negative_diagnostic";
!   }
  
!   bool operator== (const shift_count_negative_diagnostic &other) const
!   {
!     return (m_assign == other.m_assign
! 	    && same_tree_p (m_count_cst, other.m_count_cst));
!   }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
!   {
!     return warning_at (rich_loc, OPT_Wanalyzer_shift_count_negative,
! 		       "shift by negative count (%qE)", m_count_cst);
!   }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
!   {
!     return ev.formatted_print ("shift by negative amount here (%qE)", m_count_cst);
!   }
! 
! private:
!   const gassign *m_assign;
!   tree m_count_cst;
! };
! 
! /* A subclass of pending_diagnostic for complaining about shifts
!    by counts >= the width of the operand type.  */
! 
! class shift_count_overflow_diagnostic
! : public pending_diagnostic_subclass<shift_count_overflow_diagnostic>
  {
! public:
!   shift_count_overflow_diagnostic (const gassign *assign,
! 				   int operand_precision,
! 				   tree count_cst)
!   : m_assign (assign), m_operand_precision (operand_precision),
!     m_count_cst (count_cst)
!   {}
  
!   const char *get_kind () const FINAL OVERRIDE
!   {
!     return "shift_count_overflow_diagnostic";
!   }
  
!   bool operator== (const shift_count_overflow_diagnostic &other) const
!   {
!     return (m_assign == other.m_assign
! 	    && m_operand_precision == other.m_operand_precision
! 	    && same_tree_p (m_count_cst, other.m_count_cst));
!   }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
!   {
!     return warning_at (rich_loc, OPT_Wanalyzer_shift_count_overflow,
! 		       "shift by count (%qE) >= precision of type (%qi)",
! 		       m_count_cst, m_operand_precision);
!   }
  
+   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
+   {
+     return ev.formatted_print ("shift by count %qE here", m_count_cst);
+   }
+ 
+ private:
+   const gassign *m_assign;
+   int m_operand_precision;
+   tree m_count_cst;
+ };
+ 
+ /* If ASSIGN is a stmt that can be modelled via
+      set_value (lhs_reg, SVALUE, CTXT)
+    for some SVALUE, get the SVALUE.
+    Otherwise return NULL.  */
+ 
+ const svalue *
+ region_model::get_gassign_result (const gassign *assign,
+ 				   region_model_context *ctxt)
+ {
+   tree lhs = gimple_assign_lhs (assign);
+   tree rhs1 = gimple_assign_rhs1 (assign);
    enum tree_code op = gimple_assign_rhs_code (assign);
    switch (op)
      {
      default:
!       return NULL;
  
      case POINTER_PLUS_EXPR:
        {
*************** region_model::on_assignment (const gassi
*** 4189,4257 ****
  	tree ptr = rhs1;
  	tree offset = gimple_assign_rhs2 (assign);
  
! 	svalue_id ptr_sid = get_rvalue (ptr, ctxt);
! 	svalue_id offset_sid = get_rvalue (offset, ctxt);
! 	region_id element_rid
! 	  = get_or_create_pointer_plus_expr (TREE_TYPE (TREE_TYPE (ptr)),
! 					     ptr_sid, offset_sid,
! 					     ctxt);
! 	svalue_id element_ptr_sid
! 	  = get_or_create_ptr_svalue (TREE_TYPE (ptr), element_rid);
! 	set_value (lhs_rid, element_ptr_sid, ctxt);
        }
        break;
  
      case POINTER_DIFF_EXPR:
        {
  	/* e.g. "_1 = p_2(D) - q_3(D);".  */
  
! 	/* TODO.  */
! 
! 	set_to_new_unknown_value (lhs_rid, TREE_TYPE (lhs), ctxt);
!       }
!       break;
  
!     case ADDR_EXPR:
!       {
! 	/* LHS = &RHS;  */
! 	svalue_id ptr_sid = get_rvalue (rhs1, ctxt);
! 	set_value (lhs_rid, ptr_sid, ctxt);
        }
        break;
  
      case MEM_REF:
-       {
- 	region_id rhs_rid = get_lvalue (rhs1, ctxt);
- 	svalue_id rhs_sid
- 	  = get_region (rhs_rid)->get_value (*this, true, ctxt);
- 	set_value (lhs_rid, rhs_sid, ctxt);
-       }
-       break;
- 
      case REAL_CST:
      case INTEGER_CST:
      case ARRAY_REF:
!       {
! 	/* LHS = RHS;  */
! 	svalue_id cst_sid = get_rvalue (rhs1, ctxt);
! 	set_value (lhs_rid, cst_sid, ctxt);
!       }
!       break;
  
      case FIX_TRUNC_EXPR:
      case FLOAT_EXPR:
      case NOP_EXPR:
!       // cast: TODO
!       // fall though for now
!     case SSA_NAME:
!     case VAR_DECL:
!     case PARM_DECL:
        {
! 	/* LHS = VAR;  */
! 	region_id rhs_rid = get_lvalue (rhs1, ctxt);
! 	copy_region (lhs_rid, rhs_rid, ctxt);
        }
-       break;
  
      case EQ_EXPR:
      case GE_EXPR:
--- 469,539 ----
  	tree ptr = rhs1;
  	tree offset = gimple_assign_rhs2 (assign);
  
! 	const svalue *ptr_sval = get_rvalue (ptr, ctxt);
! 	const svalue *offset_sval = get_rvalue (offset, ctxt);
! 	/* Quoting tree.def, "the second operand [of a POINTER_PLUS_EXPR]
! 	   is an integer of type sizetype".  */
! 	offset_sval = m_mgr->get_or_create_cast (size_type_node, offset_sval);
! 
! 	const svalue *sval_binop
! 	  = m_mgr->get_or_create_binop (TREE_TYPE (lhs), op,
! 					ptr_sval, offset_sval);
! 	return sval_binop;
        }
        break;
  
      case POINTER_DIFF_EXPR:
        {
  	/* e.g. "_1 = p_2(D) - q_3(D);".  */
+ 	tree rhs2 = gimple_assign_rhs2 (assign);
+ 	const svalue *rhs1_sval = get_rvalue (rhs1, ctxt);
+ 	const svalue *rhs2_sval = get_rvalue (rhs2, ctxt);
  
! 	// TODO: perhaps fold to zero if they're known to be equal?
  
! 	const svalue *sval_binop
! 	  = m_mgr->get_or_create_binop (TREE_TYPE (lhs), op,
! 					rhs1_sval, rhs2_sval);
! 	return sval_binop;
        }
        break;
  
+     /* Assignments of the form
+ 	set_value (lvalue (LHS), rvalue (EXPR))
+        for various EXPR.
+        We already have the lvalue for the LHS above, as "lhs_reg".  */
+     case ADDR_EXPR: /* LHS = &RHS;  */
+     case BIT_FIELD_REF:
+     case COMPONENT_REF: /* LHS = op0.op1;  */
      case MEM_REF:
      case REAL_CST:
+     case COMPLEX_CST:
+     case VECTOR_CST:
      case INTEGER_CST:
      case ARRAY_REF:
!     case SSA_NAME: /* LHS = VAR; */
!     case VAR_DECL: /* LHS = VAR; */
!     case PARM_DECL:/* LHS = VAR; */
!     case REALPART_EXPR:
!     case IMAGPART_EXPR:
!       return get_rvalue (rhs1, ctxt);
  
+     case ABS_EXPR:
+     case ABSU_EXPR:
+     case CONJ_EXPR:
+     case BIT_NOT_EXPR:
      case FIX_TRUNC_EXPR:
      case FLOAT_EXPR:
+     case NEGATE_EXPR:
      case NOP_EXPR:
!     case VIEW_CONVERT_EXPR:
        {
! 	/* Unary ops.  */
! 	const svalue *rhs_sval = get_rvalue (rhs1, ctxt);
! 	const svalue *sval_unaryop
! 	  = m_mgr->get_or_create_unaryop (TREE_TYPE (lhs), op, rhs_sval);
! 	return sval_unaryop;
        }
  
      case EQ_EXPR:
      case GE_EXPR:
*************** region_model::on_assignment (const gassi
*** 4259,4338 ****
      case NE_EXPR:
      case GT_EXPR:
      case LT_EXPR:
        {
  	tree rhs2 = gimple_assign_rhs2 (assign);
  
! 	// TODO: constraints between svalues
! 	svalue_id rhs1_sid = get_rvalue (rhs1, ctxt);
! 	svalue_id rhs2_sid = get_rvalue (rhs2, ctxt);
! 
! 	tristate t = eval_condition (rhs1_sid, op, rhs2_sid);
! 	if (t.is_known ())
! 	  set_value (lhs_rid,
! 		     get_rvalue (t.is_true ()
! 				 ? boolean_true_node
! 				 : boolean_false_node,
! 				 ctxt),
! 		     ctxt);
! 	else
! 	  set_to_new_unknown_value (lhs_rid, TREE_TYPE (lhs), ctxt);
!       }
!       break;
! 
!     case NEGATE_EXPR:
!     case BIT_NOT_EXPR:
!       {
! 	// TODO: unary ops
  
! 	// TODO: constant?
  
! 	set_to_new_unknown_value (lhs_rid, TREE_TYPE (lhs), ctxt);
        }
        break;
  
      case PLUS_EXPR:
      case MINUS_EXPR:
      case MULT_EXPR:
      case TRUNC_DIV_EXPR:
      case TRUNC_MOD_EXPR:
      case LSHIFT_EXPR:
      case RSHIFT_EXPR:
      case BIT_IOR_EXPR:
      case BIT_XOR_EXPR:
      case BIT_AND_EXPR:
      case MIN_EXPR:
      case MAX_EXPR:
        {
  	/* Binary ops.  */
  	tree rhs2 = gimple_assign_rhs2 (assign);
  
! 	svalue_id rhs1_sid = get_rvalue (rhs1, ctxt);
! 	svalue_id rhs2_sid = get_rvalue (rhs2, ctxt);
  
! 	if (tree rhs1_cst = maybe_get_constant (rhs1_sid))
! 	  if (tree rhs2_cst = maybe_get_constant (rhs2_sid))
! 	    {
! 	      tree result = fold_binary (op, TREE_TYPE (lhs),
! 					 rhs1_cst, rhs2_cst);
! 	      if (result && CONSTANT_CLASS_P (result))
  		{
! 		  svalue_id result_sid
! 		    = get_or_create_constant_svalue (result);
! 		  set_value (lhs_rid, result_sid, ctxt);
! 		  return;
  		}
! 	    }
! 	set_to_new_unknown_value (lhs_rid, TREE_TYPE (lhs), ctxt);
        }
        break;
  
!     case COMPONENT_REF:
        {
! 	/* LHS = op0.op1;  */
! 	region_id child_rid = get_lvalue (rhs1, ctxt);
! 	svalue_id child_sid
! 	  = get_region (child_rid)->get_value (*this, true, ctxt);
! 	set_value (lhs_rid, child_sid, ctxt);
        }
        break;
      }
--- 541,732 ----
      case NE_EXPR:
      case GT_EXPR:
      case LT_EXPR:
+     case UNORDERED_EXPR:
+     case ORDERED_EXPR:
        {
  	tree rhs2 = gimple_assign_rhs2 (assign);
  
! 	const svalue *rhs1_sval = get_rvalue (rhs1, ctxt);
! 	const svalue *rhs2_sval = get_rvalue (rhs2, ctxt);
  
! 	if (TREE_TYPE (lhs) == boolean_type_node)
! 	  {
! 	    /* Consider constraints between svalues.  */
! 	    tristate t = eval_condition (rhs1_sval, op, rhs2_sval);
! 	    if (t.is_known ())
! 	      return m_mgr->get_or_create_constant_svalue
! 		(t.is_true () ? boolean_true_node : boolean_false_node);
! 	  }
  
! 	/* Otherwise, generate a symbolic binary op.  */
! 	const svalue *sval_binop
! 	  = m_mgr->get_or_create_binop (TREE_TYPE (lhs), op,
! 					rhs1_sval, rhs2_sval);
! 	return sval_binop;
        }
        break;
  
      case PLUS_EXPR:
      case MINUS_EXPR:
      case MULT_EXPR:
+     case MULT_HIGHPART_EXPR:
      case TRUNC_DIV_EXPR:
+     case CEIL_DIV_EXPR:
+     case FLOOR_DIV_EXPR:
+     case ROUND_DIV_EXPR:
      case TRUNC_MOD_EXPR:
+     case CEIL_MOD_EXPR:
+     case FLOOR_MOD_EXPR:
+     case ROUND_MOD_EXPR:
+     case RDIV_EXPR:
+     case EXACT_DIV_EXPR:
      case LSHIFT_EXPR:
      case RSHIFT_EXPR:
+     case LROTATE_EXPR:
+     case RROTATE_EXPR:
      case BIT_IOR_EXPR:
      case BIT_XOR_EXPR:
      case BIT_AND_EXPR:
      case MIN_EXPR:
      case MAX_EXPR:
+     case COMPLEX_EXPR:
        {
  	/* Binary ops.  */
  	tree rhs2 = gimple_assign_rhs2 (assign);
  
! 	const svalue *rhs1_sval = get_rvalue (rhs1, ctxt);
! 	const svalue *rhs2_sval = get_rvalue (rhs2, ctxt);
  
! 	if (ctxt && (op == LSHIFT_EXPR || op == RSHIFT_EXPR))
! 	  {
! 	    /* "INT34-C. Do not shift an expression by a negative number of bits
! 	       or by greater than or equal to the number of bits that exist in
! 	       the operand."  */
! 	    if (const tree rhs2_cst = rhs2_sval->maybe_get_constant ())
! 	      if (TREE_CODE (rhs2_cst) == INTEGER_CST)
  		{
! 		  if (tree_int_cst_sgn (rhs2_cst) < 0)
! 		    ctxt->warn (new shift_count_negative_diagnostic
! 				  (assign, rhs2_cst));
! 		  else if (compare_tree_int (rhs2_cst,
! 					     TYPE_PRECISION (TREE_TYPE (rhs1)))
! 			   >= 0)
! 		    ctxt->warn (new shift_count_overflow_diagnostic
! 				  (assign, TYPE_PRECISION (TREE_TYPE (rhs1)),
! 				   rhs2_cst));
  		}
! 	  }
! 
! 	const svalue *sval_binop
! 	  = m_mgr->get_or_create_binop (TREE_TYPE (lhs), op,
! 					rhs1_sval, rhs2_sval);
! 	return sval_binop;
!       }
! 
!     /* Vector expressions.  In theory we could implement these elementwise,
!        but for now, simply return unknown values.  */
!     case VEC_DUPLICATE_EXPR:
!     case VEC_SERIES_EXPR:
!     case VEC_COND_EXPR:
!     case VEC_PERM_EXPR:
!     case VEC_WIDEN_MULT_HI_EXPR:
!     case VEC_WIDEN_MULT_LO_EXPR:
!     case VEC_WIDEN_MULT_EVEN_EXPR:
!     case VEC_WIDEN_MULT_ODD_EXPR:
!     case VEC_UNPACK_HI_EXPR:
!     case VEC_UNPACK_LO_EXPR:
!     case VEC_UNPACK_FLOAT_HI_EXPR:
!     case VEC_UNPACK_FLOAT_LO_EXPR:
!     case VEC_UNPACK_FIX_TRUNC_HI_EXPR:
!     case VEC_UNPACK_FIX_TRUNC_LO_EXPR:
!     case VEC_PACK_TRUNC_EXPR:
!     case VEC_PACK_SAT_EXPR:
!     case VEC_PACK_FIX_TRUNC_EXPR:
!     case VEC_PACK_FLOAT_EXPR:
!     case VEC_WIDEN_LSHIFT_HI_EXPR:
!     case VEC_WIDEN_LSHIFT_LO_EXPR:
!       return m_mgr->get_or_create_unknown_svalue (TREE_TYPE (lhs));
!     }
! }
! 
! /* Update this model for the ASSIGN stmt, using CTXT to report any
!    diagnostics.  */
! 
! void
! region_model::on_assignment (const gassign *assign, region_model_context *ctxt)
! {
!   tree lhs = gimple_assign_lhs (assign);
!   tree rhs1 = gimple_assign_rhs1 (assign);
! 
!   const region *lhs_reg = get_lvalue (lhs, ctxt);
! 
!   /* Most assignments are handled by:
!        set_value (lhs_reg, SVALUE, CTXT)
!      for some SVALUE.  */
!   if (const svalue *sval = get_gassign_result (assign, ctxt))
!     {
!       set_value (lhs_reg, sval, ctxt);
!       return;
!     }
! 
!   enum tree_code op = gimple_assign_rhs_code (assign);
!   switch (op)
!     {
!     default:
!       {
! 	if (0)
! 	  sorry_at (assign->location, "unhandled assignment op: %qs",
! 		    get_tree_code_name (op));
! 	const svalue *unknown_sval
! 	  = m_mgr->get_or_create_unknown_svalue (TREE_TYPE (lhs));
! 	set_value (lhs_reg, unknown_sval, ctxt);
        }
        break;
  
!     case CONSTRUCTOR:
        {
! 	if (TREE_CLOBBER_P (rhs1))
! 	  {
! 	    /* e.g. "x ={v} {CLOBBER};"  */
! 	    clobber_region (lhs_reg);
! 	  }
! 	else
! 	  {
! 	    /* Any CONSTRUCTOR that survives to this point is either
! 	       just a zero-init of everything, or a vector.  */
! 	    if (!CONSTRUCTOR_NO_CLEARING (rhs1))
! 	      zero_fill_region (lhs_reg);
! 	    unsigned ix;
! 	    tree index;
! 	    tree val;
! 	    FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (rhs1), ix, index, val)
! 	      {
! 		gcc_assert (TREE_CODE (TREE_TYPE (rhs1)) == VECTOR_TYPE);
! 		if (!index)
! 		  index = build_int_cst (integer_type_node, ix);
! 		gcc_assert (TREE_CODE (index) == INTEGER_CST);
! 		const svalue *index_sval
! 		  = m_mgr->get_or_create_constant_svalue (index);
! 		gcc_assert (index_sval);
! 		const region *sub_reg
! 		  = m_mgr->get_element_region (lhs_reg,
! 					       TREE_TYPE (val),
! 					       index_sval);
! 		const svalue *val_sval = get_rvalue (val, ctxt);
! 		set_value (sub_reg, val_sval, ctxt);
! 	      }
! 	  }
!       }
!       break;
! 
!     case STRING_CST:
!       {
! 	/* e.g. "struct s2 x = {{'A', 'B', 'C', 'D'}};".  */
! 	/* Add a default binding, rather than a direct one, so that array
! 	   access will "inherit" the individual chars.  */
! 	const svalue *rhs_sval = get_rvalue (rhs1, ctxt);
! 	m_store.set_value (m_mgr->get_store_manager(), lhs_reg, rhs_sval,
! 			   BK_default, ctxt ? ctxt->get_uncertainty () : NULL);
        }
        break;
      }
*************** region_model::on_assignment (const gassi
*** 4347,4463 ****
  
     Return true if the function call has unknown side effects (it wasn't
     recognized and we don't have a body for it, or are unable to tell which
!    fndecl it is).  */
  
  bool
! region_model::on_call_pre (const gcall *call, region_model_context *ctxt)
  {
-   region_id lhs_rid;
-   tree lhs_type = NULL_TREE;
-   if (tree lhs = gimple_call_lhs (call))
-     {
-       lhs_rid = get_lvalue (lhs, ctxt);
-       lhs_type = TREE_TYPE (lhs);
-     }
- 
-   /* Check for uses of poisoned values.
-      For now, special-case "free", to avoid warning about "use-after-free"
-      when "double free" would be more precise.  */
-   if (!is_special_named_call_p (call, "free", 1))
-     for (unsigned i = 0; i < gimple_call_num_args (call); i++)
-       check_for_poison (gimple_call_arg (call, i), ctxt);
- 
    bool unknown_side_effects = false;
  
    if (tree callee_fndecl = get_fndecl_for_call (call, ctxt))
      {
!       if (is_named_call_p (callee_fndecl, "malloc", call, 1))
  	{
! 	  // TODO: capture size as a svalue?
! 	  region_id new_rid = add_new_malloc_region ();
! 	  if (!lhs_rid.null_p ())
! 	    {
! 	      svalue_id ptr_sid
! 		= get_or_create_ptr_svalue (lhs_type, new_rid);
! 	      set_value (lhs_rid, ptr_sid, ctxt);
! 	    }
  	  return false;
  	}
!       else if (is_named_call_p (callee_fndecl, "__builtin_alloca", call, 1))
  	{
! 	  region_id frame_rid = get_current_frame_id ();
! 	  region_id new_rid
! 	    = add_region (new symbolic_region (frame_rid, NULL_TREE, false));
! 	  if (!lhs_rid.null_p ())
! 	    {
! 	      svalue_id ptr_sid
! 		= get_or_create_ptr_svalue (lhs_type, new_rid);
! 	      set_value (lhs_rid, ptr_sid, ctxt);
! 	    }
! 	  return false;
  	}
!       else if (gimple_call_builtin_p (call, BUILT_IN_EXPECT)
! 	       || gimple_call_builtin_p (call, BUILT_IN_EXPECT_WITH_PROBABILITY)
! 	       || gimple_call_internal_p (call, IFN_BUILTIN_EXPECT))
  	{
! 	  /* __builtin_expect's return value is its initial argument.  */
! 	  if (!lhs_rid.null_p ())
! 	    {
! 	      tree initial_arg = gimple_call_arg (call, 0);
! 	      svalue_id sid = get_rvalue (initial_arg, ctxt);
! 	      set_value (lhs_rid, sid, ctxt);
! 	    }
! 	  return false;
  	}
!       else if (is_named_call_p (callee_fndecl, "strlen", call, 1))
  	{
! 	  region_id buf_rid = deref_rvalue (gimple_call_arg (call, 0), ctxt);
! 	  svalue_id buf_sid
! 	    = get_region (buf_rid)->get_value (*this, true, ctxt);
! 	  if (tree cst_expr = maybe_get_constant (buf_sid))
! 	    {
! 	      if (TREE_CODE (cst_expr) == STRING_CST
! 		  && !lhs_rid.null_p ())
! 		{
! 		  /* TREE_STRING_LENGTH is sizeof, not strlen.  */
! 		  int sizeof_cst = TREE_STRING_LENGTH (cst_expr);
! 		  int strlen_cst = sizeof_cst - 1;
! 		  tree t_cst = build_int_cst (lhs_type, strlen_cst);
! 		  svalue_id result_sid
! 		    = get_or_create_constant_svalue (t_cst);
! 		  set_value (lhs_rid, result_sid, ctxt);
! 		  return false;
! 		}
! 	    }
! 	  /* Otherwise an unknown value.  */
  	}
!       else if (is_named_call_p (callee_fndecl,
! 				"__analyzer_dump_num_heap_regions", call, 0))
  	{
! 	  /* Handle the builtin "__analyzer_dump_num_heap_regions" by emitting
! 	     a warning (for use in DejaGnu tests).  */
! 	  int num_heap_regions = 0;
! 	  region_id heap_rid = get_root_region ()->ensure_heap_region (this);
! 	  unsigned i;
! 	  region *region;
! 	  FOR_EACH_VEC_ELT (m_regions, i, region)
! 	    if (region->get_parent () == heap_rid)
! 	      num_heap_regions++;
! 	  /* Use quotes to ensure the output isn't truncated.  */
! 	  warning_at (call->location, 0,
! 		      "num heap regions: %qi", num_heap_regions);
  	  return false;
  	}
        else if (!fndecl_has_gimple_body_p (callee_fndecl)
! 	       && !DECL_PURE_P (callee_fndecl))
  	unknown_side_effects = true;
      }
    else
      unknown_side_effects = true;
  
!   /* Unknown return value.  */
!   if (!lhs_rid.null_p ())
!     set_to_new_unknown_value (lhs_rid, lhs_type, ctxt);
  
    return unknown_side_effects;
  }
--- 741,914 ----
  
     Return true if the function call has unknown side effects (it wasn't
     recognized and we don't have a body for it, or are unable to tell which
!    fndecl it is).
! 
!    Write true to *OUT_TERMINATE_PATH if this execution path should be
!    terminated (e.g. the function call terminates the process).  */
  
  bool
! region_model::on_call_pre (const gcall *call, region_model_context *ctxt,
! 			   bool *out_terminate_path)
  {
    bool unknown_side_effects = false;
  
    if (tree callee_fndecl = get_fndecl_for_call (call, ctxt))
      {
!       call_details cd (call, this, ctxt);
! 
!       /* The various impl_call_* member functions are implemented
! 	 in region-model-impl-calls.cc.
! 	 Having them split out into separate functions makes it easier
! 	 to put breakpoints on the handling of specific functions.  */
! 
!       if (fndecl_built_in_p (callee_fndecl, BUILT_IN_NORMAL)
! 	  && gimple_builtin_call_types_compatible_p (call, callee_fndecl))
! 	switch (DECL_UNCHECKED_FUNCTION_CODE (callee_fndecl))
! 	  {
! 	  default:
! 	    if (!DECL_PURE_P (callee_fndecl))
! 	      unknown_side_effects = true;
! 	    break;
! 	  case BUILT_IN_ALLOCA:
! 	  case BUILT_IN_ALLOCA_WITH_ALIGN:
! 	    return impl_call_alloca (cd);
! 	  case BUILT_IN_CALLOC:
! 	    return impl_call_calloc (cd);
! 	  case BUILT_IN_EXPECT:
! 	  case BUILT_IN_EXPECT_WITH_PROBABILITY:
! 	    return impl_call_builtin_expect (cd);
! 	  case BUILT_IN_FREE:
! 	    /* Handle in "on_call_post".  */
! 	    break;
! 	  case BUILT_IN_MALLOC:
! 	    return impl_call_malloc (cd);
! 	  case BUILT_IN_MEMCPY:
! 	  case BUILT_IN_MEMCPY_CHK:
! 	    impl_call_memcpy (cd);
! 	    return false;
! 	  case BUILT_IN_MEMSET:
! 	  case BUILT_IN_MEMSET_CHK:
! 	    impl_call_memset (cd);
! 	    return false;
! 	    break;
! 	  case BUILT_IN_REALLOC:
! 	    impl_call_realloc (cd);
! 	    return false;
! 	  case BUILT_IN_STRCPY:
! 	  case BUILT_IN_STRCPY_CHK:
! 	    impl_call_strcpy (cd);
! 	    return false;
! 	  case BUILT_IN_STRLEN:
! 	    if (impl_call_strlen (cd))
! 	      return false;
! 	    break;
! 
! 	  /* Stdio builtins.  */
! 	  case BUILT_IN_FPRINTF:
! 	  case BUILT_IN_FPRINTF_UNLOCKED:
! 	  case BUILT_IN_PUTC:
! 	  case BUILT_IN_PUTC_UNLOCKED:
! 	  case BUILT_IN_FPUTC:
! 	  case BUILT_IN_FPUTC_UNLOCKED:
! 	  case BUILT_IN_FPUTS:
! 	  case BUILT_IN_FPUTS_UNLOCKED:
! 	  case BUILT_IN_FWRITE:
! 	  case BUILT_IN_FWRITE_UNLOCKED:
! 	  case BUILT_IN_PRINTF:
! 	  case BUILT_IN_PRINTF_UNLOCKED:
! 	  case BUILT_IN_PUTCHAR:
! 	  case BUILT_IN_PUTCHAR_UNLOCKED:
! 	  case BUILT_IN_PUTS:
! 	  case BUILT_IN_PUTS_UNLOCKED:
! 	  case BUILT_IN_VFPRINTF:
! 	  case BUILT_IN_VPRINTF:
! 	    /* These stdio builtins have external effects that are out
! 	       of scope for the analyzer: we only want to model the effects
! 	       on the return value.  */
! 	    break;
! 	  }
!       else if (gimple_call_internal_p (call))
! 	switch (gimple_call_internal_fn (call))
! 	  {
! 	  default:
! 	    if (!DECL_PURE_P (callee_fndecl))
! 	      unknown_side_effects = true;
! 	    break;
! 	  case IFN_BUILTIN_EXPECT:
! 	    return impl_call_builtin_expect (cd);
! 	  }
!       else if (is_named_call_p (callee_fndecl, "malloc", call, 1))
! 	return impl_call_malloc (cd);
!       else if (is_named_call_p (callee_fndecl, "calloc", call, 2))
! 	return impl_call_calloc (cd);
!       else if (is_named_call_p (callee_fndecl, "alloca", call, 1))
! 	return impl_call_alloca (cd);
!       else if (is_named_call_p (callee_fndecl, "realloc", call, 2))
  	{
! 	  impl_call_realloc (cd);
  	  return false;
  	}
!       else if (is_named_call_p (callee_fndecl, "error"))
  	{
! 	  if (impl_call_error (cd, 3, out_terminate_path))
! 	    return false;
! 	  else
! 	    unknown_side_effects = true;
  	}
!       else if (is_named_call_p (callee_fndecl, "error_at_line"))
  	{
! 	  if (impl_call_error (cd, 5, out_terminate_path))
! 	    return false;
! 	  else
! 	    unknown_side_effects = true;
  	}
!       else if (is_named_call_p (callee_fndecl, "getchar", call, 0))
  	{
! 	  /* No side-effects (tracking stream state is out-of-scope
! 	     for the analyzer).  */
  	}
!       else if (is_named_call_p (callee_fndecl, "memset", call, 3)
! 	       && POINTER_TYPE_P (cd.get_arg_type (0)))
  	{
! 	  impl_call_memset (cd);
  	  return false;
  	}
+       else if (is_named_call_p (callee_fndecl, "strlen", call, 1)
+ 	       && POINTER_TYPE_P (cd.get_arg_type (0)))
+ 	{
+ 	  if (impl_call_strlen (cd))
+ 	    return false;
+ 	}
+       else if (is_named_call_p (callee_fndecl, "operator new", call, 1))
+ 	return impl_call_operator_new (cd);
+       else if (is_named_call_p (callee_fndecl, "operator new []", call, 1))
+ 	return impl_call_operator_new (cd);
+       else if (is_named_call_p (callee_fndecl, "operator delete", call, 1)
+ 	       || is_named_call_p (callee_fndecl, "operator delete", call, 2)
+ 	       || is_named_call_p (callee_fndecl, "operator delete []", call, 1))
+ 	{
+ 	  /* Handle in "on_call_post".  */
+ 	}
        else if (!fndecl_has_gimple_body_p (callee_fndecl)
! 	       && !DECL_PURE_P (callee_fndecl)
! 	       && !fndecl_built_in_p (callee_fndecl))
  	unknown_side_effects = true;
      }
    else
      unknown_side_effects = true;
  
!   /* Some of the above cases update the lhs of the call based on the
!      return value.  If we get here, it hasn't been done yet, so do that
!      now.  */
!   if (tree lhs = gimple_call_lhs (call))
!     {
!       const region *lhs_region = get_lvalue (lhs, ctxt);
!       if (TREE_CODE (lhs) == SSA_NAME)
! 	{
! 	  const svalue *sval = m_mgr->get_or_create_initial_value (lhs_region);
! 	  set_value (lhs_region, sval, ctxt);
! 	}
!     }
  
    return unknown_side_effects;
  }
*************** region_model::on_call_post (const gcall
*** 4477,4605 ****
  			    bool unknown_side_effects,
  			    region_model_context *ctxt)
  {
-   /* Update for "free" here, after sm-handling.
- 
-      If the ptr points to an underlying heap region, delete the region,
-      poisoning pointers to it and regions within it.
- 
-      We delay this until after sm-state has been updated so that the
-      sm-handling can transition all of the various casts of the pointer
-      to a "freed" state *before* we delete the related region here.
- 
-      This has to be done here so that the sm-handling can use the fact
-      that they point to the same region to establish that they are equal
-      (in region_model::eval_condition_without_cm), and thus transition
-      all pointers to the region to the "freed" state together, regardless
-      of casts.  */
    if (tree callee_fndecl = get_fndecl_for_call (call, ctxt))
!     if (is_named_call_p (callee_fndecl, "free", call, 1))
!       {
! 	tree ptr = gimple_call_arg (call, 0);
! 	svalue_id ptr_sid = get_rvalue (ptr, ctxt);
! 	svalue *ptr_sval = get_svalue (ptr_sid);
! 	if (region_svalue *ptr_to_region_sval
! 	    = ptr_sval->dyn_cast_region_svalue ())
! 	  {
! 	    /* If the ptr points to an underlying heap region, delete it,
! 	       poisoning pointers.  */
! 	    region_id pointee_rid = ptr_to_region_sval->get_pointee ();
! 	    region_id heap_rid = get_root_region ()->ensure_heap_region (this);
! 	    if (!pointee_rid.null_p ()
! 		&& get_region (pointee_rid)->get_parent () == heap_rid)
! 	      {
! 		purge_stats stats;
! 		delete_region_and_descendents (pointee_rid,
! 					       POISON_KIND_FREED,
! 					       &stats, ctxt->get_logger ());
! 		purge_unused_svalues (&stats, ctxt);
! 		validate ();
! 		// TODO: do anything with stats?
! 	      }
! 	  }
! 	return;
!       }
! 
!   if (unknown_side_effects)
!     handle_unrecognized_call (call, ctxt);
! }
! 
! /* Helper class for region_model::handle_unrecognized_call, for keeping
!    track of all regions that are reachable, and, of those, which are
!    mutable.  */
! 
! class reachable_regions
! {
! public:
!   reachable_regions (region_model *model)
!   : m_model (model), m_reachable_rids (), m_mutable_rids ()
!   {}
! 
!   /* Lazily mark RID as being reachable, recursively adding regions
!      reachable from RID.  */
!   void add (region_id rid, bool is_mutable)
!   {
!     gcc_assert (!rid.null_p ());
! 
!     unsigned idx = rid.as_int ();
!     /* Bail out if this region is already in the sets at the IS_MUTABLE
!        level of mutability.  */
!     if (!is_mutable && bitmap_bit_p (m_reachable_rids, idx))
!       return;
!     bitmap_set_bit (m_reachable_rids, idx);
! 
!     if (is_mutable)
!       {
! 	if (bitmap_bit_p (m_mutable_rids, idx))
  	  return;
! 	else
! 	  bitmap_set_bit (m_mutable_rids, idx);
!       }
! 
!     /* If this region's value is a pointer, add the pointee.  */
!     region *reg = m_model->get_region (rid);
!     svalue_id sid = reg->get_value_direct ();
!     svalue *sval = m_model->get_svalue (sid);
!     if (sval)
!       if (region_svalue *ptr = sval->dyn_cast_region_svalue ())
  	{
! 	  region_id pointee_rid = ptr->get_pointee ();
! 	  /* Use const-ness of pointer type to affect mutability.  */
! 	  bool ptr_is_mutable = true;
! 	  if (ptr->get_type ()
! 	      && TREE_CODE (ptr->get_type ()) == POINTER_TYPE
! 	      && TYPE_READONLY (TREE_TYPE (ptr->get_type ())))
! 	    ptr_is_mutable = false;
! 	  add (pointee_rid, ptr_is_mutable);
  	}
  
!     /* Add descendents of this region.  */
!     region_id_set descendents (m_model);
!     m_model->get_descendents (rid, &descendents, region_id::null ());
!     for (unsigned i = 0; i < m_model->get_num_regions (); i++)
!       {
! 	region_id iter_rid = region_id::from_int (i);
! 	if (descendents.region_p (iter_rid))
! 	  add (iter_rid, is_mutable);
!       }
!   }
! 
!   bool mutable_p (region_id rid)
!   {
!     gcc_assert (!rid.null_p ());
!     return bitmap_bit_p (m_mutable_rids, rid.as_int ());
!   }
! 
! private:
!   region_model *m_model;
! 
!   /* The region ids already seen.  This has to be an auto_bitmap rather than
!      an auto_sbitmap as new regions can be created within the model during
!      the traversal.  */
!   auto_bitmap m_reachable_rids;
! 
!   /* The region_ids that can be changed (accessed via non-const pointers).  */
!   auto_bitmap m_mutable_rids;
! };
  
  /* Handle a call CALL to a function with unknown behavior.
  
--- 928,962 ----
  			    bool unknown_side_effects,
  			    region_model_context *ctxt)
  {
    if (tree callee_fndecl = get_fndecl_for_call (call, ctxt))
!     {
!       if (is_named_call_p (callee_fndecl, "free", call, 1))
! 	{
! 	  call_details cd (call, this, ctxt);
! 	  impl_call_free (cd);
  	  return;
! 	}
!       if (is_named_call_p (callee_fndecl, "operator delete", call, 1)
! 	  || is_named_call_p (callee_fndecl, "operator delete", call, 2)
! 	  || is_named_call_p (callee_fndecl, "operator delete []", call, 1))
  	{
! 	  call_details cd (call, this, ctxt);
! 	  impl_call_operator_delete (cd);
! 	  return;
  	}
+       /* Was this fndecl referenced by
+ 	 __attribute__((malloc(FOO)))?  */
+       if (lookup_attribute ("*dealloc", DECL_ATTRIBUTES (callee_fndecl)))
+ 	{
+ 	  call_details cd (call, this, ctxt);
+ 	  impl_deallocation_call (cd);
+ 	  return;
+ 	}
+     }
  
!   if (unknown_side_effects)
!     handle_unrecognized_call (call, ctxt);
! }
  
  /* Handle a call CALL to a function with unknown behavior.
  
*************** region_model::handle_unrecognized_call (
*** 4616,4629 ****
  {
    tree fndecl = get_fndecl_for_call (call, ctxt);
  
!   reachable_regions reachable_regions (this);
  
    /* Determine the reachable regions and their mutability.  */
    {
!     /* Globals.  */
!     region_id globals_rid = get_globals_region_id ();
!     if (!globals_rid.null_p ())
!       reachable_regions.add (globals_rid, true);
  
      /* Params that are pointers.  */
      tree iter_param_types = NULL_TREE;
--- 973,986 ----
  {
    tree fndecl = get_fndecl_for_call (call, ctxt);
  
!   reachable_regions reachable_regs (this);
  
    /* Determine the reachable regions and their mutability.  */
    {
!     /* Add globals and regions that already escaped in previous
!        unknown calls.  */
!     m_store.for_each_cluster (reachable_regions::init_cluster_cb,
! 			      &reachable_regs);
  
      /* Params that are pointers.  */
      tree iter_param_types = NULL_TREE;
*************** region_model::handle_unrecognized_call (
*** 4641,4702 ****
  	  }
  
  	tree parm = gimple_call_arg (call, arg_idx);
! 	svalue_id parm_sid = get_rvalue (parm, ctxt);
! 	svalue *parm_sval = get_svalue (parm_sid);
! 	if (parm_sval)
! 	  if (region_svalue *parm_ptr = parm_sval->dyn_cast_region_svalue ())
! 	    {
! 	      region_id pointee_rid = parm_ptr->get_pointee ();
! 	      bool is_mutable = true;
! 	      if (param_type
! 		  && TREE_CODE (param_type) == POINTER_TYPE
! 		  &&  TYPE_READONLY (TREE_TYPE (param_type)))
! 		is_mutable = false;
! 	      reachable_regions.add (pointee_rid, is_mutable);
! 	    }
! 	// FIXME: what about compound parms that contain ptrs?
        }
    }
  
!   /* OK: we now have all reachable regions.
!      Set them all to new unknown values.  */
!   for (unsigned i = 0; i < get_num_regions (); i++)
      {
!       region_id iter_rid = region_id::from_int (i);
!       if (reachable_regions.mutable_p (iter_rid))
! 	{
! 	  region *reg = get_region (iter_rid);
  
! 	  /* Purge any sm-state for any underlying svalue.  */
! 	  svalue_id curr_sid = reg->get_value_direct ();
! 	  if (!curr_sid.null_p ())
! 	    ctxt->on_unknown_change (curr_sid);
  
! 	  set_to_new_unknown_value (iter_rid,
! 				    reg->get_type (),
! 				    ctxt);
! 	}
!     }
  
!   /* Purge sm-state for any remaining svalues that point to regions that
!      were reachable.  This helps suppress leak false-positives.
  
!      For example, if we had a malloc call that was cast to a "foo *" type,
!      we could have a temporary void * for the result of malloc which has its
!      own svalue, not reachable from the function call, but for which the
!      "foo *" svalue was reachable.  If we don't purge it, the temporary will
!      be reported as a leak.  */
!   int i;
!   svalue *svalue;
!   FOR_EACH_VEC_ELT (m_svalues, i, svalue)
!     if (region_svalue *ptr = svalue->dyn_cast_region_svalue ())
!       {
! 	region_id pointee_rid = ptr->get_pointee ();
! 	if (reachable_regions.mutable_p (pointee_rid))
! 	  ctxt->on_unknown_change (svalue_id::from_int (i));
!       }
  
!   validate ();
  }
  
  /* Update this model for the RETURN_STMT, using CTXT to report any
--- 998,1085 ----
  	  }
  
  	tree parm = gimple_call_arg (call, arg_idx);
! 	const svalue *parm_sval = get_rvalue (parm, ctxt);
! 	reachable_regs.handle_parm (parm_sval, param_type);
        }
    }
  
!   uncertainty_t *uncertainty = ctxt->get_uncertainty ();
! 
!   /* Purge sm-state for the svalues that were reachable,
!      both in non-mutable and mutable form.  */
!   for (svalue_set::iterator iter
! 	 = reachable_regs.begin_reachable_svals ();
!        iter != reachable_regs.end_reachable_svals (); ++iter)
      {
!       const svalue *sval = (*iter);
!       ctxt->on_unknown_change (sval, false);
!     }
!   for (svalue_set::iterator iter
! 	 = reachable_regs.begin_mutable_svals ();
!        iter != reachable_regs.end_mutable_svals (); ++iter)
!     {
!       const svalue *sval = (*iter);
!       ctxt->on_unknown_change (sval, true);
!       if (uncertainty)
! 	uncertainty->on_mutable_sval_at_unknown_call (sval);
!     }
  
!   /* Mark any clusters that have escaped.  */
!   reachable_regs.mark_escaped_clusters (ctxt);
  
!   /* Update bindings for all clusters that have escaped, whether above,
!      or previously.  */
!   m_store.on_unknown_fncall (call, m_mgr->get_store_manager ());
! }
  
! /* Traverse the regions in this model, determining what regions are
!    reachable from the store and populating *OUT.
  
!    If EXTRA_SVAL is non-NULL, treat it as an additional "root"
!    for reachability (for handling return values from functions when
!    analyzing return of the only function on the stack).
  
!    If UNCERTAINTY is non-NULL, treat any svalues that were recorded
!    within it as being maybe-bound as additional "roots" for reachability.
! 
!    Find svalues that haven't leaked.    */
! 
! void
! region_model::get_reachable_svalues (svalue_set *out,
! 				     const svalue *extra_sval,
! 				     const uncertainty_t *uncertainty)
! {
!   reachable_regions reachable_regs (this);
! 
!   /* Add globals and regions that already escaped in previous
!      unknown calls.  */
!   m_store.for_each_cluster (reachable_regions::init_cluster_cb,
! 			    &reachable_regs);
! 
!   if (extra_sval)
!     reachable_regs.handle_sval (extra_sval);
! 
!   if (uncertainty)
!     for (uncertainty_t::iterator iter
! 	   = uncertainty->begin_maybe_bound_svals ();
! 	 iter != uncertainty->end_maybe_bound_svals (); ++iter)
!       reachable_regs.handle_sval (*iter);
! 
!   /* Get regions for locals that have explicitly bound values.  */
!   for (store::cluster_map_t::iterator iter = m_store.begin ();
!        iter != m_store.end (); ++iter)
!     {
!       const region *base_reg = (*iter).first;
!       if (const region *parent = base_reg->get_parent_region ())
! 	if (parent->get_kind () == RK_FRAME)
! 	  reachable_regs.add (base_reg, false);
!     }
! 
!   /* Populate *OUT based on the values that were reachable.  */
!   for (svalue_set::iterator iter
! 	 = reachable_regs.begin_reachable_svals ();
!        iter != reachable_regs.end_reachable_svals (); ++iter)
!     out->add (*iter);
  }
  
  /* Update this model for the RETURN_STMT, using CTXT to report any
*************** void
*** 4723,4772 ****
  region_model::on_setjmp (const gcall *call, const exploded_node *enode,
  			 region_model_context *ctxt)
  {
!   region_id buf_rid = deref_rvalue (gimple_call_arg (call, 0), ctxt);
!   region *buf = get_region (buf_rid);
  
!   /* Create a setjmp_svalue for this call and store it in BUF_RID's region.  */
!   if (buf)
      {
        setjmp_record r (enode, call);
!       svalue *sval = new setjmp_svalue (r, buf->get_type ());
!       svalue_id new_sid = add_svalue (sval);
!       set_value (buf_rid, new_sid, ctxt);
      }
  
    /* Direct calls to setjmp return 0.  */
    if (tree lhs = gimple_call_lhs (call))
      {
        tree zero = build_int_cst (TREE_TYPE (lhs), 0);
!       svalue_id new_sid = get_or_create_constant_svalue (zero);
!       region_id lhs_rid = get_lvalue (lhs, ctxt);
!       set_value (lhs_rid, new_sid, ctxt);
      }
  }
  
  /* Update this region_model for rewinding from a "longjmp" at LONGJMP_CALL
     to a "setjmp" at SETJMP_CALL where the final stack depth should be
!    SETJMP_STACK_DEPTH.  Purge any stack frames, potentially reporting on
!    leaks to CTXT.  */
  
  void
  region_model::on_longjmp (const gcall *longjmp_call, const gcall *setjmp_call,
! 			  int setjmp_stack_depth,
! 			  region_model_context *ctxt)
  {
    /* Evaluate the val, using the frame of the "longjmp".  */
    tree fake_retval = gimple_call_arg (longjmp_call, 1);
!   svalue_id fake_retval_sid = get_rvalue (fake_retval, ctxt);
  
    /* Pop any frames until we reach the stack depth of the function where
       setjmp was called.  */
    gcc_assert (get_stack_depth () >= setjmp_stack_depth);
    while (get_stack_depth () > setjmp_stack_depth)
!     {
!       /* Don't purge unused svalues yet, as we're using fake_retval_sid.  */
!       pop_frame (region_id::null (), false, NULL, ctxt);
!     }
  
    gcc_assert (get_stack_depth () == setjmp_stack_depth);
  
--- 1106,1153 ----
  region_model::on_setjmp (const gcall *call, const exploded_node *enode,
  			 region_model_context *ctxt)
  {
!   const svalue *buf_ptr = get_rvalue (gimple_call_arg (call, 0), ctxt);
!   const region *buf_reg = deref_rvalue (buf_ptr, gimple_call_arg (call, 0),
! 					 ctxt);
  
!   /* Create a setjmp_svalue for this call and store it in BUF_REG's
!      region.  */
!   if (buf_reg)
      {
        setjmp_record r (enode, call);
!       const svalue *sval
! 	= m_mgr->get_or_create_setjmp_svalue (r, buf_reg->get_type ());
!       set_value (buf_reg, sval, ctxt);
      }
  
    /* Direct calls to setjmp return 0.  */
    if (tree lhs = gimple_call_lhs (call))
      {
        tree zero = build_int_cst (TREE_TYPE (lhs), 0);
!       const svalue *new_sval = m_mgr->get_or_create_constant_svalue (zero);
!       const region *lhs_reg = get_lvalue (lhs, ctxt);
!       set_value (lhs_reg, new_sval, ctxt);
      }
  }
  
  /* Update this region_model for rewinding from a "longjmp" at LONGJMP_CALL
     to a "setjmp" at SETJMP_CALL where the final stack depth should be
!    SETJMP_STACK_DEPTH.  Pop any stack frames.  Leak detection is *not*
!    done, and should be done by the caller.  */
  
  void
  region_model::on_longjmp (const gcall *longjmp_call, const gcall *setjmp_call,
! 			   int setjmp_stack_depth, region_model_context *ctxt)
  {
    /* Evaluate the val, using the frame of the "longjmp".  */
    tree fake_retval = gimple_call_arg (longjmp_call, 1);
!   const svalue *fake_retval_sval = get_rvalue (fake_retval, ctxt);
  
    /* Pop any frames until we reach the stack depth of the function where
       setjmp was called.  */
    gcc_assert (get_stack_depth () >= setjmp_stack_depth);
    while (get_stack_depth () > setjmp_stack_depth)
!     pop_frame (NULL, NULL, ctxt);
  
    gcc_assert (get_stack_depth () == setjmp_stack_depth);
  
*************** region_model::on_longjmp (const gcall *l
*** 4775,4803 ****
      {
        /* Passing 0 as the val to longjmp leads to setjmp returning 1.  */
        tree t_zero = build_int_cst (TREE_TYPE (fake_retval), 0);
!       svalue_id zero_sid = get_or_create_constant_svalue (t_zero);
!       tristate eq_zero = eval_condition (fake_retval_sid, EQ_EXPR, zero_sid);
        /* If we have 0, use 1.  */
        if (eq_zero.is_true ())
  	{
  	  tree t_one = build_int_cst (TREE_TYPE (fake_retval), 1);
! 	  svalue_id one_sid = get_or_create_constant_svalue (t_one);
! 	  fake_retval_sid = one_sid;
  	}
        else
  	{
  	  /* Otherwise note that the value is nonzero.  */
! 	  m_constraints->add_constraint (fake_retval_sid, NE_EXPR, zero_sid);
  	}
  
!       region_id lhs_rid = get_lvalue (lhs, ctxt);
!       set_value (lhs_rid, fake_retval_sid, ctxt);
!     }
  
!   /* Now that we've assigned the fake_retval, we can purge the unused
!      svalues, which could detect leaks.  */
!   purge_unused_svalues (NULL, ctxt, NULL);
!   validate ();
  }
  
  /* Update this region_model for a phi stmt of the form
--- 1156,1187 ----
      {
        /* Passing 0 as the val to longjmp leads to setjmp returning 1.  */
        tree t_zero = build_int_cst (TREE_TYPE (fake_retval), 0);
!       const svalue *zero_sval = m_mgr->get_or_create_constant_svalue (t_zero);
!       tristate eq_zero = eval_condition (fake_retval_sval, EQ_EXPR, zero_sval);
        /* If we have 0, use 1.  */
        if (eq_zero.is_true ())
  	{
  	  tree t_one = build_int_cst (TREE_TYPE (fake_retval), 1);
! 	  const svalue *one_sval
! 	    = m_mgr->get_or_create_constant_svalue (t_one);
! 	  fake_retval_sval = one_sval;
  	}
        else
  	{
  	  /* Otherwise note that the value is nonzero.  */
! 	  m_constraints->add_constraint (fake_retval_sval, NE_EXPR, zero_sval);
  	}
  
!       /* Decorate the return value from setjmp as being unmergeable,
! 	 so that we don't attempt to merge states with it as zero
! 	 with states in which it's nonzero, leading to a clean distinction
! 	 in the exploded_graph betweeen the first return and the second
! 	 return.  */
!       fake_retval_sval = m_mgr->get_or_create_unmergeable (fake_retval_sval);
  
!       const region *lhs_reg = get_lvalue (lhs, ctxt);
!       set_value (lhs_reg, fake_retval_sval, ctxt);
!     }
  }
  
  /* Update this region_model for a phi stmt of the form
*************** region_model::on_longjmp (const gcall *l
*** 4806,4812 ****
  
  void
  region_model::handle_phi (const gphi *phi,
! 			  tree lhs, tree rhs, bool is_back_edge,
  			  region_model_context *ctxt)
  {
    /* For now, don't bother tracking the .MEM SSA names.  */
--- 1190,1196 ----
  
  void
  region_model::handle_phi (const gphi *phi,
! 			  tree lhs, tree rhs,
  			  region_model_context *ctxt)
  {
    /* For now, don't bother tracking the .MEM SSA names.  */
*************** region_model::handle_phi (const gphi *ph
*** 4815,4836 ****
        if (VAR_DECL_IS_VIRTUAL_OPERAND (var))
  	return;
  
!   svalue_id rhs_sid = get_rvalue (rhs, ctxt);
  
!   if (is_back_edge && get_svalue (rhs_sid)->get_kind () != SK_UNKNOWN)
!     {
!       /* If we have a back edge, we probably have a loop.
! 	 Use an unknown value, to avoid effectively unrolling the
! 	 loop.
! 	 To terminate, we need to avoid generating a series of
! 	 models with an unbounded monotonically increasing number of
! 	 redundant unknown values; hence we need to purge svalues
! 	 before inserting the state into the exploded graph, to
! 	 collect unused svalues.  */
!       set_to_new_unknown_value (get_lvalue (lhs, ctxt), TREE_TYPE (lhs), ctxt);
!     }
!   else
!     set_value (get_lvalue (lhs, ctxt), rhs_sid, ctxt);
  
    if (ctxt)
      ctxt->on_phi (phi, rhs);
--- 1199,1207 ----
        if (VAR_DECL_IS_VIRTUAL_OPERAND (var))
  	return;
  
!   const svalue *rhs_sval = get_rvalue (rhs, ctxt);
  
!   set_value (get_lvalue (lhs, ctxt), rhs_sval, ctxt);
  
    if (ctxt)
      ctxt->on_phi (phi, rhs);
*************** region_model::handle_phi (const gphi *ph
*** 4841,4847 ****
     Get the id of the region for PV within this region_model,
     emitting any diagnostics to CTXT.  */
  
! region_id
  region_model::get_lvalue_1 (path_var pv, region_model_context *ctxt)
  {
    tree expr = pv.m_tree;
--- 1212,1218 ----
     Get the id of the region for PV within this region_model,
     emitting any diagnostics to CTXT.  */
  
! const region *
  region_model::get_lvalue_1 (path_var pv, region_model_context *ctxt)
  {
    tree expr = pv.m_tree;
*************** region_model::get_lvalue_1 (path_var pv,
*** 4851,4918 ****
    switch (TREE_CODE (expr))
      {
      default:
!       return make_region_for_unexpected_tree_code (ctxt, expr,
! 						   dump_location_t ());
  
      case ARRAY_REF:
        {
  	tree array = TREE_OPERAND (expr, 0);
  	tree index = TREE_OPERAND (expr, 1);
- #if 0
- 	// TODO: operands 2 and 3, if present:
- 	gcc_assert (TREE_OPERAND (expr, 2) == NULL_TREE);
- 	gcc_assert (TREE_OPERAND (expr, 3) == NULL_TREE);
- #endif
  
! 	region_id array_rid = get_lvalue (array, ctxt);
! 	svalue_id index_sid = get_rvalue (index, ctxt);
! 	region *base_array_reg = get_region (array_rid);
! 	array_region *array_reg  = base_array_reg->dyn_cast_array_region ();
! 	if (!array_reg)
! 	  {
! 	    /* Normally, array_rid ought to refer to an array_region, since
! 	       array's type will be ARRAY_TYPE.  However, if we have an
! 	       unexpected tree code for array, we could have a
! 	       symbolic_region here.  If so, we're in error-handling. */
! 	    gcc_assert (base_array_reg->get_type () == NULL_TREE);
! 	    return make_region_for_unexpected_tree_code (ctxt, expr,
! 							 dump_location_t ());
! 	  }
! 	return array_reg->get_element (this, array_rid, index_sid, ctxt);
        }
        break;
  
-     case BIT_FIELD_REF:
-       {
- 	/* For now, create a view, as if a cast, ignoring the bit positions.  */
- 	tree obj = TREE_OPERAND (expr, 0);
- 	return get_or_create_view (get_lvalue (obj, ctxt), TREE_TYPE (expr),
- 				   ctxt);
-       };
-       break;
- 
      case MEM_REF:
        {
  	tree ptr = TREE_OPERAND (expr, 0);
  	tree offset = TREE_OPERAND (expr, 1);
! 	svalue_id ptr_sid = get_rvalue (ptr, ctxt);
! 	svalue_id offset_sid = get_rvalue (offset, ctxt);
! 	return get_or_create_mem_ref (TREE_TYPE (expr), ptr_sid,
! 				      offset_sid, ctxt);
        }
        break;
  
      case VAR_DECL:
        /* Handle globals.  */
        if (is_global_var (expr))
! 	{
! 	  region_id globals_rid
! 	    = get_root_region ()->ensure_globals_region (this);
! 	  map_region *globals = get_region<map_region> (globals_rid);
! 	  region_id var_rid = globals->get_or_create (this, globals_rid, expr,
! 						      TREE_TYPE (expr), ctxt);
! 	  return var_rid;
! 	}
  
        /* Fall through.  */
  
--- 1222,1266 ----
    switch (TREE_CODE (expr))
      {
      default:
!       return m_mgr->get_region_for_unexpected_tree_code (ctxt, expr,
! 							 dump_location_t ());
  
      case ARRAY_REF:
        {
  	tree array = TREE_OPERAND (expr, 0);
  	tree index = TREE_OPERAND (expr, 1);
  
! 	const region *array_reg = get_lvalue (array, ctxt);
! 	const svalue *index_sval = get_rvalue (index, ctxt);
! 	return m_mgr->get_element_region (array_reg,
! 					  TREE_TYPE (TREE_TYPE (array)),
! 					  index_sval);
        }
        break;
  
      case MEM_REF:
        {
  	tree ptr = TREE_OPERAND (expr, 0);
  	tree offset = TREE_OPERAND (expr, 1);
! 	const svalue *ptr_sval = get_rvalue (ptr, ctxt);
! 	const svalue *offset_sval = get_rvalue (offset, ctxt);
! 	const region *star_ptr = deref_rvalue (ptr_sval, ptr, ctxt);
! 	return m_mgr->get_offset_region (star_ptr,
! 					 TREE_TYPE (expr),
! 					 offset_sval);
        }
        break;
  
+     case FUNCTION_DECL:
+       return m_mgr->get_region_for_fndecl (expr);
+ 
+     case LABEL_DECL:
+       return m_mgr->get_region_for_label (expr);
+ 
      case VAR_DECL:
        /* Handle globals.  */
        if (is_global_var (expr))
! 	return m_mgr->get_region_for_global (expr);
  
        /* Fall through.  */
  
*************** region_model::get_lvalue_1 (path_var pv,
*** 4925,4939 ****
  		    || TREE_CODE (expr) == VAR_DECL
  		    || TREE_CODE (expr) == RESULT_DECL);
  
! 	int stack_depth = pv.m_stack_depth;
! 	stack_region *stack = get_root_region ()->get_stack_region (this);
! 	gcc_assert (stack);
! 	region_id frame_rid = stack->get_frame_rid (stack_depth);
! 	frame_region *frame = get_region <frame_region> (frame_rid);
  	gcc_assert (frame);
! 	region_id child_rid = frame->get_or_create (this, frame_rid, expr,
! 						    TREE_TYPE (expr), ctxt);
! 	return child_rid;
        }
  
      case COMPONENT_REF:
--- 1273,1282 ----
  		    || TREE_CODE (expr) == VAR_DECL
  		    || TREE_CODE (expr) == RESULT_DECL);
  
! 	int stack_index = pv.m_stack_depth;
! 	const frame_region *frame = get_frame_at_index (stack_index);
  	gcc_assert (frame);
! 	return frame->get_region_for_local (m_mgr, expr);
        }
  
      case COMPONENT_REF:
*************** region_model::get_lvalue_1 (path_var pv,
*** 4941,5040 ****
  	/* obj.field  */
  	tree obj = TREE_OPERAND (expr, 0);
  	tree field = TREE_OPERAND (expr, 1);
! 	tree obj_type = TREE_TYPE (obj);
! 	if (TREE_CODE (obj_type) != RECORD_TYPE
! 	    && TREE_CODE (obj_type) != UNION_TYPE)
! 	  return make_region_for_unexpected_tree_code (ctxt, obj_type,
! 						       dump_location_t ());
! 	region_id obj_rid = get_lvalue (obj, ctxt);
! 	region_id struct_or_union_rid
! 	  = get_or_create_view (obj_rid, TREE_TYPE (obj), ctxt);
! 	return get_field_region (struct_or_union_rid, field, ctxt);
!       }
!       break;
! 
!     case CONST_DECL:
!       {
! 	tree cst_type = TREE_TYPE (expr);
! 	region_id cst_rid = add_region_for_type (m_root_rid, cst_type, ctxt);
! 	if (tree value = DECL_INITIAL (expr))
! 	  {
! 	    svalue_id sid = get_rvalue (value, ctxt);
! 	    get_region (cst_rid)->set_value (*this, cst_rid, sid, ctxt);
! 	  }
! 	return cst_rid;
        }
        break;
  
      case STRING_CST:
!       {
! 	tree cst_type = TREE_TYPE (expr);
! 	array_region *cst_region = new array_region (m_root_rid, cst_type);
! 	region_id cst_rid = add_region (cst_region);
! 	svalue_id cst_sid = get_or_create_constant_svalue (expr);
! 	cst_region->set_value (*this, cst_rid, cst_sid, ctxt);
! 	return cst_rid;
!       }
!       break;
! 
!     case NOP_EXPR:
!     case VIEW_CONVERT_EXPR:
!       {
! 	tree obj = TREE_OPERAND (expr, 0);
! 	return get_or_create_view (get_lvalue (obj, ctxt), TREE_TYPE (expr),
! 				   ctxt);
!       };
!       break;
      }
  }
  
- /* If we see a tree code we don't know how to handle, rather than
-    ICE or generate bogus results, create a dummy region, and notify
-    CTXT so that it can mark the new state as being not properly
-    modelled.  The exploded graph can then stop exploring that path,
-    since any diagnostics we might issue will have questionable
-    validity.  */
- 
- region_id
- region_model::make_region_for_unexpected_tree_code (region_model_context *ctxt,
- 						    tree t,
- 						    const dump_location_t &loc)
- {
-   gcc_assert (ctxt);
-   region_id new_rid
-     = add_region (new symbolic_region (m_root_rid, NULL_TREE, false));
-   ctxt->on_unexpected_tree_code (t, loc);
-   return new_rid;
- }
- 
  /* Assert that SRC_TYPE can be converted to DST_TYPE as a no-op.  */
  
  static void
  assert_compat_types (tree src_type, tree dst_type)
  {
    if (src_type && dst_type && !VOID_TYPE_P (dst_type))
!     gcc_checking_assert (useless_type_conversion_p (src_type, dst_type));
  }
  
! /* Get the id of the region for PV within this region_model,
     emitting any diagnostics to CTXT.  */
  
! region_id
  region_model::get_lvalue (path_var pv, region_model_context *ctxt)
  {
    if (pv.m_tree == NULL_TREE)
!     return region_id::null ();
  
!   region_id result_rid = get_lvalue_1 (pv, ctxt);
!   assert_compat_types (get_region (result_rid)->get_type (),
! 		       TREE_TYPE (pv.m_tree));
!   return result_rid;
  }
  
! /* Get the region_id for EXPR within this region_model (assuming the most
     recent stack frame if it's a local).  */
  
! region_id
  region_model::get_lvalue (tree expr, region_model_context *ctxt)
  {
    return get_lvalue (path_var (expr, get_stack_depth () - 1), ctxt);
--- 1284,1331 ----
  	/* obj.field  */
  	tree obj = TREE_OPERAND (expr, 0);
  	tree field = TREE_OPERAND (expr, 1);
! 	const region *obj_reg = get_lvalue (obj, ctxt);
! 	return m_mgr->get_field_region (obj_reg, field);
        }
        break;
  
      case STRING_CST:
!       return m_mgr->get_region_for_string (expr);
      }
  }
  
  /* Assert that SRC_TYPE can be converted to DST_TYPE as a no-op.  */
  
  static void
  assert_compat_types (tree src_type, tree dst_type)
  {
    if (src_type && dst_type && !VOID_TYPE_P (dst_type))
!     {
! #if CHECKING_P
!       if (!(useless_type_conversion_p (src_type, dst_type)))
! 	internal_error ("incompatible types: %qT and %qT", src_type, dst_type);
! #endif
!     }
  }
  
! /* Get the region for PV within this region_model,
     emitting any diagnostics to CTXT.  */
  
! const region *
  region_model::get_lvalue (path_var pv, region_model_context *ctxt)
  {
    if (pv.m_tree == NULL_TREE)
!     return NULL;
  
!   const region *result_reg = get_lvalue_1 (pv, ctxt);
!   assert_compat_types (result_reg->get_type (), TREE_TYPE (pv.m_tree));
!   return result_reg;
  }
  
! /* Get the region for EXPR within this region_model (assuming the most
     recent stack frame if it's a local).  */
  
! const region *
  region_model::get_lvalue (tree expr, region_model_context *ctxt)
  {
    return get_lvalue (path_var (expr, get_stack_depth () - 1), ctxt);
*************** region_model::get_lvalue (tree expr, reg
*** 5045,5051 ****
     Get the value of PV within this region_model,
     emitting any diagnostics to CTXT.  */
  
! svalue_id
  region_model::get_rvalue_1 (path_var pv, region_model_context *ctxt)
  {
    gcc_assert (pv.m_tree);
--- 1336,1342 ----
     Get the value of PV within this region_model,
     emitting any diagnostics to CTXT.  */
  
! const svalue *
  region_model::get_rvalue_1 (path_var pv, region_model_context *ctxt)
  {
    gcc_assert (pv.m_tree);
*************** region_model::get_rvalue_1 (path_var pv,
*** 5053,5098 ****
    switch (TREE_CODE (pv.m_tree))
      {
      default:
!       {
! 	svalue *unknown_sval = new unknown_svalue (TREE_TYPE (pv.m_tree));
! 	return add_svalue (unknown_sval);
!       }
!       break;
  
      case ADDR_EXPR:
        {
  	/* "&EXPR".  */
  	tree expr = pv.m_tree;
  	tree op0 = TREE_OPERAND (expr, 0);
! 	if (TREE_CODE (op0) == FUNCTION_DECL)
! 	  return get_svalue_for_fndecl (TREE_TYPE (expr), op0, ctxt);
! 	else if (TREE_CODE (op0) == LABEL_DECL)
! 	  return get_svalue_for_label (TREE_TYPE (expr), op0, ctxt);
! 	region_id expr_rid = get_lvalue (op0, ctxt);
! 	return get_or_create_ptr_svalue (TREE_TYPE (expr), expr_rid);
        }
        break;
  
      case ARRAY_REF:
        {
! 	region_id element_rid = get_lvalue (pv, ctxt);
! 	return get_region (element_rid)->get_value (*this, true, ctxt);
        }
  
      case INTEGER_CST:
      case REAL_CST:
      case STRING_CST:
!       return get_or_create_constant_svalue (pv.m_tree);
  
      case COMPONENT_REF:
      case MEM_REF:
-     case SSA_NAME:
-     case VAR_DECL:
-     case PARM_DECL:
-     case RESULT_DECL:
        {
! 	region_id var_rid = get_lvalue (pv, ctxt);
! 	return get_region (var_rid)->get_value (*this, true, ctxt);
        }
      }
  }
--- 1344,1427 ----
    switch (TREE_CODE (pv.m_tree))
      {
      default:
!       return m_mgr->get_or_create_unknown_svalue (TREE_TYPE (pv.m_tree));
  
      case ADDR_EXPR:
        {
  	/* "&EXPR".  */
  	tree expr = pv.m_tree;
  	tree op0 = TREE_OPERAND (expr, 0);
! 	const region *expr_reg = get_lvalue (op0, ctxt);
! 	return m_mgr->get_ptr_svalue (TREE_TYPE (expr), expr_reg);
        }
        break;
  
+     case BIT_FIELD_REF:
+       return m_mgr->get_or_create_unknown_svalue (TREE_TYPE (pv.m_tree));
+ 
+     case SSA_NAME:
+     case VAR_DECL:
+     case PARM_DECL:
+     case RESULT_DECL:
      case ARRAY_REF:
        {
! 	const region *reg = get_lvalue (pv, ctxt);
! 	return get_store_value (reg);
        }
  
+     case REALPART_EXPR:
+     case IMAGPART_EXPR:
+     case VIEW_CONVERT_EXPR:
+       {
+ 	tree expr = pv.m_tree;
+ 	tree arg = TREE_OPERAND (expr, 0);
+ 	const svalue *arg_sval = get_rvalue (arg, ctxt);
+ 	const svalue *sval_unaryop
+ 	  = m_mgr->get_or_create_unaryop (TREE_TYPE (expr), TREE_CODE (expr),
+ 					  arg_sval);
+ 	return sval_unaryop;
+       };
+ 
      case INTEGER_CST:
      case REAL_CST:
+     case COMPLEX_CST:
+     case VECTOR_CST:
      case STRING_CST:
!       return m_mgr->get_or_create_constant_svalue (pv.m_tree);
! 
!     case POINTER_PLUS_EXPR:
! 	{
! 	  tree expr = pv.m_tree;
! 	  tree ptr = TREE_OPERAND (expr, 0);
! 	  tree offset = TREE_OPERAND (expr, 1);
! 	  const svalue *ptr_sval = get_rvalue (ptr, ctxt);
! 	  const svalue *offset_sval = get_rvalue (offset, ctxt);
! 	  const svalue *sval_binop
! 	    = m_mgr->get_or_create_binop (TREE_TYPE (expr), POINTER_PLUS_EXPR,
! 					  ptr_sval, offset_sval);
! 	  return sval_binop;
! 	}
! 
!     /* Binary ops.  */
!     case PLUS_EXPR:
!     case MULT_EXPR:
! 	{
! 	  tree expr = pv.m_tree;
! 	  tree arg0 = TREE_OPERAND (expr, 0);
! 	  tree arg1 = TREE_OPERAND (expr, 1);
! 	  const svalue *arg0_sval = get_rvalue (arg0, ctxt);
! 	  const svalue *arg1_sval = get_rvalue (arg1, ctxt);
! 	  const svalue *sval_binop
! 	    = m_mgr->get_or_create_binop (TREE_TYPE (expr), TREE_CODE (expr),
! 					  arg0_sval, arg1_sval);
! 	  return sval_binop;
! 	}
  
      case COMPONENT_REF:
      case MEM_REF:
        {
! 	const region *ref_reg = get_lvalue (pv, ctxt);
! 	return get_store_value (ref_reg);
        }
      }
  }
*************** region_model::get_rvalue_1 (path_var pv,
*** 5100,5517 ****
  /* Get the value of PV within this region_model,
     emitting any diagnostics to CTXT.  */
  
! svalue_id
  region_model::get_rvalue (path_var pv, region_model_context *ctxt)
  {
    if (pv.m_tree == NULL_TREE)
!     return svalue_id::null ();
!   svalue_id result_sid = get_rvalue_1 (pv, ctxt);
  
!   assert_compat_types (get_svalue (result_sid)->get_type (),
! 		       TREE_TYPE (pv.m_tree));
  
!   return result_sid;
  }
  
  /* Get the value of EXPR within this region_model (assuming the most
     recent stack frame if it's a local).  */
  
! svalue_id
  region_model::get_rvalue (tree expr, region_model_context *ctxt)
  {
    return get_rvalue (path_var (expr, get_stack_depth () - 1), ctxt);
  }
  
! /* Return an svalue_id for a pointer to RID of type PTR_TYPE, reusing
!    existing pointer values if one is available.  */
  
! svalue_id
! region_model::get_or_create_ptr_svalue (tree ptr_type, region_id rid)
  {
!   /* Reuse existing region_svalue, if one of the right type is
!      available.  */
!   /* In theory we could stash a svalue_id in "region", but differing
!      pointer types muddles things.
!      For now, just do a linear search through all existing svalues.  */
!   int i;
!   svalue *svalue;
!   FOR_EACH_VEC_ELT (m_svalues, i, svalue)
!     if (region_svalue *ptr_svalue = svalue->dyn_cast_region_svalue ())
!       if (ptr_svalue->get_pointee () == rid
! 	  && ptr_svalue->get_type () == ptr_type)
! 	return svalue_id::from_int (i);
! 
!   return add_svalue (new region_svalue (ptr_type, rid));
  }
  
! /* Return an svalue_id for a constant_svalue for CST_EXPR,
!    creating the constant_svalue if necessary.
!    The constant_svalue instances are reused, based on pointer equality
!    of trees  */
  
! svalue_id
! region_model::get_or_create_constant_svalue (tree cst_expr)
  {
!   gcc_assert (cst_expr);
  
!   /* Reuse one if it already exists.  */
!   // TODO: maybe store a map, rather than do linear search?
!   int i;
!   svalue *svalue;
!   FOR_EACH_VEC_ELT (m_svalues, i, svalue)
!     if (svalue->maybe_get_constant () == cst_expr)
!       return svalue_id::from_int (i);
  
!   svalue_id cst_sid = add_svalue (new constant_svalue (cst_expr));
!   return cst_sid;
  }
  
! /* Return an svalue_id for a region_svalue for FNDECL,
!    creating the function_region if necessary.  */
  
! svalue_id
! region_model::get_svalue_for_fndecl (tree ptr_type, tree fndecl,
! 				     region_model_context *ctxt)
  {
!   gcc_assert (TREE_CODE (fndecl) == FUNCTION_DECL);
!   region_id function_rid = get_region_for_fndecl (fndecl, ctxt);
!   return get_or_create_ptr_svalue (ptr_type, function_rid);
! }
  
! /* Return a region_id for a function_region for FNDECL,
!    creating it if necessary.  */
  
! region_id
! region_model::get_region_for_fndecl (tree fndecl,
! 				     region_model_context *ctxt)
! {
!   gcc_assert (TREE_CODE (fndecl) == FUNCTION_DECL);
  
!   region_id code_rid = get_root_region ()->ensure_code_region (this);
!   code_region *code = get_root_region ()->get_code_region (this);
  
!   return code->get_or_create (this, code_rid, fndecl, TREE_TYPE (fndecl),
! 			      ctxt);
! }
  
! /* Return an svalue_id for a region_svalue for LABEL,
!    creating the label_region if necessary.  */
  
! svalue_id
! region_model::get_svalue_for_label (tree ptr_type, tree label,
! 				    region_model_context *ctxt)
! {
!   gcc_assert (TREE_CODE (label) == LABEL_DECL);
!   region_id label_rid = get_region_for_label (label, ctxt);
!   return get_or_create_ptr_svalue (ptr_type, label_rid);
  }
  
! /* Return a region_id for a label_region for LABEL,
!    creating it if necessary.  */
  
! region_id
! region_model::get_region_for_label (tree label,
! 				    region_model_context *ctxt)
  {
!   gcc_assert (TREE_CODE (label) == LABEL_DECL);
! 
!   tree fndecl = DECL_CONTEXT (label);
!   gcc_assert (fndecl && TREE_CODE (fndecl) == FUNCTION_DECL);
  
!   region_id func_rid = get_region_for_fndecl (fndecl, ctxt);
!   function_region *func_reg = get_region <function_region> (func_rid);
!   return func_reg->get_or_create (this, func_rid, label, TREE_TYPE (label),
! 				  ctxt);
  }
  
! /* Build a cast of SRC_EXPR to DST_TYPE, or return NULL_TREE.
! 
!    Adapted from gcc::jit::playback::context::build_cast, which in turn is
!    adapted from
!      - c/c-typeck.c:build_c_cast
!      - c/c-convert.c: convert
!      - convert.h
!    Only some kinds of cast are currently supported here.  */
  
! static tree
! build_cast (tree dst_type, tree src_expr)
  {
!   tree result = targetm.convert_to_type (dst_type, src_expr);
!   if (result)
!     return result;
!   enum tree_code dst_code = TREE_CODE (dst_type);
!   switch (dst_code)
!     {
!     case INTEGER_TYPE:
!     case ENUMERAL_TYPE:
!       result = convert_to_integer (dst_type, src_expr);
!       goto maybe_fold;
  
!     case BOOLEAN_TYPE:
!       /* Compare with c_objc_common_truthvalue_conversion and
! 	 c_common_truthvalue_conversion. */
!       /* For now, convert to: (src_expr != 0)  */
!       result = build2 (NE_EXPR, dst_type,
! 		       src_expr,
! 		       build_int_cst (TREE_TYPE (src_expr), 0));
!       goto maybe_fold;
  
!     case REAL_TYPE:
!       result = convert_to_real (dst_type, src_expr);
!       goto maybe_fold;
  
!     case POINTER_TYPE:
!       result = build1 (NOP_EXPR, dst_type, src_expr);
!       goto maybe_fold;
  
!     default:
!       return NULL_TREE;
  
!     maybe_fold:
!       if (TREE_CODE (result) != C_MAYBE_CONST_EXPR)
! 	result = fold (result);
!       return result;
      }
  }
  
! /* If the type of SID's underlying value is DST_TYPE, return SID.
!    Otherwise, attempt to create (or reuse) an svalue representing an access
!    of SID as a DST_TYPE and return that value's svalue_id.  */
  
! svalue_id
! region_model::maybe_cast_1 (tree dst_type, svalue_id sid)
  {
!   svalue *sval = get_svalue (sid);
!   tree src_type = sval->get_type ();
!   if (src_type == dst_type)
!     return sid;
! 
!   if (POINTER_TYPE_P (dst_type)
!       || POINTER_TYPE_P (src_type))
!     {
!       /* Pointer to region.  */
!       if (region_svalue *ptr_sval = sval->dyn_cast_region_svalue ())
! 	return get_or_create_ptr_svalue (dst_type, ptr_sval->get_pointee ());
! 
!       /* Unknown pointer?   Get or create a new unknown pointer of the
! 	 correct type, preserving the equality between the pointers.  */
!       if (sval->dyn_cast_unknown_svalue ())
! 	{
! 	  equiv_class &ec = m_constraints->get_equiv_class (sid);
  
! 	  /* Look for an existing pointer of the correct type within the EC.  */
! 	  int i;
! 	  svalue_id *equiv_sid;
! 	  FOR_EACH_VEC_ELT (ec.m_vars, i, equiv_sid)
! 	    {
! 	      svalue *equiv_val = get_svalue (*equiv_sid);
! 	      if (equiv_val->get_type () == dst_type)
! 		return *equiv_sid;
! 	    }
  
! 	  /* Otherwise, create a new unknown pointer of the correct type.  */
! 	  svalue *unknown_sval = new unknown_svalue (dst_type);
! 	  svalue_id new_ptr_sid = add_svalue (unknown_sval);
! 	  m_constraints->add_constraint (sid, EQ_EXPR, new_ptr_sid);
! 	  return new_ptr_sid;
! 	}
!     }
  
!   /* Attempt to cast constants.  */
!   if (tree src_cst = sval->maybe_get_constant ())
!     {
!       if (tree dst = build_cast (dst_type, src_cst))
! 	if (CONSTANT_CLASS_P (dst))
! 	  return get_or_create_constant_svalue (dst);
!     }
  
!   /* Otherwise, return a new unknown value.  */
!   svalue *unknown_sval = new unknown_svalue (dst_type);
!   return add_svalue (unknown_sval);
! }
  
! /* If the type of SID's underlying value is DST_TYPE, return SID.
!    Otherwise, attempt to create (or reuse) an svalue representing an access
!    of SID as a DST_TYPE and return that value's svalue_id.
  
!    If the result != SID, then call CTXT's on_cast vfunc (if CTXT is non-NULL),
!    so that sm-state can be propagated from SID to the result.  */
  
! svalue_id
! region_model::maybe_cast (tree dst_type, svalue_id sid,
! 			  region_model_context *ctxt)
  {
!   svalue_id result = maybe_cast_1 (dst_type, sid);
!   if (result != sid)
!     if (ctxt)
!       {
! 	/* Notify ctxt about a cast, so any sm-state can be copied.  */
! 	ctxt->on_cast (sid, result);
!       }
!   return result;
! }
  
! /* Ensure that the region for OBJ_RID has a child region for FIELD;
!    return the child region's region_id.  */
  
! region_id
! region_model::get_field_region (region_id struct_or_union_rid, tree field,
! 				region_model_context *ctxt)
! {
!   struct_or_union_region *sou_reg
!     = get_region<struct_or_union_region> (struct_or_union_rid);
  
!   /* Inherit constness from parent type.  */
!   const int qual_mask = TYPE_QUAL_CONST;
!   int sou_quals = TYPE_QUALS (sou_reg->get_type ()) & qual_mask;
!   tree field_type = TREE_TYPE (field);
!   tree field_type_with_quals = build_qualified_type (field_type, sou_quals);
  
!   // TODO: maybe convert to a vfunc?
!   if (sou_reg->get_kind () == RK_UNION)
!     {
!       /* Union.
! 	 Get a view of the union as a whole, with the type of the field.  */
!       region_id view_rid
! 	= get_or_create_view (struct_or_union_rid, field_type_with_quals, ctxt);
!       return view_rid;
!     }
!   else
!     {
!       /* Struct.  */
!       region_id child_rid
! 	= sou_reg->get_or_create (this, struct_or_union_rid, field,
! 				  field_type_with_quals, ctxt);
!       return child_rid;
!     }
! }
  
! /* Get a region_id for referencing PTR_SID, creating a region if need be, and
!    potentially generating warnings via CTXT.  */
  
! region_id
! region_model::deref_rvalue (svalue_id ptr_sid, region_model_context *ctxt)
  {
!   gcc_assert (!ptr_sid.null_p ());
!   svalue *ptr_svalue = get_svalue (ptr_sid);
!   gcc_assert (ptr_svalue);
  
!   switch (ptr_svalue->get_kind ())
      {
!     case SK_REGION:
        {
! 	region_svalue *region_sval = as_a <region_svalue *> (ptr_svalue);
! 	return region_sval->get_pointee ();
        }
  
!     case SK_CONSTANT:
!       goto create_symbolic_region;
  
!     case SK_POISONED:
!       {
! 	if (ctxt)
! 	  if (tree ptr = get_representative_tree (ptr_sid))
! 	    {
! 	      poisoned_svalue *poisoned_sval
! 		= as_a <poisoned_svalue *> (ptr_svalue);
! 	      enum poison_kind pkind = poisoned_sval->get_poison_kind ();
! 	      ctxt->warn (new poisoned_value_diagnostic (ptr, pkind));
! 	    }
! 	goto create_symbolic_region;
!       }
  
!     case SK_UNKNOWN:
!       {
!       create_symbolic_region:
! 	/* We need a symbolic_region to represent this unknown region.
! 	   We don't know if it on the heap, stack, or a global,
! 	   so use the root region as parent.  */
! 	region_id new_rid
! 	  = add_region (new symbolic_region (m_root_rid, NULL_TREE, false));
  
! 	/* We need to write the region back into the pointer,
! 	   or we'll get a new, different region each time.
! 	   We do this by changing the meaning of ptr_sid, replacing
! 	   the unknown value with the ptr to the new region.
! 	   We replace the meaning of the ID rather than simply writing
! 	   to PTR's lvalue since there could be several places sharing
! 	   the same unknown ptr value.  */
! 	svalue *ptr_val
! 	  = new region_svalue (ptr_svalue->get_type (), new_rid);
! 	replace_svalue (ptr_sid, ptr_val);
  
! 	return new_rid;
!       }
  
!     case SK_SETJMP:
!       goto create_symbolic_region;
!     }
  
!   gcc_unreachable ();
  }
  
! /* Get a region_id for referencing PTR, creating a region if need be, and
!    potentially generating warnings via CTXT.  */
  
! region_id
! region_model::deref_rvalue (tree ptr, region_model_context *ctxt)
  {
!   svalue_id ptr_sid = get_rvalue (ptr, ctxt);
!   return deref_rvalue (ptr_sid, ctxt);
  }
  
! /* Set the value of the region given by LHS_RID to the value given
!    by RHS_SID.  */
  
  void
! region_model::set_value (region_id lhs_rid, svalue_id rhs_sid,
! 			 region_model_context *ctxt)
  {
!   gcc_assert (!lhs_rid.null_p ());
!   gcc_assert (!rhs_sid.null_p ());
!   get_region (lhs_rid)->set_value (*this, lhs_rid, rhs_sid, ctxt);
  }
  
! /* Set the value of the region given by LHS to the value given
!    by RHS.  */
  
  void
! region_model::set_value (tree lhs, tree rhs, region_model_context *ctxt)
  {
!   region_id lhs_rid = get_lvalue (lhs, ctxt);
!   svalue_id rhs_sid = get_rvalue (rhs, ctxt);
!   gcc_assert (!lhs_rid.null_p ());
!   gcc_assert (!rhs_sid.null_p ());
!   set_value (lhs_rid, rhs_sid, ctxt);
  }
  
! /* Determine what is known about the condition "LHS_SID OP RHS_SID" within
     this model.  */
  
  tristate
! region_model::eval_condition (svalue_id lhs_sid,
! 			      enum tree_code op,
! 			      svalue_id rhs_sid) const
  {
-   svalue *lhs = get_svalue (lhs_sid);
-   svalue *rhs = get_svalue (rhs_sid);
- 
    /* For now, make no attempt to capture constraints on floating-point
       values.  */
    if ((lhs->get_type () && FLOAT_TYPE_P (lhs->get_type ()))
        || (rhs->get_type () && FLOAT_TYPE_P (rhs->get_type ())))
      return tristate::unknown ();
  
!   tristate ts = eval_condition_without_cm (lhs_sid, op, rhs_sid);
! 
    if (ts.is_known ())
      return ts;
  
    /* Otherwise, try constraints.  */
!   return m_constraints->eval_condition (lhs_sid, op, rhs_sid);
  }
  
! /* Determine what is known about the condition "LHS_SID OP RHS_SID" within
     this model, without resorting to the constraint_manager.
  
     This is exposed so that impl_region_model_context::on_state_leak can
--- 1429,1889 ----
  /* Get the value of PV within this region_model,
     emitting any diagnostics to CTXT.  */
  
! const svalue *
  region_model::get_rvalue (path_var pv, region_model_context *ctxt)
  {
    if (pv.m_tree == NULL_TREE)
!     return NULL;
  
!   const svalue *result_sval = get_rvalue_1 (pv, ctxt);
  
!   assert_compat_types (result_sval->get_type (), TREE_TYPE (pv.m_tree));
! 
!   return result_sval;
  }
  
  /* Get the value of EXPR within this region_model (assuming the most
     recent stack frame if it's a local).  */
  
! const svalue *
  region_model::get_rvalue (tree expr, region_model_context *ctxt)
  {
    return get_rvalue (path_var (expr, get_stack_depth () - 1), ctxt);
  }
  
! /* Return true if this model is on a path with "main" as the entrypoint
!    (as opposed to one in which we're merely analyzing a subset of the
!    path through the code).  */
  
! bool
! region_model::called_from_main_p () const
  {
!   if (!m_current_frame)
!     return false;
!   /* Determine if the oldest stack frame in this model is for "main".  */
!   const frame_region *frame0 = get_frame_at_index (0);
!   gcc_assert (frame0);
!   return id_equal (DECL_NAME (frame0->get_function ()->decl), "main");
  }
  
! /* Subroutine of region_model::get_store_value for when REG is (or is within)
!    a global variable that hasn't been touched since the start of this path
!    (or was implicitly touched due to a call to an unknown function).  */
  
! const svalue *
! region_model::get_initial_value_for_global (const region *reg) const
  {
!   /* Get the decl that REG is for (or is within).  */
!   const decl_region *base_reg
!     = reg->get_base_region ()->dyn_cast_decl_region ();
!   gcc_assert (base_reg);
!   tree decl = base_reg->get_decl ();
  
!   /* Special-case: to avoid having to explicitly update all previously
!      untracked globals when calling an unknown fn, they implicitly have
!      an unknown value if an unknown call has occurred, unless this is
!      static to-this-TU and hasn't escaped.  Globals that have escaped
!      are explicitly tracked, so we shouldn't hit this case for them.  */
!   if (m_store.called_unknown_fn_p ()
!       && TREE_PUBLIC (decl)
!       && !TREE_READONLY (decl))
!     return m_mgr->get_or_create_unknown_svalue (reg->get_type ());
  
!   /* If we are on a path from the entrypoint from "main" and we have a
!      global decl defined in this TU that hasn't been touched yet, then
!      the initial value of REG can be taken from the initialization value
!      of the decl.  */
!   if (called_from_main_p () || TREE_READONLY (decl))
!     {
!       /* Attempt to get the initializer value for base_reg.  */
!       if (const svalue *base_reg_init
! 	    = base_reg->get_svalue_for_initializer (m_mgr))
! 	{
! 	  if (reg == base_reg)
! 	    return base_reg_init;
! 	  else
! 	    {
! 	      /* Get the value for REG within base_reg_init.  */
! 	      binding_cluster c (base_reg);
! 	      c.bind (m_mgr->get_store_manager (), base_reg, base_reg_init,
! 		      BK_direct);
! 	      const svalue *sval
! 		= c.get_any_binding (m_mgr->get_store_manager (), reg);
! 	      if (sval)
! 		{
! 		  if (reg->get_type ())
! 		    sval = m_mgr->get_or_create_cast (reg->get_type (),
! 						      sval);
! 		  return sval;
! 		}
! 	    }
! 	}
!     }
! 
!   /* Otherwise, return INIT_VAL(REG).  */
!   return m_mgr->get_or_create_initial_value (reg);
  }
  
! /* Get a value for REG, looking it up in the store, or otherwise falling
!    back to "initial" or "unknown" values.  */
  
! const svalue *
! region_model::get_store_value (const region *reg) const
  {
!   /* Special-case: handle var_decls in the constant pool.  */
!   if (const decl_region *decl_reg = reg->dyn_cast_decl_region ())
!     if (const svalue *sval = decl_reg->maybe_get_constant_value (m_mgr))
!       return sval;
  
!   const svalue *sval
!     = m_store.get_any_binding (m_mgr->get_store_manager (), reg);
!   if (sval)
!     {
!       if (reg->get_type ())
! 	sval = m_mgr->get_or_create_cast (reg->get_type (), sval);
!       return sval;
!     }
  
!   /* Special-case: read at a constant index within a STRING_CST.  */
!   if (const offset_region *offset_reg = reg->dyn_cast_offset_region ())
!     if (tree byte_offset_cst
! 	  = offset_reg->get_byte_offset ()->maybe_get_constant ())
!       if (const string_region *str_reg
! 	  = reg->get_parent_region ()->dyn_cast_string_region ())
! 	{
! 	  tree string_cst = str_reg->get_string_cst ();
! 	  if (const svalue *char_sval
! 		= m_mgr->maybe_get_char_from_string_cst (string_cst,
! 							 byte_offset_cst))
! 	    return m_mgr->get_or_create_cast (reg->get_type (), char_sval);
! 	}
  
!   /* Special-case: read the initial char of a STRING_CST.  */
!   if (const cast_region *cast_reg = reg->dyn_cast_cast_region ())
!     if (const string_region *str_reg
! 	= cast_reg->get_original_region ()->dyn_cast_string_region ())
!       {
! 	tree string_cst = str_reg->get_string_cst ();
! 	tree byte_offset_cst = build_int_cst (integer_type_node, 0);
! 	if (const svalue *char_sval
! 	    = m_mgr->maybe_get_char_from_string_cst (string_cst,
! 						     byte_offset_cst))
! 	  return m_mgr->get_or_create_cast (reg->get_type (), char_sval);
!       }
  
!   /* Otherwise we implicitly have the initial value of the region
!      (if the cluster had been touched, binding_cluster::get_any_binding,
!      would have returned UNKNOWN, and we would already have returned
!      that above).  */
  
!   /* Handle globals.  */
!   if (reg->get_base_region ()->get_parent_region ()->get_kind ()
!       == RK_GLOBALS)
!     return get_initial_value_for_global (reg);
  
!   return m_mgr->get_or_create_initial_value (reg);
  }
  
! /* Return false if REG does not exist, true if it may do.
!    This is for detecting regions within the stack that don't exist anymore
!    after frames are popped.  */
  
! bool
! region_model::region_exists_p (const region *reg) const
  {
!   /* If within a stack frame, check that the stack frame is live.  */
!   if (const frame_region *enclosing_frame = reg->maybe_get_frame_region ())
!     {
!       /* Check that the current frame is the enclosing frame, or is called
! 	 by it.  */
!       for (const frame_region *iter_frame = get_current_frame (); iter_frame;
! 	   iter_frame = iter_frame->get_calling_frame ())
! 	if (iter_frame == enclosing_frame)
! 	  return true;
!       return false;
!     }
  
!   return true;
  }
  
! /* Get a region for referencing PTR_SVAL, creating a region if need be, and
!    potentially generating warnings via CTXT.
!    PTR_SVAL must be of pointer type.
!    PTR_TREE if non-NULL can be used when emitting diagnostics.  */
  
! const region *
! region_model::deref_rvalue (const svalue *ptr_sval, tree ptr_tree,
! 			    region_model_context *ctxt)
  {
!   gcc_assert (ptr_sval);
!   gcc_assert (POINTER_TYPE_P (ptr_sval->get_type ()));
  
!   /* If we're dereferencing PTR_SVAL, assume that it is non-NULL; add this
!      as a constraint.  This suppresses false positives from
!      -Wanalyzer-null-dereference for the case where we later have an
!      if (PTR_SVAL) that would occur if we considered the false branch
!      and transitioned the malloc state machine from start->null.  */
!   tree null_ptr_cst = build_int_cst (ptr_sval->get_type (), 0);
!   const svalue *null_ptr = m_mgr->get_or_create_constant_svalue (null_ptr_cst);
!   m_constraints->add_constraint (ptr_sval, NE_EXPR, null_ptr);
  
!   switch (ptr_sval->get_kind ())
!     {
!     default:
!       break;
  
!     case SK_REGION:
!       {
! 	const region_svalue *region_sval
! 	  = as_a <const region_svalue *> (ptr_sval);
! 	return region_sval->get_pointee ();
!       }
  
!     case SK_BINOP:
!       {
! 	const binop_svalue *binop_sval
! 	  = as_a <const binop_svalue *> (ptr_sval);
! 	switch (binop_sval->get_op ())
! 	  {
! 	  case POINTER_PLUS_EXPR:
! 	    {
! 	      /* If we have a symbolic value expressing pointer arithmentic,
! 		 try to convert it to a suitable region.  */
! 	      const region *parent_region
! 		= deref_rvalue (binop_sval->get_arg0 (), NULL_TREE, ctxt);
! 	      const svalue *offset = binop_sval->get_arg1 ();
! 	      tree type= TREE_TYPE (ptr_sval->get_type ());
! 	      return m_mgr->get_offset_region (parent_region, type, offset);
! 	    }
! 	  default:
! 	    break;
! 	  }
!       }
!       break;
  
!     case SK_POISONED:
!       {
! 	if (ctxt)
! 	  {
! 	    tree ptr = get_representative_tree (ptr_sval);
! 	    /* If we can't get a representative tree for PTR_SVAL
! 	       (e.g. if it hasn't been bound into the store), then
! 	       fall back on PTR_TREE, if non-NULL.  */
! 	    if (!ptr)
! 	      ptr = ptr_tree;
! 	    if (ptr)
! 	      {
! 		const poisoned_svalue *poisoned_sval
! 		  = as_a <const poisoned_svalue *> (ptr_sval);
! 		enum poison_kind pkind = poisoned_sval->get_poison_kind ();
! 		ctxt->warn (new poisoned_value_diagnostic (ptr, pkind));
! 	      }
! 	  }
!       }
!       break;
      }
+ 
+   return m_mgr->get_symbolic_region (ptr_sval);
  }
  
! /* A subclass of pending_diagnostic for complaining about writes to
!    constant regions of memory.  */
  
! class write_to_const_diagnostic
! : public pending_diagnostic_subclass<write_to_const_diagnostic>
  {
! public:
!   write_to_const_diagnostic (const region *reg, tree decl)
!   : m_reg (reg), m_decl (decl)
!   {}
  
!   const char *get_kind () const FINAL OVERRIDE
!   {
!     return "write_to_const_diagnostic";
!   }
  
!   bool operator== (const write_to_const_diagnostic &other) const
!   {
!     return (m_reg == other.m_reg
! 	    && m_decl == other.m_decl);
!   }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
!   {
!     bool warned = warning_at (rich_loc, OPT_Wanalyzer_write_to_const,
! 			      "write to %<const%> object %qE", m_decl);
!     if (warned)
!       inform (DECL_SOURCE_LOCATION (m_decl), "declared here");
!     return warned;
!   }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
!   {
!     return ev.formatted_print ("write to %<const%> object %qE here", m_decl);
!   }
  
! private:
!   const region *m_reg;
!   tree m_decl;
! };
  
! /* A subclass of pending_diagnostic for complaining about writes to
!    string literals.  */
  
! class write_to_string_literal_diagnostic
! : public pending_diagnostic_subclass<write_to_string_literal_diagnostic>
  {
! public:
!   write_to_string_literal_diagnostic (const region *reg)
!   : m_reg (reg)
!   {}
  
!   const char *get_kind () const FINAL OVERRIDE
!   {
!     return "write_to_string_literal_diagnostic";
!   }
  
!   bool operator== (const write_to_string_literal_diagnostic &other) const
!   {
!     return m_reg == other.m_reg;
!   }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
!   {
!     return warning_at (rich_loc, OPT_Wanalyzer_write_to_string_literal,
! 		       "write to string literal");
!     /* Ideally we would show the location of the STRING_CST as well,
!        but it is not available at this point.  */
!   }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
!   {
!     return ev.formatted_print ("write to string literal here");
!   }
  
! private:
!   const region *m_reg;
! };
  
! /* Use CTXT to warn If DEST_REG is a region that shouldn't be written to.  */
! 
! void
! region_model::check_for_writable_region (const region* dest_reg,
! 					 region_model_context *ctxt) const
  {
!   /* Fail gracefully if CTXT is NULL.  */
!   if (!ctxt)
!     return;
  
!   const region *base_reg = dest_reg->get_base_region ();
!   switch (base_reg->get_kind ())
      {
!     default:
!       break;
!     case RK_DECL:
        {
! 	const decl_region *decl_reg = as_a <const decl_region *> (base_reg);
! 	tree decl = decl_reg->get_decl ();
! 	/* Warn about writes to const globals.
! 	   Don't warn for writes to const locals, and params in particular,
! 	   since we would warn in push_frame when setting them up (e.g the
! 	   "this" param is "T* const").  */
! 	if (TREE_READONLY (decl)
! 	    && is_global_var (decl))
! 	  ctxt->warn (new write_to_const_diagnostic (dest_reg, decl));
        }
+       break;
+     case RK_STRING:
+       ctxt->warn (new write_to_string_literal_diagnostic (dest_reg));
+       break;
+     }
+ }
  
! /* Set the value of the region given by LHS_REG to the value given
!    by RHS_SVAL.  */
  
! void
! region_model::set_value (const region *lhs_reg, const svalue *rhs_sval,
! 			 region_model_context *ctxt)
! {
!   gcc_assert (lhs_reg);
!   gcc_assert (rhs_sval);
  
!   check_for_writable_region (lhs_reg, ctxt);
  
!   m_store.set_value (m_mgr->get_store_manager(), lhs_reg, rhs_sval,
! 		     BK_direct, ctxt ? ctxt->get_uncertainty () : NULL);
! }
  
! /* Set the value of the region given by LHS to the value given by RHS.  */
  
! void
! region_model::set_value (tree lhs, tree rhs, region_model_context *ctxt)
! {
!   const region *lhs_reg = get_lvalue (lhs, ctxt);
!   const svalue *rhs_sval = get_rvalue (rhs, ctxt);
!   gcc_assert (lhs_reg);
!   gcc_assert (rhs_sval);
!   set_value (lhs_reg, rhs_sval, ctxt);
! }
  
! /* Remove all bindings overlapping REG within the store.  */
! 
! void
! region_model::clobber_region (const region *reg)
! {
!   m_store.clobber_region (m_mgr->get_store_manager(), reg);
  }
  
! /* Remove any bindings for REG within the store.  */
  
! void
! region_model::purge_region (const region *reg)
  {
!   m_store.purge_region (m_mgr->get_store_manager(), reg);
  }
  
! /* Zero-fill REG.  */
  
  void
! region_model::zero_fill_region (const region *reg)
  {
!   m_store.zero_fill_region (m_mgr->get_store_manager(), reg);
  }
  
! /* Mark REG as having unknown content.  */
  
  void
! region_model::mark_region_as_unknown (const region *reg,
! 				      uncertainty_t *uncertainty)
  {
!   m_store.mark_region_as_unknown (m_mgr->get_store_manager(), reg,
! 				  uncertainty);
  }
  
! /* Determine what is known about the condition "LHS_SVAL OP RHS_SVAL" within
     this model.  */
  
  tristate
! region_model::eval_condition (const svalue *lhs,
! 			       enum tree_code op,
! 			       const svalue *rhs) const
  {
    /* For now, make no attempt to capture constraints on floating-point
       values.  */
    if ((lhs->get_type () && FLOAT_TYPE_P (lhs->get_type ()))
        || (rhs->get_type () && FLOAT_TYPE_P (rhs->get_type ())))
      return tristate::unknown ();
  
!   tristate ts = eval_condition_without_cm (lhs, op, rhs);
    if (ts.is_known ())
      return ts;
  
    /* Otherwise, try constraints.  */
!   return m_constraints->eval_condition (lhs, op, rhs);
  }
  
! /* Determine what is known about the condition "LHS_SVAL OP RHS_SVAL" within
     this model, without resorting to the constraint_manager.
  
     This is exposed so that impl_region_model_context::on_state_leak can
*************** region_model::eval_condition (svalue_id
*** 5519,5608 ****
     without risking creating new ECs.  */
  
  tristate
! region_model::eval_condition_without_cm (svalue_id lhs_sid,
! 					 enum tree_code op,
! 					 svalue_id rhs_sid) const
  {
-   svalue *lhs = get_svalue (lhs_sid);
-   svalue *rhs = get_svalue (rhs_sid);
    gcc_assert (lhs);
    gcc_assert (rhs);
  
    /* See what we know based on the values.  */
!   if (lhs && rhs)
      {
!       /* For now, make no attempt to capture constraints on floating-point
! 	 values.  */
!       if ((lhs->get_type () && FLOAT_TYPE_P (lhs->get_type ()))
! 	  || (rhs->get_type () && FLOAT_TYPE_P (rhs->get_type ())))
! 	return tristate::unknown ();
  
!       if (lhs == rhs)
  	{
! 	  /* If we have the same svalue, then we have equality
! 	     (apart from NaN-handling).
! 	     TODO: should this definitely be the case for poisoned values?  */
! 	  switch (op)
! 	    {
! 	    case EQ_EXPR:
! 	    case GE_EXPR:
! 	    case LE_EXPR:
! 	      return tristate::TS_TRUE;
  
! 	    case NE_EXPR:
! 	    case GT_EXPR:
! 	    case LT_EXPR:
! 	      return tristate::TS_FALSE;
  
! 	    default:
! 	      /* For other ops, use the logic below.  */
! 	      break;
! 	    }
  	}
  
!       /* If we have a pair of region_svalues, compare them.  */
!       if (region_svalue *lhs_ptr = lhs->dyn_cast_region_svalue ())
! 	if (region_svalue *rhs_ptr = rhs->dyn_cast_region_svalue ())
! 	  {
! 	    tristate res = region_svalue::eval_condition (lhs_ptr, op, rhs_ptr);
! 	    if (res.is_known ())
! 	      return res;
! 	    /* Otherwise, only known through constraints.  */
! 	  }
  
!       /* If we have a pair of constants, compare them.  */
!       if (constant_svalue *cst_lhs = lhs->dyn_cast_constant_svalue ())
! 	if (constant_svalue *cst_rhs = rhs->dyn_cast_constant_svalue ())
! 	  return constant_svalue::eval_condition (cst_lhs, op, cst_rhs);
  
!       /* Handle comparison of a region_svalue against zero.  */
!       if (region_svalue *ptr = lhs->dyn_cast_region_svalue ())
! 	if (constant_svalue *cst_rhs = rhs->dyn_cast_constant_svalue ())
! 	  if (zerop (cst_rhs->get_constant ()))
  	    {
! 	      /* A region_svalue is a non-NULL pointer, except in certain
! 		 special cases (see the comment for region::non_null_p.  */
! 	      region *pointee = get_region (ptr->get_pointee ());
! 	      if (pointee->non_null_p (*this))
  		{
! 		  switch (op)
! 		    {
! 		    default:
! 		      gcc_unreachable ();
  
! 		    case EQ_EXPR:
! 		    case GE_EXPR:
! 		    case LE_EXPR:
! 		      return tristate::TS_FALSE;
  
! 		    case NE_EXPR:
! 		    case GT_EXPR:
! 		    case LT_EXPR:
! 		      return tristate::TS_TRUE;
! 		    }
  		}
  	    }
!     }
  
    return tristate::TS_UNKNOWN;
  }
--- 1891,2029 ----
     without risking creating new ECs.  */
  
  tristate
! region_model::eval_condition_without_cm (const svalue *lhs,
! 					  enum tree_code op,
! 					  const svalue *rhs) const
  {
    gcc_assert (lhs);
    gcc_assert (rhs);
  
    /* See what we know based on the values.  */
! 
!   /* For now, make no attempt to capture constraints on floating-point
!      values.  */
!   if ((lhs->get_type () && FLOAT_TYPE_P (lhs->get_type ()))
!       || (rhs->get_type () && FLOAT_TYPE_P (rhs->get_type ())))
!     return tristate::unknown ();
! 
!   /* Unwrap any unmergeable values.  */
!   lhs = lhs->unwrap_any_unmergeable ();
!   rhs = rhs->unwrap_any_unmergeable ();
! 
!   if (lhs == rhs)
      {
!       /* If we have the same svalue, then we have equality
! 	 (apart from NaN-handling).
! 	 TODO: should this definitely be the case for poisoned values?  */
!       /* Poisoned and unknown values are "unknowable".  */
!       if (lhs->get_kind () == SK_POISONED
! 	  || lhs->get_kind () == SK_UNKNOWN)
! 	return tristate::TS_UNKNOWN;
  
!       switch (op)
  	{
! 	case EQ_EXPR:
! 	case GE_EXPR:
! 	case LE_EXPR:
! 	  return tristate::TS_TRUE;
  
! 	case NE_EXPR:
! 	case GT_EXPR:
! 	case LT_EXPR:
! 	  return tristate::TS_FALSE;
  
! 	default:
! 	  /* For other ops, use the logic below.  */
! 	  break;
  	}
+     }
  
!   /* If we have a pair of region_svalues, compare them.  */
!   if (const region_svalue *lhs_ptr = lhs->dyn_cast_region_svalue ())
!     if (const region_svalue *rhs_ptr = rhs->dyn_cast_region_svalue ())
!       {
! 	tristate res = region_svalue::eval_condition (lhs_ptr, op, rhs_ptr);
! 	if (res.is_known ())
! 	  return res;
! 	/* Otherwise, only known through constraints.  */
!       }
  
!   /* If we have a pair of constants, compare them.  */
!   if (const constant_svalue *cst_lhs = lhs->dyn_cast_constant_svalue ())
!     if (const constant_svalue *cst_rhs = rhs->dyn_cast_constant_svalue ())
!       return constant_svalue::eval_condition (cst_lhs, op, cst_rhs);
  
!   /* Handle comparison of a region_svalue against zero.  */
! 
!   if (const region_svalue *ptr = lhs->dyn_cast_region_svalue ())
!     if (const constant_svalue *cst_rhs = rhs->dyn_cast_constant_svalue ())
!       if (zerop (cst_rhs->get_constant ()))
! 	{
! 	  /* A region_svalue is a non-NULL pointer, except in certain
! 	     special cases (see the comment for region::non_null_p.  */
! 	  const region *pointee = ptr->get_pointee ();
! 	  if (pointee->non_null_p ())
  	    {
! 	      switch (op)
  		{
! 		default:
! 		  gcc_unreachable ();
  
! 		case EQ_EXPR:
! 		case GE_EXPR:
! 		case LE_EXPR:
! 		  return tristate::TS_FALSE;
  
! 		case NE_EXPR:
! 		case GT_EXPR:
! 		case LT_EXPR:
! 		  return tristate::TS_TRUE;
  		}
  	    }
! 	}
! 
!   /* Handle rejection of equality for comparisons of the initial values of
!      "external" values (such as params) with the address of locals.  */
!   if (const initial_svalue *init_lhs = lhs->dyn_cast_initial_svalue ())
!     if (const region_svalue *rhs_ptr = rhs->dyn_cast_region_svalue ())
!       {
! 	tristate res = compare_initial_and_pointer (init_lhs, rhs_ptr);
! 	if (res.is_known ())
! 	  return res;
!       }
!   if (const initial_svalue *init_rhs = rhs->dyn_cast_initial_svalue ())
!     if (const region_svalue *lhs_ptr = lhs->dyn_cast_region_svalue ())
!       {
! 	tristate res = compare_initial_and_pointer (init_rhs, lhs_ptr);
! 	if (res.is_known ())
! 	  return res;
!       }
! 
!   if (const widening_svalue *widen_lhs = lhs->dyn_cast_widening_svalue ())
!     if (tree rhs_cst = rhs->maybe_get_constant ())
!       {
! 	tristate res = widen_lhs->eval_condition_without_cm (op, rhs_cst);
! 	if (res.is_known ())
! 	  return res;
!       }
! 
!   return tristate::TS_UNKNOWN;
! }
! 
! /* Subroutine of region_model::eval_condition_without_cm, for rejecting
!    equality of INIT_VAL(PARM) with &LOCAL.  */
! 
! tristate
! region_model::compare_initial_and_pointer (const initial_svalue *init,
! 					    const region_svalue *ptr) const
! {
!   const region *pointee = ptr->get_pointee ();
! 
!   /* If we have a pointer to something within a stack frame, it can't be the
!      initial value of a param.  */
!   if (pointee->maybe_get_frame_region ())
!     if (init->initial_value_of_param_p ())
!       return tristate::TS_FALSE;
  
    return tristate::TS_UNKNOWN;
  }
*************** region_model::add_constraint (tree lhs,
*** 5621,5630 ****
    if (FLOAT_TYPE_P (TREE_TYPE (lhs)) || FLOAT_TYPE_P (TREE_TYPE (rhs)))
      return true;
  
!   svalue_id lhs_sid = get_rvalue (lhs, ctxt);
!   svalue_id rhs_sid = get_rvalue (rhs, ctxt);
  
!   tristate t_cond = eval_condition (lhs_sid, op, rhs_sid);
  
    /* If we already have the condition, do nothing.  */
    if (t_cond.is_true ())
--- 2042,2051 ----
    if (FLOAT_TYPE_P (TREE_TYPE (lhs)) || FLOAT_TYPE_P (TREE_TYPE (rhs)))
      return true;
  
!   const svalue *lhs_sval = get_rvalue (lhs, ctxt);
!   const svalue *rhs_sval = get_rvalue (rhs, ctxt);
  
!   tristate t_cond = eval_condition (lhs_sval, op, rhs_sval);
  
    /* If we already have the condition, do nothing.  */
    if (t_cond.is_true ())
*************** region_model::add_constraint (tree lhs,
*** 5636,5655 ****
      return false;
  
    /* Store the constraint.  */
!   m_constraints->add_constraint (lhs_sid, op, rhs_sid);
  
    add_any_constraints_from_ssa_def_stmt (lhs, op, rhs, ctxt);
  
-   /* If we now know a symbolic_region is non-NULL, clear its
-      m_possibly_null.  */
-   if (zerop (rhs) && op == NE_EXPR)
-     if (region_svalue *ptr = get_svalue (lhs_sid)->dyn_cast_region_svalue ())
-       {
- 	region *pointee = get_region (ptr->get_pointee ());
- 	if (symbolic_region *sym_reg = pointee->dyn_cast_symbolic_region ())
- 	  sym_reg->m_possibly_null = false;
-       }
- 
    /* Notify the context, if any.  This exists so that the state machines
       in a program_state can be notified about the condition, and so can
       set sm-state for e.g. unchecked->checked, both for cfg-edges, and
--- 2057,2066 ----
      return false;
  
    /* Store the constraint.  */
!   m_constraints->add_constraint (lhs_sval, op, rhs_sval);
  
    add_any_constraints_from_ssa_def_stmt (lhs, op, rhs, ctxt);
  
    /* Notify the context, if any.  This exists so that the state machines
       in a program_state can be notified about the condition, and so can
       set sm-state for e.g. unchecked->checked, both for cfg-edges, and
*************** region_model::add_constraint (tree lhs,
*** 5660,5665 ****
--- 2071,2090 ----
    return true;
  }
  
+ /* As above, but when returning false, if OUT is non-NULL, write a
+    new rejected_constraint to *OUT.  */
+ 
+ bool
+ region_model::add_constraint (tree lhs, enum tree_code op, tree rhs,
+ 			      region_model_context *ctxt,
+ 			      rejected_constraint **out)
+ {
+   bool sat = add_constraint (lhs, op, rhs, ctxt);
+   if (!sat && out)
+     *out = new rejected_constraint (*this, lhs, op, rhs);
+   return sat;
+ }
+ 
  /* Subroutine of region_model::add_constraint for handling optimized
     && and || conditionals.
  
*************** region_model::add_any_constraints_from_g
*** 5722,5727 ****
--- 2147,2153 ----
        break;
  
      case NOP_EXPR:
+     case VIEW_CONVERT_EXPR:
        {
  	add_constraint (gimple_assign_rhs1 (assign), op, rhs, ctxt);
        }
*************** region_model::eval_condition (tree lhs,
*** 5808,5987 ****
    return eval_condition (get_rvalue (lhs, ctxt), op, get_rvalue (rhs, ctxt));
  }
  
! /* If SID is a constant value, return the underlying tree constant.
!    Otherwise, return NULL_TREE.  */
  
! tree
! region_model::maybe_get_constant (svalue_id sid) const
  {
!   gcc_assert (!sid.null_p ());
!   svalue *sval = get_svalue (sid);
!   return sval->maybe_get_constant ();
  }
  
! /* Create a new child region of the heap (creating the heap region if
!    necessary).
!    Return the region_id of the new child region.  */
  
! region_id
! region_model::add_new_malloc_region ()
  {
!   region_id heap_rid
!     = get_root_region ()->ensure_heap_region (this);
!   return add_region (new symbolic_region (heap_rid, NULL_TREE, true));
  }
  
! /* Attempt to return a tree that represents SID, or return NULL_TREE.  */
  
  tree
! region_model::get_representative_tree (svalue_id sid) const
  {
!   if (sid.null_p ())
!     return NULL_TREE;
! 
!   /* Find the first region that stores the value (e.g. a local) and
!      generate a representative tree for it.  */
!   unsigned i;
!   region *region;
!   FOR_EACH_VEC_ELT (m_regions, i, region)
!     if (sid == region->get_value_direct ())
!       {
! 	path_var pv = get_representative_path_var (region_id::from_int (i));
! 	if (pv.m_tree)
! 	  return pv.m_tree;
!       }
  
!   /* Handle string literals and various other pointers.  */
!   svalue *sval = get_svalue (sid);
!   if (region_svalue *ptr_sval = sval->dyn_cast_region_svalue ())
!     {
!       region_id rid = ptr_sval->get_pointee ();
!       path_var pv = get_representative_path_var (rid);
!       if (pv.m_tree)
! 	return build1 (ADDR_EXPR,
! 		       TREE_TYPE (sval->get_type ()),
! 		       pv.m_tree);
!     }
  
!   return maybe_get_constant (sid);
  }
  
! /* Attempt to return a path_var that represents the region, or return
     the NULL path_var.
     For example, a region for a field of a local would be a path_var
!    wrapping a COMPONENT_REF.  */
  
  path_var
! region_model::get_representative_path_var (region_id rid) const
  {
!   region *reg = get_region (rid);
!   region *parent_reg = get_region (reg->get_parent ());
!   region_id stack_rid = get_stack_region_id ();
!   if (!stack_rid.null_p ())
!     if (parent_reg && parent_reg->get_parent () == stack_rid)
!       {
! 	frame_region *parent_frame = (frame_region *)parent_reg;
! 	tree t = parent_frame->get_tree_for_child_region (rid);
! 	return path_var (t, parent_frame->get_depth ());
!     }
!   if (reg->get_parent () == get_globals_region_id ())
      {
!       map_region *globals = get_root_region ()->get_globals_region (this);
!       if (globals)
! 	return path_var (globals->get_tree_for_child_region (rid), -1);
!     }
  
!   /* Handle e.g. fields of a local by recursing.  */
!   region_id parent_rid = reg->get_parent ();
!   if (parent_reg)
!     {
!       if (reg->is_view_p ())
! 	{
! 	  path_var parent_pv = get_representative_path_var (parent_rid);
! 	  if (parent_pv.m_tree && reg->get_type ())
! 	    return path_var (build1 (NOP_EXPR,
! 				     reg->get_type (),
! 				     parent_pv.m_tree),
! 			     parent_pv.m_stack_depth);
! 	}
  
!       if (parent_reg->get_kind () == RK_STRUCT)
! 	{
! 	  map_region *parent_map_region = (map_region *)parent_reg;
! 	  /* This can fail if we have a view, rather than a field.  */
! 	  if (tree child_key
! 		= parent_map_region->get_tree_for_child_region (rid))
! 	    {
! 	      path_var parent_pv = get_representative_path_var (parent_rid);
! 	      if (parent_pv.m_tree && TREE_CODE (child_key) == FIELD_DECL)
! 		return path_var (build3 (COMPONENT_REF,
! 					 TREE_TYPE (child_key),
! 					 parent_pv.m_tree, child_key,
! 					 NULL_TREE),
! 				 parent_pv.m_stack_depth);
! 	    }
! 	}
  
!       /* Handle elements within an array.  */
!       if (array_region *array_reg = parent_reg->dyn_cast_array_region ())
        {
! 	array_region::key_t key;
! 	if (array_reg->get_key_for_child_region (rid, &key))
! 	  {
! 	    path_var parent_pv = get_representative_path_var (parent_rid);
! 	    if (parent_pv.m_tree && reg->get_type ())
! 	      {
! 		tree index = array_reg->constant_from_key (key);
! 		return path_var (build4 (ARRAY_REF,
! 					 reg->get_type (),
! 					 parent_pv.m_tree, index,
! 					 NULL_TREE, NULL_TREE),
! 				 parent_pv.m_stack_depth);
! 	      }
! 	  }
        }
-     }
  
!   /* Handle string literals.  */
!   svalue_id sid = reg->get_value_direct ();
!   if (svalue *sval = get_svalue (sid))
!     if (tree cst = sval->maybe_get_constant ())
!       if (TREE_CODE (cst) == STRING_CST)
! 	return path_var (cst, 0);
  
!   return path_var (NULL_TREE, 0);
! }
  
! /* Locate all regions that directly have value SID and append representative
!    path_var instances for them into *OUT.  */
  
! void
! region_model::get_path_vars_for_svalue (svalue_id sid, vec<path_var> *out) const
! {
!   unsigned i;
!   region *region;
!   FOR_EACH_VEC_ELT (m_regions, i, region)
!     if (sid == region->get_value_direct ())
        {
! 	path_var pv = get_representative_path_var (region_id::from_int (i));
! 	if (pv.m_tree)
! 	  out->safe_push (pv);
        }
  }
  
! /* Set DST_RID value to be a new unknown value of type TYPE.  */
  
! svalue_id
! region_model::set_to_new_unknown_value (region_id dst_rid, tree type,
! 					region_model_context *ctxt)
  {
!   gcc_assert (!dst_rid.null_p ());
!   svalue_id new_sid = add_svalue (new unknown_svalue (type));
!   set_value (dst_rid, new_sid, ctxt);
  
!   // TODO: presumably purge all child regions too (but do this in set_value?)
  
!   return new_sid;
  }
  
  /* Update this model for any phis in SNODE, assuming we came from
--- 2234,2516 ----
    return eval_condition (get_rvalue (lhs, ctxt), op, get_rvalue (rhs, ctxt));
  }
  
! /* Implementation of region_model::get_representative_path_var.
!    Attempt to return a path_var that represents SVAL, or return NULL_TREE.
!    Use VISITED to prevent infinite mutual recursion with the overload for
!    regions.  */
  
! path_var
! region_model::get_representative_path_var_1 (const svalue *sval,
! 					     svalue_set *visited) const
  {
!   gcc_assert (sval);
! 
!   /* Prevent infinite recursion.  */
!   if (visited->contains (sval))
!     return path_var (NULL_TREE, 0);
!   visited->add (sval);
! 
!   /* Handle casts by recursion into get_representative_path_var.  */
!   if (const svalue *cast_sval = sval->maybe_undo_cast ())
!     {
!       path_var result = get_representative_path_var (cast_sval, visited);
!       tree orig_type = sval->get_type ();
!       /* If necessary, wrap the result in a cast.  */
!       if (result.m_tree && orig_type)
! 	result.m_tree = build1 (NOP_EXPR, orig_type, result.m_tree);
!       return result;
!     }
! 
!   auto_vec<path_var> pvs;
!   m_store.get_representative_path_vars (this, visited, sval, &pvs);
! 
!   if (tree cst = sval->maybe_get_constant ())
!     pvs.safe_push (path_var (cst, 0));
! 
!   /* Handle string literals and various other pointers.  */
!   if (const region_svalue *ptr_sval = sval->dyn_cast_region_svalue ())
!     {
!       const region *reg = ptr_sval->get_pointee ();
!       if (path_var pv = get_representative_path_var (reg, visited))
! 	return path_var (build1 (ADDR_EXPR,
! 				 sval->get_type (),
! 				 pv.m_tree),
! 			 pv.m_stack_depth);
!     }
! 
!   /* If we have a sub_svalue, look for ways to represent the parent.  */
!   if (const sub_svalue *sub_sval = sval->dyn_cast_sub_svalue ())
!     {
!       const svalue *parent_sval = sub_sval->get_parent ();
!       const region *subreg = sub_sval->get_subregion ();
!       if (path_var parent_pv
! 	    = get_representative_path_var (parent_sval, visited))
! 	if (const field_region *field_reg = subreg->dyn_cast_field_region ())
! 	  return path_var (build3 (COMPONENT_REF,
! 				   sval->get_type (),
! 				   parent_pv.m_tree,
! 				   field_reg->get_field (),
! 				   NULL_TREE),
! 			   parent_pv.m_stack_depth);
!     }
! 
!   if (pvs.length () < 1)
!     return path_var (NULL_TREE, 0);
! 
!   pvs.qsort (readability_comparator);
!   return pvs[0];
  }
  
! /* Attempt to return a path_var that represents SVAL, or return NULL_TREE.
!    Use VISITED to prevent infinite mutual recursion with the overload for
!    regions
  
!    This function defers to get_representative_path_var_1 to do the work;
!    it adds verification that get_representative_path_var_1 returned a tree
!    of the correct type.  */
! 
! path_var
! region_model::get_representative_path_var (const svalue *sval,
! 					   svalue_set *visited) const
  {
!   if (sval == NULL)
!     return path_var (NULL_TREE, 0);
! 
!   tree orig_type = sval->get_type ();
! 
!   path_var result = get_representative_path_var_1 (sval, visited);
! 
!   /* Verify that the result has the same type as SVAL, if any.  */
!   if (result.m_tree && orig_type)
!     gcc_assert (TREE_TYPE (result.m_tree) == orig_type);
! 
!   return result;
  }
  
! /* Attempt to return a tree that represents SVAL, or return NULL_TREE.
! 
!    Strip off any top-level cast, to avoid messages like
!      double-free of '(void *)ptr'
!    from analyzer diagnostics.  */
  
  tree
! region_model::get_representative_tree (const svalue *sval) const
  {
!   svalue_set visited;
!   tree expr = get_representative_path_var (sval, &visited).m_tree;
  
!   /* Strip off any top-level cast.  */
!   if (expr && TREE_CODE (expr) == NOP_EXPR)
!     expr = TREE_OPERAND (expr, 0);
  
!   return fixup_tree_for_diagnostic (expr);
  }
  
! /* Implementation of region_model::get_representative_path_var.
! 
!    Attempt to return a path_var that represents REG, or return
     the NULL path_var.
     For example, a region for a field of a local would be a path_var
!    wrapping a COMPONENT_REF.
!    Use VISITED to prevent infinite mutual recursion with the overload for
!    svalues.  */
  
  path_var
! region_model::get_representative_path_var_1 (const region *reg,
! 					     svalue_set *visited) const
  {
!   switch (reg->get_kind ())
      {
!     default:
!       gcc_unreachable ();
  
!     case RK_FRAME:
!     case RK_GLOBALS:
!     case RK_CODE:
!     case RK_HEAP:
!     case RK_STACK:
!     case RK_ROOT:
!        /* Regions that represent memory spaces are not expressible as trees.  */
!       return path_var (NULL_TREE, 0);
  
!     case RK_FUNCTION:
!       {
! 	const function_region *function_reg
! 	  = as_a <const function_region *> (reg);
! 	return path_var (function_reg->get_fndecl (), 0);
!       }
!     case RK_LABEL:
!       {
! 	const label_region *label_reg = as_a <const label_region *> (reg);
! 	return path_var (label_reg->get_label (), 0);
!       }
  
!     case RK_SYMBOLIC:
        {
! 	const symbolic_region *symbolic_reg
! 	  = as_a <const symbolic_region *> (reg);
! 	const svalue *pointer = symbolic_reg->get_pointer ();
! 	path_var pointer_pv = get_representative_path_var (pointer, visited);
! 	if (!pointer_pv)
! 	  return path_var (NULL_TREE, 0);
! 	tree offset = build_int_cst (pointer->get_type (), 0);
! 	return path_var (build2 (MEM_REF,
! 				 reg->get_type (),
! 				 pointer_pv.m_tree,
! 				 offset),
! 			 pointer_pv.m_stack_depth);
!       }
!     case RK_DECL:
!       {
! 	const decl_region *decl_reg = as_a <const decl_region *> (reg);
! 	return path_var (decl_reg->get_decl (), decl_reg->get_stack_depth ());
!       }
!     case RK_FIELD:
!       {
! 	const field_region *field_reg = as_a <const field_region *> (reg);
! 	path_var parent_pv
! 	  = get_representative_path_var (reg->get_parent_region (), visited);
! 	if (!parent_pv)
! 	  return path_var (NULL_TREE, 0);
! 	return path_var (build3 (COMPONENT_REF,
! 				 reg->get_type (),
! 				 parent_pv.m_tree,
! 				 field_reg->get_field (),
! 				 NULL_TREE),
! 			 parent_pv.m_stack_depth);
        }
  
!     case RK_ELEMENT:
!       {
! 	const element_region *element_reg
! 	  = as_a <const element_region *> (reg);
! 	path_var parent_pv
! 	  = get_representative_path_var (reg->get_parent_region (), visited);
! 	if (!parent_pv)
! 	  return path_var (NULL_TREE, 0);
! 	path_var index_pv
! 	  = get_representative_path_var (element_reg->get_index (), visited);
! 	if (!index_pv)
! 	  return path_var (NULL_TREE, 0);
! 	return path_var (build4 (ARRAY_REF,
! 				 reg->get_type (),
! 				 parent_pv.m_tree, index_pv.m_tree,
! 				 NULL_TREE, NULL_TREE),
! 			 parent_pv.m_stack_depth);
!       }
  
!     case RK_OFFSET:
!       {
! 	const offset_region *offset_reg
! 	  = as_a <const offset_region *> (reg);
! 	path_var parent_pv
! 	  = get_representative_path_var (reg->get_parent_region (), visited);
! 	if (!parent_pv)
! 	  return path_var (NULL_TREE, 0);
! 	path_var offset_pv
! 	  = get_representative_path_var (offset_reg->get_byte_offset (),
! 					 visited);
! 	if (!offset_pv || TREE_CODE (offset_pv.m_tree) != INTEGER_CST)
! 	  return path_var (NULL_TREE, 0);
! 	tree addr_parent = build1 (ADDR_EXPR,
! 				   build_pointer_type (reg->get_type ()),
! 				   parent_pv.m_tree);
! 	return path_var (build2 (MEM_REF,
! 				 reg->get_type (),
! 				 addr_parent, offset_pv.m_tree),
! 			 parent_pv.m_stack_depth);
!       }
  
!     case RK_CAST:
!       {
! 	path_var parent_pv
! 	  = get_representative_path_var (reg->get_parent_region (), visited);
! 	if (!parent_pv)
! 	  return path_var (NULL_TREE, 0);
! 	return path_var (build1 (NOP_EXPR,
! 				 reg->get_type (),
! 				 parent_pv.m_tree),
! 			 parent_pv.m_stack_depth);
!       }
  
!     case RK_HEAP_ALLOCATED:
!     case RK_ALLOCA:
!       /* No good way to express heap-allocated/alloca regions as trees.  */
!       return path_var (NULL_TREE, 0);
! 
!     case RK_STRING:
        {
! 	const string_region *string_reg = as_a <const string_region *> (reg);
! 	return path_var (string_reg->get_string_cst (), 0);
        }
+ 
+     case RK_UNKNOWN:
+       return path_var (NULL_TREE, 0);
+     }
  }
  
! /* Attempt to return a path_var that represents REG, or return
!    the NULL path_var.
!    For example, a region for a field of a local would be a path_var
!    wrapping a COMPONENT_REF.
!    Use VISITED to prevent infinite mutual recursion with the overload for
!    svalues.
  
!    This function defers to get_representative_path_var_1 to do the work;
!    it adds verification that get_representative_path_var_1 returned a tree
!    of the correct type.  */
! 
! path_var
! region_model::get_representative_path_var (const region *reg,
! 					   svalue_set *visited) const
  {
!   path_var result = get_representative_path_var_1 (reg, visited);
  
!   /* Verify that the result has the same type as REG, if any.  */
!   if (result.m_tree && reg->get_type ())
!     gcc_assert (TREE_TYPE (result.m_tree) == reg->get_type ());
  
!   return result;
  }
  
  /* Update this model for any phis in SNODE, assuming we came from
*************** region_model::update_for_phis (const sup
*** 6003,6016 ****
        tree lhs = gimple_phi_result (phi);
  
        /* Update next_state based on phi.  */
!       bool is_back_edge = last_cfg_superedge->back_edge_p ();
!       handle_phi (phi, lhs, src, is_back_edge, ctxt);
      }
  }
  
  /* Attempt to update this model for taking EDGE (where the last statement
     was LAST_STMT), returning true if the edge can be taken, false
     otherwise.
  
     For CFG superedges where LAST_STMT is a conditional or a switch
     statement, attempt to add the relevant conditions for EDGE to this
--- 2532,2546 ----
        tree lhs = gimple_phi_result (phi);
  
        /* Update next_state based on phi.  */
!       handle_phi (phi, lhs, src, ctxt);
      }
  }
  
  /* Attempt to update this model for taking EDGE (where the last statement
     was LAST_STMT), returning true if the edge can be taken, false
     otherwise.
+    When returning false, if OUT is non-NULL, write a new rejected_constraint
+    to it.
  
     For CFG superedges where LAST_STMT is a conditional or a switch
     statement, attempt to add the relevant conditions for EDGE to this
*************** region_model::update_for_phis (const sup
*** 6030,6036 ****
  bool
  region_model::maybe_update_for_edge (const superedge &edge,
  				     const gimple *last_stmt,
! 				     region_model_context *ctxt)
  {
    /* Handle frame updates for interprocedural edges.  */
    switch (edge.m_kind)
--- 2560,2567 ----
  bool
  region_model::maybe_update_for_edge (const superedge &edge,
  				     const gimple *last_stmt,
! 				     region_model_context *ctxt,
! 				     rejected_constraint **out)
  {
    /* Handle frame updates for interprocedural edges.  */
    switch (edge.m_kind)
*************** region_model::maybe_update_for_edge (con
*** 6070,6085 ****
    if (const gcond *cond_stmt = dyn_cast <const gcond *> (last_stmt))
      {
        const cfg_superedge *cfg_sedge = as_a <const cfg_superedge *> (&edge);
!       return apply_constraints_for_gcond (*cfg_sedge, cond_stmt, ctxt);
      }
  
    if (const gswitch *switch_stmt = dyn_cast <const gswitch *> (last_stmt))
      {
        const switch_cfg_superedge *switch_sedge
  	= as_a <const switch_cfg_superedge *> (&edge);
!       return apply_constraints_for_gswitch (*switch_sedge, switch_stmt, ctxt);
      }
  
    return true;
  }
  
--- 2601,2622 ----
    if (const gcond *cond_stmt = dyn_cast <const gcond *> (last_stmt))
      {
        const cfg_superedge *cfg_sedge = as_a <const cfg_superedge *> (&edge);
!       return apply_constraints_for_gcond (*cfg_sedge, cond_stmt, ctxt, out);
      }
  
    if (const gswitch *switch_stmt = dyn_cast <const gswitch *> (last_stmt))
      {
        const switch_cfg_superedge *switch_sedge
  	= as_a <const switch_cfg_superedge *> (&edge);
!       return apply_constraints_for_gswitch (*switch_sedge, switch_stmt,
! 					    ctxt, out);
      }
  
+   /* Apply any constraints due to an exception being thrown.  */
+   if (const cfg_superedge *cfg_sedge = dyn_cast <const cfg_superedge *> (&edge))
+     if (cfg_sedge->get_flags () & EDGE_EH)
+       return apply_constraints_for_exception (last_stmt, ctxt, out);
+ 
    return true;
  }
  
*************** void
*** 6092,6146 ****
  region_model::update_for_call_superedge (const call_superedge &call_edge,
  					 region_model_context *ctxt)
  {
!   /* Build a vec of argument svalue_id, using the current top
       frame for resolving tree expressions.  */
    const gcall *call_stmt = call_edge.get_call_stmt ();
!   auto_vec<svalue_id> arg_sids (gimple_call_num_args (call_stmt));
  
    for (unsigned i = 0; i < gimple_call_num_args (call_stmt); i++)
      {
        tree arg = gimple_call_arg (call_stmt, i);
!       arg_sids.quick_push (get_rvalue (arg, ctxt));
      }
  
!   push_frame (call_edge.get_callee_function (), &arg_sids, ctxt);
  }
  
  /* Pop the top-most frame_region from the stack, and copy the return
     region's values (if any) into the region for the lvalue of the LHS of
     the call (if any).  */
- 
  void
  region_model::update_for_return_superedge (const return_superedge &return_edge,
  					   region_model_context *ctxt)
  {
-   region_id stack_rid = get_stack_region_id ();
-   stack_region *stack = get_region <stack_region> (stack_rid);
- 
    /* Get the region for the result of the call, within the caller frame.  */
!   region_id result_dst_rid;
    const gcall *call_stmt = return_edge.get_call_stmt ();
    tree lhs = gimple_call_lhs (call_stmt);
    if (lhs)
      {
        /* Normally we access the top-level frame, which is:
! 	   path_var (expr, stack->get_num_frames () - 1)
  	 whereas here we need the caller frame, hence "- 2" here.  */
!       gcc_assert (stack->get_num_frames () >= 2);
!       result_dst_rid = get_lvalue (path_var (lhs, stack->get_num_frames () - 2),
  				   ctxt);
      }
  
!   purge_stats stats;
!   stack->pop_frame (this, result_dst_rid, true, &stats, ctxt);
!   // TODO: do something with the stats?
! 
!   if (!lhs)
!     {
!       /* This could be a leak; try purging again, but this time,
! 	 don't special-case the result sids (as was done in pop_frame).  */
!       purge_unused_svalues (&stats, ctxt);
!     }
  }
  
  /* Update this region_model with a summary of the effect of calling
--- 2629,2670 ----
  region_model::update_for_call_superedge (const call_superedge &call_edge,
  					 region_model_context *ctxt)
  {
!   /* Build a vec of argument svalues, using the current top
       frame for resolving tree expressions.  */
    const gcall *call_stmt = call_edge.get_call_stmt ();
!   auto_vec<const svalue *> arg_svals (gimple_call_num_args (call_stmt));
  
    for (unsigned i = 0; i < gimple_call_num_args (call_stmt); i++)
      {
        tree arg = gimple_call_arg (call_stmt, i);
!       arg_svals.quick_push (get_rvalue (arg, ctxt));
      }
  
!   push_frame (call_edge.get_callee_function (), &arg_svals, ctxt);
  }
  
  /* Pop the top-most frame_region from the stack, and copy the return
     region's values (if any) into the region for the lvalue of the LHS of
     the call (if any).  */
  void
  region_model::update_for_return_superedge (const return_superedge &return_edge,
  					   region_model_context *ctxt)
  {
    /* Get the region for the result of the call, within the caller frame.  */
!   const region *result_dst_reg = NULL;
    const gcall *call_stmt = return_edge.get_call_stmt ();
    tree lhs = gimple_call_lhs (call_stmt);
    if (lhs)
      {
        /* Normally we access the top-level frame, which is:
! 	   path_var (expr, get_stack_depth () - 1)
  	 whereas here we need the caller frame, hence "- 2" here.  */
!       gcc_assert (get_stack_depth () >= 2);
!       result_dst_reg = get_lvalue (path_var (lhs, get_stack_depth () - 2),
  				   ctxt);
      }
  
!   pop_frame (result_dst_reg, NULL, ctxt);
  }
  
  /* Update this region_model with a summary of the effect of calling
*************** region_model::update_for_call_summary (c
*** 6158,6164 ****
    const gcall *call_stmt = cg_sedge.get_call_stmt ();
    tree lhs = gimple_call_lhs (call_stmt);
    if (lhs)
!     set_to_new_unknown_value (get_lvalue (lhs, ctxt), TREE_TYPE (lhs), ctxt);
  
    // TODO: actually implement some kind of summary here
  }
--- 2682,2689 ----
    const gcall *call_stmt = cg_sedge.get_call_stmt ();
    tree lhs = gimple_call_lhs (call_stmt);
    if (lhs)
!     mark_region_as_unknown (get_lvalue (lhs, ctxt),
! 			    ctxt ? ctxt->get_uncertainty () : NULL);
  
    // TODO: actually implement some kind of summary here
  }
*************** region_model::update_for_call_summary (c
*** 6169,6180 ****
     If they are feasible, add the constraints and return true.
  
     Return false if the constraints contradict existing knowledge
!    (and so the edge should not be taken).  */
  
  bool
  region_model::apply_constraints_for_gcond (const cfg_superedge &sedge,
  					   const gcond *cond_stmt,
! 					   region_model_context *ctxt)
  {
    ::edge cfg_edge = sedge.get_cfg_edge ();
    gcc_assert (cfg_edge != NULL);
--- 2694,2708 ----
     If they are feasible, add the constraints and return true.
  
     Return false if the constraints contradict existing knowledge
!    (and so the edge should not be taken).
!    When returning false, if OUT is non-NULL, write a new rejected_constraint
!    to it.  */
  
  bool
  region_model::apply_constraints_for_gcond (const cfg_superedge &sedge,
  					   const gcond *cond_stmt,
! 					   region_model_context *ctxt,
! 					   rejected_constraint **out)
  {
    ::edge cfg_edge = sedge.get_cfg_edge ();
    gcc_assert (cfg_edge != NULL);
*************** region_model::apply_constraints_for_gcon
*** 6185,6191 ****
    tree rhs = gimple_cond_rhs (cond_stmt);
    if (cfg_edge->flags & EDGE_FALSE_VALUE)
      op = invert_tree_comparison (op, false /* honor_nans */);
!   return add_constraint (lhs, op, rhs, ctxt);
  }
  
  /* Given an EDGE guarded by SWITCH_STMT, determine appropriate constraints
--- 2713,2719 ----
    tree rhs = gimple_cond_rhs (cond_stmt);
    if (cfg_edge->flags & EDGE_FALSE_VALUE)
      op = invert_tree_comparison (op, false /* honor_nans */);
!   return add_constraint (lhs, op, rhs, ctxt, out);
  }
  
  /* Given an EDGE guarded by SWITCH_STMT, determine appropriate constraints
*************** region_model::apply_constraints_for_gcon
*** 6194,6205 ****
     If they are feasible, add the constraints and return true.
  
     Return false if the constraints contradict existing knowledge
!    (and so the edge should not be taken).  */
  
  bool
  region_model::apply_constraints_for_gswitch (const switch_cfg_superedge &edge,
  					     const gswitch *switch_stmt,
! 					     region_model_context *ctxt)
  {
    tree index  = gimple_switch_index (switch_stmt);
    tree case_label = edge.get_case_label ();
--- 2722,2736 ----
     If they are feasible, add the constraints and return true.
  
     Return false if the constraints contradict existing knowledge
!    (and so the edge should not be taken).
!    When returning false, if OUT is non-NULL, write a new rejected_constraint
!    to it.  */
  
  bool
  region_model::apply_constraints_for_gswitch (const switch_cfg_superedge &edge,
  					     const gswitch *switch_stmt,
! 					     region_model_context *ctxt,
! 					     rejected_constraint **out)
  {
    tree index  = gimple_switch_index (switch_stmt);
    tree case_label = edge.get_case_label ();
*************** region_model::apply_constraints_for_gswi
*** 6211,6223 ****
        if (upper_bound)
  	{
  	  /* Range.  */
! 	  if (!add_constraint (index, GE_EXPR, lower_bound, ctxt))
  	    return false;
! 	  return add_constraint (index, LE_EXPR, upper_bound, ctxt);
  	}
        else
  	/* Single-value.  */
! 	return add_constraint (index, EQ_EXPR, lower_bound, ctxt);
      }
    else
      {
--- 2742,2754 ----
        if (upper_bound)
  	{
  	  /* Range.  */
! 	  if (!add_constraint (index, GE_EXPR, lower_bound, ctxt, out))
  	    return false;
! 	  return add_constraint (index, LE_EXPR, upper_bound, ctxt, out);
  	}
        else
  	/* Single-value.  */
! 	return add_constraint (index, EQ_EXPR, lower_bound, ctxt, out);
      }
    else
      {
*************** region_model::apply_constraints_for_gswi
*** 6237,6295 ****
  	      /* Exclude this range-valued case.
  		 For now, we just exclude the boundary values.
  		 TODO: exclude the values within the region.  */
! 	      if (!add_constraint (index, NE_EXPR, other_lower_bound, ctxt))
  		return false;
! 	      if (!add_constraint (index, NE_EXPR, other_upper_bound, ctxt))
  		return false;
  	    }
  	  else
  	    /* Exclude this single-valued case.  */
! 	    if (!add_constraint (index, NE_EXPR, other_lower_bound, ctxt))
  	      return false;
  	}
        return true;
      }
  }
  
! /* Get the root_region within this model (guaranteed to be non-null).  */
  
! root_region *
! region_model::get_root_region () const
  {
!   return get_region<root_region> (m_root_rid);
  }
  
! /* Get the region_id of this model's stack region (if any).  */
  
! region_id
! region_model::get_stack_region_id () const
  {
!   return get_root_region ()->get_stack_region_id ();
  }
  
! /* Create a new frame_region for a call to FUN and push it onto
!    the stack.
  
!    If ARG_SIDS is non-NULL, use it to populate the parameters
     in the new frame.
!    Otherwise, populate them with unknown values.
  
!    Return the region_id of the new frame_region.  */
  
! region_id
! region_model::push_frame (function *fun, vec<svalue_id> *arg_sids,
  			  region_model_context *ctxt)
  {
!   return get_root_region ()->push_frame (this, fun, arg_sids, ctxt);
! }
! 
! /* Get the region_id of the top-most frame in this region_model's stack,
!    if any.  */
  
! region_id
! region_model::get_current_frame_id () const
! {
!   return get_root_region ()->get_current_frame_id (*this);
  }
  
  /* Get the function of the top-most frame in this region_model's stack.
--- 2768,2892 ----
  	      /* Exclude this range-valued case.
  		 For now, we just exclude the boundary values.
  		 TODO: exclude the values within the region.  */
! 	      if (!add_constraint (index, NE_EXPR, other_lower_bound,
! 				   ctxt, out))
  		return false;
! 	      if (!add_constraint (index, NE_EXPR, other_upper_bound,
! 				   ctxt, out))
  		return false;
  	    }
  	  else
  	    /* Exclude this single-valued case.  */
! 	    if (!add_constraint (index, NE_EXPR, other_lower_bound, ctxt, out))
  	      return false;
  	}
        return true;
      }
  }
  
! /* Apply any constraints due to an exception being thrown at LAST_STMT.
  
!    If they are feasible, add the constraints and return true.
! 
!    Return false if the constraints contradict existing knowledge
!    (and so the edge should not be taken).
!    When returning false, if OUT is non-NULL, write a new rejected_constraint
!    to it.  */
! 
! bool
! region_model::apply_constraints_for_exception (const gimple *last_stmt,
! 					       region_model_context *ctxt,
! 					       rejected_constraint **out)
  {
!   gcc_assert (last_stmt);
!   if (const gcall *call = dyn_cast <const gcall *> (last_stmt))
!     if (tree callee_fndecl = get_fndecl_for_call (call, ctxt))
!       if (is_named_call_p (callee_fndecl, "operator new", call, 1)
! 	  || is_named_call_p (callee_fndecl, "operator new []", call, 1))
! 	{
! 	  /* We have an exception thrown from operator new.
! 	     Add a constraint that the result was NULL, to avoid a false
! 	     leak report due to the result being lost when following
! 	     the EH edge.  */
! 	  if (tree lhs = gimple_call_lhs (call))
! 	    return add_constraint (lhs, EQ_EXPR, null_pointer_node, ctxt, out);
! 	  return true;
! 	}
!   return true;
  }
  
! /* For use with push_frame when handling a top-level call within the analysis.
!    PARAM has a defined but unknown initial value.
!    Anything it points to has escaped, since the calling context "knows"
!    the pointer, and thus calls to unknown functions could read/write into
!    the region.  */
  
! void
! region_model::on_top_level_param (tree param,
! 				   region_model_context *ctxt)
  {
!   if (POINTER_TYPE_P (TREE_TYPE (param)))
!     {
!       const region *param_reg = get_lvalue (param, ctxt);
!       const svalue *init_ptr_sval
! 	= m_mgr->get_or_create_initial_value (param_reg);
!       const region *pointee_reg = m_mgr->get_symbolic_region (init_ptr_sval);
!       m_store.mark_as_escaped (pointee_reg);
!     }
  }
  
! /* Update this region_model to reflect pushing a frame onto the stack
!    for a call to FUN.
  
!    If ARG_SVALS is non-NULL, use it to populate the parameters
     in the new frame.
!    Otherwise, the params have their initial_svalues.
  
!    Return the frame_region for the new frame.  */
  
! const region *
! region_model::push_frame (function *fun, const vec<const svalue *> *arg_svals,
  			  region_model_context *ctxt)
  {
!   m_current_frame = m_mgr->get_frame_region (m_current_frame, fun);
!   if (arg_svals)
!     {
!       /* Arguments supplied from a caller frame.  */
!       tree fndecl = fun->decl;
!       unsigned idx = 0;
!       for (tree iter_parm = DECL_ARGUMENTS (fndecl); iter_parm;
! 	   iter_parm = DECL_CHAIN (iter_parm), ++idx)
! 	{
! 	  /* If there's a mismatching declaration, the call stmt might
! 	     not have enough args.  Handle this case by leaving the
! 	     rest of the params as uninitialized.  */
! 	  if (idx >= arg_svals->length ())
! 	    break;
! 	  tree parm_lval = iter_parm;
! 	  if (tree parm_default_ssa = ssa_default_def (fun, iter_parm))
! 	    parm_lval = parm_default_ssa;
! 	  const region *parm_reg = get_lvalue (parm_lval, ctxt);
! 	  const svalue *arg_sval = (*arg_svals)[idx];
! 	  set_value (parm_reg, arg_sval, ctxt);
! 	}
!     }
!   else
!     {
!       /* Otherwise we have a top-level call within the analysis.  The params
! 	 have defined but unknown initial values.
! 	 Anything they point to has escaped.  */
!       tree fndecl = fun->decl;
!       for (tree iter_parm = DECL_ARGUMENTS (fndecl); iter_parm;
! 	   iter_parm = DECL_CHAIN (iter_parm))
! 	{
! 	  if (tree parm_default_ssa = ssa_default_def (fun, iter_parm))
! 	    on_top_level_param (parm_default_ssa, ctxt);
! 	  else
! 	    on_top_level_param (iter_parm, ctxt);
! 	}
!     }
  
!   return m_current_frame;
  }
  
  /* Get the function of the top-most frame in this region_model's stack.
*************** region_model::get_current_frame_id () co
*** 6298,6317 ****
  function *
  region_model::get_current_function () const
  {
!   region_id frame_id = get_current_frame_id ();
!   frame_region *frame = get_region<frame_region> (frame_id);
    return frame->get_function ();
  }
  
  /* Pop the topmost frame_region from this region_model's stack;
!    see the comment for stack_region::pop_frame.  */
  
  void
! region_model::pop_frame (region_id result_dst_rid,
! 			 bool purge, purge_stats *out,
  			 region_model_context *ctxt)
  {
!   get_root_region ()->pop_frame (this, result_dst_rid, purge, out, ctxt);
  }
  
  /* Get the number of frames in this region_model's stack.  */
--- 2895,2944 ----
  function *
  region_model::get_current_function () const
  {
!   const frame_region *frame = get_current_frame ();
!   gcc_assert (frame);
    return frame->get_function ();
  }
  
  /* Pop the topmost frame_region from this region_model's stack;
! 
!    If RESULT_DST_REG is non-null, copy any return value from the frame
!    into RESULT_DST_REG's region.
!    If OUT_RESULT is non-null, copy any return value from the frame
!    into *OUT_RESULT.
! 
!    Purge the frame region and all its descendent regions.
!    Convert any pointers that point into such regions into
!    POISON_KIND_POPPED_STACK svalues.  */
  
  void
! region_model::pop_frame (const region *result_dst_reg,
! 			 const svalue **out_result,
  			 region_model_context *ctxt)
  {
!   gcc_assert (m_current_frame);
! 
!   /* Evaluate the result, within the callee frame.  */
!   const frame_region *frame_reg = m_current_frame;
!   tree fndecl = m_current_frame->get_function ()->decl;
!   tree result = DECL_RESULT (fndecl);
!   if (result && TREE_TYPE (result) != void_type_node)
!     {
!       if (result_dst_reg)
! 	{
! 	  /* Copy the result to RESULT_DST_REG.  */
! 	  copy_region (result_dst_reg,
! 		       get_lvalue (result, ctxt),
! 		       ctxt);
! 	}
!       if (out_result)
! 	*out_result = get_rvalue (result, ctxt);
!     }
! 
!   /* Pop the frame.  */
!   m_current_frame = m_current_frame->get_calling_frame ();
! 
!   unbind_region_and_descendents (frame_reg,POISON_KIND_POPPED_STACK);
  }
  
  /* Get the number of frames in this region_model's stack.  */
*************** region_model::pop_frame (region_id resul
*** 6319,7055 ****
  int
  region_model::get_stack_depth () const
  {
!   stack_region *stack = get_root_region ()->get_stack_region (this);
!   if (stack)
!     return stack->get_num_frames ();
    else
      return 0;
  }
  
! /* Get the function * at DEPTH within the call stack.  */
! 
! function *
! region_model::get_function_at_depth (unsigned depth) const
! {
!   stack_region *stack = get_root_region ()->get_stack_region (this);
!   gcc_assert (stack);
!   region_id frame_rid = stack->get_frame_rid (depth);
!   frame_region *frame = get_region <frame_region> (frame_rid);
!   return frame->get_function ();
! }
! 
! /* Get the region_id of this model's globals region (if any).  */
! 
! region_id
! region_model::get_globals_region_id () const
! {
!   return get_root_region ()->get_globals_region_id ();
! }
! 
! /* Add SVAL to this model, taking ownership, and returning its new
!    svalue_id.  */
  
! svalue_id
! region_model::add_svalue (svalue *sval)
  {
!   gcc_assert (sval);
!   m_svalues.safe_push (sval);
!   return svalue_id::from_int (m_svalues.length () - 1);
  }
  
! /* Change the meaning of SID to be NEW_SVAL
!    (e.g. when deferencing an unknown pointer, the pointer
!    becomes a pointer to a symbolic region, so that all users
!    of the former unknown pointer are now effectively pointing
!    at the same region).  */
  
  void
! region_model::replace_svalue (svalue_id sid, svalue *new_sval)
! {
!   gcc_assert (!sid.null_p ());
!   int idx = sid.as_int ();
! 
!   gcc_assert (m_svalues[idx]);
!   gcc_assert (m_svalues[idx]->get_type () == new_sval->get_type ());
!   delete m_svalues[idx];
! 
!   m_svalues[idx] = new_sval;
! }
! 
! /* Add region R to this model, taking ownership, and returning its new
!    region_id.  */
! 
! region_id
! region_model::add_region (region *r)
! {
!   gcc_assert (r);
!   m_regions.safe_push (r);
!   return region_id::from_int (m_regions.length () - 1);
! }
! 
! /* Return the svalue with id SVAL_ID, or NULL for a null id.  */
! 
! svalue *
! region_model::get_svalue (svalue_id sval_id) const
! {
!   if (sval_id.null_p ())
!     return NULL;
!   return m_svalues[sval_id.as_int ()];
! }
! 
! /* Return the region with id RID, or NULL for a null id.  */
! 
! region *
! region_model::get_region (region_id rid) const
! {
!   if (rid.null_p ())
!     return NULL;
!   return m_regions[rid.as_int ()];
! }
! 
! /* Make a region of an appropriate subclass for TYPE,
!    with parent PARENT_RID, or return NULL for types we don't yet know
!    how to handle.  */
! 
! static region *
! make_region_for_type (region_id parent_rid, tree type)
! {
!   gcc_assert (TYPE_P (type));
! 
!   if (INTEGRAL_TYPE_P (type)
!       || SCALAR_FLOAT_TYPE_P (type)
!       || POINTER_TYPE_P (type)
!       || TREE_CODE (type) == COMPLEX_TYPE
!       || TREE_CODE (type) == VECTOR_TYPE)
!     return new primitive_region (parent_rid, type);
! 
!   if (TREE_CODE (type) == RECORD_TYPE)
!     return new struct_region (parent_rid, type);
! 
!   if (TREE_CODE (type) == ARRAY_TYPE)
!     return new array_region (parent_rid, type);
! 
!   if (TREE_CODE (type) == UNION_TYPE)
!     return new union_region (parent_rid, type);
! 
!   if (FUNC_OR_METHOD_TYPE_P (type))
!     return new function_region (parent_rid, type);
! 
!   /* If we have a void *, make a new symbolic region.  */
!   if (VOID_TYPE_P (type))
!     return new symbolic_region (parent_rid, type, false);
! 
!   return NULL;
! }
! 
! /* Add a region with type TYPE and parent PARENT_RID.  */
! 
! region_id
! region_model::add_region_for_type (region_id parent_rid, tree type,
! 				   region_model_context *ctxt)
  {
!   if (type)
      {
!       gcc_assert (TYPE_P (type));
! 
!       if (region *new_region = make_region_for_type (parent_rid, type))
! 	return add_region (new_region);
      }
  
!   /* If we can't handle TYPE, return a placeholder region, and stop
!      exploring this path.  */
!   return make_region_for_unexpected_tree_code (ctxt, type,
! 					       dump_location_t ());
  }
  
! /* Helper class for region_model::purge_unused_svalues.  */
! 
! class restrict_to_used_svalues : public purge_criteria
! {
! public:
!   restrict_to_used_svalues (const auto_sbitmap &used) : m_used (used) {}
! 
!   bool should_purge_p (svalue_id sid) const FINAL OVERRIDE
!   {
!     gcc_assert (!sid.null_p ());
!     return !bitmap_bit_p (m_used, sid.as_int ());
!   }
! 
! private:
!   const auto_sbitmap &m_used;
! };
! 
! /* Remove unused svalues from this model, accumulating stats into STATS.
!    Unused svalues are deleted.  Doing so could reorder the svalues, and
!    thus change the meaning of svalue_ids.
! 
!    If CTXT is non-NULL, then it is notified about svalue_id remappings,
!    and about svalue_ids that are about to be deleted.  This allows e.g.
!    for warning about resource leaks, for the case where the svalue
!    represents a resource handle in the user code (e.g. a FILE * or a malloc
!    buffer).
! 
!    Amongst other things, removing unused svalues is important for ensuring
!    that the analysis of loops terminates.  Otherwise, we could generate a
!    succession of models with unreferenced "unknown" values, where the
!    number of redundant unknown values could grow without bounds, and each
!    such model would be treated as distinct.
! 
!    If KNOWN_USED_SIDS is non-NULL, treat *KNOWN_USED_SIDS as used (this is for
!    handling values being returned from functions as their frame is popped,
!    since otherwise we'd have to simultaneously determine both the rvalue
!    of the return expr in the callee frame and the lvalue for the gcall's
!    assignment in the caller frame, and it seems cleaner to express all
!    lvalue and rvalue lookups implicitly relative to a "current" frame).
!    The svalue_ids in *KNOWN_USED_SIDS are not remapped and hence this
!    call makes it invalid.  */
  
! void
! region_model::purge_unused_svalues (purge_stats *stats,
! 				    region_model_context *ctxt,
! 				    svalue_id_set *known_used_sids)
  {
!   // TODO: might want to avoid a vfunc call just to do logging here:
!   logger *logger = ctxt ? ctxt->get_logger () : NULL;
! 
!   LOG_SCOPE (logger);
! 
!   auto_sbitmap used (m_svalues.length ());
!   bitmap_clear (used);
! 
!   if (known_used_sids)
!     {
!       /* We can't use an sbitmap for known_used_sids as the number of
! 	 svalues could have grown since it was created.  */
!       for (unsigned i = 0; i < get_num_svalues (); i++)
! 	if (known_used_sids->svalue_p (svalue_id::from_int (i)))
! 	  bitmap_set_bit (used, i);
!     }
! 
!   /* Walk the regions, marking sids that are used.  */
!   unsigned i;
!   region *r;
!   FOR_EACH_VEC_ELT (m_regions, i, r)
!     {
!       svalue_id sid = r->get_value_direct ();
!       if (!sid.null_p ())
! 	bitmap_set_bit (used, sid.as_int ());
!     }
! 
!   /* Now purge any constraints involving svalues we don't care about.  */
!   restrict_to_used_svalues criterion (used);
!   m_constraints->purge (criterion, stats);
  
!   /* Mark any sids that are in constraints that survived.  */
    {
!     equiv_class *ec;
!     FOR_EACH_VEC_ELT (m_constraints->m_equiv_classes, i, ec)
        {
! 	int j;
! 	svalue_id *sid;
! 	FOR_EACH_VEC_ELT (ec->m_vars, j, sid)
  	  {
! 	    gcc_assert (!sid->null_p ());
! 	    bitmap_set_bit (used, sid->as_int ());
  	  }
        }
    }
  
!   /* Build a mapping from old-sid to new-sid so that we can preserve
!      order of the used IDs and move all redundant ones to the end.
!      Iterate though svalue IDs, adding used ones to the front of
!      the new list, and unused ones to the back.  */
!   svalue_id_map map (m_svalues.length ());
!   int next_used_new_sid = 0;
!   int after_next_unused_new_sid = m_svalues.length ();
!   for (unsigned i = 0; i < m_svalues.length (); i++)
!     {
!       svalue_id src (svalue_id::from_int (i));
!       if (bitmap_bit_p (used, i))
! 	{
! 	  if (logger)
! 	    logger->log ("sv%i is used", i);
! 	  map.put (src, svalue_id::from_int (next_used_new_sid++));
! 	}
!       else
! 	{
! 	  if (logger)
! 	    logger->log ("sv%i is unused", i);
! 	  map.put (src, svalue_id::from_int (--after_next_unused_new_sid));
! 	}
!     }
!   /* The two insertion points should have met.  */
!   gcc_assert (next_used_new_sid == after_next_unused_new_sid);
! 
!   /* Now walk the regions and the constraints, remapping sids,
!      so that all the redundant svalues are at the end.  */
!   remap_svalue_ids (map);
! 
!   if (logger)
!     {
!       logger->start_log_line ();
!       logger->log_partial ("map: ");
!       map.dump_to_pp (logger->get_printer ());
!       logger->end_log_line ();
!     }
! 
!   /* Notify any client about the remapping and pending deletion.
!      Potentially this could trigger leak warnings.  */
!   if (ctxt)
!     {
!       ctxt->remap_svalue_ids (map);
!       int num_client_items_purged
! 	= ctxt->on_svalue_purge (svalue_id::from_int (next_used_new_sid), map);
!       if (stats)
! 	stats->m_num_client_items += num_client_items_purged;
!     }
! 
!   /* Drop the redundant svalues from the end of the vector.  */
!   while ((signed)m_svalues.length () > next_used_new_sid)
!     {
!       if (logger)
! 	{
! 	  svalue_id victim = svalue_id::from_int (m_svalues.length () - 1);
! 	  logger->log ("deleting sv%i (was sv%i)",
! 		       victim.as_int (),
! 		       map.get_src_for_dst (victim).as_int ());
! 	}
!       delete m_svalues.pop ();
!       if (stats)
! 	stats->m_num_svalues++;
!     }
! 
!   validate ();
! }
! 
! /* Renumber the svalues within this model according to MAP.  */
! 
! void
! region_model::remap_svalue_ids (const svalue_id_map &map)
! {
!   /* Update IDs within regions.  */
!   unsigned i;
!   region *r;
!   FOR_EACH_VEC_ELT (m_regions, i, r)
!     r->remap_svalue_ids (map);
! 
!   /* Update IDs within ECs within constraints.  */
!   m_constraints->remap_svalue_ids (map);
! 
!   /* Build a reordered svalues vector.  */
!   auto_vec<svalue *> new_svalues (m_svalues.length ());
!   for (unsigned i = 0; i < m_svalues.length (); i++)
!     {
!       svalue_id dst (svalue_id::from_int (i));
!       svalue_id src = map.get_src_for_dst (dst);
!       new_svalues.quick_push (get_svalue (src));
!     }
! 
!   /* Copy over the reordered vec to m_svalues.  */
!   m_svalues.truncate (0);
!   gcc_assert (m_svalues.space (new_svalues.length ()));
!   svalue *sval;
!   FOR_EACH_VEC_ELT (new_svalues, i, sval)
!     m_svalues.quick_push (sval);
! }
! 
! /* Renumber the regions within this model according to MAP.  */
! 
! void
! region_model::remap_region_ids (const region_id_map &map)
! {
!   /* Update IDs within regions.  */
!   unsigned i;
!   region *r;
!   FOR_EACH_VEC_ELT (m_regions, i, r)
!     r->remap_region_ids (map);
! 
!   /* Update IDs within svalues.  */
!   svalue *sval;
!   FOR_EACH_VEC_ELT (m_svalues, i, sval)
!     sval->remap_region_ids (map);
! 
!   /* Build a reordered regions vector.  */
!   auto_vec<region *> new_regions (m_regions.length ());
!   for (unsigned i = 0; i < m_regions.length (); i++)
!     {
!       region_id dst (region_id::from_int (i));
!       region_id src = map.get_src_for_dst (dst);
!       new_regions.quick_push (get_region (src));
!     }
! 
!   /* Copy over the reordered vec to m_regions.  */
!   m_regions.truncate (0);
!   gcc_assert (m_regions.space (new_regions.length ()));
!   FOR_EACH_VEC_ELT (new_regions, i, r)
!     m_regions.quick_push (r);
! }
! 
! /* Delete all regions within SET_TO_PURGE, remapping region IDs for
!    other regions.  It's required that there are no uses of the
!    regions within the set (or the region IDs will become invalid).
! 
!    Accumulate stats to STATS.  */
! 
! void
! region_model::purge_regions (const region_id_set &set_to_purge,
! 			     purge_stats *stats,
! 			     logger *)
! {
!   /* Build a mapping from old-rid to new-rid so that we can preserve
!      order of the used IDs and move all redundant ones to the end.
!      Iterate though region IDs, adding used ones to the front of
!      the new list, and unused ones to the back.  */
!   region_id_map map (m_regions.length ());
!   int next_used_new_rid = 0;
!   int after_next_unused_new_rid = m_regions.length ();
!   for (unsigned i = 0; i < m_regions.length (); i++)
!     {
!       region_id src (region_id::from_int (i));
!       if (set_to_purge.region_p (src))
! 	map.put (src, region_id::from_int (--after_next_unused_new_rid));
!       else
! 	map.put (src, region_id::from_int (next_used_new_rid++));
!     }
!   /* The two insertion points should have met.  */
!   gcc_assert (next_used_new_rid == after_next_unused_new_rid);
! 
!   /* Now walk the regions and svalues, remapping rids,
!      so that all the redundant regions are at the end.  */
!   remap_region_ids (map);
! 
!   /* Drop the redundant regions from the end of the vector.  */
!   while ((signed)m_regions.length () > next_used_new_rid)
!     {
!       delete m_regions.pop ();
!       if (stats)
! 	stats->m_num_regions++;
!     }
! }
! 
! /* Populate *OUT with RID and all of its descendents.
!    If EXCLUDE_RID is non-null, then don't add it or its descendents.  */
! 
! void
! region_model::get_descendents (region_id rid, region_id_set *out,
! 			       region_id exclude_rid) const
! {
!   out->add_region (rid);
! 
!   bool changed = true;
!   while (changed)
!     {
!       changed = false;
!       unsigned i;
!       region *r;
!       FOR_EACH_VEC_ELT (m_regions, i, r)
! 	{
! 	  region_id iter_rid = region_id::from_int (i);
! 	  if (iter_rid == exclude_rid)
! 	    continue;
! 	  if (!out->region_p (iter_rid))
! 	    {
! 	      region_id parent_rid = r->get_parent ();
! 	      if (!parent_rid.null_p ())
! 		if (out->region_p (parent_rid))
! 		  {
! 		    out->add_region (iter_rid);
! 		    changed = true;
! 		  }
! 	    }
! 	}
!     }
! }
  
! /* Delete RID and all descendent regions.
!    Find any pointers to such regions; convert them to
     poisoned values of kind PKIND.
!    Accumulate stats on purged entities into STATS.  */
! 
! void
! region_model::delete_region_and_descendents (region_id rid,
! 					     enum poison_kind pkind,
! 					     purge_stats *stats,
! 					     logger *logger)
! {
!   /* Find all child and descendent regions.  */
!   region_id_set descendents (this);
!   get_descendents (rid, &descendents, region_id::null ());
! 
!   /* Find any pointers to such regions; convert to poisoned.  */
!   poison_any_pointers_to_bad_regions (descendents, pkind);
! 
!   /* Delete all such regions.  */
!   purge_regions (descendents, stats, logger);
! }
! 
! /* Find any pointers to regions within BAD_REGIONS; convert them to
!    poisoned values of kind PKIND.  */
  
! void
! region_model::poison_any_pointers_to_bad_regions (const region_id_set &
! 						    bad_regions,
! 						  enum poison_kind pkind)
  {
!   int i;
!   svalue *sval;
!   FOR_EACH_VEC_ELT (m_svalues, i, sval)
!     if (region_svalue *ptr_sval = sval->dyn_cast_region_svalue ())
!       {
! 	region_id ptr_dst = ptr_sval->get_pointee ();
! 	if (!ptr_dst.null_p ())
! 	  if (bad_regions.region_p (ptr_dst))
! 	    replace_svalue
! 	      (svalue_id::from_int (i),
! 	       new poisoned_svalue (pkind, sval->get_type ()));
!       }
  }
  
  /* Attempt to merge THIS with OTHER_MODEL, writing the result
!    to OUT_MODEL, and populating SID_MAPPING.  */
  
  bool
  region_model::can_merge_with_p (const region_model &other_model,
! 				region_model *out_model,
! 				svalue_id_merger_mapping *sid_mapping) const
  {
-   gcc_assert (m_root_rid == other_model.m_root_rid);
-   gcc_assert (m_root_rid.as_int () == 0);
-   gcc_assert (sid_mapping);
    gcc_assert (out_model);
  
!   model_merger merger (this, &other_model, out_model, sid_mapping);
  
!   if (!root_region::can_merge_p (get_root_region (),
! 				 other_model.get_root_region (),
! 				 out_model->get_root_region (),
! 				 &merger))
      return false;
  
    /* Merge constraints.  */
    constraint_manager::merge (*m_constraints,
! 			     *other_model.m_constraints,
! 			     out_model->m_constraints,
! 			     merger);
! 
!   out_model->validate ();
! 
!   /* The merged model should be simpler (or as simple) as the inputs.  */
! #if 0
!   gcc_assert (out_model->m_svalues.length () <= m_svalues.length ());
!   gcc_assert (out_model->m_svalues.length ()
! 	      <= other_model.m_svalues.length ());
! #endif
!   gcc_assert (out_model->m_regions.length () <= m_regions.length ());
!   gcc_assert (out_model->m_regions.length ()
! 	      <= other_model.m_regions.length ());
!   // TODO: same, for constraints
  
    return true;
  }
  
- /* As above, but supply a placeholder svalue_id_merger_mapping
-    instance to be used and receive output.  For use in selftests.  */
- 
- bool
- region_model::can_merge_with_p (const region_model &other_model,
- 				region_model *out_model) const
- {
-   svalue_id_merger_mapping sid_mapping (*this, other_model);
-   return can_merge_with_p (other_model, out_model, &sid_mapping);
- }
- 
- /* For debugging purposes: look for a region within this region_model
-    for a decl named NAME (or an SSA_NAME for such a decl),
-    returning its value, or svalue_id::null if none are found.  */
- 
- svalue_id
- region_model::get_value_by_name (const char *name) const
- {
-   gcc_assert (name);
-   tree identifier = get_identifier (name);
-   return get_root_region ()->get_value_by_name (identifier, *this);
- }
- 
- /* Generate or reuse an svalue_id within this model for an index
-    into an array of type PTR_TYPE, based on OFFSET_SID.  */
- 
- svalue_id
- region_model::convert_byte_offset_to_array_index (tree ptr_type,
- 						  svalue_id offset_sid)
- {
-   gcc_assert (POINTER_TYPE_P (ptr_type));
- 
-   if (tree offset_cst = maybe_get_constant (offset_sid))
-     {
-       tree elem_type = TREE_TYPE (ptr_type);
- 
-       /* Arithmetic on void-pointers is a GNU C extension, treating the size
- 	 of a void as 1.
- 	 https://gcc.gnu.org/onlinedocs/gcc/Pointer-Arith.html  */
-       if (TREE_CODE (elem_type) == VOID_TYPE)
- 	return offset_sid;
- 
-       /* First, use int_size_in_bytes, to reject the case where we have an
- 	 incomplete type, or a non-constant value.  */
-       HOST_WIDE_INT hwi_byte_size = int_size_in_bytes (elem_type);
-       if (hwi_byte_size > 0)
- 	{
- 	  /* Now call size_in_bytes to get the answer in tree form.  */
- 	  tree byte_size = size_in_bytes (elem_type);
- 	  gcc_assert (byte_size);
- 	  /* Try to get a constant by dividing, ensuring that we're in a
- 	     signed representation first.  */
- 	  tree index
- 	    = fold_binary (TRUNC_DIV_EXPR, ssizetype,
- 			   fold_convert (ssizetype, offset_cst),
- 			   fold_convert (ssizetype, byte_size));
- 	  if (index && TREE_CODE (index) == INTEGER_CST)
- 	    return get_or_create_constant_svalue (index);
- 	}
-     }
- 
-   /* Otherwise, we don't know the array index; generate a new unknown value.
-      TODO: do we need to capture the relationship between two unknown
-      values (the offset and the index)?  */
-   return add_svalue (new unknown_svalue (integer_type_node));
- }
- 
- /* Get a region of type TYPE for PTR_SID[OFFSET_SID/sizeof (*PTR_SID)].
- 
-    If OFFSET_SID is known to be zero, then dereference PTR_SID.
-    Otherwise, impose a view of "typeof(*PTR_SID)[]" on *PTR_SID,
-    and then get a view of type TYPE on the relevant array element.  */
- 
- region_id
- region_model::get_or_create_mem_ref (tree type,
- 				     svalue_id ptr_sid,
- 				     svalue_id offset_sid,
- 				     region_model_context *ctxt)
- {
-   svalue *ptr_sval = get_svalue (ptr_sid);
-   tree ptr_type = ptr_sval->get_type ();
-   gcc_assert (ptr_type);
- 
-   region_id raw_rid = deref_rvalue (ptr_sid, ctxt);
- 
-   svalue *offset_sval = get_svalue (offset_sid);
-   tree offset_type = offset_sval->get_type ();
-   gcc_assert (offset_type);
- 
-   if (constant_svalue *cst_sval = offset_sval->dyn_cast_constant_svalue ())
-     {
-       if (zerop (cst_sval->get_constant ()))
- 	{
- 	  /* Handle the zero offset case.  */
- 	  return get_or_create_view (raw_rid, type, ctxt);
- 	}
- 
-       /* If we're already within an array of the correct type,
- 	 then we want to reuse that array, rather than starting
- 	 a new view.
- 	 If so, figure out our raw_rid's offset from its parent,
- 	 if we can, and use that to offset OFFSET_SID, and create
- 	 the element within the parent region.  */
-       region *raw_reg = get_region (raw_rid);
-       region_id parent_rid = raw_reg->get_parent ();
-       tree parent_type = get_region (parent_rid)->get_type ();
-       if (parent_type
- 	  && TREE_CODE (parent_type) == ARRAY_TYPE)
- 	{
- 	  // TODO: check we have the correct parent type
- 	  array_region *parent_array = get_region <array_region> (parent_rid);
- 	  array_region::key_t key_for_raw_rid;
- 	  if (parent_array->get_key_for_child_region (raw_rid,
- 						      &key_for_raw_rid))
- 	    {
- 	      /* Convert from offset to index.  */
- 	      svalue_id index_sid
- 		= convert_byte_offset_to_array_index (ptr_type, offset_sid);
- 	      if (tree index_cst
- 		    = get_svalue (index_sid)->maybe_get_constant ())
- 		{
- 		  array_region::key_t index_offset
- 		    = array_region::key_from_constant (index_cst);
- 		  array_region::key_t index_rel_to_parent
- 		    = key_for_raw_rid + index_offset;
- 		  tree index_rel_to_parent_cst
- 		    = wide_int_to_tree (integer_type_node,
- 					index_rel_to_parent);
- 		  svalue_id index_sid
- 		    = get_or_create_constant_svalue (index_rel_to_parent_cst);
- 
- 		  /* Carry on, using the parent region and adjusted index.  */
- 		  region_id element_rid
- 		    = parent_array->get_element (this, raw_rid, index_sid,
- 						 ctxt);
- 		  return get_or_create_view (element_rid, type, ctxt);
- 		}
- 	    }
- 	}
-     }
- 
-   tree array_type = build_array_type (TREE_TYPE (ptr_type),
- 				      integer_type_node);
-   region_id array_view_rid = get_or_create_view (raw_rid, array_type, ctxt);
-   array_region *array_reg = get_region <array_region> (array_view_rid);
- 
-   svalue_id index_sid
-     = convert_byte_offset_to_array_index (ptr_type, offset_sid);
- 
-   region_id element_rid
-     = array_reg->get_element (this, array_view_rid, index_sid, ctxt);
- 
-   return get_or_create_view (element_rid, type, ctxt);
- }
- 
- /* Get a region of type TYPE for PTR_SID + OFFSET_SID.
- 
-    If OFFSET_SID is known to be zero, then dereference PTR_SID.
-    Otherwise, impose a view of "typeof(*PTR_SID)[]" on *PTR_SID,
-    and then get a view of type TYPE on the relevant array element.  */
- 
- region_id
- region_model::get_or_create_pointer_plus_expr (tree type,
- 					       svalue_id ptr_sid,
- 					       svalue_id offset_in_bytes_sid,
- 					       region_model_context *ctxt)
- {
-   return get_or_create_mem_ref (type,
- 				ptr_sid,
- 				offset_in_bytes_sid,
- 				ctxt);
- }
- 
- /* Get or create a view of type TYPE of the region with id RAW_ID.
-    Return the id of the view (or RAW_ID if it of the same type).  */
- 
- region_id
- region_model::get_or_create_view (region_id raw_rid, tree type,
- 				  region_model_context *ctxt)
- {
-   region *raw_region = get_region (raw_rid);
- 
-   gcc_assert (TYPE_P (type));
-   if (type != raw_region->get_type ())
-     {
-       /* If the region already has a view of the requested type,
- 	 reuse it.  */
-       region_id existing_view_rid = raw_region->get_view (type, this);
-       if (!existing_view_rid.null_p ())
- 	return existing_view_rid;
- 
-       /* Otherwise, make one (adding it to the region_model and
- 	 to the viewed region).  */
-       region_id view_rid = add_region_for_type (raw_rid, type, ctxt);
-       raw_region->add_view (view_rid, this);
-       // TODO: something to signify that this is a "view"
-       return view_rid;
-     }
- 
-   return raw_rid;
- }
- 
  /* Attempt to get the fndecl used at CALL, if known, or NULL_TREE
     otherwise.  */
  
--- 2946,3081 ----
  int
  region_model::get_stack_depth () const
  {
!   const frame_region *frame = get_current_frame ();
!   if (frame)
!     return frame->get_stack_depth ();
    else
      return 0;
  }
  
! /* Get the frame_region with the given index within the stack.
!    The frame_region must exist.  */
  
! const frame_region *
! region_model::get_frame_at_index (int index) const
  {
!   const frame_region *frame = get_current_frame ();
!   gcc_assert (frame);
!   gcc_assert (index >= 0);
!   gcc_assert (index <= frame->get_index ());
!   while (index != frame->get_index ())
!     {
!       frame = frame->get_calling_frame ();
!       gcc_assert (frame);
!     }
!   return frame;
  }
  
! /* Unbind svalues for any regions in REG and below.
!    Find any pointers to such regions; convert them to
!    poisoned values of kind PKIND.  */
  
  void
! region_model::unbind_region_and_descendents (const region *reg,
! 					     enum poison_kind pkind)
  {
!   /* Gather a set of base regions to be unbound.  */
!   hash_set<const region *> base_regs;
!   for (store::cluster_map_t::iterator iter = m_store.begin ();
!        iter != m_store.end (); ++iter)
      {
!       const region *iter_base_reg = (*iter).first;
!       if (iter_base_reg->descendent_of_p (reg))
! 	base_regs.add (iter_base_reg);
      }
+   for (hash_set<const region *>::iterator iter = base_regs.begin ();
+        iter != base_regs.end (); ++iter)
+     m_store.purge_cluster (*iter);
  
!   /* Find any pointers to REG or its descendents; convert to poisoned.  */
!   poison_any_pointers_to_descendents (reg, pkind);
  }
  
! /* Implementation of BindingVisitor.
!    Update the bound svalues for regions below REG to use poisoned
!    values instead.  */
  
! struct bad_pointer_finder
  {
!   bad_pointer_finder (const region *reg, enum poison_kind pkind,
! 		      region_model_manager *mgr)
!   : m_reg (reg), m_pkind (pkind), m_mgr (mgr), m_count (0)
!   {}
  
!   void on_binding (const binding_key *, const svalue *&sval)
    {
!     if (const region_svalue *ptr_sval = sval->dyn_cast_region_svalue ())
        {
! 	const region *ptr_dst = ptr_sval->get_pointee ();
! 	/* Poison ptrs to descendents of REG, but not to REG itself,
! 	   otherwise double-free detection doesn't work (since sm-state
! 	   for "free" is stored on the original ptr svalue).  */
! 	if (ptr_dst->descendent_of_p (m_reg)
! 	    && ptr_dst != m_reg)
  	  {
! 	    sval = m_mgr->get_or_create_poisoned_svalue (m_pkind,
! 							 sval->get_type ());
! 	    ++m_count;
  	  }
        }
    }
  
!   const region *m_reg;
!   enum poison_kind m_pkind;
!   region_model_manager *const m_mgr;
!   int m_count;
! };
  
! /* Find any pointers to REG or its descendents; convert them to
     poisoned values of kind PKIND.
!    Return the number of pointers that were poisoned.  */
  
! int
! region_model::poison_any_pointers_to_descendents (const region *reg,
! 						   enum poison_kind pkind)
  {
!   bad_pointer_finder bv (reg, pkind, m_mgr);
!   m_store.for_each_binding (bv);
!   return bv.m_count;
  }
  
  /* Attempt to merge THIS with OTHER_MODEL, writing the result
!    to OUT_MODEL.  Use POINT to distinguish values created as a
!    result of merging.  */
  
  bool
  region_model::can_merge_with_p (const region_model &other_model,
! 				const program_point &point,
! 				region_model *out_model) const
  {
    gcc_assert (out_model);
+   gcc_assert (m_mgr == other_model.m_mgr);
+   gcc_assert (m_mgr == out_model->m_mgr);
  
!   if (m_current_frame != other_model.m_current_frame)
!     return false;
!   out_model->m_current_frame = m_current_frame;
  
!   model_merger m (this, &other_model, point, out_model);
! 
!   if (!store::can_merge_p (&m_store, &other_model.m_store,
! 			   &out_model->m_store, m_mgr->get_store_manager (),
! 			   &m))
      return false;
  
    /* Merge constraints.  */
    constraint_manager::merge (*m_constraints,
! 			      *other_model.m_constraints,
! 			      out_model->m_constraints);
  
    return true;
  }
  
  /* Attempt to get the fndecl used at CALL, if known, or NULL_TREE
     otherwise.  */
  
*************** region_model::get_fndecl_for_call (const
*** 7060,7076 ****
    tree fn_ptr = gimple_call_fn (call);
    if (fn_ptr == NULL_TREE)
      return NULL_TREE;
!   svalue_id fn_ptr_sid = get_rvalue (fn_ptr, ctxt);
!   svalue *fn_ptr_sval = get_svalue (fn_ptr_sid);
!   if (region_svalue *fn_ptr_ptr = fn_ptr_sval->dyn_cast_region_svalue ())
      {
!       region_id fn_rid = fn_ptr_ptr->get_pointee ();
!       code_region *code = get_root_region ()->get_code_region (this);
!       if (code)
  	{
! 	  tree fn_decl = code->get_tree_for_child_region (fn_rid);
! 	  if (!fn_decl)
! 	    return NULL_TREE;
  	  cgraph_node *node = cgraph_node::get (fn_decl);
  	  if (!node)
  	    return NULL_TREE;
--- 3086,3099 ----
    tree fn_ptr = gimple_call_fn (call);
    if (fn_ptr == NULL_TREE)
      return NULL_TREE;
!   const svalue *fn_ptr_sval = get_rvalue (fn_ptr, ctxt);
!   if (const region_svalue *fn_ptr_ptr
! 	= fn_ptr_sval->dyn_cast_region_svalue ())
      {
!       const region *reg = fn_ptr_ptr->get_pointee ();
!       if (const function_region *fn_reg = reg->dyn_cast_function_region ())
  	{
! 	  tree fn_decl = fn_reg->get_fndecl ();
  	  cgraph_node *node = cgraph_node::get (fn_decl);
  	  if (!node)
  	    return NULL_TREE;
*************** region_model::get_fndecl_for_call (const
*** 7083,7421 ****
    return NULL_TREE;
  }
  
! /* struct model_merger.  */
! 
! /* Dump a multiline representation of this merger to PP.  */
  
! void
! model_merger::dump_to_pp (pretty_printer *pp) const
  {
!   pp_string (pp, "model A:");
!   pp_newline (pp);
!   m_model_a->dump_to_pp (pp, false);
!   pp_newline (pp);
! 
!   pp_string (pp, "model B:");
!   pp_newline (pp);
!   m_model_b->dump_to_pp (pp, false);
!   pp_newline (pp);
! 
!   pp_string (pp, "merged model:");
!   pp_newline (pp);
!   m_merged_model->dump_to_pp (pp, false);
!   pp_newline (pp);
! 
!   pp_string (pp, "region map: model A to merged model:");
!   pp_newline (pp);
!   m_map_regions_from_a_to_m.dump_to_pp (pp);
!   pp_newline (pp);
! 
!   pp_string (pp, "region map: model B to merged model:");
!   pp_newline (pp);
!   m_map_regions_from_b_to_m.dump_to_pp (pp);
!   pp_newline (pp);
! 
!   m_sid_mapping->dump_to_pp (pp);
! }
  
! /* Dump a multiline representation of this merger to FILE.  */
  
  void
! model_merger::dump (FILE *fp) const
! {
!   pretty_printer pp;
!   pp_format_decoder (&pp) = default_tree_printer;
!   pp_show_color (&pp) = pp_show_color (global_dc->printer);
!   pp.buffer->stream = fp;
!   dump_to_pp (&pp);
!   pp_flush (&pp);
! }
! 
! /* Dump a multiline representation of this merger to stderr.  */
! 
! DEBUG_FUNCTION void
! model_merger::dump () const
  {
!   dump (stderr);
  }
  
! /* Attempt to merge the svalues of SID_A and SID_B (from their
!    respective models), writing the id of the resulting svalue
!    into *MERGED_SID.
!    Return true if the merger is possible, false otherwise.  */
  
! bool
! model_merger::can_merge_values_p (svalue_id sid_a,
! 				  svalue_id sid_b,
! 				  svalue_id *merged_sid)
  {
!   gcc_assert (merged_sid);
!   svalue *sval_a = m_model_a->get_svalue (sid_a);
!   svalue *sval_b = m_model_b->get_svalue (sid_b);
! 
!   /* If both are NULL, then the "values" are trivially mergeable.  */
!   if (!sval_a && !sval_b)
!     return true;
! 
!   /* If one is NULL and the other non-NULL, then the "values"
!      are not mergeable.  */
!   if (!(sval_a && sval_b))
!     return false;
! 
!   /* Have they both already been mapped to the same new svalue_id?
!      If so, use it.  */
!   svalue_id sid_a_in_m
!     = m_sid_mapping->m_map_from_a_to_m.get_dst_for_src (sid_a);
!   svalue_id sid_b_in_m
!     = m_sid_mapping->m_map_from_b_to_m.get_dst_for_src (sid_b);
!   if (!sid_a_in_m.null_p ()
!       && !sid_b_in_m.null_p ()
!       && sid_a_in_m == sid_b_in_m)
!     {
!       *merged_sid = sid_a_in_m;
!       return true;
!     }
! 
!   tree type = sval_a->get_type ();
!   if (type == NULL_TREE)
!     type = sval_b->get_type ();
! 
!   /* If the values have different kinds, or are both unknown,
!      then merge as "unknown".  */
!   if (sval_a->get_kind () != sval_b->get_kind ()
!       || sval_a->get_kind () == SK_UNKNOWN)
!     {
!       svalue *merged_sval = new unknown_svalue (type);
!       *merged_sid = m_merged_model->add_svalue (merged_sval);
!       record_svalues (sid_a, sid_b, *merged_sid);
!       return true;
!     }
! 
!   gcc_assert (sval_a->get_kind () == sval_b->get_kind ());
! 
!   switch (sval_a->get_kind ())
      {
!     default:
!     case SK_UNKNOWN: /* SK_UNKNOWN handled above.  */
!        gcc_unreachable ();
! 
!     case SK_REGION:
!       {
! 	/* If we have two region pointers, then we can merge (possibly to
! 	   "unknown").  */
! 	const region_svalue &region_sval_a = *as_a <region_svalue *> (sval_a);
! 	const region_svalue &region_sval_b = *as_a <region_svalue *> (sval_b);
! 	region_svalue::merge_values (region_sval_a, region_sval_b,
! 				     merged_sid, type,
! 				     this);
! 	record_svalues (sid_a, sid_b, *merged_sid);
! 	return true;
!       }
!       break;
!     case SK_CONSTANT:
!       {
! 	/* If we have two constants, then we can merge.  */
! 	const constant_svalue &cst_sval_a = *as_a <constant_svalue *> (sval_a);
! 	const constant_svalue &cst_sval_b = *as_a <constant_svalue *> (sval_b);
! 	constant_svalue::merge_values (cst_sval_a, cst_sval_b,
! 				       merged_sid, this);
! 	record_svalues (sid_a, sid_b, *merged_sid);
! 	return true;
!       }
!       break;
! 
!     case SK_POISONED:
!     case SK_SETJMP:
!       return false;
      }
  }
  
! /* Record that A_RID in model A and B_RID in model B
!    correspond to MERGED_RID in the merged model, so
!    that pointers can be accurately merged.  */
! 
! void
! model_merger::record_regions (region_id a_rid,
! 			      region_id b_rid,
! 			      region_id merged_rid)
! {
!   m_map_regions_from_a_to_m.put (a_rid, merged_rid);
!   m_map_regions_from_b_to_m.put (b_rid, merged_rid);
! }
! 
! /* Record that A_SID in model A and B_SID in model B
!    correspond to MERGED_SID in the merged model.  */
! 
! void
! model_merger::record_svalues (svalue_id a_sid,
! 			      svalue_id b_sid,
! 			      svalue_id merged_sid)
! {
!   gcc_assert (m_sid_mapping);
!   m_sid_mapping->m_map_from_a_to_m.put (a_sid, merged_sid);
!   m_sid_mapping->m_map_from_b_to_m.put (b_sid, merged_sid);
! }
! 
! /* struct svalue_id_merger_mapping.  */
! 
! /* svalue_id_merger_mapping's ctor.  */
  
! svalue_id_merger_mapping::svalue_id_merger_mapping (const region_model &a,
! 						    const region_model &b)
! : m_map_from_a_to_m (a.get_num_svalues ()),
!   m_map_from_b_to_m (b.get_num_svalues ())
  {
  }
  
! /* Dump a multiline representation of this to PP.  */
  
! void
! svalue_id_merger_mapping::dump_to_pp (pretty_printer *pp) const
  {
!   pp_string (pp, "svalue_id map: model A to merged model:");
!   pp_newline (pp);
!   m_map_from_a_to_m.dump_to_pp (pp);
!   pp_newline (pp);
! 
!   pp_string (pp, "svalue_id map: model B to merged model:");
!   pp_newline (pp);
!   m_map_from_b_to_m.dump_to_pp (pp);
!   pp_newline (pp);
  }
  
! /* Dump a multiline representation of this to FILE.  */
  
  void
! svalue_id_merger_mapping::dump (FILE *fp) const
! {
!   pretty_printer pp;
!   pp_format_decoder (&pp) = default_tree_printer;
!   pp_show_color (&pp) = pp_show_color (global_dc->printer);
!   pp.buffer->stream = fp;
!   dump_to_pp (&pp);
!   pp_flush (&pp);
! }
! 
! /* Dump a multiline representation of this to stderr.  */
! 
! DEBUG_FUNCTION void
! svalue_id_merger_mapping::dump () const
! {
!   dump (stderr);
! }
! 
! /* struct canonicalization.  */
! 
! /* canonicalization's ctor.  */
! 
! canonicalization::canonicalization (const region_model &model)
! : m_model (model),
!   m_rid_map (model.get_num_regions ()),
!   m_sid_map (model.get_num_svalues ()),
!   m_next_rid_int (0),
!   m_next_sid_int (0)
  {
  }
  
! /* If we've not seen RID yet, assign it a canonicalized region_id,
!    and walk the region's svalue and then the region.  */
! 
! void
! canonicalization::walk_rid (region_id rid)
! {
!   /* Stop if we've already seen RID.  */
!   if (!m_rid_map.get_dst_for_src (rid).null_p ())
!     return;
! 
!   region *region = m_model.get_region (rid);
!   if (region)
!     {
!       m_rid_map.put (rid, region_id::from_int (m_next_rid_int++));
!       walk_sid (region->get_value_direct ());
!       region->walk_for_canonicalization (this);
!     }
! }
  
! /* If we've not seen SID yet, assign it a canonicalized svalue_id,
!    and walk the svalue (and potentially regions e.g. for ptr values).  */
  
  void
! canonicalization::walk_sid (svalue_id sid)
  {
!   /* Stop if we've already seen SID.  */
!   if (!m_sid_map.get_dst_for_src (sid).null_p ())
!     return;
! 
!   svalue *sval = m_model.get_svalue (sid);
!   if (sval)
!     {
!       m_sid_map.put (sid, svalue_id::from_int (m_next_sid_int++));
!       /* Potentially walk regions e.g. for ptrs.  */
!       sval->walk_for_canonicalization (this);
!     }
! }
! 
! /* Dump a multiline representation of this to PP.  */
  
! void
! canonicalization::dump_to_pp (pretty_printer *pp) const
! {
!   pp_string (pp, "region_id map:");
    pp_newline (pp);
!   m_rid_map.dump_to_pp (pp);
    pp_newline (pp);
  
!   pp_string (pp, "svalue_id map:");
    pp_newline (pp);
!   m_sid_map.dump_to_pp (pp);
    pp_newline (pp);
  }
  
! /* Dump a multiline representation of this to FILE.  */
  
  void
! canonicalization::dump (FILE *fp) const
  {
    pretty_printer pp;
    pp_format_decoder (&pp) = default_tree_printer;
    pp_show_color (&pp) = pp_show_color (global_dc->printer);
    pp.buffer->stream = fp;
!   dump_to_pp (&pp);
    pp_flush (&pp);
  }
  
! /* Dump a multiline representation of this to stderr.  */
  
  DEBUG_FUNCTION void
! canonicalization::dump () const
  {
!   dump (stderr);
  }
  
  } // namespace ana
  
! /* Update HSTATE with a hash of SID.  */
  
! void
! inchash::add (svalue_id sid, inchash::hash &hstate)
  {
!   hstate.add_int (sid.as_int ());
  }
  
! /* Update HSTATE with a hash of RID.  */
  
  void
! inchash::add (region_id rid, inchash::hash &hstate)
  {
!   hstate.add_int (rid.as_int ());
  }
  
! /* Dump RMODEL fully to stderr (i.e. without summarization).  */
  
! DEBUG_FUNCTION void
! debug (const region_model &rmodel)
  {
!   rmodel.dump (false);
  }
  
  namespace ana {
--- 3106,3254 ----
    return NULL_TREE;
  }
  
! /* Would be much simpler to use a lambda here, if it were supported.  */
  
! struct append_ssa_names_cb_data
  {
!   const region_model *model;
!   auto_vec<const decl_region *> *out;
! };
  
! /* Populate *OUT with all decl_regions for SSA names in the current
!    frame that have clusters within the store.  */
  
  void
! region_model::
! get_ssa_name_regions_for_current_frame (auto_vec<const decl_region *> *out)
!   const
  {
!   append_ssa_names_cb_data data;
!   data.model = this;
!   data.out = out;
!   m_store.for_each_cluster (append_ssa_names_cb, &data);
  }
  
! /* Implementation detail of get_ssa_name_regions_for_current_frame.  */
  
! void
! region_model::append_ssa_names_cb (const region *base_reg,
! 				   append_ssa_names_cb_data *cb_data)
  {
!   if (base_reg->get_parent_region () != cb_data->model->m_current_frame)
!     return;
!   if (const decl_region *decl_reg = base_reg->dyn_cast_decl_region ())
      {
!       if (TREE_CODE (decl_reg->get_decl ()) == SSA_NAME)
! 	cb_data->out->safe_push (decl_reg);
      }
  }
  
! /* Return a new region describing a heap-allocated block of memory.  */
  
! const region *
! region_model::create_region_for_heap_alloc (const svalue *size_in_bytes)
  {
+   const region *reg = m_mgr->create_region_for_heap_alloc ();
+   record_dynamic_extents (reg, size_in_bytes);
+   return reg;
  }
  
! /* Return a new region describing a block of memory allocated within the
!    current frame.  */
  
! const region *
! region_model::create_region_for_alloca (const svalue *size_in_bytes)
  {
!   const region *reg = m_mgr->create_region_for_alloca (m_current_frame);
!   record_dynamic_extents (reg, size_in_bytes);
!   return reg;
  }
  
! /* Placeholder hook for recording that the size of REG is SIZE_IN_BYTES.
!    Currently does nothing.  */
  
  void
! region_model::
! record_dynamic_extents (const region *reg ATTRIBUTE_UNUSED,
! 			const svalue *size_in_bytes ATTRIBUTE_UNUSED)
  {
  }
  
! /* struct model_merger.  */
  
! /* Dump a multiline representation of this merger to PP.  */
  
  void
! model_merger::dump_to_pp (pretty_printer *pp, bool simple) const
  {
!   pp_string (pp, "model A:");
!   pp_newline (pp);
!   m_model_a->dump_to_pp (pp, simple, true);
!   pp_newline (pp);
  
!   pp_string (pp, "model B:");
    pp_newline (pp);
!   m_model_b->dump_to_pp (pp, simple, true);
    pp_newline (pp);
  
!   pp_string (pp, "merged model:");
    pp_newline (pp);
!   m_merged_model->dump_to_pp (pp, simple, true);
    pp_newline (pp);
  }
  
! /* Dump a multiline representation of this merger to FILE.  */
  
  void
! model_merger::dump (FILE *fp, bool simple) const
  {
    pretty_printer pp;
    pp_format_decoder (&pp) = default_tree_printer;
    pp_show_color (&pp) = pp_show_color (global_dc->printer);
    pp.buffer->stream = fp;
!   dump_to_pp (&pp, simple);
    pp_flush (&pp);
  }
  
! /* Dump a multiline representation of this merger to stderr.  */
  
  DEBUG_FUNCTION void
! model_merger::dump (bool simple) const
  {
!   dump (stderr, simple);
  }
  
  } // namespace ana
  
! /* Dump RMODEL fully to stderr (i.e. without summarization).  */
  
! DEBUG_FUNCTION void
! debug (const region_model &rmodel)
  {
!   rmodel.dump (false);
  }
  
! /* struct rejected_constraint.  */
  
  void
! rejected_constraint::dump_to_pp (pretty_printer *pp) const
  {
!   region_model m (m_model);
!   const svalue *lhs_sval = m.get_rvalue (m_lhs, NULL);
!   const svalue *rhs_sval = m.get_rvalue (m_rhs, NULL);
!   lhs_sval->dump_to_pp (pp, true);
!   pp_printf (pp, " %s ", op_symbol_code (m_op));
!   rhs_sval->dump_to_pp (pp, true);
  }
  
! /* class engine.  */
  
! /* Dump the managed objects by class to LOGGER, and the per-class totals.  */
! 
! void
! engine::log_stats (logger *logger) const
  {
!   m_mgr.log_stats (logger, true);
  }
  
  namespace ana {
*************** test_tree_cmp_on_constants ()
*** 7481,7486 ****
--- 3314,3331 ----
  void
  assert_condition (const location &loc,
  		  region_model &model,
+ 		  const svalue *lhs, tree_code op, const svalue *rhs,
+ 		  tristate expected)
+ {
+   tristate actual = model.eval_condition (lhs, op, rhs);
+   ASSERT_EQ_AT (loc, actual, expected);
+ }
+ 
+ /* Implementation detail of the ASSERT_CONDITION_* macros.  */
+ 
+ void
+ assert_condition (const location &loc,
+ 		  region_model &model,
  		  tree lhs, tree_code op, tree rhs,
  		  tristate expected)
  {
*************** assert_dump_eq (const location &loc,
*** 7518,7524 ****
    auto_fix_quotes sentinel;
    pretty_printer pp;
    pp_format_decoder (&pp) = default_tree_printer;
!   model.dump_to_pp (&pp, summarize);
    ASSERT_STREQ_AT (loc, pp_formatted_text (&pp), expected);
  }
  
--- 3363,3370 ----
    auto_fix_quotes sentinel;
    pretty_printer pp;
    pp_format_decoder (&pp) = default_tree_printer;
! 
!   model.dump_to_pp (&pp, summarize, true);
    ASSERT_STREQ_AT (loc, pp_formatted_text (&pp), expected);
  }
  
*************** assert_dump_eq (const location &loc,
*** 7534,7554 ****
  static void
  test_dump ()
  {
!   region_model model;
!   model.get_root_region ()->ensure_stack_region (&model);
!   model.get_root_region ()->ensure_globals_region (&model);
!   model.get_root_region ()->ensure_heap_region (&model);
  
    ASSERT_DUMP_EQ (model, false,
! 		  "r0: {kind: `root', parent: null, sval: null}\n"
! 		  "|-stack: r1: {kind: `stack', parent: r0, sval: null}\n"
! 		  "|-globals: r2: {kind: `globals', parent: r0, sval: null, map: {}}\n"
! 		  "`-heap: r3: {kind: `heap', parent: r0, sval: null}\n"
! 		  "svalues:\n"
! 		  "constraint manager:\n"
  		  "  equiv classes:\n"
  		  "  constraints:\n");
-   ASSERT_DUMP_EQ (model, true, "");
  }
  
  /* Helper function for selftests.  Create a struct or union type named NAME,
--- 3380,3400 ----
  static void
  test_dump ()
  {
!   region_model_manager mgr;
!   region_model model (&mgr);
  
    ASSERT_DUMP_EQ (model, false,
! 		  "stack depth: 0\n"
! 		  "m_called_unknown_fn: FALSE\n"
! 		  "constraint_manager:\n"
! 		  "  equiv classes:\n"
! 		  "  constraints:\n");
!   ASSERT_DUMP_EQ (model, true,
! 		  "stack depth: 0\n"
! 		  "m_called_unknown_fn: FALSE\n"
! 		  "constraint_manager:\n"
  		  "  equiv classes:\n"
  		  "  constraints:\n");
  }
  
  /* Helper function for selftests.  Create a struct or union type named NAME,
*************** struct coord_test
*** 7601,7610 ****
    tree m_coord_type;
  };
  
! /* Verify that dumps can show struct fields.  */
  
  static void
! test_dump_2 ()
  {
    coord_test ct;
  
--- 3447,3456 ----
    tree m_coord_type;
  };
  
! /* Verify usage of a struct.  */
  
  static void
! test_struct ()
  {
    coord_test ct;
  
*************** test_dump_2 ()
*** 7617,7686 ****
    tree int_17 = build_int_cst (integer_type_node, 17);
    tree int_m3 = build_int_cst (integer_type_node, -3);
  
!   region_model model;
    model.set_value (c_x, int_17, NULL);
    model.set_value (c_y, int_m3, NULL);
  
!   /* Simplified dump.  */
!   ASSERT_DUMP_EQ (model, true, "c.x: 17, c.y: -3");
  
!   /* Full dump.  */
!   ASSERT_DUMP_EQ
!     (model, false,
!      "r0: {kind: `root', parent: null, sval: null}\n"
!      "`-globals: r1: {kind: `globals', parent: r0, sval: null, map: {`c': r2}}\n"
!      "  `-`c': r2: {kind: `struct', parent: r1, sval: null, type: `struct coord', map: {`x': r3, `y': r4}}\n"
!      "    |: type: `struct coord'\n"
!      "    |-`x': r3: {kind: `primitive', parent: r2, sval: sv0, type: `int'}\n"
!      "    |  |: sval: sv0: {type: `int', `17'}\n"
!      "    |  |: type: `int'\n"
!      "    `-`y': r4: {kind: `primitive', parent: r2, sval: sv1, type: `int'}\n"
!      "      |: sval: sv1: {type: `int', `-3'}\n"
!      "      |: type: `int'\n"
!      "svalues:\n"
!      "  sv0: {type: `int', `17'}\n"
!      "  sv1: {type: `int', `-3'}\n"
!      "constraint manager:\n"
!      "  equiv classes:\n"
!      "  constraints:\n");
  }
  
! /* Verify that dumps can show array elements.  */
  
  static void
! test_dump_3 ()
  {
    tree tlen = size_int (10);
    tree arr_type = build_array_type (char_type_node, build_index_type (tlen));
  
    tree a = build_global_decl ("a", arr_type);
  
!   region_model model;
    tree int_0 = build_int_cst (integer_type_node, 0);
    tree a_0 = build4 (ARRAY_REF, char_type_node,
  		     a, int_0, NULL_TREE, NULL_TREE);
    tree char_A = build_int_cst (char_type_node, 'A');
    model.set_value (a_0, char_A, NULL);
- 
-   /* Simplified dump.  */
-   ASSERT_DUMP_EQ (model, true, "a[0]: 65");
- 
-   /* Full dump.  */
-   ASSERT_DUMP_EQ
-     (model, false,
-      "r0: {kind: `root', parent: null, sval: null}\n"
-      "`-globals: r1: {kind: `globals', parent: r0, sval: null, map: {`a': r2}}\n"
-      "  `-`a': r2: {kind: `array', parent: r1, sval: null, type: `char[11]', array: {[0]: r3}}\n"
-      "    |: type: `char[11]'\n"
-      "    `-[0]: r3: {kind: `primitive', parent: r2, sval: sv1, type: `char'}\n"
-      "      |: sval: sv1: {type: `char', `65'}\n"
-      "      |: type: `char'\n"
-      "svalues:\n"
-      "  sv0: {type: `int', `0'}\n"
-      "  sv1: {type: `char', `65'}\n"
-      "constraint manager:\n"
-      "  equiv classes:\n"
-      "  constraints:\n");
  }
  
  /* Verify that region_model::get_representative_tree works as expected.  */
--- 3463,3507 ----
    tree int_17 = build_int_cst (integer_type_node, 17);
    tree int_m3 = build_int_cst (integer_type_node, -3);
  
!   region_model_manager mgr;
!   region_model model (&mgr);
    model.set_value (c_x, int_17, NULL);
    model.set_value (c_y, int_m3, NULL);
  
!   /* Verify get_offset for "c.x".  */
!   {
!     const region *c_x_reg = model.get_lvalue (c_x, NULL);
!     region_offset offset = c_x_reg->get_offset ();
!     ASSERT_EQ (offset.get_base_region (), model.get_lvalue (c, NULL));
!     ASSERT_EQ (offset.get_bit_offset (), 0);
!   }
  
!   /* Verify get_offset for "c.y".  */
!   {
!     const region *c_y_reg = model.get_lvalue (c_y, NULL);
!     region_offset offset = c_y_reg->get_offset ();
!     ASSERT_EQ (offset.get_base_region (), model.get_lvalue (c, NULL));
!     ASSERT_EQ (offset.get_bit_offset (), INT_TYPE_SIZE);
!   }
  }
  
! /* Verify usage of an array element.  */
  
  static void
! test_array_1 ()
  {
    tree tlen = size_int (10);
    tree arr_type = build_array_type (char_type_node, build_index_type (tlen));
  
    tree a = build_global_decl ("a", arr_type);
  
!   region_model_manager mgr;
!   region_model model (&mgr);
    tree int_0 = build_int_cst (integer_type_node, 0);
    tree a_0 = build4 (ARRAY_REF, char_type_node,
  		     a, int_0, NULL_TREE, NULL_TREE);
    tree char_A = build_int_cst (char_type_node, 'A');
    model.set_value (a_0, char_A, NULL);
  }
  
  /* Verify that region_model::get_representative_tree works as expected.  */
*************** test_dump_3 ()
*** 7688,7714 ****
  static void
  test_get_representative_tree ()
  {
    /* STRING_CST.  */
    {
      tree string_cst = build_string (4, "foo");
!     region_model m;
!     svalue_id str_sid = m.get_rvalue (string_cst, NULL);
!     tree rep = m.get_representative_tree (str_sid);
      ASSERT_EQ (rep, string_cst);
    }
  
    /* String literal.  */
    {
      tree string_cst_ptr = build_string_literal (4, "foo");
!     region_model m;
!     svalue_id str_sid = m.get_rvalue (string_cst_ptr, NULL);
!     tree rep = m.get_representative_tree (str_sid);
      ASSERT_DUMP_TREE_EQ (rep, "&\"foo\"[0]");
    }
  }
  
  /* Verify that calling region_model::get_rvalue repeatedly on the same
!    tree constant retrieves the same svalue_id.  */
  
  static void
  test_unique_constants ()
--- 3509,3604 ----
  static void
  test_get_representative_tree ()
  {
+   region_model_manager mgr;
+ 
    /* STRING_CST.  */
    {
      tree string_cst = build_string (4, "foo");
!     region_model m (&mgr);
!     const svalue *str_sval = m.get_rvalue (string_cst, NULL);
!     tree rep = m.get_representative_tree (str_sval);
      ASSERT_EQ (rep, string_cst);
    }
  
    /* String literal.  */
    {
      tree string_cst_ptr = build_string_literal (4, "foo");
!     region_model m (&mgr);
!     const svalue *str_sval = m.get_rvalue (string_cst_ptr, NULL);
!     tree rep = m.get_representative_tree (str_sval);
      ASSERT_DUMP_TREE_EQ (rep, "&\"foo\"[0]");
    }
+ 
+   /* Value of an element within an array.  */
+   {
+     tree tlen = size_int (10);
+     tree arr_type = build_array_type (char_type_node, build_index_type (tlen));
+     tree a = build_global_decl ("a", arr_type);
+     placeholder_svalue test_sval (char_type_node, "test value");
+ 
+     /* Value of a[3].  */
+     {
+       test_region_model_context ctxt;
+       region_model model (&mgr);
+       tree int_3 = build_int_cst (integer_type_node, 3);
+       tree a_3 = build4 (ARRAY_REF, char_type_node,
+ 			 a, int_3, NULL_TREE, NULL_TREE);
+       const region *a_3_reg = model.get_lvalue (a_3, &ctxt);
+       model.set_value (a_3_reg, &test_sval, &ctxt);
+       tree rep = model.get_representative_tree (&test_sval);
+       ASSERT_DUMP_TREE_EQ (rep, "a[3]");
+     }
+ 
+     /* Value of a[0].  */
+     {
+       test_region_model_context ctxt;
+       region_model model (&mgr);
+       tree idx = build_int_cst (integer_type_node, 0);
+       tree a_0 = build4 (ARRAY_REF, char_type_node,
+ 			 a, idx, NULL_TREE, NULL_TREE);
+       const region *a_0_reg = model.get_lvalue (a_0, &ctxt);
+       model.set_value (a_0_reg, &test_sval, &ctxt);
+       tree rep = model.get_representative_tree (&test_sval);
+       ASSERT_DUMP_TREE_EQ (rep, "a[0]");
+     }
+   }
+ 
+   /* Value of a field within a struct.  */
+   {
+     coord_test ct;
+ 
+     tree c = build_global_decl ("c", ct.m_coord_type);
+     tree c_x = build3 (COMPONENT_REF, TREE_TYPE (ct.m_x_field),
+ 		       c, ct.m_x_field, NULL_TREE);
+     tree c_y = build3 (COMPONENT_REF, TREE_TYPE (ct.m_y_field),
+ 		       c, ct.m_y_field, NULL_TREE);
+ 
+     test_region_model_context ctxt;
+ 
+     /* Value of initial field.  */
+     {
+       region_model m (&mgr);
+       const region *c_x_reg = m.get_lvalue (c_x, &ctxt);
+       placeholder_svalue test_sval_x (integer_type_node, "test x val");
+       m.set_value (c_x_reg, &test_sval_x, &ctxt);
+       tree rep = m.get_representative_tree (&test_sval_x);
+       ASSERT_DUMP_TREE_EQ (rep, "c.x");
+     }
+ 
+     /* Value of non-initial field.  */
+     {
+       region_model m (&mgr);
+       const region *c_y_reg = m.get_lvalue (c_y, &ctxt);
+       placeholder_svalue test_sval_y (integer_type_node, "test y val");
+       m.set_value (c_y_reg, &test_sval_y, &ctxt);
+       tree rep = m.get_representative_tree (&test_sval_y);
+       ASSERT_DUMP_TREE_EQ (rep, "c.y");
+     }
+   }
  }
  
  /* Verify that calling region_model::get_rvalue repeatedly on the same
!    tree constant retrieves the same svalue *.  */
  
  static void
  test_unique_constants ()
*************** test_unique_constants ()
*** 7717,7980 ****
    tree int_42 = build_int_cst (integer_type_node, 42);
  
    test_region_model_context ctxt;
!   region_model model;
    ASSERT_EQ (model.get_rvalue (int_0, &ctxt), model.get_rvalue (int_0, &ctxt));
    ASSERT_EQ (model.get_rvalue (int_42, &ctxt),
  	     model.get_rvalue (int_42, &ctxt));
    ASSERT_NE (model.get_rvalue (int_0, &ctxt), model.get_rvalue (int_42, &ctxt));
    ASSERT_EQ (ctxt.get_num_diagnostics (), 0);
  }
  
! /* Check that operator== and hashing works as expected for the
!    various svalue subclasses.  */
  
  static void
! test_svalue_equality ()
  {
!   tree int_42 = build_int_cst (integer_type_node, 42);
!   tree int_0 = build_int_cst (integer_type_node, 0);
! 
!   /* Create pairs instances of the various subclasses of svalue,
!      testing for hash and equality between (this, this) and
!      (this, other of same subclass). */
!   svalue *ptr_to_r0
!     = new region_svalue (ptr_type_node, region_id::from_int (0));
!   svalue *ptr_to_r1
!     = new region_svalue (ptr_type_node, region_id::from_int (1));
! 
!   ASSERT_EQ (ptr_to_r0->hash (), ptr_to_r0->hash ());
!   ASSERT_EQ (*ptr_to_r0, *ptr_to_r0);
! 
!   ASSERT_NE (ptr_to_r0->hash (), ptr_to_r1->hash ());
!   ASSERT_NE (*ptr_to_r0, *ptr_to_r1);
! 
!   svalue *cst_int_42 = new constant_svalue (int_42);
!   svalue *cst_int_0 = new constant_svalue (int_0);
! 
!   ASSERT_EQ (cst_int_42->hash (), cst_int_42->hash ());
!   ASSERT_EQ (*cst_int_42, *cst_int_42);
! 
!   ASSERT_NE (cst_int_42->hash (), cst_int_0->hash ());
!   ASSERT_NE (*cst_int_42, *cst_int_0);
! 
!   svalue *unknown_0 = new unknown_svalue (ptr_type_node);
!   svalue *unknown_1 = new unknown_svalue (ptr_type_node);
!   ASSERT_EQ (unknown_0->hash (), unknown_0->hash ());
!   ASSERT_EQ (*unknown_0, *unknown_0);
!   ASSERT_EQ (*unknown_1, *unknown_1);
  
!   /* Comparisons between different kinds of svalue.  */
!   ASSERT_NE (*ptr_to_r0, *cst_int_42);
!   ASSERT_NE (*ptr_to_r0, *unknown_0);
!   ASSERT_NE (*cst_int_42, *ptr_to_r0);
!   ASSERT_NE (*cst_int_42, *unknown_0);
!   ASSERT_NE (*unknown_0, *ptr_to_r0);
!   ASSERT_NE (*unknown_0, *cst_int_42);
  
!   delete ptr_to_r0;
!   delete ptr_to_r1;
!   delete cst_int_42;
!   delete cst_int_0;
!   delete unknown_0;
!   delete unknown_1;
  }
  
! /* Check that operator== and hashing works as expected for the
!    various region subclasses.  */
  
  static void
! test_region_equality ()
  {
!   region *r0
!     = new primitive_region (region_id::from_int (3), integer_type_node);
!   region *r1
!     = new primitive_region (region_id::from_int (4), integer_type_node);
! 
!   ASSERT_EQ (*r0, *r0);
!   ASSERT_EQ (r0->hash (), r0->hash ());
!   ASSERT_NE (*r0, *r1);
!   ASSERT_NE (r0->hash (), r1->hash ());
  
!   delete r0;
!   delete r1;
  
-   // TODO: test coverage for the map within a map_region
  }
  
! /* A subclass of purge_criteria for selftests: purge all svalue_id instances.  */
! 
! class purge_all_svalue_ids : public purge_criteria
! {
! public:
!   bool should_purge_p (svalue_id) const FINAL OVERRIDE
!   {
!     return true;
!   }
! };
! 
! /* A subclass of purge_criteria: purge a specific svalue_id.  */
! 
! class purge_one_svalue_id : public purge_criteria
! {
! public:
!   purge_one_svalue_id (svalue_id victim) : m_victim (victim) {}
! 
!   purge_one_svalue_id (region_model model, tree expr)
!   : m_victim (model.get_rvalue (expr, NULL)) {}
! 
!   bool should_purge_p (svalue_id sid) const FINAL OVERRIDE
!   {
!     return sid == m_victim;
!   }
! 
! private:
!   svalue_id m_victim;
! };
! 
! /* Check that constraint_manager::purge works for individual svalue_ids.  */
  
  static void
! test_purging_by_criteria ()
  {
!   tree int_42 = build_int_cst (integer_type_node, 42);
!   tree int_0 = build_int_cst (integer_type_node, 0);
! 
    tree x = build_global_decl ("x", integer_type_node);
    tree y = build_global_decl ("y", integer_type_node);
  
!   {
!     region_model model0;
!     region_model model1;
! 
!     ADD_SAT_CONSTRAINT (model1, x, EQ_EXPR, y);
!     ASSERT_NE (model0, model1);
! 
!     purge_stats stats_for_px;
!     purge_one_svalue_id px (model1, x);
!     model1.get_constraints ()->purge (px, &stats_for_px);
!     ASSERT_EQ (stats_for_px.m_num_equiv_classes, 0);
! 
!     purge_stats stats_for_py;
!     purge_one_svalue_id py (model1.get_rvalue (y, NULL));
!     model1.get_constraints ()->purge (py, &stats_for_py);
!     ASSERT_EQ (stats_for_py.m_num_equiv_classes, 1);
! 
!     ASSERT_EQ (*model0.get_constraints (), *model1.get_constraints ());
!   }
! 
!   {
!     region_model model0;
!     region_model model1;
! 
!     ADD_SAT_CONSTRAINT (model1, x, EQ_EXPR, int_42);
!     ASSERT_NE (model0, model1);
!     ASSERT_CONDITION_TRUE (model1, x, EQ_EXPR, int_42);
! 
!     purge_stats stats;
!     model1.get_constraints ()->purge (purge_one_svalue_id (model1, x), &stats);
  
!     ASSERT_CONDITION_UNKNOWN (model1, x, EQ_EXPR, int_42);
!   }
  
!   {
!     region_model model0;
!     region_model model1;
  
!     ADD_SAT_CONSTRAINT (model1, x, GE_EXPR, int_0);
!     ADD_SAT_CONSTRAINT (model1, x, LE_EXPR, int_42);
!     ASSERT_NE (model0, model1);
  
!     ASSERT_CONDITION_TRUE (model1, x, GE_EXPR, int_0);
!     ASSERT_CONDITION_TRUE (model1, x, LE_EXPR, int_42);
  
!     purge_stats stats;
!     model1.get_constraints ()->purge (purge_one_svalue_id (model1, x), &stats);
  
!     ASSERT_CONDITION_UNKNOWN (model1, x, GE_EXPR, int_0);
!     ASSERT_CONDITION_UNKNOWN (model1, x, LE_EXPR, int_42);
!   }
  
!   {
!     region_model model0;
!     region_model model1;
  
!     ADD_SAT_CONSTRAINT (model1, x, NE_EXPR, int_42);
!     ADD_SAT_CONSTRAINT (model1, y, NE_EXPR, int_0);
!     ASSERT_NE (model0, model1);
!     ASSERT_CONDITION_TRUE (model1, x, NE_EXPR, int_42);
!     ASSERT_CONDITION_TRUE (model1, y, NE_EXPR, int_0);
  
!     purge_stats stats;
!     model1.get_constraints ()->purge (purge_one_svalue_id (model1, x), &stats);
!     ASSERT_NE (model0, model1);
  
!     ASSERT_CONDITION_UNKNOWN (model1, x, NE_EXPR, int_42);
!     ASSERT_CONDITION_TRUE (model1, y, NE_EXPR, int_0);
!   }
  
!   {
!     region_model model0;
!     region_model model1;
  
!     ADD_SAT_CONSTRAINT (model1, x, NE_EXPR, int_42);
!     ADD_SAT_CONSTRAINT (model1, y, NE_EXPR, int_0);
!     ASSERT_NE (model0, model1);
!     ASSERT_CONDITION_TRUE (model1, x, NE_EXPR, int_42);
!     ASSERT_CONDITION_TRUE (model1, y, NE_EXPR, int_0);
  
!     purge_stats stats;
!     model1.get_constraints ()->purge (purge_all_svalue_ids (), &stats);
!     ASSERT_CONDITION_UNKNOWN (model1, x, NE_EXPR, int_42);
!     ASSERT_CONDITION_UNKNOWN (model1, y, NE_EXPR, int_0);
!   }
  
  }
  
! /* Test that region_model::purge_unused_svalues works as expected.  */
  
  static void
! test_purge_unused_svalues ()
  {
!   tree int_42 = build_int_cst (integer_type_node, 42);
!   tree int_0 = build_int_cst (integer_type_node, 0);
!   tree x = build_global_decl ("x", integer_type_node);
!   tree y = build_global_decl ("y", integer_type_node);
  
    test_region_model_context ctxt;
!   region_model model;
!   model.set_to_new_unknown_value (model.get_lvalue (x, &ctxt), TREE_TYPE (x),
! 				  &ctxt);
!   model.set_to_new_unknown_value (model.get_lvalue (x, &ctxt), TREE_TYPE (x),
! 				  &ctxt);
!   model.set_to_new_unknown_value (model.get_lvalue (x, &ctxt), TREE_TYPE (x),
! 				  &ctxt);
!   model.add_constraint (x, NE_EXPR, int_42, &ctxt);
  
!   model.set_value (model.get_lvalue (x, &ctxt),
! 		   model.get_rvalue (int_42, &ctxt),
! 		   &ctxt);
!   model.add_constraint (y, GT_EXPR, int_0, &ctxt);
  
!   /* The redundant unknown values should have been purged.  */
!   purge_stats purged;
!   model.purge_unused_svalues (&purged, NULL);
!   ASSERT_EQ (purged.m_num_svalues, 3);
  
!   /* and the redundant constraint on an old, unknown value for x should
!      have been purged.  */
!   ASSERT_EQ (purged.m_num_equiv_classes, 1);
!   ASSERT_EQ (purged.m_num_constraints, 1);
!   ASSERT_EQ (model.get_constraints ()->m_constraints.length (), 2);
  
!   /* ...but we should still have x == 42.  */
!   ASSERT_EQ (model.eval_condition (x, EQ_EXPR, int_42, &ctxt),
! 	     tristate::TS_TRUE);
  
!   /* ...and we should still have the constraint on y.  */
!   ASSERT_EQ (model.eval_condition (y, GT_EXPR, int_0, &ctxt),
! 	     tristate::TS_TRUE);
  
!   ASSERT_EQ (ctxt.get_num_diagnostics (), 0);
  }
  
  /* Verify that simple assignments work as expected.  */
--- 3607,3882 ----
    tree int_42 = build_int_cst (integer_type_node, 42);
  
    test_region_model_context ctxt;
!   region_model_manager mgr;
!   region_model model (&mgr);
    ASSERT_EQ (model.get_rvalue (int_0, &ctxt), model.get_rvalue (int_0, &ctxt));
    ASSERT_EQ (model.get_rvalue (int_42, &ctxt),
  	     model.get_rvalue (int_42, &ctxt));
    ASSERT_NE (model.get_rvalue (int_0, &ctxt), model.get_rvalue (int_42, &ctxt));
    ASSERT_EQ (ctxt.get_num_diagnostics (), 0);
+ 
+   /* A "(const int)42" will be a different tree from "(int)42)"...  */
+   tree const_int_type_node
+     = build_qualified_type (integer_type_node, TYPE_QUAL_CONST);
+   tree const_int_42 = build_int_cst (const_int_type_node, 42);
+   ASSERT_NE (int_42, const_int_42);
+   /* It should have a different const_svalue.  */
+   const svalue *int_42_sval = model.get_rvalue (int_42, &ctxt);
+   const svalue *const_int_42_sval = model.get_rvalue (const_int_42, &ctxt);
+   ASSERT_NE (int_42_sval, const_int_42_sval);
+   /* But they should compare as equal.  */
+   ASSERT_CONDITION_TRUE (model, int_42_sval, EQ_EXPR, const_int_42_sval);
+   ASSERT_CONDITION_FALSE (model, int_42_sval, NE_EXPR, const_int_42_sval);
  }
  
! /* Verify that each type gets its own singleton unknown_svalue within a
!    region_model_manager, and that NULL_TREE gets its own singleton.  */
  
  static void
! test_unique_unknowns ()
  {
!   region_model_manager mgr;
!   const svalue *unknown_int
!     = mgr.get_or_create_unknown_svalue (integer_type_node);
!   /* Repeated calls with the same type should get the same "unknown"
!      svalue.  */
!   const svalue *unknown_int_2
!     = mgr.get_or_create_unknown_svalue (integer_type_node);
!   ASSERT_EQ (unknown_int, unknown_int_2);
  
!   /* Different types (or the NULL type) should have different
!      unknown_svalues.  */
!   const svalue *unknown_NULL_type = mgr.get_or_create_unknown_svalue (NULL);
!   ASSERT_NE (unknown_NULL_type, unknown_int);
  
!   /* Repeated calls with NULL for the type should get the same "unknown"
!      svalue.  */
!   const svalue *unknown_NULL_type_2 = mgr.get_or_create_unknown_svalue (NULL);
!   ASSERT_EQ (unknown_NULL_type, unknown_NULL_type_2);
  }
  
! /* Verify that initial_svalue are handled as expected.  */
  
  static void
! test_initial_svalue_folding ()
  {
!   region_model_manager mgr;
!   tree x = build_global_decl ("x", integer_type_node);
!   tree y = build_global_decl ("y", integer_type_node);
  
!   test_region_model_context ctxt;
!   region_model model (&mgr);
!   const svalue *x_init = model.get_rvalue (x, &ctxt);
!   const svalue *y_init = model.get_rvalue (y, &ctxt);
!   ASSERT_NE (x_init, y_init);
!   const region *x_reg = model.get_lvalue (x, &ctxt);
!   ASSERT_EQ (x_init, mgr.get_or_create_initial_value (x_reg));
  
  }
  
! /* Verify that unary ops are folded as expected.  */
  
  static void
! test_unaryop_svalue_folding ()
  {
!   region_model_manager mgr;
    tree x = build_global_decl ("x", integer_type_node);
    tree y = build_global_decl ("y", integer_type_node);
  
!   test_region_model_context ctxt;
!   region_model model (&mgr);
!   const svalue *x_init = model.get_rvalue (x, &ctxt);
!   const svalue *y_init = model.get_rvalue (y, &ctxt);
!   const region *x_reg = model.get_lvalue (x, &ctxt);
!   ASSERT_EQ (x_init, mgr.get_or_create_initial_value (x_reg));
  
!   /* "(int)x" -> "x".  */
!   ASSERT_EQ (x_init, mgr.get_or_create_cast (integer_type_node, x_init));
  
!   /* "(void *)x" -> something other than "x".  */
!   ASSERT_NE (x_init, mgr.get_or_create_cast (ptr_type_node, x_init));
  
!   /* "!(x == y)" -> "x != y".  */
!   ASSERT_EQ (mgr.get_or_create_unaryop
! 	       (boolean_type_node, TRUTH_NOT_EXPR,
! 		mgr.get_or_create_binop (boolean_type_node, EQ_EXPR,
! 					 x_init, y_init)),
! 	     mgr.get_or_create_binop (boolean_type_node, NE_EXPR,
! 				      x_init, y_init));
!   /* "!(x > y)" -> "x <= y".  */
!   ASSERT_EQ (mgr.get_or_create_unaryop
! 	       (boolean_type_node, TRUTH_NOT_EXPR,
! 		mgr.get_or_create_binop (boolean_type_node, GT_EXPR,
! 					 x_init, y_init)),
! 	     mgr.get_or_create_binop (boolean_type_node, LE_EXPR,
! 				      x_init, y_init));
! }
  
! /* Verify that binops on constant svalues are folded.  */
  
! static void
! test_binop_svalue_folding ()
! {
! #define NUM_CSTS 10
!   tree cst_int[NUM_CSTS];
!   region_model_manager mgr;
!   const svalue *cst_sval[NUM_CSTS];
!   for (int i = 0; i < NUM_CSTS; i++)
!     {
!       cst_int[i] = build_int_cst (integer_type_node, i);
!       cst_sval[i] = mgr.get_or_create_constant_svalue (cst_int[i]);
!       ASSERT_EQ (cst_sval[i]->get_kind (), SK_CONSTANT);
!       ASSERT_EQ (cst_sval[i]->maybe_get_constant (), cst_int[i]);
!     }
  
!   for (int i = 0; i < NUM_CSTS; i++)
!     for (int j = 0; j < NUM_CSTS; j++)
!       {
! 	if (i != j)
! 	  ASSERT_NE (cst_sval[i], cst_sval[j]);
! 	if (i + j < NUM_CSTS)
! 	  {
! 	    const svalue *sum
! 	      = mgr.get_or_create_binop (integer_type_node, PLUS_EXPR,
! 					 cst_sval[i], cst_sval[j]);
! 	    ASSERT_EQ (sum, cst_sval[i + j]);
! 	  }
! 	if (i - j >= 0)
! 	  {
! 	    const svalue *difference
! 	      = mgr.get_or_create_binop (integer_type_node, MINUS_EXPR,
! 					 cst_sval[i], cst_sval[j]);
! 	    ASSERT_EQ (difference, cst_sval[i - j]);
! 	  }
! 	if (i * j < NUM_CSTS)
! 	  {
! 	    const svalue *product
! 	      = mgr.get_or_create_binop (integer_type_node, MULT_EXPR,
! 					 cst_sval[i], cst_sval[j]);
! 	    ASSERT_EQ (product, cst_sval[i * j]);
! 	  }
! 	const svalue *eq = mgr.get_or_create_binop (integer_type_node, EQ_EXPR,
! 					       cst_sval[i], cst_sval[j]);
! 	ASSERT_EQ (eq, i == j ? cst_sval[1] : cst_sval [0]);
! 	const svalue *neq = mgr.get_or_create_binop (integer_type_node, NE_EXPR,
! 						cst_sval[i], cst_sval[j]);
! 	ASSERT_EQ (neq, i != j ? cst_sval[1] : cst_sval [0]);
! 	// etc
!       }
  
!   tree x = build_global_decl ("x", integer_type_node);
  
!   test_region_model_context ctxt;
!   region_model model (&mgr);
!   const svalue *x_init = model.get_rvalue (x, &ctxt);
  
!   /* PLUS_EXPR folding.  */
!   const svalue *x_init_plus_zero
!     = mgr.get_or_create_binop (integer_type_node, PLUS_EXPR,
! 			       x_init, cst_sval[0]);
!   ASSERT_EQ (x_init_plus_zero, x_init);
!   const svalue *zero_plus_x_init
!     = mgr.get_or_create_binop (integer_type_node, PLUS_EXPR,
! 			       cst_sval[0], x_init);
!   ASSERT_EQ (zero_plus_x_init, x_init);
  
!   /* MULT_EXPR folding.  */
!   const svalue *x_init_times_zero
!     = mgr.get_or_create_binop (integer_type_node, MULT_EXPR,
! 			       x_init, cst_sval[0]);
!   ASSERT_EQ (x_init_times_zero, cst_sval[0]);
!   const svalue *zero_times_x_init
!     = mgr.get_or_create_binop (integer_type_node, MULT_EXPR,
! 			       cst_sval[0], x_init);
!   ASSERT_EQ (zero_times_x_init, cst_sval[0]);
  
!   const svalue *x_init_times_one
!     = mgr.get_or_create_binop (integer_type_node, MULT_EXPR,
! 			       x_init, cst_sval[1]);
!   ASSERT_EQ (x_init_times_one, x_init);
!   const svalue *one_times_x_init
!     = mgr.get_or_create_binop (integer_type_node, MULT_EXPR,
! 			       cst_sval[1], x_init);
!   ASSERT_EQ (one_times_x_init, x_init);
  
!   // etc
!   // TODO: do we want to use the match-and-simplify DSL for this?
  
!   /* Verify that binops put any constants on the RHS.  */
!   const svalue *four_times_x_init
!     = mgr.get_or_create_binop (integer_type_node, MULT_EXPR,
! 			       cst_sval[4], x_init);
!   const svalue *x_init_times_four
!     = mgr.get_or_create_binop (integer_type_node, MULT_EXPR,
! 			       x_init, cst_sval[4]);
!   ASSERT_EQ (four_times_x_init, x_init_times_four);
!   const binop_svalue *binop = four_times_x_init->dyn_cast_binop_svalue ();
!   ASSERT_EQ (binop->get_op (), MULT_EXPR);
!   ASSERT_EQ (binop->get_arg0 (), x_init);
!   ASSERT_EQ (binop->get_arg1 (), cst_sval[4]);
  
+   /* Verify that ((x + 1) + 1) == (x + 2).  */
+   const svalue *x_init_plus_one
+     = mgr.get_or_create_binop (integer_type_node, PLUS_EXPR,
+ 			       x_init, cst_sval[1]);
+   const svalue *x_init_plus_two
+     = mgr.get_or_create_binop (integer_type_node, PLUS_EXPR,
+ 			       x_init, cst_sval[2]);
+   const svalue *x_init_plus_one_plus_one
+     = mgr.get_or_create_binop (integer_type_node, PLUS_EXPR,
+ 			       x_init_plus_one, cst_sval[1]);
+   ASSERT_EQ (x_init_plus_one_plus_one, x_init_plus_two);
  }
  
! /* Verify that sub_svalues are folded as expected.  */
  
  static void
! test_sub_svalue_folding ()
  {
!   coord_test ct;
!   tree c = build_global_decl ("c", ct.m_coord_type);
!   tree c_x = build3 (COMPONENT_REF, TREE_TYPE (ct.m_x_field),
! 		     c, ct.m_x_field, NULL_TREE);
  
+   region_model_manager mgr;
+   region_model model (&mgr);
    test_region_model_context ctxt;
!   const region *c_x_reg = model.get_lvalue (c_x, &ctxt);
  
!   /* Verify that sub_svalue of "unknown" simply
!      yields an unknown.  */
  
!   const svalue *unknown = mgr.get_or_create_unknown_svalue (ct.m_coord_type);
!   const svalue *sub = mgr.get_or_create_sub_svalue (TREE_TYPE (ct.m_x_field),
! 						      unknown, c_x_reg);
!   ASSERT_EQ (sub->get_kind (), SK_UNKNOWN);
!   ASSERT_EQ (sub->get_type (), TREE_TYPE (ct.m_x_field));
! }
  
! /* Test that region::descendent_of_p works as expected.  */
  
! static void
! test_descendent_of_p ()
! {
!   region_model_manager mgr;
!   const region *stack = mgr.get_stack_region ();
!   const region *heap = mgr.get_heap_region ();
!   const region *code = mgr.get_code_region ();
!   const region *globals = mgr.get_globals_region ();
  
!   /* descendent_of_p should return true when used on the region itself.  */
!   ASSERT_TRUE (stack->descendent_of_p (stack));
!   ASSERT_FALSE (stack->descendent_of_p (heap));
!   ASSERT_FALSE (stack->descendent_of_p (code));
!   ASSERT_FALSE (stack->descendent_of_p (globals));
  
!   tree x = build_global_decl ("x", integer_type_node);
!   const region *x_reg = mgr.get_region_for_global (x);
!   ASSERT_TRUE (x_reg->descendent_of_p (globals));
! 
!   /* A cast_region should be a descendent of the original region.  */
!   const region *cast_reg = mgr.get_cast_region (x_reg, ptr_type_node);
!   ASSERT_TRUE (cast_reg->descendent_of_p (x_reg));
  }
  
  /* Verify that simple assignments work as expected.  */
*************** test_assignment ()
*** 7987,7993 ****
    tree y = build_global_decl ("y", integer_type_node);
  
    /* "x == 0", then use of y, then "y = 0;".  */
!   region_model model;
    ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, int_0);
    ASSERT_CONDITION_UNKNOWN (model, y, EQ_EXPR, int_0);
    model.set_value (model.get_lvalue (y, NULL),
--- 3889,3896 ----
    tree y = build_global_decl ("y", integer_type_node);
  
    /* "x == 0", then use of y, then "y = 0;".  */
!   region_model_manager mgr;
!   region_model model (&mgr);
    ADD_SAT_CONSTRAINT (model, x, EQ_EXPR, int_0);
    ASSERT_CONDITION_UNKNOWN (model, y, EQ_EXPR, int_0);
    model.set_value (model.get_lvalue (y, NULL),
*************** test_assignment ()
*** 7995,8002 ****
  		   NULL);
    ASSERT_CONDITION_TRUE (model, y, EQ_EXPR, int_0);
    ASSERT_CONDITION_TRUE (model, y, EQ_EXPR, x);
- 
-   ASSERT_DUMP_EQ (model, true, "y: 0, {x}: unknown, x == y");
  }
  
  /* Verify that compound assignments work as expected.  */
--- 3898,3903 ----
*************** test_compound_assignment ()
*** 8020,8031 ****
    tree int_17 = build_int_cst (integer_type_node, 17);
    tree int_m3 = build_int_cst (integer_type_node, -3);
  
!   region_model model;
    model.set_value (c_x, int_17, NULL);
    model.set_value (c_y, int_m3, NULL);
  
-   ASSERT_DUMP_EQ (model, true, "c.x: 17, c.y: -3");
- 
    /* Copy c to d.  */
    model.copy_region (model.get_lvalue (d, NULL), model.get_lvalue (c, NULL),
  		     NULL);
--- 3921,3931 ----
    tree int_17 = build_int_cst (integer_type_node, 17);
    tree int_m3 = build_int_cst (integer_type_node, -3);
  
!   region_model_manager mgr;
!   region_model model (&mgr);
    model.set_value (c_x, int_17, NULL);
    model.set_value (c_y, int_m3, NULL);
  
    /* Copy c to d.  */
    model.copy_region (model.get_lvalue (d, NULL), model.get_lvalue (c, NULL),
  		     NULL);
*************** test_stack_frames ()
*** 8076,8176 ****
    /* "q" global.  */
    tree q = build_global_decl ("q", ptr_type_node);
  
    test_region_model_context ctxt;
!   region_model model;
  
    /* Push stack frame for "parent_fn".  */
!   region_id parent_frame_rid
!     = model.push_frame (DECL_STRUCT_FUNCTION (parent_fndecl), NULL, &ctxt);
!   ASSERT_EQ (model.get_current_frame_id (), parent_frame_rid);
!   region_id a_in_parent_rid = model.get_lvalue (a, &ctxt);
!   model.set_value (a_in_parent_rid, model.get_rvalue (int_42, &ctxt), &ctxt);
!   model.set_to_new_unknown_value (model.get_lvalue (b, &ctxt),
! 				  integer_type_node, &ctxt);
    model.add_constraint (b, LT_EXPR, int_10, &ctxt);
    ASSERT_EQ (model.eval_condition (b, LT_EXPR, int_10, &ctxt),
  	     tristate (tristate::TS_TRUE));
  
    /* Push stack frame for "child_fn".  */
!   region_id child_frame_rid
      = model.push_frame (DECL_STRUCT_FUNCTION (child_fndecl), NULL, &ctxt);
!   ASSERT_EQ (model.get_current_frame_id (), child_frame_rid);
!   region_id x_in_child_rid = model.get_lvalue (x, &ctxt);
!   model.set_value (x_in_child_rid, model.get_rvalue (int_0, &ctxt), &ctxt);
!   model.set_to_new_unknown_value (model.get_lvalue (y, &ctxt),
! 				  integer_type_node, &ctxt);
    model.add_constraint (y, NE_EXPR, int_5, &ctxt);
    ASSERT_EQ (model.eval_condition (y, NE_EXPR, int_5, &ctxt),
  	     tristate (tristate::TS_TRUE));
  
    /* Point a global pointer at a local in the child frame:  p = &x.  */
!   region_id p_in_globals_rid = model.get_lvalue (p, &ctxt);
!   model.set_value (p_in_globals_rid,
! 		   model.get_or_create_ptr_svalue (ptr_type_node,
! 						   x_in_child_rid),
  		   &ctxt);
  
    /* Point another global pointer at p: q = &p.  */
!   region_id q_in_globals_rid = model.get_lvalue (q, &ctxt);
!   model.set_value (q_in_globals_rid,
! 		   model.get_or_create_ptr_svalue (ptr_type_node,
! 						   p_in_globals_rid),
  		   &ctxt);
  
!   /* Test get_descendents.  */
!   region_id_set descendents (&model);
!   model.get_descendents (child_frame_rid, &descendents, region_id::null ());
!   ASSERT_TRUE (descendents.region_p (child_frame_rid));
!   ASSERT_TRUE (descendents.region_p (x_in_child_rid));
!   ASSERT_FALSE (descendents.region_p (a_in_parent_rid));
!   ASSERT_EQ (descendents.num_regions (), 3);
! #if 0
!   auto_vec<region_id> test_vec;
!   for (region_id_set::iterator_t iter = descendents.begin ();
!        iter != descendents.end ();
!        ++iter)
!     test_vec.safe_push (*iter);
!   gcc_unreachable (); // TODO
!   //ASSERT_EQ ();
! #endif
! 
!   ASSERT_DUMP_EQ (model, true,
! 		  "a: 42, x: 0, p: &x, q: &p, {b, y}: unknown, b < 10, y != 5");
  
    /* Pop the "child_fn" frame from the stack.  */
!   purge_stats purged;
!   model.pop_frame (region_id::null (), true, &purged, &ctxt);
! 
!   /* We should have purged the unknown values for x and y. */
!   ASSERT_EQ (purged.m_num_svalues, 2);
! 
!   /* We should have purged the frame region and the regions for x and y. */
!   ASSERT_EQ (purged.m_num_regions, 3);
! 
!   /* We should have purged the constraint on y.  */
!   ASSERT_EQ (purged.m_num_equiv_classes, 1);
!   ASSERT_EQ (purged.m_num_constraints, 1);
  
    /* Verify that p (which was pointing at the local "x" in the popped
       frame) has been poisoned.  */
!   svalue *new_p_sval = model.get_svalue (model.get_rvalue (p, &ctxt));
    ASSERT_EQ (new_p_sval->get_kind (), SK_POISONED);
    ASSERT_EQ (new_p_sval->dyn_cast_poisoned_svalue ()->get_poison_kind (),
  	     POISON_KIND_POPPED_STACK);
  
    /* Verify that q still points to p, in spite of the region
       renumbering.  */
!   svalue *new_q_sval = model.get_svalue (model.get_rvalue (q, &ctxt));
    ASSERT_EQ (new_q_sval->get_kind (), SK_REGION);
    ASSERT_EQ (new_q_sval->dyn_cast_region_svalue ()->get_pointee (),
  	     model.get_lvalue (p, &ctxt));
  
    /* Verify that top of stack has been updated.  */
!   ASSERT_EQ (model.get_current_frame_id (), parent_frame_rid);
  
    /* Verify locals in parent frame.  */
    /* Verify "a" still has its value.  */
!   svalue *new_a_sval = model.get_svalue (model.get_rvalue (a, &ctxt));
    ASSERT_EQ (new_a_sval->get_kind (), SK_CONSTANT);
    ASSERT_EQ (new_a_sval->dyn_cast_constant_svalue ()->get_constant (),
  	     int_42);
--- 3976,4059 ----
    /* "q" global.  */
    tree q = build_global_decl ("q", ptr_type_node);
  
+   region_model_manager mgr;
    test_region_model_context ctxt;
!   region_model model (&mgr);
  
    /* Push stack frame for "parent_fn".  */
!   const region *parent_frame_reg
!     = model.push_frame (DECL_STRUCT_FUNCTION (parent_fndecl),
! 			NULL, &ctxt);
!   ASSERT_EQ (model.get_current_frame (), parent_frame_reg);
!   ASSERT_TRUE (model.region_exists_p (parent_frame_reg));
!   const region *a_in_parent_reg = model.get_lvalue (a, &ctxt);
!   model.set_value (a_in_parent_reg,
! 		   model.get_rvalue (int_42, &ctxt),
! 		   &ctxt);
!   ASSERT_EQ (a_in_parent_reg->maybe_get_frame_region (), parent_frame_reg);
! 
    model.add_constraint (b, LT_EXPR, int_10, &ctxt);
    ASSERT_EQ (model.eval_condition (b, LT_EXPR, int_10, &ctxt),
  	     tristate (tristate::TS_TRUE));
  
    /* Push stack frame for "child_fn".  */
!   const region *child_frame_reg
      = model.push_frame (DECL_STRUCT_FUNCTION (child_fndecl), NULL, &ctxt);
!   ASSERT_EQ (model.get_current_frame (), child_frame_reg);
!   ASSERT_TRUE (model.region_exists_p (child_frame_reg));
!   const region *x_in_child_reg = model.get_lvalue (x, &ctxt);
!   model.set_value (x_in_child_reg,
! 		   model.get_rvalue (int_0, &ctxt),
! 		   &ctxt);
!   ASSERT_EQ (x_in_child_reg->maybe_get_frame_region (), child_frame_reg);
! 
    model.add_constraint (y, NE_EXPR, int_5, &ctxt);
    ASSERT_EQ (model.eval_condition (y, NE_EXPR, int_5, &ctxt),
  	     tristate (tristate::TS_TRUE));
  
    /* Point a global pointer at a local in the child frame:  p = &x.  */
!   const region *p_in_globals_reg = model.get_lvalue (p, &ctxt);
!   model.set_value (p_in_globals_reg,
! 		   mgr.get_ptr_svalue (ptr_type_node, x_in_child_reg),
  		   &ctxt);
+   ASSERT_EQ (p_in_globals_reg->maybe_get_frame_region (), NULL);
  
    /* Point another global pointer at p: q = &p.  */
!   const region *q_in_globals_reg = model.get_lvalue (q, &ctxt);
!   model.set_value (q_in_globals_reg,
! 		   mgr.get_ptr_svalue (ptr_type_node, p_in_globals_reg),
  		   &ctxt);
  
!   /* Test region::descendent_of_p.  */
!   ASSERT_TRUE (child_frame_reg->descendent_of_p (child_frame_reg));
!   ASSERT_TRUE (x_in_child_reg->descendent_of_p (child_frame_reg));
!   ASSERT_FALSE (a_in_parent_reg->descendent_of_p (child_frame_reg));
  
    /* Pop the "child_fn" frame from the stack.  */
!   model.pop_frame (NULL, NULL, &ctxt);
!   ASSERT_FALSE (model.region_exists_p (child_frame_reg));
!   ASSERT_TRUE (model.region_exists_p (parent_frame_reg));
  
    /* Verify that p (which was pointing at the local "x" in the popped
       frame) has been poisoned.  */
!   const svalue *new_p_sval = model.get_rvalue (p, &ctxt);
    ASSERT_EQ (new_p_sval->get_kind (), SK_POISONED);
    ASSERT_EQ (new_p_sval->dyn_cast_poisoned_svalue ()->get_poison_kind (),
  	     POISON_KIND_POPPED_STACK);
  
    /* Verify that q still points to p, in spite of the region
       renumbering.  */
!   const svalue *new_q_sval = model.get_rvalue (q, &ctxt);
    ASSERT_EQ (new_q_sval->get_kind (), SK_REGION);
    ASSERT_EQ (new_q_sval->dyn_cast_region_svalue ()->get_pointee (),
  	     model.get_lvalue (p, &ctxt));
  
    /* Verify that top of stack has been updated.  */
!   ASSERT_EQ (model.get_current_frame (), parent_frame_reg);
  
    /* Verify locals in parent frame.  */
    /* Verify "a" still has its value.  */
!   const svalue *new_a_sval = model.get_rvalue (a, &ctxt);
    ASSERT_EQ (new_a_sval->get_kind (), SK_CONSTANT);
    ASSERT_EQ (new_a_sval->dyn_cast_constant_svalue ()->get_constant (),
  	     int_42);
*************** test_stack_frames ()
*** 8180,8186 ****
  }
  
  /* Verify that get_representative_path_var works as expected, that
!    we can map from region ids to parms and back within a recursive call
     stack.  */
  
  static void
--- 4063,4069 ----
  }
  
  /* Verify that get_representative_path_var works as expected, that
!    we can map from regions to parms and back within a recursive call
     stack.  */
  
  static void
*************** test_get_representative_path_var ()
*** 8197,8263 ****
  		       get_identifier ("n"),
  		       integer_type_node);
  
!   region_model model;
  
    /* Push 5 stack frames for "factorial", each with a param  */
!   auto_vec<region_id> parm_rids;
!   auto_vec<svalue_id> parm_sids;
    for (int depth = 0; depth < 5; depth++)
      {
!       region_id frame_rid
! 	= model.push_frame (DECL_STRUCT_FUNCTION (fndecl), NULL, NULL);
!       region_id rid_n = model.get_lvalue (path_var (n, depth), NULL);
!       parm_rids.safe_push (rid_n);
! 
!       ASSERT_EQ (model.get_region (rid_n)->get_parent (), frame_rid);
  
!       svalue_id sid_n
! 	= model.set_to_new_unknown_value (rid_n, integer_type_node, NULL);
!       parm_sids.safe_push (sid_n);
      }
  
    /* Verify that we can recognize that the regions are the parms,
       at every depth.  */
    for (int depth = 0; depth < 5; depth++)
      {
!       ASSERT_EQ (model.get_representative_path_var (parm_rids[depth]),
! 		 path_var (n, depth));
        /* ...and that we can lookup lvalues for locals for all frames,
  	 not just the top.  */
        ASSERT_EQ (model.get_lvalue (path_var (n, depth), NULL),
! 		 parm_rids[depth]);
        /* ...and that we can locate the svalues.  */
!       auto_vec<path_var> pvs;
!       model.get_path_vars_for_svalue (parm_sids[depth], &pvs);
!       ASSERT_EQ (pvs.length (), 1);
!       ASSERT_EQ (pvs[0], path_var (n, depth));
      }
  }
  
! /* Verify that the core regions within a region_model are in a consistent
!    order after canonicalization.  */
  
  static void
! test_canonicalization_1 ()
  {
!   region_model model0;
!   model0.get_root_region ()->ensure_stack_region (&model0);
!   model0.get_root_region ()->ensure_globals_region (&model0);
! 
!   region_model model1;
!   model1.get_root_region ()->ensure_globals_region (&model1);
!   model1.get_root_region ()->ensure_stack_region (&model1);
  
!   model0.canonicalize (NULL);
!   model1.canonicalize (NULL);
    ASSERT_EQ (model0, model1);
  }
  
  /* Verify that region models for
        x = 42; y = 113;
     and
        y = 113; x = 42;
!    are equal after canonicalization.  */
  
  static void
  test_canonicalization_2 ()
--- 4080,4167 ----
  		       get_identifier ("n"),
  		       integer_type_node);
  
!   region_model_manager mgr;
!   test_region_model_context ctxt;
!   region_model model (&mgr);
  
    /* Push 5 stack frames for "factorial", each with a param  */
!   auto_vec<const region *> parm_regs;
!   auto_vec<const svalue *> parm_svals;
    for (int depth = 0; depth < 5; depth++)
      {
!       const region *frame_n_reg
! 	= model.push_frame (DECL_STRUCT_FUNCTION (fndecl), NULL, &ctxt);
!       const region *parm_n_reg = model.get_lvalue (path_var (n, depth), &ctxt);
!       parm_regs.safe_push (parm_n_reg);
  
!       ASSERT_EQ (parm_n_reg->get_parent_region (), frame_n_reg);
!       const svalue *sval_n = mgr.get_or_create_initial_value (parm_n_reg);
!       parm_svals.safe_push (sval_n);
      }
  
    /* Verify that we can recognize that the regions are the parms,
       at every depth.  */
    for (int depth = 0; depth < 5; depth++)
      {
!       {
! 	svalue_set visited;
! 	ASSERT_EQ (model.get_representative_path_var (parm_regs[depth],
! 						      &visited),
! 		   path_var (n, depth + 1));
!       }
        /* ...and that we can lookup lvalues for locals for all frames,
  	 not just the top.  */
        ASSERT_EQ (model.get_lvalue (path_var (n, depth), NULL),
! 		 parm_regs[depth]);
        /* ...and that we can locate the svalues.  */
!       {
! 	svalue_set visited;
! 	ASSERT_EQ (model.get_representative_path_var (parm_svals[depth],
! 						      &visited),
! 		   path_var (n, depth + 1));
!       }
      }
  }
  
! /* Ensure that region_model::operator== works as expected.  */
  
  static void
! test_equality_1 ()
  {
!   tree int_42 = build_int_cst (integer_type_node, 42);
!   tree int_17 = build_int_cst (integer_type_node, 17);
  
! /* Verify that "empty" region_model instances are equal to each other.  */
!   region_model_manager mgr;
!   region_model model0 (&mgr);
!   region_model model1 (&mgr);
    ASSERT_EQ (model0, model1);
+ 
+   /* Verify that setting state in model1 makes the models non-equal.  */
+   tree x = build_global_decl ("x", integer_type_node);
+   model0.set_value (x, int_42, NULL);
+   ASSERT_EQ (model0.get_rvalue (x, NULL)->maybe_get_constant (), int_42);
+   ASSERT_NE (model0, model1);
+ 
+   /* Verify the copy-ctor.  */
+   region_model model2 (model0);
+   ASSERT_EQ (model0, model2);
+   ASSERT_EQ (model2.get_rvalue (x, NULL)->maybe_get_constant (), int_42);
+   ASSERT_NE (model1, model2);
+ 
+   /* Verify that models obtained from copy-ctor are independently editable
+      w/o affecting the original model.  */
+   model2.set_value (x, int_17, NULL);
+   ASSERT_NE (model0, model2);
+   ASSERT_EQ (model2.get_rvalue (x, NULL)->maybe_get_constant (), int_17);
+   ASSERT_EQ (model0.get_rvalue (x, NULL)->maybe_get_constant (), int_42);
  }
  
  /* Verify that region models for
        x = 42; y = 113;
     and
        y = 113; x = 42;
!    are equal.  */
  
  static void
  test_canonicalization_2 ()
*************** test_canonicalization_2 ()
*** 8267,8273 ****
    tree x = build_global_decl ("x", integer_type_node);
    tree y = build_global_decl ("y", integer_type_node);
  
!   region_model model0;
    model0.set_value (model0.get_lvalue (x, NULL),
  		    model0.get_rvalue (int_42, NULL),
  		    NULL);
--- 4171,4178 ----
    tree x = build_global_decl ("x", integer_type_node);
    tree y = build_global_decl ("y", integer_type_node);
  
!   region_model_manager mgr;
!   region_model model0 (&mgr);
    model0.set_value (model0.get_lvalue (x, NULL),
  		    model0.get_rvalue (int_42, NULL),
  		    NULL);
*************** test_canonicalization_2 ()
*** 8275,8281 ****
  		    model0.get_rvalue (int_113, NULL),
  		    NULL);
  
!   region_model model1;
    model1.set_value (model1.get_lvalue (y, NULL),
  		    model1.get_rvalue (int_113, NULL),
  		    NULL);
--- 4180,4186 ----
  		    model0.get_rvalue (int_113, NULL),
  		    NULL);
  
!   region_model model1 (&mgr);
    model1.set_value (model1.get_lvalue (y, NULL),
  		    model1.get_rvalue (int_113, NULL),
  		    NULL);
*************** test_canonicalization_2 ()
*** 8283,8290 ****
  		    model1.get_rvalue (int_42, NULL),
  		    NULL);
  
-   model0.canonicalize (NULL);
-   model1.canonicalize (NULL);
    ASSERT_EQ (model0, model1);
  }
  
--- 4188,4193 ----
*************** test_canonicalization_3 ()
*** 8302,8317 ****
    tree x = build_global_decl ("x", integer_type_node);
    tree y = build_global_decl ("y", integer_type_node);
  
!   region_model model0;
    model0.add_constraint (x, GT_EXPR, int_3, NULL);
    model0.add_constraint (y, GT_EXPR, int_42, NULL);
  
!   region_model model1;
    model1.add_constraint (y, GT_EXPR, int_42, NULL);
    model1.add_constraint (x, GT_EXPR, int_3, NULL);
  
!   model0.canonicalize (NULL);
!   model1.canonicalize (NULL);
    ASSERT_EQ (model0, model1);
  }
  
--- 4205,4221 ----
    tree x = build_global_decl ("x", integer_type_node);
    tree y = build_global_decl ("y", integer_type_node);
  
!   region_model_manager mgr;
!   region_model model0 (&mgr);
    model0.add_constraint (x, GT_EXPR, int_3, NULL);
    model0.add_constraint (y, GT_EXPR, int_42, NULL);
  
!   region_model model1 (&mgr);
    model1.add_constraint (y, GT_EXPR, int_42, NULL);
    model1.add_constraint (x, GT_EXPR, int_3, NULL);
  
!   model0.canonicalize ();
!   model1.canonicalize ();
    ASSERT_EQ (model0, model1);
  }
  
*************** test_canonicalization_4 ()
*** 8324,8337 ****
    auto_vec<tree> csts;
    append_interesting_constants (&csts);
  
!   region_model model;
  
    unsigned i;
    tree cst;
    FOR_EACH_VEC_ELT (csts, i, cst)
      model.get_rvalue (cst, NULL);
  
!   model.canonicalize (NULL);
  }
  
  /* Assert that if we have two region_model instances
--- 4228,4242 ----
    auto_vec<tree> csts;
    append_interesting_constants (&csts);
  
!   region_model_manager mgr;
!   region_model model (&mgr);
  
    unsigned i;
    tree cst;
    FOR_EACH_VEC_ELT (csts, i, cst)
      model.get_rvalue (cst, NULL);
  
!   model.canonicalize ();
  }
  
  /* Assert that if we have two region_model instances
*************** test_canonicalization_4 ()
*** 8343,8354 ****
  
  static void
  assert_region_models_merge (tree expr, tree val_a, tree val_b,
! 			    region_model *out_merged_model,
! 			    svalue **out_merged_svalue)
  {
    test_region_model_context ctxt;
!   region_model model0;
!   region_model model1;
    if (val_a)
      model0.set_value (model0.get_lvalue (expr, &ctxt),
  		      model0.get_rvalue (val_a, &ctxt),
--- 4248,4261 ----
  
  static void
  assert_region_models_merge (tree expr, tree val_a, tree val_b,
! 			     region_model *out_merged_model,
! 			     const svalue **out_merged_svalue)
  {
+   program_point point (program_point::origin ());
    test_region_model_context ctxt;
!   region_model_manager *mgr = out_merged_model->get_manager ();
!   region_model model0 (mgr);
!   region_model model1 (mgr);
    if (val_a)
      model0.set_value (model0.get_lvalue (expr, &ctxt),
  		      model0.get_rvalue (val_a, &ctxt),
*************** assert_region_models_merge (tree expr, t
*** 8359,8368 ****
  		      &ctxt);
  
    /* They should be mergeable.  */
!   ASSERT_TRUE (model0.can_merge_with_p (model1, out_merged_model));
! 
!   svalue_id merged_svalue_sid = out_merged_model->get_rvalue (expr, &ctxt);
!   *out_merged_svalue = out_merged_model->get_svalue (merged_svalue_sid);
  }
  
  /* Verify that we can merge region_model instances.  */
--- 4266,4273 ----
  		      &ctxt);
  
    /* They should be mergeable.  */
!   ASSERT_TRUE (model0.can_merge_with_p (model1, point, out_merged_model));
!   *out_merged_svalue = out_merged_model->get_rvalue (expr, &ctxt);
  }
  
  /* Verify that we can merge region_model instances.  */
*************** test_state_merging ()
*** 8395,8406 ****
  		       get_identifier ("q"),
  		       ptr_type_node);
  
    {
!     region_model model0;
!     region_model model1;
!     region_model merged;
      /* Verify empty models can be merged.  */
!     ASSERT_TRUE (model0.can_merge_with_p (model1, &merged));
      ASSERT_EQ (model0, merged);
    }
  
--- 4300,4314 ----
  		       get_identifier ("q"),
  		       ptr_type_node);
  
+   program_point point (program_point::origin ());
+   region_model_manager mgr;
+ 
    {
!     region_model model0 (&mgr);
!     region_model model1 (&mgr);
!     region_model merged (&mgr);
      /* Verify empty models can be merged.  */
!     ASSERT_TRUE (model0.can_merge_with_p (model1, point, &merged));
      ASSERT_EQ (model0, merged);
    }
  
*************** test_state_merging ()
*** 8409,8421 ****
    /* TODO: verify that the merged model doesn't have a value for
       the global  */
    {
!     region_model model0;
!     region_model model1;
!     region_model merged;
      test_region_model_context ctxt;
      model0.add_constraint (x, EQ_EXPR, int_42, &ctxt);
      model1.add_constraint (x, EQ_EXPR, int_113, &ctxt);
!     ASSERT_TRUE (model0.can_merge_with_p (model1, &merged));
      ASSERT_NE (model0, merged);
      ASSERT_NE (model1, merged);
    }
--- 4317,4329 ----
    /* TODO: verify that the merged model doesn't have a value for
       the global  */
    {
!     region_model model0 (&mgr);
!     region_model model1 (&mgr);
!     region_model merged (&mgr);
      test_region_model_context ctxt;
      model0.add_constraint (x, EQ_EXPR, int_42, &ctxt);
      model1.add_constraint (x, EQ_EXPR, int_113, &ctxt);
!     ASSERT_TRUE (model0.can_merge_with_p (model1, point, &merged));
      ASSERT_NE (model0, merged);
      ASSERT_NE (model1, merged);
    }
*************** test_state_merging ()
*** 8423,8486 ****
    /* Verify handling of a PARM_DECL.  */
    {
      test_region_model_context ctxt;
!     region_model model0;
!     region_model model1;
      ASSERT_EQ (model0.get_stack_depth (), 0);
      model0.push_frame (DECL_STRUCT_FUNCTION (test_fndecl), NULL, &ctxt);
      ASSERT_EQ (model0.get_stack_depth (), 1);
-     ASSERT_EQ (model0.get_function_at_depth (0),
- 	       DECL_STRUCT_FUNCTION (test_fndecl));
      model1.push_frame (DECL_STRUCT_FUNCTION (test_fndecl), NULL, &ctxt);
  
!     svalue_id sid_a
!       = model0.set_to_new_unknown_value (model0.get_lvalue (a, &ctxt),
! 					 integer_type_node, &ctxt);
!     model1.set_to_new_unknown_value (model1.get_lvalue (a, &ctxt),
! 				     integer_type_node, &ctxt);
      ASSERT_EQ (model0, model1);
  
-     /* Check that get_value_by_name works for locals.  */
-     ASSERT_EQ (model0.get_value_by_name ("a"), sid_a);
- 
      /* They should be mergeable, and the result should be the same.  */
!     region_model merged;
!     ASSERT_TRUE (model0.can_merge_with_p (model1, &merged));
      ASSERT_EQ (model0, merged);
!     /* In particular, there should be an unknown value for "a".  */
!     svalue *merged_a_sval = merged.get_svalue (merged.get_rvalue (a, &ctxt));
!     ASSERT_EQ (merged_a_sval->get_kind (), SK_UNKNOWN);
    }
  
    /* Verify handling of a global.  */
    {
      test_region_model_context ctxt;
!     region_model model0;
!     region_model model1;
!     svalue_id sid_x
!       = model0.set_to_new_unknown_value (model0.get_lvalue (x, &ctxt),
! 					 integer_type_node, &ctxt);
!     model1.set_to_new_unknown_value (model1.get_lvalue (x, &ctxt),
! 				     integer_type_node, &ctxt);
!     ASSERT_EQ (model0, model1);
  
!     /* Check that get_value_by_name works for globals.  */
!     ASSERT_EQ (model0.get_value_by_name ("x"), sid_x);
  
      /* They should be mergeable, and the result should be the same.  */
!     region_model merged;
!     ASSERT_TRUE (model0.can_merge_with_p (model1, &merged));
      ASSERT_EQ (model0, merged);
!     /* In particular, there should be an unknown value for "x".  */
!     svalue *merged_x_sval = merged.get_svalue (merged.get_rvalue (x, &ctxt));
!     ASSERT_EQ (merged_x_sval->get_kind (), SK_UNKNOWN);
    }
  
    /* Use global-handling to verify various combinations of values.  */
  
    /* Two equal constant values.  */
    {
!     region_model merged;
!     svalue *merged_x_sval;
      assert_region_models_merge (x, int_42, int_42, &merged, &merged_x_sval);
  
      /* In particular, there should be a constant value for "x".  */
--- 4331,4381 ----
    /* Verify handling of a PARM_DECL.  */
    {
      test_region_model_context ctxt;
!     region_model model0 (&mgr);
!     region_model model1 (&mgr);
      ASSERT_EQ (model0.get_stack_depth (), 0);
      model0.push_frame (DECL_STRUCT_FUNCTION (test_fndecl), NULL, &ctxt);
      ASSERT_EQ (model0.get_stack_depth (), 1);
      model1.push_frame (DECL_STRUCT_FUNCTION (test_fndecl), NULL, &ctxt);
  
!     placeholder_svalue test_sval (integer_type_node, "test sval");
!     model0.set_value (model0.get_lvalue (a, &ctxt), &test_sval, &ctxt);
!     model1.set_value (model1.get_lvalue (a, &ctxt), &test_sval, &ctxt);
      ASSERT_EQ (model0, model1);
  
      /* They should be mergeable, and the result should be the same.  */
!     region_model merged (&mgr);
!     ASSERT_TRUE (model0.can_merge_with_p (model1, point, &merged));
      ASSERT_EQ (model0, merged);
!     /* In particular, "a" should have the placeholder value.  */
!     ASSERT_EQ (merged.get_rvalue (a, &ctxt), &test_sval);
    }
  
    /* Verify handling of a global.  */
    {
      test_region_model_context ctxt;
!     region_model model0 (&mgr);
!     region_model model1 (&mgr);
  
!     placeholder_svalue test_sval (integer_type_node, "test sval");
!     model0.set_value (model0.get_lvalue (x, &ctxt), &test_sval, &ctxt);
!     model1.set_value (model1.get_lvalue (x, &ctxt), &test_sval, &ctxt);
!     ASSERT_EQ (model0, model1);
  
      /* They should be mergeable, and the result should be the same.  */
!     region_model merged (&mgr);
!     ASSERT_TRUE (model0.can_merge_with_p (model1, point, &merged));
      ASSERT_EQ (model0, merged);
!     /* In particular, "x" should have the placeholder value.  */
!     ASSERT_EQ (merged.get_rvalue (x, &ctxt), &test_sval);
    }
  
    /* Use global-handling to verify various combinations of values.  */
  
    /* Two equal constant values.  */
    {
!     region_model merged (&mgr);
!     const svalue *merged_x_sval;
      assert_region_models_merge (x, int_42, int_42, &merged, &merged_x_sval);
  
      /* In particular, there should be a constant value for "x".  */
*************** test_state_merging ()
*** 8491,8518 ****
  
    /* Two non-equal constant values.  */
    {
!     region_model merged;
!     svalue *merged_x_sval;
      assert_region_models_merge (x, int_42, int_113, &merged, &merged_x_sval);
  
!     /* In particular, there should be an unknown value for "x".  */
!     ASSERT_EQ (merged_x_sval->get_kind (), SK_UNKNOWN);
    }
  
!   /* Uninit and constant.  */
    {
!     region_model merged;
!     svalue *merged_x_sval;
      assert_region_models_merge (x, NULL_TREE, int_113, &merged, &merged_x_sval);
  
      /* In particular, there should be an unknown value for "x".  */
      ASSERT_EQ (merged_x_sval->get_kind (), SK_UNKNOWN);
    }
  
!   /* Constant and uninit.  */
    {
!     region_model merged;
!     svalue *merged_x_sval;
      assert_region_models_merge (x, int_42, NULL_TREE, &merged, &merged_x_sval);
  
      /* In particular, there should be an unknown value for "x".  */
--- 4386,4413 ----
  
    /* Two non-equal constant values.  */
    {
!     region_model merged (&mgr);
!     const svalue *merged_x_sval;
      assert_region_models_merge (x, int_42, int_113, &merged, &merged_x_sval);
  
!     /* In particular, there should be a "widening" value for "x".  */
!     ASSERT_EQ (merged_x_sval->get_kind (), SK_WIDENING);
    }
  
!   /* Initial and constant.  */
    {
!     region_model merged (&mgr);
!     const svalue *merged_x_sval;
      assert_region_models_merge (x, NULL_TREE, int_113, &merged, &merged_x_sval);
  
      /* In particular, there should be an unknown value for "x".  */
      ASSERT_EQ (merged_x_sval->get_kind (), SK_UNKNOWN);
    }
  
!   /* Constant and initial.  */
    {
!     region_model merged (&mgr);
!     const svalue *merged_x_sval;
      assert_region_models_merge (x, int_42, NULL_TREE, &merged, &merged_x_sval);
  
      /* In particular, there should be an unknown value for "x".  */
*************** test_state_merging ()
*** 8530,8539 ****
  
    /* Pointers: non-NULL and non-NULL: ptr to a local.  */
    {
!     region_model model0;
      model0.push_frame (DECL_STRUCT_FUNCTION (test_fndecl), NULL, NULL);
-     model0.set_to_new_unknown_value (model0.get_lvalue (a, NULL),
- 				     integer_type_node, NULL);
      model0.set_value (model0.get_lvalue (p, NULL),
  		      model0.get_rvalue (addr_of_a, NULL), NULL);
  
--- 4425,4432 ----
  
    /* Pointers: non-NULL and non-NULL: ptr to a local.  */
    {
!     region_model model0 (&mgr);
      model0.push_frame (DECL_STRUCT_FUNCTION (test_fndecl), NULL, NULL);
      model0.set_value (model0.get_lvalue (p, NULL),
  		      model0.get_rvalue (addr_of_a, NULL), NULL);
  
*************** test_state_merging ()
*** 8541,8571 ****
      ASSERT_EQ (model0, model1);
  
      /* They should be mergeable, and the result should be the same.  */
!     region_model merged;
!     ASSERT_TRUE (model0.can_merge_with_p (model1, &merged));
      ASSERT_EQ (model0, merged);
    }
  
    /* Pointers: non-NULL and non-NULL: ptr to a global.  */
    {
!     region_model merged;
      /* p == &y in both input models.  */
!     svalue *merged_p_sval;
      assert_region_models_merge (p, addr_of_y, addr_of_y, &merged,
  				&merged_p_sval);
  
      /* We should get p == &y in the merged model.  */
      ASSERT_EQ (merged_p_sval->get_kind (), SK_REGION);
!     region_svalue *merged_p_ptr = merged_p_sval->dyn_cast_region_svalue ();
!     region_id merged_p_star_rid = merged_p_ptr->get_pointee ();
!     ASSERT_EQ (merged_p_star_rid, merged.get_lvalue (y, NULL));
    }
  
    /* Pointers: non-NULL ptrs to different globals: should be unknown.  */
    {
!     region_model merged;
!     /* x == &y vs x == &z in the input models.  */
!     svalue *merged_x_sval;
      assert_region_models_merge (x, addr_of_y, addr_of_z, &merged,
  				&merged_x_sval);
  
--- 4434,4467 ----
      ASSERT_EQ (model0, model1);
  
      /* They should be mergeable, and the result should be the same.  */
!     region_model merged (&mgr);
!     ASSERT_TRUE (model0.can_merge_with_p (model1, point, &merged));
      ASSERT_EQ (model0, merged);
    }
  
    /* Pointers: non-NULL and non-NULL: ptr to a global.  */
    {
!     region_model merged (&mgr);
      /* p == &y in both input models.  */
!     const svalue *merged_p_sval;
      assert_region_models_merge (p, addr_of_y, addr_of_y, &merged,
  				&merged_p_sval);
  
      /* We should get p == &y in the merged model.  */
      ASSERT_EQ (merged_p_sval->get_kind (), SK_REGION);
!     const region_svalue *merged_p_ptr
!       = merged_p_sval->dyn_cast_region_svalue ();
!     const region *merged_p_star_reg = merged_p_ptr->get_pointee ();
!     ASSERT_EQ (merged_p_star_reg, merged.get_lvalue (y, NULL));
    }
  
    /* Pointers: non-NULL ptrs to different globals: should be unknown.  */
    {
!     region_model merged (&mgr);
!     /* x == &y vs x == &z in the input models; these are actually casts
!        of the ptrs to "int".  */
!     const svalue *merged_x_sval;
!     // TODO:
      assert_region_models_merge (x, addr_of_y, addr_of_z, &merged,
  				&merged_x_sval);
  
*************** test_state_merging ()
*** 8576,8617 ****
    /* Pointers: non-NULL and non-NULL: ptr to a heap region.  */
    {
      test_region_model_context ctxt;
!     region_model model0;
!     region_id new_rid = model0.add_new_malloc_region ();
!     svalue_id ptr_sid
!       = model0.get_or_create_ptr_svalue (ptr_type_node, new_rid);
      model0.set_value (model0.get_lvalue (p, &ctxt),
! 		      ptr_sid, &ctxt);
!     model0.canonicalize (&ctxt);
  
      region_model model1 (model0);
  
      ASSERT_EQ (model0, model1);
  
!     region_model merged;
!     ASSERT_TRUE (model0.can_merge_with_p (model1, &merged));
! 
!     merged.canonicalize (&ctxt);
  
!     /* The merged model ought to be identical (after canonicalization,
!        at least).  */
      ASSERT_EQ (model0, merged);
    }
  
!   /* Two regions sharing the same unknown svalue should continue sharing
!      an unknown svalue after self-merger.  */
    {
      test_region_model_context ctxt;
!     region_model model0;
!     svalue_id sid
!       = model0.set_to_new_unknown_value (model0.get_lvalue (x, &ctxt),
! 					 integer_type_node, &ctxt);
!     model0.set_value (model0.get_lvalue (y, &ctxt), sid, &ctxt);
      region_model model1 (model0);
  
      /* They should be mergeable, and the result should be the same.  */
!     region_model merged;
!     ASSERT_TRUE (model0.can_merge_with_p (model1, &merged));
      ASSERT_EQ (model0, merged);
  
      /* In particular, we should have x == y.  */
--- 4472,4510 ----
    /* Pointers: non-NULL and non-NULL: ptr to a heap region.  */
    {
      test_region_model_context ctxt;
!     region_model model0 (&mgr);
!     tree size = build_int_cst (integer_type_node, 1024);
!     const svalue *size_sval = mgr.get_or_create_constant_svalue (size);
!     const region *new_reg = model0.create_region_for_heap_alloc (size_sval);
!     const svalue *ptr_sval = mgr.get_ptr_svalue (ptr_type_node, new_reg);
      model0.set_value (model0.get_lvalue (p, &ctxt),
! 		      ptr_sval, &ctxt);
  
      region_model model1 (model0);
  
      ASSERT_EQ (model0, model1);
  
!     region_model merged (&mgr);
!     ASSERT_TRUE (model0.can_merge_with_p (model1, point, &merged));
  
!     /* The merged model ought to be identical.  */
      ASSERT_EQ (model0, merged);
    }
  
!   /* Two regions sharing the same placeholder svalue should continue sharing
!      it after self-merger.  */
    {
      test_region_model_context ctxt;
!     region_model model0 (&mgr);
!     placeholder_svalue placeholder_sval (integer_type_node, "test");
!     model0.set_value (model0.get_lvalue (x, &ctxt),
! 		      &placeholder_sval, &ctxt);
!     model0.set_value (model0.get_lvalue (y, &ctxt), &placeholder_sval, &ctxt);
      region_model model1 (model0);
  
      /* They should be mergeable, and the result should be the same.  */
!     region_model merged (&mgr);
!     ASSERT_TRUE (model0.can_merge_with_p (model1, point, &merged));
      ASSERT_EQ (model0, merged);
  
      /* In particular, we should have x == y.  */
*************** test_state_merging ()
*** 8619,8644 ****
  	       tristate (tristate::TS_TRUE));
    }
  
- #if 0
    {
!     region_model model0;
!     region_model model1;
      test_region_model_context ctxt;
      model0.add_constraint (x, EQ_EXPR, int_42, &ctxt);
      model1.add_constraint (x, NE_EXPR, int_42, &ctxt);
!     ASSERT_TRUE (model0.can_merge_with_p (model1));
    }
  
    {
!     region_model model0;
!     region_model model1;
      test_region_model_context ctxt;
      model0.add_constraint (x, EQ_EXPR, int_42, &ctxt);
      model1.add_constraint (x, NE_EXPR, int_42, &ctxt);
      model1.add_constraint (x, EQ_EXPR, int_113, &ctxt);
!     ASSERT_TRUE (model0.can_merge_with_p (model1));
    }
- #endif
  
    // TODO: what can't we merge? need at least one such test
  
--- 4512,4537 ----
  	       tristate (tristate::TS_TRUE));
    }
  
    {
!     region_model model0 (&mgr);
!     region_model model1 (&mgr);
      test_region_model_context ctxt;
      model0.add_constraint (x, EQ_EXPR, int_42, &ctxt);
      model1.add_constraint (x, NE_EXPR, int_42, &ctxt);
!     region_model merged (&mgr);
!     ASSERT_TRUE (model0.can_merge_with_p (model1, point, &merged));
    }
  
    {
!     region_model model0 (&mgr);
!     region_model model1 (&mgr);
      test_region_model_context ctxt;
      model0.add_constraint (x, EQ_EXPR, int_42, &ctxt);
      model1.add_constraint (x, NE_EXPR, int_42, &ctxt);
      model1.add_constraint (x, EQ_EXPR, int_113, &ctxt);
!     region_model merged (&mgr);
!     ASSERT_TRUE (model0.can_merge_with_p (model1, point, &merged));
    }
  
    // TODO: what can't we merge? need at least one such test
  
*************** test_state_merging ()
*** 8646,8723 ****
       - heap regions
       - value merging:
         - every combination, but in particular
!           - pairs of regions
     */
  
    /* Views.  */
    {
      test_region_model_context ctxt;
!     region_model model0;
  
!     region_id x_rid = model0.get_lvalue (x, &ctxt);
!     region_id x_as_ptr = model0.get_or_create_view (x_rid, ptr_type_node,
! 						    &ctxt);
      model0.set_value (x_as_ptr, model0.get_rvalue (addr_of_y, &ctxt), &ctxt);
  
      region_model model1 (model0);
      ASSERT_EQ (model1, model0);
  
      /* They should be mergeable, and the result should be the same.  */
!     region_model merged;
!     ASSERT_TRUE (model0.can_merge_with_p (model1, &merged));
    }
  
    /* Verify that we can merge a model in which a local in an older stack
       frame points to a local in a more recent stack frame.  */
    {
!     region_model model0;
      model0.push_frame (DECL_STRUCT_FUNCTION (test_fndecl), NULL, NULL);
!     region_id q_in_first_frame = model0.get_lvalue (q, NULL);
  
      /* Push a second frame.  */
!     region_id rid_2nd_frame
        = model0.push_frame (DECL_STRUCT_FUNCTION (test_fndecl), NULL, NULL);
  
      /* Have a pointer in the older frame point to a local in the
         more recent frame.  */
!     svalue_id sid_ptr = model0.get_rvalue (addr_of_a, NULL);
!     model0.set_value (q_in_first_frame, sid_ptr, NULL);
  
      /* Verify that it's pointing at the newer frame.  */
!     region_id rid_pointee
!       = model0.get_svalue (sid_ptr)->dyn_cast_region_svalue ()->get_pointee ();
!     ASSERT_EQ (model0.get_region (rid_pointee)->get_parent (), rid_2nd_frame);
  
!     model0.canonicalize (NULL);
  
      region_model model1 (model0);
      ASSERT_EQ (model0, model1);
  
      /* They should be mergeable, and the result should be the same
         (after canonicalization, at least).  */
!     region_model merged;
!     ASSERT_TRUE (model0.can_merge_with_p (model1, &merged));
!     merged.canonicalize (NULL);
      ASSERT_EQ (model0, merged);
    }
  
    /* Verify that we can merge a model in which a local points to a global.  */
    {
!     region_model model0;
      model0.push_frame (DECL_STRUCT_FUNCTION (test_fndecl), NULL, NULL);
      model0.set_value (model0.get_lvalue (q, NULL),
  		      model0.get_rvalue (addr_of_y, NULL), NULL);
  
-     model0.canonicalize (NULL);
- 
      region_model model1 (model0);
      ASSERT_EQ (model0, model1);
  
      /* They should be mergeable, and the result should be the same
         (after canonicalization, at least).  */
!     region_model merged;
!     ASSERT_TRUE (model0.can_merge_with_p (model1, &merged));
!     merged.canonicalize (NULL);
      ASSERT_EQ (model0, merged);
    }
  }
--- 4539,4612 ----
       - heap regions
       - value merging:
         - every combination, but in particular
! 	   - pairs of regions
     */
  
    /* Views.  */
    {
      test_region_model_context ctxt;
!     region_model model0 (&mgr);
  
!     const region *x_reg = model0.get_lvalue (x, &ctxt);
!     const region *x_as_ptr = mgr.get_cast_region (x_reg, ptr_type_node);
      model0.set_value (x_as_ptr, model0.get_rvalue (addr_of_y, &ctxt), &ctxt);
  
      region_model model1 (model0);
      ASSERT_EQ (model1, model0);
  
      /* They should be mergeable, and the result should be the same.  */
!     region_model merged (&mgr);
!     ASSERT_TRUE (model0.can_merge_with_p (model1, point, &merged));
    }
  
    /* Verify that we can merge a model in which a local in an older stack
       frame points to a local in a more recent stack frame.  */
    {
!     region_model model0 (&mgr);
      model0.push_frame (DECL_STRUCT_FUNCTION (test_fndecl), NULL, NULL);
!     const region *q_in_first_frame = model0.get_lvalue (q, NULL);
  
      /* Push a second frame.  */
!     const region *reg_2nd_frame
        = model0.push_frame (DECL_STRUCT_FUNCTION (test_fndecl), NULL, NULL);
  
      /* Have a pointer in the older frame point to a local in the
         more recent frame.  */
!     const svalue *sval_ptr = model0.get_rvalue (addr_of_a, NULL);
!     model0.set_value (q_in_first_frame, sval_ptr, NULL);
  
      /* Verify that it's pointing at the newer frame.  */
!     const region *reg_pointee
!       = sval_ptr->dyn_cast_region_svalue ()->get_pointee ();
!     ASSERT_EQ (reg_pointee->get_parent_region (), reg_2nd_frame);
  
!     model0.canonicalize ();
  
      region_model model1 (model0);
      ASSERT_EQ (model0, model1);
  
      /* They should be mergeable, and the result should be the same
         (after canonicalization, at least).  */
!     region_model merged (&mgr);
!     ASSERT_TRUE (model0.can_merge_with_p (model1, point, &merged));
!     merged.canonicalize ();
      ASSERT_EQ (model0, merged);
    }
  
    /* Verify that we can merge a model in which a local points to a global.  */
    {
!     region_model model0 (&mgr);
      model0.push_frame (DECL_STRUCT_FUNCTION (test_fndecl), NULL, NULL);
      model0.set_value (model0.get_lvalue (q, NULL),
  		      model0.get_rvalue (addr_of_y, NULL), NULL);
  
      region_model model1 (model0);
      ASSERT_EQ (model0, model1);
  
      /* They should be mergeable, and the result should be the same
         (after canonicalization, at least).  */
!     region_model merged (&mgr);
!     ASSERT_TRUE (model0.can_merge_with_p (model1, point, &merged));
      ASSERT_EQ (model0, merged);
    }
  }
*************** test_constraint_merging ()
*** 8735,8762 ****
    tree z = build_global_decl ("z", integer_type_node);
    tree n = build_global_decl ("n", integer_type_node);
  
    test_region_model_context ctxt;
  
    /* model0: 0 <= (x == y) < n.  */
!   region_model model0;
!   model0.set_to_new_unknown_value (model0.get_lvalue (x, &ctxt),
! 				   integer_type_node, &ctxt);
    model0.add_constraint (x, EQ_EXPR, y, &ctxt);
    model0.add_constraint (x, GE_EXPR, int_0, NULL);
    model0.add_constraint (x, LT_EXPR, n, NULL);
  
    /* model1: z != 5 && (0 <= x < n).  */
!   region_model model1;
!   model1.set_to_new_unknown_value (model1.get_lvalue (x, &ctxt),
! 				   integer_type_node, &ctxt);
    model1.add_constraint (z, NE_EXPR, int_5, NULL);
    model1.add_constraint (x, GE_EXPR, int_0, NULL);
    model1.add_constraint (x, LT_EXPR, n, NULL);
  
    /* They should be mergeable; the merged constraints should
       be: (0 <= x < n).  */
!   region_model merged;
!   ASSERT_TRUE (model0.can_merge_with_p (model1, &merged));
  
    ASSERT_EQ (merged.eval_condition (x, GE_EXPR, int_0, &ctxt),
  	     tristate (tristate::TS_TRUE));
--- 4624,4649 ----
    tree z = build_global_decl ("z", integer_type_node);
    tree n = build_global_decl ("n", integer_type_node);
  
+   region_model_manager mgr;
    test_region_model_context ctxt;
  
    /* model0: 0 <= (x == y) < n.  */
!   region_model model0 (&mgr);
    model0.add_constraint (x, EQ_EXPR, y, &ctxt);
    model0.add_constraint (x, GE_EXPR, int_0, NULL);
    model0.add_constraint (x, LT_EXPR, n, NULL);
  
    /* model1: z != 5 && (0 <= x < n).  */
!   region_model model1 (&mgr);
    model1.add_constraint (z, NE_EXPR, int_5, NULL);
    model1.add_constraint (x, GE_EXPR, int_0, NULL);
    model1.add_constraint (x, LT_EXPR, n, NULL);
  
    /* They should be mergeable; the merged constraints should
       be: (0 <= x < n).  */
!   program_point point (program_point::origin ());
!   region_model merged (&mgr);
!   ASSERT_TRUE (model0.can_merge_with_p (model1, point, &merged));
  
    ASSERT_EQ (merged.eval_condition (x, GE_EXPR, int_0, &ctxt),
  	     tristate (tristate::TS_TRUE));
*************** test_constraint_merging ()
*** 8769,8797 ****
  	     tristate (tristate::TS_UNKNOWN));
  }
  
  /* Verify that if we mark a pointer to a malloc-ed region as non-NULL,
     all cast pointers to that region are also known to be non-NULL.  */
  
  static void
  test_malloc_constraints ()
  {
!   region_model model;
    tree p = build_global_decl ("p", ptr_type_node);
    tree char_star = build_pointer_type (char_type_node);
    tree q = build_global_decl ("q", char_star);
    tree null_ptr = build_int_cst (ptr_type_node, 0);
  
!   region_id rid = model.add_new_malloc_region ();
!   svalue_id sid = model.get_or_create_ptr_svalue (ptr_type_node, rid);
!   model.set_value (model.get_lvalue (p, NULL), sid, NULL);
    model.set_value (q, p, NULL);
  
-   /* We should have a symbolic_region with m_possibly_null: true.  */
-   region *pointee = model.get_region (rid);
-   symbolic_region *sym_reg = pointee->dyn_cast_symbolic_region ();
-   ASSERT_NE (sym_reg, NULL);
-   ASSERT_TRUE (sym_reg->m_possibly_null);
- 
    ASSERT_CONDITION_UNKNOWN (model, p, NE_EXPR, null_ptr);
    ASSERT_CONDITION_UNKNOWN (model, p, EQ_EXPR, null_ptr);
    ASSERT_CONDITION_UNKNOWN (model, q, NE_EXPR, null_ptr);
--- 4656,4874 ----
  	     tristate (tristate::TS_UNKNOWN));
  }
  
+ /* Verify that widening_svalue::eval_condition_without_cm works as
+    expected.  */
+ 
+ static void
+ test_widening_constraints ()
+ {
+   program_point point (program_point::origin ());
+   tree int_0 = build_int_cst (integer_type_node, 0);
+   tree int_m1 = build_int_cst (integer_type_node, -1);
+   tree int_1 = build_int_cst (integer_type_node, 1);
+   tree int_256 = build_int_cst (integer_type_node, 256);
+   region_model_manager mgr;
+   test_region_model_context ctxt;
+   const svalue *int_0_sval = mgr.get_or_create_constant_svalue (int_0);
+   const svalue *int_1_sval = mgr.get_or_create_constant_svalue (int_1);
+   const svalue *w_zero_then_one_sval
+     = mgr.get_or_create_widening_svalue (integer_type_node, point,
+ 					  int_0_sval, int_1_sval);
+   const widening_svalue *w_zero_then_one
+     = w_zero_then_one_sval->dyn_cast_widening_svalue ();
+   ASSERT_EQ (w_zero_then_one->get_direction (),
+ 	     widening_svalue::DIR_ASCENDING);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (LT_EXPR, int_m1),
+ 	     tristate::TS_FALSE);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (LT_EXPR, int_0),
+ 	     tristate::TS_FALSE);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (LT_EXPR, int_1),
+ 	     tristate::TS_UNKNOWN);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (LT_EXPR, int_256),
+ 	     tristate::TS_UNKNOWN);
+ 
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (LE_EXPR, int_m1),
+ 	     tristate::TS_FALSE);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (LE_EXPR, int_0),
+ 	     tristate::TS_UNKNOWN);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (LE_EXPR, int_1),
+ 	     tristate::TS_UNKNOWN);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (LE_EXPR, int_256),
+ 	     tristate::TS_UNKNOWN);
+ 
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (GT_EXPR, int_m1),
+ 	     tristate::TS_TRUE);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (GT_EXPR, int_0),
+ 	     tristate::TS_UNKNOWN);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (GT_EXPR, int_1),
+ 	     tristate::TS_UNKNOWN);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (GT_EXPR, int_256),
+ 	     tristate::TS_UNKNOWN);
+ 
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (GE_EXPR, int_m1),
+ 	     tristate::TS_TRUE);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (GE_EXPR, int_0),
+ 	     tristate::TS_TRUE);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (GE_EXPR, int_1),
+ 	     tristate::TS_UNKNOWN);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (GE_EXPR, int_256),
+ 	     tristate::TS_UNKNOWN);
+ 
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (EQ_EXPR, int_m1),
+ 	     tristate::TS_FALSE);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (EQ_EXPR, int_0),
+ 	     tristate::TS_UNKNOWN);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (EQ_EXPR, int_1),
+ 	     tristate::TS_UNKNOWN);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (EQ_EXPR, int_256),
+ 	     tristate::TS_UNKNOWN);
+ 
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (NE_EXPR, int_m1),
+ 	     tristate::TS_TRUE);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (NE_EXPR, int_0),
+ 	     tristate::TS_UNKNOWN);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (NE_EXPR, int_1),
+ 	     tristate::TS_UNKNOWN);
+   ASSERT_EQ (w_zero_then_one->eval_condition_without_cm (NE_EXPR, int_256),
+ 	     tristate::TS_UNKNOWN);
+ }
+ 
+ /* Verify merging constraints for states simulating successive iterations
+    of a loop.
+    Simulate:
+      for (i = 0; i < 256; i++)
+        [...body...]
+    i.e. this gimple:.
+      i_15 = 0;
+      goto <bb 4>;
+ 
+    <bb 4> :
+      i_11 = PHI <i_15(2), i_23(3)>
+      if (i_11 <= 255)
+        goto <bb 3>;
+      else
+        goto [AFTER LOOP]
+ 
+    <bb 3> :
+      [LOOP BODY]
+      i_23 = i_11 + 1;
+ 
+    and thus these ops (and resultant states):
+      i_11 = PHI()
+        {i_11: 0}
+      add_constraint (i_11 <= 255) [for the true edge]
+        {i_11: 0}  [constraint was a no-op]
+      i_23 = i_11 + 1;
+        {i_22: 1}
+      i_11 = PHI()
+        {i_11: WIDENED (at phi, 0, 1)}
+      add_constraint (i_11 <= 255) [for the true edge]
+        {i_11: WIDENED (at phi, 0, 1); WIDENED <= 255}
+      i_23 = i_11 + 1;
+        {i_23: (WIDENED (at phi, 0, 1) + 1); WIDENED <= 255}
+      i_11 = PHI(); merge with state at phi above
+        {i_11: WIDENED (at phi, 0, 1); WIDENED <= 256}
+          [changing meaning of "WIDENED" here]
+      if (i_11 <= 255)
+         T: {i_11: WIDENED (at phi, 0, 1); WIDENED <= 255}; cache hit
+         F: {i_11: 256}
+  */
+ 
+ static void
+ test_iteration_1 ()
+ {
+   program_point point (program_point::origin ());
+ 
+   tree int_0 = build_int_cst (integer_type_node, 0);
+   tree int_1 = build_int_cst (integer_type_node, 1);
+   tree int_256 = build_int_cst (integer_type_node, 256);
+   tree int_257 = build_int_cst (integer_type_node, 257);
+   tree i = build_global_decl ("i", integer_type_node);
+ 
+   region_model_manager mgr;
+   test_region_model_context ctxt;
+ 
+   /* model0: i: 0.  */
+   region_model model0 (&mgr);
+   model0.set_value (i, int_0, &ctxt);
+ 
+   /* model1: i: 1.  */
+   region_model model1 (&mgr);
+   model1.set_value (i, int_1, &ctxt);
+ 
+   /* Should merge "i" to a widened value.  */
+   region_model model2 (&mgr);
+   ASSERT_TRUE (model1.can_merge_with_p (model0, point, &model2));
+   const svalue *merged_i = model2.get_rvalue (i, &ctxt);
+   ASSERT_EQ (merged_i->get_kind (), SK_WIDENING);
+   const widening_svalue *w = merged_i->dyn_cast_widening_svalue ();
+   ASSERT_EQ (w->get_direction (), widening_svalue::DIR_ASCENDING);
+ 
+   /* Add constraint: i < 256  */
+   model2.add_constraint (i, LT_EXPR, int_256, &ctxt);
+   ASSERT_EQ (model2.eval_condition (i, LT_EXPR, int_256, &ctxt),
+ 	     tristate (tristate::TS_TRUE));
+   ASSERT_EQ (model2.eval_condition (i, GE_EXPR, int_0, &ctxt),
+ 	     tristate (tristate::TS_TRUE));
+ 
+   /* Try merging with the initial state.  */
+   region_model model3 (&mgr);
+   ASSERT_TRUE (model2.can_merge_with_p (model0, point, &model3));
+   /* Merging the merged value with the initial value should be idempotent,
+      so that the analysis converges.  */
+   ASSERT_EQ (model3.get_rvalue (i, &ctxt), merged_i);
+   /* Merger of 0 and a widening value with constraint < CST
+      should retain the constraint, even though it was implicit
+      for the 0 case.  */
+   ASSERT_EQ (model3.eval_condition (i, LT_EXPR, int_256, &ctxt),
+ 	     tristate (tristate::TS_TRUE));
+   /* ...and we should have equality: the analysis should have converged.  */
+   ASSERT_EQ (model3, model2);
+ 
+   /* "i_23 = i_11 + 1;"  */
+   region_model model4 (model3);
+   ASSERT_EQ (model4, model2);
+   model4.set_value (i, build2 (PLUS_EXPR, integer_type_node, i, int_1), &ctxt);
+   const svalue *plus_one = model4.get_rvalue (i, &ctxt);
+   ASSERT_EQ (plus_one->get_kind (), SK_BINOP);
+ 
+   /* Try merging with the "i: 1" state.  */
+   region_model model5 (&mgr);
+   ASSERT_TRUE (model4.can_merge_with_p (model1, point, &model5));
+   ASSERT_EQ (model5.get_rvalue (i, &ctxt), plus_one);
+   ASSERT_EQ (model5, model4);
+ 
+   /* "i_11 = PHI();" merge with state at phi above.
+      For i, we should have a merger of WIDENING with WIDENING + 1,
+      and this should be WIDENING again.  */
+   region_model model6 (&mgr);
+   ASSERT_TRUE (model5.can_merge_with_p (model2, point, &model6));
+   const svalue *merged_widening = model6.get_rvalue (i, &ctxt);
+   ASSERT_EQ (merged_widening->get_kind (), SK_WIDENING);
+ 
+   ASSERT_CONDITION_TRUE (model6, i, LT_EXPR, int_257);
+ }
+ 
  /* Verify that if we mark a pointer to a malloc-ed region as non-NULL,
     all cast pointers to that region are also known to be non-NULL.  */
  
  static void
  test_malloc_constraints ()
  {
!   region_model_manager mgr;
!   region_model model (&mgr);
    tree p = build_global_decl ("p", ptr_type_node);
    tree char_star = build_pointer_type (char_type_node);
    tree q = build_global_decl ("q", char_star);
    tree null_ptr = build_int_cst (ptr_type_node, 0);
  
!   const svalue *size_in_bytes
!     = mgr.get_or_create_unknown_svalue (integer_type_node);
!   const region *reg = model.create_region_for_heap_alloc (size_in_bytes);
!   const svalue *sval = mgr.get_ptr_svalue (ptr_type_node, reg);
!   model.set_value (model.get_lvalue (p, NULL), sval, NULL);
    model.set_value (q, p, NULL);
  
    ASSERT_CONDITION_UNKNOWN (model, p, NE_EXPR, null_ptr);
    ASSERT_CONDITION_UNKNOWN (model, p, EQ_EXPR, null_ptr);
    ASSERT_CONDITION_UNKNOWN (model, q, NE_EXPR, null_ptr);
*************** test_malloc_constraints ()
*** 8799,8813 ****
  
    model.add_constraint (p, NE_EXPR, null_ptr, NULL);
  
-   /* Adding the constraint should have cleared m_possibly_null.  */
-   ASSERT_FALSE (sym_reg->m_possibly_null);
- 
    ASSERT_CONDITION_TRUE (model, p, NE_EXPR, null_ptr);
    ASSERT_CONDITION_FALSE (model, p, EQ_EXPR, null_ptr);
    ASSERT_CONDITION_TRUE (model, q, NE_EXPR, null_ptr);
    ASSERT_CONDITION_FALSE (model, q, EQ_EXPR, null_ptr);
  }
  
  /* Run all of the selftests within this file.  */
  
  void
--- 4876,5167 ----
  
    model.add_constraint (p, NE_EXPR, null_ptr, NULL);
  
    ASSERT_CONDITION_TRUE (model, p, NE_EXPR, null_ptr);
    ASSERT_CONDITION_FALSE (model, p, EQ_EXPR, null_ptr);
    ASSERT_CONDITION_TRUE (model, q, NE_EXPR, null_ptr);
    ASSERT_CONDITION_FALSE (model, q, EQ_EXPR, null_ptr);
  }
  
+ /* Smoketest of getting and setting the value of a variable.  */
+ 
+ static void
+ test_var ()
+ {
+   /* "int i;"  */
+   tree i = build_global_decl ("i", integer_type_node);
+ 
+   tree int_17 = build_int_cst (integer_type_node, 17);
+   tree int_m3 = build_int_cst (integer_type_node, -3);
+ 
+   region_model_manager mgr;
+   region_model model (&mgr);
+ 
+   const region *i_reg = model.get_lvalue (i, NULL);
+   ASSERT_EQ (i_reg->get_kind (), RK_DECL);
+ 
+   /* Reading "i" should give a symbolic "initial value".  */
+   const svalue *sval_init = model.get_rvalue (i, NULL);
+   ASSERT_EQ (sval_init->get_kind (), SK_INITIAL);
+   ASSERT_EQ (sval_init->dyn_cast_initial_svalue ()->get_region (), i_reg);
+   /* ..and doing it again should give the same "initial value".  */
+   ASSERT_EQ (model.get_rvalue (i, NULL), sval_init);
+ 
+   /* "i = 17;".  */
+   model.set_value (i, int_17, NULL);
+   ASSERT_EQ (model.get_rvalue (i, NULL),
+ 	     model.get_rvalue (int_17, NULL));
+ 
+   /* "i = -3;".  */
+   model.set_value (i, int_m3, NULL);
+   ASSERT_EQ (model.get_rvalue (i, NULL),
+ 	     model.get_rvalue (int_m3, NULL));
+ 
+   /* Verify get_offset for "i".  */
+   {
+     region_offset offset = i_reg->get_offset ();
+     ASSERT_EQ (offset.get_base_region (), i_reg);
+     ASSERT_EQ (offset.get_bit_offset (), 0);
+   }
+ }
+ 
+ static void
+ test_array_2 ()
+ {
+   /* "int arr[10];"  */
+   tree tlen = size_int (10);
+   tree arr_type
+     = build_array_type (integer_type_node, build_index_type (tlen));
+   tree arr = build_global_decl ("arr", arr_type);
+ 
+   /* "int i;"  */
+   tree i = build_global_decl ("i", integer_type_node);
+ 
+   tree int_0 = build_int_cst (integer_type_node, 0);
+   tree int_1 = build_int_cst (integer_type_node, 1);
+ 
+   tree arr_0 = build4 (ARRAY_REF, integer_type_node,
+ 		       arr, int_0, NULL_TREE, NULL_TREE);
+   tree arr_1 = build4 (ARRAY_REF, integer_type_node,
+ 		       arr, int_1, NULL_TREE, NULL_TREE);
+   tree arr_i = build4 (ARRAY_REF, integer_type_node,
+ 		       arr, i, NULL_TREE, NULL_TREE);
+ 
+   tree int_17 = build_int_cst (integer_type_node, 17);
+   tree int_42 = build_int_cst (integer_type_node, 42);
+   tree int_m3 = build_int_cst (integer_type_node, -3);
+ 
+   region_model_manager mgr;
+   region_model model (&mgr);
+   /* "arr[0] = 17;".  */
+   model.set_value (arr_0, int_17, NULL);
+   /* "arr[1] = -3;".  */
+   model.set_value (arr_1, int_m3, NULL);
+ 
+   ASSERT_EQ (model.get_rvalue (arr_0, NULL), model.get_rvalue (int_17, NULL));
+   ASSERT_EQ (model.get_rvalue (arr_1, NULL), model.get_rvalue (int_m3, NULL));
+ 
+   /* Overwrite a pre-existing binding: "arr[1] = 42;".  */
+   model.set_value (arr_1, int_42, NULL);
+   ASSERT_EQ (model.get_rvalue (arr_1, NULL), model.get_rvalue (int_42, NULL));
+ 
+   /* Verify get_offset for "arr[0]".  */
+   {
+     const region *arr_0_reg = model.get_lvalue (arr_0, NULL);
+     region_offset offset = arr_0_reg->get_offset ();
+     ASSERT_EQ (offset.get_base_region (), model.get_lvalue (arr, NULL));
+     ASSERT_EQ (offset.get_bit_offset (), 0);
+   }
+ 
+   /* Verify get_offset for "arr[1]".  */
+   {
+     const region *arr_1_reg = model.get_lvalue (arr_1, NULL);
+     region_offset offset = arr_1_reg->get_offset ();
+     ASSERT_EQ (offset.get_base_region (), model.get_lvalue (arr, NULL));
+     ASSERT_EQ (offset.get_bit_offset (), INT_TYPE_SIZE);
+   }
+ 
+   /* "arr[i] = i;" - this should remove the earlier bindings.  */
+   model.set_value (arr_i, i, NULL);
+   ASSERT_EQ (model.get_rvalue (arr_i, NULL), model.get_rvalue (i, NULL));
+   ASSERT_EQ (model.get_rvalue (arr_0, NULL)->get_kind (), SK_UNKNOWN);
+ 
+   /* "arr[0] = 17;" - this should remove the arr[i] binding.  */
+   model.set_value (arr_0, int_17, NULL);
+   ASSERT_EQ (model.get_rvalue (arr_0, NULL), model.get_rvalue (int_17, NULL));
+   ASSERT_EQ (model.get_rvalue (arr_i, NULL)->get_kind (), SK_UNKNOWN);
+ }
+ 
+ /* Smoketest of dereferencing a pointer via MEM_REF.  */
+ 
+ static void
+ test_mem_ref ()
+ {
+   /*
+     x = 17;
+     p = &x;
+     *p;
+    */
+   tree x = build_global_decl ("x", integer_type_node);
+   tree int_star = build_pointer_type (integer_type_node);
+   tree p = build_global_decl ("p", int_star);
+ 
+   tree int_17 = build_int_cst (integer_type_node, 17);
+   tree addr_of_x = build1 (ADDR_EXPR, int_star, x);
+   tree offset_0 = build_int_cst (integer_type_node, 0);
+   tree star_p = build2 (MEM_REF, integer_type_node, p, offset_0);
+ 
+   region_model_manager mgr;
+   region_model model (&mgr);
+ 
+   /* "x = 17;".  */
+   model.set_value (x, int_17, NULL);
+ 
+   /* "p = &x;".  */
+   model.set_value (p, addr_of_x, NULL);
+ 
+   const svalue *sval = model.get_rvalue (star_p, NULL);
+   ASSERT_EQ (sval->maybe_get_constant (), int_17);
+ }
+ 
+ /* Test for a POINTER_PLUS_EXPR followed by a MEM_REF.
+    Analogous to this code:
+      void test_6 (int a[10])
+      {
+        __analyzer_eval (a[3] == 42); [should be UNKNOWN]
+        a[3] = 42;
+        __analyzer_eval (a[3] == 42); [should be TRUE]
+      }
+    from data-model-1.c, which looks like this at the gimple level:
+        # __analyzer_eval (a[3] == 42); [should be UNKNOWN]
+        int *_1 = a_10(D) + 12;   # POINTER_PLUS_EXPR
+        int _2 = *_1;             # MEM_REF
+        _Bool _3 = _2 == 42;
+        int _4 = (int) _3;
+        __analyzer_eval (_4);
+ 
+        # a[3] = 42;
+        int *_5 = a_10(D) + 12;   # POINTER_PLUS_EXPR
+        *_5 = 42;                 # MEM_REF
+ 
+        # __analyzer_eval (a[3] == 42); [should be TRUE]
+        int *_6 = a_10(D) + 12;   # POINTER_PLUS_EXPR
+        int _7 = *_6;             # MEM_REF
+        _Bool _8 = _7 == 42;
+        int _9 = (int) _8;
+        __analyzer_eval (_9);  */
+ 
+ static void
+ test_POINTER_PLUS_EXPR_then_MEM_REF ()
+ {
+   tree int_star = build_pointer_type (integer_type_node);
+   tree a = build_global_decl ("a", int_star);
+   tree offset_12 = build_int_cst (size_type_node, 12);
+   tree pointer_plus_expr = build2 (POINTER_PLUS_EXPR, int_star, a, offset_12);
+   tree offset_0 = build_int_cst (integer_type_node, 0);
+   tree mem_ref = build2 (MEM_REF, integer_type_node,
+ 			 pointer_plus_expr, offset_0);
+   region_model_manager mgr;
+   region_model m (&mgr);
+ 
+   tree int_42 = build_int_cst (integer_type_node, 42);
+   m.set_value (mem_ref, int_42, NULL);
+   ASSERT_EQ (m.get_rvalue (mem_ref, NULL)->maybe_get_constant (), int_42);
+ }
+ 
+ /* Verify that malloc works.  */
+ 
+ static void
+ test_malloc ()
+ {
+   tree int_star = build_pointer_type (integer_type_node);
+   tree p = build_global_decl ("p", int_star);
+   tree n = build_global_decl ("n", integer_type_node);
+   tree n_times_4 = build2 (MULT_EXPR, size_type_node,
+ 			   n, build_int_cst (size_type_node, 4));
+ 
+   region_model_manager mgr;
+   test_region_model_context ctxt;
+   region_model model (&mgr);
+ 
+   /* "p = malloc (n * 4);".  */
+   const svalue *size_sval = model.get_rvalue (n_times_4, &ctxt);
+   const region *reg = model.create_region_for_heap_alloc (size_sval);
+   const svalue *ptr = mgr.get_ptr_svalue (int_star, reg);
+   model.set_value (model.get_lvalue (p, &ctxt), ptr, &ctxt);
+   // TODO: verify dynamic extents
+ }
+ 
+ /* Verify that alloca works.  */
+ 
+ static void
+ test_alloca ()
+ {
+   auto_vec <tree> param_types;
+   tree fndecl = make_fndecl (integer_type_node,
+ 			     "test_fn",
+ 			     param_types);
+   allocate_struct_function (fndecl, true);
+ 
+ 
+   tree int_star = build_pointer_type (integer_type_node);
+   tree p = build_global_decl ("p", int_star);
+   tree n = build_global_decl ("n", integer_type_node);
+   tree n_times_4 = build2 (MULT_EXPR, size_type_node,
+ 			   n, build_int_cst (size_type_node, 4));
+ 
+   region_model_manager mgr;
+   test_region_model_context ctxt;
+   region_model model (&mgr);
+ 
+   /* Push stack frame.  */
+   const region *frame_reg
+     = model.push_frame (DECL_STRUCT_FUNCTION (fndecl),
+ 			NULL, &ctxt);
+   /* "p = alloca (n * 4);".  */
+   const svalue *size_sval = model.get_rvalue (n_times_4, &ctxt);
+   const region *reg = model.create_region_for_alloca (size_sval);
+   ASSERT_EQ (reg->get_parent_region (), frame_reg);
+   const svalue *ptr = mgr.get_ptr_svalue (int_star, reg);
+   model.set_value (model.get_lvalue (p, &ctxt), ptr, &ctxt);
+   // TODO: verify dynamic extents
+ 
+   /* Verify that the pointers to the alloca region are replaced by
+      poisoned values when the frame is popped.  */
+   model.pop_frame (NULL, NULL, &ctxt);
+   ASSERT_EQ (model.get_rvalue (p, &ctxt)->get_kind (), SK_POISONED);
+ }
+ 
+ /* Verify that svalue::involves_p works.  */
+ 
+ static void
+ test_involves_p ()
+ {
+   region_model_manager mgr;
+   tree int_star = build_pointer_type (integer_type_node);
+   tree p = build_global_decl ("p", int_star);
+   tree q = build_global_decl ("q", int_star);
+ 
+   test_region_model_context ctxt;
+   region_model model (&mgr);
+   const svalue *p_init = model.get_rvalue (p, &ctxt);
+   const svalue *q_init = model.get_rvalue (q, &ctxt);
+ 
+   ASSERT_TRUE (p_init->involves_p (p_init));
+   ASSERT_FALSE (p_init->involves_p (q_init));
+ 
+   const region *star_p_reg = mgr.get_symbolic_region (p_init);
+   const region *star_q_reg = mgr.get_symbolic_region (q_init);
+ 
+   const svalue *init_star_p = mgr.get_or_create_initial_value (star_p_reg);
+   const svalue *init_star_q = mgr.get_or_create_initial_value (star_q_reg);
+ 
+   ASSERT_TRUE (init_star_p->involves_p (p_init));
+   ASSERT_FALSE (p_init->involves_p (init_star_p));
+   ASSERT_FALSE (init_star_p->involves_p (q_init));
+   ASSERT_TRUE (init_star_q->involves_p (q_init));
+   ASSERT_FALSE (init_star_q->involves_p (p_init));
+ }
+ 
  /* Run all of the selftests within this file.  */
  
  void
*************** analyzer_region_model_cc_tests ()
*** 8815,8839 ****
  {
    test_tree_cmp_on_constants ();
    test_dump ();
!   test_dump_2 ();
!   test_dump_3 ();
    test_get_representative_tree ();
    test_unique_constants ();
!   test_svalue_equality ();
!   test_region_equality ();
!   test_purging_by_criteria ();
!   test_purge_unused_svalues ();
    test_assignment ();
    test_compound_assignment ();
    test_stack_frames ();
    test_get_representative_path_var ();
!   test_canonicalization_1 ();
    test_canonicalization_2 ();
    test_canonicalization_3 ();
    test_canonicalization_4 ();
    test_state_merging ();
    test_constraint_merging ();
    test_malloc_constraints ();
  }
  
  } // namespace selftest
--- 5169,5204 ----
  {
    test_tree_cmp_on_constants ();
    test_dump ();
!   test_struct ();
!   test_array_1 ();
    test_get_representative_tree ();
    test_unique_constants ();
!   test_unique_unknowns ();
!   test_initial_svalue_folding ();
!   test_unaryop_svalue_folding ();
!   test_binop_svalue_folding ();
!   test_sub_svalue_folding ();
!   test_descendent_of_p ();
    test_assignment ();
    test_compound_assignment ();
    test_stack_frames ();
    test_get_representative_path_var ();
!   test_equality_1 ();
    test_canonicalization_2 ();
    test_canonicalization_3 ();
    test_canonicalization_4 ();
    test_state_merging ();
    test_constraint_merging ();
+   test_widening_constraints ();
+   test_iteration_1 ();
    test_malloc_constraints ();
+   test_var ();
+   test_array_2 ();
+   test_mem_ref ();
+   test_POINTER_PLUS_EXPR_then_MEM_REF ();
+   test_malloc ();
+   test_alloca ();
+   test_involves_p ();
  }
  
  } // namespace selftest
diff -Nrcpad gcc-10.3.0/gcc/analyzer/region-model.h gcc-11.1.0/gcc/analyzer/region-model.h
*** gcc-10.3.0/gcc/analyzer/region-model.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/region-model.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Classes for modeling the state of memory.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for modeling the state of memory.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 26,282 ****
        (Zhongxing Xu, Ted Kremenek, and Jian Zhang)
       http://lcs.ios.ac.cn/~xuzb/canalyze/memmodel.pdf  */
  
! /* A tree, extended with stack frame information for locals, so that
!    we can distinguish between different values of locals within a potentially
!    recursive callstack.  */
! // TODO: would this be better as a new tree code?
  
  using namespace ana;
  
- namespace ana {
- 
- class path_var
- {
- public:
-   path_var (tree t, int stack_depth)
-   : m_tree (t), m_stack_depth (stack_depth)
-   {
-     // TODO: ignore stack depth for globals and constants
-   }
- 
-   bool operator== (const path_var &other) const
-   {
-     return (m_tree == other.m_tree
- 	    && m_stack_depth == other.m_stack_depth);
-   }
- 
-   void dump (pretty_printer *pp) const;
- 
-   tree m_tree;
-   int m_stack_depth; // or -1 for globals?
- };
- 
- } // namespace ana
- 
  namespace inchash
  {
    extern void add_path_var (path_var pv, hash &hstate);
  } // namespace inchash
  
- 
  namespace ana {
  
- /* A region_model is effectively a graph of regions and symbolic values.
-    We store per-model IDs rather than pointers to make it easier to clone
-    and to compare graphs.  */
- 
- /* An ID for an svalue within a region_model.  Internally, this is an index
-    into a vector of svalue * within the region_model.  */
- 
- class svalue_id
- {
- public:
-   static svalue_id null () { return svalue_id (-1); }
- 
-   svalue_id () : m_idx (-1) {}
- 
-   bool operator== (const svalue_id &other) const
-   {
-     return m_idx == other.m_idx;
-   }
- 
-   bool operator!= (const svalue_id &other) const
-   {
-     return m_idx != other.m_idx;
-   }
- 
-   bool null_p () const { return m_idx == -1; }
- 
-   static svalue_id from_int (int idx) { return svalue_id (idx); }
-   int as_int () const { return m_idx; }
- 
-   void print (pretty_printer *pp) const;
-   void dump_node_name_to_pp (pretty_printer *pp) const;
- 
-   void validate (const region_model &model) const;
- 
- private:
-   svalue_id (int idx) : m_idx (idx) {}
- 
-   int m_idx;
- };
- 
- /* An ID for a region within a region_model.  Internally, this is an index
-    into a vector of region * within the region_model.  */
- 
- class region_id
- {
- public:
-   static region_id null () { return region_id (-1); }
- 
-   region_id () : m_idx (-1) {}
- 
-   bool operator== (const region_id &other) const
-   {
-     return m_idx == other.m_idx;
-   }
- 
-   bool operator!= (const region_id &other) const
-   {
-     return m_idx != other.m_idx;
-   }
- 
-   bool null_p () const { return m_idx == -1; }
- 
-   static region_id from_int (int idx) { return region_id (idx); }
-   int as_int () const { return m_idx; }
- 
-   void print (pretty_printer *pp) const;
-   void dump_node_name_to_pp (pretty_printer *pp) const;
- 
-   void validate (const region_model &model) const;
- 
- private:
-   region_id (int idx) : m_idx (idx) {}
- 
-   int m_idx;
- };
- 
- /* A class for renumbering IDs within a region_model, mapping old IDs
-    to new IDs (e.g. when removing one or more elements, thus needing to
-    renumber).  */
- // TODO: could this be useful for equiv_class_ids?
- 
- template <typename T>
- class id_map
- {
-  public:
-   id_map (int num_ids);
-   void put (T src, T dst);
-   T get_dst_for_src (T src) const;
-   T get_src_for_dst (T dst) const;
-   void dump_to_pp (pretty_printer *pp) const;
-   void dump () const;
-   void update (T *) const;
- 
-  private:
-   auto_vec<T> m_src_to_dst;
-   auto_vec<T> m_dst_to_src;
- };
- 
- typedef id_map<svalue_id> svalue_id_map;
- typedef id_map<region_id> region_id_map;
- 
- /* class id_map.  */
- 
- /* id_map's ctor, which populates the map with dummy null values.  */
- 
- template <typename T>
- inline id_map<T>::id_map (int num_svalues)
- : m_src_to_dst (num_svalues),
-   m_dst_to_src (num_svalues)
- {
-   for (int i = 0; i < num_svalues; i++)
-     {
-       m_src_to_dst.quick_push (T::null ());
-       m_dst_to_src.quick_push (T::null ());
-     }
- }
- 
- /* Record that SRC is to be mapped to DST.  */
- 
- template <typename T>
- inline void
- id_map<T>::put (T src, T dst)
- {
-   m_src_to_dst[src.as_int ()] = dst;
-   m_dst_to_src[dst.as_int ()] = src;
- }
- 
- /* Get the new value for SRC within the map.  */
- 
- template <typename T>
- inline T
- id_map<T>::get_dst_for_src (T src) const
- {
-   if (src.null_p ())
-     return src;
-   return m_src_to_dst[src.as_int ()];
- }
- 
- /* Given DST, a new value, determine which old value will be mapped to it
-    (the inverse of the map).  */
- 
- template <typename T>
- inline T
- id_map<T>::get_src_for_dst (T dst) const
- {
-   if (dst.null_p ())
-     return dst;
-   return m_dst_to_src[dst.as_int ()];
- }
- 
- /* Dump this id_map to PP.  */
- 
- template <typename T>
- inline void
- id_map<T>::dump_to_pp (pretty_printer *pp) const
- {
-   pp_string (pp, "src to dst: {");
-   unsigned i;
-   T *dst;
-   FOR_EACH_VEC_ELT (m_src_to_dst, i, dst)
-     {
-       if (i > 0)
- 	pp_string (pp, ", ");
-       T src (T::from_int (i));
-       src.print (pp);
-       pp_string (pp, " -> ");
-       dst->print (pp);
-     }
-   pp_string (pp, "}");
-   pp_newline (pp);
- 
-   pp_string (pp, "dst to src: {");
-   T *src;
-   FOR_EACH_VEC_ELT (m_dst_to_src, i, src)
-     {
-       if (i > 0)
- 	pp_string (pp, ", ");
-       T dst (T::from_int (i));
-       dst.print (pp);
-       pp_string (pp, " <- ");
-       src->print (pp);
-     }
-   pp_string (pp, "}");
-   pp_newline (pp);
- }
- 
- /* Dump this id_map to stderr.  */
- 
- template <typename T>
- DEBUG_FUNCTION inline void
- id_map<T>::dump () const
- {
-   pretty_printer pp;
-   pp.buffer->stream = stderr;
-   dump_to_pp (&pp);
-   pp_flush (&pp);
- }
- 
- /* Update *ID from the old value to its new value in this map.  */
- 
- template <typename T>
- inline void
- id_map<T>::update (T *id) const
- {
-   *id = get_dst_for_src (*id);
- }
- 
- /* Variant of the above, which only stores things in one direction.
-    (e.g. for merging, when the number of destination regions is not
-    the same of the src regions, and can grow).  */
- 
  template <typename T>
  class one_way_id_map
  {
--- 26,43 ----
        (Zhongxing Xu, Ted Kremenek, and Jian Zhang)
       http://lcs.ios.ac.cn/~xuzb/canalyze/memmodel.pdf  */
  
! #include "analyzer/svalue.h"
! #include "analyzer/region.h"
  
  using namespace ana;
  
  namespace inchash
  {
    extern void add_path_var (path_var pv, hash &hstate);
  } // namespace inchash
  
  namespace ana {
  
  template <typename T>
  class one_way_id_map
  {
*************** class one_way_id_map
*** 290,299 ****
  
   private:
    auto_vec<T> m_src_to_dst;
! };
! 
! typedef one_way_id_map<svalue_id> one_way_svalue_id_map;
! typedef one_way_id_map<region_id> one_way_region_id_map;
  
  /* class one_way_id_map.  */
  
--- 51,57 ----
  
   private:
    auto_vec<T> m_src_to_dst;
!  };
  
  /* class one_way_id_map.  */
  
*************** one_way_id_map<T>::update (T *id) const
*** 370,428 ****
    *id = get_dst_for_src (*id);
  }
  
- /* A set of region_ids within a region_model.  */
- 
- class region_id_set
- {
- public:
-   region_id_set (const region_model *model);
- 
-   void add_region (region_id rid)
-   {
-     if (!rid.null_p ())
-       bitmap_set_bit (m_bitmap, rid.as_int ());
-   }
- 
-   bool region_p (region_id rid) const
-   {
-     gcc_assert (!rid.null_p ());
-     return bitmap_bit_p (const_cast <auto_sbitmap &> (m_bitmap),
- 			 rid.as_int ());
-   }
- 
-   unsigned int num_regions ()
-   {
-     return bitmap_count_bits (m_bitmap);
-   }
- 
- private:
-   auto_sbitmap m_bitmap;
- };
- 
- /* A set of svalue_ids within a region_model.  */
- 
- class svalue_id_set
- {
- public:
-   svalue_id_set ();
- 
-   void add_svalue (svalue_id sid)
-   {
-     if (!sid.null_p ())
-       bitmap_set_bit (m_bitmap, sid.as_int ());
-   }
- 
-   bool svalue_p (svalue_id sid) const
-   {
-     gcc_assert (!sid.null_p ());
-     return bitmap_bit_p (const_cast <auto_bitmap &> (m_bitmap),
- 			 sid.as_int ());
-   }
- 
- private:
-   auto_bitmap m_bitmap;
- };
- 
  /* Various operations delete information from a region_model.
  
     This struct tracks how many of each kind of entity were purged (e.g.
--- 128,133 ----
*************** struct purge_stats
*** 445,1667 ****
    int m_num_client_items;
  };
  
! /* An enum for discriminating between the different concrete subclasses
!    of svalue.  */
! 
! enum svalue_kind
! {
!   SK_REGION,
!   SK_CONSTANT,
!   SK_UNKNOWN,
!   SK_POISONED,
!   SK_SETJMP
! };
! 
! /* svalue and its subclasses.
! 
!    The class hierarchy looks like this (using indentation to show
!    inheritance, and with svalue_kinds shown for the concrete subclasses):
! 
!    svalue
!      region_svalue (SK_REGION)
!      constant_svalue (SK_CONSTANT)
!      unknown_svalue (SK_UNKNOWN)
!      poisoned_svalue (SK_POISONED)
!      setjmp_svalue (SK_SETJMP).  */
! 
! /* An abstract base class representing a value held by a region of memory.  */
! 
! class svalue
! {
! public:
!   virtual ~svalue () {}
! 
!   bool operator== (const svalue &other) const;
!   bool operator!= (const svalue &other) const { return !(*this == other); }
! 
!   virtual svalue *clone () const = 0;
! 
!   tree get_type () const { return m_type; }
! 
!   virtual enum svalue_kind get_kind () const = 0;
! 
!   hashval_t hash () const;
! 
!   void print (const region_model &model,
! 	      svalue_id this_sid,
! 	      pretty_printer *pp) const;
! 
!   virtual void dump_dot_to_pp (const region_model &model,
! 			       svalue_id this_sid,
! 			       pretty_printer *pp) const;
! 
!   virtual region_svalue *dyn_cast_region_svalue () { return NULL; }
!   virtual constant_svalue *dyn_cast_constant_svalue () { return NULL; }
!   virtual const constant_svalue *dyn_cast_constant_svalue () const
!   { return NULL; }
!   virtual poisoned_svalue *dyn_cast_poisoned_svalue () { return NULL; }
!   virtual unknown_svalue *dyn_cast_unknown_svalue () { return NULL; }
!   virtual setjmp_svalue *dyn_cast_setjmp_svalue () { return NULL; }
! 
!   virtual void remap_region_ids (const region_id_map &map);
! 
!   virtual void walk_for_canonicalization (canonicalization *c) const;
! 
!   virtual svalue_id get_child_sid (region *parent, region *child,
! 				   region_model &model,
! 				   region_model_context *ctxt);
! 
!   tree maybe_get_constant () const;
! 
!  protected:
!   svalue (tree type) : m_type (type) {}
! 
!   virtual void add_to_hash (inchash::hash &hstate) const = 0;
! 
!  private:
!   virtual void print_details (const region_model &model,
! 			      svalue_id this_sid,
! 			      pretty_printer *pp) const = 0;
!   tree m_type;
! };
! 
! /* Concrete subclass of svalue representing a pointer value that points to
!    a known region  */
! 
! class region_svalue : public svalue
! {
! public:
!   region_svalue (tree type, region_id rid) : svalue (type), m_rid (rid)
!   {
!     /* Should we support NULL ptrs here?  */
!     gcc_assert (!rid.null_p ());
!   }
! 
!   bool compare_fields (const region_svalue &other) const;
! 
!   svalue *clone () const FINAL OVERRIDE
!   { return new region_svalue (get_type (), m_rid); }
! 
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_REGION; }
! 
!   void dump_dot_to_pp (const region_model &model,
! 		       svalue_id this_sid,
! 		       pretty_printer *pp) const
!     FINAL OVERRIDE;
! 
!   region_svalue *dyn_cast_region_svalue () FINAL OVERRIDE { return this; }
! 
!   region_id get_pointee () const { return m_rid; }
! 
!   void remap_region_ids (const region_id_map &map) FINAL OVERRIDE;
! 
!   static void merge_values (const region_svalue &region_sval_a,
! 			    const region_svalue &region_sval_b,
! 			    svalue_id *merged_sid,
! 			    tree type,
! 			    model_merger *merger);
! 
!   void walk_for_canonicalization (canonicalization *c) const FINAL OVERRIDE;
! 
!   static tristate eval_condition (region_svalue *lhs_ptr,
! 				  enum tree_code op,
! 				  region_svalue *rhs_ptr);
! 
!   void add_to_hash (inchash::hash &hstate) const FINAL OVERRIDE;
! 
!  private:
!   void print_details (const region_model &model,
! 		      svalue_id this_sid,
! 		      pretty_printer *pp) const
!     FINAL OVERRIDE;
! 
!   region_id m_rid;
! };
! 
! } // namespace ana
! 
! template <>
! template <>
! inline bool
! is_a_helper <region_svalue *>::test (svalue *sval)
! {
!   return sval->get_kind () == SK_REGION;
! }
! 
! namespace ana {
! 
! /* Concrete subclass of svalue representing a specific constant value.  */
! 
! class constant_svalue : public svalue
! {
! public:
!   constant_svalue (tree cst_expr)
!   : svalue (TREE_TYPE (cst_expr)), m_cst_expr (cst_expr)
!   {
!     gcc_assert (cst_expr);
!     gcc_assert (CONSTANT_CLASS_P (cst_expr));
!   }
! 
!   bool compare_fields (const constant_svalue &other) const;
! 
!   svalue *clone () const FINAL OVERRIDE
!   { return new constant_svalue (m_cst_expr); }
! 
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_CONSTANT; }
! 
!   void add_to_hash (inchash::hash &hstate) const FINAL OVERRIDE;
! 
!   constant_svalue *dyn_cast_constant_svalue () FINAL OVERRIDE { return this; }
!   const constant_svalue *dyn_cast_constant_svalue () const FINAL OVERRIDE
!   { return this; }
! 
!   tree get_constant () const { return m_cst_expr; }
! 
!   static void merge_values (const constant_svalue &cst_sval_a,
! 			    const constant_svalue &cst_sval_b,
! 			    svalue_id *merged_sid,
! 			    model_merger *merger);
! 
!   static tristate eval_condition (constant_svalue *lhs,
! 				  enum tree_code op,
! 				  constant_svalue *rhs);
! 
!   svalue_id get_child_sid (region *parent, region *child,
! 			   region_model &model,
! 			   region_model_context *ctxt) FINAL OVERRIDE;
! 
!  private:
!   void print_details (const region_model &model,
! 		      svalue_id this_sid,
! 		      pretty_printer *pp) const
!     FINAL OVERRIDE;
! 
!   tree m_cst_expr;
! };
! 
! } // namespace ana
! 
! template <>
! template <>
! inline bool
! is_a_helper <constant_svalue *>::test (svalue *sval)
! {
!   return sval->get_kind () == SK_CONSTANT;
! }
! 
! namespace ana {
! 
! /* Concrete subclass of svalue representing a unique but unknown value.
!    Comparisons of variables that share the same unknown value are known
!    to be equal, even if we don't know what the value is.  */
! 
! class unknown_svalue : public svalue
! {
! public:
!   unknown_svalue (tree type)
!   : svalue (type)
!   {}
! 
!   bool compare_fields (const unknown_svalue &other) const;
! 
!   svalue *clone () const FINAL OVERRIDE
!   { return new unknown_svalue (get_type ()); }
! 
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_UNKNOWN; }
! 
!   void add_to_hash (inchash::hash &hstate) const FINAL OVERRIDE;
! 
!   unknown_svalue *dyn_cast_unknown_svalue () FINAL OVERRIDE { return this; }
! 
!  private:
!   void print_details (const region_model &model,
! 		      svalue_id this_sid,
! 		      pretty_printer *pp) const
!     FINAL OVERRIDE;
! };
! 
! /* An enum describing a particular kind of "poisoned" value.  */
! 
! enum poison_kind
! {
!   /* For use to describe freed memory.  */
!   POISON_KIND_FREED,
! 
!   /* For use on pointers to regions within popped stack frames.  */
!   POISON_KIND_POPPED_STACK
! };
! 
! extern const char *poison_kind_to_str (enum poison_kind);
! 
! /* Concrete subclass of svalue representing a value that should not
!    be used (e.g. uninitialized memory, freed memory).  */
! 
! class poisoned_svalue : public svalue
! {
! public:
!   poisoned_svalue (enum poison_kind kind, tree type)
!   : svalue (type), m_kind (kind) {}
! 
!   bool compare_fields (const poisoned_svalue &other) const;
! 
!   svalue *clone () const FINAL OVERRIDE
!   { return new poisoned_svalue (m_kind, get_type ()); }
! 
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_POISONED; }
! 
!   void add_to_hash (inchash::hash &hstate) const FINAL OVERRIDE;
! 
!   poisoned_svalue *dyn_cast_poisoned_svalue () FINAL OVERRIDE { return this; }
! 
!   enum poison_kind get_poison_kind () const { return m_kind; }
! 
!  private:
!   void print_details (const region_model &model,
! 		      svalue_id this_sid,
! 		      pretty_printer *pp) const
!     FINAL OVERRIDE;
! 
!   enum poison_kind m_kind;
! };
! 
! } // namespace ana
! 
! template <>
! template <>
! inline bool
! is_a_helper <poisoned_svalue *>::test (svalue *sval)
! {
!   return sval->get_kind () == SK_POISONED;
! }
! 
! namespace ana {
! 
! /* A bundle of information recording a setjmp/sigsetjmp call, corresponding
!    roughly to a jmp_buf.  */
! 
! struct setjmp_record
! {
!   setjmp_record (const exploded_node *enode,
! 		 const gcall *setjmp_call)
!   : m_enode (enode), m_setjmp_call (setjmp_call)
!   {
!   }
! 
!   bool operator== (const setjmp_record &other) const
!   {
!     return (m_enode == other.m_enode
! 	    && m_setjmp_call == other.m_setjmp_call);
!   }
! 
!   const exploded_node *m_enode;
!   const gcall *m_setjmp_call;
! };
! 
! /* Concrete subclass of svalue representing buffers for setjmp/sigsetjmp,
!    so that longjmp/siglongjmp can potentially "return" to an entirely
!    different function.  */
! 
! class setjmp_svalue : public svalue
! {
! public:
!   setjmp_svalue (const setjmp_record &setjmp_record,
! 		 tree type)
!   : svalue (type), m_setjmp_record (setjmp_record)
!   {}
! 
!   bool compare_fields (const setjmp_svalue &other) const;
! 
!   svalue *clone () const FINAL OVERRIDE
!   { return new setjmp_svalue (m_setjmp_record, get_type ()); }
! 
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_SETJMP; }
! 
!   void add_to_hash (inchash::hash &hstate) const FINAL OVERRIDE;
! 
!   setjmp_svalue *dyn_cast_setjmp_svalue () FINAL OVERRIDE { return this; }
! 
!   int get_enode_index () const;
! 
!   const setjmp_record &get_setjmp_record () const { return m_setjmp_record; }
! 
!  private:
!   void print_details (const region_model &model,
! 		      svalue_id this_sid,
! 		      pretty_printer *pp) const
!     FINAL OVERRIDE;
! 
!   setjmp_record m_setjmp_record;
! };
! 
! /* An enum for discriminating between the different concrete subclasses
!    of region.  */
! 
! enum region_kind
! {
!   RK_PRIMITIVE,
!   RK_STRUCT,
!   RK_UNION,
!   RK_FRAME,
!   RK_GLOBALS,
!   RK_CODE,
!   RK_FUNCTION,
!   RK_ARRAY,
!   RK_STACK,
!   RK_HEAP,
!   RK_ROOT,
!   RK_SYMBOLIC
! };
! 
! extern const char *region_kind_to_str (enum region_kind);
! 
! /* Region and its subclasses.
! 
!    The class hierarchy looks like this (using indentation to show
!    inheritance, and with region_kinds shown for the concrete subclasses):
! 
!    region
!      primitive_region (RK_PRIMITIVE)
!      map_region
!        struct_or_union_region
!          struct_region (RK_STRUCT)
!          union_region (RK_UNION)
!        scope_region
!          frame_region (RK_FRAME)
!          globals_region (RK_GLOBALS)
!        code_region (RK_CODE)
!        function_region (RK_FUNCTION)
!      array_region (RK_ARRAY)
!      stack_region (RK_STACK)
!      heap_region (RK_HEAP)
!      root_region (RK_ROOT)
!      label_region (RK_FUNCTION)
!      symbolic_region (RK_SYMBOLIC).  */
! 
! /* Abstract base class representing a chunk of memory.
! 
!    Regions form a tree-like hierarchy, with a root region at the base,
!    with memory space regions within it, representing the stack and
!    globals, with frames within the stack, and regions for variables
!    within the frames and the "globals" region.  Regions for structs
!    can have subregions for fields.
! 
!    A region can optionally have a value, or inherit its value from
!    the first ancestor with a value.  For example, the stack region
!    has a "uninitialized" poison value which is inherited by all
!    descendent regions that don't themselves have a value.  */
! 
! class region
! {
! public:
!   virtual ~region () {}
! 
!   bool operator== (const region &other) const;
!   bool operator!= (const region &other) const { return !(*this == other); }
! 
!   virtual region *clone () const = 0;
! 
!   virtual enum region_kind get_kind () const = 0;
!   virtual map_region *dyn_cast_map_region () { return NULL; }
!   virtual array_region *dyn_cast_array_region () { return NULL; }
!   virtual symbolic_region *dyn_cast_symbolic_region () { return NULL; }
!   virtual const symbolic_region *dyn_cast_symbolic_region () const { return NULL; }
! 
!   region_id get_parent () const { return m_parent_rid; }
!   region *get_parent_region (const region_model &model) const;
! 
!   void set_value (region_model &model, region_id this_rid, svalue_id rhs_sid,
! 		  region_model_context *ctxt);
!   svalue_id get_value (region_model &model, bool non_null,
! 		       region_model_context *ctxt);
!   svalue_id get_value_direct () const { return m_sval_id; }
! 
!   svalue_id get_inherited_child_sid (region *child,
! 				     region_model &model,
! 				     region_model_context *ctxt);
! 
!   tree get_type () const { return m_type; }
! 
!   hashval_t hash () const;
! 
!   void print (const region_model &model,
! 	      region_id this_rid,
! 	      pretty_printer *pp) const;
! 
!   virtual void dump_dot_to_pp (const region_model &model,
! 			       region_id this_rid,
! 			       pretty_printer *pp) const;
! 
!   void dump_to_pp (const region_model &model,
! 		   region_id this_rid,
! 		   pretty_printer *pp,
! 		   const char *prefix,
! 		   bool is_last_child) const;
!   virtual void dump_child_label (const region_model &model,
! 				 region_id this_rid,
! 				 region_id child_rid,
! 				 pretty_printer *pp) const;
! 
!   void remap_svalue_ids (const svalue_id_map &map);
!   virtual void remap_region_ids (const region_id_map &map);
! 
!   virtual void walk_for_canonicalization (canonicalization *c) const = 0;
! 
!   void add_view (region_id view_rid, region_model *model);
!   region_id get_view (tree type, region_model *model) const;
!   region_id get_active_view () const { return m_active_view_rid; }
!   bool is_view_p () const { return m_is_view; }
! 
!   virtual void validate (const region_model &model) const;
! 
!   bool non_null_p (const region_model &model) const;
! 
!  protected:
!   region (region_id parent_rid, svalue_id sval_id, tree type);
!   region (const region &other);
! 
!   virtual void add_to_hash (inchash::hash &hstate) const;
!   virtual void print_fields (const region_model &model,
! 			     region_id this_rid,
! 			     pretty_printer *pp) const;
! 
!  private:
!   void become_active_view (region_model &model, region_id this_rid);
!   void deactivate_any_active_view (region_model &model);
!   void deactivate_view (region_model &model, region_id this_view_rid);
! 
!   region_id m_parent_rid;
!   svalue_id m_sval_id;
!   tree m_type;
!   /* Child regions that are "views" (one per type).  */
!   auto_vec<region_id> m_view_rids;
! 
!   bool m_is_view;
!   region_id m_active_view_rid;
! };
! 
! } // namespace ana
! 
! template <>
! template <>
! inline bool
! is_a_helper <region *>::test (region *)
! {
!   return true;
! }
! 
! namespace ana {
! 
! /* Concrete region subclass for storing "primitive" types (integral types,
!    pointers, etc).  */
! 
! class primitive_region : public region
! {
! public:
!   primitive_region (region_id parent_rid, tree type)
!   : region (parent_rid, svalue_id::null (), type)
!   {}
! 
!   region *clone () const FINAL OVERRIDE;
! 
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_PRIMITIVE; }
! 
!   void walk_for_canonicalization (canonicalization *c) const FINAL OVERRIDE;
! };
! 
! /* A region that has children identified by tree keys.
!    For example a stack frame has subregions per local, and a region
!    for a struct has subregions per field.  */
! 
! class map_region : public region
! {
! public:
!   typedef ordered_hash_map<tree, region_id> map_t;
!   typedef map_t::iterator iterator_t;
! 
!   map_region (region_id parent_rid, tree type)
!   : region (parent_rid, svalue_id::null (), type)
!   {}
!   map_region (const map_region &other);
! 
!   map_region *dyn_cast_map_region () FINAL OVERRIDE { return this; }
! 
!   void dump_dot_to_pp (const region_model &model,
! 		       region_id this_rid,
! 		       pretty_printer *pp) const
!     FINAL OVERRIDE;
! 
!   void dump_child_label (const region_model &model,
! 			 region_id this_rid,
! 			 region_id child_rid,
! 			 pretty_printer *pp) const
!     FINAL OVERRIDE;
! 
!   region_id get_or_create (region_model *model,
! 			   region_id this_rid,
! 			   tree expr, tree type,
! 			   region_model_context *ctxt);
!   void unbind (tree expr);
!   region_id *get (tree expr);
! 
!   void remap_region_ids (const region_id_map &map) FINAL OVERRIDE;
! 
!   tree get_tree_for_child_region (region_id child_rid) const;
! 
!   tree get_tree_for_child_region (region *child,
! 				  const region_model &model) const;
! 
!   static bool can_merge_p (const map_region *map_region_a,
! 			   const map_region *map_region_b,
! 			   map_region *merged_map_region,
! 			   region_id merged_rid,
! 			   model_merger *merger);
! 
!   void walk_for_canonicalization (canonicalization *c) const FINAL OVERRIDE;
! 
!   virtual bool valid_key_p (tree key) const = 0;
! 
!   svalue_id get_value_by_name (tree identifier,
! 			       const region_model &model) const;
! 
!   iterator_t begin () { return m_map.begin (); }
!   iterator_t end () { return m_map.end (); }
!   size_t elements () const { return m_map.elements (); }
! 
!  protected:
!   bool compare_fields (const map_region &other) const;
!   void add_to_hash (inchash::hash &hstate) const OVERRIDE;
!   void print_fields (const region_model &model,
! 		     region_id this_rid,
! 		     pretty_printer *pp) const
!     OVERRIDE;
!   void validate (const region_model &model) const FINAL OVERRIDE;
! 
!  private:
!   /* Mapping from tree to child region.  */
!   map_t m_map;
! };
! 
! } // namespace ana
! 
! template <>
! template <>
! inline bool
! is_a_helper <map_region *>::test (region *reg)
! {
!   return (reg->dyn_cast_map_region () != NULL);
! }
! 
! namespace ana {
! 
! /* Abstract subclass representing a region with fields
!    (either a struct or a union).  */
! 
! class struct_or_union_region : public map_region
! {
! public:
!   bool valid_key_p (tree key) const FINAL OVERRIDE;
! 
!  protected:
!   struct_or_union_region (region_id parent_rid, tree type)
!   : map_region (parent_rid, type)
!   {}
! 
!   bool compare_fields (const struct_or_union_region &other) const;
! };
! 
! } // namespace ana
! 
! template <>
! template <>
! inline bool
! is_a_helper <struct_or_union_region *>::test (region *reg)
! {
!   return (reg->get_kind () == RK_STRUCT
! 	  || reg->get_kind () == RK_UNION);
! }
! 
! namespace ana {
! 
! /* Concrete region subclass.  A map_region representing a struct, using
!    FIELD_DECLs for its keys.  */
! 
! class struct_region : public struct_or_union_region
! {
! public:
!   struct_region (region_id parent_rid, tree type)
!   : struct_or_union_region (parent_rid, type)
!   {
!     gcc_assert (TREE_CODE (type) == RECORD_TYPE);
!   }
! 
!   region *clone () const FINAL OVERRIDE;
! 
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_STRUCT; }
! 
!   bool compare_fields (const struct_region &other) const;
! };
! 
! } // namespace ana
! 
! template <>
! template <>
! inline bool
! is_a_helper <struct_region *>::test (region *reg)
! {
!   return reg->get_kind () == RK_STRUCT;
! }
! 
! namespace ana {
! 
! /* Concrete region subclass.  A map_region representing a union, using
!    FIELD_DECLs for its keys.  */
! 
! class union_region : public struct_or_union_region
! {
! public:
!   union_region (region_id parent_rid, tree type)
!   : struct_or_union_region (parent_rid, type)
!   {
!     gcc_assert (TREE_CODE (type) == UNION_TYPE);
!   }
! 
!   region *clone () const FINAL OVERRIDE;
! 
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_UNION; }
! 
!   bool compare_fields (const union_region &other) const;
! };
! 
! } // namespace ana
! 
! template <>
! template <>
! inline bool
! is_a_helper <union_region *>::test (region *reg)
! {
!   return reg->get_kind () == RK_UNION;
! }
! 
! namespace ana {
! 
! /* Abstract map_region subclass for accessing decls, used as a base class
!    for function frames and for the globals region.  */
! 
! class scope_region : public map_region
! {
!  public:
! 
!  protected:
!   scope_region (region_id parent_rid)
!   : map_region (parent_rid, NULL_TREE)
!   {}
! 
!   scope_region (const scope_region &other)
!   : map_region (other)
!   {
!   }
! 
!   bool compare_fields (const scope_region &other) const;
! };
! 
! /* Concrete region subclass, representing a function frame on the stack,
!    to contain the locals.  */
! 
! class frame_region : public scope_region
! {
! public:
!   frame_region (region_id parent_rid, function *fun, int depth)
!   : scope_region (parent_rid), m_fun (fun), m_depth (depth)
!   {}
! 
!   frame_region (const frame_region &other)
!   : scope_region (other), m_fun (other.m_fun), m_depth (other.m_depth)
!   {
!   }
! 
!   /* region vfuncs.  */
!   region *clone () const FINAL OVERRIDE;
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_FRAME; }
!   void print_fields (const region_model &model,
! 		     region_id this_rid,
! 		     pretty_printer *pp) const
!     FINAL OVERRIDE;
!   void add_to_hash (inchash::hash &hstate) const FINAL OVERRIDE;
! 
!   /* map_region vfuncs.  */
!   bool valid_key_p (tree key) const FINAL OVERRIDE;
! 
!   /* Accessors.  */
!   function *get_function () const { return m_fun; }
!   int get_depth () const { return m_depth; }
! 
!   bool compare_fields (const frame_region &other) const;
! 
!  private:
!   function *m_fun;
!   int m_depth;
! };
! 
! } // namespace ana
! 
! template <>
! template <>
! inline bool
! is_a_helper <frame_region *>::test (region *reg)
! {
!   return reg->get_kind () == RK_FRAME;
! }
! 
! namespace ana {
! 
! /* Concrete region subclass, to hold global variables (data and bss).  */
! 
! class globals_region : public scope_region
! {
!  public:
!   globals_region (region_id parent_rid)
!   : scope_region (parent_rid)
!   {}
! 
!   globals_region (const globals_region &other)
!   : scope_region (other)
!   {
!   }
! 
!   /* region vfuncs.  */
!   region *clone () const FINAL OVERRIDE;
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_GLOBALS; }
! 
!   /* map_region vfuncs.  */
!   bool valid_key_p (tree key) const FINAL OVERRIDE;
! 
!   bool compare_fields (const globals_region &other) const;
! };
! 
! } // namespace ana
! 
! template <>
! template <>
! inline bool
! is_a_helper <globals_region *>::test (region *reg)
! {
!   return reg->get_kind () == RK_GLOBALS;
! }
! 
! namespace ana {
! 
! /* Concrete region subclass.  A map_region representing the code, using
!    FUNCTION_DECLs for its keys.  */
  
! class code_region : public map_region
  {
  public:
!   code_region (region_id parent_rid)
!   : map_region (parent_rid, NULL_TREE)
!   {}
!   code_region (const code_region &other)
!   : map_region (other)
!   {}
! 
!   /* region vfuncs.  */
!   region *clone () const FINAL OVERRIDE;
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_CODE; }
! 
!   /* map_region vfunc.  */
!   bool valid_key_p (tree key) const FINAL OVERRIDE;
! 
!   region_id get_element (region_model *model,
! 			 region_id this_rid,
! 			 svalue_id index_sid,
! 			 region_model_context *ctxt);
  
!   bool compare_fields (const code_region &other) const;
  };
  
  } // namespace ana
  
- template <>
- template <>
- inline bool
- is_a_helper <code_region *>::test (region *reg)
- {
-   return reg->get_kind () == RK_CODE;
- }
- 
  namespace ana {
  
! /* Concrete region subclass.  A map_region representing the code for
!    a particular function, using LABEL_DECLs for its keys.  */
  
! class function_region : public map_region
  {
  public:
!   function_region (region_id parent_rid, tree type)
!   : map_region (parent_rid, type)
!   {
!     gcc_assert (FUNC_OR_METHOD_TYPE_P (type));
!   }
!   function_region (const function_region &other)
!   : map_region (other)
!   {}
! 
!   /* region vfuncs.  */
!   region *clone () const FINAL OVERRIDE;
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_FUNCTION; }
! 
!   /* map_region vfunc.  */
!   bool valid_key_p (tree key) const FINAL OVERRIDE;
! 
!   region_id get_element (region_model *model,
! 			 region_id this_rid,
! 			 svalue_id index_sid,
! 			 region_model_context *ctxt);
! 
!   bool compare_fields (const function_region &other) const;
! };
! 
! } // namespace ana
! 
! template <>
! template <>
! inline bool
! is_a_helper <function_region *>::test (region *reg)
! {
!   return reg->get_kind () == RK_FUNCTION;
! }
! 
! namespace ana {
! 
! /* Concrete region subclass representing an array (or an array-like view
!    of a parent region of memory.
!    This can't be a map_region as we can't use trees as the keys: there's
!    no guarantee about the uniqueness of an INTEGER_CST.  */
  
! class array_region : public region
! {
! public:
! #if 0
!   wide_int m_test;
  
!   typedef wide_int key_t;
!   typedef int_hash <wide_int, -1, -2> hash_t;
!   typedef ordered_hash_map<hash_t, region_id> map_t;
! #else
!   typedef int key_t;
!   typedef int_hash <int, -1, -2> int_hash_t;
!   typedef ordered_hash_map<int_hash_t, region_id> map_t;
! #endif
!   typedef map_t::iterator iterator_t;
  
!   array_region (region_id parent_rid, tree type)
!   : region (parent_rid, svalue_id::null (), type)
    {
!     gcc_assert (TREE_CODE (type) == ARRAY_TYPE);
    }
!   array_region (const array_region &other);
! 
!   void dump_dot_to_pp (const region_model &model,
! 		       region_id this_rid,
! 		       pretty_printer *pp) const
!     FINAL OVERRIDE;
! 
!   void dump_child_label (const region_model &model,
! 			 region_id this_rid,
! 			 region_id child_rid,
! 			 pretty_printer *pp) const
!     FINAL OVERRIDE;
! 
!   /* region vfuncs.  */
!   region *clone () const FINAL OVERRIDE;
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_ARRAY; }
!   array_region *dyn_cast_array_region () { return this; }
! 
!   region_id get_element (region_model *model,
! 			 region_id this_rid,
! 			 svalue_id index_sid,
! 			 region_model_context *ctxt);
! 
!   bool compare_fields (const array_region &other) const;
! 
!   static bool can_merge_p (const array_region *array_region_a,
! 			   const array_region *array_region_b,
! 			   array_region *merged_array_region,
! 			   region_id merged_rid,
! 			   model_merger *merger);
! 
!   void walk_for_canonicalization (canonicalization *c) const FINAL OVERRIDE;
! 
!   iterator_t begin () { return m_map.begin (); }
!   iterator_t end () { return m_map.end (); }
!   size_t elements () const { return m_map.elements (); }
! 
!   region_id get_or_create (region_model *model,
! 			   region_id this_rid,
! 			   key_t key, tree type,
! 			   region_model_context *ctxt);
! //  void unbind (int expr);
!   region_id *get (key_t key);
! 
!   void remap_region_ids (const region_id_map &map) FINAL OVERRIDE;
! 
!   bool get_key_for_child_region (region_id child_rid,
! 				 key_t *out) const;
! 
! #if 0
!   bool get_key_for_child_region (region *child,
! 				 const region_model &model,
! 				 key_t *out) const;
! #endif
! 
!   void add_to_hash (inchash::hash &hstate) const OVERRIDE;
!   void print_fields (const region_model &model,
! 		     region_id this_rid,
! 		     pretty_printer *pp) const
!     OVERRIDE;
!   void validate (const region_model &model) const FINAL OVERRIDE;
! 
!   static key_t key_from_constant (tree cst);
!   tree constant_from_key (key_t key);
! 
!  private:
!   static int key_cmp (const void *, const void *);
! 
!   /* Mapping from tree to child region.  */
!   map_t m_map;
! };
  
! } // namespace ana
  
! template <>
! template <>
! inline bool
! is_a_helper <array_region *>::test (region *reg)
! {
!   return reg->get_kind () == RK_ARRAY;
! }
  
! namespace ana {
  
! /* Concrete region subclass representing a stack, containing all stack
!    frames, and implicitly providing a POISON_KIND_UNINIT value to all
!    child regions by default.  */
  
! class stack_region : public region
! {
! public:
!   stack_region (region_id parent_rid, svalue_id sval_id)
!   : region (parent_rid, sval_id, NULL_TREE)
!   {}
  
!   stack_region (const stack_region &other);
  
!   bool compare_fields (const stack_region &other) const;
  
!   region *clone () const FINAL OVERRIDE;
  
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_STACK; }
  
!   void dump_child_label (const region_model &model,
! 			 region_id this_rid,
! 			 region_id child_rid,
! 			 pretty_printer *pp) const
!     FINAL OVERRIDE;
  
!   void push_frame (region_id frame_rid);
!   region_id get_current_frame_id () const;
!   void pop_frame (region_model *model, region_id result_dst_rid,
! 		  bool purge, purge_stats *stats,
! 		  region_model_context *ctxt);
  
!   void remap_region_ids (const region_id_map &map) FINAL OVERRIDE;
  
!   unsigned get_num_frames () const { return m_frame_rids.length (); }
!   region_id get_frame_rid (unsigned i) const { return m_frame_rids[i]; }
  
!   static bool can_merge_p (const stack_region *stack_region_a,
! 			   const stack_region *stack_region_b,
! 			   model_merger *merger);
  
!   void walk_for_canonicalization (canonicalization *c) const FINAL OVERRIDE;
  
!   svalue_id get_value_by_name (tree identifier,
! 			       const region_model &model) const;
  
!   void validate (const region_model &model) const FINAL OVERRIDE;
  
!  private:
!   void add_to_hash (inchash::hash &hstate) const FINAL OVERRIDE;
!   void print_fields (const region_model &model,
! 		     region_id this_rid,
! 		     pretty_printer *pp) const
!     FINAL OVERRIDE;
  
!   auto_vec<region_id> m_frame_rids;
! };
  
! } // namespace ana
  
! template <>
! template <>
! inline bool
! is_a_helper <stack_region *>::test (region *reg)
! {
!   return reg->get_kind () == RK_STACK;
! }
  
! namespace ana {
  
! /* Concrete region subclass: a region within which regions can be
!    dynamically allocated.  */
  
! class heap_region : public region
! {
! public:
!   heap_region (region_id parent_rid, svalue_id sval_id)
!   : region (parent_rid, sval_id, NULL_TREE)
!   {}
!   heap_region (const heap_region &other);
  
!   bool compare_fields (const heap_region &other) const;
  
!   region *clone () const FINAL OVERRIDE;
  
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_HEAP; }
  
!   static bool can_merge_p (const heap_region *heap_a, region_id heap_a_rid,
! 			   const heap_region *heap_b, region_id heap_b_rid,
! 			   heap_region *merged_heap, region_id merged_heap_rid,
! 			   model_merger *merger);
  
!   void walk_for_canonicalization (canonicalization *c) const FINAL OVERRIDE;
  
  };
  
! } // namespace ana
! 
! template <>
! template <>
! inline bool
! is_a_helper <heap_region *>::test (region *reg)
! {
!   return reg->get_kind () == RK_HEAP;
! }
! 
! namespace ana {
  
! /* Concrete region subclass.  The root region, containing all regions
!    (either directly, or as descendents).
!    Unique within a region_model.  */
  
! class root_region : public region
  {
  public:
!   root_region ();
!   root_region (const root_region &other);
! 
!   bool compare_fields (const root_region &other) const;
! 
!   region *clone () const FINAL OVERRIDE;
! 
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_ROOT; }
! 
!   void dump_child_label (const region_model &model,
! 			 region_id this_rid,
! 			 region_id child_rid,
! 			 pretty_printer *pp) const
!     FINAL OVERRIDE;
! 
!   region_id push_frame (region_model *model, function *fun,
! 			vec<svalue_id> *arg_sids,
! 			region_model_context *ctxt);
!   region_id get_current_frame_id (const region_model &model) const;
!   void pop_frame (region_model *model, region_id result_dst_rid,
! 		  bool purge, purge_stats *stats,
! 		  region_model_context *ctxt);
! 
!   region_id ensure_stack_region (region_model *model);
!   region_id get_stack_region_id () const { return m_stack_rid; }
!   stack_region *get_stack_region (const region_model *model) const;
! 
!   region_id ensure_globals_region (region_model *model);
!   region_id get_globals_region_id () const { return m_globals_rid; }
!   globals_region *get_globals_region (const region_model *model) const;
! 
!   region_id ensure_code_region (region_model *model);
!   code_region *get_code_region (const region_model *model) const;
! 
!   region_id ensure_heap_region (region_model *model);
!   heap_region *get_heap_region (const region_model *model) const;
  
!   void remap_region_ids (const region_id_map &map) FINAL OVERRIDE;
  
!   static bool can_merge_p (const root_region *root_region_a,
! 			   const root_region *root_region_b,
! 			   root_region *merged_root_region,
! 			   model_merger *merger);
  
!   void walk_for_canonicalization (canonicalization *c) const FINAL OVERRIDE;
  
!   svalue_id get_value_by_name (tree identifier,
! 			       const region_model &model) const;
  
!   void validate (const region_model &model) const FINAL OVERRIDE;
  
  private:
!   void add_to_hash (inchash::hash &hstate) const FINAL OVERRIDE;
!   void print_fields (const region_model &model,
! 		     region_id this_rid,
! 		     pretty_printer *pp) const
!     FINAL OVERRIDE;
! 
!   region_id m_stack_rid;
!   region_id m_globals_rid;
!   region_id m_code_rid;
!   region_id m_heap_rid;
! };
! 
! } // namespace ana
! 
! template <>
! template <>
! inline bool
! is_a_helper <root_region *>::test (region *reg)
! {
!   return reg->get_kind () == RK_ROOT;
! }
! 
! namespace ana {
! 
! /* Concrete region subclass: a region to use when dereferencing an unknown
!    pointer.  */
! 
! class symbolic_region : public region
! {
! public:
!   symbolic_region (region_id parent_rid, tree type, bool possibly_null)
!   : region (parent_rid, svalue_id::null (), type),
!     m_possibly_null (possibly_null)
!   {}
!   symbolic_region (const symbolic_region &other);
! 
!   const symbolic_region *dyn_cast_symbolic_region () const FINAL OVERRIDE
!   { return this; }
!   symbolic_region *dyn_cast_symbolic_region () FINAL OVERRIDE
!   { return this; }
! 
!   bool compare_fields (const symbolic_region &other) const;
! 
!   region *clone () const FINAL OVERRIDE;
! 
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_SYMBOLIC; }
! 
!   void walk_for_canonicalization (canonicalization *c) const FINAL OVERRIDE;
! 
!   void print_fields (const region_model &model,
! 		     region_id this_rid,
! 		     pretty_printer *pp) const FINAL OVERRIDE;
! 
!   bool m_possibly_null;
  };
  
  /* A region_model encapsulates a representation of the state of memory, with
--- 150,404 ----
    int m_num_client_items;
  };
  
! /* A base class for visiting regions and svalues, with do-nothing
!    base implementations of the per-subclass vfuncs.  */
  
! class visitor
  {
  public:
!   virtual void visit_region_svalue (const region_svalue *) {}
!   virtual void visit_constant_svalue (const constant_svalue *) {}
!   virtual void visit_unknown_svalue (const unknown_svalue *) {}
!   virtual void visit_poisoned_svalue (const poisoned_svalue *) {}
!   virtual void visit_setjmp_svalue (const setjmp_svalue *) {}
!   virtual void visit_initial_svalue (const initial_svalue *) {}
!   virtual void visit_unaryop_svalue (const unaryop_svalue *) {}
!   virtual void visit_binop_svalue (const binop_svalue *) {}
!   virtual void visit_sub_svalue (const sub_svalue *) {}
!   virtual void visit_unmergeable_svalue (const unmergeable_svalue *) {}
!   virtual void visit_placeholder_svalue (const placeholder_svalue *) {}
!   virtual void visit_widening_svalue (const widening_svalue *) {}
!   virtual void visit_compound_svalue (const compound_svalue *) {}
!   virtual void visit_conjured_svalue (const conjured_svalue *) {}
  
!   virtual void visit_region (const region *) {}
  };
  
  } // namespace ana
  
  namespace ana {
  
! /* A class responsible for owning and consolidating region and svalue
!    instances.
!    region and svalue instances are immutable as far as clients are
!    concerned, so they are provided as "const" ptrs.  */
  
! class region_model_manager
  {
  public:
!   region_model_manager ();
!   ~region_model_manager ();
  
!   /* svalue consolidation.  */
!   const svalue *get_or_create_constant_svalue (tree cst_expr);
!   const svalue *get_or_create_unknown_svalue (tree type);
!   const svalue *get_or_create_setjmp_svalue (const setjmp_record &r,
! 					     tree type);
!   const svalue *get_or_create_poisoned_svalue (enum poison_kind kind,
! 					       tree type);
!   const svalue *get_or_create_initial_value (const region *reg);
!   const svalue *get_ptr_svalue (tree ptr_type, const region *pointee);
!   const svalue *get_or_create_unaryop (tree type, enum tree_code op,
! 				       const svalue *arg);
!   const svalue *get_or_create_cast (tree type, const svalue *arg);
!   const svalue *get_or_create_binop (tree type,
! 				     enum tree_code op,
! 				     const svalue *arg0, const svalue *arg1);
!   const svalue *get_or_create_sub_svalue (tree type,
! 					  const svalue *parent_svalue,
! 					  const region *subregion);
!   const svalue *get_or_create_unmergeable (const svalue *arg);
!   const svalue *get_or_create_widening_svalue (tree type,
! 					       const program_point &point,
! 					       const svalue *base_svalue,
! 					       const svalue *iter_svalue);
!   const svalue *get_or_create_compound_svalue (tree type,
! 					       const binding_map &map);
!   const svalue *get_or_create_conjured_svalue (tree type, const gimple *stmt,
! 					       const region *id_reg);
  
!   const svalue *maybe_get_char_from_string_cst (tree string_cst,
! 						tree byte_offset_cst);
  
!   /* region consolidation.  */
!   const stack_region * get_stack_region () const { return &m_stack_region; }
!   const heap_region *get_heap_region () const { return &m_heap_region; }
!   const code_region *get_code_region () const { return &m_code_region; }
!   const globals_region *get_globals_region () const
    {
!     return &m_globals_region;
    }
!   const function_region *get_region_for_fndecl (tree fndecl);
!   const label_region *get_region_for_label (tree label);
!   const decl_region *get_region_for_global (tree expr);
!   const region *get_field_region (const region *parent, tree field);
!   const region *get_element_region (const region *parent,
! 				    tree element_type,
! 				    const svalue *index);
!   const region *get_offset_region (const region *parent,
! 				   tree type,
! 				   const svalue *byte_offset);
!   const region *get_cast_region (const region *original_region,
! 				 tree type);
!   const frame_region *get_frame_region (const frame_region *calling_frame,
! 					function *fun);
!   const region *get_symbolic_region (const svalue *sval);
!   const string_region *get_region_for_string (tree string_cst);
  
!   const region *
!   get_region_for_unexpected_tree_code (region_model_context *ctxt,
! 				       tree t,
! 				       const dump_location_t &loc);
  
!   unsigned alloc_region_id () { return m_next_region_id++; }
  
!   store_manager *get_store_manager () { return &m_store_mgr; }
  
!   /* Dynamically-allocated region instances.
!      The number of these within the analysis can grow arbitrarily.
!      They are still owned by the manager.  */
!   const region *create_region_for_heap_alloc ();
!   const region *create_region_for_alloca (const frame_region *frame);
  
!   void log_stats (logger *logger, bool show_objs) const;
  
! private:
!   bool too_complex_p (const complexity &c) const;
!   bool reject_if_too_complex (svalue *sval);
  
!   const svalue *maybe_fold_unaryop (tree type, enum tree_code op,
! 				    const svalue *arg);
!   const svalue *maybe_fold_binop (tree type, enum tree_code op,
! 				  const svalue *arg0, const svalue *arg1);
!   const svalue *maybe_fold_sub_svalue (tree type,
! 				       const svalue *parent_svalue,
! 				       const region *subregion);
  
!   unsigned m_next_region_id;
!   root_region m_root_region;
!   stack_region m_stack_region;
!   heap_region m_heap_region;
  
!   /* svalue consolidation.  */
!   typedef hash_map<tree, constant_svalue *> constants_map_t;
!   constants_map_t m_constants_map;
  
!   typedef hash_map<tree, unknown_svalue *> unknowns_map_t;
!   unknowns_map_t m_unknowns_map;
!   const unknown_svalue *m_unknown_NULL;
  
!   typedef hash_map<poisoned_svalue::key_t,
! 		   poisoned_svalue *> poisoned_values_map_t;
!   poisoned_values_map_t m_poisoned_values_map;
  
!   typedef hash_map<setjmp_svalue::key_t,
! 		   setjmp_svalue *> setjmp_values_map_t;
!   setjmp_values_map_t m_setjmp_values_map;
  
!   typedef hash_map<const region *, initial_svalue *> initial_values_map_t;
!   initial_values_map_t m_initial_values_map;
  
!   typedef hash_map<region_svalue::key_t, region_svalue *> pointer_values_map_t;
!   pointer_values_map_t m_pointer_values_map;
  
!   typedef hash_map<unaryop_svalue::key_t,
! 		   unaryop_svalue *> unaryop_values_map_t;
!   unaryop_values_map_t m_unaryop_values_map;
  
!   typedef hash_map<binop_svalue::key_t, binop_svalue *> binop_values_map_t;
!   binop_values_map_t m_binop_values_map;
  
!   typedef hash_map<sub_svalue::key_t, sub_svalue *> sub_values_map_t;
!   sub_values_map_t m_sub_values_map;
  
!   typedef hash_map<const svalue *,
! 		   unmergeable_svalue *> unmergeable_values_map_t;
!   unmergeable_values_map_t m_unmergeable_values_map;
  
!   typedef hash_map<widening_svalue::key_t,
! 		   widening_svalue */*,
! 		   widening_svalue::key_t::hash_map_traits*/>
!     widening_values_map_t;
!   widening_values_map_t m_widening_values_map;
  
!   typedef hash_map<compound_svalue::key_t,
! 		   compound_svalue *> compound_values_map_t;
!   compound_values_map_t m_compound_values_map;
  
!   typedef hash_map<conjured_svalue::key_t,
! 		   conjured_svalue *> conjured_values_map_t;
!   conjured_values_map_t m_conjured_values_map;
  
!   /* Maximum complexity of svalues that weren't rejected.  */
!   complexity m_max_complexity;
  
!   /* region consolidation.  */
  
!   code_region m_code_region;
!   typedef hash_map<tree, function_region *> fndecls_map_t;
!   typedef fndecls_map_t::iterator fndecls_iterator_t;
!   fndecls_map_t m_fndecls_map;
  
!   typedef hash_map<tree, label_region *> labels_map_t;
!   typedef labels_map_t::iterator labels_iterator_t;
!   labels_map_t m_labels_map;
  
!   globals_region m_globals_region;
!   typedef hash_map<tree, decl_region *> globals_map_t;
!   typedef globals_map_t::iterator globals_iterator_t;
!   globals_map_t m_globals_map;
  
!   consolidation_map<field_region> m_field_regions;
!   consolidation_map<element_region> m_element_regions;
!   consolidation_map<offset_region> m_offset_regions;
!   consolidation_map<cast_region> m_cast_regions;
!   consolidation_map<frame_region> m_frame_regions;
!   consolidation_map<symbolic_region> m_symbolic_regions;
  
!   typedef hash_map<tree, string_region *> string_map_t;
!   string_map_t m_string_map;
  
!   store_manager m_store_mgr;
  
+   /* "Dynamically-allocated" region instances.
+      The number of these within the analysis can grow arbitrarily.
+      They are still owned by the manager.  */
+   auto_delete_vec<region> m_managed_dynamic_regions;
  };
  
! struct append_ssa_names_cb_data;
  
! /* Helper class for handling calls to functions with known behavior.
!    Implemented in region-model-impl-calls.c.  */
  
! class call_details
  {
  public:
!   call_details (const gcall *call, region_model *model,
! 		region_model_context *ctxt);
  
!   region_model_context *get_ctxt () const { return m_ctxt; }
!   uncertainty_t *get_uncertainty () const;
!   tree get_lhs_type () const { return m_lhs_type; }
!   const region *get_lhs_region () const { return m_lhs_region; }
  
!   bool maybe_set_lhs (const svalue *result) const;
  
!   unsigned num_args () const;
  
!   tree get_arg_tree (unsigned idx) const;
!   tree get_arg_type (unsigned idx) const;
!   const svalue *get_arg_svalue (unsigned idx) const;
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const;
!   void dump (bool simple) const;
  
  private:
!   const gcall *m_call;
!   region_model *m_model;
!   region_model_context *m_ctxt;
!   tree m_lhs_type;
!   const region *m_lhs_region;
  };
  
  /* A region_model encapsulates a representation of the state of memory, with
*************** public:
*** 1674,1680 ****
  class region_model
  {
   public:
!   region_model ();
    region_model (const region_model &other);
    ~region_model ();
  
--- 411,417 ----
  class region_model
  {
   public:
!   region_model (region_model_manager *mgr);
    region_model (const region_model &other);
    ~region_model ();
  
*************** class region_model
*** 1694,1724 ****
  
    void print (pretty_printer *pp) const;
  
!   void print_svalue (svalue_id sid, pretty_printer *pp) const;
! 
!   void dump_dot_to_pp (pretty_printer *pp) const;
!   void dump_dot_to_file (FILE *fp) const;
!   void dump_dot (const char *path) const;
! 
!   void dump_to_pp (pretty_printer *pp, bool summarize) const;
!   void dump (FILE *fp, bool summarize) const;
!   void dump (bool summarize) const;
  
    void debug () const;
  
    void validate () const;
  
!   void canonicalize (region_model_context *ctxt);
    bool canonicalized_p () const;
  
-   void check_for_poison (tree expr, region_model_context *ctxt);
    void on_assignment (const gassign *stmt, region_model_context *ctxt);
!   bool on_call_pre (const gcall *stmt, region_model_context *ctxt);
    void on_call_post (const gcall *stmt,
  		     bool unknown_side_effects,
  		     region_model_context *ctxt);
    void handle_unrecognized_call (const gcall *call,
  				 region_model_context *ctxt);
    void on_return (const greturn *stmt, region_model_context *ctxt);
    void on_setjmp (const gcall *stmt, const exploded_node *enode,
  		  region_model_context *ctxt);
--- 431,483 ----
  
    void print (pretty_printer *pp) const;
  
!   void dump_to_pp (pretty_printer *pp, bool simple, bool multiline) const;
!   void dump (FILE *fp, bool simple, bool multiline) const;
!   void dump (bool simple) const;
  
    void debug () const;
  
    void validate () const;
  
!   void canonicalize ();
    bool canonicalized_p () const;
  
    void on_assignment (const gassign *stmt, region_model_context *ctxt);
!   const svalue *get_gassign_result (const gassign *assign,
! 				    region_model_context *ctxt);
!   bool on_call_pre (const gcall *stmt, region_model_context *ctxt,
! 		    bool *out_terminate_path);
    void on_call_post (const gcall *stmt,
  		     bool unknown_side_effects,
  		     region_model_context *ctxt);
+ 
+   /* Specific handling for on_call_pre.  */
+   bool impl_call_alloca (const call_details &cd);
+   void impl_call_analyzer_describe (const gcall *call,
+ 				    region_model_context *ctxt);
+   void impl_call_analyzer_eval (const gcall *call,
+ 				region_model_context *ctxt);
+   bool impl_call_builtin_expect (const call_details &cd);
+   bool impl_call_calloc (const call_details &cd);
+   bool impl_call_error (const call_details &cd, unsigned min_args,
+ 			bool *out_terminate_path);
+   void impl_call_free (const call_details &cd);
+   bool impl_call_malloc (const call_details &cd);
+   void impl_call_memcpy (const call_details &cd);
+   bool impl_call_memset (const call_details &cd);
+   void impl_call_realloc (const call_details &cd);
+   void impl_call_strcpy (const call_details &cd);
+   bool impl_call_strlen (const call_details &cd);
+   bool impl_call_operator_new (const call_details &cd);
+   bool impl_call_operator_delete (const call_details &cd);
+   void impl_deallocation_call (const call_details &cd);
+ 
    void handle_unrecognized_call (const gcall *call,
  				 region_model_context *ctxt);
+   void get_reachable_svalues (svalue_set *out,
+ 			      const svalue *extra_sval,
+ 			      const uncertainty_t *uncertainty);
+ 
    void on_return (const greturn *stmt, region_model_context *ctxt);
    void on_setjmp (const gcall *stmt, const exploded_node *enode,
  		  region_model_context *ctxt);
*************** class region_model
*** 1729,1844 ****
  			const cfg_superedge *last_cfg_superedge,
  			region_model_context *ctxt);
  
!   void handle_phi (const gphi *phi,
! 		   tree lhs, tree rhs, bool is_back_edge,
  		   region_model_context *ctxt);
  
    bool maybe_update_for_edge (const superedge &edge,
  			      const gimple *last_stmt,
! 			      region_model_context *ctxt);
! 
!   region_id get_root_rid () const { return m_root_rid; }
!   root_region *get_root_region () const;
  
!   region_id get_stack_region_id () const;
!   region_id push_frame (function *fun, vec<svalue_id> *arg_sids,
! 			region_model_context *ctxt);
!   region_id get_current_frame_id () const;
    function * get_current_function () const;
!   void pop_frame (region_id result_dst_rid,
! 		  bool purge, purge_stats *stats,
  		  region_model_context *ctxt);
    int get_stack_depth () const;
!   function *get_function_at_depth (unsigned depth) const;
! 
!   region_id get_globals_region_id () const;
! 
!   svalue_id add_svalue (svalue *sval);
!   void replace_svalue (svalue_id sid, svalue *new_sval);
! 
!   region_id add_region (region *r);
! 
!   region_id add_region_for_type (region_id parent_rid, tree type,
! 				 region_model_context *ctxt);
! 
!   svalue *get_svalue (svalue_id sval_id) const;
!   region *get_region (region_id rid) const;
! 
!   template <typename Subclass>
!   Subclass *get_region (region_id rid) const
!   {
!     region *result = get_region (rid);
!     if (result)
!       gcc_assert (is_a<Subclass *> (result));
!     return (Subclass *)result;
!   }
! 
!   region_id get_lvalue (path_var pv, region_model_context *ctxt);
!   region_id get_lvalue (tree expr, region_model_context *ctxt);
!   svalue_id get_rvalue (path_var pv, region_model_context *ctxt);
!   svalue_id get_rvalue (tree expr, region_model_context *ctxt);
! 
!   svalue_id get_or_create_ptr_svalue (tree ptr_type, region_id id);
!   svalue_id get_or_create_constant_svalue (tree cst_expr);
!   svalue_id get_svalue_for_fndecl (tree ptr_type, tree fndecl,
! 				   region_model_context *ctxt);
!   svalue_id get_svalue_for_label (tree ptr_type, tree label,
! 				  region_model_context *ctxt);
! 
!   region_id get_region_for_fndecl (tree fndecl, region_model_context *ctxt);
!   region_id get_region_for_label (tree label, region_model_context *ctxt);
! 
!   svalue_id maybe_cast (tree type, svalue_id sid, region_model_context *ctxt);
!   svalue_id maybe_cast_1 (tree type, svalue_id sid);
  
!   region_id get_field_region (region_id rid, tree field,
! 			      region_model_context *ctxt);
  
!   region_id deref_rvalue (svalue_id ptr_sid, region_model_context *ctxt);
!   region_id deref_rvalue (tree ptr, region_model_context *ctxt);
  
!   void set_value (region_id lhs_rid, svalue_id rhs_sid,
  		  region_model_context *ctxt);
    void set_value (tree lhs, tree rhs, region_model_context *ctxt);
!   svalue_id set_to_new_unknown_value (region_id dst_rid, tree type,
! 				      region_model_context *ctxt);
  
!   void copy_region (region_id dst_rid, region_id src_rid,
  		    region_model_context *ctxt);
! 
!   tristate eval_condition (svalue_id lhs,
  			   enum tree_code op,
! 			   svalue_id rhs) const;
!   tristate eval_condition_without_cm (svalue_id lhs,
  				      enum tree_code op,
! 				      svalue_id rhs) const;
    tristate eval_condition (tree lhs,
  			   enum tree_code op,
  			   tree rhs,
  			   region_model_context *ctxt);
    bool add_constraint (tree lhs, enum tree_code op, tree rhs,
  		       region_model_context *ctxt);
  
!   tree maybe_get_constant (svalue_id sid) const;
! 
!   region_id add_new_malloc_region ();
! 
!   tree get_representative_tree (svalue_id sid) const;
!   path_var get_representative_path_var (region_id rid) const;
!   void get_path_vars_for_svalue (svalue_id sid, vec<path_var> *out) const;
! 
!   void purge_unused_svalues (purge_stats *out,
! 			     region_model_context *ctxt,
! 			     svalue_id_set *known_used_sids = NULL);
!   void remap_svalue_ids (const svalue_id_map &map);
!   void remap_region_ids (const region_id_map &map);
! 
!   void purge_regions (const region_id_set &set,
! 		      purge_stats *stats,
! 		      logger *logger);
  
!   unsigned get_num_svalues () const { return m_svalues.length (); }
!   unsigned get_num_regions () const { return m_regions.length (); }
  
    /* For selftests.  */
    constraint_manager *get_constraints ()
--- 488,557 ----
  			const cfg_superedge *last_cfg_superedge,
  			region_model_context *ctxt);
  
!   void handle_phi (const gphi *phi, tree lhs, tree rhs,
  		   region_model_context *ctxt);
  
    bool maybe_update_for_edge (const superedge &edge,
  			      const gimple *last_stmt,
! 			      region_model_context *ctxt,
! 			      rejected_constraint **out);
  
!   const region *push_frame (function *fun, const vec<const svalue *> *arg_sids,
! 			    region_model_context *ctxt);
!   const frame_region *get_current_frame () const { return m_current_frame; }
    function * get_current_function () const;
!   void pop_frame (const region *result_dst,
! 		  const svalue **out_result,
  		  region_model_context *ctxt);
    int get_stack_depth () const;
!   const frame_region *get_frame_at_index (int index) const;
  
!   const region *get_lvalue (path_var pv, region_model_context *ctxt);
!   const region *get_lvalue (tree expr, region_model_context *ctxt);
!   const svalue *get_rvalue (path_var pv, region_model_context *ctxt);
!   const svalue *get_rvalue (tree expr, region_model_context *ctxt);
  
!   const region *deref_rvalue (const svalue *ptr_sval, tree ptr_tree,
! 			       region_model_context *ctxt);
  
!   void set_value (const region *lhs_reg, const svalue *rhs_sval,
  		  region_model_context *ctxt);
    void set_value (tree lhs, tree rhs, region_model_context *ctxt);
!   void clobber_region (const region *reg);
!   void purge_region (const region *reg);
!   void zero_fill_region (const region *reg);
!   void mark_region_as_unknown (const region *reg, uncertainty_t *uncertainty);
  
!   void copy_region (const region *dst_reg, const region *src_reg,
  		    region_model_context *ctxt);
!   tristate eval_condition (const svalue *lhs,
  			   enum tree_code op,
! 			   const svalue *rhs) const;
!   tristate eval_condition_without_cm (const svalue *lhs,
  				      enum tree_code op,
! 				      const svalue *rhs) const;
!   tristate compare_initial_and_pointer (const initial_svalue *init,
! 					const region_svalue *ptr) const;
    tristate eval_condition (tree lhs,
  			   enum tree_code op,
  			   tree rhs,
  			   region_model_context *ctxt);
    bool add_constraint (tree lhs, enum tree_code op, tree rhs,
  		       region_model_context *ctxt);
+   bool add_constraint (tree lhs, enum tree_code op, tree rhs,
+ 		       region_model_context *ctxt,
+ 		       rejected_constraint **out);
  
!   const region *create_region_for_heap_alloc (const svalue *size_in_bytes);
!   const region *create_region_for_alloca (const svalue *size_in_bytes);
  
!   tree get_representative_tree (const svalue *sval) const;
!   path_var
!   get_representative_path_var (const svalue *sval,
! 			       svalue_set *visited) const;
!   path_var
!   get_representative_path_var (const region *reg,
! 			       svalue_set *visited) const;
  
    /* For selftests.  */
    constraint_manager *get_constraints ()
*************** class region_model
*** 1846,1898 ****
      return m_constraints;
    }
  
!   void get_descendents (region_id rid, region_id_set *out,
! 			region_id exclude_rid) const;
  
!   void delete_region_and_descendents (region_id rid,
! 				      enum poison_kind pkind,
! 				      purge_stats *stats,
! 				      logger *logger);
  
    bool can_merge_with_p (const region_model &other_model,
! 			 region_model *out_model,
! 			 svalue_id_merger_mapping *out) const;
!   bool can_merge_with_p (const region_model &other_model,
  			 region_model *out_model) const;
  
!   svalue_id get_value_by_name (const char *name) const;
  
!   svalue_id convert_byte_offset_to_array_index (tree ptr_type,
! 						svalue_id offset_sid);
  
!   region_id get_or_create_mem_ref (tree type,
! 				   svalue_id ptr_sid,
! 				   svalue_id offset_sid,
! 				   region_model_context *ctxt);
!   region_id get_or_create_pointer_plus_expr (tree type,
! 					     svalue_id ptr_sid,
! 					     svalue_id offset_sid,
! 					     region_model_context *ctxt);
!   region_id get_or_create_view (region_id raw_rid, tree type,
! 				region_model_context *ctxt);
  
!   tree get_fndecl_for_call (const gcall *call,
! 			    region_model_context *ctxt);
  
!  private:
!   region_id get_lvalue_1 (path_var pv, region_model_context *ctxt);
!   svalue_id get_rvalue_1 (path_var pv, region_model_context *ctxt);
  
!   void copy_struct_region (region_id dst_rid, struct_region *dst_reg,
! 			   struct_region *src_reg, region_model_context *ctxt);
!   void copy_union_region (region_id dst_rid, union_region *src_reg,
! 			  region_model_context *ctxt);
!   void copy_array_region (region_id dst_rid, array_region *dst_reg,
! 			  array_region *src_reg, region_model_context *ctxt);
  
!   region_id make_region_for_unexpected_tree_code (region_model_context *ctxt,
! 						  tree t,
! 						  const dump_location_t &loc);
  
    void add_any_constraints_from_ssa_def_stmt (tree lhs,
  					      enum tree_code op,
--- 559,600 ----
      return m_constraints;
    }
  
!   store *get_store () { return &m_store; }
!   const store *get_store () const { return &m_store; }
  
!   region_model_manager *get_manager () const { return m_mgr; }
! 
!   void unbind_region_and_descendents (const region *reg,
! 				      enum poison_kind pkind);
  
    bool can_merge_with_p (const region_model &other_model,
! 			 const program_point &point,
  			 region_model *out_model) const;
  
!   tree get_fndecl_for_call (const gcall *call,
! 			    region_model_context *ctxt);
  
!   void get_ssa_name_regions_for_current_frame
!     (auto_vec<const decl_region *> *out) const;
!   static void append_ssa_names_cb (const region *base_reg,
! 				   struct append_ssa_names_cb_data *data);
  
!   const svalue *get_store_value (const region *reg) const;
  
!   bool region_exists_p (const region *reg) const;
  
!   void loop_replay_fixup (const region_model *dst_state);
  
!  private:
!   const region *get_lvalue_1 (path_var pv, region_model_context *ctxt);
!   const svalue *get_rvalue_1 (path_var pv, region_model_context *ctxt);
  
!   path_var
!   get_representative_path_var_1 (const svalue *sval,
! 				 svalue_set *visited) const;
!   path_var
!   get_representative_path_var_1 (const region *reg,
! 				 svalue_set *visited) const;
  
    void add_any_constraints_from_ssa_def_stmt (tree lhs,
  					      enum tree_code op,
*************** class region_model
*** 1915,1945 ****
  				region_model_context *ctxt);
    bool apply_constraints_for_gcond (const cfg_superedge &edge,
  				    const gcond *cond_stmt,
! 				    region_model_context *ctxt);
    bool apply_constraints_for_gswitch (const switch_cfg_superedge &edge,
  				      const gswitch *switch_stmt,
! 				      region_model_context *ctxt);
  
!   void poison_any_pointers_to_bad_regions (const region_id_set &bad_regions,
! 					   enum poison_kind pkind);
  
!   void dump_summary_of_rep_path_vars (pretty_printer *pp,
! 				      auto_vec<path_var> *rep_path_vars,
! 				      bool *is_first);
  
-   auto_delete_vec<svalue> m_svalues;
-   auto_delete_vec<region> m_regions;
-   region_id m_root_rid;
    constraint_manager *m_constraints; // TODO: embed, rather than dynalloc?
  };
  
  /* Some region_model activity could lead to warnings (e.g. attempts to use an
     uninitialized value).  This abstract base class encapsulates an interface
     for the region model to use when emitting such warnings.
  
-    It also provides an interface for being notified about svalue_ids being
-    remapped, and being deleted.
- 
     Having this as an abstract base class allows us to support the various
     operations needed by program_state in the analyzer within region_model,
     whilst keeping them somewhat modularized.  */
--- 617,660 ----
  				region_model_context *ctxt);
    bool apply_constraints_for_gcond (const cfg_superedge &edge,
  				    const gcond *cond_stmt,
! 				    region_model_context *ctxt,
! 				    rejected_constraint **out);
    bool apply_constraints_for_gswitch (const switch_cfg_superedge &edge,
  				      const gswitch *switch_stmt,
! 				      region_model_context *ctxt,
! 				      rejected_constraint **out);
!   bool apply_constraints_for_exception (const gimple *last_stmt,
! 					region_model_context *ctxt,
! 					rejected_constraint **out);
  
!   int poison_any_pointers_to_descendents (const region *reg,
! 					  enum poison_kind pkind);
  
!   void on_top_level_param (tree param, region_model_context *ctxt);
! 
!   void record_dynamic_extents (const region *reg,
! 			       const svalue *size_in_bytes);
! 
!   bool called_from_main_p () const;
!   const svalue *get_initial_value_for_global (const region *reg) const;
! 
!   void check_for_writable_region (const region* dest_reg,
! 				  region_model_context *ctxt) const;
! 
!   /* Storing this here to avoid passing it around everywhere.  */
!   region_model_manager *const m_mgr;
! 
!   store m_store;
  
    constraint_manager *m_constraints; // TODO: embed, rather than dynalloc?
+ 
+   const frame_region *m_current_frame;
  };
  
  /* Some region_model activity could lead to warnings (e.g. attempts to use an
     uninitialized value).  This abstract base class encapsulates an interface
     for the region model to use when emitting such warnings.
  
     Having this as an abstract base class allows us to support the various
     operations needed by program_state in the analyzer within region_model,
     whilst keeping them somewhat modularized.  */
*************** class region_model_context
*** 1949,1995 ****
   public:
    virtual void warn (pending_diagnostic *d) = 0;
  
!   /* Hook for clients that store svalue_id instances, so that they
!      can remap their IDs when the underlying region_model renumbers
!      the IDs.  */
!   virtual void remap_svalue_ids (const svalue_id_map &map) = 0;
! 
! #if 0
!   /* Return true if if's OK to purge SID when simplifying state.
!      Subclasses can return false for values that have sm state,
!      to avoid generating "leak" false positives.  */
!   virtual bool can_purge_p (svalue_id sid) = 0;
! #endif
  
!   /* Hook for clients to be notified when a range of SIDs have
!      been purged, so that they can purge state relating to those
!      values (and potentially emit warnings about leaks).
!      All SIDs from FIRST_PURGED_SID numerically upwards are being
!      purged.
!      The return values is a count of how many items of data the client
!      has purged (potentially for use in selftests).
!      MAP has already been applied to the IDs, but is provided in case
!      the client needs to figure out the old IDs.  */
!   virtual int on_svalue_purge (svalue_id first_purged_sid,
! 			       const svalue_id_map &map) = 0;
  
    virtual logger *get_logger () = 0;
  
-   /* Hook for clients to be notified when CHILD_SID is created
-      from PARENT_SID, when "inheriting" a value for a region from a
-      parent region.
-      This exists so that state machines that inherit state can
-      propagate the state from parent to child.  */
-   virtual void on_inherited_svalue (svalue_id parent_sid,
- 				    svalue_id child_sid) = 0;
- 
-   /* Hook for clients to be notified when DST_SID is created
-      (or reused) as a cast from SRC_SID.
-      This exists so that state machines can propagate the state
-      from SRC_SID to DST_SID.  */
-   virtual void on_cast (svalue_id src_sid,
- 			svalue_id dst_sid) = 0;
- 
    /* Hook for clients to be notified when the condition
       "LHS OP RHS" is added to the region model.
       This exists so that state machines can detect tests on edges,
--- 664,682 ----
   public:
    virtual void warn (pending_diagnostic *d) = 0;
  
!   /* Hook for clients to be notified when an SVAL that was reachable
!      in a previous state is no longer live, so that clients can emit warnings
!      about leaks.  */
!   virtual void on_svalue_leak (const svalue *sval) = 0;
  
!   /* Hook for clients to be notified when the set of explicitly live
!      svalues changes, so that they can purge state relating to dead
!      svalues.  */
!   virtual void on_liveness_change (const svalue_set &live_svalues,
! 				   const region_model *model) = 0;
  
    virtual logger *get_logger () = 0;
  
    /* Hook for clients to be notified when the condition
       "LHS OP RHS" is added to the region model.
       This exists so that state machines can detect tests on edges,
*************** class region_model_context
*** 1999,2006 ****
    virtual void on_condition (tree lhs, enum tree_code op, tree rhs) = 0;
  
    /* Hooks for clients to be notified when an unknown change happens
!      to SID (in response to a call to an unknown function).  */
!   virtual void on_unknown_change (svalue_id sid) = 0;
  
    /* Hooks for clients to be notified when a phi node is handled,
       where RHS is the pertinent argument.  */
--- 686,693 ----
    virtual void on_condition (tree lhs, enum tree_code op, tree rhs) = 0;
  
    /* Hooks for clients to be notified when an unknown change happens
!      to SVAL (in response to a call to an unknown function).  */
!   virtual void on_unknown_change (const svalue *sval, bool is_mutable) = 0;
  
    /* Hooks for clients to be notified when a phi node is handled,
       where RHS is the pertinent argument.  */
*************** class region_model_context
*** 2010,2015 ****
--- 697,707 ----
       know how to handle the tree code of T at LOC.  */
    virtual void on_unexpected_tree_code (tree t,
  					const dump_location_t &loc) = 0;
+ 
+   /* Hook for clients to be notified when a function_decl escapes.  */
+   virtual void on_escaped_function (tree fndecl) = 0;
+ 
+   virtual uncertainty_t *get_uncertainty () = 0;
  };
  
  /* A "do nothing" subclass of region_model_context.  */
*************** class noop_region_model_context : public
*** 2018,2044 ****
  {
  public:
    void warn (pending_diagnostic *) OVERRIDE {}
!   void remap_svalue_ids (const svalue_id_map &) OVERRIDE {}
!   int on_svalue_purge (svalue_id, const svalue_id_map &) OVERRIDE
!   {
!     return 0;
!   }
    logger *get_logger () OVERRIDE { return NULL; }
-   void on_inherited_svalue (svalue_id parent_sid ATTRIBUTE_UNUSED,
- 			    svalue_id child_sid  ATTRIBUTE_UNUSED)
-     OVERRIDE
-   {
-   }
-   void on_cast (svalue_id src_sid ATTRIBUTE_UNUSED,
- 		svalue_id dst_sid ATTRIBUTE_UNUSED) OVERRIDE
-   {
-   }
    void on_condition (tree lhs ATTRIBUTE_UNUSED,
  		     enum tree_code op ATTRIBUTE_UNUSED,
  		     tree rhs ATTRIBUTE_UNUSED) OVERRIDE
    {
    }
!   void on_unknown_change (svalue_id sid ATTRIBUTE_UNUSED) OVERRIDE
    {
    }
    void on_phi (const gphi *phi ATTRIBUTE_UNUSED,
--- 710,726 ----
  {
  public:
    void warn (pending_diagnostic *) OVERRIDE {}
!   void on_svalue_leak (const svalue *) OVERRIDE {}
!   void on_liveness_change (const svalue_set &,
! 			   const region_model *) OVERRIDE {}
    logger *get_logger () OVERRIDE { return NULL; }
    void on_condition (tree lhs ATTRIBUTE_UNUSED,
  		     enum tree_code op ATTRIBUTE_UNUSED,
  		     tree rhs ATTRIBUTE_UNUSED) OVERRIDE
    {
    }
!   void on_unknown_change (const svalue *sval ATTRIBUTE_UNUSED,
! 			  bool is_mutable ATTRIBUTE_UNUSED) OVERRIDE
    {
    }
    void on_phi (const gphi *phi ATTRIBUTE_UNUSED,
*************** public:
*** 2046,2051 ****
--- 728,737 ----
    {
    }
    void on_unexpected_tree_code (tree, const dump_location_t &) OVERRIDE {}
+ 
+   void on_escaped_function (tree) OVERRIDE {}
+ 
+   uncertainty_t *get_uncertainty () OVERRIDE { return NULL; }
  };
  
  /* A subclass of region_model_context for determining if operations fail
*************** struct model_merger
*** 2075,2183 ****
  {
    model_merger (const region_model *model_a,
  		const region_model *model_b,
! 		region_model *merged_model,
! 		svalue_id_merger_mapping *sid_mapping)
    : m_model_a (model_a), m_model_b (model_b),
!     m_merged_model (merged_model),
!     m_map_regions_from_a_to_m (model_a->get_num_regions ()),
!     m_map_regions_from_b_to_m (model_b->get_num_regions ()),
!     m_sid_mapping (sid_mapping)
    {
-     gcc_assert (sid_mapping);
    }
  
!   void dump_to_pp (pretty_printer *pp) const;
!   void dump (FILE *fp) const;
!   void dump () const;
! 
!   template <typename Subclass>
!   Subclass *get_region_a (region_id rid_a) const
!   {
!     return m_model_a->get_region <Subclass> (rid_a);
!   }
  
!   template <typename Subclass>
!   Subclass *get_region_b (region_id rid_b) const
    {
!     return m_model_b->get_region <Subclass> (rid_b);
    }
  
-   bool can_merge_values_p (svalue_id sid_a,
- 			   svalue_id sid_b,
- 			   svalue_id *merged_sid);
- 
-   void record_regions (region_id a_rid,
- 		       region_id b_rid,
- 		       region_id merged_rid);
- 
-   void record_svalues (svalue_id a_sid,
- 		       svalue_id b_sid,
- 		       svalue_id merged_sid);
- 
    const region_model *m_model_a;
    const region_model *m_model_b;
    region_model *m_merged_model;
- 
-   one_way_region_id_map m_map_regions_from_a_to_m;
-   one_way_region_id_map m_map_regions_from_b_to_m;
-   svalue_id_merger_mapping *m_sid_mapping;
  };
  
! /* A bundle of data that can be optionally generated during merger of two
!    region_models that describes how svalue_ids in each of the two inputs
!    are mapped to svalue_ids in the merged output.
! 
!    For use when merging sm-states within program_state.  */
  
! struct svalue_id_merger_mapping
  {
!   svalue_id_merger_mapping (const region_model &a,
! 			    const region_model &b);
  
    void dump_to_pp (pretty_printer *pp) const;
-   void dump (FILE *fp) const;
-   void dump () const;
  
!   one_way_svalue_id_map m_map_from_a_to_m;
!   one_way_svalue_id_map m_map_from_b_to_m;
  };
  
! /* A bundle of data used when canonicalizing a region_model so that the
!    order of regions and svalues is in a predictable order (thus increasing
!    the chance of two region_models being equal).
! 
!    This object is used to keep track of a recursive traversal across the
!    svalues and regions within the model, made in a deterministic order,
!    assigning new ids the first time each region or svalue is
!    encountered.  */
  
! struct canonicalization
  {
!   canonicalization (const region_model &model);
!   void walk_rid (region_id rid);
!   void walk_sid (svalue_id sid);
  
!   void dump_to_pp (pretty_printer *pp) const;
!   void dump (FILE *fp) const;
!   void dump () const;
  
-   const region_model &m_model;
-   /* Maps from existing IDs to new IDs.  */
-   region_id_map m_rid_map;
-   svalue_id_map m_sid_map;
-   /* The next IDs to hand out.  */
-   int m_next_rid_int;
-   int m_next_sid_int;
  };
  
  } // namespace ana
  
- namespace inchash
- {
-   extern void add (svalue_id sid, hash &hstate);
-   extern void add (region_id rid, hash &hstate);
- } // namespace inchash
- 
  extern void debug (const region_model &rmodel);
  
  namespace ana {
--- 761,823 ----
  {
    model_merger (const region_model *model_a,
  		const region_model *model_b,
! 		const program_point &point,
! 		region_model *merged_model)
    : m_model_a (model_a), m_model_b (model_b),
!     m_point (point),
!     m_merged_model (merged_model)
    {
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const;
!   void dump (FILE *fp, bool simple) const;
!   void dump (bool simple) const;
  
!   region_model_manager *get_manager () const
    {
!     return m_model_a->get_manager ();
    }
  
    const region_model *m_model_a;
    const region_model *m_model_b;
+   const program_point &m_point;
    region_model *m_merged_model;
  };
  
! /* A record that can (optionally) be written out when
!    region_model::add_constraint fails.  */
  
! struct rejected_constraint
  {
!   rejected_constraint (const region_model &model,
! 		     tree lhs, enum tree_code op, tree rhs)
!   : m_model (model), m_lhs (lhs), m_op (op), m_rhs (rhs)
!   {}
  
    void dump_to_pp (pretty_printer *pp) const;
  
!   region_model m_model;
!   tree m_lhs;
!   enum tree_code m_op;
!   tree m_rhs;
  };
  
! /* A bundle of state.  */
  
! class engine
  {
! public:
!   region_model_manager *get_model_manager () { return &m_mgr; }
  
!   void log_stats (logger *logger) const;
! 
! private:
!   region_model_manager m_mgr;
  
  };
  
  } // namespace ana
  
  extern void debug (const region_model &rmodel);
  
  namespace ana {
*************** public:
*** 2205,2211 ****
      FINAL OVERRIDE
    {
      internal_error ("unhandled tree code: %qs",
! 		    t ? get_tree_code_name (TREE_CODE (t)) : "(null)");
    }
  
  private:
--- 845,851 ----
      FINAL OVERRIDE
    {
      internal_error ("unhandled tree code: %qs",
! 		    get_tree_code_name (TREE_CODE (t)));
    }
  
  private:
*************** private:
*** 2235,2240 ****
--- 875,885 ----
  
  void assert_condition (const location &loc,
  		       region_model &model,
+ 		       const svalue *lhs, tree_code op, const svalue *rhs,
+ 		       tristate expected);
+ 
+ void assert_condition (const location &loc,
+ 		       region_model &model,
  		       tree lhs, tree_code op, tree rhs,
  		       tristate expected);
  
diff -Nrcpad gcc-10.3.0/gcc/analyzer/region.cc gcc-11.1.0/gcc/analyzer/region.cc
*** gcc-10.3.0/gcc/analyzer/region.cc	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/analyzer/region.cc	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,1175 ----
+ /* Regions of memory.
+    Copyright (C) 2019-2021 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.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/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "diagnostic-core.h"
+ #include "gimple-pretty-print.h"
+ #include "function.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "gimple-iterator.h"
+ #include "diagnostic-core.h"
+ #include "graphviz.h"
+ #include "options.h"
+ #include "cgraph.h"
+ #include "tree-dfa.h"
+ #include "stringpool.h"
+ #include "convert.h"
+ #include "target.h"
+ #include "fold-const.h"
+ #include "tree-pretty-print.h"
+ #include "diagnostic-color.h"
+ #include "diagnostic-metadata.h"
+ #include "tristate.h"
+ #include "bitmap.h"
+ #include "selftest.h"
+ #include "function.h"
+ #include "json.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "ordered-hash-map.h"
+ #include "options.h"
+ #include "cgraph.h"
+ #include "cfg.h"
+ #include "digraph.h"
+ #include "analyzer/supergraph.h"
+ #include "sbitmap.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
+ #include "analyzer/region.h"
+ #include "analyzer/region-model.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* class region and its various subclasses.  */
+ 
+ /* class region.  */
+ 
+ region::~region ()
+ {
+   delete m_cached_offset;
+ }
+ 
+ /* Compare REG1 and REG2 by id.  */
+ 
+ int
+ region::cmp_ids (const region *reg1, const region *reg2)
+ {
+   return (long)reg1->get_id () - (long)reg2->get_id ();
+ }
+ 
+ /* Determine the base region for this region: when considering bindings
+    for this region, the base region is the ancestor which identifies
+    which cluster they should be partitioned into.
+    Regions within the same struct/union/array are in the same cluster.
+    Different decls are in different clusters.  */
+ 
+ const region *
+ region::get_base_region () const
+ {
+   const region *iter = this;
+   while (iter)
+     {
+       switch (iter->get_kind ())
+ 	{
+ 	case RK_FIELD:
+ 	case RK_ELEMENT:
+ 	case RK_OFFSET:
+ 	  iter = iter->get_parent_region ();
+ 	  continue;
+ 	case RK_CAST:
+ 	  iter = iter->dyn_cast_cast_region ()->get_original_region ();
+ 	  continue;
+ 	default:
+ 	  return iter;
+ 	}
+     }
+   return iter;
+ }
+ 
+ /* Return true if get_base_region() == this for this region.  */
+ 
+ bool
+ region::base_region_p () const
+ {
+   switch (get_kind ())
+     {
+     /* Region kinds representing a descendent of a base region.  */
+     case RK_FIELD:
+     case RK_ELEMENT:
+     case RK_OFFSET:
+     case RK_CAST:
+       return false;
+ 
+     default:
+       return true;
+     }
+ }
+ 
+ /* Return true if this region is ELDER or one of its descendents.  */
+ 
+ bool
+ region::descendent_of_p (const region *elder) const
+ {
+   const region *iter = this;
+   while (iter)
+     {
+       if (iter == elder)
+ 	return true;
+       if (iter->get_kind () == RK_CAST)
+ 	iter = iter->dyn_cast_cast_region ()->get_original_region ();
+       else
+ 	iter = iter->get_parent_region ();
+     }
+   return false;
+ }
+ 
+ /* If this region is a frame_region, or a descendent of one, return it.
+    Otherwise return NULL.  */
+ 
+ const frame_region *
+ region::maybe_get_frame_region () const
+ {
+   const region *iter = this;
+   while (iter)
+     {
+       if (const frame_region *frame_reg = iter->dyn_cast_frame_region ())
+ 	return frame_reg;
+       if (iter->get_kind () == RK_CAST)
+ 	iter = iter->dyn_cast_cast_region ()->get_original_region ();
+       else
+ 	iter = iter->get_parent_region ();
+     }
+   return NULL;
+ }
+ 
+ /* If this region is a decl_region, return the decl.
+    Otherwise return NULL.  */
+ 
+ tree
+ region::maybe_get_decl () const
+ {
+   if (const decl_region *decl_reg = dyn_cast_decl_region ())
+     return decl_reg->get_decl ();
+   return NULL_TREE;
+ }
+ 
+ /* Get the region_offset for this region (calculating it on the
+    first call and caching it internally).  */
+ 
+ region_offset
+ region::get_offset () const
+ {
+   if(!m_cached_offset)
+     m_cached_offset = new region_offset (calc_offset ());
+   return *m_cached_offset;
+ }
+ 
+ /* If the size of this region (in bytes) is known statically, write it to *OUT
+    and return true.
+    Otherwise return false.  */
+ 
+ bool
+ region::get_byte_size (byte_size_t *out) const
+ {
+   tree type = get_type ();
+ 
+   /* Bail out e.g. for heap-allocated regions.  */
+   if (!type)
+     return false;
+ 
+   HOST_WIDE_INT bytes = int_size_in_bytes (type);
+   if (bytes == -1)
+     return false;
+   *out = bytes;
+   return true;
+ }
+ 
+ /* If the size of this region (in bits) is known statically, write it to *OUT
+    and return true.
+    Otherwise return false.  */
+ 
+ bool
+ region::get_bit_size (bit_size_t *out) const
+ {
+   byte_size_t byte_size;
+   if (!get_byte_size (&byte_size))
+     return false;
+   *out = byte_size * BITS_PER_UNIT;
+   return true;
+ }
+ 
+ /* Get the field within RECORD_TYPE at BIT_OFFSET.  */
+ 
+ static tree
+ get_field_at_bit_offset (tree record_type, bit_offset_t bit_offset)
+ {
+   gcc_assert (TREE_CODE (record_type) == RECORD_TYPE);
+   if (bit_offset < 0)
+     return NULL;
+ 
+   /* Find the first field that has an offset > BIT_OFFSET,
+      then return the one preceding it.
+      Skip other trees within the chain, such as FUNCTION_DECLs.  */
+   tree last_field = NULL_TREE;
+   for (tree iter = TYPE_FIELDS (record_type); iter != NULL_TREE;
+        iter = DECL_CHAIN (iter))
+     {
+       if (TREE_CODE (iter) == FIELD_DECL)
+ 	{
+ 	  int iter_field_offset = int_bit_position (iter);
+ 	  if (bit_offset < iter_field_offset)
+ 	    return last_field;
+ 	  last_field = iter;
+ 	}
+     }
+   return last_field;
+ }
+ 
+ /* Populate *OUT with descendent regions of type TYPE that match
+    RELATIVE_BIT_OFFSET and SIZE_IN_BITS within this region.  */
+ 
+ void
+ region::get_subregions_for_binding (region_model_manager *mgr,
+ 				    bit_offset_t relative_bit_offset,
+ 				    bit_size_t size_in_bits,
+ 				    tree type,
+ 				    auto_vec <const region *> *out) const
+ {
+   if (get_type () == NULL_TREE || type == NULL_TREE)
+     return;
+   if (relative_bit_offset == 0
+       && types_compatible_p (get_type (), type))
+     {
+       out->safe_push (this);
+       return;
+     }
+   switch (TREE_CODE (get_type ()))
+     {
+     case ARRAY_TYPE:
+       {
+ 	tree element_type = TREE_TYPE (get_type ());
+ 	HOST_WIDE_INT hwi_byte_size = int_size_in_bytes (element_type);
+ 	if (hwi_byte_size > 0)
+ 	  {
+ 	    HOST_WIDE_INT bits_per_element
+ 	      = hwi_byte_size << LOG2_BITS_PER_UNIT;
+ 	    HOST_WIDE_INT element_index
+ 	      = (relative_bit_offset.to_shwi () / bits_per_element);
+ 	    tree element_index_cst
+ 	      = build_int_cst (integer_type_node, element_index);
+ 	    HOST_WIDE_INT inner_bit_offset
+ 	      = relative_bit_offset.to_shwi () % bits_per_element;
+ 	    const region *subregion = mgr->get_element_region
+ 	      (this, element_type,
+ 	       mgr->get_or_create_constant_svalue (element_index_cst));
+ 	    subregion->get_subregions_for_binding (mgr, inner_bit_offset,
+ 						   size_in_bits, type, out);
+ 	  }
+       }
+       break;
+     case RECORD_TYPE:
+       {
+ 	/* The bit offset might be *within* one of the fields (such as
+ 	   with nested structs).
+ 	   So we want to find the enclosing field, adjust the offset,
+ 	   and repeat.  */
+ 	if (tree field = get_field_at_bit_offset (get_type (),
+ 						  relative_bit_offset))
+ 	  {
+ 	    int field_bit_offset = int_bit_position (field);
+ 	    const region *subregion = mgr->get_field_region (this, field);
+ 	    subregion->get_subregions_for_binding
+ 	      (mgr, relative_bit_offset - field_bit_offset,
+ 	       size_in_bits, type, out);
+ 	  }
+       }
+       break;
+     case UNION_TYPE:
+       {
+ 	for (tree field = TYPE_FIELDS (get_type ()); field != NULL_TREE;
+ 	     field = DECL_CHAIN (field))
+ 	  {
+ 	    if (TREE_CODE (field) != FIELD_DECL)
+ 	      continue;
+ 	    const region *subregion = mgr->get_field_region (this, field);
+ 	    subregion->get_subregions_for_binding (mgr,
+ 						   relative_bit_offset,
+ 						   size_in_bits,
+ 						   type,
+ 						   out);
+ 	  }
+       }
+       break;
+     default:
+       /* Do nothing.  */
+       break;
+     }
+ }
+ 
+ /* Walk from this region up to the base region within its cluster, calculating
+    the offset relative to the base region, either as an offset in bits,
+    or a symbolic offset.  */
+ 
+ region_offset
+ region::calc_offset () const
+ {
+   const region *iter_region = this;
+   bit_offset_t accum_bit_offset = 0;
+ 
+   while (iter_region)
+     {
+       switch (iter_region->get_kind ())
+ 	{
+ 	case RK_FIELD:
+ 	  {
+ 	    const field_region *field_reg
+ 	      = (const field_region *)iter_region;
+ 	    iter_region = iter_region->get_parent_region ();
+ 
+ 	    /* Compare with e.g. gimple-fold.c's
+ 	       fold_nonarray_ctor_reference.  */
+ 	    tree field = field_reg->get_field ();
+ 	    tree byte_offset = DECL_FIELD_OFFSET (field);
+ 	    if (TREE_CODE (byte_offset) != INTEGER_CST)
+ 	      return region_offset::make_symbolic (iter_region);
+ 	    tree field_offset = DECL_FIELD_BIT_OFFSET (field);
+ 	    /* Compute bit offset of the field.  */
+ 	    offset_int bitoffset
+ 	      = (wi::to_offset (field_offset)
+ 		 + (wi::to_offset (byte_offset) << LOG2_BITS_PER_UNIT));
+ 	    accum_bit_offset += bitoffset;
+ 	  }
+ 	  continue;
+ 
+ 	case RK_ELEMENT:
+ 	  {
+ 	    const element_region *element_reg
+ 	      = (const element_region *)iter_region;
+ 	    iter_region = iter_region->get_parent_region ();
+ 
+ 	    if (tree idx_cst
+ 		  = element_reg->get_index ()->maybe_get_constant ())
+ 	      {
+ 		gcc_assert (TREE_CODE (idx_cst) == INTEGER_CST);
+ 
+ 		tree elem_type = element_reg->get_type ();
+ 		offset_int element_idx = wi::to_offset (idx_cst);
+ 
+ 		/* First, use int_size_in_bytes, to reject the case where we
+ 		   have an incomplete type, or a non-constant value.  */
+ 		HOST_WIDE_INT hwi_byte_size = int_size_in_bytes (elem_type);
+ 		if (hwi_byte_size > 0)
+ 		  {
+ 		    offset_int element_bit_size
+ 		      = hwi_byte_size << LOG2_BITS_PER_UNIT;
+ 		    offset_int element_bit_offset
+ 		      = element_idx * element_bit_size;
+ 		    accum_bit_offset += element_bit_offset;
+ 		    continue;
+ 		  }
+ 	      }
+ 	    return region_offset::make_symbolic (iter_region);
+ 	  }
+ 	  continue;
+ 
+ 	case RK_OFFSET:
+ 	  {
+ 	    const offset_region *offset_reg
+ 	      = (const offset_region *)iter_region;
+ 	    iter_region = iter_region->get_parent_region ();
+ 
+ 	    if (tree byte_offset_cst
+ 		  = offset_reg->get_byte_offset ()->maybe_get_constant ())
+ 	      {
+ 		gcc_assert (TREE_CODE (byte_offset_cst) == INTEGER_CST);
+ 		/* Use a signed value for the byte offset, to handle
+ 		   negative offsets.  */
+ 		HOST_WIDE_INT byte_offset
+ 		  = wi::to_offset (byte_offset_cst).to_shwi ();
+ 		HOST_WIDE_INT bit_offset = byte_offset * BITS_PER_UNIT;
+ 		accum_bit_offset += bit_offset;
+ 	      }
+ 	    else
+ 	      return region_offset::make_symbolic (iter_region);
+ 	  }
+ 	  continue;
+ 
+ 	case RK_CAST:
+ 	  {
+ 	    const cast_region *cast_reg
+ 	      = as_a <const cast_region *> (iter_region);
+ 	    iter_region = cast_reg->get_original_region ();
+ 	  }
+ 	  continue;
+ 
+ 	default:
+ 	  return region_offset::make_concrete (iter_region, accum_bit_offset);
+ 	}
+     }
+   return region_offset::make_concrete (iter_region, accum_bit_offset);
+ }
+ 
+ /* Copy from SRC_REG to DST_REG, using CTXT for any issues that occur.  */
+ 
+ void
+ region_model::copy_region (const region *dst_reg, const region *src_reg,
+ 			   region_model_context *ctxt)
+ {
+   gcc_assert (dst_reg);
+   gcc_assert (src_reg);
+   if (dst_reg == src_reg)
+     return;
+ 
+   const svalue *sval = get_store_value (src_reg);
+   set_value (dst_reg, sval, ctxt);
+ }
+ 
+ /* Dump a description of this region to stderr.  */
+ 
+ DEBUG_FUNCTION void
+ region::dump (bool simple) const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+   pp_show_color (&pp) = pp_show_color (global_dc->printer);
+   pp.buffer->stream = stderr;
+   dump_to_pp (&pp, simple);
+   pp_newline (&pp);
+   pp_flush (&pp);
+ }
+ 
+ /* Return a new json::string describing the region.  */
+ 
+ json::value *
+ region::to_json () const
+ {
+   label_text desc = get_desc (true);
+   json::value *reg_js = new json::string (desc.m_buffer);
+   desc.maybe_free ();
+   return reg_js;
+ }
+ 
+ /* Generate a description of this region.  */
+ 
+ DEBUG_FUNCTION label_text
+ region::get_desc (bool simple) const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+   dump_to_pp (&pp, simple);
+   return label_text::take (xstrdup (pp_formatted_text (&pp)));
+ }
+ 
+ /* Base implementation of region::accept vfunc.
+    Subclass implementations should chain up to this.  */
+ 
+ void
+ region::accept (visitor *v) const
+ {
+   v->visit_region (this);
+   if (m_parent)
+     m_parent->accept (v);
+ }
+ 
+ /* Return true if this is a symbolic region for deferencing an
+    unknown ptr.
+    We shouldn't attempt to bind values for this region (but
+    can unbind values for other regions).  */
+ 
+ bool
+ region::symbolic_for_unknown_ptr_p () const
+ {
+   if (const symbolic_region *sym_reg = dyn_cast_symbolic_region ())
+     if (sym_reg->get_pointer ()->get_kind () == SK_UNKNOWN)
+       return true;
+   return false;
+ }
+ 
+ /* region's ctor.  */
+ 
+ region::region (complexity c, unsigned id, const region *parent, tree type)
+ : m_complexity (c), m_id (id), m_parent (parent), m_type (type),
+   m_cached_offset (NULL)
+ {
+   gcc_assert (type == NULL_TREE || TYPE_P (type));
+ }
+ 
+ /* Comparator for use by vec<const region *>::qsort,
+    using their IDs to order them.  */
+ 
+ int
+ region::cmp_ptr_ptr (const void *p1, const void *p2)
+ {
+   const region * const *reg1 = (const region * const *)p1;
+   const region * const *reg2 = (const region * const *)p2;
+ 
+   return cmp_ids (*reg1, *reg2);
+ }
+ 
+ /* Determine if a pointer to this region must be non-NULL.
+ 
+    Generally, pointers to regions must be non-NULL, but pointers
+    to symbolic_regions might, in fact, be NULL.
+ 
+    This allows us to simulate functions like malloc and calloc with:
+    - only one "outcome" from each statement,
+    - the idea that the pointer is on the heap if non-NULL
+    - the possibility that the pointer could be NULL
+    - the idea that successive values returned from malloc are non-equal
+    - to be able to zero-fill for calloc.  */
+ 
+ bool
+ region::non_null_p () const
+ {
+   switch (get_kind ())
+     {
+     default:
+       return true;
+     case RK_SYMBOLIC:
+       /* Are we within a symbolic_region?  If so, it could be NULL, and we
+ 	 have to fall back on the constraints.  */
+       return false;
+     case RK_HEAP_ALLOCATED:
+       return false;
+     }
+ }
+ 
+ /* Comparator for trees to impose a deterministic ordering on
+    T1 and T2.  */
+ 
+ static int
+ tree_cmp (const_tree t1, const_tree t2)
+ {
+   gcc_assert (t1);
+   gcc_assert (t2);
+ 
+   /* Test tree codes first.  */
+   if (TREE_CODE (t1) != TREE_CODE (t2))
+     return TREE_CODE (t1) - TREE_CODE (t2);
+ 
+   /* From this point on, we know T1 and T2 have the same tree code.  */
+ 
+   if (DECL_P (t1))
+     {
+       if (DECL_NAME (t1) && DECL_NAME (t2))
+ 	return strcmp (IDENTIFIER_POINTER (DECL_NAME (t1)),
+ 		       IDENTIFIER_POINTER (DECL_NAME (t2)));
+       else
+ 	{
+ 	  if (DECL_NAME (t1))
+ 	    return -1;
+ 	  else if (DECL_NAME (t2))
+ 	    return 1;
+ 	  else
+ 	    return DECL_UID (t1) - DECL_UID (t2);
+ 	}
+     }
+ 
+   switch (TREE_CODE (t1))
+     {
+     case SSA_NAME:
+       {
+ 	if (SSA_NAME_VAR (t1) && SSA_NAME_VAR (t2))
+ 	  {
+ 	    int var_cmp = tree_cmp (SSA_NAME_VAR (t1), SSA_NAME_VAR (t2));
+ 	    if (var_cmp)
+ 	      return var_cmp;
+ 	    return SSA_NAME_VERSION (t1) - SSA_NAME_VERSION (t2);
+ 	  }
+ 	else
+ 	  {
+ 	    if (SSA_NAME_VAR (t1))
+ 	      return -1;
+ 	    else if (SSA_NAME_VAR (t2))
+ 	      return 1;
+ 	    else
+ 	      return SSA_NAME_VERSION (t1) - SSA_NAME_VERSION (t2);
+ 	  }
+       }
+       break;
+ 
+     case INTEGER_CST:
+       return tree_int_cst_compare (t1, t2);
+ 
+     case REAL_CST:
+       {
+ 	const real_value *rv1 = TREE_REAL_CST_PTR (t1);
+ 	const real_value *rv2 = TREE_REAL_CST_PTR (t2);
+ 	if (real_compare (UNORDERED_EXPR, rv1, rv2))
+ 	  {
+ 	    /* Impose an arbitrary order on NaNs relative to other NaNs
+ 	       and to non-NaNs.  */
+ 	    if (int cmp_isnan = real_isnan (rv1) - real_isnan (rv2))
+ 	      return cmp_isnan;
+ 	    if (int cmp_issignaling_nan
+ 		  = real_issignaling_nan (rv1) - real_issignaling_nan (rv2))
+ 	      return cmp_issignaling_nan;
+ 	    return real_isneg (rv1) - real_isneg (rv2);
+ 	  }
+ 	if (real_compare (LT_EXPR, rv1, rv2))
+ 	  return -1;
+ 	if (real_compare (GT_EXPR, rv1, rv2))
+ 	  return 1;
+ 	return 0;
+       }
+ 
+     case STRING_CST:
+       return strcmp (TREE_STRING_POINTER (t1),
+ 		     TREE_STRING_POINTER (t2));
+ 
+     default:
+       gcc_unreachable ();
+       break;
+     }
+ 
+   gcc_unreachable ();
+ 
+   return 0;
+ }
+ 
+ /* qsort comparator for trees to impose a deterministic ordering on
+    P1 and P2.  */
+ 
+ int
+ tree_cmp (const void *p1, const void *p2)
+ {
+   const_tree t1 = *(const_tree const *)p1;
+   const_tree t2 = *(const_tree const *)p2;
+ 
+   return tree_cmp (t1, t2);
+ }
+ 
+ /* class frame_region : public space_region.  */
+ 
+ frame_region::~frame_region ()
+ {
+   for (map_t::iterator iter = m_locals.begin ();
+        iter != m_locals.end ();
+        ++iter)
+     delete (*iter).second;
+ }
+ 
+ void
+ frame_region::accept (visitor *v) const
+ {
+   region::accept (v);
+   if (m_calling_frame)
+     m_calling_frame->accept (v);
+ }
+ 
+ /* Implementation of region::dump_to_pp vfunc for frame_region.  */
+ 
+ void
+ frame_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     pp_printf (pp, "frame: %qs@%i", function_name (m_fun), get_stack_depth ());
+   else
+     pp_printf (pp, "frame_region(%qs, index: %i, depth: %i)",
+ 	       function_name (m_fun), m_index, get_stack_depth ());
+ }
+ 
+ const decl_region *
+ frame_region::get_region_for_local (region_model_manager *mgr,
+ 				    tree expr) const
+ {
+   // TODO: could also check that VAR_DECLs are locals
+   gcc_assert (TREE_CODE (expr) == PARM_DECL
+ 	      || TREE_CODE (expr) == VAR_DECL
+ 	      || TREE_CODE (expr) == SSA_NAME
+ 	      || TREE_CODE (expr) == RESULT_DECL);
+ 
+   /* Ideally we'd use mutable here.  */
+   map_t &mutable_locals = const_cast <map_t &> (m_locals);
+ 
+   if (decl_region **slot = mutable_locals.get (expr))
+     return *slot;
+   decl_region *reg
+     = new decl_region (mgr->alloc_region_id (), this, expr);
+   mutable_locals.put (expr, reg);
+   return reg;
+ }
+ 
+ /* class globals_region : public space_region.  */
+ 
+ /* Implementation of region::dump_to_pp vfunc for globals_region.  */
+ 
+ void
+ globals_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     pp_string (pp, "::");
+   else
+     pp_string (pp, "globals");
+ }
+ 
+ /* class code_region : public map_region.  */
+ 
+ /* Implementation of region::dump_to_pp vfunc for code_region.  */
+ 
+ void
+ code_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     pp_string (pp, "code region");
+   else
+     pp_string (pp, "code_region()");
+ }
+ 
+ /* class function_region : public region.  */
+ 
+ /* Implementation of region::dump_to_pp vfunc for function_region.  */
+ 
+ void
+ function_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       dump_quoted_tree (pp, m_fndecl);
+     }
+   else
+     {
+       pp_string (pp, "function_region(");
+       dump_quoted_tree (pp, m_fndecl);
+       pp_string (pp, ")");
+     }
+ }
+ 
+ /* class label_region : public region.  */
+ 
+ /* Implementation of region::dump_to_pp vfunc for label_region.  */
+ 
+ void
+ label_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       dump_quoted_tree (pp, m_label);
+     }
+   else
+     {
+       pp_string (pp, "label_region(");
+       dump_quoted_tree (pp, m_label);
+       pp_string (pp, ")");
+     }
+ }
+ 
+ /* class stack_region : public region.  */
+ 
+ /* Implementation of region::dump_to_pp vfunc for stack_region.  */
+ 
+ void
+ stack_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     pp_string (pp, "stack region");
+   else
+     pp_string (pp, "stack_region()");
+ }
+ 
+ /* class heap_region : public region.  */
+ 
+ /* Implementation of region::dump_to_pp vfunc for heap_region.  */
+ 
+ void
+ heap_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     pp_string (pp, "heap region");
+   else
+     pp_string (pp, "heap_region()");
+ }
+ 
+ /* class root_region : public region.  */
+ 
+ /* root_region's ctor.  */
+ 
+ root_region::root_region (unsigned id)
+ : region (complexity (1, 1), id, NULL, NULL_TREE)
+ {
+ }
+ 
+ /* Implementation of region::dump_to_pp vfunc for root_region.  */
+ 
+ void
+ root_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     pp_string (pp, "root region");
+   else
+     pp_string (pp, "root_region()");
+ }
+ 
+ /* class symbolic_region : public map_region.  */
+ 
+ /* symbolic_region's ctor.  */
+ 
+ symbolic_region::symbolic_region (unsigned id, region *parent,
+ 				  const svalue *sval_ptr)
+ : region (complexity::from_pair (parent, sval_ptr), id, parent,
+ 	  TREE_TYPE (sval_ptr->get_type ())),
+   m_sval_ptr (sval_ptr)
+ {
+ }
+ 
+ /* Implementation of region::accept vfunc for symbolic_region.  */
+ 
+ void
+ symbolic_region::accept (visitor *v) const
+ {
+   region::accept (v);
+   m_sval_ptr->accept (v);
+ }
+ 
+ /* Implementation of region::dump_to_pp vfunc for symbolic_region.  */
+ 
+ void
+ symbolic_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       pp_string (pp, "(*");
+       m_sval_ptr->dump_to_pp (pp, simple);
+       pp_string (pp, ")");
+     }
+   else
+     {
+       pp_string (pp, "symbolic_region(");
+       get_parent_region ()->dump_to_pp (pp, simple);
+       pp_string (pp, ", ");
+       print_quoted_type (pp, get_type ());
+       pp_string (pp, ", ");
+       m_sval_ptr->dump_to_pp (pp, simple);
+       pp_string (pp, ")");
+     }
+ }
+ 
+ /* class decl_region : public region.  */
+ 
+ /* Implementation of region::dump_to_pp vfunc for decl_region.  */
+ 
+ void
+ decl_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     pp_printf (pp, "%E", m_decl);
+   else
+     {
+       pp_string (pp, "decl_region(");
+       get_parent_region ()->dump_to_pp (pp, simple);
+       pp_string (pp, ", ");
+       print_quoted_type (pp, get_type ());
+       pp_printf (pp, ", %qE)", m_decl);
+     }
+ }
+ 
+ /* Get the stack depth for the frame containing this decl, or 0
+    for a global.  */
+ 
+ int
+ decl_region::get_stack_depth () const
+ {
+   if (get_parent_region () == NULL)
+     return 0;
+   if (const frame_region *frame_reg
+ 	= get_parent_region ()->dyn_cast_frame_region ())
+     return frame_reg->get_stack_depth ();
+   return 0;
+ }
+ 
+ /* If the underlying decl is in the global constant pool,
+    return an svalue representing the constant value.
+    Otherwise return NULL.  */
+ 
+ const svalue *
+ decl_region::maybe_get_constant_value (region_model_manager *mgr) const
+ {
+   if (TREE_CODE (m_decl) == VAR_DECL
+       && DECL_IN_CONSTANT_POOL (m_decl)
+       && DECL_INITIAL (m_decl)
+       && TREE_CODE (DECL_INITIAL (m_decl)) == CONSTRUCTOR)
+     return get_svalue_for_constructor (DECL_INITIAL (m_decl), mgr);
+   return NULL;
+ }
+ 
+ /* Get an svalue for CTOR, a CONSTRUCTOR for this region's decl.  */
+ 
+ const svalue *
+ decl_region::get_svalue_for_constructor (tree ctor,
+ 					 region_model_manager *mgr) const
+ {
+   gcc_assert (!TREE_CLOBBER_P (ctor));
+ 
+   /* Create a binding map, applying ctor to it, using this
+      decl_region as the base region when building child regions
+      for offset calculations.  */
+   binding_map map;
+   if (!map.apply_ctor_to_region (this, ctor, mgr))
+     return mgr->get_or_create_unknown_svalue (get_type ());
+ 
+   /* Return a compound svalue for the map we built.  */
+   return mgr->get_or_create_compound_svalue (get_type (), map);
+ }
+ 
+ /* For use on decl_regions for global variables.
+ 
+    Get an svalue for the initial value of this region at entry to
+    "main" (either based on DECL_INITIAL, or implicit initialization to
+    zero.
+ 
+    Return NULL if there is a problem.  */
+ 
+ const svalue *
+ decl_region::get_svalue_for_initializer (region_model_manager *mgr) const
+ {
+   tree init = DECL_INITIAL (m_decl);
+   if (!init)
+     {
+       /* If we have an "extern" decl then there may be an initializer in
+ 	 another TU.  */
+       if (DECL_EXTERNAL (m_decl))
+ 	return NULL;
+ 
+       /* Implicit initialization to zero; use a compound_svalue for it.
+ 	 Doing so requires that we have a concrete binding for this region,
+ 	 which can fail if we have a region with unknown size
+ 	 (e.g. "extern const char arr[];").  */
+       const binding_key *binding
+ 	= binding_key::make (mgr->get_store_manager (), this, BK_direct);
+       if (binding->symbolic_p ())
+ 	return NULL;
+ 
+       binding_cluster c (this);
+       c.zero_fill_region (mgr->get_store_manager (), this);
+       return mgr->get_or_create_compound_svalue (TREE_TYPE (m_decl),
+ 						 c.get_map ());
+     }
+ 
+   /* LTO can write out error_mark_node as the DECL_INITIAL for simple scalar
+      values (to avoid writing out an extra section).  */
+   if (init == error_mark_node)
+     return NULL;
+ 
+   if (TREE_CODE (init) == CONSTRUCTOR)
+     return get_svalue_for_constructor (init, mgr);
+ 
+   /* Reuse the get_rvalue logic from region_model.  */
+   region_model m (mgr);
+   return m.get_rvalue (path_var (init, 0), NULL);
+ }
+ 
+ /* class field_region : public region.  */
+ 
+ /* Implementation of region::dump_to_pp vfunc for field_region.  */
+ 
+ void
+ field_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       get_parent_region ()->dump_to_pp (pp, simple);
+       pp_string (pp, ".");
+       pp_printf (pp, "%E", m_field);
+     }
+   else
+     {
+       pp_string (pp, "field_region(");
+       get_parent_region ()->dump_to_pp (pp, simple);
+       pp_string (pp, ", ");
+       print_quoted_type (pp, get_type ());
+       pp_printf (pp, ", %qE)", m_field);
+     }
+ }
+ 
+ /* class element_region : public region.  */
+ 
+ /* Implementation of region::accept vfunc for element_region.  */
+ 
+ void
+ element_region::accept (visitor *v) const
+ {
+   region::accept (v);
+   m_index->accept (v);
+ }
+ 
+ /* Implementation of region::dump_to_pp vfunc for element_region.  */
+ 
+ void
+ element_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       //pp_string (pp, "(");
+       get_parent_region ()->dump_to_pp (pp, simple);
+       pp_string (pp, "[");
+       m_index->dump_to_pp (pp, simple);
+       pp_string (pp, "]");
+       //pp_string (pp, ")");
+     }
+   else
+     {
+       pp_string (pp, "element_region(");
+       get_parent_region ()->dump_to_pp (pp, simple);
+       pp_string (pp, ", ");
+       print_quoted_type (pp, get_type ());
+       pp_string (pp, ", ");
+       m_index->dump_to_pp (pp, simple);
+       pp_printf (pp, ")");
+     }
+ }
+ 
+ /* class offset_region : public region.  */
+ 
+ /* Implementation of region::accept vfunc for offset_region.  */
+ 
+ void
+ offset_region::accept (visitor *v) const
+ {
+   region::accept (v);
+   m_byte_offset->accept (v);
+ }
+ 
+ /* Implementation of region::dump_to_pp vfunc for offset_region.  */
+ 
+ void
+ offset_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       //pp_string (pp, "(");
+       get_parent_region ()->dump_to_pp (pp, simple);
+       pp_string (pp, "+");
+       m_byte_offset->dump_to_pp (pp, simple);
+       //pp_string (pp, ")");
+     }
+   else
+     {
+       pp_string (pp, "offset_region(");
+       get_parent_region ()->dump_to_pp (pp, simple);
+       pp_string (pp, ", ");
+       print_quoted_type (pp, get_type ());
+       pp_string (pp, ", ");
+       m_byte_offset->dump_to_pp (pp, simple);
+       pp_printf (pp, ")");
+     }
+ }
+ 
+ /* class cast_region : public region.  */
+ 
+ /* Implementation of region::accept vfunc for cast_region.  */
+ 
+ void
+ cast_region::accept (visitor *v) const
+ {
+   region::accept (v);
+   m_original_region->accept (v);
+ }
+ 
+ /* Implementation of region::dump_to_pp vfunc for cast_region.  */
+ 
+ void
+ cast_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       pp_string (pp, "CAST_REG(");
+       print_quoted_type (pp, get_type ());
+       pp_string (pp, ", ");
+       m_original_region->dump_to_pp (pp, simple);
+       pp_string (pp, ")");
+     }
+   else
+     {
+       pp_string (pp, "cast_region(");
+       m_original_region->dump_to_pp (pp, simple);
+       pp_string (pp, ", ");
+       print_quoted_type (pp, get_type ());
+       pp_printf (pp, ")");
+     }
+ }
+ 
+ /* class heap_allocated_region : public region.  */
+ 
+ /* Implementation of region::dump_to_pp vfunc for heap_allocated_region.  */
+ 
+ void
+ heap_allocated_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     pp_printf (pp, "HEAP_ALLOCATED_REGION(%i)", get_id ());
+   else
+     pp_printf (pp, "heap_allocated_region(%i)", get_id ());
+ }
+ 
+ /* class alloca_region : public region.  */
+ 
+ /* Implementation of region::dump_to_pp vfunc for alloca_region.  */
+ 
+ void
+ alloca_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     pp_string (pp, "ALLOCA_REGION");
+   else
+     pp_string (pp, "alloca_region()");
+ }
+ 
+ /* class string_region : public region.  */
+ 
+ /* Implementation of region::dump_to_pp vfunc for string_region.  */
+ 
+ void
+ string_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     dump_tree (pp, m_string_cst);
+   else
+     {
+       pp_string (pp, "string_region(");
+       dump_tree (pp, m_string_cst);
+       if (!flag_dump_noaddr)
+ 	{
+ 	  pp_string (pp, " (");
+ 	  pp_pointer (pp, m_string_cst);
+ 	  pp_string (pp, "))");
+ 	}
+     }
+ }
+ 
+ /* class unknown_region : public region.  */
+ 
+ /* Implementation of region::dump_to_pp vfunc for unknown_region.  */
+ 
+ void
+ unknown_region::dump_to_pp (pretty_printer *pp, bool /*simple*/) const
+ {
+   pp_string (pp, "UNKNOWN_REGION");
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/region.h gcc-11.1.0/gcc/analyzer/region.h
*** gcc-10.3.0/gcc/analyzer/region.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/analyzer/region.h	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,1012 ----
+ /* Regions of memory.
+    Copyright (C) 2019-2021 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.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/>.  */
+ 
+ #ifndef GCC_ANALYZER_REGION_H
+ #define GCC_ANALYZER_REGION_H
+ 
+ #include "analyzer/complexity.h"
+ 
+ namespace ana {
+ 
+ /* An enum for discriminating between the different concrete subclasses
+    of region.  */
+ 
+ enum region_kind
+ {
+   RK_FRAME,
+   RK_GLOBALS,
+   RK_CODE,
+   RK_FUNCTION,
+   RK_LABEL,
+   RK_STACK,
+   RK_HEAP,
+   RK_ROOT,
+   RK_SYMBOLIC,
+   RK_DECL,
+   RK_FIELD,
+   RK_ELEMENT,
+   RK_OFFSET,
+   RK_CAST,
+   RK_HEAP_ALLOCATED,
+   RK_ALLOCA,
+   RK_STRING,
+   RK_UNKNOWN
+ };
+ 
+ /* Region and its subclasses.
+ 
+    The class hierarchy looks like this (using indentation to show
+    inheritance, and with region_kinds shown for the concrete subclasses):
+ 
+    region
+      space_region
+        frame_region (RK_FRAME)
+        globals_region (RK_GLOBALS)
+        code_region (RK_CODE)
+        stack_region (RK_STACK)
+        heap_region (RK_HEAP)
+      root_region (RK_ROOT)
+      function_region (RK_FUNCTION)
+      label_region (RK_LABEL)
+      symbolic_region (RK_SYMBOLIC)
+      decl_region (RK_DECL),
+      field_region (RK_FIELD)
+      element_region (RK_ELEMENT)
+      offset_region (RK_OFFSET)
+      cast_region (RK_CAST)
+      heap_allocated_region (RK_HEAP_ALLOCATED)
+      alloca_region (RK_ALLOCA)
+      string_region (RK_STRING)
+      unknown_region (RK_UNKNOWN).  */
+ 
+ /* Abstract base class for representing ways of accessing chunks of memory.
+ 
+    Regions form a tree-like hierarchy, with a root region at the base,
+    with memory space regions within it, representing the stack and
+    globals, with frames within the stack, and regions for variables
+    within the frames and the "globals" region.  Regions for structs
+    can have subregions for fields.  */
+ 
+ class region
+ {
+ public:
+   virtual ~region ();
+ 
+   unsigned get_id () const { return m_id; }
+   static int cmp_ids (const region *reg1, const region *reg2);
+ 
+   virtual enum region_kind get_kind () const = 0;
+   virtual const frame_region *
+   dyn_cast_frame_region () const { return NULL; }
+   virtual const function_region *
+   dyn_cast_function_region () const { return NULL; }
+   virtual const symbolic_region *
+   dyn_cast_symbolic_region () const { return NULL; }
+   virtual const decl_region *
+   dyn_cast_decl_region () const { return NULL; }
+   virtual const field_region *
+   dyn_cast_field_region () const { return NULL; }
+   virtual const element_region *
+   dyn_cast_element_region () const { return NULL; }
+   virtual const offset_region *
+   dyn_cast_offset_region () const { return NULL; }
+   virtual const cast_region *
+   dyn_cast_cast_region () const { return NULL; }
+   virtual const string_region *
+   dyn_cast_string_region () const { return NULL; }
+ 
+   virtual void accept (visitor *v) const;
+ 
+   const region *get_parent_region () const { return m_parent; }
+   const region *get_base_region () const;
+   bool base_region_p () const;
+   bool descendent_of_p (const region *elder) const;
+   const frame_region *maybe_get_frame_region () const;
+ 
+   tree maybe_get_decl () const;
+ 
+   tree get_type () const { return m_type; }
+ 
+   void print (const region_model &model,
+ 	      pretty_printer *pp) const;
+   label_text get_desc (bool simple=true) const;
+ 
+   virtual void dump_to_pp (pretty_printer *pp, bool simple) const = 0;
+   void dump (bool simple) const;
+ 
+   json::value *to_json () const;
+ 
+   bool non_null_p () const;
+ 
+   static int cmp_ptr_ptr (const void *, const void *);
+ 
+   region_offset get_offset () const;
+   bool get_byte_size (byte_size_t *out) const;
+   bool get_bit_size (bit_size_t *out) const;
+ 
+   void
+   get_subregions_for_binding (region_model_manager *mgr,
+ 			      bit_offset_t start_bit_offset,
+ 			      bit_size_t size_in_bits,
+ 			      tree type,
+ 			      auto_vec <const region *> *out) const;
+ 
+   bool symbolic_for_unknown_ptr_p () const;
+ 
+   const complexity &get_complexity () const { return m_complexity; }
+ 
+  protected:
+   region (complexity c, unsigned id, const region *parent, tree type);
+ 
+  private:
+   region_offset calc_offset () const;
+ 
+   complexity m_complexity;
+   unsigned m_id; // purely for deterministic sorting at this stage, for dumps
+   const region *m_parent;
+   tree m_type;
+ 
+   mutable region_offset *m_cached_offset;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const region *>::test (const region *)
+ {
+   return true;
+ }
+ 
+ namespace ana {
+ 
+ /* Abstract subclass of region, for regions that represent an untyped
+    space within memory, such as the stack or the heap.  */
+ 
+ class space_region : public region
+ {
+ protected:
+   space_region (unsigned id, const region *parent)
+   : region (complexity (parent), id, parent, NULL_TREE)
+   {}
+ };
+ 
+ /* Concrete space_region subclass, representing a function frame on the stack,
+    to contain the locals.
+    The parent is the stack region; there's also a hierarchy of call-stack
+    prefixes expressed via m_calling_frame.
+    For example, given "oldest" calling "middle" called "newest" we would have
+    - a stack depth of 3
+    - frame (A) for "oldest" with index 0 for depth 1, calling_frame == NULL
+    - frame (B) for "middle" with index 1 for depth 2, calling_frame == (A)
+    - frame (C) for "newest" with index 2 for depth 3, calling_frame == (B)
+    where the parent region for each of the frames is the "stack" region.
+    The index is the count of frames earlier than this in the stack.  */
+ 
+ class frame_region : public space_region
+ {
+ public:
+   /* A support class for uniquifying instances of frame_region.  */
+   struct key_t
+   {
+     key_t (const frame_region *calling_frame, function *fun)
+     : m_calling_frame (calling_frame), m_fun (fun)
+     {
+       /* calling_frame can be NULL.  */
+       gcc_assert (fun);
+     }
+ 
+     hashval_t hash () const
+     {
+       inchash::hash hstate;
+       hstate.add_ptr (m_calling_frame);
+       hstate.add_ptr (m_fun);
+       return hstate.end ();
+     }
+ 
+     bool operator== (const key_t &other) const
+     {
+       return (m_calling_frame == other.m_calling_frame && m_fun == other.m_fun);
+     }
+ 
+     void mark_deleted () { m_fun = reinterpret_cast<function *> (1); }
+     void mark_empty () { m_fun = NULL; }
+     bool is_deleted () const
+     {
+       return m_fun == reinterpret_cast<function *> (1);
+     }
+     bool is_empty () const { return m_fun == NULL; }
+ 
+     const frame_region *m_calling_frame;
+     function *m_fun;
+   };
+ 
+   frame_region (unsigned id, const region *parent,
+ 		const frame_region *calling_frame,
+ 		function *fun, int index)
+   : space_region (id, parent), m_calling_frame (calling_frame),
+     m_fun (fun), m_index (index)
+   {}
+   ~frame_region ();
+ 
+   /* region vfuncs.  */
+   enum region_kind get_kind () const FINAL OVERRIDE { return RK_FRAME; }
+   const frame_region * dyn_cast_frame_region () const FINAL OVERRIDE
+   {
+     return this;
+   }
+   void accept (visitor *v) const FINAL OVERRIDE;
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+ 
+   /* Accessors.  */
+   const frame_region *get_calling_frame () const { return m_calling_frame; }
+   function *get_function () const { return m_fun; }
+   int get_index () const { return m_index; }
+   int get_stack_depth () const { return m_index + 1; }
+ 
+   const decl_region *get_region_for_local (region_model_manager *mgr,
+ 					   tree expr) const;
+ 
+   unsigned get_num_locals () const { return m_locals.elements (); }
+ 
+  private:
+   const frame_region *m_calling_frame;
+   function *m_fun;
+   int m_index;
+ 
+   /* The regions for the decls within this frame are managed by this
+      object, rather than the region_model_manager, to make it a simple
+      lookup by tree.  */
+   typedef hash_map<tree, decl_region *> map_t;
+   map_t m_locals;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const frame_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_FRAME;
+ }
+ 
+ template <> struct default_hash_traits<frame_region::key_t>
+ : public member_function_hash_traits<frame_region::key_t>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ namespace ana {
+ 
+ /* Concrete space_region subclass, to hold global variables (data and bss).  */
+ 
+ class globals_region : public space_region
+ {
+  public:
+   globals_region (unsigned id, const region *parent)
+   : space_region (id, parent)
+   {}
+ 
+   /* region vfuncs.  */
+   enum region_kind get_kind () const FINAL OVERRIDE { return RK_GLOBALS; }
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const globals_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_GLOBALS;
+ }
+ 
+ namespace ana {
+ 
+ /* Concrete space_region subclass, representing the code segment
+    containing functions.  */
+ 
+ class code_region : public space_region
+ {
+ public:
+   code_region (unsigned id, const region *parent)
+   : space_region (id, parent)
+   {}
+ 
+   /* region vfuncs.  */
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   enum region_kind get_kind () const FINAL OVERRIDE { return RK_CODE; }
+ 
+   const region *get_element (region_model *model,
+ 			const svalue *index,
+ 			region_model_context *ctxt);
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const code_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_CODE;
+ }
+ 
+ namespace ana {
+ 
+ /* Concrete region subclass.  A region representing the code for
+    a particular function.  */
+ 
+ class function_region : public region
+ {
+ public:
+   function_region (unsigned id, const code_region *parent, tree fndecl)
+   : region (complexity (parent), id, parent, TREE_TYPE (fndecl)),
+     m_fndecl (fndecl)
+   {
+     gcc_assert (FUNC_OR_METHOD_TYPE_P (TREE_TYPE (fndecl)));
+   }
+ 
+   /* region vfuncs.  */
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   enum region_kind get_kind () const FINAL OVERRIDE { return RK_FUNCTION; }
+   const function_region *
+   dyn_cast_function_region () const FINAL OVERRIDE{ return this; }
+ 
+   tree get_fndecl () const { return m_fndecl; }
+ 
+   region *get_element (region_model *model,
+ 			const svalue *index_sid,
+ 			region_model_context *ctxt);
+ 
+ private:
+   tree m_fndecl;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const function_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_FUNCTION;
+ }
+ 
+ namespace ana {
+ 
+ /* Concrete region subclass.  A region representing a particular label
+    within a function.  */
+ 
+ class label_region : public region
+ {
+ public:
+   label_region (unsigned id, const function_region *parent, tree label)
+   : region (complexity (parent), id, parent, NULL_TREE), m_label (label)
+   {
+     gcc_assert (TREE_CODE (label) == LABEL_DECL);
+   }
+ 
+   /* region vfuncs.  */
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   enum region_kind get_kind () const FINAL OVERRIDE { return RK_LABEL; }
+ 
+   tree get_label () const { return m_label; }
+ 
+ private:
+   tree m_label;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const label_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_LABEL;
+ }
+ 
+ namespace ana {
+ 
+ /* Concrete space_region subclass representing a stack, containing all stack
+    frames.  */
+ 
+ class stack_region : public space_region
+ {
+ public:
+   stack_region (unsigned id, region *parent)
+   : space_region (id, parent)
+   {}
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+ 
+   enum region_kind get_kind () const FINAL OVERRIDE { return RK_STACK; }
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const stack_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_STACK;
+ }
+ 
+ namespace ana {
+ 
+ /* Concrete space_region subclass: a region within which regions can be
+    dynamically allocated.  */
+ 
+ class heap_region : public space_region
+ {
+ public:
+   heap_region (unsigned id, region *parent)
+   : space_region (id, parent)
+   {}
+ 
+   enum region_kind get_kind () const FINAL OVERRIDE { return RK_HEAP; }
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const heap_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_HEAP;
+ }
+ 
+ namespace ana {
+ 
+ /* Concrete region subclass.  The root region, containing all regions
+    (either directly, or as descendents).
+    Unique within a region_model_manager.  */
+ 
+ class root_region : public region
+ {
+ public:
+   root_region (unsigned id);
+ 
+   enum region_kind get_kind () const FINAL OVERRIDE { return RK_ROOT; }
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const root_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_ROOT;
+ }
+ 
+ namespace ana {
+ 
+ /* Concrete region subclass: a region to use when dereferencing an unknown
+    pointer.  */
+ 
+ class symbolic_region : public region
+ {
+ public:
+   /* A support class for uniquifying instances of symbolic_region.  */
+   struct key_t
+   {
+     key_t (const region *parent, const svalue *sval_ptr)
+     : m_parent (parent), m_sval_ptr (sval_ptr)
+     {
+       gcc_assert (sval_ptr);
+     }
+ 
+     hashval_t hash () const
+     {
+       inchash::hash hstate;
+       hstate.add_ptr (m_parent);
+       hstate.add_ptr (m_sval_ptr);
+       return hstate.end ();
+     }
+ 
+     bool operator== (const key_t &other) const
+     {
+       return (m_parent == other.m_parent && m_sval_ptr == other.m_sval_ptr);
+     }
+ 
+     void mark_deleted () { m_sval_ptr = reinterpret_cast<const svalue *> (1); }
+     void mark_empty () { m_sval_ptr = NULL; }
+     bool is_deleted () const
+     {
+       return m_sval_ptr == reinterpret_cast<const svalue *> (1);
+     }
+     bool is_empty () const { return m_sval_ptr == NULL; }
+ 
+     const region *m_parent;
+     const svalue *m_sval_ptr;
+   };
+ 
+   symbolic_region (unsigned id, region *parent, const svalue *sval_ptr);
+ 
+   const symbolic_region *
+   dyn_cast_symbolic_region () const FINAL OVERRIDE { return this; }
+ 
+   enum region_kind get_kind () const FINAL OVERRIDE { return RK_SYMBOLIC; }
+   void accept (visitor *v) const FINAL OVERRIDE;
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+ 
+   const svalue *get_pointer () const { return m_sval_ptr; }
+ 
+ private:
+   const svalue *m_sval_ptr;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const symbolic_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_SYMBOLIC;
+ }
+ 
+ template <> struct default_hash_traits<symbolic_region::key_t>
+ : public member_function_hash_traits<symbolic_region::key_t>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ namespace ana {
+ 
+ /* Concrete region subclass representing the memory occupied by a
+    variable (whether for a global or a local).  */
+ 
+ class decl_region : public region
+ {
+ public:
+   decl_region (unsigned id, const region *parent, tree decl)
+   : region (complexity (parent), id, parent, TREE_TYPE (decl)), m_decl (decl)
+   {}
+ 
+   enum region_kind get_kind () const FINAL OVERRIDE { return RK_DECL; }
+   const decl_region *
+   dyn_cast_decl_region () const FINAL OVERRIDE { return this; }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+ 
+   tree get_decl () const { return m_decl; }
+   int get_stack_depth () const;
+ 
+   const svalue *maybe_get_constant_value (region_model_manager *mgr) const;
+   const svalue *get_svalue_for_constructor (tree ctor,
+ 					    region_model_manager *mgr) const;
+   const svalue *get_svalue_for_initializer (region_model_manager *mgr) const;
+ 
+ private:
+   tree m_decl;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const decl_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_DECL;
+ }
+ 
+ namespace ana {
+ 
+ /* Concrete region subclass representing the memory occupied by a
+    field within a struct or union.  */
+ 
+ class field_region : public region
+ {
+ public:
+   /* A support class for uniquifying instances of field_region.  */
+   struct key_t
+   {
+     key_t (const region *parent, tree field)
+     : m_parent (parent), m_field (field)
+     {
+       gcc_assert (field);
+     }
+ 
+     hashval_t hash () const
+     {
+       inchash::hash hstate;
+       hstate.add_ptr (m_parent);
+       hstate.add_ptr (m_field);
+       return hstate.end ();
+     }
+ 
+     bool operator== (const key_t &other) const
+     {
+       return (m_parent == other.m_parent && m_field == other.m_field);
+     }
+ 
+     void mark_deleted () { m_field = reinterpret_cast<tree> (1); }
+     void mark_empty () { m_field = NULL_TREE; }
+     bool is_deleted () const { return m_field == reinterpret_cast<tree> (1); }
+     bool is_empty () const { return m_field == NULL_TREE; }
+ 
+     const region *m_parent;
+     tree m_field;
+   };
+ 
+   field_region (unsigned id, const region *parent, tree field)
+   : region (complexity (parent), id, parent, TREE_TYPE (field)),
+     m_field (field)
+   {}
+ 
+   enum region_kind get_kind () const FINAL OVERRIDE { return RK_FIELD; }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   const field_region *
+   dyn_cast_field_region () const FINAL OVERRIDE { return this; }
+ 
+   tree get_field () const { return m_field; }
+ 
+ private:
+   tree m_field;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const field_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_FIELD;
+ }
+ 
+ template <> struct default_hash_traits<field_region::key_t>
+ : public member_function_hash_traits<field_region::key_t>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ namespace ana {
+ 
+ /* An element within an array.  */
+ 
+ class element_region : public region
+ {
+ public:
+   /* A support class for uniquifying instances of element_region.  */
+   struct key_t
+   {
+     key_t (const region *parent, tree element_type, const svalue *index)
+     : m_parent (parent), m_element_type (element_type), m_index (index)
+     {
+       gcc_assert (index);
+     }
+ 
+     hashval_t hash () const
+     {
+       inchash::hash hstate;
+       hstate.add_ptr (m_parent);
+       hstate.add_ptr (m_element_type);
+       hstate.add_ptr (m_index);
+       return hstate.end ();
+     }
+ 
+     bool operator== (const key_t &other) const
+     {
+       return (m_parent == other.m_parent
+ 	      && m_element_type == other.m_element_type
+ 	      && m_index == other.m_index);
+     }
+ 
+     void mark_deleted () { m_index = reinterpret_cast<const svalue *> (1); }
+     void mark_empty () { m_index = NULL; }
+     bool is_deleted () const
+     {
+       return m_index == reinterpret_cast<const svalue *> (1);
+     }
+     bool is_empty () const { return m_index == NULL; }
+ 
+     const region *m_parent;
+     tree m_element_type;
+     const svalue *m_index;
+   };
+ 
+   element_region (unsigned id, const region *parent, tree element_type,
+ 		  const svalue *index)
+   : region (complexity::from_pair (parent, index), id, parent, element_type),
+     m_index (index)
+   {}
+ 
+   enum region_kind get_kind () const FINAL OVERRIDE { return RK_ELEMENT; }
+   const element_region *
+   dyn_cast_element_region () const FINAL OVERRIDE { return this; }
+ 
+   void accept (visitor *v) const FINAL OVERRIDE;
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+ 
+   const svalue *get_index () const { return m_index; }
+ 
+ private:
+   const svalue *m_index;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const element_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_ELEMENT;
+ }
+ 
+ template <> struct default_hash_traits<element_region::key_t>
+ : public member_function_hash_traits<element_region::key_t>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ namespace ana {
+ 
+ /* A byte-offset within another region, for handling pointer arithmetic
+    as a region.  */
+ 
+ class offset_region : public region
+ {
+ public:
+   /* A support class for uniquifying instances of offset_region.  */
+   struct key_t
+   {
+     key_t (const region *parent, tree element_type, const svalue *byte_offset)
+     : m_parent (parent), m_element_type (element_type), m_byte_offset (byte_offset)
+     {
+       gcc_assert (byte_offset);
+     }
+ 
+     hashval_t hash () const
+     {
+       inchash::hash hstate;
+       hstate.add_ptr (m_parent);
+       hstate.add_ptr (m_element_type);
+       hstate.add_ptr (m_byte_offset);
+       return hstate.end ();
+     }
+ 
+     bool operator== (const key_t &other) const
+     {
+       return (m_parent == other.m_parent
+ 	      && m_element_type == other.m_element_type
+ 	      && m_byte_offset == other.m_byte_offset);
+     }
+ 
+     void mark_deleted () { m_byte_offset = reinterpret_cast<const svalue *> (1); }
+     void mark_empty () { m_byte_offset = NULL; }
+     bool is_deleted () const
+     {
+       return m_byte_offset == reinterpret_cast<const svalue *> (1);
+     }
+     bool is_empty () const { return m_byte_offset == NULL; }
+ 
+     const region *m_parent;
+     tree m_element_type;
+     const svalue *m_byte_offset;
+   };
+ 
+   offset_region (unsigned id, const region *parent, tree type,
+ 		 const svalue *byte_offset)
+   : region (complexity::from_pair (parent, byte_offset), id, parent, type),
+     m_byte_offset (byte_offset)
+   {}
+ 
+   enum region_kind get_kind () const FINAL OVERRIDE { return RK_OFFSET; }
+   const offset_region *
+   dyn_cast_offset_region () const FINAL OVERRIDE { return this; }
+ 
+   void accept (visitor *v) const FINAL OVERRIDE;
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+ 
+   const svalue *get_byte_offset () const { return m_byte_offset; }
+ 
+ private:
+   const svalue *m_byte_offset;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const offset_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_OFFSET;
+ }
+ 
+ template <> struct default_hash_traits<offset_region::key_t>
+ : public member_function_hash_traits<offset_region::key_t>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ namespace ana {
+ 
+ /* A region that views another region using a different type.  */
+ 
+ class cast_region : public region
+ {
+ public:
+   /* A support class for uniquifying instances of cast_region.  */
+   struct key_t
+   {
+     key_t (const region *original_region, tree type)
+     : m_original_region (original_region), m_type (type)
+     {
+       gcc_assert (type);
+     }
+ 
+     hashval_t hash () const
+     {
+       inchash::hash hstate;
+       hstate.add_ptr (m_original_region);
+       hstate.add_ptr (m_type);
+       return hstate.end ();
+     }
+ 
+     bool operator== (const key_t &other) const
+     {
+       return (m_original_region == other.m_original_region
+ 	      && m_type == other.m_type);
+     }
+ 
+     void mark_deleted () { m_type = reinterpret_cast<tree> (1); }
+     void mark_empty () { m_type = NULL_TREE; }
+     bool is_deleted () const { return m_type == reinterpret_cast<tree> (1); }
+     bool is_empty () const { return m_type == NULL_TREE; }
+ 
+     const region *m_original_region;
+     tree m_type;
+   };
+ 
+   cast_region (unsigned id, const region *original_region, tree type)
+   : region (complexity (original_region), id,
+ 	    original_region->get_parent_region (), type),
+     m_original_region (original_region)
+   {}
+ 
+   enum region_kind get_kind () const FINAL OVERRIDE { return RK_CAST; }
+   const cast_region *
+   dyn_cast_cast_region () const FINAL OVERRIDE { return this; }
+   void accept (visitor *v) const FINAL OVERRIDE;
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+ 
+   const region *get_original_region () const { return m_original_region; }
+ 
+ private:
+   const region *m_original_region;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const cast_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_CAST;
+ }
+ 
+ template <> struct default_hash_traits<cast_region::key_t>
+ : public member_function_hash_traits<cast_region::key_t>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ namespace ana {
+ 
+ /* An untyped region dynamically allocated on the heap via "malloc"
+    or similar.  */
+ 
+ class heap_allocated_region : public region
+ {
+ public:
+   heap_allocated_region (unsigned id, const region *parent)
+   : region (complexity (parent), id, parent, NULL_TREE)
+   {}
+ 
+   enum region_kind
+   get_kind () const FINAL OVERRIDE { return RK_HEAP_ALLOCATED; }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+ };
+ 
+ /* An untyped region dynamically allocated on the stack via "alloca".  */
+ 
+ class alloca_region : public region
+ {
+ public:
+   alloca_region (unsigned id, const frame_region *parent)
+   : region (complexity (parent), id, parent, NULL_TREE)
+   {}
+ 
+   enum region_kind get_kind () const FINAL OVERRIDE { return RK_ALLOCA; }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+ };
+ 
+ /* A region for a STRING_CST.  */
+ 
+ class string_region : public region
+ {
+ public:
+   string_region (unsigned id, const region *parent, tree string_cst)
+   : region (complexity (parent), id, parent, TREE_TYPE (string_cst)),
+     m_string_cst (string_cst)
+   {}
+ 
+   const string_region *
+   dyn_cast_string_region () const FINAL OVERRIDE { return this; }
+ 
+   enum region_kind get_kind () const FINAL OVERRIDE { return RK_STRING; }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+ 
+   tree get_string_cst () const { return m_string_cst; }
+ 
+ private:
+   tree m_string_cst;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const string_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_STRING;
+ }
+ 
+ namespace ana {
+ 
+ /* An unknown region, for handling unimplemented tree codes.  */
+ 
+ class unknown_region : public region
+ {
+ public:
+   unknown_region (unsigned id, const region *parent, tree type)
+   : region (complexity (parent), id, parent, type)
+   {}
+ 
+   enum region_kind get_kind () const FINAL OVERRIDE { return RK_UNKNOWN; }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+ };
+ 
+ } // namespace ana
+ 
+ #endif /* GCC_ANALYZER_REGION_H */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/sm-file.cc gcc-11.1.0/gcc/analyzer/sm-file.cc
*** gcc-10.3.0/gcc/analyzer/sm-file.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/sm-file.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* A state machine for detecting misuses of <stdio.h>'s FILE * API.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* A state machine for detecting misuses of <stdio.h>'s FILE * API.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 29,34 ****
--- 29,35 ----
  #include "diagnostic-path.h"
  #include "diagnostic-metadata.h"
  #include "function.h"
+ #include "json.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/analyzer-logging.h"
*************** along with GCC; see the file COPYING3.
*** 36,41 ****
--- 37,48 ----
  #include "analyzer/pending-diagnostic.h"
  #include "analyzer/function-set.h"
  #include "analyzer/analyzer-selftests.h"
+ #include "tristate.h"
+ #include "selftest.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
+ #include "analyzer/region-model.h"
  
  #if ENABLE_ANALYZER
  
*************** public:
*** 52,57 ****
--- 59,75 ----
  
    bool inherited_state_p () const FINAL OVERRIDE { return false; }
  
+   state_machine::state_t
+   get_default_state (const svalue *sval) const FINAL OVERRIDE
+   {
+     if (tree cst = sval->maybe_get_constant ())
+       {
+ 	if (zerop (cst))
+ 	  return m_null;
+       }
+     return m_start;
+   }
+ 
    bool on_stmt (sm_context *sm_ctxt,
  		const supernode *node,
  		const gimple *stmt) const FINAL OVERRIDE;
*************** public:
*** 66,74 ****
    bool can_purge_p (state_t s) const FINAL OVERRIDE;
    pending_diagnostic *on_leak (tree var) const FINAL OVERRIDE;
  
-   /* Start state.  */
-   state_t m_start;
- 
    /* State for a FILE * returned from fopen that hasn't been checked for
       NULL.
       It could be an open stream, or could be NULL.  */
--- 84,89 ----
*************** public:
*** 104,110 ****
    label_text describe_state_change (const evdesc::state_change &change)
      OVERRIDE
    {
!     if (change.m_old_state == m_sm.m_start
  	&& change.m_new_state == m_sm.m_unchecked)
        // TODO: verify that it's the fopen stmt, not a copy
        return label_text::borrow ("opened here");
--- 119,125 ----
    label_text describe_state_change (const evdesc::state_change &change)
      OVERRIDE
    {
!     if (change.m_old_state == m_sm.get_start_state ()
  	&& change.m_new_state == m_sm.m_unchecked)
        // TODO: verify that it's the fopen stmt, not a copy
        return label_text::borrow ("opened here");
*************** private:
*** 212,218 ****
  fileptr_state_machine::fileptr_state_machine (logger *logger)
  : state_machine ("file", logger)
  {
-   m_start = add_state ("start");
    m_unchecked = add_state ("unchecked");
    m_null = add_state ("null");
    m_nonnull = add_state ("nonnull");
--- 227,232 ----
*************** get_file_using_fns ()
*** 232,238 ****
      "__fbufsize",
      "__flbf",
      "__fpending",
!     "__fpurge"
      "__freadable",
      "__freading",
      "__fsetlocking",
--- 246,252 ----
      "__fbufsize",
      "__flbf",
      "__fpending",
!     "__fpurge",
      "__freadable",
      "__freading",
      "__fsetlocking",
*************** static bool
*** 293,299 ****
  is_file_using_fn_p (tree fndecl)
  {
    function_set fs = get_file_using_fns ();
!   return fs.contains_decl_p (fndecl);
  }
  
  /* Implementation of state_machine::on_stmt vfunc for fileptr_state_machine.  */
--- 307,322 ----
  is_file_using_fn_p (tree fndecl)
  {
    function_set fs = get_file_using_fns ();
!   if (fs.contains_decl_p (fndecl))
!     return true;
! 
!   /* Also support variants of these names prefixed with "_IO_".  */
!   const char *name = IDENTIFIER_POINTER (DECL_NAME (fndecl));
!   if (strncmp (name, "_IO_", 4) == 0)
!     if (fs.contains_name_p (name + 4))
!       return true;
! 
!   return false;
  }
  
  /* Implementation of state_machine::on_stmt vfunc for fileptr_state_machine.  */
*************** fileptr_state_machine::on_stmt (sm_conte
*** 310,319 ****
  	  {
  	    tree lhs = gimple_call_lhs (call);
  	    if (lhs)
! 	      {
! 		lhs = sm_ctxt->get_readable_tree (lhs);
! 		sm_ctxt->on_transition (node, stmt, lhs, m_start, m_unchecked);
! 	      }
  	    else
  	      {
  		/* TODO: report leak.  */
--- 333,339 ----
  	  {
  	    tree lhs = gimple_call_lhs (call);
  	    if (lhs)
! 	      sm_ctxt->on_transition (node, stmt, lhs, m_start, m_unchecked);
  	    else
  	      {
  		/* TODO: report leak.  */
*************** fileptr_state_machine::on_stmt (sm_conte
*** 324,330 ****
  	if (is_named_call_p (callee_fndecl, "fclose", call, 1))
  	  {
  	    tree arg = gimple_call_arg (call, 0);
- 	    arg = sm_ctxt->get_readable_tree (arg);
  
  	    sm_ctxt->on_transition (node, stmt, arg, m_start, m_closed);
  
--- 344,349 ----
*************** fileptr_state_machine::on_stmt (sm_conte
*** 334,342 ****
  
  	    sm_ctxt->on_transition (node, stmt , arg, m_nonnull, m_closed);
  
! 	    sm_ctxt->warn_for_state (node, stmt, arg, m_closed,
! 				     new double_fclose (*this, arg));
! 	    sm_ctxt->on_transition (node, stmt, arg, m_closed, m_stop);
  	    return true;
  	  }
  
--- 353,365 ----
  
  	    sm_ctxt->on_transition (node, stmt , arg, m_nonnull, m_closed);
  
! 	    if (sm_ctxt->get_state (stmt, arg) == m_closed)
! 	      {
! 		tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
! 		sm_ctxt->warn (node, stmt, arg,
! 			       new double_fclose (*this, diag_arg));
! 		sm_ctxt->set_next_state (stmt, arg, m_stop);
! 	      }
  	    return true;
  	  }
  
diff -Nrcpad gcc-10.3.0/gcc/analyzer/sm-malloc.cc gcc-11.1.0/gcc/analyzer/sm-malloc.cc
*** gcc-10.3.0/gcc/analyzer/sm-malloc.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/sm-malloc.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* A state machine for detecting misuses of the malloc/free API.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* A state machine for detecting misuses of the malloc/free API.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 30,40 ****
--- 30,49 ----
  #include "diagnostic-path.h"
  #include "diagnostic-metadata.h"
  #include "function.h"
+ #include "json.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
  #include "analyzer/pending-diagnostic.h"
+ #include "tristate.h"
+ #include "selftest.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
+ #include "analyzer/region-model.h"
+ #include "stringpool.h"
+ #include "attribs.h"
  
  #if ENABLE_ANALYZER
  
*************** namespace ana {
*** 42,47 ****
--- 51,329 ----
  
  namespace {
  
+ /* This state machine and its various support classes track allocations
+    and deallocations.
+ 
+    It has a few standard allocation/deallocation pairs (e.g. new/delete),
+    and also supports user-defined ones via
+    __attribute__ ((malloc(DEALLOCATOR))).
+ 
+    There can be more than one valid deallocator for a given allocator,
+    for example:
+      __attribute__ ((malloc (fclose)))
+      __attribute__ ((malloc (freopen, 3)))
+      FILE* fopen (const char*, const char*);
+    A deallocator_set represents a particular set of valid deallocators.
+ 
+    We track the expected deallocator_set for a value, but not the allocation
+    function - there could be more than one allocator per deallocator_set.
+    For example, there could be dozens of allocators for "free" beyond just
+    malloc e.g. calloc, xstrdup, etc.  We don't want to explode the number
+    of states by tracking individual allocators in the exploded graph;
+    we merely want to track "this value expects to have 'free' called on it".
+    Perhaps we can reconstruct which allocator was used later, when emitting
+    the path, if it's necessary for precision of wording of diagnostics.  */
+ 
+ class deallocator;
+ class deallocator_set;
+ class malloc_state_machine;
+ 
+ /* An enum for discriminating between different kinds of allocation_state.  */
+ 
+ enum resource_state
+ {
+   /* States that are independent of allocator/deallocator.  */
+ 
+   /* The start state.  */
+   RS_START,
+ 
+   /* State for a pointer that's known to be NULL.  */
+   RS_NULL,
+ 
+   /* State for a pointer that's known to not be on the heap (e.g. to a local
+      or global).  */
+   RS_NON_HEAP,
+ 
+   /* Stop state, for pointers we don't want to track any more.  */
+   RS_STOP,
+ 
+   /* States that relate to a specific deallocator_set.  */
+ 
+   /* State for a pointer returned from an allocator that hasn't
+      been checked for NULL.
+      It could be a pointer to heap-allocated memory, or could be NULL.  */
+   RS_UNCHECKED,
+ 
+   /* State for a pointer returned from an allocator,
+      known to be non-NULL.  */
+   RS_NONNULL,
+ 
+   /* State for a pointer passed to a deallocator.  */
+   RS_FREED
+ };
+ 
+ /* Custom state subclass, which can optionally refer to an a
+    deallocator_set.  */
+ 
+ struct allocation_state : public state_machine::state
+ {
+   allocation_state (const char *name, unsigned id,
+ 		    enum resource_state rs,
+ 		    const deallocator_set *deallocators,
+ 		    const deallocator *deallocator)
+   : state (name, id), m_rs (rs),
+     m_deallocators (deallocators),
+     m_deallocator (deallocator)
+   {}
+ 
+   void dump_to_pp (pretty_printer *pp) const FINAL OVERRIDE;
+ 
+   const allocation_state *get_nonnull () const;
+ 
+   enum resource_state m_rs;
+   const deallocator_set *m_deallocators;
+   const deallocator *m_deallocator;
+ };
+ 
+ /* An enum for choosing which wording to use in various diagnostics
+    when describing deallocations.  */
+ 
+ enum wording
+ {
+   WORDING_FREED,
+   WORDING_DELETED,
+   WORDING_DEALLOCATED,
+   WORDING_REALLOCATED
+ };
+ 
+ /* Base class representing a deallocation function,
+    either a built-in one we know about, or one exposed via
+    __attribute__((malloc(DEALLOCATOR))).  */
+ 
+ struct deallocator
+ {
+   hashval_t hash () const;
+   void dump_to_pp (pretty_printer *pp) const;
+   static int cmp (const deallocator *a, const deallocator *b);
+   static int cmp_ptr_ptr (const void *, const void *);
+ 
+   /* Name to use in diagnostics.  */
+   const char *m_name;
+ 
+   /* Which wording to use in diagnostics.  */
+   enum wording m_wording;
+ 
+   /* State for a value passed to one of the deallocators.  */
+   state_machine::state_t m_freed;
+ 
+ protected:
+   deallocator (malloc_state_machine *sm,
+ 	       const char *name,
+ 	       enum wording wording);
+ };
+ 
+ /* Subclass representing a predefined deallocator.
+    e.g. "delete []", without needing a specific FUNCTION_DECL
+    ahead of time.  */
+ 
+ struct standard_deallocator : public deallocator
+ {
+   standard_deallocator (malloc_state_machine *sm,
+ 			const char *name,
+ 			enum wording wording);
+ };
+ 
+ /* Subclass representing a user-defined deallocator
+    via __attribute__((malloc(DEALLOCATOR))) given
+    a specific FUNCTION_DECL.  */
+ 
+ struct custom_deallocator : public deallocator
+ {
+   custom_deallocator (malloc_state_machine *sm,
+ 		      tree deallocator_fndecl,
+ 		      enum wording wording)
+   : deallocator (sm, IDENTIFIER_POINTER (DECL_NAME (deallocator_fndecl)),
+ 		 wording)
+   {
+   }
+ };
+ 
+ /* Base class representing a set of possible deallocators.
+    Often this will be just a single deallocator, but some
+    allocators have multiple valid deallocators (e.g. the result of
+    "fopen" can be closed by either "fclose" or "freopen").  */
+ 
+ struct deallocator_set
+ {
+   deallocator_set (malloc_state_machine *sm,
+ 		   enum wording wording);
+   virtual ~deallocator_set () {}
+ 
+   virtual bool contains_p (const deallocator *d) const = 0;
+   virtual const deallocator *maybe_get_single () const = 0;
+   virtual void dump_to_pp (pretty_printer *pp) const = 0;
+   void dump () const;
+ 
+   /* Which wording to use in diagnostics.  */
+   enum wording m_wording;
+ 
+   /* Pointers to states.
+      These states are owned by the state_machine base class.  */
+ 
+   /* State for an unchecked result from an allocator using this set.  */
+   state_machine::state_t m_unchecked;
+ 
+   /* State for a known non-NULL result from such an allocator.  */
+   state_machine::state_t m_nonnull;
+ };
+ 
+ /* Subclass of deallocator_set representing a set of deallocators
+    defined by one or more __attribute__((malloc(DEALLOCATOR))).  */
+ 
+ struct custom_deallocator_set : public deallocator_set
+ {
+   typedef const auto_vec <const deallocator *> *key_t;
+ 
+   custom_deallocator_set (malloc_state_machine *sm,
+ 			  const auto_vec <const deallocator *> *vec,
+ 			  //const char *name,
+ 			  //const char *dealloc_funcname,
+ 			  //unsigned arg_idx,
+ 			  enum wording wording);
+ 
+   bool contains_p (const deallocator *d) const FINAL OVERRIDE;
+   const deallocator *maybe_get_single () const FINAL OVERRIDE;
+   void dump_to_pp (pretty_printer *pp) const FINAL OVERRIDE;
+ 
+   auto_vec <const deallocator *> m_deallocator_vec;
+ };
+ 
+ /* Subclass of deallocator_set representing a set of deallocators
+    with a single standard_deallocator, e.g. "delete []".  */
+ 
+ struct standard_deallocator_set : public deallocator_set
+ {
+   standard_deallocator_set (malloc_state_machine *sm,
+ 			    const char *name,
+ 			    enum wording wording);
+ 
+   bool contains_p (const deallocator *d) const FINAL OVERRIDE;
+   const deallocator *maybe_get_single () const FINAL OVERRIDE;
+   void dump_to_pp (pretty_printer *pp) const FINAL OVERRIDE;
+ 
+   standard_deallocator m_deallocator;
+ };
+ 
+ /* Traits class for ensuring uniqueness of deallocator_sets within
+    malloc_state_machine.  */
+ 
+ struct deallocator_set_map_traits
+ {
+   typedef custom_deallocator_set::key_t key_type;
+   typedef custom_deallocator_set *value_type;
+   typedef custom_deallocator_set *compare_type;
+ 
+   static inline hashval_t hash (const key_type &k)
+   {
+     gcc_assert (k != NULL);
+     gcc_assert (k != reinterpret_cast<key_type> (1));
+ 
+     hashval_t result = 0;
+     unsigned i;
+     const deallocator *d;
+     FOR_EACH_VEC_ELT (*k, i, d)
+       result ^= d->hash ();
+     return result;
+   }
+   static inline bool equal_keys (const key_type &k1, const key_type &k2)
+   {
+     if (k1->length () != k2->length ())
+       return false;
+ 
+     for (unsigned i = 0; i < k1->length (); i++)
+       if ((*k1)[i] != (*k2)[i])
+ 	return false;
+ 
+     return true;
+   }
+   template <typename T>
+   static inline void remove (T &)
+   {
+     /* empty; the nodes are handled elsewhere.  */
+   }
+   template <typename T>
+   static inline void mark_deleted (T &entry)
+   {
+     entry.m_key = reinterpret_cast<key_type> (1);
+   }
+   template <typename T>
+   static inline void mark_empty (T &entry)
+   {
+     entry.m_key = NULL;
+   }
+   template <typename T>
+   static inline bool is_deleted (const T &entry)
+   {
+     return entry.m_key == reinterpret_cast<key_type> (1);
+   }
+   template <typename T>
+   static inline bool is_empty (const T &entry)
+   {
+     return entry.m_key == NULL;
+   }
+   static const bool empty_zero_p = false;
+ };
+ 
  /* A state machine for detecting misuses of the malloc/free API.
  
     See sm-malloc.dot for an overview (keep this in-sync with that file).  */
*************** namespace {
*** 49,58 ****
--- 331,367 ----
  class malloc_state_machine : public state_machine
  {
  public:
+   typedef allocation_state custom_data_t;
+ 
    malloc_state_machine (logger *logger);
+   ~malloc_state_machine ();
+ 
+   state_t
+   add_state (const char *name, enum resource_state rs,
+ 	     const deallocator_set *deallocators,
+ 	     const deallocator *deallocator);
  
    bool inherited_state_p () const FINAL OVERRIDE { return false; }
  
+   state_machine::state_t
+   get_default_state (const svalue *sval) const FINAL OVERRIDE
+   {
+     if (tree cst = sval->maybe_get_constant ())
+       {
+ 	if (zerop (cst))
+ 	  return m_null;
+       }
+     if (const region_svalue *ptr = sval->dyn_cast_region_svalue ())
+       {
+ 	const region *reg = ptr->get_pointee ();
+ 	const region *base_reg = reg->get_base_region ();
+ 	if (base_reg->get_kind () == RK_DECL
+ 	    || base_reg->get_kind () == RK_STRING)
+ 	  return m_non_heap;
+       }
+     return m_start;
+   }
+ 
    bool on_stmt (sm_context *sm_ctxt,
  		const supernode *node,
  		const gimple *stmt) const FINAL OVERRIDE;
*************** public:
*** 72,93 ****
    bool can_purge_p (state_t s) const FINAL OVERRIDE;
    pending_diagnostic *on_leak (tree var) const FINAL OVERRIDE;
  
!   /* Start state.  */
!   state_t m_start;
  
!   /* State for a pointer returned from malloc that hasn't been checked for
!      NULL.
!      It could be a pointer to heap-allocated memory, or could be NULL.  */
!   state_t m_unchecked;
  
!   /* State for a pointer that's known to be NULL.  */
!   state_t m_null;
  
!   /* State for a pointer to heap-allocated memory, known to be non-NULL.  */
!   state_t m_nonnull;
  
!   /* State for a pointer to freed memory.  */
!   state_t m_freed;
  
    /* State for a pointer that's known to not be on the heap (e.g. to a local
       or global).  */
--- 381,399 ----
    bool can_purge_p (state_t s) const FINAL OVERRIDE;
    pending_diagnostic *on_leak (tree var) const FINAL OVERRIDE;
  
!   bool reset_when_passed_to_unknown_fn_p (state_t s,
! 					  bool is_mutable) const FINAL OVERRIDE;
  
!   standard_deallocator_set m_free;
!   standard_deallocator_set m_scalar_delete;
!   standard_deallocator_set m_vector_delete;
  
!   standard_deallocator m_realloc;
  
!   /* States that are independent of api.  */
  
!   /* State for a pointer that's known to be NULL.  */
!   state_t m_null;
  
    /* State for a pointer that's known to not be on the heap (e.g. to a local
       or global).  */
*************** public:
*** 98,109 ****
    state_t m_stop;
  
  private:
    void on_zero_assignment (sm_context *sm_ctxt,
- 			   const supernode *node,
  			   const gimple *stmt,
  			   tree lhs) const;
  };
  
  /* Class for diagnostics relating to malloc_state_machine.  */
  
  class malloc_diagnostic : public pending_diagnostic
--- 404,664 ----
    state_t m_stop;
  
  private:
+   const custom_deallocator_set *
+   get_or_create_custom_deallocator_set (tree allocator_fndecl);
+   custom_deallocator_set *
+   maybe_create_custom_deallocator_set (tree allocator_fndecl);
+   const deallocator *
+   get_or_create_deallocator (tree deallocator_fndecl);
+ 
+   void on_allocator_call (sm_context *sm_ctxt,
+ 			  const gcall *call,
+ 			  const deallocator_set *deallocators,
+ 			  bool returns_nonnull = false) const;
+   void on_deallocator_call (sm_context *sm_ctxt,
+ 			    const supernode *node,
+ 			    const gcall *call,
+ 			    const deallocator *d,
+ 			    unsigned argno) const;
+   void on_realloc_call (sm_context *sm_ctxt,
+ 			const supernode *node,
+ 			const gcall *call) const;
    void on_zero_assignment (sm_context *sm_ctxt,
  			   const gimple *stmt,
  			   tree lhs) const;
+ 
+   /* A map for consolidating deallocators so that they are
+      unique per deallocator FUNCTION_DECL.  */
+   typedef hash_map<tree, deallocator *> deallocator_map_t;
+   deallocator_map_t m_deallocator_map;
+ 
+   /* Memoized lookups from FUNCTION_DECL to custom_deallocator_set *.  */
+   typedef hash_map<tree, custom_deallocator_set *> deallocator_set_cache_t;
+   deallocator_set_cache_t m_custom_deallocator_set_cache;
+ 
+   /* A map for consolidating custom_deallocator_set instances.  */
+   typedef hash_map<custom_deallocator_set::key_t,
+ 		   custom_deallocator_set *,
+ 		   deallocator_set_map_traits> custom_deallocator_set_map_t;
+   custom_deallocator_set_map_t m_custom_deallocator_set_map;
+ 
+   /* Record of dynamically-allocated objects,  for cleanup.  */
+   auto_vec <custom_deallocator_set *> m_dynamic_sets;
+   auto_vec <custom_deallocator *> m_dynamic_deallocators;
  };
  
+ /* struct deallocator.  */
+ 
+ deallocator::deallocator (malloc_state_machine *sm,
+ 			  const char *name,
+ 			  enum wording wording)
+ : m_name (name),
+   m_wording (wording),
+   m_freed (sm->add_state ("freed", RS_FREED, NULL, this))
+ {
+ }
+ 
+ hashval_t
+ deallocator::hash () const
+ {
+   return (hashval_t)m_freed->get_id ();
+ }
+ 
+ void
+ deallocator::dump_to_pp (pretty_printer *pp) const
+ {
+   pp_printf (pp, "%qs", m_name);
+ }
+ 
+ int
+ deallocator::cmp (const deallocator *a, const deallocator *b)
+ {
+   return (int)a->m_freed->get_id () - (int)b->m_freed->get_id ();
+ }
+ 
+ int
+ deallocator::cmp_ptr_ptr (const void *a, const void *b)
+ {
+   return cmp (*(const deallocator * const *)a,
+ 	      *(const deallocator * const *)b);
+ }
+ 
+ 
+ /* struct standard_deallocator : public deallocator.  */
+ 
+ standard_deallocator::standard_deallocator (malloc_state_machine *sm,
+ 					    const char *name,
+ 					    enum wording wording)
+ : deallocator (sm, name, wording)
+ {
+ }
+ 
+ /* struct deallocator_set.  */
+ 
+ deallocator_set::deallocator_set (malloc_state_machine *sm,
+ 				  enum wording wording)
+ : m_wording (wording),
+   m_unchecked (sm->add_state ("unchecked", RS_UNCHECKED, this, NULL)),
+   m_nonnull (sm->add_state ("nonnull", RS_NONNULL, this, NULL))
+ {
+ }
+ 
+ /* Dump a description of this deallocator_set to stderr.  */
+ 
+ DEBUG_FUNCTION void
+ deallocator_set::dump () const
+ {
+   pretty_printer pp;
+   pp_show_color (&pp) = pp_show_color (global_dc->printer);
+   pp.buffer->stream = stderr;
+   dump_to_pp (&pp);
+   pp_newline (&pp);
+   pp_flush (&pp);
+ }
+ 
+ /* struct custom_deallocator_set : public deallocator_set.  */
+ 
+ custom_deallocator_set::
+ custom_deallocator_set (malloc_state_machine *sm,
+ 			const auto_vec <const deallocator *> *vec,
+ 			enum wording wording)
+ : deallocator_set (sm, wording),
+   m_deallocator_vec (vec->length ())
+ {
+   unsigned i;
+   const deallocator *d;
+   FOR_EACH_VEC_ELT (*vec, i, d)
+     m_deallocator_vec.safe_push (d);
+ }
+ 
+ bool
+ custom_deallocator_set::contains_p (const deallocator *d) const
+ {
+   unsigned i;
+   const deallocator *cd;
+   FOR_EACH_VEC_ELT (m_deallocator_vec, i, cd)
+     if (cd == d)
+       return true;
+   return false;
+ }
+ 
+ const deallocator *
+ custom_deallocator_set::maybe_get_single () const
+ {
+   if (m_deallocator_vec.length () == 1)
+     return m_deallocator_vec[0];
+   return NULL;
+ }
+ 
+ void
+ custom_deallocator_set::dump_to_pp (pretty_printer *pp) const
+ {
+   pp_character (pp, '{');
+   unsigned i;
+   const deallocator *d;
+   FOR_EACH_VEC_ELT (m_deallocator_vec, i, d)
+     {
+       if (i > 0)
+ 	pp_string (pp, ", ");
+       d->dump_to_pp (pp);
+     }
+   pp_character (pp, '}');
+ }
+ 
+ /* struct standard_deallocator_set : public deallocator_set.  */
+ 
+ standard_deallocator_set::standard_deallocator_set (malloc_state_machine *sm,
+ 						    const char *name,
+ 						    enum wording wording)
+ : deallocator_set (sm, wording),
+   m_deallocator (sm, name, wording)
+ {
+ }
+ 
+ bool
+ standard_deallocator_set::contains_p (const deallocator *d) const
+ {
+   return d == &m_deallocator;
+ }
+ 
+ const deallocator *
+ standard_deallocator_set::maybe_get_single () const
+ {
+   return &m_deallocator;
+ }
+ 
+ void
+ standard_deallocator_set::dump_to_pp (pretty_printer *pp) const
+ {
+   pp_character (pp, '{');
+   pp_string (pp, m_deallocator.m_name);
+   pp_character (pp, '}');
+ }
+ 
+ /* Return STATE cast to the custom state subclass, or NULL for the start state.
+    Everything should be an allocation_state apart from the start state.  */
+ 
+ static const allocation_state *
+ dyn_cast_allocation_state (state_machine::state_t state)
+ {
+   if (state->get_id () == 0)
+     return NULL;
+   return static_cast <const allocation_state *> (state);
+ }
+ 
+ /* Return STATE cast to the custom state subclass, for a state that is
+    already known to not be the start state .  */
+ 
+ static const allocation_state *
+ as_a_allocation_state (state_machine::state_t state)
+ {
+   gcc_assert (state->get_id () != 0);
+   return static_cast <const allocation_state *> (state);
+ }
+ 
+ /* Get the resource_state for STATE.  */
+ 
+ static enum resource_state
+ get_rs (state_machine::state_t state)
+ {
+   if (const allocation_state *astate = dyn_cast_allocation_state (state))
+     return astate->m_rs;
+   else
+     return RS_START;
+ }
+ 
+ /* Return true if STATE is the start state.  */
+ 
+ static bool
+ start_p (state_machine::state_t state)
+ {
+   return get_rs (state) == RS_START;
+ }
+ 
+ /* Return true if STATE is an unchecked result from an allocator.  */
+ 
+ static bool
+ unchecked_p (state_machine::state_t state)
+ {
+   return get_rs (state) == RS_UNCHECKED;
+ }
+ 
+ /* Return true if STATE is a non-null result from an allocator.  */
+ 
+ static bool
+ nonnull_p (state_machine::state_t state)
+ {
+   return get_rs (state) == RS_NONNULL;
+ }
+ 
+ /* Return true if STATE is a value that has been passed to a deallocator.  */
+ 
+ static bool
+ freed_p (state_machine::state_t state)
+ {
+   return get_rs (state) == RS_FREED;
+ }
+ 
  /* Class for diagnostics relating to malloc_state_machine.  */
  
  class malloc_diagnostic : public pending_diagnostic
*************** public:
*** 121,142 ****
    label_text describe_state_change (const evdesc::state_change &change)
      OVERRIDE
    {
!     if (change.m_old_state == m_sm.m_start
! 	&& change.m_new_state == m_sm.m_unchecked)
        // TODO: verify that it's the allocation stmt, not a copy
        return label_text::borrow ("allocated here");
!     if (change.m_old_state == m_sm.m_unchecked
! 	&& change.m_new_state == m_sm.m_nonnull)
!       return change.formatted_print ("assuming %qE is non-NULL",
! 				     change.m_expr);
!     if (change.m_new_state == m_sm.m_null)
        {
! 	if (change.m_old_state == m_sm.m_unchecked)
! 	  return change.formatted_print ("assuming %qE is NULL",
  					 change.m_expr);
  	else
! 	  return change.formatted_print ("%qE is NULL",
! 					 change.m_expr);
        }
  
      return label_text ();
--- 676,715 ----
    label_text describe_state_change (const evdesc::state_change &change)
      OVERRIDE
    {
!     if (change.m_old_state == m_sm.get_start_state ()
! 	&& unchecked_p (change.m_new_state))
        // TODO: verify that it's the allocation stmt, not a copy
        return label_text::borrow ("allocated here");
!     if (unchecked_p (change.m_old_state)
! 	&& nonnull_p (change.m_new_state))
        {
! 	if (change.m_expr)
! 	  return change.formatted_print ("assuming %qE is non-NULL",
  					 change.m_expr);
  	else
! 	  return change.formatted_print ("assuming %qs is non-NULL",
! 					 "<unknown>");
!       }
!     if (change.m_new_state == m_sm.m_null)
!       {
! 	if (unchecked_p (change.m_old_state))
! 	  {
! 	    if (change.m_expr)
! 	      return change.formatted_print ("assuming %qE is NULL",
! 					     change.m_expr);
! 	    else
! 	      return change.formatted_print ("assuming %qs is NULL",
! 					     "<unknown>");
! 	  }
! 	else
! 	  {
! 	    if (change.m_expr)
! 	      return change.formatted_print ("%qE is NULL",
! 					     change.m_expr);
! 	    else
! 	      return change.formatted_print ("%qs is NULL",
! 					     "<unknown>");
! 	  }
        }
  
      return label_text ();
*************** protected:
*** 147,159 ****
    tree m_arg;
  };
  
  /* Concrete subclass for reporting double-free diagnostics.  */
  
  class double_free : public malloc_diagnostic
  {
  public:
!   double_free (const malloc_state_machine &sm, tree arg)
!   : malloc_diagnostic (sm, arg)
    {}
  
    const char *get_kind () const FINAL OVERRIDE { return "double_free"; }
--- 720,814 ----
    tree m_arg;
  };
  
+ /* Concrete subclass for reporting mismatching allocator/deallocator
+    diagnostics.  */
+ 
+ class mismatching_deallocation : public malloc_diagnostic
+ {
+ public:
+   mismatching_deallocation (const malloc_state_machine &sm, tree arg,
+ 			    const deallocator_set *expected_deallocators,
+ 			    const deallocator *actual_dealloc)
+   : malloc_diagnostic (sm, arg),
+     m_expected_deallocators (expected_deallocators),
+     m_actual_dealloc (actual_dealloc)
+   {}
+ 
+   const char *get_kind () const FINAL OVERRIDE
+   {
+     return "mismatching_deallocation";
+   }
+ 
+   bool emit (rich_location *rich_loc) FINAL OVERRIDE
+   {
+     auto_diagnostic_group d;
+     diagnostic_metadata m;
+     m.add_cwe (762); /* CWE-762: Mismatched Memory Management Routines.  */
+     if (const deallocator *expected_dealloc
+ 	  = m_expected_deallocators->maybe_get_single ())
+       return warning_meta (rich_loc, m, OPT_Wanalyzer_mismatching_deallocation,
+ 			   "%qE should have been deallocated with %qs"
+ 			   " but was deallocated with %qs",
+ 			   m_arg, expected_dealloc->m_name,
+ 			   m_actual_dealloc->m_name);
+     else
+       return warning_meta (rich_loc, m, OPT_Wanalyzer_mismatching_deallocation,
+ 			   "%qs called on %qE returned from a mismatched"
+ 			   " allocation function",
+ 			   m_actual_dealloc->m_name, m_arg);
+   }
+ 
+   label_text describe_state_change (const evdesc::state_change &change)
+     FINAL OVERRIDE
+   {
+     if (unchecked_p (change.m_new_state))
+       {
+ 	m_alloc_event = change.m_event_id;
+ 	if (const deallocator *expected_dealloc
+ 	    = m_expected_deallocators->maybe_get_single ())
+ 	  return change.formatted_print ("allocated here"
+ 					 " (expects deallocation with %qs)",
+ 					 expected_dealloc->m_name);
+ 	else
+ 	  return change.formatted_print ("allocated here");
+       }
+     return malloc_diagnostic::describe_state_change (change);
+   }
+ 
+   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
+   {
+     if (m_alloc_event.known_p ())
+       {
+ 	if (const deallocator *expected_dealloc
+ 	    = m_expected_deallocators->maybe_get_single ())
+ 	  return ev.formatted_print
+ 	    ("deallocated with %qs here;"
+ 	     " allocation at %@ expects deallocation with %qs",
+ 	     m_actual_dealloc->m_name, &m_alloc_event,
+ 	     expected_dealloc->m_name);
+ 	else
+ 	  return ev.formatted_print
+ 	    ("deallocated with %qs here;"
+ 	     " allocated at %@",
+ 	     m_actual_dealloc->m_name, &m_alloc_event);
+       }
+     return ev.formatted_print ("deallocated with %qs here",
+ 			       m_actual_dealloc->m_name);
+   }
+ 
+ private:
+   diagnostic_event_id_t m_alloc_event;
+   const deallocator_set *m_expected_deallocators;
+   const deallocator *m_actual_dealloc;
+ };
+ 
  /* Concrete subclass for reporting double-free diagnostics.  */
  
  class double_free : public malloc_diagnostic
  {
  public:
!   double_free (const malloc_state_machine &sm, tree arg, const char *funcname)
!   : malloc_diagnostic (sm, arg), m_funcname (funcname)
    {}
  
    const char *get_kind () const FINAL OVERRIDE { return "double_free"; }
*************** public:
*** 164,179 ****
      diagnostic_metadata m;
      m.add_cwe (415); /* CWE-415: Double Free.  */
      return warning_meta (rich_loc, m, OPT_Wanalyzer_double_free,
! 			 "double-%<free%> of %qE", m_arg);
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
      FINAL OVERRIDE
    {
!     if (change.m_new_state == m_sm.m_freed)
        {
  	m_first_free_event = change.m_event_id;
! 	return change.formatted_print ("first %qs here", "free");
        }
      return malloc_diagnostic::describe_state_change (change);
    }
--- 819,834 ----
      diagnostic_metadata m;
      m.add_cwe (415); /* CWE-415: Double Free.  */
      return warning_meta (rich_loc, m, OPT_Wanalyzer_double_free,
! 			 "double-%qs of %qE", m_funcname, m_arg);
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
      FINAL OVERRIDE
    {
!     if (freed_p (change.m_new_state))
        {
  	m_first_free_event = change.m_event_id;
! 	return change.formatted_print ("first %qs here", m_funcname);
        }
      return malloc_diagnostic::describe_state_change (change);
    }
*************** public:
*** 181,187 ****
    label_text describe_call_with_state (const evdesc::call_with_state &info)
      FINAL OVERRIDE
    {
!     if (info.m_state == m_sm.m_freed)
        return info.formatted_print
  	("passing freed pointer %qE in call to %qE from %qE",
  	 info.m_expr, info.m_callee_fndecl, info.m_caller_fndecl);
--- 836,842 ----
    label_text describe_call_with_state (const evdesc::call_with_state &info)
      FINAL OVERRIDE
    {
!     if (freed_p (info.m_state))
        return info.formatted_print
  	("passing freed pointer %qE in call to %qE from %qE",
  	 info.m_expr, info.m_callee_fndecl, info.m_caller_fndecl);
*************** public:
*** 192,204 ****
    {
      if (m_first_free_event.known_p ())
        return ev.formatted_print ("second %qs here; first %qs was at %@",
! 				 "free", "free",
  				 &m_first_free_event);
!     return ev.formatted_print ("second %qs here", "free");
    }
  
  private:
    diagnostic_event_id_t m_first_free_event;
  };
  
  /* Abstract subclass for describing possible bad uses of NULL.
--- 847,860 ----
    {
      if (m_first_free_event.known_p ())
        return ev.formatted_print ("second %qs here; first %qs was at %@",
! 				 m_funcname, m_funcname,
  				 &m_first_free_event);
!     return ev.formatted_print ("second %qs here", m_funcname);
    }
  
  private:
    diagnostic_event_id_t m_first_free_event;
+   const char *m_funcname;
  };
  
  /* Abstract subclass for describing possible bad uses of NULL.
*************** public:
*** 214,221 ****
    label_text describe_state_change (const evdesc::state_change &change)
      FINAL OVERRIDE
    {
!     if (change.m_old_state == m_sm.m_start
! 	&& change.m_new_state == m_sm.m_unchecked)
        {
  	m_origin_of_unchecked_event = change.m_event_id;
  	return label_text::borrow ("this call could return NULL");
--- 870,877 ----
    label_text describe_state_change (const evdesc::state_change &change)
      FINAL OVERRIDE
    {
!     if (change.m_old_state == m_sm.get_start_state ()
! 	&& unchecked_p (change.m_new_state))
        {
  	m_origin_of_unchecked_event = change.m_event_id;
  	return label_text::borrow ("this call could return NULL");
*************** public:
*** 226,232 ****
    label_text describe_return_of_state (const evdesc::return_of_state &info)
      FINAL OVERRIDE
    {
!     if (info.m_state == m_sm.m_unchecked)
        return info.formatted_print ("possible return of NULL to %qE from %qE",
  				   info.m_caller_fndecl, info.m_callee_fndecl);
      return label_text ();
--- 882,888 ----
    label_text describe_return_of_state (const evdesc::return_of_state &info)
      FINAL OVERRIDE
    {
!     if (unchecked_p (info.m_state))
        return info.formatted_print ("possible return of NULL to %qE from %qE",
  				   info.m_caller_fndecl, info.m_callee_fndecl);
      return label_text ();
*************** public:
*** 270,284 ****
  
  };
  
  /* Subroutine for use by possible_null_arg::emit and null_arg::emit.
     Issue a note informing that the pertinent argument must be non-NULL.  */
  
  static void
  inform_nonnull_attribute (tree fndecl, int arg_idx)
  {
    inform (DECL_SOURCE_LOCATION (fndecl),
! 	  "argument %u of %qD must be non-null",
! 	  arg_idx + 1, fndecl);
    /* Ideally we would use the location of the parm and underline the
       attribute also - but we don't have the location_t values at this point
       in the middle-end.
--- 926,965 ----
  
  };
  
+ /* Return true if FNDECL is a C++ method.  */
+ 
+ static bool
+ method_p (tree fndecl)
+ {
+   return TREE_CODE (TREE_TYPE (fndecl)) == METHOD_TYPE;
+ }
+ 
+ /* Return a 1-based description of ARG_IDX (0-based) of FNDECL.
+    Compare with %P in the C++ FE  (implemented in cp/error.c: parm_to_string
+    as called from cp_printer).  */
+ 
+ static label_text
+ describe_argument_index (tree fndecl, int arg_idx)
+ {
+   if (method_p (fndecl))
+     if (arg_idx == 0)
+       return label_text::borrow ("'this'");
+   pretty_printer pp;
+   pp_printf (&pp, "%u", arg_idx + 1 - method_p (fndecl));
+   return label_text::take (xstrdup (pp_formatted_text (&pp)));
+ }
+ 
  /* Subroutine for use by possible_null_arg::emit and null_arg::emit.
     Issue a note informing that the pertinent argument must be non-NULL.  */
  
  static void
  inform_nonnull_attribute (tree fndecl, int arg_idx)
  {
+   label_text arg_desc = describe_argument_index (fndecl, arg_idx);
    inform (DECL_SOURCE_LOCATION (fndecl),
! 	  "argument %s of %qD must be non-null",
! 	  arg_desc.m_buffer, fndecl);
!   arg_desc.maybe_free ();
    /* Ideally we would use the location of the parm and underline the
       attribute also - but we don't have the location_t values at this point
       in the middle-end.
*************** public:
*** 326,340 ****
  
    label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      if (m_origin_of_unchecked_event.known_p ())
!       return ev.formatted_print ("argument %u (%qE) from %@ could be NULL"
! 				 " where non-null expected",
! 				 m_arg_idx + 1, ev.m_expr,
! 				 &m_origin_of_unchecked_event);
      else
!       return ev.formatted_print ("argument %u (%qE) could be NULL"
! 				 " where non-null expected",
! 				 m_arg_idx + 1, ev.m_expr);
    }
  
  private:
--- 1007,1025 ----
  
    label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
+     label_text arg_desc = describe_argument_index (m_fndecl, m_arg_idx);
+     label_text result;
      if (m_origin_of_unchecked_event.known_p ())
!       result = ev.formatted_print ("argument %s (%qE) from %@ could be NULL"
! 				   " where non-null expected",
! 				   arg_desc.m_buffer, ev.m_expr,
! 				   &m_origin_of_unchecked_event);
      else
!       result = ev.formatted_print ("argument %s (%qE) could be NULL"
! 				   " where non-null expected",
! 				   arg_desc.m_buffer, ev.m_expr);
!     arg_desc.maybe_free ();
!     return result;
    }
  
  private:
*************** public:
*** 354,362 ****
  
    bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
!     /* CWE-690: Unchecked Return Value to NULL Pointer Dereference.  */
      diagnostic_metadata m;
!     m.add_cwe (690);
      return warning_meta (rich_loc, m,
  			 OPT_Wanalyzer_null_dereference,
  			 "dereference of NULL %qE", m_arg);
--- 1039,1047 ----
  
    bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
!     /* CWE-476: NULL Pointer Dereference.  */
      diagnostic_metadata m;
!     m.add_cwe (476);
      return warning_meta (rich_loc, m,
  			 OPT_Wanalyzer_null_dereference,
  			 "dereference of NULL %qE", m_arg);
*************** public:
*** 402,414 ****
  
    bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
!     /* CWE-690: Unchecked Return Value to NULL Pointer Dereference.  */
      auto_diagnostic_group d;
      diagnostic_metadata m;
!     m.add_cwe (690);
!     bool warned = warning_meta (rich_loc, m, OPT_Wanalyzer_null_argument,
! 				"use of NULL %qE where non-null expected",
! 				m_arg);
      if (warned)
        inform_nonnull_attribute (m_fndecl, m_arg_idx);
      return warned;
--- 1087,1105 ----
  
    bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
!     /* CWE-476: NULL Pointer Dereference.  */
      auto_diagnostic_group d;
      diagnostic_metadata m;
!     m.add_cwe (476);
! 
!     bool warned;
!     if (zerop (m_arg))
!       warned = warning_meta (rich_loc, m, OPT_Wanalyzer_null_argument,
! 			     "use of NULL where non-null expected");
!     else
!       warned = warning_meta (rich_loc, m, OPT_Wanalyzer_null_argument,
! 			     "use of NULL %qE where non-null expected",
! 			     m_arg);
      if (warned)
        inform_nonnull_attribute (m_fndecl, m_arg_idx);
      return warned;
*************** public:
*** 416,424 ****
  
    label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
!     return ev.formatted_print ("argument %u (%qE) NULL"
! 			       " where non-null expected",
! 			       m_arg_idx + 1, ev.m_expr);
    }
  
  private:
--- 1107,1123 ----
  
    label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
!     label_text arg_desc = describe_argument_index (m_fndecl, m_arg_idx);
!     label_text result;
!     if (zerop (ev.m_expr))
!       result = ev.formatted_print ("argument %s NULL where non-null expected",
! 				   arg_desc.m_buffer);
!     else
!       result = ev.formatted_print ("argument %s (%qE) NULL"
! 				   " where non-null expected",
! 				   arg_desc.m_buffer, ev.m_expr);
!     arg_desc.maybe_free ();
!     return result;
    }
  
  private:
*************** private:
*** 429,437 ****
  class use_after_free : public malloc_diagnostic
  {
  public:
!   use_after_free (const malloc_state_machine &sm, tree arg)
!   : malloc_diagnostic (sm, arg)
!   {}
  
    const char *get_kind () const FINAL OVERRIDE { return "use_after_free"; }
  
--- 1128,1140 ----
  class use_after_free : public malloc_diagnostic
  {
  public:
!   use_after_free (const malloc_state_machine &sm, tree arg,
! 		  const deallocator *deallocator)
!   : malloc_diagnostic (sm, arg),
!     m_deallocator (deallocator)
!   {
!     gcc_assert (deallocator);
!   }
  
    const char *get_kind () const FINAL OVERRIDE { return "use_after_free"; }
  
*************** public:
*** 441,471 ****
      diagnostic_metadata m;
      m.add_cwe (416);
      return warning_meta (rich_loc, m, OPT_Wanalyzer_use_after_free,
! 			 "use after %<free%> of %qE", m_arg);
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
      FINAL OVERRIDE
    {
!     if (change.m_new_state == m_sm.m_freed)
        {
  	m_free_event = change.m_event_id;
! 	return label_text::borrow ("freed here");
        }
      return malloc_diagnostic::describe_state_change (change);
    }
  
    label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      if (m_free_event.known_p ())
!       return ev.formatted_print ("use after %<free%> of %qE; freed at %@",
! 				 ev.m_expr, &m_free_event);
      else
!       return ev.formatted_print ("use after %<free%> of %qE", ev.m_expr);
    }
  
  private:
    diagnostic_event_id_t m_free_event;
  };
  
  class malloc_leak : public malloc_diagnostic
--- 1144,1203 ----
      diagnostic_metadata m;
      m.add_cwe (416);
      return warning_meta (rich_loc, m, OPT_Wanalyzer_use_after_free,
! 			 "use after %<%s%> of %qE",
! 			 m_deallocator->m_name, m_arg);
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
      FINAL OVERRIDE
    {
!     if (freed_p (change.m_new_state))
        {
  	m_free_event = change.m_event_id;
! 	switch (m_deallocator->m_wording)
! 	  {
! 	  default:
! 	  case WORDING_REALLOCATED:
! 	    gcc_unreachable ();
! 	  case WORDING_FREED:
! 	    return label_text::borrow ("freed here");
! 	  case WORDING_DELETED:
! 	    return label_text::borrow ("deleted here");
! 	  case WORDING_DEALLOCATED:
! 	    return label_text::borrow ("deallocated here");
! 	  }
        }
      return malloc_diagnostic::describe_state_change (change);
    }
  
    label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
+     const char *funcname = m_deallocator->m_name;
      if (m_free_event.known_p ())
!       switch (m_deallocator->m_wording)
! 	{
! 	default:
! 	case WORDING_REALLOCATED:
! 	  gcc_unreachable ();
! 	case WORDING_FREED:
! 	  return ev.formatted_print ("use after %<%s%> of %qE; freed at %@",
! 				     funcname, ev.m_expr, &m_free_event);
! 	case WORDING_DELETED:
! 	  return ev.formatted_print ("use after %<%s%> of %qE; deleted at %@",
! 				     funcname, ev.m_expr, &m_free_event);
! 	case WORDING_DEALLOCATED:
! 	  return ev.formatted_print ("use after %<%s%> of %qE;"
! 				     " deallocated at %@",
! 				     funcname, ev.m_expr, &m_free_event);
! 	}
      else
!       return ev.formatted_print ("use after %<%s%> of %qE",
! 				 funcname, ev.m_expr);
    }
  
  private:
    diagnostic_event_id_t m_free_event;
+   const deallocator *m_deallocator;
  };
  
  class malloc_leak : public malloc_diagnostic
*************** public:
*** 480,495 ****
    {
      diagnostic_metadata m;
      m.add_cwe (401);
!     return warning_meta (rich_loc, m, OPT_Wanalyzer_malloc_leak,
! 			 "leak of %qE", m_arg);
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
      FINAL OVERRIDE
    {
!     if (change.m_new_state == m_sm.m_unchecked)
        {
! 	m_malloc_event = change.m_event_id;
  	return label_text::borrow ("allocated here");
        }
      return malloc_diagnostic::describe_state_change (change);
--- 1212,1232 ----
    {
      diagnostic_metadata m;
      m.add_cwe (401);
!     if (m_arg)
!       return warning_meta (rich_loc, m, OPT_Wanalyzer_malloc_leak,
! 			   "leak of %qE", m_arg);
!     else
!       return warning_meta (rich_loc, m, OPT_Wanalyzer_malloc_leak,
! 			   "leak of %qs", "<unknown>");
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
      FINAL OVERRIDE
    {
!     if (unchecked_p (change.m_new_state)
! 	|| (start_p (change.m_old_state) && nonnull_p (change.m_new_state)))
        {
! 	m_alloc_event = change.m_event_id;
  	return label_text::borrow ("allocated here");
        }
      return malloc_diagnostic::describe_state_change (change);
*************** public:
*** 497,518 ****
  
    label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
!     if (m_malloc_event.known_p ())
!       return ev.formatted_print ("%qE leaks here; was allocated at %@",
! 				 ev.m_expr, &m_malloc_event);
      else
!       return ev.formatted_print ("%qE leaks here", ev.m_expr);
    }
  
  private:
!   diagnostic_event_id_t m_malloc_event;
  };
  
  class free_of_non_heap : public malloc_diagnostic
  {
  public:
!   free_of_non_heap (const malloc_state_machine &sm, tree arg)
!   : malloc_diagnostic (sm, arg), m_kind (KIND_UNKNOWN)
    {
    }
  
--- 1234,1267 ----
  
    label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
!     if (ev.m_expr)
!       {
! 	if (m_alloc_event.known_p ())
! 	  return ev.formatted_print ("%qE leaks here; was allocated at %@",
! 				     ev.m_expr, &m_alloc_event);
! 	else
! 	  return ev.formatted_print ("%qE leaks here", ev.m_expr);
!       }
      else
!       {
! 	if (m_alloc_event.known_p ())
! 	  return ev.formatted_print ("%qs leaks here; was allocated at %@",
! 				     "<unknown>", &m_alloc_event);
! 	else
! 	  return ev.formatted_print ("%qs leaks here", "<unknown>");
!       }
    }
  
  private:
!   diagnostic_event_id_t m_alloc_event;
  };
  
  class free_of_non_heap : public malloc_diagnostic
  {
  public:
!   free_of_non_heap (const malloc_state_machine &sm, tree arg,
! 		    const char *funcname)
!   : malloc_diagnostic (sm, arg), m_funcname (funcname), m_kind (KIND_UNKNOWN)
    {
    }
  
*************** public:
*** 536,550 ****
  	gcc_unreachable ();
        case KIND_UNKNOWN:
  	return warning_meta (rich_loc, m, OPT_Wanalyzer_free_of_non_heap,
! 			     "%<free%> of %qE which points to memory"
  			     " not on the heap",
! 			     m_arg);
  	break;
        case KIND_ALLOCA:
  	return warning_meta (rich_loc, m, OPT_Wanalyzer_free_of_non_heap,
! 			     "%<free%> of memory allocated on the stack by"
  			     " %qs (%qE) will corrupt the heap",
! 			     "alloca", m_arg);
  	break;
        }
    }
--- 1285,1299 ----
  	gcc_unreachable ();
        case KIND_UNKNOWN:
  	return warning_meta (rich_loc, m, OPT_Wanalyzer_free_of_non_heap,
! 			     "%<%s%> of %qE which points to memory"
  			     " not on the heap",
! 			     m_funcname, m_arg);
  	break;
        case KIND_ALLOCA:
  	return warning_meta (rich_loc, m, OPT_Wanalyzer_free_of_non_heap,
! 			     "%<%s%> of memory allocated on the stack by"
  			     " %qs (%qE) will corrupt the heap",
! 			     m_funcname, "alloca", m_arg);
  	break;
        }
    }
*************** public:
*** 573,579 ****
  
    label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
!     return ev.formatted_print ("call to %qs here", "free");
    }
  
  private:
--- 1322,1328 ----
  
    label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
!     return ev.formatted_print ("call to %qs here", m_funcname);
    }
  
  private:
*************** private:
*** 582,602 ****
      KIND_UNKNOWN,
      KIND_ALLOCA
    };
    enum kind m_kind;
  };
  
  /* malloc_state_machine's ctor.  */
  
  malloc_state_machine::malloc_state_machine (logger *logger)
! : state_machine ("malloc", logger)
  {
!   m_start = add_state ("start");
!   m_unchecked = add_state ("unchecked");
!   m_null = add_state ("null");
!   m_nonnull = add_state ("nonnull");
!   m_freed = add_state ("freed");
!   m_non_heap = add_state ("non-heap");
!   m_stop = add_state ("stop");
  }
  
  /* Implementation of state_machine::on_stmt vfunc for malloc_state_machine.  */
--- 1331,1506 ----
      KIND_UNKNOWN,
      KIND_ALLOCA
    };
+   const char *m_funcname;
    enum kind m_kind;
  };
  
+ /* struct allocation_state : public state_machine::state.  */
+ 
+ /* Implementation of state_machine::state::dump_to_pp vfunc
+    for allocation_state: append the API that this allocation is
+    associated with.  */
+ 
+ void
+ allocation_state::dump_to_pp (pretty_printer *pp) const
+ {
+   state_machine::state::dump_to_pp (pp);
+   if (m_deallocators)
+     {
+       pp_string (pp, " (");
+       m_deallocators->dump_to_pp (pp);
+       pp_character (pp, ')');
+     }
+ }
+ 
+ /* Given a allocation_state for a deallocator_set, get the "nonnull" state
+    for the corresponding allocator(s).  */
+ 
+ const allocation_state *
+ allocation_state::get_nonnull () const
+ {
+   gcc_assert (m_deallocators);
+   return as_a_allocation_state (m_deallocators->m_nonnull);
+ }
+ 
  /* malloc_state_machine's ctor.  */
  
  malloc_state_machine::malloc_state_machine (logger *logger)
! : state_machine ("malloc", logger),
!   m_free (this, "free", WORDING_FREED),
!   m_scalar_delete (this, "delete", WORDING_DELETED),
!   m_vector_delete (this, "delete[]", WORDING_DELETED),
!   m_realloc (this, "realloc", WORDING_REALLOCATED)
  {
!   gcc_assert (m_start->get_id () == 0);
!   m_null = add_state ("null", RS_FREED, NULL, NULL);
!   m_non_heap = add_state ("non-heap", RS_NON_HEAP, NULL, NULL);
!   m_stop = add_state ("stop", RS_STOP, NULL, NULL);
! }
! 
! malloc_state_machine::~malloc_state_machine ()
! {
!   unsigned i;
!   custom_deallocator_set *set;
!   FOR_EACH_VEC_ELT (m_dynamic_sets, i, set)
!     delete set;
!   custom_deallocator *d;
!   FOR_EACH_VEC_ELT (m_dynamic_deallocators, i, d)
!     delete d;
! }
! 
! state_machine::state_t
! malloc_state_machine::add_state (const char *name, enum resource_state rs,
! 				 const deallocator_set *deallocators,
! 				 const deallocator *deallocator)
! {
!   return add_custom_state (new allocation_state (name, alloc_state_id (),
! 						 rs, deallocators,
! 						 deallocator));
! }
! 
! /* If ALLOCATOR_FNDECL has any "__attribute__((malloc(FOO)))",
!    return a custom_deallocator_set for them, consolidating them
!    to ensure uniqueness of the sets.
! 
!    Return NULL if it has no such attributes.  */
! 
! const custom_deallocator_set *
! malloc_state_machine::
! get_or_create_custom_deallocator_set (tree allocator_fndecl)
! {
!   /* Early rejection of decls without attributes.  */
!   tree attrs = DECL_ATTRIBUTES (allocator_fndecl);
!   if (!attrs)
!     return NULL;
! 
!   /* Otherwise, call maybe_create_custom_deallocator_set,
!      memoizing the result.  */
!   if (custom_deallocator_set **slot
!       = m_custom_deallocator_set_cache.get (allocator_fndecl))
!     return *slot;
!   custom_deallocator_set *set
!     = maybe_create_custom_deallocator_set (allocator_fndecl);
!   m_custom_deallocator_set_cache.put (allocator_fndecl, set);
!   return set;
! }
! 
! /* Given ALLOCATOR_FNDECL, a FUNCTION_DECL with attributes,
!    look for any "__attribute__((malloc(FOO)))" and return a
!    custom_deallocator_set for them, consolidating them
!    to ensure uniqueness of the sets.
! 
!    Return NULL if it has no such attributes.
! 
!    Subroutine of get_or_create_custom_deallocator_set which
!    memoizes the result.  */
! 
! custom_deallocator_set *
! malloc_state_machine::
! maybe_create_custom_deallocator_set (tree allocator_fndecl)
! {
!   tree attrs = DECL_ATTRIBUTES (allocator_fndecl);
!   gcc_assert (attrs);
! 
!   /* Look for instances of __attribute__((malloc(FOO))).  */
!   auto_vec<const deallocator *> deallocator_vec;
!   for (tree allocs = attrs;
!        (allocs = lookup_attribute ("malloc", allocs));
!        allocs = TREE_CHAIN (allocs))
!     {
!       tree args = TREE_VALUE (allocs);
!       if (!args)
! 	continue;
!       if (TREE_VALUE (args))
! 	{
! 	  const deallocator *d
! 	    = get_or_create_deallocator (TREE_VALUE (args));
! 	  deallocator_vec.safe_push (d);
! 	}
!     }
! 
!   /* If there weren't any deallocators, bail.  */
!   if (deallocator_vec.length () == 0)
!     return NULL;
! 
!   /* Consolidate, so that we reuse existing deallocator_set
!      instances.  */
!   deallocator_vec.qsort (deallocator::cmp_ptr_ptr);
!   custom_deallocator_set **slot
!     = m_custom_deallocator_set_map.get (&deallocator_vec);
!   if (slot)
!     return *slot;
!   custom_deallocator_set *set
!     = new custom_deallocator_set (this, &deallocator_vec, WORDING_DEALLOCATED);
!   m_custom_deallocator_set_map.put (&set->m_deallocator_vec, set);
!   m_dynamic_sets.safe_push (set);
!   return set;
! }
! 
! /* Get the deallocator for DEALLOCATOR_FNDECL, creating it if necessary.  */
! 
! const deallocator *
! malloc_state_machine::get_or_create_deallocator (tree deallocator_fndecl)
! {
!   deallocator **slot = m_deallocator_map.get (deallocator_fndecl);
!   if (slot)
!     return *slot;
! 
!   /* Reuse "free".  */
!   deallocator *d;
!   if (is_named_call_p (deallocator_fndecl, "free")
!       || is_std_named_call_p (deallocator_fndecl, "free"))
!     d = &m_free.m_deallocator;
!   else
!     {
!       custom_deallocator *cd
! 	= new custom_deallocator (this, deallocator_fndecl,
! 				  WORDING_DEALLOCATED);
!       m_dynamic_deallocators.safe_push (cd);
!       d = cd;
!     }
!   m_deallocator_map.put (deallocator_fndecl, d);
!   return d;
  }
  
  /* Implementation of state_machine::on_stmt vfunc for malloc_state_machine.  */
*************** malloc_state_machine::on_stmt (sm_contex
*** 614,631 ****
  	    || is_std_named_call_p (callee_fndecl, "malloc", call, 1)
  	    || is_std_named_call_p (callee_fndecl, "calloc", call, 2)
  	    || is_named_call_p (callee_fndecl, "__builtin_malloc", call, 1)
! 	    || is_named_call_p (callee_fndecl, "__builtin_calloc", call, 2))
  	  {
! 	    tree lhs = gimple_call_lhs (call);
! 	    if (lhs)
! 	      {
! 		lhs = sm_ctxt->get_readable_tree (lhs);
! 		sm_ctxt->on_transition (node, stmt, lhs, m_start, m_unchecked);
! 	      }
! 	    else
! 	      {
! 		/* TODO: report leak.  */
! 	      }
  	    return true;
  	  }
  
--- 1518,1546 ----
  	    || is_std_named_call_p (callee_fndecl, "malloc", call, 1)
  	    || is_std_named_call_p (callee_fndecl, "calloc", call, 2)
  	    || is_named_call_p (callee_fndecl, "__builtin_malloc", call, 1)
! 	    || is_named_call_p (callee_fndecl, "__builtin_calloc", call, 2)
! 	    || is_named_call_p (callee_fndecl, "strdup", call, 1)
! 	    || is_named_call_p (callee_fndecl, "strndup", call, 2))
  	  {
! 	    on_allocator_call (sm_ctxt, call, &m_free);
! 	    return true;
! 	  }
! 
! 	if (is_named_call_p (callee_fndecl, "operator new", call, 1))
! 	  on_allocator_call (sm_ctxt, call, &m_scalar_delete);
! 	else if (is_named_call_p (callee_fndecl, "operator new []", call, 1))
! 	  on_allocator_call (sm_ctxt, call, &m_vector_delete);
! 	else if (is_named_call_p (callee_fndecl, "operator delete", call, 1)
! 		 || is_named_call_p (callee_fndecl, "operator delete", call, 2))
! 	  {
! 	    on_deallocator_call (sm_ctxt, node, call,
! 				 &m_scalar_delete.m_deallocator, 0);
! 	    return true;
! 	  }
! 	else if (is_named_call_p (callee_fndecl, "operator delete []", call, 1))
! 	  {
! 	    on_deallocator_call (sm_ctxt, node, call,
! 				 &m_vector_delete.m_deallocator, 0);
  	    return true;
  	  }
  
*************** malloc_state_machine::on_stmt (sm_contex
*** 634,643 ****
  	  {
  	    tree lhs = gimple_call_lhs (call);
  	    if (lhs)
! 	      {
! 		lhs = sm_ctxt->get_readable_tree (lhs);
! 		sm_ctxt->on_transition (node, stmt, lhs, m_start, m_non_heap);
! 	      }
  	    return true;
  	  }
  
--- 1549,1555 ----
  	  {
  	    tree lhs = gimple_call_lhs (call);
  	    if (lhs)
! 	      sm_ctxt->on_transition (node, stmt, lhs, m_start, m_non_heap);
  	    return true;
  	  }
  
*************** malloc_state_machine::on_stmt (sm_contex
*** 645,672 ****
  	    || is_std_named_call_p (callee_fndecl, "free", call, 1)
  	    || is_named_call_p (callee_fndecl, "__builtin_free", call, 1))
  	  {
! 	    tree arg = gimple_call_arg (call, 0);
! 
! 	    arg = sm_ctxt->get_readable_tree (arg);
! 
! 	    /* start/unchecked/nonnull -> freed.  */
! 	    sm_ctxt->on_transition (node, stmt, arg, m_start, m_freed);
! 	    sm_ctxt->on_transition (node, stmt, arg, m_unchecked, m_freed);
! 	    sm_ctxt->on_transition (node, stmt, arg, m_nonnull, m_freed);
  
! 	    /* Keep state "null" as-is, rather than transitioning to "free";
! 	       we don't want to complain about double-free of NULL.  */
  
! 	    /* freed -> stop, with warning.  */
! 	    sm_ctxt->warn_for_state (node, stmt, arg, m_freed,
! 				     new double_free (*this, arg));
! 	    sm_ctxt->on_transition (node, stmt, arg, m_freed, m_stop);
  
! 	    /* non-heap -> stop, with warning.  */
! 	    sm_ctxt->warn_for_state (node, stmt, arg, m_non_heap,
! 				     new free_of_non_heap (*this, arg));
! 	    sm_ctxt->on_transition (node, stmt, arg, m_non_heap, m_stop);
! 	    return true;
  	  }
  
  	/* Handle "__attribute__((nonnull))".   */
--- 1557,1587 ----
  	    || is_std_named_call_p (callee_fndecl, "free", call, 1)
  	    || is_named_call_p (callee_fndecl, "__builtin_free", call, 1))
  	  {
! 	    on_deallocator_call (sm_ctxt, node, call,
! 				 &m_free.m_deallocator, 0);
! 	    return true;
! 	  }
  
! 	if (is_named_call_p (callee_fndecl, "realloc", call, 2)
! 	    || is_named_call_p (callee_fndecl, "__builtin_realloc", call, 2))
! 	  {
! 	    on_realloc_call (sm_ctxt, node, call);
! 	    return true;
! 	  }
  
! 	/* Cast away const-ness for cache-like operations.  */
! 	malloc_state_machine *mutable_this
! 	  = const_cast <malloc_state_machine *> (this);
  
! 	/* Handle "__attribute__((malloc(FOO)))".   */
! 	if (const deallocator_set *deallocators
! 	      = mutable_this->get_or_create_custom_deallocator_set
! 		  (callee_fndecl))
! 	  {
! 	    tree attrs = TYPE_ATTRIBUTES (TREE_TYPE (callee_fndecl));
! 	    bool returns_nonnull
! 	      = lookup_attribute ("returns_nonnull", attrs);
! 	    on_allocator_call (sm_ctxt, call, deallocators, returns_nonnull);
  	  }
  
  	/* Handle "__attribute__((nonnull))".   */
*************** malloc_state_machine::on_stmt (sm_contex
*** 685,711 ****
  		  if (bitmap_empty_p (nonnull_args)
  		      || bitmap_bit_p (nonnull_args, i))
  		    {
! 		      sm_ctxt->warn_for_state
! 			(node, stmt, arg, m_unchecked,
! 			 new possible_null_arg (*this, arg, callee_fndecl, i));
! 		      sm_ctxt->on_transition (node, stmt, arg, m_unchecked,
! 					      m_nonnull);
! 
! 		      sm_ctxt->warn_for_state
! 			(node, stmt, arg, m_null,
! 			 new null_arg (*this, arg, callee_fndecl, i));
! 		      sm_ctxt->on_transition (node, stmt, arg, m_null, m_stop);
  		    }
  		}
  	      BITMAP_FREE (nonnull_args);
  	    }
  	}
        }
  
!   if (tree lhs = is_zero_assignment (stmt))
      if (any_pointer_p (lhs))
!       on_zero_assignment (sm_ctxt, node, stmt,lhs);
  
    if (const gassign *assign_stmt = dyn_cast <const gassign *> (stmt))
      {
        enum tree_code op = gimple_assign_rhs_code (assign_stmt);
--- 1600,1653 ----
  		  if (bitmap_empty_p (nonnull_args)
  		      || bitmap_bit_p (nonnull_args, i))
  		    {
! 		      state_t state = sm_ctxt->get_state (stmt, arg);
! 		      /* Can't use a switch as the states are non-const.  */
! 		      if (unchecked_p (state))
! 			{
! 			  tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
! 			  sm_ctxt->warn (node, stmt, arg,
! 					 new possible_null_arg (*this, diag_arg,
! 								callee_fndecl,
! 								i));
! 			  const allocation_state *astate
! 			    = as_a_allocation_state (state);
! 			  sm_ctxt->set_next_state (stmt, arg,
! 						   astate->get_nonnull ());
! 			}
! 		      else if (state == m_null)
! 			{
! 			  tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
! 			  sm_ctxt->warn (node, stmt, arg,
! 					 new null_arg (*this, diag_arg,
! 						       callee_fndecl, i));
! 			  sm_ctxt->set_next_state (stmt, arg, m_stop);
! 			}
  		    }
  		}
  	      BITMAP_FREE (nonnull_args);
  	    }
  	}
+ 
+ 	/* Check for this after nonnull, so that if we have both
+ 	   then we transition to "freed", rather than "checked".  */
+ 	unsigned dealloc_argno = fndecl_dealloc_argno (callee_fndecl);
+ 	if (dealloc_argno != UINT_MAX)
+ 	  {
+ 	    const deallocator *d
+ 	      = mutable_this->get_or_create_deallocator (callee_fndecl);
+ 	    on_deallocator_call (sm_ctxt, node, call, d, dealloc_argno);
+ 	  }
        }
  
!   if (tree lhs = sm_ctxt->is_zero_assignment (stmt))
      if (any_pointer_p (lhs))
!       on_zero_assignment (sm_ctxt, stmt,lhs);
  
+   /* If we have "LHS = &EXPR;" and EXPR is something other than a MEM_REF,
+      transition LHS from start to non_heap.
+      Doing it for ADDR_EXPR(MEM_REF()) is likely wrong, and can lead to
+      unbounded chains of unmergeable sm-state on pointer arithmetic in loops
+      when optimization is enabled.  */
    if (const gassign *assign_stmt = dyn_cast <const gassign *> (stmt))
      {
        enum tree_code op = gimple_assign_rhs_code (assign_stmt);
*************** malloc_state_machine::on_stmt (sm_contex
*** 714,721 ****
  	  tree lhs = gimple_assign_lhs (assign_stmt);
  	  if (lhs)
  	    {
! 	      lhs = sm_ctxt->get_readable_tree (lhs);
! 	      sm_ctxt->on_transition (node, stmt, lhs, m_start, m_non_heap);
  	    }
  	}
      }
--- 1656,1664 ----
  	  tree lhs = gimple_assign_lhs (assign_stmt);
  	  if (lhs)
  	    {
! 	      tree addr_expr = gimple_assign_rhs1 (assign_stmt);
! 	      if (TREE_CODE (TREE_OPERAND (addr_expr, 0)) != MEM_REF)
! 		sm_ctxt->on_transition (node, stmt, lhs, m_start, m_non_heap);
  	    }
  	}
      }
*************** malloc_state_machine::on_stmt (sm_contex
*** 732,767 ****
        if (TREE_CODE (op) == MEM_REF)
  	{
  	  tree arg = TREE_OPERAND (op, 0);
- 	  arg = sm_ctxt->get_readable_tree (arg);
  
! 	  sm_ctxt->warn_for_state (node, stmt, arg, m_unchecked,
! 				   new possible_null_deref (*this, arg));
! 	  sm_ctxt->on_transition (node, stmt, arg, m_unchecked, m_nonnull);
  
! 	  sm_ctxt->warn_for_state (node, stmt, arg, m_null,
! 				   new null_deref (*this, arg));
! 	  sm_ctxt->on_transition (node, stmt, arg, m_null, m_stop);
  
! 	  sm_ctxt->warn_for_state (node, stmt, arg, m_freed,
! 				   new use_after_free (*this, arg));
! 	  sm_ctxt->on_transition (node, stmt, arg, m_freed, m_stop);
  	}
      }
!   return false;
  }
  
  /* Implementation of state_machine::on_phi vfunc for malloc_state_machine.  */
  
  void
  malloc_state_machine::on_phi (sm_context *sm_ctxt,
! 			      const supernode *node,
  			      const gphi *phi,
  			      tree rhs) const
  {
    if (zerop (rhs))
      {
        tree lhs = gimple_phi_result (phi);
!       on_zero_assignment (sm_ctxt, node, phi, lhs);
      }
  }
  
--- 1675,1852 ----
        if (TREE_CODE (op) == MEM_REF)
  	{
  	  tree arg = TREE_OPERAND (op, 0);
  
! 	  state_t state = sm_ctxt->get_state (stmt, arg);
! 	  if (unchecked_p (state))
! 	    {
! 	      tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
! 	      sm_ctxt->warn (node, stmt, arg,
! 			     new possible_null_deref (*this, diag_arg));
! 	      const allocation_state *astate = as_a_allocation_state (state);
! 	      sm_ctxt->set_next_state (stmt, arg, astate->get_nonnull ());
! 	    }
! 	  else if (state == m_null)
! 	    {
! 	      tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
! 	      sm_ctxt->warn (node, stmt, arg,
! 			     new null_deref (*this, diag_arg));
! 	      sm_ctxt->set_next_state (stmt, arg, m_stop);
! 	    }
! 	  else if (freed_p (state))
! 	    {
! 	      tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
! 	      const allocation_state *astate = as_a_allocation_state (state);
! 	      sm_ctxt->warn (node, stmt, arg,
! 			     new use_after_free (*this, diag_arg,
! 						 astate->m_deallocator));
! 	      sm_ctxt->set_next_state (stmt, arg, m_stop);
! 	    }
! 	}
!     }
!   return false;
! }
  
! /* Handle a call to an allocator.
!    RETURNS_NONNULL is true if CALL is to a fndecl known to have
!    __attribute__((returns_nonnull)).  */
  
! void
! malloc_state_machine::on_allocator_call (sm_context *sm_ctxt,
! 					 const gcall *call,
! 					 const deallocator_set *deallocators,
! 					 bool returns_nonnull) const
! {
!   tree lhs = gimple_call_lhs (call);
!   if (lhs)
!     {
!       if (sm_ctxt->get_state (call, lhs) == m_start)
! 	sm_ctxt->set_next_state (call, lhs,
! 				 (returns_nonnull
! 				  ? deallocators->m_nonnull
! 				  : deallocators->m_unchecked));
!     }
!   else
!     {
!       /* TODO: report leak.  */
!     }
! }
! 
! void
! malloc_state_machine::on_deallocator_call (sm_context *sm_ctxt,
! 					   const supernode *node,
! 					   const gcall *call,
! 					   const deallocator *d,
! 					   unsigned argno) const
! {
!   if (argno >= gimple_call_num_args (call))
!     return;
!   tree arg = gimple_call_arg (call, argno);
! 
!   state_t state = sm_ctxt->get_state (call, arg);
! 
!   /* start/unchecked/nonnull -> freed.  */
!   if (state == m_start)
!     sm_ctxt->set_next_state (call, arg, d->m_freed);
!   else if (unchecked_p (state) || nonnull_p (state))
!     {
!       const allocation_state *astate = as_a_allocation_state (state);
!       gcc_assert (astate->m_deallocators);
!       if (!astate->m_deallocators->contains_p (d))
! 	{
! 	  /* Wrong allocator.  */
! 	  tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
! 	  pending_diagnostic *pd
! 	    = new mismatching_deallocation (*this, diag_arg,
! 					    astate->m_deallocators,
! 					    d);
! 	  sm_ctxt->warn (node, call, arg, pd);
  	}
+       sm_ctxt->set_next_state (call, arg, d->m_freed);
      }
! 
!   /* Keep state "null" as-is, rather than transitioning to "freed";
!      we don't want to complain about double-free of NULL.  */
!   else if (state == d->m_freed)
!     {
!       /* freed -> stop, with warning.  */
!       tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
!       sm_ctxt->warn (node, call, arg,
! 		     new double_free (*this, diag_arg, d->m_name));
!       sm_ctxt->set_next_state (call, arg, m_stop);
!     }
!   else if (state == m_non_heap)
!     {
!       /* non-heap -> stop, with warning.  */
!       tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
!       sm_ctxt->warn (node, call, arg,
! 		     new free_of_non_heap (*this, diag_arg,
! 					   d->m_name));
!       sm_ctxt->set_next_state (call, arg, m_stop);
!     }
! }
! 
! /* Implementation of realloc(3):
! 
!      void *realloc(void *ptr, size_t size);
! 
!    realloc(3) is awkward.
! 
!    We currently don't have a way to express multiple possible outcomes
!    from a function call, "bifurcating" the state such as:
!    - success: non-NULL is returned
!    - failure: NULL is returned, existing buffer is not freed.
!    or even an N-way state split e.g.:
!    - buffer grew successfully in-place
!    - buffer was successfully moved to a larger allocation
!    - buffer was successfully contracted
!    - realloc failed, returning NULL, without freeing existing buffer.
!    (PR analyzer/99260 tracks this)
! 
!    Given that we can currently only express one outcome, eliminate
!    false positives by dropping state from the buffer.  */
! 
! void
! malloc_state_machine::on_realloc_call (sm_context *sm_ctxt,
! 				       const supernode *node ATTRIBUTE_UNUSED,
! 				       const gcall *call) const
! {
!   tree ptr = gimple_call_arg (call, 0);
! 
!   state_t state = sm_ctxt->get_state (call, ptr);
! 
!   /* Detect mismatches.  */
!   if (unchecked_p (state) || nonnull_p (state))
!     {
!       const allocation_state *astate = as_a_allocation_state (state);
!       gcc_assert (astate->m_deallocators);
!       if (astate->m_deallocators != &m_free)
! 	{
! 	  /* Wrong allocator.  */
! 	  tree diag_ptr = sm_ctxt->get_diagnostic_tree (ptr);
! 	  pending_diagnostic *pd
! 	    = new mismatching_deallocation (*this, diag_ptr,
! 					    astate->m_deallocators,
! 					    &m_realloc);
! 	  sm_ctxt->warn (node, call, ptr, pd);
! 	}
!     }
! 
!   /* Transition ptr to "stop" state.  */
!   sm_ctxt->set_next_state (call, ptr, m_stop);
  }
  
  /* Implementation of state_machine::on_phi vfunc for malloc_state_machine.  */
  
  void
  malloc_state_machine::on_phi (sm_context *sm_ctxt,
! 			      const supernode *node ATTRIBUTE_UNUSED,
  			      const gphi *phi,
  			      tree rhs) const
  {
    if (zerop (rhs))
      {
        tree lhs = gimple_phi_result (phi);
!       on_zero_assignment (sm_ctxt, phi, lhs);
      }
  }
  
*************** malloc_state_machine::on_phi (sm_context
*** 770,776 ****
  
  void
  malloc_state_machine::on_condition (sm_context *sm_ctxt,
! 				    const supernode *node,
  				    const gimple *stmt,
  				    tree lhs,
  				    enum tree_code op,
--- 1855,1861 ----
  
  void
  malloc_state_machine::on_condition (sm_context *sm_ctxt,
! 				    const supernode *node ATTRIBUTE_UNUSED,
  				    const gimple *stmt,
  				    tree lhs,
  				    enum tree_code op,
*************** malloc_state_machine::on_condition (sm_c
*** 787,800 ****
    if (op == NE_EXPR)
      {
        log ("got 'ARG != 0' match");
!       sm_ctxt->on_transition (node, stmt,
! 			      lhs, m_unchecked, m_nonnull);
      }
    else if (op == EQ_EXPR)
      {
        log ("got 'ARG == 0' match");
!       sm_ctxt->on_transition (node, stmt,
! 			      lhs, m_unchecked, m_null);
      }
  }
  
--- 1872,1890 ----
    if (op == NE_EXPR)
      {
        log ("got 'ARG != 0' match");
!       state_t s = sm_ctxt->get_state (stmt, lhs);
!       if (unchecked_p (s))
! 	{
! 	  const allocation_state *astate = as_a_allocation_state (s);
! 	  sm_ctxt->set_next_state (stmt, lhs, astate->get_nonnull ());
! 	}
      }
    else if (op == EQ_EXPR)
      {
        log ("got 'ARG == 0' match");
!       state_t s = sm_ctxt->get_state (stmt, lhs);
!       if (unchecked_p (s))
! 	sm_ctxt->set_next_state (stmt, lhs, m_null);
      }
  }
  
*************** malloc_state_machine::on_condition (sm_c
*** 805,811 ****
  bool
  malloc_state_machine::can_purge_p (state_t s) const
  {
!   return s != m_unchecked && s != m_nonnull;
  }
  
  /* Implementation of state_machine::on_leak vfunc for malloc_state_machine
--- 1895,1902 ----
  bool
  malloc_state_machine::can_purge_p (state_t s) const
  {
!   enum resource_state rs = get_rs (s);
!   return rs != RS_UNCHECKED && rs != RS_NONNULL;
  }
  
  /* Implementation of state_machine::on_leak vfunc for malloc_state_machine
*************** malloc_state_machine::on_leak (tree var)
*** 818,836 ****
    return new malloc_leak (*this, var);
  }
  
  /* Shared logic for handling GIMPLE_ASSIGNs and GIMPLE_PHIs that
     assign zero to LHS.  */
  
  void
  malloc_state_machine::on_zero_assignment (sm_context *sm_ctxt,
- 					  const supernode *node,
  					  const gimple *stmt,
  					  tree lhs) const
  {
!   sm_ctxt->on_transition (node, stmt, lhs, m_start, m_null);
!   sm_ctxt->on_transition (node, stmt, lhs, m_unchecked, m_null);
!   sm_ctxt->on_transition (node, stmt, lhs, m_nonnull, m_null);
!   sm_ctxt->on_transition (node, stmt, lhs, m_freed, m_null);
  }
  
  } // anonymous namespace
--- 1909,1945 ----
    return new malloc_leak (*this, var);
  }
  
+ /* Implementation of state_machine::reset_when_passed_to_unknown_fn_p vfunc
+    for malloc_state_machine.  */
+ 
+ bool
+ malloc_state_machine::reset_when_passed_to_unknown_fn_p (state_t s,
+ 							 bool is_mutable) const
+ {
+   /* An on-stack ptr doesn't stop being stack-allocated when passed to an
+      unknown fn.  */
+   if (s == m_non_heap)
+     return false;
+ 
+   /* Otherwise, pointers passed as non-const can be freed.  */
+   return is_mutable;
+ }
+ 
  /* Shared logic for handling GIMPLE_ASSIGNs and GIMPLE_PHIs that
     assign zero to LHS.  */
  
  void
  malloc_state_machine::on_zero_assignment (sm_context *sm_ctxt,
  					  const gimple *stmt,
  					  tree lhs) const
  {
!   state_t s = sm_ctxt->get_state (stmt, lhs);
!   enum resource_state rs = get_rs (s);
!   if (rs == RS_START
!       || rs == RS_UNCHECKED
!       || rs == RS_NONNULL
!       || rs == RS_FREED)
!     sm_ctxt->set_next_state (stmt, lhs, m_null);
  }
  
  } // anonymous namespace
diff -Nrcpad gcc-10.3.0/gcc/analyzer/sm-malloc.dot gcc-11.1.0/gcc/analyzer/sm-malloc.dot
*** gcc-10.3.0/gcc/analyzer/sm-malloc.dot	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/sm-malloc.dot	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* An overview of the state machine from sm-malloc.cc.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* An overview of the state machine from sm-malloc.cc.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/analyzer/sm-pattern-test.cc gcc-11.1.0/gcc/analyzer/sm-pattern-test.cc
*** gcc-10.3.0/gcc/analyzer/sm-pattern-test.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/sm-pattern-test.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* A state machine for use in DejaGnu tests, to check that
     pattern-matching works as expected.
  
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,7 ----
  /* A state machine for use in DejaGnu tests, to check that
     pattern-matching works as expected.
  
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 31,36 ****
--- 31,37 ----
  #include "diagnostic-path.h"
  #include "diagnostic-metadata.h"
  #include "function.h"
+ #include "json.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/analyzer-logging.h"
*************** public:
*** 65,73 ****
  		     tree rhs) const FINAL OVERRIDE;
  
    bool can_purge_p (state_t s) const FINAL OVERRIDE;
- 
- private:
-   state_t m_start;
  };
  
  class pattern_match : public pending_diagnostic_subclass<pattern_match>
--- 66,71 ----
*************** private:
*** 100,106 ****
  pattern_test_state_machine::pattern_test_state_machine (logger *logger)
  : state_machine ("pattern-test", logger)
  {
-   m_start = add_state ("start");
  }
  
  bool
--- 98,103 ----
*************** pattern_test_state_machine::on_condition
*** 132,138 ****
      return;
  
    pending_diagnostic *diag = new pattern_match (lhs, op, rhs);
!   sm_ctxt->warn_for_state (node, stmt, lhs, m_start, diag);
  }
  
  bool
--- 129,135 ----
      return;
  
    pending_diagnostic *diag = new pattern_match (lhs, op, rhs);
!   sm_ctxt->warn (node, stmt, lhs, diag);
  }
  
  bool
diff -Nrcpad gcc-10.3.0/gcc/analyzer/sm-sensitive.cc gcc-11.1.0/gcc/analyzer/sm-sensitive.cc
*** gcc-10.3.0/gcc/analyzer/sm-sensitive.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/sm-sensitive.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* An experimental state machine, for tracking exposure of sensitive
     data (e.g. through logging).
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,6 ----
  /* An experimental state machine, for tracking exposure of sensitive
     data (e.g. through logging).
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 31,36 ****
--- 31,37 ----
  #include "diagnostic-path.h"
  #include "diagnostic-metadata.h"
  #include "function.h"
+ #include "json.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/analyzer-logging.h"
*************** public:
*** 66,74 ****
  
    bool can_purge_p (state_t s) const FINAL OVERRIDE;
  
-   /* Start state.  */
-   state_t m_start;
- 
    /* State for "sensitive" data, such as a password.  */
    state_t m_sensitive;
  
--- 67,72 ----
*************** private:
*** 163,169 ****
  sensitive_state_machine::sensitive_state_machine (logger *logger)
  : state_machine ("sensitive", logger)
  {
-   m_start = add_state ("start");
    m_sensitive = add_state ("sensitive");
    m_stop = add_state ("stop");
  }
--- 161,166 ----
*************** sensitive_state_machine::warn_for_any_ex
*** 177,184 ****
  						const gimple *stmt,
  						tree arg) const
  {
!   sm_ctxt->warn_for_state (node, stmt, arg, m_sensitive,
! 			   new exposure_through_output_file (*this, arg));
  }
  
  /* Implementation of state_machine::on_stmt vfunc for
--- 174,185 ----
  						const gimple *stmt,
  						tree arg) const
  {
!   if (sm_ctxt->get_state (stmt, arg) == m_sensitive)
!     {
!       tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
!       sm_ctxt->warn (node, stmt, arg,
! 		     new exposure_through_output_file (*this, diag_arg));
!     }
  }
  
  /* Implementation of state_machine::on_stmt vfunc for
diff -Nrcpad gcc-10.3.0/gcc/analyzer/sm-signal.cc gcc-11.1.0/gcc/analyzer/sm-signal.cc
*** gcc-10.3.0/gcc/analyzer/sm-signal.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/sm-signal.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* An experimental state machine, for tracking bad calls from within
     signal handlers.
  
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,7 ----
  /* An experimental state machine, for tracking bad calls from within
     signal handlers.
  
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 32,37 ****
--- 32,38 ----
  #include "diagnostic-path.h"
  #include "diagnostic-metadata.h"
  #include "function.h"
+ #include "json.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/analyzer-logging.h"
*************** along with GCC; see the file COPYING3.
*** 41,46 ****
--- 42,50 ----
  #include "tristate.h"
  #include "ordered-hash-map.h"
  #include "selftest.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "analyzer/program-state.h"
  #include "analyzer/checker-path.h"
*************** along with GCC; see the file COPYING3.
*** 49,56 ****
  #include "gimple-iterator.h"
  #include "cgraph.h"
  #include "analyzer/supergraph.h"
- #include "analyzer/call-string.h"
- #include "analyzer/program-point.h"
  #include "alloc-pool.h"
  #include "fibonacci_heap.h"
  #include "analyzer/diagnostic-manager.h"
--- 53,58 ----
*************** public:
*** 90,98 ****
  
    /* These states are "global", rather than per-expression.  */
  
-   /* Start state.  */
-   state_t m_start;
- 
    /* State for when we're in a signal handler.  */
    state_t m_in_signal_handler;
  
--- 92,97 ----
*************** public:
*** 123,135 ****
  
    bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      diagnostic_metadata m;
      /* CWE-479: Signal Handler Use of a Non-reentrant Function.  */
      m.add_cwe (479);
!     return warning_meta (rich_loc, m,
! 			 OPT_Wanalyzer_unsafe_call_within_signal_handler,
! 			 "call to %qD from within signal handler",
! 			 m_unsafe_fndecl);
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
--- 122,153 ----
  
    bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
+     auto_diagnostic_group d;
      diagnostic_metadata m;
      /* CWE-479: Signal Handler Use of a Non-reentrant Function.  */
      m.add_cwe (479);
!     if (warning_meta (rich_loc, m,
! 		      OPT_Wanalyzer_unsafe_call_within_signal_handler,
! 		      "call to %qD from within signal handler",
! 		      m_unsafe_fndecl))
!       {
! 	/* If we know a possible alternative function, add a note
! 	   suggesting the replacement.  */
! 	if (const char *replacement = get_replacement_fn ())
! 	  {
! 	    location_t note_loc = gimple_location (m_unsafe_call);
! 	    /* It would be nice to add a fixit, but the gimple call
! 	       location covers the whole call expression.  It isn't
! 	       currently possible to cut this down to just the call
! 	       symbol.  So the fixit would replace too much.
! 	       note_rich_loc.add_fixit_replace (replacement); */
! 	    inform (note_loc,
! 		    "%qs is a possible signal-safe alternative for %qD",
! 		    replacement, m_unsafe_fndecl);
! 	  }
! 	return true;
!       }
!     return false;
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
*************** public:
*** 138,145 ****
      if (change.is_global_p ()
  	&& change.m_new_state == m_sm.m_in_signal_handler)
        {
! 	function *handler
! 	  = change.m_event.m_dst_state.m_region_model->get_current_function ();
  	return change.formatted_print ("registering %qD as signal handler",
  				       handler->decl);
        }
--- 156,162 ----
      if (change.is_global_p ()
  	&& change.m_new_state == m_sm.m_in_signal_handler)
        {
! 	function *handler = change.m_event.get_dest_function ();
  	return change.formatted_print ("registering %qD as signal handler",
  				       handler->decl);
        }
*************** private:
*** 156,161 ****
--- 173,192 ----
    const signal_state_machine &m_sm;
    const gcall *m_unsafe_call;
    tree m_unsafe_fndecl;
+ 
+   /* Returns a replacement function as text if it exists.  Currently
+      only "exit" has a signal-safe replacement "_exit", which does
+      slightly less, but can be used in a signal handler.  */
+   const char *
+   get_replacement_fn ()
+   {
+     gcc_assert (m_unsafe_fndecl && DECL_P (m_unsafe_fndecl));
+ 
+     if (id_equal ("exit", DECL_NAME (m_unsafe_fndecl)))
+       return "_exit";
+ 
+     return NULL;
+   }
  };
  
  /* signal_state_machine's ctor.  */
*************** private:
*** 163,169 ****
  signal_state_machine::signal_state_machine (logger *logger)
  : state_machine ("signal", logger)
  {
-   m_start = add_state ("start");
    m_in_signal_handler = add_state ("in_signal_handler");
    m_stop = add_state ("stop");
  }
--- 194,199 ----
*************** static void
*** 175,182 ****
  update_model_for_signal_handler (region_model *model,
  				 function *handler_fun)
  {
    /* Purge all state within MODEL.  */
!   *model = region_model ();
    model->push_frame (handler_fun, NULL, NULL);
  }
  
--- 205,213 ----
  update_model_for_signal_handler (region_model *model,
  				 function *handler_fun)
  {
+   gcc_assert (model);
    /* Purge all state within MODEL.  */
!   *model = region_model (model->get_manager ());
    model->push_frame (handler_fun, NULL, NULL);
  }
  
*************** public:
*** 190,195 ****
--- 221,232 ----
      pp_string (pp, "signal delivered");
    }
  
+   json::object *to_json () const
+   {
+     json::object *custom_obj = new json::object ();
+     return custom_obj;
+   }
+ 
    void update_model (region_model *model,
  		     const exploded_edge &eedge) FINAL OVERRIDE
    {
*************** public:
*** 240,248 ****
  
      exploded_node *dst_enode = eg->get_or_create_node (entering_handler,
  						       state_entering_handler,
! 						       NULL);
      if (dst_enode)
!       eg->add_edge (src_enode, dst_enode, NULL, state_change (),
  		    new signal_delivery_edge_info_t ());
    }
  
--- 277,285 ----
  
      exploded_node *dst_enode = eg->get_or_create_node (entering_handler,
  						       state_entering_handler,
! 						       src_enode);
      if (dst_enode)
!       eg->add_edge (src_enode, dst_enode, NULL, /*state_change (),*/
  		    new signal_delivery_edge_info_t ());
    }
  
*************** get_async_signal_unsafe_fns ()
*** 259,264 ****
--- 296,302 ----
    // TODO: populate this list more fully
    static const char * const async_signal_unsafe_fns[] = {
      /* This array must be kept sorted.  */
+     "exit",
      "fprintf",
      "free",
      "malloc",
*************** get_async_signal_unsafe_fns ()
*** 274,280 ****
      = sizeof(async_signal_unsafe_fns) / sizeof (async_signal_unsafe_fns[0]);
    function_set fs (async_signal_unsafe_fns, count);
    return fs;
! };
  
  /* Return true if FNDECL is known to be unsafe to call from a signal
     handler.  */
--- 312,318 ----
      = sizeof(async_signal_unsafe_fns) / sizeof (async_signal_unsafe_fns[0]);
    function_set fs (async_signal_unsafe_fns, count);
    return fs;
! }
  
  /* Return true if FNDECL is known to be unsafe to call from a signal
     handler.  */
*************** signal_state_machine::on_stmt (sm_contex
*** 315,323 ****
        if (const gcall *call = dyn_cast <const gcall *> (stmt))
  	if (tree callee_fndecl = sm_ctxt->get_fndecl_for_call (call))
  	  if (signal_unsafe_p (callee_fndecl))
! 	    sm_ctxt->warn_for_state (node, stmt, NULL_TREE, m_in_signal_handler,
! 				     new signal_unsafe_call (*this, call,
! 							     callee_fndecl));
      }
  
    return false;
--- 353,362 ----
        if (const gcall *call = dyn_cast <const gcall *> (stmt))
  	if (tree callee_fndecl = sm_ctxt->get_fndecl_for_call (call))
  	  if (signal_unsafe_p (callee_fndecl))
! 	    if (sm_ctxt->get_global_state () == m_in_signal_handler)
! 	      sm_ctxt->warn (node, stmt, NULL_TREE,
! 			     new signal_unsafe_call (*this, call,
! 						     callee_fndecl));
      }
  
    return false;
diff -Nrcpad gcc-10.3.0/gcc/analyzer/sm-taint.cc gcc-11.1.0/gcc/analyzer/sm-taint.cc
*** gcc-10.3.0/gcc/analyzer/sm-taint.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/sm-taint.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* An experimental state machine, for tracking "taint": unsanitized uses
     of data potentially under an attacker's control.
  
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,7 ----
  /* An experimental state machine, for tracking "taint": unsanitized uses
     of data potentially under an attacker's control.
  
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 31,36 ****
--- 31,37 ----
  #include "diagnostic-path.h"
  #include "diagnostic-metadata.h"
  #include "function.h"
+ #include "json.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/analyzer-logging.h"
*************** public:
*** 66,74 ****
  
    bool can_purge_p (state_t s) const FINAL OVERRIDE;
  
-   /* Start state.  */
-   state_t m_start;
- 
    /* State for a "tainted" value: unsanitized data potentially under an
       attacker's control.  */
    state_t m_tainted;
--- 67,72 ----
*************** private:
*** 188,194 ****
  taint_state_machine::taint_state_machine (logger *logger)
  : state_machine ("taint", logger)
  {
-   m_start = add_state ("start");
    m_tainted = add_state ("tainted");
    m_has_lb = add_state ("has_lb");
    m_has_ub = add_state ("has_ub");
--- 186,191 ----
*************** taint_state_machine::on_stmt (sm_context
*** 208,214 ****
  	if (is_named_call_p (callee_fndecl, "fread", call, 4))
  	  {
  	    tree arg = gimple_call_arg (call, 0);
- 	    arg = sm_ctxt->get_readable_tree (arg);
  
  	    sm_ctxt->on_transition (node, stmt, arg, m_start, m_tainted);
  
--- 205,210 ----
*************** taint_state_machine::on_stmt (sm_context
*** 231,264 ****
        if (op == ARRAY_REF)
  	{
  	  tree arg = TREE_OPERAND (rhs1, 1);
- 	  arg = sm_ctxt->get_readable_tree (arg);
  
  	  /* Unsigned types have an implicit lower bound.  */
  	  bool is_unsigned = false;
  	  if (INTEGRAL_TYPE_P (TREE_TYPE (arg)))
  	    is_unsigned = TYPE_UNSIGNED (TREE_TYPE (arg));
  
! 	  /* Complain about missing bounds.  */
! 	  sm_ctxt->warn_for_state
! 	    (node, stmt, arg, m_tainted,
! 	     new tainted_array_index (*this, arg,
! 				      is_unsigned
! 				      ? BOUNDS_LOWER : BOUNDS_NONE));
! 	  sm_ctxt->on_transition (node, stmt, arg, m_tainted, m_stop);
! 
! 	  /* Complain about missing upper bound.  */
! 	  sm_ctxt->warn_for_state  (node, stmt, arg, m_has_lb,
! 				    new tainted_array_index (*this, arg,
! 							     BOUNDS_LOWER));
! 	  sm_ctxt->on_transition (node, stmt, arg, m_has_lb, m_stop);
! 
! 	  /* Complain about missing lower bound.  */
! 	  if (!is_unsigned)
  	    {
! 	      sm_ctxt->warn_for_state  (node, stmt, arg, m_has_ub,
! 					new tainted_array_index (*this, arg,
! 								 BOUNDS_UPPER));
! 	      sm_ctxt->on_transition (node, stmt, arg, m_has_ub, m_stop);
  	    }
  	}
      }
--- 227,271 ----
        if (op == ARRAY_REF)
  	{
  	  tree arg = TREE_OPERAND (rhs1, 1);
  
  	  /* Unsigned types have an implicit lower bound.  */
  	  bool is_unsigned = false;
  	  if (INTEGRAL_TYPE_P (TREE_TYPE (arg)))
  	    is_unsigned = TYPE_UNSIGNED (TREE_TYPE (arg));
  
! 	  state_t state = sm_ctxt->get_state (stmt, arg);
! 	  /* Can't use a switch as the states are non-const.  */
! 	  if (state == m_tainted)
  	    {
! 	      /* Complain about missing bounds.  */
! 	      tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
! 	      pending_diagnostic *d
! 		= new tainted_array_index (*this, diag_arg,
! 					   is_unsigned
! 					   ? BOUNDS_LOWER : BOUNDS_NONE);
! 	      sm_ctxt->warn (node, stmt, arg, d);
! 	      sm_ctxt->set_next_state (stmt, arg, m_stop);
! 	    }
! 	  else if (state == m_has_lb)
! 	    {
! 	      /* Complain about missing upper bound.  */
! 	      tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
! 	      sm_ctxt->warn (node, stmt, arg,
! 			      new tainted_array_index (*this, diag_arg,
! 						       BOUNDS_LOWER));
! 	      sm_ctxt->set_next_state (stmt, arg, m_stop);
! 	    }
! 	  else if (state == m_has_ub)
! 	    {
! 	      /* Complain about missing lower bound.  */
! 	      if (!is_unsigned)
! 		{
! 		  tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
! 		  sm_ctxt->warn  (node, stmt, arg,
! 				  new tainted_array_index (*this, diag_arg,
! 							   BOUNDS_UPPER));
! 		  sm_ctxt->set_next_state (stmt, arg, m_stop);
! 		}
  	    }
  	}
      }
diff -Nrcpad gcc-10.3.0/gcc/analyzer/sm.cc gcc-11.1.0/gcc/analyzer/sm.cc
*** gcc-10.3.0/gcc/analyzer/sm.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/sm.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Modeling API uses and misuses via state machines.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Modeling API uses and misuses via state machines.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 29,68 ****
  #include "function.h"
  #include "diagnostic-core.h"
  #include "pretty-print.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
  
  #if ENABLE_ANALYZER
  
! /* If STMT is an assignment from zero, return the LHS.  */
  
! tree
! is_zero_assignment (const gimple *stmt)
  {
!   const gassign *assign_stmt = dyn_cast <const gassign *> (stmt);
!   if (!assign_stmt)
!     return NULL_TREE;
  
-   enum tree_code op = gimple_assign_rhs_code (assign_stmt);
-   if (TREE_CODE_CLASS (op) != tcc_constant)
-     return NULL_TREE;
  
!   if (!zerop (gimple_assign_rhs1 (assign_stmt)))
!     return NULL_TREE;
  
!   return gimple_assign_lhs (assign_stmt);
  }
  
! /* Return true if VAR has pointer or reference type.  */
  
! bool
! any_pointer_p (tree var)
  {
!   return POINTER_TYPE_P (TREE_TYPE (var));
  }
  
! namespace ana {
  
  /* Add a state with name NAME to this state_machine.
     The string is required to outlive the state_machine.
--- 29,84 ----
  #include "function.h"
  #include "diagnostic-core.h"
  #include "pretty-print.h"
+ #include "diagnostic.h"
+ #include "tree-diagnostic.h"
+ #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
  
  #if ENABLE_ANALYZER
  
! namespace ana {
  
! /* Return true if VAR has pointer or reference type.  */
! 
! bool
! any_pointer_p (tree var)
  {
!   return POINTER_TYPE_P (TREE_TYPE (var));
! }
  
  
! /* class state_machine::state.  */
  
! /* Base implementation of dump_to_pp vfunc.  */
! 
! void
! state_machine::state::dump_to_pp (pretty_printer *pp) const
! {
!   pp_string (pp, m_name);
  }
  
! /* Return a new json::string describing the state.  */
  
! json::value *
! state_machine::state::to_json () const
  {
!   pretty_printer pp;
!   pp_format_decoder (&pp) = default_tree_printer;
!   dump_to_pp (&pp);
!   return new json::string (pp_formatted_text (&pp));
  }
  
! /* class state_machine.  */
! 
! /* state_machine's ctor.  */
! 
! state_machine::state_machine (const char *name, logger *logger)
! : log_user (logger), m_name (name), m_next_state_id (0),
!   m_start (add_state ("start"))
! {
! }
  
  /* Add a state with name NAME to this state_machine.
     The string is required to outlive the state_machine.
*************** namespace ana {
*** 72,121 ****
  state_machine::state_t
  state_machine::add_state (const char *name)
  {
!   m_state_names.safe_push (name);
!   return m_state_names.length () - 1;
! }
! 
! /* Get the name of state S within this state_machine.  */
! 
! const char *
! state_machine::get_state_name (state_t s) const
! {
!   return m_state_names[s];
  }
  
  /* Get the state with name NAME, which must exist.
     This is purely intended for use in selftests.  */
  
  state_machine::state_t
! state_machine::get_state_by_name (const char *name)
  {
    unsigned i;
!   const char *iter_name;
!   FOR_EACH_VEC_ELT (m_state_names, i, iter_name)
!     if (!strcmp (name, iter_name))
!       return i;
    /* Name not found.  */
    gcc_unreachable ();
  }
  
! /* Assert that S is a valid state for this state_machine.  */
  
  void
! state_machine::validate (state_t s) const
  {
!   gcc_assert (s < m_state_names.length ());
  }
  
! /* Dump a multiline representation of this state machine to PP.  */
  
! void
! state_machine::dump_to_pp (pretty_printer *pp) const
  {
!   unsigned i;
!   const char *name;
!   FOR_EACH_VEC_ELT (m_state_names, i, name)
!     pp_printf (pp, "  state %i: %qs\n", i, name);
  }
  
  /* Create instances of the various state machines, each using LOGGER,
--- 88,148 ----
  state_machine::state_t
  state_machine::add_state (const char *name)
  {
!   state *s = new state (name, alloc_state_id ());
!   m_states.safe_push (s);
!   return s;
  }
  
  /* Get the state with name NAME, which must exist.
     This is purely intended for use in selftests.  */
  
  state_machine::state_t
! state_machine::get_state_by_name (const char *name) const
  {
    unsigned i;
!   state *s;
!   FOR_EACH_VEC_ELT (m_states, i, s)
!     if (!strcmp (name, s->get_name ()))
!       return s;
    /* Name not found.  */
    gcc_unreachable ();
  }
  
! /* Dump a multiline representation of this state machine to PP.  */
  
  void
! state_machine::dump_to_pp (pretty_printer *pp) const
  {
!   unsigned i;
!   state *s;
!   FOR_EACH_VEC_ELT (m_states, i, s)
!     {
!       pp_printf (pp, "  state %i: ", i);
!       s->dump_to_pp (pp);
!       pp_newline (pp);
!     }
  }
  
! /* Return a new json::object of the form
!    {"name" : str,
!     "states" : [str]}.  */
  
! json::object *
! state_machine::to_json () const
  {
!   json::object *sm_obj = new json::object ();
! 
!   sm_obj->set ("name", new json::string (m_name));
!   {
!     json::array *states_arr = new json::array ();
!     unsigned i;
!     state *s;
!     FOR_EACH_VEC_ELT (m_states, i, s)
!       states_arr->append (s->to_json ());
!     sm_obj->set ("states", states_arr);
!   }
! 
!   return sm_obj;
  }
  
  /* Create instances of the various state machines, each using LOGGER,
diff -Nrcpad gcc-10.3.0/gcc/analyzer/sm.h gcc-11.1.0/gcc/analyzer/sm.h
*** gcc-10.3.0/gcc/analyzer/sm.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/sm.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Modeling API uses and misuses via state machines.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Modeling API uses and misuses via state machines.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 23,49 ****
  
  /* Utility functions for use by state machines.  */
  
- extern tree is_zero_assignment (const gimple *stmt);
- extern bool any_pointer_p (tree var);
- 
  namespace ana {
  
  class state_machine;
  class sm_context;
  class pending_diagnostic;
  
  /* An abstract base class for a state machine describing an API.
!    A mapping from state IDs to names, and various virtual functions
     for pattern-matching on statements.  */
  
  class state_machine : public log_user
  {
  public:
!   typedef unsigned state_t;
  
!   state_machine (const char *name, logger *logger)
!   : log_user (logger), m_name (name) {}
  
    virtual ~state_machine () {}
  
    /* Should states be inherited from a parent region to a child region,
--- 23,64 ----
  
  /* Utility functions for use by state machines.  */
  
  namespace ana {
  
  class state_machine;
  class sm_context;
  class pending_diagnostic;
  
+ extern bool any_pointer_p (tree var);
+ 
  /* An abstract base class for a state machine describing an API.
!    Manages a set of state objects, and has various virtual functions
     for pattern-matching on statements.  */
  
  class state_machine : public log_user
  {
  public:
!   /* States are represented by immutable objects, owned by the state
!      machine.  */
!   class state
!   {
!   public:
!     state (const char *name, unsigned id) : m_name (name), m_id (id) {}
!     virtual ~state () {}
  
!     const char *get_name () const { return m_name; }
!     virtual void dump_to_pp (pretty_printer *pp) const;
!     virtual json::value *to_json () const;
! 
!     unsigned get_id () const { return m_id; }
  
+   private:
+     const char *m_name;
+     unsigned m_id;
+   };
+   typedef const state_machine::state *state_t;
+ 
+   state_machine (const char *name, logger *logger);
    virtual ~state_machine () {}
  
    /* Should states be inherited from a parent region to a child region,
*************** public:
*** 53,63 ****
       within a heap-allocated struct.  */
    virtual bool inherited_state_p () const = 0;
  
!   const char *get_name () const { return m_name; }
  
!   const char *get_state_name (state_t s) const;
  
!   state_t get_state_by_name (const char *name);
  
    /* Return true if STMT is a function call recognized by this sm.  */
    virtual bool on_stmt (sm_context *sm_ctxt,
--- 68,81 ----
       within a heap-allocated struct.  */
    virtual bool inherited_state_p () const = 0;
  
!   virtual state_machine::state_t get_default_state (const svalue *) const
!   {
!     return m_start;
!   }
  
!   const char *get_name () const { return m_name; }
  
!   state_t get_state_by_name (const char *name) const;
  
    /* Return true if STMT is a function call recognized by this sm.  */
    virtual bool on_stmt (sm_context *sm_ctxt,
*************** public:
*** 87,113 ****
      return NULL;
    }
  
    void validate (state_t s) const;
  
    void dump_to_pp (pretty_printer *pp) const;
  
  protected:
    state_t add_state (const char *name);
  
  private:
    DISABLE_COPY_AND_ASSIGN (state_machine);
  
    const char *m_name;
-   auto_vec<const char *> m_state_names;
- };
  
! /* Is STATE the start state?  (zero is hardcoded as the start state).  */
  
! static inline bool
! start_start_p (state_machine::state_t state)
! {
!   return state == 0;
! }
  
  /* Abstract base class for state machines to pass to
     sm_context::on_custom_transition for handling non-standard transitions
--- 105,155 ----
      return NULL;
    }
  
+   /* Return true if S should be reset to "start" for values passed (or reachable
+      from) calls to unknown functions.  IS_MUTABLE is true for pointers as
+      non-const, false if only passed as const-pointers.
+ 
+      For example, in sm-malloc.cc, an on-stack ptr doesn't stop being
+      stack-allocated when passed to an unknown fn, but a malloc-ed pointer
+      could be freed when passed to an unknown fn (unless passed as "const").  */
+   virtual bool reset_when_passed_to_unknown_fn_p (state_t s ATTRIBUTE_UNUSED,
+ 						  bool is_mutable) const
+   {
+     return is_mutable;
+   }
+ 
    void validate (state_t s) const;
  
    void dump_to_pp (pretty_printer *pp) const;
  
+   json::object *to_json () const;
+ 
+   state_t get_start_state () const { return m_start; }
+ 
  protected:
    state_t add_state (const char *name);
+   state_t add_custom_state (state *s)
+   {
+     m_states.safe_push (s);
+     return s;
+   }
+ 
+   unsigned alloc_state_id () { return m_next_state_id++; }
  
  private:
    DISABLE_COPY_AND_ASSIGN (state_machine);
  
    const char *m_name;
  
!   /* States are owned by the state_machine.  */
!   auto_delete_vec<state> m_states;
  
!   unsigned m_next_state_id;
! 
! protected:
!   /* Must be inited after m_next_state_id.  */
!   state_t m_start;
! };
  
  /* Abstract base class for state machines to pass to
     sm_context::on_custom_transition for handling non-standard transitions
*************** public:
*** 137,160 ****
       other callback handling.  */
    virtual tree get_fndecl_for_call (const gcall *call) = 0;
  
    /* Called by state_machine in response to pattern matches:
       if VAR is in state FROM, transition it to state TO, potentially
       recording the "origin" of the state as ORIGIN.
       Use NODE and STMT for location information.  */
!    virtual void on_transition (const supernode *node, const gimple *stmt,
! 			      tree var,
! 			      state_machine::state_t from,
! 			      state_machine::state_t to,
! 			      tree origin = NULL_TREE) = 0;
  
    /* Called by state_machine in response to pattern matches:
!      issue a diagnostic D if VAR is in state STATE, using NODE and STMT
!      for location information.  */
!   virtual void warn_for_state (const supernode *node, const gimple *stmt,
! 			       tree var, state_machine::state_t state,
! 			       pending_diagnostic *d) = 0;
  
!   virtual tree get_readable_tree (tree expr)
    {
      return expr;
    }
--- 179,222 ----
       other callback handling.  */
    virtual tree get_fndecl_for_call (const gcall *call) = 0;
  
+   /* Get the old state of VAR at STMT.  */
+   virtual state_machine::state_t get_state (const gimple *stmt,
+ 					    tree var) = 0;
+   /* Set the next state of VAR to be TO, recording the "origin" of the
+      state as ORIGIN.
+      Use STMT for location information.  */
+   virtual void set_next_state (const gimple *stmt,
+ 			       tree var,
+ 			       state_machine::state_t to,
+ 			       tree origin = NULL_TREE) = 0;
+ 
    /* Called by state_machine in response to pattern matches:
       if VAR is in state FROM, transition it to state TO, potentially
       recording the "origin" of the state as ORIGIN.
       Use NODE and STMT for location information.  */
!   void on_transition (const supernode *node ATTRIBUTE_UNUSED,
! 		      const gimple *stmt,
! 		      tree var,
! 		      state_machine::state_t from,
! 		      state_machine::state_t to,
! 		      tree origin = NULL_TREE)
!   {
!     state_machine::state_t current = get_state (stmt, var);
!     if (current == from)
!       set_next_state (stmt, var, to, origin);
!   }
  
    /* Called by state_machine in response to pattern matches:
!      issue a diagnostic D using NODE and STMT for location information.  */
!   virtual void warn (const supernode *node, const gimple *stmt,
! 		     tree var, pending_diagnostic *d) = 0;
  
!   /* For use when generating trees when creating pending_diagnostics, so that
!      rather than e.g.
!        "double-free of '<unknown>'"
!      we can print:
!        "double-free of 'inbuf.data'".  */
!   virtual tree get_diagnostic_tree (tree expr)
    {
      return expr;
    }
*************** public:
*** 166,171 ****
--- 228,238 ----
       a signal handler.  */
    virtual void on_custom_transition (custom_transition *transition) = 0;
  
+   /* If STMT is an assignment known to assign zero to its LHS, return
+      the LHS.
+      Otherwise return NULL_TREE.  */
+   virtual tree is_zero_assignment (const gimple *stmt) = 0;
+ 
  protected:
    sm_context (int sm_idx, const state_machine &sm)
    : m_sm_idx (sm_idx), m_sm (sm) {}
diff -Nrcpad gcc-10.3.0/gcc/analyzer/state-purge.cc gcc-11.1.0/gcc/analyzer/state-purge.cc
*** gcc-10.3.0/gcc/analyzer/state-purge.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/state-purge.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Classes for purging state at function_points.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for purging state at function_points.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 37,42 ****
--- 37,43 ----
  #include "diagnostic-core.h"
  #include "gimple-pretty-print.h"
  #include "function.h"
+ #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/call-string.h"
  #include "digraph.h"
*************** state_purge_per_ssa_name::state_purge_pe
*** 208,220 ****
    if (map.get_logger ())
      {
        map.log ("%qE in %qD is needed to process:", name, fun->decl);
        for (point_set_t::iterator iter = m_points_needing_name.begin ();
  	   iter != m_points_needing_name.end ();
  	   ++iter)
  	{
  	  map.start_log_line ();
  	  map.get_logger ()->log_partial ("  point: ");
! 	  (*iter).print (map.get_logger ()->get_printer (), format (false));
  	  map.end_log_line ();
  	}
      }
--- 209,229 ----
    if (map.get_logger ())
      {
        map.log ("%qE in %qD is needed to process:", name, fun->decl);
+       /* Log m_points_needing_name, sorting it to avoid churn when comparing
+ 	 dumps.  */
+       auto_vec<function_point> points;
        for (point_set_t::iterator iter = m_points_needing_name.begin ();
  	   iter != m_points_needing_name.end ();
  	   ++iter)
+ 	points.safe_push (*iter);
+       points.qsort (function_point::cmp_ptr);
+       unsigned i;
+       function_point *point;
+       FOR_EACH_VEC_ELT (points, i, point)
  	{
  	  map.start_log_line ();
  	  map.get_logger ()->log_partial ("  point: ");
! 	  point->print (map.get_logger ()->get_printer (), format (false));
  	  map.end_log_line ();
  	}
      }
diff -Nrcpad gcc-10.3.0/gcc/analyzer/state-purge.h gcc-11.1.0/gcc/analyzer/state-purge.h
*** gcc-10.3.0/gcc/analyzer/state-purge.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/state-purge.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Classes for purging state at function_points.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for purging state at function_points.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/analyzer/store.cc gcc-11.1.0/gcc/analyzer/store.cc
*** gcc-10.3.0/gcc/analyzer/store.cc	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/analyzer/store.cc	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,2542 ----
+ /* Classes for modeling the state of memory.
+    Copyright (C) 2020-2021 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.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/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "function.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "gimple-iterator.h"
+ #include "diagnostic-core.h"
+ #include "graphviz.h"
+ #include "options.h"
+ #include "cgraph.h"
+ #include "tree-dfa.h"
+ #include "stringpool.h"
+ #include "convert.h"
+ #include "target.h"
+ #include "fold-const.h"
+ #include "tree-pretty-print.h"
+ #include "diagnostic-color.h"
+ #include "diagnostic-metadata.h"
+ #include "tristate.h"
+ #include "bitmap.h"
+ #include "selftest.h"
+ #include "function.h"
+ #include "json.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "ordered-hash-map.h"
+ #include "options.h"
+ #include "cgraph.h"
+ #include "cfg.h"
+ #include "digraph.h"
+ #include "analyzer/supergraph.h"
+ #include "sbitmap.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
+ #include "analyzer/region-model.h"
+ #include "analyzer/analyzer-selftests.h"
+ #include "stor-layout.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* Dump SVALS to PP, sorting them to ensure determinism.  */
+ 
+ static void
+ dump_svalue_set (const hash_set <const svalue *> &svals,
+ 		 pretty_printer *pp, bool simple)
+ {
+   auto_vec <const svalue *> v;
+   for (hash_set<const svalue *>::iterator iter = svals.begin ();
+        iter != svals.end (); ++iter)
+     {
+       v.safe_push (*iter);
+     }
+   v.qsort (svalue::cmp_ptr_ptr);
+ 
+   pp_character (pp, '{');
+   const svalue *sval;
+   unsigned i;
+   FOR_EACH_VEC_ELT (v, i, sval)
+     {
+       if (i > 0)
+ 	pp_string (pp, ", ");
+       sval->dump_to_pp (pp, simple);
+     }
+   pp_character (pp, '}');
+ }
+ 
+ /* class uncertainty_t.  */
+ 
+ /* Dump this object to PP.  */
+ 
+ void
+ uncertainty_t::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   pp_string (pp, "{m_maybe_bound_svals: ");
+   dump_svalue_set (m_maybe_bound_svals, pp, simple);
+ 
+   pp_string (pp, ", m_mutable_at_unknown_call_svals: ");
+   dump_svalue_set (m_mutable_at_unknown_call_svals, pp, simple);
+   pp_string (pp, "}");
+ }
+ 
+ /* Dump this object to stderr.  */
+ 
+ DEBUG_FUNCTION void
+ uncertainty_t::dump (bool simple) const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+   pp_show_color (&pp) = pp_show_color (global_dc->printer);
+   pp.buffer->stream = stderr;
+   dump_to_pp (&pp, simple);
+   pp_newline (&pp);
+   pp_flush (&pp);
+ }
+ 
+ /* Get a human-readable string for KIND for dumps.  */
+ 
+ const char *binding_kind_to_string (enum binding_kind kind)
+ {
+   switch (kind)
+     {
+     default:
+     case BK_empty:
+     case BK_deleted:
+       /* We shouldn't be attempting to print the hash kinds.  */
+       gcc_unreachable ();
+     case BK_direct:
+       return "direct";
+     case BK_default:
+       return "default";
+     }
+ }
+ 
+ /* class binding_key.  */
+ 
+ const binding_key *
+ binding_key::make (store_manager *mgr, const region *r,
+ 		   enum binding_kind kind)
+ {
+   region_offset offset = r->get_offset ();
+   if (offset.symbolic_p ())
+     return mgr->get_symbolic_binding (r, kind);
+   else
+     {
+       bit_size_t bit_size;
+       if (r->get_bit_size (&bit_size))
+ 	return mgr->get_concrete_binding (offset.get_bit_offset (),
+ 					  bit_size, kind);
+       else
+ 	return mgr->get_symbolic_binding (r, kind);
+     }
+ }
+ 
+ /* Base class implementation of binding_key::dump_to_pp vfunc.  */
+ 
+ void
+ binding_key::dump_to_pp (pretty_printer *pp, bool /*simple*/) const
+ {
+   pp_printf (pp, "kind: %s", binding_kind_to_string (m_kind));
+ }
+ 
+ /* Dump this binding_key to stderr.  */
+ 
+ DEBUG_FUNCTION void
+ binding_key::dump (bool simple) const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+   pp_show_color (&pp) = pp_show_color (global_dc->printer);
+   pp.buffer->stream = stderr;
+   dump_to_pp (&pp, simple);
+   pp_newline (&pp);
+   pp_flush (&pp);
+ }
+ 
+ /* Get a description of this binding_key.  */
+ 
+ label_text
+ binding_key::get_desc (bool simple) const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+   dump_to_pp (&pp, simple);
+   return label_text::take (xstrdup (pp_formatted_text (&pp)));
+ }
+ 
+ /* qsort callback.  */
+ 
+ int
+ binding_key::cmp_ptrs (const void *p1, const void *p2)
+ {
+   const binding_key * const *pk1 = (const binding_key * const *)p1;
+   const binding_key * const *pk2 = (const binding_key * const *)p2;
+   return cmp (*pk1, *pk2);
+ }
+ 
+ /* Comparator for binding_keys.  */
+ 
+ int
+ binding_key::cmp (const binding_key *k1, const binding_key *k2)
+ {
+   enum binding_kind kind1 = k1->get_kind ();
+   enum binding_kind kind2 = k2->get_kind ();
+   if (kind1 != kind2)
+     return (int)kind1 - (int)kind2;
+ 
+   int concrete1 = k1->concrete_p ();
+   int concrete2 = k2->concrete_p ();
+   if (int concrete_cmp = concrete1 - concrete2)
+     return concrete_cmp;
+   if (concrete1)
+     {
+       const concrete_binding *b1 = (const concrete_binding *)k1;
+       const concrete_binding *b2 = (const concrete_binding *)k2;
+       if (int start_cmp = wi::cmp (b1->get_start_bit_offset (),
+ 				   b2->get_start_bit_offset (),
+ 				   SIGNED))
+ 	return start_cmp;
+       return wi::cmp (b1->get_next_bit_offset (), b2->get_next_bit_offset (),
+ 		      SIGNED);
+     }
+   else
+     {
+       const symbolic_binding *s1 = (const symbolic_binding *)k1;
+       const symbolic_binding *s2 = (const symbolic_binding *)k2;
+       if (s1 > s2)
+ 	return 1;
+       if (s1 < s2)
+ 	return -1;
+       return 0;
+     }
+ }
+ 
+ /* class concrete_binding : public binding_key.  */
+ 
+ /* Implementation of binding_key::dump_to_pp vfunc for concrete_binding.  */
+ 
+ void
+ concrete_binding::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   binding_key::dump_to_pp (pp, simple);
+   pp_string (pp, ", start: ");
+   pp_wide_int (pp, m_start_bit_offset, SIGNED);
+   pp_string (pp, ", size: ");
+   pp_wide_int (pp, m_size_in_bits, SIGNED);
+   pp_string (pp, ", next: ");
+   pp_wide_int (pp, get_next_bit_offset (), SIGNED);
+ }
+ 
+ /* Return true if this binding overlaps with OTHER.  */
+ 
+ bool
+ concrete_binding::overlaps_p (const concrete_binding &other) const
+ {
+   if (m_start_bit_offset < other.get_next_bit_offset ()
+       && get_next_bit_offset () > other.get_start_bit_offset ())
+     return true;
+   return false;
+ }
+ 
+ /* Comparator for use by vec<const concrete_binding *>::qsort.  */
+ 
+ int
+ concrete_binding::cmp_ptr_ptr (const void *p1, const void *p2)
+ {
+   const concrete_binding *b1 = *(const concrete_binding * const *)p1;
+   const concrete_binding *b2 = *(const concrete_binding * const *)p2;
+ 
+   if (int kind_cmp = b1->get_kind () - b2->get_kind ())
+     return kind_cmp;
+ 
+   if (int start_cmp = wi::cmps (b1->m_start_bit_offset, b2->m_start_bit_offset))
+     return start_cmp;
+ 
+   return wi::cmpu (b1->m_size_in_bits, b2->m_size_in_bits);
+ }
+ 
+ /* class symbolic_binding : public binding_key.  */
+ 
+ void
+ symbolic_binding::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   binding_key::dump_to_pp (pp, simple);
+   pp_string (pp, ", region: ");
+   m_region->dump_to_pp (pp, simple);
+ }
+ 
+ /* Comparator for use by vec<const symbolic_binding *>::qsort.  */
+ 
+ int
+ symbolic_binding::cmp_ptr_ptr (const void *p1, const void *p2)
+ {
+   const symbolic_binding *b1 = *(const symbolic_binding * const *)p1;
+   const symbolic_binding *b2 = *(const symbolic_binding * const *)p2;
+ 
+   if (int kind_cmp = b1->get_kind () - b2->get_kind ())
+     return kind_cmp;
+ 
+   return region::cmp_ids (b1->get_region (), b2->get_region ());
+ }
+ 
+ /* The store is oblivious to the types of the svalues bound within
+    it: any type can get bound at any location.
+    Simplify any casts before binding.
+ 
+    For example, if we have:
+      struct big { int ia[1024]; };
+      struct big src, dst;
+      memcpy (&dst, &src, sizeof (struct big));
+    this reaches us in gimple form as:
+      MEM <unsigned char[4096]> [(char * {ref-all})&dst]
+        = MEM <unsigned char[4096]> [(char * {ref-all})&src];
+    Using cast_region when handling the MEM_REF would give us:
+      INIT_VAL(CAST_REG(unsigned char[4096], src))
+    as rhs_sval, but we can fold that into a cast svalue:
+      CAST(unsigned char[4096], INIT_VAL(src))
+    We can discard that cast from the svalue when binding it in
+    the store for "dst", and simply store:
+      cluster for: dst
+        key:   {kind: direct, start: 0, size: 32768, next: 32768}
+        value: ‘struct big’ {INIT_VAL(src)}.  */
+ 
+ static const svalue *
+ simplify_for_binding (const svalue *sval)
+ {
+   if (const svalue *cast_sval = sval->maybe_undo_cast ())
+     sval = cast_sval;
+   return sval;
+ }
+ 
+ /* class binding_map.  */
+ 
+ /* binding_map's copy ctor.  */
+ 
+ binding_map::binding_map (const binding_map &other)
+ : m_map (other.m_map)
+ {
+ }
+ 
+ /* binding_map's assignment operator.  */
+ 
+ binding_map&
+ binding_map::operator=(const binding_map &other)
+ {
+   /* For now, assume we only ever copy to an empty cluster.  */
+   gcc_assert (m_map.elements () == 0);
+   for (map_t::iterator iter = other.m_map.begin (); iter != other.m_map.end ();
+        ++iter)
+     {
+       const binding_key *key = (*iter).first;
+       const svalue *sval = (*iter).second;
+       m_map.put (key, sval);
+     }
+   return *this;
+ }
+ 
+ /* binding_map's equality operator.  */
+ 
+ bool
+ binding_map::operator== (const binding_map &other) const
+ {
+   if (m_map.elements () != other.m_map.elements ())
+     return false;
+ 
+   for (map_t::iterator iter = m_map.begin (); iter != m_map.end (); ++iter)
+     {
+       const binding_key *key = (*iter).first;
+       const svalue *sval = (*iter).second;
+       const svalue **other_slot
+ 	= const_cast <map_t &> (other.m_map).get (key);
+       if (other_slot == NULL)
+ 	return false;
+       if (sval != *other_slot)
+ 	return false;
+     }
+   gcc_checking_assert (hash () == other.hash ());
+   return true;
+ }
+ 
+ /* Generate a hash value for this binding_map.  */
+ 
+ hashval_t
+ binding_map::hash () const
+ {
+   hashval_t result = 0;
+   for (map_t::iterator iter = m_map.begin (); iter != m_map.end (); ++iter)
+     {
+       /* Use a new hasher for each key to avoid depending on the ordering
+ 	 of keys when accumulating the result.  */
+       inchash::hash hstate;
+       hstate.add_ptr ((*iter).first);
+       hstate.add_ptr ((*iter).second);
+       result ^= hstate.end ();
+     }
+   return result;
+ }
+ 
+ /* Dump a representation of this binding_map to PP.
+    SIMPLE controls how values and regions are to be printed.
+    If MULTILINE, then split the dump over multiple lines and
+    use whitespace for readability, otherwise put all on one line.  */
+ 
+ void
+ binding_map::dump_to_pp (pretty_printer *pp, bool simple,
+ 			 bool multiline) const
+ {
+   auto_vec <const binding_key *> binding_keys;
+   for (map_t::iterator iter = m_map.begin ();
+        iter != m_map.end (); ++iter)
+     {
+       const binding_key *key = (*iter).first;
+       binding_keys.safe_push (key);
+     }
+   binding_keys.qsort (binding_key::cmp_ptrs);
+ 
+   const binding_key *key;
+   unsigned i;
+   FOR_EACH_VEC_ELT (binding_keys, i, key)
+     {
+       const svalue *value = *const_cast <map_t &> (m_map).get (key);
+       if (multiline)
+ 	{
+ 	  pp_string (pp, "    key:   {");
+ 	  key->dump_to_pp (pp, simple);
+ 	  pp_string (pp, "}");
+ 	  pp_newline (pp);
+ 	  pp_string (pp, "    value: ");
+ 	  if (tree t = value->get_type ())
+ 	    dump_quoted_tree (pp, t);
+ 	  pp_string (pp, " {");
+ 	  value->dump_to_pp (pp, simple);
+ 	  pp_string (pp, "}");
+ 	  pp_newline (pp);
+ 	}
+       else
+ 	{
+ 	  if (i > 0)
+ 	    pp_string (pp, ", ");
+ 	  pp_string (pp, "binding key: {");
+ 	  key->dump_to_pp (pp, simple);
+ 	  pp_string (pp, "}, value: {");
+ 	  value->dump_to_pp (pp, simple);
+ 	  pp_string (pp, "}");
+ 	}
+     }
+ }
+ 
+ /* Dump a multiline representation of this binding_map to stderr.  */
+ 
+ DEBUG_FUNCTION void
+ binding_map::dump (bool simple) const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+   pp_show_color (&pp) = pp_show_color (global_dc->printer);
+   pp.buffer->stream = stderr;
+   dump_to_pp (&pp, simple, true);
+   pp_newline (&pp);
+   pp_flush (&pp);
+ }
+ 
+ /* Return a new json::object of the form
+    {KEY_DESC : SVALUE_DESC,
+     ...for the various key/value pairs in this binding_map}.  */
+ 
+ json::object *
+ binding_map::to_json () const
+ {
+   json::object *map_obj = new json::object ();
+ 
+   auto_vec <const binding_key *> binding_keys;
+   for (map_t::iterator iter = m_map.begin ();
+        iter != m_map.end (); ++iter)
+     {
+       const binding_key *key = (*iter).first;
+       binding_keys.safe_push (key);
+     }
+   binding_keys.qsort (binding_key::cmp_ptrs);
+ 
+   const binding_key *key;
+   unsigned i;
+   FOR_EACH_VEC_ELT (binding_keys, i, key)
+     {
+       const svalue *value = *const_cast <map_t &> (m_map).get (key);
+       label_text key_desc = key->get_desc ();
+       map_obj->set (key_desc.m_buffer, value->to_json ());
+       key_desc.maybe_free ();
+     }
+ 
+   return map_obj;
+ }
+ 
+ /* Comparator for imposing an order on binding_maps.  */
+ 
+ int
+ binding_map::cmp (const binding_map &map1, const binding_map &map2)
+ {
+   if (int count_cmp = map1.elements () - map2.elements ())
+     return count_cmp;
+ 
+   auto_vec <const binding_key *> keys1 (map1.elements ());
+   for (map_t::iterator iter = map1.begin ();
+        iter != map1.end (); ++iter)
+     keys1.quick_push ((*iter).first);
+   keys1.qsort (binding_key::cmp_ptrs);
+ 
+   auto_vec <const binding_key *> keys2 (map2.elements ());
+   for (map_t::iterator iter = map2.begin ();
+        iter != map2.end (); ++iter)
+     keys2.quick_push ((*iter).first);
+   keys2.qsort (binding_key::cmp_ptrs);
+ 
+   for (size_t i = 0; i < keys1.length (); i++)
+     {
+       const binding_key *k1 = keys1[i];
+       const binding_key *k2 = keys2[i];
+       if (int key_cmp = binding_key::cmp (k1, k2))
+ 	return key_cmp;
+       gcc_assert (k1 == k2);
+       if (int sval_cmp = svalue::cmp_ptr (map1.get (k1), map2.get (k2)))
+ 	return sval_cmp;
+     }
+ 
+   return 0;
+ }
+ 
+ /* Get the child region of PARENT_REG based upon INDEX within a
+    CONSTRUCTOR.   */
+ 
+ static const region *
+ get_subregion_within_ctor (const region *parent_reg, tree index,
+ 			   region_model_manager *mgr)
+ {
+   switch (TREE_CODE (index))
+     {
+     default:
+       gcc_unreachable ();
+     case INTEGER_CST:
+       {
+ 	const svalue *index_sval
+ 	  = mgr->get_or_create_constant_svalue (index);
+ 	return mgr->get_element_region (parent_reg,
+ 					TREE_TYPE (parent_reg->get_type ()),
+ 					index_sval);
+       }
+       break;
+     case FIELD_DECL:
+       return mgr->get_field_region (parent_reg, index);
+     }
+ }
+ 
+ /* Get the svalue for VAL, a non-CONSTRUCTOR value within a CONSTRUCTOR.  */
+ 
+ static const svalue *
+ get_svalue_for_ctor_val (tree val, region_model_manager *mgr)
+ {
+   /* Reuse the get_rvalue logic from region_model.  */
+   region_model m (mgr);
+   return m.get_rvalue (path_var (val, 0), NULL);
+ }
+ 
+ /* Bind values from CONSTRUCTOR to this map, relative to
+    PARENT_REG's relationship to its base region.
+    Return true if successful, false if there was a problem (e.g. due
+    to hitting a complexity limit).  */
+ 
+ bool
+ binding_map::apply_ctor_to_region (const region *parent_reg, tree ctor,
+ 				   region_model_manager *mgr)
+ {
+   gcc_assert (parent_reg);
+   gcc_assert (TREE_CODE (ctor) == CONSTRUCTOR);
+ 
+   unsigned ix;
+   tree index;
+   tree val;
+   tree parent_type = parent_reg->get_type ();
+   tree field;
+   if (TREE_CODE (parent_type) == RECORD_TYPE)
+     field = TYPE_FIELDS (parent_type);
+   else
+     field = NULL_TREE;
+   FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (ctor), ix, index, val)
+     {
+       if (!index)
+ 	{
+ 	  /* If index is NULL, then iterate through the fields for
+ 	     a RECORD_TYPE, or use an INTEGER_CST otherwise.
+ 	     Compare with similar logic in output_constructor.  */
+ 	  if (field)
+ 	    {
+ 	      index = field;
+ 	      field = DECL_CHAIN (field);
+ 	    }
+ 	  else
+ 	    index = build_int_cst (integer_type_node, ix);
+ 	}
+       else if (TREE_CODE (index) == RANGE_EXPR)
+ 	{
+ 	  tree min_index = TREE_OPERAND (index, 0);
+ 	  tree max_index = TREE_OPERAND (index, 1);
+ 	  if (min_index == max_index)
+ 	    {
+ 	      if (!apply_ctor_pair_to_child_region (parent_reg, mgr,
+ 						    min_index, val))
+ 		return false;
+ 	    }
+ 	  else
+ 	    {
+ 	      if (!apply_ctor_val_to_range (parent_reg, mgr,
+ 					    min_index, max_index, val))
+ 		return false;
+ 	    }
+ 	  continue;
+ 	}
+       if (!apply_ctor_pair_to_child_region (parent_reg, mgr, index, val))
+ 	return false;
+     }
+   return true;
+ }
+ 
+ /* Bind the value VAL into the range of elements within PARENT_REF
+    from MIN_INDEX to MAX_INDEX (including endpoints).
+    For use in handling RANGE_EXPR within a CONSTRUCTOR.
+    Return true if successful, false if there was a problem (e.g. due
+    to hitting a complexity limit).  */
+ 
+ bool
+ binding_map::apply_ctor_val_to_range (const region *parent_reg,
+ 				      region_model_manager *mgr,
+ 				      tree min_index, tree max_index,
+ 				      tree val)
+ {
+   gcc_assert (TREE_CODE (min_index) == INTEGER_CST);
+   gcc_assert (TREE_CODE (max_index) == INTEGER_CST);
+ 
+   /* Generate a binding key for the range.  */
+   const region *min_element
+     = get_subregion_within_ctor (parent_reg, min_index, mgr);
+   const region *max_element
+     = get_subregion_within_ctor (parent_reg, max_index, mgr);
+   region_offset min_offset = min_element->get_offset ();
+   if (min_offset.symbolic_p ())
+     return false;
+   bit_offset_t start_bit_offset = min_offset.get_bit_offset ();
+   store_manager *smgr = mgr->get_store_manager ();
+   const binding_key *max_element_key
+     = binding_key::make (smgr, max_element, BK_direct);
+   if (max_element_key->symbolic_p ())
+     return false;
+   const concrete_binding *max_element_ckey
+     = max_element_key->dyn_cast_concrete_binding ();
+   bit_size_t range_size_in_bits
+     = max_element_ckey->get_next_bit_offset () - start_bit_offset;
+   const concrete_binding *range_key
+     = smgr->get_concrete_binding (start_bit_offset, range_size_in_bits,
+ 				  BK_direct);
+   if (range_key->symbolic_p ())
+     return false;
+ 
+   /* Get the value.  */
+   if (TREE_CODE (val) == CONSTRUCTOR)
+     return false;
+   const svalue *sval = get_svalue_for_ctor_val (val, mgr);
+ 
+   /* Bind the value to the range.  */
+   put (range_key, sval);
+   return true;
+ }
+ 
+ /* Bind the value VAL into INDEX within PARENT_REF.
+    For use in handling a pair of entries within a CONSTRUCTOR.
+    Return true if successful, false if there was a problem (e.g. due
+    to hitting a complexity limit).  */
+ 
+ bool
+ binding_map::apply_ctor_pair_to_child_region (const region *parent_reg,
+ 					      region_model_manager *mgr,
+ 					      tree index, tree val)
+ {
+   const region *child_reg
+     = get_subregion_within_ctor (parent_reg, index, mgr);
+   if (TREE_CODE (val) == CONSTRUCTOR)
+     return apply_ctor_to_region (child_reg, val, mgr);
+   else
+     {
+       const svalue *sval = get_svalue_for_ctor_val (val, mgr);
+       const binding_key *k
+ 	= binding_key::make (mgr->get_store_manager (), child_reg,
+ 			     BK_direct);
+       /* Handle the case where we have an unknown size for child_reg
+ 	 (e.g. due to it being a trailing field with incomplete array
+ 	 type.  */
+       if (!k->concrete_p ())
+ 	{
+ 	  /* Assume that sval has a well-defined size for this case.  */
+ 	  tree sval_type = sval->get_type ();
+ 	  gcc_assert (sval_type);
+ 	  HOST_WIDE_INT sval_byte_size = int_size_in_bytes (sval_type);
+ 	  gcc_assert (sval_byte_size != -1);
+ 	  bit_size_t sval_bit_size = sval_byte_size * BITS_PER_UNIT;
+ 	  /* Get offset of child relative to base region.  */
+ 	  region_offset child_base_offset = child_reg->get_offset ();
+ 	  if (child_base_offset.symbolic_p ())
+ 	    return false;
+ 	  /* Convert to an offset relative to the parent region.  */
+ 	  region_offset parent_base_offset = parent_reg->get_offset ();
+ 	  gcc_assert (!parent_base_offset.symbolic_p ());
+ 	  bit_offset_t child_parent_offset
+ 	    = (child_base_offset.get_bit_offset ()
+ 	       - parent_base_offset.get_bit_offset ());
+ 	  /* Create a concrete key for the child within the parent.  */
+ 	  k = mgr->get_store_manager ()->get_concrete_binding
+ 	    (child_parent_offset, sval_bit_size, BK_direct);
+ 	}
+       gcc_assert (k->concrete_p ());
+       put (k, sval);
+       return true;
+     }
+ }
+ 
+ /* class binding_cluster.  */
+ 
+ /* binding_cluster's copy ctor.  */
+ 
+ binding_cluster::binding_cluster (const binding_cluster &other)
+ : m_base_region (other.m_base_region), m_map (other.m_map),
+   m_escaped (other.m_escaped), m_touched (other.m_touched)
+ {
+ }
+ 
+ /* binding_cluster's assignment operator.  */
+ 
+ binding_cluster&
+ binding_cluster::operator= (const binding_cluster &other)
+ {
+   gcc_assert (m_base_region == other.m_base_region);
+   m_map = other.m_map;
+   m_escaped = other.m_escaped;
+   m_touched = other.m_touched;
+   return *this;
+ }
+ 
+ /* binding_cluster's equality operator.  */
+ 
+ bool
+ binding_cluster::operator== (const binding_cluster &other) const
+ {
+   if (m_map != other.m_map)
+     return false;
+ 
+   if (m_base_region != other.m_base_region)
+     return false;
+ 
+   if (m_escaped != other.m_escaped)
+     return false;
+ 
+   if (m_touched != other.m_touched)
+     return false;
+ 
+   gcc_checking_assert (hash () == other.hash ());
+ 
+   return true;
+ }
+ 
+ /* Generate a hash value for this binding_cluster.  */
+ 
+ hashval_t
+ binding_cluster::hash () const
+ {
+   return m_map.hash ();
+ }
+ 
+ /* Return true if this binding_cluster is symbolic
+    i.e. its base region is symbolic.  */
+ 
+ bool
+ binding_cluster::symbolic_p () const
+ {
+   return m_base_region->get_kind () == RK_SYMBOLIC;
+ }
+ 
+ /* Dump a representation of this binding_cluster to PP.
+    SIMPLE controls how values and regions are to be printed.
+    If MULTILINE, then split the dump over multiple lines and
+    use whitespace for readability, otherwise put all on one line.  */
+ 
+ void
+ binding_cluster::dump_to_pp (pretty_printer *pp, bool simple,
+ 			     bool multiline) const
+ {
+   if (m_escaped)
+     {
+       if (multiline)
+ 	{
+ 	  pp_string (pp, "    ESCAPED");
+ 	  pp_newline (pp);
+ 	}
+       else
+ 	pp_string (pp, "(ESCAPED)");
+     }
+   if (m_touched)
+     {
+       if (multiline)
+ 	{
+ 	  pp_string (pp, "    TOUCHED");
+ 	  pp_newline (pp);
+ 	}
+       else
+ 	pp_string (pp, "(TOUCHED)");
+     }
+ 
+   m_map.dump_to_pp (pp, simple, multiline);
+ }
+ 
+ /* Dump a multiline representation of this binding_cluster to stderr.  */
+ 
+ DEBUG_FUNCTION void
+ binding_cluster::dump (bool simple) const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+   pp_show_color (&pp) = pp_show_color (global_dc->printer);
+   pp.buffer->stream = stderr;
+   pp_string (&pp, "  cluster for: ");
+   m_base_region->dump_to_pp (&pp, simple);
+   pp_string (&pp, ": ");
+   pp_newline (&pp);
+   dump_to_pp (&pp, simple, true);
+   pp_newline (&pp);
+   pp_flush (&pp);
+ }
+ 
+ /* Return a new json::object of the form
+    {"escaped": true/false,
+     "touched": true/false,
+     "map" : object for the the binding_map.  */
+ 
+ json::object *
+ binding_cluster::to_json () const
+ {
+   json::object *cluster_obj = new json::object ();
+ 
+   cluster_obj->set ("escaped", new json::literal (m_escaped));
+   cluster_obj->set ("touched", new json::literal (m_touched));
+   cluster_obj->set ("map", m_map.to_json ());
+ 
+   return cluster_obj;
+ }
+ 
+ /* Add a binding of SVAL of kind KIND to REG, unpacking SVAL if it is a
+    compound_sval.  */
+ 
+ void
+ binding_cluster::bind (store_manager *mgr,
+ 		       const region *reg, const svalue *sval,
+ 		       binding_kind kind)
+ {
+   if (const compound_svalue *compound_sval
+ 	= sval->dyn_cast_compound_svalue ())
+     {
+       bind_compound_sval (mgr, reg, compound_sval);
+       return;
+     }
+ 
+   const binding_key *binding = binding_key::make (mgr, reg, kind);
+   bind_key (binding, sval);
+ }
+ 
+ /* Bind SVAL to KEY.
+    Unpacking of compound_svalues should already have been done by the
+    time this is called.  */
+ 
+ void
+ binding_cluster::bind_key (const binding_key *key, const svalue *sval)
+ {
+   gcc_assert (sval->get_kind () != SK_COMPOUND);
+ 
+   m_map.put (key, sval);
+   if (key->symbolic_p ())
+     m_touched = true;
+ }
+ 
+ /* Subroutine of binding_cluster::bind.
+    Unpack compound_svals when binding them, so that we bind them
+    element-wise.  */
+ 
+ void
+ binding_cluster::bind_compound_sval (store_manager *mgr,
+ 				     const region *reg,
+ 				     const compound_svalue *compound_sval)
+ {
+   region_offset reg_offset = reg->get_offset ();
+   if (reg_offset.symbolic_p ())
+     {
+       m_touched = true;
+       clobber_region (mgr, reg);
+       return;
+     }
+ 
+   for (map_t::iterator iter = compound_sval->begin ();
+        iter != compound_sval->end (); ++iter)
+     {
+       const binding_key *iter_key = (*iter).first;
+       const svalue *iter_sval = (*iter).second;
+ 
+       if (const concrete_binding *concrete_key
+ 	  = iter_key->dyn_cast_concrete_binding ())
+ 	{
+ 	  bit_offset_t effective_start
+ 	    = (concrete_key->get_start_bit_offset ()
+ 	       + reg_offset.get_bit_offset ());
+ 	  const concrete_binding *effective_concrete_key
+ 	    = mgr->get_concrete_binding (effective_start,
+ 					 concrete_key->get_size_in_bits (),
+ 					 iter_key->get_kind ());
+ 	  bind_key (effective_concrete_key, iter_sval);
+ 	}
+       else
+ 	gcc_unreachable ();
+     }
+ }
+ 
+ /* Remove all bindings overlapping REG within this cluster.  */
+ 
+ void
+ binding_cluster::clobber_region (store_manager *mgr, const region *reg)
+ {
+   remove_overlapping_bindings (mgr, reg, NULL);
+ }
+ 
+ /* Remove any bindings for REG within this cluster.  */
+ 
+ void
+ binding_cluster::purge_region (store_manager *mgr, const region *reg)
+ {
+   gcc_assert (reg->get_kind () == RK_DECL);
+   const binding_key *binding
+     = binding_key::make (mgr, const_cast<region *> (reg),
+ 			 BK_direct);
+   m_map.remove (binding);
+ }
+ 
+ /* Mark REG within this cluster as being filled with zeroes.
+    Remove all bindings, add a default binding to zero, and clear the
+    TOUCHED flag.  */
+ 
+ void
+ binding_cluster::zero_fill_region (store_manager *mgr, const region *reg)
+ {
+   clobber_region (mgr, reg);
+ 
+   /* Add a default binding to zero.  */
+   region_model_manager *sval_mgr = mgr->get_svalue_manager ();
+   tree cst_zero = build_int_cst (integer_type_node, 0);
+   const svalue *cst_sval = sval_mgr->get_or_create_constant_svalue (cst_zero);
+   const svalue *bound_sval = cst_sval;
+   if (reg->get_type ())
+     bound_sval = sval_mgr->get_or_create_unaryop (reg->get_type (), NOP_EXPR,
+ 						  cst_sval);
+   bind (mgr, reg, bound_sval, BK_default);
+ 
+   m_touched = false;
+ }
+ 
+ /* Mark REG within this cluster as being unknown.
+    If UNCERTAINTY is non-NULL, use it to record any svalues that
+    had bindings to them removed, as being maybe-bound.  */
+ 
+ void
+ binding_cluster::mark_region_as_unknown (store_manager *mgr,
+ 					 const region *reg,
+ 					 uncertainty_t *uncertainty)
+ {
+   remove_overlapping_bindings (mgr, reg, uncertainty);
+ 
+   /* Add a default binding to "unknown".  */
+   region_model_manager *sval_mgr = mgr->get_svalue_manager ();
+   const svalue *sval
+     = sval_mgr->get_or_create_unknown_svalue (reg->get_type ());
+   bind (mgr, reg, sval, BK_default);
+ }
+ 
+ /* Get any SVAL bound to REG within this cluster via kind KIND,
+    without checking parent regions of REG.  */
+ 
+ const svalue *
+ binding_cluster::get_binding (store_manager *mgr,
+ 			      const region *reg,
+ 			      binding_kind kind) const
+ {
+   const binding_key *reg_binding = binding_key::make (mgr, reg, kind);
+   const svalue *sval = m_map.get (reg_binding);
+   if (sval)
+     {
+       /* If we have a struct with a single field, then the binding of
+ 	 the field will equal that of the struct, and looking up e.g.
+ 	 PARENT_REG.field within:
+ 	    cluster for PARENT_REG: INIT_VAL(OTHER_REG)
+ 	 will erroneously return INIT_VAL(OTHER_REG), rather than
+ 	   SUB_VALUE(INIT_VAL(OTHER_REG), FIELD) == INIT_VAL(OTHER_REG.FIELD).
+ 	 Fix this issue by iterating upwards whilst the bindings are equal,
+ 	 expressing the lookups as subvalues.
+ 	 We have to gather a list of subregion accesses, then walk it
+ 	 in reverse to get the subvalues.  */
+       auto_vec<const region *> regions;
+       while (const region *parent_reg = reg->get_parent_region ())
+ 	{
+ 	  const binding_key *parent_reg_binding
+ 	    = binding_key::make (mgr, parent_reg, kind);
+ 	  if (parent_reg_binding == reg_binding
+ 	      && sval->get_type ()
+ 	      && reg->get_type ()
+ 	      && sval->get_type () != reg->get_type ())
+ 	    {
+ 	      regions.safe_push (reg);
+ 	      reg = parent_reg;
+ 	    }
+ 	  else
+ 	    break;
+ 	}
+       if (sval->get_type ()
+ 	  && reg->get_type ()
+ 	  && sval->get_type () == reg->get_type ())
+ 	{
+ 	  unsigned i;
+ 	  const region *iter_reg;
+ 	  FOR_EACH_VEC_ELT_REVERSE (regions, i, iter_reg)
+ 	    {
+ 	      region_model_manager *rmm_mgr = mgr->get_svalue_manager ();
+ 	      sval = rmm_mgr->get_or_create_sub_svalue (reg->get_type (),
+ 							sval, iter_reg);
+ 	    }
+ 	}
+     }
+   return sval;
+ }
+ 
+ /* Get any SVAL bound to REG within this cluster via kind KIND,
+    either directly for REG, or recursively checking for bindings within
+    parent regions and extracting subvalues if need be.  */
+ 
+ const svalue *
+ binding_cluster::get_binding_recursive (store_manager *mgr,
+ 					const region *reg,
+ 					enum binding_kind kind) const
+ {
+   if (const svalue *sval = get_binding (mgr, reg, kind))
+     return sval;
+   if (reg != m_base_region)
+     if (const region *parent_reg = reg->get_parent_region ())
+       if (const svalue *parent_sval
+ 	  = get_binding_recursive (mgr, parent_reg, kind))
+ 	{
+ 	  /* Extract child svalue from parent svalue.  */
+ 	  region_model_manager *rmm_mgr = mgr->get_svalue_manager ();
+ 	  return rmm_mgr->get_or_create_sub_svalue (reg->get_type (),
+ 						    parent_sval, reg);
+ 	}
+   return NULL;
+ }
+ 
+ /* Get any value bound for REG within this cluster.  */
+ 
+ const svalue *
+ binding_cluster::get_any_binding (store_manager *mgr,
+ 				  const region *reg) const
+ {
+   /* Look for a "direct" binding.  */
+   if (const svalue *direct_sval
+       = get_binding_recursive (mgr, reg, BK_direct))
+     return direct_sval;
+ 
+   /* Look for a "default" binding, but not if there's been a symbolic
+      write.  */
+   if (!m_touched)
+     if (const svalue *default_sval
+ 	= get_binding_recursive (mgr, reg, BK_default))
+       return default_sval;
+ 
+   /* If this cluster has been touched by a symbolic write, then the content
+      of any subregion not currently specifically bound is "UNKNOWN".  */
+   if (m_touched)
+     {
+       region_model_manager *rmm_mgr = mgr->get_svalue_manager ();
+       return rmm_mgr->get_or_create_unknown_svalue (reg->get_type ());
+     }
+ 
+   if (const svalue *compound_sval = maybe_get_compound_binding (mgr, reg))
+     return compound_sval;
+ 
+   /* Otherwise, the initial value, or uninitialized.  */
+   return NULL;
+ }
+ 
+ /* Attempt to get a compound_svalue for the bindings within the cluster
+    affecting REG (which could be the base region itself).
+ 
+    Create a compound_svalue with the subset of bindings the affect REG,
+    offsetting them so that the offsets are relative to the start of REG
+    within the cluster.
+ 
+    For example, REG could be one element within an array of structs.
+ 
+    Return the resulting compound_svalue, or NULL if there's a problem.  */
+ 
+ const svalue *
+ binding_cluster::maybe_get_compound_binding (store_manager *mgr,
+ 					     const region *reg) const
+ {
+   binding_map map;
+ 
+   region_offset cluster_offset = m_base_region->get_offset ();
+   if (cluster_offset.symbolic_p ())
+     return NULL;
+   region_offset reg_offset = reg->get_offset ();
+   if (reg_offset.symbolic_p ())
+     return NULL;
+ 
+   for (map_t::iterator iter = m_map.begin (); iter != m_map.end (); ++iter)
+     {
+       const binding_key *key = (*iter).first;
+       const svalue *sval = (*iter).second;
+ 
+       if (const concrete_binding *concrete_key
+ 	  = key->dyn_cast_concrete_binding ())
+ 	{
+ 	  /* Skip bindings that are outside the bit range of REG.  */
+ 	  if (concrete_key->get_start_bit_offset ()
+ 	      < reg_offset.get_bit_offset ())
+ 	    continue;
+ 	  bit_size_t reg_bit_size;
+ 	  if (reg->get_bit_size (&reg_bit_size))
+ 	    if (concrete_key->get_start_bit_offset ()
+ 	      >= reg_offset.get_bit_offset () + reg_bit_size)
+ 	    continue;
+ 
+ 	  /* Get offset of KEY relative to REG, rather than to
+ 	     the cluster.  */
+ 	  bit_offset_t relative_start
+ 	    = (concrete_key->get_start_bit_offset ()
+ 	       - reg_offset.get_bit_offset ());
+ 	  const concrete_binding *offset_concrete_key
+ 	    = mgr->get_concrete_binding (relative_start,
+ 					 concrete_key->get_size_in_bits (),
+ 					 key->get_kind ());
+ 	  map.put (offset_concrete_key, sval);
+ 	}
+       else
+ 	return NULL;
+     }
+ 
+   if (map.elements () == 0)
+     return NULL;
+ 
+   region_model_manager *sval_mgr = mgr->get_svalue_manager ();
+   return sval_mgr->get_or_create_compound_svalue (reg->get_type (), map);
+ }
+ 
+ 
+ /* Populate OUT with all bindings within this cluster that overlap REG.  */
+ 
+ void
+ binding_cluster::get_overlapping_bindings (store_manager *mgr,
+ 					   const region *reg,
+ 					   auto_vec<const binding_key *> *out)
+ {
+   const binding_key *binding
+     = binding_key::make (mgr, reg, BK_direct);
+   for (map_t::iterator iter = m_map.begin ();
+        iter != m_map.end (); ++iter)
+     {
+       const binding_key *iter_key = (*iter).first;
+       if (const concrete_binding *ckey
+ 	    = binding->dyn_cast_concrete_binding ())
+ 	{
+ 	  if (const concrete_binding *iter_ckey
+ 	      = iter_key->dyn_cast_concrete_binding ())
+ 	    {
+ 	      if (ckey->overlaps_p (*iter_ckey))
+ 		out->safe_push (iter_key);
+ 	    }
+ 	  else
+ 	    {
+ 	      /* Assume overlap.  */
+ 	      out->safe_push (iter_key);
+ 	    }
+ 	}
+       else
+ 	{
+ 	  /* Assume overlap.  */
+ 	  out->safe_push (iter_key);
+ 	}
+     }
+ }
+ 
+ /* Remove any bindings within this cluster that overlap REG,
+    but retain default bindings that overlap but aren't fully covered
+    by REG.
+    If UNCERTAINTY is non-NULL, use it to record any svalues that
+    were removed, as being maybe-bound.  */
+ 
+ void
+ binding_cluster::remove_overlapping_bindings (store_manager *mgr,
+ 					      const region *reg,
+ 					      uncertainty_t *uncertainty)
+ {
+   auto_vec<const binding_key *> bindings;
+   get_overlapping_bindings (mgr, reg, &bindings);
+ 
+   unsigned i;
+   const binding_key *iter_binding;
+   FOR_EACH_VEC_ELT (bindings, i, iter_binding)
+     {
+       /* Don't remove default bindings, unless the default binding
+ 	 is fully covered by REG.  */
+       if (iter_binding->get_kind () == BK_default)
+ 	{
+ 	  const binding_key *reg_binding
+ 	    = binding_key::make (mgr, reg, BK_default);
+ 	  if (reg_binding != iter_binding)
+ 	    continue;
+ 	}
+       if (uncertainty)
+ 	uncertainty->on_maybe_bound_sval (m_map.get (iter_binding));
+       m_map.remove (iter_binding);
+     }
+ }
+ 
+ /* Attempt to merge CLUSTER_A and CLUSTER_B into OUT_CLUSTER, using
+    MGR and MERGER.
+    Return true if they can be merged, false otherwise.  */
+ 
+ bool
+ binding_cluster::can_merge_p (const binding_cluster *cluster_a,
+ 			      const binding_cluster *cluster_b,
+ 			      binding_cluster *out_cluster,
+ 			      store *out_store,
+ 			      store_manager *mgr,
+ 			      model_merger *merger)
+ {
+   gcc_assert (out_cluster);
+ 
+   /* Merge flags ("ESCAPED" and "TOUCHED") by setting the merged flag to
+      true if either of the inputs is true.  */
+   if ((cluster_a && cluster_a->m_escaped)
+       || (cluster_b && cluster_b->m_escaped))
+     out_cluster->m_escaped = true;
+   if ((cluster_a && cluster_a->m_touched)
+       || (cluster_b && cluster_b->m_touched))
+     out_cluster->m_touched = true;
+ 
+   /* At least one of CLUSTER_A and CLUSTER_B are non-NULL, but either
+      could be NULL.  Handle these cases.  */
+   if (cluster_a == NULL)
+     {
+       gcc_assert (cluster_b != NULL);
+       gcc_assert (cluster_b->m_base_region == out_cluster->m_base_region);
+       out_cluster->make_unknown_relative_to (cluster_b, out_store, mgr);
+       return true;
+     }
+   if (cluster_b == NULL)
+     {
+       gcc_assert (cluster_a != NULL);
+       gcc_assert (cluster_a->m_base_region == out_cluster->m_base_region);
+       out_cluster->make_unknown_relative_to (cluster_a, out_store, mgr);
+       return true;
+     }
+ 
+   /* The "both inputs are non-NULL" case.  */
+   gcc_assert (cluster_a != NULL && cluster_b != NULL);
+   gcc_assert (cluster_a->m_base_region == out_cluster->m_base_region);
+   gcc_assert (cluster_b->m_base_region == out_cluster->m_base_region);
+ 
+   hash_set<const binding_key *> keys;
+   for (map_t::iterator iter_a = cluster_a->m_map.begin ();
+        iter_a != cluster_a->m_map.end (); ++iter_a)
+     {
+       const binding_key *key_a = (*iter_a).first;
+       keys.add (key_a);
+     }
+   for (map_t::iterator iter_b = cluster_b->m_map.begin ();
+        iter_b != cluster_b->m_map.end (); ++iter_b)
+     {
+       const binding_key *key_b = (*iter_b).first;
+       keys.add (key_b);
+     }
+   for (hash_set<const binding_key *>::iterator iter = keys.begin ();
+        iter != keys.end (); ++iter)
+     {
+       const binding_key *key = *iter;
+       const svalue *sval_a = cluster_a->get_any_value (key);
+       const svalue *sval_b = cluster_b->get_any_value (key);
+ 
+       if (sval_a == sval_b)
+ 	{
+ 	  gcc_assert (sval_a);
+ 	  out_cluster->m_map.put (key, sval_a);
+ 	  continue;
+ 	}
+       else if (sval_a && sval_b)
+ 	{
+ 	  region_model_manager *sval_mgr = mgr->get_svalue_manager ();
+ 	  if (const svalue *merged_sval
+ 	      = sval_a->can_merge_p (sval_b, sval_mgr, merger))
+ 	    {
+ 	      out_cluster->m_map.put (key, merged_sval);
+ 	      continue;
+ 	    }
+ 	  /* Merger of the svalues failed.  Reject merger of the cluster.   */
+ 	  return false;
+ 	}
+ 
+       /* If we get here, then one cluster binds this key and the other
+ 	 doesn't; merge them as "UNKNOWN".  */
+       gcc_assert (sval_a || sval_b);
+       tree type = sval_a ? sval_a->get_type () : sval_b->get_type ();
+       const svalue *unknown_sval
+ 	= mgr->get_svalue_manager ()->get_or_create_unknown_svalue (type);
+       out_cluster->m_map.put (key, unknown_sval);
+     }
+ 
+   /* Handle the case where we get a default binding from one and a direct
+      binding from the other.  */
+   auto_vec<const concrete_binding *> duplicate_keys;
+   for (map_t::iterator iter = out_cluster->m_map.begin ();
+        iter != out_cluster->m_map.end (); ++iter)
+     {
+       const concrete_binding *ckey
+ 	= (*iter).first->dyn_cast_concrete_binding ();
+       if (!ckey)
+ 	continue;
+       if (ckey->get_kind () != BK_direct)
+ 	continue;
+       const concrete_binding *def_ckey
+ 	= mgr->get_concrete_binding (ckey->get_start_bit_offset (),
+ 				     ckey->get_size_in_bits (),
+ 				     BK_default);
+       if (out_cluster->m_map.get (def_ckey))
+ 	duplicate_keys.safe_push (def_ckey);
+     }
+   unsigned i;
+   const concrete_binding *key;
+   FOR_EACH_VEC_ELT (duplicate_keys, i, key)
+     out_cluster->m_map.remove (key);
+ 
+   /* We don't handle other kinds of overlaps yet.  */
+ 
+   return true;
+ }
+ 
+ /* Update this cluster to reflect an attempt to merge OTHER where there
+    is no other cluster to merge with, and so we're notionally merging the
+    bound values in OTHER with the initial value of the relevant regions.
+ 
+    Any bound keys in OTHER should be bound to unknown in this.  */
+ 
+ void
+ binding_cluster::make_unknown_relative_to (const binding_cluster *other,
+ 					   store *out_store,
+ 					   store_manager *mgr)
+ {
+   for (map_t::iterator iter = other->m_map.begin ();
+        iter != other->m_map.end (); ++iter)
+     {
+       const binding_key *iter_key = (*iter).first;
+       const svalue *iter_sval = (*iter).second;
+       const svalue *unknown_sval
+ 	= mgr->get_svalue_manager ()->get_or_create_unknown_svalue
+ 	  (iter_sval->get_type ());
+       m_map.put (iter_key, unknown_sval);
+ 
+       /* For any pointers in OTHER, the merger means that the
+ 	 concrete pointer becomes an unknown value, which could
+ 	 show up as a false report of a leak when considering what
+ 	 pointers are live before vs after.
+ 	 Avoid this by marking the base regions they point to as having
+ 	 escaped.  */
+       if (const region_svalue *region_sval
+ 	  = iter_sval->dyn_cast_region_svalue ())
+ 	{
+ 	  const region *base_reg
+ 	    = region_sval->get_pointee ()->get_base_region ();
+ 	  if (!base_reg->symbolic_for_unknown_ptr_p ())
+ 	    {
+ 	      binding_cluster *c = out_store->get_or_create_cluster (base_reg);
+ 	      c->mark_as_escaped ();
+ 	    }
+ 	}
+     }
+ }
+ 
+ /* Mark this cluster as having escaped.  */
+ 
+ void
+ binding_cluster::mark_as_escaped ()
+ {
+   m_escaped = true;
+ }
+ 
+ /* If this cluster has escaped (by this call, or by an earlier one, or
+    by being an external param), then unbind all values and mark it
+    as "touched", so that it has an unknown value, rather than an
+    initial_svalue.  */
+ 
+ void
+ binding_cluster::on_unknown_fncall (const gcall *call,
+ 				    store_manager *mgr)
+ {
+   if (m_escaped)
+     {
+       m_map.empty ();
+ 
+       /* Bind it to a new "conjured" value using CALL.  */
+       const svalue *sval
+ 	= mgr->get_svalue_manager ()->get_or_create_conjured_svalue
+ 	    (m_base_region->get_type (), call, m_base_region);
+       bind (mgr, m_base_region, sval, BK_direct);
+ 
+       m_touched = true;
+     }
+ }
+ 
+ /* Return true if this binding_cluster has no information
+    i.e. if there are no bindings, and it hasn't been marked as having
+    escaped, or touched symbolically.  */
+ 
+ bool
+ binding_cluster::redundant_p () const
+ {
+   return (m_map.elements () == 0
+ 	  && !m_escaped
+ 	  && !m_touched);
+ }
+ 
+ /* Add PV to OUT_PVS, casting it to TYPE if if is not already of that type.  */
+ 
+ static void
+ append_pathvar_with_type (path_var pv,
+ 			  tree type,
+ 			  auto_vec<path_var> *out_pvs)
+ {
+   gcc_assert (pv.m_tree);
+ 
+   if (TREE_TYPE (pv.m_tree) != type)
+     pv.m_tree = build1 (NOP_EXPR, type, pv.m_tree);
+ 
+   out_pvs->safe_push (pv);
+ }
+ 
+ /* Find representative path_vars for SVAL within this binding of BASE_REG,
+    appending the results to OUT_PVS.  */
+ 
+ void
+ binding_cluster::get_representative_path_vars (const region_model *model,
+ 					       svalue_set *visited,
+ 					       const region *base_reg,
+ 					       const svalue *sval,
+ 					       auto_vec<path_var> *out_pvs)
+   const
+ {
+   sval = simplify_for_binding (sval);
+ 
+   for (map_t::iterator iter = m_map.begin (); iter != m_map.end (); ++iter)
+     {
+       const binding_key *key = (*iter).first;
+       const svalue *bound_sval = (*iter).second;
+       if (bound_sval == sval)
+ 	{
+ 	  if (const concrete_binding *ckey
+ 		= key->dyn_cast_concrete_binding ())
+ 	    {
+ 	      auto_vec <const region *> subregions;
+ 	      base_reg->get_subregions_for_binding
+ 		(model->get_manager (),
+ 		 ckey->get_start_bit_offset (),
+ 		 ckey->get_size_in_bits (),
+ 		 sval->get_type (),
+ 		 &subregions);
+ 	      unsigned i;
+ 	      const region *subregion;
+ 	      FOR_EACH_VEC_ELT (subregions, i, subregion)
+ 		{
+ 		  if (path_var pv
+ 		      = model->get_representative_path_var (subregion,
+ 							    visited))
+ 		    append_pathvar_with_type (pv, sval->get_type (), out_pvs);
+ 		}
+ 	    }
+ 	  else
+ 	    {
+ 	      const symbolic_binding *skey = (const symbolic_binding *)key;
+ 	      if (path_var pv
+ 		  = model->get_representative_path_var (skey->get_region (),
+ 							visited))
+ 		append_pathvar_with_type (pv, sval->get_type (), out_pvs);
+ 	    }
+ 	}
+     }
+ }
+ 
+ /* Get any svalue bound to KEY, or NULL.  */
+ 
+ const svalue *
+ binding_cluster::get_any_value (const binding_key *key) const
+ {
+   return m_map.get (key);
+ }
+ 
+ /* If this cluster has a single direct binding for the whole of the region,
+    return it.
+    For use in simplifying dumps.  */
+ 
+ const svalue *
+ binding_cluster::maybe_get_simple_value (store_manager *mgr) const
+ {
+   /* Fail gracefully if MGR is NULL to make it easier to dump store
+      instances in the debugger.  */
+   if (mgr == NULL)
+     return NULL;
+ 
+   if (m_map.elements () != 1)
+     return NULL;
+ 
+   const binding_key *key = binding_key::make (mgr, m_base_region, BK_direct);
+   return get_any_value (key);
+ }
+ 
+ /* class store_manager.  */
+ 
+ /* binding consolidation.  */
+ 
+ const concrete_binding *
+ store_manager::get_concrete_binding (bit_offset_t start_bit_offset,
+ 				     bit_offset_t size_in_bits,
+ 				     enum binding_kind kind)
+ {
+   concrete_binding b (start_bit_offset, size_in_bits, kind);
+   if (concrete_binding *existing = m_concrete_binding_key_mgr.get (b))
+     return existing;
+ 
+   concrete_binding *to_save = new concrete_binding (b);
+   m_concrete_binding_key_mgr.put (b, to_save);
+   return to_save;
+ }
+ 
+ const symbolic_binding *
+ store_manager::get_symbolic_binding (const region *reg,
+ 				     enum binding_kind kind)
+ {
+   symbolic_binding b (reg, kind);
+   if (symbolic_binding *existing = m_symbolic_binding_key_mgr.get (b))
+     return existing;
+ 
+   symbolic_binding *to_save = new symbolic_binding (b);
+   m_symbolic_binding_key_mgr.put (b, to_save);
+   return to_save;
+ }
+ 
+ /* class store.  */
+ 
+ /* store's default ctor.  */
+ 
+ store::store ()
+ : m_called_unknown_fn (false)
+ {
+ }
+ 
+ /* store's copy ctor.  */
+ 
+ store::store (const store &other)
+ : m_called_unknown_fn (other.m_called_unknown_fn)
+ {
+   for (cluster_map_t::iterator iter = other.m_cluster_map.begin ();
+        iter != other.m_cluster_map.end ();
+        ++iter)
+     {
+       const region *reg = (*iter).first;
+       gcc_assert (reg);
+       binding_cluster *c = (*iter).second;
+       gcc_assert (c);
+       m_cluster_map.put (reg, new binding_cluster (*c));
+     }
+ }
+ 
+ /* store's dtor.  */
+ 
+ store::~store ()
+ {
+   for (cluster_map_t::iterator iter = m_cluster_map.begin ();
+        iter != m_cluster_map.end ();
+        ++iter)
+     delete (*iter).second;
+ }
+ 
+ /* store's assignment operator.  */
+ 
+ store &
+ store::operator= (const store &other)
+ {
+   /* Delete existing cluster map.  */
+   for (cluster_map_t::iterator iter = m_cluster_map.begin ();
+        iter != m_cluster_map.end ();
+        ++iter)
+     delete (*iter).second;
+   m_cluster_map.empty ();
+ 
+   m_called_unknown_fn = other.m_called_unknown_fn;
+ 
+   for (cluster_map_t::iterator iter = other.m_cluster_map.begin ();
+        iter != other.m_cluster_map.end ();
+        ++iter)
+     {
+       const region *reg = (*iter).first;
+       gcc_assert (reg);
+       binding_cluster *c = (*iter).second;
+       gcc_assert (c);
+       m_cluster_map.put (reg, new binding_cluster (*c));
+     }
+   return *this;
+ }
+ 
+ /* store's equality operator.  */
+ 
+ bool
+ store::operator== (const store &other) const
+ {
+   if (m_called_unknown_fn != other.m_called_unknown_fn)
+     return false;
+ 
+   if (m_cluster_map.elements () != other.m_cluster_map.elements ())
+     return false;
+ 
+   for (cluster_map_t::iterator iter = m_cluster_map.begin ();
+        iter != m_cluster_map.end ();
+        ++iter)
+     {
+       const region *reg = (*iter).first;
+       binding_cluster *c = (*iter).second;
+       binding_cluster **other_slot
+ 	= const_cast <cluster_map_t &> (other.m_cluster_map).get (reg);
+       if (other_slot == NULL)
+ 	return false;
+       if (*c != **other_slot)
+ 	return false;
+     }
+ 
+   gcc_checking_assert (hash () == other.hash ());
+ 
+   return true;
+ }
+ 
+ /* Get a hash value for this store.  */
+ 
+ hashval_t
+ store::hash () const
+ {
+   hashval_t result = 0;
+   for (cluster_map_t::iterator iter = m_cluster_map.begin ();
+        iter != m_cluster_map.end ();
+        ++iter)
+     result ^= (*iter).second->hash ();
+   return result;
+ }
+ 
+ /* Populate OUT with a sorted list of parent regions for the regions in IN,
+    removing duplicate parents.  */
+ 
+ static void
+ get_sorted_parent_regions (auto_vec<const region *> *out,
+ 			   auto_vec<const region *> &in)
+ {
+   /* Get the set of parent regions.  */
+   hash_set<const region *> parent_regions;
+   const region *iter_reg;
+   unsigned i;
+   FOR_EACH_VEC_ELT (in, i, iter_reg)
+     {
+       const region *parent_reg = iter_reg->get_parent_region ();
+       gcc_assert (parent_reg);
+       parent_regions.add (parent_reg);
+     }
+ 
+   /* Write to OUT.  */
+   for (hash_set<const region *>::iterator iter = parent_regions.begin();
+        iter != parent_regions.end(); ++iter)
+     out->safe_push (*iter);
+ 
+   /* Sort OUT.  */
+   out->qsort (region::cmp_ptr_ptr);
+ }
+ 
+ /* Dump a representation of this store to PP, using SIMPLE to control how
+    svalues and regions are printed.
+    MGR is used for simplifying dumps if non-NULL, but can also be NULL
+    (to make it easier to use from the debugger).  */
+ 
+ void
+ store::dump_to_pp (pretty_printer *pp, bool simple, bool multiline,
+ 		   store_manager *mgr) const
+ {
+   /* Sort into some deterministic order.  */
+   auto_vec<const region *> base_regions;
+   for (cluster_map_t::iterator iter = m_cluster_map.begin ();
+        iter != m_cluster_map.end (); ++iter)
+     {
+       const region *base_reg = (*iter).first;
+       base_regions.safe_push (base_reg);
+     }
+   base_regions.qsort (region::cmp_ptr_ptr);
+ 
+   /* Gather clusters, organize by parent region, so that we can group
+      together locals, globals, etc.  */
+   auto_vec<const region *> parent_regions;
+   get_sorted_parent_regions (&parent_regions, base_regions);
+ 
+   const region *parent_reg;
+   unsigned i;
+   FOR_EACH_VEC_ELT (parent_regions, i, parent_reg)
+     {
+       gcc_assert (parent_reg);
+       pp_string (pp, "clusters within ");
+       parent_reg->dump_to_pp (pp, simple);
+       if (multiline)
+ 	pp_newline (pp);
+       else
+ 	pp_string (pp, " {");
+ 
+       const region *base_reg;
+       unsigned j;
+       FOR_EACH_VEC_ELT (base_regions, j, base_reg)
+ 	{
+ 	  /* This is O(N * M), but N ought to be small.  */
+ 	  if (base_reg->get_parent_region () != parent_reg)
+ 	    continue;
+ 	  binding_cluster *cluster
+ 	    = *const_cast<cluster_map_t &> (m_cluster_map).get (base_reg);
+ 	  if (!multiline)
+ 	    {
+ 	      if (j > 0)
+ 		pp_string (pp, ", ");
+ 	    }
+ 	  if (const svalue *sval = cluster->maybe_get_simple_value (mgr))
+ 	    {
+ 	      /* Special-case to simplify dumps for the common case where
+ 		 we just have one value directly bound to the whole of a
+ 		 region.  */
+ 	      if (multiline)
+ 		{
+ 		  pp_string (pp, "  cluster for: ");
+ 		  base_reg->dump_to_pp (pp, simple);
+ 		  pp_string (pp, ": ");
+ 		  sval->dump_to_pp (pp, simple);
+ 		  if (cluster->escaped_p ())
+ 		    pp_string (pp, " (ESCAPED)");
+ 		  if (cluster->touched_p ())
+ 		    pp_string (pp, " (TOUCHED)");
+ 		  pp_newline (pp);
+ 		}
+ 	      else
+ 		{
+ 		  pp_string (pp, "region: {");
+ 		  base_reg->dump_to_pp (pp, simple);
+ 		  pp_string (pp, ", value: ");
+ 		  sval->dump_to_pp (pp, simple);
+ 		  if (cluster->escaped_p ())
+ 		    pp_string (pp, " (ESCAPED)");
+ 		  if (cluster->touched_p ())
+ 		    pp_string (pp, " (TOUCHED)");
+ 		  pp_string (pp, "}");
+ 		}
+ 	    }
+ 	  else if (multiline)
+ 	    {
+ 	      pp_string (pp, "  cluster for: ");
+ 	      base_reg->dump_to_pp (pp, simple);
+ 	      pp_newline (pp);
+ 	      cluster->dump_to_pp (pp, simple, multiline);
+ 	    }
+ 	  else
+ 	    {
+ 	      pp_string (pp, "base region: {");
+ 	      base_reg->dump_to_pp (pp, simple);
+ 	      pp_string (pp, "} has cluster: {");
+ 	      cluster->dump_to_pp (pp, simple, multiline);
+ 	      pp_string (pp, "}");
+ 	    }
+ 	}
+       if (!multiline)
+ 	pp_string (pp, "}");
+     }
+   pp_printf (pp, "m_called_unknown_fn: %s",
+ 	     m_called_unknown_fn ? "TRUE" : "FALSE");
+   if (multiline)
+     pp_newline (pp);
+ }
+ 
+ /* Dump a multiline representation of this store to stderr.  */
+ 
+ DEBUG_FUNCTION void
+ store::dump (bool simple) const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+   pp_show_color (&pp) = pp_show_color (global_dc->printer);
+   pp.buffer->stream = stderr;
+   dump_to_pp (&pp, simple, true, NULL);
+   pp_newline (&pp);
+   pp_flush (&pp);
+ }
+ 
+ /* Return a new json::object of the form
+    {PARENT_REGION_DESC: {BASE_REGION_DESC: object for binding_map,
+ 			 ... for each cluster within parent region},
+     ...for each parent region,
+     "called_unknown_fn": true/false}.  */
+ 
+ json::object *
+ store::to_json () const
+ {
+   json::object *store_obj = new json::object ();
+ 
+   /* Sort into some deterministic order.  */
+   auto_vec<const region *> base_regions;
+   for (cluster_map_t::iterator iter = m_cluster_map.begin ();
+        iter != m_cluster_map.end (); ++iter)
+     {
+       const region *base_reg = (*iter).first;
+       base_regions.safe_push (base_reg);
+     }
+   base_regions.qsort (region::cmp_ptr_ptr);
+ 
+   /* Gather clusters, organize by parent region, so that we can group
+      together locals, globals, etc.  */
+   auto_vec<const region *> parent_regions;
+   get_sorted_parent_regions (&parent_regions, base_regions);
+ 
+   const region *parent_reg;
+   unsigned i;
+   FOR_EACH_VEC_ELT (parent_regions, i, parent_reg)
+     {
+       gcc_assert (parent_reg);
+ 
+       json::object *clusters_in_parent_reg_obj = new json::object ();
+ 
+       const region *base_reg;
+       unsigned j;
+       FOR_EACH_VEC_ELT (base_regions, j, base_reg)
+ 	{
+ 	  /* This is O(N * M), but N ought to be small.  */
+ 	  if (base_reg->get_parent_region () != parent_reg)
+ 	    continue;
+ 	  binding_cluster *cluster
+ 	    = *const_cast<cluster_map_t &> (m_cluster_map).get (base_reg);
+ 	  label_text base_reg_desc = base_reg->get_desc ();
+ 	  clusters_in_parent_reg_obj->set (base_reg_desc.m_buffer,
+ 					   cluster->to_json ());
+ 	  base_reg_desc.maybe_free ();
+ 	}
+       label_text parent_reg_desc = parent_reg->get_desc ();
+       store_obj->set (parent_reg_desc.m_buffer, clusters_in_parent_reg_obj);
+       parent_reg_desc.maybe_free ();
+     }
+ 
+   store_obj->set ("called_unknown_fn", new json::literal (m_called_unknown_fn));
+ 
+   return store_obj;
+ }
+ 
+ /* Get any svalue bound to REG, or NULL.  */
+ 
+ const svalue *
+ store::get_any_binding (store_manager *mgr, const region *reg) const
+ {
+   const region *base_reg = reg->get_base_region ();
+   binding_cluster **cluster_slot
+     = const_cast <cluster_map_t &> (m_cluster_map).get (base_reg);
+   if (!cluster_slot)
+     return NULL;
+   return (*cluster_slot)->get_any_binding (mgr, reg);
+ }
+ 
+ /* Set the value of LHS_REG to RHS_SVAL.  */
+ 
+ void
+ store::set_value (store_manager *mgr, const region *lhs_reg,
+ 		  const svalue *rhs_sval, enum binding_kind kind,
+ 		  uncertainty_t *uncertainty)
+ {
+   remove_overlapping_bindings (mgr, lhs_reg);
+ 
+   rhs_sval = simplify_for_binding (rhs_sval);
+ 
+   const region *lhs_base_reg = lhs_reg->get_base_region ();
+   binding_cluster *lhs_cluster;
+   if (lhs_base_reg->symbolic_for_unknown_ptr_p ())
+     {
+       /* Reject attempting to bind values into a symbolic region
+ 	 for an unknown ptr; merely invalidate values below.  */
+       lhs_cluster = NULL;
+ 
+       /* The LHS of the write is *UNKNOWN.  If the RHS is a pointer,
+ 	 then treat the region being pointed to as having escaped.  */
+       if (const region_svalue *ptr_sval = rhs_sval->dyn_cast_region_svalue ())
+ 	{
+ 	  const region *ptr_dst = ptr_sval->get_pointee ();
+ 	  const region *ptr_base_reg = ptr_dst->get_base_region ();
+ 	  mark_as_escaped (ptr_base_reg);
+ 	}
+     }
+   else
+     {
+       lhs_cluster = get_or_create_cluster (lhs_base_reg);
+       lhs_cluster->bind (mgr, lhs_reg, rhs_sval, kind);
+     }
+ 
+   /* Bindings to a cluster can affect other clusters if a symbolic
+      base region is involved.
+      Writes to concrete clusters can't affect other concrete clusters,
+      but can affect symbolic clusters.
+      Writes to symbolic clusters can affect both concrete and symbolic
+      clusters.
+      Invalidate our knowledge of other clusters that might have been
+      affected by the write.  */
+   for (cluster_map_t::iterator iter = m_cluster_map.begin ();
+        iter != m_cluster_map.end (); ++iter)
+     {
+       const region *iter_base_reg = (*iter).first;
+       binding_cluster *iter_cluster = (*iter).second;
+       if (iter_base_reg != lhs_base_reg
+ 	  && (lhs_cluster == NULL
+ 	      || lhs_cluster->symbolic_p ()
+ 	      || iter_cluster->symbolic_p ()))
+ 	{
+ 	  tristate t_alias = eval_alias (lhs_base_reg, iter_base_reg);
+ 	  switch (t_alias.get_value ())
+ 	    {
+ 	    default:
+ 	      gcc_unreachable ();
+ 
+ 	    case tristate::TS_UNKNOWN:
+ 	      iter_cluster->mark_region_as_unknown (mgr, iter_base_reg,
+ 						    uncertainty);
+ 	      break;
+ 
+ 	    case tristate::TS_TRUE:
+ 	      gcc_unreachable ();
+ 	      break;
+ 
+ 	    case tristate::TS_FALSE:
+ 	      /* If they can't be aliases, then don't invalidate this
+ 		 cluster.  */
+ 	      break;
+ 	    }
+ 	}
+     }
+ }
+ 
+ /* Determine if BASE_REG_A could be an alias of BASE_REG_B.  */
+ 
+ tristate
+ store::eval_alias (const region *base_reg_a,
+ 		   const region *base_reg_b) const
+ {
+   /* SSA names can't alias.  */
+   tree decl_a = base_reg_a->maybe_get_decl ();
+   if (decl_a && TREE_CODE (decl_a) == SSA_NAME)
+     return tristate::TS_FALSE;
+   tree decl_b = base_reg_b->maybe_get_decl ();
+   if (decl_b && TREE_CODE (decl_b) == SSA_NAME)
+     return tristate::TS_FALSE;
+ 
+   /* Try both ways, for symmetry.  */
+   tristate ts_ab = eval_alias_1 (base_reg_a, base_reg_b);
+   if (ts_ab.is_false ())
+     return tristate::TS_FALSE;
+   tristate ts_ba = eval_alias_1 (base_reg_b, base_reg_a);
+   if (ts_ba.is_false ())
+     return tristate::TS_FALSE;
+   return tristate::TS_UNKNOWN;
+ }
+ 
+ /* Half of store::eval_alias; called twice for symmetry.  */
+ 
+ tristate
+ store::eval_alias_1 (const region *base_reg_a,
+ 		     const region *base_reg_b) const
+ {
+   if (const symbolic_region *sym_reg_a
+       = base_reg_a->dyn_cast_symbolic_region ())
+     {
+       const svalue *sval_a = sym_reg_a->get_pointer ();
+       if (sval_a->get_kind () == SK_INITIAL)
+ 	if (tree decl_b = base_reg_b->maybe_get_decl ())
+ 	  if (!is_global_var (decl_b))
+ 	    {
+ 	      /* The initial value of a pointer can't point to a local.  */
+ 	      return tristate::TS_FALSE;
+ 	    }
+       if (sval_a->get_kind () == SK_INITIAL
+ 	  && base_reg_b->get_kind () == RK_HEAP_ALLOCATED)
+ 	{
+ 	  /* The initial value of a pointer can't point to a
+ 	     region that was allocated on the heap after the beginning of the
+ 	     path.  */
+ 	  return tristate::TS_FALSE;
+ 	}
+       if (const widening_svalue *widening_sval_a
+ 	  = sval_a->dyn_cast_widening_svalue ())
+ 	{
+ 	  const svalue *base = widening_sval_a->get_base_svalue ();
+ 	  if (const region_svalue *region_sval
+ 		= base->dyn_cast_region_svalue ())
+ 	    {
+ 	      const region *pointee = region_sval->get_pointee ();
+ 	      /* If we have sval_a is WIDENING(&REGION, OP), and
+ 		 B can't alias REGION, then B can't alias A either.
+ 		 For example, A might arise from
+ 		   for (ptr = &REGION; ...; ptr++)
+ 		 where sval_a is ptr in the 2nd iteration of the loop.
+ 		 We want to ensure that "*ptr" can only clobber things
+ 		 within REGION's base region.  */
+ 	      tristate ts = eval_alias (pointee->get_base_region (),
+ 					base_reg_b);
+ 	      if (ts.is_false ())
+ 		return tristate::TS_FALSE;
+ 	    }
+ 	}
+     }
+   return tristate::TS_UNKNOWN;
+ }
+ 
+ /* Remove all bindings overlapping REG within this store.  */
+ 
+ void
+ store::clobber_region (store_manager *mgr, const region *reg)
+ {
+   const region *base_reg = reg->get_base_region ();
+   binding_cluster **slot = m_cluster_map.get (base_reg);
+   if (!slot)
+     return;
+   binding_cluster *cluster = *slot;
+   cluster->clobber_region (mgr, reg);
+   if (cluster->redundant_p ())
+     {
+       delete cluster;
+       m_cluster_map.remove (base_reg);
+     }
+ }
+ 
+ /* Remove any bindings for REG within this store.  */
+ 
+ void
+ store::purge_region (store_manager *mgr, const region *reg)
+ {
+   const region *base_reg = reg->get_base_region ();
+   binding_cluster **slot = m_cluster_map.get (base_reg);
+   if (!slot)
+     return;
+   binding_cluster *cluster = *slot;
+   cluster->purge_region (mgr, reg);
+   if (cluster->redundant_p ())
+     {
+       delete cluster;
+       m_cluster_map.remove (base_reg);
+     }
+ }
+ 
+ /* Zero-fill REG.  */
+ 
+ void
+ store::zero_fill_region (store_manager *mgr, const region *reg)
+ {
+   const region *base_reg = reg->get_base_region ();
+   if (base_reg->symbolic_for_unknown_ptr_p ())
+     return;
+   binding_cluster *cluster = get_or_create_cluster (base_reg);
+   cluster->zero_fill_region (mgr, reg);
+ }
+ 
+ /* Mark REG as having unknown content.  */
+ 
+ void
+ store::mark_region_as_unknown (store_manager *mgr, const region *reg,
+ 			       uncertainty_t *uncertainty)
+ {
+   const region *base_reg = reg->get_base_region ();
+   if (base_reg->symbolic_for_unknown_ptr_p ())
+     return;
+   binding_cluster *cluster = get_or_create_cluster (base_reg);
+   cluster->mark_region_as_unknown (mgr, reg, uncertainty);
+ }
+ 
+ /* Get the cluster for BASE_REG, or NULL (const version).  */
+ 
+ const binding_cluster *
+ store::get_cluster (const region *base_reg) const
+ {
+   gcc_assert (base_reg);
+   gcc_assert (base_reg->get_base_region () == base_reg);
+   if (binding_cluster **slot
+ 	= const_cast <cluster_map_t &> (m_cluster_map).get (base_reg))
+     return *slot;
+   else
+     return NULL;
+ }
+ 
+ /* Get the cluster for BASE_REG, or NULL (non-const version).  */
+ 
+ binding_cluster *
+ store::get_cluster (const region *base_reg)
+ {
+   gcc_assert (base_reg);
+   gcc_assert (base_reg->get_base_region () == base_reg);
+   if (binding_cluster **slot = m_cluster_map.get (base_reg))
+     return *slot;
+   else
+     return NULL;
+ }
+ 
+ /* Get the cluster for BASE_REG, creating it if doesn't already exist.  */
+ 
+ binding_cluster *
+ store::get_or_create_cluster (const region *base_reg)
+ {
+   gcc_assert (base_reg);
+   gcc_assert (base_reg->get_base_region () == base_reg);
+ 
+   /* We shouldn't create clusters for dereferencing an UNKNOWN ptr.  */
+   gcc_assert (!base_reg->symbolic_for_unknown_ptr_p ());
+ 
+   if (binding_cluster **slot = m_cluster_map.get (base_reg))
+     return *slot;
+ 
+   binding_cluster *cluster = new binding_cluster (base_reg);
+   m_cluster_map.put (base_reg, cluster);
+ 
+   return cluster;
+ }
+ 
+ /* Remove any cluster for BASE_REG, for use by
+    region_model::unbind_region_and_descendents
+    when popping stack frames and handling deleted heap regions.  */
+ 
+ void
+ store::purge_cluster (const region *base_reg)
+ {
+   gcc_assert (base_reg->get_base_region () == base_reg);
+   binding_cluster **slot = m_cluster_map.get (base_reg);
+   if (!slot)
+     return;
+   binding_cluster *cluster = *slot;
+   delete cluster;
+   m_cluster_map.remove (base_reg);
+ }
+ 
+ /* Attempt to merge STORE_A and STORE_B into OUT_STORE.
+    Return true if successful, or false if the stores can't be merged.  */
+ 
+ bool
+ store::can_merge_p (const store *store_a, const store *store_b,
+ 		    store *out_store, store_manager *mgr,
+ 		    model_merger *merger)
+ {
+   if (store_a->m_called_unknown_fn || store_b->m_called_unknown_fn)
+     out_store->m_called_unknown_fn = true;
+ 
+   /* Get the union of all base regions for STORE_A and STORE_B.  */
+   hash_set<const region *> base_regions;
+   for (cluster_map_t::iterator iter_a = store_a->m_cluster_map.begin ();
+        iter_a != store_a->m_cluster_map.end (); ++iter_a)
+     {
+       const region *base_reg_a = (*iter_a).first;
+       base_regions.add (base_reg_a);
+     }
+   for (cluster_map_t::iterator iter_b = store_b->m_cluster_map.begin ();
+        iter_b != store_b->m_cluster_map.end (); ++iter_b)
+     {
+       const region *base_reg_b = (*iter_b).first;
+       base_regions.add (base_reg_b);
+     }
+ 
+   /* Sort the base regions before considering them.  This ought not to
+      affect the results, but can affect which types UNKNOWN_REGIONs are
+      created for in a run; sorting them thus avoids minor differences
+      in logfiles.  */
+   auto_vec<const region *> vec_base_regions (base_regions.elements ());
+   for (hash_set<const region *>::iterator iter = base_regions.begin ();
+        iter != base_regions.end (); ++iter)
+     vec_base_regions.quick_push (*iter);
+   vec_base_regions.qsort (region::cmp_ptr_ptr);
+   unsigned i;
+   const region *base_reg;
+   FOR_EACH_VEC_ELT (vec_base_regions, i, base_reg)
+     {
+       const binding_cluster *cluster_a = store_a->get_cluster (base_reg);
+       const binding_cluster *cluster_b = store_b->get_cluster (base_reg);
+       /* At least one of cluster_a and cluster_b must be non-NULL.  */
+       binding_cluster *out_cluster
+ 	= out_store->get_or_create_cluster (base_reg);
+       if (!binding_cluster::can_merge_p (cluster_a, cluster_b,
+ 					 out_cluster, out_store, mgr, merger))
+ 	return false;
+     }
+   return true;
+ }
+ 
+ /* Mark the cluster for BASE_REG as having escaped.
+    For use when handling an unrecognized function call, and
+    for params to "top-level" calls.
+    Further unknown function calls could touch it, even if the cluster
+    isn't reachable from args of those calls.  */
+ 
+ void
+ store::mark_as_escaped (const region *base_reg)
+ {
+   gcc_assert (base_reg);
+   gcc_assert (base_reg->get_base_region () == base_reg);
+ 
+   if (base_reg->symbolic_for_unknown_ptr_p ())
+     return;
+ 
+   binding_cluster *cluster = get_or_create_cluster (base_reg);
+   cluster->mark_as_escaped ();
+ }
+ 
+ /* Handle an unknown fncall by updating any clusters that have escaped
+    (either in this fncall, or in a prior one).  */
+ 
+ void
+ store::on_unknown_fncall (const gcall *call, store_manager *mgr)
+ {
+   m_called_unknown_fn = true;
+ 
+   for (cluster_map_t::iterator iter = m_cluster_map.begin ();
+        iter != m_cluster_map.end (); ++iter)
+     (*iter).second->on_unknown_fncall (call, mgr);
+ }
+ 
+ /* Return true if a non-const pointer to BASE_REG (or something within it)
+    has escaped to code outside of the TU being analyzed.  */
+ 
+ bool
+ store::escaped_p (const region *base_reg) const
+ {
+   gcc_assert (base_reg);
+   gcc_assert (base_reg->get_base_region () == base_reg);
+ 
+   if (binding_cluster **cluster_slot
+       = const_cast <cluster_map_t &>(m_cluster_map).get (base_reg))
+     return (*cluster_slot)->escaped_p ();
+   return false;
+ }
+ 
+ /* Populate OUT_PVS with a list of path_vars for describing SVAL based on
+    this store, using VISITED to ensure the traversal terminates.  */
+ 
+ void
+ store::get_representative_path_vars (const region_model *model,
+ 				     svalue_set *visited,
+ 				     const svalue *sval,
+ 				     auto_vec<path_var> *out_pvs) const
+ {
+   gcc_assert (sval);
+ 
+   /* Find all bindings that reference SVAL.  */
+   for (cluster_map_t::iterator iter = m_cluster_map.begin ();
+        iter != m_cluster_map.end (); ++iter)
+     {
+       const region *base_reg = (*iter).first;
+       binding_cluster *cluster = (*iter).second;
+       cluster->get_representative_path_vars (model, visited, base_reg, sval,
+ 					     out_pvs);
+     }
+ 
+   if (const initial_svalue *init_sval = sval->dyn_cast_initial_svalue ())
+     {
+       const region *reg = init_sval->get_region ();
+       if (path_var pv = model->get_representative_path_var (reg,
+ 							    visited))
+ 	out_pvs->safe_push (pv);
+     }
+ }
+ 
+ /* Remove all bindings overlapping REG within this store, removing
+    any clusters that become redundant.  */
+ 
+ void
+ store::remove_overlapping_bindings (store_manager *mgr, const region *reg)
+ {
+   const region *base_reg = reg->get_base_region ();
+   if (binding_cluster **cluster_slot = m_cluster_map.get (base_reg))
+     {
+       binding_cluster *cluster = *cluster_slot;
+       if (reg == base_reg && !escaped_p (base_reg))
+ 	{
+ 	  /* Remove whole cluster.  */
+ 	  m_cluster_map.remove (base_reg);
+ 	  delete cluster;
+ 	  return;
+ 	}
+       cluster->remove_overlapping_bindings (mgr, reg, NULL);
+     }
+ }
+ 
+ /* Subclass of visitor that accumulates a hash_set of the regions that
+    were visited.  */
+ 
+ struct region_finder : public visitor
+ {
+   void visit_region (const region *reg) FINAL OVERRIDE
+   {
+     m_regs.add (reg);
+   }
+ 
+   hash_set<const region *> m_regs;
+ };
+ 
+ /* Canonicalize this store, to maximize the chance of equality between
+    instances.  */
+ 
+ void
+ store::canonicalize (store_manager *mgr)
+ {
+   /* If we have e.g.:
+          cluster for: HEAP_ALLOCATED_REGION(543)
+            ESCAPED
+            TOUCHED
+      where the heap region is empty and unreferenced, then purge that
+      cluster, to avoid unbounded state chains involving these.  */
+ 
+   /* Find regions that are referenced by bound values in the store.  */
+   region_finder s;
+   for (cluster_map_t::iterator iter = m_cluster_map.begin ();
+        iter != m_cluster_map.end (); ++iter)
+     {
+       binding_cluster *cluster = (*iter).second;
+       for (binding_cluster::iterator_t bind_iter = cluster->m_map.begin ();
+ 	   bind_iter != cluster->m_map.end (); ++bind_iter)
+ 	(*bind_iter).second->accept (&s);
+     }
+ 
+   /* Locate heap-allocated regions that have empty bindings that weren't
+      found above.  */
+   hash_set<const region *> purgeable_regions;
+   for (cluster_map_t::iterator iter = m_cluster_map.begin ();
+        iter != m_cluster_map.end (); ++iter)
+     {
+       const region *base_reg = (*iter).first;
+       binding_cluster *cluster = (*iter).second;
+       if (base_reg->get_kind () == RK_HEAP_ALLOCATED)
+ 	{
+ 	  if (cluster->empty_p ())
+ 	    if (!s.m_regs.contains (base_reg))
+ 	      purgeable_regions.add (base_reg);
+ 
+ 	  /* Also cover the UNKNOWN case.  */
+ 	  if (const svalue *sval = cluster->maybe_get_simple_value (mgr))
+ 	    if (sval->get_kind () == SK_UNKNOWN)
+ 	      if (!s.m_regs.contains (base_reg))
+ 		purgeable_regions.add (base_reg);
+ 	}
+     }
+ 
+   /* Purge them.  */
+   for (hash_set<const region *>::iterator iter = purgeable_regions.begin ();
+        iter != purgeable_regions.end (); ++iter)
+     {
+       const region *base_reg = *iter;
+       purge_cluster (base_reg);
+     }
+ }
+ 
+ /* Subroutine for use by exploded_path::feasible_p.
+ 
+    We need to deal with state differences between:
+    (a) when the exploded_graph is being initially constructed and
+    (b) when replaying the state changes along a specific path in
+    in exploded_path::feasible_p.
+ 
+    In (a), state merging happens, so when exploring a loop
+      for (i = 0; i < 1024; i++)
+    on successive iterations we have i == 0, then i == WIDENING.
+ 
+    In (b), no state merging happens, so naively replaying the path
+    that goes twice through the loop then exits it
+    would lead to i == 0, then i == 1, and then a (i >= 1024) eedge
+    that exits the loop, which would be found to be infeasible as i == 1,
+    and the path would be rejected.
+ 
+    We need to fix up state during replay.  This subroutine is
+    called whenever we enter a supernode that we've already
+    visited along this exploded_path, passing in OTHER_STORE
+    from the destination enode's state.
+ 
+    Find bindings to widening values in OTHER_STORE.
+    For all that are found, update the binding in this store to UNKNOWN.  */
+ 
+ void
+ store::loop_replay_fixup (const store *other_store,
+ 			  region_model_manager *mgr)
+ {
+   gcc_assert (other_store);
+   for (cluster_map_t::iterator iter = other_store->m_cluster_map.begin ();
+        iter != other_store->m_cluster_map.end (); ++iter)
+     {
+       const region *base_reg = (*iter).first;
+       binding_cluster *cluster = (*iter).second;
+       for (binding_cluster::iterator_t bind_iter = cluster->m_map.begin ();
+ 	   bind_iter != cluster->m_map.end (); ++bind_iter)
+ 	{
+ 	  const binding_key *key = (*bind_iter).first;
+ 	  const svalue *sval = (*bind_iter).second;
+ 	  if (sval->get_kind () == SK_WIDENING)
+ 	    {
+ 	      binding_cluster *this_cluster
+ 		= get_or_create_cluster (base_reg);
+ 	      const svalue *unknown
+ 		= mgr->get_or_create_unknown_svalue (sval->get_type ());
+ 	      this_cluster->bind_key (key, unknown);
+ 	    }
+ 	}
+     }
+ }
+ 
+ #if CHECKING_P
+ 
+ namespace selftest {
+ 
+ /* Implementation detail of ASSERT_OVERLAP.  */
+ 
+ static void
+ assert_overlap (const location &loc,
+ 		const concrete_binding *b1,
+ 		const concrete_binding *b2)
+ {
+   ASSERT_TRUE_AT (loc, b1->overlaps_p (*b2));
+   ASSERT_TRUE_AT (loc, b2->overlaps_p (*b1));
+ }
+ 
+ /* Implementation detail of ASSERT_DISJOINT.  */
+ 
+ static void
+ assert_disjoint (const location &loc,
+ 		 const concrete_binding *b1,
+ 		 const concrete_binding *b2)
+ {
+   ASSERT_FALSE_AT (loc, b1->overlaps_p (*b2));
+   ASSERT_FALSE_AT (loc, b2->overlaps_p (*b1));
+ }
+ 
+ /* Assert that B1 and B2 overlap, checking both ways.  */
+ 
+ #define ASSERT_OVERLAP(B1, B2) \
+   SELFTEST_BEGIN_STMT				\
+   assert_overlap (SELFTEST_LOCATION, B1, B2);	\
+   SELFTEST_END_STMT
+ 
+ /* Assert that B1 and B2 do not overlap, checking both ways.  */
+ 
+ #define ASSERT_DISJOINT(B1, B2) \
+   SELFTEST_BEGIN_STMT				\
+   assert_disjoint (SELFTEST_LOCATION, B1, B2);  \
+   SELFTEST_END_STMT
+ 
+ /* Verify that concrete_binding::overlaps_p works as expected.  */
+ 
+ static void
+ test_binding_key_overlap ()
+ {
+   store_manager mgr (NULL);
+ 
+   /* Various 8-bit bindings.  */
+   const concrete_binding *cb_0_7
+     = mgr.get_concrete_binding (0, 8, BK_direct);
+   const concrete_binding *cb_8_15
+     = mgr.get_concrete_binding (8, 8, BK_direct);
+   const concrete_binding *cb_16_23
+     = mgr.get_concrete_binding (16, 8, BK_direct);
+   const concrete_binding *cb_24_31
+     = mgr.get_concrete_binding (24, 8, BK_direct);
+ 
+   /* 16-bit bindings.  */
+   const concrete_binding *cb_0_15
+     = mgr.get_concrete_binding (0, 16, BK_direct);
+   const concrete_binding *cb_8_23
+     = mgr.get_concrete_binding (8, 16, BK_direct);
+   const concrete_binding *cb_16_31
+     = mgr.get_concrete_binding (16, 16, BK_direct);
+ 
+   /* 32-bit binding.  */
+   const concrete_binding *cb_0_31
+     = mgr.get_concrete_binding (0, 32, BK_direct);
+ 
+   /* Everything should self-overlap.  */
+   ASSERT_OVERLAP (cb_0_7, cb_0_7);
+   ASSERT_OVERLAP (cb_8_15, cb_8_15);
+   ASSERT_OVERLAP (cb_16_23, cb_16_23);
+   ASSERT_OVERLAP (cb_24_31, cb_24_31);
+   ASSERT_OVERLAP (cb_0_15, cb_0_15);
+   ASSERT_OVERLAP (cb_8_23, cb_8_23);
+   ASSERT_OVERLAP (cb_16_31, cb_16_31);
+   ASSERT_OVERLAP (cb_0_31, cb_0_31);
+ 
+   /* Verify the 8-bit bindings that don't overlap each other.  */
+   ASSERT_DISJOINT (cb_0_7, cb_8_15);
+   ASSERT_DISJOINT (cb_8_15, cb_16_23);
+ 
+   /* Check for overlap of differently-sized bindings.  */
+   ASSERT_OVERLAP (cb_0_7, cb_0_31);
+   /* ...and with differing start points.  */
+   ASSERT_OVERLAP (cb_8_15, cb_0_31);
+   ASSERT_DISJOINT (cb_8_15, cb_16_31);
+   ASSERT_OVERLAP (cb_16_23, cb_0_31);
+   ASSERT_OVERLAP (cb_16_31, cb_0_31);
+ 
+   ASSERT_DISJOINT (cb_0_7, cb_8_23);
+   ASSERT_OVERLAP (cb_8_23, cb_16_23);
+   ASSERT_OVERLAP (cb_8_23, cb_16_31);
+   ASSERT_DISJOINT (cb_8_23, cb_24_31);
+ }
+ 
+ /* Run all of the selftests within this file.  */
+ 
+ void
+ analyzer_store_cc_tests ()
+ {
+   test_binding_key_overlap ();
+ }
+ 
+ } // namespace selftest
+ 
+ #endif /* CHECKING_P */
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/store.h gcc-11.1.0/gcc/analyzer/store.h
*** gcc-10.3.0/gcc/analyzer/store.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/analyzer/store.h	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,724 ----
+ /* Classes for modeling the state of memory.
+    Copyright (C) 2020-2021 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.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/>.  */
+ 
+ #ifndef GCC_ANALYZER_STORE_H
+ #define GCC_ANALYZER_STORE_H
+ 
+ /* Implementation of the region-based ternary model described in:
+      "A Memory Model for Static Analysis of C Programs"
+       (Zhongxing Xu, Ted Kremenek, and Jian Zhang)
+      http://lcs.ios.ac.cn/~xuzb/canalyze/memmodel.pdf  */
+ 
+ /* The store models memory as a collection of "clusters", where regions
+    are partitioned into clusters via their base region.
+ 
+    For example, given:
+      int a, b, c;
+      struct coord { double x; double y; } verts[3];
+    then "verts[0].y" and "verts[1].x" both have "verts" as their base region.
+    Each of a, b, c, and verts will have their own clusters, so that we
+    know that writes to e.g. "verts[1].x".don't affect e.g. "a".
+ 
+    Within each cluster we store a map of bindings to values, where the
+    binding keys can be either concrete or symbolic.
+ 
+    Concrete bindings affect a specific range of bits relative to the start
+    of the base region of the cluster, whereas symbolic bindings affect
+    a specific subregion within the cluster.
+ 
+    Consider (from the symbolic-1.c testcase):
+ 
+      char arr[1024];
+      arr[2] = a;  (1)
+      arr[3] = b;  (2)
+        After (1) and (2), the cluster for "arr" has concrete bindings
+        for bits 16-23 and for bits 24-31, with svalues "INIT_VAL(a)"
+        and "INIT_VAL(b)" respectively:
+        cluster: {bits 16-23: "INIT_VAL(a)",
+                  bits 24-31: "INIT_VAL(b)";
+                  flags: {}}
+        Attempting to query unbound subregions e.g. arr[4] will
+        return "UNINITIALIZED".
+        "a" and "b" are each in their own clusters, with no explicit
+        bindings, and thus implicitly have value INIT_VAL(a) and INIT_VAL(b).
+ 
+      arr[3] = c;  (3)
+        After (3), the concrete binding for bits 24-31 is replaced with the
+        svalue "INIT_VAL(c)":
+        cluster: {bits 16-23: "INIT_VAL(a)",  (from before)
+                  bits 24-31: "INIT_VAL(c)";  (updated)
+                  flags: {}}
+ 
+      arr[i] = d;  (4)
+        After (4), we lose the concrete bindings and replace them with a
+        symbolic binding for "arr[i]", with svalue "INIT_VAL(d)".  We also
+        mark the cluster as having been "symbolically touched": future
+        attempts to query the values of subregions other than "arr[i]",
+        such as "arr[3]" are "UNKNOWN", since we don't know if the write
+        to arr[i] affected them.
+        cluster: {symbolic_key(arr[i]): "INIT_VAL(d)";
+                  flags: {TOUCHED}}
+ 
+      arr[j] = e;  (5)
+        After (5), we lose the symbolic binding for "arr[i]" since we could
+        have overwritten it, and add a symbolic binding for "arr[j]".
+        cluster: {symbolic_key(arr[j]): "INIT_VAL(d)"; (different symbolic
+                  flags: {TOUCHED}}                     binding)
+ 
+      arr[3] = f;  (6)
+        After (6), we lose the symbolic binding for "arr[j]" since we could
+        have overwritten it, and gain a concrete binding for bits 24-31
+        again, this time with svalue "INIT_VAL(e)":
+        cluster: {bits 24-31: "INIT_VAL(d)";
+                  flags: {TOUCHED}}
+        The cluster is still flagged as touched, so that we know that
+        accesses to other elements are "UNKNOWN" rather than
+        "UNINITIALIZED".
+ 
+    Handling symbolic regions requires us to handle aliasing.
+ 
+    In the first example above, each of a, b, c and verts are non-symbolic
+    base regions and so their clusters are "concrete clusters", whereas given:
+        struct coord *p, *q;
+    then "*p" and "*q" are symbolic base regions, and thus "*p" and "*q"
+    have "symbolic clusters".
+ 
+    In the above, "verts[i].x" will have a symbolic *binding* within a
+    concrete cluster for "verts", whereas "*p" is a symbolic *cluster*.
+ 
+    Writes to concrete clusters can't affect other concrete clusters,
+    but can affect symbolic clusters; e.g. after:
+        verts[0].x = 42;
+    we bind 42 in the cluster for "verts", but the clusters for "b" and "c"
+    can't be affected.  Any symbolic clusters for *p and for *q can be
+    affected, *p and *q could alias verts.
+ 
+    Writes to a symbolic cluster can affect other clusters, both
+    concrete and symbolic; e.g. after:
+        p->x = 17;
+    we bind 17 within the cluster for "*p".  The concrete clusters for a, b,
+    c, and verts could be affected, depending on whether *p aliases them.
+    Similarly, the symbolic cluster to *q could be affected.  */
+ 
+ namespace ana {
+ 
+ /* A class for keeping track of aspects of a program_state that we don't
+    know about, to avoid false positives about leaks.
+ 
+    Consider:
+ 
+       p->field = malloc (1024);
+       q->field = NULL;
+ 
+    where we don't know whether or not p and q point to the same memory,
+    and:
+ 
+       p->field = malloc (1024);
+       unknown_fn (p);
+ 
+    In both cases, the svalue for the address of the allocated buffer
+    goes from being bound to p->field to not having anything explicitly bound
+    to it.
+ 
+    Given that we conservatively discard bindings due to possible aliasing or
+    calls to unknown function, the store loses references to svalues,
+    but these svalues could still be live.  We don't want to warn about
+    them leaking - they're effectively in a "maybe live" state.
+ 
+    This "maybe live" information is somewhat transient.
+ 
+    We don't want to store this "maybe live" information in the program_state,
+    region_model, or store, since we don't want to bloat these objects (and
+    potentially bloat the exploded_graph with more nodes).
+    However, we can't store it in the region_model_context, as these context
+    objects sometimes don't last long enough to be around when comparing the
+    old vs the new state.
+ 
+    This class is a way to track a set of such svalues, so that we can
+    temporarily capture that they are in a "maybe live" state whilst
+    comparing old and new states.  */
+ 
+ class uncertainty_t
+ {
+ public:
+   typedef hash_set<const svalue *>::iterator iterator;
+ 
+   void on_maybe_bound_sval (const svalue *sval)
+   {
+     m_maybe_bound_svals.add (sval);
+   }
+   void on_mutable_sval_at_unknown_call (const svalue *sval)
+   {
+     m_mutable_at_unknown_call_svals.add (sval);
+   }
+ 
+   bool unknown_sm_state_p (const svalue *sval)
+   {
+     return (m_maybe_bound_svals.contains (sval)
+ 	    || m_mutable_at_unknown_call_svals.contains (sval));
+   }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const;
+   void dump (bool simple) const;
+ 
+   iterator begin_maybe_bound_svals () const
+   {
+     return m_maybe_bound_svals.begin ();
+   }
+   iterator end_maybe_bound_svals () const
+   {
+     return m_maybe_bound_svals.end ();
+   }
+ 
+ private:
+ 
+   /* svalues that might or might not still be bound.  */
+   hash_set<const svalue *> m_maybe_bound_svals;
+ 
+   /* svalues that have mutable sm-state at unknown calls.  */
+   hash_set<const svalue *> m_mutable_at_unknown_call_svals;
+ };
+ 
+ class concrete_binding;
+ 
+ /* An enum for discriminating between "direct" vs "default" levels of
+    mapping.  */
+ 
+ enum binding_kind
+ {
+   /* Special-case value for hash support.
+      This is the initial entry, so that hash traits can have
+      empty_zero_p = true.  */
+   BK_empty = 0,
+ 
+   /* Special-case value for hash support.  */
+   BK_deleted,
+ 
+   /* The normal kind of mapping.  */
+   BK_direct,
+ 
+   /* A lower-priority kind of mapping, for use when inheriting
+      default values from a parent region.  */
+   BK_default
+ };
+ 
+ extern const char *binding_kind_to_string (enum binding_kind kind);
+ 
+ /* Abstract base class for describing ranges of bits within a binding_map
+    that can have svalues bound to them.  */
+ 
+ class binding_key
+ {
+ public:
+   virtual ~binding_key () {}
+   virtual bool concrete_p () const = 0;
+   bool symbolic_p () const { return !concrete_p (); }
+ 
+   static const binding_key *make (store_manager *mgr, const region *r,
+ 				   enum binding_kind kind);
+ 
+   virtual void dump_to_pp (pretty_printer *pp, bool simple) const;
+   void dump (bool simple) const;
+   label_text get_desc (bool simple=true) const;
+ 
+   static int cmp_ptrs (const void *, const void *);
+   static int cmp (const binding_key *, const binding_key *);
+ 
+   virtual const concrete_binding *dyn_cast_concrete_binding () const
+   { return NULL; }
+ 
+   enum binding_kind get_kind () const { return m_kind; }
+ 
+   void mark_deleted () { m_kind = BK_deleted; }
+   void mark_empty () { m_kind = BK_empty; }
+   bool is_deleted () const { return m_kind == BK_deleted; }
+   bool is_empty () const { return m_kind == BK_empty; }
+ 
+ protected:
+   binding_key (enum binding_kind kind) : m_kind (kind) {}
+ 
+   hashval_t impl_hash () const
+   {
+     return m_kind;
+   }
+   bool impl_eq (const binding_key &other) const
+   {
+     return m_kind == other.m_kind;
+   }
+ 
+ private:
+   enum binding_kind m_kind;
+ };
+ 
+ /* Concrete subclass of binding_key, for describing a concrete range of
+    bits within the binding_map (e.g. "bits 8-15").  */
+ 
+ class concrete_binding : public binding_key
+ {
+ public:
+   /* This class is its own key for the purposes of consolidation.  */
+   typedef concrete_binding key_t;
+ 
+   concrete_binding (bit_offset_t start_bit_offset, bit_size_t size_in_bits,
+ 		    enum binding_kind kind)
+   : binding_key (kind),
+     m_start_bit_offset (start_bit_offset),
+     m_size_in_bits (size_in_bits)
+   {}
+   bool concrete_p () const FINAL OVERRIDE { return true; }
+ 
+   hashval_t hash () const
+   {
+     inchash::hash hstate;
+     hstate.add_wide_int (m_start_bit_offset);
+     hstate.add_wide_int (m_size_in_bits);
+     return hstate.end () ^ binding_key::impl_hash ();
+   }
+   bool operator== (const concrete_binding &other) const
+   {
+     if (!binding_key::impl_eq (other))
+       return false;
+     return (m_start_bit_offset == other.m_start_bit_offset
+ 	    && m_size_in_bits == other.m_size_in_bits);
+   }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+ 
+   const concrete_binding *dyn_cast_concrete_binding () const FINAL OVERRIDE
+   { return this; }
+ 
+   bit_offset_t get_start_bit_offset () const { return m_start_bit_offset; }
+   bit_size_t get_size_in_bits () const { return m_size_in_bits; }
+   /* Return the next bit offset after the end of this binding.  */
+   bit_offset_t get_next_bit_offset () const
+   {
+     return m_start_bit_offset + m_size_in_bits;
+   }
+ 
+   bool overlaps_p (const concrete_binding &other) const;
+ 
+   static int cmp_ptr_ptr (const void *, const void *);
+ 
+ private:
+   bit_offset_t m_start_bit_offset;
+   bit_size_t m_size_in_bits;
+ };
+ 
+ } // namespace ana
+ 
+ template <> struct default_hash_traits<ana::concrete_binding>
+ : public member_function_hash_traits<ana::concrete_binding>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ namespace ana {
+ 
+ /* Concrete subclass of binding_key, for describing a symbolic set of
+    bits within the binding_map in terms of a region (e.g. "arr[i]").  */
+ 
+ class symbolic_binding : public binding_key
+ {
+ public:
+   /* This class is its own key for the purposes of consolidation.  */
+   typedef symbolic_binding key_t;
+ 
+   symbolic_binding (const region *region, enum binding_kind kind)
+   : binding_key (kind),
+     m_region (region)
+   {}
+   bool concrete_p () const FINAL OVERRIDE { return false; }
+ 
+   hashval_t hash () const
+   {
+     return (binding_key::impl_hash () ^ (intptr_t)m_region);
+   }
+   bool operator== (const symbolic_binding &other) const
+   {
+     if (!binding_key::impl_eq (other))
+       return false;
+     return (m_region == other.m_region);
+   }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+ 
+   const region *get_region () const { return m_region; }
+ 
+   static int cmp_ptr_ptr (const void *, const void *);
+ 
+ private:
+   const region *m_region;
+ };
+ 
+ } // namespace ana
+ 
+ template <> struct default_hash_traits<ana::symbolic_binding>
+ : public member_function_hash_traits<ana::symbolic_binding>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ namespace ana {
+ 
+ /* A mapping from binding_keys to svalues, for use by binding_cluster
+    and compound_svalue.  */
+ 
+ class binding_map
+ {
+ public:
+   typedef hash_map <const binding_key *, const svalue *> map_t;
+   typedef map_t::iterator iterator_t;
+ 
+   binding_map () : m_map () {}
+   binding_map (const binding_map &other);
+   binding_map& operator=(const binding_map &other);
+ 
+   bool operator== (const binding_map &other) const;
+   bool operator!= (const binding_map &other) const
+   {
+     return !(*this == other);
+   }
+ 
+   hashval_t hash () const;
+ 
+   const svalue *get (const binding_key *key) const
+   {
+     const svalue **slot = const_cast<map_t &> (m_map).get (key);
+     if (slot)
+       return *slot;
+     else
+       return NULL;
+   }
+   bool put (const binding_key *k, const svalue *v)
+   {
+     gcc_assert (v);
+     return m_map.put (k, v);
+   }
+ 
+   void remove (const binding_key *k) { m_map.remove (k); }
+   void empty () { m_map.empty (); }
+ 
+   iterator_t begin () const { return m_map.begin (); }
+   iterator_t end () const { return m_map.end (); }
+   size_t elements () const { return m_map.elements (); }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple, bool multiline) const;
+   void dump (bool simple) const;
+ 
+   json::object *to_json () const;
+ 
+   bool apply_ctor_to_region (const region *parent_reg, tree ctor,
+ 			     region_model_manager *mgr);
+ 
+   static int cmp (const binding_map &map1, const binding_map &map2);
+ 
+ private:
+   bool apply_ctor_val_to_range (const region *parent_reg,
+ 				region_model_manager *mgr,
+ 				tree min_index, tree max_index,
+ 				tree val);
+   bool apply_ctor_pair_to_child_region (const region *parent_reg,
+ 					region_model_manager *mgr,
+ 					tree index, tree val);
+ 
+   map_t m_map;
+ };
+ 
+ /* Concept: BindingVisitor, for use by binding_cluster::for_each_binding
+    and store::for_each_binding.
+ 
+    Should implement:
+      void on_binding (const binding_key *key, const svalue *&sval);
+ */
+ 
+ /* All of the bindings within a store for regions that share the same
+    base region.  */
+ 
+ class binding_cluster
+ {
+ public:
+   friend class store;
+ 
+   typedef hash_map <const binding_key *, const svalue *> map_t;
+   typedef map_t::iterator iterator_t;
+ 
+   binding_cluster (const region *base_region)
+   : m_base_region (base_region), m_map (),
+     m_escaped (false), m_touched (false) {}
+   binding_cluster (const binding_cluster &other);
+   binding_cluster& operator=(const binding_cluster &other);
+ 
+   bool operator== (const binding_cluster &other) const;
+   bool operator!= (const binding_cluster &other) const
+   {
+     return !(*this == other);
+   }
+ 
+   hashval_t hash () const;
+ 
+   bool symbolic_p () const;
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple, bool multiline) const;
+   void dump (bool simple) const;
+ 
+   json::object *to_json () const;
+ 
+   void bind (store_manager *mgr, const region *, const svalue *,
+ 	     binding_kind kind);
+ 
+   void clobber_region (store_manager *mgr, const region *reg);
+   void purge_region (store_manager *mgr, const region *reg);
+   void zero_fill_region (store_manager *mgr, const region *reg);
+   void mark_region_as_unknown (store_manager *mgr, const region *reg,
+ 			       uncertainty_t *uncertainty);
+ 
+   const svalue *get_binding (store_manager *mgr, const region *reg,
+ 			      binding_kind kind) const;
+   const svalue *get_binding_recursive (store_manager *mgr,
+ 					const region *reg,
+ 					enum binding_kind kind) const;
+   const svalue *get_any_binding (store_manager *mgr,
+ 				  const region *reg) const;
+   const svalue *maybe_get_compound_binding (store_manager *mgr,
+ 					     const region *reg) const;
+ 
+   void remove_overlapping_bindings (store_manager *mgr, const region *reg,
+ 				    uncertainty_t *uncertainty);
+ 
+   template <typename T>
+   void for_each_value (void (*cb) (const svalue *sval, T user_data),
+ 		       T user_data) const
+   {
+     for (map_t::iterator iter = m_map.begin (); iter != m_map.end (); ++iter)
+       cb ((*iter).second, user_data);
+   }
+ 
+   static bool can_merge_p (const binding_cluster *cluster_a,
+ 			   const binding_cluster *cluster_b,
+ 			   binding_cluster *out_cluster,
+ 			   store *out_store,
+ 			   store_manager *mgr,
+ 			   model_merger *merger);
+   void make_unknown_relative_to (const binding_cluster *other_cluster,
+ 				 store *out_store,
+ 				 store_manager *mgr);
+ 
+   void mark_as_escaped ();
+   void on_unknown_fncall (const gcall *call, store_manager *mgr);
+ 
+   bool escaped_p () const { return m_escaped; }
+   bool touched_p () const { return m_touched; }
+ 
+   bool redundant_p () const;
+   bool empty_p () const { return m_map.elements () == 0; }
+ 
+   void get_representative_path_vars (const region_model *model,
+ 				     svalue_set *visited,
+ 				     const region *base_reg,
+ 				     const svalue *sval,
+ 				     auto_vec<path_var> *out_pvs) const;
+ 
+   const svalue *maybe_get_simple_value (store_manager *mgr) const;
+ 
+   template <typename BindingVisitor>
+   void for_each_binding (BindingVisitor &v) const
+   {
+     for (map_t::iterator iter = m_map.begin (); iter != m_map.end (); ++iter)
+       {
+ 	const binding_key *key = (*iter).first;
+ 	const svalue *&sval = (*iter).second;
+ 	v.on_binding (key, sval);
+       }
+   }
+ 
+   iterator_t begin () const { return m_map.begin (); }
+   iterator_t end () const { return m_map.end (); }
+ 
+   const binding_map &get_map () const { return m_map; }
+ 
+ private:
+   const svalue *get_any_value (const binding_key *key) const;
+   void get_overlapping_bindings (store_manager *mgr, const region *reg,
+ 				 auto_vec<const binding_key *> *out);
+   void bind_compound_sval (store_manager *mgr,
+ 			   const region *reg,
+ 			   const compound_svalue *compound_sval);
+   void bind_key (const binding_key *key, const svalue *sval);
+ 
+   const region *m_base_region;
+ 
+   binding_map m_map;
+ 
+   /* Has a pointer to this cluster "escaped" into a part of the program
+      we don't know about (via a call to a function with an unknown body,
+      or by being passed in as a pointer param of a "top-level" function call).
+      Such regions could be overwritten when other such functions are called,
+      even if the region is no longer reachable by pointers that we are
+      tracking. */
+   bool m_escaped;
+ 
+   /* Has this cluster been written to via a symbolic binding?
+      If so, then we don't know anything about unbound subregions,
+      so we can't use initial_svalue, treat them as uninitialized, or
+      inherit values from a parent region.  */
+   bool m_touched;
+ };
+ 
+ /* The mapping from regions to svalues.
+    This is actually expressed by subdividing into clusters, to better
+    handle aliasing.  */
+ 
+ class store
+ {
+ public:
+   typedef hash_map <const region *, binding_cluster *> cluster_map_t;
+ 
+   store ();
+   store (const store &other);
+   ~store ();
+ 
+   store &operator= (const store &other);
+ 
+   bool operator== (const store &other) const;
+   bool operator!= (const store &other) const
+   {
+     return !(*this == other);
+   }
+ 
+   hashval_t hash () const;
+ 
+   void dump_to_pp (pretty_printer *pp, bool summarize, bool multiline,
+ 		   store_manager *mgr) const;
+   void dump (bool simple) const;
+   void summarize_to_pp (pretty_printer *pp, bool simple) const;
+ 
+   json::object *to_json () const;
+ 
+   const svalue *get_direct_binding (store_manager *mgr, const region *reg);
+   const svalue *get_default_binding (store_manager *mgr, const region *reg);
+   const svalue *get_any_binding (store_manager *mgr, const region *reg) const;
+ 
+   bool called_unknown_fn_p () const { return m_called_unknown_fn; }
+ 
+   void set_value (store_manager *mgr, const region *lhs_reg,
+ 		  const svalue *rhs_sval, enum binding_kind kind,
+ 		  uncertainty_t *uncertainty);
+   void clobber_region (store_manager *mgr, const region *reg);
+   void purge_region (store_manager *mgr, const region *reg);
+   void zero_fill_region (store_manager *mgr, const region *reg);
+   void mark_region_as_unknown (store_manager *mgr, const region *reg,
+ 			       uncertainty_t *uncertainty);
+ 
+   const binding_cluster *get_cluster (const region *base_reg) const;
+   binding_cluster *get_cluster (const region *base_reg);
+   binding_cluster *get_or_create_cluster (const region *base_reg);
+   void purge_cluster (const region *base_reg);
+ 
+   template <typename T>
+   void for_each_cluster (void (*cb) (const region *base_reg, T user_data),
+ 			 T user_data) const
+   {
+     for (cluster_map_t::iterator iter = m_cluster_map.begin ();
+ 	 iter != m_cluster_map.end (); ++iter)
+       cb ((*iter).first, user_data);
+   }
+ 
+   static bool can_merge_p (const store *store_a, const store *store_b,
+ 			   store *out_store, store_manager *mgr,
+ 			   model_merger *merger);
+ 
+   void mark_as_escaped (const region *base_reg);
+   void on_unknown_fncall (const gcall *call, store_manager *mgr);
+   bool escaped_p (const region *reg) const;
+ 
+   void get_representative_path_vars (const region_model *model,
+ 				     svalue_set *visited,
+ 				     const svalue *sval,
+ 				     auto_vec<path_var> *out_pvs) const;
+ 
+   cluster_map_t::iterator begin () const { return m_cluster_map.begin (); }
+   cluster_map_t::iterator end () const { return m_cluster_map.end (); }
+ 
+   tristate eval_alias (const region *base_reg_a,
+ 		       const region *base_reg_b) const;
+ 
+   template <typename BindingVisitor>
+   void for_each_binding (BindingVisitor &v)
+   {
+     for (cluster_map_t::iterator iter = m_cluster_map.begin ();
+ 	 iter != m_cluster_map.end (); ++iter)
+       (*iter).second->for_each_binding (v);
+   }
+ 
+   void canonicalize (store_manager *mgr);
+   void loop_replay_fixup (const store *other_store,
+ 			  region_model_manager *mgr);
+ 
+ private:
+   void remove_overlapping_bindings (store_manager *mgr, const region *reg);
+   tristate eval_alias_1 (const region *base_reg_a,
+ 			 const region *base_reg_b) const;
+ 
+   cluster_map_t m_cluster_map;
+ 
+   /* If this is true, then unknown code has been called, and so
+      any global variable that isn't currently modelled by the store
+      has unknown state, rather than being in an "initial state".
+      This is to avoid having to mark (and thus explicitly track)
+      every global when an unknown function is called; instead, they
+      can be tracked implicitly.  */
+   bool m_called_unknown_fn;
+ };
+ 
+ /* A class responsible for owning and consolidating binding keys
+    (both concrete and symbolic).
+    Key instances are immutable as far as clients are concerned, so they
+    are provided as "const" ptrs.  */
+ 
+ class store_manager
+ {
+ public:
+   store_manager (region_model_manager *mgr) : m_mgr (mgr) {}
+ 
+   /* binding consolidation.  */
+   const concrete_binding *
+   get_concrete_binding (bit_offset_t start_bit_offset,
+ 			bit_offset_t size_in_bits,
+ 			enum binding_kind kind);
+   const symbolic_binding *
+   get_symbolic_binding (const region *region,
+ 			enum binding_kind kind);
+ 
+   region_model_manager *get_svalue_manager () const
+   {
+     return m_mgr;
+   }
+ 
+   void log_stats (logger *logger, bool show_objs) const;
+ 
+ private:
+   region_model_manager *m_mgr;
+   consolidation_map<concrete_binding> m_concrete_binding_key_mgr;
+   consolidation_map<symbolic_binding> m_symbolic_binding_key_mgr;
+ };
+ 
+ } // namespace ana
+ 
+ #endif /* GCC_ANALYZER_STORE_H */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/supergraph.cc gcc-11.1.0/gcc/analyzer/supergraph.cc
*** gcc-10.3.0/gcc/analyzer/supergraph.cc	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/supergraph.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* "Supergraph" classes that combine CFGs and callgraph into one digraph.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* "Supergraph" classes that combine CFGs and callgraph into one digraph.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 43,48 ****
--- 43,49 ----
  #include "tree-dfa.h"
  #include "cfganal.h"
  #include "function.h"
+ #include "json.h"
  #include "analyzer/analyzer.h"
  #include "ordered-hash-map.h"
  #include "options.h"
*************** supergraph_call_edge (function *fun, gim
*** 86,95 ****
    return edge;
  }
  
  /* supergraph's ctor.  Walk the callgraph, building supernodes for each
     CFG basic block, splitting the basic blocks at callsites.  Join
     together the supernodes with interprocedural and intraprocedural
!    superedges as appropriate.  */
  
  supergraph::supergraph (logger *logger)
  {
--- 87,141 ----
    return edge;
  }
  
+ /* class saved_uids.
+ 
+    In order to ensure consistent results without relying on the ordering
+    of pointer values we assign a uid to each gimple stmt, globally unique
+    across all functions.
+ 
+    Normally, the stmt uids are a scratch space that each pass can freely
+    assign its own values to.  However, in the case of LTO, the uids are
+    used to associate call stmts with callgraph edges between the WPA phase
+    (where the analyzer runs in LTO mode) and the LTRANS phase; if the
+    analyzer changes them in the WPA phase, it leads to errors when
+    streaming the code back in at LTRANS.
+    lto_prepare_function_for_streaming has code to renumber the stmt UIDs
+    when the code is streamed back out, but for some reason this isn't
+    called for clones.
+ 
+    Hence, as a workaround, this class has responsibility for tracking
+    the original uids and restoring them once the pass is complete
+    (in the supergraph dtor).  */
+ 
+ /* Give STMT a globally unique uid, storing its original uid so it can
+    later be restored.  */
+ 
+ void
+ saved_uids::make_uid_unique (gimple *stmt)
+ {
+   unsigned next_uid = m_old_stmt_uids.length ();
+   unsigned old_stmt_uid = stmt->uid;
+   stmt->uid = next_uid;
+   m_old_stmt_uids.safe_push
+     (std::pair<gimple *, unsigned> (stmt, old_stmt_uid));
+ }
+ 
+ /* Restore the saved uids of all stmts.  */
+ 
+ void
+ saved_uids::restore_uids () const
+ {
+   unsigned i;
+   std::pair<gimple *, unsigned> *pair;
+   FOR_EACH_VEC_ELT (m_old_stmt_uids, i, pair)
+     pair->first->uid = pair->second;
+ }
+ 
  /* supergraph's ctor.  Walk the callgraph, building supernodes for each
     CFG basic block, splitting the basic blocks at callsites.  Join
     together the supernodes with interprocedural and intraprocedural
!    superedges as appropriate.
!    Assign UIDs to the gimple stmts.  */
  
  supergraph::supergraph (logger *logger)
  {
*************** supergraph::supergraph (logger *logger)
*** 97,103 ****
  
    LOG_FUNC (logger);
  
!   /* First pass: make supernodes.  */
    {
      /* Sort the cgraph_nodes?  */
      cgraph_node *node;
--- 143,149 ----
  
    LOG_FUNC (logger);
  
!   /* First pass: make supernodes (and assign UIDs to the gimple stmts).  */
    {
      /* Sort the cgraph_nodes?  */
      cgraph_node *node;
*************** supergraph::supergraph (logger *logger)
*** 123,128 ****
--- 169,175 ----
  	    {
  	      gimple *stmt = gsi_stmt (gpi);
  	      m_stmt_to_node_t.put (stmt, node_for_stmts);
+ 	      m_stmt_uids.make_uid_unique (stmt);
  	    }
  
  	  /* Append statements from BB to the current supernode, splitting
*************** supergraph::supergraph (logger *logger)
*** 134,139 ****
--- 181,187 ----
  	      gimple *stmt = gsi_stmt (gsi);
  	      node_for_stmts->m_stmts.safe_push (stmt);
  	      m_stmt_to_node_t.put (stmt, node_for_stmts);
+ 	      m_stmt_uids.make_uid_unique (stmt);
  	      if (cgraph_edge *edge = supergraph_call_edge (fun, stmt))
  		{
  		  m_cgraph_edge_to_caller_prev_node.put(edge, node_for_stmts);
*************** supergraph::supergraph (logger *logger)
*** 251,256 ****
--- 299,311 ----
    }
  }
  
+ /* supergraph's dtor.  Reset stmt uids.  */
+ 
+ supergraph::~supergraph ()
+ {
+   m_stmt_uids.restore_uids ();
+ }
+ 
  /* Dump this graph in .dot format to PP, using DUMP_ARGS.
     Cluster the supernodes by function, then by BB from original CFG.  */
  
*************** supergraph::dump_dot (const char *path,
*** 374,379 ****
--- 429,466 ----
    fclose (fp);
  }
  
+ /* Return a new json::object of the form
+    {"nodes" : [objs for snodes],
+     "edges" : [objs for sedges]}.  */
+ 
+ json::object *
+ supergraph::to_json () const
+ {
+   json::object *sgraph_obj = new json::object ();
+ 
+   /* Nodes.  */
+   {
+     json::array *nodes_arr = new json::array ();
+     unsigned i;
+     supernode *n;
+     FOR_EACH_VEC_ELT (m_nodes, i, n)
+       nodes_arr->append (n->to_json ());
+     sgraph_obj->set ("nodes", nodes_arr);
+   }
+ 
+   /* Edges.  */
+   {
+     json::array *edges_arr = new json::array ();
+     unsigned i;
+     superedge *n;
+     FOR_EACH_VEC_ELT (m_edges, i, n)
+       edges_arr->append (n->to_json ());
+     sgraph_obj->set ("edges", edges_arr);
+   }
+ 
+   return sgraph_obj;
+ }
+ 
  /* Create a supernode for BB within FUN and add it to this supergraph.
  
     If RETURNING_CALL is non-NULL, the supernode represents the resumption
*************** supernode::dump_dot_id (pretty_printer *
*** 594,599 ****
--- 681,746 ----
    pp_printf (pp, "node_%i", m_index);
  }
  
+ /* Return a new json::object of the form
+    {"idx": int,
+     "fun": optional str
+     "bb_idx": int,
+     "returning_call": optional str,
+     "phis": [str],
+     "stmts" : [str]}.  */
+ 
+ json::object *
+ supernode::to_json () const
+ {
+   json::object *snode_obj = new json::object ();
+ 
+   snode_obj->set ("idx", new json::integer_number (m_index));
+   snode_obj->set ("bb_idx", new json::integer_number (m_bb->index));
+   if (function *fun = get_function ())
+     snode_obj->set ("fun", new json::string (function_name (fun)));
+ 
+   if (m_returning_call)
+     {
+       pretty_printer pp;
+       pp_format_decoder (&pp) = default_tree_printer;
+       pp_gimple_stmt_1 (&pp, m_returning_call, 0, (dump_flags_t)0);
+       snode_obj->set ("returning_call",
+ 		      new json::string (pp_formatted_text (&pp)));
+     }
+ 
+   /* Phi nodes.  */
+   {
+     json::array *phi_arr = new json::array ();
+     for (gphi_iterator gpi = const_cast<supernode *> (this)->start_phis ();
+ 	 !gsi_end_p (gpi); gsi_next (&gpi))
+       {
+ 	const gimple *stmt = gsi_stmt (gpi);
+ 	pretty_printer pp;
+ 	pp_format_decoder (&pp) = default_tree_printer;
+ 	pp_gimple_stmt_1 (&pp, stmt, 0, (dump_flags_t)0);
+ 	phi_arr->append (new json::string (pp_formatted_text (&pp)));
+       }
+     snode_obj->set ("phis", phi_arr);
+   }
+ 
+   /* Statements.  */
+   {
+     json::array *stmt_arr = new json::array ();
+     int i;
+     gimple *stmt;
+     FOR_EACH_VEC_ELT (m_stmts, i, stmt)
+       {
+ 	pretty_printer pp;
+ 	pp_format_decoder (&pp) = default_tree_printer;
+ 	pp_gimple_stmt_1 (&pp, stmt, 0, (dump_flags_t)0);
+ 	stmt_arr->append (new json::string (pp_formatted_text (&pp)));
+       }
+     snode_obj->set ("stmts", stmt_arr);
+   }
+ 
+   return snode_obj;
+ }
+ 
  /* Get a location_t for the start of this supernode.  */
  
  location_t
*************** supernode::get_stmt_index (const gimple
*** 658,663 ****
--- 805,830 ----
    gcc_unreachable ();
  }
  
+ /* Get a string for PK.  */
+ 
+ static const char *
+ edge_kind_to_string (enum edge_kind kind)
+ {
+   switch (kind)
+     {
+     default:
+       gcc_unreachable ();
+     case SUPEREDGE_CFG_EDGE:
+       return "SUPEREDGE_CFG_EDGE";
+     case SUPEREDGE_CALL:
+       return "SUPEREDGE_CALL";
+     case SUPEREDGE_RETURN:
+       return "SUPEREDGE_RETURN";
+     case SUPEREDGE_INTRAPROCEDURAL_CALL:
+       return "SUPEREDGE_INTRAPROCEDURAL_CALL";
+     }
+ };
+ 
  /* Dump this superedge to PP.  */
  
  void
*************** superedge::dump_dot (graphviz_out *gv, c
*** 759,764 ****
--- 926,955 ----
    pp_printf (pp, "\"];\n");
  }
  
+ /* Return a new json::object of the form
+    {"kind"   : str,
+     "src_idx": int, the index of the source supernode,
+     "dst_idx": int, the index of the destination supernode,
+     "desc"   : str.  */
+ 
+ json::object *
+ superedge::to_json () const
+ {
+   json::object *sedge_obj = new json::object ();
+   sedge_obj->set ("kind", new json::string (edge_kind_to_string (m_kind)));
+   sedge_obj->set ("src_idx", new json::integer_number (m_src->m_index));
+   sedge_obj->set ("dst_idx", new json::integer_number (m_dest->m_index));
+ 
+   {
+     pretty_printer pp;
+     pp_format_decoder (&pp) = default_tree_printer;
+     dump_label_to_pp (&pp, false);
+     sedge_obj->set ("desc", new json::string (pp_formatted_text (&pp)));
+   }
+ 
+   return sedge_obj;
+ }
+ 
  /* If this is an intraprocedural superedge, return the associated
     CFG edge.  Otherwise, return NULL.  */
  
diff -Nrcpad gcc-10.3.0/gcc/analyzer/supergraph.h gcc-11.1.0/gcc/analyzer/supergraph.h
*** gcc-10.3.0/gcc/analyzer/supergraph.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/analyzer/supergraph.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* "Supergraph" classes that combine CFGs and callgraph into one digraph.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* "Supergraph" classes that combine CFGs and callgraph into one digraph.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** struct supergraph_traits
*** 79,84 ****
--- 79,96 ----
    typedef supercluster cluster_t;
  };
  
+ /* A class to manage the setting and restoring of statement uids.  */
+ 
+ class saved_uids
+ {
+ public:
+   void make_uid_unique (gimple *stmt);
+   void restore_uids () const;
+ 
+ private:
+   auto_vec<std::pair<gimple *, unsigned> > m_old_stmt_uids;
+ };
+ 
  /* A "supergraph" is a directed graph formed by joining together all CFGs,
     linking them via interprocedural call and return edges.
  
*************** class supergraph : public digraph<superg
*** 90,95 ****
--- 102,108 ----
  {
  public:
    supergraph (logger *logger);
+   ~supergraph ();
  
    supernode *get_node_for_function_entry (function *fun) const
    {
*************** public:
*** 148,153 ****
--- 161,168 ----
    void dump_dot_to_file (FILE *fp, const dump_args_t &) const;
    void dump_dot (const char *path, const dump_args_t &) const;
  
+   json::object *to_json () const;
+ 
    int num_nodes () const { return m_nodes.length (); }
    int num_edges () const { return m_edges.length (); }
  
*************** private:
*** 203,208 ****
--- 218,225 ----
  
    typedef hash_map<const function *, unsigned> function_to_num_snodes_t;
    function_to_num_snodes_t m_function_to_num_snodes;
+ 
+   saved_uids m_stmt_uids;
  };
  
  /* A node within a supergraph.  */
*************** class supernode : public dnode<supergrap
*** 231,236 ****
--- 248,255 ----
    void dump_dot (graphviz_out *gv, const dump_args_t &args) const OVERRIDE;
    void dump_dot_id (pretty_printer *pp) const;
  
+   json::object *to_json () const;
+ 
    location_t get_start_location () const;
    location_t get_end_location () const;
  
*************** class superedge : public dedge<supergrap
*** 289,294 ****
--- 308,315 ----
    virtual void dump_label_to_pp (pretty_printer *pp,
  				 bool user_facing) const = 0;
  
+   json::object *to_json () const;
+ 
    enum edge_kind get_kind () const { return m_kind; }
  
    virtual cfg_superedge *dyn_cast_cfg_superedge () { return NULL; }
*************** class callgraph_superedge : public super
*** 365,370 ****
--- 386,401 ----
    void dump_label_to_pp (pretty_printer *pp, bool user_facing) const
      FINAL OVERRIDE;
  
+   callgraph_superedge *dyn_cast_callgraph_superedge () FINAL OVERRIDE
+   {
+     return this;
+   }
+   const callgraph_superedge *dyn_cast_callgraph_superedge () const
+     FINAL OVERRIDE
+   {
+     return this;
+   }
+ 
    function *get_callee_function () const;
    function *get_caller_function () const;
    tree get_callee_decl () const;
*************** class call_superedge : public callgraph_
*** 403,418 ****
    : callgraph_superedge (src, dst, SUPEREDGE_CALL, cedge)
    {}
  
-   callgraph_superedge *dyn_cast_callgraph_superedge () FINAL OVERRIDE
-   {
-     return this;
-   }
-   const callgraph_superedge *dyn_cast_callgraph_superedge () const
-     FINAL OVERRIDE
-   {
-     return this;
-   }
- 
    call_superedge *dyn_cast_call_superedge () FINAL OVERRIDE
    {
      return this;
--- 434,439 ----
*************** class return_superedge : public callgrap
*** 449,462 ****
    : callgraph_superedge (src, dst, SUPEREDGE_RETURN, cedge)
    {}
  
-   callgraph_superedge *dyn_cast_callgraph_superedge () FINAL OVERRIDE
-   {
-     return this;
-   }
-   const callgraph_superedge *dyn_cast_callgraph_superedge () const
-     FINAL OVERRIDE
-   { return this; }
- 
    return_superedge *dyn_cast_return_superedge () FINAL OVERRIDE { return this; }
    const return_superedge *dyn_cast_return_superedge () const FINAL OVERRIDE
    {
--- 470,475 ----
diff -Nrcpad gcc-10.3.0/gcc/analyzer/svalue.cc gcc-11.1.0/gcc/analyzer/svalue.cc
*** gcc-10.3.0/gcc/analyzer/svalue.cc	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/analyzer/svalue.cc	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,1314 ----
+ /* Symbolic values.
+    Copyright (C) 2019-2021 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.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/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "diagnostic-core.h"
+ #include "gimple-pretty-print.h"
+ #include "function.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "gimple-iterator.h"
+ #include "diagnostic-core.h"
+ #include "graphviz.h"
+ #include "options.h"
+ #include "cgraph.h"
+ #include "tree-dfa.h"
+ #include "stringpool.h"
+ #include "convert.h"
+ #include "target.h"
+ #include "fold-const.h"
+ #include "tree-pretty-print.h"
+ #include "tristate.h"
+ #include "bitmap.h"
+ #include "selftest.h"
+ #include "function.h"
+ #include "json.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "options.h"
+ #include "cgraph.h"
+ #include "cfg.h"
+ #include "digraph.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
+ #include "analyzer/svalue.h"
+ #include "analyzer/region-model.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* class svalue and its various subclasses.  */
+ 
+ /* class svalue.  */
+ 
+ /* Dump a representation of this svalue to stderr.  */
+ 
+ DEBUG_FUNCTION void
+ svalue::dump (bool simple) const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+   pp_show_color (&pp) = pp_show_color (global_dc->printer);
+   pp.buffer->stream = stderr;
+   dump_to_pp (&pp, simple);
+   pp_newline (&pp);
+   pp_flush (&pp);
+ }
+ 
+ /* Generate a textual representation of this svalue for debugging purposes.  */
+ 
+ label_text
+ svalue::get_desc (bool simple) const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+   dump_to_pp (&pp, simple);
+   return label_text::take (xstrdup (pp_formatted_text (&pp)));
+ }
+ 
+ /* Return a new json::string describing the svalue.  */
+ 
+ json::value *
+ svalue::to_json () const
+ {
+   label_text desc = get_desc (true);
+   json::value *sval_js = new json::string (desc.m_buffer);
+   desc.maybe_free ();
+   return sval_js;
+ }
+ 
+ /* If this svalue is a constant_svalue, return the underlying tree constant.
+    Otherwise return NULL_TREE.  */
+ 
+ tree
+ svalue::maybe_get_constant () const
+ {
+   if (const constant_svalue *cst_sval = dyn_cast_constant_svalue ())
+     return cst_sval->get_constant ();
+   else
+     return NULL_TREE;
+ }
+ 
+ /* If this svalue is a cast (i.e a unaryop NOP_EXPR or VIEW_CONVERT_EXPR),
+    return the underlying svalue.
+    Otherwise return NULL.  */
+ 
+ const svalue *
+ svalue::maybe_undo_cast () const
+ {
+   if (const unaryop_svalue *unaryop_sval = dyn_cast_unaryop_svalue ())
+     {
+       enum tree_code op = unaryop_sval->get_op ();
+       if (op == NOP_EXPR || op == VIEW_CONVERT_EXPR)
+ 	return unaryop_sval->get_arg ();
+     }
+   return NULL;
+ }
+ 
+ /* If this svalue is an unmergeable decorator around another svalue, return
+    the underlying svalue.
+    Otherwise return this svalue.  */
+ 
+ const svalue *
+ svalue::unwrap_any_unmergeable () const
+ {
+   if (const unmergeable_svalue *unmergeable = dyn_cast_unmergeable_svalue ())
+     return unmergeable->get_arg ();
+   return this;
+ }
+ 
+ /* Attempt to merge THIS with OTHER, returning the merged svalue.
+    Return NULL if not mergeable.  */
+ 
+ const svalue *
+ svalue::can_merge_p (const svalue *other,
+ 		     region_model_manager *mgr,
+ 		     model_merger *merger) const
+ {
+   if (!(get_type () && other->get_type ()))
+     return NULL;
+ 
+   if (!types_compatible_p (get_type (), other->get_type ()))
+     return NULL;
+ 
+   /* Reject attempts to merge unmergeable svalues.  */
+   if ((get_kind () == SK_UNMERGEABLE)
+       || (other->get_kind () == SK_UNMERGEABLE))
+     return NULL;
+ 
+   /* Reject attempts to merge NULL pointers with not-NULL-pointers.  */
+   if (POINTER_TYPE_P (get_type ()))
+     {
+       bool null0 = false;
+       bool null1 = false;
+       if (tree cst0 = maybe_get_constant ())
+ 	if (zerop (cst0))
+ 	  null0 = true;
+       if (tree cst1 = other->maybe_get_constant ())
+ 	if (zerop (cst1))
+ 	  null1 = true;
+       if (null0 != null1)
+ 	return NULL;
+     }
+ 
+   /* Widening.  */
+   /* Merge: (new_cst, existing_cst) -> widen (existing, new).  */
+   if (maybe_get_constant () && other->maybe_get_constant ())
+     {
+       return mgr->get_or_create_widening_svalue (other->get_type (),
+ 						 merger->m_point,
+ 						 other, this);
+     }
+ 
+   /* Merger of:
+ 	 this: BINOP (X, OP, CST)
+ 	other: X, where X is non-widening
+ 	   to: WIDENING (other, this).  */
+   if (const binop_svalue *binop_sval = dyn_cast_binop_svalue ())
+     if (binop_sval->get_arg0 () == other
+ 	&& binop_sval->get_arg1 ()->get_kind () == SK_CONSTANT
+ 	&& other->get_kind () != SK_WIDENING)
+       return mgr->get_or_create_widening_svalue (other->get_type (),
+ 						 merger->m_point,
+ 						 other, this);
+ 
+   /* Merge: (Widen(existing_val, V), existing_val) -> Widen (existing_val, V)
+      and thus get a fixed point.  */
+   if (const widening_svalue *widen_sval = dyn_cast_widening_svalue ())
+     {
+       if (other == widen_sval->get_base_svalue ())
+ 	return this;
+       if (other == widen_sval->get_iter_svalue ())
+ 	return this;
+     }
+ 
+   if (const binop_svalue *binop_sval = dyn_cast_binop_svalue ())
+     if (const widening_svalue *widen_arg0
+ 	= binop_sval->get_arg0 ()->dyn_cast_widening_svalue ())
+       {
+ 	if (other == binop_sval->get_arg1 ())
+ 	  {
+ 	    /* Merger of: (Widen(..., OTHER) BINOP X)
+ 	       and      : OTHER
+ 	       to       : (Widen(..., OTHER) BINOP X)
+ 	       e.g. merge of Widen(0, 1) + 1 with 1 to the Widen(0, 1) + 1.  */
+ 	    return this;
+ 	  }
+ 
+ 	/* Merger of : (Widen() BINOP X)
+ 	   and       : Widen()
+ 	   to        : Widen()
+ 	   e.g. merge of Widen(0, 1) + 1 and Widen(0, 1) to Widen(0, 1).
+ 	   However, we want to update constraints for this case, since we're
+ 	   considering another iteration.
+ 	   Presumably we also want to ensure that it converges; we don't want
+ 	   a descending chain of constraints.  */
+ 	if (other == widen_arg0)
+ 	  {
+ 	    return widen_arg0;
+ 	  }
+ 
+ 	/* Merger of:
+ 	    this: BINOP(WIDENING(BASE, BINOP(BASE, X)), X)
+ 	   other: BINOP(BASE, X)
+ 	      to: WIDENING(BASE, BINOP(BASE, X)).  */
+ 	if (widen_arg0->get_iter_svalue () == other)
+ 	  if (const binop_svalue *other_binop_sval
+ 		= other->dyn_cast_binop_svalue ())
+ 	    if (other_binop_sval->get_arg0 () == widen_arg0->get_base_svalue ()
+ 		&& other_binop_sval->get_arg1 () == binop_sval->get_arg1 ())
+ 	      return widen_arg0;
+       }
+ 
+   return mgr->get_or_create_unknown_svalue (get_type ());
+ }
+ 
+ /* Determine if this svalue is either within LIVE_SVALUES, or is implicitly
+    live with respect to LIVE_SVALUES and MODEL.
+    LIVE_SVALUES can be NULL, in which case determine if this svalue is
+    intrinsically live.  */
+ 
+ bool
+ svalue::live_p (const svalue_set *live_svalues,
+ 		const region_model *model) const
+ {
+   /* Determine if SVAL is explicitly live.  */
+   if (live_svalues)
+     if (const_cast<svalue_set *> (live_svalues)->contains (this))
+       return true;
+ 
+   /* Otherwise, determine if SVAL is implicitly live due to being made of
+      other live svalues.  */
+   return implicitly_live_p (live_svalues, model);
+ }
+ 
+ /* Base implementation of svalue::implicitly_live_p.  */
+ 
+ bool
+ svalue::implicitly_live_p (const svalue_set *, const region_model *) const
+ {
+   return false;
+ }
+ 
+ /* Comparator for imposing a deterministic order on constants that are
+    of the same type.  */
+ 
+ static int
+ cmp_cst (const_tree cst1, const_tree cst2)
+ {
+   gcc_assert (TREE_TYPE (cst1) == TREE_TYPE (cst2));
+   gcc_assert (TREE_CODE (cst1) == TREE_CODE (cst2));
+   switch (TREE_CODE (cst1))
+     {
+     default:
+       gcc_unreachable ();
+     case INTEGER_CST:
+       return tree_int_cst_compare (cst1, cst2);
+     case STRING_CST:
+       return strcmp (TREE_STRING_POINTER (cst1),
+ 		     TREE_STRING_POINTER (cst2));
+     case REAL_CST:
+       /* Impose an arbitrary but deterministic order.  */
+       return memcmp (TREE_REAL_CST_PTR (cst1),
+ 		     TREE_REAL_CST_PTR (cst2),
+ 		     sizeof (real_value));
+     case COMPLEX_CST:
+       if (int cmp_real = cmp_cst (TREE_REALPART (cst1), TREE_REALPART (cst2)))
+ 	return cmp_real;
+       return cmp_cst (TREE_IMAGPART (cst1), TREE_IMAGPART (cst2));
+     case VECTOR_CST:
+       if (int cmp_log2_npatterns
+ 	    = ((int)VECTOR_CST_LOG2_NPATTERNS (cst1)
+ 	       - (int)VECTOR_CST_LOG2_NPATTERNS (cst2)))
+ 	return cmp_log2_npatterns;
+       if (int cmp_nelts_per_pattern
+ 	    = ((int)VECTOR_CST_NELTS_PER_PATTERN (cst1)
+ 	       - (int)VECTOR_CST_NELTS_PER_PATTERN (cst2)))
+ 	return cmp_nelts_per_pattern;
+       unsigned encoded_nelts = vector_cst_encoded_nelts (cst1);
+       for (unsigned i = 0; i < encoded_nelts; i++)
+ 	if (int el_cmp = cmp_cst (VECTOR_CST_ENCODED_ELT (cst1, i),
+ 				  VECTOR_CST_ENCODED_ELT (cst2, i)))
+ 	  return el_cmp;
+       return 0;
+     }
+ }
+ 
+ /* Comparator for imposing a deterministic order on svalues.  */
+ 
+ int
+ svalue::cmp_ptr (const svalue *sval1, const svalue *sval2)
+ {
+   if (sval1 == sval2)
+     return 0;
+   if (int cmp_kind = sval1->get_kind () - sval2->get_kind ())
+     return cmp_kind;
+   int t1 = sval1->get_type () ? TYPE_UID (sval1->get_type ()) : -1;
+   int t2 = sval2->get_type () ? TYPE_UID (sval2->get_type ()) : -1;
+   if (int cmp_type = t1 - t2)
+     return cmp_type;
+   switch (sval1->get_kind ())
+     {
+     default:
+       gcc_unreachable ();
+     case SK_REGION:
+       {
+ 	const region_svalue *region_sval1 = (const region_svalue *)sval1;
+ 	const region_svalue *region_sval2 = (const region_svalue *)sval2;
+ 	return region::cmp_ids (region_sval1->get_pointee (),
+ 				region_sval2->get_pointee ());
+       }
+       break;
+     case SK_CONSTANT:
+       {
+ 	const constant_svalue *constant_sval1 = (const constant_svalue *)sval1;
+ 	const constant_svalue *constant_sval2 = (const constant_svalue *)sval2;
+ 	const_tree cst1 = constant_sval1->get_constant ();
+ 	const_tree cst2 = constant_sval2->get_constant ();
+ 	return cmp_cst (cst1, cst2);
+       }
+       break;
+     case SK_UNKNOWN:
+       {
+ 	gcc_assert (sval1 == sval2);
+ 	return 0;
+       }
+       break;
+     case SK_POISONED:
+       {
+ 	const poisoned_svalue *poisoned_sval1 = (const poisoned_svalue *)sval1;
+ 	const poisoned_svalue *poisoned_sval2 = (const poisoned_svalue *)sval2;
+ 	return (poisoned_sval1->get_poison_kind ()
+ 		- poisoned_sval2->get_poison_kind ());
+       }
+       break;
+     case SK_SETJMP:
+       {
+ 	const setjmp_svalue *setjmp_sval1 = (const setjmp_svalue *)sval1;
+ 	const setjmp_svalue *setjmp_sval2 = (const setjmp_svalue *)sval2;
+ 	const setjmp_record &rec1 = setjmp_sval1->get_setjmp_record ();
+ 	const setjmp_record &rec2 = setjmp_sval2->get_setjmp_record ();
+ 	return setjmp_record::cmp (rec1, rec2);
+       }
+       break;
+     case SK_INITIAL:
+       {
+ 	const initial_svalue *initial_sval1 = (const initial_svalue *)sval1;
+ 	const initial_svalue *initial_sval2 = (const initial_svalue *)sval2;
+ 	return region::cmp_ids (initial_sval1->get_region (),
+ 				initial_sval2->get_region ());
+       }
+       break;
+     case SK_UNARYOP:
+       {
+ 	const unaryop_svalue *unaryop_sval1 = (const unaryop_svalue *)sval1;
+ 	const unaryop_svalue *unaryop_sval2 = (const unaryop_svalue *)sval2;
+ 	if (int op_cmp = unaryop_sval1->get_op () - unaryop_sval2->get_op ())
+ 	  return op_cmp;
+ 	return svalue::cmp_ptr (unaryop_sval1->get_arg (),
+ 				unaryop_sval2->get_arg ());
+       }
+       break;
+     case SK_BINOP:
+       {
+ 	const binop_svalue *binop_sval1 = (const binop_svalue *)sval1;
+ 	const binop_svalue *binop_sval2 = (const binop_svalue *)sval2;
+ 	if (int op_cmp = binop_sval1->get_op () - binop_sval2->get_op ())
+ 	  return op_cmp;
+ 	if (int arg0_cmp = svalue::cmp_ptr (binop_sval1->get_arg0 (),
+ 					    binop_sval2->get_arg0 ()))
+ 	  return arg0_cmp;
+ 	return svalue::cmp_ptr (binop_sval1->get_arg1 (),
+ 				binop_sval2->get_arg1 ());
+       }
+       break;
+     case SK_SUB:
+       {
+ 	const sub_svalue *sub_sval1 = (const sub_svalue *)sval1;
+ 	const sub_svalue *sub_sval2 = (const sub_svalue *)sval2;
+ 	if (int parent_cmp = svalue::cmp_ptr (sub_sval1->get_parent (),
+ 					      sub_sval2->get_parent ()))
+ 	  return parent_cmp;
+ 	return region::cmp_ids (sub_sval1->get_subregion (),
+ 				sub_sval2->get_subregion ());
+       }
+       break;
+     case SK_UNMERGEABLE:
+       {
+ 	const unmergeable_svalue *unmergeable_sval1
+ 	  = (const unmergeable_svalue *)sval1;
+ 	const unmergeable_svalue *unmergeable_sval2
+ 	  = (const unmergeable_svalue *)sval2;
+ 	return svalue::cmp_ptr (unmergeable_sval1->get_arg (),
+ 				unmergeable_sval2->get_arg ());
+       }
+       break;
+     case SK_PLACEHOLDER:
+       {
+ 	const placeholder_svalue *placeholder_sval1
+ 	  = (const placeholder_svalue *)sval1;
+ 	const placeholder_svalue *placeholder_sval2
+ 	  = (const placeholder_svalue *)sval2;
+ 	return strcmp (placeholder_sval1->get_name (),
+ 		       placeholder_sval2->get_name ());
+       }
+       break;
+     case SK_WIDENING:
+       {
+ 	const widening_svalue *widening_sval1 = (const widening_svalue *)sval1;
+ 	const widening_svalue *widening_sval2 = (const widening_svalue *)sval2;
+ 	if (int point_cmp = function_point::cmp (widening_sval1->get_point (),
+ 						 widening_sval2->get_point ()))
+ 	  return point_cmp;
+ 	if (int base_cmp = svalue::cmp_ptr (widening_sval1->get_base_svalue (),
+ 					    widening_sval2->get_base_svalue ()))
+ 	  return base_cmp;
+ 	return svalue::cmp_ptr (widening_sval1->get_iter_svalue (),
+ 				widening_sval2->get_iter_svalue ());
+       }
+       break;
+     case SK_COMPOUND:
+       {
+ 	const compound_svalue *compound_sval1 = (const compound_svalue *)sval1;
+ 	const compound_svalue *compound_sval2 = (const compound_svalue *)sval2;
+ 	return binding_map::cmp (compound_sval1->get_map (),
+ 				 compound_sval2->get_map ());
+       }
+       break;
+     case SK_CONJURED:
+       {
+ 	const conjured_svalue *conjured_sval1 = (const conjured_svalue *)sval1;
+ 	const conjured_svalue *conjured_sval2 = (const conjured_svalue *)sval2;
+ 	if (int stmt_cmp = (conjured_sval1->get_stmt ()->uid
+ 			    - conjured_sval2->get_stmt ()->uid))
+ 	  return stmt_cmp;
+ 	return region::cmp_ids (conjured_sval1->get_id_region (),
+ 				conjured_sval2->get_id_region ());
+       }
+       break;
+     }
+ }
+ 
+ /* Comparator for use by vec<const svalue *>::qsort.  */
+ 
+ int
+ svalue::cmp_ptr_ptr (const void *p1, const void *p2)
+ {
+   const svalue *sval1 = *(const svalue * const *)p1;
+   const svalue *sval2 = *(const svalue * const *)p2;
+   return cmp_ptr (sval1, sval2);
+ }
+ 
+ /* Subclass of visitor for use in implementing svalue::involves_p.  */
+ 
+ class involvement_visitor : public visitor
+ {
+ public:
+   involvement_visitor (const svalue *needle)
+   : m_needle (needle), m_found (false) {}
+ 
+   void visit_initial_svalue (const initial_svalue *candidate)
+   {
+     if (candidate == m_needle)
+       m_found = true;
+   }
+ 
+   bool found_p () const { return m_found; }
+ 
+ private:
+   const svalue *m_needle;
+   bool m_found;
+ };
+ 
+ /* Return true iff this svalue is defined in terms of OTHER.  */
+ 
+ bool
+ svalue::involves_p (const svalue *other) const
+ {
+   /* Currently only implemented for initial_svalue.  */
+   gcc_assert (other->get_kind () == SK_INITIAL);
+ 
+   involvement_visitor v (other);
+   accept (&v);
+   return v.found_p ();
+ }
+ 
+ /* class region_svalue : public svalue.  */
+ 
+ /* Implementation of svalue::dump_to_pp vfunc for region_svalue.  */
+ 
+ void
+ region_svalue::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       pp_string (pp, "&");
+       m_reg->dump_to_pp (pp, simple);
+     }
+   else
+     {
+       pp_string (pp, "region_svalue(");
+       print_quoted_type (pp, get_type ());
+       pp_string (pp, ", ");
+       m_reg->dump_to_pp (pp, simple);
+       pp_string (pp, ")");
+     }
+ }
+ 
+ /* Implementation of svalue::accept vfunc for region_svalue.  */
+ 
+ void
+ region_svalue::accept (visitor *v) const
+ {
+   v->visit_region_svalue (this);
+   m_reg->accept (v);
+ }
+ 
+ /* Implementation of svalue::implicitly_live_p vfunc for region_svalue.  */
+ 
+ bool
+ region_svalue::implicitly_live_p (const svalue_set *,
+ 				  const region_model *model) const
+ {
+   /* Pointers into clusters that have escaped should be treated as live.  */
+   const region *base_reg = get_pointee ()->get_base_region ();
+   const store *store = model->get_store ();
+   if (const binding_cluster *c = store->get_cluster (base_reg))
+     if (c->escaped_p ())
+ 	return true;
+ 
+   return false;
+ }
+ 
+ /* Evaluate the condition LHS OP RHS.
+    Subroutine of region_model::eval_condition for when we have a pair of
+    pointers.  */
+ 
+ tristate
+ region_svalue::eval_condition (const region_svalue *lhs,
+ 			       enum tree_code op,
+ 			       const region_svalue *rhs)
+ {
+   /* See if they point to the same region.  */
+   const region *lhs_reg = lhs->get_pointee ();
+   const region *rhs_reg = rhs->get_pointee ();
+   bool ptr_equality = lhs_reg == rhs_reg;
+   switch (op)
+     {
+     default:
+       gcc_unreachable ();
+ 
+     case EQ_EXPR:
+       if (ptr_equality)
+ 	return tristate::TS_TRUE;
+       else
+ 	return tristate::TS_FALSE;
+       break;
+ 
+     case NE_EXPR:
+       if (ptr_equality)
+ 	return tristate::TS_FALSE;
+       else
+ 	return tristate::TS_TRUE;
+       break;
+ 
+     case GE_EXPR:
+     case LE_EXPR:
+       if (ptr_equality)
+ 	return tristate::TS_TRUE;
+       break;
+ 
+     case GT_EXPR:
+     case LT_EXPR:
+       if (ptr_equality)
+ 	return tristate::TS_FALSE;
+       break;
+     }
+ 
+   return tristate::TS_UNKNOWN;
+ }
+ 
+ /* class constant_svalue : public svalue.  */
+ 
+ /* Implementation of svalue::dump_to_pp vfunc for constant_svalue.  */
+ 
+ void
+ constant_svalue::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       pp_string (pp, "(");
+       dump_tree (pp, get_type ());
+       pp_string (pp, ")");
+       dump_tree (pp, m_cst_expr);
+     }
+   else
+     {
+       pp_string (pp, "constant_svalue(");
+       print_quoted_type (pp, get_type ());
+       pp_string (pp, ", ");
+       dump_tree (pp, m_cst_expr);
+       pp_string (pp, ")");
+     }
+ }
+ 
+ /* Implementation of svalue::accept vfunc for constant_svalue.  */
+ 
+ void
+ constant_svalue::accept (visitor *v) const
+ {
+   v->visit_constant_svalue (this);
+ }
+ 
+ /* Implementation of svalue::implicitly_live_p vfunc for constant_svalue.
+    Constants are implicitly live.  */
+ 
+ bool
+ constant_svalue::implicitly_live_p (const svalue_set *,
+ 				    const region_model *) const
+ {
+   return true;
+ }
+ 
+ /* Evaluate the condition LHS OP RHS.
+    Subroutine of region_model::eval_condition for when we have a pair of
+    constants.  */
+ 
+ tristate
+ constant_svalue::eval_condition (const constant_svalue *lhs,
+ 				  enum tree_code op,
+ 				  const constant_svalue *rhs)
+ {
+   tree lhs_const = lhs->get_constant ();
+   tree rhs_const = rhs->get_constant ();
+ 
+   gcc_assert (CONSTANT_CLASS_P (lhs_const));
+   gcc_assert (CONSTANT_CLASS_P (rhs_const));
+ 
+   /* Check for comparable types.  */
+   if (types_compatible_p (TREE_TYPE (lhs_const), TREE_TYPE (rhs_const)))
+     {
+       tree comparison
+ 	= fold_binary (op, boolean_type_node, lhs_const, rhs_const);
+       if (comparison == boolean_true_node)
+ 	return tristate (tristate::TS_TRUE);
+       if (comparison == boolean_false_node)
+ 	return tristate (tristate::TS_FALSE);
+     }
+   return tristate::TS_UNKNOWN;
+ }
+ 
+ /* class unknown_svalue : public svalue.  */
+ 
+ /* Implementation of svalue::dump_to_pp vfunc for unknown_svalue.  */
+ 
+ void
+ unknown_svalue::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       pp_string (pp, "UNKNOWN(");
+       if (get_type ())
+ 	dump_tree (pp, get_type ());
+       pp_character (pp, ')');
+     }
+   else
+     {
+       pp_string (pp, "unknown_svalue(");
+       if (get_type ())
+ 	dump_tree (pp, get_type ());
+       pp_character (pp, ')');
+     }
+ }
+ 
+ /* Implementation of svalue::accept vfunc for unknown_svalue.  */
+ 
+ void
+ unknown_svalue::accept (visitor *v) const
+ {
+   v->visit_unknown_svalue (this);
+ }
+ 
+ /* Get a string for KIND for use in debug dumps.  */
+ 
+ const char *
+ poison_kind_to_str (enum poison_kind kind)
+ {
+   switch (kind)
+     {
+     default:
+       gcc_unreachable ();
+     case POISON_KIND_FREED:
+       return "freed";
+     case POISON_KIND_POPPED_STACK:
+       return "popped stack";
+     }
+ }
+ 
+ /* class poisoned_svalue : public svalue.  */
+ 
+ /* Implementation of svalue::dump_to_pp vfunc for poisoned_svalue.  */
+ 
+ void
+ poisoned_svalue::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     pp_printf (pp, "POISONED(%s)", poison_kind_to_str (m_kind));
+   else
+     pp_printf (pp, "poisoned_svalue(%s)", poison_kind_to_str (m_kind));
+ }
+ 
+ /* Implementation of svalue::accept vfunc for poisoned_svalue.  */
+ 
+ void
+ poisoned_svalue::accept (visitor *v) const
+ {
+   v->visit_poisoned_svalue (this);
+ }
+ 
+ /* class setjmp_svalue's implementation is in engine.cc, so that it can use
+    the declaration of exploded_node.  */
+ 
+ /* class initial_svalue : public svalue.  */
+ 
+ /* Implementation of svalue::dump_to_pp vfunc for initial_svalue.  */
+ 
+ void
+ initial_svalue::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       pp_string (pp, "INIT_VAL(");
+       m_reg->dump_to_pp (pp, simple);
+       pp_string (pp, ")");
+     }
+   else
+     {
+       pp_string (pp, "initial_svalue(");
+       print_quoted_type (pp, get_type ());
+       pp_string (pp, ", ");
+       m_reg->dump_to_pp (pp, simple);
+       pp_string (pp, ")");
+     }
+ }
+ 
+ /* Implementation of svalue::accept vfunc for initial_svalue.  */
+ 
+ void
+ initial_svalue::accept (visitor *v) const
+ {
+   v->visit_initial_svalue (this);
+   m_reg->accept (v);
+ }
+ 
+ /* Implementation of svalue::implicitly_live_p vfunc for initial_svalue.  */
+ 
+ bool
+ initial_svalue::implicitly_live_p (const svalue_set *,
+ 				   const region_model *model) const
+ {
+   /* This svalue may be implicitly live if the region still implicitly
+      has its initial value and is reachable.  */
+ 
+   /* It must be a region that exists; we don't want to consider
+      INIT_VAL(R) as still being implicitly reachable if R is in
+      a popped stack frame.  */
+   if (model->region_exists_p (m_reg))
+     {
+       const svalue *reg_sval = model->get_store_value (m_reg);
+       if (reg_sval == this)
+ 	return true;
+     }
+ 
+   /* Assume that the initial values of params for the top level frame
+      are still live, because (presumably) they're still
+      live in the external caller.  */
+   if (initial_value_of_param_p ())
+     if (const frame_region *frame_reg = m_reg->maybe_get_frame_region ())
+       if (frame_reg->get_calling_frame () == NULL)
+ 	return true;
+ 
+   return false;
+ }
+ 
+ /* Return true if this is the initial value of a function parameter.  */
+ 
+ bool
+ initial_svalue::initial_value_of_param_p () const
+ {
+   if (tree reg_decl = m_reg->maybe_get_decl ())
+     if (TREE_CODE (reg_decl) == SSA_NAME)
+       {
+ 	tree ssa_name = reg_decl;
+ 	if (SSA_NAME_IS_DEFAULT_DEF (ssa_name)
+ 	    && SSA_NAME_VAR (ssa_name)
+ 	    && TREE_CODE (SSA_NAME_VAR (ssa_name)) == PARM_DECL)
+ 	  return true;
+       }
+   return false;
+ }
+ 
+ /* class unaryop_svalue : public svalue.  */
+ 
+ /* Implementation of svalue::dump_to_pp vfunc for unaryop_svalue.  */
+ 
+ void
+ unaryop_svalue::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       if (m_op == VIEW_CONVERT_EXPR || m_op == NOP_EXPR)
+ 	{
+ 	  pp_string (pp, "CAST(");
+ 	  dump_tree (pp, get_type ());
+ 	  pp_string (pp, ", ");
+ 	  m_arg->dump_to_pp (pp, simple);
+ 	  pp_character (pp, ')');
+ 	}
+       else
+ 	{
+ 	  pp_character (pp, '(');
+ 	  pp_string (pp, get_tree_code_name (m_op));
+ 	  //pp_string (pp, op_symbol_code (m_op));
+ 	  m_arg->dump_to_pp (pp, simple);
+ 	  pp_character (pp, ')');
+ 	}
+     }
+   else
+     {
+       pp_string (pp, "unaryop_svalue (");
+       pp_string (pp, get_tree_code_name (m_op));
+       pp_string (pp, ", ");
+       m_arg->dump_to_pp (pp, simple);
+       pp_character (pp, ')');
+     }
+ }
+ 
+ /* Implementation of svalue::accept vfunc for unaryop_svalue.  */
+ 
+ void
+ unaryop_svalue::accept (visitor *v) const
+ {
+   v->visit_unaryop_svalue (this);
+   m_arg->accept (v);
+ }
+ 
+ /* Implementation of svalue::implicitly_live_p vfunc for unaryop_svalue.  */
+ 
+ bool
+ unaryop_svalue::implicitly_live_p (const svalue_set *live_svalues,
+ 				   const region_model *model) const
+ {
+   return get_arg ()->live_p (live_svalues, model);
+ }
+ 
+ /* class binop_svalue : public svalue.  */
+ 
+ /* Implementation of svalue::dump_to_pp vfunc for binop_svalue.  */
+ 
+ void
+ binop_svalue::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       pp_character (pp, '(');
+       m_arg0->dump_to_pp (pp, simple);
+       pp_string (pp, op_symbol_code (m_op));
+       m_arg1->dump_to_pp (pp, simple);
+       pp_character (pp, ')');
+     }
+   else
+     {
+       pp_string (pp, "binop_svalue (");
+       pp_string (pp, get_tree_code_name (m_op));
+       pp_string (pp, ", ");
+       m_arg0->dump_to_pp (pp, simple);
+       pp_string (pp, ", ");
+       m_arg1->dump_to_pp (pp, simple);
+       pp_character (pp, ')');
+     }
+ }
+ 
+ /* Implementation of svalue::accept vfunc for binop_svalue.  */
+ 
+ void
+ binop_svalue::accept (visitor *v) const
+ {
+   v->visit_binop_svalue (this);
+   m_arg0->accept (v);
+   m_arg1->accept (v);
+ }
+ 
+ /* Implementation of svalue::implicitly_live_p vfunc for binop_svalue.  */
+ 
+ bool
+ binop_svalue::implicitly_live_p (const svalue_set *live_svalues,
+ 				 const region_model *model) const
+ {
+   return (get_arg0 ()->live_p (live_svalues, model)
+ 	  && get_arg1 ()->live_p (live_svalues, model));
+ }
+ 
+ /* class sub_svalue : public svalue.  */
+ 
+ /* sub_svalue'c ctor.  */
+ 
+ sub_svalue::sub_svalue (tree type, const svalue *parent_svalue,
+ 			const region *subregion)
+ : svalue (complexity::from_pair (parent_svalue->get_complexity (),
+ 				 subregion->get_complexity ()),
+ 	  type),
+   m_parent_svalue (parent_svalue), m_subregion (subregion)
+ {
+ }
+ 
+ /* Implementation of svalue::dump_to_pp vfunc for sub_svalue.  */
+ 
+ void
+ sub_svalue::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       pp_string (pp, "SUB(");
+       m_parent_svalue->dump_to_pp (pp, simple);
+       pp_string (pp, ", ");
+       m_subregion->dump_to_pp (pp, simple);
+       pp_character (pp, ')');
+     }
+   else
+     {
+       pp_string (pp, "sub_svalue (");
+       pp_string (pp, ", ");
+       m_parent_svalue->dump_to_pp (pp, simple);
+       pp_string (pp, ", ");
+       m_subregion->dump_to_pp (pp, simple);
+       pp_character (pp, ')');
+     }
+ }
+ 
+ /* Implementation of svalue::accept vfunc for sub_svalue.  */
+ 
+ void
+ sub_svalue::accept (visitor *v) const
+ {
+   v->visit_sub_svalue (this);
+   m_parent_svalue->accept (v);
+   m_subregion->accept (v);
+ }
+ 
+ /* Implementation of svalue::implicitly_live_p vfunc for sub_svalue.  */
+ 
+ bool
+ sub_svalue::implicitly_live_p (const svalue_set *live_svalues,
+ 			       const region_model *model) const
+ {
+   return get_parent ()->live_p (live_svalues, model);
+ }
+ 
+ /* class widening_svalue : public svalue.  */
+ 
+ /* Implementation of svalue::dump_to_pp vfunc for widening_svalue.  */
+ 
+ void
+ widening_svalue::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       pp_string (pp, "WIDENING(");
+       pp_character (pp, '{');
+       m_point.print (pp, format (false));
+       pp_string (pp, "}, ");
+       m_base_sval->dump_to_pp (pp, simple);
+       pp_string (pp, ", ");
+       m_iter_sval->dump_to_pp (pp, simple);
+       pp_character (pp, ')');
+     }
+   else
+     {
+       pp_string (pp, "widening_svalue (");
+       pp_string (pp, ", ");
+       pp_character (pp, '{');
+       m_point.print (pp, format (false));
+       pp_string (pp, "}, ");
+       m_base_sval->dump_to_pp (pp, simple);
+       pp_string (pp, ", ");
+       m_iter_sval->dump_to_pp (pp, simple);
+       pp_character (pp, ')');
+     }
+ }
+ 
+ /* Implementation of svalue::accept vfunc for widening_svalue.  */
+ 
+ void
+ widening_svalue::accept (visitor *v) const
+ {
+   v->visit_widening_svalue (this);
+   m_base_sval->accept (v);
+   m_iter_sval->accept (v);
+ }
+ 
+ /* Attempt to determine in which direction this value is changing
+    w.r.t. the initial value.  */
+ 
+ enum widening_svalue::direction_t
+ widening_svalue::get_direction () const
+ {
+   tree base_cst = m_base_sval->maybe_get_constant ();
+   if (base_cst == NULL_TREE)
+     return DIR_UNKNOWN;
+   tree iter_cst = m_iter_sval->maybe_get_constant ();
+   if (iter_cst == NULL_TREE)
+     return DIR_UNKNOWN;
+ 
+   tree iter_gt_base = fold_binary (GT_EXPR, boolean_type_node,
+ 				   iter_cst, base_cst);
+   if (iter_gt_base == boolean_true_node)
+     return DIR_ASCENDING;
+ 
+   tree iter_lt_base = fold_binary (LT_EXPR, boolean_type_node,
+ 				   iter_cst, base_cst);
+   if (iter_lt_base == boolean_true_node)
+     return DIR_DESCENDING;
+ 
+   return DIR_UNKNOWN;
+ }
+ 
+ /* Compare this value against constant RHS_CST.  */
+ 
+ tristate
+ widening_svalue::eval_condition_without_cm (enum tree_code op,
+ 					    tree rhs_cst) const
+ {
+   tree base_cst = m_base_sval->maybe_get_constant ();
+   if (base_cst == NULL_TREE)
+     return tristate::TS_UNKNOWN;
+   tree iter_cst = m_iter_sval->maybe_get_constant ();
+   if (iter_cst == NULL_TREE)
+     return tristate::TS_UNKNOWN;
+ 
+   switch (get_direction ())
+     {
+     default:
+       gcc_unreachable ();
+     case DIR_ASCENDING:
+       /* LHS is in [base_cst, +ve infinity), assuming no overflow.  */
+       switch (op)
+ 	{
+ 	case LE_EXPR:
+ 	case LT_EXPR:
+ 	  {
+ 	    /* [BASE, +INF) OP RHS:
+ 	       This is either true or false at +ve ininity,
+ 	       It can be true for points X where X OP RHS, so we have either
+ 	       "false", or "unknown".  */
+ 	    tree base_op_rhs = fold_binary (op, boolean_type_node,
+ 					    base_cst, rhs_cst);
+ 	    if (base_op_rhs == boolean_true_node)
+ 	      return tristate::TS_UNKNOWN;
+ 	    else
+ 	      return tristate::TS_FALSE;
+ 	  }
+ 
+ 	case GE_EXPR:
+ 	case GT_EXPR:
+ 	  {
+ 	    /* [BASE, +INF) OP RHS:
+ 	       This is true at +ve infinity.  It will be true everywhere
+ 	       in the range if BASE >= RHS.  */
+ 	    tree base_op_rhs = fold_binary (op, boolean_type_node,
+ 					    base_cst, rhs_cst);
+ 	    if (base_op_rhs == boolean_true_node)
+ 	      return tristate::TS_TRUE;
+ 	    else
+ 	      return tristate::TS_UNKNOWN;
+ 	  }
+ 
+ 	case EQ_EXPR:
+ 	  {
+ 	    /* [BASE, +INF) == RHS:
+ 	       Could this be true at any point in the range?  If so we
+ 	       have "unknown", otherwise we have "false".  */
+ 	    tree base_le_rhs = fold_binary (LE_EXPR, boolean_type_node,
+ 					    base_cst, rhs_cst);
+ 	    if (base_le_rhs == boolean_true_node)
+ 	      return tristate::TS_UNKNOWN;
+ 	    else
+ 	      return tristate::TS_FALSE;
+ 	  }
+ 
+ 	case NE_EXPR:
+ 	  {
+ 	    /* [BASE, +INF) != RHS:
+ 	       Could we have equality at any point in the range?  If so we
+ 	       have "unknown", otherwise we have "true".  */
+ 	    tree base_le_rhs = fold_binary (LE_EXPR, boolean_type_node,
+ 					    base_cst, rhs_cst);
+ 	    if (base_le_rhs == boolean_true_node)
+ 	      return tristate::TS_UNKNOWN;
+ 	    else
+ 	      return tristate::TS_TRUE;
+ 	  }
+ 
+ 	default:
+ 	  return tristate::TS_UNKNOWN;
+ 	}
+ 
+     case DIR_DESCENDING:
+       /* LHS is in (-ve infinity, base_cst], assuming no overflow.  */
+       return tristate::TS_UNKNOWN;
+ 
+     case DIR_UNKNOWN:
+       return tristate::TS_UNKNOWN;
+     }
+ }
+ 
+ /* class placeholder_svalue : public svalue.  */
+ 
+ /* Implementation of svalue::dump_to_pp vfunc for placeholder_svalue.  */
+ 
+ void
+ placeholder_svalue::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     pp_printf (pp, "PLACEHOLDER(%qs)", m_name);
+   else
+     pp_printf (pp, "placeholder_svalue (%qs)", m_name);
+ }
+ 
+ /* Implementation of svalue::accept vfunc for placeholder_svalue.  */
+ 
+ void
+ placeholder_svalue::accept (visitor *v) const
+ {
+   v->visit_placeholder_svalue (this);
+ }
+ 
+ /* class unmergeable_svalue : public svalue.  */
+ 
+ /* Implementation of svalue::dump_to_pp vfunc for unmergeable_svalue.  */
+ 
+ void
+ unmergeable_svalue::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       pp_string (pp, "UNMERGEABLE(");
+       m_arg->dump_to_pp (pp, simple);
+       pp_character (pp, ')');
+     }
+   else
+     {
+       pp_string (pp, "unmergeable_svalue (");
+       m_arg->dump_to_pp (pp, simple);
+       pp_character (pp, ')');
+     }
+ }
+ 
+ /* Implementation of svalue::accept vfunc for unmergeable_svalue.  */
+ 
+ void
+ unmergeable_svalue::accept (visitor *v) const
+ {
+   v->visit_unmergeable_svalue (this);
+   m_arg->accept (v);
+ }
+ 
+ /* Implementation of svalue::implicitly_live_p vfunc for unmergeable_svalue.  */
+ 
+ bool
+ unmergeable_svalue::implicitly_live_p (const svalue_set *live_svalues,
+ 				       const region_model *model) const
+ {
+   return get_arg ()->live_p (live_svalues, model);
+ }
+ 
+ /* class compound_svalue : public svalue.  */
+ 
+ compound_svalue::compound_svalue (tree type, const binding_map &map)
+ : svalue (calc_complexity (map), type), m_map (map)
+ {
+   /* All keys within the underlying binding_map are required to be concrete,
+      not symbolic.  */
+ #if CHECKING_P
+   for (iterator_t iter = begin (); iter != end (); ++iter)
+     {
+       const binding_key *key = (*iter).first;
+       gcc_assert (key->concrete_p ());
+     }
+ #endif
+ }
+ 
+ /* Implementation of svalue::dump_to_pp vfunc for compound_svalue.  */
+ 
+ void
+ compound_svalue::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       pp_string (pp, "COMPOUND(");
+       m_map.dump_to_pp (pp, simple, false);
+       pp_character (pp, ')');
+     }
+   else
+     {
+       pp_string (pp, "compound_svalue (");
+       pp_string (pp, ", ");
+       pp_character (pp, '{');
+       m_map.dump_to_pp (pp, simple, false);
+       pp_string (pp, "}, ");
+       pp_character (pp, ')');
+     }
+ }
+ 
+ /* Implementation of svalue::accept vfunc for compound_svalue.  */
+ 
+ void
+ compound_svalue::accept (visitor *v) const
+ {
+   v->visit_compound_svalue (this);
+   for (binding_map::iterator_t iter = m_map.begin ();
+        iter != m_map.end (); ++iter)
+     {
+       //(*iter).first.accept (v);
+       (*iter).second->accept (v);
+     }
+ }
+ 
+ /* Calculate what the complexity of a compound_svalue instance for MAP
+    will be, based on the svalues bound within MAP.  */
+ 
+ complexity
+ compound_svalue::calc_complexity (const binding_map &map)
+ {
+   unsigned num_child_nodes = 0;
+   unsigned max_child_depth = 0;
+   for (binding_map::iterator_t iter = map.begin ();
+        iter != map.end (); ++iter)
+     {
+       const complexity &sval_c = (*iter).second->get_complexity ();
+       num_child_nodes += sval_c.m_num_nodes;
+       max_child_depth = MAX (max_child_depth, sval_c.m_max_depth);
+     }
+   return complexity (num_child_nodes + 1, max_child_depth + 1);
+ }
+ 
+ /* class conjured_svalue : public svalue.  */
+ 
+ /* Implementation of svalue::dump_to_pp vfunc for conjured_svalue.  */
+ 
+ void
+ conjured_svalue::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       pp_string (pp, "CONJURED(");
+       pp_gimple_stmt_1 (pp, m_stmt, 0, (dump_flags_t)0);
+       pp_string (pp, ", ");
+       m_id_reg->dump_to_pp (pp, simple);
+       pp_character (pp, ')');
+     }
+   else
+     {
+       pp_string (pp, "conjured_svalue (");
+       pp_string (pp, ", ");
+       pp_gimple_stmt_1 (pp, m_stmt, 0, (dump_flags_t)0);
+       pp_string (pp, ", ");
+       m_id_reg->dump_to_pp (pp, simple);
+       pp_character (pp, ')');
+     }
+ }
+ 
+ /* Implementation of svalue::accept vfunc for conjured_svalue.  */
+ 
+ void
+ conjured_svalue::accept (visitor *v) const
+ {
+   v->visit_conjured_svalue (this);
+   m_id_reg->accept (v);
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/svalue.h gcc-11.1.0/gcc/analyzer/svalue.h
*** gcc-10.3.0/gcc/analyzer/svalue.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/analyzer/svalue.h	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,1156 ----
+ /* Symbolic values.
+    Copyright (C) 2019-2021 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.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/>.  */
+ 
+ #ifndef GCC_ANALYZER_SVALUE_H
+ #define GCC_ANALYZER_SVALUE_H
+ 
+ #include "analyzer/complexity.h"
+ 
+ using namespace ana;
+ 
+ namespace ana {
+ 
+ /* An enum for discriminating between the different concrete subclasses
+    of svalue.  */
+ 
+ enum svalue_kind
+ {
+   SK_REGION,
+   SK_CONSTANT,
+   SK_UNKNOWN,
+   SK_POISONED,
+   SK_SETJMP,
+   SK_INITIAL,
+   SK_UNARYOP,
+   SK_BINOP,
+   SK_SUB,
+   SK_UNMERGEABLE,
+   SK_PLACEHOLDER,
+   SK_WIDENING,
+   SK_COMPOUND,
+   SK_CONJURED
+ };
+ 
+ /* svalue and its subclasses.
+ 
+    The class hierarchy looks like this (using indentation to show
+    inheritance, and with svalue_kinds shown for the concrete subclasses):
+ 
+    svalue
+      region_svalue (SK_REGION): a pointer to a region
+      constant_svalue (SK_CONSTANT): a constant
+      unknown_svalue (SK_UNKNOWN): an unknowable value
+      poisoned_svalue (SK_POISONED): a unusable value (undefined)
+      setjmp_svalue (SK_SETJMP): a setjmp/longjmp buffer
+      initial_svalue (SK_INITIAL): the initial value of a region
+      unaryop_svalue (SK_UNARYOP): unary operation on another svalue
+      binop_svalue (SK_BINOP): binary operation on two svalues
+      sub_svalue (SK_SUB): the result of accessing a subregion
+      unmergeable_svalue (SK_UNMERGEABLE): a value that is so interesting
+        from a control-flow perspective that it can inhibit state-merging
+      placeholder_svalue (SK_PLACEHOLDER): for use in selftests.
+      widening_svalue (SK_WIDENING): a merger of two svalues (possibly
+        in an iteration).
+      compound_svalue (SK_COMPOUND): a mapping of bit-ranges to svalues
+      conjured_svalue (SK_CONJURED): a value arising from a stmt.  */
+ 
+ /* An abstract base class representing a value held by a region of memory.  */
+ 
+ class svalue
+ {
+ public:
+   virtual ~svalue () {}
+ 
+   tree get_type () const { return m_type; }
+ 
+   virtual enum svalue_kind get_kind () const = 0;
+ 
+   void print (const region_model &model,
+ 	      pretty_printer *pp) const;
+ 
+   virtual void dump_to_pp (pretty_printer *pp, bool simple) const = 0;
+   void dump (bool simple=true) const;
+   label_text get_desc (bool simple=true) const;
+ 
+   json::value *to_json () const;
+ 
+   virtual const region_svalue *
+   dyn_cast_region_svalue () const { return NULL; }
+   virtual const constant_svalue *
+   dyn_cast_constant_svalue () const { return NULL; }
+   virtual const poisoned_svalue *
+   dyn_cast_poisoned_svalue () const { return NULL; }
+   virtual const setjmp_svalue *
+   dyn_cast_setjmp_svalue () const { return NULL; }
+   virtual const initial_svalue *
+   dyn_cast_initial_svalue () const { return NULL; }
+   virtual const unaryop_svalue *
+   dyn_cast_unaryop_svalue () const { return NULL; }
+   virtual const binop_svalue *
+   dyn_cast_binop_svalue () const { return NULL; }
+   virtual const sub_svalue *
+   dyn_cast_sub_svalue () const { return NULL; }
+   virtual const unmergeable_svalue *
+   dyn_cast_unmergeable_svalue () const { return NULL; }
+   virtual const widening_svalue *
+   dyn_cast_widening_svalue () const { return NULL; }
+   virtual const compound_svalue *
+   dyn_cast_compound_svalue () const { return NULL; }
+   virtual const conjured_svalue *
+   dyn_cast_conjured_svalue () const { return NULL; }
+ 
+   tree maybe_get_constant () const;
+   const svalue *maybe_undo_cast () const;
+   const svalue *unwrap_any_unmergeable () const;
+ 
+   const svalue *can_merge_p (const svalue *other,
+ 			      region_model_manager *mgr,
+ 			      model_merger *merger) const;
+ 
+   const complexity &get_complexity () const { return m_complexity; }
+ 
+   virtual void accept (visitor *v) const  = 0;
+ 
+   bool live_p (const svalue_set *live_svalues,
+ 	       const region_model *model) const;
+   virtual bool implicitly_live_p (const svalue_set *live_svalues,
+ 				  const region_model *model) const;
+ 
+   static int cmp_ptr (const svalue *, const svalue *);
+   static int cmp_ptr_ptr (const void *, const void *);
+ 
+   bool involves_p (const svalue *other) const;
+ 
+  protected:
+   svalue (complexity c, tree type)
+   : m_complexity (c), m_type (type)
+   {}
+ 
+  private:
+   complexity m_complexity;
+   tree m_type;
+ };
+ 
+ /* Concrete subclass of svalue representing a pointer value that points to
+    a known region  */
+ 
+ class region_svalue : public svalue
+ {
+ public:
+   /* A support class for uniquifying instances of region_svalue.  */
+   struct key_t
+   {
+     key_t (tree type, const region *reg)
+     : m_type (type), m_reg (reg)
+     {}
+ 
+     hashval_t hash () const
+     {
+       inchash::hash hstate;
+       hstate.add_ptr (m_type);
+       hstate.add_ptr (m_reg);
+       return hstate.end ();
+     }
+ 
+     bool operator== (const key_t &other) const
+     {
+       return (m_type == other.m_type && m_reg == other.m_reg);
+     }
+ 
+     void mark_deleted () { m_type = reinterpret_cast<tree> (1); }
+     void mark_empty () { m_type = NULL_TREE; }
+     bool is_deleted () const { return m_type == reinterpret_cast<tree> (1); }
+     bool is_empty () const { return m_type == NULL_TREE; }
+ 
+     tree m_type;
+     const region *m_reg;
+   };
+ 
+   region_svalue (tree type, const region *reg)
+   : svalue (complexity (reg), type),
+     m_reg (reg)
+   {
+     gcc_assert (m_reg != NULL);
+   }
+ 
+   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_REGION; }
+   const region_svalue *
+   dyn_cast_region_svalue () const FINAL OVERRIDE { return this; }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   void accept (visitor *v) const FINAL OVERRIDE;
+   bool implicitly_live_p (const svalue_set *,
+ 			  const region_model *) const FINAL OVERRIDE;
+ 
+   const region * get_pointee () const { return m_reg; }
+ 
+   static tristate eval_condition (const region_svalue *lhs_ptr,
+ 				  enum tree_code op,
+ 				  const region_svalue *rhs_ptr);
+ 
+  private:
+   const region *m_reg;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const region_svalue *>::test (const svalue *sval)
+ {
+   return sval->get_kind () == SK_REGION;
+ }
+ 
+ template <> struct default_hash_traits<region_svalue::key_t>
+ : public member_function_hash_traits<region_svalue::key_t>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ namespace ana {
+ 
+ /* Concrete subclass of svalue representing a specific constant value.  */
+ 
+ class constant_svalue : public svalue
+ {
+ public:
+   constant_svalue (tree cst_expr)
+   : svalue (complexity (1, 1), TREE_TYPE (cst_expr)), m_cst_expr (cst_expr)
+   {
+     gcc_assert (cst_expr);
+     gcc_assert (CONSTANT_CLASS_P (cst_expr));
+   }
+ 
+   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_CONSTANT; }
+   const constant_svalue *
+   dyn_cast_constant_svalue () const FINAL OVERRIDE { return this; }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   void accept (visitor *v) const FINAL OVERRIDE;
+   bool implicitly_live_p (const svalue_set *,
+ 			  const region_model *) const FINAL OVERRIDE;
+ 
+   tree get_constant () const { return m_cst_expr; }
+   static tristate eval_condition (const constant_svalue *lhs,
+ 				  enum tree_code op,
+ 				  const constant_svalue *rhs);
+ 
+  private:
+   tree m_cst_expr;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const constant_svalue *>::test (const svalue *sval)
+ {
+   return sval->get_kind () == SK_CONSTANT;
+ }
+ 
+ namespace ana {
+ 
+ /* Concrete subclass of svalue representing an unknowable value, the bottom
+    value when thinking of svalues as a lattice.
+    This is a singleton (w.r.t. its manager): there is a single unknown_svalue
+    per type.  Self-comparisons of such instances yield "unknown".  */
+ 
+ class unknown_svalue : public svalue
+ {
+ public:
+   unknown_svalue (tree type)
+   : svalue (complexity (1, 1), type)
+   {}
+ 
+   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_UNKNOWN; }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   void accept (visitor *v) const FINAL OVERRIDE;
+ };
+ 
+ /* An enum describing a particular kind of "poisoned" value.  */
+ 
+ enum poison_kind
+ {
+   /* For use to describe freed memory.  */
+   POISON_KIND_FREED,
+ 
+   /* For use on pointers to regions within popped stack frames.  */
+   POISON_KIND_POPPED_STACK
+ };
+ 
+ extern const char *poison_kind_to_str (enum poison_kind);
+ 
+ /* Concrete subclass of svalue representing a value that should not
+    be used (e.g. uninitialized memory, freed memory).  */
+ 
+ class poisoned_svalue : public svalue
+ {
+ public:
+   /* A support class for uniquifying instances of poisoned_svalue.  */
+   struct key_t
+   {
+     key_t (enum poison_kind kind, tree type)
+     : m_kind (kind), m_type (type)
+     {}
+ 
+     hashval_t hash () const
+     {
+       inchash::hash hstate;
+       hstate.add_int (m_kind);
+       hstate.add_ptr (m_type);
+       return hstate.end ();
+     }
+ 
+     bool operator== (const key_t &other) const
+     {
+       return (m_kind == other.m_kind && m_type == other.m_type);
+     }
+ 
+     void mark_deleted () { m_type = reinterpret_cast<tree> (1); }
+     void mark_empty () { m_type = NULL_TREE; }
+     bool is_deleted () const { return m_type == reinterpret_cast<tree> (1); }
+     bool is_empty () const { return m_type == NULL_TREE; }
+ 
+     enum poison_kind m_kind;
+     tree m_type;
+   };
+ 
+   poisoned_svalue (enum poison_kind kind, tree type)
+   : svalue (complexity (1, 1), type), m_kind (kind) {}
+ 
+   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_POISONED; }
+   const poisoned_svalue *
+   dyn_cast_poisoned_svalue () const FINAL OVERRIDE { return this; }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   void accept (visitor *v) const FINAL OVERRIDE;
+ 
+   enum poison_kind get_poison_kind () const { return m_kind; }
+ 
+  private:
+   enum poison_kind m_kind;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const poisoned_svalue *>::test (const svalue *sval)
+ {
+   return sval->get_kind () == SK_POISONED;
+ }
+ 
+ template <> struct default_hash_traits<poisoned_svalue::key_t>
+ : public member_function_hash_traits<poisoned_svalue::key_t>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ namespace ana {
+ 
+ /* A bundle of information recording a setjmp/sigsetjmp call, corresponding
+    roughly to a jmp_buf.  */
+ 
+ struct setjmp_record
+ {
+   setjmp_record (const exploded_node *enode,
+ 		 const gcall *setjmp_call)
+   : m_enode (enode), m_setjmp_call (setjmp_call)
+   {
+   }
+ 
+   bool operator== (const setjmp_record &other) const
+   {
+     return (m_enode == other.m_enode
+ 	    && m_setjmp_call == other.m_setjmp_call);
+   }
+ 
+   void add_to_hash (inchash::hash *hstate) const
+   {
+     hstate->add_ptr (m_enode);
+     hstate->add_ptr (m_setjmp_call);
+   }
+ 
+   static int cmp (const setjmp_record &rec1, const setjmp_record &rec2);
+ 
+   const exploded_node *m_enode;
+   const gcall *m_setjmp_call;
+ };
+ 
+ /* Concrete subclass of svalue representing buffers for setjmp/sigsetjmp,
+    so that longjmp/siglongjmp can potentially "return" to an entirely
+    different function.  */
+ 
+ class setjmp_svalue : public svalue
+ {
+ public:
+   /* A support class for uniquifying instances of poisoned_svalue.  */
+   struct key_t
+   {
+     key_t (const setjmp_record &record, tree type)
+     : m_record (record), m_type (type)
+     {}
+ 
+     hashval_t hash () const
+     {
+       inchash::hash hstate;
+       m_record.add_to_hash (&hstate);
+       hstate.add_ptr (m_type);
+       return hstate.end ();
+     }
+ 
+     bool operator== (const key_t &other) const
+     {
+       return (m_record == other.m_record && m_type == other.m_type);
+     }
+ 
+     void mark_deleted () { m_type = reinterpret_cast<tree> (1); }
+     void mark_empty () { m_type = NULL_TREE; }
+     bool is_deleted () const { return m_type == reinterpret_cast<tree> (1); }
+     bool is_empty () const { return m_type == NULL_TREE; }
+ 
+     setjmp_record m_record;
+     tree m_type;
+   };
+ 
+   setjmp_svalue (const setjmp_record &setjmp_record,
+ 		  tree type)
+   : svalue (complexity (1, 1), type), m_setjmp_record (setjmp_record)
+   {}
+ 
+   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_SETJMP; }
+   const setjmp_svalue *
+   dyn_cast_setjmp_svalue () const FINAL OVERRIDE { return this; }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   void accept (visitor *v) const FINAL OVERRIDE;
+ 
+   int get_enode_index () const;
+ 
+   const setjmp_record &get_setjmp_record () const { return m_setjmp_record; }
+ 
+  private:
+   setjmp_record m_setjmp_record;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const setjmp_svalue *>::test (const svalue *sval)
+ {
+   return sval->get_kind () == SK_SETJMP;
+ }
+ 
+ template <> struct default_hash_traits<setjmp_svalue::key_t>
+ : public member_function_hash_traits<setjmp_svalue::key_t>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ namespace ana {
+ 
+ /* Concrete subclass of svalue representing the initial value of a
+    specific region.
+ 
+    This represents the initial value at the start of the analysis path,
+    as opposed to the first time the region is accessed during the path.
+    Hence as soon as we have a call to an unknown function, all previously
+    unmodelled globals become implicitly "unknown" rathen than "initial".  */
+ 
+ class initial_svalue : public svalue
+ {
+ public:
+   initial_svalue (tree type, const region *reg)
+   : svalue (complexity (reg), type), m_reg (reg)
+   {
+     gcc_assert (m_reg != NULL);
+   }
+ 
+   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_INITIAL; }
+   const initial_svalue *
+   dyn_cast_initial_svalue () const FINAL OVERRIDE { return this; }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   void accept (visitor *v) const FINAL OVERRIDE;
+   bool implicitly_live_p (const svalue_set *,
+ 			  const region_model *) const FINAL OVERRIDE;
+ 
+   bool initial_value_of_param_p () const;
+ 
+   const region *get_region () const { return m_reg; }
+ 
+  private:
+   const region *m_reg;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const initial_svalue *>::test (const svalue *sval)
+ {
+   return sval->get_kind () == SK_INITIAL;
+ }
+ 
+ namespace ana {
+ 
+ /* Concrete subclass of svalue representing a unary operation on
+    another svalues (e.g. a cast).  */
+ 
+ class unaryop_svalue : public svalue
+ {
+ public:
+   /* A support class for uniquifying instances of unaryop_svalue.  */
+   struct key_t
+   {
+     key_t (tree type, enum tree_code op, const svalue *arg)
+     : m_type (type), m_op (op), m_arg (arg)
+     {}
+ 
+     hashval_t hash () const
+     {
+       inchash::hash hstate;
+       hstate.add_ptr (m_type);
+       hstate.add_int (m_op);
+       hstate.add_ptr (m_arg);
+       return hstate.end ();
+     }
+ 
+     bool operator== (const key_t &other) const
+     {
+       return (m_type == other.m_type
+ 	      && m_op == other.m_op
+ 	      && m_arg == other.m_arg);
+     }
+ 
+     void mark_deleted () { m_type = reinterpret_cast<tree> (1); }
+     void mark_empty () { m_type = NULL_TREE; }
+     bool is_deleted () const { return m_type == reinterpret_cast<tree> (1); }
+     bool is_empty () const { return m_type == NULL_TREE; }
+ 
+     tree m_type;
+     enum tree_code m_op;
+     const svalue *m_arg;
+   };
+ 
+   unaryop_svalue (tree type, enum tree_code op, const svalue *arg)
+   : svalue (complexity (arg), type), m_op (op), m_arg (arg)
+   {
+   }
+ 
+   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_UNARYOP; }
+   const unaryop_svalue *
+   dyn_cast_unaryop_svalue () const FINAL OVERRIDE { return this; }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   void accept (visitor *v) const FINAL OVERRIDE;
+   bool implicitly_live_p (const svalue_set *,
+ 			  const region_model *) const FINAL OVERRIDE;
+ 
+   enum tree_code get_op () const { return m_op; }
+   const svalue *get_arg () const { return m_arg; }
+ 
+  private:
+   enum tree_code m_op;
+   const svalue *m_arg;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const unaryop_svalue *>::test (const svalue *sval)
+ {
+   return sval->get_kind () == SK_UNARYOP;
+ }
+ 
+ template <> struct default_hash_traits<unaryop_svalue::key_t>
+ : public member_function_hash_traits<unaryop_svalue::key_t>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ namespace ana {
+ 
+ /* Concrete subclass of svalue representing a binary operation of
+    two svalues.  */
+ 
+ class binop_svalue : public svalue
+ {
+ public:
+   /* A support class for uniquifying instances of binop_svalue.  */
+   struct key_t
+   {
+     key_t (tree type, enum tree_code op,
+ 	   const svalue *arg0, const svalue *arg1)
+     : m_type (type), m_op (op), m_arg0 (arg0), m_arg1 (arg1)
+     {}
+ 
+     hashval_t hash () const
+     {
+       inchash::hash hstate;
+       hstate.add_ptr (m_type);
+       hstate.add_int (m_op);
+       hstate.add_ptr (m_arg0);
+       hstate.add_ptr (m_arg1);
+       return hstate.end ();
+     }
+ 
+     bool operator== (const key_t &other) const
+     {
+       return (m_type == other.m_type
+ 	      && m_op == other.m_op
+ 	      && m_arg0 == other.m_arg0
+ 	      && m_arg1 == other.m_arg1);
+     }
+ 
+     void mark_deleted () { m_type = reinterpret_cast<tree> (1); }
+     void mark_empty () { m_type = NULL_TREE; }
+     bool is_deleted () const { return m_type == reinterpret_cast<tree> (1); }
+     bool is_empty () const { return m_type == NULL_TREE; }
+ 
+     tree m_type;
+     enum tree_code m_op;
+     const svalue *m_arg0;
+     const svalue *m_arg1;
+   };
+ 
+   binop_svalue (tree type, enum tree_code op,
+ 		 const svalue *arg0, const svalue *arg1)
+   : svalue (complexity::from_pair (arg0->get_complexity (),
+ 				    arg1->get_complexity ()),
+ 	     type),
+     m_op (op), m_arg0 (arg0), m_arg1 (arg1)
+   {
+   }
+ 
+   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_BINOP; }
+   const binop_svalue *dyn_cast_binop_svalue () const FINAL OVERRIDE
+   {
+     return this;
+   }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   void accept (visitor *v) const FINAL OVERRIDE;
+   bool implicitly_live_p (const svalue_set *,
+ 			  const region_model *) const FINAL OVERRIDE;
+ 
+   enum tree_code get_op () const { return m_op; }
+   const svalue *get_arg0 () const { return m_arg0; }
+   const svalue *get_arg1 () const { return m_arg1; }
+ 
+  private:
+   enum tree_code m_op;
+   const svalue *m_arg0;
+   const svalue *m_arg1;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const binop_svalue *>::test (const svalue *sval)
+ {
+   return sval->get_kind () == SK_BINOP;
+ }
+ 
+ template <> struct default_hash_traits<binop_svalue::key_t>
+ : public member_function_hash_traits<binop_svalue::key_t>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ namespace ana {
+ 
+ /* Concrete subclass of svalue representing the result of accessing a subregion
+    of another svalue (the value of a component/field of a struct, or an element
+    from an array).  */
+ 
+ class sub_svalue : public svalue
+ {
+ public:
+   /* A support class for uniquifying instances of sub_svalue.  */
+   struct key_t
+   {
+     key_t (tree type, const svalue *parent_svalue, const region *subregion)
+     : m_type (type), m_parent_svalue (parent_svalue), m_subregion (subregion)
+     {}
+ 
+     hashval_t hash () const
+     {
+       inchash::hash hstate;
+       hstate.add_ptr (m_type);
+       hstate.add_ptr (m_parent_svalue);
+       hstate.add_ptr (m_subregion);
+       return hstate.end ();
+     }
+ 
+     bool operator== (const key_t &other) const
+     {
+       return (m_type == other.m_type
+ 	      && m_parent_svalue == other.m_parent_svalue
+ 	      && m_subregion == other.m_subregion);
+     }
+ 
+     void mark_deleted () { m_type = reinterpret_cast<tree> (1); }
+     void mark_empty () { m_type = NULL_TREE; }
+     bool is_deleted () const { return m_type == reinterpret_cast<tree> (1); }
+     bool is_empty () const { return m_type == NULL_TREE; }
+ 
+     tree m_type;
+     const svalue *m_parent_svalue;
+     const region *m_subregion;
+   };
+   sub_svalue (tree type, const svalue *parent_svalue,
+ 	       const region *subregion);
+ 
+   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_SUB; }
+   const sub_svalue *dyn_cast_sub_svalue () const FINAL OVERRIDE
+   {
+     return this;
+   }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   void accept (visitor *v) const FINAL OVERRIDE;
+   bool implicitly_live_p (const svalue_set *,
+ 			  const region_model *) const FINAL OVERRIDE;
+ 
+   const svalue *get_parent () const { return m_parent_svalue; }
+   const region *get_subregion () const { return m_subregion; }
+ 
+  private:
+   const svalue *m_parent_svalue;
+   const region *m_subregion;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const sub_svalue *>::test (const svalue *sval)
+ {
+   return sval->get_kind () == SK_SUB;
+ }
+ 
+ template <> struct default_hash_traits<sub_svalue::key_t>
+ : public member_function_hash_traits<sub_svalue::key_t>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ namespace ana {
+ 
+ /* Concrete subclass of svalue: decorate another svalue,
+    so that the resulting svalue can be identified as being
+    "interesting to control flow".
+    For example, consider the return value from setjmp.  We
+    don't want to merge states in which the result is 0 with
+    those in which the result is non-zero.  By using an
+    unmergeable_svalue for the result, we can inhibit such merges
+    and have separate exploded nodes for those states, keeping
+    the first and second returns from setjmp distinct in the exploded
+    graph.  */
+ 
+ class unmergeable_svalue : public svalue
+ {
+ public:
+   unmergeable_svalue (const svalue *arg)
+   : svalue (complexity (arg), arg->get_type ()), m_arg (arg)
+   {
+   }
+ 
+   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_UNMERGEABLE; }
+   const unmergeable_svalue *
+   dyn_cast_unmergeable_svalue () const FINAL OVERRIDE { return this; }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   void accept (visitor *v) const FINAL OVERRIDE;
+   bool implicitly_live_p (const svalue_set *,
+ 			  const region_model *) const FINAL OVERRIDE;
+ 
+   const svalue *get_arg () const { return m_arg; }
+ 
+  private:
+   const svalue *m_arg;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const unmergeable_svalue *>::test (const svalue *sval)
+ {
+   return sval->get_kind () == SK_UNMERGEABLE;
+ }
+ 
+ namespace ana {
+ 
+ /* Concrete subclass of svalue for use in selftests, where
+    we want a specific but unknown svalue.
+    Unlike other svalue subclasses these aren't managed by
+    region_model_manager.  */
+ 
+ class placeholder_svalue : public svalue
+ {
+ public:
+   placeholder_svalue (tree type, const char *name)
+   : svalue (complexity (1, 1), type), m_name (name)
+   {
+   }
+ 
+   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_PLACEHOLDER; }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   void accept (visitor *v) const FINAL OVERRIDE;
+ 
+   const char *get_name () const { return m_name; }
+ 
+  private:
+   const char *m_name;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <placeholder_svalue *>::test (svalue *sval)
+ {
+   return sval->get_kind () == SK_PLACEHOLDER;
+ }
+ 
+ namespace ana {
+ 
+ /* Concrete subclass of svalue representing a "widening" seen when merging
+    states, widening from a base value to {base value, iter value} and thus
+    representing a possible fixed point in an iteration from the base to
+    +ve infinity, or -ve infinity, and thus useful for representing a value
+    within a loop.
+    We also need to capture the program_point at which the merger happens,
+    so that distinguish between different iterators, and thus handle
+    nested loops.  (currently we capture the function_point instead, for
+    simplicity of hashing).  */
+ 
+ class widening_svalue : public svalue
+ {
+ public:
+   /* A support class for uniquifying instances of widening_svalue.  */
+   struct key_t
+   {
+     key_t (tree type, const program_point &point,
+ 	   const svalue *base_sval, const svalue *iter_sval)
+     : m_type (type), m_point (point.get_function_point ()),
+       m_base_sval (base_sval), m_iter_sval (iter_sval)
+     {}
+ 
+     hashval_t hash () const
+     {
+       inchash::hash hstate;
+       hstate.add_ptr (m_base_sval);
+       hstate.add_ptr (m_iter_sval);
+       return hstate.end ();
+     }
+ 
+     bool operator== (const key_t &other) const
+     {
+       return (m_type == other.m_type
+ 	      && m_point == other.m_point
+ 	      && m_base_sval == other.m_base_sval
+ 	      && m_iter_sval == other.m_iter_sval);
+     }
+ 
+     void mark_deleted () { m_type = reinterpret_cast<tree> (1); }
+     void mark_empty () { m_type = NULL_TREE; }
+     bool is_deleted () const { return m_type == reinterpret_cast<tree> (1); }
+     bool is_empty () const { return m_type == NULL_TREE; }
+ 
+     tree m_type;
+     function_point m_point;
+     const svalue *m_base_sval;
+     const svalue *m_iter_sval;
+   };
+ 
+   enum direction_t
+     {
+      DIR_ASCENDING,
+      DIR_DESCENDING,
+      DIR_UNKNOWN
+     };
+ 
+   widening_svalue (tree type, const program_point &point,
+ 		   const svalue *base_sval, const svalue *iter_sval)
+   : svalue (complexity::from_pair (base_sval->get_complexity (),
+ 				   iter_sval->get_complexity ()),
+ 	    type),
+     m_point (point.get_function_point ()),
+     m_base_sval (base_sval), m_iter_sval (iter_sval)
+   {
+   }
+ 
+   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_WIDENING; }
+   const widening_svalue *dyn_cast_widening_svalue () const FINAL OVERRIDE
+   {
+     return this;
+   }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   void accept (visitor *v) const FINAL OVERRIDE;
+ 
+   const function_point &get_point () const { return m_point; }
+   const svalue *get_base_svalue () const { return m_base_sval; }
+   const svalue *get_iter_svalue () const { return m_iter_sval; }
+ 
+   enum direction_t get_direction () const;
+ 
+   tristate eval_condition_without_cm (enum tree_code op,
+ 				      tree rhs_cst) const;
+ 
+  private:
+   function_point m_point;
+   const svalue *m_base_sval;
+   const svalue *m_iter_sval;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <widening_svalue *>::test (svalue *sval)
+ {
+   return sval->get_kind () == SK_WIDENING;
+ }
+ 
+ template <> struct default_hash_traits<widening_svalue::key_t>
+ : public member_function_hash_traits<widening_svalue::key_t>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ namespace ana {
+ 
+ /* Concrete subclass of svalue representing a mapping of bit-ranges
+    to svalues, analogous to a cluster within the store.
+ 
+    This is for use in places where we want to represent a store-like
+    mapping, but are required to use an svalue, such as when handling
+    compound assignments and compound return values.
+ 
+    All keys within the underlying binding_map are required to be concrete,
+    not symbolic.
+ 
+    Instances of this class shouldn't be bound as-is into the store;
+    instead they should be unpacked.  Similarly, they should not be
+    nested.  */
+ 
+ class compound_svalue : public svalue
+ {
+ public:
+   typedef binding_map::iterator_t iterator_t;
+ 
+   /* A support class for uniquifying instances of compound_svalue.
+      Note that to avoid copies, keys store pointers to binding_maps,
+      rather than the maps themselves.  */
+   struct key_t
+   {
+     key_t (tree type, const binding_map *map_ptr)
+     : m_type (type), m_map_ptr (map_ptr)
+     {}
+ 
+     hashval_t hash () const
+     {
+       inchash::hash hstate;
+       hstate.add_ptr (m_type);
+       //hstate.add_ptr (m_map_ptr); // TODO
+       return hstate.end ();
+     }
+ 
+     bool operator== (const key_t &other) const
+     {
+       return (m_type == other.m_type
+ 	      && *m_map_ptr == *other.m_map_ptr);
+     }
+ 
+     void mark_deleted () { m_type = reinterpret_cast<tree> (1); }
+     void mark_empty () { m_type = NULL_TREE; }
+     bool is_deleted () const { return m_type == reinterpret_cast<tree> (1); }
+     bool is_empty () const { return m_type == NULL_TREE; }
+ 
+     tree m_type;
+     const binding_map *m_map_ptr;
+   };
+ 
+   compound_svalue (tree type, const binding_map &map);
+ 
+   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_COMPOUND; }
+   const compound_svalue *dyn_cast_compound_svalue () const FINAL OVERRIDE
+   {
+     return this;
+   }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   void accept (visitor *v) const FINAL OVERRIDE;
+ 
+   const binding_map &get_map () const { return m_map; }
+ 
+   iterator_t begin () const { return m_map.begin (); }
+   iterator_t end () const { return m_map.end (); }
+ 
+   struct key_t make_key () const
+   {
+     return key_t (get_type (), &m_map);
+   }
+ 
+  private:
+   static complexity calc_complexity (const binding_map &map);
+ 
+   binding_map m_map;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <compound_svalue *>::test (svalue *sval)
+ {
+   return sval->get_kind () == SK_COMPOUND;
+ }
+ 
+ template <> struct default_hash_traits<compound_svalue::key_t>
+ : public member_function_hash_traits<compound_svalue::key_t>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ namespace ana {
+ 
+ /* A defined value arising from a statement, where we want to identify a
+    particular unknown value, rather than resorting to the unknown_value
+    singleton, so that the value can have sm-state.
+ 
+    Comparisons of variables that share the same conjured_svalue are known
+    to be equal, even if we don't know what the value is.
+ 
+    For example, this is used for the values of regions that may have been
+    touched when calling an unknown function.
+ 
+    The value captures a region as well as a stmt in order to avoid falsely
+    aliasing the various values that could arise in one statement.  For
+    example, after:
+       unknown_fn (&a, &b);
+    we want values to clobber a and b with, but we don't want to use the
+    same value, or it would falsely implicitly assume that a == b.  */
+ 
+ class conjured_svalue : public svalue
+ {
+ public:
+   typedef binding_map::iterator_t iterator_t;
+ 
+   /* A support class for uniquifying instances of conjured_svalue.  */
+   struct key_t
+   {
+     key_t (tree type, const gimple *stmt, const region *id_reg)
+     : m_type (type), m_stmt (stmt), m_id_reg (id_reg)
+     {}
+ 
+     hashval_t hash () const
+     {
+       inchash::hash hstate;
+       hstate.add_ptr (m_type);
+       hstate.add_ptr (m_stmt);
+       hstate.add_ptr (m_id_reg);
+       return hstate.end ();
+     }
+ 
+     bool operator== (const key_t &other) const
+     {
+       return (m_type == other.m_type
+ 	      && m_stmt == other.m_stmt
+ 	      && m_id_reg == other.m_id_reg);
+     }
+ 
+     /* Use m_stmt to mark empty/deleted, as m_type can be NULL for
+        legitimate instances.  */
+     void mark_deleted () { m_stmt = reinterpret_cast<const gimple *> (1); }
+     void mark_empty () { m_stmt = NULL; }
+     bool is_deleted () const
+     {
+       return m_stmt == reinterpret_cast<const gimple *> (1);
+     }
+     bool is_empty () const { return m_stmt == NULL; }
+ 
+     tree m_type;
+     const gimple *m_stmt;
+     const region *m_id_reg;
+   };
+ 
+   conjured_svalue (tree type, const gimple *stmt, const region *id_reg)
+   : svalue (complexity (id_reg), type),
+     m_stmt (stmt), m_id_reg (id_reg)
+   {
+     gcc_assert (m_stmt != NULL);
+   }
+ 
+   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_CONJURED; }
+   const conjured_svalue *dyn_cast_conjured_svalue () const FINAL OVERRIDE
+   {
+     return this;
+   }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
+   void accept (visitor *v) const FINAL OVERRIDE;
+ 
+   const gimple *get_stmt () const { return m_stmt; }
+   const region *get_id_region () const { return m_id_reg; }
+ 
+  private:
+   const gimple *m_stmt;
+   const region *m_id_reg;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <conjured_svalue *>::test (svalue *sval)
+ {
+   return sval->get_kind () == SK_CONJURED;
+ }
+ 
+ template <> struct default_hash_traits<conjured_svalue::key_t>
+ : public member_function_hash_traits<conjured_svalue::key_t>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ #endif /* GCC_ANALYZER_SVALUE_H */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/trimmed-graph.cc gcc-11.1.0/gcc/analyzer/trimmed-graph.cc
*** gcc-10.3.0/gcc/analyzer/trimmed-graph.cc	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/analyzer/trimmed-graph.cc	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,172 ----
+ /* Trimming an exploded graph to a subset of nodes and edges.
+    Copyright (C) 2021 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.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/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "pretty-print.h"
+ #include "gcc-rich-location.h"
+ #include "gimple-pretty-print.h"
+ #include "function.h"
+ #include "diagnostic-core.h"
+ #include "diagnostic-event-id.h"
+ #include "diagnostic-path.h"
+ #include "alloc-pool.h"
+ #include "fibonacci_heap.h"
+ #include "shortest-paths.h"
+ #include "sbitmap.h"
+ #include "bitmap.h"
+ #include "tristate.h"
+ #include "selftest.h"
+ #include "ordered-hash-map.h"
+ #include "json.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "analyzer/sm.h"
+ #include "analyzer/pending-diagnostic.h"
+ #include "analyzer/diagnostic-manager.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
+ #include "analyzer/region-model.h"
+ #include "analyzer/constraint-manager.h"
+ #include "cfg.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "gimple-iterator.h"
+ #include "cgraph.h"
+ #include "digraph.h"
+ #include "analyzer/supergraph.h"
+ #include "analyzer/program-state.h"
+ #include "analyzer/exploded-graph.h"
+ #include "analyzer/trimmed-graph.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* class trimmed_node : public dnode<tg_traits>.  */
+ 
+ /* Implementation of dump_dot vfunc, delegating to the inner node.  */
+ 
+ void
+ trimmed_node::dump_dot (graphviz_out *gv,
+ 			const dump_args_t &args) const
+ {
+   m_inner_node->dump_dot (gv, args.m_inner_args);
+ }
+ 
+ /* class trimmed_edge : public dedge<tg_traits>.  */
+ 
+ /* trimmed_edge's ctor.  */
+ 
+ trimmed_edge::trimmed_edge (trimmed_node *src, trimmed_node *dest,
+ 			    const exploded_edge *inner_edge)
+ : dedge<tg_traits> (src, dest), m_inner_edge (inner_edge)
+ {
+ }
+ 
+ /* Implementation of dump_dot vfunc, delegating to the inner edge.  */
+ 
+ void
+ trimmed_edge::dump_dot (graphviz_out *gv, const dump_args_t &args) const
+ {
+   m_inner_edge->dump_dot (gv, args.m_inner_args);
+ }
+ 
+ /* class trimmed_graph : public digraph <tg_traits>.  */
+ 
+ /* Ctor for trimmed_graph: construct a graph equivalent to trimming
+    INNER_GRAPH to all nodes that can reach INNER_DST_NODE.  */
+ 
+ trimmed_graph::trimmed_graph (const exploded_graph &inner_graph,
+ 			      const exploded_node *inner_dst_node)
+ : m_enodes (), m_eedges ()
+ {
+   /* Determine what subset of nodes and edges to include in the
+      trimmed graph.
+      Walk backwards from INNER_DST_NODE, finding nodes that reach it,
+      iteratively building the set of nodes and edges.  */
+   auto_vec <const exploded_node *> worklist;
+   worklist.safe_push (inner_dst_node);
+   m_enodes.add (inner_dst_node);
+   while (worklist.length () > 0)
+     {
+       const exploded_node *inner_node = worklist.pop ();
+       exploded_edge *inner_pred;
+       unsigned i;
+       FOR_EACH_VEC_ELT (inner_node->m_preds, i, inner_pred)
+ 	{
+ 	  if (!m_enodes.contains (inner_pred->m_src))
+ 	    {
+ 	      worklist.safe_push (inner_pred->m_src);
+ 	      m_enodes.add (inner_pred->m_src);
+ 	    }
+ 	  m_eedges.add (inner_pred);
+ 	}
+     }
+ 
+   /* Create trimmed nodes for all enodes in the set.  */
+   {
+     /* Iterate over the vec rather than the hash_set
+        to ensure deterministic order.  */
+     exploded_node *inner_node;
+     unsigned i;
+     FOR_EACH_VEC_ELT (inner_graph.m_nodes, i, inner_node)
+       if (m_enodes.contains (inner_node))
+ 	{
+ 	  trimmed_node *tnode = new trimmed_node (inner_node);
+ 	  add_node (tnode);
+ 	  m_map_from_enode_to_tnode.put (inner_node, tnode);
+ 	}
+   }
+ 
+   /* Create trimmed edges for all edges in the set.  */
+   {
+     /* Iterate over the vec rather than the hash_set
+        to ensure deterministic order.  */
+     exploded_edge *inner_edge;
+     unsigned i;
+     FOR_EACH_VEC_ELT (inner_graph.m_edges, i, inner_edge)
+       if (m_eedges.contains (inner_edge))
+ 	{
+ 	  const exploded_node *inner_src = inner_edge->m_src;
+ 	  const exploded_node *inner_dest = inner_edge->m_dest;
+ 	  trimmed_node *tsrc = *m_map_from_enode_to_tnode.get (inner_src);
+ 	  trimmed_node *tdest = *m_map_from_enode_to_tnode.get (inner_dest);
+ 	  trimmed_edge *tedge = new trimmed_edge (tsrc, tdest, inner_edge);
+ 	  add_edge (tedge);
+ 	}
+   }
+ }
+ 
+ /* Dump stats about this graph to LOGGER.  */
+ 
+ void
+ trimmed_graph::log_stats (logger *logger) const
+ {
+   logger->log ("#nodes: %i", m_nodes.length ());
+   logger->log ("#edges: %i", m_edges.length ());
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-10.3.0/gcc/analyzer/trimmed-graph.h gcc-11.1.0/gcc/analyzer/trimmed-graph.h
*** gcc-10.3.0/gcc/analyzer/trimmed-graph.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/analyzer/trimmed-graph.h	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,122 ----
+ /* Trimming an exploded graph to a subset of nodes and edges.
+    Copyright (C) 2021 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.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/>.  */
+ 
+ #ifndef GCC_ANALYZER_TRIMMED_GRAPH_H
+ #define GCC_ANALYZER_TRIMMED_GRAPH_H
+ 
+ namespace ana {
+ 
+ /* Forward decls.  */
+ 
+ class trimmed_node;
+ class trimmed_edge;
+ class trimmed_graph;
+ class trimmed_cluster;
+ 
+ /* A traits class for trimming a digraph to a subset of nodes and edges.  */
+ 
+ struct tg_traits
+ {
+   typedef trimmed_node node_t;
+   typedef trimmed_edge edge_t;
+   typedef trimmed_graph graph_t;
+   struct dump_args_t
+   {
+     typedef typename eg_traits::dump_args_t inner_args_t;
+ 
+     dump_args_t (const inner_args_t &inner_args)
+     : m_inner_args (inner_args)
+     {
+     }
+ 
+     const inner_args_t &m_inner_args;
+   };
+   typedef trimmed_cluster cluster_t;
+ };
+ 
+ /* A node within the trimmed_graph, corresponding to an "inner node"
+    within the original exploded_graph.  */
+ 
+ class trimmed_node : public dnode<tg_traits>
+ {
+ public:
+   trimmed_node (const exploded_node *inner_node)
+   : m_inner_node (inner_node) {}
+ 
+   void dump_dot (graphviz_out *gv,
+ 		 const dump_args_t &args) const FINAL OVERRIDE;
+ 
+ private:
+   const exploded_node *m_inner_node;
+ };
+ 
+ /* An edge within the trimmed_graph, corresponding to an "inner edge"
+    within the original exploded_graph.  */
+ 
+ class trimmed_edge : public dedge<tg_traits>
+ {
+  public:
+   trimmed_edge (trimmed_node *src, trimmed_node *dest,
+ 		const exploded_edge *inner_edge);
+ 
+   void dump_dot (graphviz_out *gv,
+ 		 const dump_args_t &args) const FINAL OVERRIDE;
+ 
+  private:
+   const exploded_edge *m_inner_edge;
+ };
+ 
+ /* A digraph for trimming an exploded_graph to the subset of nodes and edges
+    from which paths reach INNER_DST_NODE (along with a precanned way to print
+    these in .dot form).  */
+ 
+ class trimmed_graph : public digraph <tg_traits>
+ {
+  public:
+   trimmed_graph (const exploded_graph &inner_graph,
+ 		 const exploded_node *inner_dst_node);
+ 
+   bool contains_p (const exploded_edge *eedge) const
+   {
+     hash_set <const exploded_edge *> & mut
+       = const_cast <hash_set <const exploded_edge *> &> (m_eedges);
+     return mut.contains (eedge);
+   }
+ 
+   void log_stats (logger *logger) const;
+ 
+  private:
+   /* The subset of nodes in the inner graph that are in the
+      trimmed graph.  */
+   hash_set <const exploded_node *> m_enodes;
+   /* Likewise for edges.  */
+   hash_set <const exploded_edge *> m_eedges;
+ 
+   typedef hash_map<const exploded_node *, trimmed_node *> map_t;
+   map_t m_map_from_enode_to_tnode;
+ };
+ 
+ class trimmed_cluster : public cluster <tg_traits>
+ {
+ };
+ 
+ } // namespace ana
+ 
+ #endif /* GCC_ANALYZER_TRIMMED_GRAPH_H */
diff -Nrcpad gcc-10.3.0/gcc/array-traits.h gcc-11.1.0/gcc/array-traits.h
*** gcc-10.3.0/gcc/array-traits.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/array-traits.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Descriptions of array-like objects.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Descriptions of array-like objects.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/asan.c gcc-11.1.0/gcc/asan.c
*** gcc-10.3.0/gcc/asan.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/asan.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* AddressSanitizer, a fast memory error detector.
!    Copyright (C) 2012-2020 Free Software Foundation, Inc.
     Contributed by Kostya Serebryany <kcc@google.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* AddressSanitizer, a fast memory error detector.
!    Copyright (C) 2012-2021 Free Software Foundation, Inc.
     Contributed by Kostya Serebryany <kcc@google.com>
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 105,111 ****
       int
       foo ()
       {
!        char a[23] = {0};
         int b[2] = {0};
  
         a[5] = 1;
--- 105,111 ----
       int
       foo ()
       {
!        char a[24] = {0};
         int b[2] = {0};
  
         a[5] = 1;
*************** hash_set<tree> *asan_handled_variables =
*** 257,262 ****
--- 257,314 ----
  
  hash_set <tree> *asan_used_labels = NULL;
  
+ /* Global variables for HWASAN stack tagging.  */
+ /* hwasan_frame_tag_offset records the offset from the frame base tag that the
+    next object should have.  */
+ static uint8_t hwasan_frame_tag_offset = 0;
+ /* hwasan_frame_base_ptr is a pointer with the same address as
+    `virtual_stack_vars_rtx` for the current frame, and with the frame base tag
+    stored in it.  N.b. this global RTX does not need to be marked GTY, but is
+    done so anyway.  The need is not there since all uses are in just one pass
+    (cfgexpand) and there are no calls to ggc_collect between the uses.  We mark
+    it GTY(()) anyway to allow the use of the variable later on if needed by
+    future features.  */
+ static GTY(()) rtx hwasan_frame_base_ptr = NULL_RTX;
+ /* hwasan_frame_base_init_seq is the sequence of RTL insns that will initialize
+    the hwasan_frame_base_ptr.  When the hwasan_frame_base_ptr is requested, we
+    generate this sequence but do not emit it.  If the sequence was created it
+    is emitted once the function body has been expanded.
+ 
+    This delay is because the frame base pointer may be needed anywhere in the
+    function body, or needed by the expand_used_vars function.  Emitting once in
+    a known place is simpler than requiring the emission of the instructions to
+    be know where it should go depending on the first place the hwasan frame
+    base is needed.  */
+ static GTY(()) rtx_insn *hwasan_frame_base_init_seq = NULL;
+ 
+ /* Structure defining the extent of one object on the stack that HWASAN needs
+    to tag in the corresponding shadow stack space.
+ 
+    The range this object spans on the stack is between `untagged_base +
+    nearest_offset` and `untagged_base + farthest_offset`.
+    `tagged_base` is an rtx containing the same value as `untagged_base` but
+    with a random tag stored in the top byte.  We record both `untagged_base`
+    and `tagged_base` so that `hwasan_emit_prologue` can use both without having
+    to emit RTL into the instruction stream to re-calculate one from the other.
+    (`hwasan_emit_prologue` needs to use both bases since the
+    __hwasan_tag_memory call it emits uses an untagged value, and it calculates
+    the tag to store in shadow memory based on the tag_offset plus the tag in
+    tagged_base).  */
+ struct hwasan_stack_var
+ {
+   rtx untagged_base;
+   rtx tagged_base;
+   poly_int64 nearest_offset;
+   poly_int64 farthest_offset;
+   uint8_t tag_offset;
+ };
+ 
+ /* Variable recording all stack variables that HWASAN needs to tag.
+    Does not need to be marked as GTY(()) since every use is in the cfgexpand
+    pass and gcc_collect is not called in the middle of that pass.  */
+ static vec<hwasan_stack_var> hwasan_tagged_stack_vars;
+ 
+ 
  /* Sets shadow offset to value in string VAL.  */
  
  bool
*************** asan_sanitize_allocas_p (void)
*** 318,323 ****
--- 370,394 ----
    return (asan_sanitize_stack_p () && param_asan_protect_allocas);
  }
  
+ bool
+ asan_instrument_reads (void)
+ {
+   return (sanitize_flags_p (SANITIZE_ADDRESS) && param_asan_instrument_reads);
+ }
+ 
+ bool
+ asan_instrument_writes (void)
+ {
+   return (sanitize_flags_p (SANITIZE_ADDRESS) && param_asan_instrument_writes);
+ }
+ 
+ bool
+ asan_memintrin (void)
+ {
+   return (sanitize_flags_p (SANITIZE_ADDRESS) && param_asan_memintrin);
+ }
+ 
+ 
  /* Checks whether section SEC should be sanitized.  */
  
  static bool
*************** get_last_alloca_addr ()
*** 578,597 ****
     To overcome the issue we use following trick: pass new_sp as a second
     parameter to __asan_allocas_unpoison and rewrite it during expansion with
     new_sp + (virtual_dynamic_stack_rtx - sp) later in
!    expand_asan_emit_allocas_unpoison function.  */
  
  static void
  handle_builtin_stack_restore (gcall *call, gimple_stmt_iterator *iter)
  {
!   if (!iter || !asan_sanitize_allocas_p ())
      return;
  
-   tree last_alloca = get_last_alloca_addr ();
    tree restored_stack = gimple_call_arg (call, 0);
!   tree fn = builtin_decl_implicit (BUILT_IN_ASAN_ALLOCAS_UNPOISON);
!   gimple *g = gimple_build_call (fn, 2, last_alloca, restored_stack);
!   gsi_insert_before (iter, g, GSI_SAME_STMT);
!   g = gimple_build_assign (last_alloca, restored_stack);
    gsi_insert_before (iter, g, GSI_SAME_STMT);
  }
  
--- 649,695 ----
     To overcome the issue we use following trick: pass new_sp as a second
     parameter to __asan_allocas_unpoison and rewrite it during expansion with
     new_sp + (virtual_dynamic_stack_rtx - sp) later in
!    expand_asan_emit_allocas_unpoison function.
! 
!    HWASAN needs to do very similar, the eventual pseudocode should be:
!       __hwasan_tag_memory (virtual_stack_dynamic_rtx,
! 			   0,
! 			   new_sp - sp);
!       __builtin_stack_restore (new_sp)
! 
!    Need to use the same trick to handle STACK_DYNAMIC_OFFSET as described
!    above.  */
  
  static void
  handle_builtin_stack_restore (gcall *call, gimple_stmt_iterator *iter)
  {
!   if (!iter
!       || !(asan_sanitize_allocas_p () || hwasan_sanitize_allocas_p ()))
      return;
  
    tree restored_stack = gimple_call_arg (call, 0);
! 
!   gimple *g;
! 
!   if (hwasan_sanitize_allocas_p ())
!     {
!       enum internal_fn fn = IFN_HWASAN_ALLOCA_UNPOISON;
!       /* There is only one piece of information `expand_HWASAN_ALLOCA_UNPOISON`
! 	 needs to work.  This is the length of the area that we're
! 	 deallocating.  Since the stack pointer is known at expand time, the
! 	 position of the new stack pointer after deallocation is enough
! 	 information to calculate this length.  */
!       g = gimple_build_call_internal (fn, 1, restored_stack);
!     }
!   else
!     {
!       tree last_alloca = get_last_alloca_addr ();
!       tree fn = builtin_decl_implicit (BUILT_IN_ASAN_ALLOCAS_UNPOISON);
!       g = gimple_build_call (fn, 2, last_alloca, restored_stack);
!       gsi_insert_before (iter, g, GSI_SAME_STMT);
!       g = gimple_build_assign (last_alloca, restored_stack);
!     }
! 
    gsi_insert_before (iter, g, GSI_SAME_STMT);
  }
  
*************** handle_builtin_stack_restore (gcall *cal
*** 621,634 ****
  static void
  handle_builtin_alloca (gcall *call, gimple_stmt_iterator *iter)
  {
!   if (!iter || !asan_sanitize_allocas_p ())
      return;
  
    gassign *g;
    gcall *gg;
-   const HOST_WIDE_INT redzone_mask = ASAN_RED_ZONE_SIZE - 1;
- 
-   tree last_alloca = get_last_alloca_addr ();
    tree callee = gimple_call_fndecl (call);
    tree old_size = gimple_call_arg (call, 0);
    tree ptr_type = gimple_call_lhs (call) ? TREE_TYPE (gimple_call_lhs (call))
--- 719,730 ----
  static void
  handle_builtin_alloca (gcall *call, gimple_stmt_iterator *iter)
  {
!   if (!iter
!       || !(asan_sanitize_allocas_p () || hwasan_sanitize_allocas_p ()))
      return;
  
    gassign *g;
    gcall *gg;
    tree callee = gimple_call_fndecl (call);
    tree old_size = gimple_call_arg (call, 0);
    tree ptr_type = gimple_call_lhs (call) ? TREE_TYPE (gimple_call_lhs (call))
*************** handle_builtin_alloca (gcall *call, gimp
*** 638,643 ****
--- 734,801 ----
      = DECL_FUNCTION_CODE (callee) == BUILT_IN_ALLOCA
        ? 0 : tree_to_uhwi (gimple_call_arg (call, 1));
  
+   if (hwasan_sanitize_allocas_p ())
+     {
+       gimple_seq stmts = NULL;
+       location_t loc = gimple_location (gsi_stmt (*iter));
+       /*
+ 	 HWASAN needs a different expansion.
+ 
+ 	 addr = __builtin_alloca (size, align);
+ 
+ 	 should be replaced by
+ 
+ 	 new_size = size rounded up to HWASAN_TAG_GRANULE_SIZE byte alignment;
+ 	 untagged_addr = __builtin_alloca (new_size, align);
+ 	 tag = __hwasan_choose_alloca_tag ();
+ 	 addr = ifn_HWASAN_SET_TAG (untagged_addr, tag);
+ 	 __hwasan_tag_memory (untagged_addr, tag, new_size);
+ 	*/
+       /* Ensure alignment at least HWASAN_TAG_GRANULE_SIZE bytes so we start on
+ 	 a tag granule.  */
+       align = align > HWASAN_TAG_GRANULE_SIZE ? align : HWASAN_TAG_GRANULE_SIZE;
+ 
+       tree old_size = gimple_call_arg (call, 0);
+       tree new_size = gimple_build_round_up (&stmts, loc, size_type_node,
+ 					     old_size,
+ 					     HWASAN_TAG_GRANULE_SIZE);
+ 
+       /* Make the alloca call */
+       tree untagged_addr
+ 	= gimple_build (&stmts, loc,
+ 			as_combined_fn (BUILT_IN_ALLOCA_WITH_ALIGN), ptr_type,
+ 			new_size, build_int_cst (size_type_node, align));
+ 
+       /* Choose the tag.
+ 	 Here we use an internal function so we can choose the tag at expand
+ 	 time.  We need the decision to be made after stack variables have been
+ 	 assigned their tag (i.e. once the hwasan_frame_tag_offset variable has
+ 	 been set to one after the last stack variables tag).  */
+       tree tag = gimple_build (&stmts, loc, CFN_HWASAN_CHOOSE_TAG,
+ 			       unsigned_char_type_node);
+ 
+       /* Add tag to pointer.  */
+       tree addr
+ 	= gimple_build (&stmts, loc, CFN_HWASAN_SET_TAG, ptr_type,
+ 			untagged_addr, tag);
+ 
+       /* Tag shadow memory.
+ 	 NOTE: require using `untagged_addr` here for libhwasan API.  */
+       gimple_build (&stmts, loc, as_combined_fn (BUILT_IN_HWASAN_TAG_MEM),
+ 		    void_type_node, untagged_addr, tag, new_size);
+ 
+       /* Insert the built up code sequence into the original instruction stream
+ 	 the iterator points to.  */
+       gsi_insert_seq_before (iter, stmts, GSI_SAME_STMT);
+ 
+       /* Finally, replace old alloca ptr with NEW_ALLOCA.  */
+       replace_call_with_value (iter, addr);
+       return;
+     }
+ 
+   tree last_alloca = get_last_alloca_addr ();
+   const HOST_WIDE_INT redzone_mask = ASAN_RED_ZONE_SIZE - 1;
+ 
    /* If ALIGN > ASAN_RED_ZONE_SIZE, we embed left redzone into first ALIGN
       bytes of allocated space.  Otherwise, align alloca to ASAN_RED_ZONE_SIZE
       manually.  */
*************** get_mem_refs_of_builtin_call (gcall *cal
*** 790,795 ****
--- 948,978 ----
        break;
  
      case BUILT_IN_STRLEN:
+       /* Special case strlen here since its length is taken from its return
+ 	 value.
+ 
+ 	 The approach taken by the sanitizers is to check a memory access
+ 	 before it's taken.  For ASAN strlen is intercepted by libasan, so no
+ 	 check is inserted by the compiler.
+ 
+ 	 This function still returns `true` and provides a length to the rest
+ 	 of the ASAN pass in order to record what areas have been checked,
+ 	 avoiding superfluous checks later on.
+ 
+ 	 HWASAN does not intercept any of these internal functions.
+ 	 This means that checks for memory accesses must be inserted by the
+ 	 compiler.
+ 	 strlen is a special case, because we can tell the length from the
+ 	 return of the function, but that is not known until after the function
+ 	 has returned.
+ 
+ 	 Hence we can't check the memory access before it happens.
+ 	 We could check the memory access after it has already happened, but
+ 	 for now we choose to just ignore `strlen` calls.
+ 	 This decision was simply made because that means the special case is
+ 	 limited to this one case of this one function.  */
+       if (hwasan_sanitize_p ())
+ 	return false;
        source0 = gimple_call_arg (call, 0);
        len = gimple_call_lhs (call);
        break;
*************** asan_redzone_buffer::flush_if_full (void
*** 1359,1364 ****
--- 1542,1740 ----
      flush_redzone_payload ();
  }
  
+ 
+ /* HWAddressSanitizer (hwasan) is a probabilistic method for detecting
+    out-of-bounds and use-after-free bugs.
+    Read more:
+    http://code.google.com/p/address-sanitizer/
+ 
+    Similar to AddressSanitizer (asan) it consists of two parts: the
+    instrumentation module in this file, and a run-time library.
+ 
+    The instrumentation module adds a run-time check before every memory insn in
+    the same manner as asan (see the block comment for AddressSanitizer above).
+    Currently, hwasan only adds out-of-line instrumentation, where each check is
+    implemented as a function call to the run-time library.  Hence a check for a
+    load of N bytes from address X would be implemented with a function call to
+    __hwasan_loadN(X), and checking a store of N bytes from address X would be
+    implemented with a function call to __hwasan_storeN(X).
+ 
+    The main difference between hwasan and asan is in the information stored to
+    help this checking.  Both sanitizers use a shadow memory area which stores
+    data recording the state of main memory at a corresponding address.
+ 
+    For hwasan, each 16 byte granule in main memory has a corresponding 1 byte
+    in shadow memory.  This shadow address can be calculated with equation:
+      (addr >> log_2(HWASAN_TAG_GRANULE_SIZE))
+ 	  + __hwasan_shadow_memory_dynamic_address;
+    The conversion between real and shadow memory for asan is given in the block
+    comment at the top of this file.
+    The description of how this shadow memory is laid out for asan is in the
+    block comment at the top of this file, here we describe how this shadow
+    memory is used for hwasan.
+ 
+    For hwasan, each variable is assigned a byte-sized 'tag'.  The extent of
+    the shadow memory for that variable is filled with the assigned tag, and
+    every pointer referencing that variable has its top byte set to the same
+    tag.  The run-time library redefines malloc so that every allocation returns
+    a tagged pointer and tags the corresponding shadow memory with the same tag.
+ 
+    On each pointer dereference the tag found in the pointer is compared to the
+    tag found in the shadow memory corresponding to the accessed memory address.
+    If these tags are found to differ then this memory access is judged to be
+    invalid and a report is generated.
+ 
+    This method of bug detection is not perfect -- it can not catch every bad
+    access -- but catches them probabilistically instead.  There is always the
+    possibility that an invalid memory access will happen to access memory
+    tagged with the same tag as the pointer that this access used.
+    The chances of this are approx. 0.4% for any two uncorrelated objects.
+ 
+    Random tag generation can mitigate this problem by decreasing the
+    probability that an invalid access will be missed in the same manner over
+    multiple runs.  i.e. if two objects are tagged the same in one run of the
+    binary they are unlikely to be tagged the same in the next run.
+    Both heap and stack allocated objects have random tags by default.
+ 
+    [16 byte granule implications]
+     Since the shadow memory only has a resolution on real memory of 16 bytes,
+     invalid accesses that are within the same 16 byte granule as a valid
+     address will not be caught.
+ 
+     There is a "short-granule" feature in the runtime library which does catch
+     such accesses, but this feature is not implemented for stack objects (since
+     stack objects are allocated and tagged by compiler instrumentation, and
+     this feature has not yet been implemented in GCC instrumentation).
+ 
+     Another outcome of this 16 byte resolution is that each tagged object must
+     be 16 byte aligned.  If two objects were to share any 16 byte granule in
+     memory, then they both would have to be given the same tag, and invalid
+     accesses to one using a pointer to the other would be undetectable.
+ 
+    [Compiler instrumentation]
+     Compiler instrumentation ensures that two adjacent buffers on the stack are
+     given different tags, this means an access to one buffer using a pointer
+     generated from the other (e.g. through buffer overrun) will have mismatched
+     tags and be caught by hwasan.
+ 
+     We don't randomly tag every object on the stack, since that would require
+     keeping many registers to record each tag.  Instead we randomly generate a
+     tag for each function frame, and each new stack object uses a tag offset
+     from that frame tag.
+     i.e. each object is tagged as RFT + offset, where RFT is the "random frame
+     tag" generated for this frame.
+     This means that randomisation does not peturb the difference between tags
+     on tagged stack objects within a frame, but this is mitigated by the fact
+     that objects with the same tag within a frame are very far apart
+     (approx. 2^HWASAN_TAG_SIZE objects apart).
+ 
+     As a demonstration, using the same example program as in the asan block
+     comment above:
+ 
+      int
+      foo ()
+      {
+        char a[24] = {0};
+        int b[2] = {0};
+ 
+        a[5] = 1;
+        b[1] = 2;
+ 
+        return a[5] + b[1];
+      }
+ 
+     On AArch64 the stack will be ordered as follows for the above function:
+ 
+     Slot 1/ [24 bytes for variable 'a']
+     Slot 2/ [8 bytes padding for alignment]
+     Slot 3/ [8 bytes for variable 'b']
+     Slot 4/ [8 bytes padding for alignment]
+ 
+     (The padding is there to ensure 16 byte alignment as described in the 16
+      byte granule implications).
+ 
+     While the shadow memory will be ordered as follows:
+ 
+     - 2 bytes (representing 32 bytes in real memory) tagged with RFT + 1.
+     - 1 byte (representing 16 bytes in real memory) tagged with RFT + 2.
+ 
+     And any pointer to "a" will have the tag RFT + 1, and any pointer to "b"
+     will have the tag RFT + 2.
+ 
+    [Top Byte Ignore requirements]
+     Hwasan requires the ability to store an 8 bit tag in every pointer.  There
+     is no instrumentation done to remove this tag from pointers before
+     dereferencing, which means the hardware must ignore this tag during memory
+     accesses.
+ 
+     Architectures where this feature is available should indicate this using
+     the TARGET_MEMTAG_CAN_TAG_ADDRESSES hook.
+ 
+    [Stack requires cleanup on unwinding]
+     During normal operation of a hwasan sanitized program more space in the
+     shadow memory becomes tagged as the stack grows.  As the stack shrinks this
+     shadow memory space must become untagged.  If it is not untagged then when
+     the stack grows again (during other function calls later on in the program)
+     objects on the stack that are usually not tagged (e.g. parameters passed on
+     the stack) can be placed in memory whose shadow space is tagged with
+     something else, and accesses can cause false positive reports.
+ 
+     Hence we place untagging code on every epilogue of functions which tag some
+     stack objects.
+ 
+     Moreover, the run-time library intercepts longjmp & setjmp to untag when
+     the stack is unwound this way.
+ 
+     C++ exceptions are not yet handled, which means this sanitizer can not
+     handle C++ code that throws exceptions -- it will give false positives
+     after an exception has been thrown.  The implementation that the hwasan
+     library has for handling these relies on the frame pointer being after any
+     local variables.  This is not generally the case for GCC.  */
+ 
+ 
+ /* Returns whether we are tagging pointers and checking those tags on memory
+    access.  */
+ bool
+ hwasan_sanitize_p ()
+ {
+   return sanitize_flags_p (SANITIZE_HWADDRESS);
+ }
+ 
+ /* Are we tagging the stack?  */
+ bool
+ hwasan_sanitize_stack_p ()
+ {
+   return (hwasan_sanitize_p () && param_hwasan_instrument_stack);
+ }
+ 
+ /* Are we tagging alloca objects?  */
+ bool
+ hwasan_sanitize_allocas_p (void)
+ {
+   return (hwasan_sanitize_stack_p () && param_hwasan_instrument_allocas);
+ }
+ 
+ /* Should we instrument reads?  */
+ bool
+ hwasan_instrument_reads (void)
+ {
+   return (hwasan_sanitize_p () && param_hwasan_instrument_reads);
+ }
+ 
+ /* Should we instrument writes?  */
+ bool
+ hwasan_instrument_writes (void)
+ {
+   return (hwasan_sanitize_p () && param_hwasan_instrument_writes);
+ }
+ 
+ /* Should we instrument builtin calls?  */
+ bool
+ hwasan_memintrin (void)
+ {
+   return (hwasan_sanitize_p () && param_hwasan_instrument_mem_intrinsics);
+ }
+ 
  /* Insert code to protect stack vars.  The prologue sequence should be emitted
     directly, epilogue sequence returned.  BASE is the register holding the
     stack base, against which OFFSETS array offsets are relative to, OFFSETS
*************** static tree
*** 1854,1859 ****
--- 2230,2237 ----
  report_error_func (bool is_store, bool recover_p, HOST_WIDE_INT size_in_bytes,
  		   int *nargs)
  {
+   gcc_assert (!hwasan_sanitize_p ());
+ 
    static enum built_in_function report[2][2][6]
      = { { { BUILT_IN_ASAN_REPORT_LOAD1, BUILT_IN_ASAN_REPORT_LOAD2,
  	    BUILT_IN_ASAN_REPORT_LOAD4, BUILT_IN_ASAN_REPORT_LOAD8,
*************** build_check_stmt (location_t loc, tree b
*** 2146,2151 ****
--- 2524,2530 ----
    gimple *g;
  
    gcc_assert (!(size_in_bytes > 0 && !is_non_zero_len));
+   gcc_assert (size_in_bytes == -1 || size_in_bytes >= 1);
  
    gsi = *iter;
  
*************** build_check_stmt (location_t loc, tree b
*** 2190,2196 ****
    if (is_scalar_access)
      flags |= ASAN_CHECK_SCALAR_ACCESS;
  
!   g = gimple_build_call_internal (IFN_ASAN_CHECK, 4,
  				  build_int_cst (integer_type_node, flags),
  				  base, len,
  				  build_int_cst (integer_type_node,
--- 2569,2579 ----
    if (is_scalar_access)
      flags |= ASAN_CHECK_SCALAR_ACCESS;
  
!   enum internal_fn fn = hwasan_sanitize_p ()
!     ? IFN_HWASAN_CHECK
!     : IFN_ASAN_CHECK;
! 
!   g = gimple_build_call_internal (fn, 4,
  				  build_int_cst (integer_type_node, flags),
  				  base, len,
  				  build_int_cst (integer_type_node,
*************** static void
*** 2214,2222 ****
  instrument_derefs (gimple_stmt_iterator *iter, tree t,
  		   location_t location, bool is_store)
  {
!   if (is_store && !param_asan_instrument_writes)
      return;
!   if (!is_store && !param_asan_instrument_reads)
      return;
  
    tree type, base;
--- 2597,2605 ----
  instrument_derefs (gimple_stmt_iterator *iter, tree t,
  		   location_t location, bool is_store)
  {
!   if (is_store && !(asan_instrument_writes () || hwasan_instrument_writes ()))
      return;
!   if (!is_store && !(asan_instrument_reads () || hwasan_instrument_reads ()))
      return;
  
    tree type, base;
*************** instrument_derefs (gimple_stmt_iterator
*** 2277,2283 ****
      {
        if (DECL_THREAD_LOCAL_P (inner))
  	return;
!       if (!param_asan_globals && is_global_var (inner))
          return;
        if (!TREE_STATIC (inner))
  	{
--- 2660,2671 ----
      {
        if (DECL_THREAD_LOCAL_P (inner))
  	return;
!       /* If we're not sanitizing globals and we can tell statically that this
! 	 access is inside a global variable, then there's no point adding
! 	 instrumentation to check the access.  N.b. hwasan currently never
! 	 sanitizes globals.  */
!       if ((hwasan_sanitize_p () || !param_asan_globals)
! 	  && is_global_var (inner))
          return;
        if (!TREE_STATIC (inner))
  	{
*************** instrument_mem_region_access (tree base,
*** 2370,2376 ****
  static bool
  instrument_builtin_call (gimple_stmt_iterator *iter)
  {
!   if (!param_asan_memintrin)
      return false;
  
    bool iter_advanced_p = false;
--- 2758,2764 ----
  static bool
  instrument_builtin_call (gimple_stmt_iterator *iter)
  {
!   if (!(asan_memintrin () || hwasan_memintrin ()))
      return false;
  
    bool iter_advanced_p = false;
*************** maybe_instrument_call (gimple_stmt_itera
*** 2506,2515 ****
  	      break;
  	    }
  	}
!       tree decl = builtin_decl_implicit (BUILT_IN_ASAN_HANDLE_NO_RETURN);
!       gimple *g = gimple_build_call (decl, 0);
!       gimple_set_location (g, gimple_location (stmt));
!       gsi_insert_before (iter, g, GSI_SAME_STMT);
      }
  
    bool instrumented = false;
--- 2894,2920 ----
  	      break;
  	    }
  	}
!       /* If a function does not return, then we must handle clearing up the
! 	 shadow stack accordingly.  For ASAN we can simply set the entire stack
! 	 to "valid" for accesses by setting the shadow space to 0 and all
! 	 accesses will pass checks.  That means that some bad accesses may be
! 	 missed, but we will not report any false positives.
! 
! 	 This is not possible for HWASAN.  Since there is no "always valid" tag
! 	 we can not set any space to "always valid".  If we were to clear the
! 	 entire shadow stack then code resuming from `longjmp` or a caught
! 	 exception would trigger false positives when correctly accessing
! 	 variables on the stack.  Hence we need to handle things like
! 	 `longjmp`, thread exit, and exceptions in a different way.  These
! 	 problems must be handled externally to the compiler, e.g. in the
! 	 language runtime.  */
!       if (! hwasan_sanitize_p ())
! 	{
! 	  tree decl = builtin_decl_implicit (BUILT_IN_ASAN_HANDLE_NO_RETURN);
! 	  gimple *g = gimple_build_call (decl, 0);
! 	  gimple_set_location (g, gimple_location (stmt));
! 	  gsi_insert_before (iter, g, GSI_SAME_STMT);
! 	}
      }
  
    bool instrumented = false;
*************** create_odr_indicator (tree decl, tree ty
*** 2720,2726 ****
    TREE_ADDRESSABLE (var) = 1;
    TREE_READONLY (var) = 0;
    TREE_THIS_VOLATILE (var) = 1;
-   DECL_GIMPLE_REG_P (var) = 0;
    DECL_ARTIFICIAL (var) = 1;
    DECL_IGNORED_P (var) = 1;
    TREE_STATIC (var) = 1;
--- 3125,3130 ----
*************** asan_add_global (tree decl, tree type, v
*** 2790,2796 ****
        TREE_ADDRESSABLE (refdecl) = TREE_ADDRESSABLE (decl);
        TREE_READONLY (refdecl) = TREE_READONLY (decl);
        TREE_THIS_VOLATILE (refdecl) = TREE_THIS_VOLATILE (decl);
!       DECL_GIMPLE_REG_P (refdecl) = DECL_GIMPLE_REG_P (decl);
        DECL_ARTIFICIAL (refdecl) = DECL_ARTIFICIAL (decl);
        DECL_IGNORED_P (refdecl) = DECL_IGNORED_P (decl);
        TREE_STATIC (refdecl) = 1;
--- 3194,3200 ----
        TREE_ADDRESSABLE (refdecl) = TREE_ADDRESSABLE (decl);
        TREE_READONLY (refdecl) = TREE_READONLY (decl);
        TREE_THIS_VOLATILE (refdecl) = TREE_THIS_VOLATILE (decl);
!       DECL_NOT_GIMPLE_REG_P (refdecl) = DECL_NOT_GIMPLE_REG_P (decl);
        DECL_ARTIFICIAL (refdecl) = DECL_ARTIFICIAL (decl);
        DECL_IGNORED_P (refdecl) = DECL_IGNORED_P (decl);
        TREE_STATIC (refdecl) = 1;
*************** initialize_sanitizer_builtins (void)
*** 2909,2914 ****
--- 3313,3326 ----
      = build_function_type_list (void_type_node, uint64_type_node,
  				ptr_type_node, NULL_TREE);
  
+   tree BT_FN_PTR_CONST_PTR_UINT8
+     = build_function_type_list (ptr_type_node, const_ptr_type_node,
+ 				unsigned_char_type_node, NULL_TREE);
+   tree BT_FN_VOID_PTR_UINT8_PTRMODE
+     = build_function_type_list (void_type_node, ptr_type_node,
+ 				unsigned_char_type_node,
+ 				pointer_sized_int_node, NULL_TREE);
+ 
    tree BT_FN_BOOL_VPTR_PTR_IX_INT_INT[5];
    tree BT_FN_IX_CONST_VPTR_INT[5];
    tree BT_FN_IX_VPTR_IX_INT[5];
*************** initialize_sanitizer_builtins (void)
*** 2959,2964 ****
--- 3371,3378 ----
  #define BT_FN_I16_CONST_VPTR_INT BT_FN_IX_CONST_VPTR_INT[4]
  #define BT_FN_I16_VPTR_I16_INT BT_FN_IX_VPTR_IX_INT[4]
  #define BT_FN_VOID_VPTR_I16_INT BT_FN_VOID_VPTR_IX_INT[4]
+ #undef ATTR_NOTHROW_LIST
+ #define ATTR_NOTHROW_LIST ECF_NOTHROW
  #undef ATTR_NOTHROW_LEAF_LIST
  #define ATTR_NOTHROW_LEAF_LIST ECF_NOTHROW | ECF_LEAF
  #undef ATTR_TMPURE_NOTHROW_LEAF_LIST
*************** asan_expand_mark_ifn (gimple_stmt_iterat
*** 3225,3230 ****
--- 3639,3669 ----
  
    gcc_checking_assert (TREE_CODE (decl) == VAR_DECL);
  
+   if (hwasan_sanitize_p ())
+     {
+       gcc_assert (param_hwasan_instrument_stack);
+       gimple_seq stmts = NULL;
+       /* Here we swap ASAN_MARK calls for HWASAN_MARK.
+ 	 This is because we are using the approach of using ASAN_MARK as a
+ 	 synonym until here.
+ 	 That approach means we don't yet have to duplicate all the special
+ 	 cases for ASAN_MARK and ASAN_POISON with the exact same handling but
+ 	 called HWASAN_MARK etc.
+ 
+ 	 N.b. __asan_poison_stack_memory (which implements ASAN_MARK for ASAN)
+ 	 rounds the size up to its shadow memory granularity, while
+ 	 __hwasan_tag_memory (which implements the same for HWASAN) does not.
+ 	 Hence we emit HWASAN_MARK with an aligned size unlike ASAN_MARK.  */
+       tree len = gimple_call_arg (g, 2);
+       tree new_len = gimple_build_round_up (&stmts, loc, size_type_node, len,
+ 					    HWASAN_TAG_GRANULE_SIZE);
+       gimple_build (&stmts, loc, CFN_HWASAN_MARK,
+ 		    void_type_node, gimple_call_arg (g, 0),
+ 		    base, new_len);
+       gsi_replace_with_seq (iter, stmts, true);
+       return false;
+     }
+ 
    if (is_poison)
      {
        if (asan_handled_variables == NULL)
*************** asan_expand_mark_ifn (gimple_stmt_iterat
*** 3299,3304 ****
--- 3738,3744 ----
  bool
  asan_expand_check_ifn (gimple_stmt_iterator *iter, bool use_calls)
  {
+   gcc_assert (!hwasan_sanitize_p ());
    gimple *g = gsi_stmt (*iter);
    location_t loc = gimple_location (g);
    bool recover_p;
*************** asan_expand_poison_ifn (gimple_stmt_iter
*** 3572,3582 ****
  
        int nargs;
        bool store_p = gimple_call_internal_p (use, IFN_ASAN_POISON_USE);
!       tree fun = report_error_func (store_p, recover_p, tree_to_uhwi (size),
! 				    &nargs);
  
!       gcall *call = gimple_build_call (fun, 1,
! 				       build_fold_addr_expr (shadow_var));
        gimple_set_location (call, gimple_location (use));
        gimple *call_to_insert = call;
  
--- 4012,4072 ----
  
        int nargs;
        bool store_p = gimple_call_internal_p (use, IFN_ASAN_POISON_USE);
!       gcall *call;
!       if (hwasan_sanitize_p ())
! 	{
! 	  tree fun = builtin_decl_implicit (BUILT_IN_HWASAN_TAG_MISMATCH4);
! 	  /* NOTE: hwasan has no __hwasan_report_* functions like asan does.
! 		We use __hwasan_tag_mismatch4 with arguments that tell it the
! 		size of access and load to report all tag mismatches.
  
! 		The arguments to this function are:
! 		  Address of invalid access.
! 		  Bitfield containing information about the access
! 		    (access_info)
! 		  Pointer to a frame of registers
! 		    (for use in printing the contents of registers in a dump)
! 		    Not used yet -- to be used by inline instrumentation.
! 		  Size of access.
! 
! 		The access_info bitfield encodes the following pieces of
! 		information:
! 		  - Is this a store or load?
! 		    access_info & 0x10  =>  store
! 		  - Should the program continue after reporting the error?
! 		    access_info & 0x20  =>  recover
! 		  - What size access is this (not used here since we can always
! 		    pass the size in the last argument)
! 
! 		    if (access_info & 0xf == 0xf)
! 		      size is taken from last argument.
! 		    else
! 		      size == 1 << (access_info & 0xf)
! 
! 		The last argument contains the size of the access iff the
! 		access_info size indicator is 0xf (we always use this argument
! 		rather than storing the size in the access_info bitfield).
! 
! 		See the function definition `__hwasan_tag_mismatch4` in
! 		libsanitizer/hwasan for the full definition.
! 		*/
! 	  unsigned access_info = (0x20 * recover_p)
! 	    + (0x10 * store_p)
! 	    + (0xf);
! 	  call = gimple_build_call (fun, 4,
! 				    build_fold_addr_expr (shadow_var),
! 				    build_int_cst (pointer_sized_int_node,
! 						   access_info),
! 				    build_int_cst (pointer_sized_int_node, 0),
! 				    size);
! 	}
!       else
! 	{
! 	  tree fun = report_error_func (store_p, recover_p, tree_to_uhwi (size),
! 					&nargs);
! 	  call = gimple_build_call (fun, 1,
! 				    build_fold_addr_expr (shadow_var));
! 	}
        gimple_set_location (call, gimple_location (use));
        gimple *call_to_insert = call;
  
*************** asan_expand_poison_ifn (gimple_stmt_iter
*** 3624,3629 ****
--- 4114,4125 ----
  static unsigned int
  asan_instrument (void)
  {
+   if (hwasan_sanitize_p ())
+     {
+       transform_statements ();
+       return 0;
+     }
+ 
    if (shadow_ptr_types[0] == NULL_TREE)
      asan_init_shadow_ptr_types ();
    transform_statements ();
*************** public:
*** 3661,3667 ****
  
    /* opt_pass methods: */
    opt_pass * clone () { return new pass_asan (m_ctxt); }
!   virtual bool gate (function *) { return gate_asan (); }
    virtual unsigned int execute (function *) { return asan_instrument (); }
  
  }; // class pass_asan
--- 4157,4163 ----
  
    /* opt_pass methods: */
    opt_pass * clone () { return new pass_asan (m_ctxt); }
!   virtual bool gate (function *) { return gate_asan () || gate_hwasan (); }
    virtual unsigned int execute (function *) { return asan_instrument (); }
  
  }; // class pass_asan
*************** public:
*** 3697,3703 ****
    {}
  
    /* opt_pass methods: */
!   virtual bool gate (function *) { return !optimize && gate_asan (); }
    virtual unsigned int execute (function *) { return asan_instrument (); }
  
  }; // class pass_asan_O0
--- 4193,4202 ----
    {}
  
    /* opt_pass methods: */
!   virtual bool gate (function *)
!     {
!       return !optimize && (gate_asan () || gate_hwasan ());
!     }
    virtual unsigned int execute (function *) { return asan_instrument (); }
  
  }; // class pass_asan_O0
*************** make_pass_asan_O0 (gcc::context *ctxt)
*** 3710,3713 ****
--- 4209,4692 ----
    return new pass_asan_O0 (ctxt);
  }
  
+ /*  HWASAN  */
+ 
+ /* For stack tagging:
+ 
+    Return the offset from the frame base tag that the "next" expanded object
+    should have.  */
+ uint8_t
+ hwasan_current_frame_tag ()
+ {
+   return hwasan_frame_tag_offset;
+ }
+ 
+ /* For stack tagging:
+ 
+    Return the 'base pointer' for this function.  If that base pointer has not
+    yet been created then we create a register to hold it and record the insns
+    to initialize the register in `hwasan_frame_base_init_seq` for later
+    emission.  */
+ rtx
+ hwasan_frame_base ()
+ {
+   if (! hwasan_frame_base_ptr)
+     {
+       start_sequence ();
+       hwasan_frame_base_ptr
+ 	= force_reg (Pmode,
+ 		     targetm.memtag.insert_random_tag (virtual_stack_vars_rtx,
+ 						       NULL_RTX));
+       hwasan_frame_base_init_seq = get_insns ();
+       end_sequence ();
+     }
+ 
+   return hwasan_frame_base_ptr;
+ }
+ 
+ /* For stack tagging:
+ 
+    Check whether this RTX is a standard pointer addressing the base of the
+    stack variables for this frame.  Returns true if the RTX is either
+    virtual_stack_vars_rtx or hwasan_frame_base_ptr.  */
+ bool
+ stack_vars_base_reg_p (rtx base)
+ {
+   return base == virtual_stack_vars_rtx || base == hwasan_frame_base_ptr;
+ }
+ 
+ /* For stack tagging:
+ 
+    Emit frame base initialisation.
+    If hwasan_frame_base has been used before here then
+    hwasan_frame_base_init_seq contains the sequence of instructions to
+    initialize it.  This must be put just before the hwasan prologue, so we emit
+    the insns before parm_birth_insn (which will point to the first instruction
+    of the hwasan prologue if it exists).
+ 
+    We update `parm_birth_insn` to point to the start of this initialisation
+    since that represents the end of the initialisation done by
+    expand_function_{start,end} functions and we want to maintain that.  */
+ void
+ hwasan_maybe_emit_frame_base_init ()
+ {
+   if (! hwasan_frame_base_init_seq)
+     return;
+   emit_insn_before (hwasan_frame_base_init_seq, parm_birth_insn);
+   parm_birth_insn = hwasan_frame_base_init_seq;
+ }
+ 
+ /* Record a compile-time constant size stack variable that HWASAN will need to
+    tag.  This record of the range of a stack variable will be used by
+    `hwasan_emit_prologue` to emit the RTL at the start of each frame which will
+    set tags in the shadow memory according to the assigned tag for each object.
+ 
+    The range that the object spans in stack space should be described by the
+    bounds `untagged_base + nearest_offset` and
+    `untagged_base + farthest_offset`.
+    `tagged_base` is the base address which contains the "base frame tag" for
+    this frame, and from which the value to address this object with will be
+    calculated.
+ 
+    We record the `untagged_base` since the functions in the hwasan library we
+    use to tag memory take pointers without a tag.  */
+ void
+ hwasan_record_stack_var (rtx untagged_base, rtx tagged_base,
+ 			 poly_int64 nearest_offset, poly_int64 farthest_offset)
+ {
+   hwasan_stack_var cur_var;
+   cur_var.untagged_base = untagged_base;
+   cur_var.tagged_base = tagged_base;
+   cur_var.nearest_offset = nearest_offset;
+   cur_var.farthest_offset = farthest_offset;
+   cur_var.tag_offset = hwasan_current_frame_tag ();
+ 
+   hwasan_tagged_stack_vars.safe_push (cur_var);
+ }
+ 
+ /* Return the RTX representing the farthest extent of the statically allocated
+    stack objects for this frame.  If hwasan_frame_base_ptr has not been
+    initialized then we are not storing any static variables on the stack in
+    this frame.  In this case we return NULL_RTX to represent that.
+ 
+    Otherwise simply return virtual_stack_vars_rtx + frame_offset.  */
+ rtx
+ hwasan_get_frame_extent ()
+ {
+   return (hwasan_frame_base_ptr
+ 	  ? plus_constant (Pmode, virtual_stack_vars_rtx, frame_offset)
+ 	  : NULL_RTX);
+ }
+ 
+ /* For stack tagging:
+ 
+    Increment the frame tag offset modulo the size a tag can represent.  */
+ void
+ hwasan_increment_frame_tag ()
+ {
+   uint8_t tag_bits = HWASAN_TAG_SIZE;
+   gcc_assert (HWASAN_TAG_SIZE
+ 	      <= sizeof (hwasan_frame_tag_offset) * CHAR_BIT);
+   hwasan_frame_tag_offset = (hwasan_frame_tag_offset + 1) % (1 << tag_bits);
+   /* The "background tag" of the stack is zero by definition.
+      This is the tag that objects like parameters passed on the stack and
+      spilled registers are given.  It is handy to avoid this tag for objects
+      whose tags we decide ourselves, partly to ensure that buffer overruns
+      can't affect these important variables (e.g. saved link register, saved
+      stack pointer etc) and partly to make debugging easier (everything with a
+      tag of zero is space allocated automatically by the compiler).
+ 
+      This is not feasible when using random frame tags (the default
+      configuration for hwasan) since the tag for the given frame is randomly
+      chosen at runtime.  In order to avoid any tags matching the stack
+      background we would need to decide tag offsets at runtime instead of
+      compile time (and pay the resulting performance cost).
+ 
+      When not using random base tags for each frame (i.e. when compiled with
+      `--param hwasan-random-frame-tag=0`) the base tag for each frame is zero.
+      This means the tag that each object gets is equal to the
+      hwasan_frame_tag_offset used in determining it.
+      When this is the case we *can* ensure no object gets the tag of zero by
+      simply ensuring no object has the hwasan_frame_tag_offset of zero.
+ 
+      There is the extra complication that we only record the
+      hwasan_frame_tag_offset here (which is the offset from the tag stored in
+      the stack pointer).  In the kernel, the tag in the stack pointer is 0xff
+      rather than zero.  This does not cause problems since tags of 0xff are
+      never checked in the kernel.  As mentioned at the beginning of this
+      comment the background tag of the stack is zero by definition, which means
+      that for the kernel we should skip offsets of both 0 and 1 from the stack
+      pointer.  Avoiding the offset of 0 ensures we use a tag which will be
+      checked, avoiding the offset of 1 ensures we use a tag that is not the
+      same as the background.  */
+   if (hwasan_frame_tag_offset == 0 && ! param_hwasan_random_frame_tag)
+     hwasan_frame_tag_offset += 1;
+   if (hwasan_frame_tag_offset == 1 && ! param_hwasan_random_frame_tag
+       && sanitize_flags_p (SANITIZE_KERNEL_HWADDRESS))
+     hwasan_frame_tag_offset += 1;
+ }
+ 
+ /* Clear internal state for the next function.
+    This function is called before variables on the stack get expanded, in
+    `init_vars_expansion`.  */
+ void
+ hwasan_record_frame_init ()
+ {
+   delete asan_used_labels;
+   asan_used_labels = NULL;
+ 
+   /* If this isn't the case then some stack variable was recorded *before*
+      hwasan_record_frame_init is called, yet *after* the hwasan prologue for
+      the previous frame was emitted.  Such stack variables would not have
+      their shadow stack filled in.  */
+   gcc_assert (hwasan_tagged_stack_vars.is_empty ());
+   hwasan_frame_base_ptr = NULL_RTX;
+   hwasan_frame_base_init_seq = NULL;
+ 
+   /* When not using a random frame tag we can avoid the background stack
+      color which gives the user a little better debug output upon a crash.
+      Meanwhile, when using a random frame tag it will be nice to avoid adding
+      tags for the first object since that is unnecessary extra work.
+      Hence set the initial hwasan_frame_tag_offset to be 0 if using a random
+      frame tag and 1 otherwise.
+ 
+      As described in hwasan_increment_frame_tag, in the kernel the stack
+      pointer has the tag 0xff.  That means that to avoid 0xff and 0 (the tag
+      which the kernel does not check and the background tag respectively) we
+      start with a tag offset of 2.  */
+   hwasan_frame_tag_offset = param_hwasan_random_frame_tag
+     ? 0
+     : sanitize_flags_p (SANITIZE_KERNEL_HWADDRESS) ? 2 : 1;
+ }
+ 
+ /* For stack tagging:
+    (Emits HWASAN equivalent of what is emitted by
+    `asan_emit_stack_protection`).
+ 
+    Emits the extra prologue code to set the shadow stack as required for HWASAN
+    stack instrumentation.
+ 
+    Uses the vector of recorded stack variables hwasan_tagged_stack_vars.  When
+    this function has completed hwasan_tagged_stack_vars is empty and all
+    objects it had pointed to are deallocated.  */
+ void
+ hwasan_emit_prologue ()
+ {
+   /* We need untagged base pointers since libhwasan only accepts untagged
+     pointers in __hwasan_tag_memory.  We need the tagged base pointer to obtain
+     the base tag for an offset.  */
+ 
+   if (hwasan_tagged_stack_vars.is_empty ())
+     return;
+ 
+   poly_int64 bot = 0, top = 0;
+   for (hwasan_stack_var &cur : hwasan_tagged_stack_vars)
+     {
+       poly_int64 nearest = cur.nearest_offset;
+       poly_int64 farthest = cur.farthest_offset;
+ 
+       if (known_ge (nearest, farthest))
+ 	{
+ 	  top = nearest;
+ 	  bot = farthest;
+ 	}
+       else
+ 	{
+ 	  /* Given how these values are calculated, one must be known greater
+ 	     than the other.  */
+ 	  gcc_assert (known_le (nearest, farthest));
+ 	  top = farthest;
+ 	  bot = nearest;
+ 	}
+       poly_int64 size = (top - bot);
+ 
+       /* Assert the edge of each variable is aligned to the HWASAN tag granule
+ 	 size.  */
+       gcc_assert (multiple_p (top, HWASAN_TAG_GRANULE_SIZE));
+       gcc_assert (multiple_p (bot, HWASAN_TAG_GRANULE_SIZE));
+       gcc_assert (multiple_p (size, HWASAN_TAG_GRANULE_SIZE));
+ 
+       rtx fn = init_one_libfunc ("__hwasan_tag_memory");
+       rtx base_tag = targetm.memtag.extract_tag (cur.tagged_base, NULL_RTX);
+       rtx tag = plus_constant (QImode, base_tag, cur.tag_offset);
+       tag = hwasan_truncate_to_tag_size (tag, NULL_RTX);
+ 
+       rtx bottom = convert_memory_address (ptr_mode,
+ 					   plus_constant (Pmode,
+ 							  cur.untagged_base,
+ 							  bot));
+       emit_library_call (fn, LCT_NORMAL, VOIDmode,
+ 			 bottom, ptr_mode,
+ 			 tag, QImode,
+ 			 gen_int_mode (size, ptr_mode), ptr_mode);
+     }
+   /* Clear the stack vars, we've emitted the prologue for them all now.  */
+   hwasan_tagged_stack_vars.truncate (0);
+ }
+ 
+ /* For stack tagging:
+ 
+    Return RTL insns to clear the tags between DYNAMIC and VARS pointers
+    into the stack.  These instructions should be emitted at the end of
+    every function.
+ 
+    If `dynamic` is NULL_RTX then no insns are returned.  */
+ rtx_insn *
+ hwasan_emit_untag_frame (rtx dynamic, rtx vars)
+ {
+   if (! dynamic)
+     return NULL;
+ 
+   start_sequence ();
+ 
+   dynamic = convert_memory_address (ptr_mode, dynamic);
+   vars = convert_memory_address (ptr_mode, vars);
+ 
+   rtx top_rtx;
+   rtx bot_rtx;
+   if (FRAME_GROWS_DOWNWARD)
+     {
+       top_rtx = vars;
+       bot_rtx = dynamic;
+     }
+   else
+     {
+       top_rtx = dynamic;
+       bot_rtx = vars;
+     }
+ 
+   rtx size_rtx = expand_simple_binop (ptr_mode, MINUS, top_rtx, bot_rtx,
+ 				      NULL_RTX, /* unsignedp = */0,
+ 				      OPTAB_DIRECT);
+ 
+   rtx fn = init_one_libfunc ("__hwasan_tag_memory");
+   emit_library_call (fn, LCT_NORMAL, VOIDmode,
+ 		     bot_rtx, ptr_mode,
+ 		     HWASAN_STACK_BACKGROUND, QImode,
+ 		     size_rtx, ptr_mode);
+ 
+   do_pending_stack_adjust ();
+   rtx_insn *insns = get_insns ();
+   end_sequence ();
+   return insns;
+ }
+ 
+ /* Needs to be GTY(()), because cgraph_build_static_cdtor may
+    invoke ggc_collect.  */
+ static GTY(()) tree hwasan_ctor_statements;
+ 
+ /* Insert module initialization into this TU.  This initialization calls the
+    initialization code for libhwasan.  */
+ void
+ hwasan_finish_file (void)
+ {
+   /* Do not emit constructor initialization for the kernel.
+      (the kernel has its own initialization already).  */
+   if (flag_sanitize & SANITIZE_KERNEL_HWADDRESS)
+     return;
+ 
+   /* Avoid instrumenting code in the hwasan constructors/destructors.  */
+   flag_sanitize &= ~SANITIZE_HWADDRESS;
+   int priority = MAX_RESERVED_INIT_PRIORITY - 1;
+   tree fn = builtin_decl_implicit (BUILT_IN_HWASAN_INIT);
+   append_to_statement_list (build_call_expr (fn, 0), &hwasan_ctor_statements);
+   cgraph_build_static_cdtor ('I', hwasan_ctor_statements, priority);
+   flag_sanitize |= SANITIZE_HWADDRESS;
+ }
+ 
+ /* For stack tagging:
+ 
+    Truncate `tag` to the number of bits that a tag uses (i.e. to
+    HWASAN_TAG_SIZE).  Store the result in `target` if it's convenient.  */
+ rtx
+ hwasan_truncate_to_tag_size (rtx tag, rtx target)
+ {
+   gcc_assert (GET_MODE (tag) == QImode);
+   if (HWASAN_TAG_SIZE != GET_MODE_PRECISION (QImode))
+     {
+       gcc_assert (GET_MODE_PRECISION (QImode) > HWASAN_TAG_SIZE);
+       rtx mask = gen_int_mode ((HOST_WIDE_INT_1U << HWASAN_TAG_SIZE) - 1,
+ 			       QImode);
+       tag = expand_simple_binop (QImode, AND, tag, mask, target,
+ 				 /* unsignedp = */1, OPTAB_WIDEN);
+       gcc_assert (tag);
+     }
+   return tag;
+ }
+ 
+ /* Construct a function tree for __hwasan_{load,store}{1,2,4,8,16,_n}.
+    IS_STORE is either 1 (for a store) or 0 (for a load).  */
+ static combined_fn
+ hwasan_check_func (bool is_store, bool recover_p, HOST_WIDE_INT size_in_bytes,
+ 		   int *nargs)
+ {
+   static enum built_in_function check[2][2][6]
+     = { { { BUILT_IN_HWASAN_LOAD1, BUILT_IN_HWASAN_LOAD2,
+ 	    BUILT_IN_HWASAN_LOAD4, BUILT_IN_HWASAN_LOAD8,
+ 	    BUILT_IN_HWASAN_LOAD16, BUILT_IN_HWASAN_LOADN },
+ 	  { BUILT_IN_HWASAN_STORE1, BUILT_IN_HWASAN_STORE2,
+ 	    BUILT_IN_HWASAN_STORE4, BUILT_IN_HWASAN_STORE8,
+ 	    BUILT_IN_HWASAN_STORE16, BUILT_IN_HWASAN_STOREN } },
+ 	{ { BUILT_IN_HWASAN_LOAD1_NOABORT,
+ 	    BUILT_IN_HWASAN_LOAD2_NOABORT,
+ 	    BUILT_IN_HWASAN_LOAD4_NOABORT,
+ 	    BUILT_IN_HWASAN_LOAD8_NOABORT,
+ 	    BUILT_IN_HWASAN_LOAD16_NOABORT,
+ 	    BUILT_IN_HWASAN_LOADN_NOABORT },
+ 	  { BUILT_IN_HWASAN_STORE1_NOABORT,
+ 	    BUILT_IN_HWASAN_STORE2_NOABORT,
+ 	    BUILT_IN_HWASAN_STORE4_NOABORT,
+ 	    BUILT_IN_HWASAN_STORE8_NOABORT,
+ 	    BUILT_IN_HWASAN_STORE16_NOABORT,
+ 	    BUILT_IN_HWASAN_STOREN_NOABORT } } };
+   if (size_in_bytes == -1)
+     {
+       *nargs = 2;
+       return as_combined_fn (check[recover_p][is_store][5]);
+     }
+   *nargs = 1;
+   int size_log2 = exact_log2 (size_in_bytes);
+   gcc_assert (size_log2 >= 0 && size_log2 <= 5);
+   return as_combined_fn (check[recover_p][is_store][size_log2]);
+ }
+ 
+ /* Expand the HWASAN_{LOAD,STORE} builtins.  */
+ bool
+ hwasan_expand_check_ifn (gimple_stmt_iterator *iter, bool)
+ {
+   gimple *g = gsi_stmt (*iter);
+   location_t loc = gimple_location (g);
+   bool recover_p;
+   if (flag_sanitize & SANITIZE_USER_HWADDRESS)
+     recover_p = (flag_sanitize_recover & SANITIZE_USER_HWADDRESS) != 0;
+   else
+     recover_p = (flag_sanitize_recover & SANITIZE_KERNEL_HWADDRESS) != 0;
+ 
+   HOST_WIDE_INT flags = tree_to_shwi (gimple_call_arg (g, 0));
+   gcc_assert (flags < ASAN_CHECK_LAST);
+   bool is_scalar_access = (flags & ASAN_CHECK_SCALAR_ACCESS) != 0;
+   bool is_store = (flags & ASAN_CHECK_STORE) != 0;
+   bool is_non_zero_len = (flags & ASAN_CHECK_NON_ZERO_LEN) != 0;
+ 
+   tree base = gimple_call_arg (g, 1);
+   tree len = gimple_call_arg (g, 2);
+ 
+   /* `align` is unused for HWASAN_CHECK, but we pass the argument anyway
+      since that way the arguments match ASAN_CHECK.  */
+   /* HOST_WIDE_INT align = tree_to_shwi (gimple_call_arg (g, 3));  */
+ 
+   unsigned HOST_WIDE_INT size_in_bytes
+     = is_scalar_access ? tree_to_shwi (len) : -1;
+ 
+   gimple_stmt_iterator gsi = *iter;
+ 
+   if (!is_non_zero_len)
+     {
+       /* So, the length of the memory area to hwasan-protect is
+ 	 non-constant.  Let's guard the generated instrumentation code
+ 	 like:
+ 
+ 	 if (len != 0)
+ 	   {
+ 	     // hwasan instrumentation code goes here.
+ 	   }
+ 	 // falltrough instructions, starting with *ITER.  */
+ 
+       g = gimple_build_cond (NE_EXPR,
+ 			    len,
+ 			    build_int_cst (TREE_TYPE (len), 0),
+ 			    NULL_TREE, NULL_TREE);
+       gimple_set_location (g, loc);
+ 
+       basic_block then_bb, fallthrough_bb;
+       insert_if_then_before_iter (as_a <gcond *> (g), iter,
+ 				  /*then_more_likely_p=*/true,
+ 				  &then_bb, &fallthrough_bb);
+       /* Note that fallthrough_bb starts with the statement that was
+ 	pointed to by ITER.  */
+ 
+       /* The 'then block' of the 'if (len != 0) condition is where
+ 	we'll generate the hwasan instrumentation code now.  */
+       gsi = gsi_last_bb (then_bb);
+     }
+ 
+   gimple_seq stmts = NULL;
+   tree base_addr = gimple_build (&stmts, loc, NOP_EXPR,
+ 				 pointer_sized_int_node, base);
+ 
+   int nargs = 0;
+   combined_fn fn
+     = hwasan_check_func (is_store, recover_p, size_in_bytes, &nargs);
+   if (nargs == 1)
+     gimple_build (&stmts, loc, fn, void_type_node, base_addr);
+   else
+     {
+       gcc_assert (nargs == 2);
+       tree sz_arg = gimple_build (&stmts, loc, NOP_EXPR,
+ 				  pointer_sized_int_node, len);
+       gimple_build (&stmts, loc, fn, void_type_node, base_addr, sz_arg);
+     }
+ 
+   gsi_insert_seq_after (&gsi, stmts, GSI_NEW_STMT);
+   gsi_remove (iter, true);
+   *iter = gsi;
+   return false;
+ }
+ 
+ /* For stack tagging:
+ 
+    Dummy: the HWASAN_MARK internal function should only ever be in the code
+    after the sanopt pass.  */
+ bool
+ hwasan_expand_mark_ifn (gimple_stmt_iterator *)
+ {
+   gcc_unreachable ();
+ }
+ 
+ bool
+ gate_hwasan ()
+ {
+   return hwasan_sanitize_p ();
+ }
+ 
  #include "gt-asan.h"
diff -Nrcpad gcc-10.3.0/gcc/asan.h gcc-11.1.0/gcc/asan.h
*** gcc-10.3.0/gcc/asan.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/asan.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* AddressSanitizer, a fast memory error detector.
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
     Contributed by Kostya Serebryany <kcc@google.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* AddressSanitizer, a fast memory error detector.
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
     Contributed by Kostya Serebryany <kcc@google.com>
  
  This file is part of GCC.
*************** extern bool asan_expand_mark_ifn (gimple
*** 34,39 ****
--- 34,58 ----
  extern bool asan_expand_poison_ifn (gimple_stmt_iterator *, bool *,
  				    hash_map<tree, tree> &);
  
+ extern void hwasan_record_frame_init ();
+ extern void hwasan_record_stack_var (rtx, rtx, poly_int64, poly_int64);
+ extern void hwasan_emit_prologue ();
+ extern rtx_insn *hwasan_emit_untag_frame (rtx, rtx);
+ extern rtx hwasan_get_frame_extent ();
+ extern rtx hwasan_frame_base ();
+ extern void hwasan_maybe_emit_frame_base_init (void);
+ extern bool stack_vars_base_reg_p (rtx);
+ extern uint8_t hwasan_current_frame_tag ();
+ extern void hwasan_increment_frame_tag ();
+ extern rtx hwasan_truncate_to_tag_size (rtx, rtx);
+ extern void hwasan_finish_file (void);
+ extern bool hwasan_sanitize_p (void);
+ extern bool hwasan_sanitize_stack_p (void);
+ extern bool hwasan_sanitize_allocas_p (void);
+ extern bool hwasan_expand_check_ifn (gimple_stmt_iterator *, bool);
+ extern bool hwasan_expand_mark_ifn (gimple_stmt_iterator *);
+ extern bool gate_hwasan (void);
+ 
  extern gimple_stmt_iterator create_cond_insert_point
       (gimple_stmt_iterator *, bool, bool, bool, basic_block *, basic_block *);
  
*************** extern hash_set <tree> *asan_used_labels
*** 75,80 ****
--- 94,119 ----
  
  #define ASAN_USE_AFTER_SCOPE_ATTRIBUTE	"use after scope memory"
  
+ /* NOTE: The values below and the hooks under targetm.memtag define an ABI and
+    are hard-coded to these values in libhwasan, hence they can't be changed
+    independently here.  */
+ /* How many bits are used to store a tag in a pointer.
+    The default version uses the entire top byte of a pointer (i.e. 8 bits).  */
+ #define HWASAN_TAG_SIZE targetm.memtag.tag_size ()
+ /* Tag Granule of HWASAN shadow stack.
+    This is the size in real memory that each byte in the shadow memory refers
+    to.  I.e. if a variable is X bytes long in memory then its tag in shadow
+    memory will span X / HWASAN_TAG_GRANULE_SIZE bytes.
+    Most variables will need to be aligned to this amount since two variables
+    that are neighbors in memory and share a tag granule would need to share the
+    same tag (the shared tag granule can only store one tag).  */
+ #define HWASAN_TAG_GRANULE_SIZE targetm.memtag.granule_size ()
+ /* Define the tag for the stack background.
+    This defines what tag the stack pointer will be and hence what tag all
+    variables that are not given special tags are (e.g. spilled registers,
+    and parameters passed on the stack).  */
+ #define HWASAN_STACK_BACKGROUND gen_int_mode (0, QImode)
+ 
  /* Various flags for Asan builtins.  */
  enum asan_check_flags
  {
*************** extern hash_set<tree> *asan_handled_vari
*** 145,150 ****
--- 184,192 ----
  static inline bool
  asan_intercepted_p (enum built_in_function fcode)
  {
+   if (hwasan_sanitize_p ())
+     return false;
+ 
    return fcode == BUILT_IN_INDEX
  	 || fcode == BUILT_IN_MEMCHR
  	 || fcode == BUILT_IN_MEMCMP
*************** asan_intercepted_p (enum built_in_functi
*** 173,179 ****
  static inline bool
  asan_sanitize_use_after_scope (void)
  {
!   return (flag_sanitize_address_use_after_scope && asan_sanitize_stack_p ());
  }
  
  /* Return true if DECL should be guarded on the stack.  */
--- 215,222 ----
  static inline bool
  asan_sanitize_use_after_scope (void)
  {
!   return (flag_sanitize_address_use_after_scope
! 	  && (asan_sanitize_stack_p () || hwasan_sanitize_stack_p ()));
  }
  
  /* Return true if DECL should be guarded on the stack.  */
diff -Nrcpad gcc-10.3.0/gcc/attr-fnspec.h gcc-11.1.0/gcc/attr-fnspec.h
*** gcc-10.3.0/gcc/attr-fnspec.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/attr-fnspec.h	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,281 ----
+ /* Handling of fnspec attribute specifiers
+    Copyright (C) 2008-2021 Free Software Foundation, Inc.
+    Contributed by Richard Guenther  <rguenther@suse.de>
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3 of the License, 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/>.  */
+ 
+ /* Parse string of attribute "fn spec".  This is an internal attribute
+    describing side effects of a function as follows:
+ 
+    character 0  specifies properties of return values as follows:
+      '1'...'4'  specifies number of argument function returns (as in memset)
+      'm'	specifies that returned value is noalias (as in malloc)
+      '.'	specifies that nothing is known.
+    character 1  specifies additional function properties
+      ' '        specifies that nothing is known
+      'p' or 'P' specifies that function is pure except for described side
+ 		effects.
+      'c' or 'C' specifies that function is const except for described side
+ 		effects.
+    The uppercase letter in addition specifies that function clobbers errno.
+ 
+    character 2+2i specifies properties of argument number i as follows:
+      'x' or 'X' specifies that parameter is unused.
+      'r' or 'R' specifies that the memory pointed to by the parameter is only
+ 		read and does not escape
+      'o' or 'O' specifies that the memory pointed to by the parameter is only
+ 		written and does not escape
+      'w' or 'W' specifies that the memory pointed to by the parameter does not
+ 		escape
+      '1'....'9' specifies that the memory pointed to by the parameter is
+ 		copied to memory pointed to by different parameter
+ 		(as in memcpy).
+      '.'	specifies that nothing is known.
+    The uppercase letter in addition specifies that the memory pointed to
+    by the parameter is not dereferenced.  For 'r' only read applies
+    transitively to pointers read from the pointed-to memory.
+ 
+    character 3+2i specifies additional properties of argument number i
+    as follows:
+      ' '        nothing is known
+      't'	the size of value written/read corresponds to the size of
+ 		of the pointed-to type of the argument type
+      '1'...'9'  specifies the size of value written/read is given by the
+ 		specified argument
+  */
+ 
+ #ifndef ATTR_FNSPEC_H
+ #define ATTR_FNSPEC_H
+ 
+ class attr_fnspec
+ {
+ private:
+   /* fn spec attribute string.  */
+   const char *str;
+   /* length of the fn spec string.  */
+   const unsigned len;
+   /* Number of characters specifying return value.  */
+   const unsigned int return_desc_size = 2;
+   /* Number of characters specifying size.  */
+   const unsigned int arg_desc_size = 2;
+ 
+   /* Return start of specifier of arg i.  */
+   unsigned int arg_idx (int i)
+   {
+     return return_desc_size + arg_desc_size * i;
+   }
+ 
+ public:
+   attr_fnspec (const char *str, unsigned len)
+   : str (str), len (len)
+   {
+     if (flag_checking)
+       verify ();
+   }
+   attr_fnspec (const char *str)
+   : str (str), len (strlen (str))
+   {
+     if (flag_checking)
+       verify ();
+   }
+   attr_fnspec (const_tree identifier)
+   : str (TREE_STRING_POINTER (identifier)),
+     len (TREE_STRING_LENGTH (identifier))
+   {
+     if (flag_checking)
+       verify ();
+   }
+   attr_fnspec ()
+   : str (NULL), len (0)
+   {
+   }
+ 
+   /* Return true if fn spec is known.  */
+   bool
+   known_p ()
+   {
+     return len;
+   }
+ 
+   /* Return true if arg I is specified.  */
+   bool
+   arg_specified_p (unsigned int i)
+   {
+     return len >= arg_idx (i + 1);
+   }
+ 
+   /* True if the argument is not dereferenced recursively, thus only
+      directly reachable memory is read or written.  */
+   bool
+   arg_direct_p (unsigned int i)
+   {
+     unsigned int idx = arg_idx (i);
+     gcc_checking_assert (arg_specified_p (i));
+     return str[idx] == 'R' || str[idx] == 'O'
+ 	   || str[idx] == 'W' || (str[idx] >= '1' && str[idx] <= '9');
+   }
+ 
+   /* True if argument is used.  */
+   bool
+   arg_used_p (unsigned int i)
+   {
+     unsigned int idx = arg_idx (i);
+     gcc_checking_assert (arg_specified_p (i));
+     return str[idx] != 'x' && str[idx] != 'X';
+   }
+ 
+   /* True if memory reached by the argument is readonly (not clobbered).  */
+   bool
+   arg_readonly_p (unsigned int i)
+   {
+     unsigned int idx = arg_idx (i);
+     gcc_checking_assert (arg_specified_p (i));
+     return str[idx] == 'r' || str[idx] == 'R' || (str[idx] >= '1' && str[idx] <= '9');
+   }
+ 
+   /* True if memory reached by the argument is read (directly or indirectly)  */
+   bool
+   arg_maybe_read_p (unsigned int i)
+   {
+     unsigned int idx = arg_idx (i);
+     gcc_checking_assert (arg_specified_p (i));
+     return str[idx] != 'o' && str[idx] != 'O'
+ 	   && str[idx] != 'x' && str[idx] != 'X';
+   }
+ 
+   /* True if memory reached by the argument is written.
+      (directly or indirectly)  */
+   bool
+   arg_maybe_written_p (unsigned int i)
+   {
+     unsigned int idx = arg_idx (i);
+     gcc_checking_assert (arg_specified_p (i));
+     return str[idx] != 'r' && str[idx] != 'R'
+ 	   && (str[idx] < '1' || str[idx] > '9')
+ 	   && str[idx] != 'x' && str[idx] != 'X';
+   }
+ 
+   /* Return true if load of memory pointed to by argument I is specified
+      by another argument.  In this case set ARG.  */
+   bool
+   arg_max_access_size_given_by_arg_p (unsigned int i, unsigned int *arg)
+   {
+     unsigned int idx = arg_idx (i);
+     gcc_checking_assert (arg_specified_p (i));
+     if (str[idx + 1] >= '1' && str[idx + 1] <= '9')
+       {
+ 	*arg = str[idx + 1] - '1';
+ 	return true;
+       }
+     else
+       return false;
+   }
+ 
+   /* Return true if the pointed-to type of the argument correspond to the
+      size of the memory acccess.  */
+   bool
+   arg_access_size_given_by_type_p (unsigned int i)
+   {
+     unsigned int idx = arg_idx (i);
+     gcc_checking_assert (arg_specified_p (i));
+     return str[idx + 1] == 't';
+   }
+ 
+   /* Return true if memory pointer to by argument is copied to a memory
+      pointed to by a different argument (as in memcpy).
+      In this case set ARG.  */
+   bool
+   arg_copied_to_arg_p (unsigned int i, unsigned int *arg)
+   {
+     unsigned int idx = arg_idx (i);
+     gcc_checking_assert (arg_specified_p (i));
+     if (str[idx] < '1' || str[idx] > '9')
+       return false;
+     *arg = str[idx] - '1';
+     return true;
+   }
+ 
+ 
+   /* True if the argument does not escape.  */
+   bool
+   arg_noescape_p (unsigned int i)
+   {
+     unsigned int idx = arg_idx (i);
+     gcc_checking_assert (arg_specified_p (i));
+     return str[idx] == 'w' || str[idx] == 'W'
+ 	   || str[idx] == 'r' || str[idx] == 'R'
+ 	   || str[idx] == 'o' || str[idx] == 'O';
+   }
+ 
+   /* Return true if function returns value of its parameter.  If ARG_NO is
+      non-NULL return initialize it to the argument returned.  */
+   bool
+   returns_arg (unsigned int *arg_no)
+   {
+     if (str[0] >= '1' && str[0] <= '4')
+       {
+ 	if (arg_no)
+ 	  *arg_no = str[0] - '1';
+ 	return true;
+       }
+     return false;
+   }
+ 
+   /* Nonzero if the return value does not alias with anything.  Functions
+      with the malloc attribute have this set on their return value.  */
+   bool
+   returns_noalias_p ()
+   {
+     return str[0] == 'm';
+   }
+ 
+   /* Return true if all memory read by the function is specified by fnspec.  */
+   bool
+   global_memory_read_p ()
+   {
+     return str[1] != 'c' && str[1] != 'C';
+   }
+ 
+   /* Return true if all memory written by the function
+      is specified by fnspec.  */
+   bool
+   global_memory_written_p ()
+   {
+     return str[1] != 'c' && str[1] != 'C' && str[1] != 'p' && str[1] != 'P';
+   }
+ 
+   bool
+   errno_maybe_written_p ()
+   {
+     return str[1] == 'C' || str[1] == 'P';
+   }
+ 
+   /* Check validity of the string.  */
+   void verify ();
+ 
+   /* Return the fnspec string.  */
+   const char *
+   get_str ()
+   {
+     return str;
+   }
+ };
+ 
+ extern attr_fnspec gimple_call_fnspec (const gcall *stmt);
+ extern attr_fnspec builtin_fnspec (tree);
+ 
+ #endif /* ATTR_FNSPEC_H  */
diff -Nrcpad gcc-10.3.0/gcc/attribs.c gcc-11.1.0/gcc/attribs.c
*** gcc-10.3.0/gcc/attribs.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/attribs.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Functions dealing with attribute handling, used by most front ends.
!    Copyright (C) 1992-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Functions dealing with attribute handling, used by most front ends.
!    Copyright (C) 1992-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** You should have received a copy of the G
*** 17,22 ****
--- 17,23 ----
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  
+ #define INCLUDE_STRING
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
*************** along with GCC; see the file COPYING3.
*** 25,30 ****
--- 26,32 ----
  #include "stringpool.h"
  #include "diagnostic-core.h"
  #include "attribs.h"
+ #include "fold-const.h"
  #include "stor-layout.h"
  #include "langhooks.h"
  #include "plugin.h"
*************** along with GCC; see the file COPYING3.
*** 32,37 ****
--- 34,40 ----
  #include "hash-set.h"
  #include "diagnostic.h"
  #include "pretty-print.h"
+ #include "tree-pretty-print.h"
  #include "intl.h"
  
  /* Table of the tables of attributes (common, language, format, machine)
*************** decl_attributes (tree *node, tree attrib
*** 707,716 ****
  	  int cxx11_flag = (cxx11_attr_p ? ATTR_FLAG_CXX11 : 0);
  
  	  /* Pass in an array of the current declaration followed
! 	     by the last pushed/merged declaration if  one exists.
  	     If the handler changes CUR_AND_LAST_DECL[0] replace
  	     *ANODE with its value.  */
! 	  tree cur_and_last_decl[] = { *anode, last_decl };
  	  tree ret = (spec->handler) (cur_and_last_decl, name, args,
  				      flags|cxx11_flag, &no_add_attrs);
  
--- 710,725 ----
  	  int cxx11_flag = (cxx11_attr_p ? ATTR_FLAG_CXX11 : 0);
  
  	  /* Pass in an array of the current declaration followed
! 	     by the last pushed/merged declaration if one exists.
! 	     For calls that modify the type attributes of a DECL
! 	     and for which *ANODE is *NODE's type, also pass in
! 	     the DECL as the third element to use in diagnostics.
  	     If the handler changes CUR_AND_LAST_DECL[0] replace
  	     *ANODE with its value.  */
! 	  tree cur_and_last_decl[3] = { *anode, last_decl };
! 	  if (anode != node && DECL_P (*node))
! 	    cur_and_last_decl[2] = *node;
! 
  	  tree ret = (spec->handler) (cur_and_last_decl, name, args,
  				      flags|cxx11_flag, &no_add_attrs);
  
*************** comp_type_attributes (const_tree type1,
*** 1357,1362 ****
--- 1366,1448 ----
    return targetm.comp_type_attributes (type1, type2);
  }
  
+ /* PREDICATE acts as a function of type:
+ 
+      (const_tree attr, const attribute_spec *as) -> bool
+ 
+    where ATTR is an attribute and AS is its possibly-null specification.
+    Return a list of every attribute in attribute list ATTRS for which
+    PREDICATE is true.  Return ATTRS itself if PREDICATE returns true
+    for every attribute.  */
+ 
+ template<typename Predicate>
+ tree
+ remove_attributes_matching (tree attrs, Predicate predicate)
+ {
+   tree new_attrs = NULL_TREE;
+   tree *ptr = &new_attrs;
+   const_tree start = attrs;
+   for (const_tree attr = attrs; attr; attr = TREE_CHAIN (attr))
+     {
+       tree name = get_attribute_name (attr);
+       const attribute_spec *as = lookup_attribute_spec (name);
+       const_tree end;
+       if (!predicate (attr, as))
+ 	end = attr;
+       else if (start == attrs)
+ 	continue;
+       else
+ 	end = TREE_CHAIN (attr);
+ 
+       for (; start != end; start = TREE_CHAIN (start))
+ 	{
+ 	  *ptr = tree_cons (TREE_PURPOSE (start),
+ 			    TREE_VALUE (start), NULL_TREE);
+ 	  TREE_CHAIN (*ptr) = NULL_TREE;
+ 	  ptr = &TREE_CHAIN (*ptr);
+ 	}
+       start = TREE_CHAIN (attr);
+     }
+   gcc_assert (!start || start == attrs);
+   return start ? attrs : new_attrs;
+ }
+ 
+ /* If VALUE is true, return the subset of ATTRS that affect type identity,
+    otherwise return the subset of ATTRS that don't affect type identity.  */
+ 
+ tree
+ affects_type_identity_attributes (tree attrs, bool value)
+ {
+   auto predicate = [value](const_tree, const attribute_spec *as) -> bool
+     {
+       return bool (as && as->affects_type_identity) == value;
+     };
+   return remove_attributes_matching (attrs, predicate);
+ }
+ 
+ /* Remove attributes that affect type identity from ATTRS unless the
+    same attributes occur in OK_ATTRS.  */
+ 
+ tree
+ restrict_type_identity_attributes_to (tree attrs, tree ok_attrs)
+ {
+   auto predicate = [ok_attrs](const_tree attr,
+ 			      const attribute_spec *as) -> bool
+     {
+       if (!as || !as->affects_type_identity)
+ 	return true;
+ 
+       for (tree ok_attr = lookup_attribute (as->name, ok_attrs);
+ 	   ok_attr;
+ 	   ok_attr = lookup_attribute (as->name, TREE_CHAIN (ok_attr)))
+ 	if (simple_cst_equal (TREE_VALUE (ok_attr), TREE_VALUE (attr)) == 1)
+ 	  return true;
+ 
+       return false;
+     };
+   return remove_attributes_matching (attrs, predicate);
+ }
+ 
  /* Return a type like TTYPE except that its TYPE_ATTRIBUTE
     is ATTRIBUTE.
  
*************** maybe_diag_alias_attributes (tree alias,
*** 2017,2022 ****
--- 2103,2427 ----
      }
  }
  
+ /* Initialize a mapping RWM for a call to a function declared with
+    attribute access in ATTRS.  Each attribute positional operand
+    inserts one entry into the mapping with the operand number as
+    the key.  */
+ 
+ void
+ init_attr_rdwr_indices (rdwr_map *rwm, tree attrs)
+ {
+   if (!attrs)
+     return;
+ 
+   for (tree access = attrs;
+        (access = lookup_attribute ("access", access));
+        access = TREE_CHAIN (access))
+     {
+       /* The TREE_VALUE of an attribute is a TREE_LIST whose TREE_VALUE
+ 	 is the attribute argument's value.  */
+       tree mode = TREE_VALUE (access);
+       if (!mode)
+ 	return;
+ 
+       /* The (optional) list of VLA bounds.  */
+       tree vblist = TREE_CHAIN (mode);
+       if (vblist)
+        vblist = TREE_VALUE (vblist);
+ 
+       mode = TREE_VALUE (mode);
+       if (TREE_CODE (mode) != STRING_CST)
+ 	continue;
+       gcc_assert (TREE_CODE (mode) == STRING_CST);
+ 
+       for (const char *m = TREE_STRING_POINTER (mode); *m; )
+ 	{
+ 	  attr_access acc = { };
+ 
+ 	  /* Skip the internal-only plus sign.  */
+ 	  if (*m == '+')
+ 	    ++m;
+ 
+ 	  acc.str = m;
+ 	  acc.mode = acc.from_mode_char (*m);
+ 	  acc.sizarg = UINT_MAX;
+ 
+ 	  const char *end;
+ 	  acc.ptrarg = strtoul (++m, const_cast<char**>(&end), 10);
+ 	  m = end;
+ 
+ 	  if (*m == '[')
+ 	    {
+ 	      /* Forms containing the square bracket are internal-only
+ 		 (not specified by an attribute declaration), and used
+ 		 for various forms of array and VLA parameters.  */
+ 	      acc.internal_p = true;
+ 
+ 	      /* Search to the closing bracket and look at the preceding
+ 		 code: it determines the form of the most significant
+ 		 bound of the array.  Others prior to it encode the form
+ 		 of interior VLA bounds.  They're not of interest here.  */
+ 	      end = strchr (m, ']');
+ 	      const char *p = end;
+ 	      gcc_assert (p);
+ 
+ 	      while (ISDIGIT (p[-1]))
+ 		--p;
+ 
+ 	      if (ISDIGIT (*p))
+ 		{
+ 		  /* A digit denotes a constant bound (as in T[3]).  */
+ 		  acc.static_p = p[-1] == 's';
+ 		  acc.minsize = strtoull (p, NULL, 10);
+ 		}
+ 	      else if (' ' == p[-1])
+ 		{
+ 		  /* A space denotes an ordinary array of unspecified bound
+ 		     (as in T[]).  */
+ 		  acc.minsize = 0;
+ 		}
+ 	      else if ('*' == p[-1] || '$' == p[-1])
+ 		{
+ 		  /* An asterisk denotes a VLA.  When the closing bracket
+ 		     is followed by a comma and a dollar sign its bound is
+ 		     on the list.  Otherwise it's a VLA with an unspecified
+ 		     bound.  */
+ 		  acc.static_p = p[-2] == 's';
+ 		  acc.minsize = HOST_WIDE_INT_M1U;
+ 		}
+ 
+ 	      m = end + 1;
+ 	    }
+ 
+ 	  if (*m == ',')
+ 	    {
+ 	      ++m;
+ 	      do
+ 		{
+ 		  if (*m == '$')
+ 		    {
+ 		      ++m;
+ 		      if (!acc.size && vblist)
+ 			{
+ 			  /* Extract the list of VLA bounds for the current
+ 			     parameter, store it in ACC.SIZE, and advance
+ 			     to the list of bounds for the next VLA parameter.
+ 			  */
+ 			  acc.size = TREE_VALUE (vblist);
+ 			  vblist = TREE_CHAIN (vblist);
+ 			}
+ 		    }
+ 
+ 		  if (ISDIGIT (*m))
+ 		    {
+ 		      /* Extract the positional argument.  It's absent
+ 			 for VLAs whose bound doesn't name a function
+ 			 parameter.  */
+ 		      unsigned pos = strtoul (m, const_cast<char**>(&end), 10);
+ 		      if (acc.sizarg == UINT_MAX)
+ 			acc.sizarg = pos;
+ 		      m = end;
+ 		    }
+ 		}
+ 	      while (*m == '$');
+ 	    }
+ 
+ 	  acc.end = m;
+ 
+ 	  bool existing;
+ 	  auto &ref = rwm->get_or_insert (acc.ptrarg, &existing);
+ 	  if (existing)
+ 	    {
+ 	      /* Merge the new spec with the existing.  */
+ 	      if (acc.minsize == HOST_WIDE_INT_M1U)
+ 		ref.minsize = HOST_WIDE_INT_M1U;
+ 
+ 	      if (acc.sizarg != UINT_MAX)
+ 		ref.sizarg = acc.sizarg;
+ 
+ 	      if (acc.mode)
+ 		ref.mode = acc.mode;
+ 	    }
+ 	  else
+ 	    ref = acc;
+ 
+ 	  /* Unconditionally add an entry for the required pointer
+ 	     operand of the attribute, and one for the optional size
+ 	     operand when it's specified.  */
+ 	  if (acc.sizarg != UINT_MAX)
+ 	    rwm->put (acc.sizarg, acc);
+ 	}
+     }
+ }
+ 
+ /* Return the access specification for a function parameter PARM
+    or null if the current function has no such specification.  */
+ 
+ attr_access *
+ get_parm_access (rdwr_map &rdwr_idx, tree parm,
+ 		 tree fndecl /* = current_function_decl */)
+ {
+   tree fntype = TREE_TYPE (fndecl);
+   init_attr_rdwr_indices (&rdwr_idx, TYPE_ATTRIBUTES (fntype));
+ 
+   if (rdwr_idx.is_empty ())
+     return NULL;
+ 
+   unsigned argpos = 0;
+   tree fnargs = DECL_ARGUMENTS (fndecl);
+   for (tree arg = fnargs; arg; arg = TREE_CHAIN (arg), ++argpos)
+     if (arg == parm)
+       return rdwr_idx.get (argpos);
+ 
+   return NULL;
+ }
+ 
+ /* Return the internal representation as STRING_CST.  Internal positional
+    arguments are zero-based.  */
+ 
+ tree
+ attr_access::to_internal_string () const
+ {
+   return build_string (end - str, str);
+ }
+ 
+ /* Return the human-readable representation of the external attribute
+    specification (as it might appear in the source code) as STRING_CST.
+    External positional arguments are one-based.  */
+ 
+ tree
+ attr_access::to_external_string () const
+ {
+   char buf[80];
+   gcc_assert (mode != access_deferred);
+   int len = snprintf (buf, sizeof buf, "access (%s, %u",
+ 		      mode_names[mode], ptrarg + 1);
+   if (sizarg != UINT_MAX)
+     len += snprintf (buf + len, sizeof buf - len, ", %u", sizarg + 1);
+   strcpy (buf + len, ")");
+   return build_string (len + 2, buf);
+ }
+ 
+ /* Return the number of specified VLA bounds and set *nunspec to
+    the number of unspecified ones (those designated by [*]).  */
+ 
+ unsigned
+ attr_access::vla_bounds (unsigned *nunspec) const
+ {
+   *nunspec = 0;
+   for (const char* p = strrchr (str, ']'); p && *p != '['; --p)
+     if (*p == '*')
+       ++*nunspec;
+   return list_length (size);
+ }
+ 
+ /* Reset front end-specific attribute access data from ATTRS.
+    Called from the free_lang_data pass.  */
+ 
+ /* static */ void
+ attr_access::free_lang_data (tree attrs)
+ {
+   for (tree acs = attrs; (acs = lookup_attribute ("access", acs));
+        acs = TREE_CHAIN (acs))
+     {
+       tree vblist = TREE_VALUE (acs);
+       vblist = TREE_CHAIN (vblist);
+       if (!vblist)
+ 	continue;
+ 
+       for (vblist = TREE_VALUE (vblist); vblist; vblist = TREE_CHAIN (vblist))
+ 	{
+ 	  tree *pvbnd = &TREE_VALUE (vblist);
+ 	  if (!*pvbnd || DECL_P (*pvbnd))
+ 	    continue;
+ 
+ 	  /* VLA bounds that are expressions as opposed to DECLs are
+ 	     only used in the front end.  Reset them to keep front end
+ 	     trees leaking into the middle end (see pr97172) and to
+ 	     free up memory.  */
+ 	  *pvbnd = NULL_TREE;
+ 	}
+     }
+ 
+   for (tree argspec = attrs; (argspec = lookup_attribute ("arg spec", argspec));
+        argspec = TREE_CHAIN (argspec))
+     {
+       /* Same as above.  */
+       tree *pvblist = &TREE_VALUE (argspec);
+       *pvblist = NULL_TREE;
+     }
+ }
+ 
+ /* Defined in attr_access.  */
+ constexpr char attr_access::mode_chars[];
+ constexpr char attr_access::mode_names[][11];
+ 
+ /* Format an array, including a VLA, pointed to by TYPE and used as
+    a function parameter as a human-readable string.  ACC describes
+    an access to the parameter and is used to determine the outermost
+    form of the array including its bound which is otherwise obviated
+    by its decay to pointer.  Return the formatted string.  */
+ 
+ std::string
+ attr_access::array_as_string (tree type) const
+ {
+   std::string typstr;
+ 
+   if (type == error_mark_node)
+     return std::string ();
+ 
+   if (this->str)
+     {
+       /* For array parameters (but not pointers) create a temporary array
+ 	 type that corresponds to the form of the parameter including its
+ 	 qualifiers even though they apply to the pointer, not the array
+ 	 type.  */
+       const bool vla_p = minsize == HOST_WIDE_INT_M1U;
+       tree eltype = TREE_TYPE (type);
+       tree index_type = NULL_TREE;
+ 
+       if (minsize == HOST_WIDE_INT_M1U)
+ 	{
+ 	  /* Determine if this is a VLA (an array whose most significant
+ 	     bound is nonconstant and whose access string has "$]" in it)
+ 	     extract the bound expression from SIZE.  */
+ 	  const char *p = end;
+ 	  for ( ; p != str && *p-- != ']'; );
+ 	  if (*p == '$')
+ 	    index_type = build_index_type (TREE_VALUE (size));
+ 	}
+       else if (minsize)
+ 	index_type = build_index_type (size_int (minsize - 1));
+ 
+       tree arat = NULL_TREE;
+       if (static_p || vla_p)
+ 	{
+ 	  tree flag = static_p ? integer_one_node : NULL_TREE;
+ 	  /* Hack: there's no language-independent way to encode
+ 	     the "static" specifier or the "*" notation in an array type.
+ 	     Add a "fake" attribute to have the pretty-printer add "static"
+ 	     or "*".  The "[static N]" notation is only valid in the most
+ 	     significant bound but [*] can be used for any bound.  Because
+ 	     [*] is represented the same as [0] this hack only works for
+ 	     the most significant bound like static and the others are
+ 	     rendered as [0].  */
+ 	  arat = build_tree_list (get_identifier ("array"), flag);
+ 	}
+ 
+       const int quals = TYPE_QUALS (type);
+       type = build_array_type (eltype, index_type);
+       type = build_type_attribute_qual_variant (type, arat, quals);
+     }
+ 
+   /* Format the type using the current pretty printer.  The generic tree
+      printer does a terrible job.  */
+   pretty_printer *pp = global_dc->printer->clone ();
+   pp_printf (pp, "%qT", type);
+   typstr = pp_formatted_text (pp);
+   delete pp;
+ 
+   return typstr;
+ }
  
  #if CHECKING_P
  
diff -Nrcpad gcc-10.3.0/gcc/attribs.h gcc-11.1.0/gcc/attribs.h
*** gcc-10.3.0/gcc/attribs.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/attribs.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Declarations and definitions dealing with attribute handling.
!    Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Declarations and definitions dealing with attribute handling.
!    Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern bool attribute_value_equal (const
*** 65,70 ****
--- 65,73 ----
     warning to be generated).  */
  extern int comp_type_attributes (const_tree, const_tree);
  
+ extern tree affects_type_identity_attributes (tree, bool = true);
+ extern tree restrict_type_identity_attributes_to (tree, tree);
+ 
  /* Default versions of target-overridable functions.  */
  extern tree merge_decl_attributes (tree, tree);
  extern tree merge_type_attributes (tree, tree);
*************** lookup_attribute_by_prefix (const char *
*** 224,241 ****
  
  struct attr_access
  {
    /* The attribute pointer argument.  */
    tree ptr;
!   /* The size of the pointed-to object or NULL when not specified.  */
    tree size;
  
!   /* The zero-based number of each of the formal function arguments.  */
    unsigned ptrarg;
    unsigned sizarg;
  
    /* The access mode.  */
-   enum access_mode { read_only, write_only, read_write };
    access_mode mode;
  };
  
  #endif // GCC_ATTRIBS_H
--- 227,321 ----
  
  struct attr_access
  {
+   /* The beginning and end of the internal string representation.  */
+   const char *str, *end;
    /* The attribute pointer argument.  */
    tree ptr;
!   /* For a declaration, a TREE_CHAIN of VLA bound expressions stored
!      in TREE_VALUE and their positions in the argument list (stored
!      in TREE_PURPOSE).  Each expression may be a PARM_DECL or some
!      other DECL (for ordinary variables), or an EXPR for other
!      expressions (e.g., funcion calls).  */
    tree size;
  
!   /* The zero-based position of each of the formal function arguments.
!      For the optional SIZARG, UINT_MAX when not specified.  For VLAs
!      with multiple variable bounds, SIZARG is the position corresponding
!      to the most significant bound in the argument list.  Positions of
!      subsequent bounds are in the TREE_PURPOSE field of the SIZE chain.  */
    unsigned ptrarg;
    unsigned sizarg;
+   /* For internal specifications only, the constant minimum size of
+      the array, zero if not specified, and HWI_M1U for the unspecified
+      VLA [*] notation.  Meaningless for external (explicit) access
+      specifications.  */
+   unsigned HOST_WIDE_INT minsize;
  
    /* The access mode.  */
    access_mode mode;
+ 
+   /* Set for an attribute added internally rather than by an explicit
+      declaration. */
+   bool internal_p;
+   /* Set for the T[static MINSIZE] array notation for nonzero MINSIZE
+      less than HWI_M1U.  */
+   bool static_p;
+ 
+   /* Return the number of specified VLA bounds.  */
+   unsigned vla_bounds (unsigned *) const;
+ 
+   /* Return internal representation as STRING_CST.  */
+   tree to_internal_string () const;
+ 
+   /* Return the human-readable representation of the external attribute
+      specification (as it might appear in the source code) as STRING_CST.  */
+   tree to_external_string () const;
+ 
+   /* Return argument of array type formatted as a readable string.  */
+   std::string array_as_string (tree) const;
+ 
+   /* Return the access mode corresponding to the character code.  */
+   static access_mode from_mode_char (char);
+ 
+   /* Reset front end-specific attribute access data from attributes.  */
+   static void free_lang_data (tree);
+ 
+   /* The character codes corresponding to all the access modes.  */
+   static constexpr char mode_chars[5] = { '-', 'r', 'w', 'x', '^' };
+ 
+   /* The strings corresponding to just the external access modes.  */
+   static constexpr char mode_names[4][11] =
+     {
+      "none", "read_only", "write_only", "read_write"
+     };
  };
  
+ inline access_mode
+ attr_access::from_mode_char (char c)
+ {
+   switch (c)
+     {
+     case mode_chars[access_none]: return access_none;
+     case mode_chars[access_read_only]: return access_read_only;
+     case mode_chars[access_write_only]: return access_write_only;
+     case mode_chars[access_read_write]: return access_read_write;
+     case mode_chars[access_deferred]: return access_deferred;
+     }
+   gcc_unreachable ();
+ }
+ 
+ /* Used to define rdwr_map below.  */
+ struct rdwr_access_hash: int_hash<int, -1> { };
+ 
+ /* A mapping between argument number corresponding to attribute access
+    mode (read_only, write_only, or read_write) and operands.  */
+ struct attr_access;
+ typedef hash_map<rdwr_access_hash, attr_access> rdwr_map;
+ 
+ extern void init_attr_rdwr_indices (rdwr_map *, tree);
+ extern attr_access *get_parm_access (rdwr_map &, tree,
+ 				     tree = current_function_decl);
+ 
+ extern unsigned fndecl_dealloc_argno (tree fndecl);
+ 
  #endif // GCC_ATTRIBS_H
diff -Nrcpad gcc-10.3.0/gcc/auto-inc-dec.c gcc-11.1.0/gcc/auto-inc-dec.c
*** gcc-10.3.0/gcc/auto-inc-dec.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/auto-inc-dec.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Discovery of auto-inc and auto-dec instructions.
!    Copyright (C) 2006-2020 Free Software Foundation, Inc.
     Contributed by Kenneth Zadeck <zadeck@naturalbridge.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* Discovery of auto-inc and auto-dec instructions.
!    Copyright (C) 2006-2021 Free Software Foundation, Inc.
     Contributed by Kenneth Zadeck <zadeck@naturalbridge.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/auto-profile.c gcc-11.1.0/gcc/auto-profile.c
*** gcc-10.3.0/gcc/auto-profile.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/auto-profile.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Read and annotate call graph profile from the auto profile data file.
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
     Contributed by Dehao Chen (dehao@google.com)
  
  This file is part of GCC.
--- 1,5 ----
  /* Read and annotate call graph profile from the auto profile data file.
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
     Contributed by Dehao Chen (dehao@google.com)
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/auto-profile.h gcc-11.1.0/gcc/auto-profile.h
*** gcc-10.3.0/gcc/auto-profile.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/auto-profile.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* auto-profile.h - Defines data exported from auto-profile.c
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
     Contributed by Dehao Chen (dehao@google.com)
  
  This file is part of GCC.
--- 1,5 ----
  /* auto-profile.h - Defines data exported from auto-profile.c
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
     Contributed by Dehao Chen (dehao@google.com)
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/backend.h gcc-11.1.0/gcc/backend.h
*** gcc-10.3.0/gcc/backend.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/backend.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Common Backend requirements. 
  
!    Copyright (C) 2015-2020 Free Software Foundation, Inc.
     Contributed by Andrew MacLeod <amacleod@redhat.com>
  
  This file is part of GCC.
--- 1,6 ----
  /* Common Backend requirements. 
  
!    Copyright (C) 2015-2021 Free Software Foundation, Inc.
     Contributed by Andrew MacLeod <amacleod@redhat.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/basic-block.h gcc-11.1.0/gcc/basic-block.h
*** gcc-10.3.0/gcc/basic-block.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/basic-block.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Define control flow data structures for the CFG.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Define control flow data structures for the CFG.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/bb-reorder.c gcc-11.1.0/gcc/bb-reorder.c
*** gcc-10.3.0/gcc/bb-reorder.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/bb-reorder.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Basic block reordering routines for the GNU compiler.
!    Copyright (C) 2000-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Basic block reordering routines for the GNU compiler.
!    Copyright (C) 2000-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** make_pass_reorder_blocks (gcc::context *
*** 2680,2688 ****
  static bool
  maybe_duplicate_computed_goto (basic_block bb, int max_size)
  {
-   if (single_pred_p (bb))
-     return false;
- 
    /* Make sure that the block is small enough.  */
    rtx_insn *insn;
    FOR_BB_INSNS (bb, insn)
--- 2680,2685 ----
*************** maybe_duplicate_computed_goto (basic_blo
*** 2700,2709 ****
      {
        basic_block pred = e->src;
  
!       /* Do not duplicate BB into PRED if that is the last predecessor, or if
! 	 we cannot merge a copy of BB with PRED.  */
!       if (single_pred_p (bb)
! 	  || !single_succ_p (pred)
  	  || e->flags & EDGE_COMPLEX
  	  || pred->index < NUM_FIXED_BLOCKS
  	  || (JUMP_P (BB_END (pred)) && !simplejump_p (BB_END (pred)))
--- 2697,2705 ----
      {
        basic_block pred = e->src;
  
!       /* Do not duplicate BB into PRED if we cannot merge a copy of BB
! 	 with PRED.  */
!       if (!single_succ_p (pred)
  	  || e->flags & EDGE_COMPLEX
  	  || pred->index < NUM_FIXED_BLOCKS
  	  || (JUMP_P (BB_END (pred)) && !simplejump_p (BB_END (pred)))
*************** duplicate_computed_gotos (function *fun)
*** 2764,2769 ****
--- 2760,2769 ----
      if (computed_jump_p (BB_END (bb)) && can_duplicate_block_p (bb))
        changed |= maybe_duplicate_computed_goto (bb, max_size);
  
+   /* Some blocks may have become unreachable.  */
+   if (changed)
+     cleanup_cfg (0);
+ 
    /* Duplicating blocks will redirect edges and may cause hot blocks
      previously reached by both hot and cold blocks to become dominated
      only by cold blocks.  */
diff -Nrcpad gcc-10.3.0/gcc/bb-reorder.h gcc-11.1.0/gcc/bb-reorder.h
*** gcc-10.3.0/gcc/bb-reorder.h	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/bb-reorder.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Basic block reordering routines for the GNU compiler.
!    Copyright (C) 2000-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Basic block reordering routines for the GNU compiler.
!    Copyright (C) 2000-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/bitmap.c gcc-11.1.0/gcc/bitmap.c
*** gcc-10.3.0/gcc/bitmap.c	Thu Apr  8 11:56:27 2021
--- gcc-11.1.0/gcc/bitmap.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Functions to support general ended bitmaps.
!    Copyright (C) 1997-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Functions to support general ended bitmaps.
!    Copyright (C) 1997-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** bitmap_list_view (bitmap head)
*** 678,683 ****
--- 678,688 ----
      }
  
    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.
diff -Nrcpad gcc-10.3.0/gcc/bitmap.h gcc-11.1.0/gcc/bitmap.h
*** gcc-10.3.0/gcc/bitmap.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/bitmap.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Functions to support general ended bitmaps.
!    Copyright (C) 1997-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Functions to support general ended bitmaps.
!    Copyright (C) 1997-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** public:
*** 237,243 ****
  
    /* Dump usage coupled to LOC location, where TOTAL is sum of all rows.  */
    inline void
!   dump (mem_location *loc, mem_usage &total) const
    {
      char *location_string = loc->to_string ();
  
--- 237,243 ----
  
    /* Dump usage coupled to LOC location, where TOTAL is sum of all rows.  */
    inline void
!   dump (mem_location *loc, const mem_usage &total) const
    {
      char *location_string = loc->to_string ();
  
*************** bmp_iter_and_compl (bitmap_iterator *bi,
*** 939,946 ****
  class auto_bitmap
  {
   public:
!   auto_bitmap () { bitmap_initialize (&m_bits, &bitmap_default_obstack); }
!   explicit auto_bitmap (bitmap_obstack *o) { bitmap_initialize (&m_bits, o); }
    ~auto_bitmap () { bitmap_clear (&m_bits); }
    // Allow calling bitmap functions on our bitmap.
    operator bitmap () { return &m_bits; }
--- 939,948 ----
  class auto_bitmap
  {
   public:
!   auto_bitmap (ALONE_CXX_MEM_STAT_INFO)
!     { bitmap_initialize (&m_bits, &bitmap_default_obstack PASS_MEM_STAT); }
!   explicit auto_bitmap (bitmap_obstack *o CXX_MEM_STAT_INFO)
!     { bitmap_initialize (&m_bits, o PASS_MEM_STAT); }
    ~auto_bitmap () { bitmap_clear (&m_bits); }
    // Allow calling bitmap functions on our bitmap.
    operator bitmap () { return &m_bits; }
diff -Nrcpad gcc-10.3.0/gcc/brig/ChangeLog gcc-11.1.0/gcc/brig/ChangeLog
*** gcc-10.3.0/gcc/brig/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-11.1.0/gcc/brig/ChangeLog	Tue Apr 27 10:00:13 2021
***************
*** 1,14 ****
! 2021-04-08  Release Manager
  
! 	* GCC 10.3.0 released.
  
! 2020-07-23  Release Manager
  
! 	* GCC 10.2.0 released.
  
! 2020-05-07  Release Manager
  
! 	* GCC 10.1.0 released.
  
  2020-01-01  Jakub Jelinek  <jakub@redhat.com>
  
--- 1,30 ----
! 2021-04-27  Release Manager
  
! 	* GCC 11.1.0 released.
  
! 2020-12-16  Martin Liska  <mliska@suse.cz>
  
! 	* lang.opt: Remove usage of Report.
  
! 2020-11-20  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR other/97911
! 	* Make-lang.in (brig.serial): Change from goal to a variable.
! 	(.PHONY): Drop brig.serial and brig.prev.
! 	(brig1$(exeext)): Depend on $(brig.serial) rather than brig.serial.
! 
! 2020-11-18  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* Make-lang.in (brig.serial): New goal.
! 	(.PHONY): Add brig.serial brig.prev.
! 	(brig1$(exeext)): Depend on brig.prev.  Call LINK_PROGRESS.
! 
! 2020-08-03  Martin Jambor  <mjambor@suse.cz>
! 
! 	* brigfrontend/brig-util.h (hsa_type_packed_p): Declared.
! 	* brigfrontend/brig-util.cc (hsa_type_packed_p): Moved here from
! 	removed gcc/hsa-common.c.
! 	* brigfrontend/hsa-brig-format.h: New file.
  
  2020-01-01  Jakub Jelinek  <jakub@redhat.com>
  
diff -Nrcpad gcc-10.3.0/gcc/brig/Make-lang.in gcc-11.1.0/gcc/brig/Make-lang.in
*** gcc-10.3.0/gcc/brig/Make-lang.in	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/Make-lang.in	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  # Make-lang.in -- Top level -*- makefile -*- fragment for gcc BRIG (HSAIL)
  # frontend.
  
! # Copyright (C) 2015-2020 Free Software Foundation, Inc.
  
  # This file is part of GCC.
  
--- 1,7 ----
  # Make-lang.in -- Top level -*- makefile -*- fragment for gcc BRIG (HSAIL)
  # frontend.
  
! # Copyright (C) 2015-2021 Free Software Foundation, Inc.
  
  # This file is part of GCC.
  
*************** GCCBRIG_TARGET_INSTALL_NAME := $(target_
*** 29,34 ****
--- 29,35 ----
  
  # The name for selecting brig in LANGUAGES.
  brig: brig1$(exeext)
+ brig.serial = brig1$(exeext)
  
  .PHONY: brig
  
*************** BRIG_OBJS = \
*** 81,95 ****
  
  brig_OBJS = $(BRIG_OBJS) brig/brigspec.o
  
! # brig1$(exeext): $(BRIG_OBJS) attribs.o $(BACKEND) $(LIBDEPS)
! # 	+$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
! # 	      $(BRIG_OBJS) attribs.o $(BACKEND) $(LIBS) $(BACKENDLIBS)
! 
! 
! brig1$(exeext): $(BRIG_OBJS) attribs.o $(BACKEND) $(LIBDEPS)
  	+$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
  	      $(BRIG_OBJS) attribs.o $(BACKEND) $(LIBS) \
  		  $(BACKENDLIBS)
  
  # Documentation.
  
--- 82,93 ----
  
  brig_OBJS = $(BRIG_OBJS) brig/brigspec.o
  
! brig1$(exeext): $(BRIG_OBJS) attribs.o $(BACKEND) $(LIBDEPS) $(brig.prev)
! 	@$(call LINK_PROGRESS,$(INDEX.brig),start)
  	+$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
  	      $(BRIG_OBJS) attribs.o $(BACKEND) $(LIBS) \
  		  $(BACKENDLIBS)
+ 	@$(call LINK_PROGRESS,$(INDEX.brig),end)
  
  # Documentation.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brig-builtins.h gcc-11.1.0/gcc/brig/brig-builtins.h
*** gcc-10.3.0/gcc/brig/brig-builtins.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brig-builtins.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-builtins.h -- brig builtin definitions
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
--- 1,5 ----
  /* brig-builtins.h -- brig builtin definitions
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
diff -Nrcpad gcc-10.3.0/gcc/brig/brig-c.h gcc-11.1.0/gcc/brig/brig-c.h
*** gcc-10.3.0/gcc/brig/brig-c.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brig-c.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-c.h -- Header file for brig input's gcc C interface.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-c.h -- Header file for brig input's gcc C interface.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brig-lang.c gcc-11.1.0/gcc/brig/brig-lang.c
*** gcc-10.3.0/gcc/brig/brig-lang.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brig-lang.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-lang.c -- brig (HSAIL) input gcc interface.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-lang.c -- brig (HSAIL) input gcc interface.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-arg-block-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-arg-block-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-arg-block-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-arg-block-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-arg-block-handler.cc -- brig arg block start/end directive handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-arg-block-handler.cc -- brig arg block start/end directive handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-atomic-inst-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-atomic-inst-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-atomic-inst-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-atomic-inst-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-atomic-inst-handler.cc -- brig atomic instruction handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
--- 1,5 ----
  /* brig-atomic-inst-handler.cc -- brig atomic instruction handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-basic-inst-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-basic-inst-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-basic-inst-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-basic-inst-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-basic-inst-handler.cc -- brig basic instruction handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-basic-inst-handler.cc -- brig basic instruction handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-branch-inst-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-branch-inst-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-branch-inst-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-branch-inst-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-branch-inst-handler.cc -- brig branch instruction handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-branch-inst-handler.cc -- brig branch instruction handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-cmp-inst-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-cmp-inst-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-cmp-inst-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-cmp-inst-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-cmp-inst-handler.cc -- brig cmp instruction handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-cmp-inst-handler.cc -- brig cmp instruction handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-code-entry-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-code-entry-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-code-entry-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-code-entry-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-code-entry-handler.cc -- a gccbrig base class
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-code-entry-handler.cc -- a gccbrig base class
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-code-entry-handler.h gcc-11.1.0/gcc/brig/brigfrontend/brig-code-entry-handler.h
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-code-entry-handler.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-code-entry-handler.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-code-entry-handler.h -- a gccbrig base class
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-code-entry-handler.h -- a gccbrig base class
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-comment-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-comment-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-comment-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-comment-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-comment-handler.cc -- brig comment directive handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-comment-handler.cc -- brig comment directive handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-control-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-control-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-control-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-control-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-control-handler.cc -- brig control directive handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-control-handler.cc -- brig control directive handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-copy-move-inst-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-copy-move-inst-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-copy-move-inst-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-copy-move-inst-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-copy-move-inst-handler.cc -- brig copy/move instruction handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-copy-move-inst-handler.cc -- brig copy/move instruction handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-cvt-inst-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-cvt-inst-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-cvt-inst-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-cvt-inst-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-cvt-inst-handler.cc -- brig cvt (convert) instruction handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-cvt-inst-handler.cc -- brig cvt (convert) instruction handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-fbarrier-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-fbarrier-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-fbarrier-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-fbarrier-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-fbarrier-handler.cc -- brig fbarrier directive handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-fbarrier-handler.cc -- brig fbarrier directive handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-function-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-function-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-function-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-function-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-code-entry-handler.cc -- brig function directive handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-code-entry-handler.cc -- brig function directive handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-function.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-function.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-function.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-function.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-function.cc -- declaration of brig_function class.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-function.cc -- declaration of brig_function class.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-function.h gcc-11.1.0/gcc/brig/brigfrontend/brig-function.h
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-function.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-function.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-function.h -- declaration of brig_function class.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-function.h -- declaration of brig_function class.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-inst-mod-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-inst-mod-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-inst-mod-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-inst-mod-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-inst-mod-handler.cc -- brig rounding moded instruction handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-inst-mod-handler.cc -- brig rounding moded instruction handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-label-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-label-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-label-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-label-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-label-handler.cc -- brig label directive handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-label-handler.cc -- brig label directive handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-lane-inst-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-lane-inst-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-lane-inst-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-lane-inst-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-lane-inst-handler.cc -- brig lane instruction handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-lane-inst-handler.cc -- brig lane instruction handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-machine.c gcc-11.1.0/gcc/brig/brigfrontend/brig-machine.c
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-machine.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-machine.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-machine.c -- gccbrig machine queries
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-machine.c -- gccbrig machine queries
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-machine.h gcc-11.1.0/gcc/brig/brigfrontend/brig-machine.h
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-machine.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-machine.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-machine.h -- gccbrig machine queries
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* brig-machine.h -- gccbrig machine queries
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-mem-inst-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-mem-inst-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-mem-inst-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-mem-inst-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-mem-inst-handler.cc -- brig memory inst handler
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-mem-inst-handler.cc -- brig memory inst handler
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-module-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-module-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-module-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-module-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-module-handler.cc -- brig module directive handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-module-handler.cc -- brig module directive handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-queue-inst-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-queue-inst-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-queue-inst-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-queue-inst-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* brig-queue-inst-handler.cc -- brig user mode queue related instruction
     handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,6 ----
  /* brig-queue-inst-handler.cc -- brig user mode queue related instruction
     handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-seg-inst-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-seg-inst-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-seg-inst-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-seg-inst-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-seg-inst-handler.cc -- brig segment related instruction handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-seg-inst-handler.cc -- brig segment related instruction handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-signal-inst-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-signal-inst-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-signal-inst-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-signal-inst-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-signal-inst-handler.cc -- brig signal instruction handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-signal-inst-handler.cc -- brig signal instruction handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-to-generic.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-to-generic.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-to-generic.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-to-generic.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig2tree.cc -- brig to gcc generic/gimple tree conversion
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig2tree.cc -- brig to gcc generic/gimple tree conversion
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-to-generic.h gcc-11.1.0/gcc/brig/brigfrontend/brig-to-generic.h
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-to-generic.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-to-generic.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-to-generic.h -- brig to gcc generic conversion
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-to-generic.h -- brig to gcc generic conversion
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-util.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-util.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-util.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-util.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-util.cc -- gccbrig utility functions
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-util.cc -- gccbrig utility functions
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
*************** gccbrig_print_reg_use_info (FILE *dump,
*** 563,565 ****
--- 563,574 ----
  	}
      }
  }
+ 
+ /* Return true if TYPE is a packed HSA type.  */
+ 
+ bool
+ hsa_type_packed_p (BrigType16_t type)
+ {
+   return (type & BRIG_TYPE_PACK_MASK) != BRIG_TYPE_PACK_NONE;
+ }
+ 
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-util.h gcc-11.1.0/gcc/brig/brigfrontend/brig-util.h
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-util.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-util.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-util.h -- gccbrig utility functions
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-util.h -- gccbrig utility functions
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
*************** gccbrig_type_vector_subparts (const_tree
*** 115,118 ****
--- 115,120 ----
    return TYPE_VECTOR_SUBPARTS (type).to_constant ();
  }
  
+ bool hsa_type_packed_p (BrigType16_t type);
+ 
  #endif
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/brig-variable-handler.cc gcc-11.1.0/gcc/brig/brigfrontend/brig-variable-handler.cc
*** gcc-10.3.0/gcc/brig/brigfrontend/brig-variable-handler.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/brig-variable-handler.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brig-variable-handler.cc -- brig variable directive handling
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brig-variable-handler.cc -- brig variable directive handling
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/hsa-brig-format.h gcc-11.1.0/gcc/brig/brigfrontend/hsa-brig-format.h
*** gcc-10.3.0/gcc/brig/brigfrontend/hsa-brig-format.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/brig/brigfrontend/hsa-brig-format.h	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,1234 ----
+ /* HSA BRIG (binary representation of HSAIL) 1.0.1 representation description.
+    Copyright (C) 2016-2021 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/>.
+ 
+ The contents of the file was created by extracting data structures, enum,
+ typedef and other definitions from HSA Programmer's Reference Manual Version
+ 1.0.1 (http://www.hsafoundation.com/standards/).
+ 
+ HTML version is provided on the following link:
+ http://www.hsafoundation.com/html/Content/PRM/Topics/PRM_title_page.htm */
+ 
+ #ifndef HSA_BRIG_FORMAT_H
+ #define HSA_BRIG_FORMAT_H
+ 
+ struct BrigModuleHeader;
+ typedef uint16_t BrigKind16_t;
+ typedef uint32_t BrigVersion32_t;
+ 
+ typedef BrigModuleHeader *BrigModule_t;
+ typedef uint32_t BrigDataOffset32_t;
+ typedef uint32_t BrigCodeOffset32_t;
+ typedef uint32_t BrigOperandOffset32_t;
+ typedef BrigDataOffset32_t BrigDataOffsetString32_t;
+ typedef BrigDataOffset32_t BrigDataOffsetCodeList32_t;
+ typedef BrigDataOffset32_t BrigDataOffsetOperandList32_t;
+ typedef uint8_t BrigAlignment8_t;
+ 
+ enum BrigAlignment
+ {
+   BRIG_ALIGNMENT_NONE = 0,
+   BRIG_ALIGNMENT_1 = 1,
+   BRIG_ALIGNMENT_2 = 2,
+   BRIG_ALIGNMENT_4 = 3,
+   BRIG_ALIGNMENT_8 = 4,
+   BRIG_ALIGNMENT_16 = 5,
+   BRIG_ALIGNMENT_32 = 6,
+   BRIG_ALIGNMENT_64 = 7,
+   BRIG_ALIGNMENT_128 = 8,
+   BRIG_ALIGNMENT_256 = 9
+ };
+ 
+ typedef uint8_t BrigAllocation8_t;
+ 
+ enum BrigAllocation
+ {
+   BRIG_ALLOCATION_NONE = 0,
+   BRIG_ALLOCATION_PROGRAM = 1,
+   BRIG_ALLOCATION_AGENT = 2,
+   BRIG_ALLOCATION_AUTOMATIC = 3
+ };
+ 
+ typedef uint8_t BrigAluModifier8_t;
+ 
+ enum BrigAluModifierMask
+ {
+   BRIG_ALU_FTZ = 1
+ };
+ 
+ typedef uint8_t BrigAtomicOperation8_t;
+ 
+ enum BrigAtomicOperation
+ {
+   BRIG_ATOMIC_ADD = 0,
+   BRIG_ATOMIC_AND = 1,
+   BRIG_ATOMIC_CAS = 2,
+   BRIG_ATOMIC_EXCH = 3,
+   BRIG_ATOMIC_LD = 4,
+   BRIG_ATOMIC_MAX = 5,
+   BRIG_ATOMIC_MIN = 6,
+   BRIG_ATOMIC_OR = 7,
+   BRIG_ATOMIC_ST = 8,
+   BRIG_ATOMIC_SUB = 9,
+   BRIG_ATOMIC_WRAPDEC = 10,
+   BRIG_ATOMIC_WRAPINC = 11,
+   BRIG_ATOMIC_XOR = 12,
+   BRIG_ATOMIC_WAIT_EQ = 13,
+   BRIG_ATOMIC_WAIT_NE = 14,
+   BRIG_ATOMIC_WAIT_LT = 15,
+   BRIG_ATOMIC_WAIT_GTE = 16,
+   BRIG_ATOMIC_WAITTIMEOUT_EQ = 17,
+   BRIG_ATOMIC_WAITTIMEOUT_NE = 18,
+   BRIG_ATOMIC_WAITTIMEOUT_LT = 19,
+   BRIG_ATOMIC_WAITTIMEOUT_GTE = 20
+ };
+ 
+ struct BrigBase
+ {
+   uint16_t byteCount;
+   BrigKind16_t kind;
+ };
+ 
+ typedef uint8_t BrigCompareOperation8_t;
+ 
+ enum BrigCompareOperation
+ {
+   BRIG_COMPARE_EQ = 0,
+   BRIG_COMPARE_NE = 1,
+   BRIG_COMPARE_LT = 2,
+   BRIG_COMPARE_LE = 3,
+   BRIG_COMPARE_GT = 4,
+   BRIG_COMPARE_GE = 5,
+   BRIG_COMPARE_EQU = 6,
+   BRIG_COMPARE_NEU = 7,
+   BRIG_COMPARE_LTU = 8,
+   BRIG_COMPARE_LEU = 9,
+   BRIG_COMPARE_GTU = 10,
+   BRIG_COMPARE_GEU = 11,
+   BRIG_COMPARE_NUM = 12,
+   BRIG_COMPARE_NAN = 13,
+   BRIG_COMPARE_SEQ = 14,
+   BRIG_COMPARE_SNE = 15,
+   BRIG_COMPARE_SLT = 16,
+   BRIG_COMPARE_SLE = 17,
+   BRIG_COMPARE_SGT = 18,
+   BRIG_COMPARE_SGE = 19,
+   BRIG_COMPARE_SGEU = 20,
+   BRIG_COMPARE_SEQU = 21,
+   BRIG_COMPARE_SNEU = 22,
+   BRIG_COMPARE_SLTU = 23,
+   BRIG_COMPARE_SLEU = 24,
+   BRIG_COMPARE_SNUM = 25,
+   BRIG_COMPARE_SNAN = 26,
+   BRIG_COMPARE_SGTU = 27
+ };
+ 
+ typedef uint16_t BrigControlDirective16_t;
+ 
+ enum BrigControlDirective
+ {
+   BRIG_CONTROL_NONE = 0,
+   BRIG_CONTROL_ENABLEBREAKEXCEPTIONS = 1,
+   BRIG_CONTROL_ENABLEDETECTEXCEPTIONS = 2,
+   BRIG_CONTROL_MAXDYNAMICGROUPSIZE = 3,
+   BRIG_CONTROL_MAXFLATGRIDSIZE = 4,
+   BRIG_CONTROL_MAXFLATWORKGROUPSIZE = 5,
+   BRIG_CONTROL_REQUIREDDIM = 6,
+   BRIG_CONTROL_REQUIREDGRIDSIZE = 7,
+   BRIG_CONTROL_REQUIREDWORKGROUPSIZE = 8,
+   BRIG_CONTROL_REQUIRENOPARTIALWORKGROUPS = 9
+ };
+ 
+ typedef uint32_t BrigExceptions32_t;
+ 
+ enum BrigExceptionsMask
+ {
+   BRIG_EXCEPTIONS_INVALID_OPERATION = 1 << 0,
+   BRIG_EXCEPTIONS_DIVIDE_BY_ZERO = 1 << 1,
+   BRIG_EXCEPTIONS_OVERFLOW = 1 << 2,
+   BRIG_EXCEPTIONS_UNDERFLOW = 1 << 3,
+   BRIG_EXCEPTIONS_INEXACT = 1 << 4,
+   BRIG_EXCEPTIONS_FIRST_USER_DEFINED = 1 << 16
+ };
+ 
+ typedef uint8_t BrigExecutableModifier8_t;
+ 
+ enum BrigExecutableModifierMask
+ {
+   BRIG_EXECUTABLE_DEFINITION = 1
+ };
+ 
+ typedef uint8_t BrigImageChannelOrder8_t;
+ 
+ enum BrigImageChannelOrder
+ {
+   BRIG_CHANNEL_ORDER_A = 0,
+   BRIG_CHANNEL_ORDER_R = 1,
+   BRIG_CHANNEL_ORDER_RX = 2,
+   BRIG_CHANNEL_ORDER_RG = 3,
+   BRIG_CHANNEL_ORDER_RGX = 4,
+   BRIG_CHANNEL_ORDER_RA = 5,
+   BRIG_CHANNEL_ORDER_RGB = 6,
+   BRIG_CHANNEL_ORDER_RGBX = 7,
+   BRIG_CHANNEL_ORDER_RGBA = 8,
+   BRIG_CHANNEL_ORDER_BGRA = 9,
+   BRIG_CHANNEL_ORDER_ARGB = 10,
+   BRIG_CHANNEL_ORDER_ABGR = 11,
+   BRIG_CHANNEL_ORDER_SRGB = 12,
+   BRIG_CHANNEL_ORDER_SRGBX = 13,
+   BRIG_CHANNEL_ORDER_SRGBA = 14,
+   BRIG_CHANNEL_ORDER_SBGRA = 15,
+   BRIG_CHANNEL_ORDER_INTENSITY = 16,
+   BRIG_CHANNEL_ORDER_LUMINANCE = 17,
+   BRIG_CHANNEL_ORDER_DEPTH = 18,
+   BRIG_CHANNEL_ORDER_DEPTH_STENCIL = 19,
+   BRIG_CHANNEL_ORDER_FIRST_USER_DEFINED = 128
+ };
+ 
+ typedef uint8_t BrigImageChannelType8_t;
+ 
+ enum BrigImageChannelType
+ {
+   BRIG_CHANNEL_TYPE_SNORM_INT8 = 0,
+   BRIG_CHANNEL_TYPE_SNORM_INT16 = 1,
+   BRIG_CHANNEL_TYPE_UNORM_INT8 = 2,
+   BRIG_CHANNEL_TYPE_UNORM_INT16 = 3,
+   BRIG_CHANNEL_TYPE_UNORM_INT24 = 4,
+   BRIG_CHANNEL_TYPE_UNORM_SHORT_555 = 5,
+   BRIG_CHANNEL_TYPE_UNORM_SHORT_565 = 6,
+   BRIG_CHANNEL_TYPE_UNORM_INT_101010 = 7,
+   BRIG_CHANNEL_TYPE_SIGNED_INT8 = 8,
+   BRIG_CHANNEL_TYPE_SIGNED_INT16 = 9,
+   BRIG_CHANNEL_TYPE_SIGNED_INT32 = 10,
+   BRIG_CHANNEL_TYPE_UNSIGNED_INT8 = 11,
+   BRIG_CHANNEL_TYPE_UNSIGNED_INT16 = 12,
+   BRIG_CHANNEL_TYPE_UNSIGNED_INT32 = 13,
+   BRIG_CHANNEL_TYPE_HALF_FLOAT = 14,
+   BRIG_CHANNEL_TYPE_FLOAT = 15,
+   BRIG_CHANNEL_TYPE_FIRST_USER_DEFINED = 128
+ };
+ 
+ typedef uint8_t BrigImageGeometry8_t;
+ 
+ enum BrigImageGeometry
+ {
+   BRIG_GEOMETRY_1D = 0,
+   BRIG_GEOMETRY_2D = 1,
+   BRIG_GEOMETRY_3D = 2,
+   BRIG_GEOMETRY_1DA = 3,
+   BRIG_GEOMETRY_2DA = 4,
+   BRIG_GEOMETRY_1DB = 5,
+   BRIG_GEOMETRY_2DDEPTH = 6,
+   BRIG_GEOMETRY_2DADEPTH = 7,
+   BRIG_GEOMETRY_FIRST_USER_DEFINED = 128
+ };
+ 
+ typedef uint8_t BrigImageQuery8_t;
+ 
+ enum BrigImageQuery
+ {
+   BRIG_IMAGE_QUERY_WIDTH = 0,
+   BRIG_IMAGE_QUERY_HEIGHT = 1,
+   BRIG_IMAGE_QUERY_DEPTH = 2,
+   BRIG_IMAGE_QUERY_ARRAY = 3,
+   BRIG_IMAGE_QUERY_CHANNELORDER = 4,
+   BRIG_IMAGE_QUERY_CHANNELTYPE = 5
+ };
+ 
+ enum BrigKind
+ {
+   BRIG_KIND_NONE = 0x0000,
+   BRIG_KIND_DIRECTIVE_BEGIN = 0x1000,
+   BRIG_KIND_DIRECTIVE_ARG_BLOCK_END = 0x1000,
+   BRIG_KIND_DIRECTIVE_ARG_BLOCK_START = 0x1001,
+   BRIG_KIND_DIRECTIVE_COMMENT = 0x1002,
+   BRIG_KIND_DIRECTIVE_CONTROL = 0x1003,
+   BRIG_KIND_DIRECTIVE_EXTENSION = 0x1004,
+   BRIG_KIND_DIRECTIVE_FBARRIER = 0x1005,
+   BRIG_KIND_DIRECTIVE_FUNCTION = 0x1006,
+   BRIG_KIND_DIRECTIVE_INDIRECT_FUNCTION = 0x1007,
+   BRIG_KIND_DIRECTIVE_KERNEL = 0x1008,
+   BRIG_KIND_DIRECTIVE_LABEL = 0x1009,
+   BRIG_KIND_DIRECTIVE_LOC = 0x100a,
+   BRIG_KIND_DIRECTIVE_MODULE = 0x100b,
+   BRIG_KIND_DIRECTIVE_PRAGMA = 0x100c,
+   BRIG_KIND_DIRECTIVE_SIGNATURE = 0x100d,
+   BRIG_KIND_DIRECTIVE_VARIABLE = 0x100e,
+   BRIG_KIND_DIRECTIVE_END = 0x100f,
+   BRIG_KIND_INST_BEGIN = 0x2000,
+   BRIG_KIND_INST_ADDR = 0x2000,
+   BRIG_KIND_INST_ATOMIC = 0x2001,
+   BRIG_KIND_INST_BASIC = 0x2002,
+   BRIG_KIND_INST_BR = 0x2003,
+   BRIG_KIND_INST_CMP = 0x2004,
+   BRIG_KIND_INST_CVT = 0x2005,
+   BRIG_KIND_INST_IMAGE = 0x2006,
+   BRIG_KIND_INST_LANE = 0x2007,
+   BRIG_KIND_INST_MEM = 0x2008,
+   BRIG_KIND_INST_MEM_FENCE = 0x2009,
+   BRIG_KIND_INST_MOD = 0x200a,
+   BRIG_KIND_INST_QUERY_IMAGE = 0x200b,
+   BRIG_KIND_INST_QUERY_SAMPLER = 0x200c,
+   BRIG_KIND_INST_QUEUE = 0x200d,
+   BRIG_KIND_INST_SEG = 0x200e,
+   BRIG_KIND_INST_SEG_CVT = 0x200f,
+   BRIG_KIND_INST_SIGNAL = 0x2010,
+   BRIG_KIND_INST_SOURCE_TYPE = 0x2011,
+   BRIG_KIND_INST_END = 0x2012,
+   BRIG_KIND_OPERAND_BEGIN = 0x3000,
+   BRIG_KIND_OPERAND_ADDRESS = 0x3000,
+   BRIG_KIND_OPERAND_ALIGN = 0x3001,
+   BRIG_KIND_OPERAND_CODE_LIST = 0x3002,
+   BRIG_KIND_OPERAND_CODE_REF = 0x3003,
+   BRIG_KIND_OPERAND_CONSTANT_BYTES = 0x3004,
+   BRIG_KIND_OPERAND_RESERVED = 0x3005,
+   BRIG_KIND_OPERAND_CONSTANT_IMAGE = 0x3006,
+   BRIG_KIND_OPERAND_CONSTANT_OPERAND_LIST = 0x3007,
+   BRIG_KIND_OPERAND_CONSTANT_SAMPLER = 0x3008,
+   BRIG_KIND_OPERAND_OPERAND_LIST = 0x3009,
+   BRIG_KIND_OPERAND_REGISTER = 0x300a,
+   BRIG_KIND_OPERAND_STRING = 0x300b,
+   BRIG_KIND_OPERAND_WAVESIZE = 0x300c,
+   BRIG_KIND_OPERAND_END = 0x300d
+ };
+ 
+ typedef uint8_t BrigLinkage8_t;
+ 
+ enum BrigLinkage
+ {
+   BRIG_LINKAGE_NONE = 0,
+   BRIG_LINKAGE_PROGRAM = 1,
+   BRIG_LINKAGE_MODULE = 2,
+   BRIG_LINKAGE_FUNCTION = 3,
+   BRIG_LINKAGE_ARG = 4
+ };
+ 
+ typedef uint8_t BrigMachineModel8_t;
+ 
+ enum BrigMachineModel
+ {
+   BRIG_MACHINE_SMALL = 0,
+   BRIG_MACHINE_LARGE = 1
+ };
+ 
+ typedef uint8_t BrigMemoryModifier8_t;
+ 
+ enum BrigMemoryModifierMask
+ {
+   BRIG_MEMORY_CONST = 1
+ };
+ 
+ typedef uint8_t BrigMemoryOrder8_t;
+ 
+ enum BrigMemoryOrder
+ {
+   BRIG_MEMORY_ORDER_NONE = 0,
+   BRIG_MEMORY_ORDER_RELAXED = 1,
+   BRIG_MEMORY_ORDER_SC_ACQUIRE = 2,
+   BRIG_MEMORY_ORDER_SC_RELEASE = 3,
+   BRIG_MEMORY_ORDER_SC_ACQUIRE_RELEASE = 4
+ };
+ 
+ typedef uint8_t BrigMemoryScope8_t;
+ 
+ enum BrigMemoryScope
+ {
+   BRIG_MEMORY_SCOPE_NONE = 0,
+   BRIG_MEMORY_SCOPE_WORKITEM = 1,
+   BRIG_MEMORY_SCOPE_WAVEFRONT = 2,
+   BRIG_MEMORY_SCOPE_WORKGROUP = 3,
+   BRIG_MEMORY_SCOPE_AGENT = 4,
+   BRIG_MEMORY_SCOPE_SYSTEM = 5
+ };
+ 
+ struct BrigModuleHeader
+ {
+   char identification[8];
+   BrigVersion32_t brigMajor;
+   BrigVersion32_t brigMinor;
+   uint64_t byteCount;
+   uint8_t hash[64];
+   uint32_t reserved;
+   uint32_t sectionCount;
+   uint64_t sectionIndex;
+ };
+ 
+ typedef uint16_t BrigOpcode16_t;
+ 
+ enum BrigOpcode
+ {
+   BRIG_OPCODE_NOP = 0,
+   BRIG_OPCODE_ABS = 1,
+   BRIG_OPCODE_ADD = 2,
+   BRIG_OPCODE_BORROW = 3,
+   BRIG_OPCODE_CARRY = 4,
+   BRIG_OPCODE_CEIL = 5,
+   BRIG_OPCODE_COPYSIGN = 6,
+   BRIG_OPCODE_DIV = 7,
+   BRIG_OPCODE_FLOOR = 8,
+   BRIG_OPCODE_FMA = 9,
+   BRIG_OPCODE_FRACT = 10,
+   BRIG_OPCODE_MAD = 11,
+   BRIG_OPCODE_MAX = 12,
+   BRIG_OPCODE_MIN = 13,
+   BRIG_OPCODE_MUL = 14,
+   BRIG_OPCODE_MULHI = 15,
+   BRIG_OPCODE_NEG = 16,
+   BRIG_OPCODE_REM = 17,
+   BRIG_OPCODE_RINT = 18,
+   BRIG_OPCODE_SQRT = 19,
+   BRIG_OPCODE_SUB = 20,
+   BRIG_OPCODE_TRUNC = 21,
+   BRIG_OPCODE_MAD24 = 22,
+   BRIG_OPCODE_MAD24HI = 23,
+   BRIG_OPCODE_MUL24 = 24,
+   BRIG_OPCODE_MUL24HI = 25,
+   BRIG_OPCODE_SHL = 26,
+   BRIG_OPCODE_SHR = 27,
+   BRIG_OPCODE_AND = 28,
+   BRIG_OPCODE_NOT = 29,
+   BRIG_OPCODE_OR = 30,
+   BRIG_OPCODE_POPCOUNT = 31,
+   BRIG_OPCODE_XOR = 32,
+   BRIG_OPCODE_BITEXTRACT = 33,
+   BRIG_OPCODE_BITINSERT = 34,
+   BRIG_OPCODE_BITMASK = 35,
+   BRIG_OPCODE_BITREV = 36,
+   BRIG_OPCODE_BITSELECT = 37,
+   BRIG_OPCODE_FIRSTBIT = 38,
+   BRIG_OPCODE_LASTBIT = 39,
+   BRIG_OPCODE_COMBINE = 40,
+   BRIG_OPCODE_EXPAND = 41,
+   BRIG_OPCODE_LDA = 42,
+   BRIG_OPCODE_MOV = 43,
+   BRIG_OPCODE_SHUFFLE = 44,
+   BRIG_OPCODE_UNPACKHI = 45,
+   BRIG_OPCODE_UNPACKLO = 46,
+   BRIG_OPCODE_PACK = 47,
+   BRIG_OPCODE_UNPACK = 48,
+   BRIG_OPCODE_CMOV = 49,
+   BRIG_OPCODE_CLASS = 50,
+   BRIG_OPCODE_NCOS = 51,
+   BRIG_OPCODE_NEXP2 = 52,
+   BRIG_OPCODE_NFMA = 53,
+   BRIG_OPCODE_NLOG2 = 54,
+   BRIG_OPCODE_NRCP = 55,
+   BRIG_OPCODE_NRSQRT = 56,
+   BRIG_OPCODE_NSIN = 57,
+   BRIG_OPCODE_NSQRT = 58,
+   BRIG_OPCODE_BITALIGN = 59,
+   BRIG_OPCODE_BYTEALIGN = 60,
+   BRIG_OPCODE_PACKCVT = 61,
+   BRIG_OPCODE_UNPACKCVT = 62,
+   BRIG_OPCODE_LERP = 63,
+   BRIG_OPCODE_SAD = 64,
+   BRIG_OPCODE_SADHI = 65,
+   BRIG_OPCODE_SEGMENTP = 66,
+   BRIG_OPCODE_FTOS = 67,
+   BRIG_OPCODE_STOF = 68,
+   BRIG_OPCODE_CMP = 69,
+   BRIG_OPCODE_CVT = 70,
+   BRIG_OPCODE_LD = 71,
+   BRIG_OPCODE_ST = 72,
+   BRIG_OPCODE_ATOMIC = 73,
+   BRIG_OPCODE_ATOMICNORET = 74,
+   BRIG_OPCODE_SIGNAL = 75,
+   BRIG_OPCODE_SIGNALNORET = 76,
+   BRIG_OPCODE_MEMFENCE = 77,
+   BRIG_OPCODE_RDIMAGE = 78,
+   BRIG_OPCODE_LDIMAGE = 79,
+   BRIG_OPCODE_STIMAGE = 80,
+   BRIG_OPCODE_IMAGEFENCE = 81,
+   BRIG_OPCODE_QUERYIMAGE = 82,
+   BRIG_OPCODE_QUERYSAMPLER = 83,
+   BRIG_OPCODE_CBR = 84,
+   BRIG_OPCODE_BR = 85,
+   BRIG_OPCODE_SBR = 86,
+   BRIG_OPCODE_BARRIER = 87,
+   BRIG_OPCODE_WAVEBARRIER = 88,
+   BRIG_OPCODE_ARRIVEFBAR = 89,
+   BRIG_OPCODE_INITFBAR = 90,
+   BRIG_OPCODE_JOINFBAR = 91,
+   BRIG_OPCODE_LEAVEFBAR = 92,
+   BRIG_OPCODE_RELEASEFBAR = 93,
+   BRIG_OPCODE_WAITFBAR = 94,
+   BRIG_OPCODE_LDF = 95,
+   BRIG_OPCODE_ACTIVELANECOUNT = 96,
+   BRIG_OPCODE_ACTIVELANEID = 97,
+   BRIG_OPCODE_ACTIVELANEMASK = 98,
+   BRIG_OPCODE_ACTIVELANEPERMUTE = 99,
+   BRIG_OPCODE_CALL = 100,
+   BRIG_OPCODE_SCALL = 101,
+   BRIG_OPCODE_ICALL = 102,
+   BRIG_OPCODE_RET = 103,
+   BRIG_OPCODE_ALLOCA = 104,
+   BRIG_OPCODE_CURRENTWORKGROUPSIZE = 105,
+   BRIG_OPCODE_CURRENTWORKITEMFLATID = 106,
+   BRIG_OPCODE_DIM = 107,
+   BRIG_OPCODE_GRIDGROUPS = 108,
+   BRIG_OPCODE_GRIDSIZE = 109,
+   BRIG_OPCODE_PACKETCOMPLETIONSIG = 110,
+   BRIG_OPCODE_PACKETID = 111,
+   BRIG_OPCODE_WORKGROUPID = 112,
+   BRIG_OPCODE_WORKGROUPSIZE = 113,
+   BRIG_OPCODE_WORKITEMABSID = 114,
+   BRIG_OPCODE_WORKITEMFLATABSID = 115,
+   BRIG_OPCODE_WORKITEMFLATID = 116,
+   BRIG_OPCODE_WORKITEMID = 117,
+   BRIG_OPCODE_CLEARDETECTEXCEPT = 118,
+   BRIG_OPCODE_GETDETECTEXCEPT = 119,
+   BRIG_OPCODE_SETDETECTEXCEPT = 120,
+   BRIG_OPCODE_ADDQUEUEWRITEINDEX = 121,
+   BRIG_OPCODE_CASQUEUEWRITEINDEX = 122,
+   BRIG_OPCODE_LDQUEUEREADINDEX = 123,
+   BRIG_OPCODE_LDQUEUEWRITEINDEX = 124,
+   BRIG_OPCODE_STQUEUEREADINDEX = 125,
+   BRIG_OPCODE_STQUEUEWRITEINDEX = 126,
+   BRIG_OPCODE_CLOCK = 127,
+   BRIG_OPCODE_CUID = 128,
+   BRIG_OPCODE_DEBUGTRAP = 129,
+   BRIG_OPCODE_GROUPBASEPTR = 130,
+   BRIG_OPCODE_KERNARGBASEPTR = 131,
+   BRIG_OPCODE_LANEID = 132,
+   BRIG_OPCODE_MAXCUID = 133,
+   BRIG_OPCODE_MAXWAVEID = 134,
+   BRIG_OPCODE_NULLPTR = 135,
+   BRIG_OPCODE_WAVEID = 136,
+   BRIG_OPCODE_FIRST_USER_DEFINED = 32768
+ };
+ 
+ typedef uint8_t BrigPack8_t;
+ 
+ enum BrigPack
+ {
+   BRIG_PACK_NONE = 0,
+   BRIG_PACK_PP = 1,
+   BRIG_PACK_PS = 2,
+   BRIG_PACK_SP = 3,
+   BRIG_PACK_SS = 4,
+   BRIG_PACK_S = 5,
+   BRIG_PACK_P = 6,
+   BRIG_PACK_PPSAT = 7,
+   BRIG_PACK_PSSAT = 8,
+   BRIG_PACK_SPSAT = 9,
+   BRIG_PACK_SSSAT = 10,
+   BRIG_PACK_SSAT = 11,
+   BRIG_PACK_PSAT = 12
+ };
+ 
+ typedef uint8_t BrigProfile8_t;
+ 
+ enum BrigProfile
+ {
+   BRIG_PROFILE_BASE = 0,
+   BRIG_PROFILE_FULL = 1
+ };
+ 
+ typedef uint16_t BrigRegisterKind16_t;
+ 
+ enum BrigRegisterKind
+ {
+   BRIG_REGISTER_KIND_CONTROL = 0,
+   BRIG_REGISTER_KIND_SINGLE = 1,
+   BRIG_REGISTER_KIND_DOUBLE = 2,
+   BRIG_REGISTER_KIND_QUAD = 3
+ };
+ 
+ typedef uint8_t BrigRound8_t;
+ 
+ enum BrigRound
+ {
+   BRIG_ROUND_NONE = 0,
+   BRIG_ROUND_FLOAT_DEFAULT = 1,
+   BRIG_ROUND_FLOAT_NEAR_EVEN = 2,
+   BRIG_ROUND_FLOAT_ZERO = 3,
+   BRIG_ROUND_FLOAT_PLUS_INFINITY = 4,
+   BRIG_ROUND_FLOAT_MINUS_INFINITY = 5,
+   BRIG_ROUND_INTEGER_NEAR_EVEN = 6,
+   BRIG_ROUND_INTEGER_ZERO = 7,
+   BRIG_ROUND_INTEGER_PLUS_INFINITY = 8,
+   BRIG_ROUND_INTEGER_MINUS_INFINITY = 9,
+   BRIG_ROUND_INTEGER_NEAR_EVEN_SAT = 10,
+   BRIG_ROUND_INTEGER_ZERO_SAT = 11,
+   BRIG_ROUND_INTEGER_PLUS_INFINITY_SAT = 12,
+   BRIG_ROUND_INTEGER_MINUS_INFINITY_SAT = 13,
+   BRIG_ROUND_INTEGER_SIGNALING_NEAR_EVEN = 14,
+   BRIG_ROUND_INTEGER_SIGNALING_ZERO = 15,
+   BRIG_ROUND_INTEGER_SIGNALING_PLUS_INFINITY = 16,
+   BRIG_ROUND_INTEGER_SIGNALING_MINUS_INFINITY = 17,
+   BRIG_ROUND_INTEGER_SIGNALING_NEAR_EVEN_SAT = 18,
+   BRIG_ROUND_INTEGER_SIGNALING_ZERO_SAT = 19,
+   BRIG_ROUND_INTEGER_SIGNALING_PLUS_INFINITY_SAT = 20,
+   BRIG_ROUND_INTEGER_SIGNALING_MINUS_INFINITY_SAT = 21
+ };
+ 
+ typedef uint8_t BrigSamplerAddressing8_t;
+ 
+ enum BrigSamplerAddressing
+ {
+   BRIG_ADDRESSING_UNDEFINED = 0,
+   BRIG_ADDRESSING_CLAMP_TO_EDGE = 1,
+   BRIG_ADDRESSING_CLAMP_TO_BORDER = 2,
+   BRIG_ADDRESSING_REPEAT = 3,
+   BRIG_ADDRESSING_MIRRORED_REPEAT = 4,
+   BRIG_ADDRESSING_FIRST_USER_DEFINED = 128
+ };
+ 
+ typedef uint8_t BrigSamplerCoordNormalization8_t;
+ 
+ enum BrigSamplerCoordNormalization
+ {
+   BRIG_COORD_UNNORMALIZED = 0,
+   BRIG_COORD_NORMALIZED = 1
+ };
+ 
+ typedef uint8_t BrigSamplerFilter8_t;
+ 
+ enum BrigSamplerFilter
+ {
+   BRIG_FILTER_NEAREST = 0,
+   BRIG_FILTER_LINEAR = 1,
+   BRIG_FILTER_FIRST_USER_DEFINED = 128
+ };
+ 
+ typedef uint8_t BrigSamplerQuery8_t;
+ 
+ enum BrigSamplerQuery
+ {
+   BRIG_SAMPLER_QUERY_ADDRESSING = 0,
+   BRIG_SAMPLER_QUERY_COORD = 1,
+   BRIG_SAMPLER_QUERY_FILTER = 2
+ };
+ 
+ typedef uint32_t BrigSectionIndex32_t;
+ 
+ enum BrigSectionIndex
+ {
+   BRIG_SECTION_INDEX_DATA = 0,
+   BRIG_SECTION_INDEX_CODE = 1,
+   BRIG_SECTION_INDEX_OPERAND = 2,
+   BRIG_SECTION_INDEX_BEGIN_IMPLEMENTATION_DEFINED = 3
+ };
+ 
+ struct BrigSectionHeader
+ {
+   uint64_t byteCount;
+   uint32_t headerByteCount;
+   uint32_t nameLength;
+   uint8_t name[1];
+ };
+ 
+ typedef uint8_t BrigSegCvtModifier8_t;
+ 
+ enum BrigSegCvtModifierMask
+ {
+   BRIG_SEG_CVT_NONULL = 1
+ };
+ 
+ typedef uint8_t BrigSegment8_t;
+ 
+ enum BrigSegment
+ {
+   BRIG_SEGMENT_NONE = 0,
+   BRIG_SEGMENT_FLAT = 1,
+   BRIG_SEGMENT_GLOBAL = 2,
+   BRIG_SEGMENT_READONLY = 3,
+   BRIG_SEGMENT_KERNARG = 4,
+   BRIG_SEGMENT_GROUP = 5,
+   BRIG_SEGMENT_PRIVATE = 6,
+   BRIG_SEGMENT_SPILL = 7,
+   BRIG_SEGMENT_ARG = 8,
+   BRIG_SEGMENT_FIRST_USER_DEFINED = 128
+ };
+ 
+ enum
+ {
+   BRIG_TYPE_BASE_SIZE = 5,
+   BRIG_TYPE_PACK_SIZE = 2,
+   BRIG_TYPE_ARRAY_SIZE = 1,
+ 
+   BRIG_TYPE_BASE_SHIFT = 0,
+   BRIG_TYPE_PACK_SHIFT = BRIG_TYPE_BASE_SHIFT + BRIG_TYPE_BASE_SIZE,
+   BRIG_TYPE_ARRAY_SHIFT = BRIG_TYPE_PACK_SHIFT + BRIG_TYPE_PACK_SIZE,
+ 
+   BRIG_TYPE_BASE_MASK = ((1 << BRIG_TYPE_BASE_SIZE) - 1)
+ 			<< BRIG_TYPE_BASE_SHIFT,
+   BRIG_TYPE_PACK_MASK = ((1 << BRIG_TYPE_PACK_SIZE) - 1)
+ 			<< BRIG_TYPE_PACK_SHIFT,
+   BRIG_TYPE_ARRAY_MASK = ((1 << BRIG_TYPE_ARRAY_SIZE) - 1)
+ 			 << BRIG_TYPE_ARRAY_SHIFT,
+ 
+   BRIG_TYPE_PACK_NONE = 0 << BRIG_TYPE_PACK_SHIFT,
+   BRIG_TYPE_PACK_32 = 1 << BRIG_TYPE_PACK_SHIFT,
+   BRIG_TYPE_PACK_64 = 2 << BRIG_TYPE_PACK_SHIFT,
+   BRIG_TYPE_PACK_128 = 3 << BRIG_TYPE_PACK_SHIFT,
+ 
+   BRIG_TYPE_ARRAY = 1 << BRIG_TYPE_ARRAY_SHIFT
+ };
+ 
+ typedef uint16_t BrigType16_t;
+ 
+ enum BrigType
+ {
+   BRIG_TYPE_NONE = 0,
+ 
+   BRIG_TYPE_U8 = 1,
+   BRIG_TYPE_U16 = 2,
+   BRIG_TYPE_U32 = 3,
+   BRIG_TYPE_U64 = 4,
+ 
+   BRIG_TYPE_S8 = 5,
+   BRIG_TYPE_S16 = 6,
+   BRIG_TYPE_S32 = 7,
+   BRIG_TYPE_S64 = 8,
+ 
+   BRIG_TYPE_F16 = 9,
+   BRIG_TYPE_F32 = 10,
+   BRIG_TYPE_F64 = 11,
+ 
+   BRIG_TYPE_B1 = 12,
+   BRIG_TYPE_B8 = 13,
+   BRIG_TYPE_B16 = 14,
+   BRIG_TYPE_B32 = 15,
+   BRIG_TYPE_B64 = 16,
+   BRIG_TYPE_B128 = 17,
+ 
+   BRIG_TYPE_SAMP = 18,
+   BRIG_TYPE_ROIMG = 19,
+   BRIG_TYPE_WOIMG = 20,
+   BRIG_TYPE_RWIMG = 21,
+ 
+   BRIG_TYPE_SIG32 = 22,
+   BRIG_TYPE_SIG64 = 23,
+ 
+   BRIG_TYPE_U8X4 = BRIG_TYPE_U8 | BRIG_TYPE_PACK_32,
+   BRIG_TYPE_U8X8 = BRIG_TYPE_U8 | BRIG_TYPE_PACK_64,
+   BRIG_TYPE_U8X16 = BRIG_TYPE_U8 | BRIG_TYPE_PACK_128,
+ 
+   BRIG_TYPE_U16X2 = BRIG_TYPE_U16 | BRIG_TYPE_PACK_32,
+   BRIG_TYPE_U16X4 = BRIG_TYPE_U16 | BRIG_TYPE_PACK_64,
+   BRIG_TYPE_U16X8 = BRIG_TYPE_U16 | BRIG_TYPE_PACK_128,
+ 
+   BRIG_TYPE_U32X2 = BRIG_TYPE_U32 | BRIG_TYPE_PACK_64,
+   BRIG_TYPE_U32X4 = BRIG_TYPE_U32 | BRIG_TYPE_PACK_128,
+ 
+   BRIG_TYPE_U64X2 = BRIG_TYPE_U64 | BRIG_TYPE_PACK_128,
+ 
+   BRIG_TYPE_S8X4 = BRIG_TYPE_S8 | BRIG_TYPE_PACK_32,
+   BRIG_TYPE_S8X8 = BRIG_TYPE_S8 | BRIG_TYPE_PACK_64,
+   BRIG_TYPE_S8X16 = BRIG_TYPE_S8 | BRIG_TYPE_PACK_128,
+ 
+   BRIG_TYPE_S16X2 = BRIG_TYPE_S16 | BRIG_TYPE_PACK_32,
+   BRIG_TYPE_S16X4 = BRIG_TYPE_S16 | BRIG_TYPE_PACK_64,
+   BRIG_TYPE_S16X8 = BRIG_TYPE_S16 | BRIG_TYPE_PACK_128,
+ 
+   BRIG_TYPE_S32X2 = BRIG_TYPE_S32 | BRIG_TYPE_PACK_64,
+   BRIG_TYPE_S32X4 = BRIG_TYPE_S32 | BRIG_TYPE_PACK_128,
+ 
+   BRIG_TYPE_S64X2 = BRIG_TYPE_S64 | BRIG_TYPE_PACK_128,
+ 
+   BRIG_TYPE_F16X2 = BRIG_TYPE_F16 | BRIG_TYPE_PACK_32,
+   BRIG_TYPE_F16X4 = BRIG_TYPE_F16 | BRIG_TYPE_PACK_64,
+   BRIG_TYPE_F16X8 = BRIG_TYPE_F16 | BRIG_TYPE_PACK_128,
+ 
+   BRIG_TYPE_F32X2 = BRIG_TYPE_F32 | BRIG_TYPE_PACK_64,
+   BRIG_TYPE_F32X4 = BRIG_TYPE_F32 | BRIG_TYPE_PACK_128,
+ 
+   BRIG_TYPE_F64X2 = BRIG_TYPE_F64 | BRIG_TYPE_PACK_128,
+ 
+   BRIG_TYPE_U8_ARRAY = BRIG_TYPE_U8 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_U16_ARRAY = BRIG_TYPE_U16 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_U32_ARRAY = BRIG_TYPE_U32 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_U64_ARRAY = BRIG_TYPE_U64 | BRIG_TYPE_ARRAY,
+ 
+   BRIG_TYPE_S8_ARRAY = BRIG_TYPE_S8 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_S16_ARRAY = BRIG_TYPE_S16 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_S32_ARRAY = BRIG_TYPE_S32 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_S64_ARRAY = BRIG_TYPE_S64 | BRIG_TYPE_ARRAY,
+ 
+   BRIG_TYPE_F16_ARRAY = BRIG_TYPE_F16 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_F32_ARRAY = BRIG_TYPE_F32 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_F64_ARRAY = BRIG_TYPE_F64 | BRIG_TYPE_ARRAY,
+ 
+   BRIG_TYPE_B8_ARRAY = BRIG_TYPE_B8 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_B16_ARRAY = BRIG_TYPE_B16 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_B32_ARRAY = BRIG_TYPE_B32 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_B64_ARRAY = BRIG_TYPE_B64 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_B128_ARRAY = BRIG_TYPE_B128 | BRIG_TYPE_ARRAY,
+ 
+   BRIG_TYPE_SAMP_ARRAY = BRIG_TYPE_SAMP | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_ROIMG_ARRAY = BRIG_TYPE_ROIMG | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_WOIMG_ARRAY = BRIG_TYPE_WOIMG | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_RWIMG_ARRAY = BRIG_TYPE_RWIMG | BRIG_TYPE_ARRAY,
+ 
+   BRIG_TYPE_SIG32_ARRAY = BRIG_TYPE_SIG32 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_SIG64_ARRAY = BRIG_TYPE_SIG64 | BRIG_TYPE_ARRAY,
+ 
+   BRIG_TYPE_U8X4_ARRAY = BRIG_TYPE_U8X4 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_U8X8_ARRAY = BRIG_TYPE_U8X8 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_U8X16_ARRAY = BRIG_TYPE_U8X16 | BRIG_TYPE_ARRAY,
+ 
+   BRIG_TYPE_U16X2_ARRAY = BRIG_TYPE_U16X2 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_U16X4_ARRAY = BRIG_TYPE_U16X4 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_U16X8_ARRAY = BRIG_TYPE_U16X8 | BRIG_TYPE_ARRAY,
+ 
+   BRIG_TYPE_U32X2_ARRAY = BRIG_TYPE_U32X2 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_U32X4_ARRAY = BRIG_TYPE_U32X4 | BRIG_TYPE_ARRAY,
+ 
+   BRIG_TYPE_U64X2_ARRAY = BRIG_TYPE_U64X2 | BRIG_TYPE_ARRAY,
+ 
+   BRIG_TYPE_S8X4_ARRAY = BRIG_TYPE_S8X4 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_S8X8_ARRAY = BRIG_TYPE_S8X8 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_S8X16_ARRAY = BRIG_TYPE_S8X16 | BRIG_TYPE_ARRAY,
+ 
+   BRIG_TYPE_S16X2_ARRAY = BRIG_TYPE_S16X2 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_S16X4_ARRAY = BRIG_TYPE_S16X4 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_S16X8_ARRAY = BRIG_TYPE_S16X8 | BRIG_TYPE_ARRAY,
+ 
+   BRIG_TYPE_S32X2_ARRAY = BRIG_TYPE_S32X2 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_S32X4_ARRAY = BRIG_TYPE_S32X4 | BRIG_TYPE_ARRAY,
+ 
+   BRIG_TYPE_S64X2_ARRAY = BRIG_TYPE_S64X2 | BRIG_TYPE_ARRAY,
+ 
+   BRIG_TYPE_F16X2_ARRAY = BRIG_TYPE_F16X2 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_F16X4_ARRAY = BRIG_TYPE_F16X4 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_F16X8_ARRAY = BRIG_TYPE_F16X8 | BRIG_TYPE_ARRAY,
+ 
+   BRIG_TYPE_F32X2_ARRAY = BRIG_TYPE_F32X2 | BRIG_TYPE_ARRAY,
+   BRIG_TYPE_F32X4_ARRAY = BRIG_TYPE_F32X4 | BRIG_TYPE_ARRAY,
+ 
+   BRIG_TYPE_F64X2_ARRAY = BRIG_TYPE_F64X2 | BRIG_TYPE_ARRAY
+ };
+ 
+ struct BrigUInt64
+ {
+   uint32_t lo;
+   uint32_t hi;
+ };
+ 
+ typedef uint8_t BrigVariableModifier8_t;
+ 
+ enum BrigVariableModifierMask
+ {
+   BRIG_VARIABLE_DEFINITION = 1,
+   BRIG_VARIABLE_CONST = 2
+ };
+ 
+ enum BrigVersion
+ {
+   BRIG_VERSION_HSAIL_MAJOR = 1,
+   BRIG_VERSION_HSAIL_MINOR = 0,
+   BRIG_VERSION_BRIG_MAJOR = 1,
+   BRIG_VERSION_BRIG_MINOR = 0
+ };
+ 
+ typedef uint8_t BrigWidth8_t;
+ 
+ enum BrigWidth
+ {
+   BRIG_WIDTH_NONE = 0,
+   BRIG_WIDTH_1 = 1,
+   BRIG_WIDTH_2 = 2,
+   BRIG_WIDTH_4 = 3,
+   BRIG_WIDTH_8 = 4,
+   BRIG_WIDTH_16 = 5,
+   BRIG_WIDTH_32 = 6,
+   BRIG_WIDTH_64 = 7,
+   BRIG_WIDTH_128 = 8,
+   BRIG_WIDTH_256 = 9,
+   BRIG_WIDTH_512 = 10,
+   BRIG_WIDTH_1024 = 11,
+   BRIG_WIDTH_2048 = 12,
+   BRIG_WIDTH_4096 = 13,
+   BRIG_WIDTH_8192 = 14,
+   BRIG_WIDTH_16384 = 15,
+   BRIG_WIDTH_32768 = 16,
+   BRIG_WIDTH_65536 = 17,
+   BRIG_WIDTH_131072 = 18,
+   BRIG_WIDTH_262144 = 19,
+   BRIG_WIDTH_524288 = 20,
+   BRIG_WIDTH_1048576 = 21,
+   BRIG_WIDTH_2097152 = 22,
+   BRIG_WIDTH_4194304 = 23,
+   BRIG_WIDTH_8388608 = 24,
+   BRIG_WIDTH_16777216 = 25,
+   BRIG_WIDTH_33554432 = 26,
+   BRIG_WIDTH_67108864 = 27,
+   BRIG_WIDTH_134217728 = 28,
+   BRIG_WIDTH_268435456 = 29,
+   BRIG_WIDTH_536870912 = 30,
+   BRIG_WIDTH_1073741824 = 31,
+   BRIG_WIDTH_2147483648 = 32,
+   BRIG_WIDTH_WAVESIZE = 33,
+   BRIG_WIDTH_ALL = 34
+ };
+ 
+ struct BrigData
+ {
+   uint32_t byteCount;
+   uint8_t bytes[1];
+ };
+ 
+ struct BrigDirectiveArgBlock
+ {
+   BrigBase base;
+ };
+ 
+ struct BrigDirectiveComment
+ {
+   BrigBase base;
+   BrigDataOffsetString32_t name;
+ };
+ 
+ struct BrigDirectiveControl
+ {
+   BrigBase base;
+   BrigControlDirective16_t control;
+   uint16_t reserved;
+   BrigDataOffsetOperandList32_t operands;
+ };
+ 
+ struct BrigDirectiveExecutable
+ {
+   BrigBase base;
+   BrigDataOffsetString32_t name;
+   uint16_t outArgCount;
+   uint16_t inArgCount;
+   BrigCodeOffset32_t firstInArg;
+   BrigCodeOffset32_t firstCodeBlockEntry;
+   BrigCodeOffset32_t nextModuleEntry;
+   BrigExecutableModifier8_t modifier;
+   BrigLinkage8_t linkage;
+   uint16_t reserved;
+ };
+ 
+ struct BrigDirectiveExtension
+ {
+   BrigBase base;
+   BrigDataOffsetString32_t name;
+ };
+ 
+ struct BrigDirectiveFbarrier
+ {
+   BrigBase base;
+   BrigDataOffsetString32_t name;
+   BrigVariableModifier8_t modifier;
+   BrigLinkage8_t linkage;
+   uint16_t reserved;
+ };
+ 
+ struct BrigDirectiveLabel
+ {
+   BrigBase base;
+   BrigDataOffsetString32_t name;
+ };
+ 
+ struct BrigDirectiveLoc
+ {
+   BrigBase base;
+   BrigDataOffsetString32_t filename;
+   uint32_t line;
+   uint32_t column;
+ };
+ 
+ struct BrigDirectiveModule
+ {
+   BrigBase base;
+   BrigDataOffsetString32_t name;
+   BrigVersion32_t hsailMajor;
+   BrigVersion32_t hsailMinor;
+   BrigProfile8_t profile;
+   BrigMachineModel8_t machineModel;
+   BrigRound8_t defaultFloatRound;
+   uint8_t reserved;
+ };
+ 
+ struct BrigDirectiveNone
+ {
+   BrigBase base;
+ };
+ 
+ struct BrigDirectivePragma
+ {
+   BrigBase base;
+   BrigDataOffsetOperandList32_t operands;
+ };
+ 
+ struct BrigDirectiveVariable
+ {
+   BrigBase base;
+   BrigDataOffsetString32_t name;
+   BrigOperandOffset32_t init;
+   BrigType16_t type;
+   BrigSegment8_t segment;
+   BrigAlignment8_t align;
+   BrigUInt64 dim;
+   BrigVariableModifier8_t modifier;
+   BrigLinkage8_t linkage;
+   BrigAllocation8_t allocation;
+   uint8_t reserved;
+ };
+ 
+ struct BrigInstBase
+ {
+   BrigBase base;
+   BrigOpcode16_t opcode;
+   BrigType16_t type;
+   BrigDataOffsetOperandList32_t operands;
+ };
+ 
+ struct BrigInstAddr
+ {
+   BrigInstBase base;
+   BrigSegment8_t segment;
+   uint8_t reserved[3];
+ };
+ 
+ struct BrigInstAtomic
+ {
+   BrigInstBase base;
+   BrigSegment8_t segment;
+   BrigMemoryOrder8_t memoryOrder;
+   BrigMemoryScope8_t memoryScope;
+   BrigAtomicOperation8_t atomicOperation;
+   uint8_t equivClass;
+   uint8_t reserved[3];
+ };
+ 
+ struct BrigInstBasic
+ {
+   BrigInstBase base;
+ };
+ 
+ struct BrigInstBr
+ {
+   BrigInstBase base;
+   BrigWidth8_t width;
+   uint8_t reserved[3];
+ };
+ 
+ struct BrigInstCmp
+ {
+   BrigInstBase base;
+   BrigType16_t sourceType;
+   BrigAluModifier8_t modifier;
+   BrigCompareOperation8_t compare;
+   BrigPack8_t pack;
+   uint8_t reserved[3];
+ };
+ 
+ struct BrigInstCvt
+ {
+   BrigInstBase base;
+   BrigType16_t sourceType;
+   BrigAluModifier8_t modifier;
+   BrigRound8_t round;
+ };
+ 
+ struct BrigInstImage
+ {
+   BrigInstBase base;
+   BrigType16_t imageType;
+   BrigType16_t coordType;
+   BrigImageGeometry8_t geometry;
+   uint8_t equivClass;
+   uint16_t reserved;
+ };
+ 
+ struct BrigInstLane
+ {
+   BrigInstBase base;
+   BrigType16_t sourceType;
+   BrigWidth8_t width;
+   uint8_t reserved;
+ };
+ 
+ struct BrigInstMem
+ {
+   BrigInstBase base;
+   BrigSegment8_t segment;
+   BrigAlignment8_t align;
+   uint8_t equivClass;
+   BrigWidth8_t width;
+   BrigMemoryModifier8_t modifier;
+   uint8_t reserved[3];
+ };
+ 
+ struct BrigInstMemFence
+ {
+   BrigInstBase base;
+   BrigMemoryOrder8_t memoryOrder;
+   BrigMemoryScope8_t globalSegmentMemoryScope;
+   BrigMemoryScope8_t groupSegmentMemoryScope;
+   BrigMemoryScope8_t imageSegmentMemoryScope;
+ };
+ 
+ struct BrigInstMod
+ {
+   BrigInstBase base;
+   BrigAluModifier8_t modifier;
+   BrigRound8_t round;
+   BrigPack8_t pack;
+   uint8_t reserved;
+ };
+ 
+ struct BrigInstQueryImage
+ {
+   BrigInstBase base;
+   BrigType16_t imageType;
+   BrigImageGeometry8_t geometry;
+   BrigImageQuery8_t query;
+ };
+ 
+ struct BrigInstQuerySampler
+ {
+   BrigInstBase base;
+   BrigSamplerQuery8_t query;
+   uint8_t reserved[3];
+ };
+ 
+ struct BrigInstQueue
+ {
+   BrigInstBase base;
+   BrigSegment8_t segment;
+   BrigMemoryOrder8_t memoryOrder;
+   uint16_t reserved;
+ };
+ 
+ struct BrigInstSeg
+ {
+   BrigInstBase base;
+   BrigSegment8_t segment;
+   uint8_t reserved[3];
+ };
+ 
+ struct BrigInstSegCvt
+ {
+   BrigInstBase base;
+   BrigType16_t sourceType;
+   BrigSegment8_t segment;
+   BrigSegCvtModifier8_t modifier;
+ };
+ 
+ struct BrigInstSignal
+ {
+   BrigInstBase base;
+   BrigType16_t signalType;
+   BrigMemoryOrder8_t memoryOrder;
+   BrigAtomicOperation8_t signalOperation;
+ };
+ 
+ struct BrigInstSourceType
+ {
+   BrigInstBase base;
+   BrigType16_t sourceType;
+   uint16_t reserved;
+ };
+ 
+ struct BrigOperandAddress
+ {
+   BrigBase base;
+   BrigCodeOffset32_t symbol;
+   BrigOperandOffset32_t reg;
+   BrigUInt64 offset;
+ };
+ 
+ struct BrigOperandAlign
+ {
+   BrigBase base;
+   BrigAlignment8_t align;
+   uint8_t reserved[3];
+ };
+ 
+ struct BrigOperandCodeList
+ {
+   BrigBase base;
+   BrigDataOffsetCodeList32_t elements;
+ };
+ 
+ struct BrigOperandCodeRef
+ {
+   BrigBase base;
+   BrigCodeOffset32_t ref;
+ };
+ 
+ struct BrigOperandConstantBytes
+ {
+   BrigBase base;
+   BrigType16_t type;
+   uint16_t reserved;
+   BrigDataOffsetString32_t bytes;
+ };
+ 
+ struct BrigOperandConstantImage
+ {
+   BrigBase base;
+   BrigType16_t type;
+   BrigImageGeometry8_t geometry;
+   BrigImageChannelOrder8_t channelOrder;
+   BrigImageChannelType8_t channelType;
+   uint8_t reserved[3];
+   BrigUInt64 width;
+   BrigUInt64 height;
+   BrigUInt64 depth;
+   BrigUInt64 array;
+ };
+ 
+ struct BrigOperandConstantOperandList
+ {
+   BrigBase base;
+   BrigType16_t type;
+   uint16_t reserved;
+   BrigDataOffsetOperandList32_t elements;
+ };
+ 
+ struct BrigOperandConstantSampler
+ {
+   BrigBase base;
+   BrigType16_t type;
+   BrigSamplerCoordNormalization8_t coord;
+   BrigSamplerFilter8_t filter;
+   BrigSamplerAddressing8_t addressing;
+   uint8_t reserved[3];
+ };
+ 
+ struct BrigOperandOperandList
+ {
+   BrigBase base;
+   BrigDataOffsetOperandList32_t elements;
+ };
+ 
+ struct BrigOperandRegister
+ {
+   BrigBase base;
+   BrigRegisterKind16_t regKind;
+   uint16_t regNum;
+ };
+ 
+ struct BrigOperandString
+ {
+   BrigBase base;
+   BrigDataOffsetString32_t string;
+ };
+ 
+ struct BrigOperandWavesize
+ {
+   BrigBase base;
+ };
+ 
+ #endif /* HSA_BRIG_FORMAT_H */
diff -Nrcpad gcc-10.3.0/gcc/brig/brigfrontend/phsa.h gcc-11.1.0/gcc/brig/brigfrontend/phsa.h
*** gcc-10.3.0/gcc/brig/brigfrontend/phsa.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigfrontend/phsa.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* phsa.h -- interfacing between the gcc BRIG FE and the phsa runtime
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* phsa.h -- interfacing between the gcc BRIG FE and the phsa runtime
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/brigspec.c gcc-11.1.0/gcc/brig/brigspec.c
*** gcc-10.3.0/gcc/brig/brigspec.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/brigspec.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* brigspec.c -- Specific flags and argument handling of the gcc BRIG front end.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* brigspec.c -- Specific flags and argument handling of the gcc BRIG front end.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/config-lang.in gcc-11.1.0/gcc/brig/config-lang.in
*** gcc-10.3.0/gcc/brig/config-lang.in	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/config-lang.in	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  # config-lang.in -- Top level configure fragment for gcc BRIG (HSAIL) frontend.
  
! # Copyright (C) 2015-2020 Free Software Foundation, Inc.
  
  # This file is part of GCC.
  
--- 1,6 ----
  # config-lang.in -- Top level configure fragment for gcc BRIG (HSAIL) frontend.
  
! # Copyright (C) 2015-2021 Free Software Foundation, Inc.
  
  # This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/gccbrig.texi gcc-11.1.0/gcc/brig/gccbrig.texi
*** gcc-10.3.0/gcc/brig/gccbrig.texi	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/gccbrig.texi	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  \input texinfo @c -*-texinfo-*-
  @setfilename gccbrig.info
  @settitle The GNU BRIG (HSAIL) Compiler
! @set copyrights-brig 2017-2020
  
  @c Merge the standard indexes into a single one.
  @syncodeindex fn cp
--- 1,7 ----
  \input texinfo @c -*-texinfo-*-
  @setfilename gccbrig.info
  @settitle The GNU BRIG (HSAIL) Compiler
! @set copyrights-brig 2017-2021
  
  @c Merge the standard indexes into a single one.
  @syncodeindex fn cp
diff -Nrcpad gcc-10.3.0/gcc/brig/lang-specs.h gcc-11.1.0/gcc/brig/lang-specs.h
*** gcc-10.3.0/gcc/brig/lang-specs.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/lang-specs.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* lang-specs.h -- gcc driver specs for BRIG (HSAIL) frontend.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
--- 1,5 ----
  /* lang-specs.h -- gcc driver specs for BRIG (HSAIL) frontend.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
  
diff -Nrcpad gcc-10.3.0/gcc/brig/lang.opt gcc-11.1.0/gcc/brig/lang.opt
*** gcc-10.3.0/gcc/brig/lang.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig/lang.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; lang.opt -- Options for the gcc BRIG (HSAIL) front end.
  
! ; Copyright (C) 2015-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; lang.opt -- Options for the gcc BRIG (HSAIL) front end.
  
! ; Copyright (C) 2015-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** BRIG Separate Alias(d)
*** 32,38 ****
  BRIG Joined Alias(d)
  
  fassume-phsa
! BRIG Report Var(flag_assume_phsa) Init(1) Optimization
  Assume we are finalizing for phsa and its libhsail-rt.  Enables additional
  phsa-specific optimizations (default).
  
--- 32,38 ----
  BRIG Joined Alias(d)
  
  fassume-phsa
! BRIG Var(flag_assume_phsa) Init(1) Optimization
  Assume we are finalizing for phsa and its libhsail-rt.  Enables additional
  phsa-specific optimizations (default).
  
diff -Nrcpad gcc-10.3.0/gcc/brig-builtins.def gcc-11.1.0/gcc/brig-builtins.def
*** gcc-10.3.0/gcc/brig-builtins.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/brig-builtins.def	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* This file contains the definitions and documentation for the
     HSAIL builtins used in the GNU compiler.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
--- 1,6 ----
  /* This file contains the definitions and documentation for the
     HSAIL builtins used in the GNU compiler.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
     for General Processor Tech.
diff -Nrcpad gcc-10.3.0/gcc/builtin-attrs.def gcc-11.1.0/gcc/builtin-attrs.def
*** gcc-10.3.0/gcc/builtin-attrs.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/builtin-attrs.def	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2001-2020 Free Software Foundation, Inc.
     Contributed by Joseph Myers <jsm28@cam.ac.uk>.
  
  This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2001-2021 Free Software Foundation, Inc.
     Contributed by Joseph Myers <jsm28@cam.ac.uk>.
  
  This file is part of GCC.
*************** DEF_ATTR_FOR_INT (6)
*** 66,72 ****
    DEF_ATTR_STRING (ATTR_##ENUM, VALUE)			\
    DEF_ATTR_TREE_LIST (ATTR_LIST_##ENUM, ATTR_NULL,	\
  		      ATTR_##ENUM, ATTR_NULL)
! DEF_ATTR_FOR_STRING (STR1, "1")
  #undef DEF_ATTR_FOR_STRING
  
  /* Construct a tree for a list of two integers.  */
--- 66,74 ----
    DEF_ATTR_STRING (ATTR_##ENUM, VALUE)			\
    DEF_ATTR_TREE_LIST (ATTR_LIST_##ENUM, ATTR_NULL,	\
  		      ATTR_##ENUM, ATTR_NULL)
! DEF_ATTR_FOR_STRING (STR1, "1 ")
! DEF_ATTR_FOR_STRING (STRERRNOC, ".C")
! DEF_ATTR_FOR_STRING (STRERRNOP, ".P")
  #undef DEF_ATTR_FOR_STRING
  
  /* Construct a tree for a list of two integers.  */
*************** DEF_ATTR_TREE_LIST (ATTR_CONST_NOTHROW_L
*** 136,141 ****
--- 138,147 ----
  			ATTR_NULL, ATTR_NOTHROW_LIST)
  DEF_ATTR_TREE_LIST (ATTR_CONST_NOTHROW_LEAF_LIST, ATTR_CONST,	\
  			ATTR_NULL, ATTR_NOTHROW_LEAF_LIST)
+ DEF_ATTR_TREE_LIST (ATTR_ERRNOCONST_NOTHROW_LEAF_LIST, ATTR_FNSPEC,\
+ 			ATTR_LIST_STRERRNOC, ATTR_NOTHROW_LEAF_LIST)
+ DEF_ATTR_TREE_LIST (ATTR_ERRNOPURE_NOTHROW_LEAF_LIST, ATTR_FNSPEC,\
+ 			ATTR_LIST_STRERRNOP, ATTR_NOTHROW_LEAF_LIST)
  DEF_ATTR_TREE_LIST (ATTR_PURE_NOTHROW_LIST, ATTR_PURE,		\
  			ATTR_NULL, ATTR_NOTHROW_LIST)
  DEF_ATTR_TREE_LIST (ATTR_PURE_NOTHROW_LEAF_LIST, ATTR_PURE,	\
diff -Nrcpad gcc-10.3.0/gcc/builtin-types.def gcc-11.1.0/gcc/builtin-types.def
*** gcc-10.3.0/gcc/builtin-types.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/builtin-types.def	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2001-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2001-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** DEF_PRIMITIVE_TYPE (BT_UINT8, unsigned_c
*** 73,78 ****
--- 73,81 ----
  DEF_PRIMITIVE_TYPE (BT_UINT16, uint16_type_node)
  DEF_PRIMITIVE_TYPE (BT_UINT32, uint32_type_node)
  DEF_PRIMITIVE_TYPE (BT_UINT64, uint64_type_node)
+ DEF_PRIMITIVE_TYPE (BT_UINT128, uint128_type_node
+ 				? uint128_type_node
+ 				: error_mark_node)
  DEF_PRIMITIVE_TYPE (BT_WORD, (*lang_hooks.types.type_for_mode) (word_mode, 1))
  DEF_PRIMITIVE_TYPE (BT_UNWINDWORD, (*lang_hooks.types.type_for_mode)
  				    (targetm.unwind_word_mode (), 1))
*************** DEF_FUNCTION_TYPE_1 (BT_FN_UINT8_FLOAT,
*** 300,305 ****
--- 303,309 ----
  DEF_FUNCTION_TYPE_1 (BT_FN_UINT16_UINT16, BT_UINT16, BT_UINT16)
  DEF_FUNCTION_TYPE_1 (BT_FN_UINT32_UINT32, BT_UINT32, BT_UINT32)
  DEF_FUNCTION_TYPE_1 (BT_FN_UINT64_UINT64, BT_UINT64, BT_UINT64)
+ DEF_FUNCTION_TYPE_1 (BT_FN_UINT128_UINT128, BT_UINT128, BT_UINT128)
  DEF_FUNCTION_TYPE_1 (BT_FN_UINT64_FLOAT, BT_UINT64, BT_FLOAT)
  DEF_FUNCTION_TYPE_1 (BT_FN_BOOL_INT, BT_BOOL, BT_INT)
  DEF_FUNCTION_TYPE_1 (BT_FN_BOOL_PTR, BT_BOOL, BT_PTR)
*************** DEF_FUNCTION_TYPE_2 (BT_FN_INT_FEXCEPT_T
*** 499,504 ****
--- 503,509 ----
  		     BT_INT)
  DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_FEXCEPT_T_PTR_INT, BT_INT,
  		     BT_CONST_FEXCEPT_T_PTR, BT_INT)
+ DEF_FUNCTION_TYPE_2 (BT_FN_PTR_CONST_PTR_UINT8, BT_PTR, BT_CONST_PTR, BT_UINT8)
  
  DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR_PTR, BT_FN_VOID_PTR_PTR)
  
*************** DEF_FUNCTION_TYPE_3 (BT_FN_VOID_SIZE_SIZ
*** 633,638 ****
--- 638,647 ----
  DEF_FUNCTION_TYPE_3 (BT_FN_UINT_UINT_PTR_PTR, BT_UINT, BT_UINT, BT_PTR, BT_PTR)
  DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_CONST_SIZE_BOOL,
  		     BT_PTR, BT_PTR, BT_CONST_SIZE, BT_BOOL)
+ DEF_FUNCTION_TYPE_3 (BT_FN_PTR_SIZE_SIZE_PTRMODE,
+ 		     BT_PTR, BT_SIZE, BT_SIZE, BT_PTRMODE)
+ DEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_UINT8_PTRMODE, BT_VOID, BT_PTR, BT_UINT8,
+ 		     BT_PTRMODE)
  
  DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR,
  		     BT_SIZE, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR)
*************** DEF_FUNCTION_TYPE_8 (BT_FN_BOOL_UINT_ULL
*** 750,759 ****
  		     BT_BOOL, BT_UINT, BT_PTR_ULONGLONG, BT_LONG, BT_ULONGLONG,
  		     BT_PTR_ULONGLONG, BT_PTR_ULONGLONG, BT_PTR, BT_PTR)
  
- DEF_FUNCTION_TYPE_9 (BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR_INT,
- 		     BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR,
- 		     BT_PTR_FN_VOID_PTR_PTR, BT_LONG, BT_LONG,
- 		     BT_BOOL, BT_UINT, BT_PTR, BT_INT)
  DEF_FUNCTION_TYPE_9 (BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_PTR,
  		     BT_VOID, BT_INT, BT_PTR_FN_VOID_PTR, BT_SIZE, BT_PTR,
  		     BT_PTR, BT_PTR, BT_UINT, BT_PTR, BT_PTR)
--- 759,764 ----
*************** DEF_FUNCTION_TYPE_9 (BT_FN_BOOL_LONG_LON
*** 761,766 ****
--- 766,775 ----
  		     BT_BOOL, BT_LONG, BT_LONG, BT_LONG, BT_LONG, BT_LONG,
  		     BT_PTR_LONG, BT_PTR_LONG, BT_PTR, BT_PTR)
  
+ DEF_FUNCTION_TYPE_10 (BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR_INT_PTR,
+ 		      BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR,
+ 		      BT_PTR_FN_VOID_PTR_PTR, BT_LONG, BT_LONG,
+ 		      BT_BOOL, BT_UINT, BT_PTR, BT_INT, BT_PTR)
  DEF_FUNCTION_TYPE_10 (BT_FN_BOOL_BOOL_ULL_ULL_ULL_LONG_ULL_ULLPTR_ULLPTR_PTR_PTR,
  		      BT_BOOL, BT_BOOL, BT_ULONGLONG, BT_ULONGLONG,
  		      BT_ULONGLONG, BT_LONG, BT_ULONGLONG, BT_PTR_ULONGLONG,
diff -Nrcpad gcc-10.3.0/gcc/builtins.c gcc-11.1.0/gcc/builtins.c
*** gcc-10.3.0/gcc/builtins.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/builtins.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Expand builtin functions.
!    Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Expand builtin functions.
!    Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 73,78 ****
--- 73,84 ----
  #include "gomp-constants.h"
  #include "omp-general.h"
  #include "tree-dfa.h"
+ #include "gimple-iterator.h"
+ #include "gimple-ssa.h"
+ #include "tree-ssa-live.h"
+ #include "tree-outof-ssa.h"
+ #include "attr-fnspec.h"
+ #include "demangle.h"
  
  struct target_builtins default_target_builtins;
  #if SWITCHABLE_TARGET
*************** static rtx expand_builtin_expect (tree,
*** 153,159 ****
  static rtx expand_builtin_expect_with_probability (tree, rtx);
  static tree fold_builtin_constant_p (tree);
  static tree fold_builtin_classify_type (tree);
! static tree fold_builtin_strlen (location_t, tree, tree);
  static tree fold_builtin_inf (location_t, tree, int);
  static tree rewrite_call_expr (location_t, tree, int, tree, int, ...);
  static bool validate_arg (const_tree, enum tree_code code);
--- 159,165 ----
  static rtx expand_builtin_expect_with_probability (tree, rtx);
  static tree fold_builtin_constant_p (tree);
  static tree fold_builtin_classify_type (tree);
! static tree fold_builtin_strlen (location_t, tree, tree, tree);
  static tree fold_builtin_inf (location_t, tree, int);
  static tree rewrite_call_expr (location_t, tree, int, tree, int, ...);
  static bool validate_arg (const_tree, enum tree_code code);
*************** static rtx expand_builtin_memory_chk (tr
*** 178,185 ****
  				      enum built_in_function);
  static void maybe_emit_chk_warning (tree, enum built_in_function);
  static void maybe_emit_sprintf_chk_warning (tree, enum built_in_function);
- static void maybe_emit_free_warning (tree);
  static tree fold_builtin_object_size (tree, tree);
  
  unsigned HOST_WIDE_INT target_newline;
  unsigned HOST_WIDE_INT target_percent;
--- 184,193 ----
  				      enum built_in_function);
  static void maybe_emit_chk_warning (tree, enum built_in_function);
  static void maybe_emit_sprintf_chk_warning (tree, enum built_in_function);
  static tree fold_builtin_object_size (tree, tree);
+ static bool check_read_access (tree, tree, tree = NULL_TREE, int = 1);
+ static bool compute_objsize_r (tree, int, access_ref *, ssa_name_limit_t &,
+ 			       pointer_query *);
  
  unsigned HOST_WIDE_INT target_newline;
  unsigned HOST_WIDE_INT target_percent;
*************** static tree do_mpfr_remquo (tree, tree,
*** 192,197 ****
--- 200,740 ----
  static tree do_mpfr_lgamma_r (tree, tree, tree);
  static void expand_builtin_sync_synchronize (void);
  
+ access_ref::access_ref (tree bound /* = NULL_TREE */,
+ 			bool minaccess /* = false */)
+ : ref (), eval ([](tree x){ return x; }), deref (), trail1special (true),
+   base0 (true), parmarray ()
+ {
+   /* Set to valid.  */
+   offrng[0] = offrng[1] = 0;
+   /* Invalidate.   */
+   sizrng[0] = sizrng[1] = -1;
+ 
+   /* Set the default bounds of the access and adjust below.  */
+   bndrng[0] = minaccess ? 1 : 0;
+   bndrng[1] = HOST_WIDE_INT_M1U;
+ 
+   /* When BOUND is nonnull and a range can be extracted from it,
+      set the bounds of the access to reflect both it and MINACCESS.
+      BNDRNG[0] is the size of the minimum access.  */
+   tree rng[2];
+   if (bound && get_size_range (bound, rng, SR_ALLOW_ZERO))
+     {
+       bndrng[0] = wi::to_offset (rng[0]);
+       bndrng[1] = wi::to_offset (rng[1]);
+       bndrng[0] = bndrng[0] > 0 && minaccess ? 1 : 0;
+     }
+ }
+ 
+ /* Return the PHI node REF refers to or null if it doesn't.  */
+ 
+ gphi *
+ access_ref::phi () const
+ {
+   if (!ref || TREE_CODE (ref) != SSA_NAME)
+     return NULL;
+ 
+   gimple *def_stmt = SSA_NAME_DEF_STMT (ref);
+   if (gimple_code (def_stmt) != GIMPLE_PHI)
+     return NULL;
+ 
+   return as_a <gphi *> (def_stmt);
+ }
+ 
+ /* Determine and return the largest object to which *THIS.  If *THIS
+    refers to a PHI and PREF is nonnull, fill *PREF with the details
+    of the object determined by compute_objsize(ARG, OSTYPE) for each
+    PHI argument ARG.  */
+ 
+ tree
+ access_ref::get_ref (vec<access_ref> *all_refs,
+ 		     access_ref *pref /* = NULL */,
+ 		     int ostype /* = 1 */,
+ 		     ssa_name_limit_t *psnlim /* = NULL */,
+ 		     pointer_query *qry /* = NULL */) const
+ {
+   gphi *phi_stmt = this->phi ();
+   if (!phi_stmt)
+     return ref;
+ 
+   /* FIXME: Calling get_ref() with a null PSNLIM is dangerous and might
+      cause unbounded recursion.  */
+   ssa_name_limit_t snlim_buf;
+   if (!psnlim)
+     psnlim = &snlim_buf;
+ 
+   if (!psnlim->visit_phi (ref))
+     return NULL_TREE;
+ 
+   /* Reflects the range of offsets of all PHI arguments refer to the same
+      object (i.e., have the same REF).  */
+   access_ref same_ref;
+   /* The conservative result of the PHI reflecting the offset and size
+      of the largest PHI argument, regardless of whether or not they all
+      refer to the same object.  */
+   pointer_query empty_qry;
+   if (!qry)
+     qry = &empty_qry;
+ 
+   access_ref phi_ref;
+   if (pref)
+     {
+       phi_ref = *pref;
+       same_ref = *pref;
+     }
+ 
+   /* Set if any argument is a function array (or VLA) parameter not
+      declared [static].  */
+   bool parmarray = false;
+   /* The size of the smallest object referenced by the PHI arguments.  */
+   offset_int minsize = 0;
+   const offset_int maxobjsize = wi::to_offset (max_object_size ());
+   /* The offset of the PHI, not reflecting those of its arguments.  */
+   const offset_int orng[2] = { phi_ref.offrng[0], phi_ref.offrng[1] };
+ 
+   const unsigned nargs = gimple_phi_num_args (phi_stmt);
+   for (unsigned i = 0; i < nargs; ++i)
+     {
+       access_ref phi_arg_ref;
+       tree arg = gimple_phi_arg_def (phi_stmt, i);
+       if (!compute_objsize_r (arg, ostype, &phi_arg_ref, *psnlim, qry)
+ 	  || phi_arg_ref.sizrng[0] < 0)
+ 	/* A PHI with all null pointer arguments.  */
+ 	return NULL_TREE;
+ 
+       /* Add PREF's offset to that of the argument.  */
+       phi_arg_ref.add_offset (orng[0], orng[1]);
+       if (TREE_CODE (arg) == SSA_NAME)
+ 	qry->put_ref (arg, phi_arg_ref);
+ 
+       if (all_refs)
+ 	all_refs->safe_push (phi_arg_ref);
+ 
+       const bool arg_known_size = (phi_arg_ref.sizrng[0] != 0
+ 				   || phi_arg_ref.sizrng[1] != maxobjsize);
+ 
+       parmarray |= phi_arg_ref.parmarray;
+ 
+       const bool nullp = integer_zerop (arg) && (i || i + 1 < nargs);
+ 
+       if (phi_ref.sizrng[0] < 0)
+ 	{
+ 	  if (!nullp)
+ 	    same_ref = phi_arg_ref;
+ 	  phi_ref = phi_arg_ref;
+ 	  if (arg_known_size)
+ 	    minsize = phi_arg_ref.sizrng[0];
+ 	  continue;
+ 	}
+ 
+       const bool phi_known_size = (phi_ref.sizrng[0] != 0
+ 				   || phi_ref.sizrng[1] != maxobjsize);
+ 
+       if (phi_known_size && phi_arg_ref.sizrng[0] < minsize)
+ 	minsize = phi_arg_ref.sizrng[0];
+ 
+       /* Disregard null pointers in PHIs with two or more arguments.
+ 	 TODO: Handle this better!  */
+       if (nullp)
+ 	continue;
+ 
+       /* Determine the amount of remaining space in the argument.  */
+       offset_int argrem[2];
+       argrem[1] = phi_arg_ref.size_remaining (argrem);
+ 
+       /* Determine the amount of remaining space computed so far and
+ 	 if the remaining space in the argument is more use it instead.  */
+       offset_int phirem[2];
+       phirem[1] = phi_ref.size_remaining (phirem);
+ 
+       if (phi_arg_ref.ref != same_ref.ref)
+ 	same_ref.ref = NULL_TREE;
+ 
+       if (phirem[1] < argrem[1]
+ 	  || (phirem[1] == argrem[1]
+ 	      && phi_ref.sizrng[1] < phi_arg_ref.sizrng[1]))
+ 	/* Use the argument with the most space remaining as the result,
+ 	   or the larger one if the space is equal.  */
+ 	phi_ref = phi_arg_ref;
+ 
+       /* Set SAME_REF.OFFRNG to the maximum range of all arguments.  */
+       if (phi_arg_ref.offrng[0] < same_ref.offrng[0])
+ 	same_ref.offrng[0] = phi_arg_ref.offrng[0];
+       if (same_ref.offrng[1] < phi_arg_ref.offrng[1])
+ 	same_ref.offrng[1] = phi_arg_ref.offrng[1];
+     }
+ 
+   if (phi_ref.sizrng[0] < 0)
+     {
+       /* Fail if none of the PHI's arguments resulted in updating PHI_REF
+ 	 (perhaps because they have all been already visited by prior
+ 	 recursive calls).  */
+       psnlim->leave_phi (ref);
+       return NULL_TREE;
+     }
+ 
+   if (!same_ref.ref && same_ref.offrng[0] != 0)
+     /* Clear BASE0 if not all the arguments refer to the same object and
+        if not all their offsets are zero-based.  This allows the final
+        PHI offset to out of bounds for some arguments but not for others
+        (or negative even of all the arguments are BASE0), which is overly
+        permissive.  */
+     phi_ref.base0 = false;
+ 
+   if (same_ref.ref)
+     phi_ref = same_ref;
+   else
+     {
+       /* Replace the lower bound of the largest argument with the size
+ 	 of the smallest argument, and set PARMARRAY if any argument
+ 	 was one.  */
+       phi_ref.sizrng[0] = minsize;
+       phi_ref.parmarray = parmarray;
+     }
+ 
+   /* Avoid changing *THIS.  */
+   if (pref && pref != this)
+     *pref = phi_ref;
+ 
+   psnlim->leave_phi (ref);
+ 
+   return phi_ref.ref;
+ }
+ 
+ /* Return the maximum amount of space remaining and if non-null, set
+    argument to the minimum.  */
+ 
+ offset_int
+ access_ref::size_remaining (offset_int *pmin /* = NULL */) const
+ {
+   offset_int minbuf;
+   if (!pmin)
+     pmin = &minbuf;
+ 
+   /* add_offset() ensures the offset range isn't inverted.  */
+   gcc_checking_assert (offrng[0] <= offrng[1]);
+ 
+   if (base0)
+     {
+       /* The offset into referenced object is zero-based (i.e., it's
+ 	 not referenced by a pointer into middle of some unknown object).  */
+       if (offrng[0] < 0 && offrng[1] < 0)
+ 	{
+ 	  /* If the offset is negative the remaining size is zero.  */
+ 	  *pmin = 0;
+ 	  return 0;
+ 	}
+ 
+       if (sizrng[1] <= offrng[0])
+ 	{
+ 	  /* If the starting offset is greater than or equal to the upper
+ 	     bound on the size of the object, the space remaining is zero.
+ 	     As a special case, if it's equal, set *PMIN to -1 to let
+ 	     the caller know the offset is valid and just past the end.  */
+ 	  *pmin = sizrng[1] == offrng[0] ? -1 : 0;
+ 	  return 0;
+ 	}
+ 
+       /* Otherwise return the size minus the lower bound of the offset.  */
+       offset_int or0 = offrng[0] < 0 ? 0 : offrng[0];
+ 
+       *pmin = sizrng[0] - or0;
+       return sizrng[1] - or0;
+     }
+ 
+   /* The offset to the referenced object isn't zero-based (i.e., it may
+      refer to a byte other than the first.  The size of such an object
+      is constrained only by the size of the address space (the result
+      of max_object_size()).  */
+   if (sizrng[1] <= offrng[0])
+     {
+       *pmin = 0;
+       return 0;
+     }
+ 
+   offset_int or0 = offrng[0] < 0 ? 0 : offrng[0];
+ 
+   *pmin = sizrng[0] - or0;
+   return sizrng[1] - or0;
+ }
+ 
+ /* Add the range [MIN, MAX] to the offset range.  For known objects (with
+    zero-based offsets) at least one of whose offset's bounds is in range,
+    constrain the other (or both) to the bounds of the object (i.e., zero
+    and the upper bound of its size).  This improves the quality of
+    diagnostics.  */
+ 
+ void access_ref::add_offset (const offset_int &min, const offset_int &max)
+ {
+   if (min <= max)
+     {
+       /* To add an ordinary range just add it to the bounds.  */
+       offrng[0] += min;
+       offrng[1] += max;
+     }
+   else if (!base0)
+     {
+       /* To add an inverted range to an offset to an unknown object
+ 	 expand it to the maximum.  */
+       add_max_offset ();
+       return;
+     }
+   else
+     {
+       /* To add an inverted range to an offset to an known object set
+ 	 the upper bound to the maximum representable offset value
+ 	 (which may be greater than MAX_OBJECT_SIZE).
+ 	 The lower bound is either the sum of the current offset and
+ 	 MIN when abs(MAX) is greater than the former, or zero otherwise.
+ 	 Zero because then then inverted range includes the negative of
+ 	 the lower bound.  */
+       offset_int maxoff = wi::to_offset (TYPE_MAX_VALUE (ptrdiff_type_node));
+       offrng[1] = maxoff;
+ 
+       if (max >= 0)
+ 	{
+ 	  offrng[0] = 0;
+ 	  return;
+ 	}
+ 
+       offset_int absmax = wi::abs (max);
+       if (offrng[0] < absmax)
+ 	{
+ 	  offrng[0] += min;
+ 	  /* Cap the lower bound at the upper (set to MAXOFF above)
+ 	     to avoid inadvertently recreating an inverted range.  */
+ 	  if (offrng[1] < offrng[0])
+ 	    offrng[0] = offrng[1];
+ 	}
+       else
+ 	offrng[0] = 0;
+     }
+ 
+   if (!base0)
+     return;
+ 
+   /* When referencing a known object check to see if the offset computed
+      so far is in bounds... */
+   offset_int remrng[2];
+   remrng[1] = size_remaining (remrng);
+   if (remrng[1] > 0 || remrng[0] < 0)
+     {
+       /* ...if so, constrain it so that neither bound exceeds the size of
+ 	 the object.  Out of bounds offsets are left unchanged, and, for
+ 	 better or worse, become in bounds later.  They should be detected
+ 	 and diagnosed at the point they first become invalid by
+ 	 -Warray-bounds.  */
+       if (offrng[0] < 0)
+ 	offrng[0] = 0;
+       if (offrng[1] > sizrng[1])
+ 	offrng[1] = sizrng[1];
+     }
+ }
+ 
+ /* Set a bit for the PHI in VISITED and return true if it wasn't
+    already set.  */
+ 
+ bool
+ ssa_name_limit_t::visit_phi (tree ssa_name)
+ {
+   if (!visited)
+     visited = BITMAP_ALLOC (NULL);
+ 
+   /* Return false if SSA_NAME has already been visited.  */
+   return bitmap_set_bit (visited, SSA_NAME_VERSION (ssa_name));
+ }
+ 
+ /* Clear a bit for the PHI in VISITED.  */
+ 
+ void
+ ssa_name_limit_t::leave_phi (tree ssa_name)
+ {
+   /* Return false if SSA_NAME has already been visited.  */
+   bitmap_clear_bit (visited, SSA_NAME_VERSION (ssa_name));
+ }
+ 
+ /* Return false if the SSA_NAME chain length counter has reached
+    the limit, otherwise increment the counter and return true.  */
+ 
+ bool
+ ssa_name_limit_t::next ()
+ {
+   /* Return a negative value to let caller avoid recursing beyond
+      the specified limit.  */
+   if (ssa_def_max == 0)
+     return false;
+ 
+   --ssa_def_max;
+   return true;
+ }
+ 
+ /* If the SSA_NAME has already been "seen" return a positive value.
+    Otherwise add it to VISITED.  If the SSA_NAME limit has been
+    reached, return a negative value.  Otherwise return zero.  */
+ 
+ int
+ ssa_name_limit_t::next_phi (tree ssa_name)
+ {
+   {
+     gimple *def_stmt = SSA_NAME_DEF_STMT (ssa_name);
+     /* Return a positive value if the PHI has already been visited.  */
+     if (gimple_code (def_stmt) == GIMPLE_PHI
+ 	&& !visit_phi (ssa_name))
+       return 1;
+   }
+ 
+   /* Return a negative value to let caller avoid recursing beyond
+      the specified limit.  */
+   if (ssa_def_max == 0)
+     return -1;
+ 
+   --ssa_def_max;
+ 
+   return 0;
+ }
+ 
+ ssa_name_limit_t::~ssa_name_limit_t ()
+ {
+   if (visited)
+     BITMAP_FREE (visited);
+ }
+ 
+ /* Default ctor.  Initialize object with pointers to the range_query
+    and cache_type instances to use or null.  */
+ 
+ pointer_query::pointer_query (range_query *qry /* = NULL */,
+ 			      cache_type *cache /* = NULL */)
+ : rvals (qry), var_cache (cache), hits (), misses (),
+   failures (), depth (), max_depth ()
+ {
+   /* No op.  */
+ }
+ 
+ /* Return a pointer to the cached access_ref instance for the SSA_NAME
+    PTR if it's there or null otherwise.  */
+ 
+ const access_ref *
+ pointer_query::get_ref (tree ptr, int ostype /* = 1 */) const
+ {
+   if (!var_cache)
+     {
+       ++misses;
+       return NULL;
+     }
+ 
+   unsigned version = SSA_NAME_VERSION (ptr);
+   unsigned idx = version << 1 | (ostype & 1);
+   if (var_cache->indices.length () <= idx)
+     {
+       ++misses;
+       return NULL;
+     }
+ 
+   unsigned cache_idx = var_cache->indices[idx];
+   if (var_cache->access_refs.length () <= cache_idx)
+     {
+       ++misses;
+       return NULL;
+     }
+ 
+   access_ref &cache_ref = var_cache->access_refs[cache_idx];
+   if (cache_ref.ref)
+     {
+       ++hits;
+       return &cache_ref;
+     }
+ 
+   ++misses;
+   return NULL;
+ }
+ 
+ /* Retrieve the access_ref instance for a variable from the cache if it's
+    there or compute it and insert it into the cache if it's nonnonull.  */
+ 
+ bool
+ pointer_query::get_ref (tree ptr, access_ref *pref, int ostype /* = 1 */)
+ {
+   const unsigned version
+     = TREE_CODE (ptr) == SSA_NAME ? SSA_NAME_VERSION (ptr) : 0;
+ 
+   if (var_cache && version)
+     {
+       unsigned idx = version << 1 | (ostype & 1);
+       if (idx < var_cache->indices.length ())
+ 	{
+ 	  unsigned cache_idx = var_cache->indices[idx] - 1;
+ 	  if (cache_idx < var_cache->access_refs.length ()
+ 	      && var_cache->access_refs[cache_idx].ref)
+ 	    {
+ 	      ++hits;
+ 	      *pref = var_cache->access_refs[cache_idx];
+ 	      return true;
+ 	    }
+ 	}
+ 
+       ++misses;
+     }
+ 
+   if (!compute_objsize (ptr, ostype, pref, this))
+     {
+       ++failures;
+       return false;
+     }
+ 
+   return true;
+ }
+ 
+ /* Add a copy of the access_ref REF for the SSA_NAME to the cache if it's
+    nonnull.  */
+ 
+ void
+ pointer_query::put_ref (tree ptr, const access_ref &ref, int ostype /* = 1 */)
+ {
+   /* Only add populated/valid entries.  */
+   if (!var_cache || !ref.ref || ref.sizrng[0] < 0)
+     return;
+ 
+   /* Add REF to the two-level cache.  */
+   unsigned version = SSA_NAME_VERSION (ptr);
+   unsigned idx = version << 1 | (ostype & 1);
+ 
+   /* Grow INDICES if necessary.  An index is valid if it's nonzero.
+      Its value minus one is the index into ACCESS_REFS.  Not all
+      entries are valid.  */
+   if (var_cache->indices.length () <= idx)
+     var_cache->indices.safe_grow_cleared (idx + 1);
+ 
+   if (!var_cache->indices[idx])
+     var_cache->indices[idx] = var_cache->access_refs.length () + 1;
+ 
+   /* Grow ACCESS_REF cache if necessary.  An entry is valid if its
+      REF member is nonnull.  All entries except for the last two
+      are valid.  Once nonnull, the REF value must stay unchanged.  */
+   unsigned cache_idx = var_cache->indices[idx];
+   if (var_cache->access_refs.length () <= cache_idx)
+     var_cache->access_refs.safe_grow_cleared (cache_idx + 1);
+ 
+   access_ref cache_ref = var_cache->access_refs[cache_idx - 1];
+   if (cache_ref.ref)
+   {
+     gcc_checking_assert (cache_ref.ref == ref.ref);
+     return;
+   }
+ 
+   cache_ref = ref;
+ }
+ 
+ /* Flush the cache if it's nonnull.  */
+ 
+ void
+ pointer_query::flush_cache ()
+ {
+   if (!var_cache)
+     return;
+   var_cache->indices.release ();
+   var_cache->access_refs.release ();
+ }
+ 
  /* Return true if NAME starts with __builtin_ or __sync_.  */
  
  static bool
*************** string_length (const void *ptr, unsigned
*** 540,577 ****
    return n;
  }
  
! /* For a call at LOC to a function FN that expects a string in the argument
!    ARG, issue a diagnostic due to it being a called with an argument
!    declared at NONSTR that is a character array with no terminating NUL.  */
  
  void
! warn_string_no_nul (location_t loc, const char *fn, tree arg, tree decl)
  {
!   if (TREE_NO_WARNING (arg))
      return;
  
    loc = expansion_point_location_if_in_system_header (loc);
  
!   if (warning_at (loc, OPT_Wstringop_overflow_,
! 		  "%qs argument missing terminating nul", fn))
      {
        inform (DECL_SOURCE_LOCATION (decl),
  	      "referenced argument declared here");
        TREE_NO_WARNING (arg) = 1;
      }
  }
  
  /* For a call EXPR (which may be null) that expects a string argument
!    and SRC as the argument, returns false if SRC is a character array
!    with no terminating NUL.  When nonnull, BOUND is the number of
!    characters in which to expect the terminating NUL.
!    When EXPR is nonnull also issues a warning.  */
  
  bool
! check_nul_terminated_array (tree expr, tree src, tree bound /* = NULL_TREE */)
  {
    tree size;
    bool exact;
    tree nonstr = unterminated_array (src, &size, &exact);
    if (!nonstr)
      return true;
--- 1083,1214 ----
    return n;
  }
  
! /* For a call EXPR at LOC to a function FNAME that expects a string
!    in the argument ARG, issue a diagnostic due to it being a called
!    with an argument that is a character array with no terminating
!    NUL.  SIZE is the EXACT size of the array, and BNDRNG the number
!    of characters in which the NUL is expected.  Either EXPR or FNAME
!    may be null but noth both.  SIZE may be null when BNDRNG is null.  */
  
  void
! warn_string_no_nul (location_t loc, tree expr, const char *fname,
! 		    tree arg, tree decl, tree size /* = NULL_TREE */,
! 		    bool exact /* = false */,
! 		    const wide_int bndrng[2] /* = NULL */)
  {
!   if ((expr && TREE_NO_WARNING (expr)) || TREE_NO_WARNING (arg))
      return;
  
    loc = expansion_point_location_if_in_system_header (loc);
+   bool warned;
  
!   /* Format the bound range as a string to keep the nuber of messages
!      from exploding.  */
!   char bndstr[80];
!   *bndstr = 0;
!   if (bndrng)
!     {
!       if (bndrng[0] == bndrng[1])
! 	sprintf (bndstr, "%llu", (unsigned long long) bndrng[0].to_uhwi ());
!       else
! 	sprintf (bndstr, "[%llu, %llu]",
! 		 (unsigned long long) bndrng[0].to_uhwi (),
! 		 (unsigned long long) bndrng[1].to_uhwi ());
!     }
! 
!   const tree maxobjsize = max_object_size ();
!   const wide_int maxsiz = wi::to_wide (maxobjsize);
!   if (expr)
!     {
!       tree func = get_callee_fndecl (expr);
!       if (bndrng)
! 	{
! 	  if (wi::ltu_p (maxsiz, bndrng[0]))
! 	    warned = warning_at (loc, OPT_Wstringop_overread,
! 				 "%K%qD specified bound %s exceeds "
! 				 "maximum object size %E",
! 				 expr, func, bndstr, maxobjsize);
! 	  else
! 	    {
! 	      bool maybe = wi::to_wide (size) == bndrng[0];
! 	      warned = warning_at (loc, OPT_Wstringop_overread,
! 				   exact
! 				   ? G_("%K%qD specified bound %s exceeds "
! 					"the size %E of unterminated array")
! 				   : (maybe
! 				      ? G_("%K%qD specified bound %s may "
! 					   "exceed the size of at most %E "
! 					   "of unterminated array")
! 				      : G_("%K%qD specified bound %s exceeds "
! 					   "the size of at most %E "
! 					   "of unterminated array")),
! 				   expr, func, bndstr, size);
! 	    }
! 	}
!       else
! 	warned = warning_at (loc, OPT_Wstringop_overread,
! 			     "%K%qD argument missing terminating nul",
! 			     expr, func);
!     }
!   else
!     {
!       if (bndrng)
! 	{
! 	  if (wi::ltu_p (maxsiz, bndrng[0]))
! 	    warned = warning_at (loc, OPT_Wstringop_overread,
! 				 "%qs specified bound %s exceeds "
! 				 "maximum object size %E",
! 				 fname, bndstr, maxobjsize);
! 	  else
! 	    {
! 	      bool maybe = wi::to_wide (size) == bndrng[0];
! 	      warned = warning_at (loc, OPT_Wstringop_overread,
! 				   exact
! 				   ? G_("%qs specified bound %s exceeds "
! 					"the size %E of unterminated array")
! 				   : (maybe
! 				      ? G_("%qs specified bound %s may "
! 					   "exceed the size of at most %E "
! 					   "of unterminated array")
! 				      : G_("%qs specified bound %s exceeds "
! 					   "the size of at most %E "
! 					   "of unterminated array")),
! 				   fname, bndstr, size);
! 	    }
! 	}
!       else
! 	warned = warning_at (loc, OPT_Wstringop_overread,
! 			     "%qs argument missing terminating nul",
! 			     fname);
!     }
! 
!   if (warned)
      {
        inform (DECL_SOURCE_LOCATION (decl),
  	      "referenced argument declared here");
        TREE_NO_WARNING (arg) = 1;
+       if (expr)
+ 	TREE_NO_WARNING (expr) = 1;
      }
  }
  
  /* For a call EXPR (which may be null) that expects a string argument
!    SRC as an argument, returns false if SRC is a character array with
!    no terminating NUL.  When nonnull, BOUND is the number of characters
!    in which to expect the terminating NUL.  RDONLY is true for read-only
!    accesses such as strcmp, false for read-write such as strcpy.  When
!    EXPR is also issues a warning.  */
  
  bool
! check_nul_terminated_array (tree expr, tree src,
! 			    tree bound /* = NULL_TREE */)
  {
+   /* The constant size of the array SRC points to.  The actual size
+      may be less of EXACT is true, but not more.  */
    tree size;
+   /* True if SRC involves a non-constant offset into the array.  */
    bool exact;
+   /* The unterminated constant array SRC points to.  */
    tree nonstr = unterminated_array (src, &size, &exact);
    if (!nonstr)
      return true;
*************** check_nul_terminated_array (tree expr, t
*** 580,607 ****
       is the constant size of the array in bytes.  EXACT is true when
       SIZE is exact.  */
  
    if (bound)
      {
-       wide_int min, max;
        if (TREE_CODE (bound) == INTEGER_CST)
! 	min = max = wi::to_wide (bound);
        else
  	{
! 	  value_range_kind rng = get_range_info (bound, &min, &max);
  	  if (rng != VR_RANGE)
  	    return true;
  	}
  
!       if (wi::leu_p (min, wi::to_wide (size)))
  	return true;
      }
  
!   if (expr && !TREE_NO_WARNING (expr))
!     {
!       tree fndecl = get_callee_fndecl (expr);
!       const char *fname = IDENTIFIER_POINTER (DECL_NAME (fndecl));
!       warn_string_no_nul (EXPR_LOCATION (expr), fname, src, nonstr);
!     }
  
    return false;
  }
--- 1217,1246 ----
       is the constant size of the array in bytes.  EXACT is true when
       SIZE is exact.  */
  
+   wide_int bndrng[2];
    if (bound)
      {
        if (TREE_CODE (bound) == INTEGER_CST)
! 	bndrng[0] = bndrng[1] = wi::to_wide (bound);
        else
  	{
! 	  value_range_kind rng = get_range_info (bound, bndrng, bndrng + 1);
  	  if (rng != VR_RANGE)
  	    return true;
  	}
  
!       if (exact)
! 	{
! 	  if (wi::leu_p (bndrng[0], wi::to_wide (size)))
! 	    return true;
! 	}
!       else if (wi::lt_p (bndrng[0], wi::to_wide (size), UNSIGNED))
  	return true;
      }
  
!   if (expr)
!     warn_string_no_nul (EXPR_LOCATION (expr), expr, NULL, src, nonstr,
! 			size, exact, bound ? bndrng : NULL);
  
    return false;
  }
*************** expand_builtin_apply (rtx function, rtx
*** 1851,1858 ****
    if (targetm.have_untyped_call ())
      {
        rtx mem = gen_rtx_MEM (FUNCTION_MODE, function);
!       emit_call_insn (targetm.gen_untyped_call (mem, result,
! 						result_vector (1, result)));
      }
    else if (targetm.have_call_value ())
      {
--- 2490,2501 ----
    if (targetm.have_untyped_call ())
      {
        rtx mem = gen_rtx_MEM (FUNCTION_MODE, function);
!       rtx_insn *seq = targetm.gen_untyped_call (mem, result,
! 						result_vector (1, result));
!       for (rtx_insn *insn = seq; insn; insn = NEXT_INSN (insn))
! 	if (CALL_P (insn))
! 	  add_reg_note (insn, REG_UNTYPED_CALL, NULL_RTX);
!       emit_insn (seq);
      }
    else if (targetm.have_call_value ())
      {
*************** type_to_class (tree type)
*** 1971,1976 ****
--- 2614,2620 ----
      case ARRAY_TYPE:	   return (TYPE_STRING_FLAG (type)
  				   ? string_type_class : array_type_class);
      case LANG_TYPE:	   return lang_type_class;
+     case OPAQUE_TYPE:      return opaque_type_class;
      default:		   return no_type_class;
      }
  }
*************** mathfn_built_in_2 (tree type, combined_f
*** 2033,2127 ****
  
    switch (fn)
      {
!     CASE_MATHFN (ACOS)
!     CASE_MATHFN (ACOSH)
!     CASE_MATHFN (ASIN)
!     CASE_MATHFN (ASINH)
!     CASE_MATHFN (ATAN)
!     CASE_MATHFN (ATAN2)
!     CASE_MATHFN (ATANH)
!     CASE_MATHFN (CBRT)
!     CASE_MATHFN_FLOATN (CEIL)
!     CASE_MATHFN (CEXPI)
!     CASE_MATHFN_FLOATN (COPYSIGN)
!     CASE_MATHFN (COS)
!     CASE_MATHFN (COSH)
!     CASE_MATHFN (DREM)
!     CASE_MATHFN (ERF)
!     CASE_MATHFN (ERFC)
!     CASE_MATHFN (EXP)
!     CASE_MATHFN (EXP10)
!     CASE_MATHFN (EXP2)
!     CASE_MATHFN (EXPM1)
!     CASE_MATHFN (FABS)
!     CASE_MATHFN (FDIM)
!     CASE_MATHFN_FLOATN (FLOOR)
!     CASE_MATHFN_FLOATN (FMA)
!     CASE_MATHFN_FLOATN (FMAX)
!     CASE_MATHFN_FLOATN (FMIN)
!     CASE_MATHFN (FMOD)
!     CASE_MATHFN (FREXP)
!     CASE_MATHFN (GAMMA)
!     CASE_MATHFN_REENT (GAMMA) /* GAMMA_R */
!     CASE_MATHFN (HUGE_VAL)
!     CASE_MATHFN (HYPOT)
!     CASE_MATHFN (ILOGB)
!     CASE_MATHFN (ICEIL)
!     CASE_MATHFN (IFLOOR)
!     CASE_MATHFN (INF)
!     CASE_MATHFN (IRINT)
!     CASE_MATHFN (IROUND)
!     CASE_MATHFN (ISINF)
!     CASE_MATHFN (J0)
!     CASE_MATHFN (J1)
!     CASE_MATHFN (JN)
!     CASE_MATHFN (LCEIL)
!     CASE_MATHFN (LDEXP)
!     CASE_MATHFN (LFLOOR)
!     CASE_MATHFN (LGAMMA)
!     CASE_MATHFN_REENT (LGAMMA) /* LGAMMA_R */
!     CASE_MATHFN (LLCEIL)
!     CASE_MATHFN (LLFLOOR)
!     CASE_MATHFN (LLRINT)
!     CASE_MATHFN (LLROUND)
!     CASE_MATHFN (LOG)
!     CASE_MATHFN (LOG10)
!     CASE_MATHFN (LOG1P)
!     CASE_MATHFN (LOG2)
!     CASE_MATHFN (LOGB)
!     CASE_MATHFN (LRINT)
!     CASE_MATHFN (LROUND)
!     CASE_MATHFN (MODF)
!     CASE_MATHFN (NAN)
!     CASE_MATHFN (NANS)
!     CASE_MATHFN_FLOATN (NEARBYINT)
!     CASE_MATHFN (NEXTAFTER)
!     CASE_MATHFN (NEXTTOWARD)
!     CASE_MATHFN (POW)
!     CASE_MATHFN (POWI)
!     CASE_MATHFN (POW10)
!     CASE_MATHFN (REMAINDER)
!     CASE_MATHFN (REMQUO)
!     CASE_MATHFN_FLOATN (RINT)
!     CASE_MATHFN_FLOATN (ROUND)
!     CASE_MATHFN_FLOATN (ROUNDEVEN)
!     CASE_MATHFN (SCALB)
!     CASE_MATHFN (SCALBLN)
!     CASE_MATHFN (SCALBN)
!     CASE_MATHFN (SIGNBIT)
!     CASE_MATHFN (SIGNIFICAND)
!     CASE_MATHFN (SIN)
!     CASE_MATHFN (SINCOS)
!     CASE_MATHFN (SINH)
!     CASE_MATHFN_FLOATN (SQRT)
!     CASE_MATHFN (TAN)
!     CASE_MATHFN (TANH)
!     CASE_MATHFN (TGAMMA)
!     CASE_MATHFN_FLOATN (TRUNC)
!     CASE_MATHFN (Y0)
!     CASE_MATHFN (Y1)
      CASE_MATHFN (YN)
  
      default:
        return END_BUILTINS;
      }
--- 2677,2774 ----
  
    switch (fn)
      {
! #define SEQ_OF_CASE_MATHFN			\
!     CASE_MATHFN (ACOS)				\
!     CASE_MATHFN (ACOSH)				\
!     CASE_MATHFN (ASIN)				\
!     CASE_MATHFN (ASINH)				\
!     CASE_MATHFN (ATAN)				\
!     CASE_MATHFN (ATAN2)				\
!     CASE_MATHFN (ATANH)				\
!     CASE_MATHFN (CBRT)				\
!     CASE_MATHFN_FLOATN (CEIL)			\
!     CASE_MATHFN (CEXPI)				\
!     CASE_MATHFN_FLOATN (COPYSIGN)		\
!     CASE_MATHFN (COS)				\
!     CASE_MATHFN (COSH)				\
!     CASE_MATHFN (DREM)				\
!     CASE_MATHFN (ERF)				\
!     CASE_MATHFN (ERFC)				\
!     CASE_MATHFN (EXP)				\
!     CASE_MATHFN (EXP10)				\
!     CASE_MATHFN (EXP2)				\
!     CASE_MATHFN (EXPM1)				\
!     CASE_MATHFN (FABS)				\
!     CASE_MATHFN (FDIM)				\
!     CASE_MATHFN_FLOATN (FLOOR)			\
!     CASE_MATHFN_FLOATN (FMA)			\
!     CASE_MATHFN_FLOATN (FMAX)			\
!     CASE_MATHFN_FLOATN (FMIN)			\
!     CASE_MATHFN (FMOD)				\
!     CASE_MATHFN (FREXP)				\
!     CASE_MATHFN (GAMMA)				\
!     CASE_MATHFN_REENT (GAMMA) /* GAMMA_R */	\
!     CASE_MATHFN (HUGE_VAL)			\
!     CASE_MATHFN (HYPOT)				\
!     CASE_MATHFN (ILOGB)				\
!     CASE_MATHFN (ICEIL)				\
!     CASE_MATHFN (IFLOOR)			\
!     CASE_MATHFN (INF)				\
!     CASE_MATHFN (IRINT)				\
!     CASE_MATHFN (IROUND)			\
!     CASE_MATHFN (ISINF)				\
!     CASE_MATHFN (J0)				\
!     CASE_MATHFN (J1)				\
!     CASE_MATHFN (JN)				\
!     CASE_MATHFN (LCEIL)				\
!     CASE_MATHFN (LDEXP)				\
!     CASE_MATHFN (LFLOOR)			\
!     CASE_MATHFN (LGAMMA)			\
!     CASE_MATHFN_REENT (LGAMMA) /* LGAMMA_R */	\
!     CASE_MATHFN (LLCEIL)			\
!     CASE_MATHFN (LLFLOOR)			\
!     CASE_MATHFN (LLRINT)			\
!     CASE_MATHFN (LLROUND)			\
!     CASE_MATHFN (LOG)				\
!     CASE_MATHFN (LOG10)				\
!     CASE_MATHFN (LOG1P)				\
!     CASE_MATHFN (LOG2)				\
!     CASE_MATHFN (LOGB)				\
!     CASE_MATHFN (LRINT)				\
!     CASE_MATHFN (LROUND)			\
!     CASE_MATHFN (MODF)				\
!     CASE_MATHFN (NAN)				\
!     CASE_MATHFN (NANS)				\
!     CASE_MATHFN_FLOATN (NEARBYINT)		\
!     CASE_MATHFN (NEXTAFTER)			\
!     CASE_MATHFN (NEXTTOWARD)			\
!     CASE_MATHFN (POW)				\
!     CASE_MATHFN (POWI)				\
!     CASE_MATHFN (POW10)				\
!     CASE_MATHFN (REMAINDER)			\
!     CASE_MATHFN (REMQUO)			\
!     CASE_MATHFN_FLOATN (RINT)			\
!     CASE_MATHFN_FLOATN (ROUND)			\
!     CASE_MATHFN_FLOATN (ROUNDEVEN)		\
!     CASE_MATHFN (SCALB)				\
!     CASE_MATHFN (SCALBLN)			\
!     CASE_MATHFN (SCALBN)			\
!     CASE_MATHFN (SIGNBIT)			\
!     CASE_MATHFN (SIGNIFICAND)			\
!     CASE_MATHFN (SIN)				\
!     CASE_MATHFN (SINCOS)			\
!     CASE_MATHFN (SINH)				\
!     CASE_MATHFN_FLOATN (SQRT)			\
!     CASE_MATHFN (TAN)				\
!     CASE_MATHFN (TANH)				\
!     CASE_MATHFN (TGAMMA)			\
!     CASE_MATHFN_FLOATN (TRUNC)			\
!     CASE_MATHFN (Y0)				\
!     CASE_MATHFN (Y1)				\
      CASE_MATHFN (YN)
  
+     SEQ_OF_CASE_MATHFN
+ 
      default:
        return END_BUILTINS;
      }
*************** mathfn_built_in_2 (tree type, combined_f
*** 2151,2156 ****
--- 2798,2807 ----
      return END_BUILTINS;
  }
  
+ #undef CASE_MATHFN
+ #undef CASE_MATHFN_FLOATN
+ #undef CASE_MATHFN_REENT
+ 
  /* Return mathematic function equivalent to FN but operating directly on TYPE,
     if available.  If IMPLICIT_P is true use the implicit builtin declaration,
     otherwise use the explicit declaration.  If we can't do the conversion,
*************** mathfn_built_in (tree type, enum built_i
*** 2186,2191 ****
--- 2837,2897 ----
    return mathfn_built_in_1 (type, as_combined_fn (fn), /*implicit=*/ 1);
  }
  
+ /* Return the type associated with a built in function, i.e., the one
+    to be passed to mathfn_built_in to get the type-specific
+    function.  */
+ 
+ tree
+ mathfn_built_in_type (combined_fn fn)
+ {
+ #define CASE_MATHFN(MATHFN)			\
+   case CFN_BUILT_IN_##MATHFN:			\
+     return double_type_node;			\
+   case CFN_BUILT_IN_##MATHFN##F:		\
+     return float_type_node;			\
+   case CFN_BUILT_IN_##MATHFN##L:		\
+     return long_double_type_node;
+ 
+ #define CASE_MATHFN_FLOATN(MATHFN)		\
+   CASE_MATHFN(MATHFN)				\
+   case CFN_BUILT_IN_##MATHFN##F16:		\
+     return float16_type_node;			\
+   case CFN_BUILT_IN_##MATHFN##F32:		\
+     return float32_type_node;			\
+   case CFN_BUILT_IN_##MATHFN##F64:		\
+     return float64_type_node;			\
+   case CFN_BUILT_IN_##MATHFN##F128:		\
+     return float128_type_node;			\
+   case CFN_BUILT_IN_##MATHFN##F32X:		\
+     return float32x_type_node;			\
+   case CFN_BUILT_IN_##MATHFN##F64X:		\
+     return float64x_type_node;			\
+   case CFN_BUILT_IN_##MATHFN##F128X:		\
+     return float128x_type_node;
+ 
+ /* Similar to above, but appends _R after any F/L suffix.  */
+ #define CASE_MATHFN_REENT(MATHFN) \
+   case CFN_BUILT_IN_##MATHFN##_R:		\
+     return double_type_node;			\
+   case CFN_BUILT_IN_##MATHFN##F_R:		\
+     return float_type_node;			\
+   case CFN_BUILT_IN_##MATHFN##L_R:		\
+     return long_double_type_node;
+ 
+   switch (fn)
+     {
+     SEQ_OF_CASE_MATHFN
+ 
+     default:
+       return NULL_TREE;
+     }
+ 
+ #undef CASE_MATHFN
+ #undef CASE_MATHFN_FLOATN
+ #undef CASE_MATHFN_REENT
+ #undef SEQ_OF_CASE_MATHFN
+ }
+ 
  /* If BUILT_IN_NORMAL function FNDECL has an associated internal function,
     return its code, otherwise return IFN_LAST.  Note that this function
     only tests whether the function is defined in internals.def, not whether
*************** expand_builtin_cexpi (tree exp, rtx targ
*** 2607,2613 ****
        /* Compute into op1 and op2.  */
        expand_twoval_unop (sincos_optab, op0, op2, op1, 0);
      }
!   else if (targetm.libc_has_function (function_sincos))
      {
        tree call, fn = NULL_TREE;
        tree top1, top2;
--- 3313,3319 ----
        /* Compute into op1 and op2.  */
        expand_twoval_unop (sincos_optab, op0, op2, op1, 0);
      }
!   else if (targetm.libc_has_function (function_sincos, type))
      {
        tree call, fn = NULL_TREE;
        tree top1, top2;
*************** expand_builtin_strlen (tree exp, rtx tar
*** 2995,3013 ****
    if (!validate_arglist (exp, POINTER_TYPE, VOID_TYPE))
      return NULL_RTX;
  
-   class expand_operand ops[4];
-   rtx pat;
-   tree len;
    tree src = CALL_EXPR_ARG (exp, 0);
!   rtx src_reg;
!   rtx_insn *before_strlen;
!   machine_mode insn_mode;
!   enum insn_code icode = CODE_FOR_nothing;
!   unsigned int align;
  
    /* If the length can be computed at compile-time, return it.  */
!   len = c_strlen (src, 0);
!   if (len)
      return expand_expr (len, target, target_mode, EXPAND_NORMAL);
  
    /* If the length can be computed at compile-time and is constant
--- 3701,3712 ----
    if (!validate_arglist (exp, POINTER_TYPE, VOID_TYPE))
      return NULL_RTX;
  
    tree src = CALL_EXPR_ARG (exp, 0);
!   if (!check_read_access (exp, src))
!     return NULL_RTX;
  
    /* If the length can be computed at compile-time, return it.  */
!   if (tree len = c_strlen (src, 0))
      return expand_expr (len, target, target_mode, EXPAND_NORMAL);
  
    /* If the length can be computed at compile-time and is constant
*************** expand_builtin_strlen (tree exp, rtx tar
*** 3015,3034 ****
       src for side-effects, then return len.
       E.g. x = strlen (i++ ? "xfoo" + 1 : "bar");
       can be optimized into: i++; x = 3;  */
!   len = c_strlen (src, 1);
    if (len && TREE_CODE (len) == INTEGER_CST)
      {
        expand_expr (src, const0_rtx, VOIDmode, EXPAND_NORMAL);
        return expand_expr (len, target, target_mode, EXPAND_NORMAL);
      }
  
!   align = get_pointer_alignment (src) / BITS_PER_UNIT;
  
    /* If SRC is not a pointer type, don't do this operation inline.  */
    if (align == 0)
      return NULL_RTX;
  
    /* Bail out if we can't compute strlen in the right mode.  */
    FOR_EACH_MODE_FROM (insn_mode, target_mode)
      {
        icode = optab_handler (strlen_optab, insn_mode);
--- 3714,3735 ----
       src for side-effects, then return len.
       E.g. x = strlen (i++ ? "xfoo" + 1 : "bar");
       can be optimized into: i++; x = 3;  */
!   tree len = c_strlen (src, 1);
    if (len && TREE_CODE (len) == INTEGER_CST)
      {
        expand_expr (src, const0_rtx, VOIDmode, EXPAND_NORMAL);
        return expand_expr (len, target, target_mode, EXPAND_NORMAL);
      }
  
!   unsigned int align = get_pointer_alignment (src) / BITS_PER_UNIT;
  
    /* If SRC is not a pointer type, don't do this operation inline.  */
    if (align == 0)
      return NULL_RTX;
  
    /* Bail out if we can't compute strlen in the right mode.  */
+   machine_mode insn_mode;
+   enum insn_code icode = CODE_FOR_nothing;
    FOR_EACH_MODE_FROM (insn_mode, target_mode)
      {
        icode = optab_handler (strlen_optab, insn_mode);
*************** expand_builtin_strlen (tree exp, rtx tar
*** 3041,3052 ****
    /* Make a place to hold the source address.  We will not expand
       the actual source until we are sure that the expansion will
       not fail -- there are trees that cannot be expanded twice.  */
!   src_reg = gen_reg_rtx (Pmode);
  
    /* Mark the beginning of the strlen sequence so we can emit the
       source operand later.  */
!   before_strlen = get_last_insn ();
  
    create_output_operand (&ops[0], target, insn_mode);
    create_fixed_operand (&ops[1], gen_rtx_MEM (BLKmode, src_reg));
    create_integer_operand (&ops[2], 0);
--- 3742,3754 ----
    /* Make a place to hold the source address.  We will not expand
       the actual source until we are sure that the expansion will
       not fail -- there are trees that cannot be expanded twice.  */
!   rtx src_reg = gen_reg_rtx (Pmode);
  
    /* Mark the beginning of the strlen sequence so we can emit the
       source operand later.  */
!   rtx_insn *before_strlen = get_last_insn ();
  
+   class expand_operand ops[4];
    create_output_operand (&ops[0], target, insn_mode);
    create_fixed_operand (&ops[1], gen_rtx_MEM (BLKmode, src_reg));
    create_integer_operand (&ops[2], 0);
*************** expand_builtin_strlen (tree exp, rtx tar
*** 3061,3067 ****
  
    /* Now that we are assured of success, expand the source.  */
    start_sequence ();
!   pat = expand_expr (src, src_reg, Pmode, EXPAND_NORMAL);
    if (pat != src_reg)
      {
  #ifdef POINTERS_EXTEND_UNSIGNED
--- 3763,3769 ----
  
    /* Now that we are assured of success, expand the source.  */
    start_sequence ();
!   rtx pat = expand_expr (src, src_reg, Pmode, EXPAND_NORMAL);
    if (pat != src_reg)
      {
  #ifdef POINTERS_EXTEND_UNSIGNED
*************** expand_builtin_strnlen (tree exp, rtx ta
*** 3105,3117 ****
    if (!bound)
      return NULL_RTX;
  
    location_t loc = UNKNOWN_LOCATION;
    if (EXPR_HAS_LOCATION (exp))
      loc = EXPR_LOCATION (exp);
  
-   tree maxobjsize = max_object_size ();
-   tree func = get_callee_fndecl (exp);
- 
    /* FIXME: Change c_strlen() to return sizetype instead of ssizetype
       so these conversions aren't necessary.  */
    c_strlen_data lendata = { };
--- 3807,3818 ----
    if (!bound)
      return NULL_RTX;
  
+   check_read_access (exp, src, bound);
+ 
    location_t loc = UNKNOWN_LOCATION;
    if (EXPR_HAS_LOCATION (exp))
      loc = EXPR_LOCATION (exp);
  
    /* FIXME: Change c_strlen() to return sizetype instead of ssizetype
       so these conversions aren't necessary.  */
    c_strlen_data lendata = { };
*************** expand_builtin_strnlen (tree exp, rtx ta
*** 3121,3168 ****
  
    if (TREE_CODE (bound) == INTEGER_CST)
      {
-       if (!TREE_NO_WARNING (exp)
- 	  && tree_int_cst_lt (maxobjsize, bound)
- 	  && warning_at (loc, OPT_Wstringop_overflow_,
- 			 "%K%qD specified bound %E "
- 			 "exceeds maximum object size %E",
- 			 exp, func, bound, maxobjsize))
- 	TREE_NO_WARNING (exp) = true;
- 
-       bool exact = true;
-       if (!len || TREE_CODE (len) != INTEGER_CST)
- 	{
- 	  /* Clear EXACT if LEN may be less than SRC suggests,
- 	     such as in
- 	       strnlen (&a[i], sizeof a)
- 	     where the value of i is unknown.  Unless i's value is
- 	     zero, the call is unsafe because the bound is greater. */
- 	  lendata.decl = unterminated_array (src, &len, &exact);
- 	  if (!lendata.decl)
- 	    return NULL_RTX;
- 	}
- 
-       if (lendata.decl && (tree_int_cst_lt (len, bound) || !exact))
- 	{
- 	  location_t warnloc
- 	    = expansion_point_location_if_in_system_header (loc);
- 
- 	  if (!TREE_NO_WARNING (exp)
- 	      && warning_at (warnloc, OPT_Wstringop_overflow_,
- 			     exact
- 			     ? G_("%K%qD specified bound %E exceeds the size "
- 				  "%E of unterminated array")
- 			     : G_("%K%qD specified bound %E may exceed the "
- 				  "size of at most %E of unterminated array"),
- 			     exp, func, bound, len))
- 	    {
- 	      inform (DECL_SOURCE_LOCATION (lendata.decl),
- 		      "referenced argument declared here");
- 	      TREE_NO_WARNING (exp) = true;
- 	    }
- 	  return NULL_RTX;
- 	}
- 
        if (!len)
  	return NULL_RTX;
  
--- 3822,3827 ----
*************** expand_builtin_strnlen (tree exp, rtx ta
*** 3178,3221 ****
    if (rng != VR_RANGE)
      return NULL_RTX;
  
-   if (!TREE_NO_WARNING (exp)
-       && wi::ltu_p (wi::to_wide (maxobjsize, min.get_precision ()), min)
-       && warning_at (loc, OPT_Wstringop_overflow_,
- 		     "%K%qD specified bound [%wu, %wu] "
- 		     "exceeds maximum object size %E",
- 		     exp, func, min.to_uhwi (), max.to_uhwi (), maxobjsize))
-     TREE_NO_WARNING (exp) = true;
- 
-   bool exact = true;
    if (!len || TREE_CODE (len) != INTEGER_CST)
      {
        lendata.decl = unterminated_array (src, &len, &exact);
        if (!lendata.decl)
  	return NULL_RTX;
      }
  
-   if (lendata.decl
-       && !TREE_NO_WARNING (exp)
-       && (wi::ltu_p (wi::to_wide (len), min)
- 	  || !exact))
-     {
-       location_t warnloc
- 	= expansion_point_location_if_in_system_header (loc);
- 
-       if (warning_at (warnloc, OPT_Wstringop_overflow_,
- 		      exact
- 		      ? G_("%K%qD specified bound [%wu, %wu] exceeds "
- 			   "the size %E of unterminated array")
- 		      : G_("%K%qD specified bound [%wu, %wu] may exceed "
- 			   "the size of at most %E of unterminated array"),
- 		      exp, func, min.to_uhwi (), max.to_uhwi (), len))
- 	{
- 	  inform (DECL_SOURCE_LOCATION (lendata.decl),
- 		  "referenced argument declared here");
- 	  TREE_NO_WARNING (exp) = true;
- 	}
-     }
- 
    if (lendata.decl)
      return NULL_RTX;
  
--- 3837,3850 ----
    if (rng != VR_RANGE)
      return NULL_RTX;
  
    if (!len || TREE_CODE (len) != INTEGER_CST)
      {
+       bool exact;
        lendata.decl = unterminated_array (src, &len, &exact);
        if (!lendata.decl)
  	return NULL_RTX;
      }
  
    if (lendata.decl)
      return NULL_RTX;
  
*************** determine_block_size (tree len, rtx len_
*** 3284,3295 ****
  	}
        else if (range_type == VR_ANTI_RANGE)
  	{
- 	  /* Anti range 0...N lets us to determine minimal size to N+1.  */
- 	  if (min == 0)
- 	    {
- 	      if (wi::fits_uhwi_p (max) && max.to_uhwi () + 1 != 0)
- 		*min_size = max.to_uhwi () + 1;
- 	    }
  	  /* Code like
  
  	     int n;
--- 3913,3918 ----
*************** determine_block_size (tree len, rtx len_
*** 3299,3305 ****
  	     Produce anti range allowing negative values of N.  We still
  	     can use the information and make a guess that N is not negative.
  	     */
! 	  else if (!wi::leu_p (max, 1 << 30) && wi::fits_uhwi_p (min))
  	    *probable_max_size = min.to_uhwi () - 1;
  	}
      }
--- 3922,3928 ----
  	     Produce anti range allowing negative values of N.  We still
  	     can use the information and make a guess that N is not negative.
  	     */
! 	  if (!wi::leu_p (max, 1 << 30) && wi::fits_uhwi_p (min))
  	    *probable_max_size = min.to_uhwi () - 1;
  	}
      }
*************** determine_block_size (tree len, rtx len_
*** 3308,3313 ****
--- 3931,4616 ----
  			  GET_MODE_MASK (GET_MODE (len_rtx)));
  }
  
+ /* Issue a warning OPT for a bounded call EXP with a bound in RANGE
+    accessing an object with SIZE.  */
+ 
+ static bool
+ maybe_warn_for_bound (int opt, location_t loc, tree exp, tree func,
+ 		      tree bndrng[2], tree size, const access_data *pad = NULL)
+ {
+   if (!bndrng[0] || TREE_NO_WARNING (exp))
+     return false;
+ 
+   tree maxobjsize = max_object_size ();
+ 
+   bool warned = false;
+ 
+   if (opt == OPT_Wstringop_overread)
+     {
+       bool maybe = pad && pad->src.phi ();
+ 
+       if (tree_int_cst_lt (maxobjsize, bndrng[0]))
+ 	{
+ 	  if (bndrng[0] == bndrng[1])
+ 	    warned = (func
+ 		      ? warning_at (loc, opt,
+ 				    (maybe
+ 				     ? G_("%K%qD specified bound %E may "
+ 					  "exceed maximum object size %E")
+ 				     : G_("%K%qD specified bound %E "
+ 					  "exceeds maximum object size %E")),
+ 				    exp, func, bndrng[0], maxobjsize)
+ 		      : warning_at (loc, opt,
+ 				    (maybe
+ 				     ? G_("%Kspecified bound %E may "
+ 					  "exceed maximum object size %E")
+ 				     : G_("%Kspecified bound %E "
+ 					  "exceeds maximum object size %E")),
+ 				    exp, bndrng[0], maxobjsize));
+ 	  else
+ 	    warned = (func
+ 		      ? warning_at (loc, opt,
+ 				    (maybe
+ 				     ? G_("%K%qD specified bound [%E, %E] may "
+ 					  "exceed maximum object size %E")
+ 				     : G_("%K%qD specified bound [%E, %E] "
+ 					  "exceeds maximum object size %E")),
+ 				    exp, func,
+ 				    bndrng[0], bndrng[1], maxobjsize)
+ 		      : warning_at (loc, opt,
+ 				    (maybe
+ 				     ? G_("%Kspecified bound [%E, %E] may "
+ 					  "exceed maximum object size %E")
+ 				     : G_("%Kspecified bound [%E, %E] "
+ 					  "exceeds maximum object size %E")),
+ 				    exp, bndrng[0], bndrng[1], maxobjsize));
+ 	}
+       else if (!size || tree_int_cst_le (bndrng[0], size))
+ 	return false;
+       else if (tree_int_cst_equal (bndrng[0], bndrng[1]))
+ 	warned = (func
+ 		  ? warning_at (loc, opt,
+ 				(maybe
+ 				 ? G_("%K%qD specified bound %E may exceed "
+ 				      "source size %E")
+ 				 : G_("%K%qD specified bound %E exceeds "
+ 				      "source size %E")),
+ 				exp, func, bndrng[0], size)
+ 		  : warning_at (loc, opt,
+ 				(maybe
+ 				 ? G_("%Kspecified bound %E may exceed "
+ 				      "source size %E")
+ 				 : G_("%Kspecified bound %E exceeds "
+ 				      "source size %E")),
+ 				exp, bndrng[0], size));
+       else
+ 	warned = (func
+ 		  ? warning_at (loc, opt,
+ 				(maybe
+ 				 ? G_("%K%qD specified bound [%E, %E] may "
+ 				      "exceed source size %E")
+ 				 : G_("%K%qD specified bound [%E, %E] exceeds "
+ 				      "source size %E")),
+ 				exp, func, bndrng[0], bndrng[1], size)
+ 		  : warning_at (loc, opt,
+ 				(maybe
+ 				 ? G_("%Kspecified bound [%E, %E] may exceed "
+ 				      "source size %E")
+ 				 : G_("%Kspecified bound [%E, %E] exceeds "
+ 				      "source size %E")),
+ 				exp, bndrng[0], bndrng[1], size));
+       if (warned)
+ 	{
+ 	  if (pad && pad->src.ref)
+ 	    {
+ 	      if (DECL_P (pad->src.ref))
+ 		inform (DECL_SOURCE_LOCATION (pad->src.ref),
+ 			"source object declared here");
+ 	      else if (EXPR_HAS_LOCATION (pad->src.ref))
+ 		inform (EXPR_LOCATION (pad->src.ref),
+ 			"source object allocated here");
+ 	    }
+ 	  TREE_NO_WARNING (exp) = true;
+ 	}
+ 
+       return warned;
+     }
+ 
+   bool maybe = pad && pad->dst.phi ();
+   if (tree_int_cst_lt (maxobjsize, bndrng[0]))
+     {
+       if (bndrng[0] == bndrng[1])
+ 	warned = (func
+ 		  ? warning_at (loc, opt,
+ 				(maybe
+ 				 ? G_("%K%qD specified size %E may "
+ 				      "exceed maximum object size %E")
+ 				 : G_("%K%qD specified size %E "
+ 				      "exceeds maximum object size %E")),
+ 				exp, func, bndrng[0], maxobjsize)
+ 		  : warning_at (loc, opt,
+ 				(maybe
+ 				 ? G_("%Kspecified size %E may exceed "
+ 				      "maximum object size %E")
+ 				 : G_("%Kspecified size %E exceeds "
+ 				      "maximum object size %E")),
+ 				exp, bndrng[0], maxobjsize));
+       else
+ 	warned = (func
+ 		  ? warning_at (loc, opt,
+ 				(maybe
+ 				 ? G_("%K%qD specified size between %E and %E "
+ 				      "may exceed maximum object size %E")
+ 				 : G_("%K%qD specified size between %E and %E "
+ 				      "exceeds maximum object size %E")),
+ 				exp, func,
+ 				bndrng[0], bndrng[1], maxobjsize)
+ 		  : warning_at (loc, opt,
+ 				(maybe
+ 				 ? G_("%Kspecified size between %E and %E "
+ 				      "may exceed maximum object size %E")
+ 				 : G_("%Kspecified size between %E and %E "
+ 				      "exceeds maximum object size %E")),
+ 				exp, bndrng[0], bndrng[1], maxobjsize));
+     }
+   else if (!size || tree_int_cst_le (bndrng[0], size))
+     return false;
+   else if (tree_int_cst_equal (bndrng[0], bndrng[1]))
+     warned = (func
+ 	      ? warning_at (loc, OPT_Wstringop_overflow_,
+ 			    (maybe
+ 			     ? G_("%K%qD specified bound %E may exceed "
+ 				  "destination size %E")
+ 			     : G_("%K%qD specified bound %E exceeds "
+ 				  "destination size %E")),
+ 			    exp, func, bndrng[0], size)
+ 	      : warning_at (loc, OPT_Wstringop_overflow_,
+ 			    (maybe
+ 			     ? G_("%Kspecified bound %E may exceed "
+ 				  "destination size %E")
+ 			     : G_("%Kspecified bound %E exceeds "
+ 				  "destination size %E")),
+ 			    exp, bndrng[0], size));
+   else
+     warned = (func
+ 	      ? warning_at (loc, OPT_Wstringop_overflow_,
+ 			    (maybe
+ 			     ? G_("%K%qD specified bound [%E, %E] may exceed "
+ 				  "destination size %E")
+ 			     : G_("%K%qD specified bound [%E, %E] exceeds "
+ 				  "destination size %E")),
+ 			    exp, func, bndrng[0], bndrng[1], size)
+ 	      : warning_at (loc, OPT_Wstringop_overflow_,
+ 			    (maybe
+ 			     ? G_("%Kspecified bound [%E, %E] exceeds "
+ 				  "destination size %E")
+ 			     : G_("%Kspecified bound [%E, %E] exceeds "
+ 				  "destination size %E")),
+ 			    exp, bndrng[0], bndrng[1], size));
+ 
+   if (warned)
+     {
+       if (pad && pad->dst.ref)
+ 	{
+ 	  if (DECL_P (pad->dst.ref))
+ 	    inform (DECL_SOURCE_LOCATION (pad->dst.ref),
+ 		    "destination object declared here");
+ 	  else if (EXPR_HAS_LOCATION (pad->dst.ref))
+ 	    inform (EXPR_LOCATION (pad->dst.ref),
+ 		    "destination object allocated here");
+ 	}
+       TREE_NO_WARNING (exp) = true;
+     }
+ 
+   return warned;
+ }
+ 
+ /* For an expression EXP issue an access warning controlled by option OPT
+    with access to a region SIZE bytes in size in the RANGE of sizes.
+    WRITE is true for a write access, READ for a read access, neither for
+    call that may or may not perform an access but for which the range
+    is expected to valid.
+    Returns true when a warning has been issued.  */
+ 
+ static bool
+ warn_for_access (location_t loc, tree func, tree exp, int opt, tree range[2],
+ 		 tree size, bool write, bool read, bool maybe)
+ {
+   bool warned = false;
+ 
+   if (write && read)
+     {
+       if (tree_int_cst_equal (range[0], range[1]))
+ 	warned = (func
+ 		  ? warning_n (loc, opt, tree_to_uhwi (range[0]),
+ 			       (maybe
+ 				? G_("%K%qD may access %E byte in a region "
+ 				     "of size %E")
+ 				: G_("%K%qD accessing %E byte in a region "
+ 				     "of size %E")),
+ 				(maybe
+ 				 ? G_ ("%K%qD may access %E bytes in a region "
+ 				       "of size %E")
+ 				 : G_ ("%K%qD accessing %E bytes in a region "
+ 				       "of size %E")),
+ 			       exp, func, range[0], size)
+ 		  : warning_n (loc, opt, tree_to_uhwi (range[0]),
+ 			       (maybe
+ 				? G_("%Kmay access %E byte in a region "
+ 				     "of size %E")
+ 				: G_("%Kaccessing %E byte in a region "
+ 				     "of size %E")),
+ 			       (maybe
+ 				? G_("%Kmay access %E bytes in a region "
+ 				     "of size %E")
+ 				: G_("%Kaccessing %E bytes in a region "
+ 				     "of size %E")),
+ 			       exp, range[0], size));
+       else if (tree_int_cst_sign_bit (range[1]))
+ 	{
+ 	  /* Avoid printing the upper bound if it's invalid.  */
+ 	  warned = (func
+ 		    ? warning_at (loc, opt,
+ 				  (maybe
+ 				   ? G_("%K%qD may access %E or more bytes "
+ 					"in a region of size %E")
+ 				   : G_("%K%qD accessing %E or more bytes "
+ 					"in a region of size %E")),
+ 				  exp, func, range[0], size)
+ 		    : warning_at (loc, opt,
+ 				  (maybe
+ 				   ? G_("%Kmay access %E or more bytes "
+ 					"in a region of size %E")
+ 				   : G_("%Kaccessing %E or more bytes "
+ 					"in a region of size %E")),
+ 				  exp, range[0], size));
+ 	}
+       else
+ 	warned = (func
+ 		  ? warning_at (loc, opt,
+ 				(maybe
+ 				 ? G_("%K%qD may access between %E and %E "
+ 				      "bytes in a region of size %E")
+ 				 : G_("%K%qD accessing between %E and %E "
+ 				      "bytes in a region of size %E")),
+ 				exp, func, range[0], range[1],
+ 				size)
+ 		  : warning_at (loc, opt,
+ 				(maybe
+ 				 ? G_("%Kmay access between %E and %E bytes "
+ 				      "in a region of size %E")
+ 				 : G_("%Kaccessing between %E and %E bytes "
+ 				      "in a region of size %E")),
+ 				exp, range[0], range[1],
+ 				size));
+       return warned;
+     }
+ 
+   if (write)
+     {
+       if (tree_int_cst_equal (range[0], range[1]))
+ 	warned = (func
+ 		  ? warning_n (loc, opt, tree_to_uhwi (range[0]),
+ 			       (maybe
+ 				? G_("%K%qD may write %E byte into a region "
+ 				     "of size %E")
+ 				: G_("%K%qD writing %E byte into a region "
+ 				     "of size %E overflows the destination")),
+ 			       (maybe
+ 				? G_("%K%qD may write %E bytes into a region "
+ 				     "of size %E")
+ 				: G_("%K%qD writing %E bytes into a region "
+ 				     "of size %E overflows the destination")),
+ 			       exp, func, range[0], size)
+ 		  : warning_n (loc, opt, tree_to_uhwi (range[0]),
+ 			       (maybe
+ 				? G_("%Kmay write %E byte into a region "
+ 				     "of size %E")
+ 				: G_("%Kwriting %E byte into a region "
+ 				     "of size %E overflows the destination")),
+ 			       (maybe
+ 				? G_("%Kmay write %E bytes into a region "
+ 				     "of size %E")
+ 				: G_("%Kwriting %E bytes into a region "
+ 				     "of size %E overflows the destination")),
+ 			       exp, range[0], size));
+       else if (tree_int_cst_sign_bit (range[1]))
+ 	{
+ 	  /* Avoid printing the upper bound if it's invalid.  */
+ 	  warned = (func
+ 		    ? warning_at (loc, opt,
+ 				  (maybe
+ 				   ? G_("%K%qD may write %E or more bytes "
+ 					"into a region of size %E")
+ 				   : G_("%K%qD writing %E or more bytes "
+ 					"into a region of size %E overflows "
+ 					"the destination")),
+ 				  exp, func, range[0], size)
+ 		    : warning_at (loc, opt,
+ 				  (maybe
+ 				   ? G_("%Kmay write %E or more bytes into "
+ 					"a region of size %E")
+ 				   : G_("%Kwriting %E or more bytes into "
+ 					"a region of size %E overflows "
+ 					"the destination")),
+ 				  exp, range[0], size));
+ 	}
+       else
+ 	warned = (func
+ 		  ? warning_at (loc, opt,
+ 				(maybe
+ 				 ? G_("%K%qD may write between %E and %E bytes "
+ 				      "into a region of size %E")
+ 				 : G_("%K%qD writing between %E and %E bytes "
+ 				      "into a region of size %E overflows "
+ 				      "the destination")),
+ 				exp, func, range[0], range[1],
+ 				size)
+ 		  : warning_at (loc, opt,
+ 				(maybe
+ 				 ? G_("%Kmay write between %E and %E bytes "
+ 				      "into a region of size %E")
+ 				 : G_("%Kwriting between %E and %E bytes "
+ 				      "into a region of size %E overflows "
+ 				      "the destination")),
+ 				exp, range[0], range[1],
+ 				size));
+       return warned;
+     }
+ 
+   if (read)
+     {
+       if (tree_int_cst_equal (range[0], range[1]))
+ 	warned = (func
+ 		  ? warning_n (loc, OPT_Wstringop_overread,
+ 			       tree_to_uhwi (range[0]),
+ 			       (maybe
+ 				? G_("%K%qD may read %E byte from a region "
+ 				     "of size %E")
+ 				: G_("%K%qD reading %E byte from a region "
+ 				     "of size %E")),
+ 			       (maybe
+ 				? G_("%K%qD may read %E bytes from a region "
+ 				     "of size %E")
+ 				: G_("%K%qD reading %E bytes from a region "
+ 				     "of size %E")),
+ 			       exp, func, range[0], size)
+ 		  : warning_n (loc, OPT_Wstringop_overread,
+ 			       tree_to_uhwi (range[0]),
+ 			       (maybe
+ 				? G_("%Kmay read %E byte from a region "
+ 				     "of size %E")
+ 				: G_("%Kreading %E byte from a region "
+ 				     "of size %E")),
+ 			       (maybe
+ 				? G_("%Kmay read %E bytes from a region "
+ 				     "of size %E")
+ 				: G_("%Kreading %E bytes from a region "
+ 				     "of size %E")),
+ 			       exp, range[0], size));
+       else if (tree_int_cst_sign_bit (range[1]))
+ 	{
+ 	  /* Avoid printing the upper bound if it's invalid.  */
+ 	  warned = (func
+ 		    ? warning_at (loc, OPT_Wstringop_overread,
+ 				  (maybe
+ 				   ? G_("%K%qD may read %E or more bytes "
+ 					"from a region of size %E")
+ 				   : G_("%K%qD reading %E or more bytes "
+ 					"from a region of size %E")),
+ 				  exp, func, range[0], size)
+ 		    : warning_at (loc, OPT_Wstringop_overread,
+ 				  (maybe
+ 				   ? G_("%Kmay read %E or more bytes "
+ 					"from a region of size %E")
+ 				   : G_("%Kreading %E or more bytes "
+ 					"from a region of size %E")),
+ 				  exp, range[0], size));
+ 	}
+       else
+ 	warned = (func
+ 		  ? warning_at (loc, OPT_Wstringop_overread,
+ 				(maybe
+ 				 ? G_("%K%qD may read between %E and %E bytes "
+ 				      "from a region of size %E")
+ 				 : G_("%K%qD reading between %E and %E bytes "
+ 				      "from a region of size %E")),
+ 				exp, func, range[0], range[1], size)
+ 		  : warning_at (loc, opt,
+ 				(maybe
+ 				 ? G_("%Kmay read between %E and %E bytes "
+ 				      "from a region of size %E")
+ 				 : G_("%Kreading between %E and %E bytes "
+ 				      "from a region of size %E")),
+ 				exp, range[0], range[1], size));
+ 
+       if (warned)
+ 	TREE_NO_WARNING (exp) = true;
+ 
+       return warned;
+     }
+ 
+   if (tree_int_cst_equal (range[0], range[1])
+       || tree_int_cst_sign_bit (range[1]))
+     warned = (func
+ 	      ? warning_n (loc, OPT_Wstringop_overread,
+ 			   tree_to_uhwi (range[0]),
+ 			   "%K%qD expecting %E byte in a region of size %E",
+ 			   "%K%qD expecting %E bytes in a region of size %E",
+ 			   exp, func, range[0], size)
+ 	      : warning_n (loc, OPT_Wstringop_overread,
+ 			   tree_to_uhwi (range[0]),
+ 			   "%Kexpecting %E byte in a region of size %E",
+ 			   "%Kexpecting %E bytes in a region of size %E",
+ 			   exp, range[0], size));
+   else if (tree_int_cst_sign_bit (range[1]))
+     {
+       /* Avoid printing the upper bound if it's invalid.  */
+       warned = (func
+ 		? warning_at (loc, OPT_Wstringop_overread,
+ 			      "%K%qD expecting %E or more bytes in a region "
+ 			      "of size %E",
+ 			      exp, func, range[0], size)
+ 		: warning_at (loc, OPT_Wstringop_overread,
+ 			      "%Kexpecting %E or more bytes in a region "
+ 			      "of size %E",
+ 			      exp, range[0], size));
+     }
+   else
+     warned = (func
+ 	      ? warning_at (loc, OPT_Wstringop_overread,
+ 			    "%K%qD expecting between %E and %E bytes in "
+ 			    "a region of size %E",
+ 			    exp, func, range[0], range[1], size)
+ 	      : warning_at (loc, OPT_Wstringop_overread,
+ 			    "%Kexpecting between %E and %E bytes in "
+ 			    "a region of size %E",
+ 			    exp, range[0], range[1], size));
+ 
+   if (warned)
+     TREE_NO_WARNING (exp) = true;
+ 
+   return warned;
+ }
+ 
+ /* Issue one inform message describing each target of an access REF.
+    WRITE is set for a write access and clear for a read access.  */
+ 
+ void
+ access_ref::inform_access (access_mode mode) const
+ {
+   const access_ref &aref = *this;
+   if (!aref.ref)
+     return;
+ 
+   if (aref.phi ())
+     {
+       /* Set MAXREF to refer to the largest object and fill ALL_REFS
+ 	 with data for all objects referenced by the PHI arguments.  */
+       access_ref maxref;
+       auto_vec<access_ref> all_refs;
+       if (!get_ref (&all_refs, &maxref))
+ 	return;
+ 
+       /* Except for MAXREF, the rest of the arguments' offsets need not
+ 	 reflect one added to the PHI itself.  Determine the latter from
+ 	 MAXREF on which the result is based.  */
+       const offset_int orng[] =
+ 	{
+ 	  offrng[0] - maxref.offrng[0],
+ 	  wi::smax (offrng[1] - maxref.offrng[1], offrng[0]),
+ 	};
+ 
+       /* Add the final PHI's offset to that of each of the arguments
+ 	 and recurse to issue an inform message for it.  */
+       for (unsigned i = 0; i != all_refs.length (); ++i)
+ 	{
+ 	  /* Skip any PHIs; those could lead to infinite recursion.  */
+ 	  if (all_refs[i].phi ())
+ 	    continue;
+ 
+ 	  all_refs[i].add_offset (orng[0], orng[1]);
+ 	  all_refs[i].inform_access (mode);
+ 	}
+       return;
+     }
+ 
+   /* Convert offset range and avoid including a zero range since it
+      isn't necessarily meaningful.  */
+   HOST_WIDE_INT diff_min = tree_to_shwi (TYPE_MIN_VALUE (ptrdiff_type_node));
+   HOST_WIDE_INT diff_max = tree_to_shwi (TYPE_MAX_VALUE (ptrdiff_type_node));
+   HOST_WIDE_INT minoff;
+   HOST_WIDE_INT maxoff = diff_max;
+   if (wi::fits_shwi_p (aref.offrng[0]))
+     minoff = aref.offrng[0].to_shwi ();
+   else
+     minoff = aref.offrng[0] < 0 ? diff_min : diff_max;
+ 
+   if (wi::fits_shwi_p (aref.offrng[1]))
+     maxoff = aref.offrng[1].to_shwi ();
+ 
+   if (maxoff <= diff_min || maxoff >= diff_max)
+     /* Avoid mentioning an upper bound that's equal to or in excess
+        of the maximum of ptrdiff_t.  */
+     maxoff = minoff;
+ 
+   /* Convert size range and always include it since all sizes are
+      meaningful. */
+   unsigned long long minsize = 0, maxsize = 0;
+   if (wi::fits_shwi_p (aref.sizrng[0])
+       && wi::fits_shwi_p (aref.sizrng[1]))
+     {
+       minsize = aref.sizrng[0].to_shwi ();
+       maxsize = aref.sizrng[1].to_shwi ();
+     }
+ 
+   /* SIZRNG doesn't necessarily have the same range as the allocation
+      size determined by gimple_call_alloc_size ().  */
+   char sizestr[80];
+   if (minsize == maxsize)
+     sprintf (sizestr, "%llu", minsize);
+   else
+     sprintf (sizestr, "[%llu, %llu]", minsize, maxsize);
+ 
+   char offstr[80];
+   if (minoff == 0
+       && (maxoff == 0 || aref.sizrng[1] <= maxoff))
+     offstr[0] = '\0';
+   else if (minoff == maxoff)
+     sprintf (offstr, "%lli", (long long) minoff);
+   else
+     sprintf (offstr, "[%lli, %lli]", (long long) minoff, (long long) maxoff);
+ 
+   location_t loc = UNKNOWN_LOCATION;
+ 
+   tree ref = this->ref;
+   tree allocfn = NULL_TREE;
+   if (TREE_CODE (ref) == SSA_NAME)
+     {
+       gimple *stmt = SSA_NAME_DEF_STMT (ref);
+       if (is_gimple_call (stmt))
+ 	{
+ 	  loc = gimple_location (stmt);
+ 	  if (gimple_call_builtin_p (stmt, BUILT_IN_ALLOCA_WITH_ALIGN))
+ 	    {
+ 	      /* Strip the SSA_NAME suffix from the variable name and
+ 		 recreate an identifier with the VLA's original name.  */
+ 	      ref = gimple_call_lhs (stmt);
+ 	      if (SSA_NAME_IDENTIFIER (ref))
+ 		{
+ 		  ref = SSA_NAME_IDENTIFIER (ref);
+ 		  const char *id = IDENTIFIER_POINTER (ref);
+ 		  size_t len = strcspn (id, ".$");
+ 		  if (!len)
+ 		    len = strlen (id);
+ 		  ref = get_identifier_with_length (id, len);
+ 		}
+ 	    }
+ 	  else
+ 	    {
+ 	      /* Except for VLAs, retrieve the allocation function.  */
+ 	      allocfn = gimple_call_fndecl (stmt);
+ 	      if (!allocfn)
+ 		allocfn = gimple_call_fn (stmt);
+ 	      if (TREE_CODE (allocfn) == SSA_NAME)
+ 		{
+ 		  /* For an ALLOC_CALL via a function pointer make a small
+ 		     effort to determine the destination of the pointer.  */
+ 		  gimple *def = SSA_NAME_DEF_STMT (allocfn);
+ 		  if (gimple_assign_single_p (def))
+ 		    {
+ 		      tree rhs = gimple_assign_rhs1 (def);
+ 		      if (DECL_P (rhs))
+ 			allocfn = rhs;
+ 		      else if (TREE_CODE (rhs) == COMPONENT_REF)
+ 			allocfn = TREE_OPERAND (rhs, 1);
+ 		    }
+ 		}
+ 	    }
+ 	}
+       else if (gimple_nop_p (stmt))
+ 	/* Handle DECL_PARM below.  */
+ 	ref = SSA_NAME_VAR (ref);
+     }
+ 
+   if (DECL_P (ref))
+     loc = DECL_SOURCE_LOCATION (ref);
+   else if (EXPR_P (ref) && EXPR_HAS_LOCATION (ref))
+     loc = EXPR_LOCATION (ref);
+   else if (TREE_CODE (ref) != IDENTIFIER_NODE
+ 	   && TREE_CODE (ref) != SSA_NAME)
+     return;
+ 
+   if (mode == access_read_write || mode == access_write_only)
+     {
+       if (allocfn == NULL_TREE)
+ 	{
+ 	  if (*offstr)
+ 	    inform (loc, "at offset %s into destination object %qE of size %s",
+ 		    offstr, ref, sizestr);
+ 	  else
+ 	    inform (loc, "destination object %qE of size %s", ref, sizestr);
+ 	  return;
+ 	}
+ 
+       if (*offstr)
+ 	inform (loc,
+ 		"at offset %s into destination object of size %s "
+ 		"allocated by %qE", offstr, sizestr, allocfn);
+       else
+ 	inform (loc, "destination object of size %s allocated by %qE",
+ 		sizestr, allocfn);
+       return;
+     }
+ 
+   if (allocfn == NULL_TREE)
+     {
+       if (*offstr)
+ 	inform (loc, "at offset %s into source object %qE of size %s",
+ 		offstr, ref, sizestr);
+       else
+ 	inform (loc, "source object %qE of size %s", ref, sizestr);
+ 
+       return;
+     }
+ 
+   if (*offstr)
+     inform (loc,
+ 	    "at offset %s into source object of size %s allocated by %qE",
+ 	    offstr, sizestr, allocfn);
+   else
+     inform (loc, "source object of size %s allocated by %qE",
+ 	    sizestr, allocfn);
+ }
+ 
+ /* Helper to set RANGE to the range of BOUND if it's nonnull, bounded
+    by BNDRNG if nonnull and valid.  */
+ 
+ static void
+ get_size_range (tree bound, tree range[2], const offset_int bndrng[2])
+ {
+   if (bound)
+     get_size_range (bound, range);
+ 
+   if (!bndrng || (bndrng[0] == 0 && bndrng[1] == HOST_WIDE_INT_M1U))
+     return;
+ 
+   if (range[0] && TREE_CODE (range[0]) == INTEGER_CST)
+     {
+       offset_int r[] =
+ 	{ wi::to_offset (range[0]), wi::to_offset (range[1]) };
+       if (r[0] < bndrng[0])
+ 	range[0] = wide_int_to_tree (sizetype, bndrng[0]);
+       if (bndrng[1] < r[1])
+ 	range[1] = wide_int_to_tree (sizetype, bndrng[1]);
+     }
+   else
+     {
+       range[0] = wide_int_to_tree (sizetype, bndrng[0]);
+       range[1] = wide_int_to_tree (sizetype, bndrng[1]);
+     }
+ }
+ 
  /* Try to verify that the sizes and lengths of the arguments to a string
     manipulation function given by EXP are within valid bounds and that
     the operation does not lead to buffer overflow or read past the end.
*************** determine_block_size (tree len, rtx len_
*** 3326,3356 ****
     like memcpy).  As an exception, SRCSTR can also be an integer denoting
     the precomputed size of the source string or object (for functions like
     memcpy).
!    DSTSIZE is the size of the destination object specified by the last
!    argument to the _chk builtins, typically resulting from the expansion
!    of __builtin_object_size (such as in __builtin___strcpy_chk(DST, SRC,
!    DSTSIZE).
  
     When DSTWRITE is null LEN is checked to verify that it doesn't exceed
     SIZE_MAX.
  
     If the call is successfully verified as safe return true, otherwise
     return false.  */
  
  bool
! check_access (tree exp, tree, tree, tree dstwrite,
! 	      tree maxread, tree srcstr, tree dstsize)
  {
-   int opt = OPT_Wstringop_overflow_;
- 
    /* The size of the largest object is half the address space, or
       PTRDIFF_MAX.  (This is way too permissive.)  */
    tree maxobjsize = max_object_size ();
  
!   /* Either the length of the source string for string functions or
!      the size of the source object for raw memory functions.  */
    tree slen = NULL_TREE;
  
    tree range[2] = { NULL_TREE, NULL_TREE };
  
    /* Set to true when the exact number of bytes written by a string
--- 4629,4665 ----
     like memcpy).  As an exception, SRCSTR can also be an integer denoting
     the precomputed size of the source string or object (for functions like
     memcpy).
!    DSTSIZE is the size of the destination object.
  
     When DSTWRITE is null LEN is checked to verify that it doesn't exceed
     SIZE_MAX.
  
+    WRITE is true for write accesses, READ is true for reads.  Both are
+    false for simple size checks in calls to functions that neither read
+    from nor write to the region.
+ 
+    When nonnull, PAD points to a more detailed description of the access.
+ 
     If the call is successfully verified as safe return true, otherwise
     return false.  */
  
  bool
! check_access (tree exp, tree dstwrite,
! 	      tree maxread, tree srcstr, tree dstsize,
! 	      access_mode mode, const access_data *pad /* = NULL */)
  {
    /* The size of the largest object is half the address space, or
       PTRDIFF_MAX.  (This is way too permissive.)  */
    tree maxobjsize = max_object_size ();
  
!   /* Either an approximate/minimum the length of the source string for
!      string functions or the size of the source object for raw memory
!      functions.  */
    tree slen = NULL_TREE;
  
+   /* The range of the access in bytes; first set to the write access
+      for functions that write and then read for those that also (or
+      just) read.  */
    tree range[2] = { NULL_TREE, NULL_TREE };
  
    /* Set to true when the exact number of bytes written by a string
*************** check_access (tree exp, tree, tree, tree
*** 3363,3368 ****
--- 4672,4679 ----
  	 it can be an integer denoting the length of a string.  */
        if (POINTER_TYPE_P (TREE_TYPE (srcstr)))
  	{
+ 	  if (!check_nul_terminated_array (exp, srcstr, maxread))
+ 	    return false;
  	  /* Try to determine the range of lengths the source string
  	     refers to.  If it can be determined and is less than
  	     the upper bound given by MAXREAD add one to it for
*************** check_access (tree exp, tree, tree, tree
*** 3372,3378 ****
  	  get_range_strlen (srcstr, &lendata, /* eltsize = */ 1);
  	  range[0] = lendata.minlen;
  	  range[1] = lendata.maxbound ? lendata.maxbound : lendata.maxlen;
! 	  if (range[0] && (!maxread || TREE_CODE (maxread) == INTEGER_CST))
  	    {
  	      if (maxread && tree_int_cst_le (maxread, range[0]))
  		range[0] = range[1] = maxread;
--- 4683,4692 ----
  	  get_range_strlen (srcstr, &lendata, /* eltsize = */ 1);
  	  range[0] = lendata.minlen;
  	  range[1] = lendata.maxbound ? lendata.maxbound : lendata.maxlen;
! 	  if (range[0]
! 	      && TREE_CODE (range[0]) == INTEGER_CST
! 	      && TREE_CODE (range[1]) == INTEGER_CST
! 	      && (!maxread || TREE_CODE (maxread) == INTEGER_CST))
  	    {
  	      if (maxread && tree_int_cst_le (maxread, range[0]))
  		range[0] = range[1] = maxread;
*************** check_access (tree exp, tree, tree, tree
*** 3414,3423 ****
    if (!dstsize)
      dstsize = maxobjsize;
  
!   if (dstwrite)
!     get_size_range (dstwrite, range);
  
    tree func = get_callee_fndecl (exp);
  
    /* First check the number of bytes to be written against the maximum
       object size.  */
--- 4728,4743 ----
    if (!dstsize)
      dstsize = maxobjsize;
  
!   /* Set RANGE to that of DSTWRITE if non-null, bounded by PAD->DST.BNDRNG
!      if valid.  */
!   get_size_range (dstwrite, range, pad ? pad->dst.bndrng : NULL);
  
    tree func = get_callee_fndecl (exp);
+   /* Read vs write access by built-ins can be determined from the const
+      qualifiers on the pointer argument.  In the absence of attribute
+      access, non-const qualified pointer arguments to user-defined
+      functions are assumed to both read and write the objects.  */
+   const bool builtin = func ? fndecl_built_in_p (func) : false;
  
    /* First check the number of bytes to be written against the maximum
       object size.  */
*************** check_access (tree exp, tree, tree, tree
*** 3425,3461 ****
        && TREE_CODE (range[0]) == INTEGER_CST
        && tree_int_cst_lt (maxobjsize, range[0]))
      {
!       if (TREE_NO_WARNING (exp))
! 	return false;
! 
!       location_t loc = tree_nonartificial_location (exp);
!       loc = expansion_point_location_if_in_system_header (loc);
! 
!       bool warned;
!       if (range[0] == range[1])
! 	warned = (func
! 		  ? warning_at (loc, opt,
! 				"%K%qD specified size %E "
! 				"exceeds maximum object size %E",
! 				exp, func, range[0], maxobjsize)
! 		  : warning_at (loc, opt,
! 				"%Kspecified size %E "
! 				"exceeds maximum object size %E",
! 				exp, range[0], maxobjsize));
!       else
! 	warned = (func
! 		  ? warning_at (loc, opt,
! 				"%K%qD specified size between %E and %E "
! 				"exceeds maximum object size %E",
! 				exp, func,
! 				range[0], range[1], maxobjsize)
! 		  : warning_at (loc, opt,
! 				"%Kspecified size between %E and %E "
! 				"exceeds maximum object size %E",
! 				exp, range[0], range[1], maxobjsize));
!       if (warned)
! 	TREE_NO_WARNING (exp) = true;
! 
        return false;
      }
  
--- 4745,4753 ----
        && TREE_CODE (range[0]) == INTEGER_CST
        && tree_int_cst_lt (maxobjsize, range[0]))
      {
!       location_t loc = tree_inlined_location (exp);
!       maybe_warn_for_bound (OPT_Wstringop_overflow_, loc, exp, func, range,
! 			    NULL_TREE, pad);
        return false;
      }
  
*************** check_access (tree exp, tree, tree, tree
*** 3475,3486 ****
  		  && tree_fits_uhwi_p (dstwrite)
  		  && tree_int_cst_lt (dstwrite, range[0]))))
  	{
! 	  if (TREE_NO_WARNING (exp))
  	    return false;
  
! 	  location_t loc = tree_nonartificial_location (exp);
! 	  loc = expansion_point_location_if_in_system_header (loc);
! 
  	  bool warned = false;
  	  if (dstwrite == slen && at_least_one)
  	    {
--- 4767,4777 ----
  		  && tree_fits_uhwi_p (dstwrite)
  		  && tree_int_cst_lt (dstwrite, range[0]))))
  	{
! 	  if (TREE_NO_WARNING (exp)
! 	      || (pad && pad->dst.ref && TREE_NO_WARNING (pad->dst.ref)))
  	    return false;
  
! 	  location_t loc = tree_inlined_location (exp);
  	  bool warned = false;
  	  if (dstwrite == slen && at_least_one)
  	    {
*************** check_access (tree exp, tree, tree, tree
*** 3488,3549 ****
  		 and a source of unknown length.  The call will write
  		 at least one byte past the end of the destination.  */
  	      warned = (func
! 			? warning_at (loc, opt,
  				      "%K%qD writing %E or more bytes into "
  				      "a region of size %E overflows "
  				      "the destination",
  				      exp, func, range[0], dstsize)
! 			: warning_at (loc, opt,
  				      "%Kwriting %E or more bytes into "
  				      "a region of size %E overflows "
  				      "the destination",
  				      exp, range[0], dstsize));
  	    }
! 	  else if (tree_int_cst_equal (range[0], range[1]))
! 	    warned = (func
! 		      ? warning_n (loc, opt, tree_to_uhwi (range[0]),
! 				   "%K%qD writing %E byte into a region "
! 				   "of size %E overflows the destination",
! 				   "%K%qD writing %E bytes into a region "
! 				   "of size %E overflows the destination",
! 				   exp, func, range[0], dstsize)
! 		      : warning_n (loc, opt, tree_to_uhwi (range[0]),
! 				   "%Kwriting %E byte into a region "
! 				   "of size %E overflows the destination",
! 				   "%Kwriting %E bytes into a region "
! 				   "of size %E overflows the destination",
! 				   exp, range[0], dstsize));
! 	  else if (tree_int_cst_sign_bit (range[1]))
  	    {
! 	      /* Avoid printing the upper bound if it's invalid.  */
! 	      warned = (func
! 			? warning_at (loc, opt,
! 				      "%K%qD writing %E or more bytes into "
! 				      "a region of size %E overflows "
! 				      "the destination",
! 				      exp, func, range[0], dstsize)
! 			: warning_at (loc, opt,
! 				      "%Kwriting %E or more bytes into "
! 				      "a region of size %E overflows "
! 				      "the destination",
! 				      exp, range[0], dstsize));
  	    }
! 	  else
! 	    warned = (func
! 		      ? warning_at (loc, opt,
! 				    "%K%qD writing between %E and %E bytes "
! 				    "into a region of size %E overflows "
! 				    "the destination",
! 				    exp, func, range[0], range[1],
! 				    dstsize)
! 		      : warning_at (loc, opt,
! 				    "%Kwriting between %E and %E bytes "
! 				    "into a region of size %E overflows "
! 				    "the destination",
! 				    exp, range[0], range[1],
! 				    dstsize));
  	  if (warned)
! 	    TREE_NO_WARNING (exp) = true;
  
  	  /* Return error when an overflow has been detected.  */
  	  return false;
--- 4779,4814 ----
  		 and a source of unknown length.  The call will write
  		 at least one byte past the end of the destination.  */
  	      warned = (func
! 			? warning_at (loc, OPT_Wstringop_overflow_,
  				      "%K%qD writing %E or more bytes into "
  				      "a region of size %E overflows "
  				      "the destination",
  				      exp, func, range[0], dstsize)
! 			: warning_at (loc, OPT_Wstringop_overflow_,
  				      "%Kwriting %E or more bytes into "
  				      "a region of size %E overflows "
  				      "the destination",
  				      exp, range[0], dstsize));
  	    }
! 	  else
  	    {
! 	      const bool read
! 		= mode == access_read_only || mode == access_read_write;
! 	      const bool write
! 		= mode == access_write_only || mode == access_read_write;
! 	      const bool maybe = pad && pad->dst.parmarray;
! 	      warned = warn_for_access (loc, func, exp,
! 					OPT_Wstringop_overflow_,
! 					range, dstsize,
! 					write, read && !builtin, maybe);
  	    }
! 
  	  if (warned)
! 	    {
! 	      TREE_NO_WARNING (exp) = true;
! 	      if (pad)
! 		pad->dst.inform_access (pad->mode);
! 	    }
  
  	  /* Return error when an overflow has been detected.  */
  	  return false;
*************** check_access (tree exp, tree, tree, tree
*** 3555,3707 ****
       of an object.  */
    if (maxread)
      {
!       get_size_range (maxread, range);
!       if (range[0] && dstsize && tree_fits_uhwi_p (dstsize))
! 	{
! 	  location_t loc = tree_nonartificial_location (exp);
! 	  loc = expansion_point_location_if_in_system_header (loc);
  
  	  if (tree_int_cst_lt (maxobjsize, range[0]))
  	    {
! 	      if (TREE_NO_WARNING (exp))
! 		return false;
! 
! 	      bool warned = false;
! 
! 	      /* Warn about crazy big sizes first since that's more
! 		 likely to be meaningful than saying that the bound
! 		 is greater than the object size if both are big.  */
! 	      if (range[0] == range[1])
! 		warned = (func
! 			  ? warning_at (loc, opt,
! 					"%K%qD specified bound %E "
! 					"exceeds maximum object size %E",
! 					exp, func, range[0], maxobjsize)
! 			  : warning_at (loc, opt,
! 					"%Kspecified bound %E "
! 					"exceeds maximum object size %E",
! 					exp, range[0], maxobjsize));
! 	      else
! 		warned = (func
! 			  ? warning_at (loc, opt,
! 					"%K%qD specified bound between "
! 					"%E and %E exceeds maximum object "
! 					"size %E",
! 					exp, func,
! 					range[0], range[1], maxobjsize)
! 			  : warning_at (loc, opt,
! 					"%Kspecified bound between "
! 					"%E and %E exceeds maximum object "
! 					"size %E",
! 					exp, range[0], range[1], maxobjsize));
! 	      if (warned)
! 		TREE_NO_WARNING (exp) = true;
! 
  	      return false;
  	    }
  
! 	  if (dstsize != maxobjsize && tree_int_cst_lt (dstsize, range[0]))
  	    {
! 	      if (TREE_NO_WARNING (exp))
! 		return false;
! 
! 	      bool warned = false;
! 
! 	      if (tree_int_cst_equal (range[0], range[1]))
! 		warned = (func
! 			  ? warning_at (loc, opt,
! 					"%K%qD specified bound %E "
! 					"exceeds destination size %E",
! 					exp, func,
! 					range[0], dstsize)
! 			  : warning_at (loc, opt,
! 					"%Kspecified bound %E "
! 					"exceeds destination size %E",
! 					exp, range[0], dstsize));
! 	      else
! 		warned = (func
! 			  ? warning_at (loc, opt,
! 					"%K%qD specified bound between %E "
! 					"and %E exceeds destination size %E",
! 					exp, func,
! 					range[0], range[1], dstsize)
! 			  : warning_at (loc, opt,
! 					"%Kspecified bound between %E "
! 					"and %E exceeds destination size %E",
! 					exp,
! 					range[0], range[1], dstsize));
! 	      if (warned)
! 		TREE_NO_WARNING (exp) = true;
! 
  	      return false;
  	    }
  	}
      }
  
    /* Check for reading past the end of SRC.  */
!   if (slen
!       && slen == srcstr
!       && dstwrite && range[0]
!       && tree_int_cst_lt (slen, range[0]))
      {
!       if (TREE_NO_WARNING (exp))
! 	return false;
  
!       bool warned = false;
!       location_t loc = tree_nonartificial_location (exp);
!       loc = expansion_point_location_if_in_system_header (loc);
  
!       if (tree_int_cst_equal (range[0], range[1]))
! 	warned = (func
! 		  ? warning_n (loc, opt, tree_to_uhwi (range[0]),
! 			       "%K%qD reading %E byte from a region of size %E",
! 			       "%K%qD reading %E bytes from a region of size %E",
! 			       exp, func, range[0], slen)
! 		  : warning_n (loc, opt, tree_to_uhwi (range[0]),
! 			       "%Kreading %E byte from a region of size %E",
! 			       "%Kreading %E bytes from a region of size %E",
! 			       exp, range[0], slen));
!       else if (tree_int_cst_sign_bit (range[1]))
  	{
! 	  /* Avoid printing the upper bound if it's invalid.  */
! 	  warned = (func
! 		    ? warning_at (loc, opt,
! 				  "%K%qD reading %E or more bytes from a region "
! 				  "of size %E",
! 				  exp, func, range[0], slen)
! 		    : warning_at (loc, opt,
! 				  "%Kreading %E or more bytes from a region "
! 				  "of size %E",
! 				  exp, range[0], slen));
  	}
-       else
- 	warned = (func
- 		  ? warning_at (loc, opt,
- 				"%K%qD reading between %E and %E bytes from "
- 				"a region of size %E",
- 				exp, func, range[0], range[1], slen)
- 		  : warning_at (loc, opt,
- 				"%Kreading between %E and %E bytes from "
- 				"a region of size %E",
- 				exp, range[0], range[1], slen));
-       if (warned)
- 	TREE_NO_WARNING (exp) = true;
- 
        return false;
      }
  
    return true;
  }
  
  /* If STMT is a call to an allocation function, returns the constant
!    size of the object allocated by the call represented as sizetype.
!    If nonnull, sets RNG1[] to the range of the size.  */
  
  tree
  gimple_call_alloc_size (gimple *stmt, wide_int rng1[2] /* = NULL */,
! 			const vr_values *rvals /* = NULL */)
  {
!   if (!stmt)
      return NULL_TREE;
  
    tree allocfntype;
--- 4820,4934 ----
       of an object.  */
    if (maxread)
      {
!       /* Set RANGE to that of MAXREAD, bounded by PAD->SRC.BNDRNG if
! 	 PAD is nonnull and BNDRNG is valid.  */
!       get_size_range (maxread, range, pad ? pad->src.bndrng : NULL);
! 
!       location_t loc = tree_inlined_location (exp);
!       tree size = dstsize;
!       if (pad && pad->mode == access_read_only)
! 	size = wide_int_to_tree (sizetype, pad->src.sizrng[1]);
  
+       if (range[0] && maxread && tree_fits_uhwi_p (size))
+ 	{
  	  if (tree_int_cst_lt (maxobjsize, range[0]))
  	    {
! 	      maybe_warn_for_bound (OPT_Wstringop_overread, loc, exp, func,
! 				    range, size, pad);
  	      return false;
  	    }
  
! 	  if (size != maxobjsize && tree_int_cst_lt (size, range[0]))
  	    {
! 	      int opt = (dstwrite || mode != access_read_only
! 			 ? OPT_Wstringop_overflow_
! 			 : OPT_Wstringop_overread);
! 	      maybe_warn_for_bound (opt, loc, exp, func, range, size, pad);
  	      return false;
  	    }
  	}
+ 
+       maybe_warn_nonstring_arg (func, exp);
      }
  
    /* Check for reading past the end of SRC.  */
!   bool overread = (slen
! 		   && slen == srcstr
! 		   && dstwrite
! 		   && range[0]
! 		   && TREE_CODE (slen) == INTEGER_CST
! 		   && tree_int_cst_lt (slen, range[0]));
!   /* If none is determined try to get a better answer based on the details
!      in PAD.  */
!   if (!overread
!       && pad
!       && pad->src.sizrng[1] >= 0
!       && pad->src.offrng[0] >= 0
!       && (pad->src.offrng[1] < 0
! 	  || pad->src.offrng[0] <= pad->src.offrng[1]))
      {
!       /* Set RANGE to that of MAXREAD, bounded by PAD->SRC.BNDRNG if
! 	 PAD is nonnull and BNDRNG is valid.  */
!       get_size_range (maxread, range, pad ? pad->src.bndrng : NULL);
!       /* Set OVERREAD for reads starting just past the end of an object.  */
!       overread = pad->src.sizrng[1] - pad->src.offrng[0] < pad->src.bndrng[0];
!       range[0] = wide_int_to_tree (sizetype, pad->src.bndrng[0]);
!       slen = size_zero_node;
!     }
  
!   if (overread)
!     {
!       if (TREE_NO_WARNING (exp)
! 	  || (srcstr && TREE_NO_WARNING (srcstr))
! 	  || (pad && pad->src.ref && TREE_NO_WARNING (pad->src.ref)))
! 	return false;
  
!       location_t loc = tree_inlined_location (exp);
!       const bool read
! 	= mode == access_read_only || mode == access_read_write;
!       const bool maybe = pad && pad->dst.parmarray;
!       if (warn_for_access (loc, func, exp, OPT_Wstringop_overread, range,
! 			   slen, false, read, maybe))
  	{
! 	  TREE_NO_WARNING (exp) = true;
! 	  if (pad)
! 	    pad->src.inform_access (access_read_only);
  	}
        return false;
      }
  
    return true;
  }
  
+ /* A convenience wrapper for check_access above to check access
+    by a read-only function like puts.  */
+ 
+ static bool
+ check_read_access (tree exp, tree src, tree bound /* = NULL_TREE */,
+ 		   int ost /* = 1 */)
+ {
+   if (!warn_stringop_overread)
+     return true;
+ 
+   access_data data (exp, access_read_only, NULL_TREE, false, bound, true);
+   compute_objsize (src, ost, &data.src);
+   return check_access (exp, /*dstwrite=*/ NULL_TREE, /*maxread=*/ bound,
+ 		       /*srcstr=*/ src, /*dstsize=*/ NULL_TREE, data.mode,
+ 		       &data);
+ }
+ 
  /* If STMT is a call to an allocation function, returns the constant
!    maximum size of the object allocated by the call represented as
!    sizetype.  If nonnull, sets RNG1[] to the range of the size.
!    When nonnull, uses RVALS for range information, otherwise calls
!    get_range_info to get it.
!    Returns null when STMT is not a call to a valid allocation function.  */
  
  tree
  gimple_call_alloc_size (gimple *stmt, wide_int rng1[2] /* = NULL */,
! 			range_query * /* = NULL */)
  {
!   if (!stmt || !is_gimple_call (stmt))
      return NULL_TREE;
  
    tree allocfntype;
*************** gimple_call_alloc_size (gimple *stmt, wi
*** 3751,3758 ****
    if (!rng1)
      rng1 = rng1_buf;
  
!   if (!get_range (size, rng1, rvals))
!     return NULL_TREE;
  
    if (argidx2 > nargs && TREE_CODE (size) == INTEGER_CST)
      return fold_convert (sizetype, size);
--- 4978,4994 ----
    if (!rng1)
      rng1 = rng1_buf;
  
!   /* Use maximum precision to avoid overflow below.  */
!   const int prec = ADDR_MAX_PRECISION;
! 
!   {
!     tree r[2];
!     /* Determine the largest valid range size, including zero.  */
!     if (!get_size_range (size, r, SR_ALLOW_ZERO | SR_USE_LARGEST))
!       return NULL_TREE;
!     rng1[0] = wi::to_wide (r[0], prec);
!     rng1[1] = wi::to_wide (r[1], prec);
!   }
  
    if (argidx2 > nargs && TREE_CODE (size) == INTEGER_CST)
      return fold_convert (sizetype, size);
*************** gimple_call_alloc_size (gimple *stmt, wi
*** 3761,4129 ****
       of the upper bounds as a constant.  Ignore anti-ranges.  */
    tree n = argidx2 < nargs ? gimple_call_arg (stmt, argidx2) : integer_one_node;
    wide_int rng2[2];
!   if (!get_range (n, rng2, rvals))
!     return NULL_TREE;
! 
!   /* Extend to the maximum precision to avoid overflow.  */
!   const int prec = ADDR_MAX_PRECISION;
!   rng1[0] = wide_int::from (rng1[0], prec, UNSIGNED);
!   rng1[1] = wide_int::from (rng1[1], prec, UNSIGNED);
!   rng2[0] = wide_int::from (rng2[0], prec, UNSIGNED);
!   rng2[1] = wide_int::from (rng2[1], prec, UNSIGNED);
  
    /* Compute products of both bounds for the caller but return the lesser
       of SIZE_MAX and the product of the upper bounds as a constant.  */
    rng1[0] = rng1[0] * rng2[0];
    rng1[1] = rng1[1] * rng2[1];
!   tree size_max = TYPE_MAX_VALUE (sizetype);
    if (wi::gtu_p (rng1[1], wi::to_wide (size_max, prec)))
      {
!       rng1[1] = wi::to_wide (size_max);
        return size_max;
      }
  
    return wide_int_to_tree (sizetype, rng1[1]);
  }
  
! /* Helper for compute_objsize.  Returns the constant size of the DEST
!    if it refers to a variable or field and sets *PDECL to the DECL and
!    *POFF to zero.  Otherwise returns null for other nodes.  */
  
! static tree
! addr_decl_size (tree dest, tree *pdecl, tree *poff)
  {
!   if (TREE_CODE (dest) == ADDR_EXPR)
!     dest = TREE_OPERAND (dest, 0);
  
!   if (DECL_P (dest))
      {
!       *pdecl = dest;
!       *poff = integer_zero_node;
!       if (tree size = DECL_SIZE_UNIT (dest))
! 	return TREE_CODE (size) == INTEGER_CST ? size : NULL_TREE;
      }
  
!   if (TREE_CODE (dest) == COMPONENT_REF)
      {
!       *pdecl = TREE_OPERAND (dest, 1);
!       *poff = integer_zero_node;
!       /* Only return constant sizes for now while callers depend on it.  */
!       if (tree size = component_ref_size (dest))
! 	return TREE_CODE (size) == INTEGER_CST ? size : NULL_TREE;
      }
  
    return NULL_TREE;
  }
  
! /* Helper to compute the size of the object referenced by the DEST
     expression which must have pointer type, using Object Size type
     OSTYPE (only the least significant 2 bits are used).
!    Returns an estimate of the size of the object represented as
!    a sizetype constant if successful or NULL when the size cannot
!    be determined.
!    When the referenced object involves a non-constant offset in some
!    range the returned value represents the largest size given the
!    smallest non-negative offset in the range.
!    If nonnull, sets *PDECL to the decl of the referenced subobject
!    if it can be determined, or to null otherwise.  Likewise, when
!    POFF is nonnull *POFF is set to the offset into *PDECL.
  
     The function is intended for diagnostics and should not be used
     to influence code generation or optimization.  */
  
! tree
! compute_objsize (tree dest, int ostype, tree *pdecl /* = NULL */,
! 		 tree *poff /* = NULL */, const vr_values *rvals /* = NULL */)
  {
!   tree dummy_decl = NULL_TREE;
!   if (!pdecl)
!     pdecl = &dummy_decl;
  
!   tree dummy_off = NULL_TREE;
!   if (!poff)
!     poff = &dummy_off;
  
!   /* Only the two least significant bits are meaningful.  */
!   ostype &= 3;
  
!   if (ostype)
!     /* Except for overly permissive calls to memcpy and other raw
!        memory functions with zero OSTYPE, detect the size from simple
!        DECLs first to more reliably than compute_builtin_object_size
!        set *PDECL and *POFF.  */
!     if (tree size = addr_decl_size (dest, pdecl, poff))
!       return size;
  
!   unsigned HOST_WIDE_INT size;
!   if (compute_builtin_object_size (dest, ostype, &size, pdecl, poff))
!     return build_int_cst (sizetype, size);
  
!   if (TREE_CODE (dest) == SSA_NAME)
      {
!       gimple *stmt = SSA_NAME_DEF_STMT (dest);
!       if (is_gimple_call (stmt))
  	{
! 	  /* If STMT is a call to an allocation function get the size
! 	     from its argument(s).  If successful, also set *PDECL to
! 	     DEST for the caller to include in diagnostics.  */
! 	  if (tree size = gimple_call_alloc_size (stmt))
! 	    {
! 	      *pdecl = dest;
! 	      *poff = integer_zero_node;
! 	      return size;
! 	    }
! 	  return NULL_TREE;
  	}
  
!       if (!is_gimple_assign (stmt))
! 	return NULL_TREE;
  
!       dest = gimple_assign_rhs1 (stmt);
  
!       tree_code code = gimple_assign_rhs_code (stmt);
!       if (code == POINTER_PLUS_EXPR)
  	{
! 	  /* compute_builtin_object_size fails for addresses with
! 	     non-constant offsets.  Try to determine the range of
! 	     such an offset here and use it to adjust the constant
! 	     size.  */
! 	  tree off = gimple_assign_rhs2 (stmt);
! 	  if (TREE_CODE (off) == INTEGER_CST)
! 	    {
! 	      if (tree size = compute_objsize (dest, ostype, pdecl, poff))
! 		{
! 		  wide_int wioff = wi::to_wide (off);
! 		  wide_int wisiz = wi::to_wide (size);
  
! 		  /* Ignore negative offsets for now.  For others,
! 		     use the lower bound as the most optimistic
! 		     estimate of the (remaining) size.  */
! 		  if (wi::neg_p (wioff))
! 		    ;
! 		  else
! 		    {
! 		      if (*poff)
! 			{
! 			  *poff = fold_convert (ptrdiff_type_node, *poff);
! 			  off = fold_convert (ptrdiff_type_node, *poff);
! 			  *poff = size_binop (PLUS_EXPR, *poff, off);
! 			}
! 		      else
! 			*poff = off;
! 		      if (wi::ltu_p (wioff, wisiz))
! 			return wide_int_to_tree (TREE_TYPE (size),
! 						 wi::sub (wisiz, wioff));
! 		      return size_zero_node;
! 		    }
! 		}
! 	    }
! 	  else if (TREE_CODE (off) == SSA_NAME
! 		   && INTEGRAL_TYPE_P (TREE_TYPE (off)))
! 	    {
! 	      wide_int min, max;
! 	      enum value_range_kind rng = get_range_info (off, &min, &max);
  
! 	      if (rng == VR_RANGE)
! 		if (tree size = compute_objsize (dest, ostype, pdecl, poff))
! 		  {
! 		    wide_int wisiz = wi::to_wide (size);
  
! 		    /* Ignore negative offsets for now.  For others,
! 		       use the lower bound as the most optimistic
! 		       estimate of the (remaining)size.  */
! 		    if (wi::neg_p (min) || wi::neg_p (max))
! 		      ;
! 		    else
! 		      {
! 			/* FIXME: For now, since the offset is non-constant,
! 			   clear *POFF to keep it from being "misused."
! 			   Eventually *POFF will need to become a range that
! 			   can be properly added to the outer offset if it
! 			   too is one.  */
! 			*poff = NULL_TREE;
! 			if (wi::ltu_p (min, wisiz))
! 			  return wide_int_to_tree (TREE_TYPE (size),
! 						   wi::sub (wisiz, min));
! 			return size_zero_node;
! 		      }
! 		  }
! 	    }
! 	}
!       else if (code != ADDR_EXPR)
! 	return NULL_TREE;
      }
  
!   /* Unless computing the largest size (for memcpy and other raw memory
!      functions), try to determine the size of the object from its type.  */
!   if (!ostype)
!     return NULL_TREE;
  
!   if (TREE_CODE (dest) == ARRAY_REF
!       || TREE_CODE (dest) == MEM_REF)
      {
!       tree ref = TREE_OPERAND (dest, 0);
!       tree reftype = TREE_TYPE (ref);
!       if (TREE_CODE (dest) == MEM_REF && TREE_CODE (reftype) == POINTER_TYPE)
! 	{
! 	  /* Give up for MEM_REFs of vector types; those may be synthesized
! 	     from multiple assignments to consecutive data members.  See PR
! 	     93200.
! 	     FIXME: Deal with this more generally, e.g., by marking up such
! 	     MEM_REFs at the time they're created.  */
! 	  reftype = TREE_TYPE (reftype);
! 	  if (TREE_CODE (reftype) == VECTOR_TYPE)
! 	    return NULL_TREE;
! 	}
!       tree off = TREE_OPERAND (dest, 1);
!       if (tree size = compute_objsize (ref, ostype, pdecl, poff))
! 	{
! 	  /* If the declaration of the destination object is known
! 	     to have zero size, return zero.  */
! 	  if (integer_zerop (size)
! 	      && *pdecl && DECL_P (*pdecl)
! 	      && *poff && integer_zerop (*poff))
! 	    return size_zero_node;
  
! 	  /* A valid offset into a declared object cannot be negative.
! 	     A zero size with a zero "inner" offset is still zero size
! 	     regardless of the "other" offset OFF.  */
! 	  if (*poff
! 	      && ((integer_zerop (*poff) && integer_zerop (size))
! 		  || (TREE_CODE (*poff) == INTEGER_CST
! 		      && tree_int_cst_sgn (*poff) < 0)))
! 	    return size_zero_node;
  
! 	  wide_int offrng[2];
! 	  if (!get_range (off, offrng, rvals))
! 	    return NULL_TREE;
  
! 	  /* Convert to the same precision to keep wide_int from "helpfully"
! 	     crashing whenever it sees other arguments.  */
! 	  const unsigned sizprec = TYPE_PRECISION (sizetype);
! 	  offrng[0] = wide_int::from (offrng[0], sizprec, SIGNED);
! 	  offrng[1] = wide_int::from (offrng[1], sizprec, SIGNED);
  
! 	  /* Adjust SIZE either up or down by the sum of *POFF and OFF
! 	     above.  */
! 	  if (TREE_CODE (dest) == ARRAY_REF)
  	    {
! 	      tree lowbnd = array_ref_low_bound (dest);
! 	      if (!integer_zerop (lowbnd) && tree_fits_uhwi_p (lowbnd))
! 		{
! 		  /* Adjust the offset by the low bound of the array
! 		     domain (normally zero but 1 in Fortran).  */
! 		  unsigned HOST_WIDE_INT lb = tree_to_uhwi (lowbnd);
! 		  offrng[0] -= lb;
! 		  offrng[1] -= lb;
! 		}
  
! 	      /* Convert the array index into a byte offset.  */
! 	      tree eltype = TREE_TYPE (dest);
! 	      tree tpsize = TYPE_SIZE_UNIT (eltype);
! 	      if (tpsize && TREE_CODE (tpsize) == INTEGER_CST)
  		{
! 		  wide_int wsz = wi::to_wide (tpsize, offrng->get_precision ());
! 		  offrng[0] *= wsz;
! 		  offrng[1] *= wsz;
  		}
  	      else
! 		return NULL_TREE;
  	    }
  
! 	  wide_int wisize = wi::to_wide (size);
! 
! 	  if (!*poff)
  	    {
! 	      /* If the "inner" offset is unknown and the "outer" offset
! 		 is either negative or less than SIZE, return the size
! 		 minus the offset.  This may be overly optimistic in
! 		 the first case if the inner offset happens to be less
! 		 than the absolute value of the outer offset.  */
! 	      if (wi::neg_p (offrng[0]))
! 		return size;
! 	      if (wi::ltu_p (offrng[0], wisize))
! 		return build_int_cst (sizetype, (wisize - offrng[0]).to_uhwi ());
! 	      return size_zero_node;
  	    }
  
! 	  /* Convert to the same precision to keep wide_int from "helpfuly"
! 	     crashing whenever it sees other argumments.  */
! 	  offrng[0] = wide_int::from (offrng[0], sizprec, SIGNED);
! 	  offrng[1] = wide_int::from (offrng[1], sizprec, SIGNED);
  
! 	  tree dstoff = *poff;
! 	  if (integer_zerop (*poff))
! 	    *poff = off;
! 	  else if (!integer_zerop (off))
! 	    {
! 	      *poff = fold_convert (ptrdiff_type_node, *poff);
! 	      off = fold_convert (ptrdiff_type_node, off);
! 	      *poff = size_binop (PLUS_EXPR, *poff, off);
! 	    }
  
! 	  if (!wi::neg_p (offrng[0]))
! 	    {
! 	      if (TREE_CODE (size) != INTEGER_CST)
! 		return NULL_TREE;
  
! 	      /* Return the difference between the size and the offset
! 		 or zero if the offset is greater.  */
! 	      wide_int wisize = wi::to_wide (size, sizprec);
! 	      if (wi::ltu_p (wisize, offrng[0]))
! 		return size_zero_node;
  
! 	      return wide_int_to_tree (sizetype, wisize - offrng[0]);
! 	    }
  
! 	  wide_int dstoffrng[2];
! 	  if (TREE_CODE (dstoff) == INTEGER_CST)
! 	    dstoffrng[0] = dstoffrng[1] = wi::to_wide (dstoff);
! 	  else if (TREE_CODE (dstoff) == SSA_NAME)
! 	    {
! 	      enum value_range_kind rng
! 		= get_range_info (dstoff, dstoffrng, dstoffrng + 1);
! 	      if (rng != VR_RANGE)
! 		return NULL_TREE;
! 	    }
  	  else
! 	    return NULL_TREE;
  
! 	  dstoffrng[0] = wide_int::from (dstoffrng[0], sizprec, SIGNED);
! 	  dstoffrng[1] = wide_int::from (dstoffrng[1], sizprec, SIGNED);
  
! 	  if (!wi::neg_p (dstoffrng[0]))
! 	    wisize += dstoffrng[0];
  
! 	  offrng[1] += dstoffrng[1];
! 	  if (wi::neg_p (offrng[1]))
! 	    return size_zero_node;
  
! 	  return wide_int_to_tree (sizetype, wisize);
! 	}
  
!       return NULL_TREE;
!     }
  
!   /* Try simple DECLs not handled above.  */
!   if (tree size = addr_decl_size (dest, pdecl, poff))
!     return size;
  
!   tree type = TREE_TYPE (dest);
!   if (TREE_CODE (type) == POINTER_TYPE)
!     type = TREE_TYPE (type);
  
!   type = TYPE_MAIN_VARIANT (type);
!   if (TREE_CODE (dest) == ADDR_EXPR)
!     dest = TREE_OPERAND (dest, 0);
  
!   if (TREE_CODE (type) == ARRAY_TYPE
!       && !array_at_struct_end_p (dest))
!     {
!       if (tree size = TYPE_SIZE_UNIT (type))
! 	return TREE_CODE (size) == INTEGER_CST ? size : NULL_TREE;
!     }
  
!   return NULL_TREE;
  }
  
  /* Helper to determine and check the sizes of the source and the destination
--- 4997,5852 ----
       of the upper bounds as a constant.  Ignore anti-ranges.  */
    tree n = argidx2 < nargs ? gimple_call_arg (stmt, argidx2) : integer_one_node;
    wide_int rng2[2];
!   {
!     tree r[2];
!       /* As above, use the full non-negative range on failure.  */
!     if (!get_size_range (n, r, SR_ALLOW_ZERO | SR_USE_LARGEST))
!       return NULL_TREE;
!     rng2[0] = wi::to_wide (r[0], prec);
!     rng2[1] = wi::to_wide (r[1], prec);
!   }
  
    /* Compute products of both bounds for the caller but return the lesser
       of SIZE_MAX and the product of the upper bounds as a constant.  */
    rng1[0] = rng1[0] * rng2[0];
    rng1[1] = rng1[1] * rng2[1];
! 
!   const tree size_max = TYPE_MAX_VALUE (sizetype);
    if (wi::gtu_p (rng1[1], wi::to_wide (size_max, prec)))
      {
!       rng1[1] = wi::to_wide (size_max, prec);
        return size_max;
      }
  
    return wide_int_to_tree (sizetype, rng1[1]);
  }
  
! /* For an access to an object referenced to by the function parameter PTR
!    of pointer type, and set RNG[] to the range of sizes of the object
!    obtainedfrom the attribute access specification for the current function.
!    Set STATIC_ARRAY if the array parameter has been declared [static].
!    Return the function parameter on success and null otherwise.  */
  
! tree
! gimple_parm_array_size (tree ptr, wide_int rng[2],
! 			bool *static_array /* = NULL */)
  {
!   /* For a function argument try to determine the byte size of the array
!      from the current function declaratation (e.g., attribute access or
!      related).  */
!   tree var = SSA_NAME_VAR (ptr);
!   if (TREE_CODE (var) != PARM_DECL)
!     return NULL_TREE;
  
!   const unsigned prec = TYPE_PRECISION (sizetype);
! 
!   rdwr_map rdwr_idx;
!   attr_access *access = get_parm_access (rdwr_idx, var);
!   if (!access)
!     return NULL_TREE;
! 
!   if (access->sizarg != UINT_MAX)
      {
!       /* TODO: Try to extract the range from the argument based on
! 	 those of subsequent assertions or based on known calls to
! 	 the current function.  */
!       return NULL_TREE;
      }
  
!   if (!access->minsize)
!     return NULL_TREE;
! 
!   /* Only consider ordinary array bound at level 2 (or above if it's
!      ever added).  */
!   if (warn_array_parameter < 2 && !access->static_p)
!     return NULL_TREE;
! 
!   if (static_array)
!     *static_array = access->static_p;
! 
!   rng[0] = wi::zero (prec);
!   rng[1] = wi::uhwi (access->minsize, prec);
!   /* Multiply the array bound encoded in the attribute by the size
!      of what the pointer argument to which it decays points to.  */
!   tree eltype = TREE_TYPE (TREE_TYPE (ptr));
!   tree size = TYPE_SIZE_UNIT (eltype);
!   if (!size || TREE_CODE (size) != INTEGER_CST)
!     return NULL_TREE;
! 
!   rng[1] *= wi::to_wide (size, prec);
!   return var;
! }
! 
! /* Wrapper around the wide_int overload of get_range that accepts
!    offset_int instead.  For middle end expressions returns the same
!    result.  For a subset of nonconstamt expressions emitted by the front
!    end determines a more precise range than would be possible otherwise.  */
! 
! static bool
! get_offset_range (tree x, gimple *stmt, offset_int r[2], range_query *rvals)
! {
!   offset_int add = 0;
!   if (TREE_CODE (x) == PLUS_EXPR)
      {
!       /* Handle constant offsets in pointer addition expressions seen
! 	 n the front end IL.  */
!       tree op = TREE_OPERAND (x, 1);
!       if (TREE_CODE (op) == INTEGER_CST)
! 	{
! 	  op = fold_convert (signed_type_for (TREE_TYPE (op)), op);
! 	  add = wi::to_offset (op);
! 	  x = TREE_OPERAND (x, 0);
! 	}
!     }
! 
!   if (TREE_CODE (x) == NOP_EXPR)
!     /* Also handle conversions to sizetype seen in the front end IL.  */
!     x = TREE_OPERAND (x, 0);
! 
!   tree type = TREE_TYPE (x);
!   if (!INTEGRAL_TYPE_P (type) && !POINTER_TYPE_P (type))
!     return false;
! 
!    if (TREE_CODE (x) != INTEGER_CST
!       && TREE_CODE (x) != SSA_NAME)
!     {
!       if (TYPE_UNSIGNED (type)
! 	  && TYPE_PRECISION (type) == TYPE_PRECISION (sizetype))
! 	type = signed_type_for (type);
! 
!       r[0] = wi::to_offset (TYPE_MIN_VALUE (type)) + add;
!       r[1] = wi::to_offset (TYPE_MAX_VALUE (type)) + add;
!       return x;
!     }
! 
!   wide_int wr[2];
!   if (!get_range (x, stmt, wr, rvals))
!     return false;
! 
!   signop sgn = SIGNED;
!   /* Only convert signed integers or unsigned sizetype to a signed
!      offset and avoid converting large positive values in narrower
!      types to negative offsets.  */
!   if (TYPE_UNSIGNED (type)
!       && wr[0].get_precision () < TYPE_PRECISION (sizetype))
!     sgn = UNSIGNED;
! 
!   r[0] = offset_int::from (wr[0], sgn);
!   r[1] = offset_int::from (wr[1], sgn);
!   return true;
! }
! 
! /* Return the argument that the call STMT to a built-in function returns
!    or null if it doesn't.  On success, set OFFRNG[] to the range of offsets
!    from the argument reflected in the value returned by the built-in if it
!    can be determined, otherwise to 0 and HWI_M1U respectively.  */
! 
! static tree
! gimple_call_return_array (gimple *stmt, offset_int offrng[2],
! 			  range_query *rvals)
! {
!   if (!gimple_call_builtin_p (stmt, BUILT_IN_NORMAL)
!       || gimple_call_num_args (stmt) < 1)
!     return NULL_TREE;
! 
!   tree fn = gimple_call_fndecl (stmt);
!   switch (DECL_FUNCTION_CODE (fn))
!     {
!     case BUILT_IN_MEMCPY:
!     case BUILT_IN_MEMCPY_CHK:
!     case BUILT_IN_MEMMOVE:
!     case BUILT_IN_MEMMOVE_CHK:
!     case BUILT_IN_MEMSET:
!     case BUILT_IN_STPCPY:
!     case BUILT_IN_STPCPY_CHK:
!     case BUILT_IN_STPNCPY:
!     case BUILT_IN_STPNCPY_CHK:
!     case BUILT_IN_STRCAT:
!     case BUILT_IN_STRCAT_CHK:
!     case BUILT_IN_STRCPY:
!     case BUILT_IN_STRCPY_CHK:
!     case BUILT_IN_STRNCAT:
!     case BUILT_IN_STRNCAT_CHK:
!     case BUILT_IN_STRNCPY:
!     case BUILT_IN_STRNCPY_CHK:
!       offrng[0] = offrng[1] = 0;
!       return gimple_call_arg (stmt, 0);
! 
!     case BUILT_IN_MEMPCPY:
!     case BUILT_IN_MEMPCPY_CHK:
!       {
! 	tree off = gimple_call_arg (stmt, 2);
! 	if (!get_offset_range (off, stmt, offrng, rvals))
! 	  {
! 	    offrng[0] = 0;
! 	    offrng[1] = HOST_WIDE_INT_M1U;
! 	  }
! 	return gimple_call_arg (stmt, 0);
!       }
! 
!     case BUILT_IN_MEMCHR:
!       {
! 	tree off = gimple_call_arg (stmt, 2);
! 	if (get_offset_range (off, stmt, offrng, rvals))
! 	  offrng[0] = 0;
! 	else
! 	  {
! 	    offrng[0] = 0;
! 	    offrng[1] = HOST_WIDE_INT_M1U;
! 	  }
! 	return gimple_call_arg (stmt, 0);
!       }
! 
!     case BUILT_IN_STRCHR:
!     case BUILT_IN_STRRCHR:
!     case BUILT_IN_STRSTR:
!       {
! 	offrng[0] = 0;
! 	offrng[1] = HOST_WIDE_INT_M1U;
!       }
!       return gimple_call_arg (stmt, 0);
! 
!     default:
!       break;
      }
  
    return NULL_TREE;
  }
  
! /* A helper of compute_objsize_r() to determine the size from an assignment
!    statement STMT with the RHS of either MIN_EXPR or MAX_EXPR.  */
! 
! static bool
! handle_min_max_size (gimple *stmt, int ostype, access_ref *pref,
! 		     ssa_name_limit_t &snlim, pointer_query *qry)
! {
!   tree_code code = gimple_assign_rhs_code (stmt);
! 
!   tree ptr = gimple_assign_rhs1 (stmt);
! 
!   /* In a valid MAX_/MIN_EXPR both operands must refer to the same array.
!      Determine the size/offset of each and use the one with more or less
!      space remaining, respectively.  If either fails, use the information
!      determined from the other instead, adjusted up or down as appropriate
!      for the expression.  */
!   access_ref aref[2] = { *pref, *pref };
!   if (!compute_objsize_r (ptr, ostype, &aref[0], snlim, qry))
!     {
!       aref[0].base0 = false;
!       aref[0].offrng[0] = aref[0].offrng[1] = 0;
!       aref[0].add_max_offset ();
!       aref[0].set_max_size_range ();
!     }
! 
!   ptr = gimple_assign_rhs2 (stmt);
!   if (!compute_objsize_r (ptr, ostype, &aref[1], snlim, qry))
!     {
!       aref[1].base0 = false;
!       aref[1].offrng[0] = aref[1].offrng[1] = 0;
!       aref[1].add_max_offset ();
!       aref[1].set_max_size_range ();
!     }
! 
!   if (!aref[0].ref && !aref[1].ref)
!     /* Fail if the identity of neither argument could be determined.  */
!     return false;
! 
!   bool i0 = false;
!   if (aref[0].ref && aref[0].base0)
!     {
!       if (aref[1].ref && aref[1].base0)
! 	{
! 	  /* If the object referenced by both arguments has been determined
! 	     set *PREF to the one with more or less space remainng, whichever
! 	     is appopriate for CODE.
! 	     TODO: Indicate when the objects are distinct so it can be
! 	     diagnosed.  */
! 	  i0 = code == MAX_EXPR;
! 	  const bool i1 = !i0;
! 
! 	  if (aref[i0].size_remaining () < aref[i1].size_remaining ())
! 	    *pref = aref[i1];
! 	  else
! 	    *pref = aref[i0];
! 	  return true;
! 	}
! 
!       /* If only the object referenced by one of the arguments could be
! 	 determined, use it and...  */
!       *pref = aref[0];
!       i0 = true;
!     }
!   else
!     *pref = aref[1];
! 
!   const bool i1 = !i0;
!   /* ...see if the offset obtained from the other pointer can be used
!      to tighten up the bound on the offset obtained from the first.  */
!   if ((code == MAX_EXPR && aref[i1].offrng[1] < aref[i0].offrng[0])
!       || (code == MIN_EXPR && aref[i0].offrng[0] < aref[i1].offrng[1]))
!     {
!       pref->offrng[0] = aref[i0].offrng[0];
!       pref->offrng[1] = aref[i0].offrng[1];
!     }
!   return true;
! }
! 
! /* A helper of compute_objsize_r() to determine the size from ARRAY_REF
!    AREF.  ADDR is true if PTR is the operand of ADDR_EXPR.  Return true
!    on success and false on failure.  */
! 
! static bool
! handle_array_ref (tree aref, bool addr, int ostype, access_ref *pref,
! 		  ssa_name_limit_t &snlim, pointer_query *qry)
! {
!   gcc_assert (TREE_CODE (aref) == ARRAY_REF);
! 
!   ++pref->deref;
! 
!   tree arefop = TREE_OPERAND (aref, 0);
!   tree reftype = TREE_TYPE (arefop);
!   if (!addr && TREE_CODE (TREE_TYPE (reftype)) == POINTER_TYPE)
!     /* Avoid arrays of pointers.  FIXME: Hande pointers to arrays
!        of known bound.  */
!     return false;
! 
!   if (!compute_objsize_r (arefop, ostype, pref, snlim, qry))
!     return false;
! 
!   offset_int orng[2];
!   tree off = pref->eval (TREE_OPERAND (aref, 1));
!   range_query *const rvals = qry ? qry->rvals : NULL;
!   if (!get_offset_range (off, NULL, orng, rvals))
!     {
!       /* Set ORNG to the maximum offset representable in ptrdiff_t.  */
!       orng[1] = wi::to_offset (TYPE_MAX_VALUE (ptrdiff_type_node));
!       orng[0] = -orng[1] - 1;
!     }
! 
!   /* Convert the array index range determined above to a byte
!      offset.  */
!   tree lowbnd = array_ref_low_bound (aref);
!   if (!integer_zerop (lowbnd) && tree_fits_uhwi_p (lowbnd))
!     {
!       /* Adjust the index by the low bound of the array domain
! 	 (normally zero but 1 in Fortran).  */
!       unsigned HOST_WIDE_INT lb = tree_to_uhwi (lowbnd);
!       orng[0] -= lb;
!       orng[1] -= lb;
!     }
! 
!   tree eltype = TREE_TYPE (aref);
!   tree tpsize = TYPE_SIZE_UNIT (eltype);
!   if (!tpsize || TREE_CODE (tpsize) != INTEGER_CST)
!     {
!       pref->add_max_offset ();
!       return true;
!     }
! 
!   offset_int sz = wi::to_offset (tpsize);
!   orng[0] *= sz;
!   orng[1] *= sz;
! 
!   if (ostype && TREE_CODE (eltype) == ARRAY_TYPE)
!     {
!       /* Except for the permissive raw memory functions which use
! 	 the size of the whole object determined above, use the size
! 	 of the referenced array.  Because the overall offset is from
! 	 the beginning of the complete array object add this overall
! 	 offset to the size of array.  */
!       offset_int sizrng[2] =
! 	{
! 	 pref->offrng[0] + orng[0] + sz,
! 	 pref->offrng[1] + orng[1] + sz
! 	};
!       if (sizrng[1] < sizrng[0])
! 	std::swap (sizrng[0], sizrng[1]);
!       if (sizrng[0] >= 0 && sizrng[0] <= pref->sizrng[0])
! 	pref->sizrng[0] = sizrng[0];
!       if (sizrng[1] >= 0 && sizrng[1] <= pref->sizrng[1])
! 	pref->sizrng[1] = sizrng[1];
!     }
! 
!   pref->add_offset (orng[0], orng[1]);
!   return true;
! }
! 
! /* A helper of compute_objsize_r() to determine the size from MEM_REF
!    MREF.  Return true on success and false on failure.  */
! 
! static bool
! handle_mem_ref (tree mref, int ostype, access_ref *pref,
! 		ssa_name_limit_t &snlim, pointer_query *qry)
! {
!   gcc_assert (TREE_CODE (mref) == MEM_REF);
! 
!   ++pref->deref;
! 
!   if (VECTOR_TYPE_P (TREE_TYPE (mref)))
!     {
!       /* Hack: Give up for MEM_REFs of vector types; those may be
! 	 synthesized from multiple assignments to consecutive data
! 	 members (see PR 93200 and 96963).
! 	 FIXME: Vectorized assignments should only be present after
! 	 vectorization so this hack is only necessary after it has
! 	 run and could be avoided in calls from prior passes (e.g.,
! 	 tree-ssa-strlen.c).
! 	 FIXME: Deal with this more generally, e.g., by marking up
! 	 such MEM_REFs at the time they're created.  */
!       return false;
!     }
! 
!   tree mrefop = TREE_OPERAND (mref, 0);
!   if (!compute_objsize_r (mrefop, ostype, pref, snlim, qry))
!     return false;
! 
!   offset_int orng[2];
!   tree off = pref->eval (TREE_OPERAND (mref, 1));
!   range_query *const rvals = qry ? qry->rvals : NULL;
!   if (!get_offset_range (off, NULL, orng, rvals))
!     {
!       /* Set ORNG to the maximum offset representable in ptrdiff_t.  */
!       orng[1] = wi::to_offset (TYPE_MAX_VALUE (ptrdiff_type_node));
!       orng[0] = -orng[1] - 1;
!     }
! 
!   pref->add_offset (orng[0], orng[1]);
!   return true;
! }
! 
! /* Helper to compute the size of the object referenced by the PTR
     expression which must have pointer type, using Object Size type
     OSTYPE (only the least significant 2 bits are used).
!    On success, sets PREF->REF to the DECL of the referenced object
!    if it's unique, otherwise to null, PREF->OFFRNG to the range of
!    offsets into it, and PREF->SIZRNG to the range of sizes of
!    the object(s).
!    SNLIM is used to avoid visiting the same PHI operand multiple
!    times, and, when nonnull, RVALS to determine range information.
!    Returns true on success, false when a meaningful size (or range)
!    cannot be determined.
  
     The function is intended for diagnostics and should not be used
     to influence code generation or optimization.  */
  
! static bool
! compute_objsize_r (tree ptr, int ostype, access_ref *pref,
! 		   ssa_name_limit_t &snlim, pointer_query *qry)
  {
!   STRIP_NOPS (ptr);
  
!   const bool addr = TREE_CODE (ptr) == ADDR_EXPR;
!   if (addr)
!     {
!       --pref->deref;
!       ptr = TREE_OPERAND (ptr, 0);
!     }
  
!   if (DECL_P (ptr))
!     {
!       pref->ref = ptr;
  
!       if (!addr && POINTER_TYPE_P (TREE_TYPE (ptr)))
! 	{
! 	  /* Set the maximum size if the reference is to the pointer
! 	     itself (as opposed to what it points to).  */
! 	  pref->set_max_size_range ();
! 	  return true;
! 	}
  
!       if (tree size = decl_init_size (ptr, false))
! 	if (TREE_CODE (size) == INTEGER_CST)
! 	  {
! 	    pref->sizrng[0] = pref->sizrng[1] = wi::to_offset (size);
! 	    return true;
! 	  }
  
!       pref->set_max_size_range ();
!       return true;
!     }
! 
!   const tree_code code = TREE_CODE (ptr);
!   range_query *const rvals = qry ? qry->rvals : NULL;
! 
!   if (code == BIT_FIELD_REF)
      {
!       tree ref = TREE_OPERAND (ptr, 0);
!       if (!compute_objsize_r (ref, ostype, pref, snlim, qry))
! 	return false;
! 
!       offset_int off = wi::to_offset (pref->eval (TREE_OPERAND (ptr, 2)));
!       pref->add_offset (off / BITS_PER_UNIT);
!       return true;
!     }
! 
!   if (code == COMPONENT_REF)
!     {
!       tree ref = TREE_OPERAND (ptr, 0);
!       if (TREE_CODE (TREE_TYPE (ref)) == UNION_TYPE)
! 	/* In accesses through union types consider the entire unions
! 	   rather than just their members.  */
! 	ostype = 0;
!       tree field = TREE_OPERAND (ptr, 1);
! 
!       if (ostype == 0)
  	{
! 	  /* In OSTYPE zero (for raw memory functions like memcpy), use
! 	     the maximum size instead if the identity of the enclosing
! 	     object cannot be determined.  */
! 	  if (!compute_objsize_r (ref, ostype, pref, snlim, qry))
! 	    return false;
! 
! 	  /* Otherwise, use the size of the enclosing object and add
! 	     the offset of the member to the offset computed so far.  */
! 	  tree offset = byte_position (field);
! 	  if (TREE_CODE (offset) == INTEGER_CST)
! 	    pref->add_offset (wi::to_offset (offset));
! 	  else
! 	    pref->add_max_offset ();
! 
! 	  if (!pref->ref)
! 	    /* REF may have been already set to an SSA_NAME earlier
! 	       to provide better context for diagnostics.  In that case,
! 	       leave it unchanged.  */
! 	    pref->ref = ref;
! 	  return true;
  	}
  
!       pref->ref = field;
  
!       if (!addr && POINTER_TYPE_P (TREE_TYPE (field)))
! 	{
! 	  /* Set maximum size if the reference is to the pointer member
! 	     itself (as opposed to what it points to).  */
! 	  pref->set_max_size_range ();
! 	  return true;
! 	}
  
!       /* SAM is set for array members that might need special treatment.  */
!       special_array_member sam;
!       tree size = component_ref_size (ptr, &sam);
!       if (sam == special_array_member::int_0)
! 	pref->sizrng[0] = pref->sizrng[1] = 0;
!       else if (!pref->trail1special && sam == special_array_member::trail_1)
! 	pref->sizrng[0] = pref->sizrng[1] = 1;
!       else if (size && TREE_CODE (size) == INTEGER_CST)
! 	pref->sizrng[0] = pref->sizrng[1] = wi::to_offset (size);
!       else
  	{
! 	  /* When the size of the member is unknown it's either a flexible
! 	     array member or a trailing special array member (either zero
! 	     length or one-element).  Set the size to the maximum minus
! 	     the constant size of the type.  */
! 	  pref->sizrng[0] = 0;
! 	  pref->sizrng[1] = wi::to_offset (TYPE_MAX_VALUE (ptrdiff_type_node));
! 	  if (tree recsize = TYPE_SIZE_UNIT (TREE_TYPE (ref)))
! 	    if (TREE_CODE (recsize) == INTEGER_CST)
! 	      pref->sizrng[1] -= wi::to_offset (recsize);
! 	}
!       return true;
!     }
  
!   if (code == ARRAY_REF)
!     return handle_array_ref (ptr, addr, ostype, pref, snlim, qry);
  
!   if (code == MEM_REF)
!     return handle_mem_ref (ptr, ostype, pref, snlim, qry);
  
!   if (code == TARGET_MEM_REF)
!     {
!       tree ref = TREE_OPERAND (ptr, 0);
!       if (!compute_objsize_r (ref, ostype, pref, snlim, qry))
! 	return false;
! 
!       /* TODO: Handle remaining operands.  Until then, add maximum offset.  */
!       pref->ref = ptr;
!       pref->add_max_offset ();
!       return true;
      }
  
!   if (code == INTEGER_CST)
!     {
!       /* Pointer constants other than null are most likely the result
! 	 of erroneous null pointer addition/subtraction.  Set size to
! 	 zero.  For null pointers, set size to the maximum for now
! 	 since those may be the result of jump threading.  */
!       if (integer_zerop (ptr))
! 	pref->set_max_size_range ();
!       else
! 	pref->sizrng[0] = pref->sizrng[1] = 0;
!       pref->ref = ptr;
  
!       return true;
!     }
! 
!   if (code == STRING_CST)
      {
!       pref->sizrng[0] = pref->sizrng[1] = TREE_STRING_LENGTH (ptr);
!       pref->ref = ptr;
!       return true;
!     }
  
!   if (code == POINTER_PLUS_EXPR)
!     {
!       tree ref = TREE_OPERAND (ptr, 0);
!       if (!compute_objsize_r (ref, ostype, pref, snlim, qry))
! 	return false;
  
!       /* Clear DEREF since the offset is being applied to the target
! 	 of the dereference.  */
!       pref->deref = 0;
  
!       offset_int orng[2];
!       tree off = pref->eval (TREE_OPERAND (ptr, 1));
!       if (get_offset_range (off, NULL, orng, rvals))
! 	pref->add_offset (orng[0], orng[1]);
!       else
! 	pref->add_max_offset ();
!       return true;
!     }
  
!   if (code == VIEW_CONVERT_EXPR)
!     {
!       ptr = TREE_OPERAND (ptr, 0);
!       return compute_objsize_r (ptr, ostype, pref, snlim, qry);
!     }
! 
!   if (code == SSA_NAME)
!     {
!       if (!snlim.next ())
! 	return false;
! 
!       /* Only process an SSA_NAME if the recursion limit has not yet
! 	 been reached.  */
!       if (qry)
! 	{
! 	  if (++qry->depth)
! 	    qry->max_depth = qry->depth;
! 	  if (const access_ref *cache_ref = qry->get_ref (ptr))
  	    {
! 	      /* If the pointer is in the cache set *PREF to what it refers
! 		 to and return success.  */
! 	      *pref = *cache_ref;
! 	      return true;
! 	    }
! 	}
  
!       gimple *stmt = SSA_NAME_DEF_STMT (ptr);
!       if (is_gimple_call (stmt))
! 	{
! 	  /* If STMT is a call to an allocation function get the size
! 	     from its argument(s).  If successful, also set *PREF->REF
! 	     to PTR for the caller to include in diagnostics.  */
! 	  wide_int wr[2];
! 	  if (gimple_call_alloc_size (stmt, wr, rvals))
! 	    {
! 	      pref->ref = ptr;
! 	      pref->sizrng[0] = offset_int::from (wr[0], UNSIGNED);
! 	      pref->sizrng[1] = offset_int::from (wr[1], UNSIGNED);
! 	      /* Constrain both bounds to a valid size.  */
! 	      offset_int maxsize = wi::to_offset (max_object_size ());
! 	      if (pref->sizrng[0] > maxsize)
! 		pref->sizrng[0] = maxsize;
! 	      if (pref->sizrng[1] > maxsize)
! 		pref->sizrng[1] = maxsize;
! 	    }
! 	  else
! 	    {
! 	      /* For functions known to return one of their pointer arguments
! 		 try to determine what the returned pointer points to, and on
! 		 success add OFFRNG which was set to the offset added by
! 		 the function (e.g., memchr) to the overall offset.  */
! 	      offset_int offrng[2];
! 	      if (tree ret = gimple_call_return_array (stmt, offrng, rvals))
  		{
! 		  if (!compute_objsize_r (ret, ostype, pref, snlim, qry))
! 		    return false;
! 
! 		  /* Cap OFFRNG[1] to at most the remaining size of
! 		     the object.  */
! 		  offset_int remrng[2];
! 		  remrng[1] = pref->size_remaining (remrng);
! 		  if (remrng[1] < offrng[1])
! 		    offrng[1] = remrng[1];
! 		  pref->add_offset (offrng[0], offrng[1]);
  		}
  	      else
! 		{
! 		  /* For other calls that might return arbitrary pointers
! 		     including into the middle of objects set the size
! 		     range to maximum, clear PREF->BASE0, and also set
! 		     PREF->REF to include in diagnostics.  */
! 		  pref->set_max_size_range ();
! 		  pref->base0 = false;
! 		  pref->ref = ptr;
! 		}
  	    }
+ 	  qry->put_ref (ptr, *pref);
+ 	  return true;
+ 	}
  
!       if (gimple_nop_p (stmt))
! 	{
! 	  /* For a function argument try to determine the byte size
! 	     of the array from the current function declaratation
! 	     (e.g., attribute access or related).  */
! 	  wide_int wr[2];
! 	  bool static_array = false;
! 	  if (tree ref = gimple_parm_array_size (ptr, wr, &static_array))
  	    {
! 	      pref->parmarray = !static_array;
! 	      pref->sizrng[0] = offset_int::from (wr[0], UNSIGNED);
! 	      pref->sizrng[1] = offset_int::from (wr[1], UNSIGNED);
! 	      pref->ref = ref;
! 	      qry->put_ref (ptr, *pref);
! 	      return true;
  	    }
  
! 	  pref->set_max_size_range ();
! 	  pref->base0 = false;
! 	  pref->ref = ptr;
! 	  qry->put_ref (ptr, *pref);
! 	  return true;
! 	}
  
!       if (gimple_code (stmt) == GIMPLE_PHI)
! 	{
! 	  pref->ref = ptr;
! 	  access_ref phi_ref = *pref;
! 	  if (!pref->get_ref (NULL, &phi_ref, ostype, &snlim, qry))
! 	    return false;
! 	  *pref = phi_ref;
! 	  pref->ref = ptr;
! 	  qry->put_ref (ptr, *pref);
! 	  return true;
! 	}
  
!       if (!is_gimple_assign (stmt))
! 	{
! 	  /* Clear BASE0 since the assigned pointer might point into
! 	     the middle of the object, set the maximum size range and,
! 	     if the SSA_NAME refers to a function argumnent, set
! 	     PREF->REF to it.  */
! 	  pref->base0 = false;
! 	  pref->set_max_size_range ();
! 	  pref->ref = ptr;
! 	  return true;
! 	}
  
!       tree_code code = gimple_assign_rhs_code (stmt);
  
!       if (code == MAX_EXPR || code == MIN_EXPR)
! 	{
! 	  if (!handle_min_max_size (stmt, ostype, pref, snlim, qry))
! 	    return false;
! 	  qry->put_ref (ptr, *pref);
! 	  return true;
! 	}
  
!       tree rhs = gimple_assign_rhs1 (stmt);
! 
!       if (code == POINTER_PLUS_EXPR
! 	  && TREE_CODE (TREE_TYPE (rhs)) == POINTER_TYPE)
! 	{
! 	  /* Compute the size of the object first. */
! 	  if (!compute_objsize_r (rhs, ostype, pref, snlim, qry))
! 	    return false;
! 
! 	  offset_int orng[2];
! 	  tree off = gimple_assign_rhs2 (stmt);
! 	  if (get_offset_range (off, stmt, orng, rvals))
! 	    pref->add_offset (orng[0], orng[1]);
  	  else
! 	    pref->add_max_offset ();
! 	  qry->put_ref (ptr, *pref);
! 	  return true;
! 	}
  
!       if (code == ADDR_EXPR
! 	  || code == SSA_NAME)
! 	return compute_objsize_r (rhs, ostype, pref, snlim, qry);
  
!       /* (This could also be an assignment from a nonlocal pointer.)  Save
! 	 PTR to mention in diagnostics but otherwise treat it as a pointer
! 	 to an unknown object.  */
!       pref->ref = rhs;
!       pref->base0 = false;
!       pref->set_max_size_range ();
!       return true;
!     }
  
!   /* Assume all other expressions point into an unknown object
!      of the maximum valid size.  */
!   pref->ref = ptr;
!   pref->base0 = false;
!   pref->set_max_size_range ();
!   if (TREE_CODE (ptr) == SSA_NAME)
!     qry->put_ref (ptr, *pref);
!   return true;
! }
  
! /* A "public" wrapper around the above.  Clients should use this overload
!    instead.  */
  
! tree
! compute_objsize (tree ptr, int ostype, access_ref *pref,
! 		 range_query *rvals /* = NULL */)
! {
!   pointer_query qry;
!   qry.rvals = rvals;
!   ssa_name_limit_t snlim;
!   if (!compute_objsize_r (ptr, ostype, pref, snlim, &qry))
!     return NULL_TREE;
  
!   offset_int maxsize = pref->size_remaining ();
!   if (pref->base0 && pref->offrng[0] < 0 && pref->offrng[1] >= 0)
!     pref->offrng[0] = 0;
!   return wide_int_to_tree (sizetype, maxsize);
! }
  
! /* Transitional wrapper.  The function should be removed once callers
!    transition to the pointer_query API.  */
  
! tree
! compute_objsize (tree ptr, int ostype, access_ref *pref, pointer_query *ptr_qry)
! {
!   pointer_query qry;
!   if (ptr_qry)
!     ptr_qry->depth = 0;
!   else
!     ptr_qry = &qry;
  
!   ssa_name_limit_t snlim;
!   if (!compute_objsize_r (ptr, ostype, pref, snlim, ptr_qry))
!     return NULL_TREE;
  
!   offset_int maxsize = pref->size_remaining ();
!   if (pref->base0 && pref->offrng[0] < 0 && pref->offrng[1] >= 0)
!     pref->offrng[0] = 0;
!   return wide_int_to_tree (sizetype, maxsize);
! }
! 
! /* Legacy wrapper around the above.  The function should be removed
!    once callers transition to one of the two above.  */
! 
! tree
! compute_objsize (tree ptr, int ostype, tree *pdecl /* = NULL */,
! 		 tree *poff /* = NULL */, range_query *rvals /* = NULL */)
! {
!   /* Set the initial offsets to zero and size to negative to indicate
!      none has been computed yet.  */
!   access_ref ref;
!   tree size = compute_objsize (ptr, ostype, &ref, rvals);
!   if (!size || !ref.base0)
!     return NULL_TREE;
! 
!   if (pdecl)
!     *pdecl = ref.ref;
! 
!   if (poff)
!     *poff = wide_int_to_tree (ptrdiff_type_node, ref.offrng[ref.offrng[0] < 0]);
! 
!   return size;
  }
  
  /* Helper to determine and check the sizes of the source and the destination
*************** check_memop_access (tree exp, tree dest,
*** 4140,4150 ****
       try to determine the size of the largest source and destination
       object using type-0 Object Size regardless of the object size
       type specified by the option.  */
!   tree srcsize = src ? compute_objsize (src, 0) : NULL_TREE;
!   tree dstsize = compute_objsize (dest, 0);
  
!   return check_access (exp, dest, src, size, /*maxread=*/NULL_TREE,
! 		       srcsize, dstsize);
  }
  
  /* Validate memchr arguments without performing any expansion.
--- 5863,5874 ----
       try to determine the size of the largest source and destination
       object using type-0 Object Size regardless of the object size
       type specified by the option.  */
!   access_data data (exp, access_read_write);
!   tree srcsize = src ? compute_objsize (src, 0, &data.src) : NULL_TREE;
!   tree dstsize = compute_objsize (dest, 0, &data.dst);
  
!   return check_access (exp, size, /*maxread=*/NULL_TREE,
! 		       srcsize, dstsize, data.mode, &data);
  }
  
  /* Validate memchr arguments without performing any expansion.
*************** expand_builtin_memchr (tree exp, rtx)
*** 4160,4173 ****
    tree arg1 = CALL_EXPR_ARG (exp, 0);
    tree len = CALL_EXPR_ARG (exp, 2);
  
!   /* Diagnose calls where the specified length exceeds the size
!      of the object.  */
!   if (warn_stringop_overflow)
!     {
!       tree size = compute_objsize (arg1, 0);
!       check_access (exp, /*dst=*/NULL_TREE, /*src=*/NULL_TREE, len,
! 		    /*maxread=*/NULL_TREE, size, /*objsize=*/NULL_TREE);
!     }
  
    return NULL_RTX;
  }
--- 5884,5890 ----
    tree arg1 = CALL_EXPR_ARG (exp, 0);
    tree len = CALL_EXPR_ARG (exp, 2);
  
!   check_read_access (exp, arg1, len, 0);
  
    return NULL_RTX;
  }
*************** expand_builtin_memory_copy_args (tree de
*** 4298,4304 ****
    /* Try to get the byte representation of the constant SRC points to,
       with its byte size in NBYTES.  */
    unsigned HOST_WIDE_INT nbytes;
!   const char *rep = c_getstr (src, &nbytes);
  
    /* If the function's constant bound LEN_RTX is less than or equal
       to the byte size of the representation of the constant argument,
--- 6015,6021 ----
    /* Try to get the byte representation of the constant SRC points to,
       with its byte size in NBYTES.  */
    unsigned HOST_WIDE_INT nbytes;
!   const char *rep = getbyterep (src, &nbytes);
  
    /* If the function's constant bound LEN_RTX is less than or equal
       to the byte size of the representation of the constant argument,
*************** expand_builtin_memory_copy_args (tree de
*** 4306,4312 ****
       the bytes from memory and only store the computed constant.
       This works in the overlap (memmove) case as well because
       store_by_pieces just generates a series of stores of constants
!      from the representation returned by c_getstr().  */
    if (rep
        && CONST_INT_P (len_rtx)
        && (unsigned HOST_WIDE_INT) INTVAL (len_rtx) <= nbytes
--- 6023,6029 ----
       the bytes from memory and only store the computed constant.
       This works in the overlap (memmove) case as well because
       store_by_pieces just generates a series of stores of constants
!      from the representation returned by getbyterep().  */
    if (rep
        && CONST_INT_P (len_rtx)
        && (unsigned HOST_WIDE_INT) INTVAL (len_rtx) <= nbytes
*************** expand_builtin_strcat (tree exp)
*** 4437,4455 ****
    tree dest = CALL_EXPR_ARG (exp, 0);
    tree src = CALL_EXPR_ARG (exp, 1);
  
-   /* Detect unterminated source (only).  */
-   if (!check_nul_terminated_array (exp, src))
-     return NULL_RTX;
- 
    /* There is no way here to determine the length of the string in
       the destination to which the SRC string is being appended so
       just diagnose cases when the souce string is longer than
       the destination object.  */
  
!   tree destsize = compute_objsize (dest, warn_stringop_overflow - 1);
! 
!   check_access (exp, dest, src, /*size=*/NULL_TREE, /*maxread=*/NULL_TREE, src,
! 		destsize);
  
    return NULL_RTX;
  }
--- 6154,6171 ----
    tree dest = CALL_EXPR_ARG (exp, 0);
    tree src = CALL_EXPR_ARG (exp, 1);
  
    /* There is no way here to determine the length of the string in
       the destination to which the SRC string is being appended so
       just diagnose cases when the souce string is longer than
       the destination object.  */
+   access_data data (exp, access_read_write, NULL_TREE, true,
+ 		    NULL_TREE, true);
+   const int ost = warn_stringop_overflow ? warn_stringop_overflow - 1 : 1;
+   compute_objsize (src, ost, &data.src);
+   tree destsize = compute_objsize (dest, ost, &data.dst);
  
!   check_access (exp, /*dstwrite=*/NULL_TREE, /*maxread=*/NULL_TREE,
! 		src, destsize, data.mode, &data);
  
    return NULL_RTX;
  }
*************** expand_builtin_strcpy (tree exp, rtx tar
*** 4470,4478 ****
  
    if (warn_stringop_overflow)
      {
!       tree destsize = compute_objsize (dest, warn_stringop_overflow - 1);
!       check_access (exp, dest, src, /*size=*/NULL_TREE, /*maxread=*/NULL_TREE,
! 		    src, destsize);
      }
  
    if (rtx ret = expand_builtin_strcpy_args (exp, dest, src, target))
--- 6186,6199 ----
  
    if (warn_stringop_overflow)
      {
!       access_data data (exp, access_read_write, NULL_TREE, true,
! 			NULL_TREE, true);
!       const int ost = warn_stringop_overflow ? warn_stringop_overflow - 1 : 1;
!       compute_objsize (src, ost, &data.src);
!       tree dstsize = compute_objsize (dest, ost, &data.dst);
!       check_access (exp, /*dstwrite=*/ NULL_TREE,
! 		    /*maxread=*/ NULL_TREE, /*srcstr=*/ src,
! 		    dstsize, data.mode, &data);
      }
  
    if (rtx ret = expand_builtin_strcpy_args (exp, dest, src, target))
*************** static rtx
*** 4498,4508 ****
  expand_builtin_strcpy_args (tree exp, tree dest, tree src, rtx target)
  {
    /* Detect strcpy calls with unterminated arrays..  */
!   if (tree nonstr = unterminated_array (src))
      {
        /* NONSTR refers to the non-nul terminated constant array.  */
!       if (!TREE_NO_WARNING (exp))
! 	warn_string_no_nul (EXPR_LOCATION (exp), "strcpy", src, nonstr);
        return NULL_RTX;
      }
  
--- 6219,6231 ----
  expand_builtin_strcpy_args (tree exp, tree dest, tree src, rtx target)
  {
    /* Detect strcpy calls with unterminated arrays..  */
!   tree size;
!   bool exact;
!   if (tree nonstr = unterminated_array (src, &size, &exact))
      {
        /* NONSTR refers to the non-nul terminated constant array.  */
!       warn_string_no_nul (EXPR_LOCATION (exp), exp, NULL, src, nonstr,
! 			  size, exact);
        return NULL_RTX;
      }
  
*************** expand_builtin_stpcpy_1 (tree exp, rtx t
*** 4528,4536 ****
  
    if (warn_stringop_overflow)
      {
!       tree destsize = compute_objsize (dst, warn_stringop_overflow - 1);
!       check_access (exp, dst, src, /*size=*/NULL_TREE, /*maxread=*/NULL_TREE,
! 		    src, destsize);
      }
  
    /* If return value is ignored, transform stpcpy into strcpy.  */
--- 6251,6261 ----
  
    if (warn_stringop_overflow)
      {
!       access_data data (exp, access_read_write);
!       tree destsize = compute_objsize (dst, warn_stringop_overflow - 1,
! 				       &data.dst);
!       check_access (exp, /*dstwrite=*/NULL_TREE, /*maxread=*/NULL_TREE,
! 		    src, destsize, data.mode, &data);
      }
  
    /* If return value is ignored, transform stpcpy into strcpy.  */
*************** expand_builtin_stpcpy_1 (tree exp, rtx t
*** 4550,4562 ****
  	 because the latter will potentially produce pessimized code
  	 when used to produce the return value.  */
        c_strlen_data lendata = { };
!       if (!c_getstr (src, NULL)
  	  || !(len = c_strlen (src, 0, &lendata, 1)))
  	return expand_movstr (dst, src, target,
  			      /*retmode=*/ RETURN_END_MINUS_ONE);
  
!       if (lendata.decl && !TREE_NO_WARNING (exp))
! 	warn_string_no_nul (EXPR_LOCATION (exp), "stpcpy", src, lendata.decl);
  
        lenp1 = size_binop_loc (loc, PLUS_EXPR, len, ssize_int (1));
        ret = expand_builtin_mempcpy_args (dst, src, lenp1,
--- 6275,6287 ----
  	 because the latter will potentially produce pessimized code
  	 when used to produce the return value.  */
        c_strlen_data lendata = { };
!       if (!c_getstr (src)
  	  || !(len = c_strlen (src, 0, &lendata, 1)))
  	return expand_movstr (dst, src, target,
  			      /*retmode=*/ RETURN_END_MINUS_ONE);
  
!       if (lendata.decl)
! 	warn_string_no_nul (EXPR_LOCATION (exp), exp, NULL, src, lendata.decl);
  
        lenp1 = size_binop_loc (loc, PLUS_EXPR, len, ssize_int (1));
        ret = expand_builtin_mempcpy_args (dst, src, lenp1,
*************** expand_builtin_stpncpy (tree exp, rtx)
*** 4636,4649 ****
  
    /* The exact number of bytes to write (not the maximum).  */
    tree len = CALL_EXPR_ARG (exp, 2);
!   if (!check_nul_terminated_array (exp, src, len))
!     return NULL_RTX;
! 
    /* The size of the destination object.  */
!   tree destsize = compute_objsize (dest, warn_stringop_overflow - 1);
! 
!   check_access (exp, dest, src, len, /*maxread=*/NULL_TREE, src, destsize);
! 
    return NULL_RTX;
  }
  
--- 6361,6370 ----
  
    /* The exact number of bytes to write (not the maximum).  */
    tree len = CALL_EXPR_ARG (exp, 2);
!   access_data data (exp, access_read_write);
    /* The size of the destination object.  */
!   tree destsize = compute_objsize (dest, warn_stringop_overflow - 1, &data.dst);
!   check_access (exp, len, /*maxread=*/len, src, destsize, data.mode, &data);
    return NULL_RTX;
  }
  
*************** check_strncat_sizes (tree exp, tree objs
*** 4682,4693 ****
    /* Try to verify that the destination is big enough for the shortest
       string.  */
  
    if (!objsize && warn_stringop_overflow)
      {
        /* If it hasn't been provided by __strncat_chk, try to determine
  	 the size of the destination object into which the source is
  	 being copied.  */
!       objsize = compute_objsize (dest, warn_stringop_overflow - 1);
      }
  
    /* Add one for the terminating nul.  */
--- 6403,6415 ----
    /* Try to verify that the destination is big enough for the shortest
       string.  */
  
+   access_data data (exp, access_read_write, maxread, true);
    if (!objsize && warn_stringop_overflow)
      {
        /* If it hasn't been provided by __strncat_chk, try to determine
  	 the size of the destination object into which the source is
  	 being copied.  */
!       objsize = compute_objsize (dest, warn_stringop_overflow - 1, &data.dst);
      }
  
    /* Add one for the terminating nul.  */
*************** check_strncat_sizes (tree exp, tree objs
*** 4702,4710 ****
    if (tree_fits_uhwi_p (maxread) && tree_fits_uhwi_p (objsize)
        && tree_int_cst_equal (objsize, maxread))
      {
!       location_t loc = tree_nonartificial_location (exp);
!       loc = expansion_point_location_if_in_system_header (loc);
! 
        warning_at (loc, OPT_Wstringop_overflow_,
  		  "%K%qD specified bound %E equals destination size",
  		  exp, get_callee_fndecl (exp), maxread);
--- 6424,6430 ----
    if (tree_fits_uhwi_p (maxread) && tree_fits_uhwi_p (objsize)
        && tree_int_cst_equal (objsize, maxread))
      {
!       location_t loc = tree_inlined_location (exp);
        warning_at (loc, OPT_Wstringop_overflow_,
  		  "%K%qD specified bound %E equals destination size",
  		  exp, get_callee_fndecl (exp), maxread);
*************** check_strncat_sizes (tree exp, tree objs
*** 4718,4727 ****
  	  && tree_int_cst_lt (maxread, srclen)))
      srclen = maxread;
  
!   /* The number of bytes to write is LEN but check_access will also
       check SRCLEN if LEN's value isn't known.  */
!   return check_access (exp, dest, src, /*size=*/NULL_TREE, maxread, srclen,
! 		       objsize);
  }
  
  /* Similar to expand_builtin_strcat, do some very basic size validation
--- 6438,6447 ----
  	  && tree_int_cst_lt (maxread, srclen)))
      srclen = maxread;
  
!   /* The number of bytes to write is LEN but check_access will alsoa
       check SRCLEN if LEN's value isn't known.  */
!   return check_access (exp, /*dstwrite=*/NULL_TREE, maxread, srclen,
! 		       objsize, data.mode, &data);
  }
  
  /* Similar to expand_builtin_strcat, do some very basic size validation
*************** expand_builtin_strncat (tree exp, rtx)
*** 4759,4768 ****
        maxlen = lendata.maxbound;
      }
  
    /* Try to verify that the destination is big enough for the shortest
       string.  First try to determine the size of the destination object
       into which the source is being copied.  */
!   tree destsize = compute_objsize (dest, warn_stringop_overflow - 1);
  
    /* Add one for the terminating nul.  */
    tree srclen = (maxlen
--- 6479,6489 ----
        maxlen = lendata.maxbound;
      }
  
+   access_data data (exp, access_read_write);
    /* Try to verify that the destination is big enough for the shortest
       string.  First try to determine the size of the destination object
       into which the source is being copied.  */
!   tree destsize = compute_objsize (dest, warn_stringop_overflow - 1, &data.dst);
  
    /* Add one for the terminating nul.  */
    tree srclen = (maxlen
*************** expand_builtin_strncat (tree exp, rtx)
*** 4776,4784 ****
    if (tree_fits_uhwi_p (maxread) && tree_fits_uhwi_p (destsize)
        && tree_int_cst_equal (destsize, maxread))
      {
!       location_t loc = tree_nonartificial_location (exp);
!       loc = expansion_point_location_if_in_system_header (loc);
! 
        warning_at (loc, OPT_Wstringop_overflow_,
  		  "%K%qD specified bound %E equals destination size",
  		  exp, get_callee_fndecl (exp), maxread);
--- 6497,6503 ----
    if (tree_fits_uhwi_p (maxread) && tree_fits_uhwi_p (destsize)
        && tree_int_cst_equal (destsize, maxread))
      {
!       location_t loc = tree_inlined_location (exp);
        warning_at (loc, OPT_Wstringop_overflow_,
  		  "%K%qD specified bound %E equals destination size",
  		  exp, get_callee_fndecl (exp), maxread);
*************** expand_builtin_strncat (tree exp, rtx)
*** 4792,4800 ****
  	  && tree_int_cst_lt (maxread, srclen)))
      srclen = maxread;
  
!   /* The number of bytes to write is SRCLEN.  */
!   check_access (exp, dest, src, NULL_TREE, maxread, srclen, destsize);
! 
    return NULL_RTX;
  }
  
--- 6511,6518 ----
  	  && tree_int_cst_lt (maxread, srclen)))
      srclen = maxread;
  
!   check_access (exp, /*dstwrite=*/NULL_TREE, maxread, srclen,
! 		destsize, data.mode, &data);
    return NULL_RTX;
  }
  
*************** expand_builtin_strncpy (tree exp, rtx ta
*** 4814,4834 ****
    /* The number of bytes to write (not the maximum).  */
    tree len = CALL_EXPR_ARG (exp, 2);
  
-   if (!check_nul_terminated_array (exp, src, len))
-     return NULL_RTX;
- 
    /* The length of the source sequence.  */
    tree slen = c_strlen (src, 1);
  
    if (warn_stringop_overflow)
      {
!       tree destsize = compute_objsize (dest,
! 				       warn_stringop_overflow - 1);
! 
        /* The number of bytes to write is LEN but check_access will also
  	 check SLEN if LEN's value isn't known.  */
!       check_access (exp, dest, src, len, /*maxread=*/NULL_TREE, src,
! 		    destsize);
      }
  
    /* We must be passed a constant len and src parameter.  */
--- 6532,6550 ----
    /* The number of bytes to write (not the maximum).  */
    tree len = CALL_EXPR_ARG (exp, 2);
  
    /* The length of the source sequence.  */
    tree slen = c_strlen (src, 1);
  
    if (warn_stringop_overflow)
      {
!       access_data data (exp, access_read_write, len, true, len, true);
!       const int ost = warn_stringop_overflow ? warn_stringop_overflow - 1 : 1;
!       compute_objsize (src, ost, &data.src);
!       tree dstsize = compute_objsize (dest, ost, &data.dst);
        /* The number of bytes to write is LEN but check_access will also
  	 check SLEN if LEN's value isn't known.  */
!       check_access (exp, /*dstwrite=*/len,
! 		    /*maxread=*/len, src, dstsize, data.mode, &data);
      }
  
    /* We must be passed a constant len and src parameter.  */
*************** expand_builtin_memcmp (tree exp, rtx tar
*** 5136,5167 ****
    tree arg1 = CALL_EXPR_ARG (exp, 0);
    tree arg2 = CALL_EXPR_ARG (exp, 1);
    tree len = CALL_EXPR_ARG (exp, 2);
-   enum built_in_function fcode = DECL_FUNCTION_CODE (get_callee_fndecl (exp));
-   bool no_overflow = true;
  
    /* Diagnose calls where the specified length exceeds the size of either
       object.  */
!   tree size = compute_objsize (arg1, 0);
!   no_overflow = check_access (exp, /*dst=*/NULL_TREE, /*src=*/NULL_TREE,
! 			      len, /*maxread=*/NULL_TREE, size,
! 			      /*objsize=*/NULL_TREE);
!   if (no_overflow)
!     {
!       size = compute_objsize (arg2, 0);
!       no_overflow = check_access (exp, /*dst=*/NULL_TREE, /*src=*/NULL_TREE,
! 				  len,  /*maxread=*/NULL_TREE, size,
! 				  /*objsize=*/NULL_TREE);
!     }
! 
!   /* If the specified length exceeds the size of either object, 
!      call the function.  */
!   if (!no_overflow)
      return NULL_RTX;
  
    /* Due to the performance benefit, always inline the calls first
       when result_eq is false.  */
    rtx result = NULL_RTX;
! 
    if (!result_eq && fcode != BUILT_IN_BCMP)
      {
        result = inline_expand_builtin_bytecmp (exp, target);
--- 6852,6868 ----
    tree arg1 = CALL_EXPR_ARG (exp, 0);
    tree arg2 = CALL_EXPR_ARG (exp, 1);
    tree len = CALL_EXPR_ARG (exp, 2);
  
    /* Diagnose calls where the specified length exceeds the size of either
       object.  */
!   if (!check_read_access (exp, arg1, len, 0)
!       || !check_read_access (exp, arg2, len, 0))
      return NULL_RTX;
  
    /* Due to the performance benefit, always inline the calls first
       when result_eq is false.  */
    rtx result = NULL_RTX;
!   enum built_in_function fcode = DECL_FUNCTION_CODE (get_callee_fndecl (exp));
    if (!result_eq && fcode != BUILT_IN_BCMP)
      {
        result = inline_expand_builtin_bytecmp (exp, target);
*************** expand_builtin_memcmp (tree exp, rtx tar
*** 5196,5206 ****
       when the function's result is used for equality to zero, ARG1)
       points to, with its byte size in NBYTES.  */
    unsigned HOST_WIDE_INT nbytes;
!   const char *rep = c_getstr (arg2, &nbytes);
    if (result_eq && rep == NULL)
      {
        /* For equality to zero the arguments are interchangeable.  */
!       rep = c_getstr (arg1, &nbytes);
        if (rep != NULL)
  	std::swap (arg1_rtx, arg2_rtx);
      }
--- 6897,6907 ----
       when the function's result is used for equality to zero, ARG1)
       points to, with its byte size in NBYTES.  */
    unsigned HOST_WIDE_INT nbytes;
!   const char *rep = getbyterep (arg2, &nbytes);
    if (result_eq && rep == NULL)
      {
        /* For equality to zero the arguments are interchangeable.  */
!       rep = getbyterep (arg1, &nbytes);
        if (rep != NULL)
  	std::swap (arg1_rtx, arg2_rtx);
      }
*************** expand_builtin_strcmp (tree exp, ATTRIBU
*** 5250,5257 ****
    tree arg1 = CALL_EXPR_ARG (exp, 0);
    tree arg2 = CALL_EXPR_ARG (exp, 1);
  
!   if (!check_nul_terminated_array (exp, arg1)
!       || !check_nul_terminated_array (exp, arg2))
      return NULL_RTX;
  
    /* Due to the performance benefit, always inline the calls first.  */
--- 6951,6958 ----
    tree arg1 = CALL_EXPR_ARG (exp, 0);
    tree arg2 = CALL_EXPR_ARG (exp, 1);
  
!   if (!check_read_access (exp, arg1)
!       || !check_read_access (exp, arg2))
      return NULL_RTX;
  
    /* Due to the performance benefit, always inline the calls first.  */
*************** expand_builtin_strcmp (tree exp, ATTRIBU
*** 5359,5366 ****
  }
  
  /* Expand expression EXP, which is a call to the strncmp builtin. Return
!    NULL_RTX if we failed the caller should emit a normal call, otherwise try to get
!    the result in TARGET, if convenient.  */
  
  static rtx
  expand_builtin_strncmp (tree exp, ATTRIBUTE_UNUSED rtx target,
--- 7060,7067 ----
  }
  
  /* Expand expression EXP, which is a call to the strncmp builtin. Return
!    NULL_RTX if we failed the caller should emit a normal call, otherwise
!    try to get the result in TARGET, if convenient.  */
  
  static rtx
  expand_builtin_strncmp (tree exp, ATTRIBUTE_UNUSED rtx target,
*************** expand_builtin_strncmp (tree exp, ATTRIB
*** 5378,5383 ****
--- 7079,7140 ----
        || !check_nul_terminated_array (exp, arg2, arg3))
      return NULL_RTX;
  
+   location_t loc = tree_inlined_location (exp);
+   tree len1 = c_strlen (arg1, 1);
+   tree len2 = c_strlen (arg2, 1);
+ 
+   if (!len1 || !len2)
+     {
+       /* Check to see if the argument was declared attribute nonstring
+ 	 and if so, issue a warning since at this point it's not known
+ 	 to be nul-terminated.  */
+       if (!maybe_warn_nonstring_arg (get_callee_fndecl (exp), exp)
+ 	  && !len1 && !len2)
+ 	{
+ 	  /* A strncmp read is constrained not just by the bound but
+ 	     also by the length of the shorter string.  Specifying
+ 	     a bound that's larger than the size of either array makes
+ 	     no sense and is likely a bug.  When the length of neither
+ 	     of the two strings is known but the sizes of both of
+ 	     the arrays they are stored in is, issue a warning if
+ 	     the bound is larger than than the size of the larger
+ 	     of the two arrays.  */
+ 
+ 	  access_ref ref1 (arg3, true);
+ 	  access_ref ref2 (arg3, true);
+ 
+ 	  tree bndrng[2] = { NULL_TREE, NULL_TREE };
+ 	  get_size_range (arg3, bndrng, ref1.bndrng);
+ 
+ 	  tree size1 = compute_objsize (arg1, 1, &ref1);
+ 	  tree size2 = compute_objsize (arg2, 1, &ref2);
+ 	  tree func = get_callee_fndecl (exp);
+ 
+ 	  if (size1 && size2 && bndrng[0] && !integer_zerop (bndrng[0]))
+ 	    {
+ 	      offset_int rem1 = ref1.size_remaining ();
+ 	      offset_int rem2 = ref2.size_remaining ();
+ 	      if (rem1 == 0 || rem2 == 0)
+ 		maybe_warn_for_bound (OPT_Wstringop_overread, loc, exp, func,
+ 				      bndrng, integer_zero_node);
+ 	      else
+ 		{
+ 		  offset_int maxrem = wi::max (rem1, rem2, UNSIGNED);
+ 		  if (maxrem < wi::to_offset (bndrng[0]))
+ 		    maybe_warn_for_bound (OPT_Wstringop_overread, loc, exp,
+ 					  func, bndrng,
+ 					  wide_int_to_tree (sizetype, maxrem));
+ 		}
+ 	    }
+ 	  else if (bndrng[0]
+ 		   && !integer_zerop (bndrng[0])
+ 		   && ((size1 && integer_zerop (size1))
+ 		       || (size2 && integer_zerop (size2))))
+ 	    maybe_warn_for_bound (OPT_Wstringop_overread, loc, exp, func,
+ 				  bndrng, integer_zero_node);
+ 	}
+     }
+ 
    /* Due to the performance benefit, always inline the calls first.  */
    rtx result = NULL_RTX;
    result = inline_expand_builtin_bytecmp (exp, target);
*************** expand_builtin_strncmp (tree exp, ATTRIB
*** 5396,5406 ****
    unsigned int arg1_align = get_pointer_alignment (arg1) / BITS_PER_UNIT;
    unsigned int arg2_align = get_pointer_alignment (arg2) / BITS_PER_UNIT;
  
-   tree len1 = c_strlen (arg1, 1);
-   tree len2 = c_strlen (arg2, 1);
- 
-   location_t loc = EXPR_LOCATION (exp);
- 
    if (len1)
      len1 = size_binop_loc (loc, PLUS_EXPR, ssize_int (1), len1);
    if (len2)
--- 7153,7158 ----
*************** expand_builtin_strncmp (tree exp, ATTRIB
*** 5452,5462 ****
    tree fndecl = get_callee_fndecl (exp);
    if (result)
      {
-       /* Check to see if the argument was declared attribute nonstring
- 	 and if so, issue a warning since at this point it's not known
- 	 to be nul-terminated.  */
-       maybe_warn_nonstring_arg (fndecl, exp);
- 
        /* Return the value in the proper mode for this function.  */
        mode = TYPE_MODE (TREE_TYPE (exp));
        if (GET_MODE (result) == mode)
--- 7204,7209 ----
*************** expand_builtin_strncmp (tree exp, ATTRIB
*** 5469,5478 ****
  
    /* Expand the library call ourselves using a stabilized argument
       list to avoid re-evaluating the function's arguments twice.  */
!   tree fn = build_call_nofold_loc (loc, fndecl, 3, arg1, arg2, len);
!   gcc_assert (TREE_CODE (fn) == CALL_EXPR);
!   CALL_EXPR_TAILCALL (fn) = CALL_EXPR_TAILCALL (exp);
!   return expand_call (fn, target, target == const0_rtx);
  }
  
  /* Expand a call to __builtin_saveregs, generating the result in TARGET,
--- 7216,7227 ----
  
    /* Expand the library call ourselves using a stabilized argument
       list to avoid re-evaluating the function's arguments twice.  */
!   tree call = build_call_nofold_loc (loc, fndecl, 3, arg1, arg2, len);
!   if (TREE_NO_WARNING (exp))
!     TREE_NO_WARNING (call) = true;
!   gcc_assert (TREE_CODE (call) == CALL_EXPR);
!   CALL_EXPR_TAILCALL (call) = CALL_EXPR_TAILCALL (exp);
!   return expand_call (call, target, target == const0_rtx);
  }
  
  /* Expand a call to __builtin_saveregs, generating the result in TARGET,
*************** expand_builtin_copysign (tree exp, rtx t
*** 6067,6092 ****
    return expand_copysign (op0, op1, target);
  }
  
! /* Expand a call to __builtin___clear_cache.  */
  
! static rtx
! expand_builtin___clear_cache (tree exp)
  {
!   if (!targetm.code_for_clear_cache)
      {
! #ifdef CLEAR_INSN_CACHE
!       /* There is no "clear_cache" insn, and __clear_cache() in libgcc
! 	 does something.  Just do the default expansion to a call to
! 	 __clear_cache().  */
!       return NULL_RTX;
! #else
        /* There is no "clear_cache" insn, and __clear_cache() in libgcc
  	 does nothing.  There is no need to call it.  Do nothing.  */
!       return const0_rtx;
  #endif /* CLEAR_INSN_CACHE */
      }
  
!   /* We have a "clear_cache" insn, and it will handle everything.  */
    tree begin, end;
    rtx begin_rtx, end_rtx;
  
--- 7816,7879 ----
    return expand_copysign (op0, op1, target);
  }
  
! /* Emit a call to __builtin___clear_cache.  */
  
! void
! default_emit_call_builtin___clear_cache (rtx begin, rtx end)
  {
!   rtx callee = gen_rtx_SYMBOL_REF (Pmode,
! 				   BUILTIN_ASM_NAME_PTR
! 				   (BUILT_IN_CLEAR_CACHE));
! 
!   emit_library_call (callee,
! 		     LCT_NORMAL, VOIDmode,
! 		     convert_memory_address (ptr_mode, begin), ptr_mode,
! 		     convert_memory_address (ptr_mode, end), ptr_mode);
! }
! 
! /* Emit a call to __builtin___clear_cache, unless the target specifies
!    it as do-nothing.  This function can be used by trampoline
!    finalizers to duplicate the effects of expanding a call to the
!    clear_cache builtin.  */
! 
! void
! maybe_emit_call_builtin___clear_cache (rtx begin, rtx end)
! {
!   if ((GET_MODE (begin) != ptr_mode && GET_MODE (begin) != Pmode)
!       || (GET_MODE (end) != ptr_mode && GET_MODE (end) != Pmode))
      {
!       error ("both arguments to %<__builtin___clear_cache%> must be pointers");
!       return;
!     }
! 
!   if (targetm.have_clear_cache ())
!     {
!       /* We have a "clear_cache" insn, and it will handle everything.  */
!       class expand_operand ops[2];
! 
!       create_address_operand (&ops[0], begin);
!       create_address_operand (&ops[1], end);
! 
!       if (maybe_expand_insn (targetm.code_for_clear_cache, 2, ops))
! 	return;
!     }
!   else
!     {
! #ifndef CLEAR_INSN_CACHE
        /* There is no "clear_cache" insn, and __clear_cache() in libgcc
  	 does nothing.  There is no need to call it.  Do nothing.  */
!       return;
  #endif /* CLEAR_INSN_CACHE */
      }
  
!   targetm.calls.emit_call_builtin___clear_cache (begin, end);
! }
! 
! /* Expand a call to __builtin___clear_cache.  */
! 
! static void
! expand_builtin___clear_cache (tree exp)
! {
    tree begin, end;
    rtx begin_rtx, end_rtx;
  
*************** expand_builtin___clear_cache (tree exp)
*** 6096,6120 ****
    if (!validate_arglist (exp, POINTER_TYPE, POINTER_TYPE, VOID_TYPE))
      {
        error ("both arguments to %<__builtin___clear_cache%> must be pointers");
!       return const0_rtx;
      }
  
!   if (targetm.have_clear_cache ())
!     {
!       class expand_operand ops[2];
! 
!       begin = CALL_EXPR_ARG (exp, 0);
!       begin_rtx = expand_expr (begin, NULL_RTX, Pmode, EXPAND_NORMAL);
  
!       end = CALL_EXPR_ARG (exp, 1);
!       end_rtx = expand_expr (end, NULL_RTX, Pmode, EXPAND_NORMAL);
  
!       create_address_operand (&ops[0], begin_rtx);
!       create_address_operand (&ops[1], end_rtx);
!       if (maybe_expand_insn (targetm.code_for_clear_cache, 2, ops))
! 	return const0_rtx;
!     }
!   return const0_rtx;
  }
  
  /* Given a trampoline address, make sure it satisfies TRAMPOLINE_ALIGNMENT.  */
--- 7883,7898 ----
    if (!validate_arglist (exp, POINTER_TYPE, POINTER_TYPE, VOID_TYPE))
      {
        error ("both arguments to %<__builtin___clear_cache%> must be pointers");
!       return;
      }
  
!   begin = CALL_EXPR_ARG (exp, 0);
!   begin_rtx = expand_expr (begin, NULL_RTX, Pmode, EXPAND_NORMAL);
  
!   end = CALL_EXPR_ARG (exp, 1);
!   end_rtx = expand_expr (end, NULL_RTX, Pmode, EXPAND_NORMAL);
  
!   maybe_emit_call_builtin___clear_cache (begin_rtx, end_rtx);
  }
  
  /* Given a trampoline address, make sure it satisfies TRAMPOLINE_ALIGNMENT.  */
*************** expand_builtin_fork_or_exec (tree fn, tr
*** 6389,6396 ****
  
    if (DECL_FUNCTION_CODE (fn) != BUILT_IN_FORK)
      {
        /* Detect unterminated path.  */
!       if (!check_nul_terminated_array (exp, CALL_EXPR_ARG (exp, 0)))
  	return NULL_RTX;
  
        /* Also detect unterminated first argument.  */
--- 8167,8175 ----
  
    if (DECL_FUNCTION_CODE (fn) != BUILT_IN_FORK)
      {
+       tree path = CALL_EXPR_ARG (exp, 0);
        /* Detect unterminated path.  */
!       if (!check_read_access (exp, path))
  	return NULL_RTX;
  
        /* Also detect unterminated first argument.  */
*************** expand_builtin_fork_or_exec (tree fn, tr
*** 6399,6405 ****
  	case BUILT_IN_EXECL:
  	case BUILT_IN_EXECLE:
  	case BUILT_IN_EXECLP:
! 	  if (!check_nul_terminated_array (exp, CALL_EXPR_ARG (exp, 0)))
  	    return NULL_RTX;
  	default:
  	  break;
--- 8178,8184 ----
  	case BUILT_IN_EXECL:
  	case BUILT_IN_EXECLE:
  	case BUILT_IN_EXECLP:
! 	  if (!check_read_access (exp, path))
  	    return NULL_RTX;
  	default:
  	  break;
*************** expand_expr_force_mode (tree exp, machin
*** 6522,6527 ****
--- 8301,8327 ----
    rtx val;
    machine_mode old_mode;
  
+   if (TREE_CODE (exp) == SSA_NAME
+       && TYPE_MODE (TREE_TYPE (exp)) != mode)
+     {
+       /* Undo argument promotion if possible, as combine might not
+ 	 be able to do it later due to MEM_VOLATILE_P uses in the
+ 	 patterns.  */
+       gimple *g = get_gimple_for_ssa_name (exp);
+       if (g && gimple_assign_cast_p (g))
+ 	{
+ 	  tree rhs = gimple_assign_rhs1 (g);
+ 	  tree_code code = gimple_assign_rhs_code (g);
+ 	  if (CONVERT_EXPR_CODE_P (code)
+ 	      && TYPE_MODE (TREE_TYPE (rhs)) == mode
+ 	      && INTEGRAL_TYPE_P (TREE_TYPE (exp))
+ 	      && INTEGRAL_TYPE_P (TREE_TYPE (rhs))
+ 	      && (TYPE_PRECISION (TREE_TYPE (exp))
+ 		  > TYPE_PRECISION (TREE_TYPE (rhs))))
+ 	    exp = rhs;
+ 	}
+     }
+ 
    val = expand_expr (exp, NULL_RTX, mode, EXPAND_NORMAL);
    /* If VAL is promoted to a wider mode, convert it back to MODE.  Take care
       of CONST_INTs, where we know the old_mode only from the call argument.  */
*************** inline_expand_builtin_bytecmp (tree exp,
*** 7629,7636 ****
    /* Get the object representation of the initializers of ARG1 and ARG2
       as strings, provided they refer to constant objects, with their byte
       sizes in LEN1 and LEN2, respectively.  */
!   const char *bytes1 = c_getstr (arg1, &len1);
!   const char *bytes2 = c_getstr (arg2, &len2);
  
    /* Fail if neither argument refers to an initialized constant.  */
    if (!bytes1 && !bytes2)
--- 9429,9436 ----
    /* Get the object representation of the initializers of ARG1 and ARG2
       as strings, provided they refer to constant objects, with their byte
       sizes in LEN1 and LEN2, respectively.  */
!   const char *bytes1 = getbyterep (arg1, &len1);
!   const char *bytes2 = getbyterep (arg2, &len2);
  
    /* Fail if neither argument refers to an initialized constant.  */
    if (!bytes1 && !bytes2)
*************** expand_builtin (tree exp, rtx target, rt
*** 7782,7787 ****
--- 9582,9588 ----
        && fcode != BUILT_IN_EXECLE
        && fcode != BUILT_IN_EXECVP
        && fcode != BUILT_IN_EXECVE
+       && fcode != BUILT_IN_CLEAR_CACHE
        && !ALLOCA_FUNCTION_CODE_P (fcode)
        && fcode != BUILT_IN_FREE)
      return expand_call (exp, target, ignore);
*************** expand_builtin (tree exp, rtx target, rt
*** 7971,7980 ****
        return expand_builtin_next_arg ();
  
      case BUILT_IN_CLEAR_CACHE:
!       target = expand_builtin___clear_cache (exp);
!       if (target)
!         return target;
!       break;
  
      case BUILT_IN_CLASSIFY_TYPE:
        return expand_builtin_classify_type (exp);
--- 9772,9779 ----
        return expand_builtin_next_arg ();
  
      case BUILT_IN_CLEAR_CACHE:
!       expand_builtin___clear_cache (exp);
!       return const0_rtx;
  
      case BUILT_IN_CLASSIFY_TYPE:
        return expand_builtin_classify_type (exp);
*************** expand_builtin (tree exp, rtx target, rt
*** 8015,8020 ****
--- 9814,9820 ----
      case BUILT_IN_BSWAP16:
      case BUILT_IN_BSWAP32:
      case BUILT_IN_BSWAP64:
+     case BUILT_IN_BSWAP128:
        target = expand_builtin_bswap (target_mode, exp, target, subtarget);
        if (target)
  	return target;
*************** expand_builtin (tree exp, rtx target, rt
*** 8085,8091 ****
      case BUILT_IN_PUTS_UNLOCKED:
      case BUILT_IN_STRDUP:
        if (validate_arglist (exp, POINTER_TYPE, VOID_TYPE))
! 	check_nul_terminated_array (exp, CALL_EXPR_ARG (exp, 0));
        break;
  
      case BUILT_IN_INDEX:
--- 9885,9891 ----
      case BUILT_IN_PUTS_UNLOCKED:
      case BUILT_IN_STRDUP:
        if (validate_arglist (exp, POINTER_TYPE, VOID_TYPE))
! 	check_read_access (exp, CALL_EXPR_ARG (exp, 0));
        break;
  
      case BUILT_IN_INDEX:
*************** expand_builtin (tree exp, rtx target, rt
*** 8093,8120 ****
      case BUILT_IN_STRCHR:
      case BUILT_IN_STRRCHR:
        if (validate_arglist (exp, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE))
! 	check_nul_terminated_array (exp, CALL_EXPR_ARG (exp, 0));
        break;
  
      case BUILT_IN_FPUTS:
      case BUILT_IN_FPUTS_UNLOCKED:
        if (validate_arglist (exp, POINTER_TYPE, POINTER_TYPE, VOID_TYPE))
! 	check_nul_terminated_array (exp, CALL_EXPR_ARG (exp, 0));
        break;
  
      case BUILT_IN_STRNDUP:
        if (validate_arglist (exp, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE))
! 	check_nul_terminated_array (exp,
! 				    CALL_EXPR_ARG (exp, 0),
! 				    CALL_EXPR_ARG (exp, 1));
        break;
  
      case BUILT_IN_STRCASECMP:
      case BUILT_IN_STRSTR:
        if (validate_arglist (exp, POINTER_TYPE, POINTER_TYPE, VOID_TYPE))
  	{
! 	  check_nul_terminated_array (exp, CALL_EXPR_ARG (exp, 0));
! 	  check_nul_terminated_array (exp, CALL_EXPR_ARG (exp, 1));
  	}
        break;
  
--- 9893,9921 ----
      case BUILT_IN_STRCHR:
      case BUILT_IN_STRRCHR:
        if (validate_arglist (exp, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE))
! 	check_read_access (exp, CALL_EXPR_ARG (exp, 0));
        break;
  
      case BUILT_IN_FPUTS:
      case BUILT_IN_FPUTS_UNLOCKED:
        if (validate_arglist (exp, POINTER_TYPE, POINTER_TYPE, VOID_TYPE))
! 	check_read_access (exp, CALL_EXPR_ARG (exp, 0));
        break;
  
      case BUILT_IN_STRNDUP:
        if (validate_arglist (exp, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE))
! 	check_read_access (exp, CALL_EXPR_ARG (exp, 0), CALL_EXPR_ARG (exp, 1));
        break;
  
      case BUILT_IN_STRCASECMP:
+     case BUILT_IN_STRPBRK:
+     case BUILT_IN_STRSPN:
+     case BUILT_IN_STRCSPN:
      case BUILT_IN_STRSTR:
        if (validate_arglist (exp, POINTER_TYPE, POINTER_TYPE, VOID_TYPE))
  	{
! 	  check_read_access (exp, CALL_EXPR_ARG (exp, 0));
! 	  check_read_access (exp, CALL_EXPR_ARG (exp, 1));
  	}
        break;
  
*************** expand_builtin (tree exp, rtx target, rt
*** 8875,8885 ****
        maybe_emit_sprintf_chk_warning (exp, fcode);
        break;
  
-     case BUILT_IN_FREE:
-       if (warn_free_nonheap_object)
- 	maybe_emit_free_warning (exp);
-       break;
- 
      case BUILT_IN_THREAD_POINTER:
        return expand_builtin_thread_pointer (exp, target);
  
--- 10676,10681 ----
*************** fold_builtin_classify_type (tree arg)
*** 9144,9153 ****
    return build_int_cst (integer_type_node, type_to_class (TREE_TYPE (arg)));
  }
  
! /* Fold a call to __builtin_strlen with argument ARG.  */
  
  static tree
! fold_builtin_strlen (location_t loc, tree type, tree arg)
  {
    if (!validate_arg (arg, POINTER_TYPE))
      return NULL_TREE;
--- 10940,10950 ----
    return build_int_cst (integer_type_node, type_to_class (TREE_TYPE (arg)));
  }
  
! /* Fold a call EXPR (which may be null) to __builtin_strlen with argument
!    ARG.  */
  
  static tree
! fold_builtin_strlen (location_t loc, tree expr, tree type, tree arg)
  {
    if (!validate_arg (arg, POINTER_TYPE))
      return NULL_TREE;
*************** fold_builtin_strlen (location_t loc, tre
*** 9168,9174 ****
  	    loc = EXPR_LOCATION (arg);
  	  else if (loc == UNKNOWN_LOCATION)
  	    loc = input_location;
! 	  warn_string_no_nul (loc, "strlen", arg, lendata.decl);
  	}
  
        return NULL_TREE;
--- 10965,10971 ----
  	    loc = EXPR_LOCATION (arg);
  	  else if (loc == UNKNOWN_LOCATION)
  	    loc = input_location;
! 	  warn_string_no_nul (loc, expr, "strlen", arg, lendata.decl);
  	}
  
        return NULL_TREE;
*************** fold_builtin_sincos (location_t loc,
*** 9226,9232 ****
      }
    if (!call)
      {
!       if (!targetm.libc_has_function (function_c99_math_complex)
  	  || !builtin_decl_implicit_p (fn))
  	return NULL_TREE;
        fndecl = builtin_decl_explicit (fn);
--- 11023,11029 ----
      }
    if (!call)
      {
!       if (!targetm.libc_has_function (function_c99_math_complex, type)
  	  || !builtin_decl_implicit_p (fn))
  	return NULL_TREE;
        fndecl = builtin_decl_explicit (fn);
*************** fold_builtin_classify (location_t loc, t
*** 9680,9688 ****
    switch (builtin_index)
      {
      case BUILT_IN_ISINF:
!       if (!HONOR_INFINITIES (arg))
  	return omit_one_operand_loc (loc, type, integer_zero_node, arg);
- 
        return NULL_TREE;
  
      case BUILT_IN_ISINF_SIGN:
--- 11477,11486 ----
    switch (builtin_index)
      {
      case BUILT_IN_ISINF:
!       if (tree_expr_infinite_p (arg))
! 	return omit_one_operand_loc (loc, type, integer_one_node, arg);
!       if (!tree_expr_maybe_infinite_p (arg))
  	return omit_one_operand_loc (loc, type, integer_zero_node, arg);
        return NULL_TREE;
  
      case BUILT_IN_ISINF_SIGN:
*************** fold_builtin_classify (location_t loc, t
*** 9718,9731 ****
        }
  
      case BUILT_IN_ISFINITE:
!       if (!HONOR_NANS (arg)
! 	  && !HONOR_INFINITIES (arg))
  	return omit_one_operand_loc (loc, type, integer_one_node, arg);
! 
        return NULL_TREE;
  
      case BUILT_IN_ISNAN:
!       if (!HONOR_NANS (arg))
  	return omit_one_operand_loc (loc, type, integer_zero_node, arg);
  
        {
--- 11516,11531 ----
        }
  
      case BUILT_IN_ISFINITE:
!       if (tree_expr_finite_p (arg))
  	return omit_one_operand_loc (loc, type, integer_one_node, arg);
!       if (tree_expr_nan_p (arg) || tree_expr_infinite_p (arg))
! 	return omit_one_operand_loc (loc, type, integer_zero_node, arg);
        return NULL_TREE;
  
      case BUILT_IN_ISNAN:
!       if (tree_expr_nan_p (arg))
! 	return omit_one_operand_loc (loc, type, integer_one_node, arg);
!       if (!tree_expr_maybe_nan_p (arg))
  	return omit_one_operand_loc (loc, type, integer_zero_node, arg);
  
        {
*************** fold_builtin_fpclassify (location_t loc,
*** 9799,9805 ****
  		     arg, build_real (type, r));
    res = fold_build3_loc (loc, COND_EXPR, integer_type_node, tmp, fp_normal, res);
  
!   if (HONOR_INFINITIES (mode))
      {
        real_inf (&r);
        tmp = fold_build2_loc (loc, EQ_EXPR, integer_type_node, arg,
--- 11599,11605 ----
  		     arg, build_real (type, r));
    res = fold_build3_loc (loc, COND_EXPR, integer_type_node, tmp, fp_normal, res);
  
!   if (tree_expr_maybe_infinite_p (arg))
      {
        real_inf (&r);
        tmp = fold_build2_loc (loc, EQ_EXPR, integer_type_node, arg,
*************** fold_builtin_fpclassify (location_t loc,
*** 9808,9814 ****
  			 fp_infinite, res);
      }
  
!   if (HONOR_NANS (mode))
      {
        tmp = fold_build2_loc (loc, ORDERED_EXPR, integer_type_node, arg, arg);
        res = fold_build3_loc (loc, COND_EXPR, integer_type_node, tmp, res, fp_nan);
--- 11608,11614 ----
  			 fp_infinite, res);
      }
  
!   if (tree_expr_maybe_nan_p (arg))
      {
        tmp = fold_build2_loc (loc, ORDERED_EXPR, integer_type_node, arg, arg);
        res = fold_build3_loc (loc, COND_EXPR, integer_type_node, tmp, res, fp_nan);
*************** fold_builtin_unordered_cmp (location_t l
*** 9856,9867 ****
  
    if (unordered_code == UNORDERED_EXPR)
      {
!       if (!HONOR_NANS (arg0))
  	return omit_two_operands_loc (loc, type, integer_zero_node, arg0, arg1);
        return fold_build2_loc (loc, UNORDERED_EXPR, type, arg0, arg1);
      }
  
!   code = HONOR_NANS (arg0) ? unordered_code : ordered_code;
    return fold_build1_loc (loc, TRUTH_NOT_EXPR, type,
  		      fold_build2_loc (loc, code, type, arg0, arg1));
  }
--- 11656,11670 ----
  
    if (unordered_code == UNORDERED_EXPR)
      {
!       if (tree_expr_nan_p (arg0) || tree_expr_nan_p (arg1))
! 	return omit_two_operands_loc (loc, type, integer_one_node, arg0, arg1);
!       if (!tree_expr_maybe_nan_p (arg0) && !tree_expr_maybe_nan_p (arg1))
  	return omit_two_operands_loc (loc, type, integer_zero_node, arg0, arg1);
        return fold_build2_loc (loc, UNORDERED_EXPR, type, arg0, arg1);
      }
  
!   code = (tree_expr_maybe_nan_p (arg0) || tree_expr_maybe_nan_p (arg1))
! 	 ? unordered_code : ordered_code;
    return fold_build1_loc (loc, TRUTH_NOT_EXPR, type,
  		      fold_build2_loc (loc, code, type, arg0, arg1));
  }
*************** fold_builtin_0 (location_t loc, tree fnd
*** 10057,10063 ****
     This function returns NULL_TREE if no simplification was possible.  */
  
  static tree
! fold_builtin_1 (location_t loc, tree fndecl, tree arg0)
  {
    tree type = TREE_TYPE (TREE_TYPE (fndecl));
    enum built_in_function fcode = DECL_FUNCTION_CODE (fndecl);
--- 11860,11866 ----
     This function returns NULL_TREE if no simplification was possible.  */
  
  static tree
! fold_builtin_1 (location_t loc, tree expr, tree fndecl, tree arg0)
  {
    tree type = TREE_TYPE (TREE_TYPE (fndecl));
    enum built_in_function fcode = DECL_FUNCTION_CODE (fndecl);
*************** fold_builtin_1 (location_t loc, tree fnd
*** 10087,10093 ****
        return fold_builtin_classify_type (arg0);
  
      case BUILT_IN_STRLEN:
!       return fold_builtin_strlen (loc, type, arg0);
  
      CASE_FLT_FN (BUILT_IN_FABS):
      CASE_FLT_FN_FLOATN_NX (BUILT_IN_FABS):
--- 11890,11896 ----
        return fold_builtin_classify_type (arg0);
  
      case BUILT_IN_STRLEN:
!       return fold_builtin_strlen (loc, expr, type, arg0);
  
      CASE_FLT_FN (BUILT_IN_FABS):
      CASE_FLT_FN_FLOATN_NX (BUILT_IN_FABS):
*************** fold_builtin_n (location_t loc, tree exp
*** 10354,10360 ****
        ret = fold_builtin_0 (loc, fndecl);
        break;
      case 1:
!       ret = fold_builtin_1 (loc, fndecl, args[0]);
        break;
      case 2:
        ret = fold_builtin_2 (loc, expr, fndecl, args[0], args[1]);
--- 12157,12163 ----
        ret = fold_builtin_0 (loc, fndecl);
        break;
      case 1:
!       ret = fold_builtin_1 (loc, expr, fndecl, args[0]);
        break;
      case 2:
        ret = fold_builtin_2 (loc, expr, fndecl, args[0], args[1]);
*************** readonly_data_expr (tree exp)
*** 10645,10660 ****
     form of the builtin function call.  */
  
  static tree
! fold_builtin_strpbrk (location_t loc, tree expr, tree s1, tree s2, tree type)
  {
    if (!validate_arg (s1, POINTER_TYPE)
        || !validate_arg (s2, POINTER_TYPE))
      return NULL_TREE;
  
-   if (!check_nul_terminated_array (expr, s1)
-       || !check_nul_terminated_array (expr, s2))
-     return NULL_TREE;
- 
    tree fn;
    const char *p1, *p2;
  
--- 12448,12459 ----
     form of the builtin function call.  */
  
  static tree
! fold_builtin_strpbrk (location_t loc, tree, tree s1, tree s2, tree type)
  {
    if (!validate_arg (s1, POINTER_TYPE)
        || !validate_arg (s2, POINTER_TYPE))
      return NULL_TREE;
  
    tree fn;
    const char *p1, *p2;
  
*************** expand_builtin_memory_chk (tree exp, rtx
*** 10958,10965 ****
    tree len = CALL_EXPR_ARG (exp, 2);
    tree size = CALL_EXPR_ARG (exp, 3);
  
!   bool sizes_ok = check_access (exp, dest, src, len, /*maxread=*/NULL_TREE,
! 				/*str=*/NULL_TREE, size);
  
    if (!tree_fits_uhwi_p (size))
      return NULL_RTX;
--- 12757,12765 ----
    tree len = CALL_EXPR_ARG (exp, 2);
    tree size = CALL_EXPR_ARG (exp, 3);
  
!   /* FIXME: Set access mode to write only for memset et al.  */
!   bool sizes_ok = check_access (exp, len, /*maxread=*/NULL_TREE,
! 				/*srcstr=*/NULL_TREE, size, access_read_write);
  
    if (!tree_fits_uhwi_p (size))
      return NULL_RTX;
*************** maybe_emit_chk_warning (tree exp, enum b
*** 11060,11066 ****
  {
    /* The source string.  */
    tree srcstr = NULL_TREE;
!   /* The size of the destination object.  */
    tree objsize = NULL_TREE;
    /* The string that is being concatenated with (as in __strcat_chk)
       or null if it isn't.  */
--- 12860,12866 ----
  {
    /* The source string.  */
    tree srcstr = NULL_TREE;
!   /* The size of the destination object returned by __builtin_object_size.  */
    tree objsize = NULL_TREE;
    /* The string that is being concatenated with (as in __strcat_chk)
       or null if it isn't.  */
*************** maybe_emit_chk_warning (tree exp, enum b
*** 11071,11076 ****
--- 12871,12879 ----
    tree maxread = NULL_TREE;
    /* The exact size of the access (such as in __strncpy_chk).  */
    tree size = NULL_TREE;
+   /* The access by the function that's checked.  Except for snprintf
+      both writing and reading is checked.  */
+   access_mode mode = access_read_write;
  
    switch (fcode)
      {
*************** maybe_emit_chk_warning (tree exp, enum b
*** 11106,11111 ****
--- 12909,12916 ----
      case BUILT_IN_VSNPRINTF_CHK:
        maxread = CALL_EXPR_ARG (exp, 1);
        objsize = CALL_EXPR_ARG (exp, 3);
+       /* The only checked access the write to the destination.  */
+       mode = access_write_only;
        break;
      default:
        gcc_unreachable ();
*************** maybe_emit_chk_warning (tree exp, enum b
*** 11120,11129 ****
        return;
      }
  
!   /* The destination argument is the first one for all built-ins above.  */
!   tree dst = CALL_EXPR_ARG (exp, 0);
! 
!   check_access (exp, dst, srcstr, size, maxread, srcstr, objsize);
  }
  
  /* Emit warning if a buffer overflow is detected at compile time
--- 12925,12931 ----
        return;
      }
  
!   check_access (exp, size, maxread, srcstr, objsize, mode);
  }
  
  /* Emit warning if a buffer overflow is detected at compile time
*************** maybe_emit_sprintf_chk_warning (tree exp
*** 11180,11213 ****
    /* Add one for the terminating nul.  */
    len = fold_build2 (PLUS_EXPR, TREE_TYPE (len), len, size_one_node);
  
!   check_access (exp, /*dst=*/NULL_TREE, /*src=*/NULL_TREE, /*size=*/NULL_TREE,
! 		/*maxread=*/NULL_TREE, len, size);
  }
  
! /* Emit warning if a free is called with address of a variable.  */
  
! static void
  maybe_emit_free_warning (tree exp)
  {
!   if (call_expr_nargs (exp) != 1)
      return;
  
!   tree arg = CALL_EXPR_ARG (exp, 0);
  
!   STRIP_NOPS (arg);
!   if (TREE_CODE (arg) != ADDR_EXPR)
      return;
  
!   arg = get_base_address (TREE_OPERAND (arg, 0));
!   if (arg == NULL || INDIRECT_REF_P (arg) || TREE_CODE (arg) == MEM_REF)
      return;
  
!   if (SSA_VAR_P (arg))
!     warning_at (tree_nonartificial_location (exp), OPT_Wfree_nonheap_object,
! 		"%Kattempt to free a non-heap object %qD", exp, arg);
!   else
!     warning_at (tree_nonartificial_location (exp), OPT_Wfree_nonheap_object,
! 		"%Kattempt to free a non-heap object", exp);
  }
  
  /* Fold a call to __builtin_object_size with arguments PTR and OST,
--- 12982,13688 ----
    /* Add one for the terminating nul.  */
    len = fold_build2 (PLUS_EXPR, TREE_TYPE (len), len, size_one_node);
  
!   check_access (exp, /*size=*/NULL_TREE, /*maxread=*/NULL_TREE, len, size,
! 		access_write_only);
  }
  
! /* Return true if STMT is a call to an allocation function.  Unless
!    ALL_ALLOC is set, consider only functions that return dynmamically
!    allocated objects.  Otherwise return true even for all forms of
!    alloca (including VLA).  */
  
! static bool
! fndecl_alloc_p (tree fndecl, bool all_alloc)
! {
!   if (!fndecl)
!     return false;
! 
!   /* A call to operator new isn't recognized as one to a built-in.  */
!   if (DECL_IS_OPERATOR_NEW_P (fndecl))
!     return true;
! 
!   if (fndecl_built_in_p (fndecl, BUILT_IN_NORMAL))
!     {
!       switch (DECL_FUNCTION_CODE (fndecl))
! 	{
! 	case BUILT_IN_ALLOCA:
! 	case BUILT_IN_ALLOCA_WITH_ALIGN:
! 	  return all_alloc;
! 	case BUILT_IN_ALIGNED_ALLOC:
! 	case BUILT_IN_CALLOC:
! 	case BUILT_IN_GOMP_ALLOC:
! 	case BUILT_IN_MALLOC:
! 	case BUILT_IN_REALLOC:
! 	case BUILT_IN_STRDUP:
! 	case BUILT_IN_STRNDUP:
! 	  return true;
! 	default:
! 	  break;
! 	}
!     }
! 
!   /* A function is considered an allocation function if it's declared
!      with attribute malloc with an argument naming its associated
!      deallocation function.  */
!   tree attrs = DECL_ATTRIBUTES (fndecl);
!   if (!attrs)
!     return false;
! 
!   for (tree allocs = attrs;
!        (allocs = lookup_attribute ("malloc", allocs));
!        allocs = TREE_CHAIN (allocs))
!     {
!       tree args = TREE_VALUE (allocs);
!       if (!args)
! 	continue;
! 
!       if (TREE_VALUE (args))
! 	return true;
!     }
! 
!   return false;
! }
! 
! /* Return true if STMT is a call to an allocation function.  A wrapper
!    around fndecl_alloc_p.  */
! 
! static bool
! gimple_call_alloc_p (gimple *stmt, bool all_alloc = false)
! {
!   return fndecl_alloc_p (gimple_call_fndecl (stmt), all_alloc);
! }
! 
! /* Return the zero-based number corresponding to the argument being
!    deallocated if STMT is a call to a deallocation function or UINT_MAX
!    if it isn't.  */
! 
! static unsigned
! call_dealloc_argno (tree exp)
! {
!   tree fndecl = get_callee_fndecl (exp);
!   if (!fndecl)
!     return UINT_MAX;
! 
!   return fndecl_dealloc_argno (fndecl);
! }
! 
! /* Return the zero-based number corresponding to the argument being
!    deallocated if FNDECL is a deallocation function or UINT_MAX
!    if it isn't.  */
! 
! unsigned
! fndecl_dealloc_argno (tree fndecl)
! {
!   /* A call to operator delete isn't recognized as one to a built-in.  */
!   if (DECL_IS_OPERATOR_DELETE_P (fndecl))
!     return 0;
! 
!   /* TODO: Handle user-defined functions with attribute malloc?  Handle
!      known non-built-ins like fopen?  */
!   if (fndecl_built_in_p (fndecl, BUILT_IN_NORMAL))
!     {
!       switch (DECL_FUNCTION_CODE (fndecl))
! 	{
! 	case BUILT_IN_FREE:
! 	case BUILT_IN_REALLOC:
! 	  return 0;
! 	default:
! 	  break;
! 	}
!       return UINT_MAX;
!     }
! 
!   tree attrs = DECL_ATTRIBUTES (fndecl);
!   if (!attrs)
!     return UINT_MAX;
! 
!   for (tree atfree = attrs;
!        (atfree = lookup_attribute ("*dealloc", atfree));
!        atfree = TREE_CHAIN (atfree))
!     {
!       tree alloc = TREE_VALUE (atfree);
!       if (!alloc)
! 	continue;
! 
!       tree pos = TREE_CHAIN (alloc);
!       if (!pos)
! 	return 0;
! 
!       pos = TREE_VALUE (pos);
!       return TREE_INT_CST_LOW (pos) - 1;
!     }
! 
!   return UINT_MAX;
! }
! 
! /* Return true if DELC doesn't refer to an operator delete that's
!    suitable to call with a pointer returned from the operator new
!    described by NEWC.  */
! 
! static bool
! new_delete_mismatch_p (const demangle_component &newc,
! 		       const demangle_component &delc)
! {
!   if (newc.type != delc.type)
!     return true;
! 
!   switch (newc.type)
!     {
!     case DEMANGLE_COMPONENT_NAME:
!       {
! 	int len = newc.u.s_name.len;
! 	const char *news = newc.u.s_name.s;
! 	const char *dels = delc.u.s_name.s;
! 	if (len != delc.u.s_name.len || memcmp (news, dels, len))
! 	  return true;
! 
! 	if (news[len] == 'n')
! 	  {
! 	    if (news[len + 1] == 'a')
! 	      return dels[len] != 'd' || dels[len + 1] != 'a';
! 	    if (news[len + 1] == 'w')
! 	      return dels[len] != 'd' || dels[len + 1] != 'l';
! 	  }
! 	return false;
!       }
! 
!     case DEMANGLE_COMPONENT_OPERATOR:
!       /* Operator mismatches are handled above.  */
!       return false;
! 
!     case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
!       if (newc.u.s_extended_operator.args != delc.u.s_extended_operator.args)
! 	return true;
!       return new_delete_mismatch_p (*newc.u.s_extended_operator.name,
! 				    *delc.u.s_extended_operator.name);
! 
!     case DEMANGLE_COMPONENT_FIXED_TYPE:
!       if (newc.u.s_fixed.accum != delc.u.s_fixed.accum
! 	  || newc.u.s_fixed.sat != delc.u.s_fixed.sat)
! 	return true;
!       return new_delete_mismatch_p (*newc.u.s_fixed.length,
! 				    *delc.u.s_fixed.length);
! 
!     case DEMANGLE_COMPONENT_CTOR:
!       if (newc.u.s_ctor.kind != delc.u.s_ctor.kind)
! 	return true;
!       return new_delete_mismatch_p (*newc.u.s_ctor.name,
! 				    *delc.u.s_ctor.name);
! 
!     case DEMANGLE_COMPONENT_DTOR:
!       if (newc.u.s_dtor.kind != delc.u.s_dtor.kind)
! 	return true;
!       return new_delete_mismatch_p (*newc.u.s_dtor.name,
! 				    *delc.u.s_dtor.name);
! 
!     case DEMANGLE_COMPONENT_BUILTIN_TYPE:
!       {
! 	/* The demangler API provides no better way to compare built-in
! 	   types except to by comparing their demangled names. */
! 	size_t nsz, dsz;
! 	demangle_component *pnc = const_cast<demangle_component *>(&newc);
! 	demangle_component *pdc = const_cast<demangle_component *>(&delc);
! 	char *nts = cplus_demangle_print (0, pnc, 16, &nsz);
! 	char *dts = cplus_demangle_print (0, pdc, 16, &dsz);
! 	if (!nts != !dts)
! 	  return true;
! 	bool mismatch = strcmp (nts, dts);
! 	free (nts);
! 	free (dts);
! 	return mismatch;
!       }
! 
!     case DEMANGLE_COMPONENT_SUB_STD:
!       if (newc.u.s_string.len != delc.u.s_string.len)
! 	return true;
!       return memcmp (newc.u.s_string.string, delc.u.s_string.string,
! 		     newc.u.s_string.len);
! 
!     case DEMANGLE_COMPONENT_FUNCTION_PARAM:
!     case DEMANGLE_COMPONENT_TEMPLATE_PARAM:
!       return newc.u.s_number.number != delc.u.s_number.number;
! 
!     case DEMANGLE_COMPONENT_CHARACTER:
!       return newc.u.s_character.character != delc.u.s_character.character;
! 
!     case DEMANGLE_COMPONENT_DEFAULT_ARG:
!     case DEMANGLE_COMPONENT_LAMBDA:
!       if (newc.u.s_unary_num.num != delc.u.s_unary_num.num)
! 	return true;
!       return new_delete_mismatch_p (*newc.u.s_unary_num.sub,
! 				    *delc.u.s_unary_num.sub);
!     default:
!       break;
!     }
! 
!   if (!newc.u.s_binary.left != !delc.u.s_binary.left)
!     return true;
! 
!   if (!newc.u.s_binary.left)
!     return false;
! 
!   if (new_delete_mismatch_p (*newc.u.s_binary.left, *delc.u.s_binary.left)
!       || !newc.u.s_binary.right != !delc.u.s_binary.right)
!     return true;
! 
!   if (newc.u.s_binary.right)
!     return new_delete_mismatch_p (*newc.u.s_binary.right,
! 				  *delc.u.s_binary.right);
!   return false;
! }
! 
! /* Return true if DELETE_DECL is an operator delete that's not suitable
!    to call with a pointer returned fron NEW_DECL.  */
! 
! static bool
! new_delete_mismatch_p (tree new_decl, tree delete_decl)
! {
!   tree new_name = DECL_ASSEMBLER_NAME (new_decl);
!   tree delete_name = DECL_ASSEMBLER_NAME (delete_decl);
! 
!   /* valid_new_delete_pair_p() returns a conservative result (currently
!      it only handles global operators).  A true result is reliable but
!      a false result doesn't necessarily mean the operators don't match.  */
!   if (valid_new_delete_pair_p (new_name, delete_name))
!     return false;
! 
!   /* For anything not handled by valid_new_delete_pair_p() such as member
!      operators compare the individual demangled components of the mangled
!      name.  */
!   const char *new_str = IDENTIFIER_POINTER (new_name);
!   const char *del_str = IDENTIFIER_POINTER (delete_name);
! 
!   void *np = NULL, *dp = NULL;
!   demangle_component *ndc = cplus_demangle_v3_components (new_str, 0, &np);
!   demangle_component *ddc = cplus_demangle_v3_components (del_str, 0, &dp);
!   bool mismatch = new_delete_mismatch_p (*ndc, *ddc);
!   free (np);
!   free (dp);
!   return mismatch;
! }
! 
! /* ALLOC_DECL and DEALLOC_DECL are pair of allocation and deallocation
!    functions.  Return true if the latter is suitable to deallocate objects
!    allocated by calls to the former.  */
! 
! static bool
! matching_alloc_calls_p (tree alloc_decl, tree dealloc_decl)
! {
!   /* Set to alloc_kind_t::builtin if ALLOC_DECL is associated with
!      a built-in deallocator.  */
!   enum class alloc_kind_t { none, builtin, user }
!   alloc_dealloc_kind = alloc_kind_t::none;
! 
!   if (DECL_IS_OPERATOR_NEW_P (alloc_decl))
!     {
!       if (DECL_IS_OPERATOR_DELETE_P (dealloc_decl))
! 	/* Return true iff both functions are of the same array or
! 	   singleton form and false otherwise.  */
! 	return !new_delete_mismatch_p (alloc_decl, dealloc_decl);
! 
!       /* Return false for deallocation functions that are known not
! 	 to match.  */
!       if (fndecl_built_in_p (dealloc_decl, BUILT_IN_FREE)
! 	  || fndecl_built_in_p (dealloc_decl, BUILT_IN_REALLOC))
! 	return false;
!       /* Otherwise proceed below to check the deallocation function's
! 	 "*dealloc" attributes to look for one that mentions this operator
! 	 new.  */
!     }
!   else if (fndecl_built_in_p (alloc_decl, BUILT_IN_NORMAL))
!     {
!       switch (DECL_FUNCTION_CODE (alloc_decl))
! 	{
! 	case BUILT_IN_ALLOCA:
! 	case BUILT_IN_ALLOCA_WITH_ALIGN:
! 	  return false;
! 
! 	case BUILT_IN_ALIGNED_ALLOC:
! 	case BUILT_IN_CALLOC:
! 	case BUILT_IN_GOMP_ALLOC:
! 	case BUILT_IN_MALLOC:
! 	case BUILT_IN_REALLOC:
! 	case BUILT_IN_STRDUP:
! 	case BUILT_IN_STRNDUP:
! 	  if (DECL_IS_OPERATOR_DELETE_P (dealloc_decl))
! 	    return false;
! 
! 	  if (fndecl_built_in_p (dealloc_decl, BUILT_IN_FREE)
! 	      || fndecl_built_in_p (dealloc_decl, BUILT_IN_REALLOC))
! 	    return true;
! 
! 	  alloc_dealloc_kind = alloc_kind_t::builtin;
! 	  break;
! 
! 	default:
! 	  break;
! 	}
!     }
! 
!   /* Set if DEALLOC_DECL both allocates and deallocates.  */
!   alloc_kind_t realloc_kind = alloc_kind_t::none;
! 
!   if (fndecl_built_in_p (dealloc_decl, BUILT_IN_NORMAL))
!     {
!       built_in_function dealloc_code = DECL_FUNCTION_CODE (dealloc_decl);
!       if (dealloc_code == BUILT_IN_REALLOC)
! 	realloc_kind = alloc_kind_t::builtin;
! 
!       for (tree amats = DECL_ATTRIBUTES (alloc_decl);
! 	   (amats = lookup_attribute ("malloc", amats));
! 	   amats = TREE_CHAIN (amats))
! 	{
! 	  tree args = TREE_VALUE (amats);
! 	  if (!args)
! 	    continue;
! 
! 	  tree fndecl = TREE_VALUE (args);
! 	  if (!fndecl || !DECL_P (fndecl))
! 	    continue;
! 
! 	  if (fndecl_built_in_p (fndecl, BUILT_IN_NORMAL)
! 	      && dealloc_code == DECL_FUNCTION_CODE (fndecl))
! 	    return true;
! 	}
!     }
! 
!   const bool alloc_builtin = fndecl_built_in_p (alloc_decl, BUILT_IN_NORMAL);
!   alloc_kind_t realloc_dealloc_kind = alloc_kind_t::none;
! 
!   /* If DEALLOC_DECL has an internal "*dealloc" attribute scan the list
!      of its associated allocation functions for ALLOC_DECL.
!      If the corresponding ALLOC_DECL is found they're a matching pair,
!      otherwise they're not.
!      With DDATS set to the Deallocator's *Dealloc ATtributes...  */
!   for (tree ddats = DECL_ATTRIBUTES (dealloc_decl);
!        (ddats = lookup_attribute ("*dealloc", ddats));
!        ddats = TREE_CHAIN (ddats))
!     {
!       tree args = TREE_VALUE (ddats);
!       if (!args)
! 	continue;
! 
!       tree alloc = TREE_VALUE (args);
!       if (!alloc)
! 	continue;
! 
!       if (alloc == DECL_NAME (dealloc_decl))
! 	realloc_kind = alloc_kind_t::user;
! 
!       if (DECL_P (alloc))
! 	{
! 	  gcc_checking_assert (fndecl_built_in_p (alloc, BUILT_IN_NORMAL));
! 
! 	  switch (DECL_FUNCTION_CODE (alloc))
! 	    {
! 	    case BUILT_IN_ALIGNED_ALLOC:
! 	    case BUILT_IN_CALLOC:
! 	    case BUILT_IN_GOMP_ALLOC:
! 	    case BUILT_IN_MALLOC:
! 	    case BUILT_IN_REALLOC:
! 	    case BUILT_IN_STRDUP:
! 	    case BUILT_IN_STRNDUP:
! 	      realloc_dealloc_kind = alloc_kind_t::builtin;
! 	      break;
! 	    default:
! 	      break;
! 	    }
! 
! 	  if (!alloc_builtin)
! 	    continue;
! 
! 	  if (DECL_FUNCTION_CODE (alloc) != DECL_FUNCTION_CODE (alloc_decl))
! 	    continue;
! 
! 	  return true;
! 	}
! 
!       if (alloc == DECL_NAME (alloc_decl))
! 	return true;
!     }
! 
!   if (realloc_kind == alloc_kind_t::none)
!     return false;
! 
!   hash_set<tree> common_deallocs;
!   /* Special handling for deallocators.  Iterate over both the allocator's
!      and the reallocator's associated deallocator functions looking for
!      the first one in common.  If one is found, the de/reallocator is
!      a match for the allocator even though the latter isn't directly
!      associated with the former.  This simplifies declarations in system
!      headers.
!      With AMATS set to the Allocator's Malloc ATtributes,
!      and  RMATS set to Reallocator's Malloc ATtributes...  */
!   for (tree amats = DECL_ATTRIBUTES (alloc_decl),
! 	 rmats = DECL_ATTRIBUTES (dealloc_decl);
!        (amats = lookup_attribute ("malloc", amats))
! 	 || (rmats = lookup_attribute ("malloc", rmats));
!        amats = amats ? TREE_CHAIN (amats) : NULL_TREE,
! 	 rmats = rmats ? TREE_CHAIN (rmats) : NULL_TREE)
!     {
!       if (tree args = amats ? TREE_VALUE (amats) : NULL_TREE)
! 	if (tree adealloc = TREE_VALUE (args))
! 	  {
! 	    if (DECL_P (adealloc)
! 		&& fndecl_built_in_p (adealloc, BUILT_IN_NORMAL))
! 	      {
! 		built_in_function fncode = DECL_FUNCTION_CODE (adealloc);
! 		if (fncode == BUILT_IN_FREE || fncode == BUILT_IN_REALLOC)
! 		  {
! 		    if (realloc_kind == alloc_kind_t::builtin)
! 		      return true;
! 		    alloc_dealloc_kind = alloc_kind_t::builtin;
! 		  }
! 		continue;
! 	      }
! 
! 	    common_deallocs.add (adealloc);
! 	  }
! 
!       if (tree args = rmats ? TREE_VALUE (rmats) : NULL_TREE)
! 	if (tree ddealloc = TREE_VALUE (args))
! 	  {
! 	    if (DECL_P (ddealloc)
! 		&& fndecl_built_in_p (ddealloc, BUILT_IN_NORMAL))
! 	      {
! 		built_in_function fncode = DECL_FUNCTION_CODE (ddealloc);
! 		if (fncode == BUILT_IN_FREE || fncode == BUILT_IN_REALLOC)
! 		  {
! 		    if (alloc_dealloc_kind == alloc_kind_t::builtin)
! 		      return true;
! 		    realloc_dealloc_kind = alloc_kind_t::builtin;
! 		  }
! 		continue;
! 	      }
! 
! 	    if (common_deallocs.add (ddealloc))
! 	      return true;
! 	  }
!     }
! 
!   /* Succeed only if ALLOC_DECL and the reallocator DEALLOC_DECL share
!      a built-in deallocator.  */
!   return  (alloc_dealloc_kind == alloc_kind_t::builtin
! 	   && realloc_dealloc_kind == alloc_kind_t::builtin);
! }
! 
! /* Return true if DEALLOC_DECL is a function suitable to deallocate
!    objectes allocated by the ALLOC call.  */
! 
! static bool
! matching_alloc_calls_p (gimple *alloc, tree dealloc_decl)
! {
!   tree alloc_decl = gimple_call_fndecl (alloc);
!   if (!alloc_decl)
!     return true;
! 
!   return matching_alloc_calls_p (alloc_decl, dealloc_decl);
! }
! 
! /* Diagnose a call EXP to deallocate a pointer referenced by AREF if it
!    includes a nonzero offset.  Such a pointer cannot refer to the beginning
!    of an allocated object.  A negative offset may refer to it only if
!    the target pointer is unknown.  */
! 
! static bool
! warn_dealloc_offset (location_t loc, tree exp, const access_ref &aref)
! {
!   if (aref.deref || aref.offrng[0] <= 0 || aref.offrng[1] <= 0)
!     return false;
! 
!   tree dealloc_decl = get_callee_fndecl (exp);
!   if (!dealloc_decl)
!     return false;
! 
!   if (DECL_IS_OPERATOR_DELETE_P (dealloc_decl)
!       && !DECL_IS_REPLACEABLE_OPERATOR (dealloc_decl))
!     {
!       /* A call to a user-defined operator delete with a pointer plus offset
! 	 may be valid if it's returned from an unknown function (i.e., one
! 	 that's not operator new).  */
!       if (TREE_CODE (aref.ref) == SSA_NAME)
! 	{
! 	  gimple *def_stmt = SSA_NAME_DEF_STMT (aref.ref);
! 	  if (is_gimple_call (def_stmt))
! 	    {
! 	      tree alloc_decl = gimple_call_fndecl (def_stmt);
! 	      if (!alloc_decl || !DECL_IS_OPERATOR_NEW_P (alloc_decl))
! 		return false;
! 	    }
! 	}
!     }
! 
!   char offstr[80];
!   offstr[0] = '\0';
!   if (wi::fits_shwi_p (aref.offrng[0]))
!     {
!       if (aref.offrng[0] == aref.offrng[1]
! 	  || !wi::fits_shwi_p (aref.offrng[1]))
! 	sprintf (offstr, " %lli",
! 		 (long long)aref.offrng[0].to_shwi ());
!       else
! 	sprintf (offstr, " [%lli, %lli]",
! 		 (long long)aref.offrng[0].to_shwi (),
! 		 (long long)aref.offrng[1].to_shwi ());
!     }
! 
!   if (!warning_at (loc, OPT_Wfree_nonheap_object,
! 		   "%K%qD called on pointer %qE with nonzero offset%s",
! 		   exp, dealloc_decl, aref.ref, offstr))
!     return false;
! 
!   if (DECL_P (aref.ref))
!     inform (DECL_SOURCE_LOCATION (aref.ref), "declared here");
!   else if (TREE_CODE (aref.ref) == SSA_NAME)
!     {
!       gimple *def_stmt = SSA_NAME_DEF_STMT (aref.ref);
!       if (is_gimple_call (def_stmt))
! 	{
! 	  location_t def_loc = gimple_location (def_stmt);
! 	  tree alloc_decl = gimple_call_fndecl (def_stmt);
! 	  if (alloc_decl)
! 	    inform (def_loc,
! 		    "returned from %qD", alloc_decl);
! 	  else if (tree alloc_fntype = gimple_call_fntype (def_stmt))
! 	    inform (def_loc,
! 		    "returned from %qT", alloc_fntype);
! 	  else
! 	    inform (def_loc,  "obtained here");
! 	}
!     }
! 
!   return true;
! }
! 
! /* Issue a warning if a deallocation function such as free, realloc,
!    or C++ operator delete is called with an argument not returned by
!    a matching allocation function such as malloc or the corresponding
!    form of C++ operatorn new.  */
! 
! void
  maybe_emit_free_warning (tree exp)
  {
!   tree fndecl = get_callee_fndecl (exp);
!   if (!fndecl)
      return;
  
!   unsigned argno = call_dealloc_argno (exp);
!   if ((unsigned) call_expr_nargs (exp) <= argno)
!     return;
  
!   tree ptr = CALL_EXPR_ARG (exp, argno);
!   if (integer_zerop (ptr))
      return;
  
!   access_ref aref;
!   if (!compute_objsize (ptr, 0, &aref))
      return;
  
!   tree ref = aref.ref;
!   if (integer_zerop (ref))
!     return;
! 
!   tree dealloc_decl = get_callee_fndecl (exp);
!   location_t loc = tree_inlined_location (exp);
! 
!   if (DECL_P (ref) || EXPR_P (ref))
!     {
!       /* Diagnose freeing a declared object.  */
!       if (aref.ref_declared ()
! 	  && warning_at (loc, OPT_Wfree_nonheap_object,
! 			 "%K%qD called on unallocated object %qD",
! 			 exp, dealloc_decl, ref))
! 	{
! 	  loc = (DECL_P (ref)
! 		 ? DECL_SOURCE_LOCATION (ref)
! 		 : EXPR_LOCATION (ref));
! 	  inform (loc, "declared here");
! 	  return;
! 	}
! 
!       /* Diagnose freeing a pointer that includes a positive offset.
! 	 Such a pointer cannot refer to the beginning of an allocated
! 	 object.  A negative offset may refer to it.  */
!       if (aref.sizrng[0] != aref.sizrng[1]
! 	  && warn_dealloc_offset (loc, exp, aref))
! 	return;
!     }
!   else if (CONSTANT_CLASS_P (ref))
!     {
!       if (warning_at (loc, OPT_Wfree_nonheap_object,
! 		      "%K%qD called on a pointer to an unallocated "
! 		      "object %qE", exp, dealloc_decl, ref))
! 	{
! 	  if (TREE_CODE (ptr) == SSA_NAME)
! 	    {
! 	      gimple *def_stmt = SSA_NAME_DEF_STMT (ptr);
! 	      if (is_gimple_assign (def_stmt))
! 		{
! 		  location_t loc = gimple_location (def_stmt);
! 		  inform (loc, "assigned here");
! 		}
! 	    }
! 	  return;
! 	}
!     }
!   else if (TREE_CODE (ref) == SSA_NAME)
!     {
!       /* Also warn if the pointer argument refers to the result
! 	 of an allocation call like alloca or VLA.  */
!       gimple *def_stmt = SSA_NAME_DEF_STMT (ref);
!       if (is_gimple_call (def_stmt))
! 	{
! 	  bool warned = false;
! 	  if (gimple_call_alloc_p (def_stmt))
! 	    {
! 	      if (matching_alloc_calls_p (def_stmt, dealloc_decl))
! 		{
! 		  if (warn_dealloc_offset (loc, exp, aref))
! 		    return;
! 		}
! 	      else
! 		{
! 		  tree alloc_decl = gimple_call_fndecl (def_stmt);
! 		  int opt = (DECL_IS_OPERATOR_NEW_P (alloc_decl)
! 			     || DECL_IS_OPERATOR_DELETE_P (dealloc_decl)
! 			     ? OPT_Wmismatched_new_delete
! 			     : OPT_Wmismatched_dealloc);
! 		  warned = warning_at (loc, opt,
! 				       "%K%qD called on pointer returned "
! 				       "from a mismatched allocation "
! 				       "function", exp, dealloc_decl);
! 		}
! 	    }
! 	  else if (gimple_call_builtin_p (def_stmt, BUILT_IN_ALLOCA)
! 	    	   || gimple_call_builtin_p (def_stmt,
! 	    				     BUILT_IN_ALLOCA_WITH_ALIGN))
! 	    warned = warning_at (loc, OPT_Wfree_nonheap_object,
! 				 "%K%qD called on pointer to "
! 				 "an unallocated object",
! 				 exp, dealloc_decl);
! 	  else if (warn_dealloc_offset (loc, exp, aref))
! 	    return;
! 
! 	  if (warned)
! 	    {
! 	      tree fndecl = gimple_call_fndecl (def_stmt);
! 	      inform (gimple_location (def_stmt),
! 		      "returned from %qD", fndecl);
! 	      return;
! 	    }
! 	}
!       else if (gimple_nop_p (def_stmt))
! 	{
! 	  ref = SSA_NAME_VAR (ref);
! 	  /* Diagnose freeing a pointer that includes a positive offset.  */
! 	  if (TREE_CODE (ref) == PARM_DECL
! 	      && !aref.deref
! 	      && aref.sizrng[0] != aref.sizrng[1]
! 	      && aref.offrng[0] > 0 && aref.offrng[1] > 0
! 	      && warn_dealloc_offset (loc, exp, aref))
! 	    return;
! 	}
!     }
  }
  
  /* Fold a call to __builtin_object_size with arguments PTR and OST,
*************** is_inexpensive_builtin (tree decl)
*** 11732,11737 ****
--- 14207,14213 ----
        case BUILT_IN_BSWAP16:
        case BUILT_IN_BSWAP32:
        case BUILT_IN_BSWAP64:
+       case BUILT_IN_BSWAP128:
        case BUILT_IN_CLZ:
        case BUILT_IN_CLZIMAX:
        case BUILT_IN_CLZL:
*************** builtin_with_linkage_p (tree decl)
*** 11899,11901 ****
--- 14375,14570 ----
      }
    return false;
  }
+ 
+ /* Return true if OFFRNG is bounded to a subrange of offset values
+    valid for the largest possible object.  */
+ 
+ bool
+ access_ref::offset_bounded () const
+ {
+   tree min = TYPE_MIN_VALUE (ptrdiff_type_node);
+   tree max = TYPE_MAX_VALUE (ptrdiff_type_node);
+   return wi::to_offset (min) <= offrng[0] && offrng[1] <= wi::to_offset (max);
+ }
+ 
+ /* If CALLEE has known side effects, fill in INFO and return true.
+    See tree-ssa-structalias.c:find_func_aliases
+    for the list of builtins we might need to handle here.  */
+ 
+ attr_fnspec
+ builtin_fnspec (tree callee)
+ {
+   built_in_function code = DECL_FUNCTION_CODE (callee);
+ 
+   switch (code)
+     {
+       /* All the following functions read memory pointed to by
+ 	 their second argument and write memory pointed to by first
+ 	 argument.
+ 	 strcat/strncat additionally reads memory pointed to by the first
+ 	 argument.  */
+       case BUILT_IN_STRCAT:
+       case BUILT_IN_STRCAT_CHK:
+ 	return "1cW 1 ";
+       case BUILT_IN_STRNCAT:
+       case BUILT_IN_STRNCAT_CHK:
+ 	return "1cW 13";
+       case BUILT_IN_STRCPY:
+       case BUILT_IN_STRCPY_CHK:
+ 	return "1cO 1 ";
+       case BUILT_IN_STPCPY:
+       case BUILT_IN_STPCPY_CHK:
+ 	return ".cO 1 ";
+       case BUILT_IN_STRNCPY:
+       case BUILT_IN_MEMCPY:
+       case BUILT_IN_MEMMOVE:
+       case BUILT_IN_TM_MEMCPY:
+       case BUILT_IN_TM_MEMMOVE:
+       case BUILT_IN_STRNCPY_CHK:
+       case BUILT_IN_MEMCPY_CHK:
+       case BUILT_IN_MEMMOVE_CHK:
+ 	return "1cO313";
+       case BUILT_IN_MEMPCPY:
+       case BUILT_IN_MEMPCPY_CHK:
+ 	return ".cO313";
+       case BUILT_IN_STPNCPY:
+       case BUILT_IN_STPNCPY_CHK:
+ 	return ".cO313";
+       case BUILT_IN_BCOPY:
+ 	return ".c23O3";
+       case BUILT_IN_BZERO:
+ 	return ".cO2";
+       case BUILT_IN_MEMCMP:
+       case BUILT_IN_MEMCMP_EQ:
+       case BUILT_IN_BCMP:
+       case BUILT_IN_STRNCMP:
+       case BUILT_IN_STRNCMP_EQ:
+       case BUILT_IN_STRNCASECMP:
+ 	return ".cR3R3";
+ 
+       /* The following functions read memory pointed to by their
+ 	 first argument.  */
+       CASE_BUILT_IN_TM_LOAD (1):
+       CASE_BUILT_IN_TM_LOAD (2):
+       CASE_BUILT_IN_TM_LOAD (4):
+       CASE_BUILT_IN_TM_LOAD (8):
+       CASE_BUILT_IN_TM_LOAD (FLOAT):
+       CASE_BUILT_IN_TM_LOAD (DOUBLE):
+       CASE_BUILT_IN_TM_LOAD (LDOUBLE):
+       CASE_BUILT_IN_TM_LOAD (M64):
+       CASE_BUILT_IN_TM_LOAD (M128):
+       CASE_BUILT_IN_TM_LOAD (M256):
+       case BUILT_IN_TM_LOG:
+       case BUILT_IN_TM_LOG_1:
+       case BUILT_IN_TM_LOG_2:
+       case BUILT_IN_TM_LOG_4:
+       case BUILT_IN_TM_LOG_8:
+       case BUILT_IN_TM_LOG_FLOAT:
+       case BUILT_IN_TM_LOG_DOUBLE:
+       case BUILT_IN_TM_LOG_LDOUBLE:
+       case BUILT_IN_TM_LOG_M64:
+       case BUILT_IN_TM_LOG_M128:
+       case BUILT_IN_TM_LOG_M256:
+ 	return ".cR ";
+ 
+       case BUILT_IN_INDEX:
+       case BUILT_IN_RINDEX:
+       case BUILT_IN_STRCHR:
+       case BUILT_IN_STRLEN:
+       case BUILT_IN_STRRCHR:
+ 	return ".cR ";
+       case BUILT_IN_STRNLEN:
+ 	return ".cR2";
+ 
+       /* These read memory pointed to by the first argument.
+ 	 Allocating memory does not have any side-effects apart from
+ 	 being the definition point for the pointer.
+ 	 Unix98 specifies that errno is set on allocation failure.  */
+       case BUILT_IN_STRDUP:
+ 	return "mCR ";
+       case BUILT_IN_STRNDUP:
+ 	return "mCR2";
+       /* Allocating memory does not have any side-effects apart from
+ 	 being the definition point for the pointer.  */
+       case BUILT_IN_MALLOC:
+       case BUILT_IN_ALIGNED_ALLOC:
+       case BUILT_IN_CALLOC:
+       case BUILT_IN_GOMP_ALLOC:
+ 	return "mC";
+       CASE_BUILT_IN_ALLOCA:
+ 	return "mc";
+       /* These read memory pointed to by the first argument with size
+ 	 in the third argument.  */
+       case BUILT_IN_MEMCHR:
+ 	return ".cR3";
+       /* These read memory pointed to by the first and second arguments.  */
+       case BUILT_IN_STRSTR:
+       case BUILT_IN_STRPBRK:
+       case BUILT_IN_STRCASECMP:
+       case BUILT_IN_STRCSPN:
+       case BUILT_IN_STRSPN:
+       case BUILT_IN_STRCMP:
+       case BUILT_IN_STRCMP_EQ:
+ 	return ".cR R ";
+       /* Freeing memory kills the pointed-to memory.  More importantly
+ 	 the call has to serve as a barrier for moving loads and stores
+ 	 across it.  */
+       case BUILT_IN_STACK_RESTORE:
+       case BUILT_IN_FREE:
+       case BUILT_IN_GOMP_FREE:
+ 	return ".co ";
+       case BUILT_IN_VA_END:
+ 	return ".cO ";
+       /* Realloc serves both as allocation point and deallocation point.  */
+       case BUILT_IN_REALLOC:
+ 	return ".Cw ";
+       case BUILT_IN_GAMMA_R:
+       case BUILT_IN_GAMMAF_R:
+       case BUILT_IN_GAMMAL_R:
+       case BUILT_IN_LGAMMA_R:
+       case BUILT_IN_LGAMMAF_R:
+       case BUILT_IN_LGAMMAL_R:
+ 	return ".C. Ot";
+       case BUILT_IN_FREXP:
+       case BUILT_IN_FREXPF:
+       case BUILT_IN_FREXPL:
+       case BUILT_IN_MODF:
+       case BUILT_IN_MODFF:
+       case BUILT_IN_MODFL:
+ 	return ".c. Ot";
+       case BUILT_IN_REMQUO:
+       case BUILT_IN_REMQUOF:
+       case BUILT_IN_REMQUOL:
+ 	return ".c. . Ot";
+       case BUILT_IN_SINCOS:
+       case BUILT_IN_SINCOSF:
+       case BUILT_IN_SINCOSL:
+ 	return ".c. OtOt";
+       case BUILT_IN_MEMSET:
+       case BUILT_IN_MEMSET_CHK:
+       case BUILT_IN_TM_MEMSET:
+ 	return "1cO3";
+       CASE_BUILT_IN_TM_STORE (1):
+       CASE_BUILT_IN_TM_STORE (2):
+       CASE_BUILT_IN_TM_STORE (4):
+       CASE_BUILT_IN_TM_STORE (8):
+       CASE_BUILT_IN_TM_STORE (FLOAT):
+       CASE_BUILT_IN_TM_STORE (DOUBLE):
+       CASE_BUILT_IN_TM_STORE (LDOUBLE):
+       CASE_BUILT_IN_TM_STORE (M64):
+       CASE_BUILT_IN_TM_STORE (M128):
+       CASE_BUILT_IN_TM_STORE (M256):
+ 	return ".cO ";
+       case BUILT_IN_STACK_SAVE:
+ 	return ".c";
+       case BUILT_IN_ASSUME_ALIGNED:
+ 	return "1cX ";
+       /* But posix_memalign stores a pointer into the memory pointed to
+ 	 by its first argument.  */
+       case BUILT_IN_POSIX_MEMALIGN:
+ 	return ".cOt";
+ 
+       default:
+ 	return "";
+     }
+ }
diff -Nrcpad gcc-10.3.0/gcc/builtins.def gcc-11.1.0/gcc/builtins.def
*** gcc-10.3.0/gcc/builtins.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/builtins.def	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* This file contains the definitions and documentation for the
     builtins used in the GNU compiler.
!    Copyright (C) 2000-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* This file contains the definitions and documentation for the
     builtins used in the GNU compiler.
!    Copyright (C) 2000-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 138,171 ****
  #undef DEF_C94_BUILTIN
  #define DEF_C94_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
! 	       true, true, !flag_isoc94, ATTRS, targetm.libc_has_function (function_c94), true)
  
  /* Like DEF_LIB_BUILTIN, except that the function is only a part of
     the standard in C99 or above.  */
  #undef DEF_C99_BUILTIN
  #define DEF_C99_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
! 	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_misc), true)
  
  /* Like DEF_LIB_BUILTIN, except that the function is only a part of
     the standard in C11 or above.  */
  #undef DEF_C11_BUILTIN
  #define DEF_C11_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
! 	       true, true, !flag_isoc11, ATTRS, targetm.libc_has_function (function_c11_misc), true)
  
  /* Like DEF_LIB_BUILTIN, except that the function is only a part of
     the standard in C2x or above.  */
  #undef DEF_C2X_BUILTIN
  #define DEF_C2X_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
! 	       true, true, !flag_isoc2x, ATTRS, targetm.libc_has_function (function_c2x_misc), true)
  
  /* Like DEF_C99_BUILTIN, but for complex math functions.  */
  #undef DEF_C99_COMPL_BUILTIN
  #define DEF_C99_COMPL_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
! 	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_math_complex), true)
  
  /* Builtin that is specified by C99 and C90 reserve the name for future use.
     We can still recognize the builtin in C90 mode but we can't produce it
--- 138,178 ----
  #undef DEF_C94_BUILTIN
  #define DEF_C94_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
! 	       true, true, !flag_isoc94, ATTRS, \
! 	       targetm.libc_has_function (function_c94, NULL_TREE), true)
  
  /* Like DEF_LIB_BUILTIN, except that the function is only a part of
     the standard in C99 or above.  */
  #undef DEF_C99_BUILTIN
  #define DEF_C99_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
! 	       true, true, !flag_isoc99, ATTRS, \
! 	       targetm.libc_has_function (function_c99_misc, NULL_TREE), true)
  
  /* Like DEF_LIB_BUILTIN, except that the function is only a part of
     the standard in C11 or above.  */
  #undef DEF_C11_BUILTIN
  #define DEF_C11_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
! 	       true, true, !flag_isoc11, ATTRS, \
! 	       targetm.libc_has_function (function_c11_misc, NULL_TREE), true)
  
  /* Like DEF_LIB_BUILTIN, except that the function is only a part of
     the standard in C2x or above.  */
  #undef DEF_C2X_BUILTIN
  #define DEF_C2X_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
! 	       true, true, !flag_isoc2x, ATTRS, \
! 	       targetm.libc_has_function (function_c2x_misc, NULL_TREE), true)
  
  /* Like DEF_C99_BUILTIN, but for complex math functions.  */
  #undef DEF_C99_COMPL_BUILTIN
  #define DEF_C99_COMPL_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
! 	       true, true, !flag_isoc99, ATTRS, \
! 	       targetm.libc_has_function (function_c99_math_complex, \
! 					  NULL_TREE), \
! 	       true)
  
  /* Builtin that is specified by C99 and C90 reserve the name for future use.
     We can still recognize the builtin in C90 mode but we can't produce it
*************** along with GCC; see the file COPYING3.
*** 173,179 ****
  #undef DEF_C99_C90RES_BUILTIN
  #define DEF_C99_C90RES_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
! 	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_misc), true)
  
  /* Builtin that C99 reserve the name for future use. We can still recognize
     the builtin in C99 mode but we can't produce it implicitly.  */
--- 180,187 ----
  #undef DEF_C99_C90RES_BUILTIN
  #define DEF_C99_C90RES_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
! 	       true, true, !flag_isoc99, ATTRS, \
! 	       targetm.libc_has_function (function_c99_misc, NULL_TREE), true)
  
  /* Builtin that C99 reserve the name for future use. We can still recognize
     the builtin in C99 mode but we can't produce it implicitly.  */
*************** along with GCC; see the file COPYING3.
*** 222,240 ****
  		|| flag_tree_parallelize_loops > 1 \
  		|| flag_offload_abi != OFFLOAD_ABI_UNSET))
  
- #undef DEF_HSA_BUILTIN
- #ifdef ENABLE_HSA
- #define DEF_HSA_BUILTIN(ENUM, NAME, TYPE, ATTRS)			\
-   DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
-                false, false, true, ATTRS, false, \
- 	       (!flag_disable_hsa))
- #else
- #define DEF_HSA_BUILTIN(ENUM, NAME, TYPE, ATTRS)			\
-   DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
-                false, false, true, ATTRS, false, \
- 	       (false))
- #endif
- 
  /* Builtin used by the implementation of GNU TM.  These
     functions are mapped to the actual implementation of the STM library. */
  #undef DEF_TM_BUILTIN
--- 230,235 ----
*************** along with GCC; see the file COPYING3.
*** 250,255 ****
--- 245,251 ----
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
  	       true, true, true, ATTRS, true, \
  	      (flag_sanitize & (SANITIZE_ADDRESS | SANITIZE_THREAD \
+ 				| SANITIZE_HWADDRESS \
  				| SANITIZE_UNDEFINED \
  				| SANITIZE_UNDEFINED_NONDEFAULT) \
  	       || flag_sanitize_coverage))
*************** along with GCC; see the file COPYING3.
*** 259,265 ****
     `errno'.  If !flag_errno_math they are instead "const".  */
  #undef ATTR_MATHFN_ERRNO
  #define ATTR_MATHFN_ERRNO (flag_errno_math ? \
! 	ATTR_NOTHROW_LEAF_LIST : ATTR_CONST_NOTHROW_LEAF_LIST)
  
  /* Define an attribute list for math functions that are normally
     "const" but if flag_rounding_math is set they are instead "pure".
--- 255,261 ----
     `errno'.  If !flag_errno_math they are instead "const".  */
  #undef ATTR_MATHFN_ERRNO
  #define ATTR_MATHFN_ERRNO (flag_errno_math ? \
! 	ATTR_ERRNOCONST_NOTHROW_LEAF_LIST : ATTR_CONST_NOTHROW_LEAF_LIST)
  
  /* Define an attribute list for math functions that are normally
     "const" but if flag_rounding_math is set they are instead "pure".
*************** along with GCC; see the file COPYING3.
*** 276,282 ****
     "const" depending on whether we care about FP rounding.  */
  #undef ATTR_MATHFN_FPROUNDING_ERRNO
  #define ATTR_MATHFN_FPROUNDING_ERRNO (flag_errno_math ? \
! 	ATTR_NOTHROW_LEAF_LIST : ATTR_MATHFN_FPROUNDING)
  
  /* Define an attribute list for math functions that need to mind FP
     rounding, but because they store into memory they are never "const"
--- 272,279 ----
     "const" depending on whether we care about FP rounding.  */
  #undef ATTR_MATHFN_FPROUNDING_ERRNO
  #define ATTR_MATHFN_FPROUNDING_ERRNO (flag_errno_math ? \
! 	(flag_rounding_math ? ATTR_ERRNOPURE_NOTHROW_LEAF_LIST \
! 	 : ATTR_ERRNOCONST_NOTHROW_LEAF_LIST) : ATTR_MATHFN_FPROUNDING)
  
  /* Define an attribute list for math functions that need to mind FP
     rounding, but because they store into memory they are never "const"
*************** DEF_GCC_BUILTIN        (BUILT_IN_NANSF,
*** 522,527 ****
--- 519,527 ----
  DEF_GCC_BUILTIN        (BUILT_IN_NANSL, "nansl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
  DEF_GCC_FLOATN_NX_BUILTINS (BUILT_IN_NANS, "nans", NAN_TYPE, ATTR_CONST_NOTHROW_NONNULL)
  #undef NAN_TYPE
+ DEF_GCC_BUILTIN        (BUILT_IN_NANSD32, "nansd32", BT_FN_DFLOAT32_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+ DEF_GCC_BUILTIN        (BUILT_IN_NANSD64, "nansd64", BT_FN_DFLOAT64_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+ DEF_GCC_BUILTIN        (BUILT_IN_NANSD128, "nansd128", BT_FN_DFLOAT128_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
  DEF_C99_BUILTIN        (BUILT_IN_NEARBYINT, "nearbyint", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_C99_BUILTIN        (BUILT_IN_NEARBYINTF, "nearbyintf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_C99_BUILTIN        (BUILT_IN_NEARBYINTL, "nearbyintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
*************** DEF_EXT_LIB_BUILTIN    (BUILT_IN_BZERO,
*** 706,731 ****
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_INDEX, "index", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_MEMCHR, "memchr", BT_FN_PTR_CONST_PTR_INT_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_MEMCMP, "memcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
! DEF_LIB_BUILTIN	       (BUILT_IN_MEMCPY, "memcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
! DEF_LIB_BUILTIN	       (BUILT_IN_MEMMOVE, "memmove", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMPCPY, "mempcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RETNONNULL_NOTHROW_LEAF)
! DEF_LIB_BUILTIN	       (BUILT_IN_MEMSET, "memset", BT_FN_PTR_PTR_INT_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_RINDEX, "rindex", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPCPY, "stpcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_RETNONNULL_NOTHROW_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPNCPY, "stpncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_RETNONNULL_NOTHROW_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCASECMP, "strcasecmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
! DEF_LIB_BUILTIN        (BUILT_IN_STRCAT, "strcat", BT_FN_STRING_STRING_CONST_STRING, ATTR_RET1_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_STRCHR, "strchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_STRCMP, "strcmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
! DEF_LIB_BUILTIN        (BUILT_IN_STRCPY, "strcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_RET1_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_STRCSPN, "strcspn", BT_FN_SIZE_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
  DEF_C2X_BUILTIN        (BUILT_IN_STRDUP, "strdup", BT_FN_STRING_CONST_STRING, ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_NONNULL_LEAF)
  DEF_C2X_BUILTIN        (BUILT_IN_STRNDUP, "strndup", BT_FN_STRING_CONST_STRING_SIZE, ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_STRLEN, "strlen", BT_FN_SIZE_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCASECMP, "strncasecmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
! DEF_LIB_BUILTIN        (BUILT_IN_STRNCAT, "strncat", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_STRNCMP, "strncmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
! DEF_LIB_BUILTIN        (BUILT_IN_STRNCPY, "strncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNLEN, "strnlen", BT_FN_SIZE_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_STRPBRK, "strpbrk", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_STRRCHR, "strrchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
--- 706,731 ----
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_INDEX, "index", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_MEMCHR, "memchr", BT_FN_PTR_CONST_PTR_INT_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_MEMCMP, "memcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
! DEF_LIB_BUILTIN	       (BUILT_IN_MEMCPY, "memcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
! DEF_LIB_BUILTIN	       (BUILT_IN_MEMMOVE, "memmove", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMPCPY, "mempcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RETNONNULL_NOTHROW_LEAF)
! DEF_LIB_BUILTIN	       (BUILT_IN_MEMSET, "memset", BT_FN_PTR_PTR_INT_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_RINDEX, "rindex", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPCPY, "stpcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_RETNONNULL_NOTHROW_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPNCPY, "stpncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_RETNONNULL_NOTHROW_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCASECMP, "strcasecmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
! DEF_LIB_BUILTIN        (BUILT_IN_STRCAT, "strcat", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_STRCHR, "strchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_STRCMP, "strcmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
! DEF_LIB_BUILTIN        (BUILT_IN_STRCPY, "strcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_STRCSPN, "strcspn", BT_FN_SIZE_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
  DEF_C2X_BUILTIN        (BUILT_IN_STRDUP, "strdup", BT_FN_STRING_CONST_STRING, ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_NONNULL_LEAF)
  DEF_C2X_BUILTIN        (BUILT_IN_STRNDUP, "strndup", BT_FN_STRING_CONST_STRING_SIZE, ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_STRLEN, "strlen", BT_FN_SIZE_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCASECMP, "strncasecmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
! DEF_LIB_BUILTIN        (BUILT_IN_STRNCAT, "strncat", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_STRNCMP, "strncmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
! DEF_LIB_BUILTIN        (BUILT_IN_STRNCPY, "strncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNLEN, "strnlen", BT_FN_SIZE_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_STRPBRK, "strpbrk", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_STRRCHR, "strrchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
*************** DEF_GCC_BUILTIN        (BUILT_IN_APPLY_A
*** 834,843 ****
--- 834,846 ----
  DEF_GCC_BUILTIN        (BUILT_IN_BSWAP16, "bswap16", BT_FN_UINT16_UINT16, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_BSWAP32, "bswap32", BT_FN_UINT32_UINT32, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_BSWAP64, "bswap64", BT_FN_UINT64_UINT64, ATTR_CONST_NOTHROW_LEAF_LIST)
+ DEF_GCC_BUILTIN        (BUILT_IN_BSWAP128, "bswap128", BT_FN_UINT128_UINT128, ATTR_CONST_NOTHROW_LEAF_LIST)
+ 
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_CLEAR_CACHE, "__clear_cache", BT_FN_VOID_PTR_PTR, ATTR_NOTHROW_LEAF_LIST)
  /* [trans-mem]: Adjust BUILT_IN_TM_CALLOC if BUILT_IN_CALLOC is changed.  */
  DEF_LIB_BUILTIN        (BUILT_IN_CALLOC, "calloc", BT_FN_PTR_SIZE_SIZE, ATTR_MALLOC_WARN_UNUSED_RESULT_SIZE_1_2_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_CLASSIFY_TYPE, "classify_type", BT_FN_INT_VAR, ATTR_LEAF_LIST)
+ DEF_GCC_BUILTIN        (BUILT_IN_CLEAR_PADDING, "clear_padding", BT_FN_VOID_VAR, ATTR_NOTHROW_NONNULL_TYPEGENERIC_LEAF)
  DEF_GCC_BUILTIN        (BUILT_IN_CLZ, "clz", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_CLZIMAX, "clzimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_CLZL, "clzl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
*************** DEF_BUILTIN_STUB (BUILT_IN_STRNCMP_EQ, "
*** 973,988 ****
  
  /* Object size checking builtins.  */
  DEF_GCC_BUILTIN	       (BUILT_IN_OBJECT_SIZE, "object_size", BT_FN_SIZE_CONST_PTR_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
! DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMCPY_CHK, "__memcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
! DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMMOVE_CHK, "__memmove_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMPCPY_CHK, "__mempcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RETNONNULL_NOTHROW_LEAF)
! DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMSET_CHK, "__memset_chk", BT_FN_PTR_PTR_INT_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPCPY_CHK, "__stpcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_RETNONNULL_NOTHROW_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPNCPY_CHK, "__stpncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_RETNONNULL_NOTHROW_LEAF)
! DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCAT_CHK, "__strcat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
! DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCPY_CHK, "__strcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
! DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCAT_CHK, "__strncat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
! DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCPY_CHK, "__strncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_SNPRINTF_CHK, "__snprintf_chk", BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_5_6)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_SPRINTF_CHK, "__sprintf_chk", BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR, ATTR_NOTHROW_NONNULL_1_FORMAT_PRINTF_4_5)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_VSNPRINTF_CHK, "__vsnprintf_chk", BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_5_0)
--- 976,991 ----
  
  /* Object size checking builtins.  */
  DEF_GCC_BUILTIN	       (BUILT_IN_OBJECT_SIZE, "object_size", BT_FN_SIZE_CONST_PTR_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
! DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMCPY_CHK, "__memcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
! DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMMOVE_CHK, "__memmove_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMPCPY_CHK, "__mempcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RETNONNULL_NOTHROW_LEAF)
! DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMSET_CHK, "__memset_chk", BT_FN_PTR_PTR_INT_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPCPY_CHK, "__stpcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_RETNONNULL_NOTHROW_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPNCPY_CHK, "__stpncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_RETNONNULL_NOTHROW_LEAF)
! DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCAT_CHK, "__strcat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
! DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCPY_CHK, "__strcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
! DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCAT_CHK, "__strncat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
! DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCPY_CHK, "__strncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_SNPRINTF_CHK, "__snprintf_chk", BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_5_6)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_SPRINTF_CHK, "__sprintf_chk", BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR, ATTR_NOTHROW_NONNULL_1_FORMAT_PRINTF_4_5)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_VSNPRINTF_CHK, "__vsnprintf_chk", BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_5_0)
*************** DEF_GCC_BUILTIN (BUILT_IN_LINE, "LINE",
*** 1061,1069 ****
  /* Offloading and Multi Processing builtins.  */
  #include "omp-builtins.def"
  
- /* Heterogeneous Systems Architecture.  */
- #include "hsa-builtins.def"
- 
  /* GTM builtins. */
  #include "gtm-builtins.def"
  
--- 1064,1069 ----
diff -Nrcpad gcc-10.3.0/gcc/builtins.h gcc-11.1.0/gcc/builtins.h
*** gcc-10.3.0/gcc/builtins.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/builtins.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Expand builtin functions.
!    Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Expand builtin functions.
!    Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern void expand_builtin_setjmp_receiv
*** 109,114 ****
--- 109,115 ----
  extern void expand_builtin_update_setjmp_buf (rtx);
  extern tree mathfn_built_in (tree, enum built_in_function fn);
  extern tree mathfn_built_in (tree, combined_fn);
+ extern tree mathfn_built_in_type (combined_fn);
  extern rtx builtin_strncpy_read_str (void *, HOST_WIDE_INT, scalar_int_mode);
  extern rtx builtin_memset_read_str (void *, HOST_WIDE_INT, scalar_int_mode);
  extern rtx expand_builtin_saveregs (void);
*************** extern tree fold_call_expr (location_t,
*** 127,145 ****
  extern tree fold_builtin_call_array (location_t, tree, tree, int, tree *);
  extern bool validate_gimple_arglist (const gcall *, ...);
  extern rtx default_expand_builtin (tree, rtx, rtx, machine_mode, int);
  extern bool fold_builtin_next_arg (tree, bool);
  extern tree do_mpc_arg2 (tree, tree, tree, int, int (*)(mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t));
  extern tree fold_call_stmt (gcall *, bool);
  extern void set_builtin_user_assembler_name (tree decl, const char *asmspec);
  extern bool is_simple_builtin (tree);
  extern bool is_inexpensive_builtin (tree);
- 
- class vr_values;
- tree gimple_call_alloc_size (gimple *, wide_int[2] = NULL,
- 			     const vr_values * = NULL);
- extern tree compute_objsize (tree, int, tree * = NULL, tree * = NULL,
- 			     const vr_values * = NULL);
- 
  extern bool readonly_data_expr (tree exp);
  extern bool init_target_chars (void);
  extern unsigned HOST_WIDE_INT target_newline;
--- 128,140 ----
  extern tree fold_builtin_call_array (location_t, tree, tree, int, tree *);
  extern bool validate_gimple_arglist (const gcall *, ...);
  extern rtx default_expand_builtin (tree, rtx, rtx, machine_mode, int);
+ extern void maybe_emit_call_builtin___clear_cache (rtx, rtx);
  extern bool fold_builtin_next_arg (tree, bool);
  extern tree do_mpc_arg2 (tree, tree, tree, int, int (*)(mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t));
  extern tree fold_call_stmt (gcall *, bool);
  extern void set_builtin_user_assembler_name (tree decl, const char *asmspec);
  extern bool is_simple_builtin (tree);
  extern bool is_inexpensive_builtin (tree);
  extern bool readonly_data_expr (tree exp);
  extern bool init_target_chars (void);
  extern unsigned HOST_WIDE_INT target_newline;
*************** extern bool target_char_cst_p (tree t, c
*** 152,162 ****
  extern internal_fn associated_internal_fn (tree);
  extern internal_fn replacement_internal_fn (gcall *);
  
! bool check_nul_terminated_array (tree, tree, tree = NULL_TREE);
! extern void warn_string_no_nul (location_t, const char *, tree, tree);
  extern tree unterminated_array (tree, tree * = NULL, bool * = NULL);
  extern bool builtin_with_linkage_p (tree);
- extern bool check_access (tree, tree, tree, tree, tree, tree, tree);
  
  
  #endif /* GCC_BUILTINS_H */
--- 147,364 ----
  extern internal_fn associated_internal_fn (tree);
  extern internal_fn replacement_internal_fn (gcall *);
  
! extern bool check_nul_terminated_array (tree, tree, tree = NULL_TREE);
! extern void warn_string_no_nul (location_t, tree, const char *, tree,
! 				tree, tree = NULL_TREE, bool = false,
! 				const wide_int[2] = NULL);
  extern tree unterminated_array (tree, tree * = NULL, bool * = NULL);
  extern bool builtin_with_linkage_p (tree);
  
+ /* Describes recursion limits used by functions that follow use-def
+    chains of SSA_NAMEs.  */
+ 
+ class ssa_name_limit_t
+ {
+   bitmap visited;         /* Bitmap of visited SSA_NAMEs.  */
+   unsigned ssa_def_max;   /* Longest chain of SSA_NAMEs to follow.  */
+ 
+   /* Not copyable or assignable.  */
+   DISABLE_COPY_AND_ASSIGN (ssa_name_limit_t);
+ 
+ public:
+ 
+   ssa_name_limit_t ()
+     : visited (),
+       ssa_def_max (param_ssa_name_def_chain_limit) { }
+ 
+   /* Set a bit for the PHI in VISITED and return true if it wasn't
+      already set.  */
+   bool visit_phi (tree);
+   /* Clear a bit for the PHI in VISITED.  */
+   void leave_phi (tree);
+   /* Return false if the SSA_NAME chain length counter has reached
+      the limit, otherwise increment the counter and return true.  */
+   bool next ();
+ 
+   /* If the SSA_NAME has already been "seen" return a positive value.
+      Otherwise add it to VISITED.  If the SSA_NAME limit has been
+      reached, return a negative value.  Otherwise return zero.  */
+   int next_phi (tree);
+ 
+   ~ssa_name_limit_t ();
+ };
+ 
+ class pointer_query;
+ 
+ /* Describes a reference to an object used in an access.  */
+ struct access_ref
+ {
+   /* Set the bounds of the reference to at most as many bytes
+      as the first argument or unknown when null, and at least
+      one when the second argument is true unless the first one
+      is a constant zero.  */
+   access_ref (tree = NULL_TREE, bool = false);
+ 
+   /* Return the PHI node REF refers to or null if it doesn't.  */
+   gphi *phi () const;
+ 
+   /* Return the object to which REF refers.  */
+   tree get_ref (vec<access_ref> *, access_ref * = NULL, int = 1,
+ 		ssa_name_limit_t * = NULL, pointer_query * = NULL) const;
+ 
+   /* Return true if OFFRNG is the constant zero.  */
+   bool offset_zero () const
+   {
+     return offrng[0] == 0 && offrng[1] == 0;
+   }
+ 
+   /* Return true if OFFRNG is bounded to a subrange of offset values
+      valid for the largest possible object.  */
+   bool offset_bounded () const;
+ 
+   /* Return the maximum amount of space remaining and if non-null, set
+      argument to the minimum.  */
+   offset_int size_remaining (offset_int * = NULL) const;
+ 
+   /* Return true if *THIS is an access to a declared object.  */
+   bool ref_declared () const
+   {
+     return DECL_P (ref) && base0 && deref < 1;
+   }
+ 
+   /* Set the size range to the maximum.  */
+   void set_max_size_range ()
+   {
+     sizrng[0] = 0;
+     sizrng[1] = wi::to_offset (max_object_size ());
+   }
+ 
+   /* Add OFF to the offset range.  */
+   void add_offset (const offset_int &off)
+   {
+     add_offset (off, off);
+   }
+ 
+   /* Add the range [MIN, MAX] to the offset range.  */
+   void add_offset (const offset_int &, const offset_int &);
+ 
+   /* Add the maximum representable offset to the offset range.  */
+   void add_max_offset ()
+   {
+     offset_int maxoff = wi::to_offset (TYPE_MAX_VALUE (ptrdiff_type_node));
+     add_offset (-maxoff - 1, maxoff);
+   }
+ 
+   /* Issue an informational message describing the target of an access
+      with the given mode.  */
+   void inform_access (access_mode) const;
+ 
+   /* Reference to the accessed object(s).  */
+   tree ref;
+ 
+   /* Range of byte offsets into and sizes of the object(s).  */
+   offset_int offrng[2];
+   offset_int sizrng[2];
+   /* Range of the bound of the access: denotes that the access
+      is at least BNDRNG[0] bytes but no more than BNDRNG[1].
+      For string functions the size of the actual access is
+      further constrained by the length of the string.  */
+   offset_int bndrng[2];
+ 
+   /* Used to fold integer expressions when called from front ends.  */
+   tree (*eval)(tree);
+   /* Positive when REF is dereferenced, negative when its address is
+      taken.  */
+   int deref;
+   /* Set if trailing one-element arrays should be treated as flexible
+      array members.  */
+   bool trail1special;
+   /* Set if valid offsets must start at zero (for declared and allocated
+      objects but not for others referenced by pointers).  */
+   bool base0;
+   /* Set if REF refers to a function array parameter not declared
+      static.  */
+   bool parmarray;
+ };
+ 
+ class range_query;
+ 
+ /* Queries and caches compute_objsize results.  */
+ class pointer_query
+ {
+   DISABLE_COPY_AND_ASSIGN (pointer_query);
+ 
+ public:
+   /* Type of the two-level cache object defined by clients of the class
+      to have pointer SSA_NAMEs cached for speedy access.  */
+   struct cache_type
+   {
+     /* 1-based indices into cache.  */
+     vec<unsigned> indices;
+     /* The cache itself.  */
+     vec<access_ref> access_refs;
+   };
+ 
+   /* Construct an object with the given Ranger instance and cache.  */
+   explicit pointer_query (range_query * = NULL, cache_type * = NULL);
+ 
+   /* Retrieve the access_ref for a variable from cache if it's there.  */
+   const access_ref* get_ref (tree, int = 1) const;
+ 
+   /* Retrieve the access_ref for a variable from cache or compute it.  */
+   bool get_ref (tree, access_ref*, int = 1);
+ 
+   /* Add an access_ref for the SSA_NAME to the cache.  */
+   void put_ref (tree, const access_ref&, int = 1);
+ 
+   /* Flush the cache.  */
+   void flush_cache ();
+ 
+   /* A Ranger instance.  May be null to use global ranges.  */
+   range_query *rvals;
+   /* Cache of SSA_NAMEs.  May be null to disable caching.  */
+   cache_type *var_cache;
+ 
+   /* Cache performance counters.  */
+   mutable unsigned hits;
+   mutable unsigned misses;
+   mutable unsigned failures;
+   mutable unsigned depth;
+   mutable unsigned max_depth;
+ };
+ 
+ /* Describes a pair of references used in an access by built-in
+    functions like memcpy.  */
+ struct access_data
+ {
+   /* Set the access to at most MAXWRITE and MAXREAD bytes, and
+      at least 1 when MINWRITE or MINREAD, respectively, is set.  */
+   access_data (tree expr, access_mode mode,
+ 	       tree maxwrite = NULL_TREE, bool minwrite = false,
+ 	       tree maxread = NULL_TREE, bool minread = false)
+     : call (expr),
+       dst (maxwrite, minwrite), src (maxread, minread), mode (mode) { }
+ 
+   /* Built-in function call.  */
+   tree call;
+   /* Destination and source of the access.  */
+   access_ref dst, src;
+   /* Read-only for functions like memcmp or strlen, write-only
+      for memset, read-write for memcpy or strcat.  */
+   access_mode mode;
+ };
+ 
+ extern tree gimple_call_alloc_size (gimple *, wide_int[2] = NULL,
+ 				    range_query * = NULL);
+ extern tree gimple_parm_array_size (tree, wide_int[2], bool * = NULL);
+ 
+ extern tree compute_objsize (tree, int, access_ref *, range_query * = NULL);
+ /* Legacy/transitional API.  Should not be used in new code.  */
+ extern tree compute_objsize (tree, int, access_ref *, pointer_query *);
+ extern tree compute_objsize (tree, int, tree * = NULL, tree * = NULL,
+ 			     range_query * = NULL);
+ extern bool check_access (tree, tree, tree, tree, tree,
+ 			  access_mode, const access_data * = NULL);
+ extern void maybe_emit_free_warning (tree);
  
  #endif /* GCC_BUILTINS_H */
diff -Nrcpad gcc-10.3.0/gcc/c/ChangeLog gcc-11.1.0/gcc/c/ChangeLog
*** gcc-10.3.0/gcc/c/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-11.1.0/gcc/c/ChangeLog	Tue Apr 27 10:00:13 2021
***************
*** 1,8 ****
! 2021-04-08  Release Manager
  
! 	* GCC 10.3.0 released.
  
! 2021-03-30  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/99588
  	* c-typeck.c (mark_exp_read): Recognize what build_atomic_assign
--- 1,32 ----
! 2021-04-27  Release Manager
  
! 	* GCC 11.1.0 released.
  
! 2021-04-15  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c/99420
! 	PR c/99972
! 	* c-decl.c (pushdecl): Always propagate type attribute.
! 
! 2021-04-15  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR c/98852
! 	* c-typeck.c (c_common_type): Do not drop attributes that
! 	affect type identity.
! 
! 2021-04-10  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/99990
! 	* c-decl.c (finish_decl): Don't overwrite TREE_TYPE of
! 	error_mark_node.
! 
! 2021-03-25  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/99565
! 	* c-typeck.c (build_conditional_expr): Pass OEP_ADDRESS_OF_SAME_FIELD
! 	to operand_equal_p.
! 
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/99588
  	* c-typeck.c (mark_exp_read): Recognize what build_atomic_assign
***************
*** 12,65 ****
  	rather than STATEMENT_LIST.  Otherwise call mark_exp_read on lhs.
  	Set TREE_SIDE_EFFECTS on the TARGET_EXPR.
  
! 2021-03-24  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* c-parser.c (c_parser_objc_at_property_declaration):
! 	Improve parsing fidelity. Associate better location info
! 	with @property attributes.  Clean up the interface to
! 	objc_add_property_declaration ().
  
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2021-02-18  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/99136
  	* c-typeck.c (c_finish_return): Don't wrap retval into
  	EXCESS_PRECISION_EXPR in functions that return void.
  
! 2021-03-06  Tobias Burnus  <tobias@codesourcery.com>
  
! 	Backported from master:
! 	2021-03-05  Tobias Burnus  <tobias@codesourcery.com>
  
! 	PR c/99137
! 	* c-parser.c (c_parser_oacc_clause_async): Reject comma expressions.
  
! 2020-11-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-11-24  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/97958
  	* c-parser.c (c_parser_binary_expression): For omp atomic binary
  	expressions, use make_node instead of build2 to avoid checking build2
  	performs.
  
! 2020-08-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-08-18  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/96571
  	* c-parser.c (c_parser_generic_selection): Change match_found from bool
  	to int, holding index of the match.  Call mark_exp_read on the selector
  	expression and on expressions other than the selected one.
  
! 2020-08-03  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2020-08-01  Richard Sandiford  <richard.sandiford@arm.com>
  
  	PR c/96377
  	* c-typeck.c (process_init_element): Split test for whether to
--- 36,403 ----
  	rather than STATEMENT_LIST.  Otherwise call mark_exp_read on lhs.
  	Set TREE_SIDE_EFFECTS on the TARGET_EXPR.
  
! 2021-03-15  Tobias Burnus  <tobias@codesourcery.com>
  
! 	PR c++/99509
! 	* c-decl.c (finish_decl): For 'omp declare target implicit' vars,
! 	ensure that the varpool node is marked as offloadable.
  
! 2021-03-05  Tobias Burnus  <tobias@codesourcery.com>
  
! 	PR c/99137
! 	* c-parser.c (c_parser_oacc_clause_async): Reject comma expressions.
! 
! 2021-02-24  Martin Sebor  <msebor@redhat.com>
! 
! 	PR middle-end/97172
! 	* c-decl.c (free_attr_access_data): Clear attribute arg spec.
! 
! 2021-02-18  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/99136
  	* c-typeck.c (c_finish_return): Don't wrap retval into
  	EXCESS_PRECISION_EXPR in functions that return void.
  
! 2021-02-11  Marek Polacek  <polacek@redhat.com>
  
! 	* c-parser.c (c_parser_if_statement): Use vec_free.
  
! 2021-02-04  Martin Sebor  <msebor@redhat.com>
  
! 	PR c/97882
! 	* c-decl.c (locate_old_decl): Add type to diagnostic output.
! 	(diagnose_mismatched_decls): Same.
! 	(start_function): Introduce temporaries for better readability.
! 	* c-typeck.c (comptypes_internal): Only consider complete enum
! 	types in comparisons with integers.
  
! 2021-02-01  Martin Sebor  <msebor@redhat.com>
! 
! 	PR middle-end/97172
! 	* c-decl.c (free_attr_access_data): New function.
! 	(c_parse_final_cleanups): Call free_attr_access_data.
! 
! 2021-01-16  Kwok Cheung Yeung  <kcy@codesourcery.com>
! 
! 	* c-parser.c (c_parser_omp_clause_detach): New.
! 	(c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_DETACH clause.
! 	(OMP_TASK_CLAUSE_MASK): Add mask for PRAGMA_OMP_CLAUSE_DETACH.
! 	* c-typeck.c (c_finish_omp_clauses): Handle PRAGMA_OMP_CLAUSE_DETACH
! 	clause.  Prevent use of detach with mergeable and overriding the
! 	data sharing mode of the event handle.
! 
! 2021-01-15  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-typeck.c (c_finish_omp_clauses): For reduction build array with
! 	unqualified element type and then call c_build_qualified_type on the
! 	ARRAY_TYPE.
! 
! 2021-01-07  Richard Biener  <rguenther@suse.de>
! 
! 	* gimple-parser.c (c_parser_gimple_compound_statement): Only
! 	reallocate loop array if it is too small.
! 
! 2020-12-16  Martin Uecker  <muecker@gwdg.de>
! 
! 	PR c/98047
! 	* c-typeck.c (build_modify_expr): Drop qualifiers.
! 
! 2020-12-16  Martin Uecker  <muecker@gwdg.de>
! 
! 	PR c/98260
! 	* c-parser.c (c_parser_expression): Look into
! 	nop expression when marking expressions as read.
! 
! 2020-12-14  Martin Liska  <mliska@suse.cz>
! 
! 	PR sanitizer/98204
! 	* c-typeck.c (pointer_diff): Do not emit a top-level
! 	sanitization.
! 	(build_binary_op): Likewise.
! 
! 2020-12-09  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	* c-parser.c (c_parser_omp_allocate): New.
! 	(c_parser_omp_construct): Call it.
! 
! 2020-12-09  Richard Biener  <rguenther@suse.de>
! 
! 	PR c/98200
! 	* gimple-parser.c (c_parser_gimple_postfix_expression): Return
! 	early on error.
! 
! 2020-12-07  Martin Uecker  <muecker@gwdg.de>
! 
! 	PR c/97981
! 	* c-typeck.c (convert_lvalue_to_rvalue): Move the code
! 	that drops qualifiers to the end of the function.
! 
! 2020-11-26  Martin Uecker  <muecker@gwdg.de>
! 
! 	PR c/65455
! 	PR c/92935
! 	* c-parser.c (c_parser_declaration_or_fndef): Remove
! 	redundant code to drop qualifiers of _Atomic types for __auto_type.
! 	(c_parser_typeof_specifier): Do not drop qualifiers of _Atomic
! 	types for __typeof__.
! 
! 2020-11-24  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/97958
  	* c-parser.c (c_parser_binary_expression): For omp atomic binary
  	expressions, use make_node instead of build2 to avoid checking build2
  	performs.
  
! 2020-11-23  Joseph Myers  <joseph@codesourcery.com>
  
! 	PR c/95630
! 	* c-typeck.c (build_binary_op): Use pedwarn_c99 with OPT_Wpedantic
! 	for comparisons of complete and incomplete pointers.
! 
! 2020-11-21  Aaron Sawdey  <acsawdey@linux.ibm.com>
! 
! 	* c-aux-info.c (gen_type): Support opaque types.
! 
! 2020-11-20  Martin Sebor  <msebor@redhat.com>
! 
! 	PR middle-end/97879
! 	* c-decl.c (start_function): Set ATTR_FLAG_INTERNAL in flags.
! 
! 2020-11-20  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR other/97911
! 	* Make-lang.in (c.serial): Change from goal to a variable.
! 	(.PHONY): Drop c.serial.
! 
! 2020-11-20  Martin Uecker  <muecker@gwdg.de>
! 
! 	* c-typeck.c (convert_lvalue_to_rvalue): Drop qualifiers.
! 
! 2020-11-19  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/97860
! 	* c-decl.c (get_parm_array_spec): Bail out of nelts is
! 	error_operand_p.
! 
! 2020-11-18  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* Make-lang.in (c.serial): New goal.
! 	(.PHONY): Add c.serial c.prev.
! 	(cc1$(exeext)): Call LINK_PROGRESS.
! 
! 2020-11-13  Vladimir N. Makarov  <vmakarov@redhat.com>
! 
! 	* c-parser.c (c_parser_asm_statement): Parse outputs for asm
! 	goto too.
! 	* c-typeck.c (build_asm_expr): Remove an assert checking output
! 	absence for asm goto.
! 
! 2020-11-13  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-typeck.c (c_finish_omp_clauses): Don't clear
! 	OMP_CLAUSE_REDUCTION_INSCAN unless reduction_seen == -2.
! 
! 2020-11-13  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	PR objc/77404
! 	* c-parser.c (c_parser_objc_class_definition): Pass the
! 	location of the class name to the interface declaration.
! 
! 2020-11-10  Strager Neds  <strager.nds@gmail.com>
! 
! 	* c-decl.c (merge_decls): Use new overload of
! 	set_decl_section_name.
! 
! 2020-11-10  Chung-Lin Tang  <cltang@codesourcery.com>
! 
! 	* c-parser.c (c_parser_omp_target_data): Add use of
! 	new c_omp_adjust_map_clauses function. Add GOMP_MAP_ATTACH_DETACH as
! 	handled map clause kind.
! 	(c_parser_omp_target_enter_data): Likewise.
! 	(c_parser_omp_target_exit_data): Likewise.
! 	(c_parser_omp_target): Likewise.
! 	* c-typeck.c (handle_omp_array_sections): Adjust COMPONENT_REF case to
! 	use GOMP_MAP_ATTACH_DETACH map kind for C_ORT_OMP region type.
! 	(c_finish_omp_clauses): Adjust bitmap checks to allow struct decl and
! 	same struct field access to co-exist on OpenMP construct.
! 
! 2020-11-07  Martin Uecker  <muecker@gwdg.de>
! 
! 	* c-parser.c (c_parser_label): Implement mixing of labels and code.
! 	(c_parser_all_labels): Likewise.
! 
! 2020-11-06  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* c-parser.c (c_parser_objc_at_property_declaration):
! 	Improve parsing fidelity. Associate better location info
! 	with @property attributes.  Clean up the interface to
! 	objc_add_property_declaration ().
! 
! 2020-11-06  Nathan Sidwell  <nathan@acm.org>
! 
! 	* c-decl.c (diagnose_mismatched_decls): Rename
! 	DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
! 	(warn_if_shadowing, implicitly_declare, names_builtin_p)
! 	(collect_source_refs): Likewise.
! 	* c-typeck.c (inform_declaration, inform_for_arg)
! 	(convert_for_assignment): Likewise.
! 
! 2020-11-06  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	* c-parser.c (c_parser_omp_atomic): Add openacc parameter and update
! 	OpenACC matching.
! 	(c_parser_omp_construct): Update call.
! 
! 2020-11-04  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/97670
! 	* c-typeck.c (c_finish_omp_clauses): Look through array reductions to
! 	find underlying decl to clear in the aligned_head bitmap.
! 
! 2020-11-04  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-decl.c (handle_nodiscard_attribute): New.
! 	(std_attribute_table): Add nodiscard.
! 	* c-parser.c (c_parser_std_attribute): Expect argument to
! 	nodiscard attribute to be a string.  Do not special-case ignoring
! 	nodiscard.
! 	* c-typeck.c (maybe_warn_nodiscard): New.
! 	(build_compound_expr, emit_side_effect_warnings): Call
! 	maybe_warn_nodiscard.
! 	(c_process_expr_stmt, c_finish_stmt_expr): Also call
! 	emit_side_effect_warnings if warn_unused_result.
! 
! 2020-10-29  Asher Gordon  <AsDaGo@posteo.net>
! 
! 	* c-typeck.c (free_all_tagged_tu_seen_up_to): Replace free
! 	with XDELETE.
! 	(finish_init): Likewise.
! 	(pop_init_level): Likewise.
! 
! 2020-10-28  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-decl.c (store_parm_decls_newstyle): Use pedwarn_c11 not
! 	error_at for omitted parameter name.
! 
! 2020-10-28  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-parser.c (c_parser_omp_clause_name): Handle allocate.
! 	(c_parser_omp_clause_allocate): New function.
! 	(c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_ALLOCATE.
! 	(OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK,
! 	OMP_PARALLEL_CLAUSE_MASK, OMP_SINGLE_CLAUSE_MASK,
! 	OMP_TASK_CLAUSE_MASK, OMP_TASKGROUP_CLAUSE_MASK,
! 	OMP_DISTRIBUTE_CLAUSE_MASK, OMP_TEAMS_CLAUSE_MASK,
! 	OMP_TARGET_CLAUSE_MASK, OMP_TASKLOOP_CLAUSE_MASK): Add
! 	PRAGMA_OMP_CLAUSE_ALLOCATE.
! 	* c-typeck.c (c_finish_omp_clauses): Handle OMP_CLAUSE_ALLOCATE.
! 
! 2020-10-27  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-parser.c (c_parser_std_attribute_specifier): Allow duplicate
! 	standard attributes.
! 
! 2020-10-23  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/91741
! 	* c-parser.c (c_parser_binary_expression): Implement -Wsizeof-array-div.
! 	(c_parser_postfix_expression): Set PAREN_SIZEOF_EXPR.
! 	(c_parser_expr_list): Handle PAREN_SIZEOF_EXPR like SIZEOF_EXPR.
! 	* c-tree.h (char_type_p): Declare.
! 	* c-typeck.c (char_type_p): No longer static.
! 
! 2020-10-23  Martin Sebor  <msebor@redhat.com>
! 
! 	PR middle-end/97552
! 	* c-decl.c (get_parm_array_spec): Handle static VLA parameters.
! 
! 2020-09-19  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c/50584
! 	* c-decl.c (lookup_last_decl): Define new function.
! 	(c_decl_attributes): Call it.
! 	(start_decl): Add argument and use it.
! 	(finish_decl): Call build_attr_access_from_parms and decl_attributes.
! 	(get_parm_array_spec): Define new function.
! 	(push_parm_decl): Call get_parm_array_spec.
! 	(start_function): Call warn_parm_array_mismatch.  Build attribute
! 	access and add it to current function.
! 	* c-parser.c (c_parser_declaration_or_fndef): Diagnose mismatches
! 	in forms of array parameters.
! 	* c-tree.h (start_decl): Add argument.
! 
! 2020-09-19  Sandra Loosemore  <sandra@codesourcery.com>
! 
! 	* c-decl.c (c_break_label, c_cont_label): Delete, and replace
! 	with...
! 	(in_statement): New.
! 	(start_function): Adjust for above change.
! 	(c_push_function_context, c_pop_function_context): Likewise.
! 	* c-lang.h (struct language_function): Likewise.
! 	* c-objc-common.h (LANG_HOOKS_BLOCK_MAY_FALLTHRU): Define.
! 	* c-parser.c (objc_foreach_break_label, objc_foreach_continue_label):
! 	New.
! 	(c_parser_statement_after_labels): Adjust calls to c_finish_bc_stmt.
! 	(c_parser_switch_statement): Adjust break/switch context handling
! 	and calls to renamed functions.
! 	(c_parser_while_statement): Adjust break/switch context handling and
! 	build a WHILE_STMT.
! 	(c_parser_do_statement): Ditto, with DO_STMT respectively.
! 	(c_parser_for_statement): Ditto, with FOR_STMT respectively.
! 	(c_parser_omp_for_loop): Adjust break/switch context handling.
! 	* c-tree.h (c_break_label, c_cont_label): Delete.
! 	(IN_SWITCH_STMT, IN_ITERATION_STMT): Define.
! 	(IN_OMP_BLOCK, IN_OMP_FOR, IN_OBJC_FOREACH): Define.
! 	(in_statement, switch_statement_break_seen_p): Declare.
! 	(c_start_case, c_finish_case): Renamed to...
! 	(c_start_switch, c_finish_switch).
! 	(c_finish_bc_stmt): Adjust arguments.
! 	* c-typeck.c (build_function_call_vec): Don't try to print
! 	statements with %qE format.
! 	(struct c_switch):  Rename switch_expr field to switch_stmt.
! 	Add break_stmt_seen_p field.
! 	(c_start_case): Rename to c_start_switch.  Build a SWITCH_STMT
! 	instead of a SWITCH_EXPR.  Update for changes to struct c_switch.
! 	(do_case): Update for changes to struct c_switch.
! 	(c_finish_case): Rename to c_finish_switch.  Update for changes to
! 	struct c_switch and change of representation from SWITCH_EXPR to
! 	SWITCH_STMT.
! 	(c_finish_loop): Delete.
! 	(c_finish_bc_stmt): Update to reflect changes to break/continue
! 	state representation.  Build a BREAK_STMT or CONTINUE_STMT instead
! 	of a GOTO_EXPR except for objc foreach loops.
! 
! 2020-09-01  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/96867
! 	* c-typeck.c (handle_omp_array_sections_1): Test C_ARRAY_PARAMETER
! 	only on PARM_DECLs.
! 
! 2020-08-28  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c/96596
! 	* c-decl.c (match_builtin_function_types): Avoid dealing with erroneous
! 	argument type.
! 
! 2020-08-27  Martin Liska  <mliska@suse.cz>
! 
! 	* gimple-parser.c (c_parser_gimple_compound_statement): Set exact argument of a vector
! 	growth function to true.
! 
! 2020-08-25  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	PR c/96678
! 	* c-typeck.c (handle_omp_array_sections_1): Talk about
! 	array function parameter in the error message.
! 
! 2020-08-18  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/96571
  	* c-parser.c (c_parser_generic_selection): Change match_found from bool
  	to int, holding index of the match.  Call mark_exp_read on the selector
  	expression and on expressions other than the selected one.
  
! 2020-08-01  Richard Sandiford  <richard.sandiford@arm.com>
  
  	PR c/96377
  	* c-typeck.c (process_init_element): Split test for whether to
***************
*** 67,96 ****
  	(initialize_elementwise_p): ...this new function.  Don't recurse
  	into a vector type if the initialization value is also a vector.
  
! 2020-07-23  Release Manager
  
! 	* GCC 10.2.0 released.
  
! 2020-07-13  Julian Brown  <julian@codesourcery.com>
  
! 	Backported from master:
! 	2020-07-09  Julian Brown  <julian@codesourcery.com>
! 		    Thomas Schwinge  <thomas@codesourcery.com>
  
  	PR middle-end/95270
  	* c-typeck.c (c_finish_omp_clauses): Set OMP_CLAUSE_SIZE (bias) to zero
  	for standalone attach/detach clauses.
  
! 2020-06-23  Richard Biener  <rguenther@suse.de>
  
! 	PR c/95141
! 	* c-fold.c (c_fully_fold_internal): Enhance guard on
! 	overflow_warning.
  
! 2020-05-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from mainline
! 	2020-04-30  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/94842
  	* c-decl.c (set_labels_context_r): In addition to context-less
--- 405,509 ----
  	(initialize_elementwise_p): ...this new function.  Don't recurse
  	into a vector type if the initialization value is also a vector.
  
! 2020-07-31  Richard Biener  <rguenther@suse.de>
  
! 	PR debug/96383
! 	* c-objc-common.h (LANG_HOOKS_FINALIZE_EARLY_DEBUG):
! 	Define to c_common_finalize_early_debug.
  
! 2020-07-22  Tobias Burnus  <tobias@codesourcery.com>
  
! 	* c-parser.c (c_parser_omp_clause_hint): Require nonnegative hint clause.
! 	(c_parser_omp_critical): Permit hint(0) clause without named critical.
! 	(c_parser_omp_construct): Don't assert if error_mark_node is returned.
! 
! 2020-07-21  Sunil K Pandey  <skpgkp2@gmail.com>
! 
! 	PR target/95237
! 	* c-decl.c (finish_decl): Call target hook
! 	lower_local_decl_alignment to lower local decl alignment.
! 
! 2020-07-09  Julian Brown  <julian@codesourcery.com>
! 	    Thomas Schwinge  <thomas@codesourcery.com>
  
  	PR middle-end/95270
  	* c-typeck.c (c_finish_omp_clauses): Set OMP_CLAUSE_SIZE (bias) to zero
  	for standalone attach/detach clauses.
  
! 2020-07-08  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* c-typeck.c (convert_for_assignment): If -Wscalar-storage-order is
! 	set, warn for conversion between pointers that point to incompatible
! 	scalar storage orders.
  
! 2020-07-07  Kaipeng Zhou  <zhoukaipeng3@huawei.com>
  
! 	* c-parser.c (c_parser_statement_after_labels): Pass correct
! 	parameters to c_parser_do_statement.
! 
! 2020-06-16  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-parser.c (c_parser_expr_no_commas): Save, clear and restore
! 	c_in_omp_for.
! 	(c_parser_omp_for_loop): Set c_in_omp_for around some calls to avoid
! 	premature c_fully_fold.  Defer explicit c_fully_fold calls to after
! 	c_finish_omp_for.
! 	* c-tree.h (c_in_omp_for): Declare.
! 	* c-typeck.c (c_in_omp_for): Define.
! 	(build_modify_expr): Avoid c_fully_fold if c_in_omp_for.
! 	(digest_init): Likewise.
! 	(build_binary_op): Likewise.
! 
! 2020-06-16  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-parser.c (c_parser_omp_clause_schedule): Reject modifier separated
! 	from kind by comma rather than colon.
! 
! 2020-06-05  Mark Wielaard  <mark@klomp.org>
! 
! 	* c-decl.c (implicit_decl_warning): When warned and olddecl is
! 	an undeclared builtin, then add a fixit header hint, if found.
! 	(implicitly_declare): Add OPT_Wbuiltin_declaration_mismatch to
! 	warning_at about implicit builtin declaration type mismatch.
! 
! 2020-06-03  Mark Wielaard  <mark@klomp.org>
! 
! 	* c-parser.c (struct c_parser): Add seen_string_literal
! 	bitfield.
! 	(c_parser_consume_token): Reset seen_string_literal.
! 	(c_parser_error_richloc): Add name_hint if seen_string_literal
! 	and next token is a CPP_NAME and we have a missing header
! 	suggestion for the name.
! 	(c_parser_string_literal): Set seen_string_literal.
! 
! 2020-06-03  Mark Wielaard  <mark@klomp.org>
! 
! 	* c-parser.c (c_parser_postfix_expression_after_primary): Add
! 	scope with matching_parens after CPP_OPEN_PAREN.
! 
! 2020-06-03  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	* c-objc-common.h (LANG_HOOKS_OMP_PREDETERMINED_MAPPING): Redefine.
! 
! 2020-05-28  Nicolas Bértolo  <nicolasbertolo@gmail.com>
! 
! 	* Make-lang.in: Remove extra slash.
! 
! 2020-05-19  Martin Liska  <mliska@suse.cz>
! 
! 	* c-parser.c: Fix typo.
! 
! 2020-05-14  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-parser.c (c_parser_omp_target): Set cfun->has_omp_target.
! 
! 2020-05-07  Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/94703
! 	* gimple-parser.c (c_parser_parse_ssa_name): Do not set
! 	DECL_GIMPLE_REG_P.
! 
! 2020-04-30  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/94842
  	* c-decl.c (set_labels_context_r): In addition to context-less
***************
*** 98,107 ****
  	parent function if any.
  	(store_parm_decls): Adjust comment.
  
- 2020-05-07  Release Manager
- 
- 	* GCC 10.1.0 released.
- 
  2020-04-19  Jakub Jelinek  <jakub@redhat.com>
  
  	PR objc/94637
--- 511,516 ----
***************
*** 7121,7127 ****
  	* c-decl.c: Likewise.  Include gt-c-c-decl.h, not gt-c-decl.h.
  	* c-parser.c: Likewise.  Include gt-c-c-parser.h, not gt-c-parser.h.
  
! Copyright (C) 2012-2020 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 7530,7536 ----
  	* c-decl.c: Likewise.  Include gt-c-c-decl.h, not gt-c-decl.h.
  	* c-parser.c: Likewise.  Include gt-c-c-parser.h, not gt-c-parser.h.
  
! Copyright (C) 2012-2021 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-10.3.0/gcc/c/Make-lang.in gcc-11.1.0/gcc/c/Make-lang.in
*** gcc-10.3.0/gcc/c/Make-lang.in	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/Make-lang.in	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  # Top level -*- makefile -*- fragment for GNU C - C language.
! # Copyright (C) 1994-2020 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
--- 1,5 ----
  # Top level -*- makefile -*- fragment for GNU C - C language.
! # Copyright (C) 1994-2021 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
***************
*** 37,42 ****
--- 37,43 ----
  #
  # Define the names for selecting c in LANGUAGES.
  c: cc1$(exeext)
+ c.serial = cc1$(exeext)
  
  # Tell GNU make to ignore these if they exist.
  .PHONY: c gcc
*************** cc1-checksum.c : build/genchecksum$(buil
*** 82,89 ****
--- 83,92 ----
  	fi
  
  cc1$(exeext): $(C_OBJS) cc1-checksum.o $(BACKEND) $(LIBDEPS)
+ 	@$(call LINK_PROGRESS,$(INDEX.c),start)
  	+$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ $(C_OBJS) \
  	  cc1-checksum.o $(BACKEND) $(LIBS) $(BACKENDLIBS)
+ 	@$(call LINK_PROGRESS,$(INDEX.c),end)
  
  cc1.fda: ../stage1-gcc/cc1$(exeext) ../prev-gcc/$(PERF_DATA)
  	$(CREATE_GCOV) -binary ../stage1-gcc/cc1$(exeext) -gcov cc1.fda -profile ../prev-gcc/$(PERF_DATA) -gcov_version 1
*************** c.install-plugin: installdirs
*** 162,168 ****
  # Install import library.
  ifeq ($(plugin_implib),yes)
  	$(mkinstalldirs) $(DESTDIR)$(plugin_resourcesdir)
! 	$(INSTALL_DATA) cc1$(exeext).a $(DESTDIR)/$(plugin_resourcesdir)/cc1$(exeext).a
  endif
  
  c.uninstall:
--- 165,171 ----
  # Install import library.
  ifeq ($(plugin_implib),yes)
  	$(mkinstalldirs) $(DESTDIR)$(plugin_resourcesdir)
! 	$(INSTALL_DATA) cc1$(exeext).a $(DESTDIR)$(plugin_resourcesdir)/cc1$(exeext).a
  endif
  
  c.uninstall:
diff -Nrcpad gcc-10.3.0/gcc/c/c-aux-info.c gcc-11.1.0/gcc/c/c-aux-info.c
*** gcc-10.3.0/gcc/c/c-aux-info.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/c-aux-info.c	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* Generate information regarding function declarations and definitions based
     on information stored in GCC's tree structure.  This code implements the
     -aux-info option.
!    Copyright (C) 1989-2020 Free Software Foundation, Inc.
     Contributed by Ron Guilmette (rfg@segfault.us.com).
  
  This file is part of GCC.
--- 1,7 ----
  /* Generate information regarding function declarations and definitions based
     on information stored in GCC's tree structure.  This code implements the
     -aux-info option.
!    Copyright (C) 1989-2021 Free Software Foundation, Inc.
     Contributed by Ron Guilmette (rfg@segfault.us.com).
  
  This file is part of GCC.
*************** gen_type (const char *ret_val, tree t, f
*** 409,414 ****
--- 409,415 ----
  	    data_type = concat ("unsigned ", data_type, NULL);
  	  break;
  
+ 	case OPAQUE_TYPE:
  	case REAL_TYPE:
  	  data_type = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (t)));
  	  break;
diff -Nrcpad gcc-10.3.0/gcc/c/c-convert.c gcc-11.1.0/gcc/c/c-convert.c
*** gcc-10.3.0/gcc/c/c-convert.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/c-convert.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Language-level data type conversion for GNU C.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Language-level data type conversion for GNU C.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/c/c-decl.c gcc-11.1.0/gcc/c/c-decl.c
*** gcc-10.3.0/gcc/c/c-decl.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/c-decl.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Process declarations and variables for C compiler.
!    Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Process declarations and variables for C compiler.
!    Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 25,30 ****
--- 25,31 ----
     line numbers.  For example, the CONST_DECLs for enum values.  */
  
  #include "config.h"
+ #define INCLUDE_STRING
  #define INCLUDE_UNIQUE_PTR
  #include "system.h"
  #include "coretypes.h"
*************** along with GCC; see the file COPYING3.
*** 57,62 ****
--- 58,68 ----
  #include "c-family/name-hint.h"
  #include "c-family/known-headers.h"
  #include "c-family/c-spellcheck.h"
+ #include "context.h"  /* For 'g'.  */
+ #include "omp-general.h"
+ #include "omp-offload.h"  /* For offload_vars.  */
+ 
+ #include "tree-pretty-print.h"
  
  /* In grokdeclarator, distinguish syntactic contexts of declarators.  */
  enum decl_context
*************** struct obstack parser_obstack;
*** 112,120 ****
  
  static GTY(()) struct stmt_tree_s c_stmt_tree;
  
! /* State saving variables.  */
! tree c_break_label;
! tree c_cont_label;
  
  /* A list of decls to be made automatically visible in each file scope.  */
  static GTY(()) tree visible_builtins;
--- 118,126 ----
  
  static GTY(()) struct stmt_tree_s c_stmt_tree;
  
! /* Zero if we are not in an iteration or switch statement, otherwise
!    a bitmask.  See bitmask definitions in c-tree.h.  */
! unsigned char in_statement;
  
  /* A list of decls to be made automatically visible in each file scope.  */
  static GTY(()) tree visible_builtins;
*************** match_builtin_function_types (tree newty
*** 1712,1718 ****
  	return NULL_TREE;
  
        tree oldtype = TYPE_MAIN_VARIANT (TREE_VALUE (oldargs));
!       tree newtype = TYPE_MAIN_VARIANT (TREE_VALUE (newargs));
  
        if (!types_close_enough_to_match (oldtype, newtype))
  	return NULL_TREE;
--- 1718,1727 ----
  	return NULL_TREE;
  
        tree oldtype = TYPE_MAIN_VARIANT (TREE_VALUE (oldargs));
!       tree newtype = TREE_VALUE (newargs);
!       if (newtype == error_mark_node)
!        return NULL_TREE;
!       newtype = TYPE_MAIN_VARIANT (newtype);
  
        if (!types_close_enough_to_match (oldtype, newtype))
  	return NULL_TREE;
*************** validate_proto_after_old_defn (tree newd
*** 1904,1918 ****
  static void
  locate_old_decl (tree decl)
  {
!   if (TREE_CODE (decl) == FUNCTION_DECL && fndecl_built_in_p (decl)
        && !C_DECL_DECLARED_BUILTIN (decl))
      ;
    else if (DECL_INITIAL (decl))
!     inform (input_location, "previous definition of %q+D was here", decl);
    else if (C_DECL_IMPLICIT (decl))
!     inform (input_location, "previous implicit declaration of %q+D was here", decl);
    else
!     inform (input_location, "previous declaration of %q+D was here", decl);
  }
  
  /* Subroutine of duplicate_decls.  Compare NEWDECL to OLDDECL.
--- 1913,1934 ----
  static void
  locate_old_decl (tree decl)
  {
!   if (TREE_CODE (decl) == FUNCTION_DECL
!       && fndecl_built_in_p (decl)
        && !C_DECL_DECLARED_BUILTIN (decl))
      ;
    else if (DECL_INITIAL (decl))
!     inform (input_location,
! 	    "previous definition of %q+D with type %qT",
! 	    decl, TREE_TYPE (decl));
    else if (C_DECL_IMPLICIT (decl))
!     inform (input_location,
! 	    "previous implicit declaration of %q+D with type %qT",
! 	    decl, TREE_TYPE (decl));
    else
!     inform (input_location,
! 	    "previous declaration of %q+D with type %qT",
! 	    decl, TREE_TYPE (decl));
  }
  
  /* Subroutine of duplicate_decls.  Compare NEWDECL to OLDDECL.
*************** diagnose_mismatched_decls (tree newdecl,
*** 2045,2051 ****
  	    }
  	}
        else if (TREE_CODE (olddecl) == FUNCTION_DECL
! 	       && DECL_IS_BUILTIN (olddecl))
  	{
  	  /* A conflicting function declaration for a predeclared
  	     function that isn't actually built in.  Objective C uses
--- 2061,2067 ----
  	    }
  	}
        else if (TREE_CODE (olddecl) == FUNCTION_DECL
! 	       && DECL_IS_UNDECLARED_BUILTIN (olddecl))
  	{
  	  /* A conflicting function declaration for a predeclared
  	     function that isn't actually built in.  Objective C uses
*************** diagnose_mismatched_decls (tree newdecl,
*** 2077,2083 ****
  	       && C_DECL_IMPLICIT (olddecl) && !DECL_INITIAL (olddecl))
  	{
  	  pedwarned = pedwarn (input_location, 0,
! 			       "conflicting types for %q+D", newdecl);
  	  /* Make sure we keep void as the return type.  */
  	  TREE_TYPE (olddecl) = *oldtypep = oldtype = newtype;
  	}
--- 2093,2100 ----
  	       && C_DECL_IMPLICIT (olddecl) && !DECL_INITIAL (olddecl))
  	{
  	  pedwarned = pedwarn (input_location, 0,
! 			       "conflicting types for %q+D; have %qT",
! 			       newdecl, newtype);
  	  /* Make sure we keep void as the return type.  */
  	  TREE_TYPE (olddecl) = *oldtypep = oldtype = newtype;
  	}
*************** diagnose_mismatched_decls (tree newdecl,
*** 2113,2119 ****
  		error ("conflicting type qualifiers for %q+D", newdecl);
  	    }
  	  else
! 	    error ("conflicting types for %q+D", newdecl);
  	  diagnose_arglist_conflict (newdecl, olddecl, newtype, oldtype);
  	  locate_old_decl (olddecl);
  	  return false;
--- 2130,2136 ----
  		error ("conflicting type qualifiers for %q+D", newdecl);
  	    }
  	  else
! 	    error ("conflicting types for %q+D; have %qT", newdecl, newtype);
  	  diagnose_arglist_conflict (newdecl, olddecl, newtype, oldtype);
  	  locate_old_decl (olddecl);
  	  return false;
*************** diagnose_mismatched_decls (tree newdecl,
*** 2259,2265 ****
  	     built in, newdecl silently overrides olddecl.  The latter
  	     occur only in Objective C; see also above.  (FIXME: Make
  	     Objective C use normal builtins.)  */
! 	  if (!DECL_IS_BUILTIN (olddecl)
  	      && !DECL_EXTERN_INLINE (olddecl))
  	    {
  	      auto_diagnostic_group d;
--- 2276,2282 ----
  	     built in, newdecl silently overrides olddecl.  The latter
  	     occur only in Objective C; see also above.  (FIXME: Make
  	     Objective C use normal builtins.)  */
! 	  if (!DECL_IS_UNDECLARED_BUILTIN (olddecl)
  	      && !DECL_EXTERN_INLINE (olddecl))
  	    {
  	      auto_diagnostic_group d;
*************** merge_decls (tree newdecl, tree olddecl,
*** 2878,2884 ****
  	       || TREE_PUBLIC (olddecl)
  	       || TREE_STATIC (olddecl))
  	      && DECL_SECTION_NAME (newdecl) != NULL)
! 	    set_decl_section_name (olddecl, DECL_SECTION_NAME (newdecl));
  
  	  /* This isn't quite correct for something like
  		int __thread x attribute ((tls_model ("local-exec")));
--- 2895,2901 ----
  	       || TREE_PUBLIC (olddecl)
  	       || TREE_STATIC (olddecl))
  	      && DECL_SECTION_NAME (newdecl) != NULL)
! 	    set_decl_section_name (olddecl, newdecl);
  
  	  /* This isn't quite correct for something like
  		int __thread x attribute ((tls_model ("local-exec")));
*************** warn_if_shadowing (tree new_decl)
*** 2972,2978 ****
          || warn_shadow_local
          || warn_shadow_compatible_local)
        /* No shadow warnings for internally generated vars.  */
!       || DECL_IS_BUILTIN (new_decl))
      return;
  
    /* Is anything being shadowed?  Invisible decls do not count.  */
--- 2989,2995 ----
          || warn_shadow_local
          || warn_shadow_compatible_local)
        /* No shadow warnings for internally generated vars.  */
!       || DECL_IS_UNDECLARED_BUILTIN (new_decl))
      return;
  
    /* Is anything being shadowed?  Invisible decls do not count.  */
*************** pushdecl (tree x)
*** 3246,3256 ****
  	  else
  	    thistype = type;
  	  b->u.type = TREE_TYPE (b->decl);
! 	  if (TREE_CODE (b->decl) == FUNCTION_DECL
! 	      && fndecl_built_in_p (b->decl))
! 	    thistype
! 	      = build_type_attribute_variant (thistype,
! 					      TYPE_ATTRIBUTES (b->u.type));
  	  TREE_TYPE (b->decl) = thistype;
  	  bind (name, b->decl, scope, /*invisible=*/false, /*nested=*/true,
  		locus);
--- 3263,3272 ----
  	  else
  	    thistype = type;
  	  b->u.type = TREE_TYPE (b->decl);
! 	  /* Propagate the type attributes to the decl.  */
! 	  thistype
! 	    = build_type_attribute_variant (thistype,
! 					    TYPE_ATTRIBUTES (b->u.type));
  	  TREE_TYPE (b->decl) = thistype;
  	  bind (name, b->decl, scope, /*invisible=*/false, /*nested=*/true,
  		locus);
*************** implicit_decl_warning (location_t loc, t
*** 3368,3375 ****
      warned = warning_at (loc, OPT_Wimplicit_function_declaration,
  			 G_("implicit declaration of function %qE"), id);
  
!   if (olddecl && warned)
!     locate_old_decl (olddecl);
  
    if (!warned)
      hint.suppress ();
--- 3384,3413 ----
      warned = warning_at (loc, OPT_Wimplicit_function_declaration,
  			 G_("implicit declaration of function %qE"), id);
  
!   if (warned)
!     {
!       /* Whether the olddecl is an undeclared builtin function.
! 	 locate_old_decl will not generate a diagnostic for those,
! 	 so in that case we want to look elsewhere.  */
!       bool undeclared_builtin = (olddecl
! 				 && TREE_CODE (olddecl) == FUNCTION_DECL
! 				 && fndecl_built_in_p (olddecl)
! 				 && !C_DECL_DECLARED_BUILTIN (olddecl));
!       if (undeclared_builtin)
! 	{
! 	  const char *header = header_for_builtin_fn (olddecl);
! 	  if (header)
! 	    {
! 	      rich_location richloc (line_table, loc);
! 	      maybe_add_include_fixit (&richloc, header, true);
! 	      inform (&richloc,
! 		      "include %qs or provide a declaration of %qE",
! 		      header, id);
! 	    }
! 	}
!       else if (olddecl)
! 	locate_old_decl (olddecl);
!     }
  
    if (!warned)
      hint.suppress ();
*************** implicitly_declare (location_t loc, tree
*** 3603,3609 ****
  	 in the external scope because they're pushed before the file
  	 scope gets created.  Catch this here and rebind them into the
  	 file scope.  */
!       if (!fndecl_built_in_p (decl) && DECL_IS_BUILTIN (decl))
  	{
  	  bind (functionid, decl, file_scope,
  		/*invisible=*/false, /*nested=*/true,
--- 3641,3647 ----
  	 in the external scope because they're pushed before the file
  	 scope gets created.  Catch this here and rebind them into the
  	 file scope.  */
!       if (!fndecl_built_in_p (decl) && DECL_IS_UNDECLARED_BUILTIN (decl))
  	{
  	  bind (functionid, decl, file_scope,
  		/*invisible=*/false, /*nested=*/true,
*************** implicitly_declare (location_t loc, tree
*** 3631,3637 ****
  						      (TREE_TYPE (decl)));
  	      if (!comptypes (newtype, TREE_TYPE (decl)))
  		{
! 		  bool warned = warning_at (loc, 0, "incompatible implicit "
  					    "declaration of built-in "
  					    "function %qD", decl);
  		  /* See if we can hint which header to include.  */
--- 3669,3677 ----
  						      (TREE_TYPE (decl)));
  	      if (!comptypes (newtype, TREE_TYPE (decl)))
  		{
! 		  bool warned = warning_at (loc,
! 					    OPT_Wbuiltin_declaration_mismatch,
! 					    "incompatible implicit "
  					    "declaration of built-in "
  					    "function %qD", decl);
  		  /* See if we can hint which header to include.  */
*************** lookup_name_fuzzy (tree name, enum looku
*** 4370,4375 ****
--- 4410,4440 ----
  }
  
  
+ /* Handle the standard [[nodiscard]] attribute.  */
+ 
+ static tree
+ handle_nodiscard_attribute (tree *node, tree name, tree /*args*/,
+ 			    int /*flags*/, bool *no_add_attrs)
+ {
+   if (TREE_CODE (*node) == FUNCTION_DECL)
+     {
+       if (VOID_TYPE_P (TREE_TYPE (TREE_TYPE (*node))))
+ 	warning_at (DECL_SOURCE_LOCATION (*node),
+ 		    OPT_Wattributes, "%qE attribute applied to %qD with void "
+ 		    "return type", name, *node);
+     }
+   else if (RECORD_OR_UNION_TYPE_P (*node)
+ 	   || TREE_CODE (*node) == ENUMERAL_TYPE)
+     /* OK */;
+   else
+     {
+       pedwarn (input_location,
+ 	       OPT_Wattributes, "%qE attribute can only be applied to "
+ 	       "functions or to structure, union or enumeration types", name);
+       *no_add_attrs = true;
+     }
+   return NULL_TREE;
+ }
  /* Table of supported standard (C2x) attributes.  */
  const struct attribute_spec std_attribute_table[] =
  {
*************** const struct attribute_spec std_attribut
*** 4381,4386 ****
--- 4446,4453 ----
      handle_fallthrough_attribute, NULL },
    { "maybe_unused", 0, 0, false, false, false, false,
      handle_unused_attribute, NULL },
+   { "nodiscard", 0, 1, false, false, false, false,
+     handle_nodiscard_attribute, NULL },
    { NULL, 0, 0, false, false, false, false, NULL, NULL }
  };
  
*************** groktypename (struct c_type_name *type_n
*** 4943,4948 ****
--- 5010,5026 ----
    return type;
  }
  
+ /* Looks up the most recent pushed declaration corresponding to DECL.  */
+ 
+ static tree
+ lookup_last_decl (tree decl)
+ {
+   tree last_decl = lookup_name (DECL_NAME (decl));
+   if (!last_decl)
+     last_decl = lookup_name_in_scope (DECL_NAME (decl), external_scope);
+   return last_decl;
+ }
+ 
  /* Wrapper for decl_attributes that adds some implicit attributes
     to VAR_DECLs or FUNCTION_DECLs.  */
  
*************** c_decl_attributes (tree *node, tree attr
*** 4971,4980 ****
       so far so that attributes on the current declaration that's
       about to be pushed that conflict with the former can be detected,
       diagnosed, and rejected as appropriate.  */
!   tree last_decl = lookup_name (DECL_NAME (*node));
!   if (!last_decl)
!     last_decl = lookup_name_in_scope (DECL_NAME (*node), external_scope);
! 
    return decl_attributes (node, attributes, flags, last_decl);
  }
  
--- 5049,5055 ----
       so far so that attributes on the current declaration that's
       about to be pushed that conflict with the former can be detected,
       diagnosed, and rejected as appropriate.  */
!   tree last_decl = lookup_last_decl (*node);
    return decl_attributes (node, attributes, flags, last_decl);
  }
  
*************** c_decl_attributes (tree *node, tree attr
*** 4984,4989 ****
--- 5059,5066 ----
     have been parsed, before parsing the initializer if any.
     Here we create the ..._DECL node, fill in its type,
     and put it on the list of decls for the current context.
+    When nonnull, set *LASTLOC to the location of the prior declaration
+    of the same entity if one exists.
     The ..._DECL node is returned as the value.
  
     Exception: for arrays where the length is not specified,
*************** c_decl_attributes (tree *node, tree attr
*** 4996,5002 ****
  
  tree
  start_decl (struct c_declarator *declarator, struct c_declspecs *declspecs,
! 	    bool initialized, tree attributes)
  {
    tree decl;
    tree tem;
--- 5073,5079 ----
  
  tree
  start_decl (struct c_declarator *declarator, struct c_declspecs *declspecs,
! 	    bool initialized, tree attributes, location_t *lastloc /* = NULL */)
  {
    tree decl;
    tree tem;
*************** start_decl (struct c_declarator *declara
*** 5014,5019 ****
--- 5091,5100 ----
    if (!decl || decl == error_mark_node)
      return NULL_TREE;
  
+   if (tree lastdecl = lastloc ? lookup_last_decl (decl) : NULL_TREE)
+     if (lastdecl != error_mark_node)
+       *lastloc = DECL_SOURCE_LOCATION (lastdecl);
+ 
    if (expr)
      add_stmt (fold_convert (void_type_node, expr));
  
*************** finish_decl (tree decl, location_t init_
*** 5320,5326 ****
  	  gcc_unreachable ();
  	}
  
!       if (DECL_INITIAL (decl))
  	TREE_TYPE (DECL_INITIAL (decl)) = type;
  
        relayout_decl (decl);
--- 5401,5407 ----
  	  gcc_unreachable ();
  	}
  
!       if (DECL_INITIAL (decl) && DECL_INITIAL (decl) != error_mark_node)
  	TREE_TYPE (DECL_INITIAL (decl)) = type;
  
        relayout_decl (decl);
*************** finish_decl (tree decl, location_t init_
*** 5451,5456 ****
--- 5532,5545 ----
  	  if (asmspec && VAR_P (decl) && C_DECL_REGISTER (decl))
  	    DECL_HARD_REGISTER (decl) = 1;
  	  rest_of_decl_compilation (decl, true, 0);
+ 
+ 	  if (TREE_CODE (decl) == FUNCTION_DECL)
+ 	    {
+ 	      tree parms = DECL_ARGUMENTS (decl);
+ 	      const bool builtin = fndecl_built_in_p (decl);
+ 	      if (tree access = build_attr_access_from_parms (parms, !builtin))
+ 		decl_attributes (&decl, access, 0);
+ 	    }
  	}
        else
  	{
*************** finish_decl (tree decl, location_t init_
*** 5571,5581 ****
  				  DECL_ATTRIBUTES (decl))
  	       && !lookup_attribute ("omp declare target link",
  				     DECL_ATTRIBUTES (decl)))
! 	DECL_ATTRIBUTES (decl)
! 	  = tree_cons (get_identifier ("omp declare target"),
! 		       NULL_TREE, DECL_ATTRIBUTES (decl));
      }
  
    invoke_plugin_callbacks (PLUGIN_FINISH_DECL, decl);
  }
  
--- 5660,5690 ----
  				  DECL_ATTRIBUTES (decl))
  	       && !lookup_attribute ("omp declare target link",
  				     DECL_ATTRIBUTES (decl)))
! 	{
! 	  DECL_ATTRIBUTES (decl)
! 	    = tree_cons (get_identifier ("omp declare target"),
! 			 NULL_TREE, DECL_ATTRIBUTES (decl));
! 	    symtab_node *node = symtab_node::get (decl);
! 	    if (node != NULL)
! 	      {
! 		node->offloadable = 1;
! 		if (ENABLE_OFFLOADING)
! 		  {
! 		    g->have_offload = true;
! 		    if (is_a <varpool_node *> (node))
! 		      vec_safe_push (offload_vars, decl);
! 		  }
! 	      }
! 	}
      }
  
+   /* This is the last point we can lower alignment so give the target the
+      chance to do so.  */
+   if (VAR_P (decl)
+       && !is_global_var (decl)
+       && !DECL_HARD_REGISTER (decl))
+     targetm.lower_local_decl_alignment (decl);
+ 
    invoke_plugin_callbacks (PLUGIN_FINISH_DECL, decl);
  }
  
*************** grokparm (const struct c_parm *parm, tre
*** 5596,5601 ****
--- 5705,5883 ----
    return decl;
  }
  
+ /* Return attribute "arg spec" corresponding to an array/VLA parameter
+    described by PARM, concatenated onto attributes ATTRS.
+    The spec consists of one dollar symbol for each specified variable
+    bound, one asterisk for each unspecified variable bound, followed
+    by at most one specification of the most significant bound of
+    an ordinary array parameter.  For ordinary arrays the specification
+    is either the constant bound itself, or the space character for
+    an array with an unspecified bound (the [] form).  Finally, a chain
+    of specified variable bounds is appended to the spec, starting with
+    the most significant bound.  For example, the PARM T a[2][m][3][n]
+    will produce __attribute__((arg spec ("[$$2]", m, n)).
+    For T a typedef for an array with variable bounds, the bounds are
+    included in the specification in the expected order.
+    No "arg spec"  is created for parameters of pointer types, making
+    a distinction between T(*)[N] (or, equivalently, T[][N]) and
+    the T[M][N] form, all of which have the same type and are represented
+    the same, but only the last of which gets an "arg spec" describing
+    the most significant bound M.  */
+ 
+ static tree
+ get_parm_array_spec (const struct c_parm *parm, tree attrs)
+ {
+   /* The attribute specification string, minor bound first.  */
+   std::string spec;
+ 
+   /* A list of VLA variable bounds, major first, or null if unspecified
+      or not a VLA.  */
+   tree vbchain = NULL_TREE;
+   /* True for a pointer parameter.  */
+   bool pointer = false;
+   /* True for an ordinary array with an unpecified bound.  */
+   bool nobound = false;
+ 
+   /* Create a string representation for the bounds of the array/VLA.  */
+   for (c_declarator *pd = parm->declarator, *next; pd; pd = next)
+     {
+       next = pd->declarator;
+       while (next && next->kind == cdk_attrs)
+ 	next = next->declarator;
+ 
+       /* Remember if a pointer has been seen to avoid storing the constant
+ 	 bound.  */
+       if (pd->kind == cdk_pointer)
+ 	pointer = true;
+ 
+       if ((pd->kind == cdk_pointer || pd->kind == cdk_function)
+ 	  && (!next || next->kind == cdk_id))
+ 	{
+ 	  /* Do nothing for the common case of a pointer.  The fact that
+ 	     the parameter is one can be deduced from the absence of
+ 	     an arg spec for it.  */
+ 	  return attrs;
+ 	}
+ 
+       if (pd->kind == cdk_id)
+ 	{
+ 	  if (pointer
+ 	      || !parm->specs->type
+ 	      || TREE_CODE (parm->specs->type) != ARRAY_TYPE
+ 	      || !TYPE_DOMAIN (parm->specs->type)
+ 	      || !TYPE_MAX_VALUE (TYPE_DOMAIN (parm->specs->type)))
+ 	    continue;
+ 
+ 	  tree max = TYPE_MAX_VALUE (TYPE_DOMAIN (parm->specs->type));
+ 	  if (!vbchain
+ 	      && TREE_CODE (max) == INTEGER_CST)
+ 	    {
+ 	      /* Extract the upper bound from a parameter of an array type
+ 		 unless the parameter is an ordinary array of unspecified
+ 		 bound in which case a next iteration of the loop will
+ 		 exit.  */
+ 	      if (spec.empty () || spec.end ()[-1] != ' ')
+ 		{
+ 		  if (!tree_fits_shwi_p (max))
+ 		    continue;
+ 
+ 		  /* The upper bound is the value of the largest valid
+ 		     index.  */
+ 		  HOST_WIDE_INT n = tree_to_shwi (max) + 1;
+ 		  char buf[40];
+ 		  sprintf (buf, "%lu", (unsigned long)n);
+ 		  spec += buf;
+ 		}
+ 	      continue;
+ 	    }
+ 
+ 	  /* For a VLA typedef, create a list of its variable bounds and
+ 	     append it in the expected order to VBCHAIN.  */
+ 	  tree tpbnds = NULL_TREE;
+ 	  for (tree type = parm->specs->type; TREE_CODE (type) == ARRAY_TYPE;
+ 	       type = TREE_TYPE (type))
+ 	    {
+ 	      tree nelts = array_type_nelts (type);
+ 	      if (error_operand_p (nelts))
+ 		return attrs;
+ 	      if (TREE_CODE (nelts) != INTEGER_CST)
+ 		{
+ 		  /* Each variable VLA bound is represented by the dollar
+ 		     sign.  */
+ 		  spec += "$";
+ 		  tpbnds = tree_cons (NULL_TREE, nelts, tpbnds);
+ 		}
+ 	    }
+ 	  tpbnds = nreverse (tpbnds);
+ 	  vbchain = chainon (vbchain, tpbnds);
+ 	  continue;
+ 	}
+ 
+       if (pd->kind != cdk_array)
+ 	continue;
+ 
+       if (pd->u.array.vla_unspec_p)
+ 	{
+ 	  /* Each unspecified bound is represented by a star.  There
+ 	     can be any number of these in a declaration (but none in
+ 	     a definition).  */
+ 	  spec += '*';
+ 	  continue;
+ 	}
+ 
+       tree nelts = pd->u.array.dimen;
+       if (!nelts)
+ 	{
+ 	  /* Ordinary array of unspecified size.  There can be at most
+ 	     one for the most significant bound.  Exit on the next
+ 	     iteration which determines whether or not PARM is declared
+ 	     as a pointer or an array.  */
+ 	  nobound = true;
+ 	  continue;
+ 	}
+ 
+       if (pd->u.array.static_p)
+ 	spec += 's';
+ 
+       if (TREE_CODE (nelts) == INTEGER_CST)
+ 	{
+ 	  /* Skip all constant bounds except the most significant one.
+ 	     The interior ones are included in the array type.  */
+ 	  if (next && (next->kind == cdk_array || next->kind == cdk_pointer))
+ 	    continue;
+ 
+ 	  if (!tree_fits_uhwi_p (nelts))
+ 	    /* Bail completely on invalid bounds.  */
+ 	    return attrs;
+ 
+ 	  char buf[40];
+ 	  unsigned HOST_WIDE_INT n = tree_to_uhwi (nelts);
+ 	  sprintf (buf, "%llu", (unsigned long long)n);
+ 	  spec += buf;
+ 	  break;
+ 	}
+ 
+       /* Each variable VLA bound is represented by a dollar sign.  */
+       spec += "$";
+       vbchain = tree_cons (NULL_TREE, nelts, vbchain);
+     }
+ 
+   if (spec.empty () && !nobound)
+     return attrs;
+ 
+   spec.insert (0, "[");
+   if (nobound)
+     /* Ordinary array of unspecified bound is represented by a space.
+        It must be last in the spec.  */
+     spec += ' ';
+   spec += ']';
+ 
+   tree acsstr = build_string (spec.length () + 1, spec.c_str ());
+   tree args = tree_cons (NULL_TREE, acsstr, vbchain);
+   tree name = get_identifier ("arg spec");
+   return tree_cons (name, args, attrs);
+ }
+ 
  /* Given a parsed parameter declaration, decode it into a PARM_DECL
     and push that on the current scope.  EXPR is a pointer to an
     expression that needs to be evaluated for the side effects of array
*************** void
*** 5605,5616 ****
  push_parm_decl (const struct c_parm *parm, tree *expr)
  {
    tree attrs = parm->attrs;
!   tree decl;
! 
!   decl = grokdeclarator (parm->declarator, parm->specs, PARM, false, NULL,
! 			 &attrs, expr, NULL, DEPRECATED_NORMAL);
    if (decl && DECL_P (decl))
      DECL_SOURCE_LOCATION (decl) = parm->loc;
    decl_attributes (&decl, attrs, 0);
  
    decl = pushdecl (decl);
--- 5887,5898 ----
  push_parm_decl (const struct c_parm *parm, tree *expr)
  {
    tree attrs = parm->attrs;
!   tree decl = grokdeclarator (parm->declarator, parm->specs, PARM, false, NULL,
! 			      &attrs, expr, NULL, DEPRECATED_NORMAL);
    if (decl && DECL_P (decl))
      DECL_SOURCE_LOCATION (decl) = parm->loc;
+ 
+   attrs = get_parm_array_spec (parm, attrs);
    decl_attributes (&decl, attrs, 0);
  
    decl = pushdecl (decl);
*************** start_function (struct c_declspecs *decl
*** 9129,9138 ****
    warn_about_return_type = 0;
    c_switch_stack = NULL;
  
!   /* Indicate no valid break/continue context by setting these variables
!      to some non-null, non-label value.  We'll notice and emit the proper
!      error message in c_finish_bc_stmt.  */
!   c_break_label = c_cont_label = size_zero_node;
  
    decl1 = grokdeclarator (declarator, declspecs, FUNCDEF, true, NULL,
  			  &attributes, NULL, NULL, DEPRECATED_NORMAL);
--- 9411,9418 ----
    warn_about_return_type = 0;
    c_switch_stack = NULL;
  
!   /* Indicate no valid break/continue context.  */
!   in_statement = 0;
  
    decl1 = grokdeclarator (declarator, declspecs, FUNCDEF, true, NULL,
  			  &attributes, NULL, NULL, DEPRECATED_NORMAL);
*************** start_function (struct c_declspecs *decl
*** 9196,9225 ****
    old_decl = lookup_name_in_scope (DECL_NAME (decl1), current_scope);
    if (old_decl && TREE_CODE (old_decl) != FUNCTION_DECL)
      old_decl = NULL_TREE;
    current_function_prototype_locus = UNKNOWN_LOCATION;
    current_function_prototype_built_in = false;
    current_function_prototype_arg_types = NULL_TREE;
!   if (!prototype_p (TREE_TYPE (decl1)))
      {
        if (old_decl != NULL_TREE
! 	  && TREE_CODE (TREE_TYPE (old_decl)) == FUNCTION_TYPE
! 	  && comptypes (TREE_TYPE (TREE_TYPE (decl1)),
! 			TREE_TYPE (TREE_TYPE (old_decl))))
  	{
! 	  if (stdarg_p (TREE_TYPE (old_decl)))
  	    {
  	      auto_diagnostic_group d;
  	      warning_at (loc, 0, "%q+D defined as variadic function "
  			  "without prototype", decl1);
  	      locate_old_decl (old_decl);
  	    }
! 	  TREE_TYPE (decl1) = composite_type (TREE_TYPE (old_decl),
! 					      TREE_TYPE (decl1));
  	  current_function_prototype_locus = DECL_SOURCE_LOCATION (old_decl);
  	  current_function_prototype_built_in
  	    = C_DECL_BUILTIN_PROTOTYPE (old_decl);
  	  current_function_prototype_arg_types
! 	    = TYPE_ARG_TYPES (TREE_TYPE (decl1));
  	}
        if (TREE_PUBLIC (decl1))
  	{
--- 9476,9508 ----
    old_decl = lookup_name_in_scope (DECL_NAME (decl1), current_scope);
    if (old_decl && TREE_CODE (old_decl) != FUNCTION_DECL)
      old_decl = NULL_TREE;
+ 
    current_function_prototype_locus = UNKNOWN_LOCATION;
    current_function_prototype_built_in = false;
    current_function_prototype_arg_types = NULL_TREE;
!   tree newtype = TREE_TYPE (decl1);
!   tree oldtype = old_decl ? TREE_TYPE (old_decl) : newtype;
!   if (!prototype_p (newtype))
      {
+       tree oldrt = TREE_TYPE (oldtype);
+       tree newrt = TREE_TYPE (newtype);
        if (old_decl != NULL_TREE
! 	  && TREE_CODE (oldtype) == FUNCTION_TYPE
! 	  && comptypes (oldrt, newrt))
  	{
! 	  if (stdarg_p (oldtype))
  	    {
  	      auto_diagnostic_group d;
  	      warning_at (loc, 0, "%q+D defined as variadic function "
  			  "without prototype", decl1);
  	      locate_old_decl (old_decl);
  	    }
! 	  TREE_TYPE (decl1) = composite_type (oldtype, newtype);
  	  current_function_prototype_locus = DECL_SOURCE_LOCATION (old_decl);
  	  current_function_prototype_built_in
  	    = C_DECL_BUILTIN_PROTOTYPE (old_decl);
  	  current_function_prototype_arg_types
! 	    = TYPE_ARG_TYPES (newtype);
  	}
        if (TREE_PUBLIC (decl1))
  	{
*************** start_function (struct c_declspecs *decl
*** 9326,9337 ****
--- 9609,9631 ----
  		 "%qD is normally a non-static function", decl1);
      }
  
+   tree parms = current_function_arg_info->parms;
+   if (old_decl)
+     {
+       location_t origloc = DECL_SOURCE_LOCATION (old_decl);
+       warn_parm_array_mismatch (origloc, old_decl, parms);
+     }
+ 
    /* Record the decl so that the function name is defined.
       If we already have a decl for this name, and it is a FUNCTION_DECL,
       use the old decl.  */
  
    current_function_decl = pushdecl (decl1);
  
+   if (tree access = build_attr_access_from_parms (parms, false))
+     decl_attributes (&current_function_decl, access, ATTR_FLAG_INTERNAL,
+ 		     old_decl);
+ 
    push_scope ();
    declare_parm_level ();
  
*************** store_parm_decls_newstyle (tree fndecl,
*** 9391,9397 ****
  	    warn_if_shadowing (decl);
  	}
        else
! 	error_at (DECL_SOURCE_LOCATION (decl), "parameter name omitted");
      }
  
    /* Record the parameter list in the function declaration.  */
--- 9685,9693 ----
  	    warn_if_shadowing (decl);
  	}
        else
! 	pedwarn_c11 (DECL_SOURCE_LOCATION (decl), OPT_Wpedantic,
! 		     "ISO C does not support omitting parameter names in "
! 		     "function definitions before C2X");
      }
  
    /* Record the parameter list in the function declaration.  */
*************** c_push_function_context (void)
*** 10133,10140 ****
  
    p->base.x_stmt_tree = c_stmt_tree;
    c_stmt_tree.x_cur_stmt_list = vec_safe_copy (c_stmt_tree.x_cur_stmt_list);
!   p->x_break_label = c_break_label;
!   p->x_cont_label = c_cont_label;
    p->x_switch_stack = c_switch_stack;
    p->arg_info = current_function_arg_info;
    p->returns_value = current_function_returns_value;
--- 10429,10435 ----
  
    p->base.x_stmt_tree = c_stmt_tree;
    c_stmt_tree.x_cur_stmt_list = vec_safe_copy (c_stmt_tree.x_cur_stmt_list);
!   p->x_in_statement = in_statement;
    p->x_switch_stack = c_switch_stack;
    p->arg_info = current_function_arg_info;
    p->returns_value = current_function_returns_value;
*************** c_pop_function_context (void)
*** 10173,10180 ****
  
    c_stmt_tree = p->base.x_stmt_tree;
    p->base.x_stmt_tree.x_cur_stmt_list = NULL;
!   c_break_label = p->x_break_label;
!   c_cont_label = p->x_cont_label;
    c_switch_stack = p->x_switch_stack;
    current_function_arg_info = p->arg_info;
    current_function_returns_value = p->returns_value;
--- 10468,10474 ----
  
    c_stmt_tree = p->base.x_stmt_tree;
    p->base.x_stmt_tree.x_cur_stmt_list = NULL;
!   in_statement = p->x_in_statement;
    c_switch_stack = p->x_switch_stack;
    current_function_arg_info = p->arg_info;
    current_function_returns_value = p->returns_value;
*************** names_builtin_p (const char *name)
*** 10234,10240 ****
  {
    tree id = get_identifier (name);
    if (tree decl = identifier_global_value (id))
!     return TREE_CODE (decl) == FUNCTION_DECL && DECL_IS_BUILTIN (decl);
  
    /* Also detect common reserved C words that aren't strictly built-in
       functions.  */
--- 10528,10534 ----
  {
    tree id = get_identifier (name);
    if (tree decl = identifier_global_value (id))
!     return TREE_CODE (decl) == FUNCTION_DECL && DECL_IS_UNDECLARED_BUILTIN (decl);
  
    /* Also detect common reserved C words that aren't strictly built-in
       functions.  */
*************** collect_source_refs (void)
*** 11868,11882 ****
      { 
        decls = DECL_INITIAL (t);
        for (decl = BLOCK_VARS (decls); decl; decl = TREE_CHAIN (decl))
! 	if (!DECL_IS_BUILTIN (decl))
  	  collect_source_ref (DECL_SOURCE_FILE (decl));
      }
  
    for (decl = BLOCK_VARS (ext_block); decl; decl = TREE_CHAIN (decl))
!     if (!DECL_IS_BUILTIN (decl))
        collect_source_ref (DECL_SOURCE_FILE (decl));
  }
  
  /* Perform any final parser cleanups and generate initial debugging
     information.  */
  
--- 12162,12201 ----
      { 
        decls = DECL_INITIAL (t);
        for (decl = BLOCK_VARS (decls); decl; decl = TREE_CHAIN (decl))
! 	if (!DECL_IS_UNDECLARED_BUILTIN (decl))
  	  collect_source_ref (DECL_SOURCE_FILE (decl));
      }
  
    for (decl = BLOCK_VARS (ext_block); decl; decl = TREE_CHAIN (decl))
!     if (!DECL_IS_UNDECLARED_BUILTIN (decl))
        collect_source_ref (DECL_SOURCE_FILE (decl));
  }
  
+ /* Free attribute access data that are not needed by the middle end. */
+ 
+ static void
+ free_attr_access_data ()
+ {
+   struct cgraph_node *n;
+ 
+   /* Iterate over all functions declared in the translation unit.  */
+   FOR_EACH_FUNCTION (n)
+     {
+       for (tree parm = DECL_ARGUMENTS (n->decl); parm; parm = TREE_CHAIN (parm))
+ 	if (tree attrs = DECL_ATTRIBUTES (parm))
+ 	  attr_access::free_lang_data (attrs);
+ 
+       tree fntype = TREE_TYPE (n->decl);
+       if (!fntype)
+ 	continue;
+       tree attrs = TYPE_ATTRIBUTES (fntype);
+       if (!attrs)
+ 	continue;
+ 
+       attr_access::free_lang_data (attrs);
+     }
+ }
+ 
  /* Perform any final parser cleanups and generate initial debugging
     information.  */
  
*************** c_parse_final_cleanups (void)
*** 11921,11926 ****
--- 12240,12248 ----
      c_write_global_declarations_1 (BLOCK_VARS (DECL_INITIAL (t)));
    c_write_global_declarations_1 (BLOCK_VARS (ext_block));
  
+   if (!in_lto_p)
+     free_attr_access_data ();
+ 
    timevar_stop (TV_PHASE_DEFERRED);
    timevar_start (TV_PHASE_PARSING);
  
diff -Nrcpad gcc-10.3.0/gcc/c/c-errors.c gcc-11.1.0/gcc/c/c-errors.c
*** gcc-10.3.0/gcc/c/c-errors.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/c-errors.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Various diagnostic subroutines for the GNU C language.
!    Copyright (C) 2000-2020 Free Software Foundation, Inc.
     Contributed by Gabriel Dos Reis <gdr@codesourcery.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* Various diagnostic subroutines for the GNU C language.
!    Copyright (C) 2000-2021 Free Software Foundation, Inc.
     Contributed by Gabriel Dos Reis <gdr@codesourcery.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/c/c-fold.c gcc-11.1.0/gcc/c/c-fold.c
*** gcc-10.3.0/gcc/c/c-fold.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/c-fold.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Support for fully folding sub-trees of an expression for C compiler.
!    Copyright (C) 1992-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Support for fully folding sub-trees of an expression for C compiler.
!    Copyright (C) 1992-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/c/c-lang.c gcc-11.1.0/gcc/c/c-lang.c
*** gcc-10.3.0/gcc/c/c-lang.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/c-lang.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Language-specific hook definitions for C front end.
!    Copyright (C) 1991-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Language-specific hook definitions for C front end.
!    Copyright (C) 1991-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/c/c-lang.h gcc-11.1.0/gcc/c/c-lang.h
*** gcc-10.3.0/gcc/c/c-lang.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/c-lang.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for C language specific types.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for C language specific types.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** struct GTY(()) lang_decl {
*** 51,58 ****
  
  struct GTY(()) language_function {
    struct c_language_function base;
!   tree x_break_label;
!   tree x_cont_label;
    struct c_switch * GTY((skip)) x_switch_stack;
    struct c_arg_info * GTY((skip)) arg_info;
    int returns_value;
--- 51,57 ----
  
  struct GTY(()) language_function {
    struct c_language_function base;
!   unsigned char x_in_statement;
    struct c_switch * GTY((skip)) x_switch_stack;
    struct c_arg_info * GTY((skip)) arg_info;
    int returns_value;
diff -Nrcpad gcc-10.3.0/gcc/c/c-objc-common.c gcc-11.1.0/gcc/c/c-objc-common.c
*** gcc-10.3.0/gcc/c/c-objc-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/c-objc-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Some code common to C and ObjC front ends.
!    Copyright (C) 2001-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Some code common to C and ObjC front ends.
!    Copyright (C) 2001-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/c/c-objc-common.h gcc-11.1.0/gcc/c/c-objc-common.h
*** gcc-10.3.0/gcc/c/c-objc-common.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/c-objc-common.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Language hooks common to C and ObjC front ends.
!    Copyright (C) 2004-2020 Free Software Foundation, Inc.
     Contributed by Ziemowit Laski  <zlaski@apple.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* Language hooks common to C and ObjC front ends.
!    Copyright (C) 2004-2021 Free Software Foundation, Inc.
     Contributed by Ziemowit Laski  <zlaski@apple.com>
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 56,61 ****
--- 56,63 ----
  #define LANG_HOOKS_TYPES_COMPATIBLE_P c_types_compatible_p
  #undef LANG_HOOKS_MISSING_NORETURN_OK_P
  #define LANG_HOOKS_MISSING_NORETURN_OK_P c_missing_noreturn_ok_p
+ #undef LANG_HOOKS_BLOCK_MAY_FALLTHRU
+ #define LANG_HOOKS_BLOCK_MAY_FALLTHRU c_block_may_fallthru
  #undef  LANG_HOOKS_BUILTIN_FUNCTION
  #define LANG_HOOKS_BUILTIN_FUNCTION c_builtin_function
  #undef  LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE
*************** along with GCC; see the file COPYING3.
*** 65,70 ****
--- 67,74 ----
    c_simulate_builtin_function_decl
  #undef LANG_HOOKS_EMITS_BEGIN_STMT
  #define LANG_HOOKS_EMITS_BEGIN_STMT true
+ #undef LANG_HOOKS_FINALIZE_EARLY_DEBUG
+ #define LANG_HOOKS_FINALIZE_EARLY_DEBUG c_common_finalize_early_debug
  
  /* Attribute hooks.  */
  #undef LANG_HOOKS_COMMON_ATTRIBUTE_TABLE
*************** along with GCC; see the file COPYING3.
*** 107,112 ****
--- 111,119 ----
  #undef LANG_HOOKS_OMP_PREDETERMINED_SHARING
  #define LANG_HOOKS_OMP_PREDETERMINED_SHARING c_omp_predetermined_sharing
  
+ #undef LANG_HOOKS_OMP_PREDETERMINED_MAPPING
+ #define LANG_HOOKS_OMP_PREDETERMINED_MAPPING c_omp_predetermined_mapping
+ 
  #undef LANG_HOOKS_OMP_CLAUSE_COPY_CTOR
  #define LANG_HOOKS_OMP_CLAUSE_COPY_CTOR c_omp_clause_copy_ctor
  
diff -Nrcpad gcc-10.3.0/gcc/c/c-parser.c gcc-11.1.0/gcc/c/c-parser.c
*** gcc-10.3.0/gcc/c/c-parser.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/c-parser.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Parser for C and Objective-C.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
     Parser actions based on the old Bison parser; structure somewhat
     influenced by and fragments based on the C++ parser.
--- 1,5 ----
  /* Parser for C and Objective-C.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
     Parser actions based on the old Bison parser; structure somewhat
     influenced by and fragments based on the C++ parser.
*************** along with GCC; see the file COPYING3.
*** 68,79 ****
  #include "intl.h"
  #include "c-family/name-hint.h"
  #include "tree-iterator.h"
  #include "memmodel.h"
  
  /* We need to walk over decls with incomplete struct/union/enum types
     after parsing the whole translation unit.
     In finish_decl(), if the decl is static, has incomplete
!    struct/union/enum type, it is appeneded to incomplete_record_decls.
     In c_parser_translation_unit(), we iterate over incomplete_record_decls
     and report error if any of the decls are still incomplete.  */ 
  
--- 68,81 ----
  #include "intl.h"
  #include "c-family/name-hint.h"
  #include "tree-iterator.h"
+ #include "tree-pretty-print.h"
  #include "memmodel.h"
+ #include "c-family/known-headers.h"
  
  /* We need to walk over decls with incomplete struct/union/enum types
     after parsing the whole translation unit.
     In finish_decl(), if the decl is static, has incomplete
!    struct/union/enum type, it is appended to incomplete_record_decls.
     In c_parser_translation_unit(), we iterate over incomplete_record_decls
     and report error if any of the decls are still incomplete.  */ 
  
*************** struct GTY(()) c_parser {
*** 223,228 ****
--- 225,237 ----
       keywords are valid.  */
    BOOL_BITFIELD objc_property_attr_context : 1;
  
+   /* Whether we have just seen/constructed a string-literal.  Set when
+      returning a string-literal from c_parser_string_literal.  Reset
+      in consume_token.  Useful when we get a parse error and see an
+      unknown token, which could have been a string-literal constant
+      macro.  */
+   BOOL_BITFIELD seen_string_literal : 1;
+ 
    /* Location of the last consumed token.  */
    location_t last_token_location;
  };
*************** c_parser_consume_token (c_parser *parser
*** 853,858 ****
--- 862,868 ----
          }
      }
    parser->tokens_avail--;
+   parser->seen_string_literal = false;
  }
  
  /* Expect the current token to be a #pragma.  Consume it and remember
*************** c_parser_error_richloc (c_parser *parser
*** 966,971 ****
--- 976,1000 ----
  	}
      }
  
+   /* If we were parsing a string-literal and there is an unknown name
+      token right after, then check to see if that could also have been
+      a literal string by checking the name against a list of known
+      standard string literal constants defined in header files. If
+      there is one, then add that as an hint to the error message. */
+   auto_diagnostic_group d;
+   name_hint h;
+   if (parser->seen_string_literal && token->type == CPP_NAME)
+     {
+       tree name = token->value;
+       const char *token_name = IDENTIFIER_POINTER (name);
+       const char *header_hint
+ 	= get_c_stdlib_header_for_string_macro_name (token_name);
+       if (header_hint != NULL)
+ 	h = name_hint (NULL, new suggest_missing_header (token->location,
+ 							 token_name,
+ 							 header_hint));
+     }
+ 
    c_parse_error (gmsgid,
  		 /* Because c_parse_error does not understand
  		    CPP_KEYWORD, keywords are treated like
*************** struct oacc_routine_data {
*** 1451,1456 ****
--- 1480,1488 ----
    location_t loc;
  };
  
+ /* Used for parsing objc foreach statements.  */
+ static tree objc_foreach_break_label, objc_foreach_continue_label;
+ 
  static bool c_parser_nth_token_starts_std_attributes (c_parser *,
  						      unsigned int);
  static tree c_parser_std_attribute_specifier_sequence (c_parser *);
*************** static void c_parser_initval (c_parser *
*** 1489,1495 ****
  			      struct obstack *);
  static tree c_parser_compound_statement (c_parser *, location_t * = NULL);
  static location_t c_parser_compound_statement_nostart (c_parser *);
! static void c_parser_label (c_parser *);
  static void c_parser_statement (c_parser *, bool *, location_t * = NULL);
  static void c_parser_statement_after_labels (c_parser *, bool *,
  					     vec<tree> * = NULL);
--- 1521,1527 ----
  			      struct obstack *);
  static tree c_parser_compound_statement (c_parser *, location_t * = NULL);
  static location_t c_parser_compound_statement_nostart (c_parser *);
! static void c_parser_label (c_parser *, tree);
  static void c_parser_statement (c_parser *, bool *, location_t * = NULL);
  static void c_parser_statement_after_labels (c_parser *, bool *,
  					     vec<tree> * = NULL);
*************** c_parser_declaration_or_fndef (c_parser
*** 2192,2201 ****
  			      " initializer");
  		  init = convert_lvalue_to_rvalue (init_loc, init, true, true);
  		  tree init_type = TREE_TYPE (init.value);
- 		  /* As with typeof, remove all qualifiers from atomic types.  */
- 		  if (init_type != error_mark_node && TYPE_ATOMIC (init_type))
- 		    init_type
- 		      = c_build_qualified_type (init_type, TYPE_UNQUALIFIED);
  		  bool vm_type = variably_modified_type_p (init_type,
  							   NULL_TREE);
  		  if (vm_type)
--- 2224,2229 ----
*************** c_parser_declaration_or_fndef (c_parser
*** 2268,2280 ****
  		  c_parser_skip_to_end_of_block_or_statement (parser);
  		  return;
  		}
! 	      tree d = start_decl (declarator, specs, false,
! 				   chainon (postfix_attrs,
! 					    all_prefix_attrs));
! 	      if (d
! 		  && TREE_CODE (d) == FUNCTION_DECL
! 		  && DECL_ARGUMENTS (d) == NULL_TREE
! 		  && DECL_INITIAL (d) == NULL_TREE)
  		{
  		  /* Find the innermost declarator that is neither cdk_id
  		     nor cdk_attrs.  */
--- 2296,2306 ----
  		  c_parser_skip_to_end_of_block_or_statement (parser);
  		  return;
  		}
! 
! 	      location_t lastloc = UNKNOWN_LOCATION;
! 	      tree attrs = chainon (postfix_attrs, all_prefix_attrs);
! 	      tree d = start_decl (declarator, specs, false, attrs, &lastloc);
! 	      if (d && TREE_CODE (d) == FUNCTION_DECL)
  		{
  		  /* Find the innermost declarator that is neither cdk_id
  		     nor cdk_attrs.  */
*************** c_parser_declaration_or_fndef (c_parser
*** 2303,2312 ****
  			gcc_unreachable ();
  		      }
  
! 		  /* If it exists and is cdk_function, use its parameters.  */
  		  if (last_non_id_attrs
  		      && last_non_id_attrs->kind == cdk_function)
! 		    DECL_ARGUMENTS (d) = last_non_id_attrs->u.arg_info->parms;
  		}
  	      if (omp_declare_simd_clauses.exists ())
  		{
--- 2329,2346 ----
  			gcc_unreachable ();
  		      }
  
! 		  /* If it exists and is cdk_function declaration whose
! 		     arguments have not been set yet, use its arguments.  */
  		  if (last_non_id_attrs
  		      && last_non_id_attrs->kind == cdk_function)
! 		    {
! 		      tree parms = last_non_id_attrs->u.arg_info->parms;
! 		      if (DECL_ARGUMENTS (d) == NULL_TREE
! 			  && DECL_INITIAL (d) == NULL_TREE)
! 			DECL_ARGUMENTS (d) = parms;
! 
! 		      warn_parm_array_mismatch (lastloc, d, parms);
! 		    }
  		}
  	      if (omp_declare_simd_clauses.exists ())
  		{
*************** c_parser_declaration_or_fndef (c_parser
*** 2335,2341 ****
  	      if (d)
  		finish_decl (d, UNKNOWN_LOCATION, NULL_TREE,
  			     NULL_TREE, asm_name);
! 	      
  	      if (c_parser_next_token_is_keyword (parser, RID_IN))
  		{
  		  if (d)
--- 2369,2375 ----
  	      if (d)
  		finish_decl (d, UNKNOWN_LOCATION, NULL_TREE,
  			     NULL_TREE, asm_name);
! 
  	      if (c_parser_next_token_is_keyword (parser, RID_IN))
  		{
  		  if (d)
*************** c_parser_typeof_specifier (c_parser *par
*** 3705,3715 ****
        if (was_vm)
  	ret.expr = c_fully_fold (expr.value, false, &ret.expr_const_operands);
        pop_maybe_used (was_vm);
-       /* For use in macros such as those in <stdatomic.h>, remove all
- 	 qualifiers from atomic types.  (const can be an issue for more macros
- 	 using typeof than just the <stdatomic.h> ones.)  */
-       if (ret.spec != error_mark_node && TYPE_ATOMIC (ret.spec))
- 	ret.spec = c_build_qualified_type (ret.spec, TYPE_UNQUALIFIED);
      }
    parens.skip_until_found_close (parser);
    return ret;
--- 3739,3744 ----
*************** c_parser_std_attribute (c_parser *parser
*** 4912,4918 ****
  	     && attribute_takes_identifier_p (name));
  	bool require_string
  	  = (ns == NULL_TREE
! 	     && strcmp (IDENTIFIER_POINTER (name), "deprecated") == 0);
  	TREE_VALUE (attribute)
  	  = c_parser_attribute_arguments (parser, takes_identifier,
  					  require_string, false);
--- 4941,4948 ----
  	     && attribute_takes_identifier_p (name));
  	bool require_string
  	  = (ns == NULL_TREE
! 	     && (strcmp (IDENTIFIER_POINTER (name), "deprecated") == 0
! 		 || strcmp (IDENTIFIER_POINTER (name), "nodiscard") == 0));
  	TREE_VALUE (attribute)
  	  = c_parser_attribute_arguments (parser, takes_identifier,
  					  require_string, false);
*************** c_parser_std_attribute (c_parser *parser
*** 4922,4934 ****
      parens.require_close (parser);
    }
   out:
!   if (ns == NULL_TREE && !for_tm && !as && !is_attribute_p ("nodiscard", name))
      {
        /* An attribute with standard syntax and no namespace specified
  	 is a constraint violation if it is not one of the known
! 	 standard attributes (of which nodiscard is the only one
! 	 without a handler in GCC).  Diagnose it here with a pedwarn
! 	 and then discard it to prevent a duplicate warning later.  */
        pedwarn (input_location, OPT_Wattributes, "%qE attribute ignored",
  	       name);
        return error_mark_node;
--- 4952,4963 ----
      parens.require_close (parser);
    }
   out:
!   if (ns == NULL_TREE && !for_tm && !as)
      {
        /* An attribute with standard syntax and no namespace specified
  	 is a constraint violation if it is not one of the known
! 	 standard attributes.  Diagnose it here with a pedwarn and
! 	 then discard it to prevent a duplicate warning later.  */
        pedwarn (input_location, OPT_Wattributes, "%qE attribute ignored",
  	       name);
        return error_mark_node;
*************** c_parser_std_attribute (c_parser *parser
*** 4939,4947 ****
  static tree
  c_parser_std_attribute_specifier (c_parser *parser, bool for_tm)
  {
-   bool seen_deprecated = false;
-   bool seen_fallthrough = false;
-   bool seen_maybe_unused = false;
    location_t loc = c_parser_peek_token (parser)->location;
    if (!c_parser_require (parser, CPP_OPEN_SQUARE, "expected %<[%>"))
      return NULL_TREE;
--- 4968,4973 ----
*************** c_parser_std_attribute_specifier (c_pars
*** 4967,5021 ****
        tree attribute = c_parser_std_attribute (parser, for_tm);
        if (attribute != error_mark_node)
  	{
! 	  bool duplicate = false;
! 	  tree name = get_attribute_name (attribute);
! 	  tree ns = get_attribute_namespace (attribute);
! 	  if (ns == NULL_TREE)
! 	    {
! 	      /* Some standard attributes may appear at most once in
! 		 each attribute list.  Diagnose duplicates and remove
! 		 them from the list to avoid subsequent diagnostics
! 		 such as the more general one for multiple
! 		 "fallthrough" attributes in the same place (including
! 		 in separate attribute lists in the same attribute
! 		 specifier sequence, which is not a constraint
! 		 violation).  */
! 	      if (is_attribute_p ("deprecated", name))
! 		{
! 		  if (seen_deprecated)
! 		    {
! 		      error ("attribute %<deprecated%> can appear at most "
! 			     "once in an attribute-list");
! 		      duplicate = true;
! 		    }
! 		  seen_deprecated = true;
! 		}
! 	      else if (is_attribute_p ("fallthrough", name))
! 		{
! 		  if (seen_fallthrough)
! 		    {
! 		      error ("attribute %<fallthrough%> can appear at most "
! 			     "once in an attribute-list");
! 		      duplicate = true;
! 		    }
! 		  seen_fallthrough = true;
! 		}
! 	      else if (is_attribute_p ("maybe_unused", name))
! 		{
! 		  if (seen_maybe_unused)
! 		    {
! 		      error ("attribute %<maybe_unused%> can appear at most "
! 			     "once in an attribute-list");
! 		      duplicate = true;
! 		    }
! 		  seen_maybe_unused = true;
! 		}
! 	    }
! 	  if (!duplicate)
! 	    {
! 	      TREE_CHAIN (attribute) = attributes;
! 	      attributes = attribute;
! 	    }
  	}
        if (c_parser_next_token_is_not (parser, CPP_COMMA))
  	break;
--- 4993,5000 ----
        tree attribute = c_parser_std_attribute (parser, for_tm);
        if (attribute != error_mark_node)
  	{
! 	  TREE_CHAIN (attribute) = attributes;
! 	  attributes = attribute;
  	}
        if (c_parser_next_token_is_not (parser, CPP_COMMA))
  	break;
*************** c_parser_initval (c_parser *parser, stru
*** 5535,5541 ****
  }
  
  /* Parse a compound statement (possibly a function body) (C90 6.6.2,
!    C99 6.8.2, C11 6.8.2).
  
     compound-statement:
       { block-item-list[opt] }
--- 5514,5520 ----
  }
  
  /* Parse a compound statement (possibly a function body) (C90 6.6.2,
!    C99 6.8.2, C11 6.8.2, C2X 6.8.2).
  
     compound-statement:
       { block-item-list[opt] }
*************** c_parser_initval (c_parser *parser, stru
*** 5546,5551 ****
--- 5525,5531 ----
       block-item-list block-item
  
     block-item:
+      label
       nested-declaration
       statement
  
*************** c_parser_compound_statement_nostart (c_p
*** 5686,5692 ****
      {
        location_t loc = c_parser_peek_token (parser)->location;
        loc = expansion_point_location_if_in_system_header (loc);
!       /* Standard attributes may start a statement or a declaration.  */
        bool have_std_attrs
  	= c_parser_nth_token_starts_std_attributes (parser, 1);
        tree std_attrs = NULL_TREE;
--- 5666,5672 ----
      {
        location_t loc = c_parser_peek_token (parser)->location;
        loc = expansion_point_location_if_in_system_header (loc);
!       /* Standard attributes may start a label, statement or declaration.  */
        bool have_std_attrs
  	= c_parser_nth_token_starts_std_attributes (parser, 1);
        tree std_attrs = NULL_TREE;
*************** c_parser_compound_statement_nostart (c_p
*** 5697,5703 ****
  	  || (c_parser_next_token_is (parser, CPP_NAME)
  	      && c_parser_peek_2nd_token (parser)->type == CPP_COLON))
  	{
- 	  c_warn_unused_attributes (std_attrs);
  	  if (c_parser_next_token_is_keyword (parser, RID_CASE))
  	    label_loc = c_parser_peek_2nd_token (parser)->location;
  	  else
--- 5677,5682 ----
*************** c_parser_compound_statement_nostart (c_p
*** 5705,5731 ****
  	  last_label = true;
  	  last_stmt = false;
  	  mark_valid_location_for_stdc_pragma (false);
! 	  c_parser_label (parser);
  	}
!       else if (!last_label
! 	       && (c_parser_next_tokens_start_declaration (parser)
! 		   || (have_std_attrs
! 		       && c_parser_next_token_is (parser, CPP_SEMICOLON))))
  	{
! 	  last_label = false;
  	  mark_valid_location_for_stdc_pragma (false);
  	  bool fallthru_attr_p = false;
  	  c_parser_declaration_or_fndef (parser, true, !have_std_attrs,
  					 true, true, true, NULL,
  					 vNULL, have_std_attrs, std_attrs,
  					 NULL, &fallthru_attr_p);
  	  if (last_stmt && !fallthru_attr_p)
  	    pedwarn_c90 (loc, OPT_Wdeclaration_after_statement,
  			 "ISO C90 forbids mixed declarations and code");
  	  last_stmt = fallthru_attr_p;
  	}
!       else if (!last_label
! 	       && c_parser_next_token_is_keyword (parser, RID_EXTENSION))
  	{
  	  /* __extension__ can start a declaration, but is also an
  	     unary operator that can start an expression.  Consume all
--- 5684,5714 ----
  	  last_label = true;
  	  last_stmt = false;
  	  mark_valid_location_for_stdc_pragma (false);
! 	  c_parser_label (parser, std_attrs);
  	}
!       else if (c_parser_next_tokens_start_declaration (parser)
! 	       || (have_std_attrs
! 		   && c_parser_next_token_is (parser, CPP_SEMICOLON)))
  	{
! 	  if (last_label)
! 	    pedwarn_c11 (c_parser_peek_token (parser)->location, OPT_Wpedantic,
! 			 "a label can only be part of a statement and "
! 			 "a declaration is not a statement");
! 
  	  mark_valid_location_for_stdc_pragma (false);
  	  bool fallthru_attr_p = false;
  	  c_parser_declaration_or_fndef (parser, true, !have_std_attrs,
  					 true, true, true, NULL,
  					 vNULL, have_std_attrs, std_attrs,
  					 NULL, &fallthru_attr_p);
+ 
  	  if (last_stmt && !fallthru_attr_p)
  	    pedwarn_c90 (loc, OPT_Wdeclaration_after_statement,
  			 "ISO C90 forbids mixed declarations and code");
  	  last_stmt = fallthru_attr_p;
+ 	  last_label = false;
  	}
!       else if (c_parser_next_token_is_keyword (parser, RID_EXTENSION))
  	{
  	  /* __extension__ can start a declaration, but is also an
  	     unary operator that can start an expression.  Consume all
*************** c_parser_compound_statement_nostart (c_p
*** 5808,5814 ****
        parser->error = false;
      }
    if (last_label)
!     error_at (label_loc, "label at end of compound statement");
    location_t endloc = c_parser_peek_token (parser)->location;
    c_parser_consume_token (parser);
    /* Restore the value we started with.  */
--- 5791,5797 ----
        parser->error = false;
      }
    if (last_label)
!     pedwarn_c11 (label_loc, OPT_Wpedantic, "label at end of compound statement");
    location_t endloc = c_parser_peek_token (parser)->location;
    c_parser_consume_token (parser);
    /* Restore the value we started with.  */
*************** c_parser_compound_statement_nostart (c_p
*** 5824,5842 ****
  static void
  c_parser_all_labels (c_parser *parser)
  {
    if (c_parser_nth_token_starts_std_attributes (parser, 1))
      {
!       tree std_attrs = c_parser_std_attribute_specifier_sequence (parser);
        if (c_parser_next_token_is (parser, CPP_SEMICOLON))
  	c_parser_error (parser, "expected statement");
-       else
- 	c_warn_unused_attributes (std_attrs);
      }
    while (c_parser_next_token_is_keyword (parser, RID_CASE)
  	 || c_parser_next_token_is_keyword (parser, RID_DEFAULT)
  	 || (c_parser_next_token_is (parser, CPP_NAME)
  	     && c_parser_peek_2nd_token (parser)->type == CPP_COLON))
!     c_parser_label (parser);
  }
  
  /* Parse a label (C90 6.6.1, C99 6.8.1, C11 6.8.1).
--- 5807,5835 ----
  static void
  c_parser_all_labels (c_parser *parser)
  {
+   tree std_attrs = NULL;
    if (c_parser_nth_token_starts_std_attributes (parser, 1))
      {
!       std_attrs = c_parser_std_attribute_specifier_sequence (parser);
        if (c_parser_next_token_is (parser, CPP_SEMICOLON))
  	c_parser_error (parser, "expected statement");
      }
    while (c_parser_next_token_is_keyword (parser, RID_CASE)
  	 || c_parser_next_token_is_keyword (parser, RID_DEFAULT)
  	 || (c_parser_next_token_is (parser, CPP_NAME)
  	     && c_parser_peek_2nd_token (parser)->type == CPP_COLON))
!     {
!       c_parser_label (parser, std_attrs);
!       std_attrs = NULL;
!       if (c_parser_nth_token_starts_std_attributes (parser, 1))
! 	{
! 	  std_attrs = c_parser_std_attribute_specifier_sequence (parser);
! 	  if (c_parser_next_token_is (parser, CPP_SEMICOLON))
! 	    c_parser_error (parser, "expected statement");
! 	}
!     }
!    if (std_attrs)
!      c_warn_unused_attributes (std_attrs);
  }
  
  /* Parse a label (C90 6.6.1, C99 6.8.1, C11 6.8.1).
*************** c_parser_all_labels (c_parser *parser)
*** 5858,5866 ****
     in the caller, to distinguish statements from declarations.  Any
     attribute-specifier-sequence after the label is parsed in this
     function.  */
- 
  static void
! c_parser_label (c_parser *parser)
  {
    location_t loc1 = c_parser_peek_token (parser)->location;
    tree label = NULL_TREE;
--- 5851,5858 ----
     in the caller, to distinguish statements from declarations.  Any
     attribute-specifier-sequence after the label is parsed in this
     function.  */
  static void
! c_parser_label (c_parser *parser, tree std_attrs)
  {
    location_t loc1 = c_parser_peek_token (parser)->location;
    tree label = NULL_TREE;
*************** c_parser_label (c_parser *parser)
*** 5910,5917 ****
--- 5902,5914 ----
        if (tlab)
  	{
  	  decl_attributes (&tlab, attrs, 0);
+ 	  decl_attributes (&tlab, std_attrs, 0);
  	  label = add_stmt (build_stmt (loc1, LABEL_EXPR, tlab));
  	}
+       if (attrs
+ 	  && c_parser_next_tokens_start_declaration (parser))
+ 	  warning_at (loc2, OPT_Wattributes, "GNU-style attribute between"
+ 		      " label and declaration appertains to the label");
      }
    if (label)
      {
*************** c_parser_label (c_parser *parser)
*** 5919,5973 ****
  	FALLTHROUGH_LABEL_P (LABEL_EXPR_LABEL (label)) = fallthrough_p;
        else
  	FALLTHROUGH_LABEL_P (CASE_LABEL (label)) = fallthrough_p;
- 
-       /* Standard attributes are only allowed here if they start a
- 	 statement, not a declaration (including the case of an
- 	 attribute-declaration with only attributes).  */
-       bool have_std_attrs
- 	= c_parser_nth_token_starts_std_attributes (parser, 1);
-       tree std_attrs = NULL_TREE;
-       if (have_std_attrs)
- 	std_attrs = c_parser_std_attribute_specifier_sequence (parser);
- 
-       /* Allow '__attribute__((fallthrough));'.  */
-       if (!have_std_attrs
- 	  && c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE))
- 	{
- 	  location_t loc = c_parser_peek_token (parser)->location;
- 	  tree attrs = c_parser_gnu_attributes (parser);
- 	  if (attribute_fallthrough_p (attrs))
- 	    {
- 	      if (c_parser_next_token_is (parser, CPP_SEMICOLON))
- 		{
- 		  tree fn = build_call_expr_internal_loc (loc,
- 							  IFN_FALLTHROUGH,
- 							  void_type_node, 0);
- 		  add_stmt (fn);
- 		}
- 	      else
- 		warning_at (loc, OPT_Wattributes, "%<fallthrough%> attribute "
- 			    "not followed by %<;%>");
- 	    }
- 	  else if (attrs != NULL_TREE)
- 	    warning_at (loc, OPT_Wattributes, "only attribute %<fallthrough%>"
- 			" can be applied to a null statement");
- 	}
-       if (c_parser_next_tokens_start_declaration (parser)
- 	  || (have_std_attrs
- 	      && c_parser_next_token_is (parser, CPP_SEMICOLON)))
- 	{
- 	  error_at (c_parser_peek_token (parser)->location,
- 		    "a label can only be part of a statement and "
- 		    "a declaration is not a statement");
- 	  c_parser_declaration_or_fndef (parser, /*fndef_ok*/ false,
- 					 /*static_assert_ok*/ true,
- 					 /*empty_ok*/ true, /*nested*/ true,
- 					 /*start_attr_ok*/ true, NULL,
- 					 vNULL, have_std_attrs, std_attrs);
- 	}
-       else if (std_attrs)
- 	/* Nonempty attributes on the following statement are ignored.  */
- 	c_warn_unused_attributes (std_attrs);
      }
  }
  
--- 5916,5921 ----
*************** c_parser_statement_after_labels (c_parse
*** 6166,6172 ****
  	  c_parser_while_statement (parser, false, 0, if_p);
  	  break;
  	case RID_DO:
! 	  c_parser_do_statement (parser, 0, false);
  	  break;
  	case RID_FOR:
  	  c_parser_for_statement (parser, false, 0, if_p);
--- 6114,6120 ----
  	  c_parser_while_statement (parser, false, 0, if_p);
  	  break;
  	case RID_DO:
! 	  c_parser_do_statement (parser, false, 0);
  	  break;
  	case RID_FOR:
  	  c_parser_for_statement (parser, false, 0, if_p);
*************** c_parser_statement_after_labels (c_parse
*** 6193,6203 ****
  	  goto expect_semicolon;
  	case RID_CONTINUE:
  	  c_parser_consume_token (parser);
! 	  stmt = c_finish_bc_stmt (loc, &c_cont_label, false);
  	  goto expect_semicolon;
  	case RID_BREAK:
  	  c_parser_consume_token (parser);
! 	  stmt = c_finish_bc_stmt (loc, &c_break_label, true);
  	  goto expect_semicolon;
  	case RID_RETURN:
  	  c_parser_consume_token (parser);
--- 6141,6151 ----
  	  goto expect_semicolon;
  	case RID_CONTINUE:
  	  c_parser_consume_token (parser);
! 	  stmt = c_finish_bc_stmt (loc, objc_foreach_continue_label, false);
  	  goto expect_semicolon;
  	case RID_BREAK:
  	  c_parser_consume_token (parser);
! 	  stmt = c_finish_bc_stmt (loc, objc_foreach_break_label, true);
  	  goto expect_semicolon;
  	case RID_RETURN:
  	  c_parser_consume_token (parser);
*************** c_parser_if_statement (c_parser *parser,
*** 6551,6562 ****
  		chain->safe_push (cond);
  	    }
  	  else if (!c_parser_next_token_is_keyword (parser, RID_IF))
! 	    {
! 	      /* This is if-else without subsequent if.  Zap the condition
! 		 chain; we would have already warned at this point.  */
! 	      delete chain;
! 	      chain = NULL;
! 	    }
  	}
        second_body = c_parser_else_body (parser, else_tinfo, chain);
        /* Set IF_P to true to indicate that this if statement has an
--- 6499,6507 ----
  		chain->safe_push (cond);
  	    }
  	  else if (!c_parser_next_token_is_keyword (parser, RID_IF))
! 	    /* This is if-else without subsequent if.  Zap the condition
! 	       chain; we would have already warned at this point.  */
! 	    vec_free (chain);
  	}
        second_body = c_parser_else_body (parser, else_tinfo, chain);
        /* Set IF_P to true to indicate that this if statement has an
*************** c_parser_if_statement (c_parser *parser,
*** 6576,6587 ****
  		    "suggest explicit braces to avoid ambiguous %<else%>");
  
        if (warn_duplicated_cond)
! 	{
! 	  /* This if statement does not have an else clause.  We don't
! 	     need the condition chain anymore.  */
! 	  delete chain;
! 	  chain = NULL;
! 	}
      }
    c_finish_if_stmt (loc, cond, first_body, second_body);
    add_stmt (c_end_compound_stmt (loc, block, flag_isoc99));
--- 6521,6529 ----
  		    "suggest explicit braces to avoid ambiguous %<else%>");
  
        if (warn_duplicated_cond)
! 	/* This if statement does not have an else clause.  We don't
! 	   need the condition chain anymore.  */
! 	vec_free (chain);
      }
    c_finish_if_stmt (loc, cond, first_body, second_body);
    add_stmt (c_end_compound_stmt (loc, block, flag_isoc99));
*************** static void
*** 6599,6605 ****
  c_parser_switch_statement (c_parser *parser, bool *if_p)
  {
    struct c_expr ce;
!   tree block, expr, body, save_break;
    location_t switch_loc = c_parser_peek_token (parser)->location;
    location_t switch_cond_loc;
    gcc_assert (c_parser_next_token_is_keyword (parser, RID_SWITCH));
--- 6541,6548 ----
  c_parser_switch_statement (c_parser *parser, bool *if_p)
  {
    struct c_expr ce;
!   tree block, expr, body;
!   unsigned char save_in_statement;
    location_t switch_loc = c_parser_peek_token (parser)->location;
    location_t switch_cond_loc;
    gcc_assert (c_parser_next_token_is_keyword (parser, RID_SWITCH));
*************** c_parser_switch_statement (c_parser *par
*** 6625,6633 ****
        expr = error_mark_node;
        ce.original_type = error_mark_node;
      }
!   c_start_case (switch_loc, switch_cond_loc, expr, explicit_cast_p);
!   save_break = c_break_label;
!   c_break_label = NULL_TREE;
    location_t loc_after_labels;
    bool open_brace_p = c_parser_peek_token (parser)->type == CPP_OPEN_BRACE;
    body = c_parser_c99_block_statement (parser, if_p, &loc_after_labels);
--- 6568,6576 ----
        expr = error_mark_node;
        ce.original_type = error_mark_node;
      }
!   c_start_switch (switch_loc, switch_cond_loc, expr, explicit_cast_p);
!   save_in_statement = in_statement;
!   in_statement |= IN_SWITCH_STMT;
    location_t loc_after_labels;
    bool open_brace_p = c_parser_peek_token (parser)->type == CPP_OPEN_BRACE;
    body = c_parser_c99_block_statement (parser, if_p, &loc_after_labels);
*************** c_parser_switch_statement (c_parser *par
*** 6635,6650 ****
    if (!open_brace_p && c_parser_peek_token (parser)->type != CPP_SEMICOLON)
      warn_for_multistatement_macros (loc_after_labels, next_loc, switch_loc,
  				    RID_SWITCH);
!   if (c_break_label)
!     {
!       location_t here = c_parser_peek_token (parser)->location;
!       tree t = build1 (LABEL_EXPR, void_type_node, c_break_label);
!       SET_EXPR_LOCATION (t, here);
!       SWITCH_BREAK_LABEL_P (c_break_label) = 1;
!       append_to_statement_list_force (t, &body);
!     }
!   c_finish_case (body, ce.original_type);
!   c_break_label = save_break;
    add_stmt (c_end_compound_stmt (switch_loc, block, flag_isoc99));
    c_parser_maybe_reclassify_token (parser);
  }
--- 6578,6585 ----
    if (!open_brace_p && c_parser_peek_token (parser)->type != CPP_SEMICOLON)
      warn_for_multistatement_macros (loc_after_labels, next_loc, switch_loc,
  				    RID_SWITCH);
!   c_finish_switch (body, ce.original_type);
!   in_statement = save_in_statement;
    add_stmt (c_end_compound_stmt (switch_loc, block, flag_isoc99));
    c_parser_maybe_reclassify_token (parser);
  }
*************** static void
*** 6662,6668 ****
  c_parser_while_statement (c_parser *parser, bool ivdep, unsigned short unroll,
  			  bool *if_p)
  {
!   tree block, cond, body, save_break, save_cont;
    location_t loc;
    gcc_assert (c_parser_next_token_is_keyword (parser, RID_WHILE));
    token_indent_info while_tinfo
--- 6597,6604 ----
  c_parser_while_statement (c_parser *parser, bool ivdep, unsigned short unroll,
  			  bool *if_p)
  {
!   tree block, cond, body;
!   unsigned char save_in_statement;
    location_t loc;
    gcc_assert (c_parser_next_token_is_keyword (parser, RID_WHILE));
    token_indent_info while_tinfo
*************** c_parser_while_statement (c_parser *pars
*** 6681,6690 ****
  		   build_int_cst (integer_type_node,
  				  annot_expr_unroll_kind),
  		   build_int_cst (integer_type_node, unroll));
!   save_break = c_break_label;
!   c_break_label = NULL_TREE;
!   save_cont = c_cont_label;
!   c_cont_label = NULL_TREE;
  
    token_indent_info body_tinfo
      = get_token_indent_info (c_parser_peek_token (parser));
--- 6617,6624 ----
  		   build_int_cst (integer_type_node,
  				  annot_expr_unroll_kind),
  		   build_int_cst (integer_type_node, unroll));
!   save_in_statement = in_statement;
!   in_statement = IN_ITERATION_STMT;
  
    token_indent_info body_tinfo
      = get_token_indent_info (c_parser_peek_token (parser));
*************** c_parser_while_statement (c_parser *pars
*** 6692,6699 ****
    location_t loc_after_labels;
    bool open_brace = c_parser_next_token_is (parser, CPP_OPEN_BRACE);
    body = c_parser_c99_block_statement (parser, if_p, &loc_after_labels);
!   c_finish_loop (loc, loc, cond, UNKNOWN_LOCATION, NULL, body,
! 		 c_break_label, c_cont_label, true);
    add_stmt (c_end_compound_stmt (loc, block, flag_isoc99));
    c_parser_maybe_reclassify_token (parser);
  
--- 6626,6632 ----
    location_t loc_after_labels;
    bool open_brace = c_parser_next_token_is (parser, CPP_OPEN_BRACE);
    body = c_parser_c99_block_statement (parser, if_p, &loc_after_labels);
!   add_stmt (build_stmt (loc, WHILE_STMT, cond, body));
    add_stmt (c_end_compound_stmt (loc, block, flag_isoc99));
    c_parser_maybe_reclassify_token (parser);
  
*************** c_parser_while_statement (c_parser *pars
*** 6705,6712 ****
      warn_for_multistatement_macros (loc_after_labels, next_tinfo.location,
  				    while_tinfo.location, RID_WHILE);
  
!   c_break_label = save_break;
!   c_cont_label = save_cont;
  }
  
  /* Parse a do statement (C90 6.6.5, C99 6.8.5, C11 6.8.5).
--- 6638,6644 ----
      warn_for_multistatement_macros (loc_after_labels, next_tinfo.location,
  				    while_tinfo.location, RID_WHILE);
  
!   in_statement = save_in_statement;
  }
  
  /* Parse a do statement (C90 6.6.5, C99 6.8.5, C11 6.8.5).
*************** c_parser_while_statement (c_parser *pars
*** 6718,6724 ****
  static void
  c_parser_do_statement (c_parser *parser, bool ivdep, unsigned short unroll)
  {
!   tree block, cond, body, save_break, save_cont, new_break, new_cont;
    location_t loc;
    gcc_assert (c_parser_next_token_is_keyword (parser, RID_DO));
    c_parser_consume_token (parser);
--- 6650,6657 ----
  static void
  c_parser_do_statement (c_parser *parser, bool ivdep, unsigned short unroll)
  {
!   tree block, cond, body;
!   unsigned char save_in_statement;
    location_t loc;
    gcc_assert (c_parser_next_token_is_keyword (parser, RID_DO));
    c_parser_consume_token (parser);
*************** c_parser_do_statement (c_parser *parser,
*** 6728,6744 ****
  		"suggest braces around empty body in %<do%> statement");
    block = c_begin_compound_stmt (flag_isoc99);
    loc = c_parser_peek_token (parser)->location;
!   save_break = c_break_label;
!   c_break_label = NULL_TREE;
!   save_cont = c_cont_label;
!   c_cont_label = NULL_TREE;
    body = c_parser_c99_block_statement (parser, NULL);
    c_parser_require_keyword (parser, RID_WHILE, "expected %<while%>");
!   new_break = c_break_label;
!   c_break_label = save_break;
!   new_cont = c_cont_label;
!   c_cont_label = save_cont;
!   location_t cond_loc = c_parser_peek_token (parser)->location;
    cond = c_parser_paren_condition (parser);
    if (ivdep && cond != error_mark_node)
      cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond,
--- 6661,6671 ----
  		"suggest braces around empty body in %<do%> statement");
    block = c_begin_compound_stmt (flag_isoc99);
    loc = c_parser_peek_token (parser)->location;
!   save_in_statement = in_statement;
!   in_statement = IN_ITERATION_STMT;
    body = c_parser_c99_block_statement (parser, NULL);
    c_parser_require_keyword (parser, RID_WHILE, "expected %<while%>");
!   in_statement = save_in_statement;
    cond = c_parser_paren_condition (parser);
    if (ivdep && cond != error_mark_node)
      cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond,
*************** c_parser_do_statement (c_parser *parser,
*** 6752,6759 ****
   		   build_int_cst (integer_type_node, unroll));
    if (!c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>"))
      c_parser_skip_to_end_of_block_or_statement (parser);
!   c_finish_loop (loc, cond_loc, cond, UNKNOWN_LOCATION, NULL, body,
! 		 new_break, new_cont, false);
    add_stmt (c_end_compound_stmt (loc, block, flag_isoc99));
  }
  
--- 6679,6686 ----
   		   build_int_cst (integer_type_node, unroll));
    if (!c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>"))
      c_parser_skip_to_end_of_block_or_statement (parser);
! 
!   add_stmt (build_stmt (loc, DO_STMT, cond, body));
    add_stmt (c_end_compound_stmt (loc, block, flag_isoc99));
  }
  
*************** static void
*** 6820,6834 ****
  c_parser_for_statement (c_parser *parser, bool ivdep, unsigned short unroll,
  			bool *if_p)
  {
!   tree block, cond, incr, save_break, save_cont, body;
    /* The following are only used when parsing an ObjC foreach statement.  */
    tree object_expression;
    /* Silence the bogus uninitialized warning.  */
    tree collection_expression = NULL;
    location_t loc = c_parser_peek_token (parser)->location;
    location_t for_loc = loc;
-   location_t cond_loc = UNKNOWN_LOCATION;
-   location_t incr_loc = UNKNOWN_LOCATION;
    bool is_foreach_statement = false;
    gcc_assert (c_parser_next_token_is_keyword (parser, RID_FOR));
    token_indent_info for_tinfo
--- 6747,6761 ----
  c_parser_for_statement (c_parser *parser, bool ivdep, unsigned short unroll,
  			bool *if_p)
  {
!   tree block, cond, incr, body;
!   unsigned char save_in_statement;
!   tree save_objc_foreach_break_label, save_objc_foreach_continue_label;
    /* The following are only used when parsing an ObjC foreach statement.  */
    tree object_expression;
    /* Silence the bogus uninitialized warning.  */
    tree collection_expression = NULL;
    location_t loc = c_parser_peek_token (parser)->location;
    location_t for_loc = loc;
    bool is_foreach_statement = false;
    gcc_assert (c_parser_next_token_is_keyword (parser, RID_FOR));
    token_indent_info for_tinfo
*************** c_parser_for_statement (c_parser *parser
*** 6938,6944 ****
        gcc_assert (!parser->objc_could_be_foreach_context);
        if (!is_foreach_statement)
  	{
- 	  cond_loc = c_parser_peek_token (parser)->location;
  	  if (c_parser_next_token_is (parser, CPP_SEMICOLON))
  	    {
  	      if (ivdep)
--- 6865,6870 ----
*************** c_parser_for_statement (c_parser *parser
*** 6979,6985 ****
        /* Parse the increment expression (the third expression in a
  	 for-statement).  In the case of a foreach-statement, this is
  	 the expression that follows the 'in'.  */
!       loc = incr_loc = c_parser_peek_token (parser)->location;
        if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
  	{
  	  if (is_foreach_statement)
--- 6905,6911 ----
        /* Parse the increment expression (the third expression in a
  	 for-statement).  In the case of a foreach-statement, this is
  	 the expression that follows the 'in'.  */
!       loc = c_parser_peek_token (parser)->location;
        if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
  	{
  	  if (is_foreach_statement)
*************** c_parser_for_statement (c_parser *parser
*** 7005,7014 ****
  	}
        parens.skip_until_found_close (parser);
      }
!   save_break = c_break_label;
!   c_break_label = NULL_TREE;
!   save_cont = c_cont_label;
!   c_cont_label = NULL_TREE;
  
    token_indent_info body_tinfo
      = get_token_indent_info (c_parser_peek_token (parser));
--- 6931,6947 ----
  	}
        parens.skip_until_found_close (parser);
      }
!   save_in_statement = in_statement;
!   if (is_foreach_statement)
!     {
!       in_statement = IN_OBJC_FOREACH;
!       save_objc_foreach_break_label = objc_foreach_break_label;
!       save_objc_foreach_continue_label = objc_foreach_continue_label;
!       objc_foreach_break_label = create_artificial_label (loc);
!       objc_foreach_continue_label = create_artificial_label (loc);
!     }
!   else
!     in_statement = IN_ITERATION_STMT;
  
    token_indent_info body_tinfo
      = get_token_indent_info (c_parser_peek_token (parser));
*************** c_parser_for_statement (c_parser *parser
*** 7019,7029 ****
  
    if (is_foreach_statement)
      objc_finish_foreach_loop (for_loc, object_expression,
! 			      collection_expression, body, c_break_label,
! 			      c_cont_label);
    else
!     c_finish_loop (for_loc, cond_loc, cond, incr_loc, incr, body,
! 		   c_break_label, c_cont_label, true);
    add_stmt (c_end_compound_stmt (for_loc, block,
  				 flag_isoc99 || c_dialect_objc ()));
    c_parser_maybe_reclassify_token (parser);
--- 6952,6963 ----
  
    if (is_foreach_statement)
      objc_finish_foreach_loop (for_loc, object_expression,
! 			      collection_expression, body,
! 			      objc_foreach_break_label,
! 			      objc_foreach_continue_label);
    else
!     add_stmt (build_stmt (for_loc, FOR_STMT, NULL_TREE, cond, incr,
! 			  body, NULL_TREE));
    add_stmt (c_end_compound_stmt (for_loc, block,
  				 flag_isoc99 || c_dialect_objc ()));
    c_parser_maybe_reclassify_token (parser);
*************** c_parser_for_statement (c_parser *parser
*** 7036,7043 ****
      warn_for_multistatement_macros (loc_after_labels, next_tinfo.location,
  				    for_tinfo.location, RID_FOR);
  
!   c_break_label = save_break;
!   c_cont_label = save_cont;
  }
  
  /* Parse an asm statement, a GNU extension.  This is a full-blown asm
--- 6970,6981 ----
      warn_for_multistatement_macros (loc_after_labels, next_tinfo.location,
  				    for_tinfo.location, RID_FOR);
  
!   in_statement = save_in_statement;
!   if (is_foreach_statement)
!     {
!       objc_foreach_break_label = save_objc_foreach_break_label;
!       objc_foreach_continue_label = save_objc_foreach_continue_label;
!     }
  }
  
  /* Parse an asm statement, a GNU extension.  This is a full-blown asm
*************** c_parser_asm_statement (c_parser *parser
*** 7191,7200 ****
  	switch (section)
  	  {
  	  case 0:
! 	    /* For asm goto, we don't allow output operands, but reserve
! 	       the slot for a future extension that does allow them.  */
! 	    if (!is_goto)
! 	      outputs = c_parser_asm_operands (parser);
  	    break;
  	  case 1:
  	    inputs = c_parser_asm_operands (parser);
--- 7129,7135 ----
  	switch (section)
  	  {
  	  case 0:
! 	    outputs = c_parser_asm_operands (parser);
  	    break;
  	  case 1:
  	    inputs = c_parser_asm_operands (parser);
*************** c_parser_string_literal (c_parser *parse
*** 7539,7544 ****
--- 7474,7480 ----
    ret.original_code = STRING_CST;
    ret.original_type = NULL_TREE;
    set_c_expr_source_range (&ret, get_range_from_loc (line_table, loc));
+   parser->seen_string_literal = true;
    return ret;
  }
  
*************** c_parser_expr_no_commas (c_parser *parse
*** 7565,7570 ****
--- 7501,7508 ----
    struct c_expr lhs, rhs, ret;
    enum tree_code code;
    location_t op_location, exp_location;
+   bool save_in_omp_for = c_in_omp_for;
+   c_in_omp_for = false;
    gcc_assert (!after || c_dialect_objc ());
    lhs = c_parser_conditional_expression (parser, after, omp_atomic_lhs);
    op_location = c_parser_peek_token (parser)->location;
*************** c_parser_expr_no_commas (c_parser *parse
*** 7604,7609 ****
--- 7542,7548 ----
        code = BIT_IOR_EXPR;
        break;
      default:
+       c_in_omp_for = save_in_omp_for;
        return lhs;
      }
    c_parser_consume_token (parser);
*************** c_parser_expr_no_commas (c_parser *parse
*** 7623,7628 ****
--- 7562,7568 ----
        ret.original_code = ERROR_MARK;
      }
    ret.original_type = NULL;
+   c_in_omp_for = save_in_omp_for;
    return ret;
  }
  
*************** c_parser_binary_expression (c_parser *pa
*** 7837,7843 ****
      enum tree_code op;
      /* The source location of this operation.  */
      location_t loc;
!     /* The sizeof argument if expr.original_code == SIZEOF_EXPR.  */
      tree sizeof_arg;
    } stack[NUM_PRECS];
    int sp;
--- 7777,7783 ----
      enum tree_code op;
      /* The source location of this operation.  */
      location_t loc;
!     /* The sizeof argument if expr.original_code == {PAREN_,}SIZEOF_EXPR.  */
      tree sizeof_arg;
    } stack[NUM_PRECS];
    int sp;
*************** c_parser_binary_expression (c_parser *pa
*** 7855,7863 ****
  	c_inhibit_evaluation_warnings -= (stack[sp - 1].expr.value	      \
  					  == truthvalue_true_node);	      \
  	break;								      \
!       case TRUNC_DIV_EXPR: 						      \
! 	if (stack[sp - 1].expr.original_code == SIZEOF_EXPR		      \
! 	    && stack[sp].expr.original_code == SIZEOF_EXPR)		      \
  	  {								      \
  	    tree type0 = stack[sp - 1].sizeof_arg;			      \
  	    tree type1 = stack[sp].sizeof_arg;				      \
--- 7795,7805 ----
  	c_inhibit_evaluation_warnings -= (stack[sp - 1].expr.value	      \
  					  == truthvalue_true_node);	      \
  	break;								      \
!       case TRUNC_DIV_EXPR:						      \
! 	if ((stack[sp - 1].expr.original_code == SIZEOF_EXPR		      \
! 	     || stack[sp - 1].expr.original_code == PAREN_SIZEOF_EXPR)	      \
! 	    && (stack[sp].expr.original_code == SIZEOF_EXPR		      \
! 		|| stack[sp].expr.original_code == PAREN_SIZEOF_EXPR))	      \
  	  {								      \
  	    tree type0 = stack[sp - 1].sizeof_arg;			      \
  	    tree type1 = stack[sp].sizeof_arg;				      \
*************** c_parser_binary_expression (c_parser *pa
*** 7871,7888 ****
  		&& !(TREE_CODE (first_arg) == PARM_DECL			      \
  		     && C_ARRAY_PARAMETER (first_arg)			      \
  		     && warn_sizeof_array_argument))			      \
! 	      {								\
! 		auto_diagnostic_group d;					\
! 		if (warning_at (stack[sp].loc, OPT_Wsizeof_pointer_div, \
! 				  "division %<sizeof (%T) / sizeof (%T)%> " \
! 				  "does not compute the number of array " \
! 				  "elements",				\
! 				  type0, type1))			\
! 		  if (DECL_P (first_arg))				\
! 		    inform (DECL_SOURCE_LOCATION (first_arg),		\
! 			      "first %<sizeof%> operand was declared here"); \
! 	      }								\
! 	  }								\
  	break;								      \
        default:								      \
  	break;								      \
--- 7813,7835 ----
  		&& !(TREE_CODE (first_arg) == PARM_DECL			      \
  		     && C_ARRAY_PARAMETER (first_arg)			      \
  		     && warn_sizeof_array_argument))			      \
! 	      {								      \
! 		auto_diagnostic_group d;				      \
! 		if (warning_at (stack[sp].loc, OPT_Wsizeof_pointer_div,	      \
! 				  "division %<sizeof (%T) / sizeof (%T)%> "   \
! 				  "does not compute the number of array "     \
! 				  "elements",				      \
! 				  type0, type1))			      \
! 		  if (DECL_P (first_arg))				      \
! 		    inform (DECL_SOURCE_LOCATION (first_arg),		      \
! 			      "first %<sizeof%> operand was declared here");  \
! 	      }								      \
! 	    else if (TREE_CODE (type0) == ARRAY_TYPE			      \
! 		     && !char_type_p (TYPE_MAIN_VARIANT (TREE_TYPE (type0)))  \
! 		     && stack[sp].expr.original_code != PAREN_SIZEOF_EXPR)    \
! 	      maybe_warn_sizeof_array_div (stack[sp].loc, first_arg, type0,   \
! 					   stack[sp].sizeof_arg, type1);      \
! 	  }								      \
  	break;								      \
        default:								      \
  	break;								      \
*************** c_parser_postfix_expression (c_parser *p
*** 9142,9147 ****
--- 9089,9097 ----
  	  if (expr.original_code != C_MAYBE_CONST_EXPR
  	      && expr.original_code != SIZEOF_EXPR)
  	    expr.original_code = ERROR_MARK;
+ 	  /* Remember that we saw ( ) around the sizeof.  */
+ 	  if (expr.original_code == SIZEOF_EXPR)
+ 	    expr.original_code = PAREN_SIZEOF_EXPR;
  	  /* Don't change EXPR.ORIGINAL_TYPE.  */
  	  location_t loc_close_paren = c_parser_peek_token (parser)->location;
  	  set_c_expr_source_range (&expr, loc_open_paren, loc_close_paren);
*************** c_parser_postfix_expression_after_primar
*** 10469,10489 ****
  	  break;
  	case CPP_OPEN_PAREN:
  	  /* Function call.  */
! 	  c_parser_consume_token (parser);
! 	  for (i = 0; i < 3; i++)
! 	    {
! 	      sizeof_arg[i] = NULL_TREE;
! 	      sizeof_arg_loc[i] = UNKNOWN_LOCATION;
! 	    }
! 	  literal_zero_mask = 0;
! 	  if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
! 	    exprlist = NULL;
! 	  else
! 	    exprlist = c_parser_expr_list (parser, true, false, &origtypes,
! 					   sizeof_arg_loc, sizeof_arg,
! 					   &arg_loc, &literal_zero_mask);
! 	  c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
! 				     "expected %<)%>");
  	  orig_expr = expr;
  	  mark_exp_read (expr.value);
  	  if (warn_sizeof_pointer_memaccess)
--- 10419,10441 ----
  	  break;
  	case CPP_OPEN_PAREN:
  	  /* Function call.  */
! 	  {
! 	    matching_parens parens;
! 	    parens.consume_open (parser);
! 	    for (i = 0; i < 3; i++)
! 	      {
! 		sizeof_arg[i] = NULL_TREE;
! 		sizeof_arg_loc[i] = UNKNOWN_LOCATION;
! 	      }
! 	    literal_zero_mask = 0;
! 	    if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
! 	      exprlist = NULL;
! 	    else
! 	      exprlist = c_parser_expr_list (parser, true, false, &origtypes,
! 					     sizeof_arg_loc, sizeof_arg,
! 					     &arg_loc, &literal_zero_mask);
! 	    parens.skip_until_found_close (parser);
! 	  }
  	  orig_expr = expr;
  	  mark_exp_read (expr.value);
  	  if (warn_sizeof_pointer_memaccess)
*************** c_parser_expression (c_parser *parser)
*** 10657,10664 ****
        c_parser_consume_token (parser);
        expr_loc = c_parser_peek_token (parser)->location;
        lhsval = expr.value;
!       while (TREE_CODE (lhsval) == COMPOUND_EXPR)
! 	lhsval = TREE_OPERAND (lhsval, 1);
        if (DECL_P (lhsval) || handled_component_p (lhsval))
  	mark_exp_read (lhsval);
        next = c_parser_expr_no_commas (parser, NULL);
--- 10609,10622 ----
        c_parser_consume_token (parser);
        expr_loc = c_parser_peek_token (parser)->location;
        lhsval = expr.value;
!       while (TREE_CODE (lhsval) == COMPOUND_EXPR
! 	     || TREE_CODE (lhsval) == NOP_EXPR)
! 	{
! 	  if (TREE_CODE (lhsval) == COMPOUND_EXPR)
! 	    lhsval = TREE_OPERAND (lhsval, 1);
! 	  else
! 	    lhsval = TREE_OPERAND (lhsval, 0);
! 	}
        if (DECL_P (lhsval) || handled_component_p (lhsval))
  	mark_exp_read (lhsval);
        next = c_parser_expr_no_commas (parser, NULL);
*************** c_parser_expr_list (c_parser *parser, bo
*** 10755,10761 ****
    if (locations)
      locations->safe_push (expr.get_location ());
    if (sizeof_arg != NULL
!       && expr.original_code == SIZEOF_EXPR)
      {
        sizeof_arg[0] = c_last_sizeof_arg;
        sizeof_arg_loc[0] = c_last_sizeof_loc;
--- 10713,10720 ----
    if (locations)
      locations->safe_push (expr.get_location ());
    if (sizeof_arg != NULL
!       && (expr.original_code == SIZEOF_EXPR
! 	  || expr.original_code == PAREN_SIZEOF_EXPR))
      {
        sizeof_arg[0] = c_last_sizeof_arg;
        sizeof_arg_loc[0] = c_last_sizeof_loc;
*************** c_parser_expr_list (c_parser *parser, bo
*** 10778,10784 ****
  	locations->safe_push (expr.get_location ());
        if (++idx < 3
  	  && sizeof_arg != NULL
! 	  && expr.original_code == SIZEOF_EXPR)
  	{
  	  sizeof_arg[idx] = c_last_sizeof_arg;
  	  sizeof_arg_loc[idx] = c_last_sizeof_loc;
--- 10737,10744 ----
  	locations->safe_push (expr.get_location ());
        if (++idx < 3
  	  && sizeof_arg != NULL
! 	  && (expr.original_code == SIZEOF_EXPR
! 	      || expr.original_code == PAREN_SIZEOF_EXPR))
  	{
  	  sizeof_arg[idx] = c_last_sizeof_arg;
  	  sizeof_arg_loc[idx] = c_last_sizeof_loc;
*************** c_parser_objc_class_definition (c_parser
*** 10833,10838 ****
--- 10793,10799 ----
        return;
      }
    id1 = c_parser_peek_token (parser)->value;
+   location_t loc1 = c_parser_peek_token (parser)->location;
    c_parser_consume_token (parser);
    if (c_parser_next_token_is (parser, CPP_OPEN_PAREN))
      {
*************** c_parser_objc_class_definition (c_parser
*** 10892,10898 ****
        tree proto = NULL_TREE;
        if (c_parser_next_token_is (parser, CPP_LESS))
  	proto = c_parser_objc_protocol_refs (parser);
!       objc_start_class_interface (id1, superclass, proto, attributes);
      }
    else
      objc_start_class_implementation (id1, superclass);
--- 10853,10859 ----
        tree proto = NULL_TREE;
        if (c_parser_next_token_is (parser, CPP_LESS))
  	proto = c_parser_objc_protocol_refs (parser);
!       objc_start_class_interface (id1, loc1, superclass, proto, attributes);
      }
    else
      objc_start_class_implementation (id1, superclass);
*************** c_parser_omp_clause_name (c_parser *pars
*** 12642,12647 ****
--- 12603,12610 ----
  	case 'a':
  	  if (!strcmp ("aligned", p))
  	    result = PRAGMA_OMP_CLAUSE_ALIGNED;
+ 	  else if (!strcmp ("allocate", p))
+ 	    result = PRAGMA_OMP_CLAUSE_ALLOCATE;
  	  else if (!strcmp ("async", p))
  	    result = PRAGMA_OACC_CLAUSE_ASYNC;
  	  else if (!strcmp ("attach", p))
*************** c_parser_omp_clause_hint (c_parser *pars
*** 13915,13930 ****
        expr = convert_lvalue_to_rvalue (expr_loc, expr, false, true);
        tree c, t = expr.value;
        t = c_fully_fold (t, false, NULL);
- 
-       parens.skip_until_found_close (parser);
- 
        if (!INTEGRAL_TYPE_P (TREE_TYPE (t))
! 	  || TREE_CODE (t) != INTEGER_CST)
  	{
! 	  c_parser_error (parser, "expected constant integer expression");
  	  return list;
  	}
! 
        check_no_duplicate_clause (list, OMP_CLAUSE_HINT, "hint");
  
        c = build_omp_clause (hint_loc, OMP_CLAUSE_HINT);
--- 13878,13892 ----
        expr = convert_lvalue_to_rvalue (expr_loc, expr, false, true);
        tree c, t = expr.value;
        t = c_fully_fold (t, false, NULL);
        if (!INTEGRAL_TYPE_P (TREE_TYPE (t))
! 	  || TREE_CODE (t) != INTEGER_CST
! 	  || tree_int_cst_sgn (t) == -1)
  	{
! 	  c_parser_error (parser, "expected constant integer expression "
! 				  "with valid sync-hint value");
  	  return list;
  	}
!       parens.skip_until_found_close (parser);
        check_no_duplicate_clause (list, OMP_CLAUSE_HINT, "hint");
  
        c = build_omp_clause (hint_loc, OMP_CLAUSE_HINT);
*************** c_parser_omp_clause_schedule (c_parser *
*** 14800,14805 ****
--- 14762,14768 ----
  
    c = build_omp_clause (loc, OMP_CLAUSE_SCHEDULE);
  
+   location_t comma = UNKNOWN_LOCATION;
    while (c_parser_next_token_is (parser, CPP_NAME))
      {
        tree kind = c_parser_peek_token (parser)->value;
*************** c_parser_omp_clause_schedule (c_parser *
*** 14812,14827 ****
  	modifiers |= OMP_CLAUSE_SCHEDULE_NONMONOTONIC;
        else
  	break;
        c_parser_consume_token (parser);
        if (nmodifiers++ == 0
  	  && c_parser_next_token_is (parser, CPP_COMMA))
! 	c_parser_consume_token (parser);
        else
  	{
  	  c_parser_require (parser, CPP_COLON, "expected %<:%>");
  	  break;
  	}
      }
  
    if ((modifiers & (OMP_CLAUSE_SCHEDULE_MONOTONIC
  		    | OMP_CLAUSE_SCHEDULE_NONMONOTONIC))
--- 14775,14796 ----
  	modifiers |= OMP_CLAUSE_SCHEDULE_NONMONOTONIC;
        else
  	break;
+       comma = UNKNOWN_LOCATION;
        c_parser_consume_token (parser);
        if (nmodifiers++ == 0
  	  && c_parser_next_token_is (parser, CPP_COMMA))
! 	{
! 	  comma = c_parser_peek_token (parser)->location;
! 	  c_parser_consume_token (parser);
! 	}
        else
  	{
  	  c_parser_require (parser, CPP_COLON, "expected %<:%>");
  	  break;
  	}
      }
+   if (comma != UNKNOWN_LOCATION)
+     error_at (comma, "expected %<:%>");
  
    if ((modifiers & (OMP_CLAUSE_SCHEDULE_MONOTONIC
  		    | OMP_CLAUSE_SCHEDULE_NONMONOTONIC))
*************** c_parser_omp_clause_aligned (c_parser *p
*** 15145,15150 ****
--- 15114,15175 ----
    return nl;
  }
  
+ /* OpenMP 5.0:
+    allocate ( variable-list )
+    allocate ( expression : variable-list ) */
+ 
+ static tree
+ c_parser_omp_clause_allocate (c_parser *parser, tree list)
+ {
+   location_t clause_loc = c_parser_peek_token (parser)->location;
+   tree nl, c;
+   tree allocator = NULL_TREE;
+ 
+   matching_parens parens;
+   if (!parens.require_open (parser))
+     return list;
+ 
+   if ((c_parser_next_token_is_not (parser, CPP_NAME)
+        && c_parser_next_token_is_not (parser, CPP_KEYWORD))
+       || (c_parser_peek_2nd_token (parser)->type != CPP_COMMA
+ 	  && c_parser_peek_2nd_token (parser)->type != CPP_CLOSE_PAREN))
+     {
+       location_t expr_loc = c_parser_peek_token (parser)->location;
+       c_expr expr = c_parser_expr_no_commas (parser, NULL);
+       expr = convert_lvalue_to_rvalue (expr_loc, expr, false, true);
+       allocator = expr.value;
+       allocator = c_fully_fold (allocator, false, NULL);
+       tree orig_type
+ 	= expr.original_type ? expr.original_type : TREE_TYPE (allocator);
+       orig_type = TYPE_MAIN_VARIANT (orig_type);
+       if (!INTEGRAL_TYPE_P (TREE_TYPE (allocator))
+ 	  || TREE_CODE (orig_type) != ENUMERAL_TYPE
+ 	  || TYPE_NAME (orig_type) != get_identifier ("omp_allocator_handle_t"))
+         {
+           error_at (clause_loc, "%<allocate%> clause allocator expression "
+ 				"has type %qT rather than "
+ 				"%<omp_allocator_handle_t%>",
+ 				TREE_TYPE (allocator));
+           allocator = NULL_TREE;
+         }
+       if (!c_parser_require (parser, CPP_COLON, "expected %<:%>"))
+ 	{
+ 	  parens.skip_until_found_close (parser);
+ 	  return list;
+ 	}
+     }
+ 
+   nl = c_parser_omp_variable_list (parser, clause_loc,
+ 				   OMP_CLAUSE_ALLOCATE, list);
+ 
+   if (allocator)
+     for (c = nl; c != list; c = OMP_CLAUSE_CHAIN (c))
+       OMP_CLAUSE_ALLOCATE_ALLOCATOR (c) = allocator;
+ 
+   parens.skip_until_found_close (parser);
+   return nl;
+ }
+ 
  /* OpenMP 4.0:
     linear ( variable-list )
     linear ( variable-list : expression )
*************** c_parser_omp_clause_uniform (c_parser *p
*** 15946,15951 ****
--- 15971,16026 ----
    return list;
  }
  
+ /* OpenMP 5.0:
+    detach ( event-handle ) */
+ 
+ static tree
+ c_parser_omp_clause_detach (c_parser *parser, tree list)
+ {
+   matching_parens parens;
+   location_t clause_loc = c_parser_peek_token (parser)->location;
+ 
+   if (!parens.require_open (parser))
+     return list;
+ 
+   if (c_parser_next_token_is_not (parser, CPP_NAME)
+       || c_parser_peek_token (parser)->id_kind != C_ID_ID)
+     {
+       c_parser_error (parser, "expected identifier");
+       parens.skip_until_found_close (parser);
+       return list;
+     }
+ 
+   tree t = lookup_name (c_parser_peek_token (parser)->value);
+   if (t == NULL_TREE)
+     {
+       undeclared_variable (c_parser_peek_token (parser)->location,
+ 			   c_parser_peek_token (parser)->value);
+       parens.skip_until_found_close (parser);
+       return list;
+     }
+   c_parser_consume_token (parser);
+ 
+   tree type = TYPE_MAIN_VARIANT (TREE_TYPE (t));
+   if (!INTEGRAL_TYPE_P (type)
+       || TREE_CODE (type) != ENUMERAL_TYPE
+       || TYPE_NAME (type) != get_identifier ("omp_event_handle_t"))
+     {
+       error_at (clause_loc, "%<detach%> clause event handle "
+ 			    "has type %qT rather than "
+ 			    "%<omp_event_handle_t%>",
+ 			    type);
+       parens.skip_until_found_close (parser);
+       return list;
+     }
+ 
+   tree u = build_omp_clause (clause_loc, OMP_CLAUSE_DETACH);
+   OMP_CLAUSE_DECL (u) = t;
+   OMP_CLAUSE_CHAIN (u) = list;
+   parens.skip_until_found_close (parser);
+   return u;
+ }
+ 
  /* Parse all OpenACC clauses.  The set clauses allowed by the directive
     is a bitmask in MASK.  Return the list of clauses found.  */
  
*************** c_parser_omp_all_clauses (c_parser *pars
*** 16212,16217 ****
--- 16287,16296 ----
  	  clauses = c_parser_omp_clause_default (parser, clauses, false);
  	  c_name = "default";
  	  break;
+ 	case PRAGMA_OMP_CLAUSE_DETACH:
+ 	  clauses = c_parser_omp_clause_detach (parser, clauses);
+ 	  c_name = "detach";
+ 	  break;
  	case PRAGMA_OMP_CLAUSE_FIRSTPRIVATE:
  	  clauses = c_parser_omp_clause_firstprivate (parser, clauses);
  	  c_name = "firstprivate";
*************** c_parser_omp_all_clauses (c_parser *pars
*** 16387,16392 ****
--- 16466,16475 ----
  	  clauses = c_parser_omp_clause_aligned (parser, clauses);
  	  c_name = "aligned";
  	  break;
+ 	case PRAGMA_OMP_CLAUSE_ALLOCATE:
+ 	  clauses = c_parser_omp_clause_allocate (parser, clauses);
+ 	  c_name = "allocate";
+ 	  break;
  	case PRAGMA_OMP_CLAUSE_LINEAR: 
  	  clauses = c_parser_omp_clause_linear (parser, clauses); 
  	  c_name = "linear";
*************** c_parser_oacc_wait (location_t loc, c_pa
*** 17221,17226 ****
--- 17304,17358 ----
    return stmt;
  }
  
+ /* OpenMP 5.0:
+    # pragma omp allocate (list)  [allocator(allocator)]  */
+ 
+ static void
+ c_parser_omp_allocate (location_t loc, c_parser *parser)
+ {
+   tree allocator = NULL_TREE;
+   tree nl = c_parser_omp_var_list_parens (parser, OMP_CLAUSE_ALLOCATE, NULL_TREE);
+   if (c_parser_next_token_is (parser, CPP_NAME))
+     {
+       matching_parens parens;
+       const char *p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
+       c_parser_consume_token (parser);
+       if (strcmp ("allocator", p) != 0)
+ 	error_at (c_parser_peek_token (parser)->location,
+ 		  "expected %<allocator%>");
+       else if (parens.require_open (parser))
+ 	{
+ 	  location_t expr_loc = c_parser_peek_token (parser)->location;
+ 	  c_expr expr = c_parser_expr_no_commas (parser, NULL);
+ 	  expr = convert_lvalue_to_rvalue (expr_loc, expr, false, true);
+ 	  allocator = expr.value;
+ 	  allocator = c_fully_fold (allocator, false, NULL);
+ 	  tree orig_type
+ 	    = expr.original_type ? expr.original_type : TREE_TYPE (allocator);
+ 	  orig_type = TYPE_MAIN_VARIANT (orig_type);
+ 	  if (!INTEGRAL_TYPE_P (TREE_TYPE (allocator))
+ 	      || TREE_CODE (orig_type) != ENUMERAL_TYPE
+ 	      || TYPE_NAME (orig_type)
+ 		 != get_identifier ("omp_allocator_handle_t"))
+ 	    {
+ 	      error_at (expr_loc, "%<allocator%> clause allocator expression "
+ 				"has type %qT rather than "
+ 				"%<omp_allocator_handle_t%>",
+ 				TREE_TYPE (allocator));
+ 	      allocator = NULL_TREE;
+ 	    }
+ 	  parens.skip_until_found_close (parser);
+ 	}
+     }
+   c_parser_skip_to_pragma_eol (parser);
+ 
+   if (allocator)
+     for (tree c = nl; c != NULL_TREE; c = OMP_CLAUSE_CHAIN (c))
+       OMP_CLAUSE_ALLOCATE_ALLOCATOR (c) = allocator;
+ 
+   sorry_at (loc, "%<#pragma omp allocate%> not yet supported");
+ }
+ 
  /* OpenMP 2.5:
     # pragma omp atomic new-line
       expression-stmt
*************** c_parser_oacc_wait (location_t loc, c_pa
*** 17275,17281 ****
    LOC is the location of the #pragma token.  */
  
  static void
! c_parser_omp_atomic (location_t loc, c_parser *parser)
  {
    tree lhs = NULL_TREE, rhs = NULL_TREE, v = NULL_TREE;
    tree lhs1 = NULL_TREE, rhs1 = NULL_TREE;
--- 17407,17413 ----
    LOC is the location of the #pragma token.  */
  
  static void
! c_parser_omp_atomic (location_t loc, c_parser *parser, bool openacc)
  {
    tree lhs = NULL_TREE, rhs = NULL_TREE, v = NULL_TREE;
    tree lhs1 = NULL_TREE, rhs1 = NULL_TREE;
*************** c_parser_omp_atomic (location_t loc, c_p
*** 17314,17319 ****
--- 17446,17457 ----
  	    new_code = OMP_ATOMIC;
  	  else if (!strcmp (p, "capture"))
  	    new_code = OMP_ATOMIC_CAPTURE_NEW;
+ 	  else if (openacc)
+ 	    {
+ 	      p = NULL;
+ 	      error_at (cloc, "expected %<read%>, %<write%>, %<update%>, "
+ 			      "or %<capture%> clause");
+ 	    }
  	  else if (!strcmp (p, "seq_cst"))
  	    new_memory_order = OMP_MEMORY_ORDER_SEQ_CST;
  	  else if (!strcmp (p, "acq_rel"))
*************** c_parser_omp_atomic (location_t loc, c_p
*** 17341,17347 ****
  	    {
  	      if (new_code != ERROR_MARK)
  		{
! 		  if (code != ERROR_MARK)
  		    error_at (cloc, "too many atomic clauses");
  		  else
  		    code = new_code;
--- 17479,17490 ----
  	    {
  	      if (new_code != ERROR_MARK)
  		{
! 		  /* OpenACC permits 'update capture'.  */
! 		  if (openacc
! 		      && code == OMP_ATOMIC
! 		      && new_code == OMP_ATOMIC_CAPTURE_NEW)
! 		    code = new_code;
! 		  else if (code != ERROR_MARK)
  		    error_at (cloc, "too many atomic clauses");
  		  else
  		    code = new_code;
*************** c_parser_omp_atomic (location_t loc, c_p
*** 17363,17369 ****
  
    if (code == ERROR_MARK)
      code = OMP_ATOMIC;
!   if (memory_order == OMP_MEMORY_ORDER_UNSPECIFIED)
      {
        omp_requires_mask
  	= (enum omp_requires) (omp_requires_mask
--- 17506,17514 ----
  
    if (code == ERROR_MARK)
      code = OMP_ATOMIC;
!   if (openacc)
!     memory_order = OMP_MEMORY_ORDER_RELAXED;
!   else if (memory_order == OMP_MEMORY_ORDER_UNSPECIFIED)
      {
        omp_requires_mask
  	= (enum omp_requires) (omp_requires_mask
*************** c_parser_omp_atomic (location_t loc, c_p
*** 17419,17424 ****
--- 17564,17570 ----
  	  }
  	break;
        case OMP_ATOMIC:
+      /* case OMP_ATOMIC_CAPTURE_NEW: - or update to OpenMP 5.1 */
  	if (memory_order == OMP_MEMORY_ORDER_ACQ_REL
  	    || memory_order == OMP_MEMORY_ORDER_ACQUIRE)
  	  {
*************** c_parser_omp_critical (location_t loc, c
*** 17802,17819 ****
        if (c_parser_next_token_is (parser, CPP_COMMA)
  	  && c_parser_peek_2nd_token (parser)->type == CPP_NAME)
  	c_parser_consume_token (parser);
- 
-       clauses = c_parser_omp_all_clauses (parser,
- 					  OMP_CRITICAL_CLAUSE_MASK,
- 					  "#pragma omp critical");
-     }
-   else
-     {
-       if (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL))
- 	c_parser_error (parser, "expected %<(%> or end of line");
-       c_parser_skip_to_pragma_eol (parser);
      }
! 
    stmt = c_parser_omp_structured_block (parser, if_p);
    return c_finish_omp_critical (loc, stmt, name, clauses);
  }
--- 17948,17956 ----
        if (c_parser_next_token_is (parser, CPP_COMMA)
  	  && c_parser_peek_2nd_token (parser)->type == CPP_NAME)
  	c_parser_consume_token (parser);
      }
!   clauses = c_parser_omp_all_clauses (parser, OMP_CRITICAL_CLAUSE_MASK,
! 				      "#pragma omp critical");
    stmt = c_parser_omp_structured_block (parser, if_p);
    return c_finish_omp_critical (loc, stmt, name, clauses);
  }
*************** static tree
*** 18048,18054 ****
  c_parser_omp_for_loop (location_t loc, c_parser *parser, enum tree_code code,
  		       tree clauses, tree *cclauses, bool *if_p)
  {
!   tree decl, cond, incr, save_break, save_cont, body, init, stmt, cl;
    tree declv, condv, incrv, initv, ret = NULL_TREE;
    tree pre_body = NULL_TREE, this_pre_body;
    tree ordered_cl = NULL_TREE;
--- 18185,18192 ----
  c_parser_omp_for_loop (location_t loc, c_parser *parser, enum tree_code code,
  		       tree clauses, tree *cclauses, bool *if_p)
  {
!   tree decl, cond, incr, body, init, stmt, cl;
!   unsigned char save_in_statement;
    tree declv, condv, incrv, initv, ret = NULL_TREE;
    tree pre_body = NULL_TREE, this_pre_body;
    tree ordered_cl = NULL_TREE;
*************** c_parser_omp_for_loop (location_t loc, c
*** 18116,18121 ****
--- 18254,18264 ----
    for_loc = c_parser_peek_token (parser)->location;
    c_parser_consume_token (parser);
  
+   /* Forbid break/continue in the loop initializer, condition, and
+      increment expressions.  */
+   save_in_statement = in_statement;
+   in_statement = IN_OMP_BLOCK;
+ 
    for (i = 0; i < count; i++)
      {
        int bracecount = 0;
*************** c_parser_omp_for_loop (location_t loc, c
*** 18130,18137 ****
--- 18273,18282 ----
  	  if (i > 0)
  	    vec_safe_push (for_block, c_begin_compound_stmt (true));
  	  this_pre_body = push_stmt_list ();
+ 	  c_in_omp_for = true;
  	  c_parser_declaration_or_fndef (parser, true, true, true, true, true,
  					 NULL, vNULL);
+ 	  c_in_omp_for = false;
  	  if (this_pre_body)
  	    {
  	      this_pre_body = pop_stmt_list (this_pre_body);
*************** c_parser_omp_for_loop (location_t loc, c
*** 18169,18177 ****
--- 18314,18324 ----
  	  init_exp = c_parser_expr_no_commas (parser, NULL);
  	  init_exp = default_function_array_read_conversion (init_loc,
  							     init_exp);
+ 	  c_in_omp_for = true;
  	  init = build_modify_expr (init_loc, decl, decl_exp.original_type,
  				    NOP_EXPR, init_loc, init_exp.value,
  				    init_exp.original_type);
+ 	  c_in_omp_for = false;
  	  init = c_process_expr_stmt (init_loc, init);
  
  	  c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>");
*************** c_parser_omp_for_loop (location_t loc, c
*** 18192,18210 ****
        if (c_parser_next_token_is_not (parser, CPP_SEMICOLON))
  	{
  	  location_t cond_loc = c_parser_peek_token (parser)->location;
  	  struct c_expr cond_expr
  	    = c_parser_binary_expression (parser, NULL, NULL_TREE);
  
  	  cond = cond_expr.value;
  	  cond = c_objc_common_truthvalue_conversion (cond_loc, cond);
- 	  if (COMPARISON_CLASS_P (cond))
- 	    {
- 	      tree op0 = TREE_OPERAND (cond, 0), op1 = TREE_OPERAND (cond, 1);
- 	      op0 = c_fully_fold (op0, false, NULL);
- 	      op1 = c_fully_fold (op1, false, NULL);
- 	      TREE_OPERAND (cond, 0) = op0;
- 	      TREE_OPERAND (cond, 1) = op1;
- 	    }
  	  switch (cond_expr.original_code)
  	    {
  	    case GT_EXPR:
--- 18339,18351 ----
        if (c_parser_next_token_is_not (parser, CPP_SEMICOLON))
  	{
  	  location_t cond_loc = c_parser_peek_token (parser)->location;
+ 	  c_in_omp_for = true;
  	  struct c_expr cond_expr
  	    = c_parser_binary_expression (parser, NULL, NULL_TREE);
+           c_in_omp_for = false;
  
  	  cond = cond_expr.value;
  	  cond = c_objc_common_truthvalue_conversion (cond_loc, cond);
  	  switch (cond_expr.original_code)
  	    {
  	    case GT_EXPR:
*************** c_parser_omp_for_loop (location_t loc, c
*** 18291,18300 ****
    if (nbraces)
      if_p = NULL;
  
!   save_break = c_break_label;
!   c_break_label = size_one_node;
!   save_cont = c_cont_label;
!   c_cont_label = NULL_TREE;
    body = push_stmt_list ();
  
    if (inscan)
--- 18432,18438 ----
    if (nbraces)
      if_p = NULL;
  
!   in_statement = IN_OMP_FOR;
    body = push_stmt_list ();
  
    if (inscan)
*************** c_parser_omp_for_loop (location_t loc, c
*** 18308,18323 ****
      }
    else
      add_stmt (c_parser_c99_block_statement (parser, if_p));
-   if (c_cont_label)
-     {
-       tree t = build1 (LABEL_EXPR, void_type_node, c_cont_label);
-       SET_EXPR_LOCATION (t, loc);
-       add_stmt (t);
-     }
  
    body = pop_stmt_list (body);
!   c_break_label = save_break;
!   c_cont_label = save_cont;
  
    while (nbraces)
      {
--- 18446,18454 ----
      }
    else
      add_stmt (c_parser_c99_block_statement (parser, if_p));
  
    body = pop_stmt_list (body);
!   in_statement = save_in_statement;
  
    while (nbraces)
      {
*************** c_parser_omp_for_loop (location_t loc, c
*** 18348,18355 ****
--- 18479,18488 ----
       an error from the initialization parsing.  */
    if (!fail)
      {
+       c_in_omp_for = true;
        stmt = c_finish_omp_for (loc, code, declv, NULL, initv, condv,
  			       incrv, body, pre_body, true);
+       c_in_omp_for = false;
  
        /* Check for iterators appearing in lb, b or incr expressions.  */
        if (stmt && !c_omp_check_loop_iv (stmt, declv, NULL))
*************** c_parser_omp_for_loop (location_t loc, c
*** 18359,18364 ****
--- 18492,18531 ----
  	{
  	  add_stmt (stmt);
  
+ 	  for (i = 0; i < TREE_VEC_LENGTH (OMP_FOR_INIT (stmt)); i++)
+ 	    {
+ 	      tree init = TREE_VEC_ELT (OMP_FOR_INIT (stmt), i);
+ 	      gcc_assert (TREE_CODE (init) == MODIFY_EXPR);
+ 	      tree decl = TREE_OPERAND (init, 0);
+ 	      tree cond = TREE_VEC_ELT (OMP_FOR_COND (stmt), i);
+ 	      gcc_assert (COMPARISON_CLASS_P (cond));
+ 	      gcc_assert (TREE_OPERAND (cond, 0) == decl);
+ 
+ 	      tree op0 = TREE_OPERAND (init, 1);
+ 	      if (!OMP_FOR_NON_RECTANGULAR (stmt)
+ 		  || TREE_CODE (op0) != TREE_VEC)
+ 		TREE_OPERAND (init, 1) = c_fully_fold (op0, false, NULL);
+ 	      else
+ 		{
+ 		  TREE_VEC_ELT (op0, 1)
+ 		    = c_fully_fold (TREE_VEC_ELT (op0, 1), false, NULL);
+ 		  TREE_VEC_ELT (op0, 2)
+ 		    = c_fully_fold (TREE_VEC_ELT (op0, 2), false, NULL);
+ 		}
+ 
+ 	      tree op1 = TREE_OPERAND (cond, 1);
+ 	      if (!OMP_FOR_NON_RECTANGULAR (stmt)
+ 		  || TREE_CODE (op1) != TREE_VEC)
+ 		TREE_OPERAND (cond, 1) = c_fully_fold (op1, false, NULL);
+ 	      else
+ 		{
+ 		  TREE_VEC_ELT (op1, 1)
+ 		    = c_fully_fold (TREE_VEC_ELT (op1, 1), false, NULL);
+ 		  TREE_VEC_ELT (op1, 2)
+ 		    = c_fully_fold (TREE_VEC_ELT (op1, 2), false, NULL);
+ 		}
+ 	    }
+ 
  	  if (cclauses != NULL
  	      && cclauses[C_OMP_CLAUSE_SPLIT_PARALLEL] != NULL)
  	    {
*************** c_parser_omp_simd (location_t loc, c_par
*** 18546,18551 ****
--- 18713,18719 ----
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_SCHEDULE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_COLLAPSE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_NOWAIT)	\
+ 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_ALLOCATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_ORDER))
  
  static tree
*************** c_parser_omp_sections_scope (location_t
*** 18837,18842 ****
--- 19005,19011 ----
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_FIRSTPRIVATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_LASTPRIVATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_REDUCTION)	\
+ 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_ALLOCATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_NOWAIT))
  
  static tree
*************** c_parser_omp_sections (location_t loc, c
*** 18891,18896 ****
--- 19060,19066 ----
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_COPYIN)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_REDUCTION)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_NUM_THREADS)	\
+ 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_ALLOCATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_PROC_BIND))
  
  static tree
*************** c_parser_omp_parallel (location_t loc, c
*** 19032,19037 ****
--- 19202,19208 ----
  	( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_PRIVATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_FIRSTPRIVATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_COPYPRIVATE)	\
+ 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_ALLOCATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_NOWAIT))
  
  static tree
*************** c_parser_omp_single (location_t loc, c_p
*** 19066,19072 ****
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_MERGEABLE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEPEND)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_PRIORITY)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_IN_REDUCTION))
  
  static tree
  c_parser_omp_task (location_t loc, c_parser *parser, bool *if_p)
--- 19237,19245 ----
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_MERGEABLE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEPEND)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_PRIORITY)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_ALLOCATE)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_IN_REDUCTION)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DETACH))
  
  static tree
  c_parser_omp_task (location_t loc, c_parser *parser, bool *if_p)
*************** c_parser_omp_taskyield (c_parser *parser
*** 19136,19142 ****
  */
  
  #define OMP_TASKGROUP_CLAUSE_MASK				\
! 	( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_TASK_REDUCTION))
  
  static tree
  c_parser_omp_taskgroup (location_t loc, c_parser *parser, bool *if_p)
--- 19309,19316 ----
  */
  
  #define OMP_TASKGROUP_CLAUSE_MASK				\
! 	( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_ALLOCATE)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_TASK_REDUCTION))
  
  static tree
  c_parser_omp_taskgroup (location_t loc, c_parser *parser, bool *if_p)
*************** c_parser_omp_cancellation_point (c_parse
*** 19237,19242 ****
--- 19411,19417 ----
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_FIRSTPRIVATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_LASTPRIVATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DIST_SCHEDULE)\
+ 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_ALLOCATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_COLLAPSE))
  
  static tree
*************** c_parser_omp_distribute (location_t loc,
*** 19326,19331 ****
--- 19501,19507 ----
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_REDUCTION)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_NUM_TEAMS)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_THREAD_LIMIT)	\
+ 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_ALLOCATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEFAULT))
  
  static tree
*************** c_parser_omp_target_data (location_t loc
*** 19432,19437 ****
--- 19608,19614 ----
    tree clauses
      = c_parser_omp_all_clauses (parser, OMP_TARGET_DATA_CLAUSE_MASK,
  				"#pragma omp target data");
+   c_omp_adjust_map_clauses (clauses, false);
    int map_seen = 0;
    for (tree *pc = &clauses; *pc;)
      {
*************** c_parser_omp_target_data (location_t loc
*** 19449,19454 ****
--- 19626,19632 ----
  	    break;
  	  case GOMP_MAP_FIRSTPRIVATE_POINTER:
  	  case GOMP_MAP_ALWAYS_POINTER:
+ 	  case GOMP_MAP_ATTACH_DETACH:
  	    break;
  	  default:
  	    map_seen |= 1;
*************** c_parser_omp_target_enter_data (location
*** 19572,19577 ****
--- 19750,19756 ----
    tree clauses
      = c_parser_omp_all_clauses (parser, OMP_TARGET_ENTER_DATA_CLAUSE_MASK,
  				"#pragma omp target enter data");
+   c_omp_adjust_map_clauses (clauses, false);
    int map_seen = 0;
    for (tree *pc = &clauses; *pc;)
      {
*************** c_parser_omp_target_enter_data (location
*** 19585,19590 ****
--- 19764,19770 ----
  	    break;
  	  case GOMP_MAP_FIRSTPRIVATE_POINTER:
  	  case GOMP_MAP_ALWAYS_POINTER:
+ 	  case GOMP_MAP_ATTACH_DETACH:
  	    break;
  	  default:
  	    map_seen |= 1;
*************** c_parser_omp_target_exit_data (location_
*** 19656,19662 ****
    tree clauses
      = c_parser_omp_all_clauses (parser, OMP_TARGET_EXIT_DATA_CLAUSE_MASK,
  				"#pragma omp target exit data");
! 
    int map_seen = 0;
    for (tree *pc = &clauses; *pc;)
      {
--- 19836,19842 ----
    tree clauses
      = c_parser_omp_all_clauses (parser, OMP_TARGET_EXIT_DATA_CLAUSE_MASK,
  				"#pragma omp target exit data");
!   c_omp_adjust_map_clauses (clauses, false);
    int map_seen = 0;
    for (tree *pc = &clauses; *pc;)
      {
*************** c_parser_omp_target_exit_data (location_
*** 19671,19676 ****
--- 19851,19857 ----
  	    break;
  	  case GOMP_MAP_FIRSTPRIVATE_POINTER:
  	  case GOMP_MAP_ALWAYS_POINTER:
+ 	  case GOMP_MAP_ATTACH_DETACH:
  	    break;
  	  default:
  	    map_seen |= 1;
*************** c_parser_omp_target_exit_data (location_
*** 19713,19718 ****
--- 19894,19900 ----
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_NOWAIT)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_PRIVATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_FIRSTPRIVATE)	\
+ 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_ALLOCATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEFAULTMAP)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_IS_DEVICE_PTR))
  
*************** c_parser_omp_target (c_parser *parser, e
*** 19880,19885 ****
--- 20062,20069 ----
    OMP_TARGET_CLAUSES (stmt)
      = c_parser_omp_all_clauses (parser, OMP_TARGET_CLAUSE_MASK,
  				"#pragma omp target");
+   c_omp_adjust_map_clauses (OMP_TARGET_CLAUSES (stmt), true);
+ 
    pc = &OMP_TARGET_CLAUSES (stmt);
    keep_next_level ();
    block = c_begin_compound_stmt (true);
*************** check_clauses:
*** 19904,19909 ****
--- 20088,20094 ----
  	  case GOMP_MAP_ALLOC:
  	  case GOMP_MAP_FIRSTPRIVATE_POINTER:
  	  case GOMP_MAP_ALWAYS_POINTER:
+ 	  case GOMP_MAP_ATTACH_DETACH:
  	    break;
  	  default:
  	    error_at (OMP_CLAUSE_LOCATION (*pc),
*************** check_clauses:
*** 19915,19920 ****
--- 20100,20106 ----
  	  }
        pc = &OMP_CLAUSE_CHAIN (*pc);
      }
+   cfun->has_omp_target = true;
    return true;
  }
  
*************** c_finish_taskloop_clauses (tree clauses)
*** 21342,21347 ****
--- 21528,21534 ----
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_MERGEABLE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_NOGROUP)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_PRIORITY)	\
+ 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_ALLOCATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_REDUCTION)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_IN_REDUCTION))
  
*************** c_parser_omp_construct (c_parser *parser
*** 21428,21434 ****
    switch (p_kind)
      {
      case PRAGMA_OACC_ATOMIC:
!       c_parser_omp_atomic (loc, parser);
        return;
      case PRAGMA_OACC_CACHE:
        strcpy (p_name, "#pragma acc");
--- 21615,21621 ----
    switch (p_kind)
      {
      case PRAGMA_OACC_ATOMIC:
!       c_parser_omp_atomic (loc, parser, true);
        return;
      case PRAGMA_OACC_CACHE:
        strcpy (p_name, "#pragma acc");
*************** c_parser_omp_construct (c_parser *parser
*** 21454,21461 ****
        strcpy (p_name, "#pragma wait");
        stmt = c_parser_oacc_wait (loc, parser, p_name);
        break;
      case PRAGMA_OMP_ATOMIC:
!       c_parser_omp_atomic (loc, parser);
        return;
      case PRAGMA_OMP_CRITICAL:
        stmt = c_parser_omp_critical (loc, parser, if_p);
--- 21641,21651 ----
        strcpy (p_name, "#pragma wait");
        stmt = c_parser_oacc_wait (loc, parser, p_name);
        break;
+     case PRAGMA_OMP_ALLOCATE:
+       c_parser_omp_allocate (loc, parser);
+       return;
      case PRAGMA_OMP_ATOMIC:
!       c_parser_omp_atomic (loc, parser, false);
        return;
      case PRAGMA_OMP_CRITICAL:
        stmt = c_parser_omp_critical (loc, parser, if_p);
*************** c_parser_omp_construct (c_parser *parser
*** 21509,21515 ****
        gcc_unreachable ();
      }
  
!   if (stmt)
      gcc_assert (EXPR_LOCATION (stmt) != UNKNOWN_LOCATION);
  }
  
--- 21699,21705 ----
        gcc_unreachable ();
      }
  
!   if (stmt && stmt != error_mark_node)
      gcc_assert (EXPR_LOCATION (stmt) != UNKNOWN_LOCATION);
  }
  
diff -Nrcpad gcc-10.3.0/gcc/c/c-parser.h gcc-11.1.0/gcc/c/c-parser.h
*** gcc-10.3.0/gcc/c/c-parser.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/c-parser.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Declarations for the parser for C and Objective-C.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
     Parser actions based on the old Bison parser; structure somewhat
     influenced by and fragments based on the C++ parser.
--- 1,5 ----
  /* Declarations for the parser for C and Objective-C.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
     Parser actions based on the old Bison parser; structure somewhat
     influenced by and fragments based on the C++ parser.
diff -Nrcpad gcc-10.3.0/gcc/c/c-tree.h gcc-11.1.0/gcc/c/c-tree.h
*** gcc-10.3.0/gcc/c/c-tree.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/c-tree.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for C parsing and type checking.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for C parsing and type checking.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern void gen_aux_info_record (tree, i
*** 547,554 ****
  struct c_spot_bindings;
  class c_struct_parse_info;
  extern struct obstack parser_obstack;
! extern tree c_break_label;
! extern tree c_cont_label;
  
  extern bool global_bindings_p (void);
  extern tree pushdecl (tree);
--- 547,565 ----
  struct c_spot_bindings;
  class c_struct_parse_info;
  extern struct obstack parser_obstack;
! /* Set to IN_ITERATION_STMT if parsing an iteration-statement,
!    to IN_OMP_BLOCK if parsing OpenMP structured block and
!    IN_OMP_FOR if parsing OpenMP loop.  If parsing a switch statement,
!    this is bitwise ORed with IN_SWITCH_STMT, unless parsing an
!    iteration-statement, OpenMP block or loop within that switch.  */
! #define IN_SWITCH_STMT		1
! #define IN_ITERATION_STMT	2
! #define IN_OMP_BLOCK		4
! #define IN_OMP_FOR		8
! #define IN_OBJC_FOREACH		16
! extern unsigned char in_statement;
! 
! extern bool switch_statement_break_seen_p;
  
  extern bool global_bindings_p (void);
  extern tree pushdecl (tree);
*************** extern void shadow_tag_warned (const str
*** 609,615 ****
  extern tree start_enum (location_t, struct c_enum_contents *, tree);
  extern bool start_function (struct c_declspecs *, struct c_declarator *, tree);
  extern tree start_decl (struct c_declarator *, struct c_declspecs *, bool,
! 			tree);
  extern tree start_struct (location_t, enum tree_code, tree,
  			  class c_struct_parse_info **);
  extern void store_parm_decls (void);
--- 620,626 ----
  extern tree start_enum (location_t, struct c_enum_contents *, tree);
  extern bool start_function (struct c_declspecs *, struct c_declarator *, tree);
  extern tree start_decl (struct c_declarator *, struct c_declspecs *, bool,
! 			tree, location_t * = NULL);
  extern tree start_struct (location_t, enum tree_code, tree,
  			  class c_struct_parse_info **);
  extern void store_parm_decls (void);
*************** extern alias_set_type c_get_alias_set (t
*** 657,668 ****
--- 668,681 ----
  extern int in_alignof;
  extern int in_sizeof;
  extern int in_typeof;
+ extern bool c_in_omp_for;
  
  extern tree c_last_sizeof_arg;
  extern location_t c_last_sizeof_loc;
  
  extern struct c_switch *c_switch_stack;
  
+ extern bool char_type_p (tree);
  extern tree c_objc_common_truthvalue_conversion (location_t, tree);
  extern tree require_complete_type (location_t, tree);
  extern bool same_translation_unit_p (const_tree, const_tree);
*************** extern void process_init_element (locati
*** 713,720 ****
  extern tree build_compound_literal (location_t, tree, tree, bool,
  				    unsigned int);
  extern void check_compound_literal_type (location_t, struct c_type_name *);
! extern tree c_start_case (location_t, location_t, tree, bool);
! extern void c_finish_case (tree, tree);
  extern tree build_asm_expr (location_t, tree, tree, tree, tree, tree, bool,
  			    bool);
  extern tree build_asm_stmt (bool, tree);
--- 726,733 ----
  extern tree build_compound_literal (location_t, tree, tree, bool,
  				    unsigned int);
  extern void check_compound_literal_type (location_t, struct c_type_name *);
! extern tree c_start_switch (location_t, location_t, tree, bool);
! extern void c_finish_switch (tree, tree);
  extern tree build_asm_expr (location_t, tree, tree, tree, tree, tree, bool,
  			    bool);
  extern tree build_asm_stmt (bool, tree);
*************** extern tree c_finish_stmt_expr (location
*** 729,735 ****
  extern tree c_process_expr_stmt (location_t, tree);
  extern tree c_finish_expr_stmt (location_t, tree);
  extern tree c_finish_return (location_t, tree, tree);
! extern tree c_finish_bc_stmt (location_t, tree *, bool);
  extern tree c_finish_goto_label (location_t, tree);
  extern tree c_finish_goto_ptr (location_t, tree);
  extern tree c_expr_to_decl (tree, bool *, bool *);
--- 742,748 ----
  extern tree c_process_expr_stmt (location_t, tree);
  extern tree c_finish_expr_stmt (location_t, tree);
  extern tree c_finish_return (location_t, tree, tree);
! extern tree c_finish_bc_stmt (location_t, tree, bool);
  extern tree c_finish_goto_label (location_t, tree);
  extern tree c_finish_goto_ptr (location_t, tree);
  extern tree c_expr_to_decl (tree, bool *, bool *);
diff -Nrcpad gcc-10.3.0/gcc/c/c-typeck.c gcc-11.1.0/gcc/c/c-typeck.c
*** gcc-10.3.0/gcc/c/c-typeck.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/c-typeck.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Build expressions with type checking for C compiler.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Build expressions with type checking for C compiler.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** int in_sizeof;
*** 71,76 ****
--- 71,79 ----
  /* The level of nesting inside "typeof".  */
  int in_typeof;
  
+ /* True when parsing OpenMP loop expressions.  */
+ bool c_in_omp_for;
+ 
  /* The argument of last parsed sizeof expression, only to be tested
     if expr.original_code == SIZEOF_EXPR.  */
  tree c_last_sizeof_arg;
*************** c_common_type (tree t1, tree t2)
*** 737,746 ****
      t2 = TYPE_MAIN_VARIANT (t2);
  
    if (TYPE_ATTRIBUTES (t1) != NULL_TREE)
!     t1 = build_type_attribute_variant (t1, NULL_TREE);
  
    if (TYPE_ATTRIBUTES (t2) != NULL_TREE)
!     t2 = build_type_attribute_variant (t2, NULL_TREE);
  
    /* Save time if the two types are the same.  */
  
--- 740,755 ----
      t2 = TYPE_MAIN_VARIANT (t2);
  
    if (TYPE_ATTRIBUTES (t1) != NULL_TREE)
!     {
!       tree attrs = affects_type_identity_attributes (TYPE_ATTRIBUTES (t1));
!       t1 = build_type_attribute_variant (t1, attrs);
!     }
  
    if (TYPE_ATTRIBUTES (t2) != NULL_TREE)
!     {
!       tree attrs = affects_type_identity_attributes (TYPE_ATTRIBUTES (t2));
!       t2 = build_type_attribute_variant (t2, attrs);
!     }
  
    /* Save time if the two types are the same.  */
  
*************** comptypes_internal (const_tree type1, co
*** 1104,1110 ****
       not transitive: two enumerated types in the same translation unit
       are compatible with each other only if they are the same type.  */
  
!   if (TREE_CODE (t1) == ENUMERAL_TYPE && TREE_CODE (t2) != ENUMERAL_TYPE)
      {
        t1 = c_common_type_for_size (TYPE_PRECISION (t1), TYPE_UNSIGNED (t1));
        if (TREE_CODE (t2) != VOID_TYPE)
--- 1113,1121 ----
       not transitive: two enumerated types in the same translation unit
       are compatible with each other only if they are the same type.  */
  
!   if (TREE_CODE (t1) == ENUMERAL_TYPE
!       && COMPLETE_TYPE_P (t1)
!       && TREE_CODE (t2) != ENUMERAL_TYPE)
      {
        t1 = c_common_type_for_size (TYPE_PRECISION (t1), TYPE_UNSIGNED (t1));
        if (TREE_CODE (t2) != VOID_TYPE)
*************** comptypes_internal (const_tree type1, co
*** 1115,1121 ****
  	    *different_types_p = true;
  	}
      }
!   else if (TREE_CODE (t2) == ENUMERAL_TYPE && TREE_CODE (t1) != ENUMERAL_TYPE)
      {
        t2 = c_common_type_for_size (TYPE_PRECISION (t2), TYPE_UNSIGNED (t2));
        if (TREE_CODE (t1) != VOID_TYPE)
--- 1126,1134 ----
  	    *different_types_p = true;
  	}
      }
!   else if (TREE_CODE (t2) == ENUMERAL_TYPE
! 	   && COMPLETE_TYPE_P (t2)
! 	   && TREE_CODE (t1) != ENUMERAL_TYPE)
      {
        t2 = c_common_type_for_size (TYPE_PRECISION (t2), TYPE_UNSIGNED (t2));
        if (TREE_CODE (t1) != VOID_TYPE)
*************** free_all_tagged_tu_seen_up_to (const str
*** 1404,1410 ****
        const struct tagged_tu_seen_cache *const tu1
  	= (const struct tagged_tu_seen_cache *) tu;
        tu = tu1->next;
!       free (CONST_CAST (struct tagged_tu_seen_cache *, tu1));
      }
    tagged_tu_seen_base = tu_til;
  }
--- 1417,1423 ----
        const struct tagged_tu_seen_cache *const tu1
  	= (const struct tagged_tu_seen_cache *) tu;
        tu = tu1->next;
!       XDELETE (CONST_CAST (struct tagged_tu_seen_cache *, tu1));
      }
    tagged_tu_seen_base = tu_til;
  }
*************** convert_lvalue_to_rvalue (location_t loc
*** 2157,2162 ****
--- 2170,2178 ----
        exp.value = build4 (TARGET_EXPR, nonatomic_type, tmp, func_call,
  			  NULL_TREE, NULL_TREE);
      }
+   if (convert_p && !error_operand_p (exp.value)
+       && (TREE_CODE (TREE_TYPE (exp.value)) != ARRAY_TYPE))
+     exp.value = convert (build_qualified_type (TREE_TYPE (exp.value), TYPE_UNQUALIFIED), exp.value);
    return exp;
  }
  
*************** build_function_call (location_t loc, tre
*** 3055,3061 ****
  static void
  inform_declaration (tree decl)
  {
!   if (decl && (TREE_CODE (decl) != FUNCTION_DECL || !DECL_IS_BUILTIN (decl)))
      inform (DECL_SOURCE_LOCATION (decl), "declared here");
  }
  
--- 3071,3078 ----
  static void
  inform_declaration (tree decl)
  {
!   if (decl && (TREE_CODE (decl) != FUNCTION_DECL
! 	       || !DECL_IS_UNDECLARED_BUILTIN (decl)))
      inform (DECL_SOURCE_LOCATION (decl), "declared here");
  }
  
*************** build_function_call_vec (location_t loc,
*** 3117,3123 ****
    if (!(TREE_CODE (fntype) == POINTER_TYPE
  	&& TREE_CODE (TREE_TYPE (fntype)) == FUNCTION_TYPE))
      {
!       if (!flag_diagnostics_show_caret)
  	error_at (loc,
  		  "called object %qE is not a function or function pointer",
  		  function);
--- 3134,3140 ----
    if (!(TREE_CODE (fntype) == POINTER_TYPE
  	&& TREE_CODE (TREE_TYPE (fntype)) == FUNCTION_TYPE))
      {
!       if (!flag_diagnostics_show_caret && !STATEMENT_CLASS_P (function))
  	error_at (loc,
  		  "called object %qE is not a function or function pointer",
  		  function);
*************** parser_build_unary_op (location_t loc, e
*** 3760,3766 ****
  
  /* Returns true if TYPE is a character type, *not* including wchar_t.  */
  
! static bool
  char_type_p (tree type)
  {
    return (type == char_type_node
--- 3777,3783 ----
  
  /* Returns true if TYPE is a character type, *not* including wchar_t.  */
  
! bool
  char_type_p (tree type)
  {
    return (type == char_type_node
*************** pointer_diff (location_t loc, tree op0,
*** 3986,3995 ****
      pedwarn (loc, OPT_Wpointer_arith,
  	     "pointer to a function used in subtraction");
  
!   if (sanitize_flags_p (SANITIZE_POINTER_SUBTRACT))
      {
-       gcc_assert (current_function_decl != NULL_TREE);
- 
        op0 = save_expr (op0);
        op1 = save_expr (op1);
  
--- 4003,4011 ----
      pedwarn (loc, OPT_Wpointer_arith,
  	     "pointer to a function used in subtraction");
  
!   if (current_function_decl != NULL_TREE
!       && sanitize_flags_p (SANITIZE_POINTER_SUBTRACT))
      {
        op0 = save_expr (op0);
        op1 = save_expr (op1);
  
*************** build_conditional_expr (location_t colon
*** 5534,5546 ****
       warn here, because the COND_EXPR will be turned into OP1.  */
    if (warn_duplicated_branches
        && TREE_CODE (ret) == COND_EXPR
!       && (op1 == op2 || operand_equal_p (op1, op2, 0)))
      warning_at (EXPR_LOCATION (ret), OPT_Wduplicated_branches,
  		"this condition has identical branches");
  
    return ret;
  }
  
  /* Return a compound expression that performs two expressions and
     returns the value of the second of them.
  
--- 5550,5638 ----
       warn here, because the COND_EXPR will be turned into OP1.  */
    if (warn_duplicated_branches
        && TREE_CODE (ret) == COND_EXPR
!       && (op1 == op2 || operand_equal_p (op1, op2, OEP_ADDRESS_OF_SAME_FIELD)))
      warning_at (EXPR_LOCATION (ret), OPT_Wduplicated_branches,
  		"this condition has identical branches");
  
    return ret;
  }
  
+ /* EXPR is an expression, location LOC, whose result is discarded.
+    Warn if it is a call to a nodiscard function (or a COMPOUND_EXPR
+    whose right-hand operand is such a call, possibly recursively).  */
+ 
+ static void
+ maybe_warn_nodiscard (location_t loc, tree expr)
+ {
+   if (VOID_TYPE_P (TREE_TYPE (expr)))
+     return;
+   while (TREE_CODE (expr) == COMPOUND_EXPR)
+     {
+       expr = TREE_OPERAND (expr, 1);
+       if (EXPR_HAS_LOCATION (expr))
+ 	loc = EXPR_LOCATION (expr);
+     }
+   if (TREE_CODE (expr) != CALL_EXPR)
+     return;
+   tree fn = CALL_EXPR_FN (expr);
+   if (!fn)
+     return;
+   tree attr;
+   if (TREE_CODE (fn) == ADDR_EXPR
+       && TREE_CODE (TREE_OPERAND (fn, 0)) == FUNCTION_DECL
+       && (attr = lookup_attribute ("nodiscard",
+ 				   DECL_ATTRIBUTES (TREE_OPERAND (fn, 0)))))
+     {
+       fn = TREE_OPERAND (fn, 0);
+       tree args = TREE_VALUE (attr);
+       if (args)
+ 	args = TREE_VALUE (args);
+       auto_diagnostic_group d;
+       int warned;
+       if (args)
+ 	warned = warning_at (loc, OPT_Wunused_result,
+ 			     "ignoring return value of %qD, declared with "
+ 			     "attribute %<nodiscard%>: %E", fn, args);
+       else
+ 	warned = warning_at (loc, OPT_Wunused_result,
+ 			     "ignoring return value of %qD, declared with "
+ 			     "attribute %<nodiscard%>", fn);
+       if (warned)
+ 	inform (DECL_SOURCE_LOCATION (fn), "declared here");
+     }
+   else
+     {
+       tree rettype = TREE_TYPE (TREE_TYPE (TREE_TYPE (fn)));
+       attr = lookup_attribute ("nodiscard", TYPE_ATTRIBUTES (rettype));
+       if (!attr)
+ 	return;
+       tree args = TREE_VALUE (attr);
+       if (args)
+ 	args = TREE_VALUE (args);
+       auto_diagnostic_group d;
+       int warned;
+       if (args)
+ 	warned = warning_at (loc, OPT_Wunused_result,
+ 			     "ignoring return value of type %qT, declared "
+ 			     "with attribute %<nodiscard%>: %E",
+ 			     rettype, args);
+       else
+ 	warned = warning_at (loc, OPT_Wunused_result,
+ 			     "ignoring return value of type %qT, declared "
+ 			     "with attribute %<nodiscard%>", rettype);
+       if (warned)
+ 	{
+ 	  if (TREE_CODE (fn) == ADDR_EXPR)
+ 	    {
+ 	      fn = TREE_OPERAND (fn, 0);
+ 	      if (TREE_CODE (fn) == FUNCTION_DECL)
+ 		inform (DECL_SOURCE_LOCATION (fn),
+ 			"in call to %qD, declared here", fn);
+ 	    }
+ 	}
+     }
+ }
+ 
  /* Return a compound expression that performs two expressions and
     returns the value of the second of them.
  
*************** build_compound_expr (location_t loc, tre
*** 5612,5617 ****
--- 5704,5711 ----
    else if (warn_unused_value)
      warn_if_unused_value (expr1, loc);
  
+   maybe_warn_nodiscard (loc, expr1);
+ 
    if (expr2 == error_mark_node)
      return error_mark_node;
  
*************** build_modify_expr (location_t location,
*** 6245,6260 ****
  		    "enum conversion in assignment is invalid in C++");
      }
  
!   /* If the lhs is atomic, remove that qualifier.  */
!   if (is_atomic_op)
!     {
!       lhstype = build_qualified_type (lhstype, 
! 				      (TYPE_QUALS (lhstype)
! 				       & ~TYPE_QUAL_ATOMIC));
!       olhstype = build_qualified_type (olhstype, 
! 				       (TYPE_QUALS (lhstype)
! 					& ~TYPE_QUAL_ATOMIC));
!     }
  
    /* Convert new value to destination type.  Fold it first, then
       restore any excess precision information, for the sake of
--- 6339,6347 ----
  		    "enum conversion in assignment is invalid in C++");
      }
  
!   /* Remove qualifiers.  */
!   lhstype = build_qualified_type (lhstype, TYPE_UNQUALIFIED);
!   olhstype = build_qualified_type (olhstype, TYPE_UNQUALIFIED);
  
    /* Convert new value to destination type.  Fold it first, then
       restore any excess precision information, for the sake of
*************** build_modify_expr (location_t location,
*** 6263,6277 ****
    if (!(is_atomic_op && modifycode != NOP_EXPR))
      {
        tree rhs_semantic_type = NULL_TREE;
!       if (TREE_CODE (newrhs) == EXCESS_PRECISION_EXPR)
  	{
! 	  rhs_semantic_type = TREE_TYPE (newrhs);
! 	  newrhs = TREE_OPERAND (newrhs, 0);
  	}
!       npc = null_pointer_constant_p (newrhs);
!       newrhs = c_fully_fold (newrhs, false, NULL);
!       if (rhs_semantic_type)
! 	newrhs = build1 (EXCESS_PRECISION_EXPR, rhs_semantic_type, newrhs);
        newrhs = convert_for_assignment (location, rhs_loc, lhstype, newrhs,
  				       rhs_origtype, ic_assign, npc,
  				       NULL_TREE, NULL_TREE, 0);
--- 6350,6369 ----
    if (!(is_atomic_op && modifycode != NOP_EXPR))
      {
        tree rhs_semantic_type = NULL_TREE;
!       if (!c_in_omp_for)
  	{
! 	  if (TREE_CODE (newrhs) == EXCESS_PRECISION_EXPR)
! 	    {
! 	      rhs_semantic_type = TREE_TYPE (newrhs);
! 	      newrhs = TREE_OPERAND (newrhs, 0);
! 	    }
! 	  npc = null_pointer_constant_p (newrhs);
! 	  newrhs = c_fully_fold (newrhs, false, NULL);
! 	  if (rhs_semantic_type)
! 	    newrhs = build1 (EXCESS_PRECISION_EXPR, rhs_semantic_type, newrhs);
  	}
!       else
! 	npc = null_pointer_constant_p (newrhs);
        newrhs = convert_for_assignment (location, rhs_loc, lhstype, newrhs,
  				       rhs_origtype, ic_assign, npc,
  				       NULL_TREE, NULL_TREE, 0);
*************** inform_for_arg (tree fundecl, location_t
*** 6546,6552 ****
  		tree expected_type, tree actual_type)
  {
    location_t loc;
!   if (fundecl && !DECL_IS_BUILTIN (fundecl))
      loc = get_fndecl_argument_location (fundecl, parmnum - 1);
    else
      loc = ploc;
--- 6638,6644 ----
  		tree expected_type, tree actual_type)
  {
    location_t loc;
!   if (fundecl && !DECL_IS_UNDECLARED_BUILTIN (fundecl))
      loc = get_fndecl_argument_location (fundecl, parmnum - 1);
    else
      loc = ploc;
*************** convert_for_assignment (location_t locat
*** 6796,6802 ****
  	    if (pedwarn (expr_loc, OPT_Wc___compat, "enum conversion when "
  			 "passing argument %d of %qE is invalid in C++",
  			 parmnum, rname))
! 	      inform ((fundecl && !DECL_IS_BUILTIN (fundecl))
  		      ? DECL_SOURCE_LOCATION (fundecl) : expr_loc,
  		      "expected %qT but argument is of type %qT",
  		      type, rhstype);
--- 6888,6894 ----
  	    if (pedwarn (expr_loc, OPT_Wc___compat, "enum conversion when "
  			 "passing argument %d of %qE is invalid in C++",
  			 parmnum, rname))
! 	      inform ((fundecl && !DECL_IS_UNDECLARED_BUILTIN (fundecl))
  		      ? DECL_SOURCE_LOCATION (fundecl) : expr_loc,
  		      "expected %qT but argument is of type %qT",
  		      type, rhstype);
*************** convert_for_assignment (location_t locat
*** 7197,7202 ****
--- 7289,7330 ----
  	  }
  	}
  
+       /* See if the pointers point to incompatible scalar storage orders.  */
+       if (warn_scalar_storage_order
+ 	  && (AGGREGATE_TYPE_P (ttl) && TYPE_REVERSE_STORAGE_ORDER (ttl))
+ 	     != (AGGREGATE_TYPE_P (ttr) && TYPE_REVERSE_STORAGE_ORDER (ttr)))
+ 	{
+ 	  switch (errtype)
+ 	  {
+ 	  case ic_argpass:
+ 	    /* Do not warn for built-in functions, for example memcpy, since we
+ 	       control how they behave and they can be useful in this area.  */
+ 	    if (TREE_CODE (rname) != FUNCTION_DECL
+ 		|| !DECL_IS_UNDECLARED_BUILTIN (rname))
+ 	      warning_at (location, OPT_Wscalar_storage_order,
+ 			  "passing argument %d of %qE from incompatible "
+ 			  "scalar storage order", parmnum, rname);
+ 	    break;
+ 	  case ic_assign:
+ 	    warning_at (location, OPT_Wscalar_storage_order,
+ 			"assignment to %qT from pointer type %qT with "
+ 			"incompatible scalar storage order", type, rhstype);
+ 	    break;
+ 	  case ic_init:
+ 	    warning_at (location, OPT_Wscalar_storage_order,
+ 			"initialization of %qT from pointer type %qT with "
+ 			"incompatible scalar storage order", type, rhstype);
+ 	    break;
+ 	  case ic_return:
+ 	    warning_at (location, OPT_Wscalar_storage_order,
+ 			"returning %qT from pointer type with incompatible "
+ 			"scalar storage order %qT", rhstype, type);
+ 	    break;
+ 	  default:
+ 	    gcc_unreachable ();
+ 	  }
+ 	}
+ 
        /* Any non-function converts to a [const][volatile] void *
  	 and vice versa; otherwise, targets must be the same.
  	 Meanwhile, the lhs target must have all the qualifiers of the rhs.  */
*************** digest_init (location_t init_loc, tree t
*** 7799,7810 ****
  
    STRIP_TYPE_NOPS (inside_init);
  
!   if (TREE_CODE (inside_init) == EXCESS_PRECISION_EXPR)
      {
!       semantic_type = TREE_TYPE (inside_init);
!       inside_init = TREE_OPERAND (inside_init, 0);
      }
-   inside_init = c_fully_fold (inside_init, require_constant, &maybe_const);
  
    /* Initialization of an array of chars from a string constant
       optionally enclosed in braces.  */
--- 7927,7941 ----
  
    STRIP_TYPE_NOPS (inside_init);
  
!   if (!c_in_omp_for)
      {
!       if (TREE_CODE (inside_init) == EXCESS_PRECISION_EXPR)
! 	{
! 	  semantic_type = TREE_TYPE (inside_init);
! 	  inside_init = TREE_OPERAND (inside_init, 0);
! 	}
!       inside_init = c_fully_fold (inside_init, require_constant, &maybe_const);
      }
  
    /* Initialization of an array of chars from a string constant
       optionally enclosed in braces.  */
*************** finish_init (void)
*** 8322,8334 ****
      {
        struct constructor_stack *q = constructor_stack;
        constructor_stack = q->next;
!       free (q);
      }
  
    gcc_assert (!constructor_range_stack);
  
    /* Pop back to the data of the outer initializer (if any).  */
!   free (spelling_base);
  
    constructor_decl = p->decl;
    require_constant_value = p->require_constant_value;
--- 8453,8465 ----
      {
        struct constructor_stack *q = constructor_stack;
        constructor_stack = q->next;
!       XDELETE (q);
      }
  
    gcc_assert (!constructor_range_stack);
  
    /* Pop back to the data of the outer initializer (if any).  */
!   XDELETE (spelling_base);
  
    constructor_decl = p->decl;
    require_constant_value = p->require_constant_value;
*************** finish_init (void)
*** 8341,8347 ****
    spelling_size = p->spelling_size;
    constructor_top_level = p->top_level;
    initializer_stack = p->next;
!   free (p);
  }
  
  /* Call here when we see the initializer is surrounded by braces.
--- 8472,8478 ----
    spelling_size = p->spelling_size;
    constructor_top_level = p->top_level;
    initializer_stack = p->next;
!   XDELETE (p);
  }
  
  /* Call here when we see the initializer is surrounded by braces.
*************** pop_init_level (location_t loc, int impl
*** 8872,8878 ****
    RESTORE_SPELLING_DEPTH (constructor_depth);
  
    constructor_stack = p->next;
!   free (p);
  
    if (ret.value == NULL_TREE && constructor_stack == 0)
      ret.value = error_mark_node;
--- 9003,9009 ----
    RESTORE_SPELLING_DEPTH (constructor_depth);
  
    constructor_stack = p->next;
!   XDELETE (p);
  
    if (ret.value == NULL_TREE && constructor_stack == 0)
      ret.value = error_mark_node;
*************** build_asm_expr (location_t loc, tree str
*** 10594,10603 ****
        TREE_VALUE (tail) = input;
      }
  
-   /* ASMs with labels cannot have outputs.  This should have been
-      enforced by the parser.  */
-   gcc_assert (outputs == NULL || labels == NULL);
- 
    args = build_stmt (loc, ASM_EXPR, string, outputs, inputs, clobbers, labels);
  
    /* asm statements without outputs, including simple ones, are treated
--- 10725,10730 ----
*************** c_finish_return (location_t loc, tree re
*** 10818,10825 ****
  }
  
  struct c_switch {
!   /* The SWITCH_EXPR being built.  */
!   tree switch_expr;
  
    /* The original type of the testing expression, i.e. before the
       default conversion is applied.  */
--- 10945,10952 ----
  }
  
  struct c_switch {
!   /* The SWITCH_STMT being built.  */
!   tree switch_stmt;
  
    /* The original type of the testing expression, i.e. before the
       default conversion is applied.  */
*************** struct c_switch {
*** 10836,10841 ****
--- 10963,10971 ----
       warnings crossing decls when branching to a case label.  */
    struct c_spot_bindings *bindings;
  
+   /* Whether the switch includes any break statements.  */
+   bool break_stmt_seen_p;
+ 
    /* The next node on the stack.  */
    struct c_switch *next;
  
*************** struct c_switch {
*** 10853,10866 ****
  struct c_switch *c_switch_stack;
  
  /* Start a C switch statement, testing expression EXP.  Return the new
!    SWITCH_EXPR.  SWITCH_LOC is the location of the `switch'.
     SWITCH_COND_LOC is the location of the switch's condition.
     EXPLICIT_CAST_P is true if the expression EXP has an explicit cast.  */
  
  tree
! c_start_case (location_t switch_loc,
! 	      location_t switch_cond_loc,
! 	      tree exp, bool explicit_cast_p)
  {
    tree orig_type = error_mark_node;
    bool bool_cond_p = false;
--- 10983,10996 ----
  struct c_switch *c_switch_stack;
  
  /* Start a C switch statement, testing expression EXP.  Return the new
!    SWITCH_STMT.  SWITCH_LOC is the location of the `switch'.
     SWITCH_COND_LOC is the location of the switch's condition.
     EXPLICIT_CAST_P is true if the expression EXP has an explicit cast.  */
  
  tree
! c_start_switch (location_t switch_loc,
! 		location_t switch_cond_loc,
! 		tree exp, bool explicit_cast_p)
  {
    tree orig_type = error_mark_node;
    bool bool_cond_p = false;
*************** c_start_case (location_t switch_loc,
*** 10910,10927 ****
  	}
      }
  
!   /* Add this new SWITCH_EXPR to the stack.  */
    cs = XNEW (struct c_switch);
!   cs->switch_expr = build2 (SWITCH_EXPR, orig_type, exp, NULL_TREE);
!   SET_EXPR_LOCATION (cs->switch_expr, switch_loc);
    cs->orig_type = orig_type;
    cs->cases = splay_tree_new (case_compare, NULL, NULL);
    cs->bindings = c_get_switch_bindings ();
    cs->bool_cond_p = bool_cond_p;
    cs->next = c_switch_stack;
    c_switch_stack = cs;
  
!   return add_stmt (cs->switch_expr);
  }
  
  /* Process a case label at location LOC.  */
--- 11040,11058 ----
  	}
      }
  
!   /* Add this new SWITCH_STMT to the stack.  */
    cs = XNEW (struct c_switch);
!   cs->switch_stmt = build_stmt (switch_loc, SWITCH_STMT, exp,
! 				NULL_TREE, orig_type, NULL_TREE);
    cs->orig_type = orig_type;
    cs->cases = splay_tree_new (case_compare, NULL, NULL);
    cs->bindings = c_get_switch_bindings ();
+   cs->break_stmt_seen_p = false;
    cs->bool_cond_p = bool_cond_p;
    cs->next = c_switch_stack;
    c_switch_stack = cs;
  
!   return add_stmt (cs->switch_stmt);
  }
  
  /* Process a case label at location LOC.  */
*************** do_case (location_t loc, tree low_value,
*** 10957,10968 ****
      }
  
    if (c_check_switch_jump_warnings (c_switch_stack->bindings,
! 				    EXPR_LOCATION (c_switch_stack->switch_expr),
  				    loc))
      return NULL_TREE;
  
    label = c_add_case_label (loc, c_switch_stack->cases,
! 			    SWITCH_COND (c_switch_stack->switch_expr),
  			    low_value, high_value);
    if (label == error_mark_node)
      label = NULL_TREE;
--- 11088,11099 ----
      }
  
    if (c_check_switch_jump_warnings (c_switch_stack->bindings,
! 				    EXPR_LOCATION (c_switch_stack->switch_stmt),
  				    loc))
      return NULL_TREE;
  
    label = c_add_case_label (loc, c_switch_stack->cases,
! 			    SWITCH_STMT_COND (c_switch_stack->switch_stmt),
  			    low_value, high_value);
    if (label == error_mark_node)
      label = NULL_TREE;
*************** do_case (location_t loc, tree low_value,
*** 10973,10992 ****
     controlling expression of the switch, or NULL_TREE.  */
  
  void
! c_finish_case (tree body, tree type)
  {
    struct c_switch *cs = c_switch_stack;
    location_t switch_location;
  
!   SWITCH_BODY (cs->switch_expr) = body;
  
    /* Emit warnings as needed.  */
!   switch_location = EXPR_LOCATION (cs->switch_expr);
    c_do_switch_warnings (cs->cases, switch_location,
! 			type ? type : TREE_TYPE (cs->switch_expr),
! 			SWITCH_COND (cs->switch_expr), cs->bool_cond_p);
!   if (c_switch_covers_all_cases_p (cs->cases, TREE_TYPE (cs->switch_expr)))
!     SWITCH_ALL_CASES_P (cs->switch_expr) = 1;
  
    /* Pop the stack.  */
    c_switch_stack = cs->next;
--- 11104,11125 ----
     controlling expression of the switch, or NULL_TREE.  */
  
  void
! c_finish_switch (tree body, tree type)
  {
    struct c_switch *cs = c_switch_stack;
    location_t switch_location;
  
!   SWITCH_STMT_BODY (cs->switch_stmt) = body;
  
    /* Emit warnings as needed.  */
!   switch_location = EXPR_LOCATION (cs->switch_stmt);
    c_do_switch_warnings (cs->cases, switch_location,
! 			type ? type : SWITCH_STMT_TYPE (cs->switch_stmt),
! 			SWITCH_STMT_COND (cs->switch_stmt), cs->bool_cond_p);
!   if (c_switch_covers_all_cases_p (cs->cases,
! 				   SWITCH_STMT_TYPE (cs->switch_stmt)))
!     SWITCH_STMT_ALL_CASES_P (cs->switch_stmt) = 1;
!   SWITCH_STMT_NO_BREAK_P (cs->switch_stmt) = !cs->break_stmt_seen_p;
  
    /* Pop the stack.  */
    c_switch_stack = cs->next;
*************** c_finish_if_stmt (location_t if_locus, t
*** 11010,11119 ****
    add_stmt (stmt);
  }
  
- /* Emit a general-purpose loop construct.  START_LOCUS is the location of
-    the beginning of the loop.  COND is the loop condition.  COND_IS_FIRST
-    is false for DO loops.  INCR is the FOR increment expression.  BODY is
-    the statement controlled by the loop.  BLAB is the break label.  CLAB is
-    the continue label.  Everything is allowed to be NULL.
-    COND_LOCUS is the location of the loop condition, INCR_LOCUS is the
-    location of the FOR increment expression.  */
- 
- void
- c_finish_loop (location_t start_locus, location_t cond_locus, tree cond,
- 	       location_t incr_locus, tree incr, tree body, tree blab,
- 	       tree clab, bool cond_is_first)
- {
-   tree entry = NULL, exit = NULL, t;
- 
-   /* If the condition is zero don't generate a loop construct.  */
-   if (cond && integer_zerop (cond))
-     {
-       if (cond_is_first)
- 	{
- 	  t = build_and_jump (&blab);
- 	  SET_EXPR_LOCATION (t, start_locus);
- 	  add_stmt (t);
- 	}
-     }
-   else
-     {
-       tree top = build1 (LABEL_EXPR, void_type_node, NULL_TREE);
- 
-       /* If we have an exit condition, then we build an IF with gotos either
- 	 out of the loop, or to the top of it.  If there's no exit condition,
- 	 then we just build a jump back to the top.  */
-       exit = build_and_jump (&LABEL_EXPR_LABEL (top));
- 
-       if (cond && !integer_nonzerop (cond))
- 	{
- 	  /* Canonicalize the loop condition to the end.  This means
- 	     generating a branch to the loop condition.  Reuse the
- 	     continue label, if possible.  */
- 	  if (cond_is_first)
- 	    {
- 	      if (incr || !clab)
- 		{
- 		  entry = build1 (LABEL_EXPR, void_type_node, NULL_TREE);
- 		  t = build_and_jump (&LABEL_EXPR_LABEL (entry));
- 		}
- 	      else
- 		t = build1 (GOTO_EXPR, void_type_node, clab);
- 	      SET_EXPR_LOCATION (t, start_locus);
- 	      add_stmt (t);
- 	    }
- 
- 	  t = build_and_jump (&blab);
- 	  exit = fold_build3_loc (cond_is_first ? start_locus : input_location,
- 				  COND_EXPR, void_type_node, cond, exit, t);
- 	}
-       else
- 	{
- 	  /* For the backward-goto's location of an unconditional loop
- 	     use the beginning of the body, or, if there is none, the
- 	     top of the loop.  */
- 	  location_t loc = EXPR_LOCATION (expr_first (body));
- 	  if (loc == UNKNOWN_LOCATION)
- 	    loc = start_locus;
- 	  SET_EXPR_LOCATION (exit, loc);
- 	}
- 
-       add_stmt (top);
-     }
- 
-   if (body)
-     add_stmt (body);
-   if (clab)
-     add_stmt (build1 (LABEL_EXPR, void_type_node, clab));
-   if (incr)
-     {
-       if (MAY_HAVE_DEBUG_MARKER_STMTS && incr_locus != UNKNOWN_LOCATION)
- 	{
- 	  t = build0 (DEBUG_BEGIN_STMT, void_type_node);
- 	  SET_EXPR_LOCATION (t, incr_locus);
- 	  add_stmt (t);
- 	}
-       add_stmt (incr);
-     }
-   if (entry)
-     add_stmt (entry);
-   if (MAY_HAVE_DEBUG_MARKER_STMTS && cond_locus != UNKNOWN_LOCATION)
-     {
-       t = build0 (DEBUG_BEGIN_STMT, void_type_node);
-       SET_EXPR_LOCATION (t, cond_locus);
-       add_stmt (t);
-     }
-   if (exit)
-     add_stmt (exit);
-   if (blab)
-     add_stmt (build1 (LABEL_EXPR, void_type_node, blab));
- }
- 
  tree
! c_finish_bc_stmt (location_t loc, tree *label_p, bool is_break)
  {
-   bool skip;
-   tree label = *label_p;
- 
    /* In switch statements break is sometimes stylistically used after
       a return statement.  This can lead to spurious warnings about
       control reaching the end of a non-void function when it is
--- 11143,11151 ----
    add_stmt (stmt);
  }
  
  tree
! c_finish_bc_stmt (location_t loc, tree label, bool is_break)
  {
    /* In switch statements break is sometimes stylistically used after
       a return statement.  This can lead to spurious warnings about
       control reaching the end of a non-void function when it is
*************** c_finish_bc_stmt (location_t loc, tree *
*** 11121,11167 ****
       language specific tree nodes; this works because
       block_may_fallthru returns true when given something it does not
       understand.  */
!   skip = !block_may_fallthru (cur_stmt_list);
  
!   if (!label)
!     {
!       if (!skip)
! 	*label_p = label = create_artificial_label (loc);
!     }
!   else if (TREE_CODE (label) == LABEL_DECL)
!     ;
!   else switch (TREE_INT_CST_LOW (label))
!     {
!     case 0:
!       if (is_break)
  	error_at (loc, "break statement not within loop or switch");
!       else
  	error_at (loc, "continue statement not within a loop");
!       return NULL_TREE;
! 
!     case 1:
!       gcc_assert (is_break);
!       error_at (loc, "break statement used with OpenMP for loop");
!       return NULL_TREE;
! 
!     case 2:
!       if (is_break) 
! 	error ("break statement within %<#pragma simd%> loop body");
!       else 
! 	error ("continue statement within %<#pragma simd%> loop body");
!       return NULL_TREE;
! 
!     default:
!       gcc_unreachable ();
!     }
  
    if (skip)
      return NULL_TREE;
! 
!   if (!is_break)
!     add_stmt (build_predict_expr (PRED_CONTINUE, NOT_TAKEN));
! 
!   return add_stmt (build1 (GOTO_EXPR, void_type_node, label));
  }
  
  /* A helper routine for c_process_expr_stmt and c_finish_stmt_expr.  */
--- 11153,11207 ----
       language specific tree nodes; this works because
       block_may_fallthru returns true when given something it does not
       understand.  */
!   bool skip = !block_may_fallthru (cur_stmt_list);
  
!   if (is_break)
!     switch (in_statement)
!       {
!       case 0:
  	error_at (loc, "break statement not within loop or switch");
! 	return NULL_TREE;
!       case IN_OMP_BLOCK:
! 	error_at (loc, "invalid exit from OpenMP structured block");
! 	return NULL_TREE;
!       case IN_OMP_FOR:
! 	error_at (loc, "break statement used with OpenMP for loop");
! 	return NULL_TREE;
!       case IN_ITERATION_STMT:
!       case IN_OBJC_FOREACH:
! 	break;
!       default:
! 	gcc_assert (in_statement & IN_SWITCH_STMT);
! 	c_switch_stack->break_stmt_seen_p = true;
! 	break;
!       }
!   else
!     switch (in_statement & ~IN_SWITCH_STMT)
!       {
!       case 0:
  	error_at (loc, "continue statement not within a loop");
! 	return NULL_TREE;
!       case IN_OMP_BLOCK:
! 	error_at (loc, "invalid exit from OpenMP structured block");
! 	return NULL_TREE;
!       case IN_ITERATION_STMT:
!       case IN_OMP_FOR:
!       case IN_OBJC_FOREACH:
! 	break;
!       default:
! 	gcc_unreachable ();
!       }
  
    if (skip)
      return NULL_TREE;
!   else if (in_statement & IN_OBJC_FOREACH)
!     {
!       /* The foreach expander produces low-level code using gotos instead
! 	 of a structured loop construct.  */
!       gcc_assert (label);
!       return add_stmt (build_stmt (loc, GOTO_EXPR, label));
!     }
!   return add_stmt (build_stmt (loc, (is_break ? BREAK_STMT : CONTINUE_STMT)));
  }
  
  /* A helper routine for c_process_expr_stmt and c_finish_stmt_expr.  */
*************** c_finish_bc_stmt (location_t loc, tree *
*** 11169,11174 ****
--- 11209,11217 ----
  static void
  emit_side_effect_warnings (location_t loc, tree expr)
  {
+   maybe_warn_nodiscard (loc, expr);
+   if (!warn_unused_value)
+     return;
    if (expr == error_mark_node)
      ;
    else if (!TREE_SIDE_EFFECTS (expr))
*************** c_process_expr_stmt (location_t loc, tre
*** 11224,11230 ****
       Warnings for statement expressions will be emitted later, once we figure
       out which is the result.  */
    if (!STATEMENT_LIST_STMT_EXPR (cur_stmt_list)
!       && warn_unused_value)
      emit_side_effect_warnings (EXPR_LOC_OR_LOC (expr, loc), expr);
  
    exprv = expr;
--- 11267,11273 ----
       Warnings for statement expressions will be emitted later, once we figure
       out which is the result.  */
    if (!STATEMENT_LIST_STMT_EXPR (cur_stmt_list)
!       && (warn_unused_value || warn_unused_result))
      emit_side_effect_warnings (EXPR_LOC_OR_LOC (expr, loc), expr);
  
    exprv = expr;
*************** c_finish_stmt_expr (location_t loc, tree
*** 11318,11324 ****
  
        /* If we're supposed to generate side effects warnings, process
  	 all of the statements except the last.  */
!       if (warn_unused_value)
  	{
  	  for (tree_stmt_iterator i = tsi_start (last);
  	       tsi_stmt (i) != tsi_stmt (l); tsi_next (&i))
--- 11361,11367 ----
  
        /* If we're supposed to generate side effects warnings, process
  	 all of the statements except the last.  */
!       if (warn_unused_value || warn_unused_result)
  	{
  	  for (tree_stmt_iterator i = tsi_start (last);
  	       tsi_stmt (i) != tsi_stmt (l); tsi_next (&i))
*************** build_binary_op (location_t location, en
*** 12281,12288 ****
  	      result_type = common_pointer_type (type0, type1);
  	      if (!COMPLETE_TYPE_P (TREE_TYPE (type0))
  		  != !COMPLETE_TYPE_P (TREE_TYPE (type1)))
! 		pedwarn (location, 0,
! 			 "comparison of complete and incomplete pointers");
  	      else if (TREE_CODE (TREE_TYPE (type0)) == FUNCTION_TYPE)
  		pedwarn (location, OPT_Wpedantic, "ISO C forbids "
  			 "ordered comparisons of pointers to functions");
--- 12324,12331 ----
  	      result_type = common_pointer_type (type0, type1);
  	      if (!COMPLETE_TYPE_P (TREE_TYPE (type0))
  		  != !COMPLETE_TYPE_P (TREE_TYPE (type1)))
! 		pedwarn_c99 (location, OPT_Wpedantic,
! 			     "comparison of complete and incomplete pointers");
  	      else if (TREE_CODE (TREE_TYPE (type0)) == FUNCTION_TYPE)
  		pedwarn (location, OPT_Wpedantic, "ISO C forbids "
  			 "ordered comparisons of pointers to functions");
*************** build_binary_op (location_t location, en
*** 12339,12344 ****
--- 12382,12388 ----
  	}
  
        if ((code0 == POINTER_TYPE || code1 == POINTER_TYPE)
+ 	  && current_function_decl != NULL_TREE
  	  && sanitize_flags_p (SANITIZE_POINTER_COMPARE))
  	{
  	  op0 = save_expr (op0);
*************** build_binary_op (location_t location, en
*** 12560,12566 ****
  	  converted = 1;
  	  resultcode = xresultcode;
  
! 	  if (c_inhibit_evaluation_warnings == 0)
  	    {
  	      bool op0_maybe_const = true;
  	      bool op1_maybe_const = true;
--- 12604,12610 ----
  	  converted = 1;
  	  resultcode = xresultcode;
  
! 	  if (c_inhibit_evaluation_warnings == 0 && !c_in_omp_for)
  	    {
  	      bool op0_maybe_const = true;
  	      bool op1_maybe_const = true;
*************** handle_omp_array_sections_1 (tree c, tre
*** 13308,13315 ****
      {
        if (length == NULL_TREE)
  	{
! 	  error_at (OMP_CLAUSE_LOCATION (c),
! 		    "for pointer type length expression must be specified");
  	  return error_mark_node;
  	}
        if (length != NULL_TREE
--- 13352,13364 ----
      {
        if (length == NULL_TREE)
  	{
! 	  if (TREE_CODE (ret) == PARM_DECL && C_ARRAY_PARAMETER (ret))
! 	    error_at (OMP_CLAUSE_LOCATION (c),
! 		      "for array function parameter length expression "
! 		      "must be specified");
! 	  else
! 	    error_at (OMP_CLAUSE_LOCATION (c),
! 		      "for pointer type length expression must be specified");
  	  return error_mark_node;
  	}
        if (length != NULL_TREE
*************** handle_omp_array_sections (tree c, enum
*** 13593,13603 ****
        if (ort != C_ORT_OMP && ort != C_ORT_ACC)
  	OMP_CLAUSE_SET_MAP_KIND (c2, GOMP_MAP_POINTER);
        else if (TREE_CODE (t) == COMPONENT_REF)
! 	{
! 	  gomp_map_kind k = (ort == C_ORT_ACC) ? GOMP_MAP_ATTACH_DETACH
! 					       : GOMP_MAP_ALWAYS_POINTER;
! 	  OMP_CLAUSE_SET_MAP_KIND (c2, k);
! 	}
        else
  	OMP_CLAUSE_SET_MAP_KIND (c2, GOMP_MAP_FIRSTPRIVATE_POINTER);
        if (OMP_CLAUSE_MAP_KIND (c2) != GOMP_MAP_FIRSTPRIVATE_POINTER
--- 13642,13648 ----
        if (ort != C_ORT_OMP && ort != C_ORT_ACC)
  	OMP_CLAUSE_SET_MAP_KIND (c2, GOMP_MAP_POINTER);
        else if (TREE_CODE (t) == COMPONENT_REF)
! 	OMP_CLAUSE_SET_MAP_KIND (c2, GOMP_MAP_ATTACH_DETACH);
        else
  	OMP_CLAUSE_SET_MAP_KIND (c2, GOMP_MAP_FIRSTPRIVATE_POINTER);
        if (OMP_CLAUSE_MAP_KIND (c2) != GOMP_MAP_FIRSTPRIVATE_POINTER
*************** c_finish_omp_clauses (tree clauses, enum
*** 13875,13880 ****
--- 13920,13927 ----
    tree simdlen = NULL_TREE, safelen = NULL_TREE;
    bool branch_seen = false;
    bool copyprivate_seen = false;
+   bool mergeable_seen = false;
+   tree *detach_seen = NULL;
    bool linear_variable_step_check = false;
    tree *nowait_clause = NULL;
    tree ordered_clause = NULL_TREE;
*************** c_finish_omp_clauses (tree clauses, enum
*** 13887,13892 ****
--- 13934,13940 ----
    /* 1 if normal/task reduction has been seen, -1 if inscan reduction
       has been seen, -2 if mixed inscan/normal reduction diagnosed.  */
    int reduction_seen = 0;
+   bool allocate_seen = false;
  
    bitmap_obstack_initialize (NULL);
    bitmap_initialize (&generic_head, &bitmap_default_obstack);
*************** c_finish_omp_clauses (tree clauses, enum
*** 13999,14005 ****
  	      size = size_binop (MINUS_EXPR, size, size_one_node);
  	      size = save_expr (size);
  	      tree index_type = build_index_type (size);
! 	      tree atype = build_array_type (type, index_type);
  	      tree ptype = build_pointer_type (type);
  	      if (TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE)
  		t = build_fold_addr_expr (t);
--- 14047,14055 ----
  	      size = size_binop (MINUS_EXPR, size, size_one_node);
  	      size = save_expr (size);
  	      tree index_type = build_index_type (size);
! 	      tree atype = build_array_type (TYPE_MAIN_VARIANT (type),
! 					     index_type);
! 	      atype = c_build_qualified_type (atype, TYPE_QUALS (type));
  	      tree ptype = build_pointer_type (type);
  	      if (TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE)
  		t = build_fold_addr_expr (t);
*************** c_finish_omp_clauses (tree clauses, enum
*** 14436,14441 ****
--- 14486,14514 ----
  	    bitmap_set_bit (&oacc_reduction_head, DECL_UID (t));
  	  break;
  
+ 	case OMP_CLAUSE_ALLOCATE:
+ 	  t = OMP_CLAUSE_DECL (c);
+ 	  if (!VAR_P (t) && TREE_CODE (t) != PARM_DECL)
+ 	    {
+ 	      error_at (OMP_CLAUSE_LOCATION (c),
+ 			"%qE is not a variable in %<allocate%> clause", t);
+ 	      remove = true;
+ 	    }
+ 	  else if (bitmap_bit_p (&aligned_head, DECL_UID (t)))
+ 	    {
+ 	      warning_at (OMP_CLAUSE_LOCATION (c), 0,
+ 			  "%qE appears more than once in %<allocate%> clauses",
+ 			  t);
+ 	      remove = true;
+ 	    }
+ 	  else
+ 	    {
+ 	      bitmap_set_bit (&aligned_head, DECL_UID (t));
+ 	      if (!OMP_CLAUSE_ALLOCATE_COMBINED (c))
+ 		allocate_seen = true;
+ 	    }
+ 	  break;
+ 
  	case OMP_CLAUSE_DEPEND:
  	  t = OMP_CLAUSE_DECL (c);
  	  if (t == NULL_TREE)
*************** c_finish_omp_clauses (tree clauses, enum
*** 14696,14702 ****
  		break;
  	      if (VAR_P (t) || TREE_CODE (t) == PARM_DECL)
  		{
! 		  if (bitmap_bit_p (&map_field_head, DECL_UID (t)))
  		    break;
  		}
  	    }
--- 14769,14777 ----
  		break;
  	      if (VAR_P (t) || TREE_CODE (t) == PARM_DECL)
  		{
! 		  if (bitmap_bit_p (&map_field_head, DECL_UID (t))
! 		      || (ort == C_ORT_OMP
! 			  && bitmap_bit_p (&map_head, DECL_UID (t))))
  		    break;
  		}
  	    }
*************** c_finish_omp_clauses (tree clauses, enum
*** 14765,14771 ****
  	      else
  		bitmap_set_bit (&generic_head, DECL_UID (t));
  	    }
! 	  else if (bitmap_bit_p (&map_head, DECL_UID (t)))
  	    {
  	      if (OMP_CLAUSE_CODE (c) != OMP_CLAUSE_MAP)
  		error_at (OMP_CLAUSE_LOCATION (c),
--- 14840,14848 ----
  	      else
  		bitmap_set_bit (&generic_head, DECL_UID (t));
  	    }
! 	  else if (bitmap_bit_p (&map_head, DECL_UID (t))
! 		   && (ort != C_ORT_OMP
! 		       || !bitmap_bit_p (&map_field_head, DECL_UID (t))))
  	    {
  	      if (OMP_CLAUSE_CODE (c) != OMP_CLAUSE_MAP)
  		error_at (OMP_CLAUSE_LOCATION (c),
*************** c_finish_omp_clauses (tree clauses, enum
*** 14779,14785 ****
  	      remove = true;
  	    }
  	  else if (bitmap_bit_p (&generic_head, DECL_UID (t))
! 		   || bitmap_bit_p (&firstprivate_head, DECL_UID (t)))
  	    {
  	      if (ort == C_ORT_ACC)
  		error_at (OMP_CLAUSE_LOCATION (c),
--- 14856,14868 ----
  	      remove = true;
  	    }
  	  else if (bitmap_bit_p (&generic_head, DECL_UID (t))
! 		   && ort == C_ORT_ACC)
! 	    {
! 	      error_at (OMP_CLAUSE_LOCATION (c),
! 			"%qD appears more than once in data clauses", t);
! 	      remove = true;
! 	    }
! 	  else if (bitmap_bit_p (&firstprivate_head, DECL_UID (t)))
  	    {
  	      if (ort == C_ORT_ACC)
  		error_at (OMP_CLAUSE_LOCATION (c),
*************** c_finish_omp_clauses (tree clauses, enum
*** 14922,14927 ****
--- 15005,15025 ----
  	  pc = &OMP_CLAUSE_CHAIN (c);
  	  continue;
  
+ 	case OMP_CLAUSE_DETACH:
+ 	  t = OMP_CLAUSE_DECL (c);
+ 	  if (detach_seen)
+ 	    {
+ 	      error_at (OMP_CLAUSE_LOCATION (c),
+ 			"too many %qs clauses on a task construct",
+ 			"detach");
+ 	      remove = true;
+ 	      break;
+ 	    }
+ 	  detach_seen = pc;
+ 	  pc = &OMP_CLAUSE_CHAIN (c);
+ 	  c_mark_addressable (t);
+ 	  continue;
+ 
  	case OMP_CLAUSE_IF:
  	case OMP_CLAUSE_NUM_THREADS:
  	case OMP_CLAUSE_NUM_TEAMS:
*************** c_finish_omp_clauses (tree clauses, enum
*** 14930,14936 ****
  	case OMP_CLAUSE_UNTIED:
  	case OMP_CLAUSE_COLLAPSE:
  	case OMP_CLAUSE_FINAL:
- 	case OMP_CLAUSE_MERGEABLE:
  	case OMP_CLAUSE_DEVICE:
  	case OMP_CLAUSE_DIST_SCHEDULE:
  	case OMP_CLAUSE_PARALLEL:
--- 15028,15033 ----
*************** c_finish_omp_clauses (tree clauses, enum
*** 14964,14969 ****
--- 15061,15071 ----
  	  pc = &OMP_CLAUSE_CHAIN (c);
  	  continue;
  
+ 	case OMP_CLAUSE_MERGEABLE:
+ 	  mergeable_seen = true;
+ 	  pc = &OMP_CLAUSE_CHAIN (c);
+ 	  continue;
+ 
  	case OMP_CLAUSE_NOGROUP:
  	  nogroup_seen = pc;
  	  pc = &OMP_CLAUSE_CHAIN (c);
*************** c_finish_omp_clauses (tree clauses, enum
*** 15133,15142 ****
        reduction_seen = -2;
      }
  
!   if (linear_variable_step_check || reduction_seen == -2)
      for (pc = &clauses, c = clauses; c ; c = *pc)
        {
  	bool remove = false;
  	if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LINEAR
  	    && OMP_CLAUSE_LINEAR_VARIABLE_STRIDE (c)
  	    && !bitmap_bit_p (&map_head,
--- 15235,15274 ----
        reduction_seen = -2;
      }
  
!   if (linear_variable_step_check || reduction_seen == -2 || allocate_seen)
      for (pc = &clauses, c = clauses; c ; c = *pc)
        {
  	bool remove = false;
+ 	if (allocate_seen)
+ 	  switch (OMP_CLAUSE_CODE (c))
+ 	    {
+ 	    case OMP_CLAUSE_REDUCTION:
+ 	    case OMP_CLAUSE_IN_REDUCTION:
+ 	    case OMP_CLAUSE_TASK_REDUCTION:
+ 	      if (TREE_CODE (OMP_CLAUSE_DECL (c)) == MEM_REF)
+ 		{
+ 		  t = TREE_OPERAND (OMP_CLAUSE_DECL (c), 0);
+ 		  if (TREE_CODE (t) == POINTER_PLUS_EXPR)
+ 		    t = TREE_OPERAND (t, 0);
+ 		  if (TREE_CODE (t) == ADDR_EXPR
+ 		      || TREE_CODE (t) == INDIRECT_REF)
+ 		    t = TREE_OPERAND (t, 0);
+ 		  if (DECL_P (t))
+ 		    bitmap_clear_bit (&aligned_head, DECL_UID (t));
+ 		  break;
+ 		}
+ 	      /* FALLTHRU */
+ 	    case OMP_CLAUSE_PRIVATE:
+ 	    case OMP_CLAUSE_FIRSTPRIVATE:
+ 	    case OMP_CLAUSE_LASTPRIVATE:
+ 	    case OMP_CLAUSE_LINEAR:
+ 	      if (DECL_P (OMP_CLAUSE_DECL (c)))
+ 		bitmap_clear_bit (&aligned_head,
+ 				  DECL_UID (OMP_CLAUSE_DECL (c)));
+ 	      break;
+ 	    default:
+ 	      break;
+ 	    }
  	if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LINEAR
  	    && OMP_CLAUSE_LINEAR_VARIABLE_STRIDE (c)
  	    && !bitmap_bit_p (&map_head,
*************** c_finish_omp_clauses (tree clauses, enum
*** 15148,15154 ****
  		      OMP_CLAUSE_LINEAR_STEP (c));
  	    remove = true;
  	  }
! 	else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_REDUCTION)
  	  OMP_CLAUSE_REDUCTION_INSCAN (c) = 0;
  
  	if (remove)
--- 15280,15287 ----
  		      OMP_CLAUSE_LINEAR_STEP (c));
  	    remove = true;
  	  }
! 	else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_REDUCTION
! 		 && reduction_seen == -2)
  	  OMP_CLAUSE_REDUCTION_INSCAN (c) = 0;
  
  	if (remove)
*************** c_finish_omp_clauses (tree clauses, enum
*** 15157,15162 ****
--- 15290,15314 ----
  	  pc = &OMP_CLAUSE_CHAIN (c);
        }
  
+   if (allocate_seen)
+     for (pc = &clauses, c = clauses; c ; c = *pc)
+       {
+ 	bool remove = false;
+ 	if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_ALLOCATE
+ 	    && !OMP_CLAUSE_ALLOCATE_COMBINED (c)
+ 	    && bitmap_bit_p (&aligned_head, DECL_UID (OMP_CLAUSE_DECL (c))))
+ 	  {
+ 	    error_at (OMP_CLAUSE_LOCATION (c),
+ 		      "%qD specified in %<allocate%> clause but not in "
+ 		      "an explicit privatization clause", OMP_CLAUSE_DECL (c));
+ 	    remove = true;
+ 	  }
+ 	if (remove)
+ 	  *pc = OMP_CLAUSE_CHAIN (c);
+ 	else
+ 	  pc = &OMP_CLAUSE_CHAIN (c);
+       }
+ 
    if (nogroup_seen && reduction_seen)
      {
        error_at (OMP_CLAUSE_LOCATION (*nogroup_seen),
*************** c_finish_omp_clauses (tree clauses, enum
*** 15165,15170 ****
--- 15317,15357 ----
        *nogroup_seen = OMP_CLAUSE_CHAIN (*nogroup_seen);
      }
  
+   if (detach_seen)
+     {
+       if (mergeable_seen)
+ 	{
+ 	  error_at (OMP_CLAUSE_LOCATION (*detach_seen),
+ 		    "%<detach%> clause must not be used together with "
+ 		    "%<mergeable%> clause");
+ 	  *detach_seen = OMP_CLAUSE_CHAIN (*detach_seen);
+ 	}
+       else
+ 	{
+ 	  tree detach_decl = OMP_CLAUSE_DECL (*detach_seen);
+ 
+ 	  for (pc = &clauses, c = clauses; c ; c = *pc)
+ 	    {
+ 	      bool remove = false;
+ 	      if ((OMP_CLAUSE_CODE (c) == OMP_CLAUSE_SHARED
+ 		   || OMP_CLAUSE_CODE (c) == OMP_CLAUSE_PRIVATE
+ 		   || OMP_CLAUSE_CODE (c) == OMP_CLAUSE_FIRSTPRIVATE
+ 		   || OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LASTPRIVATE)
+ 		  && OMP_CLAUSE_DECL (c) == detach_decl)
+ 		{
+ 		  error_at (OMP_CLAUSE_LOCATION (c),
+ 			    "the event handle of a %<detach%> clause "
+ 			    "should not be in a data-sharing clause");
+ 		  remove = true;
+ 		}
+ 	      if (remove)
+ 		*pc = OMP_CLAUSE_CHAIN (c);
+ 	      else
+ 		pc = &OMP_CLAUSE_CHAIN (c);
+ 	    }
+ 	}
+     }
+ 
    bitmap_obstack_release (NULL);
    return clauses;
  }
diff -Nrcpad gcc-10.3.0/gcc/c/config-lang.in gcc-11.1.0/gcc/c/config-lang.in
*** gcc-10.3.0/gcc/c/config-lang.in	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/config-lang.in	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  # Top level configure fragment for GNU C - C language.
! # Copyright (C) 1994-2020 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
--- 1,5 ----
  # Top level configure fragment for GNU C - C language.
! # Copyright (C) 1994-2021 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/c/gccspec.c gcc-11.1.0/gcc/c/gccspec.c
*** gcc-10.3.0/gcc/c/gccspec.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/gccspec.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Specific flags and argument handling of the C front-end.
!    Copyright (C) 1999-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Specific flags and argument handling of the C front-end.
!    Copyright (C) 1999-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/c/gimple-parser.c gcc-11.1.0/gcc/c/gimple-parser.c
*** gcc-10.3.0/gcc/c/gimple-parser.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/gimple-parser.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Parser for GIMPLE.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Parser for GIMPLE.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** c_parser_gimple_compound_statement (gimp
*** 590,596 ****
  			       : ENTRY_BLOCK_PTR_FOR_FN (cfun)));
  	      if (basic_block_info_for_fn (cfun)->length () <= (size_t)index)
  		vec_safe_grow_cleared (basic_block_info_for_fn (cfun),
! 				       index + 1);
  	      SET_BASIC_BLOCK_FOR_FN (cfun, index, bb);
  	      if (last_basic_block_for_fn (cfun) <= index)
  		last_basic_block_for_fn (cfun) = index + 1;
--- 590,596 ----
  			       : ENTRY_BLOCK_PTR_FOR_FN (cfun)));
  	      if (basic_block_info_for_fn (cfun)->length () <= (size_t)index)
  		vec_safe_grow_cleared (basic_block_info_for_fn (cfun),
! 				       index + 1, true);
  	      SET_BASIC_BLOCK_FOR_FN (cfun, index, bb);
  	      if (last_basic_block_for_fn (cfun) <= index)
  		last_basic_block_for_fn (cfun) = index + 1;
*************** c_parser_gimple_compound_statement (gimp
*** 616,623 ****
  		      class loop *loop = alloc_loop ();
  		      loop->num = is_loop_header_of;
  		      loop->header = bb;
! 		      vec_safe_grow_cleared (loops_for_fn (cfun)->larray,
! 					     is_loop_header_of + 1);
  		      (*loops_for_fn (cfun)->larray)[is_loop_header_of] = loop;
  		      flow_loop_tree_node_add (loops_for_fn (cfun)->tree_root,
  					       loop);
--- 616,624 ----
  		      class loop *loop = alloc_loop ();
  		      loop->num = is_loop_header_of;
  		      loop->header = bb;
! 		      if (number_of_loops (cfun) <= (unsigned)is_loop_header_of)
! 			vec_safe_grow_cleared (loops_for_fn (cfun)->larray,
! 					       is_loop_header_of + 1, true);
  		      (*loops_for_fn (cfun)->larray)[is_loop_header_of] = loop;
  		      flow_loop_tree_node_add (loops_for_fn (cfun)->tree_root,
  					       loop);
*************** c_parser_parse_ssa_name (gimple_parser &
*** 1272,1280 ****
  	      error ("invalid base %qE for SSA name", parent);
  	      return error_mark_node;
  	    }
- 	  if (VECTOR_TYPE_P (TREE_TYPE (parent))
- 	      || TREE_CODE (TREE_TYPE (parent)) == COMPLEX_TYPE)
- 	    DECL_GIMPLE_REG_P (parent) = 1;
  	  name = make_ssa_name_fn (cfun, parent,
  				   gimple_build_nop (), version);
  	}
--- 1273,1278 ----
*************** c_parser_gimple_postfix_expression (gimp
*** 1703,1708 ****
--- 1701,1708 ----
        expr.set_error ();
        break;
      }
+   if (expr.value == error_mark_node)
+     return expr;
    return c_parser_gimple_postfix_expression_after_primary
      (parser, EXPR_LOC_OR_LOC (expr.value, loc), expr);
  }
diff -Nrcpad gcc-10.3.0/gcc/c/gimple-parser.h gcc-11.1.0/gcc/c/gimple-parser.h
*** gcc-10.3.0/gcc/c/gimple-parser.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c/gimple-parser.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Declarations for the parser for GIMPLE.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Declarations for the parser for GIMPLE.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/c-family/ChangeLog gcc-11.1.0/gcc/c-family/ChangeLog
*** gcc-10.3.0/gcc/c-family/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-11.1.0/gcc/c-family/ChangeLog	Tue Apr 27 10:00:13 2021
***************
*** 1,29 ****
! 2021-04-08  Release Manager
  
! 	* GCC 10.3.0 released.
  
! 2021-04-01  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c++/98481
  	* c-opts.c (c_common_post_options): Bump latest_abi_version.
  
! 2021-03-29  Marek Polacek  <polacek@redhat.com>
  
! 	Backported from master:
! 	2021-02-16  Marek Polacek  <polacek@redhat.com>
  
  	PR c++/99062
  	* c-attribs.c (handle_assume_aligned_attribute): Check that the
  	alignment argument is non-negative.  Tweak a warning message.
  
! 2021-03-24  Iain Sandoe  <iain@sandoe.co.uk>
  
  	* c-common.c (c_common_reswords): Add 'atomic' property
  	attribute.
  	* c-common.h (enum rid): Add RID_PROPATOMIC for atomic
  	property attributes.
  
! 2021-03-24  Iain Sandoe  <iain@sandoe.co.uk>
  
  	* c-objc.h (enum objc_property_attribute_group): New
  	(enum objc_property_attribute_kind): New.
--- 1,512 ----
! 2021-04-27  Release Manager
  
! 	* GCC 11.1.0 released.
  
! 2021-04-19  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* c.opt (fopenacc-kernels=): Remove.
! 
! 2021-04-08  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-warn.c (do_warn_double_promotion): Fix comment typo,
! 	occured -> occurred.
! 	(check_alignment_of_packed_member): Fix a comment typo,
! 	memeber -> member.
! 	(warn_parm_ptrarray_mismatch): Fix comment typos, os -> of
! 	and onless -> unless.
! 	(warn_parm_array_mismatch): Fix comment typos, declaratation
! 	-> declaration and woud -> would.  Fix up comment indentation.
! 
! 2021-04-08  Martin Sebor  <msebor@redhat.com>
! 
! 	PR middle-end/99883
! 	* c.opt (Wmismatched-new-delete): Correct spelling.
! 
! 2021-04-05  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* c-ada-spec.c (is_simple_enum): Minor tweaks.
! 	(dump_ada_enum_type): Add TYPE and PARENT parameters.  For non-simple
! 	enumeral types use again the type name for the enumeration constants.
! 	(dump_ada_node): Adjust call to dump_ada_enum_type.
! 	(dump_nested_type): Likewise.
! 
! 2021-04-01  Jason Merrill  <jason@redhat.com>
  
  	PR c++/98481
  	* c-opts.c (c_common_post_options): Bump latest_abi_version.
  
! 2021-03-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/99565
! 	* c-warn.c (do_warn_duplicated_branches): Pass also
! 	OEP_ADDRESS_OF_SAME_FIELD to operand_equal_p.
! 
! 2021-03-20  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR debug/99230
! 	* c-gimplify.c (c_genericize_control_stmt): Handle STATEMENT_LIST.
! 
! 2021-03-05  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* c-ada-spec.c (dump_ada_declaration) <TYPE_DECL>: Dump nested types
! 	after entering the separate class package, if any.
! 
! 2021-03-04  Richard Biener  <rguenther@suse.de>
! 
! 	* c-pretty-print.c (c_pretty_printer::direct_abstract_declarator):
! 	Handle ERROR_MARK.
! 
! 2021-03-04  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/99325
! 	* c-ppoutput.c (print): Change src_line type from int to unsigned.
! 	(token_streamer::stream) Likewise.
! 	(maybe_print_line_1): Likewise.  Don't strcmp src_file if src_loc is
! 	UNKNOWN_LOCATION.
! 
! 2021-03-03  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/99324
! 	* c-common.c (build_va_arg): Call c_common_mark_addressable_vec
! 	instead of mark_addressable.  Fix a comment typo -
! 	neutrallly -> neutrally.
! 
! 2021-02-28  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/99304
! 	* c-attribs.c (handle_malloc_attribute): Fix a typo in inform
! 	message - refernced -> referenced.  Remove superfluous space before
! 	closing paren of function calls.
! 
! 2021-02-25  Nathan Sidwell  <nathan@acm.org>
! 
! 	PR c++/99166
! 	* c.opt (-flang-info-module-cmi): Renamed option.
! 
! 2021-02-19  Nathan Sidwell  <nathan@acm.org>
! 
! 	* c.opt (flang-info-module-read, flang-info-module-read=): New.
! 
! 2021-02-18  H.J. Lu  <hjl.tools@gmail.com>
! 
! 	PR target/99113
! 	* c-attribs.c (c_common_attribute_table): Add the "retain"
! 	attribute.
! 	(handle_retain_attribute): New function.
! 
! 2021-02-16  Marek Polacek  <polacek@redhat.com>
  
  	PR c++/99062
  	* c-attribs.c (handle_assume_aligned_attribute): Check that the
  	alignment argument is non-negative.  Tweak a warning message.
  
! 2021-02-12  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c/99055
! 	* c-warn.c (warn_parm_array_mismatch): Free strings returned from
! 	print_generic_expr_to_str.
! 
! 2021-02-10  Richard Biener  <rguenther@suse.de>
! 
! 	* c-common.c (parse_optimize_options): Free decoded_options.
! 
! 2021-02-04  emsr  <3dw4rd@verizon.net>
! 
! 	* c-cppbuiltin.c (c_cpp_builtins): __cpp_size_t_suffix=202011L.
! 
! 2021-02-03  Ed Smith-Rowland  <3dw4rd@verizon.net>
! 
! 	* c-cppbuiltin.c (c_cpp_builtins): Define __cpp_size_t_suffix.
! 	* c-lex.c (interpret_integer): Set node type for size literal.
! 
! 2021-01-28  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c.opt (-std=c++2a, -std=c++20, -std=gnu++2a, -std=gnu++20): Remove
! 	draft from description.
! 	(-std=c++2b): Fix a pasto, 2020 -> 2023.
! 
! 2021-01-26  Paul Fee  <paul.f.fee@gmail.com>
! 
! 	* c-common.h (cxx_dialect): Add cxx23 as a dialect.
! 	* c.opt: Add options for -std=c++23, std=c++2b, -std=gnu++23
! 	and -std=gnu++2b
! 	* c-opts.c (set_std_cxx23): New.
! 	(c_common_handle_option): Set options when -std=c++23 is enabled.
! 	(c_common_post_options): Adjust comments.
! 	(set_std_cxx20): Likewise.
! 
! 2021-01-25  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c++/98646
! 	* c-common.c (check_nonnull_arg): Adjust warning text.
! 
! 2021-01-17  Martin Sebor  <msebor@redhat.com>
! 
! 	* c-pretty-print.c (c_pretty_printer::primary_expression): Don't
! 	assume SSA_NAME_IDENTIFIER evaluates to nonzero.
! 
! 2021-01-16  Kwok Cheung Yeung  <kcy@codesourcery.com>
! 
! 	* c-pragma.h (pragma_omp_clause): Add PRAGMA_OMP_CLAUSE_DETACH.
! 	Redefine PRAGMA_OACC_CLAUSE_DETACH.
! 
! 2021-01-15  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/98597
! 	* c-pretty-print.c: Include options.h.
! 	(c_fold_indirect_ref_for_warn): New function.
! 	(print_mem_ref): Use it.  If it returns something that has compatible
! 	type and is TBAA compatible with zero offset, print it and return,
! 	otherwise print it using offsetof syntax or array ref syntax.  Fix up
! 	printing if MEM_REFs first operand is ADDR_EXPR, or when the first
! 	argument has pointer to array type.  Print pointers using the standard
! 	formatting.
! 
! 2021-01-12  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c/98597
! 	PR c/98592
! 	* c-pretty-print.c (print_mem_ref): Avoid assuming MEM_REF operand
! 	has pointer type.  Remove redundant code.  Avoid calling
! 	gimple_canonical_types_compatible_p.
! 
! 2021-01-07  Martin Sebor  <msebor@redhat.com>
! 
! 	PR middle-end/98578
! 	* c-pretty-print.c (print_mem_ref): Strip array from access type.
! 	Avoid assuming acces type's size is constant.  Correct condition
! 	guarding the printing of a parenthesis.
! 
! 2021-01-06  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c++/95768
! 	* c-pretty-print.c (c_pretty_printer::primary_expression): For
! 	SSA_NAMEs print VLA names and GIMPLE defining statements.
! 	(print_mem_ref): New function.
! 	(c_pretty_printer::unary_expression): Call it.
! 
! 2021-01-06  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/95582
! 	* c-attribs.c (c_common_attribute_table): Add entry for
! 	signed_bool_precision.
! 	(handle_signed_bool_precision_attribute): New.
! 
! 2020-12-24  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* c.opt: Add -stdlib= option and enumerations for
! 	libstdc++ and libc++.
! 
! 2020-12-16  Martin Liska  <mliska@suse.cz>
! 
! 	* c.opt: Remove usage of Report.
! 
! 2020-12-14  Martin Sebor  <msebor@redhat.com>
! 
! 	PR middle-end/98166
! 	PR c++/57111
! 	PR middle-end/98160
! 	* c-attribs.c (maybe_add_noinline): New function.
! 	(handle_malloc_attribute): Call it.  Use ATTR_FLAG_INTERNAL.
! 	Implicitly add attribute noinline to functions not declared inline
! 	and warn on those.
! 
! 2020-12-09  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	* c-pragma.c (omp_pragmas): Add 'allocate'.
! 	* c-pragma.h (enum pragma_kind): Add PRAGMA_OMP_ALLOCATE.
! 
! 2020-12-08  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/98187
! 	* c-pragma.c (omp_pragmas): Remove "master".
! 	(omp_pragmas_simd): Add "master".
! 
! 2020-12-07  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/98126
! 	* c-common.c (verify_tree_lim_r): New function.
! 	(verify_sequence_points): Use it.  Use nullptr instead of 0.
! 
! 2020-12-03  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c++/90629
! 	PR middle-end/94527
! 	* c-attribs.c (handle_dealloc_attribute): New function.
! 	(handle_malloc_attribute): Handle argument forms of attribute.
! 	* c.opt (-Wmismatched-dealloc): New option.
! 	(-Wmismatched-new-delete): New option.
! 
! 2020-12-03  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR libstdc++/93121
! 	* c-common.h (enum rid): Add RID_BUILTIN_BIT_CAST.
! 	* c-common.c (c_common_reswords): Add __builtin_bit_cast.
! 
! 2020-12-01  JeanHeyd Meneide  <phdofthehouse@gmail.com>
! 
! 	* c-cppbuiltin.c (c_cpp_builtins): Add predefined
! 	{__GNUC_EXECUTION_CHARSET_NAME} and
! 	_WIDE_EXECUTION_CHARSET_NAME} macros.
! 
! 2020-12-01  Nathan Sidwell  <nathan@acm.org>
! 
! 	* c-common.c (module, import, export): New internal tokens (with
! 	trailing space).
! 	* c-common.h (RID__MODULE, RID__IMPORT & RID__EXPORT): Enumerate
! 	them.
! 	(D_CXX_MODULES, D_CXX_MODULES_FLAGS): Enable them.
! 	* c-cppbuiltin.c (c_cpp_builtins): Feature macro.
! 
! 2020-12-01  Nathan Sidwell  <nathan@acm.org>
! 
! 	* c-opts.c (c_common_init_options): Ask for module dependencies.
! 	(c_common_handle_option): Handle -Mmodules -Mno-modules.
! 	* c-pch.c (c_common_valid_pch): ... does not play with C++
! 	modules.
! 	* c.opt (Mmodules, Mno-modules): New preprocessor dependency
! 	options.
! 	(fmodules-ts, fmodule-header, fmodule-implicit-inline)
! 	(fmodule-only, fmodule-mapper, fmodule-lazy)
! 	(fmodule-version-ignore, Winvalid-imported-macros)
! 	(flang-info-include-translate, flang-info-include-translate-not):
! 	New options
! 
! 2020-11-28  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* c-ada-spec.c (dump_nested_type) <RECORD_TYPE>: Remove obsolete code.
! 	(dump_ada_structure): Also deal with convention, unchecked union and
! 	bit-field for nested types.  In the latter case, print an Alignment
! 	aspect along with the Pack aspect.
! 
! 2020-11-25  Martin Sebor  <msebor@redhat.com>
! 
! 	PR bootstrap/94982
! 	* c-attribs.c (handle_patchable_function_entry_attribute): Avoid
! 	-Wformat-diag.
! 
! 2020-11-24  Martin Sebor  <msebor@redhat.com>
! 
! 	* c-warn.c (warn_parm_array_mismatch): Avoid invalid redeclarations.
! 
! 2020-11-23  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
! 
! 	* c-attribs.c (handle_special_var_sec_attribute): New.
! 	(handle_noinit_attribute): Remove.
! 	(attr_noinit_exclusions): Rename to...
! 	(attr_section_exclusions): ...this, and add "persistent" attribute
! 	exclusion.
! 	(c_common_attribute_table): Add "persistent" attribute.
! 
! 2020-11-21  Aaron Sawdey  <acsawdey@linux.ibm.com>
! 
! 	* c-pretty-print.c (c_pretty_printer::simple_type_specifier):
! 	Treat opaque types like other types.
! 	(c_pretty_printer::direct_abstract_declarator): Opaque types are
! 	supported types.
! 
! 2020-11-20  Martin Sebor  <msebor@redhat.com>
! 
! 	* c-warn.c (warn_parm_array_mismatch): Bail on invalid redeclarations
! 	with fewer arguments.
! 
! 2020-11-20  Martin Sebor  <msebor@redhat.com>
! 
! 	PR middle-end/97879
! 	* c-attribs.c (handle_access_attribute): Handle ATTR_FLAG_INTERNAL.
! 	Error out on invalid modes.
! 
! 2020-11-20  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR libstdc++/88101
! 	* c-common.c (check_builtin_function_arguments): Handle
! 	BUILT_IN_CLEAR_PADDING.
! 
! 2020-11-18  Nathan Sidwell  <nathan@acm.org>
! 
! 	* c-lex.c (c_lex_with_flags): CPP_HEADER_NAMEs can now be seen.
! 
! 2020-11-17  Nathan Sidwell  <nathan@acm.org>
! 
! 	* c-common.h (enum c_tree_index): Reorder to place lazy fields
! 	after newly-added CTI_MODULE_HWM.
! 
! 2020-11-17  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-cppbuiltin.c (builtin_define_float_constants): Define
! 	"*_IS_IEC_60559__" macros.
! 
! 2020-11-17  Nathan Sidwell  <nathan@acm.org>
! 
! 	* c-lex.c: #include "langhooks.h".
! 	(cb_undef): Maybe call preprocess_undef lang hook.
! 	* c-opts.c (c_common_post_options): Maybe call preprocess_options
! 	lang hook.
! 	(push_command_line_include): Maybe call preprocess_main_file lang
! 	hook.
! 	(cb_file_change): Likewise.
! 	* c-ppoutput.c: #include "langhooks.h.
! 	(scan_translation_unit): Maybe call preprocess_token lang hook.
! 	(class do_streamer): New, derive from token_streamer.
! 	(directives_only_cb): Data pointer is do_streamer, call
! 	preprocess_token lang hook.
! 	(scan_translation_unit_directives_only): Use do_streamer.
! 	(print_line_1): Move src_line recording to after string output.
! 	(cb_undef): Maybe call preprocess_undef lang hook.
! 
! 2020-11-17  Nathan Sidwell  <nathan@acm.org>
! 
! 	* c-ppoutput.c (scan_translation_unit): Use token_streamer, remove
! 	code duplicating that functionality.
! 
! 2020-11-17  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/90628
! 	* c-common.c (check_builtin_function_arguments)
! 	<case BUILT_IN_ADD_OVERFLOW>: Diagnose when last argument is pointer
! 	to _Atomic.  For the TYPE_READONLY case, adjust message to be usable
! 	for more builtins and argument positions.
! 
! 2020-11-16  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	PR objc/97854
! 	* stub-objc.c: Include c-common.h to declare enum rid.
! 
! 2020-11-13  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/63287
! 	* c-cppbuiltin.c: Include configargs.h.
! 	(c_cpp_builtins): For C++11 and later if THREAD_MODEL_SPEC is not
! 	defined, predefine __STDCPP_THREADS__ to 1 unless thread_model is
! 	"single".
! 
! 2020-11-13  Gergö Barany  <gergo@codesourcery.com>
! 	    Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* c.opt (fopenacc-kernels): Add.
! 
! 2020-11-13  Jason Merrill  <jason@redhat.com>
! 
! 	* c-cppbuiltin.c (c_cpp_builtins): Define __cpp_using_enum.
! 
! 2020-11-13  Piotr H. Dabrowski  <phd@phd.re>
! 
! 	PR c++/91318
! 	* c-cppbuiltin.c: c_cpp_builtins_optimize_pragma(): use cpp_define_unused()
! 
! 2020-11-13  Martin Liska  <mliska@suse.cz>
! 
! 	* c-attribs.c (build_attr_access_from_parms): Format properly.
! 
! 2020-11-13  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	PR objc/90707
! 	* c-common.c (c_common_reswords): null_unspecified, nullable,
! 	nonnull, null_resettable: New keywords.
! 	* c-common.h (enum rid): RID_NULL_UNSPECIFIED, RID_NULLABLE,
! 	RID_NONNULL, RID_NULL_RESETTABLE: New.
! 	(OBJC_IS_PATTR_KEYWORD): Include nullability keywords in the
! 	ranges accepted for property attributes.
! 	* c-attribs.c (handle_objc_nullability_attribute): New.
! 	* c-objc.h (enum objc_property_attribute_group): Add
! 	OBJC_PROPATTR_GROUP_NULLABLE.
! 	(enum objc_property_attribute_kind):Add
! 	OBJC_PROPERTY_ATTR_NULL_UNSPECIFIED, OBJC_PROPERTY_ATTR_NULLABLE,
! 	OBJC_PROPERTY_ATTR_NONNULL, OBJC_PROPERTY_ATTR_NULL_RESETTABLE.
! 
! 2020-11-13  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	PR objc/77404
! 	* c-attribs.c (handle_objc_root_class_attribute): New
! 	* c-objc.h (objc_start_class_interface): Add a location
! 	value for the position of the class name.
! 	* c.opt: Add Wobjc-root-class.
! 	* stub-objc.c (objc_start_class_interface): Add a location
! 	value for the position of the class name.
! 
! 2020-11-12  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-lex.c (c_common_has_attribute): Take argument std_syntax.
! 	Allow scope for C.  Handle standard attributes for C.  Do not
! 	accept unscoped attributes if std_syntax and not handled as
! 	standard attributes.
! 	* c-common.h (c_common_has_attribute): Update prototype.
! 
! 2020-11-12  Nicholas Guriev  <guriev-ns@ya.ru>
! 
! 	PR pch/86674
! 	* c-pch.c (c_common_valid_pch): Use cpp_warning with CPP_W_INVALID_PCH
! 	reason to fix -Werror=invalid-pch and -Wno-error=invalid-pch switches.
! 
! 2020-11-11  Patrick Palka  <ppalka@redhat.com>
! 
! 	PR c++/88115
! 	* c-opts.c (c_common_post_options): Update latest_abi_version.
! 
! 2020-11-10  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/97748
! 	* c-common.h (warn_if_unused_value): Add quiet argument defaulted
! 	to false.
! 	* c-warn.c (warn_if_unused_value): Likewise.  Pass it down
! 	recursively and just return true instead of warning if it is true.
! 	Handle COMPLEX_EXPR.
! 
! 2020-11-10  Chung-Lin Tang  <cltang@codesourcery.com>
! 
! 	* c-common.h (c_omp_adjust_map_clauses): New declaration.
! 	* c-omp.c (struct map_clause): Helper type for c_omp_adjust_map_clauses.
! 	(c_omp_adjust_map_clauses): New function.
! 
! 2020-11-09  Marek Polacek  <polacek@redhat.com>
! 
! 	DR 1914
! 	* c-common.c (attribute_fallthrough_p): Tweak the warning
! 	message.
! 
! 2020-11-09  Patrick Palka  <ppalka@redhat.com>
! 
! 	* c-pragma.c (handle_pragma_diagnostic): Split the
! 	unknown-option -Wpragmas diagnostic into a warning and a
! 	subsequent note containing a spelling suggestion.  Avoid
! 	computing the suggestion if -Wpragmas warnings are being
! 	suppressed.
! 
! 2020-11-09  Patrick Palka  <ppalka@redhat.com>
! 
! 	PR testsuite/97117
! 	* c-indentation.c (get_visual_column): Remove location_t
! 	parameter.  Move the column-tracking diagnostic code from here
! 	to ...
! 	(should_warn_for_misleading_indentation): ... here, before the
! 	early exit for when the loci are not all distinct.  Don't pass a
! 	location_t argument to get_visual_column.
! 	(assert_get_visual_column_succeeds): Don't pass a location_t
! 	argument to get_visual_column.
! 	(assert_get_visual_column_fails): Likewise.
! 
! 2020-11-08  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* c-common.h (OBJC_IS_PATTR_KEYWORD): Add class to the list
! 	of keywords accepted in @property attribute contexts.
! 	* c-objc.h (enum objc_property_attribute_group): Add
! 	OBJC_PROPATTR_GROUP_CLASS.
! 	(enum objc_property_attribute_kind): Add
! 	OBJC_PROPERTY_ATTR_CLASS.
! 
! 2020-11-07  Iain Sandoe  <iain@sandoe.co.uk>
  
  	* c-common.c (c_common_reswords): Add 'atomic' property
  	attribute.
  	* c-common.h (enum rid): Add RID_PROPATOMIC for atomic
  	property attributes.
  
! 2020-11-07  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* c-attribs.c (handle_nsobject_attribute): New.
! 	* c.opt: Add WNSObject-attribute.
! 
! 2020-11-06  Iain Sandoe  <iain@sandoe.co.uk>
  
  	* c-objc.h (enum objc_property_attribute_group): New
  	(enum objc_property_attribute_kind): New.
***************
*** 36,97 ****
  	(objc_add_property_declaration): Simplify interface.
  	(objc_prop_attr_kind_for_rid): New.
  
! 2021-03-24  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* c-lex.c (c_lex_with_flags): When combining '@' with a
! 	keyword for Objective-C, combine the location ranges too.
  
! 2021-03-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2021-03-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/99324
! 	* c-common.c (build_va_arg): Call c_common_mark_addressable_vec
! 	instead of mark_addressable.  Fix a comment typo -
! 	neutrallly -> neutrally.
  
! 2021-01-14  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	Backported from master:
! 	2020-11-04  Iain Sandoe  <iain@sandoe.co.uk>
  
  	* c-objc.h (objc_non_constant_expr_p): New.
  	* stub-objc.c (objc_non_constant_expr_p): New.
  
! 2021-01-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-12-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/98187
! 	* c-pragma.c (omp_pragmas): Remove "master".
! 	(omp_pragmas_simd): Add "master".
  
! 2020-11-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-11-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/97748
! 	* c-common.h (warn_if_unused_value): Add quiet argument defaulted
! 	to false.
! 	* c-warn.c (warn_if_unused_value): Likewise.  Pass it down
! 	recursively and just return true instead of warning if it is true.
! 	Handle COMPLEX_EXPR.
  
! 2020-11-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-11-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	* c-common.c (verify_sequence_points): Remove DEBUG_FUNCTION.
  
! 2020-10-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-10-05  Richard Biener  <rguenther@suse.de>
! 		    Jakub Jelinek  <jakub@redhat.com>
  
  	PR c++/97197
  	* c-pretty-print.c: Include langhooks.h.
--- 519,647 ----
  	(objc_add_property_declaration): Simplify interface.
  	(objc_prop_attr_kind_for_rid): New.
  
! 2020-11-06  Nathan Sidwell  <nathan@acm.org>
  
! 	* c-ada-spec.c (collect_ada_nodes): Rename
! 	DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
! 	(collect_ada_node): Likewise.
! 	(dump_forward_type): Likewise.
! 	* c-common.c (set_underlying_type): Rename
! 	DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
! 	(user_facing_original_type, c_common_finalize_early_debug): Likewise.
  
! 2020-11-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	* c-common.c (verify_sequence_points): Remove DEBUG_FUNCTION.
  
! 2020-11-05  Marek Polacek  <polacek@redhat.com>
  
! 	PR c++/97675
! 	* c.opt (Wexceptions): New option.
  
! 2020-11-05  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/25814
! 	* c.opt (Wvexing-parse): New option.
! 
! 2020-11-04  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/97670
! 	* c-omp.c (c_omp_split_clauses): Look through array reductions to find
! 	underlying decl to clear in the allocate_head bitmap.
! 
! 2020-11-04  Iain Sandoe  <iain@sandoe.co.uk>
  
  	* c-objc.h (objc_non_constant_expr_p): New.
  	* stub-objc.c (objc_non_constant_expr_p): New.
  
! 2020-11-03  Nathan Sidwell  <nathan@acm.org>
  
! 	* c.opt (MQ,MT): Reword description to be make-agnostic.
  
! 2020-11-02  Nathan Sidwell  <nathan@acm.org>
  
! 	* c-opts.c (c_common_post_options): Move var decl to its
! 	initialization point.
  
! 2020-11-01  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* c-lex.c (c_lex_with_flags): When combining '@' with a
! 	keyword for Objective-C, combine the location ranges too.
  
! 2020-10-30  Qing Zhao  <qing.zhao@oracle.com>
! 	    H.J.Lu  <hjl.tools@gmail.com>
  
! 	* c-attribs.c (c_common_attribute_table): Add new attribute
! 	zero_call_used_regs.
! 	(handle_zero_call_used_regs_attribute): New function.
  
! 2020-10-28  Marek Polacek  <polacek@redhat.com>
  
! 	PR c++/97573
! 	* c-opts.c (c_common_post_options): In C++20, turn on
! 	-Wdeprecated-enum-enum-conversion and
! 	-Wdeprecated-enum-float-conversion.
! 	* c.opt (Wdeprecated-enum-enum-conversion,
! 	Wdeprecated-enum-float-conversion): New options.
! 	(Wenum-conversion): Allow for C++ too.
  
! 2020-10-28  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-pragma.h (enum pragma_omp_clause): Add PRAGMA_OMP_CLAUSE_ALLOCATE.
! 	* c-omp.c: Include bitmap.h.
! 	(c_omp_split_clauses): Handle OMP_CLAUSE_ALLOCATE.
! 
! 2020-10-26  Ville Voutilainen  <ville.voutilainen@gmail.com>
! 
! 	* c-common.c (__is_nothrow_assignable): New.
! 	(__is_nothrow_constructible): Likewise.
! 	* c-common.h (RID_IS_NOTHROW_ASSIGNABLE): New.
! 	(RID_IS_NOTHROW_CONSTRUCTIBLE): Likewise.
! 
! 2020-10-23  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	* c-common.c (c_common_finalize_early_debug): Update for new thunk api.
! 
! 2020-10-23  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/91741
! 	* c-common.c (verify_tree): Handle PAREN_SIZEOF_EXPR.
! 	(c_common_init_ts): Likewise.
! 	* c-common.def (PAREN_SIZEOF_EXPR): New tree code.
! 	* c-common.h (maybe_warn_sizeof_array_div): Declare.
! 	* c-warn.c (sizeof_pointer_memaccess_warning): Unwrap NOP_EXPRs.
! 	(maybe_warn_sizeof_array_div): New function.
! 	* c.opt (Wsizeof-array-div): New option.
! 
! 2020-10-23  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c/97463
! 	* c-warn.c (warn_parm_ptrarray_mismatch): Move null test earlier.
! 
! 2020-10-22  Martin Liska  <mliska@suse.cz>
! 
! 	PR c/94722
! 	* c-attribs.c (handle_no_stack_protect_function_attribute): New.
! 	(handle_stack_protect_attribute): Add error message for a
! 	no_stack_protector function.
! 
! 2020-10-22  Martin Liska  <mliska@suse.cz>
! 
! 	* c-cppbuiltin.c (c_cpp_builtins): Use the stack_protector enum.
! 
! 2020-10-22  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	* c-gimplify.c: Include tree-nested.h
! 	(c_genericize): Update for new nested function info.
! 
! 2020-10-14  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c/97413
! 	* c-attribs.c (build_attr_access_from_parms): Wrap chain of VLA
! 	bounds in an extra list.
! 
! 2020-10-05  Richard Biener  <rguenther@suse.de>
! 	    Jakub Jelinek  <jakub@redhat.com>
  
  	PR c++/97197
  	* c-pretty-print.c: Include langhooks.h.
***************
*** 101,136 ****
  	unary_expression.
  	(c_pretty_printer::unary_expression): Handle TARGET_MEM_REF.
  
! 2020-08-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-08-11  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/96545
  	* c-common.c (get_atomic_generic_size): Require that first argument's
  	type points to a complete type and use tree_fits_uhwi_p instead of
  	just INTEGER_CST TREE_CODE check for the TYPE_SIZE_UNIT.
  
! 2020-07-23  Release Manager
  
! 	* GCC 10.2.0 released.
  
! 2020-06-29  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2020-06-27  Jakub Jelinek  <jakub@redhat.com>
  
  	PR middle-end/95903
  	* c-common.c (pointer_int_sum): Use TYPE_OVERFLOW_UNDEFINED instead of
  	!TYPE_UNSIGNED check to see if we can apply distributive law and handle
  	smaller precision intop operands separately.
  
! 2020-06-14  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/95580
  	* c-pretty-print.c (c_pretty_printer::unary_expression): Handle the
  	case when MEM_REF's first argument has type pointer to incomplete type.
  
  202-05-07  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/94968
--- 651,1029 ----
  	unary_expression.
  	(c_pretty_printer::unary_expression): Handle TARGET_MEM_REF.
  
! 2020-09-30  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/97189
! 	* c-attribs.c (append_access_attr): Use the function declaration
! 	location for a warning about an attribute access argument.
! 
! 2020-09-29  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/94695
! 	* c.opt (Wrange-loop-construct): New option.
! 
! 2020-09-23  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c/97131
! 	* c-warn.c (warn_parm_ptrarray_mismatch): Handle more invalid input.
! 
! 2020-09-23  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c/97125
! 	* c-gimplify.c (c_genericize): Only call do_warn_duplicated_branches_r
! 	after loops and other structured control constructs have been lowered.
! 
! 2020-09-22  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c.opt (Wbuiltin-declaration-mismatch): Fix typo in variable name:
! 	warn_builtin_declaraion_mismatch -> warn_builtin_declaration_mismatch.
! 
! 2020-09-21  Marek Polacek  <polacek@redhat.com>
! 
! 	* c.opt (Wctad-maybe-unsupported): New option.
! 
! 2020-09-19  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c/50584
! 	* c-common.h (warn_parm_array_mismatch): Declare new function.
! 	(has_attribute): Move declaration of an existing function.
! 	(build_attr_access_from_parms): Declare new function.
! 	* c-warn.c (parm_array_as_string): Define new function.
! 	(plus_one):  Define new function.
! 	(warn_parm_ptrarray_mismatch): Define new function.
! 	(warn_parm_array_mismatch):  Define new function.
! 	(vla_bound_parm_decl): New function.
! 	* c.opt (-Warray-parameter, -Wvla-parameter): New options.
! 	* c-pretty-print.c (pp_c_type_qualifier_list): Don't print array type
! 	qualifiers here...
! 	(c_pretty_printer::direct_abstract_declarator): ...but instead print
! 	them in brackets here.  Also print [static].  Strip extraneous
! 	expressions from VLA bounds.
! 
! 2020-09-19  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c/50584
! 	* c-attribs.c (c_common_attribute_table): Add "arg spec" attribute.
! 	(handle_argspec_attribute): New function.
! 	(get_argument, get_argument_type): New functions.
! 	(append_access_attrs): Add overload.  Handle internal attribute
! 	representation in addition to external.
! 	(handle_access_attribute): Handle internal attribute representation
! 	in addition to external.
! 	(build_attr_access_from_parms): New function.
! 
! 2020-09-19  Sandra Loosemore  <sandra@codesourcery.com>
! 
! 	* c-gimplify.c (genericize_c_loop): Rewrite to match
! 	c_finish_loop in c-typeck.c.
! 
! 2020-09-19  Sandra Loosemore  <sandra@codesourcery.com>
! 
! 	* c-common.c (c_block_may_fallthrough): New, split from
! 	cxx_block_may_fallthrough in the cp front end.
! 	(c_common_init_ts): Move handling of loop and switch-related
! 	statements here from the cp front end.
! 	* c-common.def (FOR_STMT, WHILE_STMT, DO_STMT): Move here from
! 	cp front end.
! 	(BREAK_STMT, CONTINUE_STMT, SWITCH_STMT): Likewise.
! 	* c-common.h (c_block_may_fallthru): Declare.
! 	(bc_state_t): Move here from cp front end.
! 	(save_bc_state, restore_bc_state): Declare.
! 	(c_genericize_control_stmt): Declare.
! 	(WHILE_COND, WHILE_BODY): Likewise.
! 	(DO_COND, DO_BODY): Likewise.
! 	(FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY, FOR_SCOPE): Likewise.
! 	(SWITCH_STMT_COND, SWITCH_STMT_BODY): Likewise.
! 	(SWITCH_STMT_TYPE, SWITCH_STMT_SCOPE): Likewise.
! 	(SWITCH_STMT_ALL_CASES_P, SWITCH_STMT_NO_BREAK_P): Likewise.
! 	(LABEL_DECL_BREAK, LABEL_DECL_CONTINUE): Likewise.
! 	* c-dump.c (dump_stmt): Copy from cp front end.
! 	(c_dump_tree): Move code to handle structured loop and switch
! 	tree nodes here from cp front end.
! 	* c-gimplify.c: Adjust includes.
! 	(enum bc_t, bc_label, begin_bc_block, finish_bc_block): Move from
! 	cp front end.
! 	(save_bc_state, restore_bc_state): New functions using old code
! 	from cp front end.
! 	(get_bc_label, expr_loc_or_loc): Move from cp front end.
! 	(genericize_c_loop): Move from cp front end.
! 	(genericize_for_stmt, genericize_while_stmt): Likewise.
! 	(genericize_do_stmt, genericize_switch_stmt): Likewise.
! 	(genericize_continue_stmt, genericize_break_stmt): Likewise.
! 	(genericize_omp_for_stmt): Likewise.
! 	(c_genericize_control_stmt): New function using code split from
! 	cp front end.
! 	(c_genericize_control_r): New.
! 	(c_genericize): Call walk_tree with c_genericize_control_r.
! 	* c-pretty-print.c (c_pretty_printer::statement): Move code to handle
! 	structured loop and switch tree nodes here from cp front end.
! 
! 2020-09-17  Patrick Palka  <ppalka@redhat.com>
! 
! 	PR c/80076
! 	* c-indentation.c (should_warn_for_misleading_indentation): Move
! 	declarations of local variables closer to their first use.
! 	Handle virtual token locations by resolving them to their
! 	respective macro expansion points.  If all three tokens are
! 	produced from the same macro expansion, then instead use their
! 	loci within the macro definition.
! 
! 2020-09-16  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c/78666
! 	PR c/96126
! 	* c-attribs.c (validate_attr_args): New function.
! 	(validate_attr_arg): Same.
! 	(handle_section_attribute): Call it.  Introduce a local variable.
! 	(handle_alloc_size_attribute):  Same.
! 	(handle_alloc_align_attribute): Same.
! 
! 2020-09-14  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-attribs.c (handle_optimize_attribute): Adjust
! 	cl_optimization_save, cl_optimization_restore and
! 	build_optimization_node callers.
! 	* c-pragma.c (handle_pragma_optimize): Adjust
! 	build_optimization_node caller.
! 	(handle_pragma_push_options): Adjust
! 	build_optimization_node and build_target_option_node callers.
! 	(handle_pragma_pop_options, handle_pragma_reset_options):
! 	Adjust cl_optimization_restore callers.
! 
! 2020-08-28  Martin Sebor  <msebor@redhat.com>
! 
! 	* c.opt (Wstringop-overread): New option.
! 
! 2020-08-11  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/96545
  	* c-common.c (get_atomic_generic_size): Require that first argument's
  	type points to a complete type and use tree_fits_uhwi_p instead of
  	just INTEGER_CST TREE_CODE check for the TYPE_SIZE_UNIT.
  
! 2020-07-31  Martin Sebor  <msebor@redhat.com>
  
! 	PR c++/96003
! 	* c-common.c (check_function_arguments_recurse): Return early when
! 	no-warning bit is set.
  
! 2020-07-31  Richard Biener  <rguenther@suse.de>
  
! 	PR debug/96383
! 	* c-common.h (c_common_finalize_early_debug): Declare.
! 	* c-common.c: Include debug.h.
! 	(c_common_finalize_early_debug): finalize_early_debug langhook
! 	implementation generating debug for extern declarations.
! 
! 2020-07-27  Nathan Sidwell  <nathan@acm.org>
! 
! 	* c-common.c (try_to_locate_new_include_insertion_point): Use
! 	strcmp, not pointer equality.
! 
! 2020-07-25  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c++/96310
! 	* c-common.c (check_nonnull_arg): Print note only when warning was
! 	issued.
! 
! 2020-07-22  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	* c-omp.c (c_finish_omp_critical): Check for no name but
! 	nonzero hint provided.
! 
! 2020-07-20  Jason Merrill  <jason@redhat.com>
! 
! 	* c-cppbuiltin.c (c_cpp_builtins): Update
! 	__cpp_nontype_template_args for C++20.
! 
! 2020-07-20  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c/96249
! 	* c.opt: Remove stray text.
! 
! 2020-07-14  Lewis Hyatt  <lhyatt@gmail.com>
! 
! 	PR other/86904
! 	* c-indentation.c (should_warn_for_misleading_indentation): Get
! 	global tabstop from the new source.
! 	* c-opts.c (c_common_handle_option): Remove handling of -ftabstop, which
! 	is now a common option.
! 	* c.opt: Likewise.
! 
! 2020-07-08  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* c.opt (Wscalar-storage-order): Add explicit variable.
! 
! 2020-07-07  Nathan Sidwell  <nathan@acm.org>
! 
! 	* c-opts.c (c_common_post_options): Add 'injecting' arg to
! 	cpp_read_main_file.
! 	(c_finish_options): Add linemap_line_start calls for builtin and cmd
! 	maps.  Force token position to line_table's highest line.
! 	* c-ppoutput.c (print_line_1): Refactor, print line zero.
! 	(cb_define): Always increment source line.
! 
! 2020-07-06  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c++/95984
! 	* c-common.c (check_function_nonnull): Avoid checking syntesized calls
! 	to stub lambda objects with null this pointer.
! 	(check_nonnull_arg): Handle C++ nullptr.
! 
! 2020-07-02  Jason Merrill  <jason@redhat.com>
! 	    Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-cppbuiltin.c (c_cpp_builtins): Define __cpp_consteval.
! 
! 2020-06-30  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/95963
! 	* c-common.c (check_function_arguments_recurse): Don't crash on
! 	calls to internal functions.
! 
! 2020-06-28  Martin Sebor  <msebor@redhat.com>
! 
! 	PR c++/86568
! 	* c-common.c (struct nonnull_arg_ctx): Add members.
! 	(check_function_nonnull): Use nonnull_arg_ctx as argument.  Handle
! 	C++ member functions specially.  Consider the this pointer implicitly
! 	nonnull.
! 	(check_nonnull_arg): Use location of argument when available.
! 	(check_function_arguments): Use nonnull_arg_ctx as argument.
! 
! 2020-06-27  Jakub Jelinek  <jakub@redhat.com>
  
  	PR middle-end/95903
  	* c-common.c (pointer_int_sum): Use TYPE_OVERFLOW_UNDEFINED instead of
  	!TYPE_UNSIGNED check to see if we can apply distributive law and handle
  	smaller precision intop operands separately.
  
! 2020-06-26  Marek Polacek  <polacek@redhat.com>
! 
! 	* c-opts.c (c_common_init_options): Default to gnu++17.
! 
! 2020-06-17  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	PR c/95378
! 	* c-common.c (get_atomic_generic_size): Check cv-qualifiers in
! 	pointer arguments.
! 
! 2020-06-16  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-common.h (c_omp_check_loop_iv_exprs): Add an int argument.
! 	* c-omp.c (struct c_omp_check_loop_iv_data): Add maybe_nonrect and
! 	idx members.
! 	(c_omp_is_loop_iterator): New function.
! 	(c_omp_check_loop_iv_r): Use it.  Add support for silent scanning
! 	if outer loop iterator is present.  Perform duplicate checking through
! 	hash_set in the function rather than expecting caller to do that.
! 	Pass NULL instead of d->ppset to walk_tree_1.
! 	(c_omp_check_nonrect_loop_iv): New function.
! 	(c_omp_check_loop_iv): Use it.  Fill in new members, allow
! 	non-rectangular loop forms, diagnose multiple associated loops with
! 	the same iterator.  Pass NULL instead of &pset to walk_tree_1.
! 	(c_omp_check_loop_iv_exprs): Likewise.
! 
! 2020-06-10  Martin Liska  <mliska@suse.cz>
! 
! 	PR tree-optimization/92860
! 	* c-attribs.c (handle_optimize_attribute):
! 	Save global options and compare it after parsing of function
! 	attribute.
! 	* c-pragma.c (opt_stack::saved_global_options): New field.
! 	(handle_pragma_push_options): Save global_options.
! 	(handle_pragma_pop_options): Compare them after pop.
! 
! 2020-06-09  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/95580
  	* c-pretty-print.c (c_pretty_printer::unary_expression): Handle the
  	case when MEM_REF's first argument has type pointer to incomplete type.
  
+ 2020-06-05  Jason Merrill  <jason@redhat.com>
+ 
+ 	* c-pretty-print.c (pp_c_additive_expression): Handle negative
+ 	operand to POINTER_PLUS_EXPR.
+ 
+ 2020-06-04  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/10138
+ 	PR middle-end/95136
+ 	* c-attribs.c (append_access_attrs): Handle attr_access::none.
+ 	(handle_access_attribute): Same.
+ 
+ 2020-06-03  Mark Wielaard  <mark@klomp.org>
+ 
+ 	* known-headers.cc (get_cp_stdlib_header_for_string_macro_name):
+ 	New function.
+ 	* known-headers.h (get_cp_stdlib_header_for_string_macro_name):
+ 	New function declaration.
+ 
+ 2020-06-03  Mark Wielaard  <mark@klomp.org>
+ 
+ 	* known-headers.cc (get_string_macro_hint): New function.
+ 	(get_stdlib_header_for_name): Use get_string_macro_hint.
+ 	(get_c_stdlib_header_for_string_macro_name): New function.
+ 	* known-headers.h (get_c_stdlib_header_for_string_macro_name):
+ 	New function declaration.
+ 
+ 2020-06-03  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* c-common.h (c_omp_predetermined_mapping): Declare.
+ 	* c-omp.c (c_omp_predetermined_mapping): New.
+ 
+ 2020-05-22  Mark Wielaard  <mark@klomp.org>
+ 
+ 	* known-headers.cc (get_stdlib_header_for_name): Add a new
+ 	stdlib_hint array for stdbool and stdint.
+ 
+ 2020-05-22  Mark Wielaard  <mark@klomp.org>
+ 
+ 	* known-headers.cc (get_stdlib_header_for_name): Return
+ 	"<stdbool.h>" for "bool", "true" or "false" when STDLIB_C and
+ 	flag_isoc99.
+ 
+ 2020-05-20  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* c-common.c (try_to_locate_new_include_insertion_point): Revert change.
+ 
+ 	* c-common.c (try_to_locate_new_include_insertion_point): Use
+ 	strcmp to compare filenames.
+ 	* c-lex.c (init_c_lex): Move declaration to initialization.
+ 	* c-opts.c (handle_deferred_opts): Move cpp_get_deps call into
+ 	deferred count loop.
+ 
+ 2020-05-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	* c-opts.c (set_std_cxx20): Set flag_coroutines.
+ 
+ 2020-05-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	* c.opt (std=c++20): Make c++2a the alias.
+ 	(std=gnu++20): Likewise.
+ 	* c-common.h (cxx_dialect): Change cxx2a to cxx20.
+ 	* c-opts.c: Adjust.
+ 	* c-cppbuiltin.c: Adjust.
+ 	* c-ubsan.c: Adjust.
+ 	* c-warn.c: Adjust.
+ 
+ 2020-05-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* c-ada-spec.c (dump_ads): Output pragma Warnings ("U"); on entry.
+ 
+ 2020-05-08  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	Reimplement directives only processing.
+ 	* c-ppoutput.c (token_streamer): Ne.
+ 	(directives_only_cb): New.  Swallow ...
+ 	(print_lines_directives_only): ... this.
+ 	(scan_translation_unit_directives_only): Reimplment using the
+ 	published interface.
+ 
+ 2020-05-07  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* c-format.c (badwords): Add "nonstatic".
+ 
  202-05-07  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/94968
***************
*** 139,147 ****
  	(resolve_overloaded_builtin) <case BUILT_IN_SPECULATION_SAFE_VALUE_N>:
  	Remove extraneous semicolon.
  
! 2020-05-07  Release Manager
  
! 	* GCC 10.1.0 released.
  
  2020-04-29  Jakub Jelinek  <jakub@redhat.com>
  
--- 1032,1056 ----
  	(resolve_overloaded_builtin) <case BUILT_IN_SPECULATION_SAFE_VALUE_N>:
  	Remove extraneous semicolon.
  
! 2020-05-06  qing zhao  <qing.zhao@oracle.com>
  
! 	PR c/94230
! 	* c-indentation.c (get_visual_column): Add a hint to use the new
! 	-flarge-source-files option.
! 
! 2020-05-05  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
! 
! 	* c-attribs.c (handle_vector_size_attribute): Add attribute
! 	nonnull for argument args in order to silence warning of
! 	uninitialized variable usage.  Since this is local to the
! 	compilation unit and thus cannot be checked at call sides by the
! 	compiler, added an assert statement in order to verify this.
! 
! 2020-05-01  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	PR target/93492
! 	* c-attribs.c (handle_patchable_function_entry_attribute): Limit
! 	value to USHRT_MAX (65535).
  
  2020-04-29  Jakub Jelinek  <jakub@redhat.com>
  
***************
*** 11127,11133 ****
  	* c-common.c: Include gt-c-family-c-common.h.
  	* c-pragma.c: Include gt-c-family-c-pragma.h.
  
! Copyright (C) 2010-2020 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 12036,12042 ----
  	* c-common.c: Include gt-c-family-c-common.h.
  	* c-pragma.c: Include gt-c-family-c-pragma.h.
  
! Copyright (C) 2010-2021 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-ada-spec.c gcc-11.1.0/gcc/c-family/c-ada-spec.c
*** gcc-10.3.0/gcc/c-family/c-ada-spec.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-ada-spec.c	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Print GENERIC declaration (functions, variables, types) trees coming from
     the C and C++ front-ends as well as macros in Ada syntax.
!    Copyright (C) 2010-2020 Free Software Foundation, Inc.
     Adapted from tree-pretty-print.c by Arnaud Charlet  <charlet@adacore.com>
  
  This file is part of GCC.
--- 1,6 ----
  /* Print GENERIC declaration (functions, variables, types) trees coming from
     the C and C++ front-ends as well as macros in Ada syntax.
!    Copyright (C) 2010-2021 Free Software Foundation, Inc.
     Adapted from tree-pretty-print.c by Arnaud Charlet  <charlet@adacore.com>
  
  This file is part of GCC.
*************** collect_ada_nodes (tree t, const char *s
*** 713,719 ****
       in the context of bindings) and namespaces (we do not handle them properly
       yet).  */
    for (n = t; n; n = TREE_CHAIN (n))
!     if (!DECL_IS_BUILTIN (n)
  	&& TREE_CODE (n) != NAMESPACE_DECL
  	&& LOCATION_FILE (decl_sloc (n, false)) == source_file)
        to_dump_count++;
--- 713,719 ----
       in the context of bindings) and namespaces (we do not handle them properly
       yet).  */
    for (n = t; n; n = TREE_CHAIN (n))
!     if (!DECL_IS_UNDECLARED_BUILTIN (n)
  	&& TREE_CODE (n) != NAMESPACE_DECL
  	&& LOCATION_FILE (decl_sloc (n, false)) == source_file)
        to_dump_count++;
*************** collect_ada_nodes (tree t, const char *s
*** 723,729 ****
  
    /* Store the relevant nodes.  */
    for (n = t; n; n = TREE_CHAIN (n))
!     if (!DECL_IS_BUILTIN (n)
  	&& TREE_CODE (n) != NAMESPACE_DECL
  	&& LOCATION_FILE (decl_sloc (n, false)) == source_file)
        to_dump[i++] = n;
--- 723,729 ----
  
    /* Store the relevant nodes.  */
    for (n = t; n; n = TREE_CHAIN (n))
!     if (!DECL_IS_UNDECLARED_BUILTIN (n)
  	&& TREE_CODE (n) != NAMESPACE_DECL
  	&& LOCATION_FILE (decl_sloc (n, false)) == source_file)
        to_dump[i++] = n;
*************** dump_ada_template (pretty_printer *buffe
*** 1932,1939 ****
    return num_inst > 0;
  }
  
! /* Return true if NODE is a simple enum types, that can be mapped to an
!    Ada enum type directly.  */
  
  static bool
  is_simple_enum (tree node)
--- 1932,1939 ----
    return num_inst > 0;
  }
  
! /* Return true if NODE is a simple enumeral type that can be mapped to an
!    Ada enumeration type directly.  */
  
  static bool
  is_simple_enum (tree node)
*************** is_simple_enum (tree node)
*** 1947,1955 ****
        if (TREE_CODE (int_val) != INTEGER_CST)
  	int_val = DECL_INITIAL (int_val);
  
!       if (!tree_fits_shwi_p (int_val))
! 	return false;
!       else if (tree_to_shwi (int_val) != count)
  	return false;
  
        count++;
--- 1947,1953 ----
        if (TREE_CODE (int_val) != INTEGER_CST)
  	int_val = DECL_INITIAL (int_val);
  
!       if (!tree_fits_shwi_p (int_val) || tree_to_shwi (int_val) != count)
  	return false;
  
        count++;
*************** is_simple_enum (tree node)
*** 1958,1968 ****
    return true;
  }
  
! /* Dump in BUFFER an enumeral type NODE in Ada syntax.  SPC is the indentation
!    level.  */
  
  static void
! dump_ada_enum_type (pretty_printer *buffer, tree node, int spc)
  {
    if (is_simple_enum (node))
      {
--- 1956,1967 ----
    return true;
  }
  
! /* Dump in BUFFER the declaration of enumeral NODE of type TYPE in Ada syntax.
!    PARENT is the parent node of NODE.  SPC is the indentation level.  */
  
  static void
! dump_ada_enum_type (pretty_printer *buffer, tree node, tree type, tree parent,
! 		    int spc)
  {
    if (is_simple_enum (node))
      {
*************** dump_ada_enum_type (pretty_printer *buff
*** 1993,2017 ****
  	pp_string (buffer, "unsigned");
        else
  	pp_string (buffer, "int");
        for (tree value = TYPE_VALUES (node); value; value = TREE_CHAIN (value))
  	{
  	  pp_semicolon (buffer);
  	  newline_and_indent (buffer, spc);
  
  	  pp_ada_tree_identifier (buffer, TREE_PURPOSE (value), node, false);
  	  pp_string (buffer, " : constant ");
  
! 	  if (TYPE_UNSIGNED (node))
! 	    pp_string (buffer, "unsigned");
  	  else
! 	    pp_string (buffer, "int");
  
  	  pp_string (buffer, " := ");
! 	  dump_ada_node (buffer,
! 			 TREE_CODE (TREE_VALUE (value)) == INTEGER_CST
! 			 ? TREE_VALUE (value)
! 			 : DECL_INITIAL (TREE_VALUE (value)),
! 			 node, spc, false, true);
  	}
      }
  }
--- 1992,2020 ----
  	pp_string (buffer, "unsigned");
        else
  	pp_string (buffer, "int");
+ 
        for (tree value = TYPE_VALUES (node); value; value = TREE_CHAIN (value))
  	{
+ 	  tree int_val = TREE_VALUE (value);
+ 
+ 	  if (TREE_CODE (int_val) != INTEGER_CST)
+ 	    int_val = DECL_INITIAL (int_val);
+ 
  	  pp_semicolon (buffer);
  	  newline_and_indent (buffer, spc);
  
  	  pp_ada_tree_identifier (buffer, TREE_PURPOSE (value), node, false);
  	  pp_string (buffer, " : constant ");
  
! 	  if (TYPE_NAME (node))
! 	    dump_ada_node (buffer, node, NULL_TREE, spc, false, true);
! 	  else if (type)
! 	    dump_ada_node (buffer, type, NULL_TREE, spc, false, true);
  	  else
! 	    dump_anonymous_type_name (buffer, node, parent);
  
  	  pp_string (buffer, " := ");
! 	  dump_ada_node (buffer, int_val, node, spc, false, true);
  	}
      }
  }
*************** dump_ada_node (pretty_printer *buffer, t
*** 2098,2104 ****
        if (name_only)
  	dump_ada_node (buffer, TYPE_NAME (node), node, spc, false, true);
        else
! 	dump_ada_enum_type (buffer, node, spc);
        break;
  
      case REAL_TYPE:
--- 2101,2107 ----
        if (name_only)
  	dump_ada_node (buffer, TYPE_NAME (node), node, spc, false, true);
        else
! 	dump_ada_enum_type (buffer, node, type, NULL_TREE, spc);
        break;
  
      case REAL_TYPE:
*************** dump_ada_node (pretty_printer *buffer, t
*** 2321,2327 ****
        return 0;
  
      case TYPE_DECL:
!       if (DECL_IS_BUILTIN (node))
  	{
  	  /* Don't print the declaration of built-in types.  */
  	  if (name_only)
--- 2324,2330 ----
        return 0;
  
      case TYPE_DECL:
!       if (DECL_IS_UNDECLARED_BUILTIN (node))
  	{
  	  /* Don't print the declaration of built-in types.  */
  	  if (name_only)
*************** dump_forward_type (pretty_printer *buffe
*** 2444,2450 ****
        return;
      }
  
!   if (DECL_IS_BUILTIN (decl) || TREE_VISITED (decl))
      return;
  
    /* Forward declarations are only needed within a given file.  */
--- 2447,2453 ----
        return;
      }
  
!   if (DECL_IS_UNDECLARED_BUILTIN (decl) || TREE_VISITED (decl))
      return;
  
    /* Forward declarations are only needed within a given file.  */
*************** dump_nested_type (pretty_printer *buffer
*** 2577,2583 ****
        else
  	dump_anonymous_type_name (buffer, field_type, parent);
        pp_string (buffer, " is ");
!       dump_ada_enum_type (buffer, field_type, spc);
        pp_semicolon (buffer);
        newline_and_indent (buffer, spc);
        break;
--- 2580,2586 ----
        else
  	dump_anonymous_type_name (buffer, field_type, parent);
        pp_string (buffer, " is ");
!       dump_ada_enum_type (buffer, field_type, NULL_TREE, parent, spc);
        pp_semicolon (buffer);
        newline_and_indent (buffer, spc);
        break;
*************** dump_nested_type (pretty_printer *buffer
*** 2598,2613 ****
  
        pp_string (buffer, " is ");
        dump_ada_structure (buffer, field_type, t, true, spc);
- 
-       pp_string (buffer, "with Convention => C_Pass_By_Copy");
- 
-       if (TREE_CODE (field_type) == UNION_TYPE)
- 	{
- 	  pp_comma (buffer);
- 	  newline_and_indent (buffer, spc + 5);
- 	  pp_string (buffer, "Unchecked_Union => True");
- 	}
- 
        pp_semicolon (buffer);
        newline_and_indent (buffer, spc);
        break;
--- 2601,2606 ----
*************** dump_ada_declaration (pretty_printer *bu
*** 2857,2864 ****
  	      pp_string (buffer, "subtype ");
  	    else
  	      {
- 		dump_nested_types (buffer, t, spc);
- 
                  if (separate_class_package (t))
  		  {
  		    is_class = true;
--- 2850,2855 ----
*************** dump_ada_declaration (pretty_printer *bu
*** 2869,2874 ****
--- 2860,2867 ----
  		    newline_and_indent (buffer, spc);
  		  }
  
+ 		dump_nested_types (buffer, t, spc);
+ 
  		pp_string (buffer, "type ");
  	      }
  	    break;
*************** dump_ada_structure (pretty_printer *buff
*** 3318,3327 ****
    newline_and_indent (buffer, spc);
  
    /* We disregard the methods for anonymous nested types.  */
!   if (nested)
!     return;
! 
!   if (has_nontrivial_methods (node))
      {
        pp_string (buffer, "with Import => True,");
        newline_and_indent (buffer, spc + 5);
--- 3311,3317 ----
    newline_and_indent (buffer, spc);
  
    /* We disregard the methods for anonymous nested types.  */
!   if (has_nontrivial_methods (node) && !nested)
      {
        pp_string (buffer, "with Import => True,");
        newline_and_indent (buffer, spc + 5);
*************** dump_ada_structure (pretty_printer *buff
*** 3339,3350 ****
--- 3329,3348 ----
  
    if (bitfield_used)
      {
+       char buf[32];
        pp_comma (buffer);
        newline_and_indent (buffer, spc + 5);
        pp_string (buffer, "Pack => True");
+       pp_comma (buffer);
+       newline_and_indent (buffer, spc + 5);
+       sprintf (buf, "Alignment => %d", TYPE_ALIGN (node) / BITS_PER_UNIT);
+       pp_string (buffer, buf);
        bitfield_used = false;
      }
  
+   if (nested)
+     return;
+ 
    need_semicolon = !dump_ada_methods (buffer, node, spc);
  
    /* Print the static fields of the structure, if any.  */
*************** dump_ads (const char *source_file,
*** 3412,3420 ****
        cpp_check = check;
        dump_ada_nodes (&pp, source_file);
  
!       /* We require Ada 2012 syntax, so generate corresponding pragma.
!          Also, disable style checks since this file is auto-generated.  */
!       fprintf (f, "pragma Ada_2012;\npragma Style_Checks (Off);\n\n");
  
        /* Dump withs.  */
        dump_ada_withs (f);
--- 3410,3421 ----
        cpp_check = check;
        dump_ada_nodes (&pp, source_file);
  
!       /* We require Ada 2012 syntax, so generate corresponding pragma.  */
!       fputs ("pragma Ada_2012;\n", f);
! 
!       /* Disable style checks and warnings on unused entities since this file
! 	 is auto-generated and always has a with clause for Interfaces.C.  */
!       fputs ("pragma Style_Checks (Off);\npragma Warnings (\"U\");\n\n", f);
  
        /* Dump withs.  */
        dump_ada_withs (f);
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-ada-spec.h gcc-11.1.0/gcc/c-family/c-ada-spec.h
*** gcc-10.3.0/gcc/c-family/c-ada-spec.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-ada-spec.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Interface for -fdump-ada-spec capability.
!    Copyright (C) 2010-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Interface for -fdump-ada-spec capability.
!    Copyright (C) 2010-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-attribs.c gcc-11.1.0/gcc/c-family/c-attribs.c
*** gcc-10.3.0/gcc/c-family/c-attribs.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-attribs.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* C-family attributes handling.
!    Copyright (C) 1992-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* C-family attributes handling.
!    Copyright (C) 1992-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** You should have received a copy of the G
*** 17,22 ****
--- 17,23 ----
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  
+ #define INCLUDE_STRING
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
*************** along with GCC; see the file COPYING3.
*** 45,50 ****
--- 46,52 ----
  #include "opts.h"
  #include "gimplify.h"
  #include "tree-pretty-print.h"
+ #include "gcc-rich-location.h"
  
  static tree handle_packed_attribute (tree *, tree, tree, int, bool *);
  static tree handle_nocommon_attribute (tree *, tree, tree, int, bool *);
*************** static tree handle_no_sanitize_undefined
*** 63,68 ****
--- 65,72 ----
  static tree handle_asan_odr_indicator_attribute (tree *, tree, tree, int,
  						 bool *);
  static tree handle_stack_protect_attribute (tree *, tree, tree, int, bool *);
+ static tree handle_no_stack_protector_function_attribute (tree *, tree,
+ 							tree, int, bool *);
  static tree handle_noinline_attribute (tree *, tree, tree, int, bool *);
  static tree handle_noclone_attribute (tree *, tree, tree, int, bool *);
  static tree handle_nocf_check_attribute (tree *, tree, tree, int, bool *);
*************** static tree handle_constructor_attribute
*** 90,99 ****
  static tree handle_destructor_attribute (tree *, tree, tree, int, bool *);
  static tree handle_mode_attribute (tree *, tree, tree, int, bool *);
  static tree handle_section_attribute (tree *, tree, tree, int, bool *);
  static tree handle_aligned_attribute (tree *, tree, tree, int, bool *);
  static tree handle_warn_if_not_aligned_attribute (tree *, tree, tree,
  						  int, bool *);
- static tree handle_noinit_attribute (tree *, tree, tree, int, bool *);
  static tree handle_weak_attribute (tree *, tree, tree, int, bool *) ;
  static tree handle_noplt_attribute (tree *, tree, tree, int, bool *) ;
  static tree handle_alias_ifunc_attribute (bool, tree *, tree, tree, bool *);
--- 94,103 ----
  static tree handle_destructor_attribute (tree *, tree, tree, int, bool *);
  static tree handle_mode_attribute (tree *, tree, tree, int, bool *);
  static tree handle_section_attribute (tree *, tree, tree, int, bool *);
+ static tree handle_special_var_sec_attribute (tree *, tree, tree, int, bool *);
  static tree handle_aligned_attribute (tree *, tree, tree, int, bool *);
  static tree handle_warn_if_not_aligned_attribute (tree *, tree, tree,
  						  int, bool *);
  static tree handle_weak_attribute (tree *, tree, tree, int, bool *) ;
  static tree handle_noplt_attribute (tree *, tree, tree, int, bool *) ;
  static tree handle_alias_ifunc_attribute (bool, tree *, tree, tree, bool *);
*************** static tree handle_no_instrument_functio
*** 109,114 ****
--- 113,119 ----
  static tree handle_no_profile_instrument_function_attribute (tree *, tree,
  							     tree, int, bool *);
  static tree handle_malloc_attribute (tree *, tree, tree, int, bool *);
+ static tree handle_dealloc_attribute (tree *, tree, tree, int, bool *);
  static tree handle_returns_twice_attribute (tree *, tree, tree, int, bool *);
  static tree handle_no_limit_stack_attribute (tree *, tree, tree, int,
  					     bool *);
*************** static tree handle_tm_attribute (tree *,
*** 117,123 ****
  static tree handle_tm_wrap_attribute (tree *, tree, tree, int, bool *);
  static tree handle_novops_attribute (tree *, tree, tree, int, bool *);
  static tree handle_vector_size_attribute (tree *, tree, tree, int,
! 					  bool *);
  static tree handle_nonnull_attribute (tree *, tree, tree, int, bool *);
  static tree handle_nonstring_attribute (tree *, tree, tree, int, bool *);
  static tree handle_nothrow_attribute (tree *, tree, tree, int, bool *);
--- 122,128 ----
  static tree handle_tm_wrap_attribute (tree *, tree, tree, int, bool *);
  static tree handle_novops_attribute (tree *, tree, tree, int, bool *);
  static tree handle_vector_size_attribute (tree *, tree, tree, int,
! 					  bool *) ATTRIBUTE_NONNULL(3);
  static tree handle_nonnull_attribute (tree *, tree, tree, int, bool *);
  static tree handle_nonstring_attribute (tree *, tree, tree, int, bool *);
  static tree handle_nothrow_attribute (tree *, tree, tree, int, bool *);
*************** static tree handle_target_clones_attribu
*** 136,141 ****
--- 141,149 ----
  static tree handle_optimize_attribute (tree *, tree, tree, int, bool *);
  static tree ignore_attribute (tree *, tree, tree, int, bool *);
  static tree handle_no_split_stack_attribute (tree *, tree, tree, int, bool *);
+ static tree handle_zero_call_used_regs_attribute (tree *, tree, tree, int,
+ 						  bool *);
+ static tree handle_argspec_attribute (tree *, tree, tree, int, bool *);
  static tree handle_fnspec_attribute (tree *, tree, tree, int, bool *);
  static tree handle_warn_unused_attribute (tree *, tree, tree, int, bool *);
  static tree handle_returns_nonnull_attribute (tree *, tree, tree, int, bool *);
*************** static tree handle_designated_init_attri
*** 150,155 ****
--- 158,169 ----
  static tree handle_patchable_function_entry_attribute (tree *, tree, tree,
  						       int, bool *);
  static tree handle_copy_attribute (tree *, tree, tree, int, bool *);
+ static tree handle_nsobject_attribute (tree *, tree, tree, int, bool *);
+ static tree handle_objc_root_class_attribute (tree *, tree, tree, int, bool *);
+ static tree handle_objc_nullability_attribute (tree *, tree, tree, int, bool *);
+ static tree handle_signed_bool_precision_attribute (tree *, tree, tree, int,
+ 						    bool *);
+ static tree handle_retain_attribute (tree *, tree, tree, int, bool *);
  
  /* Helper to define attribute exclusions.  */
  #define ATTR_EXCL(name, function, type, variable)	\
*************** static const struct attribute_spec::excl
*** 238,250 ****
    ATTR_EXCL (NULL, false, false, false)
  };
  
! static const struct attribute_spec::exclusions attr_noinit_exclusions[] =
  {
    ATTR_EXCL ("noinit", true, true, true),
    ATTR_EXCL ("section", true, true, true),
    ATTR_EXCL (NULL, false, false, false),
  };
  
  /* Table of machine-independent attributes common to all C-like languages.
  
     Current list of processed common attributes: nonnull.  */
--- 252,275 ----
    ATTR_EXCL (NULL, false, false, false)
  };
  
! /* Exclusions that apply to attributes that put declarations in specific
!    sections.  */
! static const struct attribute_spec::exclusions attr_section_exclusions[] =
  {
    ATTR_EXCL ("noinit", true, true, true),
+   ATTR_EXCL ("persistent", true, true, true),
    ATTR_EXCL ("section", true, true, true),
    ATTR_EXCL (NULL, false, false, false),
  };
  
+ static const struct attribute_spec::exclusions attr_stack_protect_exclusions[] =
+ {
+   ATTR_EXCL ("stack_protect", true, false, false),
+   ATTR_EXCL ("no_stack_protector", true, false, false),
+   ATTR_EXCL (NULL, false, false, false),
+ };
+ 
+ 
  /* Table of machine-independent attributes common to all C-like languages.
  
     Current list of processed common attributes: nonnull.  */
*************** const struct attribute_spec c_common_att
*** 252,257 ****
--- 277,284 ----
  {
    /* { name, min_len, max_len, decl_req, type_req, fn_type_req,
         affects_type_identity, handler, exclude } */
+   { "signed_bool_precision",  1, 1, false, true, false, true,
+ 			      handle_signed_bool_precision_attribute, NULL },
    { "packed",                 0, 0, false, false, false, false,
  			      handle_packed_attribute,
  	                      attr_aligned_exclusions },
*************** const struct attribute_spec c_common_att
*** 272,278 ****
    { "volatile",               0, 0, true,  false, false, false,
  			      handle_noreturn_attribute, NULL },
    { "stack_protect",          0, 0, true,  false, false, false,
! 			      handle_stack_protect_attribute, NULL },
    { "noinline",               0, 0, true,  false, false, false,
  			      handle_noinline_attribute,
  	                      attr_noinline_exclusions },
--- 299,309 ----
    { "volatile",               0, 0, true,  false, false, false,
  			      handle_noreturn_attribute, NULL },
    { "stack_protect",          0, 0, true,  false, false, false,
! 			      handle_stack_protect_attribute,
! 			      attr_stack_protect_exclusions },
!   { "no_stack_protector",     0, 0, true, false, false, false,
! 			      handle_no_stack_protector_function_attribute,
! 			      attr_stack_protect_exclusions },
    { "noinline",               0, 0, true,  false, false, false,
  			      handle_noinline_attribute,
  	                      attr_noinline_exclusions },
*************** const struct attribute_spec c_common_att
*** 298,303 ****
--- 329,336 ----
  			      handle_used_attribute, NULL },
    { "unused",                 0, 0, false, false, false, false,
  			      handle_unused_attribute, NULL },
+   { "retain",                 0, 0, true,  false, false, false,
+ 			      handle_retain_attribute, NULL },
    { "externally_visible",     0, 0, true,  false, false, false,
  			      handle_externally_visible_attribute, NULL },
    { "no_reorder",	      0, 0, true, false, false, false,
*************** const struct attribute_spec c_common_att
*** 317,323 ****
    { "mode",                   1, 1, false,  true, false, false,
  			      handle_mode_attribute, NULL },
    { "section",                1, 1, true,  false, false, false,
! 			      handle_section_attribute, attr_noinit_exclusions },
    { "aligned",                0, 1, false, false, false, false,
  			      handle_aligned_attribute,
  	                      attr_aligned_exclusions },
--- 350,356 ----
    { "mode",                   1, 1, false,  true, false, false,
  			      handle_mode_attribute, NULL },
    { "section",                1, 1, true,  false, false, false,
! 			      handle_section_attribute, attr_section_exclusions },
    { "aligned",                0, 1, false, false, false, false,
  			      handle_aligned_attribute,
  	                      attr_aligned_exclusions },
*************** const struct attribute_spec c_common_att
*** 339,345 ****
    { "no_profile_instrument_function",  0, 0, true, false, false, false,
  			      handle_no_profile_instrument_function_attribute,
  			      NULL },
!   { "malloc",                 0, 0, true,  false, false, false,
  			      handle_malloc_attribute, attr_alloc_exclusions },
    { "returns_twice",          0, 0, true,  false, false, false,
  			      handle_returns_twice_attribute,
--- 372,378 ----
    { "no_profile_instrument_function",  0, 0, true, false, false, false,
  			      handle_no_profile_instrument_function_attribute,
  			      NULL },
!   { "malloc",                 0, 2, true,  false, false, false,
  			      handle_malloc_attribute, attr_alloc_exclusions },
    { "returns_twice",          0, 0, true,  false, false, false,
  			      handle_returns_twice_attribute,
*************** const struct attribute_spec c_common_att
*** 434,439 ****
--- 467,478 ----
  			      ignore_attribute, NULL },
    { "no_split_stack",	      0, 0, true,  false, false, false,
  			      handle_no_split_stack_attribute, NULL },
+   { "zero_call_used_regs",    1, 1, true, false, false, false,
+ 			      handle_zero_call_used_regs_attribute, NULL },
+   /* For internal use only (marking of function arguments).
+      The name contains a space to prevent its usage in source code.  */
+   { "arg spec",		      1, -1, true, false, false, false,
+ 			      handle_argspec_attribute, NULL },
    /* For internal use (marking of builtins and runtime functions) only.
       The name contains space to prevent its usage in source code.  */
    { "fn spec",		      1, 1, false, true, true, false,
*************** const struct attribute_spec c_common_att
*** 481,489 ****
    { "copy",                   1, 1, false, false, false, false,
  			      handle_copy_attribute, NULL },
    { "noinit",		      0, 0, true,  false, false, false,
! 			      handle_noinit_attribute, attr_noinit_exclusions },
    { "access",		      1, 3, false, true, true, false,
  			      handle_access_attribute, NULL },
    { NULL,                     0, 0, false, false, false, false, NULL, NULL }
  };
  
--- 520,539 ----
    { "copy",                   1, 1, false, false, false, false,
  			      handle_copy_attribute, NULL },
    { "noinit",		      0, 0, true,  false, false, false,
! 			      handle_special_var_sec_attribute, attr_section_exclusions },
!   { "persistent",	      0, 0, true,  false, false, false,
! 			      handle_special_var_sec_attribute, attr_section_exclusions },
    { "access",		      1, 3, false, true, true, false,
  			      handle_access_attribute, NULL },
+   /* Attributes used by Objective-C.  */
+   { "NSObject",		      0, 0, true, false, false, false,
+ 			      handle_nsobject_attribute, NULL },
+   { "objc_root_class",	      0, 0, true, false, false, false,
+ 			      handle_objc_root_class_attribute, NULL },
+   { "objc_nullability",	      1, 1, true, false, false, false,
+ 			      handle_objc_nullability_attribute, NULL },
+   { "*dealloc",                1, 2, true, false, false, false,
+ 			      handle_dealloc_attribute, NULL },
    { NULL,                     0, 0, false, false, false, false, NULL, NULL }
  };
  
*************** positional_argument (const_tree fntype,
*** 720,728 ****
--- 770,943 ----
    return pos;
  }
  
+ /* Return the first of DECL or TYPE attributes installed in NODE if it's
+    a DECL, or TYPE attributes if it's a TYPE, or null otherwise.  */
+ 
+ static tree
+ decl_or_type_attrs (tree node)
+ {
+   if (DECL_P (node))
+     {
+       if (tree attrs = DECL_ATTRIBUTES (node))
+ 	return attrs;
+ 
+       tree type = TREE_TYPE (node);
+       return TYPE_ATTRIBUTES (type);
+     }
+ 
+   if (TYPE_P (node))
+     return TYPE_ATTRIBUTES (node);
+ 
+   return NULL_TREE;
+ }
+ 
+ /* Given a pair of NODEs for arbitrary DECLs or TYPEs, validate one or
+    two integral or string attribute arguments NEWARGS to be applied to
+    NODE[0] for the absence of conflicts with the same attribute arguments
+    already applied to NODE[1]. Issue a warning for conflicts and return
+    false.  Otherwise, when no conflicts are found, return true.  */
+ 
+ static bool
+ validate_attr_args (tree node[2], tree name, tree newargs[2])
+ {
+   /* First validate the arguments against those already applied to
+      the same declaration (or type).  */
+   tree self[2] = { node[0], node[0] };
+   if (node[0] != node[1] && !validate_attr_args (self, name, newargs))
+     return false;
+ 
+   if (!node[1])
+     return true;
+ 
+   /* Extract the same attribute from the previous declaration or type.  */
+   tree prevattr = decl_or_type_attrs (node[1]);
+   const char* const namestr = IDENTIFIER_POINTER (name);
+   prevattr = lookup_attribute (namestr, prevattr);
+   if (!prevattr)
+     return true;
+ 
+   /* Extract one or both attribute arguments.  */
+   tree prevargs[2];
+   prevargs[0] = TREE_VALUE (TREE_VALUE (prevattr));
+   prevargs[1] = TREE_CHAIN (TREE_VALUE (prevattr));
+   if (prevargs[1])
+     prevargs[1] = TREE_VALUE (prevargs[1]);
+ 
+   /* Both arguments must be equal or, for the second pair, neither must
+      be provided to succeed.  */
+   bool arg1eq, arg2eq;
+   if (TREE_CODE (newargs[0]) == INTEGER_CST)
+     {
+       arg1eq = tree_int_cst_equal (newargs[0], prevargs[0]);
+       if (newargs[1] && prevargs[1])
+ 	arg2eq = tree_int_cst_equal (newargs[1], prevargs[1]);
+       else
+ 	arg2eq = newargs[1] == prevargs[1];
+     }
+   else if (TREE_CODE (newargs[0]) == STRING_CST)
+     {
+       const char *s0 = TREE_STRING_POINTER (newargs[0]);
+       const char *s1 = TREE_STRING_POINTER (prevargs[0]);
+       arg1eq = strcmp (s0, s1) == 0;
+       if (newargs[1] && prevargs[1])
+ 	{
+ 	  s0 = TREE_STRING_POINTER (newargs[1]);
+ 	  s1 = TREE_STRING_POINTER (prevargs[1]);
+ 	  arg2eq = strcmp (s0, s1) == 0;
+ 	}
+       else
+ 	arg2eq = newargs[1] == prevargs[1];
+     }
+   else
+     gcc_unreachable ();
+ 
+   if (arg1eq && arg2eq)
+     return true;
+ 
+   /* If the two locations are different print a note pointing to
+      the previous one.  */
+   const location_t curloc = input_location;
+   const location_t prevloc =
+     DECL_P (node[1]) ? DECL_SOURCE_LOCATION (node[1]) : curloc;
+ 
+   /* Format the attribute specification for convenience.  */
+   char newspec[80], prevspec[80];
+   if (newargs[1])
+     snprintf (newspec, sizeof newspec, "%s (%s, %s)", namestr,
+ 	      print_generic_expr_to_str (newargs[0]),
+ 	      print_generic_expr_to_str (newargs[1]));
+   else
+     snprintf (newspec, sizeof newspec, "%s (%s)", namestr,
+ 	      print_generic_expr_to_str (newargs[0]));
+ 
+   if (prevargs[1])
+     snprintf (prevspec, sizeof prevspec, "%s (%s, %s)", namestr,
+ 	      print_generic_expr_to_str (prevargs[0]),
+ 	      print_generic_expr_to_str (prevargs[1]));
+   else
+     snprintf (prevspec, sizeof prevspec, "%s (%s)", namestr,
+ 	      print_generic_expr_to_str (prevargs[0]));
+ 
+   if (warning_at (curloc, OPT_Wattributes,
+ 		  "ignoring attribute %qs because it conflicts "
+ 		  "with previous %qs",
+ 		  newspec, prevspec)
+       && curloc != prevloc)
+     inform (prevloc, "previous declaration here");
+ 
+   return false;
+ }
+ 
+ /* Convenience wrapper for validate_attr_args to validate a single
+    attribute argument.  Used by handlers for attributes that take
+    just a single argument.  */
+ 
+ static bool
+ validate_attr_arg (tree node[2], tree name, tree newarg)
+ {
+   tree argarray[2] = { newarg, NULL_TREE };
+   return validate_attr_args (node, name, argarray);
+ }
  
  /* Attribute handlers common to C front ends.  */
  
+ /* Handle a "signed_bool_precision" attribute; arguments as in
+    struct attribute_spec.handler.  */
+ 
+ static tree
+ handle_signed_bool_precision_attribute (tree *node, tree name, tree args,
+ 					int, bool *no_add_attrs)
+ {
+   *no_add_attrs = true;
+   if (!flag_gimple)
+     {
+       warning (OPT_Wattributes, "%qE attribute ignored", name);
+       return NULL_TREE;
+     }
+ 
+   if (!TYPE_P (*node) || TREE_CODE (*node) != BOOLEAN_TYPE)
+     {
+       warning (OPT_Wattributes, "%qE attribute only supported on "
+ 	       "boolean types", name);
+       return NULL_TREE;
+     }
+ 
+   unsigned HOST_WIDE_INT prec = HOST_WIDE_INT_M1U;
+   if (tree_fits_uhwi_p (TREE_VALUE (args)))
+     prec = tree_to_uhwi (TREE_VALUE (args));
+   if (prec > MAX_FIXED_MODE_SIZE)
+     {
+       warning (OPT_Wattributes, "%qE attribute with unsupported boolean "
+ 	       "precision", name);
+       return NULL_TREE;
+     }
+ 
+   tree new_type = build_nonstandard_boolean_type (prec);
+   *node = lang_hooks.types.reconstruct_complex_type (*node, new_type);
+ 
+   return NULL_TREE;
+ }
+ 
  /* Handle a "packed" attribute; arguments as in
     struct attribute_spec.handler.  */
  
*************** handle_stack_protect_attribute (tree *no
*** 1021,1026 ****
--- 1236,1257 ----
    return NULL_TREE;
  }
  
+ /* Handle a "no_stack_protector" attribute; arguments as in
+    struct attribute_spec.handler.  */
+ 
+ static tree
+ handle_no_stack_protector_function_attribute (tree *node, tree name, tree,
+ 					      int, bool *no_add_attrs)
+ {
+   if (TREE_CODE (*node) != FUNCTION_DECL)
+     {
+       warning (OPT_Wattributes, "%qE attribute ignored", name);
+       *no_add_attrs = true;
+     }
+ 
+   return NULL_TREE;
+ }
+ 
  /* Handle a "noipa" attribute; arguments as in
     struct attribute_spec.handler.  */
  
*************** handle_unused_attribute (tree *node, tre
*** 1336,1341 ****
--- 1567,1594 ----
    return NULL_TREE;
  }
  
+ /* Handle a "retain" attribute; arguments as in
+    struct attribute_spec.handler.  */
+ 
+ static tree
+ handle_retain_attribute (tree *pnode, tree name, tree ARG_UNUSED (args),
+ 			 int ARG_UNUSED (flags), bool *no_add_attrs)
+ {
+   tree node = *pnode;
+ 
+   if (SUPPORTS_SHF_GNU_RETAIN
+       && (TREE_CODE (node) == FUNCTION_DECL
+ 	  || (VAR_P (node) && TREE_STATIC (node))))
+     ;
+   else
+     {
+       warning (OPT_Wattributes, "%qE attribute ignored", name);
+       *no_add_attrs = true;
+     }
+ 
+   return NULL_TREE;
+ }
+ 
  /* Handle a "externally_visible" attribute; arguments as in
     struct attribute_spec.handler.  */
  
*************** handle_mode_attribute (tree *node, tree
*** 1889,1899 ****
     struct attribute_spec.handler.  */
  
  static tree
! handle_section_attribute (tree *node, tree ARG_UNUSED (name), tree args,
! 			  int ARG_UNUSED (flags), bool *no_add_attrs)
  {
    tree decl = *node;
    tree res = NULL_TREE;
  
    if (!targetm_common.have_named_sections)
      {
--- 2142,2154 ----
     struct attribute_spec.handler.  */
  
  static tree
! handle_section_attribute (tree *node, tree name, tree args,
! 			  int flags, bool *no_add_attrs)
  {
    tree decl = *node;
    tree res = NULL_TREE;
+   tree argval = TREE_VALUE (args);
+   const char* new_section_name;
  
    if (!targetm_common.have_named_sections)
      {
*************** handle_section_attribute (tree *node, tr
*** 1908,1914 ****
        goto fail;
      }
  
!   if (TREE_CODE (TREE_VALUE (args)) != STRING_CST)
      {
        error ("section attribute argument not a string constant");
        goto fail;
--- 2163,2169 ----
        goto fail;
      }
  
!   if (TREE_CODE (argval) != STRING_CST)
      {
        error ("section attribute argument not a string constant");
        goto fail;
*************** handle_section_attribute (tree *node, tr
*** 1923,1937 ****
        goto fail;
      }
  
    /* The decl may have already been given a section attribute
       from a previous declaration.  Ensure they match.  */
!   if (DECL_SECTION_NAME (decl) != NULL
!       && strcmp (DECL_SECTION_NAME (decl),
! 		 TREE_STRING_POINTER (TREE_VALUE (args))) != 0)
!     {
!       error ("section of %q+D conflicts with previous declaration", *node);
!       goto fail;
!     }
  
    if (VAR_P (decl)
        && !targetm.have_tls && targetm.emutls.tmpl_section
--- 2178,2194 ----
        goto fail;
      }
  
+   new_section_name = TREE_STRING_POINTER (argval);
+ 
    /* The decl may have already been given a section attribute
       from a previous declaration.  Ensure they match.  */
!   if (const char* const old_section_name = DECL_SECTION_NAME (decl))
!     if (strcmp (old_section_name, new_section_name) != 0)
!       {
! 	error ("section of %q+D conflicts with previous declaration",
! 	       *node);
! 	goto fail;
!       }
  
    if (VAR_P (decl)
        && !targetm.have_tls && targetm.emutls.tmpl_section
*************** handle_section_attribute (tree *node, tr
*** 1941,1946 ****
--- 2198,2206 ----
        goto fail;
      }
  
+   if (!validate_attr_arg (node, name, argval))
+     goto fail;
+ 
    res = targetm.handle_generic_attribute (node, name, args, flags,
  					  no_add_attrs);
  
*************** handle_section_attribute (tree *node, tr
*** 1948,1954 ****
       final processing.  */
    if (!(*no_add_attrs))
      {
!       set_decl_section_name (decl, TREE_STRING_POINTER (TREE_VALUE (args)));
        return res;
      }
  
--- 2208,2214 ----
       final processing.  */
    if (!(*no_add_attrs))
      {
!       set_decl_section_name (decl, new_section_name);
        return res;
      }
  
*************** handle_weak_attribute (tree *node, tree
*** 2201,2264 ****
    return NULL_TREE;
  }
  
! /* Handle a "noinit" attribute; arguments as in struct
!    attribute_spec.handler.  Check whether the attribute is allowed
!    here and add the attribute to the variable decl tree or otherwise
!    issue a diagnostic.  This function checks NODE is of the expected
!    type and issues diagnostics otherwise using NAME.  If it is not of
!    the expected type *NO_ADD_ATTRS will be set to true.  */
! 
  static tree
! handle_noinit_attribute (tree * node,
! 		  tree   name,
! 		  tree   args,
! 		  int    flags ATTRIBUTE_UNUSED,
! 		  bool *no_add_attrs)
  {
!   const char *message = NULL;
    tree res = NULL_TREE;
  
!   gcc_assert (DECL_P (*node));
!   gcc_assert (args == NULL);
  
!   if (TREE_CODE (*node) != VAR_DECL)
!     message = G_("%qE attribute only applies to variables");
  
!   /* Check that it's possible for the variable to have a section.  */
!   else if ((TREE_STATIC (*node) || DECL_EXTERNAL (*node) || in_lto_p)
! 	   && DECL_SECTION_NAME (*node))
!     message = G_("%qE attribute cannot be applied to variables "
! 		 "with specific sections");
  
!   else if (!targetm.have_switchable_bss_sections)
!     message = G_("%qE attribute is specific to ELF targets");
  
!   if (message)
      {
!       warning (OPT_Wattributes, message, name);
!       *no_add_attrs = true;
      }
!   else
      {
!       res = targetm.handle_generic_attribute (node, name, args, flags,
! 					      no_add_attrs);
!       /* If the back end confirms the attribute can be added then continue onto
! 	 final processing.  */
!       if (!(*no_add_attrs))
  	{
! 	  /* If this var is thought to be common, then change this.  Common
! 	     variables are assigned to sections before the backend has a
! 	     chance to process them.  Do this only if the attribute is
! 	     valid.  */
! 	  if (DECL_COMMON (*node))
! 	    DECL_COMMON (*node) = 0;
  	}
      }
  
    return res;
  }
  
- 
  /* Handle a "noplt" attribute; arguments as in
     struct attribute_spec.handler.  */
  
--- 2461,2572 ----
    return NULL_TREE;
  }
  
! /* Handle a "noinit" or "persistent" attribute; arguments as in
!    struct attribute_spec.handler.
!    This generic handler is used for "special variable sections" that allow the
!    section name to be set using a dedicated attribute.  Additional validation
!    is performed for the specific properties of the section corresponding to the
!    attribute.
!    The ".noinit" section *is not* loaded by the program loader, and is not
!    initialized by the runtime startup code.
!    The ".persistent" section *is* loaded by the program loader, but is not
!    initialized by the runtime startup code.  */
  static tree
! handle_special_var_sec_attribute (tree *node, tree name, tree args,
! 				  int flags, bool *no_add_attrs)
  {
!   tree decl = *node;
    tree res = NULL_TREE;
  
!   /* First perform generic validation common to "noinit" and "persistent"
!      attributes.  */
!   if (!targetm_common.have_named_sections)
!     {
!       error_at (DECL_SOURCE_LOCATION (decl),
! 		"section attributes are not supported for this target");
!       goto fail;
!     }
  
!   if (!VAR_P (decl))
!     {
!       warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wattributes,
! 		  "ignoring %qE attribute not set on a variable",
! 		  name);
!       goto fail;
!     }
  
!   if (VAR_P (decl)
!       && current_function_decl != NULL_TREE
!       && !TREE_STATIC (decl))
!     {
!       error_at (DECL_SOURCE_LOCATION (decl),
! 		"%qE attribute cannot be specified for local variables",
! 		name);
!       goto fail;
!     }
  
!   if (VAR_P (decl)
!       && !targetm.have_tls && targetm.emutls.tmpl_section
!       && DECL_THREAD_LOCAL_P (decl))
!     {
!       error ("section of %q+D cannot be overridden", decl);
!       goto fail;
!     }
  
!   if (!targetm.have_switchable_bss_sections)
      {
!       error ("%qE attribute is specific to ELF targets", name);
!       goto fail;
      }
! 
!   if (TREE_READONLY (decl))
      {
!       warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wattributes,
! 		  "ignoring %qE attribute set on const variable",
! 		  name);
!       goto fail;
!     }
! 
!   /* Now validate noinit/persistent individually.  */
!   if (strcmp (IDENTIFIER_POINTER (name), "noinit") == 0)
!     {
!       if (DECL_INITIAL (decl))
  	{
! 	  warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wattributes,
! 		      "ignoring %qE attribute set on initialized variable",
! 		      name);
! 	  goto fail;
  	}
+       /* If this var is thought to be common, then change this.  "noinit"
+ 	 variables must be placed in an explicit ".noinit" section.  */
+       DECL_COMMON (decl) = 0;
      }
+   else if (strcmp (IDENTIFIER_POINTER (name), "persistent") == 0)
+     {
+       if (DECL_COMMON (decl) || DECL_INITIAL (decl) == NULL_TREE)
+ 	{
+ 	  warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wattributes,
+ 		      "ignoring %qE attribute set on uninitialized variable",
+ 		      name);
+ 	  goto fail;
+ 	}
+     }
+   else
+     gcc_unreachable ();
  
+   res = targetm.handle_generic_attribute (node, name, args, flags,
+ 					  no_add_attrs);
+ 
+   /* If the back end confirms the attribute can be added then continue onto
+      final processing.  */
+   if (!(*no_add_attrs))
+     return res;
+ 
+ fail:
+   *no_add_attrs = true;
    return res;
  }
  
  /* Handle a "noplt" attribute; arguments as in
     struct attribute_spec.handler.  */
  
*************** handle_copy_attribute (tree *node, tree
*** 2624,2632 ****
    tree attrs = TYPE_ATTRIBUTES (reftype);
  
    /* Copy type attributes from REF to DECL.  Pass in REF if it's a DECL
!      or a type but not if it's an expression.  */
    for (tree at = attrs; at; at = TREE_CHAIN (at))
!     decl_attributes (node, at, flags, EXPR_P (ref) ? NULL_TREE : ref);
  
    return NULL_TREE;
  }
--- 2932,2942 ----
    tree attrs = TYPE_ATTRIBUTES (reftype);
  
    /* Copy type attributes from REF to DECL.  Pass in REF if it's a DECL
!      or a type but not if it's an expression.  Set ATTR_FLAG_INTERNAL
!      since the attributes' arguments may be in their internal form.  */
    for (tree at = attrs; at; at = TREE_CHAIN (at))
!     decl_attributes (node, at, flags | ATTR_FLAG_INTERNAL,
! 		     EXPR_P (ref) ? NULL_TREE : ref);
  
    return NULL_TREE;
  }
*************** handle_no_profile_instrument_function_at
*** 2886,2919 ****
    return NULL_TREE;
  }
  
! /* Handle a "malloc" attribute; arguments as in
!    struct attribute_spec.handler.  */
  
  static tree
! handle_malloc_attribute (tree *node, tree name, tree ARG_UNUSED (args),
! 			 int ARG_UNUSED (flags), bool *no_add_attrs)
  {
!   if (TREE_CODE (*node) == FUNCTION_DECL
!       && POINTER_TYPE_P (TREE_TYPE (TREE_TYPE (*node))))
!     DECL_IS_MALLOC (*node) = 1;
!   else
      {
!       warning (OPT_Wattributes, "%qE attribute ignored", name);
        *no_add_attrs = true;
      }
  
    return NULL_TREE;
  }
  
! /* Handle a "alloc_size" attribute; arguments as in
!    struct attribute_spec.handler.  */
  
  static tree
  handle_alloc_size_attribute (tree *node, tree name, tree args,
  			     int ARG_UNUSED (flags), bool *no_add_attrs)
  {
!   tree decl = *node;
!   tree rettype = TREE_TYPE (decl);
    if (!POINTER_TYPE_P (rettype))
      {
        warning (OPT_Wattributes,
--- 3196,3469 ----
    return NULL_TREE;
  }
  
! /* If ALLOC_DECL and DEALLOC_DECL are a pair of user-defined functions,
!    if they are declared inline issue warnings and return null.  Otherwise
!    create attribute noinline, install it in ALLOC_DECL, and return it.
!    Otherwise return null. */
  
  static tree
! maybe_add_noinline (tree name, tree alloc_decl, tree dealloc_decl,
! 		    bool *no_add_attrs)
  {
!   if (fndecl_built_in_p (alloc_decl) || fndecl_built_in_p (dealloc_decl))
!     return NULL_TREE;
! 
!   /* When inlining (or optimization) is enabled and the allocator and
!      deallocator are not built-in functions, ignore the attribute on
!      functions declared inline since it could lead to false positives
!      when inlining one or the other call would wind up calling
!      a mismatched allocator or  deallocator.  */
!   if ((optimize && DECL_DECLARED_INLINE_P (alloc_decl))
!       || lookup_attribute ("always_inline", DECL_ATTRIBUTES (alloc_decl)))
      {
!       warning (OPT_Wattributes,
! 	       "%<%E (%E)%> attribute ignored on functions "
! 	       "declared %qs", name, DECL_NAME (dealloc_decl), "inline");
!       *no_add_attrs = true;
!       return NULL_TREE;
!     }
! 
!   if ((optimize && DECL_DECLARED_INLINE_P (dealloc_decl))
!       || lookup_attribute ("always_inline", DECL_ATTRIBUTES (dealloc_decl)))
!     {
!       warning (OPT_Wattributes,
! 	       "%<%E (%E)%> attribute ignored with deallocation "
! 	       "functions declared %qs",
! 	       name, DECL_NAME (dealloc_decl), "inline");
!       inform (DECL_SOURCE_LOCATION (dealloc_decl),
! 	      "deallocation function declared here" );
!       *no_add_attrs = true;
!       return NULL_TREE;
!     }
! 
!   /* Disable inlining for non-standard deallocators to avoid false
!      positives due to mismatches between the inlined implementation
!      of one and not the other pair of functions.  */
!   tree attr = tree_cons (get_identifier ("noinline"), NULL_TREE, NULL_TREE);
!   decl_attributes (&alloc_decl, attr, 0);
!   return attr;
! }
! 
! /* Handle the "malloc" attribute.  */
! 
! static tree
! handle_malloc_attribute (tree *node, tree name, tree args, int flags,
! 			 bool *no_add_attrs)
! {
!   if (flags & ATTR_FLAG_INTERNAL)
!     /* Recursive call.  */
!     return NULL_TREE;
! 
!   tree fndecl = *node;
! 
!   if (TREE_CODE (*node) != FUNCTION_DECL)
!     {
!       warning (OPT_Wattributes, "%qE attribute ignored; valid only "
! 	       "for functions",
! 	       name);
!       *no_add_attrs = true;
!       return NULL_TREE;
!     }
! 
!   tree rettype = TREE_TYPE (TREE_TYPE (*node));
!   if (!POINTER_TYPE_P (rettype))
!     {
!       warning (OPT_Wattributes, "%qE attribute ignored on functions "
! 	       "returning %qT; valid only for pointer return types",
! 	       name, rettype);
!       *no_add_attrs = true;
!       return NULL_TREE;
!     }
! 
!   if (!args)
!     {
!       /* Only the form of the attribute with no arguments declares
! 	 a function malloc-like.  */
!       DECL_IS_MALLOC (*node) = 1;
!       return NULL_TREE;
!     }
! 
!   tree dealloc = TREE_VALUE (args);
!   if (error_operand_p (dealloc))
!     {
!       /* If the argument is in error it will have already been diagnosed.
! 	 Avoid issuing redundant errors here.  */
!       *no_add_attrs = true;
!       return NULL_TREE;
!     }
! 
!   STRIP_NOPS (dealloc);
!   if (TREE_CODE (dealloc) == ADDR_EXPR)
!     {
!       /* In C++ the argument may be wrapped in a cast to disambiguate
! 	 one of a number of overloads (such as operator delete).  To
! 	 make things interesting, the cast looks different between
! 	 different C++ versions.  Strip it and install the attribute
! 	 with the disambiguated function.  */
!       dealloc = TREE_OPERAND (dealloc, 0);
! 
!       *no_add_attrs = true;
!       tree attr = tree_cons (NULL_TREE, dealloc, TREE_CHAIN (args));
!       attr = build_tree_list (name, attr);
!       return decl_attributes (node, attr, 0);
!     }
! 
!   if (TREE_CODE (dealloc) != FUNCTION_DECL)
!     {
!       if (TREE_CODE (dealloc) == OVERLOAD)
! 	{
! 	  /* Handle specially the common case of specifying one of a number
! 	     of overloads, such as operator delete.  */
! 	  error ("%qE attribute argument 1 is ambiguous", name);
! 	  inform (input_location,
! 		  "use a cast to the expected type to disambiguate");
! 	  *no_add_attrs = true;
! 	  return NULL_TREE;
! 	}
! 
!       error ("%qE attribute argument 1 does not name a function", name);
!       if (DECL_P (dealloc))
! 	inform (DECL_SOURCE_LOCATION (dealloc),
! 		"argument references a symbol declared here");
        *no_add_attrs = true;
+       return NULL_TREE;
      }
  
+   /* Mentioning the deallocation function qualifies as its use.  */
+   TREE_USED (dealloc) = 1;
+ 
+   tree fntype = TREE_TYPE (dealloc);
+   tree argpos = TREE_CHAIN (args) ? TREE_VALUE (TREE_CHAIN (args)) : NULL_TREE;
+   if (!argpos)
+     {
+       tree argtypes = TYPE_ARG_TYPES (fntype);
+       if (!argtypes)
+ 	{
+ 	  /* Reject functions without a prototype.  */
+ 	  error ("%qE attribute argument 1 must take a pointer "
+ 		 "type as its first argument", name);
+ 	  inform (DECL_SOURCE_LOCATION (dealloc),
+ 		  "referenced symbol declared here");
+ 	  *no_add_attrs = true;
+ 	  return NULL_TREE;
+ 	}
+ 
+       tree argtype = TREE_VALUE (argtypes);
+       if (TREE_CODE (argtype) != POINTER_TYPE)
+ 	{
+ 	  /* Reject functions that don't take a pointer as their first
+ 	     argument.  */
+ 	  error ("%qE attribute argument 1 must take a pointer type "
+ 		 "as its first argument; have %qT", name, argtype);
+ 	  inform (DECL_SOURCE_LOCATION (dealloc),
+ 		  "referenced symbol declared here");
+ 	  *no_add_attrs = true;
+ 	  return NULL_TREE;
+ 	}
+ 
+       /* Disable inlining for non-standard deallocators to avoid false
+ 	 positives (or warn if either function is explicitly inline).  */
+       tree at_noinline =
+ 	maybe_add_noinline (name, fndecl, dealloc, no_add_attrs);
+       if (*no_add_attrs)
+ 	return NULL_TREE;
+ 
+       /* Add attribute *dealloc to the deallocator function associating
+ 	 it with this one.  Ideally, the attribute would reference
+ 	 the DECL of the deallocator but since that changes for each
+ 	 redeclaration, use DECL_NAME instead.  (DECL_ASSEMBLER_NAME
+ 	 need not be set set this point and setting it here is too early.  */
+       tree attrs = build_tree_list (NULL_TREE, DECL_NAME (fndecl));
+       attrs = tree_cons (get_identifier ("*dealloc"), attrs, at_noinline);
+       decl_attributes (&dealloc, attrs, 0);
+       return NULL_TREE;
+     }
+ 
+   /* Validate the positional argument.  */
+   argpos = positional_argument (fntype, name, argpos, POINTER_TYPE);
+   if (!argpos)
+     {
+       *no_add_attrs = true;
+       return NULL_TREE;
+     }
+ 
+   /* As above, disable inlining for non-standard deallocators to avoid
+      false positives (or warn).  */
+   tree at_noinline =
+     maybe_add_noinline (name, fndecl, dealloc, no_add_attrs);
+   if (*no_add_attrs)
+     return NULL_TREE;
+ 
+   /* It's valid to declare the same function with multiple instances
+      of attribute malloc, each naming the same or different deallocator
+      functions, and each referencing either the same or a different
+      positional argument.  */
+   tree attrs = tree_cons (NULL_TREE, argpos, NULL_TREE);
+   attrs = tree_cons (NULL_TREE, DECL_NAME (fndecl), attrs);
+   attrs = tree_cons (get_identifier ("*dealloc"), attrs, at_noinline);
+   decl_attributes (&dealloc, attrs, 0);
    return NULL_TREE;
  }
  
! /* Handle the internal "*dealloc" attribute added for functions declared
!    with the one- and two-argument forms of attribute malloc.  Add it
!    to *NODE unless it's already there with the same arguments.  */
! 
! static tree
! handle_dealloc_attribute (tree *node, tree name, tree args, int,
! 			  bool *no_add_attrs)
! {
!   tree fndecl = *node;
! 
!   tree attrs = DECL_ATTRIBUTES (fndecl);
!   if (!attrs)
!     return NULL_TREE;
! 
!   tree arg = TREE_VALUE (args);
!   args = TREE_CHAIN (args);
!   tree arg_pos = args ? TREE_VALUE (args) : integer_zero_node;
! 
!   gcc_checking_assert ((DECL_P (arg)
! 			&& fndecl_built_in_p (arg, BUILT_IN_NORMAL))
! 		       || TREE_CODE (arg) == IDENTIFIER_NODE);
! 
!   const char* const namestr = IDENTIFIER_POINTER (name);
!   for (tree at = attrs; (at = lookup_attribute (namestr, at));
!        at = TREE_CHAIN (at))
!     {
!       tree alloc = TREE_VALUE (at);
!       if (!alloc)
! 	continue;
! 
!       tree pos = TREE_CHAIN (alloc);
!       alloc = TREE_VALUE (alloc);
!       pos = pos ? TREE_VALUE (pos) : integer_zero_node;
!       gcc_checking_assert ((DECL_P (alloc)
! 			    && fndecl_built_in_p (alloc, BUILT_IN_NORMAL))
! 			   || TREE_CODE (alloc) == IDENTIFIER_NODE);
! 
!       if (alloc == arg && tree_int_cst_equal (pos, arg_pos))
! 	{
! 	  /* The function already has the attribute either without any
! 	     arguments or with the same arguments as the attribute that's
! 	     being added.  Return without adding another copy.  */
! 	  *no_add_attrs = true;
! 	  return NULL_TREE;
! 	}
!     }
! 
!   return NULL_TREE;
! }
! 
! /* Handle the "alloc_size (argpos1 [, argpos2])" function type attribute.
!    *NODE is the type of the function the attribute is being applied to.  */
  
  static tree
  handle_alloc_size_attribute (tree *node, tree name, tree args,
  			     int ARG_UNUSED (flags), bool *no_add_attrs)
  {
!   tree fntype = *node;
!   tree rettype = TREE_TYPE (fntype);
    if (!POINTER_TYPE_P (rettype))
      {
        warning (OPT_Wattributes,
*************** handle_alloc_size_attribute (tree *node,
*** 2923,2928 ****
--- 3473,3479 ----
        return NULL_TREE;
      }
  
+   tree newargs[2] = { NULL_TREE, NULL_TREE };
    for (int i = 1; args; ++i)
      {
        tree pos = TREE_VALUE (args);
*************** handle_alloc_size_attribute (tree *node,
*** 2931,2960 ****
  	 the argument number in diagnostics (since there's just one
  	 mentioning it is unnecessary and coule be confusing).  */
        tree next = TREE_CHAIN (args);
!       if (tree val = positional_argument (decl, name, pos, INTEGER_TYPE,
  					  next || i > 1 ? i : 0))
! 	TREE_VALUE (args) = val;
        else
  	{
  	  *no_add_attrs = true;
! 	  break;
  	}
  
        args = next;
      }
  
    return NULL_TREE;
  }
  
! /* Handle a "alloc_align" attribute; arguments as in
!    struct attribute_spec.handler.  */
  
  static tree
  handle_alloc_align_attribute (tree *node, tree name, tree args, int,
  			      bool *no_add_attrs)
  {
!   tree decl = *node;
!   tree rettype = TREE_TYPE (decl);
    if (!POINTER_TYPE_P (rettype))
      {
        warning (OPT_Wattributes,
--- 3482,3517 ----
  	 the argument number in diagnostics (since there's just one
  	 mentioning it is unnecessary and coule be confusing).  */
        tree next = TREE_CHAIN (args);
!       if (tree val = positional_argument (fntype, name, pos, INTEGER_TYPE,
  					  next || i > 1 ? i : 0))
! 	{
! 	  TREE_VALUE (args) = val;
! 	  newargs[i - 1] = val;
! 	}
        else
  	{
  	  *no_add_attrs = true;
! 	  return NULL_TREE;
  	}
  
        args = next;
      }
  
+   if (!validate_attr_args (node, name, newargs))
+     *no_add_attrs = true;
+ 
    return NULL_TREE;
  }
  
! 
! /* Handle an "alloc_align (argpos)" attribute.  */
  
  static tree
  handle_alloc_align_attribute (tree *node, tree name, tree args, int,
  			      bool *no_add_attrs)
  {
!   tree fntype = *node;
!   tree rettype = TREE_TYPE (fntype);
    if (!POINTER_TYPE_P (rettype))
      {
        warning (OPT_Wattributes,
*************** handle_alloc_align_attribute (tree *node
*** 2964,2972 ****
        return NULL_TREE;
      }
  
!   if (!positional_argument (*node, name, TREE_VALUE (args), INTEGER_TYPE))
!     *no_add_attrs = true;
  
    return NULL_TREE;
  }
  
--- 3521,3532 ----
        return NULL_TREE;
      }
  
!   if (tree val = positional_argument (*node, name, TREE_VALUE (args),
! 				      INTEGER_TYPE))
!     if (validate_attr_arg (node, name, val))
!       return NULL_TREE;
  
+   *no_add_attrs = true;
    return NULL_TREE;
  }
  
*************** handle_assume_aligned_attribute (tree *n
*** 3042,3049 ****
    return NULL_TREE;
  }
  
! /* Handle a "fn spec" attribute; arguments as in
!    struct attribute_spec.handler.  */
  
  static tree
  handle_fnspec_attribute (tree *node ATTRIBUTE_UNUSED, tree ARG_UNUSED (name),
--- 3602,3623 ----
    return NULL_TREE;
  }
  
! /* Handle the internal-only "arg spec" attribute.  */
! 
! static tree
! handle_argspec_attribute (tree *, tree, tree args, int, bool *)
! {
!   /* Verify the attribute has one or two arguments and their kind.  */
!   gcc_assert (args && TREE_CODE (TREE_VALUE (args)) == STRING_CST);
!   for (tree next = TREE_CHAIN (args); next; next = TREE_CHAIN (next))
!     {
!       tree val = TREE_VALUE (next);
!       gcc_assert (DECL_P (val) || EXPR_P (val));
!     }
!   return NULL_TREE;
! }
! 
! /* Handle the internal-only "fn spec" attribute.  */
  
  static tree
  handle_fnspec_attribute (tree *node ATTRIBUTE_UNUSED, tree ARG_UNUSED (name),
*************** handle_vector_size_attribute (tree *node
*** 3704,3709 ****
--- 4278,4285 ----
    if (!type)
      return NULL_TREE;
  
+   gcc_checking_assert (args != NULL);
+ 
    tree new_type = build_vector_type (type, nunits);
  
    /* Build back pointers if needed.  */
*************** get_argument_type (tree functype, unsign
*** 3827,3833 ****
  	  tree argtype = function_args_iter_cond (&iter);
  	  if (VOID_TYPE_P (argtype))
  	    break;
! 	  return argtype;
  	}
      }
  
--- 4403,4410 ----
  	  tree argtype = function_args_iter_cond (&iter);
  	  if (VOID_TYPE_P (argtype))
  	    break;
! 	  if (argtype != error_mark_node)
! 	    return argtype;
  	}
      }
  
*************** get_argument_type (tree functype, unsign
*** 3835,3974 ****
    return NULL_TREE;
  }
  
! /* Appends ATTRSTR to the access string in ATTRS if one is there
!    or creates a new one and returns the concatenated access string.  */
  
  static tree
! append_access_attrs (tree t, tree attrs, const char *attrstr,
! 		     char code, HOST_WIDE_INT idxs[2])
  {
!   char attrspec[80];
!   int n1 = sprintf (attrspec, "%c%u", code, (unsigned) idxs[0] - 1);
!   int n2 = 0;
!   if (idxs[1])
!     n2 = sprintf (attrspec + n1 + 1, "%u", (unsigned) idxs[1] - 1);
  
!   size_t newlen = n1 + n2 + !!n2;
!   char *newspec = attrspec;
  
!   if (tree acs = lookup_attribute ("access", attrs))
      {
!       /* The TREE_VALUE of an attribute is a TREE_LIST whose TREE_VALUE
! 	 is the attribute argument's value.  */
!       acs = TREE_VALUE (acs);
!       gcc_assert (TREE_CODE (acs) == TREE_LIST);
!       acs = TREE_VALUE (acs);
!       gcc_assert (TREE_CODE (acs) == STRING_CST);
  
!       /* Check to make sure ATTRSPEC doesn't conflict with another
! 	 access attribute specified in ATTRS by searching the access
! 	 string in ATTRS for the position string formatted above into
! 	 ATTRSPEC, and if it's found, that the two match.  */
  
!       const char *posstr = attrspec + 1;
!       const char *str = TREE_STRING_POINTER (acs);
!       const char *pos = str;
!       for ( ; ; pos += n1)
  	{
! 	  pos = strstr (pos, posstr);
! 	  if (!pos)
! 	    break;
  
! 	  if (ISDIGIT (pos[-1]) || ISDIGIT (pos[n1 -1]))
  	    continue;
  
! 	  /* Found a matching positional argument.  */
! 	  if (*attrspec != pos[-1])
! 	    {
! 	      /* Mismatch in access mode.  */
! 	      auto_diagnostic_group d;
! 	      if (warning (OPT_Wattributes,
! 			   "attribute %qs mismatch with mode %qs",
! 			   attrstr,
! 			   (pos[-1] == 'r'
! 			    ? "read_only"
! 			    : (pos[-1] == 'w' ? "write_only" : "read_write")))
! 		  && DECL_P (t))
! 		inform (DECL_SOURCE_LOCATION (t),
! 			"previous declaration here");
! 	      return NULL_TREE;
! 	    }
  
! 	  if ((n2 && pos[n1 - 1] != ','))
! 	    {
! 	      /* Mismatch in the presence of the size argument.  */
! 	      auto_diagnostic_group d;
! 	      if (warning (OPT_Wattributes,
! 			   "attribute %qs positional argument 2 conflicts "
! 			   "with previous designation",
! 			   attrstr)
! 		  && DECL_P (t))
! 		inform (DECL_SOURCE_LOCATION (t),
! 			"previous declaration here");
! 	      return NULL_TREE;
! 	    }
  
! 	  if (!n2 && pos[n1 - 1] == ',')
! 	    {
! 	      /* Mismatch in the presence of the size argument.  */
! 	      auto_diagnostic_group d;
! 	      if (warning (OPT_Wattributes,
! 			   "attribute %qs missing positional argument 2 "
! 			   "provided in previous designation",
! 			   attrstr)
! 		  && DECL_P (t))
! 		inform (DECL_SOURCE_LOCATION (t),
! 			"previous declaration here");
! 	      return NULL_TREE;
! 	    }
  
! 	  if (n2 && strncmp (attrspec + n1 + 1, pos + n1, n2))
  	    {
! 	      /* Mismatch in the value of the size argument.  */
! 	      auto_diagnostic_group d;
! 	      if (warning (OPT_Wattributes,
! 			   "attribute %qs mismatched positional argument "
! 			   "values %i and %i",
! 			   attrstr, atoi (attrspec + n1 + 1) + 1,
! 			   atoi (pos + n1) + 1)
! 		  && DECL_P (t))
! 		inform (DECL_SOURCE_LOCATION (t),
! 			"previous declaration here");
! 	      return NULL_TREE;
  	    }
  
! 	  /* Avoid adding the same attribute specification.  */
! 	  return NULL_TREE;
  	}
  
!       /* Connect the two substrings formatted above into a single one.  */
!       if (idxs[1])
! 	attrspec[n1] = ',';
  
!       size_t len = strlen (str);
!       newspec = XNEWVEC (char, newlen + len + 1);
!       strcpy (newspec, str);
!       strcpy (newspec + len, attrspec);
!       newlen += len;
      }
-   else if (idxs[1])
-     /* Connect the two substrings formatted above into a single one.  */
-     attrspec[n1] = ',';
  
!   tree ret = build_string (newlen + 1, newspec);
!   if (newspec != attrspec)
!     XDELETEVEC (newspec);
!   return ret;
  }
  
! /* Handle the access attribute (read_only, write_only, and read_write).  */
  
  static tree
! handle_access_attribute (tree *node, tree name, tree args,
! 			 int ARG_UNUSED (flags), bool *no_add_attrs)
  {
    tree type = *node;
!   tree attrs = TYPE_ATTRIBUTES (type);
  
    *no_add_attrs = true;
  
--- 4412,4676 ----
    return NULL_TREE;
  }
  
! /* Given a function FNDECL return the function argument at the zero-
!    based position ARGNO or null if it can't be found.  */
  
  static tree
! get_argument (tree fndecl, unsigned argno)
  {
!   if (!DECL_P (fndecl))
!     return NULL_TREE;
  
!   unsigned i = 0;
!   for (tree arg = DECL_ARGUMENTS (fndecl); arg; arg = TREE_CHAIN (arg))
!     if (i++ == argno)
!       return arg;
  
!   return NULL_TREE;
! }
! 
! /* Attempt to append attribute access specification ATTRSPEC, optionally
!    described by the human-readable string ATTRSTR, for type T, to one in
!    ATTRS. VBLIST is an optional list of bounds of variable length array
!    parameters described by ATTRSTR.
!    Issue warning for conflicts and return null if any are found.
!    Return the concatenated access string on success.  */
! 
! static tree
! append_access_attr (tree node[3], tree attrs, const char *attrstr,
! 		    const char *attrspec, tree vblist = NULL_TREE)
! {
!   tree argstr = build_string (strlen (attrspec) + 1, attrspec);
!   tree ataccess = tree_cons (NULL_TREE, argstr, vblist);
!   ataccess = tree_cons (get_identifier ("access"), ataccess, NULL_TREE);
! 
!   /* The access specification being applied.  This may be an implicit
!      access spec synthesized for array (or VLA) parameters even for
!      a declaration with an explicit access spec already applied, if
!      this call corresponds to the first declaration of the function.  */
!   rdwr_map new_idxs;
!   init_attr_rdwr_indices (&new_idxs, ataccess);
! 
!   /* The current access specification alrady applied.  */
!   rdwr_map cur_idxs;
!   init_attr_rdwr_indices (&cur_idxs, attrs);
! 
!   std::string spec;
!   for (auto it = new_idxs.begin (); it != new_idxs.end (); ++it)
      {
!       const auto &newaxsref = *it;
  
!       /* The map has two equal entries for each pointer argument that
! 	 has an associated size argument.  Process just the entry for
! 	 the former.  */
!       if ((unsigned)newaxsref.first != newaxsref.second.ptrarg)
! 	continue;
  
!       const attr_access* const cura = cur_idxs.get (newaxsref.first);
!       if (!cura)
  	{
! 	  /* The new attribute needs to be added.  */
! 	  tree str = newaxsref.second.to_internal_string ();
! 	  spec += TREE_STRING_POINTER (str);
! 	  continue;
! 	}
  
!       /* The new access spec refers to an array/pointer argument for
! 	 which an access spec already exists.  Check and diagnose any
! 	 conflicts.  If no conflicts are found, merge the two.  */
!       const attr_access* const newa = &newaxsref.second;
! 
!       if (!attrstr)
! 	{
! 	  tree str = NULL_TREE;
! 	  if (newa->mode != access_deferred)
! 	    str = newa->to_external_string ();
! 	  else if (cura->mode != access_deferred)
! 	    str = cura->to_external_string ();
! 	  if (str)
! 	    attrstr = TREE_STRING_POINTER (str);
! 	}
! 
!       location_t curloc = input_location;
!       if (node[2] && DECL_P (node[2]))
! 	curloc = DECL_SOURCE_LOCATION (node[2]);
! 
!       location_t prevloc = UNKNOWN_LOCATION;
!       if (node[1] && DECL_P (node[1]))
! 	prevloc = DECL_SOURCE_LOCATION (node[1]);
! 
!       if (newa->mode != cura->mode
! 	  && newa->mode != access_deferred
! 	  && cura->mode != access_deferred
! 	  && newa->internal_p == cura->internal_p)
! 	{
! 	  /* Mismatch in access mode.  */
! 	  auto_diagnostic_group d;
! 	  if (warning_at (curloc, OPT_Wattributes,
! 			  "attribute %qs mismatch with mode %qs",
! 			  attrstr, cura->mode_names[cura->mode])
! 	      && prevloc != UNKNOWN_LOCATION)
! 	    inform (prevloc, "previous declaration here");
! 	  continue;
! 	}
! 
!       /* Set if PTRARG refers to a VLA with an unspecified bound (T[*]).
! 	 Be prepared for either CURA or NEWA to refer to it, depending
! 	 on which happens to come first in the declaration.  */
!       const bool cur_vla_ub = (cura->internal_p
! 			       && cura->sizarg == UINT_MAX
! 			       && cura->minsize == HOST_WIDE_INT_M1U);
!       const bool new_vla_ub = (newa->internal_p
! 			       && newa->sizarg == UINT_MAX
! 			       && newa->minsize == HOST_WIDE_INT_M1U);
! 
!       if (newa->sizarg != cura->sizarg
! 	  && attrstr
! 	  && (!(cur_vla_ub ^ new_vla_ub)
! 	      || (!cura->internal_p && !newa->internal_p)))
! 	{
! 	  /* Avoid diagnosing redeclarations of functions with no explicit
! 	     attribute access that add one.  */
! 	  if (newa->mode == access_deferred
! 	      && cura->mode != access_deferred
! 	      && newa->sizarg == UINT_MAX
! 	      && cura->sizarg != UINT_MAX)
  	    continue;
  
! 	  if (cura->mode == access_deferred
! 	      && newa->mode != access_deferred
! 	      && cura->sizarg == UINT_MAX
! 	      && newa->sizarg != UINT_MAX)
! 	    continue;
  
! 	  /* The two specs designate different size arguments.  It's okay
! 	     for the explicit spec to specify a size where none is provided
! 	     by the implicit (VLA) one, as in:
! 	       __attribute__ ((access (read_write, 1, 2)))
! 	       void f (int*, int);
! 	     but not for two explicit access attributes to do that.  */
! 	  bool warned = false;
  
! 	  auto_diagnostic_group d;
  
! 	  if (newa->sizarg == UINT_MAX)
! 	    /* Mismatch in the presence of the size argument.  */
! 	    warned = warning_at (curloc, OPT_Wattributes,
! 				 "attribute %qs missing positional argument 2 "
! 				 "provided in previous designation by argument "
! 				 "%u", attrstr, cura->sizarg + 1);
! 	  else if (cura->sizarg == UINT_MAX)
! 	    /* Mismatch in the presence of the size argument.  */
! 	    warned = warning_at (curloc, OPT_Wattributes,
! 				 "attribute %qs positional argument 2 "
! 				 "missing in previous designation",
! 				 attrstr);
! 	  else if (newa->internal_p || cura->internal_p)
! 	    /* Mismatch in the value of the size argument and a VLA bound.  */
! 	    warned = warning_at (curloc, OPT_Wattributes,
! 				 "attribute %qs positional argument 2 "
! 				 "conflicts with previous designation "
! 				 "by argument %u",
! 				 attrstr, cura->sizarg + 1);
! 	  else
! 	    /* Mismatch in the value of the size argument between two
! 	       explicit access attributes.  */
! 	    warned = warning_at (curloc, OPT_Wattributes,
! 				 "attribute %qs mismatched positional argument "
! 				 "values %i and %i",
! 				 attrstr, newa->sizarg + 1, cura->sizarg + 1);
! 
! 	  if (warned)
  	    {
! 	      /* If the previous declaration is a function (as opposed
! 		 to a typedef of one), find the location of the array
! 		 or pointer argument that uses the conflicting VLA bound
! 		 and point to it in the note.  */
! 	      const attr_access* const pa = cura->size ? cura : newa;
! 	      tree size = pa->size ? TREE_VALUE (pa->size) : NULL_TREE;
! 	      if (size && DECL_P (size))
! 		{
! 		  location_t argloc = UNKNOWN_LOCATION;
! 		  if (tree arg = get_argument (node[2], pa->ptrarg))
! 		    argloc = DECL_SOURCE_LOCATION (arg);
! 
! 		  gcc_rich_location richloc (DECL_SOURCE_LOCATION (size));
! 		  if (argloc != UNKNOWN_LOCATION)
! 		    richloc.add_range (argloc);
! 
! 		  inform (&richloc, "designating the bound of variable "
! 			  "length array argument %u",
! 			  pa->ptrarg + 1);
! 		}
! 	      else if (prevloc != UNKNOWN_LOCATION)
! 		inform (prevloc, "previous declaration here");
  	    }
  
! 	  continue;
  	}
  
!       if (newa->internal_p == cura->internal_p)
! 	continue;
  
!       /* Merge the CURA and NEWA.  */
!       attr_access merged = newaxsref.second;
! 
!       /* VLA seen in a declaration takes precedence.  */
!       if (cura->minsize == HOST_WIDE_INT_M1U)
! 	merged.minsize = HOST_WIDE_INT_M1U;
! 
!       /* Use the explicitly specified size positional argument.  */
!       if (cura->sizarg != UINT_MAX)
! 	merged.sizarg = cura->sizarg;
! 
!       /* Use the explicitly specified mode.  */
!       if (merged.mode == access_deferred)
! 	merged.mode = cura->mode;
! 
!       tree str = merged.to_internal_string ();
!       spec += TREE_STRING_POINTER (str);
      }
  
!   if (!spec.length ())
!     return NULL_TREE;
! 
!   return build_string (spec.length (), spec.c_str ());
  }
  
! /* Convenience wrapper for the above.  */
! 
! tree
! append_access_attr (tree node[3], tree attrs, const char *attrstr,
! 		    char code, HOST_WIDE_INT idxs[2])
! {
!   char attrspec[80];
!   int n = sprintf (attrspec, "%c%u", code, (unsigned) idxs[0] - 1);
!   if (idxs[1])
!     n += sprintf (attrspec + n, ",%u", (unsigned) idxs[1] - 1);
! 
!   return append_access_attr (node, attrs, attrstr, attrspec);
! }
! 
! /* Handle the access attribute for function type NODE[0], with the function
!    DECL optionally in NODE[1].  The handler is called both in response to
!    an explict attribute access on a declaration with a mode and one or two
!    positional arguments, and for internally synthesized access specifications
!    with a string argument optionally followd by a DECL or expression
!    representing a VLA bound.  To speed up parsing, the handler transforms
!    the attribute and its arguments into a string.  */
  
  static tree
! handle_access_attribute (tree node[3], tree name, tree args, int flags,
! 			 bool *no_add_attrs)
  {
+   tree attrs = TYPE_ATTRIBUTES (*node);
    tree type = *node;
!   if (POINTER_TYPE_P (type))
!     {
!       tree ptype = TREE_TYPE (type);
!       if (FUNC_OR_METHOD_TYPE_P (ptype))
! 	type = ptype;
!     }
  
    *no_add_attrs = true;
  
*************** handle_access_attribute (tree *node, tre
*** 3986,3996 ****
    tree access_mode = TREE_VALUE (args);
    if (TREE_CODE (access_mode) == STRING_CST)
      {
!       /* This must be a recursive call to handle the condensed internal
! 	 form of the attribute (see below).  Since all validation has
! 	 been done simply return here, accepting the attribute as is.  */
!       *no_add_attrs = false;
!       return NULL_TREE;
      }
  
    /* Set to true when the access mode has the form of a function call
--- 4688,4725 ----
    tree access_mode = TREE_VALUE (args);
    if (TREE_CODE (access_mode) == STRING_CST)
      {
!       const char* const str = TREE_STRING_POINTER (access_mode);
!       if (*str == '+')
! 	{
! 	  /* This is a request to merge an internal specification for
! 	     a function declaration involving arrays but no explicit
! 	     attribute access.  */
! 	  tree vblist = TREE_CHAIN (args);
! 	  tree axstr = append_access_attr (node, attrs, NULL, str + 1,
! 					   vblist);
! 	  if (!axstr)
! 	    return NULL_TREE;
! 
! 	  /* Replace any existing access attribute specification with
! 	     the concatenation above.  */
! 	  tree axsat = tree_cons (NULL_TREE, axstr, vblist);
! 	  axsat = tree_cons (name, axsat, NULL_TREE);
! 
! 	  /* Recursively call self to "replace" the documented/external
! 	     form of the attribute with the condensend internal form.  */
! 	  decl_attributes (node, axsat, flags | ATTR_FLAG_INTERNAL);
! 	  return NULL_TREE;
! 	}
! 
!       if (flags & ATTR_FLAG_INTERNAL)
! 	{
! 	  /* This is a recursive call to handle the condensed internal
! 	     form of the attribute (see below).  Since all validation
! 	     has been done simply return here, accepting the attribute
! 	     as is.  */
! 	  *no_add_attrs = false;
! 	  return NULL_TREE;
! 	}
      }
  
    /* Set to true when the access mode has the form of a function call
*************** handle_access_attribute (tree *node, tre
*** 4009,4014 ****
--- 4738,4750 ----
        access_mode = DECL_NAME (access_mode);
        funcall = true;
      }
+   else if (TREE_CODE (access_mode) != IDENTIFIER_NODE)
+     {
+       error ("attribute %qE mode %qE is not an identifier; expected one of "
+ 	     "%qs, %qs, %qs, or %qs", name, access_mode,
+ 	     "read_only", "read_write", "write_only", "none");
+       return NULL_TREE;
+     }
  
    const char* const access_str = IDENTIFIER_POINTER (access_mode);
    const char *ps = access_str;
*************** handle_access_attribute (tree *node, tre
*** 4019,4033 ****
  	ps += 2;
      }
  
!   const bool read_only = strncmp (ps, "read_only", 9) == 0;
!   const bool write_only = strncmp (ps, "write_only", 10) == 0;
!   if (!read_only && !write_only && strncmp (ps, "read_write", 10))
!     {
!       error ("attribute %qE invalid mode %qs; expected one of "
! 	     "%qs, %qs, or %qs", name, access_str,
! 	     "read_only", "read_write", "write_only");
!       return NULL_TREE;
!     }
  
    if (funcall)
      {
--- 4755,4781 ----
  	ps += 2;
      }
  
!   int imode;
! 
!   {
!     const int nmodes =
!       sizeof attr_access::mode_names / sizeof *attr_access::mode_names;
! 
!     for (imode = 0; imode != nmodes; ++imode)
!       if (!strncmp (ps, attr_access::mode_names[imode],
! 		    strlen (attr_access::mode_names[imode])))
! 	break;
! 
!     if (imode == nmodes)
!       {
! 	error ("attribute %qE invalid mode %qs; expected one of "
! 	       "%qs, %qs, %qs, or %qs", name, access_str,
! 	       "read_only", "read_write", "write_only", "none");
! 	return NULL_TREE;
!       }
!   }
! 
!   const ::access_mode mode = static_cast<::access_mode>(imode);
  
    if (funcall)
      {
*************** handle_access_attribute (tree *node, tre
*** 4150,4158 ****
        }
    }
  
!   if (!read_only)
      {
!       /* A read_write and write_only modes must reference non-const
  	 arguments.  */
        if (TYPE_READONLY (TREE_TYPE (argtypes[0])))
  	{
--- 4898,4906 ----
        }
    }
  
!   if (mode == access_read_write || mode == access_write_only)
      {
!       /* Read_write and write_only modes must reference non-const
  	 arguments.  */
        if (TYPE_READONLY (TREE_TYPE (argtypes[0])))
  	{
*************** handle_access_attribute (tree *node, tre
*** 4183,4216 ****
    /* Verify that the new attribute doesn't conflict with any existing
       attributes specified on previous declarations of the same type
       and if not, concatenate the two.  */
!   const char code = read_only ? 'r' : write_only ? 'w' : 'x';
!   tree new_attrs = append_access_attrs (node[0], attrs, attrstr, code, idxs);
    if (!new_attrs)
      return NULL_TREE;
  
    /* Replace any existing access attribute specification with
       the concatenation above.  */
    new_attrs = tree_cons (NULL_TREE, new_attrs, NULL_TREE);
!   new_attrs = tree_cons (name, new_attrs, attrs);
  
    if (node[1])
      {
        /* Repeat for the previously declared type.  */
        attrs = TYPE_ATTRIBUTES (TREE_TYPE (node[1]));
!       tree attrs1 = append_access_attrs (node[1], attrs, attrstr, code, idxs);
!       if (!attrs1)
  	return NULL_TREE;
  
!       attrs1 = tree_cons (NULL_TREE, attrs1, NULL_TREE);
!       new_attrs = tree_cons (name, attrs1, attrs);
      }
  
    /* Recursively call self to "replace" the documented/external form
!      of the attribute with the condensend internal form.  */
!   decl_attributes (node, new_attrs, flags);
    return NULL_TREE;
  }
  
  /* Handle a "nothrow" attribute; arguments as in
     struct attribute_spec.handler.  */
  
--- 4931,5099 ----
    /* Verify that the new attribute doesn't conflict with any existing
       attributes specified on previous declarations of the same type
       and if not, concatenate the two.  */
!   const char code = attr_access::mode_chars[mode];
!   tree new_attrs = append_access_attr (node, attrs, attrstr, code, idxs);
    if (!new_attrs)
      return NULL_TREE;
  
    /* Replace any existing access attribute specification with
       the concatenation above.  */
    new_attrs = tree_cons (NULL_TREE, new_attrs, NULL_TREE);
!   new_attrs = tree_cons (name, new_attrs, NULL_TREE);
  
    if (node[1])
      {
        /* Repeat for the previously declared type.  */
        attrs = TYPE_ATTRIBUTES (TREE_TYPE (node[1]));
!       new_attrs = append_access_attr (node, attrs, attrstr, code, idxs);
!       if (!new_attrs)
  	return NULL_TREE;
  
!       new_attrs = tree_cons (NULL_TREE, new_attrs, NULL_TREE);
!       new_attrs = tree_cons (name, new_attrs, NULL_TREE);
      }
  
    /* Recursively call self to "replace" the documented/external form
!      of the attribute with the condensed internal form.  */
!   decl_attributes (node, new_attrs, flags | ATTR_FLAG_INTERNAL);
    return NULL_TREE;
  }
  
+ /* Extract attribute "arg spec" from each FNDECL argument that has it,
+    build a single attribute access corresponding to all the arguments,
+    and return the result.  SKIP_VOIDPTR set to ignore void* parameters
+    (used for user-defined functions for which, unlike in for built-ins,
+    void* cannot be relied on to determine anything about the access
+    through it or whether it even takes place).
+ 
+    For example, the parameters in the declaration:
+ 
+      void f (int x, int y, char [x][1][y][3], char [y][2][y][5]);
+ 
+    result in the following attribute access:
+ 
+      value: "+^2[*],$0$1^3[*],$1$1"
+      list:  < <0, x> <1, y> >
+ 
+    where the list has a single value which itself is is a list each
+    of whose <node>s corresponds to one VLA bound for each of the two
+    parameters.  */
+ 
+ tree
+ build_attr_access_from_parms (tree parms, bool skip_voidptr)
+ {
+   /* Maps each named integral argument DECL seen so far to its position
+      in the argument list; used to associate VLA sizes with arguments.  */
+   hash_map<tree, unsigned> arg2pos;
+ 
+   /* The string representation of the access specification for all
+      arguments.  */
+   std::string spec;
+   unsigned argpos = 0;
+ 
+   /* A TREE_LIST of VLA bounds.  */
+   tree vblist = NULL_TREE;
+ 
+   for (tree arg = parms; arg; arg = TREE_CHAIN (arg), ++argpos)
+     {
+       if (!DECL_P (arg))
+ 	continue;
+ 
+       tree argtype = TREE_TYPE (arg);
+       if (DECL_NAME (arg) && INTEGRAL_TYPE_P (argtype))
+ 	arg2pos.put (arg, argpos);
+ 
+       tree argspec = DECL_ATTRIBUTES (arg);
+       if (!argspec)
+ 	continue;
+ 
+       if (POINTER_TYPE_P (argtype))
+ 	{
+ 	  /* void* arguments in user-defined functions could point to
+ 	     anything; skip them.  */
+ 	  tree reftype = TREE_TYPE (argtype);
+ 	  if (skip_voidptr && VOID_TYPE_P (reftype))
+ 	    continue;
+ 	}
+ 
+       /* Each parameter should have at most one "arg spec" attribute.  */
+       argspec = lookup_attribute ("arg spec", argspec);
+       if (!argspec)
+ 	continue;
+ 
+       /* Attribute arg spec should have one or two arguments.  */
+       argspec = TREE_VALUE (argspec);
+ 
+       /* The attribute arg spec string.  */
+       tree str = TREE_VALUE (argspec);
+       const char *s = TREE_STRING_POINTER (str);
+ 
+       /* Create the attribute access string from the arg spec string,
+ 	 optionally followed by position of the VLA bound argument if
+ 	 it is one.  */
+       char specbuf[80];
+       int len = snprintf (specbuf, sizeof specbuf, "%c%u%s",
+ 			  attr_access::mode_chars[access_deferred],
+ 			  argpos, s);
+       gcc_assert ((size_t) len < sizeof specbuf);
+ 
+       if (!spec.length ())
+ 	spec += '+';
+ 
+       spec += specbuf;
+ 
+       /* The (optional) list of expressions denoting the VLA bounds
+ 	 N in ARGTYPE <arg>[Ni]...[Nj]...[Nk].  */
+       tree argvbs = TREE_CHAIN (argspec);
+       if (argvbs)
+ 	{
+ 	  spec += ',';
+ 	  /* Add ARGVBS to the list.  Their presence is indicated by
+ 	     appending a comma followed by the dollar sign and, when
+ 	     it corresponds to a function parameter, the position of
+ 	     each bound Ni, so it can be distinguished from
+ 	     an unspecified bound (as in T[*]).  The list is in reverse
+ 	     order of arguments and needs to be reversed to access in
+ 	     order.  */
+ 	  vblist = tree_cons (NULL_TREE, argvbs, vblist);
+ 
+ 	  unsigned nelts = 0;
+ 	  for (tree vb = argvbs; vb; vb = TREE_CHAIN (vb), ++nelts)
+ 	    {
+ 	      tree bound = TREE_VALUE (vb);
+ 	      if (const unsigned *psizpos = arg2pos.get (bound))
+ 		{
+ 		  /* BOUND previously seen in the parameter list.  */
+ 		  TREE_PURPOSE (vb) = size_int (*psizpos);
+ 		  sprintf (specbuf, "$%u", *psizpos);
+ 		  spec += specbuf;
+ 		}
+ 	      else
+ 		{
+ 		  /* BOUND doesn't name a parameter (it could be a global
+ 		     variable or an expression such as a function call).  */
+ 		  spec += '$';
+ 		}
+ 	    }
+ 	}
+     }
+ 
+   if (!spec.length ())
+     return NULL_TREE;
+ 
+   /* Attribute access takes a two or three arguments.  Wrap VBLIST in
+      another list in case it has more nodes than would otherwise fit.  */
+   vblist = build_tree_list (NULL_TREE, vblist);
+ 
+   /* Build a single attribute access with the string describing all
+      array arguments and an optional list of any non-parameter VLA
+      bounds in order.  */
+   tree str = build_string (spec.length (), spec.c_str ());
+   tree attrargs = tree_cons (NULL_TREE, str, vblist);
+   tree name = get_identifier ("access");
+   return build_tree_list (name, attrargs);
+ }
+ 
  /* Handle a "nothrow" attribute; arguments as in
     struct attribute_spec.handler.  */
  
*************** handle_optimize_attribute (tree *node, t
*** 4448,4468 ****
        tree old_opts = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (*node);
  
        /* Save current options.  */
!       cl_optimization_save (&cur_opts, &global_options);
  
        /* If we previously had some optimization options, use them as the
  	 default.  */
        if (old_opts)
! 	cl_optimization_restore (&global_options,
  				 TREE_OPTIMIZATION (old_opts));
  
        /* Parse options, and update the vector.  */
        parse_optimize_options (args, true);
        DECL_FUNCTION_SPECIFIC_OPTIMIZATION (*node)
! 	= build_optimization_node (&global_options);
  
        /* Restore current options.  */
!       cl_optimization_restore (&global_options, &cur_opts);
      }
  
    return NULL_TREE;
--- 5331,5364 ----
        tree old_opts = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (*node);
  
        /* Save current options.  */
!       cl_optimization_save (&cur_opts, &global_options, &global_options_set);
  
        /* If we previously had some optimization options, use them as the
  	 default.  */
+       gcc_options *saved_global_options = NULL;
+       if (flag_checking)
+ 	{
+ 	  saved_global_options = XNEW (gcc_options);
+ 	  *saved_global_options = global_options;
+ 	}
+ 
        if (old_opts)
! 	cl_optimization_restore (&global_options, &global_options_set,
  				 TREE_OPTIMIZATION (old_opts));
  
        /* Parse options, and update the vector.  */
        parse_optimize_options (args, true);
        DECL_FUNCTION_SPECIFIC_OPTIMIZATION (*node)
! 	= build_optimization_node (&global_options, &global_options_set);
  
        /* Restore current options.  */
!       cl_optimization_restore (&global_options, &global_options_set,
! 			       &cur_opts);
!       if (saved_global_options != NULL)
! 	{
! 	  cl_optimization_compare (saved_global_options, &global_options);
! 	  free (saved_global_options);
! 	}
      }
  
    return NULL_TREE;
*************** handle_no_split_stack_attribute (tree *n
*** 4494,4499 ****
--- 5390,5442 ----
    return NULL_TREE;
  }
  
+ /* Handle a "zero_call_used_regs" attribute; arguments as in
+    struct attribute_spec.handler.  */
+ 
+ static tree
+ handle_zero_call_used_regs_attribute (tree *node, tree name, tree args,
+ 				      int ARG_UNUSED (flags),
+ 				      bool *no_add_attrs)
+ {
+   tree decl = *node;
+   tree id = TREE_VALUE (args);
+ 
+   if (TREE_CODE (decl) != FUNCTION_DECL)
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"%qE attribute applies only to functions", name);
+       *no_add_attrs = true;
+       return NULL_TREE;
+     }
+ 
+   if (TREE_CODE (id) != STRING_CST)
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"%qE argument not a string", name);
+       *no_add_attrs = true;
+       return NULL_TREE;
+     }
+ 
+   bool found = false;
+   for (unsigned int i = 0; zero_call_used_regs_opts[i].name != NULL; ++i)
+     if (strcmp (TREE_STRING_POINTER (id),
+ 		zero_call_used_regs_opts[i].name) == 0)
+       {
+ 	found = true;
+ 	break;
+       }
+ 
+   if (!found)
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"unrecognized %qE attribute argument %qs",
+ 		name, TREE_STRING_POINTER (id));
+       *no_add_attrs = true;
+     }
+ 
+   return NULL_TREE;
+ }
+ 
  /* Handle a "returns_nonnull" attribute; arguments as in
     struct attribute_spec.handler.  */
  
*************** handle_patchable_function_entry_attribut
*** 4560,4566 ****
--- 5503,5615 ----
  	  *no_add_attrs = true;
  	  return NULL_TREE;
  	}
+ 
+       if (tree_to_uhwi (val) > USHRT_MAX)
+ 	{
+ 	  warning (OPT_Wattributes,
+ 		   "%qE attribute argument %qE exceeds %u",
+ 		   name, val, USHRT_MAX);
+ 	  *no_add_attrs = true;
+ 	  return NULL_TREE;
+ 	}
+     }
+   return NULL_TREE;
+ }
+ 
+ /* Handle a "NSObject" attributes; arguments as in
+    struct attribute_spec.handler.  */
+ 
+ static tree
+ handle_nsobject_attribute (tree *node, tree name, tree args,
+ 			   int /*flags*/, bool *no_add_attrs)
+ {
+   *no_add_attrs = true;
+ 
+   /* This attribute only applies to typedefs (or field decls for properties),
+      we drop it otherwise - but warn about this if enabled.  */
+   if (TREE_CODE (*node) != TYPE_DECL && TREE_CODE (*node) != FIELD_DECL)
+     {
+       warning (OPT_WNSObject_attribute, "%qE attribute may be put on a"
+ 	       " typedef only; attribute is ignored", name);
+       return NULL_TREE;
      }
+ 
+   /* The original implementation only allowed pointers to records, however
+      recent implementations also allow void *.  */
+   tree type = TREE_TYPE (*node);
+   if (!type || !POINTER_TYPE_P (type)
+       || (TREE_CODE (TREE_TYPE (type)) != RECORD_TYPE
+           && !VOID_TYPE_P (TREE_TYPE (type))))
+     {
+       error ("%qE attribute is for pointer types only", name);
+       return NULL_TREE;
+     }
+ 
+   tree t = tree_cons (name, args, TYPE_ATTRIBUTES (type));
+   TREE_TYPE (*node) = build_type_attribute_variant (type, t);
+ 
+   return NULL_TREE;
+ }
+ 
+ /* Handle a "objc_root_class" attributes; arguments as in
+    struct attribute_spec.handler.  */
+ 
+ static tree
+ handle_objc_root_class_attribute (tree */*node*/, tree name, tree /*args*/,
+ 				  int /*flags*/, bool *no_add_attrs)
+ {
+   /* This has no meaning outside Objective-C.  */
+   if (!c_dialect_objc())
+     warning (OPT_Wattributes, "%qE is only applicable to Objective-C"
+ 	     " class interfaces, attribute ignored", name);
+ 
+   *no_add_attrs = true;
+   return NULL_TREE;
+ }
+ 
+ /* Handle an "objc_nullability" attribute; arguments as in
+    struct attribute_spec.handler.  */
+ 
+ static tree
+ handle_objc_nullability_attribute (tree *node, tree name, tree args,
+ 				   int /*flags*/,
+ 				   bool *no_add_attrs)
+ {
+   *no_add_attrs = true;
+ 
+   tree type = TREE_TYPE (*node);
+   if (TREE_CODE (*node) == FUNCTION_DECL)
+     type = TREE_TYPE (type);
+ 
+   if (type && !POINTER_TYPE_P (type))
+     {
+       error ("%qE cannot be applied to non-pointer type %qT", name, type);
+       return NULL_TREE;
+     }
+ 
+   /* We accept objc_nullability() with a single argument.
+      string: "unspecified", "nullable", "nonnull" or "resettable"
+      integer: 0 and 3 where the values have the same meaning as
+      the strings.  */
+   tree val = TREE_VALUE (args);
+   if (TREE_CODE (val) == INTEGER_CST)
+     {
+       val = default_conversion (val);
+       if (!tree_fits_uhwi_p (val) || tree_to_uhwi (val) > 3)
+ 	error ("%qE attribute argument %qE is not an integer constant"
+ 	       " between 0 and 3", name, val);
+       else
+ 	*no_add_attrs = false; /* OK */
+     }
+   else if (TREE_CODE (val) == STRING_CST
+ 	   && (strcmp (TREE_STRING_POINTER (val), "nullable") == 0
+ 	      || strcmp (TREE_STRING_POINTER (val), "nonnull") == 0
+ 	      || strcmp (TREE_STRING_POINTER (val), "unspecified") == 0
+ 	      || strcmp (TREE_STRING_POINTER (val), "resettable") == 0))
+     *no_add_attrs = false; /* OK */
+   else if (val != error_mark_node)
+     error ("%qE attribute argument %qE is not recognised", name, val);
+ 
    return NULL_TREE;
  }
  
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-common.c gcc-11.1.0/gcc/c-family/c-common.c
*** gcc-10.3.0/gcc/c-family/c-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines shared by all languages that are variants of C.
!    Copyright (C) 1992-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines shared by all languages that are variants of C.
!    Copyright (C) 1992-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 50,55 ****
--- 50,56 ----
  #include "spellcheck.h"
  #include "c-spellcheck.h"
  #include "selftest.h"
+ #include "debug.h"
  
  cpp_reader *parse_in;		/* Declared in c-pragma.h.  */
  
*************** static bool nonnull_check_p (tree, unsig
*** 324,330 ****
     ObjC is like C except that D_OBJC and D_CXX_OBJC are not set
     C++ --std=c++98: D_CONLY | D_CXX11 | D_CXX20 | D_OBJC
     C++ --std=c++11: D_CONLY | D_CXX20 | D_OBJC
!    C++ --std=c++2a: D_CONLY | D_OBJC
     ObjC++ is like C++ except that D_OBJC is not set
  
     If -fno-asm is used, D_ASM is added to the mask.  If
--- 325,331 ----
     ObjC is like C except that D_OBJC and D_CXX_OBJC are not set
     C++ --std=c++98: D_CONLY | D_CXX11 | D_CXX20 | D_OBJC
     C++ --std=c++11: D_CONLY | D_CXX20 | D_OBJC
!    C++ --std=c++20: D_CONLY | D_OBJC
     ObjC++ is like C++ except that D_OBJC is not set
  
     If -fno-asm is used, D_ASM is added to the mask.  If
*************** const struct c_common_resword c_common_r
*** 373,378 ****
--- 374,380 ----
    { "__auto_type",	RID_AUTO_TYPE,	D_CONLY },
    { "__bases",          RID_BASES, D_CXXONLY },
    { "__builtin_addressof", RID_ADDRESSOF, D_CXXONLY },
+   { "__builtin_bit_cast", RID_BUILTIN_BIT_CAST, D_CXXONLY },
    { "__builtin_call_with_static_chain",
      RID_BUILTIN_CALL_WITH_STATIC_CHAIN, D_CONLY },
    { "__builtin_choose_expr", RID_CHOOSE_EXPR, D_CONLY },
*************** const struct c_common_resword c_common_r
*** 526,531 ****
--- 528,535 ----
    { "while",		RID_WHILE,	0 },
    { "__is_assignable", RID_IS_ASSIGNABLE, D_CXXONLY },
    { "__is_constructible", RID_IS_CONSTRUCTIBLE, D_CXXONLY },
+   { "__is_nothrow_assignable", RID_IS_NOTHROW_ASSIGNABLE, D_CXXONLY },
+   { "__is_nothrow_constructible", RID_IS_NOTHROW_CONSTRUCTIBLE, D_CXXONLY },
  
    /* C++ transactional memory.  */
    { "synchronized",	RID_SYNCHRONIZED, D_CXX_OBJC | D_TRANSMEM },
*************** const struct c_common_resword c_common_r
*** 537,542 ****
--- 541,552 ----
    { "concept",		RID_CONCEPT,	D_CXX_CONCEPTS_FLAGS | D_CXXWARN },
    { "requires", 	RID_REQUIRES,	D_CXX_CONCEPTS_FLAGS | D_CXXWARN },
  
+   /* Modules-related keywords, these are internal unspellable tokens,
+      created by the preprocessor.  */
+   { "module ",		RID__MODULE,	D_CXX_MODULES_FLAGS | D_CXXWARN },
+   { "import ",		RID__IMPORT,	D_CXX_MODULES_FLAGS | D_CXXWARN },
+   { "export ",		RID__EXPORT,	D_CXX_MODULES_FLAGS | D_CXXWARN },
+ 
    /* Coroutines-related keywords */
    { "co_await",		RID_CO_AWAIT,	D_CXX_COROUTINES_FLAGS | D_CXXWARN },
    { "co_yield",		RID_CO_YIELD,	D_CXX_COROUTINES_FLAGS | D_CXXWARN },
*************** const struct c_common_resword c_common_r
*** 577,582 ****
--- 587,598 ----
    { "readwrite",	RID_READWRITE,		D_OBJC },
    { "retain",		RID_RETAIN,		D_OBJC },
    { "setter",		RID_SETTER,		D_OBJC },
+   /* These are Objective C implementation of nullability, accepted only in
+      specific contexts.  */
+   { "null_unspecified", RID_NULL_UNSPECIFIED,	D_OBJC },
+   { "nullable",		RID_NULLABLE,		D_OBJC },
+   { "nonnull",		RID_NONNULL,		D_OBJC },
+   { "null_resettable",	RID_NULL_RESETTABLE,	D_OBJC },
  };
  
  const unsigned int num_c_common_reswords =
*************** verify_tree (tree x, struct tlist **pbef
*** 1854,1859 ****
--- 1870,1876 ----
      {
      case CONSTRUCTOR:
      case SIZEOF_EXPR:
+     case PAREN_SIZEOF_EXPR:
        return;
  
      case COMPOUND_EXPR:
*************** verify_tree (tree x, struct tlist **pbef
*** 2039,2061 ****
      }
  }
  
  /* Try to warn for undefined behavior in EXPR due to missing sequence
     points.  */
  
  void
  verify_sequence_points (tree expr)
  {
!   struct tlist *before_sp = 0, *after_sp = 0;
  
!   warned_ids = 0;
!   save_expr_cache = 0;
!   if (tlist_firstobj == 0)
      {
        gcc_obstack_init (&tlist_obstack);
        tlist_firstobj = (char *) obstack_alloc (&tlist_obstack, 0);
      }
  
!   verify_tree (expr, &before_sp, &after_sp, 0);
    warn_for_collisions (after_sp);
    obstack_free (&tlist_obstack, tlist_firstobj);
  }
--- 2056,2100 ----
      }
  }
  
+ static constexpr size_t verify_sequence_points_limit = 1024;
+ 
+ /* Called from verify_sequence_points via walk_tree.  */
+ 
+ static tree
+ verify_tree_lim_r (tree *tp, int *walk_subtrees, void *data)
+ {
+   if (++*((size_t *) data) > verify_sequence_points_limit)
+     return integer_zero_node;
+ 
+   if (TYPE_P (*tp))
+     *walk_subtrees = 0;
+ 
+   return NULL_TREE;
+ }
+ 
  /* Try to warn for undefined behavior in EXPR due to missing sequence
     points.  */
  
  void
  verify_sequence_points (tree expr)
  {
!   tlist *before_sp = nullptr, *after_sp = nullptr;
  
!   /* verify_tree is highly recursive, and merge_tlist is O(n^2),
!      so we return early if the expression is too big.  */
!   size_t n = 0;
!   if (walk_tree (&expr, verify_tree_lim_r, &n, nullptr))
!     return;
! 
!   warned_ids = nullptr;
!   save_expr_cache = nullptr;
!   if (!tlist_firstobj)
      {
        gcc_obstack_init (&tlist_obstack);
        tlist_firstobj = (char *) obstack_alloc (&tlist_obstack, 0);
      }
  
!   verify_tree (expr, &before_sp, &after_sp, NULL_TREE);
    warn_for_collisions (after_sp);
    obstack_free (&tlist_obstack, tlist_firstobj);
  }
*************** c_switch_covers_all_cases_p (splay_tree
*** 5007,5012 ****
--- 5046,5069 ----
    return true;
  }
  
+ /* Return true if stmt can fall through.  Used by block_may_fallthru
+    default case.  */
+ 
+ bool
+ c_block_may_fallthru (const_tree stmt)
+ {
+   switch (TREE_CODE (stmt))
+     {
+     case SWITCH_STMT:
+       return (!SWITCH_STMT_ALL_CASES_P (stmt)
+ 	      || !SWITCH_STMT_NO_BREAK_P (stmt)
+ 	      || block_may_fallthru (SWITCH_STMT_BODY (stmt)));
+ 
+     default:
+       return true;
+     }
+ }
+ 
  /* Finish an expression taking the address of LABEL (an
     IDENTIFIER_NODE).  Returns an expression for the address.
  
*************** c_determine_visibility (tree decl)
*** 5289,5314 ****
  
  struct nonnull_arg_ctx
  {
    location_t loc;
    bool warned_p;
  };
  
! /* Check the argument list of a function call for null in argument slots
!    that are marked as requiring a non-null pointer argument.  The NARGS
!    arguments are passed in the array ARGARRAY.  Return true if we have
!    warned.  */
  
  static bool
! check_function_nonnull (location_t loc, tree attrs, int nargs, tree *argarray)
  {
!   tree a;
!   int i;
  
!   attrs = lookup_attribute ("nonnull", attrs);
    if (attrs == NULL_TREE)
!     return false;
  
!   a = attrs;
    /* See if any of the nonnull attributes has no arguments.  If so,
       then every pointer argument is checked (in which case the check
       for pointer type is done in check_nonnull_arg).  */
--- 5346,5398 ----
  
  struct nonnull_arg_ctx
  {
+   /* Location of the call.  */
    location_t loc;
+   /* The function whose arguments are being checked and its type (used
+      for calls through function pointers).  */
+   const_tree fndecl, fntype;
+   /* True if a warning has been issued.  */
    bool warned_p;
  };
  
! /* Check the argument list of a function call to CTX.FNDECL of CTX.FNTYPE
!    for null in argument slots that are marked as requiring a non-null
!    pointer argument.  The NARGS arguments are passed in the array ARGARRAY.
!    Return true if we have warned.  */
  
  static bool
! check_function_nonnull (nonnull_arg_ctx &ctx, int nargs, tree *argarray)
  {
!   int firstarg = 0;
!   if (TREE_CODE (ctx.fntype) == METHOD_TYPE)
!     {
!       bool closure = false;
!       if (ctx.fndecl)
! 	{
! 	  /* For certain lambda expressions the C++ front end emits calls
! 	     that pass a null this pointer as an argument named __closure
! 	     to the member operator() of empty function.  Detect those
! 	     and avoid checking them, but proceed to check the remaining
! 	     arguments.  */
! 	  tree arg0 = DECL_ARGUMENTS (ctx.fndecl);
! 	  if (tree arg0name = DECL_NAME (arg0))
! 	    closure = id_equal (arg0name, "__closure");
! 	}
  
!       /* In calls to C++ non-static member functions check the this
! 	 pointer regardless of whether the function is declared with
! 	 attribute nonnull.  */
!       firstarg = 1;
!       if (!closure)
! 	check_function_arguments_recurse (check_nonnull_arg, &ctx, argarray[0],
! 					  firstarg);
!     }
! 
!   tree attrs = lookup_attribute ("nonnull", TYPE_ATTRIBUTES (ctx.fntype));
    if (attrs == NULL_TREE)
!     return ctx.warned_p;
  
!   tree a = attrs;
    /* See if any of the nonnull attributes has no arguments.  If so,
       then every pointer argument is checked (in which case the check
       for pointer type is done in check_nonnull_arg).  */
*************** check_function_nonnull (location_t loc,
*** 5317,5332 ****
        a = lookup_attribute ("nonnull", TREE_CHAIN (a));
      while (a != NULL_TREE && TREE_VALUE (a) != NULL_TREE);
  
-   struct nonnull_arg_ctx ctx = { loc, false };
    if (a != NULL_TREE)
!     for (i = 0; i < nargs; i++)
        check_function_arguments_recurse (check_nonnull_arg, &ctx, argarray[i],
  					i + 1);
    else
      {
        /* Walk the argument list.  If we encounter an argument number we
  	 should check for non-null, do it.  */
!       for (i = 0; i < nargs; i++)
  	{
  	  for (a = attrs; ; a = TREE_CHAIN (a))
  	    {
--- 5401,5415 ----
        a = lookup_attribute ("nonnull", TREE_CHAIN (a));
      while (a != NULL_TREE && TREE_VALUE (a) != NULL_TREE);
  
    if (a != NULL_TREE)
!     for (int i = firstarg; i < nargs; i++)
        check_function_arguments_recurse (check_nonnull_arg, &ctx, argarray[i],
  					i + 1);
    else
      {
        /* Walk the argument list.  If we encounter an argument number we
  	 should check for non-null, do it.  */
!       for (int i = firstarg; i < nargs; i++)
  	{
  	  for (a = attrs; ; a = TREE_CHAIN (a))
  	    {
*************** check_nonnull_arg (void *ctx, tree param
*** 5492,5507 ****
       happen if the "nonnull" attribute was given without an operand
       list (which means to check every pointer argument).  */
  
!   if (TREE_CODE (TREE_TYPE (param)) != POINTER_TYPE)
      return;
  
    /* Diagnose the simple cases of null arguments.  */
!   if (integer_zerop (fold_for_warn (param)))
      {
!       warning_at (pctx->loc, OPT_Wnonnull, "null argument where non-null "
! 		  "required (argument %lu)", (unsigned long) param_num);
!       pctx->warned_p = true;
      }
  }
  
  /* Helper for attribute handling; fetch the operand number from
--- 5575,5619 ----
       happen if the "nonnull" attribute was given without an operand
       list (which means to check every pointer argument).  */
  
!   tree paramtype = TREE_TYPE (param);
!   if (TREE_CODE (paramtype) != POINTER_TYPE
!       && TREE_CODE (paramtype) != NULLPTR_TYPE)
      return;
  
    /* Diagnose the simple cases of null arguments.  */
!   if (!integer_zerop (fold_for_warn (param)))
!     return;
! 
!   auto_diagnostic_group adg;
! 
!   const location_t loc = EXPR_LOC_OR_LOC (param, pctx->loc);
! 
!   if (TREE_CODE (pctx->fntype) == METHOD_TYPE)
!     --param_num;
! 
!   bool warned;
!   if (param_num == 0)
      {
!       warned = warning_at (loc, OPT_Wnonnull,
! 			   "%qs pointer is null", "this");
!       if (warned && pctx->fndecl)
! 	inform (DECL_SOURCE_LOCATION (pctx->fndecl),
! 		"in a call to non-static member function %qD",
! 		pctx->fndecl);
      }
+   else
+     {
+       warned = warning_at (loc, OPT_Wnonnull,
+ 			   "argument %u null where non-null expected",
+ 			   (unsigned) param_num);
+       if (warned && pctx->fndecl)
+ 	inform (DECL_SOURCE_LOCATION (pctx->fndecl),
+ 		"in a call to function %qD declared %qs",
+ 		pctx->fndecl, "nonnull");
+     }
+ 
+   if (warned)
+     pctx->warned_p = true;
  }
  
  /* Helper for attribute handling; fetch the operand number from
*************** parse_optimize_options (tree args, bool
*** 5658,5663 ****
--- 5770,5776 ----
    decode_options (&global_options, &global_options_set,
  		  decoded_options, decoded_options_count,
  		  input_location, global_dc, NULL);
+   free (decoded_options);
  
    targetm.override_options_after_change();
  
*************** attribute_fallthrough_p (tree attr)
*** 5675,5683 ****
    tree t = lookup_attribute ("fallthrough", attr);
    if (t == NULL_TREE)
      return false;
!   /* This attribute shall appear at most once in each attribute-list.  */
    if (lookup_attribute ("fallthrough", TREE_CHAIN (t)))
!     warning (OPT_Wattributes, "%<fallthrough%> attribute specified multiple "
  	     "times");
    /* No attribute-argument-clause shall be present.  */
    else if (TREE_VALUE (t) != NULL_TREE)
--- 5788,5797 ----
    tree t = lookup_attribute ("fallthrough", attr);
    if (t == NULL_TREE)
      return false;
!   /* It is no longer true that "this attribute shall appear at most once in
!      each attribute-list", but we still give a warning.  */
    if (lookup_attribute ("fallthrough", TREE_CHAIN (t)))
!     warning (OPT_Wattributes, "attribute %<fallthrough%> specified multiple "
  	     "times");
    /* No attribute-argument-clause shall be present.  */
    else if (TREE_VALUE (t) != NULL_TREE)
*************** check_function_arguments (location_t loc
*** 5718,5728 ****
    bool warned_p = false;
  
    /* Check for null being passed in a pointer argument that must be
!      non-null.  We also need to do this if format checking is enabled.  */
! 
    if (warn_nonnull)
!     warned_p = check_function_nonnull (loc, TYPE_ATTRIBUTES (fntype),
! 				       nargs, argarray);
  
    /* Check for errors in format strings.  */
  
--- 5832,5844 ----
    bool warned_p = false;
  
    /* Check for null being passed in a pointer argument that must be
!      non-null.  In C++, this includes the this pointer.  We also need
!      to do this if format checking is enabled.  */
    if (warn_nonnull)
!     {
!       nonnull_arg_ctx ctx = { loc, fndecl, fntype, false };
!       warned_p = check_function_nonnull (ctx, nargs, argarray);
!     }
  
    /* Check for errors in format strings.  */
  
*************** check_function_arguments_recurse (void (
*** 5765,5770 ****
--- 5881,5889 ----
  				  void *ctx, tree param,
  				  unsigned HOST_WIDE_INT param_num)
  {
+   if (TREE_NO_WARNING (param))
+     return;
+ 
    if (CONVERT_EXPR_P (param)
        && (TYPE_PRECISION (TREE_TYPE (param))
  	  == TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (param, 0)))))
*************** check_function_arguments_recurse (void (
*** 5775,5781 ****
        return;
      }
  
!   if (TREE_CODE (param) == CALL_EXPR)
      {
        tree type = TREE_TYPE (TREE_TYPE (CALL_EXPR_FN (param)));
        tree attrs;
--- 5894,5900 ----
        return;
      }
  
!   if (TREE_CODE (param) == CALL_EXPR && CALL_EXPR_FN (param))
      {
        tree type = TREE_TYPE (TREE_TYPE (CALL_EXPR_FN (param)));
        tree attrs;
*************** check_builtin_function_arguments (locati
*** 6044,6054 ****
  	    }
  	  else if (TYPE_READONLY (TREE_TYPE (TREE_TYPE (args[2]))))
  	    {
! 	      error_at (ARG_LOCATION (2), "argument 3 in call to function %qE "
! 			"has pointer to %<const%> type (%qT)", fndecl,
  			TREE_TYPE (args[2]));
  	      return false;
  	    }
  	  return true;
  	}
        return false;
--- 6163,6180 ----
  	    }
  	  else if (TYPE_READONLY (TREE_TYPE (TREE_TYPE (args[2]))))
  	    {
! 	      error_at (ARG_LOCATION (2), "argument %u in call to function %qE "
! 			"has pointer to %qs type (%qT)", 3, fndecl, "const",
  			TREE_TYPE (args[2]));
  	      return false;
  	    }
+ 	  else if (TYPE_ATOMIC (TREE_TYPE (TREE_TYPE (args[2]))))
+ 	    {
+ 	      error_at (ARG_LOCATION (2), "argument %u in call to function %qE "
+ 			"has pointer to %qs type (%qT)", 3, fndecl,
+ 			"_Atomic", TREE_TYPE (args[2]));
+ 	      return false;
+ 	    }
  	  return true;
  	}
        return false;
*************** check_builtin_function_arguments (locati
*** 6082,6087 ****
--- 6208,6246 ----
  	}
        return false;
  
+     case BUILT_IN_CLEAR_PADDING:
+       if (builtin_function_validate_nargs (loc, fndecl, nargs, 1))
+ 	{
+ 	  if (!POINTER_TYPE_P (TREE_TYPE (args[0])))
+ 	    {
+ 	      error_at (ARG_LOCATION (0), "argument %u in call to function "
+ 			"%qE does not have pointer type", 1, fndecl);
+ 	      return false;
+ 	    }
+ 	  else if (!COMPLETE_TYPE_P (TREE_TYPE (TREE_TYPE (args[0]))))
+ 	    {
+ 	      error_at (ARG_LOCATION (0), "argument %u in call to function "
+ 			"%qE points to incomplete type", 1, fndecl);
+ 	      return false;
+ 	    }
+ 	  else if (TYPE_READONLY (TREE_TYPE (TREE_TYPE (args[0]))))
+ 	    {
+ 	      error_at (ARG_LOCATION (0), "argument %u in call to function %qE "
+ 			"has pointer to %qs type (%qT)", 1, fndecl, "const",
+ 			TREE_TYPE (args[0]));
+ 	      return false;
+ 	    }
+ 	  else if (TYPE_ATOMIC (TREE_TYPE (TREE_TYPE (args[0]))))
+ 	    {
+ 	      error_at (ARG_LOCATION (0), "argument %u in call to function %qE "
+ 			"has pointer to %qs type (%qT)", 1, fndecl,
+ 			"_Atomic", TREE_TYPE (args[0]));
+ 	      return false;
+ 	    }
+ 	  return true;
+ 	}
+       return false;
+ 
      default:
        return true;
      }
*************** get_atomic_generic_size (location_t loc,
*** 6904,6909 ****
--- 7063,7069 ----
  {
    unsigned int n_param;
    unsigned int n_model;
+   unsigned int outputs = 0; // bitset of output parameters
    unsigned int x;
    int size_0;
    tree type_0;
*************** get_atomic_generic_size (location_t loc,
*** 6914,6928 ****
--- 7074,7095 ----
      case BUILT_IN_ATOMIC_EXCHANGE:
        n_param = 4;
        n_model = 1;
+       outputs = 5;
        break;
      case BUILT_IN_ATOMIC_LOAD:
+       n_param = 3;
+       n_model = 1;
+       outputs = 2;
+       break;
      case BUILT_IN_ATOMIC_STORE:
        n_param = 3;
        n_model = 1;
+       outputs = 1;
        break;
      case BUILT_IN_ATOMIC_COMPARE_EXCHANGE:
        n_param = 6;
        n_model = 2;
+       outputs = 3;
        break;
      default:
        gcc_unreachable ();
*************** get_atomic_generic_size (location_t loc,
*** 7018,7023 ****
--- 7185,7223 ----
  		    function);
  	  return 0;
  	}
+ 
+       {
+ 	auto_diagnostic_group d;
+ 	int quals = TYPE_QUALS (TREE_TYPE (type));
+ 	/* Must not write to an argument of a const-qualified type.  */
+ 	if (outputs & (1 << x) && quals & TYPE_QUAL_CONST)
+ 	  {
+ 	    if (c_dialect_cxx ())
+ 	      {
+ 		error_at (loc, "argument %d of %qE must not be a pointer to "
+ 			  "a %<const%> type", x + 1, function);
+ 		return 0;
+ 	      }
+ 	    else
+ 	      pedwarn (loc, OPT_Wincompatible_pointer_types, "argument %d "
+ 		       "of %qE discards %<const%> qualifier", x + 1,
+ 		       function);
+ 	  }
+ 	/* Only the first argument is allowed to be volatile.  */
+ 	if (x > 0 && quals & TYPE_QUAL_VOLATILE)
+ 	  {
+ 	    if (c_dialect_cxx ())
+ 	      {
+ 		error_at (loc, "argument %d of %qE must not be a pointer to "
+ 			  "a %<volatile%> type", x + 1, function);
+ 		return 0;
+ 	      }
+ 	    else
+ 	      pedwarn (loc, OPT_Wincompatible_pointer_types, "argument %d "
+ 		       "of %qE discards %<volatile%> qualifier", x + 1,
+ 		       function);
+ 	  }
+       }
      }
  
    /* Check memory model parameters for validity.  */
*************** set_underlying_type (tree x)
*** 7717,7723 ****
  {
    if (x == error_mark_node)
      return;
!   if (DECL_IS_BUILTIN (x) && TREE_CODE (TREE_TYPE (x)) != ARRAY_TYPE)
      {
        if (TYPE_NAME (TREE_TYPE (x)) == 0)
  	TYPE_NAME (TREE_TYPE (x)) = x;
--- 7917,7923 ----
  {
    if (x == error_mark_node)
      return;
!   if (DECL_IS_UNDECLARED_BUILTIN (x) && TREE_CODE (TREE_TYPE (x)) != ARRAY_TYPE)
      {
        if (TYPE_NAME (TREE_TYPE (x)) == 0)
  	TYPE_NAME (TREE_TYPE (x)) = x;
*************** user_facing_original_type_p (const_tree
*** 7751,7757 ****
    tree decl = TYPE_NAME (type);
  
    /* Look through any typedef in "user" code.  */
!   if (!DECL_IN_SYSTEM_HEADER (decl) && !DECL_IS_BUILTIN (decl))
      return true;
  
    /* If the original type is also named and is in the user namespace,
--- 7951,7957 ----
    tree decl = TYPE_NAME (type);
  
    /* Look through any typedef in "user" code.  */
!   if (!DECL_IN_SYSTEM_HEADER (decl) && !DECL_IS_UNDECLARED_BUILTIN (decl))
      return true;
  
    /* If the original type is also named and is in the user namespace,
*************** void
*** 8023,8030 ****
--- 8223,8237 ----
  c_common_init_ts (void)
  {
    MARK_TS_EXP (SIZEOF_EXPR);
+   MARK_TS_EXP (PAREN_SIZEOF_EXPR);
    MARK_TS_EXP (C_MAYBE_CONST_EXPR);
    MARK_TS_EXP (EXCESS_PRECISION_EXPR);
+   MARK_TS_EXP (BREAK_STMT);
+   MARK_TS_EXP (CONTINUE_STMT);
+   MARK_TS_EXP (DO_STMT);
+   MARK_TS_EXP (FOR_STMT);
+   MARK_TS_EXP (SWITCH_STMT);
+   MARK_TS_EXP (WHILE_STMT);
  }
  
  /* Build a user-defined numeric literal out of an integer constant type VALUE
*************** reject_gcc_builtin (const_tree expr, loc
*** 8240,8252 ****
    if (TREE_TYPE (expr)
        && TREE_CODE (TREE_TYPE (expr)) == FUNCTION_TYPE
        && TREE_CODE (expr) == FUNCTION_DECL
!       /* The intersection of DECL_BUILT_IN and DECL_IS_BUILTIN avoids
  	 false positives for user-declared built-ins such as abs or
  	 strlen, and for C++ operators new and delete.
  	 The c_decl_implicit() test avoids false positives for implicitly
  	 declared built-ins with library fallbacks (such as abs).  */
        && fndecl_built_in_p (expr)
!       && DECL_IS_BUILTIN (expr)
        && !c_decl_implicit (expr)
        && !DECL_ASSEMBLER_NAME_SET_P (expr))
      {
--- 8447,8459 ----
    if (TREE_TYPE (expr)
        && TREE_CODE (TREE_TYPE (expr)) == FUNCTION_TYPE
        && TREE_CODE (expr) == FUNCTION_DECL
!       /* The intersection of DECL_BUILT_IN and DECL_IS_UNDECLARED_BUILTIN avoids
  	 false positives for user-declared built-ins such as abs or
  	 strlen, and for C++ operators new and delete.
  	 The c_decl_implicit() test avoids false positives for implicitly
  	 declared built-ins with library fallbacks (such as abs).  */
        && fndecl_built_in_p (expr)
!       && DECL_IS_UNDECLARED_BUILTIN (expr)
        && !c_decl_implicit (expr)
        && !DECL_ASSEMBLER_NAME_SET_P (expr))
      {
*************** c_family_tests (void)
*** 8674,8681 ****
  #endif /* #if CHECKING_P */
  
  /* Attempt to locate a suitable location within FILE for a
!    #include directive to be inserted before.  FILE should
!    be a string from libcpp (pointer equality is used).
     LOC is the location of the relevant diagnostic.
  
     Attempt to return the location within FILE immediately
--- 8881,8887 ----
  #endif /* #if CHECKING_P */
  
  /* Attempt to locate a suitable location within FILE for a
!    #include directive to be inserted before.  
     LOC is the location of the relevant diagnostic.
  
     Attempt to return the location within FILE immediately
*************** try_to_locate_new_include_insertion_poin
*** 8710,8722 ****
  
        if (const line_map_ordinary *from
  	  = linemap_included_from_linemap (line_table, ord_map))
! 	if (from->to_file == file)
  	  {
  	    last_include_ord_map = from;
  	    last_ord_map_after_include = NULL;
  	  }
  
!       if (ord_map->to_file == file)
  	{
  	  if (!first_ord_map_in_file)
  	    first_ord_map_in_file = ord_map;
--- 8916,8932 ----
  
        if (const line_map_ordinary *from
  	  = linemap_included_from_linemap (line_table, ord_map))
! 	/* We cannot use pointer equality, because with preprocessed
! 	   input all filename strings are unique.  */
! 	if (0 == strcmp (from->to_file, file))
  	  {
  	    last_include_ord_map = from;
  	    last_ord_map_after_include = NULL;
  	  }
  
!       /* Likewise, use strcmp, and reject any line-zero introductory
! 	 map.  */
!       if (ord_map->to_line && 0 == strcmp (ord_map->to_file, file))
  	{
  	  if (!first_ord_map_in_file)
  	    first_ord_map_in_file = ord_map;
*************** braced_lists_to_strings (tree type, tree
*** 8993,8996 ****
--- 9203,9223 ----
    return braced_lists_to_strings (type, ctor, false);
  }
  
+ 
+ /* Emit debug for functions before finalizing early debug.  */
+ 
+ void
+ c_common_finalize_early_debug (void)
+ {
+   /* Emit early debug for reachable functions, and by consequence,
+      locally scoped symbols.  Also emit debug for extern declared
+      functions that are still reachable at this point.  */
+   struct cgraph_node *cnode;
+   FOR_EACH_FUNCTION (cnode)
+     if (!cnode->alias && !cnode->thunk
+ 	&& (cnode->has_gimple_body_p ()
+ 	    || !DECL_IS_UNDECLARED_BUILTIN (cnode->decl)))
+       (*debug_hooks->early_global_decl) (cnode->decl);
+ }
+ 
  #include "gt-c-family-c-common.h"
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-common.def gcc-11.1.0/gcc/c-family/c-common.def
*** gcc-10.3.0/gcc/c-family/c-common.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-common.def	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* This file contains the definitions and documentation for the
     additional tree codes used in the GNU C compiler (see tree.def
     for the standard codes).
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
     Written by Benjamin Chelf <chelf@codesourcery.com>
  
  This file is part of GCC.
--- 1,7 ----
  /* This file contains the definitions and documentation for the
     additional tree codes used in the GNU C compiler (see tree.def
     for the standard codes).
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
     Written by Benjamin Chelf <chelf@codesourcery.com>
  
  This file is part of GCC.
*************** DEFTREECODE (USERDEF_LITERAL, "userdef_l
*** 55,60 ****
--- 55,87 ----
     or for the purpose of -Wsizeof-pointer-memaccess warning.  */
  DEFTREECODE (SIZEOF_EXPR, "sizeof_expr", tcc_expression, 1)
  
+ /* Like above, but enclosed in parentheses.  Used to suppress warnings.  */
+ DEFTREECODE (PAREN_SIZEOF_EXPR, "paren_sizeof_expr", tcc_expression, 1)
+ 
+ /* Used to represent a `for' statement. The operands are
+    FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY, and FOR_SCOPE,
+    respectively.  */
+ DEFTREECODE (FOR_STMT, "for_stmt", tcc_statement, 5)
+ 
+ /* Used to represent a 'while' statement. The operands are WHILE_COND
+    and WHILE_BODY, respectively.  */
+ DEFTREECODE (WHILE_STMT, "while_stmt", tcc_statement, 2)
+ 
+ /* Used to represent a 'do' statement. The operands are DO_COND and
+    DO_BODY, respectively.  */
+ DEFTREECODE (DO_STMT, "do_stmt", tcc_statement, 2)
+ 
+ /* Used to represent a 'break' statement.  */
+ DEFTREECODE (BREAK_STMT, "break_stmt", tcc_statement, 0)
+ 
+ /* Used to represent a 'continue' statement.  */
+ DEFTREECODE (CONTINUE_STMT, "continue_stmt", tcc_statement, 0)
+ 
+ /* Used to represent a 'switch' statement. The operands are
+    SWITCH_STMT_COND, SWITCH_STMT_BODY, SWITCH_STMT_TYPE, and
+    SWITCH_STMT_SCOPE, respectively.  */
+ DEFTREECODE (SWITCH_STMT, "switch_stmt", tcc_statement, 4)
+ 
  /*
  Local variables:
  mode:c
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-common.h gcc-11.1.0/gcc/c-family/c-common.h
*** gcc-10.3.0/gcc/c-family/c-common.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-common.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for c-common.c.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for c-common.c.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** enum rid
*** 87,92 ****
--- 87,97 ----
    RID_ASSIGN, RID_RETAIN, RID_COPY,
    RID_PROPATOMIC, RID_NONATOMIC,
  
+   /* ObjC nullability support keywords that also can appear in the
+      property attribute context.  These values should remain contiguous
+      with the other property attributes.  */
+   RID_NULL_UNSPECIFIED, RID_NULLABLE, RID_NONNULL, RID_NULL_RESETTABLE,
+ 
    /* C (reserved and imaginary types not implemented, so any use is a
       syntax error) */
    RID_IMAGINARY,
*************** enum rid
*** 164,170 ****
    RID_HAS_NOTHROW_COPY,        RID_HAS_TRIVIAL_ASSIGN,
    RID_HAS_TRIVIAL_CONSTRUCTOR, RID_HAS_TRIVIAL_COPY,
    RID_HAS_TRIVIAL_DESTRUCTOR,  RID_HAS_UNIQUE_OBJ_REPRESENTATIONS,
!   RID_HAS_VIRTUAL_DESTRUCTOR,
    RID_IS_ABSTRACT,             RID_IS_AGGREGATE,
    RID_IS_BASE_OF,              RID_IS_CLASS,
    RID_IS_EMPTY,                RID_IS_ENUM,
--- 169,175 ----
    RID_HAS_NOTHROW_COPY,        RID_HAS_TRIVIAL_ASSIGN,
    RID_HAS_TRIVIAL_CONSTRUCTOR, RID_HAS_TRIVIAL_COPY,
    RID_HAS_TRIVIAL_DESTRUCTOR,  RID_HAS_UNIQUE_OBJ_REPRESENTATIONS,
!   RID_HAS_VIRTUAL_DESTRUCTOR,  RID_BUILTIN_BIT_CAST,
    RID_IS_ABSTRACT,             RID_IS_AGGREGATE,
    RID_IS_BASE_OF,              RID_IS_CLASS,
    RID_IS_EMPTY,                RID_IS_ENUM,
*************** enum rid
*** 176,181 ****
--- 181,187 ----
    RID_IS_TRIVIALLY_COPYABLE,
    RID_IS_UNION,                RID_UNDERLYING_TYPE,
    RID_IS_ASSIGNABLE,           RID_IS_CONSTRUCTIBLE,
+   RID_IS_NOTHROW_ASSIGNABLE,   RID_IS_NOTHROW_CONSTRUCTIBLE,
  
    /* C++11 */
    RID_CONSTEXPR, RID_DECLTYPE, RID_NOEXCEPT, RID_NULLPTR, RID_STATIC_ASSERT,
*************** enum rid
*** 189,194 ****
--- 195,203 ----
    /* C++ concepts */
    RID_CONCEPT, RID_REQUIRES,
  
+   /* C++ modules.  */
+   RID__MODULE, RID__IMPORT, RID__EXPORT, /* Internal tokens.  */
+ 
    /* C++ coroutines */
    RID_CO_AWAIT, RID_CO_YIELD, RID_CO_RETURN,
  
*************** enum rid
*** 263,269 ****
    RID_FIRST_PQ = RID_IN,
    RID_LAST_PQ = RID_ONEWAY,
    RID_FIRST_PATTR = RID_GETTER,
!   RID_LAST_PATTR = RID_NONATOMIC
  };
  
  #define OBJC_IS_AT_KEYWORD(rid) \
--- 272,278 ----
    RID_FIRST_PQ = RID_IN,
    RID_LAST_PQ = RID_ONEWAY,
    RID_FIRST_PATTR = RID_GETTER,
!   RID_LAST_PATTR = RID_NULL_RESETTABLE
  };
  
  #define OBJC_IS_AT_KEYWORD(rid) \
*************** enum rid
*** 274,282 ****
    ((unsigned int) (rid) >= (unsigned int) RID_FIRST_PQ && \
     (unsigned int) (rid) <= (unsigned int) RID_LAST_PQ)
  
  #define OBJC_IS_PATTR_KEYWORD(rid) \
!   ((unsigned int) (rid) >= (unsigned int) RID_FIRST_PATTR && \
!    (unsigned int) (rid) <= (unsigned int) RID_LAST_PATTR)
  
  /* OBJC_IS_CXX_KEYWORD recognizes the 'CXX_OBJC' keywords (such as
     'class') which are shared in a subtle way between Objective-C and
--- 283,293 ----
    ((unsigned int) (rid) >= (unsigned int) RID_FIRST_PQ && \
     (unsigned int) (rid) <= (unsigned int) RID_LAST_PQ)
  
+ /* Keywords permitted in an @property attribute context.  */
  #define OBJC_IS_PATTR_KEYWORD(rid) \
!   ((((unsigned int) (rid) >= (unsigned int) RID_FIRST_PATTR && \
!      (unsigned int) (rid) <= (unsigned int) RID_LAST_PATTR)) \
!    || rid == RID_CLASS)
  
  /* OBJC_IS_CXX_KEYWORD recognizes the 'CXX_OBJC' keywords (such as
     'class') which are shared in a subtle way between Objective-C and
*************** enum c_tree_index
*** 356,368 ****
  
      CTI_DEFAULT_FUNCTION_TYPE,
  
      /* These are not types, but we have to look them up all the time.  */
      CTI_FUNCTION_NAME_DECL,
      CTI_PRETTY_FUNCTION_NAME_DECL,
      CTI_C99_FUNCTION_NAME_DECL,
-     CTI_SAVED_FUNCTION_NAME_DECLS,
  
!     CTI_NULL,
  
      CTI_MAX
  };
--- 367,383 ----
  
      CTI_DEFAULT_FUNCTION_TYPE,
  
+     CTI_NULL,
+ 
      /* These are not types, but we have to look them up all the time.  */
      CTI_FUNCTION_NAME_DECL,
      CTI_PRETTY_FUNCTION_NAME_DECL,
      CTI_C99_FUNCTION_NAME_DECL,
  
!     CTI_MODULE_HWM,
!     /* Below here entities change during compilation.  */
! 
!     CTI_SAVED_FUNCTION_NAME_DECLS,
  
      CTI_MAX
  };
*************** extern machine_mode c_default_pointer_mo
*** 437,445 ****
--- 452,462 ----
  #define D_CXX_CHAR8_T	0X1000	/* In C++, only with -fchar8_t.  */
  #define D_CXX20		0x2000  /* In C++, C++20 only.  */
  #define D_CXX_COROUTINES 0x4000  /* In C++, only with coroutines.  */
+ #define D_CXX_MODULES	0x8000  /* In C++, only with modules.  */
  
  #define D_CXX_CONCEPTS_FLAGS D_CXXONLY | D_CXX_CONCEPTS
  #define D_CXX_CHAR8_T_FLAGS D_CXXONLY | D_CXX_CHAR8_T
+ #define D_CXX_MODULES_FLAGS (D_CXXONLY | D_CXX_MODULES)
  #define D_CXX_COROUTINES_FLAGS (D_CXXONLY | D_CXX_COROUTINES)
  
  /* The reserved keyword table.  */
*************** enum cxx_dialect {
*** 720,727 ****
    cxx14,
    /* C++17 */
    cxx17,
!   /* C++2a (C++20?) */
!   cxx2a
  };
  
  /* The C++ dialect being used. C++98 is the default.  */
--- 737,746 ----
    cxx14,
    /* C++17 */
    cxx17,
!   /* C++20 */
!   cxx20,
!   /* C++23 */
!   cxx23
  };
  
  /* The C++ dialect being used. C++98 is the default.  */
*************** extern bool bool_promoted_to_int_p (tree
*** 885,890 ****
--- 904,911 ----
  extern tree fold_for_warn (tree);
  extern tree c_common_get_narrower (tree, int *);
  extern bool get_attribute_operand (tree, unsigned HOST_WIDE_INT *);
+ extern void c_common_finalize_early_debug (void);
+ 
  
  #define c_sizeof(LOC, T)  c_sizeof_or_alignof_type (LOC, T, true, false, 1)
  #define c_alignof(LOC, T) c_sizeof_or_alignof_type (LOC, T, false, false, 1)
*************** extern int case_compare (splay_tree_key,
*** 1006,1011 ****
--- 1027,1033 ----
  
  extern tree c_add_case_label (location_t, splay_tree, tree, tree, tree);
  extern bool c_switch_covers_all_cases_p (splay_tree, tree);
+ extern bool c_block_may_fallthru (const_tree);
  
  extern tree build_function_call (location_t, tree, tree);
  
*************** extern bool c_cpp_diagnostic (cpp_reader
*** 1036,1042 ****
  			      enum cpp_warning_reason, rich_location *,
  			      const char *, va_list *)
       ATTRIBUTE_GCC_DIAG(5,0);
! extern int c_common_has_attribute (cpp_reader *);
  extern int c_common_has_builtin (cpp_reader *);
  
  extern bool parse_optimize_options (tree, bool);
--- 1058,1064 ----
  			      enum cpp_warning_reason, rich_location *,
  			      const char *, va_list *)
       ATTRIBUTE_GCC_DIAG(5,0);
! extern int c_common_has_attribute (cpp_reader *, bool);
  extern int c_common_has_builtin (cpp_reader *);
  
  extern bool parse_optimize_options (tree, bool);
*************** class substring_loc;
*** 1113,1119 ****
  extern const char *c_get_substring_location (const substring_loc &substr_loc,
  					     location_t *out_loc);
  
! /* In c-gimplify.c  */
  extern void c_genericize (tree);
  extern int c_gimplify_expr (tree *, gimple_seq *, gimple_seq *);
  extern tree c_build_bind_expr (location_t, tree, tree);
--- 1135,1149 ----
  extern const char *c_get_substring_location (const substring_loc &substr_loc,
  					     location_t *out_loc);
  
! /* In c-gimplify.c.  */
! typedef struct bc_state
! {
!   tree bc_label[2];
! } bc_state_t;
! extern void save_bc_state (bc_state_t *);
! extern void restore_bc_state (bc_state_t *);
! extern tree c_genericize_control_stmt (tree *, int *, void *,
! 				       walk_tree_fn, walk_tree_lh);
  extern void c_genericize (tree);
  extern int c_gimplify_expr (tree *, gimple_seq *, gimple_seq *);
  extern tree c_build_bind_expr (location_t, tree, tree);
*************** extern void c_finish_omp_taskyield (loca
*** 1196,1202 ****
  extern tree c_finish_omp_for (location_t, enum tree_code, tree, tree, tree,
  			      tree, tree, tree, tree, bool);
  extern bool c_omp_check_loop_iv (tree, tree, walk_tree_lh);
! extern bool c_omp_check_loop_iv_exprs (location_t, tree, tree, tree, tree,
  				       walk_tree_lh);
  extern tree c_finish_oacc_wait (location_t, tree, tree);
  extern tree c_oacc_split_loop_clauses (tree, tree *, bool);
--- 1226,1232 ----
  extern tree c_finish_omp_for (location_t, enum tree_code, tree, tree, tree,
  			      tree, tree, tree, tree, bool);
  extern bool c_omp_check_loop_iv (tree, tree, walk_tree_lh);
! extern bool c_omp_check_loop_iv_exprs (location_t, tree, int, tree, tree, tree,
  				       walk_tree_lh);
  extern tree c_finish_oacc_wait (location_t, tree, tree);
  extern tree c_oacc_split_loop_clauses (tree, tree *, bool);
*************** extern tree c_omp_declare_simd_clauses_t
*** 1206,1214 ****
--- 1236,1246 ----
  extern void c_omp_declare_simd_clauses_to_decls (tree, tree);
  extern bool c_omp_predefined_variable (tree);
  extern enum omp_clause_default_kind c_omp_predetermined_sharing (tree);
+ extern enum omp_clause_defaultmap_kind c_omp_predetermined_mapping (tree);
  extern tree c_omp_check_context_selector (location_t, tree);
  extern void c_omp_mark_declare_variant (location_t, tree, tree);
  extern const char *c_omp_map_clause_name (tree, bool);
+ extern void c_omp_adjust_map_clauses (tree, bool);
  
  /* Return next tree in the chain for chain_next walking of tree nodes.  */
  static inline tree
*************** extern tree build_userdef_literal (tree
*** 1276,1281 ****
--- 1308,1355 ----
  				   enum overflow_type overflow,
  				   tree num_string);
  
+ 
+ /* WHILE_STMT accessors. These give access to the condition of the
+    while statement and the body of the while statement, respectively.  */
+ #define WHILE_COND(NODE)	TREE_OPERAND (WHILE_STMT_CHECK (NODE), 0)
+ #define WHILE_BODY(NODE)	TREE_OPERAND (WHILE_STMT_CHECK (NODE), 1)
+ 
+ /* DO_STMT accessors. These give access to the condition of the do
+    statement and the body of the do statement, respectively.  */
+ #define DO_COND(NODE)		TREE_OPERAND (DO_STMT_CHECK (NODE), 0)
+ #define DO_BODY(NODE)		TREE_OPERAND (DO_STMT_CHECK (NODE), 1)
+ 
+ /* FOR_STMT accessors. These give access to the init statement,
+    condition, update expression, and body of the for statement,
+    respectively.  */
+ #define FOR_INIT_STMT(NODE)	TREE_OPERAND (FOR_STMT_CHECK (NODE), 0)
+ #define FOR_COND(NODE)		TREE_OPERAND (FOR_STMT_CHECK (NODE), 1)
+ #define FOR_EXPR(NODE)		TREE_OPERAND (FOR_STMT_CHECK (NODE), 2)
+ #define FOR_BODY(NODE)		TREE_OPERAND (FOR_STMT_CHECK (NODE), 3)
+ #define FOR_SCOPE(NODE)		TREE_OPERAND (FOR_STMT_CHECK (NODE), 4)
+ 
+ #define SWITCH_STMT_COND(NODE)	TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 0)
+ #define SWITCH_STMT_BODY(NODE)	TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 1)
+ #define SWITCH_STMT_TYPE(NODE)	TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 2)
+ #define SWITCH_STMT_SCOPE(NODE)	TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 3)
+ /* True if there are case labels for all possible values of switch cond, either
+    because there is a default: case label or because the case label ranges cover
+    all values.  */
+ #define SWITCH_STMT_ALL_CASES_P(NODE) \
+   TREE_LANG_FLAG_0 (SWITCH_STMT_CHECK (NODE))
+ /* True if the body of a switch stmt contains no BREAK_STMTs.  */
+ #define SWITCH_STMT_NO_BREAK_P(NODE) \
+   TREE_LANG_FLAG_2 (SWITCH_STMT_CHECK (NODE))
+ 
+ 
+ /* Nonzero if NODE is the target for genericization of 'break' stmts.  */
+ #define LABEL_DECL_BREAK(NODE) \
+   DECL_LANG_FLAG_0 (LABEL_DECL_CHECK (NODE))
+ 
+ /* Nonzero if NODE is the target for genericization of 'continue' stmts.  */
+ #define LABEL_DECL_CONTINUE(NODE) \
+   DECL_LANG_FLAG_1 (LABEL_DECL_CHECK (NODE))
+ 
  extern bool convert_vector_to_array_for_subscript (location_t, tree *, tree);
  
  /* Possibe cases of scalar_to_vector conversion.  */
*************** extern void c_do_switch_warnings (splay_
*** 1318,1323 ****
--- 1392,1399 ----
  extern void warn_for_omitted_condop (location_t, tree);
  extern bool warn_for_restrict (unsigned, tree *, unsigned);
  extern void warn_for_address_or_pointer_of_packed_member (tree, tree);
+ extern void warn_parm_array_mismatch (location_t, tree, tree);
+ extern void maybe_warn_sizeof_array_div (location_t, tree, tree, tree, tree);
  
  /* Places where an lvalue, or modifiable lvalue, may be required.
     Used to select diagnostic messages in lvalue_error and
*************** extern tree find_tm_attribute (tree);
*** 1372,1377 ****
--- 1448,1455 ----
  extern const struct attribute_spec::exclusions attr_cold_hot_exclusions[];
  extern const struct attribute_spec::exclusions attr_noreturn_exclusions[];
  extern tree handle_noreturn_attribute (tree *, tree, tree, int, bool *);
+ extern bool has_attribute (location_t, tree, tree, tree (*)(tree));
+ extern tree build_attr_access_from_parms (tree, bool);
  
  /* In c-format.c.  */
  extern bool valid_format_string_type_p (tree);
*************** extern void maybe_suggest_missing_token_
*** 1400,1407 ****
  						   location_t prev_token_loc);
  extern tree braced_lists_to_strings (tree, tree);
  
- extern bool has_attribute (location_t, tree, tree, tree (*)(tree));
- 
  #if CHECKING_P
  namespace selftest {
    /* Declarations for specific families of tests within c-family,
--- 1478,1483 ----
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-cppbuiltin.c gcc-11.1.0/gcc/c-family/c-cppbuiltin.c
*** gcc-10.3.0/gcc/c-family/c-cppbuiltin.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-cppbuiltin.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Define builtin-in macros for the C family front ends.
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Define builtin-in macros for the C family front ends.
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 32,37 ****
--- 32,38 ----
  #include "debug.h"		/* For dwarf2out_do_cfi_asm.  */
  #include "common/common-target.h"
  #include "cppbuiltin.h"
+ #include "configargs.h"
  
  #ifndef TARGET_OS_CPP_BUILTINS
  # define TARGET_OS_CPP_BUILTINS()
*************** builtin_define_float_constants (const ch
*** 316,321 ****
--- 317,332 ----
        sprintf (name, "__FP_FAST_FMA%s", fma_suffix);
        builtin_define_with_int_value (name, 1);
      }
+ 
+   /* For C2x *_IS_IEC_60559.  0 means the type does not match an IEC
+      60559 format, 1 that it matches a format but not operations and 2
+      that it matches a format and operations (but may not conform to
+      Annex F; we take this as meaning exceptions and rounding modes
+      need not be supported).  */
+   sprintf (name, "__%s_IS_IEC_60559__", name_prefix);
+   builtin_define_with_int_value (name,
+ 				 (fmt->ieee_bits == 0
+ 				  ? 0 : (fmt->round_towards_zero ? 1 : 2)));
  }
  
  /* Define __DECx__ constants for TYPE using NAME_PREFIX and SUFFIX. */
*************** c_cpp_builtins_optimize_pragma (cpp_read
*** 581,621 ****
    /* Other target-independent built-ins determined by command-line
       options.  */
    if (!prev->x_optimize_size && cur->x_optimize_size)
!     cpp_define (pfile, "__OPTIMIZE_SIZE__");
    else if (prev->x_optimize_size && !cur->x_optimize_size)
      cpp_undef (pfile, "__OPTIMIZE_SIZE__");
  
    if (!prev->x_optimize && cur->x_optimize)
!     cpp_define (pfile, "__OPTIMIZE__");
    else if (prev->x_optimize && !cur->x_optimize)
      cpp_undef (pfile, "__OPTIMIZE__");
  
    prev_fast_math = fast_math_flags_struct_set_p (prev);
    cur_fast_math  = fast_math_flags_struct_set_p (cur);
    if (!prev_fast_math && cur_fast_math)
!     cpp_define (pfile, "__FAST_MATH__");
    else if (prev_fast_math && !cur_fast_math)
      cpp_undef (pfile, "__FAST_MATH__");
  
    if (!prev->x_flag_signaling_nans && cur->x_flag_signaling_nans)
!     cpp_define (pfile, "__SUPPORT_SNAN__");
    else if (prev->x_flag_signaling_nans && !cur->x_flag_signaling_nans)
      cpp_undef (pfile, "__SUPPORT_SNAN__");
  
    if (!prev->x_flag_errno_math && cur->x_flag_errno_math)
      cpp_undef (pfile, "__NO_MATH_ERRNO__");
    else if (prev->x_flag_errno_math && !cur->x_flag_errno_math)
!     cpp_define (pfile, "__NO_MATH_ERRNO__");
  
    if (!prev->x_flag_finite_math_only && cur->x_flag_finite_math_only)
      {
        cpp_undef (pfile, "__FINITE_MATH_ONLY__");
!       cpp_define (pfile, "__FINITE_MATH_ONLY__=1");
      }
    else if (prev->x_flag_finite_math_only && !cur->x_flag_finite_math_only)
      {
        cpp_undef (pfile, "__FINITE_MATH_ONLY__");
!       cpp_define (pfile, "__FINITE_MATH_ONLY__=0");
      }
  }
  
--- 592,632 ----
    /* Other target-independent built-ins determined by command-line
       options.  */
    if (!prev->x_optimize_size && cur->x_optimize_size)
!     cpp_define_unused (pfile, "__OPTIMIZE_SIZE__");
    else if (prev->x_optimize_size && !cur->x_optimize_size)
      cpp_undef (pfile, "__OPTIMIZE_SIZE__");
  
    if (!prev->x_optimize && cur->x_optimize)
!     cpp_define_unused (pfile, "__OPTIMIZE__");
    else if (prev->x_optimize && !cur->x_optimize)
      cpp_undef (pfile, "__OPTIMIZE__");
  
    prev_fast_math = fast_math_flags_struct_set_p (prev);
    cur_fast_math  = fast_math_flags_struct_set_p (cur);
    if (!prev_fast_math && cur_fast_math)
!     cpp_define_unused (pfile, "__FAST_MATH__");
    else if (prev_fast_math && !cur_fast_math)
      cpp_undef (pfile, "__FAST_MATH__");
  
    if (!prev->x_flag_signaling_nans && cur->x_flag_signaling_nans)
!     cpp_define_unused (pfile, "__SUPPORT_SNAN__");
    else if (prev->x_flag_signaling_nans && !cur->x_flag_signaling_nans)
      cpp_undef (pfile, "__SUPPORT_SNAN__");
  
    if (!prev->x_flag_errno_math && cur->x_flag_errno_math)
      cpp_undef (pfile, "__NO_MATH_ERRNO__");
    else if (prev->x_flag_errno_math && !cur->x_flag_errno_math)
!     cpp_define_unused (pfile, "__NO_MATH_ERRNO__");
  
    if (!prev->x_flag_finite_math_only && cur->x_flag_finite_math_only)
      {
        cpp_undef (pfile, "__FINITE_MATH_ONLY__");
!       cpp_define_unused (pfile, "__FINITE_MATH_ONLY__=1");
      }
    else if (prev->x_flag_finite_math_only && !cur->x_flag_finite_math_only)
      {
        cpp_undef (pfile, "__FINITE_MATH_ONLY__");
!       cpp_define_unused (pfile, "__FINITE_MATH_ONLY__=0");
      }
  }
  
*************** c_cpp_builtins (cpp_reader *pfile)
*** 866,871 ****
--- 877,889 ----
  
    define_language_independent_builtin_macros (pfile);
  
+   /* encoding definitions used by users and libraries  */
+   builtin_define_with_value ("__GNUC_EXECUTION_CHARSET_NAME",
+     cpp_get_narrow_charset_name (pfile), 1);
+   builtin_define_with_value ("__GNUC_WIDE_EXECUTION_CHARSET_NAME",
+     cpp_get_wide_charset_name (pfile), 1);
+ 
+ 
    if (c_dialect_cxx ())
    {
      int major;
*************** c_cpp_builtins (cpp_reader *pfile)
*** 967,973 ****
  	  cpp_define (pfile, "__cpp_enumerator_attributes=201411L");
  	  cpp_define (pfile, "__cpp_nested_namespace_definitions=201411L");
  	  cpp_define (pfile, "__cpp_fold_expressions=201603L");
! 	  cpp_define (pfile, "__cpp_nontype_template_args=201411L");
  	  cpp_define (pfile, "__cpp_range_based_for=201603L");
  	  if (cxx_dialect <= cxx17)
  	    cpp_define (pfile, "__cpp_constexpr=201603L");
--- 985,992 ----
  	  cpp_define (pfile, "__cpp_enumerator_attributes=201411L");
  	  cpp_define (pfile, "__cpp_nested_namespace_definitions=201411L");
  	  cpp_define (pfile, "__cpp_fold_expressions=201603L");
! 	  if (cxx_dialect <= cxx17)
! 	    cpp_define (pfile, "__cpp_nontype_template_args=201411L");
  	  cpp_define (pfile, "__cpp_range_based_for=201603L");
  	  if (cxx_dialect <= cxx17)
  	    cpp_define (pfile, "__cpp_constexpr=201603L");
*************** c_cpp_builtins (cpp_reader *pfile)
*** 988,1016 ****
  	}
        if (cxx_dialect > cxx17)
  	{
! 	  /* Set feature test macros for C++2a.  */
  	  cpp_define (pfile, "__cpp_init_captures=201803L");
  	  cpp_define (pfile, "__cpp_generic_lambdas=201707L");
  	  cpp_define (pfile, "__cpp_designated_initializers=201707L");
  	  cpp_define (pfile, "__cpp_constexpr=201907L");
  	  cpp_define (pfile, "__cpp_constexpr_in_decltype=201711L");
  	  cpp_define (pfile, "__cpp_conditional_explicit=201806L");
! 	  /* cpp_define (pfile, "__cpp_consteval=201811L"); */
  	  cpp_define (pfile, "__cpp_constinit=201907L");
  	  cpp_define (pfile, "__cpp_deduction_guides=201907L");
  	  cpp_define (pfile, "__cpp_nontype_template_parameter_class=201806L");
  	  cpp_define (pfile, "__cpp_impl_destroying_delete=201806L");
  	  cpp_define (pfile, "__cpp_constexpr_dynamic_alloc=201907L");
  	  cpp_define (pfile, "__cpp_impl_three_way_comparison=201907L");
  	  cpp_define (pfile, "__cpp_aggregate_paren_init=201902L");
  	}
        if (flag_concepts)
          {
!           if (cxx_dialect >= cxx2a)
              cpp_define (pfile, "__cpp_concepts=201907L");
            else
              cpp_define (pfile, "__cpp_concepts=201507L");
          }
        if (flag_coroutines)
  	cpp_define (pfile, "__cpp_impl_coroutine=201902L"); /* n4861, DIS */
        if (flag_tm)
--- 1007,1046 ----
  	}
        if (cxx_dialect > cxx17)
  	{
! 	  /* Set feature test macros for C++20.  */
  	  cpp_define (pfile, "__cpp_init_captures=201803L");
  	  cpp_define (pfile, "__cpp_generic_lambdas=201707L");
  	  cpp_define (pfile, "__cpp_designated_initializers=201707L");
  	  cpp_define (pfile, "__cpp_constexpr=201907L");
  	  cpp_define (pfile, "__cpp_constexpr_in_decltype=201711L");
  	  cpp_define (pfile, "__cpp_conditional_explicit=201806L");
! 	  cpp_define (pfile, "__cpp_consteval=201811L");
  	  cpp_define (pfile, "__cpp_constinit=201907L");
  	  cpp_define (pfile, "__cpp_deduction_guides=201907L");
+ 	  cpp_define (pfile, "__cpp_nontype_template_args=201911L");
  	  cpp_define (pfile, "__cpp_nontype_template_parameter_class=201806L");
  	  cpp_define (pfile, "__cpp_impl_destroying_delete=201806L");
  	  cpp_define (pfile, "__cpp_constexpr_dynamic_alloc=201907L");
  	  cpp_define (pfile, "__cpp_impl_three_way_comparison=201907L");
  	  cpp_define (pfile, "__cpp_aggregate_paren_init=201902L");
+ 	  cpp_define (pfile, "__cpp_using_enum=201907L");
+ 	}
+       if (cxx_dialect > cxx20)
+ 	{
+ 	  /* Set feature test macros for C++23.  */
+ 	  cpp_define (pfile, "__cpp_size_t_suffix=202011L");
  	}
        if (flag_concepts)
          {
! 	  if (cxx_dialect >= cxx20)
              cpp_define (pfile, "__cpp_concepts=201907L");
            else
              cpp_define (pfile, "__cpp_concepts=201507L");
          }
+       if (flag_modules)
+ 	/* The std-defined value is 201907L, but I don't think we can
+ 	   claim victory yet.  201810 is the p1103 date. */
+ 	cpp_define (pfile, "__cpp_modules=201810L");
        if (flag_coroutines)
  	cpp_define (pfile, "__cpp_impl_coroutine=201902L"); /* n4861, DIS */
        if (flag_tm)
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1031,1036 ****
--- 1061,1072 ----
  	cpp_define (pfile, "__cpp_threadsafe_static_init=200806L");
        if (flag_char8_t)
          cpp_define (pfile, "__cpp_char8_t=201811L");
+ #ifndef THREAD_MODEL_SPEC
+       /* Targets that define THREAD_MODEL_SPEC need to define
+ 	 __STDCPP_THREADS__ in their config/XXX/XXX-c.c themselves.  */
+       if (cxx_dialect >= cxx11 && strcmp (thread_model, "single") != 0)
+ 	cpp_define (pfile, "__STDCPP_THREADS__=1");
+ #endif
      }
    /* Note that we define this for C as well, so that we know if
       __attribute__((cleanup)) will interface with EH.  */
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1425,1437 ****
    /* Make the choice of the stack protector runtime visible to source code.
       The macro names and values here were chosen for compatibility with an
       earlier implementation, i.e. ProPolice.  */
!   if (flag_stack_protect == 4)
      cpp_define (pfile, "__SSP_EXPLICIT__=4");
!   if (flag_stack_protect == 3)
      cpp_define (pfile, "__SSP_STRONG__=3");
!   if (flag_stack_protect == 2)
      cpp_define (pfile, "__SSP_ALL__=2");
!   else if (flag_stack_protect == 1)
      cpp_define (pfile, "__SSP__=1");
  
    if (flag_openacc)
--- 1461,1473 ----
    /* Make the choice of the stack protector runtime visible to source code.
       The macro names and values here were chosen for compatibility with an
       earlier implementation, i.e. ProPolice.  */
!   if (flag_stack_protect == SPCT_FLAG_EXPLICIT)
      cpp_define (pfile, "__SSP_EXPLICIT__=4");
!   if (flag_stack_protect == SPCT_FLAG_STRONG)
      cpp_define (pfile, "__SSP_STRONG__=3");
!   if (flag_stack_protect == SPCT_FLAG_ALL)
      cpp_define (pfile, "__SSP_ALL__=2");
!   else if (flag_stack_protect == SPCT_FLAG_DEFAULT)
      cpp_define (pfile, "__SSP__=1");
  
    if (flag_openacc)
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-dump.c gcc-11.1.0/gcc/c-family/c-dump.c
*** gcc-10.3.0/gcc/c-family/c-dump.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-dump.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Tree-dumping functionality for C-family languages.
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
     Written by Mark Mitchell <mark@codesourcery.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* Tree-dumping functionality for C-family languages.
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
     Written by Mark Mitchell <mark@codesourcery.com>
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 26,31 ****
--- 26,38 ----
  
  /* Dump any C-specific tree codes and attributes of common codes.  */
  
+ static void
+ dump_stmt (dump_info_p di, const_tree t)
+ {
+   if (EXPR_HAS_LOCATION (t))
+     dump_int (di, "line", EXPR_LINENO (t));
+ }
+ 
  bool
  c_dump_tree (void *dump_info, tree t)
  {
*************** c_dump_tree (void *dump_info, tree t)
*** 42,47 ****
--- 49,85 ----
  	dump_string (di, "bitfield");
        break;
  
+     case BREAK_STMT:
+     case CONTINUE_STMT:
+       dump_stmt (di, t);
+       break;
+ 
+     case DO_STMT:
+       dump_stmt (di, t);
+       dump_child ("body", DO_BODY (t));
+       dump_child ("cond", DO_COND (t));
+       break;
+ 
+     case FOR_STMT:
+       dump_stmt (di, t);
+       dump_child ("init", FOR_INIT_STMT (t));
+       dump_child ("cond", FOR_COND (t));
+       dump_child ("expr", FOR_EXPR (t));
+       dump_child ("body", FOR_BODY (t));
+       break;
+ 
+     case SWITCH_STMT:
+       dump_stmt (di, t);
+       dump_child ("cond", SWITCH_STMT_COND (t));
+       dump_child ("body", SWITCH_STMT_BODY (t));
+       break;
+ 
+     case WHILE_STMT:
+       dump_stmt (di, t);
+       dump_child ("cond", WHILE_COND (t));
+       dump_child ("body", WHILE_BODY (t));
+       break;
+ 
      default:
        break;
      }
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-format.c gcc-11.1.0/gcc/c-family/c-format.c
*** gcc-10.3.0/gcc/c-family/c-format.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-format.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Check calls to formatted I/O functions (-Wformat).
!    Copyright (C) 1992-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Check calls to formatted I/O functions (-Wformat).
!    Copyright (C) 1992-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** static const struct
*** 2997,3002 ****
--- 2997,3003 ----
     NAME ("decl", "declaration"),
     NAME ("enumeral", "enumerated"),
     NAME ("floating point", "floating-point"),
+    NAME ("nonstatic", "non-static"),
     NAME ("non-zero", "nonzero"),
     NAME ("reg", "register"),
     NAME ("stmt", "statement"),
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-format.h gcc-11.1.0/gcc/c-family/c-format.h
*** gcc-10.3.0/gcc/c-family/c-format.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-format.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Check calls to formatted I/O functions (-Wformat).
!    Copyright (C) 1992-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Check calls to formatted I/O functions (-Wformat).
!    Copyright (C) 1992-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-gimplify.c gcc-11.1.0/gcc/c-family/c-gimplify.c
*** gcc-10.3.0/gcc/c-family/c-gimplify.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-gimplify.c	Tue Apr 27 10:00:13 2021
***************
*** 2,8 ****
     by the C-based front ends.  The structure of gimplified, or
     language-independent, trees is dictated by the grammar described in this
     file.
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
     Lowering of expressions contributed by Sebastian Pop <s.pop@laposte.net>
     Re-written to support lowering of whole function trees, documentation
     and miscellaneous cleanups by Diego Novillo <dnovillo@redhat.com>
--- 2,8 ----
     by the C-based front ends.  The structure of gimplified, or
     language-independent, trees is dictated by the grammar described in this
     file.
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
     Lowering of expressions contributed by Sebastian Pop <s.pop@laposte.net>
     Re-written to support lowering of whole function trees, documentation
     and miscellaneous cleanups by Diego Novillo <dnovillo@redhat.com>
*************** along with GCC; see the file COPYING3.
*** 30,35 ****
--- 30,37 ----
  #include "function.h"
  #include "basic-block.h"
  #include "tree.h"
+ #include "tree-iterator.h"
+ #include "predict.h"
  #include "gimple.h"
  #include "cgraph.h"
  #include "c-pretty-print.h"
*************** along with GCC; see the file COPYING3.
*** 37,42 ****
--- 39,45 ----
  #include "langhooks.h"
  #include "dumpfile.h"
  #include "c-ubsan.h"
+ #include "tree-nested.h"
  
  /*  The gimplification pass converts the language-dependent trees
      (ld-trees) emitted by the parser into language-independent trees
*************** ubsan_walk_array_refs_r (tree *tp, int *
*** 107,112 ****
--- 110,551 ----
  
  /* Gimplification of statement trees.  */
  
+ /* Local declarations.  */
+ 
+ enum bc_t { bc_break = 0, bc_continue = 1 };
+ 
+ /* Stack of labels which are targets for "break" or "continue",
+    linked through TREE_CHAIN.  */
+ static tree bc_label[2];
+ 
+ /* Begin a scope which can be exited by a break or continue statement.  BC
+    indicates which.
+ 
+    Just creates a label with location LOCATION and pushes it into the current
+    context.  */
+ 
+ static tree
+ begin_bc_block (enum bc_t bc, location_t location)
+ {
+   tree label = create_artificial_label (location);
+   DECL_CHAIN (label) = bc_label[bc];
+   bc_label[bc] = label;
+   if (bc == bc_break)
+     LABEL_DECL_BREAK (label) = true;
+   else
+     LABEL_DECL_CONTINUE (label) = true;
+   return label;
+ }
+ 
+ /* Finish a scope which can be exited by a break or continue statement.
+    LABEL was returned from the most recent call to begin_bc_block.  BLOCK is
+    an expression for the contents of the scope.
+ 
+    If we saw a break (or continue) in the scope, append a LABEL_EXPR to
+    BLOCK.  Otherwise, just forget the label.  */
+ 
+ static void
+ finish_bc_block (tree *block, enum bc_t bc, tree label)
+ {
+   gcc_assert (label == bc_label[bc]);
+ 
+   if (TREE_USED (label))
+     append_to_statement_list (build1 (LABEL_EXPR, void_type_node, label),
+ 			      block);
+ 
+   bc_label[bc] = DECL_CHAIN (label);
+   DECL_CHAIN (label) = NULL_TREE;
+ }
+ 
+ /* Allow saving and restoring break/continue state.  */
+ 
+ void
+ save_bc_state (bc_state_t *state)
+ {
+   state->bc_label[bc_break] = bc_label[bc_break];
+   state->bc_label[bc_continue] = bc_label[bc_continue];
+   bc_label[bc_break] = NULL_TREE;
+   bc_label[bc_continue] = NULL_TREE;
+ }
+ 
+ void
+ restore_bc_state (bc_state_t *state)
+ {
+   gcc_assert (bc_label[bc_break] == NULL);
+   gcc_assert (bc_label[bc_continue] == NULL);
+   bc_label[bc_break] = state->bc_label[bc_break];
+   bc_label[bc_continue] = state->bc_label[bc_continue];
+ }
+ 
+ /* Get the LABEL_EXPR to represent a break or continue statement
+    in the current block scope.  BC indicates which.  */
+ 
+ static tree
+ get_bc_label (enum bc_t bc)
+ {
+   tree label = bc_label[bc];
+   gcc_assert (label);
+ 
+   /* Mark the label used for finish_bc_block.  */
+   TREE_USED (label) = 1;
+   return label;
+ }
+ 
+ /* Return the location from EXPR, or OR_LOC if the former is unknown.  */
+ 
+ location_t
+ expr_loc_or_loc (const_tree expr, location_t or_loc)
+ {
+   tree t = CONST_CAST_TREE (expr);
+   location_t loc = UNKNOWN_LOCATION;
+   if (t)
+     loc = EXPR_LOCATION (t);
+   if (loc == UNKNOWN_LOCATION)
+     loc = or_loc;
+   return loc;
+ }
+ 
+ /* Build a generic representation of one of the C loop forms.  COND is the
+    loop condition or NULL_TREE.  BODY is the (possibly compound) statement
+    controlled by the loop.  INCR is the increment expression of a for-loop,
+    or NULL_TREE.  COND_IS_FIRST indicates whether the condition is
+    evaluated before the loop body as in while and for loops, or after the
+    loop body as in do-while loops.  */
+ 
+ static void
+ genericize_c_loop (tree *stmt_p, location_t start_locus, tree cond, tree body,
+ 		   tree incr, bool cond_is_first, int *walk_subtrees,
+ 		   void *data, walk_tree_fn func, walk_tree_lh lh)
+ {
+   tree blab, clab;
+   tree entry = NULL, exit = NULL, t;
+   tree stmt_list = NULL;
+   location_t cond_locus = expr_loc_or_loc (cond, start_locus);
+   location_t incr_locus = expr_loc_or_loc (incr, start_locus);
+ 
+   protected_set_expr_location_if_unset (incr, start_locus);
+ 
+   walk_tree_1 (&cond, func, data, NULL, lh);
+   walk_tree_1 (&incr, func, data, NULL, lh);
+ 
+   blab = begin_bc_block (bc_break, start_locus);
+   clab = begin_bc_block (bc_continue, start_locus);
+ 
+   walk_tree_1 (&body, func, data, NULL, lh);
+   *walk_subtrees = 0;
+ 
+   /* If condition is zero don't generate a loop construct.  */
+   if (cond && integer_zerop (cond))
+     {
+       if (cond_is_first)
+ 	{
+ 	  t = build1_loc (start_locus, GOTO_EXPR, void_type_node,
+ 			  get_bc_label (bc_break));
+ 	  append_to_statement_list (t, &stmt_list);
+ 	}
+     }
+   else
+     {
+       /* Expand to gotos.  */
+       tree top = build1 (LABEL_EXPR, void_type_node,
+ 			 create_artificial_label (start_locus));
+ 
+       /* If we have an exit condition, then we build an IF with gotos either
+ 	 out of the loop, or to the top of it.  If there's no exit condition,
+ 	 then we just build a jump back to the top.  */
+       exit = build1 (GOTO_EXPR, void_type_node, LABEL_EXPR_LABEL (top));
+ 
+       if (cond && !integer_nonzerop (cond))
+ 	{
+ 	  /* Canonicalize the loop condition to the end.  This means
+ 	     generating a branch to the loop condition.  Reuse the
+ 	     continue label, if there is no incr expression.  */
+ 	  if (cond_is_first)
+ 	    {
+ 	      if (incr)
+ 		{
+ 		  entry = build1 (LABEL_EXPR, void_type_node,
+ 				  create_artificial_label (start_locus));
+ 		  t = build1_loc (start_locus, GOTO_EXPR, void_type_node,
+ 				  LABEL_EXPR_LABEL (entry));
+ 		}
+ 	      else
+ 		t = build1_loc (start_locus, GOTO_EXPR, void_type_node,
+ 				get_bc_label (bc_continue));
+ 	      append_to_statement_list (t, &stmt_list);
+ 	    }
+ 
+ 	  t = build1 (GOTO_EXPR, void_type_node, get_bc_label (bc_break));
+ 	  exit = fold_build3_loc (cond_locus,
+ 				  COND_EXPR, void_type_node, cond, exit, t);
+ 	}
+       else
+ 	{
+ 	  /* For the backward-goto's location of an unconditional loop
+ 	     use the beginning of the body, or, if there is none, the
+ 	     top of the loop.  */
+ 	  location_t loc = expr_loc_or_loc (expr_first (body),
+ 					    start_locus);
+ 	  SET_EXPR_LOCATION (exit, loc);
+ 	}
+       append_to_statement_list (top, &stmt_list);
+     }
+ 
+   append_to_statement_list (body, &stmt_list);
+   finish_bc_block (&stmt_list, bc_continue, clab);
+   if (incr)
+     {
+       if (MAY_HAVE_DEBUG_MARKER_STMTS && incr_locus != UNKNOWN_LOCATION)
+ 	{
+ 	  tree d = build0 (DEBUG_BEGIN_STMT, void_type_node);
+ 	  SET_EXPR_LOCATION (d, expr_loc_or_loc (incr, start_locus));
+ 	  append_to_statement_list (d, &stmt_list);
+ 	}
+       append_to_statement_list (incr, &stmt_list);
+     }
+   append_to_statement_list (entry, &stmt_list);
+ 
+   if (MAY_HAVE_DEBUG_MARKER_STMTS && cond_locus != UNKNOWN_LOCATION)
+     {
+       tree d = build0 (DEBUG_BEGIN_STMT, void_type_node);
+       SET_EXPR_LOCATION (d, cond_locus);
+       append_to_statement_list (d, &stmt_list);
+     }
+   append_to_statement_list (exit, &stmt_list);
+   finish_bc_block (&stmt_list, bc_break, blab);
+   if (!stmt_list)
+     stmt_list = build_empty_stmt (start_locus);
+ 
+   *stmt_p = stmt_list;
+ }
+ 
+ /* Genericize a FOR_STMT node *STMT_P.  */
+ 
+ static void
+ genericize_for_stmt (tree *stmt_p, int *walk_subtrees, void *data,
+ 		     walk_tree_fn func, walk_tree_lh lh)
+ {
+   tree stmt = *stmt_p;
+   tree expr = NULL;
+   tree loop;
+   tree init = FOR_INIT_STMT (stmt);
+ 
+   if (init)
+     {
+       walk_tree_1 (&init, func, data, NULL, lh);
+       append_to_statement_list (init, &expr);
+     }
+ 
+   genericize_c_loop (&loop, EXPR_LOCATION (stmt), FOR_COND (stmt),
+ 		     FOR_BODY (stmt), FOR_EXPR (stmt), 1, walk_subtrees,
+ 		     data, func, lh);
+   append_to_statement_list (loop, &expr);
+   if (expr == NULL_TREE)
+     expr = loop;
+   *stmt_p = expr;
+ }
+ 
+ /* Genericize a WHILE_STMT node *STMT_P.  */
+ 
+ static void
+ genericize_while_stmt (tree *stmt_p, int *walk_subtrees, void *data,
+ 		       walk_tree_fn func, walk_tree_lh lh)
+ {
+   tree stmt = *stmt_p;
+   genericize_c_loop (stmt_p, EXPR_LOCATION (stmt), WHILE_COND (stmt),
+ 		     WHILE_BODY (stmt), NULL_TREE, 1, walk_subtrees,
+ 		     data, func, lh);
+ }
+ 
+ /* Genericize a DO_STMT node *STMT_P.  */
+ 
+ static void
+ genericize_do_stmt (tree *stmt_p, int *walk_subtrees, void *data,
+ 		    walk_tree_fn func, walk_tree_lh lh)
+ {
+   tree stmt = *stmt_p;
+   genericize_c_loop (stmt_p, EXPR_LOCATION (stmt), DO_COND (stmt),
+ 		     DO_BODY (stmt), NULL_TREE, 0, walk_subtrees,
+ 		     data, func, lh);
+ }
+ 
+ /* Genericize a SWITCH_STMT node *STMT_P by turning it into a SWITCH_EXPR.  */
+ 
+ static void
+ genericize_switch_stmt (tree *stmt_p, int *walk_subtrees, void *data,
+ 			walk_tree_fn func, walk_tree_lh lh)
+ {
+   tree stmt = *stmt_p;
+   tree break_block, body, cond, type;
+   location_t stmt_locus = EXPR_LOCATION (stmt);
+ 
+   body = SWITCH_STMT_BODY (stmt);
+   if (!body)
+     body = build_empty_stmt (stmt_locus);
+   cond = SWITCH_STMT_COND (stmt);
+   type = SWITCH_STMT_TYPE (stmt);
+ 
+   walk_tree_1 (&cond, func, data, NULL, lh);
+ 
+   break_block = begin_bc_block (bc_break, stmt_locus);
+ 
+   walk_tree_1 (&body, func, data, NULL, lh);
+   walk_tree_1 (&type, func, data, NULL, lh);
+   *walk_subtrees = 0;
+ 
+   if (TREE_USED (break_block))
+     SWITCH_BREAK_LABEL_P (break_block) = 1;
+   finish_bc_block (&body, bc_break, break_block);
+   *stmt_p = build2_loc (stmt_locus, SWITCH_EXPR, type, cond, body);
+   SWITCH_ALL_CASES_P (*stmt_p) = SWITCH_STMT_ALL_CASES_P (stmt);
+   gcc_checking_assert (!SWITCH_STMT_NO_BREAK_P (stmt)
+ 		       || !TREE_USED (break_block));
+ }
+ 
+ /* Genericize a CONTINUE_STMT node *STMT_P.  */
+ 
+ static void
+ genericize_continue_stmt (tree *stmt_p)
+ {
+   tree stmt_list = NULL;
+   tree pred = build_predict_expr (PRED_CONTINUE, NOT_TAKEN);
+   tree label = get_bc_label (bc_continue);
+   location_t location = EXPR_LOCATION (*stmt_p);
+   tree jump = build1_loc (location, GOTO_EXPR, void_type_node, label);
+   append_to_statement_list_force (pred, &stmt_list);
+   append_to_statement_list (jump, &stmt_list);
+   *stmt_p = stmt_list;
+ }
+ 
+ /* Genericize a BREAK_STMT node *STMT_P.  */
+ 
+ static void
+ genericize_break_stmt (tree *stmt_p)
+ {
+   tree label = get_bc_label (bc_break);
+   location_t location = EXPR_LOCATION (*stmt_p);
+   *stmt_p = build1_loc (location, GOTO_EXPR, void_type_node, label);
+ }
+ 
+ /* Genericize a OMP_FOR node *STMT_P.  */
+ 
+ static void
+ genericize_omp_for_stmt (tree *stmt_p, int *walk_subtrees, void *data,
+ 			 walk_tree_fn func, walk_tree_lh lh)
+ {
+   tree stmt = *stmt_p;
+   location_t locus = EXPR_LOCATION (stmt);
+   tree clab = begin_bc_block (bc_continue, locus);
+ 
+   walk_tree_1 (&OMP_FOR_BODY (stmt), func, data, NULL, lh);
+   if (TREE_CODE (stmt) != OMP_TASKLOOP)
+     walk_tree_1 (&OMP_FOR_CLAUSES (stmt), func, data, NULL, lh);
+   walk_tree_1 (&OMP_FOR_INIT (stmt), func, data, NULL, lh);
+   walk_tree_1 (&OMP_FOR_COND (stmt), func, data, NULL, lh);
+   walk_tree_1 (&OMP_FOR_INCR (stmt), func, data, NULL, lh);
+   walk_tree_1 (&OMP_FOR_PRE_BODY (stmt), func, data, NULL, lh);
+   *walk_subtrees = 0;
+ 
+   finish_bc_block (&OMP_FOR_BODY (stmt), bc_continue, clab);
+ }
+ 
+ 
+ /* Lower structured control flow tree nodes, such as loops.  The
+    STMT_P, WALK_SUBTREES, and DATA arguments are as for the walk_tree_fn
+    type.  FUNC and LH are language-specific functions passed to walk_tree_1
+    for node visiting and traversal, respectively; they are used to do
+    subtree processing in a language-dependent way.  */
+ 
+ tree
+ c_genericize_control_stmt (tree *stmt_p, int *walk_subtrees, void *data,
+ 			   walk_tree_fn func, walk_tree_lh lh)
+ {
+   tree stmt = *stmt_p;
+ 
+   switch (TREE_CODE (stmt))
+     {
+     case FOR_STMT:
+       genericize_for_stmt (stmt_p, walk_subtrees, data, func, lh);
+       break;
+ 
+     case WHILE_STMT:
+       genericize_while_stmt (stmt_p, walk_subtrees, data, func, lh);
+       break;
+ 
+     case DO_STMT:
+       genericize_do_stmt (stmt_p, walk_subtrees, data, func, lh);
+       break;
+ 
+     case SWITCH_STMT:
+       genericize_switch_stmt (stmt_p, walk_subtrees, data, func, lh);
+       break;
+ 
+     case CONTINUE_STMT:
+       genericize_continue_stmt (stmt_p);
+       break;
+ 
+     case BREAK_STMT:
+       genericize_break_stmt (stmt_p);
+       break;
+ 
+     case OMP_FOR:
+     case OMP_SIMD:
+     case OMP_DISTRIBUTE:
+     case OMP_LOOP:
+     case OMP_TASKLOOP:
+     case OACC_LOOP:
+       genericize_omp_for_stmt (stmt_p, walk_subtrees, data, func, lh);
+       break;
+ 
+     case STATEMENT_LIST:
+       if (TREE_SIDE_EFFECTS (stmt))
+ 	{
+ 	  tree_stmt_iterator i;
+ 	  int nondebug_stmts = 0;
+ 	  bool clear_side_effects = true;
+ 	  /* Genericization can clear TREE_SIDE_EFFECTS, e.g. when
+ 	     transforming an IF_STMT into COND_EXPR.  If such stmt
+ 	     appears in a STATEMENT_LIST that contains only that
+ 	     stmt and some DEBUG_BEGIN_STMTs, without -g where the
+ 	     STATEMENT_LIST wouldn't be present at all the resulting
+ 	     expression wouldn't have TREE_SIDE_EFFECTS set, so make sure
+ 	     to clear it even on the STATEMENT_LIST in such cases.  */
+ 	  for (i = tsi_start (stmt); !tsi_end_p (i); tsi_next (&i))
+ 	    {
+ 	      tree t = tsi_stmt (i);
+ 	      if (TREE_CODE (t) != DEBUG_BEGIN_STMT && nondebug_stmts < 2)
+ 		nondebug_stmts++;
+ 	      walk_tree_1 (tsi_stmt_ptr (i), func, data, NULL, lh);
+ 	      if (TREE_CODE (t) != DEBUG_BEGIN_STMT
+ 		  && (nondebug_stmts > 1 || TREE_SIDE_EFFECTS (tsi_stmt (i))))
+ 		clear_side_effects = false;
+ 	    }
+ 	  if (clear_side_effects)
+ 	    TREE_SIDE_EFFECTS (stmt) = 0;
+ 	  *walk_subtrees = 0;
+ 	}
+       break;
+ 
+     default:
+       break;
+     }
+ 
+   return NULL;
+ }
+ 
+ 
+ /* Wrapper for c_genericize_control_stmt to allow it to be used as a walk_tree
+    callback.  This is appropriate for C; C++ calls c_genericize_control_stmt
+    directly.  */
+ 
+ static tree
+ c_genericize_control_r (tree *stmt_p, int *walk_subtrees, void *data)
+ {
+   c_genericize_control_stmt (stmt_p, walk_subtrees, data,
+ 			     c_genericize_control_r, NULL);
+   return NULL;
+ }
+ 
  /* Convert the tree representation of FNDECL from C frontend trees to
     GENERIC.  */
  
*************** c_genericize (tree fndecl)
*** 124,129 ****
--- 563,581 ----
  		 &pset);
      }
  
+   /* Genericize loops and other structured control constructs.  The C++
+      front end has already done this in lang-specific code.  */
+   if (!c_dialect_cxx ())
+     {
+       bc_state_t save_state;
+       push_cfun (DECL_STRUCT_FUNCTION (fndecl));
+       save_bc_state (&save_state);
+       walk_tree (&DECL_SAVED_TREE (fndecl), c_genericize_control_r,
+ 		 NULL, NULL);
+       restore_bc_state (&save_state);
+       pop_cfun ();
+     }
+ 
    if (warn_duplicated_branches)
      walk_tree_without_duplicates (&DECL_SAVED_TREE (fndecl),
  				  do_warn_duplicated_branches_r, NULL);
*************** c_genericize (tree fndecl)
*** 150,156 ****
  
    /* Dump all nested functions now.  */
    cgn = cgraph_node::get_create (fndecl);
!   for (cgn = cgn->nested; cgn ; cgn = cgn->next_nested)
      c_genericize (cgn->decl);
  }
  
--- 602,609 ----
  
    /* Dump all nested functions now.  */
    cgn = cgraph_node::get_create (fndecl);
!   for (cgn = first_nested_function (cgn);
!        cgn; cgn = next_nested_function (cgn))
      c_genericize (cgn->decl);
  }
  
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-indentation.c gcc-11.1.0/gcc/c-family/c-indentation.c
*** gcc-10.3.0/gcc/c-family/c-indentation.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-indentation.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Implementation of -Wmisleading-indentation
!    Copyright (C) 2015-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Implementation of -Wmisleading-indentation
!    Copyright (C) 2015-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 24,31 ****
  #include "c-common.h"
  #include "c-indentation.h"
  #include "selftest.h"
! 
! extern cpp_options *cpp_opts;
  
  /* Round up VIS_COLUMN to nearest tab stop. */
  
--- 24,30 ----
  #include "c-common.h"
  #include "c-indentation.h"
  #include "selftest.h"
! #include "diagnostic.h"
  
  /* Round up VIS_COLUMN to nearest tab stop. */
  
*************** next_tab_stop (unsigned int vis_column,
*** 46,76 ****
     on the line (up to or before EXPLOC).  */
  
  static bool
! get_visual_column (expanded_location exploc, location_t loc,
  		   unsigned int *out,
  		   unsigned int *first_nws,
  		   unsigned int tab_width)
  {
-   /* PR c++/68819: if the column number is zero, we presumably
-      had a location_t > LINE_MAP_MAX_LOCATION_WITH_COLS, and so
-      we have no column information.
-      Act as if no conversion was possible, triggering the
-      error-handling path in the caller.  */
-   if (!exploc.column)
-     {
-       static bool issued_note = false;
-       if (!issued_note)
- 	{
- 	  /* Notify the user the first time this happens.  */
- 	  issued_note = true;
- 	  inform (loc,
- 		  "%<-Wmisleading-indentation%> is disabled from this point"
- 		  " onwards, since column-tracking was disabled due to"
- 		  " the size of the code/headers");
- 	}
-       return false;
-     }
- 
    char_span line = location_get_source_line (exploc.file, exploc.line);
    if (!line)
      return false;
--- 45,55 ----
     on the line (up to or before EXPLOC).  */
  
  static bool
! get_visual_column (expanded_location exploc,
  		   unsigned int *out,
  		   unsigned int *first_nws,
  		   unsigned int tab_width)
  {
    char_span line = location_get_source_line (exploc.file, exploc.line);
    if (!line)
      return false;
*************** should_warn_for_misleading_indentation (
*** 209,227 ****
  					const token_indent_info &body_tinfo,
  					const token_indent_info &next_tinfo)
  {
-   location_t guard_loc = guard_tinfo.location;
-   location_t body_loc = body_tinfo.location;
-   location_t next_stmt_loc = next_tinfo.location;
- 
-   enum cpp_ttype body_type = body_tinfo.type;
-   enum cpp_ttype next_tok_type = next_tinfo.type;
- 
-   /* Don't attempt to compare the indentation of BODY_LOC and NEXT_STMT_LOC
-      if either are within macros.  */
-   if (linemap_location_from_macro_expansion_p (line_table, body_loc)
-       || linemap_location_from_macro_expansion_p (line_table, next_stmt_loc))
-     return false;
- 
    /* Don't attempt to compare indentation if #line or # 44 "file"-style
       directives are present, suggesting generated code.
  
--- 188,193 ----
*************** should_warn_for_misleading_indentation (
*** 262,267 ****
--- 228,234 ----
       }            <- NEXT
       baz ();
    */
+   enum cpp_ttype next_tok_type = next_tinfo.type;
    if (next_tok_type == CPP_CLOSE_BRACE
        || next_tinfo.keyword == RID_ELSE)
      return false;
*************** should_warn_for_misleading_indentation (
*** 283,288 ****
--- 250,256 ----
        bar (); <- BODY
        baz (); <- NEXT
    */
+   enum cpp_ttype body_type = body_tinfo.type;
    if (body_type == CPP_OPEN_BRACE)
      return false;
  
*************** should_warn_for_misleading_indentation (
*** 290,300 ****
    if (next_tok_type == CPP_SEMICOLON)
      return false;
  
    expanded_location body_exploc = expand_location (body_loc);
    expanded_location next_stmt_exploc = expand_location (next_stmt_loc);
    expanded_location guard_exploc = expand_location (guard_loc);
  
!   const unsigned int tab_width = cpp_opts->tabstop;
  
    /* They must be in the same file.  */
    if (next_stmt_exploc.file != body_exploc.file)
--- 258,337 ----
    if (next_tok_type == CPP_SEMICOLON)
      return false;
  
+   location_t guard_loc = guard_tinfo.location;
+   location_t body_loc = body_tinfo.location;
+   location_t next_stmt_loc = next_tinfo.location;
+ 
+   /* Resolve each token location to the respective macro expansion
+      point that produced the token.  */
+   if (linemap_location_from_macro_expansion_p (line_table, guard_loc))
+     guard_loc = linemap_resolve_location (line_table, guard_loc,
+ 					  LRK_MACRO_EXPANSION_POINT, NULL);
+   if (linemap_location_from_macro_expansion_p (line_table, body_loc))
+     body_loc = linemap_resolve_location (line_table, body_loc,
+ 					 LRK_MACRO_EXPANSION_POINT, NULL);
+   if (linemap_location_from_macro_expansion_p (line_table, next_stmt_loc))
+     next_stmt_loc = linemap_resolve_location (line_table, next_stmt_loc,
+ 					      LRK_MACRO_EXPANSION_POINT, NULL);
+ 
+   /* When all three tokens are produced from a single macro expansion, we
+      instead consider their loci inside that macro's definition.  */
+   if (guard_loc == body_loc && body_loc == next_stmt_loc)
+     {
+       const line_map *guard_body_common_map
+ 	= first_map_in_common (line_table,
+ 			       guard_tinfo.location, body_tinfo.location,
+ 			       &guard_loc, &body_loc);
+       const line_map *body_next_common_map
+ 	= first_map_in_common (line_table,
+ 			       body_tinfo.location, next_tinfo.location,
+ 			       &body_loc, &next_stmt_loc);
+ 
+       /* Punt on complicated nesting of macros.  */
+       if (guard_body_common_map != body_next_common_map)
+ 	return false;
+ 
+       guard_loc = linemap_resolve_location (line_table, guard_loc,
+ 					    LRK_MACRO_DEFINITION_LOCATION, NULL);
+       body_loc = linemap_resolve_location (line_table, body_loc,
+ 					   LRK_MACRO_DEFINITION_LOCATION, NULL);
+       next_stmt_loc = linemap_resolve_location (line_table, next_stmt_loc,
+ 						LRK_MACRO_DEFINITION_LOCATION,
+ 						NULL);
+     }
+ 
    expanded_location body_exploc = expand_location (body_loc);
    expanded_location next_stmt_exploc = expand_location (next_stmt_loc);
    expanded_location guard_exploc = expand_location (guard_loc);
  
!   /* PR c++/68819: if the column number is zero, we presumably
!      had a location_t > LINE_MAP_MAX_LOCATION_WITH_COLS, and so
!      we have no column information.  */
!   if (!guard_exploc.column || !body_exploc.column || !next_stmt_exploc.column)
!     {
!       static bool issued_note = false;
!       if (!issued_note)
! 	{
! 	  /* Notify the user the first time this happens.  */
! 	  issued_note = true;
! 	  inform (guard_loc,
! 		  "%<-Wmisleading-indentation%> is disabled from this point"
! 		  " onwards, since column-tracking was disabled due to"
! 		  " the size of the code/headers");
! 	  if (!flag_large_source_files)
! 	    inform (guard_loc,
! 		    "adding %<-flarge-source-files%> will allow for more" 
! 		    " column-tracking support, at the expense of compilation"
! 		    " time and memory");
! 	}
!       return false;
!     }
! 
!   /* Give up if the loci are not all distinct.  */
!   if (guard_loc == body_loc || body_loc == next_stmt_loc)
!     return false;
! 
!   const unsigned int tab_width = global_dc->tabstop;
  
    /* They must be in the same file.  */
    if (next_stmt_exploc.file != body_exploc.file)
*************** should_warn_for_misleading_indentation (
*** 339,345 ****
  	  gcc_assert (guard_exploc.line == next_stmt_exploc.line);
  	  unsigned int guard_vis_column;
  	  unsigned int guard_line_first_nws;
! 	  if (!get_visual_column (guard_exploc, guard_loc,
  				  &guard_vis_column,
  				  &guard_line_first_nws, tab_width))
  	    return false;
--- 376,382 ----
  	  gcc_assert (guard_exploc.line == next_stmt_exploc.line);
  	  unsigned int guard_vis_column;
  	  unsigned int guard_line_first_nws;
! 	  if (!get_visual_column (guard_exploc,
  				  &guard_vis_column,
  				  &guard_line_first_nws, tab_width))
  	    return false;
*************** should_warn_for_misleading_indentation (
*** 399,413 ****
  	 the case for input files containing #line directives, and these
  	 are often for autogenerated sources (e.g. from .md files), where
  	 it's not clear that it's meaningful to look at indentation.  */
!       if (!get_visual_column (next_stmt_exploc, next_stmt_loc,
  			      &next_stmt_vis_column,
  			      &next_stmt_line_first_nws, tab_width))
  	return false;
!       if (!get_visual_column (body_exploc, body_loc,
  			      &body_vis_column,
  			      &body_line_first_nws, tab_width))
  	return false;
!       if (!get_visual_column (guard_exploc, guard_loc,
  			      &guard_vis_column,
  			      &guard_line_first_nws, tab_width))
  	return false;
--- 436,450 ----
  	 the case for input files containing #line directives, and these
  	 are often for autogenerated sources (e.g. from .md files), where
  	 it's not clear that it's meaningful to look at indentation.  */
!       if (!get_visual_column (next_stmt_exploc,
  			      &next_stmt_vis_column,
  			      &next_stmt_line_first_nws, tab_width))
  	return false;
!       if (!get_visual_column (body_exploc,
  			      &body_vis_column,
  			      &body_line_first_nws, tab_width))
  	return false;
!       if (!get_visual_column (guard_exploc,
  			      &guard_vis_column,
  			      &guard_line_first_nws, tab_width))
  	return false;
*************** assert_get_visual_column_succeeds (const
*** 662,668 ****
    exploc.sysp = false;
    unsigned int actual_visual_column;
    unsigned int actual_first_nws;
!   bool result = get_visual_column (exploc, UNKNOWN_LOCATION,
  				   &actual_visual_column,
  				   &actual_first_nws, tab_width);
    ASSERT_TRUE_AT (loc, result);
--- 699,705 ----
    exploc.sysp = false;
    unsigned int actual_visual_column;
    unsigned int actual_first_nws;
!   bool result = get_visual_column (exploc,
  				   &actual_visual_column,
  				   &actual_first_nws, tab_width);
    ASSERT_TRUE_AT (loc, result);
*************** assert_get_visual_column_fails (const lo
*** 700,706 ****
    exploc.sysp = false;
    unsigned int actual_visual_column;
    unsigned int actual_first_nws;
!   bool result = get_visual_column (exploc, UNKNOWN_LOCATION,
  				   &actual_visual_column,
  				   &actual_first_nws, tab_width);
    ASSERT_FALSE_AT (loc, result);
--- 737,743 ----
    exploc.sysp = false;
    unsigned int actual_visual_column;
    unsigned int actual_first_nws;
!   bool result = get_visual_column (exploc,
  				   &actual_visual_column,
  				   &actual_first_nws, tab_width);
    ASSERT_FALSE_AT (loc, result);
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-indentation.h gcc-11.1.0/gcc/c-family/c-indentation.h
*** gcc-10.3.0/gcc/c-family/c-indentation.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-indentation.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for c-indentation.c.
!    Copyright (C) 2015-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for c-indentation.c.
!    Copyright (C) 2015-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-lex.c gcc-11.1.0/gcc/c-family/c-lex.c
*** gcc-10.3.0/gcc/c-family/c-lex.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-lex.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Mainly the interface between cpplib and the C front ends.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Mainly the interface between cpplib and the C front ends.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 28,34 ****
  #include "c-pragma.h"
  #include "debug.h"
  #include "file-prefix-map.h" /* remap_macro_filename()  */
! 
  #include "attribs.h"
  
  /* We may keep statistics about how long which files took to compile.  */
--- 28,34 ----
  #include "c-pragma.h"
  #include "debug.h"
  #include "file-prefix-map.h" /* remap_macro_filename()  */
! #include "langhooks.h"
  #include "attribs.h"
  
  /* We may keep statistics about how long which files took to compile.  */
*************** static void cb_undef (cpp_reader *, unsi
*** 60,66 ****
  void
  init_c_lex (void)
  {
-   struct cpp_callbacks *cb;
    struct c_fileinfo *toplevel;
  
    /* The get_fileinfo data structure must be initialized before
--- 60,65 ----
*************** init_c_lex (void)
*** 73,79 ****
        toplevel->time = body_time;
      }
  
!   cb = cpp_get_callbacks (parse_in);
  
    cb->line_change = cb_line_change;
    cb->ident = cb_ident;
--- 72,78 ----
        toplevel->time = body_time;
      }
  
!   struct cpp_callbacks *cb = cpp_get_callbacks (parse_in);
  
    cb->line_change = cb_line_change;
    cb->ident = cb_ident;
*************** cb_define (cpp_reader *pfile, location_t
*** 275,283 ****
  
  /* #undef callback for DWARF and DWARF2 debug info.  */
  static void
! cb_undef (cpp_reader * ARG_UNUSED (pfile), location_t loc,
! 	  cpp_hashnode *node)
  {
    const struct line_map *map = linemap_lookup (line_table, loc);
    (*debug_hooks->undef) (SOURCE_LINE (linemap_check_ordinary (map), loc),
  			 (const char *) NODE_NAME (node));
--- 274,284 ----
  
  /* #undef callback for DWARF and DWARF2 debug info.  */
  static void
! cb_undef (cpp_reader *pfile, location_t loc, cpp_hashnode *node)
  {
+   if (lang_hooks.preprocess_undef)
+     lang_hooks.preprocess_undef (pfile, loc, node);
+ 
    const struct line_map *map = linemap_lookup (line_table, loc);
    (*debug_hooks->undef) (SOURCE_LINE (linemap_check_ordinary (map), loc),
  			 (const char *) NODE_NAME (node));
*************** get_token_no_padding (cpp_reader *pfile)
*** 301,307 ****
  
  /* Callback for has_attribute.  */
  int
! c_common_has_attribute (cpp_reader *pfile)
  {
    int result = 0;
    tree attr_name = NULL_TREE;
--- 302,308 ----
  
  /* Callback for has_attribute.  */
  int
! c_common_has_attribute (cpp_reader *pfile, bool std_syntax)
  {
    int result = 0;
    tree attr_name = NULL_TREE;
*************** c_common_has_attribute (cpp_reader *pfil
*** 320,354 ****
        attr_name = get_identifier ((const char *)
  				  cpp_token_as_text (pfile, token));
        attr_name = canonicalize_attr_name (attr_name);
!       if (c_dialect_cxx ())
  	{
! 	  int idx = 0;
! 	  const cpp_token *nxt_token;
! 	  do
! 	    nxt_token = cpp_peek_token (pfile, idx++);
! 	  while (nxt_token->type == CPP_PADDING);
! 	  if (nxt_token->type == CPP_SCOPE)
  	    {
! 	      get_token_no_padding (pfile); // Eat scope.
! 	      nxt_token = get_token_no_padding (pfile);
! 	      if (nxt_token->type == CPP_NAME)
! 		{
! 		  tree attr_ns = attr_name;
! 		  tree attr_id
! 		    = get_identifier ((const char *)
! 				      cpp_token_as_text (pfile, nxt_token));
! 		  attr_name = build_tree_list (attr_ns, attr_id);
! 		}
! 	      else
! 		{
! 		  cpp_error (pfile, CPP_DL_ERROR,
! 			     "attribute identifier required after scope");
! 		  attr_name = NULL_TREE;
! 		}
  	    }
  	  else
  	    {
! 	      /* Some standard attributes need special handling.  */
  	      if (is_attribute_p ("noreturn", attr_name))
  		result = 200809;
  	      else if (is_attribute_p ("deprecated", attr_name))
--- 321,357 ----
        attr_name = get_identifier ((const char *)
  				  cpp_token_as_text (pfile, token));
        attr_name = canonicalize_attr_name (attr_name);
!       bool have_scope = false;
!       int idx = 0;
!       const cpp_token *nxt_token;
!       do
! 	nxt_token = cpp_peek_token (pfile, idx++);
!       while (nxt_token->type == CPP_PADDING);
!       if (nxt_token->type == CPP_SCOPE)
  	{
! 	  have_scope = true;
! 	  get_token_no_padding (pfile); // Eat scope.
! 	  nxt_token = get_token_no_padding (pfile);
! 	  if (nxt_token->type == CPP_NAME)
  	    {
! 	      tree attr_ns = attr_name;
! 	      tree attr_id
! 		= get_identifier ((const char *)
! 				  cpp_token_as_text (pfile, nxt_token));
! 	      attr_name = build_tree_list (attr_ns, attr_id);
  	    }
  	  else
  	    {
! 	      cpp_error (pfile, CPP_DL_ERROR,
! 			 "attribute identifier required after scope");
! 	      attr_name = NULL_TREE;
! 	    }
! 	}
!       else
! 	{
! 	  /* Some standard attributes need special handling.  */
! 	  if (c_dialect_cxx ())
! 	    {
  	      if (is_attribute_p ("noreturn", attr_name))
  		result = 200809;
  	      else if (is_attribute_p ("deprecated", attr_name))
*************** c_common_has_attribute (cpp_reader *pfil
*** 362,372 ****
  		result = 201803;
  	      else if (is_attribute_p ("nodiscard", attr_name))
  		result = 201907;
- 	      if (result)
- 		attr_name = NULL_TREE;
  	    }
  	}
!       if (attr_name)
  	{
  	  init_attributes ();
  	  const struct attribute_spec *attr = lookup_attribute_spec (attr_name);
--- 365,384 ----
  		result = 201803;
  	      else if (is_attribute_p ("nodiscard", attr_name))
  		result = 201907;
  	    }
+ 	  else
+ 	    {
+ 	      if (is_attribute_p ("deprecated", attr_name)
+ 		  || is_attribute_p ("maybe_unused", attr_name)
+ 		  || is_attribute_p ("fallthrough", attr_name))
+ 		result = 201904;
+ 	      else if (is_attribute_p ("nodiscard", attr_name))
+ 		result = 202003;
+ 	    }
+ 	  if (result)
+ 	    attr_name = NULL_TREE;
  	}
!       if (attr_name && (have_scope || !std_syntax))
  	{
  	  init_attributes ();
  	  const struct attribute_spec *attr = lookup_attribute_spec (attr_name);
*************** c_lex_with_flags (tree *value, location_
*** 655,662 ****
        *value = build_int_cst (integer_type_node, tok->val.pragma);
        break;
  
-       /* These tokens should not be visible outside cpplib.  */
      case CPP_HEADER_NAME:
      case CPP_MACRO_ARG:
        gcc_unreachable ();
  
--- 667,677 ----
        *value = build_int_cst (integer_type_node, tok->val.pragma);
        break;
  
      case CPP_HEADER_NAME:
+       *value = build_string (tok->val.str.len, (const char *)tok->val.str.text);
+       break;
+ 
+       /* This token should not be visible outside cpplib.  */
      case CPP_MACRO_ARG:
        gcc_unreachable ();
  
*************** interpret_integer (const cpp_token *toke
*** 819,824 ****
--- 834,847 ----
      type = ((flags & CPP_N_UNSIGNED)
  	    ? widest_unsigned_literal_type_node
  	    : widest_integer_literal_type_node);
+   else if (flags & CPP_N_SIZE_T)
+     {
+       /* itk refers to fundamental types not aliased size types.  */
+       if (flags & CPP_N_UNSIGNED)
+ 	type = size_type_node;
+       else
+ 	type = signed_size_type_node;
+     }
    else
      {
        type = integer_types[itk];
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-objc.h gcc-11.1.0/gcc/c-family/c-objc.h
*** gcc-10.3.0/gcc/c-family/c-objc.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-objc.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of Objective-C front-end entry points used for C and C++.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of Objective-C front-end entry points used for C and C++.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** enum objc_property_attribute_group
*** 44,49 ****
--- 44,51 ----
    OBJC_PROPATTR_GROUP_READWRITE,
    OBJC_PROPATTR_GROUP_ASSIGN,
    OBJC_PROPATTR_GROUP_ATOMIC,
+   OBJC_PROPATTR_GROUP_NULLABLE,
+   OBJC_PROPATTR_GROUP_CLASS,
    OBJC_PROPATTR_GROUP_MAX
  };
  
*************** enum objc_property_attribute_kind
*** 59,64 ****
--- 61,71 ----
    OBJC_PROPERTY_ATTR_COPY =		( 7 << 8)|OBJC_PROPATTR_GROUP_ASSIGN,
    OBJC_PROPERTY_ATTR_ATOMIC =		( 8 << 8)|OBJC_PROPATTR_GROUP_ATOMIC,
    OBJC_PROPERTY_ATTR_NONATOMIC =	( 9 << 8)|OBJC_PROPATTR_GROUP_ATOMIC,
+   OBJC_PROPERTY_ATTR_NULL_UNSPECIFIED = (12 << 8)|OBJC_PROPATTR_GROUP_NULLABLE,
+   OBJC_PROPERTY_ATTR_NULLABLE =		(13 << 8)|OBJC_PROPATTR_GROUP_NULLABLE,
+   OBJC_PROPERTY_ATTR_NONNULL =		(14 << 8)|OBJC_PROPATTR_GROUP_NULLABLE,
+   OBJC_PROPERTY_ATTR_NULL_RESETTABLE =	(15 << 8)|OBJC_PROPATTR_GROUP_NULLABLE,
+   OBJC_PROPERTY_ATTR_CLASS =		(16 << 8)|OBJC_PROPATTR_GROUP_CLASS,
    OBJC_PROPERTY_ATTR_MAX =		(255 << 8|OBJC_PROPATTR_GROUP_MAX)
  };
  
*************** enum objc_property_attribute_kind
*** 68,73 ****
--- 75,81 ----
     attribute.  */
  struct property_attribute_info
  {
+   property_attribute_info () = default;
    property_attribute_info (tree name, location_t loc,
  			   enum objc_property_attribute_kind k)
     : name (name), ident (NULL_TREE), prop_loc (loc), prop_kind (k),
*************** extern tree objc_get_protocol_qualified_
*** 121,127 ****
  extern tree objc_get_class_reference (tree);
  extern tree objc_get_class_ivars (tree);
  extern bool objc_detect_field_duplicates (bool);
! extern void objc_start_class_interface (tree, tree, tree, tree);
  extern void objc_start_category_interface (tree, tree, tree, tree);
  extern void objc_start_protocol (tree, tree, tree);
  extern void objc_continue_interface (void);
--- 129,135 ----
  extern tree objc_get_class_reference (tree);
  extern tree objc_get_class_ivars (tree);
  extern bool objc_detect_field_duplicates (bool);
! extern void objc_start_class_interface (tree, location_t, tree, tree, tree);
  extern void objc_start_category_interface (tree, tree, tree, tree);
  extern void objc_start_protocol (tree, tree, tree);
  extern void objc_continue_interface (void);
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-omp.c gcc-11.1.0/gcc/c-family/c-omp.c
*** gcc-10.3.0/gcc/c-family/c-omp.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-omp.c	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* This file contains routines to construct OpenACC and OpenMP constructs,
     called from parsing in the C and C++ front ends.
  
!    Copyright (C) 2005-2020 Free Software Foundation, Inc.
     Contributed by Richard Henderson <rth@redhat.com>,
  		  Diego Novillo <dnovillo@redhat.com>.
  
--- 1,7 ----
  /* This file contains routines to construct OpenACC and OpenMP constructs,
     called from parsing in the C and C++ front ends.
  
!    Copyright (C) 2005-2021 Free Software Foundation, Inc.
     Contributed by Richard Henderson <rth@redhat.com>,
  		  Diego Novillo <dnovillo@redhat.com>.
  
*************** along with GCC; see the file COPYING3.
*** 34,39 ****
--- 34,41 ----
  #include "memmodel.h"
  #include "attribs.h"
  #include "gimplify.h"
+ #include "langhooks.h"
+ #include "bitmap.h"
  
  
  /* Complete a #pragma oacc wait construct.  LOC is the location of
*************** c_finish_omp_taskgroup (location_t loc,
*** 105,110 ****
--- 107,123 ----
  tree
  c_finish_omp_critical (location_t loc, tree body, tree name, tree clauses)
  {
+   gcc_assert (!clauses || OMP_CLAUSE_CODE (clauses) == OMP_CLAUSE_HINT);
+   if (name == NULL_TREE
+       && clauses != NULL_TREE
+       && integer_nonzerop (OMP_CLAUSE_HINT_EXPR (clauses)))
+     {
+       error_at (OMP_CLAUSE_LOCATION (clauses),
+ 		"%<#pragma omp critical%> with %<hint%> clause requires "
+ 		"a name, except when %<omp_sync_hint_none%> is used");
+       return error_mark_node;
+     }
+ 
    tree stmt = make_node (OMP_CRITICAL);
    TREE_TYPE (stmt) = void_type_node;
    OMP_CRITICAL_BODY (stmt) = body;
*************** struct c_omp_check_loop_iv_data
*** 1041,1053 ****
--- 1054,1090 ----
  {
    tree declv;
    bool fail;
+   bool maybe_nonrect;
    location_t stmt_loc;
    location_t expr_loc;
    int kind;
+   int idx;
    walk_tree_lh lh;
    hash_set<tree> *ppset;
  };
  
+ /* Return -1 if DECL is not a loop iterator in loop nest D, otherwise
+    return the index of the loop in which it is an iterator.
+    Return TREE_VEC_LENGTH (d->declv) if it is a C++ range for iterator.  */
+ 
+ static int
+ c_omp_is_loop_iterator (tree decl, struct c_omp_check_loop_iv_data *d)
+ {
+   for (int i = 0; i < TREE_VEC_LENGTH (d->declv); i++)
+     if (decl == TREE_VEC_ELT (d->declv, i)
+ 	|| (TREE_CODE (TREE_VEC_ELT (d->declv, i)) == TREE_LIST
+ 	    && decl == TREE_PURPOSE (TREE_VEC_ELT (d->declv, i))))
+       return i;
+     else if (TREE_CODE (TREE_VEC_ELT (d->declv, i)) == TREE_LIST
+ 	     && TREE_CHAIN (TREE_VEC_ELT (d->declv, i))
+ 	     && (TREE_CODE (TREE_CHAIN (TREE_VEC_ELT (d->declv, i)))
+ 		 == TREE_VEC)
+ 	     && decl == TREE_VEC_ELT (TREE_CHAIN (TREE_VEC_ELT (d->declv,
+ 						  i)), 2))
+       return TREE_VEC_LENGTH (d->declv);
+   return -1;
+ }
+ 
  /* Helper function called via walk_tree, to diagnose uses
     of associated loop IVs inside of lb, b and incr expressions
     of OpenMP loops.  */
*************** c_omp_check_loop_iv_r (tree *tp, int *wa
*** 1059,1109 ****
      = (struct c_omp_check_loop_iv_data *) data;
    if (DECL_P (*tp))
      {
!       int i;
!       for (i = 0; i < TREE_VEC_LENGTH (d->declv); i++)
! 	if (*tp == TREE_VEC_ELT (d->declv, i)
! 	    || (TREE_CODE (TREE_VEC_ELT (d->declv, i)) == TREE_LIST
! 		&& *tp == TREE_PURPOSE (TREE_VEC_ELT (d->declv, i)))
! 	    || (TREE_CODE (TREE_VEC_ELT (d->declv, i)) == TREE_LIST
! 		&& TREE_CHAIN (TREE_VEC_ELT (d->declv, i))
! 		&& (TREE_CODE (TREE_CHAIN (TREE_VEC_ELT (d->declv, i)))
! 		    == TREE_VEC)
! 		&& *tp == TREE_VEC_ELT (TREE_CHAIN (TREE_VEC_ELT (d->declv,
! 								  i)), 2)))
! 	  {
! 	    location_t loc = d->expr_loc;
! 	    if (loc == UNKNOWN_LOCATION)
! 	      loc = d->stmt_loc;
! 	    switch (d->kind)
! 	      {
! 	      case 0:
! 		error_at (loc, "initializer expression refers to "
! 			       "iteration variable %qD", *tp);
! 		break;
! 	      case 1:
! 		error_at (loc, "condition expression refers to "
! 			       "iteration variable %qD", *tp);
! 		break;
! 	      case 2:
! 		error_at (loc, "increment expression refers to "
! 			       "iteration variable %qD", *tp);
! 		break;
! 	      }
! 	    d->fail = true;
! 	  }
      }
    /* Don't walk dtors added by C++ wrap_cleanups_r.  */
    else if (TREE_CODE (*tp) == TRY_CATCH_EXPR
  	   && TRY_CATCH_IS_CLEANUP (*tp))
      {
        *walk_subtrees = 0;
        return walk_tree_1 (&TREE_OPERAND (*tp, 0), c_omp_check_loop_iv_r, data,
! 			  d->ppset, d->lh);
      }
  
    return NULL_TREE;
  }
  
  /* Diagnose invalid references to loop iterators in lb, b and incr
     expressions.  */
  
--- 1096,1329 ----
      = (struct c_omp_check_loop_iv_data *) data;
    if (DECL_P (*tp))
      {
!       int idx = c_omp_is_loop_iterator (*tp, d);
!       if (idx == -1)
! 	return NULL_TREE;
! 
!       if ((d->kind & 4) && idx < d->idx)
! 	{
! 	  d->maybe_nonrect = true;
! 	  return NULL_TREE;
! 	}
! 
!       if (d->ppset->add (*tp))
! 	return NULL_TREE;
! 
!       location_t loc = d->expr_loc;
!       if (loc == UNKNOWN_LOCATION)
! 	loc = d->stmt_loc;
! 
!       switch (d->kind & 3)
! 	{
! 	case 0:
! 	  error_at (loc, "initializer expression refers to "
! 			 "iteration variable %qD", *tp);
! 	  break;
! 	case 1:
! 	  error_at (loc, "condition expression refers to "
! 			 "iteration variable %qD", *tp);
! 	  break;
! 	case 2:
! 	  error_at (loc, "increment expression refers to "
! 			 "iteration variable %qD", *tp);
! 	  break;
! 	}
!       d->fail = true;
      }
+   else if (d->ppset->add (*tp))
+     *walk_subtrees = 0;
    /* Don't walk dtors added by C++ wrap_cleanups_r.  */
    else if (TREE_CODE (*tp) == TRY_CATCH_EXPR
  	   && TRY_CATCH_IS_CLEANUP (*tp))
      {
        *walk_subtrees = 0;
        return walk_tree_1 (&TREE_OPERAND (*tp, 0), c_omp_check_loop_iv_r, data,
! 			  NULL, d->lh);
      }
  
    return NULL_TREE;
  }
  
+ /* Check the allowed expressions for non-rectangular loop nest lb and b
+    expressions.  Return the outer var decl referenced in the expression.  */
+ 
+ static tree
+ c_omp_check_nonrect_loop_iv (tree *tp, struct c_omp_check_loop_iv_data *d,
+ 			     walk_tree_lh lh)
+ {
+   d->maybe_nonrect = false;
+   if (d->fail)
+     return NULL_TREE;
+ 
+   hash_set<tree> pset;
+   hash_set<tree> *ppset = d->ppset;
+   d->ppset = &pset;
+ 
+   tree t = *tp;
+   if (TREE_CODE (t) == TREE_VEC
+       && TREE_VEC_LENGTH (t) == 3
+       && DECL_P (TREE_VEC_ELT (t, 0))
+       && c_omp_is_loop_iterator (TREE_VEC_ELT (t, 0), d) >= 0)
+     {
+       d->kind &= 3;
+       walk_tree_1 (&TREE_VEC_ELT (t, 1), c_omp_check_loop_iv_r, d, NULL, lh);
+       walk_tree_1 (&TREE_VEC_ELT (t, 1), c_omp_check_loop_iv_r, d, NULL, lh);
+       d->ppset = ppset;
+       return d->fail ? NULL_TREE : TREE_VEC_ELT (t, 0);
+     }
+ 
+   while (CONVERT_EXPR_P (t))
+     t = TREE_OPERAND (t, 0);
+ 
+   tree a1 = t, a2 = integer_zero_node;
+   bool neg_a1 = false, neg_a2 = false;
+   switch (TREE_CODE (t))
+     {
+     case PLUS_EXPR:
+     case MINUS_EXPR:
+       a1 = TREE_OPERAND (t, 0);
+       a2 = TREE_OPERAND (t, 1);
+       while (CONVERT_EXPR_P (a1))
+ 	a1 = TREE_OPERAND (a1, 0);
+       while (CONVERT_EXPR_P (a2))
+ 	a2 = TREE_OPERAND (a2, 0);
+       if (DECL_P (a1) && c_omp_is_loop_iterator (a1, d) >= 0)
+ 	{
+ 	  a2 = TREE_OPERAND (t, 1);
+ 	  if (TREE_CODE (t) == MINUS_EXPR)
+ 	    neg_a2 = true;
+ 	  t = a1;
+ 	  break;
+ 	}
+       if (DECL_P (a2) && c_omp_is_loop_iterator (a2, d) >= 0)
+ 	{
+ 	  a1 = TREE_OPERAND (t, 0);
+ 	  if (TREE_CODE (t) == MINUS_EXPR)
+ 	    neg_a1 = true;
+ 	  t = a2;
+ 	  a2 = a1;
+ 	  break;
+ 	}
+       if (TREE_CODE (a1) == MULT_EXPR && TREE_CODE (a2) == MULT_EXPR)
+ 	{
+ 	  tree o1 = TREE_OPERAND (a1, 0);
+ 	  tree o2 = TREE_OPERAND (a1, 1);
+ 	  while (CONVERT_EXPR_P (o1))
+ 	    o1 = TREE_OPERAND (o1, 0);
+ 	  while (CONVERT_EXPR_P (o2))
+ 	    o2 = TREE_OPERAND (o2, 0);
+ 	  if ((DECL_P (o1) && c_omp_is_loop_iterator (o1, d) >= 0)
+ 	      || (DECL_P (o2) && c_omp_is_loop_iterator (o2, d) >= 0))
+ 	    {
+ 	      a2 = TREE_OPERAND (t, 1);
+ 	      if (TREE_CODE (t) == MINUS_EXPR)
+ 		neg_a2 = true;
+ 	      t = a1;
+ 	      break;
+ 	    }
+ 	}
+       if (TREE_CODE (a2) == MULT_EXPR)
+ 	{
+ 	  a1 = TREE_OPERAND (t, 0);
+ 	  if (TREE_CODE (t) == MINUS_EXPR)
+ 	    neg_a1 = true;
+ 	  t = a2;
+ 	  a2 = a1;
+ 	  break;
+ 	}
+       if (TREE_CODE (a1) == MULT_EXPR)
+ 	{
+ 	  a2 = TREE_OPERAND (t, 1);
+ 	  if (TREE_CODE (t) == MINUS_EXPR)
+ 	    neg_a2 = true;
+ 	  t = a1;
+ 	  break;
+ 	}
+       a2 = integer_zero_node;
+       break;
+     default:
+       break;
+     }
+ 
+   a1 = integer_one_node;
+   if (TREE_CODE (t) == MULT_EXPR)
+     {
+       tree o1 = TREE_OPERAND (t, 0);
+       tree o2 = TREE_OPERAND (t, 1);
+       while (CONVERT_EXPR_P (o1))
+ 	o1 = TREE_OPERAND (o1, 0);
+       while (CONVERT_EXPR_P (o2))
+ 	o2 = TREE_OPERAND (o2, 0);
+       if (DECL_P (o1) && c_omp_is_loop_iterator (o1, d) >= 0)
+ 	{
+ 	  a1 = TREE_OPERAND (t, 1);
+ 	  t = o1;
+ 	}
+       else if (DECL_P (o2) && c_omp_is_loop_iterator (o2, d) >= 0)
+ 	{
+ 	  a1 = TREE_OPERAND (t, 0);
+ 	  t = o2;
+ 	}
+     }
+ 
+   d->kind &= 3;
+   tree ret = NULL_TREE;
+   if (DECL_P (t) && c_omp_is_loop_iterator (t, d) >= 0)
+     {
+       location_t loc = d->expr_loc;
+       if (loc == UNKNOWN_LOCATION)
+ 	loc = d->stmt_loc;
+       if (!lang_hooks.types_compatible_p (TREE_TYPE (*tp), TREE_TYPE (t)))
+ 	{
+ 	  if (d->kind == 0)
+ 	    error_at (loc, "outer iteration variable %qD used in initializer"
+ 			   " expression has type other than %qT",
+ 		      t, TREE_TYPE (*tp));
+ 	  else
+ 	    error_at (loc, "outer iteration variable %qD used in condition"
+ 			   " expression has type other than %qT",
+ 		      t, TREE_TYPE (*tp));
+ 	  d->fail = true;
+ 	}
+       else if (!INTEGRAL_TYPE_P (TREE_TYPE (a1)))
+ 	{
+ 	  error_at (loc, "outer iteration variable %qD multiplier expression"
+ 			 " %qE is not integral", t, a1);
+ 	  d->fail = true;
+ 	}
+       else if (!INTEGRAL_TYPE_P (TREE_TYPE (a2)))
+ 	{
+ 	  error_at (loc, "outer iteration variable %qD addend expression"
+ 			 " %qE is not integral", t, a2);
+ 	  d->fail = true;
+ 	}
+       else
+ 	{
+ 	  walk_tree_1 (&a1, c_omp_check_loop_iv_r, d, NULL, lh);
+ 	  walk_tree_1 (&a2, c_omp_check_loop_iv_r, d, NULL, lh);
+         }
+       if (!d->fail)
+ 	{
+ 	  a1 = fold_convert (TREE_TYPE (*tp), a1);
+ 	  a2 = fold_convert (TREE_TYPE (*tp), a2);
+ 	  if (neg_a1)
+ 	    a1 = fold_build1 (NEGATE_EXPR, TREE_TYPE (a1), a1);
+ 	  if (neg_a2)
+ 	    a2 = fold_build1 (NEGATE_EXPR, TREE_TYPE (a2), a2);
+ 	  ret = t;
+ 	  *tp = make_tree_vec (3);
+ 	  TREE_VEC_ELT (*tp, 0) = t;
+ 	  TREE_VEC_ELT (*tp, 1) = a1;
+ 	  TREE_VEC_ELT (*tp, 2) = a2;
+ 	}
+     }
+   else
+     walk_tree_1 (&t, c_omp_check_loop_iv_r, d, NULL, lh);
+ 
+   d->ppset = ppset;
+   return ret;
+ }
+ 
  /* Diagnose invalid references to loop iterators in lb, b and incr
     expressions.  */
  
*************** c_omp_check_loop_iv (tree stmt, tree dec
*** 1116,1121 ****
--- 1336,1342 ----
  
    data.declv = declv;
    data.fail = false;
+   data.maybe_nonrect = false;
    data.stmt_loc = EXPR_LOCATION (stmt);
    data.lh = lh;
    data.ppset = &pset;
*************** c_omp_check_loop_iv (tree stmt, tree dec
*** 1129,1137 ****
        gcc_assert (TREE_OPERAND (cond, 0) == decl);
        tree incr = TREE_VEC_ELT (OMP_FOR_INCR (stmt), i);
        data.expr_loc = EXPR_LOCATION (TREE_OPERAND (init, 1));
!       data.kind = 0;
        walk_tree_1 (&TREE_OPERAND (init, 1),
! 		   c_omp_check_loop_iv_r, &data, &pset, lh);
        /* Don't warn for C++ random access iterators here, the
  	 expression then involves the subtraction and always refers
  	 to the original value.  The C++ FE needs to warn on those
--- 1350,1380 ----
        gcc_assert (TREE_OPERAND (cond, 0) == decl);
        tree incr = TREE_VEC_ELT (OMP_FOR_INCR (stmt), i);
        data.expr_loc = EXPR_LOCATION (TREE_OPERAND (init, 1));
!       tree vec_outer1 = NULL_TREE, vec_outer2 = NULL_TREE;
!       int kind = 0;
!       if (i > 0
! 	  && (unsigned) c_omp_is_loop_iterator (decl, &data) < (unsigned) i)
! 	{
! 	  location_t loc = data.expr_loc;
! 	  if (loc == UNKNOWN_LOCATION)
! 	    loc = data.stmt_loc;
! 	  error_at (loc, "the same loop iteration variables %qD used in "
! 			 "multiple associated loops", decl);
! 	  data.fail = true;
! 	}
!       /* Handle non-rectangular loop nests.  */
!       if (TREE_CODE (stmt) != OACC_LOOP
! 	  && (TREE_CODE (TREE_OPERAND (init, 1)) == TREE_VEC
! 	      || INTEGRAL_TYPE_P (TREE_TYPE (TREE_OPERAND (init, 1))))
! 	  && i > 0)
! 	kind = 4;
!       data.kind = kind;
!       data.idx = i;
        walk_tree_1 (&TREE_OPERAND (init, 1),
! 		   c_omp_check_loop_iv_r, &data, NULL, lh);
!       if (data.maybe_nonrect)
! 	vec_outer1 = c_omp_check_nonrect_loop_iv (&TREE_OPERAND (init, 1),
! 						  &data, lh);
        /* Don't warn for C++ random access iterators here, the
  	 expression then involves the subtraction and always refers
  	 to the original value.  The C++ FE needs to warn on those
*************** c_omp_check_loop_iv (tree stmt, tree dec
*** 1141,1150 ****
  	      && decl == TREE_PURPOSE (TREE_VEC_ELT (declv, i))))
  	{
  	  data.expr_loc = EXPR_LOCATION (cond);
! 	  data.kind = 1;
  	  walk_tree_1 (&TREE_OPERAND (cond, 1),
! 		       c_omp_check_loop_iv_r, &data, &pset, lh);
  	}
        if (TREE_CODE (incr) == MODIFY_EXPR)
  	{
  	  gcc_assert (TREE_OPERAND (incr, 0) == decl);
--- 1384,1407 ----
  	      && decl == TREE_PURPOSE (TREE_VEC_ELT (declv, i))))
  	{
  	  data.expr_loc = EXPR_LOCATION (cond);
! 	  data.kind = kind | 1;
  	  walk_tree_1 (&TREE_OPERAND (cond, 1),
! 		       c_omp_check_loop_iv_r, &data, NULL, lh);
! 	  if (data.maybe_nonrect)
! 	    vec_outer2 = c_omp_check_nonrect_loop_iv (&TREE_OPERAND (cond, 1),
! 						      &data, lh);
  	}
+       if (vec_outer1 && vec_outer2 && vec_outer1 != vec_outer2)
+ 	{
+ 	  location_t loc = data.expr_loc;
+ 	  if (loc == UNKNOWN_LOCATION)
+ 	    loc = data.stmt_loc;
+ 	  error_at (loc, "two different outer iteration variables %qD and %qD"
+ 			 " used in a single loop", vec_outer1, vec_outer2);
+ 	  data.fail = true;
+ 	}
+       if (vec_outer1 || vec_outer2)
+ 	OMP_FOR_NON_RECTANGULAR (stmt) = 1;
        if (TREE_CODE (incr) == MODIFY_EXPR)
  	{
  	  gcc_assert (TREE_OPERAND (incr, 0) == decl);
*************** c_omp_check_loop_iv (tree stmt, tree dec
*** 1155,1167 ****
  	    {
  	      data.expr_loc = EXPR_LOCATION (TREE_OPERAND (incr, 0));
  	      walk_tree_1 (&TREE_OPERAND (incr, 0),
! 			   c_omp_check_loop_iv_r, &data, &pset, lh);
  	    }
  	  else
  	    {
  	      data.expr_loc = EXPR_LOCATION (TREE_OPERAND (incr, 1));
  	      walk_tree_1 (&TREE_OPERAND (incr, 1),
! 			   c_omp_check_loop_iv_r, &data, &pset, lh);
  	    }
  	}
      }
--- 1412,1424 ----
  	    {
  	      data.expr_loc = EXPR_LOCATION (TREE_OPERAND (incr, 0));
  	      walk_tree_1 (&TREE_OPERAND (incr, 0),
! 			   c_omp_check_loop_iv_r, &data, NULL, lh);
  	    }
  	  else
  	    {
  	      data.expr_loc = EXPR_LOCATION (TREE_OPERAND (incr, 1));
  	      walk_tree_1 (&TREE_OPERAND (incr, 1),
! 			   c_omp_check_loop_iv_r, &data, NULL, lh);
  	    }
  	}
      }
*************** c_omp_check_loop_iv (tree stmt, tree dec
*** 1171,1177 ****
  /* Similar, but allows to check the init or cond expressions individually.  */
  
  bool
! c_omp_check_loop_iv_exprs (location_t stmt_loc, tree declv, tree decl,
  			   tree init, tree cond, walk_tree_lh lh)
  {
    hash_set<tree> pset;
--- 1428,1434 ----
  /* Similar, but allows to check the init or cond expressions individually.  */
  
  bool
! c_omp_check_loop_iv_exprs (location_t stmt_loc, tree declv, int i, tree decl,
  			   tree init, tree cond, walk_tree_lh lh)
  {
    hash_set<tree> pset;
*************** c_omp_check_loop_iv_exprs (location_t st
*** 1179,1193 ****
  
    data.declv = declv;
    data.fail = false;
    data.stmt_loc = stmt_loc;
    data.lh = lh;
    data.ppset = &pset;
    if (init)
      {
        data.expr_loc = EXPR_LOCATION (init);
        data.kind = 0;
        walk_tree_1 (&init,
! 		   c_omp_check_loop_iv_r, &data, &pset, lh);
      }
    if (cond)
      {
--- 1436,1459 ----
  
    data.declv = declv;
    data.fail = false;
+   data.maybe_nonrect = false;
    data.stmt_loc = stmt_loc;
    data.lh = lh;
    data.ppset = &pset;
+   data.idx = i;
+   if (i > 0
+       && (unsigned) c_omp_is_loop_iterator (decl, &data) < (unsigned) i)
+     {
+       error_at (stmt_loc, "the same loop iteration variables %qD used in "
+       			  "multiple associated loops", decl);
+       data.fail = true;
+     }
    if (init)
      {
        data.expr_loc = EXPR_LOCATION (init);
        data.kind = 0;
        walk_tree_1 (&init,
! 		   c_omp_check_loop_iv_r, &data, NULL, lh);
      }
    if (cond)
      {
*************** c_omp_check_loop_iv_exprs (location_t st
*** 1196,1205 ****
        data.kind = 1;
        if (TREE_OPERAND (cond, 0) == decl)
  	walk_tree_1 (&TREE_OPERAND (cond, 1),
! 		     c_omp_check_loop_iv_r, &data, &pset, lh);
        else
  	walk_tree_1 (&TREE_OPERAND (cond, 0),
! 		     c_omp_check_loop_iv_r, &data, &pset, lh);
      }
    return !data.fail;
  }
--- 1462,1471 ----
        data.kind = 1;
        if (TREE_OPERAND (cond, 0) == decl)
  	walk_tree_1 (&TREE_OPERAND (cond, 1),
! 		     c_omp_check_loop_iv_r, &data, NULL, lh);
        else
  	walk_tree_1 (&TREE_OPERAND (cond, 0),
! 		     c_omp_check_loop_iv_r, &data, NULL, lh);
      }
    return !data.fail;
  }
*************** c_omp_split_clauses (location_t loc, enu
*** 1310,1315 ****
--- 1576,1582 ----
    tree next, c;
    enum c_omp_clause_split s;
    int i;
+   bool has_dup_allocate = false;
  
    for (i = 0; i < C_OMP_CLAUSE_SPLIT_COUNT; i++)
      cclauses[i] = NULL;
*************** c_omp_split_clauses (location_t loc, enu
*** 1933,1938 ****
--- 2200,2270 ----
  	  else
  	    s = C_OMP_CLAUSE_SPLIT_FOR;
  	  break;
+ 	/* Allocate clause is allowed on target, teams, distribute, parallel,
+ 	   for, sections and taskloop.  Distribute it to all.  */
+ 	case OMP_CLAUSE_ALLOCATE:
+ 	  s = C_OMP_CLAUSE_SPLIT_COUNT;
+ 	  for (i = 0; i < C_OMP_CLAUSE_SPLIT_COUNT; i++)
+ 	    {
+ 	      switch (i)
+ 		{
+ 		case C_OMP_CLAUSE_SPLIT_TARGET:
+ 		  if ((mask & (OMP_CLAUSE_MASK_1
+ 			       << PRAGMA_OMP_CLAUSE_MAP)) == 0)
+ 		    continue;
+ 		  break;
+ 		case C_OMP_CLAUSE_SPLIT_TEAMS:
+ 		  if ((mask & (OMP_CLAUSE_MASK_1
+ 			       << PRAGMA_OMP_CLAUSE_NUM_TEAMS)) == 0)
+ 		    continue;
+ 		  break;
+ 		case C_OMP_CLAUSE_SPLIT_DISTRIBUTE:
+ 		  if ((mask & (OMP_CLAUSE_MASK_1
+ 			       << PRAGMA_OMP_CLAUSE_DIST_SCHEDULE)) == 0)
+ 		    continue;
+ 		  break;
+ 		case C_OMP_CLAUSE_SPLIT_PARALLEL:
+ 		  if ((mask & (OMP_CLAUSE_MASK_1
+ 			       << PRAGMA_OMP_CLAUSE_NUM_THREADS)) == 0)
+ 		    continue;
+ 		  break;
+ 		case C_OMP_CLAUSE_SPLIT_FOR:
+ 		  STATIC_ASSERT (C_OMP_CLAUSE_SPLIT_SECTIONS
+ 				 == C_OMP_CLAUSE_SPLIT_FOR
+ 				 && (C_OMP_CLAUSE_SPLIT_TASKLOOP
+ 				     == C_OMP_CLAUSE_SPLIT_FOR)
+ 				 && (C_OMP_CLAUSE_SPLIT_LOOP
+ 				     == C_OMP_CLAUSE_SPLIT_FOR));
+ 		  if (code == OMP_SECTIONS)
+ 		    break;
+ 		  if ((mask & (OMP_CLAUSE_MASK_1
+ 			       << PRAGMA_OMP_CLAUSE_SCHEDULE)) != 0)
+ 		    break;
+ 		  if ((mask & (OMP_CLAUSE_MASK_1
+ 			       << PRAGMA_OMP_CLAUSE_NOGROUP)) != 0)
+ 		    break;
+ 		  continue;
+ 		case C_OMP_CLAUSE_SPLIT_SIMD:
+ 		  continue;
+ 		default:
+ 		  gcc_unreachable ();
+ 		}
+ 	      if (s != C_OMP_CLAUSE_SPLIT_COUNT)
+ 		{
+ 		  c = build_omp_clause (OMP_CLAUSE_LOCATION (clauses),
+ 					OMP_CLAUSE_ALLOCATE);
+ 		  OMP_CLAUSE_DECL (c)
+ 		    = OMP_CLAUSE_DECL (clauses);
+ 		  OMP_CLAUSE_ALLOCATE_ALLOCATOR (c)
+ 		    = OMP_CLAUSE_ALLOCATE_ALLOCATOR (clauses);
+ 		  OMP_CLAUSE_CHAIN (c) = cclauses[s];
+ 		  cclauses[s] = c;
+ 		  has_dup_allocate = true;
+ 		}
+ 	      s = (enum c_omp_clause_split) i;
+ 	    }
+ 	  gcc_assert (s != C_OMP_CLAUSE_SPLIT_COUNT);
+ 	  break;
  	default:
  	  gcc_unreachable ();
  	}
*************** c_omp_split_clauses (location_t loc, enu
*** 1940,1945 ****
--- 2272,2402 ----
        cclauses[s] = clauses;
      }
  
+   if (has_dup_allocate)
+     {
+       bool need_prune = false;
+       bitmap_obstack_initialize (NULL);
+       for (i = 0; i < C_OMP_CLAUSE_SPLIT_SIMD - (code == OMP_LOOP); i++)
+ 	if (cclauses[i])
+ 	  {
+ 	    bitmap_head allocate_head;
+ 	    bitmap_initialize (&allocate_head, &bitmap_default_obstack);
+ 	    for (c = cclauses[i]; c; c = OMP_CLAUSE_CHAIN (c))
+ 	      if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_ALLOCATE
+ 		  && DECL_P (OMP_CLAUSE_DECL (c)))
+ 		bitmap_set_bit (&allocate_head,
+ 				DECL_UID (OMP_CLAUSE_DECL (c)));
+ 	    for (c = cclauses[i]; c; c = OMP_CLAUSE_CHAIN (c))
+ 	      switch (OMP_CLAUSE_CODE (c))
+ 		{
+ 		case OMP_CLAUSE_REDUCTION:
+ 		case OMP_CLAUSE_IN_REDUCTION:
+ 		case OMP_CLAUSE_TASK_REDUCTION:
+ 		  if (TREE_CODE (OMP_CLAUSE_DECL (c)) == MEM_REF)
+ 		    {
+ 		      tree t = TREE_OPERAND (OMP_CLAUSE_DECL (c), 0);
+ 		      if (TREE_CODE (t) == POINTER_PLUS_EXPR)
+ 			t = TREE_OPERAND (t, 0);
+ 		      if (TREE_CODE (t) == ADDR_EXPR
+ 			  || TREE_CODE (t) == INDIRECT_REF)
+ 			t = TREE_OPERAND (t, 0);
+ 		      if (DECL_P (t))
+ 			bitmap_clear_bit (&allocate_head, DECL_UID (t));
+ 		      break;
+ 		    }
+ 		  else if (TREE_CODE (OMP_CLAUSE_DECL (c)) == TREE_LIST)
+ 		    {
+ 		      tree t;
+ 		      for (t = OMP_CLAUSE_DECL (c);
+ 			   TREE_CODE (t) == TREE_LIST; t = TREE_CHAIN (t))
+ 			;
+ 		      if (DECL_P (t))
+ 			bitmap_clear_bit (&allocate_head, DECL_UID (t));
+ 		      break;
+ 		    }
+ 		  /* FALLTHRU */
+ 		case OMP_CLAUSE_PRIVATE:
+ 		case OMP_CLAUSE_FIRSTPRIVATE:
+ 		case OMP_CLAUSE_LASTPRIVATE:
+ 		case OMP_CLAUSE_LINEAR:
+ 		  if (DECL_P (OMP_CLAUSE_DECL (c)))
+ 		    bitmap_clear_bit (&allocate_head,
+ 				      DECL_UID (OMP_CLAUSE_DECL (c)));
+ 		  break;
+ 		default:
+ 		  break;
+ 		}
+ 	    for (c = cclauses[i]; c; c = OMP_CLAUSE_CHAIN (c))
+ 	      if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_ALLOCATE
+ 		  && DECL_P (OMP_CLAUSE_DECL (c))
+ 		  && bitmap_bit_p (&allocate_head,
+ 				   DECL_UID (OMP_CLAUSE_DECL (c))))
+ 		{
+ 		  /* Mark allocate clauses which don't have corresponding
+ 		     explicit data sharing clause.  */
+ 		  OMP_CLAUSE_ALLOCATE_COMBINED (c) = 1;
+ 		  need_prune = true;
+ 		}
+ 	  }
+       bitmap_obstack_release (NULL);
+       if (need_prune)
+ 	{
+ 	  /* At least one allocate clause has been marked.  Walk all the
+ 	     duplicated allocate clauses in sync.  If it is marked in all
+ 	     constituent constructs, diagnose it as invalid and remove
+ 	     them.  Otherwise, remove all marked inner clauses inside
+ 	     a construct that doesn't have them marked.  Keep the outer
+ 	     marked ones, because some clause duplication is done only
+ 	     during gimplification.  */
+ 	  tree *p[C_OMP_CLAUSE_SPLIT_COUNT];
+ 	  for (i = 0; i < C_OMP_CLAUSE_SPLIT_COUNT; i++)
+ 	    if (cclauses[i] == NULL_TREE
+ 		|| i == C_OMP_CLAUSE_SPLIT_SIMD
+ 		|| (i == C_OMP_CLAUSE_SPLIT_LOOP && code == OMP_LOOP))
+ 	      p[i] = NULL;
+ 	    else
+ 	      p[i] = &cclauses[i];
+ 	  do
+ 	    {
+ 	      int j = -1;
+ 	      tree seen = NULL_TREE;
+ 	      for (i = C_OMP_CLAUSE_SPLIT_COUNT - 1; i >= 0; i--)
+ 		if (p[i])
+ 		  {
+ 		    while (*p[i]
+ 			   && OMP_CLAUSE_CODE (*p[i]) != OMP_CLAUSE_ALLOCATE)
+ 		      p[i] = &OMP_CLAUSE_CHAIN (*p[i]);
+ 		    if (*p[i] == NULL_TREE)
+ 		      {
+ 			i = C_OMP_CLAUSE_SPLIT_COUNT;
+ 			break;
+ 		      }
+ 		    if (!OMP_CLAUSE_ALLOCATE_COMBINED (*p[i]) && j == -1)
+ 		      j = i;
+ 		    seen = *p[i];
+ 		  }
+ 	      if (i == C_OMP_CLAUSE_SPLIT_COUNT)
+ 		break;
+ 	      if (j == -1)
+ 		error_at (OMP_CLAUSE_LOCATION (seen),
+ 			  "%qD specified in %<allocate%> clause but not in "
+ 			  "an explicit privatization clause",
+ 			  OMP_CLAUSE_DECL (seen));
+ 	      for (i = 0; i < C_OMP_CLAUSE_SPLIT_COUNT; i++)
+ 		if (p[i])
+ 		  {
+ 		    if (i > j)
+ 		      /* Remove.  */
+ 		      *p[i] = OMP_CLAUSE_CHAIN (*p[i]);
+ 		    else
+ 		      /* Keep.  */
+ 		      p[i] = &OMP_CLAUSE_CHAIN (*p[i]);
+ 		  }
+ 	    }
+ 	  while (1);
+ 	}
+     }
+ 
    if (!flag_checking)
      return;
  
*************** c_omp_predefined_variable (tree decl)
*** 2104,2110 ****
    return false;
  }
  
! /* True if OpenMP sharing attribute of DECL is predetermined.  */
  
  enum omp_clause_default_kind
  c_omp_predetermined_sharing (tree decl)
--- 2561,2568 ----
    return false;
  }
  
! /* OMP_CLAUSE_DEFAULT_UNSPECIFIED unless OpenMP sharing attribute of DECL
!    is predetermined.  */
  
  enum omp_clause_default_kind
  c_omp_predetermined_sharing (tree decl)
*************** c_omp_predetermined_sharing (tree decl)
*** 2123,2128 ****
--- 2581,2607 ----
    return OMP_CLAUSE_DEFAULT_UNSPECIFIED;
  }
  
+ /* OMP_CLAUSE_DEFAULTMAP_CATEGORY_UNSPECIFIED unless OpenMP mapping attribute
+    of DECL is predetermined.  */
+ 
+ enum omp_clause_defaultmap_kind
+ c_omp_predetermined_mapping (tree decl)
+ {
+   /* Predetermine artificial variables holding integral values, those
+      are usually result of gimplify_one_sizepos or SAVE_EXPR
+      gimplification.  */
+   if (VAR_P (decl)
+       && DECL_ARTIFICIAL (decl)
+       && INTEGRAL_TYPE_P (TREE_TYPE (decl)))
+     return OMP_CLAUSE_DEFAULTMAP_FIRSTPRIVATE;
+ 
+   if (c_omp_predefined_variable (decl))
+     return OMP_CLAUSE_DEFAULTMAP_TO;
+ 
+   return OMP_CLAUSE_DEFAULTMAP_CATEGORY_UNSPECIFIED;
+ }
+ 
+ 
  /* Diagnose errors in an OpenMP context selector, return CTX if
     it is correct or error_mark_node otherwise.  */
  
*************** c_omp_map_clause_name (tree clause, bool
*** 2292,2294 ****
--- 2771,2863 ----
      }
    return omp_clause_code_name[OMP_CLAUSE_CODE (clause)];
  }
+ 
+ /* Used to merge map clause information in c_omp_adjust_map_clauses.  */
+ struct map_clause
+ {
+   tree clause;
+   bool firstprivate_ptr_p;
+   bool decl_mapped;
+   bool omp_declare_target;
+   map_clause (void) : clause (NULL_TREE), firstprivate_ptr_p (false),
+     decl_mapped (false), omp_declare_target (false) { }
+ };
+ 
+ /* Adjust map clauses after normal clause parsing, mainly to turn specific
+    base-pointer map cases into attach/detach and mark them addressable.  */
+ void
+ c_omp_adjust_map_clauses (tree clauses, bool is_target)
+ {
+   if (!is_target)
+     {
+       /* If this is not a target construct, just turn firstprivate pointers
+ 	 into attach/detach, the runtime will check and do the rest.  */
+ 
+       for (tree c = clauses; c; c = OMP_CLAUSE_CHAIN (c))
+ 	if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_MAP
+ 	    && OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_FIRSTPRIVATE_POINTER
+ 	    && DECL_P (OMP_CLAUSE_DECL (c))
+ 	    && POINTER_TYPE_P (TREE_TYPE (OMP_CLAUSE_DECL (c))))
+ 	  {
+ 	    tree ptr = OMP_CLAUSE_DECL (c);
+ 	    OMP_CLAUSE_SET_MAP_KIND (c, GOMP_MAP_ATTACH_DETACH);
+ 	    c_common_mark_addressable_vec (ptr);
+ 	  }
+       return;
+     }
+ 
+   hash_map<tree, map_clause> maps;
+ 
+   for (tree c = clauses; c; c = OMP_CLAUSE_CHAIN (c))
+     if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_MAP
+ 	&& DECL_P (OMP_CLAUSE_DECL (c)))
+       {
+ 	/* If this is for a target construct, the firstprivate pointer
+ 	   is changed to attach/detach if either is true:
+ 	   (1) the base-pointer is mapped in this same construct, or
+ 	   (2) the base-pointer is a variable place on the device by
+ 	       "declare target" directives.
+ 
+ 	   Here we iterate through all map clauses collecting these cases,
+ 	   and merge them with a hash_map to process below.  */
+ 
+ 	if (OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_FIRSTPRIVATE_POINTER
+ 	    && POINTER_TYPE_P (TREE_TYPE (OMP_CLAUSE_DECL (c))))
+ 	  {
+ 	    tree ptr = OMP_CLAUSE_DECL (c);
+ 	    map_clause &mc = maps.get_or_insert (ptr);
+ 	    if (mc.clause == NULL_TREE)
+ 	      mc.clause = c;
+ 	    mc.firstprivate_ptr_p = true;
+ 
+ 	    if (is_global_var (ptr)
+ 		&& lookup_attribute ("omp declare target",
+ 				     DECL_ATTRIBUTES (ptr)))
+ 	      mc.omp_declare_target = true;
+ 	  }
+ 	else if (OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_ALLOC
+ 		 || OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_TO
+ 		 || OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_FROM
+ 		 || OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_TOFROM
+ 		 || OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_ALWAYS_TO
+ 		 || OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_ALWAYS_FROM
+ 		 || OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_ALWAYS_TOFROM)
+ 	  {
+ 	    map_clause &mc = maps.get_or_insert (OMP_CLAUSE_DECL (c));
+ 	    mc.decl_mapped = true;
+ 	  }
+       }
+ 
+   for (hash_map<tree, map_clause>::iterator i = maps.begin ();
+        i != maps.end (); ++i)
+     {
+       map_clause &mc = (*i).second;
+ 
+       if (mc.firstprivate_ptr_p
+ 	  && (mc.decl_mapped || mc.omp_declare_target))
+ 	{
+ 	  OMP_CLAUSE_SET_MAP_KIND (mc.clause, GOMP_MAP_ATTACH_DETACH);
+ 	  c_common_mark_addressable_vec (OMP_CLAUSE_DECL (mc.clause));
+ 	}
+     }
+ }
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-opts.c gcc-11.1.0/gcc/c-family/c-opts.c
*** gcc-10.3.0/gcc/c-family/c-opts.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-opts.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* C/ObjC/C++ command line option handling.
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
     Contributed by Neil Booth.
  
  This file is part of GCC.
--- 1,5 ----
  /* C/ObjC/C++ command line option handling.
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
     Contributed by Neil Booth.
  
  This file is part of GCC.
*************** static void set_std_cxx98 (int);
*** 112,118 ****
  static void set_std_cxx11 (int);
  static void set_std_cxx14 (int);
  static void set_std_cxx17 (int);
! static void set_std_cxx2a (int);
  static void set_std_c89 (int, int);
  static void set_std_c99 (int);
  static void set_std_c11 (int);
--- 112,119 ----
  static void set_std_cxx11 (int);
  static void set_std_cxx14 (int);
  static void set_std_cxx17 (int);
! static void set_std_cxx20 (int);
! static void set_std_cxx23 (int);
  static void set_std_c89 (int, int);
  static void set_std_c99 (int);
  static void set_std_c11 (int);
*************** c_common_init_options (unsigned int deco
*** 234,239 ****
--- 235,241 ----
    cpp_opts = cpp_get_options (parse_in);
    cpp_opts->dollars_in_ident = DOLLARS_IN_IDENTIFIERS;
    cpp_opts->objc = c_dialect_objc ();
+   cpp_opts->deps.modules = true;
  
    /* Reset to avoid warnings on internal definitions.  We set it just
       before passing on command-line options to cpplib.  */
*************** c_common_init_options (unsigned int deco
*** 256,264 ****
  	  }
      }
  
!   /* Set C++ standard to C++14 if not specified on the command line.  */
    if (c_dialect_cxx ())
!     set_std_cxx14 (/*ISO*/false);
  
    global_dc->colorize_source_p = true;
  }
--- 258,266 ----
  	  }
      }
  
!   /* Set C++ standard to C++17 if not specified on the command line.  */
    if (c_dialect_cxx ())
!     set_std_cxx17 (/*ISO*/false);
  
    global_dc->colorize_source_p = true;
  }
*************** c_common_handle_option (size_t scode, co
*** 367,372 ****
--- 369,386 ----
        cpp_opts->deps.phony_targets = true;
        break;
  
+     case OPT_Mmodules:
+       /* Do not set deps_seen, so the user can unconditionally turn
+ 	 this on or off.  */
+       cpp_opts->deps.modules = true;
+       break;
+ 
+     case OPT_Mno_modules:
+       /* Do not set deps_seen, so the user can unconditionally turn
+ 	 this on or off.  */
+       cpp_opts->deps.modules = false;
+       break;
+ 
      case OPT_MQ:
      case OPT_MT:
        deps_seen = true;
*************** c_common_handle_option (size_t scode, co
*** 504,515 ****
  	cpp_opts->track_macro_expansion = 2;
        break;
  
-     case OPT_ftabstop_:
-       /* It is documented that we silently ignore silly values.  */
-       if (value >= 1 && value <= 100)
- 	cpp_opts->tabstop = value;
-       break;
- 
      case OPT_fexec_charset_:
        cpp_opts->narrow_charset = arg;
        break;
--- 518,523 ----
*************** c_common_handle_option (size_t scode, co
*** 636,645 ****
  	set_std_cxx17 (code == OPT_std_c__17 /* ISO */);
        break;
  
!     case OPT_std_c__2a:
!     case OPT_std_gnu__2a:
        if (!preprocessing_asm_p)
! 	set_std_cxx2a (code == OPT_std_c__2a /* ISO */);
        break;
  
      case OPT_std_c90:
--- 644,659 ----
  	set_std_cxx17 (code == OPT_std_c__17 /* ISO */);
        break;
  
!     case OPT_std_c__20:
!     case OPT_std_gnu__20:
        if (!preprocessing_asm_p)
! 	set_std_cxx20 (code == OPT_std_c__20 /* ISO */);
!       break;
! 
!     case OPT_std_c__23:
!     case OPT_std_gnu__23:
!       if (!preprocessing_asm_p)
! 	set_std_cxx23 (code == OPT_std_c__23 /* ISO */);
        break;
  
      case OPT_std_c90:
*************** default_handle_c_option (size_t code ATT
*** 758,765 ****
  bool
  c_common_post_options (const char **pfilename)
  {
-   struct cpp_callbacks *cb;
- 
    /* Canonicalize the input and output filenames.  */
    if (in_fnames == NULL)
      {
--- 772,777 ----
*************** c_common_post_options (const char **pfil
*** 925,935 ****
    /* -Wcomma-subscript is enabled by default in C++20.  */
    SET_OPTION_IF_UNSET (&global_options, &global_options_set,
  		       warn_comma_subscript,
! 		       cxx_dialect >= cxx2a && warn_deprecated);
  
    /* -Wvolatile is enabled by default in C++20.  */
    SET_OPTION_IF_UNSET (&global_options, &global_options_set, warn_volatile,
! 		       cxx_dialect >= cxx2a && warn_deprecated);
  
    /* Declone C++ 'structors if -Os.  */
    if (flag_declone_ctor_dtor == -1)
--- 937,957 ----
    /* -Wcomma-subscript is enabled by default in C++20.  */
    SET_OPTION_IF_UNSET (&global_options, &global_options_set,
  		       warn_comma_subscript,
! 		       cxx_dialect >= cxx20 && warn_deprecated);
  
    /* -Wvolatile is enabled by default in C++20.  */
    SET_OPTION_IF_UNSET (&global_options, &global_options_set, warn_volatile,
! 		       cxx_dialect >= cxx20 && warn_deprecated);
! 
!   /* -Wdeprecated-enum-enum-conversion is enabled by default in C++20.  */
!   SET_OPTION_IF_UNSET (&global_options, &global_options_set,
! 		       warn_deprecated_enum_enum_conv,
! 		       cxx_dialect >= cxx20 && warn_deprecated);
! 
!   /* -Wdeprecated-enum-float-conversion is enabled by default in C++20.  */
!   SET_OPTION_IF_UNSET (&global_options, &global_options_set,
! 		       warn_deprecated_enum_float_conv,
! 		       cxx_dialect >= cxx20 && warn_deprecated);
  
    /* Declone C++ 'structors if -Os.  */
    if (flag_declone_ctor_dtor == -1)
*************** c_common_post_options (const char **pfil
*** 943,949 ****
  
    /* Change flag_abi_version to be the actual current ABI level, for the
       benefit of c_cpp_builtins, and to make comparison simpler.  */
!   const int latest_abi_version = 15;
    /* Generate compatibility aliases for ABI v11 (7.1) by default.  */
    const int abi_compat_default = 11;
  
--- 965,971 ----
  
    /* Change flag_abi_version to be the actual current ABI level, for the
       benefit of c_cpp_builtins, and to make comparison simpler.  */
!   const int latest_abi_version = 16;
    /* Generate compatibility aliases for ABI v11 (7.1) by default.  */
    const int abi_compat_default = 11;
  
*************** c_common_post_options (const char **pfil
*** 1004,1010 ****
  	warn_narrowing = 1;
  
        /* Unless -f{,no-}ext-numeric-literals has been used explicitly,
! 	 for -std=c++{11,14,17,2a} default to -fno-ext-numeric-literals.  */
        if (flag_iso && !global_options_set.x_flag_ext_numeric_literals)
  	cpp_opts->ext_numeric_literals = 0;
      }
--- 1026,1032 ----
  	warn_narrowing = 1;
  
        /* Unless -f{,no-}ext-numeric-literals has been used explicitly,
! 	 for -std=c++{11,14,17,20,23} default to -fno-ext-numeric-literals.  */
        if (flag_iso && !global_options_set.x_flag_ext_numeric_literals)
  	cpp_opts->ext_numeric_literals = 0;
      }
*************** c_common_post_options (const char **pfil
*** 1021,1029 ****
    if (flag_sized_deallocation == -1)
      flag_sized_deallocation = (cxx_dialect >= cxx14);
  
!   /* char8_t support is new in C++2A.  */
    if (flag_char8_t == -1)
!     flag_char8_t = (cxx_dialect >= cxx2a);
  
    if (flag_extern_tls_init)
      {
--- 1043,1051 ----
    if (flag_sized_deallocation == -1)
      flag_sized_deallocation = (cxx_dialect >= cxx14);
  
!   /* char8_t support is new in C++20.  */
    if (flag_char8_t == -1)
!     flag_char8_t = (cxx_dialect >= cxx20);
  
    if (flag_extern_tls_init)
      {
*************** c_common_post_options (const char **pfil
*** 1045,1055 ****
    if (warn_return_type == -1 && c_dialect_cxx ())
      warn_return_type = 1;
  
!   /* C++2a is the final version of concepts. We still use -fconcepts
       to know when concepts are enabled. Note that -fconcepts-ts can
       be used to include additional features, although modified to
       work with the standard.  */
!   if (cxx_dialect >= cxx2a || flag_concepts_ts)
      flag_concepts = 1;
    else if (flag_concepts)
      /* For -std=c++17 -fconcepts, imply -fconcepts-ts.  */
--- 1067,1077 ----
    if (warn_return_type == -1 && c_dialect_cxx ())
      warn_return_type = 1;
  
!   /* C++20 is the final version of concepts. We still use -fconcepts
       to know when concepts are enabled. Note that -fconcepts-ts can
       be used to include additional features, although modified to
       work with the standard.  */
!   if (cxx_dialect >= cxx20 || flag_concepts_ts)
      flag_concepts = 1;
    else if (flag_concepts)
      /* For -std=c++17 -fconcepts, imply -fconcepts-ts.  */
*************** c_common_post_options (const char **pfil
*** 1101,1116 ****
        input_location = UNKNOWN_LOCATION;
      }
  
!   cb = cpp_get_callbacks (parse_in);
    cb->file_change = cb_file_change;
    cb->dir_change = cb_dir_change;
    cpp_post_options (parse_in);
    init_global_opts_from_cpp (&global_options, cpp_get_options (parse_in));
  
    input_location = UNKNOWN_LOCATION;
  
    *pfilename = this_input_filename
!     = cpp_read_main_file (parse_in, in_fnames[0]);
    /* Don't do any compilation or preprocessing if there is no input file.  */
    if (this_input_filename == NULL)
      {
--- 1123,1144 ----
        input_location = UNKNOWN_LOCATION;
      }
  
!   struct cpp_callbacks *cb = cpp_get_callbacks (parse_in);
    cb->file_change = cb_file_change;
    cb->dir_change = cb_dir_change;
+   if (lang_hooks.preprocess_options)
+     lang_hooks.preprocess_options (parse_in);
    cpp_post_options (parse_in);
    init_global_opts_from_cpp (&global_options, cpp_get_options (parse_in));
  
    input_location = UNKNOWN_LOCATION;
  
    *pfilename = this_input_filename
!     = cpp_read_main_file (parse_in, in_fnames[0],
! 			  /* We'll inject preamble pieces if this is
! 			     not preprocessed.  */
! 			  !cpp_opts->preprocessed);
! 
    /* Don't do any compilation or preprocessing if there is no input file.  */
    if (this_input_filename == NULL)
      {
*************** handle_deferred_opts (void)
*** 1317,1331 ****
    if (!deps_seen)
      return;
  
!   mkdeps *deps = cpp_get_deps (parse_in);
! 
!   for (size_t i = 0; i < deferred_count; i++)
!     {
!       struct deferred_opt *opt = &deferred_opts[i];
  
!       if (opt->code == OPT_MT || opt->code == OPT_MQ)
! 	deps_add_target (deps, opt->arg, opt->code == OPT_MQ);
!     }
  }
  
  /* These settings are appropriate for GCC, but not necessarily so for
--- 1345,1358 ----
    if (!deps_seen)
      return;
  
!   if (mkdeps *deps = cpp_get_deps (parse_in))
!     for (unsigned i = 0; i < deferred_count; i++)
!       {
! 	struct deferred_opt *opt = &deferred_opts[i];
  
! 	if (opt->code == OPT_MT || opt->code == OPT_MQ)
! 	  deps_add_target (deps, opt->arg, opt->code == OPT_MQ);
!       }
  }
  
  /* These settings are appropriate for GCC, but not necessarily so for
*************** c_finish_options (void)
*** 1430,1435 ****
--- 1457,1463 ----
  	= linemap_check_ordinary (linemap_add (line_table, LC_RENAME, 0,
  					       _("<built-in>"), 0));
        cb_file_change (parse_in, bltin_map);
+       linemap_line_start (line_table, 0, 1);
  
        /* Make sure all of the builtins about to be declared have
  	 BUILTINS_LOCATION has their location_t.  */
*************** c_finish_options (void)
*** 1453,1461 ****
  	= linemap_check_ordinary (linemap_add (line_table, LC_RENAME, 0,
  					       _("<command-line>"), 0));
        cb_file_change (parse_in, cmd_map);
  
        /* All command line defines must have the same location.  */
!       cpp_force_token_locations (parse_in, cmd_map->start_location);
        for (size_t i = 0; i < deferred_count; i++)
  	{
  	  struct deferred_opt *opt = &deferred_opts[i];
--- 1481,1490 ----
  	= linemap_check_ordinary (linemap_add (line_table, LC_RENAME, 0,
  					       _("<command-line>"), 0));
        cb_file_change (parse_in, cmd_map);
+       linemap_line_start (line_table, 0, 1);
  
        /* All command line defines must have the same location.  */
!       cpp_force_token_locations (parse_in, line_table->highest_line);
        for (size_t i = 0; i < deferred_count; i++)
  	{
  	  struct deferred_opt *opt = &deferred_opts[i];
*************** push_command_line_include (void)
*** 1541,1547 ****
        cpp_opts->warn_unused_macros = cpp_warn_unused_macros;
        /* Restore the line map back to the main file.  */
        if (!cpp_opts->preprocessed)
! 	cpp_change_file (parse_in, LC_RENAME, this_input_filename);
  
        /* Set this here so the client can change the option if it wishes,
  	 and after stacking the main file so we don't trace the main file.  */
--- 1570,1582 ----
        cpp_opts->warn_unused_macros = cpp_warn_unused_macros;
        /* Restore the line map back to the main file.  */
        if (!cpp_opts->preprocessed)
! 	{
! 	  cpp_change_file (parse_in, LC_RENAME, this_input_filename);
! 	  if (lang_hooks.preprocess_main_file)
! 	    /* We're starting the main file.  Inform the FE of that.  */
! 	    lang_hooks.preprocess_main_file
! 	      (parse_in, line_table, LINEMAPS_LAST_ORDINARY_MAP (line_table));
! 	}
  
        /* Set this here so the client can change the option if it wishes,
  	 and after stacking the main file so we don't trace the main file.  */
*************** push_command_line_include (void)
*** 1551,1564 ****
  
  /* File change callback.  Has to handle -include files.  */
  static void
! cb_file_change (cpp_reader * ARG_UNUSED (pfile),
! 		const line_map_ordinary *new_map)
  {
    if (flag_preprocess_only)
      pp_file_change (new_map);
    else
      fe_file_change (new_map);
  
    if (new_map 
        && (new_map->reason == LC_ENTER || new_map->reason == LC_RENAME))
      {
--- 1586,1604 ----
  
  /* File change callback.  Has to handle -include files.  */
  static void
! cb_file_change (cpp_reader *reader, const line_map_ordinary *new_map)
  {
    if (flag_preprocess_only)
      pp_file_change (new_map);
    else
      fe_file_change (new_map);
  
+   if (new_map && cpp_opts->preprocessed
+       && lang_hooks.preprocess_main_file && MAIN_FILE_P (new_map)
+       && ORDINARY_MAP_STARTING_LINE_NUMBER (new_map))
+     /* We're starting the main file.  Inform the FE of that.  */
+     lang_hooks.preprocess_main_file (reader, line_table, new_map);
+ 
    if (new_map 
        && (new_map->reason == LC_ENTER || new_map->reason == LC_RENAME))
      {
*************** set_std_cxx17 (int iso)
*** 1722,1742 ****
    lang_hooks.name = "GNU C++17";
  }
  
! /* Set the C++ 202a draft standard (without GNU extensions if ISO).  */
  static void
! set_std_cxx2a (int iso)
  {
!   cpp_set_lang (parse_in, iso ? CLK_CXX2A: CLK_GNUCXX2A);
    flag_no_gnu_keywords = iso;
    flag_no_nonansi_builtin = iso;
    flag_iso = iso;
!   /* C++17 includes the C11 standard library.  */
    flag_isoc94 = 1;
    flag_isoc99 = 1;
    flag_isoc11 = 1;
!   /* C++2a includes concepts. */
!   cxx_dialect = cxx2a;
!   lang_hooks.name = "GNU C++17"; /* Pretend C++17 until standardization.  */
  }
  
  /* Args to -d specify what to dump.  Silently ignore
--- 1762,1801 ----
    lang_hooks.name = "GNU C++17";
  }
  
! /* Set the C++ 2020 standard (without GNU extensions if ISO).  */
  static void
! set_std_cxx20 (int iso)
  {
!   cpp_set_lang (parse_in, iso ? CLK_CXX20: CLK_GNUCXX20);
    flag_no_gnu_keywords = iso;
    flag_no_nonansi_builtin = iso;
    flag_iso = iso;
!   /* C++20 includes the C11 standard library.  */
    flag_isoc94 = 1;
    flag_isoc99 = 1;
    flag_isoc11 = 1;
!   /* C++20 includes coroutines. */
!   flag_coroutines = true;
!   cxx_dialect = cxx20;
!   lang_hooks.name = "GNU C++20";
! }
! 
! /* Set the C++ 2023 standard (without GNU extensions if ISO).  */
! static void
! set_std_cxx23 (int iso)
! {
!   cpp_set_lang (parse_in, iso ? CLK_CXX23: CLK_GNUCXX23);
!   flag_no_gnu_keywords = iso;
!   flag_no_nonansi_builtin = iso;
!   flag_iso = iso;
!   /* C++23 includes the C11 standard library.  */
!   flag_isoc94 = 1;
!   flag_isoc99 = 1;
!   flag_isoc11 = 1;
!   /* C++23 includes coroutines.  */
!   flag_coroutines = true;
!   cxx_dialect = cxx23;
!   lang_hooks.name = "GNU C++23";
  }
  
  /* Args to -d specify what to dump.  Silently ignore
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-pch.c gcc-11.1.0/gcc/c-family/c-pch.c
*** gcc-10.3.0/gcc/c-family/c-pch.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-pch.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Precompiled header implementation for the C languages.
!    Copyright (C) 2000-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Precompiled header implementation for the C languages.
!    Copyright (C) 2000-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** c_common_valid_pch (cpp_reader *pfile, c
*** 206,218 ****
    /* Perform a quick test of whether this is a valid
       precompiled header for the current language.  */
  
    sizeread = read (fd, ident, IDENT_LENGTH + 16);
    if (sizeread == -1)
      fatal_error (input_location, "cannot read %s: %m", name);
    else if (sizeread != IDENT_LENGTH + 16)
      {
!       if (cpp_get_options (pfile)->warn_invalid_pch)
! 	cpp_error (pfile, CPP_DL_WARNING, "%s: too short to be a PCH file",
  		   name);
        return 2;
      }
--- 206,221 ----
    /* Perform a quick test of whether this is a valid
       precompiled header for the current language.  */
  
+   /* C++ modules and PCH don't play together.  */
+   if (flag_modules)
+     return 2;
+ 
    sizeread = read (fd, ident, IDENT_LENGTH + 16);
    if (sizeread == -1)
      fatal_error (input_location, "cannot read %s: %m", name);
    else if (sizeread != IDENT_LENGTH + 16)
      {
!       cpp_warning (pfile, CPP_W_INVALID_PCH, "%s: too short to be a PCH file",
  		   name);
        return 2;
      }
*************** c_common_valid_pch (cpp_reader *pfile, c
*** 220,246 ****
    pch_ident = get_ident();
    if (memcmp (ident, pch_ident, IDENT_LENGTH) != 0)
      {
!       if (cpp_get_options (pfile)->warn_invalid_pch)
! 	{
! 	  if (memcmp (ident, pch_ident, 5) == 0)
! 	    /* It's a PCH, for the right language, but has the wrong version.
! 	     */
! 	    cpp_error (pfile, CPP_DL_WARNING,
  		       "%s: not compatible with this GCC version", name);
! 	  else if (memcmp (ident, pch_ident, 4) == 0)
! 	    /* It's a PCH for the wrong language.  */
! 	    cpp_error (pfile, CPP_DL_WARNING, "%s: not for %s", name,
  		       lang_hooks.name);
! 	  else
! 	    /* Not any kind of PCH.  */
! 	    cpp_error (pfile, CPP_DL_WARNING, "%s: not a PCH file", name);
! 	}
        return 2;
      }
    if (memcmp (ident + IDENT_LENGTH, executable_checksum, 16) != 0)
      {
!       if (cpp_get_options (pfile)->warn_invalid_pch)
! 	cpp_error (pfile, CPP_DL_WARNING,
  		   "%s: created by a different GCC executable", name);
        return 2;
      }
--- 223,244 ----
    pch_ident = get_ident();
    if (memcmp (ident, pch_ident, IDENT_LENGTH) != 0)
      {
! 	if (memcmp (ident, pch_ident, 5) == 0)
! 	  /* It's a PCH, for the right language, but has the wrong version.  */
! 	  cpp_warning (pfile, CPP_W_INVALID_PCH,
  		       "%s: not compatible with this GCC version", name);
! 	else if (memcmp (ident, pch_ident, 4) == 0)
! 	  /* It's a PCH for the wrong language.  */
! 	  cpp_warning (pfile, CPP_W_INVALID_PCH, "%s: not for %s", name,
  		       lang_hooks.name);
! 	else
! 	  /* Not any kind of PCH.  */
! 	  cpp_warning (pfile, CPP_W_INVALID_PCH, "%s: not a PCH file", name);
        return 2;
      }
    if (memcmp (ident + IDENT_LENGTH, executable_checksum, 16) != 0)
      {
!       cpp_warning (pfile, CPP_W_INVALID_PCH,
  		   "%s: created by a different GCC executable", name);
        return 2;
      }
*************** c_common_valid_pch (cpp_reader *pfile, c
*** 257,264 ****
    if (v.debug_info_type != write_symbols
        && write_symbols != NO_DEBUG)
      {
!       if (cpp_get_options (pfile)->warn_invalid_pch)
! 	cpp_error (pfile, CPP_DL_WARNING,
  		   "%s: created with -g%s, but used with -g%s", name,
  		   debug_type_names[v.debug_info_type],
  		   debug_type_names[write_symbols]);
--- 255,261 ----
    if (v.debug_info_type != write_symbols
        && write_symbols != NO_DEBUG)
      {
!       cpp_warning (pfile, CPP_W_INVALID_PCH,
  		   "%s: created with -g%s, but used with -g%s", name,
  		   debug_type_names[v.debug_info_type],
  		   debug_type_names[write_symbols]);
*************** c_common_valid_pch (cpp_reader *pfile, c
*** 271,278 ****
      for (i = 0; i < MATCH_SIZE; i++)
        if (*pch_matching[i].flag_var != v.match[i])
  	{
! 	  if (cpp_get_options (pfile)->warn_invalid_pch)
! 	    cpp_error (pfile, CPP_DL_WARNING,
  		       "%s: settings for %s do not match", name,
  		       pch_matching[i].flag_name);
  	  return 2;
--- 268,274 ----
      for (i = 0; i < MATCH_SIZE; i++)
        if (*pch_matching[i].flag_var != v.match[i])
  	{
! 	  cpp_warning (pfile, CPP_W_INVALID_PCH,
  		       "%s: settings for %s do not match", name,
  		       pch_matching[i].flag_name);
  	  return 2;
*************** c_common_valid_pch (cpp_reader *pfile, c
*** 287,294 ****
       check one function.  */
    if (v.pch_init != &pch_init)
      {
!       if (cpp_get_options (pfile)->warn_invalid_pch)
! 	cpp_error (pfile, CPP_DL_WARNING,
  		   "%s: had text segment at different address", name);
        return 2;
      }
--- 283,289 ----
       check one function.  */
    if (v.pch_init != &pch_init)
      {
!       cpp_warning (pfile, CPP_W_INVALID_PCH,
  		   "%s: had text segment at different address", name);
        return 2;
      }
*************** c_common_valid_pch (cpp_reader *pfile, c
*** 305,312 ****
      free (this_file_data);
      if (msg != NULL)
        {
! 	if (cpp_get_options (pfile)->warn_invalid_pch)
! 	  cpp_error (pfile, CPP_DL_WARNING, "%s: %s", name, msg);
  	return 2;
        }
    }
--- 300,306 ----
      free (this_file_data);
      if (msg != NULL)
        {
! 	cpp_warning (pfile, CPP_W_INVALID_PCH, "%s: %s", name, msg);
  	return 2;
        }
    }
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-ppoutput.c gcc-11.1.0/gcc/c-family/c-ppoutput.c
*** gcc-10.3.0/gcc/c-family/c-ppoutput.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-ppoutput.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Preprocess only, using cpplib.
!    Copyright (C) 1995-2020 Free Software Foundation, Inc.
     Written by Per Bothner, 1994-95.
  
     This program is free software; you can redistribute it and/or modify it
--- 1,5 ----
  /* Preprocess only, using cpplib.
!    Copyright (C) 1995-2021 Free Software Foundation, Inc.
     Written by Per Bothner, 1994-95.
  
     This program is free software; you can redistribute it and/or modify it
***************
*** 21,26 ****
--- 21,27 ----
  #include "coretypes.h"
  #include "c-common.h"		/* For flags.  */
  #include "../libcpp/internal.h"
+ #include "langhooks.h"
  #include "c-pragma.h"		/* For parse_in.  */
  #include "file-prefix-map.h"    /* remap_macro_filename()  */
  
*************** static struct
*** 31,37 ****
    FILE *outf;			/* Stream to write to.  */
    const cpp_token *prev;	/* Previous token.  */
    const cpp_token *source;	/* Source token for spacing.  */
!   int src_line;			/* Line number currently being written.  */
    bool printed;			/* True if something output at line.  */
    bool first_time;		/* pp_file_change hasn't been called yet.  */
    bool prev_was_system_token;	/* True if the previous token was a
--- 32,38 ----
    FILE *outf;			/* Stream to write to.  */
    const cpp_token *prev;	/* Previous token.  */
    const cpp_token *source;	/* Source token for spacing.  */
!   unsigned src_line;		/* Line number currently being written.  */
    bool printed;			/* True if something output at line.  */
    bool first_time;		/* pp_file_change hasn't been called yet.  */
    bool prev_was_system_token;	/* True if the previous token was a
*************** static macro_queue *define_queue, *undef
*** 52,58 ****
  
  /* General output routines.  */
  static void scan_translation_unit (cpp_reader *);
- static void print_lines_directives_only (int, const void *, size_t);
  static void scan_translation_unit_directives_only (cpp_reader *);
  static void scan_translation_unit_trad (cpp_reader *);
  static void account_for_newlines (const unsigned char *, size_t);
--- 53,58 ----
*************** init_pp_output (FILE *out_stream)
*** 165,297 ****
    print.prev_was_system_token = false;
  }
  
! /* Writes out the preprocessed file, handling spacing and paste
!    avoidance issues.  */
! static void
! scan_translation_unit (cpp_reader *pfile)
  {
!   bool avoid_paste = false;
!   bool do_line_adjustments
!     = cpp_get_options (parse_in)->lang != CLK_ASM
!       && !flag_no_line_commands;
!   bool in_pragma = false;
!   bool line_marker_emitted = false;
  
!   print.source = NULL;
!   for (;;)
      {
!       location_t loc;
!       const cpp_token *token = cpp_get_token_with_location (pfile, &loc);
  
!       if (token->type == CPP_PADDING)
! 	{
! 	  avoid_paste = true;
! 	  if (print.source == NULL
! 	      || (!(print.source->flags & PREV_WHITE)
! 		  && token->val.source == NULL))
! 	    print.source = token->val.source;
! 	  continue;
! 	}
  
!       if (token->type == CPP_EOF)
! 	break;
  
!       /* Subtle logic to output a space if and only if necessary.  */
!       if (avoid_paste)
! 	{
! 	  int src_line = LOCATION_LINE (loc);
  
! 	  if (print.source == NULL)
! 	    print.source = token;
  
! 	  if (src_line != print.src_line
! 	      && do_line_adjustments
! 	      && !in_pragma)
! 	    {
! 	      line_marker_emitted = do_line_change (pfile, token, loc, false);
! 	      putc (' ', print.outf);
! 	      print.printed = true;
! 	    }
! 	  else if (print.source->flags & PREV_WHITE
! 		   || (print.prev
! 		       && cpp_avoid_paste (pfile, print.prev, token))
! 		   || (print.prev == NULL && token->type == CPP_HASH))
! 	    {
! 	      putc (' ', print.outf);
! 	      print.printed = true;
! 	    }
! 	}
!       else if (token->flags & PREV_WHITE)
! 	{
! 	  int src_line = LOCATION_LINE (loc);
  
! 	  if (src_line != print.src_line
! 	      && do_line_adjustments
! 	      && !in_pragma)
! 	    line_marker_emitted = do_line_change (pfile, token, loc, false);
! 	  putc (' ', print.outf);
! 	  print.printed = true;
! 	}
  
!       avoid_paste = false;
!       print.source = NULL;
!       print.prev = token;
!       if (token->type == CPP_PRAGMA)
  	{
! 	  const char *space;
! 	  const char *name;
! 
! 	  line_marker_emitted = maybe_print_line (token->src_loc);
! 	  fputs ("#pragma ", print.outf);
! 	  c_pp_lookup_pragma (token->val.pragma, &space, &name);
! 	  if (space)
! 	    fprintf (print.outf, "%s %s", space, name);
! 	  else
! 	    fprintf (print.outf, "%s", name);
  	  print.printed = true;
- 	  in_pragma = true;
  	}
!       else if (token->type == CPP_PRAGMA_EOL)
  	{
! 	  maybe_print_line (token->src_loc);
! 	  in_pragma = false;
  	}
        else
! 	{
! 	  if (cpp_get_options (parse_in)->debug)
! 	    linemap_dump_location (line_table, token->src_loc, print.outf);
  
! 	  if (do_line_adjustments
! 	      && !in_pragma
! 	      && !line_marker_emitted
! 	      && print.prev_was_system_token != !!in_system_header_at (loc)
! 	      && !is_location_from_builtin_token (loc))
! 	    /* The system-ness of this token is different from the one
! 	       of the previous token.  Let's emit a line change to
! 	       mark the new system-ness before we emit the token.  */
! 	    {
! 	      do_line_change (pfile, token, loc, false);
! 	      print.prev_was_system_token = !!in_system_header_at (loc);
! 	    }
! 	  cpp_output_token (token, print.outf);
! 	  line_marker_emitted = false;
! 	  print.printed = true;
  	}
  
!       /* CPP_COMMENT tokens and raw-string literal tokens can
! 	 have embedded new-line characters.  Rather than enumerating
! 	 all the possible token types just check if token uses
! 	 val.str union member.  */
!       if (cpp_token_val_index (token) == CPP_TOKEN_FLD_STR)
! 	account_for_newlines (token->val.str.text, token->val.str.len);
      }
  }
  
  static void
! print_lines_directives_only (int lines, const void *buf, size_t size)
  {
!   print.src_line += lines;
!   fwrite (buf, 1, size, print.outf);
  }
  
  /* Writes out the preprocessed file, handling spacing and paste
--- 165,393 ----
    print.prev_was_system_token = false;
  }
  
! // FIXME: Ideally we'd just turn the entirety of the print struct into
! // an encapsulated streamer ...
! 
! class token_streamer
  {
!   bool avoid_paste;
!   bool do_line_adjustments;
!   bool in_pragma;
!   bool line_marker_emitted;
  
!  public:
!   token_streamer (cpp_reader *pfile)
!     :avoid_paste (false),
!     do_line_adjustments (cpp_get_options (pfile)->lang != CLK_ASM
! 			 && !flag_no_line_commands),
!     in_pragma (false),
!     line_marker_emitted (false)
      {
!     }
  
!   void begin_pragma () 
!   {
!     in_pragma = true;
!   }
  
!   void stream (cpp_reader *pfile, const cpp_token *tok, location_t);
! };
  
! void
! token_streamer::stream (cpp_reader *pfile, const cpp_token *token,
! 			location_t loc)
! {
!   if (token->type == CPP_PADDING)
!     {
!       avoid_paste = true;
!       if (print.source == NULL
! 	  || (!(print.source->flags & PREV_WHITE)
! 	      && token->val.source == NULL))
! 	print.source = token->val.source;
!       return;
!     }
  
!   if (token->type == CPP_EOF)
!     return;
  
!   /* Subtle logic to output a space if and only if necessary.  */
!   if (avoid_paste)
!     {
!       unsigned src_line = LOCATION_LINE (loc);
  
!       if (print.source == NULL)
! 	print.source = token;
  
!       if (src_line != print.src_line
! 	  && do_line_adjustments
! 	  && !in_pragma)
  	{
! 	  line_marker_emitted = do_line_change (pfile, token, loc, false);
! 	  putc (' ', print.outf);
  	  print.printed = true;
  	}
!       else if (print.source->flags & PREV_WHITE
! 	       || (print.prev
! 		   && cpp_avoid_paste (pfile, print.prev, token))
! 	       || (print.prev == NULL && token->type == CPP_HASH))
  	{
! 	  putc (' ', print.outf);
! 	  print.printed = true;
  	}
+     }
+   else if (token->flags & PREV_WHITE)
+     {
+       unsigned src_line = LOCATION_LINE (loc);
+ 
+       if (src_line != print.src_line
+ 	  && do_line_adjustments
+ 	  && !in_pragma)
+ 	line_marker_emitted = do_line_change (pfile, token, loc, false);
+       putc (' ', print.outf);
+       print.printed = true;
+     }
+ 
+   avoid_paste = false;
+   print.source = NULL;
+   print.prev = token;
+   if (token->type == CPP_PRAGMA)
+     {
+       const char *space;
+       const char *name;
+ 
+       line_marker_emitted = maybe_print_line (token->src_loc);
+       fputs ("#pragma ", print.outf);
+       c_pp_lookup_pragma (token->val.pragma, &space, &name);
+       if (space)
+ 	fprintf (print.outf, "%s %s", space, name);
        else
! 	fprintf (print.outf, "%s", name);
!       print.printed = true;
!       in_pragma = true;
!     }
!   else if (token->type == CPP_PRAGMA_EOL)
!     {
!       maybe_print_line (UNKNOWN_LOCATION);
!       in_pragma = false;
!     }
!   else
!     {
!       if (cpp_get_options (parse_in)->debug)
! 	linemap_dump_location (line_table, token->src_loc, print.outf);
  
!       if (do_line_adjustments
! 	  && !in_pragma
! 	  && !line_marker_emitted
! 	  && print.prev_was_system_token != !!in_system_header_at (loc)
! 	  && !is_location_from_builtin_token (loc))
! 	/* The system-ness of this token is different from the one of
! 	   the previous token.  Let's emit a line change to mark the
! 	   new system-ness before we emit the token.  */
! 	{
! 	  do_line_change (pfile, token, loc, false);
! 	  print.prev_was_system_token = !!in_system_header_at (loc);
  	}
+       cpp_output_token (token, print.outf);
+       line_marker_emitted = false;
+       print.printed = true;
+     }
  
!   /* CPP_COMMENT tokens and raw-string literal tokens can have
!      embedded new-line characters.  Rather than enumerating all the
!      possible token types just check if token uses val.str union
!      member.  */
!   if (cpp_token_val_index (token) == CPP_TOKEN_FLD_STR)
!     account_for_newlines (token->val.str.text, token->val.str.len);
! }
! 
! /* Writes out the preprocessed file, handling spacing and paste
!    avoidance issues.  */
! 
! static void
! scan_translation_unit (cpp_reader *pfile)
! {
!   token_streamer streamer (pfile);
!   uintptr_t filter = 0;
! 
!   if (lang_hooks.preprocess_token)
!     filter = lang_hooks.preprocess_token (pfile, NULL, filter);
! 
!   print.source = NULL;
!   for (;;)
!     {
!       location_t spelling_loc;
!       const cpp_token *token
! 	= cpp_get_token_with_location (pfile, &spelling_loc);
! 
!       streamer.stream (pfile, token, spelling_loc);
!       if (filter)
! 	{
! 	  unsigned flags = lang_hooks.preprocess_token (pfile, token, filter);
! 	  if (flags & lang_hooks::PT_begin_pragma)
! 	    streamer.begin_pragma ();
! 	}
!       if (token->type == CPP_EOF)
! 	break;
      }
+ 
+   if (filter)
+     lang_hooks.preprocess_token (pfile, NULL, filter);
  }
  
+ class do_streamer : public token_streamer
+ {
+  public:
+   uintptr_t filter;
+ 
+   do_streamer (cpp_reader *pfile, uintptr_t filter)
+     :token_streamer (pfile), filter (filter)
+     {
+     }
+ };
+ 
  static void
! directives_only_cb (cpp_reader *pfile, CPP_DO_task task, void *data_, ...)
  {
!   va_list args;
!   va_start (args, data_);
! 
!   do_streamer *streamer = reinterpret_cast <do_streamer *> (data_);
!   switch (task)
!     {
!     default:
!       gcc_unreachable ();
! 
!     case CPP_DO_print:
!       {
! 	print.src_line += va_arg (args, unsigned);
! 
! 	const void *buf = va_arg (args, const void *);
! 	size_t size = va_arg (args, size_t);
! 	fwrite (buf, 1, size, print.outf);
!       }
!       break;
! 
!     case CPP_DO_location:
!       maybe_print_line (va_arg (args, location_t));
!       break;
! 
!     case CPP_DO_token:
!       {
! 	const cpp_token *token = va_arg (args, const cpp_token *);
! 	location_t spelling_loc = va_arg (args, location_t);
! 	streamer->stream (pfile, token, spelling_loc);
! 	if (streamer->filter)
! 	  {
! 	    unsigned flags = lang_hooks.preprocess_token
! 	      (pfile, token, streamer->filter);
! 	    if (flags & lang_hooks::PT_begin_pragma)
! 	      streamer->begin_pragma ();
! 	  }
!       }
!       break;
!     }
! 
!   va_end (args);
  }
  
  /* Writes out the preprocessed file, handling spacing and paste
*************** print_lines_directives_only (int lines,
*** 299,310 ****
  static void
  scan_translation_unit_directives_only (cpp_reader *pfile)
  {
!   struct _cpp_dir_only_callbacks cb;
! 
!   cb.print_lines = print_lines_directives_only;
!   cb.maybe_print_line = maybe_print_line;
! 
!   _cpp_preprocess_dir_only (pfile, &cb);
  }
  
  /* Adjust print.src_line for newlines embedded in output.  */
--- 395,407 ----
  static void
  scan_translation_unit_directives_only (cpp_reader *pfile)
  {
!   uintptr_t filter = 0;
!   if (lang_hooks.preprocess_token)
!     filter = lang_hooks.preprocess_token (pfile, NULL, filter);
!   do_streamer streamer (pfile, filter);
!   cpp_directive_only_process (pfile, &streamer, directives_only_cb);
!   if (streamer.filter)
!     lang_hooks.preprocess_token (pfile, NULL, streamer.filter);
  }
  
  /* Adjust print.src_line for newlines embedded in output.  */
*************** static bool
*** 340,346 ****
  maybe_print_line_1 (location_t src_loc, FILE *stream)
  {
    bool emitted_line_marker = false;
!   int src_line = LOCATION_LINE (src_loc);
    const char *src_file = LOCATION_FILE (src_loc);
  
    /* End the previous line of text.  */
--- 437,443 ----
  maybe_print_line_1 (location_t src_loc, FILE *stream)
  {
    bool emitted_line_marker = false;
!   unsigned src_line = LOCATION_LINE (src_loc);
    const char *src_file = LOCATION_FILE (src_loc);
  
    /* End the previous line of text.  */
*************** maybe_print_line_1 (location_t src_loc,
*** 354,359 ****
--- 451,457 ----
    if (!flag_no_line_commands
        && src_line >= print.src_line
        && src_line < print.src_line + 8
+       && src_loc != UNKNOWN_LOCATION
        && strcmp (src_file, print.src_file) == 0)
      {
        while (src_line > print.src_line)
*************** print_line_1 (location_t src_loc, const
*** 396,424 ****
      putc ('\n', stream);
    print.printed = false;
  
!   if (!flag_no_line_commands)
      {
        const char *file_path = LOCATION_FILE (src_loc);
-       int sysp;
        size_t to_file_len = strlen (file_path);
        unsigned char *to_file_quoted =
           (unsigned char *) alloca (to_file_len * 4 + 1);
-       unsigned char *p;
- 
-       print.src_line = LOCATION_LINE (src_loc);
-       print.src_file = file_path;
  
        /* cpp_quote_string does not nul-terminate, so we have to do it
  	 ourselves.  */
!       p = cpp_quote_string (to_file_quoted,
! 			    (const unsigned char *) file_path,
! 			    to_file_len);
        *p = '\0';
        fprintf (stream, "# %u \"%s\"%s",
! 	       print.src_line == 0 ? 1 : print.src_line,
! 	       to_file_quoted, special_flags);
  
!       sysp = in_system_header_at (src_loc);
        if (sysp == 2)
  	fputs (" 3 4", stream);
        else if (sysp == 1)
--- 494,520 ----
      putc ('\n', stream);
    print.printed = false;
  
!   if (src_loc != UNKNOWN_LOCATION && !flag_no_line_commands)
      {
        const char *file_path = LOCATION_FILE (src_loc);
        size_t to_file_len = strlen (file_path);
        unsigned char *to_file_quoted =
           (unsigned char *) alloca (to_file_len * 4 + 1);
  
        /* cpp_quote_string does not nul-terminate, so we have to do it
  	 ourselves.  */
!       unsigned char *p = cpp_quote_string (to_file_quoted,
! 					   (const unsigned char *) file_path,
! 					   to_file_len);
        *p = '\0';
+ 
+       print.src_line = LOCATION_LINE (src_loc);
+       print.src_file = file_path;
+ 
        fprintf (stream, "# %u \"%s\"%s",
! 	       print.src_line, to_file_quoted, special_flags);
  
!       int sysp = in_system_header_at (src_loc);
        if (sysp == 2)
  	fputs (" 3 4", stream);
        else if (sysp == 1)
*************** cb_define (cpp_reader *pfile, location_t
*** 516,529 ****
    linemap_resolve_location (line_table, line,
  			    LRK_MACRO_DEFINITION_LOCATION,
  			    &map);
!   if (LINEMAP_LINE (map) != 0)
!     print.src_line++;
  }
  
  static void
! cb_undef (cpp_reader *pfile ATTRIBUTE_UNUSED, location_t line,
! 	  cpp_hashnode *node)
  {
    maybe_print_line (line);
    fprintf (print.outf, "#undef %s\n", NODE_NAME (node));
    print.src_line++;
--- 612,625 ----
    linemap_resolve_location (line_table, line,
  			    LRK_MACRO_DEFINITION_LOCATION,
  			    &map);
!   print.src_line++;
  }
  
  static void
! cb_undef (cpp_reader *pfile, location_t line, cpp_hashnode *node)
  {
+   if (lang_hooks.preprocess_undef)
+     lang_hooks.preprocess_undef (pfile, line, node);
    maybe_print_line (line);
    fprintf (print.outf, "#undef %s\n", NODE_NAME (node));
    print.src_line++;
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-pragma.c gcc-11.1.0/gcc/c-family/c-pragma.c
*** gcc-10.3.0/gcc/c-family/c-pragma.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-pragma.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Handle #pragma, system V.4 style.  Supports #pragma weak and #pragma pack.
!    Copyright (C) 1992-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Handle #pragma, system V.4 style.  Supports #pragma weak and #pragma pack.
!    Copyright (C) 1992-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** handle_pragma_diagnostic(cpp_reader *ARG
*** 809,824 ****
    unsigned int option_index = find_opt (option_string + 1, lang_mask);
    if (option_index == OPT_SPECIAL_unknown)
      {
!       option_proposer op;
!       const char *hint = op.suggest_option (option_string + 1);
!       if (hint)
! 	warning_at (loc, OPT_Wpragmas,
! 		    "unknown option after %<#pragma GCC diagnostic%> kind;"
! 		    " did you mean %<-%s%>?", hint);
!       else
! 	warning_at (loc, OPT_Wpragmas,
! 		    "unknown option after %<#pragma GCC diagnostic%> kind");
! 
        return;
      }
    else if (!(cl_options[option_index].flags & CL_WARNING))
--- 809,823 ----
    unsigned int option_index = find_opt (option_string + 1, lang_mask);
    if (option_index == OPT_SPECIAL_unknown)
      {
!       auto_diagnostic_group d;
!       if (warning_at (loc, OPT_Wpragmas,
! 		      "unknown option after %<#pragma GCC diagnostic%> kind"))
! 	{
! 	  option_proposer op;
! 	  const char *hint = op.suggest_option (option_string + 1);
! 	  if (hint)
! 	    inform (loc, "did you mean %<-%s%>?", hint);
! 	}
        return;
      }
    else if (!(cl_options[option_index].flags & CL_WARNING))
*************** handle_pragma_optimize (cpp_reader *ARG_
*** 987,993 ****
  
        parse_optimize_options (args, false);
        current_optimize_pragma = chainon (current_optimize_pragma, args);
!       optimization_current_node = build_optimization_node (&global_options);
        c_cpp_builtins_optimize_pragma (parse_in,
  				      optimization_previous_node,
  				      optimization_current_node);
--- 986,993 ----
  
        parse_optimize_options (args, false);
        current_optimize_pragma = chainon (current_optimize_pragma, args);
!       optimization_current_node
! 	= build_optimization_node (&global_options, &global_options_set);
        c_cpp_builtins_optimize_pragma (parse_in,
  				      optimization_previous_node,
  				      optimization_current_node);
*************** struct GTY(()) opt_stack {
*** 1003,1008 ****
--- 1003,1009 ----
    tree target_strings;
    tree optimize_binary;
    tree optimize_strings;
+   gcc_options * GTY ((skip)) saved_global_options;
  };
  
  static GTY(()) struct opt_stack * options_stack;
*************** handle_pragma_push_options (cpp_reader *
*** 1028,1035 ****
    options_stack = p;
  
    /* Save optimization and target flags in binary format.  */
!   p->optimize_binary = build_optimization_node (&global_options);
!   p->target_binary = build_target_option_node (&global_options);
  
    /* Save optimization and target flags in string list format.  */
    p->optimize_strings = copy_list (current_optimize_pragma);
--- 1029,1043 ----
    options_stack = p;
  
    /* Save optimization and target flags in binary format.  */
!   if (flag_checking)
!     {
!       p->saved_global_options = XNEW (gcc_options);
!       *p->saved_global_options = global_options;
!     }
!   p->optimize_binary = build_optimization_node (&global_options,
! 						&global_options_set);
!   p->target_binary = build_target_option_node (&global_options,
! 					       &global_options_set);
  
    /* Save optimization and target flags in string list format.  */
    p->optimize_strings = copy_list (current_optimize_pragma);
*************** handle_pragma_pop_options (cpp_reader *A
*** 1073,1084 ****
    if (p->optimize_binary != optimization_current_node)
      {
        tree old_optimize = optimization_current_node;
!       cl_optimization_restore (&global_options,
  			       TREE_OPTIMIZATION (p->optimize_binary));
        c_cpp_builtins_optimize_pragma (parse_in, old_optimize,
  				      p->optimize_binary);
        optimization_current_node = p->optimize_binary;
      }
  
    current_target_pragma = p->target_strings;
    current_optimize_pragma = p->optimize_strings;
--- 1081,1097 ----
    if (p->optimize_binary != optimization_current_node)
      {
        tree old_optimize = optimization_current_node;
!       cl_optimization_restore (&global_options, &global_options_set,
  			       TREE_OPTIMIZATION (p->optimize_binary));
        c_cpp_builtins_optimize_pragma (parse_in, old_optimize,
  				      p->optimize_binary);
        optimization_current_node = p->optimize_binary;
      }
+   if (flag_checking)
+     {
+       cl_optimization_compare (p->saved_global_options, &global_options);
+       free (p->saved_global_options);
+     }
  
    current_target_pragma = p->target_strings;
    current_optimize_pragma = p->optimize_strings;
*************** handle_pragma_reset_options (cpp_reader
*** 1111,1117 ****
    if (new_optimize != optimization_current_node)
      {
        tree old_optimize = optimization_current_node;
!       cl_optimization_restore (&global_options,
  			       TREE_OPTIMIZATION (new_optimize));
        c_cpp_builtins_optimize_pragma (parse_in, old_optimize, new_optimize);
        optimization_current_node = new_optimize;
--- 1124,1130 ----
    if (new_optimize != optimization_current_node)
      {
        tree old_optimize = optimization_current_node;
!       cl_optimization_restore (&global_options, &global_options_set,
  			       TREE_OPTIMIZATION (new_optimize));
        c_cpp_builtins_optimize_pragma (parse_in, old_optimize, new_optimize);
        optimization_current_node = new_optimize;
*************** static const struct omp_pragma_def oacc_
*** 1296,1301 ****
--- 1309,1315 ----
    { "wait", PRAGMA_OACC_WAIT }
  };
  static const struct omp_pragma_def omp_pragmas[] = {
+   { "allocate", PRAGMA_OMP_ALLOCATE },
    { "atomic", PRAGMA_OMP_ATOMIC },
    { "barrier", PRAGMA_OMP_BARRIER },
    { "cancel", PRAGMA_OMP_CANCEL },
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-pragma.h gcc-11.1.0/gcc/c-family/c-pragma.h
*** gcc-10.3.0/gcc/c-family/c-pragma.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-pragma.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Pragma related interfaces.
!    Copyright (C) 1995-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Pragma related interfaces.
!    Copyright (C) 1995-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** enum pragma_kind {
*** 42,47 ****
--- 42,48 ----
    PRAGMA_OACC_UPDATE,
    PRAGMA_OACC_WAIT,
  
+   PRAGMA_OMP_ALLOCATE,
    PRAGMA_OMP_ATOMIC,
    PRAGMA_OMP_BARRIER,
    PRAGMA_OMP_CANCEL,
*************** enum pragma_omp_clause {
*** 86,91 ****
--- 87,93 ----
    PRAGMA_OMP_CLAUSE_NONE = 0,
  
    PRAGMA_OMP_CLAUSE_ALIGNED,
+   PRAGMA_OMP_CLAUSE_ALLOCATE,
    PRAGMA_OMP_CLAUSE_BIND,
    PRAGMA_OMP_CLAUSE_COLLAPSE,
    PRAGMA_OMP_CLAUSE_COPYIN,
*************** enum pragma_omp_clause {
*** 93,98 ****
--- 95,101 ----
    PRAGMA_OMP_CLAUSE_DEFAULT,
    PRAGMA_OMP_CLAUSE_DEFAULTMAP,
    PRAGMA_OMP_CLAUSE_DEPEND,
+   PRAGMA_OMP_CLAUSE_DETACH,
    PRAGMA_OMP_CLAUSE_DEVICE,
    PRAGMA_OMP_CLAUSE_DEVICE_TYPE,
    PRAGMA_OMP_CLAUSE_DIST_SCHEDULE,
*************** enum pragma_omp_clause {
*** 149,155 ****
    PRAGMA_OACC_CLAUSE_COPYOUT,
    PRAGMA_OACC_CLAUSE_CREATE,
    PRAGMA_OACC_CLAUSE_DELETE,
-   PRAGMA_OACC_CLAUSE_DETACH,
    PRAGMA_OACC_CLAUSE_DEVICEPTR,
    PRAGMA_OACC_CLAUSE_DEVICE_RESIDENT,
    PRAGMA_OACC_CLAUSE_FINALIZE,
--- 152,157 ----
*************** enum pragma_omp_clause {
*** 172,177 ****
--- 174,180 ----
    PRAGMA_OACC_CLAUSE_COPYIN = PRAGMA_OMP_CLAUSE_COPYIN,
    PRAGMA_OACC_CLAUSE_DEVICE = PRAGMA_OMP_CLAUSE_DEVICE,
    PRAGMA_OACC_CLAUSE_DEFAULT = PRAGMA_OMP_CLAUSE_DEFAULT,
+   PRAGMA_OACC_CLAUSE_DETACH = PRAGMA_OMP_CLAUSE_DETACH,
    PRAGMA_OACC_CLAUSE_FIRSTPRIVATE = PRAGMA_OMP_CLAUSE_FIRSTPRIVATE,
    PRAGMA_OACC_CLAUSE_IF = PRAGMA_OMP_CLAUSE_IF,
    PRAGMA_OACC_CLAUSE_PRIVATE = PRAGMA_OMP_CLAUSE_PRIVATE,
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-pretty-print.c gcc-11.1.0/gcc/c-family/c-pretty-print.c
*** gcc-10.3.0/gcc/c-family/c-pretty-print.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-pretty-print.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines common to both C and C++ pretty-printers.
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
     Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
  
  This file is part of GCC.
--- 1,5 ----
  /* Subroutines common to both C and C++ pretty-printers.
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
     Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 22,27 ****
--- 22,28 ----
  #include "system.h"
  #include "coretypes.h"
  #include "c-pretty-print.h"
+ #include "gimple-pretty-print.h"
  #include "diagnostic.h"
  #include "stor-layout.h"
  #include "stringpool.h"
*************** along with GCC; see the file COPYING3.
*** 30,35 ****
--- 31,37 ----
  #include "tree-pretty-print.h"
  #include "selftest.h"
  #include "langhooks.h"
+ #include "options.h"
  
  /* The pretty-printer code is primarily designed to closely follow
     (GNU) C and C++ grammars.  That is to be contrasted with spaghetti
*************** pp_c_type_qualifier_list (c_pretty_print
*** 249,257 ****
    if (!TYPE_P (t))
      t = TREE_TYPE (t);
  
!   qualifiers = TYPE_QUALS (t);
!   pp_c_cv_qualifiers (pp, qualifiers,
! 		      TREE_CODE (t) == FUNCTION_TYPE);
  
    if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (t)))
      {
--- 251,262 ----
    if (!TYPE_P (t))
      t = TREE_TYPE (t);
  
!   if (TREE_CODE (t) != ARRAY_TYPE)
!     {
!       qualifiers = TYPE_QUALS (t);
!       pp_c_cv_qualifiers (pp, qualifiers,
! 			  TREE_CODE (t) == FUNCTION_TYPE);
!     }
  
    if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (t)))
      {
*************** c_pretty_printer::simple_type_specifier
*** 339,344 ****
--- 344,350 ----
        break;
  
      case VOID_TYPE:
+     case OPAQUE_TYPE:
      case BOOLEAN_TYPE:
      case INTEGER_TYPE:
      case REAL_TYPE:
*************** c_pretty_printer::abstract_declarator (t
*** 573,578 ****
--- 579,586 ----
  void
  c_pretty_printer::direct_abstract_declarator (tree t)
  {
+   bool add_space = false;
+ 
    switch (TREE_CODE (t))
      {
      case POINTER_TYPE:
*************** c_pretty_printer::direct_abstract_declar
*** 586,602 ****
  
      case ARRAY_TYPE:
        pp_c_left_bracket (this);
        if (tree dom = TYPE_DOMAIN (t))
  	{
  	  if (tree maxval = TYPE_MAX_VALUE (dom))
  	    {
  	      tree type = TREE_TYPE (maxval);
  
  	      if (tree_fits_shwi_p (maxval))
  		pp_wide_integer (this, tree_to_shwi (maxval) + 1);
! 	      else
  		expression (fold_build2 (PLUS_EXPR, type, maxval,
  					 build_int_cst (type, 1)));
  	    }
  	  else if (TYPE_SIZE (t))
  	    /* Print zero for zero-length arrays but not for flexible
--- 594,658 ----
  
      case ARRAY_TYPE:
        pp_c_left_bracket (this);
+ 
+       if (int quals = TYPE_QUALS (t))
+ 	{
+ 	  /* Print the array qualifiers such as in "T[const restrict 3]".  */
+ 	  pp_c_cv_qualifiers (this, quals, false);
+ 	  add_space = true;
+ 	}
+ 
+       if (tree arr = lookup_attribute ("array", TYPE_ATTRIBUTES (t)))
+ 	{
+ 	  if (TREE_VALUE (arr))
+ 	    {
+ 	      /* Print the specifier as in "T[static 3]" that's not actually
+ 		 part of the type but may be added by the front end.  */
+ 	      pp_c_ws_string (this, "static");
+ 	      add_space = true;
+ 	    }
+ 	  else if (!TYPE_DOMAIN (t))
+ 	    /* For arrays of unspecified bound using the [*] notation. */
+ 	    pp_character (this, '*');
+ 	}
+ 
        if (tree dom = TYPE_DOMAIN (t))
  	{
  	  if (tree maxval = TYPE_MAX_VALUE (dom))
  	    {
+ 	      if (add_space)
+ 		pp_space (this);
+ 
  	      tree type = TREE_TYPE (maxval);
  
  	      if (tree_fits_shwi_p (maxval))
  		pp_wide_integer (this, tree_to_shwi (maxval) + 1);
! 	      else if (TREE_CODE (maxval) == INTEGER_CST)
  		expression (fold_build2 (PLUS_EXPR, type, maxval,
  					 build_int_cst (type, 1)));
+ 	      else
+ 		{
+ 		  /* Strip the expressions from around a VLA bound added
+ 		     internally to make it fit the domain mold, including
+ 		     any casts.  */
+ 		  if (TREE_CODE (maxval) == NOP_EXPR)
+ 		    maxval = TREE_OPERAND (maxval, 0);
+ 		  if (TREE_CODE (maxval) == PLUS_EXPR
+ 		      && integer_all_onesp (TREE_OPERAND (maxval, 1)))
+ 		    {
+ 		      maxval = TREE_OPERAND (maxval, 0);
+ 		      if (TREE_CODE (maxval) == NOP_EXPR)
+ 			maxval = TREE_OPERAND (maxval, 0);
+ 		    }
+ 		  if (TREE_CODE (maxval) == SAVE_EXPR)
+ 		    {
+ 		      maxval = TREE_OPERAND (maxval, 0);
+ 		      if (TREE_CODE (maxval) == NOP_EXPR)
+ 			maxval = TREE_OPERAND (maxval, 0);
+ 		    }
+ 
+ 		  expression (maxval);
+ 		}
  	    }
  	  else if (TYPE_SIZE (t))
  	    /* Print zero for zero-length arrays but not for flexible
*************** c_pretty_printer::direct_abstract_declar
*** 609,614 ****
--- 665,671 ----
  
      case IDENTIFIER_NODE:
      case VOID_TYPE:
+     case OPAQUE_TYPE:
      case BOOLEAN_TYPE:
      case INTEGER_TYPE:
      case REAL_TYPE:
*************** c_pretty_printer::direct_abstract_declar
*** 619,624 ****
--- 676,682 ----
      case VECTOR_TYPE:
      case COMPLEX_TYPE:
      case TYPE_DECL:
+     case ERROR_MARK:
        break;
  
      default:
*************** c_pretty_printer::primary_expression (tr
*** 1279,1284 ****
--- 1337,1375 ----
        pp_c_right_paren (this);
        break;
  
+     case SSA_NAME:
+       if (SSA_NAME_VAR (e))
+ 	{
+ 	  tree var = SSA_NAME_VAR (e);
+ 	  if (tree id = SSA_NAME_IDENTIFIER (e))
+ 	    {
+ 	      const char *name = IDENTIFIER_POINTER (id);
+ 	      const char *dot;
+ 	      if (DECL_ARTIFICIAL (var) && (dot = strchr (name, '.')))
+ 		{
+ 		  /* Print the name without the . suffix (such as in VLAs).
+ 		     Use pp_c_identifier so that it can be converted into
+ 		     the appropriate encoding.  */
+ 		  size_t size = dot - name;
+ 		  char *ident = XALLOCAVEC (char, size + 1);
+ 		  memcpy (ident, name, size);
+ 		  ident[size] = '\0';
+ 		  pp_c_identifier (this, ident);
+ 		}
+ 	      else
+ 		primary_expression (var);
+ 	    }
+ 	  else
+ 	    primary_expression (var);
+ 	}
+       else
+ 	{
+ 	  /* Print only the right side of the GIMPLE assignment.  */
+ 	  gimple *def_stmt = SSA_NAME_DEF_STMT (e);
+ 	  pp_gimple_stmt_1 (this, def_stmt, 0, TDF_RHS_ONLY);
+ 	}
+       break;
+ 
      default:
        /* FIXME:  Make sure we won't get into an infinite loop.  */
        if (location_wrapper_p (e))
*************** pp_c_call_argument_list (c_pretty_printe
*** 1725,1730 ****
--- 1816,2117 ----
    pp_c_right_paren (pp);
  }
  
+ /* Try to fold *(type *)&op into op.fld.fld2[1] if possible.
+    Only used for printing expressions.  Should punt if ambiguous
+    (e.g. in unions).  */
+ 
+ static tree
+ c_fold_indirect_ref_for_warn (location_t loc, tree type, tree op,
+ 			      offset_int &off)
+ {
+   tree optype = TREE_TYPE (op);
+   if (off == 0)
+     {
+       if (lang_hooks.types_compatible_p (optype, type))
+ 	return op;
+       /* *(foo *)&complexfoo => __real__ complexfoo */
+       else if (TREE_CODE (optype) == COMPLEX_TYPE
+ 	       && lang_hooks.types_compatible_p (type, TREE_TYPE (optype)))
+ 	return build1_loc (loc, REALPART_EXPR, type, op);
+     }
+   /* ((foo*)&complexfoo)[1] => __imag__ complexfoo */
+   else if (TREE_CODE (optype) == COMPLEX_TYPE
+ 	   && lang_hooks.types_compatible_p (type, TREE_TYPE (optype))
+ 	   && tree_to_uhwi (TYPE_SIZE_UNIT (type)) == off)
+     {
+       off = 0;
+       return build1_loc (loc, IMAGPART_EXPR, type, op);
+     }
+   /* ((foo *)&fooarray)[x] => fooarray[x] */
+   if (TREE_CODE (optype) == ARRAY_TYPE
+       && TYPE_SIZE_UNIT (TREE_TYPE (optype))
+       && TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (optype))) == INTEGER_CST
+       && !integer_zerop (TYPE_SIZE_UNIT (TREE_TYPE (optype))))
+     {
+       tree type_domain = TYPE_DOMAIN (optype);
+       tree min_val = size_zero_node;
+       if (type_domain && TYPE_MIN_VALUE (type_domain))
+ 	min_val = TYPE_MIN_VALUE (type_domain);
+       offset_int el_sz = wi::to_offset (TYPE_SIZE_UNIT (TREE_TYPE (optype)));
+       offset_int idx = off / el_sz;
+       offset_int rem = off % el_sz;
+       if (TREE_CODE (min_val) == INTEGER_CST)
+ 	{
+ 	  tree index
+ 	    = wide_int_to_tree (sizetype, idx + wi::to_offset (min_val));
+ 	  op = build4_loc (loc, ARRAY_REF, TREE_TYPE (optype), op, index,
+ 			   NULL_TREE, NULL_TREE);
+ 	  off = rem;
+ 	  if (tree ret = c_fold_indirect_ref_for_warn (loc, type, op, off))
+ 	    return ret;
+ 	  return op;
+ 	}
+     }
+   /* ((foo *)&struct_with_foo_field)[x] => COMPONENT_REF */
+   else if (TREE_CODE (optype) == RECORD_TYPE)
+     {
+       for (tree field = TYPE_FIELDS (optype);
+ 	   field; field = DECL_CHAIN (field))
+ 	if (TREE_CODE (field) == FIELD_DECL
+ 	    && TREE_TYPE (field) != error_mark_node
+ 	    && TYPE_SIZE_UNIT (TREE_TYPE (field))
+ 	    && TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (field))) == INTEGER_CST)
+ 	  {
+ 	    tree pos = byte_position (field);
+ 	    if (TREE_CODE (pos) != INTEGER_CST)
+ 	      continue;
+ 	    offset_int upos = wi::to_offset (pos);
+ 	    offset_int el_sz
+ 	      = wi::to_offset (TYPE_SIZE_UNIT (TREE_TYPE (field)));
+ 	    if (upos <= off && off < upos + el_sz)
+ 	      {
+ 		tree cop = build3_loc (loc, COMPONENT_REF, TREE_TYPE (field),
+ 				       op, field, NULL_TREE);
+ 		off = off - upos;
+ 		if (tree ret = c_fold_indirect_ref_for_warn (loc, type, cop,
+ 							     off))
+ 		  return ret;
+ 		return cop;
+ 	      }
+ 	  }
+     }
+   /* Similarly for unions, but in this case try to be very conservative,
+      only match if some field has type compatible with type and it is the
+      only such field.  */
+   else if (TREE_CODE (optype) == UNION_TYPE)
+     {
+       tree fld = NULL_TREE;
+       for (tree field = TYPE_FIELDS (optype);
+ 	   field; field = DECL_CHAIN (field))
+ 	if (TREE_CODE (field) == FIELD_DECL
+ 	    && TREE_TYPE (field) != error_mark_node
+ 	    && lang_hooks.types_compatible_p (TREE_TYPE (field), type))
+ 	  {
+ 	    if (fld)
+ 	      return NULL_TREE;
+ 	    else
+ 	      fld = field;
+ 	  }
+       if (fld)
+ 	{
+ 	  off = 0;
+ 	  return build3_loc (loc, COMPONENT_REF, TREE_TYPE (fld), op, fld,
+ 			     NULL_TREE);
+ 	}
+     }
+ 
+   return NULL_TREE;
+ }
+ 
+ /* Print the MEM_REF expression REF, including its type and offset.
+    Apply casts as necessary if the type of the access is different
+    from the type of the accessed object.  Produce compact output
+    designed to include both the element index as well as any
+    misalignment by preferring
+      ((int*)((char*)p + 1))[2]
+    over
+      *(int*)((char*)p + 9)
+    The former is more verbose but makes it clearer that the access
+    to the third element of the array is misaligned by one byte.  */
+ 
+ static void
+ print_mem_ref (c_pretty_printer *pp, tree e)
+ {
+   tree arg = TREE_OPERAND (e, 0);
+ 
+   /* The byte offset.  Initially equal to the MEM_REF offset, then
+      adjusted to the remainder of the division by the byte size of
+      the access.  */
+   offset_int byte_off = wi::to_offset (TREE_OPERAND (e, 1));
+   /* The result of dividing BYTE_OFF by the size of the access.  */
+   offset_int elt_idx = 0;
+   /* True to include a cast to char* (for a nonzero final BYTE_OFF).  */
+   bool char_cast = false;
+   tree op = NULL_TREE;
+   bool array_ref_only = false;
+   if (TREE_CODE (arg) == ADDR_EXPR)
+     {
+       op = c_fold_indirect_ref_for_warn (EXPR_LOCATION (e), TREE_TYPE (e),
+ 					 TREE_OPERAND (arg, 0), byte_off);
+       /* Try to fold it back to component, array ref or their combination,
+ 	 but print it only if the types and TBAA types are compatible.  */
+       if (op
+ 	  && byte_off == 0
+ 	  && lang_hooks.types_compatible_p (TREE_TYPE (e), TREE_TYPE (op))
+ 	  && (!flag_strict_aliasing
+ 	      || (get_deref_alias_set (TREE_OPERAND (e, 1))
+ 		  == get_alias_set (op))))
+ 	{
+ 	  pp->expression (op);
+ 	  return;
+ 	}
+       if (op == NULL_TREE)
+ 	op = TREE_OPERAND (arg, 0);
+       /* If the types or TBAA types are incompatible, undo the
+ 	 UNION_TYPE handling from c_fold_indirect_ref_for_warn, and similarly
+ 	 undo __real__/__imag__ the code below doesn't try to handle.  */
+       if (op != TREE_OPERAND (arg, 0)
+ 	  && ((TREE_CODE (op) == COMPONENT_REF
+ 	       && TREE_CODE (TREE_TYPE (TREE_OPERAND (op, 0))) == UNION_TYPE)
+ 	      || TREE_CODE (op) == REALPART_EXPR
+ 	      || TREE_CODE (op) == IMAGPART_EXPR))
+ 	op = TREE_OPERAND (op, 0);
+       if (op != TREE_OPERAND (arg, 0))
+ 	{
+ 	  array_ref_only = true;
+ 	  for (tree ref = op; ref != TREE_OPERAND (arg, 0);
+ 	       ref = TREE_OPERAND (ref, 0))
+ 	    if (TREE_CODE (ref) != ARRAY_REF)
+ 	      {
+ 		array_ref_only = false;
+ 		break;
+ 	      }
+ 	}
+     }
+ 
+   tree access_type = TREE_TYPE (e);
+   tree arg_type = TREE_TYPE (TREE_TYPE (arg));
+   if (tree access_size = TYPE_SIZE_UNIT (access_type))
+     if (byte_off != 0
+ 	&& TREE_CODE (access_size) == INTEGER_CST
+ 	&& !integer_zerop (access_size))
+       {
+ 	offset_int asize = wi::to_offset (access_size);
+ 	elt_idx = byte_off / asize;
+ 	byte_off = byte_off % asize;
+       }
+ 
+   /* True to include a cast to the accessed type.  */
+   const bool access_cast
+     = ((op && op != TREE_OPERAND (arg, 0))
+        || VOID_TYPE_P (arg_type)
+        || !lang_hooks.types_compatible_p (access_type, arg_type));
+   const bool has_off = byte_off != 0 || (op && op != TREE_OPERAND (arg, 0));
+ 
+   if (has_off && (byte_off != 0 || !array_ref_only))
+     {
+       /* When printing the byte offset for a pointer to a type of
+ 	 a different size than char, include a cast to char* first,
+ 	 before printing the cast to a pointer to the accessed type.  */
+       tree size = TYPE_SIZE (arg_type);
+       if (size == NULL_TREE
+ 	  || TREE_CODE (size) != INTEGER_CST
+ 	  || wi::to_wide (size) != BITS_PER_UNIT)
+ 	char_cast = true;
+     }
+ 
+   if (elt_idx == 0)
+     pp_c_star (pp);
+   else if (access_cast || char_cast)
+     pp_c_left_paren (pp);
+ 
+   if (access_cast)
+     {
+       /* Include a cast to the accessed type if it isn't compatible
+ 	 with the type of the referenced object (or if the object
+ 	 is typeless).  */
+       pp_c_left_paren (pp);
+       pp->type_id (build_pointer_type (access_type));
+       pp_c_right_paren (pp);
+     }
+ 
+   if (has_off)
+     pp_c_left_paren (pp);
+ 
+   if (char_cast)
+     {
+       /* Include a cast to char *.  */
+       pp_c_left_paren (pp);
+       pp->type_id (string_type_node);
+       pp_c_right_paren (pp);
+     }
+ 
+   pp->unary_expression (arg);
+ 
+   if (op && op != TREE_OPERAND (arg, 0))
+     {
+       auto_vec<tree, 16> refs;
+       tree ref;
+       unsigned i;
+       bool array_refs = true;
+       for (ref = op; ref != TREE_OPERAND (arg, 0); ref = TREE_OPERAND (ref, 0))
+ 	refs.safe_push (ref);
+       FOR_EACH_VEC_ELT_REVERSE (refs, i, ref)
+ 	if (array_refs && TREE_CODE (ref) == ARRAY_REF)
+ 	  {
+ 	    pp_c_left_bracket (pp);
+ 	    pp->expression (TREE_OPERAND (ref, 1));
+ 	    pp_c_right_bracket (pp);
+ 	  }
+ 	else
+ 	  {
+ 	    if (array_refs)
+ 	      {
+ 		array_refs = false;
+ 		pp_string (pp, " + offsetof");
+ 		pp_c_left_paren (pp);
+ 		pp->type_id (TREE_TYPE (TREE_OPERAND (ref, 0)));
+ 		pp_comma (pp);
+ 	      }
+ 	    else if (TREE_CODE (ref) == COMPONENT_REF)
+ 	      pp_c_dot (pp);
+ 	    if (TREE_CODE (ref) == COMPONENT_REF)
+ 	      pp->expression (TREE_OPERAND (ref, 1));
+ 	    else
+ 	      {
+ 		pp_c_left_bracket (pp);
+ 		pp->expression (TREE_OPERAND (ref, 1));
+ 		pp_c_right_bracket (pp);
+ 	      }
+ 	  }
+       if (!array_refs)
+ 	pp_c_right_paren (pp);
+     }
+ 
+   if (byte_off != 0)
+     {
+       pp_space (pp);
+       pp_plus (pp);
+       pp_space (pp);
+       tree off = wide_int_to_tree (ssizetype, byte_off);
+       pp->constant (off);
+     }
+ 
+   if (has_off)
+     pp_c_right_paren (pp);
+ 
+   if (elt_idx != 0)
+     {
+       if (access_cast || char_cast)
+ 	pp_c_right_paren (pp);
+ 
+       pp_c_left_bracket (pp);
+       tree idx = wide_int_to_tree (ssizetype, elt_idx);
+       pp->constant (idx);
+       pp_c_right_bracket (pp);
+     }
+ }
+ 
  /* unary-expression:
        postfix-expression
        ++ cast-expression
*************** c_pretty_printer::unary_expression (tree
*** 1782,1811 ****
        break;
  
      case MEM_REF:
!       if (TREE_CODE (TREE_OPERAND (e, 0)) == ADDR_EXPR
! 	  && integer_zerop (TREE_OPERAND (e, 1)))
! 	expression (TREE_OPERAND (TREE_OPERAND (e, 0), 0));
!       else
! 	{
! 	  pp_c_star (this);
! 	  if (!integer_zerop (TREE_OPERAND (e, 1)))
! 	    {
! 	      pp_c_left_paren (this);
! 	      tree type = TREE_TYPE (TREE_TYPE (TREE_OPERAND (e, 0)));
! 	      if (TYPE_SIZE_UNIT (type) == NULL_TREE
! 		  || !integer_onep (TYPE_SIZE_UNIT (type)))
! 		pp_c_type_cast (this, ptr_type_node);
! 	    }
! 	  pp_c_cast_expression (this, TREE_OPERAND (e, 0));
! 	  if (!integer_zerop (TREE_OPERAND (e, 1)))
! 	    {
! 	      pp_plus (this);
! 	      pp_c_integer_constant (this,
! 				     fold_convert (ssizetype,
! 						   TREE_OPERAND (e, 1)));
! 	      pp_c_right_paren (this);
! 	    }
! 	}
        break;
  
      case TARGET_MEM_REF:
--- 2169,2175 ----
        break;
  
      case MEM_REF:
!       print_mem_ref (this, e);
        break;
  
      case TARGET_MEM_REF:
*************** pp_c_additive_expression (c_pretty_print
*** 1957,1963 ****
        else
  	pp_minus (pp);
        pp_c_whitespace (pp);
!       pp->multiplicative_expression (TREE_OPERAND (e, 1));
        break;
  
      default:
--- 2321,2336 ----
        else
  	pp_minus (pp);
        pp_c_whitespace (pp);
!       {
! 	tree op1 = TREE_OPERAND (e, 1);
! 	if (code == POINTER_PLUS_EXPR
! 	    && TREE_CODE (op1) == INTEGER_CST
! 	    && tree_int_cst_sign_bit (op1))
! 	  /* A pointer minus an integer is represented internally as plus a very
! 	     large number, don't expose that to users.  */
! 	  op1 = convert (ssizetype, op1);
! 	pp->multiplicative_expression (op1);
!       }
        break;
  
      default:
*************** c_pretty_printer::expression (tree e)
*** 2414,2428 ****
  /* Statements.  */
  
  void
! c_pretty_printer::statement (tree stmt)
  {
!   if (stmt == NULL)
      return;
  
!   if (pp_needs_newline (this))
!     pp_newline_and_indent (this, 0);
  
!   dump_generic_node (this, stmt, pp_indentation (this), TDF_NONE, true);
  }
  
  
--- 2787,2883 ----
  /* Statements.  */
  
  void
! c_pretty_printer::statement (tree t)
  {
!   if (t == NULL)
      return;
  
!   switch (TREE_CODE (t))
!     {
  
!     case SWITCH_STMT:
!       pp_c_ws_string (this, "switch");
!       pp_space (this);
!       pp_c_left_paren (this);
!       expression (SWITCH_STMT_COND (t));
!       pp_c_right_paren (this);
!       pp_indentation (this) += 3;
!       pp_needs_newline (this) = true;
!       statement (SWITCH_STMT_BODY (t));
!       pp_newline_and_indent (this, -3);
!       break;
! 
!       /* iteration-statement:
! 	    while ( expression ) statement
! 	    do statement while ( expression ) ;
! 	    for ( expression(opt) ; expression(opt) ; expression(opt) ) statement
! 	    for ( declaration expression(opt) ; expression(opt) ) statement  */
!     case WHILE_STMT:
!       pp_c_ws_string (this, "while");
!       pp_space (this);
!       pp_c_left_paren (this);
!       expression (WHILE_COND (t));
!       pp_c_right_paren (this);
!       pp_newline_and_indent (this, 3);
!       statement (WHILE_BODY (t));
!       pp_indentation (this) -= 3;
!       pp_needs_newline (this) = true;
!       break;
! 
!     case DO_STMT:
!       pp_c_ws_string (this, "do");
!       pp_newline_and_indent (this, 3);
!       statement (DO_BODY (t));
!       pp_newline_and_indent (this, -3);
!       pp_c_ws_string (this, "while");
!       pp_space (this);
!       pp_c_left_paren (this);
!       expression (DO_COND (t));
!       pp_c_right_paren (this);
!       pp_c_semicolon (this);
!       pp_needs_newline (this) = true;
!       break;
! 
!     case FOR_STMT:
!       pp_c_ws_string (this, "for");
!       pp_space (this);
!       pp_c_left_paren (this);
!       if (FOR_INIT_STMT (t))
! 	statement (FOR_INIT_STMT (t));
!       else
! 	pp_c_semicolon (this);
!       pp_needs_newline (this) = false;
!       pp_c_whitespace (this);
!       if (FOR_COND (t))
! 	expression (FOR_COND (t));
!       pp_c_semicolon (this);
!       pp_needs_newline (this) = false;
!       pp_c_whitespace (this);
!       if (FOR_EXPR (t))
! 	expression (FOR_EXPR (t));
!       pp_c_right_paren (this);
!       pp_newline_and_indent (this, 3);
!       statement (FOR_BODY (t));
!       pp_indentation (this) -= 3;
!       pp_needs_newline (this) = true;
!       break;
! 
!       /* jump-statement:
! 	    goto identifier;
! 	    continue ;
! 	    return expression(opt) ;  */
!     case BREAK_STMT:
!     case CONTINUE_STMT:
!       pp_string (this, TREE_CODE (t) == BREAK_STMT ? "break" : "continue");
!       pp_c_semicolon (this);
!       pp_needs_newline (this) = true;
!       break;
! 
!     default:
!       if (pp_needs_newline (this))
! 	pp_newline_and_indent (this, 0);
!       dump_generic_node (this, t, pp_indentation (this), TDF_NONE, true);
!     }
  }
  
  
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-pretty-print.h gcc-11.1.0/gcc/c-family/c-pretty-print.h
*** gcc-10.3.0/gcc/c-family/c-pretty-print.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-pretty-print.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Various declarations for the C and C++ pretty-printers.
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
     Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
  
  This file is part of GCC.
--- 1,5 ----
  /* Various declarations for the C and C++ pretty-printers.
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
     Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-semantics.c gcc-11.1.0/gcc/c-family/c-semantics.c
*** gcc-10.3.0/gcc/c-family/c-semantics.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-semantics.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* This file contains subroutine used by the C front-end to construct GENERIC.
!    Copyright (C) 2000-2020 Free Software Foundation, Inc.
     Written by Benjamin Chelf (chelf@codesourcery.com).
  
  This file is part of GCC.
--- 1,5 ----
  /* This file contains subroutine used by the C front-end to construct GENERIC.
!    Copyright (C) 2000-2021 Free Software Foundation, Inc.
     Written by Benjamin Chelf (chelf@codesourcery.com).
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-spellcheck.cc gcc-11.1.0/gcc/c-family/c-spellcheck.cc
*** gcc-10.3.0/gcc/c-family/c-spellcheck.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-spellcheck.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Find near-matches for macros.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Find near-matches for macros.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-spellcheck.h gcc-11.1.0/gcc/c-family/c-spellcheck.h
*** gcc-10.3.0/gcc/c-family/c-spellcheck.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-spellcheck.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Find near-matches for macros.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Find near-matches for macros.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-target-def.h gcc-11.1.0/gcc/c-family/c-target-def.h
*** gcc-10.3.0/gcc/c-family/c-target-def.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-target-def.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Default initializers for C-family target hooks.
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
     This program is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
--- 1,5 ----
  /* Default initializers for C-family target hooks.
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
     This program is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-target.def gcc-11.1.0/gcc/c-family/c-target.def
*** gcc-10.3.0/gcc/c-family/c-target.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-target.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Target hook definitions for C-family front ends.
!    Copyright (C) 2001-2020 Free Software Foundation, Inc.
  
     This program is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
--- 1,5 ----
  /* Target hook definitions for C-family front ends.
!    Copyright (C) 2001-2021 Free Software Foundation, Inc.
  
     This program is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-target.h gcc-11.1.0/gcc/c-family/c-target.h
*** gcc-10.3.0/gcc/c-family/c-target.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-target.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Data structure definitions for target-specific C-family behavior.
!    Copyright (C) 2001-2020 Free Software Foundation, Inc.
  
     This program is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
--- 1,5 ----
  /* Data structure definitions for target-specific C-family behavior.
!    Copyright (C) 2001-2021 Free Software Foundation, Inc.
  
     This program is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-ubsan.c gcc-11.1.0/gcc/c-family/c-ubsan.c
*** gcc-10.3.0/gcc/c-family/c-ubsan.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-ubsan.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* UndefinedBehaviorSanitizer, undefined behavior detector.
!    Copyright (C) 2013-2020 Free Software Foundation, Inc.
     Contributed by Marek Polacek <polacek@redhat.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* UndefinedBehaviorSanitizer, undefined behavior detector.
!    Copyright (C) 2013-2021 Free Software Foundation, Inc.
     Contributed by Marek Polacek <polacek@redhat.com>
  
  This file is part of GCC.
*************** ubsan_instrument_shift (location_t loc,
*** 137,145 ****
        || maybe_ne (GET_MODE_BITSIZE (TYPE_MODE (type0)),
  		   TYPE_PRECISION (type0))
        || !sanitize_flags_p (SANITIZE_SHIFT_BASE)
!       /* In C++2a and later, shifts are well defined except when
  	 the second operand is not within bounds.  */
!       || cxx_dialect >= cxx2a)
      ;
  
    /* For signed x << y, in C99/C11, the following:
--- 137,145 ----
        || maybe_ne (GET_MODE_BITSIZE (TYPE_MODE (type0)),
  		   TYPE_PRECISION (type0))
        || !sanitize_flags_p (SANITIZE_SHIFT_BASE)
!       /* In C++20 and later, shifts are well defined except when
  	 the second operand is not within bounds.  */
!       || cxx_dialect >= cxx20)
      ;
  
    /* For signed x << y, in C99/C11, the following:
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-ubsan.h gcc-11.1.0/gcc/c-family/c-ubsan.h
*** gcc-10.3.0/gcc/c-family/c-ubsan.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-ubsan.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* UndefinedBehaviorSanitizer, undefined behavior detector.
!    Copyright (C) 2013-2020 Free Software Foundation, Inc.
     Contributed by Marek Polacek <polacek@redhat.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* UndefinedBehaviorSanitizer, undefined behavior detector.
!    Copyright (C) 2013-2021 Free Software Foundation, Inc.
     Contributed by Marek Polacek <polacek@redhat.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-warn.c gcc-11.1.0/gcc/c-family/c-warn.c
*** gcc-10.3.0/gcc/c-family/c-warn.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c-warn.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Diagnostic routines shared by all languages that are variants of C.
!    Copyright (C) 1992-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Diagnostic routines shared by all languages that are variants of C.
!    Copyright (C) 1992-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** You should have received a copy of the G
*** 17,22 ****
--- 17,23 ----
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  
+ #define INCLUDE_STRING
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
*************** along with GCC; see the file COPYING3.
*** 37,42 ****
--- 38,44 ----
  #include "c-family/c-spellcheck.h"
  #include "calls.h"
  #include "stor-layout.h"
+ #include "tree-pretty-print.h"
  
  /* Print a warning if a constant expression had overflow in folding.
     Invoke this function on every expression that the language
*************** do_warn_double_promotion (tree result_ty
*** 2392,2398 ****
       warn about it.  */
    if (c_inhibit_evaluation_warnings)
      return;
!   /* If an invalid conversion has occured, don't warn.  */
    if (result_type == error_mark_node)
      return;
    if (TYPE_MAIN_VARIANT (result_type) != double_type_node
--- 2394,2400 ----
       warn about it.  */
    if (c_inhibit_evaluation_warnings)
      return;
!   /* If an invalid conversion has occurred, don't warn.  */
    if (result_type == error_mark_node)
      return;
    if (TYPE_MAIN_VARIANT (result_type) != double_type_node
*************** diagnose_mismatched_attributes (tree old
*** 2571,2577 ****
  /* Warn if signed left shift overflows.  We don't warn
     about left-shifting 1 into the sign bit in C++14; cf.
     <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3367.html#1457>
!    and don't warn for C++2a at all, as signed left shifts never
     overflow.
     LOC is a location of the shift; OP0 and OP1 are the operands.
     Return true if an overflow is detected, false otherwise.  */
--- 2573,2579 ----
  /* Warn if signed left shift overflows.  We don't warn
     about left-shifting 1 into the sign bit in C++14; cf.
     <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3367.html#1457>
!    and don't warn for C++20 at all, as signed left shifts never
     overflow.
     LOC is a location of the shift; OP0 and OP1 are the operands.
     Return true if an overflow is detected, false otherwise.  */
*************** maybe_warn_shift_overflow (location_t lo
*** 2587,2593 ****
    unsigned int prec0 = TYPE_PRECISION (type0);
  
    /* Left-hand operand must be signed.  */
!   if (TYPE_UNSIGNED (type0) || cxx_dialect >= cxx2a)
      return false;
  
    unsigned int min_prec = (wi::min_precision (wi::to_wide (op0), SIGNED)
--- 2589,2595 ----
    unsigned int prec0 = TYPE_PRECISION (type0);
  
    /* Left-hand operand must be signed.  */
!   if (TYPE_UNSIGNED (type0) || cxx_dialect >= cxx20)
      return false;
  
    unsigned int min_prec = (wi::min_precision (wi::to_wide (op0), SIGNED)
*************** do_warn_duplicated_branches (tree expr)
*** 2777,2783 ****
  
    /* Compare the hashes.  */
    if (h0 == h1
!       && operand_equal_p (thenb, elseb, OEP_LEXICOGRAPHIC)
        /* Don't warn if any of the branches or their subexpressions comes
  	 from a macro.  */
        && !walk_tree_without_duplicates (&thenb, expr_from_macro_expansion_r,
--- 2779,2786 ----
  
    /* Compare the hashes.  */
    if (h0 == h1
!       && operand_equal_p (thenb, elseb, OEP_LEXICOGRAPHIC
! 					| OEP_ADDRESS_OF_SAME_FIELD)
        /* Don't warn if any of the branches or their subexpressions comes
  	 from a macro.  */
        && !walk_tree_without_duplicates (&thenb, expr_from_macro_expansion_r,
*************** warn_for_multistatement_macros (location
*** 2897,2903 ****
  	    "this %qs clause", guard_tinfo_to_string (keyword));
  }
  
! /* Return struct or union type if the alignment of data memeber, FIELD,
     is less than the alignment of TYPE.  Otherwise, return NULL_TREE.
     If RVALUE is true, only arrays evaluate to pointers.  */
  
--- 2900,2906 ----
  	    "this %qs clause", guard_tinfo_to_string (keyword));
  }
  
! /* Return struct or union type if the alignment of data member, FIELD,
     is less than the alignment of TYPE.  Otherwise, return NULL_TREE.
     If RVALUE is true, only arrays evaluate to pointers.  */
  
*************** warn_for_address_or_pointer_of_packed_me
*** 3108,3110 ****
--- 3111,3738 ----
  
    check_and_warn_address_or_pointer_of_packed_member (type, rhs);
  }
+ 
+ /* Return EXPR + 1.  Convenience helper used below.  */
+ 
+ static inline tree
+ plus_one (tree expr)
+ {
+   tree type = TREE_TYPE (expr);
+   return fold_build2 (PLUS_EXPR, type, expr, build_int_cst (type, 1));
+ }
+ 
+ /* Try to strip the expressions from around a VLA bound added internally
+    to make it fit the domain mold, including any casts, and return
+    the result.  The goal is to obtain the PARM_DECL the VLA bound may
+    refer to.  */
+ 
+ static tree
+ vla_bound_parm_decl (tree expr)
+ {
+   if (!expr)
+     return NULL_TREE;
+ 
+   if (TREE_CODE (expr) == NOP_EXPR)
+     expr = TREE_OPERAND (expr, 0);
+   if (TREE_CODE (expr) == PLUS_EXPR
+       && integer_all_onesp (TREE_OPERAND (expr, 1)))
+     {
+       expr = TREE_OPERAND (expr, 0);
+       if (TREE_CODE (expr) == NOP_EXPR)
+ 	expr = TREE_OPERAND (expr, 0);
+     }
+   if (TREE_CODE (expr) == SAVE_EXPR)
+     {
+       expr = TREE_OPERAND (expr, 0);
+       if (TREE_CODE (expr) == NOP_EXPR)
+ 	expr = TREE_OPERAND (expr, 0);
+     }
+   return expr;
+ }
+ 
+ /* Diagnose mismatches in VLA bounds between function parameters NEWPARMS
+    of pointer types on a redeclaration of a function previously declared
+    with CURPARMS at ORIGLOC.  */
+ 
+ static void
+ warn_parm_ptrarray_mismatch (location_t origloc, tree curparms, tree newparms)
+ {
+   /* Maps each named integral parameter seen so far to its position
+      in the argument list; used to associate VLA sizes with arguments.  */
+   hash_map<tree, unsigned> curparm2pos;
+   hash_map<tree, unsigned> newparm2pos;
+ 
+   unsigned parmpos = 1;
+   for (tree curp = curparms, newp = newparms; curp && newp;
+        curp = TREE_CHAIN (curp), newp = TREE_CHAIN (newp), ++parmpos)
+     {
+       tree curtyp = TREE_TYPE (curp), newtyp = TREE_TYPE (newp);
+       if (INTEGRAL_TYPE_P (curtyp))
+ 	{
+ 	  /* Only add named parameters; unnamed ones cannot be referred
+ 	     to in VLA bounds.  */
+ 	  if (DECL_NAME (curp))
+ 	    curparm2pos.put (curp, parmpos);
+ 	  if (DECL_NAME (newp))
+ 	    newparm2pos.put (newp, parmpos);
+ 
+ 	  continue;
+ 	}
+ 
+       /* The parameter types should match at this point so only test one.  */
+       if (TREE_CODE (curtyp) != POINTER_TYPE)
+ 	continue;
+ 
+       do
+ 	{
+ 	  curtyp = TREE_TYPE (curtyp);
+ 	  newtyp = TREE_TYPE (newtyp);
+ 
+ 	  if (!newtyp)
+ 	    /* Bail on error.  */
+ 	    return;
+ 	}
+       while (TREE_CODE (curtyp) == POINTER_TYPE
+ 	     && TREE_CODE (newtyp) == POINTER_TYPE);
+ 
+       if (TREE_CODE (curtyp) != ARRAY_TYPE
+ 	  || TREE_CODE (newtyp) != ARRAY_TYPE)
+ 	{
+ 	  if (curtyp == error_mark_node
+ 	      || newtyp == error_mark_node)
+ 	    /* Bail on error.  */
+ 	    return;
+ 
+ 	  continue;
+ 	}
+ 
+       tree curdom = TYPE_DOMAIN (curtyp), newdom = TYPE_DOMAIN (newtyp);
+       tree curbnd = curdom ? TYPE_MAX_VALUE (curdom) : NULL_TREE;
+       tree newbnd = newdom ? TYPE_MAX_VALUE (newdom) : NULL_TREE;
+ 
+       if (DECL_P (curp))
+ 	origloc = DECL_SOURCE_LOCATION (curp);
+       else if (EXPR_P (curp) && EXPR_HAS_LOCATION (curp))
+ 	origloc = EXPR_LOCATION (curp);
+ 
+       /* The location of the parameter in the current redeclaration.  */
+       location_t newloc = DECL_SOURCE_LOCATION (newp);
+       if (origloc == UNKNOWN_LOCATION)
+ 	origloc = newloc;
+ 
+       /* Issue -Warray-parameter unless one or more mismatches involves
+ 	 a VLA bound; then issue -Wvla-parameter.  */
+       int opt = OPT_Warray_parameter_;
+       /* Traverse the two array types looking for variable bounds and
+ 	 comparing the two in each pair for mismatches either in their
+ 	 positions in the function parameter list or lexicographically
+ 	 for others.  Record the 1-based parameter position of each
+ 	 mismatch in BNDVEC, and the location of each parameter in
+ 	 the mismatch in WARNLOC (for the new parameter list) and
+ 	 NOTELOC (for the current parameter list).  */
+       unsigned bndpos = 1;
+       auto_vec<int> bndvec;
+       gcc_rich_location warnloc (newloc);
+       gcc_rich_location noteloc (origloc);
+       for ( ; curtyp || newtyp;
+ 	    ++bndpos,
+ 	      curbnd = curdom ? TYPE_MAX_VALUE (curdom) : NULL_TREE,
+ 	      newbnd = newdom ? TYPE_MAX_VALUE (newdom) : NULL_TREE)
+ 	{
+ 	  /* Try to strip each bound down to the PARM_DECL if it does
+ 	     correspond to one.  Either bound can be null if it's
+ 	     unspecified (i.e., has the [*] form).  */
+ 	  curbnd = vla_bound_parm_decl (curbnd);
+ 	  newbnd = vla_bound_parm_decl (newbnd);
+ 
+ 	  /* Peel the current bound off CURTYP and NEWTYP, skipping
+ 	     over any subsequent pointer types.  */
+ 	  if (curtyp && TREE_CODE (curtyp) == ARRAY_TYPE)
+ 	    {
+ 	      do
+ 		curtyp = TREE_TYPE (curtyp);
+ 	      while (TREE_CODE (curtyp) == POINTER_TYPE);
+ 	      if (TREE_CODE (curtyp) == ARRAY_TYPE)
+ 		curdom = TYPE_DOMAIN (curtyp);
+ 	      else
+ 		curdom = NULL_TREE;
+ 	    }
+ 	  else
+ 	    curtyp = NULL_TREE;
+ 
+ 	  if (newtyp && TREE_CODE (newtyp) == ARRAY_TYPE)
+ 	    {
+ 	      do
+ 		newtyp = TREE_TYPE (newtyp);
+ 	      while (TREE_CODE (newtyp) == POINTER_TYPE);
+ 	      if (TREE_CODE (newtyp) == ARRAY_TYPE)
+ 		newdom = TYPE_DOMAIN (newtyp);
+ 	      else
+ 		newdom = NULL_TREE;
+ 	    }
+ 	  else
+ 	    newtyp = NULL_TREE;
+ 
+ 	  /* Move on to the next bound if this one is unspecified.  */
+ 	  if (!curbnd && !newbnd)
+ 	    continue;
+ 
+ 	  /* Try to find each bound in the parameter list.  */
+ 	  const unsigned* const pcurbndpos = curparm2pos.get (curbnd);
+ 	  const unsigned* const pnewbndpos = newparm2pos.get (newbnd);
+ 	  /* Move on if both bounds refer to the same parameter.  */
+ 	  if (pcurbndpos && pnewbndpos && *pcurbndpos == *pnewbndpos)
+ 	    continue;
+ 
+ 	  /* Move on if the bounds look the same.  */
+ 	  if (!pcurbndpos && !pnewbndpos
+ 	      && curbnd && newbnd
+ 	      && operand_equal_p (curbnd, newbnd, OEP_LEXICOGRAPHIC))
+ 	    continue;
+ 
+ 	  if ((curbnd && TREE_CODE (curbnd) != INTEGER_CST)
+ 	      || (newbnd && TREE_CODE (newbnd) != INTEGER_CST))
+ 	    opt = OPT_Wvla_parameter;
+ 
+ 	  /* Record the mismatch.  */
+ 	  bndvec.safe_push (bndpos);
+ 	  /* Underline the bounding parameter in the declaration.  */
+ 	  if (curbnd && TREE_CODE (curbnd) == PARM_DECL)
+ 	    noteloc.add_range (DECL_SOURCE_LOCATION (curbnd));
+ 	  if (newbnd && TREE_CODE (newbnd) == PARM_DECL)
+ 	    warnloc.add_range (DECL_SOURCE_LOCATION (newbnd));
+ 	}
+ 
+       const unsigned nbnds = bndvec.length ();
+       if (!nbnds)
+ 	continue;
+ 
+       /* Use attr_access to format the parameter types.  */
+       attr_access spec = { };
+       const std::string newparmstr = spec.array_as_string (TREE_TYPE (newp));
+       const std::string curparmstr = spec.array_as_string (TREE_TYPE (curp));
+ 
+       if (warning_n (&warnloc, opt, nbnds,
+ 		     "mismatch in bound %Z of argument %u declared as %s",
+ 		     "mismatch in bounds %Z of argument %u declared as %s",
+ 		     bndvec.address (), nbnds, parmpos, newparmstr.c_str ()))
+ 	inform (&noteloc, "previously declared as %s",	curparmstr.c_str ());
+     }
+ }
+ 
+ /* Format EXPR if nonnull and return the formatted string.  If EXPR is
+    null return DFLT.  */
+ 
+ static inline const char*
+ expr_to_str (pretty_printer &pp, tree expr, const char *dflt)
+ {
+   if (!expr)
+     return dflt;
+ 
+   dump_generic_node (&pp, expr, 0, TDF_VOPS | TDF_MEMSYMS, false);
+   return pp_formatted_text (&pp);
+ }
+ 
+ /* Detect and diagnose a mismatch between an attribute access specification
+    on the original declaration of FNDECL and that on the parameters NEWPARMS
+    from its redeclaration.  ORIGLOC is the location of the first declaration
+    (FNDECL's is set to the location of the redeclaration).  */
+ 
+ void
+ warn_parm_array_mismatch (location_t origloc, tree fndecl, tree newparms)
+ {
+   /* The original parameter list (copied from the original declaration
+      into the current [re]declaration, FNDECL)).  The two are equal if
+      and only if FNDECL is the first declaration.  */
+   tree curparms = DECL_ARGUMENTS (fndecl);
+   if (!curparms || !newparms || curparms == newparms)
+     return;
+ 
+   if (TREE_CODE (curparms) != PARM_DECL
+       || TREE_CODE (newparms) != PARM_DECL)
+     return;
+   /* Extract the (possibly empty) attribute access specification from
+      the declaration and its type (it doesn't yet reflect those created
+      in response to NEWPARMS).  */
+   rdwr_map cur_idx;
+   tree fntype = TREE_TYPE (fndecl);
+   init_attr_rdwr_indices (&cur_idx, TYPE_ATTRIBUTES (fntype));
+ 
+   /* Build a (possibly null) chain of access attributes corresponding
+      to NEWPARMS.  */
+   const bool builtin = fndecl_built_in_p (fndecl);
+   tree newattrs = build_attr_access_from_parms (newparms, builtin);
+ 
+   /* Extract the (possibly empty) attribute access specification from
+      NEWATTRS.  */
+   rdwr_map new_idx;
+   init_attr_rdwr_indices (&new_idx, newattrs);
+ 
+   if (cur_idx.is_empty () && new_idx.is_empty ())
+     {
+       /* If both specs are empty check pointers to VLAs for mismatches. */
+       warn_parm_ptrarray_mismatch (origloc, curparms, newparms);
+       return;
+     }
+   /* ...otherwise, if at least one spec isn't empty there may be mismatches,
+      such as between f(T*) and f(T[1]), where the former mapping would be
+      empty.  */
+ 
+   /* Create an empty access specification and use it for pointers with
+      no spec of their own.  */
+   attr_access ptr_spec = { };
+ 
+   /* Iterate over the two lists of function parameters, comparing their
+      respective mappings and diagnosing mismatches.  */
+   unsigned parmpos = 0;
+   for (tree curp = curparms, newp = newparms; curp;
+        curp = TREE_CHAIN (curp), newp = TREE_CHAIN (newp), ++parmpos)
+     {
+       if (!newp)
+ 	/* Bail on invalid redeclarations with fewer arguments.  */
+ 	return;
+ 
+       /* Only check pointers and C++ references.  */
+       tree curptype = TREE_TYPE (curp);
+       tree newptype = TREE_TYPE (newp);
+       if (!POINTER_TYPE_P (curptype) || !POINTER_TYPE_P (newptype))
+ 	continue;
+ 
+       /* Skip mismatches in __builtin_va_list that is commonly
+ 	 an array but that in declarations of built-ins decays
+ 	 to a pointer.  */
+       if (builtin && TREE_TYPE (newptype) == TREE_TYPE (va_list_type_node))
+ 	continue;
+ 
+       /* Access specs for the argument on the current (previous) and
+ 	 new (to replace the current) declarations.  Either may be null,
+ 	 indicating the parameter is an ordinary pointer with no size
+ 	 associated with it.  */
+       attr_access *cura = cur_idx.get (parmpos);
+       attr_access *newa = new_idx.get (parmpos);
+ 
+       if (!newa)
+ 	{
+ 	  /* Continue of both parameters are pointers with no size
+ 	     associated with it.  */
+ 	  if (!cura)
+ 	    continue;
+ 
+ 	  /* Otherwise point at PTR_SPEC and set its parameter pointer
+ 	     and number.  */
+ 	  newa = &ptr_spec;
+ 	  newa->ptr = newp;
+ 	  newa->ptrarg = parmpos;
+ 	}
+       else if (!cura)
+ 	{
+ 	  cura = &ptr_spec;
+ 	  cura->ptr = curp;
+ 	  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);
+       else if (EXPR_P (curp) && EXPR_HAS_LOCATION (curp))
+ 	origloc = EXPR_LOCATION (curp);
+ 
+       /* The location of the parameter in the current redeclaration.  */
+       location_t newloc = DECL_SOURCE_LOCATION (newp);
+       if (origloc == UNKNOWN_LOCATION)
+ 	origloc = newloc;
+ 
+       const std::string newparmstr = newa->array_as_string (newptype);
+       const std::string curparmstr = cura->array_as_string (curptype);
+       if (new_vla_p && !cur_vla_p)
+ 	{
+ 	  if (warning_at (newloc, OPT_Wvla_parameter,
+ 			  "argument %u of type %s declared as "
+ 			  "a variable length array",
+ 			  parmpos + 1, newparmstr.c_str ()))
+ 	    inform (origloc,
+ 		    (cura == &ptr_spec
+ 		     ? G_("previously declared as a pointer %s")
+ 		     : G_("previously declared as an ordinary array %s")),
+ 		    curparmstr.c_str ());
+ 	  continue;
+ 	}
+ 
+       if (newa == &ptr_spec)
+ 	{
+ 	  /* The new declaration uses the pointer form.  Detect mismatches
+ 	     between the pointer and a previous array or VLA forms.  */
+ 	  if (cura->minsize == HOST_WIDE_INT_M1U)
+ 	    {
+ 	      /* Diagnose a pointer/VLA mismatch.  */
+ 	      if (warning_at (newloc, OPT_Wvla_parameter,
+ 			      "argument %u of type %s declared "
+ 			      "as a pointer",
+ 			      parmpos + 1, newparmstr.c_str ()))
+ 		inform (origloc,
+ 			"previously declared as a variable length array %s",
+ 			curparmstr.c_str ());
+ 	      continue;
+ 	    }
+ 
+ 	  if (cura->minsize && cura->minsize != HOST_WIDE_INT_M1U)
+ 	    {
+ 	      /* Diagnose mismatches between arrays with a constant
+ 		 bound and pointers.  */
+ 	      if (warning_at (newloc, OPT_Warray_parameter_,
+ 			      "argument %u of type %s declared "
+ 			      "as a pointer",
+ 			      parmpos + 1, newparmstr.c_str ()))
+ 		inform (origloc, "previously declared as an array %s",
+ 			curparmstr.c_str ());
+ 	      continue;
+ 	    }
+ 	}
+ 
+       if (!new_vla_p && cur_vla_p)
+ 	{
+ 	  if (warning_at (newloc, OPT_Wvla_parameter,
+ 			  "argument %u of type %s declared "
+ 			  "as an ordinary array",
+ 			  parmpos + 1, newparmstr.c_str ()))
+ 	    inform (origloc,
+ 		    "previously declared as a variable length array %s",
+ 		    curparmstr.c_str ());
+ 	  continue;
+ 	}
+ 
+       /* Move on to the next pair of parameters if both of the current
+ 	 pair are VLAs with a single variable bound that refers to
+ 	 a parameter at the same position.  */
+       if (newa->size && cura->size
+ 	  && newa->sizarg != UINT_MAX
+ 	  && newa->sizarg == cura->sizarg
+ 	  && newa->minsize == cura->minsize
+ 	  && !TREE_CHAIN (newa->size) && !TREE_CHAIN (cura->size))
+ 	continue;
+ 
+       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,
+ 			     "argument %u of type %s declared with "
+ 			     "%u variable bound",
+ 			     "argument %u of type %s declared with "
+ 			     "%u variable bounds",
+ 			     parmpos + 1, newparmstr.c_str (),
+ 			     newbnds))
+ 		inform_n (origloc, curbnds,
+ 			  "previously declared as %s with %u variable bound",
+ 			  "previously declared as %s with %u variable bounds",
+ 			  curparmstr.c_str (), curbnds);
+ 	      continue;
+ 	    }
+ 
+ 	  if (newunspec != curunspec)
+ 	    {
+ 	      location_t warnloc = newloc, noteloc = origloc;
+ 	      const char *warnparmstr = newparmstr.c_str ();
+ 	      const char *noteparmstr = curparmstr.c_str ();
+ 	      unsigned warnunspec = newunspec, noteunspec = curunspec;
+ 
+ 	      if (newunspec < curunspec)
+ 		{
+ 		  /* If the new declaration has fewer unspecified bounds
+ 		     point the warning to the previous declaration to make
+ 		     it clear that that's the one to change.  Otherwise,
+ 		     point it to the new decl.  */
+ 		  std::swap (warnloc, noteloc);
+ 		  std::swap (warnparmstr, noteparmstr);
+ 		  std::swap (warnunspec, noteunspec);
+ 		}
+ 	      if (warning_n (warnloc, OPT_Wvla_parameter, warnunspec,
+ 			     "argument %u of type %s declared with "
+ 			     "%u unspecified variable bound",
+ 			     "argument %u of type %s declared with "
+ 			     "%u unspecified variable bounds",
+ 			     parmpos + 1, warnparmstr, warnunspec))
+ 		{
+ 		  if (warnloc == newloc)
+ 		    inform_n (noteloc, noteunspec,
+ 			      "previously declared as %s with %u unspecified "
+ 			      "variable bound",
+ 			      "previously declared as %s with %u unspecified "
+ 			      "variable bounds",
+ 			      noteparmstr, noteunspec);
+ 		  else
+ 		    inform_n (noteloc, noteunspec,
+ 			      "subsequently declared as %s with %u unspecified "
+ 			      "variable bound",
+ 			      "subsequently declared as %s with %u unspecified "
+ 			      "variable bounds",
+ 			      noteparmstr, noteunspec);
+ 		}
+ 	      continue;
+ 	    }
+ 	}
+ 
+       /* Iterate over the lists of VLA variable bounds, comparing each
+ 	 pair for equality, and diagnosing mismatches.  The case of
+ 	 the lists having different lengths is handled above so at
+ 	 this point they do .  */
+       for (tree newvbl = newa->size, curvbl = cura->size; newvbl;
+ 	   newvbl = TREE_CHAIN (newvbl), curvbl = TREE_CHAIN (curvbl))
+ 	{
+ 	  tree newpos = TREE_PURPOSE (newvbl);
+ 	  tree curpos = TREE_PURPOSE (curvbl);
+ 
+ 	  tree newbnd = vla_bound_parm_decl (TREE_VALUE (newvbl));
+ 	  tree curbnd = vla_bound_parm_decl (TREE_VALUE (curvbl));
+ 
+ 	  if (newpos == curpos && newbnd == curbnd)
+ 	    /* In the expected case when both bounds either refer to
+ 	       the same positional parameter or when neither does,
+ 	       and both are the same expression they are necessarily
+ 	       the same.  */
+ 	    continue;
+ 
+ 	  pretty_printer pp1, pp2;
+ 	  const char* const newbndstr = expr_to_str (pp1, newbnd, "*");
+ 	  const char* const curbndstr = expr_to_str (pp2, curbnd, "*");
+ 
+ 	  if (!newpos != !curpos
+ 	      || (newpos && !tree_int_cst_equal (newpos, curpos)))
+ 	    {
+ 	      /* Diagnose a mismatch between a specified VLA bound and
+ 		 an unspecified one.  This can only happen in the most
+ 		 significant bound.
+ 
+ 		 Distinguish between the common case of bounds that are
+ 		 other function parameters such as in
+ 		   f (int n, int[n]);
+ 		 and others.  */
+ 
+ 	      gcc_rich_location richloc (newloc);
+ 	      bool warned;
+ 	      if (newpos)
+ 		{
+ 		  /* Also underline the VLA bound argument.  */
+ 		  richloc.add_range (DECL_SOURCE_LOCATION (newbnd));
+ 		  warned = warning_at (&richloc, OPT_Wvla_parameter,
+ 				       "argument %u of type %s declared "
+ 				       "with mismatched bound argument %E",
+ 				       parmpos + 1, newparmstr.c_str (),
+ 				       plus_one (newpos));
+ 		}
+ 	      else
+ 		warned = warning_at (&richloc, OPT_Wvla_parameter,
+ 				     "argument %u of type %s declared "
+ 				     "with mismatched bound %<%s%>",
+ 				     parmpos + 1, newparmstr.c_str (),
+ 				     newbndstr);
+ 
+ 	      if (warned)
+ 		{
+ 		  gcc_rich_location richloc (origloc);
+ 		  if (curpos)
+ 		    {
+ 		      /* Also underline the VLA bound argument.  */
+ 		      richloc.add_range (DECL_SOURCE_LOCATION (curbnd));
+ 		      inform (&richloc, "previously declared as %s with "
+ 			      "bound argument %E",
+ 			      curparmstr.c_str (), plus_one (curpos));
+ 		    }
+ 		  else
+ 		    inform (&richloc, "previously declared as %s with bound "
+ 			    "%<%s%>", curparmstr.c_str (), curbndstr);
+ 
+ 		  continue;
+ 		}
+ 	    }
+ 
+ 	  if (!newpos && newbnd && curbnd)
+ 	    {
+ 	      /* The VLA bounds don't refer to other function parameters.
+ 		 Compare them lexicographically to detect gross mismatches
+ 		 such as between T[foo()] and T[bar()].  */
+ 	      if (operand_equal_p (newbnd, curbnd, OEP_LEXICOGRAPHIC))
+ 		continue;
+ 
+ 	      if (warning_at (newloc, OPT_Wvla_parameter,
+ 			      "argument %u of type %s declared with "
+ 			      "mismatched bound %<%s%>",
+ 			      parmpos + 1, newparmstr.c_str (), newbndstr))
+ 		inform (origloc, "previously declared as %s with bound %qs",
+ 			curparmstr.c_str (), curbndstr);
+ 	      continue;
+ 	    }
+ 	}
+ 
+       if (newa->minsize == cura->minsize
+ 	  || (((newa->minsize == 0 && newa->mode != access_deferred)
+ 	       || (cura->minsize == 0 && cura->mode != access_deferred))
+ 	      && newa != &ptr_spec
+ 	      && cura != &ptr_spec))
+ 	continue;
+ 
+       if (!newa->static_p && !cura->static_p && warn_array_parameter < 2)
+ 	/* Avoid warning about mismatches in ordinary (non-static) arrays
+ 	   at levels below 2.  */
+ 	continue;
+ 
+       if (warning_at (newloc, OPT_Warray_parameter_,
+ 		      "argument %u of type %s with mismatched bound",
+ 		      parmpos + 1, newparmstr.c_str ()))
+ 	inform (origloc, "previously declared as %s", curparmstr.c_str ());
+     }
+ }
+ 
+ /* Warn about divisions of two sizeof operators when the first one is applied
+    to an array and the divisor does not equal the size of the array element.
+    For instance:
+ 
+      sizeof (ARR) / sizeof (OP)
+ 
+    ARR is the array argument of the first sizeof, ARR_TYPE is its ARRAY_TYPE.
+    OP1 is the whole second SIZEOF_EXPR, or its argument; TYPE1 is the type
+    of the second argument.  */
+ 
+ void
+ maybe_warn_sizeof_array_div (location_t loc, tree arr, tree arr_type,
+ 			     tree op1, tree type1)
+ {
+   tree elt_type = TREE_TYPE (arr_type);
+ 
+   if (!warn_sizeof_array_div
+       /* Don't warn on multidimensional arrays.  */
+       || TREE_CODE (elt_type) == ARRAY_TYPE)
+     return;
+ 
+   if (!tree_int_cst_equal (TYPE_SIZE (elt_type), TYPE_SIZE (type1)))
+     {
+       auto_diagnostic_group d;
+       if (warning_at (loc, OPT_Wsizeof_array_div,
+ 		      "expression does not compute the number of "
+ 		      "elements in this array; element type is "
+ 		      "%qT, not %qT", elt_type, type1))
+ 	{
+ 	  if (EXPR_HAS_LOCATION (op1))
+ 	    {
+ 	      location_t op1_loc = EXPR_LOCATION (op1);
+ 	      gcc_rich_location richloc (op1_loc);
+ 	      richloc.add_fixit_insert_before (op1_loc, "(");
+ 	      richloc.add_fixit_insert_after (op1_loc, ")");
+ 	      inform (&richloc, "add parentheses around %qE to "
+ 		      "silence this warning", op1);
+ 	    }
+ 	  else
+ 	    inform (loc, "add parentheses around the second %<sizeof%> "
+ 		    "to silence this warning");
+ 	  if (DECL_P (arr))
+ 	    inform (DECL_SOURCE_LOCATION (arr), "array %qD declared here", arr);
+ 	}
+     }
+ }
diff -Nrcpad gcc-10.3.0/gcc/c-family/c.opt gcc-11.1.0/gcc/c-family/c.opt
*** gcc-10.3.0/gcc/c-family/c.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/c.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ; Options for the C, ObjC, C++ and ObjC++ front ends.
! ; Copyright (C) 2003-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,5 ----
  ; Options for the C, ObjC, C++ and ObjC++ front ends.
! ; Copyright (C) 2003-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** MMD
*** 236,252 ****
  C ObjC C++ ObjC++ NoDriverArg Separate MissingArgError(missing filename after %qs)
  Like -MD but ignore system header files.
  
  MP
  C ObjC C++ ObjC++
  Generate phony targets for all headers.
  
  MQ
  C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
! -MQ <target>	Add a MAKE-quoted target.
  
  MT
  C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
! -MT <target>	Add an unquoted target.
  
  P
  C ObjC C++ ObjC++
--- 236,260 ----
  C ObjC C++ ObjC++ NoDriverArg Separate MissingArgError(missing filename after %qs)
  Like -MD but ignore system header files.
  
+ Mmodules
+ C++
+ Generate C++ Module dependency information.
+ 
+ Mno-modules
+ C++
+ ; undocumented
+ 
  MP
  C ObjC C++ ObjC++
  Generate phony targets for all headers.
  
  MQ
  C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
! -MQ <target>	Add a target that may require quoting.
  
  MT
  C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
! -MT <target>	Add a target that does not require quoting.
  
  P
  C ObjC C++ ObjC++
*************** U
*** 256,261 ****
--- 264,273 ----
  C ObjC C++ ObjC++ Joined Separate MissingArgError(macro name missing after %qs)
  -U<macro>	Undefine <macro>.
  
+ WNSObject-attribute
+ C ObjC C++ ObjC++ LTO Var(warn_nsobject_attribute) Warning Init(1)
+ Warn if the NSObject attribute is applied to a non-typedef.
+ 
  Wabi
  C ObjC C++ ObjC++ LTO Var(warn_abi) Warning
  Warn about things that will change when compiling with an ABI-compliant compiler.
*************** Warray-bounds=
*** 338,343 ****
--- 350,363 ----
  LangEnabledBy(C ObjC C++ LTO ObjC++,Wall,1,0)
  ; in common.opt
  
+ Warray-parameter
+ C ObjC C++ ObjC++ Warning Alias(Warray-parameter=, 2, 0)
+ Warn about mismatched declarations of array parameters and unsafe accesses to them.
+ 
+ Warray-parameter=
+ C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_array_parameter) IntegerRange(0, 2) LangEnabledBy(C ObjC C++ ObjC++,Wall, 2, 0) Warning
+ Warn about mismatched declarations of array parameters and unsafe accesses to them.
+ 
  Wzero-length-bounds
  C ObjC C++ ObjC++ Var(warn_zero_length_bounds) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
  Warn about accesses to interior zero-length array members.
*************** C ObjC C++ ObjC++ Var(warn_frame_address
*** 363,369 ****
  Warn when __builtin_frame_address or __builtin_return_address is used unsafely.
  
  Wbuiltin-declaration-mismatch
! C ObjC C++ ObjC++ Var(warn_builtin_declaraion_mismatch) Init(1) Warning
  Warn when a built-in function is declared with the wrong signature.
  
  Wbuiltin-macro-redefined
--- 383,389 ----
  Warn when __builtin_frame_address or __builtin_return_address is used unsafely.
  
  Wbuiltin-declaration-mismatch
! C ObjC C++ ObjC++ Var(warn_builtin_declaration_mismatch) Init(1) Warning
  Warn when a built-in function is declared with the wrong signature.
  
  Wbuiltin-macro-redefined
*************** Wcpp
*** 467,472 ****
--- 487,497 ----
  C ObjC C++ ObjC++ CppReason(CPP_W_WARNING_DIRECTIVE)
  ; Documented in common.opt
  
+ Wctad-maybe-unsupported
+ C++ ObjC++ Var(warn_ctad_maybe_unsupported) Warning
+ Warn when performing class template argument deduction on a type with no
+ deduction guides.
+ 
  Wctor-dtor-privacy
  C++ ObjC++ Var(warn_ctor_dtor_privacy) Warning
  Warn when all constructors and destructors are private.
*************** C++ ObjC++ Var(warn_deprecated_copy, 2)
*** 505,510 ****
--- 530,544 ----
  Mark implicitly-declared copy operations as deprecated if the class has a
  user-provided copy operation or destructor.
  
+ Wdeprecated-enum-enum-conversion
+ C++ ObjC++ Var(warn_deprecated_enum_enum_conv) Warning
+ Warn about deprecated arithmetic conversions on operands of enumeration types.
+ 
+ Wdeprecated-enum-float-conversion
+ C++ ObjC++ Var(warn_deprecated_enum_float_conv) Warning
+ Warn about deprecated arithmetic conversions on operands where one is of enumeration
+ type and the other is of a floating-point type.
+ 
  Wdesignated-init
  C ObjC Var(warn_designated_init) Init(1) Warning
  Warn about positional initialization of structs requiring designated initializers.
*************** C ObjC C++ ObjC++ Var(warn_enum_compare)
*** 546,552 ****
  Warn about comparison of different enum types.
  
  Wenum-conversion
! C ObjC Var(warn_enum_conversion) Init(0) Warning LangEnabledBy(C ObjC,Wextra)
  Warn about implicit conversion of enum types.
  
  Werror
--- 580,586 ----
  Warn about comparison of different enum types.
  
  Wenum-conversion
! C ObjC C++ ObjC++ Var(warn_enum_conversion) Init(0) Warning LangEnabledBy(C ObjC,Wextra)
  Warn about implicit conversion of enum types.
  
  Werror
*************** Werror-implicit-function-declaration
*** 557,562 ****
--- 591,600 ----
  C ObjC RejectNegative Warning Alias(Werror=, implicit-function-declaration)
  This switch is deprecated; use -Werror=implicit-function-declaration instead.
  
+ Wexceptions
+ C++ ObjC++ Var(warn_exceptions) Init(1)
+ Warn when an exception handler is shadowed by another handler.
+ 
  Wextra
  C ObjC C++ ObjC++ Warning
  ; in common.opt
*************** Wmisleading-indentation
*** 755,760 ****
--- 793,808 ----
  C C++ Common Var(warn_misleading_indentation) Warning LangEnabledBy(C C++,Wall)
  Warn when the indentation of the code does not reflect the block structure.
  
+ Wmismatched-dealloc
+ C ObjC C++ ObjC++ Var(warn_mismatched_alloc) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
+ Warn for deallocation calls with arguments returned from mismatched allocation
+ functions.
+ 
+ Wmismatched-new-delete
+ C++ ObjC++ Var(warn_mismatched_new_delete) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
+ Warn for mismatches between calls to operator new or delete and the corresponding
+ call to the allocation or deallocation function.
+ 
  Wmismatched-tags
  C++ ObjC++ Var(warn_mismatched_tags) Warning
  Warn when a class is redeclared or referenced using a mismatched class-key.
*************** Wpacked-not-aligned
*** 787,792 ****
--- 835,844 ----
  C ObjC C++ ObjC++ Var(warn_packed_not_aligned) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
  Warn when fields in a struct with the packed attribute are misaligned.
  
+ Wrange-loop-construct
+ C++ ObjC++ Var(warn_range_loop_construct) Warning LangEnabledBy(C++ ObjC++,Wall)
+ Warn when a range-based for-loop is creating unnecessary copies.
+ 
  Wredundant-tags
  C++ ObjC++ Var(warn_redundant_tags) Warning
  Warn when a class or enumerated type is referenced using a redundant class-key.
*************** Wsizeof-pointer-div
*** 799,804 ****
--- 851,861 ----
  C ObjC C++ ObjC++ Var(warn_sizeof_pointer_div) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
  Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers.
  
+ Wsizeof-array-div
+ C ObjC C++ ObjC++ Var(warn_sizeof_array_div) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
+ Warn about divisions of two sizeof operators when the first one is applied
+ to an array and the divisor does not equal the size of the array element.
+ 
  Wsizeof-pointer-memaccess
  C ObjC C++ ObjC++ Var(warn_sizeof_pointer_memaccess) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
  Warn about suspicious length parameters to certain string functions if the argument uses sizeof.
*************** C ObjC C++ LTO ObjC++ Joined RejectNegat
*** 823,828 ****
--- 880,889 ----
  Under the control of Object Size type, warn about buffer overflow in string
  manipulation functions like memcpy and strcpy.
  
+ Wstringop-overread
+ C ObjC C++ LTO ObjC++ Var(warn_stringop_overread) Init(1) Warning LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
+ Warn about reading past the end of a source array in string manipulation functions like memchr and memcpy.
+ 
  Wstringop-truncation
  C ObjC C++ LTO ObjC++ Var(warn_stringop_truncation) Warning Init (1) LangEnabledBy(C ObjC C++ LTO ObjC++, Wall)
  Warn about truncation in string manipulation functions like strncat and strncpy.
*************** Enum(cpp_normalize_level) String(id) Val
*** 959,964 ****
--- 1020,1030 ----
  EnumValue
  Enum(cpp_normalize_level) String(nfc) Value(normalized_C)
  
+ Wobjc-root-class
+ ObjC ObjC++ Var(warn_objc_root_class) Warning Init(1)
+ Warn if a class interface has no superclass.  Root classes may use an attribute
+ to suppress this warning.
+ 
  Wold-style-cast
  C++ ObjC++ Var(warn_old_style_cast) Warning
  Warn if a C-style cast is used in a program.
*************** C ObjC C++ ObjC++ Var(warn_return_type)
*** 1072,1078 ****
  Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++).
  
  Wscalar-storage-order
! C ObjC C++ ObjC++ Init(1) Warning
  Warn on suspicious constructs involving reverse scalar storage order.
  
  Wselector
--- 1138,1144 ----
  Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++).
  
  Wscalar-storage-order
! C ObjC C++ ObjC++ Var(warn_scalar_storage_order) Init(1) Warning
  Warn on suspicious constructs involving reverse scalar storage order.
  
  Wselector
*************** Wvarargs
*** 1239,1244 ****
--- 1305,1314 ----
  C ObjC C++ ObjC++ Warning Var(warn_varargs) Init(1)
  Warn about questionable usage of the macros used to retrieve variable arguments.
  
+ Wvexing-parse
+ C++ ObjC++ Warning Var(warn_vexing_parse) Init(1)
+ Warn about the most vexing parse syntactic ambiguity.
+ 
  Wvla
  C ObjC C++ ObjC++ Var(warn_vla) Init(-1) Warning
  Warn if a variable length array is used.
*************** C ObjC C++ LTO ObjC++ Var(warn_vla_limit
*** 1248,1259 ****
  -Wvla-larger-than=<number>	Warn on unbounded uses of variable-length
  arrays, and on bounded uses of variable-length arrays whose bound can be
  larger than <number> bytes.
- <number> bytes.
  
  Wno-vla-larger-than
  C ObjC C++ LTO ObjC++ Alias(Wvla-larger-than=,18446744073709551615EiB,none) Warning
  Disable Wvla-larger-than= warning.  Equivalent to Wvla-larger-than=<SIZE_MAX> or larger.
  
  Wvolatile
  C++ ObjC++ Var(warn_volatile) Warning
  Warn about deprecated uses of volatile qualifier.
--- 1318,1332 ----
  -Wvla-larger-than=<number>	Warn on unbounded uses of variable-length
  arrays, and on bounded uses of variable-length arrays whose bound can be
  larger than <number> bytes.
  
  Wno-vla-larger-than
  C ObjC C++ LTO ObjC++ Alias(Wvla-larger-than=,18446744073709551615EiB,none) Warning
  Disable Wvla-larger-than= warning.  Equivalent to Wvla-larger-than=<SIZE_MAX> or larger.
  
+ Wvla-parameter
+ C ObjC C++ ObjC++ Var(warn_vla_parameter) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
+ Warn about mismatched declarations of VLA parameters.
+ 
  Wvolatile
  C++ ObjC++ Var(warn_volatile) Warning
  Warn about deprecated uses of volatile qualifier.
*************** C++ ObjC++ Var(flag_no_gnu_keywords, 0)
*** 1574,1580 ****
  Recognize GNU-defined keywords.
  
  fgnu-runtime
! ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME)
  Generate code for GNU runtime environment.
  
  fgnu89-inline
--- 1647,1653 ----
  Recognize GNU-defined keywords.
  
  fgnu-runtime
! ObjC ObjC++ LTO RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME)
  Generate code for GNU runtime environment.
  
  fgnu89-inline
*************** ffriend-injection
*** 1618,1624 ****
  C++ ObjC++ WarnRemoved
  
  fkeep-inline-dllexport
! C C++ ObjC ObjC++ Var(flag_keep_inline_dllexport) Init(1) Report Condition(TARGET_DLLIMPORT_DECL_ATTRIBUTES)
  Don't emit dllexported inline functions unless needed.
  
  flabels-ok
--- 1691,1697 ----
  C++ ObjC++ WarnRemoved
  
  fkeep-inline-dllexport
! C C++ ObjC ObjC++ Var(flag_keep_inline_dllexport) Init(1) Condition(TARGET_DLLIMPORT_DECL_ATTRIBUTES)
  Don't emit dllexported inline functions unless needed.
  
  flabels-ok
*************** flax-vector-conversions
*** 1628,1633 ****
--- 1701,1765 ----
  C ObjC C++ ObjC++ Var(flag_lax_vector_conversions)
  Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.
  
+ fmodules-ts
+ C++ ObjC++ Var(flag_modules) Integer Init(0)
+ Enable C++ modules-ts (experimental).
+ 
+ fno-modules
+ C++ ObjC++ Undocumented RejectNegative Var(flag_modules,0) Integer
+ ;; undocumented
+ 
+ fmodule-header
+ C++ ObjC RejectNegative Var(flag_header_unit,0) Integer
+ Enable C++ header module (experimental).
+ 
+ fmodule-header=
+ C++ ObjC++ Joined RejectNegative Undocumented
+ 
+ fmodule-implicit-inline
+ C++ ObjC++ Var(flag_module_implicit_inline,0) Integer
+ Member functions defined within their class are inline in module purview.
+ 
+ fmodule-only
+ C++ ObjC RejectNegative Var(flag_module_only) Integer
+ Only emit Compiled Module Interface.
+ 
+ fmodule-mapper=
+ C++ ObjC++ Joined RejectNegative MissingArgError(missing mapper)
+ Mapper for module to CMI files.
+ 
+ fmodule-lazy
+ C++ ObjC++ Var(flag_module_lazy) Init(1)
+ Enable lazy module importing.
+ 
+ fmodule-version-ignore
+ C++ ObjC Var(flag_module_version_ignore) Integer
+ ; undocumented, Very dangerous, but occasionally useful
+ 
+ Winvalid-imported-macros
+ C++ ObjC++ Var(warn_imported_macros)
+ Warn about macros that have conflicting header units definitions.
+ 
+ flang-info-include-translate
+ C++ Var(note_include_translate_yes)
+ Note #include directives translated to import declarations.
+ 
+ flang-info-include-translate-not
+ C++ Var(note_include_translate_no)
+ Note #include directives not translated to import declarations, and not known to be textual.
+ 
+ flang-info-include-translate=
+ C++ Joined RejectNegative MissingArgError(missing header name)
+ Note a #include translation of a specific header.
+ 
+ flang-info-module-cmi
+ C++ Var(note_module_cmi_yes)
+ Note Compiled Module Interface pathnames.
+ 
+ flang-info-module-cmi=
+ C++ Joined RejectNegative MissingArgError(missing module name)
+ Note Compiled Module Interface pathname of a specific module or header-unit.
+ 
  fmax-include-depth=
  C ObjC C++ ObjC++ Joined RejectNegative UInteger
  fmax-include-depth=<number> Set the maximum depth of the nested #include.
*************** C++ ObjC++ Var(flag_new_ttp)
*** 1656,1662 ****
  Implement resolution of DR 150 for matching of template template arguments.
  
  fnext-runtime
! ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime)
  Generate code for NeXT (Apple Mac OS X) runtime environment.
  
  fnil-receivers
--- 1788,1794 ----
  Implement resolution of DR 150 for matching of template template arguments.
  
  fnext-runtime
! ObjC ObjC++ LTO RejectNegative Var(flag_next_runtime)
  Generate code for NeXT (Apple Mac OS X) runtime environment.
  
  fnil-receivers
*************** C++ ObjC++ Optimization Var(flag_nothrow
*** 1697,1703 ****
  Treat a throw() exception specification as noexcept to improve code size.
  
  fobjc-abi-version=
! ObjC ObjC++ LTO Joined Report RejectNegative UInteger Var(flag_objc_abi)
  Specify which ABI to use for Objective-C family code and meta-data generation.
  
  ; Generate special '- .cxx_construct' and '- .cxx_destruct' methods
--- 1829,1835 ----
  Treat a throw() exception specification as noexcept to improve code size.
  
  fobjc-abi-version=
! ObjC ObjC++ LTO Joined RejectNegative UInteger Var(flag_objc_abi)
  Specify which ABI to use for Objective-C family code and meta-data generation.
  
  ; Generate special '- .cxx_construct' and '- .cxx_destruct' methods
*************** Enum(strong_eval_order) String(some) Val
*** 1876,1885 ****
  EnumValue
  Enum(strong_eval_order) String(all) Value(2)
  
- ftabstop=
- C ObjC C++ ObjC++ Joined RejectNegative UInteger
- -ftabstop=<number>	Distance between tab stops for column reporting.
- 
  ftemplate-backtrace-limit=
  C++ ObjC++ Joined RejectNegative UInteger Var(template_backtrace_limit) Init(10)
  Set the maximum number of template instantiation notes for a single warning or error.
--- 2008,2013 ----
*************** C++ ObjC++
*** 2074,2085 ****
  Conform to the ISO 2017 C++ standard.
  
  std=c++2a
! C++ ObjC++
! Conform to the ISO 2020 C++ draft standard (experimental and incomplete support).
  
  std=c++20
! C++ ObjC++ Alias(std=c++2a)
! Conform to the ISO 2020 C++ draft standard (experimental and incomplete support).
  
  std=c11
  C ObjC
--- 2202,2221 ----
  Conform to the ISO 2017 C++ standard.
  
  std=c++2a
! C++ ObjC++ Alias(std=c++20) Undocumented
! Conform to the ISO 2020 C++ standard (experimental and incomplete support).
  
  std=c++20
! C++ ObjC++
! Conform to the ISO 2020 C++ standard (experimental and incomplete support).
! 
! std=c++2b
! C++ ObjC++ Alias(std=c++23)
! Conform to the ISO 2023 C++ draft standard (experimental and incomplete support).
! 
! std=c++23
! C++ ObjC++ Undocumented
! Conform to the ISO 2023 C++ draft standard (experimental and incomplete support).
  
  std=c11
  C ObjC
*************** C++ ObjC++
*** 2152,2163 ****
  Conform to the ISO 2017 C++ standard with GNU extensions.
  
  std=gnu++2a
! C++ ObjC++
! Conform to the ISO 2020 C++ draft standard with GNU extensions (experimental and incomplete support).
  
  std=gnu++20
! C++ ObjC++ Alias(std=gnu++2a)
! Conform to the ISO 2020 C++ draft standard with GNU extensions (experimental and incomplete support).
  
  std=gnu11
  C ObjC
--- 2288,2307 ----
  Conform to the ISO 2017 C++ standard with GNU extensions.
  
  std=gnu++2a
! C++ ObjC++ Alias(std=gnu++20) Undocumented
! Conform to the ISO 2020 C++ standard with GNU extensions (experimental and incomplete support).
  
  std=gnu++20
! C++ ObjC++
! Conform to the ISO 2020 C++ standard with GNU extensions (experimental and incomplete support).
! 
! std=gnu++2b
! C++ ObjC++ Alias(std=gnu++23)
! Conform to the ISO 2023 C++ draft standard with GNU extensions (experimental and incomplete support).
! 
! std=gnu++23
! C++ ObjC++ Undocumented
! Conform to the ISO 2023 C++ draft standard with GNU extensions (experimental and incomplete support).
  
  std=gnu11
  C ObjC
*************** std=iso9899:2018
*** 2223,2228 ****
--- 2367,2386 ----
  C ObjC Alias(std=c17)
  Conform to the ISO 2017 C standard (published in 2018).
  
+ stdlib=
+ Driver C++ ObjC++ Common Condition(ENABLE_STDLIB_OPTION) Var(flag_stdlib_kind) Joined Enum(stdlib_kind) RejectNegative Init(1)
+ -stdlib=[libstdc++|libc++]	The standard library to be used for C++ headers
+ and runtime.
+ 
+ Enum
+ Name(stdlib_kind) Type(int)
+ 
+ EnumValue
+ Enum(stdlib_kind) String(libstdc++) Value(1)
+ 
+ EnumValue
+ Enum(stdlib_kind) String(libc++) Value(2)
+ 
  traditional
  Driver
  
diff -Nrcpad gcc-10.3.0/gcc/c-family/cppspec.c gcc-11.1.0/gcc/c-family/cppspec.c
*** gcc-10.3.0/gcc/c-family/cppspec.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/cppspec.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Specific flags and argument handling of the C preprocessor.
!    Copyright (C) 1999-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Specific flags and argument handling of the C preprocessor.
!    Copyright (C) 1999-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/c-family/known-headers.cc gcc-11.1.0/gcc/c-family/known-headers.cc
*** gcc-10.3.0/gcc/c-family/known-headers.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/known-headers.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Support for suggestions about missing #include directives.
!    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Support for suggestions about missing #include directives.
!    Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** struct stdlib_hint
*** 46,51 ****
--- 46,94 ----
    const char *header[NUM_STDLIBS];
  };
  
+ /* Given non-NULL NAME, return the header name defining it (as literal
+    string) within either the standard library (with '<' and '>'), or
+    NULL.
+ 
+    Only handle string macros, so that this can be used for
+    get_stdlib_header_for_name and
+    get_c_stdlib_header_for_string_macro_name.  */
+ 
+ static const char *
+ get_string_macro_hint (const char *name, enum stdlib lib)
+ {
+   /* <inttypes.h> and <cinttypes>.  */
+   static const char *c99_cxx11_macros[] =
+     { "PRId8", "PRId16", "PRId32", "PRId64",
+       "PRIi8", "PRIi16", "PRIi32", "PRIi64",
+       "PRIo8", "PRIo16", "PRIo32", "PRIo64",
+       "PRIu8", "PRIu16", "PRIu32", "PRIu64",
+       "PRIx8", "PRIx16", "PRIx32", "PRIx64",
+       "PRIX8", "PRIX16", "PRIX32", "PRIX64",
+ 
+       "PRIdPTR", "PRIiPTR", "PRIoPTR", "PRIuPTR", "PRIxPTR", "PRIXPTR",
+ 
+       "SCNd8", "SCNd16", "SCNd32", "SCNd64",
+       "SCNi8", "SCNi16", "SCNi32", "SCNi64",
+       "SCNo8", "SCNo16", "SCNo32", "SCNo64",
+       "SCNu8", "SCNu16", "SCNu32", "SCNu64",
+       "SCNx8", "SCNx16", "SCNx32", "SCNx64",
+ 
+       "SCNdPTR", "SCNiPTR", "SCNoPTR", "SCNuPTR", "SCNxPTR" };
+ 
+   if ((lib == STDLIB_C && flag_isoc99)
+       || (lib == STDLIB_CPLUSPLUS && cxx_dialect >= cxx11 ))
+     {
+       const size_t num_c99_cxx11_macros
+ 	= sizeof (c99_cxx11_macros) / sizeof (c99_cxx11_macros[0]);
+       for (size_t i = 0; i < num_c99_cxx11_macros; i++)
+ 	if (strcmp (name, c99_cxx11_macros[i]) == 0)
+ 	  return lib == STDLIB_C ? "<inttypes.h>" : "<cinttypes>";
+     }
+ 
+   return NULL;
+ }
+ 
  /* Given non-NULL NAME, return the header name defining it within either
     the standard library (with '<' and '>'), or NULL.
     Only handles a subset of the most common names within the stdlibs.  */
*************** get_stdlib_header_for_name (const char *
*** 158,164 ****
    for (size_t i = 0; i < num_hints; i++)
      if (strcmp (name, hints[i].name) == 0)
        return hints[i].header[lib];
!   return NULL;
  }
  
  /* Given non-NULL NAME, return the header name defining it within the C
--- 201,245 ----
    for (size_t i = 0; i < num_hints; i++)
      if (strcmp (name, hints[i].name) == 0)
        return hints[i].header[lib];
! 
!   static const stdlib_hint c99_cxx11_hints[] = {
!     /* <stdbool.h>.  Defined natively in C++.  */
!     {"bool", {"<stdbool.h>", NULL} },
!     {"true", {"<stdbool.h>", NULL} },
!     {"false", {"<stdbool.h>", NULL} },
! 
!     /* <stdint.h> and <cstdint>.  */
!     {"int8_t", {"<stdint.h>", "<cstdint>"} },
!     {"uint8_t", {"<stdint.h>", "<cstdint>"} },
!     {"int16_t", {"<stdint.h>", "<cstdint>"} },
!     {"uint16_t", {"<stdint.h>", "<cstdint>"} },
!     {"int32_t", {"<stdint.h>", "<cstdint>"} },
!     {"uint32_t", {"<stdint.h>", "<cstdint>"} },
!     {"int64_t", {"<stdint.h>", "<cstdint>"} },
!     {"uint64_t", {"<stdint.h>", "<cstdint>"} },
!     {"intptr_t", {"<stdint.h>", "<cstdint>"} },
!     {"uintptr_t", {"<stdint.h>", "<cstdint>"} },
!     {"INT8_MAX", {"<stdint.h>", "<cstdint>"} },
!     {"INT16_MAX", {"<stdint.h>", "<cstdint>"} },
!     {"INT32_MAX", {"<stdint.h>", "<cstdint>"} },
!     {"INT64_MAX", {"<stdint.h>", "<cstdint>"} },
!     {"UINT8_MAX", {"<stdint.h>", "<cstdint>"} },
!     {"UINT16_MAX", {"<stdint.h>", "<cstdint>"} },
!     {"UINT32_MAX", {"<stdint.h>", "<cstdint>"} },
!     {"UINT64_MAX", {"<stdint.h>", "<cstdint>"} },
!     {"INTPTR_MAX", {"<stdint.h>", "<cstdint>"} },
!     {"UINTPTR_MAX", {"<stdint.h>", "<cstdint>"} }
!   };
! 
!   const size_t num_c99_cxx11_hints = sizeof (c99_cxx11_hints)
! 					     / sizeof (c99_cxx11_hints[0]);
!   if ((lib == STDLIB_C && flag_isoc99)
!       || (lib == STDLIB_CPLUSPLUS && cxx_dialect >= cxx11 ))
!     for (size_t i = 0; i < num_c99_cxx11_hints; i++)
!       if (strcmp (name, c99_cxx11_hints[i].name) == 0)
! 	return c99_cxx11_hints[i].header[lib];
! 
!   return get_string_macro_hint (name, lib);
  }
  
  /* Given non-NULL NAME, return the header name defining it within the C
*************** get_cp_stdlib_header_for_name (const cha
*** 179,184 ****
--- 260,281 ----
    return get_stdlib_header_for_name (name, STDLIB_CPLUSPLUS);
  }
  
+ /* Given non-NULL NAME, return the header name defining a string macro
+    within the C standard library (with '<' and '>'), or NULL.  */
+ const char *
+ get_c_stdlib_header_for_string_macro_name (const char *name)
+ {
+   return get_string_macro_hint (name, STDLIB_C);
+ }
+ 
+ /* Given non-NULL NAME, return the header name defining a string macro
+    within the C++ standard library (with '<' and '>'), or NULL.  */
+ const char *
+ get_cp_stdlib_header_for_string_macro_name (const char *name)
+ {
+   return get_string_macro_hint (name, STDLIB_CPLUSPLUS);
+ }
+ 
  /* Implementation of class suggest_missing_header.  */
  
  /* suggest_missing_header's ctor.  */
diff -Nrcpad gcc-10.3.0/gcc/c-family/known-headers.h gcc-11.1.0/gcc/c-family/known-headers.h
*** gcc-10.3.0/gcc/c-family/known-headers.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/known-headers.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Support for suggestions about missing #include directives.
!    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Support for suggestions about missing #include directives.
!    Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 23,28 ****
--- 23,31 ----
  extern const char *get_c_stdlib_header_for_name (const char *name);
  extern const char *get_cp_stdlib_header_for_name (const char *name);
  
+ extern const char *get_c_stdlib_header_for_string_macro_name (const char *n);
+ extern const char *get_cp_stdlib_header_for_string_macro_name (const char *n);
+ 
  /* Subclass of deferred_diagnostic for suggesting to the user
     that they have missed a #include.  */
  
diff -Nrcpad gcc-10.3.0/gcc/c-family/name-hint.h gcc-11.1.0/gcc/c-family/name-hint.h
*** gcc-10.3.0/gcc/c-family/name-hint.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/name-hint.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Support for offering suggestions for handling unrecognized names.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Support for offering suggestions for handling unrecognized names.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/c-family/stub-objc.c gcc-11.1.0/gcc/c-family/stub-objc.c
*** gcc-10.3.0/gcc/c-family/stub-objc.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/c-family/stub-objc.c	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* Stub functions for Objective-C and Objective-C++ routines
     that are called from within the C and C++ front-ends,
     respectively.
!    Copyright (C) 1991-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,7 ----
  /* Stub functions for Objective-C and Objective-C++ routines
     that are called from within the C and C++ front-ends,
     respectively.
!    Copyright (C) 1991-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 25,34 ****
  #include "tree.h"
  #include "vec.h"
  
! /* Provide a dummy type for the RID enum used as an argument to
!    objc_prop_attr_kind_for_rid () */
! enum rid { DUMMY };
! 
  #include "c-objc.h"
  
  tree
--- 25,31 ----
  #include "tree.h"
  #include "vec.h"
  
! #include "c-common.h" /* for enum rid.  */
  #include "c-objc.h"
  
  tree
*************** objc_set_method_opt (bool ARG_UNUSED (op
*** 137,142 ****
--- 134,140 ----
  
  void
  objc_start_class_interface (tree ARG_UNUSED (name),
+ 			    location_t /*name_loc*/,
  			    tree ARG_UNUSED (super),
  			    tree ARG_UNUSED (protos),
  			    tree ARG_UNUSED (attribs))
diff -Nrcpad gcc-10.3.0/gcc/caller-save.c gcc-11.1.0/gcc/caller-save.c
*** gcc-10.3.0/gcc/caller-save.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/caller-save.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Save and restore call-clobbered registers which are live across a call.
!    Copyright (C) 1989-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Save and restore call-clobbered registers which are live across a call.
!    Copyright (C) 1989-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/calls.c gcc-11.1.0/gcc/calls.c
*** gcc-10.3.0/gcc/calls.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/calls.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Convert function calls to rtl insns, for GNU C compiler.
!    Copyright (C) 1989-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Convert function calls to rtl insns, for GNU C compiler.
!    Copyright (C) 1989-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** You should have received a copy of the G
*** 17,22 ****
--- 17,23 ----
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  
+ #define INCLUDE_STRING
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
*************** along with GCC; see the file COPYING3.
*** 57,62 ****
--- 58,67 ----
  #include "attribs.h"
  #include "builtins.h"
  #include "gimple-fold.h"
+ #include "attr-fnspec.h"
+ #include "value-query.h"
+ 
+ #include "tree-pretty-print.h"
  
  /* Like PREFERRED_STACK_BOUNDARY but in units of bytes, not bits.  */
  #define STACK_BYTES (PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT)
*************** special_function_p (const_tree fndecl, i
*** 625,663 ****
    return flags;
  }
  
  /* Similar to special_function_p; return a set of ERF_ flags for the
     function FNDECL.  */
  static int
  decl_return_flags (tree fndecl)
  {
!   tree attr;
!   tree type = TREE_TYPE (fndecl);
!   if (!type)
!     return 0;
! 
!   attr = lookup_attribute ("fn spec", TYPE_ATTRIBUTES (type));
!   if (!attr)
!     return 0;
! 
!   attr = TREE_VALUE (TREE_VALUE (attr));
!   if (!attr || TREE_STRING_LENGTH (attr) < 1)
!     return 0;
! 
!   switch (TREE_STRING_POINTER (attr)[0])
!     {
!     case '1':
!     case '2':
!     case '3':
!     case '4':
!       return ERF_RETURNS_ARG | (TREE_STRING_POINTER (attr)[0] - '1');
  
!     case 'm':
!       return ERF_NOALIAS;
  
!     case '.':
!     default:
!       return 0;
!     }
  }
  
  /* Return nonzero when FNDECL represents a call to setjmp.  */
--- 630,669 ----
    return flags;
  }
  
+ /* Return fnspec for DECL.  */
+ 
+ static attr_fnspec
+ decl_fnspec (tree fndecl)
+ {
+   tree attr;
+   tree type = TREE_TYPE (fndecl);
+   if (type)
+     {
+       attr = lookup_attribute ("fn spec", TYPE_ATTRIBUTES (type));
+       if (attr)
+ 	{
+ 	  return TREE_VALUE (TREE_VALUE (attr));
+ 	}
+     }
+   if (fndecl_built_in_p (fndecl, BUILT_IN_NORMAL))
+     return builtin_fnspec (fndecl);
+   return "";
+ }
+ 
  /* Similar to special_function_p; return a set of ERF_ flags for the
     function FNDECL.  */
  static int
  decl_return_flags (tree fndecl)
  {
!   attr_fnspec fnspec = decl_fnspec (fndecl);
  
!   unsigned int arg;
!   if (fnspec.returns_arg (&arg))
!     return ERF_RETURNS_ARG | arg;
  
!   if (fnspec.returns_noalias_p ())
!     return ERF_NOALIAS;
!   return 0;
  }
  
  /* Return nonzero when FNDECL represents a call to setjmp.  */
*************** alloc_max_size (void)
*** 1241,1254 ****
     after adjusting it if necessary to make EXP a represents a valid size
     of object, or a valid size argument to an allocation function declared
     with attribute alloc_size (whose argument may be signed), or to a string
!    manipulation function like memset.  When ALLOW_ZERO is true, allow
!    returning a range of [0, 0] for a size in an anti-range [1, N] where
!    N > PTRDIFF_MAX.  A zero range is a (nearly) invalid argument to
!    allocation functions like malloc but it is a valid argument to
!    functions like memset.  */
  
  bool
! get_size_range (tree exp, tree range[2], bool allow_zero /* = false */)
  {
    if (!exp)
      return false;
--- 1247,1263 ----
     after adjusting it if necessary to make EXP a represents a valid size
     of object, or a valid size argument to an allocation function declared
     with attribute alloc_size (whose argument may be signed), or to a string
!    manipulation function like memset.
!    When ALLOW_ZERO is set in FLAGS, allow returning a range of [0, 0] for
!    a size in an anti-range [1, N] where N > PTRDIFF_MAX.  A zero range is
!    a (nearly) invalid argument to allocation functions like malloc but it
!    is a valid argument to functions like memset.
!    When USE_LARGEST is set in FLAGS set RANGE to the largest valid subrange
!    in a multi-range, otherwise to the smallest valid subrange.  */
  
  bool
! get_size_range (range_query *query, tree exp, gimple *stmt, tree range[2],
! 		int flags /* = 0 */)
  {
    if (!exp)
      return false;
*************** get_size_range (tree exp, tree range[2],
*** 1267,1280 ****
    enum value_range_kind range_type;
  
    if (integral)
!     range_type = determine_value_range (exp, &min, &max);
    else
      range_type = VR_VARYING;
  
    if (range_type == VR_VARYING)
      {
        if (integral)
! 	{
  	  /* Use the full range of the type of the expression when
  	     no value range information is available.  */
  	  range[0] = TYPE_MIN_VALUE (exptype);
--- 1276,1301 ----
    enum value_range_kind range_type;
  
    if (integral)
!     {
!       value_range vr;
!       if (query && query->range_of_expr (vr, exp, stmt))
! 	{
! 	  if (vr.undefined_p ())
! 	    vr.set_varying (TREE_TYPE (exp));
! 	  range_type = vr.kind ();
! 	  min = wi::to_wide (vr.min ());
! 	  max = wi::to_wide (vr.max ());
! 	}
!       else
! 	range_type = determine_value_range (exp, &min, &max);
!     }
    else
      range_type = VR_VARYING;
  
    if (range_type == VR_VARYING)
      {
        if (integral)
! 	{	
  	  /* Use the full range of the type of the expression when
  	     no value range information is available.  */
  	  range[0] = TYPE_MIN_VALUE (exptype);
*************** get_size_range (tree exp, tree range[2],
*** 1320,1344 ****
  	      min = wi::zero (expprec);
  	    }
  	}
!       else if (wi::eq_p (0, min - 1))
  	{
! 	  /* EXP is unsigned and not in the range [1, MAX].  That means
! 	     it's either zero or greater than MAX.  Even though 0 would
! 	     normally be detected by -Walloc-zero, unless ALLOW_ZERO
! 	     is true, set the range to [MAX, TYPE_MAX] so that when MAX
! 	     is greater than the limit the whole range is diagnosed.  */
! 	  if (allow_zero)
! 	    min = max = wi::zero (expprec);
! 	  else
  	    {
  	      min = max + 1;
! 	      max = wi::to_wide (TYPE_MAX_VALUE (exptype));
  	    }
- 	}
-       else
- 	{
- 	  max = min - 1;
- 	  min = wi::zero (expprec);
  	}
      }
  
--- 1341,1390 ----
  	      min = wi::zero (expprec);
  	    }
  	}
!       else
  	{
! 	  wide_int maxsize = wi::to_wide (max_object_size ());
! 	  min = wide_int::from (min, maxsize.get_precision (), UNSIGNED);
! 	  max = wide_int::from (max, maxsize.get_precision (), UNSIGNED);
! 	  if (wi::eq_p (0, min - 1))
  	    {
+ 	      /* EXP is unsigned and not in the range [1, MAX].  That means
+ 		 it's either zero or greater than MAX.  Even though 0 would
+ 		 normally be detected by -Walloc-zero, unless ALLOW_ZERO
+ 		 is set, set the range to [MAX, TYPE_MAX] so that when MAX
+ 		 is greater than the limit the whole range is diagnosed.  */
+ 	      wide_int maxsize = wi::to_wide (max_object_size ());
+ 	      if (flags & SR_ALLOW_ZERO)
+ 		{
+ 		  if (wi::leu_p (maxsize, max + 1)
+ 		      || !(flags & SR_USE_LARGEST))
+ 		    min = max = wi::zero (expprec);
+ 		  else
+ 		    {
+ 		      min = max + 1;
+ 		      max = wi::to_wide (TYPE_MAX_VALUE (exptype));
+ 		    }
+ 		}
+ 	      else
+ 		{
+ 		  min = max + 1;
+ 		  max = wi::to_wide (TYPE_MAX_VALUE (exptype));
+ 		}
+ 	    }
+ 	  else if ((flags & SR_USE_LARGEST)
+ 		   && wi::ltu_p (max + 1, maxsize))
+ 	    {
+ 	      /* When USE_LARGEST is set and the larger of the two subranges
+ 		 is a valid size, use it...  */
  	      min = max + 1;
! 	      max = maxsize;
! 	    }
! 	  else
! 	    {
! 	      /* ...otherwise use the smaller subrange.  */
! 	      max = min - 1;
! 	      min = wi::zero (expprec);
  	    }
  	}
      }
  
*************** get_size_range (tree exp, tree range[2],
*** 1348,1353 ****
--- 1394,1405 ----
    return true;
  }
  
+ bool
+ get_size_range (tree exp, tree range[2], int flags /* = 0 */)
+ {
+   return get_size_range (/*query=*/NULL, exp, /*stmt=*/NULL, range, flags);
+ }
+ 
  /* Diagnose a call EXP to function FN decorated with attribute alloc_size
     whose argument numbers given by IDX with values given by ARGS exceed
     the maximum object size or cause an unsigned oveflow (wrapping) when
*************** maybe_warn_alloc_args_overflow (tree fn,
*** 1496,1502 ****
      {
        location_t fnloc = DECL_SOURCE_LOCATION (fn);
  
!       if (DECL_IS_BUILTIN (fn))
  	inform (loc,
  		"in a call to built-in allocation function %qD", fn);
        else
--- 1548,1554 ----
      {
        location_t fnloc = DECL_SOURCE_LOCATION (fn);
  
!       if (DECL_IS_UNDECLARED_BUILTIN (fn))
  	inform (loc,
  		"in a call to built-in allocation function %qD", fn);
        else
*************** get_attr_nonstring_decl (tree expr, tree
*** 1559,1580 ****
    return NULL_TREE;
  }
  
! /* Warn about passing a non-string array/pointer to a function that
!    expects a nul-terminated string argument.  */
  
! void
  maybe_warn_nonstring_arg (tree fndecl, tree exp)
  {
    if (!fndecl || !fndecl_built_in_p (fndecl, BUILT_IN_NORMAL))
!     return;
  
!   if (TREE_NO_WARNING (exp) || !warn_stringop_overflow)
!     return;
  
    /* Avoid clearly invalid calls (more checking done below).  */
    unsigned nargs = call_expr_nargs (exp);
    if (!nargs)
!     return;
  
    /* The bound argument to a bounded string function like strncpy.  */
    tree bound = NULL_TREE;
--- 1611,1633 ----
    return NULL_TREE;
  }
  
! /* Warn about passing a non-string array/pointer to a built-in function
!    that expects a nul-terminated string argument.  Returns true if
!    a warning has been issued.*/
  
! bool
  maybe_warn_nonstring_arg (tree fndecl, tree exp)
  {
    if (!fndecl || !fndecl_built_in_p (fndecl, BUILT_IN_NORMAL))
!     return false;
  
!   if (TREE_NO_WARNING (exp) || !warn_stringop_overread)
!     return false;
  
    /* Avoid clearly invalid calls (more checking done below).  */
    unsigned nargs = call_expr_nargs (exp);
    if (!nargs)
!     return false;
  
    /* The bound argument to a bounded string function like strncpy.  */
    tree bound = NULL_TREE;
*************** maybe_warn_nonstring_arg (tree fndecl, t
*** 1666,1687 ****
  
    if (bndrng[0])
      {
!       /* Diagnose excessive bound prior the adjustment below and
  	 regardless of attribute nonstring.  */
        tree maxobjsize = max_object_size ();
        if (tree_int_cst_lt (maxobjsize, bndrng[0]))
  	{
  	  if (tree_int_cst_equal (bndrng[0], bndrng[1]))
! 	    warning_at (loc, OPT_Wstringop_overflow_,
! 			"%K%qD specified bound %E "
! 			"exceeds maximum object size %E",
! 			exp, fndecl, bndrng[0], maxobjsize);
  	  else
! 	    warning_at (loc, OPT_Wstringop_overflow_,
! 			"%K%qD specified bound [%E, %E] "
! 			"exceeds maximum object size %E",
! 			exp, fndecl, bndrng[0], bndrng[1], maxobjsize);
! 	  return;
  	}
      }
  
--- 1719,1745 ----
  
    if (bndrng[0])
      {
!       /* Diagnose excessive bound prior to the adjustment below and
  	 regardless of attribute nonstring.  */
        tree maxobjsize = max_object_size ();
        if (tree_int_cst_lt (maxobjsize, bndrng[0]))
  	{
+ 	  bool warned = false;
  	  if (tree_int_cst_equal (bndrng[0], bndrng[1]))
! 	    warned = warning_at (loc, OPT_Wstringop_overread,
! 				 "%K%qD specified bound %E "
! 				 "exceeds maximum object size %E",
! 				 exp, fndecl, bndrng[0], maxobjsize);
  	  else
! 	    warned = warning_at (loc, OPT_Wstringop_overread,
! 				 "%K%qD specified bound [%E, %E] "
! 				 "exceeds maximum object size %E",
! 				 exp, fndecl, bndrng[0], bndrng[1],
! 				 maxobjsize);
! 	  if (warned)
! 	    TREE_NO_WARNING (exp) = true;
! 
! 	  return warned;
  	}
      }
  
*************** maybe_warn_nonstring_arg (tree fndecl, t
*** 1710,1715 ****
--- 1768,1774 ----
  	}
      }
  
+   bool any_arg_warned = false;
    /* Iterate over the built-in function's formal arguments and check
       each const char* against the actual argument.  If the actual
       argument is declared attribute non-string issue a warning unless
*************** maybe_warn_nonstring_arg (tree fndecl, t
*** 1820,1838 ****
        if (wi::ltu_p (asize, wibnd))
  	{
  	  if (bndrng[0] == bndrng[1])
! 	    warned = warning_at (loc, OPT_Wstringop_overflow_,
  				 "%qD argument %i declared attribute "
  				 "%<nonstring%> is smaller than the specified "
  				 "bound %wu",
  				 fndecl, argno + 1, wibnd.to_uhwi ());
  	  else if (wi::ltu_p (asize, wi::to_offset (bndrng[0])))
! 	    warned = warning_at (loc, OPT_Wstringop_overflow_,
  				 "%qD argument %i declared attribute "
  				 "%<nonstring%> is smaller than "
  				 "the specified bound [%E, %E]",
  				 fndecl, argno + 1, bndrng[0], bndrng[1]);
  	  else
! 	    warned = warning_at (loc, OPT_Wstringop_overflow_,
  				 "%qD argument %i declared attribute "
  				 "%<nonstring%> may be smaller than "
  				 "the specified bound [%E, %E]",
--- 1879,1897 ----
        if (wi::ltu_p (asize, wibnd))
  	{
  	  if (bndrng[0] == bndrng[1])
! 	    warned = warning_at (loc, OPT_Wstringop_overread,
  				 "%qD argument %i declared attribute "
  				 "%<nonstring%> is smaller than the specified "
  				 "bound %wu",
  				 fndecl, argno + 1, wibnd.to_uhwi ());
  	  else if (wi::ltu_p (asize, wi::to_offset (bndrng[0])))
! 	    warned = warning_at (loc, OPT_Wstringop_overread,
  				 "%qD argument %i declared attribute "
  				 "%<nonstring%> is smaller than "
  				 "the specified bound [%E, %E]",
  				 fndecl, argno + 1, bndrng[0], bndrng[1]);
  	  else
! 	    warned = warning_at (loc, OPT_Wstringop_overread,
  				 "%qD argument %i declared attribute "
  				 "%<nonstring%> may be smaller than "
  				 "the specified bound [%E, %E]",
*************** maybe_warn_nonstring_arg (tree fndecl, t
*** 1842,1861 ****
  	; /* Avoid warning for calls to strncat() when the bound
  	     is equal to the size of the non-string argument.  */
        else if (!bound)
! 	warned = warning_at (loc, OPT_Wstringop_overflow_,
  			     "%qD argument %i declared attribute %<nonstring%>",
  			     fndecl, argno + 1);
  
        if (warned)
! 	inform (DECL_SOURCE_LOCATION (decl),
! 		"argument %qD declared here", decl);
      }
  }
  
  /* Issue an error if CALL_EXPR was flagged as requiring
     tall-call optimization.  */
  
! static void
  maybe_complain_about_tail_call (tree call_expr, const char *reason)
  {
    gcc_assert (TREE_CODE (call_expr) == CALL_EXPR);
--- 1901,1928 ----
  	; /* Avoid warning for calls to strncat() when the bound
  	     is equal to the size of the non-string argument.  */
        else if (!bound)
! 	warned = warning_at (loc, OPT_Wstringop_overread,
  			     "%qD argument %i declared attribute %<nonstring%>",
  			     fndecl, argno + 1);
  
        if (warned)
! 	{
! 	  inform (DECL_SOURCE_LOCATION (decl),
! 		  "argument %qD declared here", decl);
! 	  any_arg_warned = true;
! 	}
      }
+ 
+   if (any_arg_warned)
+     TREE_NO_WARNING (exp) = true;
+ 
+   return any_arg_warned;
  }
  
  /* Issue an error if CALL_EXPR was flagged as requiring
     tall-call optimization.  */
  
! void
  maybe_complain_about_tail_call (tree call_expr, const char *reason)
  {
    gcc_assert (TREE_CODE (call_expr) == CALL_EXPR);
*************** maybe_complain_about_tail_call (tree cal
*** 1865,1934 ****
    error_at (EXPR_LOCATION (call_expr), "cannot tail-call: %s", reason);
  }
  
- /* Used to define rdwr_map below.  */
- struct rdwr_access_hash: int_hash<int, -1> { };
- 
- /* A mapping between argument number corresponding to attribute access
-    mode (read_only, write_only, or read_write) and operands.  */
- typedef hash_map<rdwr_access_hash, attr_access> rdwr_map;
- 
- /* Initialize a mapping for a call to function FNDECL declared with
-    attribute access.  Each attribute positional operand inserts one
-    entry into the mapping with the operand number as the key.  */
- 
- static void
- init_attr_rdwr_indices (rdwr_map *rwm, tree fntype)
- {
-   if (!fntype)
-     return;
- 
-   for (tree access = TYPE_ATTRIBUTES (fntype);
-        (access = lookup_attribute ("access", access));
-        access = TREE_CHAIN (access))
-     {
-       /* The TREE_VALUE of an attribute is a TREE_LIST whose TREE_VALUE
- 	 is the attribute argument's value.  */
-       tree mode = TREE_VALUE (access);
-       gcc_assert (TREE_CODE (mode) == TREE_LIST);
-       mode = TREE_VALUE (mode);
-       gcc_assert (TREE_CODE (mode) == STRING_CST);
- 
-       const char *modestr = TREE_STRING_POINTER (mode);
-       for (const char *m = modestr; *m; )
- 	{
- 	  attr_access acc = { };
- 
- 	  switch (*m)
- 	    {
- 	    case 'r': acc.mode = acc.read_only; break;
- 	    case 'w': acc.mode = acc.write_only; break;
- 	    default: acc.mode = acc.read_write; break;
- 	    }
- 
- 	  char *end;
- 	  acc.ptrarg = strtoul (++m, &end, 10);
- 	  m = end;
- 	  if (*m == ',')
- 	    {
- 	      acc.sizarg = strtoul (++m, &end, 10);
- 	      m = end;
- 	    }
- 	  else
- 	    acc.sizarg = UINT_MAX;
- 
- 	  acc.ptr = NULL_TREE;
- 	  acc.size = NULL_TREE;
- 
- 	  /* Unconditionally add an entry for the required pointer
- 	     operand of the attribute, and one for the optional size
- 	     operand when it's specified.  */
- 	  rwm->put (acc.ptrarg, acc);
- 	  if (acc.sizarg != UINT_MAX)
- 	    rwm->put (acc.sizarg, acc);
- 	}
-     }
- }
- 
  /* Returns the type of the argument ARGNO to function with type FNTYPE
     or null when the typoe cannot be determined or no such argument exists.  */
  
--- 1932,1937 ----
*************** fntype_argno_type (tree fntype, unsigned
*** 1947,1980 ****
    return NULL_TREE;
  }
  
! /* Helper to append the "rdwr" attribute specification described
!    by ACCESS to the array ATTRSTR with size STRSIZE.  Used in
     diagnostics.  */
  
  static inline void
  append_attrname (const std::pair<int, attr_access> &access,
  		 char *attrstr, size_t strsize)
  {
!   /* Append the relevant attribute to the string.  This (deliberately)
!      appends the attribute pointer operand even when none was specified.  */
!   size_t len = strlen (attrstr);
! 
!   const char *atname
!     = (access.second.mode == attr_access::read_only
!        ? "read_only"
!        : (access.second.mode == attr_access::write_only
! 	  ? "write_only" : "read_write"));
! 
!   const char *sep = len ? ", " : "";
  
!   if (access.second.sizarg == UINT_MAX)
!     snprintf (attrstr + len, strsize - len,
! 	      "%s%s (%i)", sep, atname,
! 	      access.second.ptrarg + 1);
!   else
!     snprintf (attrstr + len, strsize - len,
! 	      "%s%s (%i, %i)", sep, atname,
! 	      access.second.ptrarg + 1, access.second.sizarg + 1);
  }
  
  /* Iterate over attribute access read-only, read-write, and write-only
--- 1950,1969 ----
    return NULL_TREE;
  }
  
! /* Helper to append the "human readable" attribute access specification
!    described by ACCESS to the array ATTRSTR with size STRSIZE.  Used in
     diagnostics.  */
  
  static inline void
  append_attrname (const std::pair<int, attr_access> &access,
  		 char *attrstr, size_t strsize)
  {
!   if (access.second.internal_p)
!     return;
  
!   tree str = access.second.to_external_string ();
!   gcc_assert (strsize >= (size_t) TREE_STRING_LENGTH (str));
!   strcpy (attrstr, TREE_STRING_POINTER (str));
  }
  
  /* Iterate over attribute access read-only, read-write, and write-only
*************** append_attrname (const std::pair<int, at
*** 1984,1989 ****
--- 1973,1984 ----
  static void
  maybe_warn_rdwr_sizes (rdwr_map *rwm, tree fndecl, tree fntype, tree exp)
  {
+   auto_diagnostic_group adg;
+ 
+   /* Set if a warning has been issued for any argument (used to decide
+      whether to emit an informational note at the end).  */
+   bool any_warned = false;
+ 
    /* A string describing the attributes that the warnings issued by this
       function apply to.  Used to print one informational note per function
       call, rather than one per warning.  That reduces clutter.  */
*************** maybe_warn_rdwr_sizes (rdwr_map *rwm, tr
*** 2011,2053 ****
        if (!access.second.ptr)
  	continue;
  
!       tree argtype = fntype_argno_type (fntype, ptridx);
!       argtype = TREE_TYPE (argtype);
  
!       tree size;
        if (sizidx == -1)
  	{
! 	  /* If only the pointer attribute operand was specified
! 	     and not size, set SIZE to the size of one element of
! 	     the pointed to type to detect smaller objects (null
! 	     pointers are diagnosed in this case only if
! 	     the pointer is also declared with attribute nonnull.  */
! 	  size = size_one_node;
  	}
        else
! 	size = rwm->get (sizidx)->size;
  
!       tree ptr = access.second.ptr;
        tree sizrng[2] = { size_zero_node, build_all_ones_cst (sizetype) };
!       if (get_size_range (size, sizrng, true)
  	  && tree_int_cst_sgn (sizrng[0]) < 0
  	  && tree_int_cst_sgn (sizrng[1]) < 0)
  	{
  	  /* Warn about negative sizes.  */
! 	  bool warned = false;
! 	  location_t loc = EXPR_LOCATION (exp);
! 	  if (tree_int_cst_equal (sizrng[0], sizrng[1]))
! 	    warned = warning_at (loc, OPT_Wstringop_overflow_,
! 				 "%Kargument %i value %E is negative",
! 				 exp, sizidx + 1, size);
  	  else
! 	    warned = warning_at (loc, OPT_Wstringop_overflow_,
! 				 "%Kargument %i range [%E, %E] is negative",
! 				 exp, sizidx + 1, sizrng[0], sizrng[1]);
! 	  if (warned)
  	    {
  	      append_attrname (access, attrstr, sizeof attrstr);
! 	      /* Avoid warning again for the same attribute.  */
  	      continue;
  	    }
  	}
--- 2006,2088 ----
        if (!access.second.ptr)
  	continue;
  
!       tree ptrtype = fntype_argno_type (fntype, ptridx);
!       tree argtype = TREE_TYPE (ptrtype);
  
!       /* The size of the access by the call.  */
!       tree access_size;
        if (sizidx == -1)
  	{
! 	  /* If only the pointer attribute operand was specified and
! 	     not size, set SIZE to the greater of MINSIZE or size of
! 	     one element of the pointed to type to detect smaller
! 	     objects (null pointers are diagnosed in this case only
! 	     if the pointer is also declared with attribute nonnull.  */
! 	  if (access.second.minsize
! 	      && access.second.minsize != HOST_WIDE_INT_M1U)
! 	    access_size = build_int_cstu (sizetype, access.second.minsize);
! 	  else
! 	    access_size = size_one_node;
  	}
        else
! 	access_size = rwm->get (sizidx)->size;
  
!       /* Format the value or range to avoid an explosion of messages.  */
!       char sizstr[80];
        tree sizrng[2] = { size_zero_node, build_all_ones_cst (sizetype) };
!       if (get_size_range (access_size, sizrng, true))
! 	{
! 	  char *s0 = print_generic_expr_to_str (sizrng[0]);
! 	  if (tree_int_cst_equal (sizrng[0], sizrng[1]))
! 	    {
! 	      gcc_checking_assert (strlen (s0) < sizeof sizstr);
! 	      strcpy (sizstr, s0);
! 	    }
! 	  else
! 	    {
! 	      char *s1 = print_generic_expr_to_str (sizrng[1]);
! 	      gcc_checking_assert (strlen (s0) + strlen (s1)
! 				   < sizeof sizstr - 4);
! 	      sprintf (sizstr, "[%s, %s]", s0, s1);
! 	      free (s1);
! 	    }
! 	  free (s0);
! 	}
!       else
! 	*sizstr = '\0';
! 
!       /* Set if a warning has been issued for the current argument.  */
!       bool arg_warned = false;
!       location_t loc = EXPR_LOCATION (exp);
!       tree ptr = access.second.ptr;
!       if (*sizstr
  	  && tree_int_cst_sgn (sizrng[0]) < 0
  	  && tree_int_cst_sgn (sizrng[1]) < 0)
  	{
  	  /* Warn about negative sizes.  */
! 	  if (access.second.internal_p)
! 	    {
! 	      const std::string argtypestr
! 		= access.second.array_as_string (ptrtype);
! 
! 	      arg_warned = warning_at (loc, OPT_Wstringop_overflow_,
! 				       "%Kbound argument %i value %s is "
! 				       "negative for a variable length array "
! 				       "argument %i of type %s",
! 				       exp, sizidx + 1, sizstr,
! 				       ptridx + 1, argtypestr.c_str ());
! 	    }
  	  else
! 	    arg_warned = warning_at (loc, OPT_Wstringop_overflow_,
! 				     "%Kargument %i value %s is negative",
! 				     exp, sizidx + 1, sizstr);
! 
! 	  if (arg_warned)
  	    {
  	      append_attrname (access, attrstr, sizeof attrstr);
! 	      /* Remember a warning has been issued and avoid warning
! 		 again below for the same attribute.  */
! 	      any_warned = true;
  	      continue;
  	    }
  	}
*************** maybe_warn_rdwr_sizes (rdwr_map *rwm, tr
*** 2056,2153 ****
  	{
  	  if (COMPLETE_TYPE_P (argtype))
  	    {
! 	      /* Multiple SIZE by the size of the type the pointer
! 		 argument points to.  If it's incomplete the size
! 		 is used as is.  */
! 	      size = NULL_TREE;
  	      if (tree argsize = TYPE_SIZE_UNIT (argtype))
  		if (TREE_CODE (argsize) == INTEGER_CST)
  		  {
  		    const int prec = TYPE_PRECISION (sizetype);
  		    wide_int minsize = wi::to_wide (sizrng[0], prec);
  		    minsize *= wi::to_wide (argsize, prec);
! 		    size = wide_int_to_tree (sizetype, minsize);
  		  }
  	    }
  	}
        else
! 	size = NULL_TREE;
  
!       if (sizidx >= 0
! 	  && integer_zerop (ptr)
! 	  && tree_int_cst_sgn (sizrng[0]) > 0)
  	{
! 	  /* Warn about null pointers with positive sizes.  This is
! 	     different from also declaring the pointer argument with
! 	     attribute nonnull when the function accepts null pointers
! 	     only when the corresponding size is zero.  */
! 	  bool warned = false;
! 	  location_t loc = EXPR_LOCATION (exp);
! 	  if (tree_int_cst_equal (sizrng[0], sizrng[1]))
! 	    warned = warning_at (loc, OPT_Wnonnull,
! 				 "%Kargument %i is null but the corresponding "
! 				 "size argument %i value is %E",
! 				 exp, ptridx + 1, sizidx + 1, size);
! 	  else
! 	    warned = warning_at (loc, OPT_Wnonnull,
! 				 "%Kargument %i is null but the corresponding "
! 				 "size argument %i range is [%E, %E]",
! 				 exp, ptridx + 1, sizidx + 1,
! 				 sizrng[0], sizrng[1]);
! 	  if (warned)
  	    {
  	      append_attrname (access, attrstr, sizeof attrstr);
! 	      /* Avoid warning again for the same attribute.  */
  	      continue;
  	    }
  	}
  
!       tree objsize = compute_objsize (ptr, 0);
  
!       tree srcsize;
!       if (access.second.mode == attr_access::write_only)
! 	{
! 	  /* For a write-only argument there is no source.  */
! 	  srcsize = NULL_TREE;
! 	}
!       else
  	{
! 	  /* For read-only and read-write attributes also set the source
! 	     size.  */
  	  srcsize = objsize;
! 	  if (access.second.mode == attr_access::read_only)
  	    {
  	      /* For a read-only attribute there is no destination so
  		 clear OBJSIZE.  This emits "reading N bytes" kind of
! 		 diagnostics instead of the "writing N bytes" kind.  */
  	      objsize = NULL_TREE;
  	    }
  	}
  
!       /* Clear the no-warning bit in case it was set in a prior
! 	 iteration so that accesses via different arguments are
! 	 diagnosed.  */
        TREE_NO_WARNING (exp) = false;
!       check_access (exp, NULL_TREE, NULL_TREE, size, /*maxread=*/ NULL_TREE,
! 		    srcsize, objsize);
  
        if (TREE_NO_WARNING (exp))
! 	/* If check_access issued a warning above, append the relevant
! 	   attribute to the string.  */
! 	append_attrname (access, attrstr, sizeof attrstr);
!     }
  
!   if (!*attrstr)
!     return;
  
!   if (fndecl)
!     inform (DECL_SOURCE_LOCATION (fndecl),
! 	    "in a call to function %qD declared with attribute %qs",
! 	    fndecl, attrstr);
!   else
!     inform (EXPR_LOCATION (fndecl),
! 	    "in a call with type %qT and attribute %qs",
! 	    fntype, attrstr);
  
    /* Set the bit in case if was cleared and not set above.  */
    TREE_NO_WARNING (exp) = true;
--- 2091,2234 ----
  	{
  	  if (COMPLETE_TYPE_P (argtype))
  	    {
! 	      /* Multiply ACCESS_SIZE by the size of the type the pointer
! 		 argument points to.  If it's incomplete the size is used
! 		 as is.  */
  	      if (tree argsize = TYPE_SIZE_UNIT (argtype))
  		if (TREE_CODE (argsize) == INTEGER_CST)
  		  {
  		    const int prec = TYPE_PRECISION (sizetype);
  		    wide_int minsize = wi::to_wide (sizrng[0], prec);
  		    minsize *= wi::to_wide (argsize, prec);
! 		    access_size = wide_int_to_tree (sizetype, minsize);
  		  }
  	    }
  	}
        else
! 	access_size = NULL_TREE;
  
!       if (integer_zerop (ptr))
  	{
! 	  if (sizidx >= 0 && tree_int_cst_sgn (sizrng[0]) > 0)
! 	    {
! 	      /* Warn about null pointers with positive sizes.  This is
! 		 different from also declaring the pointer argument with
! 		 attribute nonnull when the function accepts null pointers
! 		 only when the corresponding size is zero.  */
! 	      if (access.second.internal_p)
! 		{
! 		  const std::string argtypestr
! 		    = access.second.array_as_string (ptrtype);
! 
! 		  arg_warned = warning_at (loc, OPT_Wnonnull,
! 					   "%Kargument %i of variable length "
! 					   "array %s is null but "
! 					   "the corresponding bound argument "
! 					   "%i value is %s",
! 					   exp, sizidx + 1, argtypestr.c_str (),
! 					   ptridx + 1, sizstr);
! 		}
! 	      else
! 		arg_warned = warning_at (loc, OPT_Wnonnull,
! 					 "%Kargument %i is null but "
! 					 "the corresponding size argument "
! 					 "%i value is %s",
! 					 exp, ptridx + 1, sizidx + 1,
! 					 sizstr);
! 	    }
! 	  else if (access_size && access.second.static_p)
! 	    {
! 	      /* Warn about null pointers for [static N] array arguments
! 		 but do not warn for ordinary (i.e., nonstatic) arrays.  */
! 	      arg_warned = warning_at (loc, OPT_Wnonnull,
! 				       "%Kargument %i to %<%T[static %E]%> "
! 				       "is null where non-null expected",
! 				       exp, ptridx + 1, argtype,
! 				       access_size);
! 	    }
! 
! 	  if (arg_warned)
  	    {
  	      append_attrname (access, attrstr, sizeof attrstr);
! 	      /* Remember a warning has been issued and avoid warning
! 		 again below for the same attribute.  */
! 	      any_warned = true;
  	      continue;
  	    }
  	}
  
!       access_data data (ptr, access.second.mode, NULL_TREE, false,
! 			NULL_TREE, false);
!       access_ref* const pobj = (access.second.mode == access_write_only
! 				? &data.dst : &data.src);
!       tree objsize = compute_objsize (ptr, 1, pobj);
  
!       /* The size of the destination or source object.  */
!       tree dstsize = NULL_TREE, srcsize = NULL_TREE;
!       if (access.second.mode == access_read_only
! 	  || access.second.mode == access_none)
  	{
! 	  /* For a read-only argument there is no destination.  For
! 	     no access, set the source as well and differentiate via
! 	     the access flag below.  */
  	  srcsize = objsize;
! 	  if (access.second.mode == access_read_only
! 	      || access.second.mode == access_none)
  	    {
  	      /* For a read-only attribute there is no destination so
  		 clear OBJSIZE.  This emits "reading N bytes" kind of
! 		 diagnostics instead of the "writing N bytes" kind,
! 		 unless MODE is none.  */
  	      objsize = NULL_TREE;
  	    }
  	}
+       else
+ 	dstsize = objsize;
  
!       /* Clear the no-warning bit in case it was set by check_access
! 	 in a prior iteration so that accesses via different arguments
! 	 are diagnosed.  */
        TREE_NO_WARNING (exp) = false;
!       access_mode mode = data.mode;
!       if (mode == access_deferred)
! 	mode = TYPE_READONLY (argtype) ? access_read_only : access_read_write;
!       check_access (exp, access_size, /*maxread=*/ NULL_TREE, srcsize,
! 		    dstsize, mode, &data);
  
        if (TREE_NO_WARNING (exp))
! 	{
! 	  any_warned = true;
  
! 	  if (access.second.internal_p)
! 	    inform (loc, "referencing argument %u of type %qT",
! 		    ptridx + 1, ptrtype);
! 	  else
! 	    /* If check_access issued a warning above, append the relevant
! 	       attribute to the string.  */
! 	    append_attrname (access, attrstr, sizeof attrstr);
! 	}
!     }
  
!   if (*attrstr)
!     {
!       if (fndecl)
! 	inform (DECL_SOURCE_LOCATION (fndecl),
! 		"in a call to function %qD declared with attribute %qs",
! 		fndecl, attrstr);
!       else
! 	inform (EXPR_LOCATION (fndecl),
! 		"in a call with type %qT and attribute %qs",
! 		fntype, attrstr);
!     }
!   else if (any_warned)
!     {
!       if (fndecl)
! 	inform (DECL_SOURCE_LOCATION (fndecl),
! 		"in a call to function %qD", fndecl);
!       else
! 	inform (EXPR_LOCATION (fndecl),
! 		"in a call with type %qT", fntype);
!     }
  
    /* Set the bit in case if was cleared and not set above.  */
    TREE_NO_WARNING (exp) = true;
*************** initialize_argument_information (int num
*** 2252,2264 ****
  
    bitmap_obstack_release (NULL);
  
    /* Extract attribute alloc_size from the type of the called expression
       (which could be a function or a function pointer) and if set, store
       the indices of the corresponding arguments in ALLOC_IDX, and then
       the actual argument(s) at those indices in ALLOC_ARGS.  */
    int alloc_idx[2] = { -1, -1 };
!   if (tree alloc_size = lookup_attribute ("alloc_size",
! 					  TYPE_ATTRIBUTES (fntype)))
      {
        tree args = TREE_VALUE (alloc_size);
        alloc_idx[0] = TREE_INT_CST_LOW (TREE_VALUE (args)) - 1;
--- 2333,2345 ----
  
    bitmap_obstack_release (NULL);
  
+   tree fntypeattrs = TYPE_ATTRIBUTES (fntype);
    /* Extract attribute alloc_size from the type of the called expression
       (which could be a function or a function pointer) and if set, store
       the indices of the corresponding arguments in ALLOC_IDX, and then
       the actual argument(s) at those indices in ALLOC_ARGS.  */
    int alloc_idx[2] = { -1, -1 };
!   if (tree alloc_size = lookup_attribute ("alloc_size", fntypeattrs))
      {
        tree args = TREE_VALUE (alloc_size);
        alloc_idx[0] = TREE_INT_CST_LOW (TREE_VALUE (args)) - 1;
*************** initialize_argument_information (int num
*** 2269,2278 ****
    /* Array for up to the two attribute alloc_size arguments.  */
    tree alloc_args[] = { NULL_TREE, NULL_TREE };
  
!   /* Map of attribute read_only, write_only, or read_write specifications
!      for function arguments.  */
    rdwr_map rdwr_idx;
!   init_attr_rdwr_indices (&rdwr_idx, fntype);
  
    /* I counts args in order (to be) pushed; ARGPOS counts in order written.  */
    for (argpos = 0; argpos < num_actuals; i--, argpos++)
--- 2350,2358 ----
    /* Array for up to the two attribute alloc_size arguments.  */
    tree alloc_args[] = { NULL_TREE, NULL_TREE };
  
!   /* Map of attribute accewss specifications for function arguments.  */
    rdwr_map rdwr_idx;
!   init_attr_rdwr_indices (&rdwr_idx, fntypeattrs);
  
    /* I counts args in order (to be) pushed; ARGPOS counts in order written.  */
    for (argpos = 0; argpos < num_actuals; i--, argpos++)
*************** initialize_argument_information (int num
*** 2520,2526 ****
  	  if (POINTER_TYPE_P (type))
  	    {
  	      access->ptr = args[i].tree_value;
! 	      gcc_assert (access->size == NULL_TREE);
  	    }
  	  else
  	    {
--- 2600,2606 ----
  	  if (POINTER_TYPE_P (type))
  	    {
  	      access->ptr = args[i].tree_value;
! 	      // A nonnull ACCESS->SIZE contains VLA bounds.  */
  	    }
  	  else
  	    {
*************** initialize_argument_information (int num
*** 2541,2548 ****
       nul-terminated strings.  */
    maybe_warn_nonstring_arg (fndecl, exp);
  
!   /* Check read_only, write_only, and read_write arguments.  */
    maybe_warn_rdwr_sizes (&rdwr_idx, fndecl, fntype, exp);
  }
  
  /* Update ARGS_SIZE to contain the total size for the argument block.
--- 2621,2632 ----
       nul-terminated strings.  */
    maybe_warn_nonstring_arg (fndecl, exp);
  
!   /* Check attribute access arguments.  */
    maybe_warn_rdwr_sizes (&rdwr_idx, fndecl, fntype, exp);
+ 
+   /* Check calls to operator new for mismatched forms and attempts
+      to deallocate unallocated objects.  */
+   maybe_emit_free_warning (exp);
  }
  
  /* Update ARGS_SIZE to contain the total size for the argument block.
*************** internal_arg_pointer_based_exp_scan (voi
*** 2938,2944 ****
  	    {
  	      if (idx >= internal_arg_pointer_exp_state.cache.length ())
  		internal_arg_pointer_exp_state.cache
! 		  .safe_grow_cleared (idx + 1);
  	      internal_arg_pointer_exp_state.cache[idx] = val;
  	    }
  	}
--- 3022,3028 ----
  	    {
  	      if (idx >= internal_arg_pointer_exp_state.cache.length ())
  		internal_arg_pointer_exp_state.cache
! 		  .safe_grow_cleared (idx + 1, true);
  	      internal_arg_pointer_exp_state.cache[idx] = val;
  	    }
  	}
*************** static bool
*** 3445,3451 ****
  can_implement_as_sibling_call_p (tree exp,
  				 rtx structure_value_addr,
  				 tree funtype,
- 				 int reg_parm_stack_space ATTRIBUTE_UNUSED,
  				 tree fndecl,
  				 int flags,
  				 tree addr,
--- 3529,3534 ----
*************** can_implement_as_sibling_call_p (tree ex
*** 3470,3489 ****
        return false;
      }
  
- #ifdef REG_PARM_STACK_SPACE
-   /* If outgoing reg parm stack space changes, we cannot do sibcall.  */
-   if (OUTGOING_REG_PARM_STACK_SPACE (funtype)
-       != OUTGOING_REG_PARM_STACK_SPACE (TREE_TYPE (current_function_decl))
-       || (reg_parm_stack_space != REG_PARM_STACK_SPACE (current_function_decl)))
-     {
-       maybe_complain_about_tail_call (exp,
- 				      "inconsistent size of stack space"
- 				      " allocated for arguments which are"
- 				      " passed in registers");
-       return false;
-     }
- #endif
- 
    /* Check whether the target is able to optimize the call
       into a sibcall.  */
    if (!targetm.function_ok_for_sibcall (fndecl, exp))
--- 3553,3558 ----
*************** expand_call (tree exp, rtx target, int i
*** 4008,4014 ****
      try_tail_call = can_implement_as_sibling_call_p (exp,
  						     structure_value_addr,
  						     funtype,
- 						     reg_parm_stack_space,
  						     fndecl,
  						     flags, addr, args_size);
  
--- 4077,4082 ----
diff -Nrcpad gcc-10.3.0/gcc/calls.h gcc-11.1.0/gcc/calls.h
*** gcc-10.3.0/gcc/calls.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/calls.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Declarations and data types for RTL call insn generation.
!    Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Declarations and data types for RTL call insn generation.
!    Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern bool reference_callee_copied (CUM
*** 132,139 ****
  				     const function_arg_info &);
  extern void maybe_warn_alloc_args_overflow (tree, tree, tree[2], int[2]);
  extern tree get_attr_nonstring_decl (tree, tree * = NULL);
! extern void maybe_warn_nonstring_arg (tree, tree);
! extern bool get_size_range (tree, tree[2], bool = false);
  extern rtx rtx_for_static_chain (const_tree, bool);
  extern bool cxx17_empty_base_field_p (const_tree);
  
--- 132,150 ----
  				     const function_arg_info &);
  extern void maybe_warn_alloc_args_overflow (tree, tree, tree[2], int[2]);
  extern tree get_attr_nonstring_decl (tree, tree * = NULL);
! extern bool maybe_warn_nonstring_arg (tree, tree);
! extern void maybe_complain_about_tail_call (tree, const char *);
! enum size_range_flags
!   {
!    /* Set to consider zero a valid range.  */
!    SR_ALLOW_ZERO = 1,
!    /* Set to use the largest subrange of a set of ranges as opposed
!       to the smallest.  */
!    SR_USE_LARGEST = 2
!   };
! extern bool get_size_range (tree, tree[2], int = 0);
! extern bool get_size_range (class range_query *, tree, gimple *,
! 			    tree[2], int = 0);
  extern rtx rtx_for_static_chain (const_tree, bool);
  extern bool cxx17_empty_base_field_p (const_tree);
  
diff -Nrcpad gcc-10.3.0/gcc/ccmp.c gcc-11.1.0/gcc/ccmp.c
*** gcc-10.3.0/gcc/ccmp.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/ccmp.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Conditional compare related functions
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Conditional compare related functions
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/ccmp.h gcc-11.1.0/gcc/ccmp.h
*** gcc-10.3.0/gcc/ccmp.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/ccmp.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Conditional comapre related functions.
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Conditional comapre related functions.
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/cfg-flags.def gcc-11.1.0/gcc/cfg-flags.def
*** gcc-10.3.0/gcc/cfg-flags.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfg-flags.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Flags on basic blocks and edges.
!    Copyright (C) 2012-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Flags on basic blocks and edges.
!    Copyright (C) 2012-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/cfg.c gcc-11.1.0/gcc/cfg.c
*** gcc-10.3.0/gcc/cfg.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfg.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Control flow graph manipulation code for GNU compiler.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow graph manipulation code for GNU compiler.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 25,31 ****
  
     Available functionality:
       - Initialization/deallocation
! 	 init_flow, clear_edges
       - Low level basic block manipulation
  	 alloc_block, expunge_block
       - Edge manipulation
--- 25,31 ----
  
     Available functionality:
       - Initialization/deallocation
! 	 init_flow, free_cfg
       - Low level basic block manipulation
  	 alloc_block, expunge_block
       - Edge manipulation
*************** init_flow (struct function *the_fun)
*** 83,89 ****
    the_fun->cfg->bb_flags_allocated = BB_ALL_FLAGS;
  }
  
! /* Helper function for remove_edge and clear_edges.  Frees edge structure
     without actually removing it from the pred/succ arrays.  */
  
  static void
--- 83,89 ----
    the_fun->cfg->bb_flags_allocated = BB_ALL_FLAGS;
  }
  
! /* Helper function for remove_edge and free_cffg.  Frees edge structure
     without actually removing it from the pred/succ arrays.  */
  
  static void
*************** free_edge (function *fn, edge e)
*** 93,121 ****
    ggc_free (e);
  }
  
! /* Free the memory associated with the edge structures.  */
  
  void
! clear_edges (struct function *fn)
  {
-   basic_block bb;
    edge e;
    edge_iterator ei;
  
!   FOR_EACH_BB_FN (bb, fn)
      {
        FOR_EACH_EDGE (e, ei, bb->succs)
  	free_edge (fn, e);
!       vec_safe_truncate (bb->succs, 0);
!       vec_safe_truncate (bb->preds, 0);
      }
  
-   FOR_EACH_EDGE (e, ei, ENTRY_BLOCK_PTR_FOR_FN (fn)->succs)
-     free_edge (fn, e);
-   vec_safe_truncate (EXIT_BLOCK_PTR_FOR_FN (fn)->preds, 0);
-   vec_safe_truncate (ENTRY_BLOCK_PTR_FOR_FN (fn)->succs, 0);
- 
    gcc_assert (!n_edges_for_fn (fn));
  }
  
  /* Allocate memory for basic_block.  */
--- 93,135 ----
    ggc_free (e);
  }
  
! /* Free basic block BB.  */
! 
! static void
! free_block (basic_block bb)
! {
!    vec_free (bb->succs);
!    bb->succs = NULL;
!    vec_free (bb->preds);
!    bb->preds = NULL;
!    ggc_free (bb);
! }
! 
! /* Free the memory associated with the CFG in FN.  */
  
  void
! free_cfg (struct function *fn)
  {
    edge e;
    edge_iterator ei;
+   basic_block next;
  
!   for (basic_block bb = ENTRY_BLOCK_PTR_FOR_FN (fn); bb; bb = next)
      {
+       next = bb->next_bb;
        FOR_EACH_EDGE (e, ei, bb->succs)
  	free_edge (fn, e);
!       free_block (bb);
      }
  
    gcc_assert (!n_edges_for_fn (fn));
+   /* Sanity check that dominance tree is freed.  */
+   gcc_assert (!fn->cfg->x_dom_computed[0] && !fn->cfg->x_dom_computed[1]);
+   
+   vec_free (fn->cfg->x_label_to_block_map);
+   vec_free (basic_block_info_for_fn (fn));
+   ggc_free (fn->cfg);
+   fn->cfg = NULL;
  }
  
  /* Allocate memory for basic_block.  */
*************** expunge_block (basic_block b)
*** 190,197 ****
    /* We should be able to ggc_free here, but we are not.
       The dead SSA_NAMES are left pointing to dead statements that are pointing
       to dead basic blocks making garbage collector to die.
!      We should be able to release all dead SSA_NAMES and at the same time we should
!      clear out BB pointer of dead statements consistently.  */
  }
  
  /* Connect E to E->src.  */
--- 204,211 ----
    /* We should be able to ggc_free here, but we are not.
       The dead SSA_NAMES are left pointing to dead statements that are pointing
       to dead basic blocks making garbage collector to die.
!      We should be able to release all dead SSA_NAMES and at the same time we
!      should clear out BB pointer of dead statements consistently.  */
  }
  
  /* Connect E to E->src.  */
*************** free_aux_for_edges (void)
*** 720,726 ****
  DEBUG_FUNCTION void
  debug_bb (basic_block bb)
  {
!   dump_bb (stderr, bb, 0, dump_flags);
  }
  
  DEBUG_FUNCTION basic_block
--- 734,740 ----
  DEBUG_FUNCTION void
  debug_bb (basic_block bb)
  {
!   debug_bb (bb, dump_flags);
  }
  
  DEBUG_FUNCTION basic_block
*************** debug_bb_n (int n)
*** 731,736 ****
--- 745,768 ----
    return bb;
  }
  
+ /* Print BB with specified FLAGS.  */
+ 
+ DEBUG_FUNCTION void
+ debug_bb (basic_block bb, dump_flags_t flags)
+ {
+   dump_bb (stderr, bb, 0, flags);
+ }
+ 
+ /* Print basic block numbered N with specified FLAGS.  */
+ 
+ DEBUG_FUNCTION basic_block
+ debug_bb_n (int n, dump_flags_t flags)
+ {
+   basic_block bb = BASIC_BLOCK_FOR_FN (cfun, n);
+   debug_bb (bb, flags);
+   return bb;
+ }
+ 
  /* Dumps cfg related information about basic block BB to OUTF.
     If HEADER is true, dump things that appear before the instructions
     contained in BB.  If FOOTER is true, dump things that appear after.
*************** scale_bbs_frequencies (basic_block *bbs,
*** 959,1013 ****
      bbs[i]->count = bbs[i]->count.apply_probability (p);
  }
  
- /* Helper types for hash tables.  */
- 
- struct htab_bb_copy_original_entry
- {
-   /* Block we are attaching info to.  */
-   int index1;
-   /* Index of original or copy (depending on the hashtable) */
-   int index2;
- };
- 
- struct bb_copy_hasher : nofree_ptr_hash <htab_bb_copy_original_entry>
- {
-   static inline hashval_t hash (const htab_bb_copy_original_entry *);
-   static inline bool equal (const htab_bb_copy_original_entry *existing,
- 			    const htab_bb_copy_original_entry * candidate);
- };
- 
- inline hashval_t
- bb_copy_hasher::hash (const htab_bb_copy_original_entry *data)
- {
-   return data->index1;
- }
- 
- inline bool
- bb_copy_hasher::equal (const htab_bb_copy_original_entry *data,
- 		       const htab_bb_copy_original_entry *data2)
- {
-   return data->index1 == data2->index1;
- }
- 
  /* Data structures used to maintain mapping between basic blocks and
     copies.  */
! static hash_table<bb_copy_hasher> *bb_original;
! static hash_table<bb_copy_hasher> *bb_copy;
  
  /* And between loops and copies.  */
! static hash_table<bb_copy_hasher> *loop_copy;
! static object_allocator<htab_bb_copy_original_entry> *original_copy_bb_pool;
  
  /* Initialize the data structures to maintain mapping between blocks
     and its copies.  */
  void
  initialize_original_copy_tables (void)
  {
!   original_copy_bb_pool = new object_allocator<htab_bb_copy_original_entry>
!     ("original_copy");
!   bb_original = new hash_table<bb_copy_hasher> (10);
!   bb_copy = new hash_table<bb_copy_hasher> (10);
!   loop_copy = new hash_table<bb_copy_hasher> (10);
  }
  
  /* Reset the data structures to maintain mapping between blocks and
--- 991,1013 ----
      bbs[i]->count = bbs[i]->count.apply_probability (p);
  }
  
  /* Data structures used to maintain mapping between basic blocks and
     copies.  */
! typedef hash_map<int_hash<int, -1, -2>, int> copy_map_t;
! static copy_map_t *bb_original;
! static copy_map_t *bb_copy;
  
  /* And between loops and copies.  */
! static copy_map_t *loop_copy;
  
  /* Initialize the data structures to maintain mapping between blocks
     and its copies.  */
  void
  initialize_original_copy_tables (void)
  {
!   bb_original = new copy_map_t (10);
!   bb_copy = new copy_map_t (10);
!   loop_copy = new copy_map_t (10);
  }
  
  /* Reset the data structures to maintain mapping between blocks and
*************** initialize_original_copy_tables (void)
*** 1016,1022 ****
  void
  reset_original_copy_tables (void)
  {
-   gcc_assert (original_copy_bb_pool);
    bb_original->empty ();
    bb_copy->empty ();
    loop_copy->empty ();
--- 1016,1021 ----
*************** reset_original_copy_tables (void)
*** 1027,1041 ****
  void
  free_original_copy_tables (void)
  {
-   gcc_assert (original_copy_bb_pool);
    delete bb_copy;
    bb_copy = NULL;
    delete bb_original;
    bb_original = NULL;
    delete loop_copy;
    loop_copy = NULL;
-   delete original_copy_bb_pool;
-   original_copy_bb_pool = NULL;
  }
  
  /* Return true iff we have had a call to initialize_original_copy_tables
--- 1026,1037 ----
*************** free_original_copy_tables (void)
*** 1044,1094 ****
  bool
  original_copy_tables_initialized_p (void)
  {
!   return original_copy_bb_pool != NULL;
  }
  
  /* Removes the value associated with OBJ from table TAB.  */
  
  static void
! copy_original_table_clear (hash_table<bb_copy_hasher> *tab, unsigned obj)
  {
!   htab_bb_copy_original_entry **slot;
!   struct htab_bb_copy_original_entry key, *elt;
! 
!   if (!original_copy_bb_pool)
!     return;
! 
!   key.index1 = obj;
!   slot = tab->find_slot (&key, NO_INSERT);
!   if (!slot)
      return;
  
!   elt = *slot;
!   tab->clear_slot (slot);
!   original_copy_bb_pool->remove (elt);
  }
  
  /* Sets the value associated with OBJ in table TAB to VAL.
     Do nothing when data structures are not initialized.  */
  
  static void
! copy_original_table_set (hash_table<bb_copy_hasher> *tab,
  			 unsigned obj, unsigned val)
  {
!   struct htab_bb_copy_original_entry **slot;
!   struct htab_bb_copy_original_entry key;
! 
!   if (!original_copy_bb_pool)
      return;
  
!   key.index1 = obj;
!   slot = tab->find_slot (&key, INSERT);
!   if (!*slot)
!     {
!       *slot = original_copy_bb_pool->allocate ();
!       (*slot)->index1 = obj;
!     }
!   (*slot)->index2 = val;
  }
  
  /* Set original for basic block.  Do nothing when data structures are not
--- 1040,1070 ----
  bool
  original_copy_tables_initialized_p (void)
  {
!   return bb_copy != NULL;
  }
  
  /* Removes the value associated with OBJ from table TAB.  */
  
  static void
! copy_original_table_clear (copy_map_t *tab, unsigned obj)
  {
!   if (!original_copy_tables_initialized_p ())
      return;
  
!   tab->remove (obj);
  }
  
  /* Sets the value associated with OBJ in table TAB to VAL.
     Do nothing when data structures are not initialized.  */
  
  static void
! copy_original_table_set (copy_map_t *tab,
  			 unsigned obj, unsigned val)
  {
!   if (!original_copy_tables_initialized_p ())
      return;
  
!   tab->put (obj, val);
  }
  
  /* Set original for basic block.  Do nothing when data structures are not
*************** set_bb_original (basic_block bb, basic_b
*** 1103,1117 ****
  basic_block
  get_bb_original (basic_block bb)
  {
!   struct htab_bb_copy_original_entry *entry;
!   struct htab_bb_copy_original_entry key;
! 
!   gcc_assert (original_copy_bb_pool);
  
!   key.index1 = bb->index;
!   entry = bb_original->find (&key);
    if (entry)
!     return BASIC_BLOCK_FOR_FN (cfun, entry->index2);
    else
      return NULL;
  }
--- 1079,1089 ----
  basic_block
  get_bb_original (basic_block bb)
  {
!   gcc_assert (original_copy_tables_initialized_p ());
  
!   int *entry = bb_original->get (bb->index);
    if (entry)
!     return BASIC_BLOCK_FOR_FN (cfun, *entry);
    else
      return NULL;
  }
*************** set_bb_copy (basic_block bb, basic_block
*** 1128,1142 ****
  basic_block
  get_bb_copy (basic_block bb)
  {
!   struct htab_bb_copy_original_entry *entry;
!   struct htab_bb_copy_original_entry key;
! 
!   gcc_assert (original_copy_bb_pool);
  
!   key.index1 = bb->index;
!   entry = bb_copy->find (&key);
    if (entry)
!     return BASIC_BLOCK_FOR_FN (cfun, entry->index2);
    else
      return NULL;
  }
--- 1100,1110 ----
  basic_block
  get_bb_copy (basic_block bb)
  {
!   gcc_assert (original_copy_tables_initialized_p ());
  
!   int *entry = bb_copy->get (bb->index);
    if (entry)
!     return BASIC_BLOCK_FOR_FN (cfun, *entry);
    else
      return NULL;
  }
*************** set_loop_copy (class loop *loop, class l
*** 1158,1172 ****
  class loop *
  get_loop_copy (class loop *loop)
  {
!   struct htab_bb_copy_original_entry *entry;
!   struct htab_bb_copy_original_entry key;
! 
!   gcc_assert (original_copy_bb_pool);
  
!   key.index1 = loop->num;
!   entry = loop_copy->find (&key);
    if (entry)
!     return get_loop (cfun, entry->index2);
    else
      return NULL;
  }
--- 1126,1136 ----
  class loop *
  get_loop_copy (class loop *loop)
  {
!   gcc_assert (original_copy_tables_initialized_p ());
  
!   int *entry = loop_copy->get (loop->num);
    if (entry)
!     return get_loop (cfun, *entry);
    else
      return NULL;
  }
diff -Nrcpad gcc-10.3.0/gcc/cfg.h gcc-11.1.0/gcc/cfg.h
*** gcc-10.3.0/gcc/cfg.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfg.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Control flow graph manipulation code header file.
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow graph manipulation code header file.
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** struct GTY(()) control_flow_graph {
*** 82,88 ****
  
  
  extern void init_flow (function *);
! extern void clear_edges (function *);
  extern basic_block alloc_block (void);
  extern void link_block (basic_block, basic_block);
  extern void unlink_block (basic_block);
--- 82,88 ----
  
  
  extern void init_flow (function *);
! extern void free_cfg (function *);
  extern basic_block alloc_block (void);
  extern void link_block (basic_block, basic_block);
  extern void unlink_block (basic_block);
*************** extern void clear_aux_for_edges (void);
*** 108,113 ****
--- 108,115 ----
  extern void free_aux_for_edges (void);
  extern void debug_bb (basic_block);
  extern basic_block debug_bb_n (int);
+ extern void debug_bb (basic_block, dump_flags_t);
+ extern basic_block debug_bb_n (int, dump_flags_t);
  extern void dump_bb_info (FILE *, basic_block, int, dump_flags_t, bool, bool);
  extern void brief_dump_cfg (FILE *, dump_flags_t);
  extern void update_bb_profile_for_threading (basic_block, profile_count, edge);
diff -Nrcpad gcc-10.3.0/gcc/cfganal.c gcc-11.1.0/gcc/cfganal.c
*** gcc-10.3.0/gcc/cfganal.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfganal.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Control flow graph analysis code for GNU compiler.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow graph analysis code for GNU compiler.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** pre_and_rev_post_order_compute (int *pre
*** 1060,1172 ****
    return pre_order_num;
  }
  
! /* Unlike pre_and_rev_post_order_compute we fill rev_post_order backwards
!    so iterating in RPO order needs to start with rev_post_order[n - 1]
!    going to rev_post_order[0].  If FOR_ITERATION is true then try to
!    make CFG cycles fit into small contiguous regions of the RPO order.
!    When FOR_ITERATION is true this requires up-to-date loop structures.  */
  
  int
  rev_post_order_and_mark_dfs_back_seme (struct function *fn, edge entry,
  				       bitmap exit_bbs, bool for_iteration,
! 				       int *rev_post_order)
  {
-   int pre_order_num = 0;
    int rev_post_order_num = 0;
  
-   /* Allocate stack for back-tracking up CFG.  Worst case we need
-      O(n^2) edges but the following should suffice in practice without
-      a need to re-allocate.  */
-   auto_vec<edge, 20> stack (2 * n_basic_blocks_for_fn (fn));
- 
-   int *pre = XNEWVEC (int, 2 * last_basic_block_for_fn (fn));
-   int *post = pre + last_basic_block_for_fn (fn);
- 
    /* BB flag to track nodes that have been visited.  */
    auto_bb_flag visited (fn);
-   /* BB flag to track which nodes have post[] assigned to avoid
-      zeroing post.  */
-   auto_bb_flag post_assigned (fn);
  
!   /* Push the first edge on to the stack.  */
!   stack.quick_push (entry);
  
!   while (!stack.is_empty ())
!     {
!       basic_block src;
!       basic_block dest;
  
!       /* Look at the edge on the top of the stack.  */
!       int idx = stack.length () - 1;
!       edge e = stack[idx];
!       src = e->src;
!       dest = e->dest;
!       e->flags &= ~EDGE_DFS_BACK;
  
!       /* Check if the edge destination has been visited yet.  */
!       if (! bitmap_bit_p (exit_bbs, dest->index)
! 	  && ! (dest->flags & visited))
  	{
! 	  /* Mark that we have visited the destination.  */
! 	  dest->flags |= visited;
! 
! 	  pre[dest->index] = pre_order_num++;
  
! 	  if (EDGE_COUNT (dest->succs) > 0)
  	    {
! 	      /* Since the DEST node has been visited for the first
! 		 time, check its successors.  */
! 	      /* Push the edge vector in reverse to match previous behavior.  */
! 	      stack.reserve (EDGE_COUNT (dest->succs));
! 	      for (int i = EDGE_COUNT (dest->succs) - 1; i >= 0; --i)
! 		stack.quick_push (EDGE_SUCC (dest, i));
! 	      /* Generalize to handle more successors?  */
! 	      if (for_iteration
! 		  && EDGE_COUNT (dest->succs) == 2)
! 		{
! 		  edge &e1 = stack[stack.length () - 2];
! 		  if (loop_exit_edge_p (e1->src->loop_father, e1))
! 		    std::swap (e1, stack.last ());
! 		}
  	    }
  	  else
  	    {
! 	      /* There are no successors for the DEST node so assign
! 		 its reverse completion number.  */
! 	      post[dest->index] = rev_post_order_num;
! 	      dest->flags |= post_assigned;
! 	      rev_post_order[rev_post_order_num] = dest->index;
! 	      rev_post_order_num++;
  	    }
  	}
!       else
! 	{
! 	  if (dest->flags & visited
! 	      && src != entry->src
! 	      && pre[src->index] >= pre[dest->index]
! 	      && !(dest->flags & post_assigned))
! 	    e->flags |= EDGE_DFS_BACK;
  
! 	  if (idx != 0 && stack[idx - 1]->src != src)
  	    {
! 	      /* There are no more successors for the SRC node
! 		 so assign its reverse completion number.  */
! 	      post[src->index] = rev_post_order_num;
! 	      src->flags |= post_assigned;
! 	      rev_post_order[rev_post_order_num] = src->index;
! 	      rev_post_order_num++;
  	    }
  
! 	  stack.pop ();
  	}
      }
  
!   XDELETEVEC (pre);
  
!   /* Clear the temporarily allocated flags.  */
    for (int i = 0; i < rev_post_order_num; ++i)
!     BASIC_BLOCK_FOR_FN (fn, rev_post_order[i])->flags
!       &= ~(post_assigned|visited);
  
    return rev_post_order_num;
  }
--- 1060,1448 ----
    return pre_order_num;
  }
  
! 
! /* Per basic-block data for rev_post_order_and_mark_dfs_back_seme,
!    element of a sparsely populated array indexed by basic-block number.  */
! typedef auto_vec<int, 2> scc_exit_vec_t;
! struct rpoamdbs_bb_data {
!     int depth;
!     int bb_to_pre;
!     /* The basic-block index of the SCC entry of the block visited first
!        (the SCC leader).  */
!     int scc;
!     /* The index into the RPO array where the blocks SCC entries end
!        (only valid for the SCC leader).  */
!     int scc_end;
!     /* The indexes of the exits destinations of this SCC (only valid
!        for the SCC leader).  Initialized upon discovery of SCC leaders.  */
!     scc_exit_vec_t scc_exits;
! };
! 
! /* Tag H as a header of B, weaving H and its loop header list into the
!    current loop header list of B.  */
! 
! static void
! tag_header (int b, int h, rpoamdbs_bb_data *bb_data)
! {
!   if (h == -1 || b == h)
!     return;
!   int cur1 = b;
!   int cur2 = h;
!   while (bb_data[cur1].scc != -1)
!     {
!       int ih = bb_data[cur1].scc;
!       if (ih == cur2)
! 	return;
!       if (bb_data[ih].depth < bb_data[cur2].depth)
! 	{
! 	  bb_data[cur1].scc = cur2;
! 	  cur1 = cur2;
! 	  cur2 = ih;
! 	}
!       else
! 	cur1 = ih;
!     }
!   bb_data[cur1].scc = cur2;
! }
! 
! /* Comparator for a sort of two edges destinations E1 and E2 after their index
!    in the PRE array as specified by BB_TO_PRE.  */
! 
! static int
! cmp_edge_dest_pre (const void *e1_, const void *e2_, void *data_)
! {
!   const int *e1 = (const int *)e1_;
!   const int *e2 = (const int *)e2_;
!   rpoamdbs_bb_data *bb_data = (rpoamdbs_bb_data *)data_;
!   return (bb_data[*e1].bb_to_pre - bb_data[*e2].bb_to_pre);
! }
! 
! /* Compute the reverse completion number of a depth first search
!    on the SEME region denoted by the ENTRY edge and the EXIT_BBS set of
!    exit block indexes and store it in the array REV_POST_ORDER.
!    Also sets the EDGE_DFS_BACK edge flags according to this visitation
!    order.
!    Returns the number of nodes visited.
! 
!    In case the function has unreachable blocks the number of nodes
!    visited does not include them.
! 
!    If FOR_ITERATION is true then compute an RPO where SCCs form a
!    contiguous region in the RPO array.
!    *TOPLEVEL_SCC_EXTENTS if not NULL is filled with pairs of
!    *REV_POST_ORDER indexes denoting extents of the toplevel SCCs in
!    this region.  */
  
  int
  rev_post_order_and_mark_dfs_back_seme (struct function *fn, edge entry,
  				       bitmap exit_bbs, bool for_iteration,
! 				       int *rev_post_order,
! 				       vec<std::pair<int, int> >
! 					 *toplevel_scc_extents)
  {
    int rev_post_order_num = 0;
  
    /* BB flag to track nodes that have been visited.  */
    auto_bb_flag visited (fn);
  
!   /* Lazily initialized per-BB data for the two DFS walks below.  */
!   rpoamdbs_bb_data *bb_data
!     = XNEWVEC (rpoamdbs_bb_data, last_basic_block_for_fn (fn));
  
!   /* First DFS walk, loop discovery according to
!       A New Algorithm for Identifying Loops in Decompilation
!      by Tao Wei, Jian Mao, Wei Zou and You Chen of the Institute of
!      Computer Science and Technology of the Peking University.  */
!   auto_vec<edge_iterator, 20> ei_stack (n_basic_blocks_for_fn (fn) + 1);
!   auto_bb_flag is_header (fn);
!   int depth = 1;
!   unsigned n_sccs = 0;
  
!   basic_block dest = entry->dest;
!   edge_iterator ei;
!   int pre_num = 0;
  
!   /* DFS process DEST.  */
! find_loops:
!   bb_data[dest->index].bb_to_pre = pre_num++;
!   bb_data[dest->index].depth = depth;
!   bb_data[dest->index].scc = -1;
!   depth++;
!   gcc_assert ((dest->flags & (is_header|visited)) == 0);
!   dest->flags |= visited;
!   ei = ei_start (dest->succs);
!   while (!ei_end_p (ei))
!     {
!       ei_edge (ei)->flags &= ~EDGE_DFS_BACK;
!       if (bitmap_bit_p (exit_bbs, ei_edge (ei)->dest->index))
! 	;
!       else if (!(ei_edge (ei)->dest->flags & visited))
  	{
! 	  ei_stack.quick_push (ei);
! 	  dest = ei_edge (ei)->dest;
! 	  /* DFS recurse on DEST.  */
! 	  goto find_loops;
  
! ret_from_find_loops:
! 	  /* Return point of DFS recursion.  */
! 	  ei = ei_stack.pop ();
! 	  dest = ei_edge (ei)->src;
! 	  int header = bb_data[ei_edge (ei)->dest->index].scc;
! 	  tag_header (dest->index, header, bb_data);
! 	  depth = bb_data[dest->index].depth + 1;
! 	}
!       else
! 	{
! 	  if (bb_data[ei_edge (ei)->dest->index].depth > 0) /* on the stack */
  	    {
! 	      ei_edge (ei)->flags |= EDGE_DFS_BACK;
! 	      n_sccs++;
! 	      ei_edge (ei)->dest->flags |= is_header;
! 	      ::new (&bb_data[ei_edge (ei)->dest->index].scc_exits)
! 		auto_vec<int, 2> ();
! 	      tag_header (dest->index, ei_edge (ei)->dest->index, bb_data);
  	    }
+ 	  else if (bb_data[ei_edge (ei)->dest->index].scc == -1)
+ 	    ;
  	  else
  	    {
! 	      int header = bb_data[ei_edge (ei)->dest->index].scc;
! 	      if (bb_data[header].depth > 0)
! 		tag_header (dest->index, header, bb_data);
! 	      else
! 		{
! 		  /* A re-entry into an existing loop.  */
! 		  /* ???  Need to mark is_header?  */
! 		  while (bb_data[header].scc != -1)
! 		    {
! 		      header = bb_data[header].scc;
! 		      if (bb_data[header].depth > 0)
! 			{
! 			  tag_header (dest->index, header, bb_data);
! 			  break;
! 			}
! 		    }
! 		}
  	    }
  	}
!       ei_next (&ei);
!     }
!   rev_post_order[rev_post_order_num++] = dest->index;
!   /* not on the stack anymore */
!   bb_data[dest->index].depth = -bb_data[dest->index].depth;
!   if (!ei_stack.is_empty ())
!     /* Return from DFS recursion.  */
!     goto ret_from_find_loops;
  
!   /* Optimize for no SCCs found or !for_iteration.  */
!   if (n_sccs == 0 || !for_iteration)
!     {
!       /* Clear the temporarily allocated flags.  */
!       for (int i = 0; i < rev_post_order_num; ++i)
! 	BASIC_BLOCK_FOR_FN (fn, rev_post_order[i])->flags
! 	  &= ~(is_header|visited);
!       /* And swap elements.  */
!       for (int i = 0; i < rev_post_order_num/2; ++i)
! 	std::swap (rev_post_order[i], rev_post_order[rev_post_order_num-i-1]);
!       XDELETEVEC (bb_data);
! 
!       return rev_post_order_num;
!     }
! 
!   /* Next find SCC exits, clear the visited flag and compute an upper bound
!      for the edge stack below.  */
!   unsigned edge_count = 0;
!   for (int i = 0; i < rev_post_order_num; ++i)
!     {
!       int bb = rev_post_order[i];
!       BASIC_BLOCK_FOR_FN (fn, bb)->flags &= ~visited;
!       edge e;
!       FOR_EACH_EDGE (e, ei, BASIC_BLOCK_FOR_FN (fn, bb)->succs)
! 	{
! 	  if (bitmap_bit_p (exit_bbs, e->dest->index))
! 	    continue;
! 	  edge_count++;
! 	  /* if e is an exit from e->src, record it for
! 	     bb_data[e->src].scc.  */
! 	  int src_scc = e->src->index;
! 	  if (!(e->src->flags & is_header))
! 	    src_scc = bb_data[src_scc].scc;
! 	  if (src_scc == -1)
! 	    continue;
! 	  int dest_scc = e->dest->index;
! 	  if (!(e->dest->flags & is_header))
! 	    dest_scc = bb_data[dest_scc].scc;
! 	  if (src_scc == dest_scc)
! 	    continue;
! 	  /* When dest_scc is nested insde src_scc it's not an
! 	     exit.  */
! 	  int tem_dest_scc = dest_scc;
! 	  unsigned dest_scc_depth = 0;
! 	  while (tem_dest_scc != -1)
  	    {
! 	      dest_scc_depth++;
! 	      if ((tem_dest_scc = bb_data[tem_dest_scc].scc) == src_scc)
! 		break;
! 	    }
! 	  if (tem_dest_scc != -1)
! 	    continue;
! 	  /* When src_scc is nested inside dest_scc record an
! 	     exit from the outermost SCC this edge exits.  */
! 	  int tem_src_scc = src_scc;
! 	  unsigned src_scc_depth = 0;
! 	  while (tem_src_scc != -1)
! 	    {
! 	      if (bb_data[tem_src_scc].scc == dest_scc)
! 		{
! 		  edge_count++;
! 		  bb_data[tem_src_scc].scc_exits.safe_push (e->dest->index);
! 		  break;
! 		}
! 	      tem_src_scc = bb_data[tem_src_scc].scc;
! 	      src_scc_depth++;
! 	    }
! 	  /* Else find the outermost SCC this edge exits (exits
! 	     from the inner SCCs are not important for the DFS
! 	     walk adjustment).  Do so by computing the common
! 	     ancestor SCC where the immediate child it to the source
! 	     SCC is the exited SCC.  */
! 	  if (tem_src_scc == -1)
! 	    {
! 	      edge_count++;
! 	      while (src_scc_depth > dest_scc_depth)
! 		{
! 		  src_scc = bb_data[src_scc].scc;
! 		  src_scc_depth--;
! 		}
! 	      while (dest_scc_depth > src_scc_depth)
! 		{
! 		  dest_scc = bb_data[dest_scc].scc;
! 		  dest_scc_depth--;
! 		}
! 	      while (bb_data[src_scc].scc != bb_data[dest_scc].scc)
! 		{
! 		  src_scc = bb_data[src_scc].scc;
! 		  dest_scc = bb_data[dest_scc].scc;
! 		}
! 	      bb_data[src_scc].scc_exits.safe_push (e->dest->index);
  	    }
+ 	}
+     }
  
!   /* Now the second DFS walk to compute a RPO where the extent of SCCs
!      is minimized thus SCC members are adjacent in the RPO array.
!      This is done by performing a DFS walk computing RPO with first visiting
!      extra direct edges from SCC entry to its exits.
!      That simulates a DFS walk over the graph with SCCs collapsed and
!      walking the SCCs themselves only when all outgoing edges from the
!      SCCs have been visited.
!      SCC_END[scc-header-index] is the position in the RPO array of the
!      last member of the SCC.  */
!   auto_vec<std::pair<basic_block, basic_block>, 20> estack (edge_count + 1);
!   int idx = rev_post_order_num;
!   basic_block edest;
!   dest = entry->dest;
! 
!   /* DFS process DEST.  */
! dfs_rpo:
!   gcc_checking_assert ((dest->flags & visited) == 0);
!   /* Verify we enter SCCs through the same header and SCC nesting appears
!      the same.  */
!   gcc_assert (bb_data[dest->index].scc == -1
! 	      || (BASIC_BLOCK_FOR_FN (fn, bb_data[dest->index].scc)->flags
! 		  & visited));
!   dest->flags |= visited;
!   bb_data[dest->index].scc_end = -1;
!   if ((dest->flags & is_header)
!       && !bb_data[dest->index].scc_exits.is_empty ())
!     {
!       /* Push the all SCC exits as outgoing edges from its header to
! 	 be visited first.
! 	 To process exits in the same relative order as in the first
! 	 DFS walk sort them after their destination PRE order index.  */
!       gcc_sort_r (&bb_data[dest->index].scc_exits[0],
! 		  bb_data[dest->index].scc_exits.length (),
! 		  sizeof (int), cmp_edge_dest_pre, bb_data);
!       /* Process edges in reverse to match previous DFS walk order.  */
!       for (int i = bb_data[dest->index].scc_exits.length () - 1; i >= 0; --i)
! 	estack.quick_push (std::make_pair
! 	  (dest, BASIC_BLOCK_FOR_FN (fn, bb_data[dest->index].scc_exits[i])));
!     }
!   else
!     {
!       if (dest->flags & is_header)
! 	bb_data[dest->index].scc_end = idx - 1;
!       /* Push the edge vector in reverse to match the iteration order
! 	 from the DFS walk above.  */
!       for (int i = EDGE_COUNT (dest->succs) - 1; i >= 0; --i)
! 	if (!bitmap_bit_p (exit_bbs, EDGE_SUCC (dest, i)->dest->index))
! 	  estack.quick_push (std::make_pair (dest,
! 					     EDGE_SUCC (dest, i)->dest));
!     }
!   while (!estack.is_empty ()
! 	 && estack.last ().first == dest)
!     {
!       edest = estack.last ().second;
!       if (!(edest->flags & visited))
! 	{
! 	  dest = edest;
! 	  /* DFS recurse on DEST.  */
! 	  goto dfs_rpo;
! 
! ret_from_dfs_rpo:
! 	  /* Return point of DFS recursion.  */
! 	  dest = estack.last ().first;
! 	}
!       estack.pop ();
!       /* If we processed all SCC exits from DEST mark the SCC end
! 	 since all RPO entries up to DEST itself will now belong
! 	 to its SCC.  The special-case of no SCC exits is already
! 	 dealt with above.  */
!       if (dest->flags & is_header
! 	  /* When the last exit edge was processed mark the SCC end
! 	     and push the regular edges.  */
! 	  && bb_data[dest->index].scc_end == -1
! 	  && (estack.is_empty ()
! 	      || estack.last ().first != dest))
! 	{
! 	  bb_data[dest->index].scc_end = idx - 1;
! 	  /* Push the edge vector in reverse to match the iteration order
! 	     from the DFS walk above.  */
! 	  for (int i = EDGE_COUNT (dest->succs) - 1; i >= 0; --i)
! 	    if (!bitmap_bit_p (exit_bbs, EDGE_SUCC (dest, i)->dest->index))
! 	      estack.quick_push (std::make_pair (dest,
! 						 EDGE_SUCC (dest, i)->dest));
  	}
      }
+   rev_post_order[--idx] = dest->index;
+   if (!estack.is_empty ())
+     /* Return from DFS recursion.  */
+     goto ret_from_dfs_rpo;
  
!   /* Each SCC extends are from the position of the header inside
!      the RPO array up to RPO array index scc_end[header-index].  */
!   if (toplevel_scc_extents)
!     for (int i = 0; i < rev_post_order_num; i++)
!       {
! 	basic_block bb = BASIC_BLOCK_FOR_FN (fn, rev_post_order[i]);
! 	if (bb->flags & is_header)
! 	  {
! 	    toplevel_scc_extents->safe_push
! 	      (std::make_pair (i, bb_data[bb->index].scc_end));
! 	    i = bb_data[bb->index].scc_end;
! 	  }
!       }
  
!   /* Clear the temporarily allocated flags and free memory.  */
    for (int i = 0; i < rev_post_order_num; ++i)
!     {
!       basic_block bb = BASIC_BLOCK_FOR_FN (fn, rev_post_order[i]);
!       if (bb->flags & is_header)
! 	bb_data[bb->index].scc_exits.~scc_exit_vec_t ();
!       bb->flags &= ~(visited|is_header);
!     }
! 
!   XDELETEVEC (bb_data);
  
    return rev_post_order_num;
  }
diff -Nrcpad gcc-10.3.0/gcc/cfganal.h gcc-11.1.0/gcc/cfganal.h
*** gcc-10.3.0/gcc/cfganal.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfganal.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Control flow graph analysis header file.
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow graph analysis header file.
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern int pre_and_rev_post_order_comput
*** 68,74 ****
  					      int *, int *, bool);
  extern int pre_and_rev_post_order_compute (int *, int *, bool);
  extern int rev_post_order_and_mark_dfs_back_seme (struct function *, edge,
! 						  bitmap, bool, int *);
  extern int dfs_enumerate_from (basic_block, int,
  			       bool (*)(const_basic_block, const void *),
  			       basic_block *, int, const void *);
--- 68,75 ----
  					      int *, int *, bool);
  extern int pre_and_rev_post_order_compute (int *, int *, bool);
  extern int rev_post_order_and_mark_dfs_back_seme (struct function *, edge,
! 						  bitmap, bool, int *,
! 						  vec<std::pair<int, int> > *);
  extern int dfs_enumerate_from (basic_block, int,
  			       bool (*)(const_basic_block, const void *),
  			       basic_block *, int, const void *);
diff -Nrcpad gcc-10.3.0/gcc/cfgbuild.c gcc-11.1.0/gcc/cfgbuild.c
*** gcc-10.3.0/gcc/cfgbuild.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfgbuild.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Control flow graph building code for GNU compiler.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow graph building code for GNU compiler.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** find_many_sub_basic_blocks (sbitmap bloc
*** 658,664 ****
    basic_block bb, min, max;
    bool found = false;
    auto_vec<unsigned int> n_succs;
!   n_succs.safe_grow_cleared (last_basic_block_for_fn (cfun));
  
    FOR_EACH_BB_FN (bb, cfun)
      SET_STATE (bb,
--- 658,664 ----
    basic_block bb, min, max;
    bool found = false;
    auto_vec<unsigned int> n_succs;
!   n_succs.safe_grow_cleared (last_basic_block_for_fn (cfun), true);
  
    FOR_EACH_BB_FN (bb, cfun)
      SET_STATE (bb,
diff -Nrcpad gcc-10.3.0/gcc/cfgbuild.h gcc-11.1.0/gcc/cfgbuild.h
*** gcc-10.3.0/gcc/cfgbuild.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfgbuild.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Control flow graph building header file.
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow graph building header file.
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/cfgcleanup.c gcc-11.1.0/gcc/cfgcleanup.c
*** gcc-10.3.0/gcc/cfgcleanup.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfgcleanup.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Control flow optimization code for GNU compiler.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow optimization code for GNU compiler.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/cfgcleanup.h gcc-11.1.0/gcc/cfgcleanup.h
*** gcc-10.3.0/gcc/cfgcleanup.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfgcleanup.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Control flow optimization header file.
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow optimization header file.
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/cfgexpand.c gcc-11.1.0/gcc/cfgexpand.c
*** gcc-10.3.0/gcc/cfgexpand.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfgexpand.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* A pass for lowering trees to RTL.
!    Copyright (C) 2004-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* A pass for lowering trees to RTL.
!    Copyright (C) 2004-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 73,78 ****
--- 73,79 ----
  #include "tree-ssa-address.h"
  #include "output.h"
  #include "builtins.h"
+ #include "opts.h"
  
  /* Some systems use __main in a way incompatible with its use in gcc, in these
     cases use the macros NAME__MAIN to give a quoted symbol and SYMBOL__MAIN to
*************** tree
*** 103,109 ****
  gimple_assign_rhs_to_tree (gimple *stmt)
  {
    tree t;
!   switch (get_gimple_rhs_class (gimple_expr_code (stmt)))
      {
      case GIMPLE_TERNARY_RHS:
        t = build3 (gimple_assign_rhs_code (stmt),
--- 104,110 ----
  gimple_assign_rhs_to_tree (gimple *stmt)
  {
    tree t;
!   switch (gimple_assign_rhs_class (stmt))
      {
      case GIMPLE_TERNARY_RHS:
        t = build3 (gimple_assign_rhs_code (stmt),
*************** align_local_variable (tree decl, bool re
*** 366,382 ****
    unsigned int align;
  
    if (TREE_CODE (decl) == SSA_NAME)
-     align = TYPE_ALIGN (TREE_TYPE (decl));
-   else
      {
!       align = LOCAL_DECL_ALIGNMENT (decl);
!       /* Don't change DECL_ALIGN when called from estimated_stack_frame_size.
! 	 That is done before IPA and could bump alignment based on host
! 	 backend even for offloaded code which wants different
! 	 LOCAL_DECL_ALIGNMENT.  */
!       if (really_expand)
! 	SET_DECL_ALIGN (decl, align);
      }
    return align / BITS_PER_UNIT;
  }
  
--- 367,394 ----
    unsigned int align;
  
    if (TREE_CODE (decl) == SSA_NAME)
      {
!       tree type = TREE_TYPE (decl);
!       machine_mode mode = TYPE_MODE (type);
! 
!       align = TYPE_ALIGN (type);
!       if (mode != BLKmode
! 	  && align < GET_MODE_ALIGNMENT (mode))
! 	align = GET_MODE_ALIGNMENT (mode);
      }
+   else
+     align = LOCAL_DECL_ALIGNMENT (decl);
+ 
+   if (hwasan_sanitize_stack_p ())
+     align = MAX (align, (unsigned) HWASAN_TAG_GRANULE_SIZE * BITS_PER_UNIT);
+ 
+   if (TREE_CODE (decl) != SSA_NAME && really_expand)
+     /* Don't change DECL_ALIGN when called from estimated_stack_frame_size.
+        That is done before IPA and could bump alignment based on host
+        backend even for offloaded code which wants different
+        LOCAL_DECL_ALIGNMENT.  */
+     SET_DECL_ALIGN (decl, align);
+ 
    return align / BITS_PER_UNIT;
  }
  
*************** alloc_stack_frame_space (poly_int64 size
*** 420,425 ****
--- 432,445 ----
    return offset;
  }
  
+ /* Ensure that the stack is aligned to ALIGN bytes.
+    Return the new frame offset.  */
+ static poly_int64
+ align_frame_offset (unsigned HOST_WIDE_INT align)
+ {
+   return alloc_stack_frame_space (0, align);
+ }
+ 
  /* Accumulate DECL into STACK_VARS.  */
  
  static void
*************** expand_one_stack_var_at (tree decl, rtx
*** 996,1018 ****
    /* If this fails, we've overflowed the stack frame.  Error nicely?  */
    gcc_assert (known_eq (offset, trunc_int_for_mode (offset, Pmode)));
  
!   x = plus_constant (Pmode, base, offset);
    x = gen_rtx_MEM (TREE_CODE (decl) == SSA_NAME
  		   ? TYPE_MODE (TREE_TYPE (decl))
! 		   : DECL_MODE (SSAVAR (decl)), x);
  
    if (TREE_CODE (decl) != SSA_NAME)
      {
-       /* Set alignment we actually gave this decl if it isn't an SSA name.
-          If it is we generate stack slots only accidentally so it isn't as
- 	 important, we'll simply use the alignment that is already set.  */
-       if (base == virtual_stack_vars_rtx)
- 	offset -= frame_phase;
-       align = known_alignment (offset);
-       align *= BITS_PER_UNIT;
-       if (align == 0 || align > base_align)
- 	align = base_align;
- 
        /* One would think that we could assert that we're not decreasing
  	 alignment here, but (at least) the i386 port does exactly this
  	 via the MINIMUM_ALIGNMENT hook.  */
--- 1016,1044 ----
    /* If this fails, we've overflowed the stack frame.  Error nicely?  */
    gcc_assert (known_eq (offset, trunc_int_for_mode (offset, Pmode)));
  
!   if (hwasan_sanitize_stack_p ())
!     x = targetm.memtag.add_tag (base, offset,
! 				hwasan_current_frame_tag ());
!   else
!     x = plus_constant (Pmode, base, offset);
! 
    x = gen_rtx_MEM (TREE_CODE (decl) == SSA_NAME
  		   ? TYPE_MODE (TREE_TYPE (decl))
! 		   : DECL_MODE (decl), x);
! 
!   /* Set alignment we actually gave this decl if it isn't an SSA name.
!      If it is we generate stack slots only accidentally so it isn't as
!      important, we'll simply set the alignment directly on the MEM.  */
! 
!   if (stack_vars_base_reg_p (base))
!     offset -= frame_phase;
!   align = known_alignment (offset);
!   align *= BITS_PER_UNIT;
!   if (align == 0 || align > base_align)
!     align = base_align;
  
    if (TREE_CODE (decl) != SSA_NAME)
      {
        /* One would think that we could assert that we're not decreasing
  	 alignment here, but (at least) the i386 port does exactly this
  	 via the MINIMUM_ALIGNMENT hook.  */
*************** expand_one_stack_var_at (tree decl, rtx
*** 1022,1027 ****
--- 1048,1055 ----
      }
  
    set_rtl (decl, x);
+ 
+   set_mem_align (x, align);
  }
  
  class stack_vars_data
*************** public:
*** 1045,1057 ****
  /* A subroutine of expand_used_vars.  Give each partition representative
     a unique location within the stack frame.  Update each partition member
     with that location.  */
- 
  static void
  expand_stack_vars (bool (*pred) (size_t), class stack_vars_data *data)
  {
    size_t si, i, j, n = stack_vars_num;
    poly_uint64 large_size = 0, large_alloc = 0;
    rtx large_base = NULL;
    unsigned large_align = 0;
    bool large_allocation_done = false;
    tree decl;
--- 1073,1085 ----
  /* A subroutine of expand_used_vars.  Give each partition representative
     a unique location within the stack frame.  Update each partition member
     with that location.  */
  static void
  expand_stack_vars (bool (*pred) (size_t), class stack_vars_data *data)
  {
    size_t si, i, j, n = stack_vars_num;
    poly_uint64 large_size = 0, large_alloc = 0;
    rtx large_base = NULL;
+   rtx large_untagged_base = NULL;
    unsigned large_align = 0;
    bool large_allocation_done = false;
    tree decl;
*************** expand_stack_vars (bool (*pred) (size_t)
*** 1102,1108 ****
      {
        rtx base;
        unsigned base_align, alignb;
!       poly_int64 offset;
  
        i = stack_vars_sorted[si];
  
--- 1130,1136 ----
      {
        rtx base;
        unsigned base_align, alignb;
!       poly_int64 offset = 0;
  
        i = stack_vars_sorted[si];
  
*************** expand_stack_vars (bool (*pred) (size_t)
*** 1123,1132 ****
        if (pred && !pred (i))
  	continue;
  
        alignb = stack_vars[i].alignb;
        if (alignb * BITS_PER_UNIT <= MAX_SUPPORTED_STACK_ALIGNMENT)
  	{
! 	  base = virtual_stack_vars_rtx;
  	  /* ASAN description strings don't yet have a syntax for expressing
  	     polynomial offsets.  */
  	  HOST_WIDE_INT prev_offset;
--- 1151,1183 ----
        if (pred && !pred (i))
  	continue;
  
+       base = (hwasan_sanitize_stack_p ()
+ 	      ? hwasan_frame_base ()
+ 	      : virtual_stack_vars_rtx);
        alignb = stack_vars[i].alignb;
        if (alignb * BITS_PER_UNIT <= MAX_SUPPORTED_STACK_ALIGNMENT)
  	{
! 	  poly_int64 hwasan_orig_offset;
! 	  if (hwasan_sanitize_stack_p ())
! 	    {
! 	      /* There must be no tag granule "shared" between different
! 		 objects.  This means that no HWASAN_TAG_GRANULE_SIZE byte
! 		 chunk can have more than one object in it.
! 
! 		 We ensure this by forcing the end of the last bit of data to
! 		 be aligned to HWASAN_TAG_GRANULE_SIZE bytes here, and setting
! 		 the start of each variable to be aligned to
! 		 HWASAN_TAG_GRANULE_SIZE bytes in `align_local_variable`.
! 
! 		 We can't align just one of the start or end, since there are
! 		 untagged things stored on the stack which we do not align to
! 		 HWASAN_TAG_GRANULE_SIZE bytes.  If we only aligned the start
! 		 or the end of tagged objects then untagged objects could end
! 		 up sharing the first granule of a tagged object or sharing the
! 		 last granule of a tagged object respectively.  */
! 	      hwasan_orig_offset = align_frame_offset (HWASAN_TAG_GRANULE_SIZE);
! 	      gcc_assert (stack_vars[i].alignb >= HWASAN_TAG_GRANULE_SIZE);
! 	    }
  	  /* ASAN description strings don't yet have a syntax for expressing
  	     polynomial offsets.  */
  	  HOST_WIDE_INT prev_offset;
*************** expand_stack_vars (bool (*pred) (size_t)
*** 1137,1143 ****
  	    {
  	      if (data->asan_vec.is_empty ())
  		{
! 		  alloc_stack_frame_space (0, ASAN_RED_ZONE_SIZE);
  		  prev_offset = frame_offset.to_constant ();
  		}
  	      prev_offset = align_base (prev_offset,
--- 1188,1194 ----
  	    {
  	      if (data->asan_vec.is_empty ())
  		{
! 		  align_frame_offset (ASAN_RED_ZONE_SIZE);
  		  prev_offset = frame_offset.to_constant ();
  		}
  	      prev_offset = align_base (prev_offset,
*************** expand_stack_vars (bool (*pred) (size_t)
*** 1205,1210 ****
--- 1256,1279 ----
  	    {
  	      offset = alloc_stack_frame_space (stack_vars[i].size, alignb);
  	      base_align = crtl->max_used_stack_slot_alignment;
+ 
+ 	      if (hwasan_sanitize_stack_p ())
+ 		{
+ 		  /* Align again since the point of this alignment is to handle
+ 		     the "end" of the object (i.e. smallest address after the
+ 		     stack object).  For FRAME_GROWS_DOWNWARD that requires
+ 		     aligning the stack before allocating, but for a frame that
+ 		     grows upwards that requires aligning the stack after
+ 		     allocation.
+ 
+ 		     Use `frame_offset` to record the offset value rather than
+ 		     `offset` since the `frame_offset` describes the extent
+ 		     allocated for this particular variable while `offset`
+ 		     describes the address that this variable starts at.  */
+ 		  align_frame_offset (HWASAN_TAG_GRANULE_SIZE);
+ 		  hwasan_record_stack_var (virtual_stack_vars_rtx, base,
+ 					   hwasan_orig_offset, frame_offset);
+ 		}
  	    }
  	}
        else
*************** expand_stack_vars (bool (*pred) (size_t)
*** 1225,1238 ****
  	      loffset = alloc_stack_frame_space
  		(rtx_to_poly_int64 (large_allocsize),
  		 PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT);
! 	      large_base = get_dynamic_stack_base (loffset, large_align);
  	      large_allocation_done = true;
  	    }
- 	  gcc_assert (large_base != NULL);
  
  	  large_alloc = aligned_upper_bound (large_alloc, alignb);
  	  offset = large_alloc;
  	  large_alloc += stack_vars[i].size;
  
  	  base = large_base;
  	  base_align = large_align;
--- 1294,1326 ----
  	      loffset = alloc_stack_frame_space
  		(rtx_to_poly_int64 (large_allocsize),
  		 PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT);
! 	      large_base = get_dynamic_stack_base (loffset, large_align, base);
  	      large_allocation_done = true;
  	    }
  
+ 	  gcc_assert (large_base != NULL);
  	  large_alloc = aligned_upper_bound (large_alloc, alignb);
  	  offset = large_alloc;
  	  large_alloc += stack_vars[i].size;
+ 	  if (hwasan_sanitize_stack_p ())
+ 	    {
+ 	      /* An object with a large alignment requirement means that the
+ 		 alignment requirement is greater than the required alignment
+ 		 for tags.  */
+ 	      if (!large_untagged_base)
+ 		large_untagged_base
+ 		  = targetm.memtag.untagged_pointer (large_base, NULL_RTX);
+ 	      /* Ensure the end of the variable is also aligned correctly.  */
+ 	      poly_int64 align_again
+ 		= aligned_upper_bound (large_alloc, HWASAN_TAG_GRANULE_SIZE);
+ 	      /* For large allocations we always allocate a chunk of space
+ 		 (which is addressed by large_untagged_base/large_base) and
+ 		 then use positive offsets from that.  Hence the farthest
+ 		 offset is `align_again` and the nearest offset from the base
+ 		 is `offset`.  */
+ 	      hwasan_record_stack_var (large_untagged_base, large_base,
+ 				       offset, align_again);
+ 	    }
  
  	  base = large_base;
  	  base_align = large_align;
*************** expand_stack_vars (bool (*pred) (size_t)
*** 1243,1251 ****
        for (j = i; j != EOC; j = stack_vars[j].next)
  	{
  	  expand_one_stack_var_at (stack_vars[j].decl,
! 				   base, base_align,
! 				   offset);
  	}
      }
  
    gcc_assert (known_eq (large_alloc, large_size));
--- 1331,1340 ----
        for (j = i; j != EOC; j = stack_vars[j].next)
  	{
  	  expand_one_stack_var_at (stack_vars[j].decl,
! 				   base, base_align, offset);
  	}
+       if (hwasan_sanitize_stack_p ())
+ 	hwasan_increment_frame_tag ();
      }
  
    gcc_assert (known_eq (large_alloc, large_size));
*************** expand_one_stack_var_1 (tree var)
*** 1327,1347 ****
      {
        tree type = TREE_TYPE (var);
        size = tree_to_poly_uint64 (TYPE_SIZE_UNIT (type));
-       byte_align = TYPE_ALIGN_UNIT (type);
      }
    else
!     {
!       size = tree_to_poly_uint64 (DECL_SIZE_UNIT (var));
!       byte_align = align_local_variable (var, true);
!     }
  
    /* We handle highly aligned variables in expand_stack_vars.  */
    gcc_assert (byte_align * BITS_PER_UNIT <= MAX_SUPPORTED_STACK_ALIGNMENT);
  
!   offset = alloc_stack_frame_space (size, byte_align);
  
!   expand_one_stack_var_at (var, virtual_stack_vars_rtx,
  			   crtl->max_used_stack_slot_alignment, offset);
  }
  
  /* Wrapper for expand_one_stack_var_1 that checks SSA_NAMEs are
--- 1416,1461 ----
      {
        tree type = TREE_TYPE (var);
        size = tree_to_poly_uint64 (TYPE_SIZE_UNIT (type));
      }
    else
!     size = tree_to_poly_uint64 (DECL_SIZE_UNIT (var));
! 
!   byte_align = align_local_variable (var, true);
  
    /* We handle highly aligned variables in expand_stack_vars.  */
    gcc_assert (byte_align * BITS_PER_UNIT <= MAX_SUPPORTED_STACK_ALIGNMENT);
  
!   rtx base;
!   if (hwasan_sanitize_stack_p ())
!     {
!       /* Allocate zero bytes to align the stack.  */
!       poly_int64 hwasan_orig_offset
! 	= align_frame_offset (HWASAN_TAG_GRANULE_SIZE);
!       offset = alloc_stack_frame_space (size, byte_align);
!       align_frame_offset (HWASAN_TAG_GRANULE_SIZE);
!       base = hwasan_frame_base ();
!       /* Use `frame_offset` to automatically account for machines where the
! 	 frame grows upwards.
  
! 	 `offset` will always point to the "start" of the stack object, which
! 	 will be the smallest address, for ! FRAME_GROWS_DOWNWARD this is *not*
! 	 the "furthest" offset from the base delimiting the current stack
! 	 object.  `frame_offset` will always delimit the extent that the frame.
! 	 */
!       hwasan_record_stack_var (virtual_stack_vars_rtx, base,
! 			       hwasan_orig_offset, frame_offset);
!     }
!   else
!     {
!       offset = alloc_stack_frame_space (size, byte_align);
!       base = virtual_stack_vars_rtx;
!     }
! 
!   expand_one_stack_var_at (var, base,
  			   crtl->max_used_stack_slot_alignment, offset);
+ 
+   if (hwasan_sanitize_stack_p ())
+     hwasan_increment_frame_tag ();
  }
  
  /* Wrapper for expand_one_stack_var_1 that checks SSA_NAMEs are
*************** clear_tree_used (tree block)
*** 1762,1774 ****
      clear_tree_used (t);
  }
  
- enum {
-   SPCT_FLAG_DEFAULT = 1,
-   SPCT_FLAG_ALL = 2,
-   SPCT_FLAG_STRONG = 3,
-   SPCT_FLAG_EXPLICIT = 4
- };
- 
  /* Examine TYPE and determine a bit mask of the following features.  */
  
  #define SPCT_HAS_LARGE_CHAR_ARRAY	1
--- 1876,1881 ----
*************** stack_protect_decl_phase (tree decl)
*** 1838,1848 ****
    if (bits & SPCT_HAS_SMALL_CHAR_ARRAY)
      has_short_buffer = true;
  
!   if (flag_stack_protect == SPCT_FLAG_ALL
!       || flag_stack_protect == SPCT_FLAG_STRONG
!       || (flag_stack_protect == SPCT_FLAG_EXPLICIT
! 	  && lookup_attribute ("stack_protect",
! 			       DECL_ATTRIBUTES (current_function_decl))))
      {
        if ((bits & (SPCT_HAS_SMALL_CHAR_ARRAY | SPCT_HAS_LARGE_CHAR_ARRAY))
  	  && !(bits & SPCT_HAS_AGGREGATE))
--- 1945,1956 ----
    if (bits & SPCT_HAS_SMALL_CHAR_ARRAY)
      has_short_buffer = true;
  
!   tree attribs = DECL_ATTRIBUTES (current_function_decl);
!   if (!lookup_attribute ("no_stack_protector", attribs)
!       && (flag_stack_protect == SPCT_FLAG_ALL
! 	  || flag_stack_protect == SPCT_FLAG_STRONG
! 	  || (flag_stack_protect == SPCT_FLAG_EXPLICIT
! 	      && lookup_attribute ("stack_protect", attribs))))
      {
        if ((bits & (SPCT_HAS_SMALL_CHAR_ARRAY | SPCT_HAS_LARGE_CHAR_ARRAY))
  	  && !(bits & SPCT_HAS_AGGREGATE))
*************** init_vars_expansion (void)
*** 1947,1952 ****
--- 2055,2062 ----
    /* Initialize local stack smashing state.  */
    has_protected_decls = false;
    has_short_buffer = false;
+   if (hwasan_sanitize_stack_p ())
+     hwasan_record_frame_init ();
  }
  
  /* Free up stack variable graph data.  */
*************** expand_used_vars (void)
*** 2143,2148 ****
--- 2253,2259 ----
       set are actually used by the optimized function.  Lay them out.  */
    expand_used_vars_for_block (outer_block, true);
  
+   tree attribs = DECL_ATTRIBUTES (current_function_decl);
    if (stack_vars_num > 0)
      {
        bool has_addressable_vars = false;
*************** expand_used_vars (void)
*** 2152,2161 ****
        /* If stack protection is enabled, we don't share space between
  	 vulnerable data and non-vulnerable data.  */
        if (flag_stack_protect != 0
  	  && (flag_stack_protect != SPCT_FLAG_EXPLICIT
  	      || (flag_stack_protect == SPCT_FLAG_EXPLICIT
! 		  && lookup_attribute ("stack_protect",
! 				       DECL_ATTRIBUTES (current_function_decl)))))
  	has_addressable_vars = add_stack_protection_conflicts ();
  
        if (flag_stack_protect == SPCT_FLAG_STRONG && has_addressable_vars)
--- 2263,2272 ----
        /* If stack protection is enabled, we don't share space between
  	 vulnerable data and non-vulnerable data.  */
        if (flag_stack_protect != 0
+ 	  && !lookup_attribute ("no_stack_protector", attribs)
  	  && (flag_stack_protect != SPCT_FLAG_EXPLICIT
  	      || (flag_stack_protect == SPCT_FLAG_EXPLICIT
! 		  && lookup_attribute ("stack_protect", attribs))))
  	has_addressable_vars = add_stack_protection_conflicts ();
  
        if (flag_stack_protect == SPCT_FLAG_STRONG && has_addressable_vars)
*************** expand_used_vars (void)
*** 2168,2205 ****
  	dump_stack_var_partition ();
      }
  
-   switch (flag_stack_protect)
-     {
-     case SPCT_FLAG_ALL:
-       create_stack_guard ();
-       break;
  
!     case SPCT_FLAG_STRONG:
!       if (gen_stack_protect_signal
! 	  || cfun->calls_alloca
! 	  || has_protected_decls
! 	  || lookup_attribute ("stack_protect",
! 			       DECL_ATTRIBUTES (current_function_decl)))
  	create_stack_guard ();
!       break;
  
!     case SPCT_FLAG_DEFAULT:
!       if (cfun->calls_alloca
! 	  || has_protected_decls
! 	  || lookup_attribute ("stack_protect",
! 			       DECL_ATTRIBUTES (current_function_decl)))
! 	create_stack_guard ();
!       break;
  
!     case SPCT_FLAG_EXPLICIT:
!       if (lookup_attribute ("stack_protect",
! 			    DECL_ATTRIBUTES (current_function_decl)))
! 	create_stack_guard ();
!       break;
  
!     default:
!       break;
!     }
  
    /* Assign rtl to each variable based on these partitions.  */
    if (stack_vars_num > 0)
--- 2279,2318 ----
  	dump_stack_var_partition ();
      }
  
  
!   if (!lookup_attribute ("no_stack_protector", attribs))
!     switch (flag_stack_protect)
!       {
!       case SPCT_FLAG_ALL:
  	create_stack_guard ();
! 	break;
  
!       case SPCT_FLAG_STRONG:
! 	if (gen_stack_protect_signal
! 	    || cfun->calls_alloca
! 	    || has_protected_decls
! 	    || lookup_attribute ("stack_protect",
! 				 DECL_ATTRIBUTES (current_function_decl)))
! 	  create_stack_guard ();
! 	break;
  
!       case SPCT_FLAG_DEFAULT:
! 	if (cfun->calls_alloca
! 	    || has_protected_decls
! 	    || lookup_attribute ("stack_protect",
! 				 DECL_ATTRIBUTES (current_function_decl)))
! 	  create_stack_guard ();
! 	break;
  
!       case SPCT_FLAG_EXPLICIT:
! 	if (lookup_attribute ("stack_protect",
! 			      DECL_ATTRIBUTES (current_function_decl)))
! 	  create_stack_guard ();
! 	break;
! 
!       default:
! 	break;
!       }
  
    /* Assign rtl to each variable based on these partitions.  */
    if (stack_vars_num > 0)
*************** expand_used_vars (void)
*** 2220,2230 ****
  	  expand_stack_vars (stack_protect_decl_phase_1, &data);
  
  	  /* Phase 2 contains other kinds of arrays.  */
! 	  if (flag_stack_protect == SPCT_FLAG_ALL
! 	      || flag_stack_protect == SPCT_FLAG_STRONG
! 	      || (flag_stack_protect == SPCT_FLAG_EXPLICIT
! 		  && lookup_attribute ("stack_protect",
! 				       DECL_ATTRIBUTES (current_function_decl))))
  	    expand_stack_vars (stack_protect_decl_phase_2, &data);
  	}
  
--- 2333,2343 ----
  	  expand_stack_vars (stack_protect_decl_phase_1, &data);
  
  	  /* Phase 2 contains other kinds of arrays.  */
! 	  if (!lookup_attribute ("no_stack_protector", attribs)
! 	      && (flag_stack_protect == SPCT_FLAG_ALL
! 		  || flag_stack_protect == SPCT_FLAG_STRONG
! 		  || (flag_stack_protect == SPCT_FLAG_EXPLICIT
! 		      && lookup_attribute ("stack_protect", attribs))))
  	    expand_stack_vars (stack_protect_decl_phase_2, &data);
  	}
  
*************** expand_used_vars (void)
*** 2271,2280 ****
--- 2384,2409 ----
        expand_stack_vars (NULL, &data);
      }
  
+   if (hwasan_sanitize_stack_p ())
+     hwasan_emit_prologue ();
    if (asan_sanitize_allocas_p () && cfun->calls_alloca)
      var_end_seq = asan_emit_allocas_unpoison (virtual_stack_dynamic_rtx,
  					      virtual_stack_vars_rtx,
  					      var_end_seq);
+   else if (hwasan_sanitize_allocas_p () && cfun->calls_alloca)
+     /* When using out-of-line instrumentation we only want to emit one function
+        call for clearing the tags in a region of shadow stack.  When there are
+        alloca calls in this frame we want to emit a call using the
+        virtual_stack_dynamic_rtx, but when not we use the hwasan_frame_extent
+        rtx we created in expand_stack_vars.  */
+     var_end_seq = hwasan_emit_untag_frame (virtual_stack_dynamic_rtx,
+ 					   virtual_stack_vars_rtx);
+   else if (hwasan_sanitize_stack_p ())
+     /* If no variables were stored on the stack, `hwasan_get_frame_extent`
+        will return NULL_RTX and hence `hwasan_emit_untag_frame` will return
+        NULL (i.e. an empty sequence).  */
+     var_end_seq = hwasan_emit_untag_frame (hwasan_get_frame_extent (),
+ 					   virtual_stack_vars_rtx);
  
    fini_vars_expansion ();
  
*************** expand_gimple_cond (basic_block bb, gcon
*** 2493,2498 ****
--- 2622,2635 ----
        && TREE_CODE (op1) == INTEGER_CST)
      code = maybe_optimize_mod_cmp (code, &op0, &op1);
  
+   /* Optimize (x - y) < 0 into x < y if x - y has undefined overflow.  */
+   if (!TYPE_UNSIGNED (TREE_TYPE (op0))
+       && (code == LT_EXPR || code == LE_EXPR
+ 	  || code == GT_EXPR || code == GE_EXPR)
+       && integer_zerop (op1)
+       && TREE_CODE (op0) == SSA_NAME)
+     maybe_optimize_sub_cmp_0 (code, &op0, &op1);
+ 
    last2 = last = get_last_insn ();
  
    extract_true_false_edges_from_block (bb, &true_edge, &false_edge);
*************** expand_asm_loc (tree string, int vol, lo
*** 2743,2748 ****
--- 2880,2886 ----
        rtx asm_op, clob;
        unsigned i, nclobbers;
        auto_vec<rtx> input_rvec, output_rvec;
+       auto_vec<machine_mode> input_mode;
        auto_vec<const char *> constraints;
        auto_vec<rtx> clobber_rvec;
        HARD_REG_SET clobbered_regs;
*************** expand_asm_loc (tree string, int vol, lo
*** 2752,2760 ****
        clobber_rvec.safe_push (clob);
  
        if (targetm.md_asm_adjust)
! 	targetm.md_asm_adjust (output_rvec, input_rvec,
! 			       constraints, clobber_rvec,
! 			       clobbered_regs);
  
        asm_op = body;
        nclobbers = clobber_rvec.length ();
--- 2890,2897 ----
        clobber_rvec.safe_push (clob);
  
        if (targetm.md_asm_adjust)
! 	targetm.md_asm_adjust (output_rvec, input_rvec, input_mode,
! 			       constraints, clobber_rvec, clobbered_regs);
  
        asm_op = body;
        nclobbers = clobber_rvec.length ();
*************** expand_asm_stmt (gasm *stmt)
*** 2931,2938 ****
        return;
      }
  
!   /* There are some legacy diagnostics in here, and also avoids a
!      sixth parameger to targetm.md_asm_adjust.  */
    save_input_location s_i_l(locus);
  
    unsigned noutputs = gimple_asm_noutputs (stmt);
--- 3068,3075 ----
        return;
      }
  
!   /* There are some legacy diagnostics in here, and also avoids an extra
!      parameter to targetm.md_asm_adjust.  */
    save_input_location s_i_l(locus);
  
    unsigned noutputs = gimple_asm_noutputs (stmt);
*************** expand_asm_stmt (gasm *stmt)
*** 2953,2961 ****
  
    /* Copy the gimple vectors into new vectors that we can manipulate.  */
  
!   output_tvec.safe_grow (noutputs);
!   input_tvec.safe_grow (ninputs);
!   constraints.safe_grow (noutputs + ninputs);
  
    for (i = 0; i < noutputs; ++i)
      {
--- 3090,3098 ----
  
    /* Copy the gimple vectors into new vectors that we can manipulate.  */
  
!   output_tvec.safe_grow (noutputs, true);
!   input_tvec.safe_grow (ninputs, true);
!   constraints.safe_grow (noutputs + ninputs, true);
  
    for (i = 0; i < noutputs; ++i)
      {
*************** expand_asm_stmt (gasm *stmt)
*** 3128,3134 ****
    auto_vec<int, MAX_RECOG_OPERANDS> inout_opnum;
    rtx_insn *after_rtl_seq = NULL, *after_rtl_end = NULL;
  
!   output_rvec.safe_grow (noutputs);
  
    for (i = 0; i < noutputs; ++i)
      {
--- 3265,3271 ----
    auto_vec<int, MAX_RECOG_OPERANDS> inout_opnum;
    rtx_insn *after_rtl_seq = NULL, *after_rtl_end = NULL;
  
!   output_rvec.safe_grow (noutputs, true);
  
    for (i = 0; i < noutputs; ++i)
      {
*************** expand_asm_stmt (gasm *stmt)
*** 3207,3214 ****
    auto_vec<rtx, MAX_RECOG_OPERANDS> input_rvec;
    auto_vec<machine_mode, MAX_RECOG_OPERANDS> input_mode;
  
!   input_rvec.safe_grow (ninputs);
!   input_mode.safe_grow (ninputs);
  
    generating_concat_p = 0;
  
--- 3344,3351 ----
    auto_vec<rtx, MAX_RECOG_OPERANDS> input_rvec;
    auto_vec<machine_mode, MAX_RECOG_OPERANDS> input_mode;
  
!   input_rvec.safe_grow (ninputs, true);
!   input_mode.safe_grow (ninputs, true);
  
    generating_concat_p = 0;
  
*************** expand_asm_stmt (gasm *stmt)
*** 3283,3291 ****
       the flags register.  */
    rtx_insn *after_md_seq = NULL;
    if (targetm.md_asm_adjust)
!     after_md_seq = targetm.md_asm_adjust (output_rvec, input_rvec,
! 					  constraints, clobber_rvec,
! 					  clobbered_regs);
  
    /* Do not allow the hook to change the output and input count,
       lest it mess up the operand numbering.  */
--- 3420,3428 ----
       the flags register.  */
    rtx_insn *after_md_seq = NULL;
    if (targetm.md_asm_adjust)
!     after_md_seq
! 	= targetm.md_asm_adjust (output_rvec, input_rvec, input_mode,
! 				 constraints, clobber_rvec, clobbered_regs);
  
    /* Do not allow the hook to change the output and input count,
       lest it mess up the operand numbering.  */
*************** expand_asm_stmt (gasm *stmt)
*** 3365,3384 ****
  			       ARGVEC CONSTRAINTS OPNAMES))
       If there is more than one, put them inside a PARALLEL.  */
  
!   if (nlabels > 0 && nclobbers == 0)
!     {
!       gcc_assert (noutputs == 0);
!       emit_jump_insn (body);
!     }
!   else if (noutputs == 0 && nclobbers == 0)
      {
        /* No output operands: put in a raw ASM_OPERANDS rtx.  */
!       emit_insn (body);
      }
    else if (noutputs == 1 && nclobbers == 0)
      {
        ASM_OPERANDS_OUTPUT_CONSTRAINT (body) = constraints[0];
!       emit_insn (gen_rtx_SET (output_rvec[0], body));
      }
    else
      {
--- 3502,3522 ----
  			       ARGVEC CONSTRAINTS OPNAMES))
       If there is more than one, put them inside a PARALLEL.  */
  
!   if (noutputs == 0 && nclobbers == 0)
      {
        /* No output operands: put in a raw ASM_OPERANDS rtx.  */
!       if (nlabels > 0)
! 	emit_jump_insn (body);
!       else
! 	emit_insn (body);
      }
    else if (noutputs == 1 && nclobbers == 0)
      {
        ASM_OPERANDS_OUTPUT_CONSTRAINT (body) = constraints[0];
!       if (nlabels > 0)
! 	emit_jump_insn (gen_rtx_SET (output_rvec[0], body));
!       else 
! 	emit_insn (gen_rtx_SET (output_rvec[0], body));
      }
    else
      {
*************** expand_asm_stmt (gasm *stmt)
*** 3455,3461 ****
    if (after_md_seq)
      emit_insn (after_md_seq);
    if (after_rtl_seq)
!     emit_insn (after_rtl_seq);
  
    free_temp_slots ();
    crtl->has_asm_statement = 1;
--- 3593,3619 ----
    if (after_md_seq)
      emit_insn (after_md_seq);
    if (after_rtl_seq)
!     {
!       if (nlabels == 0)
! 	emit_insn (after_rtl_seq);
!       else
! 	{
! 	  edge e;
! 	  edge_iterator ei;
! 	  
! 	  FOR_EACH_EDGE (e, ei, gimple_bb (stmt)->succs)
! 	    {
! 	      start_sequence ();
! 	      for (rtx_insn *curr = after_rtl_seq;
! 		   curr != NULL_RTX;
! 		   curr = NEXT_INSN (curr))
! 		emit_insn (copy_insn (PATTERN (curr)));
! 	      rtx_insn *copy = get_insns ();
! 	      end_sequence ();
! 	      insert_insn_on_edge (copy, e);
! 	    }
! 	}
!     }
  
    free_temp_slots ();
    crtl->has_asm_statement = 1;
*************** expand_gimple_stmt_1 (gimple *stmt)
*** 3735,3745 ****
  	   of binary assigns must be a gimple reg.  */
  
  	if (TREE_CODE (lhs) != SSA_NAME
! 	    || get_gimple_rhs_class (gimple_expr_code (stmt))
! 	       == GIMPLE_SINGLE_RHS)
  	  {
  	    tree rhs = gimple_assign_rhs1 (assign_stmt);
! 	    gcc_assert (get_gimple_rhs_class (gimple_expr_code (stmt))
  			== GIMPLE_SINGLE_RHS);
  	    if (gimple_has_location (stmt) && CAN_HAVE_LOCATION_P (rhs)
  		/* Do not put locations on possibly shared trees.  */
--- 3893,3902 ----
  	   of binary assigns must be a gimple reg.  */
  
  	if (TREE_CODE (lhs) != SSA_NAME
! 	    || gimple_assign_rhs_class (assign_stmt) == GIMPLE_SINGLE_RHS)
  	  {
  	    tree rhs = gimple_assign_rhs1 (assign_stmt);
! 	    gcc_assert (gimple_assign_rhs_class (assign_stmt)
  			== GIMPLE_SINGLE_RHS);
  	    if (gimple_has_location (stmt) && CAN_HAVE_LOCATION_P (rhs)
  		/* Do not put locations on possibly shared trees.  */
*************** expand_gimple_basic_block (basic_block b
*** 5808,5821 ****
  	      else if (gimple_debug_begin_stmt_p (stmt))
  		val = GEN_RTX_DEBUG_MARKER_BEGIN_STMT_PAT ();
  	      else if (gimple_debug_inline_entry_p (stmt))
! 		{
! 		  tree block = gimple_block (stmt);
! 
! 		  if (block)
! 		    val = GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT ();
! 		  else
! 		    goto delink_debug_stmt;
! 		}
  	      else
  		gcc_unreachable ();
  
--- 5965,5971 ----
  	      else if (gimple_debug_begin_stmt_p (stmt))
  		val = GEN_RTX_DEBUG_MARKER_BEGIN_STMT_PAT ();
  	      else if (gimple_debug_inline_entry_p (stmt))
! 		val = GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT ();
  	      else
  		gcc_unreachable ();
  
*************** discover_nonconstant_array_refs_r (tree
*** 6134,6139 ****
--- 6284,6312 ----
    return NULL_TREE;
  }
  
+ /* If there's a chance to get a pseudo for t then if it would be of float mode
+    and the actual access is via an integer mode (lowered memcpy or similar
+    access) then avoid the register expansion if the mode likely is not storage
+    suitable for raw bits processing (like XFmode on i?86).  */
+ 
+ static void
+ avoid_type_punning_on_regs (tree t)
+ {
+   machine_mode access_mode = TYPE_MODE (TREE_TYPE (t));
+   if (access_mode != BLKmode
+       && !SCALAR_INT_MODE_P (access_mode))
+     return;
+   tree base = get_base_address (t);
+   if (DECL_P (base)
+       && !TREE_ADDRESSABLE (base)
+       && FLOAT_MODE_P (DECL_MODE (base))
+       && maybe_lt (GET_MODE_PRECISION (DECL_MODE (base)),
+ 		   GET_MODE_BITSIZE (GET_MODE_INNER (DECL_MODE (base))))
+       /* Double check in the expensive way we really would get a pseudo.  */
+       && use_register_for_decl (base))
+     TREE_ADDRESSABLE (base) = 1;
+ }
+ 
  /* RTL expansion is not able to compile array references with variable
     offsets for arrays stored in single register.  Discover such
     expressions and mark variables as addressable to avoid this
*************** discover_nonconstant_array_refs (void)
*** 6167,6172 ****
--- 6340,6351 ----
  		default:
  		  break;
  		}
+ 	    if (gimple_vdef (stmt))
+ 	      {
+ 		tree t = gimple_get_lhs (stmt);
+ 		if (t && REFERENCE_CLASS_P (t))
+ 		  avoid_type_punning_on_regs (t);
+ 	      }
  	  }
        }
  }
*************** const pass_data pass_data_expand =
*** 6325,6331 ****
      | PROP_gimple_lvec
      | PROP_gimple_lva), /* properties_required */
    PROP_rtl, /* properties_provided */
!   ( PROP_ssa | PROP_trees ), /* properties_destroyed */
    0, /* todo_flags_start */
    0, /* todo_flags_finish */
  };
--- 6504,6510 ----
      | PROP_gimple_lvec
      | PROP_gimple_lva), /* properties_required */
    PROP_rtl, /* properties_provided */
!   ( PROP_ssa | PROP_gimple ), /* properties_destroyed */
    0, /* todo_flags_start */
    0, /* todo_flags_finish */
  };
*************** pass_expand::execute (function *fun)
*** 6380,6386 ****
    rtl_profile_for_bb (ENTRY_BLOCK_PTR_FOR_FN (fun));
  
    insn_locations_init ();
!   if (!DECL_IS_BUILTIN (current_function_decl))
      {
        /* Eventually, all FEs should explicitly set function_start_locus.  */
        if (LOCATION_LOCUS (fun->function_start_locus) == UNKNOWN_LOCATION)
--- 6559,6565 ----
    rtl_profile_for_bb (ENTRY_BLOCK_PTR_FOR_FN (fun));
  
    insn_locations_init ();
!   if (!DECL_IS_UNDECLARED_BUILTIN (current_function_decl))
      {
        /* Eventually, all FEs should explicitly set function_start_locus.  */
        if (LOCATION_LOCUS (fun->function_start_locus) == UNKNOWN_LOCATION)
*************** pass_expand::execute (function *fun)
*** 6589,6594 ****
--- 6768,6776 ----
        emit_insn_after (var_ret_seq, after);
      }
  
+   if (hwasan_sanitize_stack_p ())
+     hwasan_maybe_emit_frame_base_init ();
+ 
    /* Zap the tree EH table.  */
    set_eh_throw_stmt_table (fun, NULL);
  
*************** pass_expand::execute (function *fun)
*** 6664,6669 ****
--- 6846,6885 ----
    if (crtl->tail_call_emit)
      fixup_tail_calls ();
  
+   HOST_WIDE_INT patch_area_size, patch_area_entry;
+   parse_and_check_patch_area (flag_patchable_function_entry, false,
+ 			      &patch_area_size, &patch_area_entry);
+ 
+   tree patchable_function_entry_attr
+     = lookup_attribute ("patchable_function_entry",
+ 			DECL_ATTRIBUTES (cfun->decl));
+   if (patchable_function_entry_attr)
+     {
+       tree pp_val = TREE_VALUE (patchable_function_entry_attr);
+       tree patchable_function_entry_value1 = TREE_VALUE (pp_val);
+ 
+       patch_area_size = tree_to_uhwi (patchable_function_entry_value1);
+       patch_area_entry = 0;
+       if (TREE_CHAIN (pp_val) != NULL_TREE)
+ 	{
+ 	  tree patchable_function_entry_value2
+ 	    = TREE_VALUE (TREE_CHAIN (pp_val));
+ 	  patch_area_entry = tree_to_uhwi (patchable_function_entry_value2);
+ 	}
+     }
+ 
+   if (patch_area_entry > patch_area_size)
+     {
+       if (patch_area_size > 0)
+ 	warning (OPT_Wattributes,
+ 		 "patchable function entry %wu exceeds size %wu",
+ 		 patch_area_entry, patch_area_size);
+       patch_area_entry = 0;
+     }
+ 
+   crtl->patch_area_size = patch_area_size;
+   crtl->patch_area_entry = patch_area_entry;
+ 
    /* BB subdivision may have created basic blocks that are only reachable
       from unlikely bbs but not marked as such in the profile.  */
    if (optimize)
diff -Nrcpad gcc-10.3.0/gcc/cfgexpand.h gcc-11.1.0/gcc/cfgexpand.h
*** gcc-10.3.0/gcc/cfgexpand.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfgexpand.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Header file for lowering trees to RTL.
!    Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Header file for lowering trees to RTL.
!    Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/cfghooks.c gcc-11.1.0/gcc/cfghooks.c
*** gcc-10.3.0/gcc/cfghooks.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfghooks.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Hooks for cfg representation specific functions.
!    Copyright (C) 2003-2020 Free Software Foundation, Inc.
     Contributed by Sebastian Pop <s.pop@laposte.net>
  
  This file is part of GCC.
--- 1,5 ----
  /* Hooks for cfg representation specific functions.
!    Copyright (C) 2003-2021 Free Software Foundation, Inc.
     Contributed by Sebastian Pop <s.pop@laposte.net>
  
  This file is part of GCC.
*************** split_edge (edge e)
*** 640,645 ****
--- 640,646 ----
    profile_count count = e->count ();
    edge f;
    bool irr = (e->flags & EDGE_IRREDUCIBLE_LOOP) != 0;
+   bool back = (e->flags & EDGE_DFS_BACK) != 0;
    class loop *loop;
    basic_block src = e->src, dest = e->dest;
  
*************** split_edge (edge e)
*** 659,664 ****
--- 660,670 ----
        single_pred_edge (ret)->flags |= EDGE_IRREDUCIBLE_LOOP;
        single_succ_edge (ret)->flags |= EDGE_IRREDUCIBLE_LOOP;
      }
+   if (back)
+     {
+       single_pred_edge (ret)->flags &= ~EDGE_DFS_BACK;
+       single_succ_edge (ret)->flags |= EDGE_DFS_BACK;
+     }
  
    if (dom_info_available_p (CDI_DOMINATORS))
      set_immediate_dominator (CDI_DOMINATORS, ret, single_pred (ret));
*************** copy_bbs (basic_block *bbs, unsigned n,
*** 1385,1392 ****
      }
  
    /* Redirect edges.  */
-   for (j = 0; j < num_edges; j++)
-     new_edges[j] = NULL;
    for (i = 0; i < n; i++)
      {
        edge_iterator ei;
--- 1391,1396 ----
*************** copy_bbs (basic_block *bbs, unsigned n,
*** 1395,1409 ****
  
        FOR_EACH_EDGE (e, ei, new_bb->succs)
  	{
- 	  for (j = 0; j < num_edges; j++)
- 	    if (edges[j] && edges[j]->src == bb && edges[j]->dest == e->dest)
- 	      new_edges[j] = e;
- 
  	  if (!(e->dest->flags & BB_DUPLICATED))
  	    continue;
  	  redirect_edge_and_branch_force (e, get_bb_copy (e->dest));
  	}
      }
  
    /* Clear information about duplicates.  */
    for (i = 0; i < n; i++)
--- 1399,1424 ----
  
        FOR_EACH_EDGE (e, ei, new_bb->succs)
  	{
  	  if (!(e->dest->flags & BB_DUPLICATED))
  	    continue;
  	  redirect_edge_and_branch_force (e, get_bb_copy (e->dest));
  	}
      }
+   for (j = 0; j < num_edges; j++)
+     {
+       if (!edges[j])
+ 	new_edges[j] = NULL;
+       else
+ 	{
+ 	  basic_block src = edges[j]->src;
+ 	  basic_block dest = edges[j]->dest;
+ 	  if (src->flags & BB_DUPLICATED)
+ 	    src = get_bb_copy (src);
+ 	  if (dest->flags & BB_DUPLICATED)
+ 	    dest = get_bb_copy (dest);
+ 	  new_edges[j] = find_edge (src, dest);
+ 	}
+     }
  
    /* Clear information about duplicates.  */
    for (i = 0; i < n; i++)
diff -Nrcpad gcc-10.3.0/gcc/cfghooks.h gcc-11.1.0/gcc/cfghooks.h
*** gcc-10.3.0/gcc/cfghooks.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfghooks.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Hooks for cfg representation specific functions.
!    Copyright (C) 2003-2020 Free Software Foundation, Inc.
     Contributed by Sebastian Pop <s.pop@laposte.net>
  
  This file is part of GCC.
--- 1,5 ----
  /* Hooks for cfg representation specific functions.
!    Copyright (C) 2003-2021 Free Software Foundation, Inc.
     Contributed by Sebastian Pop <s.pop@laposte.net>
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/cfgloop.c gcc-11.1.0/gcc/cfgloop.c
*** gcc-10.3.0/gcc/cfgloop.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfgloop.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Natural loop discovery code for GNU compiler.
!    Copyright (C) 2000-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Natural loop discovery code for GNU compiler.
!    Copyright (C) 2000-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** release_recorded_exits (function *fn)
*** 1202,1211 ****
  
  /* Returns the list of the exit edges of a LOOP.  */
  
! vec<edge> 
  get_loop_exit_edges (const class loop *loop, basic_block *body)
  {
!   vec<edge> edges = vNULL;
    edge e;
    unsigned i;
    edge_iterator ei;
--- 1202,1211 ----
  
  /* Returns the list of the exit edges of a LOOP.  */
  
! auto_vec<edge>
  get_loop_exit_edges (const class loop *loop, basic_block *body)
  {
!   auto_vec<edge> edges;
    edge e;
    unsigned i;
    edge_iterator ei;
diff -Nrcpad gcc-10.3.0/gcc/cfgloop.h gcc-11.1.0/gcc/cfgloop.h
*** gcc-10.3.0/gcc/cfgloop.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfgloop.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Natural loop functions
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Natural loop functions
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** public:
*** 60,68 ****
       b) it is consistent with the result of number_of_iterations_exit.  */
    widest_int bound;
  
!   /* True if the statement will cause the loop to be leaved the (at most)
!      BOUND + 1-st time it is executed, that is, all the statements after it
!      are executed at most BOUND times.  */
    bool is_exit;
  
    /* The next bound in the list.  */
--- 60,68 ----
       b) it is consistent with the result of number_of_iterations_exit.  */
    widest_int bound;
  
!   /* True if, after executing the statement BOUND + 1 times, we will
!      leave the loop; that is, all the statements after it are executed at most
!      BOUND times.  */
    bool is_exit;
  
    /* The next bound in the list.  */
*************** extern basic_block *get_loop_body_in_cus
*** 383,389 ****
  extern basic_block *get_loop_body_in_custom_order (const class loop *, void *,
  			       int (*) (const void *, const void *, void *));
  
! extern vec<edge> get_loop_exit_edges (const class loop *, basic_block * = NULL);
  extern edge single_exit (const class loop *);
  extern edge single_likely_exit (class loop *loop, vec<edge>);
  extern unsigned num_loop_branches (const class loop *);
--- 383,389 ----
  extern basic_block *get_loop_body_in_custom_order (const class loop *, void *,
  			       int (*) (const void *, const void *, void *));
  
! extern auto_vec<edge> get_loop_exit_edges (const class loop *, basic_block * = NULL);
  extern edge single_exit (const class loop *);
  extern edge single_likely_exit (class loop *loop, vec<edge>);
  extern unsigned num_loop_branches (const class loop *);
*************** extern void init_set_costs (void);
*** 824,830 ****
  
  /* Loop optimizer initialization.  */
  extern void loop_optimizer_init (unsigned);
! extern void loop_optimizer_finalize (function *);
  inline void
  loop_optimizer_finalize ()
  {
--- 824,830 ----
  
  /* Loop optimizer initialization.  */
  extern void loop_optimizer_init (unsigned);
! extern void loop_optimizer_finalize (function *, bool = false);
  inline void
  loop_optimizer_finalize ()
  {
diff -Nrcpad gcc-10.3.0/gcc/cfgloopanal.c gcc-11.1.0/gcc/cfgloopanal.c
*** gcc-10.3.0/gcc/cfgloopanal.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfgloopanal.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Natural loop analysis code for GNU compiler.
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Natural loop analysis code for GNU compiler.
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/cfgloopmanip.c gcc-11.1.0/gcc/cfgloopmanip.c
*** gcc-10.3.0/gcc/cfgloopmanip.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfgloopmanip.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Loop manipulation code for GNU compiler.
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Loop manipulation code for GNU compiler.
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** fix_loop_placement (class loop *loop, bo
*** 126,132 ****
  {
    unsigned i;
    edge e;
!   vec<edge> exits = get_loop_exit_edges (loop);
    class loop *father = current_loops->tree_root, *act;
    bool ret = false;
  
--- 126,132 ----
  {
    unsigned i;
    edge e;
!   auto_vec<edge> exits = get_loop_exit_edges (loop);
    class loop *father = current_loops->tree_root, *act;
    bool ret = false;
  
*************** fix_loop_placement (class loop *loop, bo
*** 157,163 ****
        ret = true;
      }
  
-   exits.release ();
    return ret;
  }
  
--- 157,162 ----
diff -Nrcpad gcc-10.3.0/gcc/cfgloopmanip.h gcc-11.1.0/gcc/cfgloopmanip.h
*** gcc-10.3.0/gcc/cfgloopmanip.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfgloopmanip.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Loop manipulation header.
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Loop manipulation header.
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/cfgrtl.c gcc-11.1.0/gcc/cfgrtl.c
*** gcc-10.3.0/gcc/cfgrtl.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfgrtl.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Control flow graph manipulation code for GNU compiler.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow graph manipulation code for GNU compiler.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 61,66 ****
--- 61,68 ----
  #include "cfgloop.h"
  #include "tree-pass.h"
  #include "print-rtl.h"
+ #include "rtl-iter.h"
+ #include "gimplify.h"
  
  /* Disable warnings about missing quoting in GCC diagnostics.  */
  #if __GNUC__ >= 10
*************** static basic_block rtl_split_block (basi
*** 95,100 ****
--- 97,103 ----
  static void rtl_dump_bb (FILE *, basic_block, int, dump_flags_t);
  static int rtl_verify_flow_info_1 (void);
  static void rtl_make_forwarder_block (edge);
+ static bool rtl_bb_info_initialized_p (basic_block bb);
  
  /* Return true if NOTE is not one of the ones that must be kept paired,
     so that we may simply delete it.  */
*************** rtl_create_basic_block (void *headp, voi
*** 374,385 ****
    /* Grow the basic block array if needed.  */
    if ((size_t) last_basic_block_for_fn (cfun)
        >= basic_block_info_for_fn (cfun)->length ())
!     {
!       size_t new_size =
! 	(last_basic_block_for_fn (cfun)
! 	 + (last_basic_block_for_fn (cfun) + 3) / 4);
!       vec_safe_grow_cleared (basic_block_info_for_fn (cfun), new_size);
!     }
  
    n_basic_blocks_for_fn (cfun)++;
  
--- 377,384 ----
    /* Grow the basic block array if needed.  */
    if ((size_t) last_basic_block_for_fn (cfun)
        >= basic_block_info_for_fn (cfun)->length ())
!     vec_safe_grow_cleared (basic_block_info_for_fn (cfun),
! 			   last_basic_block_for_fn (cfun) + 1);
  
    n_basic_blocks_for_fn (cfun)++;
  
*************** rtl_dump_bb (FILE *outf, basic_block bb,
*** 2151,2157 ****
        putc ('\n', outf);
      }
  
!   if (bb->index != ENTRY_BLOCK && bb->index != EXIT_BLOCK)
      {
        rtx_insn *last = BB_END (bb);
        if (last)
--- 2150,2157 ----
        putc ('\n', outf);
      }
  
!   if (bb->index != ENTRY_BLOCK && bb->index != EXIT_BLOCK
!       && rtl_bb_info_initialized_p (bb))
      {
        rtx_insn *last = BB_END (bb);
        if (last)
*************** find_bbs_reachable_by_hot_paths (hash_se
*** 2381,2391 ****
     cfg optimizations that may make hot blocks previously reached
     by both hot and cold blocks now only reachable along cold paths.  */
  
! static vec<basic_block>
  find_partition_fixes (bool flag_only)
  {
    basic_block bb;
!   vec<basic_block> bbs_to_fix = vNULL;
    hash_set<basic_block> set;
  
    /* Callers check this.  */
--- 2381,2391 ----
     cfg optimizations that may make hot blocks previously reached
     by both hot and cold blocks now only reachable along cold paths.  */
  
! static auto_vec<basic_block>
  find_partition_fixes (bool flag_only)
  {
    basic_block bb;
!   auto_vec<basic_block> bbs_to_fix;
    hash_set<basic_block> set;
  
    /* Callers check this.  */
*************** fixup_partitions (void)
*** 2429,2435 ****
       a cold partition cannot dominate a basic block in a hot partition.
       Fixup any that now violate this requirement, as a result of edge
       forwarding and unreachable block deletion.  */
!   vec<basic_block> bbs_to_fix = find_partition_fixes (false);
  
    /* Do the partition fixup after all necessary blocks have been converted to
       cold, so that we only update the region crossings the minimum number of
--- 2429,2435 ----
       a cold partition cannot dominate a basic block in a hot partition.
       Fixup any that now violate this requirement, as a result of edge
       forwarding and unreachable block deletion.  */
!   auto_vec<basic_block> bbs_to_fix = find_partition_fixes (false);
  
    /* Do the partition fixup after all necessary blocks have been converted to
       cold, so that we only update the region crossings the minimum number of
*************** rtl_verify_edges (void)
*** 2731,2737 ****
    if (crtl->has_bb_partition && !err
        && current_ir_type () == IR_RTL_CFGLAYOUT)
      {
!       vec<basic_block> bbs_to_fix = find_partition_fixes (true);
        err = !bbs_to_fix.is_empty ();
      }
  
--- 2731,2737 ----
    if (crtl->has_bb_partition && !err
        && current_ir_type () == IR_RTL_CFGLAYOUT)
      {
!       auto_vec<basic_block> bbs_to_fix = find_partition_fixes (true);
        err = !bbs_to_fix.is_empty ();
      }
  
*************** fixup_abnormal_edges (void)
*** 3468,3473 ****
--- 3468,3520 ----
    return inserted;
  }
  
+ /* Delete the unconditional jump INSN and adjust the CFG correspondingly.
+    Note that the INSN should be deleted *after* removing dead edges, so
+    that the kept edge is the fallthrough edge for a (set (pc) (pc))
+    but not for a (set (pc) (label_ref FOO)).  */
+ 
+ void
+ update_cfg_for_uncondjump (rtx_insn *insn)
+ {
+   basic_block bb = BLOCK_FOR_INSN (insn);
+   gcc_assert (BB_END (bb) == insn);
+ 
+   purge_dead_edges (bb);
+ 
+   if (current_ir_type () != IR_RTL_CFGLAYOUT)
+     {
+       if (!find_fallthru_edge (bb->succs))
+ 	{
+ 	  auto barrier = next_nonnote_nondebug_insn (insn);
+ 	  if (!barrier || !BARRIER_P (barrier))
+ 	    emit_barrier_after (insn);
+ 	}
+       return;
+     }
+ 
+   delete_insn (insn);
+   if (EDGE_COUNT (bb->succs) == 1)
+     {
+       rtx_insn *insn;
+ 
+       single_succ_edge (bb)->flags |= EDGE_FALLTHRU;
+ 
+       /* Remove barriers from the footer if there are any.  */
+       for (insn = BB_FOOTER (bb); insn; insn = NEXT_INSN (insn))
+ 	if (BARRIER_P (insn))
+ 	  {
+ 	    if (PREV_INSN (insn))
+ 	      SET_NEXT_INSN (PREV_INSN (insn)) = NEXT_INSN (insn);
+ 	    else
+ 	      BB_FOOTER (bb) = NEXT_INSN (insn);
+ 	    if (NEXT_INSN (insn))
+ 	      SET_PREV_INSN (NEXT_INSN (insn)) = PREV_INSN (insn);
+ 	  }
+ 	else if (LABEL_P (insn))
+ 	  break;
+     }
+ }
+ 
  /* Cut the insns from FIRST to LAST out of the insns stream.  */
  
  rtx_insn *
*************** cfg_layout_can_duplicate_bb_p (const_bas
*** 4248,4254 ****
  }
  
  rtx_insn *
! duplicate_insn_chain (rtx_insn *from, rtx_insn *to)
  {
    rtx_insn *insn, *next, *copy;
    rtx_note *last;
--- 4295,4302 ----
  }
  
  rtx_insn *
! duplicate_insn_chain (rtx_insn *from, rtx_insn *to,
! 		      class loop *loop, copy_bb_data *id)
  {
    rtx_insn *insn, *next, *copy;
    rtx_note *last;
*************** duplicate_insn_chain (rtx_insn *from, rt
*** 4277,4282 ****
--- 4325,4375 ----
  	      && ANY_RETURN_P (JUMP_LABEL (insn)))
  	    JUMP_LABEL (copy) = JUMP_LABEL (insn);
            maybe_copy_prologue_epilogue_insn (insn, copy);
+ 	  /* If requested remap dependence info of cliques brought in
+ 	     via inlining.  */
+ 	  if (id)
+ 	    {
+ 	      subrtx_iterator::array_type array;
+ 	      FOR_EACH_SUBRTX (iter, array, PATTERN (insn), ALL)
+ 		if (MEM_P (*iter) && MEM_EXPR (*iter))
+ 		  {
+ 		    tree op = MEM_EXPR (*iter);
+ 		    if (TREE_CODE (op) == WITH_SIZE_EXPR)
+ 		      op = TREE_OPERAND (op, 0);
+ 		    while (handled_component_p (op))
+ 		      op = TREE_OPERAND (op, 0);
+ 		    if ((TREE_CODE (op) == MEM_REF
+ 			 || TREE_CODE (op) == TARGET_MEM_REF)
+ 			&& MR_DEPENDENCE_CLIQUE (op) > 1
+ 			&& (!loop
+ 			    || (MR_DEPENDENCE_CLIQUE (op)
+ 				!= loop->owned_clique)))
+ 		      {
+ 			if (!id->dependence_map)
+ 			  id->dependence_map = new hash_map<dependence_hash,
+ 			      unsigned short>;
+ 			bool existed;
+ 			unsigned short &newc = id->dependence_map->get_or_insert
+ 					 (MR_DEPENDENCE_CLIQUE (op), &existed);
+ 			if (!existed)
+ 			  {
+ 			    gcc_assert
+ 			      (MR_DEPENDENCE_CLIQUE (op) <= cfun->last_clique);
+ 			    newc = ++cfun->last_clique;
+ 			  }
+ 			/* We cannot adjust MR_DEPENDENCE_CLIQUE in-place
+ 			   since MEM_EXPR is shared so make a copy and
+ 			   walk to the subtree again.  */
+ 			tree new_expr = unshare_expr (MEM_EXPR (*iter));
+ 			if (TREE_CODE (new_expr) == WITH_SIZE_EXPR)
+ 			  new_expr = TREE_OPERAND (new_expr, 0);
+ 			while (handled_component_p (new_expr))
+ 			  new_expr = TREE_OPERAND (new_expr, 0);
+ 			MR_DEPENDENCE_CLIQUE (new_expr) = newc;
+ 			set_mem_expr (const_cast <rtx> (*iter), new_expr);
+ 		      }
+ 		  }
+ 	    }
  	  break;
  
  	case JUMP_TABLE_DATA:
*************** duplicate_insn_chain (rtx_insn *from, rt
*** 4341,4352 ****
  /* Create a duplicate of the basic block BB.  */
  
  static basic_block
! cfg_layout_duplicate_bb (basic_block bb, copy_bb_data *)
  {
    rtx_insn *insn;
    basic_block new_bb;
  
!   insn = duplicate_insn_chain (BB_HEAD (bb), BB_END (bb));
    new_bb = create_basic_block (insn,
  			       insn ? get_last_insn () : NULL,
  			       EXIT_BLOCK_PTR_FOR_FN (cfun)->prev_bb);
--- 4434,4447 ----
  /* Create a duplicate of the basic block BB.  */
  
  static basic_block
! cfg_layout_duplicate_bb (basic_block bb, copy_bb_data *id)
  {
    rtx_insn *insn;
    basic_block new_bb;
  
!   class loop *loop = (id && current_loops) ? bb->loop_father : NULL;
! 
!   insn = duplicate_insn_chain (BB_HEAD (bb), BB_END (bb), loop, id);
    new_bb = create_basic_block (insn,
  			       insn ? get_last_insn () : NULL,
  			       EXIT_BLOCK_PTR_FOR_FN (cfun)->prev_bb);
*************** cfg_layout_duplicate_bb (basic_block bb,
*** 4357,4363 ****
        insn = BB_HEADER (bb);
        while (NEXT_INSN (insn))
  	insn = NEXT_INSN (insn);
!       insn = duplicate_insn_chain (BB_HEADER (bb), insn);
        if (insn)
  	BB_HEADER (new_bb) = unlink_insn_chain (insn, get_last_insn ());
      }
--- 4452,4458 ----
        insn = BB_HEADER (bb);
        while (NEXT_INSN (insn))
  	insn = NEXT_INSN (insn);
!       insn = duplicate_insn_chain (BB_HEADER (bb), insn, loop, id);
        if (insn)
  	BB_HEADER (new_bb) = unlink_insn_chain (insn, get_last_insn ());
      }
*************** cfg_layout_duplicate_bb (basic_block bb,
*** 4367,4373 ****
        insn = BB_FOOTER (bb);
        while (NEXT_INSN (insn))
  	insn = NEXT_INSN (insn);
!       insn = duplicate_insn_chain (BB_FOOTER (bb), insn);
        if (insn)
  	BB_FOOTER (new_bb) = unlink_insn_chain (insn, get_last_insn ());
      }
--- 4462,4468 ----
        insn = BB_FOOTER (bb);
        while (NEXT_INSN (insn))
  	insn = NEXT_INSN (insn);
!       insn = duplicate_insn_chain (BB_FOOTER (bb), insn, loop, id);
        if (insn)
  	BB_FOOTER (new_bb) = unlink_insn_chain (insn, get_last_insn ());
      }
*************** rtl_block_empty_p (basic_block bb)
*** 4863,4869 ****
      return true;
  
    FOR_BB_INSNS (bb, insn)
!     if (NONDEBUG_INSN_P (insn) && !any_uncondjump_p (insn))
        return false;
  
    return true;
--- 4958,4965 ----
      return true;
  
    FOR_BB_INSNS (bb, insn)
!     if (NONDEBUG_INSN_P (insn)
! 	&& (!any_uncondjump_p (insn) || !onlyjump_p (insn)))
        return false;
  
    return true;
*************** init_rtl_bb_info (basic_block bb)
*** 5138,5143 ****
--- 5234,5245 ----
    bb->il.x.rtl = ggc_cleared_alloc<rtl_bb_info> ();
  }
  
+ static bool
+ rtl_bb_info_initialized_p (basic_block bb)
+ {
+   return bb->il.x.rtl;
+ }
+ 
  /* Returns true if it is possible to remove edge E by redirecting
     it to the destination of the other edge from E->src.  */
  
diff -Nrcpad gcc-10.3.0/gcc/cfgrtl.h gcc-11.1.0/gcc/cfgrtl.h
*** gcc-10.3.0/gcc/cfgrtl.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cfgrtl.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Define control flow data structures for the CFG.
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Define control flow data structures for the CFG.
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern void fixup_partitions (void);
*** 47,55 ****
  extern bool purge_dead_edges (basic_block);
  extern bool purge_all_dead_edges (void);
  extern bool fixup_abnormal_edges (void);
  extern rtx_insn *unlink_insn_chain (rtx_insn *, rtx_insn *);
  extern void relink_block_chain (bool);
! extern rtx_insn *duplicate_insn_chain (rtx_insn *, rtx_insn *);
  extern void cfg_layout_initialize (int);
  extern void cfg_layout_finalize (void);
  extern void break_superblocks (void);
--- 47,57 ----
  extern bool purge_dead_edges (basic_block);
  extern bool purge_all_dead_edges (void);
  extern bool fixup_abnormal_edges (void);
+ extern void update_cfg_for_uncondjump (rtx_insn *);
  extern rtx_insn *unlink_insn_chain (rtx_insn *, rtx_insn *);
  extern void relink_block_chain (bool);
! extern rtx_insn *duplicate_insn_chain (rtx_insn *, rtx_insn *,
! 				       class loop *, class copy_bb_data *);
  extern void cfg_layout_initialize (int);
  extern void cfg_layout_finalize (void);
  extern void break_superblocks (void);
diff -Nrcpad gcc-10.3.0/gcc/cgraph.c gcc-11.1.0/gcc/cgraph.c
*** gcc-10.3.0/gcc/cgraph.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cgraph.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Callgraph handling code.
!    Copyright (C) 2003-2020 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
--- 1,5 ----
  /* Callgraph handling code.
!    Copyright (C) 2003-2021 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 64,69 ****
--- 64,72 ----
  #include "selftest.h"
  #include "tree-into-ssa.h"
  #include "ipa-inline.h"
+ #include "tree-nested.h"
+ #include "symtab-thunks.h"
+ #include "symtab-clones.h"
  
  /* FIXME: Only for PROP_loops, but cgraph shouldn't have to know about this.  */
  #include "tree-pass.h"
*************** cgraph_node::create (tree decl)
*** 517,529 ****
      node->ifunc_resolver = true;
  
    node->register_symbol ();
  
-   if (DECL_CONTEXT (decl) && TREE_CODE (DECL_CONTEXT (decl)) == FUNCTION_DECL)
-     {
-       node->origin = cgraph_node::get_create (DECL_CONTEXT (decl));
-       node->next_nested = node->origin->nested;
-       node->origin->nested = node;
-     }
    return node;
  }
  
--- 520,527 ----
      node->ifunc_resolver = true;
  
    node->register_symbol ();
+   maybe_record_nested_function (node);
  
    return node;
  }
  
*************** cgraph_node::create_thunk (tree alias, t
*** 633,647 ****
  		       ? virtual_value == wi::to_wide (virtual_offset)
  		       : virtual_value == 0);
  
!   node->thunk.fixed_offset = fixed_offset;
!   node->thunk.virtual_value = virtual_value;
!   node->thunk.indirect_offset = indirect_offset;
!   node->thunk.alias = real_alias;
!   node->thunk.this_adjusting = this_adjusting;
!   node->thunk.virtual_offset_p = virtual_offset != NULL;
!   node->thunk.thunk_p = true;
    node->definition = true;
  
    return node;
  }
  
--- 631,654 ----
  		       ? virtual_value == wi::to_wide (virtual_offset)
  		       : virtual_value == 0);
  
!   node->thunk = true;
    node->definition = true;
  
+   thunk_info *i;
+   thunk_info local_info;
+   if (symtab->state < CONSTRUCTION)
+     i = &local_info;
+   else
+     i = thunk_info::get_create (node);
+   i->fixed_offset = fixed_offset;
+   i->virtual_value = virtual_value;
+   i->indirect_offset = indirect_offset;
+   i->alias = real_alias;
+   i->this_adjusting = this_adjusting;
+   i->virtual_offset_p = virtual_offset != NULL;
+   if (symtab->state < CONSTRUCTION)
+     i->register_early (node);
+ 
    return node;
  }
  
*************** symbol_table::create_edge (cgraph_node *
*** 920,926 ****
        = decl_maybe_in_construction_p (NULL, NULL, call_stmt,
  				      caller->decl);
    else
!     edge->in_polymorphic_cdtor = caller->thunk.thunk_p;
  
    if (callee && symtab->state != LTO_STREAMING
        && edge->callee->comdat_local_p ())
--- 927,935 ----
        = decl_maybe_in_construction_p (NULL, NULL, call_stmt,
  				      caller->decl);
    else
!     edge->in_polymorphic_cdtor = caller->thunk;
!   if (callee)
!     caller->calls_declare_variant_alt |= callee->declare_variant_alt;
  
    if (callee && symtab->state != LTO_STREAMING
        && edge->callee->comdat_local_p ())
*************** cgraph_edge::resolve_speculation (cgraph
*** 1234,1240 ****
      {
        cgraph_edge *tmp = edge;
        if (dump_file)
!         fprintf (dump_file, "Speculative call turned into direct call.\n");
        edge = e2;
        e2 = tmp;
        /* FIXME:  If EDGE is inlined, we should scale up the frequencies
--- 1243,1249 ----
      {
        cgraph_edge *tmp = edge;
        if (dump_file)
! 	fprintf (dump_file, "Speculative call turned into direct call.\n");
        edge = e2;
        e2 = tmp;
        /* FIXME:  If EDGE is inlined, we should scale up the frequencies
*************** cgraph_edge::redirect_call_stmt_to_calle
*** 1487,1524 ****
  	  return e->call_stmt;
  	}
      }
- 
    if (flag_checking && decl)
      {
!       cgraph_node *node = cgraph_node::get (decl);
!       gcc_assert (!node || !node->clone.param_adjustments);
      }
  
    if (symtab->dump_file)
      {
        fprintf (symtab->dump_file, "updating call of %s -> %s: ",
  	       e->caller->dump_name (), e->callee->dump_name ());
        print_gimple_stmt (symtab->dump_file, e->call_stmt, 0, dump_flags);
!       if (e->callee->clone.param_adjustments)
! 	e->callee->clone.param_adjustments->dump (symtab->dump_file);
        unsigned performed_len
! 	= vec_safe_length (e->caller->clone.performed_splits);
        if (performed_len > 0)
  	fprintf (symtab->dump_file, "Performed splits records:\n");
        for (unsigned i = 0; i < performed_len; i++)
  	{
  	  ipa_param_performed_split *sm
! 	    = &(*e->caller->clone.performed_splits)[i];
  	  print_node_brief (symtab->dump_file, "  dummy_decl: ", sm->dummy_decl,
  			    TDF_UID);
  	  fprintf (symtab->dump_file, ", unit_offset: %u\n", sm->unit_offset);
  	}
      }
  
!   if (ipa_param_adjustments *padjs = e->callee->clone.param_adjustments)
      {
        /* We need to defer cleaning EH info on the new statement to
!          fixup-cfg.  We may not have dominator information at this point
  	 and thus would end up with unreachable blocks and have no way
  	 to communicate that we need to run CFG cleanup then.  */
        int lp_nr = lookup_stmt_eh_lp (e->call_stmt);
--- 1496,1539 ----
  	  return e->call_stmt;
  	}
      }
    if (flag_checking && decl)
      {
!       if (cgraph_node *node = cgraph_node::get (decl))
! 	{
! 	  clone_info *info = clone_info::get (node);
! 	  gcc_assert (!info || !info->param_adjustments);
! 	}
      }
  
+   clone_info *callee_info = clone_info::get (e->callee);
+   clone_info *caller_info = clone_info::get (e->caller);
+ 
    if (symtab->dump_file)
      {
        fprintf (symtab->dump_file, "updating call of %s -> %s: ",
  	       e->caller->dump_name (), e->callee->dump_name ());
        print_gimple_stmt (symtab->dump_file, e->call_stmt, 0, dump_flags);
!       if (callee_info && callee_info->param_adjustments)
! 	callee_info->param_adjustments->dump (symtab->dump_file);
        unsigned performed_len
! 	= caller_info ? vec_safe_length (caller_info->performed_splits) : 0;
        if (performed_len > 0)
  	fprintf (symtab->dump_file, "Performed splits records:\n");
        for (unsigned i = 0; i < performed_len; i++)
  	{
  	  ipa_param_performed_split *sm
! 	    = &(*caller_info->performed_splits)[i];
  	  print_node_brief (symtab->dump_file, "  dummy_decl: ", sm->dummy_decl,
  			    TDF_UID);
  	  fprintf (symtab->dump_file, ", unit_offset: %u\n", sm->unit_offset);
  	}
      }
  
!   if (ipa_param_adjustments *padjs
! 	 = callee_info ? callee_info->param_adjustments : NULL)
      {
        /* We need to defer cleaning EH info on the new statement to
! 	 fixup-cfg.  We may not have dominator information at this point
  	 and thus would end up with unreachable blocks and have no way
  	 to communicate that we need to run CFG cleanup then.  */
        int lp_nr = lookup_stmt_eh_lp (e->call_stmt);
*************** cgraph_edge::redirect_call_stmt_to_calle
*** 1527,1533 ****
  
        tree old_fntype = gimple_call_fntype (e->call_stmt);
        new_stmt = padjs->modify_call (e->call_stmt,
! 				     e->caller->clone.performed_splits,
  				     e->callee->decl, false);
        cgraph_node *origin = e->callee;
        while (origin->clone_of)
--- 1542,1549 ----
  
        tree old_fntype = gimple_call_fntype (e->call_stmt);
        new_stmt = padjs->modify_call (e->call_stmt,
! 				     caller_info
! 				     ? caller_info->performed_splits : NULL,
  				     e->callee->decl, false);
        cgraph_node *origin = e->callee;
        while (origin->clone_of)
*************** cgraph_edge::redirect_call_stmt_to_calle
*** 1576,1582 ****
  	  var = get_or_create_ssa_default_def
  		  (DECL_STRUCT_FUNCTION (e->caller->decl), var);
  	  gimple *set_stmt = gimple_build_assign (lhs, var);
!           gsi = gsi_for_stmt (new_stmt);
  	  gsi_insert_before_without_update (&gsi, set_stmt, GSI_SAME_STMT);
  	  update_stmt_fn (DECL_STRUCT_FUNCTION (e->caller->decl), set_stmt);
  	}
--- 1592,1598 ----
  	  var = get_or_create_ssa_default_def
  		  (DECL_STRUCT_FUNCTION (e->caller->decl), var);
  	  gimple *set_stmt = gimple_build_assign (lhs, var);
! 	  gsi = gsi_for_stmt (new_stmt);
  	  gsi_insert_before_without_update (&gsi, set_stmt, GSI_SAME_STMT);
  	  update_stmt_fn (DECL_STRUCT_FUNCTION (e->caller->decl), set_stmt);
  	}
*************** cgraph_update_edges_for_call_stmt (gimpl
*** 1702,1708 ****
    if (orig->clones)
      for (node = orig->clones; node != orig;)
        {
!         cgraph_update_edges_for_call_stmt_node (node, old_stmt, old_decl, new_stmt);
  	if (node->clones)
  	  node = node->clones;
  	else if (node->next_sibling_clone)
--- 1718,1725 ----
    if (orig->clones)
      for (node = orig->clones; node != orig;)
        {
! 	cgraph_update_edges_for_call_stmt_node (node, old_stmt, old_decl,
! 						new_stmt);
  	if (node->clones)
  	  node = node->clones;
  	else if (node->next_sibling_clone)
*************** release_function_body (tree decl)
*** 1801,1814 ****
  	  gcc_assert (!dom_info_available_p (fn, CDI_DOMINATORS));
  	  gcc_assert (!dom_info_available_p (fn, CDI_POST_DOMINATORS));
  	  delete_tree_cfg_annotations (fn);
! 	  clear_edges (fn);
  	  fn->cfg = NULL;
  	}
        if (fn->value_histograms)
  	free_histograms (fn);
        gimple_set_body (decl, NULL);
        /* Struct function hangs a lot of data that would leak if we didn't
!          removed all pointers to it.   */
        ggc_free (fn);
        DECL_STRUCT_FUNCTION (decl) = NULL;
      }
--- 1818,1831 ----
  	  gcc_assert (!dom_info_available_p (fn, CDI_DOMINATORS));
  	  gcc_assert (!dom_info_available_p (fn, CDI_POST_DOMINATORS));
  	  delete_tree_cfg_annotations (fn);
! 	  free_cfg (fn);
  	  fn->cfg = NULL;
  	}
        if (fn->value_histograms)
  	free_histograms (fn);
        gimple_set_body (decl, NULL);
        /* Struct function hangs a lot of data that would leak if we didn't
! 	 removed all pointers to it.   */
        ggc_free (fn);
        DECL_STRUCT_FUNCTION (decl) = NULL;
      }
*************** cgraph_node::release_body (bool keep_arg
*** 1843,1848 ****
--- 1860,1876 ----
        lto_free_function_in_decl_state_for_node (this);
        lto_file_data = NULL;
      }
+   if (flag_checking && clones)
+     {
+       /* It is invalid to release body before materializing clones except
+ 	 for thunks that don't really need a body.  Verify also that we do
+ 	 not leak pointers to the call statements.  */
+       for (cgraph_node *node = clones; node;
+ 	   node = node->next_sibling_clone)
+ 	gcc_assert (node->thunk && !node->callees->call_stmt);
+     }
+   remove_callees ();
+   remove_all_references ();
  }
  
  /* Remove function from symbol table.  */
*************** cgraph_node::release_body (bool keep_arg
*** 1850,1861 ****
--- 1878,1896 ----
  void
  cgraph_node::remove (void)
  {
+   bool clone_info_set = false;
+   clone_info *info, saved_info;
    if (symtab->ipa_clones_dump_file && symtab->cloned_nodes.contains (this))
      fprintf (symtab->ipa_clones_dump_file,
  	     "Callgraph removal;%s;%d;%s;%d;%d\n", asm_name (), order,
  	     DECL_SOURCE_FILE (decl), DECL_SOURCE_LINE (decl),
  	     DECL_SOURCE_COLUMN (decl));
  
+   if ((info = clone_info::get (this)) != NULL)
+     {
+       saved_info = *info;
+       clone_info_set = true;
+     }
    symtab->call_cgraph_removal_hooks (this);
    remove_callers ();
    remove_callees ();
*************** cgraph_node::remove (void)
*** 1866,1888 ****
       */
    force_output = false;
    forced_by_abi = false;
-   cgraph_node *next;
-   for (cgraph_node *n = nested; n; n = next)
-   {
-     next = n->next_nested;
-     n->origin = NULL;
-     n->next_nested = NULL;
-   }
-   nested = NULL;
-   if (origin)
-     {
-       cgraph_node **node2 = &origin->nested;
  
!       while (*node2 != this)
! 	node2 = &(*node2)->next_nested;
!       *node2 = next_nested;
!     }
!   unregister ();
    if (prev_sibling_clone)
      prev_sibling_clone->next_sibling_clone = next_sibling_clone;
    else if (clone_of)
--- 1901,1908 ----
       */
    force_output = false;
    forced_by_abi = false;
  
!   unregister (clone_info_set ? &saved_info : NULL);
    if (prev_sibling_clone)
      prev_sibling_clone->next_sibling_clone = next_sibling_clone;
    else if (clone_of)
*************** cgraph_node::remove (void)
*** 1894,1900 ****
        cgraph_node *n, *next;
  
        if (clone_of)
!         {
  	  for (n = clones; n->next_sibling_clone; n = n->next_sibling_clone)
  	    n->clone_of = clone_of;
  	  n->clone_of = clone_of;
--- 1914,1920 ----
        cgraph_node *n, *next;
  
        if (clone_of)
! 	{
  	  for (n = clones; n->next_sibling_clone; n = n->next_sibling_clone)
  	    n->clone_of = clone_of;
  	  n->clone_of = clone_of;
*************** cgraph_node::remove (void)
*** 1904,1910 ****
  	  clone_of->clones = clones;
  	}
        else
!         {
  	  /* We are removing node with clones.  This makes clones inconsistent,
  	     but assume they will be removed subsequently and just keep clone
  	     tree intact.  This can happen in unreachable function removal since
--- 1924,1930 ----
  	  clone_of->clones = clones;
  	}
        else
! 	{
  	  /* We are removing node with clones.  This makes clones inconsistent,
  	     but assume they will be removed subsequently and just keep clone
  	     tree intact.  This can happen in unreachable function removal since
*************** cgraph_edge::dump_edge_flags (FILE *f)
*** 2077,2082 ****
--- 2097,2116 ----
      fprintf (f, "(can throw external) ");
  }
  
+ /* Dump edge to stderr.  */
+ 
+ void
+ cgraph_edge::debug (void)
+ {
+   fprintf (stderr, "%s -> %s ", caller->dump_asm_name (),
+ 	   callee == NULL ? "(null)" : callee->dump_asm_name ());
+   dump_edge_flags (stderr);
+   fprintf (stderr, "\n\n");
+   caller->debug ();
+   if (callee != NULL)
+     callee->debug ();
+ }
+ 
  /* Dump call graph node to file F.  */
  
  void
*************** cgraph_node::dump (FILE *f)
*** 2130,2136 ****
      }
    if (tp_first_run > 0)
      fprintf (f, " first_run:%" PRId64, (int64_t) tp_first_run);
!   if (origin)
      fprintf (f, " nested in:%s", origin->dump_asm_name ());
    if (gimple_has_body_p (decl))
      fprintf (f, " body");
--- 2164,2170 ----
      }
    if (tp_first_run > 0)
      fprintf (f, " first_run:%" PRId64, (int64_t) tp_first_run);
!   if (cgraph_node *origin = nested_function_origin (this))
      fprintf (f, " nested in:%s", origin->dump_asm_name ());
    if (gimple_has_body_p (decl))
      fprintf (f, " body");
*************** cgraph_node::dump (FILE *f)
*** 2174,2179 ****
--- 2208,2215 ----
      fprintf (f, " optimize_size");
    if (parallelized_function)
      fprintf (f, " parallelized_function");
+   if (DECL_IS_MALLOC (decl))
+     fprintf (f, " decl_is_malloc");
    if (DECL_IS_OPERATOR_NEW_P (decl))
      fprintf (f, " %soperator_new",
  	     DECL_IS_REPLACEABLE_OPERATOR (decl) ? "replaceable_" : "");
*************** cgraph_node::dump (FILE *f)
*** 2183,2219 ****
  
    fprintf (f, "\n");
  
!   if (thunk.thunk_p)
      {
        fprintf (f, "  Thunk");
!       if (thunk.alias)
! 	fprintf (f, "  of %s (asm:%s)",
! 		 lang_hooks.decl_printable_name (thunk.alias, 2),
! 		 IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (thunk.alias)));
!       fprintf (f, " fixed offset %i virtual value %i indirect_offset %i "
! 		  "has virtual offset %i\n",
! 	       (int)thunk.fixed_offset,
! 	       (int)thunk.virtual_value,
! 	       (int)thunk.indirect_offset,
! 	       (int)thunk.virtual_offset_p);
      }
    else if (former_thunk_p ())
-     fprintf (f, "  Former thunk fixed offset %i virtual value %i "
- 	     "indirect_offset %i has virtual offset %i\n",
- 	     (int)thunk.fixed_offset,
- 	     (int)thunk.virtual_value,
- 	     (int)thunk.indirect_offset,
- 	     (int)thunk.virtual_offset_p);
-   if (alias && thunk.alias
-       && DECL_P (thunk.alias))
      {
!       fprintf (f, "  Alias of %s",
! 	       lang_hooks.decl_printable_name (thunk.alias, 2));
!       if (DECL_ASSEMBLER_NAME_SET_P (thunk.alias))
! 	fprintf (f, " (asm:%s)",
! 		 IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (thunk.alias)));
!       fprintf (f, "\n");
      }
    
    fprintf (f, "  Called by: ");
  
--- 2219,2235 ----
  
    fprintf (f, "\n");
  
!   if (thunk)
      {
        fprintf (f, "  Thunk");
!       thunk_info::get (this)->dump (f);
      }
    else if (former_thunk_p ())
      {
!       fprintf (f, "  Former thunk ");
!       thunk_info::get (this)->dump (f);
      }
+   else gcc_checking_assert (!thunk_info::get (this));
    
    fprintf (f, "  Called by: ");
  
*************** cgraph_node::dump (FILE *f)
*** 2268,2294 ****
      {
        if (edge->indirect_info->polymorphic)
  	{
!           fprintf (f, "   Polymorphic indirect call of type ");
  	  print_generic_expr (f, edge->indirect_info->otr_type, TDF_SLIM);
  	  fprintf (f, " token:%i", (int) edge->indirect_info->otr_token);
  	}
        else
!         fprintf (f, "   Indirect call");
        edge->dump_edge_flags (f);
        if (edge->indirect_info->param_index != -1)
  	{
! 	  fprintf (f, " of param:%i", edge->indirect_info->param_index);
  	  if (edge->indirect_info->agg_contents)
! 	   fprintf (f, " loaded from %s %s at offset %i",
  		    edge->indirect_info->member_ptr ? "member ptr" : "aggregate",
  		    edge->indirect_info->by_ref ? "passed by reference":"",
  		    (int)edge->indirect_info->offset);
  	  if (edge->indirect_info->vptr_changed)
! 	    fprintf (f, " (vptr maybe changed)");
  	}
!       fprintf (f, " Num speculative call targets: %i",
  	       edge->indirect_info->num_speculative_call_targets);
-       fprintf (f, "\n");
        if (edge->indirect_info->polymorphic)
  	edge->indirect_info->context.dump (f);
      }
--- 2284,2309 ----
      {
        if (edge->indirect_info->polymorphic)
  	{
! 	  fprintf (f, "   Polymorphic indirect call of type ");
  	  print_generic_expr (f, edge->indirect_info->otr_type, TDF_SLIM);
  	  fprintf (f, " token:%i", (int) edge->indirect_info->otr_token);
  	}
        else
! 	fprintf (f, "   Indirect call");
        edge->dump_edge_flags (f);
        if (edge->indirect_info->param_index != -1)
  	{
! 	  fprintf (f, "of param:%i ", edge->indirect_info->param_index);
  	  if (edge->indirect_info->agg_contents)
! 	   fprintf (f, "loaded from %s %s at offset %i ",
  		    edge->indirect_info->member_ptr ? "member ptr" : "aggregate",
  		    edge->indirect_info->by_ref ? "passed by reference":"",
  		    (int)edge->indirect_info->offset);
  	  if (edge->indirect_info->vptr_changed)
! 	    fprintf (f, "(vptr maybe changed) ");
  	}
!       fprintf (f, "num speculative call targets: %i\n",
  	       edge->indirect_info->num_speculative_call_targets);
        if (edge->indirect_info->polymorphic)
  	edge->indirect_info->context.dump (f);
      }
*************** cgraph_function_possibly_inlined_p (tree
*** 2340,2358 ****
    return DECL_POSSIBLY_INLINED (decl);
  }
  
- /* cgraph_node is no longer nested function; update cgraph accordingly.  */
- void
- cgraph_node::unnest (void)
- {
-   cgraph_node **node2 = &origin->nested;
-   gcc_assert (origin);
- 
-   while (*node2 != this)
-     node2 = &(*node2)->next_nested;
-   *node2 = next_nested;
-   origin = NULL;
- }
- 
  /* Return function availability.  See cgraph.h for description of individual
     return values.  */
  enum availability
--- 2355,2360 ----
*************** cgraph_node::get_availability (symtab_no
*** 2365,2371 ****
  	ref = cref->inlined_to;
      }
    enum availability avail;
!   if (!analyzed)
      avail = AVAIL_NOT_AVAILABLE;
    else if (local)
      avail = AVAIL_LOCAL;
--- 2367,2373 ----
  	ref = cref->inlined_to;
      }
    enum availability avail;
!   if (!analyzed && !in_other_partition)
      avail = AVAIL_NOT_AVAILABLE;
    else if (local)
      avail = AVAIL_LOCAL;
*************** cgraph_node::get_availability (symtab_no
*** 2384,2391 ****
  
       Also comdat groups are always resolved in groups.  */
    else if ((this == ref && !has_aliases_p ())
!            || (ref && get_comdat_group ()
!                && get_comdat_group () == ref->get_comdat_group ()))
      avail = AVAIL_AVAILABLE;
    /* Inline functions are safe to be analyzed even if their symbol can
       be overwritten at runtime.  It is not meaningful to enforce any sane
--- 2386,2393 ----
  
       Also comdat groups are always resolved in groups.  */
    else if ((this == ref && !has_aliases_p ())
! 	   || (ref && get_comdat_group ()
! 	       && get_comdat_group () == ref->get_comdat_group ()))
      avail = AVAIL_AVAILABLE;
    /* Inline functions are safe to be analyzed even if their symbol can
       be overwritten at runtime.  It is not meaningful to enforce any sane
*************** cgraph_node::call_for_symbol_thunks_and_
*** 2453,2459 ****
        || (avail = get_availability ()) > AVAIL_INTERPOSABLE)
      {
        if (callback (this, data))
!         return true;
      }
    FOR_EACH_ALIAS (this, ref)
      {
--- 2455,2461 ----
        || (avail = get_availability ()) > AVAIL_INTERPOSABLE)
      {
        if (callback (this, data))
! 	return true;
      }
    FOR_EACH_ALIAS (this, ref)
      {
*************** cgraph_node::call_for_symbol_thunks_and_
*** 2468,2478 ****
    if (avail <= AVAIL_INTERPOSABLE)
      return false;
    for (e = callers; e; e = e->next_caller)
!     if (e->caller->thunk.thunk_p
  	&& (include_overwritable
  	    || e->caller->get_availability () > AVAIL_INTERPOSABLE)
  	&& !(exclude_virtual_thunks
! 	     && e->caller->thunk.virtual_offset_p))
        if (e->caller->call_for_symbol_thunks_and_aliases (callback, data,
  						       include_overwritable,
  						       exclude_virtual_thunks))
--- 2470,2480 ----
    if (avail <= AVAIL_INTERPOSABLE)
      return false;
    for (e = callers; e; e = e->next_caller)
!     if (e->caller->thunk
  	&& (include_overwritable
  	    || e->caller->get_availability () > AVAIL_INTERPOSABLE)
  	&& !(exclude_virtual_thunks
! 	     && thunk_info::get (e->caller)->virtual_offset_p))
        if (e->caller->call_for_symbol_thunks_and_aliases (callback, data,
  						       include_overwritable,
  						       exclude_virtual_thunks))
*************** set_nothrow_flag_1 (cgraph_node *node, b
*** 2546,2552 ****
  	set_nothrow_flag_1 (alias, nothrow, non_call, changed);
      }
    for (cgraph_edge *e = node->callers; e; e = e->next_caller)
!     if (e->caller->thunk.thunk_p
  	&& (!nothrow || e->caller->get_availability () > AVAIL_INTERPOSABLE))
        set_nothrow_flag_1 (e->caller, nothrow, non_call, changed);
  }
--- 2548,2554 ----
  	set_nothrow_flag_1 (alias, nothrow, non_call, changed);
      }
    for (cgraph_edge *e = node->callers; e; e = e->next_caller)
!     if (e->caller->thunk
  	&& (!nothrow || e->caller->get_availability () > AVAIL_INTERPOSABLE))
        set_nothrow_flag_1 (e->caller, nothrow, non_call, changed);
  }
*************** set_malloc_flag_1 (cgraph_node *node, bo
*** 2595,2601 ****
      }
  
    for (cgraph_edge *e = node->callers; e; e = e->next_caller)
!     if (e->caller->thunk.thunk_p
  	&& (!malloc_p || e->caller->get_availability () > AVAIL_INTERPOSABLE))
        set_malloc_flag_1 (e->caller, malloc_p, changed);
  }
--- 2597,2603 ----
      }
  
    for (cgraph_edge *e = node->callers; e; e = e->next_caller)
!     if (e->caller->thunk
  	&& (!malloc_p || e->caller->get_availability () > AVAIL_INTERPOSABLE))
        set_malloc_flag_1 (e->caller, malloc_p, changed);
  }
*************** set_const_flag_1 (cgraph_node *node, boo
*** 2648,2655 ****
      {
        if (TREE_READONLY (node->decl))
  	{
!           TREE_READONLY (node->decl) = 0;
!           DECL_LOOPING_CONST_OR_PURE_P (node->decl) = false;
  	  *changed = true;
  	}
      }
--- 2650,2657 ----
      {
        if (TREE_READONLY (node->decl))
  	{
! 	  TREE_READONLY (node->decl) = 0;
! 	  DECL_LOOPING_CONST_OR_PURE_P (node->decl) = false;
  	  *changed = true;
  	}
      }
*************** set_const_flag_1 (cgraph_node *node, boo
*** 2676,2689 ****
  	{
  	  if (!looping && DECL_LOOPING_CONST_OR_PURE_P (node->decl))
  	    {
!               DECL_LOOPING_CONST_OR_PURE_P (node->decl) = false;
  	      *changed = true;
  	    }
  	}
        else if (node->binds_to_current_def_p ())
  	{
  	  TREE_READONLY (node->decl) = true;
!           DECL_LOOPING_CONST_OR_PURE_P (node->decl) = looping;
  	  DECL_PURE_P (node->decl) = false;
  	  *changed = true;
  	}
--- 2678,2691 ----
  	{
  	  if (!looping && DECL_LOOPING_CONST_OR_PURE_P (node->decl))
  	    {
! 	      DECL_LOOPING_CONST_OR_PURE_P (node->decl) = false;
  	      *changed = true;
  	    }
  	}
        else if (node->binds_to_current_def_p ())
  	{
  	  TREE_READONLY (node->decl) = true;
! 	  DECL_LOOPING_CONST_OR_PURE_P (node->decl) = looping;
  	  DECL_PURE_P (node->decl) = false;
  	  *changed = true;
  	}
*************** set_const_flag_1 (cgraph_node *node, boo
*** 2695,2706 ****
  	  if (!DECL_PURE_P (node->decl))
  	    {
  	      DECL_PURE_P (node->decl) = true;
!               DECL_LOOPING_CONST_OR_PURE_P (node->decl) = looping;
  	      *changed = true;
  	    }
  	  else if (!looping && DECL_LOOPING_CONST_OR_PURE_P (node->decl))
  	    {
!               DECL_LOOPING_CONST_OR_PURE_P (node->decl) = false;
  	      *changed = true;
  	    }
  	}
--- 2697,2708 ----
  	  if (!DECL_PURE_P (node->decl))
  	    {
  	      DECL_PURE_P (node->decl) = true;
! 	      DECL_LOOPING_CONST_OR_PURE_P (node->decl) = looping;
  	      *changed = true;
  	    }
  	  else if (!looping && DECL_LOOPING_CONST_OR_PURE_P (node->decl))
  	    {
! 	      DECL_LOOPING_CONST_OR_PURE_P (node->decl) = false;
  	      *changed = true;
  	    }
  	}
*************** set_const_flag_1 (cgraph_node *node, boo
*** 2714,2727 ****
  	set_const_flag_1 (alias, set_const, looping, changed);
      }
    for (cgraph_edge *e = node->callers; e; e = e->next_caller)
!     if (e->caller->thunk.thunk_p
  	&& (!set_const || e->caller->get_availability () > AVAIL_INTERPOSABLE))
        {
  	/* Virtual thunks access virtual offset in the vtable, so they can
  	   only be pure, never const.  */
!         if (set_const
! 	    && (e->caller->thunk.virtual_offset_p
! 	        || !node->binds_to_current_def_p (e->caller)))
  	  *changed |= e->caller->set_pure_flag (true, looping);
  	else
  	  set_const_flag_1 (e->caller, set_const, looping, changed);
--- 2716,2729 ----
  	set_const_flag_1 (alias, set_const, looping, changed);
      }
    for (cgraph_edge *e = node->callers; e; e = e->next_caller)
!     if (e->caller->thunk
  	&& (!set_const || e->caller->get_availability () > AVAIL_INTERPOSABLE))
        {
  	/* Virtual thunks access virtual offset in the vtable, so they can
  	   only be pure, never const.  */
! 	if (set_const
! 	    && (thunk_info::get (e->caller)->virtual_offset_p
! 		|| !node->binds_to_current_def_p (e->caller)))
  	  *changed |= e->caller->set_pure_flag (true, looping);
  	else
  	  set_const_flag_1 (e->caller, set_const, looping, changed);
*************** set_pure_flag_1 (cgraph_node *node, void
*** 2791,2804 ****
      {
        if (!DECL_PURE_P (node->decl) && !TREE_READONLY (node->decl))
  	{
!           DECL_PURE_P (node->decl) = true;
!           DECL_LOOPING_CONST_OR_PURE_P (node->decl) = info->looping;
  	  info->changed = true;
  	}
        else if (DECL_LOOPING_CONST_OR_PURE_P (node->decl)
  	       && !info->looping)
  	{
!           DECL_LOOPING_CONST_OR_PURE_P (node->decl) = false;
  	  info->changed = true;
  	}
      }
--- 2793,2806 ----
      {
        if (!DECL_PURE_P (node->decl) && !TREE_READONLY (node->decl))
  	{
! 	  DECL_PURE_P (node->decl) = true;
! 	  DECL_LOOPING_CONST_OR_PURE_P (node->decl) = info->looping;
  	  info->changed = true;
  	}
        else if (DECL_LOOPING_CONST_OR_PURE_P (node->decl)
  	       && !info->looping)
  	{
! 	  DECL_LOOPING_CONST_OR_PURE_P (node->decl) = false;
  	  info->changed = true;
  	}
      }
*************** set_pure_flag_1 (cgraph_node *node, void
*** 2806,2813 ****
      {
        if (DECL_PURE_P (node->decl))
  	{
!           DECL_PURE_P (node->decl) = false;
!           DECL_LOOPING_CONST_OR_PURE_P (node->decl) = false;
  	  info->changed = true;
  	}
      }
--- 2808,2815 ----
      {
        if (DECL_PURE_P (node->decl))
  	{
! 	  DECL_PURE_P (node->decl) = false;
! 	  DECL_LOOPING_CONST_OR_PURE_P (node->decl) = false;
  	  info->changed = true;
  	}
      }
*************** cgraph_node::can_remove_if_no_direct_cal
*** 2961,2967 ****
        /* If function is not being inlined, we care only about
  	 references outside of the comdat group.  */
        if (!will_inline)
!         for (int i = 0; next->iterate_referring (i, ref); i++)
  	  if (ref->referring->get_comdat_group () != get_comdat_group ())
  	    return false;
      }
--- 2963,2969 ----
        /* If function is not being inlined, we care only about
  	 references outside of the comdat group.  */
        if (!will_inline)
! 	for (int i = 0; next->iterate_referring (i, ref); i++)
  	  if (ref->referring->get_comdat_group () != get_comdat_group ())
  	    return false;
      }
*************** collect_callers_of_node_1 (cgraph_node *
*** 3064,3071 ****
    if (avail > AVAIL_INTERPOSABLE)
      for (cs = node->callers; cs != NULL; cs = cs->next_caller)
        if (!cs->indirect_inlining_edge
! 	  && !cs->caller->thunk.thunk_p)
!         redirect_callers->safe_push (cs);
    return false;
  }
  
--- 3066,3073 ----
    if (avail > AVAIL_INTERPOSABLE)
      for (cs = node->callers; cs != NULL; cs = cs->next_caller)
        if (!cs->indirect_inlining_edge
! 	  && !cs->caller->thunk)
! 	redirect_callers->safe_push (cs);
    return false;
  }
  
*************** clone_of_p (cgraph_node *node, cgraph_no
*** 3095,3103 ****
        || node2->former_clone_of == node->decl)
      return true;
  
!   if (!node->thunk.thunk_p && !node->former_thunk_p ())
      {
!       while (node2 && node->decl != node2->decl)
  	node2 = node2->clone_of;
        return node2 != NULL;
      }
--- 3097,3107 ----
        || node2->former_clone_of == node->decl)
      return true;
  
!   if (!node->thunk && !node->former_thunk_p ())
      {
!       while (node2
! 	     && node->decl != node2->decl
! 	     && node->decl != node2->former_clone_of)
  	node2 = node2->clone_of;
        return node2 != NULL;
      }
*************** clone_of_p (cgraph_node *node, cgraph_no
*** 3105,3113 ****
    /* There are no virtual clones of thunks so check former_clone_of or if we
       might have skipped thunks because this adjustments are no longer
       necessary.  */
!   while (node->thunk.thunk_p || node->former_thunk_p ())
      {
!       if (!node->thunk.this_adjusting)
  	return false;
        /* In case of instrumented expanded thunks, which can have multiple calls
  	 in them, we do not know how to continue and just have to be
--- 3109,3117 ----
    /* There are no virtual clones of thunks so check former_clone_of or if we
       might have skipped thunks because this adjustments are no longer
       necessary.  */
!   while (node->thunk || node->former_thunk_p ())
      {
!       if (!thunk_info::get (node)->this_adjusting)
  	return false;
        /* In case of instrumented expanded thunks, which can have multiple calls
  	 in them, we do not know how to continue and just have to be
*************** clone_of_p (cgraph_node *node, cgraph_no
*** 3117,3124 ****
  	return true;
        node = node->callees->callee->ultimate_alias_target ();
  
!       if (!node2->clone.param_adjustments
! 	  || node2->clone.param_adjustments->first_param_intact_p ())
  	return false;
        if (node2->former_clone_of == node->decl
  	  || node2->former_clone_of == node->former_clone_of)
--- 3121,3129 ----
  	return true;
        node = node->callees->callee->ultimate_alias_target ();
  
!       clone_info *info = clone_info::get (node2);
!       if (!info || !info->param_adjustments
! 	  || info->param_adjustments->first_param_intact_p ())
  	return false;
        if (node2->former_clone_of == node->decl
  	  || node2->former_clone_of == node->former_clone_of)
*************** cgraph_node::verify_node (void)
*** 3649,3655 ****
        if (callees)
  	{
  	  error ("Alias has call edges");
!           error_found = true;
  	}
        for (i = 0; iterate_reference (i, ref); i++)
  	if (ref->use != IPA_REF_ALIAS)
--- 3654,3660 ----
        if (callees)
  	{
  	  error ("Alias has call edges");
! 	  error_found = true;
  	}
        for (i = 0; iterate_reference (i, ref); i++)
  	if (ref->use != IPA_REF_ALIAS)
*************** cgraph_node::verify_node (void)
*** 3671,3693 ****
  	}
      }
  
!   if (analyzed && thunk.thunk_p)
      {
        if (!callees)
  	{
  	  error ("No edge out of thunk node");
!           error_found = true;
  	}
        else if (callees->next_callee)
  	{
  	  error ("More than one edge out of thunk node");
!           error_found = true;
  	}
        if (gimple_has_body_p (decl) && !inlined_to)
!         {
  	  error ("Thunk is not supposed to have body");
!           error_found = true;
!         }
      }
    else if (analyzed && gimple_has_body_p (decl)
  	   && !TREE_ASM_WRITTEN (decl)
--- 3676,3698 ----
  	}
      }
  
!   if (analyzed && thunk)
      {
        if (!callees)
  	{
  	  error ("No edge out of thunk node");
! 	  error_found = true;
  	}
        else if (callees->next_callee)
  	{
  	  error ("More than one edge out of thunk node");
! 	  error_found = true;
  	}
        if (gimple_has_body_p (decl) && !inlined_to)
! 	{
  	  error ("Thunk is not supposed to have body");
! 	  error_found = true;
! 	}
      }
    else if (analyzed && gimple_has_body_p (decl)
  	   && !TREE_ASM_WRITTEN (decl)
*************** cgraph_node::verify_node (void)
*** 3790,3816 ****
  	}
      }
  
!   if (nested != NULL)
      {
!       for (cgraph_node *n = nested; n != NULL; n = n->next_nested)
  	{
! 	  if (n->origin == NULL)
! 	    {
! 	      error ("missing origin for a node in a nested list");
! 	      error_found = true;
! 	    }
! 	  else if (n->origin != this)
  	    {
! 	      error ("origin points to a different parent");
! 	      error_found = true;
! 	      break;
  	    }
  	}
!     }
!   if (next_nested != NULL && origin == NULL)
!     {
!       error ("missing origin for a node in a nested list");
!       error_found = true;
      }
  
    if (error_found)
--- 3795,3826 ----
  	}
      }
  
!   if (nested_function_info *info = nested_function_info::get (this))
      {
!       if (info->nested != NULL)
  	{
! 	  for (cgraph_node *n = info->nested; n != NULL;
! 	       n = next_nested_function (n))
  	    {
! 	      nested_function_info *ninfo = nested_function_info::get (n);
! 	      if (ninfo->origin == NULL)
! 		{
! 		  error ("missing origin for a node in a nested list");
! 		  error_found = true;
! 		}
! 	      else if (ninfo->origin != this)
! 		{
! 		  error ("origin points to a different parent");
! 		  error_found = true;
! 		  break;
! 		}
  	    }
  	}
!       if (info->next_nested != NULL && info->origin == NULL)
! 	{
! 	  error ("missing origin for a node in a nested list");
! 	  error_found = true;
! 	}
      }
  
    if (error_found)
*************** cgraph_node::function_symbol (enum avail
*** 3850,3856 ****
  {
    cgraph_node *node = ultimate_alias_target (availability, ref);
  
!   while (node->thunk.thunk_p)
      {
        enum availability a;
  
--- 3860,3866 ----
  {
    cgraph_node *node = ultimate_alias_target (availability, ref);
  
!   while (node->thunk)
      {
        enum availability a;
  
*************** cgraph_node::function_or_virtual_thunk_s
*** 3877,3883 ****
  {
    cgraph_node *node = ultimate_alias_target (availability, ref);
  
!   while (node->thunk.thunk_p && !node->thunk.virtual_offset_p)
      {
        enum availability a;
  
--- 3887,3893 ----
  {
    cgraph_node *node = ultimate_alias_target (availability, ref);
  
!   while (node->thunk && !thunk_info::get (node)->virtual_offset_p)
      {
        enum availability a;
  
*************** cgraph_node::function_or_virtual_thunk_s
*** 3891,3906 ****
  }
  
  /* When doing LTO, read cgraph_node's body from disk if it is not already
!    present.  */
  
  bool
! cgraph_node::get_untransformed_body (void)
  {
    lto_file_decl_data *file_data;
    const char *data, *name;
    size_t len;
    tree decl = this->decl;
  
    /* Check if body is already there.  Either we have gimple body or
       the function is thunk and in that case we set DECL_ARGUMENTS.  */
    if (DECL_ARGUMENTS (decl) || gimple_has_body_p (decl))
--- 3901,3927 ----
  }
  
  /* When doing LTO, read cgraph_node's body from disk if it is not already
!    present.  Also perform any necessary clone materializations.  */
  
  bool
! cgraph_node::get_untransformed_body ()
  {
    lto_file_decl_data *file_data;
    const char *data, *name;
    size_t len;
    tree decl = this->decl;
  
+   /* See if there is clone to be materialized.
+      (inline clones does not need materialization, but we can be seeing
+       an inline clone of real clone).  */
+   cgraph_node *p = this;
+   for (cgraph_node *c = clone_of; c; c = c->clone_of)
+     {
+       if (c->decl != decl)
+ 	p->materialize_clone ();
+       p = c;
+     }
+ 
    /* Check if body is already there.  Either we have gimple body or
       the function is thunk and in that case we set DECL_ARGUMENTS.  */
    if (DECL_ARGUMENTS (decl) || gimple_has_body_p (decl))
*************** cgraph_node::get_fun () const
*** 4014,4019 ****
--- 4035,4043 ----
  void
  cgraph_c_finalize (void)
  {
+   nested_function_info::release ();
+   thunk_info::release ();
+   clone_info::release ();
    symtab = NULL;
  
    x_cgraph_nodes_queue = NULL;
*************** bool
*** 4049,4055 ****
  cgraph_node::has_thunk_p (cgraph_node *node, void *)
  {
    for (cgraph_edge *e = node->callers; e; e = e->next_caller)
!     if (e->caller->thunk.thunk_p)
        return true;
    return false;
  }
--- 4073,4079 ----
  cgraph_node::has_thunk_p (cgraph_node *node, void *)
  {
    for (cgraph_edge *e = node->callers; e; e = e->next_caller)
!     if (e->caller->thunk)
        return true;
    return false;
  }
*************** cgraph_node::check_calls_comdat_local_p
*** 4121,4126 ****
--- 4145,4165 ----
    return false;
  }
  
+ /* Return true if this node represents a former, i.e. an expanded, thunk.  */
+ 
+ bool
+ cgraph_node::former_thunk_p (void)
+ {
+   if (thunk)
+     return false;
+   thunk_info *i = thunk_info::get (this);
+   if (!i)
+     return false;
+   gcc_checking_assert (i->fixed_offset || i->virtual_offset_p
+ 		       || i->indirect_offset);
+   return true;
+ }
+ 
  /* A stashed copy of "symtab" for use by selftest::symbol_table_test.
     This needs to be a global so that it can be a GC root, and thus
     prevent the stashed copy from being garbage-collected if the GC runs
diff -Nrcpad gcc-10.3.0/gcc/cgraph.h gcc-11.1.0/gcc/cgraph.h
*** gcc-10.3.0/gcc/cgraph.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cgraph.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Callgraph handling code.
!    Copyright (C) 2003-2020 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
--- 1,5 ----
  /* Callgraph handling code.
!    Copyright (C) 2003-2021 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
*************** public:
*** 221,227 ****
    /* Get number of references for this node.  */
    inline unsigned num_references (void)
    {
!     return ref_list.references ? ref_list.references->length () : 0;
    }
  
    /* Iterates I-th reference in the list, REF is also set.  */
--- 221,227 ----
    /* Get number of references for this node.  */
    inline unsigned num_references (void)
    {
!     return ref_list.references.length ();
    }
  
    /* Iterates I-th reference in the list, REF is also set.  */
*************** public:
*** 263,269 ****
      }
  
    /* Return section as string.  */
!   const char * get_section ()
      {
        if (!x_section)
  	return NULL;
--- 263,269 ----
      }
  
    /* Return section as string.  */
!   const char * get_section () const
      {
        if (!x_section)
  	return NULL;
*************** public:
*** 325,335 ****
--- 325,342 ----
    /* Set section for symbol and its aliases.  */
    void set_section (const char *section);
  
+   /* Like set_section, but copying the section name from another node.  */
+   void set_section (const symtab_node &other);
+ 
    /* Set section, do not recurse into aliases.
       When one wants to change section of symbol and its aliases,
       use set_section.  */
    void set_section_for_node (const char *section);
  
+   /* Like set_section_for_node, but copying the section name from another
+      node.  */
+   void set_section_for_node (const symtab_node &other);
+ 
    /* Set initialization priority to PRIORITY.  */
    void set_init_priority (priority_type priority);
  
*************** public:
*** 607,613 ****
    symtab_node *same_comdat_group;
  
    /* Vectors of referring and referenced entities.  */
!   ipa_ref_list ref_list;
  
    /* Alias target. May be either DECL pointer or ASSEMBLER_NAME pointer
       depending to what was known to frontend on the creation time.
--- 614,620 ----
    symtab_node *same_comdat_group;
  
    /* Vectors of referring and referenced entities.  */
!   ipa_ref_list GTY((skip)) ref_list;
  
    /* Alias target. May be either DECL pointer or ASSEMBLER_NAME pointer
       depending to what was known to frontend on the creation time.
*************** protected:
*** 634,640 ****
  
    /* Remove node from symbol table.  This function is not used directly, but via
       cgraph/varpool node removal routines.  */
!   void unregister (void);
  
    /* Return the initialization and finalization priority information for
       DECL.  If there is no previous priority information, a freshly
--- 641,647 ----
  
    /* Remove node from symbol table.  This function is not used directly, but via
       cgraph/varpool node removal routines.  */
!   void unregister (struct clone_info *);
  
    /* Return the initialization and finalization priority information for
       DECL.  If there is no previous priority information, a freshly
*************** protected:
*** 646,653 ****
  				      void *data,
  				      bool include_overwrite);
  private:
!   /* Worker for set_section.  */
!   static bool set_section (symtab_node *n, void *s);
  
    /* Worker for symtab_resolve_alias.  */
    static bool set_implicit_section (symtab_node *n, void *);
--- 653,661 ----
  				      void *data,
  				      bool include_overwrite);
  private:
!   /* Workers for set_section.  */
!   static bool set_section_from_string (symtab_node *n, void *s);
!   static bool set_section_from_node (symtab_node *n, void *o);
  
    /* Worker for symtab_resolve_alias.  */
    static bool set_implicit_section (symtab_node *n, void *);
*************** extern const char * const cgraph_availab
*** 684,735 ****
  extern const char * const ld_plugin_symbol_resolution_names[];
  extern const char * const tls_model_names[];
  
- /* Sub-structure of cgraph_node.  Holds information about thunk, used only for
-    same body aliases.
- 
-    Thunks are basically wrappers around methods which are introduced in case
-    of multiple inheritance in order to adjust the value of the "this" pointer
-    or of the returned value.
- 
-    In the case of this-adjusting thunks, each back-end can override the
-    can_output_mi_thunk/output_mi_thunk target hooks to generate a minimal thunk
-    (with a tail call for instance) directly as assembly.  For the default hook
-    or for the case where the can_output_mi_thunk hooks return false, the thunk
-    is gimplified and lowered using the regular machinery.  */
- 
- struct GTY(()) cgraph_thunk_info {
-   /* Offset used to adjust "this".  */
-   HOST_WIDE_INT fixed_offset;
- 
-   /* Offset in the virtual table to get the offset to adjust "this".  Valid iff
-      VIRTUAL_OFFSET_P is true.  */
-   HOST_WIDE_INT virtual_value;
- 
-   /* Offset from "this" to get the offset to adjust "this".  Zero means: this
-      offset is to be ignored.  */
-   HOST_WIDE_INT indirect_offset;
- 
-   /* Thunk target, i.e. the method that this thunk wraps.  Depending on the
-      TARGET_USE_LOCAL_THUNK_ALIAS_P macro, this may have to be a new alias.  */
-   tree alias;
- 
-   /* Nonzero for a "this" adjusting thunk and zero for a result adjusting
-      thunk.  */
-   bool this_adjusting;
- 
-   /* If true, this thunk is what we call a virtual thunk.  In this case:
-      * for this-adjusting thunks, after the FIXED_OFFSET based adjustment is
-        done, add to the result the offset found in the vtable at:
- 	 vptr + VIRTUAL_VALUE
-      * for result-adjusting thunks, the FIXED_OFFSET adjustment is done after
-        the virtual one.  */
-   bool virtual_offset_p;
- 
-   /* Set to true when alias node (the cgraph_node to which this struct belong)
-      is a thunk.  Access to any other fields is invalid if this is false.  */
-   bool thunk_p;
- };
- 
  /* Represent which DECL tree (or reference to such tree)
     will be replaced by another tree while versioning.  */
  struct GTY(()) ipa_replace_map
--- 692,697 ----
*************** struct GTY(()) ipa_replace_map
*** 740,766 ****
    int parm_num;
  };
  
- struct GTY(()) cgraph_clone_info
- {
-   /* Constants discovered by IPA-CP, i.e. which parameter should be replaced
-      with what.  */
-   vec<ipa_replace_map *, va_gc> *tree_map;
-   /* Parameter modification that IPA-SRA decided to perform.  */
-   ipa_param_adjustments *param_adjustments;
-   /* Lists of dummy-decl and offset pairs representing split formal parameters
-      in the caller.  Offsets of all new replacements are enumerated, those
-      coming from the same original parameter have the same dummy decl stored
-      along with them.
- 
-      Dummy decls sit in call statement arguments followed by new parameter
-      decls (or their SSA names) in between (caller) clone materialization and
-      call redirection.  Redirection then recognizes the dummy variable and
-      together with the stored offsets can reconstruct what exactly the new
-      parameter decls represent and can leave in place only those that the
-      callee expects.  */
-   vec<ipa_param_performed_split, va_gc> *performed_splits;
- };
- 
  enum cgraph_simd_clone_arg_type
  {
    SIMD_CLONE_ARG_TYPE_VECTOR,
--- 702,707 ----
*************** struct GTY(()) cgraph_simd_clone_arg {
*** 829,845 ****
  
  struct GTY(()) cgraph_simd_clone {
    /* Number of words in the SIMD lane associated with this clone.  */
!   unsigned int simdlen;
  
    /* Number of annotated function arguments in `args'.  This is
       usually the number of named arguments in FNDECL.  */
    unsigned int nargs;
  
    /* Max hardware vector size in bits for integral vectors.  */
!   unsigned int vecsize_int;
  
    /* Max hardware vector size in bits for floating point vectors.  */
!   unsigned int vecsize_float;
  
    /* Machine mode of the mask argument(s), if they are to be passed
       as bitmasks in integer argument(s).  VOIDmode if masks are passed
--- 770,786 ----
  
  struct GTY(()) cgraph_simd_clone {
    /* Number of words in the SIMD lane associated with this clone.  */
!   poly_uint64 simdlen;
  
    /* Number of annotated function arguments in `args'.  This is
       usually the number of named arguments in FNDECL.  */
    unsigned int nargs;
  
    /* Max hardware vector size in bits for integral vectors.  */
!   poly_uint64 vecsize_int;
  
    /* Max hardware vector size in bits for floating point vectors.  */
!   poly_uint64 vecsize_float;
  
    /* Machine mode of the mask argument(s), if they are to be passed
       as bitmasks in integer argument(s).  VOIDmode if masks are passed
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 924,937 ****
    /* Constructor.  */
    explicit cgraph_node (int uid)
      : symtab_node (SYMTAB_FUNCTION), callees (NULL), callers (NULL),
!       indirect_calls (NULL), origin (NULL), nested (NULL), next_nested (NULL),
        next_sibling_clone (NULL), prev_sibling_clone (NULL), clones (NULL),
        clone_of (NULL), call_site_hash (NULL), former_clone_of (NULL),
        simdclone (NULL), simd_clones (NULL), ipa_transforms_to_apply (vNULL),
!       inlined_to (NULL), rtl (NULL), clone (), thunk (),
        count (profile_count::uninitialized ()),
        count_materialization_scale (REG_BR_PROB_BASE), profile_id (0),
!       unit_id (0), tp_first_run (0), used_as_abstract_origin (false),
        lowered (false), process (false), frequency (NODE_FREQUENCY_NORMAL),
        only_called_at_startup (false), only_called_at_exit (false),
        tm_clone (false), dispatcher_function (false), calls_comdat_local (false),
--- 865,879 ----
    /* Constructor.  */
    explicit cgraph_node (int uid)
      : symtab_node (SYMTAB_FUNCTION), callees (NULL), callers (NULL),
!       indirect_calls (NULL),
        next_sibling_clone (NULL), prev_sibling_clone (NULL), clones (NULL),
        clone_of (NULL), call_site_hash (NULL), former_clone_of (NULL),
        simdclone (NULL), simd_clones (NULL), ipa_transforms_to_apply (vNULL),
!       inlined_to (NULL), rtl (NULL),
        count (profile_count::uninitialized ()),
        count_materialization_scale (REG_BR_PROB_BASE), profile_id (0),
!       unit_id (0), tp_first_run (0), thunk (false),
!       used_as_abstract_origin (false),
        lowered (false), process (false), frequency (NODE_FREQUENCY_NORMAL),
        only_called_at_startup (false), only_called_at_exit (false),
        tm_clone (false), dispatcher_function (false), calls_comdat_local (false),
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 940,946 ****
        split_part (false), indirect_call_target (false), local (false),
        versionable (false), can_change_signature (false),
        redefined_extern_inline (false), tm_may_enter_irr (false),
!       ipcp_clone (false), m_uid (uid), m_summary_id (-1)
    {}
  
    /* Remove the node from cgraph and all inline clones inlined into it.
--- 882,889 ----
        split_part (false), indirect_call_target (false), local (false),
        versionable (false), can_change_signature (false),
        redefined_extern_inline (false), tm_may_enter_irr (false),
!       ipcp_clone (false), declare_variant_alt (false),
!       calls_declare_variant_alt (false), m_uid (uid), m_summary_id (-1)
    {}
  
    /* Remove the node from cgraph and all inline clones inlined into it.
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 1017,1023 ****
  
    /* cgraph node being removed from symbol table; see if its entry can be
     replaced by other inline clone.  */
!   cgraph_node *find_replacement (void);
  
    /* Create a new cgraph node which is the new version of
       callgraph node.  REDIRECT_CALLERS holds the callers
--- 960,966 ----
  
    /* cgraph node being removed from symbol table; see if its entry can be
     replaced by other inline clone.  */
!   cgraph_node *find_replacement (struct clone_info *);
  
    /* Create a new cgraph node which is the new version of
       callgraph node.  REDIRECT_CALLERS holds the callers
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 1080,1086 ****
  
    /* Add thunk alias into callgraph.  The alias declaration is ALIAS and it
       aliases DECL with an adjustments made into the first parameter.
!      See comments in struct cgraph_thunk_info for detail on the parameters.  */
    cgraph_node * create_thunk (tree alias, tree, bool this_adjusting,
  			      HOST_WIDE_INT fixed_offset,
  			      HOST_WIDE_INT virtual_value,
--- 1023,1029 ----
  
    /* Add thunk alias into callgraph.  The alias declaration is ALIAS and it
       aliases DECL with an adjustments made into the first parameter.
!      See comments in struct symtab-thunks.h for detail on the parameters.  */
    cgraph_node * create_thunk (tree alias, tree, bool this_adjusting,
  			      HOST_WIDE_INT fixed_offset,
  			      HOST_WIDE_INT virtual_value,
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 1101,1113 ****
    cgraph_node *ultimate_alias_target (availability *availability = NULL,
  				      symtab_node *ref = NULL);
  
-   /* Expand thunk NODE to gimple if possible.
-      When FORCE_GIMPLE_THUNK is true, gimple thunk is created and
-      no assembler is produced.
-      When OUTPUT_ASM_THUNK is true, also produce assembler for
-      thunks that are not lowered.  */
-   bool expand_thunk (bool output_asm_thunks, bool force_gimple_thunk);
- 
    /*  Call expand_thunk on all callers that are thunks and analyze those
        nodes that were expanded.  */
    void expand_all_artificial_thunks ();
--- 1044,1049 ----
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 1147,1158 ****
  
    /* When doing LTO, read cgraph_node's body from disk if it is not already
       present.  */
!   bool get_untransformed_body (void);
  
    /* Prepare function body.  When doing LTO, read cgraph_node's body from disk 
       if it is not already present.  When some IPA transformations are scheduled,
       apply them.  */
!   bool get_body (void);
  
    /* Release memory used to represent body of function.
       Use this only for functions that are released before being translated to
--- 1083,1096 ----
  
    /* When doing LTO, read cgraph_node's body from disk if it is not already
       present.  */
!   bool get_untransformed_body ();
  
    /* Prepare function body.  When doing LTO, read cgraph_node's body from disk 
       if it is not already present.  When some IPA transformations are scheduled,
       apply them.  */
!   bool get_body ();
! 
!   void materialize_clone (void);
  
    /* Release memory used to represent body of function.
       Use this only for functions that are released before being translated to
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 1163,1171 ****
    /* Return the DECL_STRUCT_FUNCTION of the function.  */
    struct function *get_fun () const;
  
-   /* cgraph_node is no longer nested function; update cgraph accordingly.  */
-   void unnest (void);
- 
    /* Bring cgraph node local.  */
    void make_local (void);
  
--- 1101,1106 ----
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 1327,1340 ****
    inline bool has_gimple_body_p (void);
  
    /* Return true if this node represents a former, i.e. an expanded, thunk.  */
!   inline bool former_thunk_p (void);
  
    /* Check if function calls comdat local.  This is used to recompute
       calls_comdat_local flag after function transformations.  */
    bool check_calls_comdat_local_p ();
  
    /* Return true if function should be optimized for size.  */
!   bool optimize_for_size_p (void);
  
    /* Dump the callgraph to file F.  */
    static void dump_cgraph (FILE *f);
--- 1262,1275 ----
    inline bool has_gimple_body_p (void);
  
    /* Return true if this node represents a former, i.e. an expanded, thunk.  */
!   bool former_thunk_p (void);
  
    /* Check if function calls comdat local.  This is used to recompute
       calls_comdat_local flag after function transformations.  */
    bool check_calls_comdat_local_p ();
  
    /* Return true if function should be optimized for size.  */
!   enum optimize_size_level optimize_for_size_p (void);
  
    /* Dump the callgraph to file F.  */
    static void dump_cgraph (FILE *f);
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 1438,1450 ****
    /* List of edges representing indirect calls with a yet undetermined
       callee.  */
    cgraph_edge *indirect_calls;
-   /* For nested functions points to function the node is nested in.  */
-   cgraph_node *origin;
-   /* Points to first nested function, if any.  */
-   cgraph_node *nested;
-   /* Pointer to the next function with same origin, if any.  */
-   cgraph_node *next_nested;
-   /* Pointer to the next clone.  */
    cgraph_node *next_sibling_clone;
    cgraph_node *prev_sibling_clone;
    cgraph_node *clones;
--- 1373,1378 ----
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 1464,1478 ****
    /* Interprocedural passes scheduled to have their transform functions
       applied next time we execute local pass on them.  We maintain it
       per-function in order to allow IPA passes to introduce new functions.  */
!   vec<ipa_opt_pass> GTY((skip)) ipa_transforms_to_apply;
  
    /* For inline clones this points to the function they will be
       inlined into.  */
    cgraph_node *inlined_to;
  
    struct cgraph_rtl_info *rtl;
-   cgraph_clone_info clone;
-   cgraph_thunk_info thunk;
  
    /* Expected number of executions: calculated in profile.c.  */
    profile_count count;
--- 1392,1404 ----
    /* Interprocedural passes scheduled to have their transform functions
       applied next time we execute local pass on them.  We maintain it
       per-function in order to allow IPA passes to introduce new functions.  */
!   vec<ipa_opt_pass, va_heap, vl_ptr> GTY((skip)) ipa_transforms_to_apply;
  
    /* For inline clones this points to the function they will be
       inlined into.  */
    cgraph_node *inlined_to;
  
    struct cgraph_rtl_info *rtl;
  
    /* Expected number of executions: calculated in profile.c.  */
    profile_count count;
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 1486,1491 ****
--- 1412,1419 ----
    /* Time profiler: first run of function.  */
    int tp_first_run;
  
+   /* True when symbol is a thunk.  */
+   unsigned thunk : 1;
    /* Set when decl is an abstract function pointed to by the
       ABSTRACT_DECL_ORIGIN of a reachable function.  */
    unsigned used_as_abstract_origin : 1;
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 1542,1547 ****
--- 1470,1480 ----
    unsigned tm_may_enter_irr : 1;
    /* True if this was a clone created by ipa-cp.  */
    unsigned ipcp_clone : 1;
+   /* True if this is the deferred declare variant resolution artificial
+      function.  */
+   unsigned declare_variant_alt : 1;
+   /* True if the function calls declare_variant_alt functions.  */
+   unsigned calls_declare_variant_alt : 1;
  
  private:
    /* Unique id of the node.  */
*************** private:
*** 2019,2024 ****
--- 1952,1960 ----
    /* Output flags of edge to a file F.  */
    void dump_edge_flags (FILE *f);
  
+   /* Dump edge to stderr.  */
+   void DEBUG_FUNCTION debug (void);
+ 
    /* Verify that call graph edge corresponds to DECL from the associated
       statement.  Return true if the verification should fail.  */
    bool verify_corresponds_to_fndecl (tree decl);
*************** struct asmname_hasher : ggc_ptr_hash <sy
*** 2243,2248 ****
--- 2179,2194 ----
    static bool equal (symtab_node *n, const_tree t);
  };
  
+ /* Core summaries maintained about symbols.  */
+ 
+ struct thunk_info;
+ template <class T> class function_summary;
+ typedef function_summary <thunk_info *> thunk_summary;
+ 
+ struct clone_info;
+ template <class T> class function_summary;
+ typedef function_summary <clone_info *> clone_summary;
+ 
  class GTY((tag ("SYMTAB"))) symbol_table
  {
  public:
*************** public:
*** 2259,2264 ****
--- 2205,2211 ----
    function_flags_ready (false), cpp_implicit_aliases_done (false),
    section_hash (NULL), assembler_name_hash (NULL), init_priority_hash (NULL),
    dump_file (NULL), ipa_clones_dump_file (NULL), cloned_nodes (),
+   m_thunks (NULL), m_clones (NULL),
    m_first_edge_removal_hook (NULL), m_first_cgraph_removal_hook (NULL),
    m_first_edge_duplicated_hook (NULL), m_first_cgraph_duplicated_hook (NULL),
    m_first_cgraph_insertion_hook (NULL), m_first_varpool_insertion_hook (NULL),
*************** public:
*** 2290,2302 ****
       functions inserted into callgraph already at construction time.  */
    void process_new_functions (void);
  
-   /* Once all functions from compilation unit are in memory, produce all clones
-      and update all calls.  We might also do this on demand if we don't want to
-      bring all functions to memory prior compilation, but current WHOPR
-      implementation does that and it is bit easier to keep everything right
-      in this order.  */
-   void materialize_all_clones (void);
- 
    /* Register a symbol NODE.  */
    inline void register_symbol (symtab_node *node);
  
--- 2237,2242 ----
*************** public:
*** 2547,2552 ****
--- 2487,2498 ----
  
    hash_set <const cgraph_node *> GTY ((skip)) cloned_nodes;
  
+   /* Thunk annotations.  */
+   thunk_summary *m_thunks;
+ 
+   /* Virtual clone annotations.  */
+   clone_summary *m_clones;
+ 
  private:
    /* Allocate a cgraph_edge structure and fill it with data according to the
       parameters of which only CALLEE can be NULL (when creating an indirect
*************** cgraph_inline_failed_type_t cgraph_inlin
*** 2621,2626 ****
--- 2567,2575 ----
  void cgraphunit_c_finalize (void);
  int tp_first_run_node_cmp (const void *pa, const void *pb);
  
+ /* In symtab-thunks.cc  */
+ void symtab_thunks_cc_finalize (void);
+ 
  /*  Initialize datastructures so DECL is a function in lowered gimple form.
      IN_SSA is true if the gimple is in SSA.  */
  basic_block init_lowered_empty_function (tree, bool, profile_count);
*************** symtab_node::next_defined_symbol (void)
*** 2749,2755 ****
  inline ipa_ref *
  symtab_node::iterate_reference (unsigned i, ipa_ref *&ref)
  {
!   vec_safe_iterate (ref_list.references, i, &ref);
  
    return ref;
  }
--- 2698,2704 ----
  inline ipa_ref *
  symtab_node::iterate_reference (unsigned i, ipa_ref *&ref)
  {
!   ref_list.references.iterate (i, &ref);
  
    return ref;
  }
*************** symbol_table::next_function_with_gimple_
*** 3102,3119 ****
  inline bool
  cgraph_node::has_gimple_body_p (void)
  {
!   return definition && !thunk.thunk_p && !alias;
! }
! 
! /* Return true if this node represents a former, i.e. an expanded, thunk.  */
! 
! inline bool
! cgraph_node::former_thunk_p (void)
! {
!   return (!thunk.thunk_p
! 	  && (thunk.fixed_offset
! 	      || thunk.virtual_offset_p
! 	      || thunk.indirect_offset));
  }
  
  /* Walk all functions with body defined.  */
--- 3051,3057 ----
  inline bool
  cgraph_node::has_gimple_body_p (void)
  {
!   return definition && !thunk && !alias;
  }
  
  /* Walk all functions with body defined.  */
*************** cgraph_node::mark_force_output (void)
*** 3386,3400 ****
  
  /* Return true if function should be optimized for size.  */
  
! inline bool
  cgraph_node::optimize_for_size_p (void)
  {
    if (opt_for_fn (decl, optimize_size))
!     return true;
    if (frequency == NODE_FREQUENCY_UNLIKELY_EXECUTED)
!     return true;
    else
!     return false;
  }
  
  /* Return symtab_node for NODE or create one if it is not present
--- 3324,3340 ----
  
  /* Return true if function should be optimized for size.  */
  
! inline enum optimize_size_level
  cgraph_node::optimize_for_size_p (void)
  {
    if (opt_for_fn (decl, optimize_size))
!     return OPTIMIZE_SIZE_MAX;
!   if (count == profile_count::zero ())
!     return OPTIMIZE_SIZE_MAX;
    if (frequency == NODE_FREQUENCY_UNLIKELY_EXECUTED)
!     return OPTIMIZE_SIZE_BALANCED;
    else
!     return OPTIMIZE_SIZE_NO;
  }
  
  /* Return symtab_node for NODE or create one if it is not present
diff -Nrcpad gcc-10.3.0/gcc/cgraphbuild.c gcc-11.1.0/gcc/cgraphbuild.c
*** gcc-10.3.0/gcc/cgraphbuild.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cgraphbuild.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Callgraph construction.
!    Copyright (C) 2003-2020 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
--- 1,5 ----
  /* Callgraph construction.
!    Copyright (C) 2003-2021 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/cgraphclones.c gcc-11.1.0/gcc/cgraphclones.c
*** gcc-10.3.0/gcc/cgraphclones.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cgraphclones.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Callgraph clones
!    Copyright (C) 2003-2020 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
--- 1,5 ----
  /* Callgraph clones
!    Copyright (C) 2003-2021 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 85,90 ****
--- 85,92 ----
  #include "tree-vrp.h"
  #include "ipa-prop.h"
  #include "ipa-fnsummary.h"
+ #include "symtab-thunks.h"
+ #include "symtab-clones.h"
  
  /* Create clone of edge in the node N represented by CALL_EXPR
     the callgraph.  */
*************** duplicate_thunk_for_node (cgraph_node *t
*** 183,215 ****
    cgraph_node *new_thunk, *thunk_of;
    thunk_of = thunk->callees->callee->ultimate_alias_target ();
  
!   if (thunk_of->thunk.thunk_p)
      node = duplicate_thunk_for_node (thunk_of, node);
  
    if (!DECL_ARGUMENTS (thunk->decl))
      thunk->get_untransformed_body ();
  
    cgraph_edge *cs;
    for (cs = node->callers; cs; cs = cs->next_caller)
!     if (cs->caller->thunk.thunk_p
! 	&& cs->caller->thunk.fixed_offset == thunk->thunk.fixed_offset
! 	&& cs->caller->thunk.virtual_value == thunk->thunk.virtual_value
! 	&& cs->caller->thunk.indirect_offset == thunk->thunk.indirect_offset
! 	&& cs->caller->thunk.this_adjusting == thunk->thunk.this_adjusting
! 	&& cs->caller->thunk.virtual_offset_p == thunk->thunk.virtual_offset_p)
!       return cs->caller;
  
    tree new_decl;
!   if (node->clone.param_adjustments)
      {
        /* We do not need to duplicate this_adjusting thunks if we have removed
  	 this.  */
!       if (thunk->thunk.this_adjusting
! 	  && !node->clone.param_adjustments->first_param_intact_p ())
  	return node;
  
        new_decl = copy_node (thunk->decl);
!       ipa_param_body_adjustments body_adj (node->clone.param_adjustments,
  					   new_decl);
        body_adj.modify_formal_parameters ();
      }
--- 185,218 ----
    cgraph_node *new_thunk, *thunk_of;
    thunk_of = thunk->callees->callee->ultimate_alias_target ();
  
!   if (thunk_of->thunk)
      node = duplicate_thunk_for_node (thunk_of, node);
  
    if (!DECL_ARGUMENTS (thunk->decl))
      thunk->get_untransformed_body ();
  
+   thunk_info *i = thunk_info::get (thunk);
    cgraph_edge *cs;
    for (cs = node->callers; cs; cs = cs->next_caller)
!     if (cs->caller->thunk)
!       {
! 	thunk_info *i2 = thunk_info::get (cs->caller);
! 	if (*i2 == *i)
! 	  return cs->caller;
!       }
  
    tree new_decl;
!   clone_info *info = clone_info::get (node);
!   if (info && info->param_adjustments)
      {
        /* We do not need to duplicate this_adjusting thunks if we have removed
  	 this.  */
!       if (i->this_adjusting
! 	  && !info->param_adjustments->first_param_intact_p ())
  	return node;
  
        new_decl = copy_node (thunk->decl);
!       ipa_param_body_adjustments body_adj (info->param_adjustments,
  					   new_decl);
        body_adj.modify_formal_parameters ();
      }
*************** duplicate_thunk_for_node (cgraph_node *t
*** 236,242 ****
    new_thunk->thunk = thunk->thunk;
    new_thunk->unique_name = in_lto_p;
    new_thunk->former_clone_of = thunk->decl;
!   new_thunk->clone.param_adjustments = node->clone.param_adjustments;
    new_thunk->unit_id = thunk->unit_id;
    new_thunk->merged_comdat = thunk->merged_comdat;
    new_thunk->merged_extern_inline = thunk->merged_extern_inline;
--- 239,247 ----
    new_thunk->thunk = thunk->thunk;
    new_thunk->unique_name = in_lto_p;
    new_thunk->former_clone_of = thunk->decl;
!   if (info && info->param_adjustments)
!     clone_info::get_create (new_thunk)->param_adjustments
! 	   = info->param_adjustments;
    new_thunk->unit_id = thunk->unit_id;
    new_thunk->merged_comdat = thunk->merged_comdat;
    new_thunk->merged_extern_inline = thunk->merged_extern_inline;
*************** void
*** 256,262 ****
  cgraph_edge::redirect_callee_duplicating_thunks (cgraph_node *n)
  {
    cgraph_node *orig_to = callee->ultimate_alias_target ();
!   if (orig_to->thunk.thunk_p)
      n = duplicate_thunk_for_node (orig_to, n);
  
    redirect_callee (n);
--- 261,267 ----
  cgraph_edge::redirect_callee_duplicating_thunks (cgraph_node *n)
  {
    cgraph_node *orig_to = callee->ultimate_alias_target ();
!   if (orig_to->thunk)
      n = duplicate_thunk_for_node (orig_to, n);
  
    redirect_callee (n);
*************** cgraph_node::expand_all_artificial_thunk
*** 270,283 ****
  {
    cgraph_edge *e;
    for (e = callers; e;)
!     if (e->caller->thunk.thunk_p)
        {
  	cgraph_node *thunk = e->caller;
  
  	e = e->next_caller;
! 	if (thunk->expand_thunk (false, false))
  	  {
! 	    thunk->thunk.thunk_p = false;
  	    thunk->analyze ();
  	    ipa_analyze_node (thunk);
  	    inline_analyze_function (thunk);
--- 275,288 ----
  {
    cgraph_edge *e;
    for (e = callers; e;)
!     if (e->caller->thunk)
        {
  	cgraph_node *thunk = e->caller;
  
  	e = e->next_caller;
! 	if (expand_thunk (thunk, false, false))
  	  {
! 	    thunk->thunk = false;
  	    thunk->analyze ();
  	    ipa_analyze_node (thunk);
  	    inline_analyze_function (thunk);
*************** cgraph_node::create_clone (tree new_decl
*** 382,394 ****
      }
    new_node->decl = new_decl;
    new_node->register_symbol ();
-   new_node->origin = origin;
    new_node->lto_file_data = lto_file_data;
-   if (new_node->origin)
-     {
-       new_node->next_nested = new_node->origin->nested;
-       new_node->origin->nested = new_node;
-     }
    new_node->analyzed = analyzed;
    new_node->definition = definition;
    new_node->versionable = versionable;
--- 387,393 ----
*************** cgraph_node::create_clone (tree new_decl
*** 408,420 ****
    new_node->unit_id = unit_id;
    new_node->merged_comdat = merged_comdat;
    new_node->merged_extern_inline = merged_extern_inline;
  
    if (param_adjustments)
!     new_node->clone.param_adjustments = param_adjustments;
!   else
!     new_node->clone.param_adjustments = clone.param_adjustments;
!   new_node->clone.tree_map = NULL;
!   new_node->clone.performed_splits = vec_safe_copy (clone.performed_splits);
    new_node->split_part = split_part;
  
    FOR_EACH_VEC_ELT (redirect_callers, i, e)
--- 407,422 ----
    new_node->unit_id = unit_id;
    new_node->merged_comdat = merged_comdat;
    new_node->merged_extern_inline = merged_extern_inline;
+   clone_info *info = clone_info::get (this);
  
    if (param_adjustments)
!     clone_info::get_create (new_node)->param_adjustments = param_adjustments;
!   else if (info && info->param_adjustments)
!     clone_info::get_create (new_node)->param_adjustments
! 	 = info->param_adjustments;
!   if (info && info->performed_splits)
!     clone_info::get_create (new_node)->performed_splits
! 	 = vec_safe_copy (info->performed_splits);
    new_node->split_part = split_part;
  
    FOR_EACH_VEC_ELT (redirect_callers, i, e)
*************** cgraph_node::create_virtual_clone (vec<c
*** 621,629 ****
       ABI support for this.  */
    set_new_clone_decl_and_node_flags (new_node);
    new_node->ipcp_clone = ipcp_clone;
!   new_node->clone.tree_map = tree_map;
    if (!implicit_section)
!     new_node->set_section (get_section ());
  
    /* Clones of global symbols or symbols with unique names are unique.  */
    if ((TREE_PUBLIC (old_decl)
--- 623,632 ----
       ABI support for this.  */
    set_new_clone_decl_and_node_flags (new_node);
    new_node->ipcp_clone = ipcp_clone;
!   if (tree_map)
!     clone_info::get_create (new_node)->tree_map = tree_map;
    if (!implicit_section)
!     new_node->set_section (*this);
  
    /* Clones of global symbols or symbols with unique names are unique.  */
    if ((TREE_PUBLIC (old_decl)
*************** cgraph_node::create_virtual_clone (vec<c
*** 645,653 ****
  }
  
  /* callgraph node being removed from symbol table; see if its entry can be
!    replaced by other inline clone.  */
  cgraph_node *
! cgraph_node::find_replacement (void)
  {
    cgraph_node *next_inline_clone, *replacement;
  
--- 648,657 ----
  }
  
  /* callgraph node being removed from symbol table; see if its entry can be
!    replaced by other inline clone. 
!    INFO is clone info to attach to the new root.  */
  cgraph_node *
! cgraph_node::find_replacement (clone_info *info)
  {
    cgraph_node *next_inline_clone, *replacement;
  
*************** cgraph_node::find_replacement (void)
*** 687,693 ****
        clones = NULL;
  
        /* Copy clone info.  */
!       next_inline_clone->clone = clone;
  
        /* Now place it into clone tree at same level at NODE.  */
        next_inline_clone->clone_of = clone_of;
--- 691,698 ----
        clones = NULL;
  
        /* Copy clone info.  */
!       if (info)
! 	*clone_info::get_create (next_inline_clone) = *info;
  
        /* Now place it into clone tree at same level at NODE.  */
        next_inline_clone->clone_of = clone_of;
*************** cgraph_node::create_edge_including_clone
*** 818,824 ****
    if (node)
      while (node != this)
        /* Thunk clones do not get updated while copying inline function body.  */
!       if (!node->thunk.thunk_p)
  	{
  	  cgraph_edge *edge = node->get_edge (old_stmt);
  
--- 823,829 ----
    if (node)
      while (node != this)
        /* Thunk clones do not get updated while copying inline function body.  */
!       if (!node->thunk)
  	{
  	  cgraph_edge *edge = node->get_edge (old_stmt);
  
*************** cgraph_node::create_version_clone_with_b
*** 1055,1061 ****
    new_version_node->local = 1;
    new_version_node->lowered = true;
    if (!implicit_section)
!     new_version_node->set_section (get_section ());
    /* Clones of global symbols or symbols with unique names are unique.  */
    if ((TREE_PUBLIC (old_decl)
         && !DECL_EXTERNAL (old_decl)
--- 1060,1066 ----
    new_version_node->local = 1;
    new_version_node->lowered = true;
    if (!implicit_section)
!     new_version_node->set_section (*this);
    /* Clones of global symbols or symbols with unique names are unique.  */
    if ((TREE_PUBLIC (old_decl)
         && !DECL_EXTERNAL (old_decl)
*************** void cgraph_node::remove_from_clone_tree
*** 1089,1202 ****
  
  /* Given virtual clone, turn it into actual clone.  */
  
- static void
- cgraph_materialize_clone (cgraph_node *node)
- {
-   bitmap_obstack_initialize (NULL);
-   node->former_clone_of = node->clone_of->decl;
-   if (node->clone_of->former_clone_of)
-     node->former_clone_of = node->clone_of->former_clone_of;
-   /* Copy the OLD_VERSION_NODE function tree to the new version.  */
-   tree_function_versioning (node->clone_of->decl, node->decl,
- 			    node->clone.tree_map, node->clone.param_adjustments,
- 			    true, NULL, NULL);
-   if (symtab->dump_file)
-     {
-       dump_function_to_file (node->clone_of->decl, symtab->dump_file,
- 			     dump_flags);
-       dump_function_to_file (node->decl, symtab->dump_file, dump_flags);
-     }
- 
-   cgraph_node *clone_of = node->clone_of;
-   /* Function is no longer clone.  */
-   node->remove_from_clone_tree ();
-   if (!clone_of->analyzed && !clone_of->clones)
-     {
-       clone_of->release_body ();
-       clone_of->remove_callees ();
-       clone_of->remove_all_references ();
-     }
-   bitmap_obstack_release (NULL);
- }
- 
- /* Once all functions from compilation unit are in memory, produce all clones
-    and update all calls.  We might also do this on demand if we don't want to
-    bring all functions to memory prior compilation, but current WHOPR
-    implementation does that and it is a bit easier to keep everything right in
-    this order.  */
- 
  void
! symbol_table::materialize_all_clones (void)
  {
!   cgraph_node *node;
!   bool stabilized = false;
!   
! 
    if (symtab->dump_file)
-     fprintf (symtab->dump_file, "Materializing clones\n");
- 
-   cgraph_node::checking_verify_cgraph_nodes ();
- 
-   /* We can also do topological order, but number of iterations should be
-      bounded by number of IPA passes since single IPA pass is probably not
-      going to create clones of clones it created itself.  */
-   while (!stabilized)
      {
!       stabilized = true;
!       FOR_EACH_FUNCTION (node)
          {
! 	  if (node->clone_of && node->decl != node->clone_of->decl
! 	      && !gimple_has_body_p (node->decl))
  	    {
! 	      if (!node->clone_of->clone_of)
! 		node->clone_of->get_untransformed_body ();
! 	      if (gimple_has_body_p (node->clone_of->decl))
! 	        {
! 		  if (symtab->dump_file)
! 		    {
! 		      fprintf (symtab->dump_file, "cloning %s to %s\n",
! 			       node->clone_of->dump_name (),
! 			       node->dump_name ());
! 		      if (node->clone.tree_map)
! 		        {
! 			  unsigned int i;
! 			  fprintf (symtab->dump_file, "   replace map: ");
! 			  for (i = 0;
! 			       i < vec_safe_length (node->clone.tree_map);
! 			       i++)
! 			    {
! 			      ipa_replace_map *replace_info;
! 			      replace_info = (*node->clone.tree_map)[i];
! 			      fprintf (symtab->dump_file, "%i -> ",
! 				       (*node->clone.tree_map)[i]->parm_num);
! 			      print_generic_expr (symtab->dump_file,
! 						  replace_info->new_tree);
! 			    }
! 			  fprintf (symtab->dump_file, "\n");
! 			}
! 		      if (node->clone.param_adjustments)
! 			node->clone.param_adjustments->dump (symtab->dump_file);
! 		    }
! 		  cgraph_materialize_clone (node);
! 		  stabilized = false;
! 	        }
  	    }
  	}
      }
!   FOR_EACH_FUNCTION (node)
!     if (!node->analyzed && node->callees)
!       {
! 	node->remove_callees ();
! 	node->remove_all_references ();
!       }
!     else
!       node->clear_stmts_in_references ();
    if (symtab->dump_file)
!     fprintf (symtab->dump_file, "Materialization Call site updates done.\n");
! 
!   cgraph_node::checking_verify_cgraph_nodes ();
  
!   symtab->remove_unreachable_nodes (symtab->dump_file);
  }
  
  #include "gt-cgraphclones.h"
--- 1094,1149 ----
  
  /* Given virtual clone, turn it into actual clone.  */
  
  void
! cgraph_node::materialize_clone ()
  {
!   clone_info *info = clone_info::get (this);
!   clone_of->get_untransformed_body ();
!   former_clone_of = clone_of->decl;
!   if (clone_of->former_clone_of)
!     former_clone_of = clone_of->former_clone_of;
    if (symtab->dump_file)
      {
!       fprintf (symtab->dump_file, "cloning %s to %s\n",
! 	       clone_of->dump_name (),
! 	       dump_name ());
!       if (info && info->tree_map)
          {
! 	  fprintf (symtab->dump_file, "    replace map:");
! 	  for (unsigned int i = 0;
! 	       i < vec_safe_length (info->tree_map);
! 	       i++)
  	    {
! 	      ipa_replace_map *replace_info;
! 	      replace_info = (*info->tree_map)[i];
! 	      fprintf (symtab->dump_file, "%s %i -> ",
! 		       i ? "," : "", replace_info->parm_num);
! 	      print_generic_expr (symtab->dump_file,
! 				  replace_info->new_tree);
  	    }
+ 	  fprintf (symtab->dump_file, "\n");
  	}
+       if (info && info->param_adjustments)
+ 	info->param_adjustments->dump (symtab->dump_file);
      }
!   clear_stmts_in_references ();
!   /* Copy the OLD_VERSION_NODE function tree to the new version.  */
!   tree_function_versioning (clone_of->decl, decl,
! 			    info ? info->tree_map : NULL,
! 			    info ? info->param_adjustments : NULL,
! 			    true, NULL, NULL);
    if (symtab->dump_file)
!     {
!       dump_function_to_file (clone_of->decl, symtab->dump_file,
! 			     dump_flags);
!       dump_function_to_file (decl, symtab->dump_file, dump_flags);
!     }
  
!   cgraph_node *this_clone_of = clone_of;
!   /* Function is no longer clone.  */
!   remove_from_clone_tree ();
!   if (!this_clone_of->analyzed && !this_clone_of->clones)
!     this_clone_of->release_body ();
  }
  
  #include "gt-cgraphclones.h"
diff -Nrcpad gcc-10.3.0/gcc/cgraphunit.c gcc-11.1.0/gcc/cgraphunit.c
*** gcc-10.3.0/gcc/cgraphunit.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cgraphunit.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Driver of optimization process
!    Copyright (C) 2003-2020 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
--- 1,5 ----
  /* Driver of optimization process
!    Copyright (C) 2003-2021 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 206,211 ****
--- 206,213 ----
  #include "stringpool.h"
  #include "attribs.h"
  #include "ipa-inline.h"
+ #include "omp-offload.h"
+ #include "symtab-thunks.h"
  
  /* Queue of cgraph nodes scheduled to be added into cgraph.  This is a
     secondary queue used during optimization to accommodate passes that
*************** static void expand_all_functions (void);
*** 216,224 ****
  static void mark_functions_to_output (void);
  static void handle_alias_pairs (void);
  
- /* Used for vtable lookup in thunk adjusting.  */
- static GTY (()) tree vtable_entry_type;
- 
  /* Return true if this symbol is a function from the C frontend specified
     directly in RTL form (with "__RTL").  */
  
--- 218,223 ----
*************** cgraph_node::analyze (void)
*** 618,626 ****
    location_t saved_loc = input_location;
    input_location = DECL_SOURCE_LOCATION (decl);
  
!   if (thunk.thunk_p)
      {
!       cgraph_node *t = cgraph_node::get (thunk.alias);
  
        create_edge (t, NULL, t->count);
        callees->can_throw_external = !TREE_NOTHROW (t->decl);
--- 617,626 ----
    location_t saved_loc = input_location;
    input_location = DECL_SOURCE_LOCATION (decl);
  
!   if (thunk)
      {
!       thunk_info *info = thunk_info::get (this);
!       cgraph_node *t = cgraph_node::get (info->alias);
  
        create_edge (t, NULL, t->count);
        callees->can_throw_external = !TREE_NOTHROW (t->decl);
*************** cgraph_node::analyze (void)
*** 634,641 ****
  	  if (!t->analyzed && t->definition)
  	    t->analyze ();
  	}
!       bool ret = expand_thunk (false, false);
!       thunk.alias = NULL;
        if (!ret)
  	return;
      }
--- 634,641 ----
  	  if (!t->analyzed && t->definition)
  	    t->analyze ();
  	}
!       bool ret = expand_thunk (this, false, false);
!       thunk_info::get (this)->alias = NULL;
        if (!ret)
  	return;
      }
*************** cgraph_node::analyze (void)
*** 672,680 ****
        /* Lower the function.  */
        if (!lowered)
  	{
! 	  if (nested)
  	    lower_nested_functions (decl);
- 	  gcc_assert (!nested);
  
  	  gimple_register_cfg_hooks ();
  	  bitmap_obstack_initialize (NULL);
--- 672,679 ----
        /* Lower the function.  */
        if (!lowered)
  	{
! 	  if (first_nested_function (this))
  	    lower_nested_functions (decl);
  
  	  gimple_register_cfg_hooks ();
  	  bitmap_obstack_initialize (NULL);
*************** process_symver_attribute (symtab_node *n
*** 719,798 ****
  {
    tree value = lookup_attribute ("symver", DECL_ATTRIBUTES (n->decl));
  
!   if (!value)
!     return;
!   if (lookup_attribute ("symver", TREE_CHAIN (value)))
      {
!       error_at (DECL_SOURCE_LOCATION (n->decl),
! 		"multiple versions for one symbol");
!       return;
!     }
!   tree symver = get_identifier_with_length
! 		  (TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (value))),
! 		   TREE_STRING_LENGTH (TREE_VALUE (TREE_VALUE (value))));
!   symtab_node *def = symtab_node::get_for_asmname (symver);
  
!   if (def)
!     {
!       error_at (DECL_SOURCE_LOCATION (n->decl),
! 		"duplicate definition of a symbol version");
!       inform (DECL_SOURCE_LOCATION (def->decl),
! 	      "same version was previously defined here");
!       return;
!     }
!   if (!n->definition)
!     {
!       error_at (DECL_SOURCE_LOCATION (n->decl),
! 		"symbol needs to be defined to have a version");
!       return;
!     }
!   if (DECL_COMMON (n->decl))
!     {
!       error_at (DECL_SOURCE_LOCATION (n->decl),
! 		"common symbol cannot be versioned");
!       return;
!     }
!   if (DECL_COMDAT (n->decl))
!     {
!       error_at (DECL_SOURCE_LOCATION (n->decl),
! 		"comdat symbol cannot be versioned");
!       return;
!     }
!   if (n->weakref)
!     {
!       error_at (DECL_SOURCE_LOCATION (n->decl),
! 		"weakref cannot be versioned");
!       return;
!     }
!   if (!TREE_PUBLIC (n->decl))
!     {
!       error_at (DECL_SOURCE_LOCATION (n->decl),
! 		"versioned symbol must be public");
!       return;
!     }
!   if (DECL_VISIBILITY (n->decl) != VISIBILITY_DEFAULT)
!     {
!       error_at (DECL_SOURCE_LOCATION (n->decl),
! 		"versioned symbol must have default visibility");
!       return;
!     }
  
!   /* Create new symbol table entry representing the version.  */
!   tree new_decl = copy_node (n->decl);
  
!   DECL_INITIAL (new_decl) = NULL_TREE;
!   if (TREE_CODE (new_decl) == FUNCTION_DECL)
!     DECL_STRUCT_FUNCTION (new_decl) = NULL;
!   SET_DECL_ASSEMBLER_NAME (new_decl, symver);
!   TREE_PUBLIC (new_decl) = 1;
!   DECL_ATTRIBUTES (new_decl) = NULL;
  
!   symtab_node *symver_node = symtab_node::get_create (new_decl);
!   symver_node->alias = true;
!   symver_node->definition = true;
!   symver_node->symver = true;
!   symver_node->create_reference (n, IPA_REF_ALIAS, NULL);
!   symver_node->analyzed = true;
  }
  
  /* Process attributes common for vars and functions.  */
--- 718,801 ----
  {
    tree value = lookup_attribute ("symver", DECL_ATTRIBUTES (n->decl));
  
!   for (; value != NULL; value = TREE_CHAIN (value))
      {
!       /* Starting from bintuils 2.35 gas supports:
! 	  # Assign foo to bar@V1 and baz@V2.
! 	  .symver foo, bar@V1
! 	  .symver foo, baz@V2
!       */
!       const char *purpose = IDENTIFIER_POINTER (TREE_PURPOSE (value));
!       if (strcmp (purpose, "symver") != 0)
! 	continue;
  
!       tree symver = get_identifier_with_length
! 	(TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (value))),
! 	 TREE_STRING_LENGTH (TREE_VALUE (TREE_VALUE (value))));
!       symtab_node *def = symtab_node::get_for_asmname (symver);
  
!       if (def)
! 	{
! 	  error_at (DECL_SOURCE_LOCATION (n->decl),
! 		    "duplicate definition of a symbol version");
! 	  inform (DECL_SOURCE_LOCATION (def->decl),
! 		  "same version was previously defined here");
! 	  return;
! 	}
!       if (!n->definition)
! 	{
! 	  error_at (DECL_SOURCE_LOCATION (n->decl),
! 		    "symbol needs to be defined to have a version");
! 	  return;
! 	}
!       if (DECL_COMMON (n->decl))
! 	{
! 	  error_at (DECL_SOURCE_LOCATION (n->decl),
! 		    "common symbol cannot be versioned");
! 	  return;
! 	}
!       if (DECL_COMDAT (n->decl))
! 	{
! 	  error_at (DECL_SOURCE_LOCATION (n->decl),
! 		    "comdat symbol cannot be versioned");
! 	  return;
! 	}
!       if (n->weakref)
! 	{
! 	  error_at (DECL_SOURCE_LOCATION (n->decl),
! 		    "%<weakref%> cannot be versioned");
! 	  return;
! 	}
!       if (!TREE_PUBLIC (n->decl))
! 	{
! 	  error_at (DECL_SOURCE_LOCATION (n->decl),
! 		    "versioned symbol must be public");
! 	  return;
! 	}
!       if (DECL_VISIBILITY (n->decl) != VISIBILITY_DEFAULT)
! 	{
! 	  error_at (DECL_SOURCE_LOCATION (n->decl),
! 		    "versioned symbol must have default visibility");
! 	  return;
! 	}
  
!       /* Create new symbol table entry representing the version.  */
!       tree new_decl = copy_node (n->decl);
  
!       DECL_INITIAL (new_decl) = NULL_TREE;
!       if (TREE_CODE (new_decl) == FUNCTION_DECL)
! 	DECL_STRUCT_FUNCTION (new_decl) = NULL;
!       SET_DECL_ASSEMBLER_NAME (new_decl, symver);
!       TREE_PUBLIC (new_decl) = 1;
!       DECL_ATTRIBUTES (new_decl) = NULL;
! 
!       symtab_node *symver_node = symtab_node::get_create (new_decl);
!       symver_node->alias = true;
!       symver_node->definition = true;
!       symver_node->symver = true;
!       symver_node->create_reference (n, IPA_REF_ALIAS, NULL);
!       symver_node->analyzed = true;
!     }
  }
  
  /* Process attributes common for vars and functions.  */
*************** analyze_functions (bool first_time)
*** 1155,1160 ****
--- 1158,1165 ----
    symtab->state = CONSTRUCTION;
    input_location = UNKNOWN_LOCATION;
  
+   thunk_info::process_early_thunks ();
+ 
    /* Ugly, but the fixup cannot happen at a time same body alias is created;
       C++ FE is confused about the COMDAT groups being right.  */
    if (symtab->cpp_implicit_aliases_done)
*************** analyze_functions (bool first_time)
*** 1163,1168 ****
--- 1168,1176 ----
  	  node->fixup_same_cpp_alias_visibility (node->get_alias_target ());
    build_type_inheritance_graph ();
  
+   if (flag_openmp && first_time)
+     omp_discover_implicit_declare_target ();
+ 
    /* Analysis adds static variables that in turn adds references to new functions.
       So we need to iterate the process until it stabilize.  */
    while (changed)
*************** analyze_functions (bool first_time)
*** 1186,1193 ****
  	      changed = true;
  	      if (symtab->dump_file)
  		fprintf (symtab->dump_file, " %s", node->dump_asm_name ());
- 	      if (!changed && symtab->dump_file)
- 		fprintf (symtab->dump_file, "\n");
  	    }
  	  if (node == first_analyzed
  	      || node == first_analyzed_var)
--- 1194,1199 ----
*************** analyze_functions (bool first_time)
*** 1218,1224 ****
  	      See gcc.c-torture/compile/20011119-1.c  */
  	      if (!DECL_STRUCT_FUNCTION (decl)
  		  && !cnode->alias
! 		  && !cnode->thunk.thunk_p
  		  && !cnode->dispatcher_function)
  		{
  		  cnode->reset ();
--- 1224,1230 ----
  	      See gcc.c-torture/compile/20011119-1.c  */
  	      if (!DECL_STRUCT_FUNCTION (decl)
  		  && !cnode->alias
! 		  && !cnode->thunk
  		  && !cnode->dispatcher_function)
  		{
  		  cnode->reset ();
*************** analyze_functions (bool first_time)
*** 1373,1382 ****
  
  	  if (cnode->definition && !gimple_has_body_p (decl)
  	      && !cnode->alias
! 	      && !cnode->thunk.thunk_p)
  	    cnode->reset ();
  
! 	  gcc_assert (!cnode->definition || cnode->thunk.thunk_p
  		      || cnode->alias
  		      || gimple_has_body_p (decl)
  		      || cnode->native_rtl_p ());
--- 1379,1388 ----
  
  	  if (cnode->definition && !gimple_has_body_p (decl)
  	      && !cnode->alias
! 	      && !cnode->thunk)
  	    cnode->reset ();
  
! 	  gcc_assert (!cnode->definition || cnode->thunk
  		      || cnode->alias
  		      || gimple_has_body_p (decl)
  		      || cnode->native_rtl_p ());
*************** mark_functions_to_output (void)
*** 1606,1612 ****
  	 always inlined, as well as those that are reachable from
  	 outside the current compilation unit.  */
        if (node->analyzed
! 	  && !node->thunk.thunk_p
  	  && !node->alias
  	  && !node->inlined_to
  	  && !TREE_ASM_WRITTEN (decl)
--- 1612,1618 ----
  	 always inlined, as well as those that are reachable from
  	 outside the current compilation unit.  */
        if (node->analyzed
! 	  && !node->thunk
  	  && !node->alias
  	  && !node->inlined_to
  	  && !TREE_ASM_WRITTEN (decl)
*************** mark_functions_to_output (void)
*** 1619,1625 ****
  	      for (next = dyn_cast<cgraph_node *> (node->same_comdat_group);
  		   next != node;
  		   next = dyn_cast<cgraph_node *> (next->same_comdat_group))
! 		if (!next->thunk.thunk_p && !next->alias
  		    && !next->comdat_local_p ())
  		  next->process = 1;
  	    }
--- 1625,1631 ----
  	      for (next = dyn_cast<cgraph_node *> (node->same_comdat_group);
  		   next != node;
  		   next = dyn_cast<cgraph_node *> (next->same_comdat_group))
! 		if (!next->thunk && !next->alias
  		    && !next->comdat_local_p ())
  		  next->process = 1;
  	    }
*************** init_lowered_empty_function (tree decl,
*** 1728,2213 ****
    return bb;
  }
  
- /* Adjust PTR by the constant FIXED_OFFSET, by the vtable offset indicated by
-    VIRTUAL_OFFSET, and by the indirect offset indicated by INDIRECT_OFFSET, if
-    it is non-null. THIS_ADJUSTING is nonzero for a this adjusting thunk and zero
-    for a result adjusting thunk.  */
- 
- tree
- thunk_adjust (gimple_stmt_iterator * bsi,
- 	      tree ptr, bool this_adjusting,
- 	      HOST_WIDE_INT fixed_offset, tree virtual_offset,
- 	      HOST_WIDE_INT indirect_offset)
- {
-   gassign *stmt;
-   tree ret;
- 
-   if (this_adjusting
-       && fixed_offset != 0)
-     {
-       stmt = gimple_build_assign
- 		(ptr, fold_build_pointer_plus_hwi_loc (input_location,
- 						       ptr,
- 						       fixed_offset));
-       gsi_insert_after (bsi, stmt, GSI_NEW_STMT);
-     }
- 
-   if (!vtable_entry_type && (virtual_offset || indirect_offset != 0))
-     {
-       tree vfunc_type = make_node (FUNCTION_TYPE);
-       TREE_TYPE (vfunc_type) = integer_type_node;
-       TYPE_ARG_TYPES (vfunc_type) = NULL_TREE;
-       layout_type (vfunc_type);
- 
-       vtable_entry_type = build_pointer_type (vfunc_type);
-     }
- 
-   /* If there's a virtual offset, look up that value in the vtable and
-      adjust the pointer again.  */
-   if (virtual_offset)
-     {
-       tree vtabletmp;
-       tree vtabletmp2;
-       tree vtabletmp3;
- 
-       vtabletmp =
- 	create_tmp_reg (build_pointer_type
- 			  (build_pointer_type (vtable_entry_type)), "vptr");
- 
-       /* The vptr is always at offset zero in the object.  */
-       stmt = gimple_build_assign (vtabletmp,
- 				  build1 (NOP_EXPR, TREE_TYPE (vtabletmp),
- 					  ptr));
-       gsi_insert_after (bsi, stmt, GSI_NEW_STMT);
- 
-       /* Form the vtable address.  */
-       vtabletmp2 = create_tmp_reg (TREE_TYPE (TREE_TYPE (vtabletmp)),
- 				     "vtableaddr");
-       stmt = gimple_build_assign (vtabletmp2,
- 				  build_simple_mem_ref (vtabletmp));
-       gsi_insert_after (bsi, stmt, GSI_NEW_STMT);
- 
-       /* Find the entry with the vcall offset.  */
-       stmt = gimple_build_assign (vtabletmp2,
- 				  fold_build_pointer_plus_loc (input_location,
- 							       vtabletmp2,
- 							       virtual_offset));
-       gsi_insert_after (bsi, stmt, GSI_NEW_STMT);
- 
-       /* Get the offset itself.  */
-       vtabletmp3 = create_tmp_reg (TREE_TYPE (TREE_TYPE (vtabletmp2)),
- 				     "vcalloffset");
-       stmt = gimple_build_assign (vtabletmp3,
- 				  build_simple_mem_ref (vtabletmp2));
-       gsi_insert_after (bsi, stmt, GSI_NEW_STMT);
- 
-       /* Adjust the `this' pointer.  */
-       ptr = fold_build_pointer_plus_loc (input_location, ptr, vtabletmp3);
-       ptr = force_gimple_operand_gsi (bsi, ptr, true, NULL_TREE, false,
- 				      GSI_CONTINUE_LINKING);
-     }
- 
-   /* Likewise for an offset that is stored in the object that contains the
-      vtable.  */
-   if (indirect_offset != 0)
-     {
-       tree offset_ptr, offset_tree;
- 
-       /* Get the address of the offset.  */
-       offset_ptr
-         = create_tmp_reg (build_pointer_type
- 			  (build_pointer_type (vtable_entry_type)),
- 			  "offset_ptr");
-       stmt = gimple_build_assign (offset_ptr,
- 				  build1 (NOP_EXPR, TREE_TYPE (offset_ptr),
- 					  ptr));
-       gsi_insert_after (bsi, stmt, GSI_NEW_STMT);
- 
-       stmt = gimple_build_assign
- 	     (offset_ptr,
- 	      fold_build_pointer_plus_hwi_loc (input_location, offset_ptr,
- 					       indirect_offset));
-       gsi_insert_after (bsi, stmt, GSI_NEW_STMT);
- 
-       /* Get the offset itself.  */
-       offset_tree = create_tmp_reg (TREE_TYPE (TREE_TYPE (offset_ptr)),
- 				    "offset");
-       stmt = gimple_build_assign (offset_tree,
- 				  build_simple_mem_ref (offset_ptr));
-       gsi_insert_after (bsi, stmt, GSI_NEW_STMT);
- 
-       /* Adjust the `this' pointer.  */
-       ptr = fold_build_pointer_plus_loc (input_location, ptr, offset_tree);
-       ptr = force_gimple_operand_gsi (bsi, ptr, true, NULL_TREE, false,
- 				      GSI_CONTINUE_LINKING);
-     }
- 
-   if (!this_adjusting
-       && fixed_offset != 0)
-     /* Adjust the pointer by the constant.  */
-     {
-       tree ptrtmp;
- 
-       if (VAR_P (ptr))
-         ptrtmp = ptr;
-       else
-         {
-           ptrtmp = create_tmp_reg (TREE_TYPE (ptr), "ptr");
-           stmt = gimple_build_assign (ptrtmp, ptr);
- 	  gsi_insert_after (bsi, stmt, GSI_NEW_STMT);
- 	}
-       ptr = fold_build_pointer_plus_hwi_loc (input_location,
- 					     ptrtmp, fixed_offset);
-     }
- 
-   /* Emit the statement and gimplify the adjustment expression.  */
-   ret = create_tmp_reg (TREE_TYPE (ptr), "adjusted_this");
-   stmt = gimple_build_assign (ret, ptr);
-   gsi_insert_after (bsi, stmt, GSI_NEW_STMT);
- 
-   return ret;
- }
- 
- /* Expand thunk NODE to gimple if possible.
-    When FORCE_GIMPLE_THUNK is true, gimple thunk is created and
-    no assembler is produced.
-    When OUTPUT_ASM_THUNK is true, also produce assembler for
-    thunks that are not lowered.  */
- 
- bool
- cgraph_node::expand_thunk (bool output_asm_thunks, bool force_gimple_thunk)
- {
-   bool this_adjusting = thunk.this_adjusting;
-   HOST_WIDE_INT fixed_offset = thunk.fixed_offset;
-   HOST_WIDE_INT virtual_value = thunk.virtual_value;
-   HOST_WIDE_INT indirect_offset = thunk.indirect_offset;
-   tree virtual_offset = NULL;
-   tree alias = callees->callee->decl;
-   tree thunk_fndecl = decl;
-   tree a;
- 
-   if (!force_gimple_thunk
-       && this_adjusting
-       && indirect_offset == 0
-       && !DECL_EXTERNAL (alias)
-       && !DECL_STATIC_CHAIN (alias)
-       && targetm.asm_out.can_output_mi_thunk (thunk_fndecl, fixed_offset,
- 					      virtual_value, alias))
-     {
-       tree fn_block;
-       tree restype = TREE_TYPE (TREE_TYPE (thunk_fndecl));
- 
-       if (!output_asm_thunks)
- 	{
- 	  analyzed = true;
- 	  return false;
- 	}
- 
-       if (in_lto_p)
- 	get_untransformed_body ();
-       a = DECL_ARGUMENTS (thunk_fndecl);
-       
-       current_function_decl = thunk_fndecl;
- 
-       /* Ensure thunks are emitted in their correct sections.  */
-       resolve_unique_section (thunk_fndecl, 0,
- 			      flag_function_sections);
- 
-       DECL_RESULT (thunk_fndecl)
- 	= build_decl (DECL_SOURCE_LOCATION (thunk_fndecl),
- 		      RESULT_DECL, 0, restype);
-       DECL_CONTEXT (DECL_RESULT (thunk_fndecl)) = thunk_fndecl;
- 
-       /* The back end expects DECL_INITIAL to contain a BLOCK, so we
- 	 create one.  */
-       fn_block = make_node (BLOCK);
-       BLOCK_VARS (fn_block) = a;
-       DECL_INITIAL (thunk_fndecl) = fn_block;
-       BLOCK_SUPERCONTEXT (fn_block) = thunk_fndecl;
-       allocate_struct_function (thunk_fndecl, false);
-       init_function_start (thunk_fndecl);
-       cfun->is_thunk = 1;
-       insn_locations_init ();
-       set_curr_insn_location (DECL_SOURCE_LOCATION (thunk_fndecl));
-       prologue_location = curr_insn_location ();
- 
-       targetm.asm_out.output_mi_thunk (asm_out_file, thunk_fndecl,
- 				       fixed_offset, virtual_value, alias);
- 
-       insn_locations_finalize ();
-       init_insn_lengths ();
-       free_after_compilation (cfun);
-       TREE_ASM_WRITTEN (thunk_fndecl) = 1;
-       thunk.thunk_p = false;
-       analyzed = false;
-     }
-   else if (stdarg_p (TREE_TYPE (thunk_fndecl)))
-     {
-       error ("generic thunk code fails for method %qD which uses %<...%>",
- 	     thunk_fndecl);
-       TREE_ASM_WRITTEN (thunk_fndecl) = 1;
-       analyzed = true;
-       return false;
-     }
-   else
-     {
-       tree restype;
-       basic_block bb, then_bb, else_bb, return_bb;
-       gimple_stmt_iterator bsi;
-       int nargs = 0;
-       tree arg;
-       int i;
-       tree resdecl;
-       tree restmp = NULL;
- 
-       gcall *call;
-       greturn *ret;
-       bool alias_is_noreturn = TREE_THIS_VOLATILE (alias);
- 
-       /* We may be called from expand_thunk that releases body except for
- 	 DECL_ARGUMENTS.  In this case force_gimple_thunk is true.  */
-       if (in_lto_p && !force_gimple_thunk)
- 	get_untransformed_body ();
- 
-       /* We need to force DECL_IGNORED_P when the thunk is created
- 	 after early debug was run.  */
-       if (force_gimple_thunk)
- 	DECL_IGNORED_P (thunk_fndecl) = 1;
- 
-       a = DECL_ARGUMENTS (thunk_fndecl);
- 
-       current_function_decl = thunk_fndecl;
- 
-       /* Ensure thunks are emitted in their correct sections.  */
-       resolve_unique_section (thunk_fndecl, 0,
- 			      flag_function_sections);
- 
-       bitmap_obstack_initialize (NULL);
- 
-       if (thunk.virtual_offset_p)
-         virtual_offset = size_int (virtual_value);
- 
-       /* Build the return declaration for the function.  */
-       restype = TREE_TYPE (TREE_TYPE (thunk_fndecl));
-       if (DECL_RESULT (thunk_fndecl) == NULL_TREE)
- 	{
- 	  resdecl = build_decl (input_location, RESULT_DECL, 0, restype);
- 	  DECL_ARTIFICIAL (resdecl) = 1;
- 	  DECL_IGNORED_P (resdecl) = 1;
- 	  DECL_CONTEXT (resdecl) = thunk_fndecl;
- 	  DECL_RESULT (thunk_fndecl) = resdecl;
- 	}
-       else
- 	resdecl = DECL_RESULT (thunk_fndecl);
- 
-       profile_count cfg_count = count;
-       if (!cfg_count.initialized_p ())
- 	cfg_count = profile_count::from_gcov_type (BB_FREQ_MAX).guessed_local ();
- 
-       bb = then_bb = else_bb = return_bb
- 	= init_lowered_empty_function (thunk_fndecl, true, cfg_count);
- 
-       bsi = gsi_start_bb (bb);
- 
-       /* Build call to the function being thunked.  */
-       if (!VOID_TYPE_P (restype)
- 	  && (!alias_is_noreturn
- 	      || TREE_ADDRESSABLE (restype)
- 	      || TREE_CODE (TYPE_SIZE_UNIT (restype)) != INTEGER_CST))
- 	{
- 	  if (DECL_BY_REFERENCE (resdecl))
- 	    {
- 	      restmp = gimple_fold_indirect_ref (resdecl);
- 	      if (!restmp)
- 		restmp = build2 (MEM_REF,
- 				 TREE_TYPE (TREE_TYPE (resdecl)),
- 				 resdecl,
- 				 build_int_cst (TREE_TYPE (resdecl), 0));
- 	    }
- 	  else if (!is_gimple_reg_type (restype))
- 	    {
- 	      if (aggregate_value_p (resdecl, TREE_TYPE (thunk_fndecl)))
- 		{
- 		  restmp = resdecl;
- 
- 		  if (VAR_P (restmp))
- 		    {
- 		      add_local_decl (cfun, restmp);
- 		      BLOCK_VARS (DECL_INITIAL (current_function_decl))
- 			= restmp;
- 		    }
- 		}
- 	      else
- 		restmp = create_tmp_var (restype, "retval");
- 	    }
- 	  else
- 	    restmp = create_tmp_reg (restype, "retval");
- 	}
- 
-       for (arg = a; arg; arg = DECL_CHAIN (arg))
-         nargs++;
-       auto_vec<tree> vargs (nargs);
-       i = 0;
-       arg = a;
-       if (this_adjusting)
- 	{
- 	  vargs.quick_push (thunk_adjust (&bsi, a, 1, fixed_offset,
- 					  virtual_offset, indirect_offset));
- 	  arg = DECL_CHAIN (a);
- 	  i = 1;
- 	}
- 
-       if (nargs)
- 	for (; i < nargs; i++, arg = DECL_CHAIN (arg))
- 	  {
- 	    tree tmp = arg;
- 	    if (VECTOR_TYPE_P (TREE_TYPE (arg))
- 		|| TREE_CODE (TREE_TYPE (arg)) == COMPLEX_TYPE)
- 	      DECL_GIMPLE_REG_P (arg) = 1;
- 
- 	    if (!is_gimple_val (arg))
- 	      {
- 		tmp = create_tmp_reg (TYPE_MAIN_VARIANT
- 				      (TREE_TYPE (arg)), "arg");
- 		gimple *stmt = gimple_build_assign (tmp, arg);
- 		gsi_insert_after (&bsi, stmt, GSI_NEW_STMT);
- 	      }
- 	    vargs.quick_push (tmp);
- 	  }
-       call = gimple_build_call_vec (build_fold_addr_expr_loc (0, alias), vargs);
-       callees->call_stmt = call;
-       gimple_call_set_from_thunk (call, true);
-       if (DECL_STATIC_CHAIN (alias))
- 	{
- 	  tree p = DECL_STRUCT_FUNCTION (alias)->static_chain_decl;
- 	  tree type = TREE_TYPE (p);
- 	  tree decl = build_decl (DECL_SOURCE_LOCATION (thunk_fndecl),
- 				  PARM_DECL, create_tmp_var_name ("CHAIN"),
- 				  type);
- 	  DECL_ARTIFICIAL (decl) = 1;
- 	  DECL_IGNORED_P (decl) = 1;
- 	  TREE_USED (decl) = 1;
- 	  DECL_CONTEXT (decl) = thunk_fndecl;
- 	  DECL_ARG_TYPE (decl) = type;
- 	  TREE_READONLY (decl) = 1;
- 
- 	  struct function *sf = DECL_STRUCT_FUNCTION (thunk_fndecl);
- 	  sf->static_chain_decl = decl;
- 
- 	  gimple_call_set_chain (call, decl);
- 	}
- 
-       /* Return slot optimization is always possible and in fact required to
-          return values with DECL_BY_REFERENCE.  */
-       if (aggregate_value_p (resdecl, TREE_TYPE (thunk_fndecl))
- 	  && (!is_gimple_reg_type (TREE_TYPE (resdecl))
- 	      || DECL_BY_REFERENCE (resdecl)))
-         gimple_call_set_return_slot_opt (call, true);
- 
-       if (restmp)
- 	{
-           gimple_call_set_lhs (call, restmp);
- 	  gcc_assert (useless_type_conversion_p (TREE_TYPE (restmp),
- 						 TREE_TYPE (TREE_TYPE (alias))));
- 	}
-       gsi_insert_after (&bsi, call, GSI_NEW_STMT);
-       if (!alias_is_noreturn)
- 	{
- 	  if (restmp && !this_adjusting
- 	      && (fixed_offset || virtual_offset))
- 	    {
- 	      tree true_label = NULL_TREE;
- 
- 	      if (TREE_CODE (TREE_TYPE (restmp)) == POINTER_TYPE)
- 		{
- 		  gimple *stmt;
- 		  edge e;
- 		  /* If the return type is a pointer, we need to
- 		     protect against NULL.  We know there will be an
- 		     adjustment, because that's why we're emitting a
- 		     thunk.  */
- 		  then_bb = create_basic_block (NULL, bb);
- 		  then_bb->count = cfg_count - cfg_count.apply_scale (1, 16);
- 		  return_bb = create_basic_block (NULL, then_bb);
- 		  return_bb->count = cfg_count;
- 		  else_bb = create_basic_block (NULL, else_bb);
- 		  else_bb->count = cfg_count.apply_scale (1, 16);
- 		  add_bb_to_loop (then_bb, bb->loop_father);
- 		  add_bb_to_loop (return_bb, bb->loop_father);
- 		  add_bb_to_loop (else_bb, bb->loop_father);
- 		  remove_edge (single_succ_edge (bb));
- 		  true_label = gimple_block_label (then_bb);
- 		  stmt = gimple_build_cond (NE_EXPR, restmp,
- 					    build_zero_cst (TREE_TYPE (restmp)),
- 					    NULL_TREE, NULL_TREE);
- 		  gsi_insert_after (&bsi, stmt, GSI_NEW_STMT);
- 		  e = make_edge (bb, then_bb, EDGE_TRUE_VALUE);
- 		  e->probability = profile_probability::guessed_always ()
- 					.apply_scale (1, 16);
- 		  e = make_edge (bb, else_bb, EDGE_FALSE_VALUE);
- 		  e->probability = profile_probability::guessed_always ()
- 					.apply_scale (1, 16);
- 		  make_single_succ_edge (return_bb,
- 					 EXIT_BLOCK_PTR_FOR_FN (cfun), 0);
- 		  make_single_succ_edge (then_bb, return_bb, EDGE_FALLTHRU);
- 		  e = make_edge (else_bb, return_bb, EDGE_FALLTHRU);
- 		  e->probability = profile_probability::always ();
- 		  bsi = gsi_last_bb (then_bb);
- 		}
- 
- 	      restmp = thunk_adjust (&bsi, restmp, /*this_adjusting=*/0,
- 				     fixed_offset, virtual_offset,
- 				     indirect_offset);
- 	      if (true_label)
- 		{
- 		  gimple *stmt;
- 		  bsi = gsi_last_bb (else_bb);
- 		  stmt = gimple_build_assign (restmp,
- 					      build_zero_cst (TREE_TYPE (restmp)));
- 		  gsi_insert_after (&bsi, stmt, GSI_NEW_STMT);
- 		  bsi = gsi_last_bb (return_bb);
- 		}
- 	    }
- 	  else
- 	    gimple_call_set_tail (call, true);
- 
- 	  /* Build return value.  */
- 	  if (!DECL_BY_REFERENCE (resdecl))
- 	    ret = gimple_build_return (restmp);
- 	  else
- 	    ret = gimple_build_return (resdecl);
- 
- 	  gsi_insert_after (&bsi, ret, GSI_NEW_STMT);
- 	}
-       else
- 	{
- 	  gimple_call_set_tail (call, true);
- 	  remove_edge (single_succ_edge (bb));
- 	}
- 
-       cfun->gimple_df->in_ssa_p = true;
-       update_max_bb_count ();
-       profile_status_for_fn (cfun)
-         = cfg_count.initialized_p () && cfg_count.ipa_p ()
- 	  ? PROFILE_READ : PROFILE_GUESSED;
-       /* FIXME: C++ FE should stop setting TREE_ASM_WRITTEN on thunks.  */
-       TREE_ASM_WRITTEN (thunk_fndecl) = false;
-       delete_unreachable_blocks ();
-       update_ssa (TODO_update_ssa);
-       checking_verify_flow_info ();
-       free_dominance_info (CDI_DOMINATORS);
- 
-       /* Since we want to emit the thunk, we explicitly mark its name as
- 	 referenced.  */
-       thunk.thunk_p = false;
-       lowered = true;
-       bitmap_obstack_release (NULL);
-     }
-   current_function_decl = NULL;
-   set_cfun (NULL);
-   return true;
- }
- 
  /* Assemble thunks and aliases associated to node.  */
  
  void
--- 1734,1739 ----
*************** cgraph_node::assemble_thunks_and_aliases
*** 2217,2229 ****
    ipa_ref *ref;
  
    for (e = callers; e;)
!     if (e->caller->thunk.thunk_p
  	&& !e->caller->inlined_to)
        {
  	cgraph_node *thunk = e->caller;
  
  	e = e->next_caller;
! 	thunk->expand_thunk (true, false);
  	thunk->assemble_thunks_and_aliases ();
        }
      else
--- 1743,1755 ----
    ipa_ref *ref;
  
    for (e = callers; e;)
!     if (e->caller->thunk
  	&& !e->caller->inlined_to)
        {
  	cgraph_node *thunk = e->caller;
  
  	e = e->next_caller;
! 	expand_thunk (thunk, true, false);
  	thunk->assemble_thunks_and_aliases ();
        }
      else
*************** cgraph_node::expand (void)
*** 2269,2274 ****
--- 1795,1803 ----
    announce_function (decl);
    process = 0;
    gcc_assert (lowered);
+ 
+   /* Initialize the default bitmap obstack.  */
+   bitmap_obstack_initialize (NULL);
    get_untransformed_body ();
  
    /* Generate RTL for the body of DECL.  */
*************** cgraph_node::expand (void)
*** 2277,2285 ****
  
    gcc_assert (symtab->global_info_ready);
  
-   /* Initialize the default bitmap obstack.  */
-   bitmap_obstack_initialize (NULL);
- 
    /* Initialize the RTL code for the function.  */
    saved_loc = input_location;
    input_location = DECL_SOURCE_LOCATION (decl);
--- 1806,1811 ----
*************** cgraph_node::expand (void)
*** 2293,2299 ****
    bitmap_obstack_initialize (&reg_obstack); /* FIXME, only at RTL generation*/
  
    update_ssa (TODO_update_ssa_only_virtuals);
!   execute_all_ipa_transforms (false);
  
    /* Perform all tree transforms and optimizations.  */
  
--- 1819,1826 ----
    bitmap_obstack_initialize (&reg_obstack); /* FIXME, only at RTL generation*/
  
    update_ssa (TODO_update_ssa_only_virtuals);
!   if (ipa_transforms_to_apply.exists ())
!     execute_all_ipa_transforms (false);
  
    /* Perform all tree transforms and optimizations.  */
  
*************** cgraph_node::expand (void)
*** 2337,2350 ****
      }
  
    gimple_set_body (decl, NULL);
!   if (DECL_STRUCT_FUNCTION (decl) == 0
!       && !cgraph_node::get (decl)->origin)
      {
        /* Stop pointing to the local nodes about to be freed.
  	 But DECL_INITIAL must remain nonzero so we know this
! 	 was an actual function definition.
! 	 For a nested function, this is done in c_pop_function_context.
! 	 If rest_of_compilation set this to 0, leave it 0.  */
        if (DECL_INITIAL (decl) != 0)
  	DECL_INITIAL (decl) = error_mark_node;
      }
--- 1864,1874 ----
      }
  
    gimple_set_body (decl, NULL);
!   if (DECL_STRUCT_FUNCTION (decl) == 0)
      {
        /* Stop pointing to the local nodes about to be freed.
  	 But DECL_INITIAL must remain nonzero so we know this
! 	 was an actual function definition.  */
        if (DECL_INITIAL (decl) != 0)
  	DECL_INITIAL (decl) = error_mark_node;
      }
*************** cgraph_node::expand (void)
*** 2368,2377 ****
       comdat groups.  */
    assemble_thunks_and_aliases ();
    release_body ();
-   /* Eliminate all call edges.  This is important so the GIMPLE_CALL no longer
-      points to the dead function body.  */
-   remove_callees ();
-   remove_all_references ();
  }
  
  /* Node comparator that is responsible for the order that corresponds
--- 1892,1897 ----
*************** expand_all_functions (void)
*** 2488,2493 ****
--- 2008,2014 ----
    delete ipa_saved_clone_sources;
    ipa_saved_clone_sources = NULL;
    free (order);
+   free (tp_first_run_order);
  }
  
  /* This is used to sort the node types by the cgraph order number.  */
*************** output_in_order (void)
*** 2589,2595 ****
    cgraph_order_sort *node;
  
    FOR_EACH_DEFINED_FUNCTION (cnode)
!     if (cnode->process && !cnode->thunk.thunk_p
  	&& !cnode->alias && cnode->no_reorder)
        nodes.safe_push (cgraph_order_sort (cnode));
  
--- 2110,2116 ----
    cgraph_order_sort *node;
  
    FOR_EACH_DEFINED_FUNCTION (cnode)
!     if (cnode->process && !cnode->thunk
  	&& !cnode->alias && cnode->no_reorder)
        nodes.safe_push (cgraph_order_sort (cnode));
  
*************** symbol_table::finalize_compilation_unit
*** 2994,3010 ****
    /* Gimplify and lower thunks.  */
    analyze_functions (/*first_time=*/false);
  
    /* Offloading requires LTO infrastructure.  */
    if (!in_lto_p && g->have_offload)
      flag_generate_offload = 1;
  
    if (!seen_error ())
      {
!       /* Emit early debug for reachable functions, and by consequence,
! 	 locally scoped symbols.  */
!       struct cgraph_node *cnode;
!       FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (cnode)
! 	(*debug_hooks->early_global_decl) (cnode->decl);
  
        /* Clean up anything that needs cleaning up after initial debug
  	 generation.  */
--- 2515,2532 ----
    /* Gimplify and lower thunks.  */
    analyze_functions (/*first_time=*/false);
  
+   /* All nested functions should be lowered now.  */
+   nested_function_info::release ();
+ 
    /* Offloading requires LTO infrastructure.  */
    if (!in_lto_p && g->have_offload)
      flag_generate_offload = 1;
  
    if (!seen_error ())
      {
!       /* Give the frontends the chance to emit early debug based on
! 	 what is still reachable in the TU.  */
!       (*lang_hooks.finalize_early_debug) ();
  
        /* Clean up anything that needs cleaning up after initial debug
  	 generation.  */
*************** cgraphunit_c_finalize (void)
*** 3028,3034 ****
    gcc_assert (cgraph_new_nodes.length () == 0);
    cgraph_new_nodes.truncate (0);
  
-   vtable_entry_type = NULL;
    queued_nodes = &symtab_terminator;
  
    first_analyzed = NULL;
--- 2550,2555 ----
*************** cgraph_node::create_wrapper (cgraph_node
*** 3058,3065 ****
    /* Turn alias into thunk and expand it into GIMPLE representation.  */
    definition = true;
  
!   memset (&thunk, 0, sizeof (cgraph_thunk_info));
!   thunk.thunk_p = true;
    create_edge (target, NULL, count);
    callees->can_throw_external = !TREE_NOTHROW (target->decl);
  
--- 2579,2589 ----
    /* Turn alias into thunk and expand it into GIMPLE representation.  */
    definition = true;
  
!   /* Create empty thunk, but be sure we did not keep former thunk around.
!      In that case we would need to preserve the info.  */
!   gcc_checking_assert (!thunk_info::get (this));
!   thunk_info::get_create (this);
!   thunk = true;
    create_edge (target, NULL, count);
    callees->can_throw_external = !TREE_NOTHROW (target->decl);
  
*************** cgraph_node::create_wrapper (cgraph_node
*** 3071,3081 ****
        arguments = TREE_CHAIN (arguments);
      }
  
!   expand_thunk (false, true);
  
    /* Inline summary set-up.  */
    analyze ();
    inline_analyze_function (this);
  }
- 
- #include "gt-cgraphunit.h"
--- 2595,2604 ----
        arguments = TREE_CHAIN (arguments);
      }
  
!   expand_thunk (this, false, true);
!   thunk_info::remove (this);
  
    /* Inline summary set-up.  */
    analyze ();
    inline_analyze_function (this);
  }
diff -Nrcpad gcc-10.3.0/gcc/cif-code.def gcc-11.1.0/gcc/cif-code.def
*** gcc-10.3.0/gcc/cif-code.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/cif-code.def	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* This file contains the definitions of the cgraph_inline_failed_t
     enums used in GCC.
  
!    Copyright (C) 2008-2020 Free Software Foundation, Inc.
     Contributed by Doug Kwan <dougkwan@google.com>
  
  This file is part of GCC.
--- 1,7 ----
  /* This file contains the definitions of the cgraph_inline_failed_t
     enums used in GCC.
  
!    Copyright (C) 2008-2021 Free Software Foundation, Inc.
     Contributed by Doug Kwan <dougkwan@google.com>
  
  This file is part of GCC.
*************** DEFCIFCODE(OPTIMIZATION_MISMATCH, CIF_FI
*** 128,136 ****
  DEFCIFCODE(USES_COMDAT_LOCAL, CIF_FINAL_NORMAL,
  	   N_("callee refers to comdat-local symbols"))
  
! /* We can't inline because of mismatched caller/callee attributes.  */
! DEFCIFCODE(ATTRIBUTE_MISMATCH, CIF_FINAL_ERROR,
! 	   N_("function attribute mismatch"))
  
  /* We can't inline because the user requests only static functions
     but the function has external linkage for live patching purpose.  */
--- 128,137 ----
  DEFCIFCODE(USES_COMDAT_LOCAL, CIF_FINAL_NORMAL,
  	   N_("callee refers to comdat-local symbols"))
  
! /* We can't inline because of mismatched caller/callee
!    sanitizer attributes.  */
! DEFCIFCODE(SANITIZE_ATTRIBUTE_MISMATCH, CIF_FINAL_ERROR,
! 	   N_("sanitizer function attribute mismatch"))
  
  /* We can't inline because the user requests only static functions
     but the function has external linkage for live patching purpose.  */
diff -Nrcpad gcc-10.3.0/gcc/collect-utils.c gcc-11.1.0/gcc/collect-utils.c
*** gcc-10.3.0/gcc/collect-utils.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/collect-utils.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Utility functions used by tools like collect2 and lto-wrapper.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Utility functions used by tools like collect2 and lto-wrapper.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** static char *response_file;
*** 34,39 ****
--- 34,40 ----
  bool debug;
  bool verbose;
  bool save_temps;
+ const char *dumppfx;
  
  
  /* Notify user of a non-error.  */
*************** do_wait (const char *prog, struct pex_ob
*** 103,109 ****
  
  struct pex_obj *
  collect_execute (const char *prog, char **argv, const char *outname,
! 		 const char *errname, int flags, bool use_atfile)
  {
    struct pex_obj *pex;
    const char *errmsg;
--- 104,111 ----
  
  struct pex_obj *
  collect_execute (const char *prog, char **argv, const char *outname,
! 		 const char *errname, int flags, bool use_atfile,
! 		 const char *atsuffix)
  {
    struct pex_obj *pex;
    const char *errmsg;
*************** collect_execute (const char *prog, char
*** 125,131 ****
        /* Note: we assume argv contains at least one element; this is
           checked above.  */
  
!       response_file = make_temp_file ("");
  
        f = fopen (response_file, "w");
  
--- 127,136 ----
        /* Note: we assume argv contains at least one element; this is
           checked above.  */
  
!       if (!save_temps || !atsuffix || !dumppfx)
! 	response_file = make_temp_file ("");
!       else
! 	response_file = concat (dumppfx, atsuffix, NULL);
  
        f = fopen (response_file, "w");
  
*************** collect_execute (const char *prog, char
*** 201,212 ****
  }
  
  void
! fork_execute (const char *prog, char **argv, bool use_atfile)
  {
    struct pex_obj *pex;
  
    pex = collect_execute (prog, argv, NULL, NULL,
! 			 PEX_LAST | PEX_SEARCH, use_atfile);
    do_wait (prog, pex);
  }
  
--- 206,218 ----
  }
  
  void
! fork_execute (const char *prog, char **argv, bool use_atfile,
! 	      const char *atsuffix)
  {
    struct pex_obj *pex;
  
    pex = collect_execute (prog, argv, NULL, NULL,
! 			 PEX_LAST | PEX_SEARCH, use_atfile, atsuffix);
    do_wait (prog, pex);
  }
  
diff -Nrcpad gcc-10.3.0/gcc/collect-utils.h gcc-11.1.0/gcc/collect-utils.h
*** gcc-10.3.0/gcc/collect-utils.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/collect-utils.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Utility functions used by tools like collect2 and lto-wrapper.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Utility functions used by tools like collect2 and lto-wrapper.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern void fatal_signal (int);
*** 27,42 ****
  
  extern struct pex_obj *collect_execute (const char *, char **,
  					const char *, const char *,
! 					int, bool);
  extern int collect_wait (const char *, struct pex_obj *);
  extern void do_wait (const char *, struct pex_obj *);
! extern void fork_execute (const char *, char **, bool);
  extern void utils_cleanup (bool);
  
  
  extern bool debug;
  extern bool verbose;
  extern bool save_temps;
  
  /* Provided by the tool itself.  */
  
--- 27,43 ----
  
  extern struct pex_obj *collect_execute (const char *, char **,
  					const char *, const char *,
! 					int, bool, const char *);
  extern int collect_wait (const char *, struct pex_obj *);
  extern void do_wait (const char *, struct pex_obj *);
! extern void fork_execute (const char *, char **, bool, const char *);
  extern void utils_cleanup (bool);
  
  
  extern bool debug;
  extern bool verbose;
  extern bool save_temps;
+ extern const char *dumppfx;
  
  /* Provided by the tool itself.  */
  
diff -Nrcpad gcc-10.3.0/gcc/collect2-aix.c gcc-11.1.0/gcc/collect2-aix.c
*** gcc-10.3.0/gcc/collect2-aix.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/collect2-aix.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* AIX cross support for collect2.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* AIX cross support for collect2.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/collect2-aix.h gcc-11.1.0/gcc/collect2-aix.h
*** gcc-10.3.0/gcc/collect2-aix.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/collect2-aix.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* AIX cross support for collect2.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* AIX cross support for collect2.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/collect2.c gcc-11.1.0/gcc/collect2.c
*** gcc-10.3.0/gcc/collect2.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/collect2.c	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Collect static initialization info into data structures that can be
     traversed by C++ initialization and finalization routines.
!    Copyright (C) 1992-2020 Free Software Foundation, Inc.
     Contributed by Chris Smith (csmith@convex.com).
     Heavily modified by Michael Meissner (meissner@cygnus.com),
     Per Bothner (bothner@cygnus.com), and John Gilmore (gnu@cygnus.com).
--- 1,6 ----
  /* Collect static initialization info into data structures that can be
     traversed by C++ initialization and finalization routines.
!    Copyright (C) 1992-2021 Free Software Foundation, Inc.
     Contributed by Chris Smith (csmith@convex.com).
     Heavily modified by Michael Meissner (meissner@cygnus.com),
     Per Bothner (bothner@cygnus.com), and John Gilmore (gnu@cygnus.com).
*************** static int strip_flag;			/* true if -s *
*** 184,190 ****
  static int export_flag;                 /* true if -bE */
  static int aix64_flag;			/* true if -b64 */
  static int aixrtl_flag;			/* true if -brtl */
! static int aixlazy_flag;               /* true if -blazy */
  #endif
  
  enum lto_mode_d {
--- 184,191 ----
  static int export_flag;                 /* true if -bE */
  static int aix64_flag;			/* true if -b64 */
  static int aixrtl_flag;			/* true if -brtl */
! static int aixlazy_flag;		/* true if -blazy */
! static int visibility_flag;		/* true if -fvisibility */
  #endif
  
  enum lto_mode_d {
*************** maybe_run_lto_and_relink (char **lto_ld_
*** 643,649 ****
  
        /* Run the LTO back end.  */
        pex = collect_execute (prog, lto_c_argv, NULL, NULL, PEX_SEARCH,
! 			     at_file_supplied);
        {
  	int c;
  	FILE *stream;
--- 644,650 ----
  
        /* Run the LTO back end.  */
        pex = collect_execute (prog, lto_c_argv, NULL, NULL, PEX_SEARCH,
! 			     at_file_supplied, "lto_args");
        {
  	int c;
  	FILE *stream;
*************** maybe_run_lto_and_relink (char **lto_ld_
*** 726,732 ****
  
        /* Run the linker again, this time replacing the object files
           optimized by the LTO with the temporary file generated by the LTO.  */
!       fork_execute ("ld", out_lto_ld_argv, HAVE_GNU_LD && at_file_supplied);
        /* We assume that temp files were created, and therefore we need to take
           that into account (maybe run dsymutil).  */
        post_ld_pass (/*temp_file*/true);
--- 727,734 ----
  
        /* Run the linker again, this time replacing the object files
           optimized by the LTO with the temporary file generated by the LTO.  */
!       fork_execute ("ld", out_lto_ld_argv, HAVE_GNU_LD && at_file_supplied,
! 		    "ld_args");
        /* We assume that temp files were created, and therefore we need to take
           that into account (maybe run dsymutil).  */
        post_ld_pass (/*temp_file*/true);
*************** maybe_run_lto_and_relink (char **lto_ld_
*** 738,744 ****
      {
        /* Our caller is relying on us to do the link
           even though there is no LTO back end work to be done.  */
!       fork_execute ("ld", lto_ld_argv, HAVE_GNU_LD && at_file_supplied);
        /* No LTO objects were found, so no new temp file.  */
        post_ld_pass (/*temp_file*/false);
      }
--- 740,747 ----
      {
        /* Our caller is relying on us to do the link
           even though there is no LTO back end work to be done.  */
!       fork_execute ("ld", lto_ld_argv, HAVE_GNU_LD && at_file_supplied,
! 		    "ld_args");
        /* No LTO objects were found, so no new temp file.  */
        post_ld_pass (/*temp_file*/false);
      }
*************** maybe_run_lto_and_relink (char **lto_ld_
*** 749,761 ****
     LD_ARGV is an array of arguments for the linker.  */
  
  static void
! do_link (char **ld_argv)
  {
    struct pex_obj *pex;
    const char *prog = "ld";
    pex = collect_execute (prog, ld_argv, NULL, NULL,
  			 PEX_LAST | PEX_SEARCH,
! 			 HAVE_GNU_LD && at_file_supplied);
    int ret = collect_wait (prog, pex);
    if (ret)
      {
--- 752,764 ----
     LD_ARGV is an array of arguments for the linker.  */
  
  static void
! do_link (char **ld_argv, const char *atsuffix)
  {
    struct pex_obj *pex;
    const char *prog = "ld";
    pex = collect_execute (prog, ld_argv, NULL, NULL,
  			 PEX_LAST | PEX_SEARCH,
! 			 HAVE_GNU_LD && at_file_supplied, atsuffix);
    int ret = collect_wait (prog, pex);
    if (ret)
      {
*************** main (int argc, char **argv)
*** 971,980 ****
  	  {
  	    /* Parse the output filename if it's given so that we can make
  	       meaningful temp filenames.  */
! 	    if (argv[i][2] == '\0')
! 	      output_file = argv[i+1];
! 	    else
  	      output_file = &argv[i][2];
  	  }
  
  #ifdef COLLECT_EXPORT_LIST
--- 974,983 ----
  	  {
  	    /* Parse the output filename if it's given so that we can make
  	       meaningful temp filenames.  */
! 	    if (argv[i][2] != '\0')
  	      output_file = &argv[i][2];
+ 	    else if (argv[i+1] != NULL)
+ 	      output_file = argv[++i];
  	  }
  
  #ifdef COLLECT_EXPORT_LIST
*************** main (int argc, char **argv)
*** 1020,1025 ****
--- 1023,1034 ----
  	else if (strncmp (q, "-save-temps", 11) == 0)
  	  /* FIXME: Honour =obj.  */
  	  save_temps = true;
+ 	else if (strcmp (q, "-dumpdir") == 0)
+ 	  dumppfx = xstrdup (extract_string (&p));
+ 	else if (strcmp (q, "-o") == 0
+ 		 || strcmp (q, "-B") == 0
+ 		 || strcmp (q, "-isystem") == 0)
+ 	  (void) extract_string (&p);
      }
      obstack_free (&temporary_obstack, temporary_firstobj);
  
*************** main (int argc, char **argv)
*** 1239,1244 ****
--- 1248,1262 ----
  	      *c_ptr++ = xstrdup (q);
  	    }
  	}
+       else if (strcmp (q, "-o") == 0
+ 	       || strcmp (q, "-dumpdir") == 0
+ 	       || strcmp (q, "-isystem") == 0)
+ 	(void) extract_string (&p);
+ #ifdef COLLECT_EXPORT_LIST
+       /* Detect any invocation with -fvisibility.  */
+       if (strncmp (q, "-fvisibility", 12) == 0)
+ 	visibility_flag = 1;
+ #endif
      }
    obstack_free (&temporary_obstack, temporary_firstobj);
    *c_ptr++ = "-fno-profile-arcs";
*************** main (int argc, char **argv)
*** 1408,1417 ****
  #endif
  
  	    case 'o':
! 	      if (arg[2] == '\0')
! 		output_file = *ld1++ = *ld2++ = *++argv;
! 	      else
  		output_file = &arg[2];
  	      break;
  
  	    case 'r':
--- 1426,1435 ----
  #endif
  
  	    case 'o':
! 	      if (arg[2] != '\0')
  		output_file = &arg[2];
+ 	      else if (argv[1])
+ 		output_file = *ld1++ = *ld2++ = *++argv;
  	      break;
  
  	    case 'r':
*************** main (int argc, char **argv)
*** 1640,1646 ****
         functions from precise cross reference insertions by the compiler.  */
  
      if (early_exit || ld1_filter != SCAN_NOTHING)
!       do_link (ld1_argv);
  
      if (early_exit)
        {
--- 1658,1664 ----
         functions from precise cross reference insertions by the compiler.  */
  
      if (early_exit || ld1_filter != SCAN_NOTHING)
!       do_link (ld1_argv, "ld1_args");
  
      if (early_exit)
        {
*************** main (int argc, char **argv)
*** 1701,1707 ****
        /* Do link without additional code generation now if we didn't
  	 do it earlier for scanning purposes.  */
        if (ld1_filter == SCAN_NOTHING)
! 	do_link (ld1_argv);
  
        if (lto_mode)
          maybe_run_lto_and_relink (ld1_argv, object_lst, object, false);
--- 1719,1725 ----
        /* Do link without additional code generation now if we didn't
  	 do it earlier for scanning purposes.  */
        if (ld1_filter == SCAN_NOTHING)
! 	do_link (ld1_argv, "ld1_args");
  
        if (lto_mode)
          maybe_run_lto_and_relink (ld1_argv, object_lst, object, false);
*************** main (int argc, char **argv)
*** 1716,1722 ****
  	  strip_argv[0] = strip_file_name;
  	  strip_argv[1] = output_file;
  	  strip_argv[2] = (char *) 0;
! 	  fork_execute ("strip", real_strip_argv, false);
  	}
  
  #ifdef COLLECT_EXPORT_LIST
--- 1734,1740 ----
  	  strip_argv[0] = strip_file_name;
  	  strip_argv[1] = output_file;
  	  strip_argv[2] = (char *) 0;
! 	  fork_execute ("strip", real_strip_argv, false, NULL);
  	}
  
  #ifdef COLLECT_EXPORT_LIST
*************** main (int argc, char **argv)
*** 1799,1808 ****
    /* Assemble the constructor and destructor tables.
       Link the tables in with the rest of the program.  */
  
!   fork_execute ("gcc",  c_argv, at_file_supplied);
  #ifdef COLLECT_EXPORT_LIST
    /* On AIX we must call link because of possible templates resolution.  */
!   do_link (ld2_argv);
  
    if (lto_mode)
      maybe_run_lto_and_relink (ld2_argv, object_lst, object, false);
--- 1817,1826 ----
    /* Assemble the constructor and destructor tables.
       Link the tables in with the rest of the program.  */
  
!   fork_execute ("gcc",  c_argv, at_file_supplied, "gcc_args");
  #ifdef COLLECT_EXPORT_LIST
    /* On AIX we must call link because of possible templates resolution.  */
!   do_link (ld2_argv, "ld2_args");
  
    if (lto_mode)
      maybe_run_lto_and_relink (ld2_argv, object_lst, object, false);
*************** main (int argc, char **argv)
*** 1812,1818 ****
      maybe_run_lto_and_relink (ld2_argv, object_lst, object, true);
    else
      {
!       fork_execute ("ld", ld2_argv, HAVE_GNU_LD && at_file_supplied);
        post_ld_pass (/*temp_file*/false);
      }
  
--- 1830,1836 ----
      maybe_run_lto_and_relink (ld2_argv, object_lst, object, true);
    else
      {
!       fork_execute ("ld", ld2_argv, HAVE_GNU_LD && at_file_supplied, "ld_args");
        post_ld_pass (/*temp_file*/false);
      }
  
*************** write_c_file_stat (FILE *stream, const c
*** 2131,2136 ****
--- 2149,2159 ----
        fprintf (stream, "\t}\n");
      }
  
+ #ifdef COLLECT_EXPORT_LIST
+   /* Set visibility of initializers to default.  */
+   if (visibility_flag)
+     fprintf (stream, "#pragma GCC visibility push(default)\n");
+ #endif
    fprintf (stream, "void %s() {\n", initname);
    if (constructors.number > 0 || frames)
      {
*************** write_c_file_stat (FILE *stream, const c
*** 2163,2173 ****
--- 2186,2209 ----
  	       destructors.number + frames);
      }
    fprintf (stream, "}\n");
+ #ifdef COLLECT_EXPORT_LIST
+   if (visibility_flag)
+     fprintf (stream, "#pragma GCC visibility pop\n");
+ #endif
  
    if (shared_obj)
      {
+ #ifdef COLLECT_EXPORT_LIST
+       /* Set visibility of initializers to default.  */
+       if (visibility_flag)
+ 	fprintf (stream, "#pragma GCC visibility push(default)\n");
+ #endif
        COLLECT_SHARED_INIT_FUNC (stream, initname);
        COLLECT_SHARED_FINI_FUNC (stream, fininame);
+ #ifdef COLLECT_EXPORT_LIST
+       if (visibility_flag)
+ 	fprintf (stream, "#pragma GCC visibility pop\n");
+ #endif
      }
  }
  
*************** do_dsymutil (const char *output_file) {
*** 3016,3022 ****
    argv[2] = (char *) 0;
  
    pex = collect_execute (dsymutil, real_argv, NULL, NULL,
! 			 PEX_LAST | PEX_SEARCH, false);
    do_wait (dsymutil, pex);
  }
  
--- 3052,3058 ----
    argv[2] = (char *) 0;
  
    pex = collect_execute (dsymutil, real_argv, NULL, NULL,
! 			 PEX_LAST | PEX_SEARCH, false, NULL);
    do_wait (dsymutil, pex);
  }
  
diff -Nrcpad gcc-10.3.0/gcc/collect2.h gcc-11.1.0/gcc/collect2.h
*** gcc-10.3.0/gcc/collect2.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/collect2.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Header file for collect routines.
!    Copyright (C) 1998-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Header file for collect routines.
!    Copyright (C) 1998-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/color-macros.h gcc-11.1.0/gcc/color-macros.h
*** gcc-10.3.0/gcc/color-macros.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/color-macros.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Terminal color manipulation macros.
!    Copyright (C) 2005-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Terminal color manipulation macros.
!    Copyright (C) 2005-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/combine-stack-adj.c gcc-11.1.0/gcc/combine-stack-adj.c
*** gcc-10.3.0/gcc/combine-stack-adj.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/combine-stack-adj.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Combine stack adjustments.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Combine stack adjustments.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** static rtx single_set_for_csa (rtx_insn
*** 70,78 ****
  static void free_csa_reflist (struct csa_reflist *);
  static struct csa_reflist *record_one_stack_ref (rtx_insn *, rtx *,
  						 struct csa_reflist *);
! static int try_apply_stack_adjustment (rtx_insn *, struct csa_reflist *,
! 				       HOST_WIDE_INT, HOST_WIDE_INT);
! static void combine_stack_adjustments_for_block (basic_block);
  
  
  /* Main entry point for stack adjustment combination.  */
--- 70,79 ----
  static void free_csa_reflist (struct csa_reflist *);
  static struct csa_reflist *record_one_stack_ref (rtx_insn *, rtx *,
  						 struct csa_reflist *);
! static bool try_apply_stack_adjustment (rtx_insn *, struct csa_reflist *,
! 					HOST_WIDE_INT, HOST_WIDE_INT,
! 					bitmap, rtx_insn *);
! static void combine_stack_adjustments_for_block (basic_block, bitmap);
  
  
  /* Main entry point for stack adjustment combination.  */
*************** static void
*** 81,89 ****
  combine_stack_adjustments (void)
  {
    basic_block bb;
  
    FOR_EACH_BB_FN (bb, cfun)
!     combine_stack_adjustments_for_block (bb);
  }
  
  /* Recognize a MEM of the form (sp) or (plus sp const).  */
--- 82,93 ----
  combine_stack_adjustments (void)
  {
    basic_block bb;
+   bitmap live = BITMAP_ALLOC (&reg_obstack);
  
    FOR_EACH_BB_FN (bb, cfun)
!     combine_stack_adjustments_for_block (bb, live);
! 
!   BITMAP_FREE (live);
  }
  
  /* Recognize a MEM of the form (sp) or (plus sp const).  */
*************** no_unhandled_cfa (rtx_insn *insn)
*** 219,236 ****
     as each of the memories and stack references in REFLIST.  Return true
     on success.  */
  
! static int
  try_apply_stack_adjustment (rtx_insn *insn, struct csa_reflist *reflist,
! 			    HOST_WIDE_INT new_adjust, HOST_WIDE_INT delta)
  {
    struct csa_reflist *ml;
    rtx set;
  
    set = single_set_for_csa (insn);
    if (MEM_P (SET_DEST (set)))
      validate_change (insn, &SET_DEST (set),
  		     replace_equiv_address (SET_DEST (set), stack_pointer_rtx),
  		     1);
    else
      validate_change (insn, &XEXP (SET_SRC (set), 1), GEN_INT (new_adjust), 1);
  
--- 223,282 ----
     as each of the memories and stack references in REFLIST.  Return true
     on success.  */
  
! static bool
  try_apply_stack_adjustment (rtx_insn *insn, struct csa_reflist *reflist,
! 			    HOST_WIDE_INT new_adjust, HOST_WIDE_INT delta,
! 			    bitmap live, rtx_insn *other_insn)
  {
    struct csa_reflist *ml;
    rtx set;
+   bool remove_equal = false;
  
    set = single_set_for_csa (insn);
    if (MEM_P (SET_DEST (set)))
      validate_change (insn, &SET_DEST (set),
  		     replace_equiv_address (SET_DEST (set), stack_pointer_rtx),
  		     1);
+   else if (REG_P (SET_SRC (set)))
+     {
+       if (other_insn == NULL_RTX || live == NULL)
+ 	return false;
+       rtx other_set = single_set_for_csa (other_insn);
+       if (SET_DEST (other_set) != stack_pointer_rtx
+ 	  || GET_CODE (SET_SRC (other_set)) != PLUS
+ 	  || XEXP (SET_SRC (other_set), 0) != stack_pointer_rtx
+ 	  || !CONST_INT_P (XEXP (SET_SRC (other_set), 1)))
+ 	return false;
+       if (PATTERN (other_insn) != other_set)
+ 	{
+ 	  if (GET_CODE (PATTERN (other_insn)) != PARALLEL)
+ 	    return false;
+ 	  int i;
+ 	  rtx p = PATTERN (other_insn);
+ 	  for (i = 0; i < XVECLEN (p, 0); ++i)
+ 	    {
+ 	      rtx this_rtx = XVECEXP (p, 0, i);
+ 	      if (this_rtx == other_set)
+ 		continue;
+ 	      if (GET_CODE (this_rtx) != CLOBBER)
+ 		return false;
+ 	      if (!REG_P (XEXP (this_rtx, 0))
+ 		  || !HARD_REGISTER_P (XEXP (this_rtx, 0)))
+ 		return false;
+ 	      unsigned int end_regno = END_REGNO (XEXP (this_rtx, 0));
+ 	      for (unsigned int regno = REGNO (XEXP (this_rtx, 0));
+ 		   regno < end_regno; ++regno)
+ 		if (bitmap_bit_p (live, regno))
+ 		  return false;
+ 	    }
+ 	}
+       validate_change (insn, &PATTERN (insn), copy_rtx (PATTERN (other_insn)),
+ 		       1);
+       set = single_set_for_csa (insn);
+       validate_change (insn, &XEXP (SET_SRC (set), 1), GEN_INT (new_adjust),
+ 		       1);
+       remove_equal = true;
+     }
    else
      validate_change (insn, &XEXP (SET_SRC (set), 1), GEN_INT (new_adjust), 1);
  
*************** try_apply_stack_adjustment (rtx_insn *in
*** 256,265 ****
        for (ml = reflist; ml ; ml = ml->next)
  	ml->sp_offset -= delta;
  
!       return 1;
      }
    else
!     return 0;
  }
  
  /* For non-debug insns, record all stack memory references in INSN
--- 302,313 ----
        for (ml = reflist; ml ; ml = ml->next)
  	ml->sp_offset -= delta;
  
!       if (remove_equal)
! 	remove_reg_equal_equiv_notes (insn);
!       return true;
      }
    else
!     return false;
  }
  
  /* For non-debug insns, record all stack memory references in INSN
*************** force_move_args_size_note (basic_block b
*** 489,504 ****
  /* Subroutine of combine_stack_adjustments, called for each basic block.  */
  
  static void
! combine_stack_adjustments_for_block (basic_block bb)
  {
    HOST_WIDE_INT last_sp_adjust = 0;
    rtx_insn *last_sp_set = NULL;
    rtx_insn *last2_sp_set = NULL;
    struct csa_reflist *reflist = NULL;
    rtx_insn *insn, *next;
    rtx set;
    bool end_of_block = false;
  
    for (insn = BB_HEAD (bb); !end_of_block ; insn = next)
      {
        end_of_block = insn == BB_END (bb);
--- 537,557 ----
  /* Subroutine of combine_stack_adjustments, called for each basic block.  */
  
  static void
! combine_stack_adjustments_for_block (basic_block bb, bitmap live)
  {
    HOST_WIDE_INT last_sp_adjust = 0;
    rtx_insn *last_sp_set = NULL;
    rtx_insn *last2_sp_set = NULL;
+   bitmap last_sp_live = NULL;
    struct csa_reflist *reflist = NULL;
+   bitmap copy = NULL;
    rtx_insn *insn, *next;
    rtx set;
    bool end_of_block = false;
  
+   bitmap_copy (live, DF_LR_IN (bb));
+   df_simulate_initialize_forwards (bb, live);
+ 
    for (insn = BB_HEAD (bb); !end_of_block ; insn = next)
      {
        end_of_block = insn == BB_END (bb);
*************** combine_stack_adjustments_for_block (bas
*** 514,534 ****
  	{
  	  rtx dest = SET_DEST (set);
  	  rtx src = SET_SRC (set);
  
  	  /* Find constant additions to the stack pointer.  */
  	  if (dest == stack_pointer_rtx
  	      && GET_CODE (src) == PLUS
  	      && XEXP (src, 0) == stack_pointer_rtx
  	      && CONST_INT_P (XEXP (src, 1)))
! 	    {
! 	      HOST_WIDE_INT this_adjust = INTVAL (XEXP (src, 1));
  
  	      /* If we've not seen an adjustment previously, record
  		 it now and continue.  */
  	      if (! last_sp_set)
  		{
  		  last_sp_set = insn;
  		  last_sp_adjust = this_adjust;
  		  continue;
  		}
  
--- 567,609 ----
  	{
  	  rtx dest = SET_DEST (set);
  	  rtx src = SET_SRC (set);
+ 	  HOST_WIDE_INT this_adjust = 0;
  
  	  /* Find constant additions to the stack pointer.  */
  	  if (dest == stack_pointer_rtx
  	      && GET_CODE (src) == PLUS
  	      && XEXP (src, 0) == stack_pointer_rtx
  	      && CONST_INT_P (XEXP (src, 1)))
! 	    this_adjust = INTVAL (XEXP (src, 1));
! 	  /* Or such additions turned by postreload into a store of
! 	     equivalent register.  */
! 	  else if (dest == stack_pointer_rtx
! 		   && REG_P (src)
! 		   && REGNO (src) != STACK_POINTER_REGNUM)
! 	    if (rtx equal = find_reg_note (insn, REG_EQUAL, NULL_RTX))
! 	      if (GET_CODE (XEXP (equal, 0)) == PLUS
! 		  && XEXP (XEXP (equal, 0), 0) == stack_pointer_rtx
! 		  && CONST_INT_P (XEXP (XEXP (equal, 0), 1)))
! 		this_adjust = INTVAL (XEXP (XEXP (equal, 0), 1));
  
+ 	  if (this_adjust)
+ 	    {
  	      /* If we've not seen an adjustment previously, record
  		 it now and continue.  */
  	      if (! last_sp_set)
  		{
  		  last_sp_set = insn;
  		  last_sp_adjust = this_adjust;
+ 		  if (REG_P (src))
+ 		    {
+ 		      if (copy == NULL)
+ 			copy = BITMAP_ALLOC (&reg_obstack);
+ 		      last_sp_live = copy;
+ 		      bitmap_copy (last_sp_live, live);
+ 		    }
+ 		  else
+ 		    last_sp_live = NULL;
+ 		  df_simulate_one_insn_forwards (bb, insn, live);
  		  continue;
  		}
  
*************** combine_stack_adjustments_for_block (bas
*** 560,572 ****
  		      && try_apply_stack_adjustment (last_sp_set, reflist,
  						     last_sp_adjust
  						     + this_adjust,
! 						     this_adjust))
  		    {
  		      /* It worked!  */
  		      maybe_move_args_size_note (last_sp_set, insn, false);
  		      maybe_merge_cfa_adjust (last_sp_set, insn, false);
  		      delete_insn (insn);
  		      last_sp_adjust += this_adjust;
  		      continue;
  		    }
  		}
--- 635,650 ----
  		      && try_apply_stack_adjustment (last_sp_set, reflist,
  						     last_sp_adjust
  						     + this_adjust,
! 						     this_adjust,
! 						     last_sp_live,
! 						     insn))
  		    {
  		      /* It worked!  */
  		      maybe_move_args_size_note (last_sp_set, insn, false);
  		      maybe_merge_cfa_adjust (last_sp_set, insn, false);
  		      delete_insn (insn);
  		      last_sp_adjust += this_adjust;
+ 		      last_sp_live = NULL;
  		      continue;
  		    }
  		}
*************** combine_stack_adjustments_for_block (bas
*** 577,586 ****
  		       ? last_sp_adjust >= 0 : last_sp_adjust <= 0)
  		{
  		  if (no_unhandled_cfa (last_sp_set)
  		      && try_apply_stack_adjustment (insn, reflist,
  						     last_sp_adjust
  						     + this_adjust,
! 						     -last_sp_adjust))
  		    {
  		      /* It worked!  */
  		      maybe_move_args_size_note (insn, last_sp_set, true);
--- 655,666 ----
  		       ? last_sp_adjust >= 0 : last_sp_adjust <= 0)
  		{
  		  if (no_unhandled_cfa (last_sp_set)
+ 		      && !REG_P (src)
  		      && try_apply_stack_adjustment (insn, reflist,
  						     last_sp_adjust
  						     + this_adjust,
! 						     -last_sp_adjust,
! 						     NULL, NULL))
  		    {
  		      /* It worked!  */
  		      maybe_move_args_size_note (insn, last_sp_set, true);
*************** combine_stack_adjustments_for_block (bas
*** 588,595 ****
--- 668,677 ----
  		      delete_insn (last_sp_set);
  		      last_sp_set = insn;
  		      last_sp_adjust += this_adjust;
+ 		      last_sp_live = NULL;
  		      free_csa_reflist (reflist);
  		      reflist = NULL;
+ 		      df_simulate_one_insn_forwards (bb, insn, live);
  		      continue;
  		    }
  		}
*************** combine_stack_adjustments_for_block (bas
*** 612,617 ****
--- 694,709 ----
  	      reflist = NULL;
  	      last_sp_set = insn;
  	      last_sp_adjust = this_adjust;
+ 	      if (REG_P (src))
+ 		{
+ 		  if (copy == NULL)
+ 		    copy = BITMAP_ALLOC (&reg_obstack);
+ 		  last_sp_live = copy;
+ 		  bitmap_copy (last_sp_live, live);
+ 		}
+ 	      else
+ 		last_sp_live = NULL;
+ 	      df_simulate_one_insn_forwards (bb, insn, live);
  	      continue;
  	    }
  
*************** combine_stack_adjustments_for_block (bas
*** 641,647 ****
  	      && !reg_mentioned_p (stack_pointer_rtx, src)
  	      && memory_address_p (GET_MODE (dest), stack_pointer_rtx)
  	      && try_apply_stack_adjustment (insn, reflist, 0,
! 					     -last_sp_adjust))
  	    {
  	      if (last2_sp_set)
  		maybe_move_args_size_note (last2_sp_set, last_sp_set, false);
--- 733,740 ----
  	      && !reg_mentioned_p (stack_pointer_rtx, src)
  	      && memory_address_p (GET_MODE (dest), stack_pointer_rtx)
  	      && try_apply_stack_adjustment (insn, reflist, 0,
! 					     -last_sp_adjust,
! 					     NULL, NULL))
  	    {
  	      if (last2_sp_set)
  		maybe_move_args_size_note (last2_sp_set, last_sp_set, false);
*************** combine_stack_adjustments_for_block (bas
*** 652,664 ****
  	      reflist = NULL;
  	      last_sp_set = NULL;
  	      last_sp_adjust = 0;
  	      continue;
  	    }
  	}
  
!       if (!CALL_P (insn) && last_sp_set
! 	  && record_stack_refs (insn, &reflist))
! 	continue;
  
        /* Otherwise, we were not able to process the instruction.
  	 Do not continue collecting data across such a one.  */
--- 745,761 ----
  	      reflist = NULL;
  	      last_sp_set = NULL;
  	      last_sp_adjust = 0;
+ 	      last_sp_live = NULL;
+ 	      df_simulate_one_insn_forwards (bb, insn, live);
  	      continue;
  	    }
  	}
  
!       if (!CALL_P (insn) && last_sp_set && record_stack_refs (insn, &reflist))
! 	{
! 	  df_simulate_one_insn_forwards (bb, insn, live);
! 	  continue;
! 	}
  
        /* Otherwise, we were not able to process the instruction.
  	 Do not continue collecting data across such a one.  */
*************** combine_stack_adjustments_for_block (bas
*** 676,682 ****
--- 773,782 ----
  	  last2_sp_set = NULL;
  	  last_sp_set = NULL;
  	  last_sp_adjust = 0;
+ 	  last_sp_live = NULL;
  	}
+ 
+       df_simulate_one_insn_forwards (bb, insn, live);
      }
  
    if (last_sp_set && last_sp_adjust == 0)
*************** combine_stack_adjustments_for_block (bas
*** 687,692 ****
--- 787,794 ----
  
    if (reflist)
      free_csa_reflist (reflist);
+   if (copy)
+     BITMAP_FREE (copy);
  }
  
  static unsigned int
diff -Nrcpad gcc-10.3.0/gcc/combine.c gcc-11.1.0/gcc/combine.c
*** gcc-10.3.0/gcc/combine.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/combine.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Optimize by combining instructions for GNU compiler.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Optimize by combining instructions for GNU compiler.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** combine_split_insns (rtx pattern, rtx_in
*** 544,550 ****
    ret = split_insns (pattern, insn);
    nregs = max_reg_num ();
    if (nregs > reg_stat.length ())
!     reg_stat.safe_grow_cleared (nregs);
    return ret;
  }
  
--- 544,550 ----
    ret = split_insns (pattern, insn);
    nregs = max_reg_num ();
    if (nregs > reg_stat.length ())
!     reg_stat.safe_grow_cleared (nregs, true);
    return ret;
  }
  
*************** combine_instructions (rtx_insn *f, unsig
*** 1172,1178 ****
  
    rtl_hooks = combine_rtl_hooks;
  
!   reg_stat.safe_grow_cleared (nregs);
  
    init_recog_no_volatile ();
  
--- 1172,1178 ----
  
    rtl_hooks = combine_rtl_hooks;
  
!   reg_stat.safe_grow_cleared (nregs, true);
  
    init_recog_no_volatile ();
  
*************** static void
*** 2459,2465 ****
  adjust_for_new_dest (rtx_insn *insn)
  {
    /* For notes, be conservative and simply remove them.  */
!   remove_reg_equal_equiv_notes (insn);
  
    /* The new insn will have a destination that was previously the destination
       of an insn just above it.  Call distribute_links to make a LOG_LINK from
--- 2459,2465 ----
  adjust_for_new_dest (rtx_insn *insn)
  {
    /* For notes, be conservative and simply remove them.  */
!   remove_reg_equal_equiv_notes (insn, true);
  
    /* The new insn will have a destination that was previously the destination
       of an insn just above it.  Call distribute_links to make a LOG_LINK from
*************** reg_subword_p (rtx x, rtx reg)
*** 2531,2572 ****
  	 && GET_MODE_CLASS (GET_MODE (x)) == MODE_INT;
  }
  
- /* Delete the unconditional jump INSN and adjust the CFG correspondingly.
-    Note that the INSN should be deleted *after* removing dead edges, so
-    that the kept edge is the fallthrough edge for a (set (pc) (pc))
-    but not for a (set (pc) (label_ref FOO)).  */
- 
- static void
- update_cfg_for_uncondjump (rtx_insn *insn)
- {
-   basic_block bb = BLOCK_FOR_INSN (insn);
-   gcc_assert (BB_END (bb) == insn);
- 
-   purge_dead_edges (bb);
- 
-   delete_insn (insn);
-   if (EDGE_COUNT (bb->succs) == 1)
-     {
-       rtx_insn *insn;
- 
-       single_succ_edge (bb)->flags |= EDGE_FALLTHRU;
- 
-       /* Remove barriers from the footer if there are any.  */
-       for (insn = BB_FOOTER (bb); insn; insn = NEXT_INSN (insn))
- 	if (BARRIER_P (insn))
- 	  {
- 	    if (PREV_INSN (insn))
- 	      SET_NEXT_INSN (PREV_INSN (insn)) = NEXT_INSN (insn);
- 	    else
- 	      BB_FOOTER (bb) = NEXT_INSN (insn);
- 	    if (NEXT_INSN (insn))
- 	      SET_PREV_INSN (NEXT_INSN (insn)) = PREV_INSN (insn);
- 	  }
- 	else if (LABEL_P (insn))
- 	  break;
-     }
- }
- 
  /* Return whether PAT is a PARALLEL of exactly N register SETs followed
     by an arbitrary number of CLOBBERs.  */
  static bool
--- 2531,2536 ----
*************** can_split_parallel_of_n_reg_sets (rtx_in
*** 2624,2638 ****
    return true;
  }
  
! /* Return whether X is just a single set, with the source
     a general_operand.  */
  static bool
! is_just_move (rtx x)
  {
!   if (INSN_P (x))
!     x = PATTERN (x);
  
!   return (GET_CODE (x) == SET && general_operand (SET_SRC (x), VOIDmode));
  }
  
  /* Callback function to count autoincs.  */
--- 2588,2603 ----
    return true;
  }
  
! /* Return whether X is just a single_set, with the source
     a general_operand.  */
  static bool
! is_just_move (rtx_insn *x)
  {
!   rtx set = single_set (x);
!   if (!set)
!     return false;
  
!   return general_operand (SET_SRC (set), VOIDmode);
  }
  
  /* Callback function to count autoincs.  */
*************** expand_compound_operation (rtx x)
*** 7444,7454 ****
  				  mode, tem, modewidth - len);
      }
    else if (unsignedp && len < HOST_BITS_PER_WIDE_INT)
!     tem = simplify_and_const_int (NULL_RTX, mode,
! 				  simplify_shift_const (NULL_RTX, LSHIFTRT,
! 							mode, XEXP (x, 0),
! 							pos),
! 				  (HOST_WIDE_INT_1U << len) - 1);
    else
      /* Any other cases we can't handle.  */
      return x;
--- 7409,7423 ----
  				  mode, tem, modewidth - len);
      }
    else if (unsignedp && len < HOST_BITS_PER_WIDE_INT)
!     {
!       tem = simplify_shift_const (NULL_RTX, LSHIFTRT, inner_mode,
! 				  XEXP (x, 0), pos);
!       tem = gen_lowpart (mode, tem);
!       if (!tem || GET_CODE (tem) == CLOBBER)
! 	return x;
!       tem = simplify_and_const_int (NULL_RTX, mode, tem,
! 				    (HOST_WIDE_INT_1U << len) - 1);
!     }
    else
      /* Any other cases we can't handle.  */
      return x;
*************** make_extraction (machine_mode mode, rtx
*** 7664,7669 ****
--- 7633,7656 ----
        if (new_rtx != 0)
  	return gen_rtx_ASHIFT (mode, new_rtx, XEXP (inner, 1));
      }
+   else if (GET_CODE (inner) == MULT
+ 	   && CONST_INT_P (XEXP (inner, 1))
+ 	   && pos_rtx == 0 && pos == 0)
+     {
+       /* We're extracting the least significant bits of an rtx
+ 	 (mult X (const_int 2^C)), where LEN > C.  Extract the
+ 	 least significant (LEN - C) bits of X, giving an rtx
+ 	 whose mode is MODE, then multiply it by 2^C.  */
+       const HOST_WIDE_INT shift_amt = exact_log2 (INTVAL (XEXP (inner, 1)));
+       if (IN_RANGE (shift_amt, 1, len - 1))
+ 	{
+ 	  new_rtx = make_extraction (mode, XEXP (inner, 0),
+ 				     0, 0, len - shift_amt,
+ 				     unsignedp, in_dest, in_compare);
+ 	  if (new_rtx)
+ 	    return gen_rtx_MULT (mode, new_rtx, XEXP (inner, 1));
+ 	}
+     }
    else if (GET_CODE (inner) == TRUNCATE
  	   /* If trying or potentionally trying to extract
  	      bits outside of is_mode, don't look through
*************** simplify_and_const_int_1 (scalar_int_mod
*** 10170,10176 ****
    constop &= nonzero;
  
    /* If we don't have any bits left, return zero.  */
!   if (constop == 0)
      return const0_rtx;
  
    /* If VAROP is a NEG of something known to be zero or 1 and CONSTOP is
--- 10157,10163 ----
    constop &= nonzero;
  
    /* If we don't have any bits left, return zero.  */
!   if (constop == 0 && !side_effects_p (varop))
      return const0_rtx;
  
    /* If VAROP is a NEG of something known to be zero or 1 and CONSTOP is
*************** distribute_notes (rtx notes, rtx_insn *f
*** 14350,14355 ****
--- 14337,14343 ----
  	case REG_SETJMP:
  	case REG_TM:
  	case REG_CALL_DECL:
+ 	case REG_UNTYPED_CALL:
  	case REG_CALL_NOCF_CHECK:
  	  /* These notes must remain with the call.  It should not be
  	     possible for both I2 and I3 to be a call.  */
*************** distribute_notes (rtx notes, rtx_insn *f
*** 14378,14383 ****
--- 14366,14376 ----
  	     we keep notes from i2 or i1 if they will turn into REG_DEAD
  	     notes.  */
  
+ 	  /* If this register is set or clobbered between FROM_INSN and I3,
+ 	     we should not create a note for it.  */
+ 	  if (reg_set_between_p (XEXP (note, 0), from_insn, i3))
+ 	    break;
+ 
  	  /* If this register is set or clobbered in I3, put the note there
  	     unless there is one already.  */
  	  if (reg_set_p (XEXP (note, 0), PATTERN (i3)))
diff -Nrcpad gcc-10.3.0/gcc/common/common-target-def.h gcc-11.1.0/gcc/common/common-target-def.h
*** gcc-10.3.0/gcc/common/common-target-def.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/common-target-def.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Default initializers for common target hooks.
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
     This program is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
--- 1,5 ----
  /* Default initializers for common target hooks.
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
     This program is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
diff -Nrcpad gcc-10.3.0/gcc/common/common-target.def gcc-11.1.0/gcc/common/common-target.def
*** gcc-10.3.0/gcc/common/common-target.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/common-target.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Target hook definitions for common hooks.
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
     This program is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
--- 1,5 ----
  /* Target hook definitions for common hooks.
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
     This program is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
diff -Nrcpad gcc-10.3.0/gcc/common/common-target.h gcc-11.1.0/gcc/common/common-target.h
*** gcc-10.3.0/gcc/common/common-target.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/common-target.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Data structure definitions for common hooks.
!    Copyright (C) 2010-2020 Free Software Foundation, Inc.
  
     This program is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
--- 1,5 ----
  /* Data structure definitions for common hooks.
!    Copyright (C) 2010-2021 Free Software Foundation, Inc.
  
     This program is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
diff -Nrcpad gcc-10.3.0/gcc/common/common-targhooks.c gcc-11.1.0/gcc/common/common-targhooks.c
*** gcc-10.3.0/gcc/common/common-targhooks.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/common-targhooks.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Default common target hook functions.
!    Copyright (C) 2003-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Default common target hook functions.
!    Copyright (C) 2003-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/common-targhooks.h gcc-11.1.0/gcc/common/common-targhooks.h
*** gcc-10.3.0/gcc/common/common-targhooks.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/common-targhooks.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Default common target hook functions.
!    Copyright (C) 2003-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Default common target hook functions.
!    Copyright (C) 2003-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/aarch64/aarch64-common.c gcc-11.1.0/gcc/common/config/aarch64/aarch64-common.c
*** gcc-10.3.0/gcc/common/config/aarch64/aarch64-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/aarch64/aarch64-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for AArch64.
!    Copyright (C) 2012-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Common hooks for AArch64.
!    Copyright (C) 2012-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** aarch64_get_extension_string_for_isa_fla
*** 426,433 ****
        names.  However as a special case if CRC was enabled before, always print
        it.  This is required because some CPUs have an incorrect specification
        in older assemblers.  Even though CRC should be the default for these
!       cases the -mcpu values won't turn it on.  */
!   if (isa_flags & AARCH64_ISA_CRC)
      isa_flag_bits |= AARCH64_ISA_CRC;
  
    /* Pass Two:
--- 426,436 ----
        names.  However as a special case if CRC was enabled before, always print
        it.  This is required because some CPUs have an incorrect specification
        in older assemblers.  Even though CRC should be the default for these
!       cases the -mcpu values won't turn it on.
! 
!       Note that assemblers with Armv8-R AArch64 support should not have this
!       issue, so we don't need this fix when targeting Armv8-R.  */
!   if ((isa_flags & AARCH64_ISA_CRC) && !AARCH64_ISA_V8_R)
      isa_flag_bits |= AARCH64_ISA_CRC;
  
    /* Pass Two:
diff -Nrcpad gcc-10.3.0/gcc/common/config/alpha/alpha-common.c gcc-11.1.0/gcc/common/config/alpha/alpha-common.c
*** gcc-10.3.0/gcc/common/config/alpha/alpha-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/alpha/alpha-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for DEC Alpha.
!    Copyright (C) 1992-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for DEC Alpha.
!    Copyright (C) 1992-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/arc/arc-common.c gcc-11.1.0/gcc/common/config/arc/arc-common.c
*** gcc-10.3.0/gcc/common/config/arc/arc-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/arc/arc-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for Synopsys DesignWare ARC
!    Copyright (C) 1994-2020 Free Software Foundation, Inc.
     Contributor: Joern Rennecke <joern.rennecke@embecosm.com>
  		on behalf of Synopsys Inc.
  		Claudiu Zissulescu <Claudiu.Zissulescu@synopsys.com>
--- 1,5 ----
  /* Common hooks for Synopsys DesignWare ARC
!    Copyright (C) 1994-2021 Free Software Foundation, Inc.
     Contributor: Joern Rennecke <joern.rennecke@embecosm.com>
  		on behalf of Synopsys Inc.
  		Claudiu Zissulescu <Claudiu.Zissulescu@synopsys.com>
diff -Nrcpad gcc-10.3.0/gcc/common/config/arm/arm-common.c gcc-11.1.0/gcc/common/config/arm/arm-common.c
*** gcc-10.3.0/gcc/common/config/arm/arm-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/arm/arm-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for ARM.
!    Copyright (C) 1991-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for ARM.
!    Copyright (C) 1991-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 19,24 ****
--- 19,25 ----
  
  #define INCLUDE_LIST
  #define INCLUDE_VECTOR
+ #define INCLUDE_ALGORITHM
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
***************
*** 31,37 ****
  #include "flags.h"
  #include "sbitmap.h"
  #include "diagnostic.h"
! #include <algorithm>
  
  /* Set default optimization options.  */
  static const struct default_options arm_option_optimization_table[] =
--- 32,39 ----
  #include "flags.h"
  #include "sbitmap.h"
  #include "diagnostic.h"
! 
! #include "configargs.h"
  
  /* Set default optimization options.  */
  static const struct default_options arm_option_optimization_table[] =
*************** check_isa_bits_for (const enum isa_featu
*** 240,255 ****
    return false;
  }
  
  /* Called by the driver to check whether the target denoted by current
!    command line options is a Thumb-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 *
! arm_target_thumb_only (int argc, const char **argv)
  {
    const char *arch = NULL;
    const char *cpu = NULL;
--- 242,275 ----
    return false;
  }
  
+ /* Look up NAME in the configuration defaults for this build of the
+    the compiler.  Return the value associated with that name, or NULL
+    if no value is found.  */
+ static const char *
+ arm_config_default (const char *name)
+ {
+   unsigned i;
+ 
+   if (configure_default_options[0].name == NULL)
+     return NULL;
+ 
+   for (i = 0; i < ARRAY_SIZE (configure_default_options); i++)
+     if (strcmp (configure_default_options[i].name, name) == 0)
+       return configure_default_options[i].value;
+ 
+   return NULL;
+ }
+ 
  /* 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 *
! arm_target_mode (int argc, const char **argv)
  {
    const char *arch = NULL;
    const char *cpu = NULL;
*************** arm_target_thumb_only (int argc, const c
*** 285,290 ****
--- 305,313 ----
        if (arch_opt && !check_isa_bits_for (arch_opt->common.isa_bits,
  					   isa_bit_notm))
  	return "-mthumb";
+       if (arch_opt && !check_isa_bits_for (arch_opt->common.isa_bits,
+ 					   isa_bit_thumb))
+ 	return "-marm";
      }
    else if (cpu)
      {
*************** arm_target_thumb_only (int argc, const c
*** 294,299 ****
--- 317,336 ----
        if (cpu_opt && !check_isa_bits_for (cpu_opt->common.isa_bits,
  					  isa_bit_notm))
  	return "-mthumb";
+       if (cpu_opt && !check_isa_bits_for (cpu_opt->common.isa_bits,
+ 					   isa_bit_thumb))
+ 	return "-marm";
+     }
+ 
+   const char *default_mode = arm_config_default ("mode");
+   if (default_mode)
+     {
+       if (strcmp (default_mode, "thumb") == 0)
+ 	return "-mthumb";
+       else if (strcmp (default_mode, "arm") == 0)
+ 	return "-marm";
+       else
+ 	gcc_unreachable ();
      }
  
    /* Compiler hasn't been configured with a default, and the CPU
diff -Nrcpad gcc-10.3.0/gcc/common/config/avr/avr-common.c gcc-11.1.0/gcc/common/config/avr/avr-common.c
*** gcc-10.3.0/gcc/common/config/avr/avr-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/avr/avr-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for ATMEL AVR.
!    Copyright (C) 1998-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for ATMEL AVR.
!    Copyright (C) 1998-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/bfin/bfin-common.c gcc-11.1.0/gcc/common/config/bfin/bfin-common.c
*** gcc-10.3.0/gcc/common/config/bfin/bfin-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/bfin/bfin-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for Blackfin.
!    Copyright (C) 2005-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Blackfin.
!    Copyright (C) 2005-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/bpf/bpf-common.c gcc-11.1.0/gcc/common/config/bpf/bpf-common.c
*** gcc-10.3.0/gcc/common/config/bpf/bpf-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/bpf/bpf-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for eBPF.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for eBPF.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/c6x/c6x-common.c gcc-11.1.0/gcc/common/config/c6x/c6x-common.c
*** gcc-10.3.0/gcc/common/config/c6x/c6x-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/c6x/c6x-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* TI C6X common hooks.
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* TI C6X common hooks.
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/cr16/cr16-common.c gcc-11.1.0/gcc/common/config/cr16/cr16-common.c
*** gcc-10.3.0/gcc/common/config/cr16/cr16-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/cr16/cr16-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for CR16.
!    Copyright (C) 2012-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for CR16.
!    Copyright (C) 2012-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/cris/cris-common.c gcc-11.1.0/gcc/common/config/cris/cris-common.c
*** gcc-10.3.0/gcc/common/config/cris/cris-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/cris/cris-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for CRIS.
!    Copyright (C) 1998-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for CRIS.
!    Copyright (C) 1998-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/csky/csky-common.c gcc-11.1.0/gcc/common/config/csky/csky-common.c
*** gcc-10.3.0/gcc/common/config/csky/csky-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/csky/csky-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for CSKY.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* Common hooks for CSKY.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/common/config/default-common.c gcc-11.1.0/gcc/common/config/default-common.c
*** gcc-10.3.0/gcc/common/config/default-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/default-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Default common target hooks initializer.
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Default common target hooks initializer.
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/epiphany/epiphany-common.c gcc-11.1.0/gcc/common/config/epiphany/epiphany-common.c
*** gcc-10.3.0/gcc/common/config/epiphany/epiphany-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/epiphany/epiphany-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for Adapteva Epiphany
!    Copyright (C) 1994-2020 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Common hooks for Adapteva Epiphany
!    Copyright (C) 1994-2021 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/common/config/fr30/fr30-common.c gcc-11.1.0/gcc/common/config/fr30/fr30-common.c
*** gcc-10.3.0/gcc/common/config/fr30/fr30-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/fr30/fr30-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for FR30.
!    Copyright (C) 1998-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for FR30.
!    Copyright (C) 1998-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/frv/frv-common.c gcc-11.1.0/gcc/common/config/frv/frv-common.c
*** gcc-10.3.0/gcc/common/config/frv/frv-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/frv/frv-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 1997-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1997-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/gcn/gcn-common.c gcc-11.1.0/gcc/common/config/gcn/gcn-common.c
*** gcc-10.3.0/gcc/common/config/gcn/gcn-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/gcn/gcn-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for GCN
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     This file 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
--- 1,5 ----
  /* Common hooks for GCN
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     This file 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
diff -Nrcpad gcc-10.3.0/gcc/common/config/h8300/h8300-common.c gcc-11.1.0/gcc/common/config/h8300/h8300-common.c
*** gcc-10.3.0/gcc/common/config/h8300/h8300-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/h8300/h8300-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for Renesas H8/300.
!    Copyright (C) 1992-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Renesas H8/300.
!    Copyright (C) 1992-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/i386/cpuinfo.h gcc-11.1.0/gcc/common/config/i386/cpuinfo.h
*** gcc-10.3.0/gcc/common/config/i386/cpuinfo.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/common/config/i386/cpuinfo.h	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,939 ----
+ /* Get CPU type and Features for x86 processors.
+    Copyright (C) 2012-2021 Free Software Foundation, Inc.
+    Contributed by Sriraman Tallam (tmsriram@google.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.
+ 
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+ 
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ struct __processor_model
+ {
+   unsigned int __cpu_vendor;
+   unsigned int __cpu_type;
+   unsigned int __cpu_subtype;
+   /* The first 32 features are stored as bitmasks in __cpu_features.
+      The rest of features are stored as bitmasks in a separate array
+      of unsigned int.  */
+   unsigned int __cpu_features[1];
+ };
+ 
+ struct __processor_model2
+ {
+   unsigned int __cpu_family;
+   unsigned int __cpu_model;
+   unsigned int __cpu_max_level;
+   unsigned int __cpu_ext_level;
+ };
+ 
+ #ifndef CHECK___builtin_cpu_is
+ # define CHECK___builtin_cpu_is(cpu)
+ #endif
+ 
+ /* Return non-zero if the processor has feature F.  */
+ 
+ static inline int
+ has_cpu_feature (struct __processor_model *cpu_model,
+ 		 unsigned int *cpu_features2,
+ 		 enum processor_features f)
+ {
+   unsigned int i;
+   if (f < 32)
+     {
+       /* The first 32 features.  */
+       return cpu_model->__cpu_features[0] & (1U << (f & 31));
+     }
+   /* The rest of features.  cpu_features2[i] contains features from
+      (32 + i * 32) to (31 + 32 + i * 32), inclusively.  */
+   for (i = 0; i < SIZE_OF_CPU_FEATURES; i++)
+     if (f < (32 + 32 + i * 32))
+     return cpu_features2[i] & (1U << ((f - (32 + i * 32)) & 31));
+   gcc_unreachable ();
+ }
+ 
+ static inline void
+ set_cpu_feature (struct __processor_model *cpu_model,
+ 		 unsigned int *cpu_features2,
+ 		 enum processor_features f)
+ {
+   unsigned int i;
+   if (f < 32)
+     {
+       /* The first 32 features.  */
+       cpu_model->__cpu_features[0] |= (1U << (f & 31));
+       return;
+     }
+   /* The rest of features.  cpu_features2[i] contains features from
+      (32 + i * 32) to (31 + 32 + i * 32), inclusively.  */
+   for (i = 0; i < SIZE_OF_CPU_FEATURES; i++)
+     if (f < (32 + 32 + i * 32))
+       {
+ 	cpu_features2[i] |= (1U << ((f - (32 + i * 32)) & 31));
+ 	return;
+       }
+   gcc_unreachable ();
+ }
+ 
+ /* Get the specific type of AMD CPU and return AMD CPU name.  Return
+    NULL for unknown AMD CPU.  */
+ 
+ static inline const char *
+ get_amd_cpu (struct __processor_model *cpu_model,
+ 	     struct __processor_model2 *cpu_model2,
+ 	     unsigned int *cpu_features2)
+ {
+   const char *cpu = NULL;
+   unsigned int family = cpu_model2->__cpu_family;
+   unsigned int model = cpu_model2->__cpu_model;
+ 
+   switch (family)
+     {
+     case 0x10:
+       /* AMD Family 10h.  */
+       cpu = "amdfam10";
+       cpu_model->__cpu_type = AMDFAM10H;
+       switch (model)
+ 	{
+ 	case 0x2:
+ 	  /* Barcelona.  */
+ 	  CHECK___builtin_cpu_is ("amdfam10h");
+ 	  CHECK___builtin_cpu_is ("barcelona");
+ 	  cpu_model->__cpu_subtype = AMDFAM10H_BARCELONA;
+ 	  break;
+ 	case 0x4:
+ 	  /* Shanghai.  */
+ 	  CHECK___builtin_cpu_is ("amdfam10h");
+ 	  CHECK___builtin_cpu_is ("shanghai");
+ 	  cpu_model->__cpu_subtype = AMDFAM10H_SHANGHAI;
+ 	  break;
+ 	case 0x8:
+ 	  /* Istanbul.  */
+ 	  CHECK___builtin_cpu_is ("amdfam10h");
+ 	  CHECK___builtin_cpu_is ("istanbul");
+ 	  cpu_model->__cpu_subtype = AMDFAM10H_ISTANBUL;
+ 	  break;
+ 	default:
+ 	  break;
+ 	}
+       break;
+     case 0x14:
+       /* AMD Family 14h "btver1". */
+       cpu = "btver1";
+       CHECK___builtin_cpu_is ("btver1");
+       cpu_model->__cpu_type = AMD_BTVER1;
+       break;
+     case 0x15:
+       /* AMD Family 15h "Bulldozer".  */
+       cpu_model->__cpu_type = AMDFAM15H;
+       if (model == 0x2)
+ 	{
+ 	  /* Bulldozer version 2 "Piledriver" */
+ 	  cpu = "bdver2";
+ 	  CHECK___builtin_cpu_is ("bdver2");
+ 	  cpu_model->__cpu_subtype = AMDFAM15H_BDVER2;
+ 	}
+       else if (model <= 0xf)
+ 	{
+ 	  /* Bulldozer version 1.  */
+ 	  cpu = "bdver1";
+ 	  CHECK___builtin_cpu_is ("bdver1");
+ 	  cpu_model->__cpu_subtype = AMDFAM15H_BDVER1;
+ 	}
+       else if (model <= 0x2f)
+ 	{
+ 	  /* Bulldozer version 2 "Piledriver" */
+ 	  cpu = "bdver2";
+ 	  CHECK___builtin_cpu_is ("bdver2");
+ 	  cpu_model->__cpu_subtype = AMDFAM15H_BDVER2;
+ 	}
+       else if (model <= 0x4f)
+ 	{
+ 	  /* Bulldozer version 3 "Steamroller"  */
+ 	  cpu = "bdver3";
+ 	  CHECK___builtin_cpu_is ("bdver3");
+ 	  cpu_model->__cpu_subtype = AMDFAM15H_BDVER3;
+ 	}
+       else if (model <= 0x7f)
+ 	{
+ 	  /* Bulldozer version 4 "Excavator"   */
+ 	  cpu = "bdver4";
+ 	  CHECK___builtin_cpu_is ("bdver4");
+ 	  cpu_model->__cpu_subtype = AMDFAM15H_BDVER4;
+ 	}
+       else if (has_cpu_feature (cpu_model, cpu_features2,
+ 				FEATURE_AVX2))
+ 	{
+ 	  cpu = "bdver4";
+ 	  CHECK___builtin_cpu_is ("bdver4");
+ 	  cpu_model->__cpu_subtype = AMDFAM15H_BDVER4;
+ 	}
+       else if (has_cpu_feature (cpu_model, cpu_features2,
+ 				FEATURE_XSAVEOPT))
+ 	{
+ 	  cpu = "bdver3";
+ 	  CHECK___builtin_cpu_is ("bdver3");
+ 	  cpu_model->__cpu_subtype = AMDFAM15H_BDVER3;
+ 	}
+       else if (has_cpu_feature (cpu_model, cpu_features2,
+ 				FEATURE_BMI))
+ 	{
+ 	  cpu = "bdver2";
+ 	  CHECK___builtin_cpu_is ("bdver2");
+ 	  cpu_model->__cpu_subtype = AMDFAM15H_BDVER2;
+ 	}
+       else if (has_cpu_feature (cpu_model, cpu_features2,
+ 				FEATURE_XOP))
+ 	{
+ 	  cpu = "bdver1";
+ 	  CHECK___builtin_cpu_is ("bdver1");
+ 	  cpu_model->__cpu_subtype = AMDFAM15H_BDVER1;
+ 	}
+       break;
+     case 0x16:
+       /* AMD Family 16h "btver2" */
+       cpu = "btver2";
+       CHECK___builtin_cpu_is ("btver2");
+       cpu_model->__cpu_type = AMD_BTVER2;
+       break;
+     case 0x17:
+       cpu_model->__cpu_type = AMDFAM17H;
+       if (model <= 0x1f)
+ 	{
+ 	  /* AMD family 17h version 1.  */
+ 	  cpu = "znver1";
+ 	  CHECK___builtin_cpu_is ("znver1");
+ 	  cpu_model->__cpu_subtype = AMDFAM17H_ZNVER1;
+ 	}
+       else if (model >= 0x30)
+ 	{
+ 	  cpu = "znver2";
+ 	  CHECK___builtin_cpu_is ("znver2");
+ 	  cpu_model->__cpu_subtype = AMDFAM17H_ZNVER2;
+ 	}
+       else if (has_cpu_feature (cpu_model, cpu_features2,
+ 				FEATURE_CLWB))
+ 	{
+ 	  cpu = "znver2";
+ 	  CHECK___builtin_cpu_is ("znver2");
+ 	  cpu_model->__cpu_subtype = AMDFAM17H_ZNVER2;
+ 	}
+       else if (has_cpu_feature (cpu_model, cpu_features2,
+ 				FEATURE_CLZERO))
+ 	{
+ 	  cpu = "znver1";
+ 	  CHECK___builtin_cpu_is ("znver1");
+ 	  cpu_model->__cpu_subtype = AMDFAM17H_ZNVER1;
+ 	}
+       break;
+     case 0x19:
+       cpu_model->__cpu_type = AMDFAM19H;
+       /* AMD family 19h version 1.  */
+       if (model <= 0x0f)
+ 	{
+ 	  cpu = "znver3";
+ 	  CHECK___builtin_cpu_is ("znver3");
+ 	  cpu_model->__cpu_subtype = AMDFAM19H_ZNVER3;
+ 	}
+       else if (has_cpu_feature (cpu_model, cpu_features2,
+ 				FEATURE_VAES))
+ 	{
+ 	  cpu = "znver3";
+ 	  CHECK___builtin_cpu_is ("znver3");
+ 	  cpu_model->__cpu_subtype = AMDFAM19H_ZNVER3;
+ 	}
+       break;
+     default:
+       break;
+     }
+ 
+   return cpu;
+ }
+ 
+ /* Get the specific type of Intel CPU and return Intel CPU name.  Return
+    NULL for unknown Intel CPU.  */
+ 
+ static inline const char *
+ get_intel_cpu (struct __processor_model *cpu_model,
+ 	       struct __processor_model2 *cpu_model2,
+ 	       unsigned int *cpu_features2)
+ {
+   const char *cpu = NULL;
+ 
+   /* Parse family and model only for model 6. */
+   if (cpu_model2->__cpu_family != 0x6)
+     return cpu;
+ 
+   switch (cpu_model2->__cpu_model)
+     {
+     case 0x1c:
+     case 0x26:
+       /* Bonnell.  */
+       cpu = "bonnell";
+       CHECK___builtin_cpu_is ("atom");
+       cpu_model->__cpu_type = INTEL_BONNELL;
+       break;
+     case 0x37:
+     case 0x4a:
+     case 0x4d:
+     case 0x5d:
+       /* Silvermont.  */
+     case 0x4c:
+     case 0x5a:
+     case 0x75:
+       /* Airmont.  */
+       cpu = "silvermont";
+       CHECK___builtin_cpu_is ("silvermont");
+       cpu_model->__cpu_type = INTEL_SILVERMONT;
+       break;
+     case 0x5c:
+     case 0x5f:
+       /* Goldmont.  */
+       cpu = "goldmont";
+       CHECK___builtin_cpu_is ("goldmont");
+       cpu_model->__cpu_type = INTEL_GOLDMONT;
+       break;
+     case 0x7a:
+       /* Goldmont Plus.  */
+       cpu = "goldmont-plus";
+       CHECK___builtin_cpu_is ("goldmont-plus");
+       cpu_model->__cpu_type = INTEL_GOLDMONT_PLUS;
+       break;
+     case 0x86:
+     case 0x96:
+     case 0x9c:
+       /* Tremont.  */
+       cpu = "tremont";
+       CHECK___builtin_cpu_is ("tremont");
+       cpu_model->__cpu_type = INTEL_TREMONT;
+       break;
+     case 0x57:
+       /* Knights Landing.  */
+       cpu = "knl";
+       CHECK___builtin_cpu_is ("knl");
+       cpu_model->__cpu_type = INTEL_KNL;
+       break;
+     case 0x85:
+       /* Knights Mill. */
+       cpu = "knm";
+       CHECK___builtin_cpu_is ("knm");
+       cpu_model->__cpu_type = INTEL_KNM;
+       break;
+     case 0x1a:
+     case 0x1e:
+     case 0x1f:
+     case 0x2e:
+       /* Nehalem.  */
+       cpu = "nehalem";
+       CHECK___builtin_cpu_is ("corei7");
+       CHECK___builtin_cpu_is ("nehalem");
+       cpu_model->__cpu_type = INTEL_COREI7;
+       cpu_model->__cpu_subtype = INTEL_COREI7_NEHALEM;
+       break;
+     case 0x25:
+     case 0x2c:
+     case 0x2f:
+       /* Westmere.  */
+       cpu = "westmere";
+       CHECK___builtin_cpu_is ("corei7");
+       CHECK___builtin_cpu_is ("westmere");
+       cpu_model->__cpu_type = INTEL_COREI7;
+       cpu_model->__cpu_subtype = INTEL_COREI7_WESTMERE;
+       break;
+     case 0x2a:
+     case 0x2d:
+       /* Sandy Bridge.  */
+       cpu = "sandybridge";
+       CHECK___builtin_cpu_is ("corei7");
+       CHECK___builtin_cpu_is ("sandybridge");
+       cpu_model->__cpu_type = INTEL_COREI7;
+       cpu_model->__cpu_subtype = INTEL_COREI7_SANDYBRIDGE;
+       break;
+     case 0x3a:
+     case 0x3e:
+       /* Ivy Bridge.  */
+       cpu = "ivybridge";
+       CHECK___builtin_cpu_is ("corei7");
+       CHECK___builtin_cpu_is ("ivybridge");
+       cpu_model->__cpu_type = INTEL_COREI7;
+       cpu_model->__cpu_subtype = INTEL_COREI7_IVYBRIDGE;
+       break;
+     case 0x3c:
+     case 0x3f:
+     case 0x45:
+     case 0x46:
+       /* Haswell.  */
+       cpu = "haswell";
+       CHECK___builtin_cpu_is ("corei7");
+       CHECK___builtin_cpu_is ("haswell");
+       cpu_model->__cpu_type = INTEL_COREI7;
+       cpu_model->__cpu_subtype = INTEL_COREI7_HASWELL;
+       break;
+     case 0x3d:
+     case 0x47:
+     case 0x4f:
+     case 0x56:
+       /* Broadwell.  */
+       cpu = "broadwell";
+       CHECK___builtin_cpu_is ("corei7");
+       CHECK___builtin_cpu_is ("broadwell");
+       cpu_model->__cpu_type = INTEL_COREI7;
+       cpu_model->__cpu_subtype = INTEL_COREI7_BROADWELL;
+       break;
+     case 0x4e:
+     case 0x5e:
+       /* Skylake.  */
+     case 0x8e:
+     case 0x9e:
+       /* Kaby Lake.  */
+     case 0xa5:
+     case 0xa6:
+       /* Comet Lake.  */
+       cpu = "skylake";
+       CHECK___builtin_cpu_is ("corei7");
+       CHECK___builtin_cpu_is ("skylake");
+       cpu_model->__cpu_type = INTEL_COREI7;
+       cpu_model->__cpu_subtype = INTEL_COREI7_SKYLAKE;
+       break;
+     case 0xa7:
+       /* Rocket Lake.  */
+       cpu = "rocketlake";
+       CHECK___builtin_cpu_is ("corei7");
+       CHECK___builtin_cpu_is ("rocketlake");
+       cpu_model->__cpu_type = INTEL_COREI7;
+       cpu_model->__cpu_subtype = INTEL_COREI7_ROCKETLAKE;
+       break;
+     case 0x55:
+       CHECK___builtin_cpu_is ("corei7");
+       cpu_model->__cpu_type = INTEL_COREI7;
+       if (has_cpu_feature (cpu_model, cpu_features2,
+ 			   FEATURE_AVX512BF16))
+ 	{
+ 	  /* Cooper Lake.  */
+ 	  cpu = "cooperlake";
+ 	  CHECK___builtin_cpu_is ("cooperlake");
+ 	  cpu_model->__cpu_subtype = INTEL_COREI7_COOPERLAKE;
+ 	}
+       else if (has_cpu_feature (cpu_model, cpu_features2,
+ 				FEATURE_AVX512VNNI))
+ 	{
+ 	  /* Cascade Lake.  */
+ 	  cpu = "cascadelake";
+ 	  CHECK___builtin_cpu_is ("cascadelake");
+ 	  cpu_model->__cpu_subtype = INTEL_COREI7_CASCADELAKE;
+ 	}
+       else
+ 	{
+ 	  /* Skylake with AVX-512 support.  */
+ 	  cpu = "skylake-avx512";
+ 	  CHECK___builtin_cpu_is ("skylake-avx512");
+ 	  cpu_model->__cpu_subtype = INTEL_COREI7_SKYLAKE_AVX512;
+ 	}
+       break;
+     case 0x66:
+       /* Cannon Lake.  */
+       cpu = "cannonlake";
+       CHECK___builtin_cpu_is ("corei7");
+       CHECK___builtin_cpu_is ("cannonlake");
+       cpu_model->__cpu_type = INTEL_COREI7;
+       cpu_model->__cpu_subtype = INTEL_COREI7_CANNONLAKE;
+       break;
+     case 0x6a:
+     case 0x6c:
+       /* Ice Lake server.  */
+       cpu = "icelake-server";
+       CHECK___builtin_cpu_is ("corei7");
+       CHECK___builtin_cpu_is ("icelake-server");
+       cpu_model->__cpu_type = INTEL_COREI7;
+       cpu_model->__cpu_subtype = INTEL_COREI7_ICELAKE_SERVER;
+       break;
+     case 0x7e:
+     case 0x7d:
+     case 0x9d:
+        /* Ice Lake client.  */
+       cpu = "icelake-client";
+       CHECK___builtin_cpu_is ("corei7");
+       CHECK___builtin_cpu_is ("icelake-client");
+       cpu_model->__cpu_type = INTEL_COREI7;
+       cpu_model->__cpu_subtype = INTEL_COREI7_ICELAKE_CLIENT;
+       break;
+     case 0x8c:
+     case 0x8d:
+       /* Tiger Lake.  */
+       cpu = "tigerlake";
+       CHECK___builtin_cpu_is ("corei7");
+       CHECK___builtin_cpu_is ("tigerlake");
+       cpu_model->__cpu_type = INTEL_COREI7;
+       cpu_model->__cpu_subtype = INTEL_COREI7_TIGERLAKE;
+       break;
+     case 0x97:
+     case 0x9a:
+       /* Alder Lake.  */
+       cpu = "alderlake";
+       CHECK___builtin_cpu_is ("corei7");
+       CHECK___builtin_cpu_is ("alderlake");
+       cpu_model->__cpu_type = INTEL_COREI7;
+       cpu_model->__cpu_subtype = INTEL_COREI7_ALDERLAKE;
+       break;
+     case 0x8f:
+       /* Sapphire Rapids.  */
+       cpu = "sapphirerapids";
+       CHECK___builtin_cpu_is ("corei7");
+       CHECK___builtin_cpu_is ("sapphirerapids");
+       cpu_model->__cpu_type = INTEL_COREI7;
+       cpu_model->__cpu_subtype = INTEL_COREI7_SAPPHIRERAPIDS;
+       break;
+     case 0x17:
+     case 0x1d:
+       /* Penryn.  */
+     case 0x0f:
+       /* Merom.  */
+       cpu = "core2";
+       CHECK___builtin_cpu_is ("core2");
+       cpu_model->__cpu_type = INTEL_CORE2;
+       break;
+     default:
+       break;
+     }
+ 
+   return cpu;
+ }
+ 
+ /* ECX and EDX are output of CPUID at level one.  */
+ static inline void
+ get_available_features (struct __processor_model *cpu_model,
+ 			struct __processor_model2 *cpu_model2,
+ 			unsigned int *cpu_features2,
+ 			unsigned int ecx, unsigned int edx)
+ {
+   unsigned int max_cpuid_level = cpu_model2->__cpu_max_level;
+   unsigned int eax, ebx;
+   unsigned int ext_level;
+ 
+   /* Get XCR_XFEATURE_ENABLED_MASK register with xgetbv.  */
+ #define XCR_XFEATURE_ENABLED_MASK	0x0
+ #define XSTATE_FP			0x1
+ #define XSTATE_SSE			0x2
+ #define XSTATE_YMM			0x4
+ #define XSTATE_OPMASK			0x20
+ #define XSTATE_ZMM			0x40
+ #define XSTATE_HI_ZMM			0x80
+ #define XSTATE_TILECFG			0x20000
+ #define XSTATE_TILEDATA		0x40000
+ 
+ #define XCR_AVX_ENABLED_MASK \
+   (XSTATE_SSE | XSTATE_YMM)
+ #define XCR_AVX512F_ENABLED_MASK \
+   (XSTATE_SSE | XSTATE_YMM | XSTATE_OPMASK | XSTATE_ZMM | XSTATE_HI_ZMM)
+ #define XCR_AMX_ENABLED_MASK \
+   (XSTATE_TILECFG | XSTATE_TILEDATA)
+ 
+   /* Check if AVX and AVX512 are usable.  */
+   int avx_usable = 0;
+   int avx512_usable = 0;
+   int amx_usable = 0;
+   /* Check if KL is usable.  */
+   int has_kl = 0;
+   if ((ecx & bit_OSXSAVE))
+     {
+       /* Check if XMM, YMM, OPMASK, upper 256 bits of ZMM0-ZMM15 and
+ 	 ZMM16-ZMM31 states are supported by OSXSAVE.  */
+       unsigned int xcrlow;
+       unsigned int xcrhigh;
+       __asm__ (".byte 0x0f, 0x01, 0xd0"
+ 	       : "=a" (xcrlow), "=d" (xcrhigh)
+ 	       : "c" (XCR_XFEATURE_ENABLED_MASK));
+       if ((xcrlow & XCR_AVX_ENABLED_MASK) == XCR_AVX_ENABLED_MASK)
+ 	{
+ 	  avx_usable = 1;
+ 	  avx512_usable = ((xcrlow & XCR_AVX512F_ENABLED_MASK)
+ 			   == XCR_AVX512F_ENABLED_MASK);
+ 	}
+       amx_usable = ((xcrlow & XCR_AMX_ENABLED_MASK)
+ 		    == XCR_AMX_ENABLED_MASK);
+     }
+ 
+ #define set_feature(f) \
+   set_cpu_feature (cpu_model, cpu_features2, f)
+ 
+   if (edx & bit_CMOV)
+     set_feature (FEATURE_CMOV);
+   if (edx & bit_MMX)
+     set_feature (FEATURE_MMX);
+   if (edx & bit_SSE)
+     set_feature (FEATURE_SSE);
+   if (edx & bit_SSE2)
+     set_feature (FEATURE_SSE2);
+   if (edx & bit_CMPXCHG8B)
+     set_feature (FEATURE_CMPXCHG8B);
+   if (edx & bit_FXSAVE)
+     set_feature (FEATURE_FXSAVE);
+ 
+   if (ecx & bit_POPCNT)
+     set_feature (FEATURE_POPCNT);
+   if (ecx & bit_AES)
+     set_feature (FEATURE_AES);
+   if (ecx & bit_PCLMUL)
+     set_feature (FEATURE_PCLMUL);
+   if (ecx & bit_SSE3)
+     set_feature (FEATURE_SSE3);
+   if (ecx & bit_SSSE3)
+     set_feature (FEATURE_SSSE3);
+   if (ecx & bit_SSE4_1)
+     set_feature (FEATURE_SSE4_1);
+   if (ecx & bit_SSE4_2)
+     set_feature (FEATURE_SSE4_2);
+   if (ecx & bit_OSXSAVE)
+     set_feature (FEATURE_OSXSAVE);
+   if (ecx & bit_CMPXCHG16B)
+     set_feature (FEATURE_CMPXCHG16B);
+   if (ecx & bit_MOVBE)
+     set_feature (FEATURE_MOVBE);
+   if (ecx & bit_AES)
+     set_feature (FEATURE_AES);
+   if (ecx & bit_F16C)
+     set_feature (FEATURE_F16C);
+   if (ecx & bit_RDRND)
+     set_feature (FEATURE_RDRND);
+   if (ecx & bit_XSAVE)
+     set_feature (FEATURE_XSAVE);
+   if (avx_usable)
+     {
+       if (ecx & bit_AVX)
+ 	set_feature (FEATURE_AVX);
+       if (ecx & bit_FMA)
+ 	set_feature (FEATURE_FMA);
+     }
+ 
+   /* Get Advanced Features at level 7 (eax = 7, ecx = 0/1). */
+   if (max_cpuid_level >= 7)
+     {
+       __cpuid_count (7, 0, eax, ebx, ecx, edx);
+       if (ebx & bit_BMI)
+ 	set_feature (FEATURE_BMI);
+       if (ebx & bit_SGX)
+ 	set_feature (FEATURE_SGX);
+       if (ebx & bit_HLE)
+ 	set_feature (FEATURE_HLE);
+       if (ebx & bit_RTM)
+ 	set_feature (FEATURE_RTM);
+       if (avx_usable)
+ 	{
+ 	  if (ebx & bit_AVX2)
+ 	    set_feature (FEATURE_AVX2);
+ 	  if (ecx & bit_VPCLMULQDQ)
+ 	    set_feature (FEATURE_VPCLMULQDQ);
+ 	}
+       if (ebx & bit_BMI2)
+ 	set_feature (FEATURE_BMI2);
+       if (ebx & bit_FSGSBASE)
+ 	set_feature (FEATURE_FSGSBASE);
+       if (ebx & bit_RDSEED)
+ 	set_feature (FEATURE_RDSEED);
+       if (ebx & bit_ADX)
+ 	set_feature (FEATURE_ADX);
+       if (ebx & bit_SHA)
+ 	set_feature (FEATURE_SHA);
+       if (ebx & bit_CLFLUSHOPT)
+ 	set_feature (FEATURE_CLFLUSHOPT);
+       if (ebx & bit_CLWB)
+ 	set_feature (FEATURE_CLWB);
+       if (ecx & bit_PREFETCHWT1)
+ 	set_feature (FEATURE_PREFETCHWT1);
+       /* NB: bit_OSPKE indicates that OS supports PKU.  */
+       if (ecx & bit_OSPKE)
+ 	set_feature (FEATURE_PKU);
+       if (ecx & bit_RDPID)
+ 	set_feature (FEATURE_RDPID);
+       if (ecx & bit_VAES)
+ 	set_feature (FEATURE_VAES);
+       if (ecx & bit_GFNI)
+ 	set_feature (FEATURE_GFNI);
+       if (ecx & bit_MOVDIRI)
+ 	set_feature (FEATURE_MOVDIRI);
+       if (ecx & bit_MOVDIR64B)
+ 	set_feature (FEATURE_MOVDIR64B);
+       if (ecx & bit_ENQCMD)
+ 	set_feature (FEATURE_ENQCMD);
+       if (ecx & bit_CLDEMOTE)
+ 	set_feature (FEATURE_CLDEMOTE);
+       if (ecx & bit_WAITPKG)
+ 	set_feature (FEATURE_WAITPKG);
+       if (ecx & bit_SHSTK)
+ 	set_feature (FEATURE_SHSTK);
+       if (ecx & bit_KL)
+ 	has_kl = 1;
+       if (edx & bit_SERIALIZE)
+ 	set_feature (FEATURE_SERIALIZE);
+       if (edx & bit_TSXLDTRK)
+ 	set_feature (FEATURE_TSXLDTRK);
+       if (edx & bit_PCONFIG)
+ 	set_feature (FEATURE_PCONFIG);
+       if (edx & bit_IBT)
+ 	set_feature (FEATURE_IBT);
+       if (edx & bit_UINTR)
+ 	set_feature (FEATURE_UINTR);
+       if (amx_usable)
+ 	{
+ 	  if (edx & bit_AMX_TILE)
+ 	    set_feature (FEATURE_AMX_TILE);
+ 	  if (edx & bit_AMX_INT8)
+ 	    set_feature (FEATURE_AMX_INT8);
+ 	  if (edx & bit_AMX_BF16)
+ 	    set_feature (FEATURE_AMX_BF16);
+ 	}
+       if (avx512_usable)
+ 	{
+ 	  if (ebx & bit_AVX512F)
+ 	    set_feature (FEATURE_AVX512F);
+ 	  if (ebx & bit_AVX512VL)
+ 	    set_feature (FEATURE_AVX512VL);
+ 	  if (ebx & bit_AVX512BW)
+ 	    set_feature (FEATURE_AVX512BW);
+ 	  if (ebx & bit_AVX512DQ)
+ 	    set_feature (FEATURE_AVX512DQ);
+ 	  if (ebx & bit_AVX512CD)
+ 	    set_feature (FEATURE_AVX512CD);
+ 	  if (ebx & bit_AVX512PF)
+ 	    set_feature (FEATURE_AVX512PF);
+ 	  if (ebx & bit_AVX512ER)
+ 	    set_feature (FEATURE_AVX512ER);
+ 	  if (ebx & bit_AVX512IFMA)
+ 	    set_feature (FEATURE_AVX512IFMA);
+ 	  if (ecx & bit_AVX512VBMI)
+ 	    set_feature (FEATURE_AVX512VBMI);
+ 	  if (ecx & bit_AVX512VBMI2)
+ 	    set_feature (FEATURE_AVX512VBMI2);
+ 	  if (ecx & bit_AVX512VNNI)
+ 	    set_feature (FEATURE_AVX512VNNI);
+ 	  if (ecx & bit_AVX512BITALG)
+ 	    set_feature (FEATURE_AVX512BITALG);
+ 	  if (ecx & bit_AVX512VPOPCNTDQ)
+ 	    set_feature (FEATURE_AVX512VPOPCNTDQ);
+ 	  if (edx & bit_AVX5124VNNIW)
+ 	    set_feature (FEATURE_AVX5124VNNIW);
+ 	  if (edx & bit_AVX5124FMAPS)
+ 	    set_feature (FEATURE_AVX5124FMAPS);
+ 	  if (edx & bit_AVX512VP2INTERSECT)
+ 	    set_feature (FEATURE_AVX512VP2INTERSECT);
+ 	}
+ 
+       __cpuid_count (7, 1, eax, ebx, ecx, edx);
+       if (eax & bit_HRESET)
+ 	set_feature (FEATURE_HRESET);
+       if (avx_usable)
+ 	{
+ 	  if (eax & bit_AVXVNNI)
+ 	    set_feature (FEATURE_AVXVNNI);
+ 	}
+       if (avx512_usable)
+ 	{
+ 	  if (eax & bit_AVX512BF16)
+ 	    set_feature (FEATURE_AVX512BF16);
+ 	}
+     }
+ 
+   /* Get Advanced Features at level 0xd (eax = 0xd, ecx = 1). */
+   if (max_cpuid_level >= 0xd)
+     {
+       __cpuid_count (0xd, 1, eax, ebx, ecx, edx);
+       if (eax & bit_XSAVEOPT)
+ 	set_feature (FEATURE_XSAVEOPT);
+       if (eax & bit_XSAVEC)
+ 	set_feature (FEATURE_XSAVEC);
+       if (eax & bit_XSAVES)
+ 	set_feature (FEATURE_XSAVES);
+     }
+ 
+   /* Get Advanced Features at level 0x14 (eax = 0x14, ecx = 0). */
+   if (max_cpuid_level >= 0x14)
+     {
+       __cpuid_count (0x14, 0, eax, ebx, ecx, edx);
+       if (ebx & bit_PTWRITE)
+ 	set_feature (FEATURE_PTWRITE);
+     }
+ 
+   /* Get Advanced Features at level 0x19 (eax = 0x19).  */
+   if (max_cpuid_level >= 0x19)
+     {
+       set_feature (FEATURE_AESKLE);
+       __cpuid (19, eax, ebx, ecx, edx);
+       /* Check if OS support keylocker.  */
+       if (ebx & bit_AESKLE)
+ 	{
+ 	  if (ebx & bit_WIDEKL)
+ 	    set_feature (FEATURE_WIDEKL);
+ 	  if (has_kl)
+ 	    set_feature (FEATURE_KL);
+ 	}
+     }
+ 
+   /* Check cpuid level of extended features.  */
+   __cpuid (0x80000000, ext_level, ebx, ecx, edx);
+ 
+   cpu_model2->__cpu_ext_level = ext_level;
+ 
+   if (ext_level >= 0x80000001)
+     {
+       __cpuid (0x80000001, eax, ebx, ecx, edx);
+ 
+       if (ecx & bit_SSE4a)
+ 	set_feature (FEATURE_SSE4_A);
+       if (ecx & bit_LAHF_LM)
+ 	set_feature (FEATURE_LAHF_LM);
+       if (ecx & bit_ABM)
+ 	set_feature (FEATURE_ABM);
+       if (ecx & bit_LWP)
+ 	set_feature (FEATURE_LWP);
+       if (ecx & bit_TBM)
+ 	set_feature (FEATURE_TBM);
+       if (ecx & bit_LZCNT)
+ 	set_feature (FEATURE_LZCNT);
+       if (ecx & bit_PRFCHW)
+ 	set_feature (FEATURE_PRFCHW);
+       if (ecx & bit_MWAITX)
+ 	set_feature (FEATURE_MWAITX);
+ 
+       if (edx & bit_LM)
+ 	set_feature (FEATURE_LM);
+       if (edx & bit_3DNOWP)
+ 	set_feature (FEATURE_3DNOWP);
+       if (edx & bit_3DNOW)
+ 	set_feature (FEATURE_3DNOW);
+ 
+       if (avx_usable)
+ 	{
+ 	  if (ecx & bit_FMA4)
+ 	    set_feature (FEATURE_FMA4);
+ 	  if (ecx & bit_XOP)
+ 	    set_feature (FEATURE_XOP);
+ 	}
+     }
+ 
+   if (ext_level >= 0x80000008)
+     {
+       __cpuid (0x80000008, eax, ebx, ecx, edx);
+       if (ebx & bit_CLZERO)
+ 	set_feature (FEATURE_CLZERO);
+       if (ebx & bit_WBNOINVD)
+ 	set_feature (FEATURE_WBNOINVD);
+     }
+ 
+ #undef set_feature
+ }
+ 
+ static inline int
+ cpu_indicator_init (struct __processor_model *cpu_model,
+ 		    struct __processor_model2 *cpu_model2,
+ 		    unsigned int *cpu_features2)
+ {
+   unsigned int eax, ebx, ecx, edx;
+ 
+   int max_level;
+   unsigned int vendor;
+   unsigned int model, family;
+   unsigned int extended_model, extended_family;
+ 
+   /* This function needs to run just once.  */
+   if (cpu_model->__cpu_vendor)
+     return 0;
+ 
+   /* Assume cpuid insn present. Run in level 0 to get vendor id. */
+   if (!__get_cpuid (0, &eax, &ebx, &ecx, &edx))
+     {
+       cpu_model->__cpu_vendor = VENDOR_OTHER;
+       return -1;
+     }
+ 
+   vendor = ebx;
+   max_level = eax;
+ 
+   if (max_level < 1)
+     {
+       cpu_model->__cpu_vendor = VENDOR_OTHER;
+       return -1;
+     }
+ 
+   if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
+     {
+       cpu_model->__cpu_vendor = VENDOR_OTHER;
+       return -1;
+     }
+ 
+   cpu_model2->__cpu_max_level = max_level;
+ 
+   model = (eax >> 4) & 0x0f;
+   family = (eax >> 8) & 0x0f;
+   extended_model = (eax >> 12) & 0xf0;
+   extended_family = (eax >> 20) & 0xff;
+ 
+   if (vendor == signature_INTEL_ebx)
+     {
+       /* Adjust model and family for Intel CPUS. */
+       if (family == 0x0f)
+ 	{
+ 	  family += extended_family;
+ 	  model += extended_model;
+ 	}
+       else if (family == 0x06)
+ 	model += extended_model;
+ 
+       cpu_model2->__cpu_family = family;
+       cpu_model2->__cpu_model = model;
+ 
+       /* Find available features. */
+       get_available_features (cpu_model, cpu_model2, cpu_features2,
+ 			      ecx, edx);
+       /* Get CPU type.  */
+       get_intel_cpu (cpu_model, cpu_model2, cpu_features2);
+       cpu_model->__cpu_vendor = VENDOR_INTEL;
+     }
+   else if (vendor == signature_AMD_ebx)
+     {
+       /* Adjust model and family for AMD CPUS. */
+       if (family == 0x0f)
+ 	{
+ 	  family += extended_family;
+ 	  model += extended_model;
+ 	}
+ 
+       cpu_model2->__cpu_family = family;
+       cpu_model2->__cpu_model = model;
+ 
+       /* Find available features. */
+       get_available_features (cpu_model, cpu_model2, cpu_features2,
+ 			      ecx, edx);
+       /* Get CPU type.  */
+       get_amd_cpu (cpu_model, cpu_model2, cpu_features2);
+       cpu_model->__cpu_vendor = VENDOR_AMD;
+     }
+   else if (vendor == signature_CENTAUR_ebx)
+     cpu_model->__cpu_vendor = VENDOR_CENTAUR;
+   else if (vendor == signature_CYRIX_ebx)
+     cpu_model->__cpu_vendor = VENDOR_CYRIX;
+   else if (vendor == signature_NSC_ebx)
+     cpu_model->__cpu_vendor = VENDOR_NSC;
+   else
+     cpu_model->__cpu_vendor = VENDOR_OTHER;
+ 
+   gcc_assert (cpu_model->__cpu_vendor < VENDOR_MAX);
+   gcc_assert (cpu_model->__cpu_type < CPU_TYPE_MAX);
+   gcc_assert (cpu_model->__cpu_subtype < CPU_SUBTYPE_MAX);
+ 
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/common/config/i386/i386-common.c gcc-11.1.0/gcc/common/config/i386/i386-common.c
*** gcc-10.3.0/gcc/common/config/i386/i386-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/i386/i386-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* IA-32 common hooks.
!    Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* IA-32 common hooks.
!    Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 84,89 ****
--- 84,90 ----
    (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512F_SET)
  #define OPTION_MASK_ISA_AVX512VNNI_SET \
    (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512F_SET)
+ #define OPTION_MASK_ISA2_AVXVNNI_SET OPTION_MASK_ISA2_AVXVNNI
  #define OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET \
    (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512F_SET)
  #define OPTION_MASK_ISA_AVX512BITALG_SET \
*************** along with GCC; see the file COPYING3.
*** 101,106 ****
--- 102,110 ----
    (OPTION_MASK_ISA_XSAVEC | OPTION_MASK_ISA_XSAVE_SET)
  #define OPTION_MASK_ISA_CLWB_SET OPTION_MASK_ISA_CLWB
  #define OPTION_MASK_ISA2_AVX512VP2INTERSECT_SET OPTION_MASK_ISA2_AVX512VP2INTERSECT
+ #define OPTION_MASK_ISA2_AMX_TILE_SET OPTION_MASK_ISA2_AMX_TILE
+ #define OPTION_MASK_ISA2_AMX_INT8_SET OPTION_MASK_ISA2_AMX_INT8
+ #define OPTION_MASK_ISA2_AMX_BF16_SET OPTION_MASK_ISA2_AMX_BF16
  
  /* SSE4 includes both SSE4.1 and SSE4.2. -msse4 should be the same
     as -msse4.2.  */
*************** along with GCC; see the file COPYING3.
*** 158,163 ****
--- 162,174 ----
  #define OPTION_MASK_ISA2_WAITPKG_SET OPTION_MASK_ISA2_WAITPKG
  #define OPTION_MASK_ISA2_CLDEMOTE_SET OPTION_MASK_ISA2_CLDEMOTE
  #define OPTION_MASK_ISA2_ENQCMD_SET OPTION_MASK_ISA2_ENQCMD
+ #define OPTION_MASK_ISA2_SERIALIZE_SET OPTION_MASK_ISA2_SERIALIZE
+ #define OPTION_MASK_ISA2_TSXLDTRK_SET OPTION_MASK_ISA2_TSXLDTRK
+ #define OPTION_MASK_ISA2_UINTR_SET OPTION_MASK_ISA2_UINTR
+ #define OPTION_MASK_ISA2_HRESET_SET OPTION_MASK_ISA2_HRESET
+ #define OPTION_MASK_ISA2_KL_SET OPTION_MASK_ISA2_KL
+ #define OPTION_MASK_ISA2_WIDEKL_SET \
+   (OPTION_MASK_ISA2_WIDEKL | OPTION_MASK_ISA2_KL_SET)
  
  /* Define a set of ISAs which aren't available when a given ISA is
     disabled.  MMX and SSE ISAs are handled separately.  */
*************** along with GCC; see the file COPYING3.
*** 192,200 ****
--- 203,214 ----
    (OPTION_MASK_ISA_XSAVE | OPTION_MASK_ISA_XSAVEOPT_UNSET \
     | OPTION_MASK_ISA_XSAVES_UNSET | OPTION_MASK_ISA_XSAVEC_UNSET \
     | OPTION_MASK_ISA_AVX_UNSET)
+ #define OPTION_MASK_ISA2_XSAVE_UNSET OPTION_MASK_ISA2_AMX_TILE_UNSET
  #define OPTION_MASK_ISA_XSAVEOPT_UNSET OPTION_MASK_ISA_XSAVEOPT
  #define OPTION_MASK_ISA_AVX2_UNSET \
    (OPTION_MASK_ISA_AVX2 | OPTION_MASK_ISA_AVX512F_UNSET)
+ #define OPTION_MASK_ISA2_AVX2_UNSET \
+   (OPTION_MASK_ISA2_AVXVNNI_UNSET | OPTION_MASK_ISA2_AVX512F_UNSET)
  #define OPTION_MASK_ISA_AVX512F_UNSET \
    (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_AVX512CD_UNSET \
     | OPTION_MASK_ISA_AVX512PF_UNSET | OPTION_MASK_ISA_AVX512ER_UNSET \
*************** along with GCC; see the file COPYING3.
*** 217,222 ****
--- 231,237 ----
  #define OPTION_MASK_ISA2_AVX5124VNNIW_UNSET OPTION_MASK_ISA2_AVX5124VNNIW
  #define OPTION_MASK_ISA_AVX512VBMI2_UNSET OPTION_MASK_ISA_AVX512VBMI2
  #define OPTION_MASK_ISA_AVX512VNNI_UNSET OPTION_MASK_ISA_AVX512VNNI
+ #define OPTION_MASK_ISA2_AVXVNNI_UNSET OPTION_MASK_ISA2_AVXVNNI
  #define OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET OPTION_MASK_ISA_AVX512VPOPCNTDQ
  #define OPTION_MASK_ISA_AVX512BITALG_UNSET OPTION_MASK_ISA_AVX512BITALG
  #define OPTION_MASK_ISA2_AVX512BF16_UNSET OPTION_MASK_ISA2_AVX512BF16
*************** along with GCC; see the file COPYING3.
*** 242,248 ****
--- 257,273 ----
  #define OPTION_MASK_ISA2_WAITPKG_UNSET OPTION_MASK_ISA2_WAITPKG
  #define OPTION_MASK_ISA2_CLDEMOTE_UNSET OPTION_MASK_ISA2_CLDEMOTE
  #define OPTION_MASK_ISA2_ENQCMD_UNSET OPTION_MASK_ISA2_ENQCMD
+ #define OPTION_MASK_ISA2_SERIALIZE_UNSET OPTION_MASK_ISA2_SERIALIZE
  #define OPTION_MASK_ISA2_AVX512VP2INTERSECT_UNSET OPTION_MASK_ISA2_AVX512VP2INTERSECT
+ #define OPTION_MASK_ISA2_TSXLDTRK_UNSET OPTION_MASK_ISA2_TSXLDTRK
+ #define OPTION_MASK_ISA2_AMX_TILE_UNSET OPTION_MASK_ISA2_AMX_TILE
+ #define OPTION_MASK_ISA2_AMX_INT8_UNSET OPTION_MASK_ISA2_AMX_INT8
+ #define OPTION_MASK_ISA2_AMX_BF16_UNSET OPTION_MASK_ISA2_AMX_BF16
+ #define OPTION_MASK_ISA2_UINTR_UNSET OPTION_MASK_ISA2_UINTR
+ #define OPTION_MASK_ISA2_HRESET_UNSET OPTION_MASK_ISA2_HRESET
+ #define OPTION_MASK_ISA2_KL_UNSET \
+   (OPTION_MASK_ISA2_KL | OPTION_MASK_ISA2_WIDEKL_UNSET)
+ #define OPTION_MASK_ISA2_WIDEKL_UNSET OPTION_MASK_ISA2_WIDEKL
  
  /* SSE4 includes both SSE4.1 and SSE4.2.  -mno-sse4 should the same
     as -mno-sse4.1. */
*************** along with GCC; see the file COPYING3.
*** 289,294 ****
--- 314,328 ----
     | OPTION_MASK_ISA2_AVX512VP2INTERSECT_UNSET)
  #define OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET \
    (OPTION_MASK_ISA2_AVX512F_UNSET)
+ #define OPTION_MASK_ISA2_AVX_UNSET OPTION_MASK_ISA2_AVX2_UNSET
+ #define OPTION_MASK_ISA2_SSE4_2_UNSET OPTION_MASK_ISA2_AVX_UNSET
+ #define OPTION_MASK_ISA2_SSE4_1_UNSET OPTION_MASK_ISA2_SSE4_2_UNSET
+ #define OPTION_MASK_ISA2_SSE4_UNSET OPTION_MASK_ISA2_SSE4_1_UNSET
+ #define OPTION_MASK_ISA2_SSSE3_UNSET OPTION_MASK_ISA2_SSE4_1_UNSET
+ #define OPTION_MASK_ISA2_SSE3_UNSET OPTION_MASK_ISA2_SSSE3_UNSET
+ #define OPTION_MASK_ISA2_SSE2_UNSET \
+   (OPTION_MASK_ISA2_SSE3_UNSET | OPTION_MASK_ISA2_KL_UNSET)
+ #define OPTION_MASK_ISA2_SSE_UNSET OPTION_MASK_ISA2_SSE2_UNSET
  
  #define OPTION_MASK_ISA2_AVX512BW_UNSET OPTION_MASK_ISA2_AVX512BF16_UNSET
  
*************** ix86_handle_option (struct gcc_options *
*** 384,391 ****
  	{
  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE_UNSET;
  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE_UNSET;
! 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
! 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
  	}
        return true;
  
--- 418,425 ----
  	{
  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE_UNSET;
  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE_UNSET;
! 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SSE_UNSET;
! 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SSE_UNSET;
  	}
        return true;
  
*************** ix86_handle_option (struct gcc_options *
*** 399,406 ****
  	{
  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE2_UNSET;
  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_UNSET;
! 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
! 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
  	}
        return true;
  
--- 433,440 ----
  	{
  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE2_UNSET;
  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_UNSET;
! 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SSE2_UNSET;
! 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SSE2_UNSET;
  	}
        return true;
  
*************** ix86_handle_option (struct gcc_options *
*** 414,421 ****
  	{
  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE3_UNSET;
  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3_UNSET;
! 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
! 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
  	}
        return true;
  
--- 448,455 ----
  	{
  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE3_UNSET;
  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3_UNSET;
! 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SSE3_UNSET;
! 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SSE3_UNSET;
  	}
        return true;
  
*************** ix86_handle_option (struct gcc_options *
*** 429,436 ****
  	{
  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSSE3_UNSET;
  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3_UNSET;
! 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
! 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
  	}
        return true;
  
--- 463,470 ----
  	{
  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSSE3_UNSET;
  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3_UNSET;
! 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SSSE3_UNSET;
! 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SSSE3_UNSET;
  	}
        return true;
  
*************** ix86_handle_option (struct gcc_options *
*** 444,451 ****
  	{
  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_1_UNSET;
  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1_UNSET;
! 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
! 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
  	}
        return true;
  
--- 478,485 ----
  	{
  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_1_UNSET;
  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1_UNSET;
! 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SSE4_1_UNSET;
! 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SSE4_1_UNSET;
  	}
        return true;
  
*************** ix86_handle_option (struct gcc_options *
*** 459,466 ****
  	{
  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_2_UNSET;
  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2_UNSET;
! 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
! 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
  	}
        return true;
  
--- 493,500 ----
  	{
  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_2_UNSET;
  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2_UNSET;
! 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SSE4_2_UNSET;
! 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SSE4_2_UNSET;
  	}
        return true;
  
*************** ix86_handle_option (struct gcc_options *
*** 474,481 ****
  	{
  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX_UNSET;
  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX_UNSET;
! 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
! 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
  	}
        return true;
  
--- 508,515 ----
  	{
  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX_UNSET;
  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX_UNSET;
! 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX_UNSET;
! 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX_UNSET;
  	}
        return true;
  
*************** ix86_handle_option (struct gcc_options *
*** 489,496 ****
  	{
  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX2_UNSET;
  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_UNSET;
! 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
! 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
  	}
        return true;
  
--- 523,530 ----
  	{
  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX2_UNSET;
  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_UNSET;
! 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX2_UNSET;
! 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX2_UNSET;
  	}
        return true;
  
*************** ix86_handle_option (struct gcc_options *
*** 676,681 ****
--- 710,788 ----
  	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_ENQCMD_UNSET;
  	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_ENQCMD_UNSET;
  	}
+ 	return true;
+ 
+     case OPT_mkl:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_KL_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_KL_SET;
+ 
+ 	  /* The Keylocker instructions need XMM registers from SSE2.  */
+ 	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE2_SET;
+ 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_KL_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_KL_UNSET;
+ 	}
+       return true;
+ 
+     case OPT_mwidekl:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_WIDEKL_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_WIDEKL_SET;
+ 
+ 	  /* The Widekl instructions need XMM registers from SSE2.  */
+ 	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE2_SET;
+ 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_WIDEKL_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_WIDEKL_UNSET;
+ 	}
+       return true;
+ 
+     case OPT_mserialize:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_SERIALIZE_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SERIALIZE_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SERIALIZE_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SERIALIZE_UNSET;
+ 	}
+       return true;
+ 
+     case OPT_muintr:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_UINTR_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_UINTR_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_UINTR_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_UINTR_UNSET;
+ 	}
+       return true;
+     
+     case OPT_mhreset:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_HRESET_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_HRESET_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_HRESET_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_HRESET_UNSET;
+ 	}
        return true;
  
      case OPT_mavx5124fmaps:
*************** ix86_handle_option (struct gcc_options *
*** 778,783 ****
--- 885,905 ----
  	}
        return true;
  
+     case OPT_mavxvnni:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVXVNNI_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVXVNNI_SET;
+ 	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX2_SET;
+ 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVXVNNI_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVXVNNI_UNSET;
+ 	}
+       return true;
+ 
      case OPT_msgx:
        if (value)
  	{
*************** ix86_handle_option (struct gcc_options *
*** 901,906 ****
--- 1023,1082 ----
  	}
        return true;
  
+     case OPT_mtsxldtrk:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_TSXLDTRK_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_TSXLDTRK_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_TSXLDTRK_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_TSXLDTRK_UNSET;
+ 	}
+       return true;
+ 
+     case OPT_mamx_tile:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AMX_TILE_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_TILE_SET;
+ 	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_XSAVE_SET;
+ 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVE_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AMX_TILE_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_TILE_UNSET;
+ 	}
+       return true;
+ 
+     case OPT_mamx_int8:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AMX_INT8_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_INT8_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AMX_INT8_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_INT8_UNSET;
+ 	}
+       return true;
+ 
+     case OPT_mamx_bf16:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AMX_BF16_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_BF16_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AMX_BF16_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_BF16_UNSET;
+ 	}
+       return true;
+ 
      case OPT_mfma:
        if (value)
  	{
*************** ix86_handle_option (struct gcc_options *
*** 935,942 ****
      case OPT_mno_sse4:
        opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_UNSET;
        opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_UNSET;
!       opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
!       opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
        return true;
  
      case OPT_msse4a:
--- 1111,1118 ----
      case OPT_mno_sse4:
        opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_UNSET;
        opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_UNSET;
!       opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SSE4_UNSET;
!       opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SSE4_UNSET;
        return true;
  
      case OPT_msse4a:
*************** ix86_handle_option (struct gcc_options *
*** 1235,1240 ****
--- 1411,1418 ----
  	{
  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_XSAVE_UNSET;
  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVE_UNSET;
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_XSAVE_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_XSAVE_UNSET;
  	}
        return true;
  
*************** const char *const processor_names[] =
*** 1565,1574 ****
--- 1743,1755 ----
    "skylake-avx512",
    "cannonlake",
    "icelake-client",
+   "rocketlake",
    "icelake-server",
    "cascadelake",
    "tigerlake",
    "cooperlake",
+   "sapphirerapids",
+   "alderlake",
    "intel",
    "geode",
    "k6",
*************** const pta processor_alias_table[] =
*** 1665,1670 ****
--- 1846,1854 ----
    {"icelake-client", PROCESSOR_ICELAKE_CLIENT, CPU_HASWELL,
      PTA_ICELAKE_CLIENT,
      M_CPU_SUBTYPE (INTEL_COREI7_ICELAKE_CLIENT), P_PROC_AVX512F},
+   {"rocketlake", PROCESSOR_ROCKETLAKE, CPU_HASWELL,
+     PTA_ROCKETLAKE,
+     M_CPU_SUBTYPE (INTEL_COREI7_ROCKETLAKE), P_PROC_AVX512F},
    {"icelake-server", PROCESSOR_ICELAKE_SERVER, CPU_HASWELL,
      PTA_ICELAKE_SERVER,
      M_CPU_SUBTYPE (INTEL_COREI7_ICELAKE_SERVER), P_PROC_AVX512F},
*************** const pta processor_alias_table[] =
*** 1675,1680 ****
--- 1859,1868 ----
      M_CPU_SUBTYPE (INTEL_COREI7_TIGERLAKE), P_PROC_AVX512F},
    {"cooperlake", PROCESSOR_COOPERLAKE, CPU_HASWELL, PTA_COOPERLAKE,
      M_CPU_SUBTYPE (INTEL_COREI7_COOPERLAKE), P_PROC_AVX512F},
+   {"sapphirerapids", PROCESSOR_SAPPHIRERAPIDS, CPU_HASWELL, PTA_SAPPHIRERAPIDS,
+     M_CPU_SUBTYPE (INTEL_COREI7_SAPPHIRERAPIDS), P_PROC_AVX512F},
+   {"alderlake", PROCESSOR_ALDERLAKE, CPU_HASWELL, PTA_ALDERLAKE,
+     M_CPU_SUBTYPE (INTEL_COREI7_ALDERLAKE), P_PROC_AVX2},
    {"bonnell", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
      M_CPU_TYPE (INTEL_BONNELL), P_PROC_SSSE3},
    {"atom", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
*************** const pta processor_alias_table[] =
*** 1710,1718 ****
      PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE | PTA_FXSR, 0, P_NONE},
    {"athlon-mp", PROCESSOR_ATHLON, CPU_ATHLON,
      PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE | PTA_FXSR, 0, P_NONE},
!   {"x86-64", PROCESSOR_K8, CPU_K8,
!     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_NO_SAHF | PTA_FXSR,
!     0, P_NONE},
    {"eden-x2", PROCESSOR_K8, CPU_K8,
      PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_FXSR,
      0, P_NONE},
--- 1898,1910 ----
      PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE | PTA_FXSR, 0, P_NONE},
    {"athlon-mp", PROCESSOR_ATHLON, CPU_ATHLON,
      PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE | PTA_FXSR, 0, P_NONE},
!   {"x86-64", PROCESSOR_K8, CPU_K8, PTA_X86_64_BASELINE, 0, P_NONE},
!   {"x86-64-v2", PROCESSOR_K8, CPU_GENERIC, PTA_X86_64_V2 | PTA_NO_TUNE,
!    0, P_NONE},
!   {"x86-64-v3", PROCESSOR_K8, CPU_GENERIC, PTA_X86_64_V3 | PTA_NO_TUNE,
!    0, P_NONE},
!   {"x86-64-v4", PROCESSOR_K8, CPU_GENERIC, PTA_X86_64_V4 | PTA_NO_TUNE,
!    0, P_NONE},
    {"eden-x2", PROCESSOR_K8, CPU_K8,
      PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_FXSR,
      0, P_NONE},
*************** const pta processor_alias_table[] =
*** 1817,1823 ****
        | PTA_SHA | PTA_LZCNT | PTA_POPCNT | PTA_CLWB | PTA_RDPID
        | PTA_WBNOINVD,
      M_CPU_SUBTYPE (AMDFAM17H_ZNVER2), P_PROC_AVX2},
!   {"znver3", PROCESSOR_ZNVER2, CPU_ZNVER2,
      PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
        | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_SSSE3 | PTA_SSE4_1
        | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX | PTA_AVX2
--- 2009,2015 ----
        | PTA_SHA | PTA_LZCNT | PTA_POPCNT | PTA_CLWB | PTA_RDPID
        | PTA_WBNOINVD,
      M_CPU_SUBTYPE (AMDFAM17H_ZNVER2), P_PROC_AVX2},
!   {"znver3", PROCESSOR_ZNVER3, CPU_ZNVER3,
      PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
        | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_SSSE3 | PTA_SSE4_1
        | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX | PTA_AVX2
*************** const pta processor_alias_table[] =
*** 1863,1869 ****
  };
  
  /* NB: processor_alias_table stops at the "generic" entry.  */
! int const pta_size = ARRAY_SIZE (processor_alias_table) - 7;
  unsigned int const num_arch_names = ARRAY_SIZE (processor_alias_table);
  
  /* Provide valid option values for -march and -mtune options.  */
--- 2055,2061 ----
  };
  
  /* NB: processor_alias_table stops at the "generic" entry.  */
! unsigned int const pta_size = ARRAY_SIZE (processor_alias_table) - 7;
  unsigned int const num_arch_names = ARRAY_SIZE (processor_alias_table);
  
  /* Provide valid option values for -march and -mtune options.  */
diff -Nrcpad gcc-10.3.0/gcc/common/config/i386/i386-cpuinfo.h gcc-11.1.0/gcc/common/config/i386/i386-cpuinfo.h
*** gcc-10.3.0/gcc/common/config/i386/i386-cpuinfo.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/i386/i386-cpuinfo.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Get CPU type and Features for x86 processors.
!    Copyright (C) 2012-2020 Free Software Foundation, Inc.
     Contributed by Sriraman Tallam (tmsriram@google.com)
  
  This file is part of GCC.
--- 1,5 ----
  /* Get CPU type and Features for x86 processors.
!    Copyright (C) 2012-2021 Free Software Foundation, Inc.
     Contributed by Sriraman Tallam (tmsriram@google.com)
  
  This file is part of GCC.
*************** enum processor_vendor
*** 30,35 ****
--- 30,38 ----
    VENDOR_INTEL = 1,
    VENDOR_AMD,
    VENDOR_OTHER,
+   VENDOR_CENTAUR,
+   VENDOR_CYRIX,
+   VENDOR_NSC,
    BUILTIN_VENDOR_MAX = VENDOR_OTHER,
    VENDOR_MAX
  };
*************** enum processor_subtypes
*** 82,88 ****
--- 85,94 ----
    INTEL_COREI7_CASCADELAKE,
    INTEL_COREI7_TIGERLAKE,
    INTEL_COREI7_COOPERLAKE,
+   INTEL_COREI7_SAPPHIRERAPIDS,
+   INTEL_COREI7_ALDERLAKE,
    AMDFAM19H_ZNVER3,
+   INTEL_COREI7_ROCKETLAKE,
    CPU_SUBTYPE_MAX
  };
  
*************** enum feature_priority
*** 124,129 ****
--- 130,239 ----
    P_PROC_DYNAMIC
  };
  
+ /* ISA Features supported. New features have to be inserted at the end.  */
+ 
+ enum processor_features
+ {
+   FEATURE_CMOV = 0,
+   FEATURE_MMX,
+   FEATURE_POPCNT,
+   FEATURE_SSE,
+   FEATURE_SSE2,
+   FEATURE_SSE3,
+   FEATURE_SSSE3,
+   FEATURE_SSE4_1,
+   FEATURE_SSE4_2,
+   FEATURE_AVX,
+   FEATURE_AVX2,
+   FEATURE_SSE4_A,
+   FEATURE_FMA4,
+   FEATURE_XOP,
+   FEATURE_FMA,
+   FEATURE_AVX512F,
+   FEATURE_BMI,
+   FEATURE_BMI2,
+   FEATURE_AES,
+   FEATURE_PCLMUL,
+   FEATURE_AVX512VL,
+   FEATURE_AVX512BW,
+   FEATURE_AVX512DQ,
+   FEATURE_AVX512CD,
+   FEATURE_AVX512ER,
+   FEATURE_AVX512PF,
+   FEATURE_AVX512VBMI,
+   FEATURE_AVX512IFMA,
+   FEATURE_AVX5124VNNIW,
+   FEATURE_AVX5124FMAPS,
+   FEATURE_AVX512VPOPCNTDQ,
+   FEATURE_AVX512VBMI2,
+   FEATURE_GFNI,
+   FEATURE_VPCLMULQDQ,
+   FEATURE_AVX512VNNI,
+   FEATURE_AVX512BITALG,
+   FEATURE_AVX512BF16,
+   FEATURE_AVX512VP2INTERSECT,
+   FEATURE_3DNOW,
+   FEATURE_3DNOWP,
+   FEATURE_ADX,
+   FEATURE_ABM,
+   FEATURE_CLDEMOTE,
+   FEATURE_CLFLUSHOPT,
+   FEATURE_CLWB,
+   FEATURE_CLZERO,
+   FEATURE_CMPXCHG16B,
+   FEATURE_CMPXCHG8B,
+   FEATURE_ENQCMD,
+   FEATURE_F16C,
+   FEATURE_FSGSBASE,
+   FEATURE_FXSAVE,
+   FEATURE_HLE,
+   FEATURE_IBT,
+   FEATURE_LAHF_LM,
+   FEATURE_LM,
+   FEATURE_LWP,
+   FEATURE_LZCNT,
+   FEATURE_MOVBE,
+   FEATURE_MOVDIR64B,
+   FEATURE_MOVDIRI,
+   FEATURE_MWAITX,
+   FEATURE_OSXSAVE,
+   FEATURE_PCONFIG,
+   FEATURE_PKU,
+   FEATURE_PREFETCHWT1,
+   FEATURE_PRFCHW,
+   FEATURE_PTWRITE,
+   FEATURE_RDPID,
+   FEATURE_RDRND,
+   FEATURE_RDSEED,
+   FEATURE_RTM,
+   FEATURE_SERIALIZE,
+   FEATURE_SGX,
+   FEATURE_SHA,
+   FEATURE_SHSTK,
+   FEATURE_TBM,
+   FEATURE_TSXLDTRK,
+   FEATURE_VAES,
+   FEATURE_WAITPKG,
+   FEATURE_WBNOINVD,
+   FEATURE_XSAVE,
+   FEATURE_XSAVEC,
+   FEATURE_XSAVEOPT,
+   FEATURE_XSAVES,
+   FEATURE_AMX_TILE,
+   FEATURE_AMX_INT8,
+   FEATURE_AMX_BF16,
+   FEATURE_UINTR,
+   FEATURE_HRESET,
+   FEATURE_KL,
+   FEATURE_AESKLE,
+   FEATURE_WIDEKL,
+   FEATURE_AVXVNNI,
+   CPU_FEATURE_MAX
+ };
+ 
+ /* Size of __cpu_features2 array in libgcc/config/i386/cpuinfo.c.  */
+ #define SIZE_OF_CPU_FEATURES ((CPU_FEATURE_MAX - 1) / 32)
+ 
  /* These are the values for vendor types, cpu types and subtypes.  Cpu
     types and subtypes should be subtracted by the corresponding start
     value.  */
diff -Nrcpad gcc-10.3.0/gcc/common/config/i386/i386-isas.h gcc-11.1.0/gcc/common/config/i386/i386-isas.h
*** gcc-10.3.0/gcc/common/config/i386/i386-isas.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/common/config/i386/i386-isas.h	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,172 ----
+ /* i386 ISA table.
+    Copyright (C) 2020-2021 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/>.  */
+ 
+ /* These are the target attribute strings for which a dispatcher is
+    available, from fold_builtin_cpu.  */
+ struct _isa_names_table
+ {
+   const char *const name;
+   const enum processor_features feature;
+   const enum feature_priority priority;
+   const char *const option;
+ };
+ 
+ /* NB: isa_names_table is shared by i386-builtins.c, driver-i386.c and
+    gcc.target/i386/builtin_target.c.  isa_names_table is a static const
+    array in i386-builtins.c and driver-i386.c.  But it is a list of
+    assert statements in gcc.target/i386/builtin_target.c.  */
+ 
+ #ifndef ISA_NAMES_TABLE_START
+ # define ISA_NAMES_TABLE_START \
+     static const struct _isa_names_table isa_names_table[] = {
+ #endif
+ 
+ #ifndef ISA_NAMES_TABLE_END
+ # define ISA_NAMES_TABLE_END };
+ #endif
+ 
+ #ifndef ISA_NAMES_TABLE_ENTRY
+ # define ISA_NAMES_TABLE_ENTRY(name, feature, priority, option)  \
+     {name, feature, priority, option},
+ #endif
+ 
+ ISA_NAMES_TABLE_START
+   ISA_NAMES_TABLE_ENTRY("cmov", FEATURE_CMOV, P_NONE, NULL)
+   ISA_NAMES_TABLE_ENTRY("mmx", FEATURE_MMX, P_MMX, "-mmmx")
+   ISA_NAMES_TABLE_ENTRY("popcnt", FEATURE_POPCNT, P_POPCNT, "-mpopcnt")
+   ISA_NAMES_TABLE_ENTRY("sse", FEATURE_SSE, P_SSE, "-msse")
+   ISA_NAMES_TABLE_ENTRY("sse2", FEATURE_SSE2, P_SSE2, "-msse2")
+   ISA_NAMES_TABLE_ENTRY("sse3", FEATURE_SSE3, P_SSE3, "-msse3")
+   ISA_NAMES_TABLE_ENTRY("ssse3", FEATURE_SSSE3, P_SSSE3, "-mssse3")
+   ISA_NAMES_TABLE_ENTRY("sse4.1", FEATURE_SSE4_1, P_SSE4_1, "-msse4.1")
+   ISA_NAMES_TABLE_ENTRY("sse4.2", FEATURE_SSE4_2, P_SSE4_2, "-msse4.2")
+   ISA_NAMES_TABLE_ENTRY("avx", FEATURE_AVX, P_AVX, "-mavx")
+   ISA_NAMES_TABLE_ENTRY("avx2", FEATURE_AVX2, P_AVX2, "-mavx2")
+   ISA_NAMES_TABLE_ENTRY("sse4a", FEATURE_SSE4_A, P_SSE4_A, "-msse4a")
+   ISA_NAMES_TABLE_ENTRY("fma4", FEATURE_FMA4, P_FMA4, "-mfma4")
+   ISA_NAMES_TABLE_ENTRY("xop", FEATURE_XOP, P_XOP, "-mxop")
+   ISA_NAMES_TABLE_ENTRY("fma", FEATURE_FMA, P_FMA, "-mfma")
+   ISA_NAMES_TABLE_ENTRY("avx512f", FEATURE_AVX512F, P_AVX512F,
+ 			"-mavx512f")
+   ISA_NAMES_TABLE_ENTRY("bmi", FEATURE_BMI, P_BMI, "-mbmi")
+   ISA_NAMES_TABLE_ENTRY("bmi2", FEATURE_BMI2, P_BMI2, "-mbmi2")
+   ISA_NAMES_TABLE_ENTRY("aes", FEATURE_AES, P_AES, "-maes")
+   ISA_NAMES_TABLE_ENTRY("pclmul", FEATURE_PCLMUL, P_PCLMUL, "-mpclmul")
+   ISA_NAMES_TABLE_ENTRY("avx512vl", FEATURE_AVX512VL, P_NONE,
+ 			"-mavx512vl")
+   ISA_NAMES_TABLE_ENTRY("avx512bw", FEATURE_AVX512BW, P_NONE,
+ 			"-mavx512bw")
+   ISA_NAMES_TABLE_ENTRY("avx512dq", FEATURE_AVX512DQ, P_NONE,
+ 			"-mavx512dq")
+   ISA_NAMES_TABLE_ENTRY("avx512cd", FEATURE_AVX512CD, P_NONE,
+ 			"-mavx512cd")
+   ISA_NAMES_TABLE_ENTRY("avx512er", FEATURE_AVX512ER, P_NONE,
+ 			"-mavx512er")
+   ISA_NAMES_TABLE_ENTRY("avx512pf", FEATURE_AVX512PF, P_NONE,
+ 			"-mavx512pf")
+   ISA_NAMES_TABLE_ENTRY("avx512vbmi", FEATURE_AVX512VBMI, P_NONE,
+ 			"-mavx512vbmi")
+   ISA_NAMES_TABLE_ENTRY("avx512ifma", FEATURE_AVX512IFMA, P_NONE,
+ 			"-mavx512ifma")
+   ISA_NAMES_TABLE_ENTRY("avx5124vnniw", FEATURE_AVX5124VNNIW, P_NONE,
+ 			"-mavx5124vnniw")
+   ISA_NAMES_TABLE_ENTRY("avx5124fmaps", FEATURE_AVX5124FMAPS, P_NONE,
+ 			"-mavx5124fmaps")
+   ISA_NAMES_TABLE_ENTRY("avx512vpopcntdq", FEATURE_AVX512VPOPCNTDQ,
+ 			P_NONE, "-mavx512vpopcntdq")
+   ISA_NAMES_TABLE_ENTRY("avx512vbmi2", FEATURE_AVX512VBMI2, P_NONE,
+ 			"-mavx512vbmi2")
+   ISA_NAMES_TABLE_ENTRY("gfni", FEATURE_GFNI, P_NONE, "-mgfni")
+   ISA_NAMES_TABLE_ENTRY("vpclmulqdq", FEATURE_VPCLMULQDQ, P_NONE,
+ 			"-mvpclmulqdq")
+   ISA_NAMES_TABLE_ENTRY("avx512vnni", FEATURE_AVX512VNNI, P_NONE,
+ 			"-mavx512vnni")
+   ISA_NAMES_TABLE_ENTRY("avx512bitalg", FEATURE_AVX512BITALG, P_NONE,
+ 			"-mavx512bitalg")
+   ISA_NAMES_TABLE_ENTRY("avx512bf16", FEATURE_AVX512BF16, P_NONE,
+ 			"-mavx512bf16")
+   ISA_NAMES_TABLE_ENTRY("avx512vp2intersect", FEATURE_AVX512VP2INTERSECT,
+ 			P_NONE, "-mavx512vp2intersect")
+   ISA_NAMES_TABLE_ENTRY("3dnow", FEATURE_3DNOW, P_NONE, "-m3dnow")
+   ISA_NAMES_TABLE_ENTRY("3dnowp", FEATURE_3DNOWP, P_NONE, NULL)
+   ISA_NAMES_TABLE_ENTRY("adx", FEATURE_ADX, P_NONE, "-madx")
+   ISA_NAMES_TABLE_ENTRY("abm", FEATURE_ABM, P_NONE, "-mabm")
+   ISA_NAMES_TABLE_ENTRY("cldemote", FEATURE_CLDEMOTE, P_NONE,
+ 			"-mcldemote")
+   ISA_NAMES_TABLE_ENTRY("clflushopt", FEATURE_CLFLUSHOPT, P_NONE,
+ 			"-mclflushopt")
+   ISA_NAMES_TABLE_ENTRY("clwb", FEATURE_CLWB, P_NONE, "-mclwb")
+   ISA_NAMES_TABLE_ENTRY("clzero", FEATURE_CLZERO, P_NONE, "-mclzero")
+   ISA_NAMES_TABLE_ENTRY("cmpxchg16b", FEATURE_CMPXCHG16B, P_NONE,
+ 			"-mcx16")
+   ISA_NAMES_TABLE_ENTRY("cmpxchg8b", FEATURE_CMPXCHG8B, P_NONE, NULL)
+   ISA_NAMES_TABLE_ENTRY("enqcmd", FEATURE_ENQCMD, P_NONE, "-menqcmd")
+   ISA_NAMES_TABLE_ENTRY("f16c", FEATURE_F16C, P_NONE, "-mf16c")
+   ISA_NAMES_TABLE_ENTRY("fsgsbase", FEATURE_FSGSBASE, P_NONE,
+ 			"-mfsgsbase")
+   ISA_NAMES_TABLE_ENTRY("fxsave", FEATURE_FXSAVE, P_NONE, "-mfxsr")
+   ISA_NAMES_TABLE_ENTRY("hle", FEATURE_HLE, P_NONE, "-mhle")
+   ISA_NAMES_TABLE_ENTRY("ibt", FEATURE_IBT, P_NONE, NULL)
+   ISA_NAMES_TABLE_ENTRY("lahf_lm", FEATURE_LAHF_LM, P_NONE, "-msahf")
+   ISA_NAMES_TABLE_ENTRY("lm", FEATURE_LM, P_NONE, NULL)
+   ISA_NAMES_TABLE_ENTRY("lwp", FEATURE_LWP, P_NONE, "-mlwp")
+   ISA_NAMES_TABLE_ENTRY("lzcnt", FEATURE_LZCNT, P_NONE, "-mlzcnt")
+   ISA_NAMES_TABLE_ENTRY("movbe", FEATURE_MOVBE, P_NONE, "-mmovbe")
+   ISA_NAMES_TABLE_ENTRY("movdir64b", FEATURE_MOVDIR64B, P_NONE,
+ 			"-mmovdir64b")
+   ISA_NAMES_TABLE_ENTRY("movdiri", FEATURE_MOVDIRI, P_NONE, "-mmovdiri")
+   ISA_NAMES_TABLE_ENTRY("mwaitx", FEATURE_MWAITX, P_NONE, "-mmwaitx")
+   ISA_NAMES_TABLE_ENTRY("osxsave", FEATURE_OSXSAVE, P_NONE, NULL)
+   ISA_NAMES_TABLE_ENTRY("pconfig", FEATURE_PCONFIG, P_NONE, "-mpconfig")
+   ISA_NAMES_TABLE_ENTRY("pku", FEATURE_PKU, P_NONE, "-mpku")
+   ISA_NAMES_TABLE_ENTRY("prefetchwt1", FEATURE_PREFETCHWT1, P_NONE,
+ 			"-mprefetchwt1")
+   ISA_NAMES_TABLE_ENTRY("prfchw", FEATURE_PRFCHW, P_NONE, "-mprfchw")
+   ISA_NAMES_TABLE_ENTRY("ptwrite", FEATURE_PTWRITE, P_NONE, "-mptwrite")
+   ISA_NAMES_TABLE_ENTRY("rdpid", FEATURE_RDPID, P_NONE, "-mrdpid")
+   ISA_NAMES_TABLE_ENTRY("rdrnd", FEATURE_RDRND, P_NONE, "-mrdrnd")
+   ISA_NAMES_TABLE_ENTRY("rdseed", FEATURE_RDSEED, P_NONE, "-mrdseed")
+   ISA_NAMES_TABLE_ENTRY("rtm", FEATURE_RTM, P_NONE, "-mrtm")
+   ISA_NAMES_TABLE_ENTRY("serialize", FEATURE_SERIALIZE, P_NONE,
+ 			"-mserialize")
+   ISA_NAMES_TABLE_ENTRY("sgx", FEATURE_SGX, P_NONE, "-msgx")
+   ISA_NAMES_TABLE_ENTRY("sha", FEATURE_SHA, P_NONE, "-msha")
+   ISA_NAMES_TABLE_ENTRY("shstk", FEATURE_SHSTK, P_NONE, "-mshstk")
+   ISA_NAMES_TABLE_ENTRY("tbm", FEATURE_TBM, P_NONE, "-mtbm")
+   ISA_NAMES_TABLE_ENTRY("tsxldtrk", FEATURE_TSXLDTRK, P_NONE,
+ 			"-mtsxldtrk")
+   ISA_NAMES_TABLE_ENTRY("vaes", FEATURE_VAES, P_NONE, "-mvaes")
+   ISA_NAMES_TABLE_ENTRY("waitpkg", FEATURE_WAITPKG, P_NONE, "-mwaitpkg")
+   ISA_NAMES_TABLE_ENTRY("wbnoinvd", FEATURE_WBNOINVD, P_NONE,
+ 			"-mwbnoinvd")
+   ISA_NAMES_TABLE_ENTRY("xsave", FEATURE_XSAVE, P_NONE, "-mxsave")
+   ISA_NAMES_TABLE_ENTRY("xsavec", FEATURE_XSAVEC, P_NONE, "-mxsavec")
+   ISA_NAMES_TABLE_ENTRY("xsaveopt", FEATURE_XSAVEOPT, P_NONE,
+ 			"-mxsaveopt")
+   ISA_NAMES_TABLE_ENTRY("xsaves", FEATURE_XSAVES, P_NONE, "-mxsaves")
+   ISA_NAMES_TABLE_ENTRY("amx-tile", FEATURE_AMX_TILE, P_NONE, "-mamx-tile")
+   ISA_NAMES_TABLE_ENTRY("amx-int8", FEATURE_AMX_INT8, P_NONE, "-mamx-int8")
+   ISA_NAMES_TABLE_ENTRY("amx-bf16", FEATURE_AMX_BF16, P_NONE, "-mamx-bf16")
+   ISA_NAMES_TABLE_ENTRY("uintr", FEATURE_UINTR, P_NONE, "-muintr")
+   ISA_NAMES_TABLE_ENTRY("hreset", FEATURE_HRESET, P_NONE, "-mhreset")
+   ISA_NAMES_TABLE_ENTRY("kl", FEATURE_KL, P_NONE, "-mkl")
+   ISA_NAMES_TABLE_ENTRY("aeskle", FEATURE_AESKLE, P_NONE, NULL)
+   ISA_NAMES_TABLE_ENTRY("widekl", FEATURE_WIDEKL, P_NONE, "-mwidekl")
+   ISA_NAMES_TABLE_ENTRY("avxvnni", FEATURE_AVXVNNI, P_NONE, "-mavxvnni")
+ ISA_NAMES_TABLE_END
diff -Nrcpad gcc-10.3.0/gcc/common/config/ia64/ia64-common.c gcc-11.1.0/gcc/common/config/ia64/ia64-common.c
*** gcc-10.3.0/gcc/common/config/ia64/ia64-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/ia64/ia64-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for IA64.
!    Copyright (C) 1999-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for IA64.
!    Copyright (C) 1999-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/iq2000/iq2000-common.c gcc-11.1.0/gcc/common/config/iq2000/iq2000-common.c
*** gcc-10.3.0/gcc/common/config/iq2000/iq2000-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/iq2000/iq2000-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for Vitesse IQ2000.
!    Copyright (C) 2003-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Vitesse IQ2000.
!    Copyright (C) 2003-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/lm32/lm32-common.c gcc-11.1.0/gcc/common/config/lm32/lm32-common.c
*** gcc-10.3.0/gcc/common/config/lm32/lm32-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/lm32/lm32-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Common hooks for Lattice Mico32.
  
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Common hooks for Lattice Mico32.
  
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/m32r/m32r-common.c gcc-11.1.0/gcc/common/config/m32r/m32r-common.c
*** gcc-10.3.0/gcc/common/config/m32r/m32r-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/m32r/m32r-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for Renesas M32R.
!    Copyright (C) 1996-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Renesas M32R.
!    Copyright (C) 1996-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/m68k/m68k-common.c gcc-11.1.0/gcc/common/config/m68k/m68k-common.c
*** gcc-10.3.0/gcc/common/config/m68k/m68k-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/m68k/m68k-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for Motorola 68000 family.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Motorola 68000 family.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/mcore/mcore-common.c gcc-11.1.0/gcc/common/config/mcore/mcore-common.c
*** gcc-10.3.0/gcc/common/config/mcore/mcore-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/mcore/mcore-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for Motorola MCore.
!    Copyright (C) 1993-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Motorola MCore.
!    Copyright (C) 1993-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/microblaze/microblaze-common.c gcc-11.1.0/gcc/common/config/microblaze/microblaze-common.c
*** gcc-10.3.0/gcc/common/config/microblaze/microblaze-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/microblaze/microblaze-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for Xilinx MicroBlaze.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Xilinx MicroBlaze.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/mips/mips-common.c gcc-11.1.0/gcc/common/config/mips/mips-common.c
*** gcc-10.3.0/gcc/common/config/mips/mips-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/mips/mips-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for MIPS.
!    Copyright (C) 1989-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for MIPS.
!    Copyright (C) 1989-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/mmix/mmix-common.c gcc-11.1.0/gcc/common/config/mmix/mmix-common.c
*** gcc-10.3.0/gcc/common/config/mmix/mmix-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/mmix/mmix-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for MMIX.
!    Copyright (C) 2000-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for MMIX.
!    Copyright (C) 2000-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/mn10300/mn10300-common.c gcc-11.1.0/gcc/common/config/mn10300/mn10300-common.c
*** gcc-10.3.0/gcc/common/config/mn10300/mn10300-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/mn10300/mn10300-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for Matsushita MN10300 series.
!    Copyright (C) 1996-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Matsushita MN10300 series.
!    Copyright (C) 1996-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/msp430/msp430-common.c gcc-11.1.0/gcc/common/config/msp430/msp430-common.c
*** gcc-10.3.0/gcc/common/config/msp430/msp430-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/msp430/msp430-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for Texas Instruments MSP430.
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Texas Instruments MSP430.
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 27,33 ****
  #include "opts.h"
  #include "flags.h"
  
! /* Check for generic -mcpu= and -mmcu= names here.  If found then we
     convert to a baseline cpu name.  Otherwise we allow the option to
     be passed on to the backend where it can be checked more fully.  */
  
--- 27,33 ----
  #include "opts.h"
  #include "flags.h"
  
! /* Check for generic -mmcu= names here.  If found then we
     convert to a baseline cpu name.  Otherwise we allow the option to
     be passed on to the backend where it can be checked more fully.  */
  
*************** msp430_handle_option (struct gcc_options
*** 39,64 ****
  {
    switch (decoded->opt_index)
      {
-     case OPT_mcpu_:
-       if (strcasecmp (decoded->arg, "msp430x") == 0
- 	  || strcasecmp (decoded->arg, "msp430xv2") == 0
- 	  || strcasecmp (decoded->arg, "430x") == 0
- 	  || strcasecmp (decoded->arg, "430xv2") == 0)
- 	{
- 	  target_cpu = "msp430x";
- 	}
-       else if (strcasecmp (decoded->arg, "msp430") == 0
- 	       || strcasecmp (decoded->arg, "430") == 0)
- 	{
- 	  target_cpu = "msp430";
- 	}
-       else
- 	{
- 	  error ("unrecognized argument of %<-mcpu%>: %s", decoded->arg);
- 	  return false;
- 	}
-       break;
- 
      case OPT_mmcu_:
        /* For backwards compatibility we recognise two generic MCU
  	 430X names.  However we want to be able to generate special C
--- 39,44 ----
*************** msp430_handle_option (struct gcc_options
*** 66,78 ****
  	 to NULL.  */
        if (strcasecmp (decoded->arg, "msp430") == 0)
  	{
! 	  target_cpu = "msp430";
  	  target_mcu = NULL;
  	}
        else if (strcasecmp (decoded->arg, "msp430x") == 0
  	       || strcasecmp (decoded->arg, "msp430xv2") == 0)
  	{
! 	  target_cpu = "msp430x";
  	  target_mcu = NULL;
  	}
        break;
--- 46,58 ----
  	 to NULL.  */
        if (strcasecmp (decoded->arg, "msp430") == 0)
  	{
! 	  target_cpu = MSP430_CPU_MSP430;
  	  target_mcu = NULL;
  	}
        else if (strcasecmp (decoded->arg, "msp430x") == 0
  	       || strcasecmp (decoded->arg, "msp430xv2") == 0)
  	{
! 	  target_cpu = MSP430_CPU_MSP430X;
  	  target_mcu = NULL;
  	}
        break;
diff -Nrcpad gcc-10.3.0/gcc/common/config/nds32/nds32-common.c gcc-11.1.0/gcc/common/config/nds32/nds32-common.c
*** gcc-10.3.0/gcc/common/config/nds32/nds32-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/nds32/nds32-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2020 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,5 ----
  /* Common hooks of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2021 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/common/config/nios2/nios2-common.c gcc-11.1.0/gcc/common/config/nios2/nios2-common.c
*** gcc-10.3.0/gcc/common/config/nios2/nios2-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/nios2/nios2-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for Altera Nios II.
!    Copyright (C) 2012-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Altera Nios II.
!    Copyright (C) 2012-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/nvptx/nvptx-common.c gcc-11.1.0/gcc/common/config/nvptx/nvptx-common.c
*** gcc-10.3.0/gcc/common/config/nvptx/nvptx-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/nvptx/nvptx-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* NVPTX common hooks.
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* NVPTX common hooks.
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/common/config/or1k/or1k-common.c gcc-11.1.0/gcc/common/config/or1k/or1k-common.c
*** gcc-10.3.0/gcc/common/config/or1k/or1k-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/or1k/or1k-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for OpenRISC
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for OpenRISC
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/pa/pa-common.c gcc-11.1.0/gcc/common/config/pa/pa-common.c
*** gcc-10.3.0/gcc/common/config/pa/pa-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/pa/pa-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* HPPA common hooks.
!    Copyright (C) 1992-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* HPPA common hooks.
!    Copyright (C) 1992-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/pdp11/pdp11-common.c gcc-11.1.0/gcc/common/config/pdp11/pdp11-common.c
*** gcc-10.3.0/gcc/common/config/pdp11/pdp11-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/pdp11/pdp11-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for pdp11.
!    Copyright (C) 1994-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for pdp11.
!    Copyright (C) 1994-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/pru/pru-common.c gcc-11.1.0/gcc/common/config/pru/pru-common.c
*** gcc-10.3.0/gcc/common/config/pru/pru-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/pru/pru-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for TI PRU
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for TI PRU
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/riscv/riscv-common.c gcc-11.1.0/gcc/common/config/riscv/riscv-common.c
*** gcc-10.3.0/gcc/common/config/riscv/riscv-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/riscv/riscv-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for RISC-V.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for RISC-V.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 30,101 ****
  #include "flags.h"
  #include "diagnostic-core.h"
  #include "config/riscv/riscv-protos.h"
  
! #define RISCV_DONT_CARE_VERSION -1
  
! /* Subset info.  */
! struct riscv_subset_t
  {
!   riscv_subset_t ();
! 
!   std::string name;
!   int major_version;
!   int minor_version;
!   struct riscv_subset_t *next;
  };
  
! /* Subset list.  */
! class riscv_subset_list
  {
! private:
!   /* Original arch string.  */
!   const char *m_arch;
! 
!   /* Location of arch string, used for report error.  */
!   location_t m_loc;
! 
!   /* Head of subset info list.  */
!   riscv_subset_t *m_head;
  
!   /* Tail of subset info list.  */
!   riscv_subset_t *m_tail;
  
!   /* X-len of m_arch. */
!   unsigned m_xlen;
  
!   riscv_subset_list (const char *, location_t);
  
!   const char *parsing_subset_version (const char *, unsigned *, unsigned *,
! 				      unsigned, unsigned, bool);
  
!   const char *parse_std_ext (const char *);
  
!   const char *parse_sv_or_non_std_ext (const char *, const char *,
! 				       const char *);
  
! public:
!   ~riscv_subset_list ();
  
!   void add (const char *, int, int);
  
!   riscv_subset_t *lookup (const char *,
! 			  int major_version = RISCV_DONT_CARE_VERSION,
! 			  int minor_version = RISCV_DONT_CARE_VERSION) const;
  
!   std::string to_string () const;
  
!   unsigned xlen() const {return m_xlen;};
  
!   static riscv_subset_list *parse (const char *, location_t);
  
  };
  
  static const char *riscv_supported_std_ext (void);
  
  static riscv_subset_list *current_subset_list = NULL;
  
  riscv_subset_t::riscv_subset_t ()
!   : name (), major_version (0), minor_version (0), next (NULL)
  {
  }
  
--- 30,130 ----
  #include "flags.h"
  #include "diagnostic-core.h"
  #include "config/riscv/riscv-protos.h"
+ #include "config/riscv/riscv-subset.h"
  
! #ifdef  TARGET_BIG_ENDIAN_DEFAULT
! #undef  TARGET_DEFAULT_TARGET_FLAGS
! #define TARGET_DEFAULT_TARGET_FLAGS (MASK_BIG_ENDIAN)
! #endif
  
! /* Type for implied ISA info.  */
! struct riscv_implied_info_t
  {
!   const char *ext;
!   const char *implied_ext;
  };
  
! /* Implied ISA info, must end with NULL sentinel.  */
! static const riscv_implied_info_t riscv_implied_info[] =
  {
!   {"d", "f"},
!   {"f", "zicsr"},
!   {"d", "zicsr"},
!   {NULL, NULL}
! };
  
! /* This structure holds version information for specific ISA version.  */
  
! struct riscv_ext_version
! {
!   const char *name;
!   enum riscv_isa_spec_class isa_spec_class;
!   int major_version;
!   int minor_version;
! };
  
! /* All standard extensions defined in all supported ISA spec.  */
! static const struct riscv_ext_version riscv_ext_version_table[] =
! {
!   /* name, ISA spec, major version, minor_version.  */
!   {"e", ISA_SPEC_CLASS_20191213, 1, 9},
!   {"e", ISA_SPEC_CLASS_20190608, 1, 9},
!   {"e", ISA_SPEC_CLASS_2P2,      1, 9},
  
!   {"i", ISA_SPEC_CLASS_20191213, 2, 1},
!   {"i", ISA_SPEC_CLASS_20190608, 2, 1},
!   {"i", ISA_SPEC_CLASS_2P2,      2, 0},
  
!   {"m", ISA_SPEC_CLASS_20191213, 2, 0},
!   {"m", ISA_SPEC_CLASS_20190608, 2, 0},
!   {"m", ISA_SPEC_CLASS_2P2,      2, 0},
  
!   {"a", ISA_SPEC_CLASS_20191213, 2, 1},
!   {"a", ISA_SPEC_CLASS_20190608, 2, 0},
!   {"a", ISA_SPEC_CLASS_2P2,      2, 0},
  
!   {"f", ISA_SPEC_CLASS_20191213, 2, 2},
!   {"f", ISA_SPEC_CLASS_20190608, 2, 2},
!   {"f", ISA_SPEC_CLASS_2P2,      2, 0},
  
!   {"d", ISA_SPEC_CLASS_20191213, 2, 2},
!   {"d", ISA_SPEC_CLASS_20190608, 2, 2},
!   {"d", ISA_SPEC_CLASS_2P2,      2, 0},
  
!   {"c", ISA_SPEC_CLASS_20191213, 2, 0},
!   {"c", ISA_SPEC_CLASS_20190608, 2, 0},
!   {"c", ISA_SPEC_CLASS_2P2,      2, 0},
  
!   {"zicsr", ISA_SPEC_CLASS_20191213, 2, 0},
!   {"zicsr", ISA_SPEC_CLASS_20190608, 2, 0},
  
!   {"zifencei", ISA_SPEC_CLASS_20191213, 2, 0},
!   {"zifencei", ISA_SPEC_CLASS_20190608, 2, 0},
  
!   /* Terminate the list.  */
!   {NULL, ISA_SPEC_CLASS_NONE, 0, 0}
! };
  
+ static const riscv_cpu_info riscv_cpu_tables[] =
+ {
+ #define RISCV_CORE(CORE_NAME, ARCH, TUNE) \
+     {CORE_NAME, ARCH, TUNE},
+ #include "../../../config/riscv/riscv-cores.def"
+     {NULL, NULL, NULL}
  };
  
  static const char *riscv_supported_std_ext (void);
  
  static riscv_subset_list *current_subset_list = NULL;
  
+ const riscv_subset_list *riscv_current_subset_list ()
+ {
+   return current_subset_list;
+ }
+ 
  riscv_subset_t::riscv_subset_t ()
!   : name (), major_version (0), minor_version (0), next (NULL),
!     explicit_version_p (false), implied_p (false)
  {
  }
  
*************** riscv_subset_list::~riscv_subset_list ()
*** 118,130 ****
      }
  }
  
  /* Add new subset to list.  */
  
  void
  riscv_subset_list::add (const char *subset, int major_version,
! 			int minor_version)
  {
    riscv_subset_t *s = new riscv_subset_t ();
  
    if (m_head == NULL)
      m_head = s;
--- 147,306 ----
      }
  }
  
+ /* Get the rank for single-letter subsets, lower value meaning higher
+    priority.  */
+ 
+ static int
+ single_letter_subset_rank (char ext)
+ {
+   int rank;
+ 
+   switch (ext)
+     {
+     case 'i':
+       return 0;
+     case 'e':
+       return 1;
+     default:
+       break;
+     }
+ 
+   const char *all_ext = riscv_supported_std_ext ();
+   const char *ext_pos = strchr (all_ext, ext);
+   if (ext_pos == NULL)
+     /* If got an unknown extension letter, then give it an alphabetical
+        order, but after all known standard extension.  */
+     rank = strlen (all_ext) + ext - 'a';
+   else
+     rank = (int)(ext_pos - all_ext) + 2 /* e and i has higher rank.  */;
+ 
+   return rank;
+ }
+ 
+ /* Get the rank for multi-letter subsets, lower value meaning higher
+    priority.  */
+ 
+ static int
+ multi_letter_subset_rank (const std::string &subset)
+ {
+   gcc_assert (subset.length () >= 2);
+   int high_order = -1;
+   int low_order = 0;
+   /* The order between multi-char extensions: s -> h -> z -> x.  */
+   char multiletter_class = subset[0];
+   switch (multiletter_class)
+     {
+     case 's':
+       high_order = 0;
+       break;
+     case 'h':
+       high_order = 1;
+       break;
+     case 'z':
+       gcc_assert (subset.length () > 2);
+       high_order = 2;
+       break;
+     case 'x':
+       high_order = 3;
+       break;
+     default:
+       gcc_unreachable ();
+       return -1;
+     }
+ 
+   if (multiletter_class == 'z')
+     /* Order for z extension on spec: If multiple "Z" extensions are named, they
+        should be ordered first by category, then alphabetically within a
+        category - for example, "Zicsr_Zifencei_Zam". */
+     low_order = single_letter_subset_rank (subset[1]);
+   else
+     low_order = 0;
+ 
+   return (high_order << 8) + low_order;
+ }
+ 
+ /* subset compare
+ 
+   Returns an integral value indicating the relationship between the subsets:
+   Return value  indicates
+   -1            B has higher order than A.
+   0             A and B are same subset.
+   1             A has higher order than B.
+ 
+ */
+ 
+ static int
+ subset_cmp (const std::string &a, const std::string &b)
+ {
+   if (a == b)
+     return 0;
+ 
+   size_t a_len = a.length ();
+   size_t b_len = b.length ();
+ 
+   /* Single-letter extension always get higher order than
+      multi-letter extension.  */
+   if (a_len == 1 && b_len != 1)
+     return 1;
+ 
+   if (a_len != 1 && b_len == 1)
+     return -1;
+ 
+   if (a_len == 1 && b_len == 1)
+     {
+       int rank_a = single_letter_subset_rank (a[0]);
+       int rank_b = single_letter_subset_rank (b[0]);
+ 
+       if (rank_a < rank_b)
+ 	return 1;
+       else
+ 	return -1;
+     }
+   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 ());
+       else
+ 	return (rank_a < rank_b) ? 1 : -1;
+     }
+ }
+ 
  /* Add new subset to list.  */
  
  void
  riscv_subset_list::add (const char *subset, int major_version,
! 			int minor_version, bool explicit_version_p,
! 			bool implied_p)
  {
+   riscv_subset_t *ext = lookup (subset);
+ 
+   if (ext)
+     {
+       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;
+ 	  ext->minor_version = minor_version;
+ 	}
+       else
+ 	error_at (
+ 	  m_loc,
+ 	  "%<-march=%s%>: Extension `%s' appear more than one time.",
+ 	  m_arch,
+ 	  subset);
+ 
+       return;
+     }
+ 
    riscv_subset_t *s = new riscv_subset_t ();
+   riscv_subset_t *itr;
  
    if (m_head == NULL)
      m_head = s;
*************** riscv_subset_list::add (const char *subs
*** 132,167 ****
    s->name = subset;
    s->major_version = major_version;
    s->minor_version = minor_version;
    s->next = NULL;
  
!   if (m_tail != NULL)
!     m_tail->next = s;
  
    m_tail = s;
  }
  
! /* Convert subset info to string with explicit version info.  */
  
  std::string
! riscv_subset_list::to_string () const
  {
    std::ostringstream oss;
    oss << "rv" << m_xlen;
  
    bool first = true;
!   riscv_subset_t *subset = m_head;
  
!   while (subset != NULL)
      {
!       if (!first)
  	oss << '_';
        first = false;
  
!       oss << subset->name
! 	  << subset->major_version
! 	  << 'p'
! 	  << subset->minor_version;
!       subset = subset->next;
      }
  
    return oss.str ();
--- 308,454 ----
    s->name = subset;
    s->major_version = major_version;
    s->minor_version = minor_version;
+   s->explicit_version_p = explicit_version_p;
+   s->implied_p = implied_p;
    s->next = NULL;
  
!   if (m_tail == NULL)
!     {
!       m_tail = s;
!       return;
!     }
! 
!   /* e, i or g should be first subext, never come here.  */
!   gcc_assert (subset[0] != 'e'
! 	      && subset[0] != 'i'
! 	      && subset[0] != 'g');
! 
!   if (m_tail == m_head)
!     {
!       gcc_assert (m_head->next == NULL);
!       m_head->next = s;
!       m_tail = s;
!       return;
!     }
! 
!   gcc_assert (m_head->next != NULL);
! 
!   /* Subset list must in canonical order, but implied subset won't
!      add in canonical order.  */
!   for (itr = m_head; itr->next != NULL; itr = itr->next)
!     {
!       riscv_subset_t *next = itr->next;
!       int cmp = subset_cmp (s->name, next->name);
!       gcc_assert (cmp != 0);
! 
!       if (cmp > 0)
! 	{
! 	  s->next = next;
! 	  itr->next = s;
! 	  return;
! 	}
!     }
  
+   /* Insert at tail of the list.  */
+   itr->next = s;
    m_tail = s;
  }
  
! static void
! get_default_version (const char *ext,
! 		     unsigned int *major_version,
! 		     unsigned int *minor_version)
! {
!   const riscv_ext_version *ext_ver;
!   for (ext_ver = &riscv_ext_version_table[0];
!        ext_ver->name != NULL;
!        ++ext_ver)
!     if (strcmp (ext, ext_ver->name) == 0)
!       {
! 	if ((ext_ver->isa_spec_class == riscv_isa_spec) ||
! 	    (ext_ver->isa_spec_class == ISA_SPEC_CLASS_NONE))
! 	  {
! 	    *major_version = ext_ver->major_version;
! 	    *minor_version = ext_ver->minor_version;
! 	    return;
! 	  }
!       }
! 
!   /* Not found version info.  */
!   *major_version = 0;
!   *minor_version = 0;
! }
! 
! /* Add new subset to list, but using default version from ISA spec version.  */
! 
! void
! riscv_subset_list::add (const char *subset, bool implied_p)
! {
!   unsigned int major_version = 0, minor_version = 0;
! 
!   get_default_version (subset, &major_version, &minor_version);
! 
!   add (subset, major_version, minor_version, false, implied_p);
! }
! 
! /* Convert subset info to string with explicit version info,
!    VERSION_P to determine append version info or not.  */
  
  std::string
! riscv_subset_list::to_string (bool version_p) const
  {
    std::ostringstream oss;
    oss << "rv" << m_xlen;
  
    bool first = true;
!   riscv_subset_t *subset;
  
!   bool skip_zifencei = false;
!   bool skip_zicsr = false;
! 
!   /* For RISC-V ISA version 2.2 or earlier version, zicsr and zifencei is
!      included in the base ISA.  */
!   if (riscv_isa_spec == ISA_SPEC_CLASS_2P2)
      {
!       skip_zifencei = true;
!       skip_zicsr = true;
!     }
! 
! #ifndef HAVE_AS_MISA_SPEC
!   /* Skip since older binutils doesn't recognize zicsr.  */
!   skip_zicsr = true;
! #endif
! #ifndef HAVE_AS_MARCH_ZIFENCE
!   /* Skip since older binutils doesn't recognize zifencei, we made
!      a mistake in that binutils 2.35 supports zicsr but not zifencei.  */
!   skip_zifencei = true;
! #endif
! 
!   for (subset = m_head; subset != NULL; subset = subset->next)
!     {
!       if (subset->implied_p && skip_zifencei && subset->name == "zifencei")
! 	continue;
! 
!       if (subset->implied_p && skip_zicsr && subset->name == "zicsr")
! 	continue;
! 
!       /* For !version_p, we only separate extension with underline for
! 	 multi-letter extension.  */
!       if (!first &&
! 	  (version_p
! 	   || subset->explicit_version_p
! 	   || subset->name.length() > 1))
  	oss << '_';
        first = false;
  
!       oss << subset->name;
! 
!       /* Let binutils decide the extension version if we don't know.  */
!       if ((version_p || subset->explicit_version_p) &&
! 	  (subset->major_version != 0 || subset->minor_version != 0))
! 	oss  << subset->major_version
! 	     << 'p'
! 	     << subset->minor_version;
      }
  
    return oss.str ();
*************** riscv_supported_std_ext (void)
*** 209,237 ****
       Points to the end of version
  
     Arguments:
       `p`: Current parsing position.
       `major_version`: Parsing result of major version, using
        default_major_version if version is not present in arch string.
       `minor_version`: Parsing result of minor version, set to 0 if version is
       not present in arch string, but set to `default_minor_version` if
       `major_version` using default_major_version.
!      `default_major_version`: Default major version.
!      `default_minor_version`: Default minor version.
!      `std_ext_p`: True if parsing std extension.  */
  
  const char *
! riscv_subset_list::parsing_subset_version (const char *p,
  					   unsigned *major_version,
  					   unsigned *minor_version,
! 					   unsigned default_major_version,
! 					   unsigned default_minor_version,
! 					   bool std_ext_p)
  {
    bool major_p = true;
    unsigned version = 0;
    unsigned major = 0;
    unsigned minor = 0;
    char np;
  
    for (; *p; ++p)
      {
--- 496,525 ----
       Points to the end of version
  
     Arguments:
+      `ext`: This extension.
       `p`: Current parsing position.
       `major_version`: Parsing result of major version, using
        default_major_version if version is not present in arch string.
       `minor_version`: Parsing result of minor version, set to 0 if version is
       not present in arch string, but set to `default_minor_version` if
       `major_version` using default_major_version.
!      `std_ext_p`: True if parsing std extension.
!      `explicit_version_p`: True if this subset is not using default version.  */
  
  const char *
! riscv_subset_list::parsing_subset_version (const char *ext,
! 					   const char *p,
  					   unsigned *major_version,
  					   unsigned *minor_version,
! 					   bool std_ext_p,
! 					   bool *explicit_version_p)
  {
    bool major_p = true;
    unsigned version = 0;
    unsigned major = 0;
    unsigned minor = 0;
    char np;
+   *explicit_version_p = false;
  
    for (; *p; ++p)
      {
*************** riscv_subset_list::parsing_subset_versio
*** 244,251 ****
  	      /* Might be beginning of `p` extension.  */
  	      if (std_ext_p)
  		{
! 		  *major_version = version;
! 		  *minor_version = 0;
  		  return p;
  		}
  	      else
--- 532,538 ----
  	      /* Might be beginning of `p` extension.  */
  	      if (std_ext_p)
  		{
! 		  get_default_version (ext, major_version, minor_version);
  		  return p;
  		}
  	      else
*************** riscv_subset_list::parsing_subset_versio
*** 272,284 ****
      minor = version;
  
    if (major == 0 && minor == 0)
!     {
!       /* We didn't find any version string, use default version.  */
!       *major_version = default_major_version;
!       *minor_version = default_minor_version;
!     }
    else
      {
        *major_version = major;
        *minor_version = minor;
      }
--- 559,568 ----
      minor = version;
  
    if (major == 0 && minor == 0)
!     get_default_version (ext, major_version, minor_version);
    else
      {
+       *explicit_version_p = true;
        *major_version = major;
        *minor_version = minor;
      }
*************** riscv_subset_list::parse_std_ext (const
*** 302,328 ****
    unsigned major_version = 0;
    unsigned minor_version = 0;
    char std_ext = '\0';
  
    /* First letter must start with i, e or g.  */
    switch (*p)
      {
      case 'i':
        p++;
!       p = parsing_subset_version (p, &major_version, &minor_version,
! 				  /* default_major_version= */ 2,
! 				  /* default_minor_version= */ 0,
! 				  /* std_ext_p= */ true);
!       add ("i", major_version, minor_version);
        break;
  
      case 'e':
        p++;
!       p = parsing_subset_version (p, &major_version, &minor_version,
! 				  /* default_major_version= */ 1,
! 				  /* default_minor_version= */ 9,
! 				  /* std_ext_p= */ true);
  
!       add ("e", major_version, minor_version);
  
        if (m_xlen > 32)
  	{
--- 586,609 ----
    unsigned major_version = 0;
    unsigned minor_version = 0;
    char std_ext = '\0';
+   bool explicit_version_p = false;
  
    /* First letter must start with i, e or g.  */
    switch (*p)
      {
      case 'i':
        p++;
!       p = parsing_subset_version ("i", p, &major_version, &minor_version,
! 				  /* std_ext_p= */ true, &explicit_version_p);
!       add ("i", major_version, minor_version, explicit_version_p, false);
        break;
  
      case 'e':
        p++;
!       p = parsing_subset_version ("e", p, &major_version, &minor_version,
! 				  /* std_ext_p= */ true, &explicit_version_p);
  
!       add ("e", major_version, minor_version, explicit_version_p, false);
  
        if (m_xlen > 32)
  	{
*************** riscv_subset_list::parse_std_ext (const
*** 334,350 ****
  
      case 'g':
        p++;
!       p = parsing_subset_version (p, &major_version, &minor_version,
! 				  /* default_major_version= */ 2,
! 				  /* default_minor_version= */ 0,
! 				  /* std_ext_p= */ true);
!       add ("i", major_version, minor_version);
! 
!       for (; *std_exts != 'q'; std_exts++)
  	{
! 	  const char subset[] = {*std_exts, '\0'};
! 	  add (subset, major_version, minor_version);
  	}
        break;
  
      default:
--- 615,640 ----
  
      case 'g':
        p++;
!       p = parsing_subset_version ("g", p, &major_version, &minor_version,
! 				  /* std_ext_p= */ true, &explicit_version_p);
!       if (major_version != 0 || minor_version != 0)
  	{
! 	  warning_at (m_loc, 0, "version of `g` will be omitted, please "
! 				"specify version for individual extension.");
  	}
+ 
+       /* We have special rule for G, we disallow rv32gm2p but allow rv32g_zicsr
+ 	 here, basically we treating G expand to imafd and implied zicsr and
+ 	 zifencei.  */
+ 
+       add ("i", false);
+       add ("m", false);
+       add ("a", false);
+       add ("f", false);
+       add ("d", false);
+       add ("zicsr", true);
+       add ("zifencei", true);
+ 
        break;
  
      default:
*************** riscv_subset_list::parse_std_ext (const
*** 357,363 ****
      {
        char subset[2] = {0, 0};
  
!       if (*p == 'x' || *p == 's')
  	break;
  
        if (*p == '_')
--- 647,653 ----
      {
        char subset[2] = {0, 0};
  
!       if (*p == 'x' || *p == 's' || *p == 'h' || *p == 'z')
  	break;
  
        if (*p == '_')
*************** riscv_subset_list::parse_std_ext (const
*** 387,418 ****
        std_exts++;
  
        p++;
-       p = parsing_subset_version (p, &major_version, &minor_version,
- 				  /* default_major_version= */ 2,
- 				  /* default_minor_version= */ 0,
- 				  /* std_ext_p= */ true);
- 
        subset[0] = std_ext;
  
!       add (subset, major_version, minor_version);
      }
    return p;
  }
  
! /* Parsing function for non-standard and supervisor extensions.
  
     Return Value:
       Points to the end of extensions.
  
     Arguments:
       `p`: Current parsing position.
!      `ext_type`: What kind of extensions, 'x', 's' or 'sx'.
       `ext_type_str`: Full name for kind of extension.  */
  
  const char *
! riscv_subset_list::parse_sv_or_non_std_ext (const char *p,
! 					    const char *ext_type,
! 					    const char *ext_type_str)
  {
    unsigned major_version = 0;
    unsigned minor_version = 0;
--- 677,740 ----
        std_exts++;
  
        p++;
        subset[0] = std_ext;
  
!       p = parsing_subset_version (subset, p, &major_version, &minor_version,
! 				  /* std_ext_p= */ true, &explicit_version_p);
! 
!       add (subset, major_version, minor_version, explicit_version_p, false);
      }
    return p;
  }
  
! 
! /* Check any implied extensions for EXT.  */
! void
! riscv_subset_list::handle_implied_ext (riscv_subset_t *ext)
! {
!   const riscv_implied_info_t *implied_info;
!   for (implied_info = &riscv_implied_info[0];
!        implied_info->ext;
!        ++implied_info)
!     {
!       if (strcmp (ext->name.c_str (), implied_info->ext) != 0)
! 	continue;
! 
!       /* Skip if implied extension already present.  */
!       if (lookup (implied_info->implied_ext))
! 	continue;
! 
!       /* Version of implied extension will get from current ISA spec
! 	 version.  */
!       add (implied_info->implied_ext, true);
!     }
! 
!   /* For RISC-V ISA version 2.2 or earlier version, zicsr and zifence is
!      included in the base ISA.  */
!   if (riscv_isa_spec == ISA_SPEC_CLASS_2P2)
!     {
!       if (lookup ("zicsr") == NULL)
! 	add ("zicsr", true);
! 
!       if (lookup ("zifencei") == NULL)
! 	add ("zifencei", true);
!     }
! }
! 
! /* Parsing function for multi-letter extensions.
  
     Return Value:
       Points to the end of extensions.
  
     Arguments:
       `p`: Current parsing position.
!      `ext_type`: What kind of extensions, 's', 'h', 'z' or 'x'.
       `ext_type_str`: Full name for kind of extension.  */
  
  const char *
! riscv_subset_list::parse_multiletter_ext (const char *p,
! 					  const char *ext_type,
! 					  const char *ext_type_str)
  {
    unsigned major_version = 0;
    unsigned minor_version = 0;
*************** riscv_subset_list::parse_sv_or_non_std_e
*** 429,455 ****
        if (strncmp (p, ext_type, ext_type_len) != 0)
  	break;
  
-       /* It's non-standard supervisor extension if it prefix with sx.  */
-       if ((ext_type[0] == 's') && (ext_type_len == 1)
- 	  && (*(p + 1) == 'x'))
- 	break;
- 
        char *subset = xstrdup (p);
        char *q = subset;
        const char *end_of_version;
  
        while (*++q != '\0' && *q != '_' && !ISDIGIT (*q))
  	;
  
        end_of_version
! 	= parsing_subset_version (q, &major_version, &minor_version,
! 				  /* default_major_version= */ 2,
! 				  /* default_minor_version= */ 0,
! 				  /* std_ext_p= */ FALSE);
  
        *q = '\0';
  
!       add (subset, major_version, minor_version);
        free (subset);
        p += end_of_version - subset;
  
--- 751,787 ----
        if (strncmp (p, ext_type, ext_type_len) != 0)
  	break;
  
        char *subset = xstrdup (p);
        char *q = subset;
        const char *end_of_version;
+       bool explicit_version_p = false;
+       char *ext;
+       char backup;
  
        while (*++q != '\0' && *q != '_' && !ISDIGIT (*q))
  	;
  
+       backup = *q;
+       *q = '\0';
+       ext = xstrdup (subset);
+       *q = backup;
+ 
        end_of_version
! 	= parsing_subset_version (ext, q, &major_version, &minor_version,
! 				  /* std_ext_p= */ false, &explicit_version_p);
!       free (ext);
  
        *q = '\0';
  
!       if (strlen (subset) == 1)
! 	{
! 	  error_at (m_loc, "%<-march=%s%>: name of %s must be more than 1 letter",
! 		    m_arch, ext_type_str);
! 	  free (subset);
! 	  return NULL;
! 	}
! 
!       add (subset, major_version, minor_version, explicit_version_p, false);
        free (subset);
        p += end_of_version - subset;
  
*************** riscv_subset_list *
*** 470,475 ****
--- 802,808 ----
  riscv_subset_list::parse (const char *arch, location_t loc)
  {
    riscv_subset_list *subset_list = new riscv_subset_list (arch, loc);
+   riscv_subset_t *itr;
    const char *p = arch;
    if (strncmp (p, "rv32", 4) == 0)
      {
*************** riscv_subset_list::parse (const char *ar
*** 494,514 ****
    if (p == NULL)
      goto fail;
  
!   /* Parsing non-standard extension.  */
!   p = subset_list->parse_sv_or_non_std_ext (p, "x", "non-standard extension");
  
    if (p == NULL)
      goto fail;
  
!   /* Parsing supervisor extension.  */
!   p = subset_list->parse_sv_or_non_std_ext (p, "s", "supervisor extension");
  
    if (p == NULL)
      goto fail;
  
!   /* Parsing non-standard supervisor extension.  */
!   p = subset_list->parse_sv_or_non_std_ext
!     (p, "sx", "non-standard supervisor extension");
  
    if (p == NULL)
      goto fail;
--- 827,852 ----
    if (p == NULL)
      goto fail;
  
!   /* Parsing supervisor extension.  */
!   p = subset_list->parse_multiletter_ext (p, "s", "supervisor extension");
  
    if (p == NULL)
      goto fail;
  
!   /* Parsing hypervisor extension.  */
!   p = subset_list->parse_multiletter_ext (p, "h", "hypervisor extension");
  
    if (p == NULL)
      goto fail;
  
!   /* Parsing sub-extensions.  */
!   p = subset_list->parse_multiletter_ext (p, "z", "sub-extension");
! 
!   if (p == NULL)
!     goto fail;
! 
!   /* Parsing non-standard extension.  */
!   p = subset_list->parse_multiletter_ext (p, "x", "non-standard extension");
  
    if (p == NULL)
      goto fail;
*************** riscv_subset_list::parse (const char *ar
*** 520,525 ****
--- 858,868 ----
        goto fail;
      }
  
+   for (itr = subset_list->m_head; itr != NULL; itr = itr->next)
+     {
+       subset_list->handle_implied_ext (itr);
+     }
+ 
    return subset_list;
  
  fail:
*************** fail:
*** 530,579 ****
  /* Return the current arch string.  */
  
  std::string
! riscv_arch_str ()
  {
!   gcc_assert (current_subset_list);
!   return current_subset_list->to_string ();
  }
  
  /* Parse a RISC-V ISA string into an option mask.  Must clear or set all arch
     dependent mask bits, in case more than one -march string is passed.  */
  
  static void
! riscv_parse_arch_string (const char *isa, int *flags, location_t loc)
  {
    riscv_subset_list *subset_list;
    subset_list = riscv_subset_list::parse (isa, loc);
    if (!subset_list)
      return;
  
!   if (subset_list->xlen () == 32)
!     *flags &= ~MASK_64BIT;
!   else if (subset_list->xlen () == 64)
!     *flags |= MASK_64BIT;
! 
!   *flags &= ~MASK_RVE;
!   if (subset_list->lookup ("e"))
!     *flags |= MASK_RVE;
! 
!   *flags &= ~MASK_MUL;
!   if (subset_list->lookup ("m"))
!     *flags |= MASK_MUL;
! 
!   *flags &= ~MASK_ATOMIC;
!   if (subset_list->lookup ("a"))
!     *flags |= MASK_ATOMIC;
  
!   *flags &= ~(MASK_HARD_FLOAT | MASK_DOUBLE_FLOAT);
!   if (subset_list->lookup ("f"))
!     *flags |= MASK_HARD_FLOAT;
  
-   if (subset_list->lookup ("d"))
-     *flags |= MASK_DOUBLE_FLOAT;
  
!   *flags &= ~MASK_RVC;
!   if (subset_list->lookup ("c"))
!     *flags |= MASK_RVC;
  
    if (current_subset_list)
      delete current_subset_list;
--- 873,948 ----
  /* Return the current arch string.  */
  
  std::string
! riscv_arch_str (bool version_p)
  {
!   if (current_subset_list)
!     return current_subset_list->to_string (version_p);
!   else
!     return std::string();
  }
  
+ /* Type for pointer to member of gcc_options.  */
+ typedef int (gcc_options::*opt_var_ref_t);
+ 
+ /* Types for recording extension to internal flag.  */
+ struct riscv_ext_flag_table_t {
+   const char *ext;
+   opt_var_ref_t var_ref;
+   int mask;
+ };
+ 
+ /* Mapping table between extension to internal flag.  */
+ static const riscv_ext_flag_table_t riscv_ext_flag_table[] =
+ {
+   {"e", &gcc_options::x_target_flags, MASK_RVE},
+   {"m", &gcc_options::x_target_flags, MASK_MUL},
+   {"a", &gcc_options::x_target_flags, MASK_ATOMIC},
+   {"f", &gcc_options::x_target_flags, MASK_HARD_FLOAT},
+   {"d", &gcc_options::x_target_flags, MASK_DOUBLE_FLOAT},
+   {"c", &gcc_options::x_target_flags, MASK_RVC},
+ 
+   {"zicsr",    &gcc_options::x_riscv_zi_subext, MASK_ZICSR},
+   {"zifencei", &gcc_options::x_riscv_zi_subext, MASK_ZIFENCEI},
+ 
+   {NULL, NULL, 0}
+ };
+ 
  /* Parse a RISC-V ISA string into an option mask.  Must clear or set all arch
     dependent mask bits, in case more than one -march string is passed.  */
  
  static void
! riscv_parse_arch_string (const char *isa,
! 			 struct gcc_options *opts,
! 			 location_t loc)
  {
    riscv_subset_list *subset_list;
    subset_list = riscv_subset_list::parse (isa, loc);
    if (!subset_list)
      return;
  
!   if (opts)
!     {
!       const riscv_ext_flag_table_t *arch_ext_flag_tab;
!       /* Clean up target flags before we set.  */
!       for (arch_ext_flag_tab = &riscv_ext_flag_table[0];
! 	   arch_ext_flag_tab->ext;
! 	   ++arch_ext_flag_tab)
! 	opts->*arch_ext_flag_tab->var_ref &= ~arch_ext_flag_tab->mask;
  
!       if (subset_list->xlen () == 32)
! 	opts->x_target_flags &= ~MASK_64BIT;
!       else if (subset_list->xlen () == 64)
! 	opts->x_target_flags |= MASK_64BIT;
  
  
!       for (arch_ext_flag_tab = &riscv_ext_flag_table[0];
! 	   arch_ext_flag_tab->ext;
! 	   ++arch_ext_flag_tab)
! 	{
! 	  if (subset_list->lookup (arch_ext_flag_tab->ext))
! 	    opts->*arch_ext_flag_tab->var_ref |= arch_ext_flag_tab->mask;
! 	}
!     }
  
    if (current_subset_list)
      delete current_subset_list;
*************** riscv_parse_arch_string (const char *isa
*** 581,586 ****
--- 950,970 ----
    current_subset_list = subset_list;
  }
  
+ /* Return the riscv_cpu_info entry for CPU, NULL if not found.  */
+ 
+ const riscv_cpu_info *
+ riscv_find_cpu (const char *cpu)
+ {
+   const riscv_cpu_info *cpu_info = &riscv_cpu_tables[0];
+   for (;cpu_info->name != NULL; ++cpu_info)
+     {
+       const char *name = cpu_info->name;
+       if (strcmp (cpu, name) == 0)
+ 	return cpu_info;
+     }
+   return NULL;
+ }
+ 
  /* Implement TARGET_HANDLE_OPTION.  */
  
  static bool
*************** riscv_handle_option (struct gcc_options
*** 592,598 ****
    switch (decoded->opt_index)
      {
      case OPT_march_:
!       riscv_parse_arch_string (decoded->arg, &opts->x_target_flags, loc);
        return true;
  
      default:
--- 976,988 ----
    switch (decoded->opt_index)
      {
      case OPT_march_:
!       riscv_parse_arch_string (decoded->arg, opts, loc);
!       return true;
! 
!     case OPT_mcpu_:
!       if (riscv_find_cpu (decoded->arg) == NULL)
! 	error_at (loc, "%<-mcpu=%s%>: unknown CPU",
! 		  decoded->arg);
        return true;
  
      default:
*************** riscv_handle_option (struct gcc_options
*** 600,605 ****
--- 990,1058 ----
      }
  }
  
+ /* Expand arch string with implied extensions.  */
+ 
+ const char *
+ riscv_expand_arch (int argc ATTRIBUTE_UNUSED,
+ 		   const char **argv)
+ {
+   gcc_assert (argc == 1);
+   location_t loc = UNKNOWN_LOCATION;
+   riscv_parse_arch_string (argv[0], NULL, loc);
+   const std::string arch = riscv_arch_str (false);
+   if (arch.length())
+     return xasprintf ("-march=%s", arch.c_str());
+   else
+     return "";
+ }
+ 
+ /* Expand default -mtune option from -mcpu option, use default --with-tune value
+    if -mcpu don't have valid value.  */
+ 
+ const char *
+ riscv_default_mtune (int argc, const char **argv)
+ {
+   gcc_assert (argc == 2);
+   const riscv_cpu_info *cpu = riscv_find_cpu (argv[0]);
+   const char *default_mtune = argv[1];
+   if (cpu)
+     return cpu->tune;
+   else
+     return default_mtune;
+ }
+ 
+ /* Expand arch string with implied extensions from -mcpu option.  */
+ 
+ const char *
+ riscv_expand_arch_from_cpu (int argc ATTRIBUTE_UNUSED,
+ 			    const char **argv)
+ {
+   gcc_assert (argc > 0 && argc <= 2);
+   const char *default_arch_str = NULL;
+   const char *arch_str = NULL;
+   if (argc >= 2)
+     default_arch_str = argv[1];
+ 
+   const riscv_cpu_info *cpu = riscv_find_cpu (argv[0]);
+ 
+   if (cpu == NULL)
+     {
+       if (default_arch_str == NULL)
+ 	return "";
+       else
+ 	arch_str = default_arch_str;
+     }
+   else
+     arch_str = cpu->arch;
+ 
+   location_t loc = UNKNOWN_LOCATION;
+ 
+   riscv_parse_arch_string (arch_str, NULL, loc);
+   const std::string arch = riscv_arch_str (false);
+   return xasprintf ("-march=%s", arch.c_str());
+ }
+ 
+ 
  /* Implement TARGET_OPTION_OPTIMIZATION_TABLE.  */
  static const struct default_options riscv_option_optimization_table[] =
    {
diff -Nrcpad gcc-10.3.0/gcc/common/config/rs6000/rs6000-common.c gcc-11.1.0/gcc/common/config/rs6000/rs6000-common.c
*** gcc-10.3.0/gcc/common/config/rs6000/rs6000-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/rs6000/rs6000-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for IBM RS/6000.
!    Copyright (C) 1991-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for IBM RS/6000.
!    Copyright (C) 1991-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/rx/rx-common.c gcc-11.1.0/gcc/common/config/rx/rx-common.c
*** gcc-10.3.0/gcc/common/config/rx/rx-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/rx/rx-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for Renesas RX.
!    Copyright (C) 2008-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Renesas RX.
!    Copyright (C) 2008-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/s390/s390-common.c gcc-11.1.0/gcc/common/config/s390/s390-common.c
*** gcc-10.3.0/gcc/common/config/s390/s390-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/s390/s390-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for IBM S/390 and zSeries.
!    Copyright (C) 1999-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for IBM S/390 and zSeries.
!    Copyright (C) 1999-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** EXPORTED_CONST int processor_flags_table
*** 49,55 ****
--- 49,59 ----
  		 | PF_Z13 | PF_VX | PF_VXE | PF_Z14,
      /* z15 */    PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT
  		 | PF_EXTIMM | PF_DFP | PF_Z10 | PF_Z196 | PF_ZEC12 | PF_TX
+ 		 | PF_Z13 | PF_VX | PF_VXE | PF_Z14 | PF_VXE2 | PF_Z15,
+     /* arch14 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT
+ 		 | PF_EXTIMM | PF_DFP | PF_Z10 | PF_Z196 | PF_ZEC12 | PF_TX
  		 | PF_Z13 | PF_VX | PF_VXE | PF_Z14 | PF_VXE2 | PF_Z15
+ 		 | PF_NNPA | PF_ARCH14
    };
  
  /* Change optimizations to be performed, depending on the
diff -Nrcpad gcc-10.3.0/gcc/common/config/sh/sh-common.c gcc-11.1.0/gcc/common/config/sh/sh-common.c
*** gcc-10.3.0/gcc/common/config/sh/sh-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/sh/sh-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for Renesas / SuperH SH.
!    Copyright (C) 1993-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Renesas / SuperH SH.
!    Copyright (C) 1993-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/sparc/sparc-common.c gcc-11.1.0/gcc/common/config/sparc/sparc-common.c
*** gcc-10.3.0/gcc/common/config/sparc/sparc-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/sparc/sparc-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for SPARC.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for SPARC.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/tilegx/tilegx-common.c gcc-11.1.0/gcc/common/config/tilegx/tilegx-common.c
*** gcc-10.3.0/gcc/common/config/tilegx/tilegx-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/tilegx/tilegx-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for TILE-Gx.
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
     Contributed by Walter Lee (walt@tilera.com)
  
     This file is part of GCC.
--- 1,5 ----
  /* Common hooks for TILE-Gx.
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
     Contributed by Walter Lee (walt@tilera.com)
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/common/config/tilepro/tilepro-common.c gcc-11.1.0/gcc/common/config/tilepro/tilepro-common.c
*** gcc-10.3.0/gcc/common/config/tilepro/tilepro-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/tilepro/tilepro-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for TILEPro.
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
     Contributed by Walter Lee (walt@tilera.com)
  
     This file is part of GCC.
--- 1,5 ----
  /* Common hooks for TILEPro.
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
     Contributed by Walter Lee (walt@tilera.com)
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/common/config/v850/v850-common.c gcc-11.1.0/gcc/common/config/v850/v850-common.c
*** gcc-10.3.0/gcc/common/config/v850/v850-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/v850/v850-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for NEC V850 series.
!    Copyright (C) 1996-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for NEC V850 series.
!    Copyright (C) 1996-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/vax/vax-common.c gcc-11.1.0/gcc/common/config/vax/vax-common.c
*** gcc-10.3.0/gcc/common/config/vax/vax-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/vax/vax-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for VAX.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for VAX.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/visium/visium-common.c gcc-11.1.0/gcc/common/config/visium/visium-common.c
*** gcc-10.3.0/gcc/common/config/visium/visium-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/visium/visium-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for Visium.
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
     Contributed by C.Nettleton,J.P.Parkes and P.Garbett.
  
  This file is part of GCC.
--- 1,5 ----
  /* Common hooks for Visium.
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
     Contributed by C.Nettleton,J.P.Parkes and P.Garbett.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/common/config/xstormy16/xstormy16-common.c gcc-11.1.0/gcc/common/config/xstormy16/xstormy16-common.c
*** gcc-10.3.0/gcc/common/config/xstormy16/xstormy16-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/xstormy16/xstormy16-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for Xstormy16.
!    Copyright (C) 1997-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Xstormy16.
!    Copyright (C) 1997-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common/config/xtensa/xtensa-common.c gcc-11.1.0/gcc/common/config/xtensa/xtensa-common.c
*** gcc-10.3.0/gcc/common/config/xtensa/xtensa-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common/config/xtensa/xtensa-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common hooks for Tensilica's Xtensa architecture.
!    Copyright (C) 2001-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Tensilica's Xtensa architecture.
!    Copyright (C) 2001-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/common.md gcc-11.1.0/gcc/common.md
*** gcc-10.3.0/gcc/common.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Common GCC machine description file, shared by all targets.
! ;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Common GCC machine description file, shared by all targets.
! ;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/common.opt gcc-11.1.0/gcc/common.opt
*** gcc-10.3.0/gcc/common.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/common.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Options for the language- and target-independent parts of the compiler.
  
! ; Copyright (C) 2003-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the language- and target-independent parts of the compiler.
  
! ; Copyright (C) 2003-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** Variable
*** 47,53 ****
  bool in_lto_p = false
  
  ; This variable is set to non-0 only by LTO front-end.  1 indicates that
! ; the output produced will be used for incrmeental linking (thus weak symbols
  ; can still be bound) and 2 indicates that the IL is going to be linked and
  ; and output to LTO object file.
  Variable
--- 47,53 ----
  bool in_lto_p = false
  
  ; This variable is set to non-0 only by LTO front-end.  1 indicates that
! ; the output produced will be used for incremental linking (thus weak symbols
  ; can still be bound) and 2 indicates that the IL is going to be linked and
  ; and output to LTO object file.
  Variable
*************** bool flag_stack_usage_info = false
*** 144,157 ****
  Variable
  int flag_debug_asm
  
- ; How many NOP insns to place at each function entry by default
- Variable
- HOST_WIDE_INT function_entry_patch_area_size
- 
- ; And how far the real asm entry point is into this area
- Variable
- HOST_WIDE_INT function_entry_patch_area_start
- 
  ; Balance between GNAT encodings and standard DWARF to emit.
  Variable
  enum dwarf_gnat_encodings gnat_encodings = DWARF_GNAT_ENCODINGS_DEFAULT
--- 144,149 ----
*************** const char *main_input_basename
*** 188,193 ****
--- 180,191 ----
  Variable
  int main_input_baselength
  
+ ; The base name used for auxiliary output files.
+ ; dump_base_name minus dump_base_ext.
+ 
+ Variable
+ const char *aux_base_name
+ 
  ; Which options have been printed by --help.
  Variable
  char *help_printed
*************** unsigned int flag_sanitize
*** 212,218 ****
  
  ; What sanitizers should recover from errors
  Variable
! unsigned int flag_sanitize_recover = (SANITIZE_UNDEFINED | SANITIZE_UNDEFINED_NONDEFAULT | SANITIZE_KERNEL_ADDRESS) & ~(SANITIZE_UNREACHABLE | SANITIZE_RETURN)
  
  ; What the coverage sanitizers should instrument
  Variable
--- 210,216 ----
  
  ; What sanitizers should recover from errors
  Variable
! unsigned int flag_sanitize_recover = (SANITIZE_UNDEFINED | SANITIZE_UNDEFINED_NONDEFAULT | SANITIZE_KERNEL_ADDRESS | SANITIZE_KERNEL_HWADDRESS) & ~(SANITIZE_UNREACHABLE | SANITIZE_RETURN)
  
  ; What the coverage sanitizers should instrument
  Variable
*************** unsigned int flag_sanitize_coverage
*** 222,230 ****
  Variable
  bool dump_base_name_prefixed = false
  
! ; Flag whether HSA generation has been explicitely disabled
  Variable
! bool flag_disable_hsa = false
  
  ###
  Driver
--- 220,228 ----
  Variable
  bool dump_base_name_prefixed = false
  
! ; What subset of registers should be zeroed on function return
  Variable
! unsigned int flag_zero_call_used_regs
  
  ###
  Driver
*************** Common Separate Alias(d)
*** 252,261 ****
  Common Joined Alias(d)
  
  -dumpbase
! Common Separate Alias(dumpbase)
  
  -dumpdir
! Common Separate Alias(dumpdir)
  
  -entry
  Driver Separate Alias(e)
--- 250,262 ----
  Common Joined Alias(d)
  
  -dumpbase
! Driver Common Separate Alias(dumpbase)
! 
! -dumpbase-ext
! Driver Common Separate Alias(dumpbase-ext)
  
  -dumpdir
! Driver Common Separate Alias(dumpdir)
  
  -entry
  Driver Separate Alias(e)
*************** Common Driver Var(help_flag)
*** 289,295 ****
  Display this information.
  
  -help=
! Common Driver Report Joined
  --help=<class>	Display descriptions of a specific class of options.  <class> is one or more of optimizers, target, warnings, undocumented, params.
  
  -language
--- 290,296 ----
  Display this information.
  
  -help=
! Common Driver Joined
  --help=<class>	Display descriptions of a specific class of options.  <class> is one or more of optimizers, target, warnings, undocumented, params.
  
  -language
*************** Common Var(warn_free_nonheap_object) Ini
*** 610,617 ****
  Warn when attempting to free a non-heap object.
  
  Whsa
! Common Var(warn_hsa) Init(1) Warning
! Warn when a function cannot be expanded to HSAIL.
  
  Wimplicit-fallthrough
  Common Alias(Wimplicit-fallthrough=,3,0) Warning
--- 611,618 ----
  Warn when attempting to free a non-heap object.
  
  Whsa
! Common Ignore Warning
! Does nothing.  Preserved for backward compatibility.
  
  Wimplicit-fallthrough
  Common Alias(Wimplicit-fallthrough=,3,0) Warning
*************** Wvector-operation-performance
*** 833,838 ****
--- 834,843 ----
  Common Var(warn_vector_operation_performance) Warning
  Warn when a vector operation is compiled outside the SIMD.
  
+ Wtsan
+ Common Var(warn_tsan) Init(1) Warning
+ Warn about unsupported features in ThreadSanitizer.
+ 
  Xassembler
  Driver Separate
  
*************** Common Separate Var(aux_info_file_name)
*** 852,863 ****
  aux-info=
  Common Joined Alias(aux-info)
  
- auxbase
- Common Separate RejectDriver Var(aux_base_name)
- 
- auxbase-strip
- Common Separate RejectDriver
- 
  coverage
  Driver
  
--- 857,862 ----
*************** Common Joined
*** 869,879 ****
  -d<letters>	Enable dumps from specific passes of the compiler.
  
  dumpbase
! Common Separate Var(dump_base_name)
  -dumpbase <file>	Set the file basename to be used for dumps.
  
  dumpdir
! Common Separate Var(dump_dir_name)
  -dumpdir <dir>	Set the directory name to be used for dumps.
  
  dumpmachine
--- 868,882 ----
  -d<letters>	Enable dumps from specific passes of the compiler.
  
  dumpbase
! Driver Common Separate Var(dump_base_name)
  -dumpbase <file>	Set the file basename to be used for dumps.
  
+ dumpbase-ext
+ Driver Common Separate Var(dump_base_ext)
+ -dumpbase-ext .<ext>    Drop a trailing .<ext> from the dump basename to name auxiliary output files.
+ 
  dumpdir
! Driver Common Separate Var(dump_dir_name)
  -dumpdir <dir>	Set the directory name to be used for dumps.
  
  dumpmachine
*************** Driver Undocumented
*** 953,1007 ****
  ; 13: Fixes the accidental change in 12 to the calling convention for classes
  ;     with deleted copy constructor and trivial move constructor.
  ;     Default in G++ 8.2.
  ; 14: Corrects the mangling of nullptr expression.
  ;     Default in G++ 10.
  ;
  ; 15: Corrects G++ 10 ABI tag regression [PR98481].
  ;     Available, but not default, in G++ 10.3.
  ;
  ; Additional positive integers will be assigned as new versions of
  ; the ABI become the default version of the ABI.
  fabi-version=
! Common Joined RejectNegative UInteger Var(flag_abi_version) Init(14)
  The version of the C++ ABI in use.
  
  faggressive-loop-optimizations
! Common Report Var(flag_aggressive_loop_optimizations) Optimization Init(1)
  Aggressively optimize loops using language constraints.
  
  falign-functions
! Common Report Var(flag_align_functions) Optimization
  Align the start of functions.
  
  falign-functions=
  Common RejectNegative Joined Var(str_align_functions) Optimization
  
  flimit-function-alignment
! Common Report Var(flag_limit_function_alignment) Optimization Init(0)
  
  falign-jumps
! Common Report Var(flag_align_jumps) Optimization
  Align labels which are only reached by jumping.
  
  falign-jumps=
  Common RejectNegative Joined Var(str_align_jumps) Optimization
  
  falign-labels
! Common Report Var(flag_align_labels) Optimization
  Align all labels.
  
  falign-labels=
  Common RejectNegative Joined Var(str_align_labels) Optimization
  
  falign-loops
! Common Report Var(flag_align_loops) Optimization
  Align the start of loops.
  
  falign-loops=
  Common RejectNegative Joined Var(str_align_loops) Optimization
  
  fallow-store-data-races
! Common Report Var(flag_store_data_races) Optimization
  Allow the compiler to introduce new data races on stores.
  
  fanalyzer
--- 956,1015 ----
  ; 13: Fixes the accidental change in 12 to the calling convention for classes
  ;     with deleted copy constructor and trivial move constructor.
  ;     Default in G++ 8.2.
+ ;
  ; 14: Corrects the mangling of nullptr expression.
  ;     Default in G++ 10.
  ;
  ; 15: Corrects G++ 10 ABI tag regression [PR98481].
  ;     Available, but not default, in G++ 10.3.
  ;
+ ; 16: Changes the mangling of __alignof__ to be distinct from that of alignof.
+ ;     Adds missing 'on' in mangling of operator names in some cases.
+ ;     Default in G++ 11.
+ ;
  ; Additional positive integers will be assigned as new versions of
  ; the ABI become the default version of the ABI.
  fabi-version=
! Common Joined RejectNegative UInteger Var(flag_abi_version) Init(0)
  The version of the C++ ABI in use.
  
  faggressive-loop-optimizations
! Common Var(flag_aggressive_loop_optimizations) Optimization Init(1)
  Aggressively optimize loops using language constraints.
  
  falign-functions
! Common Var(flag_align_functions) Optimization
  Align the start of functions.
  
  falign-functions=
  Common RejectNegative Joined Var(str_align_functions) Optimization
  
  flimit-function-alignment
! Common Var(flag_limit_function_alignment) Optimization Init(0)
  
  falign-jumps
! Common Var(flag_align_jumps) Optimization
  Align labels which are only reached by jumping.
  
  falign-jumps=
  Common RejectNegative Joined Var(str_align_jumps) Optimization
  
  falign-labels
! Common Var(flag_align_labels) Optimization
  Align all labels.
  
  falign-labels=
  Common RejectNegative Joined Var(str_align_labels) Optimization
  
  falign-loops
! Common Var(flag_align_loops) Optimization
  Align the start of loops.
  
  falign-loops=
  Common RejectNegative Joined Var(str_align_loops) Optimization
  
  fallow-store-data-races
! Common Var(flag_store_data_races) Optimization
  Allow the compiler to introduce new data races on stores.
  
  fanalyzer
*************** Common Ignore
*** 1025,1035 ****
  Does nothing. Preserved for backward compatibility.
  
  fsanitize=
! Common Driver Report Joined
  Select what to sanitize.
  
  fsanitize-coverage=
! Common Report Joined
  Select type of coverage sanitization.
  
  fasan-shadow-offset=
--- 1033,1043 ----
  Does nothing. Preserved for backward compatibility.
  
  fsanitize=
! Common Driver Joined
  Select what to sanitize.
  
  fsanitize-coverage=
! Common Joined
  Select type of coverage sanitization.
  
  fasan-shadow-offset=
*************** Common Joined RejectNegative Var(common_
*** 1042,1071 ****
  in user-defined sections.
  
  fsanitize-recover=
! Common Report Joined
  After diagnosing undefined behavior attempt to continue execution.
  
  fsanitize-recover
! Common Report
  This switch is deprecated; use -fsanitize-recover= instead.
  
  fsanitize-address-use-after-scope
! Common Driver Report Var(flag_sanitize_address_use_after_scope) Init(0)
  
  fsanitize-undefined-trap-on-error
! Common Driver Report Var(flag_sanitize_undefined_trap_on_error) Init(0)
  Use trap instead of a library function for undefined behavior sanitization.
  
  fasynchronous-unwind-tables
! Common Report Var(flag_asynchronous_unwind_tables) Optimization
  Generate unwind tables that are exact at each instruction boundary.
  
  fauto-inc-dec
! Common Report Var(flag_auto_inc_dec) Init(1) Optimization
  Generate auto-inc/dec instructions.
  
  fauto-profile
! Common Report Var(flag_auto_profile)
  Use sample profile information for call graph node weights. The default
  profile file is fbdata.afdo in 'pwd'.
  
--- 1050,1079 ----
  in user-defined sections.
  
  fsanitize-recover=
! Common Joined
  After diagnosing undefined behavior attempt to continue execution.
  
  fsanitize-recover
! Common
  This switch is deprecated; use -fsanitize-recover= instead.
  
  fsanitize-address-use-after-scope
! Common Driver Var(flag_sanitize_address_use_after_scope) Init(0)
  
  fsanitize-undefined-trap-on-error
! Common Driver Var(flag_sanitize_undefined_trap_on_error) Init(0)
  Use trap instead of a library function for undefined behavior sanitization.
  
  fasynchronous-unwind-tables
! Common Var(flag_asynchronous_unwind_tables) Optimization
  Generate unwind tables that are exact at each instruction boundary.
  
  fauto-inc-dec
! Common Var(flag_auto_inc_dec) Init(1) Optimization
  Generate auto-inc/dec instructions.
  
  fauto-profile
! Common Var(flag_auto_profile)
  Use sample profile information for call graph node weights. The default
  profile file is fbdata.afdo in 'pwd'.
  
*************** file is specified in the argument.
*** 1079,1093 ****
  ; For Java: defaults to on.
  ; For Fortran: defaults to off.
  fbounds-check
! Common Report Var(flag_bounds_check)
  Generate code to check bounds before indexing arrays.
  
  fbranch-count-reg
! Common Report Var(flag_branch_on_count_reg) Optimization
  Replace add, compare, branch with branch on count register.
  
  fbranch-probabilities
! Common Report Var(flag_branch_probabilities) Optimization
  Use profiling information for branch probabilities.
  
  fbranch-target-load-optimize
--- 1087,1101 ----
  ; For Java: defaults to on.
  ; For Fortran: defaults to off.
  fbounds-check
! Common Var(flag_bounds_check)
  Generate code to check bounds before indexing arrays.
  
  fbranch-count-reg
! Common Var(flag_branch_on_count_reg) Optimization
  Replace add, compare, branch with branch on count register.
  
  fbranch-probabilities
! Common Var(flag_branch_probabilities) Optimization
  Use profiling information for branch probabilities.
  
  fbranch-target-load-optimize
*************** Common Ignore
*** 1103,1113 ****
  Does nothing.  Preserved for backward compatibility.
  
  fcallgraph-info
! Common Report RejectNegative Var(flag_callgraph_info) Init(NO_CALLGRAPH_INFO);
  Output callgraph information on a per-file basis.
  
  fcallgraph-info=
! Common Report RejectNegative Joined
  Output callgraph information on a per-file basis with decorations.
  
  fcall-saved-
--- 1111,1121 ----
  Does nothing.  Preserved for backward compatibility.
  
  fcallgraph-info
! Common RejectNegative Var(flag_callgraph_info) Init(NO_CALLGRAPH_INFO);
  Output callgraph information on a per-file basis.
  
  fcallgraph-info=
! Common RejectNegative Joined
  Output callgraph information on a per-file basis with decorations.
  
  fcall-saved-
*************** Common Joined RejectNegative Var(common_
*** 1122,1128 ****
  ; be saved across function calls, if that produces overall better code.
  ; Optional now, so people can test it.
  fcaller-saves
! Common Report Var(flag_caller_saves) Optimization
  Save registers around function calls.
  
  fcheck-data-deps
--- 1130,1136 ----
  ; be saved across function calls, if that produces overall better code.
  ; Optional now, so people can test it.
  fcaller-saves
! Common Var(flag_caller_saves) Optimization
  Save registers around function calls.
  
  fcheck-data-deps
*************** Common Joined RejectNegative UInteger Va
*** 1142,1156 ****
  Perform internal consistency checkings.
  
  fcode-hoisting
! Common Report Var(flag_code_hoisting) Optimization
  Enable code hoisting.
  
  fcombine-stack-adjustments
! Common Report Var(flag_combine_stack_adjustments) Optimization
  Looks for opportunities to reduce stack adjustments and stack references.
  
  fcommon
! Common Report Var(flag_no_common,0) Init(1)
  Put uninitialized globals in the common section.
  
  fcompare-debug
--- 1150,1164 ----
  Perform internal consistency checkings.
  
  fcode-hoisting
! Common Var(flag_code_hoisting) Optimization
  Enable code hoisting.
  
  fcombine-stack-adjustments
! Common Var(flag_combine_stack_adjustments) Optimization
  Looks for opportunities to reduce stack adjustments and stack references.
  
  fcommon
! Common Var(flag_no_common,0) Init(1)
  Put uninitialized globals in the common section.
  
  fcompare-debug
*************** Common Driver RejectNegative Var(flag_co
*** 1166,1172 ****
  Run only the second compilation of -fcompare-debug.
  
  fcompare-elim
! Common Report Var(flag_compare_elim_after_reload) Optimization
  Perform comparison elimination after register allocation has finished.
  
  fconserve-stack
--- 1174,1180 ----
  Run only the second compilation of -fcompare-debug.
  
  fcompare-elim
! Common Var(flag_compare_elim_after_reload) Optimization
  Perform comparison elimination after register allocation has finished.
  
  fconserve-stack
*************** Common Var(flag_conserve_stack) Optimiza
*** 1174,1188 ****
  Do not perform optimizations increasing noticeably stack usage.
  
  fcprop-registers
! Common Report Var(flag_cprop_registers) Optimization
  Perform a register copy-propagation optimization pass.
  
  fcrossjumping
! Common Report Var(flag_crossjumping) Optimization
  Perform cross-jumping optimization.
  
  fcse-follow-jumps
! Common Report Var(flag_cse_follow_jumps) Optimization
  When running CSE, follow jumps to their targets.
  
  fcse-skip-blocks
--- 1182,1196 ----
  Do not perform optimizations increasing noticeably stack usage.
  
  fcprop-registers
! Common Var(flag_cprop_registers) Optimization
  Perform a register copy-propagation optimization pass.
  
  fcrossjumping
! Common Var(flag_crossjumping) Optimization
  Perform cross-jumping optimization.
  
  fcse-follow-jumps
! Common Var(flag_cse_follow_jumps) Optimization
  When running CSE, follow jumps to their targets.
  
  fcse-skip-blocks
*************** Common Ignore
*** 1190,1208 ****
  Does nothing.  Preserved for backward compatibility.
  
  fcx-limited-range
! Common Report Var(flag_cx_limited_range) Optimization SetByCombined
  Omit range reduction step when performing complex division.
  
  fcx-fortran-rules
! Common Report Var(flag_cx_fortran_rules) Optimization
  Complex multiplication and division follow Fortran rules.
  
  fdata-sections
! Common Report Var(flag_data_sections)
  Place data items into their own section.
  
  fdbg-cnt-list
! Common Report Var(common_deferred_options) Defer
  List all available debugging counters with their limits and counts.
  
  fdbg-cnt=
--- 1198,1216 ----
  Does nothing.  Preserved for backward compatibility.
  
  fcx-limited-range
! Common Var(flag_cx_limited_range) Optimization SetByCombined
  Omit range reduction step when performing complex division.
  
  fcx-fortran-rules
! Common Var(flag_cx_fortran_rules) Optimization
  Complex multiplication and division follow Fortran rules.
  
  fdata-sections
! Common Var(flag_data_sections)
  Place data items into their own section.
  
  fdbg-cnt-list
! Common Var(flag_dbg_cnt_list)
  List all available debugging counters with their limits and counts.
  
  fdbg-cnt=
*************** Common Joined RejectNegative Var(common_
*** 1218,1254 ****
  -ffile-prefix-map=<old>=<new>	Map one directory name to another in compilation result.
  
  fdebug-types-section
! Common Report Var(flag_debug_types_section) Init(0)
  Output .debug_types section when using DWARF v4 debuginfo.
  
  ; Nonzero for -fdefer-pop: don't pop args after each function call
  ; instead save them up to pop many calls' args with one insns.
  fdefer-pop
! Common Report Var(flag_defer_pop) Optimization
  Defer popping functions args from stack until later.
  
  fdelayed-branch
! Common Report Var(flag_delayed_branch) Optimization
  Attempt to fill delay slots of branch instructions.
  
  fdelete-dead-exceptions
! Common Report Var(flag_delete_dead_exceptions) Init(0) Optimization
  Delete dead instructions that may throw exceptions.
  
  fdelete-null-pointer-checks
! Common Report Var(flag_delete_null_pointer_checks) Init(-1) Optimization
  Delete useless null pointer checks.
  
  fdevirtualize-at-ltrans
! Common Report Var(flag_ltrans_devirtualize)
  Stream extra data to support more aggressive devirtualization in LTO local transformation mode.
  
  fdevirtualize-speculatively
! Common Report Var(flag_devirtualize_speculatively) Optimization
  Perform speculative devirtualization.
  
  fdevirtualize
! Common Report Var(flag_devirtualize) Optimization
  Try to convert virtual calls to direct ones.
  
  fdiagnostics-show-location=
--- 1226,1262 ----
  -ffile-prefix-map=<old>=<new>	Map one directory name to another in compilation result.
  
  fdebug-types-section
! Common Var(flag_debug_types_section) Init(0)
  Output .debug_types section when using DWARF v4 debuginfo.
  
  ; Nonzero for -fdefer-pop: don't pop args after each function call
  ; instead save them up to pop many calls' args with one insns.
  fdefer-pop
! Common Var(flag_defer_pop) Optimization
  Defer popping functions args from stack until later.
  
  fdelayed-branch
! Common Var(flag_delayed_branch) Optimization
  Attempt to fill delay slots of branch instructions.
  
  fdelete-dead-exceptions
! Common Var(flag_delete_dead_exceptions) Init(0) Optimization
  Delete dead instructions that may throw exceptions.
  
  fdelete-null-pointer-checks
! Common Var(flag_delete_null_pointer_checks) Init(-1) Optimization
  Delete useless null pointer checks.
  
  fdevirtualize-at-ltrans
! Common Var(flag_ltrans_devirtualize)
  Stream extra data to support more aggressive devirtualization in LTO local transformation mode.
  
  fdevirtualize-speculatively
! Common Var(flag_devirtualize_speculatively) Optimization
  Perform speculative devirtualization.
  
  fdevirtualize
! Common Var(flag_devirtualize) Optimization
  Try to convert virtual calls to direct ones.
  
  fdiagnostics-show-location=
*************** Enum(diagnostic_url_rule) String(always)
*** 1324,1329 ****
--- 1332,1345 ----
  EnumValue
  Enum(diagnostic_url_rule) String(auto) Value(DIAGNOSTICS_URL_AUTO)
  
+ fdiagnostics-column-unit=
+ Common Joined RejectNegative Enum(diagnostics_column_unit)
+ -fdiagnostics-column-unit=[display|byte]	Select whether column numbers are output as display columns (default) or raw bytes.
+ 
+ fdiagnostics-column-origin=
+ Common Joined RejectNegative UInteger
+ -fdiagnostics-column-origin=<number>	Set the number of the first column.  The default is 1-based as per GNU style, but some utilities may expect 0-based, for example.
+ 
  fdiagnostics-format=
  Common Joined RejectNegative Enum(diagnostics_output_format)
  -fdiagnostics-format=[text|json]	Select output format.
*************** SourceInclude
*** 1333,1338 ****
--- 1349,1363 ----
  diagnostic.h
  
  Enum
+ Name(diagnostics_column_unit) Type(int)
+ 
+ EnumValue
+ Enum(diagnostics_column_unit) String(display) Value(DIAGNOSTICS_COLUMN_UNIT_DISPLAY)
+ 
+ EnumValue
+ Enum(diagnostics_column_unit) String(byte) Value(DIAGNOSTICS_COLUMN_UNIT_BYTE)
+ 
+ Enum
  Name(diagnostics_output_format) Type(int)
  
  EnumValue
*************** fdiagnostics-path-format=
*** 1361,1366 ****
--- 1386,1399 ----
  Common Joined RejectNegative Var(flag_diagnostics_path_format) Enum(diagnostic_path_format) Init(DPF_INLINE_EVENTS)
  Specify how to print any control-flow path associated with a diagnostic.
  
+ fdiagnostics-plain-output
+ Driver Common RejectNegative
+ Turn off any diagnostics features that complicate the output, such as line numbers, color, and warning URLs.
+ 
+ ftabstop=
+ Common Joined RejectNegative UInteger
+ -ftabstop=<number>      Distance between tab stops for column reporting.
+ 
  Enum
  Name(diagnostic_path_format) Type(int)
  
*************** Common RejectNegative Joined Var(flag_du
*** 1405,1411 ****
  -fdump-go-spec=filename	Write all declarations to file as Go code.
  
  fdump-noaddr
! Common Report Var(flag_dump_noaddr)
  Suppress output of addresses in debugging dumps.
  
  freport-bug
--- 1438,1444 ----
  -fdump-go-spec=filename	Write all declarations to file as Go code.
  
  fdump-noaddr
! Common Var(flag_dump_noaddr)
  Suppress output of addresses in debugging dumps.
  
  freport-bug
*************** Common Var(flag_dump_passes) Init(0)
*** 1422,1440 ****
  Dump optimization passes.
  
  fdump-unnumbered
! Common Report Var(flag_dump_unnumbered)
  Suppress output of instruction numbers, line number notes and addresses in debugging dumps.
  
  fdump-unnumbered-links
! Common Report Var(flag_dump_unnumbered_links)
  Suppress output of previous and next insn numbers in debugging dumps.
  
  fdwarf2-cfi-asm
! Common Report Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
  Enable CFI tables via GAS assembler directives.
  
  fearly-inlining
! Common Report Var(flag_early_inlining) Init(1) Optimization
  Perform early inlining.
  
  feliminate-dwarf2-dups
--- 1455,1473 ----
  Dump optimization passes.
  
  fdump-unnumbered
! Common Var(flag_dump_unnumbered)
  Suppress output of instruction numbers, line number notes and addresses in debugging dumps.
  
  fdump-unnumbered-links
! Common Var(flag_dump_unnumbered_links)
  Suppress output of previous and next insn numbers in debugging dumps.
  
  fdwarf2-cfi-asm
! Common Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
  Enable CFI tables via GAS assembler directives.
  
  fearly-inlining
! Common Var(flag_early_inlining) Init(1) Optimization
  Perform early inlining.
  
  feliminate-dwarf2-dups
*************** Common Ignore
*** 1442,1468 ****
  Does nothing.  Preserved for backward compatibility.
  
  fipa-sra
! Common Report Var(flag_ipa_sra) Init(0) Optimization
  Perform interprocedural reduction of aggregates.
  
  feliminate-unused-debug-symbols
! Common Report Var(flag_debug_only_used_symbols) Init(1)
  Perform unused symbol elimination in debug info.
  
  feliminate-unused-debug-types
! Common Report Var(flag_eliminate_unused_debug_types) Init(1)
  Perform unused type elimination in debug info.
  
  femit-class-debug-always
! Common Report Var(flag_emit_class_debug_always) Init(0)
  Do not suppress C++ class debug information.
  
  fexceptions
! Common Report Var(flag_exceptions) Optimization
  Enable exception handling.
  
  fexpensive-optimizations
! Common Report Var(flag_expensive_optimizations) Optimization
  Perform a number of minor, expensive optimizations.
  
  fexcess-precision=
--- 1475,1501 ----
  Does nothing.  Preserved for backward compatibility.
  
  fipa-sra
! Common Var(flag_ipa_sra) Init(0) Optimization
  Perform interprocedural reduction of aggregates.
  
  feliminate-unused-debug-symbols
! Common Var(flag_debug_only_used_symbols) Init(1)
  Perform unused symbol elimination in debug info.
  
  feliminate-unused-debug-types
! Common Var(flag_eliminate_unused_debug_types) Init(1)
  Perform unused type elimination in debug info.
  
  femit-class-debug-always
! Common Var(flag_emit_class_debug_always) Init(0)
  Do not suppress C++ class debug information.
  
  fexceptions
! Common Var(flag_exceptions) Optimization
  Enable exception handling.
  
  fexpensive-optimizations
! Common Var(flag_expensive_optimizations) Optimization
  Perform a number of minor, expensive optimizations.
  
  fexcess-precision=
*************** Common Var(flag_fat_lto_objects)
*** 1501,1511 ****
  Output lto objects containing both the intermediate language and binary output.
  
  ffinite-math-only
! Common Report Var(flag_finite_math_only) Optimization SetByCombined
  Assume no NaNs or infinities are generated.
  
  ffinite-loops
! Common Report Var(flag_finite_loops) Optimization Init(0)
  Assume that loops with an exit will terminate and not loop indefinitely.
  
  ffixed-
--- 1534,1544 ----
  Output lto objects containing both the intermediate language and binary output.
  
  ffinite-math-only
! Common Var(flag_finite_math_only) Optimization SetByCombined
  Assume no NaNs or infinities are generated.
  
  ffinite-loops
! Common Var(flag_finite_loops) Optimization Init(0)
  Assume that loops with an exit will terminate and not loop indefinitely.
  
  ffixed-
*************** Common Joined RejectNegative Var(common_
*** 1513,1519 ****
  -ffixed-<register>	Mark <register> as being unavailable to the compiler.
  
  ffloat-store
! Common Report Var(flag_float_store) Optimization
  Don't allocate floats and doubles in extended-precision registers.
  
  fforce-addr
--- 1546,1552 ----
  -ffixed-<register>	Mark <register> as being unavailable to the compiler.
  
  ffloat-store
! Common Var(flag_float_store) Optimization
  Don't allocate floats and doubles in extended-precision registers.
  
  fforce-addr
*************** Common Ignore
*** 1521,1527 ****
  Does nothing.  Preserved for backward compatibility.
  
  fforward-propagate
! Common Report Var(flag_forward_propagate) Optimization
  Perform a forward propagation pass on RTL.
  
  ffp-contract=
--- 1554,1560 ----
  Does nothing.  Preserved for backward compatibility.
  
  fforward-propagate
! Common Var(flag_forward_propagate) Optimization
  Perform a forward propagation pass on RTL.
  
  ffp-contract=
*************** EnumValue
*** 1542,1580 ****
  Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
  
  ffp-int-builtin-inexact
! Common Report Var(flag_fp_int_builtin_inexact) Init(1) Optimization
  Allow built-in functions ceil, floor, round, trunc to raise \"inexact\" exceptions.
  
  ; Nonzero means don't put addresses of constant functions in registers.
  ; Used for compiling the Unix kernel, where strange substitutions are
  ; done on the assembly output.
  ffunction-cse
! Common Report Var(flag_no_function_cse,0) Optimization
  Allow function addresses to be held in registers.
  
  ffunction-sections
! Common Report Var(flag_function_sections)
  Place each function into its own section.
  
  fgcse
! Common Report Var(flag_gcse) Optimization
  Perform global common subexpression elimination.
  
  fgcse-lm
! Common Report Var(flag_gcse_lm) Init(1) Optimization
  Perform enhanced load motion during global common subexpression elimination.
  
  fgcse-sm
! Common Report Var(flag_gcse_sm) Init(0) Optimization
  Perform store motion after global common subexpression elimination.
  
  fgcse-las
! Common Report Var(flag_gcse_las) Init(0) Optimization
  Perform redundant load after store elimination in global common subexpression
  elimination.
  
  fgcse-after-reload
! Common Report Var(flag_gcse_after_reload) Optimization
  Perform global common subexpression elimination after register allocation has
  finished.
  
--- 1575,1613 ----
  Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
  
  ffp-int-builtin-inexact
! Common Var(flag_fp_int_builtin_inexact) Init(1) Optimization
  Allow built-in functions ceil, floor, round, trunc to raise \"inexact\" exceptions.
  
  ; Nonzero means don't put addresses of constant functions in registers.
  ; Used for compiling the Unix kernel, where strange substitutions are
  ; done on the assembly output.
  ffunction-cse
! Common Var(flag_no_function_cse,0) Optimization
  Allow function addresses to be held in registers.
  
  ffunction-sections
! Common Var(flag_function_sections)
  Place each function into its own section.
  
  fgcse
! Common Var(flag_gcse) Optimization
  Perform global common subexpression elimination.
  
  fgcse-lm
! Common Var(flag_gcse_lm) Init(1) Optimization
  Perform enhanced load motion during global common subexpression elimination.
  
  fgcse-sm
! Common Var(flag_gcse_sm) Init(0) Optimization
  Perform store motion after global common subexpression elimination.
  
  fgcse-las
! Common Var(flag_gcse_las) Init(0) Optimization
  Perform redundant load after store elimination in global common subexpression
  elimination.
  
  fgcse-after-reload
! Common Var(flag_gcse_after_reload) Optimization
  Perform global common subexpression elimination after register allocation has
  finished.
  
*************** EnumValue
*** 1591,1619 ****
  Enum(dwarf_gnat_encodings) String(minimal) Value(DWARF_GNAT_ENCODINGS_MINIMAL)
  
  fgnat-encodings=
! Common Enum(dwarf_gnat_encodings) Joined RejectNegative Report Undocumented Var(gnat_encodings)
  -fgnat-encodings=[all|gdb|minimal]	Select the balance between GNAT encodings and standard DWARF emitted in the debug information.
  
  ; This option is not documented yet as its semantics will change.
  fgraphite
! Common Report Var(flag_graphite) Optimization
  Enable in and out of Graphite representation.
  
  fgraphite-identity
! Common Report Var(flag_graphite_identity) Optimization
  Enable Graphite Identity transformation.
  
  fhoist-adjacent-loads
! Common Report Var(flag_hoist_adjacent_loads) Optimization
  Enable hoisting adjacent loads to encourage generating conditional move
  instructions.
  
  fkeep-gc-roots-live
! Common Undocumented Report Var(flag_keep_gc_roots_live) Optimization
  ; Always keep a pointer to a live memory block
  
  floop-parallelize-all
! Common Report Var(flag_loop_parallelize_all) Optimization
  Mark all loops as parallel.
  
  floop-strip-mine
--- 1624,1657 ----
  Enum(dwarf_gnat_encodings) String(minimal) Value(DWARF_GNAT_ENCODINGS_MINIMAL)
  
  fgnat-encodings=
! Common Enum(dwarf_gnat_encodings) Joined RejectNegative Undocumented Var(gnat_encodings)
  -fgnat-encodings=[all|gdb|minimal]	Select the balance between GNAT encodings and standard DWARF emitted in the debug information.
  
  ; This option is not documented yet as its semantics will change.
  fgraphite
! Common Var(flag_graphite) Optimization
  Enable in and out of Graphite representation.
  
  fgraphite-identity
! Common Var(flag_graphite_identity) Optimization
  Enable Graphite Identity transformation.
  
  fhoist-adjacent-loads
! Common Var(flag_hoist_adjacent_loads) Optimization
  Enable hoisting adjacent loads to encourage generating conditional move
  instructions.
  
  fkeep-gc-roots-live
! Common Undocumented Var(flag_keep_gc_roots_live) Optimization
  ; Always keep a pointer to a live memory block
  
+ flarge-source-files
+ Common Var(flag_large_source_files) Init(0)
+ Improve GCC's ability to track column numbers in large source files,
+ at the expense of slower compilation.
+ 
  floop-parallelize-all
! Common Var(flag_loop_parallelize_all) Optimization
  Mark all loops as parallel.
  
  floop-strip-mine
*************** Common Alias(floop-nest-optimize)
*** 1621,1627 ****
  Enable loop nest transforms.  Same as -floop-nest-optimize.
  
  floop-interchange
! Common Report Var(flag_loop_interchange) Optimization
  Enable loop interchange on trees.
  
  floop-block
--- 1659,1665 ----
  Enable loop nest transforms.  Same as -floop-nest-optimize.
  
  floop-interchange
! Common Var(flag_loop_interchange) Optimization
  Enable loop interchange on trees.
  
  floop-block
*************** Common Alias(floop-nest-optimize)
*** 1629,1643 ****
  Enable loop nest transforms.  Same as -floop-nest-optimize.
  
  floop-unroll-and-jam
! Common Report Var(flag_unroll_jam) Optimization
  Perform unroll-and-jam on loops.
  
  fgnu-tm
! Common Report Var(flag_tm)
  Enable support for GNU transactional memory.
  
  fgnu-unique
! Common Report Var(flag_gnu_unique) Init(1)
  Use STB_GNU_UNIQUE if supported by the assembler.
  
  floop-flatten
--- 1667,1681 ----
  Enable loop nest transforms.  Same as -floop-nest-optimize.
  
  floop-unroll-and-jam
! Common Var(flag_unroll_jam) Optimization
  Perform unroll-and-jam on loops.
  
  fgnu-tm
! Common Var(flag_tm)
  Enable support for GNU transactional memory.
  
  fgnu-unique
! Common Var(flag_gnu_unique) Init(1)
  Use STB_GNU_UNIQUE if supported by the assembler.
  
  floop-flatten
*************** Common Ignore
*** 1645,1663 ****
  Does nothing. Preserved for backward compatibility.
  
  floop-nest-optimize
! Common Report Var(flag_loop_nest_optimize) Optimization
  Enable the loop nest optimizer.
  
  fstrict-volatile-bitfields
! Common Report Var(flag_strict_volatile_bitfields) Init(-1) Optimization
  Force bitfield accesses to match their type width.
  
  fstore-merging
! Common Report Var(flag_store_merging) Optimization
  Merge adjacent stores.
  
  fguess-branch-probability
! Common Report Var(flag_guess_branch_prob) Optimization
  Enable guessing of branch probabilities.
  
  ; Nonzero means ignore `#ident' directives.  0 means handle them.
--- 1683,1701 ----
  Does nothing. Preserved for backward compatibility.
  
  floop-nest-optimize
! Common Var(flag_loop_nest_optimize) Optimization
  Enable the loop nest optimizer.
  
  fstrict-volatile-bitfields
! Common Var(flag_strict_volatile_bitfields) Init(-1) Optimization
  Force bitfield accesses to match their type width.
  
  fstore-merging
! Common Var(flag_store_merging) Optimization
  Merge adjacent stores.
  
  fguess-branch-probability
! Common Var(flag_guess_branch_prob) Optimization
  Enable guessing of branch probabilities.
  
  ; Nonzero means ignore `#ident' directives.  0 means handle them.
*************** Enable guessing of branch probabilities.
*** 1665,1679 ****
  ; On SVR4 targets, it also controls whether or not to emit a
  ; string identifying the compiler.
  fident
! Common Report Var(flag_no_ident,0)
  Process #ident directives.
  
  fif-conversion
! Common Report Var(flag_if_conversion) Optimization
  Perform conversion of conditional jumps to branchless equivalents.
  
  fif-conversion2
! Common Report Var(flag_if_conversion2) Optimization
  Perform conversion of conditional jumps to conditional execution.
  
  fstack-reuse=
--- 1703,1717 ----
  ; On SVR4 targets, it also controls whether or not to emit a
  ; string identifying the compiler.
  fident
! Common Var(flag_no_ident,0)
  Process #ident directives.
  
  fif-conversion
! Common Var(flag_if_conversion) Optimization
  Perform conversion of conditional jumps to branchless equivalents.
  
  fif-conversion2
! Common Var(flag_if_conversion2) Optimization
  Perform conversion of conditional jumps to conditional execution.
  
  fstack-reuse=
*************** EnumValue
*** 1693,1699 ****
  Enum(stack_reuse_level) String(none) Value(SR_NONE)
  
  ftree-loop-if-convert
! Common Report Var(flag_tree_loop_if_convert) Init(-1) Optimization
  Convert conditional jumps in innermost loops to branchless equivalents.
  
  ftree-loop-if-convert-stores
--- 1731,1737 ----
  Enum(stack_reuse_level) String(none) Value(SR_NONE)
  
  ftree-loop-if-convert
! Common Var(flag_tree_loop_if_convert) Init(-1) Optimization
  Convert conditional jumps in innermost loops to branchless equivalents.
  
  ftree-loop-if-convert-stores
*************** Does nothing. Preserved for backward com
*** 1705,1733 ****
  ; and it may be extended to other effects
  ; needed for crtstuff.c on other systems.
  finhibit-size-directive
! Common Report Var(flag_inhibit_size_directive)
  Do not generate .size directives.
  
  findirect-inlining
! Common Report Var(flag_indirect_inlining) Optimization
  Perform indirect inlining.
  
  ; General flag to enable inlining.  Specifying -fno-inline will disable
  ; all inlining apart from always-inline functions.
  finline
! Common Report Var(flag_no_inline,0) Init(0) Optimization
  Enable inlining of function declared \"inline\", disabling disables all inlining.
  
  finline-small-functions
! Common Report Var(flag_inline_small_functions) Optimization
  Integrate functions into their callers when code size is known not to grow.
  
  finline-functions
! Common Report Var(flag_inline_functions) Optimization
  Integrate functions not declared \"inline\" into their callers when profitable.
  
  finline-functions-called-once
! Common Report Var(flag_inline_functions_called_once) Optimization
  Integrate functions only required by their single caller.
  
  finline-limit-
--- 1743,1771 ----
  ; and it may be extended to other effects
  ; needed for crtstuff.c on other systems.
  finhibit-size-directive
! Common Var(flag_inhibit_size_directive)
  Do not generate .size directives.
  
  findirect-inlining
! Common Var(flag_indirect_inlining) Optimization
  Perform indirect inlining.
  
  ; General flag to enable inlining.  Specifying -fno-inline will disable
  ; all inlining apart from always-inline functions.
  finline
! Common Var(flag_no_inline,0) Init(0) Optimization
  Enable inlining of function declared \"inline\", disabling disables all inlining.
  
  finline-small-functions
! Common Var(flag_inline_small_functions) Optimization
  Integrate functions into their callers when code size is known not to grow.
  
  finline-functions
! Common Var(flag_inline_functions) Optimization
  Integrate functions not declared \"inline\" into their callers when profitable.
  
  finline-functions-called-once
! Common Var(flag_inline_functions_called_once) Optimization
  Integrate functions only required by their single caller.
  
  finline-limit-
*************** Common RejectNegative Joined UInteger
*** 1738,1751 ****
  -finline-limit=<number>	Limit the size of inlined functions to <number>.
  
  finline-atomics
! Common Report Var(flag_inline_atomics) Init(1) Optimization
  Inline __atomic operations when a lock free instruction sequence is available.
  
  fcf-protection
  Common RejectNegative Alias(fcf-protection=,full)
  
  fcf-protection=
! Common Report Joined RejectNegative Enum(cf_protection_level) Var(flag_cf_protection) Init(CF_NONE)
  -fcf-protection=[full|branch|return|none|check]	Instrument functions with checks to verify jump/call/return control-flow transfer
  instructions have valid targets.
  
--- 1776,1789 ----
  -finline-limit=<number>	Limit the size of inlined functions to <number>.
  
  finline-atomics
! Common Var(flag_inline_atomics) Init(1) Optimization
  Inline __atomic operations when a lock free instruction sequence is available.
  
  fcf-protection
  Common RejectNegative Alias(fcf-protection=,full)
  
  fcf-protection=
! Common Joined RejectNegative Enum(cf_protection_level) Var(flag_cf_protection) Init(CF_NONE)
  -fcf-protection=[full|branch|return|none|check]	Instrument functions with checks to verify jump/call/return control-flow transfer
  instructions have valid targets.
  
*************** EnumValue
*** 1768,1774 ****
  Enum(cf_protection_level) String(none) Value(CF_NONE)
  
  finstrument-functions
! Common Report Var(flag_instrument_function_entry_exit)
  Instrument function entry and exit with profiling calls.
  
  finstrument-functions-exclude-function-list=
--- 1806,1812 ----
  Enum(cf_protection_level) String(none) Value(CF_NONE)
  
  finstrument-functions
! Common Var(flag_instrument_function_entry_exit)
  Instrument function entry and exit with profiling calls.
  
  finstrument-functions-exclude-function-list=
*************** Common RejectNegative Joined
*** 1780,1790 ****
  -finstrument-functions-exclude-file-list=filename,...	Do not instrument functions listed in files.
  
  fipa-cp
! Common Report Var(flag_ipa_cp) Optimization
  Perform interprocedural constant propagation.
  
  fipa-cp-clone
! Common Report Var(flag_ipa_cp_clone) Optimization
  Perform cloning to make Interprocedural constant propagation stronger.
  
  fipa-cp-alignment
--- 1818,1828 ----
  -finstrument-functions-exclude-file-list=filename,...	Do not instrument functions listed in files.
  
  fipa-cp
! Common Var(flag_ipa_cp) Optimization
  Perform interprocedural constant propagation.
  
  fipa-cp-clone
! Common Var(flag_ipa_cp_clone) Optimization
  Perform cloning to make Interprocedural constant propagation stronger.
  
  fipa-cp-alignment
*************** Common Ignore
*** 1792,1834 ****
  Does nothing.  Preserved for backward compatibility.
  
  fipa-bit-cp
! Common Report Var(flag_ipa_bit_cp) Optimization
  Perform interprocedural bitwise constant propagation.
  
  fipa-profile
! Common Report Var(flag_ipa_profile) Init(0) Optimization
  Perform interprocedural profile propagation.
  
  fipa-pta
! Common Report Var(flag_ipa_pta) Init(0) Optimization
  Perform interprocedural points-to analysis.
  
  fipa-pure-const
! Common Report Var(flag_ipa_pure_const) Init(0) Optimization
  Discover pure and const functions.
  
  fipa-icf
! Common Report Var(flag_ipa_icf) Optimization
  Perform Identical Code Folding for functions and read-only variables.
  
  fipa-icf-functions
! Common Report Var(flag_ipa_icf_functions) Optimization
  Perform Identical Code Folding for functions.
  
  fipa-icf-variables
! Common Report Var(flag_ipa_icf_variables) Optimization
  Perform Identical Code Folding for variables.
  
  fipa-reference
! Common Report Var(flag_ipa_reference) Init(0) Optimization
  Discover read-only and non addressable static variables.
  
  fipa-reference-addressable
! Common Report Var(flag_ipa_reference_addressable) Init(0) Optimization
  Discover read-only, write-only and non-addressable static variables.
  
  fipa-stack-alignment
! Common Report Var(flag_ipa_stack_alignment) Init(1) Optimization
  Reduce stack alignment on call sites if possible.
  
  fipa-matrix-reorg
--- 1830,1876 ----
  Does nothing.  Preserved for backward compatibility.
  
  fipa-bit-cp
! Common Var(flag_ipa_bit_cp) Optimization
  Perform interprocedural bitwise constant propagation.
  
+ fipa-modref
+ Common Var(flag_ipa_modref) Optimization
+ Perform interprocedural modref analysis.
+ 
  fipa-profile
! Common Var(flag_ipa_profile) Init(0) Optimization
  Perform interprocedural profile propagation.
  
  fipa-pta
! Common Var(flag_ipa_pta) Init(0) Optimization
  Perform interprocedural points-to analysis.
  
  fipa-pure-const
! Common Var(flag_ipa_pure_const) Init(0) Optimization
  Discover pure and const functions.
  
  fipa-icf
! Common Var(flag_ipa_icf) Optimization
  Perform Identical Code Folding for functions and read-only variables.
  
  fipa-icf-functions
! Common Var(flag_ipa_icf_functions) Optimization
  Perform Identical Code Folding for functions.
  
  fipa-icf-variables
! Common Var(flag_ipa_icf_variables) Optimization
  Perform Identical Code Folding for variables.
  
  fipa-reference
! Common Var(flag_ipa_reference) Init(0) Optimization
  Discover read-only and non addressable static variables.
  
  fipa-reference-addressable
! Common Var(flag_ipa_reference_addressable) Init(0) Optimization
  Discover read-only, write-only and non-addressable static variables.
  
  fipa-stack-alignment
! Common Var(flag_ipa_stack_alignment) Init(1) Optimization
  Reduce stack alignment on call sites if possible.
  
  fipa-matrix-reorg
*************** Common Ignore
*** 1840,1846 ****
  Does nothing. Preserved for backward compatibility.
  
  fipa-vrp
! Common Report Var(flag_ipa_vrp) Optimization
  Perform IPA Value Range Propagation.
  
  fira-algorithm=
--- 1882,1888 ----
  Does nothing. Preserved for backward compatibility.
  
  fipa-vrp
! Common Var(flag_ipa_vrp) Optimization
  Perform IPA Value Range Propagation.
  
  fira-algorithm=
*************** EnumValue
*** 1873,1893 ****
  Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
  
  fira-hoist-pressure
! Common Report Var(flag_ira_hoist_pressure) Init(1) Optimization
  Use IRA based register pressure calculation
  in RTL hoist optimizations.
  
  fira-loop-pressure
! Common Report Var(flag_ira_loop_pressure) Optimization
  Use IRA based register pressure calculation
  in RTL loop optimizations.
  
  fira-share-save-slots
! Common Report Var(flag_ira_share_save_slots) Init(1) Optimization
  Share slots for saving different hard registers.
  
  fira-share-spill-slots
! Common Report Var(flag_ira_share_spill_slots) Init(1) Optimization
  Share stack slots for spilled pseudo-registers.
  
  fira-verbose=
--- 1915,1935 ----
  Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
  
  fira-hoist-pressure
! Common Var(flag_ira_hoist_pressure) Init(1) Optimization
  Use IRA based register pressure calculation
  in RTL hoist optimizations.
  
  fira-loop-pressure
! Common Var(flag_ira_loop_pressure) Optimization
  Use IRA based register pressure calculation
  in RTL loop optimizations.
  
  fira-share-save-slots
! Common Var(flag_ira_share_save_slots) Init(1) Optimization
  Share slots for saving different hard registers.
  
  fira-share-spill-slots
! Common Var(flag_ira_share_spill_slots) Init(1) Optimization
  Share stack slots for spilled pseudo-registers.
  
  fira-verbose=
*************** Common RejectNegative Joined UInteger Va
*** 1895,1921 ****
  -fira-verbose=<number>	Control IRA's level of diagnostic messages.
  
  fivopts
! Common Report Var(flag_ivopts) Init(1) Optimization
  Optimize induction variables on trees.
  
  fjump-tables
  Common Var(flag_jump_tables) Init(1) Optimization
  Use jump tables for sufficiently large switch statements.
  
  fkeep-inline-functions
! Common Report Var(flag_keep_inline_functions)
  Generate code for functions even if they are fully inlined.
  
  fkeep-static-functions
! Common Report Var(flag_keep_static_functions)
  Generate code for static functions even if they are never called.
  
  fkeep-static-consts
! Common Report Var(flag_keep_static_consts) Init(1)
  Emit static const variables even if they are not used.
  
  fleading-underscore
! Common Report Var(flag_leading_underscore) Init(-1)
  Give external symbols a leading underscore.
  
  floop-optimize
--- 1937,1967 ----
  -fira-verbose=<number>	Control IRA's level of diagnostic messages.
  
  fivopts
! Common Var(flag_ivopts) Init(1) Optimization
  Optimize induction variables on trees.
  
  fjump-tables
  Common Var(flag_jump_tables) Init(1) Optimization
  Use jump tables for sufficiently large switch statements.
  
+ fbit-tests
+ Common Var(flag_bit_tests) Init(1) Optimization
+ Use bit tests for sufficiently large switch statements.
+ 
  fkeep-inline-functions
! Common Var(flag_keep_inline_functions)
  Generate code for functions even if they are fully inlined.
  
  fkeep-static-functions
! Common Var(flag_keep_static_functions)
  Generate code for static functions even if they are never called.
  
  fkeep-static-consts
! Common Var(flag_keep_static_consts) Init(1)
  Emit static const variables even if they are not used.
  
  fleading-underscore
! Common Var(flag_leading_underscore) Init(-1)
  Give external symbols a leading underscore.
  
  floop-optimize
*************** Common Ignore
*** 1923,1929 ****
  Does nothing.  Preserved for backward compatibility.
  
  flra-remat
! Common Report Var(flag_lra_remat) Optimization
  Do CFG-sensitive rematerialization in LRA.
  
  flto
--- 1969,1975 ----
  Does nothing.  Preserved for backward compatibility.
  
  flra-remat
! Common Var(flag_lra_remat) Optimization
  Do CFG-sensitive rematerialization in LRA.
  
  flto
*************** Common Ignore
*** 1966,1980 ****
  Does nothing.  Preserved for backward compatibility.
  
  flto-report
! Common Report Var(flag_lto_report) Init(0)
  Report various link-time optimization statistics.
  
  flto-report-wpa
! Common Report Var(flag_lto_report_wpa) Init(0)
  Report various link-time optimization statistics for WPA only.
  
  fmath-errno
! Common Report Var(flag_errno_math) Init(1) Optimization SetByCombined
  Set errno after built-in math functions.
  
  fmax-errors=
--- 2012,2026 ----
  Does nothing.  Preserved for backward compatibility.
  
  flto-report
! Common Var(flag_lto_report) Init(0)
  Report various link-time optimization statistics.
  
  flto-report-wpa
! Common Var(flag_lto_report_wpa) Init(0)
  Report various link-time optimization statistics for WPA only.
  
  fmath-errno
! Common Var(flag_errno_math) Init(1) Optimization SetByCombined
  Set errno after built-in math functions.
  
  fmax-errors=
*************** Common Joined RejectNegative UInteger Va
*** 1982,2007 ****
  -fmax-errors=<number>	Maximum number of errors to report.
  
  fmem-report
! Common Report Var(mem_report)
  Report on permanent memory allocation.
  
  fmem-report-wpa
! Common Report Var(mem_report_wpa)
  Report on permanent memory allocation in WPA only.
  
  ; This will attempt to merge constant section constants, if 1 only
  ; string constants and constants from constant pool, if 2 also constant
  ; variables.
  fmerge-all-constants
! Common Report Var(flag_merge_constants,2) Init(1)
  Attempt to merge identical constants and constant variables.
  
  fmerge-constants
! Common Report Var(flag_merge_constants,1)
  Attempt to merge identical constants across compilation units.
  
  fmerge-debug-strings
! Common Report Var(flag_merge_debug_strings) Init(1)
  Attempt to merge identical debug strings across compilation units.
  
  fmessage-length=
--- 2028,2053 ----
  -fmax-errors=<number>	Maximum number of errors to report.
  
  fmem-report
! Common Var(mem_report)
  Report on permanent memory allocation.
  
  fmem-report-wpa
! Common Var(mem_report_wpa)
  Report on permanent memory allocation in WPA only.
  
  ; This will attempt to merge constant section constants, if 1 only
  ; string constants and constants from constant pool, if 2 also constant
  ; variables.
  fmerge-all-constants
! Common Var(flag_merge_constants,2) Init(1)
  Attempt to merge identical constants and constant variables.
  
  fmerge-constants
! Common Var(flag_merge_constants,1)
  Attempt to merge identical constants across compilation units.
  
  fmerge-debug-strings
! Common Var(flag_merge_debug_strings) Init(1)
  Attempt to merge identical debug strings across compilation units.
  
  fmessage-length=
*************** Common RejectNegative Joined UInteger
*** 2009,2023 ****
  -fmessage-length=<number>	Limit diagnostics to <number> characters per line.  0 suppresses line-wrapping.
  
  fmodulo-sched
! Common Report Var(flag_modulo_sched) Optimization
  Perform SMS based modulo scheduling before the first scheduling pass.
  
  fmodulo-sched-allow-regmoves
! Common Report Var(flag_modulo_sched_allow_regmoves) Optimization
  Perform SMS based modulo scheduling with register moves allowed.
  
  fmove-loop-invariants
! Common Report Var(flag_move_loop_invariants) Optimization
  Move loop invariant computations out of loops.
  
  fdce
--- 2055,2069 ----
  -fmessage-length=<number>	Limit diagnostics to <number> characters per line.  0 suppresses line-wrapping.
  
  fmodulo-sched
! Common Var(flag_modulo_sched) Optimization
  Perform SMS based modulo scheduling before the first scheduling pass.
  
  fmodulo-sched-allow-regmoves
! Common Var(flag_modulo_sched_allow_regmoves) Optimization
  Perform SMS based modulo scheduling with register moves allowed.
  
  fmove-loop-invariants
! Common Var(flag_move_loop_invariants) Optimization
  Move loop invariant computations out of loops.
  
  fdce
*************** Common Var(flag_dse) Init(0) Optimizatio
*** 2029,2039 ****
  Use the RTL dead store elimination pass.
  
  freschedule-modulo-scheduled-loops
! Common Report Var(flag_resched_modulo_sched) Optimization
  Enable/Disable the traditional scheduling in loops that already passed modulo scheduling.
  
  fnon-call-exceptions
! Common Report Var(flag_non_call_exceptions) Optimization
  Support synchronous non-call exceptions.
  
  foffload=
--- 2075,2085 ----
  Use the RTL dead store elimination pass.
  
  freschedule-modulo-scheduled-loops
! Common Var(flag_resched_modulo_sched) Optimization
  Enable/Disable the traditional scheduling in loops that already passed modulo scheduling.
  
  fnon-call-exceptions
! Common Var(flag_non_call_exceptions) Optimization
  Support synchronous non-call exceptions.
  
  foffload=
*************** EnumValue
*** 2054,2064 ****
  Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
  
  fomit-frame-pointer
! Common Report Var(flag_omit_frame_pointer) Optimization
  When possible do not generate stack frames.
  
  fopt-info
! Common Report Var(flag_opt_info) Optimization
  Enable all optimization info dumps on stderr.
  
  fopt-info-
--- 2100,2110 ----
  Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
  
  fomit-frame-pointer
! Common Var(flag_omit_frame_pointer) Optimization
  When possible do not generate stack frames.
  
  fopt-info
! Common Var(flag_opt_info) Optimization
  Enable all optimization info dumps on stderr.
  
  fopt-info-
*************** Common Joined RejectNegative Var(common_
*** 2066,2072 ****
  -fopt-info[-<type>=filename]	Dump compiler optimization details.
  
  fsave-optimization-record
! Common Report Var(flag_save_optimization_record) Optimization
  Write a SRCFILE.opt-record.json file detailing what optimizations were performed.
  
  foptimize-register-move
--- 2112,2118 ----
  -fopt-info[-<type>=filename]	Dump compiler optimization details.
  
  fsave-optimization-record
! Common Var(flag_save_optimization_record) Optimization
  Write a SRCFILE.opt-record.json file detailing what optimizations were performed.
  
  foptimize-register-move
*************** Common Ignore
*** 2074,2096 ****
  Does nothing. Preserved for backward compatibility.
  
  foptimize-sibling-calls
! Common Report Var(flag_optimize_sibling_calls) Optimization
  Optimize sibling and tail recursive calls.
  
  fpartial-inlining
! Common Report Var(flag_partial_inlining) Optimization
  Perform partial inlining.
  
  fpre-ipa-mem-report
! Common Report Var(pre_ipa_mem_report)
  Report on memory allocation before interprocedural optimization.
  
  fpost-ipa-mem-report
! Common Report Var(post_ipa_mem_report)
  Report on memory allocation before interprocedural optimization.
  
  fpack-struct
! Common Report Var(flag_pack_struct) Optimization
  Pack structure members together without holes.
  
  fpack-struct=
--- 2120,2142 ----
  Does nothing. Preserved for backward compatibility.
  
  foptimize-sibling-calls
! Common Var(flag_optimize_sibling_calls) Optimization
  Optimize sibling and tail recursive calls.
  
  fpartial-inlining
! Common Var(flag_partial_inlining) Optimization
  Perform partial inlining.
  
  fpre-ipa-mem-report
! Common Var(pre_ipa_mem_report)
  Report on memory allocation before interprocedural optimization.
  
  fpost-ipa-mem-report
! Common Var(post_ipa_mem_report)
  Report on memory allocation before interprocedural optimization.
  
  fpack-struct
! Common Var(flag_pack_struct) Optimization
  Pack structure members together without holes.
  
  fpack-struct=
*************** Common RejectNegative Joined UInteger Op
*** 2098,2136 ****
  -fpack-struct=<number>	Set initial maximum structure member alignment.
  
  fpcc-struct-return
! Common Report Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
  Return small aggregates in memory, not registers.
  
  fpeel-loops
! Common Report Var(flag_peel_loops) Optimization
  Perform loop peeling.
  
  fpeephole
! Common Report Var(flag_no_peephole,0) Optimization
  Enable machine specific peephole optimizations.
  
  fpeephole2
! Common Report Var(flag_peephole2) Optimization
  Enable an RTL peephole pass before sched2.
  
  fPIC
! Common Report Var(flag_pic,2) Negative(fPIE) Init(-1)
  Generate position-independent code if possible (large mode).
  
  fPIE
! Common Report Var(flag_pie,2) Negative(fpic) Init(-1)
  Generate position-independent code for executables if possible (large mode).
  
  fpic
! Common Report Var(flag_pic,1) Negative(fpie) Init(-1)
  Generate position-independent code if possible (small mode).
  
  fpie
! Common Report Var(flag_pie,1) Negative(fPIC) Init(-1)
  Generate position-independent code for executables if possible (small mode).
  
  fplt
! Common Report Var(flag_plt) Init(1) Optimization
  Use PLT for PIC calls (-fno-plt: load the address from GOT at call site).
  
  fplugin=
--- 2144,2182 ----
  -fpack-struct=<number>	Set initial maximum structure member alignment.
  
  fpcc-struct-return
! Common Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
  Return small aggregates in memory, not registers.
  
  fpeel-loops
! Common Var(flag_peel_loops) Optimization
  Perform loop peeling.
  
  fpeephole
! Common Var(flag_no_peephole,0) Optimization
  Enable machine specific peephole optimizations.
  
  fpeephole2
! Common Var(flag_peephole2) Optimization
  Enable an RTL peephole pass before sched2.
  
  fPIC
! Common Var(flag_pic,2) Negative(fPIE) Init(-1)
  Generate position-independent code if possible (large mode).
  
  fPIE
! Common Var(flag_pie,2) Negative(fpic) Init(-1)
  Generate position-independent code for executables if possible (large mode).
  
  fpic
! Common Var(flag_pic,1) Negative(fpie) Init(-1)
  Generate position-independent code if possible (small mode).
  
  fpie
! Common Var(flag_pie,1) Negative(fPIC) Init(-1)
  Generate position-independent code for executables if possible (small mode).
  
  fplt
! Common Var(flag_plt) Init(1) Optimization
  Use PLT for PIC calls (-fno-plt: load the address from GOT at call site).
  
  fplugin=
*************** Common Joined RejectNegative Var(common_
*** 2142,2164 ****
  -fplugin-arg-<name>-<key>[=<value>]	Specify argument <key>=<value> for plugin <name>.
  
  fpredictive-commoning
! Common Report Var(flag_predictive_commoning) Optimization
  Run predictive commoning optimization.
  
  fprefetch-loop-arrays
! Common Report Var(flag_prefetch_loop_arrays) Init(-1) Optimization
  Generate prefetch instructions, if available, for arrays in loops.
  
  fprofile
! Common Report Var(profile_flag)
  Enable basic program profiling code.
  
  fprofile-abs-path
! Common Report Var(profile_abs_path_flag)
  Generate absolute source path names for gcov.
  
  fprofile-arcs
! Common Report Var(profile_arc_flag)
  Insert arc-based program profiling code.
  
  fprofile-dir=
--- 2188,2210 ----
  -fplugin-arg-<name>-<key>[=<value>]	Specify argument <key>=<value> for plugin <name>.
  
  fpredictive-commoning
! Common Var(flag_predictive_commoning) Optimization
  Run predictive commoning optimization.
  
  fprefetch-loop-arrays
! Common Var(flag_prefetch_loop_arrays) Init(-1) Optimization
  Generate prefetch instructions, if available, for arrays in loops.
  
  fprofile
! Common Var(profile_flag)
  Enable basic program profiling code.
  
  fprofile-abs-path
! Common Var(profile_abs_path_flag)
  Generate absolute source path names for gcov.
  
  fprofile-arcs
! Common Var(profile_arc_flag)
  Insert arc-based program profiling code.
  
  fprofile-dir=
*************** Common Joined RejectNegative Var(profile
*** 2171,2177 ****
  Select the name for storing the profile note file.
  
  fprofile-correction
! Common Report Var(flag_profile_correction)
  Enable correction of flow inconsistent profile data input.
  
  fprofile-update=
--- 2217,2223 ----
  Select the name for storing the profile note file.
  
  fprofile-correction
! Common Var(flag_profile_correction)
  Enable correction of flow inconsistent profile data input.
  
  fprofile-update=
*************** Common Joined RejectNegative Enum(profil
*** 2180,2190 ****
  
  fprofile-filter-files=
  Common Joined RejectNegative Var(flag_profile_filter_files)
! Instrument only functions from files where names match any regular expression (separated by a semi-colon).
  
  fprofile-exclude-files=
  Common Joined RejectNegative Var(flag_profile_exclude_files)
! Instrument only functions from files where names do not match all the regular expressions (separated by a semi-colon).
  
  Enum
  Name(profile_reproducibility) Type(enum profile_reproducibility) UnknownError(unknown profile reproducibility method %qs)
--- 2226,2236 ----
  
  fprofile-filter-files=
  Common Joined RejectNegative Var(flag_profile_filter_files)
! Instrument only functions from files whose name matches any of the regular expressions (separated by semi-colons).
  
  fprofile-exclude-files=
  Common Joined RejectNegative Var(flag_profile_exclude_files)
! Instrument only functions from files whose name does not match any of the regular expressions (separated by semi-colons).
  
  Enum
  Name(profile_reproducibility) Type(enum profile_reproducibility) UnknownError(unknown profile reproducibility method %qs)
*************** fprofile-generate=
*** 2226,2233 ****
  Common Joined RejectNegative
  Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=.
  
  fprofile-partial-training
! Common Report Var(flag_profile_partial_training) Optimization
  Do not assume that functions never executed during the train run are cold.
  
  fprofile-use
--- 2272,2287 ----
  Common Joined RejectNegative
  Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=.
  
+ fprofile-info-section
+ Common RejectNegative
+ Register the profile information in the .gcov_info section instead of using a constructor/destructor.
+ 
+ fprofile-info-section=
+ Common Joined RejectNegative Var(profile_info_section)
+ Register the profile information in the specified section instead of using a constructor/destructor.
+ 
  fprofile-partial-training
! Common Var(flag_profile_partial_training) Optimization
  Do not assume that functions never executed during the train run are cold.
  
  fprofile-use
*************** Common Joined RejectNegative
*** 2239,2257 ****
  Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=.
  
  fprofile-values
! Common Report Var(flag_profile_values)
  Insert code to profile values of expressions.
  
  fprofile-report
! Common Report Var(profile_report)
  Report on consistency of profile.
  
  fprofile-reorder-functions
! Common Report Var(flag_profile_reorder_functions) Optimization
  Enable function reordering that improves code placement.
  
  fpatchable-function-entry=
! Common Joined Optimization
  Insert NOP instructions at each function entry.
  
  frandom-seed
--- 2293,2311 ----
  Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=.
  
  fprofile-values
! Common Var(flag_profile_values)
  Insert code to profile values of expressions.
  
  fprofile-report
! Common Var(profile_report)
  Report on consistency of profile.
  
  fprofile-reorder-functions
! Common Var(flag_profile_reorder_functions) Optimization
  Enable function reordering that improves code placement.
  
  fpatchable-function-entry=
! Common Var(flag_patchable_function_entry) Joined Optimization
  Insert NOP instructions at each function entry.
  
  frandom-seed
*************** Common Joined RejectNegative Var(common_
*** 2268,2278 ****
  ; records information in the assembler output file as comments, so
  ; they never reach the object file.
  frecord-gcc-switches
! Common Report Var(flag_record_gcc_switches)
  Record gcc command line switches in the object file.
  
  freg-struct-return
! Common Report Var(flag_pcc_struct_return,0) Optimization
  Return small aggregates in registers.
  
  fregmove
--- 2322,2332 ----
  ; records information in the assembler output file as comments, so
  ; they never reach the object file.
  frecord-gcc-switches
! Common Var(flag_record_gcc_switches)
  Record gcc command line switches in the object file.
  
  freg-struct-return
! Common Var(flag_pcc_struct_return,0) Optimization
  Return small aggregates in registers.
  
  fregmove
*************** Common Ignore
*** 2280,2286 ****
  Does nothing. Preserved for backward compatibility.
  
  flifetime-dse
! Common Report Var(flag_lifetime_dse,2) Init(2) Optimization
  Tell DSE that the storage for a C++ object is dead when the constructor
  starts and when the destructor finishes.
  
--- 2334,2340 ----
  Does nothing. Preserved for backward compatibility.
  
  flifetime-dse
! Common Var(flag_lifetime_dse,2) Init(2) Optimization
  Tell DSE that the storage for a C++ object is dead when the constructor
  starts and when the destructor finishes.
  
*************** flive-patching
*** 2291,2297 ****
  Common RejectNegative Alias(flive-patching=,inline-clone) Optimization
  
  flive-patching=
! Common Report Joined RejectNegative Enum(live_patching_level) Var(flag_live_patching) Init(LIVE_PATCHING_NONE) Optimization
  -flive-patching=[inline-only-static|inline-clone]	Control IPA
  optimizations to provide a safe compilation for live-patching.  At the same
  time, provides multiple-level control on the enabled IPA optimizations.
--- 2345,2351 ----
  Common RejectNegative Alias(flive-patching=,inline-clone) Optimization
  
  flive-patching=
! Common Joined RejectNegative Enum(live_patching_level) Var(flag_live_patching) Init(LIVE_PATCHING_NONE) Optimization
  -flive-patching=[inline-only-static|inline-clone]	Control IPA
  optimizations to provide a safe compilation for live-patching.  At the same
  time, provides multiple-level control on the enabled IPA optimizations.
*************** EnumValue
*** 2306,2328 ****
  Enum(live_patching_level) String(inline-clone) Value(LIVE_PATCHING_INLINE_CLONE)
  
  fallocation-dce
! Common Report Var(flag_allocation_dce) Init(1) Optimization
  Tell DCE to remove unused C++ allocations.
  
  flive-range-shrinkage
! Common Report Var(flag_live_range_shrinkage) Init(0) Optimization
  Relief of register pressure through live range shrinkage.
  
  frename-registers
! Common Report Var(flag_rename_registers) Init(2) Optimization
  Perform a register renaming optimization pass.
  
  fschedule-fusion
! Common Report Var(flag_schedule_fusion) Init(2) Optimization
  Perform a target dependent instruction fusion optimization pass.
  
  freorder-blocks
! Common Report Var(flag_reorder_blocks) Optimization
  Reorder basic blocks to improve code placement.
  
  freorder-blocks-algorithm=
--- 2360,2382 ----
  Enum(live_patching_level) String(inline-clone) Value(LIVE_PATCHING_INLINE_CLONE)
  
  fallocation-dce
! Common Var(flag_allocation_dce) Init(1) Optimization
  Tell DCE to remove unused C++ allocations.
  
  flive-range-shrinkage
! Common Var(flag_live_range_shrinkage) Init(0) Optimization
  Relief of register pressure through live range shrinkage.
  
  frename-registers
! Common Var(flag_rename_registers) Init(2) Optimization
  Perform a register renaming optimization pass.
  
  fschedule-fusion
! Common Var(flag_schedule_fusion) Init(2) Optimization
  Perform a target dependent instruction fusion optimization pass.
  
  freorder-blocks
! Common Var(flag_reorder_blocks) Optimization
  Reorder basic blocks to improve code placement.
  
  freorder-blocks-algorithm=
*************** EnumValue
*** 2339,2353 ****
  Enum(reorder_blocks_algorithm) String(stc) Value(REORDER_BLOCKS_ALGORITHM_STC)
  
  freorder-blocks-and-partition
! Common Report Var(flag_reorder_blocks_and_partition) Optimization
  Reorder basic blocks and partition into hot and cold sections.
  
  freorder-functions
! Common Report Var(flag_reorder_functions) Optimization
  Reorder functions to improve code placement.
  
  frerun-cse-after-loop
! Common Report Var(flag_rerun_cse_after_loop) Optimization
  Add a common subexpression elimination pass after loop optimizations.
  
  frerun-loop-opt
--- 2393,2407 ----
  Enum(reorder_blocks_algorithm) String(stc) Value(REORDER_BLOCKS_ALGORITHM_STC)
  
  freorder-blocks-and-partition
! Common Var(flag_reorder_blocks_and_partition) Optimization
  Reorder basic blocks and partition into hot and cold sections.
  
  freorder-functions
! Common Var(flag_reorder_functions) Optimization
  Reorder functions to improve code placement.
  
  frerun-cse-after-loop
! Common Var(flag_rerun_cse_after_loop) Optimization
  Add a common subexpression elimination pass after loop optimizations.
  
  frerun-loop-opt
*************** Common Ignore
*** 2355,2381 ****
  Does nothing.  Preserved for backward compatibility.
  
  frounding-math
! Common Report Var(flag_rounding_math) Optimization SetByCombined
  Disable optimizations that assume default FP rounding behavior.
  
  fsched-interblock
! Common Report Var(flag_schedule_interblock) Init(1) Optimization
  Enable scheduling across basic blocks.
  
  fsched-pressure
! Common Report Var(flag_sched_pressure) Init(0) Optimization
  Enable register pressure sensitive insn scheduling.
  
  fsched-spec
! Common Report Var(flag_schedule_speculative) Init(1) Optimization
  Allow speculative motion of non-loads.
  
  fsched-spec-load
! Common Report Var(flag_schedule_speculative_load) Optimization
  Allow speculative motion of some loads.
  
  fsched-spec-load-dangerous
! Common Report Var(flag_schedule_speculative_load_dangerous) Optimization
  Allow speculative motion of more loads.
  
  fsched-verbose=
--- 2409,2435 ----
  Does nothing.  Preserved for backward compatibility.
  
  frounding-math
! Common Var(flag_rounding_math) Optimization SetByCombined
  Disable optimizations that assume default FP rounding behavior.
  
  fsched-interblock
! Common Var(flag_schedule_interblock) Init(1) Optimization
  Enable scheduling across basic blocks.
  
  fsched-pressure
! Common Var(flag_sched_pressure) Init(0) Optimization
  Enable register pressure sensitive insn scheduling.
  
  fsched-spec
! Common Var(flag_schedule_speculative) Init(1) Optimization
  Allow speculative motion of non-loads.
  
  fsched-spec-load
! Common Var(flag_schedule_speculative_load) Optimization
  Allow speculative motion of some loads.
  
  fsched-spec-load-dangerous
! Common Var(flag_schedule_speculative_load_dangerous) Optimization
  Allow speculative motion of more loads.
  
  fsched-verbose=
*************** Common RejectNegative Joined UInteger Va
*** 2383,2389 ****
  -fsched-verbose=<number>	Set the verbosity level of the scheduler.
  
  fsched2-use-superblocks
! Common Report Var(flag_sched2_use_superblocks) Optimization
  If scheduling post reload, do superblock scheduling.
  
  fsched2-use-traces
--- 2437,2443 ----
  -fsched-verbose=<number>	Set the verbosity level of the scheduler.
  
  fsched2-use-superblocks
! Common Var(flag_sched2_use_superblocks) Optimization
  If scheduling post reload, do superblock scheduling.
  
  fsched2-use-traces
*************** Common Ignore
*** 2391,2412 ****
  Does nothing.  Preserved for backward compatibility.
  
  fschedule-insns
! Common Report Var(flag_schedule_insns) Optimization
  Reschedule instructions before register allocation.
  
  fschedule-insns2
! Common Report Var(flag_schedule_insns_after_reload) Optimization
  Reschedule instructions after register allocation.
  
  ; This flag should be on when a target implements non-trivial
  ; scheduling hooks, maybe saving some information for its own sake.
  ; On IA64, for example, this is used for correct bundling.
  fselective-scheduling
! Common Report Var(flag_selective_scheduling) Optimization
  Schedule instructions using selective scheduling algorithm.
  
  fselective-scheduling2
! Common Report Var(flag_selective_scheduling2) Optimization
  Run selective scheduling after reload.
  
  fself-test=
--- 2445,2466 ----
  Does nothing.  Preserved for backward compatibility.
  
  fschedule-insns
! Common Var(flag_schedule_insns) Optimization
  Reschedule instructions before register allocation.
  
  fschedule-insns2
! Common Var(flag_schedule_insns_after_reload) Optimization
  Reschedule instructions after register allocation.
  
  ; This flag should be on when a target implements non-trivial
  ; scheduling hooks, maybe saving some information for its own sake.
  ; On IA64, for example, this is used for correct bundling.
  fselective-scheduling
! Common Var(flag_selective_scheduling) Optimization
  Schedule instructions using selective scheduling algorithm.
  
  fselective-scheduling2
! Common Var(flag_selective_scheduling2) Optimization
  Run selective scheduling after reload.
  
  fself-test=
*************** Common Undocumented Joined Var(flag_self
*** 2414,2438 ****
  Run self-tests, using the given path to locate test files.
  
  fsel-sched-pipelining
! Common Report Var(flag_sel_sched_pipelining) Init(0) Optimization
  Perform software pipelining of inner loops during selective scheduling.
  
  fsel-sched-pipelining-outer-loops
! Common Report Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
  Perform software pipelining of outer loops during selective scheduling.
  
  fsel-sched-reschedule-pipelined
! Common Report Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
  Reschedule pipelined regions without pipelining.
  
  fsemantic-interposition
! Common Report Var(flag_semantic_interposition) Init(1)
  Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker.
  
  ; sched_stalled_insns means that insns can be moved prematurely from the queue
  ; of stalled insns into the ready list.
  fsched-stalled-insns
! Common Report Var(flag_sched_stalled_insns) Optimization UInteger
  Allow premature scheduling of queued insns.
  
  fsched-stalled-insns=
--- 2468,2492 ----
  Run self-tests, using the given path to locate test files.
  
  fsel-sched-pipelining
! Common Var(flag_sel_sched_pipelining) Init(0) Optimization
  Perform software pipelining of inner loops during selective scheduling.
  
  fsel-sched-pipelining-outer-loops
! Common Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
  Perform software pipelining of outer loops during selective scheduling.
  
  fsel-sched-reschedule-pipelined
! Common Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
  Reschedule pipelined regions without pipelining.
  
  fsemantic-interposition
! Common Var(flag_semantic_interposition) Init(1)
  Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker.
  
  ; sched_stalled_insns means that insns can be moved prematurely from the queue
  ; of stalled insns into the ready list.
  fsched-stalled-insns
! Common Var(flag_sched_stalled_insns) Optimization UInteger
  Allow premature scheduling of queued insns.
  
  fsched-stalled-insns=
*************** Common RejectNegative Joined UInteger Op
*** 2444,2450 ****
  ; premature removal from the queue of stalled insns into the ready list (has
  ; an effect only if the flag 'sched_stalled_insns' is set).
  fsched-stalled-insns-dep
! Common Report Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
  Set dependence distance checking in premature scheduling of queued insns.
  
  fsched-stalled-insns-dep=
--- 2498,2504 ----
  ; premature removal from the queue of stalled insns into the ready list (has
  ; an effect only if the flag 'sched_stalled_insns' is set).
  fsched-stalled-insns-dep
! Common Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
  Set dependence distance checking in premature scheduling of queued insns.
  
  fsched-stalled-insns-dep=
*************** Common RejectNegative Joined UInteger Op
*** 2452,2482 ****
  -fsched-stalled-insns-dep=<number>	Set dependence distance checking in premature scheduling of queued insns.
  
  fsched-group-heuristic
! Common Report Var(flag_sched_group_heuristic) Init(1) Optimization
  Enable the group heuristic in the scheduler.
  
  fsched-critical-path-heuristic
! Common Report Var(flag_sched_critical_path_heuristic) Init(1) Optimization
  Enable the critical path heuristic in the scheduler.
  
  fsched-spec-insn-heuristic
! Common Report Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
  Enable the speculative instruction heuristic in the scheduler.
  
  fsched-rank-heuristic
! Common Report Var(flag_sched_rank_heuristic) Init(1) Optimization
  Enable the rank heuristic in the scheduler.
  
  fsched-last-insn-heuristic
! Common Report Var(flag_sched_last_insn_heuristic) Init(1) Optimization
  Enable the last instruction heuristic in the scheduler.
  
  fsched-dep-count-heuristic
! Common Report Var(flag_sched_dep_count_heuristic) Init(1) Optimization
  Enable the dependent count heuristic in the scheduler.
  
  fsection-anchors
! Common Report Var(flag_section_anchors) Optimization
  Access data in the same section from shared anchor points.
  
  fsee
--- 2506,2536 ----
  -fsched-stalled-insns-dep=<number>	Set dependence distance checking in premature scheduling of queued insns.
  
  fsched-group-heuristic
! Common Var(flag_sched_group_heuristic) Init(1) Optimization
  Enable the group heuristic in the scheduler.
  
  fsched-critical-path-heuristic
! Common Var(flag_sched_critical_path_heuristic) Init(1) Optimization
  Enable the critical path heuristic in the scheduler.
  
  fsched-spec-insn-heuristic
! Common Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
  Enable the speculative instruction heuristic in the scheduler.
  
  fsched-rank-heuristic
! Common Var(flag_sched_rank_heuristic) Init(1) Optimization
  Enable the rank heuristic in the scheduler.
  
  fsched-last-insn-heuristic
! Common Var(flag_sched_last_insn_heuristic) Init(1) Optimization
  Enable the last instruction heuristic in the scheduler.
  
  fsched-dep-count-heuristic
! Common Var(flag_sched_dep_count_heuristic) Init(1) Optimization
  Enable the dependent count heuristic in the scheduler.
  
  fsection-anchors
! Common Var(flag_section_anchors) Optimization
  Access data in the same section from shared anchor points.
  
  fsee
*************** Common Ignore
*** 2488,2555 ****
  Does nothing.  Preserved for backward compatibility.
  
  free
! Common Report Var(flag_ree) Init(0) Optimization
  Turn on Redundant Extensions Elimination pass.
  
  fshow-column
! Common Report Var(flag_show_column) Init(1)
  Show column numbers in diagnostics, when available.  Default on.
  
  fshrink-wrap
! Common Report Var(flag_shrink_wrap) Optimization
  Emit function prologues only before parts of the function that need it,
  rather than at the top of the function.
  
  fshrink-wrap-separate
! Common Report Var(flag_shrink_wrap_separate) Init(1) Optimization
  Shrink-wrap parts of the prologue and epilogue separately.
  
  fsignaling-nans
! Common Report Var(flag_signaling_nans) Optimization SetByCombined
  Disable optimizations observable by IEEE signaling NaNs.
  
  fsigned-zeros
! Common Report Var(flag_signed_zeros) Init(1) Optimization SetByCombined
  Disable floating point optimizations that ignore the IEEE signedness of zero.
  
  fsingle-precision-constant
! Common Report Var(flag_single_precision_constant) Optimization
  Convert floating point constants to single precision constants.
  
  fsplit-ivs-in-unroller
! Common Report Var(flag_split_ivs_in_unroller) Init(1) Optimization
  Split lifetimes of induction variables when loops are unrolled.
  
  fsplit-stack
! Common Report Var(flag_split_stack) Init(-1)
  Generate discontiguous stack frames.
  
  fsplit-wide-types
! Common Report Var(flag_split_wide_types) Optimization
  Split wide types into independent registers.
  
  fsplit-wide-types-early
! Common Report Var(flag_split_wide_types_early) Optimization
  Split wide types into independent registers earlier.
  
  fssa-backprop
! Common Report Var(flag_ssa_backprop) Init(1) Optimization
  Enable backward propagation of use properties at the SSA level.
  
  fssa-phiopt
! Common Report Var(flag_ssa_phiopt) Optimization
  Optimize conditional patterns using SSA PHI nodes.
  
  fstdarg-opt
! Common Report Var(flag_stdarg_opt) Init(1) Optimization
  Optimize amount of stdarg registers saved to stack at start of function.
  
  fvariable-expansion-in-unroller
! Common Report Var(flag_variable_expansion_in_unroller) Optimization
  Apply variable expansion when loops are unrolled.
  
  fstack-check=
! Common Report RejectNegative Joined Optimization
  -fstack-check=[no|generic|specific]	Insert stack checking code into the program.
  
  fstack-check
--- 2542,2609 ----
  Does nothing.  Preserved for backward compatibility.
  
  free
! Common Var(flag_ree) Init(0) Optimization
  Turn on Redundant Extensions Elimination pass.
  
  fshow-column
! Common Var(flag_show_column) Init(1)
  Show column numbers in diagnostics, when available.  Default on.
  
  fshrink-wrap
! Common Var(flag_shrink_wrap) Optimization
  Emit function prologues only before parts of the function that need it,
  rather than at the top of the function.
  
  fshrink-wrap-separate
! Common Var(flag_shrink_wrap_separate) Init(1) Optimization
  Shrink-wrap parts of the prologue and epilogue separately.
  
  fsignaling-nans
! Common Var(flag_signaling_nans) Optimization SetByCombined
  Disable optimizations observable by IEEE signaling NaNs.
  
  fsigned-zeros
! Common Var(flag_signed_zeros) Init(1) Optimization SetByCombined
  Disable floating point optimizations that ignore the IEEE signedness of zero.
  
  fsingle-precision-constant
! Common Var(flag_single_precision_constant) Optimization
  Convert floating point constants to single precision constants.
  
  fsplit-ivs-in-unroller
! Common Var(flag_split_ivs_in_unroller) Init(1) Optimization
  Split lifetimes of induction variables when loops are unrolled.
  
  fsplit-stack
! Common Var(flag_split_stack) Init(-1)
  Generate discontiguous stack frames.
  
  fsplit-wide-types
! Common Var(flag_split_wide_types) Optimization
  Split wide types into independent registers.
  
  fsplit-wide-types-early
! Common Var(flag_split_wide_types_early) Optimization
  Split wide types into independent registers earlier.
  
  fssa-backprop
! Common Var(flag_ssa_backprop) Init(1) Optimization
  Enable backward propagation of use properties at the SSA level.
  
  fssa-phiopt
! Common Var(flag_ssa_phiopt) Optimization
  Optimize conditional patterns using SSA PHI nodes.
  
  fstdarg-opt
! Common Var(flag_stdarg_opt) Init(1) Optimization
  Optimize amount of stdarg registers saved to stack at start of function.
  
  fvariable-expansion-in-unroller
! Common Var(flag_variable_expansion_in_unroller) Optimization
  Apply variable expansion when loops are unrolled.
  
  fstack-check=
! Common RejectNegative Joined Optimization
  -fstack-check=[no|generic|specific]	Insert stack checking code into the program.
  
  fstack-check
*************** Common Alias(fstack-check=, specific, no
*** 2557,2563 ****
  Insert stack checking code into the program.  Same as -fstack-check=specific.
  
  fstack-clash-protection
! Common Report Var(flag_stack_clash_protection) Optimization
  Insert code to probe each page of stack space as it is allocated to protect
  from stack-clash style attacks.
  
--- 2611,2617 ----
  Insert stack checking code into the program.  Same as -fstack-check=specific.
  
  fstack-clash-protection
! Common Var(flag_stack_clash_protection) Optimization
  Insert code to probe each page of stack space as it is allocated to protect
  from stack-clash style attacks.
  
*************** Common RejectNegative Joined Var(common_
*** 2573,2591 ****
  -fstack-limit-symbol=<name>	Trap if the stack goes past symbol <name>.
  
  fstack-protector
! Common Report Var(flag_stack_protect, 1) Init(-1) Optimization
  Use propolice as a stack protection method.
  
  fstack-protector-all
! Common Report RejectNegative Var(flag_stack_protect, 2) Init(-1) Optimization
  Use a stack protection method for every function.
  
  fstack-protector-strong
! Common Report RejectNegative Var(flag_stack_protect, 3) Init(-1) Optimization
  Use a smart stack protection method for certain functions.
  
  fstack-protector-explicit
! Common Report RejectNegative Var(flag_stack_protect, 4) Optimization
  Use stack protection method only for functions with the stack_protect attribute.
  
  fstack-usage
--- 2627,2645 ----
  -fstack-limit-symbol=<name>	Trap if the stack goes past symbol <name>.
  
  fstack-protector
! Common Var(flag_stack_protect, 1) Init(-1) Optimization
  Use propolice as a stack protection method.
  
  fstack-protector-all
! Common RejectNegative Var(flag_stack_protect, 2) Init(-1) Optimization
  Use a stack protection method for every function.
  
  fstack-protector-strong
! Common RejectNegative Var(flag_stack_protect, 3) Init(-1) Optimization
  Use a smart stack protection method for certain functions.
  
  fstack-protector-explicit
! Common RejectNegative Var(flag_stack_protect, 4) Optimization
  Use stack protection method only for functions with the stack_protect attribute.
  
  fstack-usage
*************** Does nothing.  Preserved for backward co
*** 2601,2635 ****
  ; types do not alias expressions of certain other types.  Only used
  ; if alias analysis (in general) is enabled.
  fstrict-aliasing
! Common Report Var(flag_strict_aliasing) Optimization
  Assume strict aliasing rules apply.
  
  fstrict-overflow
! Common Report
  Treat signed overflow as undefined.  Negated as -fwrapv -fwrapv-pointer.
  
  fsync-libcalls
! Common Report Var(flag_sync_libcalls) Init(1)
  Implement __atomic operations via libcalls to legacy __sync functions.
  
  fsyntax-only
! Common Report Var(flag_syntax_only)
  Check for syntax errors, then stop.
  
  ftest-coverage
! Common Report Var(flag_test_coverage)
  Create data files needed by \"gcov\".
  
  fthread-jumps
! Common Report Var(flag_thread_jumps) Optimization
  Perform jump threading optimizations.
  
  ftime-report
! Common Report Var(time_report)
  Report the time taken by each compiler pass.
  
  ftime-report-details
! Common Report Var(time_report_details)
  Record times taken by sub-phases separately.
  
  ftls-model=
--- 2655,2689 ----
  ; types do not alias expressions of certain other types.  Only used
  ; if alias analysis (in general) is enabled.
  fstrict-aliasing
! Common Var(flag_strict_aliasing) Optimization
  Assume strict aliasing rules apply.
  
  fstrict-overflow
! Common
  Treat signed overflow as undefined.  Negated as -fwrapv -fwrapv-pointer.
  
  fsync-libcalls
! Common Var(flag_sync_libcalls) Init(1)
  Implement __atomic operations via libcalls to legacy __sync functions.
  
  fsyntax-only
! Common Var(flag_syntax_only)
  Check for syntax errors, then stop.
  
  ftest-coverage
! Common Var(flag_test_coverage)
  Create data files needed by \"gcov\".
  
  fthread-jumps
! Common Var(flag_thread_jumps) Optimization
  Perform jump threading optimizations.
  
  ftime-report
! Common Var(time_report)
  Report the time taken by each compiler pass.
  
  ftime-report-details
! Common Var(time_report_details)
  Record times taken by sub-phases separately.
  
  ftls-model=
*************** EnumValue
*** 2652,2666 ****
  Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
  
  ftoplevel-reorder
! Common Report Var(flag_toplevel_reorder) Init(2) Optimization
  Reorder top level functions, variables, and asms.
  
  ftracer
! Common Report Var(flag_tracer) Optimization
  Perform superblock formation via tail duplication.
  
  ftrampolines
! Common Report Var(flag_trampolines) Init(0)
  For targets that normally need trampolines for nested functions, always
  generate them instead of using descriptors.
  
--- 2706,2720 ----
  Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
  
  ftoplevel-reorder
! Common Var(flag_toplevel_reorder) Init(2) Optimization
  Reorder top level functions, variables, and asms.
  
  ftracer
! Common Var(flag_tracer) Optimization
  Perform superblock formation via tail duplication.
  
  ftrampolines
! Common Var(flag_trampolines) Init(0)
  For targets that normally need trampolines for nested functions, always
  generate them instead of using descriptors.
  
*************** generate them instead of using descripto
*** 2668,2686 ****
  ; (user-visible) trap.  This is the case, for example, in nonstop
  ; IEEE 754 arithmetic.
  ftrapping-math
! Common Report Var(flag_trapping_math) Init(1) Optimization SetByCombined
  Assume floating-point operations can trap.
  
  ftrapv
! Common Report Var(flag_trapv) Optimization
  Trap for signed overflow in addition, subtraction and multiplication.
  
  ftree-ccp
! Common Report Var(flag_tree_ccp) Optimization
  Enable SSA-CCP optimization on trees.
  
  ftree-bit-ccp
! Common Report Var(flag_tree_bit_ccp) Optimization
  Enable SSA-BIT-CCP optimization on trees.
  
  ftree-store-ccp
--- 2722,2740 ----
  ; (user-visible) trap.  This is the case, for example, in nonstop
  ; IEEE 754 arithmetic.
  ftrapping-math
! Common Var(flag_trapping_math) Init(1) Optimization SetByCombined
  Assume floating-point operations can trap.
  
  ftrapv
! Common Var(flag_trapv) Optimization
  Trap for signed overflow in addition, subtraction and multiplication.
  
  ftree-ccp
! Common Var(flag_tree_ccp) Optimization
  Enable SSA-CCP optimization on trees.
  
  ftree-bit-ccp
! Common Var(flag_tree_bit_ccp) Optimization
  Enable SSA-BIT-CCP optimization on trees.
  
  ftree-store-ccp
*************** Common Ignore
*** 2688,2694 ****
  Does nothing.  Preserved for backward compatibility.
  
  ftree-ch
! Common Report Var(flag_tree_ch) Optimization
  Enable loop header copying on trees.
  
  ftree-coalesce-inlined-vars
--- 2742,2748 ----
  Does nothing.  Preserved for backward compatibility.
  
  ftree-ch
! Common Var(flag_tree_ch) Optimization
  Enable loop header copying on trees.
  
  ftree-coalesce-inlined-vars
*************** Common Ignore RejectNegative
*** 2696,2702 ****
  Does nothing.  Preserved for backward compatibility.
  
  ftree-coalesce-vars
! Common Report Var(flag_tree_coalesce_vars) Optimization
  Enable SSA coalescing of user variables.
  
  ftree-copyrename
--- 2750,2756 ----
  Does nothing.  Preserved for backward compatibility.
  
  ftree-coalesce-vars
! Common Var(flag_tree_coalesce_vars) Optimization
  Enable SSA coalescing of user variables.
  
  ftree-copyrename
*************** Common Ignore
*** 2704,2710 ****
  Does nothing.  Preserved for backward compatibility.
  
  ftree-copy-prop
! Common Report Var(flag_tree_copy_prop) Optimization
  Enable copy propagation on trees.
  
  ftree-store-copy-prop
--- 2758,2764 ----
  Does nothing.  Preserved for backward compatibility.
  
  ftree-copy-prop
! Common Var(flag_tree_copy_prop) Optimization
  Enable copy propagation on trees.
  
  ftree-store-copy-prop
*************** Common Ignore
*** 2712,2775 ****
  Does nothing.  Preserved for backward compatibility.
  
  ftree-cselim
! Common Report Var(flag_tree_cselim) Init(2) Optimization
  Transform condition stores into unconditional ones.
  
  ftree-switch-conversion
! Common Report Var(flag_tree_switch_conversion) Optimization
  Perform conversions of switch initializations.
  
  ftree-dce
! Common Report Var(flag_tree_dce) Optimization
  Enable SSA dead code elimination optimization on trees.
  
  ftree-dominator-opts
! Common Report Var(flag_tree_dom) Optimization
  Enable dominator optimizations.
  
  ftree-tail-merge
! Common Report Var(flag_tree_tail_merge) Optimization
  Enable tail merging on trees.
  
  ftree-dse
! Common Report Var(flag_tree_dse) Optimization
  Enable dead store elimination.
  
  ftree-forwprop
! Common Report Var(flag_tree_forwprop) Init(1) Optimization
  Enable forward propagation on trees.
  
  ftree-fre
! Common Report Var(flag_tree_fre) Optimization
  Enable Full Redundancy Elimination (FRE) on trees.
  
  foptimize-strlen
! Common Report Var(flag_optimize_strlen) Optimization
  Enable string length optimizations on trees.
  
  fisolate-erroneous-paths-dereference
! Common Report Var(flag_isolate_erroneous_paths_dereference) Optimization
  Detect paths that trigger erroneous or undefined behavior due to
  dereferencing a null pointer.  Isolate those paths from the main control
  flow and turn the statement with erroneous or undefined behavior into a trap.
  
  fisolate-erroneous-paths-attribute
! Common Report Var(flag_isolate_erroneous_paths_attribute) Optimization
  Detect paths that trigger erroneous or undefined behavior due to a null value
  being used in a way forbidden by a returns_nonnull or nonnull
  attribute.  Isolate those paths from the main control flow and turn the
  statement with erroneous or undefined behavior into a trap.
  
  ftree-loop-distribution
! Common Report Var(flag_tree_loop_distribution) Optimization
  Enable loop distribution on trees.
  
  ftree-loop-distribute-patterns
! Common Report Var(flag_tree_loop_distribute_patterns) Optimization
  Enable loop distribution for patterns transformed into a library call.
  
  ftree-loop-im
! Common Report Var(flag_tree_loop_im) Init(1) Optimization
  Enable loop invariant motion on trees.
  
  ftree-loop-linear
--- 2766,2829 ----
  Does nothing.  Preserved for backward compatibility.
  
  ftree-cselim
! Common Var(flag_tree_cselim) Init(2) Optimization
  Transform condition stores into unconditional ones.
  
  ftree-switch-conversion
! Common Var(flag_tree_switch_conversion) Optimization
  Perform conversions of switch initializations.
  
  ftree-dce
! Common Var(flag_tree_dce) Optimization
  Enable SSA dead code elimination optimization on trees.
  
  ftree-dominator-opts
! Common Var(flag_tree_dom) Optimization
  Enable dominator optimizations.
  
  ftree-tail-merge
! Common Var(flag_tree_tail_merge) Optimization
  Enable tail merging on trees.
  
  ftree-dse
! Common Var(flag_tree_dse) Optimization
  Enable dead store elimination.
  
  ftree-forwprop
! Common Var(flag_tree_forwprop) Init(1) Optimization
  Enable forward propagation on trees.
  
  ftree-fre
! Common Var(flag_tree_fre) Optimization
  Enable Full Redundancy Elimination (FRE) on trees.
  
  foptimize-strlen
! Common Var(flag_optimize_strlen) Optimization
  Enable string length optimizations on trees.
  
  fisolate-erroneous-paths-dereference
! Common Var(flag_isolate_erroneous_paths_dereference) Optimization
  Detect paths that trigger erroneous or undefined behavior due to
  dereferencing a null pointer.  Isolate those paths from the main control
  flow and turn the statement with erroneous or undefined behavior into a trap.
  
  fisolate-erroneous-paths-attribute
! Common Var(flag_isolate_erroneous_paths_attribute) Optimization
  Detect paths that trigger erroneous or undefined behavior due to a null value
  being used in a way forbidden by a returns_nonnull or nonnull
  attribute.  Isolate those paths from the main control flow and turn the
  statement with erroneous or undefined behavior into a trap.
  
  ftree-loop-distribution
! Common Var(flag_tree_loop_distribution) Optimization
  Enable loop distribution on trees.
  
  ftree-loop-distribute-patterns
! Common Var(flag_tree_loop_distribute_patterns) Optimization
  Enable loop distribution for patterns transformed into a library call.
  
  ftree-loop-im
! Common Var(flag_tree_loop_im) Init(1) Optimization
  Enable loop invariant motion on trees.
  
  ftree-loop-linear
*************** Common Alias(floop-nest-optimize)
*** 2777,2811 ****
  Enable loop nest transforms.  Same as -floop-nest-optimize.
  
  ftree-loop-ivcanon
! Common Report Var(flag_tree_loop_ivcanon) Init(1) Optimization
  Create canonical induction variables in loops.
  
  ftree-loop-optimize
! Common Report Var(flag_tree_loop_optimize) Init(1) Optimization
  Enable loop optimizations on tree level.
  
  ftree-parallelize-loops=
! Common Report Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization
  -ftree-parallelize-loops=<number>	Enable automatic parallelization of loops.
  
  ftree-phiprop
! Common Report Var(flag_tree_phiprop) Init(1) Optimization
  Enable hoisting loads from conditional pointers.
  
  ftree-pre
! Common Report Var(flag_tree_pre) Optimization
  Enable SSA-PRE optimization on trees.
  
  ftree-partial-pre
! Common Report Var(flag_tree_partial_pre) Optimization
  In SSA-PRE optimization on trees, enable partial-partial redundancy elimination.
  
  ftree-pta
! Common Report Var(flag_tree_pta) Optimization
  Perform function-local points-to analysis on trees.
  
  ftree-reassoc
! Common Report Var(flag_tree_reassoc) Init(1) Optimization
  Enable reassociation on tree level.
  
  ftree-salias
--- 2831,2865 ----
  Enable loop nest transforms.  Same as -floop-nest-optimize.
  
  ftree-loop-ivcanon
! Common Var(flag_tree_loop_ivcanon) Init(1) Optimization
  Create canonical induction variables in loops.
  
  ftree-loop-optimize
! Common Var(flag_tree_loop_optimize) Init(1) Optimization
  Enable loop optimizations on tree level.
  
  ftree-parallelize-loops=
! Common Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization
  -ftree-parallelize-loops=<number>	Enable automatic parallelization of loops.
  
  ftree-phiprop
! Common Var(flag_tree_phiprop) Init(1) Optimization
  Enable hoisting loads from conditional pointers.
  
  ftree-pre
! Common Var(flag_tree_pre) Optimization
  Enable SSA-PRE optimization on trees.
  
  ftree-partial-pre
! Common Var(flag_tree_partial_pre) Optimization
  In SSA-PRE optimization on trees, enable partial-partial redundancy elimination.
  
  ftree-pta
! Common Var(flag_tree_pta) Optimization
  Perform function-local points-to analysis on trees.
  
  ftree-reassoc
! Common Var(flag_tree_reassoc) Init(1) Optimization
  Enable reassociation on tree level.
  
  ftree-salias
*************** Common Ignore
*** 2813,2843 ****
  Does nothing.  Preserved for backward compatibility.
  
  ftree-sink
! Common Report Var(flag_tree_sink) Optimization
  Enable SSA code sinking on trees.
  
  ftree-slsr
! Common Report Var(flag_tree_slsr) Optimization
  Perform straight-line strength reduction.
  
  ftree-sra
! Common Report Var(flag_tree_sra) Optimization
  Perform scalar replacement of aggregates.
  
  ftree-ter
! Common Report Var(flag_tree_ter) Optimization
  Replace temporary expressions in the SSA->normal pass.
  
  ftree-lrs
! Common Report Var(flag_tree_live_range_split) Optimization
  Perform live range splitting during the SSA->normal pass.
  
  ftree-vrp
! Common Report Var(flag_tree_vrp) Init(0) Optimization
  Perform Value Range Propagation on trees.
  
  fsplit-paths
! Common Report Var(flag_split_paths) Init(0) Optimization
  Split paths leading to loop backedges.
  
  funconstrained-commons
--- 2867,2897 ----
  Does nothing.  Preserved for backward compatibility.
  
  ftree-sink
! Common Var(flag_tree_sink) Optimization
  Enable SSA code sinking on trees.
  
  ftree-slsr
! Common Var(flag_tree_slsr) Optimization
  Perform straight-line strength reduction.
  
  ftree-sra
! Common Var(flag_tree_sra) Optimization
  Perform scalar replacement of aggregates.
  
  ftree-ter
! Common Var(flag_tree_ter) Optimization
  Replace temporary expressions in the SSA->normal pass.
  
  ftree-lrs
! Common Var(flag_tree_live_range_split) Optimization
  Perform live range splitting during the SSA->normal pass.
  
  ftree-vrp
! Common Var(flag_tree_vrp) Init(0) Optimization
  Perform Value Range Propagation on trees.
  
  fsplit-paths
! Common Var(flag_split_paths) Init(0) Optimization
  Split paths leading to loop backedges.
  
  funconstrained-commons
*************** Assume common declarations may be overri
*** 2846,2860 ****
  trailing array.
  
  funit-at-a-time
! Common Report Var(flag_unit_at_a_time) Init(1)
  Compile whole compilation unit at a time.
  
  funroll-loops
! Common Report Var(flag_unroll_loops) Optimization
  Perform loop unrolling when iteration count is known.
  
  funroll-all-loops
! Common Report Var(flag_unroll_all_loops) Optimization
  Perform loop unrolling for all loops.
  
  funroll-completely-grow-size
--- 2900,2914 ----
  trailing array.
  
  funit-at-a-time
! Common Var(flag_unit_at_a_time) Init(1)
  Compile whole compilation unit at a time.
  
  funroll-loops
! Common Var(flag_unroll_loops) Optimization
  Perform loop unrolling when iteration count is known.
  
  funroll-all-loops
! Common Var(flag_unroll_all_loops) Optimization
  Perform loop unrolling for all loops.
  
  funroll-completely-grow-size
*************** Common Ignore
*** 2869,2880 ****
  Does nothing.  Preserved for backward compatibility.
  
  fassociative-math
! Common Report Var(flag_associative_math) SetByCombined Optimization
  Allow optimization for floating-point arithmetic which may change the
  result of the operation due to rounding.
  
  freciprocal-math
! Common Report Var(flag_reciprocal_math) SetByCombined Optimization
  Same as -fassociative-math for expressions which include division.
  
  ; Nonzero means that unsafe floating-point math optimizations are allowed
--- 2923,2934 ----
  Does nothing.  Preserved for backward compatibility.
  
  fassociative-math
! Common Var(flag_associative_math) SetByCombined Optimization
  Allow optimization for floating-point arithmetic which may change the
  result of the operation due to rounding.
  
  freciprocal-math
! Common Var(flag_reciprocal_math) SetByCombined Optimization
  Same as -fassociative-math for expressions which include division.
  
  ; Nonzero means that unsafe floating-point math optimizations are allowed
*************** Same as -fassociative-math for expressio
*** 2882,2904 ****
  ; are allowed to assume that their arguments and results are "normal"
  ; (e.g., nonnegative for SQRT).
  funsafe-math-optimizations
! Common Report Var(flag_unsafe_math_optimizations) Optimization SetByCombined
  Allow math optimizations that may violate IEEE or ISO standards.
  
  funswitch-loops
! Common Report Var(flag_unswitch_loops) Optimization
  Perform loop unswitching.
  
  fsplit-loops
! Common Report Var(flag_split_loops) Optimization
  Perform loop splitting.
  
  fversion-loops-for-strides
! Common Report Var(flag_version_loops_for_strides) Optimization
  Version loops based on whether indices have a stride of one.
  
  funwind-tables
! Common Report Var(flag_unwind_tables) Optimization
  Just generate unwind tables for exception handling.
  
  fuse-ld=bfd
--- 2936,2958 ----
  ; are allowed to assume that their arguments and results are "normal"
  ; (e.g., nonnegative for SQRT).
  funsafe-math-optimizations
! Common Var(flag_unsafe_math_optimizations) Optimization SetByCombined
  Allow math optimizations that may violate IEEE or ISO standards.
  
  funswitch-loops
! Common Var(flag_unswitch_loops) Optimization
  Perform loop unswitching.
  
  fsplit-loops
! Common Var(flag_split_loops) Optimization
  Perform loop splitting.
  
  fversion-loops-for-strides
! Common Var(flag_version_loops_for_strides) Optimization
  Version loops based on whether indices have a stride of one.
  
  funwind-tables
! Common Var(flag_unwind_tables) Optimization
  Just generate unwind tables for exception handling.
  
  fuse-ld=bfd
*************** Common Undocumented Var(flag_use_linker_
*** 2922,2928 ****
  ; will be set according to optimize, debug_info_level and debug_hooks
  ; in process_options ().
  fvar-tracking
! Common Report Var(flag_var_tracking) Init(2) PerFunction
  Perform variable tracking.
  
  ; Positive if we should track variables at assignments, negative if
--- 2976,2982 ----
  ; will be set according to optimize, debug_info_level and debug_hooks
  ; in process_options ().
  fvar-tracking
! Common Var(flag_var_tracking) Init(2) PerFunction
  Perform variable tracking.
  
  ; Positive if we should track variables at assignments, negative if
*************** Perform variable tracking.
*** 2930,2942 ****
  ; annotations.  When flag_var_tracking_assignments ==
  ; AUTODETECT_VALUE it will be set according to flag_var_tracking.
  fvar-tracking-assignments
! Common Report Var(flag_var_tracking_assignments) Init(2) PerFunction
  Perform variable tracking by annotating assignments.
  
  ; Nonzero if we should toggle flag_var_tracking_assignments after
  ; processing options and computing its default.  */
  fvar-tracking-assignments-toggle
! Common Report Var(flag_var_tracking_assignments_toggle) PerFunction
  Toggle -fvar-tracking-assignments.
  
  ; Positive if we should track uninitialized variables, negative if
--- 2984,2996 ----
  ; annotations.  When flag_var_tracking_assignments ==
  ; AUTODETECT_VALUE it will be set according to flag_var_tracking.
  fvar-tracking-assignments
! Common Var(flag_var_tracking_assignments) Init(2) PerFunction
  Perform variable tracking by annotating assignments.
  
  ; Nonzero if we should toggle flag_var_tracking_assignments after
  ; processing options and computing its default.  */
  fvar-tracking-assignments-toggle
! Common Var(flag_var_tracking_assignments_toggle) PerFunction
  Toggle -fvar-tracking-assignments.
  
  ; Positive if we should track uninitialized variables, negative if
*************** Toggle -fvar-tracking-assignments.
*** 2944,2955 ****
  ; annotations.  When flag_var_tracking_uninit == AUTODETECT_VALUE it
  ; will be set according to flag_var_tracking.
  fvar-tracking-uninit
! Common Report Var(flag_var_tracking_uninit) PerFunction
  Perform variable tracking and also tag variables that are uninitialized.
  
  ; Alias to enable both -ftree-loop-vectorize and -ftree-slp-vectorize.
  ftree-vectorize
! Common Report Optimization
  Enable vectorization on trees.
  
  ftree-vectorizer-verbose=
--- 2998,3009 ----
  ; annotations.  When flag_var_tracking_uninit == AUTODETECT_VALUE it
  ; will be set according to flag_var_tracking.
  fvar-tracking-uninit
! Common Var(flag_var_tracking_uninit) PerFunction
  Perform variable tracking and also tag variables that are uninitialized.
  
  ; Alias to enable both -ftree-loop-vectorize and -ftree-slp-vectorize.
  ftree-vectorize
! Common Optimization
  Enable vectorization on trees.
  
  ftree-vectorizer-verbose=
*************** Common Joined RejectNegative Ignore
*** 2957,2976 ****
  Does nothing.  Preserved for backward compatibility.
  
  ftree-loop-vectorize
! Common Report Var(flag_tree_loop_vectorize) Optimization EnabledBy(ftree-vectorize)
  Enable loop vectorization on trees.
  
  ftree-slp-vectorize
! Common Report Var(flag_tree_slp_vectorize) Optimization EnabledBy(ftree-vectorize)
  Enable basic block vectorization (SLP) on trees.
  
  fvect-cost-model=
  Common Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT) Optimization
! -fvect-cost-model=[unlimited|dynamic|cheap]	Specifies the cost model for vectorization.
  
  fsimd-cost-model=
  Common Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED) Optimization
! -fsimd-cost-model=[unlimited|dynamic|cheap]	Specifies the vectorization cost model for code marked with a simd directive.
  
  Enum
  Name(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs)
--- 3011,3030 ----
  Does nothing.  Preserved for backward compatibility.
  
  ftree-loop-vectorize
! Common Var(flag_tree_loop_vectorize) Optimization EnabledBy(ftree-vectorize)
  Enable loop vectorization on trees.
  
  ftree-slp-vectorize
! Common Var(flag_tree_slp_vectorize) Optimization EnabledBy(ftree-vectorize)
  Enable basic block vectorization (SLP) on trees.
  
  fvect-cost-model=
  Common Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT) Optimization
! -fvect-cost-model=[unlimited|dynamic|cheap|very-cheap]	Specifies the cost model for vectorization.
  
  fsimd-cost-model=
  Common Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED) Optimization
! -fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap]	Specifies the vectorization cost model for code marked with a simd directive.
  
  Enum
  Name(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs)
*************** Enum(vect_cost_model) String(dynamic) Va
*** 2984,2989 ****
--- 3038,3046 ----
  EnumValue
  Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
  
+ EnumValue
+ Enum(vect_cost_model) String(very-cheap) Value(VECT_COST_MODEL_VERY_CHEAP)
+ 
  fvect-cost-model
  Common Alias(fvect-cost-model=,dynamic,unlimited)
  Enables the dynamic vectorizer cost model.  Preserved for backward compatibility.
*************** Common Ignore
*** 2993,2999 ****
  Does nothing. Preserved for backward compatibility.
  
  ftree-scev-cprop
! Common Report Var(flag_tree_scev_cprop) Init(1) Optimization
  Enable copy propagation of scalar-evolution information.
  
  ; -fverbose-asm causes extra commentary information to be produced in
--- 3050,3056 ----
  Does nothing. Preserved for backward compatibility.
  
  ftree-scev-cprop
! Common Var(flag_tree_scev_cprop) Init(1) Optimization
  Enable copy propagation of scalar-evolution information.
  
  ; -fverbose-asm causes extra commentary information to be produced in
*************** Enable copy propagation of scalar-evolut
*** 3003,3009 ****
  ; -fno-verbose-asm, the default, causes the extra information
  ; to not be added and is useful when comparing two assembler files.
  fverbose-asm
! Common Report Var(flag_verbose_asm)
  Add extra commentary to assembler output.
  
  fvisibility=
--- 3060,3066 ----
  ; -fno-verbose-asm, the default, causes the extra information
  ; to not be added and is useful when comparing two assembler files.
  fverbose-asm
! Common Var(flag_verbose_asm)
  Add extra commentary to assembler output.
  
  fvisibility=
*************** Common Var(flag_vtv_debug)
*** 3050,3082 ****
  Output vtable verification pointer sets information.
  
  fvpt
! Common Report Var(flag_value_profile_transformations) Optimization
  Use expression value profiles in optimizations.
  
  fweb
! Common Report Var(flag_web) Init(2) Optimization
  Construct webs and split unrelated uses of single variable.
  
  ftree-builtin-call-dce
! Common Report Var(flag_tree_builtin_call_dce) Init(0) Optimization
  Enable conditional dead code elimination for builtin calls.
  
  fwhole-program
! Common Report Var(flag_whole_program) Init(0)
  Perform whole program optimizations.
  
  fwrapv-pointer
! Common Report Var(flag_wrapv_pointer) Optimization
  Assume pointer overflow wraps around.
  
  fwrapv
! Common Report Var(flag_wrapv) Optimization
  Assume signed arithmetic overflow wraps around.
  
  fzero-initialized-in-bss
! Common Report Var(flag_zero_initialized_in_bss) Init(1)
  Put zero initialized data in the bss section.
  
  g
  Common Driver RejectNegative JoinedOrMissing
  Generate debug information in default format.
--- 3107,3143 ----
  Output vtable verification pointer sets information.
  
  fvpt
! Common Var(flag_value_profile_transformations) Optimization
  Use expression value profiles in optimizations.
  
  fweb
! Common Var(flag_web) Init(2) Optimization
  Construct webs and split unrelated uses of single variable.
  
  ftree-builtin-call-dce
! Common Var(flag_tree_builtin_call_dce) Init(0) Optimization
  Enable conditional dead code elimination for builtin calls.
  
  fwhole-program
! Common Var(flag_whole_program) Init(0)
  Perform whole program optimizations.
  
  fwrapv-pointer
! Common Var(flag_wrapv_pointer) Optimization
  Assume pointer overflow wraps around.
  
  fwrapv
! Common Var(flag_wrapv) Optimization
  Assume signed arithmetic overflow wraps around.
  
  fzero-initialized-in-bss
! Common Var(flag_zero_initialized_in_bss) Init(1)
  Put zero initialized data in the bss section.
  
+ fzero-call-used-regs=
+ Common RejectNegative Joined
+ Clear call-used registers upon function return.
+ 
  g
  Common Driver RejectNegative JoinedOrMissing
  Generate debug information in default format.
*************** Common Driver JoinedOrMissing Negative(g
*** 3114,3122 ****
  Generate debug information in default version of DWARF format.
  
  gdwarf-
! Common Driver Joined UInteger Var(dwarf_version) Init(4) Negative(gstabs)
  Generate debug information in DWARF v2 (or later) format.
  
  ggdb
  Common Driver JoinedOrMissing
  Generate debug information in default extended format.
--- 3175,3191 ----
  Generate debug information in default version of DWARF format.
  
  gdwarf-
! Common Driver Joined UInteger Var(dwarf_version) Init(5) Negative(gstabs)
  Generate debug information in DWARF v2 (or later) format.
  
+ gdwarf32
+ Common Driver Var(dwarf_offset_size,4) Init(4) RejectNegative
+ Use 32-bit DWARF format when emitting DWARF debug information.
+ 
+ gdwarf64
+ Common Driver Var(dwarf_offset_size,8) RejectNegative
+ Use 64-bit DWARF format when emitting DWARF debug information.
+ 
  ggdb
  Common Driver JoinedOrMissing
  Generate debug information in default extended format.
*************** Common Driver Var(debug_nonbind_markers_
*** 3166,3180 ****
  Emit progressive recommended breakpoint locations.
  
  gstrict-dwarf
! Common Driver Report Var(dwarf_strict) Init(0)
  Don't emit DWARF additions beyond selected version.
  
  gdescribe-dies
! Common Driver Report Var(flag_describe_dies) Init(0)
  Add description attributes to some DWARF DIEs that have no name attribute.
  
  gtoggle
! Common Driver Report Var(flag_gtoggle)
  Toggle debug information generation.
  
  gvariable-location-views
--- 3235,3249 ----
  Emit progressive recommended breakpoint locations.
  
  gstrict-dwarf
! Common Driver Var(dwarf_strict) Init(0)
  Don't emit DWARF additions beyond selected version.
  
  gdescribe-dies
! Common Driver Var(flag_describe_dies) Init(0)
  Add description attributes to some DWARF DIEs that have no name attribute.
  
  gtoggle
! Common Driver Var(flag_gtoggle)
  Toggle debug information generation.
  
  gvariable-location-views
*************** Driver
*** 3387,3392 ****
--- 3456,3464 ----
  static-libasan
  Driver
  
+ static-libhwasan
+ Driver
+ 
  static-libtsan
  Driver
  
*************** z
*** 3415,3421 ****
  Driver Joined Separate
  
  fipa-ra
! Common Report Var(flag_ipa_ra) Optimization
  Use caller save register across calls if possible.
  
  ; This comment is to ensure we retain the blank line above.
--- 3487,3493 ----
  Driver Joined Separate
  
  fipa-ra
! Common Var(flag_ipa_ra) Optimization
  Use caller save register across calls if possible.
  
  ; This comment is to ensure we retain the blank line above.
diff -Nrcpad gcc-10.3.0/gcc/compare-elim.c gcc-11.1.0/gcc/compare-elim.c
*** gcc-10.3.0/gcc/compare-elim.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/compare-elim.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Post-reload compare elimination.
!    Copyright (C) 2010-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Post-reload compare elimination.
!    Copyright (C) 2010-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/conditions.h gcc-11.1.0/gcc/conditions.h
*** gcc-10.3.0/gcc/conditions.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/conditions.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for condition code handling in final.c and output routines.
!    Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for condition code handling in final.c and output routines.
!    Copyright (C) 1987-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-arches.def gcc-11.1.0/gcc/config/aarch64/aarch64-arches.def
*** gcc-10.3.0/gcc/config/aarch64/aarch64-arches.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-arches.def	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2011-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2011-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** AARCH64_ARCH("armv8.3-a",     generic,
*** 37,41 ****
--- 37,42 ----
  AARCH64_ARCH("armv8.4-a",     generic,	     8_4A,	8,  AARCH64_FL_FOR_ARCH8_4)
  AARCH64_ARCH("armv8.5-a",     generic,	     8_5A,	8,  AARCH64_FL_FOR_ARCH8_5)
  AARCH64_ARCH("armv8.6-a",     generic,	     8_6A,	8,  AARCH64_FL_FOR_ARCH8_6)
+ AARCH64_ARCH("armv8-r",       generic,	     8R  ,	8,  AARCH64_FL_FOR_ARCH8_R)
  
  #undef AARCH64_ARCH
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-bti-insert.c gcc-11.1.0/gcc/config/aarch64/aarch64-bti-insert.c
*** gcc-10.3.0/gcc/config/aarch64/aarch64-bti-insert.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-bti-insert.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Branch Target Identification for AArch64 architecture.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by Arm Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Branch Target Identification for AArch64 architecture.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by Arm Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-builtins.c gcc-11.1.0/gcc/config/aarch64/aarch64-builtins.c
*** gcc-10.3.0/gcc/config/aarch64/aarch64-builtins.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-builtins.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Builtins' description for AArch64 SIMD architecture.
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Builtins' description for AArch64 SIMD architecture.
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** enum aarch64_type_qualifiers
*** 117,122 ****
--- 117,140 ----
    qualifier_lane_quadtup_index = 0x1000,
  };
  
+ /* Flags that describe what a function might do.  */
+ const unsigned int FLAG_NONE = 0U;
+ const unsigned int FLAG_READ_FPCR = 1U << 0;
+ const unsigned int FLAG_RAISE_FP_EXCEPTIONS = 1U << 1;
+ const unsigned int FLAG_READ_MEMORY = 1U << 2;
+ const unsigned int FLAG_PREFETCH_MEMORY = 1U << 3;
+ const unsigned int FLAG_WRITE_MEMORY = 1U << 4;
+ 
+ /* Not all FP intrinsics raise FP exceptions or read FPCR register,
+    use this flag to suppress it.  */
+ const unsigned int FLAG_AUTO_FP = 1U << 5;
+ 
+ const unsigned int FLAG_FP = FLAG_READ_FPCR | FLAG_RAISE_FP_EXCEPTIONS;
+ const unsigned int FLAG_ALL = FLAG_READ_FPCR | FLAG_RAISE_FP_EXCEPTIONS
+   | FLAG_READ_MEMORY | FLAG_PREFETCH_MEMORY | FLAG_WRITE_MEMORY;
+ const unsigned int FLAG_STORE = FLAG_WRITE_MEMORY | FLAG_AUTO_FP;
+ const unsigned int FLAG_LOAD = FLAG_READ_MEMORY | FLAG_AUTO_FP;
+ 
  typedef struct
  {
    const char *name;
*************** typedef struct
*** 124,129 ****
--- 142,148 ----
    const enum insn_code code;
    unsigned int fcode;
    enum aarch64_type_qualifiers *qualifiers;
+   unsigned int flags;
  } aarch64_simd_builtin_datum;
  
  static enum aarch64_type_qualifiers
*************** static enum aarch64_type_qualifiers
*** 248,253 ****
--- 267,277 ----
  aarch64_types_unsigned_shift_qualifiers[SIMD_MAX_BUILTIN_ARGS]
    = { qualifier_unsigned, qualifier_unsigned, qualifier_immediate };
  #define TYPES_USHIFTIMM (aarch64_types_unsigned_shift_qualifiers)
+ #define TYPES_USHIFT2IMM (aarch64_types_ternopu_imm_qualifiers)
+ static enum aarch64_type_qualifiers
+ aarch64_types_shift2_to_unsigned_qualifiers[SIMD_MAX_BUILTIN_ARGS]
+   = { qualifier_unsigned, qualifier_unsigned, qualifier_none, qualifier_immediate };
+ #define TYPES_SHIFT2IMM_UUSS (aarch64_types_shift2_to_unsigned_qualifiers)
  
  static enum aarch64_type_qualifiers
  aarch64_types_ternop_s_imm_p_qualifiers[SIMD_MAX_BUILTIN_ARGS]
*************** aarch64_types_ternop_s_imm_qualifiers[SI
*** 259,264 ****
--- 283,289 ----
  #define TYPES_SETREG (aarch64_types_ternop_s_imm_qualifiers)
  #define TYPES_SHIFTINSERT (aarch64_types_ternop_s_imm_qualifiers)
  #define TYPES_SHIFTACC (aarch64_types_ternop_s_imm_qualifiers)
+ #define TYPES_SHIFT2IMM (aarch64_types_ternop_s_imm_qualifiers)
  
  static enum aarch64_type_qualifiers
  aarch64_types_ternop_p_imm_qualifiers[SIMD_MAX_BUILTIN_ARGS]
*************** aarch64_types_storestruct_lane_qualifier
*** 336,388 ****
  #define CF4(N, X) CODE_FOR_##N##X##4
  #define CF10(N, X) CODE_FOR_##N##X
  
! #define VAR1(T, N, MAP, A) \
!   {#N #A, UP (A), CF##MAP (N, A), 0, TYPES_##T},
! #define VAR2(T, N, MAP, A, B) \
!   VAR1 (T, N, MAP, A) \
!   VAR1 (T, N, MAP, B)
! #define VAR3(T, N, MAP, A, B, C) \
!   VAR2 (T, N, MAP, A, B) \
!   VAR1 (T, N, MAP, C)
! #define VAR4(T, N, MAP, A, B, C, D) \
!   VAR3 (T, N, MAP, A, B, C) \
!   VAR1 (T, N, MAP, D)
! #define VAR5(T, N, MAP, A, B, C, D, E) \
!   VAR4 (T, N, MAP, A, B, C, D) \
!   VAR1 (T, N, MAP, E)
! #define VAR6(T, N, MAP, A, B, C, D, E, F) \
!   VAR5 (T, N, MAP, A, B, C, D, E) \
!   VAR1 (T, N, MAP, F)
! #define VAR7(T, N, MAP, A, B, C, D, E, F, G) \
!   VAR6 (T, N, MAP, A, B, C, D, E, F) \
!   VAR1 (T, N, MAP, G)
! #define VAR8(T, N, MAP, A, B, C, D, E, F, G, H) \
!   VAR7 (T, N, MAP, A, B, C, D, E, F, G) \
!   VAR1 (T, N, MAP, H)
! #define VAR9(T, N, MAP, A, B, C, D, E, F, G, H, I) \
!   VAR8 (T, N, MAP, A, B, C, D, E, F, G, H) \
!   VAR1 (T, N, MAP, I)
! #define VAR10(T, N, MAP, A, B, C, D, E, F, G, H, I, J) \
!   VAR9 (T, N, MAP, A, B, C, D, E, F, G, H, I) \
!   VAR1 (T, N, MAP, J)
! #define VAR11(T, N, MAP, A, B, C, D, E, F, G, H, I, J, K) \
!   VAR10 (T, N, MAP, A, B, C, D, E, F, G, H, I, J) \
!   VAR1 (T, N, MAP, K)
! #define VAR12(T, N, MAP, A, B, C, D, E, F, G, H, I, J, K, L) \
!   VAR11 (T, N, MAP, A, B, C, D, E, F, G, H, I, J, K) \
!   VAR1 (T, N, MAP, L)
! #define VAR13(T, N, MAP, A, B, C, D, E, F, G, H, I, J, K, L, M) \
!   VAR12 (T, N, MAP, A, B, C, D, E, F, G, H, I, J, K, L) \
!   VAR1 (T, N, MAP, M)
! #define VAR14(T, X, MAP, A, B, C, D, E, F, G, H, I, J, K, L, M, N) \
!   VAR13 (T, X, MAP, A, B, C, D, E, F, G, H, I, J, K, L, M) \
!   VAR1 (T, X, MAP, N)
! #define VAR15(T, X, MAP, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) \
!   VAR14 (T, X, MAP, A, B, C, D, E, F, G, H, I, J, K, L, M, N) \
!   VAR1 (T, X, MAP, O)
! #define VAR16(T, X, MAP, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P) \
!   VAR15 (T, X, MAP, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) \
!   VAR1 (T, X, MAP, P)
  
  #include "aarch64-builtin-iterators.h"
  
--- 361,413 ----
  #define CF4(N, X) CODE_FOR_##N##X##4
  #define CF10(N, X) CODE_FOR_##N##X
  
! #define VAR1(T, N, MAP, FLAG, A) \
!   {#N #A, UP (A), CF##MAP (N, A), 0, TYPES_##T, FLAG_##FLAG},
! #define VAR2(T, N, MAP, FLAG, A, B) \
!   VAR1 (T, N, MAP, FLAG, A) \
!   VAR1 (T, N, MAP, FLAG, B)
! #define VAR3(T, N, MAP, FLAG, A, B, C) \
!   VAR2 (T, N, MAP, FLAG, A, B) \
!   VAR1 (T, N, MAP, FLAG, C)
! #define VAR4(T, N, MAP, FLAG, A, B, C, D) \
!   VAR3 (T, N, MAP, FLAG, A, B, C) \
!   VAR1 (T, N, MAP, FLAG, D)
! #define VAR5(T, N, MAP, FLAG, A, B, C, D, E) \
!   VAR4 (T, N, MAP, FLAG, A, B, C, D) \
!   VAR1 (T, N, MAP, FLAG, E)
! #define VAR6(T, N, MAP, FLAG, A, B, C, D, E, F) \
!   VAR5 (T, N, MAP, FLAG, A, B, C, D, E) \
!   VAR1 (T, N, MAP, FLAG, F)
! #define VAR7(T, N, MAP, FLAG, A, B, C, D, E, F, G) \
!   VAR6 (T, N, MAP, FLAG, A, B, C, D, E, F) \
!   VAR1 (T, N, MAP, FLAG, G)
! #define VAR8(T, N, MAP, FLAG, A, B, C, D, E, F, G, H) \
!   VAR7 (T, N, MAP, FLAG, A, B, C, D, E, F, G) \
!   VAR1 (T, N, MAP, FLAG, H)
! #define VAR9(T, N, MAP, FLAG, A, B, C, D, E, F, G, H, I) \
!   VAR8 (T, N, MAP, FLAG, A, B, C, D, E, F, G, H) \
!   VAR1 (T, N, MAP, FLAG, I)
! #define VAR10(T, N, MAP, FLAG, A, B, C, D, E, F, G, H, I, J) \
!   VAR9 (T, N, MAP, FLAG, A, B, C, D, E, F, G, H, I) \
!   VAR1 (T, N, MAP, FLAG, J)
! #define VAR11(T, N, MAP, FLAG, A, B, C, D, E, F, G, H, I, J, K) \
!   VAR10 (T, N, MAP, FLAG, A, B, C, D, E, F, G, H, I, J) \
!   VAR1 (T, N, MAP, FLAG, K)
! #define VAR12(T, N, MAP, FLAG, A, B, C, D, E, F, G, H, I, J, K, L) \
!   VAR11 (T, N, MAP, FLAG, A, B, C, D, E, F, G, H, I, J, K) \
!   VAR1 (T, N, MAP, FLAG, L)
! #define VAR13(T, N, MAP, FLAG, A, B, C, D, E, F, G, H, I, J, K, L, M) \
!   VAR12 (T, N, MAP, FLAG, A, B, C, D, E, F, G, H, I, J, K, L) \
!   VAR1 (T, N, MAP, FLAG, M)
! #define VAR14(T, X, MAP, FLAG, A, B, C, D, E, F, G, H, I, J, K, L, M, N) \
!   VAR13 (T, X, MAP, FLAG, A, B, C, D, E, F, G, H, I, J, K, L, M) \
!   VAR1 (T, X, MAP, FLAG, N)
! #define VAR15(T, X, MAP, FLAG, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) \
!   VAR14 (T, X, MAP, FLAG, A, B, C, D, E, F, G, H, I, J, K, L, M, N) \
!   VAR1 (T, X, MAP, FLAG, O)
! #define VAR16(T, X, MAP, FLAG, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P) \
!   VAR15 (T, X, MAP, FLAG, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) \
!   VAR1 (T, X, MAP, FLAG, P)
  
  #include "aarch64-builtin-iterators.h"
  
*************** typedef struct
*** 438,444 ****
    AARCH64_SIMD_BUILTIN_FCMLA_LANEQ##I##_##M,
  
  #undef VAR1
! #define VAR1(T, N, MAP, A) \
    AARCH64_SIMD_BUILTIN_##T##_##N##A,
  
  enum aarch64_builtins
--- 463,469 ----
    AARCH64_SIMD_BUILTIN_FCMLA_LANEQ##I##_##M,
  
  #undef VAR1
! #define VAR1(T, N, MAP, FLAG, A) \
    AARCH64_SIMD_BUILTIN_##T##_##N##A,
  
  enum aarch64_builtins
*************** enum aarch64_builtins
*** 450,455 ****
--- 475,485 ----
    AARCH64_BUILTIN_GET_FPSR,
    AARCH64_BUILTIN_SET_FPSR,
  
+   AARCH64_BUILTIN_GET_FPCR64,
+   AARCH64_BUILTIN_SET_FPCR64,
+   AARCH64_BUILTIN_GET_FPSR64,
+   AARCH64_BUILTIN_SET_FPSR64,
+ 
    AARCH64_BUILTIN_RSQRT_DF,
    AARCH64_BUILTIN_RSQRT_SF,
    AARCH64_BUILTIN_RSQRT_V2DF,
*************** tree aarch64_bf16_type_node = NULL_TREE;
*** 610,623 ****
  tree aarch64_bf16_ptr_type_node = NULL_TREE;
  
  /* Wrapper around add_builtin_function.  NAME is the name of the built-in
!    function, TYPE is the function type, and CODE is the function subcode
!    (relative to AARCH64_BUILTIN_GENERAL).  */
  static tree
! aarch64_general_add_builtin (const char *name, tree type, unsigned int code)
  {
    code = (code << AARCH64_BUILTIN_SHIFT) | AARCH64_BUILTIN_GENERAL;
    return add_builtin_function (name, type, code, BUILT_IN_MD,
! 			       NULL, NULL_TREE);
  }
  
  static const char *
--- 640,655 ----
  tree aarch64_bf16_ptr_type_node = NULL_TREE;
  
  /* Wrapper around add_builtin_function.  NAME is the name of the built-in
!    function, TYPE is the function type, CODE is the function subcode
!    (relative to AARCH64_BUILTIN_GENERAL), and ATTRS is the function
!    attributes.  */
  static tree
! aarch64_general_add_builtin (const char *name, tree type, unsigned int code,
! 			     tree attrs = NULL_TREE)
  {
    code = (code << AARCH64_BUILTIN_SHIFT) | AARCH64_BUILTIN_GENERAL;
    return add_builtin_function (name, type, code, BUILT_IN_MD,
! 			       NULL, attrs);
  }
  
  static const char *
*************** aarch64_mangle_builtin_scalar_type (cons
*** 641,658 ****
  static const char *
  aarch64_mangle_builtin_vector_type (const_tree type)
  {
!   int i;
!   int nelts = sizeof (aarch64_simd_types) / sizeof (aarch64_simd_types[0]);
! 
!   for (i = 0; i < nelts; i++)
!     if (aarch64_simd_types[i].mode ==  TYPE_MODE (type)
! 	&& TYPE_NAME (type)
! 	&& TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
! 	&& DECL_NAME (TYPE_NAME (type))
! 	&& !strcmp
! 	     (IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))),
! 	      aarch64_simd_types[i].name))
!       return aarch64_simd_types[i].mangle;
  
    return NULL;
  }
--- 673,684 ----
  static const char *
  aarch64_mangle_builtin_vector_type (const_tree type)
  {
!   tree attrs = TYPE_ATTRIBUTES (type);
!   if (tree attr = lookup_attribute ("Advanced SIMD type", attrs))
!     {
!       tree mangled_name = TREE_VALUE (TREE_VALUE (attr));
!       return IDENTIFIER_POINTER (mangled_name);
!     }
  
    return NULL;
  }
*************** aarch64_init_simd_builtin_types (void)
*** 808,816 ****
  	  type = build_distinct_type_copy (type);
  	  SET_TYPE_STRUCTURAL_EQUALITY (type);
  
  	  TYPE_ATTRIBUTES (type)
! 	    = tree_cons (get_identifier ("Advanced SIMD type"),
! 			 NULL_TREE, TYPE_ATTRIBUTES (type));
  	  aarch64_simd_types[i].itype = type;
  	}
  
--- 834,844 ----
  	  type = build_distinct_type_copy (type);
  	  SET_TYPE_STRUCTURAL_EQUALITY (type);
  
+ 	  tree mangled_name = get_identifier (aarch64_simd_types[i].mangle);
+ 	  tree value = tree_cons (NULL_TREE, mangled_name, NULL_TREE);
  	  TYPE_ATTRIBUTES (type)
! 	    = tree_cons (get_identifier ("Advanced SIMD type"), value,
! 			 TYPE_ATTRIBUTES (type));
  	  aarch64_simd_types[i].itype = type;
  	}
  
*************** aarch64_init_simd_builtin_scalar_types (
*** 878,883 ****
--- 906,1000 ----
  					     "__builtin_aarch64_simd_udi");
  }
  
+ /* Return a set of FLAG_* flags that describe what the function could do,
+    taking the command-line flags into account.  */
+ static unsigned int
+ aarch64_call_properties (aarch64_simd_builtin_datum *d)
+ {
+   unsigned int flags = d->flags;
+ 
+   if (!(flags & FLAG_AUTO_FP) && FLOAT_MODE_P (d->mode))
+     flags |= FLAG_FP;
+ 
+   /* -fno-trapping-math means that we can assume any FP exceptions
+      are not user-visible.  */
+   if (!flag_trapping_math)
+     flags &= ~FLAG_RAISE_FP_EXCEPTIONS;
+ 
+   return flags;
+ }
+ 
+ /* Return true if calls to the function could modify some form of
+    global state.  */
+ static bool
+ aarch64_modifies_global_state_p (aarch64_simd_builtin_datum *d)
+ {
+   unsigned int flags = aarch64_call_properties (d);
+ 
+   if (flags & FLAG_RAISE_FP_EXCEPTIONS)
+     return true;
+ 
+   if (flags & FLAG_PREFETCH_MEMORY)
+     return true;
+ 
+   return flags & FLAG_WRITE_MEMORY;
+ }
+ 
+ /* Return true if calls to the function could read some form of
+    global state.  */
+ static bool
+ aarch64_reads_global_state_p (aarch64_simd_builtin_datum *d)
+ {
+   unsigned int flags = aarch64_call_properties (d);
+ 
+   if (flags & FLAG_READ_FPCR)
+     return true;
+ 
+   return flags & FLAG_READ_MEMORY;
+ }
+ 
+ /* Return true if calls to the function could raise a signal.  */
+ static bool
+ aarch64_could_trap_p (aarch64_simd_builtin_datum *d)
+ {
+   unsigned int flags = aarch64_call_properties (d);
+ 
+   if (flags & FLAG_RAISE_FP_EXCEPTIONS)
+     return true;
+ 
+   if (flags & (FLAG_READ_MEMORY | FLAG_WRITE_MEMORY))
+     return true;
+ 
+   return false;
+ }
+ 
+ /* Add attribute NAME to ATTRS.  */
+ static tree
+ aarch64_add_attribute (const char *name, tree attrs)
+ {
+   return tree_cons (get_identifier (name), NULL_TREE, attrs);
+ }
+ 
+ /* Return the appropriate function attributes.  */
+ static tree
+ aarch64_get_attributes (aarch64_simd_builtin_datum *d)
+ {
+   tree attrs = NULL_TREE;
+ 
+   if (!aarch64_modifies_global_state_p (d))
+     {
+       if (aarch64_reads_global_state_p (d))
+ 	attrs = aarch64_add_attribute ("pure", attrs);
+       else
+ 	attrs = aarch64_add_attribute ("const", attrs);
+     }
+ 
+   if (!flag_non_call_exceptions || !aarch64_could_trap_p (d))
+     attrs = aarch64_add_attribute ("nothrow", attrs);
+ 
+   return aarch64_add_attribute ("leaf", attrs);
+ }
+ 
  static bool aarch64_simd_builtins_initialized_p = false;
  
  /* Due to the architecture not providing lane variant of the lane instructions
*************** aarch64_init_simd_builtins (void)
*** 1031,1037 ****
  	snprintf (namebuf, sizeof (namebuf), "__builtin_aarch64_%s",
  		  d->name);
  
!       fndecl = aarch64_general_add_builtin (namebuf, ftype, fcode);
        aarch64_builtin_decls[fcode] = fndecl;
      }
  
--- 1148,1156 ----
  	snprintf (namebuf, sizeof (namebuf), "__builtin_aarch64_%s",
  		  d->name);
  
!       tree attrs = aarch64_get_attributes (d);
! 
!       fndecl = aarch64_general_add_builtin (namebuf, ftype, fcode, attrs);
        aarch64_builtin_decls[fcode] = fndecl;
      }
  
*************** aarch64_init_memtag_builtins (void)
*** 1223,1231 ****
      = aarch64_general_add_builtin ("__builtin_aarch64_memtag_"#N, \
  				   T, AARCH64_MEMTAG_BUILTIN_##F); \
    aarch64_memtag_builtin_data[AARCH64_MEMTAG_BUILTIN_##F - \
! 			      AARCH64_MEMTAG_BUILTIN_START - 1].ftype = T; \
!   aarch64_memtag_builtin_data[AARCH64_MEMTAG_BUILTIN_##F - \
! 			      AARCH64_MEMTAG_BUILTIN_START - 1].icode = CODE_FOR_##I;
  
    fntype = build_function_type_list (ptr_type_node, ptr_type_node,
  				     uint64_type_node, NULL);
--- 1342,1349 ----
      = aarch64_general_add_builtin ("__builtin_aarch64_memtag_"#N, \
  				   T, AARCH64_MEMTAG_BUILTIN_##F); \
    aarch64_memtag_builtin_data[AARCH64_MEMTAG_BUILTIN_##F - \
! 			      AARCH64_MEMTAG_BUILTIN_START - 1] = \
! 				{T, CODE_FOR_##I};
  
    fntype = build_function_type_list (ptr_type_node, ptr_type_node,
  				     uint64_type_node, NULL);
*************** aarch64_init_memtag_builtins (void)
*** 1252,1284 ****
  #undef AARCH64_INIT_MEMTAG_BUILTINS_DECL
  }
  
! /* Initialize all builtins in the AARCH64_BUILTIN_GENERAL group.  */
  
! void
! aarch64_general_init_builtins (void)
  {
!   tree ftype_set_fpr
      = build_function_type_list (void_type_node, unsigned_type_node, NULL);
!   tree ftype_get_fpr
      = build_function_type_list (unsigned_type_node, NULL);
  
    aarch64_builtin_decls[AARCH64_BUILTIN_GET_FPCR]
      = aarch64_general_add_builtin ("__builtin_aarch64_get_fpcr",
! 				   ftype_get_fpr,
  				   AARCH64_BUILTIN_GET_FPCR);
    aarch64_builtin_decls[AARCH64_BUILTIN_SET_FPCR]
      = aarch64_general_add_builtin ("__builtin_aarch64_set_fpcr",
! 				   ftype_set_fpr,
  				   AARCH64_BUILTIN_SET_FPCR);
    aarch64_builtin_decls[AARCH64_BUILTIN_GET_FPSR]
      = aarch64_general_add_builtin ("__builtin_aarch64_get_fpsr",
! 				   ftype_get_fpr,
  				   AARCH64_BUILTIN_GET_FPSR);
    aarch64_builtin_decls[AARCH64_BUILTIN_SET_FPSR]
      = aarch64_general_add_builtin ("__builtin_aarch64_set_fpsr",
! 				   ftype_set_fpr,
  				   AARCH64_BUILTIN_SET_FPSR);
  
    aarch64_init_fp16_types ();
  
    aarch64_init_bf16_types ();
--- 1370,1433 ----
  #undef AARCH64_INIT_MEMTAG_BUILTINS_DECL
  }
  
! /* Initialize fpsr fpcr getters and setters.  */
  
! static void
! aarch64_init_fpsr_fpcr_builtins (void)
  {
!   tree ftype_set
      = build_function_type_list (void_type_node, unsigned_type_node, NULL);
!   tree ftype_get
      = build_function_type_list (unsigned_type_node, NULL);
  
    aarch64_builtin_decls[AARCH64_BUILTIN_GET_FPCR]
      = aarch64_general_add_builtin ("__builtin_aarch64_get_fpcr",
! 				   ftype_get,
  				   AARCH64_BUILTIN_GET_FPCR);
    aarch64_builtin_decls[AARCH64_BUILTIN_SET_FPCR]
      = aarch64_general_add_builtin ("__builtin_aarch64_set_fpcr",
! 				   ftype_set,
  				   AARCH64_BUILTIN_SET_FPCR);
    aarch64_builtin_decls[AARCH64_BUILTIN_GET_FPSR]
      = aarch64_general_add_builtin ("__builtin_aarch64_get_fpsr",
! 				   ftype_get,
  				   AARCH64_BUILTIN_GET_FPSR);
    aarch64_builtin_decls[AARCH64_BUILTIN_SET_FPSR]
      = aarch64_general_add_builtin ("__builtin_aarch64_set_fpsr",
! 				   ftype_set,
  				   AARCH64_BUILTIN_SET_FPSR);
  
+   ftype_set
+     = build_function_type_list (void_type_node, long_long_unsigned_type_node,
+ 				NULL);
+   ftype_get
+     = build_function_type_list (long_long_unsigned_type_node, NULL);
+ 
+   aarch64_builtin_decls[AARCH64_BUILTIN_GET_FPCR64]
+     = aarch64_general_add_builtin ("__builtin_aarch64_get_fpcr64",
+ 				   ftype_get,
+ 				   AARCH64_BUILTIN_GET_FPCR64);
+   aarch64_builtin_decls[AARCH64_BUILTIN_SET_FPCR64]
+     = aarch64_general_add_builtin ("__builtin_aarch64_set_fpcr64",
+ 				   ftype_set,
+ 				   AARCH64_BUILTIN_SET_FPCR64);
+   aarch64_builtin_decls[AARCH64_BUILTIN_GET_FPSR64]
+     = aarch64_general_add_builtin ("__builtin_aarch64_get_fpsr64",
+ 				   ftype_get,
+ 				   AARCH64_BUILTIN_GET_FPSR64);
+   aarch64_builtin_decls[AARCH64_BUILTIN_SET_FPSR64]
+     = aarch64_general_add_builtin ("__builtin_aarch64_set_fpsr64",
+ 				   ftype_set,
+ 				   AARCH64_BUILTIN_SET_FPSR64);
+ }
+ 
+ /* Initialize all builtins in the AARCH64_BUILTIN_GENERAL group.  */
+ 
+ void
+ aarch64_general_init_builtins (void)
+ {
+   aarch64_init_fpsr_fpcr_builtins ();
+ 
    aarch64_init_fp16_types ();
  
    aarch64_init_bf16_types ();
*************** aarch64_expand_fcmla_builtin (tree exp,
*** 1714,1723 ****
       only need to know the order in a V2mode.  */
    lane_idx = aarch64_endian_lane_rtx (V2DImode, lane);
  
!   if (!target)
      target = gen_reg_rtx (d->mode);
-   else
-     target = force_reg (d->mode, target);
  
    rtx pat = NULL_RTX;
  
--- 1863,1872 ----
       only need to know the order in a V2mode.  */
    lane_idx = aarch64_endian_lane_rtx (V2DImode, lane);
  
!   if (!target
!       || !REG_P (target)
!       || GET_MODE (target) != d->mode)
      target = gen_reg_rtx (d->mode);
  
    rtx pat = NULL_RTX;
  
*************** aarch64_expand_builtin_memtag (int fcode
*** 1883,1888 ****
--- 2032,2059 ----
    return target;
  }
  
+ /* Expand an expression EXP as fpsr or fpcr setter (depending on
+    UNSPEC) using MODE.  */
+ static void
+ aarch64_expand_fpsr_fpcr_setter (int unspec, machine_mode mode, tree exp)
+ {
+   tree arg = CALL_EXPR_ARG (exp, 0);
+   rtx op = force_reg (mode, expand_normal (arg));
+   emit_insn (gen_aarch64_set (unspec, mode, op));
+ }
+ 
+ /* Expand a fpsr or fpcr getter (depending on UNSPEC) using MODE.
+    Return the target.  */
+ static rtx
+ aarch64_expand_fpsr_fpcr_getter (enum insn_code icode, machine_mode mode,
+ 				 rtx target)
+ {
+   expand_operand op;
+   create_output_operand (&op, target, mode);
+   expand_insn (icode, 1, &op);
+   return op.value;
+ }
+ 
  /* Expand an expression EXP that calls built-in function FCODE,
     with result going to TARGET if that's convenient.  IGNORE is true
     if the result of the builtin is ignored.  */
*************** aarch64_general_expand_builtin (unsigned
*** 1891,1925 ****
  				int ignore)
  {
    int icode;
!   rtx pat, op0;
    tree arg0;
  
    switch (fcode)
      {
      case AARCH64_BUILTIN_GET_FPCR:
      case AARCH64_BUILTIN_SET_FPCR:
      case AARCH64_BUILTIN_GET_FPSR:
      case AARCH64_BUILTIN_SET_FPSR:
!       if ((fcode == AARCH64_BUILTIN_GET_FPCR)
! 	  || (fcode == AARCH64_BUILTIN_GET_FPSR))
! 	{
! 	  icode = (fcode == AARCH64_BUILTIN_GET_FPSR) ?
! 	    CODE_FOR_get_fpsr : CODE_FOR_get_fpcr;
! 	  target = gen_reg_rtx (SImode);
! 	  pat = GEN_FCN (icode) (target);
! 	}
!       else
! 	{
! 	  target = NULL_RTX;
! 	  icode = (fcode == AARCH64_BUILTIN_SET_FPSR) ?
! 	    CODE_FOR_set_fpsr : CODE_FOR_set_fpcr;
! 	  arg0 = CALL_EXPR_ARG (exp, 0);
! 	  op0 = force_reg (SImode, expand_normal (arg0));
! 	  pat = GEN_FCN (icode) (op0);
! 	}
!       emit_insn (pat);
        return target;
- 
      case AARCH64_PAUTH_BUILTIN_AUTIA1716:
      case AARCH64_PAUTH_BUILTIN_PACIA1716:
      case AARCH64_PAUTH_BUILTIN_AUTIB1716:
--- 2062,2096 ----
  				int ignore)
  {
    int icode;
!   rtx op0;
    tree arg0;
  
    switch (fcode)
      {
      case AARCH64_BUILTIN_GET_FPCR:
+       return aarch64_expand_fpsr_fpcr_getter (CODE_FOR_aarch64_get_fpcrsi,
+ 					      SImode, target);
      case AARCH64_BUILTIN_SET_FPCR:
+       aarch64_expand_fpsr_fpcr_setter (UNSPECV_SET_FPCR, SImode, exp);
+       return target;
      case AARCH64_BUILTIN_GET_FPSR:
+       return aarch64_expand_fpsr_fpcr_getter (CODE_FOR_aarch64_get_fpsrsi,
+ 					      SImode, target);
      case AARCH64_BUILTIN_SET_FPSR:
!       aarch64_expand_fpsr_fpcr_setter (UNSPECV_SET_FPSR, SImode, exp);
!       return target;
!     case AARCH64_BUILTIN_GET_FPCR64:
!       return aarch64_expand_fpsr_fpcr_getter (CODE_FOR_aarch64_get_fpcrdi,
! 					      DImode, target);
!     case AARCH64_BUILTIN_SET_FPCR64:
!       aarch64_expand_fpsr_fpcr_setter (UNSPECV_SET_FPCR, DImode, exp);
!       return target;
!     case AARCH64_BUILTIN_GET_FPSR64:
!       return aarch64_expand_fpsr_fpcr_getter (CODE_FOR_aarch64_get_fpsrdi,
! 					      DImode, target);
!     case AARCH64_BUILTIN_SET_FPSR64:
!       aarch64_expand_fpsr_fpcr_setter (UNSPECV_SET_FPSR, DImode, exp);
        return target;
      case AARCH64_PAUTH_BUILTIN_AUTIA1716:
      case AARCH64_PAUTH_BUILTIN_PACIA1716:
      case AARCH64_PAUTH_BUILTIN_AUTIB1716:
*************** aarch64_general_expand_builtin (unsigned
*** 1928,1947 ****
        arg0 = CALL_EXPR_ARG (exp, 0);
        op0 = force_reg (Pmode, expand_normal (arg0));
  
-       if (!target)
- 	target = gen_reg_rtx (Pmode);
-       else
- 	target = force_reg (Pmode, target);
- 
-       emit_move_insn (target, op0);
- 
        if (fcode == AARCH64_PAUTH_BUILTIN_XPACLRI)
  	{
  	  rtx lr = gen_rtx_REG (Pmode, R30_REGNUM);
  	  icode = CODE_FOR_xpaclri;
  	  emit_move_insn (lr, op0);
  	  emit_insn (GEN_FCN (icode) ());
! 	  emit_move_insn (target, lr);
  	}
        else
  	{
--- 2099,2111 ----
        arg0 = CALL_EXPR_ARG (exp, 0);
        op0 = force_reg (Pmode, expand_normal (arg0));
  
        if (fcode == AARCH64_PAUTH_BUILTIN_XPACLRI)
  	{
  	  rtx lr = gen_rtx_REG (Pmode, R30_REGNUM);
  	  icode = CODE_FOR_xpaclri;
  	  emit_move_insn (lr, op0);
  	  emit_insn (GEN_FCN (icode) ());
! 	  return lr;
  	}
        else
  	{
*************** aarch64_general_expand_builtin (unsigned
*** 1971,1981 ****
  	  emit_move_insn (x17_reg, op0);
  	  emit_move_insn (x16_reg, op1);
  	  emit_insn (GEN_FCN (icode) ());
! 	  emit_move_insn (target, x17_reg);
  	}
  
-       return target;
- 
      case AARCH64_JSCVT:
        {
  	expand_operand ops[2];
--- 2135,2143 ----
  	  emit_move_insn (x17_reg, op0);
  	  emit_move_insn (x16_reg, op1);
  	  emit_insn (GEN_FCN (icode) ());
! 	  return x17_reg;
  	}
  
      case AARCH64_JSCVT:
        {
  	expand_operand ops[2];
*************** aarch64_general_builtin_rsqrt (unsigned
*** 2155,2161 ****
  }
  
  #undef VAR1
! #define VAR1(T, N, MAP, A) \
    case AARCH64_SIMD_BUILTIN_##T##_##N##A:
  
  /* Try to fold a call to the built-in function with subcode FCODE.  The
--- 2317,2323 ----
  }
  
  #undef VAR1
! #define VAR1(T, N, MAP, FLAG, A) \
    case AARCH64_SIMD_BUILTIN_##T##_##N##A:
  
  /* Try to fold a call to the built-in function with subcode FCODE.  The
*************** aarch64_general_fold_builtin (unsigned i
*** 2168,2178 ****
  {
    switch (fcode)
      {
!       BUILTIN_VDQF (UNOP, abs, 2)
  	return fold_build1 (ABS_EXPR, type, args[0]);
!       VAR1 (UNOP, floatv2si, 2, v2sf)
!       VAR1 (UNOP, floatv4si, 2, v4sf)
!       VAR1 (UNOP, floatv2di, 2, v2df)
  	return fold_build1 (FLOAT_EXPR, type, args[0]);
        default:
  	break;
--- 2330,2340 ----
  {
    switch (fcode)
      {
!       BUILTIN_VDQF (UNOP, abs, 2, ALL)
  	return fold_build1 (ABS_EXPR, type, args[0]);
!       VAR1 (UNOP, floatv2si, 2, ALL, v2sf)
!       VAR1 (UNOP, floatv4si, 2, ALL, v4sf)
!       VAR1 (UNOP, floatv2di, 2, ALL, v2df)
  	return fold_build1 (FLOAT_EXPR, type, args[0]);
        default:
  	break;
*************** aarch64_general_gimple_fold_builtin (uns
*** 2198,2221 ****
       the arguments to the __builtin.  */
    switch (fcode)
      {
!       BUILTIN_VALL (UNOP, reduc_plus_scal_, 10)
  	new_stmt = gimple_build_call_internal (IFN_REDUC_PLUS,
  					       1, args[0]);
  	gimple_call_set_lhs (new_stmt, gimple_call_lhs (stmt));
  	break;
!       BUILTIN_VDQIF (UNOP, reduc_smax_scal_, 10)
!       BUILTIN_VDQ_BHSI (UNOPU, reduc_umax_scal_, 10)
  	new_stmt = gimple_build_call_internal (IFN_REDUC_MAX,
  					       1, args[0]);
  	gimple_call_set_lhs (new_stmt, gimple_call_lhs (stmt));
  	break;
!       BUILTIN_VDQIF (UNOP, reduc_smin_scal_, 10)
!       BUILTIN_VDQ_BHSI (UNOPU, reduc_umin_scal_, 10)
  	new_stmt = gimple_build_call_internal (IFN_REDUC_MIN,
  					       1, args[0]);
  	gimple_call_set_lhs (new_stmt, gimple_call_lhs (stmt));
  	break;
!       BUILTIN_GPF (BINOP, fmulx, 0)
  	{
  	  gcc_assert (nargs == 2);
  	  bool a0_cst_p = TREE_CODE (args[0]) == REAL_CST;
--- 2360,2383 ----
       the arguments to the __builtin.  */
    switch (fcode)
      {
!       BUILTIN_VALL (UNOP, reduc_plus_scal_, 10, ALL)
  	new_stmt = gimple_build_call_internal (IFN_REDUC_PLUS,
  					       1, args[0]);
  	gimple_call_set_lhs (new_stmt, gimple_call_lhs (stmt));
  	break;
!       BUILTIN_VDQIF (UNOP, reduc_smax_scal_, 10, ALL)
!       BUILTIN_VDQ_BHSI (UNOPU, reduc_umax_scal_, 10, ALL)
  	new_stmt = gimple_build_call_internal (IFN_REDUC_MAX,
  					       1, args[0]);
  	gimple_call_set_lhs (new_stmt, gimple_call_lhs (stmt));
  	break;
!       BUILTIN_VDQIF (UNOP, reduc_smin_scal_, 10, ALL)
!       BUILTIN_VDQ_BHSI (UNOPU, reduc_umin_scal_, 10, ALL)
  	new_stmt = gimple_build_call_internal (IFN_REDUC_MIN,
  					       1, args[0]);
  	gimple_call_set_lhs (new_stmt, gimple_call_lhs (stmt));
  	break;
!       BUILTIN_GPF (BINOP, fmulx, 0, ALL)
  	{
  	  gcc_assert (nargs == 2);
  	  bool a0_cst_p = TREE_CODE (args[0]) == REAL_CST;
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-c.c gcc-11.1.0/gcc/config/aarch64/aarch64-c.c
*** gcc-10.3.0/gcc/config/aarch64/aarch64-c.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-c.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Target-specific code for C family languages.
!    Copyright (C) 2015-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Target-specific code for C family languages.
!    Copyright (C) 2015-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** aarch64_define_unconditional_macros (cpp
*** 63,69 ****
       as interoperability with the same arm macro.  */
    builtin_define ("__ARM_ARCH_8A");
  
!   builtin_define_with_int_value ("__ARM_ARCH_PROFILE", 'A');
    builtin_define ("__ARM_FEATURE_CLZ");
    builtin_define ("__ARM_FEATURE_IDIV");
    builtin_define ("__ARM_FEATURE_UNALIGNED");
--- 63,70 ----
       as interoperability with the same arm macro.  */
    builtin_define ("__ARM_ARCH_8A");
  
!   builtin_define_with_int_value ("__ARM_ARCH_PROFILE",
!       AARCH64_ISA_V8_R ? 'R' : 'A');
    builtin_define ("__ARM_FEATURE_CLZ");
    builtin_define ("__ARM_FEATURE_IDIV");
    builtin_define ("__ARM_FEATURE_UNALIGNED");
*************** aarch64_pragma_target_parse (tree args,
*** 241,252 ****
    else
      {
        pop_target = pop_target ? pop_target : target_option_default_node;
!       cl_target_option_restore (&global_options,
  				TREE_TARGET_OPTION (pop_target));
      }
  
    target_option_current_node
!     = build_target_option_node (&global_options);
  
    aarch64_reset_previous_fndecl ();
    /* For the definitions, ensure all newly defined macros are considered
--- 242,253 ----
    else
      {
        pop_target = pop_target ? pop_target : target_option_default_node;
!       cl_target_option_restore (&global_options, &global_options_set,
  				TREE_TARGET_OPTION (pop_target));
      }
  
    target_option_current_node
!     = build_target_option_node (&global_options, &global_options_set);
  
    aarch64_reset_previous_fndecl ();
    /* For the definitions, ensure all newly defined macros are considered
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-cc-fusion.cc gcc-11.1.0/gcc/config/aarch64/aarch64-cc-fusion.cc
*** gcc-10.3.0/gcc/config/aarch64/aarch64-cc-fusion.cc	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/aarch64/aarch64-cc-fusion.cc	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,296 ----
+ // Pass to fuse CC operations with other instructions.
+ // Copyright (C) 2021 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/>.
+ 
+ // This pass looks for sequences of the form:
+ //
+ //    A: (set (reg R1) X1)
+ //    B: ...instructions that might change the value of X1...
+ //    C: (set (reg CC) X2) // X2 uses R1
+ //
+ // and tries to change them to:
+ //
+ //    C': [(set (reg CC) X2')
+ //         (set (reg R1) X1)]
+ //    B: ...instructions that might change the value of X1...
+ //
+ // where X2' is the result of replacing R1 with X1 in X2.
+ //
+ // This sequence occurs in SVE code in two important cases:
+ //
+ // (a) Sometimes, to deal correctly with overflow, we need to increment
+ //     an IV after a WHILELO rather than before it.  In this case:
+ //     - A is a WHILELO,
+ //     - B includes an IV increment and
+ //     - C is a separate PTEST.
+ //
+ // (b) ACLE code of the form:
+ //
+ //       svbool_t ok = svrdffr ();
+ //       if (svptest_last (pg, ok))
+ //         ...
+ //
+ //     must, for performance reasons, be code-generated as:
+ //
+ //       RDFFRS Pok.B, Pg/Z
+ //       ...branch on flags result...
+ //
+ //     without a separate PTEST of Pok.  In this case:
+ //     - A is an aarch64_rdffr
+ //     - B includes an aarch64_update_ffrt
+ //     - C is a separate PTEST
+ //
+ // Combine can handle this optimization if B doesn't exist and if A and
+ // C are in the same BB.  This pass instead handles cases where B does
+ // exist and cases where A and C are in different BBs of the same EBB.
+ 
+ #define IN_TARGET_CODE 1
+ 
+ #define INCLUDE_ALGORITHM
+ #define INCLUDE_FUNCTIONAL
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "backend.h"
+ #include "rtl.h"
+ #include "df.h"
+ #include "rtl-ssa.h"
+ #include "tree-pass.h"
+ 
+ using namespace rtl_ssa;
+ 
+ namespace {
+ const pass_data pass_data_cc_fusion =
+ {
+   RTL_PASS, // type
+   "cc_fusion", // name
+   OPTGROUP_NONE, // optinfo_flags
+   TV_NONE, // tv_id
+   0, // properties_required
+   0, // properties_provided
+   0, // properties_destroyed
+   0, // todo_flags_start
+   TODO_df_finish, // todo_flags_finish
+ };
+ 
+ // Class that represents one run of the pass.
+ class cc_fusion
+ {
+ public:
+   cc_fusion ()  : m_parallel () {}
+   void execute ();
+ 
+ private:
+   rtx optimizable_set (const insn_info *);
+   bool parallelize_insns (def_info *, rtx, def_info *, rtx);
+   void optimize_cc_setter (def_info *, rtx);
+ 
+   // A spare PARALLEL rtx, or null if none.
+   rtx m_parallel;
+ };
+ 
+ // See whether INSN is a single_set that we can optimize.  Return the
+ // set if so, otherwise return null.
+ rtx
+ cc_fusion::optimizable_set (const insn_info *insn)
+ {
+   if (!insn->can_be_optimized ()
+       || insn->is_asm ()
+       || insn->has_volatile_refs ()
+       || insn->has_pre_post_modify ())
+     return NULL_RTX;
+ 
+   return single_set (insn->rtl ());
+ }
+ 
+ // CC_SET is a single_set that sets (only) CC_DEF; OTHER_SET is likewise
+ // a single_set that sets (only) OTHER_DEF.  CC_SET is known to set the
+ // CC register and the instruction that contains CC_SET is known to use
+ // OTHER_DEF.  Try to do CC_SET and OTHER_SET in parallel.
+ bool
+ cc_fusion::parallelize_insns (def_info *cc_def, rtx cc_set,
+ 			      def_info *other_def, rtx other_set)
+ {
+   auto attempt = crtl->ssa->new_change_attempt ();
+ 
+   insn_info *cc_insn = cc_def->insn ();
+   insn_info *other_insn = other_def->insn ();
+   if (dump_file && (dump_flags & TDF_DETAILS))
+     fprintf (dump_file, "trying to parallelize insn %d and insn %d\n",
+ 	     other_insn->uid (), cc_insn->uid ());
+ 
+   // Try to substitute OTHER_SET into CC_INSN.
+   insn_change_watermark rtl_watermark;
+   rtx_insn *cc_rtl = cc_insn->rtl ();
+   insn_propagation prop (cc_rtl, SET_DEST (other_set),
+ 			 SET_SRC (other_set));
+   if (!prop.apply_to_pattern (&PATTERN (cc_rtl))
+       || prop.num_replacements == 0)
+     {
+       if (dump_file && (dump_flags & TDF_DETAILS))
+ 	fprintf (dump_file, "-- failed to substitute all uses of r%d\n",
+ 		 other_def->regno ());
+       return false;
+     }
+ 
+   // Restrict the uses to those outside notes.
+   use_array cc_uses = remove_note_accesses (attempt, cc_insn->uses ());
+   use_array other_set_uses = remove_note_accesses (attempt,
+ 						   other_insn->uses ());
+ 
+   // Remove the use of the substituted value.
+   access_array_builder uses_builder (attempt);
+   uses_builder.reserve (cc_uses.size ());
+   for (use_info *use : cc_uses)
+     if (use->def () != other_def)
+       uses_builder.quick_push (use);
+   cc_uses = use_array (uses_builder.finish ());
+ 
+   // Get the list of uses for the new instruction.
+   insn_change cc_change (cc_insn);
+   cc_change.new_uses = merge_access_arrays (attempt, other_set_uses, cc_uses);
+   if (!cc_change.new_uses.is_valid ())
+     {
+       if (dump_file && (dump_flags & TDF_DETAILS))
+ 	fprintf (dump_file, "-- cannot merge uses\n");
+       return false;
+     }
+ 
+   // The instruction initially defines just two registers.  recog can add
+   // extra clobbers if necessary.
+   auto_vec<access_info *, 2> new_defs;
+   new_defs.quick_push (cc_def);
+   new_defs.quick_push (other_def);
+   sort_accesses (new_defs);
+   cc_change.new_defs = def_array (access_array (new_defs));
+ 
+   // Make sure there is somewhere that the new instruction could live.
+   auto other_change = insn_change::delete_insn (other_insn);
+   insn_change *changes[] = { &other_change, &cc_change };
+   cc_change.move_range = cc_insn->ebb ()->insn_range ();
+   if (!restrict_movement_ignoring (cc_change, insn_is_changing (changes)))
+     {
+       if (dump_file && (dump_flags & TDF_DETAILS))
+ 	fprintf (dump_file, "-- cannot satisfy all definitions and uses\n");
+       return false;
+     }
+ 
+   // Tentatively install the new pattern.  By convention, the CC set
+   // must be first.
+   if (m_parallel)
+     {
+       XVECEXP (m_parallel, 0, 0) = cc_set;
+       XVECEXP (m_parallel, 0, 1) = other_set;
+     }
+   else
+     {
+       rtvec vec = gen_rtvec (2, cc_set, other_set);
+       m_parallel = gen_rtx_PARALLEL (VOIDmode, vec);
+     }
+   validate_change (cc_rtl, &PATTERN (cc_rtl), m_parallel, 1);
+ 
+   // These routines report failures themselves.
+   if (!recog_ignoring (attempt, cc_change, insn_is_changing (changes))
+       || !changes_are_worthwhile (changes)
+       || !crtl->ssa->verify_insn_changes (changes))
+     return false;
+ 
+   remove_reg_equal_equiv_notes (cc_rtl);
+   confirm_change_group ();
+   crtl->ssa->change_insns (changes);
+   m_parallel = NULL_RTX;
+   return true;
+ }
+ 
+ // Try to optimize the instruction that contains CC_DEF, where CC_DEF describes
+ // a definition of the CC register by CC_SET.
+ void
+ cc_fusion::optimize_cc_setter (def_info *cc_def, rtx cc_set)
+ {
+   // Search the registers used by the CC setter for an easily-substitutable
+   // def-use chain.
+   for (use_info *other_use : cc_def->insn ()->uses ())
+     if (def_info *other_def = other_use->def ())
+       if (other_use->regno () != CC_REGNUM
+ 	  && other_def->ebb () == cc_def->ebb ())
+ 	if (rtx other_set = optimizable_set (other_def->insn ()))
+ 	  {
+ 	    rtx dest = SET_DEST (other_set);
+ 	    if (REG_P (dest)
+ 		&& REGNO (dest) == other_def->regno ()
+ 		&& REG_NREGS (dest) == 1
+ 		&& parallelize_insns (cc_def, cc_set, other_def, other_set))
+ 	      return;
+ 	  }
+ }
+ 
+ // Run the pass on the current function.
+ void
+ cc_fusion::execute ()
+ {
+   // Initialization.
+   calculate_dominance_info (CDI_DOMINATORS);
+   df_analyze ();
+   crtl->ssa = new rtl_ssa::function_info (cfun);
+ 
+   // Walk through all instructions that set CC.  Look for a PTEST instruction
+   // that we can optimize.
+   //
+   // ??? The PTEST test isn't needed for correctness, but it ensures that the
+   // pass no effect on non-SVE code.
+   for (def_info *def : crtl->ssa->reg_defs (CC_REGNUM))
+     if (rtx cc_set = optimizable_set (def->insn ()))
+       if (REG_P (SET_DEST (cc_set))
+ 	  && REGNO (SET_DEST (cc_set)) == CC_REGNUM
+ 	  && GET_CODE (SET_SRC (cc_set)) == UNSPEC
+ 	  && XINT (SET_SRC (cc_set), 1) == UNSPEC_PTEST)
+ 	optimize_cc_setter (def, cc_set);
+ 
+   // Finalization.
+   crtl->ssa->perform_pending_updates ();
+   free_dominance_info (CDI_DOMINATORS);
+ }
+ 
+ class pass_cc_fusion : public rtl_opt_pass
+ {
+ public:
+   pass_cc_fusion (gcc::context *ctxt)
+     : rtl_opt_pass (pass_data_cc_fusion, ctxt)
+   {}
+ 
+   // opt_pass methods:
+   virtual bool gate (function *) { return TARGET_SVE && optimize >= 2; }
+   virtual unsigned int execute (function *);
+ };
+ 
+ unsigned int
+ pass_cc_fusion::execute (function *)
+ {
+   cc_fusion ().execute ();
+   return 0;
+ }
+ 
+ } // end namespace
+ 
+ // Create a new CC fusion pass instance.
+ 
+ rtl_opt_pass *
+ make_pass_cc_fusion (gcc::context *ctxt)
+ {
+   return new pass_cc_fusion (ctxt);
+ }
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-cores.def gcc-11.1.0/gcc/config/aarch64/aarch64-cores.def
*** gcc-10.3.0/gcc/config/aarch64/aarch64-cores.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-cores.def	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2011-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2011-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** AARCH64_CORE("cortex-a75",  cortexa75, c
*** 103,110 ****
--- 103,114 ----
  AARCH64_CORE("cortex-a76",  cortexa76, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD, neoversen1, 0x41, 0xd0b, -1)
  AARCH64_CORE("cortex-a76ae",  cortexa76ae, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS, neoversen1, 0x41, 0xd0e, -1)
  AARCH64_CORE("cortex-a77",  cortexa77, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS, neoversen1, 0x41, 0xd0d, -1)
+ AARCH64_CORE("cortex-a78",  cortexa78, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS | AARCH64_FL_PROFILE, neoversen1, 0x41, 0xd41, -1)
+ AARCH64_CORE("cortex-a78ae",  cortexa78ae, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS | AARCH64_FL_PROFILE, neoversen1, 0x41, 0xd42, -1)
+ AARCH64_CORE("cortex-a78c",  cortexa78c, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS | AARCH64_FL_PROFILE | AARCH64_FL_FLAGM | AARCH64_FL_PAUTH, neoversen1, 0x41, 0xd4b, -1)
  AARCH64_CORE("cortex-a65",  cortexa65, cortexa53, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS, cortexa73, 0x41, 0xd06, -1)
  AARCH64_CORE("cortex-a65ae",  cortexa65ae, cortexa53, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS, cortexa73, 0x41, 0xd43, -1)
+ AARCH64_CORE("cortex-x1",  cortexx1, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS | AARCH64_FL_PROFILE, neoversen1, 0x41, 0xd44, -1)
  AARCH64_CORE("ares",  ares, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_PROFILE, neoversen1, 0x41, 0xd0c, -1)
  AARCH64_CORE("neoverse-n1",  neoversen1, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_PROFILE, neoversen1, 0x41, 0xd0c, -1)
  AARCH64_CORE("neoverse-e1",  neoversee1, cortexa53, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS, cortexa73, 0x41, 0xd4a, -1)
*************** AARCH64_CORE("cortex-a73.cortex-a53",  c
*** 154,157 ****
--- 158,164 ----
  AARCH64_CORE("cortex-a75.cortex-a55",  cortexa75cortexa55, cortexa53, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD, cortexa73, 0x41, AARCH64_BIG_LITTLE (0xd0a, 0xd05), -1)
  AARCH64_CORE("cortex-a76.cortex-a55",  cortexa76cortexa55, cortexa53, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD, neoversen1, 0x41, AARCH64_BIG_LITTLE (0xd0b, 0xd05), -1)
  
+ /* Armv8-R Architecture Processors.  */
+ AARCH64_CORE("cortex-r82", cortexr82, cortexa53, 8R, AARCH64_FL_FOR_ARCH8_R, cortexa53, 0x41, 0xd15, -1)
+ 
  #undef AARCH64_CORE
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-cost-tables.h gcc-11.1.0/gcc/config/aarch64/aarch64-cost-tables.h
*** gcc-10.3.0/gcc/config/aarch64/aarch64-cost-tables.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-cost-tables.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* RTX cost tables for AArch64.
  
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* RTX cost tables for AArch64.
  
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** const struct cpu_cost_table qdf24xx_extr
*** 123,129 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1)  /* alu.  */
    }
  };
  
--- 123,130 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1),  /* alu.  */
!     COSTS_N_INSNS (4)   /* mult.  */
    }
  };
  
*************** const struct cpu_cost_table thunderx_ext
*** 227,233 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1)	/* Alu.  */
    }
  };
  
--- 228,235 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1),	/* Alu.  */
!     COSTS_N_INSNS (4)	/* mult.  */
    }
  };
  
*************** const struct cpu_cost_table thunderx2t99
*** 330,336 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1)	/* Alu.  */
    }
  };
  
--- 332,339 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1),	/* Alu.  */
!     COSTS_N_INSNS (4)	/* Mult.  */
    }
  };
  
*************** const struct cpu_cost_table thunderx3t11
*** 433,439 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1)	/* Alu.  */
    }
  };
  
--- 436,443 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1),	/* Alu.  */
!     COSTS_N_INSNS (4)	/* Mult.  */
    }
  };
  
*************** const struct cpu_cost_table tsv110_extra
*** 537,543 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1)  /* alu.  */
    }
  };
  
--- 541,548 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1),  /* alu.  */
!     COSTS_N_INSNS (4)   /* mult.  */
    }
  };
  
*************** const struct cpu_cost_table a64fx_extra_
*** 640,646 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1)  /* alu.  */
    }
  };
  
--- 645,652 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1),  /* alu.  */
!     COSTS_N_INSNS (4)   /* mult.  */
    }
  };
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-d.c gcc-11.1.0/gcc/config/aarch64/aarch64-d.c
*** gcc-10.3.0/gcc/config/aarch64/aarch64-d.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-d.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines for the D front end on the AArch64 architecture.
!    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
--- 1,5 ----
  /* Subroutines for the D front end on the AArch64 architecture.
!    Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
*************** You should have received a copy of the G
*** 15,20 ****
--- 15,22 ----
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  
+ #define IN_TARGET_CODE 1
+ 
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
*************** aarch64_d_target_versions (void)
*** 29,31 ****
--- 31,56 ----
    d_add_builtin_version ("AArch64");
    d_add_builtin_version ("D_HardFloat");
  }
+ 
+ /* Handle a call to `__traits(getTargetInfo, "floatAbi")'.  */
+ 
+ static tree
+ aarch64_d_handle_target_float_abi (void)
+ {
+   const char *abi = "hard";
+ 
+   return build_string_literal (strlen (abi) + 1, abi);
+ }
+ 
+ /* Implement TARGET_D_REGISTER_CPU_TARGET_INFO.  */
+ 
+ void
+ aarch64_d_register_target_info (void)
+ {
+   const struct d_target_info_spec handlers[] = {
+     { "floatAbi", aarch64_d_handle_target_float_abi },
+     { NULL, NULL },
+   };
+ 
+   d_add_target_info_handlers (handlers);
+ }
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-elf-raw.h gcc-11.1.0/gcc/config/aarch64/aarch64-elf-raw.h
*** gcc-10.3.0/gcc/config/aarch64/aarch64-elf-raw.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-elf-raw.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-elf.h gcc-11.1.0/gcc/config/aarch64/aarch64-elf.h
*** gcc-10.3.0/gcc/config/aarch64/aarch64-elf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-elf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-errata.h gcc-11.1.0/gcc/config/aarch64/aarch64-errata.h
*** gcc-10.3.0/gcc/config/aarch64/aarch64-errata.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-errata.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-freebsd.h gcc-11.1.0/gcc/config/aarch64/aarch64-freebsd.h
*** gcc-10.3.0/gcc/config/aarch64/aarch64-freebsd.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-freebsd.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for AArch64 running FreeBSD
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for AArch64 running FreeBSD
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-fusion-pairs.def gcc-11.1.0/gcc/config/aarch64/aarch64-fusion-pairs.def
*** gcc-10.3.0/gcc/config/aarch64/aarch64-fusion-pairs.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-fusion-pairs.def	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2015-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2015-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-ldpstp.md gcc-11.1.0/gcc/config/aarch64/aarch64-ldpstp.md
*** gcc-10.3.0/gcc/config/aarch64/aarch64-ldpstp.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-ldpstp.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; AArch64 ldp/stp peephole optimizations.
! ;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; AArch64 ldp/stp peephole optimizations.
! ;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 293,296 ****
--- 293,338 ----
      DONE;
    else
      FAIL;
+ })
+ 
+ (define_peephole2
+   [(match_scratch:DI 8 "r")
+    (set (match_operand:VP_2E 0 "memory_operand" "")
+         (match_operand:VP_2E 1 "aarch64_reg_or_zero" ""))
+    (set (match_operand:VP_2E 2 "memory_operand" "")
+         (match_operand:VP_2E 3 "aarch64_reg_or_zero" ""))
+    (set (match_operand:VP_2E 4 "memory_operand" "")
+         (match_operand:VP_2E 5 "aarch64_reg_or_zero" ""))
+    (set (match_operand:VP_2E 6 "memory_operand" "")
+         (match_operand:VP_2E 7 "aarch64_reg_or_zero" ""))
+    (match_dup 8)]
+   "TARGET_SIMD
+    && aarch64_operands_adjust_ok_for_ldpstp (operands, false, <MODE>mode)"
+   [(const_int 0)]
+ {
+   if (aarch64_gen_adjusted_ldpstp (operands, false, <MODE>mode, UNKNOWN))
+     DONE;
+   else
+     FAIL;
+ })
+ 
+ (define_peephole2
+   [(match_scratch:DI 8 "r")
+    (set (match_operand:VP_2E 0 "register_operand" "")
+         (match_operand:VP_2E 1 "memory_operand" ""))
+    (set (match_operand:VP_2E 2 "register_operand" "")
+         (match_operand:VP_2E 3 "memory_operand" ""))
+    (set (match_operand:VP_2E 4 "register_operand" "")
+         (match_operand:VP_2E 5 "memory_operand" ""))
+    (set (match_operand:VP_2E 6 "register_operand" "")
+         (match_operand:VP_2E 7 "memory_operand" ""))
+    (match_dup 8)]
+   "TARGET_SIMD
+    && aarch64_operands_adjust_ok_for_ldpstp (operands, true, <MODE>mode)"
+   [(const_int 0)]
+ {
+   if (aarch64_gen_adjusted_ldpstp (operands, true, <MODE>mode, UNKNOWN))
+     DONE;
+   else
+     FAIL;
  })
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-linux.h gcc-11.1.0/gcc/config/aarch64/aarch64-linux.h
*** gcc-10.3.0/gcc/config/aarch64/aarch64-linux.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-linux.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 64,71 ****
      }						\
    while (0)
  
- #define GNU_USER_TARGET_D_CRITSEC_SIZE 48
- 
  #define TARGET_ASM_FILE_END aarch64_file_end_indicate_exec_stack
  
  /* Uninitialized common symbols in non-PIE executables, even with
--- 64,69 ----
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-modes.def gcc-11.1.0/gcc/config/aarch64/aarch64-modes.def
*** gcc-10.3.0/gcc/config/aarch64/aarch64-modes.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-modes.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** ADJUST_NUNITS (VNx2QI, aarch64_sve_vg);
*** 136,146 ****
--- 136,148 ----
  ADJUST_NUNITS (VNx2HI, aarch64_sve_vg);
  ADJUST_NUNITS (VNx2SI, aarch64_sve_vg);
  ADJUST_NUNITS (VNx2HF, aarch64_sve_vg);
+ ADJUST_NUNITS (VNx2BF, aarch64_sve_vg);
  ADJUST_NUNITS (VNx2SF, aarch64_sve_vg);
  
  ADJUST_NUNITS (VNx4QI, aarch64_sve_vg * 2);
  ADJUST_NUNITS (VNx4HI, aarch64_sve_vg * 2);
  ADJUST_NUNITS (VNx4HF, aarch64_sve_vg * 2);
+ ADJUST_NUNITS (VNx4BF, aarch64_sve_vg * 2);
  
  ADJUST_NUNITS (VNx8QI, aarch64_sve_vg * 4);
  
*************** ADJUST_ALIGNMENT (VNx8QI, 1);
*** 151,157 ****
--- 153,161 ----
  ADJUST_ALIGNMENT (VNx2HI, 2);
  ADJUST_ALIGNMENT (VNx4HI, 2);
  ADJUST_ALIGNMENT (VNx2HF, 2);
+ ADJUST_ALIGNMENT (VNx2BF, 2);
  ADJUST_ALIGNMENT (VNx4HF, 2);
+ ADJUST_ALIGNMENT (VNx4BF, 2);
  
  ADJUST_ALIGNMENT (VNx2SI, 4);
  ADJUST_ALIGNMENT (VNx2SF, 4);
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-netbsd.h gcc-11.1.0/gcc/config/aarch64/aarch64-netbsd.h
*** gcc-10.3.0/gcc/config/aarch64/aarch64-netbsd.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-netbsd.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for AArch64 running NetBSD
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for AArch64 running NetBSD
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-option-extensions.def gcc-11.1.0/gcc/config/aarch64/aarch64-option-extensions.def
*** gcc-10.3.0/gcc/config/aarch64/aarch64-option-extensions.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-option-extensions.def	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2012-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2012-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** AARCH64_OPT_EXTENSION("f64mm", AARCH64_F
*** 226,229 ****
--- 226,235 ----
  AARCH64_OPT_EXTENSION("bf16", AARCH64_FL_BF16, \
  		      AARCH64_FL_SIMD | AARCH64_FL_FP, 0, false, "bf16")
  
+ /* Enabling/Disabling "flagm" only changes "flagm".  */
+ AARCH64_OPT_EXTENSION("flagm", AARCH64_FL_FLAGM, 0, 0, false, "flagm")
+ 
+ /* Enabling/Disabling "pauth" only changes "pauth".  */
+ AARCH64_OPT_EXTENSION("pauth", AARCH64_FL_PAUTH, 0, 0, false, "paca pacg")
+ 
  #undef AARCH64_OPT_EXTENSION
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-opts.h gcc-11.1.0/gcc/config/aarch64/aarch64-opts.h
*** gcc-10.3.0/gcc/config/aarch64/aarch64-opts.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-opts.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2011-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2011-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-passes.def gcc-11.1.0/gcc/config/aarch64/aarch64-passes.def
*** gcc-10.3.0/gcc/config/aarch64/aarch64-passes.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-passes.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* AArch64-specific passes declarations.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* AArch64-specific passes declarations.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** INSERT_PASS_AFTER (pass_regrename, 1, pa
*** 22,24 ****
--- 22,25 ----
  INSERT_PASS_BEFORE (pass_reorder_blocks, 1, pass_track_speculation);
  INSERT_PASS_AFTER (pass_machine_reorg, 1, pass_tag_collision_avoidance);
  INSERT_PASS_BEFORE (pass_shorten_branches, 1, pass_insert_bti);
+ INSERT_PASS_AFTER (pass_if_after_combine, 1, pass_cc_fusion);
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-protos.h gcc-11.1.0/gcc/config/aarch64/aarch64-protos.h
*** gcc-10.3.0/gcc/config/aarch64/aarch64-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** struct cpu_addrcost_table
*** 177,182 ****
--- 177,184 ----
    const struct scale_addr_mode_cost addr_scale_costs;
    const int pre_modify;
    const int post_modify;
+   const int post_modify_ld3_st3;
+   const int post_modify_ld4_st4;
    const int register_offset;
    const int register_sextend;
    const int register_zextend;
*************** struct cpu_regmove_cost
*** 192,224 ****
    const int FP2FP;
  };
  
  /* Cost for vector insn classes.  */
  struct cpu_vector_cost
  {
!   const int scalar_int_stmt_cost;	 /* Cost of any int scalar operation,
! 					    excluding load and store.  */
!   const int scalar_fp_stmt_cost;	 /* Cost of any fp scalar operation,
! 					    excluding load and store.  */
!   const int scalar_load_cost;		 /* Cost of scalar load.  */
!   const int scalar_store_cost;		 /* Cost of scalar store.  */
!   const int vec_int_stmt_cost;		 /* Cost of any int vector operation,
! 					    excluding load, store, permute,
! 					    vector-to-scalar and
! 					    scalar-to-vector operation.  */
!   const int vec_fp_stmt_cost;		 /* Cost of any fp vector operation,
! 					    excluding load, store, permute,
! 					    vector-to-scalar and
! 					    scalar-to-vector operation.  */
!   const int vec_permute_cost;		 /* Cost of permute operation.  */
!   const int vec_to_scalar_cost;		 /* Cost of vec-to-scalar operation.  */
!   const int scalar_to_vec_cost;		 /* Cost of scalar-to-vector
! 					    operation.  */
!   const int vec_align_load_cost;	 /* Cost of aligned vector load.  */
!   const int vec_unalign_load_cost;	 /* Cost of unaligned vector load.  */
!   const int vec_unalign_store_cost;	 /* Cost of unaligned vector store.  */
!   const int vec_store_cost;		 /* Cost of vector store.  */
!   const int cond_taken_branch_cost;	 /* Cost of taken branch.  */
!   const int cond_not_taken_branch_cost;  /* Cost of not taken branch.  */
  };
  
  /* Branch costs.  */
--- 194,459 ----
    const int FP2FP;
  };
  
+ struct simd_vec_cost
+ {
+   /* Cost of any integer vector operation, excluding the ones handled
+      specially below.  */
+   const int int_stmt_cost;
+ 
+   /* Cost of any fp vector operation, excluding the ones handled
+      specially below.  */
+   const int fp_stmt_cost;
+ 
+   /* Per-vector cost of permuting vectors after an LD2, LD3 or LD4,
+      as well as the per-vector cost of permuting vectors before
+      an ST2, ST3 or ST4.  */
+   const int ld2_st2_permute_cost;
+   const int ld3_st3_permute_cost;
+   const int ld4_st4_permute_cost;
+ 
+   /* Cost of a permute operation.  */
+   const int permute_cost;
+ 
+   /* Cost of reductions for various vector types: iN is for N-bit
+      integer elements and fN is for N-bit floating-point elements.
+      We need to single out the element type because it affects the
+      depth of the reduction.  */
+   const int reduc_i8_cost;
+   const int reduc_i16_cost;
+   const int reduc_i32_cost;
+   const int reduc_i64_cost;
+   const int reduc_f16_cost;
+   const int reduc_f32_cost;
+   const int reduc_f64_cost;
+ 
+   /* Additional cost of storing a single vector element, on top of the
+      normal cost of a scalar store.  */
+   const int store_elt_extra_cost;
+ 
+   /* Cost of a vector-to-scalar operation.  */
+   const int vec_to_scalar_cost;
+ 
+   /* Cost of a scalar-to-vector operation.  */
+   const int scalar_to_vec_cost;
+ 
+   /* Cost of an aligned vector load.  */
+   const int align_load_cost;
+ 
+   /* Cost of an unaligned vector load.  */
+   const int unalign_load_cost;
+ 
+   /* Cost of an unaligned vector store.  */
+   const int unalign_store_cost;
+ 
+   /* Cost of a vector store.  */
+   const int store_cost;
+ };
+ 
+ typedef struct simd_vec_cost advsimd_vec_cost;
+ 
+ /* SVE-specific extensions to the information provided by simd_vec_cost.  */
+ struct sve_vec_cost : simd_vec_cost
+ {
+   constexpr sve_vec_cost (const simd_vec_cost &base,
+ 			  unsigned int clast_cost,
+ 			  unsigned int fadda_f16_cost,
+ 			  unsigned int fadda_f32_cost,
+ 			  unsigned int fadda_f64_cost,
+ 			  unsigned int scatter_store_elt_cost)
+     : simd_vec_cost (base),
+       clast_cost (clast_cost),
+       fadda_f16_cost (fadda_f16_cost),
+       fadda_f32_cost (fadda_f32_cost),
+       fadda_f64_cost (fadda_f64_cost),
+       scatter_store_elt_cost (scatter_store_elt_cost)
+   {}
+ 
+   /* The cost of a vector-to-scalar CLASTA or CLASTB instruction,
+      with the scalar being stored in FP registers.  This cost is
+      assumed to be a cycle latency.  */
+   const int clast_cost;
+ 
+   /* The costs of FADDA for the three data types that it supports.
+      These costs are assumed to be cycle latencies.  */
+   const int fadda_f16_cost;
+   const int fadda_f32_cost;
+   const int fadda_f64_cost;
+ 
+   /* The per-element cost of a scatter store.  */
+   const int scatter_store_elt_cost;
+ };
+ 
+ /* Base information about how the CPU issues code, containing
+    information that is relevant to scalar, Advanced SIMD and SVE
+    operations.
+ 
+    The structure uses the general term "operation" to refer to
+    whichever subdivision of an instruction makes sense for the CPU.
+    These operations would typically be micro operations or macro
+    operations.
+ 
+    Note that this structure and the ones derived from it are only
+    as general as they need to be for the CPUs that currently use them.
+    They will probably need to be extended or refined as more CPUs are
+    added.  */
+ struct aarch64_base_vec_issue_info
+ {
+   /* How many loads and stores can be issued per cycle.  */
+   const unsigned int loads_stores_per_cycle;
+ 
+   /* How many stores can be issued per cycle.  */
+   const unsigned int stores_per_cycle;
+ 
+   /* How many integer or FP/SIMD operations can be issued per cycle.
+ 
+      Currently we don't try to distinguish the two.  For vector code,
+      we only really track FP/SIMD operations during vector costing;
+      we don't for example try to cost arithmetic operations like
+      address calculations, which are only decided later during ivopts.
+ 
+      For scalar code, we effectively assume that code operates entirely
+      on integers or entirely on floating-point values.  Again, we don't
+      try to take address calculations into account.
+ 
+      This is not very precise, but it's only meant to be a heuristic.
+      We could certainly try to do better in future if there's an example
+      of something that would benefit.  */
+   const unsigned int general_ops_per_cycle;
+ 
+   /* How many FP/SIMD operations to count for a floating-point or
+      vector load operation.
+ 
+      When constructing an Advanced SIMD vector from elements that have
+      been loaded from memory, these values apply to each individual load.
+      When using an SVE gather load, the values apply to each element of
+      the gather.  */
+   const unsigned int fp_simd_load_general_ops;
+ 
+   /* How many FP/SIMD operations to count for a floating-point or
+      vector store operation.
+ 
+      When storing individual elements of an Advanced SIMD vector out to
+      memory, these values apply to each individual store.  When using an
+      SVE scatter store, these values apply to each element of the scatter.  */
+   const unsigned int fp_simd_store_general_ops;
+ };
+ 
+ using aarch64_scalar_vec_issue_info = aarch64_base_vec_issue_info;
+ 
+ /* Base information about the issue stage for vector operations.
+    This structure contains information that is relevant to both
+    Advanced SIMD and SVE.  */
+ struct aarch64_simd_vec_issue_info : aarch64_base_vec_issue_info
+ {
+   constexpr aarch64_simd_vec_issue_info (aarch64_base_vec_issue_info base,
+ 					 unsigned int ld2_st2_general_ops,
+ 					 unsigned int ld3_st3_general_ops,
+ 					 unsigned int ld4_st4_general_ops)
+     : aarch64_base_vec_issue_info (base),
+       ld2_st2_general_ops (ld2_st2_general_ops),
+       ld3_st3_general_ops (ld3_st3_general_ops),
+       ld4_st4_general_ops (ld4_st4_general_ops)
+   {}
+ 
+   /* How many FP/SIMD operations to count for each vector loaded or
+      stored by an LD[234] or ST[234] operation, in addition to the
+      base costs given in the parent class.  For example, the full
+      number of operations for an LD3 would be:
+ 
+        load ops:    3
+        general ops: 3 * (fp_simd_load_general_ops + ld3_st3_general_ops).  */
+   const unsigned int ld2_st2_general_ops;
+   const unsigned int ld3_st3_general_ops;
+   const unsigned int ld4_st4_general_ops;
+ };
+ 
+ using aarch64_advsimd_vec_issue_info = aarch64_simd_vec_issue_info;
+ 
+ /* Information about the issue stage for SVE.  The main thing this adds
+    is a concept of "predicate operations".  */
+ struct aarch64_sve_vec_issue_info : aarch64_simd_vec_issue_info
+ {
+   constexpr aarch64_sve_vec_issue_info
+     (aarch64_simd_vec_issue_info base,
+      unsigned int pred_ops_per_cycle,
+      unsigned int while_pred_ops,
+      unsigned int int_cmp_pred_ops,
+      unsigned int fp_cmp_pred_ops,
+      unsigned int gather_scatter_pair_general_ops,
+      unsigned int gather_scatter_pair_pred_ops)
+     : aarch64_simd_vec_issue_info (base),
+       pred_ops_per_cycle (pred_ops_per_cycle),
+       while_pred_ops (while_pred_ops),
+       int_cmp_pred_ops (int_cmp_pred_ops),
+       fp_cmp_pred_ops (fp_cmp_pred_ops),
+       gather_scatter_pair_general_ops (gather_scatter_pair_general_ops),
+       gather_scatter_pair_pred_ops (gather_scatter_pair_pred_ops)
+   {}
+ 
+   /* How many predicate operations can be issued per cycle.  */
+   const unsigned int pred_ops_per_cycle;
+ 
+   /* How many predicate operations are generated by a WHILExx
+      instruction.  */
+   const unsigned int while_pred_ops;
+ 
+   /* How many predicate operations are generated by an integer
+      comparison instruction.  */
+   const unsigned int int_cmp_pred_ops;
+ 
+   /* How many predicate operations are generated by a floating-point
+      comparison instruction.  */
+   const unsigned int fp_cmp_pred_ops;
+ 
+   /* How many general and predicate operations are generated by each pair
+      of elements in a gather load or scatter store.  These values apply
+      on top of the per-element counts recorded in fp_simd_load_general_ops
+      and fp_simd_store_general_ops.
+ 
+      The reason for using pairs is that that is the largest possible
+      granule size for 128-bit SVE, which can load and store 2 64-bit
+      elements or 4 32-bit elements.  */
+   const unsigned int gather_scatter_pair_general_ops;
+   const unsigned int gather_scatter_pair_pred_ops;
+ };
+ 
+ /* Information related to instruction issue for a particular CPU.  */
+ struct aarch64_vec_issue_info
+ {
+   const aarch64_base_vec_issue_info *const scalar;
+   const aarch64_simd_vec_issue_info *const advsimd;
+   const aarch64_sve_vec_issue_info *const sve;
+ };
+ 
  /* Cost for vector insn classes.  */
  struct cpu_vector_cost
  {
!   /* Cost of any integer scalar operation, excluding load and store.  */
!   const int scalar_int_stmt_cost;
! 
!   /* Cost of any fp scalar operation, excluding load and store.  */
!   const int scalar_fp_stmt_cost;
! 
!   /* Cost of a scalar load.  */
!   const int scalar_load_cost;
! 
!   /* Cost of a scalar store.  */
!   const int scalar_store_cost;
! 
!   /* Cost of a taken branch.  */
!   const int cond_taken_branch_cost;
! 
!   /* Cost of a not-taken branch.  */
!   const int cond_not_taken_branch_cost;
! 
!   /* Cost of an Advanced SIMD operations.  */
!   const advsimd_vec_cost *advsimd;
! 
!   /* Cost of an SVE operations, or null if SVE is not implemented.  */
!   const sve_vec_cost *sve;
! 
!   /* Issue information, or null if none is provided.  */
!   const aarch64_vec_issue_info *const issue_info;
  };
  
  /* Branch costs.  */
*************** bool aarch64_emit_approx_div (rtx, rtx,
*** 510,515 ****
--- 745,751 ----
  bool aarch64_emit_approx_sqrt (rtx, rtx, bool);
  void aarch64_expand_call (rtx, rtx, rtx, bool);
  bool aarch64_expand_cpymem (rtx *);
+ bool aarch64_expand_setmem (rtx *);
  bool aarch64_float_const_zero_rtx_p (rtx);
  bool aarch64_float_const_rtx_p (rtx);
  bool aarch64_function_arg_regno_p (unsigned);
*************** void aarch64_split_compare_and_swap (rtx
*** 701,707 ****
  
  void aarch64_split_atomic_op (enum rtx_code, rtx, rtx, rtx, rtx, rtx, rtx);
  
! bool aarch64_gen_adjusted_ldpstp (rtx *, bool, scalar_mode, RTX_CODE);
  
  void aarch64_expand_sve_vec_cmp_int (rtx, rtx_code, rtx, rtx);
  bool aarch64_expand_sve_vec_cmp_float (rtx, rtx_code, rtx, rtx, bool);
--- 937,943 ----
  
  void aarch64_split_atomic_op (enum rtx_code, rtx, rtx, rtx, rtx, rtx, rtx);
  
! bool aarch64_gen_adjusted_ldpstp (rtx *, bool, machine_mode, RTX_CODE);
  
  void aarch64_expand_sve_vec_cmp_int (rtx, rtx_code, rtx, rtx);
  bool aarch64_expand_sve_vec_cmp_float (rtx, rtx_code, rtx, rtx, bool);
*************** int aarch64_ccmp_mode_to_code (machine_m
*** 752,758 ****
  
  bool extract_base_offset_in_addr (rtx mem, rtx *base, rtx *offset);
  bool aarch64_operands_ok_for_ldpstp (rtx *, bool, machine_mode);
! bool aarch64_operands_adjust_ok_for_ldpstp (rtx *, bool, scalar_mode);
  void aarch64_swap_ldrstr_operands (rtx *, bool);
  
  extern void aarch64_asm_output_pool_epilogue (FILE *, const char *,
--- 988,994 ----
  
  bool extract_base_offset_in_addr (rtx mem, rtx *base, rtx *offset);
  bool aarch64_operands_ok_for_ldpstp (rtx *, bool, machine_mode);
! bool aarch64_operands_adjust_ok_for_ldpstp (rtx *, bool, machine_mode);
  void aarch64_swap_ldrstr_operands (rtx *, bool);
  
  extern void aarch64_asm_output_pool_epilogue (FILE *, const char *,
*************** std::string aarch64_get_extension_string
*** 775,785 ****
--- 1011,1023 ----
  
  /* Defined in aarch64-d.c  */
  extern void aarch64_d_target_versions (void);
+ extern void aarch64_d_register_target_info (void);
  
  rtl_opt_pass *make_pass_fma_steering (gcc::context *);
  rtl_opt_pass *make_pass_track_speculation (gcc::context *);
  rtl_opt_pass *make_pass_tag_collision_avoidance (gcc::context *);
  rtl_opt_pass *make_pass_insert_bti (gcc::context *ctxt);
+ rtl_opt_pass *make_pass_cc_fusion (gcc::context *ctxt);
  
  poly_uint64 aarch64_regmode_natural_size (machine_mode);
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-simd-builtin-types.def gcc-11.1.0/gcc/config/aarch64/aarch64-simd-builtin-types.def
*** gcc-10.3.0/gcc/config/aarch64/aarch64-simd-builtin-types.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-simd-builtin-types.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Builtin AdvSIMD types.
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Builtin AdvSIMD types.
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-simd-builtins.def gcc-11.1.0/gcc/config/aarch64/aarch64-simd-builtins.def
*** gcc-10.3.0/gcc/config/aarch64/aarch64-simd-builtins.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-simd-builtins.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2012-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2012-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 37,739 ****
     macro holding the RTL pattern for the intrinsic.  This mapping is:
     0 - CODE_FOR_aarch64_<name><mode>
     1-9 - CODE_FOR_<name><mode><1-9>
!    10 - CODE_FOR_<name><mode>.  */
  
!   BUILTIN_VDC (COMBINE, combine, 0)
!   VAR1 (COMBINEP, combine, 0, di)
!   BUILTIN_VB (BINOP, pmul, 0)
!   BUILTIN_VHSDF_HSDF (BINOP, fmulx, 0)
!   BUILTIN_VHSDF_DF (UNOP, sqrt, 2)
!   BUILTIN_VD_BHSI (BINOP, addp, 0)
!   VAR1 (UNOP, addp, 0, di)
!   BUILTIN_VDQ_BHSI (UNOP, clrsb, 2)
!   BUILTIN_VDQ_BHSI (UNOP, clz, 2)
!   BUILTIN_VS (UNOP, ctz, 2)
!   BUILTIN_VB (UNOP, popcount, 2)
  
    /* Implemented by aarch64_<sur>q<r>shl<mode>.  */
!   BUILTIN_VSDQ_I (BINOP, sqshl, 0)
!   BUILTIN_VSDQ_I (BINOP_UUS, uqshl, 0)
!   BUILTIN_VSDQ_I (BINOP, sqrshl, 0)
!   BUILTIN_VSDQ_I (BINOP_UUS, uqrshl, 0)
    /* Implemented by aarch64_<su_optab><optab><mode>.  */
!   BUILTIN_VSDQ_I (BINOP, sqadd, 0)
!   BUILTIN_VSDQ_I (BINOPU, uqadd, 0)
!   BUILTIN_VSDQ_I (BINOP, sqsub, 0)
!   BUILTIN_VSDQ_I (BINOPU, uqsub, 0)
    /* Implemented by aarch64_<sur>qadd<mode>.  */
!   BUILTIN_VSDQ_I (BINOP_SSU, suqadd, 0)
!   BUILTIN_VSDQ_I (BINOP_UUS, usqadd, 0)
  
    /* Implemented by aarch64_get_dreg<VSTRUCT:mode><VDC:mode>.  */
!   BUILTIN_VDC (GETREG, get_dregoi, 0)
!   BUILTIN_VDC (GETREG, get_dregci, 0)
!   BUILTIN_VDC (GETREG, get_dregxi, 0)
!   VAR1 (GETREGP, get_dregoi, 0, di)
!   VAR1 (GETREGP, get_dregci, 0, di)
!   VAR1 (GETREGP, get_dregxi, 0, di)
    /* Implemented by aarch64_get_qreg<VSTRUCT:mode><VQ:mode>.  */
!   BUILTIN_VQ (GETREG, get_qregoi, 0)
!   BUILTIN_VQ (GETREG, get_qregci, 0)
!   BUILTIN_VQ (GETREG, get_qregxi, 0)
!   VAR1 (GETREGP, get_qregoi, 0, v2di)
!   VAR1 (GETREGP, get_qregci, 0, v2di)
!   VAR1 (GETREGP, get_qregxi, 0, v2di)
    /* Implemented by aarch64_set_qreg<VSTRUCT:mode><VQ:mode>.  */
!   BUILTIN_VQ (SETREG, set_qregoi, 0)
!   BUILTIN_VQ (SETREG, set_qregci, 0)
!   BUILTIN_VQ (SETREG, set_qregxi, 0)
!   VAR1 (SETREGP, set_qregoi, 0, v2di)
!   VAR1 (SETREGP, set_qregci, 0, v2di)
!   VAR1 (SETREGP, set_qregxi, 0, v2di)
    /* Implemented by aarch64_ld1x2<VQ:mode>. */
!   BUILTIN_VQ (LOADSTRUCT, ld1x2, 0)
    /* Implemented by aarch64_ld1x2<VDC:mode>. */
!   BUILTIN_VDC (LOADSTRUCT, ld1x2, 0)
    /* Implemented by aarch64_ld<VSTRUCT:nregs><VDC:mode>.  */
!   BUILTIN_VDC (LOADSTRUCT, ld2, 0)
!   BUILTIN_VDC (LOADSTRUCT, ld3, 0)
!   BUILTIN_VDC (LOADSTRUCT, ld4, 0)
    /* Implemented by aarch64_ld<VSTRUCT:nregs><VQ:mode>.  */
!   BUILTIN_VQ (LOADSTRUCT, ld2, 0)
!   BUILTIN_VQ (LOADSTRUCT, ld3, 0)
!   BUILTIN_VQ (LOADSTRUCT, ld4, 0)
    /* Implemented by aarch64_ld<VSTRUCT:nregs>r<VALLDIF:mode>.  */
!   BUILTIN_VALLDIF (LOADSTRUCT, ld2r, 0)
!   BUILTIN_VALLDIF (LOADSTRUCT, ld3r, 0)
!   BUILTIN_VALLDIF (LOADSTRUCT, ld4r, 0)
    /* Implemented by aarch64_ld<VSTRUCT:nregs>_lane<VQ:mode>.  */
!   BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld2_lane, 0)
!   BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld3_lane, 0)
!   BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld4_lane, 0)
    /* Implemented by aarch64_st<VSTRUCT:nregs><VDC:mode>.  */
!   BUILTIN_VDC (STORESTRUCT, st2, 0)
!   BUILTIN_VDC (STORESTRUCT, st3, 0)
!   BUILTIN_VDC (STORESTRUCT, st4, 0)
    /* Implemented by aarch64_st<VSTRUCT:nregs><VQ:mode>.  */
!   BUILTIN_VQ (STORESTRUCT, st2, 0)
!   BUILTIN_VQ (STORESTRUCT, st3, 0)
!   BUILTIN_VQ (STORESTRUCT, st4, 0)
  
!   BUILTIN_VALLDIF (STORESTRUCT_LANE, st2_lane, 0)
!   BUILTIN_VALLDIF (STORESTRUCT_LANE, st3_lane, 0)
!   BUILTIN_VALLDIF (STORESTRUCT_LANE, st4_lane, 0)
  
!   BUILTIN_VQW (BINOP, saddl2, 0)
!   BUILTIN_VQW (BINOP, uaddl2, 0)
!   BUILTIN_VQW (BINOP, ssubl2, 0)
!   BUILTIN_VQW (BINOP, usubl2, 0)
!   BUILTIN_VQW (BINOP, saddw2, 0)
!   BUILTIN_VQW (BINOP, uaddw2, 0)
!   BUILTIN_VQW (BINOP, ssubw2, 0)
!   BUILTIN_VQW (BINOP, usubw2, 0)
    /* Implemented by aarch64_<ANY_EXTEND:su><ADDSUB:optab>l<mode>.  */
!   BUILTIN_VD_BHSI (BINOP, saddl, 0)
!   BUILTIN_VD_BHSI (BINOP, uaddl, 0)
!   BUILTIN_VD_BHSI (BINOP, ssubl, 0)
!   BUILTIN_VD_BHSI (BINOP, usubl, 0)
    /* Implemented by aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>.  */
!   BUILTIN_VD_BHSI (BINOP, saddw, 0)
!   BUILTIN_VD_BHSI (BINOP, uaddw, 0)
!   BUILTIN_VD_BHSI (BINOP, ssubw, 0)
!   BUILTIN_VD_BHSI (BINOP, usubw, 0)
    /* Implemented by aarch64_<sur>h<addsub><mode>.  */
!   BUILTIN_VDQ_BHSI (BINOP, shadd, 0)
!   BUILTIN_VDQ_BHSI (BINOP, shsub, 0)
!   BUILTIN_VDQ_BHSI (BINOP, uhadd, 0)
!   BUILTIN_VDQ_BHSI (BINOP, uhsub, 0)
!   BUILTIN_VDQ_BHSI (BINOP, srhadd, 0)
!   BUILTIN_VDQ_BHSI (BINOP, urhadd, 0)
    /* Implemented by aarch64_<sur><addsub>hn<mode>.  */
!   BUILTIN_VQN (BINOP, addhn, 0)
!   BUILTIN_VQN (BINOP, subhn, 0)
!   BUILTIN_VQN (BINOP, raddhn, 0)
!   BUILTIN_VQN (BINOP, rsubhn, 0)
    /* Implemented by aarch64_<sur><addsub>hn2<mode>.  */
!   BUILTIN_VQN (TERNOP, addhn2, 0)
!   BUILTIN_VQN (TERNOP, subhn2, 0)
!   BUILTIN_VQN (TERNOP, raddhn2, 0)
!   BUILTIN_VQN (TERNOP, rsubhn2, 0)
  
-   BUILTIN_VSQN_HSDI (UNOPUS, sqmovun, 0)
    /* Implemented by aarch64_<sur>qmovn<mode>.  */
!   BUILTIN_VSQN_HSDI (UNOP, sqmovn, 0)
!   BUILTIN_VSQN_HSDI (UNOP, uqmovn, 0)
    /* Implemented by aarch64_s<optab><mode>.  */
!   BUILTIN_VSDQ_I (UNOP, sqabs, 0)
!   BUILTIN_VSDQ_I (UNOP, sqneg, 0)
  
    /* Implemented by aarch64_sqdml<SBINQOPS:as>l<mode>.  */
!   BUILTIN_VSD_HSI (TERNOP, sqdmlal, 0)
!   BUILTIN_VSD_HSI (TERNOP, sqdmlsl, 0)
    /* Implemented by aarch64_sqdml<SBINQOPS:as>l_lane<mode>.  */
!   BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlal_lane, 0)
!   BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlsl_lane, 0)
    /* Implemented by aarch64_sqdml<SBINQOPS:as>l_laneq<mode>.  */
!   BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlal_laneq, 0)
!   BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlsl_laneq, 0)
    /* Implemented by aarch64_sqdml<SBINQOPS:as>l_n<mode>.  */
!   BUILTIN_VD_HSI (TERNOP, sqdmlal_n, 0)
!   BUILTIN_VD_HSI (TERNOP, sqdmlsl_n, 0)
  
!   BUILTIN_VQ_HSI (TERNOP, sqdmlal2, 0)
!   BUILTIN_VQ_HSI (TERNOP, sqdmlsl2, 0)
!   BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlal2_lane, 0)
!   BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlsl2_lane, 0)
!   BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlal2_laneq, 0)
!   BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlsl2_laneq, 0)
!   BUILTIN_VQ_HSI (TERNOP, sqdmlal2_n, 0)
!   BUILTIN_VQ_HSI (TERNOP, sqdmlsl2_n, 0)
  
!   BUILTIN_VD_BHSI (BINOP, intrinsic_vec_smult_lo_, 0)
!   BUILTIN_VD_BHSI (BINOPU, intrinsic_vec_umult_lo_, 0)
  
!   BUILTIN_VQW (BINOP, vec_widen_smult_hi_, 10)
!   BUILTIN_VQW (BINOPU, vec_widen_umult_hi_, 10)
  
!   BUILTIN_VD_HSI (TERNOP_LANE, vec_smult_lane_, 0)
!   BUILTIN_VD_HSI (QUADOP_LANE, vec_smlal_lane_, 0)
!   BUILTIN_VD_HSI (TERNOP_LANE, vec_smult_laneq_, 0)
!   BUILTIN_VD_HSI (QUADOP_LANE, vec_smlal_laneq_, 0)
!   BUILTIN_VD_HSI (TERNOPU_LANE, vec_umult_lane_, 0)
!   BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlal_lane_, 0)
!   BUILTIN_VD_HSI (TERNOPU_LANE, vec_umult_laneq_, 0)
!   BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlal_laneq_, 0)
  
!   BUILTIN_VSD_HSI (BINOP, sqdmull, 0)
!   BUILTIN_VSD_HSI (TERNOP_LANE, sqdmull_lane, 0)
!   BUILTIN_VSD_HSI (TERNOP_LANE, sqdmull_laneq, 0)
!   BUILTIN_VD_HSI (BINOP, sqdmull_n, 0)
!   BUILTIN_VQ_HSI (BINOP, sqdmull2, 0)
!   BUILTIN_VQ_HSI (TERNOP_LANE, sqdmull2_lane, 0)
!   BUILTIN_VQ_HSI (TERNOP_LANE, sqdmull2_laneq, 0)
!   BUILTIN_VQ_HSI (BINOP, sqdmull2_n, 0)
    /* Implemented by aarch64_sq<r>dmulh<mode>.  */
!   BUILTIN_VSDQ_HSI (BINOP, sqdmulh, 0)
!   BUILTIN_VSDQ_HSI (BINOP, sqrdmulh, 0)
    /* Implemented by aarch64_sq<r>dmulh_lane<q><mode>.  */
!   BUILTIN_VSDQ_HSI (TERNOP_LANE, sqdmulh_lane, 0)
!   BUILTIN_VSDQ_HSI (TERNOP_LANE, sqdmulh_laneq, 0)
!   BUILTIN_VSDQ_HSI (TERNOP_LANE, sqrdmulh_lane, 0)
!   BUILTIN_VSDQ_HSI (TERNOP_LANE, sqrdmulh_laneq, 0)
  
!   BUILTIN_VSDQ_I_DI (BINOP, ashl, 3)
    /* Implemented by aarch64_<sur>shl<mode>.  */
!   BUILTIN_VSDQ_I_DI (BINOP, sshl, 0)
!   BUILTIN_VSDQ_I_DI (BINOP_UUS, ushl, 0)
!   BUILTIN_VSDQ_I_DI (BINOP, srshl, 0)
!   BUILTIN_VSDQ_I_DI (BINOP_UUS, urshl, 0)
  
    /* Implemented by aarch64_<sur><dotprod>{_lane}{q}<dot_mode>.  */
!   BUILTIN_VB (TERNOP, sdot, 0)
!   BUILTIN_VB (TERNOPU, udot, 0)
!   BUILTIN_VB (TERNOP_SSUS, usdot, 0)
!   BUILTIN_VB (QUADOP_LANE, sdot_lane, 0)
!   BUILTIN_VB (QUADOPU_LANE, udot_lane, 0)
!   BUILTIN_VB (QUADOP_LANE, sdot_laneq, 0)
!   BUILTIN_VB (QUADOPU_LANE, udot_laneq, 0)
!   BUILTIN_VB (QUADOPSSUS_LANE_QUADTUP, usdot_lane, 0)
!   BUILTIN_VB (QUADOPSSUS_LANE_QUADTUP, usdot_laneq, 0)
!   BUILTIN_VB (QUADOPSSSU_LANE_QUADTUP, sudot_lane, 0)
!   BUILTIN_VB (QUADOPSSSU_LANE_QUADTUP, sudot_laneq, 0)
  
    /* Implemented by aarch64_fcadd<rot><mode>.   */
!   BUILTIN_VHSDF (BINOP, fcadd90, 0)
!   BUILTIN_VHSDF (BINOP, fcadd270, 0)
  
    /* Implemented by aarch64_fcmla{_lane}{q}<rot><mode>.   */
!   BUILTIN_VHSDF (TERNOP, fcmla0, 0)
!   BUILTIN_VHSDF (TERNOP, fcmla90, 0)
!   BUILTIN_VHSDF (TERNOP, fcmla180, 0)
!   BUILTIN_VHSDF (TERNOP, fcmla270, 0)
!   BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane0, 0)
!   BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane90, 0)
!   BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane180, 0)
!   BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane270, 0)
  
!   BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane0, 0)
!   BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane90, 0)
!   BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane180, 0)
!   BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane270, 0)
  
!   BUILTIN_VDQ_I (SHIFTIMM, ashr, 3)
!   VAR1 (SHIFTIMM, ashr_simd, 0, di)
!   BUILTIN_VDQ_I (SHIFTIMM, lshr, 3)
!   VAR1 (USHIFTIMM, lshr_simd, 0, di)
    /* Implemented by aarch64_<sur>shr_n<mode>.  */
!   BUILTIN_VSDQ_I_DI (SHIFTIMM, srshr_n, 0)
!   BUILTIN_VSDQ_I_DI (USHIFTIMM, urshr_n, 0)
    /* Implemented by aarch64_<sur>sra_n<mode>.  */
!   BUILTIN_VSDQ_I_DI (SHIFTACC, ssra_n, 0)
!   BUILTIN_VSDQ_I_DI (USHIFTACC, usra_n, 0)
!   BUILTIN_VSDQ_I_DI (SHIFTACC, srsra_n, 0)
!   BUILTIN_VSDQ_I_DI (USHIFTACC, ursra_n, 0)
    /* Implemented by aarch64_<sur>shll_n<mode>.  */
!   BUILTIN_VD_BHSI (SHIFTIMM, sshll_n, 0)
!   BUILTIN_VD_BHSI (USHIFTIMM, ushll_n, 0)
    /* Implemented by aarch64_<sur>shll2_n<mode>.  */
!   BUILTIN_VQW (SHIFTIMM, sshll2_n, 0)
!   BUILTIN_VQW (SHIFTIMM, ushll2_n, 0)
    /* Implemented by aarch64_<sur>q<r>shr<u>n_n<mode>.  */
!   BUILTIN_VSQN_HSDI (SHIFTIMM, sqshrun_n, 0)
!   BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrun_n, 0)
!   BUILTIN_VSQN_HSDI (SHIFTIMM, sqshrn_n, 0)
!   BUILTIN_VSQN_HSDI (USHIFTIMM, uqshrn_n, 0)
!   BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrn_n, 0)
!   BUILTIN_VSQN_HSDI (USHIFTIMM, uqrshrn_n, 0)
    /* Implemented by aarch64_<sur>s<lr>i_n<mode>.  */
!   BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssri_n, 0)
!   BUILTIN_VSDQ_I_DI (USHIFTACC, usri_n, 0)
!   BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssli_n, 0)
!   VAR2 (SHIFTINSERTP, ssli_n, 0, di, v2di)
!   BUILTIN_VSDQ_I_DI (USHIFTACC, usli_n, 0)
    /* Implemented by aarch64_<sur>qshl<u>_n<mode>.  */
!   BUILTIN_VSDQ_I (SHIFTIMM_USS, sqshlu_n, 0)
!   BUILTIN_VSDQ_I (SHIFTIMM, sqshl_n, 0)
!   BUILTIN_VSDQ_I (USHIFTIMM, uqshl_n, 0)
  
    /* Implemented by aarch64_reduc_plus_<mode>.  */
!   BUILTIN_VALL (UNOP, reduc_plus_scal_, 10)
  
    /* Implemented by reduc_<maxmin_uns>_scal_<mode> (producing scalar).  */
!   BUILTIN_VDQIF_F16 (UNOP, reduc_smax_scal_, 10)
!   BUILTIN_VDQIF_F16 (UNOP, reduc_smin_scal_, 10)
!   BUILTIN_VDQ_BHSI (UNOPU, reduc_umax_scal_, 10)
!   BUILTIN_VDQ_BHSI (UNOPU, reduc_umin_scal_, 10)
!   BUILTIN_VHSDF (UNOP, reduc_smax_nan_scal_, 10)
!   BUILTIN_VHSDF (UNOP, reduc_smin_nan_scal_, 10)
  
    /* Implemented by <maxmin_uns><mode>3.
       smax variants map to fmaxnm,
       smax_nan variants map to fmax.  */
!   BUILTIN_VDQ_BHSI (BINOP, smax, 3)
!   BUILTIN_VDQ_BHSI (BINOP, smin, 3)
!   BUILTIN_VDQ_BHSI (BINOP, umax, 3)
!   BUILTIN_VDQ_BHSI (BINOP, umin, 3)
!   BUILTIN_VHSDF_DF (BINOP, smax_nan, 3)
!   BUILTIN_VHSDF_DF (BINOP, smin_nan, 3)
  
    /* Implemented by <maxmin_uns><mode>3.  */
!   BUILTIN_VHSDF_HSDF (BINOP, fmax, 3)
!   BUILTIN_VHSDF_HSDF (BINOP, fmin, 3)
  
    /* Implemented by aarch64_<maxmin_uns>p<mode>.  */
!   BUILTIN_VDQ_BHSI (BINOP, smaxp, 0)
!   BUILTIN_VDQ_BHSI (BINOP, sminp, 0)
!   BUILTIN_VDQ_BHSI (BINOP, umaxp, 0)
!   BUILTIN_VDQ_BHSI (BINOP, uminp, 0)
!   BUILTIN_VHSDF (BINOP, smaxp, 0)
!   BUILTIN_VHSDF (BINOP, sminp, 0)
!   BUILTIN_VHSDF (BINOP, smax_nanp, 0)
!   BUILTIN_VHSDF (BINOP, smin_nanp, 0)
  
    /* Implemented by <frint_pattern><mode>2.  */
!   BUILTIN_VHSDF (UNOP, btrunc, 2)
!   BUILTIN_VHSDF (UNOP, ceil, 2)
!   BUILTIN_VHSDF (UNOP, floor, 2)
!   BUILTIN_VHSDF (UNOP, nearbyint, 2)
!   BUILTIN_VHSDF (UNOP, rint, 2)
!   BUILTIN_VHSDF (UNOP, round, 2)
!   BUILTIN_VHSDF_HSDF (UNOP, frintn, 2)
  
!   VAR1 (UNOP, btrunc, 2, hf)
!   VAR1 (UNOP, ceil, 2, hf)
!   VAR1 (UNOP, floor, 2, hf)
!   VAR1 (UNOP, nearbyint, 2, hf)
!   VAR1 (UNOP, rint, 2, hf)
!   VAR1 (UNOP, round, 2, hf)
  
    /* Implemented by l<fcvt_pattern><su_optab><VQDF:mode><vcvt_target>2.  */
!   VAR1 (UNOP, lbtruncv4hf, 2, v4hi)
!   VAR1 (UNOP, lbtruncv8hf, 2, v8hi)
!   VAR1 (UNOP, lbtruncv2sf, 2, v2si)
!   VAR1 (UNOP, lbtruncv4sf, 2, v4si)
!   VAR1 (UNOP, lbtruncv2df, 2, v2di)
  
!   VAR1 (UNOPUS, lbtruncuv4hf, 2, v4hi)
!   VAR1 (UNOPUS, lbtruncuv8hf, 2, v8hi)
!   VAR1 (UNOPUS, lbtruncuv2sf, 2, v2si)
!   VAR1 (UNOPUS, lbtruncuv4sf, 2, v4si)
!   VAR1 (UNOPUS, lbtruncuv2df, 2, v2di)
  
!   VAR1 (UNOP, lroundv4hf, 2, v4hi)
!   VAR1 (UNOP, lroundv8hf, 2, v8hi)
!   VAR1 (UNOP, lroundv2sf, 2, v2si)
!   VAR1 (UNOP, lroundv4sf, 2, v4si)
!   VAR1 (UNOP, lroundv2df, 2, v2di)
    /* Implemented by l<fcvt_pattern><su_optab><GPF_F16:mode><GPI:mode>2.  */
!   BUILTIN_GPI_I16 (UNOP, lroundhf, 2)
!   VAR1 (UNOP, lroundsf, 2, si)
!   VAR1 (UNOP, lrounddf, 2, di)
  
!   VAR1 (UNOPUS, lrounduv4hf, 2, v4hi)
!   VAR1 (UNOPUS, lrounduv8hf, 2, v8hi)
!   VAR1 (UNOPUS, lrounduv2sf, 2, v2si)
!   VAR1 (UNOPUS, lrounduv4sf, 2, v4si)
!   VAR1 (UNOPUS, lrounduv2df, 2, v2di)
!   BUILTIN_GPI_I16 (UNOPUS, lrounduhf, 2)
!   VAR1 (UNOPUS, lroundusf, 2, si)
!   VAR1 (UNOPUS, lroundudf, 2, di)
  
!   VAR1 (UNOP, lceilv4hf, 2, v4hi)
!   VAR1 (UNOP, lceilv8hf, 2, v8hi)
!   VAR1 (UNOP, lceilv2sf, 2, v2si)
!   VAR1 (UNOP, lceilv4sf, 2, v4si)
!   VAR1 (UNOP, lceilv2df, 2, v2di)
!   BUILTIN_GPI_I16 (UNOP, lceilhf, 2)
  
!   VAR1 (UNOPUS, lceiluv4hf, 2, v4hi)
!   VAR1 (UNOPUS, lceiluv8hf, 2, v8hi)
!   VAR1 (UNOPUS, lceiluv2sf, 2, v2si)
!   VAR1 (UNOPUS, lceiluv4sf, 2, v4si)
!   VAR1 (UNOPUS, lceiluv2df, 2, v2di)
!   BUILTIN_GPI_I16 (UNOPUS, lceiluhf, 2)
!   VAR1 (UNOPUS, lceilusf, 2, si)
!   VAR1 (UNOPUS, lceiludf, 2, di)
  
!   VAR1 (UNOP, lfloorv4hf, 2, v4hi)
!   VAR1 (UNOP, lfloorv8hf, 2, v8hi)
!   VAR1 (UNOP, lfloorv2sf, 2, v2si)
!   VAR1 (UNOP, lfloorv4sf, 2, v4si)
!   VAR1 (UNOP, lfloorv2df, 2, v2di)
!   BUILTIN_GPI_I16 (UNOP, lfloorhf, 2)
  
!   VAR1 (UNOPUS, lflooruv4hf, 2, v4hi)
!   VAR1 (UNOPUS, lflooruv8hf, 2, v8hi)
!   VAR1 (UNOPUS, lflooruv2sf, 2, v2si)
!   VAR1 (UNOPUS, lflooruv4sf, 2, v4si)
!   VAR1 (UNOPUS, lflooruv2df, 2, v2di)
!   BUILTIN_GPI_I16 (UNOPUS, lflooruhf, 2)
!   VAR1 (UNOPUS, lfloorusf, 2, si)
!   VAR1 (UNOPUS, lfloorudf, 2, di)
  
!   VAR1 (UNOP, lfrintnv4hf, 2, v4hi)
!   VAR1 (UNOP, lfrintnv8hf, 2, v8hi)
!   VAR1 (UNOP, lfrintnv2sf, 2, v2si)
!   VAR1 (UNOP, lfrintnv4sf, 2, v4si)
!   VAR1 (UNOP, lfrintnv2df, 2, v2di)
!   BUILTIN_GPI_I16 (UNOP, lfrintnhf, 2)
!   VAR1 (UNOP, lfrintnsf, 2, si)
!   VAR1 (UNOP, lfrintndf, 2, di)
  
!   VAR1 (UNOPUS, lfrintnuv4hf, 2, v4hi)
!   VAR1 (UNOPUS, lfrintnuv8hf, 2, v8hi)
!   VAR1 (UNOPUS, lfrintnuv2sf, 2, v2si)
!   VAR1 (UNOPUS, lfrintnuv4sf, 2, v4si)
!   VAR1 (UNOPUS, lfrintnuv2df, 2, v2di)
!   BUILTIN_GPI_I16 (UNOPUS, lfrintnuhf, 2)
!   VAR1 (UNOPUS, lfrintnusf, 2, si)
!   VAR1 (UNOPUS, lfrintnudf, 2, di)
  
    /* Implemented by <optab><fcvt_target><VDQF:mode>2.  */
!   VAR1 (UNOP, floatv4hi, 2, v4hf)
!   VAR1 (UNOP, floatv8hi, 2, v8hf)
!   VAR1 (UNOP, floatv2si, 2, v2sf)
!   VAR1 (UNOP, floatv4si, 2, v4sf)
!   VAR1 (UNOP, floatv2di, 2, v2df)
  
!   VAR1 (UNOP, floatunsv4hi, 2, v4hf)
!   VAR1 (UNOP, floatunsv8hi, 2, v8hf)
!   VAR1 (UNOP, floatunsv2si, 2, v2sf)
!   VAR1 (UNOP, floatunsv4si, 2, v4sf)
!   VAR1 (UNOP, floatunsv2di, 2, v2df)
  
!   VAR5 (UNOPU, bswap, 2, v4hi, v8hi, v2si, v4si, v2di)
  
!   BUILTIN_VB (UNOP, rbit, 0)
  
    /* Implemented by
       aarch64_<PERMUTE:perm_insn><mode>.  */
!   BUILTIN_VALL (BINOP, zip1, 0)
!   BUILTIN_VALL (BINOP, zip2, 0)
!   BUILTIN_VALL (BINOP, uzp1, 0)
!   BUILTIN_VALL (BINOP, uzp2, 0)
!   BUILTIN_VALL (BINOP, trn1, 0)
!   BUILTIN_VALL (BINOP, trn2, 0)
  
!   BUILTIN_GPF_F16 (UNOP, frecpe, 0)
!   BUILTIN_GPF_F16 (UNOP, frecpx, 0)
  
!   BUILTIN_VDQ_SI (UNOP, urecpe, 0)
  
!   BUILTIN_VHSDF (UNOP, frecpe, 0)
!   BUILTIN_VHSDF_HSDF (BINOP, frecps, 0)
  
    /* Implemented by a mixture of abs2 patterns.  Note the DImode builtin is
       only ever used for the int64x1_t intrinsic, there is no scalar version.  */
!   BUILTIN_VSDQ_I_DI (UNOP, abs, 0)
!   BUILTIN_VHSDF (UNOP, abs, 2)
!   VAR1 (UNOP, abs, 2, hf)
  
!   BUILTIN_VQ_HSF (UNOP, vec_unpacks_hi_, 10)
!   VAR1 (BINOP, float_truncate_hi_, 0, v4sf)
!   VAR1 (BINOP, float_truncate_hi_, 0, v8hf)
  
!   VAR1 (UNOP, float_extend_lo_, 0, v2df)
!   VAR1 (UNOP, float_extend_lo_,  0, v4sf)
!   BUILTIN_VDF (UNOP, float_truncate_lo_, 0)
  
    /* Implemented by aarch64_ld1<VALL_F16:mode>.  */
!   BUILTIN_VALL_F16 (LOAD1, ld1, 0)
!   VAR1(STORE1P, ld1, 0, v2di)
  
    /* Implemented by aarch64_st1<VALL_F16:mode>.  */
!   BUILTIN_VALL_F16 (STORE1, st1, 0)
!   VAR1(STORE1P, st1, 0, v2di)
  
    /* Implemented by aarch64_ld1x3<VALLDIF:mode>.  */
!   BUILTIN_VALLDIF (LOADSTRUCT, ld1x3, 0)
  
    /* Implemented by aarch64_ld1x4<VALLDIF:mode>.  */
!   BUILTIN_VALLDIF (LOADSTRUCT, ld1x4, 0)
  
    /* Implemented by aarch64_st1x2<VALLDIF:mode>.  */
!   BUILTIN_VALLDIF (STORESTRUCT, st1x2, 0)
  
    /* Implemented by aarch64_st1x3<VALLDIF:mode>.  */
!   BUILTIN_VALLDIF (STORESTRUCT, st1x3, 0)
  
    /* Implemented by aarch64_st1x4<VALLDIF:mode>.  */
!   BUILTIN_VALLDIF (STORESTRUCT, st1x4, 0)
  
    /* Implemented by fma<mode>4.  */
!   BUILTIN_VHSDF (TERNOP, fma, 4)
!   VAR1 (TERNOP, fma, 4, hf)
    /* Implemented by fnma<mode>4.  */
!   BUILTIN_VHSDF (TERNOP, fnma, 4)
!   VAR1 (TERNOP, fnma, 4, hf)
  
    /* Implemented by aarch64_simd_bsl<mode>.  */
!   BUILTIN_VDQQH (BSL_P, simd_bsl, 0)
!   VAR2 (BSL_P, simd_bsl,0, di, v2di)
!   BUILTIN_VSDQ_I_DI (BSL_U, simd_bsl, 0)
!   BUILTIN_VALLDIF (BSL_S, simd_bsl, 0)
  
    /* Implemented by aarch64_crypto_aes<op><mode>.  */
!   VAR1 (BINOPU, crypto_aese, 0, v16qi)
!   VAR1 (BINOPU, crypto_aesd, 0, v16qi)
!   VAR1 (UNOPU, crypto_aesmc, 0, v16qi)
!   VAR1 (UNOPU, crypto_aesimc, 0, v16qi)
  
    /* Implemented by aarch64_crypto_sha1<op><mode>.  */
!   VAR1 (UNOPU, crypto_sha1h, 0, si)
!   VAR1 (BINOPU, crypto_sha1su1, 0, v4si)
!   VAR1 (TERNOPU, crypto_sha1c, 0, v4si)
!   VAR1 (TERNOPU, crypto_sha1m, 0, v4si)
!   VAR1 (TERNOPU, crypto_sha1p, 0, v4si)
!   VAR1 (TERNOPU, crypto_sha1su0, 0, v4si)
  
    /* Implemented by aarch64_crypto_sha256<op><mode>.  */
!   VAR1 (TERNOPU, crypto_sha256h, 0, v4si)
!   VAR1 (TERNOPU, crypto_sha256h2, 0, v4si)
!   VAR1 (BINOPU, crypto_sha256su0, 0, v4si)
!   VAR1 (TERNOPU, crypto_sha256su1, 0, v4si)
  
    /* Implemented by aarch64_crypto_pmull<mode>.  */
!   VAR1 (BINOPP, crypto_pmull, 0, di)
!   VAR1 (BINOPP, crypto_pmull, 0, v2di)
  
    /* Implemented by aarch64_tbl3<mode>.  */
!   VAR1 (BINOP, tbl3, 0, v8qi)
!   VAR1 (BINOP, tbl3, 0, v16qi)
  
    /* Implemented by aarch64_qtbl3<mode>.  */
!   VAR1 (BINOP, qtbl3, 0, v8qi)
!   VAR1 (BINOP, qtbl3, 0, v16qi)
  
    /* Implemented by aarch64_qtbl4<mode>.  */
!   VAR1 (BINOP, qtbl4, 0, v8qi)
!   VAR1 (BINOP, qtbl4, 0, v16qi)
  
    /* Implemented by aarch64_tbx4<mode>.  */
!   VAR1 (TERNOP, tbx4, 0, v8qi)
!   VAR1 (TERNOP, tbx4, 0, v16qi)
  
    /* Implemented by aarch64_qtbx3<mode>.  */
!   VAR1 (TERNOP, qtbx3, 0, v8qi)
!   VAR1 (TERNOP, qtbx3, 0, v16qi)
  
    /* Implemented by aarch64_qtbx4<mode>.  */
!   VAR1 (TERNOP, qtbx4, 0, v8qi)
!   VAR1 (TERNOP, qtbx4, 0, v16qi)
  
    /* Builtins for ARMv8.1-A Adv.SIMD instructions.  */
  
    /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>.  */
!   BUILTIN_VSDQ_HSI (TERNOP, sqrdmlah, 0)
!   BUILTIN_VSDQ_HSI (TERNOP, sqrdmlsh, 0)
  
    /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>.  */
!   BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlah_lane, 0)
!   BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlsh_lane, 0)
  
    /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>.  */
!   BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlah_laneq, 0)
!   BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlsh_laneq, 0)
  
    /* Implemented by <FCVT_F2FIXED/FIXED2F:fcvt_fixed_insn><*><*>3.  */
!   BUILTIN_VSDQ_HSDI (SHIFTIMM, scvtf, 3)
!   BUILTIN_VSDQ_HSDI (FCVTIMM_SUS, ucvtf, 3)
!   BUILTIN_VHSDF_HSDF (SHIFTIMM, fcvtzs, 3)
!   BUILTIN_VHSDF_HSDF (SHIFTIMM_USS, fcvtzu, 3)
!   VAR1 (SHIFTIMM, scvtfsi, 3, hf)
!   VAR1 (SHIFTIMM, scvtfdi, 3, hf)
!   VAR1 (FCVTIMM_SUS, ucvtfsi, 3, hf)
!   VAR1 (FCVTIMM_SUS, ucvtfdi, 3, hf)
!   BUILTIN_GPI (SHIFTIMM, fcvtzshf, 3)
!   BUILTIN_GPI (SHIFTIMM_USS, fcvtzuhf, 3)
  
    /* Implemented by aarch64_rsqrte<mode>.  */
!   BUILTIN_VHSDF_HSDF (UNOP, rsqrte, 0)
  
    /* Implemented by aarch64_rsqrts<mode>.  */
!   BUILTIN_VHSDF_HSDF (BINOP, rsqrts, 0)
  
    /* Implemented by fabd<mode>3.  */
!   BUILTIN_VHSDF_HSDF (BINOP, fabd, 3)
  
    /* Implemented by aarch64_faddp<mode>.  */
!   BUILTIN_VHSDF (BINOP, faddp, 0)
  
    /* Implemented by aarch64_cm<optab><mode>.  */
!   BUILTIN_VHSDF_HSDF (BINOP_USS, cmeq, 0)
!   BUILTIN_VHSDF_HSDF (BINOP_USS, cmge, 0)
!   BUILTIN_VHSDF_HSDF (BINOP_USS, cmgt, 0)
!   BUILTIN_VHSDF_HSDF (BINOP_USS, cmle, 0)
!   BUILTIN_VHSDF_HSDF (BINOP_USS, cmlt, 0)
  
    /* Implemented by neg<mode>2.  */
!   BUILTIN_VHSDF_HSDF (UNOP, neg, 2)
  
    /* Implemented by aarch64_fac<optab><mode>.  */
!   BUILTIN_VHSDF_HSDF (BINOP_USS, faclt, 0)
!   BUILTIN_VHSDF_HSDF (BINOP_USS, facle, 0)
!   BUILTIN_VHSDF_HSDF (BINOP_USS, facgt, 0)
!   BUILTIN_VHSDF_HSDF (BINOP_USS, facge, 0)
  
    /* Implemented by sqrt<mode>2.  */
!   VAR1 (UNOP, sqrt, 2, hf)
  
    /* Implemented by <optab><mode>hf2.  */
!   VAR1 (UNOP, floatdi, 2, hf)
!   VAR1 (UNOP, floatsi, 2, hf)
!   VAR1 (UNOP, floathi, 2, hf)
!   VAR1 (UNOPUS, floatunsdi, 2, hf)
!   VAR1 (UNOPUS, floatunssi, 2, hf)
!   VAR1 (UNOPUS, floatunshi, 2, hf)
!   BUILTIN_GPI_I16 (UNOP, fix_trunchf, 2)
!   BUILTIN_GPI (UNOP, fix_truncsf, 2)
!   BUILTIN_GPI (UNOP, fix_truncdf, 2)
!   BUILTIN_GPI_I16 (UNOPUS, fixuns_trunchf, 2)
!   BUILTIN_GPI (UNOPUS, fixuns_truncsf, 2)
!   BUILTIN_GPI (UNOPUS, fixuns_truncdf, 2)
  
    /* Implemented by aarch64_sm3ss1qv4si.  */
!   VAR1 (TERNOPU, sm3ss1q, 0, v4si)
    /* Implemented by aarch64_sm3tt<sm3tt_op>qv4si.  */
!   VAR1 (QUADOPUI, sm3tt1aq, 0, v4si)
!   VAR1 (QUADOPUI, sm3tt1bq, 0, v4si)
!   VAR1 (QUADOPUI, sm3tt2aq, 0, v4si)
!   VAR1 (QUADOPUI, sm3tt2bq, 0, v4si)
    /* Implemented by aarch64_sm3partw<sm3part_op>qv4si.  */
!   VAR1 (TERNOPU, sm3partw1q, 0, v4si)
!   VAR1 (TERNOPU, sm3partw2q, 0, v4si)
    /* Implemented by aarch64_sm4eqv4si.  */
!   VAR1 (BINOPU, sm4eq, 0, v4si)
    /* Implemented by aarch64_sm4ekeyqv4si.  */
!   VAR1 (BINOPU, sm4ekeyq, 0, v4si)
    /* Implemented by aarch64_crypto_sha512hqv2di.  */
!   VAR1 (TERNOPU, crypto_sha512hq, 0, v2di)
    /* Implemented by aarch64_sha512h2qv2di.  */
!   VAR1 (TERNOPU, crypto_sha512h2q, 0, v2di)
    /* Implemented by aarch64_crypto_sha512su0qv2di.  */
!   VAR1 (BINOPU, crypto_sha512su0q, 0, v2di)
    /* Implemented by aarch64_crypto_sha512su1qv2di.  */
!   VAR1 (TERNOPU, crypto_sha512su1q, 0, v2di)
    /* Implemented by eor3q<mode>4.  */
!   BUILTIN_VQ_I (TERNOPU, eor3q, 4)
!   BUILTIN_VQ_I (TERNOP, eor3q, 4)
    /* Implemented by aarch64_rax1qv2di.  */
!   VAR1 (BINOPU, rax1q, 0, v2di)
    /* Implemented by aarch64_xarqv2di.  */
!   VAR1 (TERNOPUI, xarq, 0, v2di)
    /* Implemented by bcaxq<mode>4.  */
!   BUILTIN_VQ_I (TERNOPU, bcaxq, 4)
!   BUILTIN_VQ_I (TERNOP, bcaxq, 4)
  
    /* Implemented by aarch64_fml<f16mac1>l<f16quad>_low<mode>.  */
!   VAR1 (TERNOP, fmlal_low, 0, v2sf)
!   VAR1 (TERNOP, fmlsl_low, 0, v2sf)
!   VAR1 (TERNOP, fmlalq_low, 0, v4sf)
!   VAR1 (TERNOP, fmlslq_low, 0, v4sf)
    /* Implemented by aarch64_fml<f16mac1>l<f16quad>_high<mode>.  */
!   VAR1 (TERNOP, fmlal_high, 0, v2sf)
!   VAR1 (TERNOP, fmlsl_high, 0, v2sf)
!   VAR1 (TERNOP, fmlalq_high, 0, v4sf)
!   VAR1 (TERNOP, fmlslq_high, 0, v4sf)
    /* Implemented by aarch64_fml<f16mac1>l_lane_lowv2sf.  */
!   VAR1 (QUADOP_LANE, fmlal_lane_low, 0, v2sf)
!   VAR1 (QUADOP_LANE, fmlsl_lane_low, 0, v2sf)
    /* Implemented by aarch64_fml<f16mac1>l_laneq_lowv2sf.  */
!   VAR1 (QUADOP_LANE, fmlal_laneq_low, 0, v2sf)
!   VAR1 (QUADOP_LANE, fmlsl_laneq_low, 0, v2sf)
    /* Implemented by aarch64_fml<f16mac1>lq_lane_lowv4sf.  */
!   VAR1 (QUADOP_LANE, fmlalq_lane_low, 0, v4sf)
!   VAR1 (QUADOP_LANE, fmlslq_lane_low, 0, v4sf)
    /* Implemented by aarch64_fml<f16mac1>lq_laneq_lowv4sf.  */
!   VAR1 (QUADOP_LANE, fmlalq_laneq_low, 0, v4sf)
!   VAR1 (QUADOP_LANE, fmlslq_laneq_low, 0, v4sf)
    /* Implemented by aarch64_fml<f16mac1>l_lane_highv2sf.  */
!   VAR1 (QUADOP_LANE, fmlal_lane_high, 0, v2sf)
!   VAR1 (QUADOP_LANE, fmlsl_lane_high, 0, v2sf)
    /* Implemented by aarch64_fml<f16mac1>l_laneq_highv2sf.  */
!   VAR1 (QUADOP_LANE, fmlal_laneq_high, 0, v2sf)
!   VAR1 (QUADOP_LANE, fmlsl_laneq_high, 0, v2sf)
    /* Implemented by aarch64_fml<f16mac1>lq_lane_highv4sf.  */
!   VAR1 (QUADOP_LANE, fmlalq_lane_high, 0, v4sf)
!   VAR1 (QUADOP_LANE, fmlslq_lane_high, 0, v4sf)
    /* Implemented by aarch64_fml<f16mac1>lq_laneq_highv4sf.  */
!   VAR1 (QUADOP_LANE, fmlalq_laneq_high, 0, v4sf)
!   VAR1 (QUADOP_LANE, fmlslq_laneq_high, 0, v4sf)
  
    /* Implemented by aarch64_<frintnzs_op><mode>.  */
!   BUILTIN_VSFDF (UNOP, frint32z, 0)
!   BUILTIN_VSFDF (UNOP, frint32x, 0)
!   BUILTIN_VSFDF (UNOP, frint64z, 0)
!   BUILTIN_VSFDF (UNOP, frint64x, 0)
  
    /* Implemented by aarch64_bfdot{_lane}{q}<mode>.  */
!   VAR2 (TERNOP, bfdot, 0, v2sf, v4sf)
!   VAR2 (QUADOP_LANE_PAIR, bfdot_lane, 0, v2sf, v4sf)
!   VAR2 (QUADOP_LANE_PAIR, bfdot_laneq, 0, v2sf, v4sf)
  
    /* Implemented by aarch64_bfmmlaqv4sf  */
!   VAR1 (TERNOP, bfmmlaq, 0, v4sf)
  
    /* Implemented by aarch64_bfmlal<bt>{_lane{q}}v4sf  */
!   VAR1 (TERNOP, bfmlalb, 0, v4sf)
!   VAR1 (TERNOP, bfmlalt, 0, v4sf)
!   VAR1 (QUADOP_LANE, bfmlalb_lane, 0, v4sf)
!   VAR1 (QUADOP_LANE, bfmlalt_lane, 0, v4sf)
!   VAR1 (QUADOP_LANE, bfmlalb_lane_q, 0, v4sf)
!   VAR1 (QUADOP_LANE, bfmlalt_lane_q, 0, v4sf)
  
    /* Implemented by aarch64_vget_lo/hi_halfv8bf.  */
!   VAR1 (UNOP, vget_lo_half, 0, v8bf)
!   VAR1 (UNOP, vget_hi_half, 0, v8bf)
  
    /* Implemented by aarch64_simd_<sur>mmlav16qi.  */
!   VAR1 (TERNOP, simd_smmla, 0, v16qi)
!   VAR1 (TERNOPU, simd_ummla, 0, v16qi)
!   VAR1 (TERNOP_SSUS, simd_usmmla, 0, v16qi)
  
    /* Implemented by aarch64_bfcvtn{q}{2}<mode>  */
!   VAR1 (UNOP, bfcvtn, 0, v4bf)
!   VAR1 (UNOP, bfcvtn_q, 0, v8bf)
!   VAR1 (BINOP, bfcvtn2, 0, v8bf)
!   VAR1 (UNOP, bfcvt, 0, bf)
  
    /* Implemented by aarch64_{v}bfcvt{_high}<mode>.  */
!   VAR2 (UNOP, vbfcvt, 0, v4bf, v8bf)
!   VAR1 (UNOP, vbfcvt_high, 0, v8bf)
!   VAR1 (UNOP, bfcvt, 0, sf)
--- 37,893 ----
     macro holding the RTL pattern for the intrinsic.  This mapping is:
     0 - CODE_FOR_aarch64_<name><mode>
     1-9 - CODE_FOR_<name><mode><1-9>
!    10 - CODE_FOR_<name><mode>.
  
!    Parameter 4 is the 'flag' of the intrinsic.  This is used to
!    help describe the attributes (for example, pure) for the intrinsic
!    function.  */
! 
!   BUILTIN_VDC (COMBINE, combine, 0, AUTO_FP)
!   VAR1 (COMBINEP, combine, 0, NONE, di)
!   BUILTIN_VB (BINOP, pmul, 0, NONE)
!   BUILTIN_VHSDF_HSDF (BINOP, fmulx, 0, FP)
!   BUILTIN_VHSDF_DF (UNOP, sqrt, 2, FP)
!   BUILTIN_VD_BHSI (BINOP, addp, 0, NONE)
!   VAR1 (UNOP, addp, 0, NONE, di)
!   BUILTIN_VDQ_BHSI (UNOP, clrsb, 2, NONE)
!   BUILTIN_VDQ_BHSI (UNOP, clz, 2, NONE)
!   BUILTIN_VS (UNOP, ctz, 2, NONE)
!   BUILTIN_VB (UNOP, popcount, 2, NONE)
! 
!   /* Implemented by aarch64_get_low<mode>.  */
!   BUILTIN_VQMOV (UNOP, get_low, 0, AUTO_FP)
!   /* Implemented by aarch64_get_high<mode>.  */
!   BUILTIN_VQMOV (UNOP, get_high, 0, AUTO_FP)
  
    /* Implemented by aarch64_<sur>q<r>shl<mode>.  */
!   BUILTIN_VSDQ_I (BINOP, sqshl, 0, NONE)
!   BUILTIN_VSDQ_I (BINOP_UUS, uqshl, 0, NONE)
!   BUILTIN_VSDQ_I (BINOP, sqrshl, 0, NONE)
!   BUILTIN_VSDQ_I (BINOP_UUS, uqrshl, 0, NONE)
    /* Implemented by aarch64_<su_optab><optab><mode>.  */
!   BUILTIN_VSDQ_I (BINOP, sqadd, 0, NONE)
!   BUILTIN_VSDQ_I (BINOPU, uqadd, 0, NONE)
!   BUILTIN_VSDQ_I (BINOP, sqsub, 0, NONE)
!   BUILTIN_VSDQ_I (BINOPU, uqsub, 0, NONE)
    /* Implemented by aarch64_<sur>qadd<mode>.  */
!   BUILTIN_VSDQ_I (BINOP_SSU, suqadd, 0, NONE)
!   BUILTIN_VSDQ_I (BINOP_UUS, usqadd, 0, NONE)
  
    /* Implemented by aarch64_get_dreg<VSTRUCT:mode><VDC:mode>.  */
!   BUILTIN_VDC (GETREG, get_dregoi, 0, AUTO_FP)
!   BUILTIN_VDC (GETREG, get_dregci, 0, AUTO_FP)
!   BUILTIN_VDC (GETREG, get_dregxi, 0, AUTO_FP)
!   VAR1 (GETREGP, get_dregoi, 0, AUTO_FP, di)
!   VAR1 (GETREGP, get_dregci, 0, AUTO_FP, di)
!   VAR1 (GETREGP, get_dregxi, 0, AUTO_FP, di)
    /* Implemented by aarch64_get_qreg<VSTRUCT:mode><VQ:mode>.  */
!   BUILTIN_VQ (GETREG, get_qregoi, 0, AUTO_FP)
!   BUILTIN_VQ (GETREG, get_qregci, 0, AUTO_FP)
!   BUILTIN_VQ (GETREG, get_qregxi, 0, AUTO_FP)
!   VAR1 (GETREGP, get_qregoi, 0, AUTO_FP, v2di)
!   VAR1 (GETREGP, get_qregci, 0, AUTO_FP, v2di)
!   VAR1 (GETREGP, get_qregxi, 0, AUTO_FP, v2di)
    /* Implemented by aarch64_set_qreg<VSTRUCT:mode><VQ:mode>.  */
!   BUILTIN_VQ (SETREG, set_qregoi, 0, AUTO_FP)
!   BUILTIN_VQ (SETREG, set_qregci, 0, AUTO_FP)
!   BUILTIN_VQ (SETREG, set_qregxi, 0, AUTO_FP)
!   VAR1 (SETREGP, set_qregoi, 0, AUTO_FP, v2di)
!   VAR1 (SETREGP, set_qregci, 0, AUTO_FP, v2di)
!   VAR1 (SETREGP, set_qregxi, 0, AUTO_FP, v2di)
    /* Implemented by aarch64_ld1x2<VQ:mode>. */
!   BUILTIN_VQ (LOADSTRUCT, ld1x2, 0, LOAD)
    /* Implemented by aarch64_ld1x2<VDC:mode>. */
!   BUILTIN_VDC (LOADSTRUCT, ld1x2, 0, LOAD)
    /* Implemented by aarch64_ld<VSTRUCT:nregs><VDC:mode>.  */
!   BUILTIN_VDC (LOADSTRUCT, ld2, 0, LOAD)
!   BUILTIN_VDC (LOADSTRUCT, ld3, 0, LOAD)
!   BUILTIN_VDC (LOADSTRUCT, ld4, 0, LOAD)
    /* Implemented by aarch64_ld<VSTRUCT:nregs><VQ:mode>.  */
!   BUILTIN_VQ (LOADSTRUCT, ld2, 0, LOAD)
!   BUILTIN_VQ (LOADSTRUCT, ld3, 0, LOAD)
!   BUILTIN_VQ (LOADSTRUCT, ld4, 0, LOAD)
    /* Implemented by aarch64_ld<VSTRUCT:nregs>r<VALLDIF:mode>.  */
!   BUILTIN_VALLDIF (LOADSTRUCT, ld2r, 0, LOAD)
!   BUILTIN_VALLDIF (LOADSTRUCT, ld3r, 0, LOAD)
!   BUILTIN_VALLDIF (LOADSTRUCT, ld4r, 0, LOAD)
    /* Implemented by aarch64_ld<VSTRUCT:nregs>_lane<VQ:mode>.  */
!   BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld2_lane, 0, ALL)
!   BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld3_lane, 0, ALL)
!   BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld4_lane, 0, ALL)
    /* Implemented by aarch64_st<VSTRUCT:nregs><VDC:mode>.  */
!   BUILTIN_VDC (STORESTRUCT, st2, 0, STORE)
!   BUILTIN_VDC (STORESTRUCT, st3, 0, STORE)
!   BUILTIN_VDC (STORESTRUCT, st4, 0, STORE)
    /* Implemented by aarch64_st<VSTRUCT:nregs><VQ:mode>.  */
!   BUILTIN_VQ (STORESTRUCT, st2, 0, STORE)
!   BUILTIN_VQ (STORESTRUCT, st3, 0, STORE)
!   BUILTIN_VQ (STORESTRUCT, st4, 0, STORE)
  
!   BUILTIN_VALLDIF (STORESTRUCT_LANE, st2_lane, 0, ALL)
!   BUILTIN_VALLDIF (STORESTRUCT_LANE, st3_lane, 0, ALL)
!   BUILTIN_VALLDIF (STORESTRUCT_LANE, st4_lane, 0, ALL)
  
!   BUILTIN_VQW (BINOP, saddl2, 0, NONE)
!   BUILTIN_VQW (BINOP, uaddl2, 0, NONE)
!   BUILTIN_VQW (BINOP, ssubl2, 0, NONE)
!   BUILTIN_VQW (BINOP, usubl2, 0, NONE)
!   BUILTIN_VQW (BINOP, saddw2, 0, NONE)
!   BUILTIN_VQW (BINOP, uaddw2, 0, NONE)
!   BUILTIN_VQW (BINOP, ssubw2, 0, NONE)
!   BUILTIN_VQW (BINOP, usubw2, 0, NONE)
    /* Implemented by aarch64_<ANY_EXTEND:su><ADDSUB:optab>l<mode>.  */
!   BUILTIN_VD_BHSI (BINOP, saddl, 0, NONE)
!   BUILTIN_VD_BHSI (BINOP, uaddl, 0, NONE)
!   BUILTIN_VD_BHSI (BINOP, ssubl, 0, NONE)
!   BUILTIN_VD_BHSI (BINOP, usubl, 0, NONE)
    /* Implemented by aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>.  */
!   BUILTIN_VD_BHSI (BINOP, saddw, 0, NONE)
!   BUILTIN_VD_BHSI (BINOP, uaddw, 0, NONE)
!   BUILTIN_VD_BHSI (BINOP, ssubw, 0, NONE)
!   BUILTIN_VD_BHSI (BINOP, usubw, 0, NONE)
    /* Implemented by aarch64_<sur>h<addsub><mode>.  */
!   BUILTIN_VDQ_BHSI (BINOP, shadd, 0, NONE)
!   BUILTIN_VDQ_BHSI (BINOP, shsub, 0, NONE)
!   BUILTIN_VDQ_BHSI (BINOP, uhadd, 0, NONE)
!   BUILTIN_VDQ_BHSI (BINOP, uhsub, 0, NONE)
!   BUILTIN_VDQ_BHSI (BINOP, srhadd, 0, NONE)
!   BUILTIN_VDQ_BHSI (BINOP, urhadd, 0, NONE)
! 
!   /* Implemented by aarch64_<su>addlv<mode>.  */
!   BUILTIN_VDQV_L (UNOP, saddlv, 0, NONE)
!   BUILTIN_VDQV_L (UNOPU, uaddlv, 0, NONE)
! 
!   /* Implemented by aarch64_<su>abd<mode>.  */
!   BUILTIN_VDQ_BHSI (BINOP, sabd, 0, NONE)
!   BUILTIN_VDQ_BHSI (BINOPU, uabd, 0, NONE)
! 
!   /* Implemented by aarch64_<su>aba<mode>.  */
!   BUILTIN_VDQ_BHSI (TERNOP, saba, 0, NONE)
!   BUILTIN_VDQ_BHSI (TERNOPU, uaba, 0, NONE)
! 
!   BUILTIN_VDQV_S (BINOP, sadalp, 0, NONE)
!   BUILTIN_VDQV_S (BINOPU, uadalp, 0, NONE)
! 
!   /* Implemented by aarch64_<sur>abal<mode>.  */
!   BUILTIN_VD_BHSI (TERNOP, sabal, 0, NONE)
!   BUILTIN_VD_BHSI (TERNOPU, uabal, 0, NONE)
! 
!   /* Implemented by aarch64_<sur>abal2<mode>.  */
!   BUILTIN_VQW (TERNOP, sabal2, 0, NONE)
!   BUILTIN_VQW (TERNOPU, uabal2, 0, NONE)
! 
!   /* Implemented by aarch64_<sur>abdl<mode>.  */
!   BUILTIN_VD_BHSI (BINOP, sabdl, 0, NONE)
!   BUILTIN_VD_BHSI (BINOPU, uabdl, 0, NONE)
! 
!   /* Implemented by aarch64_<sur>abdl2<mode>.  */
!   BUILTIN_VQW (BINOP, sabdl2, 0, NONE)
!   BUILTIN_VQW (BINOPU, uabdl2, 0, NONE)
! 
    /* Implemented by aarch64_<sur><addsub>hn<mode>.  */
!   BUILTIN_VQN (BINOP, addhn, 0, NONE)
!   BUILTIN_VQN (BINOP, subhn, 0, NONE)
!   BUILTIN_VQN (BINOP, raddhn, 0, NONE)
!   BUILTIN_VQN (BINOP, rsubhn, 0, NONE)
    /* Implemented by aarch64_<sur><addsub>hn2<mode>.  */
!   BUILTIN_VQN (TERNOP, addhn2, 0, NONE)
!   BUILTIN_VQN (TERNOP, subhn2, 0, NONE)
!   BUILTIN_VQN (TERNOP, raddhn2, 0, NONE)
!   BUILTIN_VQN (TERNOP, rsubhn2, 0, NONE)
! 
!   /* Implemented by aarch64_<us>xtl<mode>.  */
!   BUILTIN_VQN (UNOP, sxtl, 0, NONE)
!   BUILTIN_VQN (UNOPU, uxtl, 0, NONE)
! 
!   /* Implemented by aarch64_xtn<mode>.  */
!   BUILTIN_VQN (UNOP, xtn, 0, NONE)
! 
!   /* Implemented by aarch64_mla<mode>.  */
!   BUILTIN_VDQ_BHSI (TERNOP, mla, 0, NONE)
!   /* Implemented by aarch64_mla_n<mode>.  */
!   BUILTIN_VDQHS (TERNOP, mla_n, 0, NONE)
! 
!   /* Implemented by aarch64_mls<mode>.  */
!   BUILTIN_VDQ_BHSI (TERNOP, mls, 0, NONE)
!   /* Implemented by aarch64_mls_n<mode>.  */
!   BUILTIN_VDQHS (TERNOP, mls_n, 0, NONE)
! 
!   /* Implemented by aarch64_shrn<mode>".  */
!   BUILTIN_VQN (SHIFTIMM, shrn, 0, NONE)
! 
!   /* Implemented by aarch64_shrn2<mode>.  */
!   BUILTIN_VQN (SHIFTACC, shrn2, 0, NONE)
! 
!   /* Implemented by aarch64_rshrn<mode>".  */
!   BUILTIN_VQN (SHIFTIMM, rshrn, 0, NONE)
! 
!   /* Implemented by aarch64_rshrn2<mode>.  */
!   BUILTIN_VQN (SHIFTACC, rshrn2, 0, NONE)
! 
!   /* Implemented by aarch64_<su>mlsl<mode>.  */
!   BUILTIN_VD_BHSI (TERNOP, smlsl, 0, NONE)
!   BUILTIN_VD_BHSI (TERNOPU, umlsl, 0, NONE)
! 
!   /* Implemented by aarch64_<su>mlsl_n<mode>.  */
!   BUILTIN_VD_HSI (TERNOP, smlsl_n, 0, NONE)
!   BUILTIN_VD_HSI (TERNOPU, umlsl_n, 0, NONE)
! 
!   /* Implemented by aarch64_<su>mlal<mode>.  */
!   BUILTIN_VD_BHSI (TERNOP, smlal, 0, NONE)
!   BUILTIN_VD_BHSI (TERNOPU, umlal, 0, NONE)
! 
!   /* Implemented by aarch64_<su>mlal_n<mode>.  */
!   BUILTIN_VD_HSI (TERNOP, smlal_n, 0, NONE)
!   BUILTIN_VD_HSI (TERNOPU, umlal_n, 0, NONE)
! 
!   /* Implemented by aarch64_<su>mlsl_hi<mode>.  */
!   BUILTIN_VQW (TERNOP, smlsl_hi, 0, NONE)
!   BUILTIN_VQW (TERNOPU, umlsl_hi, 0, NONE)
! 
!   /* Implemented by aarch64_<su>mlsl_hi_n<mode>.  */
!   BUILTIN_VQ_HSI (TERNOP, smlsl_hi_n, 0, NONE)
!   BUILTIN_VQ_HSI (TERNOPU, umlsl_hi_n, 0, NONE)
! 
!   /* Implemented by aarch64_<su>mlal_hi<mode>.  */
!   BUILTIN_VQW (TERNOP, smlal_hi, 0, NONE)
!   BUILTIN_VQW (TERNOPU, umlal_hi, 0, NONE)
! 
!   /* Implemented by aarch64_<su>mlal_hi_n<mode>.  */
!   BUILTIN_VQ_HSI (TERNOP, smlal_hi_n, 0, NONE)
!   BUILTIN_VQ_HSI (TERNOPU, umlal_hi_n, 0, NONE)
! 
!   BUILTIN_VSQN_HSDI (UNOPUS, sqmovun, 0, NONE)
! 
!   /* Implemented by aarch64_sqxtun2<mode>.  */
!   BUILTIN_VQN (BINOP_UUS, sqxtun2, 0, NONE)
  
    /* Implemented by aarch64_<sur>qmovn<mode>.  */
!   BUILTIN_VSQN_HSDI (UNOP, sqmovn, 0, NONE)
!   BUILTIN_VSQN_HSDI (UNOP, uqmovn, 0, NONE)
! 
!   /* Implemented by aarch64_<su>qxtn2<mode>.  */
!   BUILTIN_VQN (BINOP, sqxtn2, 0, NONE)
!   BUILTIN_VQN (BINOPU, uqxtn2, 0, NONE)
! 
    /* Implemented by aarch64_s<optab><mode>.  */
!   BUILTIN_VSDQ_I (UNOP, sqabs, 0, NONE)
!   BUILTIN_VSDQ_I (UNOP, sqneg, 0, NONE)
  
    /* Implemented by aarch64_sqdml<SBINQOPS:as>l<mode>.  */
!   BUILTIN_VSD_HSI (TERNOP, sqdmlal, 0, NONE)
!   BUILTIN_VSD_HSI (TERNOP, sqdmlsl, 0, NONE)
    /* Implemented by aarch64_sqdml<SBINQOPS:as>l_lane<mode>.  */
!   BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlal_lane, 0, NONE)
!   BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlsl_lane, 0, NONE)
    /* Implemented by aarch64_sqdml<SBINQOPS:as>l_laneq<mode>.  */
!   BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlal_laneq, 0, NONE)
!   BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlsl_laneq, 0, NONE)
    /* Implemented by aarch64_sqdml<SBINQOPS:as>l_n<mode>.  */
!   BUILTIN_VD_HSI (TERNOP, sqdmlal_n, 0, NONE)
!   BUILTIN_VD_HSI (TERNOP, sqdmlsl_n, 0, NONE)
  
!   BUILTIN_VQ_HSI (TERNOP, sqdmlal2, 0, NONE)
!   BUILTIN_VQ_HSI (TERNOP, sqdmlsl2, 0, NONE)
!   BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlal2_lane, 0, NONE)
!   BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlsl2_lane, 0, NONE)
!   BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlal2_laneq, 0, NONE)
!   BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlsl2_laneq, 0, NONE)
!   BUILTIN_VQ_HSI (TERNOP, sqdmlal2_n, 0, NONE)
!   BUILTIN_VQ_HSI (TERNOP, sqdmlsl2_n, 0, NONE)
  
!   BUILTIN_VD_BHSI (BINOP, intrinsic_vec_smult_lo_, 0, NONE)
!   BUILTIN_VD_BHSI (BINOPU, intrinsic_vec_umult_lo_, 0, NONE)
  
!   BUILTIN_VQW (BINOP, vec_widen_smult_hi_, 10, NONE)
!   BUILTIN_VQW (BINOPU, vec_widen_umult_hi_, 10, NONE)
  
!   BUILTIN_VD_HSI (BINOP, smull_n, 0, NONE)
!   BUILTIN_VD_HSI (BINOPU, umull_n, 0, NONE)
  
!   BUILTIN_VQ_HSI (BINOP, smull_hi_n, 0, NONE)
!   BUILTIN_VQ_HSI (BINOPU, umull_hi_n, 0, NONE)
! 
!   BUILTIN_VQ_HSI (TERNOP_LANE, smull_hi_lane, 0, NONE)
!   BUILTIN_VQ_HSI (TERNOP_LANE, smull_hi_laneq, 0, NONE)
!   BUILTIN_VQ_HSI (TERNOPU_LANE, umull_hi_lane, 0, NONE)
!   BUILTIN_VQ_HSI (TERNOPU_LANE, umull_hi_laneq, 0, NONE)
! 
!   BUILTIN_VD_HSI (TERNOP_LANE, vec_smult_lane_, 0, NONE)
!   BUILTIN_VD_HSI (QUADOP_LANE, vec_smlal_lane_, 0, NONE)
!   BUILTIN_VD_HSI (TERNOP_LANE, vec_smult_laneq_, 0, NONE)
!   BUILTIN_VD_HSI (QUADOP_LANE, vec_smlal_laneq_, 0, NONE)
!   BUILTIN_VD_HSI (TERNOPU_LANE, vec_umult_lane_, 0, NONE)
!   BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlal_lane_, 0, NONE)
!   BUILTIN_VD_HSI (TERNOPU_LANE, vec_umult_laneq_, 0, NONE)
!   BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlal_laneq_, 0, NONE)
! 
!   BUILTIN_VD_HSI (QUADOP_LANE, vec_smlsl_lane_, 0, NONE)
!   BUILTIN_VD_HSI (QUADOP_LANE, vec_smlsl_laneq_, 0, NONE)
!   BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlsl_lane_, 0, NONE)
!   BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlsl_laneq_, 0, NONE)
! 
!   BUILTIN_VQ_HSI (QUADOP_LANE, smlal_hi_lane, 0, NONE)
!   BUILTIN_VQ_HSI (QUADOP_LANE, smlal_hi_laneq, 0, NONE)
!   BUILTIN_VQ_HSI (QUADOPU_LANE, umlal_hi_lane, 0, NONE)
!   BUILTIN_VQ_HSI (QUADOPU_LANE, umlal_hi_laneq, 0, NONE)
! 
!   BUILTIN_VQ_HSI (QUADOP_LANE, smlsl_hi_lane, 0, NONE)
!   BUILTIN_VQ_HSI (QUADOP_LANE, smlsl_hi_laneq, 0, NONE)
!   BUILTIN_VQ_HSI (QUADOPU_LANE, umlsl_hi_lane, 0, NONE)
!   BUILTIN_VQ_HSI (QUADOPU_LANE, umlsl_hi_laneq, 0, NONE)
! 
!   BUILTIN_VSD_HSI (BINOP, sqdmull, 0, NONE)
!   BUILTIN_VSD_HSI (TERNOP_LANE, sqdmull_lane, 0, NONE)
!   BUILTIN_VSD_HSI (TERNOP_LANE, sqdmull_laneq, 0, NONE)
!   BUILTIN_VD_HSI (BINOP, sqdmull_n, 0, NONE)
!   BUILTIN_VQ_HSI (BINOP, sqdmull2, 0, NONE)
!   BUILTIN_VQ_HSI (TERNOP_LANE, sqdmull2_lane, 0, NONE)
!   BUILTIN_VQ_HSI (TERNOP_LANE, sqdmull2_laneq, 0, NONE)
!   BUILTIN_VQ_HSI (BINOP, sqdmull2_n, 0, NONE)
    /* Implemented by aarch64_sq<r>dmulh<mode>.  */
!   BUILTIN_VSDQ_HSI (BINOP, sqdmulh, 0, NONE)
!   BUILTIN_VSDQ_HSI (BINOP, sqrdmulh, 0, NONE)
    /* Implemented by aarch64_sq<r>dmulh_lane<q><mode>.  */
!   BUILTIN_VSDQ_HSI (TERNOP_LANE, sqdmulh_lane, 0, NONE)
!   BUILTIN_VSDQ_HSI (TERNOP_LANE, sqdmulh_laneq, 0, NONE)
!   BUILTIN_VSDQ_HSI (TERNOP_LANE, sqrdmulh_lane, 0, NONE)
!   BUILTIN_VSDQ_HSI (TERNOP_LANE, sqrdmulh_laneq, 0, NONE)
  
!   BUILTIN_VSDQ_I_DI (BINOP, ashl, 3, NONE)
    /* Implemented by aarch64_<sur>shl<mode>.  */
!   BUILTIN_VSDQ_I_DI (BINOP, sshl, 0, NONE)
!   BUILTIN_VSDQ_I_DI (BINOP_UUS, ushl, 0, NONE)
!   BUILTIN_VSDQ_I_DI (BINOP, srshl, 0, NONE)
!   BUILTIN_VSDQ_I_DI (BINOP_UUS, urshl, 0, NONE)
  
    /* Implemented by aarch64_<sur><dotprod>{_lane}{q}<dot_mode>.  */
!   BUILTIN_VB (TERNOP, sdot, 0, NONE)
!   BUILTIN_VB (TERNOPU, udot, 0, NONE)
!   BUILTIN_VB (TERNOP_SSUS, usdot, 0, NONE)
!   BUILTIN_VB (QUADOP_LANE, sdot_lane, 0, NONE)
!   BUILTIN_VB (QUADOPU_LANE, udot_lane, 0, NONE)
!   BUILTIN_VB (QUADOP_LANE, sdot_laneq, 0, NONE)
!   BUILTIN_VB (QUADOPU_LANE, udot_laneq, 0, NONE)
!   BUILTIN_VB (QUADOPSSUS_LANE_QUADTUP, usdot_lane, 0, NONE)
!   BUILTIN_VB (QUADOPSSUS_LANE_QUADTUP, usdot_laneq, 0, NONE)
!   BUILTIN_VB (QUADOPSSSU_LANE_QUADTUP, sudot_lane, 0, NONE)
!   BUILTIN_VB (QUADOPSSSU_LANE_QUADTUP, sudot_laneq, 0, NONE)
  
    /* Implemented by aarch64_fcadd<rot><mode>.   */
!   BUILTIN_VHSDF (BINOP, fcadd90, 0, FP)
!   BUILTIN_VHSDF (BINOP, fcadd270, 0, FP)
  
    /* Implemented by aarch64_fcmla{_lane}{q}<rot><mode>.   */
!   BUILTIN_VHSDF (TERNOP, fcmla0, 0, FP)
!   BUILTIN_VHSDF (TERNOP, fcmla90, 0, FP)
!   BUILTIN_VHSDF (TERNOP, fcmla180, 0, FP)
!   BUILTIN_VHSDF (TERNOP, fcmla270, 0, FP)
!   BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane0, 0, FP)
!   BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane90, 0, FP)
!   BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane180, 0, FP)
!   BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane270, 0, FP)
  
!   BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane0, 0, FP)
!   BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane90, 0, FP)
!   BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane180, 0, FP)
!   BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane270, 0, FP)
  
!   BUILTIN_VDQ_I (SHIFTIMM, ashr, 3, NONE)
!   VAR1 (SHIFTIMM, ashr_simd, 0, NONE, di)
!   BUILTIN_VDQ_I (SHIFTIMM, lshr, 3, NONE)
!   VAR1 (USHIFTIMM, lshr_simd, 0, NONE, di)
    /* Implemented by aarch64_<sur>shr_n<mode>.  */
!   BUILTIN_VSDQ_I_DI (SHIFTIMM, srshr_n, 0, NONE)
!   BUILTIN_VSDQ_I_DI (USHIFTIMM, urshr_n, 0, NONE)
    /* Implemented by aarch64_<sur>sra_n<mode>.  */
!   BUILTIN_VSDQ_I_DI (SHIFTACC, ssra_n, 0, NONE)
!   BUILTIN_VSDQ_I_DI (USHIFTACC, usra_n, 0, NONE)
!   BUILTIN_VSDQ_I_DI (SHIFTACC, srsra_n, 0, NONE)
!   BUILTIN_VSDQ_I_DI (USHIFTACC, ursra_n, 0, NONE)
    /* Implemented by aarch64_<sur>shll_n<mode>.  */
!   BUILTIN_VD_BHSI (SHIFTIMM, sshll_n, 0, NONE)
!   BUILTIN_VD_BHSI (USHIFTIMM, ushll_n, 0, NONE)
    /* Implemented by aarch64_<sur>shll2_n<mode>.  */
!   BUILTIN_VQW (SHIFTIMM, sshll2_n, 0, NONE)
!   BUILTIN_VQW (SHIFTIMM, ushll2_n, 0, NONE)
    /* Implemented by aarch64_<sur>q<r>shr<u>n_n<mode>.  */
!   BUILTIN_VSQN_HSDI (SHIFTIMM, sqshrun_n, 0, NONE)
!   BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrun_n, 0, NONE)
!   BUILTIN_VSQN_HSDI (SHIFTIMM, sqshrn_n, 0, NONE)
!   BUILTIN_VSQN_HSDI (USHIFTIMM, uqshrn_n, 0, NONE)
!   BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrn_n, 0, NONE)
!   BUILTIN_VSQN_HSDI (USHIFTIMM, uqrshrn_n, 0, NONE)
!   /* Implemented by aarch64_<sur>q<r>shr<u>n2_n<mode>.  */
!   BUILTIN_VQN (SHIFT2IMM_UUSS, sqshrun2_n, 0, NONE)
!   BUILTIN_VQN (SHIFT2IMM_UUSS, sqrshrun2_n, 0, NONE)
!   BUILTIN_VQN (SHIFT2IMM, sqshrn2_n, 0, NONE)
!   BUILTIN_VQN (USHIFT2IMM, uqshrn2_n, 0, NONE)
!   BUILTIN_VQN (SHIFT2IMM, sqrshrn2_n, 0, NONE)
!   BUILTIN_VQN (USHIFT2IMM, uqrshrn2_n, 0, NONE)
    /* Implemented by aarch64_<sur>s<lr>i_n<mode>.  */
!   BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssri_n, 0, NONE)
!   BUILTIN_VSDQ_I_DI (USHIFTACC, usri_n, 0, NONE)
!   BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssli_n, 0, NONE)
!   VAR2 (SHIFTINSERTP, ssli_n, 0, NONE, di, v2di)
!   BUILTIN_VSDQ_I_DI (USHIFTACC, usli_n, 0, NONE)
    /* Implemented by aarch64_<sur>qshl<u>_n<mode>.  */
!   BUILTIN_VSDQ_I (SHIFTIMM_USS, sqshlu_n, 0, NONE)
!   BUILTIN_VSDQ_I (SHIFTIMM, sqshl_n, 0, NONE)
!   BUILTIN_VSDQ_I (USHIFTIMM, uqshl_n, 0, NONE)
! 
!   /* Implemented by aarch64_xtn2<mode>.  */
!   BUILTIN_VQN (UNOP, xtn2, 0, NONE)
! 
!   /* Implemented by vec_unpack<su>_hi_<mode>.  */
!   BUILTIN_VQW (UNOP, vec_unpacks_hi_, 10, NONE)
!   BUILTIN_VQW (UNOPU, vec_unpacku_hi_, 10, NONE)
  
    /* Implemented by aarch64_reduc_plus_<mode>.  */
!   BUILTIN_VALL (UNOP, reduc_plus_scal_, 10, NONE)
  
    /* Implemented by reduc_<maxmin_uns>_scal_<mode> (producing scalar).  */
!   BUILTIN_VDQIF_F16 (UNOP, reduc_smax_scal_, 10, NONE)
!   BUILTIN_VDQIF_F16 (UNOP, reduc_smin_scal_, 10, NONE)
!   BUILTIN_VDQ_BHSI (UNOPU, reduc_umax_scal_, 10, NONE)
!   BUILTIN_VDQ_BHSI (UNOPU, reduc_umin_scal_, 10, NONE)
!   BUILTIN_VHSDF (UNOP, reduc_smax_nan_scal_, 10, NONE)
!   BUILTIN_VHSDF (UNOP, reduc_smin_nan_scal_, 10, NONE)
  
    /* Implemented by <maxmin_uns><mode>3.
       smax variants map to fmaxnm,
       smax_nan variants map to fmax.  */
!   BUILTIN_VDQ_BHSI (BINOP, smax, 3, NONE)
!   BUILTIN_VDQ_BHSI (BINOP, smin, 3, NONE)
!   BUILTIN_VDQ_BHSI (BINOP, umax, 3, NONE)
!   BUILTIN_VDQ_BHSI (BINOP, umin, 3, NONE)
!   BUILTIN_VHSDF_DF (BINOP, smax_nan, 3, NONE)
!   BUILTIN_VHSDF_DF (BINOP, smin_nan, 3, NONE)
  
    /* Implemented by <maxmin_uns><mode>3.  */
!   BUILTIN_VHSDF_HSDF (BINOP, fmax, 3, FP)
!   BUILTIN_VHSDF_HSDF (BINOP, fmin, 3, FP)
  
    /* Implemented by aarch64_<maxmin_uns>p<mode>.  */
!   BUILTIN_VDQ_BHSI (BINOP, smaxp, 0, NONE)
!   BUILTIN_VDQ_BHSI (BINOP, sminp, 0, NONE)
!   BUILTIN_VDQ_BHSI (BINOP, umaxp, 0, NONE)
!   BUILTIN_VDQ_BHSI (BINOP, uminp, 0, NONE)
!   BUILTIN_VHSDF (BINOP, smaxp, 0, NONE)
!   BUILTIN_VHSDF (BINOP, sminp, 0, NONE)
!   BUILTIN_VHSDF (BINOP, smax_nanp, 0, NONE)
!   BUILTIN_VHSDF (BINOP, smin_nanp, 0, NONE)
  
    /* Implemented by <frint_pattern><mode>2.  */
!   BUILTIN_VHSDF (UNOP, btrunc, 2, FP)
!   BUILTIN_VHSDF (UNOP, ceil, 2, FP)
!   BUILTIN_VHSDF (UNOP, floor, 2, FP)
!   BUILTIN_VHSDF (UNOP, nearbyint, 2, FP)
!   BUILTIN_VHSDF (UNOP, rint, 2, FP)
!   BUILTIN_VHSDF (UNOP, round, 2, FP)
!   BUILTIN_VHSDF_HSDF (UNOP, frintn, 2, FP)
  
!   VAR1 (UNOP, btrunc, 2, FP, hf)
!   VAR1 (UNOP, ceil, 2, FP, hf)
!   VAR1 (UNOP, floor, 2, FP, hf)
!   VAR1 (UNOP, nearbyint, 2, FP, hf)
!   VAR1 (UNOP, rint, 2, FP, hf)
!   VAR1 (UNOP, round, 2, FP, hf)
  
    /* Implemented by l<fcvt_pattern><su_optab><VQDF:mode><vcvt_target>2.  */
!   VAR1 (UNOP, lbtruncv4hf, 2, FP, v4hi)
!   VAR1 (UNOP, lbtruncv8hf, 2, FP, v8hi)
!   VAR1 (UNOP, lbtruncv2sf, 2, FP, v2si)
!   VAR1 (UNOP, lbtruncv4sf, 2, FP, v4si)
!   VAR1 (UNOP, lbtruncv2df, 2, FP, v2di)
  
!   VAR1 (UNOPUS, lbtruncuv4hf, 2, FP, v4hi)
!   VAR1 (UNOPUS, lbtruncuv8hf, 2, FP, v8hi)
!   VAR1 (UNOPUS, lbtruncuv2sf, 2, FP, v2si)
!   VAR1 (UNOPUS, lbtruncuv4sf, 2, FP, v4si)
!   VAR1 (UNOPUS, lbtruncuv2df, 2, FP, v2di)
  
!   VAR1 (UNOP, lroundv4hf, 2, FP, v4hi)
!   VAR1 (UNOP, lroundv8hf, 2, FP, v8hi)
!   VAR1 (UNOP, lroundv2sf, 2, FP, v2si)
!   VAR1 (UNOP, lroundv4sf, 2, FP, v4si)
!   VAR1 (UNOP, lroundv2df, 2, FP, v2di)
    /* Implemented by l<fcvt_pattern><su_optab><GPF_F16:mode><GPI:mode>2.  */
!   BUILTIN_GPI_I16 (UNOP, lroundhf, 2, FP)
!   VAR1 (UNOP, lroundsf, 2, FP, si)
!   VAR1 (UNOP, lrounddf, 2, FP, di)
  
!   VAR1 (UNOPUS, lrounduv4hf, 2, FP, v4hi)
!   VAR1 (UNOPUS, lrounduv8hf, 2, FP, v8hi)
!   VAR1 (UNOPUS, lrounduv2sf, 2, FP, v2si)
!   VAR1 (UNOPUS, lrounduv4sf, 2, FP, v4si)
!   VAR1 (UNOPUS, lrounduv2df, 2, FP, v2di)
!   BUILTIN_GPI_I16 (UNOPUS, lrounduhf, 2, FP)
!   VAR1 (UNOPUS, lroundusf, 2, FP, si)
!   VAR1 (UNOPUS, lroundudf, 2, FP, di)
  
!   VAR1 (UNOP, lceilv4hf, 2, FP, v4hi)
!   VAR1 (UNOP, lceilv8hf, 2, FP, v8hi)
!   VAR1 (UNOP, lceilv2sf, 2, FP, v2si)
!   VAR1 (UNOP, lceilv4sf, 2, FP, v4si)
!   VAR1 (UNOP, lceilv2df, 2, FP, v2di)
!   BUILTIN_GPI_I16 (UNOP, lceilhf, 2, FP)
  
!   VAR1 (UNOPUS, lceiluv4hf, 2, FP, v4hi)
!   VAR1 (UNOPUS, lceiluv8hf, 2, FP, v8hi)
!   VAR1 (UNOPUS, lceiluv2sf, 2, FP, v2si)
!   VAR1 (UNOPUS, lceiluv4sf, 2, FP, v4si)
!   VAR1 (UNOPUS, lceiluv2df, 2, FP, v2di)
!   BUILTIN_GPI_I16 (UNOPUS, lceiluhf, 2, FP)
!   VAR1 (UNOPUS, lceilusf, 2, FP, si)
!   VAR1 (UNOPUS, lceiludf, 2, FP, di)
  
!   VAR1 (UNOP, lfloorv4hf, 2, FP, v4hi)
!   VAR1 (UNOP, lfloorv8hf, 2, FP, v8hi)
!   VAR1 (UNOP, lfloorv2sf, 2, FP, v2si)
!   VAR1 (UNOP, lfloorv4sf, 2, FP, v4si)
!   VAR1 (UNOP, lfloorv2df, 2, FP, v2di)
!   BUILTIN_GPI_I16 (UNOP, lfloorhf, 2, FP)
  
!   VAR1 (UNOPUS, lflooruv4hf, 2, FP, v4hi)
!   VAR1 (UNOPUS, lflooruv8hf, 2, FP, v8hi)
!   VAR1 (UNOPUS, lflooruv2sf, 2, FP, v2si)
!   VAR1 (UNOPUS, lflooruv4sf, 2, FP, v4si)
!   VAR1 (UNOPUS, lflooruv2df, 2, FP, v2di)
!   BUILTIN_GPI_I16 (UNOPUS, lflooruhf, 2, FP)
!   VAR1 (UNOPUS, lfloorusf, 2, FP, si)
!   VAR1 (UNOPUS, lfloorudf, 2, FP, di)
  
!   VAR1 (UNOP, lfrintnv4hf, 2, FP, v4hi)
!   VAR1 (UNOP, lfrintnv8hf, 2, FP, v8hi)
!   VAR1 (UNOP, lfrintnv2sf, 2, FP, v2si)
!   VAR1 (UNOP, lfrintnv4sf, 2, FP, v4si)
!   VAR1 (UNOP, lfrintnv2df, 2, FP, v2di)
!   BUILTIN_GPI_I16 (UNOP, lfrintnhf, 2, FP)
!   VAR1 (UNOP, lfrintnsf, 2, FP, si)
!   VAR1 (UNOP, lfrintndf, 2, FP, di)
  
!   VAR1 (UNOPUS, lfrintnuv4hf, 2, FP, v4hi)
!   VAR1 (UNOPUS, lfrintnuv8hf, 2, FP, v8hi)
!   VAR1 (UNOPUS, lfrintnuv2sf, 2, FP, v2si)
!   VAR1 (UNOPUS, lfrintnuv4sf, 2, FP, v4si)
!   VAR1 (UNOPUS, lfrintnuv2df, 2, FP, v2di)
!   BUILTIN_GPI_I16 (UNOPUS, lfrintnuhf, 2, FP)
!   VAR1 (UNOPUS, lfrintnusf, 2, FP, si)
!   VAR1 (UNOPUS, lfrintnudf, 2, FP, di)
  
    /* Implemented by <optab><fcvt_target><VDQF:mode>2.  */
!   VAR1 (UNOP, floatv4hi, 2, FP, v4hf)
!   VAR1 (UNOP, floatv8hi, 2, FP, v8hf)
!   VAR1 (UNOP, floatv2si, 2, FP, v2sf)
!   VAR1 (UNOP, floatv4si, 2, FP, v4sf)
!   VAR1 (UNOP, floatv2di, 2, FP, v2df)
  
!   VAR1 (UNOP, floatunsv4hi, 2, FP, v4hf)
!   VAR1 (UNOP, floatunsv8hi, 2, FP, v8hf)
!   VAR1 (UNOP, floatunsv2si, 2, FP, v2sf)
!   VAR1 (UNOP, floatunsv4si, 2, FP, v4sf)
!   VAR1 (UNOP, floatunsv2di, 2, FP, v2df)
  
!   VAR5 (UNOPU, bswap, 2, NONE, v4hi, v8hi, v2si, v4si, v2di)
  
!   BUILTIN_VB (UNOP, rbit, 0, NONE)
  
    /* Implemented by
       aarch64_<PERMUTE:perm_insn><mode>.  */
!   BUILTIN_VALL (BINOP, zip1, 0, AUTO_FP)
!   BUILTIN_VALL (BINOP, zip2, 0, AUTO_FP)
!   BUILTIN_VALL (BINOP, uzp1, 0, AUTO_FP)
!   BUILTIN_VALL (BINOP, uzp2, 0, AUTO_FP)
!   BUILTIN_VALL (BINOP, trn1, 0, AUTO_FP)
!   BUILTIN_VALL (BINOP, trn2, 0, AUTO_FP)
  
!   BUILTIN_GPF_F16 (UNOP, frecpe, 0, FP)
!   BUILTIN_GPF_F16 (UNOP, frecpx, 0, FP)
  
!   BUILTIN_VDQ_SI (UNOP, urecpe, 0, NONE)
  
!   BUILTIN_VHSDF (UNOP, frecpe, 0, FP)
!   BUILTIN_VHSDF_HSDF (BINOP, frecps, 0, FP)
  
    /* Implemented by a mixture of abs2 patterns.  Note the DImode builtin is
       only ever used for the int64x1_t intrinsic, there is no scalar version.  */
!   BUILTIN_VSDQ_I_DI (UNOP, abs, 0, AUTO_FP)
!   BUILTIN_VHSDF (UNOP, abs, 2, AUTO_FP)
!   VAR1 (UNOP, abs, 2, AUTO_FP, hf)
  
!   BUILTIN_VQ_HSF (UNOP, vec_unpacks_hi_, 10, FP)
!   VAR1 (BINOP, float_truncate_hi_, 0, FP, v4sf)
!   VAR1 (BINOP, float_truncate_hi_, 0, FP, v8hf)
  
!   VAR1 (UNOP, float_extend_lo_, 0, FP, v2df)
!   VAR1 (UNOP, float_extend_lo_,  0, FP, v4sf)
!   BUILTIN_VDF (UNOP, float_truncate_lo_, 0, FP)
  
    /* Implemented by aarch64_ld1<VALL_F16:mode>.  */
!   BUILTIN_VALL_F16 (LOAD1, ld1, 0, LOAD)
!   VAR1(STORE1P, ld1, 0, ALL, v2di)
  
    /* Implemented by aarch64_st1<VALL_F16:mode>.  */
!   BUILTIN_VALL_F16 (STORE1, st1, 0, STORE)
!   VAR1 (STORE1P, st1, 0, STORE, v2di)
  
    /* Implemented by aarch64_ld1x3<VALLDIF:mode>.  */
!   BUILTIN_VALLDIF (LOADSTRUCT, ld1x3, 0, LOAD)
  
    /* Implemented by aarch64_ld1x4<VALLDIF:mode>.  */
!   BUILTIN_VALLDIF (LOADSTRUCT, ld1x4, 0, LOAD)
  
    /* Implemented by aarch64_st1x2<VALLDIF:mode>.  */
!   BUILTIN_VALLDIF (STORESTRUCT, st1x2, 0, STORE)
  
    /* Implemented by aarch64_st1x3<VALLDIF:mode>.  */
!   BUILTIN_VALLDIF (STORESTRUCT, st1x3, 0, STORE)
  
    /* Implemented by aarch64_st1x4<VALLDIF:mode>.  */
!   BUILTIN_VALLDIF (STORESTRUCT, st1x4, 0, STORE)
  
    /* Implemented by fma<mode>4.  */
!   BUILTIN_VHSDF (TERNOP, fma, 4, FP)
!   VAR1 (TERNOP, fma, 4, FP, hf)
    /* Implemented by fnma<mode>4.  */
!   BUILTIN_VHSDF (TERNOP, fnma, 4, FP)
!   VAR1 (TERNOP, fnma, 4, FP, hf)
  
    /* Implemented by aarch64_simd_bsl<mode>.  */
!   BUILTIN_VDQQH (BSL_P, simd_bsl, 0, NONE)
!   VAR2 (BSL_P, simd_bsl,0, NONE, di, v2di)
!   BUILTIN_VSDQ_I_DI (BSL_U, simd_bsl, 0, NONE)
!   BUILTIN_VALLDIF (BSL_S, simd_bsl, 0, AUTO_FP)
  
    /* Implemented by aarch64_crypto_aes<op><mode>.  */
!   VAR1 (BINOPU, crypto_aese, 0, NONE, v16qi)
!   VAR1 (BINOPU, crypto_aesd, 0, NONE, v16qi)
!   VAR1 (UNOPU, crypto_aesmc, 0, NONE, v16qi)
!   VAR1 (UNOPU, crypto_aesimc, 0, NONE, v16qi)
  
    /* Implemented by aarch64_crypto_sha1<op><mode>.  */
!   VAR1 (UNOPU, crypto_sha1h, 0, NONE, si)
!   VAR1 (BINOPU, crypto_sha1su1, 0, NONE, v4si)
!   VAR1 (TERNOPU, crypto_sha1c, 0, NONE, v4si)
!   VAR1 (TERNOPU, crypto_sha1m, 0, NONE, v4si)
!   VAR1 (TERNOPU, crypto_sha1p, 0, NONE, v4si)
!   VAR1 (TERNOPU, crypto_sha1su0, 0, NONE, v4si)
  
    /* Implemented by aarch64_crypto_sha256<op><mode>.  */
!   VAR1 (TERNOPU, crypto_sha256h, 0, NONE, v4si)
!   VAR1 (TERNOPU, crypto_sha256h2, 0, NONE, v4si)
!   VAR1 (BINOPU, crypto_sha256su0, 0, NONE, v4si)
!   VAR1 (TERNOPU, crypto_sha256su1, 0, NONE, v4si)
  
    /* Implemented by aarch64_crypto_pmull<mode>.  */
!   VAR1 (BINOPP, crypto_pmull, 0, NONE, di)
!   VAR1 (BINOPP, crypto_pmull, 0, NONE, v2di)
  
    /* Implemented by aarch64_tbl3<mode>.  */
!   VAR1 (BINOP, tbl3, 0, NONE, v8qi)
!   VAR1 (BINOP, tbl3, 0, NONE, v16qi)
  
    /* Implemented by aarch64_qtbl3<mode>.  */
!   VAR1 (BINOP, qtbl3, 0, NONE, v8qi)
!   VAR1 (BINOP, qtbl3, 0, NONE, v16qi)
  
    /* Implemented by aarch64_qtbl4<mode>.  */
!   VAR1 (BINOP, qtbl4, 0, NONE, v8qi)
!   VAR1 (BINOP, qtbl4, 0, NONE, v16qi)
  
    /* Implemented by aarch64_tbx4<mode>.  */
!   VAR1 (TERNOP, tbx4, 0, NONE, v8qi)
!   VAR1 (TERNOP, tbx4, 0, NONE, v16qi)
  
    /* Implemented by aarch64_qtbx3<mode>.  */
!   VAR1 (TERNOP, qtbx3, 0, NONE, v8qi)
!   VAR1 (TERNOP, qtbx3, 0, NONE, v16qi)
  
    /* Implemented by aarch64_qtbx4<mode>.  */
!   VAR1 (TERNOP, qtbx4, 0, NONE, v8qi)
!   VAR1 (TERNOP, qtbx4, 0, NONE, v16qi)
  
    /* Builtins for ARMv8.1-A Adv.SIMD instructions.  */
  
    /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>.  */
!   BUILTIN_VSDQ_HSI (TERNOP, sqrdmlah, 0, NONE)
!   BUILTIN_VSDQ_HSI (TERNOP, sqrdmlsh, 0, NONE)
  
    /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>.  */
!   BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlah_lane, 0, NONE)
!   BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlsh_lane, 0, NONE)
  
    /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>.  */
!   BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlah_laneq, 0, NONE)
!   BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlsh_laneq, 0, NONE)
  
    /* Implemented by <FCVT_F2FIXED/FIXED2F:fcvt_fixed_insn><*><*>3.  */
!   BUILTIN_VSDQ_HSDI (SHIFTIMM, scvtf, 3, FP)
!   BUILTIN_VSDQ_HSDI (FCVTIMM_SUS, ucvtf, 3, FP)
!   BUILTIN_VHSDF_HSDF (SHIFTIMM, fcvtzs, 3, FP)
!   BUILTIN_VHSDF_HSDF (SHIFTIMM_USS, fcvtzu, 3, FP)
!   VAR1 (SHIFTIMM, scvtfsi, 3, FP, hf)
!   VAR1 (SHIFTIMM, scvtfdi, 3, FP, hf)
!   VAR1 (FCVTIMM_SUS, ucvtfsi, 3, FP, hf)
!   VAR1 (FCVTIMM_SUS, ucvtfdi, 3, FP, hf)
!   BUILTIN_GPI (SHIFTIMM, fcvtzshf, 3, FP)
!   BUILTIN_GPI (SHIFTIMM_USS, fcvtzuhf, 3, FP)
  
    /* Implemented by aarch64_rsqrte<mode>.  */
!   BUILTIN_VHSDF_HSDF (UNOP, rsqrte, 0, FP)
  
    /* Implemented by aarch64_rsqrts<mode>.  */
!   BUILTIN_VHSDF_HSDF (BINOP, rsqrts, 0, FP)
! 
!   /* Implemented by aarch64_ursqrte<mode>.  */
!   BUILTIN_VDQ_SI (UNOPU, ursqrte, 0, NONE)
  
    /* Implemented by fabd<mode>3.  */
!   BUILTIN_VHSDF_HSDF (BINOP, fabd, 3, FP)
  
    /* Implemented by aarch64_faddp<mode>.  */
!   BUILTIN_VHSDF (BINOP, faddp, 0, FP)
  
    /* Implemented by aarch64_cm<optab><mode>.  */
!   BUILTIN_VHSDF_HSDF (BINOP_USS, cmeq, 0, FP)
!   BUILTIN_VHSDF_HSDF (BINOP_USS, cmge, 0, FP)
!   BUILTIN_VHSDF_HSDF (BINOP_USS, cmgt, 0, FP)
!   BUILTIN_VHSDF_HSDF (BINOP_USS, cmle, 0, FP)
!   BUILTIN_VHSDF_HSDF (BINOP_USS, cmlt, 0, FP)
  
    /* Implemented by neg<mode>2.  */
!   BUILTIN_VHSDF_HSDF (UNOP, neg, 2, ALL)
  
    /* Implemented by aarch64_fac<optab><mode>.  */
!   BUILTIN_VHSDF_HSDF (BINOP_USS, faclt, 0, FP)
!   BUILTIN_VHSDF_HSDF (BINOP_USS, facle, 0, FP)
!   BUILTIN_VHSDF_HSDF (BINOP_USS, facgt, 0, FP)
!   BUILTIN_VHSDF_HSDF (BINOP_USS, facge, 0, FP)
  
    /* Implemented by sqrt<mode>2.  */
!   VAR1 (UNOP, sqrt, 2, FP, hf)
  
    /* Implemented by <optab><mode>hf2.  */
!   VAR1 (UNOP, floatdi, 2, FP, hf)
!   VAR1 (UNOP, floatsi, 2, FP, hf)
!   VAR1 (UNOP, floathi, 2, FP, hf)
!   VAR1 (UNOPUS, floatunsdi, 2, FP, hf)
!   VAR1 (UNOPUS, floatunssi, 2, FP, hf)
!   VAR1 (UNOPUS, floatunshi, 2, FP, hf)
!   BUILTIN_GPI_I16 (UNOP, fix_trunchf, 2, FP)
!   BUILTIN_GPI (UNOP, fix_truncsf, 2, FP)
!   BUILTIN_GPI (UNOP, fix_truncdf, 2, FP)
!   BUILTIN_GPI_I16 (UNOPUS, fixuns_trunchf, 2, FP)
!   BUILTIN_GPI (UNOPUS, fixuns_truncsf, 2, FP)
!   BUILTIN_GPI (UNOPUS, fixuns_truncdf, 2, FP)
  
    /* Implemented by aarch64_sm3ss1qv4si.  */
!   VAR1 (TERNOPU, sm3ss1q, 0, NONE, v4si)
    /* Implemented by aarch64_sm3tt<sm3tt_op>qv4si.  */
!   VAR1 (QUADOPUI, sm3tt1aq, 0, NONE, v4si)
!   VAR1 (QUADOPUI, sm3tt1bq, 0, NONE, v4si)
!   VAR1 (QUADOPUI, sm3tt2aq, 0, NONE, v4si)
!   VAR1 (QUADOPUI, sm3tt2bq, 0, NONE, v4si)
    /* Implemented by aarch64_sm3partw<sm3part_op>qv4si.  */
!   VAR1 (TERNOPU, sm3partw1q, 0, NONE, v4si)
!   VAR1 (TERNOPU, sm3partw2q, 0, NONE, v4si)
    /* Implemented by aarch64_sm4eqv4si.  */
!   VAR1 (BINOPU, sm4eq, 0, NONE, v4si)
    /* Implemented by aarch64_sm4ekeyqv4si.  */
!   VAR1 (BINOPU, sm4ekeyq, 0, NONE, v4si)
    /* Implemented by aarch64_crypto_sha512hqv2di.  */
!   VAR1 (TERNOPU, crypto_sha512hq, 0, NONE, v2di)
    /* Implemented by aarch64_sha512h2qv2di.  */
!   VAR1 (TERNOPU, crypto_sha512h2q, 0, NONE, v2di)
    /* Implemented by aarch64_crypto_sha512su0qv2di.  */
!   VAR1 (BINOPU, crypto_sha512su0q, 0, NONE, v2di)
    /* Implemented by aarch64_crypto_sha512su1qv2di.  */
!   VAR1 (TERNOPU, crypto_sha512su1q, 0, NONE, v2di)
    /* Implemented by eor3q<mode>4.  */
!   BUILTIN_VQ_I (TERNOPU, eor3q, 4, NONE)
!   BUILTIN_VQ_I (TERNOP, eor3q, 4, NONE)
    /* Implemented by aarch64_rax1qv2di.  */
!   VAR1 (BINOPU, rax1q, 0, NONE, v2di)
    /* Implemented by aarch64_xarqv2di.  */
!   VAR1 (TERNOPUI, xarq, 0, NONE, v2di)
    /* Implemented by bcaxq<mode>4.  */
!   BUILTIN_VQ_I (TERNOPU, bcaxq, 4, NONE)
!   BUILTIN_VQ_I (TERNOP, bcaxq, 4, NONE)
  
    /* Implemented by aarch64_fml<f16mac1>l<f16quad>_low<mode>.  */
!   VAR1 (TERNOP, fmlal_low, 0, FP, v2sf)
!   VAR1 (TERNOP, fmlsl_low, 0, FP, v2sf)
!   VAR1 (TERNOP, fmlalq_low, 0, FP, v4sf)
!   VAR1 (TERNOP, fmlslq_low, 0, FP, v4sf)
    /* Implemented by aarch64_fml<f16mac1>l<f16quad>_high<mode>.  */
!   VAR1 (TERNOP, fmlal_high, 0, FP, v2sf)
!   VAR1 (TERNOP, fmlsl_high, 0, FP, v2sf)
!   VAR1 (TERNOP, fmlalq_high, 0, FP, v4sf)
!   VAR1 (TERNOP, fmlslq_high, 0, FP, v4sf)
    /* Implemented by aarch64_fml<f16mac1>l_lane_lowv2sf.  */
!   VAR1 (QUADOP_LANE, fmlal_lane_low, 0, FP, v2sf)
!   VAR1 (QUADOP_LANE, fmlsl_lane_low, 0, FP, v2sf)
    /* Implemented by aarch64_fml<f16mac1>l_laneq_lowv2sf.  */
!   VAR1 (QUADOP_LANE, fmlal_laneq_low, 0, FP, v2sf)
!   VAR1 (QUADOP_LANE, fmlsl_laneq_low, 0, FP, v2sf)
    /* Implemented by aarch64_fml<f16mac1>lq_lane_lowv4sf.  */
!   VAR1 (QUADOP_LANE, fmlalq_lane_low, 0, FP, v4sf)
!   VAR1 (QUADOP_LANE, fmlslq_lane_low, 0, FP, v4sf)
    /* Implemented by aarch64_fml<f16mac1>lq_laneq_lowv4sf.  */
!   VAR1 (QUADOP_LANE, fmlalq_laneq_low, 0, FP, v4sf)
!   VAR1 (QUADOP_LANE, fmlslq_laneq_low, 0, FP, v4sf)
    /* Implemented by aarch64_fml<f16mac1>l_lane_highv2sf.  */
!   VAR1 (QUADOP_LANE, fmlal_lane_high, 0, FP, v2sf)
!   VAR1 (QUADOP_LANE, fmlsl_lane_high, 0, FP, v2sf)
    /* Implemented by aarch64_fml<f16mac1>l_laneq_highv2sf.  */
!   VAR1 (QUADOP_LANE, fmlal_laneq_high, 0, FP, v2sf)
!   VAR1 (QUADOP_LANE, fmlsl_laneq_high, 0, FP, v2sf)
    /* Implemented by aarch64_fml<f16mac1>lq_lane_highv4sf.  */
!   VAR1 (QUADOP_LANE, fmlalq_lane_high, 0, FP, v4sf)
!   VAR1 (QUADOP_LANE, fmlslq_lane_high, 0, FP, v4sf)
    /* Implemented by aarch64_fml<f16mac1>lq_laneq_highv4sf.  */
!   VAR1 (QUADOP_LANE, fmlalq_laneq_high, 0, FP, v4sf)
!   VAR1 (QUADOP_LANE, fmlslq_laneq_high, 0, FP, v4sf)
  
    /* Implemented by aarch64_<frintnzs_op><mode>.  */
!   BUILTIN_VSFDF (UNOP, frint32z, 0, FP)
!   BUILTIN_VSFDF (UNOP, frint32x, 0, FP)
!   BUILTIN_VSFDF (UNOP, frint64z, 0, FP)
!   BUILTIN_VSFDF (UNOP, frint64x, 0, FP)
  
    /* Implemented by aarch64_bfdot{_lane}{q}<mode>.  */
!   VAR2 (TERNOP, bfdot, 0, AUTO_FP, v2sf, v4sf)
!   VAR2 (QUADOP_LANE_PAIR, bfdot_lane, 0, AUTO_FP, v2sf, v4sf)
!   VAR2 (QUADOP_LANE_PAIR, bfdot_laneq, 0, AUTO_FP, v2sf, v4sf)
  
    /* Implemented by aarch64_bfmmlaqv4sf  */
!   VAR1 (TERNOP, bfmmlaq, 0, AUTO_FP, v4sf)
  
    /* Implemented by aarch64_bfmlal<bt>{_lane{q}}v4sf  */
!   VAR1 (TERNOP, bfmlalb, 0, FP, v4sf)
!   VAR1 (TERNOP, bfmlalt, 0, FP, v4sf)
!   VAR1 (QUADOP_LANE, bfmlalb_lane, 0, FP, v4sf)
!   VAR1 (QUADOP_LANE, bfmlalt_lane, 0, FP, v4sf)
!   VAR1 (QUADOP_LANE, bfmlalb_lane_q, 0, FP, v4sf)
!   VAR1 (QUADOP_LANE, bfmlalt_lane_q, 0, FP, v4sf)
  
    /* Implemented by aarch64_vget_lo/hi_halfv8bf.  */
!   VAR1 (UNOP, vget_lo_half, 0, AUTO_FP, v8bf)
!   VAR1 (UNOP, vget_hi_half, 0, AUTO_FP, v8bf)
  
    /* Implemented by aarch64_simd_<sur>mmlav16qi.  */
!   VAR1 (TERNOP, simd_smmla, 0, NONE, v16qi)
!   VAR1 (TERNOPU, simd_ummla, 0, NONE, v16qi)
!   VAR1 (TERNOP_SSUS, simd_usmmla, 0, NONE, v16qi)
  
    /* Implemented by aarch64_bfcvtn{q}{2}<mode>  */
!   VAR1 (UNOP, bfcvtn, 0, FP, v4bf)
!   VAR1 (UNOP, bfcvtn_q, 0, FP, v8bf)
!   VAR1 (BINOP, bfcvtn2, 0, FP, v8bf)
!   VAR1 (UNOP, bfcvt, 0, FP, bf)
  
    /* Implemented by aarch64_{v}bfcvt{_high}<mode>.  */
!   VAR2 (UNOP, vbfcvt, 0, AUTO_FP, v4bf, v8bf)
!   VAR1 (UNOP, vbfcvt_high, 0, AUTO_FP, v8bf)
!   VAR1 (UNOP, bfcvt, 0, AUTO_FP, sf)
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-simd.md gcc-11.1.0/gcc/config/aarch64/aarch64-simd.md
*** gcc-10.3.0/gcc/config/aarch64/aarch64-simd.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-simd.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description for AArch64 AdvSIMD architecture.
! ;; Copyright (C) 2011-2020 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AArch64 AdvSIMD architecture.
! ;; Copyright (C) 2011-2021 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 35,40 ****
--- 35,51 ----
  		&& aarch64_mem_pair_operand (operands[0], DImode))
  	       || known_eq (GET_MODE_SIZE (<MODE>mode), 8))))
        operands[1] = force_reg (<MODE>mode, operands[1]);
+ 
+   /* If a constant is too complex to force to memory (e.g. because it
+      contains CONST_POLY_INTs), build it up from individual elements instead.
+      We should only need to do this before RA; aarch64_legitimate_constant_p
+      should ensure that we don't try to rematerialize the constant later.  */
+   if (GET_CODE (operands[1]) == CONST_VECTOR
+       && targetm.cannot_force_const_mem (<MODE>mode, operands[1]))
+     {
+       aarch64_expand_vector_init (operands[0], operands[1]);
+       DONE;
+     }
    "
  )
  
***************
*** 187,193 ****
  		   plus_constant (Pmode,
  				  XEXP (operands[1], 0),
  				  GET_MODE_SIZE (<DREG:MODE>mode)))"
!   "ldp\\t%d0, %d2, %1"
    [(set_attr "type" "neon_ldp")]
  )
  
--- 198,204 ----
  		   plus_constant (Pmode,
  				  XEXP (operands[1], 0),
  				  GET_MODE_SIZE (<DREG:MODE>mode)))"
!   "ldp\\t%d0, %d2, %z1"
    [(set_attr "type" "neon_ldp")]
  )
  
***************
*** 201,207 ****
  		   plus_constant (Pmode,
  				  XEXP (operands[0], 0),
  				  GET_MODE_SIZE (<DREG:MODE>mode)))"
!   "stp\\t%d1, %d3, %0"
    [(set_attr "type" "neon_stp")]
  )
  
--- 212,218 ----
  		   plus_constant (Pmode,
  				  XEXP (operands[0], 0),
  				  GET_MODE_SIZE (<DREG:MODE>mode)))"
!   "stp\\t%d1, %d3, %z0"
    [(set_attr "type" "neon_stp")]
  )
  
***************
*** 215,221 ****
  		    plus_constant (Pmode,
  			       XEXP (operands[1], 0),
  			       GET_MODE_SIZE (<VQ:MODE>mode)))"
!   "ldp\\t%q0, %q2, %1"
    [(set_attr "type" "neon_ldp_q")]
  )
  
--- 226,232 ----
  		    plus_constant (Pmode,
  			       XEXP (operands[1], 0),
  			       GET_MODE_SIZE (<VQ:MODE>mode)))"
!   "ldp\\t%q0, %q2, %z1"
    [(set_attr "type" "neon_ldp_q")]
  )
  
***************
*** 228,234 ****
  		plus_constant (Pmode,
  			       XEXP (operands[0], 0),
  			       GET_MODE_SIZE (<VQ:MODE>mode)))"
!   "stp\\t%q1, %q3, %0"
    [(set_attr "type" "neon_stp_q")]
  )
  
--- 239,245 ----
  		plus_constant (Pmode,
  			       XEXP (operands[0], 0),
  			       GET_MODE_SIZE (<VQ:MODE>mode)))"
!   "stp\\t%q1, %q3, %z0"
    [(set_attr "type" "neon_stp_q")]
  )
  
***************
*** 297,302 ****
--- 308,335 ----
    "TARGET_SIMD"
  )
  
+ (define_expand "aarch64_get_low<mode>"
+   [(match_operand:<VHALF> 0 "register_operand")
+    (match_operand:VQMOV 1 "register_operand")]
+   "TARGET_SIMD"
+   {
+     rtx lo = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, false);
+     emit_insn (gen_aarch64_get_half<mode> (operands[0], operands[1], lo));
+     DONE;
+   }
+ )
+ 
+ (define_expand "aarch64_get_high<mode>"
+   [(match_operand:<VHALF> 0 "register_operand")
+    (match_operand:VQMOV 1 "register_operand")]
+   "TARGET_SIMD"
+   {
+     rtx hi = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, true);
+     emit_insn (gen_aarch64_get_half<mode> (operands[0], operands[1], hi));
+     DONE;
+   }
+ )
+ 
  (define_insn_and_split "aarch64_simd_mov_from_<mode>low"
    [(set (match_operand:<VHALF> 0 "register_operand" "=w,?r")
          (vec_select:<VHALF>
***************
*** 449,454 ****
--- 482,495 ----
    [(set_attr "type" "neon_fcadd")]
  )
  
+ (define_expand "cadd<rot><mode>3"
+   [(set (match_operand:VHSDF 0 "register_operand")
+ 	(unspec:VHSDF [(match_operand:VHSDF 1 "register_operand")
+ 		       (match_operand:VHSDF 2 "register_operand")]
+ 		       FCADD))]
+   "TARGET_COMPLEX && !BYTES_BIG_ENDIAN"
+ )
+ 
  (define_insn "aarch64_fcmla<rot><mode>"
    [(set (match_operand:VHSDF 0 "register_operand" "=w")
  	(plus:VHSDF (match_operand:VHSDF 1 "register_operand" "0")
***************
*** 508,513 ****
--- 549,592 ----
    [(set_attr "type" "neon_fcmla")]
  )
  
+ ;; The complex mla/mls operations always need to expand to two instructions.
+ ;; The first operation does half the computation and the second does the
+ ;; remainder.  Because of this, expand early.
+ (define_expand "cml<fcmac1><conj_op><mode>4"
+   [(set (match_operand:VHSDF 0 "register_operand")
+ 	(plus:VHSDF (match_operand:VHSDF 1 "register_operand")
+ 		    (unspec:VHSDF [(match_operand:VHSDF 2 "register_operand")
+ 				   (match_operand:VHSDF 3 "register_operand")]
+ 				   FCMLA_OP)))]
+   "TARGET_COMPLEX && !BYTES_BIG_ENDIAN"
+ {
+   rtx tmp = gen_reg_rtx (<MODE>mode);
+   emit_insn (gen_aarch64_fcmla<rotsplit1><mode> (tmp, operands[1],
+ 						 operands[3], operands[2]));
+   emit_insn (gen_aarch64_fcmla<rotsplit2><mode> (operands[0], tmp,
+ 						 operands[3], operands[2]));
+   DONE;
+ })
+ 
+ ;; The complex mul operations always need to expand to two instructions.
+ ;; The first operation does half the computation and the second does the
+ ;; remainder.  Because of this, expand early.
+ (define_expand "cmul<conj_op><mode>3"
+   [(set (match_operand:VHSDF 0 "register_operand")
+ 	(unspec:VHSDF [(match_operand:VHSDF 1 "register_operand")
+ 		       (match_operand:VHSDF 2 "register_operand")]
+ 		       FCMUL_OP))]
+   "TARGET_COMPLEX && !BYTES_BIG_ENDIAN"
+ {
+   rtx tmp = force_reg (<MODE>mode, CONST0_RTX (<MODE>mode));
+   rtx res1 = gen_reg_rtx (<MODE>mode);
+   emit_insn (gen_aarch64_fcmla<rotsplit1><mode> (res1, tmp,
+ 						 operands[2], operands[1]));
+   emit_insn (gen_aarch64_fcmla<rotsplit2><mode> (operands[0], res1,
+ 						 operands[2], operands[1]));
+   DONE;
+ })
+ 
  ;; These instructions map to the __builtins for the Dot Product operations.
  (define_insn "aarch64_<sur>dot<vsi2qi>"
    [(set (match_operand:VS 0 "register_operand" "=w")
***************
*** 709,714 ****
--- 788,801 ----
    DONE;
  })
  
+ (define_insn "aarch64_ursqrte<mode>"
+ [(set (match_operand:VDQ_SI 0 "register_operand" "=w")
+       (unspec:VDQ_SI [(match_operand:VDQ_SI 1 "register_operand" "w")]
+ 		   UNSPEC_RSQRTE))]
+ "TARGET_SIMD"
+ "ursqrte\\t%<v>0<Vmtype>, %<v>1<Vmtype>"
+ [(set_attr "type" "neon_fp_rsqrte_<stype><q>")])
+ 
  (define_insn "*aarch64_mul3_elt_to_64v2df"
    [(set (match_operand:DF 0 "register_operand" "=w")
       (mult:DF
***************
*** 758,764 ****
  ;; So (ABS:QI (minus:QI 64 -128)) == (ABS:QI (192 or -64 signed)) == 64.
  ;; Whereas SABD would return 192 (-64 signed) on the above example.
  ;; Use MINUS ([us]max (op1, op2), [us]min (op1, op2)) instead.
! (define_insn "aarch64_<su>abd<mode>_3"
    [(set (match_operand:VDQ_BHSI 0 "register_operand" "=w")
  	(minus:VDQ_BHSI
  	  (USMAX:VDQ_BHSI
--- 845,851 ----
  ;; So (ABS:QI (minus:QI 64 -128)) == (ABS:QI (192 or -64 signed)) == 64.
  ;; Whereas SABD would return 192 (-64 signed) on the above example.
  ;; Use MINUS ([us]max (op1, op2), [us]min (op1, op2)) instead.
! (define_insn "aarch64_<su>abd<mode>"
    [(set (match_operand:VDQ_BHSI 0 "register_operand" "=w")
  	(minus:VDQ_BHSI
  	  (USMAX:VDQ_BHSI
***************
*** 772,805 ****
    [(set_attr "type" "neon_abd<q>")]
  )
  
! (define_insn "aarch64_<sur>abdl2<mode>_3"
    [(set (match_operand:<VDBLW> 0 "register_operand" "=w")
! 	(unspec:<VDBLW> [(match_operand:VDQV_S 1 "register_operand" "w")
! 			  (match_operand:VDQV_S 2 "register_operand" "w")]
  	ABDL2))]
    "TARGET_SIMD"
    "<sur>abdl2\t%0.<Vwtype>, %1.<Vtype>, %2.<Vtype>"
    [(set_attr "type" "neon_abd<q>")]
  )
  
! (define_insn "aarch64_<sur>abal<mode>_4"
!   [(set (match_operand:<VDBLW> 0 "register_operand" "=w")
! 	(unspec:<VDBLW> [(match_operand:VDQV_S 1 "register_operand" "w")
! 			  (match_operand:VDQV_S 2 "register_operand" "w")
! 			 (match_operand:<VDBLW> 3 "register_operand" "0")]
  	ABAL))]
    "TARGET_SIMD"
!   "<sur>abal\t%0.<Vwtype>, %1.<Vhalftype>, %2.<Vhalftype>"
    [(set_attr "type" "neon_arith_acc<q>")]
  )
  
! (define_insn "aarch64_<sur>adalp<mode>_3"
    [(set (match_operand:<VDBLW> 0 "register_operand" "=w")
! 	(unspec:<VDBLW> [(match_operand:VDQV_S 1 "register_operand" "w")
! 			  (match_operand:<VDBLW> 2 "register_operand" "0")]
  	ADALP))]
    "TARGET_SIMD"
!   "<sur>adalp\t%0.<Vwtype>, %1.<Vtype>"
    [(set_attr "type" "neon_reduc_add<q>")]
  )
  
--- 859,914 ----
    [(set_attr "type" "neon_abd<q>")]
  )
  
! 
! (define_insn "aarch64_<sur>abdl<mode>"
!   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
! 	(unspec:<VWIDE> [(match_operand:VD_BHSI 1 "register_operand" "w")
! 			 (match_operand:VD_BHSI 2 "register_operand" "w")]
! 	ABDL))]
!   "TARGET_SIMD"
!   "<sur>abdl\t%0.<Vwtype>, %1.<Vtype>, %2.<Vtype>"
!   [(set_attr "type" "neon_abd<q>")]
! )
! 
! (define_insn "aarch64_<sur>abdl2<mode>"
    [(set (match_operand:<VDBLW> 0 "register_operand" "=w")
! 	(unspec:<VDBLW> [(match_operand:VQW 1 "register_operand" "w")
! 			 (match_operand:VQW 2 "register_operand" "w")]
  	ABDL2))]
    "TARGET_SIMD"
    "<sur>abdl2\t%0.<Vwtype>, %1.<Vtype>, %2.<Vtype>"
    [(set_attr "type" "neon_abd<q>")]
  )
  
! (define_insn "aarch64_<sur>abal<mode>"
!   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
! 	(unspec:<VWIDE> [(match_operand:VD_BHSI 2 "register_operand" "w")
! 			  (match_operand:VD_BHSI 3 "register_operand" "w")
! 			 (match_operand:<VWIDE> 1 "register_operand" "0")]
  	ABAL))]
    "TARGET_SIMD"
!   "<sur>abal\t%0.<Vwtype>, %2.<Vtype>, %3.<Vtype>"
    [(set_attr "type" "neon_arith_acc<q>")]
  )
  
! (define_insn "aarch64_<sur>abal2<mode>"
!   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
! 	(unspec:<VWIDE> [(match_operand:VQW 2 "register_operand" "w")
! 			  (match_operand:VQW 3 "register_operand" "w")
! 			 (match_operand:<VWIDE> 1 "register_operand" "0")]
! 	ABAL2))]
!   "TARGET_SIMD"
!   "<sur>abal2\t%0.<Vwtype>, %2.<Vtype>, %3.<Vtype>"
!   [(set_attr "type" "neon_arith_acc<q>")]
! )
! 
! (define_insn "aarch64_<sur>adalp<mode>"
    [(set (match_operand:<VDBLW> 0 "register_operand" "=w")
! 	(unspec:<VDBLW> [(match_operand:VDQV_S 2 "register_operand" "w")
! 			  (match_operand:<VDBLW> 1 "register_operand" "0")]
  	ADALP))]
    "TARGET_SIMD"
!   "<sur>adalp\t%0.<Vwhalf>, %2.<Vtype>"
    [(set_attr "type" "neon_reduc_add<q>")]
  )
  
***************
*** 809,815 ****
  ;; operand 3 before copying that into the result operand 0.
  ;; Perform that with a sequence of:
  ;; UABDL2	tmp.8h, op1.16b, op2.16b
! ;; UABAL	tmp.8h, op1.16b, op2.16b
  ;; UADALP	op3.4s, tmp.8h
  ;; MOV		op0, op3 // should be eliminated in later passes.
  ;;
--- 918,924 ----
  ;; operand 3 before copying that into the result operand 0.
  ;; Perform that with a sequence of:
  ;; UABDL2	tmp.8h, op1.16b, op2.16b
! ;; UABAL	tmp.8h, op1.8b, op2.8b
  ;; UADALP	op3.4s, tmp.8h
  ;; MOV		op0, op3 // should be eliminated in later passes.
  ;;
***************
*** 834,864 ****
        {
  	rtx ones = force_reg (V16QImode, CONST1_RTX (V16QImode));
  	rtx abd = gen_reg_rtx (V16QImode);
! 	emit_insn (gen_aarch64_<sur>abdv16qi_3 (abd, operands[1], operands[2]));
  	emit_insn (gen_aarch64_udotv16qi (operands[0], operands[3],
  					  abd, ones));
  	DONE;
        }
      rtx reduc = gen_reg_rtx (V8HImode);
!     emit_insn (gen_aarch64_<sur>abdl2v16qi_3 (reduc, operands[1],
! 					       operands[2]));
!     emit_insn (gen_aarch64_<sur>abalv16qi_4 (reduc, operands[1],
! 					      operands[2], reduc));
!     emit_insn (gen_aarch64_<sur>adalpv8hi_3 (operands[3], reduc,
! 					      operands[3]));
      emit_move_insn (operands[0], operands[3]);
      DONE;
    }
  )
  
! (define_insn "aba<mode>_3"
    [(set (match_operand:VDQ_BHSI 0 "register_operand" "=w")
! 	(plus:VDQ_BHSI (abs:VDQ_BHSI (minus:VDQ_BHSI
! 			 (match_operand:VDQ_BHSI 1 "register_operand" "w")
! 			 (match_operand:VDQ_BHSI 2 "register_operand" "w")))
! 		       (match_operand:VDQ_BHSI 3 "register_operand" "0")))]
    "TARGET_SIMD"
!   "saba\t%0.<Vtype>, %1.<Vtype>, %2.<Vtype>"
    [(set_attr "type" "neon_arith_acc<q>")]
  )
  
--- 943,978 ----
        {
  	rtx ones = force_reg (V16QImode, CONST1_RTX (V16QImode));
  	rtx abd = gen_reg_rtx (V16QImode);
! 	emit_insn (gen_aarch64_<sur>abdv16qi (abd, operands[1], operands[2]));
  	emit_insn (gen_aarch64_udotv16qi (operands[0], operands[3],
  					  abd, ones));
  	DONE;
        }
      rtx reduc = gen_reg_rtx (V8HImode);
!     emit_insn (gen_aarch64_<sur>abdl2v16qi (reduc, operands[1],
! 					    operands[2]));
!     emit_insn (gen_aarch64_<sur>abalv8qi (reduc, reduc,
! 					  gen_lowpart (V8QImode, operands[1]),
! 					  gen_lowpart (V8QImode,
! 						       operands[2])));
!     emit_insn (gen_aarch64_<sur>adalpv8hi (operands[3], operands[3], reduc));
      emit_move_insn (operands[0], operands[3]);
      DONE;
    }
  )
  
! (define_insn "aarch64_<su>aba<mode>"
    [(set (match_operand:VDQ_BHSI 0 "register_operand" "=w")
! 	(plus:VDQ_BHSI (minus:VDQ_BHSI
! 			 (USMAX:VDQ_BHSI
! 			   (match_operand:VDQ_BHSI 2 "register_operand" "w")
! 			   (match_operand:VDQ_BHSI 3 "register_operand" "w"))
! 			 (<max_opp>:VDQ_BHSI
! 			   (match_dup 2)
! 			   (match_dup 3)))
! 		       (match_operand:VDQ_BHSI 1 "register_operand" "0")))]
    "TARGET_SIMD"
!   "<su>aba\t%0.<Vtype>, %2.<Vtype>, %3.<Vtype>"
    [(set_attr "type" "neon_arith_acc<q>")]
  )
  
***************
*** 958,964 ****
    [(set_attr "type" "neon_ins<q>, neon_from_gp<q>, neon_load1_one_lane<q>")]
  )
  
! (define_insn "*aarch64_simd_vec_copy_lane<mode>"
    [(set (match_operand:VALL_F16 0 "register_operand" "=w")
  	(vec_merge:VALL_F16
  	    (vec_duplicate:VALL_F16
--- 1072,1078 ----
    [(set_attr "type" "neon_ins<q>, neon_from_gp<q>, neon_load1_one_lane<q>")]
  )
  
! (define_insn "@aarch64_simd_vec_copy_lane<mode>"
    [(set (match_operand:VALL_F16 0 "register_operand" "=w")
  	(vec_merge:VALL_F16
  	    (vec_duplicate:VALL_F16
***************
*** 1335,1349 ****
    [(set_attr "type" "neon_mla_<Vetype>_scalar<q>")]
  )
  
! (define_insn "*aarch64_mla_elt_merge<mode>"
!   [(set (match_operand:VDQHS 0 "register_operand" "=w")
  	(plus:VDQHS
! 	  (mult:VDQHS (vec_duplicate:VDQHS
! 		  (match_operand:<VEL> 1 "register_operand" "<h_con>"))
! 		(match_operand:VDQHS 2 "register_operand" "w"))
! 	  (match_operand:VDQHS 3 "register_operand" "0")))]
   "TARGET_SIMD"
!  "mla\t%0.<Vtype>, %2.<Vtype>, %1.<Vetype>[0]"
    [(set_attr "type" "neon_mla_<Vetype>_scalar<q>")]
  )
  
--- 1449,1464 ----
    [(set_attr "type" "neon_mla_<Vetype>_scalar<q>")]
  )
  
! (define_insn "aarch64_mla_n<mode>"
!  [(set (match_operand:VDQHS 0 "register_operand" "=w")
  	(plus:VDQHS
! 	  (mult:VDQHS
! 	    (vec_duplicate:VDQHS
! 	      (match_operand:<VEL> 3 "register_operand" "<h_con>"))
! 	    (match_operand:VDQHS 2 "register_operand" "w"))
! 	  (match_operand:VDQHS 1 "register_operand" "0")))]
   "TARGET_SIMD"
!  "mla\t%0.<Vtype>, %2.<Vtype>, %3.<Vetype>[0]"
    [(set_attr "type" "neon_mla_<Vetype>_scalar<q>")]
  )
  
***************
*** 1393,1407 ****
    [(set_attr "type" "neon_mla_<Vetype>_scalar<q>")]
  )
  
! (define_insn "*aarch64_mls_elt_merge<mode>"
    [(set (match_operand:VDQHS 0 "register_operand" "=w")
  	(minus:VDQHS
  	  (match_operand:VDQHS 1 "register_operand" "0")
! 	  (mult:VDQHS (vec_duplicate:VDQHS
! 		  (match_operand:<VEL> 2 "register_operand" "<h_con>"))
! 		(match_operand:VDQHS 3 "register_operand" "w"))))]
    "TARGET_SIMD"
!   "mls\t%0.<Vtype>, %3.<Vtype>, %2.<Vetype>[0]"
    [(set_attr "type" "neon_mla_<Vetype>_scalar<q>")]
  )
  
--- 1508,1523 ----
    [(set_attr "type" "neon_mla_<Vetype>_scalar<q>")]
  )
  
! (define_insn "aarch64_mls_n<mode>"
    [(set (match_operand:VDQHS 0 "register_operand" "=w")
  	(minus:VDQHS
  	  (match_operand:VDQHS 1 "register_operand" "0")
! 	  (mult:VDQHS
! 	    (vec_duplicate:VDQHS
! 	      (match_operand:<VEL> 3 "register_operand" "<h_con>"))
! 	    (match_operand:VDQHS 2 "register_operand" "w"))))]
    "TARGET_SIMD"
!   "mls\t%0.<Vtype>, %2.<Vtype>, %3.<Vetype>[0]"
    [(set_attr "type" "neon_mla_<Vetype>_scalar<q>")]
  )
  
***************
*** 1599,1604 ****
--- 1715,1904 ----
    DONE;
  })
  
+ (define_insn "aarch64_shrn<mode>_insn_le"
+   [(set (match_operand:<VNARROWQ2> 0 "register_operand" "=w")
+ 	(vec_concat:<VNARROWQ2>
+ 	  (truncate:<VNARROWQ>
+ 	    (lshiftrt:VQN (match_operand:VQN 1 "register_operand" "w")
+ 	      (match_operand:VQN 2 "aarch64_simd_shift_imm_vec_<vn_mode>")))
+ 	  (match_operand:<VNARROWQ> 3 "aarch64_simd_or_scalar_imm_zero")))]
+   "TARGET_SIMD && !BYTES_BIG_ENDIAN"
+   "shrn\\t%0.<Vntype>, %1.<Vtype>, %2"
+   [(set_attr "type" "neon_shift_imm_narrow_q")]
+ )
+ 
+ (define_insn "aarch64_shrn<mode>_insn_be"
+   [(set (match_operand:<VNARROWQ2> 0 "register_operand" "=w")
+ 	(vec_concat:<VNARROWQ2>
+ 	  (match_operand:<VNARROWQ> 3 "aarch64_simd_or_scalar_imm_zero")
+ 	  (truncate:<VNARROWQ>
+ 	    (lshiftrt:VQN (match_operand:VQN 1 "register_operand" "w")
+ 	      (match_operand:VQN 2 "aarch64_simd_shift_imm_vec_<vn_mode>")))))]
+   "TARGET_SIMD && BYTES_BIG_ENDIAN"
+   "shrn\\t%0.<Vntype>, %1.<Vtype>, %2"
+   [(set_attr "type" "neon_shift_imm_narrow_q")]
+ )
+ 
+ (define_expand "aarch64_shrn<mode>"
+   [(set (match_operand:<VNARROWQ> 0 "register_operand")
+ 	(truncate:<VNARROWQ>
+ 	  (lshiftrt:VQN (match_operand:VQN 1 "register_operand")
+ 	    (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<vn_mode>"))))]
+   "TARGET_SIMD"
+   {
+     operands[2] = aarch64_simd_gen_const_vector_dup (<MODE>mode,
+ 						 INTVAL (operands[2]));
+     rtx tmp = gen_reg_rtx (<VNARROWQ2>mode);
+     if (BYTES_BIG_ENDIAN)
+       emit_insn (gen_aarch64_shrn<mode>_insn_be (tmp, operands[1],
+ 				operands[2], CONST0_RTX (<VNARROWQ>mode)));
+     else
+       emit_insn (gen_aarch64_shrn<mode>_insn_le (tmp, operands[1],
+ 				operands[2], CONST0_RTX (<VNARROWQ>mode)));
+ 
+     /* The intrinsic expects a narrow result, so emit a subreg that will get
+        optimized away as appropriate.  */
+     emit_move_insn (operands[0], lowpart_subreg (<VNARROWQ>mode, tmp,
+ 						 <VNARROWQ2>mode));
+     DONE;
+   }
+ )
+ 
+ (define_insn "aarch64_rshrn<mode>_insn_le"
+   [(set (match_operand:<VNARROWQ2> 0 "register_operand" "=w")
+ 	(vec_concat:<VNARROWQ2>
+ 	  (unspec:<VNARROWQ> [(match_operand:VQN 1 "register_operand" "w")
+ 		(match_operand:VQN 2
+ 		  "aarch64_simd_shift_imm_vec_<vn_mode>")] UNSPEC_RSHRN)
+ 	  (match_operand:<VNARROWQ> 3 "aarch64_simd_or_scalar_imm_zero")))]
+   "TARGET_SIMD && !BYTES_BIG_ENDIAN"
+   "rshrn\\t%0.<Vntype>, %1.<Vtype>, %2"
+   [(set_attr "type" "neon_shift_imm_narrow_q")]
+ )
+ 
+ (define_insn "aarch64_rshrn<mode>_insn_be"
+   [(set (match_operand:<VNARROWQ2> 0 "register_operand" "=w")
+ 	(vec_concat:<VNARROWQ2>
+ 	  (match_operand:<VNARROWQ> 3 "aarch64_simd_or_scalar_imm_zero")
+ 	  (unspec:<VNARROWQ> [(match_operand:VQN 1 "register_operand" "w")
+ 		(match_operand:VQN 2 "aarch64_simd_shift_imm_vec_<vn_mode>")]
+ 		  UNSPEC_RSHRN)))]
+   "TARGET_SIMD && BYTES_BIG_ENDIAN"
+   "rshrn\\t%0.<Vntype>, %1.<Vtype>, %2"
+   [(set_attr "type" "neon_shift_imm_narrow_q")]
+ )
+ 
+ (define_expand "aarch64_rshrn<mode>"
+   [(match_operand:<VNARROWQ> 0 "register_operand")
+    (match_operand:VQN 1 "register_operand")
+    (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<vn_mode>")]
+   "TARGET_SIMD"
+   {
+     operands[2] = aarch64_simd_gen_const_vector_dup (<MODE>mode,
+ 						 INTVAL (operands[2]));
+     rtx tmp = gen_reg_rtx (<VNARROWQ2>mode);
+     if (BYTES_BIG_ENDIAN)
+       emit_insn (gen_aarch64_rshrn<mode>_insn_be (tmp, operands[1],
+ 				operands[2], CONST0_RTX (<VNARROWQ>mode)));
+     else
+       emit_insn (gen_aarch64_rshrn<mode>_insn_le (tmp, operands[1],
+ 				operands[2], CONST0_RTX (<VNARROWQ>mode)));
+ 
+     /* The intrinsic expects a narrow result, so emit a subreg that will get
+        optimized away as appropriate.  */
+     emit_move_insn (operands[0], lowpart_subreg (<VNARROWQ>mode, tmp,
+ 						 <VNARROWQ2>mode));
+     DONE;
+   }
+ )
+ 
+ (define_insn "aarch64_shrn2<mode>_insn_le"
+   [(set (match_operand:<VNARROWQ2> 0 "register_operand" "=w")
+ 	(vec_concat:<VNARROWQ2>
+ 	  (match_operand:<VNARROWQ> 1 "register_operand" "0")
+ 	  (truncate:<VNARROWQ>
+ 	    (lshiftrt:VQN (match_operand:VQN 2 "register_operand" "w")
+ 	      (match_operand:VQN 3 "aarch64_simd_shift_imm_vec_<vn_mode>")))))]
+   "TARGET_SIMD && !BYTES_BIG_ENDIAN"
+   "shrn2\\t%0.<V2ntype>, %2.<Vtype>, %3"
+   [(set_attr "type" "neon_shift_imm_narrow_q")]
+ )
+ 
+ (define_insn "aarch64_shrn2<mode>_insn_be"
+   [(set (match_operand:<VNARROWQ2> 0 "register_operand" "=w")
+ 	(vec_concat:<VNARROWQ2>
+ 	  (truncate:<VNARROWQ>
+ 	    (lshiftrt:VQN (match_operand:VQN 2 "register_operand" "w")
+ 	      (match_operand:VQN 3
+ 		"aarch64_simd_shift_imm_vec_<vn_mode>")))
+ 	  (match_operand:<VNARROWQ> 1 "register_operand" "0")))]
+   "TARGET_SIMD && BYTES_BIG_ENDIAN"
+   "shrn2\\t%0.<V2ntype>, %2.<Vtype>, %3"
+   [(set_attr "type" "neon_shift_imm_narrow_q")]
+ )
+ 
+ (define_expand "aarch64_shrn2<mode>"
+   [(match_operand:<VNARROWQ2> 0 "register_operand")
+    (match_operand:<VNARROWQ> 1 "register_operand")
+    (match_operand:VQN 2 "register_operand")
+    (match_operand:SI 3 "aarch64_simd_shift_imm_offset_<vn_mode>")]
+   "TARGET_SIMD"
+   {
+     operands[3] = aarch64_simd_gen_const_vector_dup (<MODE>mode,
+ 						 INTVAL (operands[3]));
+     if (BYTES_BIG_ENDIAN)
+       emit_insn (gen_aarch64_shrn2<mode>_insn_be (operands[0], operands[1],
+ 						  operands[2], operands[3]));
+     else
+       emit_insn (gen_aarch64_shrn2<mode>_insn_le (operands[0], operands[1],
+ 						  operands[2], operands[3]));
+     DONE;
+   }
+ )
+ 
+ (define_insn "aarch64_rshrn2<mode>_insn_le"
+   [(set (match_operand:<VNARROWQ2> 0 "register_operand" "=w")
+ 	(vec_concat:<VNARROWQ2>
+ 	  (match_operand:<VNARROWQ> 1 "register_operand" "0")
+ 	  (unspec:<VNARROWQ> [(match_operand:VQN 2 "register_operand" "w")
+ 	    (match_operand:VQN 3 "aarch64_simd_shift_imm_vec_<vn_mode>")]
+ 		UNSPEC_RSHRN)))]
+   "TARGET_SIMD && !BYTES_BIG_ENDIAN"
+   "rshrn2\\t%0.<V2ntype>, %2.<Vtype>, %3"
+   [(set_attr "type" "neon_shift_imm_narrow_q")]
+ )
+ 
+ (define_insn "aarch64_rshrn2<mode>_insn_be"
+   [(set (match_operand:<VNARROWQ2> 0 "register_operand" "=w")
+ 	(vec_concat:<VNARROWQ2>
+ 	  (unspec:<VNARROWQ> [(match_operand:VQN 2 "register_operand" "w")
+ 		(match_operand:VQN 3 "aarch64_simd_shift_imm_vec_<vn_mode>")]
+ 		  UNSPEC_RSHRN)
+ 	  (match_operand:<VNARROWQ> 1 "register_operand" "0")))]
+   "TARGET_SIMD && BYTES_BIG_ENDIAN"
+   "rshrn2\\t%0.<V2ntype>, %2.<Vtype>, %3"
+   [(set_attr "type" "neon_shift_imm_narrow_q")]
+ )
+ 
+ (define_expand "aarch64_rshrn2<mode>"
+   [(match_operand:<VNARROWQ2> 0 "register_operand")
+    (match_operand:<VNARROWQ> 1 "register_operand")
+    (match_operand:VQN 2 "register_operand")
+    (match_operand:SI 3 "aarch64_simd_shift_imm_offset_<vn_mode>")]
+   "TARGET_SIMD"
+   {
+     operands[3] = aarch64_simd_gen_const_vector_dup (<MODE>mode,
+ 						 INTVAL (operands[3]));
+     if (BYTES_BIG_ENDIAN)
+       emit_insn (gen_aarch64_rshrn2<mode>_insn_be (operands[0], operands[1],
+ 						  operands[2], operands[3]));
+     else
+       emit_insn (gen_aarch64_rshrn2<mode>_insn_le (operands[0], operands[1],
+ 						  operands[2], operands[3]));
+     DONE;
+   }
+ )
+ 
  ;; For quads.
  
  (define_insn "vec_pack_trunc_<mode>"
***************
*** 1683,1689 ****
    [(set_attr "type" "neon_mla_<Vetype>_long")]
  )
  
! (define_insn "*aarch64_<su>mlal_hi<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
          (plus:<VWIDE>
            (mult:<VWIDE>
--- 1983,1989 ----
    [(set_attr "type" "neon_mla_<Vetype>_long")]
  )
  
! (define_insn "aarch64_<su>mlal_hi<mode>_insn"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
          (plus:<VWIDE>
            (mult:<VWIDE>
***************
*** 1699,1704 ****
--- 1999,2047 ----
    [(set_attr "type" "neon_mla_<Vetype>_long")]
  )
  
+ (define_expand "aarch64_<su>mlal_hi<mode>"
+   [(match_operand:<VWIDE> 0 "register_operand")
+    (match_operand:<VWIDE> 1 "register_operand")
+    (ANY_EXTEND:<VWIDE>(match_operand:VQW 2 "register_operand"))
+    (match_operand:VQW 3 "register_operand")]
+   "TARGET_SIMD"
+ {
+   rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, true);
+   emit_insn (gen_aarch64_<su>mlal_hi<mode>_insn (operands[0], operands[1],
+ 						 operands[2], p, operands[3]));
+   DONE;
+ }
+ )
+ 
+ (define_insn "aarch64_<su>mlal_hi_n<mode>_insn"
+   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
+         (plus:<VWIDE>
+           (mult:<VWIDE>
+               (ANY_EXTEND:<VWIDE> (vec_select:<VHALF>
+                  (match_operand:VQ_HSI 2 "register_operand" "w")
+                  (match_operand:VQ_HSI 3 "vect_par_cnst_hi_half" "")))
+               (ANY_EXTEND:<VWIDE> (vec_duplicate:<VCOND>
+ 	               (match_operand:<VEL> 4 "register_operand" "<h_con>"))))
+           (match_operand:<VWIDE> 1 "register_operand" "0")))]
+   "TARGET_SIMD"
+   "<su>mlal2\t%0.<Vwtype>, %2.<Vtype>, %4.<Vetype>[0]"
+   [(set_attr "type" "neon_mla_<Vetype>_long")]
+ )
+ 
+ (define_expand "aarch64_<su>mlal_hi_n<mode>"
+   [(match_operand:<VWIDE> 0 "register_operand")
+    (match_operand:<VWIDE> 1 "register_operand")
+    (ANY_EXTEND:<VWIDE>(match_operand:VQ_HSI 2 "register_operand"))
+    (match_operand:<VEL> 3 "register_operand")]
+   "TARGET_SIMD"
+ {
+   rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, true);
+   emit_insn (gen_aarch64_<su>mlal_hi_n<mode>_insn (operands[0],
+              operands[1], operands[2], p, operands[3]));
+   DONE;
+ }
+ )
+ 
  (define_insn "*aarch64_<su>mlsl_lo<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
          (minus:<VWIDE>
***************
*** 1715,1721 ****
    [(set_attr "type" "neon_mla_<Vetype>_long")]
  )
  
! (define_insn "*aarch64_<su>mlsl_hi<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
          (minus:<VWIDE>
            (match_operand:<VWIDE> 1 "register_operand" "0")
--- 2058,2064 ----
    [(set_attr "type" "neon_mla_<Vetype>_long")]
  )
  
! (define_insn "aarch64_<su>mlsl_hi<mode>_insn"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
          (minus:<VWIDE>
            (match_operand:<VWIDE> 1 "register_operand" "0")
***************
*** 1731,1751 ****
    [(set_attr "type" "neon_mla_<Vetype>_long")]
  )
  
! (define_insn "*aarch64_<su>mlal<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
          (plus:<VWIDE>
            (mult:<VWIDE>
              (ANY_EXTEND:<VWIDE>
!               (match_operand:VD_BHSI 1 "register_operand" "w"))
              (ANY_EXTEND:<VWIDE>
!               (match_operand:VD_BHSI 2 "register_operand" "w")))
!           (match_operand:<VWIDE> 3 "register_operand" "0")))]
    "TARGET_SIMD"
!   "<su>mlal\t%0.<Vwtype>, %1.<Vtype>, %2.<Vtype>"
    [(set_attr "type" "neon_mla_<Vetype>_long")]
  )
  
! (define_insn "*aarch64_<su>mlsl<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
          (minus:<VWIDE>
            (match_operand:<VWIDE> 1 "register_operand" "0")
--- 2074,2152 ----
    [(set_attr "type" "neon_mla_<Vetype>_long")]
  )
  
! (define_expand "aarch64_<su>mlsl_hi<mode>"
!   [(match_operand:<VWIDE> 0 "register_operand")
!    (match_operand:<VWIDE> 1 "register_operand")
!    (ANY_EXTEND:<VWIDE>(match_operand:VQW 2 "register_operand"))
!    (match_operand:VQW 3 "register_operand")]
!   "TARGET_SIMD"
! {
!   rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, true);
!   emit_insn (gen_aarch64_<su>mlsl_hi<mode>_insn (operands[0], operands[1],
! 						 operands[2], p, operands[3]));
!   DONE;
! }
! )
! 
! (define_insn "aarch64_<su>mlsl_hi_n<mode>_insn"
!   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (minus:<VWIDE>
!           (match_operand:<VWIDE> 1 "register_operand" "0")
!           (mult:<VWIDE>
!             (ANY_EXTEND:<VWIDE> (vec_select:<VHALF>
!               (match_operand:VQ_HSI 2 "register_operand" "w")
!               (match_operand:VQ_HSI 3 "vect_par_cnst_hi_half" "")))
!             (ANY_EXTEND:<VWIDE> (vec_duplicate:<VCOND>
! 	            (match_operand:<VEL> 4 "register_operand" "<h_con>"))))))]
!   "TARGET_SIMD"
!   "<su>mlsl2\t%0.<Vwtype>, %2.<Vtype>, %4.<Vetype>[0]"
!   [(set_attr "type" "neon_mla_<Vetype>_long")]
! )
! 
! (define_expand "aarch64_<su>mlsl_hi_n<mode>"
!   [(match_operand:<VWIDE> 0 "register_operand")
!    (match_operand:<VWIDE> 1 "register_operand")
!    (ANY_EXTEND:<VWIDE>(match_operand:VQ_HSI 2 "register_operand"))
!    (match_operand:<VEL> 3 "register_operand")]
!   "TARGET_SIMD"
! {
!   rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, true);
!   emit_insn (gen_aarch64_<su>mlsl_hi_n<mode>_insn (operands[0],
!              operands[1], operands[2], p, operands[3]));
!   DONE;
! }
! )
! 
! (define_insn "aarch64_<su>mlal<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
          (plus:<VWIDE>
            (mult:<VWIDE>
              (ANY_EXTEND:<VWIDE>
!               (match_operand:VD_BHSI 2 "register_operand" "w"))
              (ANY_EXTEND:<VWIDE>
!               (match_operand:VD_BHSI 3 "register_operand" "w")))
!           (match_operand:<VWIDE> 1 "register_operand" "0")))]
    "TARGET_SIMD"
!   "<su>mlal\t%0.<Vwtype>, %2.<Vtype>, %3.<Vtype>"
    [(set_attr "type" "neon_mla_<Vetype>_long")]
  )
  
! (define_insn "aarch64_<su>mlal_n<mode>"
!   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (plus:<VWIDE>
!           (mult:<VWIDE>
!             (ANY_EXTEND:<VWIDE>
!               (match_operand:VD_HSI 2 "register_operand" "w"))
!             (ANY_EXTEND:<VWIDE>
!               (vec_duplicate:VD_HSI
! 	              (match_operand:<VEL> 3 "register_operand" "<h_con>"))))
!           (match_operand:<VWIDE> 1 "register_operand" "0")))]
!   "TARGET_SIMD"
!   "<su>mlal\t%0.<Vwtype>, %2.<Vtype>, %3.<Vetype>[0]"
!   [(set_attr "type" "neon_mla_<Vetype>_long")]
! )
! 
! (define_insn "aarch64_<su>mlsl<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
          (minus:<VWIDE>
            (match_operand:<VWIDE> 1 "register_operand" "0")
***************
*** 1759,1764 ****
--- 2160,2180 ----
    [(set_attr "type" "neon_mla_<Vetype>_long")]
  )
  
+ (define_insn "aarch64_<su>mlsl_n<mode>"
+   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
+         (minus:<VWIDE>
+           (match_operand:<VWIDE> 1 "register_operand" "0")
+           (mult:<VWIDE>
+             (ANY_EXTEND:<VWIDE>
+               (match_operand:VD_HSI 2 "register_operand" "w"))
+             (ANY_EXTEND:<VWIDE>
+               (vec_duplicate:VD_HSI
+ 	              (match_operand:<VEL> 3 "register_operand" "<h_con>"))))))]
+   "TARGET_SIMD"
+   "<su>mlsl\t%0.<Vwtype>, %2.<Vtype>, %3.<Vetype>[0]"
+   [(set_attr "type" "neon_mla_<Vetype>_long")]
+ )
+ 
  (define_insn "aarch64_simd_vec_<su>mult_lo_<mode>"
   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
         (mult:<VWIDE> (ANY_EXTEND:<VWIDE> (vec_select:<VHALF>
***************
*** 1844,1849 ****
--- 2260,2369 ----
    [(set_attr "type" "neon_mul_<Vetype>_scalar_long")]
  )
  
+ (define_insn "aarch64_<su>mull_hi_lane<mode>_insn"
+   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
+ 	(mult:<VWIDE>
+ 	  (ANY_EXTEND:<VWIDE> (vec_select:<VHALF>
+ 	    (match_operand:VQ_HSI 1 "register_operand" "w")
+ 	    (match_operand:VQ_HSI 2 "vect_par_cnst_hi_half" "")))
+ 	  (ANY_EXTEND:<VWIDE> (vec_duplicate:<VHALF>
+ 	    (vec_select:<VEL>
+ 	      (match_operand:<VCOND> 3 "register_operand" "<vwx>")
+ 	      (parallel [(match_operand:SI 4 "immediate_operand" "i")]))))))]
+   "TARGET_SIMD"
+   {
+     operands[4] = aarch64_endian_lane_rtx (<VCOND>mode, INTVAL (operands[4]));
+     return "<su>mull2\\t%0.<Vwtype>, %1.<Vtype>, %3.<Vetype>[%4]";
+   }
+   [(set_attr "type" "neon_mul_<Vetype>_scalar_long")]
+ )
+ 
+ (define_expand "aarch64_<su>mull_hi_lane<mode>"
+   [(match_operand:<VWIDE> 0 "register_operand")
+    (ANY_EXTEND:<VWIDE>(match_operand:VQ_HSI 1 "register_operand"))
+    (match_operand:<VCOND> 2 "register_operand")
+    (match_operand:SI 3 "immediate_operand")]
+   "TARGET_SIMD"
+ {
+   rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, true);
+   emit_insn (gen_aarch64_<su>mull_hi_lane<mode>_insn (operands[0],
+ 	     operands[1], p, operands[2], operands[3]));
+   DONE;
+ }
+ )
+ 
+ (define_insn "aarch64_<su>mull_hi_laneq<mode>_insn"
+   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
+ 	(mult:<VWIDE>
+ 	  (ANY_EXTEND:<VWIDE> (vec_select:<VHALF>
+ 	    (match_operand:VQ_HSI 1 "register_operand" "w")
+ 	    (match_operand:VQ_HSI 2 "vect_par_cnst_hi_half" "")))
+ 	  (ANY_EXTEND:<VWIDE> (vec_duplicate:<VHALF>
+ 	    (vec_select:<VEL>
+ 	      (match_operand:<VCONQ> 3 "register_operand" "<vwx>")
+ 	      (parallel [(match_operand:SI 4 "immediate_operand" "i")]))))))]
+   "TARGET_SIMD"
+   {
+     operands[4] = aarch64_endian_lane_rtx (<VCONQ>mode, INTVAL (operands[4]));
+     return "<su>mull2\\t%0.<Vwtype>, %1.<Vtype>, %3.<Vetype>[%4]";
+   }
+   [(set_attr "type" "neon_mul_<Vetype>_scalar_long")]
+ )
+ 
+ (define_expand "aarch64_<su>mull_hi_laneq<mode>"
+   [(match_operand:<VWIDE> 0 "register_operand")
+    (ANY_EXTEND:<VWIDE>(match_operand:VQ_HSI 1 "register_operand"))
+    (match_operand:<VCONQ> 2 "register_operand")
+    (match_operand:SI 3 "immediate_operand")]
+   "TARGET_SIMD"
+ {
+   rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, true);
+   emit_insn (gen_aarch64_<su>mull_hi_laneq<mode>_insn (operands[0],
+ 	     operands[1], p, operands[2], operands[3]));
+   DONE;
+ }
+ )
+ 
+ (define_insn "aarch64_<su>mull_n<mode>"
+   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
+         (mult:<VWIDE>
+           (ANY_EXTEND:<VWIDE>
+             (match_operand:VD_HSI 1 "register_operand" "w"))
+           (ANY_EXTEND:<VWIDE>
+             (vec_duplicate:<VCOND>
+ 	      (match_operand:<VEL> 2 "register_operand" "<h_con>")))))]
+   "TARGET_SIMD"
+   "<su>mull\t%0.<Vwtype>, %1.<Vtype>, %2.<Vetype>[0]"
+   [(set_attr "type" "neon_mul_<Vetype>_scalar_long")]
+ )
+ 
+ (define_insn "aarch64_<su>mull_hi_n<mode>_insn"
+   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
+ 	(mult:<VWIDE>
+ 	  (ANY_EXTEND:<VWIDE> (vec_select:<VHALF>
+ 	    (match_operand:VQ_HSI 1 "register_operand" "w")
+ 	    (match_operand:VQ_HSI 3 "vect_par_cnst_hi_half" "")))
+ 	  (ANY_EXTEND:<VWIDE>
+ 	    (vec_duplicate:<VCOND>
+ 	      (match_operand:<VEL> 2 "register_operand" "<h_con>")))))]
+   "TARGET_SIMD"
+   "<su>mull2\\t%0.<Vwtype>, %1.<Vtype>, %2.<Vetype>[0]"
+   [(set_attr "type" "neon_mul_<Vetype>_scalar_long")]
+ )
+ 
+ (define_expand "aarch64_<su>mull_hi_n<mode>"
+   [(match_operand:<VWIDE> 0 "register_operand")
+    (ANY_EXTEND:<VWIDE> (match_operand:VQ_HSI 1 "register_operand"))
+    (match_operand:<VEL> 2 "register_operand")]
+  "TARGET_SIMD"
+  {
+    rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, true);
+    emit_insn (gen_aarch64_<su>mull_hi_n<mode>_insn (operands[0], operands[1],
+ 						    operands[2], p));
+    DONE;
+  }
+ )
+ 
  ;; vmlal_lane_s16 intrinsics
  (define_insn "aarch64_vec_<su>mlal_lane<Qlane>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
***************
*** 1865,1870 ****
--- 2385,2552 ----
    [(set_attr "type" "neon_mla_<Vetype>_scalar_long")]
  )
  
+ (define_insn "aarch64_<su>mlal_hi_lane<mode>_insn"
+   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
+ 	(plus:<VWIDE>
+ 	  (mult:<VWIDE>
+ 	    (ANY_EXTEND:<VWIDE> (vec_select:<VHALF>
+ 	      (match_operand:VQ_HSI 2 "register_operand" "w")
+ 	      (match_operand:VQ_HSI 3 "vect_par_cnst_hi_half" "")))
+ 	    (ANY_EXTEND:<VWIDE> (vec_duplicate:<VHALF>
+ 	      (vec_select:<VEL>
+ 		(match_operand:<VCOND> 4 "register_operand" "<vwx>")
+ 		(parallel [(match_operand:SI 5 "immediate_operand" "i")])))))
+ 	  (match_operand:<VWIDE> 1 "register_operand" "0")))]
+   "TARGET_SIMD"
+   {
+     operands[5] = aarch64_endian_lane_rtx (<VCOND>mode, INTVAL (operands[5]));
+     return "<su>mlal2\\t%0.<Vwtype>, %2.<Vtype>, %4.<Vetype>[%5]";
+   }
+   [(set_attr "type" "neon_mla_<Vetype>_scalar_long")]
+ )
+ 
+ (define_expand "aarch64_<su>mlal_hi_lane<mode>"
+   [(match_operand:<VWIDE> 0 "register_operand")
+    (match_operand:<VWIDE> 1 "register_operand")
+    (ANY_EXTEND:<VWIDE>(match_operand:VQ_HSI 2 "register_operand"))
+    (match_operand:<VCOND> 3 "register_operand")
+    (match_operand:SI 4 "immediate_operand")]
+   "TARGET_SIMD"
+ {
+   rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, true);
+   emit_insn (gen_aarch64_<su>mlal_hi_lane<mode>_insn (operands[0],
+ 	     operands[1], operands[2], p, operands[3], operands[4]));
+   DONE;
+ }
+ )
+ 
+ (define_insn "aarch64_<su>mlal_hi_laneq<mode>_insn"
+   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
+ 	(plus:<VWIDE>
+ 	  (mult:<VWIDE>
+ 	    (ANY_EXTEND:<VWIDE> (vec_select:<VHALF>
+ 	      (match_operand:VQ_HSI 2 "register_operand" "w")
+ 	      (match_operand:VQ_HSI 3 "vect_par_cnst_hi_half" "")))
+ 	    (ANY_EXTEND:<VWIDE> (vec_duplicate:<VHALF>
+ 	      (vec_select:<VEL>
+ 		(match_operand:<VCONQ> 4 "register_operand" "<vwx>")
+ 		(parallel [(match_operand:SI 5 "immediate_operand" "i")])))))
+ 	  (match_operand:<VWIDE> 1 "register_operand" "0")))]
+   "TARGET_SIMD"
+   {
+     operands[5] = aarch64_endian_lane_rtx (<VCONQ>mode, INTVAL (operands[5]));
+     return "<su>mlal2\\t%0.<Vwtype>, %2.<Vtype>, %4.<Vetype>[%5]";
+   }
+   [(set_attr "type" "neon_mla_<Vetype>_scalar_long")]
+ )
+ 
+ (define_expand "aarch64_<su>mlal_hi_laneq<mode>"
+   [(match_operand:<VWIDE> 0 "register_operand")
+    (match_operand:<VWIDE> 1 "register_operand")
+    (ANY_EXTEND:<VWIDE>(match_operand:VQ_HSI 2 "register_operand"))
+    (match_operand:<VCONQ> 3 "register_operand")
+    (match_operand:SI 4 "immediate_operand")]
+   "TARGET_SIMD"
+ {
+   rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, true);
+   emit_insn (gen_aarch64_<su>mlal_hi_laneq<mode>_insn (operands[0],
+ 	     operands[1], operands[2], p, operands[3], operands[4]));
+   DONE;
+ }
+ )
+ 
+ (define_insn "aarch64_vec_<su>mlsl_lane<Qlane>"
+   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
+    (minus:<VWIDE>
+      (match_operand:<VWIDE> 1 "register_operand" "0")
+      (mult:<VWIDE>
+        (ANY_EXTEND:<VWIDE>
+ 	 (match_operand:<VCOND> 2 "register_operand" "w"))
+        (ANY_EXTEND:<VWIDE>
+ 	 (vec_duplicate:<VCOND>
+ 	   (vec_select:<VEL>
+ 	     (match_operand:VDQHS 3 "register_operand" "<vwx>")
+ 	     (parallel [(match_operand:SI 4 "immediate_operand" "i")])))))))]
+   "TARGET_SIMD"
+   {
+     operands[4] = aarch64_endian_lane_rtx (<MODE>mode, INTVAL (operands[4]));
+     return "<su>mlsl\\t%0.<Vwtype>, %2.<Vcondtype>, %3.<Vetype>[%4]";
+   }
+   [(set_attr "type" "neon_mla_<Vetype>_scalar_long")]
+ )
+ 
+ (define_insn "aarch64_<su>mlsl_hi_lane<mode>_insn"
+   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
+ 	(minus:<VWIDE>
+ 	  (match_operand:<VWIDE> 1 "register_operand" "0")
+ 	  (mult:<VWIDE>
+ 	    (ANY_EXTEND:<VWIDE> (vec_select:<VHALF>
+ 	      (match_operand:VQ_HSI 2 "register_operand" "w")
+ 	      (match_operand:VQ_HSI 3 "vect_par_cnst_hi_half" "")))
+ 	    (ANY_EXTEND:<VWIDE> (vec_duplicate:<VHALF>
+ 	      (vec_select:<VEL>
+ 		(match_operand:<VCOND> 4 "register_operand" "<vwx>")
+ 		(parallel [(match_operand:SI 5 "immediate_operand" "i")]))))
+ 	  )))]
+   "TARGET_SIMD"
+   {
+     operands[5] = aarch64_endian_lane_rtx (<VCOND>mode, INTVAL (operands[5]));
+     return "<su>mlsl2\\t%0.<Vwtype>, %2.<Vtype>, %4.<Vetype>[%5]";
+   }
+   [(set_attr "type" "neon_mla_<Vetype>_scalar_long")]
+ )
+ 
+ (define_expand "aarch64_<su>mlsl_hi_lane<mode>"
+   [(match_operand:<VWIDE> 0 "register_operand")
+    (match_operand:<VWIDE> 1 "register_operand")
+    (ANY_EXTEND:<VWIDE>(match_operand:VQ_HSI 2 "register_operand"))
+    (match_operand:<VCOND> 3 "register_operand")
+    (match_operand:SI 4 "immediate_operand")]
+   "TARGET_SIMD"
+ {
+   rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, true);
+   emit_insn (gen_aarch64_<su>mlsl_hi_lane<mode>_insn (operands[0],
+ 	     operands[1], operands[2], p, operands[3], operands[4]));
+   DONE;
+ }
+ )
+ 
+ (define_insn "aarch64_<su>mlsl_hi_laneq<mode>_insn"
+   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
+ 	(minus:<VWIDE>
+ 	  (match_operand:<VWIDE> 1 "register_operand" "0")
+ 	  (mult:<VWIDE>
+ 	    (ANY_EXTEND:<VWIDE> (vec_select:<VHALF>
+ 	      (match_operand:VQ_HSI 2 "register_operand" "w")
+ 	      (match_operand:VQ_HSI 3 "vect_par_cnst_hi_half" "")))
+ 	    (ANY_EXTEND:<VWIDE> (vec_duplicate:<VHALF>
+ 	      (vec_select:<VEL>
+ 		(match_operand:<VCONQ> 4 "register_operand" "<vwx>")
+ 		(parallel [(match_operand:SI 5 "immediate_operand" "i")]))))
+ 	  )))]
+   "TARGET_SIMD"
+   {
+     operands[5] = aarch64_endian_lane_rtx (<VCONQ>mode, INTVAL (operands[5]));
+     return "<su>mlsl2\\t%0.<Vwtype>, %2.<Vtype>, %4.<Vetype>[%5]";
+   }
+   [(set_attr "type" "neon_mla_<Vetype>_scalar_long")]
+ )
+ 
+ (define_expand "aarch64_<su>mlsl_hi_laneq<mode>"
+   [(match_operand:<VWIDE> 0 "register_operand")
+    (match_operand:<VWIDE> 1 "register_operand")
+    (ANY_EXTEND:<VWIDE>(match_operand:VQ_HSI 2 "register_operand"))
+    (match_operand:<VCONQ> 3 "register_operand")
+    (match_operand:SI 4 "immediate_operand")]
+   "TARGET_SIMD"
+ {
+   rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, true);
+   emit_insn (gen_aarch64_<su>mlsl_hi_laneq<mode>_insn (operands[0],
+ 	     operands[1], operands[2], p, operands[3], operands[4]));
+   DONE;
+ }
+ )
+ 
  ;; FP vector operations.
  ;; AArch64 AdvSIMD supports single-precision (32-bit) and 
  ;; double-precision (64-bit) floating-point data types and arithmetic as
***************
*** 2458,2463 ****
--- 3140,3154 ----
    [(set_attr "type" "neon_reduc_add<q>")]
  )
  
+ (define_insn "aarch64_<su>addlv<mode>"
+  [(set (match_operand:<VWIDE_S> 0 "register_operand" "=w")
+        (unspec:<VWIDE_S> [(match_operand:VDQV_L 1 "register_operand" "w")]
+ 		    USADDLV))]
+  "TARGET_SIMD"
+  "<su>addl<vp>\\t%<Vwstype>0<Vwsuf>, %1.<Vtype>"
+   [(set_attr "type" "neon_reduc_add<q>")]
+ )
+ 
  ;; ADDV with result zero-extended to SI/DImode (for popcount).
  (define_insn "aarch64_zero_extend<GPI:mode>_reduc_plus_<VDQV_E:mode>"
   [(set (match_operand:GPI 0 "register_operand" "=w")
***************
*** 3220,3226 ****
  ;; Lane extraction of a value, neither sign nor zero extension
  ;; is guaranteed so upper bits should be considered undefined.
  ;; RTL uses GCC vector extension indices throughout so flip only for assembly.
! (define_insn "aarch64_get_lane<mode>"
    [(set (match_operand:<VEL> 0 "aarch64_simd_nonimmediate_operand" "=?r, w, Utv")
  	(vec_select:<VEL>
  	  (match_operand:VALL_F16 1 "register_operand" "w, w, w")
--- 3911,3919 ----
  ;; Lane extraction of a value, neither sign nor zero extension
  ;; is guaranteed so upper bits should be considered undefined.
  ;; RTL uses GCC vector extension indices throughout so flip only for assembly.
! ;; Extracting lane zero is split into a simple move when it is between SIMD
! ;; registers or a store.
! (define_insn_and_split "aarch64_get_lane<mode>"
    [(set (match_operand:<VEL> 0 "aarch64_simd_nonimmediate_operand" "=?r, w, Utv")
  	(vec_select:<VEL>
  	  (match_operand:VALL_F16 1 "register_operand" "w, w, w")
***************
*** 3240,3245 ****
--- 3933,3944 ----
  	  gcc_unreachable ();
        }
    }
+  "&& reload_completed
+   && ENDIAN_LANE_N (<nunits>, INTVAL (operands[2])) == 0"
+  [(set (match_dup 0) (match_dup 1))]
+  {
+    operands[1] = aarch64_replace_reg_mode (operands[1], <VEL>mode);
+  }
    [(set_attr "type" "neon_to_gp<q>, neon_dup<q>, neon_store1_one_lane<q>")]
  )
  
***************
*** 3362,3367 ****
--- 4061,4113 ----
    [(set_attr "type" "neon_<ADDSUB:optab>_long")]
  )
  
+ (define_expand "vec_widen_<su>addl_lo_<mode>"
+   [(match_operand:<VWIDE> 0 "register_operand")
+    (ANY_EXTEND:<VWIDE> (match_operand:VQW 1 "register_operand"))
+    (ANY_EXTEND:<VWIDE> (match_operand:VQW 2 "register_operand"))]
+   "TARGET_SIMD"
+ {
+   rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, false);
+   emit_insn (gen_aarch64_<su>addl<mode>_lo_internal (operands[0], operands[1],
+ 						     operands[2], p));
+   DONE;
+ })
+ 
+ (define_expand "vec_widen_<su>addl_hi_<mode>"
+   [(match_operand:<VWIDE> 0 "register_operand")
+    (ANY_EXTEND:<VWIDE> (match_operand:VQW 1 "register_operand"))
+    (ANY_EXTEND:<VWIDE> (match_operand:VQW 2 "register_operand"))]
+   "TARGET_SIMD"
+ {
+   rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, true);
+   emit_insn (gen_aarch64_<su>addl<mode>_hi_internal (operands[0], operands[1],
+ 						     operands[2], p));
+   DONE;
+ })
+ 
+ (define_expand "vec_widen_<su>subl_lo_<mode>"
+   [(match_operand:<VWIDE> 0 "register_operand")
+    (ANY_EXTEND:<VWIDE> (match_operand:VQW 1 "register_operand"))
+    (ANY_EXTEND:<VWIDE> (match_operand:VQW 2 "register_operand"))]
+   "TARGET_SIMD"
+ {
+   rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, false);
+   emit_insn (gen_aarch64_<su>subl<mode>_lo_internal (operands[0], operands[1],
+ 						     operands[2], p));
+   DONE;
+ })
+ 
+ (define_expand "vec_widen_<su>subl_hi_<mode>"
+   [(match_operand:<VWIDE> 0 "register_operand")
+    (ANY_EXTEND:<VWIDE> (match_operand:VQW 1 "register_operand"))
+    (ANY_EXTEND:<VWIDE> (match_operand:VQW 2 "register_operand"))]
+   "TARGET_SIMD"
+ {
+   rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, true);
+   emit_insn (gen_aarch64_<su>subl<mode>_hi_internal (operands[0], operands[1],
+ 						     operands[2], p));
+   DONE;
+ })
  
  (define_expand "aarch64_saddl2<mode>"
    [(match_operand:<VWIDE> 0 "register_operand")
***************
*** 3791,3796 ****
--- 4537,4620 ----
     [(set_attr "type" "neon_sat_shift_imm_narrow_q")]
  )
  
+ (define_insn "aarch64_<su>qxtn2<mode>_le"
+   [(set (match_operand:<VNARROWQ2> 0 "register_operand" "=w")
+ 	(vec_concat:<VNARROWQ2>
+ 	  (match_operand:<VNARROWQ> 1 "register_operand" "0")
+ 	  (SAT_TRUNC:<VNARROWQ>
+ 	    (match_operand:VQN 2 "register_operand" "w"))))]
+   "TARGET_SIMD && !BYTES_BIG_ENDIAN"
+   "<su>qxtn2\\t%0.<V2ntype>, %2.<Vtype>"
+    [(set_attr "type" "neon_sat_shift_imm_narrow_q")]
+ )
+ 
+ (define_insn "aarch64_<su>qxtn2<mode>_be"
+   [(set (match_operand:<VNARROWQ2> 0 "register_operand" "=w")
+ 	(vec_concat:<VNARROWQ2>
+ 	  (SAT_TRUNC:<VNARROWQ>
+ 	    (match_operand:VQN 2 "register_operand" "w"))
+ 	  (match_operand:<VNARROWQ> 1 "register_operand" "0")))]
+   "TARGET_SIMD && BYTES_BIG_ENDIAN"
+   "<su>qxtn2\\t%0.<V2ntype>, %2.<Vtype>"
+    [(set_attr "type" "neon_sat_shift_imm_narrow_q")]
+ )
+ 
+ (define_expand "aarch64_<su>qxtn2<mode>"
+   [(match_operand:<VNARROWQ2> 0 "register_operand")
+    (match_operand:<VNARROWQ> 1 "register_operand")
+    (SAT_TRUNC:<VNARROWQ>
+      (match_operand:VQN 2 "register_operand"))]
+   "TARGET_SIMD"
+   {
+     if (BYTES_BIG_ENDIAN)
+       emit_insn (gen_aarch64_<su>qxtn2<mode>_be (operands[0], operands[1],
+ 						 operands[2]));
+     else
+       emit_insn (gen_aarch64_<su>qxtn2<mode>_le (operands[0], operands[1],
+ 						 operands[2]));
+     DONE;
+   }
+ )
+ 
+ (define_insn "aarch64_sqxtun2<mode>_le"
+   [(set (match_operand:<VNARROWQ2> 0 "register_operand" "=w")
+ 	(vec_concat:<VNARROWQ2>
+ 	  (match_operand:<VNARROWQ> 1 "register_operand" "0")
+ 	  (unspec:<VNARROWQ>
+ 	    [(match_operand:VQN 2 "register_operand" "w")] UNSPEC_SQXTUN2)))]
+   "TARGET_SIMD && !BYTES_BIG_ENDIAN"
+   "sqxtun2\\t%0.<V2ntype>, %2.<Vtype>"
+    [(set_attr "type" "neon_sat_shift_imm_narrow_q")]
+ )
+ 
+ (define_insn "aarch64_sqxtun2<mode>_be"
+   [(set (match_operand:<VNARROWQ2> 0 "register_operand" "=w")
+ 	(vec_concat:<VNARROWQ2>
+ 	  (unspec:<VNARROWQ>
+ 	    [(match_operand:VQN 2 "register_operand" "w")] UNSPEC_SQXTUN2)
+ 	  (match_operand:<VNARROWQ> 1 "register_operand" "0")))]
+   "TARGET_SIMD && BYTES_BIG_ENDIAN"
+   "sqxtun2\\t%0.<V2ntype>, %2.<Vtype>"
+    [(set_attr "type" "neon_sat_shift_imm_narrow_q")]
+ )
+ 
+ (define_expand "aarch64_sqxtun2<mode>"
+   [(match_operand:<VNARROWQ2> 0 "register_operand")
+    (match_operand:<VNARROWQ> 1 "register_operand")
+    (unspec:<VNARROWQ>
+      [(match_operand:VQN 2 "register_operand")] UNSPEC_SQXTUN2)]
+   "TARGET_SIMD"
+   {
+     if (BYTES_BIG_ENDIAN)
+       emit_insn (gen_aarch64_sqxtun2<mode>_be (operands[0], operands[1],
+ 					      operands[2]));
+     else
+       emit_insn (gen_aarch64_sqxtun2<mode>_le (operands[0], operands[1],
+ 					       operands[2]));
+     DONE;
+   }
+ )
+ 
  ;; <su>q<absneg>
  
  (define_insn "aarch64_s<optab><mode>"
***************
*** 3969,3977 ****
  
  ;; vqdml[sa]l
  
! (define_insn "aarch64_sqdml<SBINQOPS:as>l<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (SBINQOPS:<VWIDE>
  	  (match_operand:<VWIDE> 1 "register_operand" "0")
  	  (ss_ashift:<VWIDE>
  	      (mult:<VWIDE>
--- 4793,4817 ----
  
  ;; vqdml[sa]l
  
! (define_insn "aarch64_sqdmlal<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (ss_plus:<VWIDE>
! 	  (ss_ashift:<VWIDE>
! 	      (mult:<VWIDE>
! 		(sign_extend:<VWIDE>
! 		      (match_operand:VSD_HSI 2 "register_operand" "w"))
! 		(sign_extend:<VWIDE>
! 		      (match_operand:VSD_HSI 3 "register_operand" "w")))
! 	      (const_int 1))
! 	  (match_operand:<VWIDE> 1 "register_operand" "0")))]
!   "TARGET_SIMD"
!   "sqdmlal\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %<v>3<Vmtype>"
!   [(set_attr "type" "neon_sat_mla_<Vetype>_long")]
! )
! 
! (define_insn "aarch64_sqdmlsl<mode>"
!   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (ss_minus:<VWIDE>
  	  (match_operand:<VWIDE> 1 "register_operand" "0")
  	  (ss_ashift:<VWIDE>
  	      (mult:<VWIDE>
***************
*** 3981,3995 ****
  		      (match_operand:VSD_HSI 3 "register_operand" "w")))
  	      (const_int 1))))]
    "TARGET_SIMD"
!   "sqdml<SBINQOPS:as>l\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %<v>3<Vmtype>"
    [(set_attr "type" "neon_sat_mla_<Vetype>_long")]
  )
  
  ;; vqdml[sa]l_lane
  
! (define_insn "aarch64_sqdml<SBINQOPS:as>l_lane<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (SBINQOPS:<VWIDE>
  	  (match_operand:<VWIDE> 1 "register_operand" "0")
  	  (ss_ashift:<VWIDE>
  	    (mult:<VWIDE>
--- 4821,4859 ----
  		      (match_operand:VSD_HSI 3 "register_operand" "w")))
  	      (const_int 1))))]
    "TARGET_SIMD"
!   "sqdmlsl\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %<v>3<Vmtype>"
    [(set_attr "type" "neon_sat_mla_<Vetype>_long")]
  )
  
  ;; vqdml[sa]l_lane
  
! (define_insn "aarch64_sqdmlal_lane<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (ss_plus:<VWIDE>
! 	  (ss_ashift:<VWIDE>
! 	    (mult:<VWIDE>
! 	      (sign_extend:<VWIDE>
! 		(match_operand:VD_HSI 2 "register_operand" "w"))
! 	      (sign_extend:<VWIDE>
! 		(vec_duplicate:VD_HSI
! 		  (vec_select:<VEL>
! 		    (match_operand:<VCOND> 3 "register_operand" "<vwx>")
! 		    (parallel [(match_operand:SI 4 "immediate_operand" "i")])))
!               ))
! 	    (const_int 1))
! 	  (match_operand:<VWIDE> 1 "register_operand" "0")))]
!   "TARGET_SIMD"
!   {
!     operands[4] = aarch64_endian_lane_rtx (<VCOND>mode, INTVAL (operands[4]));
!     return
!       "sqdmlal\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %3.<Vetype>[%4]";
!   }
!   [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
! )
! 
! (define_insn "aarch64_sqdmlsl_lane<mode>"
!   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (ss_minus:<VWIDE>
  	  (match_operand:<VWIDE> 1 "register_operand" "0")
  	  (ss_ashift:<VWIDE>
  	    (mult:<VWIDE>
***************
*** 4006,4019 ****
    {
      operands[4] = aarch64_endian_lane_rtx (<VCOND>mode, INTVAL (operands[4]));
      return
!       "sqdml<SBINQOPS:as>l\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %3.<Vetype>[%4]";
    }
    [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
  )
  
! (define_insn "aarch64_sqdml<SBINQOPS:as>l_laneq<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (SBINQOPS:<VWIDE>
  	  (match_operand:<VWIDE> 1 "register_operand" "0")
  	  (ss_ashift:<VWIDE>
  	    (mult:<VWIDE>
--- 4870,4884 ----
    {
      operands[4] = aarch64_endian_lane_rtx (<VCOND>mode, INTVAL (operands[4]));
      return
!       "sqdmlsl\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %3.<Vetype>[%4]";
    }
    [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
  )
  
! 
! (define_insn "aarch64_sqdmlsl_laneq<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (ss_minus:<VWIDE>
  	  (match_operand:<VWIDE> 1 "register_operand" "0")
  	  (ss_ashift:<VWIDE>
  	    (mult:<VWIDE>
***************
*** 4030,4043 ****
    {
      operands[4] = aarch64_endian_lane_rtx (<VCONQ>mode, INTVAL (operands[4]));
      return
!       "sqdml<SBINQOPS:as>l\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %3.<Vetype>[%4]";
    }
    [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
  )
  
! (define_insn "aarch64_sqdml<SBINQOPS:as>l_lane<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (SBINQOPS:<VWIDE>
  	  (match_operand:<VWIDE> 1 "register_operand" "0")
  	  (ss_ashift:<VWIDE>
  	    (mult:<VWIDE>
--- 4895,4956 ----
    {
      operands[4] = aarch64_endian_lane_rtx (<VCONQ>mode, INTVAL (operands[4]));
      return
!       "sqdmlsl\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %3.<Vetype>[%4]";
    }
    [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
  )
  
! (define_insn "aarch64_sqdmlal_laneq<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (ss_plus:<VWIDE>
! 	  (ss_ashift:<VWIDE>
! 	    (mult:<VWIDE>
! 	      (sign_extend:<VWIDE>
! 		(match_operand:VD_HSI 2 "register_operand" "w"))
! 	      (sign_extend:<VWIDE>
! 		(vec_duplicate:VD_HSI
! 		  (vec_select:<VEL>
! 		    (match_operand:<VCONQ> 3 "register_operand" "<vwx>")
! 		    (parallel [(match_operand:SI 4 "immediate_operand" "i")])))
!               ))
! 	    (const_int 1))
! 	  (match_operand:<VWIDE> 1 "register_operand" "0")))]
!   "TARGET_SIMD"
!   {
!     operands[4] = aarch64_endian_lane_rtx (<VCONQ>mode, INTVAL (operands[4]));
!     return
!       "sqdmlal\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %3.<Vetype>[%4]";
!   }
!   [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
! )
! 
! 
! (define_insn "aarch64_sqdmlal_lane<mode>"
!   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (ss_plus:<VWIDE>
! 	  (ss_ashift:<VWIDE>
! 	    (mult:<VWIDE>
! 	      (sign_extend:<VWIDE>
! 		(match_operand:SD_HSI 2 "register_operand" "w"))
! 	      (sign_extend:<VWIDE>
! 		(vec_select:<VEL>
! 		  (match_operand:<VCOND> 3 "register_operand" "<vwx>")
! 		  (parallel [(match_operand:SI 4 "immediate_operand" "i")])))
!               )
! 	    (const_int 1))
! 	  (match_operand:<VWIDE> 1 "register_operand" "0")))]
!   "TARGET_SIMD"
!   {
!     operands[4] = aarch64_endian_lane_rtx (<VCOND>mode, INTVAL (operands[4]));
!     return
!       "sqdmlal\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %3.<Vetype>[%4]";
!   }
!   [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
! )
! 
! (define_insn "aarch64_sqdmlsl_lane<mode>"
!   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (ss_minus:<VWIDE>
  	  (match_operand:<VWIDE> 1 "register_operand" "0")
  	  (ss_ashift:<VWIDE>
  	    (mult:<VWIDE>
***************
*** 4053,4066 ****
    {
      operands[4] = aarch64_endian_lane_rtx (<VCOND>mode, INTVAL (operands[4]));
      return
!       "sqdml<SBINQOPS:as>l\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %3.<Vetype>[%4]";
    }
    [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
  )
  
! (define_insn "aarch64_sqdml<SBINQOPS:as>l_laneq<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (SBINQOPS:<VWIDE>
  	  (match_operand:<VWIDE> 1 "register_operand" "0")
  	  (ss_ashift:<VWIDE>
  	    (mult:<VWIDE>
--- 4966,5003 ----
    {
      operands[4] = aarch64_endian_lane_rtx (<VCOND>mode, INTVAL (operands[4]));
      return
!       "sqdmlsl\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %3.<Vetype>[%4]";
    }
    [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
  )
  
! 
! (define_insn "aarch64_sqdmlal_laneq<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (ss_plus:<VWIDE>
! 	  (ss_ashift:<VWIDE>
! 	    (mult:<VWIDE>
! 	      (sign_extend:<VWIDE>
! 		(match_operand:SD_HSI 2 "register_operand" "w"))
! 	      (sign_extend:<VWIDE>
! 		(vec_select:<VEL>
! 		  (match_operand:<VCONQ> 3 "register_operand" "<vwx>")
! 		  (parallel [(match_operand:SI 4 "immediate_operand" "i")])))
!               )
! 	    (const_int 1))
! 	  (match_operand:<VWIDE> 1 "register_operand" "0")))]
!   "TARGET_SIMD"
!   {
!     operands[4] = aarch64_endian_lane_rtx (<VCONQ>mode, INTVAL (operands[4]));
!     return
!       "sqdmlal\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %3.<Vetype>[%4]";
!   }
!   [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
! )
! 
! (define_insn "aarch64_sqdmlsl_laneq<mode>"
!   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (ss_minus:<VWIDE>
  	  (match_operand:<VWIDE> 1 "register_operand" "0")
  	  (ss_ashift:<VWIDE>
  	    (mult:<VWIDE>
***************
*** 4076,4091 ****
    {
      operands[4] = aarch64_endian_lane_rtx (<VCONQ>mode, INTVAL (operands[4]));
      return
!       "sqdml<SBINQOPS:as>l\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %3.<Vetype>[%4]";
    }
    [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
  )
  
  ;; vqdml[sa]l_n
  
! (define_insn "aarch64_sqdml<SBINQOPS:as>l_n<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (SBINQOPS:<VWIDE>
  	  (match_operand:<VWIDE> 1 "register_operand" "0")
  	  (ss_ashift:<VWIDE>
  	      (mult:<VWIDE>
--- 5013,5028 ----
    {
      operands[4] = aarch64_endian_lane_rtx (<VCONQ>mode, INTVAL (operands[4]));
      return
!       "sqdmlsl\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %3.<Vetype>[%4]";
    }
    [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
  )
  
  ;; vqdml[sa]l_n
  
! (define_insn "aarch64_sqdmlsl_n<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (ss_minus:<VWIDE>
  	  (match_operand:<VWIDE> 1 "register_operand" "0")
  	  (ss_ashift:<VWIDE>
  	      (mult:<VWIDE>
***************
*** 4096,4110 ****
  		    (match_operand:<VEL> 3 "register_operand" "<vwx>"))))
  	      (const_int 1))))]
    "TARGET_SIMD"
!   "sqdml<SBINQOPS:as>l\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %3.<Vetype>[0]"
    [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
  )
  
  ;; sqdml[as]l2
  
! (define_insn "aarch64_sqdml<SBINQOPS:as>l2<mode>_internal"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (SBINQOPS:<VWIDE>
           (match_operand:<VWIDE> 1 "register_operand" "0")
           (ss_ashift:<VWIDE>
               (mult:<VWIDE>
--- 5033,5085 ----
  		    (match_operand:<VEL> 3 "register_operand" "<vwx>"))))
  	      (const_int 1))))]
    "TARGET_SIMD"
!   "sqdmlsl\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %3.<Vetype>[0]"
    [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
  )
  
+ (define_insn "aarch64_sqdmlal_n<mode>"
+   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
+         (ss_plus:<VWIDE>
+ 	  (ss_ashift:<VWIDE>
+ 	      (mult:<VWIDE>
+ 		(sign_extend:<VWIDE>
+ 		      (match_operand:VD_HSI 2 "register_operand" "w"))
+ 		(sign_extend:<VWIDE>
+ 		  (vec_duplicate:VD_HSI
+ 		    (match_operand:<VEL> 3 "register_operand" "<vwx>"))))
+ 	      (const_int 1))
+ 	  (match_operand:<VWIDE> 1 "register_operand" "0")))]
+   "TARGET_SIMD"
+   "sqdmlal\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %3.<Vetype>[0]"
+   [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
+ )
+ 
+ 
  ;; sqdml[as]l2
  
! (define_insn "aarch64_sqdmlal2<mode>_internal"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (ss_plus:<VWIDE>
!          (ss_ashift:<VWIDE>
!              (mult:<VWIDE>
!                (sign_extend:<VWIDE>
!                  (vec_select:<VHALF>
!                      (match_operand:VQ_HSI 2 "register_operand" "w")
!                      (match_operand:VQ_HSI 4 "vect_par_cnst_hi_half" "")))
!                (sign_extend:<VWIDE>
!                  (vec_select:<VHALF>
!                      (match_operand:VQ_HSI 3 "register_operand" "w")
!                      (match_dup 4))))
!              (const_int 1))
! 	  (match_operand:<VWIDE> 1 "register_operand" "0")))]
!   "TARGET_SIMD"
!   "sqdmlal2\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %<v>3<Vmtype>"
!   [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
! )
! 
! (define_insn "aarch64_sqdmlsl2<mode>_internal"
!   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
!         (ss_minus:<VWIDE>
           (match_operand:<VWIDE> 1 "register_operand" "0")
           (ss_ashift:<VWIDE>
               (mult:<VWIDE>
***************
*** 4118,4124 ****
                       (match_dup 4))))
               (const_int 1))))]
    "TARGET_SIMD"
!   "sqdml<SBINQOPS:as>l2\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %<v>3<Vmtype>"
    [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
  )
  
--- 5093,5099 ----
                       (match_dup 4))))
               (const_int 1))))]
    "TARGET_SIMD"
!   "sqdmlsl2\\t%<vw2>0<Vmwtype>, %<v>2<Vmtype>, %<v>3<Vmtype>"
    [(set_attr "type" "neon_sat_mla_<Vetype>_scalar_long")]
  )
  
***************
*** 4597,4604 ****
--- 5572,5645 ----
    [(set_attr "type" "neon_sat_shift_reg<q>")]
  )
  
+ (define_expand "vec_widen_<sur>shiftl_lo_<mode>"
+   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
+ 	(unspec:<VWIDE> [(match_operand:VQW 1 "register_operand" "w")
+ 			 (match_operand:SI 2
+ 			   "aarch64_simd_shift_imm_bitsize_<ve_mode>" "i")]
+ 			 VSHLL))]
+   "TARGET_SIMD"
+   {
+     rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, false);
+     emit_insn (gen_aarch64_<sur>shll<mode>_internal (operands[0], operands[1],
+ 						     p, operands[2]));
+     DONE;
+   }
+ )
+ 
+ (define_expand "vec_widen_<sur>shiftl_hi_<mode>"
+    [(set (match_operand:<VWIDE> 0 "register_operand")
+ 	(unspec:<VWIDE> [(match_operand:VQW 1 "register_operand" "w")
+ 			 (match_operand:SI 2
+ 			   "immediate_operand" "i")]
+ 			  VSHLL))]
+    "TARGET_SIMD"
+    {
+     rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, true);
+     emit_insn (gen_aarch64_<sur>shll2<mode>_internal (operands[0], operands[1],
+ 						      p, operands[2]));
+     DONE;
+    }
+ )
+ 
  ;; vshll_n
  
+ (define_insn "aarch64_<sur>shll<mode>_internal"
+   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
+ 	(unspec:<VWIDE> [(vec_select:<VHALF>
+ 			    (match_operand:VQW 1 "register_operand" "w")
+ 			    (match_operand:VQW 2 "vect_par_cnst_lo_half" ""))
+ 			 (match_operand:SI 3
+ 			   "aarch64_simd_shift_imm_bitsize_<ve_mode>" "i")]
+ 			 VSHLL))]
+   "TARGET_SIMD"
+   {
+     if (INTVAL (operands[3]) == GET_MODE_UNIT_BITSIZE (<MODE>mode))
+       return "shll\\t%0.<Vwtype>, %1.<Vhalftype>, %3";
+     else
+       return "<sur>shll\\t%0.<Vwtype>, %1.<Vhalftype>, %3";
+   }
+   [(set_attr "type" "neon_shift_imm_long")]
+ )
+ 
+ (define_insn "aarch64_<sur>shll2<mode>_internal"
+   [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
+ 	(unspec:<VWIDE> [(vec_select:<VHALF>
+ 			    (match_operand:VQW 1 "register_operand" "w")
+ 			    (match_operand:VQW 2 "vect_par_cnst_hi_half" ""))
+ 			 (match_operand:SI 3
+ 			   "aarch64_simd_shift_imm_bitsize_<ve_mode>" "i")]
+ 			 VSHLL))]
+   "TARGET_SIMD"
+   {
+     if (INTVAL (operands[3]) == GET_MODE_UNIT_BITSIZE (<MODE>mode))
+       return "shll2\\t%0.<Vwtype>, %1.<Vtype>, %3";
+     else
+       return "<sur>shll2\\t%0.<Vwtype>, %1.<Vtype>, %3";
+   }
+   [(set_attr "type" "neon_shift_imm_long")]
+ )
+ 
  (define_insn "aarch64_<sur>shll_n<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
  	(unspec:<VWIDE> [(match_operand:VD_BHSI 1 "register_operand" "w")
***************
*** 4700,4705 ****
--- 5741,5757 ----
    [(set_attr "type" "neon_sat_shift_imm_narrow_q")]
  )
  
+ (define_insn "aarch64_<sur>q<r>shr<u>n2_n<mode>"
+   [(set (match_operand:<VNARROWQ2> 0 "register_operand" "=w")
+         (unspec:<VNARROWQ2> [(match_operand:<VNARROWQ> 1 "register_operand" "0")
+ 			     (match_operand:VQN 2 "register_operand" "w")
+ 			     (match_operand:SI 3 "aarch64_simd_shift_imm_offset_<ve_mode>" "i")]
+                             VQSHRN_N))]
+   "TARGET_SIMD"
+   "<sur>q<r>shr<u>n2\\t%<vn2>0.<V2ntype>, %<v>2.<Vtype>, %3"
+   [(set_attr "type" "neon_sat_shift_imm_narrow_q")]
+ )
+ 
  
  ;; cm(eq|ge|gt|lt|le)
  ;; Note, we have constraints for Dz and Z as different expanders
***************
*** 7098,7103 ****
--- 8150,8169 ----
    [(set_attr "type" "neon_shift_imm_long")]
  )
  
+ (define_expand "aarch64_<su>xtl<mode>"
+   [(set (match_operand:VQN 0 "register_operand" "=w")
+ 	(ANY_EXTEND:VQN (match_operand:<VNARROWQ> 1 "register_operand" "w")))]
+   "TARGET_SIMD"
+   ""
+ )
+ 
+ (define_expand "aarch64_xtn<mode>"
+   [(set (match_operand:<VNARROWQ> 0 "register_operand" "=w")
+ 	(truncate:<VNARROWQ> (match_operand:VQN 1 "register_operand" "w")))]
+   "TARGET_SIMD"
+   ""
+ )
+ 
  ;; Truncate a 128-bit integer vector to a 64-bit vector.
  (define_insn "trunc<mode><Vnarrowq>2"
    [(set (match_operand:<VNARROWQ> 0 "register_operand" "=w")
***************
*** 7107,7112 ****
--- 8173,8214 ----
    [(set_attr "type" "neon_shift_imm_narrow_q")]
  )
  
+ (define_insn "aarch64_xtn2<mode>_le"
+   [(set (match_operand:<VNARROWQ2> 0 "register_operand" "=w")
+ 	(vec_concat:<VNARROWQ2>
+ 	  (match_operand:<VNARROWQ> 1 "register_operand" "0")
+ 	  (truncate:<VNARROWQ> (match_operand:VQN 2 "register_operand" "w"))))]
+   "TARGET_SIMD && !BYTES_BIG_ENDIAN"
+   "xtn2\t%0.<V2ntype>, %2.<Vtype>"
+   [(set_attr "type" "neon_shift_imm_narrow_q")]
+ )
+ 
+ (define_insn "aarch64_xtn2<mode>_be"
+   [(set (match_operand:<VNARROWQ2> 0 "register_operand" "=w")
+ 	(vec_concat:<VNARROWQ2>
+ 	  (truncate:<VNARROWQ> (match_operand:VQN 2 "register_operand" "w"))
+ 	  (match_operand:<VNARROWQ> 1 "register_operand" "0")))]
+   "TARGET_SIMD && BYTES_BIG_ENDIAN"
+   "xtn2\t%0.<V2ntype>, %2.<Vtype>"
+   [(set_attr "type" "neon_shift_imm_narrow_q")]
+ )
+ 
+ (define_expand "aarch64_xtn2<mode>"
+   [(match_operand:<VNARROWQ2> 0 "register_operand")
+    (match_operand:<VNARROWQ> 1 "register_operand")
+    (truncate:<VNARROWQ> (match_operand:VQN 2 "register_operand"))]
+   "TARGET_SIMD"
+   {
+     if (BYTES_BIG_ENDIAN)
+       emit_insn (gen_aarch64_xtn2<mode>_be (operands[0], operands[1],
+ 					     operands[2]));
+     else
+       emit_insn (gen_aarch64_xtn2<mode>_le (operands[0], operands[1],
+ 					     operands[2]));
+     DONE;
+   }
+ )
+ 
  (define_insn "aarch64_bfdot<mode>"
    [(set (match_operand:VDQSF 0 "register_operand" "=w")
  	(plus:VDQSF
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-speculation.cc gcc-11.1.0/gcc/config/aarch64/aarch64-speculation.cc
*** gcc-10.3.0/gcc/config/aarch64/aarch64-speculation.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-speculation.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Speculation tracking and mitigation (e.g. CVE 2017-5753) for AArch64.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Speculation tracking and mitigation (e.g. CVE 2017-5753) for AArch64.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-base.cc gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-base.cc
*** gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-base.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-base.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** public:
*** 2295,2311 ****
    CONSTEXPR svundef_impl (unsigned int vectors_per_tuple)
      : quiet<multi_vector_function> (vectors_per_tuple) {}
  
-   gimple *
-   fold (gimple_folder &f) const OVERRIDE
-   {
-     /* Don't fold svundef at the gimple level.  There's no exact
-        correspondence for SSA_NAMEs, and we explicitly don't want
-        to generate a specific value (like an all-zeros vector).  */
-     if (vectors_per_tuple () == 1)
-       return NULL;
-     return gimple_build_assign (f.lhs, build_clobber (TREE_TYPE (f.lhs)));
-   }
- 
    rtx
    expand (function_expander &e) const OVERRIDE
    {
--- 2295,2300 ----
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-base.def gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-base.def
*** gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-base.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-base.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-base.h gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-base.h
*** gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-base.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-base.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-functions.h gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-functions.h
*** gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-functions.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-functions.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (function_base classes)
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (function_base classes)
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
*** gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (function shapes)
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (function shapes)
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.h gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.h
*** gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (function shapes)
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (function shapes)
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
*** gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE2 intrinsics)
!    Copyright (C) 2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE2 intrinsics)
!    Copyright (C) 2020-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.def gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.def
*** gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2020-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.h gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.h
*** gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2020-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins.cc gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins.cc
*** gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins.cc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins.cc	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** sve_switcher::sve_switcher ()
*** 879,884 ****
--- 879,887 ----
    aarch64_isa_flags = (AARCH64_FL_FP | AARCH64_FL_SIMD | AARCH64_FL_F16
  		       | AARCH64_FL_SVE);
  
+   m_old_maximum_field_alignment = maximum_field_alignment;
+   maximum_field_alignment = 0;
+ 
    m_old_general_regs_only = TARGET_GENERAL_REGS_ONLY;
    global_options.x_target_flags &= ~MASK_GENERAL_REGS_ONLY;
  
*************** sve_switcher::~sve_switcher ()
*** 896,901 ****
--- 899,905 ----
    if (m_old_general_regs_only)
      global_options.x_target_flags |= MASK_GENERAL_REGS_ONLY;
    aarch64_isa_flags = m_old_isa_flags;
+   maximum_field_alignment = m_old_maximum_field_alignment;
  }
  
  function_builder::function_builder ()
*************** registered_function &
*** 995,1006 ****
  function_builder::add_function (const function_instance &instance,
  				const char *name, tree fntype, tree attrs,
  				uint64_t required_extensions,
! 				bool overloaded_p)
  {
    unsigned int code = vec_safe_length (registered_functions);
    code = (code << AARCH64_BUILTIN_SHIFT) | AARCH64_BUILTIN_SVE;
!   tree decl = simulate_builtin_function_decl (input_location, name, fntype,
! 					      code, NULL, attrs);
  
    registered_function &rfn = *ggc_alloc <registered_function> ();
    rfn.instance = instance;
--- 999,1027 ----
  function_builder::add_function (const function_instance &instance,
  				const char *name, tree fntype, tree attrs,
  				uint64_t required_extensions,
! 				bool overloaded_p,
! 				bool placeholder_p)
  {
    unsigned int code = vec_safe_length (registered_functions);
    code = (code << 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.
! 
!      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 = placeholder_p
!     ? integer_zero_node
!     : simulate_builtin_function_decl (input_location, name, fntype,
! 				      code, NULL, attrs);
  
    registered_function &rfn = *ggc_alloc <registered_function> ();
    rfn.instance = instance;
*************** function_builder::add_unique_function (c
*** 1032,1038 ****
  					   argument_types.address ());
    tree attrs = get_attributes (instance);
    registered_function &rfn = add_function (instance, name, fntype, attrs,
! 					   required_extensions, false);
  
    /* Enter the function into the hash table.  */
    hashval_t hash = instance.hash ();
--- 1053,1059 ----
  					   argument_types.address ());
    tree attrs = get_attributes (instance);
    registered_function &rfn = add_function (instance, name, fntype, attrs,
! 					   required_extensions, false, false);
  
    /* Enter the function into the hash table.  */
    hashval_t hash = instance.hash ();
*************** function_builder::add_unique_function (c
*** 1043,1058 ****
  
    /* Also add the function under its overloaded alias, if we want
       a separate decl for each instance of an overloaded function.  */
!   if (m_direct_overloads || force_direct_overloads)
      {
!       char *overload_name = get_name (instance, true);
!       if (strcmp (name, overload_name) != 0)
! 	{
! 	  /* Attribute lists shouldn't be shared.  */
! 	  tree attrs = get_attributes (instance);
! 	  add_function (instance, overload_name, fntype, attrs,
! 			required_extensions, false);
! 	}
      }
  
    obstack_free (&m_string_obstack, name);
--- 1064,1077 ----
  
    /* Also add the function under its overloaded alias, if we want
       a separate decl for each instance of an overloaded function.  */
!   char *overload_name = get_name (instance, true);
!   if (strcmp (name, overload_name) != 0)
      {
!       /* Attribute lists shouldn't be shared.  */
!       tree attrs = get_attributes (instance);
!       bool placeholder_p = !(m_direct_overloads || force_direct_overloads);
!       add_function (instance, overload_name, fntype, attrs,
! 		    required_extensions, false, placeholder_p);
      }
  
    obstack_free (&m_string_obstack, name);
*************** function_builder::add_overloaded_functio
*** 1073,1090 ****
  {
    char *name = get_name (instance, true);
    if (registered_function **map_value = m_overload_names.get (name))
!     gcc_assert ((*map_value)->instance == instance
! 		&& ((*map_value)->required_extensions
! 		    & ~required_extensions) == 0);
    else
      {
        registered_function &rfn
  	= add_function (instance, name, m_overload_type, NULL_TREE,
! 			required_extensions, true);
!       const char *permanent_name = IDENTIFIER_POINTER (DECL_NAME (rfn.decl));
!       m_overload_names.put (permanent_name, &rfn);
      }
-   obstack_free (&m_string_obstack, name);
  }
  
  /* If we are using manual overload resolution, add one function decl
--- 1092,1110 ----
  {
    char *name = get_name (instance, true);
    if (registered_function **map_value = m_overload_names.get (name))
!     {
!       gcc_assert ((*map_value)->instance == instance
! 		  && ((*map_value)->required_extensions
! 		      & ~required_extensions) == 0);
!       obstack_free (&m_string_obstack, name);
!     }
    else
      {
        registered_function &rfn
  	= add_function (instance, name, m_overload_type, NULL_TREE,
! 			required_extensions, true, m_direct_overloads);
!       m_overload_names.put (name, &rfn);
      }
  }
  
  /* If we are using manual overload resolution, add one function decl
*************** void
*** 1094,1102 ****
  function_builder::add_overloaded_functions (const function_group_info &group,
  					    mode_suffix_index mode)
  {
-   if (m_direct_overloads)
-     return;
- 
    unsigned int explicit_type0 = (*group.shape)->explicit_type_suffix_p (0);
    unsigned int explicit_type1 = (*group.shape)->explicit_type_suffix_p (1);
    for (unsigned int pi = 0; group.preds[pi] != NUM_PREDS; ++pi)
--- 1114,1119 ----
*************** function_expander::add_output_operand (i
*** 2792,2798 ****
  {
    unsigned int opno = m_ops.length ();
    machine_mode mode = insn_data[icode].operand[opno].mode;
!   m_ops.safe_grow (opno + 1);
    create_output_operand (&m_ops.last (), possible_target, mode);
  }
  
--- 2809,2815 ----
  {
    unsigned int opno = m_ops.length ();
    machine_mode mode = insn_data[icode].operand[opno].mode;
!   m_ops.safe_grow (opno + 1, true);
    create_output_operand (&m_ops.last (), possible_target, mode);
  }
  
*************** function_expander::add_input_operand (in
*** 2829,2835 ****
        gcc_assert (GET_MODE (x) == VNx16BImode);
        x = gen_lowpart (mode, x);
      }
!   m_ops.safe_grow (m_ops.length () + 1);
    create_input_operand (&m_ops.last (), x, mode);
  }
  
--- 2846,2852 ----
        gcc_assert (GET_MODE (x) == VNx16BImode);
        x = gen_lowpart (mode, x);
      }
!   m_ops.safe_grow (m_ops.length () + 1, true);
    create_input_operand (&m_ops.last (), x, mode);
  }
  
*************** function_expander::add_input_operand (in
*** 2837,2843 ****
  void
  function_expander::add_integer_operand (HOST_WIDE_INT x)
  {
!   m_ops.safe_grow (m_ops.length () + 1);
    create_integer_operand (&m_ops.last (), x);
  }
  
--- 2854,2860 ----
  void
  function_expander::add_integer_operand (HOST_WIDE_INT x)
  {
!   m_ops.safe_grow (m_ops.length () + 1, true);
    create_integer_operand (&m_ops.last (), x);
  }
  
*************** function_expander::add_mem_operand (mach
*** 2861,2867 ****
  void
  function_expander::add_address_operand (rtx x)
  {
!   m_ops.safe_grow (m_ops.length () + 1);
    create_address_operand (&m_ops.last (), x);
  }
  
--- 2878,2884 ----
  void
  function_expander::add_address_operand (rtx x)
  {
!   m_ops.safe_grow (m_ops.length () + 1, true);
    create_address_operand (&m_ops.last (), x);
  }
  
*************** function_expander::add_address_operand (
*** 2870,2876 ****
  void
  function_expander::add_fixed_operand (rtx x)
  {
!   m_ops.safe_grow (m_ops.length () + 1);
    create_fixed_operand (&m_ops.last (), x);
  }
  
--- 2887,2893 ----
  void
  function_expander::add_fixed_operand (rtx x)
  {
!   m_ops.safe_grow (m_ops.length () + 1, true);
    create_fixed_operand (&m_ops.last (), x);
  }
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins.def gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins.def
*** gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Builtin lists for AArch64 SVE
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Builtin lists for AArch64 SVE
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins.h gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins.h
*** gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-sve-builtins.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** private:
*** 337,343 ****
    tree get_attributes (const function_instance &);
  
    registered_function &add_function (const function_instance &,
! 				     const char *, tree, tree, uint64_t, bool);
  
    /* The function type to use for functions that are resolved by
       function_resolver.  */
--- 337,344 ----
    tree get_attributes (const function_instance &);
  
    registered_function &add_function (const function_instance &,
! 				     const char *, tree, tree,
! 				     uint64_t, bool, bool);
  
    /* The function type to use for functions that are resolved by
       function_resolver.  */
*************** public:
*** 658,663 ****
--- 659,665 ----
  
  private:
    unsigned long m_old_isa_flags;
+   unsigned int m_old_maximum_field_alignment;
    bool m_old_general_regs_only;
    bool m_old_have_regs_of_mode[MAX_MACHINE_MODE];
  };
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-sve.md gcc-11.1.0/gcc/config/aarch64/aarch64-sve.md
*** gcc-10.3.0/gcc/config/aarch64/aarch64-sve.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-sve.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description for AArch64 SVE.
! ;; Copyright (C) 2009-2020 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AArch64 SVE.
! ;; Copyright (C) 2009-2021 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 2911,2921 ****
  
  ;; Unpredicated integer unary arithmetic.
  (define_expand "<optab><mode>2"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand")
! 	(unspec:SVE_FULL_I
  	  [(match_dup 2)
! 	   (SVE_INT_UNARY:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 1 "register_operand"))]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE"
    {
--- 2911,2921 ----
  
  ;; Unpredicated integer unary arithmetic.
  (define_expand "<optab><mode>2"
!   [(set (match_operand:SVE_I 0 "register_operand")
! 	(unspec:SVE_I
  	  [(match_dup 2)
! 	   (SVE_INT_UNARY:SVE_I
! 	     (match_operand:SVE_I 1 "register_operand"))]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE"
    {
***************
*** 2925,2935 ****
  
  ;; Integer unary arithmetic predicated with a PTRUE.
  (define_insn "@aarch64_pred_<optab><mode>"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (SVE_INT_UNARY:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 2 "register_operand" "0, w"))]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE"
    "@
--- 2925,2935 ----
  
  ;; Integer unary arithmetic predicated with a PTRUE.
  (define_insn "@aarch64_pred_<optab><mode>"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (SVE_INT_UNARY:SVE_I
! 	     (match_operand:SVE_I 2 "register_operand" "0, w"))]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE"
    "@
***************
*** 2940,2962 ****
  
  ;; Predicated integer unary arithmetic with merging.
  (define_expand "@cond_<optab><mode>"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand")
! 	   (SVE_INT_UNARY:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 2 "register_operand"))
! 	   (match_operand:SVE_FULL_I 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
  )
  
  ;; Predicated integer unary arithmetic, merging with the first input.
  (define_insn "*cond_<optab><mode>_2"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (SVE_INT_UNARY:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 2 "register_operand" "0, w"))
  	   (match_dup 2)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
--- 2940,2962 ----
  
  ;; Predicated integer unary arithmetic with merging.
  (define_expand "@cond_<optab><mode>"
!   [(set (match_operand:SVE_I 0 "register_operand")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand")
! 	   (SVE_INT_UNARY:SVE_I
! 	     (match_operand:SVE_I 2 "register_operand"))
! 	   (match_operand:SVE_I 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
  )
  
  ;; Predicated integer unary arithmetic, merging with the first input.
  (define_insn "*cond_<optab><mode>_2"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (SVE_INT_UNARY:SVE_I
! 	     (match_operand:SVE_I 2 "register_operand" "0, w"))
  	   (match_dup 2)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
***************
*** 2974,2985 ****
  ;; as earlyclobber helps to make the instruction more regular to the
  ;; register allocator.
  (define_insn "*cond_<optab><mode>_any"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=&w, ?&w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl")
! 	   (SVE_INT_UNARY:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 2 "register_operand" "w, w, w"))
! 	   (match_operand:SVE_FULL_I 3 "aarch64_simd_reg_or_zero" "0, Dz, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[3])"
    "@
--- 2974,2985 ----
  ;; as earlyclobber helps to make the instruction more regular to the
  ;; register allocator.
  (define_insn "*cond_<optab><mode>_any"
!   [(set (match_operand:SVE_I 0 "register_operand" "=&w, ?&w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl")
! 	   (SVE_INT_UNARY:SVE_I
! 	     (match_operand:SVE_I 2 "register_operand" "w, w, w"))
! 	   (match_operand:SVE_I 3 "aarch64_simd_reg_or_zero" "0, Dz, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[3])"
    "@
***************
*** 3015,3020 ****
--- 3015,3039 ----
    [(set_attr "movprfx" "*,yes")]
  )
  
+ ;; Another way of expressing the REVB, REVH and REVW patterns, with this
+ ;; form being easier for permutes.  The predicate mode determines the number
+ ;; of lanes and the data mode decides the granularity of the reversal within
+ ;; each lane.
+ (define_insn "@aarch64_sve_revbhw_<SVE_ALL:mode><PRED_HSD:mode>"
+   [(set (match_operand:SVE_ALL 0 "register_operand" "=w, ?&w")
+ 	(unspec:SVE_ALL
+ 	  [(match_operand:PRED_HSD 1 "register_operand" "Upl, Upl")
+ 	   (unspec:SVE_ALL
+ 	     [(match_operand:SVE_ALL 2 "register_operand" "0, w")]
+ 	     UNSPEC_REVBHW)]
+ 	  UNSPEC_PRED_X))]
+   "TARGET_SVE && <PRED_HSD:elem_bits> > <SVE_ALL:container_bits>"
+   "@
+    rev<SVE_ALL:Vcwtype>\t%0.<PRED_HSD:Vetype>, %1/m, %2.<PRED_HSD:Vetype>
+    movprfx\t%0, %2\;rev<SVE_ALL:Vcwtype>\t%0.<PRED_HSD:Vetype>, %1/m, %2.<PRED_HSD:Vetype>"
+   [(set_attr "movprfx" "*,yes")]
+ )
+ 
  ;; Predicated integer unary operations with merging.
  (define_insn "@cond_<optab><mode>"
    [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w, ?&w")
***************
*** 3116,3127 ****
  ;; The canonical form of this operation is an AND of a constant rather
  ;; than (zero_extend (truncate ...)).
  (define_insn "*cond_uxt<mode>_2"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (and:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 2 "register_operand" "0, w")
! 	     (match_operand:SVE_FULL_I 3 "aarch64_sve_uxt_immediate"))
  	   (match_dup 2)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
--- 3135,3146 ----
  ;; The canonical form of this operation is an AND of a constant rather
  ;; than (zero_extend (truncate ...)).
  (define_insn "*cond_uxt<mode>_2"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (and:SVE_I
! 	     (match_operand:SVE_I 2 "register_operand" "0, w")
! 	     (match_operand:SVE_I 3 "aarch64_sve_uxt_immediate"))
  	   (match_dup 2)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
***************
*** 3140,3152 ****
  ;; as early-clobber helps to make the instruction more regular to the
  ;; register allocator.
  (define_insn "*cond_uxt<mode>_any"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=&w, ?&w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl")
! 	   (and:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 2 "register_operand" "w, w, w")
! 	     (match_operand:SVE_FULL_I 3 "aarch64_sve_uxt_immediate"))
! 	   (match_operand:SVE_FULL_I 4 "aarch64_simd_reg_or_zero" "0, Dz, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[4])"
    "@
--- 3159,3171 ----
  ;; as early-clobber helps to make the instruction more regular to the
  ;; register allocator.
  (define_insn "*cond_uxt<mode>_any"
!   [(set (match_operand:SVE_I 0 "register_operand" "=&w, ?&w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl")
! 	   (and:SVE_I
! 	     (match_operand:SVE_I 2 "register_operand" "w, w, w")
! 	     (match_operand:SVE_I 3 "aarch64_sve_uxt_immediate"))
! 	   (match_operand:SVE_I 4 "aarch64_simd_reg_or_zero" "0, Dz, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[4])"
    "@
***************
*** 3208,3223 ****
  )
  
  (define_insn "*cnot<mode>"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(unspec:<VPRED>
  	     [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
  	      (match_operand:SI 5 "aarch64_sve_ptrue_flag")
  	      (eq:<VPRED>
! 		(match_operand:SVE_FULL_I 2 "register_operand" "0, w")
! 		(match_operand:SVE_FULL_I 3 "aarch64_simd_imm_zero"))]
  	     UNSPEC_PRED_Z)
! 	   (match_operand:SVE_FULL_I 4 "aarch64_simd_imm_one")
  	   (match_dup 3)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
--- 3227,3242 ----
  )
  
  (define_insn "*cnot<mode>"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_I
  	  [(unspec:<VPRED>
  	     [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
  	      (match_operand:SI 5 "aarch64_sve_ptrue_flag")
  	      (eq:<VPRED>
! 		(match_operand:SVE_I 2 "register_operand" "0, w")
! 		(match_operand:SVE_I 3 "aarch64_simd_imm_zero"))]
  	     UNSPEC_PRED_Z)
! 	   (match_operand:SVE_I 4 "aarch64_simd_imm_one")
  	   (match_dup 3)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
***************
*** 3255,3273 ****
  
  ;; Predicated logical inverse, merging with the first input.
  (define_insn_and_rewrite "*cond_cnot<mode>_2"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
  	   ;; Logical inverse of operand 2 (as above).
! 	   (unspec:SVE_FULL_I
  	     [(unspec:<VPRED>
  		[(match_operand 5)
  		 (const_int SVE_KNOWN_PTRUE)
  		 (eq:<VPRED>
! 		   (match_operand:SVE_FULL_I 2 "register_operand" "0, w")
! 		   (match_operand:SVE_FULL_I 3 "aarch64_simd_imm_zero"))]
  		UNSPEC_PRED_Z)
! 	      (match_operand:SVE_FULL_I 4 "aarch64_simd_imm_one")
  	      (match_dup 3)]
  	     UNSPEC_SEL)
  	   (match_dup 2)]
--- 3274,3292 ----
  
  ;; Predicated logical inverse, merging with the first input.
  (define_insn_and_rewrite "*cond_cnot<mode>_2"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
  	   ;; Logical inverse of operand 2 (as above).
! 	   (unspec:SVE_I
  	     [(unspec:<VPRED>
  		[(match_operand 5)
  		 (const_int SVE_KNOWN_PTRUE)
  		 (eq:<VPRED>
! 		   (match_operand:SVE_I 2 "register_operand" "0, w")
! 		   (match_operand:SVE_I 3 "aarch64_simd_imm_zero"))]
  		UNSPEC_PRED_Z)
! 	      (match_operand:SVE_I 4 "aarch64_simd_imm_one")
  	      (match_dup 3)]
  	     UNSPEC_SEL)
  	   (match_dup 2)]
***************
*** 3291,3312 ****
  ;; as earlyclobber helps to make the instruction more regular to the
  ;; register allocator.
  (define_insn_and_rewrite "*cond_cnot<mode>_any"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=&w, ?&w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl")
  	   ;; Logical inverse of operand 2 (as above).
! 	   (unspec:SVE_FULL_I
  	     [(unspec:<VPRED>
  		[(match_operand 5)
  		 (const_int SVE_KNOWN_PTRUE)
  		 (eq:<VPRED>
! 		   (match_operand:SVE_FULL_I 2 "register_operand" "w, w, w")
! 		   (match_operand:SVE_FULL_I 3 "aarch64_simd_imm_zero"))]
  		UNSPEC_PRED_Z)
! 	      (match_operand:SVE_FULL_I 4 "aarch64_simd_imm_one")
  	      (match_dup 3)]
  	     UNSPEC_SEL)
! 	   (match_operand:SVE_FULL_I 6 "aarch64_simd_reg_or_zero" "0, Dz, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[6])"
    "@
--- 3310,3331 ----
  ;; as earlyclobber helps to make the instruction more regular to the
  ;; register allocator.
  (define_insn_and_rewrite "*cond_cnot<mode>_any"
!   [(set (match_operand:SVE_I 0 "register_operand" "=&w, ?&w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl")
  	   ;; Logical inverse of operand 2 (as above).
! 	   (unspec:SVE_I
  	     [(unspec:<VPRED>
  		[(match_operand 5)
  		 (const_int SVE_KNOWN_PTRUE)
  		 (eq:<VPRED>
! 		   (match_operand:SVE_I 2 "register_operand" "w, w, w")
! 		   (match_operand:SVE_I 3 "aarch64_simd_imm_zero"))]
  		UNSPEC_PRED_Z)
! 	      (match_operand:SVE_I 4 "aarch64_simd_imm_one")
  	      (match_dup 3)]
  	     UNSPEC_SEL)
! 	   (match_operand:SVE_I 6 "aarch64_simd_reg_or_zero" "0, Dz, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[6])"
    "@
***************
*** 3609,3620 ****
  
  ;; Unpredicated integer binary operations that have an immediate form.
  (define_expand "<optab><mode>3"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand")
! 	(unspec:SVE_FULL_I
  	  [(match_dup 3)
! 	   (SVE_INT_BINARY_IMM:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 1 "register_operand")
! 	     (match_operand:SVE_FULL_I 2 "aarch64_sve_<sve_imm_con>_operand"))]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE"
    {
--- 3628,3639 ----
  
  ;; Unpredicated integer binary operations that have an immediate form.
  (define_expand "<optab><mode>3"
!   [(set (match_operand:SVE_I 0 "register_operand")
! 	(unspec:SVE_I
  	  [(match_dup 3)
! 	   (SVE_INT_BINARY_IMM:SVE_I
! 	     (match_operand:SVE_I 1 "register_operand")
! 	     (match_operand:SVE_I 2 "aarch64_sve_<sve_imm_con>_operand"))]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE"
    {
***************
*** 3628,3639 ****
  ;; and would make the instruction seem less uniform to the register
  ;; allocator.
  (define_insn_and_split "@aarch64_pred_<optab><mode>"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, w, ?&w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl, Upl")
! 	   (SVE_INT_BINARY_IMM:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 2 "register_operand" "%0, 0, w, w")
! 	     (match_operand:SVE_FULL_I 3 "aarch64_sve_<sve_imm_con>_operand" "<sve_imm_con>, w, <sve_imm_con>, w"))]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE"
    "@
--- 3647,3658 ----
  ;; and would make the instruction seem less uniform to the register
  ;; allocator.
  (define_insn_and_split "@aarch64_pred_<optab><mode>"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, w, ?&w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl, Upl")
! 	   (SVE_INT_BINARY_IMM:SVE_I
! 	     (match_operand:SVE_I 2 "register_operand" "%0, 0, w, w")
! 	     (match_operand:SVE_I 3 "aarch64_sve_<sve_imm_con>_operand" "<sve_imm_con>, w, <sve_imm_con>, w"))]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE"
    "@
***************
*** 3646,3652 ****
    "&& reload_completed
     && !register_operand (operands[3], <MODE>mode)"
    [(set (match_dup 0)
! 	(SVE_INT_BINARY_IMM:SVE_FULL_I (match_dup 2) (match_dup 3)))]
    ""
    [(set_attr "movprfx" "*,*,yes,yes")]
  )
--- 3665,3671 ----
    "&& reload_completed
     && !register_operand (operands[3], <MODE>mode)"
    [(set (match_dup 0)
! 	(SVE_INT_BINARY_IMM:SVE_I (match_dup 2) (match_dup 3)))]
    ""
    [(set_attr "movprfx" "*,*,yes,yes")]
  )
***************
*** 3655,3664 ****
  ;; These are generated by splitting a predicated instruction whose
  ;; predicate is unused.
  (define_insn "*post_ra_<optab><mode>3"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(SVE_INT_BINARY_IMM:SVE_FULL_I
! 	  (match_operand:SVE_FULL_I 1 "register_operand" "0, w")
! 	  (match_operand:SVE_FULL_I 2 "aarch64_sve_<sve_imm_con>_immediate")))]
    "TARGET_SVE && reload_completed"
    "@
     <sve_int_op>\t%0.<Vetype>, %0.<Vetype>, #%<sve_imm_prefix>2
--- 3674,3683 ----
  ;; These are generated by splitting a predicated instruction whose
  ;; predicate is unused.
  (define_insn "*post_ra_<optab><mode>3"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(SVE_INT_BINARY_IMM:SVE_I
! 	  (match_operand:SVE_I 1 "register_operand" "0, w")
! 	  (match_operand:SVE_I 2 "aarch64_sve_<sve_imm_con>_immediate")))]
    "TARGET_SVE && reload_completed"
    "@
     <sve_int_op>\t%0.<Vetype>, %0.<Vetype>, #%<sve_imm_prefix>2
***************
*** 3668,3692 ****
  
  ;; Predicated integer operations with merging.
  (define_expand "@cond_<optab><mode>"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand")
! 	   (SVE_INT_BINARY:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 2 "register_operand")
! 	     (match_operand:SVE_FULL_I 3 "<sve_pred_int_rhs2_operand>"))
! 	   (match_operand:SVE_FULL_I 4 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
  )
  
  ;; Predicated integer operations, merging with the first input.
  (define_insn "*cond_<optab><mode>_2"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (SVE_INT_BINARY:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 2 "register_operand" "0, w")
! 	     (match_operand:SVE_FULL_I 3 "register_operand" "w, w"))
  	   (match_dup 2)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
--- 3687,3711 ----
  
  ;; Predicated integer operations with merging.
  (define_expand "@cond_<optab><mode>"
!   [(set (match_operand:SVE_I 0 "register_operand")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand")
! 	   (SVE_INT_BINARY:SVE_I
! 	     (match_operand:SVE_I 2 "register_operand")
! 	     (match_operand:SVE_I 3 "<sve_pred_int_rhs2_operand>"))
! 	   (match_operand:SVE_I 4 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
  )
  
  ;; Predicated integer operations, merging with the first input.
  (define_insn "*cond_<optab><mode>_2"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (SVE_INT_BINARY:SVE_I
! 	     (match_operand:SVE_I 2 "register_operand" "0, w")
! 	     (match_operand:SVE_I 3 "register_operand" "w, w"))
  	   (match_dup 2)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
***************
*** 3698,3709 ****
  
  ;; Predicated integer operations, merging with the second input.
  (define_insn "*cond_<optab><mode>_3"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (SVE_INT_BINARY:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 2 "register_operand" "w, w")
! 	     (match_operand:SVE_FULL_I 3 "register_operand" "0, w"))
  	   (match_dup 3)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
--- 3717,3728 ----
  
  ;; Predicated integer operations, merging with the second input.
  (define_insn "*cond_<optab><mode>_3"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (SVE_INT_BINARY:SVE_I
! 	     (match_operand:SVE_I 2 "register_operand" "w, w")
! 	     (match_operand:SVE_I 3 "register_operand" "0, w"))
  	   (match_dup 3)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
***************
*** 3715,3727 ****
  
  ;; Predicated integer operations, merging with an independent value.
  (define_insn_and_rewrite "*cond_<optab><mode>_any"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=&w, &w, &w, &w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl, Upl, Upl")
! 	   (SVE_INT_BINARY:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 2 "register_operand" "0, w, w, w, w")
! 	     (match_operand:SVE_FULL_I 3 "register_operand" "w, 0, w, w, w"))
! 	   (match_operand:SVE_FULL_I 4 "aarch64_simd_reg_or_zero" "Dz, Dz, Dz, 0, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE
     && !rtx_equal_p (operands[2], operands[4])
--- 3734,3746 ----
  
  ;; Predicated integer operations, merging with an independent value.
  (define_insn_and_rewrite "*cond_<optab><mode>_any"
!   [(set (match_operand:SVE_I 0 "register_operand" "=&w, &w, &w, &w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl, Upl, Upl")
! 	   (SVE_INT_BINARY:SVE_I
! 	     (match_operand:SVE_I 2 "register_operand" "0, w, w, w, w")
! 	     (match_operand:SVE_I 3 "register_operand" "w, 0, w, w, w"))
! 	   (match_operand:SVE_I 4 "aarch64_simd_reg_or_zero" "Dz, Dz, Dz, 0, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE
     && !rtx_equal_p (operands[2], operands[4])
***************
*** 3786,3795 ****
  ;; -------------------------------------------------------------------------
  
  (define_insn "sub<mode>3"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, w, ?&w")
! 	(minus:SVE_FULL_I
! 	  (match_operand:SVE_FULL_I 1 "aarch64_sve_arith_operand" "w, vsa, vsa")
! 	  (match_operand:SVE_FULL_I 2 "register_operand" "w, 0, w")))]
    "TARGET_SVE"
    "@
     sub\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>
--- 3805,3814 ----
  ;; -------------------------------------------------------------------------
  
  (define_insn "sub<mode>3"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, w, ?&w")
! 	(minus:SVE_I
! 	  (match_operand:SVE_I 1 "aarch64_sve_arith_operand" "w, vsa, vsa")
! 	  (match_operand:SVE_I 2 "register_operand" "w, 0, w")))]
    "TARGET_SVE"
    "@
     sub\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>
***************
*** 3882,3898 ****
  )
  
  (define_insn_and_rewrite "*aarch64_adr<mode>_shift"
!   [(set (match_operand:SVE_FULL_SDI 0 "register_operand" "=w")
! 	(plus:SVE_FULL_SDI
! 	  (unspec:SVE_FULL_SDI
  	    [(match_operand 4)
! 	     (ashift:SVE_FULL_SDI
! 	       (match_operand:SVE_FULL_SDI 2 "register_operand" "w")
! 	       (match_operand:SVE_FULL_SDI 3 "const_1_to_3_operand"))]
  	    UNSPEC_PRED_X)
! 	  (match_operand:SVE_FULL_SDI 1 "register_operand" "w")))]
    "TARGET_SVE"
!   "adr\t%0.<Vetype>, [%1.<Vetype>, %2.<Vetype>, lsl %3]"
    "&& !CONSTANT_P (operands[4])"
    {
      operands[4] = CONSTM1_RTX (<VPRED>mode);
--- 3901,3917 ----
  )
  
  (define_insn_and_rewrite "*aarch64_adr<mode>_shift"
!   [(set (match_operand:SVE_24I 0 "register_operand" "=w")
! 	(plus:SVE_24I
! 	  (unspec:SVE_24I
  	    [(match_operand 4)
! 	     (ashift:SVE_24I
! 	       (match_operand:SVE_24I 2 "register_operand" "w")
! 	       (match_operand:SVE_24I 3 "const_1_to_3_operand"))]
  	    UNSPEC_PRED_X)
! 	  (match_operand:SVE_24I 1 "register_operand" "w")))]
    "TARGET_SVE"
!   "adr\t%0.<Vctype>, [%1.<Vctype>, %2.<Vctype>, lsl %3]"
    "&& !CONSTANT_P (operands[4])"
    {
      operands[4] = CONSTM1_RTX (<VPRED>mode);
***************
*** 3954,3963 ****
  
  ;; Unpredicated integer absolute difference.
  (define_expand "<su>abd<mode>_3"
!   [(use (match_operand:SVE_FULL_I 0 "register_operand"))
!    (USMAX:SVE_FULL_I
!      (match_operand:SVE_FULL_I 1 "register_operand")
!      (match_operand:SVE_FULL_I 2 "register_operand"))]
    "TARGET_SVE"
    {
      rtx pred = aarch64_ptrue_reg (<VPRED>mode);
--- 3973,3982 ----
  
  ;; Unpredicated integer absolute difference.
  (define_expand "<su>abd<mode>_3"
!   [(use (match_operand:SVE_I 0 "register_operand"))
!    (USMAX:SVE_I
!      (match_operand:SVE_I 1 "register_operand")
!      (match_operand:SVE_I 2 "register_operand"))]
    "TARGET_SVE"
    {
      rtx pred = aarch64_ptrue_reg (<VPRED>mode);
***************
*** 3969,3985 ****
  
  ;; Predicated integer absolute difference.
  (define_insn "@aarch64_pred_<su>abd<mode>"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL_I
! 	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (minus:SVE_FULL_I
! 	     (USMAX:SVE_FULL_I
! 	       (match_operand:SVE_FULL_I 2 "register_operand" "%0, w")
! 	       (match_operand:SVE_FULL_I 3 "register_operand" "w, w"))
! 	     (<max_opp>:SVE_FULL_I
  	       (match_dup 2)
! 	       (match_dup 3)))]
! 	  UNSPEC_PRED_X))]
    "TARGET_SVE"
    "@
     <su>abd\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
--- 3988,4007 ----
  
  ;; Predicated integer absolute difference.
  (define_insn "@aarch64_pred_<su>abd<mode>"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(minus:SVE_I
! 	  (unspec:SVE_I
! 	    [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	     (USMAX:SVE_I
! 	       (match_operand:SVE_I 2 "register_operand" "%0, w")
! 	       (match_operand:SVE_I 3 "register_operand" "w, w"))]
! 	    UNSPEC_PRED_X)
! 	  (unspec:SVE_I
! 	    [(match_dup 1)
! 	     (<max_opp>:SVE_I
  	       (match_dup 2)
! 	       (match_dup 3))]
! 	    UNSPEC_PRED_X)))]
    "TARGET_SVE"
    "@
     <su>abd\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
***************
*** 4014,4032 ****
  
  ;; Predicated integer absolute difference, merging with the first input.
  (define_insn_and_rewrite "*aarch64_cond_<su>abd<mode>_2"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (minus:SVE_FULL_I
! 	     (unspec:SVE_FULL_I
  	       [(match_operand 4)
! 		(USMAX:SVE_FULL_I
! 		  (match_operand:SVE_FULL_I 2 "register_operand" "0, w")
! 		  (match_operand:SVE_FULL_I 3 "register_operand" "w, w"))]
  	       UNSPEC_PRED_X)
! 	     (unspec:SVE_FULL_I
  	       [(match_operand 5)
! 		(<max_opp>:SVE_FULL_I
  		  (match_dup 2)
  		  (match_dup 3))]
  	       UNSPEC_PRED_X))
--- 4036,4054 ----
  
  ;; Predicated integer absolute difference, merging with the first input.
  (define_insn_and_rewrite "*aarch64_cond_<su>abd<mode>_2"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (minus:SVE_I
! 	     (unspec:SVE_I
  	       [(match_operand 4)
! 		(USMAX:SVE_I
! 		  (match_operand:SVE_I 2 "register_operand" "0, w")
! 		  (match_operand:SVE_I 3 "register_operand" "w, w"))]
  	       UNSPEC_PRED_X)
! 	     (unspec:SVE_I
  	       [(match_operand 5)
! 		(<max_opp>:SVE_I
  		  (match_dup 2)
  		  (match_dup 3))]
  	       UNSPEC_PRED_X))
***************
*** 4043,4067 ****
    [(set_attr "movprfx" "*,yes")]
  )
  
  ;; Predicated integer absolute difference, merging with an independent value.
  (define_insn_and_rewrite "*aarch64_cond_<su>abd<mode>_any"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=&w, &w, &w, &w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl, Upl, Upl")
! 	   (minus:SVE_FULL_I
! 	     (unspec:SVE_FULL_I
  	       [(match_operand 5)
! 		(USMAX:SVE_FULL_I
! 		  (match_operand:SVE_FULL_I 2 "register_operand" "0, w, w, w, w")
! 		  (match_operand:SVE_FULL_I 3 "register_operand" "w, 0, w, w, w"))]
  	       UNSPEC_PRED_X)
! 	     (unspec:SVE_FULL_I
  	       [(match_operand 6)
! 		(<max_opp>:SVE_FULL_I
  		  (match_dup 2)
  		  (match_dup 3))]
  	       UNSPEC_PRED_X))
! 	   (match_operand:SVE_FULL_I 4 "aarch64_simd_reg_or_zero" "Dz, Dz, Dz, 0, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE
     && !rtx_equal_p (operands[2], operands[4])
--- 4065,4120 ----
    [(set_attr "movprfx" "*,yes")]
  )
  
+ ;; Predicated integer absolute difference, merging with the second input.
+ (define_insn_and_rewrite "*aarch64_cond_<su>abd<mode>_3"
+   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
+ 	(unspec:SVE_I
+ 	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
+ 	   (minus:SVE_I
+ 	     (unspec:SVE_I
+ 	       [(match_operand 4)
+ 		(USMAX:SVE_I
+ 		  (match_operand:SVE_I 2 "register_operand" "w, w")
+ 		  (match_operand:SVE_I 3 "register_operand" "0, w"))]
+ 	       UNSPEC_PRED_X)
+ 	     (unspec:SVE_I
+ 	       [(match_operand 5)
+ 		(<max_opp>:SVE_I
+ 		  (match_dup 2)
+ 		  (match_dup 3))]
+ 	       UNSPEC_PRED_X))
+ 	   (match_dup 3)]
+ 	  UNSPEC_SEL))]
+   "TARGET_SVE"
+   "@
+    <su>abd\t%0.<Vetype>, %1/m, %0.<Vetype>, %2.<Vetype>
+    movprfx\t%0, %3\;<su>abd\t%0.<Vetype>, %1/m, %0.<Vetype>, %2.<Vetype>"
+   "&& (!CONSTANT_P (operands[4]) || !CONSTANT_P (operands[5]))"
+   {
+     operands[4] = operands[5] = CONSTM1_RTX (<VPRED>mode);
+   }
+   [(set_attr "movprfx" "*,yes")]
+ )
+ 
  ;; Predicated integer absolute difference, merging with an independent value.
  (define_insn_and_rewrite "*aarch64_cond_<su>abd<mode>_any"
!   [(set (match_operand:SVE_I 0 "register_operand" "=&w, &w, &w, &w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl, Upl, Upl")
! 	   (minus:SVE_I
! 	     (unspec:SVE_I
  	       [(match_operand 5)
! 		(USMAX:SVE_I
! 		  (match_operand:SVE_I 2 "register_operand" "0, w, w, w, w")
! 		  (match_operand:SVE_I 3 "register_operand" "w, 0, w, w, w"))]
  	       UNSPEC_PRED_X)
! 	     (unspec:SVE_I
  	       [(match_operand 6)
! 		(<max_opp>:SVE_I
  		  (match_dup 2)
  		  (match_dup 3))]
  	       UNSPEC_PRED_X))
! 	   (match_operand:SVE_I 4 "aarch64_simd_reg_or_zero" "Dz, Dz, Dz, 0, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE
     && !rtx_equal_p (operands[2], operands[4])
***************
*** 4139,4150 ****
  
  ;; Unpredicated highpart multiplication.
  (define_expand "<su>mul<mode>3_highpart"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand")
! 	(unspec:SVE_FULL_I
  	  [(match_dup 3)
! 	   (unspec:SVE_FULL_I
! 	     [(match_operand:SVE_FULL_I 1 "register_operand")
! 	      (match_operand:SVE_FULL_I 2 "register_operand")]
  	     MUL_HIGHPART)]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE"
--- 4192,4203 ----
  
  ;; Unpredicated highpart multiplication.
  (define_expand "<su>mul<mode>3_highpart"
!   [(set (match_operand:SVE_I 0 "register_operand")
! 	(unspec:SVE_I
  	  [(match_dup 3)
! 	   (unspec:SVE_I
! 	     [(match_operand:SVE_I 1 "register_operand")
! 	      (match_operand:SVE_I 2 "register_operand")]
  	     MUL_HIGHPART)]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE"
***************
*** 4155,4166 ****
  
  ;; Predicated highpart multiplication.
  (define_insn "@aarch64_pred_<optab><mode>"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (unspec:SVE_FULL_I
! 	     [(match_operand:SVE_FULL_I 2 "register_operand" "%0, w")
! 	      (match_operand:SVE_FULL_I 3 "register_operand" "w, w")]
  	     MUL_HIGHPART)]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE"
--- 4208,4219 ----
  
  ;; Predicated highpart multiplication.
  (define_insn "@aarch64_pred_<optab><mode>"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (unspec:SVE_I
! 	     [(match_operand:SVE_I 2 "register_operand" "%0, w")
! 	      (match_operand:SVE_I 3 "register_operand" "w, w")]
  	     MUL_HIGHPART)]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE"
***************
*** 4353,4362 ****
  
  ;; Unpredicated integer binary logical operations.
  (define_insn "<optab><mode>3"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?w, w")
! 	(LOGICAL:SVE_FULL_I
! 	  (match_operand:SVE_FULL_I 1 "register_operand" "%0, w, w")
! 	  (match_operand:SVE_FULL_I 2 "aarch64_sve_logical_operand" "vsl, vsl, w")))]
    "TARGET_SVE"
    "@
     <logical>\t%0.<Vetype>, %0.<Vetype>, #%C2
--- 4406,4415 ----
  
  ;; Unpredicated integer binary logical operations.
  (define_insn "<optab><mode>3"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?w, w")
! 	(LOGICAL:SVE_I
! 	  (match_operand:SVE_I 1 "register_operand" "%0, w, w")
! 	  (match_operand:SVE_I 2 "aarch64_sve_logical_operand" "vsl, vsl, w")))]
    "TARGET_SVE"
    "@
     <logical>\t%0.<Vetype>, %0.<Vetype>, #%C2
***************
*** 4376,4388 ****
  
  ;; Unpredicated BIC.
  (define_expand "@aarch64_bic<mode>"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand")
! 	(and:SVE_FULL_I
! 	  (unspec:SVE_FULL_I
  	    [(match_dup 3)
! 	     (not:SVE_FULL_I (match_operand:SVE_FULL_I 2 "register_operand"))]
  	    UNSPEC_PRED_X)
! 	  (match_operand:SVE_FULL_I 1 "register_operand")))]
    "TARGET_SVE"
    {
      operands[3] = CONSTM1_RTX (<VPRED>mode);
--- 4429,4441 ----
  
  ;; Unpredicated BIC.
  (define_expand "@aarch64_bic<mode>"
!   [(set (match_operand:SVE_I 0 "register_operand")
! 	(and:SVE_I
! 	  (unspec:SVE_I
  	    [(match_dup 3)
! 	     (not:SVE_I (match_operand:SVE_I 2 "register_operand"))]
  	    UNSPEC_PRED_X)
! 	  (match_operand:SVE_I 1 "register_operand")))]
    "TARGET_SVE"
    {
      operands[3] = CONSTM1_RTX (<VPRED>mode);
***************
*** 4391,4404 ****
  
  ;; Predicated BIC.
  (define_insn_and_rewrite "*bic<mode>3"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w")
! 	(and:SVE_FULL_I
! 	  (unspec:SVE_FULL_I
  	    [(match_operand 3)
! 	     (not:SVE_FULL_I
! 	       (match_operand:SVE_FULL_I 2 "register_operand" "w"))]
  	    UNSPEC_PRED_X)
! 	  (match_operand:SVE_FULL_I 1 "register_operand" "w")))]
    "TARGET_SVE"
    "bic\t%0.d, %1.d, %2.d"
    "&& !CONSTANT_P (operands[3])"
--- 4444,4457 ----
  
  ;; Predicated BIC.
  (define_insn_and_rewrite "*bic<mode>3"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w")
! 	(and:SVE_I
! 	  (unspec:SVE_I
  	    [(match_operand 3)
! 	     (not:SVE_I
! 	       (match_operand:SVE_I 2 "register_operand" "w"))]
  	    UNSPEC_PRED_X)
! 	  (match_operand:SVE_I 1 "register_operand" "w")))]
    "TARGET_SVE"
    "bic\t%0.d, %1.d, %2.d"
    "&& !CONSTANT_P (operands[3])"
***************
*** 4422,4434 ****
  
  ;; Predicated integer BIC, merging with the first input.
  (define_insn "*cond_bic<mode>_2"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (and:SVE_FULL_I
! 	     (not:SVE_FULL_I
! 	       (match_operand:SVE_FULL_I 3 "register_operand" "w, w"))
! 	     (match_operand:SVE_FULL_I 2 "register_operand" "0, w"))
  	   (match_dup 2)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
--- 4475,4487 ----
  
  ;; Predicated integer BIC, merging with the first input.
  (define_insn "*cond_bic<mode>_2"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (and:SVE_I
! 	     (not:SVE_I
! 	       (match_operand:SVE_I 3 "register_operand" "w, w"))
! 	     (match_operand:SVE_I 2 "register_operand" "0, w"))
  	   (match_dup 2)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
***************
*** 4440,4453 ****
  
  ;; Predicated integer BIC, merging with an independent value.
  (define_insn_and_rewrite "*cond_bic<mode>_any"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=&w, &w, &w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl, Upl")
! 	   (and:SVE_FULL_I
! 	     (not:SVE_FULL_I
! 	       (match_operand:SVE_FULL_I 3 "register_operand" "w, w, w, w"))
! 	     (match_operand:SVE_FULL_I 2 "register_operand" "0, w, w, w"))
! 	   (match_operand:SVE_FULL_I 4 "aarch64_simd_reg_or_zero" "Dz, Dz, 0, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[4])"
    "@
--- 4493,4506 ----
  
  ;; Predicated integer BIC, merging with an independent value.
  (define_insn_and_rewrite "*cond_bic<mode>_any"
!   [(set (match_operand:SVE_I 0 "register_operand" "=&w, &w, &w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl, Upl")
! 	   (and:SVE_I
! 	     (not:SVE_I
! 	       (match_operand:SVE_I 3 "register_operand" "w, w, w, w"))
! 	     (match_operand:SVE_I 2 "register_operand" "0, w, w, w"))
! 	   (match_operand:SVE_I 4 "aarch64_simd_reg_or_zero" "Dz, Dz, 0, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[4])"
    "@
***************
*** 4481,4489 ****
  ;; Unpredicated shift by a scalar, which expands into one of the vector
  ;; shifts below.
  (define_expand "<ASHIFT:optab><mode>3"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand")
! 	(ASHIFT:SVE_FULL_I
! 	  (match_operand:SVE_FULL_I 1 "register_operand")
  	  (match_operand:<VEL> 2 "general_operand")))]
    "TARGET_SVE"
    {
--- 4534,4542 ----
  ;; Unpredicated shift by a scalar, which expands into one of the vector
  ;; shifts below.
  (define_expand "<ASHIFT:optab><mode>3"
!   [(set (match_operand:SVE_I 0 "register_operand")
! 	(ASHIFT:SVE_I
! 	  (match_operand:SVE_I 1 "register_operand")
  	  (match_operand:<VEL> 2 "general_operand")))]
    "TARGET_SVE"
    {
***************
*** 4496,4505 ****
        }
      else
        {
! 	amount = gen_reg_rtx (<MODE>mode);
! 	emit_insn (gen_vec_duplicate<mode> (amount,
! 					    convert_to_mode (<VEL>mode,
! 							     operands[2], 0)));
        }
      emit_insn (gen_v<optab><mode>3 (operands[0], operands[1], amount));
      DONE;
--- 4549,4556 ----
        }
      else
        {
! 	amount = convert_to_mode (<VEL>mode, operands[2], 0);
! 	amount = expand_vector_broadcast (<MODE>mode, amount);
        }
      emit_insn (gen_v<optab><mode>3 (operands[0], operands[1], amount));
      DONE;
***************
*** 4508,4519 ****
  
  ;; Unpredicated shift by a vector.
  (define_expand "v<optab><mode>3"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand")
! 	(unspec:SVE_FULL_I
  	  [(match_dup 3)
! 	   (ASHIFT:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 1 "register_operand")
! 	     (match_operand:SVE_FULL_I 2 "aarch64_sve_<lr>shift_operand"))]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE"
    {
--- 4559,4570 ----
  
  ;; Unpredicated shift by a vector.
  (define_expand "v<optab><mode>3"
!   [(set (match_operand:SVE_I 0 "register_operand")
! 	(unspec:SVE_I
  	  [(match_dup 3)
! 	   (ASHIFT:SVE_I
! 	     (match_operand:SVE_I 1 "register_operand")
! 	     (match_operand:SVE_I 2 "aarch64_sve_<lr>shift_operand"))]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE"
    {
***************
*** 4526,4537 ****
  ;; likely to gain much and would make the instruction seem less uniform
  ;; to the register allocator.
  (define_insn_and_split "@aarch64_pred_<optab><mode>"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, w, w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl, Upl")
! 	   (ASHIFT:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 2 "register_operand" "w, 0, w, w")
! 	     (match_operand:SVE_FULL_I 3 "aarch64_sve_<lr>shift_operand" "D<lr>, w, 0, w"))]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE"
    "@
--- 4577,4588 ----
  ;; likely to gain much and would make the instruction seem less uniform
  ;; to the register allocator.
  (define_insn_and_split "@aarch64_pred_<optab><mode>"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, w, w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl, Upl")
! 	   (ASHIFT:SVE_I
! 	     (match_operand:SVE_I 2 "register_operand" "w, 0, w, w")
! 	     (match_operand:SVE_I 3 "aarch64_sve_<lr>shift_operand" "D<lr>, w, 0, w"))]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE"
    "@
***************
*** 4541,4547 ****
     movprfx\t%0, %2\;<shift>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>"
    "&& reload_completed
     && !register_operand (operands[3], <MODE>mode)"
!   [(set (match_dup 0) (ASHIFT:SVE_FULL_I (match_dup 2) (match_dup 3)))]
    ""
    [(set_attr "movprfx" "*,*,*,yes")]
  )
--- 4592,4598 ----
     movprfx\t%0, %2\;<shift>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>"
    "&& reload_completed
     && !register_operand (operands[3], <MODE>mode)"
!   [(set (match_dup 0) (ASHIFT:SVE_I (match_dup 2) (match_dup 3)))]
    ""
    [(set_attr "movprfx" "*,*,*,yes")]
  )
***************
*** 4550,4571 ****
  ;; These are generated by splitting a predicated instruction whose
  ;; predicate is unused.
  (define_insn "*post_ra_v<optab><mode>3"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w")
! 	(ASHIFT:SVE_FULL_I
! 	  (match_operand:SVE_FULL_I 1 "register_operand" "w")
! 	  (match_operand:SVE_FULL_I 2 "aarch64_simd_<lr>shift_imm")))]
    "TARGET_SVE && reload_completed"
    "<shift>\t%0.<Vetype>, %1.<Vetype>, #%2"
  )
  
  ;; Predicated integer shift, merging with the first input.
  (define_insn "*cond_<optab><mode>_2_const"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (ASHIFT:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 2 "register_operand" "0, w")
! 	     (match_operand:SVE_FULL_I 3 "aarch64_simd_<lr>shift_imm"))
  	   (match_dup 2)]
  	 UNSPEC_SEL))]
    "TARGET_SVE"
--- 4601,4622 ----
  ;; These are generated by splitting a predicated instruction whose
  ;; predicate is unused.
  (define_insn "*post_ra_v<optab><mode>3"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w")
! 	(ASHIFT:SVE_I
! 	  (match_operand:SVE_I 1 "register_operand" "w")
! 	  (match_operand:SVE_I 2 "aarch64_simd_<lr>shift_imm")))]
    "TARGET_SVE && reload_completed"
    "<shift>\t%0.<Vetype>, %1.<Vetype>, #%2"
  )
  
  ;; Predicated integer shift, merging with the first input.
  (define_insn "*cond_<optab><mode>_2_const"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (ASHIFT:SVE_I
! 	     (match_operand:SVE_I 2 "register_operand" "0, w")
! 	     (match_operand:SVE_I 3 "aarch64_simd_<lr>shift_imm"))
  	   (match_dup 2)]
  	 UNSPEC_SEL))]
    "TARGET_SVE"
***************
*** 4577,4589 ****
  
  ;; Predicated integer shift, merging with an independent value.
  (define_insn_and_rewrite "*cond_<optab><mode>_any_const"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, &w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl")
! 	   (ASHIFT:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 2 "register_operand" "w, w, w")
! 	     (match_operand:SVE_FULL_I 3 "aarch64_simd_<lr>shift_imm"))
! 	   (match_operand:SVE_FULL_I 4 "aarch64_simd_reg_or_zero" "Dz, 0, w")]
  	 UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[4])"
    "@
--- 4628,4640 ----
  
  ;; Predicated integer shift, merging with an independent value.
  (define_insn_and_rewrite "*cond_<optab><mode>_any_const"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, &w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl")
! 	   (ASHIFT:SVE_I
! 	     (match_operand:SVE_I 2 "register_operand" "w, w, w")
! 	     (match_operand:SVE_I 3 "aarch64_simd_<lr>shift_imm"))
! 	   (match_operand:SVE_I 4 "aarch64_simd_reg_or_zero" "Dz, 0, w")]
  	 UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[4])"
    "@
***************
*** 4671,4738 ****
  ;; - URSHR (SVE2)
  ;; -------------------------------------------------------------------------
  
! ;; Unpredicated <SVE_INT_OP>.
  (define_expand "sdiv_pow2<mode>3"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand")
! 	(unspec:SVE_FULL_I
  	  [(match_dup 3)
! 	   (unspec:SVE_FULL_I
! 	     [(match_operand:SVE_FULL_I 1 "register_operand")
  	      (match_operand 2 "aarch64_simd_rshift_imm")]
! 	     UNSPEC_ASRD)
! 	   (match_dup 1)]
! 	 UNSPEC_SEL))]
    "TARGET_SVE"
    {
      operands[3] = aarch64_ptrue_reg (<VPRED>mode);
    }
  )
  
! ;; Predicated right shift with merging.
  (define_expand "@cond_<sve_int_op><mode>"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand")
! 	   (unspec:SVE_FULL_I
! 	     [(match_operand:SVE_FULL_I 2 "register_operand")
! 	      (match_operand:SVE_FULL_I 3 "aarch64_simd_<lr>shift_imm")]
! 	     SVE_INT_SHIFT_IMM)
! 	   (match_operand:SVE_FULL_I 4 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
  )
  
! ;; Predicated right shift, merging with the first input.
! (define_insn "*cond_<sve_int_op><mode>_2"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (unspec:SVE_FULL_I
! 	     [(match_operand:SVE_FULL_I 2 "register_operand" "0, w")
! 	      (match_operand:SVE_FULL_I 3 "aarch64_simd_<lr>shift_imm")]
! 	     SVE_INT_SHIFT_IMM)
  	   (match_dup 2)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
    "@
     <sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, #%3
     movprfx\t%0, %2\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, #%3"
    [(set_attr "movprfx" "*,yes")])
  
! ;; Predicated right shift, merging with zero.
! (define_insn "*cond_<sve_int_op><mode>_z"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w")
! 	(unspec:SVE_FULL_I
! 	  [(match_operand:<VPRED> 1 "register_operand" "Upl")
! 	   (unspec:SVE_FULL_I
! 	     [(match_operand:SVE_FULL_I 2 "register_operand" "w")
! 	      (match_operand:SVE_FULL_I 3 "aarch64_simd_<lr>shift_imm")]
! 	     SVE_INT_SHIFT_IMM)
! 	   (match_operand:SVE_FULL_I 4 "aarch64_simd_imm_zero")]
! 	  UNSPEC_SEL))]
!   "TARGET_SVE"
!   "movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, #%3"
!   [(set_attr "movprfx" "yes")])
  
  ;; -------------------------------------------------------------------------
  ;; ---- [FP<-INT] General binary arithmetic corresponding to unspecs
--- 4722,4832 ----
  ;; - URSHR (SVE2)
  ;; -------------------------------------------------------------------------
  
! ;; Unpredicated ASRD.
  (define_expand "sdiv_pow2<mode>3"
!   [(set (match_operand:SVE_I 0 "register_operand")
! 	(unspec:SVE_I
  	  [(match_dup 3)
! 	   (unspec:SVE_I
! 	     [(match_operand:SVE_I 1 "register_operand")
  	      (match_operand 2 "aarch64_simd_rshift_imm")]
! 	     UNSPEC_ASRD)]
! 	 UNSPEC_PRED_X))]
    "TARGET_SVE"
    {
      operands[3] = aarch64_ptrue_reg (<VPRED>mode);
    }
  )
  
! ;; Predicated ASRD.
! (define_insn "*sdiv_pow2<mode>3"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_I
! 	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (unspec:SVE_I
! 	     [(match_operand:SVE_I 2 "register_operand" "0, w")
! 	      (match_operand:SVE_I 3 "aarch64_simd_rshift_imm")]
! 	     UNSPEC_ASRD)]
! 	  UNSPEC_PRED_X))]
!   "TARGET_SVE"
!   "@
!    asrd\t%0.<Vetype>, %1/m, %0.<Vetype>, #%3
!    movprfx\t%0, %2\;asrd\t%0.<Vetype>, %1/m, %0.<Vetype>, #%3"
!   [(set_attr "movprfx" "*,yes")])
! 
! ;; Predicated shift with merging.
  (define_expand "@cond_<sve_int_op><mode>"
!   [(set (match_operand:SVE_I 0 "register_operand")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand")
! 	   (unspec:SVE_I
! 	     [(match_dup 5)
! 	      (unspec:SVE_I
! 		[(match_operand:SVE_I 2 "register_operand")
! 		 (match_operand:SVE_I 3 "aarch64_simd_<lr>shift_imm")]
! 		SVE_INT_SHIFT_IMM)]
! 	     UNSPEC_PRED_X)
! 	   (match_operand:SVE_I 4 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
+   {
+     operands[5] = aarch64_ptrue_reg (<VPRED>mode);
+   }
  )
  
! ;; Predicated shift, merging with the first input.
! (define_insn_and_rewrite "*cond_<sve_int_op><mode>_2"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (unspec:SVE_I
! 	     [(match_operand 4)
! 	      (unspec:SVE_I
! 		[(match_operand:SVE_I 2 "register_operand" "0, w")
! 		 (match_operand:SVE_I 3 "aarch64_simd_<lr>shift_imm")]
! 		SVE_INT_SHIFT_IMM)]
! 	     UNSPEC_PRED_X)
  	   (match_dup 2)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
    "@
     <sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, #%3
     movprfx\t%0, %2\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, #%3"
+   "&& !CONSTANT_P (operands[4])"
+   {
+     operands[4] = CONSTM1_RTX (<VPRED>mode);
+   }
    [(set_attr "movprfx" "*,yes")])
  
! ;; Predicated shift, merging with an independent value.
! (define_insn_and_rewrite "*cond_<sve_int_op><mode>_any"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, &w, ?&w")
! 	(unspec:SVE_I
! 	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl")
! 	   (unspec:SVE_I
! 	     [(match_operand 5)
! 	      (unspec:SVE_I
! 		[(match_operand:SVE_I 2 "register_operand" "w, w, w")
! 		 (match_operand:SVE_I 3 "aarch64_simd_<lr>shift_imm")]
! 		SVE_INT_SHIFT_IMM)]
! 	     UNSPEC_PRED_X)
! 	   (match_operand:SVE_I 4 "aarch64_simd_reg_or_zero" "Dz, 0, w")]
! 	 UNSPEC_SEL))]
!   "TARGET_SVE && !rtx_equal_p (operands[2], operands[4])"
!   "@
!    movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, #%3
!    movprfx\t%0.<Vetype>, %1/m, %2.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, #%3
!    #"
!   "&& reload_completed
!    && register_operand (operands[4], <MODE>mode)
!    && !rtx_equal_p (operands[0], operands[4])"
!   {
!     emit_insn (gen_vcond_mask_<mode><vpred> (operands[0], operands[2],
! 					     operands[4], operands[1]));
!     operands[4] = operands[2] = operands[0];
!   }
!   [(set_attr "movprfx" "yes")]
! )
  
  ;; -------------------------------------------------------------------------
  ;; ---- [FP<-INT] General binary arithmetic corresponding to unspecs
***************
*** 5461,5466 ****
--- 5555,5574 ----
    "TARGET_SVE"
  )
  
+ ;; Predicated FCADD using ptrue for unpredicated optab for auto-vectorizer
+ (define_expand "@cadd<rot><mode>3"
+   [(set (match_operand:SVE_FULL_F 0 "register_operand")
+ 	(unspec:SVE_FULL_F
+ 	  [(match_dup 3)
+ 	   (const_int SVE_RELAXED_GP)
+ 	   (match_operand:SVE_FULL_F 1 "register_operand")
+ 	   (match_operand:SVE_FULL_F 2 "register_operand")]
+ 	  SVE_COND_FCADD))]
+   "TARGET_SVE"
+ {
+   operands[3] = aarch64_ptrue_reg (<VPRED>mode);
+ })
+ 
  ;; Predicated FCADD, merging with the first input.
  (define_insn_and_rewrite "*cond_<optab><mode>_2_relaxed"
    [(set (match_operand:SVE_FULL_F 0 "register_operand" "=w, ?&w")
***************
*** 6444,6458 ****
  
  ;; Unpredicated integer addition of product.
  (define_expand "fma<mode>4"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand")
! 	(plus:SVE_FULL_I
! 	  (unspec:SVE_FULL_I
  	    [(match_dup 4)
! 	     (mult:SVE_FULL_I
! 	       (match_operand:SVE_FULL_I 1 "register_operand")
! 	       (match_operand:SVE_FULL_I 2 "nonmemory_operand"))]
  	    UNSPEC_PRED_X)
! 	  (match_operand:SVE_FULL_I 3 "register_operand")))]
    "TARGET_SVE"
    {
      if (aarch64_prepare_sve_int_fma (operands, PLUS))
--- 6552,6566 ----
  
  ;; Unpredicated integer addition of product.
  (define_expand "fma<mode>4"
!   [(set (match_operand:SVE_I 0 "register_operand")
! 	(plus:SVE_I
! 	  (unspec:SVE_I
  	    [(match_dup 4)
! 	     (mult:SVE_I
! 	       (match_operand:SVE_I 1 "register_operand")
! 	       (match_operand:SVE_I 2 "nonmemory_operand"))]
  	    UNSPEC_PRED_X)
! 	  (match_operand:SVE_I 3 "register_operand")))]
    "TARGET_SVE"
    {
      if (aarch64_prepare_sve_int_fma (operands, PLUS))
***************
*** 6463,6477 ****
  
  ;; Predicated integer addition of product.
  (define_insn "@aarch64_pred_fma<mode>"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, w, ?&w")
! 	(plus:SVE_FULL_I
! 	  (unspec:SVE_FULL_I
  	    [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl")
! 	     (mult:SVE_FULL_I
! 	       (match_operand:SVE_FULL_I 2 "register_operand" "%0, w, w")
! 	       (match_operand:SVE_FULL_I 3 "register_operand" "w, w, w"))]
  	    UNSPEC_PRED_X)
! 	  (match_operand:SVE_FULL_I 4 "register_operand" "w, 0, w")))]
    "TARGET_SVE"
    "@
     mad\t%0.<Vetype>, %1/m, %3.<Vetype>, %4.<Vetype>
--- 6571,6585 ----
  
  ;; Predicated integer addition of product.
  (define_insn "@aarch64_pred_fma<mode>"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, w, ?&w")
! 	(plus:SVE_I
! 	  (unspec:SVE_I
  	    [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl")
! 	     (mult:SVE_I
! 	       (match_operand:SVE_I 2 "register_operand" "%0, w, w")
! 	       (match_operand:SVE_I 3 "register_operand" "w, w, w"))]
  	    UNSPEC_PRED_X)
! 	  (match_operand:SVE_I 4 "register_operand" "w, 0, w")))]
    "TARGET_SVE"
    "@
     mad\t%0.<Vetype>, %1/m, %3.<Vetype>, %4.<Vetype>
***************
*** 6482,6496 ****
  
  ;; Predicated integer addition of product with merging.
  (define_expand "cond_fma<mode>"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand")
! 	   (plus:SVE_FULL_I
! 	     (mult:SVE_FULL_I
! 	       (match_operand:SVE_FULL_I 2 "register_operand")
! 	       (match_operand:SVE_FULL_I 3 "general_operand"))
! 	     (match_operand:SVE_FULL_I 4 "register_operand"))
! 	   (match_operand:SVE_FULL_I 5 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
    {
--- 6590,6604 ----
  
  ;; Predicated integer addition of product with merging.
  (define_expand "cond_fma<mode>"
!   [(set (match_operand:SVE_I 0 "register_operand")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand")
! 	   (plus:SVE_I
! 	     (mult:SVE_I
! 	       (match_operand:SVE_I 2 "register_operand")
! 	       (match_operand:SVE_I 3 "general_operand"))
! 	     (match_operand:SVE_I 4 "register_operand"))
! 	   (match_operand:SVE_I 5 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
    {
***************
*** 6505,6518 ****
  
  ;; Predicated integer addition of product, merging with the first input.
  (define_insn "*cond_fma<mode>_2"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (plus:SVE_FULL_I
! 	     (mult:SVE_FULL_I
! 	       (match_operand:SVE_FULL_I 2 "register_operand" "0, w")
! 	       (match_operand:SVE_FULL_I 3 "register_operand" "w, w"))
! 	     (match_operand:SVE_FULL_I 4 "register_operand" "w, w"))
  	   (match_dup 2)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
--- 6613,6626 ----
  
  ;; Predicated integer addition of product, merging with the first input.
  (define_insn "*cond_fma<mode>_2"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (plus:SVE_I
! 	     (mult:SVE_I
! 	       (match_operand:SVE_I 2 "register_operand" "0, w")
! 	       (match_operand:SVE_I 3 "register_operand" "w, w"))
! 	     (match_operand:SVE_I 4 "register_operand" "w, w"))
  	   (match_dup 2)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
***************
*** 6524,6537 ****
  
  ;; Predicated integer addition of product, merging with the third input.
  (define_insn "*cond_fma<mode>_4"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (plus:SVE_FULL_I
! 	     (mult:SVE_FULL_I
! 	       (match_operand:SVE_FULL_I 2 "register_operand" "w, w")
! 	       (match_operand:SVE_FULL_I 3 "register_operand" "w, w"))
! 	     (match_operand:SVE_FULL_I 4 "register_operand" "0, w"))
  	   (match_dup 4)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
--- 6632,6645 ----
  
  ;; Predicated integer addition of product, merging with the third input.
  (define_insn "*cond_fma<mode>_4"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (plus:SVE_I
! 	     (mult:SVE_I
! 	       (match_operand:SVE_I 2 "register_operand" "w, w")
! 	       (match_operand:SVE_I 3 "register_operand" "w, w"))
! 	     (match_operand:SVE_I 4 "register_operand" "0, w"))
  	   (match_dup 4)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
***************
*** 6543,6557 ****
  
  ;; Predicated integer addition of product, merging with an independent value.
  (define_insn_and_rewrite "*cond_fma<mode>_any"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=&w, &w, &w, &w, &w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl, Upl, Upl, Upl")
! 	   (plus:SVE_FULL_I
! 	     (mult:SVE_FULL_I
! 	       (match_operand:SVE_FULL_I 2 "register_operand" "w, w, 0, w, w, w")
! 	       (match_operand:SVE_FULL_I 3 "register_operand" "w, w, w, 0, w, w"))
! 	     (match_operand:SVE_FULL_I 4 "register_operand" "w, 0, w, w, w, w"))
! 	   (match_operand:SVE_FULL_I 5 "aarch64_simd_reg_or_zero" "Dz, Dz, Dz, Dz, 0, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE
     && !rtx_equal_p (operands[2], operands[5])
--- 6651,6665 ----
  
  ;; Predicated integer addition of product, merging with an independent value.
  (define_insn_and_rewrite "*cond_fma<mode>_any"
!   [(set (match_operand:SVE_I 0 "register_operand" "=&w, &w, &w, &w, &w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl, Upl, Upl, Upl")
! 	   (plus:SVE_I
! 	     (mult:SVE_I
! 	       (match_operand:SVE_I 2 "register_operand" "w, w, 0, w, w, w")
! 	       (match_operand:SVE_I 3 "register_operand" "w, w, w, 0, w, w"))
! 	     (match_operand:SVE_I 4 "register_operand" "w, 0, w, w, w, w"))
! 	   (match_operand:SVE_I 5 "aarch64_simd_reg_or_zero" "Dz, Dz, Dz, Dz, 0, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE
     && !rtx_equal_p (operands[2], operands[5])
***************
*** 6585,6598 ****
  
  ;; Unpredicated integer subtraction of product.
  (define_expand "fnma<mode>4"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand")
! 	(minus:SVE_FULL_I
! 	  (match_operand:SVE_FULL_I 3 "register_operand")
! 	  (unspec:SVE_FULL_I
  	    [(match_dup 4)
! 	     (mult:SVE_FULL_I
! 	       (match_operand:SVE_FULL_I 1 "register_operand")
! 	       (match_operand:SVE_FULL_I 2 "general_operand"))]
  	    UNSPEC_PRED_X)))]
    "TARGET_SVE"
    {
--- 6693,6706 ----
  
  ;; Unpredicated integer subtraction of product.
  (define_expand "fnma<mode>4"
!   [(set (match_operand:SVE_I 0 "register_operand")
! 	(minus:SVE_I
! 	  (match_operand:SVE_I 3 "register_operand")
! 	  (unspec:SVE_I
  	    [(match_dup 4)
! 	     (mult:SVE_I
! 	       (match_operand:SVE_I 1 "register_operand")
! 	       (match_operand:SVE_I 2 "general_operand"))]
  	    UNSPEC_PRED_X)))]
    "TARGET_SVE"
    {
***************
*** 6604,6617 ****
  
  ;; Predicated integer subtraction of product.
  (define_insn "@aarch64_pred_fnma<mode>"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, w, ?&w")
! 	(minus:SVE_FULL_I
! 	  (match_operand:SVE_FULL_I 4 "register_operand" "w, 0, w")
! 	  (unspec:SVE_FULL_I
  	    [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl")
! 	     (mult:SVE_FULL_I
! 	       (match_operand:SVE_FULL_I 2 "register_operand" "%0, w, w")
! 	       (match_operand:SVE_FULL_I 3 "register_operand" "w, w, w"))]
  	    UNSPEC_PRED_X)))]
    "TARGET_SVE"
    "@
--- 6712,6725 ----
  
  ;; Predicated integer subtraction of product.
  (define_insn "@aarch64_pred_fnma<mode>"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, w, ?&w")
! 	(minus:SVE_I
! 	  (match_operand:SVE_I 4 "register_operand" "w, 0, w")
! 	  (unspec:SVE_I
  	    [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl")
! 	     (mult:SVE_I
! 	       (match_operand:SVE_I 2 "register_operand" "%0, w, w")
! 	       (match_operand:SVE_I 3 "register_operand" "w, w, w"))]
  	    UNSPEC_PRED_X)))]
    "TARGET_SVE"
    "@
***************
*** 6623,6637 ****
  
  ;; Predicated integer subtraction of product with merging.
  (define_expand "cond_fnma<mode>"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand")
!    (unspec:SVE_FULL_I
  	[(match_operand:<VPRED> 1 "register_operand")
! 	 (minus:SVE_FULL_I
! 	   (match_operand:SVE_FULL_I 4 "register_operand")
! 	   (mult:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 2 "register_operand")
! 	     (match_operand:SVE_FULL_I 3 "general_operand")))
! 	 (match_operand:SVE_FULL_I 5 "aarch64_simd_reg_or_zero")]
  	UNSPEC_SEL))]
    "TARGET_SVE"
    {
--- 6731,6745 ----
  
  ;; Predicated integer subtraction of product with merging.
  (define_expand "cond_fnma<mode>"
!   [(set (match_operand:SVE_I 0 "register_operand")
!    (unspec:SVE_I
  	[(match_operand:<VPRED> 1 "register_operand")
! 	 (minus:SVE_I
! 	   (match_operand:SVE_I 4 "register_operand")
! 	   (mult:SVE_I
! 	     (match_operand:SVE_I 2 "register_operand")
! 	     (match_operand:SVE_I 3 "general_operand")))
! 	 (match_operand:SVE_I 5 "aarch64_simd_reg_or_zero")]
  	UNSPEC_SEL))]
    "TARGET_SVE"
    {
***************
*** 6646,6659 ****
  
  ;; Predicated integer subtraction of product, merging with the first input.
  (define_insn "*cond_fnma<mode>_2"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (minus:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 4 "register_operand" "w, w")
! 	     (mult:SVE_FULL_I
! 	       (match_operand:SVE_FULL_I 2 "register_operand" "0, w")
! 	       (match_operand:SVE_FULL_I 3 "register_operand" "w, w")))
  	   (match_dup 2)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
--- 6754,6767 ----
  
  ;; Predicated integer subtraction of product, merging with the first input.
  (define_insn "*cond_fnma<mode>_2"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (minus:SVE_I
! 	     (match_operand:SVE_I 4 "register_operand" "w, w")
! 	     (mult:SVE_I
! 	       (match_operand:SVE_I 2 "register_operand" "0, w")
! 	       (match_operand:SVE_I 3 "register_operand" "w, w")))
  	   (match_dup 2)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
***************
*** 6665,6678 ****
  
  ;; Predicated integer subtraction of product, merging with the third input.
  (define_insn "*cond_fnma<mode>_4"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (minus:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 4 "register_operand" "0, w")
! 	     (mult:SVE_FULL_I
! 	       (match_operand:SVE_FULL_I 2 "register_operand" "w, w")
! 	       (match_operand:SVE_FULL_I 3 "register_operand" "w, w")))
  	   (match_dup 4)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
--- 6773,6786 ----
  
  ;; Predicated integer subtraction of product, merging with the third input.
  (define_insn "*cond_fnma<mode>_4"
!   [(set (match_operand:SVE_I 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
! 	   (minus:SVE_I
! 	     (match_operand:SVE_I 4 "register_operand" "0, w")
! 	     (mult:SVE_I
! 	       (match_operand:SVE_I 2 "register_operand" "w, w")
! 	       (match_operand:SVE_I 3 "register_operand" "w, w")))
  	   (match_dup 4)]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
***************
*** 6685,6699 ****
  ;; Predicated integer subtraction of product, merging with an
  ;; independent value.
  (define_insn_and_rewrite "*cond_fnma<mode>_any"
!   [(set (match_operand:SVE_FULL_I 0 "register_operand" "=&w, &w, &w, &w, &w, ?&w")
! 	(unspec:SVE_FULL_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl, Upl, Upl, Upl")
! 	   (minus:SVE_FULL_I
! 	     (match_operand:SVE_FULL_I 4 "register_operand" "w, 0, w, w, w, w")
! 	     (mult:SVE_FULL_I
! 	       (match_operand:SVE_FULL_I 2 "register_operand" "w, w, 0, w, w, w")
! 	       (match_operand:SVE_FULL_I 3 "register_operand" "w, w, w, 0, w, w")))
! 	   (match_operand:SVE_FULL_I 5 "aarch64_simd_reg_or_zero" "Dz, Dz, Dz, Dz, 0, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE
     && !rtx_equal_p (operands[2], operands[5])
--- 6793,6807 ----
  ;; Predicated integer subtraction of product, merging with an
  ;; independent value.
  (define_insn_and_rewrite "*cond_fnma<mode>_any"
!   [(set (match_operand:SVE_I 0 "register_operand" "=&w, &w, &w, &w, &w, ?&w")
! 	(unspec:SVE_I
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl, Upl, Upl, Upl, Upl")
! 	   (minus:SVE_I
! 	     (match_operand:SVE_I 4 "register_operand" "w, 0, w, w, w, w")
! 	     (mult:SVE_I
! 	       (match_operand:SVE_I 2 "register_operand" "w, w, 0, w, w, w")
! 	       (match_operand:SVE_I 3 "register_operand" "w, w, w, 0, w, w")))
! 	   (match_operand:SVE_I 5 "aarch64_simd_reg_or_zero" "Dz, Dz, Dz, Dz, 0, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE
     && !rtx_equal_p (operands[2], operands[5])
***************
*** 7133,7138 ****
--- 7241,7302 ----
    [(set_attr "movprfx" "*,yes")]
  )
  
+ ;; unpredicated optab pattern for auto-vectorizer
+ ;; The complex mla/mls operations always need to expand to two instructions.
+ ;; The first operation does half the computation and the second does the
+ ;; remainder.  Because of this, expand early.
+ (define_expand "cml<fcmac1><conj_op><mode>4"
+   [(set (match_operand:SVE_FULL_F 0 "register_operand")
+ 	(unspec:SVE_FULL_F
+ 	  [(match_dup 4)
+ 	   (match_dup 5)
+ 	   (match_operand:SVE_FULL_F 1 "register_operand")
+ 	   (match_operand:SVE_FULL_F 2 "register_operand")
+ 	   (match_operand:SVE_FULL_F 3 "register_operand")]
+ 	  FCMLA_OP))]
+   "TARGET_SVE"
+ {
+   operands[4] = aarch64_ptrue_reg (<VPRED>mode);
+   operands[5] = gen_int_mode (SVE_RELAXED_GP, SImode);
+   rtx tmp = gen_reg_rtx (<MODE>mode);
+   emit_insn
+     (gen_aarch64_pred_fcmla<sve_rot1><mode> (tmp, operands[4],
+ 					     operands[3], operands[2],
+ 					     operands[1], operands[5]));
+   emit_insn
+     (gen_aarch64_pred_fcmla<sve_rot2><mode> (operands[0], operands[4],
+ 					     operands[3], operands[2],
+ 					     tmp, operands[5]));
+   DONE;
+ })
+ 
+ ;; unpredicated optab pattern for auto-vectorizer
+ ;; The complex mul operations always need to expand to two instructions.
+ ;; The first operation does half the computation and the second does the
+ ;; remainder.  Because of this, expand early.
+ (define_expand "cmul<conj_op><mode>3"
+   [(set (match_operand:SVE_FULL_F 0 "register_operand")
+ 	(unspec:SVE_FULL_F
+ 	   [(match_operand:SVE_FULL_F 1 "register_operand")
+ 	    (match_operand:SVE_FULL_F 2 "register_operand")]
+ 	  FCMUL_OP))]
+   "TARGET_SVE"
+ {
+   rtx pred_reg = aarch64_ptrue_reg (<VPRED>mode);
+   rtx gp_mode = gen_int_mode (SVE_RELAXED_GP, SImode);
+   rtx accum = force_reg (<MODE>mode, CONST0_RTX (<MODE>mode));
+   rtx tmp = gen_reg_rtx (<MODE>mode);
+   emit_insn
+     (gen_aarch64_pred_fcmla<sve_rot1><mode> (tmp, pred_reg,
+ 					     operands[2], operands[1],
+ 					     accum, gp_mode));
+   emit_insn
+     (gen_aarch64_pred_fcmla<sve_rot2><mode> (operands[0], pred_reg,
+ 					     operands[2], operands[1],
+ 					     tmp, gp_mode));
+   DONE;
+ })
+ 
  ;; Predicated FCMLA with merging.
  (define_expand "@cond_<optab><mode>"
    [(set (match_operand:SVE_FULL_F 0 "register_operand")
***************
*** 7381,7391 ****
  ;; UNSPEC_SEL operand order: mask, true, false (as for VEC_COND_EXPR)
  ;; SEL operand order:        mask, true, false
  (define_expand "@vcond_mask_<mode><vpred>"
!   [(set (match_operand:SVE_FULL 0 "register_operand")
! 	(unspec:SVE_FULL
  	  [(match_operand:<VPRED> 3 "register_operand")
! 	   (match_operand:SVE_FULL 1 "aarch64_sve_reg_or_dup_imm")
! 	   (match_operand:SVE_FULL 2 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
    {
--- 7545,7555 ----
  ;; UNSPEC_SEL operand order: mask, true, false (as for VEC_COND_EXPR)
  ;; SEL operand order:        mask, true, false
  (define_expand "@vcond_mask_<mode><vpred>"
!   [(set (match_operand:SVE_ALL 0 "register_operand")
! 	(unspec:SVE_ALL
  	  [(match_operand:<VPRED> 3 "register_operand")
! 	   (match_operand:SVE_ALL 1 "aarch64_sve_reg_or_dup_imm")
! 	   (match_operand:SVE_ALL 2 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
    {
***************
*** 7398,7409 ****
  ;; - two registers
  ;; - a duplicated immediate and a register
  ;; - a duplicated immediate and zero
  (define_insn "*vcond_mask_<mode><vpred>"
!   [(set (match_operand:SVE_FULL 0 "register_operand" "=w, w, w, w, ?w, ?&w, ?&w")
! 	(unspec:SVE_FULL
  	  [(match_operand:<VPRED> 3 "register_operand" "Upa, Upa, Upa, Upa, Upl, Upl, Upl")
! 	   (match_operand:SVE_FULL 1 "aarch64_sve_reg_or_dup_imm" "w, vss, vss, Ufc, Ufc, vss, Ufc")
! 	   (match_operand:SVE_FULL 2 "aarch64_simd_reg_or_zero" "w, 0, Dz, 0, Dz, w, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE
     && (!register_operand (operands[1], <MODE>mode)
--- 7562,7586 ----
  ;; - two registers
  ;; - a duplicated immediate and a register
  ;; - a duplicated immediate and zero
+ ;;
+ ;; For unpacked vectors, it doesn't really matter whether SEL uses the
+ ;; the container size or the element size.  If SEL used the container size,
+ ;; it would ignore undefined bits of the predicate but would copy the
+ ;; upper (undefined) bits of each container along with the defined bits.
+ ;; If SEL used the element size, it would use undefined bits of the predicate
+ ;; to select between undefined elements in each input vector.  Thus the only
+ ;; difference is whether the undefined bits in a container always come from
+ ;; the same input as the defined bits, or whether the choice can vary
+ ;; independently of the defined bits.
+ ;;
+ ;; For the other instructions, using the element size is more natural,
+ ;; so we do that for SEL as well.
  (define_insn "*vcond_mask_<mode><vpred>"
!   [(set (match_operand:SVE_ALL 0 "register_operand" "=w, w, w, w, ?w, ?&w, ?&w")
! 	(unspec:SVE_ALL
  	  [(match_operand:<VPRED> 3 "register_operand" "Upa, Upa, Upa, Upa, Upl, Upl, Upl")
! 	   (match_operand:SVE_ALL 1 "aarch64_sve_reg_or_dup_imm" "w, vss, vss, Ufc, Ufc, vss, Ufc")
! 	   (match_operand:SVE_ALL 2 "aarch64_simd_reg_or_zero" "w, 0, Dz, 0, Dz, w, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE
     && (!register_operand (operands[1], <MODE>mode)
***************
*** 7424,7435 ****
  ;; of GPRs as being more expensive than duplicates of FPRs, since they
  ;; involve a cross-file move.
  (define_insn "@aarch64_sel_dup<mode>"
!   [(set (match_operand:SVE_FULL 0 "register_operand" "=?w, w, ??w, ?&w, ??&w, ?&w")
! 	(unspec:SVE_FULL
  	  [(match_operand:<VPRED> 3 "register_operand" "Upl, Upl, Upl, Upl, Upl, Upl")
! 	   (vec_duplicate:SVE_FULL
  	     (match_operand:<VEL> 1 "register_operand" "r, w, r, w, r, w"))
! 	   (match_operand:SVE_FULL 2 "aarch64_simd_reg_or_zero" "0, 0, Dz, Dz, w, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
    "@
--- 7601,7612 ----
  ;; of GPRs as being more expensive than duplicates of FPRs, since they
  ;; involve a cross-file move.
  (define_insn "@aarch64_sel_dup<mode>"
!   [(set (match_operand:SVE_ALL 0 "register_operand" "=?w, w, ??w, ?&w, ??&w, ?&w")
! 	(unspec:SVE_ALL
  	  [(match_operand:<VPRED> 3 "register_operand" "Upl, Upl, Upl, Upl, Upl, Upl")
! 	   (vec_duplicate:SVE_ALL
  	     (match_operand:<VEL> 1 "register_operand" "r, w, r, w, r, w"))
! 	   (match_operand:SVE_ALL 2 "aarch64_simd_reg_or_zero" "0, 0, Dz, Dz, w, w")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
    "@
***************
*** 7450,7483 ****
  
  ;; Integer (signed) vcond.  Don't enforce an immediate range here, since it
  ;; depends on the comparison; leave it to aarch64_expand_sve_vcond instead.
! (define_expand "vcond<mode><v_int_equiv>"
!   [(set (match_operand:SVE_FULL 0 "register_operand")
! 	(if_then_else:SVE_FULL
  	  (match_operator 3 "comparison_operator"
! 	    [(match_operand:<V_INT_EQUIV> 4 "register_operand")
! 	     (match_operand:<V_INT_EQUIV> 5 "nonmemory_operand")])
! 	  (match_operand:SVE_FULL 1 "nonmemory_operand")
! 	  (match_operand:SVE_FULL 2 "nonmemory_operand")))]
!   "TARGET_SVE"
    {
!     aarch64_expand_sve_vcond (<MODE>mode, <V_INT_EQUIV>mode, operands);
      DONE;
    }
  )
  
  ;; Integer vcondu.  Don't enforce an immediate range here, since it
  ;; depends on the comparison; leave it to aarch64_expand_sve_vcond instead.
! (define_expand "vcondu<mode><v_int_equiv>"
!   [(set (match_operand:SVE_FULL 0 "register_operand")
! 	(if_then_else:SVE_FULL
  	  (match_operator 3 "comparison_operator"
! 	    [(match_operand:<V_INT_EQUIV> 4 "register_operand")
! 	     (match_operand:<V_INT_EQUIV> 5 "nonmemory_operand")])
! 	  (match_operand:SVE_FULL 1 "nonmemory_operand")
! 	  (match_operand:SVE_FULL 2 "nonmemory_operand")))]
!   "TARGET_SVE"
    {
!     aarch64_expand_sve_vcond (<MODE>mode, <V_INT_EQUIV>mode, operands);
      DONE;
    }
  )
--- 7627,7660 ----
  
  ;; Integer (signed) vcond.  Don't enforce an immediate range here, since it
  ;; depends on the comparison; leave it to aarch64_expand_sve_vcond instead.
! (define_expand "vcond<SVE_ALL:mode><SVE_I:mode>"
!   [(set (match_operand:SVE_ALL 0 "register_operand")
! 	(if_then_else:SVE_ALL
  	  (match_operator 3 "comparison_operator"
! 	    [(match_operand:SVE_I 4 "register_operand")
! 	     (match_operand:SVE_I 5 "nonmemory_operand")])
! 	  (match_operand:SVE_ALL 1 "nonmemory_operand")
! 	  (match_operand:SVE_ALL 2 "nonmemory_operand")))]
!   "TARGET_SVE && <SVE_ALL:container_bits> == <SVE_I:container_bits>"
    {
!     aarch64_expand_sve_vcond (<SVE_ALL:MODE>mode, <SVE_I:MODE>mode, operands);
      DONE;
    }
  )
  
  ;; Integer vcondu.  Don't enforce an immediate range here, since it
  ;; depends on the comparison; leave it to aarch64_expand_sve_vcond instead.
! (define_expand "vcondu<SVE_ALL:mode><SVE_I:mode>"
!   [(set (match_operand:SVE_ALL 0 "register_operand")
! 	(if_then_else:SVE_ALL
  	  (match_operator 3 "comparison_operator"
! 	    [(match_operand:SVE_I 4 "register_operand")
! 	     (match_operand:SVE_I 5 "nonmemory_operand")])
! 	  (match_operand:SVE_ALL 1 "nonmemory_operand")
! 	  (match_operand:SVE_ALL 2 "nonmemory_operand")))]
!   "TARGET_SVE && <SVE_ALL:container_bits> == <SVE_I:container_bits>"
    {
!     aarch64_expand_sve_vcond (<SVE_ALL:MODE>mode, <SVE_I:MODE>mode, operands);
      DONE;
    }
  )
***************
*** 7522,7529 ****
    [(parallel
      [(set (match_operand:<VPRED> 0 "register_operand")
  	  (match_operator:<VPRED> 1 "comparison_operator"
! 	    [(match_operand:SVE_FULL_I 2 "register_operand")
! 	     (match_operand:SVE_FULL_I 3 "nonmemory_operand")]))
       (clobber (reg:CC_NZC CC_REGNUM))])]
    "TARGET_SVE"
    {
--- 7699,7706 ----
    [(parallel
      [(set (match_operand:<VPRED> 0 "register_operand")
  	  (match_operator:<VPRED> 1 "comparison_operator"
! 	    [(match_operand:SVE_I 2 "register_operand")
! 	     (match_operand:SVE_I 3 "nonmemory_operand")]))
       (clobber (reg:CC_NZC CC_REGNUM))])]
    "TARGET_SVE"
    {
***************
*** 7540,7547 ****
    [(parallel
      [(set (match_operand:<VPRED> 0 "register_operand")
  	  (match_operator:<VPRED> 1 "comparison_operator"
! 	    [(match_operand:SVE_FULL_I 2 "register_operand")
! 	     (match_operand:SVE_FULL_I 3 "nonmemory_operand")]))
       (clobber (reg:CC_NZC CC_REGNUM))])]
    "TARGET_SVE"
    {
--- 7717,7724 ----
    [(parallel
      [(set (match_operand:<VPRED> 0 "register_operand")
  	  (match_operator:<VPRED> 1 "comparison_operator"
! 	    [(match_operand:SVE_I 2 "register_operand")
! 	     (match_operand:SVE_I 3 "nonmemory_operand")]))
       (clobber (reg:CC_NZC CC_REGNUM))])]
    "TARGET_SVE"
    {
***************
*** 7552,7565 ****
  )
  
  ;; Predicated integer comparisons.
  (define_insn "@aarch64_pred_cmp<cmp_op><mode>"
    [(set (match_operand:<VPRED> 0 "register_operand" "=Upa, Upa")
  	(unspec:<VPRED>
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
  	   (match_operand:SI 2 "aarch64_sve_ptrue_flag")
  	   (SVE_INT_CMP:<VPRED>
! 	     (match_operand:SVE_FULL_I 3 "register_operand" "w, w")
! 	     (match_operand:SVE_FULL_I 4 "aarch64_sve_cmp_<sve_imm_con>_operand" "<sve_imm_con>, w"))]
  	  UNSPEC_PRED_Z))
     (clobber (reg:CC_NZC CC_REGNUM))]
    "TARGET_SVE"
--- 7729,7766 ----
  )
  
  ;; Predicated integer comparisons.
+ ;;
+ ;; For unpacked vectors, only the lowpart element in each input container
+ ;; has a defined value, and only the predicate bits associated with
+ ;; those elements are defined.  For example, when comparing two VNx2SIs:
+ ;;
+ ;; - The VNx2SIs can be seem as VNx2DIs in which the low halves of each
+ ;;   DI container store an SI element.  The upper bits of each DI container
+ ;;   are undefined.
+ ;;
+ ;; - Alternatively, the VNx2SIs can be seen as VNx4SIs in which the
+ ;;   even elements are defined and the odd elements are undefined.
+ ;;
+ ;; - The associated predicate mode is VNx2BI.  This means that only the
+ ;;   low bit in each predicate byte is defined (on input and on output).
+ ;;
+ ;; - We use a .s comparison to compare VNx2SIs, under the control of a
+ ;;   VNx2BI governing predicate, to produce a VNx2BI result.  If we view
+ ;;   the .s operation as operating on VNx4SIs then for odd lanes:
+ ;;
+ ;;   - the input governing predicate bit is undefined
+ ;;   - the SI elements being compared are undefined
+ ;;   - the predicate result bit is therefore undefined, but
+ ;;   - the predicate result bit is in the undefined part of a VNx2BI,
+ ;;     so its value doesn't matter anyway.
  (define_insn "@aarch64_pred_cmp<cmp_op><mode>"
    [(set (match_operand:<VPRED> 0 "register_operand" "=Upa, Upa")
  	(unspec:<VPRED>
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl, Upl")
  	   (match_operand:SI 2 "aarch64_sve_ptrue_flag")
  	   (SVE_INT_CMP:<VPRED>
! 	     (match_operand:SVE_I 3 "register_operand" "w, w")
! 	     (match_operand:SVE_I 4 "aarch64_sve_cmp_<sve_imm_con>_operand" "<sve_imm_con>, w"))]
  	  UNSPEC_PRED_Z))
     (clobber (reg:CC_NZC CC_REGNUM))]
    "TARGET_SVE"
***************
*** 7580,7587 ****
  	     [(match_operand 6)
  	      (match_operand:SI 7 "aarch64_sve_ptrue_flag")
  	      (SVE_INT_CMP:<VPRED>
! 		(match_operand:SVE_FULL_I 2 "register_operand" "w, w")
! 		(match_operand:SVE_FULL_I 3 "aarch64_sve_cmp_<sve_imm_con>_operand" "<sve_imm_con>, w"))]
  	     UNSPEC_PRED_Z)]
  	  UNSPEC_PTEST))
     (set (match_operand:<VPRED> 0 "register_operand" "=Upa, Upa")
--- 7781,7788 ----
  	     [(match_operand 6)
  	      (match_operand:SI 7 "aarch64_sve_ptrue_flag")
  	      (SVE_INT_CMP:<VPRED>
! 		(match_operand:SVE_I 2 "register_operand" "w, w")
! 		(match_operand:SVE_I 3 "aarch64_sve_cmp_<sve_imm_con>_operand" "<sve_imm_con>, w"))]
  	     UNSPEC_PRED_Z)]
  	  UNSPEC_PTEST))
     (set (match_operand:<VPRED> 0 "register_operand" "=Upa, Upa")
***************
*** 7616,7623 ****
  	     [(match_operand 6)
  	      (match_operand:SI 7 "aarch64_sve_ptrue_flag")
  	      (SVE_INT_CMP:<VPRED>
! 		(match_operand:SVE_FULL_I 2 "register_operand" "w, w")
! 		(match_operand:SVE_FULL_I 3 "aarch64_sve_cmp_<sve_imm_con>_operand" "<sve_imm_con>, w"))]
  	     UNSPEC_PRED_Z)]
  	  UNSPEC_PTEST))
     (clobber (match_scratch:<VPRED> 0 "=Upa, Upa"))]
--- 7817,7824 ----
  	     [(match_operand 6)
  	      (match_operand:SI 7 "aarch64_sve_ptrue_flag")
  	      (SVE_INT_CMP:<VPRED>
! 		(match_operand:SVE_I 2 "register_operand" "w, w")
! 		(match_operand:SVE_I 3 "aarch64_sve_cmp_<sve_imm_con>_operand" "<sve_imm_con>, w"))]
  	     UNSPEC_PRED_Z)]
  	  UNSPEC_PTEST))
     (clobber (match_scratch:<VPRED> 0 "=Upa, Upa"))]
***************
*** 7644,7651 ****
  	    [(match_operand 4)
  	     (const_int SVE_KNOWN_PTRUE)
  	     (SVE_INT_CMP:<VPRED>
! 	       (match_operand:SVE_FULL_I 2 "register_operand" "w, w")
! 	       (match_operand:SVE_FULL_I 3 "aarch64_sve_cmp_<sve_imm_con>_operand" "<sve_imm_con>, w"))]
  	    UNSPEC_PRED_Z)
  	  (match_operand:<VPRED> 1 "register_operand" "Upl, Upl")))
     (clobber (reg:CC_NZC CC_REGNUM))]
--- 7845,7852 ----
  	    [(match_operand 4)
  	     (const_int SVE_KNOWN_PTRUE)
  	     (SVE_INT_CMP:<VPRED>
! 	       (match_operand:SVE_I 2 "register_operand" "w, w")
! 	       (match_operand:SVE_I 3 "aarch64_sve_cmp_<sve_imm_con>_operand" "<sve_imm_con>, w"))]
  	    UNSPEC_PRED_Z)
  	  (match_operand:<VPRED> 1 "register_operand" "Upl, Upl")))
     (clobber (reg:CC_NZC CC_REGNUM))]
***************
*** 8291,8304 ****
  
  ;; Duplicate one element of a vector.
  (define_insn "@aarch64_sve_dup_lane<mode>"
!   [(set (match_operand:SVE_FULL 0 "register_operand" "=w")
! 	(vec_duplicate:SVE_FULL
  	  (vec_select:<VEL>
! 	    (match_operand:SVE_FULL 1 "register_operand" "w")
  	    (parallel [(match_operand:SI 2 "const_int_operand")]))))]
    "TARGET_SVE
!    && IN_RANGE (INTVAL (operands[2]) * GET_MODE_SIZE (<VEL>mode), 0, 63)"
!   "dup\t%0.<Vetype>, %1.<Vetype>[%2]"
  )
  
  ;; Use DUP.Q to duplicate a 128-bit segment of a register.
--- 8492,8505 ----
  
  ;; Duplicate one element of a vector.
  (define_insn "@aarch64_sve_dup_lane<mode>"
!   [(set (match_operand:SVE_ALL 0 "register_operand" "=w")
! 	(vec_duplicate:SVE_ALL
  	  (vec_select:<VEL>
! 	    (match_operand:SVE_ALL 1 "register_operand" "w")
  	    (parallel [(match_operand:SI 2 "const_int_operand")]))))]
    "TARGET_SVE
!    && IN_RANGE (INTVAL (operands[2]) * <container_bits> / 8, 0, 63)"
!   "dup\t%0.<Vctype>, %1.<Vctype>[%2]"
  )
  
  ;; Use DUP.Q to duplicate a 128-bit segment of a register.
***************
*** 8339,8355 ****
  
  ;; Reverse the order of elements within a full vector.
  (define_insn "@aarch64_sve_rev<mode>"
!   [(set (match_operand:SVE_FULL 0 "register_operand" "=w")
! 	(unspec:SVE_FULL
! 	  [(match_operand:SVE_FULL 1 "register_operand" "w")]
  	  UNSPEC_REV))]
    "TARGET_SVE"
!   "rev\t%0.<Vetype>, %1.<Vetype>")
  
  ;; -------------------------------------------------------------------------
  ;; ---- [INT,FP] Special-purpose binary permutes
  ;; -------------------------------------------------------------------------
  ;; Includes:
  ;; - SPLICE
  ;; - TRN1
  ;; - TRN2
--- 8540,8557 ----
  
  ;; Reverse the order of elements within a full vector.
  (define_insn "@aarch64_sve_rev<mode>"
!   [(set (match_operand:SVE_ALL 0 "register_operand" "=w")
! 	(unspec:SVE_ALL
! 	  [(match_operand:SVE_ALL 1 "register_operand" "w")]
  	  UNSPEC_REV))]
    "TARGET_SVE"
!   "rev\t%0.<Vctype>, %1.<Vctype>")
  
  ;; -------------------------------------------------------------------------
  ;; ---- [INT,FP] Special-purpose binary permutes
  ;; -------------------------------------------------------------------------
  ;; Includes:
+ ;; - EXT
  ;; - SPLICE
  ;; - TRN1
  ;; - TRN2
***************
*** 8377,8389 ****
  ;; Permutes that take half the elements from one vector and half the
  ;; elements from the other.
  (define_insn "@aarch64_sve_<perm_insn><mode>"
!   [(set (match_operand:SVE_FULL 0 "register_operand" "=w")
! 	(unspec:SVE_FULL
! 	  [(match_operand:SVE_FULL 1 "register_operand" "w")
! 	   (match_operand:SVE_FULL 2 "register_operand" "w")]
  	  PERMUTE))]
    "TARGET_SVE"
!   "<perm_insn>\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>"
  )
  
  ;; Apply PERMUTE to 128-bit sequences.  The behavior of these patterns
--- 8579,8591 ----
  ;; Permutes that take half the elements from one vector and half the
  ;; elements from the other.
  (define_insn "@aarch64_sve_<perm_insn><mode>"
!   [(set (match_operand:SVE_ALL 0 "register_operand" "=w")
! 	(unspec:SVE_ALL
! 	  [(match_operand:SVE_ALL 1 "register_operand" "w")
! 	   (match_operand:SVE_ALL 2 "register_operand" "w")]
  	  PERMUTE))]
    "TARGET_SVE"
!   "<perm_insn>\t%0.<Vctype>, %1.<Vctype>, %2.<Vctype>"
  )
  
  ;; Apply PERMUTE to 128-bit sequences.  The behavior of these patterns
***************
*** 8401,8416 ****
  ;; Concatenate two vectors and extract a subvector.  Note that the
  ;; immediate (third) operand is the lane index not the byte index.
  (define_insn "@aarch64_sve_ext<mode>"
!   [(set (match_operand:SVE_FULL 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_FULL
! 	  [(match_operand:SVE_FULL 1 "register_operand" "0, w")
! 	   (match_operand:SVE_FULL 2 "register_operand" "w, w")
  	   (match_operand:SI 3 "const_int_operand")]
  	  UNSPEC_EXT))]
    "TARGET_SVE
!    && IN_RANGE (INTVAL (operands[3]) * GET_MODE_SIZE (<VEL>mode), 0, 255)"
    {
!     operands[3] = GEN_INT (INTVAL (operands[3]) * GET_MODE_SIZE (<VEL>mode));
      return (which_alternative == 0
  	    ? "ext\\t%0.b, %0.b, %2.b, #%3"
  	    : "movprfx\t%0, %1\;ext\\t%0.b, %0.b, %2.b, #%3");
--- 8603,8618 ----
  ;; Concatenate two vectors and extract a subvector.  Note that the
  ;; immediate (third) operand is the lane index not the byte index.
  (define_insn "@aarch64_sve_ext<mode>"
!   [(set (match_operand:SVE_ALL 0 "register_operand" "=w, ?&w")
! 	(unspec:SVE_ALL
! 	  [(match_operand:SVE_ALL 1 "register_operand" "0, w")
! 	   (match_operand:SVE_ALL 2 "register_operand" "w, w")
  	   (match_operand:SI 3 "const_int_operand")]
  	  UNSPEC_EXT))]
    "TARGET_SVE
!    && IN_RANGE (INTVAL (operands[3]) * <container_bits> / 8, 0, 255)"
    {
!     operands[3] = GEN_INT (INTVAL (operands[3]) * <container_bits> / 8);
      return (which_alternative == 0
  	    ? "ext\\t%0.b, %0.b, %2.b, #%3"
  	    : "movprfx\t%0, %1\;ext\\t%0.b, %0.b, %2.b, #%3");
***************
*** 8455,8460 ****
--- 8657,8676 ----
    "<perm_insn>\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>"
  )
  
+ ;; Special purpose permute used by the predicate generation instructions.
+ ;; Unlike the normal permute patterns, these instructions operate on VNx16BI
+ ;; regardless of the element size, so that all input and output bits are
+ ;; well-defined.  Operand 3 then indicates the size of the permute.
+ (define_insn "@aarch64_sve_trn1_conv<mode>"
+   [(set (match_operand:VNx16BI 0 "register_operand" "=Upa")
+ 	(unspec:VNx16BI [(match_operand:VNx16BI 1 "register_operand" "Upa")
+ 			 (match_operand:VNx16BI 2 "register_operand" "Upa")
+ 			 (match_operand:PRED_ALL 3 "aarch64_simd_imm_zero")]
+ 			UNSPEC_TRN1_CONV))]
+   "TARGET_SVE"
+   "trn1\t%0.<PRED_ALL:Vetype>, %1.<PRED_ALL:Vetype>, %2.<PRED_ALL:Vetype>"
+ )
+ 
  ;; =========================================================================
  ;; == Conversions
  ;; =========================================================================
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-sve2.md gcc-11.1.0/gcc/config/aarch64/aarch64-sve2.md
*** gcc-10.3.0/gcc/config/aarch64/aarch64-sve2.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-sve2.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description for AArch64 SVE2.
! ;; Copyright (C) 2019-2020 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AArch64 SVE2.
! ;; Copyright (C) 2019-2021 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 1799,1804 ****
--- 1799,1814 ----
    [(set_attr "movprfx" "*,yes")]
  )
  
+ ;; unpredicated optab pattern for auto-vectorizer
+ (define_expand "cadd<rot><mode>3"
+   [(set (match_operand:SVE_FULL_I 0 "register_operand")
+ 	(unspec:SVE_FULL_I
+ 	  [(match_operand:SVE_FULL_I 1 "register_operand")
+ 	   (match_operand:SVE_FULL_I 2 "register_operand")]
+ 	  SVE2_INT_CADD_OP))]
+   "TARGET_SVE2"
+ )
+ 
  ;; -------------------------------------------------------------------------
  ;; ---- [INT] Complex ternary operations
  ;; -------------------------------------------------------------------------
***************
*** 1838,1843 ****
--- 1848,1895 ----
    [(set_attr "movprfx" "*,yes")]
  )
  
+ ;; unpredicated optab pattern for auto-vectorizer
+ ;; The complex mla/mls operations always need to expand to two instructions.
+ ;; The first operation does half the computation and the second does the
+ ;; remainder.  Because of this, expand early.
+ (define_expand "cml<fcmac1><conj_op><mode>4"
+   [(set (match_operand:SVE_FULL_I 0 "register_operand")
+ 	(plus:SVE_FULL_I (match_operand:SVE_FULL_I 1 "register_operand")
+ 	  (unspec:SVE_FULL_I
+ 	    [(match_operand:SVE_FULL_I 2 "register_operand")
+ 	     (match_operand:SVE_FULL_I 3 "register_operand")]
+ 	    SVE2_INT_CMLA_OP)))]
+   "TARGET_SVE2"
+ {
+   rtx tmp = gen_reg_rtx (<MODE>mode);
+   emit_insn (gen_aarch64_sve_cmla<sve_rot1><mode> (tmp, operands[1],
+ 						   operands[3], operands[2]));
+   emit_insn (gen_aarch64_sve_cmla<sve_rot2><mode> (operands[0], tmp,
+ 						   operands[3], operands[2]));
+   DONE;
+ })
+ 
+ ;; unpredicated optab pattern for auto-vectorizer
+ ;; The complex mul operations always need to expand to two instructions.
+ ;; The first operation does half the computation and the second does the
+ ;; remainder.  Because of this, expand early.
+ (define_expand "cmul<conj_op><mode>3"
+   [(set (match_operand:SVE_FULL_I 0 "register_operand")
+ 	(unspec:SVE_FULL_I
+ 	  [(match_operand:SVE_FULL_I 1 "register_operand")
+ 	   (match_operand:SVE_FULL_I 2 "register_operand")]
+ 	  SVE2_INT_CMUL_OP))]
+   "TARGET_SVE2"
+ {
+   rtx accum = force_reg (<MODE>mode, CONST0_RTX (<MODE>mode));
+   rtx tmp = gen_reg_rtx (<MODE>mode);
+   emit_insn (gen_aarch64_sve_cmla<sve_rot1><mode> (tmp, accum,
+ 						   operands[2], operands[1]));
+   emit_insn (gen_aarch64_sve_cmla<sve_rot2><mode> (operands[0], tmp,
+ 						   operands[2], operands[1]));
+   DONE;
+ })
+ 
  ;; -------------------------------------------------------------------------
  ;; ---- [INT] Complex dot product
  ;; -------------------------------------------------------------------------
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-tune.md gcc-11.1.0/gcc/config/aarch64/aarch64-tune.md
*** gcc-10.3.0/gcc/config/aarch64/aarch64-tune.md	Thu Apr  8 11:57:03 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-tune.md	Tue Apr 27 10:00:33 2021
***************
*** 1,5 ****
  ;; -*- buffer-read-only: t -*-
  ;; Generated automatically by gentune.sh from aarch64-cores.def
  (define_attr "tune"
! 	"cortexa34,cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88p1,thunderxt88,octeontx,octeontxt81,octeontxt83,thunderxt81,thunderxt83,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,cortexa76ae,cortexa77,cortexa65,cortexa65ae,ares,neoversen1,neoversee1,octeontx2,octeontx2t98,octeontx2t96,octeontx2t93,octeontx2f95,octeontx2f95n,octeontx2f95mm,a64fx,tsv110,thunderx3t110,zeus,neoversev1,saphira,neoversen2,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55"
  	(const (symbol_ref "((enum attr_tune) aarch64_tune)")))
--- 1,5 ----
  ;; -*- buffer-read-only: t -*-
  ;; Generated automatically by gentune.sh from aarch64-cores.def
  (define_attr "tune"
! 	"cortexa34,cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88p1,thunderxt88,octeontx,octeontxt81,octeontxt83,thunderxt81,thunderxt83,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,cortexa76ae,cortexa77,cortexa78,cortexa78ae,cortexa78c,cortexa65,cortexa65ae,cortexx1,ares,neoversen1,neoversee1,octeontx2,octeontx2t98,octeontx2t96,octeontx2t93,octeontx2f95,octeontx2f95n,octeontx2f95mm,a64fx,tsv110,thunderx3t110,zeus,neoversev1,saphira,neoversen2,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55,cortexr82"
  	(const (symbol_ref "((enum attr_tune) aarch64_tune)")))
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-tuning-flags.def gcc-11.1.0/gcc/config/aarch64/aarch64-tuning-flags.def
*** gcc-10.3.0/gcc/config/aarch64/aarch64-tuning-flags.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-tuning-flags.def	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2015-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2015-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** AARCH64_EXTRA_TUNING_OPTION ("no_ldp_stp
*** 46,54 ****
  
  AARCH64_EXTRA_TUNING_OPTION ("rename_load_regs", RENAME_LOAD_REGS)
  
- /* Prefer Advanced SIMD over SVE for auto-vectorization.  */
- AARCH64_EXTRA_TUNING_OPTION ("prefer_advsimd_autovec", PREFER_ADVSIMD_AUTOVEC)
- 
  AARCH64_EXTRA_TUNING_OPTION ("cse_sve_vl_constants", CSE_SVE_VL_CONSTANTS)
  
  #undef AARCH64_EXTRA_TUNING_OPTION
--- 46,55 ----
  
  AARCH64_EXTRA_TUNING_OPTION ("rename_load_regs", RENAME_LOAD_REGS)
  
  AARCH64_EXTRA_TUNING_OPTION ("cse_sve_vl_constants", CSE_SVE_VL_CONSTANTS)
  
+ AARCH64_EXTRA_TUNING_OPTION ("use_new_vector_costs", USE_NEW_VECTOR_COSTS)
+ 
+ AARCH64_EXTRA_TUNING_OPTION ("matched_vector_throughput", MATCHED_VECTOR_THROUGHPUT)
+ 
  #undef AARCH64_EXTRA_TUNING_OPTION
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-vxworks.h gcc-11.1.0/gcc/config/aarch64/aarch64-vxworks.h
*** gcc-10.3.0/gcc/config/aarch64/aarch64-vxworks.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64-vxworks.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.  Vxworks Aarch 64bit
     version.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
     Contributed by Douglas B Rupp
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.  Vxworks Aarch 64bit
     version.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
     Contributed by Douglas B Rupp
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 60,71 ****
  #undef STACK_CHECK_PROTECT
  #define STACK_CHECK_PROTECT 16384
  
! /* The VxWorks environment on aarch64 is llvm-based only, uses R18 as
!    a TCB pointer.  */
! 
  #undef VXWORKS_PERSONALITY
  #define VXWORKS_PERSONALITY "llvm"
  
! #undef  TARGET_OS_USES_R18
! #define TARGET_OS_USES_R18 1
  
--- 60,73 ----
  #undef STACK_CHECK_PROTECT
  #define STACK_CHECK_PROTECT 16384
  
! /* The VxWorks environment on aarch64 is llvm-based.  */
  #undef VXWORKS_PERSONALITY
  #define VXWORKS_PERSONALITY "llvm"
  
! /* VxWorks uses R18 as a TCB pointer.  We must pick something else as
!    the static chain and R18 needs to be claimed "fixed".  Until we
!    arrange to override the common parts of the port family to
!    acknowledge the latter, configure --with-specs="-ffixed-r18".  */
! #undef  STATIC_CHAIN_REGNUM
! #define STATIC_CHAIN_REGNUM 9
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64.c gcc-11.1.0/gcc/config/aarch64/aarch64.c
*** gcc-10.3.0/gcc/config/aarch64/aarch64.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 74,79 ****
--- 74,81 ----
  #include "intl.h"
  #include "expmed.h"
  #include "function-abi.h"
+ #include "gimple-pretty-print.h"
+ #include "tree-ssa-loop-niter.h"
  
  /* This file should be included last.  */
  #include "target-def.h"
*************** static const struct cpu_addrcost_table g
*** 362,367 ****
--- 364,371 ----
      },
    0, /* pre_modify  */
    0, /* post_modify  */
+   0, /* post_modify_ld3_st3  */
+   0, /* post_modify_ld4_st4  */
    0, /* register_offset  */
    0, /* register_sextend  */
    0, /* register_zextend  */
*************** static const struct cpu_addrcost_table e
*** 378,383 ****
--- 382,389 ----
      },
    0, /* pre_modify  */
    0, /* post_modify  */
+   0, /* post_modify_ld3_st3  */
+   0, /* post_modify_ld4_st4  */
    1, /* register_offset  */
    1, /* register_sextend  */
    2, /* register_zextend  */
*************** static const struct cpu_addrcost_table x
*** 394,399 ****
--- 400,407 ----
      },
    1, /* pre_modify  */
    1, /* post_modify  */
+   1, /* post_modify_ld3_st3  */
+   1, /* post_modify_ld4_st4  */
    0, /* register_offset  */
    1, /* register_sextend  */
    1, /* register_zextend  */
*************** static const struct cpu_addrcost_table t
*** 410,415 ****
--- 418,425 ----
      },
    0, /* pre_modify  */
    0, /* post_modify  */
+   0, /* post_modify_ld3_st3  */
+   0, /* post_modify_ld4_st4  */
    2, /* register_offset  */
    3, /* register_sextend  */
    3, /* register_zextend  */
*************** static const struct cpu_addrcost_table t
*** 426,431 ****
--- 436,443 ----
      },
    0, /* pre_modify  */
    0, /* post_modify  */
+   0, /* post_modify_ld3_st3  */
+   0, /* post_modify_ld4_st4  */
    2, /* register_offset  */
    3, /* register_sextend  */
    3, /* register_zextend  */
*************** static const struct cpu_addrcost_table t
*** 442,447 ****
--- 454,461 ----
      },
    0, /* pre_modify  */
    0, /* post_modify  */
+   0, /* post_modify_ld3_st3  */
+   0, /* post_modify_ld4_st4  */
    0, /* register_offset  */
    1, /* register_sextend  */
    1, /* register_zextend  */
*************** static const struct cpu_addrcost_table q
*** 458,463 ****
--- 472,479 ----
      },
    1, /* pre_modify  */
    1, /* post_modify  */
+   1, /* post_modify_ld3_st3  */
+   1, /* post_modify_ld4_st4  */
    3, /* register_offset  */
    3, /* register_sextend  */
    3, /* register_zextend  */
*************** static const struct cpu_addrcost_table a
*** 474,485 ****
--- 490,521 ----
      },
    0, /* pre_modify  */
    0, /* post_modify  */
+   0, /* post_modify_ld3_st3  */
+   0, /* post_modify_ld4_st4  */
    2, /* register_offset  */
    3, /* register_sextend  */
    3, /* register_zextend  */
    0, /* imm_offset  */
  };
  
+ static const struct cpu_addrcost_table neoversev1_addrcost_table =
+ {
+     {
+       1, /* hi  */
+       0, /* si  */
+       0, /* di  */
+       1, /* ti  */
+     },
+   0, /* pre_modify  */
+   0, /* post_modify  */
+   3, /* post_modify_ld3_st3  */
+   3, /* post_modify_ld4_st4  */
+   0, /* register_offset  */
+   0, /* register_sextend  */
+   0, /* register_zextend  */
+   0 /* imm_offset  */
+ };
+ 
  static const struct cpu_regmove_cost generic_regmove_cost =
  {
    1, /* GP2GP  */
*************** static const struct cpu_regmove_cost a64
*** 585,590 ****
--- 621,683 ----
    2 /* FP2FP  */
  };
  
+ /* Generic costs for Advanced SIMD vector operations.   */
+ static const advsimd_vec_cost generic_advsimd_vector_cost =
+ {
+   1, /* int_stmt_cost  */
+   1, /* fp_stmt_cost  */
+   0, /* ld2_st2_permute_cost  */
+   0, /* ld3_st3_permute_cost  */
+   0, /* ld4_st4_permute_cost  */
+   2, /* permute_cost  */
+   2, /* reduc_i8_cost  */
+   2, /* reduc_i16_cost  */
+   2, /* reduc_i32_cost  */
+   2, /* reduc_i64_cost  */
+   2, /* reduc_f16_cost  */
+   2, /* reduc_f32_cost  */
+   2, /* reduc_f64_cost  */
+   2, /* store_elt_extra_cost  */
+   2, /* vec_to_scalar_cost  */
+   1, /* scalar_to_vec_cost  */
+   1, /* align_load_cost  */
+   1, /* unalign_load_cost  */
+   1, /* unalign_store_cost  */
+   1  /* store_cost  */
+ };
+ 
+ /* Generic costs for SVE vector operations.  */
+ static const sve_vec_cost generic_sve_vector_cost =
+ {
+   {
+     1, /* int_stmt_cost  */
+     1, /* fp_stmt_cost  */
+     0, /* ld2_st2_permute_cost  */
+     0, /* ld3_st3_permute_cost  */
+     0, /* ld4_st4_permute_cost  */
+     2, /* permute_cost  */
+     2, /* reduc_i8_cost  */
+     2, /* reduc_i16_cost  */
+     2, /* reduc_i32_cost  */
+     2, /* reduc_i64_cost  */
+     2, /* reduc_f16_cost  */
+     2, /* reduc_f32_cost  */
+     2, /* reduc_f64_cost  */
+     2, /* store_elt_extra_cost  */
+     2, /* vec_to_scalar_cost  */
+     1, /* scalar_to_vec_cost  */
+     1, /* align_load_cost  */
+     1, /* unalign_load_cost  */
+     1, /* unalign_store_cost  */
+     1  /* store_cost  */
+   },
+   2, /* clast_cost  */
+   2, /* fadda_f16_cost  */
+   2, /* fadda_f32_cost  */
+   2, /* fadda_f64_cost  */
+   1 /* scatter_store_elt_cost  */
+ };
+ 
  /* Generic costs for vector insn classes.  */
  static const struct cpu_vector_cost generic_vector_cost =
  {
*************** static const struct cpu_vector_cost gene
*** 592,608 ****
    1, /* scalar_fp_stmt_cost  */
    1, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
-   1, /* vec_int_stmt_cost  */
-   1, /* vec_fp_stmt_cost  */
-   2, /* vec_permute_cost  */
-   2, /* vec_to_scalar_cost  */
-   1, /* scalar_to_vec_cost  */
-   1, /* vec_align_load_cost  */
-   1, /* vec_unalign_load_cost  */
-   1, /* vec_unalign_store_cost  */
-   1, /* vec_store_cost  */
    3, /* cond_taken_branch_cost  */
!   1 /* cond_not_taken_branch_cost  */
  };
  
  /* QDF24XX costs for vector insn classes.  */
--- 685,787 ----
    1, /* scalar_fp_stmt_cost  */
    1, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
    3, /* cond_taken_branch_cost  */
!   1, /* cond_not_taken_branch_cost  */
!   &generic_advsimd_vector_cost, /* advsimd  */
!   &generic_sve_vector_cost, /* sve */
!   nullptr /* issue_info  */
! };
! 
! static const advsimd_vec_cost a64fx_advsimd_vector_cost =
! {
!   2, /* int_stmt_cost  */
!   5, /* fp_stmt_cost  */
!   0, /* ld2_st2_permute_cost  */
!   0, /* ld3_st3_permute_cost  */
!   0, /* ld4_st4_permute_cost  */
!   3, /* permute_cost  */
!   13, /* reduc_i8_cost  */
!   13, /* reduc_i16_cost  */
!   13, /* reduc_i32_cost  */
!   13, /* reduc_i64_cost  */
!   13, /* reduc_f16_cost  */
!   13, /* reduc_f32_cost  */
!   13, /* reduc_f64_cost  */
!   13, /* store_elt_extra_cost  */
!   13, /* vec_to_scalar_cost  */
!   4, /* scalar_to_vec_cost  */
!   6, /* align_load_cost  */
!   6, /* unalign_load_cost  */
!   1, /* unalign_store_cost  */
!   1  /* store_cost  */
! };
! 
! static const sve_vec_cost a64fx_sve_vector_cost =
! {
!   {
!     2, /* int_stmt_cost  */
!     5, /* fp_stmt_cost  */
!     0, /* ld2_st2_permute_cost  */
!     0, /* ld3_st3_permute_cost  */
!     0, /* ld4_st4_permute_cost  */
!     3, /* permute_cost  */
!     13, /* reduc_i8_cost  */
!     13, /* reduc_i16_cost  */
!     13, /* reduc_i32_cost  */
!     13, /* reduc_i64_cost  */
!     13, /* reduc_f16_cost  */
!     13, /* reduc_f32_cost  */
!     13, /* reduc_f64_cost  */
!     13, /* store_elt_extra_cost  */
!     13, /* vec_to_scalar_cost  */
!     4, /* scalar_to_vec_cost  */
!     6, /* align_load_cost  */
!     6, /* unalign_load_cost  */
!     1, /* unalign_store_cost  */
!     1  /* store_cost  */
!   },
!   13, /* clast_cost  */
!   13, /* fadda_f16_cost  */
!   13, /* fadda_f32_cost  */
!   13, /* fadda_f64_cost  */
!   1 /* scatter_store_elt_cost  */
! };
! 
! static const struct cpu_vector_cost a64fx_vector_cost =
! {
!   1, /* scalar_int_stmt_cost  */
!   5, /* scalar_fp_stmt_cost  */
!   4, /* scalar_load_cost  */
!   1, /* scalar_store_cost  */
!   3, /* cond_taken_branch_cost  */
!   1, /* cond_not_taken_branch_cost  */
!   &a64fx_advsimd_vector_cost, /* advsimd  */
!   &a64fx_sve_vector_cost, /* sve  */
!   nullptr /* issue_info  */
! };
! 
! static const advsimd_vec_cost qdf24xx_advsimd_vector_cost =
! {
!   1, /* int_stmt_cost  */
!   3, /* fp_stmt_cost  */
!   0, /* ld2_st2_permute_cost  */
!   0, /* ld3_st3_permute_cost  */
!   0, /* ld4_st4_permute_cost  */
!   2, /* permute_cost  */
!   1, /* reduc_i8_cost  */
!   1, /* reduc_i16_cost  */
!   1, /* reduc_i32_cost  */
!   1, /* reduc_i64_cost  */
!   1, /* reduc_f16_cost  */
!   1, /* reduc_f32_cost  */
!   1, /* reduc_f64_cost  */
!   1, /* store_elt_extra_cost  */
!   1, /* vec_to_scalar_cost  */
!   1, /* scalar_to_vec_cost  */
!   1, /* align_load_cost  */
!   1, /* unalign_load_cost  */
!   1, /* unalign_store_cost  */
!   1  /* store_cost  */
  };
  
  /* QDF24XX costs for vector insn classes.  */
*************** static const struct cpu_vector_cost qdf2
*** 612,628 ****
    1, /* scalar_fp_stmt_cost  */
    1, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
-   1, /* vec_int_stmt_cost  */
-   3, /* vec_fp_stmt_cost  */
-   2, /* vec_permute_cost  */
-   1, /* vec_to_scalar_cost  */
-   1, /* scalar_to_vec_cost  */
-   1, /* vec_align_load_cost  */
-   1, /* vec_unalign_load_cost  */
-   1, /* vec_unalign_store_cost  */
-   1, /* vec_store_cost  */
    3, /* cond_taken_branch_cost  */
!   1 /* cond_not_taken_branch_cost  */
  };
  
  /* ThunderX costs for vector insn classes.  */
--- 791,826 ----
    1, /* scalar_fp_stmt_cost  */
    1, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
    3, /* cond_taken_branch_cost  */
!   1, /* cond_not_taken_branch_cost  */
!   &qdf24xx_advsimd_vector_cost, /* advsimd  */
!   nullptr, /* sve  */
!   nullptr /* issue_info  */
! };
! 
! 
! static const advsimd_vec_cost thunderx_advsimd_vector_cost =
! {
!   4, /* int_stmt_cost  */
!   1, /* fp_stmt_cost  */
!   0, /* ld2_st2_permute_cost  */
!   0, /* ld3_st3_permute_cost  */
!   0, /* ld4_st4_permute_cost  */
!   4, /* permute_cost  */
!   2, /* reduc_i8_cost  */
!   2, /* reduc_i16_cost  */
!   2, /* reduc_i32_cost  */
!   2, /* reduc_i64_cost  */
!   2, /* reduc_f16_cost  */
!   2, /* reduc_f32_cost  */
!   2, /* reduc_f64_cost  */
!   2, /* store_elt_extra_cost  */
!   2, /* vec_to_scalar_cost  */
!   2, /* scalar_to_vec_cost  */
!   3, /* align_load_cost  */
!   5, /* unalign_load_cost  */
!   5, /* unalign_store_cost  */
!   1  /* store_cost  */
  };
  
  /* ThunderX costs for vector insn classes.  */
*************** static const struct cpu_vector_cost thun
*** 632,648 ****
    1, /* scalar_fp_stmt_cost  */
    3, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
-   4, /* vec_int_stmt_cost  */
-   1, /* vec_fp_stmt_cost  */
-   4, /* vec_permute_cost  */
-   2, /* vec_to_scalar_cost  */
-   2, /* scalar_to_vec_cost  */
-   3, /* vec_align_load_cost  */
-   5, /* vec_unalign_load_cost  */
-   5, /* vec_unalign_store_cost  */
-   1, /* vec_store_cost  */
    3, /* cond_taken_branch_cost  */
!   3 /* cond_not_taken_branch_cost  */
  };
  
  static const struct cpu_vector_cost tsv110_vector_cost =
--- 830,864 ----
    1, /* scalar_fp_stmt_cost  */
    3, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
    3, /* cond_taken_branch_cost  */
!   3, /* cond_not_taken_branch_cost  */
!   &thunderx_advsimd_vector_cost, /* advsimd  */
!   nullptr, /* sve  */
!   nullptr /* issue_info  */
! };
! 
! static const advsimd_vec_cost tsv110_advsimd_vector_cost =
! {
!   2, /* int_stmt_cost  */
!   2, /* fp_stmt_cost  */
!   0, /* ld2_st2_permute_cost  */
!   0, /* ld3_st3_permute_cost  */
!   0, /* ld4_st4_permute_cost  */
!   2, /* permute_cost  */
!   3, /* reduc_i8_cost  */
!   3, /* reduc_i16_cost  */
!   3, /* reduc_i32_cost  */
!   3, /* reduc_i64_cost  */
!   3, /* reduc_f16_cost  */
!   3, /* reduc_f32_cost  */
!   3, /* reduc_f64_cost  */
!   3, /* store_elt_extra_cost  */
!   3, /* vec_to_scalar_cost  */
!   2, /* scalar_to_vec_cost  */
!   5, /* align_load_cost  */
!   5, /* unalign_load_cost  */
!   1, /* unalign_store_cost  */
!   1  /* store_cost  */
  };
  
  static const struct cpu_vector_cost tsv110_vector_cost =
*************** static const struct cpu_vector_cost tsv1
*** 651,687 ****
    1, /* scalar_fp_stmt_cost  */
    5, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
-   2, /* vec_int_stmt_cost  */
-   2, /* vec_fp_stmt_cost  */
-   2, /* vec_permute_cost  */
-   3, /* vec_to_scalar_cost  */
-   2, /* scalar_to_vec_cost  */
-   5, /* vec_align_load_cost  */
-   5, /* vec_unalign_load_cost  */
-   1, /* vec_unalign_store_cost  */
-   1, /* vec_store_cost  */
    1, /* cond_taken_branch_cost  */
!   1 /* cond_not_taken_branch_cost  */
  };
  
! /* Generic costs for vector insn classes.  */
  static const struct cpu_vector_cost cortexa57_vector_cost =
  {
    1, /* scalar_int_stmt_cost  */
    1, /* scalar_fp_stmt_cost  */
    4, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
-   2, /* vec_int_stmt_cost  */
-   2, /* vec_fp_stmt_cost  */
-   3, /* vec_permute_cost  */
-   8, /* vec_to_scalar_cost  */
-   8, /* scalar_to_vec_cost  */
-   4, /* vec_align_load_cost  */
-   4, /* vec_unalign_load_cost  */
-   1, /* vec_unalign_store_cost  */
-   1, /* vec_store_cost  */
    1, /* cond_taken_branch_cost  */
!   1 /* cond_not_taken_branch_cost  */
  };
  
  static const struct cpu_vector_cost exynosm1_vector_cost =
--- 867,939 ----
    1, /* scalar_fp_stmt_cost  */
    5, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
    1, /* cond_taken_branch_cost  */
!   1, /* cond_not_taken_branch_cost  */
!   &tsv110_advsimd_vector_cost, /* advsimd  */
!   nullptr, /* sve  */
!   nullptr /* issue_info  */
  };
  
! static const advsimd_vec_cost cortexa57_advsimd_vector_cost =
! {
!   2, /* int_stmt_cost  */
!   2, /* fp_stmt_cost  */
!   0, /* ld2_st2_permute_cost  */
!   0, /* ld3_st3_permute_cost  */
!   0, /* ld4_st4_permute_cost  */
!   3, /* permute_cost  */
!   8, /* reduc_i8_cost  */
!   8, /* reduc_i16_cost  */
!   8, /* reduc_i32_cost  */
!   8, /* reduc_i64_cost  */
!   8, /* reduc_f16_cost  */
!   8, /* reduc_f32_cost  */
!   8, /* reduc_f64_cost  */
!   8, /* store_elt_extra_cost  */
!   8, /* vec_to_scalar_cost  */
!   8, /* scalar_to_vec_cost  */
!   4, /* align_load_cost  */
!   4, /* unalign_load_cost  */
!   1, /* unalign_store_cost  */
!   1  /* store_cost  */
! };
! 
! /* Cortex-A57 costs for vector insn classes.  */
  static const struct cpu_vector_cost cortexa57_vector_cost =
  {
    1, /* scalar_int_stmt_cost  */
    1, /* scalar_fp_stmt_cost  */
    4, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
    1, /* cond_taken_branch_cost  */
!   1, /* cond_not_taken_branch_cost  */
!   &cortexa57_advsimd_vector_cost, /* advsimd  */
!   nullptr, /* sve  */
!   nullptr /* issue_info  */
! };
! 
! static const advsimd_vec_cost exynosm1_advsimd_vector_cost =
! {
!   3, /* int_stmt_cost  */
!   3, /* fp_stmt_cost  */
!   0, /* ld2_st2_permute_cost  */
!   0, /* ld3_st3_permute_cost  */
!   0, /* ld4_st4_permute_cost  */
!   3, /* permute_cost  */
!   3, /* reduc_i8_cost  */
!   3, /* reduc_i16_cost  */
!   3, /* reduc_i32_cost  */
!   3, /* reduc_i64_cost  */
!   3, /* reduc_f16_cost  */
!   3, /* reduc_f32_cost  */
!   3, /* reduc_f64_cost  */
!   3, /* store_elt_extra_cost  */
!   3, /* vec_to_scalar_cost  */
!   3, /* scalar_to_vec_cost  */
!   5, /* align_load_cost  */
!   5, /* unalign_load_cost  */
!   1, /* unalign_store_cost  */
!   1  /* store_cost  */
  };
  
  static const struct cpu_vector_cost exynosm1_vector_cost =
*************** static const struct cpu_vector_cost exyn
*** 690,706 ****
    1, /* scalar_fp_stmt_cost  */
    5, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
-   3, /* vec_int_stmt_cost  */
-   3, /* vec_fp_stmt_cost  */
-   3, /* vec_permute_cost  */
-   3, /* vec_to_scalar_cost  */
-   3, /* scalar_to_vec_cost  */
-   5, /* vec_align_load_cost  */
-   5, /* vec_unalign_load_cost  */
-   1, /* vec_unalign_store_cost  */
-   1, /* vec_store_cost  */
    1, /* cond_taken_branch_cost  */
!   1 /* cond_not_taken_branch_cost  */
  };
  
  /* Generic costs for vector insn classes.  */
--- 942,976 ----
    1, /* scalar_fp_stmt_cost  */
    5, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
    1, /* cond_taken_branch_cost  */
!   1, /* cond_not_taken_branch_cost  */
!   &exynosm1_advsimd_vector_cost, /* advsimd  */
!   nullptr, /* sve  */
!   nullptr /* issue_info  */
! };
! 
! static const advsimd_vec_cost xgene1_advsimd_vector_cost =
! {
!   2, /* int_stmt_cost  */
!   2, /* fp_stmt_cost  */
!   0, /* ld2_st2_permute_cost  */
!   0, /* ld3_st3_permute_cost  */
!   0, /* ld4_st4_permute_cost  */
!   2, /* permute_cost  */
!   4, /* reduc_i8_cost  */
!   4, /* reduc_i16_cost  */
!   4, /* reduc_i32_cost  */
!   4, /* reduc_i64_cost  */
!   4, /* reduc_f16_cost  */
!   4, /* reduc_f32_cost  */
!   4, /* reduc_f64_cost  */
!   4, /* store_elt_extra_cost  */
!   4, /* vec_to_scalar_cost  */
!   4, /* scalar_to_vec_cost  */
!   10, /* align_load_cost  */
!   10, /* unalign_load_cost  */
!   2, /* unalign_store_cost  */
!   2  /* store_cost  */
  };
  
  /* Generic costs for vector insn classes.  */
*************** static const struct cpu_vector_cost xgen
*** 710,726 ****
    1, /* scalar_fp_stmt_cost  */
    5, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
-   2, /* vec_int_stmt_cost  */
-   2, /* vec_fp_stmt_cost  */
-   2, /* vec_permute_cost  */
-   4, /* vec_to_scalar_cost  */
-   4, /* scalar_to_vec_cost  */
-   10, /* vec_align_load_cost  */
-   10, /* vec_unalign_load_cost  */
-   2, /* vec_unalign_store_cost  */
-   2, /* vec_store_cost  */
    2, /* cond_taken_branch_cost  */
!   1 /* cond_not_taken_branch_cost  */
  };
  
  /* Costs for vector insn classes for Vulcan.  */
--- 980,1014 ----
    1, /* scalar_fp_stmt_cost  */
    5, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
    2, /* cond_taken_branch_cost  */
!   1, /* cond_not_taken_branch_cost  */
!   &xgene1_advsimd_vector_cost, /* advsimd  */
!   nullptr, /* sve  */
!   nullptr /* issue_info  */
! };
! 
! static const advsimd_vec_cost thunderx2t99_advsimd_vector_cost =
! {
!   4, /* int_stmt_cost  */
!   5, /* fp_stmt_cost  */
!   0, /* ld2_st2_permute_cost  */
!   0, /* ld3_st3_permute_cost  */
!   0, /* ld4_st4_permute_cost  */
!   10, /* permute_cost  */
!   6, /* reduc_i8_cost  */
!   6, /* reduc_i16_cost  */
!   6, /* reduc_i32_cost  */
!   6, /* reduc_i64_cost  */
!   6, /* reduc_f16_cost  */
!   6, /* reduc_f32_cost  */
!   6, /* reduc_f64_cost  */
!   6, /* store_elt_extra_cost  */
!   6, /* vec_to_scalar_cost  */
!   5, /* scalar_to_vec_cost  */
!   4, /* align_load_cost  */
!   4, /* unalign_load_cost  */
!   1, /* unalign_store_cost  */
!   1  /* store_cost  */
  };
  
  /* Costs for vector insn classes for Vulcan.  */
*************** static const struct cpu_vector_cost thun
*** 730,784 ****
    6, /* scalar_fp_stmt_cost  */
    4, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
-   4, /* vec_int_stmt_cost  */
-   5, /* vec_fp_stmt_cost  */
-   10, /* vec_permute_cost  */
-   6, /* vec_to_scalar_cost  */
-   5, /* scalar_to_vec_cost  */
-   4, /* vec_align_load_cost  */
-   4, /* vec_unalign_load_cost  */
-   1, /* vec_unalign_store_cost  */
-   1, /* vec_store_cost  */
    2, /* cond_taken_branch_cost  */
!   1  /* cond_not_taken_branch_cost  */
  };
  
! static const struct cpu_vector_cost thunderx3t110_vector_cost =
  {
!   1, /* scalar_int_stmt_cost  */
!   5, /* scalar_fp_stmt_cost  */
!   4, /* scalar_load_cost  */
!   1, /* scalar_store_cost  */
!   5, /* vec_int_stmt_cost  */
!   5, /* vec_fp_stmt_cost  */
!   10, /* vec_permute_cost  */
    5, /* vec_to_scalar_cost  */
    5, /* scalar_to_vec_cost  */
!   4, /* vec_align_load_cost  */
!   4, /* vec_unalign_load_cost  */
!   4, /* vec_unalign_store_cost  */
!   4, /* vec_store_cost  */
!   2, /* cond_taken_branch_cost  */
!   1  /* cond_not_taken_branch_cost  */
  };
  
! static const struct cpu_vector_cost a64fx_vector_cost =
  {
    1, /* scalar_int_stmt_cost  */
    5, /* scalar_fp_stmt_cost  */
    4, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
!   2, /* vec_int_stmt_cost  */
!   5, /* vec_fp_stmt_cost  */
!   3, /* vec_permute_cost  */
!   13, /* vec_to_scalar_cost  */
!   4, /* scalar_to_vec_cost  */
!   6, /* vec_align_load_cost  */
!   6, /* vec_unalign_load_cost  */
!   1, /* vec_unalign_store_cost  */
!   1, /* vec_store_cost  */
!   3, /* cond_taken_branch_cost  */
!   1 /* cond_not_taken_branch_cost  */
  };
  
  
--- 1018,1065 ----
    6, /* scalar_fp_stmt_cost  */
    4, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
    2, /* cond_taken_branch_cost  */
!   1,  /* cond_not_taken_branch_cost  */
!   &thunderx2t99_advsimd_vector_cost, /* advsimd  */
!   nullptr, /* sve  */
!   nullptr /* issue_info  */
  };
  
! static const advsimd_vec_cost thunderx3t110_advsimd_vector_cost =
  {
!   5, /* int_stmt_cost  */
!   5, /* fp_stmt_cost  */
!   0, /* ld2_st2_permute_cost  */
!   0, /* ld3_st3_permute_cost  */
!   0, /* ld4_st4_permute_cost  */
!   10, /* permute_cost  */
!   5, /* reduc_i8_cost  */
!   5, /* reduc_i16_cost  */
!   5, /* reduc_i32_cost  */
!   5, /* reduc_i64_cost  */
!   5, /* reduc_f16_cost  */
!   5, /* reduc_f32_cost  */
!   5, /* reduc_f64_cost  */
!   5, /* store_elt_extra_cost  */
    5, /* vec_to_scalar_cost  */
    5, /* scalar_to_vec_cost  */
!   4, /* align_load_cost  */
!   4, /* unalign_load_cost  */
!   4, /* unalign_store_cost  */
!   4  /* store_cost  */
  };
  
! static const struct cpu_vector_cost thunderx3t110_vector_cost =
  {
    1, /* scalar_int_stmt_cost  */
    5, /* scalar_fp_stmt_cost  */
    4, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
!   2, /* cond_taken_branch_cost  */
!   1,  /* cond_not_taken_branch_cost  */
!   &thunderx3t110_advsimd_vector_cost, /* advsimd  */
!   nullptr, /* sve  */
!   nullptr /* issue_info  */
  };
  
  
*************** static const struct tune_params thunderx
*** 1360,1366 ****
  
  static const struct tune_params neoversen1_tunings =
  {
!   &cortexa57_extra_costs,
    &generic_addrcost_table,
    &generic_regmove_cost,
    &cortexa57_vector_cost,
--- 1641,1647 ----
  
  static const struct tune_params neoversen1_tunings =
  {
!   &cortexa76_extra_costs,
    &generic_addrcost_table,
    &generic_regmove_cost,
    &cortexa57_vector_cost,
*************** static const struct tune_params neoverse
*** 1384,1395 ****
    &generic_prefetch_tune
  };
  
  static const struct tune_params neoversev1_tunings =
  {
!   &cortexa57_extra_costs,
!   &generic_addrcost_table,
    &generic_regmove_cost,
!   &cortexa57_vector_cost,
    &generic_branch_cost,
    &generic_approx_modes,
    SVE_256, /* sve_width  */
--- 1665,1819 ----
    &generic_prefetch_tune
  };
  
+ static const advsimd_vec_cost neoversev1_advsimd_vector_cost =
+ {
+   2, /* int_stmt_cost  */
+   2, /* fp_stmt_cost  */
+   4, /* ld2_st2_permute_cost */
+   4, /* ld3_st3_permute_cost  */
+   5, /* ld4_st4_permute_cost  */
+   3, /* permute_cost  */
+   4, /* reduc_i8_cost  */
+   4, /* reduc_i16_cost  */
+   2, /* reduc_i32_cost  */
+   2, /* reduc_i64_cost  */
+   6, /* reduc_f16_cost  */
+   3, /* reduc_f32_cost  */
+   2, /* reduc_f64_cost  */
+   2, /* store_elt_extra_cost  */
+   /* This value is just inherited from the Cortex-A57 table.  */
+   8, /* vec_to_scalar_cost  */
+   /* This depends very much on what the scalar value is and
+      where it comes from.  E.g. some constants take two dependent
+      instructions or a load, while others might be moved from a GPR.
+      4 seems to be a reasonable compromise in practice.  */
+   4, /* scalar_to_vec_cost  */
+   4, /* align_load_cost  */
+   4, /* unalign_load_cost  */
+   /* Although stores have a latency of 2 and compete for the
+      vector pipes, in practice it's better not to model that.  */
+   1, /* unalign_store_cost  */
+   1  /* store_cost  */
+ };
+ 
+ static const sve_vec_cost neoversev1_sve_vector_cost =
+ {
+   {
+     2, /* int_stmt_cost  */
+     2, /* fp_stmt_cost  */
+     4, /* ld2_st2_permute_cost  */
+     7, /* ld3_st3_permute_cost  */
+     8, /* ld4_st4_permute_cost  */
+     3, /* permute_cost  */
+     /* Theoretically, a reduction involving 31 scalar ADDs could
+        complete in ~9 cycles and would have a cost of 31.  [SU]ADDV
+        completes in 14 cycles, so give it a cost of 31 + 5.  */
+     36, /* reduc_i8_cost  */
+     /* Likewise for 15 scalar ADDs (~5 cycles) vs. 12: 15 + 7.  */
+     22, /* reduc_i16_cost  */
+     /* Likewise for 7 scalar ADDs (~3 cycles) vs. 10: 7 + 7.  */
+     14, /* reduc_i32_cost  */
+     /* Likewise for 3 scalar ADDs (~2 cycles) vs. 10: 3 + 8.  */
+     11, /* reduc_i64_cost  */
+     /* Theoretically, a reduction involving 15 scalar FADDs could
+        complete in ~9 cycles and would have a cost of 30.  FADDV
+        completes in 13 cycles, so give it a cost of 30 + 4.  */
+     34, /* reduc_f16_cost  */
+     /* Likewise for 7 scalar FADDs (~6 cycles) vs. 11: 14 + 5.  */
+     19, /* reduc_f32_cost  */
+     /* Likewise for 3 scalar FADDs (~4 cycles) vs. 9: 6 + 5.  */
+     11, /* reduc_f64_cost  */
+     2, /* store_elt_extra_cost  */
+     /* This value is just inherited from the Cortex-A57 table.  */
+     8, /* vec_to_scalar_cost  */
+     /* See the comment above the Advanced SIMD versions.  */
+     4, /* scalar_to_vec_cost  */
+     4, /* align_load_cost  */
+     4, /* unalign_load_cost  */
+     /* Although stores have a latency of 2 and compete for the
+        vector pipes, in practice it's better not to model that.  */
+     1, /* unalign_store_cost  */
+     1  /* store_cost  */
+   },
+   3, /* clast_cost  */
+   19, /* fadda_f16_cost  */
+   11, /* fadda_f32_cost  */
+   8, /* fadda_f64_cost  */
+   3 /* scatter_store_elt_cost  */
+ };
+ 
+ static const aarch64_scalar_vec_issue_info neoversev1_scalar_issue_info =
+ {
+   3, /* loads_stores_per_cycle  */
+   2, /* stores_per_cycle  */
+   4, /* general_ops_per_cycle  */
+   0, /* fp_simd_load_general_ops  */
+   1 /* fp_simd_store_general_ops  */
+ };
+ 
+ static const aarch64_advsimd_vec_issue_info neoversev1_advsimd_issue_info =
+ {
+   {
+     3, /* loads_stores_per_cycle  */
+     2, /* stores_per_cycle  */
+     4, /* general_ops_per_cycle  */
+     0, /* fp_simd_load_general_ops  */
+     1 /* fp_simd_store_general_ops  */
+   },
+   2, /* ld2_st2_general_ops  */
+   2, /* ld3_st3_general_ops  */
+   3 /* ld4_st4_general_ops  */
+ };
+ 
+ static const aarch64_sve_vec_issue_info neoversev1_sve_issue_info =
+ {
+   {
+     {
+       2, /* loads_per_cycle  */
+       2, /* stores_per_cycle  */
+       2, /* general_ops_per_cycle  */
+       0, /* fp_simd_load_general_ops  */
+       1 /* fp_simd_store_general_ops  */
+     },
+     2, /* ld2_st2_general_ops  */
+     2, /* ld3_st3_general_ops  */
+     3 /* ld4_st4_general_ops  */
+   },
+   1, /* pred_ops_per_cycle  */
+   2, /* while_pred_ops  */
+   2, /* int_cmp_pred_ops  */
+   1, /* fp_cmp_pred_ops  */
+   1, /* gather_scatter_pair_general_ops  */
+   1 /* gather_scatter_pair_pred_ops  */
+ };
+ 
+ static const aarch64_vec_issue_info neoversev1_vec_issue_info =
+ {
+   &neoversev1_scalar_issue_info,
+   &neoversev1_advsimd_issue_info,
+   &neoversev1_sve_issue_info
+ };
+ 
+ /* Neoverse V1 costs for vector insn classes.  */
+ static const struct cpu_vector_cost neoversev1_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  */
+   &neoversev1_advsimd_vector_cost, /* advsimd  */
+   &neoversev1_sve_vector_cost, /* sve  */
+   &neoversev1_vec_issue_info /* issue_info  */
+ };
+ 
  static const struct tune_params neoversev1_tunings =
  {
!   &cortexa76_extra_costs,
!   &neoversev1_addrcost_table,
    &generic_regmove_cost,
!   &neoversev1_vector_cost,
    &generic_branch_cost,
    &generic_approx_modes,
    SVE_256, /* sve_width  */
*************** static const struct tune_params neoverse
*** 1406,1419 ****
    2,	/* min_div_recip_mul_df.  */
    0,	/* max_case_values.  */
    tune_params::AUTOPREFETCHER_WEAK,	/* autoprefetcher_model.  */
!   (AARCH64_EXTRA_TUNE_PREFER_ADVSIMD_AUTOVEC
!    | AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS),	/* tune_flags.  */
    &generic_prefetch_tune
  };
  
  static const struct tune_params neoversen2_tunings =
  {
!   &cortexa57_extra_costs,
    &generic_addrcost_table,
    &generic_regmove_cost,
    &cortexa57_vector_cost,
--- 1830,1844 ----
    2,	/* min_div_recip_mul_df.  */
    0,	/* max_case_values.  */
    tune_params::AUTOPREFETCHER_WEAK,	/* autoprefetcher_model.  */
!   (AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS
!    | AARCH64_EXTRA_TUNE_USE_NEW_VECTOR_COSTS
!    | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT),	/* tune_flags.  */
    &generic_prefetch_tune
  };
  
  static const struct tune_params neoversen2_tunings =
  {
!   &cortexa76_extra_costs,
    &generic_addrcost_table,
    &generic_regmove_cost,
    &cortexa57_vector_cost,
*************** static const struct tune_params neoverse
*** 1433,1439 ****
    2,	/* min_div_recip_mul_df.  */
    0,	/* max_case_values.  */
    tune_params::AUTOPREFETCHER_WEAK,	/* autoprefetcher_model.  */
!   (AARCH64_EXTRA_TUNE_PREFER_ADVSIMD_AUTOVEC),	/* tune_flags.  */
    &generic_prefetch_tune
  };
  
--- 1858,1864 ----
    2,	/* min_div_recip_mul_df.  */
    0,	/* max_case_values.  */
    tune_params::AUTOPREFETCHER_WEAK,	/* autoprefetcher_model.  */
!   (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &generic_prefetch_tune
  };
  
*************** static const struct attribute_spec aarch
*** 1567,1573 ****
    { "arm_sve_vector_bits", 1, 1, false, true,  false, true,
  			  aarch64_sve::handle_arm_sve_vector_bits_attribute,
  			  NULL },
!   { "Advanced SIMD type", 0, 0, false, true,  false, true,  NULL, NULL },
    { "SVE type",		  3, 3, false, true,  false, true,  NULL, NULL },
    { "SVE sizeless type",  0, 0, false, true,  false, true,  NULL, NULL },
    { NULL,                 0, 0, false, false, false, false, NULL, NULL }
--- 1992,1998 ----
    { "arm_sve_vector_bits", 1, 1, false, true,  false, true,
  			  aarch64_sve::handle_arm_sve_vector_bits_attribute,
  			  NULL },
!   { "Advanced SIMD type", 1, 1, false, true,  false, true,  NULL, NULL },
    { "SVE type",		  3, 3, false, true,  false, true,  NULL, NULL },
    { "SVE sizeless type",  0, 0, false, true,  false, true,  NULL, NULL },
    { NULL,                 0, 0, false, false, false, false, NULL, NULL }
*************** aarch64_bit_representation (rtx x)
*** 2214,2219 ****
--- 2639,2652 ----
    return x;
  }
  
+ /* Return an estimate for the number of quadwords in an SVE vector.  This is
+    equivalent to the number of Advanced SIMD vectors in an SVE vector.  */
+ static unsigned int
+ aarch64_estimated_sve_vq ()
+ {
+   return estimated_poly_value (BITS_PER_SVE_VECTOR) / 128;
+ }
+ 
  /* Return true if MODE is any of the Advanced SIMD structure modes.  */
  static bool
  aarch64_advsimd_struct_mode_p (machine_mode mode)
*************** aarch64_classify_vector_mode (machine_mo
*** 2275,2280 ****
--- 2708,2716 ----
      /* Partial SVE HF vectors.  */
      case E_VNx2HFmode:
      case E_VNx4HFmode:
+     /* Partial SVE BF vectors.  */
+     case E_VNx2BFmode:
+     case E_VNx4BFmode:
      /* Partial SVE SF vector.  */
      case E_VNx2SFmode:
        return TARGET_SVE ? VEC_SVE_DATA | VEC_PARTIAL : 0;
*************** aarch64_is_noplt_call_p (rtx sym)
*** 2935,2967 ****
    return false;
  }
  
- /* Return true if the offsets to a zero/sign-extract operation
-    represent an expression that matches an extend operation.  The
-    operands represent the parameters from
- 
-    (extract:MODE (mult (reg) (MULT_IMM)) (EXTRACT_IMM) (const_int 0)).  */
- bool
- aarch64_is_extend_from_extract (scalar_int_mode mode, rtx mult_imm,
- 				rtx extract_imm)
- {
-   HOST_WIDE_INT mult_val, extract_val;
- 
-   if (! CONST_INT_P (mult_imm) || ! CONST_INT_P (extract_imm))
-     return false;
- 
-   mult_val = INTVAL (mult_imm);
-   extract_val = INTVAL (extract_imm);
- 
-   if (extract_val > 8
-       && extract_val < GET_MODE_BITSIZE (mode)
-       && exact_log2 (extract_val & ~7) > 0
-       && (extract_val & 7) <= 4
-       && mult_val == (1 << (extract_val & 7)))
-     return true;
- 
-   return false;
- }
- 
  /* Emit an insn that's a simple single-set.  Both the operands must be
     known to be valid.  */
  inline static rtx_insn *
--- 3371,3376 ----
*************** tls_symbolic_operand_type (rtx addr)
*** 3058,3064 ****
    enum tls_model tls_kind = TLS_MODEL_NONE;
    poly_int64 offset;
    addr = strip_offset_and_salt (addr, &offset);
!   if (GET_CODE (addr) == SYMBOL_REF)
      tls_kind = SYMBOL_REF_TLS_MODEL (addr);
  
    return tls_kind;
--- 3467,3473 ----
    enum tls_model tls_kind = TLS_MODEL_NONE;
    poly_int64 offset;
    addr = strip_offset_and_salt (addr, &offset);
!   if (SYMBOL_REF_P (addr))
      tls_kind = SYMBOL_REF_TLS_MODEL (addr);
  
    return tls_kind;
*************** aarch64_load_symref_appropriately (rtx d
*** 3199,3205 ****
  	/* The operand is expected to be MEM.  Whenever the related insn
  	   pattern changed, above code which calculate mem should be
  	   updated.  */
! 	gcc_assert (GET_CODE (mem) == MEM);
  	MEM_READONLY_P (mem) = 1;
  	MEM_NOTRAP_P (mem) = 1;
  	emit_insn (insn);
--- 3608,3614 ----
  	/* The operand is expected to be MEM.  Whenever the related insn
  	   pattern changed, above code which calculate mem should be
  	   updated.  */
! 	gcc_assert (MEM_P (mem));
  	MEM_READONLY_P (mem) = 1;
  	MEM_NOTRAP_P (mem) = 1;
  	emit_insn (insn);
*************** aarch64_load_symref_appropriately (rtx d
*** 3242,3248 ****
  	    mem = XVECEXP (XEXP (SET_SRC (insn), 0), 0, 0);
  	  }
  
! 	gcc_assert (GET_CODE (mem) == MEM);
  	MEM_READONLY_P (mem) = 1;
  	MEM_NOTRAP_P (mem) = 1;
  	emit_insn (insn);
--- 3651,3657 ----
  	    mem = XVECEXP (XEXP (SET_SRC (insn), 0), 0, 0);
  	  }
  
! 	gcc_assert (MEM_P (mem));
  	MEM_READONLY_P (mem) = 1;
  	MEM_NOTRAP_P (mem) = 1;
  	emit_insn (insn);
*************** aarch64_split_128bit_move (rtx dst, rtx
*** 3523,3533 ****
      }
  }
  
  bool
  aarch64_split_128bit_move_p (rtx dst, rtx src)
  {
!   return (! REG_P (src)
! 	  || ! (FP_REGNUM_P (REGNO (dst)) && FP_REGNUM_P (REGNO (src))));
  }
  
  /* Split a complex SIMD combine.  */
--- 3932,3947 ----
      }
  }
  
+ /* Return true if we should split a move from 128-bit value SRC
+    to 128-bit register DEST.  */
+ 
  bool
  aarch64_split_128bit_move_p (rtx dst, rtx src)
  {
!   if (FP_REGNUM_P (REGNO (dst)))
!     return REG_P (src) && !FP_REGNUM_P (REGNO (src));
!   /* All moves to GPRs need to be split.  */
!   return true;
  }
  
  /* Split a complex SIMD combine.  */
*************** aarch64_internal_mov_immediate (rtx dest
*** 4303,4309 ****
  bool
  aarch64_mov128_immediate (rtx imm)
  {
!   if (GET_CODE (imm) == CONST_INT)
      return true;
  
    gcc_assert (CONST_WIDE_INT_NUNITS (imm) == 2);
--- 4717,4723 ----
  bool
  aarch64_mov128_immediate (rtx imm)
  {
!   if (CONST_INT_P (imm))
      return true;
  
    gcc_assert (CONST_WIDE_INT_NUNITS (imm) == 2);
*************** aarch64_expand_sve_ld1rq (rtx dest, rtx
*** 4752,4757 ****
--- 5166,5221 ----
    return true;
  }
  
+ /* SRC is an SVE CONST_VECTOR that contains N "foreground" values followed
+    by N "background" values.  Try to move it into TARGET using:
+ 
+       PTRUE PRED.<T>, VL<N>
+       MOV TRUE.<T>, #<foreground>
+       MOV FALSE.<T>, #<background>
+       SEL TARGET.<T>, PRED.<T>, TRUE.<T>, FALSE.<T>
+ 
+    The PTRUE is always a single instruction but the MOVs might need a
+    longer sequence.  If the background value is zero (as it often is),
+    the sequence can sometimes collapse to a PTRUE followed by a
+    zero-predicated move.
+ 
+    Return the target on success, otherwise return null.  */
+ 
+ static rtx
+ aarch64_expand_sve_const_vector_sel (rtx target, rtx src)
+ {
+   gcc_assert (CONST_VECTOR_NELTS_PER_PATTERN (src) == 2);
+ 
+   /* Make sure that the PTRUE is valid.  */
+   machine_mode mode = GET_MODE (src);
+   machine_mode pred_mode = aarch64_sve_pred_mode (mode);
+   unsigned int npatterns = CONST_VECTOR_NPATTERNS (src);
+   if (aarch64_svpattern_for_vl (pred_mode, npatterns)
+       == AARCH64_NUM_SVPATTERNS)
+     return NULL_RTX;
+ 
+   rtx_vector_builder pred_builder (pred_mode, npatterns, 2);
+   rtx_vector_builder true_builder (mode, npatterns, 1);
+   rtx_vector_builder false_builder (mode, npatterns, 1);
+   for (unsigned int i = 0; i < npatterns; ++i)
+     {
+       true_builder.quick_push (CONST_VECTOR_ENCODED_ELT (src, i));
+       pred_builder.quick_push (CONST1_RTX (BImode));
+     }
+   for (unsigned int i = 0; i < npatterns; ++i)
+     {
+       false_builder.quick_push (CONST_VECTOR_ENCODED_ELT (src, i + npatterns));
+       pred_builder.quick_push (CONST0_RTX (BImode));
+     }
+   expand_operand ops[4];
+   create_output_operand (&ops[0], target, mode);
+   create_input_operand (&ops[1], true_builder.build (), mode);
+   create_input_operand (&ops[2], false_builder.build (), mode);
+   create_input_operand (&ops[3], pred_builder.build (), pred_mode);
+   expand_insn (code_for_vcond_mask (mode, mode), 4, ops);
+   return target;
+ }
+ 
  /* Return a register containing CONST_VECTOR SRC, given that SRC has an
     SVE data mode and isn't a legitimate constant.  Use TARGET for the
     result if convenient.
*************** aarch64_expand_sve_const_vector (rtx tar
*** 4886,4891 ****
--- 5350,5359 ----
    if (GET_MODE_NUNITS (mode).is_constant ())
      return NULL_RTX;
  
+   if (nelts_per_pattern == 2)
+     if (rtx res = aarch64_expand_sve_const_vector_sel (target, src))
+       return res;
+ 
    /* Expand each pattern individually.  */
    gcc_assert (npatterns > 1);
    rtx_vector_builder builder;
*************** aarch64_expand_sve_const_pred_trn (rtx t
*** 5067,5078 ****
  	}
      }
  
!   /* Emit the TRN1 itself.  */
    machine_mode mode = aarch64_sve_pred_mode (permute_size).require ();
!   target = aarch64_target_reg (target, mode);
!   emit_insn (gen_aarch64_sve (UNSPEC_TRN1, mode, target,
! 			      gen_lowpart (mode, a),
! 			      gen_lowpart (mode, b)));
    return target;
  }
  
--- 5535,5546 ----
  	}
      }
  
!   /* Emit the TRN1 itself.  We emit a TRN that operates on VNx16BI
!      operands but permutes them as though they had mode MODE.  */
    machine_mode mode = aarch64_sve_pred_mode (permute_size).require ();
!   target = aarch64_target_reg (target, GET_MODE (a));
!   rtx type_reg = CONST0_RTX (mode);
!   emit_insn (gen_aarch64_sve_trn1_conv (mode, target, a, b, type_reg));
    return target;
  }
  
*************** aarch64_expand_mov_immediate (rtx dest,
*** 5167,5174 ****
  
    /* Check on what type of symbol it is.  */
    scalar_int_mode int_mode;
!   if ((GET_CODE (imm) == SYMBOL_REF
!        || GET_CODE (imm) == LABEL_REF
         || GET_CODE (imm) == CONST
         || GET_CODE (imm) == CONST_POLY_INT)
        && is_a <scalar_int_mode> (mode, &int_mode))
--- 5635,5642 ----
  
    /* Check on what type of symbol it is.  */
    scalar_int_mode int_mode;
!   if ((SYMBOL_REF_P (imm)
!        || LABEL_REF_P (imm)
         || GET_CODE (imm) == CONST
         || GET_CODE (imm) == CONST_POLY_INT)
        && is_a <scalar_int_mode> (mode, &int_mode))
*************** aarch64_expand_mov_immediate (rtx dest,
*** 5222,5229 ****
        switch (sty)
  	{
  	case SYMBOL_FORCE_TO_MEM:
  	  if (const_offset != 0
! 	      && targetm.cannot_force_const_mem (int_mode, imm))
  	    {
  	      gcc_assert (can_create_pseudo_p ());
  	      base = aarch64_force_temporary (int_mode, dest, base);
--- 5690,5700 ----
        switch (sty)
  	{
  	case SYMBOL_FORCE_TO_MEM:
+ 	  if (int_mode != ptr_mode)
+ 	    imm = convert_memory_address (ptr_mode, imm);
+ 
  	  if (const_offset != 0
! 	      && targetm.cannot_force_const_mem (ptr_mode, imm))
  	    {
  	      gcc_assert (can_create_pseudo_p ());
  	      base = aarch64_force_temporary (int_mode, dest, base);
*************** aarch64_vfp_is_call_candidate (cumulativ
*** 5866,5874 ****
  
  static unsigned int
  aarch64_function_arg_alignment (machine_mode mode, const_tree type,
! 				bool *abi_break)
  {
!   *abi_break = false;
    if (!type)
      return GET_MODE_ALIGNMENT (mode);
  
--- 6337,6345 ----
  
  static unsigned int
  aarch64_function_arg_alignment (machine_mode mode, const_tree type,
! 				unsigned int *abi_break)
  {
!   *abi_break = 0;
    if (!type)
      return GET_MODE_ALIGNMENT (mode);
  
*************** aarch64_function_arg_alignment (machine_
*** 5910,5916 ****
  
    if (bitfield_alignment > alignment)
      {
!       *abi_break = true;
        return bitfield_alignment;
      }
  
--- 6381,6387 ----
  
    if (bitfield_alignment > alignment)
      {
!       *abi_break = alignment;
        return bitfield_alignment;
      }
  
*************** aarch64_layout_arg (cumulative_args_t pc
*** 5932,5938 ****
    int ncrn, nvrn, nregs;
    bool allocate_ncrn, allocate_nvrn;
    HOST_WIDE_INT size;
!   bool abi_break;
  
    /* We need to do this once per argument.  */
    if (pcum->aapcs_arg_processed)
--- 6403,6409 ----
    int ncrn, nvrn, nregs;
    bool allocate_ncrn, allocate_nvrn;
    HOST_WIDE_INT size;
!   unsigned int abi_break;
  
    /* We need to do this once per argument.  */
    if (pcum->aapcs_arg_processed)
*************** aarch64_init_cumulative_args (CUMULATIVE
*** 6186,6192 ****
  
    if (!silent_p
        && !TARGET_FLOAT
-       && fndecl && TREE_PUBLIC (fndecl)
        && fntype && fntype != error_mark_node)
      {
        const_tree type = TREE_TYPE (fntype);
--- 6657,6662 ----
*************** aarch64_function_arg_regno_p (unsigned r
*** 6251,6264 ****
  static unsigned int
  aarch64_function_arg_boundary (machine_mode mode, const_tree type)
  {
!   bool abi_break;
    unsigned int alignment = aarch64_function_arg_alignment (mode, type,
  							   &abi_break);
    if (abi_break & warn_psabi)
!     inform (input_location, "parameter passing for argument of type "
! 	    "%qT changed in GCC 9.1", type);
  
!   return MIN (MAX (alignment, PARM_BOUNDARY), STACK_BOUNDARY);
  }
  
  /* Implement TARGET_GET_RAW_RESULT_MODE and TARGET_GET_RAW_ARG_MODE.  */
--- 6721,6739 ----
  static unsigned int
  aarch64_function_arg_boundary (machine_mode mode, const_tree type)
  {
!   unsigned int abi_break;
    unsigned int alignment = aarch64_function_arg_alignment (mode, type,
  							   &abi_break);
+   alignment = MIN (MAX (alignment, PARM_BOUNDARY), STACK_BOUNDARY);
    if (abi_break & warn_psabi)
!     {
!       abi_break = MIN (MAX (abi_break, PARM_BOUNDARY), STACK_BOUNDARY);
!       if (alignment != abi_break)
! 	inform (input_location, "parameter passing for argument of type "
! 		"%qT changed in GCC 9.1", type);
!     }
  
!   return alignment;
  }
  
  /* Implement TARGET_GET_RAW_RESULT_MODE and TARGET_GET_RAW_ARG_MODE.  */
*************** aarch64_libgcc_cmp_return_mode (void)
*** 6370,6379 ****
  #error Cannot use simple address calculation for stack probing
  #endif
  
- /* The pair of scratch registers used for stack probing.  */
- #define PROBE_STACK_FIRST_REG  R9_REGNUM
- #define PROBE_STACK_SECOND_REG R10_REGNUM
- 
  /* Emit code to probe a range of stack addresses from FIRST to FIRST+POLY_SIZE,
     inclusive.  These are offsets from the current stack pointer.  */
  
--- 6845,6850 ----
*************** aarch64_emit_probe_stack_range (HOST_WID
*** 6387,6393 ****
        return;
      }
  
!   rtx reg1 = gen_rtx_REG (Pmode, PROBE_STACK_FIRST_REG);
  
    /* See the same assertion on PROBE_INTERVAL above.  */
    gcc_assert ((first % ARITH_FACTOR) == 0);
--- 6858,6864 ----
        return;
      }
  
!   rtx reg1 = gen_rtx_REG (Pmode, PROBE_STACK_FIRST_REGNUM);
  
    /* See the same assertion on PROBE_INTERVAL above.  */
    gcc_assert ((first % ARITH_FACTOR) == 0);
*************** aarch64_emit_probe_stack_range (HOST_WID
*** 6445,6451 ****
       equality test for the loop condition.  */
    else
      {
!       rtx reg2 = gen_rtx_REG (Pmode, PROBE_STACK_SECOND_REG);
  
        /* Step 1: round SIZE to the previous multiple of the interval.  */
  
--- 6916,6922 ----
       equality test for the loop condition.  */
    else
      {
!       rtx reg2 = gen_rtx_REG (Pmode, PROBE_STACK_SECOND_REGNUM);
  
        /* Step 1: round SIZE to the previous multiple of the interval.  */
  
*************** aarch64_layout_frame (void)
*** 6738,6744 ****
  	&& !crtl->abi->clobbers_full_reg_p (regno))
        frame.reg_offset[regno] = SLOT_REQUIRED;
  
!   /* With stack-clash, LR must be saved in non-leaf functions.  */
    gcc_assert (crtl->is_leaf
  	      || maybe_ne (frame.reg_offset[R30_REGNUM], SLOT_NOT_REQUIRED));
  
--- 7209,7217 ----
  	&& !crtl->abi->clobbers_full_reg_p (regno))
        frame.reg_offset[regno] = SLOT_REQUIRED;
  
!   /* With stack-clash, LR must be saved in non-leaf functions.  The saving of
!      LR counts as an implicit probe which allows us to maintain the invariant
!      described in the comment at expand_prologue.  */
    gcc_assert (crtl->is_leaf
  	      || maybe_ne (frame.reg_offset[R30_REGNUM], SLOT_NOT_REQUIRED));
  
*************** aarch64_layout_frame (void)
*** 6956,6961 ****
--- 7429,7442 ----
  			+ frame.sve_callee_adjust
  			+ frame.final_adjust, frame.frame_size));
  
+   if (!frame.emit_frame_chain && frame.callee_adjust == 0)
+     {
+       /* We've decided not to associate any register saves with the initial
+ 	 stack allocation.  */
+       frame.wb_candidate1 = INVALID_REGNUM;
+       frame.wb_candidate2 = INVALID_REGNUM;
+     }
+ 
    frame.laid_out = true;
  }
  
*************** aarch64_gen_store_pair (machine_mode mod
*** 7116,7121 ****
--- 7597,7608 ----
      case E_TFmode:
        return gen_store_pair_dw_tftf (mem1, reg1, mem2, reg2);
  
+     case E_V4SImode:
+       return gen_vec_store_pairv4siv4si (mem1, reg1, mem2, reg2);
+ 
+     case E_V16QImode:
+       return gen_vec_store_pairv16qiv16qi (mem1, reg1, mem2, reg2);
+ 
      default:
        gcc_unreachable ();
      }
*************** aarch64_gen_load_pair (machine_mode mode
*** 7139,7144 ****
--- 7626,7634 ----
      case E_TFmode:
        return gen_load_pair_dw_tftf (reg1, mem1, reg2, mem2);
  
+     case E_V4SImode:
+       return gen_load_pairv4siv4si (reg1, mem1, reg2, mem2);
+ 
      default:
        gcc_unreachable ();
      }
*************** offset_4bit_signed_scaled_p (machine_mod
*** 7420,7426 ****
  	  && IN_RANGE (multiple, -8, 7));
  }
  
! /* Return true if OFFSET is a unsigned 6-bit value multiplied by the size
     of MODE.  */
  
  static inline bool
--- 7910,7927 ----
  	  && IN_RANGE (multiple, -8, 7));
  }
  
! /* Return true if OFFSET is a signed 6-bit value multiplied by the size
!    of MODE.  */
! 
! static inline bool
! offset_6bit_signed_scaled_p (machine_mode mode, poly_int64 offset)
! {
!   HOST_WIDE_INT multiple;
!   return (constant_multiple_p (offset, GET_MODE_SIZE (mode), &multiple)
! 	  && IN_RANGE (multiple, -32, 31));
! }
! 
! /* Return true if OFFSET is an unsigned 6-bit value multiplied by the size
     of MODE.  */
  
  static inline bool
*************** aarch64_expand_epilogue (bool for_sibcal
*** 8398,8403 ****
--- 8899,8908 ----
    if (callee_adjust != 0)
      aarch64_pop_regs (reg1, reg2, callee_adjust, &cfi_ops);
  
+   /* If we have no register restore information, the CFA must have been
+      defined in terms of the stack pointer since the end of the prologue.  */
+   gcc_assert (cfi_ops || !frame_pointer_needed);
+ 
    if (cfi_ops && (callee_adjust != 0 || maybe_gt (initial_adjust, 65536)))
      {
        /* Emit delayed restores and set the CFA to be SP + initial_adjust.  */
*************** aarch64_tls_referenced_p (rtx x)
*** 8612,8618 ****
    FOR_EACH_SUBRTX (iter, array, x, ALL)
      {
        const_rtx x = *iter;
!       if (GET_CODE (x) == SYMBOL_REF && SYMBOL_REF_TLS_MODEL (x) != 0)
  	return true;
        /* Don't recurse into UNSPEC_TLS looking for TLS symbols; these are
  	 TLS offsets, not real symbol references.  */
--- 9117,9123 ----
    FOR_EACH_SUBRTX (iter, array, x, ALL)
      {
        const_rtx x = *iter;
!       if (SYMBOL_REF_P (x) && SYMBOL_REF_TLS_MODEL (x) != 0)
  	return true;
        /* Don't recurse into UNSPEC_TLS looking for TLS symbols; these are
  	 TLS offsets, not real symbol references.  */
*************** aarch64_cannot_force_const_mem (machine_
*** 8838,8844 ****
  
    poly_int64 offset;
    rtx base = strip_offset_and_salt (x, &offset);
!   if (GET_CODE (base) == SYMBOL_REF || GET_CODE (base) == LABEL_REF)
      {
        /* We checked for POLY_INT_CST offsets above.  */
        if (aarch64_classify_symbol (base, offset.to_constant ())
--- 9343,9349 ----
  
    poly_int64 offset;
    rtx base = strip_offset_and_salt (x, &offset);
!   if (SYMBOL_REF_P (base) || LABEL_REF_P (base))
      {
        /* We checked for POLY_INT_CST offsets above.  */
        if (aarch64_classify_symbol (base, offset.to_constant ())
*************** static bool
*** 8924,8930 ****
  aarch64_base_register_rtx_p (rtx x, bool strict_p)
  {
    if (!strict_p
!       && GET_CODE (x) == SUBREG
        && contains_reg_of_mode[GENERAL_REGS][GET_MODE (SUBREG_REG (x))])
      x = SUBREG_REG (x);
  
--- 9429,9435 ----
  aarch64_base_register_rtx_p (rtx x, bool strict_p)
  {
    if (!strict_p
!       && SUBREG_P (x)
        && contains_reg_of_mode[GENERAL_REGS][GET_MODE (SUBREG_REG (x))])
      x = SUBREG_REG (x);
  
*************** aarch64_classify_index (struct aarch64_a
*** 8943,8949 ****
    int shift;
  
    /* (reg:P) */
!   if ((REG_P (x) || GET_CODE (x) == SUBREG)
        && GET_MODE (x) == Pmode)
      {
        type = ADDRESS_REG_REG;
--- 9448,9454 ----
    int shift;
  
    /* (reg:P) */
!   if ((REG_P (x) || SUBREG_P (x))
        && GET_MODE (x) == Pmode)
      {
        type = ADDRESS_REG_REG;
*************** aarch64_classify_index (struct aarch64_a
*** 8987,9008 ****
        index = XEXP (XEXP (x, 0), 0);
        shift = INTVAL (XEXP (x, 1));
      }
-   /* (sign_extract:DI (mult:DI (reg:DI) (const_int scale)) 32+shift 0) */
-   else if ((GET_CODE (x) == SIGN_EXTRACT
- 	    || GET_CODE (x) == ZERO_EXTRACT)
- 	   && GET_MODE (x) == DImode
- 	   && GET_CODE (XEXP (x, 0)) == MULT
- 	   && GET_MODE (XEXP (XEXP (x, 0), 0)) == DImode
- 	   && CONST_INT_P (XEXP (XEXP (x, 0), 1)))
-     {
-       type = (GET_CODE (x) == SIGN_EXTRACT)
- 	? ADDRESS_REG_SXTW : ADDRESS_REG_UXTW;
-       index = XEXP (XEXP (x, 0), 0);
-       shift = exact_log2 (INTVAL (XEXP (XEXP (x, 0), 1)));
-       if (INTVAL (XEXP (x, 1)) != 32 + shift
- 	  || INTVAL (XEXP (x, 2)) != 0)
- 	shift = -1;
-     }
    /* (and:DI (mult:DI (reg:DI) (const_int scale))
       (const_int 0xffffffff<<shift)) */
    else if (GET_CODE (x) == AND
--- 9492,9497 ----
*************** aarch64_classify_index (struct aarch64_a
*** 9018,9039 ****
        if (INTVAL (XEXP (x, 1)) != (HOST_WIDE_INT)0xffffffff << shift)
  	shift = -1;
      }
-   /* (sign_extract:DI (ashift:DI (reg:DI) (const_int shift)) 32+shift 0) */
-   else if ((GET_CODE (x) == SIGN_EXTRACT
- 	    || GET_CODE (x) == ZERO_EXTRACT)
- 	   && GET_MODE (x) == DImode
- 	   && GET_CODE (XEXP (x, 0)) == ASHIFT
- 	   && GET_MODE (XEXP (XEXP (x, 0), 0)) == DImode
- 	   && CONST_INT_P (XEXP (XEXP (x, 0), 1)))
-     {
-       type = (GET_CODE (x) == SIGN_EXTRACT)
- 	? ADDRESS_REG_SXTW : ADDRESS_REG_UXTW;
-       index = XEXP (XEXP (x, 0), 0);
-       shift = INTVAL (XEXP (XEXP (x, 0), 1));
-       if (INTVAL (XEXP (x, 1)) != 32 + shift
- 	  || INTVAL (XEXP (x, 2)) != 0)
- 	shift = -1;
-     }
    /* (and:DI (ashift:DI (reg:DI) (const_int shift))
       (const_int 0xffffffff<<shift)) */
    else if (GET_CODE (x) == AND
--- 9507,9512 ----
*************** aarch64_classify_index (struct aarch64_a
*** 9073,9079 ****
      return false;
  
    if (!strict_p
!       && GET_CODE (index) == SUBREG
        && contains_reg_of_mode[GENERAL_REGS][GET_MODE (SUBREG_REG (index))])
      index = SUBREG_REG (index);
  
--- 9546,9552 ----
      return false;
  
    if (!strict_p
!       && SUBREG_P (index)
        && contains_reg_of_mode[GENERAL_REGS][GET_MODE (SUBREG_REG (index))])
      index = SUBREG_REG (index);
  
*************** aarch64_classify_address (struct aarch64
*** 9369,9376 ****
  	{
  	  poly_int64 offset;
  	  rtx sym = strip_offset_and_salt (x, &offset);
! 	  return ((GET_CODE (sym) == LABEL_REF
! 		   || (GET_CODE (sym) == SYMBOL_REF
  		       && CONSTANT_POOL_ADDRESS_P (sym)
  		       && aarch64_pcrelative_literal_loads)));
  	}
--- 9842,9849 ----
  	{
  	  poly_int64 offset;
  	  rtx sym = strip_offset_and_salt (x, &offset);
! 	  return ((LABEL_REF_P (sym)
! 		   || (SYMBOL_REF_P (sym)
  		       && CONSTANT_POOL_ADDRESS_P (sym)
  		       && aarch64_pcrelative_literal_loads)));
  	}
*************** aarch64_classify_address (struct aarch64
*** 9386,9392 ****
  	  poly_int64 offset;
  	  HOST_WIDE_INT const_offset;
  	  rtx sym = strip_offset_and_salt (info->offset, &offset);
! 	  if (GET_CODE (sym) == SYMBOL_REF
  	      && offset.is_constant (&const_offset)
  	      && (aarch64_classify_symbol (sym, const_offset)
  		  == SYMBOL_SMALL_ABSOLUTE))
--- 9859,9865 ----
  	  poly_int64 offset;
  	  HOST_WIDE_INT const_offset;
  	  rtx sym = strip_offset_and_salt (info->offset, &offset);
! 	  if (SYMBOL_REF_P (sym)
  	      && offset.is_constant (&const_offset)
  	      && (aarch64_classify_symbol (sym, const_offset)
  		  == SYMBOL_SMALL_ABSOLUTE))
*************** aarch64_symbolic_address_p (rtx x)
*** 9448,9454 ****
  {
    poly_int64 offset;
    x = strip_offset_and_salt (x, &offset);
!   return GET_CODE (x) == SYMBOL_REF || GET_CODE (x) == LABEL_REF;
  }
  
  /* Classify the base of symbolic expression X.  */
--- 9921,9927 ----
  {
    poly_int64 offset;
    x = strip_offset_and_salt (x, &offset);
!   return SYMBOL_REF_P (x) || LABEL_REF_P (x);
  }
  
  /* Classify the base of symbolic expression X.  */
*************** aarch64_reinterpret_float_as_int (rtx va
*** 9573,9579 ****
      }
  
    scalar_float_mode mode;
!   if (GET_CODE (value) != CONST_DOUBLE
        || !is_a <scalar_float_mode> (GET_MODE (value), &mode)
        || GET_MODE_BITSIZE (mode) > HOST_BITS_PER_WIDE_INT
        /* Only support up to DF mode.  */
--- 10046,10052 ----
      }
  
    scalar_float_mode mode;
!   if (!CONST_DOUBLE_P (value)
        || !is_a <scalar_float_mode> (GET_MODE (value), &mode)
        || GET_MODE_BITSIZE (mode) > HOST_BITS_PER_WIDE_INT
        /* Only support up to DF mode.  */
*************** aarch64_float_const_rtx_p (rtx x)
*** 9613,9619 ****
       mov/movk pairs over ldr/adrp pairs.  */
    unsigned HOST_WIDE_INT ival;
  
!   if (GET_CODE (x) == CONST_DOUBLE
        && SCALAR_FLOAT_MODE_P (mode)
        && aarch64_reinterpret_float_as_int (x, &ival))
      {
--- 10086,10092 ----
       mov/movk pairs over ldr/adrp pairs.  */
    unsigned HOST_WIDE_INT ival;
  
!   if (CONST_DOUBLE_P (x)
        && SCALAR_FLOAT_MODE_P (mode)
        && aarch64_reinterpret_float_as_int (x, &ival))
      {
*************** aarch64_can_const_movi_rtx_p (rtx x, mac
*** 9652,9658 ****
    scalar_int_mode imode;
    unsigned HOST_WIDE_INT ival;
  
!   if (GET_CODE (x) == CONST_DOUBLE
        && SCALAR_FLOAT_MODE_P (mode))
      {
        if (!aarch64_reinterpret_float_as_int (x, &ival))
--- 10125,10131 ----
    scalar_int_mode imode;
    unsigned HOST_WIDE_INT ival;
  
!   if (CONST_DOUBLE_P (x)
        && SCALAR_FLOAT_MODE_P (mode))
      {
        if (!aarch64_reinterpret_float_as_int (x, &ival))
*************** aarch64_can_const_movi_rtx_p (rtx x, mac
*** 9664,9670 ****
  
        imode = int_mode_for_mode (mode).require ();
      }
!   else if (GET_CODE (x) == CONST_INT
  	   && is_a <scalar_int_mode> (mode, &imode))
      ival = INTVAL (x);
    else
--- 10137,10143 ----
  
        imode = int_mode_for_mode (mode).require ();
      }
!   else if (CONST_INT_P (x)
  	   && is_a <scalar_int_mode> (mode, &imode))
      ival = INTVAL (x);
    else
*************** aarch64_select_cc_mode (RTX_CODE code, r
*** 9815,9821 ****
       the comparison will have to be swapped when we emit the assembly
       code.  */
    if ((mode_x == SImode || mode_x == DImode)
!       && (REG_P (y) || GET_CODE (y) == SUBREG || y == const0_rtx)
        && (code_x == ASHIFT || code_x == ASHIFTRT
  	  || code_x == LSHIFTRT
  	  || code_x == ZERO_EXTEND || code_x == SIGN_EXTEND))
--- 10288,10294 ----
       the comparison will have to be swapped when we emit the assembly
       code.  */
    if ((mode_x == SImode || mode_x == DImode)
!       && (REG_P (y) || SUBREG_P (y) || y == const0_rtx)
        && (code_x == ASHIFT || code_x == ASHIFTRT
  	  || code_x == LSHIFTRT
  	  || code_x == ZERO_EXTEND || code_x == SIGN_EXTEND))
*************** aarch64_select_cc_mode (RTX_CODE code, r
*** 9824,9830 ****
    /* Similarly for a negated operand, but we can only do this for
       equalities.  */
    if ((mode_x == SImode || mode_x == DImode)
!       && (REG_P (y) || GET_CODE (y) == SUBREG)
        && (code == EQ || code == NE)
        && code_x == NEG)
      return CC_Zmode;
--- 10297,10303 ----
    /* Similarly for a negated operand, but we can only do this for
       equalities.  */
    if ((mode_x == SImode || mode_x == DImode)
!       && (REG_P (y) || SUBREG_P (y))
        && (code == EQ || code == NE)
        && code_x == NEG)
      return CC_Zmode;
*************** aarch64_print_operand (FILE *f, rtx x, i
*** 10618,10624 ****
        {
  	machine_mode mode = GET_MODE (x);
  
! 	if (GET_CODE (x) != MEM
  	    || (code == 'y' && maybe_ne (GET_MODE_SIZE (mode), 16)))
  	  {
  	    output_operand_lossage ("invalid operand for '%%%c'", code);
--- 11091,11097 ----
        {
  	machine_mode mode = GET_MODE (x);
  
! 	if (!MEM_P (x)
  	    || (code == 'y' && maybe_ne (GET_MODE_SIZE (mode), 16)))
  	  {
  	    output_operand_lossage ("invalid operand for '%%%c'", code);
*************** aarch64_label_mentioned_p (rtx x)
*** 10781,10787 ****
    const char *fmt;
    int i;
  
!   if (GET_CODE (x) == LABEL_REF)
      return true;
  
    /* UNSPEC_TLS entries for a symbol include a LABEL_REF for the
--- 11254,11260 ----
    const char *fmt;
    int i;
  
!   if (LABEL_REF_P (x))
      return true;
  
    /* UNSPEC_TLS entries for a symbol include a LABEL_REF for the
*************** aarch64_secondary_reload (bool in_p ATTR
*** 10963,10969 ****
  
    /* If we have to disable direct literal pool loads and stores because the
       function is too big, then we need a scratch register.  */
!   if (MEM_P (x) && GET_CODE (x) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (x)
        && (SCALAR_FLOAT_MODE_P (GET_MODE (x))
  	  || targetm.vector_mode_supported_p (GET_MODE (x)))
        && !aarch64_pcrelative_literal_loads)
--- 11436,11442 ----
  
    /* If we have to disable direct literal pool loads and stores because the
       function is too big, then we need a scratch register.  */
!   if (MEM_P (x) && SYMBOL_REF_P (x) && CONSTANT_POOL_ADDRESS_P (x)
        && (SCALAR_FLOAT_MODE_P (GET_MODE (x))
  	  || targetm.vector_mode_supported_p (GET_MODE (x)))
        && !aarch64_pcrelative_literal_loads)
*************** aarch64_return_addr (int count, rtx fram
*** 11059,11089 ****
    return aarch64_return_addr_rtx ();
  }
  
- 
  static void
  aarch64_asm_trampoline_template (FILE *f)
  {
!   int offset1 = 24;
!   int offset2 = 28;
! 
!   if (aarch64_bti_enabled ())
!     {
!       asm_fprintf (f, "\thint\t34 // bti c\n");
!       offset1 -= 4;
!       offset2 -= 4;
!     }
  
    if (TARGET_ILP32)
      {
!       asm_fprintf (f, "\tldr\tw%d, .+%d\n", IP1_REGNUM - R0_REGNUM, offset1);
!       asm_fprintf (f, "\tldr\tw%d, .+%d\n", STATIC_CHAIN_REGNUM - R0_REGNUM,
! 		   offset1);
      }
    else
      {
!       asm_fprintf (f, "\tldr\t%s, .+%d\n", reg_names [IP1_REGNUM], offset1);
!       asm_fprintf (f, "\tldr\t%s, .+%d\n", reg_names [STATIC_CHAIN_REGNUM],
! 		   offset2);
      }
    asm_fprintf (f, "\tbr\t%s\n", reg_names [IP1_REGNUM]);
  
--- 11532,11554 ----
    return aarch64_return_addr_rtx ();
  }
  
  static void
  aarch64_asm_trampoline_template (FILE *f)
  {
!   /* Even if the current function doesn't have branch protection, some
!      later function might, so since this template is only generated once
!      we have to add a BTI just in case. */
!   asm_fprintf (f, "\thint\t34 // bti c\n");
  
    if (TARGET_ILP32)
      {
!       asm_fprintf (f, "\tldr\tw%d, .+20\n", IP1_REGNUM - R0_REGNUM);
!       asm_fprintf (f, "\tldr\tw%d, .+20\n", STATIC_CHAIN_REGNUM - R0_REGNUM);
      }
    else
      {
!       asm_fprintf (f, "\tldr\t%s, .+20\n", reg_names [IP1_REGNUM]);
!       asm_fprintf (f, "\tldr\t%s, .+24\n", reg_names [STATIC_CHAIN_REGNUM]);
      }
    asm_fprintf (f, "\tbr\t%s\n", reg_names [IP1_REGNUM]);
  
*************** aarch64_asm_trampoline_template (FILE *f
*** 11098,11109 ****
       happen in the future.  */
    asm_fprintf (f, "\tdsb\tsy\n\tisb\n");
  
-   /* The trampoline needs an extra padding instruction.  In case if BTI is
-      enabled the padding instruction is replaced by the BTI instruction at
-      the beginning.  */
-   if (!aarch64_bti_enabled ())
-     assemble_aligned_integer (4, const0_rtx);
- 
    assemble_aligned_integer (POINTER_BYTES, const0_rtx);
    assemble_aligned_integer (POINTER_BYTES, const0_rtx);
  }
--- 11563,11568 ----
*************** aarch64_trampoline_init (rtx m_tramp, tr
*** 11133,11142 ****
    /* XXX We should really define a "clear_cache" pattern and use
       gen_clear_cache().  */
    a_tramp = XEXP (m_tramp, 0);
!   emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__clear_cache"),
! 		     LCT_NORMAL, VOIDmode, a_tramp, ptr_mode,
! 		     plus_constant (ptr_mode, a_tramp, TRAMPOLINE_SIZE),
! 		     ptr_mode);
  }
  
  static unsigned char
--- 11592,11601 ----
    /* XXX We should really define a "clear_cache" pattern and use
       gen_clear_cache().  */
    a_tramp = XEXP (m_tramp, 0);
!   maybe_emit_call_builtin___clear_cache (a_tramp,
! 					 plus_constant (ptr_mode,
! 							a_tramp,
! 							TRAMPOLINE_SIZE));
  }
  
  static unsigned char
*************** aarch64_preferred_reload_class (rtx x, r
*** 11208,11214 ****
        rtx lhs = XEXP (x, 0);
  
        /* Look through a possible SUBREG introduced by ILP32.  */
!       if (GET_CODE (lhs) == SUBREG)
  	lhs = SUBREG_REG (lhs);
  
        gcc_assert (REG_P (lhs));
--- 11667,11673 ----
        rtx lhs = XEXP (x, 0);
  
        /* Look through a possible SUBREG introduced by ILP32.  */
!       if (SUBREG_P (lhs))
  	lhs = SUBREG_REG (lhs);
  
        gcc_assert (REG_P (lhs));
*************** aarch64_strip_extend (rtx x, bool strip_
*** 11425,11440 ****
    if (!is_a <scalar_int_mode> (GET_MODE (op), &mode))
      return op;
  
-   /* Zero and sign extraction of a widened value.  */
-   if ((GET_CODE (op) == ZERO_EXTRACT || GET_CODE (op) == SIGN_EXTRACT)
-       && XEXP (op, 2) == const0_rtx
-       && GET_CODE (XEXP (op, 0)) == MULT
-       && aarch64_is_extend_from_extract (mode, XEXP (XEXP (op, 0), 1),
- 					 XEXP (op, 1)))
-     return XEXP (XEXP (op, 0), 0);
- 
-   /* It can also be represented (for zero-extend) as an AND with an
-      immediate.  */
    if (GET_CODE (op) == AND
        && GET_CODE (XEXP (op, 0)) == MULT
        && CONST_INT_P (XEXP (XEXP (op, 0), 1))
--- 11884,11889 ----
*************** aarch64_rtx_mult_cost (rtx x, enum rtx_c
*** 11524,11530 ****
    op1 = XEXP (x, 1);
  
    if (VECTOR_MODE_P (mode))
!     mode = GET_MODE_INNER (mode);
  
    /* Integer multiply/fma.  */
    if (GET_MODE_CLASS (mode) == MODE_INT)
--- 11973,12005 ----
    op1 = XEXP (x, 1);
  
    if (VECTOR_MODE_P (mode))
!     {
!       unsigned int vec_flags = aarch64_classify_vector_mode (mode);
!       if (vec_flags & VEC_ADVSIMD)
! 	{
! 	  /* The by-element versions of the instruction have the same costs as
! 	     the normal 3-vector version.  So don't add the costs of the
! 	     duplicate into the costs of the multiply.  We make an assumption
! 	     that the input to the VEC_DUPLICATE is already on the FP & SIMD
! 	     side.  This means costing of a MUL by element pre RA is a bit
! 	     optimistic.  */
! 	  if (GET_CODE (op0) == VEC_DUPLICATE)
! 	    op0 = XEXP (op0, 0);
! 	  else if (GET_CODE (op1) == VEC_DUPLICATE)
! 	    op1 = XEXP (op1, 0);
! 	}
!       cost += rtx_cost (op0, mode, MULT, 0, speed);
!       cost += rtx_cost (op1, mode, MULT, 1, speed);
!       if (speed)
! 	{
! 	  if (GET_CODE (x) == MULT)
! 	    cost += extra_cost->vect.mult;
! 	  /* This is to catch the SSRA costing currently flowing here.  */
! 	  else
! 	    cost += extra_cost->vect.alu;
! 	}
!       return cost;
!     }
  
    /* Integer multiply/fma.  */
    if (GET_MODE_CLASS (mode) == MODE_INT)
*************** aarch64_address_cost (rtx x,
*** 11662,11668 ****
  
    if (!aarch64_classify_address (&info, x, mode, false))
      {
!       if (GET_CODE (x) == CONST || GET_CODE (x) == SYMBOL_REF)
  	{
  	  /* This is a CONST or SYMBOL ref which will be split
  	     in a different way depending on the code model in use.
--- 12137,12143 ----
  
    if (!aarch64_classify_address (&info, x, mode, false))
      {
!       if (GET_CODE (x) == CONST || SYMBOL_REF_P (x))
  	{
  	  /* This is a CONST or SYMBOL ref which will be split
  	     in a different way depending on the code model in use.
*************** aarch64_address_cost (rtx x,
*** 11695,11701 ****
  	if (c == PRE_INC || c == PRE_DEC || c == PRE_MODIFY)
  	  cost += addr_cost->pre_modify;
  	else if (c == POST_INC || c == POST_DEC || c == POST_MODIFY)
! 	  cost += addr_cost->post_modify;
  	else
  	  gcc_unreachable ();
  
--- 12170,12183 ----
  	if (c == PRE_INC || c == PRE_DEC || c == PRE_MODIFY)
  	  cost += addr_cost->pre_modify;
  	else if (c == POST_INC || c == POST_DEC || c == POST_MODIFY)
! 	  {
! 	    if (mode == CImode)
! 	      cost += addr_cost->post_modify_ld3_st3;
! 	    else if (mode == XImode)
! 	      cost += addr_cost->post_modify_ld4_st4;
! 	    else
! 	      cost += addr_cost->post_modify;
! 	  }
  	else
  	  gcc_unreachable ();
  
*************** aarch64_branch_cost (bool speed_p, bool
*** 11753,11787 ****
      return branch_costs->unpredictable;
  }
  
! /* Return true if the RTX X in mode MODE is a zero or sign extract
     usable in an ADD or SUB (extended register) instruction.  */
  static bool
! aarch64_rtx_arith_op_extract_p (rtx x, scalar_int_mode mode)
  {
-   /* Catch add with a sign extract.
-      This is add_<optab><mode>_multp2.  */
-   if (GET_CODE (x) == SIGN_EXTRACT
-       || GET_CODE (x) == ZERO_EXTRACT)
-     {
-       rtx op0 = XEXP (x, 0);
-       rtx op1 = XEXP (x, 1);
-       rtx op2 = XEXP (x, 2);
- 
-       if (GET_CODE (op0) == MULT
- 	  && CONST_INT_P (op1)
- 	  && op2 == const0_rtx
- 	  && CONST_INT_P (XEXP (op0, 1))
- 	  && aarch64_is_extend_from_extract (mode,
- 					     XEXP (op0, 1),
- 					     op1))
- 	{
- 	  return true;
- 	}
-     }
    /* The simple case <ARITH>, XD, XN, XM, [us]xt.
       No shift.  */
!   else if (GET_CODE (x) == SIGN_EXTEND
! 	   || GET_CODE (x) == ZERO_EXTEND)
      return REG_P (XEXP (x, 0));
  
    return false;
--- 12235,12249 ----
      return branch_costs->unpredictable;
  }
  
! /* Return true if X is a zero or sign extract
     usable in an ADD or SUB (extended register) instruction.  */
  static bool
! aarch64_rtx_arith_op_extract_p (rtx x)
  {
    /* The simple case <ARITH>, XD, XN, XM, [us]xt.
       No shift.  */
!   if (GET_CODE (x) == SIGN_EXTEND
!       || GET_CODE (x) == ZERO_EXTEND)
      return REG_P (XEXP (x, 0));
  
    return false;
*************** aarch64_if_then_else_costs (rtx op0, rtx
*** 11929,11936 ****
  	  if (speed)
  	    {
  	      machine_mode mode = GET_MODE (XEXP (op1, 0));
- 	      const struct cpu_cost_table *extra_cost
- 		= aarch64_tune_params.insn_extra_cost;
  
  	      if (GET_MODE_CLASS (mode) == MODE_INT)
  		*cost += extra_cost->alu.arith;
--- 12391,12396 ----
*************** aarch64_if_then_else_costs (rtx op0, rtx
*** 11954,11959 ****
--- 12414,12426 ----
  	  op1 = XEXP (op1, 0);
  	  op2 = XEXP (op2, 0);
  	}
+       else if (GET_CODE (op1) == ZERO_EXTEND && op2 == const0_rtx)
+ 	{
+ 	  inner = XEXP (op1, 0);
+ 	  if (GET_CODE (inner) == NEG || GET_CODE (inner) == NOT)
+ 	    /* CSINV/NEG with zero extend + const 0 (*csinv3_uxtw_insn3).  */
+ 	    op1 = XEXP (inner, 0);
+ 	}
  
        *cost += rtx_cost (op1, VOIDmode, IF_THEN_ELSE, 1, speed);
        *cost += rtx_cost (op2, VOIDmode, IF_THEN_ELSE, 2, speed);
*************** cost_minus:
*** 12464,12471 ****
  	  }
  
  	/* Look for SUB (extended register).  */
! 	if (is_a <scalar_int_mode> (mode, &int_mode)
! 	    && aarch64_rtx_arith_op_extract_p (op1, int_mode))
  	  {
  	    if (speed)
  	      *cost += extra_cost->alu.extend_arith;
--- 12931,12938 ----
  	  }
  
  	/* Look for SUB (extended register).  */
! 	if (is_a <scalar_int_mode> (mode)
! 	    && aarch64_rtx_arith_op_extract_p (op1))
  	  {
  	    if (speed)
  	      *cost += extra_cost->alu.extend_arith;
*************** cost_plus:
*** 12554,12561 ****
  	*cost += rtx_cost (op1, mode, PLUS, 1, speed);
  
  	/* Look for ADD (extended register).  */
! 	if (is_a <scalar_int_mode> (mode, &int_mode)
! 	    && aarch64_rtx_arith_op_extract_p (op0, int_mode))
  	  {
  	    if (speed)
  	      *cost += extra_cost->alu.extend_arith;
--- 13021,13028 ----
  	*cost += rtx_cost (op1, mode, PLUS, 1, speed);
  
  	/* Look for ADD (extended register).  */
! 	if (is_a <scalar_int_mode> (mode)
! 	    && aarch64_rtx_arith_op_extract_p (op0))
  	  {
  	    if (speed)
  	      *cost += extra_cost->alu.extend_arith;
*************** aarch64_init_builtins ()
*** 13449,13454 ****
--- 13916,13924 ----
  {
    aarch64_general_init_builtins ();
    aarch64_sve::init_builtins ();
+ #ifdef SUBTARGET_INIT_BUILTINS
+   SUBTARGET_INIT_BUILTINS;
+ #endif
  }
  
  /* Implement TARGET_FOLD_BUILTIN.  */
*************** aarch64_first_cycle_multipass_dfa_lookah
*** 13815,13820 ****
--- 14285,14549 ----
  
  /* Vectorizer cost model target hooks.  */
  
+ /* Information about how the CPU would issue the scalar, Advanced SIMD
+    or SVE version of a vector loop, using the scheme defined by the
+    aarch64_base_vec_issue_info hierarchy of structures.  */
+ struct aarch64_vec_op_count
+ {
+   void dump () const;
+ 
+   /* The number of individual "general" operations.  See the comments
+      in aarch64_base_vec_issue_info for details.  */
+   unsigned int general_ops = 0;
+ 
+   /* The number of load and store operations, under the same scheme
+      as above.  */
+   unsigned int loads = 0;
+   unsigned int stores = 0;
+ 
+   /* The minimum number of cycles needed to execute all loop-carried
+      operations, which in the vector code become associated with
+      reductions.  */
+   unsigned int reduction_latency = 0;
+ };
+ 
+ /* Extends aarch64_vec_op_count with SVE-specific information.  */
+ struct aarch64_sve_op_count : aarch64_vec_op_count
+ {
+   void dump () const;
+ 
+   /* The number of individual predicate operations.  See the comments
+      in aarch64_sve_vec_issue_info for details.  */
+   unsigned int pred_ops = 0;
+ };
+ 
+ /* Information about vector code that we're in the process of costing.  */
+ struct aarch64_vector_costs
+ {
+   /* The normal latency-based costs for each region (prologue, body and
+      epilogue), indexed by vect_cost_model_location.  */
+   unsigned int region[3] = {};
+ 
+   /* True if we have performed one-time initialization based on the vec_info.
+ 
+      This variable exists because the vec_info is not passed to the
+      init_cost hook.  We therefore have to defer initialization based on
+      it till later.  */
+   bool analyzed_vinfo = false;
+ 
+   /* True if we're costing a vector loop, false if we're costing block-level
+      vectorization.  */
+   bool is_loop = false;
+ 
+   /* True if we've seen an SVE operation that we cannot currently vectorize
+      using Advanced SIMD.  */
+   bool saw_sve_only_op = false;
+ 
+   /* - If VEC_FLAGS is zero then we're costing the original scalar code.
+      - If VEC_FLAGS & VEC_ADVSIMD is nonzero then we're costing Advanced
+        SIMD code.
+      - If VEC_FLAGS & VEC_ANY_SVE is nonzero then we're costing SVE code.  */
+   unsigned int vec_flags = 0;
+ 
+   /* On some CPUs, SVE and Advanced SIMD provide the same theoretical vector
+      throughput, such as 4x128 Advanced SIMD vs. 2x256 SVE.  In those
+      situations, we try to predict whether an Advanced SIMD implementation
+      of the loop could be completely unrolled and become straight-line code.
+      If so, it is generally better to use the Advanced SIMD version rather
+      than length-agnostic SVE, since the SVE loop would execute an unknown
+      number of times and so could not be completely unrolled in the same way.
+ 
+      If we're applying this heuristic, UNROLLED_ADVSIMD_NITERS is the
+      number of Advanced SIMD loop iterations that would be unrolled and
+      UNROLLED_ADVSIMD_STMTS estimates the total number of statements
+      in the unrolled loop.  Both values are zero if we're not applying
+      the heuristic.  */
+   unsigned HOST_WIDE_INT unrolled_advsimd_niters = 0;
+   unsigned HOST_WIDE_INT unrolled_advsimd_stmts = 0;
+ 
+   /* If we're vectorizing a loop that executes a constant number of times,
+      this variable gives the number of times that the vector loop would
+      iterate, otherwise it is zero.  */
+   uint64_t num_vector_iterations = 0;
+ 
+   /* Used only when vectorizing loops.  Estimates the number and kind of scalar
+      operations that would be needed to perform the same work as one iteration
+      of the vector loop.  */
+   aarch64_vec_op_count scalar_ops;
+ 
+   /* Used only when vectorizing loops.  If VEC_FLAGS & VEC_ADVSIMD,
+      this structure estimates the number and kind of operations that the
+      vector loop would contain.  If VEC_FLAGS & VEC_SVE, the structure
+      estimates what the equivalent Advanced SIMD-only code would need in
+      order to perform the same work as one iteration of the SVE loop.  */
+   aarch64_vec_op_count advsimd_ops;
+ 
+   /* Used only when vectorizing loops with SVE.  It estimates the number and
+      kind of operations that the SVE loop would contain.  */
+   aarch64_sve_op_count sve_ops;
+ 
+   /* Used to detect cases in which we end up costing the same load twice,
+      once to account for results that are actually used and once to account
+      for unused results.  */
+   hash_map<nofree_ptr_hash<_stmt_vec_info>, unsigned int> seen_loads;
+ };
+ 
+ /* Implement TARGET_VECTORIZE_INIT_COST.  */
+ void *
+ aarch64_init_cost (class loop *)
+ {
+   return new aarch64_vector_costs;
+ }
+ 
+ /* Return true if the current CPU should use the new costs defined
+    in GCC 11.  This should be removed for GCC 12 and above, with the
+    costs applying to all CPUs instead.  */
+ static bool
+ aarch64_use_new_vector_costs_p ()
+ {
+   return (aarch64_tune_params.extra_tuning_flags
+ 	  & AARCH64_EXTRA_TUNE_USE_NEW_VECTOR_COSTS);
+ }
+ 
+ /* Return the appropriate SIMD costs for vectors of type VECTYPE.  */
+ static const simd_vec_cost *
+ aarch64_simd_vec_costs (tree vectype)
+ {
+   const cpu_vector_cost *costs = aarch64_tune_params.vec_costs;
+   if (vectype != NULL
+       && aarch64_sve_mode_p (TYPE_MODE (vectype))
+       && costs->sve != NULL)
+     return costs->sve;
+   return costs->advsimd;
+ }
+ 
+ /* Return the appropriate SIMD costs for vectors with VEC_* flags FLAGS.  */
+ static const simd_vec_cost *
+ aarch64_simd_vec_costs_for_flags (unsigned int flags)
+ {
+   const cpu_vector_cost *costs = aarch64_tune_params.vec_costs;
+   if ((flags & VEC_ANY_SVE) && costs->sve)
+     return costs->sve;
+   return costs->advsimd;
+ }
+ 
+ /* Decide whether to use the unrolling heuristic described above
+    aarch64_vector_costs::unrolled_advsimd_niters, updating that
+    field if so.  LOOP_VINFO describes the loop that we're vectorizing
+    and COSTS are the costs that we're calculating for it.  */
+ static void
+ aarch64_record_potential_advsimd_unrolling (loop_vec_info loop_vinfo,
+ 					    aarch64_vector_costs *costs)
+ {
+   /* The heuristic only makes sense on targets that have the same
+      vector throughput for SVE and Advanced SIMD.  */
+   if (!(aarch64_tune_params.extra_tuning_flags
+ 	& AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT))
+     return;
+ 
+   /* We only want to apply the heuristic if LOOP_VINFO is being
+      vectorized for SVE.  */
+   if (!(costs->vec_flags & VEC_ANY_SVE))
+     return;
+ 
+   /* Check whether it is possible in principle to use Advanced SIMD
+      instead.  */
+   if (aarch64_autovec_preference == 2)
+     return;
+ 
+   /* We don't want to apply the heuristic to outer loops, since it's
+      harder to track two levels of unrolling.  */
+   if (LOOP_VINFO_LOOP (loop_vinfo)->inner)
+     return;
+ 
+   /* Only handle cases in which the number of Advanced SIMD iterations
+      would be known at compile time but the number of SVE iterations
+      would not.  */
+   if (!LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)
+       || aarch64_sve_vg.is_constant ())
+     return;
+ 
+   /* Guess how many times the Advanced SIMD loop would iterate and make
+      sure that it is within the complete unrolling limit.  Even if the
+      number of iterations is small enough, the number of statements might
+      not be, which is why we need to estimate the number of statements too.  */
+   unsigned int estimated_vq = aarch64_estimated_sve_vq ();
+   unsigned int advsimd_vf = CEIL (vect_vf_for_cost (loop_vinfo), estimated_vq);
+   unsigned HOST_WIDE_INT unrolled_advsimd_niters
+     = LOOP_VINFO_INT_NITERS (loop_vinfo) / advsimd_vf;
+   if (unrolled_advsimd_niters > (unsigned int) param_max_completely_peel_times)
+     return;
+ 
+   /* Record that we're applying the heuristic and should try to estimate
+      the number of statements in the Advanced SIMD loop.  */
+   costs->unrolled_advsimd_niters = unrolled_advsimd_niters;
+ }
+ 
+ /* Do one-time initialization of COSTS given that we're costing the loop
+    vectorization described by LOOP_VINFO.  */
+ static void
+ aarch64_analyze_loop_vinfo (loop_vec_info loop_vinfo,
+ 			    aarch64_vector_costs *costs)
+ {
+   costs->is_loop = true;
+ 
+   /* Record the number of times that the vector loop would execute,
+      if known.  */
+   class loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
+   auto scalar_niters = max_stmt_executions_int (loop);
+   if (scalar_niters >= 0)
+     {
+       unsigned int vf = vect_vf_for_cost (loop_vinfo);
+       if (LOOP_VINFO_MASKS (loop_vinfo).is_empty ())
+ 	costs->num_vector_iterations = scalar_niters / vf;
+       else
+ 	costs->num_vector_iterations = CEIL (scalar_niters, vf);
+     }
+ 
+   /* Detect whether we're costing the scalar code or the vector code.
+      This is a bit hacky: it would be better if the vectorizer told
+      us directly.
+ 
+      If we're costing the vector code, record whether we're vectorizing
+      for Advanced SIMD or SVE.  */
+   if (costs == LOOP_VINFO_TARGET_COST_DATA (loop_vinfo))
+     costs->vec_flags = aarch64_classify_vector_mode (loop_vinfo->vector_mode);
+   else
+     costs->vec_flags = 0;
+ 
+   /* Detect whether we're vectorizing for SVE and should
+      apply the unrolling heuristic described above
+      aarch64_vector_costs::unrolled_advsimd_niters.  */
+   aarch64_record_potential_advsimd_unrolling (loop_vinfo, costs);
+ 
+   /* Record the issue information for any SVE WHILE instructions that the
+      loop needs.  */
+   auto *issue_info = aarch64_tune_params.vec_costs->issue_info;
+   if (issue_info
+       && issue_info->sve
+       && !LOOP_VINFO_MASKS (loop_vinfo).is_empty ())
+     {
+       unsigned int num_masks = 0;
+       rgroup_controls *rgm;
+       unsigned int num_vectors_m1;
+       FOR_EACH_VEC_ELT (LOOP_VINFO_MASKS (loop_vinfo), num_vectors_m1, rgm)
+ 	if (rgm->type)
+ 	  num_masks += num_vectors_m1 + 1;
+       costs->sve_ops.pred_ops += num_masks * issue_info->sve->while_pred_ops;
+     }
+ }
+ 
+ /* Do one-time initialization of COSTS given that we're costing the block
+    vectorization described by BB_VINFO.  */
+ static void
+ aarch64_analyze_bb_vinfo (bb_vec_info bb_vinfo, aarch64_vector_costs *costs)
+ {
+   /* Unfortunately, there's no easy way of telling whether we're costing
+      the vector code or the scalar code, so just assume that we're costing
+      the vector code.  */
+   costs->vec_flags = aarch64_classify_vector_mode (bb_vinfo->vector_mode);
+ }
+ 
  /* Implement targetm.vectorize.builtin_vectorization_cost.  */
  static int
  aarch64_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost,
*************** aarch64_builtin_vectorization_cost (enum
*** 13828,13833 ****
--- 14557,14564 ----
    if (vectype != NULL)
      fp = FLOAT_TYPE_P (vectype);
  
+   const simd_vec_cost *simd_costs = aarch64_simd_vec_costs (vectype);
+ 
    switch (type_of_cost)
      {
        case scalar_stmt:
*************** aarch64_builtin_vectorization_cost (enum
*** 13840,13866 ****
  	return costs->scalar_store_cost;
  
        case vector_stmt:
! 	return fp ? costs->vec_fp_stmt_cost : costs->vec_int_stmt_cost;
  
        case vector_load:
! 	return costs->vec_align_load_cost;
  
        case vector_store:
! 	return costs->vec_store_cost;
  
        case vec_to_scalar:
! 	return costs->vec_to_scalar_cost;
  
        case scalar_to_vec:
! 	return costs->scalar_to_vec_cost;
  
        case unaligned_load:
        case vector_gather_load:
! 	return costs->vec_unalign_load_cost;
  
        case unaligned_store:
        case vector_scatter_store:
! 	return costs->vec_unalign_store_cost;
  
        case cond_branch_taken:
  	return costs->cond_taken_branch_cost;
--- 14571,14598 ----
  	return costs->scalar_store_cost;
  
        case vector_stmt:
! 	return fp ? simd_costs->fp_stmt_cost
! 		  : simd_costs->int_stmt_cost;
  
        case vector_load:
! 	return simd_costs->align_load_cost;
  
        case vector_store:
! 	return simd_costs->store_cost;
  
        case vec_to_scalar:
! 	return simd_costs->vec_to_scalar_cost;
  
        case scalar_to_vec:
! 	return simd_costs->scalar_to_vec_cost;
  
        case unaligned_load:
        case vector_gather_load:
! 	return simd_costs->unalign_load_cost;
  
        case unaligned_store:
        case vector_scatter_store:
! 	return simd_costs->unalign_store_cost;
  
        case cond_branch_taken:
  	return costs->cond_taken_branch_cost;
*************** aarch64_builtin_vectorization_cost (enum
*** 13869,13878 ****
  	return costs->cond_not_taken_branch_cost;
  
        case vec_perm:
! 	return costs->vec_permute_cost;
  
        case vec_promote_demote:
! 	return fp ? costs->vec_fp_stmt_cost : costs->vec_int_stmt_cost;
  
        case vec_construct:
  	elements = estimated_poly_value (TYPE_VECTOR_SUBPARTS (vectype));
--- 14601,14611 ----
  	return costs->cond_not_taken_branch_cost;
  
        case vec_perm:
! 	return simd_costs->permute_cost;
  
        case vec_promote_demote:
! 	return fp ? simd_costs->fp_stmt_cost
! 		  : simd_costs->int_stmt_cost;
  
        case vec_construct:
  	elements = estimated_poly_value (TYPE_VECTOR_SUBPARTS (vectype));
*************** aarch64_builtin_vectorization_cost (enum
*** 13883,13888 ****
--- 14616,14689 ----
      }
  }
  
+ /* Return true if STMT_INFO represents part of a reduction.  */
+ static bool
+ aarch64_is_reduction (stmt_vec_info stmt_info)
+ {
+   return (STMT_VINFO_REDUC_DEF (stmt_info)
+ 	  || VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_info)));
+ }
+ 
+ /* If STMT_INFO describes a reduction, return the type of reduction
+    it describes, otherwise return -1.  */
+ static int
+ aarch64_reduc_type (vec_info *vinfo, stmt_vec_info stmt_info)
+ {
+   if (loop_vec_info loop_vinfo = dyn_cast<loop_vec_info> (vinfo))
+     if (STMT_VINFO_REDUC_DEF (stmt_info))
+       {
+ 	stmt_vec_info reduc_info = info_for_reduction (loop_vinfo, stmt_info);
+ 	return int (STMT_VINFO_REDUC_TYPE (reduc_info));
+       }
+   return -1;
+ }
+ 
+ /* Return true if an access of kind KIND for STMT_INFO represents one
+    vector of an LD[234] or ST[234] operation.  Return the total number of
+    vectors (2, 3 or 4) if so, otherwise return a value outside that range.  */
+ static int
+ aarch64_ld234_st234_vectors (vect_cost_for_stmt kind, stmt_vec_info stmt_info)
+ {
+   if ((kind == vector_load
+        || kind == unaligned_load
+        || kind == vector_store
+        || kind == unaligned_store)
+       && STMT_VINFO_DATA_REF (stmt_info))
+     {
+       stmt_info = DR_GROUP_FIRST_ELEMENT (stmt_info);
+       if (stmt_info
+ 	  && STMT_VINFO_MEMORY_ACCESS_TYPE (stmt_info) == VMAT_LOAD_STORE_LANES)
+ 	return DR_GROUP_SIZE (stmt_info);
+     }
+   return 0;
+ }
+ 
+ /* If STMT_INFO is a COND_EXPR that includes an embedded comparison, return the
+    scalar type of the values being compared.  Return null otherwise.  */
+ static tree
+ aarch64_embedded_comparison_type (stmt_vec_info stmt_info)
+ {
+   if (auto *assign = dyn_cast<gassign *> (stmt_info->stmt))
+     if (gimple_assign_rhs_code (assign) == COND_EXPR)
+       {
+ 	tree cond = gimple_assign_rhs1 (assign);
+ 	if (COMPARISON_CLASS_P (cond))
+ 	  return TREE_TYPE (TREE_OPERAND (cond, 0));
+       }
+   return NULL_TREE;
+ }
+ 
+ /* If STMT_INFO is a comparison or contains an embedded comparison, return the
+    scalar type of the values being compared.  Return null otherwise.  */
+ static tree
+ aarch64_comparison_type (stmt_vec_info stmt_info)
+ {
+   if (auto *assign = dyn_cast<gassign *> (stmt_info->stmt))
+     if (TREE_CODE_CLASS (gimple_assign_rhs_code (assign)) == tcc_comparison)
+       return TREE_TYPE (gimple_assign_rhs1 (assign));
+   return aarch64_embedded_comparison_type (stmt_info);
+ }
+ 
  /* Return true if creating multiple copies of STMT_INFO for Advanced SIMD
     vectors would produce a series of LDP or STP operations.  KIND is the
     kind of statement that STMT_INFO represents.  */
*************** aarch64_advsimd_ldp_stp_p (enum vect_cos
*** 13911,13917 ****
  
  /* Return true if STMT_INFO extends the result of a load.  */
  static bool
! aarch64_extending_load_p (stmt_vec_info stmt_info)
  {
    gassign *assign = dyn_cast <gassign *> (stmt_info->stmt);
    if (!assign || !CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (assign)))
--- 14712,14718 ----
  
  /* Return true if STMT_INFO extends the result of a load.  */
  static bool
! aarch64_extending_load_p (class vec_info *vinfo, stmt_vec_info stmt_info)
  {
    gassign *assign = dyn_cast <gassign *> (stmt_info->stmt);
    if (!assign || !CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (assign)))
*************** aarch64_extending_load_p (stmt_vec_info
*** 13925,13931 ****
        || TYPE_PRECISION (lhs_type) <= TYPE_PRECISION (rhs_type))
      return false;
  
!   stmt_vec_info def_stmt_info = stmt_info->vinfo->lookup_def (rhs);
    return (def_stmt_info
  	  && STMT_VINFO_DATA_REF (def_stmt_info)
  	  && DR_IS_READ (STMT_VINFO_DATA_REF (def_stmt_info)));
--- 14726,14732 ----
        || TYPE_PRECISION (lhs_type) <= TYPE_PRECISION (rhs_type))
      return false;
  
!   stmt_vec_info def_stmt_info = vinfo->lookup_def (rhs);
    return (def_stmt_info
  	  && STMT_VINFO_DATA_REF (def_stmt_info)
  	  && DR_IS_READ (STMT_VINFO_DATA_REF (def_stmt_info)));
*************** aarch64_integer_truncation_p (stmt_vec_i
*** 13946,13957 ****
  	  && TYPE_PRECISION (lhs_type) < TYPE_PRECISION (rhs_type));
  }
  
  /* STMT_COST is the cost calculated by aarch64_builtin_vectorization_cost
     for STMT_INFO, which has cost kind KIND and which when vectorized would
     operate on vector type VECTYPE.  Adjust the cost as necessary for SVE
     targets.  */
  static unsigned int
! aarch64_sve_adjust_stmt_cost (vect_cost_for_stmt kind,
  			      stmt_vec_info stmt_info, tree vectype,
  			      unsigned int stmt_cost)
  {
--- 14747,15025 ----
  	  && TYPE_PRECISION (lhs_type) < TYPE_PRECISION (rhs_type));
  }
  
+ /* Return true if STMT_INFO is the second part of a two-statement multiply-add
+    or multiply-subtract sequence that might be suitable for fusing into a
+    single instruction.  */
+ static bool
+ aarch64_multiply_add_p (vec_info *vinfo, stmt_vec_info stmt_info)
+ {
+   gassign *assign = dyn_cast<gassign *> (stmt_info->stmt);
+   if (!assign)
+     return false;
+   tree_code code = gimple_assign_rhs_code (assign);
+   if (code != PLUS_EXPR && code != MINUS_EXPR)
+     return false;
+ 
+   if (CONSTANT_CLASS_P (gimple_assign_rhs1 (assign))
+       || CONSTANT_CLASS_P (gimple_assign_rhs2 (assign)))
+     return false;
+ 
+   for (int i = 1; i < 3; ++i)
+     {
+       tree rhs = gimple_op (assign, i);
+       /* ??? Should we try to check for a single use as well?  */
+       if (TREE_CODE (rhs) != SSA_NAME)
+ 	continue;
+ 
+       stmt_vec_info def_stmt_info = vinfo->lookup_def (rhs);
+       if (!def_stmt_info
+ 	  || STMT_VINFO_DEF_TYPE (def_stmt_info) != vect_internal_def)
+ 	continue;
+       gassign *rhs_assign = dyn_cast<gassign *> (def_stmt_info->stmt);
+       if (!rhs_assign || gimple_assign_rhs_code (rhs_assign) != MULT_EXPR)
+ 	continue;
+ 
+       return true;
+     }
+   return false;
+ }
+ 
+ /* Return true if the vectorized form of STMT_INFO is something that is only
+    possible when using SVE instead of Advanced SIMD.  VECTYPE is the type of
+    the vector that STMT_INFO is operating on.  */
+ static bool
+ aarch64_sve_only_stmt_p (stmt_vec_info stmt_info, tree vectype)
+ {
+   if (!aarch64_sve_mode_p (TYPE_MODE (vectype)))
+     return false;
+ 
+   if (STMT_VINFO_DATA_REF (stmt_info))
+     {
+       /* Check for true gathers and scatters (rather than just strided accesses
+ 	 that we've chosen to implement using gathers and scatters).  Although
+ 	 in principle we could use elementwise accesses for Advanced SIMD,
+ 	 the vectorizer doesn't yet support that.  */
+       if (STMT_VINFO_GATHER_SCATTER_P (stmt_info))
+ 	return true;
+ 
+       /* Check for masked loads and stores.  */
+       if (auto *call = dyn_cast<gcall *> (stmt_info->stmt))
+ 	if (gimple_call_internal_p (call)
+ 	    && internal_fn_mask_index (gimple_call_internal_fn (call)) >= 0)
+ 	  return true;
+     }
+ 
+   /* Check for 64-bit integer multiplications.  */
+   auto *assign = dyn_cast<gassign *> (stmt_info->stmt);
+   if (assign
+       && gimple_assign_rhs_code (assign) == MULT_EXPR
+       && GET_MODE_INNER (TYPE_MODE (vectype)) == DImode
+       && !integer_pow2p (gimple_assign_rhs2 (assign)))
+     return true;
+ 
+   return false;
+ }
+ 
+ /* We are considering implementing STMT_INFO using SVE vector type VECTYPE.
+    If STMT_INFO is an in-loop reduction that SVE supports directly, return
+    its latency in cycles, otherwise return zero.  SVE_COSTS specifies the
+    latencies of the relevant instructions.  */
+ static unsigned int
+ aarch64_sve_in_loop_reduction_latency (vec_info *vinfo,
+ 				       stmt_vec_info stmt_info,
+ 				       tree vectype,
+ 				       const sve_vec_cost *sve_costs)
+ {
+   switch (aarch64_reduc_type (vinfo, stmt_info))
+     {
+     case EXTRACT_LAST_REDUCTION:
+       return sve_costs->clast_cost;
+ 
+     case FOLD_LEFT_REDUCTION:
+       switch (GET_MODE_INNER (TYPE_MODE (vectype)))
+ 	{
+ 	case E_HFmode:
+ 	case E_BFmode:
+ 	  return sve_costs->fadda_f16_cost;
+ 
+ 	case E_SFmode:
+ 	  return sve_costs->fadda_f32_cost;
+ 
+ 	case E_DFmode:
+ 	  return sve_costs->fadda_f64_cost;
+ 
+ 	default:
+ 	  break;
+ 	}
+       break;
+     }
+ 
+   return 0;
+ }
+ 
+ /* STMT_INFO describes a loop-carried operation in the original scalar code
+    that we are considering implementing as a reduction.  Return one of the
+    following values, depending on VEC_FLAGS:
+ 
+    - If VEC_FLAGS is zero, return the loop carry latency of the original
+      scalar operation.
+ 
+    - If VEC_FLAGS & VEC_ADVSIMD, return the loop carry latency of the
+      the Advanced SIMD implementation.
+ 
+    - If VEC_FLAGS & VEC_ANY_SVE, return the loop carry latency of the
+      SVE implementation.
+ 
+    VECTYPE is the type of vector that the vectorizer is considering using
+    for STMT_INFO, which might be different from the type of vector described
+    by VEC_FLAGS.  */
+ static unsigned int
+ aarch64_in_loop_reduction_latency (vec_info *vinfo, stmt_vec_info stmt_info,
+ 				   tree vectype, unsigned int vec_flags)
+ {
+   const cpu_vector_cost *vec_costs = aarch64_tune_params.vec_costs;
+   const sve_vec_cost *sve_costs = nullptr;
+   if (vec_flags & VEC_ANY_SVE)
+     sve_costs = aarch64_tune_params.vec_costs->sve;
+ 
+   /* If the caller is asking for the SVE latency, check for forms of reduction
+      that only SVE can handle directly.  */
+   if (sve_costs)
+     {
+       unsigned int latency
+ 	= aarch64_sve_in_loop_reduction_latency (vinfo, stmt_info, vectype,
+ 						 sve_costs);
+       if (latency)
+ 	return latency;
+     }
+ 
+   /* Handle scalar costs.  */
+   if (vec_flags == 0)
+     {
+       if (FLOAT_TYPE_P (vectype))
+ 	return vec_costs->scalar_fp_stmt_cost;
+       return vec_costs->scalar_int_stmt_cost;
+     }
+ 
+   /* Otherwise, the loop body just contains normal integer or FP operations,
+      with a vector reduction outside the loop.  */
+   const simd_vec_cost *simd_costs
+     = aarch64_simd_vec_costs_for_flags (vec_flags);
+   if (FLOAT_TYPE_P (vectype))
+     return simd_costs->fp_stmt_cost;
+   return simd_costs->int_stmt_cost;
+ }
+ 
+ /* STMT_COST is the cost calculated by aarch64_builtin_vectorization_cost
+    for STMT_INFO, which has cost kind KIND.  If this is a scalar operation,
+    try to subdivide the target-independent categorization provided by KIND
+    to get a more accurate cost.  */
+ static unsigned int
+ aarch64_detect_scalar_stmt_subtype (vec_info *vinfo, vect_cost_for_stmt kind,
+ 				    stmt_vec_info stmt_info,
+ 				    unsigned int stmt_cost)
+ {
+   /* Detect an extension of a loaded value.  In general, we'll be able to fuse
+      the extension with the load.  */
+   if (kind == scalar_stmt && aarch64_extending_load_p (vinfo, stmt_info))
+     return 0;
+ 
+   return stmt_cost;
+ }
+ 
+ /* STMT_COST is the cost calculated by aarch64_builtin_vectorization_cost
+    for the vectorized form of STMT_INFO, which has cost kind KIND and which
+    when vectorized would operate on vector type VECTYPE.  Try to subdivide
+    the target-independent categorization provided by KIND to get a more
+    accurate cost.  WHERE specifies where the cost associated with KIND
+    occurs.  */
+ static unsigned int
+ aarch64_detect_vector_stmt_subtype (vec_info *vinfo, vect_cost_for_stmt kind,
+ 				    stmt_vec_info stmt_info, tree vectype,
+ 				    enum vect_cost_model_location where,
+ 				    unsigned int stmt_cost)
+ {
+   const simd_vec_cost *simd_costs = aarch64_simd_vec_costs (vectype);
+   const sve_vec_cost *sve_costs = nullptr;
+   if (aarch64_sve_mode_p (TYPE_MODE (vectype)))
+     sve_costs = aarch64_tune_params.vec_costs->sve;
+ 
+   /* It's generally better to avoid costing inductions, since the induction
+      will usually be hidden by other operations.  This is particularly true
+      for things like COND_REDUCTIONS.  */
+   if (is_a<gphi *> (stmt_info->stmt))
+     return 0;
+ 
+   /* Detect cases in which vec_to_scalar is describing the extraction of a
+      vector element in preparation for a scalar store.  The store itself is
+      costed separately.  */
+   if (kind == vec_to_scalar
+       && STMT_VINFO_DATA_REF (stmt_info)
+       && DR_IS_WRITE (STMT_VINFO_DATA_REF (stmt_info)))
+     return simd_costs->store_elt_extra_cost;
+ 
+   /* Detect cases in which a scalar_store is really storing one element
+      in a scatter operation.  */
+   if (kind == scalar_store
+       && sve_costs
+       && STMT_VINFO_MEMORY_ACCESS_TYPE (stmt_info) == VMAT_GATHER_SCATTER)
+     return sve_costs->scatter_store_elt_cost;
+ 
+   /* Detect cases in which vec_to_scalar represents an in-loop reduction.  */
+   if (kind == vec_to_scalar
+       && where == vect_body
+       && sve_costs)
+     {
+       unsigned int latency
+ 	= aarch64_sve_in_loop_reduction_latency (vinfo, stmt_info, vectype,
+ 						 sve_costs);
+       if (latency)
+ 	return latency;
+     }
+ 
+   /* Detect cases in which vec_to_scalar represents a single reduction
+      instruction like FADDP or MAXV.  */
+   if (kind == vec_to_scalar
+       && where == vect_epilogue
+       && aarch64_is_reduction (stmt_info))
+     switch (GET_MODE_INNER (TYPE_MODE (vectype)))
+       {
+       case E_QImode:
+ 	return simd_costs->reduc_i8_cost;
+ 
+       case E_HImode:
+ 	return simd_costs->reduc_i16_cost;
+ 
+       case E_SImode:
+ 	return simd_costs->reduc_i32_cost;
+ 
+       case E_DImode:
+ 	return simd_costs->reduc_i64_cost;
+ 
+       case E_HFmode:
+       case E_BFmode:
+ 	return simd_costs->reduc_f16_cost;
+ 
+       case E_SFmode:
+ 	return simd_costs->reduc_f32_cost;
+ 
+       case E_DFmode:
+ 	return simd_costs->reduc_f64_cost;
+ 
+       default:
+ 	break;
+       }
+ 
+   /* Otherwise stick with the original categorization.  */
+   return stmt_cost;
+ }
+ 
  /* STMT_COST is the cost calculated by aarch64_builtin_vectorization_cost
     for STMT_INFO, which has cost kind KIND and which when vectorized would
     operate on vector type VECTYPE.  Adjust the cost as necessary for SVE
     targets.  */
  static unsigned int
! aarch64_sve_adjust_stmt_cost (class vec_info *vinfo, vect_cost_for_stmt kind,
  			      stmt_vec_info stmt_info, tree vectype,
  			      unsigned int stmt_cost)
  {
*************** aarch64_sve_adjust_stmt_cost (vect_cost_
*** 13963,13969 ****
       on the fly.  Optimistically assume that a load followed by an extension
       will fold to this form during combine, and that the extension therefore
       comes for free.  */
!   if (kind == vector_stmt && aarch64_extending_load_p (stmt_info))
      stmt_cost = 0;
  
    /* For similar reasons, vector_stmt integer truncations are a no-op,
--- 15031,15037 ----
       on the fly.  Optimistically assume that a load followed by an extension
       will fold to this form during combine, and that the extension therefore
       comes for free.  */
!   if (kind == vector_stmt && aarch64_extending_load_p (vinfo, stmt_info))
      stmt_cost = 0;
  
    /* For similar reasons, vector_stmt integer truncations are a no-op,
*************** aarch64_sve_adjust_stmt_cost (vect_cost_
*** 14014,14051 ****
    return stmt_cost;
  }
  
  /* Implement targetm.vectorize.add_stmt_cost.  */
  static unsigned
! aarch64_add_stmt_cost (void *data, int count, enum vect_cost_for_stmt kind,
! 		       struct _stmt_vec_info *stmt_info, int misalign,
! 		       enum vect_cost_model_location where)
  {
!   unsigned *cost = (unsigned *) data;
    unsigned retval = 0;
  
    if (flag_vect_cost_model)
      {
!       tree vectype = stmt_info ? stmt_vectype (stmt_info) : NULL_TREE;
!       int stmt_cost =
! 	    aarch64_builtin_vectorization_cost (kind, vectype, misalign);
  
        if (stmt_info && vectype && aarch64_sve_mode_p (TYPE_MODE (vectype)))
! 	stmt_cost = aarch64_sve_adjust_stmt_cost (kind, stmt_info, vectype,
! 						  stmt_cost);
  
        /* Statements in an inner loop relative to the loop being
  	 vectorized are weighted more heavily.  The value here is
  	 arbitrary and could potentially be improved with analysis.  */
!       if (where == vect_body && stmt_info && stmt_in_inner_loop_p (stmt_info))
  	count *= 50; /*  FIXME  */
  
        retval = (unsigned) (count * stmt_cost);
!       cost[where] += retval;
      }
  
    return retval;
  }
  
  static void initialize_aarch64_code_model (struct gcc_options *);
  
  /* Parse the TO_PARSE string and put the architecture struct that it
--- 15082,15754 ----
    return stmt_cost;
  }
  
+ /* STMT_COST is the cost calculated for STMT_INFO, which has cost kind KIND
+    and which when vectorized would operate on vector type VECTYPE.  Add the
+    cost of any embedded operations.  */
+ static unsigned int
+ aarch64_adjust_stmt_cost (vect_cost_for_stmt kind, stmt_vec_info stmt_info,
+ 			  tree vectype, unsigned int stmt_cost)
+ {
+   if (vectype)
+     {
+       const simd_vec_cost *simd_costs = aarch64_simd_vec_costs (vectype);
+ 
+       /* Detect cases in which a vector load or store represents an
+ 	 LD[234] or ST[234] instruction.  */
+       switch (aarch64_ld234_st234_vectors (kind, stmt_info))
+ 	{
+ 	case 2:
+ 	  stmt_cost += simd_costs->ld2_st2_permute_cost;
+ 	  break;
+ 
+ 	case 3:
+ 	  stmt_cost += simd_costs->ld3_st3_permute_cost;
+ 	  break;
+ 
+ 	case 4:
+ 	  stmt_cost += simd_costs->ld4_st4_permute_cost;
+ 	  break;
+ 	}
+ 
+       if (kind == vector_stmt || kind == vec_to_scalar)
+ 	if (tree cmp_type = aarch64_embedded_comparison_type (stmt_info))
+ 	  {
+ 	    if (FLOAT_TYPE_P (cmp_type))
+ 	      stmt_cost += simd_costs->fp_stmt_cost;
+ 	    else
+ 	      stmt_cost += simd_costs->int_stmt_cost;
+ 	  }
+     }
+ 
+   if (kind == scalar_stmt)
+     if (tree cmp_type = aarch64_embedded_comparison_type (stmt_info))
+       {
+ 	if (FLOAT_TYPE_P (cmp_type))
+ 	  stmt_cost += aarch64_tune_params.vec_costs->scalar_fp_stmt_cost;
+ 	else
+ 	  stmt_cost += aarch64_tune_params.vec_costs->scalar_int_stmt_cost;
+       }
+ 
+   return stmt_cost;
+ }
+ 
+ /* VINFO, COSTS, COUNT, KIND, STMT_INFO and VECTYPE are the same as for
+    TARGET_VECTORIZE_ADD_STMT_COST and they describe an operation in the
+    body of a vector loop.  Record issue information relating to the vector
+    operation in OPS, where OPS is one of COSTS->scalar_ops, COSTS->advsimd_ops
+    or COSTS->sve_ops; see the comments above those variables for details.
+    In addition:
+ 
+    - VEC_FLAGS is zero if OPS is COSTS->scalar_ops.
+ 
+    - VEC_FLAGS & VEC_ADVSIMD is nonzero if OPS is COSTS->advsimd_ops.
+ 
+    - VEC_FLAGS & VEC_ANY_SVE is nonzero if OPS is COSTS->sve_ops.
+ 
+    ISSUE_INFO provides the scalar, Advanced SIMD or SVE issue information
+    associated with OPS and VEC_FLAGS.  FACTOR says how many iterations of
+    the loop described by VEC_FLAGS would be needed to match one iteration
+    of the vector loop in VINFO.  */
+ static void
+ aarch64_count_ops (class vec_info *vinfo, aarch64_vector_costs *costs,
+ 		   unsigned int count, enum vect_cost_for_stmt kind,
+ 		   _stmt_vec_info *stmt_info, tree vectype,
+ 		   unsigned int vec_flags, aarch64_vec_op_count *ops,
+ 		   const aarch64_base_vec_issue_info *issue_info,
+ 		   unsigned int factor)
+ {
+   if (!issue_info)
+     return;
+ 
+   const aarch64_simd_vec_issue_info *simd_issue = nullptr;
+   if (vec_flags)
+     simd_issue = static_cast<const aarch64_simd_vec_issue_info *> (issue_info);
+ 
+   const aarch64_sve_vec_issue_info *sve_issue = nullptr;
+   if (vec_flags & VEC_ANY_SVE)
+     sve_issue = static_cast<const aarch64_sve_vec_issue_info *> (issue_info);
+ 
+   /* Calculate the minimum cycles per iteration imposed by a reduction
+      operation.  */
+   if ((kind == vector_stmt || kind == vec_to_scalar)
+       && aarch64_is_reduction (stmt_info))
+     {
+       unsigned int base
+ 	= aarch64_in_loop_reduction_latency (vinfo, stmt_info, vectype,
+ 					     vec_flags);
+       if (aarch64_reduc_type (vinfo, stmt_info) == FOLD_LEFT_REDUCTION)
+ 	{
+ 	  if (aarch64_sve_mode_p (TYPE_MODE (vectype)))
+ 	    {
+ 	      /* When costing an SVE FADDA, the vectorizer treats vec_to_scalar
+ 		 as a single operation, whereas for Advanced SIMD it is a
+ 		 per-element one.  Increase the factor accordingly, both for
+ 		 the reduction_latency calculation and for the op couting.  */
+ 	      if (vec_flags & VEC_ADVSIMD)
+ 		factor = vect_nunits_for_cost (vectype);
+ 	    }
+ 	  else
+ 	    /* An Advanced SIMD fold-left reduction is the same as a
+ 	       scalar one and the vectorizer therefore treats vec_to_scalar
+ 	       as a per-element cost.  There is no extra factor to apply for
+ 	       scalar code, either for reduction_latency or for the op
+ 	       counting below.  */
+ 	    factor = 1;
+ 	}
+ 
+       /* ??? Ideally for vector code we'd do COUNT * FACTOR reductions in
+ 	 parallel, but unfortunately that's not yet the case.  */
+       ops->reduction_latency = MAX (ops->reduction_latency,
+ 				    base * count * factor);
+     }
+ 
+   /* Assume that multiply-adds will become a single operation.  */
+   if (stmt_info && aarch64_multiply_add_p (vinfo, stmt_info))
+     return;
+ 
+   /* When costing scalar statements in vector code, the count already
+      includes the number of scalar elements in the vector, so we don't
+      need to apply the factor as well.  */
+   if (kind == scalar_load || kind == scalar_store || kind == scalar_stmt)
+     factor = 1;
+ 
+   /* This can go negative with the load handling below.  */
+   int num_copies = count * factor;
+ 
+   /* Count the basic operation cost associated with KIND.  */
+   switch (kind)
+     {
+     case cond_branch_taken:
+     case cond_branch_not_taken:
+     case vector_gather_load:
+     case vector_scatter_store:
+       /* We currently don't expect these to be used in a loop body.  */
+       break;
+ 
+     case vec_perm:
+     case vec_promote_demote:
+     case vec_construct:
+     case vec_to_scalar:
+     case scalar_to_vec:
+       /* Assume that these operations have no overhead in the original
+ 	 scalar code.  */
+       if (!vec_flags)
+ 	break;
+       /* Fallthrough.  */
+     case vector_stmt:
+     case scalar_stmt:
+       ops->general_ops += num_copies;
+       break;
+ 
+     case scalar_load:
+     case vector_load:
+     case unaligned_load:
+       /* When costing scalars, detect cases in which we are called twice for
+ 	 the same load.  This happens for LD[234] operations if only some of
+ 	 the results are used.  The first time represents the cost of loading
+ 	 the unused vectors, while the second time represents the cost of
+ 	 loading the useful parts.  Only the latter should count towards the
+ 	 scalar costs.  */
+       if (stmt_info && !vec_flags)
+ 	{
+ 	  bool existed = false;
+ 	  unsigned int &prev_count
+ 	    = costs->seen_loads.get_or_insert (stmt_info, &existed);
+ 	  if (existed)
+ 	    num_copies -= prev_count;
+ 	  else
+ 	    prev_count = num_copies;
+ 	}
+       ops->loads += num_copies;
+       if (vec_flags || FLOAT_TYPE_P (vectype))
+ 	ops->general_ops += issue_info->fp_simd_load_general_ops * num_copies;
+       break;
+ 
+     case vector_store:
+     case unaligned_store:
+     case scalar_store:
+       ops->stores += num_copies;
+       if (vec_flags || FLOAT_TYPE_P (vectype))
+ 	ops->general_ops += issue_info->fp_simd_store_general_ops * num_copies;
+       break;
+     }
+ 
+   /* Add any embedded comparison operations.  */
+   if ((kind == scalar_stmt || kind == vector_stmt || kind == vec_to_scalar)
+       && aarch64_embedded_comparison_type (stmt_info))
+     ops->general_ops += num_copies;
+ 
+   /* Detect COND_REDUCTIONs and things that would need to become
+      COND_REDUCTIONs if they were implemented using Advanced SIMD.
+      There are then two sets of VEC_COND_EXPRs, whereas so far we
+      have only accounted for one.  */
+   if (vec_flags && (kind == vector_stmt || kind == vec_to_scalar))
+     {
+       int reduc_type = aarch64_reduc_type (vinfo, stmt_info);
+       if ((reduc_type == EXTRACT_LAST_REDUCTION && (vec_flags & VEC_ADVSIMD))
+ 	  || reduc_type == COND_REDUCTION)
+ 	ops->general_ops += num_copies;
+     }
+ 
+   /* Count the predicate operations needed by an SVE comparison.  */
+   if (sve_issue && (kind == vector_stmt || kind == vec_to_scalar))
+     if (tree type = aarch64_comparison_type (stmt_info))
+       {
+ 	unsigned int base = (FLOAT_TYPE_P (type)
+ 			     ? sve_issue->fp_cmp_pred_ops
+ 			     : sve_issue->int_cmp_pred_ops);
+ 	costs->sve_ops.pred_ops += base * num_copies;
+       }
+ 
+   /* Add any extra overhead associated with LD[234] and ST[234] operations.  */
+   if (simd_issue)
+     switch (aarch64_ld234_st234_vectors (kind, stmt_info))
+       {
+       case 2:
+ 	ops->general_ops += simd_issue->ld2_st2_general_ops * num_copies;
+ 	break;
+ 
+       case 3:
+ 	ops->general_ops += simd_issue->ld3_st3_general_ops * num_copies;
+ 	break;
+ 
+       case 4:
+ 	ops->general_ops += simd_issue->ld4_st4_general_ops * num_copies;
+ 	break;
+       }
+ 
+   /* Add any overhead associated with gather loads and scatter stores.  */
+   if (sve_issue
+       && (kind == scalar_load || kind == scalar_store)
+       && STMT_VINFO_MEMORY_ACCESS_TYPE (stmt_info) == VMAT_GATHER_SCATTER)
+     {
+       unsigned int pairs = CEIL (count, 2);
+       costs->sve_ops.pred_ops
+ 	+= sve_issue->gather_scatter_pair_pred_ops * pairs;
+       ops->general_ops += sve_issue->gather_scatter_pair_general_ops * pairs;
+     }
+ }
+ 
  /* Implement targetm.vectorize.add_stmt_cost.  */
  static unsigned
! aarch64_add_stmt_cost (class vec_info *vinfo, void *data, int count,
! 		       enum vect_cost_for_stmt kind,
! 		       struct _stmt_vec_info *stmt_info, tree vectype,
! 		       int misalign, enum vect_cost_model_location where)
  {
!   auto *costs = static_cast<aarch64_vector_costs *> (data);
    unsigned retval = 0;
  
    if (flag_vect_cost_model)
      {
!       int stmt_cost
! 	= aarch64_builtin_vectorization_cost (kind, vectype, misalign);
! 
!       /* Do one-time initialization based on the vinfo.  */
!       loop_vec_info loop_vinfo = dyn_cast<loop_vec_info> (vinfo);
!       bb_vec_info bb_vinfo = dyn_cast<bb_vec_info> (vinfo);
!       if (!costs->analyzed_vinfo && aarch64_use_new_vector_costs_p ())
! 	{
! 	  if (loop_vinfo)
! 	    aarch64_analyze_loop_vinfo (loop_vinfo, costs);
! 	  else
! 	    aarch64_analyze_bb_vinfo (bb_vinfo, costs);
! 	  costs->analyzed_vinfo = true;
! 	}
! 
!       /* Try to get a more accurate cost by looking at STMT_INFO instead
! 	 of just looking at KIND.  */
!       if (stmt_info && aarch64_use_new_vector_costs_p ())
! 	{
! 	  if (vectype && aarch64_sve_only_stmt_p (stmt_info, vectype))
! 	    costs->saw_sve_only_op = true;
! 
! 	  stmt_cost = aarch64_detect_scalar_stmt_subtype
! 	    (vinfo, kind, stmt_info, stmt_cost);
  
+ 	  if (vectype && costs->vec_flags)
+ 	    stmt_cost = aarch64_detect_vector_stmt_subtype (vinfo, kind,
+ 							    stmt_info, vectype,
+ 							    where, stmt_cost);
+ 	}
+ 
+       /* Do any SVE-specific adjustments to the cost.  */
        if (stmt_info && vectype && aarch64_sve_mode_p (TYPE_MODE (vectype)))
! 	stmt_cost = aarch64_sve_adjust_stmt_cost (vinfo, kind, stmt_info,
! 						  vectype, stmt_cost);
! 
!       if (stmt_info && aarch64_use_new_vector_costs_p ())
! 	{
! 	  /* Account for any extra "embedded" costs that apply additively
! 	     to the base cost calculated above.  */
! 	  stmt_cost = aarch64_adjust_stmt_cost (kind, stmt_info, vectype,
! 						stmt_cost);
! 
! 	  /* If we're recording a nonzero vector loop body cost, also estimate
! 	     the operations that would need to be issued by all relevant
! 	     implementations of the loop.  */
! 	  auto *issue_info = aarch64_tune_params.vec_costs->issue_info;
! 	  if (loop_vinfo
! 	      && issue_info
! 	      && costs->vec_flags
! 	      && where == vect_body
! 	      && vectype
! 	      && stmt_cost != 0)
! 	    {
! 	      /* Record estimates for the scalar code.  */
! 	      aarch64_count_ops (vinfo, costs, count, kind, stmt_info, vectype,
! 				 0, &costs->scalar_ops, issue_info->scalar,
! 				 vect_nunits_for_cost (vectype));
! 
! 	      if (aarch64_sve_mode_p (vinfo->vector_mode) && issue_info->sve)
! 		{
! 		  /* Record estimates for a possible Advanced SIMD version
! 		     of the SVE code.  */
! 		  aarch64_count_ops (vinfo, costs, count, kind, stmt_info,
! 				     vectype, VEC_ADVSIMD, &costs->advsimd_ops,
! 				     issue_info->advsimd,
! 				     aarch64_estimated_sve_vq ());
! 
! 		  /* Record estimates for the SVE code itself.  */
! 		  aarch64_count_ops (vinfo, costs, count, kind, stmt_info,
! 				     vectype, VEC_ANY_SVE, &costs->sve_ops,
! 				     issue_info->sve, 1);
! 		}
! 	      else
! 		/* Record estimates for the Advanced SIMD code.  Treat SVE like
! 		   Advanced SIMD if the CPU has no specific SVE costs.  */
! 		aarch64_count_ops (vinfo, costs, count, kind, stmt_info,
! 				   vectype, VEC_ADVSIMD, &costs->advsimd_ops,
! 				   issue_info->advsimd, 1);
! 	    }
! 
! 	  /* 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 && costs->unrolled_advsimd_niters)
! 	    costs->unrolled_advsimd_stmts
! 	      += count * costs->unrolled_advsimd_niters;
! 	}
  
        /* Statements in an inner loop relative to the loop being
  	 vectorized are weighted more heavily.  The value here is
  	 arbitrary and could potentially be improved with analysis.  */
!       if (where == vect_body && stmt_info
! 	  && stmt_in_inner_loop_p (vinfo, stmt_info))
  	count *= 50; /*  FIXME  */
  
        retval = (unsigned) (count * stmt_cost);
!       costs->region[where] += retval;
      }
  
    return retval;
  }
  
+ /* Dump information about the structure.  */
+ void
+ aarch64_vec_op_count::dump () const
+ {
+   dump_printf_loc (MSG_NOTE, vect_location,
+ 		   "  load operations = %d\n", loads);
+   dump_printf_loc (MSG_NOTE, vect_location,
+ 		   "  store operations = %d\n", stores);
+   dump_printf_loc (MSG_NOTE, vect_location,
+ 		   "  general operations = %d\n", general_ops);
+   dump_printf_loc (MSG_NOTE, vect_location,
+ 		   "  reduction latency = %d\n", reduction_latency);
+ }
+ 
+ /* Dump information about the structure.  */
+ void
+ aarch64_sve_op_count::dump () const
+ {
+   aarch64_vec_op_count::dump ();
+   dump_printf_loc (MSG_NOTE, vect_location,
+ 		   "  predicate operations = %d\n", pred_ops);
+ }
+ 
+ /* Use ISSUE_INFO to estimate the minimum number of cycles needed to issue
+    the operations described by OPS.  This is a very simplistic model!  */
+ static unsigned int
+ aarch64_estimate_min_cycles_per_iter
+   (const aarch64_vec_op_count *ops,
+    const aarch64_base_vec_issue_info *issue_info)
+ {
+   unsigned int cycles = MAX (ops->reduction_latency, 1);
+   cycles = MAX (cycles, CEIL (ops->stores, issue_info->stores_per_cycle));
+   cycles = MAX (cycles, CEIL (ops->loads + ops->stores,
+ 			      issue_info->loads_stores_per_cycle));
+   cycles = MAX (cycles, CEIL (ops->general_ops,
+ 			      issue_info->general_ops_per_cycle));
+   return cycles;
+ }
+ 
+ /* BODY_COST is the cost of a vector loop body recorded in COSTS.
+    Adjust the cost as necessary and return the new cost.  */
+ static unsigned int
+ aarch64_adjust_body_cost (aarch64_vector_costs *costs, unsigned int body_cost)
+ {
+   unsigned int orig_body_cost = body_cost;
+   bool should_disparage = false;
+ 
+   if (dump_enabled_p ())
+     dump_printf_loc (MSG_NOTE, vect_location,
+ 		     "Original vector body cost = %d\n", body_cost);
+ 
+   if (costs->unrolled_advsimd_stmts)
+     {
+       if (dump_enabled_p ())
+ 	dump_printf_loc (MSG_NOTE, vect_location, "Number of insns in"
+ 			 " unrolled Advanced SIMD loop = %d\n",
+ 			 costs->unrolled_advsimd_stmts);
+ 
+       /* Apply the Advanced SIMD vs. SVE unrolling heuristic described above
+ 	 aarch64_vector_costs::unrolled_advsimd_niters.
+ 
+ 	 The balance here is tricky.  On the one hand, we can't be sure whether
+ 	 the code is vectorizable with Advanced SIMD or not.  However, even if
+ 	 it isn't vectorizable with Advanced SIMD, there's a possibility that
+ 	 the scalar code could also be unrolled.  Some of the code might then
+ 	 benefit from SLP, or from using LDP and STP.  We therefore apply
+ 	 the heuristic regardless of can_use_advsimd_p.  */
+       if (costs->unrolled_advsimd_stmts
+ 	  && (costs->unrolled_advsimd_stmts
+ 	      <= (unsigned int) param_max_completely_peeled_insns))
+ 	{
+ 	  unsigned int estimated_vq = aarch64_estimated_sve_vq ();
+ 	  unsigned int min_cost = (orig_body_cost * estimated_vq) + 1;
+ 	  if (body_cost < min_cost)
+ 	    {
+ 	      if (dump_enabled_p ())
+ 		dump_printf_loc (MSG_NOTE, vect_location,
+ 				 "Increasing body cost to %d to account for"
+ 				 " unrolling\n", min_cost);
+ 	      body_cost = min_cost;
+ 	      should_disparage = true;
+ 	    }
+ 	}
+     }
+ 
+   auto *issue_info = aarch64_tune_params.vec_costs->issue_info;
+   if (!issue_info)
+     return body_cost;
+ 
+   unsigned int scalar_cycles_per_iter
+     = aarch64_estimate_min_cycles_per_iter (&costs->scalar_ops,
+ 					    issue_info->scalar);
+   unsigned int advsimd_cycles_per_iter
+     = aarch64_estimate_min_cycles_per_iter (&costs->advsimd_ops,
+ 					    issue_info->advsimd);
+   bool could_use_advsimd
+     = ((costs->vec_flags & VEC_ADVSIMD)
+        || (aarch64_autovec_preference != 2
+ 	   && (aarch64_tune_params.extra_tuning_flags
+ 	       & AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT)
+ 	   && !costs->saw_sve_only_op));
+ 
+   if (dump_enabled_p ())
+     {
+       if (IN_RANGE (costs->num_vector_iterations, 0, 65536))
+ 	dump_printf_loc (MSG_NOTE, vect_location,
+ 			 "Vector loop iterates at most %wd times\n",
+ 			 costs->num_vector_iterations);
+       dump_printf_loc (MSG_NOTE, vect_location, "Scalar issue estimate:\n");
+       costs->scalar_ops.dump ();
+       dump_printf_loc (MSG_NOTE, vect_location,
+ 		       "  estimated cycles per iteration = %d\n",
+ 		       scalar_cycles_per_iter);
+       if (could_use_advsimd)
+ 	{
+ 	  dump_printf_loc (MSG_NOTE, vect_location,
+ 			   "Advanced SIMD issue estimate:\n");
+ 	  costs->advsimd_ops.dump ();
+ 	  dump_printf_loc (MSG_NOTE, vect_location,
+ 			   "  estimated cycles per iteration = %d\n",
+ 			   advsimd_cycles_per_iter);
+ 	}
+       else
+ 	dump_printf_loc (MSG_NOTE, vect_location,
+ 			 "Loop could not use Advanced SIMD\n");
+     }
+ 
+   uint64_t vector_cycles_per_iter = advsimd_cycles_per_iter;
+   unsigned int vector_reduction_latency = costs->advsimd_ops.reduction_latency;
+   if ((costs->vec_flags & VEC_ANY_SVE) && issue_info->sve)
+     {
+       /* Estimate the minimum number of cycles per iteration needed to issue
+ 	 non-predicate operations.  */
+       unsigned int sve_cycles_per_iter
+ 	= aarch64_estimate_min_cycles_per_iter (&costs->sve_ops,
+ 						issue_info->sve);
+ 
+       /* Separately estimate the minimum number of cycles per iteration needed
+ 	 to issue the predicate operations.  */
+       unsigned int pred_cycles_per_iter
+ 	= CEIL (costs->sve_ops.pred_ops, issue_info->sve->pred_ops_per_cycle);
+ 
+       if (dump_enabled_p ())
+ 	{
+ 	  dump_printf_loc (MSG_NOTE, vect_location, "SVE issue estimate:\n");
+ 	  costs->sve_ops.dump ();
+ 	  dump_printf_loc (MSG_NOTE, vect_location,
+ 			   "  estimated cycles per iteration for non-predicate"
+ 			   " operations = %d\n", sve_cycles_per_iter);
+ 	  if (costs->sve_ops.pred_ops)
+ 	    dump_printf_loc (MSG_NOTE, vect_location, "  estimated cycles per"
+ 			     " iteration for predicate operations = %d\n",
+ 			     pred_cycles_per_iter);
+ 	}
+ 
+       vector_cycles_per_iter = MAX (sve_cycles_per_iter, pred_cycles_per_iter);
+       vector_reduction_latency = costs->sve_ops.reduction_latency;
+ 
+       /* If the scalar version of the loop could issue at least as
+ 	 quickly as the predicate parts of the SVE loop, make the SVE loop
+ 	 prohibitively expensive.  In this case vectorization is adding an
+ 	 overhead that the original scalar code didn't have.
+ 
+ 	 This is mostly intended to detect cases in which WHILELOs dominate
+ 	 for very tight loops, which is something that normal latency-based
+ 	 costs would not model.  Adding this kind of cliffedge would be
+ 	 too drastic for scalar_cycles_per_iter vs. sve_cycles_per_iter;
+ 	 code later in the function handles that case in a more
+ 	 conservative way.  */
+       uint64_t sve_estimate = pred_cycles_per_iter + 1;
+       if (scalar_cycles_per_iter < sve_estimate)
+ 	{
+ 	  unsigned int min_cost
+ 	    = orig_body_cost * estimated_poly_value (BYTES_PER_SVE_VECTOR);
+ 	  if (body_cost < min_cost)
+ 	    {
+ 	      if (dump_enabled_p ())
+ 		dump_printf_loc (MSG_NOTE, vect_location,
+ 				 "Increasing body cost to %d because the"
+ 				 " scalar code could issue within the limit"
+ 				 " imposed by predicate operations\n",
+ 				 min_cost);
+ 	      body_cost = min_cost;
+ 	      should_disparage = true;
+ 	    }
+ 	}
+ 
+       /* If it appears that the Advanced SIMD version of a loop could issue
+ 	 more quickly than the SVE one, increase the SVE cost in proportion
+ 	 to the difference.  The intention is to make Advanced SIMD preferable
+ 	 in cases where an Advanced SIMD version exists, without increasing
+ 	 the costs so much that SVE won't be used at all.
+ 
+ 	 The reasoning is similar to the scalar vs. predicate comparison above:
+ 	 if the issue rate of the SVE code is limited by predicate operations
+ 	 (i.e. if pred_cycles_per_iter > sve_cycles_per_iter), and if the
+ 	 Advanced SIMD code could issue within the limit imposed by the
+ 	 predicate operations, the predicate operations are adding an
+ 	 overhead that the original code didn't have and so we should prefer
+ 	 the Advanced SIMD version.  However, if the predicate operations
+ 	 do not dominate in this way, we should only increase the cost of
+ 	 the SVE code if sve_cycles_per_iter is strictly greater than
+ 	 advsimd_cycles_per_iter.  Given rounding effects, this should mean
+ 	 that Advanced SIMD is either better or at least no worse.  */
+       if (sve_cycles_per_iter >= pred_cycles_per_iter)
+ 	sve_estimate = sve_cycles_per_iter;
+       if (could_use_advsimd && advsimd_cycles_per_iter < sve_estimate)
+ 	{
+ 	  /* This ensures that min_cost > orig_body_cost * 2.  */
+ 	  unsigned int min_cost
+ 	    = orig_body_cost * CEIL (sve_estimate, advsimd_cycles_per_iter) + 1;
+ 	  if (body_cost < min_cost)
+ 	    {
+ 	      if (dump_enabled_p ())
+ 		dump_printf_loc (MSG_NOTE, vect_location,
+ 				 "Increasing body cost to %d because Advanced"
+ 				 " SIMD code could issue as quickly\n",
+ 				 min_cost);
+ 	      body_cost = min_cost;
+ 	      should_disparage = true;
+ 	    }
+ 	}
+     }
+ 
+   /* Decide whether to stick to latency-based costs or whether to try to
+      take issue rates into account.  */
+   unsigned int threshold = aarch64_loop_vect_issue_rate_niters;
+   if (costs->vec_flags & VEC_ANY_SVE)
+     threshold = CEIL (threshold, aarch64_estimated_sve_vq ());
+ 
+   if (costs->num_vector_iterations >= 1
+       && costs->num_vector_iterations < threshold)
+     {
+       if (dump_enabled_p ())
+ 	dump_printf_loc (MSG_NOTE, vect_location,
+ 			 "Low iteration count, so using pure latency"
+ 			 " costs\n");
+     }
+   /* Increase the cost of the vector code if it looks like the scalar code
+      could issue more quickly.  These values are only rough estimates,
+      so minor differences should only result in minor changes.  */
+   else if (scalar_cycles_per_iter < vector_cycles_per_iter)
+     {
+       body_cost = CEIL (body_cost * vector_cycles_per_iter,
+ 			scalar_cycles_per_iter);
+       if (dump_enabled_p ())
+ 	dump_printf_loc (MSG_NOTE, vect_location,
+ 			 "Increasing body cost to %d because scalar code"
+ 			 " would issue more quickly\n", body_cost);
+     }
+   /* In general, it's expected that the proposed vector code would be able
+      to issue more quickly than the original scalar code.  This should
+      already be reflected to some extent in the latency-based costs.
+ 
+      However, the latency-based costs effectively assume that the scalar
+      code and the vector code execute serially, which tends to underplay
+      one important case: if the real (non-serialized) execution time of
+      a scalar iteration is dominated by loop-carried dependencies,
+      and if the vector code is able to reduce both the length of
+      the loop-carried dependencies *and* the number of cycles needed
+      to issue the code in general, we can be more confident that the
+      vector code is an improvement, even if adding the other (non-loop-carried)
+      latencies tends to hide this saving.  We therefore reduce the cost of the
+      vector loop body in proportion to the saving.  */
+   else if (costs->scalar_ops.reduction_latency > vector_reduction_latency
+ 	   && costs->scalar_ops.reduction_latency == scalar_cycles_per_iter
+ 	   && scalar_cycles_per_iter > vector_cycles_per_iter
+ 	   && !should_disparage)
+     {
+       body_cost = CEIL (body_cost * vector_cycles_per_iter,
+ 			scalar_cycles_per_iter);
+       if (dump_enabled_p ())
+ 	dump_printf_loc (MSG_NOTE, vect_location,
+ 			 "Decreasing body cost to %d account for smaller"
+ 			 " reduction latency\n", body_cost);
+     }
+ 
+   return body_cost;
+ }
+ 
+ /* Implement TARGET_VECTORIZE_FINISH_COST.  */
+ static void
+ aarch64_finish_cost (void *data, unsigned *prologue_cost,
+ 		     unsigned *body_cost, unsigned *epilogue_cost)
+ {
+   auto *costs = static_cast<aarch64_vector_costs *> (data);
+   *prologue_cost = costs->region[vect_prologue];
+   *body_cost     = costs->region[vect_body];
+   *epilogue_cost = costs->region[vect_epilogue];
+ 
+   if (costs->is_loop
+       && costs->vec_flags
+       && aarch64_use_new_vector_costs_p ())
+     *body_cost = aarch64_adjust_body_cost (costs, *body_cost);
+ }
+ 
+ /* Implement TARGET_VECTORIZE_DESTROY_COST_DATA.  */
+ static void
+ aarch64_destroy_cost_data (void *data)
+ {
+   delete static_cast<aarch64_vector_costs *> (data);
+ }
+ 
  static void initialize_aarch64_code_model (struct gcc_options *);
  
  /* Parse the TO_PARSE string and put the architecture struct that it
*************** aarch64_override_options_internal (struc
*** 14572,14585 ****
    SET_OPTION_IF_UNSET (opts, &global_options_set,
  		       param_sched_autopref_queue_depth, queue_depth);
  
-   /* If the core wants only AdvancedSIMD autovectorization, do this through
-      aarch64_autovec_preference.  If the user set it explicitly, they should
-      know what they want.  */
-   if (aarch64_tune_params.extra_tuning_flags
-       & AARCH64_EXTRA_TUNE_PREFER_ADVSIMD_AUTOVEC)
-     SET_OPTION_IF_UNSET (opts, &global_options_set,
- 			 aarch64_autovec_preference, 1);
- 
    /* If using Advanced SIMD only for autovectorization disable SVE vector costs
       comparison.  */
    if (aarch64_autovec_preference == 1)
--- 16275,16280 ----
*************** aarch64_override_options (void)
*** 15218,15224 ****
    /* Save these options as the default ones in case we push and pop them later
       while processing functions with potential target attributes.  */
    target_option_default_node = target_option_current_node
!       = build_target_option_node (&global_options);
  }
  
  /* Implement targetm.override_options_after_change.  */
--- 16913,16919 ----
    /* Save these options as the default ones in case we push and pop them later
       while processing functions with potential target attributes.  */
    target_option_default_node = target_option_current_node
!     = build_target_option_node (&global_options, &global_options_set);
  }
  
  /* Implement targetm.override_options_after_change.  */
*************** aarch64_override_options_after_change (v
*** 15229,15234 ****
--- 16924,16939 ----
    aarch64_override_options_after_change_1 (&global_options);
  }
  
+ /* Implement the TARGET_OFFLOAD_OPTIONS hook.  */
+ static char *
+ aarch64_offload_options (void)
+ {
+   if (TARGET_ILP32)
+     return xstrdup ("-foffload-abi=ilp32");
+   else
+     return xstrdup ("-foffload-abi=lp64");
+ }
+ 
  static struct machine_function *
  aarch64_init_machine_status (void)
  {
*************** initialize_aarch64_code_model (struct gc
*** 15283,15289 ****
  /* Implement TARGET_OPTION_SAVE.  */
  
  static void
! aarch64_option_save (struct cl_target_option *ptr, struct gcc_options *opts)
  {
    ptr->x_aarch64_override_tune_string = opts->x_aarch64_override_tune_string;
    ptr->x_aarch64_branch_protection_string
--- 16988,16995 ----
  /* Implement TARGET_OPTION_SAVE.  */
  
  static void
! aarch64_option_save (struct cl_target_option *ptr, struct gcc_options *opts,
! 		     struct gcc_options */* opts_set */)
  {
    ptr->x_aarch64_override_tune_string = opts->x_aarch64_override_tune_string;
    ptr->x_aarch64_branch_protection_string
*************** aarch64_option_save (struct cl_target_op
*** 15294,15305 ****
     using the information saved in PTR.  */
  
  static void
! aarch64_option_restore (struct gcc_options *opts, struct cl_target_option *ptr)
  {
-   opts->x_explicit_tune_core = ptr->x_explicit_tune_core;
-   selected_tune = aarch64_get_tune_cpu (ptr->x_explicit_tune_core);
    opts->x_explicit_arch = ptr->x_explicit_arch;
    selected_arch = aarch64_get_arch (ptr->x_explicit_arch);
    opts->x_aarch64_override_tune_string = ptr->x_aarch64_override_tune_string;
    opts->x_aarch64_branch_protection_string
      = ptr->x_aarch64_branch_protection_string;
--- 17000,17017 ----
     using the information saved in PTR.  */
  
  static void
! aarch64_option_restore (struct gcc_options *opts,
! 			struct gcc_options */* opts_set */,
! 			struct cl_target_option *ptr)
  {
    opts->x_explicit_arch = ptr->x_explicit_arch;
    selected_arch = aarch64_get_arch (ptr->x_explicit_arch);
+   opts->x_explicit_tune_core = ptr->x_explicit_tune_core;
+   if (opts->x_explicit_tune_core == aarch64_none
+       && opts->x_explicit_arch != aarch64_no_arch)
+     selected_tune = &all_cores[selected_arch->ident];
+   else
+     selected_tune = aarch64_get_tune_cpu (ptr->x_explicit_tune_core);
    opts->x_aarch64_override_tune_string = ptr->x_aarch64_override_tune_string;
    opts->x_aarch64_branch_protection_string
      = ptr->x_aarch64_branch_protection_string;
*************** aarch64_set_current_function (tree fndec
*** 15384,15390 ****
    aarch64_previous_fndecl = fndecl;
  
    /* First set the target options.  */
!   cl_target_option_restore (&global_options, TREE_TARGET_OPTION (new_tree));
  
    aarch64_save_restore_target_globals (new_tree);
  }
--- 17096,17103 ----
    aarch64_previous_fndecl = fndecl;
  
    /* First set the target options.  */
!   cl_target_option_restore (&global_options, &global_options_set,
! 			    TREE_TARGET_OPTION (new_tree));
  
    aarch64_save_restore_target_globals (new_tree);
  }
*************** aarch64_option_valid_attribute_p (tree f
*** 15883,15899 ****
      }
    tree func_optimize = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl);
  
!   old_optimize = build_optimization_node (&global_options);
    func_optimize = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl);
  
    /* If the function changed the optimization levels as well as setting
       target options, start with the optimizations specified.  */
    if (func_optimize && func_optimize != old_optimize)
!     cl_optimization_restore (&global_options,
  			     TREE_OPTIMIZATION (func_optimize));
  
    /* Save the current target options to restore at the end.  */
!   cl_target_option_save (&cur_target, &global_options);
  
    /* If fndecl already has some target attributes applied to it, unpack
       them so that we add this attribute on top of them, rather than
--- 17596,17613 ----
      }
    tree func_optimize = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl);
  
!   old_optimize
!     = build_optimization_node (&global_options, &global_options_set);
    func_optimize = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl);
  
    /* If the function changed the optimization levels as well as setting
       target options, start with the optimizations specified.  */
    if (func_optimize && func_optimize != old_optimize)
!     cl_optimization_restore (&global_options, &global_options_set,
  			     TREE_OPTIMIZATION (func_optimize));
  
    /* Save the current target options to restore at the end.  */
!   cl_target_option_save (&cur_target, &global_options, &global_options_set);
  
    /* If fndecl already has some target attributes applied to it, unpack
       them so that we add this attribute on top of them, rather than
*************** aarch64_option_valid_attribute_p (tree f
*** 15904,15914 ****
  	= TREE_TARGET_OPTION (existing_target);
  
        if (existing_options)
! 	cl_target_option_restore (&global_options, existing_options);
      }
    else
!     cl_target_option_restore (&global_options,
! 			TREE_TARGET_OPTION (target_option_current_node));
  
    ret = aarch64_process_target_attr (args);
  
--- 17618,17629 ----
  	= TREE_TARGET_OPTION (existing_target);
  
        if (existing_options)
! 	cl_target_option_restore (&global_options, &global_options_set,
! 				  existing_options);
      }
    else
!     cl_target_option_restore (&global_options, &global_options_set,
! 			      TREE_TARGET_OPTION (target_option_current_node));
  
    ret = aarch64_process_target_attr (args);
  
*************** aarch64_option_valid_attribute_p (tree f
*** 15928,15939 ****
  	  aarch64_init_simd_builtins ();
  	  current_target_pragma = saved_current_target_pragma;
  	}
!       new_target = build_target_option_node (&global_options);
      }
    else
      new_target = NULL;
  
!   new_optimize = build_optimization_node (&global_options);
  
    if (fndecl && ret)
      {
--- 17643,17656 ----
  	  aarch64_init_simd_builtins ();
  	  current_target_pragma = saved_current_target_pragma;
  	}
!       new_target = build_target_option_node (&global_options,
! 					     &global_options_set);
      }
    else
      new_target = NULL;
  
!   new_optimize = build_optimization_node (&global_options,
! 					  &global_options_set);
  
    if (fndecl && ret)
      {
*************** aarch64_option_valid_attribute_p (tree f
*** 15943,15952 ****
  	DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl) = new_optimize;
      }
  
!   cl_target_option_restore (&global_options, &cur_target);
  
    if (old_optimize != new_optimize)
!     cl_optimization_restore (&global_options,
  			     TREE_OPTIMIZATION (old_optimize));
    return ret;
  }
--- 17660,17669 ----
  	DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl) = new_optimize;
      }
  
!   cl_target_option_restore (&global_options, &global_options_set, &cur_target);
  
    if (old_optimize != new_optimize)
!     cl_optimization_restore (&global_options, &global_options_set,
  			     TREE_OPTIMIZATION (old_optimize));
    return ret;
  }
*************** aarch64_tls_symbol_p (rtx x)
*** 16099,16105 ****
      return false;
  
    x = strip_salt (x);
!   if (GET_CODE (x) != SYMBOL_REF)
      return false;
  
    return SYMBOL_REF_TLS_MODEL (x) != 0;
--- 17816,17822 ----
      return false;
  
    x = strip_salt (x);
!   if (!SYMBOL_REF_P (x))
      return false;
  
    return SYMBOL_REF_TLS_MODEL (x) != 0;
*************** aarch64_classify_symbol (rtx x, HOST_WID
*** 16156,16162 ****
  {
    x = strip_salt (x);
  
!   if (GET_CODE (x) == LABEL_REF)
      {
        switch (aarch64_cmodel)
  	{
--- 17873,17879 ----
  {
    x = strip_salt (x);
  
!   if (LABEL_REF_P (x))
      {
        switch (aarch64_cmodel)
  	{
*************** aarch64_classify_symbol (rtx x, HOST_WID
*** 16177,16183 ****
  	}
      }
  
!   if (GET_CODE (x) == SYMBOL_REF)
      {
        if (aarch64_tls_symbol_p (x))
  	return aarch64_classify_tls_symbol (x);
--- 17894,17900 ----
  	}
      }
  
!   if (SYMBOL_REF_P (x))
      {
        if (aarch64_tls_symbol_p (x))
  	return aarch64_classify_tls_symbol (x);
*************** aarch64_legitimate_pic_operand_p (rtx x)
*** 16257,16263 ****
  {
    poly_int64 offset;
    x = strip_offset_and_salt (x, &offset);
!   if (GET_CODE (x) == SYMBOL_REF)
      return false;
  
    return true;
--- 17974,17980 ----
  {
    poly_int64 offset;
    x = strip_offset_and_salt (x, &offset);
!   if (SYMBOL_REF_P (x))
      return false;
  
    return true;
*************** aarch64_legitimate_constant_p (machine_m
*** 16271,16280 ****
  {
    /* Support CSE and rematerialization of common constants.  */
    if (CONST_INT_P (x)
!       || (CONST_DOUBLE_P (x) && GET_MODE_CLASS (mode) == MODE_FLOAT)
!       || GET_CODE (x) == CONST_VECTOR)
      return true;
  
    /* Do not allow vector struct mode constants for Advanced SIMD.
       We could support 0 and -1 easily, but they need support in
       aarch64-simd.md.  */
--- 17988,18009 ----
  {
    /* Support CSE and rematerialization of common constants.  */
    if (CONST_INT_P (x)
!       || (CONST_DOUBLE_P (x) && GET_MODE_CLASS (mode) == MODE_FLOAT))
      return true;
  
+   /* Only accept variable-length vector constants if they can be
+      handled directly.
+ 
+      ??? It would be possible (but complex) to handle rematerialization
+      of other constants via secondary reloads.  */
+   if (!GET_MODE_SIZE (mode).is_constant ())
+     return aarch64_simd_valid_immediate (x, NULL);
+ 
+   /* Otherwise, accept any CONST_VECTOR that, if all else fails, can at
+      least be forced to memory and loaded from there.  */
+   if (GET_CODE (x) == CONST_VECTOR)
+     return !targetm.cannot_force_const_mem (mode, x);
+ 
    /* Do not allow vector struct mode constants for Advanced SIMD.
       We could support 0 and -1 easily, but they need support in
       aarch64-simd.md.  */
*************** aarch64_legitimate_constant_p (machine_m
*** 16282,16295 ****
    if (vec_flags == (VEC_ADVSIMD | VEC_STRUCT))
      return false;
  
-   /* Only accept variable-length vector constants if they can be
-      handled directly.
- 
-      ??? It would be possible to handle rematerialization of other
-      constants via secondary reloads.  */
-   if (vec_flags & VEC_ANY_SVE)
-     return aarch64_simd_valid_immediate (x, NULL);
- 
    if (GET_CODE (x) == HIGH)
      x = XEXP (x, 0);
  
--- 18011,18016 ----
*************** aarch64_legitimate_constant_p (machine_m
*** 16318,16324 ****
      return true;
  
    /* Label references are always constant.  */
!   if (GET_CODE (x) == LABEL_REF)
      return true;
  
    return false;
--- 18039,18045 ----
      return true;
  
    /* Label references are always constant.  */
!   if (LABEL_REF_P (x))
      return true;
  
    return false;
*************** aarch64_gimplify_va_arg_expr (tree valis
*** 16537,16543 ****
  		  f_stack, NULL_TREE);
    size = int_size_in_bytes (type);
  
!   bool abi_break;
    align
      = aarch64_function_arg_alignment (mode, type, &abi_break) / BITS_PER_UNIT;
  
--- 18258,18264 ----
  		  f_stack, NULL_TREE);
    size = int_size_in_bytes (type);
  
!   unsigned int abi_break;
    align
      = aarch64_function_arg_alignment (mode, type, &abi_break) / BITS_PER_UNIT;
  
*************** aarch64_gimplify_va_arg_expr (tree valis
*** 16729,16734 ****
--- 18450,18456 ----
  	}
  
        /* *(field_ptr_t)&ha = *((field_ptr_t)vr_saved_area  */
+       TREE_ADDRESSABLE (tmp_ha) = 1;
        tmp_ha = build1 (ADDR_EXPR, field_ptr_t, tmp_ha);
        addr = t;
        t = fold_convert (field_ptr_t, addr);
*************** aarch64_short_vector_p (const_tree type,
*** 17159,17165 ****
      {
        /* Rely only on the type, not the mode, when processing SVE types.  */
        if (type && aarch64_some_values_include_pst_objects_p (type))
! 	gcc_assert (aarch64_sve_mode_p (mode));
        else
  	size = GET_MODE_SIZE (mode);
      }
--- 18881,18888 ----
      {
        /* Rely only on the type, not the mode, when processing SVE types.  */
        if (type && aarch64_some_values_include_pst_objects_p (type))
! 	/* Leave later code to report an error if SVE is disabled.  */
! 	gcc_assert (!TARGET_SVE || aarch64_sve_mode_p (mode));
        else
  	size = GET_MODE_SIZE (mode);
      }
*************** aarch64_composite_type_p (const_tree typ
*** 17213,17219 ****
     parameter passing registers are available).
  
     Upon successful return, *COUNT returns the number of needed registers,
!    *BASE_MODE returns the mode of the individual register and when IS_HAF
     is not NULL, *IS_HA indicates whether or not the argument is a homogeneous
     floating-point aggregate or a homogeneous short-vector aggregate.
  
--- 18936,18942 ----
     parameter passing registers are available).
  
     Upon successful return, *COUNT returns the number of needed registers,
!    *BASE_MODE returns the mode of the individual register and when IS_HA
     is not NULL, *IS_HA indicates whether or not the argument is a homogeneous
     floating-point aggregate or a homogeneous short-vector aggregate.
  
*************** aarch64_simd_container_mode (scalar_mode
*** 17406,17413 ****
    return word_mode;
  }
  
- static HOST_WIDE_INT aarch64_estimated_poly_value (poly_int64);
- 
  /* Compare an SVE mode SVE_M and an Advanced SIMD mode ASIMD_M
     and return whether the SVE mode should be preferred over the
     Advanced SIMD one in aarch64_autovectorize_vector_modes.  */
--- 19129,19134 ----
*************** aarch64_cmp_autovec_modes (machine_mode
*** 17440,17447 ****
      return maybe_gt (nunits_sve, nunits_asimd);
  
    /* Otherwise estimate the runtime width of the modes involved.  */
!   HOST_WIDE_INT est_sve = aarch64_estimated_poly_value (nunits_sve);
!   HOST_WIDE_INT est_asimd = aarch64_estimated_poly_value (nunits_asimd);
  
    /* Preferring SVE means picking it first unless the Advanced SIMD mode
       is clearly wider.  */
--- 19161,19168 ----
      return maybe_gt (nunits_sve, nunits_asimd);
  
    /* Otherwise estimate the runtime width of the modes involved.  */
!   HOST_WIDE_INT est_sve = estimated_poly_value (nunits_sve);
!   HOST_WIDE_INT est_asimd = estimated_poly_value (nunits_asimd);
  
    /* Preferring SVE means picking it first unless the Advanced SIMD mode
       is clearly wider.  */
*************** aarch64_sve_float_arith_immediate_p (rtx
*** 17819,17825 ****
    REAL_VALUE_TYPE r;
  
    if (!const_vec_duplicate_p (x, &elt)
!       || GET_CODE (elt) != CONST_DOUBLE)
      return false;
  
    r = *CONST_DOUBLE_REAL_VALUE (elt);
--- 19540,19546 ----
    REAL_VALUE_TYPE r;
  
    if (!const_vec_duplicate_p (x, &elt)
!       || !CONST_DOUBLE_P (elt))
      return false;
  
    r = *CONST_DOUBLE_REAL_VALUE (elt);
*************** aarch64_sve_float_mul_immediate_p (rtx x
*** 17843,17849 ****
    rtx elt;
  
    return (const_vec_duplicate_p (x, &elt)
! 	  && GET_CODE (elt) == CONST_DOUBLE
  	  && (real_equal (CONST_DOUBLE_REAL_VALUE (elt), &dconsthalf)
  	      || real_equal (CONST_DOUBLE_REAL_VALUE (elt), &dconst2)));
  }
--- 19564,19570 ----
    rtx elt;
  
    return (const_vec_duplicate_p (x, &elt)
! 	  && CONST_DOUBLE_P (elt)
  	  && (real_equal (CONST_DOUBLE_REAL_VALUE (elt), &dconsthalf)
  	      || real_equal (CONST_DOUBLE_REAL_VALUE (elt), &dconst2)));
  }
*************** aarch64_mov_operand_p (rtx x, machine_mo
*** 18262,18268 ****
      }
  
    x = strip_salt (x);
!   if (GET_CODE (x) == SYMBOL_REF && mode == DImode && CONSTANT_ADDRESS_P (x))
      return true;
  
    if (TARGET_SVE && aarch64_sve_cnt_immediate_p (x))
--- 19983,19989 ----
      }
  
    x = strip_salt (x);
!   if (SYMBOL_REF_P (x) && mode == DImode && CONSTANT_ADDRESS_P (x))
      return true;
  
    if (TARGET_SVE && aarch64_sve_cnt_immediate_p (x))
*************** bool
*** 18535,18545 ****
  aarch64_sve_prefetch_operand_p (rtx op, machine_mode mode)
  {
    struct aarch64_address_info addr;
!   if (!aarch64_classify_address (&addr, op, mode, false))
      return false;
  
    if (addr.type == ADDRESS_REG_IMM)
!     return known_eq (addr.const_offset, 0);
  
    return addr.type == ADDRESS_REG_REG;
  }
--- 20256,20266 ----
  aarch64_sve_prefetch_operand_p (rtx op, machine_mode mode)
  {
    struct aarch64_address_info addr;
!   if (!aarch64_classify_address (&addr, op, mode, false, ADDR_QUERY_ANY))
      return false;
  
    if (addr.type == ADDRESS_REG_IMM)
!     return offset_6bit_signed_scaled_p (mode, addr.const_offset);
  
    return addr.type == ADDRESS_REG_REG;
  }
*************** aarch64_vectorize_preferred_vector_align
*** 18621,18630 ****
  {
    if (aarch64_sve_data_mode_p (TYPE_MODE (type)))
      {
!       /* If the length of the vector is fixed, try to align to that length,
! 	 otherwise don't try to align at all.  */
        HOST_WIDE_INT result;
!       if (!BITS_PER_SVE_VECTOR.is_constant (&result))
  	result = TYPE_ALIGN (TREE_TYPE (type));
        return result;
      }
--- 20342,20352 ----
  {
    if (aarch64_sve_data_mode_p (TYPE_MODE (type)))
      {
!       /* If the length of the vector is a fixed power of 2, try to align
! 	 to that length, otherwise don't try to align at all.  */
        HOST_WIDE_INT result;
!       if (!GET_MODE_BITSIZE (TYPE_MODE (type)).is_constant (&result)
! 	  || !pow2p_hwi (result))
  	result = TYPE_ALIGN (TREE_TYPE (type));
        return result;
      }
*************** struct expand_vec_perm_d
*** 20305,20310 ****
--- 22027,22034 ----
    bool testing_p;
  };
  
+ static bool aarch64_expand_vec_perm_const_1 (struct expand_vec_perm_d *d);
+ 
  /* Generate a variable permutation.  */
  
  static void
*************** aarch64_evpc_trn (struct expand_vec_perm
*** 20490,20495 ****
--- 22214,22272 ----
    return true;
  }
  
+ /* Try to re-encode the PERM constant so it combines odd and even elements.
+    This rewrites constants such as {0, 1, 4, 5}/V4SF to {0, 2}/V2DI.
+    We retry with this new constant with the full suite of patterns.  */
+ static bool
+ aarch64_evpc_reencode (struct expand_vec_perm_d *d)
+ {
+   expand_vec_perm_d newd;
+   unsigned HOST_WIDE_INT nelt;
+ 
+   if (d->vec_flags != VEC_ADVSIMD)
+     return false;
+ 
+   /* Get the new mode.  Always twice the size of the inner
+      and half the elements.  */
+   poly_uint64 vec_bits = GET_MODE_BITSIZE (d->vmode);
+   unsigned int new_elt_bits = GET_MODE_UNIT_BITSIZE (d->vmode) * 2;
+   auto new_elt_mode = int_mode_for_size (new_elt_bits, false).require ();
+   machine_mode new_mode = aarch64_simd_container_mode (new_elt_mode, vec_bits);
+ 
+   if (new_mode == word_mode)
+     return false;
+ 
+   /* to_constant is safe since this routine is specific to Advanced SIMD
+      vectors.  */
+   nelt = d->perm.length ().to_constant ();
+ 
+   vec_perm_builder newpermconst;
+   newpermconst.new_vector (nelt / 2, nelt / 2, 1);
+ 
+   /* Convert the perm constant if we can.  Require even, odd as the pairs.  */
+   for (unsigned int i = 0; i < nelt; i += 2)
+     {
+       poly_int64 elt0 = d->perm[i];
+       poly_int64 elt1 = d->perm[i + 1];
+       poly_int64 newelt;
+       if (!multiple_p (elt0, 2, &newelt) || maybe_ne (elt0 + 1, elt1))
+ 	return false;
+       newpermconst.quick_push (newelt.to_constant ());
+     }
+   newpermconst.finalize ();
+ 
+   newd.vmode = new_mode;
+   newd.vec_flags = VEC_ADVSIMD;
+   newd.target = d->target ? gen_lowpart (new_mode, d->target) : NULL;
+   newd.op0 = d->op0 ? gen_lowpart (new_mode, d->op0) : NULL;
+   newd.op1 = d->op1 ? gen_lowpart (new_mode, d->op1) : NULL;
+   newd.testing_p = d->testing_p;
+   newd.one_vector_p = d->one_vector_p;
+ 
+   newd.perm.new_vector (newpermconst, newd.one_vector_p ? 1 : 2, nelt / 2);
+   return aarch64_expand_vec_perm_const_1 (&newd);
+ }
+ 
  /* Recognize patterns suitable for the UZP instructions.  */
  static bool
  aarch64_evpc_uzp (struct expand_vec_perm_d *d)
*************** aarch64_evpc_rev_local (struct expand_ve
*** 20629,20646 ****
        || !diff)
      return false;
  
!   size = (diff + 1) * GET_MODE_UNIT_SIZE (d->vmode);
!   if (size == 8)
      {
        unspec = UNSPEC_REV64;
        pred_mode = VNx2BImode;
      }
!   else if (size == 4)
      {
        unspec = UNSPEC_REV32;
        pred_mode = VNx4BImode;
      }
!   else if (size == 2)
      {
        unspec = UNSPEC_REV16;
        pred_mode = VNx8BImode;
--- 22406,22426 ----
        || !diff)
      return false;
  
!   if (d->vec_flags & VEC_SVE_DATA)
!     size = (diff + 1) * aarch64_sve_container_bits (d->vmode);
!   else
!     size = (diff + 1) * GET_MODE_UNIT_BITSIZE (d->vmode);
!   if (size == 64)
      {
        unspec = UNSPEC_REV64;
        pred_mode = VNx2BImode;
      }
!   else if (size == 32)
      {
        unspec = UNSPEC_REV32;
        pred_mode = VNx4BImode;
      }
!   else if (size == 16)
      {
        unspec = UNSPEC_REV16;
        pred_mode = VNx8BImode;
*************** aarch64_evpc_rev_local (struct expand_ve
*** 20657,20684 ****
    if (d->testing_p)
      return true;
  
!   if (d->vec_flags == VEC_SVE_DATA)
      {
!       machine_mode int_mode = aarch64_sve_int_mode (pred_mode);
!       rtx target = gen_reg_rtx (int_mode);
!       if (BYTES_BIG_ENDIAN)
! 	/* The act of taking a subreg between INT_MODE and d->vmode
! 	   is itself a reversing operation on big-endian targets;
! 	   see the comment at the head of aarch64-sve.md for details.
! 	   First reinterpret OP0 as INT_MODE without using a subreg
! 	   and without changing the contents.  */
! 	emit_insn (gen_aarch64_sve_reinterpret (int_mode, target, d->op0));
!       else
! 	{
! 	  /* For SVE we use REV[BHW] unspecs derived from the element size
! 	     of v->mode and vector modes whose elements have SIZE bytes.
! 	     This ensures that the vector modes match the predicate modes.  */
! 	  int unspec = aarch64_sve_rev_unspec (d->vmode);
! 	  rtx pred = aarch64_ptrue_reg (pred_mode);
! 	  emit_insn (gen_aarch64_pred (unspec, int_mode, target, pred,
! 				       gen_lowpart (int_mode, d->op0)));
! 	}
!       emit_move_insn (d->target, gen_lowpart (d->vmode, target));
        return true;
      }
    rtx src = gen_rtx_UNSPEC (d->vmode, gen_rtvec (1, d->op0), unspec);
--- 22437,22447 ----
    if (d->testing_p)
      return true;
  
!   if (d->vec_flags & VEC_SVE_DATA)
      {
!       rtx pred = aarch64_ptrue_reg (pred_mode);
!       emit_insn (gen_aarch64_sve_revbhw (d->vmode, pred_mode,
! 					 d->target, pred, d->op0));
        return true;
      }
    rtx src = gen_rtx_UNSPEC (d->vmode, gen_rtvec (1, d->op0), unspec);
*************** aarch64_evpc_dup (struct expand_vec_perm
*** 20723,20729 ****
        || !d->perm[0].is_constant (&elt))
      return false;
  
!   if (d->vec_flags == VEC_SVE_DATA && elt >= 64 * GET_MODE_UNIT_SIZE (vmode))
      return false;
  
    /* Success! */
--- 22486,22493 ----
        || !d->perm[0].is_constant (&elt))
      return false;
  
!   if ((d->vec_flags & VEC_SVE_DATA)
!       && elt * (aarch64_sve_container_bits (vmode) / 8) >= 64)
      return false;
  
    /* Success! */
*************** aarch64_evpc_sel (struct expand_vec_perm
*** 20853,20858 ****
--- 22617,22697 ----
    return true;
  }
  
+ /* Recognize patterns suitable for the INS instructions.  */
+ static bool
+ aarch64_evpc_ins (struct expand_vec_perm_d *d)
+ {
+   machine_mode mode = d->vmode;
+   unsigned HOST_WIDE_INT nelt;
+ 
+   if (d->vec_flags != VEC_ADVSIMD)
+     return false;
+ 
+   /* to_constant is safe since this routine is specific to Advanced SIMD
+      vectors.  */
+   nelt = d->perm.length ().to_constant ();
+   rtx insv = d->op0;
+ 
+   HOST_WIDE_INT idx = -1;
+ 
+   for (unsigned HOST_WIDE_INT i = 0; i < nelt; i++)
+     {
+       HOST_WIDE_INT elt;
+       if (!d->perm[i].is_constant (&elt))
+ 	return false;
+       if (elt == (HOST_WIDE_INT) i)
+ 	continue;
+       if (idx != -1)
+ 	{
+ 	  idx = -1;
+ 	  break;
+ 	}
+       idx = i;
+     }
+ 
+   if (idx == -1)
+     {
+       insv = d->op1;
+       for (unsigned HOST_WIDE_INT i = 0; i < nelt; i++)
+ 	{
+ 	  if (d->perm[i].to_constant () == (HOST_WIDE_INT) (i + nelt))
+ 	    continue;
+ 	  if (idx != -1)
+ 	    return false;
+ 	  idx = i;
+ 	}
+ 
+       if (idx == -1)
+ 	return false;
+     }
+ 
+   if (d->testing_p)
+     return true;
+ 
+   gcc_assert (idx != -1);
+ 
+   unsigned extractindex = d->perm[idx].to_constant ();
+   rtx extractv = d->op0;
+   if (extractindex >= nelt)
+     {
+       extractv = d->op1;
+       extractindex -= nelt;
+     }
+   gcc_assert (extractindex < nelt);
+ 
+   emit_move_insn (d->target, insv);
+   insn_code icode = code_for_aarch64_simd_vec_copy_lane (mode);
+   expand_operand ops[5];
+   create_output_operand (&ops[0], d->target, mode);
+   create_input_operand (&ops[1], d->target, mode);
+   create_integer_operand (&ops[2], 1 << idx);
+   create_input_operand (&ops[3], extractv, mode);
+   create_integer_operand (&ops[4], extractindex);
+   expand_insn (icode, 5, ops);
+ 
+   return true;
+ }
+ 
  static bool
  aarch64_expand_vec_perm_const_1 (struct expand_vec_perm_d *d)
  {
*************** aarch64_expand_vec_perm_const_1 (struct
*** 20868,20873 ****
--- 22707,22713 ----
  
    if ((d->vec_flags == VEC_ADVSIMD
         || d->vec_flags == VEC_SVE_DATA
+        || d->vec_flags == (VEC_SVE_DATA | VEC_PARTIAL)
         || d->vec_flags == VEC_SVE_PRED)
        && known_gt (nelt, 1))
      {
*************** aarch64_expand_vec_perm_const_1 (struct
*** 20887,20892 ****
--- 22727,22736 ----
  	return true;
        else if (aarch64_evpc_sel (d))
  	return true;
+       else if (aarch64_evpc_ins (d))
+ 	return true;
+       else if (aarch64_evpc_reencode (d))
+ 	return true;
        if (d->vec_flags == VEC_SVE_DATA)
  	return aarch64_evpc_sve_tbl (d);
        else if (d->vec_flags == VEC_ADVSIMD)
*************** aarch64_vectorize_vec_perm_const (machin
*** 20925,20932 ****
    d.vmode = vmode;
    d.vec_flags = aarch64_classify_vector_mode (d.vmode);
    d.target = target;
!   d.op0 = op0;
!   d.op1 = op1;
    d.testing_p = !target;
  
    if (!d.testing_p)
--- 22769,22779 ----
    d.vmode = vmode;
    d.vec_flags = aarch64_classify_vector_mode (d.vmode);
    d.target = target;
!   d.op0 = op0 ? force_reg (vmode, op0) : NULL_RTX;
!   if (op0 == op1)
!     d.op1 = d.op0;
!   else
!     d.op1 = op1 ? force_reg (vmode, op1) : NULL_RTX;
    d.testing_p = !target;
  
    if (!d.testing_p)
*************** static void
*** 21248,21253 ****
--- 23095,23121 ----
  aarch64_copy_one_block_and_progress_pointers (rtx *src, rtx *dst,
  					      machine_mode mode)
  {
+   /* Handle 256-bit memcpy separately.  We do this by making 2 adjacent memory
+      address copies using V4SImode so that we can use Q registers.  */
+   if (known_eq (GET_MODE_BITSIZE (mode), 256))
+     {
+       mode = V4SImode;
+       rtx reg1 = gen_reg_rtx (mode);
+       rtx reg2 = gen_reg_rtx (mode);
+       /* "Cast" the pointers to the correct mode.  */
+       *src = adjust_address (*src, mode, 0);
+       *dst = adjust_address (*dst, mode, 0);
+       /* Emit the memcpy.  */
+       emit_insn (aarch64_gen_load_pair (mode, reg1, *src, reg2,
+ 					aarch64_progress_pointer (*src)));
+       emit_insn (aarch64_gen_store_pair (mode, *dst, reg1,
+ 					 aarch64_progress_pointer (*dst), reg2));
+       /* Move the pointers forward.  */
+       *src = aarch64_move_pointer (*src, 32);
+       *dst = aarch64_move_pointer (*dst, 32);
+       return;
+     }
+ 
    rtx reg = gen_reg_rtx (mode);
  
    /* "Cast" the pointers to the correct mode.  */
*************** aarch64_copy_one_block_and_progress_poin
*** 21267,21301 ****
  bool
  aarch64_expand_cpymem (rtx *operands)
  {
!   /* These need to be signed as we need to perform arithmetic on n as
!      signed operations.  */
!   int n, mode_bits;
    rtx dst = operands[0];
    rtx src = operands[1];
    rtx base;
!   machine_mode cur_mode = BLKmode, next_mode;
!   bool speed_p = !optimize_function_for_size_p (cfun);
! 
!   /* When optimizing for size, give a better estimate of the length of a
!      memcpy call, but use the default otherwise.  Moves larger than 8 bytes
!      will always require an even number of instructions to do now.  And each
!      operation requires both a load+store, so divide the max number by 2.  */
!   unsigned int max_num_moves = (speed_p ? 16 : AARCH64_CALL_RATIO) / 2;
  
!   /* We can't do anything smart if the amount to copy is not constant.  */
    if (!CONST_INT_P (operands[2]))
      return false;
  
!   unsigned HOST_WIDE_INT tmp = INTVAL (operands[2]);
  
!   /* Try to keep the number of instructions low.  For all cases we will do at
!      most two moves for the residual amount, since we'll always overlap the
!      remainder.  */
!   if (((tmp / 16) + (tmp % 16 ? 2 : 0)) > max_num_moves)
!     return false;
  
!   /* At this point tmp is known to have to fit inside an int.  */
!   n = tmp;
  
    base = copy_to_mode_reg (Pmode, XEXP (dst, 0));
    dst = adjust_automodify_address (dst, VOIDmode, base, 0);
--- 23135,23173 ----
  bool
  aarch64_expand_cpymem (rtx *operands)
  {
!   int mode_bits;
    rtx dst = operands[0];
    rtx src = operands[1];
    rtx base;
!   machine_mode cur_mode = BLKmode;
  
!   /* Only expand fixed-size copies.  */
    if (!CONST_INT_P (operands[2]))
      return false;
  
!   unsigned HOST_WIDE_INT size = INTVAL (operands[2]);
  
!   /* Inline up to 256 bytes when optimizing for speed.  */
!   unsigned HOST_WIDE_INT max_copy_size = 256;
  
!   if (optimize_function_for_size_p (cfun))
!     max_copy_size = 128;
! 
!   int copy_bits = 256;
! 
!   /* Default to 256-bit LDP/STP on large copies, however small copies, no SIMD
!      support or slow 256-bit LDP/STP fall back to 128-bit chunks.  */
!   if (size <= 24
!       || !TARGET_SIMD
!       || (aarch64_tune_params.extra_tuning_flags
! 	  & AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS))
!     {
!       copy_bits = 128;
!       max_copy_size = max_copy_size / 2;
!     }
! 
!   if (size > max_copy_size)
!     return false;
  
    base = copy_to_mode_reg (Pmode, XEXP (dst, 0));
    dst = adjust_automodify_address (dst, VOIDmode, base, 0);
*************** aarch64_expand_cpymem (rtx *operands)
*** 21303,21314 ****
    base = copy_to_mode_reg (Pmode, XEXP (src, 0));
    src = adjust_automodify_address (src, VOIDmode, base, 0);
  
!   /* Convert n to bits to make the rest of the code simpler.  */
!   n = n * BITS_PER_UNIT;
! 
!   /* Maximum amount to copy in one go.  The AArch64 back-end has integer modes
!      larger than TImode, but we should not use them for loads/stores here.  */
!   const int copy_limit = GET_MODE_BITSIZE (TImode);
  
    while (n > 0)
      {
--- 23175,23182 ----
    base = copy_to_mode_reg (Pmode, XEXP (src, 0));
    src = adjust_automodify_address (src, VOIDmode, base, 0);
  
!   /* Convert size to bits to make the rest of the code simpler.  */
!   int n = size * BITS_PER_UNIT;
  
    while (n > 0)
      {
*************** aarch64_expand_cpymem (rtx *operands)
*** 21316,21340 ****
  	 or writing.  */
        opt_scalar_int_mode mode_iter;
        FOR_EACH_MODE_IN_CLASS (mode_iter, MODE_INT)
! 	if (GET_MODE_BITSIZE (mode_iter.require ()) <= MIN (n, copy_limit))
  	  cur_mode = mode_iter.require ();
  
        gcc_assert (cur_mode != BLKmode);
  
        mode_bits = GET_MODE_BITSIZE (cur_mode).to_constant ();
        aarch64_copy_one_block_and_progress_pointers (&src, &dst, cur_mode);
  
        n -= mode_bits;
  
        /* Do certain trailing copies as overlapping if it's going to be
  	 cheaper.  i.e. less instructions to do so.  For instance doing a 15
  	 byte copy it's more efficient to do two overlapping 8 byte copies than
! 	 8 + 6 + 1.  */
!       if (n > 0 && n <= 8 * BITS_PER_UNIT)
  	{
  	  next_mode = smallest_mode_for_size (n, MODE_INT);
  	  int n_bits = GET_MODE_BITSIZE (next_mode).to_constant ();
! 	  src = aarch64_move_pointer (src, (n - n_bits) / BITS_PER_UNIT);
  	  dst = aarch64_move_pointer (dst, (n - n_bits) / BITS_PER_UNIT);
  	  n = n_bits;
  	}
--- 23184,23340 ----
  	 or writing.  */
        opt_scalar_int_mode mode_iter;
        FOR_EACH_MODE_IN_CLASS (mode_iter, MODE_INT)
! 	if (GET_MODE_BITSIZE (mode_iter.require ()) <= MIN (n, copy_bits))
  	  cur_mode = mode_iter.require ();
  
        gcc_assert (cur_mode != BLKmode);
  
        mode_bits = GET_MODE_BITSIZE (cur_mode).to_constant ();
+ 
+       /* Prefer Q-register accesses for the last bytes.  */
+       if (mode_bits == 128 && copy_bits == 256)
+ 	cur_mode = V4SImode;
+ 
        aarch64_copy_one_block_and_progress_pointers (&src, &dst, cur_mode);
  
        n -= mode_bits;
  
+       /* Emit trailing copies using overlapping unaligned accesses - this is
+ 	 smaller and faster.  */
+       if (n > 0 && n < copy_bits / 2)
+ 	{
+ 	  machine_mode next_mode = smallest_mode_for_size (n, MODE_INT);
+ 	  int n_bits = GET_MODE_BITSIZE (next_mode).to_constant ();
+ 	  gcc_assert (n_bits <= mode_bits);
+ 	  src = aarch64_move_pointer (src, (n - n_bits) / BITS_PER_UNIT);
+ 	  dst = aarch64_move_pointer (dst, (n - n_bits) / BITS_PER_UNIT);
+ 	  n = n_bits;
+ 	}
+     }
+ 
+   return true;
+ }
+ 
+ /* Like aarch64_copy_one_block_and_progress_pointers, except for memset where
+    SRC is a register we have created with the duplicated value to be set.  */
+ static void
+ aarch64_set_one_block_and_progress_pointer (rtx src, rtx *dst,
+ 					    machine_mode mode)
+ {
+   /* If we are copying 128bits or 256bits, we can do that straight from
+      the SIMD register we prepared.  */
+   if (known_eq (GET_MODE_BITSIZE (mode), 256))
+     {
+       mode = GET_MODE (src);
+       /* "Cast" the *dst to the correct mode.  */
+       *dst = adjust_address (*dst, mode, 0);
+       /* Emit the memset.  */
+       emit_insn (aarch64_gen_store_pair (mode, *dst, src,
+ 					 aarch64_progress_pointer (*dst), src));
+ 
+       /* Move the pointers forward.  */
+       *dst = aarch64_move_pointer (*dst, 32);
+       return;
+     }
+   if (known_eq (GET_MODE_BITSIZE (mode), 128))
+     {
+       /* "Cast" the *dst to the correct mode.  */
+       *dst = adjust_address (*dst, GET_MODE (src), 0);
+       /* Emit the memset.  */
+       emit_move_insn (*dst, src);
+       /* Move the pointers forward.  */
+       *dst = aarch64_move_pointer (*dst, 16);
+       return;
+     }
+   /* For copying less, we have to extract the right amount from src.  */
+   rtx reg = lowpart_subreg (mode, src, GET_MODE (src));
+ 
+   /* "Cast" the *dst to the correct mode.  */
+   *dst = adjust_address (*dst, mode, 0);
+   /* Emit the memset.  */
+   emit_move_insn (*dst, reg);
+   /* Move the pointer forward.  */
+   *dst = aarch64_progress_pointer (*dst);
+ }
+ 
+ /* Expand setmem, as if from a __builtin_memset.  Return true if
+    we succeed, otherwise return false.  */
+ 
+ bool
+ aarch64_expand_setmem (rtx *operands)
+ {
+   int n, mode_bits;
+   unsigned HOST_WIDE_INT len;
+   rtx dst = operands[0];
+   rtx val = operands[2], src;
+   rtx base;
+   machine_mode cur_mode = BLKmode, next_mode;
+ 
+   /* We can't do anything smart if the amount to copy is not constant.  */
+   if (!CONST_INT_P (operands[1]))
+     return false;
+ 
+   bool speed_p = !optimize_function_for_size_p (cfun);
+ 
+   /* Default the maximum to 256-bytes.  */
+   unsigned max_set_size = 256;
+ 
+   /* In case we are optimizing for size or if the core does not
+      want to use STP Q regs, lower the max_set_size.  */
+   max_set_size = (!speed_p
+ 		  || (aarch64_tune_params.extra_tuning_flags
+ 		      & AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS))
+ 		  ? max_set_size / 2 : max_set_size;
+ 
+   len = INTVAL (operands[1]);
+ 
+   /* Upper bound check.  */
+   if (len > max_set_size)
+     return false;
+ 
+   base = copy_to_mode_reg (Pmode, XEXP (dst, 0));
+   dst = adjust_automodify_address (dst, VOIDmode, base, 0);
+ 
+   /* Prepare the val using a DUP/MOVI v0.16B, val.  */
+   src = expand_vector_broadcast (V16QImode, val);
+   src = force_reg (V16QImode, src);
+ 
+   /* Convert len to bits to make the rest of the code simpler.  */
+   n = len * BITS_PER_UNIT;
+ 
+   /* Maximum amount to copy in one go.  We allow 256-bit chunks based on the
+      AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS tuning parameter.  setmem expand
+      pattern is only turned on for TARGET_SIMD.  */
+   const int copy_limit = (speed_p
+ 			  && (aarch64_tune_params.extra_tuning_flags
+ 			      & AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS))
+ 			  ? GET_MODE_BITSIZE (TImode) : 256;
+ 
+   while (n > 0)
+     {
+       /* Find the largest mode in which to do the copy without
+ 	 over writing.  */
+       opt_scalar_int_mode mode_iter;
+       FOR_EACH_MODE_IN_CLASS (mode_iter, MODE_INT)
+ 	if (GET_MODE_BITSIZE (mode_iter.require ()) <= MIN (n, copy_limit))
+ 	  cur_mode = mode_iter.require ();
+ 
+       gcc_assert (cur_mode != BLKmode);
+ 
+       mode_bits = GET_MODE_BITSIZE (cur_mode).to_constant ();
+       aarch64_set_one_block_and_progress_pointer (src, &dst, cur_mode);
+ 
+       n -= mode_bits;
+ 
        /* Do certain trailing copies as overlapping if it's going to be
  	 cheaper.  i.e. less instructions to do so.  For instance doing a 15
  	 byte copy it's more efficient to do two overlapping 8 byte copies than
! 	 8 + 4 + 2 + 1.  */
!       if (n > 0 && n < copy_limit / 2)
  	{
  	  next_mode = smallest_mode_for_size (n, MODE_INT);
  	  int n_bits = GET_MODE_BITSIZE (next_mode).to_constant ();
! 	  gcc_assert (n_bits <= mode_bits);
  	  dst = aarch64_move_pointer (dst, (n - n_bits) / BITS_PER_UNIT);
  	  n = n_bits;
  	}
*************** aarch64_expand_cpymem (rtx *operands)
*** 21343,21348 ****
--- 23343,23349 ----
    return true;
  }
  
+ 
  /* Split a DImode store of a CONST_INT SRC to MEM DST as two
     SImode stores.  Handle the case when the constant has identical
     bottom and top halves.  This is beneficial when the two stores can be
*************** fusion_load_store (rtx_insn *insn, rtx *
*** 22018,22037 ****
      {
        fusion = SCHED_FUSION_LD_SIGN_EXTEND;
        src = XEXP (src, 0);
!       if (GET_CODE (src) != MEM || GET_MODE (src) != SImode)
  	return SCHED_FUSION_NONE;
      }
    else if (GET_CODE (src) == ZERO_EXTEND)
      {
        fusion = SCHED_FUSION_LD_ZERO_EXTEND;
        src = XEXP (src, 0);
!       if (GET_CODE (src) != MEM || GET_MODE (src) != SImode)
  	return SCHED_FUSION_NONE;
      }
  
!   if (GET_CODE (src) == MEM && REG_P (dest))
      extract_base_offset_in_addr (src, base, offset);
!   else if (GET_CODE (dest) == MEM && (REG_P (src) || src == const0_rtx))
      {
        fusion = SCHED_FUSION_ST;
        extract_base_offset_in_addr (dest, base, offset);
--- 24019,24038 ----
      {
        fusion = SCHED_FUSION_LD_SIGN_EXTEND;
        src = XEXP (src, 0);
!       if (!MEM_P (src) || GET_MODE (src) != SImode)
  	return SCHED_FUSION_NONE;
      }
    else if (GET_CODE (src) == ZERO_EXTEND)
      {
        fusion = SCHED_FUSION_LD_ZERO_EXTEND;
        src = XEXP (src, 0);
!       if (!MEM_P (src) || GET_MODE (src) != SImode)
  	return SCHED_FUSION_NONE;
      }
  
!   if (MEM_P (src) && REG_P (dest))
      extract_base_offset_in_addr (src, base, offset);
!   else if (MEM_P (dest) && (REG_P (src) || src == const0_rtx))
      {
        fusion = SCHED_FUSION_ST;
        extract_base_offset_in_addr (dest, base, offset);
*************** aarch64_ldrstr_offset_compare (const voi
*** 22314,22320 ****
  
  bool
  aarch64_operands_adjust_ok_for_ldpstp (rtx *operands, bool load,
! 				       scalar_mode mode)
  {
    const int num_insns = 4;
    enum reg_class rclass;
--- 24315,24321 ----
  
  bool
  aarch64_operands_adjust_ok_for_ldpstp (rtx *operands, bool load,
! 				       machine_mode mode)
  {
    const int num_insns = 4;
    enum reg_class rclass;
*************** aarch64_operands_adjust_ok_for_ldpstp (r
*** 22391,22397 ****
    for (int i = 0; i < num_insns; i++)
      offvals[i] = INTVAL (offset[i]);
  
!   msize = GET_MODE_SIZE (mode);
  
    /* Check if the offsets can be put in the right order to do a ldp/stp.  */
    qsort (offvals, num_insns, sizeof (HOST_WIDE_INT),
--- 24392,24398 ----
    for (int i = 0; i < num_insns; i++)
      offvals[i] = INTVAL (offset[i]);
  
!   msize = GET_MODE_SIZE (mode).to_constant ();
  
    /* Check if the offsets can be put in the right order to do a ldp/stp.  */
    qsort (offvals, num_insns, sizeof (HOST_WIDE_INT),
*************** aarch64_operands_adjust_ok_for_ldpstp (r
*** 22431,22437 ****
  
  bool
  aarch64_gen_adjusted_ldpstp (rtx *operands, bool load,
! 			     scalar_mode mode, RTX_CODE code)
  {
    rtx base, offset_1, offset_3, t1, t2;
    rtx mem_1, mem_2, mem_3, mem_4;
--- 24432,24438 ----
  
  bool
  aarch64_gen_adjusted_ldpstp (rtx *operands, bool load,
! 			     machine_mode mode, RTX_CODE code)
  {
    rtx base, offset_1, offset_3, t1, t2;
    rtx mem_1, mem_2, mem_3, mem_4;
*************** aarch64_gen_adjusted_ldpstp (rtx *operan
*** 22470,22476 ****
  	      && offset_3 != NULL_RTX);
  
    /* Adjust offset so it can fit in LDP/STP instruction.  */
!   msize = GET_MODE_SIZE (mode);
    stp_off_upper_limit = msize * (0x40 - 1);
    stp_off_lower_limit = - msize * 0x40;
  
--- 24471,24477 ----
  	      && offset_3 != NULL_RTX);
  
    /* Adjust offset so it can fit in LDP/STP instruction.  */
!   msize = GET_MODE_SIZE (mode).to_constant();
    stp_off_upper_limit = msize * (0x40 - 1);
    stp_off_lower_limit = - msize * 0x40;
  
*************** aarch64_speculation_safe_value (machine_
*** 22959,22977 ****
  
  /* Implement TARGET_ESTIMATED_POLY_VALUE.
     Look into the tuning structure for an estimate.
!    VAL.coeffs[1] is multiplied by the number of VQ chunks over the initial
!    Advanced SIMD 128 bits.  */
  
  static HOST_WIDE_INT
! aarch64_estimated_poly_value (poly_int64 val)
  {
    enum aarch64_sve_vector_bits_enum width_source
      = aarch64_tune_params.sve_width;
  
!   /* If we still don't have an estimate, use the default.  */
    if (width_source == SVE_SCALABLE)
!     return default_estimated_poly_value (val);
  
    HOST_WIDE_INT over_128 = width_source - 128;
    return val.coeffs[0] + val.coeffs[1] * over_128 / 128;
  }
--- 24960,24997 ----
  
  /* Implement TARGET_ESTIMATED_POLY_VALUE.
     Look into the tuning structure for an estimate.
!    KIND specifies the type of requested estimate: min, max or likely.
!    For cores with a known SVE width all three estimates are the same.
!    For generic SVE tuning we want to distinguish the maximum estimate from
!    the minimum and likely ones.
!    The likely estimate is the same as the minimum in that case to give a
!    conservative behavior of auto-vectorizing with SVE when it is a win
!    even for 128-bit SVE.
!    When SVE width information is available VAL.coeffs[1] is multiplied by
!    the number of VQ chunks over the initial Advanced SIMD 128 bits.  */
  
  static HOST_WIDE_INT
! aarch64_estimated_poly_value (poly_int64 val,
! 			      poly_value_estimate_kind kind
! 				= POLY_VALUE_LIKELY)
  {
    enum aarch64_sve_vector_bits_enum width_source
      = aarch64_tune_params.sve_width;
  
!   /* If there is no core-specific information then the minimum and likely
!      values are based on 128-bit vectors and the maximum is based on
!      the architectural maximum of 2048 bits.  */
    if (width_source == SVE_SCALABLE)
!     switch (kind)
!       {
!       case POLY_VALUE_MIN:
!       case POLY_VALUE_LIKELY:
! 	return val.coeffs[0];
!       case POLY_VALUE_MAX:
! 	  return val.coeffs[0] + val.coeffs[1] * 15;
!       }
  
+   /* If the core provides width information, use that.  */
    HOST_WIDE_INT over_128 = width_source - 128;
    return val.coeffs[0] + val.coeffs[1] * over_128 / 128;
  }
*************** aarch64_simd_clone_compute_vecsize_and_s
*** 23013,23031 ****
  					struct cgraph_simd_clone *clonei,
  					tree base_type, int num)
  {
!   tree t, ret_type, arg_type;
!   unsigned int elt_bits, vec_bits, count;
  
    if (!TARGET_SIMD)
      return 0;
  
!   if (clonei->simdlen
!       && (clonei->simdlen < 2
! 	  || clonei->simdlen > 1024
! 	  || (clonei->simdlen & (clonei->simdlen - 1)) != 0))
      {
        warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
! 		  "unsupported simdlen %d", clonei->simdlen);
        return 0;
      }
  
--- 25033,25056 ----
  					struct cgraph_simd_clone *clonei,
  					tree base_type, int num)
  {
!   tree t, ret_type;
!   unsigned int elt_bits, count;
!   unsigned HOST_WIDE_INT const_simdlen;
!   poly_uint64 vec_bits;
  
    if (!TARGET_SIMD)
      return 0;
  
!   /* For now, SVE simdclones won't produce illegal simdlen, So only check
!      const simdlens here.  */
!   if (maybe_ne (clonei->simdlen, 0U)
!       && clonei->simdlen.is_constant (&const_simdlen)
!       && (const_simdlen < 2
! 	  || const_simdlen > 1024
! 	  || (const_simdlen & (const_simdlen - 1)) != 0))
      {
        warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
! 		  "unsupported simdlen %wd", const_simdlen);
        return 0;
      }
  
*************** aarch64_simd_clone_compute_vecsize_and_s
*** 23075,23095 ****
    clonei->vecsize_mangle = 'n';
    clonei->mask_mode = VOIDmode;
    elt_bits = GET_MODE_BITSIZE (SCALAR_TYPE_MODE (base_type));
!   if (clonei->simdlen == 0)
      {
        count = 2;
        vec_bits = (num == 0 ? 64 : 128);
!       clonei->simdlen = vec_bits / elt_bits;
      }
    else
      {
        count = 1;
        vec_bits = clonei->simdlen * elt_bits;
!       if (vec_bits != 64 && vec_bits != 128)
  	{
  	  warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
! 		      "GCC does not currently support simdlen %d for type %qT",
! 		      clonei->simdlen, base_type);
  	  return 0;
  	}
      }
--- 25100,25123 ----
    clonei->vecsize_mangle = 'n';
    clonei->mask_mode = VOIDmode;
    elt_bits = GET_MODE_BITSIZE (SCALAR_TYPE_MODE (base_type));
!   if (known_eq (clonei->simdlen, 0U))
      {
        count = 2;
        vec_bits = (num == 0 ? 64 : 128);
!       clonei->simdlen = exact_div (vec_bits, elt_bits);
      }
    else
      {
        count = 1;
        vec_bits = clonei->simdlen * elt_bits;
!       /* For now, SVE simdclones won't produce illegal simdlen, So only check
! 	 const simdlens here.  */
!       if (clonei->simdlen.is_constant (&const_simdlen)
! 	  && maybe_ne (vec_bits, 64U) && maybe_ne (vec_bits, 128U))
  	{
  	  warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
! 		      "GCC does not currently support simdlen %wd for type %qT",
! 		      const_simdlen, base_type);
  	  return 0;
  	}
      }
*************** aarch64_simd_clone_usable (struct cgraph
*** 23132,23139 ****
  static int
  aarch64_comp_type_attributes (const_tree type1, const_tree type2)
  {
!   if (lookup_attribute ("aarch64_vector_pcs", TYPE_ATTRIBUTES (type1))
!       != lookup_attribute ("aarch64_vector_pcs", TYPE_ATTRIBUTES (type2)))
      return 0;
    return 1;
  }
--- 25160,25177 ----
  static int
  aarch64_comp_type_attributes (const_tree type1, const_tree type2)
  {
!   auto check_attr = [&](const char *name) {
!     tree attr1 = lookup_attribute (name, TYPE_ATTRIBUTES (type1));
!     tree attr2 = lookup_attribute (name, TYPE_ATTRIBUTES (type2));
!     if (!attr1 && !attr2)
!       return true;
! 
!     return attr1 && attr2 && attribute_value_equal (attr1, attr2);
!   };
! 
!   if (!check_attr ("aarch64_vector_pcs"))
!     return 0;
!   if (!check_attr ("Advanced SIMD type"))
      return 0;
    return 1;
  }
*************** aarch64_invalid_binary_op (int op ATTRIB
*** 23217,23222 ****
--- 25255,25269 ----
    return NULL;
  }
  
+ /* Implement TARGET_MEMTAG_CAN_TAG_ADDRESSES.  Here we tell the rest of the
+    compiler that we automatically ignore the top byte of our pointers, which
+    allows using -fsanitize=hwaddress.  */
+ bool
+ aarch64_can_tag_addresses ()
+ {
+   return !TARGET_ILP32;
+ }
+ 
  /* Implement TARGET_ASM_FILE_END for AArch64.  This adds the AArch64 GNU NOTE
     section at the end if needed.  */
  #define GNU_PROPERTY_AARCH64_FEATURE_1_AND	0xc0000000
*************** aarch64_libgcc_floating_mode_supported_p
*** 23732,23737 ****
--- 25779,25787 ----
  #define TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE \
    aarch64_override_options_after_change
  
+ #undef TARGET_OFFLOAD_OPTIONS
+ #define TARGET_OFFLOAD_OPTIONS aarch64_offload_options
+ 
  #undef TARGET_OPTION_SAVE
  #define TARGET_OPTION_SAVE aarch64_option_save
  
*************** aarch64_libgcc_floating_mode_supported_p
*** 23846,23854 ****
--- 25896,25913 ----
  #undef TARGET_ARRAY_MODE_SUPPORTED_P
  #define TARGET_ARRAY_MODE_SUPPORTED_P aarch64_array_mode_supported_p
  
+ #undef TARGET_VECTORIZE_INIT_COST
+ #define TARGET_VECTORIZE_INIT_COST aarch64_init_cost
+ 
  #undef TARGET_VECTORIZE_ADD_STMT_COST
  #define TARGET_VECTORIZE_ADD_STMT_COST aarch64_add_stmt_cost
  
+ #undef TARGET_VECTORIZE_FINISH_COST
+ #define TARGET_VECTORIZE_FINISH_COST aarch64_finish_cost
+ 
+ #undef TARGET_VECTORIZE_DESTROY_COST_DATA
+ #define TARGET_VECTORIZE_DESTROY_COST_DATA aarch64_destroy_cost_data
+ 
  #undef TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST
  #define TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST \
    aarch64_builtin_vectorization_cost
*************** aarch64_libgcc_floating_mode_supported_p
*** 24033,24038 ****
--- 26092,26100 ----
  #undef TARGET_FNTYPE_ABI
  #define TARGET_FNTYPE_ABI aarch64_fntype_abi
  
+ #undef TARGET_MEMTAG_CAN_TAG_ADDRESSES
+ #define TARGET_MEMTAG_CAN_TAG_ADDRESSES aarch64_can_tag_addresses
+ 
  #if CHECKING_P
  #undef TARGET_RUN_TARGET_SELFTESTS
  #define TARGET_RUN_TARGET_SELFTESTS selftest::aarch64_run_selftests
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64.h gcc-11.1.0/gcc/config/aarch64/aarch64.h
*** gcc-10.3.0/gcc/config/aarch64/aarch64.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 26,33 ****
  #define TARGET_CPU_CPP_BUILTINS()	\
    aarch64_cpu_cpp_builtins (pfile)
  
! /* Target CPU versions for D.  */
  #define TARGET_D_CPU_VERSIONS aarch64_d_target_versions
  
  
  
--- 26,34 ----
  #define TARGET_CPU_CPP_BUILTINS()	\
    aarch64_cpu_cpp_builtins (pfile)
  
! /* Target hooks for D language.  */
  #define TARGET_D_CPU_VERSIONS aarch64_d_target_versions
+ #define TARGET_D_REGISTER_CPU_TARGET_INFO aarch64_d_register_target_info
  
  
  
*************** extern unsigned aarch64_architecture_ver
*** 161,166 ****
--- 162,169 ----
  #define AARCH64_FL_LSE	      (1 << 4)  /* Has Large System Extensions.  */
  #define AARCH64_FL_RDMA       (1 << 5)  /* Has Round Double Multiply Add.  */
  #define AARCH64_FL_V8_1       (1 << 6)  /* Has ARMv8.1-A extensions.  */
+ /* Armv8-R.  */
+ #define AARCH64_FL_V8_R       (1 << 7)  /* Armv8-R AArch64.  */
  /* ARMv8.2-A architecture extensions.  */
  #define AARCH64_FL_V8_2       (1 << 8)  /* Has ARMv8.2-A features.  */
  #define AARCH64_FL_F16	      (1 << 9)  /* Has ARMv8.2-A FP16 extensions.  */
*************** extern unsigned aarch64_architecture_ver
*** 222,227 ****
--- 225,236 ----
  /* 64-bit Floating-point Matrix Multiply (F64MM) extensions.  */
  #define AARCH64_FL_F64MM      (1ULL << 38)
  
+ /* Flag Manipulation Instructions (FLAGM) extension.  */
+ #define AARCH64_FL_FLAGM      (1ULL << 39)
+ 
+ /* Pointer Authentication (PAUTH) extension.  */
+ #define AARCH64_FL_PAUTH      (1ULL << 40)
+ 
  /* Has FP and SIMD.  */
  #define AARCH64_FL_FPSIMD     (AARCH64_FL_FP | AARCH64_FL_SIMD)
  
*************** extern unsigned aarch64_architecture_ver
*** 236,251 ****
  #define AARCH64_FL_FOR_ARCH8_2			\
    (AARCH64_FL_FOR_ARCH8_1 | AARCH64_FL_V8_2)
  #define AARCH64_FL_FOR_ARCH8_3			\
!   (AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_V8_3)
  #define AARCH64_FL_FOR_ARCH8_4			\
    (AARCH64_FL_FOR_ARCH8_3 | AARCH64_FL_V8_4 | AARCH64_FL_F16FML \
!    | AARCH64_FL_DOTPROD | AARCH64_FL_RCPC8_4)
  #define AARCH64_FL_FOR_ARCH8_5			\
    (AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_V8_5	\
     | AARCH64_FL_SB | AARCH64_FL_SSBS | AARCH64_FL_PREDRES)
  #define AARCH64_FL_FOR_ARCH8_6			\
    (AARCH64_FL_FOR_ARCH8_5 | AARCH64_FL_V8_6 | AARCH64_FL_FPSIMD \
     | AARCH64_FL_I8MM | AARCH64_FL_BF16)
  
  /* Macros to test ISA flags.  */
  
--- 245,262 ----
  #define AARCH64_FL_FOR_ARCH8_2			\
    (AARCH64_FL_FOR_ARCH8_1 | AARCH64_FL_V8_2)
  #define AARCH64_FL_FOR_ARCH8_3			\
!   (AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_V8_3 | AARCH64_FL_PAUTH)
  #define AARCH64_FL_FOR_ARCH8_4			\
    (AARCH64_FL_FOR_ARCH8_3 | AARCH64_FL_V8_4 | AARCH64_FL_F16FML \
!    | AARCH64_FL_DOTPROD | AARCH64_FL_RCPC8_4 | AARCH64_FL_FLAGM)
  #define AARCH64_FL_FOR_ARCH8_5			\
    (AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_V8_5	\
     | AARCH64_FL_SB | AARCH64_FL_SSBS | AARCH64_FL_PREDRES)
  #define AARCH64_FL_FOR_ARCH8_6			\
    (AARCH64_FL_FOR_ARCH8_5 | AARCH64_FL_V8_6 | AARCH64_FL_FPSIMD \
     | AARCH64_FL_I8MM | AARCH64_FL_BF16)
+ #define AARCH64_FL_FOR_ARCH8_R     \
+   (AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_V8_R)
  
  /* Macros to test ISA flags.  */
  
*************** extern unsigned aarch64_architecture_ver
*** 281,287 ****
  #define AARCH64_ISA_F32MM	   (aarch64_isa_flags & AARCH64_FL_F32MM)
  #define AARCH64_ISA_F64MM	   (aarch64_isa_flags & AARCH64_FL_F64MM)
  #define AARCH64_ISA_BF16	   (aarch64_isa_flags & AARCH64_FL_BF16)
! #define AARCH64_ISA_SB  	   (aarch64_isa_flags & AARCH64_FL_SB)
  
  /* Crypto is an optional extension to AdvSIMD.  */
  #define TARGET_CRYPTO (TARGET_SIMD && AARCH64_ISA_CRYPTO)
--- 292,300 ----
  #define AARCH64_ISA_F32MM	   (aarch64_isa_flags & AARCH64_FL_F32MM)
  #define AARCH64_ISA_F64MM	   (aarch64_isa_flags & AARCH64_FL_F64MM)
  #define AARCH64_ISA_BF16	   (aarch64_isa_flags & AARCH64_FL_BF16)
! #define AARCH64_ISA_SB		   (aarch64_isa_flags & AARCH64_FL_SB)
! #define AARCH64_ISA_V8_R	   (aarch64_isa_flags & AARCH64_FL_V8_R)
! #define AARCH64_ISA_PAUTH	   (aarch64_isa_flags & AARCH64_FL_PAUTH)
  
  /* Crypto is an optional extension to AdvSIMD.  */
  #define TARGET_CRYPTO (TARGET_SIMD && AARCH64_ISA_CRYPTO)
*************** extern unsigned aarch64_architecture_ver
*** 370,375 ****
--- 383,391 ----
  #define TARGET_BF16_SIMD (AARCH64_ISA_BF16 && TARGET_SIMD)
  #define TARGET_SVE_BF16 (TARGET_SVE && AARCH64_ISA_BF16)
  
+ /* PAUTH instructions are enabled through +pauth.  */
+ #define TARGET_PAUTH (AARCH64_ISA_PAUTH)
+ 
  /* Make sure this is always defined so we don't have to check for ifdefs
     but rather use normal ifs.  */
  #ifndef TARGET_FIX_ERR_A53_835769_DEFAULT
*************** struct GTY (()) aarch64_frame
*** 859,864 ****
--- 875,897 ----
    /* Store FP,LR and setup a frame pointer.  */
    bool emit_frame_chain;
  
+   /* In each frame, we can associate up to two register saves with the
+      initial stack allocation.  This happens in one of two ways:
+ 
+      (1) Using an STR or STP with writeback to perform the initial
+ 	 stack allocation.  When EMIT_FRAME_CHAIN, the registers will
+ 	 be those needed to create a frame chain.
+ 
+ 	 Indicated by CALLEE_ADJUST != 0.
+ 
+      (2) Using a separate STP to set up the frame record, after the
+ 	 initial stack allocation but before setting up the frame pointer.
+ 	 This is used if the offset is too large to use writeback.
+ 
+ 	 Indicated by CALLEE_ADJUST == 0 && EMIT_FRAME_CHAIN.
+ 
+      These fields indicate which registers we've decided to handle using
+      (1) or (2), or INVALID_REGNUM if none.  */
    unsigned wb_candidate1;
    unsigned wb_candidate2;
  
*************** typedef struct
*** 1002,1017 ****
  #define MOVE_RATIO(speed) \
    (!STRICT_ALIGNMENT ? 2 : (((speed) ? 15 : AARCH64_CALL_RATIO) / 2))
  
! /* For CLEAR_RATIO, when optimizing for size, give a better estimate
!    of the length of a memset call, but use the default otherwise.  */
  #define CLEAR_RATIO(speed) \
!   ((speed) ? 15 : AARCH64_CALL_RATIO)
  
! /* SET_RATIO is similar to CLEAR_RATIO, but for a non-zero constant, so when
!    optimizing for size adjust the ratio to account for the overhead of loading
!    the constant.  */
  #define SET_RATIO(speed) \
!   ((speed) ? 15 : AARCH64_CALL_RATIO - 2)
  
  /* Disable auto-increment in move_by_pieces et al.  Use of auto-increment is
     rarely a good idea in straight-line code since it adds an extra address
--- 1035,1053 ----
  #define MOVE_RATIO(speed) \
    (!STRICT_ALIGNMENT ? 2 : (((speed) ? 15 : AARCH64_CALL_RATIO) / 2))
  
! /* Like MOVE_RATIO, without -mstrict-align, make decisions in "setmem" when
!    we would use more than 3 scalar instructions.
!    Otherwise follow a sensible default: when optimizing for size, give a better
!    estimate of the length of a memset call, but use the default otherwise.  */
  #define CLEAR_RATIO(speed) \
!   (!STRICT_ALIGNMENT ? 4 : (speed) ? 15 : AARCH64_CALL_RATIO)
  
! /* SET_RATIO is similar to CLEAR_RATIO, but for a non-zero constant.  Without
!    -mstrict-align, make decisions in "setmem".  Otherwise follow a sensible
!    default: when optimizing for size adjust the ratio to account for the
!    overhead of loading the constant.  */
  #define SET_RATIO(speed) \
!   (!STRICT_ALIGNMENT ? 0 : (speed) ? 15 : AARCH64_CALL_RATIO - 2)
  
  /* Disable auto-increment in move_by_pieces et al.  Use of auto-increment is
     rarely a good idea in straight-line code since it adds an extra address
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64.md gcc-11.1.0/gcc/config/aarch64/aarch64.md
*** gcc-10.3.0/gcc/config/aarch64/aarch64.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description for AArch64 architecture.
! ;; Copyright (C) 2009-2020 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AArch64 architecture.
! ;; Copyright (C) 2009-2021 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 111,116 ****
--- 111,123 ----
      ;; "FFR token": a fake register used for representing the scheduling
      ;; restrictions on FFR-related operations.
      (FFRT_REGNUM	85)
+     ;; The pair of scratch registers used for stack probing with -fstack-check.
+     ;; Leave R9 alone as a possible choice for the static chain.
+     ;; Note that the use of these registers is mutually exclusive with the use
+     ;; of STACK_CLASH_SVE_CFA_REGNUM, which is for -fstack-clash-protection
+     ;; rather than -fstack-check.
+     (PROBE_STACK_FIRST_REGNUM  10)
+     (PROBE_STACK_SECOND_REGNUM 11)
      ;; Scratch register used by stack clash protection to calculate
      ;; SVE CFA offsets during probing.
      (STACK_CLASH_SVE_CFA_REGNUM 11)
***************
*** 190,195 ****
--- 197,204 ----
      UNSPEC_REV
      UNSPEC_RBIT
      UNSPEC_SABAL
+     UNSPEC_SABAL2
+     UNSPEC_SABDL
      UNSPEC_SABDL2
      UNSPEC_SADALP
      UNSPEC_SCVTF
***************
*** 211,216 ****
--- 220,227 ----
      UNSPEC_TLSLE32
      UNSPEC_TLSLE48
      UNSPEC_UABAL
+     UNSPEC_UABAL2
+     UNSPEC_UABDL
      UNSPEC_UABDL2
      UNSPEC_UADALP
      UNSPEC_UCVTF
***************
*** 219,224 ****
--- 230,236 ----
      UNSPEC_SSP_SYSREG
      UNSPEC_SP_SET
      UNSPEC_SP_TEST
+     UNSPEC_RSHRN
      UNSPEC_RSQRT
      UNSPEC_RSQRTE
      UNSPEC_RSQRTS
***************
*** 866,872 ****
    {
      const char *ret = NULL;
      if (aarch64_return_address_signing_enabled ()
! 	&& TARGET_ARMV8_3
  	&& !crtl->calls_eh_return)
        {
  	if (aarch64_ra_sign_key == AARCH64_KEY_B)
--- 878,884 ----
    {
      const char *ret = NULL;
      if (aarch64_return_address_signing_enabled ()
! 	&& (TARGET_PAUTH)
  	&& !crtl->calls_eh_return)
        {
  	if (aarch64_ra_sign_key == AARCH64_KEY_B)
***************
*** 1229,1238 ****
      if (GET_CODE (operands[0]) == MEM && operands[1] != const0_rtx)
        operands[1] = force_reg (<MODE>mode, operands[1]);
  
!     /* FIXME: RR we still need to fix up what we are doing with
!        symbol_refs and other types of constants.  */
!     if (CONSTANT_P (operands[1])
!         && !CONST_INT_P (operands[1]))
       {
         aarch64_expand_mov_immediate (operands[0], operands[1]);
         DONE;
--- 1241,1259 ----
      if (GET_CODE (operands[0]) == MEM && operands[1] != const0_rtx)
        operands[1] = force_reg (<MODE>mode, operands[1]);
  
!     /* Lower moves of symbolic constants into individual instructions.
!        Doing this now is sometimes necessary for correctness, since some
!        sequences require temporary pseudo registers.  Lowering now is also
!        often better for optimization, since more RTL passes get the
!        chance to optimize the individual instructions.
! 
!        When called after RA, also split multi-instruction moves into
!        smaller pieces now, since we can't be sure that sure that there
!        will be a following split pass.  */
!     if (CONST_INT_P (operands[1])
! 	? (reload_completed
! 	   && !aarch64_mov_imm_operand (operands[1], <MODE>mode))
! 	: CONSTANT_P (operands[1]))
       {
         aarch64_expand_mov_immediate (operands[0], operands[1]);
         DONE;
***************
*** 1361,1373 ****
  
  (define_insn "*movti_aarch64"
    [(set (match_operand:TI 0
! 	 "nonimmediate_operand"  "=   r,w, r,w,r,m,m,w,m")
  	(match_operand:TI 1
! 	 "aarch64_movti_operand" " rUti,r, w,w,m,r,Z,m,w"))]
    "(register_operand (operands[0], TImode)
      || aarch64_reg_or_zero (operands[1], TImode))"
    "@
     #
     #
     #
     mov\\t%0.16b, %1.16b
--- 1382,1395 ----
  
  (define_insn "*movti_aarch64"
    [(set (match_operand:TI 0
! 	 "nonimmediate_operand"  "=   r,w,w, r,w,r,m,m,w,m")
  	(match_operand:TI 1
! 	 "aarch64_movti_operand" " rUti,Z,r, w,w,m,r,Z,m,w"))]
    "(register_operand (operands[0], TImode)
      || aarch64_reg_or_zero (operands[1], TImode))"
    "@
     #
+    movi\\t%0.2d, #0
     #
     #
     mov\\t%0.16b, %1.16b
***************
*** 1376,1386 ****
     stp\\txzr, xzr, %0
     ldr\\t%q0, %1
     str\\t%q1, %0"
!   [(set_attr "type" "multiple,f_mcr,f_mrc,neon_logic_q, \
  		             load_16,store_16,store_16,\
                               load_16,store_16")
!    (set_attr "length" "8,8,8,4,4,4,4,4,4")
!    (set_attr "arch" "*,*,*,simd,*,*,*,fp,fp")]
  )
  
  ;; Split a TImode register-register or register-immediate move into
--- 1398,1408 ----
     stp\\txzr, xzr, %0
     ldr\\t%q0, %1
     str\\t%q1, %0"
!   [(set_attr "type" "multiple,neon_move,f_mcr,f_mrc,neon_logic_q, \
  		             load_16,store_16,store_16,\
                               load_16,store_16")
!    (set_attr "length" "8,4,8,8,4,4,4,4,4,4")
!    (set_attr "arch" "*,simd,*,*,simd,*,*,*,fp,fp")]
  )
  
  ;; Split a TImode register-register or register-immediate move into
***************
*** 1404,1410 ****
      if (!TARGET_FLOAT)
        {
  	aarch64_err_no_fpadvsimd (<MODE>mode);
! 	FAIL;
        }
  
      if (GET_CODE (operands[0]) == MEM
--- 1426,1436 ----
      if (!TARGET_FLOAT)
        {
  	aarch64_err_no_fpadvsimd (<MODE>mode);
! 	machine_mode intmode
! 	  = int_mode_for_size (GET_MODE_BITSIZE (<MODE>mode), 0).require ();
! 	emit_move_insn (gen_lowpart (intmode, operands[0]),
! 			gen_lowpart (intmode, operands[1]));
! 	DONE;
        }
  
      if (GET_CODE (operands[0]) == MEM
***************
*** 1507,1515 ****
  
  (define_insn "*movtf_aarch64"
    [(set (match_operand:TF 0
! 	 "nonimmediate_operand" "=w,?&r,w ,?r,w,?w,w,m,?r,m ,m")
  	(match_operand:TF 1
! 	 "general_operand"      " w,?r, ?r,w ,Y,Y ,m,w,m ,?r,Y"))]
    "TARGET_FLOAT && (register_operand (operands[0], TFmode)
      || aarch64_reg_or_fp_zero (operands[1], TFmode))"
    "@
--- 1533,1541 ----
  
  (define_insn "*movtf_aarch64"
    [(set (match_operand:TF 0
! 	 "nonimmediate_operand" "=w,?r ,w ,?r,w,?w,w,m,?r,m ,m")
  	(match_operand:TF 1
! 	 "general_operand"      " w,?rY,?r,w ,Y,Y ,m,w,m ,?r,Y"))]
    "TARGET_FLOAT && (register_operand (operands[0], TFmode)
      || aarch64_reg_or_fp_zero (operands[1], TFmode))"
    "@
***************
*** 1532,1538 ****
  
  (define_split
     [(set (match_operand:TF 0 "register_operand" "")
! 	 (match_operand:TF 1 "aarch64_reg_or_imm" ""))]
    "reload_completed && aarch64_split_128bit_move_p (operands[0], operands[1])"
    [(const_int 0)]
    {
--- 1558,1564 ----
  
  (define_split
     [(set (match_operand:TF 0 "register_operand" "")
! 	 (match_operand:TF 1 "nonmemory_operand" ""))]
    "reload_completed && aarch64_split_128bit_move_p (operands[0], operands[1])"
    [(const_int 0)]
    {
***************
*** 1559,1564 ****
--- 1585,1608 ----
  }
  )
  
+ ;; 0 is dst
+ ;; 1 is val
+ ;; 2 is size of copy in bytes
+ ;; 3 is alignment
+ 
+ (define_expand "setmemdi"
+   [(set (match_operand:BLK 0 "memory_operand")     ;; Dest
+         (match_operand:QI  2 "nonmemory_operand")) ;; Value
+    (use (match_operand:DI  1 "immediate_operand")) ;; Length
+    (match_operand          3 "immediate_operand")] ;; Align
+   "TARGET_SIMD"
+ {
+   if (aarch64_expand_setmem (operands))
+     DONE;
+ 
+   FAIL;
+ })
+ 
  ;; Operands 1 and 3 are tied together by the final condition; so we allow
  ;; fairly lax checking on the second memory operation.
  (define_insn "load_pair_sw_<SX:mode><SX2:mode>"
***************
*** 1571,1578 ****
  				XEXP (operands[1], 0),
  				GET_MODE_SIZE (<SX:MODE>mode)))"
    "@
!    ldp\\t%w0, %w2, %1
!    ldp\\t%s0, %s2, %1"
    [(set_attr "type" "load_8,neon_load1_2reg")
     (set_attr "arch" "*,fp")]
  )
--- 1615,1622 ----
  				XEXP (operands[1], 0),
  				GET_MODE_SIZE (<SX:MODE>mode)))"
    "@
!    ldp\\t%w0, %w2, %z1
!    ldp\\t%s0, %s2, %z1"
    [(set_attr "type" "load_8,neon_load1_2reg")
     (set_attr "arch" "*,fp")]
  )
***************
*** 1588,1595 ****
  				XEXP (operands[1], 0),
  				GET_MODE_SIZE (<DX:MODE>mode)))"
    "@
!    ldp\\t%x0, %x2, %1
!    ldp\\t%d0, %d2, %1"
    [(set_attr "type" "load_16,neon_load1_2reg")
     (set_attr "arch" "*,fp")]
  )
--- 1632,1639 ----
  				XEXP (operands[1], 0),
  				GET_MODE_SIZE (<DX:MODE>mode)))"
    "@
!    ldp\\t%x0, %x2, %z1
!    ldp\\t%d0, %d2, %z1"
    [(set_attr "type" "load_16,neon_load1_2reg")
     (set_attr "arch" "*,fp")]
  )
***************
*** 1604,1610 ****
  		    plus_constant (Pmode,
  				   XEXP (operands[1], 0),
  				   GET_MODE_SIZE (TFmode)))"
!   "ldp\\t%q0, %q2, %1"
    [(set_attr "type" "neon_ldp_q")
     (set_attr "fp" "yes")]
  )
--- 1648,1654 ----
  		    plus_constant (Pmode,
  				   XEXP (operands[1], 0),
  				   GET_MODE_SIZE (TFmode)))"
!   "ldp\\t%q0, %q2, %z1"
    [(set_attr "type" "neon_ldp_q")
     (set_attr "fp" "yes")]
  )
***************
*** 1621,1628 ****
  				XEXP (operands[0], 0),
  				GET_MODE_SIZE (<SX:MODE>mode)))"
    "@
!    stp\\t%w1, %w3, %0
!    stp\\t%s1, %s3, %0"
    [(set_attr "type" "store_8,neon_store1_2reg")
     (set_attr "arch" "*,fp")]
  )
--- 1665,1672 ----
  				XEXP (operands[0], 0),
  				GET_MODE_SIZE (<SX:MODE>mode)))"
    "@
!    stp\\t%w1, %w3, %z0
!    stp\\t%s1, %s3, %z0"
    [(set_attr "type" "store_8,neon_store1_2reg")
     (set_attr "arch" "*,fp")]
  )
***************
*** 1638,1645 ****
  				XEXP (operands[0], 0),
  				GET_MODE_SIZE (<DX:MODE>mode)))"
    "@
!    stp\\t%x1, %x3, %0
!    stp\\t%d1, %d3, %0"
    [(set_attr "type" "store_16,neon_store1_2reg")
     (set_attr "arch" "*,fp")]
  )
--- 1682,1689 ----
  				XEXP (operands[0], 0),
  				GET_MODE_SIZE (<DX:MODE>mode)))"
    "@
!    stp\\t%x1, %x3, %z0
!    stp\\t%d1, %d3, %z0"
    [(set_attr "type" "store_16,neon_store1_2reg")
     (set_attr "arch" "*,fp")]
  )
***************
*** 1654,1660 ****
  		 plus_constant (Pmode,
  				XEXP (operands[0], 0),
  				GET_MODE_SIZE (TFmode)))"
!   "stp\\t%q1, %q3, %0"
    [(set_attr "type" "neon_stp_q")
     (set_attr "fp" "yes")]
  )
--- 1698,1704 ----
  		 plus_constant (Pmode,
  				XEXP (operands[0], 0),
  				GET_MODE_SIZE (TFmode)))"
!   "stp\\t%q1, %q3, %z0"
    [(set_attr "type" "neon_stp_q")
     (set_attr "fp" "yes")]
  )
***************
*** 1787,1793 ****
  		plus_constant (Pmode,
  			       XEXP (operands[1], 0),
  			       GET_MODE_SIZE (SImode)))"
!   "ldpsw\\t%0, %2, %1"
    [(set_attr "type" "load_8")]
  )
  
--- 1831,1837 ----
  		plus_constant (Pmode,
  			       XEXP (operands[1], 0),
  			       GET_MODE_SIZE (SImode)))"
!   "ldpsw\\t%0, %2, %z1"
    [(set_attr "type" "load_8")]
  )
  
***************
*** 1816,1823 ****
  			       XEXP (operands[1], 0),
  			       GET_MODE_SIZE (SImode)))"
    "@
!    ldp\t%w0, %w2, %1
!    ldp\t%s0, %s2, %1"
    [(set_attr "type" "load_8,neon_load1_2reg")
     (set_attr "arch" "*,fp")]
  )
--- 1860,1867 ----
  			       XEXP (operands[1], 0),
  			       GET_MODE_SIZE (SImode)))"
    "@
!    ldp\t%w0, %w2, %z1
!    ldp\t%s0, %s2, %z1"
    [(set_attr "type" "load_8,neon_load1_2reg")
     (set_attr "arch" "*,fp")]
  )
***************
*** 2346,2383 ****
    [(set_attr "type" "alus_shift_imm")]
  )
  
- (define_insn "*adds_mul_imm_<mode>"
-   [(set (reg:CC_NZ CC_REGNUM)
- 	(compare:CC_NZ
- 	 (plus:GPI (mult:GPI
- 		    (match_operand:GPI 1 "register_operand" "r")
- 		    (match_operand:QI 2 "aarch64_pwr_2_<mode>" "n"))
- 		   (match_operand:GPI 3 "register_operand" "r"))
- 	 (const_int 0)))
-    (set (match_operand:GPI 0 "register_operand" "=r")
- 	(plus:GPI (mult:GPI (match_dup 1) (match_dup 2))
- 		  (match_dup 3)))]
-   ""
-   "adds\\t%<w>0, %<w>3, %<w>1, lsl %p2"
-   [(set_attr "type" "alus_shift_imm")]
- )
- 
- (define_insn "*subs_mul_imm_<mode>"
-   [(set (reg:CC_NZ CC_REGNUM)
- 	(compare:CC_NZ
- 	 (minus:GPI (match_operand:GPI 1 "register_operand" "r")
- 		    (mult:GPI
- 		     (match_operand:GPI 2 "register_operand" "r")
- 		     (match_operand:QI 3 "aarch64_pwr_2_<mode>" "n")))
- 	 (const_int 0)))
-    (set (match_operand:GPI 0 "register_operand" "=r")
- 	(minus:GPI (match_dup 1)
- 		   (mult:GPI (match_dup 2) (match_dup 3))))]
-   ""
-   "subs\\t%<w>0, %<w>1, %<w>2, lsl %p3"
-   [(set_attr "type" "alus_shift_imm")]
- )
- 
  (define_insn "*adds_<optab><ALLX:mode>_<GPI:mode>"
    [(set (reg:CC_NZ CC_REGNUM)
  	(compare:CC_NZ
--- 2390,2395 ----
***************
*** 2388,2394 ****
     (set (match_operand:GPI 0 "register_operand" "=r")
  	(plus:GPI (ANY_EXTEND:GPI (match_dup 1)) (match_dup 2)))]
    ""
!   "adds\\t%<GPI:w>0, %<GPI:w>2, %<GPI:w>1, <su>xt<ALLX:size>"
    [(set_attr "type" "alus_ext")]
  )
  
--- 2400,2406 ----
     (set (match_operand:GPI 0 "register_operand" "=r")
  	(plus:GPI (ANY_EXTEND:GPI (match_dup 1)) (match_dup 2)))]
    ""
!   "adds\\t%<GPI:w>0, %<GPI:w>2, %w1, <su>xt<ALLX:size>"
    [(set_attr "type" "alus_ext")]
  )
  
***************
*** 2402,2408 ****
     (set (match_operand:GPI 0 "register_operand" "=r")
  	(minus:GPI (match_dup 1) (ANY_EXTEND:GPI (match_dup 2))))]
    ""
!   "subs\\t%<GPI:w>0, %<GPI:w>1, %<GPI:w>2, <su>xt<ALLX:size>"
    [(set_attr "type" "alus_ext")]
  )
  
--- 2414,2420 ----
     (set (match_operand:GPI 0 "register_operand" "=r")
  	(minus:GPI (match_dup 1) (ANY_EXTEND:GPI (match_dup 2))))]
    ""
!   "subs\\t%<GPI:w>0, %<GPI:w>1, %w2, <su>xt<ALLX:size>"
    [(set_attr "type" "alus_ext")]
  )
  
***************
*** 2420,2426 ****
  			      (match_dup 2))
  		  (match_dup 3)))]
    ""
!   "adds\\t%<GPI:w>0, %<GPI:w>3, %<GPI:w>1, <su>xt<ALLX:size> %2"
    [(set_attr "type" "alus_ext")]
  )
  
--- 2432,2438 ----
  			      (match_dup 2))
  		  (match_dup 3)))]
    ""
!   "adds\\t%<GPI:w>0, %<GPI:w>3, %w1, <su>xt<ALLX:size> %2"
    [(set_attr "type" "alus_ext")]
  )
  
***************
*** 2438,2484 ****
  		   (ashift:GPI (ANY_EXTEND:GPI (match_dup 2))
  			       (match_dup 3))))]
    ""
!   "subs\\t%<GPI:w>0, %<GPI:w>1, %<GPI:w>2, <su>xt<ALLX:size> %3"
!   [(set_attr "type" "alus_ext")]
! )
! 
! (define_insn "*adds_<optab><mode>_multp2"
!   [(set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
! 	 (plus:GPI (ANY_EXTRACT:GPI
! 		    (mult:GPI (match_operand:GPI 1 "register_operand" "r")
! 			      (match_operand 2 "aarch64_pwr_imm3" "Up3"))
! 		    (match_operand 3 "const_int_operand" "n")
! 		    (const_int 0))
! 		   (match_operand:GPI 4 "register_operand" "rk"))
! 	(const_int 0)))
!    (set (match_operand:GPI 0 "register_operand" "=r")
! 	(plus:GPI (ANY_EXTRACT:GPI (mult:GPI (match_dup 1) (match_dup 2))
! 				   (match_dup 3)
! 				   (const_int 0))
! 		  (match_dup 4)))]
!   "aarch64_is_extend_from_extract (<MODE>mode, operands[2], operands[3])"
!   "adds\\t%<w>0, %<w>4, %<w>1, <su>xt%e3 %p2"
!   [(set_attr "type" "alus_ext")]
! )
! 
! (define_insn "*subs_<optab><mode>_multp2"
!   [(set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
! 	 (minus:GPI (match_operand:GPI 4 "register_operand" "rk")
! 		    (ANY_EXTRACT:GPI
! 		     (mult:GPI (match_operand:GPI 1 "register_operand" "r")
! 			       (match_operand 2 "aarch64_pwr_imm3" "Up3"))
! 		     (match_operand 3 "const_int_operand" "n")
! 		     (const_int 0)))
! 	(const_int 0)))
!    (set (match_operand:GPI 0 "register_operand" "=r")
! 	(minus:GPI (match_dup 4) (ANY_EXTRACT:GPI
! 				  (mult:GPI (match_dup 1) (match_dup 2))
! 				  (match_dup 3)
! 				  (const_int 0))))]
!   "aarch64_is_extend_from_extract (<MODE>mode, operands[2], operands[3])"
!   "subs\\t%<w>0, %<w>4, %<w>1, <su>xt%e3 %p2"
    [(set_attr "type" "alus_ext")]
  )
  
--- 2450,2456 ----
  		   (ashift:GPI (ANY_EXTEND:GPI (match_dup 2))
  			       (match_dup 3))))]
    ""
!   "subs\\t%<GPI:w>0, %<GPI:w>1, %w2, <su>xt<ALLX:size> %3"
    [(set_attr "type" "alus_ext")]
  )
  
***************
*** 2524,2530 ****
  		  (match_operand:GPI 3 "register_operand" "r")))]
    ""
    "add\\t%<w>0, %<w>3, %<w>1, <shift> %2"
!   [(set_attr "type" "alu_shift_imm")]
  )
  
  ;; zero_extend version of above
--- 2496,2502 ----
  		  (match_operand:GPI 3 "register_operand" "r")))]
    ""
    "add\\t%<w>0, %<w>3, %<w>1, <shift> %2"
!   [(set_attr "autodetect_type" "alu_shift_<shift>_op2")]
  )
  
  ;; zero_extend version of above
***************
*** 2536,2552 ****
  		  (match_operand:SI 3 "register_operand" "r"))))]
    ""
    "add\\t%w0, %w3, %w1, <shift> %2"
!   [(set_attr "type" "alu_shift_imm")]
! )
! 
! (define_insn "*add_mul_imm_<mode>"
!   [(set (match_operand:GPI 0 "register_operand" "=r")
! 	(plus:GPI (mult:GPI (match_operand:GPI 1 "register_operand" "r")
! 			    (match_operand:QI 2 "aarch64_pwr_2_<mode>" "n"))
! 		  (match_operand:GPI 3 "register_operand" "r")))]
!   ""
!   "add\\t%<w>0, %<w>3, %<w>1, lsl %p2"
!   [(set_attr "type" "alu_shift_imm")]
  )
  
  (define_insn "*add_<optab><ALLX:mode>_<GPI:mode>"
--- 2508,2514 ----
  		  (match_operand:SI 3 "register_operand" "r"))))]
    ""
    "add\\t%w0, %w3, %w1, <shift> %2"
!   [(set_attr "autodetect_type" "alu_shift_<shift>_op2")]
  )
  
  (define_insn "*add_<optab><ALLX:mode>_<GPI:mode>"
***************
*** 2554,2560 ****
  	(plus:GPI (ANY_EXTEND:GPI (match_operand:ALLX 1 "register_operand" "r"))
  		  (match_operand:GPI 2 "register_operand" "r")))]
    ""
!   "add\\t%<GPI:w>0, %<GPI:w>2, %<GPI:w>1, <su>xt<ALLX:size>"
    [(set_attr "type" "alu_ext")]
  )
  
--- 2516,2522 ----
  	(plus:GPI (ANY_EXTEND:GPI (match_operand:ALLX 1 "register_operand" "r"))
  		  (match_operand:GPI 2 "register_operand" "r")))]
    ""
!   "add\\t%<GPI:w>0, %<GPI:w>2, %w1, <su>xt<ALLX:size>"
    [(set_attr "type" "alu_ext")]
  )
  
***************
*** 2576,2582 ****
  			      (match_operand 2 "aarch64_imm3" "Ui3"))
  		  (match_operand:GPI 3 "register_operand" "r")))]
    ""
!   "add\\t%<GPI:w>0, %<GPI:w>3, %<GPI:w>1, <su>xt<ALLX:size> %2"
    [(set_attr "type" "alu_ext")]
  )
  
--- 2538,2544 ----
  			      (match_operand 2 "aarch64_imm3" "Ui3"))
  		  (match_operand:GPI 3 "register_operand" "r")))]
    ""
!   "add\\t%<GPI:w>0, %<GPI:w>3, %w1, <su>xt<ALLX:size> %2"
    [(set_attr "type" "alu_ext")]
  )
  
***************
*** 2593,2649 ****
    [(set_attr "type" "alu_ext")]
  )
  
- (define_insn "*add_<optab><ALLX:mode>_mult_<GPI:mode>"
-   [(set (match_operand:GPI 0 "register_operand" "=rk")
- 	(plus:GPI (mult:GPI (ANY_EXTEND:GPI
- 			     (match_operand:ALLX 1 "register_operand" "r"))
- 			    (match_operand 2 "aarch64_pwr_imm3" "Up3"))
- 		  (match_operand:GPI 3 "register_operand" "r")))]
-   ""
-   "add\\t%<GPI:w>0, %<GPI:w>3, %<GPI:w>1, <su>xt<ALLX:size> %p2"
-   [(set_attr "type" "alu_ext")]
- )
- 
- ;; zero_extend version of above
- (define_insn "*add_<optab><SHORT:mode>_mult_si_uxtw"
-   [(set (match_operand:DI 0 "register_operand" "=rk")
- 	(zero_extend:DI (plus:SI (mult:SI (ANY_EXTEND:SI
- 			     (match_operand:SHORT 1 "register_operand" "r"))
- 			    (match_operand 2 "aarch64_pwr_imm3" "Up3"))
- 		  (match_operand:SI 3 "register_operand" "r"))))]
-   ""
-   "add\\t%w0, %w3, %w1, <su>xt<SHORT:size> %p2"
-   [(set_attr "type" "alu_ext")]
- )
- 
- (define_insn "*add_<optab><mode>_multp2"
-   [(set (match_operand:GPI 0 "register_operand" "=rk")
- 	(plus:GPI (ANY_EXTRACT:GPI
- 		   (mult:GPI (match_operand:GPI 1 "register_operand" "r")
- 			     (match_operand 2 "aarch64_pwr_imm3" "Up3"))
- 		   (match_operand 3 "const_int_operand" "n")
- 		   (const_int 0))
- 		  (match_operand:GPI 4 "register_operand" "r")))]
-   "aarch64_is_extend_from_extract (<MODE>mode, operands[2], operands[3])"
-   "add\\t%<w>0, %<w>4, %<w>1, <su>xt%e3 %p2"
-   [(set_attr "type" "alu_ext")]
- )
- 
- ;; zero_extend version of above
- (define_insn "*add_<optab>si_multp2_uxtw"
-   [(set (match_operand:DI 0 "register_operand" "=rk")
- 	(zero_extend:DI
-          (plus:SI (ANY_EXTRACT:SI
- 		   (mult:SI (match_operand:SI 1 "register_operand" "r")
- 			    (match_operand 2 "aarch64_pwr_imm3" "Up3"))
- 		   (match_operand 3 "const_int_operand" "n")
-                    (const_int 0))
- 		  (match_operand:SI 4 "register_operand" "r"))))]
-   "aarch64_is_extend_from_extract (SImode, operands[2], operands[3])"
-   "add\\t%w0, %w4, %w1, <su>xt%e3 %p2"
-   [(set_attr "type" "alu_ext")]
- )
- 
  (define_expand "add<mode>3_carryin"
    [(set (match_operand:GPI 0 "register_operand")
  	(plus:GPI
--- 2555,2560 ----
***************
*** 2824,2830 ****
    "*
    operands[3] = GEN_INT (aarch64_uxt_size (INTVAL(operands[2]),
  					   INTVAL (operands[3])));
!   return \"add\t%<w>0, %<w>4, %<w>1, uxt%e3 %2\";"
    [(set_attr "type" "alu_ext")]
  )
  
--- 2735,2741 ----
    "*
    operands[3] = GEN_INT (aarch64_uxt_size (INTVAL(operands[2]),
  					   INTVAL (operands[3])));
!   return \"add\t%<w>0, %<w>4, %w1, uxt%e3 %2\";"
    [(set_attr "type" "alu_ext")]
  )
  
***************
*** 2845,2882 ****
    [(set_attr "type" "alu_ext")]
  )
  
- (define_insn "*add_uxt<mode>_multp2"
-   [(set (match_operand:GPI 0 "register_operand" "=rk")
- 	(plus:GPI (and:GPI
- 		   (mult:GPI (match_operand:GPI 1 "register_operand" "r")
- 			     (match_operand 2 "aarch64_pwr_imm3" "Up3"))
- 		   (match_operand 3 "const_int_operand" "n"))
- 		  (match_operand:GPI 4 "register_operand" "r")))]
-   "aarch64_uxt_size (exact_log2 (INTVAL (operands[2])), INTVAL (operands[3])) != 0"
-   "*
-   operands[3] = GEN_INT (aarch64_uxt_size (exact_log2 (INTVAL (operands[2])),
- 					   INTVAL (operands[3])));
-   return \"add\t%<w>0, %<w>4, %<w>1, uxt%e3 %p2\";"
-   [(set_attr "type" "alu_ext")]
- )
- 
- ;; zero_extend version of above
- (define_insn "*add_uxtsi_multp2_uxtw"
-   [(set (match_operand:DI 0 "register_operand" "=rk")
- 	(zero_extend:DI
-          (plus:SI (and:SI
- 		   (mult:SI (match_operand:SI 1 "register_operand" "r")
- 			    (match_operand 2 "aarch64_pwr_imm3" "Up3"))
- 		   (match_operand 3 "const_int_operand" "n"))
- 		  (match_operand:SI 4 "register_operand" "r"))))]
-   "aarch64_uxt_size (exact_log2 (INTVAL (operands[2])), INTVAL (operands[3])) != 0"
-   "*
-   operands[3] = GEN_INT (aarch64_uxt_size (exact_log2 (INTVAL (operands[2])),
- 					   INTVAL (operands[3])));
-   return \"add\t%w0, %w4, %w1, uxt%e3 %p2\";"
-   [(set_attr "type" "alu_ext")]
- )
- 
  (define_insn "subsi3"
    [(set (match_operand:SI 0 "register_operand" "=rk")
  	(minus:SI (match_operand:SI 1 "register_operand" "rk")
--- 2756,2761 ----
***************
*** 3155,3161 ****
  (define_insn "sub<mode>3_compare1_imm"
    [(set (reg:CC CC_REGNUM)
  	(compare:CC
! 	  (match_operand:GPI 1 "aarch64_reg_or_zero" "rkZ,rkZ")
  	  (match_operand:GPI 2 "aarch64_plus_immediate" "I,J")))
     (set (match_operand:GPI 0 "register_operand" "=r,r")
  	(plus:GPI
--- 3034,3040 ----
  (define_insn "sub<mode>3_compare1_imm"
    [(set (reg:CC CC_REGNUM)
  	(compare:CC
! 	  (match_operand:GPI 1 "register_operand" "rk,rk")
  	  (match_operand:GPI 2 "aarch64_plus_immediate" "I,J")))
     (set (match_operand:GPI 0 "register_operand" "=r,r")
  	(plus:GPI
***************
*** 3264,3270 ****
  		    (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))))]
    ""
    "sub\\t%<w>0, %<w>3, %<w>1, <shift> %2"
!   [(set_attr "type" "alu_shift_imm")]
  )
  
  ;; zero_extend version of above
--- 3143,3149 ----
  		    (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))))]
    ""
    "sub\\t%<w>0, %<w>3, %<w>1, <shift> %2"
!   [(set_attr "autodetect_type" "alu_shift_<shift>_op2")]
  )
  
  ;; zero_extend version of above
***************
*** 3277,3307 ****
  		    (match_operand:QI 2 "aarch64_shift_imm_si" "n")))))]
    ""
    "sub\\t%w0, %w3, %w1, <shift> %2"
!   [(set_attr "type" "alu_shift_imm")]
! )
! 
! (define_insn "*sub_mul_imm_<mode>"
!   [(set (match_operand:GPI 0 "register_operand" "=r")
! 	(minus:GPI (match_operand:GPI 3 "register_operand" "r")
! 		   (mult:GPI
! 		    (match_operand:GPI 1 "register_operand" "r")
! 		    (match_operand:QI 2 "aarch64_pwr_2_<mode>" "n"))))]
!   ""
!   "sub\\t%<w>0, %<w>3, %<w>1, lsl %p2"
!   [(set_attr "type" "alu_shift_imm")]
! )
! 
! ;; zero_extend version of above
! (define_insn "*sub_mul_imm_si_uxtw"
!   [(set (match_operand:DI 0 "register_operand" "=r")
! 	(zero_extend:DI
!          (minus:SI (match_operand:SI 3 "register_operand" "r")
! 		   (mult:SI
! 		    (match_operand:SI 1 "register_operand" "r")
! 		    (match_operand:QI 2 "aarch64_pwr_2_si" "n")))))]
!   ""
!   "sub\\t%w0, %w3, %w1, lsl %p2"
!   [(set_attr "type" "alu_shift_imm")]
  )
  
  (define_insn "*sub_<optab><ALLX:mode>_<GPI:mode>"
--- 3156,3162 ----
  		    (match_operand:QI 2 "aarch64_shift_imm_si" "n")))))]
    ""
    "sub\\t%w0, %w3, %w1, <shift> %2"
!   [(set_attr "autodetect_type" "alu_shift_<shift>_op2")]
  )
  
  (define_insn "*sub_<optab><ALLX:mode>_<GPI:mode>"
***************
*** 3310,3316 ****
  		   (ANY_EXTEND:GPI
  		    (match_operand:ALLX 2 "register_operand" "r"))))]
    ""
!   "sub\\t%<GPI:w>0, %<GPI:w>1, %<GPI:w>2, <su>xt<ALLX:size>"
    [(set_attr "type" "alu_ext")]
  )
  
--- 3165,3171 ----
  		   (ANY_EXTEND:GPI
  		    (match_operand:ALLX 2 "register_operand" "r"))))]
    ""
!   "sub\\t%<GPI:w>0, %<GPI:w>1, %w2, <su>xt<ALLX:size>"
    [(set_attr "type" "alu_ext")]
  )
  
***************
*** 3333,3339 ****
  				(match_operand:ALLX 2 "register_operand" "r"))
  			       (match_operand 3 "aarch64_imm3" "Ui3"))))]
    ""
!   "sub\\t%<GPI:w>0, %<GPI:w>1, %<GPI:w>2, <su>xt<ALLX:size> %3"
    [(set_attr "type" "alu_ext")]
  )
  
--- 3188,3194 ----
  				(match_operand:ALLX 2 "register_operand" "r"))
  			       (match_operand 3 "aarch64_imm3" "Ui3"))))]
    ""
!   "sub\\t%<GPI:w>0, %<GPI:w>1, %w2, <su>xt<ALLX:size> %3"
    [(set_attr "type" "alu_ext")]
  )
  
***************
*** 3350,3383 ****
    [(set_attr "type" "alu_ext")]
  )
  
- (define_insn "*sub_<optab><mode>_multp2"
-   [(set (match_operand:GPI 0 "register_operand" "=rk")
- 	(minus:GPI (match_operand:GPI 4 "register_operand" "rk")
- 		   (ANY_EXTRACT:GPI
- 		    (mult:GPI (match_operand:GPI 1 "register_operand" "r")
- 			      (match_operand 2 "aarch64_pwr_imm3" "Up3"))
- 		    (match_operand 3 "const_int_operand" "n")
- 		    (const_int 0))))]
-   "aarch64_is_extend_from_extract (<MODE>mode, operands[2], operands[3])"
-   "sub\\t%<w>0, %<w>4, %<w>1, <su>xt%e3 %p2"
-   [(set_attr "type" "alu_ext")]
- )
- 
- ;; zero_extend version of above
- (define_insn "*sub_<optab>si_multp2_uxtw"
-   [(set (match_operand:DI 0 "register_operand" "=rk")
- 	(zero_extend:DI
-          (minus:SI (match_operand:SI 4 "register_operand" "rk")
- 		   (ANY_EXTRACT:SI
- 		    (mult:SI (match_operand:SI 1 "register_operand" "r")
- 			     (match_operand 2 "aarch64_pwr_imm3" "Up3"))
- 		    (match_operand 3 "const_int_operand" "n")
- 		    (const_int 0)))))]
-   "aarch64_is_extend_from_extract (SImode, operands[2], operands[3])"
-   "sub\\t%w0, %w4, %w1, <su>xt%e3 %p2"
-   [(set_attr "type" "alu_ext")]
- )
- 
  ;; The hardware description is op1 + ~op2 + C.
  ;;                           = op1 + (-op2 + 1) + (1 - !C)
  ;;                           = op1 - op2 - 1 + 1 - !C
--- 3205,3210 ----
***************
*** 3612,3618 ****
    "*
    operands[3] = GEN_INT (aarch64_uxt_size (INTVAL (operands[2]),
  					   INTVAL (operands[3])));
!   return \"sub\t%<w>0, %<w>4, %<w>1, uxt%e3 %2\";"
    [(set_attr "type" "alu_ext")]
  )
  
--- 3439,3445 ----
    "*
    operands[3] = GEN_INT (aarch64_uxt_size (INTVAL (operands[2]),
  					   INTVAL (operands[3])));
!   return \"sub\t%<w>0, %<w>4, %w1, uxt%e3 %2\";"
    [(set_attr "type" "alu_ext")]
  )
  
***************
*** 3633,3670 ****
    [(set_attr "type" "alu_ext")]
  )
  
- (define_insn "*sub_uxt<mode>_multp2"
-   [(set (match_operand:GPI 0 "register_operand" "=rk")
- 	(minus:GPI (match_operand:GPI 4 "register_operand" "rk")
- 		   (and:GPI
- 		    (mult:GPI (match_operand:GPI 1 "register_operand" "r")
- 			      (match_operand 2 "aarch64_pwr_imm3" "Up3"))
- 		    (match_operand 3 "const_int_operand" "n"))))]
-   "aarch64_uxt_size (exact_log2 (INTVAL (operands[2])),INTVAL (operands[3])) != 0"
-   "*
-   operands[3] = GEN_INT (aarch64_uxt_size (exact_log2 (INTVAL (operands[2])),
- 					   INTVAL (operands[3])));
-   return \"sub\t%<w>0, %<w>4, %<w>1, uxt%e3 %p2\";"
-   [(set_attr "type" "alu_ext")]
- )
- 
- ;; zero_extend version of above
- (define_insn "*sub_uxtsi_multp2_uxtw"
-   [(set (match_operand:DI 0 "register_operand" "=rk")
- 	(zero_extend:DI
-          (minus:SI (match_operand:SI 4 "register_operand" "rk")
- 		   (and:SI
- 		    (mult:SI (match_operand:SI 1 "register_operand" "r")
- 			     (match_operand 2 "aarch64_pwr_imm3" "Up3"))
- 		    (match_operand 3 "const_int_operand" "n")))))]
-   "aarch64_uxt_size (exact_log2 (INTVAL (operands[2])),INTVAL (operands[3])) != 0"
-   "*
-   operands[3] = GEN_INT (aarch64_uxt_size (exact_log2 (INTVAL (operands[2])),
- 					   INTVAL (operands[3])));
-   return \"sub\t%w0, %w4, %w1, uxt%e3 %p2\";"
-   [(set_attr "type" "alu_ext")]
- )
- 
  (define_expand "abs<mode>2"
    [(match_operand:GPI 0 "register_operand")
     (match_operand:GPI 1 "register_operand")]
--- 3460,3465 ----
***************
*** 3762,3768 ****
  		  (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))))]
    ""
    "neg\\t%<w>0, %<w>1, <shift> %2"
!   [(set_attr "type" "alu_shift_imm")]
  )
  
  ;; zero_extend version of above
--- 3557,3563 ----
  		  (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))))]
    ""
    "neg\\t%<w>0, %<w>1, <shift> %2"
!   [(set_attr "autodetect_type" "alu_shift_<shift>_op2")]
  )
  
  ;; zero_extend version of above
***************
*** 3774,3802 ****
  		  (match_operand:QI 2 "aarch64_shift_imm_si" "n")))))]
    ""
    "neg\\t%w0, %w1, <shift> %2"
!   [(set_attr "type" "alu_shift_imm")]
! )
! 
! (define_insn "*neg_mul_imm_<mode>2"
!   [(set (match_operand:GPI 0 "register_operand" "=r")
! 	(neg:GPI (mult:GPI
! 		  (match_operand:GPI 1 "register_operand" "r")
! 		  (match_operand:QI 2 "aarch64_pwr_2_<mode>" "n"))))]
!   ""
!   "neg\\t%<w>0, %<w>1, lsl %p2"
!   [(set_attr "type" "alu_shift_imm")]
  )
  
! ;; zero_extend version of above
! (define_insn "*neg_mul_imm_si2_uxtw"
!   [(set (match_operand:DI 0 "register_operand" "=r")
! 	(zero_extend:DI
!          (neg:SI (mult:SI
! 		  (match_operand:SI 1 "register_operand" "r")
! 		  (match_operand:QI 2 "aarch64_pwr_2_si" "n")))))]
!   ""
!   "neg\\t%w0, %w1, lsl %p2"
!   [(set_attr "type" "alu_shift_imm")]
  )
  
  (define_insn "mul<mode>3"
--- 3569,3587 ----
  		  (match_operand:QI 2 "aarch64_shift_imm_si" "n")))))]
    ""
    "neg\\t%w0, %w1, <shift> %2"
!   [(set_attr "autodetect_type" "alu_shift_<shift>_op2")]
  )
  
! (define_insn "*neg_asr_si2_extr"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(neg:SI (match_operator:SI 4 "subreg_lowpart_operator"
! 		  [(sign_extract:DI
! 		     (match_operand:DI 1 "register_operand" "r")
! 		     (match_operand 3 "aarch64_simd_shift_imm_offset_si" "n")
! 		     (match_operand 2 "aarch64_simd_shift_imm_offset_si" "n"))])))]
!   "INTVAL (operands[2]) + INTVAL (operands[3]) == 32"
!   "neg\\t%w0, %w1, asr %2"
!   [(set_attr "autodetect_type" "alu_shift_asr_op2")]
  )
  
  (define_insn "mul<mode>3"
***************
*** 4059,4065 ****
  			 (match_operand:ALLX 0 "register_operand" "r"))
  			(match_operand:GPI 1 "register_operand" "r")))]
    ""
!   "cmp\\t%<GPI:w>1, %<GPI:w>0, <su>xt<ALLX:size>"
    [(set_attr "type" "alus_ext")]
  )
  
--- 3844,3850 ----
  			 (match_operand:ALLX 0 "register_operand" "r"))
  			(match_operand:GPI 1 "register_operand" "r")))]
    ""
!   "cmp\\t%<GPI:w>1, %w0, <su>xt<ALLX:size>"
    [(set_attr "type" "alus_ext")]
  )
  
***************
*** 4071,4077 ****
  			 (match_operand 1 "aarch64_imm3" "Ui3"))
  	(match_operand:GPI 2 "register_operand" "r")))]
    ""
!   "cmp\\t%<GPI:w>2, %<GPI:w>0, <su>xt<ALLX:size> %1"
    [(set_attr "type" "alus_ext")]
  )
  
--- 3856,3862 ----
  			 (match_operand 1 "aarch64_imm3" "Ui3"))
  	(match_operand:GPI 2 "register_operand" "r")))]
    ""
!   "cmp\\t%<GPI:w>2, %w0, <su>xt<ALLX:size> %1"
    [(set_attr "type" "alus_ext")]
  )
  
***************
*** 4439,4444 ****
--- 4224,4267 ----
    [(set_attr "type" "csel")]
  )
  
+ (define_insn "*csinv3_uxtw_insn1"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(if_then_else:DI
+ 	  (match_operand 1 "aarch64_comparison_operation" "")
+ 	  (zero_extend:DI
+ 	    (match_operand:SI 2 "register_operand" "r"))
+ 	  (zero_extend:DI
+ 	    (NEG_NOT:SI (match_operand:SI 3 "register_operand" "r")))))]
+   ""
+   "cs<neg_not_cs>\\t%w0, %w2, %w3, %m1"
+   [(set_attr "type" "csel")]
+ )
+ 
+ (define_insn "*csinv3_uxtw_insn2"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(if_then_else:DI
+ 	  (match_operand 1 "aarch64_comparison_operation" "")
+ 	  (zero_extend:DI
+ 	    (NEG_NOT:SI (match_operand:SI 2 "register_operand" "r")))
+ 	  (zero_extend:DI
+ 	    (match_operand:SI 3 "register_operand" "r"))))]
+   ""
+   "cs<neg_not_cs>\\t%w0, %w3, %w2, %M1"
+   [(set_attr "type" "csel")]
+ )
+ 
+ (define_insn "*csinv3_uxtw_insn3"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(if_then_else:DI
+ 	  (match_operand 1 "aarch64_comparison_operation" "")
+ 	  (zero_extend:DI
+ 	    (NEG_NOT:SI (match_operand:SI 2 "register_operand" "r")))
+ 	  (const_int 0)))]
+   ""
+   "cs<neg_not_cs>\\t%w0, wzr, %w2, %M1"
+   [(set_attr "type" "csel")]
+ )
+ 
  ;; If X can be loaded by a single CNT[BHWD] instruction,
  ;;
  ;;    A = UMAX (B, X)
***************
*** 4620,4625 ****
--- 4443,4501 ----
    [(set_attr "type" "logic_shift_imm")]
  )
  
+ (define_split
+   [(set (match_operand:GPI 0 "register_operand")
+ 	(LOGICAL:GPI
+ 	  (and:GPI (ashift:GPI (match_operand:GPI 1 "register_operand")
+ 			       (match_operand:QI 2 "aarch64_shift_imm_<mode>"))
+ 		   (match_operand:GPI 3 "const_int_operand"))
+ 	  (zero_extend:GPI (match_operand 4 "register_operand"))))]
+   "can_create_pseudo_p ()
+    && ((paradoxical_subreg_p (operands[1])
+ 	&& rtx_equal_p (SUBREG_REG (operands[1]), operands[4]))
+        || (REG_P (operands[1])
+ 	   && REG_P (operands[4])
+ 	   && REGNO (operands[1]) == REGNO (operands[4])))
+    && (trunc_int_for_mode (GET_MODE_MASK (GET_MODE (operands[4]))
+ 			   << INTVAL (operands[2]), <MODE>mode)
+        == INTVAL (operands[3]))"
+   [(set (match_dup 5) (zero_extend:GPI (match_dup 4)))
+    (set (match_dup 0) (LOGICAL:GPI (ashift:GPI (match_dup 5) (match_dup 2))
+ 				   (match_dup 5)))]
+   "operands[5] = gen_reg_rtx (<MODE>mode);"
+ )
+ 
+ (define_split
+   [(set (match_operand:GPI 0 "register_operand")
+ 	(LOGICAL:GPI
+ 	  (and:GPI (ashift:GPI (match_operand:GPI 1 "register_operand")
+ 			       (match_operand:QI 2 "aarch64_shift_imm_<mode>"))
+ 		   (match_operand:GPI 4 "const_int_operand"))
+ 	  (and:GPI (match_dup 1) (match_operand:GPI 3 "const_int_operand"))))]
+   "can_create_pseudo_p ()
+    && pow2_or_zerop (UINTVAL (operands[3]) + 1)
+    && (trunc_int_for_mode (UINTVAL (operands[3])
+ 			   << INTVAL (operands[2]), <MODE>mode)
+        == INTVAL (operands[4]))"
+   [(set (match_dup 5) (and:GPI (match_dup 1) (match_dup 3)))
+    (set (match_dup 0) (LOGICAL:GPI (ashift:GPI (match_dup 5) (match_dup 2))
+ 				   (match_dup 5)))]
+   "operands[5] = gen_reg_rtx (<MODE>mode);"
+ )
+ 
+ (define_split
+   [(set (match_operand:GPI 0 "register_operand")
+ 	(LOGICAL:GPI
+ 	  (ashift:GPI (sign_extend:GPI (match_operand 1 "register_operand"))
+ 		      (match_operand:QI 2 "aarch64_shift_imm_<mode>"))
+ 	  (sign_extend:GPI (match_dup 1))))]
+   "can_create_pseudo_p ()"
+   [(set (match_dup 3) (sign_extend:GPI (match_dup 1)))
+    (set (match_dup 0) (LOGICAL:GPI (ashift:GPI (match_dup 3) (match_dup 2))
+ 				   (match_dup 3)))]
+   "operands[3] = gen_reg_rtx (<MODE>mode);"
+ )
+ 
  (define_insn "*<optab>_rol<mode>3"
    [(set (match_operand:GPI 0 "register_operand" "=r")
  	(LOGICAL:GPI (rotate:GPI
***************
*** 4627,4633 ****
  		      (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))
  		     (match_operand:GPI 3 "register_operand" "r")))]
    ""
!   "<logical>\\t%<w>0, %<w>3, %<w>1, ror (<sizen> - %2)"
    [(set_attr "type" "logic_shift_imm")]
  )
  
--- 4503,4509 ----
  		      (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))
  		     (match_operand:GPI 3 "register_operand" "r")))]
    ""
!   "<logical>\\t%<w>0, %<w>3, %<w>1, ror #(<sizen> - %2)"
    [(set_attr "type" "logic_shift_imm")]
  )
  
***************
*** 4652,4658 ****
  		      (match_operand:QI 2 "aarch64_shift_imm_si" "n"))
  		     (match_operand:SI 3 "register_operand" "r"))))]
    ""
!   "<logical>\\t%w0, %w3, %w1, ror (32 - %2)"
    [(set_attr "type" "logic_shift_imm")]
  )
  
--- 4528,4534 ----
  		      (match_operand:QI 2 "aarch64_shift_imm_si" "n"))
  		     (match_operand:SI 3 "register_operand" "r"))))]
    ""
!   "<logical>\\t%w0, %w3, %w1, ror #(32 - %2)"
    [(set_attr "type" "logic_shift_imm")]
  )
  
***************
*** 4667,4672 ****
--- 4543,4557 ----
     (set_attr "arch" "*,simd")]
  )
  
+ (define_insn "*one_cmpl_zero_extend"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+         (zero_extend:DI
+           (not:SI (match_operand:SI 1 "register_operand" "r"))))]
+   ""
+   "mvn\\t%w0, %w1"
+   [(set_attr "type" "logic_reg")]
+ )
+ 
  (define_insn "*one_cmpl_<optab><mode>2"
    [(set (match_operand:GPI 0 "register_operand" "=r")
  	(not:GPI (SHIFT:GPI (match_operand:GPI 1 "register_operand" "r")
***************
*** 5510,5515 ****
--- 5395,5416 ----
    [(set_attr "type" "rotate_imm")]
  )
  
+ (define_insn "*extrsi5_insn_di"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (ashift:SI (match_operand:SI 1 "register_operand" "r")
+ 			   (match_operand 3 "const_int_operand" "n"))
+ 		(match_operator:SI 6 "subreg_lowpart_operator"
+ 		  [(zero_extract:DI
+ 		     (match_operand:DI 2 "register_operand" "r")
+ 		     (match_operand 5 "const_int_operand" "n")
+ 		     (match_operand 4 "const_int_operand" "n"))])))]
+   "UINTVAL (operands[3]) < 32
+    && UINTVAL (operands[3]) + UINTVAL (operands[4]) == 32
+    && INTVAL (operands[3]) == INTVAL (operands[5])"
+   "extr\\t%w0, %w1, %w2, %4"
+   [(set_attr "type" "rotate_imm")]
+ )
+ 
  (define_insn "*ror<mode>3_insn"
    [(set (match_operand:GPI 0 "register_operand" "=r")
  	(rotate:GPI (match_operand:GPI 1 "register_operand" "r")
***************
*** 5781,5786 ****
--- 5682,5719 ----
    [(set_attr "type" "bfm")]
  )
  
+ (define_insn "*aarch64_bfxil<mode>_extr"
+   [(set (match_operand:GPI 0 "register_operand" "=r")
+         (ior:GPI (and:GPI (match_operand:GPI 1 "register_operand" "0")
+ 			  (match_operand:GPI 2 "const_int_operand" "n"))
+ 		 (zero_extract:GPI
+ 		   (match_operand:GPI 3 "register_operand" "r")
+ 		   (match_operand:GPI 4 "aarch64_simd_shift_imm_<mode>" "n")
+ 		   (match_operand:GPI 5 "aarch64_simd_shift_imm_<mode>" "n"))))]
+   "UINTVAL (operands[2]) == HOST_WIDE_INT_M1U << INTVAL (operands[4])
+    && INTVAL (operands[4])
+    && (UINTVAL (operands[4]) + UINTVAL (operands[5])
+        <= GET_MODE_BITSIZE (<MODE>mode))"
+   "bfxil\t%<GPI:w>0, %<GPI:w>3, %5, %4"
+   [(set_attr "type" "bfm")]
+ )
+ 
+ (define_insn "*aarch64_bfxilsi_extrdi"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+         (ior:SI (and:SI (match_operand:SI 1 "register_operand" "0")
+ 			(match_operand:SI 2 "const_int_operand" "n"))
+ 		(match_operator:SI 6 "subreg_lowpart_operator"
+ 		  [(zero_extract:DI
+ 		     (match_operand:DI 3 "register_operand" "r")
+ 		     (match_operand:SI 4 "aarch64_simd_shift_imm_si" "n")
+ 		     (match_operand:SI 5 "aarch64_simd_shift_imm_si" "n"))])))]
+   "UINTVAL (operands[2]) == HOST_WIDE_INT_M1U << INTVAL (operands[4])
+    && INTVAL (operands[4])
+    && UINTVAL (operands[4]) + UINTVAL (operands[5]) <= 32"
+   "bfxil\t%w0, %w3, %5, %4"
+   [(set_attr "type" "bfm")]
+ )
+ 
  (define_insn "*extr_insv_lower_reg<mode>"
    [(set (zero_extract:GPI (match_operand:GPI 0 "register_operand" "+r")
  			  (match_operand 1 "const_int_operand" "n")
***************
*** 6178,6184 ****
    "@
     fcvtz<su>\t%<s>0, %<s>1
     fcvtz<su>\t%<w>0, %<s>1"
!   [(set_attr "type" "neon_fp_to_int_s,f_cvtf2i")]
  )
  
  ;; Convert HF -> SI or DI
--- 6111,6118 ----
    "@
     fcvtz<su>\t%<s>0, %<s>1
     fcvtz<su>\t%<w>0, %<s>1"
!   [(set_attr "type" "neon_fp_to_int_s,f_cvtf2i")
!    (set_attr "arch" "simd,fp")]
  )
  
  ;; Convert HF -> SI or DI
***************
*** 6997,7006 ****
  			UNSPEC_TLSDESC))
  	      (const_int 0)))
     (unspec:DI [(match_operand:DI 1 "const_int_operand")] UNSPEC_CALLEE_ABI)
!    (clobber (reg:DI LR_REGNUM))
!    (clobber (match_scratch:DI 2 "=r"))]
    "TARGET_TLS_DESC && TARGET_SVE"
!   "adrp\\tx0, %A0\;ldr\\t%<w>2, [x0, #%L0]\;add\\t<w>0, <w>0, %L0\;.tlsdesccall\\t%0\;blr\\t%2"
    [(set_attr "type" "call")
     (set_attr "length" "16")])
  
--- 6931,6939 ----
  			UNSPEC_TLSDESC))
  	      (const_int 0)))
     (unspec:DI [(match_operand:DI 1 "const_int_operand")] UNSPEC_CALLEE_ABI)
!    (clobber (reg:DI LR_REGNUM))]
    "TARGET_TLS_DESC && TARGET_SVE"
!   "adrp\\tx0, %A0\;ldr\\t<w>30, [x0, #%L0]\;add\\t<w>0, <w>0, %L0\;.tlsdesccall\\t%0\;blr\\tx30"
    [(set_attr "type" "call")
     (set_attr "length" "16")])
  
***************
*** 7210,7246 ****
    [(set_attr "length" "16")
     (set_attr "type" "multiple")])
  
! ;; Write Floating-point Control Register.
! (define_insn "set_fpcr"
!   [(unspec_volatile [(match_operand:SI 0 "register_operand" "r")] UNSPECV_SET_FPCR)]
!   ""
!   "msr\\tfpcr, %0"
!   [(set_attr "type" "mrs")])
! 
! ;; Read Floating-point Control Register.
! (define_insn "get_fpcr"
!   [(set (match_operand:SI 0 "register_operand" "=r")
!         (unspec_volatile:SI [(const_int 0)] UNSPECV_GET_FPCR))]
!   ""
!   "mrs\\t%0, fpcr"
!   [(set_attr "type" "mrs")])
! 
! ;; Write Floating-point Status Register.
! (define_insn "set_fpsr"
!   [(unspec_volatile [(match_operand:SI 0 "register_operand" "r")] UNSPECV_SET_FPSR)]
    ""
!   "msr\\tfpsr, %0"
    [(set_attr "type" "mrs")])
  
! ;; Read Floating-point Status Register.
! (define_insn "get_fpsr"
!   [(set (match_operand:SI 0 "register_operand" "=r")
!         (unspec_volatile:SI [(const_int 0)] UNSPECV_GET_FPSR))]
    ""
!   "mrs\\t%0, fpsr"
    [(set_attr "type" "mrs")])
  
- 
  ;; Define the subtract-one-and-jump insns so loop.c
  ;; knows what to generate.
  (define_expand "doloop_end"
--- 7143,7163 ----
    [(set_attr "length" "16")
     (set_attr "type" "multiple")])
  
! ;; Write into the Floating-point Status or Control Register.
! (define_insn "@aarch64_set_<fpscr_name><GPI:mode>"
!   [(unspec_volatile [(match_operand:GPI 0 "register_operand" "r")] SET_FPSCR)]
    ""
!   "msr\\t<fpscr_name>, %0"
    [(set_attr "type" "mrs")])
  
! ;; Read into the Floating-point Status or Control Register.
! (define_insn "@aarch64_get_<fpscr_name><GPI:mode>"
!   [(set (match_operand:GPI 0 "register_operand" "=r")
!         (unspec_volatile:GPI [(const_int 0)] GET_FPSCR))]
    ""
!   "mrs\\t%0, <fpscr_name>"
    [(set_attr "type" "mrs")])
  
  ;; Define the subtract-one-and-jump insns so loop.c
  ;; knows what to generate.
  (define_expand "doloop_end"
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64.opt gcc-11.1.0/gcc/config/aarch64/aarch64.opt
*** gcc-10.3.0/gcc/config/aarch64/aarch64.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/aarch64.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ; Machine description for AArch64 architecture.
! ; Copyright (C) 2009-2020 Free Software Foundation, Inc.
  ; Contributed by ARM Ltd.
  ;
  ; This file is part of GCC.
--- 1,5 ----
  ; Machine description for AArch64 architecture.
! ; Copyright (C) 2009-2021 Free Software Foundation, Inc.
  ; Contributed by ARM Ltd.
  ;
  ; This file is part of GCC.
*************** EnumValue
*** 64,74 ****
  Enum(cmodel) String(large) Value(AARCH64_CMODEL_LARGE)
  
  mbig-endian
! Target Report RejectNegative Mask(BIG_END)
  Assume target CPU is configured as big endian.
  
  mgeneral-regs-only
! Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Save
  Generate code which uses only the general registers.
  
  mharden-sls=
--- 64,74 ----
  Enum(cmodel) String(large) Value(AARCH64_CMODEL_LARGE)
  
  mbig-endian
! Target RejectNegative Mask(BIG_END)
  Assume target CPU is configured as big endian.
  
  mgeneral-regs-only
! Target RejectNegative Mask(GENERAL_REGS_ONLY) Save
  Generate code which uses only the general registers.
  
  mharden-sls=
*************** Target RejectNegative Joined Var(aarch64
*** 76,90 ****
  Generate code to mitigate against straight line speculation.
  
  mfix-cortex-a53-835769
! Target Report Var(aarch64_fix_a53_err835769) Init(2) Save
  Workaround for ARM Cortex-A53 Erratum number 835769.
  
  mfix-cortex-a53-843419
! Target Report Var(aarch64_fix_a53_err843419) Init(2) Save
  Workaround for ARM Cortex-A53 Erratum number 843419.
  
  mlittle-endian
! Target Report RejectNegative InverseMask(BIG_END)
  Assume target CPU is configured as little endian.
  
  mcmodel=
--- 76,90 ----
  Generate code to mitigate against straight line speculation.
  
  mfix-cortex-a53-835769
! Target Var(aarch64_fix_a53_err835769) Init(2) Save
  Workaround for ARM Cortex-A53 Erratum number 835769.
  
  mfix-cortex-a53-843419
! Target Var(aarch64_fix_a53_err843419) Init(2) Save
  Workaround for ARM Cortex-A53 Erratum number 843419.
  
  mlittle-endian
! Target RejectNegative InverseMask(BIG_END)
  Assume target CPU is configured as little endian.
  
  mcmodel=
*************** Target RejectNegative Joined Enum(cmodel
*** 92,102 ****
  Specify the code model.
  
  mstrict-align
! Target Report Mask(STRICT_ALIGN) Save
  Don't assume that unaligned accesses are handled by the system.
  
  momit-leaf-frame-pointer
! Target Report Var(flag_omit_leaf_frame_pointer) Init(2) Save
  Omit the frame pointer in leaf functions.
  
  mtls-dialect=
--- 92,102 ----
  Specify the code model.
  
  mstrict-align
! Target Mask(STRICT_ALIGN) Save
  Don't assume that unaligned accesses are handled by the system.
  
  momit-leaf-frame-pointer
! Target Var(flag_omit_leaf_frame_pointer) Init(2) Save
  Omit the frame pointer in leaf functions.
  
  mtls-dialect=
*************** EnumValue
*** 153,159 ****
  Enum(aarch64_abi) String(lp64) Value(AARCH64_ABI_LP64)
  
  mpc-relative-literal-loads
! Target Report Save Var(pcrelative_literal_loads) Init(2) Save
  PC relative literal loads.
  
  mbranch-protection=
--- 153,159 ----
  Enum(aarch64_abi) String(lp64) Value(AARCH64_ABI_LP64)
  
  mpc-relative-literal-loads
! Target Save Var(pcrelative_literal_loads) Init(2) Save
  PC relative literal loads.
  
  mbranch-protection=
*************** TargetVariable
*** 260,266 ****
  long aarch64_stack_protector_guard_offset = 0
  
  moutline-atomics
! Target Report Var(aarch64_flag_outline_atomics) Init(2) Save
  Generate local calls to out-of-line atomic operations.
  
  -param=aarch64-sve-compare-costs=
--- 260,266 ----
  long aarch64_stack_protector_guard_offset = 0
  
  moutline-atomics
! Target Var(aarch64_flag_outline_atomics) Init(2) Save
  Generate local calls to out-of-line atomic operations.
  
  -param=aarch64-sve-compare-costs=
*************** The number of Newton iterations for calc
*** 277,279 ****
--- 277,282 ----
  
  -param=aarch64-autovec-preference=
  Target Joined UInteger Var(aarch64_autovec_preference) Init(0) IntegerRange(0, 4) Param
+ 
+ -param=aarch64-loop-vect-issue-rate-niters=
+ Target Joined UInteger Var(aarch64_loop_vect_issue_rate_niters) Init(6) IntegerRange(0, 65536) Param
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/arm_acle.h gcc-11.1.0/gcc/config/aarch64/arm_acle.h
*** gcc-10.3.0/gcc/config/aarch64/arm_acle.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/arm_acle.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* AArch64 Non-NEON ACLE intrinsics include file.
  
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* AArch64 Non-NEON ACLE intrinsics include file.
  
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/arm_bf16.h gcc-11.1.0/gcc/config/aarch64/arm_bf16.h
*** gcc-10.3.0/gcc/config/aarch64/arm_bf16.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/arm_bf16.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Arm BF16 instrinsics include file.
  
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by Arm.
  
     This file is part of GCC.
--- 1,6 ----
  /* Arm BF16 instrinsics include file.
  
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by Arm.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/arm_fp16.h gcc-11.1.0/gcc/config/aarch64/arm_fp16.h
*** gcc-10.3.0/gcc/config/aarch64/arm_fp16.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/arm_fp16.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* ARM FP16 scalar intrinsics include file.
  
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* ARM FP16 scalar intrinsics include file.
  
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/arm_neon.h gcc-11.1.0/gcc/config/aarch64/arm_neon.h
*** gcc-10.3.0/gcc/config/aarch64/arm_neon.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/arm_neon.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* ARM NEON intrinsics include file.
  
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* ARM NEON intrinsics include file.
  
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** vsetq_lane_u64 (uint64_t __elem, uint64x
*** 6302,6517 ****
    return __aarch64_vset_lane_any (__elem, __vec, __index);
  }
  
- #define __GET_LOW(__TYPE) \
-   uint64x2_t tmp = vreinterpretq_u64_##__TYPE (__a);  \
-   uint64x1_t lo = vcreate_u64 (vgetq_lane_u64 (tmp, 0));  \
-   return vreinterpret_##__TYPE##_u64 (lo);
- 
  __extension__ extern __inline float16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_f16 (float16x8_t __a)
  {
!   __GET_LOW (f16);
  }
  
  __extension__ extern __inline float32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_f32 (float32x4_t __a)
  {
!   __GET_LOW (f32);
  }
  
  __extension__ extern __inline float64x1_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_f64 (float64x2_t __a)
  {
!   return (float64x1_t) {vgetq_lane_f64 (__a, 0)};
  }
  
  __extension__ extern __inline poly8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_p8 (poly8x16_t __a)
  {
!   __GET_LOW (p8);
  }
  
  __extension__ extern __inline poly16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_p16 (poly16x8_t __a)
  {
!   __GET_LOW (p16);
  }
  
  __extension__ extern __inline poly64x1_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_p64 (poly64x2_t __a)
  {
!   __GET_LOW (p64);
  }
  
  __extension__ extern __inline int8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_s8 (int8x16_t __a)
  {
!   __GET_LOW (s8);
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_s16 (int16x8_t __a)
  {
!   __GET_LOW (s16);
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_s32 (int32x4_t __a)
  {
!   __GET_LOW (s32);
  }
  
  __extension__ extern __inline int64x1_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_s64 (int64x2_t __a)
  {
!   __GET_LOW (s64);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_u8 (uint8x16_t __a)
  {
!   __GET_LOW (u8);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_u16 (uint16x8_t __a)
  {
!   __GET_LOW (u16);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_u32 (uint32x4_t __a)
  {
!   __GET_LOW (u32);
  }
  
  __extension__ extern __inline uint64x1_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_u64 (uint64x2_t __a)
  {
!   return vcreate_u64 (vgetq_lane_u64 (__a, 0));
  }
  
- #undef __GET_LOW
- 
- #define __GET_HIGH(__TYPE)					\
-   uint64x2_t tmp = vreinterpretq_u64_##__TYPE (__a);		\
-   uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1));	\
-   return vreinterpret_##__TYPE##_u64 (hi);
- 
  __extension__ extern __inline float16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_f16 (float16x8_t __a)
  {
!   __GET_HIGH (f16);
  }
  
  __extension__ extern __inline float32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_f32 (float32x4_t __a)
  {
!   __GET_HIGH (f32);
  }
  
  __extension__ extern __inline float64x1_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_f64 (float64x2_t __a)
  {
!   __GET_HIGH (f64);
  }
  
  __extension__ extern __inline poly8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_p8 (poly8x16_t __a)
  {
!   __GET_HIGH (p8);
  }
  
  __extension__ extern __inline poly16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_p16 (poly16x8_t __a)
  {
!   __GET_HIGH (p16);
  }
  
  __extension__ extern __inline poly64x1_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_p64 (poly64x2_t __a)
  {
!   __GET_HIGH (p64);
  }
  
  __extension__ extern __inline int8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_s8 (int8x16_t __a)
  {
!   __GET_HIGH (s8);
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_s16 (int16x8_t __a)
  {
!   __GET_HIGH (s16);
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_s32 (int32x4_t __a)
  {
!   __GET_HIGH (s32);
  }
  
  __extension__ extern __inline int64x1_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_s64 (int64x2_t __a)
  {
!   __GET_HIGH (s64);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_u8 (uint8x16_t __a)
  {
!   __GET_HIGH (u8);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_u16 (uint16x8_t __a)
  {
!   __GET_HIGH (u16);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_u32 (uint32x4_t __a)
  {
!   __GET_HIGH (u32);
  }
  
- #undef __GET_HIGH
- 
  __extension__ extern __inline uint64x1_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_u64 (uint64x2_t __a)
  {
!   return vcreate_u64 (vgetq_lane_u64 (__a, 1));
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcombine_s8 (int8x8_t __a, int8x8_t __b)
--- 6302,6504 ----
    return __aarch64_vset_lane_any (__elem, __vec, __index);
  }
  
  __extension__ extern __inline float16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_f16 (float16x8_t __a)
  {
!   return __builtin_aarch64_get_lowv8hf (__a);
  }
  
  __extension__ extern __inline float32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_f32 (float32x4_t __a)
  {
!   return __builtin_aarch64_get_lowv4sf (__a);
  }
  
  __extension__ extern __inline float64x1_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_f64 (float64x2_t __a)
  {
!   return (float64x1_t) {__builtin_aarch64_get_lowv2df (__a)};
  }
  
  __extension__ extern __inline poly8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_p8 (poly8x16_t __a)
  {
!   return (poly8x8_t) __builtin_aarch64_get_lowv16qi ((int8x16_t) __a);
  }
  
  __extension__ extern __inline poly16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_p16 (poly16x8_t __a)
  {
!   return (poly16x4_t) __builtin_aarch64_get_lowv8hi ((int16x8_t) __a);
  }
  
  __extension__ extern __inline poly64x1_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_p64 (poly64x2_t __a)
  {
!   return (poly64x1_t) __builtin_aarch64_get_lowv2di ((int64x2_t) __a);
  }
  
  __extension__ extern __inline int8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_s8 (int8x16_t __a)
  {
!   return  __builtin_aarch64_get_lowv16qi (__a);
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_s16 (int16x8_t __a)
  {
!   return  __builtin_aarch64_get_lowv8hi (__a);
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_s32 (int32x4_t __a)
  {
!   return  __builtin_aarch64_get_lowv4si (__a);
  }
  
  __extension__ extern __inline int64x1_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_s64 (int64x2_t __a)
  {
!   return  (int64x1_t) {__builtin_aarch64_get_lowv2di (__a)};
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_u8 (uint8x16_t __a)
  {
!   return (uint8x8_t) __builtin_aarch64_get_lowv16qi ((int8x16_t) __a);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_u16 (uint16x8_t __a)
  {
!   return (uint16x4_t) __builtin_aarch64_get_lowv8hi ((int16x8_t) __a);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_u32 (uint32x4_t __a)
  {
!   return (uint32x2_t) __builtin_aarch64_get_lowv4si ((int32x4_t) __a);
  }
  
  __extension__ extern __inline uint64x1_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_low_u64 (uint64x2_t __a)
  {
!   return (uint64x1_t) {__builtin_aarch64_get_lowv2di ((int64x2_t) __a)};
  }
  
  __extension__ extern __inline float16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_f16 (float16x8_t __a)
  {
!   return __builtin_aarch64_get_highv8hf (__a);
  }
  
  __extension__ extern __inline float32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_f32 (float32x4_t __a)
  {
!   return __builtin_aarch64_get_highv4sf (__a);
  }
  
  __extension__ extern __inline float64x1_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_f64 (float64x2_t __a)
  {
!   return (float64x1_t) {__builtin_aarch64_get_highv2df (__a)};
  }
  
  __extension__ extern __inline poly8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_p8 (poly8x16_t __a)
  {
!   return (poly8x8_t) __builtin_aarch64_get_highv16qi ((int8x16_t) __a);
  }
  
  __extension__ extern __inline poly16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_p16 (poly16x8_t __a)
  {
!   return (poly16x4_t) __builtin_aarch64_get_highv8hi ((int16x8_t) __a);
  }
  
  __extension__ extern __inline poly64x1_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_p64 (poly64x2_t __a)
  {
!   return (poly64x1_t) __builtin_aarch64_get_highv2di ((int64x2_t) __a);
  }
  
  __extension__ extern __inline int8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_s8 (int8x16_t __a)
  {
!   return  __builtin_aarch64_get_highv16qi (__a);
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_s16 (int16x8_t __a)
  {
!   return  __builtin_aarch64_get_highv8hi (__a);
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_s32 (int32x4_t __a)
  {
!   return  __builtin_aarch64_get_highv4si (__a);
  }
  
  __extension__ extern __inline int64x1_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_s64 (int64x2_t __a)
  {
!   return  (int64x1_t) {__builtin_aarch64_get_highv2di (__a)};
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_u8 (uint8x16_t __a)
  {
!   return (uint8x8_t) __builtin_aarch64_get_highv16qi ((int8x16_t) __a);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_u16 (uint16x8_t __a)
  {
!   return (uint16x4_t) __builtin_aarch64_get_highv8hi ((int16x8_t) __a);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_u32 (uint32x4_t __a)
  {
!   return (uint32x2_t) __builtin_aarch64_get_highv4si ((int32x4_t) __a);
  }
  
  __extension__ extern __inline uint64x1_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vget_high_u64 (uint64x2_t __a)
  {
!   return (uint64x1_t) {__builtin_aarch64_get_highv2di ((int64x2_t) __a)};
  }
  
+ 
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcombine_s8 (int8x8_t __a, int8x8_t __b)
*************** __extension__ extern __inline int8x8_t
*** 6621,7316 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaba_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)
  {
!   int8x8_t __result;
!   __asm__ ("saba %0.8b,%2.8b,%3.8b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaba_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
  {
!   int16x4_t __result;
!   __asm__ ("saba %0.4h,%2.4h,%3.4h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaba_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
  {
!   int32x2_t __result;
!   __asm__ ("saba %0.2s,%2.2s,%3.2s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaba_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
  {
!   uint8x8_t __result;
!   __asm__ ("uaba %0.8b,%2.8b,%3.8b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaba_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
  {
!   uint16x4_t __result;
!   __asm__ ("uaba %0.4h,%2.4h,%3.4h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaba_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
  {
!   uint32x2_t __result;
!   __asm__ ("uaba %0.2s,%2.2s,%3.2s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c)
  {
!   int16x8_t __result;
!   __asm__ ("sabal2 %0.8h,%2.16b,%3.16b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
  {
!   int32x4_t __result;
!   __asm__ ("sabal2 %0.4s,%2.8h,%3.8h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
  {
!   int64x2_t __result;
!   __asm__ ("sabal2 %0.2d,%2.4s,%3.4s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c)
  {
!   uint16x8_t __result;
!   __asm__ ("uabal2 %0.8h,%2.16b,%3.16b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c)
  {
!   uint32x4_t __result;
!   __asm__ ("uabal2 %0.4s,%2.8h,%3.8h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c)
  {
!   uint64x2_t __result;
!   __asm__ ("uabal2 %0.2d,%2.4s,%3.4s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)
  {
!   int16x8_t __result;
!   __asm__ ("sabal %0.8h,%2.8b,%3.8b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
  {
!   int32x4_t __result;
!   __asm__ ("sabal %0.4s,%2.4h,%3.4h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
  {
!   int64x2_t __result;
!   __asm__ ("sabal %0.2d,%2.2s,%3.2s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)
  {
!   uint16x8_t __result;
!   __asm__ ("uabal %0.8h,%2.8b,%3.8b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)
  {
!   uint32x4_t __result;
!   __asm__ ("uabal %0.4s,%2.4h,%3.4h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)
  {
!   uint64x2_t __result;
!   __asm__ ("uabal %0.2d,%2.2s,%3.2s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabaq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)
  {
!   int8x16_t __result;
!   __asm__ ("saba %0.16b,%2.16b,%3.16b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabaq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
  {
!   int16x8_t __result;
!   __asm__ ("saba %0.8h,%2.8h,%3.8h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabaq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
  {
!   int32x4_t __result;
!   __asm__ ("saba %0.4s,%2.4s,%3.4s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabaq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
  {
!   uint8x16_t __result;
!   __asm__ ("uaba %0.16b,%2.16b,%3.16b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabaq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
  {
!   uint16x8_t __result;
!   __asm__ ("uaba %0.8h,%2.8h,%3.8h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabaq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
  {
!   uint32x4_t __result;
!   __asm__ ("uaba %0.4s,%2.4s,%3.4s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabd_s8 (int8x8_t __a, int8x8_t __b)
  {
!   int8x8_t __result;
!   __asm__ ("sabd %0.8b, %1.8b, %2.8b"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabd_s16 (int16x4_t __a, int16x4_t __b)
  {
!   int16x4_t __result;
!   __asm__ ("sabd %0.4h, %1.4h, %2.4h"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabd_s32 (int32x2_t __a, int32x2_t __b)
  {
!   int32x2_t __result;
!   __asm__ ("sabd %0.2s, %1.2s, %2.2s"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabd_u8 (uint8x8_t __a, uint8x8_t __b)
  {
!   uint8x8_t __result;
!   __asm__ ("uabd %0.8b, %1.8b, %2.8b"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabd_u16 (uint16x4_t __a, uint16x4_t __b)
  {
!   uint16x4_t __result;
!   __asm__ ("uabd %0.4h, %1.4h, %2.4h"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabd_u32 (uint32x2_t __a, uint32x2_t __b)
  {
!   uint32x2_t __result;
!   __asm__ ("uabd %0.2s, %1.2s, %2.2s"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_high_s8 (int8x16_t __a, int8x16_t __b)
  {
!   int16x8_t __result;
!   __asm__ ("sabdl2 %0.8h,%1.16b,%2.16b"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_high_s16 (int16x8_t __a, int16x8_t __b)
  {
!   int32x4_t __result;
!   __asm__ ("sabdl2 %0.4s,%1.8h,%2.8h"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_high_s32 (int32x4_t __a, int32x4_t __b)
  {
!   int64x2_t __result;
!   __asm__ ("sabdl2 %0.2d,%1.4s,%2.4s"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_high_u8 (uint8x16_t __a, uint8x16_t __b)
  {
!   uint16x8_t __result;
!   __asm__ ("uabdl2 %0.8h,%1.16b,%2.16b"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_high_u16 (uint16x8_t __a, uint16x8_t __b)
  {
!   uint32x4_t __result;
!   __asm__ ("uabdl2 %0.4s,%1.8h,%2.8h"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_high_u32 (uint32x4_t __a, uint32x4_t __b)
  {
!   uint64x2_t __result;
!   __asm__ ("uabdl2 %0.2d,%1.4s,%2.4s"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_s8 (int8x8_t __a, int8x8_t __b)
  {
!   int16x8_t __result;
!   __asm__ ("sabdl %0.8h, %1.8b, %2.8b"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_s16 (int16x4_t __a, int16x4_t __b)
  {
!   int32x4_t __result;
!   __asm__ ("sabdl %0.4s, %1.4h, %2.4h"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_s32 (int32x2_t __a, int32x2_t __b)
  {
!   int64x2_t __result;
!   __asm__ ("sabdl %0.2d, %1.2s, %2.2s"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_u8 (uint8x8_t __a, uint8x8_t __b)
  {
!   uint16x8_t __result;
!   __asm__ ("uabdl %0.8h, %1.8b, %2.8b"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_u16 (uint16x4_t __a, uint16x4_t __b)
  {
!   uint32x4_t __result;
!   __asm__ ("uabdl %0.4s, %1.4h, %2.4h"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_u32 (uint32x2_t __a, uint32x2_t __b)
  {
!   uint64x2_t __result;
!   __asm__ ("uabdl %0.2d, %1.2s, %2.2s"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdq_s8 (int8x16_t __a, int8x16_t __b)
  {
!   int8x16_t __result;
!   __asm__ ("sabd %0.16b, %1.16b, %2.16b"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdq_s16 (int16x8_t __a, int16x8_t __b)
  {
!   int16x8_t __result;
!   __asm__ ("sabd %0.8h, %1.8h, %2.8h"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdq_s32 (int32x4_t __a, int32x4_t __b)
  {
!   int32x4_t __result;
!   __asm__ ("sabd %0.4s, %1.4s, %2.4s"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdq_u8 (uint8x16_t __a, uint8x16_t __b)
  {
!   uint8x16_t __result;
!   __asm__ ("uabd %0.16b, %1.16b, %2.16b"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdq_u16 (uint16x8_t __a, uint16x8_t __b)
  {
!   uint16x8_t __result;
!   __asm__ ("uabd %0.8h, %1.8h, %2.8h"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdq_u32 (uint32x4_t __a, uint32x4_t __b)
  {
!   uint32x4_t __result;
!   __asm__ ("uabd %0.4s, %1.4s, %2.4s"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlv_s8 (int8x8_t __a)
  {
!   int16_t __result;
!   __asm__ ("saddlv %h0,%1.8b"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlv_s16 (int16x4_t __a)
  {
!   int32_t __result;
!   __asm__ ("saddlv %s0,%1.4h"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlv_u8 (uint8x8_t __a)
  {
!   uint16_t __result;
!   __asm__ ("uaddlv %h0,%1.8b"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlv_u16 (uint16x4_t __a)
  {
!   uint32_t __result;
!   __asm__ ("uaddlv %s0,%1.4h"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlvq_s8 (int8x16_t __a)
  {
!   int16_t __result;
!   __asm__ ("saddlv %h0,%1.16b"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlvq_s16 (int16x8_t __a)
  {
!   int32_t __result;
!   __asm__ ("saddlv %s0,%1.8h"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlvq_s32 (int32x4_t __a)
  {
!   int64_t __result;
!   __asm__ ("saddlv %d0,%1.4s"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlvq_u8 (uint8x16_t __a)
  {
!   uint16_t __result;
!   __asm__ ("uaddlv %h0,%1.16b"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlvq_u16 (uint16x8_t __a)
  {
!   uint32_t __result;
!   __asm__ ("uaddlv %s0,%1.8h"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlvq_u32 (uint32x4_t __a)
  {
!   uint64_t __result;
!   __asm__ ("uaddlv %d0,%1.4s"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline float32x2_t
--- 6608,7013 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaba_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)
  {
!   return __builtin_aarch64_sabav8qi (__a, __b, __c);
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaba_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
  {
!   return __builtin_aarch64_sabav4hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaba_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
  {
!   return __builtin_aarch64_sabav2si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaba_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
  {
!   return __builtin_aarch64_uabav8qi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaba_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
  {
!   return __builtin_aarch64_uabav4hi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaba_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
  {
!   return __builtin_aarch64_uabav2si_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c)
  {
!   return __builtin_aarch64_sabal2v16qi (__a, __b, __c);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
  {
!   return __builtin_aarch64_sabal2v8hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
  {
!   return __builtin_aarch64_sabal2v4si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c)
  {
!   return __builtin_aarch64_uabal2v16qi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c)
  {
!   return __builtin_aarch64_uabal2v8hi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c)
  {
!   return __builtin_aarch64_uabal2v4si_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)
  {
!   return __builtin_aarch64_sabalv8qi (__a, __b, __c);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
  {
!   return __builtin_aarch64_sabalv4hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
  {
!   return __builtin_aarch64_sabalv2si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)
  {
!   return __builtin_aarch64_uabalv8qi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)
  {
!   return __builtin_aarch64_uabalv4hi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabal_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)
  {
!   return __builtin_aarch64_uabalv2si_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabaq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)
  {
!   return __builtin_aarch64_sabav16qi (__a, __b, __c);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabaq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
  {
!   return __builtin_aarch64_sabav8hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabaq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
  {
!   return __builtin_aarch64_sabav4si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabaq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
  {
!   return __builtin_aarch64_uabav16qi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabaq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
  {
!   return __builtin_aarch64_uabav8hi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabaq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
  {
!   return __builtin_aarch64_uabav4si_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline int8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabd_s8 (int8x8_t __a, int8x8_t __b)
  {
!   return  __builtin_aarch64_sabdv8qi (__a, __b);
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabd_s16 (int16x4_t __a, int16x4_t __b)
  {
!   return  __builtin_aarch64_sabdv4hi (__a, __b);
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabd_s32 (int32x2_t __a, int32x2_t __b)
  {
!   return  __builtin_aarch64_sabdv2si (__a, __b);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabd_u8 (uint8x8_t __a, uint8x8_t __b)
  {
!   return  __builtin_aarch64_uabdv8qi_uuu (__a, __b);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabd_u16 (uint16x4_t __a, uint16x4_t __b)
  {
!   return  __builtin_aarch64_uabdv4hi_uuu (__a, __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabd_u32 (uint32x2_t __a, uint32x2_t __b)
  {
!   return  __builtin_aarch64_uabdv2si_uuu (__a, __b);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_high_s8 (int8x16_t __a, int8x16_t __b)
  {
!   return __builtin_aarch64_sabdl2v16qi (__a, __b);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_high_s16 (int16x8_t __a, int16x8_t __b)
  {
!   return __builtin_aarch64_sabdl2v8hi (__a, __b);
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_high_s32 (int32x4_t __a, int32x4_t __b)
  {
!   return __builtin_aarch64_sabdl2v4si (__a, __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_high_u8 (uint8x16_t __a, uint8x16_t __b)
  {
!   return __builtin_aarch64_uabdl2v16qi_uuu (__a, __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_high_u16 (uint16x8_t __a, uint16x8_t __b)
  {
!   return __builtin_aarch64_uabdl2v8hi_uuu (__a, __b);
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_high_u32 (uint32x4_t __a, uint32x4_t __b)
  {
!   return __builtin_aarch64_uabdl2v4si_uuu (__a, __b);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_s8 (int8x8_t __a, int8x8_t __b)
  {
!   return __builtin_aarch64_sabdlv8qi (__a, __b);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_s16 (int16x4_t __a, int16x4_t __b)
  {
!   return __builtin_aarch64_sabdlv4hi (__a, __b);
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_s32 (int32x2_t __a, int32x2_t __b)
  {
!   return __builtin_aarch64_sabdlv2si (__a, __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_u8 (uint8x8_t __a, uint8x8_t __b)
  {
!   return __builtin_aarch64_uabdlv8qi_uuu (__a, __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_u16 (uint16x4_t __a, uint16x4_t __b)
  {
!   return __builtin_aarch64_uabdlv4hi_uuu (__a, __b);
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdl_u32 (uint32x2_t __a, uint32x2_t __b)
  {
!   return __builtin_aarch64_uabdlv2si_uuu (__a, __b);
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdq_s8 (int8x16_t __a, int8x16_t __b)
  {
!   return  __builtin_aarch64_sabdv16qi (__a, __b);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdq_s16 (int16x8_t __a, int16x8_t __b)
  {
!   return  __builtin_aarch64_sabdv8hi (__a, __b);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdq_s32 (int32x4_t __a, int32x4_t __b)
  {
!   return  __builtin_aarch64_sabdv4si (__a, __b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdq_u8 (uint8x16_t __a, uint8x16_t __b)
  {
!   return  __builtin_aarch64_uabdv16qi_uuu (__a, __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdq_u16 (uint16x8_t __a, uint16x8_t __b)
  {
!   return  __builtin_aarch64_uabdv8hi_uuu (__a, __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vabdq_u32 (uint32x4_t __a, uint32x4_t __b)
  {
!   return  __builtin_aarch64_uabdv4si_uuu (__a, __b);
  }
  
  __extension__ extern __inline int16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlv_s8 (int8x8_t __a)
  {
!   return __builtin_aarch64_saddlvv8qi (__a);
  }
  
  __extension__ extern __inline int32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlv_s16 (int16x4_t __a)
  {
!   return __builtin_aarch64_saddlvv4hi (__a);
  }
  
  __extension__ extern __inline uint16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlv_u8 (uint8x8_t __a)
  {
!   return __builtin_aarch64_uaddlvv8qi_uu (__a);
  }
  
  __extension__ extern __inline uint32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlv_u16 (uint16x4_t __a)
  {
!   return __builtin_aarch64_uaddlvv4hi_uu (__a);
  }
  
  __extension__ extern __inline int16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlvq_s8 (int8x16_t __a)
  {
!   return __builtin_aarch64_saddlvv16qi (__a);
  }
  
  __extension__ extern __inline int32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlvq_s16 (int16x8_t __a)
  {
!   return __builtin_aarch64_saddlvv8hi (__a);
  }
  
  __extension__ extern __inline int64_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlvq_s32 (int32x4_t __a)
  {
!   return __builtin_aarch64_saddlvv4si (__a);
  }
  
  __extension__ extern __inline uint16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlvq_u8 (uint8x16_t __a)
  {
!   return __builtin_aarch64_uaddlvv16qi_uu (__a);
  }
  
  __extension__ extern __inline uint32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlvq_u16 (uint16x8_t __a)
  {
!   return __builtin_aarch64_uaddlvv8hi_uu (__a);
  }
  
  __extension__ extern __inline uint64_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlvq_u32 (uint32x4_t __a)
  {
!   return __builtin_aarch64_uaddlvv4si_uu (__a);
  }
  
  __extension__ extern __inline float32x2_t
*************** __extension__ extern __inline int16x4_t
*** 7366,7717 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_n_s16 (int16x4_t __a, int16x4_t __b, int16_t __c)
  {
!   int16x4_t __result;
!   __asm__ ("mla %0.4h,%2.4h,%3.h[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "x"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_n_s32 (int32x2_t __a, int32x2_t __b, int32_t __c)
  {
!   int32x2_t __result;
!   __asm__ ("mla %0.2s,%2.2s,%3.s[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_n_u16 (uint16x4_t __a, uint16x4_t __b, uint16_t __c)
  {
!   uint16x4_t __result;
!   __asm__ ("mla %0.4h,%2.4h,%3.h[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "x"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_n_u32 (uint32x2_t __a, uint32x2_t __b, uint32_t __c)
  {
!   uint32x2_t __result;
!   __asm__ ("mla %0.2s,%2.2s,%3.s[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)
  {
!   int8x8_t __result;
!   __asm__ ("mla %0.8b, %2.8b, %3.8b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
  {
!   int16x4_t __result;
!   __asm__ ("mla %0.4h, %2.4h, %3.4h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
  {
!   int32x2_t __result;
!   __asm__ ("mla %0.2s, %2.2s, %3.2s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
  {
!   uint8x8_t __result;
!   __asm__ ("mla %0.8b, %2.8b, %3.8b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
  {
!   uint16x4_t __result;
!   __asm__ ("mla %0.4h, %2.4h, %3.4h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
  {
!   uint32x2_t __result;
!   __asm__ ("mla %0.2s, %2.2s, %3.2s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
! #define vmlal_high_lane_s16(a, b, c, d)                                 \
!   __extension__                                                         \
!     ({                                                                  \
!        int16x4_t c_ = (c);                                              \
!        int16x8_t b_ = (b);                                              \
!        int32x4_t a_ = (a);                                              \
!        int32x4_t result;                                                \
!        __asm__ ("smlal2 %0.4s, %2.8h, %3.h[%4]"                         \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "x"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlal_high_lane_s32(a, b, c, d)                                 \
!   __extension__                                                         \
!     ({                                                                  \
!        int32x2_t c_ = (c);                                              \
!        int32x4_t b_ = (b);                                              \
!        int64x2_t a_ = (a);                                              \
!        int64x2_t result;                                                \
!        __asm__ ("smlal2 %0.2d, %2.4s, %3.s[%4]"                         \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "w"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlal_high_lane_u16(a, b, c, d)                                 \
!   __extension__                                                         \
!     ({                                                                  \
!        uint16x4_t c_ = (c);                                             \
!        uint16x8_t b_ = (b);                                             \
!        uint32x4_t a_ = (a);                                             \
!        uint32x4_t result;                                               \
!        __asm__ ("umlal2 %0.4s, %2.8h, %3.h[%4]"                         \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "x"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlal_high_lane_u32(a, b, c, d)                                 \
!   __extension__                                                         \
!     ({                                                                  \
!        uint32x2_t c_ = (c);                                             \
!        uint32x4_t b_ = (b);                                             \
!        uint64x2_t a_ = (a);                                             \
!        uint64x2_t result;                                               \
!        __asm__ ("umlal2 %0.2d, %2.4s, %3.s[%4]"                         \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "w"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlal_high_laneq_s16(a, b, c, d)                                \
!   __extension__                                                         \
!     ({                                                                  \
!        int16x8_t c_ = (c);                                              \
!        int16x8_t b_ = (b);                                              \
!        int32x4_t a_ = (a);                                              \
!        int32x4_t result;                                                \
!        __asm__ ("smlal2 %0.4s, %2.8h, %3.h[%4]"                         \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "x"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlal_high_laneq_s32(a, b, c, d)                                \
!   __extension__                                                         \
!     ({                                                                  \
!        int32x4_t c_ = (c);                                              \
!        int32x4_t b_ = (b);                                              \
!        int64x2_t a_ = (a);                                              \
!        int64x2_t result;                                                \
!        __asm__ ("smlal2 %0.2d, %2.4s, %3.s[%4]"                         \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "w"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlal_high_laneq_u16(a, b, c, d)                                \
!   __extension__                                                         \
!     ({                                                                  \
!        uint16x8_t c_ = (c);                                             \
!        uint16x8_t b_ = (b);                                             \
!        uint32x4_t a_ = (a);                                             \
!        uint32x4_t result;                                               \
!        __asm__ ("umlal2 %0.4s, %2.8h, %3.h[%4]"                         \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "x"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlal_high_laneq_u32(a, b, c, d)                                \
!   __extension__                                                         \
!     ({                                                                  \
!        uint32x4_t c_ = (c);                                             \
!        uint32x4_t b_ = (b);                                             \
!        uint64x2_t a_ = (a);                                             \
!        uint64x2_t result;                                               \
!        __asm__ ("umlal2 %0.2d, %2.4s, %3.s[%4]"                         \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "w"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)
  {
!   int32x4_t __result;
!   __asm__ ("smlal2 %0.4s,%2.8h,%3.h[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "x"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)
  {
!   int64x2_t __result;
!   __asm__ ("smlal2 %0.2d,%2.4s,%3.s[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_n_u16 (uint32x4_t __a, uint16x8_t __b, uint16_t __c)
  {
!   uint32x4_t __result;
!   __asm__ ("umlal2 %0.4s,%2.8h,%3.h[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "x"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_n_u32 (uint64x2_t __a, uint32x4_t __b, uint32_t __c)
  {
!   uint64x2_t __result;
!   __asm__ ("umlal2 %0.2d,%2.4s,%3.s[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c)
  {
!   int16x8_t __result;
!   __asm__ ("smlal2 %0.8h,%2.16b,%3.16b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
  {
!   int32x4_t __result;
!   __asm__ ("smlal2 %0.4s,%2.8h,%3.8h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
  {
!   int64x2_t __result;
!   __asm__ ("smlal2 %0.2d,%2.4s,%3.4s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c)
  {
!   uint16x8_t __result;
!   __asm__ ("umlal2 %0.8h,%2.16b,%3.16b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c)
  {
!   uint32x4_t __result;
!   __asm__ ("umlal2 %0.4s,%2.8h,%3.8h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c)
  {
!   uint64x2_t __result;
!   __asm__ ("umlal2 %0.2d,%2.4s,%3.4s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
--- 7063,7276 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_n_s16 (int16x4_t __a, int16x4_t __b, int16_t __c)
  {
!   return __builtin_aarch64_mla_nv4hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_n_s32 (int32x2_t __a, int32x2_t __b, int32_t __c)
  {
!   return __builtin_aarch64_mla_nv2si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_n_u16 (uint16x4_t __a, uint16x4_t __b, uint16_t __c)
  {
!   return (uint16x4_t) __builtin_aarch64_mla_nv4hi ((int16x4_t) __a,
!                                                    (int16x4_t) __b,
!                                                    (int16_t) __c);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_n_u32 (uint32x2_t __a, uint32x2_t __b, uint32_t __c)
  {
!   return (uint32x2_t) __builtin_aarch64_mla_nv2si ((int32x2_t) __a,
!                                                    (int32x2_t) __b,
!                                                    (int32_t) __c);
  }
  
  __extension__ extern __inline int8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)
  {
!   return __builtin_aarch64_mlav8qi (__a, __b, __c);
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
  {
!   return __builtin_aarch64_mlav4hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
  {
!   return __builtin_aarch64_mlav2si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
  {
!   return (uint8x8_t) __builtin_aarch64_mlav8qi ((int8x8_t) __a,
!                                                 (int8x8_t) __b,
!                                                 (int8x8_t) __c);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
  {
!   return (uint16x4_t) __builtin_aarch64_mlav4hi ((int16x4_t) __a,
!                                                  (int16x4_t) __b,
!                                                  (int16x4_t) __c);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmla_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
  {
!   return (uint32x2_t) __builtin_aarch64_mlav2si ((int32x2_t) __a,
!                                                  (int32x2_t) __b,
!                                                  (int32x2_t) __c);
  }
  
! __extension__ extern __inline int32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlal_high_lane_s16(int32x4_t __a, int16x8_t __b, int16x4_t __v,
! 		    const int __lane)
! {
!   return __builtin_aarch64_smlal_hi_lanev8hi (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline int64x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlal_high_lane_s32(int64x2_t __a, int32x4_t __b, int32x2_t __v,
! 		    const int __lane)
! {
!   return __builtin_aarch64_smlal_hi_lanev4si (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline uint32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlal_high_lane_u16(uint32x4_t __a, uint16x8_t __b, uint16x4_t __v,
! 		    const int __lane)
! {
!   return __builtin_aarch64_umlal_hi_lanev8hi_uuuus (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline uint64x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlal_high_lane_u32(uint64x2_t __a, uint32x4_t __b, uint32x2_t __v,
! 		    const int __lane)
! {
!   return __builtin_aarch64_umlal_hi_lanev4si_uuuus (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline int32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlal_high_laneq_s16(int32x4_t __a, int16x8_t __b, int16x8_t __v,
! 		     const int __lane)
! {
!   return __builtin_aarch64_smlal_hi_laneqv8hi (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline int64x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlal_high_laneq_s32(int64x2_t __a, int32x4_t __b, int32x4_t __v,
! 		     const int __lane)
! {
!   return __builtin_aarch64_smlal_hi_laneqv4si (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline uint32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlal_high_laneq_u16(uint32x4_t __a, uint16x8_t __b, uint16x8_t __v,
! 		     const int __lane)
! {
!   return __builtin_aarch64_umlal_hi_laneqv8hi_uuuus (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline uint64x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlal_high_laneq_u32(uint64x2_t __a, uint32x4_t __b, uint32x4_t __v,
! 		     const int __lane)
! {
!   return __builtin_aarch64_umlal_hi_laneqv4si_uuuus (__a, __b, __v, __lane);
! }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)
  {
!   return __builtin_aarch64_smlal_hi_nv8hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)
  {
!   return __builtin_aarch64_smlal_hi_nv4si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_n_u16 (uint32x4_t __a, uint16x8_t __b, uint16_t __c)
  {
!   return __builtin_aarch64_umlal_hi_nv8hi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_n_u32 (uint64x2_t __a, uint32x4_t __b, uint32_t __c)
  {
!   return __builtin_aarch64_umlal_hi_nv4si_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c)
  {
!   return __builtin_aarch64_smlal_hiv16qi (__a, __b, __c);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
  {
!   return __builtin_aarch64_smlal_hiv8hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
  {
!   return __builtin_aarch64_smlal_hiv4si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c)
  {
!   return __builtin_aarch64_umlal_hiv16qi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c)
  {
!   return __builtin_aarch64_umlal_hiv8hi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c)
  {
!   return __builtin_aarch64_umlal_hiv4si_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline int32x4_t
*************** __extension__ extern __inline int32x4_t
*** 7774,7893 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
  {
!   int32x4_t __result;
!   __asm__ ("smlal %0.4s,%2.4h,%3.h[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "x"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
  {
!   int64x2_t __result;
!   __asm__ ("smlal %0.2d,%2.2s,%3.s[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_n_u16 (uint32x4_t __a, uint16x4_t __b, uint16_t __c)
  {
!   uint32x4_t __result;
!   __asm__ ("umlal %0.4s,%2.4h,%3.h[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "x"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_n_u32 (uint64x2_t __a, uint32x2_t __b, uint32_t __c)
  {
!   uint64x2_t __result;
!   __asm__ ("umlal %0.2d,%2.2s,%3.s[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)
  {
!   int16x8_t __result;
!   __asm__ ("smlal %0.8h,%2.8b,%3.8b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
  {
!   int32x4_t __result;
!   __asm__ ("smlal %0.4s,%2.4h,%3.4h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
  {
!   int64x2_t __result;
!   __asm__ ("smlal %0.2d,%2.2s,%3.2s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)
  {
!   uint16x8_t __result;
!   __asm__ ("umlal %0.8h,%2.8b,%3.8b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)
  {
!   uint32x4_t __result;
!   __asm__ ("umlal %0.4s,%2.4h,%3.4h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)
  {
!   uint64x2_t __result;
!   __asm__ ("umlal %0.2d,%2.2s,%3.2s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline float32x4_t
--- 7333,7402 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
  {
!   return __builtin_aarch64_smlal_nv4hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
  {
!   return __builtin_aarch64_smlal_nv2si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_n_u16 (uint32x4_t __a, uint16x4_t __b, uint16_t __c)
  {
!   return __builtin_aarch64_umlal_nv4hi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_n_u32 (uint64x2_t __a, uint32x2_t __b, uint32_t __c)
  {
!   return __builtin_aarch64_umlal_nv2si_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)
  {
!   return __builtin_aarch64_smlalv8qi (__a, __b, __c);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
  {
!   return __builtin_aarch64_smlalv4hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
  {
!   return __builtin_aarch64_smlalv2si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)
  {
!   return __builtin_aarch64_umlalv8qi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)
  {
!   return __builtin_aarch64_umlalv4hi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlal_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)
  {
!   return __builtin_aarch64_umlalv2si_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline float32x4_t
*************** __extension__ extern __inline int16x8_t
*** 7907,8026 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_n_s16 (int16x8_t __a, int16x8_t __b, int16_t __c)
  {
!   int16x8_t __result;
!   __asm__ ("mla %0.8h,%2.8h,%3.h[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "x"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_n_s32 (int32x4_t __a, int32x4_t __b, int32_t __c)
  {
!   int32x4_t __result;
!   __asm__ ("mla %0.4s,%2.4s,%3.s[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_n_u16 (uint16x8_t __a, uint16x8_t __b, uint16_t __c)
  {
!   uint16x8_t __result;
!   __asm__ ("mla %0.8h,%2.8h,%3.h[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "x"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_n_u32 (uint32x4_t __a, uint32x4_t __b, uint32_t __c)
  {
!   uint32x4_t __result;
!   __asm__ ("mla %0.4s,%2.4s,%3.s[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)
  {
!   int8x16_t __result;
!   __asm__ ("mla %0.16b, %2.16b, %3.16b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
  {
!   int16x8_t __result;
!   __asm__ ("mla %0.8h, %2.8h, %3.8h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
  {
!   int32x4_t __result;
!   __asm__ ("mla %0.4s, %2.4s, %3.4s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
  {
!   uint8x16_t __result;
!   __asm__ ("mla %0.16b, %2.16b, %3.16b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
  {
!   uint16x8_t __result;
!   __asm__ ("mla %0.8h, %2.8h, %3.8h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
  {
!   uint32x4_t __result;
!   __asm__ ("mla %0.4s, %2.4s, %3.4s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline float32x2_t
--- 7416,7495 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_n_s16 (int16x8_t __a, int16x8_t __b, int16_t __c)
  {
!   return __builtin_aarch64_mla_nv8hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_n_s32 (int32x4_t __a, int32x4_t __b, int32_t __c)
  {
!   return __builtin_aarch64_mla_nv4si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_n_u16 (uint16x8_t __a, uint16x8_t __b, uint16_t __c)
  {
!   return (uint16x8_t) __builtin_aarch64_mla_nv8hi ((int16x8_t) __a,
!                                                    (int16x8_t) __b,
!                                                    (int16_t) __c);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_n_u32 (uint32x4_t __a, uint32x4_t __b, uint32_t __c)
  {
!   return (uint32x4_t) __builtin_aarch64_mla_nv4si ((int32x4_t) __a,
!                                                    (int32x4_t) __b,
!                                                    (int32_t) __c);
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)
  {
!   return __builtin_aarch64_mlav16qi (__a, __b, __c);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
  {
!   return __builtin_aarch64_mlav8hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
  {
!   return __builtin_aarch64_mlav4si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
  {
!   return (uint8x16_t) __builtin_aarch64_mlav16qi ((int8x16_t) __a,
!                                                   (int8x16_t) __b,
!                                                   (int8x16_t) __c);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
  {
!   return (uint16x8_t) __builtin_aarch64_mlav8hi ((int16x8_t) __a,
!                                                  (int16x8_t) __b,
!                                                  (int16x8_t) __c);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlaq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
  {
!   return (uint32x4_t) __builtin_aarch64_mlav4si ((int32x4_t) __a,
!                                                  (int32x4_t) __b,
!                                                  (int32x4_t) __c);
  }
  
  __extension__ extern __inline float32x2_t
*************** __extension__ extern __inline int16x4_t
*** 8040,8623 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_n_s16 (int16x4_t __a, int16x4_t __b, int16_t __c)
  {
!   int16x4_t __result;
!   __asm__ ("mls %0.4h, %2.4h, %3.h[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "x"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_n_s32 (int32x2_t __a, int32x2_t __b, int32_t __c)
  {
!   int32x2_t __result;
!   __asm__ ("mls %0.2s, %2.2s, %3.s[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_n_u16 (uint16x4_t __a, uint16x4_t __b, uint16_t __c)
  {
!   uint16x4_t __result;
!   __asm__ ("mls %0.4h, %2.4h, %3.h[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "x"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_n_u32 (uint32x2_t __a, uint32x2_t __b, uint32_t __c)
  {
!   uint32x2_t __result;
!   __asm__ ("mls %0.2s, %2.2s, %3.s[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)
  {
!   int8x8_t __result;
!   __asm__ ("mls %0.8b,%2.8b,%3.8b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
  {
!   int16x4_t __result;
!   __asm__ ("mls %0.4h,%2.4h,%3.4h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
  {
!   int32x2_t __result;
!   __asm__ ("mls %0.2s,%2.2s,%3.2s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
  {
!   uint8x8_t __result;
!   __asm__ ("mls %0.8b,%2.8b,%3.8b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
  {
!   uint16x4_t __result;
!   __asm__ ("mls %0.4h,%2.4h,%3.4h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
  {
!   uint32x2_t __result;
!   __asm__ ("mls %0.2s,%2.2s,%3.2s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
! #define vmlsl_high_lane_s16(a, b, c, d)                                 \
!   __extension__                                                         \
!     ({                                                                  \
!        int16x4_t c_ = (c);                                              \
!        int16x8_t b_ = (b);                                              \
!        int32x4_t a_ = (a);                                              \
!        int32x4_t result;                                                \
!        __asm__ ("smlsl2 %0.4s, %2.8h, %3.h[%4]"                         \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "x"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlsl_high_lane_s32(a, b, c, d)                                 \
!   __extension__                                                         \
!     ({                                                                  \
!        int32x2_t c_ = (c);                                              \
!        int32x4_t b_ = (b);                                              \
!        int64x2_t a_ = (a);                                              \
!        int64x2_t result;                                                \
!        __asm__ ("smlsl2 %0.2d, %2.4s, %3.s[%4]"                         \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "w"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlsl_high_lane_u16(a, b, c, d)                                 \
!   __extension__                                                         \
!     ({                                                                  \
!        uint16x4_t c_ = (c);                                             \
!        uint16x8_t b_ = (b);                                             \
!        uint32x4_t a_ = (a);                                             \
!        uint32x4_t result;                                               \
!        __asm__ ("umlsl2 %0.4s, %2.8h, %3.h[%4]"                         \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "x"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlsl_high_lane_u32(a, b, c, d)                                 \
!   __extension__                                                         \
!     ({                                                                  \
!        uint32x2_t c_ = (c);                                             \
!        uint32x4_t b_ = (b);                                             \
!        uint64x2_t a_ = (a);                                             \
!        uint64x2_t result;                                               \
!        __asm__ ("umlsl2 %0.2d, %2.4s, %3.s[%4]"                         \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "w"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlsl_high_laneq_s16(a, b, c, d)                                \
!   __extension__                                                         \
!     ({                                                                  \
!        int16x8_t c_ = (c);                                              \
!        int16x8_t b_ = (b);                                              \
!        int32x4_t a_ = (a);                                              \
!        int32x4_t result;                                                \
!        __asm__ ("smlsl2 %0.4s, %2.8h, %3.h[%4]"                         \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "x"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlsl_high_laneq_s32(a, b, c, d)                                \
!   __extension__                                                         \
!     ({                                                                  \
!        int32x4_t c_ = (c);                                              \
!        int32x4_t b_ = (b);                                              \
!        int64x2_t a_ = (a);                                              \
!        int64x2_t result;                                                \
!        __asm__ ("smlsl2 %0.2d, %2.4s, %3.s[%4]"                         \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "w"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlsl_high_laneq_u16(a, b, c, d)                                \
!   __extension__                                                         \
!     ({                                                                  \
!        uint16x8_t c_ = (c);                                             \
!        uint16x8_t b_ = (b);                                             \
!        uint32x4_t a_ = (a);                                             \
!        uint32x4_t result;                                               \
!        __asm__ ("umlsl2 %0.4s, %2.8h, %3.h[%4]"                         \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "x"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlsl_high_laneq_u32(a, b, c, d)                                \
!   __extension__                                                         \
!     ({                                                                  \
!        uint32x4_t c_ = (c);                                             \
!        uint32x4_t b_ = (b);                                             \
!        uint64x2_t a_ = (a);                                             \
!        uint64x2_t result;                                               \
!        __asm__ ("umlsl2 %0.2d, %2.4s, %3.s[%4]"                         \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "w"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)
  {
!   int32x4_t __result;
!   __asm__ ("smlsl2 %0.4s, %2.8h, %3.h[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "x"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)
  {
!   int64x2_t __result;
!   __asm__ ("smlsl2 %0.2d, %2.4s, %3.s[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_n_u16 (uint32x4_t __a, uint16x8_t __b, uint16_t __c)
  {
!   uint32x4_t __result;
!   __asm__ ("umlsl2 %0.4s, %2.8h, %3.h[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "x"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_n_u32 (uint64x2_t __a, uint32x4_t __b, uint32_t __c)
  {
!   uint64x2_t __result;
!   __asm__ ("umlsl2 %0.2d, %2.4s, %3.s[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c)
  {
!   int16x8_t __result;
!   __asm__ ("smlsl2 %0.8h,%2.16b,%3.16b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
  {
!   int32x4_t __result;
!   __asm__ ("smlsl2 %0.4s,%2.8h,%3.8h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
  {
!   int64x2_t __result;
!   __asm__ ("smlsl2 %0.2d,%2.4s,%3.4s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c)
  {
!   uint16x8_t __result;
!   __asm__ ("umlsl2 %0.8h,%2.16b,%3.16b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c)
  {
!   uint32x4_t __result;
!   __asm__ ("umlsl2 %0.4s,%2.8h,%3.8h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c)
  {
!   uint64x2_t __result;
!   __asm__ ("umlsl2 %0.2d,%2.4s,%3.4s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
! #define vmlsl_lane_s16(a, b, c, d)                                      \
!   __extension__                                                         \
!     ({                                                                  \
!        int16x4_t c_ = (c);                                              \
!        int16x4_t b_ = (b);                                              \
!        int32x4_t a_ = (a);                                              \
!        int32x4_t result;                                                \
!        __asm__ ("smlsl %0.4s, %2.4h, %3.h[%4]"                          \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "x"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlsl_lane_s32(a, b, c, d)                                      \
!   __extension__                                                         \
!     ({                                                                  \
!        int32x2_t c_ = (c);                                              \
!        int32x2_t b_ = (b);                                              \
!        int64x2_t a_ = (a);                                              \
!        int64x2_t result;                                                \
!        __asm__ ("smlsl %0.2d, %2.2s, %3.s[%4]"                          \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "w"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlsl_lane_u16(a, b, c, d)                                      \
!   __extension__                                                         \
!     ({                                                                  \
!        uint16x4_t c_ = (c);                                             \
!        uint16x4_t b_ = (b);                                             \
!        uint32x4_t a_ = (a);                                             \
!        uint32x4_t result;                                               \
!        __asm__ ("umlsl %0.4s, %2.4h, %3.h[%4]"                          \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "x"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlsl_lane_u32(a, b, c, d)                                      \
!   __extension__                                                         \
!     ({                                                                  \
!        uint32x2_t c_ = (c);                                             \
!        uint32x2_t b_ = (b);                                             \
!        uint64x2_t a_ = (a);                                             \
!        uint64x2_t result;                                               \
!        __asm__ ("umlsl %0.2d, %2.2s, %3.s[%4]"                          \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "w"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlsl_laneq_s16(a, b, c, d)                                     \
!   __extension__                                                         \
!     ({                                                                  \
!        int16x8_t c_ = (c);                                              \
!        int16x4_t b_ = (b);                                              \
!        int32x4_t a_ = (a);                                              \
!        int32x4_t result;                                                \
!        __asm__ ("smlsl %0.4s, %2.4h, %3.h[%4]"                          \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "x"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlsl_laneq_s32(a, b, c, d)                                     \
!   __extension__                                                         \
!     ({                                                                  \
!        int32x4_t c_ = (c);                                              \
!        int32x2_t b_ = (b);                                              \
!        int64x2_t a_ = (a);                                              \
!        int64x2_t result;                                                \
!        __asm__ ("smlsl %0.2d, %2.2s, %3.s[%4]"                          \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "w"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlsl_laneq_u16(a, b, c, d)                                     \
!   __extension__                                                         \
!     ({                                                                  \
!        uint16x8_t c_ = (c);                                             \
!        uint16x4_t b_ = (b);                                             \
!        uint32x4_t a_ = (a);                                             \
!        uint32x4_t result;                                               \
!        __asm__ ("umlsl %0.4s, %2.4h, %3.h[%4]"                          \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "x"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmlsl_laneq_u32(a, b, c, d)                                     \
!   __extension__                                                         \
!     ({                                                                  \
!        uint32x4_t c_ = (c);                                             \
!        uint32x2_t b_ = (b);                                             \
!        uint64x2_t a_ = (a);                                             \
!        uint64x2_t result;                                               \
!        __asm__ ("umlsl %0.2d, %2.2s, %3.s[%4]"                          \
!                 : "=w"(result)                                          \
!                 : "0"(a_), "w"(b_), "w"(c_), "i"(d)                     \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
  {
!   int32x4_t __result;
!   __asm__ ("smlsl %0.4s, %2.4h, %3.h[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "x"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
  {
!   int64x2_t __result;
!   __asm__ ("smlsl %0.2d, %2.2s, %3.s[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_n_u16 (uint32x4_t __a, uint16x4_t __b, uint16_t __c)
  {
!   uint32x4_t __result;
!   __asm__ ("umlsl %0.4s, %2.4h, %3.h[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "x"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_n_u32 (uint64x2_t __a, uint32x2_t __b, uint32_t __c)
  {
!   uint64x2_t __result;
!   __asm__ ("umlsl %0.2d, %2.2s, %3.s[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)
  {
!   int16x8_t __result;
!   __asm__ ("smlsl %0.8h, %2.8b, %3.8b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
  {
!   int32x4_t __result;
!   __asm__ ("smlsl %0.4s, %2.4h, %3.4h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
  {
!   int64x2_t __result;
!   __asm__ ("smlsl %0.2d, %2.2s, %3.2s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)
  {
!   uint16x8_t __result;
!   __asm__ ("umlsl %0.8h, %2.8b, %3.8b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)
  {
!   uint32x4_t __result;
!   __asm__ ("umlsl %0.4s, %2.4h, %3.4h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)
  {
!   uint64x2_t __result;
!   __asm__ ("umlsl %0.2d, %2.2s, %3.2s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline float32x4_t
--- 7509,7852 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_n_s16 (int16x4_t __a, int16x4_t __b, int16_t __c)
  {
!   return __builtin_aarch64_mls_nv4hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_n_s32 (int32x2_t __a, int32x2_t __b, int32_t __c)
  {
!   return __builtin_aarch64_mls_nv2si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_n_u16 (uint16x4_t __a, uint16x4_t __b, uint16_t __c)
  {
!   return (uint16x4_t) __builtin_aarch64_mls_nv4hi ((int16x4_t) __a,
!                                                    (int16x4_t) __b,
!                                                    (int16_t) __c);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_n_u32 (uint32x2_t __a, uint32x2_t __b, uint32_t __c)
  {
!   return (uint32x2_t) __builtin_aarch64_mls_nv2si ((int32x2_t) __a,
!                                                    (int32x2_t) __b,
!                                                    (int32_t) __c);
  }
  
  __extension__ extern __inline int8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)
  {
!   return __builtin_aarch64_mlsv8qi (__a, __b, __c);
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
  {
!   return __builtin_aarch64_mlsv4hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
  {
!   return __builtin_aarch64_mlsv2si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
  {
!   return (uint8x8_t) __builtin_aarch64_mlsv8qi ((int8x8_t) __a,
!                                                 (int8x8_t) __b,
!                                                 (int8x8_t) __c);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
  {
!   return (uint16x4_t) __builtin_aarch64_mlsv4hi ((int16x4_t) __a,
!                                                  (int16x4_t) __b,
!                                                  (int16x4_t) __c);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmls_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
  {
!   return (uint32x2_t) __builtin_aarch64_mlsv2si ((int32x2_t) __a,
!                                                  (int32x2_t) __b,
!                                                  (int32x2_t) __c);
  }
  
! __extension__ extern __inline int32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlsl_high_lane_s16(int32x4_t __a, int16x8_t __b, int16x4_t __v,
! 		    const int __lane)
! {
!   return __builtin_aarch64_smlsl_hi_lanev8hi (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline int64x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlsl_high_lane_s32(int64x2_t __a, int32x4_t __b, int32x2_t __v,
! 		    const int __lane)
! {
!   return __builtin_aarch64_smlsl_hi_lanev4si (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline uint32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlsl_high_lane_u16(uint32x4_t __a, uint16x8_t __b, uint16x4_t __v,
! 		    const int __lane)
! {
!   return __builtin_aarch64_umlsl_hi_lanev8hi_uuuus (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline uint64x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlsl_high_lane_u32(uint64x2_t __a, uint32x4_t __b, uint32x2_t __v,
! 		    const int __lane)
! {
!   return __builtin_aarch64_umlsl_hi_lanev4si_uuuus (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline int32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlsl_high_laneq_s16(int32x4_t __a, int16x8_t __b, int16x8_t __v,
! 		     const int __lane)
! {
!   return __builtin_aarch64_smlsl_hi_laneqv8hi (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline int64x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlsl_high_laneq_s32(int64x2_t __a, int32x4_t __b, int32x4_t __v,
! 		     const int __lane)
! {
!   return __builtin_aarch64_smlsl_hi_laneqv4si (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline uint32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlsl_high_laneq_u16(uint32x4_t __a, uint16x8_t __b, uint16x8_t __v,
! 		     const int __lane)
! {
!   return __builtin_aarch64_umlsl_hi_laneqv8hi_uuuus (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline uint64x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlsl_high_laneq_u32(uint64x2_t __a, uint32x4_t __b, uint32x4_t __v,
! 		     const int __lane)
! {
!   return __builtin_aarch64_umlsl_hi_laneqv4si_uuuus (__a, __b, __v, __lane);
! }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)
  {
!   return __builtin_aarch64_smlsl_hi_nv8hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)
  {
!   return __builtin_aarch64_smlsl_hi_nv4si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_n_u16 (uint32x4_t __a, uint16x8_t __b, uint16_t __c)
  {
!   return __builtin_aarch64_umlsl_hi_nv8hi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_n_u32 (uint64x2_t __a, uint32x4_t __b, uint32_t __c)
  {
!   return __builtin_aarch64_umlsl_hi_nv4si_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c)
  {
!   return __builtin_aarch64_smlsl_hiv16qi (__a, __b, __c);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
  {
!   return __builtin_aarch64_smlsl_hiv8hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
  {
!   return __builtin_aarch64_smlsl_hiv4si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c)
  {
!   return __builtin_aarch64_umlsl_hiv16qi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c)
  {
!   return __builtin_aarch64_umlsl_hiv8hi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c)
  {
!   return __builtin_aarch64_umlsl_hiv4si_uuuu (__a, __b, __c);
  }
  
! __extension__ extern __inline int32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlsl_lane_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __v, const int __lane)
! {
!   return __builtin_aarch64_vec_smlsl_lane_v4hi (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline int64x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlsl_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __v, const int __lane)
! {
!   return __builtin_aarch64_vec_smlsl_lane_v2si (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline uint32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlsl_lane_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __v,
!                 const int __lane)
! {
!   return __builtin_aarch64_vec_umlsl_lane_v4hi_uuuus (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline uint64x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlsl_lane_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __v,
!                 const int __lane)
! {
!   return __builtin_aarch64_vec_umlsl_lane_v2si_uuuus (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline int32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlsl_laneq_s16 (int32x4_t __a, int16x4_t __b, int16x8_t __v, const int __lane)
! {
!   return __builtin_aarch64_vec_smlsl_laneq_v4hi (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline int64x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlsl_laneq_s32 (int64x2_t __a, int32x2_t __b, int32x4_t __v, const int __lane)
! {
!   return __builtin_aarch64_vec_smlsl_laneq_v2si (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline uint32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlsl_laneq_u16 (uint32x4_t __a, uint16x4_t __b, uint16x8_t __v,
!                  const int __lane)
! {
!   return __builtin_aarch64_vec_umlsl_laneq_v4hi_uuuus (__a, __b, __v, __lane);
! }
  
! __extension__ extern __inline uint64x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmlsl_laneq_u32 (uint64x2_t __a, uint32x2_t __b, uint32x4_t __v,
!                  const int __lane)
! {
!   return __builtin_aarch64_vec_umlsl_laneq_v2si_uuuus (__a, __b, __v, __lane);
! }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
  {
!   return __builtin_aarch64_smlsl_nv4hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
  {
!   return __builtin_aarch64_smlsl_nv2si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_n_u16 (uint32x4_t __a, uint16x4_t __b, uint16_t __c)
  {
!   return __builtin_aarch64_umlsl_nv4hi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_n_u32 (uint64x2_t __a, uint32x2_t __b, uint32_t __c)
  {
!   return __builtin_aarch64_umlsl_nv2si_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)
  {
!   return __builtin_aarch64_smlslv8qi (__a, __b, __c);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
  {
!   return __builtin_aarch64_smlslv4hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
  {
!   return __builtin_aarch64_smlslv2si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)
  {
!   return __builtin_aarch64_umlslv8qi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)
  {
!   return __builtin_aarch64_umlslv4hi_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsl_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)
  {
!   return __builtin_aarch64_umlslv2si_uuuu (__a, __b, __c);
  }
  
  __extension__ extern __inline float32x4_t
*************** __extension__ extern __inline int16x8_t
*** 8637,9196 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_n_s16 (int16x8_t __a, int16x8_t __b, int16_t __c)
  {
!   int16x8_t __result;
!   __asm__ ("mls %0.8h, %2.8h, %3.h[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "x"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_n_s32 (int32x4_t __a, int32x4_t __b, int32_t __c)
  {
!   int32x4_t __result;
!   __asm__ ("mls %0.4s, %2.4s, %3.s[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_n_u16 (uint16x8_t __a, uint16x8_t __b, uint16_t __c)
  {
!   uint16x8_t __result;
!   __asm__ ("mls %0.8h, %2.8h, %3.h[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "x"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_n_u32 (uint32x4_t __a, uint32x4_t __b, uint32_t __c)
  {
!   uint32x4_t __result;
!   __asm__ ("mls %0.4s, %2.4s, %3.s[0]"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)
  {
!   int8x16_t __result;
!   __asm__ ("mls %0.16b,%2.16b,%3.16b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
  {
!   int16x8_t __result;
!   __asm__ ("mls %0.8h,%2.8h,%3.8h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
  {
!   int32x4_t __result;
!   __asm__ ("mls %0.4s,%2.4s,%3.4s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
  {
!   uint8x16_t __result;
!   __asm__ ("mls %0.16b,%2.16b,%3.16b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
  {
!   uint16x8_t __result;
!   __asm__ ("mls %0.8h,%2.8h,%3.8h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
  {
!   uint32x4_t __result;
!   __asm__ ("mls %0.4s,%2.4s,%3.4s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b), "w"(__c)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_high_s8 (int8x16_t __a)
  {
!   int16x8_t __result;
!   __asm__ ("sshll2 %0.8h,%1.16b,#0"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_high_s16 (int16x8_t __a)
  {
!   int32x4_t __result;
!   __asm__ ("sshll2 %0.4s,%1.8h,#0"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_high_s32 (int32x4_t __a)
  {
!   int64x2_t __result;
!   __asm__ ("sshll2 %0.2d,%1.4s,#0"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_high_u8 (uint8x16_t __a)
  {
!   uint16x8_t __result;
!   __asm__ ("ushll2 %0.8h,%1.16b,#0"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_high_u16 (uint16x8_t __a)
  {
!   uint32x4_t __result;
!   __asm__ ("ushll2 %0.4s,%1.8h,#0"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_high_u32 (uint32x4_t __a)
  {
!   uint64x2_t __result;
!   __asm__ ("ushll2 %0.2d,%1.4s,#0"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_s8 (int8x8_t __a)
  {
!   int16x8_t __result;
!   __asm__ ("sshll %0.8h,%1.8b,#0"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_s16 (int16x4_t __a)
  {
!   int32x4_t __result;
!   __asm__ ("sshll %0.4s,%1.4h,#0"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_s32 (int32x2_t __a)
  {
!   int64x2_t __result;
!   __asm__ ("sshll %0.2d,%1.2s,#0"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_u8 (uint8x8_t __a)
  {
!   uint16x8_t __result;
!   __asm__ ("ushll %0.8h,%1.8b,#0"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_u16 (uint16x4_t __a)
  {
!   uint32x4_t __result;
!   __asm__ ("ushll %0.4s,%1.4h,#0"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_u32 (uint32x2_t __a)
  {
!   uint64x2_t __result;
!   __asm__ ("ushll %0.2d,%1.2s,#0"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_high_s16 (int8x8_t __a, int16x8_t __b)
  {
!   int8x16_t __result = vcombine_s8 (__a, vcreate_s8 (__AARCH64_UINT64_C (0x0)));
!   __asm__ ("xtn2 %0.16b,%1.8h"
!            : "+w"(__result)
!            : "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_high_s32 (int16x4_t __a, int32x4_t __b)
  {
!   int16x8_t __result = vcombine_s16 (__a, vcreate_s16 (__AARCH64_UINT64_C (0x0)));
!   __asm__ ("xtn2 %0.8h,%1.4s"
!            : "+w"(__result)
!            : "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_high_s64 (int32x2_t __a, int64x2_t __b)
  {
!   int32x4_t __result = vcombine_s32 (__a, vcreate_s32 (__AARCH64_UINT64_C (0x0)));
!   __asm__ ("xtn2 %0.4s,%1.2d"
!            : "+w"(__result)
!            : "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_high_u16 (uint8x8_t __a, uint16x8_t __b)
  {
!   uint8x16_t __result = vcombine_u8 (__a, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
!   __asm__ ("xtn2 %0.16b,%1.8h"
!            : "+w"(__result)
!            : "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_high_u32 (uint16x4_t __a, uint32x4_t __b)
  {
!   uint16x8_t __result = vcombine_u16 (__a, vcreate_u16 (__AARCH64_UINT64_C (0x0)));
!   __asm__ ("xtn2 %0.8h,%1.4s"
!            : "+w"(__result)
!            : "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_high_u64 (uint32x2_t __a, uint64x2_t __b)
  {
!   uint32x4_t __result = vcombine_u32 (__a, vcreate_u32 (__AARCH64_UINT64_C (0x0)));
!   __asm__ ("xtn2 %0.4s,%1.2d"
!            : "+w"(__result)
!            : "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_s16 (int16x8_t __a)
  {
!   int8x8_t __result;
!   __asm__ ("xtn %0.8b,%1.8h"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_s32 (int32x4_t __a)
  {
!   int16x4_t __result;
!   __asm__ ("xtn %0.4h,%1.4s"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_s64 (int64x2_t __a)
  {
!   int32x2_t __result;
!   __asm__ ("xtn %0.2s,%1.2d"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_u16 (uint16x8_t __a)
  {
!   uint8x8_t __result;
!   __asm__ ("xtn %0.8b,%1.8h"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_u32 (uint32x4_t __a)
  {
!   uint16x4_t __result;
!   __asm__ ("xtn %0.4h,%1.4s"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_u64 (uint64x2_t __a)
  {
!   uint32x2_t __result;
!   __asm__ ("xtn %0.2s,%1.2d"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
! #define vmull_high_lane_s16(a, b, c)                                    \
!   __extension__                                                         \
!     ({                                                                  \
!        int16x4_t b_ = (b);                                              \
!        int16x8_t a_ = (a);                                              \
!        int32x4_t result;                                                \
!        __asm__ ("smull2 %0.4s, %1.8h, %2.h[%3]"                         \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "x"(b_), "i"(c)                              \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmull_high_lane_s32(a, b, c)                                    \
!   __extension__                                                         \
!     ({                                                                  \
!        int32x2_t b_ = (b);                                              \
!        int32x4_t a_ = (a);                                              \
!        int64x2_t result;                                                \
!        __asm__ ("smull2 %0.2d, %1.4s, %2.s[%3]"                         \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "w"(b_), "i"(c)                              \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmull_high_lane_u16(a, b, c)                                    \
!   __extension__                                                         \
!     ({                                                                  \
!        uint16x4_t b_ = (b);                                             \
!        uint16x8_t a_ = (a);                                             \
!        uint32x4_t result;                                               \
!        __asm__ ("umull2 %0.4s, %1.8h, %2.h[%3]"                         \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "x"(b_), "i"(c)                              \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmull_high_lane_u32(a, b, c)                                    \
!   __extension__                                                         \
!     ({                                                                  \
!        uint32x2_t b_ = (b);                                             \
!        uint32x4_t a_ = (a);                                             \
!        uint64x2_t result;                                               \
!        __asm__ ("umull2 %0.2d, %1.4s, %2.s[%3]"                         \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "w"(b_), "i"(c)                              \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmull_high_laneq_s16(a, b, c)                                   \
!   __extension__                                                         \
!     ({                                                                  \
!        int16x8_t b_ = (b);                                              \
!        int16x8_t a_ = (a);                                              \
!        int32x4_t result;                                                \
!        __asm__ ("smull2 %0.4s, %1.8h, %2.h[%3]"                         \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "x"(b_), "i"(c)                              \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmull_high_laneq_s32(a, b, c)                                   \
!   __extension__                                                         \
!     ({                                                                  \
!        int32x4_t b_ = (b);                                              \
!        int32x4_t a_ = (a);                                              \
!        int64x2_t result;                                                \
!        __asm__ ("smull2 %0.2d, %1.4s, %2.s[%3]"                         \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "w"(b_), "i"(c)                              \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmull_high_laneq_u16(a, b, c)                                   \
!   __extension__                                                         \
!     ({                                                                  \
!        uint16x8_t b_ = (b);                                             \
!        uint16x8_t a_ = (a);                                             \
!        uint32x4_t result;                                               \
!        __asm__ ("umull2 %0.4s, %1.8h, %2.h[%3]"                         \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "x"(b_), "i"(c)                              \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vmull_high_laneq_u32(a, b, c)                                   \
!   __extension__                                                         \
!     ({                                                                  \
!        uint32x4_t b_ = (b);                                             \
!        uint32x4_t a_ = (a);                                             \
!        uint64x2_t result;                                               \
!        __asm__ ("umull2 %0.2d, %1.4s, %2.s[%3]"                         \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "w"(b_), "i"(c)                              \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmull_high_n_s16 (int16x8_t __a, int16_t __b)
  {
!   int32x4_t __result;
!   __asm__ ("smull2 %0.4s,%1.8h,%2.h[0]"
!            : "=w"(__result)
!            : "w"(__a), "x"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmull_high_n_s32 (int32x4_t __a, int32_t __b)
  {
!   int64x2_t __result;
!   __asm__ ("smull2 %0.2d,%1.4s,%2.s[0]"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmull_high_n_u16 (uint16x8_t __a, uint16_t __b)
  {
!   uint32x4_t __result;
!   __asm__ ("umull2 %0.4s,%1.8h,%2.h[0]"
!            : "=w"(__result)
!            : "w"(__a), "x"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmull_high_n_u32 (uint32x4_t __a, uint32_t __b)
  {
!   uint64x2_t __result;
!   __asm__ ("umull2 %0.2d,%1.4s,%2.s[0]"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline poly16x8_t
--- 7866,8242 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_n_s16 (int16x8_t __a, int16x8_t __b, int16_t __c)
  {
!   return __builtin_aarch64_mls_nv8hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_n_s32 (int32x4_t __a, int32x4_t __b, int32_t __c)
  {
!   return __builtin_aarch64_mls_nv4si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_n_u16 (uint16x8_t __a, uint16x8_t __b, uint16_t __c)
  {
!   return (uint16x8_t) __builtin_aarch64_mls_nv8hi ((int16x8_t) __a,
!                                                    (int16x8_t) __b,
!                                                    (int16_t) __c);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_n_u32 (uint32x4_t __a, uint32x4_t __b, uint32_t __c)
  {
!   return (uint32x4_t) __builtin_aarch64_mls_nv4si ((int32x4_t) __a,
!                                                    (int32x4_t) __b,
!                                                    (int32_t) __c);
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)
  {
!   return __builtin_aarch64_mlsv16qi (__a, __b, __c);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
  {
!   return __builtin_aarch64_mlsv8hi (__a, __b, __c);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
  {
!   return __builtin_aarch64_mlsv4si (__a, __b, __c);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
  {
!   return (uint8x16_t) __builtin_aarch64_mlsv16qi ((int8x16_t) __a,
!                                                   (int8x16_t) __b,
!                                                   (int8x16_t) __c);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
  {
!   return (uint16x8_t) __builtin_aarch64_mlsv8hi ((int16x8_t) __a,
!                                                  (int16x8_t) __b,
!                                                  (int16x8_t) __c);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmlsq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
  {
!   return (uint32x4_t) __builtin_aarch64_mlsv4si ((int32x4_t) __a,
!                                                  (int32x4_t) __b,
!                                                  (int32x4_t) __c);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_high_s8 (int8x16_t __a)
  {
!   return __builtin_aarch64_vec_unpacks_hi_v16qi (__a);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_high_s16 (int16x8_t __a)
  {
!   return __builtin_aarch64_vec_unpacks_hi_v8hi (__a);
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_high_s32 (int32x4_t __a)
  {
!   return __builtin_aarch64_vec_unpacks_hi_v4si (__a);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_high_u8 (uint8x16_t __a)
  {
!   return __builtin_aarch64_vec_unpacku_hi_v16qi_uu (__a);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_high_u16 (uint16x8_t __a)
  {
!   return __builtin_aarch64_vec_unpacku_hi_v8hi_uu (__a);
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_high_u32 (uint32x4_t __a)
  {
!   return __builtin_aarch64_vec_unpacku_hi_v4si_uu (__a);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_s8 (int8x8_t __a)
  {
!   return __builtin_aarch64_sxtlv8hi (__a);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_s16 (int16x4_t __a)
  {
!   return __builtin_aarch64_sxtlv4si (__a);
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_s32 (int32x2_t __a)
  {
!   return __builtin_aarch64_sxtlv2di (__a);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_u8 (uint8x8_t __a)
  {
!   return __builtin_aarch64_uxtlv8hi_uu (__a);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_u16 (uint16x4_t __a)
  {
!   return __builtin_aarch64_uxtlv4si_uu (__a);
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovl_u32 (uint32x2_t __a)
  {
!   return __builtin_aarch64_uxtlv2di_uu (__a);
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_high_s16 (int8x8_t __a, int16x8_t __b)
  {
!   return __builtin_aarch64_xtn2v8hi (__a, __b);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_high_s32 (int16x4_t __a, int32x4_t __b)
  {
!   return __builtin_aarch64_xtn2v4si (__a, __b);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_high_s64 (int32x2_t __a, int64x2_t __b)
  {
!   return __builtin_aarch64_xtn2v2di (__a, __b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_high_u16 (uint8x8_t __a, uint16x8_t __b)
  {
!   return (uint8x16_t)
! 	   __builtin_aarch64_xtn2v8hi ((int8x8_t) __a, (int16x8_t) __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_high_u32 (uint16x4_t __a, uint32x4_t __b)
  {
!   return (uint16x8_t)
! 	   __builtin_aarch64_xtn2v4si ((int16x4_t) __a, (int32x4_t) __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_high_u64 (uint32x2_t __a, uint64x2_t __b)
  {
!   return (uint32x4_t)
! 	   __builtin_aarch64_xtn2v2di ((int32x2_t) __a, (int64x2_t) __b);
  }
  
  __extension__ extern __inline int8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_s16 (int16x8_t __a)
  {
!   return __builtin_aarch64_xtnv8hi (__a);
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_s32 (int32x4_t __a)
  {
!   return __builtin_aarch64_xtnv4si (__a);
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_s64 (int64x2_t __a)
  {
!   return __builtin_aarch64_xtnv2di (__a);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_u16 (uint16x8_t __a)
  {
!   return (uint8x8_t)__builtin_aarch64_xtnv8hi ((int16x8_t) __a);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_u32 (uint32x4_t __a)
  {
!   return (uint16x4_t) __builtin_aarch64_xtnv4si ((int32x4_t )__a);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmovn_u64 (uint64x2_t __a)
  {
!   return (uint32x2_t) __builtin_aarch64_xtnv2di ((int64x2_t) __a);
  }
  
! __extension__ extern __inline int8x8_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vshrn_n_s16 (int16x8_t __a, const int __b)
! {
!   return __builtin_aarch64_shrnv8hi (__a, __b);
! }
  
! __extension__ extern __inline int16x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vshrn_n_s32 (int32x4_t __a, const int __b)
! {
!   return __builtin_aarch64_shrnv4si (__a, __b);
! }
  
! __extension__ extern __inline int32x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vshrn_n_s64 (int64x2_t __a, const int __b)
! {
!   return __builtin_aarch64_shrnv2di (__a, __b);
! }
  
! __extension__ extern __inline uint8x8_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vshrn_n_u16 (uint16x8_t __a, const int __b)
! {
!   return (uint8x8_t)__builtin_aarch64_shrnv8hi ((int16x8_t)__a, __b);
! }
  
! __extension__ extern __inline uint16x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vshrn_n_u32 (uint32x4_t __a, const int __b)
! {
!   return (uint16x4_t)__builtin_aarch64_shrnv4si ((int32x4_t)__a, __b);
! }
  
! __extension__ extern __inline uint32x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vshrn_n_u64 (uint64x2_t __a, const int __b)
! {
!   return (uint32x2_t)__builtin_aarch64_shrnv2di ((int64x2_t)__a, __b);
! }
  
! __extension__ extern __inline int32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmull_high_lane_s16 (int16x8_t __a, int16x4_t __v, const int __lane)
! {
!   return __builtin_aarch64_smull_hi_lanev8hi (__a, __v, __lane);
! }
  
! __extension__ extern __inline int64x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmull_high_lane_s32 (int32x4_t __a, int32x2_t __v, const int __lane)
! {
!   return __builtin_aarch64_smull_hi_lanev4si (__a, __v, __lane);
! }
! 
! __extension__ extern __inline uint32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmull_high_lane_u16 (uint16x8_t __a, uint16x4_t __v, const int __lane)
! {
!   return __builtin_aarch64_umull_hi_lanev8hi_uuus (__a, __v, __lane);
! }
! 
! __extension__ extern __inline uint64x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmull_high_lane_u32 (uint32x4_t __a, uint32x2_t __v, const int __lane)
! {
!   return __builtin_aarch64_umull_hi_lanev4si_uuus (__a, __v, __lane);
! }
! 
! __extension__ extern __inline int32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmull_high_laneq_s16 (int16x8_t __a, int16x8_t __v, const int __lane)
! {
!   return __builtin_aarch64_smull_hi_laneqv8hi (__a, __v, __lane);
! }
! 
! __extension__ extern __inline int64x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmull_high_laneq_s32 (int32x4_t __a, int32x4_t __v, const int __lane)
! {
!   return __builtin_aarch64_smull_hi_laneqv4si (__a, __v, __lane);
! }
! 
! __extension__ extern __inline uint32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmull_high_laneq_u16 (uint16x8_t __a, uint16x8_t __v, const int __lane)
! {
!   return __builtin_aarch64_umull_hi_laneqv8hi_uuus (__a, __v, __lane);
! }
! 
! __extension__ extern __inline uint64x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vmull_high_laneq_u32 (uint32x4_t __a, uint32x4_t __v, const int __lane)
! {
!   return __builtin_aarch64_umull_hi_laneqv4si_uuus (__a, __v, __lane);
! }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmull_high_n_s16 (int16x8_t __a, int16_t __b)
  {
!   return __builtin_aarch64_smull_hi_nv8hi (__a, __b);
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmull_high_n_s32 (int32x4_t __a, int32_t __b)
  {
!   return __builtin_aarch64_smull_hi_nv4si (__a, __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmull_high_n_u16 (uint16x8_t __a, uint16_t __b)
  {
!   return __builtin_aarch64_umull_hi_nv8hi_uuu (__a, __b);
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmull_high_n_u32 (uint32x4_t __a, uint32_t __b)
  {
!  return __builtin_aarch64_umull_hi_nv4si_uuu (__a, __b);
  }
  
  __extension__ extern __inline poly16x8_t
*************** __extension__ extern __inline int32x4_t
*** 9307,9354 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmull_n_s16 (int16x4_t __a, int16_t __b)
  {
!   int32x4_t __result;
!   __asm__ ("smull %0.4s,%1.4h,%2.h[0]"
!            : "=w"(__result)
!            : "w"(__a), "x"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmull_n_s32 (int32x2_t __a, int32_t __b)
  {
!   int64x2_t __result;
!   __asm__ ("smull %0.2d,%1.2s,%2.s[0]"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmull_n_u16 (uint16x4_t __a, uint16_t __b)
  {
!   uint32x4_t __result;
!   __asm__ ("umull %0.4s,%1.4h,%2.h[0]"
!            : "=w"(__result)
!            : "w"(__a), "x"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmull_n_u32 (uint32x2_t __a, uint32_t __b)
  {
!   uint64x2_t __result;
!   __asm__ ("umull %0.2d,%1.2s,%2.s[0]"
!            : "=w"(__result)
!            : "w"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline poly16x8_t
--- 8353,8380 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmull_n_s16 (int16x4_t __a, int16_t __b)
  {
!   return __builtin_aarch64_smull_nv4hi (__a, __b);
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmull_n_s32 (int32x2_t __a, int32_t __b)
  {
!   return __builtin_aarch64_smull_nv2si (__a, __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmull_n_u16 (uint16x4_t __a, uint16_t __b)
  {
!   return __builtin_aarch64_umull_nv4hi_uuu (__a, __b);
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vmull_n_u32 (uint32x2_t __a, uint32_t __b)
  {
!   return __builtin_aarch64_umull_nv2si_uuu (__a, __b);
  }
  
  __extension__ extern __inline poly16x8_t
*************** __extension__ extern __inline int16x4_t
*** 9409,9432 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadal_s8 (int16x4_t __a, int8x8_t __b)
  {
!   int16x4_t __result;
!   __asm__ ("sadalp %0.4h,%2.8b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadal_s16 (int32x2_t __a, int16x4_t __b)
  {
!   int32x2_t __result;
!   __asm__ ("sadalp %0.2s,%2.4h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x1_t
--- 8435,8448 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadal_s8 (int16x4_t __a, int8x8_t __b)
  {
!   return __builtin_aarch64_sadalpv8qi (__a, __b);
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadal_s16 (int32x2_t __a, int16x4_t __b)
  {
!   return __builtin_aarch64_sadalpv4hi (__a, __b);
  }
  
  __extension__ extern __inline int64x1_t
*************** __extension__ extern __inline uint16x4_t
*** 9445,9468 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadal_u8 (uint16x4_t __a, uint8x8_t __b)
  {
!   uint16x4_t __result;
!   __asm__ ("uadalp %0.4h,%2.8b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadal_u16 (uint32x2_t __a, uint16x4_t __b)
  {
!   uint32x2_t __result;
!   __asm__ ("uadalp %0.2s,%2.4h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x1_t
--- 8461,8474 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadal_u8 (uint16x4_t __a, uint8x8_t __b)
  {
!   return __builtin_aarch64_uadalpv8qi_uuu (__a, __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadal_u16 (uint32x2_t __a, uint16x4_t __b)
  {
!   return __builtin_aarch64_uadalpv4hi_uuu (__a, __b);
  }
  
  __extension__ extern __inline uint64x1_t
*************** __extension__ extern __inline int16x8_t
*** 9481,9552 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadalq_s8 (int16x8_t __a, int8x16_t __b)
  {
!   int16x8_t __result;
!   __asm__ ("sadalp %0.8h,%2.16b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadalq_s16 (int32x4_t __a, int16x8_t __b)
  {
!   int32x4_t __result;
!   __asm__ ("sadalp %0.4s,%2.8h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadalq_s32 (int64x2_t __a, int32x4_t __b)
  {
!   int64x2_t __result;
!   __asm__ ("sadalp %0.2d,%2.4s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadalq_u8 (uint16x8_t __a, uint8x16_t __b)
  {
!   uint16x8_t __result;
!   __asm__ ("uadalp %0.8h,%2.16b"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadalq_u16 (uint32x4_t __a, uint16x8_t __b)
  {
!   uint32x4_t __result;
!   __asm__ ("uadalp %0.4s,%2.8h"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadalq_u32 (uint64x2_t __a, uint32x4_t __b)
  {
!   uint64x2_t __result;
!   __asm__ ("uadalp %0.2d,%2.4s"
!            : "=w"(__result)
!            : "0"(__a), "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x4_t
--- 8487,8528 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadalq_s8 (int16x8_t __a, int8x16_t __b)
  {
!   return __builtin_aarch64_sadalpv16qi (__a, __b);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadalq_s16 (int32x4_t __a, int16x8_t __b)
  {
!   return __builtin_aarch64_sadalpv8hi (__a, __b);
  }
  
  __extension__ extern __inline int64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadalq_s32 (int64x2_t __a, int32x4_t __b)
  {
!   return __builtin_aarch64_sadalpv4si (__a, __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadalq_u8 (uint16x8_t __a, uint8x16_t __b)
  {
!   return __builtin_aarch64_uadalpv16qi_uuu (__a, __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadalq_u16 (uint32x4_t __a, uint16x8_t __b)
  {
!   return __builtin_aarch64_uadalpv8hi_uuu (__a, __b);
  }
  
  __extension__ extern __inline uint64x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vpadalq_u32 (uint64x2_t __a, uint32x4_t __b)
  {
!   return __builtin_aarch64_uadalpv4si_uuu (__a, __b);
  }
  
  __extension__ extern __inline int16x4_t
*************** __extension__ extern __inline int8x16_t
*** 9841,9948 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovn_high_s16 (int8x8_t __a, int16x8_t __b)
  {
!   int8x16_t __result = vcombine_s8 (__a, vcreate_s8 (__AARCH64_UINT64_C (0x0)));
!   __asm__ ("sqxtn2 %0.16b, %1.8h"
!            : "+w"(__result)
!            : "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovn_high_s32 (int16x4_t __a, int32x4_t __b)
  {
!   int16x8_t __result = vcombine_s16 (__a, vcreate_s16 (__AARCH64_UINT64_C (0x0)));
!   __asm__ ("sqxtn2 %0.8h, %1.4s"
!            : "+w"(__result)
!            : "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovn_high_s64 (int32x2_t __a, int64x2_t __b)
  {
!   int32x4_t __result = vcombine_s32 (__a, vcreate_s32 (__AARCH64_UINT64_C (0x0)));
!   __asm__ ("sqxtn2 %0.4s, %1.2d"
!            : "+w"(__result)
!            : "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovn_high_u16 (uint8x8_t __a, uint16x8_t __b)
  {
!   uint8x16_t __result = vcombine_u8 (__a, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
!   __asm__ ("uqxtn2 %0.16b, %1.8h"
!            : "+w"(__result)
!            : "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovn_high_u32 (uint16x4_t __a, uint32x4_t __b)
  {
!   uint16x8_t __result = vcombine_u16 (__a, vcreate_u16 (__AARCH64_UINT64_C (0x0)));
!   __asm__ ("uqxtn2 %0.8h, %1.4s"
!            : "+w"(__result)
!            : "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovn_high_u64 (uint32x2_t __a, uint64x2_t __b)
  {
!   uint32x4_t __result = vcombine_u32 (__a, vcreate_u32 (__AARCH64_UINT64_C (0x0)));
!   __asm__ ("uqxtn2 %0.4s, %1.2d"
!            : "+w"(__result)
!            : "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovun_high_s16 (uint8x8_t __a, int16x8_t __b)
  {
!   uint8x16_t __result = vcombine_u8 (__a, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
!   __asm__ ("sqxtun2 %0.16b, %1.8h"
!            : "+w"(__result)
!            : "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovun_high_s32 (uint16x4_t __a, int32x4_t __b)
  {
!   uint16x8_t __result = vcombine_u16 (__a, vcreate_u16 (__AARCH64_UINT64_C (0x0)));
!   __asm__ ("sqxtun2 %0.8h, %1.4s"
!            : "+w"(__result)
!            : "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovun_high_s64 (uint32x2_t __a, int64x2_t __b)
  {
!   uint32x4_t __result = vcombine_u32 (__a, vcreate_u32 (__AARCH64_UINT64_C (0x0)));
!   __asm__ ("sqxtun2 %0.4s, %1.2d"
!            : "+w"(__result)
!            : "w"(__b)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline int16x4_t
--- 8817,8879 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovn_high_s16 (int8x8_t __a, int16x8_t __b)
  {
!   return __builtin_aarch64_sqxtn2v8hi (__a, __b);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovn_high_s32 (int16x4_t __a, int32x4_t __b)
  {
!   return __builtin_aarch64_sqxtn2v4si (__a, __b);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovn_high_s64 (int32x2_t __a, int64x2_t __b)
  {
!   return __builtin_aarch64_sqxtn2v2di (__a, __b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovn_high_u16 (uint8x8_t __a, uint16x8_t __b)
  {
!   return __builtin_aarch64_uqxtn2v8hi_uuu (__a, __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovn_high_u32 (uint16x4_t __a, uint32x4_t __b)
  {
!   return __builtin_aarch64_uqxtn2v4si_uuu (__a, __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovn_high_u64 (uint32x2_t __a, uint64x2_t __b)
  {
!   return __builtin_aarch64_uqxtn2v2di_uuu (__a, __b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovun_high_s16 (uint8x8_t __a, int16x8_t __b)
  {
!   return __builtin_aarch64_sqxtun2v8hi_uus (__a, __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovun_high_s32 (uint16x4_t __a, int32x4_t __b)
  {
!   return __builtin_aarch64_sqxtun2v4si_uus (__a, __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vqmovun_high_s64 (uint32x2_t __a, int64x2_t __b)
  {
!   return __builtin_aarch64_sqxtun2v2di_uus (__a, __b);
  }
  
  __extension__ extern __inline int16x4_t
*************** vqrdmulhq_n_s32 (int32x4_t __a, int32_t
*** 9993,10615 ****
    return __result;
  }
  
! #define vqrshrn_high_n_s16(a, b, c)                                     \
!   __extension__                                                         \
!     ({                                                                  \
!        int16x8_t b_ = (b);                                              \
!        int8x8_t a_ = (a);                                               \
!        int8x16_t result = vcombine_s8                                   \
!                             (a_, vcreate_s8                             \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("sqrshrn2 %0.16b, %1.8h, #%2"                           \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vqrshrn_high_n_s32(a, b, c)                                     \
!   __extension__                                                         \
!     ({                                                                  \
!        int32x4_t b_ = (b);                                              \
!        int16x4_t a_ = (a);                                              \
!        int16x8_t result = vcombine_s16                                  \
!                             (a_, vcreate_s16                            \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("sqrshrn2 %0.8h, %1.4s, #%2"                            \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vqrshrn_high_n_s64(a, b, c)                                     \
!   __extension__                                                         \
!     ({                                                                  \
!        int64x2_t b_ = (b);                                              \
!        int32x2_t a_ = (a);                                              \
!        int32x4_t result = vcombine_s32                                  \
!                             (a_, vcreate_s32                            \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("sqrshrn2 %0.4s, %1.2d, #%2"                            \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vqrshrn_high_n_u16(a, b, c)                                     \
!   __extension__                                                         \
!     ({                                                                  \
!        uint16x8_t b_ = (b);                                             \
!        uint8x8_t a_ = (a);                                              \
!        uint8x16_t result = vcombine_u8                                  \
!                              (a_, vcreate_u8                            \
!                                     (__AARCH64_UINT64_C (0x0)));        \
!        __asm__ ("uqrshrn2 %0.16b, %1.8h, #%2"                           \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vqrshrn_high_n_u32(a, b, c)                                     \
!   __extension__                                                         \
!     ({                                                                  \
!        uint32x4_t b_ = (b);                                             \
!        uint16x4_t a_ = (a);                                             \
!        uint16x8_t result = vcombine_u16                                 \
!                              (a_, vcreate_u16                           \
!                                     (__AARCH64_UINT64_C (0x0)));        \
!        __asm__ ("uqrshrn2 %0.8h, %1.4s, #%2"                            \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vqrshrn_high_n_u64(a, b, c)                                     \
!   __extension__                                                         \
!     ({                                                                  \
!        uint64x2_t b_ = (b);                                             \
!        uint32x2_t a_ = (a);                                             \
!        uint32x4_t result = vcombine_u32                                 \
!                              (a_, vcreate_u32                           \
!                                     (__AARCH64_UINT64_C (0x0)));        \
!        __asm__ ("uqrshrn2 %0.4s, %1.2d, #%2"                            \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vqrshrun_high_n_s16(a, b, c)                                    \
!   __extension__                                                         \
!     ({                                                                  \
!        int16x8_t b_ = (b);                                              \
!        uint8x8_t a_ = (a);                                              \
!        uint8x16_t result = vcombine_u8                                  \
!                              (a_, vcreate_u8                            \
!                                     (__AARCH64_UINT64_C (0x0)));        \
!        __asm__ ("sqrshrun2 %0.16b, %1.8h, #%2"                          \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vqrshrun_high_n_s32(a, b, c)                                    \
!   __extension__                                                         \
!     ({                                                                  \
!        int32x4_t b_ = (b);                                              \
!        uint16x4_t a_ = (a);                                             \
!        uint16x8_t result = vcombine_u16                                 \
!                              (a_, vcreate_u16                           \
!                                     (__AARCH64_UINT64_C (0x0)));        \
!        __asm__ ("sqrshrun2 %0.8h, %1.4s, #%2"                           \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vqrshrun_high_n_s64(a, b, c)                                    \
!   __extension__                                                         \
!     ({                                                                  \
!        int64x2_t b_ = (b);                                              \
!        uint32x2_t a_ = (a);                                             \
!        uint32x4_t result = vcombine_u32                                 \
!                              (a_, vcreate_u32                           \
!                                     (__AARCH64_UINT64_C (0x0)));        \
!        __asm__ ("sqrshrun2 %0.4s, %1.2d, #%2"                           \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vqshrn_high_n_s16(a, b, c)                                      \
!   __extension__                                                         \
!     ({                                                                  \
!        int16x8_t b_ = (b);                                              \
!        int8x8_t a_ = (a);                                               \
!        int8x16_t result = vcombine_s8                                   \
!                             (a_, vcreate_s8                             \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("sqshrn2 %0.16b, %1.8h, #%2"                            \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vqshrn_high_n_s32(a, b, c)                                      \
!   __extension__                                                         \
!     ({                                                                  \
!        int32x4_t b_ = (b);                                              \
!        int16x4_t a_ = (a);                                              \
!        int16x8_t result = vcombine_s16                                  \
!                             (a_, vcreate_s16                            \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("sqshrn2 %0.8h, %1.4s, #%2"                             \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vqshrn_high_n_s64(a, b, c)                                      \
!   __extension__                                                         \
!     ({                                                                  \
!        int64x2_t b_ = (b);                                              \
!        int32x2_t a_ = (a);                                              \
!        int32x4_t result = vcombine_s32                                  \
!                             (a_, vcreate_s32                            \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("sqshrn2 %0.4s, %1.2d, #%2"                             \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vqshrn_high_n_u16(a, b, c)                                      \
!   __extension__                                                         \
!     ({                                                                  \
!        uint16x8_t b_ = (b);                                             \
!        uint8x8_t a_ = (a);                                              \
!        uint8x16_t result = vcombine_u8                                  \
!                              (a_, vcreate_u8                            \
!                                     (__AARCH64_UINT64_C (0x0)));        \
!        __asm__ ("uqshrn2 %0.16b, %1.8h, #%2"                            \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vqshrn_high_n_u32(a, b, c)                                      \
!   __extension__                                                         \
!     ({                                                                  \
!        uint32x4_t b_ = (b);                                             \
!        uint16x4_t a_ = (a);                                             \
!        uint16x8_t result = vcombine_u16                                 \
!                              (a_, vcreate_u16                           \
!                                     (__AARCH64_UINT64_C (0x0)));        \
!        __asm__ ("uqshrn2 %0.8h, %1.4s, #%2"                             \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vqshrn_high_n_u64(a, b, c)                                      \
!   __extension__                                                         \
!     ({                                                                  \
!        uint64x2_t b_ = (b);                                             \
!        uint32x2_t a_ = (a);                                             \
!        uint32x4_t result = vcombine_u32                                 \
!                              (a_, vcreate_u32                           \
!                                     (__AARCH64_UINT64_C (0x0)));        \
!        __asm__ ("uqshrn2 %0.4s, %1.2d, #%2"                             \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vqshrun_high_n_s16(a, b, c)                                     \
!   __extension__                                                         \
!     ({                                                                  \
!        int16x8_t b_ = (b);                                              \
!        uint8x8_t a_ = (a);                                              \
!        uint8x16_t result = vcombine_u8                                  \
!                              (a_, vcreate_u8                            \
!                                     (__AARCH64_UINT64_C (0x0)));        \
!        __asm__ ("sqshrun2 %0.16b, %1.8h, #%2"                           \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vqshrun_high_n_s32(a, b, c)                                     \
!   __extension__                                                         \
!     ({                                                                  \
!        int32x4_t b_ = (b);                                              \
!        uint16x4_t a_ = (a);                                             \
!        uint16x8_t result = vcombine_u16                                 \
!                              (a_, vcreate_u16                           \
!                                     (__AARCH64_UINT64_C (0x0)));        \
!        __asm__ ("sqshrun2 %0.8h, %1.4s, #%2"                            \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vqshrun_high_n_s64(a, b, c)                                     \
!   __extension__                                                         \
!     ({                                                                  \
!        int64x2_t b_ = (b);                                              \
!        uint32x2_t a_ = (a);                                             \
!        uint32x4_t result = vcombine_u32                                 \
!                              (a_, vcreate_u32                           \
!                                     (__AARCH64_UINT64_C (0x0)));        \
!        __asm__ ("sqshrun2 %0.4s, %1.2d, #%2"                            \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vrshrn_high_n_s16(a, b, c)                                      \
!   __extension__                                                         \
!     ({                                                                  \
!        int16x8_t b_ = (b);                                              \
!        int8x8_t a_ = (a);                                               \
!        int8x16_t result = vcombine_s8                                   \
!                             (a_, vcreate_s8                             \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("rshrn2 %0.16b,%1.8h,#%2"                               \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vrshrn_high_n_s32(a, b, c)                                      \
!   __extension__                                                         \
!     ({                                                                  \
!        int32x4_t b_ = (b);                                              \
!        int16x4_t a_ = (a);                                              \
!        int16x8_t result = vcombine_s16                                  \
!                             (a_, vcreate_s16                            \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("rshrn2 %0.8h,%1.4s,#%2"                                \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vrshrn_high_n_s64(a, b, c)                                      \
!   __extension__                                                         \
!     ({                                                                  \
!        int64x2_t b_ = (b);                                              \
!        int32x2_t a_ = (a);                                              \
!        int32x4_t result = vcombine_s32                                  \
!                             (a_, vcreate_s32                            \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("rshrn2 %0.4s,%1.2d,#%2"                                \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vrshrn_high_n_u16(a, b, c)                                      \
!   __extension__                                                         \
!     ({                                                                  \
!        uint16x8_t b_ = (b);                                             \
!        uint8x8_t a_ = (a);                                              \
!        uint8x16_t result = vcombine_u8                                  \
!                             (a_, vcreate_u8                             \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("rshrn2 %0.16b,%1.8h,#%2"                               \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vrshrn_high_n_u32(a, b, c)                                      \
!   __extension__                                                         \
!     ({                                                                  \
!        uint32x4_t b_ = (b);                                             \
!        uint16x4_t a_ = (a);                                             \
!        uint16x8_t result = vcombine_u16                                 \
!                             (a_, vcreate_u16                            \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("rshrn2 %0.8h,%1.4s,#%2"                                \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vrshrn_high_n_u64(a, b, c)                                      \
!   __extension__                                                         \
!     ({                                                                  \
!        uint64x2_t b_ = (b);                                             \
!        uint32x2_t a_ = (a);                                             \
!        uint32x4_t result = vcombine_u32                                 \
!                             (a_, vcreate_u32                            \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("rshrn2 %0.4s,%1.2d,#%2"                                \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vrshrn_n_s16(a, b)                                              \
!   __extension__                                                         \
!     ({                                                                  \
!        int16x8_t a_ = (a);                                              \
!        int8x8_t result;                                                 \
!        __asm__ ("rshrn %0.8b,%1.8h,%2"                                  \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "i"(b)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vrshrn_n_s32(a, b)                                              \
!   __extension__                                                         \
!     ({                                                                  \
!        int32x4_t a_ = (a);                                              \
!        int16x4_t result;                                                \
!        __asm__ ("rshrn %0.4h,%1.4s,%2"                                  \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "i"(b)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vrshrn_n_s64(a, b)                                              \
!   __extension__                                                         \
!     ({                                                                  \
!        int64x2_t a_ = (a);                                              \
!        int32x2_t result;                                                \
!        __asm__ ("rshrn %0.2s,%1.2d,%2"                                  \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "i"(b)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vrshrn_n_u16(a, b)                                              \
!   __extension__                                                         \
!     ({                                                                  \
!        uint16x8_t a_ = (a);                                             \
!        uint8x8_t result;                                                \
!        __asm__ ("rshrn %0.8b,%1.8h,%2"                                  \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "i"(b)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vrshrn_n_u32(a, b)                                              \
!   __extension__                                                         \
!     ({                                                                  \
!        uint32x4_t a_ = (a);                                             \
!        uint16x4_t result;                                               \
!        __asm__ ("rshrn %0.4h,%1.4s,%2"                                  \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "i"(b)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vrshrn_n_u64(a, b)                                              \
!   __extension__                                                         \
!     ({                                                                  \
!        uint64x2_t a_ = (a);                                             \
!        uint32x2_t result;                                               \
!        __asm__ ("rshrn %0.2s,%1.2d,%2"                                  \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "i"(b)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vrsqrte_u32 (uint32x2_t __a)
  {
!   uint32x2_t __result;
!   __asm__ ("ursqrte %0.2s,%1.2s"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vrsqrteq_u32 (uint32x4_t __a)
  {
!   uint32x4_t __result;
!   __asm__ ("ursqrte %0.4s,%1.4s"
!            : "=w"(__result)
!            : "w"(__a)
!            : /* No clobbers */);
!   return __result;
  }
  
! #define vshrn_high_n_s16(a, b, c)                                       \
!   __extension__                                                         \
!     ({                                                                  \
!        int16x8_t b_ = (b);                                              \
!        int8x8_t a_ = (a);                                               \
!        int8x16_t result = vcombine_s8                                   \
!                             (a_, vcreate_s8                             \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("shrn2 %0.16b,%1.8h,#%2"                                \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
! 
! #define vshrn_high_n_s32(a, b, c)                                       \
!   __extension__                                                         \
!     ({                                                                  \
!        int32x4_t b_ = (b);                                              \
!        int16x4_t a_ = (a);                                              \
!        int16x8_t result = vcombine_s16                                  \
!                             (a_, vcreate_s16                            \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("shrn2 %0.8h,%1.4s,#%2"                                 \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
! 
! #define vshrn_high_n_s64(a, b, c)                                       \
!   __extension__                                                         \
!     ({                                                                  \
!        int64x2_t b_ = (b);                                              \
!        int32x2_t a_ = (a);                                              \
!        int32x4_t result = vcombine_s32                                  \
!                             (a_, vcreate_s32                            \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("shrn2 %0.4s,%1.2d,#%2"                                 \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
! 
! #define vshrn_high_n_u16(a, b, c)                                       \
!   __extension__                                                         \
!     ({                                                                  \
!        uint16x8_t b_ = (b);                                             \
!        uint8x8_t a_ = (a);                                              \
!        uint8x16_t result = vcombine_u8                                  \
!                             (a_, vcreate_u8                             \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("shrn2 %0.16b,%1.8h,#%2"                                \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
! 
! #define vshrn_high_n_u32(a, b, c)                                       \
!   __extension__                                                         \
!     ({                                                                  \
!        uint32x4_t b_ = (b);                                             \
!        uint16x4_t a_ = (a);                                             \
!        uint16x8_t result = vcombine_u16                                 \
!                             (a_, vcreate_u16                            \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("shrn2 %0.8h,%1.4s,#%2"                                 \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
! 
! #define vshrn_high_n_u64(a, b, c)                                       \
!   __extension__                                                         \
!     ({                                                                  \
!        uint64x2_t b_ = (b);                                             \
!        uint32x2_t a_ = (a);                                             \
!        uint32x4_t result = vcombine_u32                                 \
!                             (a_, vcreate_u32                            \
!                                    (__AARCH64_UINT64_C (0x0)));         \
!        __asm__ ("shrn2 %0.4s,%1.2d,#%2"                                 \
!                 : "+w"(result)                                          \
!                 : "w"(b_), "i"(c)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
! 
! #define vshrn_n_s16(a, b)                                               \
!   __extension__                                                         \
!     ({                                                                  \
!        int16x8_t a_ = (a);                                              \
!        int8x8_t result;                                                 \
!        __asm__ ("shrn %0.8b,%1.8h,%2"                                   \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "i"(b)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vshrn_n_s32(a, b)                                               \
!   __extension__                                                         \
!     ({                                                                  \
!        int32x4_t a_ = (a);                                              \
!        int16x4_t result;                                                \
!        __asm__ ("shrn %0.4h,%1.4s,%2"                                   \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "i"(b)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vshrn_n_s64(a, b)                                               \
!   __extension__                                                         \
!     ({                                                                  \
!        int64x2_t a_ = (a);                                              \
!        int32x2_t result;                                                \
!        __asm__ ("shrn %0.2s,%1.2d,%2"                                   \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "i"(b)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vshrn_n_u16(a, b)                                               \
!   __extension__                                                         \
!     ({                                                                  \
!        uint16x8_t a_ = (a);                                             \
!        uint8x8_t result;                                                \
!        __asm__ ("shrn %0.8b,%1.8h,%2"                                   \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "i"(b)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vshrn_n_u32(a, b)                                               \
!   __extension__                                                         \
!     ({                                                                  \
!        uint32x4_t a_ = (a);                                             \
!        uint16x4_t result;                                               \
!        __asm__ ("shrn %0.4h,%1.4s,%2"                                   \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "i"(b)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
! #define vshrn_n_u64(a, b)                                               \
!   __extension__                                                         \
!     ({                                                                  \
!        uint64x2_t a_ = (a);                                             \
!        uint32x2_t result;                                               \
!        __asm__ ("shrn %0.2s,%1.2d,%2"                                   \
!                 : "=w"(result)                                          \
!                 : "w"(a_), "i"(b)                                       \
!                 : /* No clobbers */);                                   \
!        result;                                                          \
!      })
  
  #define vsli_n_p8(a, b, c)                                              \
    __extension__                                                         \
--- 8924,9200 ----
    return __result;
  }
  
! __extension__ extern __inline int8x16_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqrshrn_high_n_s16 (int8x8_t __a, int16x8_t __b, const int __c)
! {
!   return __builtin_aarch64_sqrshrn2_nv8hi (__a, __b, __c);
! }
  
! __extension__ extern __inline int16x8_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqrshrn_high_n_s32 (int16x4_t __a, int32x4_t __b, const int __c)
! {
!   return __builtin_aarch64_sqrshrn2_nv4si (__a, __b, __c);
! }
  
! __extension__ extern __inline int32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqrshrn_high_n_s64 (int32x2_t __a, int64x2_t __b, const int __c)
! {
!   return __builtin_aarch64_sqrshrn2_nv2di (__a, __b, __c);
! }
  
! __extension__ extern __inline uint8x16_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqrshrn_high_n_u16 (uint8x8_t __a, uint16x8_t __b, const int __c)
! {
!   return __builtin_aarch64_uqrshrn2_nv8hi_uuus (__a, __b, __c);
! }
  
! __extension__ extern __inline uint16x8_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqrshrn_high_n_u32 (uint16x4_t __a, uint32x4_t __b, const int __c)
! {
!   return __builtin_aarch64_uqrshrn2_nv4si_uuus (__a, __b, __c);
! }
  
! __extension__ extern __inline uint32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqrshrn_high_n_u64 (uint32x2_t __a, uint64x2_t __b, const int __c)
! {
!   return __builtin_aarch64_uqrshrn2_nv2di_uuus (__a, __b, __c);
! }
  
! __extension__ extern __inline uint8x16_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqrshrun_high_n_s16 (uint8x8_t __a, int16x8_t __b, const int __c)
! {
!   return __builtin_aarch64_sqrshrun2_nv8hi_uuss (__a, __b, __c);
! }
  
! __extension__ extern __inline uint16x8_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqrshrun_high_n_s32 (uint16x4_t __a, int32x4_t __b, const int __c)
! {
!   return __builtin_aarch64_sqrshrun2_nv4si_uuss (__a, __b, __c);
! }
  
! __extension__ extern __inline uint32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqrshrun_high_n_s64 (uint32x2_t __a, int64x2_t __b, const int __c)
! {
!   return __builtin_aarch64_sqrshrun2_nv2di_uuss (__a, __b, __c);
! }
  
! __extension__ extern __inline int8x16_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqshrn_high_n_s16 (int8x8_t __a, int16x8_t __b, const int __c)
! {
!   return __builtin_aarch64_sqshrn2_nv8hi (__a, __b, __c);
! }
  
! __extension__ extern __inline int16x8_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqshrn_high_n_s32 (int16x4_t __a, int32x4_t __b, const int __c)
! {
!   return __builtin_aarch64_sqshrn2_nv4si (__a, __b, __c);
! }
  
! __extension__ extern __inline int32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqshrn_high_n_s64 (int32x2_t __a, int64x2_t __b, const int __c)
! {
!   return __builtin_aarch64_sqshrn2_nv2di (__a, __b, __c);
! }
  
! __extension__ extern __inline uint8x16_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqshrn_high_n_u16 (uint8x8_t __a, uint16x8_t __b, const int __c)
! {
!   return __builtin_aarch64_uqshrn2_nv8hi_uuus (__a, __b, __c);
! }
  
! __extension__ extern __inline uint16x8_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqshrn_high_n_u32 (uint16x4_t __a, uint32x4_t __b, const int __c)
! {
!   return __builtin_aarch64_uqshrn2_nv4si_uuus (__a, __b, __c);
! }
  
! __extension__ extern __inline uint32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqshrn_high_n_u64 (uint32x2_t __a, uint64x2_t __b, const int __c)
! {
!   return __builtin_aarch64_uqshrn2_nv2di_uuus (__a, __b, __c);
! }
  
! __extension__ extern __inline uint8x16_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqshrun_high_n_s16 (uint8x8_t __a, int16x8_t __b, const int __c)
! {
!   return __builtin_aarch64_sqshrun2_nv8hi_uuss (__a, __b, __c);
! }
  
! __extension__ extern __inline uint16x8_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqshrun_high_n_s32 (uint16x4_t __a, int32x4_t __b, const int __c)
! {
!   return __builtin_aarch64_sqshrun2_nv4si_uuss (__a, __b, __c);
! }
  
! __extension__ extern __inline uint32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vqshrun_high_n_s64 (uint32x2_t __a, int64x2_t __b, const int __c)
! {
!   return __builtin_aarch64_sqshrun2_nv2di_uuss (__a, __b, __c);
! }
  
! __extension__ extern __inline int8x16_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vrshrn_high_n_s16 (int8x8_t __a, int16x8_t __b, const int __c)
! {
!   return __builtin_aarch64_rshrn2v8hi (__a, __b, __c);
! }
  
! __extension__ extern __inline int16x8_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vrshrn_high_n_s32 (int16x4_t __a, int32x4_t __b, const int __c)
! {
!   return __builtin_aarch64_rshrn2v4si (__a, __b, __c);
! }
  
! __extension__ extern __inline int32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vrshrn_high_n_s64 (int32x2_t __a, int64x2_t __b, const int __c)
! {
!   return __builtin_aarch64_rshrn2v2di (__a, __b, __c);
! }
  
! __extension__ extern __inline uint8x16_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vrshrn_high_n_u16 (uint8x8_t __a, uint16x8_t __b, const int __c)
! {
!   return (uint8x16_t) __builtin_aarch64_rshrn2v8hi ((int8x8_t) __a,
! 						    (int16x8_t) __b, __c);
! }
  
! __extension__ extern __inline uint16x8_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vrshrn_high_n_u32 (uint16x4_t __a, uint32x4_t __b, const int __c)
! {
!   return (uint16x8_t) __builtin_aarch64_rshrn2v4si ((int16x4_t) __a,
! 						    (int32x4_t) __b, __c);
! }
  
! __extension__ extern __inline uint32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vrshrn_high_n_u64 (uint32x2_t __a, uint64x2_t __b, const int __c)
! {
!   return (uint32x4_t) __builtin_aarch64_rshrn2v2di ((int32x2_t)__a,
! 						    (int64x2_t)__b, __c);
! }
  
! __extension__ extern __inline int8x8_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vrshrn_n_s16 (int16x8_t __a, const int __b)
! {
!   return __builtin_aarch64_rshrnv8hi (__a, __b);
! }
  
! __extension__ extern __inline int16x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vrshrn_n_s32 (int32x4_t __a, const int __b)
! {
!   return __builtin_aarch64_rshrnv4si (__a, __b);
! }
  
! __extension__ extern __inline int32x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vrshrn_n_s64 (int64x2_t __a, const int __b)
! {
!   return __builtin_aarch64_rshrnv2di (__a, __b);
! }
  
! __extension__ extern __inline uint8x8_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vrshrn_n_u16 (uint16x8_t __a, const int __b)
! {
!   return (uint8x8_t) __builtin_aarch64_rshrnv8hi ((int16x8_t) __a, __b);
! }
  
! __extension__ extern __inline uint16x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vrshrn_n_u32 (uint32x4_t __a, const int __b)
! {
!   return (uint16x4_t) __builtin_aarch64_rshrnv4si ((int32x4_t) __a, __b);
! }
  
! __extension__ extern __inline uint32x2_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vrshrn_n_u64 (uint64x2_t __a, const int __b)
! {
!   return (uint32x2_t) __builtin_aarch64_rshrnv2di ((int64x2_t) __a, __b);
! }
  
  __extension__ extern __inline uint32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vrsqrte_u32 (uint32x2_t __a)
  {
!   return __builtin_aarch64_ursqrtev2si_uu (__a);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vrsqrteq_u32 (uint32x4_t __a)
  {
!   return __builtin_aarch64_ursqrtev4si_uu (__a);
  }
  
! __extension__ extern __inline int8x16_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vshrn_high_n_s16 (int8x8_t __a, int16x8_t __b, const int __c)
! {
!   return __builtin_aarch64_shrn2v8hi (__a, __b, __c);
! }
  
! __extension__ extern __inline int16x8_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vshrn_high_n_s32 (int16x4_t __a, int32x4_t __b, const int __c)
! {
!   return __builtin_aarch64_shrn2v4si (__a, __b, __c);
! }
  
! __extension__ extern __inline int32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vshrn_high_n_s64 (int32x2_t __a, int64x2_t __b, const int __c)
! {
!   return __builtin_aarch64_shrn2v2di (__a, __b, __c);
! }
  
! __extension__ extern __inline uint8x16_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vshrn_high_n_u16 (uint8x8_t __a, uint16x8_t __b, const int __c)
! {
!   return (uint8x16_t)
!     __builtin_aarch64_shrn2v8hi ((int8x8_t) __a, (int16x8_t) __b, __c);
! }
  
! __extension__ extern __inline uint16x8_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vshrn_high_n_u32 (uint16x4_t __a, uint32x4_t __b, const int __c)
! {
!   return (uint16x8_t)
!     __builtin_aarch64_shrn2v4si ((int16x4_t) __a, (int32x4_t) __b, __c);
! }
  
! __extension__ extern __inline uint32x4_t
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! vshrn_high_n_u64 (uint32x2_t __a, uint64x2_t __b, const int __c)
! {
!   return (uint32x4_t)
!     __builtin_aarch64_shrn2v2di ((int32x2_t) __a, (int64x2_t) __b, __c);
! }
  
  #define vsli_n_p8(a, b, c)                                              \
    __extension__                                                         \
*************** __extension__ extern __inline int64_t
*** 11130,11147 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlv_s32 (int32x2_t __a)
  {
!   int64_t __result;
!   __asm__ ("saddlp %0.1d, %1.2s" : "=w"(__result) : "w"(__a) : );
!   return __result;
  }
  
  __extension__ extern __inline uint64_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlv_u32 (uint32x2_t __a)
  {
!   uint64_t __result;
!   __asm__ ("uaddlp %0.1d, %1.2s" : "=w"(__result) : "w"(__a) : );
!   return __result;
  }
  
  __extension__ extern __inline int16x4_t
--- 9715,9728 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlv_s32 (int32x2_t __a)
  {
!   return __builtin_aarch64_saddlvv2si (__a);
  }
  
  __extension__ extern __inline uint64_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vaddlv_u32 (uint32x2_t __a)
  {
!   return __builtin_aarch64_uaddlvv2si_uu (__a);
  }
  
  __extension__ extern __inline int16x4_t
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/arm_sve.h gcc-11.1.0/gcc/config/aarch64/arm_sve.h
*** gcc-10.3.0/gcc/config/aarch64/arm_sve.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/arm_sve.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* AArch64 SVE intrinsics include file.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* AArch64 SVE intrinsics include file.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/atomics.md gcc-11.1.0/gcc/config/aarch64/atomics.md
*** gcc-10.3.0/gcc/config/aarch64/atomics.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/atomics.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description for AArch64 processor synchronization primitives.
! ;; Copyright (C) 2009-2020 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AArch64 processor synchronization primitives.
! ;; Copyright (C) 2009-2021 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/biarchilp32.h gcc-11.1.0/gcc/config/aarch64/biarchilp32.h
*** gcc-10.3.0/gcc/config/aarch64/biarchilp32.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/biarchilp32.h	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* Make configure files to produce biarch compiler defaulting to ilp32 ABI.
     This file must be included very first, while the OS specific file later
     to overwrite otherwise wrong defaults.
!    Copyright (C) 2013-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
  This file is part of GCC.
--- 1,7 ----
  /* Make configure files to produce biarch compiler defaulting to ilp32 ABI.
     This file must be included very first, while the OS specific file later
     to overwrite otherwise wrong defaults.
!    Copyright (C) 2013-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/biarchlp64.h gcc-11.1.0/gcc/config/aarch64/biarchlp64.h
*** gcc-10.3.0/gcc/config/aarch64/biarchlp64.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/biarchlp64.h	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* Make configure files to produce biarch compiler defaulting to ilp64 ABI.
     This file must be included very first, while the OS specific file later
     to overwrite otherwise wrong defaults.
!    Copyright (C) 2013-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
  This file is part of GCC.
--- 1,7 ----
  /* Make configure files to produce biarch compiler defaulting to ilp64 ABI.
     This file must be included very first, while the OS specific file later
     to overwrite otherwise wrong defaults.
!    Copyright (C) 2013-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/check-sve-md.awk gcc-11.1.0/gcc/config/aarch64/check-sve-md.awk
*** gcc-10.3.0/gcc/config/aarch64/check-sve-md.awk	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/check-sve-md.awk	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  #!/usr/bin/awk -f
! # Copyright (C) 2019-2020 Free Software Foundation, Inc.
  #
  # This program is free software; you can redistribute it and/or modify it
  # under the terms of the GNU General Public License as published by the
--- 1,5 ----
  #!/usr/bin/awk -f
! # Copyright (C) 2019-2021 Free Software Foundation, Inc.
  #
  # This program is free software; you can redistribute it and/or modify it
  # under the terms of the GNU General Public License as published by the
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/constraints.md gcc-11.1.0/gcc/config/aarch64/constraints.md
*** gcc-10.3.0/gcc/config/aarch64/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description for AArch64 architecture.
! ;; Copyright (C) 2009-2020 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AArch64 architecture.
! ;; Copyright (C) 2009-2021 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 323,367 ****
    (and (match_code "mem")
         (match_test "aarch64_simd_mem_operand_p (op)")))
  
! (define_memory_constraint "Utq"
    "@internal
     An address valid for loading or storing a 128-bit AdvSIMD register"
    (and (match_code "mem")
         (match_test "aarch64_legitimate_address_p (V2DImode,
  						  XEXP (op, 0), 1)")))
  
! (define_memory_constraint "UtQ"
    "@internal
     An address valid for SVE LD1RQs."
    (and (match_code "mem")
         (match_test "aarch64_sve_ld1rq_operand_p (op)")))
  
! (define_memory_constraint "UOb"
    "@internal
     An address valid for SVE LD1ROH."
    (and (match_code "mem")
         (match_test "aarch64_sve_ld1ro_operand_p (op, QImode)")))
  
! (define_memory_constraint "UOh"
    "@internal
     An address valid for SVE LD1ROH."
    (and (match_code "mem")
         (match_test "aarch64_sve_ld1ro_operand_p (op, HImode)")))
  
  
! (define_memory_constraint "UOw"
    "@internal
     An address valid for SVE LD1ROW."
    (and (match_code "mem")
         (match_test "aarch64_sve_ld1ro_operand_p (op, SImode)")))
  
! (define_memory_constraint "UOd"
    "@internal
     An address valid for SVE LD1ROD."
    (and (match_code "mem")
         (match_test "aarch64_sve_ld1ro_operand_p (op, DImode)")))
  
! (define_memory_constraint "Uty"
    "@internal
     An address valid for SVE LD1Rs."
    (and (match_code "mem")
--- 323,367 ----
    (and (match_code "mem")
         (match_test "aarch64_simd_mem_operand_p (op)")))
  
! (define_relaxed_memory_constraint "Utq"
    "@internal
     An address valid for loading or storing a 128-bit AdvSIMD register"
    (and (match_code "mem")
         (match_test "aarch64_legitimate_address_p (V2DImode,
  						  XEXP (op, 0), 1)")))
  
! (define_relaxed_memory_constraint "UtQ"
    "@internal
     An address valid for SVE LD1RQs."
    (and (match_code "mem")
         (match_test "aarch64_sve_ld1rq_operand_p (op)")))
  
! (define_relaxed_memory_constraint "UOb"
    "@internal
     An address valid for SVE LD1ROH."
    (and (match_code "mem")
         (match_test "aarch64_sve_ld1ro_operand_p (op, QImode)")))
  
! (define_relaxed_memory_constraint "UOh"
    "@internal
     An address valid for SVE LD1ROH."
    (and (match_code "mem")
         (match_test "aarch64_sve_ld1ro_operand_p (op, HImode)")))
  
  
! (define_relaxed_memory_constraint "UOw"
    "@internal
     An address valid for SVE LD1ROW."
    (and (match_code "mem")
         (match_test "aarch64_sve_ld1ro_operand_p (op, SImode)")))
  
! (define_relaxed_memory_constraint "UOd"
    "@internal
     An address valid for SVE LD1ROD."
    (and (match_code "mem")
         (match_test "aarch64_sve_ld1ro_operand_p (op, DImode)")))
  
! (define_relaxed_memory_constraint "Uty"
    "@internal
     An address valid for SVE LD1Rs."
    (and (match_code "mem")
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/cortex-a57-fma-steering.c gcc-11.1.0/gcc/config/aarch64/cortex-a57-fma-steering.c
*** gcc-10.3.0/gcc/config/aarch64/cortex-a57-fma-steering.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/cortex-a57-fma-steering.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* FMA steering optimization pass for Cortex-A57.
!    Copyright (C) 2015-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* FMA steering optimization pass for Cortex-A57.
!    Copyright (C) 2015-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/driver-aarch64.c gcc-11.1.0/gcc/config/aarch64/driver-aarch64.c
*** gcc-10.3.0/gcc/config/aarch64/driver-aarch64.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/driver-aarch64.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Native CPU detection for aarch64.
!    Copyright (C) 2015-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Native CPU detection for aarch64.
!    Copyright (C) 2015-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 25,33 ****
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
! 
! /* Defined in common/config/aarch64/aarch64-common.c.  */
! std::string aarch64_get_extension_string_for_isa_flags (uint64_t, uint64_t);
  
  struct aarch64_arch_extension
  {
--- 25,31 ----
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
! #include "aarch64-protos.h"
  
  struct aarch64_arch_extension
  {
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/falkor-tag-collision-avoidance.c gcc-11.1.0/gcc/config/aarch64/falkor-tag-collision-avoidance.c
*** gcc-10.3.0/gcc/config/aarch64/falkor-tag-collision-avoidance.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/falkor-tag-collision-avoidance.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Tag Collision Avoidance pass for Falkor.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Tag Collision Avoidance pass for Falkor.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/falkor.md gcc-11.1.0/gcc/config/aarch64/falkor.md
*** gcc-10.3.0/gcc/config/aarch64/falkor.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/falkor.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Falkor pipeline description
! ;; Copyright (C) 2017-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Falkor pipeline description
! ;; Copyright (C) 2017-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 302,308 ****
  
  (define_insn_reservation "falkor_alu_1_xyz" 1
    (and (eq_attr "tune" "falkor")
!        (eq_attr "type" "alus_sreg,alus_imm,alus_shift_imm,csel,adc_reg,alu_imm,alu_sreg,alu_shift_imm,alu_ext,alus_ext,logic_imm,logic_reg,logic_shift_imm,logics_imm,logics_reg,logics_shift_imm,mov_reg"))
    "falkor_xyz")
  
  ;; SIMD Miscellaneous Instructions
--- 302,308 ----
  
  (define_insn_reservation "falkor_alu_1_xyz" 1
    (and (eq_attr "tune" "falkor")
!        (eq_attr "type" "alus_sreg,alus_imm,alus_shift_imm,csel,adc_reg,alu_imm,alu_sreg,alu_shift_imm_lsl_1to4,alu_shift_imm_other,alu_ext,alus_ext,logic_imm,logic_reg,logic_shift_imm,logics_imm,logics_reg,logics_shift_imm,mov_reg"))
    "falkor_xyz")
  
  ;; SIMD Miscellaneous Instructions
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/geniterators.sh gcc-11.1.0/gcc/config/aarch64/geniterators.sh
*** gcc-10.3.0/gcc/config/aarch64/geniterators.sh	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/geniterators.sh	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  #!/bin/sh
  #
! # Copyright (C) 2014-2020 Free Software Foundation, Inc.
  # Contributed by ARM Ltd.
  #
  # This file is part of GCC.
--- 1,6 ----
  #!/bin/sh
  #
! # Copyright (C) 2014-2021 Free Software Foundation, Inc.
  # Contributed by ARM Ltd.
  #
  # This file is part of GCC.
*************** iterdef {
*** 70,77 ****
  	sub(/ *\]/, "", s)
  
  	n = split(s, a)
! 	printf "#define BUILTIN_" a[1] "(T, N, MAP) \\\n"
! 	printf "  VAR" (n-1) " (T, N, MAP"
  	for (i = 2; i <= n; i++)
  		printf ", "  tolower(a[i])
  	printf ")\n"
--- 70,77 ----
  	sub(/ *\]/, "", s)
  
  	n = split(s, a)
! 	printf "#define BUILTIN_" a[1] "(T, N, MAP, FLAG) \\\n"
! 	printf "  VAR" (n-1) " (T, N, MAP, FLAG"
  	for (i = 2; i <= n; i++)
  		printf ", "  tolower(a[i])
  	printf ")\n"
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/gentune.sh gcc-11.1.0/gcc/config/aarch64/gentune.sh
*** gcc-10.3.0/gcc/config/aarch64/gentune.sh	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/gentune.sh	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  #!/bin/sh
  #
! # Copyright (C) 2011-2020 Free Software Foundation, Inc.
  # Contributed by ARM Ltd.
  #
  # This file is part of GCC.
--- 1,6 ----
  #!/bin/sh
  #
! # Copyright (C) 2011-2021 Free Software Foundation, Inc.
  # Contributed by ARM Ltd.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/iterators.md gcc-11.1.0/gcc/config/aarch64/iterators.md
*** gcc-10.3.0/gcc/config/aarch64/iterators.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/iterators.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description for AArch64 architecture.
! ;; Copyright (C) 2009-2020 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AArch64 architecture.
! ;; Copyright (C) 2009-2021 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 98,103 ****
--- 98,106 ----
  ;; Copy of the above.
  (define_mode_iterator DREG2 [V8QI V4HI V4HF V2SI V2SF DF])
  
+ ;; All modes suitable to store/load pair (2 elements) using STP/LDP.
+ (define_mode_iterator VP_2E [V2SI V2SF V2DI V2DF])
+ 
  ;; Advanced SIMD, 64-bit container, all integer modes.
  (define_mode_iterator VD_BHSI [V8QI V4HI V2SI])
  
***************
*** 209,214 ****
--- 212,220 ----
  ;; Advanced SIMD modes for Integer reduction across lanes (zero/sign extended).
  (define_mode_iterator VDQV_E [V8QI V16QI V4HI V8HI])
  
+ ;; Advanced SIMD modes for Integer widening reduction across lanes.
+ (define_mode_iterator VDQV_L [V8QI V16QI V4HI V8HI V4SI V2SI])
+ 
  ;; All double integer narrow-able modes.
  (define_mode_iterator VDN [V4HI V2SI DI])
  
***************
*** 394,400 ****
  (define_mode_iterator SVE_ALL [VNx16QI VNx8QI VNx4QI VNx2QI
  			       VNx8HI VNx4HI VNx2HI
  			       VNx8HF VNx4HF VNx2HF
! 			       VNx8BF
  			       VNx4SI VNx2SI
  			       VNx4SF VNx2SF
  			       VNx2DI
--- 400,406 ----
  (define_mode_iterator SVE_ALL [VNx16QI VNx8QI VNx4QI VNx2QI
  			       VNx8HI VNx4HI VNx2HI
  			       VNx8HF VNx4HF VNx2HF
! 			       VNx8BF VNx4BF VNx2BF
  			       VNx4SI VNx2SI
  			       VNx4SF VNx2SF
  			       VNx2DI
***************
*** 412,422 ****
  				VNx2DI])
  
  ;; SVE modes with 2 or 4 elements.
! (define_mode_iterator SVE_24 [VNx2QI VNx2HI VNx2HF VNx2SI VNx2SF VNx2DI VNx2DF
! 			      VNx4QI VNx4HI VNx4HF VNx4SI VNx4SF])
  
  ;; SVE modes with 2 elements.
! (define_mode_iterator SVE_2 [VNx2QI VNx2HI VNx2HF VNx2SI VNx2SF VNx2DI VNx2DF])
  
  ;; SVE integer modes with 2 elements, excluding the widest element.
  (define_mode_iterator SVE_2BHSI [VNx2QI VNx2HI VNx2SI])
--- 418,434 ----
  				VNx2DI])
  
  ;; SVE modes with 2 or 4 elements.
! (define_mode_iterator SVE_24 [VNx2QI VNx2HI VNx2HF VNx2BF VNx2SI VNx2SF
! 			      VNx2DI VNx2DF
! 			      VNx4QI VNx4HI VNx4HF VNx4BF VNx4SI VNx4SF])
! 
! ;; SVE integer modes with 2 or 4 elements.
! (define_mode_iterator SVE_24I [VNx2QI VNx2HI VNx2SI VNx2DI
! 			       VNx4QI VNx4HI VNx4SI])
  
  ;; SVE modes with 2 elements.
! (define_mode_iterator SVE_2 [VNx2QI VNx2HI VNx2HF VNx2BF
! 			     VNx2SI VNx2SF VNx2DI VNx2DF])
  
  ;; SVE integer modes with 2 elements, excluding the widest element.
  (define_mode_iterator SVE_2BHSI [VNx2QI VNx2HI VNx2SI])
***************
*** 425,431 ****
  (define_mode_iterator SVE_2HSDI [VNx2HI VNx2SI VNx2DI])
  
  ;; SVE modes with 4 elements.
! (define_mode_iterator SVE_4 [VNx4QI VNx4HI VNx4HF VNx4SI VNx4SF])
  
  ;; SVE integer modes with 4 elements, excluding the widest element.
  (define_mode_iterator SVE_4BHI [VNx4QI VNx4HI])
--- 437,443 ----
  (define_mode_iterator SVE_2HSDI [VNx2HI VNx2SI VNx2DI])
  
  ;; SVE modes with 4 elements.
! (define_mode_iterator SVE_4 [VNx4QI VNx4HI VNx4HF VNx4BF VNx4SI VNx4SF])
  
  ;; SVE integer modes with 4 elements, excluding the widest element.
  (define_mode_iterator SVE_4BHI [VNx4QI VNx4HI])
***************
*** 480,485 ****
--- 492,499 ----
      UNSPEC_FMINV	; Used in aarch64-simd.md.
      UNSPEC_FADDV	; Used in aarch64-simd.md.
      UNSPEC_ADDV		; Used in aarch64-simd.md.
+     UNSPEC_SADDLV	; Used in aarch64-simd.md.
+     UNSPEC_UADDLV	; Used in aarch64-simd.md.
      UNSPEC_SMAXV	; Used in aarch64-simd.md.
      UNSPEC_SMINV	; Used in aarch64-simd.md.
      UNSPEC_UMAXV	; Used in aarch64-simd.md.
***************
*** 505,510 ****
--- 519,525 ----
      UNSPEC_USQADD	; Used in aarch64-simd.md.
      UNSPEC_SUQADD	; Used in aarch64-simd.md.
      UNSPEC_SQXTUN	; Used in aarch64-simd.md.
+     UNSPEC_SQXTUN2	; Used in aarch64-simd.md.
      UNSPEC_SQXTN	; Used in aarch64-simd.md.
      UNSPEC_UQXTN	; Used in aarch64-simd.md.
      UNSPEC_SSRA		; Used in aarch64-simd.md.
***************
*** 615,620 ****
--- 630,636 ----
      UNSPEC_REVB		; Used in aarch64-sve.md.
      UNSPEC_REVH		; Used in aarch64-sve.md.
      UNSPEC_REVW		; Used in aarch64-sve.md.
+     UNSPEC_REVBHW	; Used in aarch64-sve.md.
      UNSPEC_SMUL_HIGHPART ; Used in aarch64-sve.md.
      UNSPEC_UMUL_HIGHPART ; Used in aarch64-sve.md.
      UNSPEC_FMLA		; Used in aarch64-sve.md.
***************
*** 633,638 ****
--- 649,655 ----
      UNSPEC_UZP2Q	; Used in aarch64-sve.md.
      UNSPEC_ZIP1Q	; Used in aarch64-sve.md.
      UNSPEC_ZIP2Q	; Used in aarch64-sve.md.
+     UNSPEC_TRN1_CONV	; Used in aarch64-sve.md.
      UNSPEC_COND_CMPEQ_WIDE ; Used in aarch64-sve.md.
      UNSPEC_COND_CMPGE_WIDE ; Used in aarch64-sve.md.
      UNSPEC_COND_CMPGT_WIDE ; Used in aarch64-sve.md.
***************
*** 699,704 ****
--- 716,725 ----
      UNSPEC_FCMLA90	; Used in aarch64-simd.md.
      UNSPEC_FCMLA180	; Used in aarch64-simd.md.
      UNSPEC_FCMLA270	; Used in aarch64-simd.md.
+     UNSPEC_FCMUL	; Used in aarch64-simd.md.
+     UNSPEC_FCMUL_CONJ	; Used in aarch64-simd.md.
+     UNSPEC_FCMLA_CONJ	; Used in aarch64-simd.md.
+     UNSPEC_FCMLA180_CONJ	; Used in aarch64-simd.md.
      UNSPEC_ASRD		; Used in aarch64-sve.md.
      UNSPEC_ADCLB	; Used in aarch64-sve2.md.
      UNSPEC_ADCLT	; Used in aarch64-sve2.md.
***************
*** 717,722 ****
--- 738,747 ----
      UNSPEC_CMLA180	; Used in aarch64-sve2.md.
      UNSPEC_CMLA270	; Used in aarch64-sve2.md.
      UNSPEC_CMLA90	; Used in aarch64-sve2.md.
+     UNSPEC_CMLA_CONJ	; Used in aarch64-sve2.md.
+     UNSPEC_CMLA180_CONJ	; Used in aarch64-sve2.md.
+     UNSPEC_CMUL		; Used in aarch64-sve2.md.
+     UNSPEC_CMUL_CONJ	; Used in aarch64-sve2.md.
      UNSPEC_COND_FCVTLT	; Used in aarch64-sve2.md.
      UNSPEC_COND_FCVTNT	; Used in aarch64-sve2.md.
      UNSPEC_COND_FCVTX	; Used in aarch64-sve2.md.
***************
*** 962,967 ****
--- 987,1002 ----
  			     (VNx4SI "32") (VNx2DI "64")
  			     (VNx8HF "16") (VNx4SF "32") (VNx2DF "64")])
  
+ ;; The number of bits in a vector container.
+ (define_mode_attr container_bits [(VNx16QI "8")
+ 				  (VNx8HI "16") (VNx8QI "16") (VNx8HF "16")
+ 				  (VNx8BF "16")
+ 				  (VNx4SI "32") (VNx4HI "32") (VNx4QI "32")
+ 				  (VNx4SF "32") (VNx4HF "32") (VNx4BF "32")
+ 				  (VNx2DI "64") (VNx2SI "64") (VNx2HI "64")
+ 				  (VNx2QI "64") (VNx2DF "64") (VNx2SF "64")
+ 				  (VNx2HF "64") (VNx2BF "64")])
+ 
  ;; Attribute to describe constants acceptable in logical operations
  (define_mode_attr lconst [(SI "K") (DI "L")])
  
***************
*** 1023,1029 ****
  			  (VNx16QI "b") (VNx8QI "b") (VNx4QI "b") (VNx2QI "b")
  			  (VNx8HI "h") (VNx4HI "h") (VNx2HI "h")
  			  (VNx8HF "h") (VNx4HF "h") (VNx2HF "h")
! 			  (VNx8BF "h")
  			  (VNx4SI "s") (VNx2SI "s")
  			  (VNx4SF "s") (VNx2SF "s")
  			  (VNx2DI "d")
--- 1058,1064 ----
  			  (VNx16QI "b") (VNx8QI "b") (VNx4QI "b") (VNx2QI "b")
  			  (VNx8HI "h") (VNx4HI "h") (VNx2HI "h")
  			  (VNx8HF "h") (VNx4HF "h") (VNx2HF "h")
! 			  (VNx8BF "h") (VNx4BF "h") (VNx2BF "h")
  			  (VNx4SI "s") (VNx2SI "s")
  			  (VNx4SF "s") (VNx2SF "s")
  			  (VNx2DI "d")
***************
*** 1041,1047 ****
  (define_mode_attr Vesize [(VNx16QI "b") (VNx8QI "b") (VNx4QI "b") (VNx2QI "b")
  			  (VNx8HI "h") (VNx4HI "h") (VNx2HI "h")
  			  (VNx8HF "h") (VNx4HF "h") (VNx2HF "h")
! 			  (VNx8BF "h")
  			  (VNx4SI "w") (VNx2SI "w")
  			  (VNx4SF "w") (VNx2SF "w")
  			  (VNx2DI "d")
--- 1076,1082 ----
  (define_mode_attr Vesize [(VNx16QI "b") (VNx8QI "b") (VNx4QI "b") (VNx2QI "b")
  			  (VNx8HI "h") (VNx4HI "h") (VNx2HI "h")
  			  (VNx8HF "h") (VNx4HF "h") (VNx2HF "h")
! 			  (VNx8BF "h") (VNx4BF "h") (VNx2BF "h")
  			  (VNx4SI "w") (VNx2SI "w")
  			  (VNx4SF "w") (VNx2SF "w")
  			  (VNx2DI "d")
***************
*** 1060,1071 ****
  (define_mode_attr Vctype [(VNx16QI "b") (VNx8QI "h") (VNx4QI "s") (VNx2QI "d")
  			  (VNx8HI "h") (VNx4HI "s") (VNx2HI "d")
  			  (VNx8HF "h") (VNx4HF "s") (VNx2HF "d")
! 			  (VNx8BF "h")
  			  (VNx4SI "s") (VNx2SI "d")
  			  (VNx4SF "s") (VNx2SF "d")
  			  (VNx2DI "d")
  			  (VNx2DF "d")])
  
  ;; Vetype is used everywhere in scheduling type and assembly output,
  ;; sometimes they are not the same, for example HF modes on some
  ;; instructions.  stype is defined to represent scheduling type
--- 1095,1117 ----
  (define_mode_attr Vctype [(VNx16QI "b") (VNx8QI "h") (VNx4QI "s") (VNx2QI "d")
  			  (VNx8HI "h") (VNx4HI "s") (VNx2HI "d")
  			  (VNx8HF "h") (VNx4HF "s") (VNx2HF "d")
! 			  (VNx8BF "h") (VNx4BF "s") (VNx2BF "d")
  			  (VNx4SI "s") (VNx2SI "d")
  			  (VNx4SF "s") (VNx2SF "d")
  			  (VNx2DI "d")
  			  (VNx2DF "d")])
  
+ ;; The instruction mnemonic suffix for an SVE mode's element container,
+ ;; i.e. the Vewtype of full SVE modes that have the same number of elements.
+ (define_mode_attr Vcwtype [(VNx16QI "b") (VNx8QI "h") (VNx4QI "w") (VNx2QI "d")
+ 			   (VNx8HI "h") (VNx4HI "w") (VNx2HI "d")
+ 			   (VNx8HF "h") (VNx4HF "w") (VNx2HF "d")
+ 			   (VNx8BF "h") (VNx4BF "w") (VNx2BF "d")
+ 			   (VNx4SI "w") (VNx2SI "d")
+ 			   (VNx4SF "w") (VNx2SF "d")
+ 			   (VNx2DI "d")
+ 			   (VNx2DF "d")])
+ 
  ;; Vetype is used everywhere in scheduling type and assembly output,
  ;; sometimes they are not the same, for example HF modes on some
  ;; instructions.  stype is defined to represent scheduling type
***************
*** 1101,1107 ****
  		       (VNx16QI "QI") (VNx8QI "QI") (VNx4QI "QI") (VNx2QI "QI")
  		       (VNx8HI "HI") (VNx4HI "HI") (VNx2HI "HI")
  		       (VNx8HF "HF") (VNx4HF "HF") (VNx2HF "HF")
! 		       (VNx8BF "BF")
  		       (VNx4SI "SI") (VNx2SI "SI")
  		       (VNx4SF "SF") (VNx2SF "SF")
  		       (VNx2DI "DI")
--- 1147,1153 ----
  		       (VNx16QI "QI") (VNx8QI "QI") (VNx4QI "QI") (VNx2QI "QI")
  		       (VNx8HI "HI") (VNx4HI "HI") (VNx2HI "HI")
  		       (VNx8HF "HF") (VNx4HF "HF") (VNx2HF "HF")
! 		       (VNx8BF "BF") (VNx4BF "BF") (VNx2BF "BF")
  		       (VNx4SI "SI") (VNx2SI "SI")
  		       (VNx4SF "SF") (VNx2SF "SF")
  		       (VNx2DI "DI")
***************
*** 1121,1127 ****
  		       (VNx16QI "qi") (VNx8QI "qi") (VNx4QI "qi") (VNx2QI "qi")
  		       (VNx8HI "hi") (VNx4HI "hi") (VNx2HI "hi")
  		       (VNx8HF "hf") (VNx4HF "hf") (VNx2HF "hf")
! 		       (VNx8BF "bf")
  		       (VNx4SI "si") (VNx2SI "si")
  		       (VNx4SF "sf") (VNx2SF "sf")
  		       (VNx2DI "di")
--- 1167,1173 ----
  		       (VNx16QI "qi") (VNx8QI "qi") (VNx4QI "qi") (VNx2QI "qi")
  		       (VNx8HI "hi") (VNx4HI "hi") (VNx2HI "hi")
  		       (VNx8HF "hf") (VNx4HF "hf") (VNx2HF "hf")
! 		       (VNx8BF "bf") (VNx4BF "bf") (VNx2BF "bf")
  		       (VNx4SI "si") (VNx2SI "si")
  		       (VNx4SF "sf") (VNx2SF "sf")
  		       (VNx2DI "di")
***************
*** 1257,1266 ****
  
  ;; Widened mode register suffixes for VD_BHSI/VQW/VQ_HSF.
  (define_mode_attr Vwtype [(V8QI "8h") (V4HI "4s")
! 			  (V2SI "2d") (V16QI "8h") 
  			  (V8HI "4s") (V4SI "2d")
  			  (V8HF "4s") (V4SF "2d")])
  
  ;; SVE vector after narrowing.
  (define_mode_attr Ventype [(VNx8HI "b")
  			   (VNx4SI "h") (VNx4SF "h")
--- 1303,1331 ----
  
  ;; Widened mode register suffixes for VD_BHSI/VQW/VQ_HSF.
  (define_mode_attr Vwtype [(V8QI "8h") (V4HI "4s")
! 			  (V2SI "2d") (V16QI "8h")
  			  (V8HI "4s") (V4SI "2d")
  			  (V8HF "4s") (V4SF "2d")])
  
+ ;; Widened scalar register suffixes.
+ (define_mode_attr Vwstype [(V8QI "h") (V4HI "s")
+ 			  (V2SI "") (V16QI "h")
+ 			  (V8HI "s") (V4SI "d")])
+ ;; Add a .1d for V2SI.
+ (define_mode_attr Vwsuf [(V8QI "") (V4HI "")
+ 			  (V2SI ".1d") (V16QI "")
+ 			  (V8HI "") (V4SI "")])
+ 
+ ;; Scalar mode of widened vector reduction.
+ (define_mode_attr VWIDE_S [(V8QI "HI") (V4HI "SI")
+ 			  (V2SI "DI") (V16QI "HI")
+ 			  (V8HI "SI") (V4SI "DI")])
+ 
+ ;; Widened mode with half the element register suffixes for VD_BHSI/VQW/VQ_HSF.
+ (define_mode_attr Vwhalf [(V8QI "4h") (V4HI "2s")
+ 			  (V2SI "1d") (V16QI "8h")
+ 			  (V8HI "4s") (V4SI "2d")])
+ 
  ;; SVE vector after narrowing.
  (define_mode_attr Ventype [(VNx8HI "b")
  			   (VNx4SI "h") (VNx4SF "h")
***************
*** 1274,1280 ****
  
  ;; Widened mode register suffixes for VDW/VQW.
  (define_mode_attr Vmwtype [(V8QI ".8h") (V4HI ".4s")
! 			   (V2SI ".2d") (V16QI ".8h") 
  			   (V8HI ".4s") (V4SI ".2d")
  			   (V4HF ".4s") (V2SF ".2d")
  			   (SI   "")    (HI   "")])
--- 1339,1345 ----
  
  ;; Widened mode register suffixes for VDW/VQW.
  (define_mode_attr Vmwtype [(V8QI ".8h") (V4HI ".4s")
! 			   (V2SI ".2d") (V16QI ".8h")
  			   (V8HI ".4s") (V4SI ".2d")
  			   (V4HF ".4s") (V2SF ".2d")
  			   (SI   "")    (HI   "")])
***************
*** 1304,1310 ****
  			  (VNx16QI "w") (VNx8QI "w") (VNx4QI "w") (VNx2QI "w")
  			  (VNx8HI "w") (VNx4HI "w") (VNx2HI "w")
  			  (VNx8HF "w") (VNx4HF "w") (VNx2HF "w")
! 			  (VNx8BF "w")
  			  (VNx4SI "w") (VNx2SI "w")
  			  (VNx4SF "w") (VNx2SF "w")
  			  (VNx2DI "x")
--- 1369,1375 ----
  			  (VNx16QI "w") (VNx8QI "w") (VNx4QI "w") (VNx2QI "w")
  			  (VNx8HI "w") (VNx4HI "w") (VNx2HI "w")
  			  (VNx8HF "w") (VNx4HF "w") (VNx2HF "w")
! 			  (VNx8BF "w") (VNx4BF "w") (VNx2BF "w")
  			  (VNx4SI "w") (VNx2SI "w")
  			  (VNx4SF "w") (VNx2SF "w")
  			  (VNx2DI "x")
***************
*** 1374,1379 ****
--- 1439,1446 ----
  				   (VNx2DI "VNx2DI")
  				   (VNx8HF "VNx8HI") (VNx4HF "VNx4SI")
  				   (VNx2HF "VNx2DI")
+ 				   (VNx8BF "VNx8HI") (VNx4BF "VNx4SI")
+ 				   (VNx2BF "VNx2DI")
  				   (VNx4SF "VNx4SI") (VNx2SF "VNx2DI")
  				   (VNx2DF "VNx2DI")])
  
***************
*** 1386,1391 ****
--- 1453,1460 ----
  				   (VNx2DI "vnx2di")
  				   (VNx8HF "vnx8hi") (VNx4HF "vnx4si")
  				   (VNx2HF "vnx2di")
+ 				   (VNx8BF "vnx8hi") (VNx4BF "vnx4si")
+ 				   (VNx2BF "vnx2di")
  				   (VNx4SF "vnx4si") (VNx2SF "vnx2di")
  				   (VNx2DF "vnx2di")])
  
***************
*** 1407,1412 ****
--- 1476,1484 ----
  			   (QI   "qi") (HI    "hi")
  			   (SI   "si")])
  
+ ;; Like ve_mode but for the half-width modes.
+ (define_mode_attr vn_mode [(V8HI  "qi") (V4SI  "hi") (V2DI  "si")])
+ 
  ;; Vm for lane instructions is restricted to FP_LO_REGS.
  (define_mode_attr vwx [(V4HI "x") (V8HI "x") (HI "x")
  		       (V2SI "w") (V4SI "w") (SI "w")])
***************
*** 1611,1617 ****
  			 (VNx4QI "VNx4BI") (VNx2QI "VNx2BI")
  			 (VNx8HI "VNx8BI") (VNx4HI "VNx4BI") (VNx2HI "VNx2BI")
  			 (VNx8HF "VNx8BI") (VNx4HF "VNx4BI") (VNx2HF "VNx2BI")
! 			 (VNx8BF "VNx8BI")
  			 (VNx4SI "VNx4BI") (VNx2SI "VNx2BI")
  			 (VNx4SF "VNx4BI") (VNx2SF "VNx2BI")
  			 (VNx2DI "VNx2BI")
--- 1683,1689 ----
  			 (VNx4QI "VNx4BI") (VNx2QI "VNx2BI")
  			 (VNx8HI "VNx8BI") (VNx4HI "VNx4BI") (VNx2HI "VNx2BI")
  			 (VNx8HF "VNx8BI") (VNx4HF "VNx4BI") (VNx2HF "VNx2BI")
! 			 (VNx8BF "VNx8BI") (VNx4BF "VNx4BI") (VNx2BF "VNx2BI")
  			 (VNx4SI "VNx4BI") (VNx2SI "VNx2BI")
  			 (VNx4SF "VNx4BI") (VNx2SF "VNx2BI")
  			 (VNx2DI "VNx2BI")
***************
*** 1637,1643 ****
  			 (VNx4QI "vnx4bi") (VNx2QI "vnx2bi")
  			 (VNx8HI "vnx8bi") (VNx4HI "vnx4bi") (VNx2HI "vnx2bi")
  			 (VNx8HF "vnx8bi") (VNx4HF "vnx4bi") (VNx2HF "vnx2bi")
! 			 (VNx8BF "vnx8bi")
  			 (VNx4SI "vnx4bi") (VNx2SI "vnx2bi")
  			 (VNx4SF "vnx4bi") (VNx2SF "vnx2bi")
  			 (VNx2DI "vnx2bi")
--- 1709,1715 ----
  			 (VNx4QI "vnx4bi") (VNx2QI "vnx2bi")
  			 (VNx8HI "vnx8bi") (VNx4HI "vnx4bi") (VNx2HI "vnx2bi")
  			 (VNx8HF "vnx8bi") (VNx4HF "vnx4bi") (VNx2HF "vnx2bi")
! 			 (VNx8BF "vnx8bi") (VNx4BF "vnx4bi") (VNx2BF "vnx2bi")
  			 (VNx4SI "vnx4bi") (VNx2SI "vnx2bi")
  			 (VNx4SF "vnx4bi") (VNx2SF "vnx2bi")
  			 (VNx2DI "vnx2bi")
***************
*** 1791,1796 ****
--- 1863,1871 ----
  ;; Unsigned comparison operators.
  (define_code_iterator FAC_COMPARISONS [lt le ge gt])
  
+ ;; Signed and unsigned saturating truncations.
+ (define_code_iterator SAT_TRUNC [ss_truncate us_truncate])
+ 
  ;; SVE integer unary operations.
  (define_code_iterator SVE_INT_UNARY [abs neg not clrsb clz popcount
  				     (ss_abs "TARGET_SVE2")
***************
*** 1929,1934 ****
--- 2004,2012 ----
  ;; Operation names for negate and bitwise complement.
  (define_code_attr neg_not_op [(neg "neg") (not "not")])
  
+ ;; csinv, csneg insn suffixes.
+ (define_code_attr neg_not_cs [(neg "neg") (not "inv")])
+ 
  ;; Similar, but when the second operand is inverted.
  (define_code_attr nlogical [(and "bic") (ior "orn") (xor "eon")])
  
***************
*** 1941,1947 ****
  		      (fix "s") (unsigned_fix "u")
  		      (div "s") (udiv "u")
  		      (smax "s") (umax "u")
! 		      (smin "s") (umin "u")])
  
  ;; "s" for signed ops, empty for unsigned ones.
  (define_code_attr s [(sign_extend "s") (zero_extend "")])
--- 2019,2026 ----
  		      (fix "s") (unsigned_fix "u")
  		      (div "s") (udiv "u")
  		      (smax "s") (umax "u")
! 		      (smin "s") (umin "u")
! 		      (ss_truncate "s") (us_truncate "u")])
  
  ;; "s" for signed ops, empty for unsigned ones.
  (define_code_attr s [(sign_extend "s") (zero_extend "")])
***************
*** 2109,2114 ****
--- 2188,2199 ----
  ;; The unspec codes for the SABAL, UABAL AdvancedSIMD instructions.
  (define_int_iterator ABAL [UNSPEC_SABAL UNSPEC_UABAL])
  
+ ;; The unspec codes for the SABDL, UABDL AdvancedSIMD instructions.
+ (define_int_iterator ABDL [UNSPEC_SABDL UNSPEC_UABDL])
+ 
+ ;; The unspec codes for the SABAL2, UABAL2 AdvancedSIMD instructions.
+ (define_int_iterator ABAL2 [UNSPEC_SABAL2 UNSPEC_UABAL2])
+ 
  ;; The unspec codes for the SABDL2, UABDL2 AdvancedSIMD instructions.
  (define_int_iterator ABDL2 [UNSPEC_SABDL2 UNSPEC_UABDL2])
  
***************
*** 2123,2128 ****
--- 2208,2215 ----
  
  (define_int_iterator SVE_INT_ADDV [UNSPEC_SADDV UNSPEC_UADDV])
  
+ (define_int_iterator USADDLV [UNSPEC_SADDLV UNSPEC_UADDLV])
+ 
  (define_int_iterator LOGICALF [UNSPEC_ANDF UNSPEC_IORF UNSPEC_XORF])
  
  (define_int_iterator HADDSUB [UNSPEC_SHADD UNSPEC_UHADD
***************
*** 2561,2566 ****
--- 2648,2671 ----
  				    UNSPEC_SQRDCMLAH180
  				    UNSPEC_SQRDCMLAH270])
  
+ ;; Unlike the normal CMLA instructions these represent the actual operation
+ ;; to be performed.  They will always need to be expanded into multiple
+ ;; sequences consisting of CMLA.
+ (define_int_iterator SVE2_INT_CMLA_OP [UNSPEC_CMLA
+ 				       UNSPEC_CMLA_CONJ
+ 				       UNSPEC_CMLA180
+ 				       UNSPEC_CMLA180_CONJ])
+ 
+ ;; Unlike the normal CMLA instructions these represent the actual operation
+ ;; to be performed.  They will always need to be expanded into multiple
+ ;; sequences consisting of CMLA.
+ (define_int_iterator SVE2_INT_CMUL_OP [UNSPEC_CMUL
+ 				       UNSPEC_CMUL_CONJ])
+ 
+ ;; Same as SVE2_INT_CADD but exclude the saturating instructions
+ (define_int_iterator SVE2_INT_CADD_OP [UNSPEC_CADD90
+ 				       UNSPEC_CADD270])
+ 
  (define_int_iterator SVE2_INT_CDOT [UNSPEC_CDOT
  				    UNSPEC_CDOT90
  				    UNSPEC_CDOT180
***************
*** 2671,2676 ****
--- 2776,2789 ----
  (define_int_iterator BF_MLA [UNSPEC_BFMLALB
  			     UNSPEC_BFMLALT])
  
+ (define_int_iterator FCMLA_OP [UNSPEC_FCMLA
+ 			       UNSPEC_FCMLA180
+ 			       UNSPEC_FCMLA_CONJ
+ 			       UNSPEC_FCMLA180_CONJ])
+ 
+ (define_int_iterator FCMUL_OP [UNSPEC_FCMUL
+ 			       UNSPEC_FCMUL_CONJ])
+ 
  ;; Iterators for atomic operations.
  
  (define_int_iterator ATOMIC_LDOP
***************
*** 2847,2852 ****
--- 2960,2967 ----
  ;; "s" for signed operations and "u" for unsigned ones.
  (define_int_attr su [(UNSPEC_SADDV "s")
  		     (UNSPEC_UADDV "u")
+ 		     (UNSPEC_SADDLV "s")
+ 		     (UNSPEC_UADDLV "u")
  		     (UNSPEC_UNPACKSHI "s")
  		     (UNSPEC_UNPACKUHI "u")
  		     (UNSPEC_UNPACKSLO "s")
***************
*** 2865,2870 ****
--- 2980,2987 ----
  		      (UNSPEC_SHSUB "s") (UNSPEC_UHSUB "u")
  		      (UNSPEC_ADDHN "") (UNSPEC_RADDHN "r")
  		      (UNSPEC_SABAL "s") (UNSPEC_UABAL "u")
+ 		      (UNSPEC_SABAL2 "s") (UNSPEC_UABAL2 "u")
+ 		      (UNSPEC_SABDL "s") (UNSPEC_UABDL "u")
  		      (UNSPEC_SABDL2 "s") (UNSPEC_UABDL2 "u")
  		      (UNSPEC_SADALP "s") (UNSPEC_UADALP "u")
  		      (UNSPEC_SUBHN "") (UNSPEC_RSUBHN "r")
***************
*** 3381,3387 ****
  		      (UNSPEC_COND_FCMLA "0")
  		      (UNSPEC_COND_FCMLA90 "90")
  		      (UNSPEC_COND_FCMLA180 "180")
! 		      (UNSPEC_COND_FCMLA270 "270")])
  
  (define_int_attr sve_fmla_op [(UNSPEC_COND_FMLA "fmla")
  			      (UNSPEC_COND_FMLS "fmls")
--- 3498,3577 ----
  		      (UNSPEC_COND_FCMLA "0")
  		      (UNSPEC_COND_FCMLA90 "90")
  		      (UNSPEC_COND_FCMLA180 "180")
! 		      (UNSPEC_COND_FCMLA270 "270")
! 		      (UNSPEC_FCMUL "0")
! 		      (UNSPEC_FCMUL_CONJ "180")])
! 
! ;; A conjucate is a negation of the imaginary component
! ;; The number in the unspecs are the rotation component of the instruction, e.g
! ;; FCMLA180 means use the instruction with #180.
! ;; The iterator is used to produce the right name mangling for the function.
! (define_int_attr conj_op [(UNSPEC_FCMLA180 "")
! 			  (UNSPEC_FCMLA180_CONJ "_conj")
! 			  (UNSPEC_FCMLA "")
! 			  (UNSPEC_FCMLA_CONJ "_conj")
! 			  (UNSPEC_FCMUL "")
! 			  (UNSPEC_FCMUL_CONJ "_conj")
! 			  (UNSPEC_CMLA "")
! 			  (UNSPEC_CMLA180 "")
! 			  (UNSPEC_CMLA180_CONJ "_conj")
! 			  (UNSPEC_CMLA_CONJ "_conj")
! 			  (UNSPEC_CMUL "")
! 			  (UNSPEC_CMUL_CONJ "_conj")])
! 
! ;; The complex operations when performed on a real complex number require two
! ;; instructions to perform the operation. e.g. complex multiplication requires
! ;; two FCMUL with a particular rotation value.
! ;;
! ;; These values can be looked up in rotsplit1 and rotsplit2.  as an example
! ;; FCMUL needs the first instruction to use #0 and the second #90.
! (define_int_attr rotsplit1 [(UNSPEC_FCMLA "0")
! 			    (UNSPEC_FCMLA_CONJ "0")
! 			    (UNSPEC_FCMUL "0")
! 			    (UNSPEC_FCMUL_CONJ "0")
! 			    (UNSPEC_FCMLA180 "180")
! 			    (UNSPEC_FCMLA180_CONJ "180")])
! 
! (define_int_attr rotsplit2 [(UNSPEC_FCMLA "90")
! 			    (UNSPEC_FCMLA_CONJ "270")
! 			    (UNSPEC_FCMUL "90")
! 			    (UNSPEC_FCMUL_CONJ "270")
! 			    (UNSPEC_FCMLA180 "270")
! 			    (UNSPEC_FCMLA180_CONJ "90")])
! 
! ;; SVE has slightly different namings from NEON so we have to split these
! ;; iterators.
! (define_int_attr sve_rot1 [(UNSPEC_FCMLA "")
! 			   (UNSPEC_FCMLA_CONJ "")
! 			   (UNSPEC_FCMUL "")
! 			   (UNSPEC_FCMUL_CONJ "")
! 			   (UNSPEC_FCMLA180 "180")
! 			   (UNSPEC_FCMLA180_CONJ "180")
! 			   (UNSPEC_CMLA "")
! 			   (UNSPEC_CMLA_CONJ "")
! 			   (UNSPEC_CMUL "")
! 			   (UNSPEC_CMUL_CONJ "")
! 			   (UNSPEC_CMLA180 "180")
! 			   (UNSPEC_CMLA180_CONJ "180")])
! 
! (define_int_attr sve_rot2 [(UNSPEC_FCMLA "90")
! 			   (UNSPEC_FCMLA_CONJ "270")
! 			   (UNSPEC_FCMUL "90")
! 			   (UNSPEC_FCMUL_CONJ "270")
! 			   (UNSPEC_FCMLA180 "270")
! 			   (UNSPEC_FCMLA180_CONJ "90")
! 			   (UNSPEC_CMLA "90")
! 			   (UNSPEC_CMLA_CONJ "270")
! 			   (UNSPEC_CMUL "90")
! 			   (UNSPEC_CMUL_CONJ "270")
! 			   (UNSPEC_CMLA180 "270")
! 			   (UNSPEC_CMLA180_CONJ "90")])
! 
! 
! (define_int_attr fcmac1 [(UNSPEC_FCMLA "a") (UNSPEC_FCMLA_CONJ "a")
! 			 (UNSPEC_FCMLA180 "s") (UNSPEC_FCMLA180_CONJ "s")
! 			 (UNSPEC_CMLA "a") (UNSPEC_CMLA_CONJ "a")
! 			 (UNSPEC_CMLA180 "s") (UNSPEC_CMLA180_CONJ "s")])
  
  (define_int_attr sve_fmla_op [(UNSPEC_COND_FMLA "fmla")
  			      (UNSPEC_COND_FMLS "fmls")
***************
*** 3447,3449 ****
--- 3637,3653 ----
  
  (define_int_attr unspec [(UNSPEC_WHILERW "UNSPEC_WHILERW")
  			 (UNSPEC_WHILEWR "UNSPEC_WHILEWR")])
+ 
+ ;; Iterators and attributes for fpcr fpsr getter setters
+ 
+ (define_int_iterator GET_FPSCR
+   [UNSPECV_GET_FPSR UNSPECV_GET_FPCR])
+ 
+ (define_int_iterator SET_FPSCR
+   [UNSPECV_SET_FPSR UNSPECV_SET_FPCR])
+ 
+ (define_int_attr fpscr_name
+   [(UNSPECV_GET_FPSR "fpsr")
+    (UNSPECV_SET_FPSR "fpsr")
+    (UNSPECV_GET_FPCR "fpcr")
+    (UNSPECV_SET_FPCR "fpcr")])
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/predicates.md gcc-11.1.0/gcc/config/aarch64/predicates.md
*** gcc-10.3.0/gcc/config/aarch64/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/predicates.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description for AArch64 architecture.
! ;; Copyright (C) 2009-2020 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AArch64 architecture.
! ;; Copyright (C) 2009-2021 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 18,23 ****
--- 18,25 ----
  ;; along with GCC; see the file COPYING3.  If not see
  ;; <http://www.gnu.org/licenses/>.
  
+ (include "../arm/common.md")
+ 
  (define_special_predicate "cc_register"
    (and (match_code "reg")
         (and (match_test "REGNO (op) == CC_REGNUM")
***************
*** 235,255 ****
    (and (match_code "const_int")
         (match_test "IN_RANGE (UINTVAL (op), 0, 0xffffff)")))
  
- (define_predicate "aarch64_pwr_imm3"
-   (and (match_code "const_int")
-        (match_test "INTVAL (op) != 0
- 		    && (unsigned) exact_log2 (INTVAL (op)) <= 4")))
- 
- (define_predicate "aarch64_pwr_2_si"
-   (and (match_code "const_int")
-        (match_test "INTVAL (op) != 0
- 		    && (unsigned) exact_log2 (INTVAL (op)) < 32")))
- 
- (define_predicate "aarch64_pwr_2_di"
-   (and (match_code "const_int")
-        (match_test "INTVAL (op) != 0
- 		    && (unsigned) exact_log2 (INTVAL (op)) < 64")))
- 
  (define_predicate "aarch64_mem_pair_offset"
    (and (match_code "const_int")
         (match_test "aarch64_offset_7bit_signed_scaled_p (mode, INTVAL (op))")))
--- 237,242 ----
***************
*** 558,563 ****
--- 545,566 ----
    (and (match_code "const_int")
         (match_test "IN_RANGE (INTVAL (op), 1, 64)")))
  
+ (define_predicate "aarch64_simd_shift_imm_vec_qi"
+   (and (match_code "const_vector")
+        (match_test "aarch64_const_vec_all_same_in_range_p (op, 1, 8)")))
+ 
+ (define_predicate "aarch64_simd_shift_imm_vec_hi"
+   (and (match_code "const_vector")
+        (match_test "aarch64_const_vec_all_same_in_range_p (op, 1, 16)")))
+ 
+ (define_predicate "aarch64_simd_shift_imm_vec_si"
+   (and (match_code "const_vector")
+        (match_test "aarch64_const_vec_all_same_in_range_p (op, 1, 32)")))
+ 
+ (define_predicate "aarch64_simd_shift_imm_vec_di"
+   (and (match_code "const_vector")
+        (match_test "aarch64_const_vec_all_same_in_range_p (op, 1, 64)")))
+ 
  (define_predicate "aarch64_simd_shift_imm_bitsize_qi"
    (and (match_code "const_int")
         (match_test "IN_RANGE (INTVAL (op), 0, 8)")))
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/rtems.h gcc-11.1.0/gcc/config/aarch64/rtems.h
*** gcc-10.3.0/gcc/config/aarch64/rtems.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/rtems.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for RTEMS based AARCH64 system.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for RTEMS based AARCH64 system.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/saphira.md gcc-11.1.0/gcc/config/aarch64/saphira.md
*** gcc-10.3.0/gcc/config/aarch64/saphira.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/saphira.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Saphira pipeline description
! ;; Copyright (C) 2017-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Saphira pipeline description
! ;; Copyright (C) 2017-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 224,230 ****
  
  (define_insn_reservation "saphira_alu_1_xyz" 1
    (and (eq_attr "tune" "saphira")
!        (eq_attr "type" "alus_sreg,alus_imm,alus_shift_imm,csel,adc_reg,alu_imm,alu_sreg,alu_shift_imm,alu_ext,alus_ext,logic_imm,logic_reg,logic_shift_imm,logics_imm,logics_reg,logics_shift_imm,mov_reg"))
    "saphira_xyzb")
  
  ;; SIMD Miscellaneous Instructions
--- 224,230 ----
  
  (define_insn_reservation "saphira_alu_1_xyz" 1
    (and (eq_attr "tune" "saphira")
!        (eq_attr "type" "alus_sreg,alus_imm,alus_shift_imm,csel,adc_reg,alu_imm,alu_sreg,alu_shift_imm_lsl_1to4,alu_shift_imm_other,alu_ext,alus_ext,logic_imm,logic_reg,logic_shift_imm,logics_imm,logics_reg,logics_shift_imm,mov_reg"))
    "saphira_xyzb")
  
  ;; SIMD Miscellaneous Instructions
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/t-aarch64 gcc-11.1.0/gcc/config/aarch64/t-aarch64
*** gcc-10.3.0/gcc/config/aarch64/t-aarch64	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/t-aarch64	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  # Machine description for AArch64 architecture.
! #  Copyright (C) 2009-2020 Free Software Foundation, Inc.
  #  Contributed by ARM Ltd.
  #
  #  This file is part of GCC.
--- 1,5 ----
  # Machine description for AArch64 architecture.
! #  Copyright (C) 2009-2021 Free Software Foundation, Inc.
  #  Contributed by ARM Ltd.
  #
  #  This file is part of GCC.
*************** aarch64-bti-insert.o: $(srcdir)/config/a
*** 158,163 ****
--- 158,169 ----
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
  		$(srcdir)/config/aarch64/aarch64-bti-insert.c
  
+ aarch64-cc-fusion.o: $(srcdir)/config/aarch64/aarch64-cc-fusion.cc \
+     $(CONFIG_H) $(SYSTEM_H) $(CORETYPES_H) $(BACKEND_H) $(RTL_H) $(DF_H) \
+     $(RTL_SSA_H) tree-pass.h
+ 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ 		$(srcdir)/config/aarch64/aarch64-cc-fusion.cc
+ 
  comma=,
  MULTILIB_OPTIONS    = $(subst $(comma),/, $(patsubst %, mabi=%, $(subst $(comma),$(comma)mabi=,$(TM_MULTILIB_CONFIG))))
  MULTILIB_DIRNAMES   = $(subst $(comma), ,$(TM_MULTILIB_CONFIG))
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/t-aarch64-freebsd gcc-11.1.0/gcc/config/aarch64/t-aarch64-freebsd
*** gcc-10.3.0/gcc/config/aarch64/t-aarch64-freebsd	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/t-aarch64-freebsd	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  # Machine description for AArch64 architecture.
! #  Copyright (C) 2016-2020 Free Software Foundation, Inc.
  #
  #  This file is part of GCC.
  #
--- 1,5 ----
  # Machine description for AArch64 architecture.
! #  Copyright (C) 2016-2021 Free Software Foundation, Inc.
  #
  #  This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/t-aarch64-linux gcc-11.1.0/gcc/config/aarch64/t-aarch64-linux
*** gcc-10.3.0/gcc/config/aarch64/t-aarch64-linux	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/t-aarch64-linux	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  # Machine description for AArch64 architecture.
! #  Copyright (C) 2009-2020 Free Software Foundation, Inc.
  #  Contributed by ARM Ltd.
  #
  #  This file is part of GCC.
--- 1,5 ----
  # Machine description for AArch64 architecture.
! #  Copyright (C) 2009-2021 Free Software Foundation, Inc.
  #  Contributed by ARM Ltd.
  #
  #  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/t-aarch64-netbsd gcc-11.1.0/gcc/config/aarch64/t-aarch64-netbsd
*** gcc-10.3.0/gcc/config/aarch64/t-aarch64-netbsd	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/t-aarch64-netbsd	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  # Machine description for AArch64 architecture.
! #  Copyright (C) 2016-2020 Free Software Foundation, Inc.
  #
  #  This file is part of GCC.
  #
--- 1,5 ----
  # Machine description for AArch64 architecture.
! #  Copyright (C) 2016-2021 Free Software Foundation, Inc.
  #
  #  This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/t-aarch64-vxworks gcc-11.1.0/gcc/config/aarch64/t-aarch64-vxworks
*** gcc-10.3.0/gcc/config/aarch64/t-aarch64-vxworks	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/t-aarch64-vxworks	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  # Multilibs for VxWorks.
  #
! # Copyright (C) 2018-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # Multilibs for VxWorks.
  #
! # Copyright (C) 2018-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/thunderx.md gcc-11.1.0/gcc/config/aarch64/thunderx.md
*** gcc-10.3.0/gcc/config/aarch64/thunderx.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/thunderx.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Cavium ThunderX pipeline description
! ;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
  ;;
  ;; Written by Andrew Pinski  <apinski@cavium.com>
  
--- 1,5 ----
  ;; Cavium ThunderX pipeline description
! ;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
  ;;
  ;; Written by Andrew Pinski  <apinski@cavium.com>
  
***************
*** 51,57 ****
  
  (define_insn_reservation "thunderx_arith_shift" 2
    (and (eq_attr "tune" "thunderx")
!        (eq_attr "type" "alu_ext,alu_shift_imm,alu_shift_reg,alus_ext,logic_shift_imm,logic_shift_reg,logics_shift_imm,logics_shift_reg,alus_shift_imm"))
    "thunderx_pipe0 | thunderx_pipe1")
  
  (define_insn_reservation "thunderx_csel" 2
--- 51,57 ----
  
  (define_insn_reservation "thunderx_arith_shift" 2
    (and (eq_attr "tune" "thunderx")
!        (eq_attr "type" "alu_ext,alu_shift_imm_lsl_1to4,alu_shift_imm_other,alu_shift_reg,alus_ext,logic_shift_imm,logic_shift_reg,logics_shift_imm,logics_shift_reg,alus_shift_imm"))
    "thunderx_pipe0 | thunderx_pipe1")
  
  (define_insn_reservation "thunderx_csel" 2
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/thunderx2t99.md gcc-11.1.0/gcc/config/aarch64/thunderx2t99.md
*** gcc-10.3.0/gcc/config/aarch64/thunderx2t99.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/thunderx2t99.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Cavium ThunderX 2 CN99xx pipeline description
! ;; Copyright (C) 2016-2020 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Cavium, Broadcom and Mentor Embedded.
  
--- 1,5 ----
  ;; Cavium ThunderX 2 CN99xx pipeline description
! ;; Copyright (C) 2016-2021 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Cavium, Broadcom and Mentor Embedded.
  
***************
*** 109,115 ****
  
  (define_insn_reservation "thunderx2t99_alu_shift" 2
    (and (eq_attr "tune" "thunderx2t99")
!        (eq_attr "type" "alu_shift_imm,alu_ext,\
  			alus_shift_imm,alus_ext,\
  			logic_shift_imm,logics_shift_imm"))
    "thunderx2t99_i012,thunderx2t99_i012")
--- 109,115 ----
  
  (define_insn_reservation "thunderx2t99_alu_shift" 2
    (and (eq_attr "tune" "thunderx2t99")
!        (eq_attr "type" "alu_shift_imm_lsl_1to4,alu_shift_imm_other,alu_ext,\
  			alus_shift_imm,alus_ext,\
  			logic_shift_imm,logics_shift_imm"))
    "thunderx2t99_i012,thunderx2t99_i012")
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/thunderx3t110.md gcc-11.1.0/gcc/config/aarch64/thunderx3t110.md
*** gcc-10.3.0/gcc/config/aarch64/thunderx3t110.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/thunderx3t110.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Cavium ThunderX 3 CN11xx pipeline description
! ;; Copyright (C) 2020 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Marvell
  
--- 1,5 ----
  ;; Cavium ThunderX 3 CN11xx pipeline description
! ;; Copyright (C) 2020-2021 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Marvell
  
***************
*** 126,139 ****
  ; is it actually 1,1/2,{i0,i1} vs 2,1/4,{i0,i1,i2,i3}
  (define_insn_reservation "thunderx3t110_alu_shift" 2
    (and (eq_attr "tune" "thunderx3t110")
!        (eq_attr "type" "alu_shift_imm,alu_ext,\
  			alus_shift_imm,alus_ext,\
  			logic_shift_imm,logics_shift_imm"))
    "thunderx3t110_i0123")
  
  (define_insn_reservation "thunderx3t110_alu_shift1" 1
    (and (eq_attr "tune" "thunderx3t110")
!        (eq_attr "type" "alu_shift_imm,alu_ext,\
  			alus_shift_imm,alus_ext,\
  			logic_shift_imm,logics_shift_imm"))
    "thunderx3t110_i01")
--- 126,139 ----
  ; is it actually 1,1/2,{i0,i1} vs 2,1/4,{i0,i1,i2,i3}
  (define_insn_reservation "thunderx3t110_alu_shift" 2
    (and (eq_attr "tune" "thunderx3t110")
!        (eq_attr "type" "alu_shift_imm_lsl_1to4,alu_shift_imm_other,alu_ext,\
  			alus_shift_imm,alus_ext,\
  			logic_shift_imm,logics_shift_imm"))
    "thunderx3t110_i0123")
  
  (define_insn_reservation "thunderx3t110_alu_shift1" 1
    (and (eq_attr "tune" "thunderx3t110")
!        (eq_attr "type" "alu_shift_imm_lsl_1to4,alu_shift_imm_other,alu_ext,\
  			alus_shift_imm,alus_ext,\
  			logic_shift_imm,logics_shift_imm"))
    "thunderx3t110_i01")
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/tsv110.md gcc-11.1.0/gcc/config/aarch64/tsv110.md
*** gcc-10.3.0/gcc/config/aarch64/tsv110.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/aarch64/tsv110.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; tsv110 pipeline description
! ;; Copyright (C) 2018-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; tsv110 pipeline description
! ;; Copyright (C) 2018-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 295,301 ****
  (define_insn_reservation "tsv110_alu_shift" 2
    (and (eq_attr "tune" "tsv110")
         (eq_attr "type" "extend,\
! 			alu_shift_imm,alu_shift_reg,\
  			crc,logic_shift_imm,logic_shift_reg,\
  			mov_shift,mvn_shift,\
  			mov_shift_reg,mvn_shift_reg"))
--- 295,301 ----
  (define_insn_reservation "tsv110_alu_shift" 2
    (and (eq_attr "tune" "tsv110")
         (eq_attr "type" "extend,\
! 			alu_shift_imm_lsl_1to4,alu_shift_imm_other,alu_shift_reg,\
  			crc,logic_shift_imm,logic_shift_reg,\
  			mov_shift,mvn_shift,\
  			mov_shift_reg,mvn_shift_reg"))
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/alpha-modes.def gcc-11.1.0/gcc/config/alpha/alpha-modes.def
*** gcc-10.3.0/gcc/config/alpha/alpha-modes.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/alpha-modes.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Alpha extra machine modes. 
!    Copyright (C) 2003-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Alpha extra machine modes. 
!    Copyright (C) 2003-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/alpha-passes.def gcc-11.1.0/gcc/config/alpha/alpha-passes.def
*** gcc-10.3.0/gcc/config/alpha/alpha-passes.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/alpha-passes.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Description of target passes for DEC Alpha
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Description of target passes for DEC Alpha
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/alpha-protos.h gcc-11.1.0/gcc/config/alpha/alpha-protos.h
*** gcc-10.3.0/gcc/config/alpha/alpha-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/alpha-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Prototypes for alpha.c functions used in the md file & elsewhere.
!    Copyright (C) 1999-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Prototypes for alpha.c functions used in the md file & elsewhere.
!    Copyright (C) 1999-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/alpha.c gcc-11.1.0/gcc/config/alpha/alpha.c
*** gcc-10.3.0/gcc/config/alpha/alpha.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/alpha.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines used for code generation on the DEC Alpha.
!    Copyright (C) 1992-2020 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
  This file is part of GCC.
--- 1,5 ----
  /* Subroutines used for code generation on the DEC Alpha.
!    Copyright (C) 1992-2021 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/alpha.h gcc-11.1.0/gcc/config/alpha/alpha.h
*** gcc-10.3.0/gcc/config/alpha/alpha.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/alpha.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for DEC Alpha.
!    Copyright (C) 1992-2020 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for DEC Alpha.
!    Copyright (C) 1992-2021 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/alpha.md gcc-11.1.0/gcc/config/alpha/alpha.md
*** gcc-10.3.0/gcc/config/alpha/alpha.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/alpha.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description for DEC Alpha for GNU C compiler
! ;; Copyright (C) 1992-2020 Free Software Foundation, Inc.
  ;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for DEC Alpha for GNU C compiler
! ;; Copyright (C) 1992-2021 Free Software Foundation, Inc.
  ;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/alpha.opt gcc-11.1.0/gcc/config/alpha/alpha.opt
*** gcc-10.3.0/gcc/config/alpha/alpha.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/alpha.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Options for the DEC Alpha port of the compiler
  ;
! ; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the DEC Alpha port of the compiler
  ;
! ; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
***************
*** 19,29 ****
  ; <http://www.gnu.org/licenses/>.
  
  msoft-float
! Target Report Mask(SOFT_FP)
  Do not use hardware fp.
  
  mfp-regs
! Target Report Mask(FPREGS)
  Use fp registers.
  
  mgas
--- 19,29 ----
  ; <http://www.gnu.org/licenses/>.
  
  msoft-float
! Target Mask(SOFT_FP)
  Do not use hardware fp.
  
  mfp-regs
! Target Mask(FPREGS)
  Use fp registers.
  
  mgas
*************** Target RejectNegative Mask(IEEE_CONFORMA
*** 35,104 ****
  Request IEEE-conformant math library routines (OSF/1).
  
  mieee
! Target Report RejectNegative Mask(IEEE)
  Emit IEEE-conformant code, without inexact exceptions.
  
  mieee-with-inexact
! Target Report RejectNegative Mask(IEEE_WITH_INEXACT)
  
  mbuild-constants
! Target Report Mask(BUILD_CONSTANTS)
  Do not emit complex integer constants to read-only memory.
  
  mfloat-vax
! Target Report RejectNegative Mask(FLOAT_VAX)
  Use VAX fp.
  
  mfloat-ieee
! Target Report RejectNegative InverseMask(FLOAT_VAX)
  Do not use VAX fp.
  
  mbwx
! Target Report Mask(BWX)
  Emit code for the byte/word ISA extension.
  
  mmax
! Target Report Mask(MAX)
  Emit code for the motion video ISA extension.
  
  mfix
! Target Report Mask(FIX)
  Emit code for the fp move and sqrt ISA extension.
  
  mcix
! Target Report Mask(CIX)
  Emit code for the counting ISA extension.
  
  mexplicit-relocs
! Target Report Mask(EXPLICIT_RELOCS)
  Emit code using explicit relocation directives.
  
  msmall-data
! Target Report RejectNegative Mask(SMALL_DATA)
  Emit 16-bit relocations to the small data areas.
  
  mlarge-data
! Target Report RejectNegative InverseMask(SMALL_DATA)
  Emit 32-bit relocations to the small data areas.
  
  msmall-text
! Target Report RejectNegative Mask(SMALL_TEXT)
  Emit direct branches to local functions.
  
  mlarge-text
! Target Report RejectNegative InverseMask(SMALL_TEXT)
  Emit indirect branches to local functions.
  
  mtls-kernel
! Target Report Mask(TLS_KERNEL)
  Emit rdval instead of rduniq for thread pointer.
  
  mlong-double-128
! Target Report RejectNegative Mask(LONG_DOUBLE_128)
  Use 128-bit long double.
  
  mlong-double-64
! Target Report RejectNegative InverseMask(LONG_DOUBLE_128)
  Use 64-bit long double.
  
  mcpu=
--- 35,104 ----
  Request IEEE-conformant math library routines (OSF/1).
  
  mieee
! Target RejectNegative Mask(IEEE)
  Emit IEEE-conformant code, without inexact exceptions.
  
  mieee-with-inexact
! Target RejectNegative Mask(IEEE_WITH_INEXACT)
  
  mbuild-constants
! Target Mask(BUILD_CONSTANTS)
  Do not emit complex integer constants to read-only memory.
  
  mfloat-vax
! Target RejectNegative Mask(FLOAT_VAX)
  Use VAX fp.
  
  mfloat-ieee
! Target RejectNegative InverseMask(FLOAT_VAX)
  Do not use VAX fp.
  
  mbwx
! Target Mask(BWX)
  Emit code for the byte/word ISA extension.
  
  mmax
! Target Mask(MAX)
  Emit code for the motion video ISA extension.
  
  mfix
! Target Mask(FIX)
  Emit code for the fp move and sqrt ISA extension.
  
  mcix
! Target Mask(CIX)
  Emit code for the counting ISA extension.
  
  mexplicit-relocs
! Target Mask(EXPLICIT_RELOCS)
  Emit code using explicit relocation directives.
  
  msmall-data
! Target RejectNegative Mask(SMALL_DATA)
  Emit 16-bit relocations to the small data areas.
  
  mlarge-data
! Target RejectNegative InverseMask(SMALL_DATA)
  Emit 32-bit relocations to the small data areas.
  
  msmall-text
! Target RejectNegative Mask(SMALL_TEXT)
  Emit direct branches to local functions.
  
  mlarge-text
! Target RejectNegative InverseMask(SMALL_TEXT)
  Emit indirect branches to local functions.
  
  mtls-kernel
! Target Mask(TLS_KERNEL)
  Emit rdval instead of rduniq for thread pointer.
  
  mlong-double-128
! Target RejectNegative Mask(LONG_DOUBLE_128)
  Use 128-bit long double.
  
  mlong-double-64
! Target RejectNegative InverseMask(LONG_DOUBLE_128)
  Use 64-bit long double.
  
  mcpu=
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/constraints.md gcc-11.1.0/gcc/config/alpha/constraints.md
*** gcc-10.3.0/gcc/config/alpha/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Constraint definitions for DEC Alpha.
! ;; Copyright (C) 2007-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for DEC Alpha.
! ;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/driver-alpha.c gcc-11.1.0/gcc/config/alpha/driver-alpha.c
*** gcc-10.3.0/gcc/config/alpha/driver-alpha.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/driver-alpha.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
     Contributed by Arthur Loiret <aloiret@debian.org>
  
  This file is part of GCC.
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
     Contributed by Arthur Loiret <aloiret@debian.org>
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/elf.h gcc-11.1.0/gcc/config/alpha/elf.h
*** gcc-10.3.0/gcc/config/alpha/elf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/elf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for DEC Alpha w/ELF.
!    Copyright (C) 1996-2020 Free Software Foundation, Inc.
     Contributed by Richard Henderson (rth@tamu.edu).
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for DEC Alpha w/ELF.
!    Copyright (C) 1996-2021 Free Software Foundation, Inc.
     Contributed by Richard Henderson (rth@tamu.edu).
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/elf.opt gcc-11.1.0/gcc/config/alpha/elf.opt
*** gcc-10.3.0/gcc/config/alpha/elf.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/elf.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Alpha ELF options.
  
! ; Copyright (C) 2011-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Alpha ELF options.
  
! ; Copyright (C) 2011-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/ev4.md gcc-11.1.0/gcc/config/alpha/ev4.md
*** gcc-10.3.0/gcc/config/alpha/ev4.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/ev4.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Scheduling description for Alpha EV4.
! ;;   Copyright (C) 2002-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for Alpha EV4.
! ;;   Copyright (C) 2002-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/ev5.md gcc-11.1.0/gcc/config/alpha/ev5.md
*** gcc-10.3.0/gcc/config/alpha/ev5.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/ev5.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Scheduling description for Alpha EV5.
! ;;   Copyright (C) 2002-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for Alpha EV5.
! ;;   Copyright (C) 2002-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/ev6.md gcc-11.1.0/gcc/config/alpha/ev6.md
*** gcc-10.3.0/gcc/config/alpha/ev6.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/ev6.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Scheduling description for Alpha EV6.
! ;;   Copyright (C) 2002-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for Alpha EV6.
! ;;   Copyright (C) 2002-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/linux-elf.h gcc-11.1.0/gcc/config/alpha/linux-elf.h
*** gcc-10.3.0/gcc/config/alpha/linux-elf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/linux-elf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler
     for Alpha Linux-based GNU systems using ELF.
!    Copyright (C) 1996-2020 Free Software Foundation, Inc.
     Contributed by Richard Henderson.
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler
     for Alpha Linux-based GNU systems using ELF.
!    Copyright (C) 1996-2021 Free Software Foundation, Inc.
     Contributed by Richard Henderson.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/linux.h gcc-11.1.0/gcc/config/alpha/linux.h
*** gcc-10.3.0/gcc/config/alpha/linux.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/linux.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler,
     for Alpha Linux-based GNU systems.
!    Copyright (C) 1996-2020 Free Software Foundation, Inc.
     Contributed by Richard Henderson.
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler,
     for Alpha Linux-based GNU systems.
!    Copyright (C) 1996-2021 Free Software Foundation, Inc.
     Contributed by Richard Henderson.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/netbsd.h gcc-11.1.0/gcc/config/alpha/netbsd.h
*** gcc-10.3.0/gcc/config/alpha/netbsd.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/netbsd.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler,
     for Alpha NetBSD systems.
!    Copyright (C) 1998-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler,
     for Alpha NetBSD systems.
!    Copyright (C) 1998-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/openbsd.h gcc-11.1.0/gcc/config/alpha/openbsd.h
*** gcc-10.3.0/gcc/config/alpha/openbsd.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/openbsd.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Configuration file for an alpha OpenBSD target.
!    Copyright (C) 1999-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Configuration file for an alpha OpenBSD target.
!    Copyright (C) 1999-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/predicates.md gcc-11.1.0/gcc/config/alpha/predicates.md
*** gcc-10.3.0/gcc/config/alpha/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/predicates.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Predicate definitions for DEC Alpha.
! ;; Copyright (C) 2004-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for DEC Alpha.
! ;; Copyright (C) 2004-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/sync.md gcc-11.1.0/gcc/config/alpha/sync.md
*** gcc-10.3.0/gcc/config/alpha/sync.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/sync.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; GCC machine description for Alpha synchronization instructions.
! ;; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; GCC machine description for Alpha synchronization instructions.
! ;; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/t-alpha gcc-11.1.0/gcc/config/alpha/t-alpha
*** gcc-10.3.0/gcc/config/alpha/t-alpha	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/t-alpha	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2016-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2016-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/t-vms gcc-11.1.0/gcc/config/alpha/t-vms
*** gcc-10.3.0/gcc/config/alpha/t-vms	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/t-vms	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 1996-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 1996-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/vms.h gcc-11.1.0/gcc/config/alpha/vms.h
*** gcc-10.3.0/gcc/config/alpha/vms.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/alpha/vms.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Output variables, constants and external declarations, for GNU compiler.
!    Copyright (C) 1996-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Output variables, constants and external declarations, for GNU compiler.
!    Copyright (C) 1996-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc-arch.h gcc-11.1.0/gcc/config/arc/arc-arch.h
*** gcc-10.3.0/gcc/config/arc/arc-arch.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc-arch.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Definitions of types that are used to store ARC architecture and
     device information.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Claudiu Zissulescu (claziss@synopsys.com)
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of types that are used to store ARC architecture and
     device information.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Claudiu Zissulescu (claziss@synopsys.com)
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc-arches.def gcc-11.1.0/gcc/config/arc/arc-arches.def
*** gcc-10.3.0/gcc/config/arc/arc-arches.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc-arches.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ARC ARCH architectures.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ARC ARCH architectures.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc-c.c gcc-11.1.0/gcc/config/arc/arc-c.c
*** gcc-10.3.0/gcc/config/arc/arc-c.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc-c.c	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc-c.def gcc-11.1.0/gcc/config/arc/arc-c.def
*** gcc-10.3.0/gcc/config/arc/arc-c.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc-c.def	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc-cpus.def gcc-11.1.0/gcc/config/arc/arc-cpus.def
*** gcc-10.3.0/gcc/config/arc/arc-cpus.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc-cpus.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ARC CPU architectures.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ARC CPU architectures.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc-modes.def gcc-11.1.0/gcc/config/arc/arc-modes.def
*** gcc-10.3.0/gcc/config/arc/arc-modes.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc-modes.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu.
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
     Contributor: Joern Rennecke <joern.rennecke@embecosm.com>
  		on behalf of Synopsys Inc.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu.
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
     Contributor: Joern Rennecke <joern.rennecke@embecosm.com>
  		on behalf of Synopsys Inc.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc-options.def gcc-11.1.0/gcc/config/arc/arc-options.def
*** gcc-10.3.0/gcc/config/arc/arc-options.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc-options.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ARC options.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ARC options.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc-opts.h gcc-11.1.0/gcc/config/arc/arc-opts.h
*** gcc-10.3.0/gcc/config/arc/arc-opts.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc-opts.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* GCC option-handling definitions for the Synopsys DesignWare ARC architecture.
  
!    Copyright (C) 2007-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* GCC option-handling definitions for the Synopsys DesignWare ARC architecture.
  
!    Copyright (C) 2007-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc-passes.def gcc-11.1.0/gcc/config/arc/arc-passes.def
*** gcc-10.3.0/gcc/config/arc/arc-passes.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc-passes.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Description of target passes for ARC.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc. */
  
  /* This file is part of GCC.
  
--- 1,5 ----
  /* Description of target passes for ARC.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc. */
  
  /* This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc-protos.h gcc-11.1.0/gcc/config/arc/arc-protos.h
*** gcc-10.3.0/gcc/config/arc/arc-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu.
!    Copyright (C) 2000-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu.
!    Copyright (C) 2000-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc-simd.h gcc-11.1.0/gcc/config/arc/arc-simd.h
*** gcc-10.3.0/gcc/config/arc/arc-simd.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc-simd.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Synopsys DesignWare ARC SIMD include file.
!    Copyright (C) 2007-2020 Free Software Foundation, Inc.
     Written by Saurabh Verma (saurabh.verma@celunite.com) on behalf os Synopsys
     Inc.
  
--- 1,5 ----
  /* Synopsys DesignWare ARC SIMD include file.
!    Copyright (C) 2007-2021 Free Software Foundation, Inc.
     Written by Saurabh Verma (saurabh.verma@celunite.com) on behalf os Synopsys
     Inc.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc-tables.opt gcc-11.1.0/gcc/config/arc/arc-tables.opt
*** gcc-10.3.0/gcc/config/arc/arc-tables.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc-tables.opt	Tue Apr 27 10:00:13 2021
***************
*** 2,8 ****
  ; Generated by    : ./gcc/config/arc/genoptions.awk
  ; Generated from  : ./gcc/config/arc/arc-cpu.def
  ;
! ; Copyright (C) 2016-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 2,8 ----
  ; Generated by    : ./gcc/config/arc/genoptions.awk
  ; Generated from  : ./gcc/config/arc/arc-cpu.def
  ;
! ; Copyright (C) 2016-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc.c gcc-11.1.0/gcc/config/arc/arc.c
*** gcc-10.3.0/gcc/config/arc/arc.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines used for code generation on the Synopsys DesignWare ARC cpu.
!    Copyright (C) 1994-2020 Free Software Foundation, Inc.
  
     Sources derived from work done by Sankhya Technologies (www.sankhya.com) on
     behalf of Synopsys Inc.
--- 1,5 ----
  /* Subroutines used for code generation on the Synopsys DesignWare ARC cpu.
!    Copyright (C) 1994-2021 Free Software Foundation, Inc.
  
     Sources derived from work done by Sankhya Technologies (www.sankhya.com) on
     behalf of Synopsys Inc.
*************** arc_secondary_reload (bool in_p,
*** 901,907 ****
  
  	  /* It is a pseudo that ends in a stack location.  This
  	     procedure only works with the old reload step.  */
! 	  if (reg_equiv_mem (REGNO (x)) && !lra_in_progress)
  	    {
  	      /* Get the equivalent address and check the range of the
  		 offset.  */
--- 901,907 ----
  
  	  /* It is a pseudo that ends in a stack location.  This
  	     procedure only works with the old reload step.  */
! 	  if (!lra_in_progress && reg_equiv_mem (REGNO (x)))
  	    {
  	      /* Get the equivalent address and check the range of the
  		 offset.  */
*************** arc_initialize_trampoline (rtx tramp, tr
*** 4418,4427 ****
  		   GEN_INT (TRAMPOLINE_SIZE), BLOCK_OP_NORMAL);
    emit_move_insn (adjust_address (tramp, SImode, 8), fnaddr);
    emit_move_insn (adjust_address (tramp, SImode, 12), cxt);
!   emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__clear_cache"),
! 		     LCT_NORMAL, VOIDmode, XEXP (tramp, 0), Pmode,
! 		     plus_constant (Pmode, XEXP (tramp, 0), TRAMPOLINE_SIZE),
! 		     Pmode);
  }
  
  /* Add the given function declaration to emit code in JLI section.  */
--- 4418,4427 ----
  		   GEN_INT (TRAMPOLINE_SIZE), BLOCK_OP_NORMAL);
    emit_move_insn (adjust_address (tramp, SImode, 8), fnaddr);
    emit_move_insn (adjust_address (tramp, SImode, 12), cxt);
!   maybe_emit_call_builtin___clear_cache (XEXP (tramp, 0),
! 					 plus_constant (Pmode,
! 							XEXP (tramp, 0),
! 							TRAMPOLINE_SIZE));
  }
  
  /* Add the given function declaration to emit code in JLI section.  */
*************** arc_invalid_within_doloop (const rtx_ins
*** 7663,7673 ****
  static rtx_insn *
  arc_active_insn (rtx_insn *insn)
  {
!   rtx_insn *nxt = next_active_insn (insn);
! 
!   if (nxt && GET_CODE (PATTERN (nxt)) == ASM_INPUT)
!     nxt = next_active_insn (nxt);
!   return nxt;
  }
  
  /* Search for a sequence made out of two stores and a given number of
--- 7663,7680 ----
  static rtx_insn *
  arc_active_insn (rtx_insn *insn)
  {
!   while (insn)
!     {
!       insn = NEXT_INSN (insn);
!       if (insn == 0
! 	  || (active_insn_p (insn)
! 	      && NONDEBUG_INSN_P (insn)
! 	      && !NOTE_P (insn)
! 	      && GET_CODE (PATTERN (insn)) != UNSPEC_VOLATILE
! 	      && GET_CODE (PATTERN (insn)) != PARALLEL))
! 	break;
!     }
!   return insn;
  }
  
  /* Search for a sequence made out of two stores and a given number of
*************** check_store_cacheline_hazard (void)
*** 7686,7696 ****
        if (!succ0)
  	return;
  
!       if (!single_set (insn) || !single_set (succ0))
  	continue;
  
!       if ((get_attr_type (insn) != TYPE_STORE)
! 	  || (get_attr_type (succ0) != TYPE_STORE))
  	continue;
  
        /* Found at least two consecutive stores.  Goto the end of the
--- 7693,7702 ----
        if (!succ0)
  	return;
  
!       if (!single_set (insn))
  	continue;
  
!       if ((get_attr_type (insn) != TYPE_STORE))
  	continue;
  
        /* Found at least two consecutive stores.  Goto the end of the
*************** check_store_cacheline_hazard (void)
*** 7699,7704 ****
--- 7705,7713 ----
  	if (!single_set (insn1) || get_attr_type (insn1) != TYPE_STORE)
  	  break;
  
+       /* Save were we are.  */
+       succ0 = insn1;
+ 
        /* Now, check the next two instructions for the following cases:
           1. next instruction is a LD => insert 2 nops between store
  	    sequence and load.
*************** check_store_cacheline_hazard (void)
*** 7730,7738 ****
  	    }
  	}
  
-       insn = insn1;
        if (found)
! 	found = false;
      }
  }
  
--- 7739,7751 ----
  	    }
  	}
  
        if (found)
! 	{
! 	  insn = insn1;
! 	  found = false;
! 	}
!       else
! 	insn = succ0;
      }
  }
  
*************** static void
*** 7807,7813 ****
  workaround_arc_anomaly (void)
  {
    rtx_insn *insn, *succ0;
-   rtx_insn *succ1;
  
    /* For any architecture: call arc_hazard here.  */
    for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
--- 7820,7825 ----
*************** workaround_arc_anomaly (void)
*** 7826,7849 ****
       nops between any sequence of stores and a load.  */
    if (arc_tune != ARC_TUNE_ARC7XX)
      check_store_cacheline_hazard ();
- 
-   for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
-     {
-       succ0 = next_real_insn (insn);
-       if (arc_store_addr_hazard_internal_p (insn, succ0))
- 	{
- 	  emit_insn_after (gen_nopv (), insn);
- 	  emit_insn_after (gen_nopv (), insn);
- 	  continue;
- 	}
- 
-       /* Avoid adding nops if the instruction between the ST and LD is
- 	 a call or jump.  */
-       succ1 = next_real_insn (succ0);
-       if (succ0 && !JUMP_P (succ0) && !CALL_P (succ0)
- 	  && arc_store_addr_hazard_internal_p (insn, succ1))
- 	emit_insn_after (gen_nopv (), insn);
-     }
  }
  
  /* A callback for the hw-doloop pass.  Called when a loop we have discovered
--- 7838,7843 ----
*************** arc_reorg (void)
*** 8589,8594 ****
--- 8583,8589 ----
  		  if (!brcc_nolimm_operator (op, VOIDmode)
  		      && !long_immediate_operand (op1, VOIDmode)
  		      && (TARGET_ARC700
+ 			  || (TARGET_V2 && optimize_size)
  			  || next_active_insn (link_insn) != insn))
  		    continue;
  
*************** prepare_move_operands (rtx *operands, ma
*** 9239,9251 ****
  	}
        if (arc_is_uncached_mem_p (operands[1]))
  	{
  	  if (MEM_P (operands[0]))
! 	    operands[0] = force_reg (mode, operands[0]);
  	  emit_insn (gen_rtx_SET
! 		     (operands[0],
  		      gen_rtx_UNSPEC_VOLATILE
  		      (mode, gen_rtvec (1, operands[1]),
  		       VUNSPEC_ARC_LDDI)));
  	  return true;
  	}
      }
--- 9234,9254 ----
  	}
        if (arc_is_uncached_mem_p (operands[1]))
  	{
+ 	  rtx tmp = operands[0];
+ 
  	  if (MEM_P (operands[0]))
! 	    tmp = gen_reg_rtx (mode);
! 
  	  emit_insn (gen_rtx_SET
! 		     (tmp,
  		      gen_rtx_UNSPEC_VOLATILE
  		      (mode, gen_rtvec (1, operands[1]),
  		       VUNSPEC_ARC_LDDI)));
+ 	  if (MEM_P (operands[0]))
+ 	    {
+ 	      operands[1] = tmp;
+ 	      return false;
+ 	    }
  	  return true;
  	}
      }
*************** arc_split_move (rtx *operands)
*** 10155,10160 ****
--- 10158,10171 ----
      }
  
    if (TARGET_PLUS_QMACW
+       && even_register_operand (operands[0], mode)
+       && even_register_operand (operands[1], mode))
+     {
+       emit_move_insn (operands[0], operands[1]);
+       return;
+     }
+ 
+   if (TARGET_PLUS_QMACW
        && GET_CODE (operands[1]) == CONST_VECTOR)
      {
        HOST_WIDE_INT intval0, intval1;
*************** arc_regno_use_in (unsigned int regno, rt
*** 10274,10296 ****
    return NULL_RTX;
  }
  
- /* Return the integer value of the "type" attribute for INSN, or -1 if
-    INSN can't have attributes.  */
- 
- static int
- arc_attr_type (rtx_insn *insn)
- {
-   if (NONJUMP_INSN_P (insn)
-       ? (GET_CODE (PATTERN (insn)) == USE
- 	 || GET_CODE (PATTERN (insn)) == CLOBBER)
-       : JUMP_P (insn)
-       ? (GET_CODE (PATTERN (insn)) == ADDR_VEC
- 	 || GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC)
-       : !CALL_P (insn))
-     return -1;
-   return get_attr_type (insn);
- }
- 
  /* Code has a minimum p2 alignment of 1, which we must restore after
     an ADDR_DIFF_VEC.  */
  
--- 10285,10290 ----
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc.h gcc-11.1.0/gcc/config/arc/arc.h
*** gcc-10.3.0/gcc/config/arc/arc.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu.
!    Copyright (C) 1994-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu.
!    Copyright (C) 1994-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern enum reg_class arc_regno_reg_clas
*** 588,594 ****
     || ((REGNO) == ARG_POINTER_REGNUM)					\
     || ((REGNO) == FRAME_POINTER_REGNUM)					\
     || ((REGNO) == PCL_REG)						\
!    || ((unsigned) reg_renumber[REGNO] < 29)				\
     || ((unsigned) (REGNO) == (unsigned) arc_tp_regno)			\
     || (fixed_regs[REGNO] == 0 && IN_RANGE (REGNO, 32, 59))		\
     || (fixed_regs[REGNO] == 0 && (REGNO) == R30_REG))
--- 588,594 ----
     || ((REGNO) == ARG_POINTER_REGNUM)					\
     || ((REGNO) == FRAME_POINTER_REGNUM)					\
     || ((REGNO) == PCL_REG)						\
!    || (reg_renumber && ((unsigned) reg_renumber[REGNO] < 29))		\
     || ((unsigned) (REGNO) == (unsigned) arc_tp_regno)			\
     || (fixed_regs[REGNO] == 0 && IN_RANGE (REGNO, 32, 59))		\
     || (fixed_regs[REGNO] == 0 && (REGNO) == R30_REG))
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc.md gcc-11.1.0/gcc/config/arc/arc.md
*** gcc-10.3.0/gcc/config/arc/arc.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description of the Synopsys DesignWare ARC cpu for GNU C compiler
! ;; Copyright (C) 1994-2020 Free Software Foundation, Inc.
  
  ;; Sources derived from work done by Sankhya Technologies (www.sankhya.com) on
  ;; behalf of Synopsys Inc.
--- 1,5 ----
  ;; Machine description of the Synopsys DesignWare ARC cpu for GNU C compiler
! ;; Copyright (C) 1994-2021 Free Software Foundation, Inc.
  
  ;; Sources derived from work done by Sankhya Technologies (www.sankhya.com) on
  ;; behalf of Synopsys Inc.
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 1324,1331 ****
    ")
  
  (define_insn_and_split "*movdi_insn"
!   [(set (match_operand:DI 0 "move_dest_operand"      "=w, w,r,   m")
! 	(match_operand:DI 1 "move_double_src_operand" "c,Hi,m,cCm3"))]
    "register_operand (operands[0], DImode)
     || register_operand (operands[1], DImode)
     || (satisfies_constraint_Cm3 (operands[1])
--- 1324,1331 ----
    ")
  
  (define_insn_and_split "*movdi_insn"
!   [(set (match_operand:DI 0 "move_dest_operand"      "=r, r,r,   m")
! 	(match_operand:DI 1 "move_double_src_operand" "r,Hi,m,rCm3"))]
    "register_operand (operands[0], DImode)
     || register_operand (operands[1], DImode)
     || (satisfies_constraint_Cm3 (operands[1])
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 1337,1342 ****
--- 1337,1349 ----
      default:
        return \"#\";
  
+     case 0:
+     if (TARGET_PLUS_QMACW
+ 	&& even_register_operand (operands[0], DImode)
+ 	&& even_register_operand (operands[1], DImode))
+       return \"vadd2%?\\t%0,%1,0\";
+     return \"#\";
+ 
      case 2:
      if (TARGET_LL64
          && memory_operand (operands[1], DImode)
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 1353,1359 ****
      return \"#\";
      }
  }"
!   "reload_completed"
    [(const_int 0)]
    {
     arc_split_move (operands);
--- 1360,1366 ----
      return \"#\";
      }
  }"
!   "&& reload_completed"
    [(const_int 0)]
    {
     arc_split_move (operands);
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 1399,1413 ****
    "if (prepare_move_operands (operands, DFmode)) DONE;")
  
  (define_insn_and_split "*movdf_insn"
!   [(set (match_operand:DF 0 "move_dest_operand"      "=D,r,c,c,r,m")
! 	(match_operand:DF 1 "move_double_src_operand" "r,D,c,E,m,c"))]
!   "register_operand (operands[0], DFmode) || register_operand (operands[1], DFmode)"
    "*
  {
   switch (which_alternative)
     {
      default:
        return \"#\";
      case 4:
      if (TARGET_LL64
  	&& ((even_register_operand (operands[0], DFmode)
--- 1406,1429 ----
    "if (prepare_move_operands (operands, DFmode)) DONE;")
  
  (define_insn_and_split "*movdf_insn"
!   [(set (match_operand:DF 0 "move_dest_operand"      "=D,r,r,r,r,m")
! 	(match_operand:DF 1 "move_double_src_operand" "r,D,r,E,m,r"))]
!   "register_operand (operands[0], DFmode)
!    || register_operand (operands[1], DFmode)"
    "*
  {
   switch (which_alternative)
     {
      default:
        return \"#\";
+ 
+     case 2:
+     if (TARGET_PLUS_QMACW
+ 	&& even_register_operand (operands[0], DFmode)
+ 	&& even_register_operand (operands[1], DFmode))
+       return \"vadd2%?\\t%0,%1,0\";
+     return \"#\";
+ 
      case 4:
      if (TARGET_LL64
  	&& ((even_register_operand (operands[0], DFmode)
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 1434,1440 ****
     DONE;
    }
    [(set_attr "type" "move,move,move,move,load,store")
!    (set_attr "predicable" "no,no,yes,yes,no,no")
     ;; ??? The ld/st values could be 16 if it's [reg,bignum].
     (set_attr "length" "4,16,8,16,16,16")])
  
--- 1450,1456 ----
     DONE;
    }
    [(set_attr "type" "move,move,move,move,load,store")
!    (set_attr "predicable" "no,no,no,yes,no,no")
     ;; ??? The ld/st values could be 16 if it's [reg,bignum].
     (set_attr "length" "4,16,8,16,16,16")])
  
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 6091,6096 ****
--- 6107,6155 ----
    [(set_attr "length" "0")])
  
  ;; MAC and DMPY instructions
+ 
+ ; Use MAC instruction to emulate 16bit mac.
+ (define_expand "maddhisi4"
+   [(match_operand:SI 0 "register_operand" "")
+    (match_operand:HI 1 "register_operand" "")
+    (match_operand:HI 2 "extend_operand"   "")
+    (match_operand:SI 3 "register_operand" "")]
+   "TARGET_PLUS_DMPY"
+   "{
+    rtx acc_reg = gen_rtx_REG (DImode, ACC_REG_FIRST);
+    rtx tmp1 = gen_reg_rtx (SImode);
+    rtx tmp2 = gen_reg_rtx (SImode);
+    rtx accl = gen_lowpart (SImode, acc_reg);
+ 
+    emit_move_insn (accl, operands[3]);
+    emit_insn (gen_rtx_SET (tmp1, gen_rtx_SIGN_EXTEND (SImode, operands[1])));
+    emit_insn (gen_rtx_SET (tmp2, gen_rtx_SIGN_EXTEND (SImode, operands[2])));
+    emit_insn (gen_mac (tmp1, tmp2));
+    emit_move_insn (operands[0], accl);
+    DONE;
+   }")
+ 
+ ; The same for the unsigned variant, but using MACU instruction.
+ (define_expand "umaddhisi4"
+   [(match_operand:SI 0 "register_operand" "")
+    (match_operand:HI 1 "register_operand" "")
+    (match_operand:HI 2 "extend_operand"   "")
+    (match_operand:SI 3 "register_operand" "")]
+   "TARGET_PLUS_DMPY"
+   "{
+    rtx acc_reg = gen_rtx_REG (DImode, ACC_REG_FIRST);
+    rtx tmp1 = gen_reg_rtx (SImode);
+    rtx tmp2 = gen_reg_rtx (SImode);
+    rtx accl = gen_lowpart (SImode, acc_reg);
+ 
+    emit_move_insn (accl, operands[3]);
+    emit_insn (gen_rtx_SET (tmp1, gen_rtx_ZERO_EXTEND (SImode, operands[1])));
+    emit_insn (gen_rtx_SET (tmp2, gen_rtx_ZERO_EXTEND (SImode, operands[2])));
+    emit_insn (gen_macu (tmp1, tmp2));
+    emit_move_insn (operands[0], accl);
+    DONE;
+   }")
+ 
  (define_expand "maddsidi4"
    [(match_operand:DI 0 "register_operand" "")
     (match_operand:SI 1 "register_operand" "")
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 6117,6128 ****
    "{
     rtx acc_reg = gen_rtx_REG (DImode, ACC_REG_FIRST);
     emit_move_insn (acc_reg, operands[3]);
!    if (TARGET_PLUS_MACD && even_register_operand (operands[0], DImode))
!      emit_insn (gen_macd (operands[0], operands[1], operands[2]));
     else
       {
        emit_insn (gen_mac (operands[1], operands[2]));
!       emit_move_insn (operands[0], acc_reg);
       }
     DONE;
     }"
--- 6176,6189 ----
    "{
     rtx acc_reg = gen_rtx_REG (DImode, ACC_REG_FIRST);
     emit_move_insn (acc_reg, operands[3]);
!    if (TARGET_PLUS_MACD && even_register_operand (operands[0], DImode)
!        && REGNO (operands[0]) != ACC_REG_FIRST)
!       emit_insn (gen_macd (operands[0], operands[1], operands[2]));
     else
       {
        emit_insn (gen_mac (operands[1], operands[2]));
!       if (REGNO (operands[0]) != ACC_REG_FIRST)
!         emit_move_insn (operands[0], acc_reg);
       }
     DONE;
     }"
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 6133,6140 ****
    [(set (match_operand:DI 0 "even_register_operand"	       "=Rcr,r,r")
  	(plus:DI
  	 (mult:DI
! 	  (sign_extend:DI (match_operand:SI 1 "register_operand" "%0,c,c"))
! 	  (sign_extend:DI (match_operand:SI 2 "extend_operand" " c,cI,Cal")))
  	 (reg:DI ARCV2_ACC)))
     (set (reg:DI ARCV2_ACC)
  	(plus:DI
--- 6194,6201 ----
    [(set (match_operand:DI 0 "even_register_operand"	       "=Rcr,r,r")
  	(plus:DI
  	 (mult:DI
! 	  (sign_extend:DI (match_operand:SI 1 "register_operand" "%0,r,r"))
! 	  (sign_extend:DI (match_operand:SI 2 "extend_operand"    "r,rI,Cal")))
  	 (reg:DI ARCV2_ACC)))
     (set (reg:DI ARCV2_ACC)
  	(plus:DI
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 6217,6228 ****
    "{
     rtx acc_reg = gen_rtx_REG (DImode, ACC_REG_FIRST);
     emit_move_insn (acc_reg, operands[3]);
!    if (TARGET_PLUS_MACD && even_register_operand (operands[0], DImode))
!      emit_insn (gen_macdu (operands[0], operands[1], operands[2]));
     else
       {
        emit_insn (gen_macu (operands[1], operands[2]));
!       emit_move_insn (operands[0], acc_reg);
       }
     DONE;
     }"
--- 6278,6291 ----
    "{
     rtx acc_reg = gen_rtx_REG (DImode, ACC_REG_FIRST);
     emit_move_insn (acc_reg, operands[3]);
!    if (TARGET_PLUS_MACD && even_register_operand (operands[0], DImode)
!        && REGNO (operands[0]) != ACC_REG_FIRST)
!       emit_insn (gen_macdu (operands[0], operands[1], operands[2]));
     else
       {
        emit_insn (gen_macu (operands[1], operands[2]));
!       if (REGNO (operands[0]) != ACC_REG_FIRST)
!         emit_move_insn (operands[0], acc_reg);
       }
     DONE;
     }"
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 6233,6240 ****
    [(set (match_operand:DI 0 "even_register_operand"	       "=Rcr,r,r")
  	(plus:DI
  	 (mult:DI
! 	  (zero_extend:DI (match_operand:SI 1 "register_operand" "%0,c,c"))
! 	  (zero_extend:DI (match_operand:SI 2 "extend_operand" " c,cI,i")))
  	 (reg:DI ARCV2_ACC)))
     (set (reg:DI ARCV2_ACC)
  	(plus:DI
--- 6296,6303 ----
    [(set (match_operand:DI 0 "even_register_operand"	       "=Rcr,r,r")
  	(plus:DI
  	 (mult:DI
! 	  (zero_extend:DI (match_operand:SI 1 "register_operand" "%0,r,r"))
! 	  (zero_extend:DI (match_operand:SI 2 "extend_operand"    "r,rI,i")))
  	 (reg:DI ARCV2_ACC)))
     (set (reg:DI ARCV2_ACC)
  	(plus:DI
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc.opt gcc-11.1.0/gcc/config/arc/arc.opt
*** gcc-10.3.0/gcc/config/arc/arc.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Options for the Synopsys DesignWare ARC port of the compiler
  ;
! ; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the Synopsys DesignWare ARC port of the compiler
  ;
! ; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** HeaderInclude
*** 22,60 ****
  config/arc/arc-opts.h
  
  mbig-endian
! Target Report RejectNegative Mask(BIG_ENDIAN)
  Compile code for big endian mode.
  
  mlittle-endian
! Target Report RejectNegative InverseMask(BIG_ENDIAN)
  Compile code for little endian mode.  This is the default.
  
  mno-cond-exec
! Target Report RejectNegative Mask(NO_COND_EXEC)
  Disable ARCompact specific pass to generate conditional execution instructions.
  
  mA6
! Target Report
  Generate ARCompact 32-bit code for ARC600 processor.
  
  mARC600
! Target Report
  Same as -mA6.
  
  mARC601
! Target Report
  Generate ARCompact 32-bit code for ARC601 processor.
  
  mA7
! Target Report
  Generate ARCompact 32-bit code for ARC700 processor.
  
  mARC700
! Target Report
  Same as -mA7.
  
  mjli-always
! Target Report Mask(JLI_ALWAYS)
  Force all calls to be made via a jli instruction.
  
  mmpy-option=
--- 22,60 ----
  config/arc/arc-opts.h
  
  mbig-endian
! Target RejectNegative Mask(BIG_ENDIAN)
  Compile code for big endian mode.
  
  mlittle-endian
! Target RejectNegative InverseMask(BIG_ENDIAN)
  Compile code for little endian mode.  This is the default.
  
  mno-cond-exec
! Target RejectNegative Mask(NO_COND_EXEC)
  Disable ARCompact specific pass to generate conditional execution instructions.
  
  mA6
! Target
  Generate ARCompact 32-bit code for ARC600 processor.
  
  mARC600
! Target
  Same as -mA6.
  
  mARC601
! Target
  Generate ARCompact 32-bit code for ARC601 processor.
  
  mA7
! Target
  Generate ARCompact 32-bit code for ARC700 processor.
  
  mARC700
! Target
  Same as -mA7.
  
  mjli-always
! Target Mask(JLI_ALWAYS)
  Force all calls to be made via a jli instruction.
  
  mmpy-option=
*************** EnumValue
*** 128,142 ****
  Enum(arc_mpy) String(plus_qmacw) Value(9) Canonical
  
  mdiv-rem
! Target Report Mask(DIVREM)
  Enable DIV-REM instructions for ARCv2.
  
  mcode-density
! Target Report Mask(CODE_DENSITY)
  Enable code density instructions for ARCv2.
  
  mmixed-code
! Target Report Mask(MIXED_CODE_SET)
  Tweak register allocation to help 16-bit instruction generation.
  ; originally this was:
  ;Generate ARCompact 16-bit instructions intermixed with 32-bit instructions
--- 128,142 ----
  Enum(arc_mpy) String(plus_qmacw) Value(9) Canonical
  
  mdiv-rem
! Target Mask(DIVREM)
  Enable DIV-REM instructions for ARCv2.
  
  mcode-density
! Target Mask(CODE_DENSITY)
  Enable code density instructions for ARCv2.
  
  mmixed-code
! Target Mask(MIXED_CODE_SET)
  Tweak register allocation to help 16-bit instruction generation.
  ; originally this was:
  ;Generate ARCompact 16-bit instructions intermixed with 32-bit instructions
*************** Tweak register allocation to help 16-bit
*** 146,236 ****
  ; 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 Report RejectNegative Mask(VOLATILE_CACHE_SET)
  Use ordinarily cached memory accesses for volatile references.
  
  mno-volatile-cache
! Target Report RejectNegative InverseMask(VOLATILE_CACHE_SET)
  Enable cache bypass for volatile references.
  
  mbarrel-shifter
! Target Report Mask(BARREL_SHIFTER)
  Generate instructions supported by barrel shifter.
  
  mnorm
! Target Report Mask(NORM_SET)
  Generate norm instruction.
  
  mswap
! Target Report Mask(SWAP_SET)
  Generate swap instruction.
  
  mmul64
! Target Report Mask(MUL64_SET)
  Generate mul64 and mulu64 instructions.
  
  mno-mpy
! Target Report Mask(NOMPY_SET) Warn(%qs is deprecated)
  Do not generate mpy instructions for ARC700.
  
  mea
! Target Report Mask(EA_SET)
  Generate extended arithmetic instructions, only valid for ARC700.
  
  msoft-float
! Target Report Mask(0)
  Dummy flag. This is the default unless FPX switches are provided explicitly.
  
  mlong-calls
! Target Report Mask(LONG_CALLS_SET)
  Generate call insns as register indirect calls.
  
  mno-brcc
! Target Report Mask(NO_BRCC_SET)
  Do no generate BRcc instructions in arc_reorg.
  
  msdata
! Target Report InverseMask(NO_SDATA_SET)
  Generate sdata references.  This is the default, unless you compile for PIC.
  
  mmillicode
! Target Report Mask(MILLICODE_THUNK_SET)
  Generate millicode thunks.
  
  mspfp
! Target Report Mask(SPFP_COMPACT_SET)
  FPX: Generate Single Precision FPX (compact) instructions.
  
  mspfp-compact
! Target Report Mask(SPFP_COMPACT_SET) MaskExists
  FPX: Generate Single Precision FPX (compact) instructions.
  
  mspfp-fast
! Target Report Mask(SPFP_FAST_SET)
  FPX: Generate Single Precision FPX (fast) instructions.
  
  margonaut
! Target Report Mask(ARGONAUT_SET)
  FPX: Enable Argonaut ARC CPU Double Precision Floating Point extensions.
  
  mdpfp
! Target Report Mask(DPFP_COMPACT_SET)
  FPX: Generate Double Precision FPX (compact) instructions.
  
  mdpfp-compact
! Target Report Mask(DPFP_COMPACT_SET) MaskExists
  FPX: Generate Double Precision FPX (compact) instructions.
  
  mdpfp-fast
! Target Report Mask(DPFP_FAST_SET)
  FPX: Generate Double Precision FPX (fast) instructions.
  
  mno-dpfp-lrsr
! Target Report Mask(DPFP_DISABLE_LRSR)
  Disable LR and SR instructions from using FPX extension aux registers.
  
  msimd
! Target Report Mask(SIMD_SET)
  Enable generation of ARC SIMD instructions via target-specific builtins.
  
  mcpu=
--- 146,236 ----
  ; 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)
  Use ordinarily cached memory accesses for volatile references.
  
  mno-volatile-cache
! Target RejectNegative InverseMask(VOLATILE_CACHE_SET)
  Enable cache bypass for volatile references.
  
  mbarrel-shifter
! Target Mask(BARREL_SHIFTER)
  Generate instructions supported by barrel shifter.
  
  mnorm
! Target Mask(NORM_SET)
  Generate norm instruction.
  
  mswap
! Target Mask(SWAP_SET)
  Generate swap instruction.
  
  mmul64
! Target Mask(MUL64_SET)
  Generate mul64 and mulu64 instructions.
  
  mno-mpy
! Target Mask(NOMPY_SET) Warn(%qs is deprecated)
  Do not generate mpy instructions for ARC700.
  
  mea
! Target Mask(EA_SET)
  Generate extended arithmetic instructions, only valid for ARC700.
  
  msoft-float
! Target Mask(0)
  Dummy flag. This is the default unless FPX switches are provided explicitly.
  
  mlong-calls
! Target Mask(LONG_CALLS_SET)
  Generate call insns as register indirect calls.
  
  mno-brcc
! Target Mask(NO_BRCC_SET)
  Do no generate BRcc instructions in arc_reorg.
  
  msdata
! Target InverseMask(NO_SDATA_SET)
  Generate sdata references.  This is the default, unless you compile for PIC.
  
  mmillicode
! Target Mask(MILLICODE_THUNK_SET)
  Generate millicode thunks.
  
  mspfp
! Target Mask(SPFP_COMPACT_SET)
  FPX: Generate Single Precision FPX (compact) instructions.
  
  mspfp-compact
! Target Mask(SPFP_COMPACT_SET) MaskExists
  FPX: Generate Single Precision FPX (compact) instructions.
  
  mspfp-fast
! Target Mask(SPFP_FAST_SET)
  FPX: Generate Single Precision FPX (fast) instructions.
  
  margonaut
! Target Mask(ARGONAUT_SET)
  FPX: Enable Argonaut ARC CPU Double Precision Floating Point extensions.
  
  mdpfp
! Target Mask(DPFP_COMPACT_SET)
  FPX: Generate Double Precision FPX (compact) instructions.
  
  mdpfp-compact
! Target Mask(DPFP_COMPACT_SET) MaskExists
  FPX: Generate Double Precision FPX (compact) instructions.
  
  mdpfp-fast
! Target Mask(DPFP_FAST_SET)
  FPX: Generate Double Precision FPX (fast) instructions.
  
  mno-dpfp-lrsr
! Target Mask(DPFP_DISABLE_LRSR)
  Disable LR and SR instructions from using FPX extension aux registers.
  
  msimd
! Target Mask(SIMD_SET)
  Enable generation of ARC SIMD instructions via target-specific builtins.
  
  mcpu=
*************** Target RejectNegative Joined UInteger Va
*** 242,248 ****
  Size optimization level: 0:none 1:opportunistic 2: regalloc 3:drop align, -Os.
  
  misize
! Target Report PchIgnore Var(TARGET_DUMPISIZE)
  Annotate assembler instructions with estimated addresses.
  
  mmultcost=
--- 242,248 ----
  Size optimization level: 0:none 1:opportunistic 2: regalloc 3:drop align, -Os.
  
  misize
! Target PchIgnore Var(TARGET_DUMPISIZE)
  Annotate assembler instructions with estimated addresses.
  
  mmultcost=
*************** Target Var(TARGET_AUTO_MODIFY_REG) Init(
*** 289,295 ****
  Enable the use of pre/post modify with register displacement.
  
  mmul32x16
! Target Report Mask(MULMAC_32BY16_SET)
  Generate 32x16 multiply and mac instructions.
  
  ; the initializer is supposed to be: Init(REG_BR_PROB_BASE/2) ,
--- 289,295 ----
  Enable the use of pre/post modify with register displacement.
  
  mmul32x16
! Target Mask(MULMAC_32BY16_SET)
  Generate 32x16 multiply and mac instructions.
  
  ; the initializer is supposed to be: Init(REG_BR_PROB_BASE/2) ,
*************** Expand adddi3 and subdi3 at rtl generati
*** 346,387 ****
  ; Flags used by the assembler, but for which we define preprocessor
  ; macro symbols as well.
  mcrc
! Target Report Warn(%qs is deprecated)
  Enable variable polynomial CRC extension.
  
  mdsp-packa
! Target Report Warn(%qs is deprecated)
  Enable DSP 3.1 Pack A extensions.
  
  mdvbf
! Target Report Warn(%qs is deprecated)
  Enable dual viterbi butterfly extension.
  
  mmac-d16
! Target Report Undocumented Warn(%qs is deprecated)
  
  mmac-24
! Target Report Undocumented Warn(%qs is deprecated)
  
  mtelephony
! Target Report RejectNegative Warn(%qs is deprecated)
  Enable Dual and Single Operand Instructions for Telephony.
  
  mxy
! Target Report
  Enable XY Memory extension (DSP version 3).
  
  ; ARC700 4.10 extension instructions
  mlock
! Target Report
  Enable Locked Load/Store Conditional extension.
  
  mswape
! Target Report
  Enable swap byte ordering extension instruction.
  
  mrtsc
! Target Report Warn(%qs is deprecated)
  Enable 64-bit Time-Stamp Counter extension instruction.
  
  EB
--- 346,387 ----
  ; Flags used by the assembler, but for which we define preprocessor
  ; macro symbols as well.
  mcrc
! Target Warn(%qs is deprecated)
  Enable variable polynomial CRC extension.
  
  mdsp-packa
! Target Warn(%qs is deprecated)
  Enable DSP 3.1 Pack A extensions.
  
  mdvbf
! Target Warn(%qs is deprecated)
  Enable dual viterbi butterfly extension.
  
  mmac-d16
! Target Undocumented Warn(%qs is deprecated)
  
  mmac-24
! Target Undocumented Warn(%qs is deprecated)
  
  mtelephony
! Target RejectNegative Warn(%qs is deprecated)
  Enable Dual and Single Operand Instructions for Telephony.
  
  mxy
! Target
  Enable XY Memory extension (DSP version 3).
  
  ; ARC700 4.10 extension instructions
  mlock
! Target
  Enable Locked Load/Store Conditional extension.
  
  mswape
! Target
  Enable swap byte ordering extension instruction.
  
  mrtsc
! Target Warn(%qs is deprecated)
  Enable 64-bit Time-Stamp Counter extension instruction.
  
  EB
*************** Pass -marclinux_prof option through to l
*** 402,408 ****
  
  ;; lra is still unproven for ARC, so allow to fall back to reload with -mno-lra.
  mlra
! Target Report Var(arc_lra_flag) Init(1) Save
  Use LRA instead of reload.
  
  mlra-priority-none
--- 402,408 ----
  
  ;; lra is still unproven for ARC, so allow to fall back to reload with -mno-lra.
  mlra
! Target Var(arc_lra_flag) Init(1) Save
  Use LRA instead of reload.
  
  mlra-priority-none
*************** multcost=
*** 426,436 ****
  Target RejectNegative Joined
  
  matomic
! Target Report Mask(ATOMIC)
  Enable atomic instructions.
  
  mll64
! Target Report Mask(LL64)
  Enable double load/store instructions for ARC HS.
  
  mfpu=
--- 426,436 ----
  Target RejectNegative Joined
  
  matomic
! Target Mask(ATOMIC)
  Enable atomic instructions.
  
  mll64
! Target Mask(LL64)
  Enable double load/store instructions for ARC HS.
  
  mfpu=
*************** mtp-regno=none
*** 484,498 ****
  Target RejectNegative Var(arc_tp_regno,-1)
  
  mbitops
! Target Report Var(TARGET_NPS_BITOPS) Init(TARGET_NPS_BITOPS_DEFAULT)
  Enable use of NPS400 bit operations.
  
  mcmem
! Target Report Var(TARGET_NPS_CMEM) Init(TARGET_NPS_CMEM_DEFAULT)
  Enable use of NPS400 xld/xst extension.
  
  munaligned-access
! Target Report Var(unaligned_access) Init(UNALIGNED_ACCESS_DEFAULT)
  Enable unaligned word and halfword accesses to packed data.
  
  mirq-ctrl-saved=
--- 484,498 ----
  Target RejectNegative Var(arc_tp_regno,-1)
  
  mbitops
! Target Var(TARGET_NPS_BITOPS) Init(TARGET_NPS_BITOPS_DEFAULT)
  Enable use of NPS400 bit operations.
  
  mcmem
! Target Var(TARGET_NPS_CMEM) Init(TARGET_NPS_CMEM_DEFAULT)
  Enable use of NPS400 xld/xst extension.
  
  munaligned-access
! Target Var(unaligned_access) Init(UNALIGNED_ACCESS_DEFAULT)
  Enable unaligned word and halfword accesses to packed data.
  
  mirq-ctrl-saved=
*************** EnumValue
*** 529,541 ****
  Enum(arc_lpc) String(32) Value(32)
  
  mrf16
! Target Report Mask(RF16)
  Enable 16-entry register file.
  
  mbranch-index
! Target Report Var(TARGET_BRANCH_INDEX) Init(DEFAULT_BRANCH_INDEX)
  Enable use of BI/BIH instructions when available.
  
  mcode-density-frame
! Target Report Var(TARGET_CODE_DENSITY_FRAME) Init(TARGET_CODE_DENSITY_FRAME_DEFAULT)
  Enable ENTER_S and LEAVE_S opcodes for ARCv2.
--- 529,541 ----
  Enum(arc_lpc) String(32) Value(32)
  
  mrf16
! Target Mask(RF16)
  Enable 16-entry register file.
  
  mbranch-index
! Target Var(TARGET_BRANCH_INDEX) Init(DEFAULT_BRANCH_INDEX)
  Enable use of BI/BIH instructions when available.
  
  mcode-density-frame
! Target Var(TARGET_CODE_DENSITY_FRAME) Init(TARGET_CODE_DENSITY_FRAME_DEFAULT)
  Enable ENTER_S and LEAVE_S opcodes for ARCv2.
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc600.md gcc-11.1.0/gcc/config/arc/arc600.md
*** gcc-10.3.0/gcc/config/arc/arc600.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc600.md	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ;; DFA scheduling description of the Synopsys DesignWare ARC600 cpu
  ;; for GNU C compiler
! ;; Copyright (C) 2007-2020 Free Software Foundation, Inc.
  ;; Contributor: Joern Rennecke <joern.rennecke@embecosm.com>
  ;;              on behalf of Synopsys Inc.
  
--- 1,6 ----
  ;; DFA scheduling description of the Synopsys DesignWare ARC600 cpu
  ;; for GNU C compiler
! ;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
  ;; Contributor: Joern Rennecke <joern.rennecke@embecosm.com>
  ;;              on behalf of Synopsys Inc.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arc700.md gcc-11.1.0/gcc/config/arc/arc700.md
*** gcc-10.3.0/gcc/config/arc/arc700.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arc700.md	Tue Apr 27 10:00:13 2021
***************
*** 5,11 ****
  ;;    Ramana Radhakrishnan(ramana.radhakrishnan@codito.com)
  ;;    Factoring out and improvement of ARC700 Scheduling by
  ;;    Joern Rennecke (joern.rennecke@embecosm.com)
! ;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 5,11 ----
  ;;    Ramana Radhakrishnan(ramana.radhakrishnan@codito.com)
  ;;    Factoring out and improvement of ARC700 Scheduling by
  ;;    Joern Rennecke (joern.rennecke@embecosm.com)
! ;; Copyright (C) 2006-2021 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arcEM.md gcc-11.1.0/gcc/config/arc/arcEM.md
*** gcc-10.3.0/gcc/config/arc/arcEM.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arcEM.md	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ;; DFA scheduling description of the Synopsys DesignWare ARC EM cpu
  ;; for GNU C compiler
! ;; Copyright (C) 2007-2020 Free Software Foundation, Inc.
  ;; Contributor: Claudiu Zissulescu <claudiu.zissulescu@synopsys.com>
  
  ;; This file is part of GCC.
--- 1,6 ----
  ;; DFA scheduling description of the Synopsys DesignWare ARC EM cpu
  ;; for GNU C compiler
! ;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
  ;; Contributor: Claudiu Zissulescu <claudiu.zissulescu@synopsys.com>
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arcHS.md gcc-11.1.0/gcc/config/arc/arcHS.md
*** gcc-10.3.0/gcc/config/arc/arcHS.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arcHS.md	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ;; DFA scheduling description of the Synopsys DesignWare ARC HS cpu
  ;; for GNU C compiler
! ;; Copyright (C) 2007-2020 Free Software Foundation, Inc.
  ;; Contributor: Claudiu Zissulescu <claudiu.zissulescu@synopsys.com>
  
  ;; This file is part of GCC.
--- 1,6 ----
  ;; DFA scheduling description of the Synopsys DesignWare ARC HS cpu
  ;; for GNU C compiler
! ;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
  ;; Contributor: Claudiu Zissulescu <claudiu.zissulescu@synopsys.com>
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arc/arcHS4x.md gcc-11.1.0/gcc/config/arc/arcHS4x.md
*** gcc-10.3.0/gcc/config/arc/arcHS4x.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/arcHS4x.md	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ;; DFA scheduling description of the Synopsys DesignWare ARC HS4x cpu
  ;; for GNU C compiler
! ;; Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,6 ----
  ;; DFA scheduling description of the Synopsys DesignWare ARC HS4x cpu
  ;; for GNU C compiler
! ;; Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/atomic.md gcc-11.1.0/gcc/config/arc/atomic.md
*** gcc-10.3.0/gcc/config/arc/atomic.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/atomic.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; GCC machine description for ARC atomic instructions.
! ;; Copyright (C) 2015-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; GCC machine description for ARC atomic instructions.
! ;; Copyright (C) 2015-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/arc/big.h gcc-11.1.0/gcc/config/arc/big.h
*** gcc-10.3.0/gcc/config/arc/big.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/big.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Definition of big endian ARC machine for GNU compiler.
  
!    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definition of big endian ARC machine for GNU compiler.
  
!    Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/builtins.def gcc-11.1.0/gcc/config/arc/builtins.def
*** gcc-10.3.0/gcc/config/arc/builtins.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/builtins.def	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2015-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2015-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/constraints.md gcc-11.1.0/gcc/config/arc/constraints.md
*** gcc-10.3.0/gcc/config/arc/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Constraint definitions for Synopsys DesignWare ARC.
! ;; Copyright (C) 2007-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for Synopsys DesignWare ARC.
! ;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 493,498 ****
--- 493,503 ----
    Condition Codes"
    (and (match_code "reg") (match_test "cc_register (op, VOIDmode)")))
  
+ (define_constraint "Ral"
+   "@internal
+    Accumulator register @code{ACCL} - do not reload into its class"
+   (and (match_code "reg")
+        (match_test "REGNO (op) == ACCL_REGNO")))
  
  (define_constraint "Q"
    "@internal
diff -Nrcpad gcc-10.3.0/gcc/config/arc/driver-arc.c gcc-11.1.0/gcc/config/arc/driver-arc.c
*** gcc-10.3.0/gcc/config/arc/driver-arc.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/driver-arc.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by Claudiu Zissulescu <claziss@synopsys.com>
  
     This file is part of GCC.
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by Claudiu Zissulescu <claziss@synopsys.com>
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arc/elf.h gcc-11.1.0/gcc/config/arc/elf.h
*** gcc-10.3.0/gcc/config/arc/elf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/elf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Target macros for arc*-elf targets.
  
!    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Target macros for arc*-elf targets.
  
!    Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/fpx.md gcc-11.1.0/gcc/config/arc/fpx.md
*** gcc-10.3.0/gcc/config/arc/fpx.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/fpx.md	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ;; Machine description of the Synopsys DesignWare ARC cpu Floating Point
  ;; extensions for GNU C compiler
! ;; Copyright (C) 2007-2020 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,6 ----
  ;; Machine description of the Synopsys DesignWare ARC cpu Floating Point
  ;; extensions for GNU C compiler
! ;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/genmultilib.awk gcc-11.1.0/gcc/config/arc/genmultilib.awk
*** gcc-10.3.0/gcc/config/arc/genmultilib.awk	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/genmultilib.awk	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2016-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2016-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/arc/genoptions.awk gcc-11.1.0/gcc/config/arc/genoptions.awk
*** gcc-10.3.0/gcc/config/arc/genoptions.awk	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/genoptions.awk	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2016-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2016-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/arc/linux.h gcc-11.1.0/gcc/config/arc/linux.h
*** gcc-10.3.0/gcc/config/arc/linux.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/linux.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Target macros for arc*-*-linux targets.
  
!    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Target macros for arc*-*-linux targets.
  
!    Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arc/predicates.md gcc-11.1.0/gcc/config/arc/predicates.md
*** gcc-10.3.0/gcc/config/arc/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/predicates.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Predicate definitions for Synopsys DesignWare ARC.
! ;; Copyright (C) 2007-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for Synopsys DesignWare ARC.
! ;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/arc/simdext.md gcc-11.1.0/gcc/config/arc/simdext.md
*** gcc-10.3.0/gcc/config/arc/simdext.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/simdext.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description of the Synopsys DesignWare ARC cpu for GNU C compiler
! ;; Copyright (C) 2007-2020 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Machine description of the Synopsys DesignWare ARC cpu for GNU C compiler
! ;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
***************
*** 1400,1407 ****
  (define_insn_and_split "*mov<mode>_insn"
    [(set (match_operand:VWH 0 "move_dest_operand" "=r,r,r,m")
  	(match_operand:VWH 1 "general_operand"    "i,r,m,r"))]
!   "TARGET_PLUS_QMACW
!    && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))"
    "*
  {
--- 1400,1406 ----
  (define_insn_and_split "*mov<mode>_insn"
    [(set (match_operand:VWH 0 "move_dest_operand" "=r,r,r,m")
  	(match_operand:VWH 1 "general_operand"    "i,r,m,r"))]
!   "(register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))"
    "*
  {
***************
*** 1411,1417 ****
         return \"#\";
  
       case 1:
!        return \"vadd2 %0, %1, 0\";
  
       case 2:
         if (TARGET_LL64)
--- 1410,1420 ----
         return \"#\";
  
       case 1:
!        if (TARGET_PLUS_QMACW
!            && even_register_operand (operands[0], <MODE>mode)
! 	   && even_register_operand (operands[1], <MODE>mode))
!          return \"vadd2%?\\t%0,%1,0\";
!        return \"#\";
  
       case 2:
         if (TARGET_LL64)
***************
*** 1430,1437 ****
     arc_split_move (operands);
     DONE;
    }
!   [(set_attr "type" "move,move,load,store")
!    (set_attr "predicable" "yes,no,no,no")
     (set_attr "iscompact"  "false,false,false,false")
     ])
  
--- 1433,1440 ----
     arc_split_move (operands);
     DONE;
    }
!   [(set_attr "type" "move,multi,load,store")
!    (set_attr "predicable" "no,no,no,no")
     (set_attr "iscompact"  "false,false,false,false")
     ])
  
***************
*** 1612,1617 ****
--- 1615,1658 ----
   DONE;
  })
  
+ (define_expand "sdot_prodv4hi"
+   [(match_operand:V2SI 0 "register_operand" "")
+    (match_operand:V4HI 1 "register_operand" "")
+    (match_operand:V4HI 2 "register_operand" "")
+    (match_operand:V2SI 3 "register_operand" "")]
+   "TARGET_PLUS_MACD"
+ {
+  rtx acc_reg  = gen_rtx_REG  (V2SImode, ACC_REG_FIRST);
+  rtx op1_low  = gen_lowpart  (V2HImode, operands[1]);
+  rtx op1_high = gen_highpart (V2HImode, operands[1]);
+  rtx op2_low  = gen_lowpart  (V2HImode, operands[2]);
+  rtx op2_high = gen_highpart (V2HImode, operands[2]);
+ 
+  emit_move_insn (acc_reg, operands[3]);
+  emit_insn (gen_arc_vec_smac_v2hiv2si_zero (op1_low, op2_low));
+  emit_insn (gen_arc_vec_smac_v2hiv2si (operands[0], op1_high, op2_high));
+  DONE;
+ })
+ 
+ (define_expand "udot_prodv4hi"
+   [(match_operand:V2SI 0 "register_operand" "")
+    (match_operand:V4HI 1 "register_operand" "")
+    (match_operand:V4HI 2 "register_operand" "")
+    (match_operand:V2SI 3 "register_operand" "")]
+   "TARGET_PLUS_MACD"
+ {
+  rtx acc_reg  = gen_rtx_REG  (V2SImode, ACC_REG_FIRST);
+  rtx op1_low  = gen_lowpart  (V2HImode, operands[1]);
+  rtx op1_high = gen_highpart (V2HImode, operands[1]);
+  rtx op2_low  = gen_lowpart  (V2HImode, operands[2]);
+  rtx op2_high = gen_highpart (V2HImode, operands[2]);
+ 
+  emit_move_insn (acc_reg, operands[3]);
+  emit_insn (gen_arc_vec_umac_v2hiv2si_zero (op1_low, op2_low));
+  emit_insn (gen_arc_vec_umac_v2hiv2si (operands[0], op1_high, op2_high));
+  DONE;
+ })
+ 
  (define_insn "arc_vec_<V_US>mult_lo_v4hi"
   [(set (match_operand:V2SI 0 "even_register_operand"                     "=r,r")
         (mult:V2SI (SE:V2SI (vec_select:V2HI
***************
*** 1704,1733 ****
    }
  )
  
! (define_insn "arc_vec_<V_US>mac_hi_v4hi"
!  [(set (match_operand:V2SI 0 "even_register_operand"                     "=r,r")
         (plus:V2SI
! 	(reg:V2SI ARCV2_ACC)
! 	(mult:V2SI (SE:V2SI (vec_select:V2HI
! 			     (match_operand:V4HI 1 "even_register_operand" "0,r")
! 			     (parallel [(const_int 2) (const_int 3)])))
! 		   (SE:V2SI (vec_select:V2HI
! 			     (match_operand:V4HI 2 "even_register_operand" "r,r")
! 			     (parallel [(const_int 2) (const_int 3)]))))))
    (set (reg:V2SI ARCV2_ACC)
         (plus:V2SI
! 	(reg:V2SI ARCV2_ACC)
! 	(mult:V2SI (SE:V2SI (vec_select:V2HI (match_dup 1)
! 					     (parallel [(const_int 2) (const_int 3)])))
! 		   (SE:V2SI (vec_select:V2HI (match_dup 2)
! 					     (parallel [(const_int 2) (const_int 3)]))))))
    ]
    "TARGET_PLUS_MACD"
!   "vmac2h<V_US_suffix>%? %0, %R1, %R2"
    [(set_attr "length" "4")
     (set_attr "type" "multi")
!    (set_attr "predicable" "yes,no")
!    (set_attr "cond" "canuse,nocond")])
  
  ;; Builtins
  (define_insn "dmach"
--- 1745,1781 ----
    }
  )
  
! (define_insn "arc_vec_<V_US>mac_v2hiv2si"
!  [(set (match_operand:V2SI 0 "even_register_operand"                "=r,Ral,r")
         (plus:V2SI
! 	(mult:V2SI (SE:V2SI (match_operand:V2HI 1 "register_operand" "0,  r,r"))
! 		   (SE:V2SI (match_operand:V2HI 2 "register_operand" "r,  r,r")))
! 	(reg:V2SI ARCV2_ACC)))
    (set (reg:V2SI ARCV2_ACC)
         (plus:V2SI
! 	(mult:V2SI (SE:V2SI (match_dup 1))
! 		   (SE:V2SI (match_dup 2)))
! 	(reg:V2SI ARCV2_ACC)))
    ]
    "TARGET_PLUS_MACD"
!   "@
!    vmac2h<V_US_suffix>%?\\t%0,%1,%2
!    vmac2h<V_US_suffix>%?\\t0,%1,%2
!    vmac2h<V_US_suffix>%?\\t%0,%1,%2"
    [(set_attr "length" "4")
     (set_attr "type" "multi")
!    (set_attr "predicable" "yes,no,no")])
! 
! (define_insn "arc_vec_<V_US>mac_v2hiv2si_zero"
!  [(set (reg:V2SI ARCV2_ACC)
!        (plus:V2SI
! 	(mult:V2SI (SE:V2SI (match_operand:V2HI 0 "register_operand" "r"))
! 		   (SE:V2SI (match_operand:V2HI 1 "register_operand" "r")))
! 	(reg:V2SI ARCV2_ACC)))]
!   "TARGET_PLUS_MACD"
!   "vmac2h<V_US_suffix>%?\\t0,%0,%1"
!   [(set_attr "length" "4")
!    (set_attr "type" "multi")])
  
  ;; Builtins
  (define_insn "dmach"
diff -Nrcpad gcc-10.3.0/gcc/config/arc/t-arc gcc-11.1.0/gcc/config/arc/t-arc
*** gcc-10.3.0/gcc/config/arc/t-arc	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/t-arc	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  # GCC Makefile fragment for Synopsys DesignWare ARC.
  #
! # Copyright (C) 2016-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # GCC Makefile fragment for Synopsys DesignWare ARC.
  #
! # Copyright (C) 2016-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/arc/t-multilib gcc-11.1.0/gcc/config/arc/t-multilib
*** gcc-10.3.0/gcc/config/arc/t-multilib	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/t-multilib	Tue Apr 27 10:00:13 2021
***************
*** 3,9 ****
  # Generated from  : ./gcc/config/arc/arc-cpu.def
  # Used by         : tmake_file from Makefile and genmultilib
  
! # Copyright (C) 2016-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 3,9 ----
  # Generated from  : ./gcc/config/arc/arc-cpu.def
  # Used by         : tmake_file from Makefile and genmultilib
  
! # Copyright (C) 2016-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/arc/t-multilib-linux gcc-11.1.0/gcc/config/arc/t-multilib-linux
*** gcc-10.3.0/gcc/config/arc/t-multilib-linux	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arc/t-multilib-linux	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2018-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2018-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/arm/README-interworking gcc-11.1.0/gcc/config/arm/README-interworking
*** gcc-10.3.0/gcc/config/arm/README-interworking	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/README-interworking	Tue Apr 27 10:00:13 2021
*************** used.
*** 742,748 ****
       interworking as the --support-old-code switch has taken care if this.
  
  
! Copyright (C) 1998-2020 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 742,748 ----
       interworking as the --support-old-code switch has taken care if this.
  
  
! Copyright (C) 1998-2021 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-10.3.0/gcc/config/arm/aarch-common-protos.h gcc-11.1.0/gcc/config/arm/aarch-common-protos.h
*** gcc-10.3.0/gcc/config/arm/aarch-common-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/aarch-common-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Functions and structures shared between arm and aarch64.
  
!    Copyright (C) 1991-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* Functions and structures shared between arm and aarch64.
  
!    Copyright (C) 1991-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** struct fp_cost_table
*** 132,137 ****
--- 132,138 ----
  struct vector_cost_table
  {
    const int alu;
+   const int mult;
  };
  
  struct cpu_cost_table
*************** struct cpu_cost_table
*** 143,151 ****
    const struct vector_cost_table vect;
  };
  
! rtx_insn *
! arm_md_asm_adjust (vec<rtx> &outputs, vec<rtx> &/*inputs*/,
! 		    vec<const char *> &constraints,
! 		    vec<rtx> &clobbers, HARD_REG_SET &clobbered_regs);
  
  #endif /* GCC_AARCH_COMMON_PROTOS_H */
--- 144,152 ----
    const struct vector_cost_table vect;
  };
  
! rtx_insn *arm_md_asm_adjust (vec<rtx> &outputs, vec<rtx> & /*inputs*/,
! 			     vec<machine_mode> & /*input_modes*/,
! 			     vec<const char *> &constraints,
! 			     vec<rtx> &clobbers, HARD_REG_SET &clobbered_regs);
  
  #endif /* GCC_AARCH_COMMON_PROTOS_H */
diff -Nrcpad gcc-10.3.0/gcc/config/arm/aarch-common.c gcc-11.1.0/gcc/config/arm/aarch-common.c
*** gcc-10.3.0/gcc/config/arm/aarch-common.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/aarch-common.c	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* Dependency checks for instruction scheduling, shared between ARM and
     AARCH64.
  
!    Copyright (C) 1991-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,7 ----
  /* Dependency checks for instruction scheduling, shared between ARM and
     AARCH64.
  
!    Copyright (C) 1991-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** aarch_accumulator_forwarding (rtx_insn *
*** 485,491 ****
  	return 0;
      }
  
!   if (GET_CODE (accumulator) == SUBREG)
      accumulator = SUBREG_REG (accumulator);
  
    if (!REG_P (accumulator))
--- 485,491 ----
  	return 0;
      }
  
!   if (SUBREG_P (accumulator))
      accumulator = SUBREG_REG (accumulator);
  
    if (!REG_P (accumulator))
*************** arm_mac_accumulator_is_mul_result (rtx p
*** 531,539 ****
     We implement asm flag outputs.  */
  
  rtx_insn *
! arm_md_asm_adjust (vec<rtx> &outputs, vec<rtx> &/*inputs*/,
! 		    vec<const char *> &constraints,
! 		    vec<rtx> &/*clobbers*/, HARD_REG_SET &/*clobbered_regs*/)
  {
    bool saw_asm_flag = false;
  
--- 531,540 ----
     We implement asm flag outputs.  */
  
  rtx_insn *
! arm_md_asm_adjust (vec<rtx> &outputs, vec<rtx> & /*inputs*/,
! 		   vec<machine_mode> & /*input_modes*/,
! 		   vec<const char *> &constraints, vec<rtx> & /*clobbers*/,
! 		   HARD_REG_SET & /*clobbered_regs*/)
  {
    bool saw_asm_flag = false;
  
diff -Nrcpad gcc-10.3.0/gcc/config/arm/aarch-cost-tables.h gcc-11.1.0/gcc/config/arm/aarch-cost-tables.h
*** gcc-10.3.0/gcc/config/arm/aarch-cost-tables.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/aarch-cost-tables.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* RTX cost tables shared between arm and aarch64.
  
!    Copyright (C) 2013-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* RTX cost tables shared between arm and aarch64.
  
!    Copyright (C) 2013-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** const struct cpu_cost_table generic_extr
*** 121,127 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1)	/* alu.  */
    }
  };
  
--- 121,128 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1),	/* alu.  */
!     COSTS_N_INSNS (4)   /* mult.  */
    }
  };
  
*************** const struct cpu_cost_table cortexa53_ex
*** 224,230 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1)	/* alu.  */
    }
  };
  
--- 225,232 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1),	/* alu.  */
!     COSTS_N_INSNS (4)   /* mult.  */
    }
  };
  
*************** const struct cpu_cost_table cortexa57_ex
*** 327,333 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1)  /* alu.  */
    }
  };
  
--- 329,440 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1),  /* alu.  */
!     COSTS_N_INSNS (4)   /* mult.  */
!   }
! };
! 
! const struct cpu_cost_table cortexa76_extra_costs =
! {
!   /* ALU */
!   {
!     0,                 /* arith.  */
!     0,                 /* logical.  */
!     0,                 /* shift.  */
!     0,                  /* shift_reg.  */
!     COSTS_N_INSNS (1), /* arith_shift.  */
!     COSTS_N_INSNS (1), /* arith_shift_reg.  */
!     0,		       /* log_shift.  */
!     COSTS_N_INSNS (1), /* log_shift_reg.  */
!     0,                 /* extend.  */
!     COSTS_N_INSNS (1), /* extend_arith.  */
!     COSTS_N_INSNS (1), /* bfi.  */
!     0,                 /* bfx.  */
!     0,                 /* clz.  */
!     0,                  /* rev.  */
!     0,                 /* non_exec.  */
!     true               /* non_exec_costs_exec.  */
!   },
!   {
!     /* MULT SImode */
!     {
!       COSTS_N_INSNS (1),       /* simple.  */
!       COSTS_N_INSNS (2),       /* flag_setting.  */
!       COSTS_N_INSNS (1),       /* extend.  */
!       COSTS_N_INSNS (1),       /* add.  */
!       COSTS_N_INSNS (1),       /* extend_add.  */
!       COSTS_N_INSNS (6)	       /* idiv.  */
!     },
!     /* MULT DImode */
!     {
!       COSTS_N_INSNS (3),       /* simple.  */
!       0,                       /* flag_setting (N/A).  */
!       COSTS_N_INSNS (1),       /* extend.  */
!       COSTS_N_INSNS (3),       /* add.  */
!       COSTS_N_INSNS (1),       /* extend_add.  */
!       COSTS_N_INSNS (10)       /* idiv.  */
!     }
!   },
!   /* LD/ST */
!   {
!     COSTS_N_INSNS (3),         /* load.  */
!     COSTS_N_INSNS (3),         /* load_sign_extend.  */
!     COSTS_N_INSNS (3),         /* ldrd.  */
!     COSTS_N_INSNS (2),         /* ldm_1st.  */
!     1,                         /* ldm_regs_per_insn_1st.  */
!     2,                         /* ldm_regs_per_insn_subsequent.  */
!     COSTS_N_INSNS (4),         /* loadf.  */
!     COSTS_N_INSNS (4),         /* loadd.  */
!     COSTS_N_INSNS (5),         /* load_unaligned.  */
!     0,                         /* store.  */
!     0,                         /* strd.  */
!     0,                         /* stm_1st.  */
!     1,                         /* stm_regs_per_insn_1st.  */
!     2,                         /* stm_regs_per_insn_subsequent.  */
!     0,                         /* storef.  */
!     0,                         /* stored.  */
!     COSTS_N_INSNS (1),         /* store_unaligned.  */
!     COSTS_N_INSNS (1),         /* loadv.  */
!     COSTS_N_INSNS (1)          /* storev.  */
!   },
!   {
!     /* FP SFmode */
!     {
!       COSTS_N_INSNS (10),      /* div.  */
!       COSTS_N_INSNS (2),       /* mult.  */
!       COSTS_N_INSNS (3),       /* mult_addsub.  */
!       COSTS_N_INSNS (3),       /* fma.  */
!       COSTS_N_INSNS (1),       /* addsub.  */
!       0,                       /* fpconst.  */
!       0,                       /* neg.  */
!       0,                       /* compare.  */
!       COSTS_N_INSNS (1),       /* widen.  */
!       COSTS_N_INSNS (1),       /* narrow.  */
!       COSTS_N_INSNS (1),       /* toint.  */
!       COSTS_N_INSNS (1),       /* fromint.  */
!       COSTS_N_INSNS (1)        /* roundint.  */
!     },
!     /* FP DFmode */
!     {
!       COSTS_N_INSNS (15),      /* div.  */
!       COSTS_N_INSNS (2),       /* mult.  */
!       COSTS_N_INSNS (3),       /* mult_addsub.  */
!       COSTS_N_INSNS (3),       /* fma.  */
!       COSTS_N_INSNS (1),       /* addsub.  */
!       0,                       /* fpconst.  */
!       0,                       /* neg.  */
!       0,                       /* compare.  */
!       COSTS_N_INSNS (1),       /* widen.  */
!       COSTS_N_INSNS (1),       /* narrow.  */
!       COSTS_N_INSNS (1),       /* toint.  */
!       COSTS_N_INSNS (1),       /* fromint.  */
!       COSTS_N_INSNS (1)        /* roundint.  */
!     }
!   },
!   /* Vector */
!   {
!     COSTS_N_INSNS (1),  /* alu.  */
!     COSTS_N_INSNS (4)   /* mult.  */
    }
  };
  
*************** const struct cpu_cost_table exynosm1_ext
*** 430,436 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (0)  /* alu.  */
    }
  };
  
--- 537,544 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (0),  /* alu.  */
!     COSTS_N_INSNS (4)   /* mult.  */
    }
  };
  
*************** const struct cpu_cost_table xgene1_extra
*** 533,539 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (2)  /* alu.  */
    }
  };
  
--- 641,648 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (2),  /* alu.  */
!     COSTS_N_INSNS (8)   /* mult.  */
    }
  };
  
diff -Nrcpad gcc-10.3.0/gcc/config/arm/aout.h gcc-11.1.0/gcc/config/arm/aout.h
*** gcc-10.3.0/gcc/config/arm/aout.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/aout.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for ARM with a.out
!    Copyright (C) 1995-2020 Free Software Foundation, Inc.
     Contributed by Richard Earnshaw (rearnsha@armltd.co.uk).
     
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for ARM with a.out
!    Copyright (C) 1995-2021 Free Software Foundation, Inc.
     Contributed by Richard Earnshaw (rearnsha@armltd.co.uk).
     
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-builtins.c gcc-11.1.0/gcc/config/arm/arm-builtins.c
*** gcc-10.3.0/gcc/config/arm/arm-builtins.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm-builtins.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Description of builtins used by the ARM backend.
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Description of builtins used by the ARM backend.
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** arm_mangle_builtin_scalar_type (const_tr
*** 1462,1479 ****
  static const char *
  arm_mangle_builtin_vector_type (const_tree type)
  {
!   int i;
!   int nelts = sizeof (arm_simd_types) / sizeof (arm_simd_types[0]);
! 
!   for (i = 0; i < nelts; i++)
!     if (arm_simd_types[i].mode ==  TYPE_MODE (type)
! 	&& TYPE_NAME (type)
! 	&& TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
! 	&& DECL_NAME (TYPE_NAME (type))
! 	&& !strcmp
! 	     (IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))),
! 	      arm_simd_types[i].name))
!       return arm_simd_types[i].mangle;
  
    return NULL;
  }
--- 1462,1473 ----
  static const char *
  arm_mangle_builtin_vector_type (const_tree type)
  {
!   tree attrs = TYPE_ATTRIBUTES (type);
!   if (tree attr = lookup_attribute ("Advanced SIMD type", attrs))
!     {
!       tree mangled_name = TREE_VALUE (TREE_VALUE (attr));
!       return IDENTIFIER_POINTER (mangled_name);
!     }
  
    return NULL;
  }
*************** arm_init_simd_builtin_types (void)
*** 1652,1660 ****
  	  type = build_distinct_type_copy (type);
  	  SET_TYPE_STRUCTURAL_EQUALITY (type);
  
  	  TYPE_ATTRIBUTES (type)
! 	    = tree_cons (get_identifier ("Advanced SIMD type"),
! 			 NULL_TREE, TYPE_ATTRIBUTES (type));
  	  arm_simd_types[i].itype = type;
  	}
  
--- 1646,1656 ----
  	  type = build_distinct_type_copy (type);
  	  SET_TYPE_STRUCTURAL_EQUALITY (type);
  
+ 	  tree mangled_name = get_identifier (arm_simd_types[i].mangle);
+ 	  tree value = tree_cons (NULL_TREE, mangled_name, NULL_TREE);
  	  TYPE_ATTRIBUTES (type)
! 	    = tree_cons (get_identifier ("Advanced SIMD type"), value,
! 			 TYPE_ATTRIBUTES (type));
  	  arm_simd_types[i].itype = type;
  	}
  
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-builtins.h gcc-11.1.0/gcc/config/arm/arm-builtins.h
*** gcc-10.3.0/gcc/config/arm/arm-builtins.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm-builtins.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Declarations for determining resolver for a given builtin.
!    Copyright (C) 2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Declarations for determining resolver for a given builtin.
!    Copyright (C) 2020-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-c.c gcc-11.1.0/gcc/config/arm/arm-c.c
*** gcc-10.3.0/gcc/config/arm/arm-c.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm-c.c	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2007-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2007-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** arm_pragma_target_parse (tree args, tree
*** 390,396 ****
    if (! args)
      {
        cur_tree = ((pop_target) ? pop_target : target_option_default_node);
!       cl_target_option_restore (&global_options,
  				TREE_TARGET_OPTION (cur_tree));
      }
    else
--- 390,396 ----
    if (! args)
      {
        cur_tree = ((pop_target) ? pop_target : target_option_default_node);
!       cl_target_option_restore (&global_options, &global_options_set,
  				TREE_TARGET_OPTION (cur_tree));
      }
    else
*************** arm_pragma_target_parse (tree args, tree
*** 399,405 ****
  						  &global_options_set);
        if (cur_tree == NULL_TREE)
  	{
! 	  cl_target_option_restore (&global_options,
  				    TREE_TARGET_OPTION (prev_tree));
  	  return false;
  	}
--- 399,405 ----
  						  &global_options_set);
        if (cur_tree == NULL_TREE)
  	{
! 	  cl_target_option_restore (&global_options, &global_options_set,
  				    TREE_TARGET_OPTION (prev_tree));
  	  return false;
  	}
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-cpus.in gcc-11.1.0/gcc/config/arm/arm-cpus.in
*** gcc-10.3.0/gcc/config/arm/arm-cpus.in	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm-cpus.in	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  # CPU, FPU and architecture specifications for ARM.
  #
! # Copyright (C) 2011-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # CPU, FPU and architecture specifications for ARM.
  #
! # Copyright (C) 2011-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** begin arch armv8-r
*** 724,730 ****
  end arch armv8-r
  
  begin arch armv8.1-m.main
!  tune for cortex-m7
   tune flags CO_PROC
   base 8M_MAIN
   profile M
--- 724,730 ----
  end arch armv8-r
  
  begin arch armv8.1-m.main
!  tune for cortex-m55
   tune flags CO_PROC
   base 8M_MAIN
   profile M
*************** begin cpu cortex-a77
*** 1455,1460 ****
--- 1455,1504 ----
   part d0d
  end cpu cortex-a77
  
+ begin cpu cortex-a78
+  cname cortexa78
+  tune for cortex-a57
+  tune flags LDSCHED
+  architecture armv8.2-a+fp16+dotprod
+  option crypto add FP_ARMv8 CRYPTO
+  costs cortex_a57
+  vendor 41
+  part d41
+ end cpu cortex-a78
+ 
+ begin cpu cortex-a78ae
+  cname cortexa78ae
+  tune for cortex-a57
+  tune flags LDSCHED
+  architecture armv8.2-a+fp16+dotprod
+  option crypto add FP_ARMv8 CRYPTO
+  costs cortex_a57
+  vendor 41
+  part d42
+ end cpu cortex-a78ae
+ 
+ begin cpu cortex-a78c
+  cname cortexa78c
+  tune for cortex-a57
+  tune flags LDSCHED
+  architecture armv8.2-a+fp16+dotprod
+  option crypto add FP_ARMv8 CRYPTO
+  costs cortex_a57
+  vendor 41
+  part d4b
+ end cpu cortex-a78c
+ 
+ begin cpu cortex-x1
+  cname cortexx1
+  tune for cortex-a57
+  tune flags LDSCHED
+  architecture armv8.2-a+fp16+dotprod
+  option crypto add FP_ARMv8 CRYPTO
+  costs cortex_a57
+  vendor 41
+  part d44
+ end cpu cortex-x1
+ 
  begin cpu neoverse-n1
   cname neoversen1
   alias !ares
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-d.c gcc-11.1.0/gcc/config/arm/arm-d.c
*** gcc-10.3.0/gcc/config/arm/arm-d.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm-d.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines for the D front end on the ARM architecture.
!    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
--- 1,5 ----
  /* Subroutines for the D front end on the ARM architecture.
!    Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
*************** You should have received a copy of the G
*** 15,20 ****
--- 15,22 ----
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  
+ #define IN_TARGET_CODE 1
+ 
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
*************** arm_d_target_versions (void)
*** 51,53 ****
--- 53,97 ----
    else if (TARGET_HARD_FLOAT)
      d_add_builtin_version ("D_HardFloat");
  }
+ 
+ /* Handle a call to `__traits(getTargetInfo, "floatAbi")'.  */
+ 
+ static tree
+ arm_d_handle_target_float_abi (void)
+ {
+   const char *abi;
+ 
+   switch (arm_float_abi)
+     {
+     case ARM_FLOAT_ABI_HARD:
+       abi = "hard";
+       break;
+ 
+     case ARM_FLOAT_ABI_SOFT:
+       abi = "soft";
+       break;
+ 
+     case ARM_FLOAT_ABI_SOFTFP:
+       abi = "softfp";
+       break;
+ 
+     default:
+       abi = "";
+       break;
+     }
+ 
+   return build_string_literal (strlen (abi) + 1, abi);
+ }
+ 
+ /* Implement TARGET_D_REGISTER_CPU_TARGET_INFO.  */
+ 
+ void
+ arm_d_register_target_info (void)
+ {
+   const struct d_target_info_spec handlers[] = {
+     { "floatAbi", arm_d_handle_target_float_abi },
+     { NULL, NULL },
+   };
+ 
+   d_add_target_info_handlers (handlers);
+ }
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-fixed.md gcc-11.1.0/gcc/config/arm/arm-fixed.md
*** gcc-10.3.0/gcc/config/arm/arm-fixed.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm-fixed.md	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! ;; Copyright (C) 2011-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2011-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 482,488 ****
    "ssat%?\\t%0, #16, %2%S1"
    [(set_attr "predicable" "yes")
     (set_attr "shift" "1")
!    (set_attr "type" "alu_shift_imm")])
  
  (define_insn "arm_usatsihi"
    [(set (match_operand:HI 0 "s_register_operand" "=r")
--- 482,488 ----
    "ssat%?\\t%0, #16, %2%S1"
    [(set_attr "predicable" "yes")
     (set_attr "shift" "1")
!    (set_attr "autodetect_type" "alu_shift_operator1")])
  
  (define_insn "arm_usatsihi"
    [(set (match_operand:HI 0 "s_register_operand" "=r")
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-flags.h gcc-11.1.0/gcc/config/arm/arm-flags.h
*** gcc-10.3.0/gcc/config/arm/arm-flags.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm-flags.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Flags used to identify the presence of processor capabilities.
  
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* Flags used to identify the presence of processor capabilities.
  
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-generic.md gcc-11.1.0/gcc/config/arm/arm-generic.md
*** gcc-10.3.0/gcc/config/arm/arm-generic.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm-generic.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Generic ARM Pipeline Description
! ;; Copyright (C) 2003-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Generic ARM Pipeline Description
! ;; Copyright (C) 2003-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-ldmstm.ml gcc-11.1.0/gcc/config/arm/arm-ldmstm.ml
*** gcc-10.3.0/gcc/config/arm/arm-ldmstm.ml	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm-ldmstm.ml	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  (* Auto-generate ARM ldm/stm patterns
!    Copyright (C) 2010-2020 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
--- 1,5 ----
  (* Auto-generate ARM ldm/stm patterns
!    Copyright (C) 2010-2021 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
*************** let _ =
*** 335,341 ****
  "/* ARM ldm/stm instruction patterns.  This file was automatically generated";
  "   using arm-ldmstm.ml.  Please do not edit manually.";
  "";
! "   Copyright (C) 2010-2020 Free Software Foundation, Inc.";
  "   Contributed by CodeSourcery.";
  "";
  "   This file is part of GCC.";
--- 335,341 ----
  "/* ARM ldm/stm instruction patterns.  This file was automatically generated";
  "   using arm-ldmstm.ml.  Please do not edit manually.";
  "";
! "   Copyright (C) 2010-2021 Free Software Foundation, Inc.";
  "   Contributed by CodeSourcery.";
  "";
  "   This file is part of GCC.";
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-modes.def gcc-11.1.0/gcc/config/arm/arm-modes.def
*** gcc-10.3.0/gcc/config/arm/arm-modes.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm-modes.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for ARM.
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
     Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
     and Martin Simmons (@harleqn.co.uk).
     More major hacks by Richard Earnshaw (rearnsha@arm.com)
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for ARM.
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
     Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
     and Martin Simmons (@harleqn.co.uk).
     More major hacks by Richard Earnshaw (rearnsha@arm.com)
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-opts.h gcc-11.1.0/gcc/config/arm/arm-opts.h
*** gcc-10.3.0/gcc/config/arm/arm-opts.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm-opts.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for option handling for ARM.
!    Copyright (C) 1991-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for option handling for ARM.
!    Copyright (C) 1991-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-protos.h gcc-11.1.0/gcc/config/arm/arm-protos.h
*** gcc-10.3.0/gcc/config/arm/arm-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Prototypes for exported functions defined in arm.c and pe.c
!    Copyright (C) 1999-2020 Free Software Foundation, Inc.
     Contributed by Richard Earnshaw (rearnsha@arm.com)
     Minor hacks by Nick Clifton (nickc@cygnus.com)
  
--- 1,5 ----
  /* Prototypes for exported functions defined in arm.c and pe.c
!    Copyright (C) 1999-2021 Free Software Foundation, Inc.
     Contributed by Richard Earnshaw (rearnsha@arm.com)
     Minor hacks by Nick Clifton (nickc@cygnus.com)
  
*************** extern void arm_emit_speculation_barrier
*** 62,67 ****
--- 62,68 ----
  extern void arm_decompose_di_binop (rtx, rtx, rtx *, rtx *, rtx *, rtx *);
  extern bool arm_q_bit_access (void);
  extern bool arm_ge_bits_access (void);
+ extern bool arm_target_insn_ok_for_lob (rtx);
  
  #ifdef RTX_CODE
  enum reg_class
*************** extern bool arm_small_register_classes_f
*** 73,79 ****
  extern int const_ok_for_arm (HOST_WIDE_INT);
  extern int const_ok_for_op (HOST_WIDE_INT, enum rtx_code);
  extern int const_ok_for_dimode_op (HOST_WIDE_INT, enum rtx_code);
! extern void thumb1_gen_const_int (rtx, HOST_WIDE_INT);
  extern int arm_split_constant (RTX_CODE, machine_mode, rtx,
  			       HOST_WIDE_INT, rtx, rtx, int);
  extern int legitimate_pic_operand_p (rtx);
--- 74,81 ----
  extern int const_ok_for_arm (HOST_WIDE_INT);
  extern int const_ok_for_op (HOST_WIDE_INT, enum rtx_code);
  extern int const_ok_for_dimode_op (HOST_WIDE_INT, enum rtx_code);
! extern void thumb1_gen_const_int_rtl (rtx, HOST_WIDE_INT);
! extern void thumb1_gen_const_int_print (rtx, HOST_WIDE_INT);
  extern int arm_split_constant (RTX_CODE, machine_mode, rtx,
  			       HOST_WIDE_INT, rtx, rtx, int);
  extern int legitimate_pic_operand_p (rtx);
*************** extern void arm_emit_coreregs_64bit_shif
*** 371,379 ****
--- 373,383 ----
  extern bool arm_fusion_enabled_p (tune_params::fuse_ops);
  extern bool arm_valid_symbolic_address_p (rtx);
  extern bool arm_validize_comparison (rtx *, rtx *, rtx *);
+ extern bool arm_expand_vector_compare (rtx, rtx_code, rtx, rtx, bool);
  #endif /* RTX_CODE */
  
  extern bool arm_gen_setmem (rtx *);
+ extern void arm_expand_vcond (rtx *, machine_mode);
  extern void arm_expand_vec_perm (rtx target, rtx op0, rtx op1, rtx sel);
  
  extern bool arm_autoinc_modes_ok_p (machine_mode, enum arm_auto_incmodes);
*************** extern void arm_cpu_cpp_builtins (struct
*** 393,398 ****
--- 397,403 ----
  
  /* Defined in arm-d.c  */
  extern void arm_d_target_versions (void);
+ extern void arm_d_register_target_info (void);
  
  extern bool arm_is_constant_pool_ref (rtx);
  
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-simd-builtin-types.def gcc-11.1.0/gcc/config/arm/arm-simd-builtin-types.def
*** gcc-10.3.0/gcc/config/arm/arm-simd-builtin-types.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm-simd-builtin-types.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Builtin AdvSIMD types.
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Builtin AdvSIMD types.
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-tables.opt gcc-11.1.0/gcc/config/arm/arm-tables.opt
*** gcc-10.3.0/gcc/config/arm/arm-tables.opt	Thu Apr  8 11:57:03 2021
--- gcc-11.1.0/gcc/config/arm/arm-tables.opt	Tue Apr 27 10:00:33 2021
***************
*** 2,8 ****
  ; Generated automatically by parsecpu.awk from arm-cpus.in.
  ; Do not edit.
  
! ; Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
  ; This file is part of GCC.
  
--- 2,8 ----
  ; Generated automatically by parsecpu.awk from arm-cpus.in.
  ; Do not edit.
  
! ; Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
  ; This file is part of GCC.
  
*************** EnumValue
*** 241,246 ****
--- 241,258 ----
  Enum(processor_type) String(cortex-a77) Value( TARGET_CPU_cortexa77)
  
  EnumValue
+ Enum(processor_type) String(cortex-a78) Value( TARGET_CPU_cortexa78)
+ 
+ EnumValue
+ Enum(processor_type) String(cortex-a78ae) Value( TARGET_CPU_cortexa78ae)
+ 
+ EnumValue
+ Enum(processor_type) String(cortex-a78c) Value( TARGET_CPU_cortexa78c)
+ 
+ EnumValue
+ Enum(processor_type) String(cortex-x1) Value( TARGET_CPU_cortexx1)
+ 
+ EnumValue
  Enum(processor_type) String(neoverse-n1) Value( TARGET_CPU_neoversen1)
  
  EnumValue
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-tune.md gcc-11.1.0/gcc/config/arm/arm-tune.md
*** gcc-10.3.0/gcc/config/arm/arm-tune.md	Thu Apr  8 11:57:03 2021
--- gcc-11.1.0/gcc/config/arm/arm-tune.md	Tue Apr 27 10:00:33 2021
***************
*** 2,8 ****
  ; Generated automatically by parsecpu.awk from arm-cpus.in.
  ; Do not edit.
  
! ; Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
  ; This file is part of GCC.
  
--- 2,8 ----
  ; Generated automatically by parsecpu.awk from arm-cpus.in.
  ; Do not edit.
  
! ; Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
  ; This file is part of GCC.
  
***************
*** 45,52 ****
  	cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,
  	cortexa73cortexa53,cortexa55,cortexa75,
  	cortexa76,cortexa76ae,cortexa77,
! 	neoversen1,cortexa75cortexa55,cortexa76cortexa55,
! 	neoversev1,neoversen2,cortexm23,
! 	cortexm33,cortexm35p,cortexm55,
! 	cortexr52"
  	(const (symbol_ref "((enum attr_tune) arm_tune)")))
--- 45,53 ----
  	cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,
  	cortexa73cortexa53,cortexa55,cortexa75,
  	cortexa76,cortexa76ae,cortexa77,
! 	cortexa78,cortexa78ae,cortexa78c,
! 	cortexx1,neoversen1,cortexa75cortexa55,
! 	cortexa76cortexa55,neoversev1,neoversen2,
! 	cortexm23,cortexm33,cortexm35p,
! 	cortexm55,cortexr52"
  	(const (symbol_ref "((enum attr_tune) arm_tune)")))
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm.c gcc-11.1.0/gcc/config/arm/arm.c
*** gcc-10.3.0/gcc/config/arm/arm.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Output routines for GCC for ARM.
!    Copyright (C) 1991-2020 Free Software Foundation, Inc.
     Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
     and Martin Simmons (@harleqn.co.uk).
     More major hacks by Richard Earnshaw (rearnsha@arm.com).
--- 1,5 ----
  /* Output routines for GCC for ARM.
!    Copyright (C) 1991-2021 Free Software Foundation, Inc.
     Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
     and Martin Simmons (@harleqn.co.uk).
     More major hacks by Richard Earnshaw (rearnsha@arm.com).
*************** static tree arm_build_builtin_va_list (v
*** 247,254 ****
  static void arm_expand_builtin_va_start (tree, rtx);
  static tree arm_gimplify_va_arg_expr (tree, tree, gimple_seq *, gimple_seq *);
  static void arm_option_override (void);
! static void arm_option_save (struct cl_target_option *, struct gcc_options *);
! static void arm_option_restore (struct gcc_options *,
  				struct cl_target_option *);
  static void arm_override_options_after_change (void);
  static void arm_option_print (FILE *, int, struct cl_target_option *);
--- 247,253 ----
  static void arm_expand_builtin_va_start (tree, rtx);
  static tree arm_gimplify_va_arg_expr (tree, tree, gimple_seq *, gimple_seq *);
  static void arm_option_override (void);
! static void arm_option_restore (struct gcc_options *, struct gcc_options *,
  				struct cl_target_option *);
  static void arm_override_options_after_change (void);
  static void arm_option_print (FILE *, int, struct cl_target_option *);
*************** static bool aarch_macro_fusion_pair_p (r
*** 306,315 ****
  static int arm_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost,
  					   tree vectype,
  					   int misalign ATTRIBUTE_UNUSED);
! static unsigned arm_add_stmt_cost (void *data, int count,
  				   enum vect_cost_for_stmt kind,
  				   struct _stmt_vec_info *stmt_info,
! 				   int misalign,
  				   enum vect_cost_model_location where);
  
  static void arm_canonicalize_comparison (int *code, rtx *op0, rtx *op1,
--- 305,314 ----
  static int arm_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost,
  					   tree vectype,
  					   int misalign ATTRIBUTE_UNUSED);
! static unsigned arm_add_stmt_cost (vec_info *vinfo, void *data, int count,
  				   enum vect_cost_for_stmt kind,
  				   struct _stmt_vec_info *stmt_info,
! 				   tree vectype, int misalign,
  				   enum vect_cost_model_location where);
  
  static void arm_canonicalize_comparison (int *code, rtx *op0, rtx *op1,
*************** static unsigned int arm_hard_regno_nregs
*** 329,337 ****
  static bool arm_hard_regno_mode_ok (unsigned int, machine_mode);
  static bool arm_modes_tieable_p (machine_mode, machine_mode);
  static HOST_WIDE_INT arm_constant_alignment (const_tree, HOST_WIDE_INT);
! static rtx_insn * thumb1_md_asm_adjust (vec<rtx> &, vec<rtx> &,
! 					vec<const char *> &, vec<rtx> &,
! 					HARD_REG_SET &);
  
  /* Table of machine attributes.  */
  static const struct attribute_spec arm_attribute_table[] =
--- 328,337 ----
  static bool arm_hard_regno_mode_ok (unsigned int, machine_mode);
  static bool arm_modes_tieable_p (machine_mode, machine_mode);
  static HOST_WIDE_INT arm_constant_alignment (const_tree, HOST_WIDE_INT);
! static rtx_insn *thumb1_md_asm_adjust (vec<rtx> &, vec<rtx> &,
! 				       vec<machine_mode> &,
! 				       vec<const char *> &, vec<rtx> &,
! 				       HARD_REG_SET &);
  
  /* Table of machine attributes.  */
  static const struct attribute_spec arm_attribute_table[] =
*************** static const struct attribute_spec arm_a
*** 382,388 ****
      arm_handle_cmse_nonsecure_entry, NULL },
    { "cmse_nonsecure_call", 0, 0, true, false, false, true,
      arm_handle_cmse_nonsecure_call, NULL },
!   { "Advanced SIMD type", 0, 0, false, true, false, true, NULL, NULL },
    { NULL, 0, 0, false, false, false, false, NULL, NULL }
  };
  
--- 382,388 ----
      arm_handle_cmse_nonsecure_entry, NULL },
    { "cmse_nonsecure_call", 0, 0, true, false, false, true,
      arm_handle_cmse_nonsecure_call, NULL },
!   { "Advanced SIMD type", 1, 1, false, true, false, true, NULL, NULL },
    { NULL, 0, 0, false, false, false, false, NULL, NULL }
  };
  
*************** static const struct attribute_spec arm_a
*** 442,450 ****
  #undef TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE
  #define TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE arm_override_options_after_change
  
- #undef TARGET_OPTION_SAVE
- #define TARGET_OPTION_SAVE arm_option_save
- 
  #undef TARGET_OPTION_RESTORE
  #define TARGET_OPTION_RESTORE arm_option_restore
  
--- 442,447 ----
*************** static const struct attribute_spec arm_a
*** 834,839 ****
--- 831,839 ----
  #undef TARGET_CONSTANT_ALIGNMENT
  #define TARGET_CONSTANT_ALIGNMENT arm_constant_alignment
  
+ #undef TARGET_INVALID_WITHIN_DOLOOP
+ #define TARGET_INVALID_WITHIN_DOLOOP arm_invalid_within_doloop
+ 
  #undef TARGET_MD_ASM_ADJUST
  #define TARGET_MD_ASM_ADJUST arm_md_asm_adjust
  
*************** const struct cpu_cost_table cortexa9_ext
*** 1193,1199 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1)	/* alu.  */
    }
  };
  
--- 1193,1200 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1),	/* alu.  */
!     COSTS_N_INSNS (4)	/* mult.  */
    }
  };
  
*************** const struct cpu_cost_table cortexa8_ext
*** 1296,1302 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1)	/* alu.  */
    }
  };
  
--- 1297,1304 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1),	/* alu.  */
!     COSTS_N_INSNS (4)	/* mult.  */
    }
  };
  
*************** const struct cpu_cost_table cortexa5_ext
*** 1400,1406 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1)	/* alu.  */
    }
  };
  
--- 1402,1409 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1),	/* alu.  */
!     COSTS_N_INSNS (4)	/* mult.  */
    }
  };
  
*************** const struct cpu_cost_table cortexa7_ext
*** 1505,1511 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1)	/* alu.  */
    }
  };
  
--- 1508,1515 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1),	/* alu.  */
!     COSTS_N_INSNS (4)	/* mult.  */
    }
  };
  
*************** const struct cpu_cost_table cortexa12_ex
*** 1608,1614 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1)	/* alu.  */
    }
  };
  
--- 1612,1619 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1),	/* alu.  */
!     COSTS_N_INSNS (4)	/* mult.  */
    }
  };
  
*************** const struct cpu_cost_table cortexa15_ex
*** 1711,1717 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1)	/* alu.  */
    }
  };
  
--- 1716,1723 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1),	/* alu.  */
!     COSTS_N_INSNS (4)	/* mult.  */
    }
  };
  
*************** const struct cpu_cost_table v7m_extra_co
*** 1814,1820 ****
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1)	/* alu.  */
    }
  };
  
--- 1820,1827 ----
    },
    /* Vector */
    {
!     COSTS_N_INSNS (1),	/* alu.  */
!     COSTS_N_INSNS (4)	/* mult.  */
    }
  };
  
*************** static GTY(()) bool thumb_flipper;
*** 3021,3030 ****
  static GTY(()) tree init_optimize;
  
  static void
! arm_override_options_after_change_1 (struct gcc_options *opts)
  {
    /* -falign-functions without argument: supply one.  */
!   if (opts->x_flag_align_functions && !opts->x_str_align_functions)
      opts->x_str_align_functions = TARGET_THUMB_P (opts->x_target_flags)
        && opts->x_optimize_size ? "2" : "4";
  }
--- 3028,3038 ----
  static GTY(()) tree init_optimize;
  
  static void
! arm_override_options_after_change_1 (struct gcc_options *opts,
! 				     struct gcc_options *opts_set)
  {
    /* -falign-functions without argument: supply one.  */
!   if (opts->x_flag_align_functions && !opts_set->x_str_align_functions)
      opts->x_str_align_functions = TARGET_THUMB_P (opts->x_target_flags)
        && opts->x_optimize_size ? "2" : "4";
  }
*************** arm_override_options_after_change_1 (str
*** 3034,3064 ****
  static void
  arm_override_options_after_change (void)
  {
!   arm_configure_build_target (&arm_active_target,
! 			      TREE_TARGET_OPTION (target_option_default_node),
! 			      &global_options_set, false);
! 
!   arm_override_options_after_change_1 (&global_options);
! }
! 
! /* Implement TARGET_OPTION_SAVE.  */
! static void
! arm_option_save (struct cl_target_option *ptr, struct gcc_options *opts)
! {
!   ptr->x_arm_arch_string = opts->x_arm_arch_string;
!   ptr->x_arm_cpu_string = opts->x_arm_cpu_string;
!   ptr->x_arm_tune_string = opts->x_arm_tune_string;
  }
  
  /* Implement TARGET_OPTION_RESTORE.  */
  static void
! arm_option_restore (struct gcc_options *opts, struct cl_target_option *ptr)
  {
!   opts->x_arm_arch_string = ptr->x_arm_arch_string;
!   opts->x_arm_cpu_string = ptr->x_arm_cpu_string;
!   opts->x_arm_tune_string = ptr->x_arm_tune_string;
!   arm_configure_build_target (&arm_active_target, ptr, &global_options_set,
! 			      false);
  }
  
  /* Reset options between modes that the user has specified.  */
--- 3042,3056 ----
  static void
  arm_override_options_after_change (void)
  {
!   arm_override_options_after_change_1 (&global_options, &global_options_set);
  }
  
  /* Implement TARGET_OPTION_RESTORE.  */
  static void
! arm_option_restore (struct gcc_options */* opts */,
! 		    struct gcc_options *opts_set, struct cl_target_option *ptr)
  {
!   arm_configure_build_target (&arm_active_target, ptr, opts_set, false);
  }
  
  /* Reset options between modes that the user has specified.  */
*************** static void
*** 3066,3072 ****
  arm_option_override_internal (struct gcc_options *opts,
  			      struct gcc_options *opts_set)
  {
!   arm_override_options_after_change_1 (opts);
  
    if (TARGET_INTERWORK && !bitmap_bit_p (arm_active_target.isa, isa_bit_thumb))
      {
--- 3058,3064 ----
  arm_option_override_internal (struct gcc_options *opts,
  			      struct gcc_options *opts_set)
  {
!   arm_override_options_after_change_1 (opts, opts_set);
  
    if (TARGET_INTERWORK && !bitmap_bit_p (arm_active_target.isa, isa_bit_thumb))
      {
*************** arm_configure_build_target (struct arm_b
*** 3238,3258 ****
  	  bitmap_xor (isa_delta, cpu_isa, target->isa);
  	  /* Ignore any bits that are quirk bits.  */
  	  bitmap_and_compl (isa_delta, isa_delta, isa_quirkbits);
! 	  /* Ignore (for now) any bits that might be set by -mfpu.  */
! 	  bitmap_and_compl (isa_delta, isa_delta, isa_all_fpubits_internal);
! 
! 	  /* And if the target ISA lacks floating point, ignore any
! 	     extensions that depend on that.  */
! 	  if (!bitmap_bit_p (target->isa, isa_bit_vfpv2))
  	    bitmap_and_compl (isa_delta, isa_delta, isa_all_fpbits);
  
  	  if (!bitmap_empty_p (isa_delta))
  	    {
  	      if (warn_compatible)
  		warning (0, "switch %<-mcpu=%s%> conflicts "
! 			 "with %<-march=%s%> switch",
! 			 arm_selected_cpu->common.name,
! 			 arm_selected_arch->common.name);
  	      /* -march wins for code generation.
  		 -mcpu wins for default tuning.  */
  	      if (!arm_selected_tune)
--- 3230,3251 ----
  	  bitmap_xor (isa_delta, cpu_isa, target->isa);
  	  /* Ignore any bits that are quirk bits.  */
  	  bitmap_and_compl (isa_delta, isa_delta, isa_quirkbits);
! 	  /* If the user (or the default configuration) has specified a
! 	     specific FPU, then ignore any bits that depend on the FPU
! 	     configuration.  Do similarly if using the soft-float
! 	     ABI.  */
! 	  if (opts->x_arm_fpu_index != TARGET_FPU_auto
! 	      || arm_float_abi == ARM_FLOAT_ABI_SOFT)
  	    bitmap_and_compl (isa_delta, isa_delta, isa_all_fpbits);
  
  	  if (!bitmap_empty_p (isa_delta))
  	    {
  	      if (warn_compatible)
  		warning (0, "switch %<-mcpu=%s%> conflicts "
! 			 "with switch %<-march=%s%>",
! 			 opts->x_arm_cpu_string,
! 			 opts->x_arm_arch_string);
! 
  	      /* -march wins for code generation.
  		 -mcpu wins for default tuning.  */
  	      if (!arm_selected_tune)
*************** arm_configure_build_target (struct arm_b
*** 3403,3408 ****
--- 3396,3405 ----
        auto_sbitmap fpu_bits (isa_num_bits);
  
        arm_initialize_isa (fpu_bits, arm_selected_fpu->isa_bits);
+       /* This should clear out ALL bits relating to the FPU/simd
+ 	 extensions, to avoid potentially invalid combinations later on
+ 	 that we can't match.  At present we only clear out those bits
+ 	 that can be set by -mfpu.  This should be fixed in GCC-12.  */
        bitmap_and_compl (target->isa, target->isa, isa_all_fpubits_internal);
        bitmap_ior (target->isa, target->isa, fpu_bits);
      }
*************** arm_option_override (void)
*** 3472,3478 ****
        arm_fpu_index = (enum fpu_type) fpu_index;
      }
  
!   cl_target_option_save (&opts, &global_options);
    arm_configure_build_target (&arm_active_target, &opts, &global_options_set,
  			      true);
  
--- 3469,3475 ----
        arm_fpu_index = (enum fpu_type) fpu_index;
      }
  
!   cl_target_option_save (&opts, &global_options, &global_options_set);
    arm_configure_build_target (&arm_active_target, &opts, &global_options_set,
  			      true);
  
*************** arm_option_override (void)
*** 3697,3703 ****
      flag_schedule_fusion = 0;
  
    /* Need to remember initial options before they are overriden.  */
!   init_optimize = build_optimization_node (&global_options);
  
    arm_options_perform_arch_sanity_checks ();
    arm_option_override_internal (&global_options, &global_options_set);
--- 3694,3701 ----
      flag_schedule_fusion = 0;
  
    /* Need to remember initial options before they are overriden.  */
!   init_optimize = build_optimization_node (&global_options,
! 					   &global_options_set);
  
    arm_options_perform_arch_sanity_checks ();
    arm_option_override_internal (&global_options, &global_options_set);
*************** arm_option_override (void)
*** 3706,3712 ****
  
    /* Create the default target_options structure.  */
    target_option_default_node = target_option_current_node
!     = build_target_option_node (&global_options);
  
    /* Register global variables with the garbage collector.  */
    arm_add_gc_roots ();
--- 3704,3710 ----
  
    /* Create the default target_options structure.  */
    target_option_default_node = target_option_current_node
!     = build_target_option_node (&global_options, &global_options_set);
  
    /* Register global variables with the garbage collector.  */
    arm_add_gc_roots ();
*************** arm_options_perform_arch_sanity_checks (
*** 3850,3856 ****
  
    /* We don't clear D16-D31 VFP registers for cmse_nonsecure_call functions
       and ARMv8-M Baseline and Mainline do not allow such configuration.  */
!   if (use_cmse && LAST_VFP_REGNUM > LAST_LO_VFP_REGNUM)
      error ("ARMv8-M Security Extensions incompatible with selected FPU");
  
  
--- 3848,3854 ----
  
    /* We don't clear D16-D31 VFP registers for cmse_nonsecure_call functions
       and ARMv8-M Baseline and Mainline do not allow such configuration.  */
!   if (use_cmse && TARGET_HARD_FLOAT && LAST_VFP_REGNUM > LAST_LO_VFP_REGNUM)
      error ("ARMv8-M Security Extensions incompatible with selected FPU");
  
  
*************** arm_options_perform_arch_sanity_checks (
*** 3863,3869 ****
  	  arm_pcs_default = ARM_PCS_AAPCS_VFP;
  	  if (!bitmap_bit_p (arm_active_target.isa, isa_bit_vfpv2)
  	      && !bitmap_bit_p (arm_active_target.isa, isa_bit_mve))
! 	    error ("%<-mfloat-abi=hard%>: selected processor lacks an FPU");
  	}
        else
  	arm_pcs_default = ARM_PCS_AAPCS;
--- 3861,3867 ----
  	  arm_pcs_default = ARM_PCS_AAPCS_VFP;
  	  if (!bitmap_bit_p (arm_active_target.isa, isa_bit_vfpv2)
  	      && !bitmap_bit_p (arm_active_target.isa, isa_bit_mve))
! 	    error ("%<-mfloat-abi=hard%>: selected architecture lacks an FPU");
  	}
        else
  	arm_pcs_default = ARM_PCS_AAPCS;
*************** arm_trampoline_init (rtx m_tramp, tree f
*** 4185,4193 ****
      }
  
    a_tramp = XEXP (m_tramp, 0);
!   emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__clear_cache"),
! 		     LCT_NORMAL, VOIDmode, a_tramp, Pmode,
! 		     plus_constant (Pmode, a_tramp, TRAMPOLINE_SIZE), Pmode);
  }
  
  /* Thumb trampolines should be entered in thumb mode, so set
--- 4183,4192 ----
      }
  
    a_tramp = XEXP (m_tramp, 0);
!   maybe_emit_call_builtin___clear_cache (a_tramp,
! 					 plus_constant (ptr_mode,
! 							a_tramp,
! 							TRAMPOLINE_SIZE));
  }
  
  /* Thumb trampolines should be entered in thumb mode, so set
*************** arm_trampoline_adjust_address (rtx addr)
*** 4204,4209 ****
--- 4203,4233 ----
    return addr;
  }
  
+ /* Return 1 if REG needs to be saved. For interrupt handlers, this
+    includes call-clobbered registers too.  If this is a leaf function
+    we can just examine the registers used by the RTL, but otherwise we
+    have to assume that whatever function is called might clobber
+    anything, and so we have to save all the call-clobbered registers
+    as well.  */
+ static inline bool reg_needs_saving_p (unsigned reg)
+ {
+   unsigned long func_type = arm_current_func_type ();
+ 
+   if (IS_INTERRUPT (func_type))
+     if (df_regs_ever_live_p (reg)
+ 	/* Save call-clobbered core registers.  */
+ 	|| (! crtl->is_leaf && call_used_or_fixed_reg_p (reg) && reg < FIRST_VFP_REGNUM))
+       return true;
+     else
+       return false;
+   else
+     if (!df_regs_ever_live_p (reg)
+ 	|| call_used_or_fixed_reg_p (reg))
+       return false;
+     else
+       return true;
+ }
+ 
  /* Return 1 if it is possible to return using a single instruction.
     If SIBLING is non-null, this is a test for a return before a sibling
     call.  SIBLING is the call insn, so we can examine its register usage.  */
*************** use_return_insn (int iscond, rtx sibling
*** 4333,4344 ****
       since this also requires an insn.  */
    if (TARGET_VFP_BASE)
      for (regno = FIRST_VFP_REGNUM; regno <= LAST_VFP_REGNUM; regno++)
!       if (df_regs_ever_live_p (regno) && !call_used_or_fixed_reg_p (regno))
  	return 0;
  
    if (TARGET_REALLY_IWMMXT)
      for (regno = FIRST_IWMMXT_REGNUM; regno <= LAST_IWMMXT_REGNUM; regno++)
!       if (df_regs_ever_live_p (regno) && ! call_used_or_fixed_reg_p (regno))
  	return 0;
  
    return 1;
--- 4357,4368 ----
       since this also requires an insn.  */
    if (TARGET_VFP_BASE)
      for (regno = FIRST_VFP_REGNUM; regno <= LAST_VFP_REGNUM; regno++)
!       if (reg_needs_saving_p (regno))
  	return 0;
  
    if (TARGET_REALLY_IWMMXT)
      for (regno = FIRST_IWMMXT_REGNUM; regno <= LAST_IWMMXT_REGNUM; regno++)
!       if (reg_needs_saving_p (regno))
  	return 0;
  
    return 1;
*************** const_ok_for_dimode_op (HOST_WIDE_INT i,
*** 4518,4555 ****
      }
  }
  
- /* Emit a sequence of movs/adds/shift to produce a 32-bit constant.
-    Avoid generating useless code when one of the bytes is zero.  */
- void
- thumb1_gen_const_int (rtx op0, HOST_WIDE_INT op1)
- {
-   bool mov_done_p = false;
-   int i;
- 
-   /* Emit upper 3 bytes if needed.  */
-   for (i = 0; i < 3; i++)
-     {
-       int byte = (op1 >> (8 * (3 - i))) & 0xff;
- 
-       if (byte)
- 	{
- 	  emit_set_insn (op0, mov_done_p
- 			 ? gen_rtx_PLUS (SImode,op0, GEN_INT (byte))
- 			 : GEN_INT (byte));
- 	  mov_done_p = true;
- 	}
- 
-       if (mov_done_p)
- 	emit_set_insn (op0, gen_rtx_ASHIFT (SImode, op0, GEN_INT (8)));
-     }
- 
-   /* Emit lower byte if needed.  */
-   if (!mov_done_p)
-     emit_set_insn (op0, GEN_INT (op1 & 0xff));
-   else if (op1 & 0xff)
-     emit_set_insn (op0, gen_rtx_PLUS (SImode, op0, GEN_INT (op1 & 0xff)));
- }
- 
  /* Emit a sequence of insns to handle a large constant.
     CODE is the code of the operation required, it can be any of SET, PLUS,
     IOR, AND, XOR, MINUS;
--- 4542,4547 ----
*************** arm_libcall_uses_aapcs_base (const_rtx l
*** 5786,5791 ****
--- 5778,5787 ----
  		   convert_optab_libfunc (sfix_optab, DImode, SFmode));
        add_libcall (libcall_htab,
  		   convert_optab_libfunc (ufix_optab, DImode, SFmode));
+       add_libcall (libcall_htab,
+ 		   convert_optab_libfunc (sfix_optab, SImode, SFmode));
+       add_libcall (libcall_htab,
+ 		   convert_optab_libfunc (ufix_optab, SImode, SFmode));
  
        /* Values from double-precision helper functions are returned in core
  	 registers if the selected core only supports single-precision
*************** arm_handle_isr_attribute (tree *node, tr
*** 7248,7253 ****
--- 7244,7254 ----
  		   name);
  	  *no_add_attrs = true;
  	}
+       else if (TARGET_VFP_BASE)
+ 	{
+ 	  warning (OPT_Wattributes, "FP registers might be clobbered despite %qE attribute: compile with %<-mgeneral-regs-only%>",
+ 		   name);
+ 	}
        /* FIXME: the argument if any is checked for type attributes;
  	 should it be checked for decl ones?  */
      }
*************** arm_comp_type_attributes (const_tree typ
*** 7522,7527 ****
--- 7523,7537 ----
  {
    int l1, l2, s1, s2;
  
+   tree attrs1 = lookup_attribute ("Advanced SIMD type",
+ 				  TYPE_ATTRIBUTES (type1));
+   tree attrs2 = lookup_attribute ("Advanced SIMD type",
+ 				  TYPE_ATTRIBUTES (type2));
+   if (bool (attrs1) != bool (attrs2))
+     return 0;
+   if (attrs1 && !attribute_value_equal (attrs1, attrs2))
+     return 0;
+ 
    /* Check for mismatch of non-default calling convention.  */
    if (TREE_CODE (type1) != FUNCTION_TYPE)
      return 1;
*************** arm_function_ok_for_sibcall (tree decl,
*** 7783,7789 ****
  int
  legitimate_pic_operand_p (rtx x)
  {
!   if (GET_CODE (x) == SYMBOL_REF
        || (GET_CODE (x) == CONST
  	  && GET_CODE (XEXP (x, 0)) == PLUS
  	  && GET_CODE (XEXP (XEXP (x, 0), 0)) == SYMBOL_REF))
--- 7793,7799 ----
  int
  legitimate_pic_operand_p (rtx x)
  {
!   if (SYMBOL_REF_P (x)
        || (GET_CODE (x) == CONST
  	  && GET_CODE (XEXP (x, 0)) == PLUS
  	  && GET_CODE (XEXP (XEXP (x, 0), 0)) == SYMBOL_REF))
*************** legitimize_pic_address (rtx orig, machin
*** 7912,7919 ****
  {
    gcc_assert (compute_now == (pic_reg != NULL_RTX));
  
!   if (GET_CODE (orig) == SYMBOL_REF
!       || GET_CODE (orig) == LABEL_REF)
      {
        if (reg == 0)
  	{
--- 7922,7929 ----
  {
    gcc_assert (compute_now == (pic_reg != NULL_RTX));
  
!   if (SYMBOL_REF_P (orig)
!       || LABEL_REF_P (orig))
      {
        if (reg == 0)
  	{
*************** legitimize_pic_address (rtx orig, machin
*** 7930,7937 ****
        /* References to weak symbols cannot be resolved locally: they
  	 may be overridden by a non-weak definition at link time.  */
        rtx_insn *insn;
!       if ((GET_CODE (orig) == LABEL_REF
! 	   || (GET_CODE (orig) == SYMBOL_REF
  	       && SYMBOL_REF_LOCAL_P (orig)
  	       && (SYMBOL_REF_DECL (orig)
  		   ? !DECL_WEAK (SYMBOL_REF_DECL (orig)) : 1)
--- 7940,7947 ----
        /* References to weak symbols cannot be resolved locally: they
  	 may be overridden by a non-weak definition at link time.  */
        rtx_insn *insn;
!       if ((LABEL_REF_P (orig)
! 	   || (SYMBOL_REF_P (orig)
  	       && SYMBOL_REF_LOCAL_P (orig)
  	       && (SYMBOL_REF_DECL (orig)
  		   ? !DECL_WEAK (SYMBOL_REF_DECL (orig)) : 1)
*************** arm_is_segment_info_known (rtx orig, boo
*** 8185,8191 ****
  {
    *is_readonly = false;
  
!   if (GET_CODE (orig) == LABEL_REF)
      {
        *is_readonly = true;
        return true;
--- 8195,8201 ----
  {
    *is_readonly = false;
  
!   if (LABEL_REF_P (orig))
      {
        *is_readonly = true;
        return true;
*************** can_avoid_literal_pool_for_label_p (rtx
*** 8445,8451 ****
       (set (reg r0) (mem (reg r0))).
       No extra register is required, and (mem (reg r0)) won't cause the use
       of literal pools.  */
!   if (arm_disable_literal_pool && GET_CODE (x) == SYMBOL_REF
        && CONSTANT_POOL_ADDRESS_P (x))
      return 1;
    return 0;
--- 8455,8461 ----
       (set (reg r0) (mem (reg r0))).
       No extra register is required, and (mem (reg r0)) won't cause the use
       of literal pools.  */
!   if (arm_disable_literal_pool && SYMBOL_REF_P (x)
        && CONSTANT_POOL_ADDRESS_P (x))
      return 1;
    return 0;
*************** thumb1_legitimate_address_p (machine_mod
*** 8824,8830 ****
  
    /* This is PC relative data before arm_reorg runs.  */
    else if (GET_MODE_SIZE (mode) >= 4 && CONSTANT_P (x)
! 	   && GET_CODE (x) == SYMBOL_REF
  	   && CONSTANT_POOL_ADDRESS_P (x) && !flag_pic
  	   && !arm_disable_literal_pool)
      return 1;
--- 8834,8840 ----
  
    /* This is PC relative data before arm_reorg runs.  */
    else if (GET_MODE_SIZE (mode) >= 4 && CONSTANT_P (x)
! 	   && SYMBOL_REF_P (x)
  	   && CONSTANT_POOL_ADDRESS_P (x) && !flag_pic
  	   && !arm_disable_literal_pool)
      return 1;
*************** thumb1_legitimate_address_p (machine_mod
*** 8832,8838 ****
    /* This is PC relative data after arm_reorg runs.  */
    else if ((GET_MODE_SIZE (mode) >= 4 || mode == HFmode)
  	   && reload_completed
! 	   && (GET_CODE (x) == LABEL_REF
  	       || (GET_CODE (x) == CONST
  		   && GET_CODE (XEXP (x, 0)) == PLUS
  		   && GET_CODE (XEXP (XEXP (x, 0), 0)) == LABEL_REF
--- 8842,8848 ----
    /* This is PC relative data after arm_reorg runs.  */
    else if ((GET_MODE_SIZE (mode) >= 4 || mode == HFmode)
  	   && reload_completed
! 	   && (LABEL_REF_P (x)
  	       || (GET_CODE (x) == CONST
  		   && GET_CODE (XEXP (x, 0)) == PLUS
  		   && GET_CODE (XEXP (XEXP (x, 0), 0)) == LABEL_REF
*************** thumb1_legitimate_address_p (machine_mod
*** 8892,8898 ****
  
    else if (GET_MODE_CLASS (mode) != MODE_FLOAT
  	   && GET_MODE_SIZE (mode) == 4
! 	   && GET_CODE (x) == SYMBOL_REF
  	   && CONSTANT_POOL_ADDRESS_P (x)
  	   && !arm_disable_literal_pool
  	   && ! (flag_pic
--- 8902,8908 ----
  
    else if (GET_MODE_CLASS (mode) != MODE_FLOAT
  	   && GET_MODE_SIZE (mode) == 4
! 	   && SYMBOL_REF_P (x)
  	   && CONSTANT_POOL_ADDRESS_P (x)
  	   && !arm_disable_literal_pool
  	   && ! (flag_pic
*************** arm_legitimize_address (rtx x, rtx orig_
*** 9220,9226 ****
  	  x = XEXP (XEXP (x, 0), 0);
  	}
  
!       if (GET_CODE (x) != SYMBOL_REF)
  	return x;
  
        gcc_assert (SYMBOL_REF_TLS_MODEL (x) != 0);
--- 9230,9236 ----
  	  x = XEXP (XEXP (x, 0), 0);
  	}
  
!       if (!SYMBOL_REF_P (x))
  	return x;
  
        gcc_assert (SYMBOL_REF_TLS_MODEL (x) != 0);
*************** arm_tls_referenced_p (rtx x)
*** 9429,9435 ****
    FOR_EACH_SUBRTX (iter, array, x, ALL)
      {
        const_rtx x = *iter;
!       if (GET_CODE (x) == SYMBOL_REF && SYMBOL_REF_TLS_MODEL (x) != 0)
  	{
  	  /* ARM currently does not provide relocations to encode TLS variables
  	     into AArch32 instructions, only data, so there is no way to
--- 9439,9445 ----
    FOR_EACH_SUBRTX (iter, array, x, ALL)
      {
        const_rtx x = *iter;
!       if (SYMBOL_REF_P (x) && SYMBOL_REF_TLS_MODEL (x) != 0)
  	{
  	  /* ARM currently does not provide relocations to encode TLS variables
  	     into AArch32 instructions, only data, so there is no way to
*************** thumb_legitimate_constant_p (machine_mod
*** 9478,9484 ****
    return (CONST_INT_P (x)
  	  || CONST_DOUBLE_P (x)
  	  || CONSTANT_ADDRESS_P (x)
! 	  || (TARGET_HAVE_MOVT && GET_CODE (x) == SYMBOL_REF)
  	  || flag_pic);
  }
  
--- 9488,9501 ----
    return (CONST_INT_P (x)
  	  || CONST_DOUBLE_P (x)
  	  || CONSTANT_ADDRESS_P (x)
! 	  || (TARGET_HAVE_MOVT && SYMBOL_REF_P (x))
! 	  /* On Thumb-1 without MOVT/MOVW and literal pool disabled,
! 	     we build the symbol address with upper/lower
! 	     relocations.  */
! 	  || (TARGET_THUMB1
! 	      && !label_mentioned_p (x)
! 	      && arm_valid_symbolic_address_p (x)
! 	      && arm_disable_literal_pool)
  	  || flag_pic);
  }
  
*************** arm_cannot_force_const_mem (machine_mode
*** 9515,9521 ****
  
  #define REG_OR_SUBREG_REG(X)						\
    (REG_P (X)							\
!    || (GET_CODE (X) == SUBREG && REG_P (SUBREG_REG (X))))
  
  #define REG_OR_SUBREG_RTX(X)			\
     (REG_P (X) ? (X) : SUBREG_REG (X))
--- 9532,9538 ----
  
  #define REG_OR_SUBREG_REG(X)						\
    (REG_P (X)							\
!    || (SUBREG_P (X) && REG_P (SUBREG_REG (X))))
  
  #define REG_OR_SUBREG_RTX(X)			\
     (REG_P (X) ? (X) : SUBREG_REG (X))
*************** thumb1_rtx_costs (rtx x, enum rtx_code c
*** 9626,9632 ****
        /* Memory costs quite a lot for the first word, but subsequent words
  	 load at the equivalent of a single insn each.  */
        return (10 + 4 * ((GET_MODE_SIZE (mode) - 1) / UNITS_PER_WORD)
! 	      + ((GET_CODE (x) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (x))
  		 ? 4 : 0));
  
      case IF_THEN_ELSE:
--- 9643,9649 ----
        /* Memory costs quite a lot for the first word, but subsequent words
  	 load at the equivalent of a single insn each.  */
        return (10 + 4 * ((GET_MODE_SIZE (mode) - 1) / UNITS_PER_WORD)
! 	      + ((SYMBOL_REF_P (x) && CONSTANT_POOL_ADDRESS_P (x))
  		 ? 4 : 0));
  
      case IF_THEN_ELSE:
*************** thumb1_size_rtx_costs (rtx x, enum rtx_c
*** 9783,9789 ****
        return (COSTS_N_INSNS (1)
  	      + COSTS_N_INSNS (1)
  		* ((GET_MODE_SIZE (mode) - 1) / UNITS_PER_WORD)
!               + ((GET_CODE (x) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (x))
                   ? COSTS_N_INSNS (1) : 0));
  
      case IF_THEN_ELSE:
--- 9800,9806 ----
        return (COSTS_N_INSNS (1)
  	      + COSTS_N_INSNS (1)
  		* ((GET_MODE_SIZE (mode) - 1) / UNITS_PER_WORD)
!               + ((SYMBOL_REF_P (x) && CONSTANT_POOL_ADDRESS_P (x))
                   ? COSTS_N_INSNS (1) : 0));
  
      case IF_THEN_ELSE:
*************** arm_rtx_costs_internal (rtx x, enum rtx_
*** 11214,11224 ****
        return true;
  
      case EQ:
-     case NE:
-     case LT:
-     case LE:
-     case GT:
      case GE:
      case LTU:
      case LEU:
      case GEU:
--- 11231,11253 ----
        return true;
  
      case EQ:
      case GE:
+     case GT:
+     case LE:
+     case LT:
+       /* Neon has special instructions when comparing with 0 (vceq, vcge, vcgt,
+ 	 vcle and vclt). */
+       if (TARGET_NEON
+ 	  && TARGET_HARD_FLOAT
+ 	  && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode))
+ 	  && (XEXP (x, 1) == CONST0_RTX (mode)))
+ 	{
+ 	  *cost = 0;
+ 	  return true;
+ 	}
+ 
+       /* Fall through.  */
+     case NE:
      case LTU:
      case LEU:
      case GEU:
*************** xscale_sched_adjust_cost (rtx_insn *insn
*** 11892,11898 ****
  	 instruction we depend on is another ALU instruction, then we may
  	 have to account for an additional stall.  */
        if (shift_opnum != 0
! 	  && (attr_type == TYPE_ALU_SHIFT_IMM
  	      || attr_type == TYPE_ALUS_SHIFT_IMM
  	      || attr_type == TYPE_LOGIC_SHIFT_IMM
  	      || attr_type == TYPE_LOGICS_SHIFT_IMM
--- 11921,11928 ----
  	 instruction we depend on is another ALU instruction, then we may
  	 have to account for an additional stall.  */
        if (shift_opnum != 0
! 	  && (attr_type == TYPE_ALU_SHIFT_IMM_LSL_1TO4
! 	      || attr_type == TYPE_ALU_SHIFT_IMM_OTHER
  	      || attr_type == TYPE_ALUS_SHIFT_IMM
  	      || attr_type == TYPE_LOGIC_SHIFT_IMM
  	      || attr_type == TYPE_LOGICS_SHIFT_IMM
*************** arm_builtin_vectorization_cost (enum vec
*** 12154,12175 ****
  /* Implement targetm.vectorize.add_stmt_cost.  */
  
  static unsigned
! arm_add_stmt_cost (void *data, int count, enum vect_cost_for_stmt kind,
! 		   struct _stmt_vec_info *stmt_info, int misalign,
! 		   enum vect_cost_model_location where)
  {
    unsigned *cost = (unsigned *) data;
    unsigned retval = 0;
  
    if (flag_vect_cost_model)
      {
-       tree vectype = stmt_info ? stmt_vectype (stmt_info) : NULL_TREE;
        int stmt_cost = arm_builtin_vectorization_cost (kind, vectype, misalign);
  
        /* Statements in an inner loop relative to the loop being
  	 vectorized are weighted more heavily.  The value here is
  	 arbitrary and could potentially be improved with analysis.  */
!       if (where == vect_body && stmt_info && stmt_in_inner_loop_p (stmt_info))
  	count *= 50;  /* FIXME.  */
  
        retval = (unsigned) (count * stmt_cost);
--- 12184,12206 ----
  /* Implement targetm.vectorize.add_stmt_cost.  */
  
  static unsigned
! arm_add_stmt_cost (vec_info *vinfo, void *data, int count,
! 		   enum vect_cost_for_stmt kind,
! 		   struct _stmt_vec_info *stmt_info, tree vectype,
! 		   int misalign, enum vect_cost_model_location where)
  {
    unsigned *cost = (unsigned *) data;
    unsigned retval = 0;
  
    if (flag_vect_cost_model)
      {
        int stmt_cost = arm_builtin_vectorization_cost (kind, vectype, misalign);
  
        /* Statements in an inner loop relative to the loop being
  	 vectorized are weighted more heavily.  The value here is
  	 arbitrary and could potentially be improved with analysis.  */
!       if (where == vect_body && stmt_info
! 	  && stmt_in_inner_loop_p (vinfo, stmt_info))
  	count *= 50;  /* FIXME.  */
  
        retval = (unsigned) (count * stmt_cost);
*************** arm_adjust_cost (rtx_insn *insn, int dep
*** 12402,12408 ****
  	 constant pool are cached, and that others will miss.  This is a
  	 hack.  */
  
!       if ((GET_CODE (src_mem) == SYMBOL_REF
  	   && CONSTANT_POOL_ADDRESS_P (src_mem))
  	  || reg_mentioned_p (stack_pointer_rtx, src_mem)
  	  || reg_mentioned_p (frame_pointer_rtx, src_mem)
--- 12433,12439 ----
  	 constant pool are cached, and that others will miss.  This is a
  	 hack.  */
  
!       if ((SYMBOL_REF_P (src_mem)
  	   && CONSTANT_POOL_ADDRESS_P (src_mem))
  	  || reg_mentioned_p (stack_pointer_rtx, src_mem)
  	  || reg_mentioned_p (frame_pointer_rtx, src_mem)
*************** arm_coproc_mem_operand_wb (rtx op, int w
*** 13244,13250 ****
    ind = XEXP (op, 0);
  
    if (reload_completed
!       && (GET_CODE (ind) == LABEL_REF
  	  || (GET_CODE (ind) == CONST
  	      && GET_CODE (XEXP (ind, 0)) == PLUS
  	      && GET_CODE (XEXP (XEXP (ind, 0), 0)) == LABEL_REF
--- 13275,13281 ----
    ind = XEXP (op, 0);
  
    if (reload_completed
!       && (LABEL_REF_P (ind)
  	  || (GET_CODE (ind) == CONST
  	      && GET_CODE (XEXP (ind, 0)) == PLUS
  	      && GET_CODE (XEXP (XEXP (ind, 0), 0)) == LABEL_REF
*************** int
*** 13320,13327 ****
  mve_vector_mem_operand (machine_mode mode, rtx op, bool strict)
  {
    enum rtx_code code;
!   HOST_WIDE_INT val;
!   int  reg_no;
  
    /* Match: (mem (reg)).  */
    if (REG_P (op))
--- 13351,13357 ----
  mve_vector_mem_operand (machine_mode mode, rtx op, bool strict)
  {
    enum rtx_code code;
!   int val, reg_no;
  
    /* Match: (mem (reg)).  */
    if (REG_P (op))
*************** mve_vector_mem_operand (machine_mode mod
*** 13351,13357 ****
        switch (mode)
  	{
  	  case E_V16QImode:
! 	    if (abs_hwi (val))
  	      return ((reg_no < LAST_ARM_REGNUM && reg_no != SP_REGNUM)
  		      || (!strict && reg_no >= FIRST_PSEUDO_REGISTER));
  	    return FALSE;
--- 13381,13387 ----
        switch (mode)
  	{
  	  case E_V16QImode:
! 	    if (abs (val) <= 127)
  	      return ((reg_no < LAST_ARM_REGNUM && reg_no != SP_REGNUM)
  		      || (!strict && reg_no >= FIRST_PSEUDO_REGISTER));
  	    return FALSE;
*************** mve_vector_mem_operand (machine_mode mod
*** 13363,13369 ****
  	    return FALSE;
  	  case E_V8QImode:
  	  case E_V4QImode:
! 	    if (abs_hwi (val))
  	      return (reg_no <= LAST_LO_REGNUM
  		      || (!strict && reg_no >= FIRST_PSEUDO_REGISTER));
  	    return FALSE;
--- 13393,13399 ----
  	    return FALSE;
  	  case E_V8QImode:
  	  case E_V4QImode:
! 	    if (abs (val) <= 127)
  	      return (reg_no <= LAST_LO_REGNUM
  		      || (!strict && reg_no >= FIRST_PSEUDO_REGISTER));
  	    return FALSE;
*************** neon_vector_mem_operand (rtx op, int typ
*** 13421,13427 ****
    ind = XEXP (op, 0);
  
    if (reload_completed
!       && (GET_CODE (ind) == LABEL_REF
  	  || (GET_CODE (ind) == CONST
  	      && GET_CODE (XEXP (ind, 0)) == PLUS
  	      && GET_CODE (XEXP (XEXP (ind, 0), 0)) == LABEL_REF
--- 13451,13457 ----
    ind = XEXP (op, 0);
  
    if (reload_completed
!       && (LABEL_REF_P (ind)
  	  || (GET_CODE (ind) == CONST
  	      && GET_CODE (XEXP (ind, 0)) == PLUS
  	      && GET_CODE (XEXP (XEXP (ind, 0), 0)) == LABEL_REF
*************** neon_struct_mem_operand (rtx op)
*** 13489,13495 ****
    ind = XEXP (op, 0);
  
    if (reload_completed
!       && (GET_CODE (ind) == LABEL_REF
  	  || (GET_CODE (ind) == CONST
  	      && GET_CODE (XEXP (ind, 0)) == PLUS
  	      && GET_CODE (XEXP (XEXP (ind, 0), 0)) == LABEL_REF
--- 13519,13525 ----
    ind = XEXP (op, 0);
  
    if (reload_completed
!       && (LABEL_REF_P (ind)
  	  || (GET_CODE (ind) == CONST
  	      && GET_CODE (XEXP (ind, 0)) == PLUS
  	      && GET_CODE (XEXP (XEXP (ind, 0), 0)) == LABEL_REF
*************** symbol_mentioned_p (rtx x)
*** 13605,13611 ****
    const char * fmt;
    int i;
  
!   if (GET_CODE (x) == SYMBOL_REF)
      return 1;
  
    /* UNSPEC_TLS entries for a symbol include the SYMBOL_REF, but they
--- 13635,13641 ----
    const char * fmt;
    int i;
  
!   if (SYMBOL_REF_P (x))
      return 1;
  
    /* UNSPEC_TLS entries for a symbol include the SYMBOL_REF, but they
*************** label_mentioned_p (rtx x)
*** 13639,13645 ****
    const char * fmt;
    int i;
  
!   if (GET_CODE (x) == LABEL_REF)
      return 1;
  
    /* UNSPEC_TLS entries for a symbol include a LABEL_REF for the referencing
--- 13669,13675 ----
    const char * fmt;
    int i;
  
!   if (LABEL_REF_P (x))
      return 1;
  
    /* UNSPEC_TLS entries for a symbol include a LABEL_REF for the referencing
*************** load_multiple_sequence (rtx *operands, i
*** 14277,14287 ****
        offset = const0_rtx;
  
        if ((REG_P (reg = XEXP (operands[nops + i], 0))
! 	   || (GET_CODE (reg) == SUBREG
  	       && REG_P (reg = SUBREG_REG (reg))))
  	  || (GET_CODE (XEXP (operands[nops + i], 0)) == PLUS
  	      && ((REG_P (reg = XEXP (XEXP (operands[nops + i], 0), 0)))
! 		  || (GET_CODE (reg) == SUBREG
  		      && REG_P (reg = SUBREG_REG (reg))))
  	      && (CONST_INT_P (offset
  		  = XEXP (XEXP (operands[nops + i], 0), 1)))))
--- 14307,14317 ----
        offset = const0_rtx;
  
        if ((REG_P (reg = XEXP (operands[nops + i], 0))
! 	   || (SUBREG_P (reg)
  	       && REG_P (reg = SUBREG_REG (reg))))
  	  || (GET_CODE (XEXP (operands[nops + i], 0)) == PLUS
  	      && ((REG_P (reg = XEXP (XEXP (operands[nops + i], 0), 0)))
! 		  || (SUBREG_P (reg)
  		      && REG_P (reg = SUBREG_REG (reg))))
  	      && (CONST_INT_P (offset
  		  = XEXP (XEXP (operands[nops + i], 0), 1)))))
*************** store_multiple_sequence (rtx *operands,
*** 14431,14441 ****
        offset = const0_rtx;
  
        if ((REG_P (reg = XEXP (operands[nops + i], 0))
! 	   || (GET_CODE (reg) == SUBREG
  	       && REG_P (reg = SUBREG_REG (reg))))
  	  || (GET_CODE (XEXP (operands[nops + i], 0)) == PLUS
  	      && ((REG_P (reg = XEXP (XEXP (operands[nops + i], 0), 0)))
! 		  || (GET_CODE (reg) == SUBREG
  		      && REG_P (reg = SUBREG_REG (reg))))
  	      && (CONST_INT_P (offset
  		  = XEXP (XEXP (operands[nops + i], 0), 1)))))
--- 14461,14471 ----
        offset = const0_rtx;
  
        if ((REG_P (reg = XEXP (operands[nops + i], 0))
! 	   || (SUBREG_P (reg)
  	       && REG_P (reg = SUBREG_REG (reg))))
  	  || (GET_CODE (XEXP (operands[nops + i], 0)) == PLUS
  	      && ((REG_P (reg = XEXP (XEXP (operands[nops + i], 0), 0)))
! 		  || (SUBREG_P (reg)
  		      && REG_P (reg = SUBREG_REG (reg))))
  	      && (CONST_INT_P (offset
  		  = XEXP (XEXP (operands[nops + i], 0), 1)))))
*************** arm_select_cc_mode (enum rtx_code op, rt
*** 15765,15771 ****
    /* A compare with a shifted operand.  Because of canonicalization, the
       comparison will have to be swapped when we emit the assembler.  */
    if (GET_MODE (y) == SImode
!       && (REG_P (y) || (GET_CODE (y) == SUBREG))
        && (GET_CODE (x) == ASHIFT || GET_CODE (x) == ASHIFTRT
  	  || GET_CODE (x) == LSHIFTRT || GET_CODE (x) == ROTATE
  	  || GET_CODE (x) == ROTATERT))
--- 15795,15801 ----
    /* A compare with a shifted operand.  Because of canonicalization, the
       comparison will have to be swapped when we emit the assembler.  */
    if (GET_MODE (y) == SImode
!       && (REG_P (y) || (SUBREG_P (y)))
        && (GET_CODE (x) == ASHIFT || GET_CODE (x) == ASHIFTRT
  	  || GET_CODE (x) == LSHIFTRT || GET_CODE (x) == ROTATE
  	  || GET_CODE (x) == ROTATERT))
*************** arm_select_cc_mode (enum rtx_code op, rt
*** 15789,15802 ****
       non-canonical, but arm_gen_compare_reg uses this to generate the
       correct canonical form.  */
    if (GET_MODE (y) == SImode
!       && (REG_P (y) || GET_CODE (y) == SUBREG)
        && CONST_INT_P (x))
      return CC_RSBmode;
  
    /* This operation is performed swapped, but since we only rely on the Z
       flag we don't need an additional mode.  */
    if (GET_MODE (y) == SImode
!       && (REG_P (y) || (GET_CODE (y) == SUBREG))
        && GET_CODE (x) == NEG
        && (op ==	EQ || op == NE))
      return CC_Zmode;
--- 15819,15832 ----
       non-canonical, but arm_gen_compare_reg uses this to generate the
       correct canonical form.  */
    if (GET_MODE (y) == SImode
!       && (REG_P (y) || SUBREG_P (y))
        && CONST_INT_P (x))
      return CC_RSBmode;
  
    /* This operation is performed swapped, but since we only rely on the Z
       flag we don't need an additional mode.  */
    if (GET_MODE (y) == SImode
!       && (REG_P (y) || (SUBREG_P (y)))
        && GET_CODE (x) == NEG
        && (op ==	EQ || op == NE))
      return CC_Zmode;
*************** arm_reload_in_hi (rtx *operands)
*** 16188,16194 ****
    rtx base, scratch;
    HOST_WIDE_INT offset = 0;
  
!   if (GET_CODE (ref) == SUBREG)
      {
        offset = SUBREG_BYTE (ref);
        ref = SUBREG_REG (ref);
--- 16218,16224 ----
    rtx base, scratch;
    HOST_WIDE_INT offset = 0;
  
!   if (SUBREG_P (ref))
      {
        offset = SUBREG_BYTE (ref);
        ref = SUBREG_REG (ref);
*************** arm_reload_out_hi (rtx *operands)
*** 16316,16322 ****
    rtx base, scratch;
    HOST_WIDE_INT offset = 0;
  
!   if (GET_CODE (ref) == SUBREG)
      {
        offset = SUBREG_BYTE (ref);
        ref = SUBREG_REG (ref);
--- 16346,16352 ----
    rtx base, scratch;
    HOST_WIDE_INT offset = 0;
  
!   if (SUBREG_P (ref))
      {
        offset = SUBREG_BYTE (ref);
        ref = SUBREG_REG (ref);
*************** mem_ok_for_ldrd_strd (rtx mem, rtx *base
*** 16647,16653 ****
      return false;
  
    /* Can't deal with subregs.  */
!   if (GET_CODE (mem) == SUBREG)
      return false;
  
    gcc_assert (MEM_P (mem));
--- 16677,16683 ----
      return false;
  
    /* Can't deal with subregs.  */
!   if (SUBREG_P (mem))
      return false;
  
    gcc_assert (MEM_P (mem));
*************** arm_emit_call_insn (rtx pat, rtx addr, b
*** 19547,19553 ****
    if (TARGET_VXWORKS_RTP
        && flag_pic
        && !sibcall
!       && GET_CODE (addr) == SYMBOL_REF
        && (SYMBOL_REF_DECL (addr)
  	  ? !targetm.binds_local_p (SYMBOL_REF_DECL (addr))
  	  : !SYMBOL_REF_LOCAL_P (addr)))
--- 19577,19583 ----
    if (TARGET_VXWORKS_RTP
        && flag_pic
        && !sibcall
!       && SYMBOL_REF_P (addr)
        && (SYMBOL_REF_DECL (addr)
  	  ? !targetm.binds_local_p (SYMBOL_REF_DECL (addr))
  	  : !SYMBOL_REF_LOCAL_P (addr)))
*************** output_move_neon (rtx *operands)
*** 20394,20400 ****
  	      }
  	    else
  	      {
! 		if (TARGET_HAVE_MVE && GET_CODE (addr) == LABEL_REF)
  		  sprintf (buff, "v%sr.64\t%%P0, %%1", load ? "ld" : "st");
  		else
  		  sprintf (buff, "v%sr%%?\t%%P0, %%1", load ? "ld" : "st");
--- 20424,20430 ----
  	      }
  	    else
  	      {
! 		if (TARGET_HAVE_MVE && LABEL_REF_P (addr))
  		  sprintf (buff, "v%sr.64\t%%P0, %%1", load ? "ld" : "st");
  		else
  		  sprintf (buff, "v%sr%%?\t%%P0, %%1", load ? "ld" : "st");
*************** output_move_neon (rtx *operands)
*** 20405,20411 ****
  	  {
  	    ops[0] = gen_rtx_REG (DImode, REGNO (reg) + 2 * overlap);
  	    ops[1] = adjust_address (mem, SImode, 8 * overlap);
! 	    if (TARGET_HAVE_MVE && GET_CODE (addr) == LABEL_REF)
  	      sprintf (buff, "v%sr.32\t%%P0, %%1", load ? "ld" : "st");
  	    else
  	      sprintf (buff, "v%sr%%?\t%%P0, %%1", load ? "ld" : "st");
--- 20435,20441 ----
  	  {
  	    ops[0] = gen_rtx_REG (DImode, REGNO (reg) + 2 * overlap);
  	    ops[1] = adjust_address (mem, SImode, 8 * overlap);
! 	    if (TARGET_HAVE_MVE && LABEL_REF_P (addr))
  	      sprintf (buff, "v%sr.32\t%%P0, %%1", load ? "ld" : "st");
  	    else
  	      sprintf (buff, "v%sr%%?\t%%P0, %%1", load ? "ld" : "st");
*************** arm_attr_length_move_neon (rtx_insn *ins
*** 20465,20471 ****
    if (GET_CODE (addr) == CONST && GET_CODE (XEXP (addr, 0)) == PLUS)
      addr = XEXP (addr, 0);
  
!   if (GET_CODE (addr) == LABEL_REF || GET_CODE (addr) == PLUS)
      {
        int insns = REG_NREGS (reg) / 2;
        return insns * 4;
--- 20495,20501 ----
    if (GET_CODE (addr) == CONST && GET_CODE (XEXP (addr, 0)) == PLUS)
      addr = XEXP (addr, 0);
  
!   if (LABEL_REF_P (addr) || GET_CODE (addr) == PLUS)
      {
        int insns = REG_NREGS (reg) / 2;
        return insns * 4;
*************** arm_compute_save_reg0_reg12_mask (void)
*** 20799,20806 ****
  	max_reg = 12;
  
        for (reg = 0; reg <= max_reg; reg++)
! 	if (df_regs_ever_live_p (reg)
! 	    || (! crtl->is_leaf && call_used_or_fixed_reg_p (reg)))
  	  save_reg_mask |= (1 << reg);
  
        /* Also save the pic base register if necessary.  */
--- 20829,20835 ----
  	max_reg = 12;
  
        for (reg = 0; reg <= max_reg; reg++)
! 	if (reg_needs_saving_p (reg))
  	  save_reg_mask |= (1 << reg);
  
        /* Also save the pic base register if necessary.  */
*************** thumb1_compute_save_core_reg_mask (void)
*** 21069,21075 ****
    return mask;
  }
  
- 
  /* Return the number of bytes required to save VFP registers.  */
  static int
  arm_get_vfp_saved_size (void)
--- 21098,21103 ----
*************** arm_get_vfp_saved_size (void)
*** 21087,21096 ****
  	   regno < LAST_VFP_REGNUM;
  	   regno += 2)
  	{
! 	  if ((!df_regs_ever_live_p (regno)
! 	       || call_used_or_fixed_reg_p (regno))
! 	      && (!df_regs_ever_live_p (regno + 1)
! 		  || call_used_or_fixed_reg_p (regno + 1)))
  	    {
  	      if (count > 0)
  		{
--- 21115,21121 ----
  	   regno < LAST_VFP_REGNUM;
  	   regno += 2)
  	{
! 	  if (!reg_needs_saving_p (regno) && !reg_needs_saving_p (regno + 1))
  	    {
  	      if (count > 0)
  		{
*************** arm_compute_frame_layout (void)
*** 22615,22622 ****
  	  for (regno = FIRST_IWMMXT_REGNUM;
  	       regno <= LAST_IWMMXT_REGNUM;
  	       regno++)
! 	    if (df_regs_ever_live_p (regno)
! 		&& !call_used_or_fixed_reg_p (regno))
  	      saved += 8;
  	}
  
--- 22640,22646 ----
  	  for (regno = FIRST_IWMMXT_REGNUM;
  	       regno <= LAST_IWMMXT_REGNUM;
  	       regno++)
! 	    if (reg_needs_saving_p (regno))
  	      saved += 8;
  	}
  
*************** arm_save_coproc_regs(void)
*** 22837,22844 ****
    unsigned start_reg;
    rtx insn;
  
    for (reg = LAST_IWMMXT_REGNUM; reg >= FIRST_IWMMXT_REGNUM; reg--)
!     if (df_regs_ever_live_p (reg) && !call_used_or_fixed_reg_p (reg))
        {
  	insn = gen_rtx_PRE_DEC (Pmode, stack_pointer_rtx);
  	insn = gen_rtx_MEM (V2SImode, insn);
--- 22861,22869 ----
    unsigned start_reg;
    rtx insn;
  
+   if (TARGET_REALLY_IWMMXT)
    for (reg = LAST_IWMMXT_REGNUM; reg >= FIRST_IWMMXT_REGNUM; reg--)
!     if (reg_needs_saving_p (reg))
        {
  	insn = gen_rtx_PRE_DEC (Pmode, stack_pointer_rtx);
  	insn = gen_rtx_MEM (V2SImode, insn);
*************** arm_save_coproc_regs(void)
*** 22853,22861 ****
  
        for (reg = FIRST_VFP_REGNUM; reg < LAST_VFP_REGNUM; reg += 2)
  	{
! 	  if ((!df_regs_ever_live_p (reg) || call_used_or_fixed_reg_p (reg))
! 	      && (!df_regs_ever_live_p (reg + 1)
! 		  || call_used_or_fixed_reg_p (reg + 1)))
  	    {
  	      if (start_reg != reg)
  		saved_size += vfp_emit_fstmd (start_reg,
--- 22878,22884 ----
  
        for (reg = FIRST_VFP_REGNUM; reg < LAST_VFP_REGNUM; reg += 2)
  	{
! 	  if (!reg_needs_saving_p (reg) && !reg_needs_saving_p (reg + 1))
  	    {
  	      if (start_reg != reg)
  		saved_size += vfp_emit_fstmd (start_reg,
*************** arm_assemble_integer (rtx x, unsigned in
*** 24466,24472 ****
        /* Mark symbols as position independent.  We only do this in the
  	 .text segment, not in the .data segment.  */
        if (NEED_GOT_RELOC && flag_pic && making_const_table &&
! 	  (GET_CODE (x) == SYMBOL_REF || GET_CODE (x) == LABEL_REF))
  	{
  	  /* See legitimize_pic_address for an explanation of the
  	     TARGET_VXWORKS_RTP check.  */
--- 24489,24495 ----
        /* Mark symbols as position independent.  We only do this in the
  	 .text segment, not in the .data segment.  */
        if (NEED_GOT_RELOC && flag_pic && making_const_table &&
! 	  (SYMBOL_REF_P (x) || LABEL_REF_P (x)))
  	{
  	  /* See legitimize_pic_address for an explanation of the
  	     TARGET_VXWORKS_RTP check.  */
*************** arm_assemble_integer (rtx x, unsigned in
*** 24474,24480 ****
  	     they may be overridden by a non-weak definition at link
  	     time.  */
  	  if (!arm_pic_data_is_text_relative
! 	      || (GET_CODE (x) == SYMBOL_REF
  		  && (!SYMBOL_REF_LOCAL_P (x)
  		      || (SYMBOL_REF_DECL (x)
  			  ? DECL_WEAK (SYMBOL_REF_DECL (x)) : 0)
--- 24497,24503 ----
  	     they may be overridden by a non-weak definition at link
  	     time.  */
  	  if (!arm_pic_data_is_text_relative
! 	      || (SYMBOL_REF_P (x)
  		  && (!SYMBOL_REF_LOCAL_P (x)
  		      || (SYMBOL_REF_DECL (x)
  			  ? DECL_WEAK (SYMBOL_REF_DECL (x)) : 0)
*************** thumb1_expand_prologue (void)
*** 26644,26650 ****
  
    if (IS_INTERRUPT (func_type))
      {
!       error ("interrupt Service Routines cannot be coded in Thumb mode");
        return;
      }
  
--- 26667,26673 ----
  
    if (IS_INTERRUPT (func_type))
      {
!       error ("Interrupt Service Routines cannot be coded in Thumb-1 mode");
        return;
      }
  
*************** cmse_nonsecure_entry_clear_before_return
*** 27007,27013 ****
  	continue;
        if (IN_RANGE (regno, IP_REGNUM, PC_REGNUM))
  	continue;
!       if (call_used_or_fixed_reg_p (regno)
  	  && (!IN_RANGE (regno, FIRST_VFP_REGNUM, LAST_VFP_REGNUM)
  	      || TARGET_HARD_FLOAT))
  	bitmap_set_bit (to_clear_bitmap, regno);
--- 27030,27036 ----
  	continue;
        if (IN_RANGE (regno, IP_REGNUM, PC_REGNUM))
  	continue;
!       if (!callee_saved_reg_p (regno)
  	  && (!IN_RANGE (regno, FIRST_VFP_REGNUM, LAST_VFP_REGNUM)
  	      || TARGET_HARD_FLOAT))
  	bitmap_set_bit (to_clear_bitmap, regno);
*************** thumb1_expand_epilogue (void)
*** 27161,27167 ****
    /* Emit a clobber for each insn that will be restored in the epilogue,
       so that flow2 will get register lifetimes correct.  */
    for (regno = 0; regno < 13; regno++)
!     if (df_regs_ever_live_p (regno) && !call_used_or_fixed_reg_p (regno))
        emit_clobber (gen_rtx_REG (SImode, regno));
  
    if (! df_regs_ever_live_p (LR_REGNUM))
--- 27184,27190 ----
    /* Emit a clobber for each insn that will be restored in the epilogue,
       so that flow2 will get register lifetimes correct.  */
    for (regno = 0; regno < 13; regno++)
!     if (reg_needs_saving_p (regno))
        emit_clobber (gen_rtx_REG (SImode, regno));
  
    if (! df_regs_ever_live_p (LR_REGNUM))
*************** arm_expand_epilogue_apcs_frame (bool rea
*** 27227,27235 ****
  
        for (i = FIRST_VFP_REGNUM; i < LAST_VFP_REGNUM; i += 2)
          /* Look for a case where a reg does not need restoring.  */
!         if ((!df_regs_ever_live_p (i) || call_used_or_fixed_reg_p (i))
!             && (!df_regs_ever_live_p (i + 1)
!                 || call_used_or_fixed_reg_p (i + 1)))
            {
              if (start_reg != i)
                arm_emit_vfp_multi_reg_pop (start_reg,
--- 27250,27256 ----
  
        for (i = FIRST_VFP_REGNUM; i < LAST_VFP_REGNUM; i += 2)
          /* Look for a case where a reg does not need restoring.  */
! 	if (!reg_needs_saving_p (i) && !reg_needs_saving_p (i + 1))
            {
              if (start_reg != i)
                arm_emit_vfp_multi_reg_pop (start_reg,
*************** arm_expand_epilogue_apcs_frame (bool rea
*** 27256,27262 ****
        int lrm_count = (num_regs % 2) ? (num_regs + 2) : (num_regs + 1);
  
        for (i = LAST_IWMMXT_REGNUM; i >= FIRST_IWMMXT_REGNUM; i--)
!         if (df_regs_ever_live_p (i) && !call_used_or_fixed_reg_p (i))
            {
              rtx addr = gen_frame_mem (V2SImode,
                                   plus_constant (Pmode, hard_frame_pointer_rtx,
--- 27277,27283 ----
        int lrm_count = (num_regs % 2) ? (num_regs + 2) : (num_regs + 1);
  
        for (i = LAST_IWMMXT_REGNUM; i >= FIRST_IWMMXT_REGNUM; i--)
! 	if (reg_needs_saving_p (i))
            {
              rtx addr = gen_frame_mem (V2SImode,
                                   plus_constant (Pmode, hard_frame_pointer_rtx,
*************** arm_expand_epilogue (bool really_return)
*** 27461,27469 ****
           unlike pop, vldm can only do consecutive regs.  */
        for (i = LAST_VFP_REGNUM - 1; i >= FIRST_VFP_REGNUM; i -= 2)
          /* Look for a case where a reg does not need restoring.  */
!         if ((!df_regs_ever_live_p (i) || call_used_or_fixed_reg_p (i))
!             && (!df_regs_ever_live_p (i + 1)
!                 || call_used_or_fixed_reg_p (i + 1)))
            {
              /* Restore the regs discovered so far (from reg+2 to
                 end_reg).  */
--- 27482,27488 ----
           unlike pop, vldm can only do consecutive regs.  */
        for (i = LAST_VFP_REGNUM - 1; i >= FIRST_VFP_REGNUM; i -= 2)
          /* Look for a case where a reg does not need restoring.  */
! 	if (!reg_needs_saving_p (i) && !reg_needs_saving_p (i + 1))
            {
              /* Restore the regs discovered so far (from reg+2 to
                 end_reg).  */
*************** arm_expand_epilogue (bool really_return)
*** 27485,27491 ****
  
    if (TARGET_IWMMXT)
      for (i = FIRST_IWMMXT_REGNUM; i <= LAST_IWMMXT_REGNUM; i++)
!       if (df_regs_ever_live_p (i) && !call_used_or_fixed_reg_p (i))
          {
            rtx_insn *insn;
            rtx addr = gen_rtx_MEM (V2SImode,
--- 27504,27510 ----
  
    if (TARGET_IWMMXT)
      for (i = FIRST_IWMMXT_REGNUM; i <= LAST_IWMMXT_REGNUM; i++)
!       if (reg_needs_saving_p (i))
          {
            rtx_insn *insn;
            rtx addr = gen_rtx_MEM (V2SImode,
*************** arm_file_start (void)
*** 28140,28153 ****
        if (print_tune_info)
  	arm_print_tune_info ();
  
!       if (! TARGET_SOFT_FLOAT)
! 	{
! 	  if (TARGET_HARD_FLOAT && TARGET_VFP_SINGLE)
! 	    arm_emit_eabi_attribute ("Tag_ABI_HardFP_use", 27, 1);
  
! 	  if (TARGET_HARD_FLOAT_ABI)
! 	    arm_emit_eabi_attribute ("Tag_ABI_VFP_args", 28, 1);
! 	}
  
        /* Some of these attributes only apply when the corresponding features
  	 are used.  However we don't have any easy way of figuring this out.
--- 28159,28169 ----
        if (print_tune_info)
  	arm_print_tune_info ();
  
!       if (TARGET_HARD_FLOAT && TARGET_VFP_SINGLE)
! 	arm_emit_eabi_attribute ("Tag_ABI_HardFP_use", 27, 1);
  
!       if (TARGET_HARD_FLOAT_ABI)
! 	arm_emit_eabi_attribute ("Tag_ABI_VFP_args", 28, 1);
  
        /* Some of these attributes only apply when the corresponding features
  	 are used.  However we don't have any easy way of figuring this out.
*************** arm_internal_label (FILE *stream, const
*** 28255,28260 ****
--- 28271,28475 ----
    default_internal_label (stream, prefix, labelno);
  }
  
+ /* Define classes to generate code as RTL or output asm to a file.
+    Using templates then allows to use the same code to output code
+    sequences in the two formats.  */
+ class thumb1_const_rtl
+ {
+  public:
+   thumb1_const_rtl (rtx dst) : dst (dst) {}
+ 
+   void mov (HOST_WIDE_INT val)
+   {
+     emit_set_insn (dst, GEN_INT (val));
+   }
+ 
+   void add (HOST_WIDE_INT val)
+   {
+     emit_set_insn (dst, gen_rtx_PLUS (SImode, dst, GEN_INT (val)));
+   }
+ 
+   void ashift (HOST_WIDE_INT shift)
+   {
+     emit_set_insn (dst, gen_rtx_ASHIFT (SImode, dst, GEN_INT (shift)));
+   }
+ 
+   void neg ()
+   {
+     emit_set_insn (dst, gen_rtx_NEG (SImode, dst));
+   }
+ 
+  private:
+   rtx dst;
+ };
+ 
+ class thumb1_const_print
+ {
+  public:
+   thumb1_const_print (FILE *f, int regno)
+   {
+     t_file = f;
+     dst_regname = reg_names[regno];
+   }
+ 
+   void mov (HOST_WIDE_INT val)
+   {
+     asm_fprintf (t_file, "\tmovs\t%s, #" HOST_WIDE_INT_PRINT_DEC "\n",
+ 		 dst_regname, val);
+   }
+ 
+   void add (HOST_WIDE_INT val)
+   {
+     asm_fprintf (t_file, "\tadds\t%s, #" HOST_WIDE_INT_PRINT_DEC "\n",
+ 		 dst_regname, val);
+   }
+ 
+   void ashift (HOST_WIDE_INT shift)
+   {
+     asm_fprintf (t_file, "\tlsls\t%s, #" HOST_WIDE_INT_PRINT_DEC "\n",
+ 		 dst_regname, shift);
+   }
+ 
+   void neg ()
+   {
+     asm_fprintf (t_file, "\trsbs\t%s, #0\n", dst_regname);
+   }
+ 
+  private:
+   FILE *t_file;
+   const char *dst_regname;
+ };
+ 
+ /* Emit a sequence of movs/adds/shift to produce a 32-bit constant.
+    Avoid generating useless code when one of the bytes is zero.  */
+ template <class T>
+ void
+ thumb1_gen_const_int_1 (T dst, HOST_WIDE_INT op1)
+ {
+   bool mov_done_p = false;
+   unsigned HOST_WIDE_INT val = op1;
+   int shift = 0;
+   int i;
+ 
+   gcc_assert (op1 == trunc_int_for_mode (op1, SImode));
+ 
+   if (val <= 255)
+     {
+       dst.mov (val);
+       return;
+     }
+ 
+   /* For negative numbers with the first nine bits set, build the
+      opposite of OP1, then negate it, it's generally shorter and not
+      longer.  */
+   if ((val & 0xFF800000) == 0xFF800000)
+     {
+       thumb1_gen_const_int_1 (dst, -op1);
+       dst.neg ();
+       return;
+     }
+ 
+   /* In the general case, we need 7 instructions to build
+      a 32 bits constant (1 movs, 3 lsls, 3 adds). We can
+      do better if VAL is small enough, or
+      right-shiftable by a suitable amount.  If the
+      right-shift enables to encode at least one less byte,
+      it's worth it: we save a adds and a lsls at the
+      expense of a final lsls.  */
+   int final_shift = number_of_first_bit_set (val);
+ 
+   int leading_zeroes = clz_hwi (val);
+   int number_of_bytes_needed
+     = ((HOST_BITS_PER_WIDE_INT - 1 - leading_zeroes)
+        / BITS_PER_UNIT) + 1;
+   int number_of_bytes_needed2
+     = ((HOST_BITS_PER_WIDE_INT - 1 - leading_zeroes - final_shift)
+        / BITS_PER_UNIT) + 1;
+ 
+   if (number_of_bytes_needed2 < number_of_bytes_needed)
+     val >>= final_shift;
+   else
+     final_shift = 0;
+ 
+   /* If we are in a very small range, we can use either a single movs
+      or movs+adds.  */
+   if (val <= 510)
+     {
+       if (val > 255)
+ 	{
+ 	  unsigned HOST_WIDE_INT high = val - 255;
+ 
+ 	  dst.mov (high);
+ 	  dst.add (255);
+ 	}
+       else
+ 	dst.mov (val);
+ 
+       if (final_shift > 0)
+ 	dst.ashift (final_shift);
+     }
+   else
+     {
+       /* General case, emit upper 3 bytes as needed.  */
+       for (i = 0; i < 3; i++)
+ 	{
+ 	  unsigned HOST_WIDE_INT byte = (val >> (8 * (3 - i))) & 0xff;
+ 
+ 	  if (byte)
+ 	    {
+ 	      /* We are about to emit new bits, stop accumulating a
+ 		 shift amount, and left-shift only if we have already
+ 		 emitted some upper bits.  */
+ 	      if (mov_done_p)
+ 		{
+ 		  dst.ashift (shift);
+ 		  dst.add (byte);
+ 		}
+ 	      else
+ 		dst.mov (byte);
+ 
+ 	      /* Stop accumulating shift amount since we've just
+ 		 emitted some bits.  */
+ 	      shift = 0;
+ 
+ 	      mov_done_p = true;
+ 	    }
+ 
+ 	  if (mov_done_p)
+ 	    shift += 8;
+ 	}
+ 
+       /* Emit lower byte.  */
+       if (!mov_done_p)
+ 	dst.mov (val & 0xff);
+       else
+ 	{
+ 	  dst.ashift (shift);
+ 	  if (val & 0xff)
+ 	    dst.add (val & 0xff);
+ 	}
+ 
+       if (final_shift > 0)
+ 	dst.ashift (final_shift);
+     }
+ }
+ 
+ /* Proxies for thumb1.md, since the thumb1_const_print and
+    thumb1_const_rtl classes are not exported.  */
+ void
+ thumb1_gen_const_int_rtl (rtx dst, HOST_WIDE_INT op1)
+ {
+   thumb1_const_rtl t (dst);
+   thumb1_gen_const_int_1 (t, op1);
+ }
+ 
+ void
+ thumb1_gen_const_int_print (rtx dst, HOST_WIDE_INT op1)
+ {
+   thumb1_const_print t (asm_out_file, REGNO (dst));
+   thumb1_gen_const_int_1 (t, op1);
+ }
+ 
  /* Output code to add DELTA to the first argument, and then jump
     to FUNCTION.  Used for C++ multiple inheritance.  */
  
*************** arm_thumb1_mi_thunk (FILE *file, tree, H
*** 28353,28361 ****
      {
        if (mi_delta > 255)
  	{
! 	  fputs ("\tldr\tr3, ", file);
! 	  assemble_name (file, label);
! 	  fputs ("+4\n", file);
  	  asm_fprintf (file, "\t%ss\t%r, %r, r3\n",
  		       mi_op, this_regno, this_regno);
  	}
--- 28568,28586 ----
      {
        if (mi_delta > 255)
  	{
! 	  /* With -mpure-code, we cannot load MI_DELTA from the
! 	     constant pool: we build it explicitly.  */
! 	  if (target_pure_code)
! 	    {
! 	      thumb1_const_print r3 (file, 3);
! 	      thumb1_gen_const_int_1 (r3, mi_delta);
! 	    }
! 	  else
! 	    {
! 	      fputs ("\tldr\tr3, ", file);
! 	      assemble_name (file, label);
! 	      fputs ("+4\n", file);
! 	    }
  	  asm_fprintf (file, "\t%ss\t%r, %r, r3\n",
  		       mi_op, this_regno, this_regno);
  	}
*************** arm_thumb1_mi_thunk (FILE *file, tree, H
*** 28391,28420 ****
  	fputs ("\tpop\t{r3}\n", file);
  
        fprintf (file, "\tbx\tr12\n");
!       ASM_OUTPUT_ALIGN (file, 2);
!       assemble_name (file, label);
!       fputs (":\n", file);
!       if (flag_pic)
  	{
! 	  /* Output ".word .LTHUNKn-[3,7]-.LTHUNKPCn".  */
! 	  rtx tem = XEXP (DECL_RTL (function), 0);
! 	  /* For TARGET_THUMB1_ONLY the thunk is in Thumb mode, so the PC
! 	     pipeline offset is four rather than eight.  Adjust the offset
! 	     accordingly.  */
! 	  tem = plus_constant (GET_MODE (tem), tem,
! 			       TARGET_THUMB1_ONLY ? -3 : -7);
! 	  tem = gen_rtx_MINUS (GET_MODE (tem),
! 			       tem,
! 			       gen_rtx_SYMBOL_REF (Pmode,
! 						   ggc_strdup (labelpc)));
! 	  assemble_integer (tem, 4, BITS_PER_WORD, 1);
! 	}
!       else
! 	/* Output ".word .LTHUNKn".  */
! 	assemble_integer (XEXP (DECL_RTL (function), 0), 4, BITS_PER_WORD, 1);
  
!       if (TARGET_THUMB1_ONLY && mi_delta > 255)
! 	assemble_integer (GEN_INT(mi_delta), 4, BITS_PER_WORD, 1);
      }
    else
      {
--- 28616,28652 ----
  	fputs ("\tpop\t{r3}\n", file);
  
        fprintf (file, "\tbx\tr12\n");
! 
!       /* With -mpure-code, we don't need to emit literals for the
! 	 function address and delta since we emitted code to build
! 	 them.  */
!       if (!target_pure_code)
  	{
! 	  ASM_OUTPUT_ALIGN (file, 2);
! 	  assemble_name (file, label);
! 	  fputs (":\n", file);
! 	  if (flag_pic)
! 	    {
! 	      /* Output ".word .LTHUNKn-[3,7]-.LTHUNKPCn".  */
! 	      rtx tem = XEXP (DECL_RTL (function), 0);
! 	      /* For TARGET_THUMB1_ONLY the thunk is in Thumb mode, so the PC
! 		 pipeline offset is four rather than eight.  Adjust the offset
! 		 accordingly.  */
! 	      tem = plus_constant (GET_MODE (tem), tem,
! 				   TARGET_THUMB1_ONLY ? -3 : -7);
! 	      tem = gen_rtx_MINUS (GET_MODE (tem),
! 				   tem,
! 				   gen_rtx_SYMBOL_REF (Pmode,
! 						       ggc_strdup (labelpc)));
! 	      assemble_integer (tem, 4, BITS_PER_WORD, 1);
! 	    }
! 	  else
! 	    /* Output ".word .LTHUNKn".  */
! 	    assemble_integer (XEXP (DECL_RTL (function), 0), 4, BITS_PER_WORD, 1);
  
! 	  if (TARGET_THUMB1_ONLY && mi_delta > 255)
! 	    assemble_integer (GEN_INT (mi_delta), 4, BITS_PER_WORD, 1);
! 	}
      }
    else
      {
*************** arm_preferred_simd_mode (scalar_mode mod
*** 28935,28940 ****
--- 29167,29174 ----
    if (TARGET_NEON)
      switch (mode)
        {
+       case E_HFmode:
+ 	return TARGET_NEON_VECTORIZE_DOUBLE ? V4HFmode : V8HFmode;
        case E_SFmode:
  	return TARGET_NEON_VECTORIZE_DOUBLE ? V2SFmode : V4SFmode;
        case E_SImode:
*************** arm_preferred_simd_mode (scalar_mode mod
*** 28964,28969 ****
--- 29198,29227 ----
        default:;
        }
  
+   if (TARGET_HAVE_MVE)
+     switch (mode)
+       {
+       case E_QImode:
+ 	return V16QImode;
+       case E_HImode:
+ 	return V8HImode;
+       case E_SImode:
+ 	return V4SImode;
+ 
+       default:;
+       }
+ 
+   if (TARGET_HAVE_MVE_FLOAT)
+     switch (mode)
+       {
+       case E_HFmode:
+ 	return V8HFmode;
+       case E_SFmode:
+ 	return V4SFmode;
+ 
+       default:;
+       }
+ 
    return word_mode;
  }
  
*************** arm_frame_pointer_required (void)
*** 29884,29895 ****
    return false;
  }
  
! /* Only thumb1 can't support conditional execution, so return true if
!    the target is not thumb1.  */
  static bool
  arm_have_conditional_execution (void)
  {
!   return !TARGET_THUMB1;
  }
  
  /* The AAPCS sets the maximum alignment of a vector to 64 bits.  */
--- 30142,30164 ----
    return false;
  }
  
! /* Implement the TARGET_HAVE_CONDITIONAL_EXECUTION hook.
!    All modes except THUMB1 have conditional execution.
!    If we have conditional arithmetic, return false before reload to
!    enable some ifcvt transformations. */
  static bool
  arm_have_conditional_execution (void)
  {
!   bool has_cond_exec, enable_ifcvt_trans;
! 
!   /* Only THUMB1 cannot support conditional execution. */
!   has_cond_exec = !TARGET_THUMB1;
! 
!   /* Enable ifcvt transformations if we have conditional arithmetic, but only
!      before reload. */
!   enable_ifcvt_trans = TARGET_COND_ARITH && !reload_completed;
! 
!   return has_cond_exec && !enable_ifcvt_trans;
  }
  
  /* The AAPCS sets the maximum alignment of a vector to 64 bits.  */
*************** arm_split_atomic_op (enum rtx_code code,
*** 30637,30642 ****
--- 30906,31032 ----
      arm_post_atomic_barrier (model);
  }
  
+ /* Expand code to compare vectors OP0 and OP1 using condition CODE.
+    If CAN_INVERT, store either the result or its inverse in TARGET
+    and return true if TARGET contains the inverse.  If !CAN_INVERT,
+    always store the result in TARGET, never its inverse.
+ 
+    Note that the handling of floating-point comparisons is not
+    IEEE compliant.  */
+ 
+ bool
+ arm_expand_vector_compare (rtx target, rtx_code code, rtx op0, rtx op1,
+ 			   bool can_invert)
+ {
+   machine_mode cmp_result_mode = GET_MODE (target);
+   machine_mode cmp_mode = GET_MODE (op0);
+ 
+   bool inverted;
+   switch (code)
+     {
+     /* For these we need to compute the inverse of the requested
+        comparison.  */
+     case UNORDERED:
+     case UNLT:
+     case UNLE:
+     case UNGT:
+     case UNGE:
+     case UNEQ:
+     case NE:
+       code = reverse_condition_maybe_unordered (code);
+       if (!can_invert)
+ 	{
+ 	  /* Recursively emit the inverted comparison into a temporary
+ 	     and then store its inverse in TARGET.  This avoids reusing
+ 	     TARGET (which for integer NE could be one of the inputs).  */
+ 	  rtx tmp = gen_reg_rtx (cmp_result_mode);
+ 	  if (arm_expand_vector_compare (tmp, code, op0, op1, true))
+ 	    gcc_unreachable ();
+ 	  emit_insn (gen_rtx_SET (target, gen_rtx_NOT (cmp_result_mode, tmp)));
+ 	  return false;
+ 	}
+       inverted = true;
+       break;
+ 
+     default:
+       inverted = false;
+       break;
+     }
+ 
+   switch (code)
+     {
+     /* These are natively supported for zero comparisons, but otherwise
+        require the operands to be swapped.  */
+     case LE:
+     case LT:
+       if (op1 != CONST0_RTX (cmp_mode))
+ 	{
+ 	  code = swap_condition (code);
+ 	  std::swap (op0, op1);
+ 	}
+       /* Fall through.  */
+ 
+     /* These are natively supported for both register and zero operands.  */
+     case EQ:
+     case GE:
+     case GT:
+       emit_insn (gen_neon_vc (code, cmp_mode, target, op0, op1));
+       return inverted;
+ 
+     /* These are natively supported for register operands only.
+        Comparisons with zero aren't useful and should be folded
+        or canonicalized by target-independent code.  */
+     case GEU:
+     case GTU:
+       emit_insn (gen_neon_vc (code, cmp_mode, target,
+ 			      op0, force_reg (cmp_mode, op1)));
+       return inverted;
+ 
+     /* These require the operands to be swapped and likewise do not
+        support comparisons with zero.  */
+     case LEU:
+     case LTU:
+       emit_insn (gen_neon_vc (swap_condition (code), cmp_mode,
+ 			      target, force_reg (cmp_mode, op1), op0));
+       return inverted;
+ 
+     /* These need a combination of two comparisons.  */
+     case LTGT:
+     case ORDERED:
+       {
+ 	/* Operands are LTGT iff (a > b || a > b).
+ 	   Operands are ORDERED iff (a > b || a <= b).  */
+ 	rtx gt_res = gen_reg_rtx (cmp_result_mode);
+ 	rtx alt_res = gen_reg_rtx (cmp_result_mode);
+ 	rtx_code alt_code = (code == LTGT ? LT : LE);
+ 	if (arm_expand_vector_compare (gt_res, GT, op0, op1, true)
+ 	    || arm_expand_vector_compare (alt_res, alt_code, op0, op1, true))
+ 	  gcc_unreachable ();
+ 	emit_insn (gen_rtx_SET (target, gen_rtx_IOR (cmp_result_mode,
+ 						     gt_res, alt_res)));
+ 	return inverted;
+       }
+ 
+     default:
+       gcc_unreachable ();
+     }
+ }
+ 
+ /* Expand a vcond or vcondu pattern with operands OPERANDS.
+    CMP_RESULT_MODE is the mode of the comparison result.  */
+ 
+ void
+ arm_expand_vcond (rtx *operands, machine_mode cmp_result_mode)
+ {
+   rtx mask = gen_reg_rtx (cmp_result_mode);
+   bool inverted = arm_expand_vector_compare (mask, GET_CODE (operands[3]),
+ 					     operands[4], operands[5], true);
+   if (inverted)
+     std::swap (operands[1], operands[2]);
+   emit_insn (gen_neon_vbsl (GET_MODE (operands[0]), operands[0],
+ 			    mask, operands[1], operands[2]));
+ }
+ 
  #define MAX_VECT_LEN 16
  
  struct expand_vec_perm_d
*************** arm_vectorize_vec_perm_const (machine_mo
*** 31128,31133 ****
--- 31518,31532 ----
      return false;
  
    d.target = target;
+   if (op0)
+     {
+       rtx nop0 = force_reg (vmode, op0);
+       if (op0 == op1)
+         op1 = nop0;
+       op0 = nop0;
+     }
+   if (op1)
+     op1 = force_reg (vmode, op1);
    d.op0 = op0;
    d.op1 = op1;
  
*************** arm_emit_coreregs_64bit_shift (enum rtx_
*** 31272,31284 ****
  
    gcc_assert (code == ASHIFT || code == ASHIFTRT || code == LSHIFTRT);
    gcc_assert (out
! 	      && (REG_P (out) || GET_CODE (out) == SUBREG)
  	      && GET_MODE (out) == DImode);
    gcc_assert (in
! 	      && (REG_P (in) || GET_CODE (in) == SUBREG)
  	      && GET_MODE (in) == DImode);
    gcc_assert (amount
! 	      && (((REG_P (amount) || GET_CODE (amount) == SUBREG)
  		   && GET_MODE (amount) == SImode)
  		  || CONST_INT_P (amount)));
    gcc_assert (scratch1 == NULL
--- 31671,31683 ----
  
    gcc_assert (code == ASHIFT || code == ASHIFTRT || code == LSHIFTRT);
    gcc_assert (out
! 	      && (REG_P (out) || SUBREG_P (out))
  	      && GET_MODE (out) == DImode);
    gcc_assert (in
! 	      && (REG_P (in) || SUBREG_P (in))
  	      && GET_MODE (in) == DImode);
    gcc_assert (amount
! 	      && (((REG_P (amount) || SUBREG_P (amount))
  		   && GET_MODE (amount) == SImode)
  		  || CONST_INT_P (amount)));
    gcc_assert (scratch1 == NULL
*************** arm_emit_coreregs_64bit_shift (enum rtx_
*** 31496,31502 ****
     According to the ARM ELF ABI, the initial addend of REL-type relocations
     processing MOVW and MOVT instructions is formed by interpreting the 16-bit
     literal field of the instruction as a 16-bit signed value in the range
!    -32768 <= A < 32768.  */
  
  bool
  arm_valid_symbolic_address_p (rtx addr)
--- 31895,31906 ----
     According to the ARM ELF ABI, the initial addend of REL-type relocations
     processing MOVW and MOVT instructions is formed by interpreting the 16-bit
     literal field of the instruction as a 16-bit signed value in the range
!    -32768 <= A < 32768.
! 
!    In Thumb-1 mode, we use upper/lower relocations which have an 8-bit
!    unsigned range of 0 <= A < 256 as described in the AAELF32
!    relocation handling documentation: REL-type relocations are encoded
!    as unsigned in this case.  */
  
  bool
  arm_valid_symbolic_address_p (rtx addr)
*************** arm_valid_symbolic_address_p (rtx addr)
*** 31507,31513 ****
    if (target_word_relocations)
      return false;
  
!   if (GET_CODE (tmp) == SYMBOL_REF || GET_CODE (tmp) == LABEL_REF)
      return true;
  
    /* (const (plus: symbol_ref const_int))  */
--- 31911,31917 ----
    if (target_word_relocations)
      return false;
  
!   if (SYMBOL_REF_P (tmp) || LABEL_REF_P (tmp))
      return true;
  
    /* (const (plus: symbol_ref const_int))  */
*************** arm_valid_symbolic_address_p (rtx addr)
*** 31520,31526 ****
        xop1 = XEXP (tmp, 1);
  
        if (GET_CODE (xop0) == SYMBOL_REF && CONST_INT_P (xop1))
! 	  return IN_RANGE (INTVAL (xop1), -0x8000, 0x7fff);
      }
  
    return false;
--- 31924,31935 ----
        xop1 = XEXP (tmp, 1);
  
        if (GET_CODE (xop0) == SYMBOL_REF && CONST_INT_P (xop1))
! 	{
! 	  if (TARGET_THUMB1 && !TARGET_HAVE_MOVT)
! 	    return IN_RANGE (INTVAL (xop1), 0, 0xff);
! 	  else
! 	    return IN_RANGE (INTVAL (xop1), -0x8000, 0x7fff);
! 	}
      }
  
    return false;
*************** arm_set_current_function (tree fndecl)
*** 32335,32343 ****
    arm_previous_fndecl = fndecl;
  
    /* First set the target options.  */
!   cl_target_option_restore (&global_options, TREE_TARGET_OPTION (new_tree));
  
    save_restore_target_globals (new_tree);
  }
  
  /* Implement TARGET_OPTION_PRINT.  */
--- 32744,32755 ----
    arm_previous_fndecl = fndecl;
  
    /* First set the target options.  */
!   cl_target_option_restore (&global_options, &global_options_set,
! 			    TREE_TARGET_OPTION (new_tree));
  
    save_restore_target_globals (new_tree);
+ 
+   arm_override_options_after_change_1 (&global_options, &global_options_set);
  }
  
  /* Implement TARGET_OPTION_PRINT.  */
*************** arm_valid_target_attribute_tree (tree ar
*** 32535,32541 ****
    if (!arm_valid_target_attribute_rec (args, opts))
      return NULL_TREE;
  
!   cl_target_option_save (&cl_opts, opts);
    arm_configure_build_target (&arm_active_target, &cl_opts, opts_set, false);
    arm_option_check_internal (opts);
    /* Do any overrides, such as global options arch=xxx.
--- 32947,32953 ----
    if (!arm_valid_target_attribute_rec (args, opts))
      return NULL_TREE;
  
!   cl_target_option_save (&cl_opts, opts, opts_set);
    arm_configure_build_target (&arm_active_target, &cl_opts, opts_set, false);
    arm_option_check_internal (opts);
    /* Do any overrides, such as global options arch=xxx.
*************** arm_valid_target_attribute_tree (tree ar
*** 32544,32554 ****
    arm_options_perform_arch_sanity_checks ();
    arm_option_override_internal (opts, opts_set);
  
!   return build_target_option_node (opts);
  }
  
  static void 
! add_attribute  (const char * mode, tree *attributes)
  {
    size_t len = strlen (mode);
    tree value = build_string (len, mode);
--- 32956,32966 ----
    arm_options_perform_arch_sanity_checks ();
    arm_option_override_internal (opts, opts_set);
  
!   return build_target_option_node (opts, opts_set);
  }
  
  static void 
! add_attribute (const char * mode, tree *attributes)
  {
    size_t len = strlen (mode);
    tree value = build_string (len, mode);
*************** arm_valid_target_attribute_p (tree fndec
*** 32600,32606 ****
  			      tree args, int ARG_UNUSED (flags))
  {
    bool ret = true;
!   struct gcc_options func_options;
    tree cur_tree, new_optimize;
    gcc_assert ((fndecl != NULL_TREE) && (args != NULL_TREE));
  
--- 33012,33018 ----
  			      tree args, int ARG_UNUSED (flags))
  {
    bool ret = true;
!   struct gcc_options func_options, func_options_set;
    tree cur_tree, new_optimize;
    gcc_assert ((fndecl != NULL_TREE) && (args != NULL_TREE));
  
*************** arm_valid_target_attribute_p (tree fndec
*** 32616,32637 ****
    memset (&func_options, 0, sizeof (func_options));
    init_options_struct (&func_options, NULL);
    lang_hooks.init_options_struct (&func_options);
  
    /* Initialize func_options to the defaults.  */
!   cl_optimization_restore (&func_options,
  			   TREE_OPTIMIZATION (func_optimize));
  
!   cl_target_option_restore (&func_options,
  			    TREE_TARGET_OPTION (target_option_default_node));
  
    /* Set func_options flags with new target mode.  */
    cur_tree = arm_valid_target_attribute_tree (args, &func_options,
! 					      &global_options_set);
  
    if (cur_tree == NULL_TREE)
      ret = false;
  
!   new_optimize = build_optimization_node (&func_options);
  
    DECL_FUNCTION_SPECIFIC_TARGET (fndecl) = cur_tree;
  
--- 33028,33050 ----
    memset (&func_options, 0, sizeof (func_options));
    init_options_struct (&func_options, NULL);
    lang_hooks.init_options_struct (&func_options);
+   memset (&func_options_set, 0, sizeof (func_options_set));
  
    /* Initialize func_options to the defaults.  */
!   cl_optimization_restore (&func_options, &func_options_set,
  			   TREE_OPTIMIZATION (func_optimize));
  
!   cl_target_option_restore (&func_options, &func_options_set,
  			    TREE_TARGET_OPTION (target_option_default_node));
  
    /* Set func_options flags with new target mode.  */
    cur_tree = arm_valid_target_attribute_tree (args, &func_options,
! 					      &func_options_set);
  
    if (cur_tree == NULL_TREE)
      ret = false;
  
!   new_optimize = build_optimization_node (&func_options, &func_options_set);
  
    DECL_FUNCTION_SPECIFIC_TARGET (fndecl) = cur_tree;
  
*************** extract_base_offset_in_addr (rtx mem, rt
*** 32781,32787 ****
    if (GET_CODE (addr) == CONST)
      addr = XEXP (addr, 0);
  
!   if (GET_CODE (addr) == REG)
      {
        *base = addr;
        *offset = const0_rtx;
--- 33194,33200 ----
    if (GET_CODE (addr) == CONST)
      addr = XEXP (addr, 0);
  
!   if (REG_P (addr))
      {
        *base = addr;
        *offset = const0_rtx;
*************** fusion_load_store (rtx_insn *insn, rtx *
*** 32820,32831 ****
  
    src = SET_SRC (x);
    dest = SET_DEST (x);
!   if (GET_CODE (src) == REG && GET_CODE (dest) == MEM)
      {
        *is_load = false;
        extract_base_offset_in_addr (dest, base, offset);
      }
!   else if (GET_CODE (src) == MEM && GET_CODE (dest) == REG)
      {
        *is_load = true;
        extract_base_offset_in_addr (src, base, offset);
--- 33233,33244 ----
  
    src = SET_SRC (x);
    dest = SET_DEST (x);
!   if (REG_P (src) && MEM_P (dest))
      {
        *is_load = false;
        extract_base_offset_in_addr (dest, base, offset);
      }
!   else if (MEM_P (src) && REG_P (dest))
      {
        *is_load = true;
        extract_base_offset_in_addr (src, base, offset);
*************** arm_expand_divmod_libfunc (rtx libfunc,
*** 33115,33123 ****
      = smallest_int_mode_for_size (2 * GET_MODE_BITSIZE (mode));
  
    rtx libval = emit_library_call_value (libfunc, NULL_RTX, LCT_CONST,
! 					libval_mode,
! 					op0, GET_MODE (op0),
! 					op1, GET_MODE (op1));
  
    rtx quotient = simplify_gen_subreg (mode, libval, libval_mode, 0);
    rtx remainder = simplify_gen_subreg (mode, libval, libval_mode,
--- 33528,33534 ----
      = smallest_int_mode_for_size (2 * GET_MODE_BITSIZE (mode));
  
    rtx libval = emit_library_call_value (libfunc, NULL_RTX, LCT_CONST,
! 					libval_mode, op0, mode, op1, mode);
  
    rtx quotient = simplify_gen_subreg (mode, libval, libval_mode, 0);
    rtx remainder = simplify_gen_subreg (mode, libval, libval_mode,
*************** arm_ge_bits_access (void)
*** 33354,33359 ****
--- 33765,33804 ----
    return true;
  }
  
+ /* NULL if insn INSN is valid within a low-overhead loop.
+    Otherwise return why doloop cannot be applied.  */
+ 
+ static const char *
+ arm_invalid_within_doloop (const rtx_insn *insn)
+ {
+   if (!TARGET_HAVE_LOB)
+     return default_invalid_within_doloop (insn);
+ 
+   if (CALL_P (insn))
+     return "Function call in the loop.";
+ 
+   if (reg_mentioned_p (gen_rtx_REG (SImode, LR_REGNUM), insn))
+     return "LR is used inside loop.";
+ 
+   return NULL;
+ }
+ 
+ bool
+ arm_target_insn_ok_for_lob (rtx insn)
+ {
+   basic_block bb = BLOCK_FOR_INSN (insn);
+   /* Make sure the basic block of the target insn is a simple latch
+      having as single predecessor and successor the body of the loop
+      itself.  Only simple loops with a single basic block as body are
+      supported for 'low over head loop' making sure that LE target is
+      above LE itself in the generated code.  */
+ 
+   return single_succ_p (bb)
+     && single_pred_p (bb)
+     && single_succ_edge (bb)->dest == single_pred_edge (bb)->src
+     && contains_no_active_insn_p (bb);
+ }
+ 
  #if CHECKING_P
  namespace selftest {
  
*************** arm_run_selftests (void)
*** 33487,33495 ****
     Unlike the arm version, we do NOT implement asm flag outputs.  */
  
  rtx_insn *
! thumb1_md_asm_adjust (vec<rtx> &outputs, vec<rtx> &/*inputs*/,
! 		      vec<const char *> &constraints,
! 		      vec<rtx> &/*clobbers*/, HARD_REG_SET &/*clobbered_regs*/)
  {
    for (unsigned i = 0, n = outputs.length (); i < n; ++i)
      if (strncmp (constraints[i], "=@cc", 4) == 0)
--- 33932,33941 ----
     Unlike the arm version, we do NOT implement asm flag outputs.  */
  
  rtx_insn *
! thumb1_md_asm_adjust (vec<rtx> &outputs, vec<rtx> & /*inputs*/,
! 		      vec<machine_mode> & /*input_modes*/,
! 		      vec<const char *> &constraints, vec<rtx> & /*clobbers*/,
! 		      HARD_REG_SET & /*clobbered_regs*/)
  {
    for (unsigned i = 0, n = outputs.length (); i < n; ++i)
      if (strncmp (constraints[i], "=@cc", 4) == 0)
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm.h gcc-11.1.0/gcc/config/arm/arm.h
*** gcc-10.3.0/gcc/config/arm/arm.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for ARM.
!    Copyright (C) 1991-2020 Free Software Foundation, Inc.
     Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
     and Martin Simmons (@harleqn.co.uk).
     More major hacks by Richard Earnshaw (rearnsha@arm.com)
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for ARM.
!    Copyright (C) 1991-2021 Free Software Foundation, Inc.
     Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
     and Martin Simmons (@harleqn.co.uk).
     More major hacks by Richard Earnshaw (rearnsha@arm.com)
*************** extern char arm_arch_name[];
*** 47,54 ****
  /* Target CPU builtins.  */
  #define TARGET_CPU_CPP_BUILTINS() arm_cpu_cpp_builtins (pfile)
  
! /* Target CPU versions for D.  */
  #define TARGET_D_CPU_VERSIONS arm_d_target_versions
  
  #include "config/arm/arm-opts.h"
  
--- 47,55 ----
  /* Target CPU builtins.  */
  #define TARGET_CPU_CPP_BUILTINS() arm_cpu_cpp_builtins (pfile)
  
! /* Target hooks for D language.  */
  #define TARGET_D_CPU_VERSIONS arm_d_target_versions
+ #define TARGET_D_REGISTER_CPU_TARGET_INFO arm_d_register_target_info
  
  #include "config/arm/arm-opts.h"
  
*************** emission of floating point pcs attribute
*** 177,182 ****
--- 178,187 ----
  
  #define TARGET_CRC32			(arm_arch_crc)
  
+ /* Thumb-2 but also has some conditional arithmetic instructions like csinc,
+    csinv, etc. */
+ #define TARGET_COND_ARITH		(arm_arch8_1m_main)
+ 
  /* The following two macros concern the ability to execute coprocessor
     instructions for VFPv3 or NEON.  TARGET_VFP3/TARGET_VFPD32 are currently
     only ever tested when we know we are generating for VFP hardware; we need
*************** emission of floating point pcs attribute
*** 386,392 ****
     --with-float is ignored if -mfloat-abi is specified.
     --with-fpu is ignored if -mfpu is specified.
     --with-abi is ignored if -mabi is specified.
!    --with-tls is ignored if -mtls-dialect is specified. */
  #define OPTION_DEFAULT_SPECS \
    {"arch", "%{!march=*:%{!mcpu=*:-march=%(VALUE)}}" }, \
    {"cpu", "%{!march=*:%{!mcpu=*:-mcpu=%(VALUE)}}" }, \
--- 391,400 ----
     --with-float is ignored if -mfloat-abi is specified.
     --with-fpu is ignored if -mfpu is specified.
     --with-abi is ignored if -mabi is specified.
!    --with-tls is ignored if -mtls-dialect is specified.
!    Note: --with-mode is not handled here, that has a special rule
!    TARGET_MODE_CHECK that also takes into account the selected CPU and
!    architecture.  */
  #define OPTION_DEFAULT_SPECS \
    {"arch", "%{!march=*:%{!mcpu=*:-march=%(VALUE)}}" }, \
    {"cpu", "%{!march=*:%{!mcpu=*:-mcpu=%(VALUE)}}" }, \
*************** emission of floating point pcs attribute
*** 394,400 ****
    {"float", "%{!mfloat-abi=*:-mfloat-abi=%(VALUE)}" }, \
    {"fpu", "%{!mfpu=*:-mfpu=%(VALUE)}"}, \
    {"abi", "%{!mabi=*:-mabi=%(VALUE)}"}, \
-   {"mode", "%{!marm:%{!mthumb:-m%(VALUE)}}"}, \
    {"tls", "%{!mtls-dialect=*:-mtls-dialect=%(VALUE)}"},
  
  extern const struct arm_fpu_desc
--- 402,407 ----
*************** extern const int arm_arch_cde_coproc_bit
*** 621,626 ****
--- 628,636 ----
  
  /* Target machine storage Layout.  */
  
+ /* Nonzero if this chip provides Armv8.1-M Mainline
+    LOB (low overhead branch features) extension instructions.  */
+ #define TARGET_HAVE_LOB (arm_arch8_1m_main)
  
  /* Define this macro if it is advisable to hold scalars in registers
     in a wider mode than that declared by the program.  In such cases,
*************** extern const int arm_arch_cde_coproc_bit
*** 1103,1108 ****
--- 1113,1199 ----
  #define VALID_MVE_STRUCT_MODE(MODE) \
    ((MODE) == TImode || (MODE) == OImode || (MODE) == XImode)
  
+ /* The conditions under which vector modes are supported for general
+    arithmetic using Neon.  */
+ 
+ #define ARM_HAVE_NEON_V8QI_ARITH TARGET_NEON
+ #define ARM_HAVE_NEON_V4HI_ARITH TARGET_NEON
+ #define ARM_HAVE_NEON_V2SI_ARITH TARGET_NEON
+ 
+ #define ARM_HAVE_NEON_V16QI_ARITH TARGET_NEON
+ #define ARM_HAVE_NEON_V8HI_ARITH TARGET_NEON
+ #define ARM_HAVE_NEON_V4SI_ARITH TARGET_NEON
+ #define ARM_HAVE_NEON_V2DI_ARITH TARGET_NEON
+ 
+ /* HF operations have their own flush-to-zero control (FPSCR.FZ16).  */
+ #define ARM_HAVE_NEON_V4HF_ARITH TARGET_NEON_FP16INST
+ #define ARM_HAVE_NEON_V8HF_ARITH TARGET_NEON_FP16INST
+ 
+ /* SF operations always flush to zero, regardless of FPSCR.FZ, so we can
+    only use them for general arithmetic when -funsafe-math-optimizations
+    is in effect.  */
+ #define ARM_HAVE_NEON_V2SF_ARITH \
+   (TARGET_NEON && flag_unsafe_math_optimizations)
+ #define ARM_HAVE_NEON_V4SF_ARITH ARM_HAVE_NEON_V2SF_ARITH
+ 
+ /* The conditions under which vector modes are supported for general
+    arithmetic by any vector extension.  */
+ 
+ #define ARM_HAVE_V8QI_ARITH (ARM_HAVE_NEON_V8QI_ARITH || TARGET_REALLY_IWMMXT)
+ #define ARM_HAVE_V4HI_ARITH (ARM_HAVE_NEON_V4HI_ARITH || TARGET_REALLY_IWMMXT)
+ #define ARM_HAVE_V2SI_ARITH (ARM_HAVE_NEON_V2SI_ARITH || TARGET_REALLY_IWMMXT)
+ 
+ #define ARM_HAVE_V16QI_ARITH (ARM_HAVE_NEON_V16QI_ARITH || TARGET_HAVE_MVE)
+ #define ARM_HAVE_V8HI_ARITH (ARM_HAVE_NEON_V8HI_ARITH || TARGET_HAVE_MVE)
+ #define ARM_HAVE_V4SI_ARITH (ARM_HAVE_NEON_V4SI_ARITH || TARGET_HAVE_MVE)
+ #define ARM_HAVE_V2DI_ARITH ARM_HAVE_NEON_V2DI_ARITH
+ 
+ #define ARM_HAVE_V4HF_ARITH ARM_HAVE_NEON_V4HF_ARITH
+ #define ARM_HAVE_V2SF_ARITH ARM_HAVE_NEON_V2SF_ARITH
+ 
+ #define ARM_HAVE_V8HF_ARITH (ARM_HAVE_NEON_V8HF_ARITH || TARGET_HAVE_MVE_FLOAT)
+ #define ARM_HAVE_V4SF_ARITH (ARM_HAVE_NEON_V4SF_ARITH || TARGET_HAVE_MVE_FLOAT)
+ 
+ /* The conditions under which vector modes are supported by load/store
+    instructions using Neon.  */
+ 
+ #define ARM_HAVE_NEON_V8QI_LDST TARGET_NEON
+ #define ARM_HAVE_NEON_V16QI_LDST TARGET_NEON
+ #define ARM_HAVE_NEON_V4HI_LDST TARGET_NEON
+ #define ARM_HAVE_NEON_V8HI_LDST TARGET_NEON
+ #define ARM_HAVE_NEON_V2SI_LDST TARGET_NEON
+ #define ARM_HAVE_NEON_V4SI_LDST TARGET_NEON
+ #define ARM_HAVE_NEON_V4HF_LDST TARGET_NEON_FP16INST
+ #define ARM_HAVE_NEON_V8HF_LDST TARGET_NEON_FP16INST
+ #define ARM_HAVE_NEON_V4BF_LDST TARGET_BF16_SIMD
+ #define ARM_HAVE_NEON_V8BF_LDST TARGET_BF16_SIMD
+ #define ARM_HAVE_NEON_V2SF_LDST TARGET_NEON
+ #define ARM_HAVE_NEON_V4SF_LDST TARGET_NEON
+ #define ARM_HAVE_NEON_DI_LDST TARGET_NEON
+ #define ARM_HAVE_NEON_V2DI_LDST TARGET_NEON
+ 
+ /* The conditions under which vector modes are supported by load/store
+    instructions by any vector extension.  */
+ 
+ #define ARM_HAVE_V8QI_LDST (ARM_HAVE_NEON_V8QI_LDST || TARGET_REALLY_IWMMXT)
+ #define ARM_HAVE_V4HI_LDST (ARM_HAVE_NEON_V4HI_LDST || TARGET_REALLY_IWMMXT)
+ #define ARM_HAVE_V2SI_LDST (ARM_HAVE_NEON_V2SI_LDST || TARGET_REALLY_IWMMXT)
+ 
+ #define ARM_HAVE_V16QI_LDST (ARM_HAVE_NEON_V16QI_LDST || TARGET_HAVE_MVE)
+ #define ARM_HAVE_V8HI_LDST (ARM_HAVE_NEON_V8HI_LDST || TARGET_HAVE_MVE)
+ #define ARM_HAVE_V4SI_LDST (ARM_HAVE_NEON_V4SI_LDST || TARGET_HAVE_MVE)
+ #define ARM_HAVE_DI_LDST ARM_HAVE_NEON_DI_LDST
+ #define ARM_HAVE_V2DI_LDST ARM_HAVE_NEON_V2DI_LDST
+ 
+ #define ARM_HAVE_V4HF_LDST ARM_HAVE_NEON_V4HF_LDST
+ #define ARM_HAVE_V2SF_LDST ARM_HAVE_NEON_V2SF_LDST
+ 
+ #define ARM_HAVE_V4BF_LDST ARM_HAVE_NEON_V4BF_LDST
+ #define ARM_HAVE_V8BF_LDST ARM_HAVE_NEON_V8BF_LDST
+ 
+ #define ARM_HAVE_V8HF_LDST (ARM_HAVE_NEON_V8HF_LDST || TARGET_HAVE_MVE_FLOAT)
+ #define ARM_HAVE_V4SF_LDST (ARM_HAVE_NEON_V4SF_LDST || TARGET_HAVE_MVE_FLOAT)
+ 
  /* The register numbers in sequence, for passing to arm_gen_load_multiple.  */
  extern int arm_regs_in_sequence[];
  
*************** extern const char *arm_asm_auto_mfpu (in
*** 2336,2344 ****
    "   mcpu=*:-mcpu=%:rewrite_mcpu(%{mcpu=*:%*})"			\
    " }"
  
! extern const char *arm_target_thumb_only (int argc, const char **argv);
  #define TARGET_MODE_SPEC_FUNCTIONS			\
!   { "target_mode_check", arm_target_thumb_only },
  
  /* -mcpu=native handling only makes sense with compiler running on
     an ARM chip.  */
--- 2427,2435 ----
    "   mcpu=*:-mcpu=%:rewrite_mcpu(%{mcpu=*:%*})"			\
    " }"
  
! extern const char *arm_target_mode (int argc, const char **argv);
  #define TARGET_MODE_SPEC_FUNCTIONS			\
!   { "target_mode_check", arm_target_mode },
  
  /* -mcpu=native handling only makes sense with compiler running on
     an ARM chip.  */
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm.md gcc-11.1.0/gcc/config/arm/arm.md
*** gcc-10.3.0/gcc/config/arm/arm.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;;- Machine description for ARM for GNU compiler
! ;;  Copyright (C) 1991-2020 Free Software Foundation, Inc.
  ;;  Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
  ;;  and Martin Simmons (@harleqn.co.uk).
  ;;  More major hacks by Richard Earnshaw (rearnsha@arm.com).
--- 1,5 ----
  ;;- Machine description for ARM for GNU compiler
! ;;  Copyright (C) 1991-2021 Free Software Foundation, Inc.
  ;;  Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
  ;;  and Martin Simmons (@harleqn.co.uk).
  ;;  More major hacks by Richard Earnshaw (rearnsha@arm.com).
***************
*** 336,342 ****
  (define_attr "core_cycles" "single,multi"
    (if_then_else (eq_attr "type"
      "adc_imm, adc_reg, adcs_imm, adcs_reg, adr, alu_ext, alu_imm, alu_sreg,\
!     alu_shift_imm, alu_shift_reg, alu_dsp_reg, alus_ext, alus_imm, alus_sreg,\
      alus_shift_imm, alus_shift_reg, bfm, csel, rev, logic_imm, logic_reg,\
      logic_shift_imm, logic_shift_reg, logics_imm, logics_reg,\
      logics_shift_imm, logics_shift_reg, extend, shift_imm, float, fcsel,\
--- 336,343 ----
  (define_attr "core_cycles" "single,multi"
    (if_then_else (eq_attr "type"
      "adc_imm, adc_reg, adcs_imm, adcs_reg, adr, alu_ext, alu_imm, alu_sreg,\
!     alu_shift_imm_lsl_1to4, alu_shift_imm_other, alu_shift_reg, alu_dsp_reg,\
!     alus_ext, alus_imm, alus_sreg,\
      alus_shift_imm, alus_shift_reg, bfm, csel, rev, logic_imm, logic_reg,\
      logic_shift_imm, logic_shift_reg, logics_imm, logics_reg,\
      logics_shift_imm, logics_shift_reg, extend, shift_imm, float, fcsel,\
***************
*** 1370,1376 ****
     (set_attr "arch" "32,a")
     (set_attr "shift" "3")
     (set_attr "predicable" "yes")
!    (set_attr "type" "alu_shift_imm,alu_shift_reg")]
  )
  
  (define_insn "*addsi3_carryin_clobercc"
--- 1371,1377 ----
     (set_attr "arch" "32,a")
     (set_attr "shift" "3")
     (set_attr "predicable" "yes")
!    (set_attr "autodetect_type" "alu_shift_operator2")] 
  )
  
  (define_insn "*addsi3_carryin_clobercc"
***************
*** 1679,1685 ****
    [(set_attr "conds" "use")
     (set_attr "arch" "*,a,t2")
     (set_attr "predicable" "yes")
!    (set_attr "type" "adc_reg,adc_imm,alu_shift_imm")]
  )
  
  ;; Special canonicalization of the above when operand1 == (const_int 1):
--- 1680,1686 ----
    [(set_attr "conds" "use")
     (set_attr "arch" "*,a,t2")
     (set_attr "predicable" "yes")
!    (set_attr "type" "adc_reg,adc_imm,alu_shift_imm_lsl_1to4")]
  )
  
  ;; Special canonicalization of the above when operand1 == (const_int 1):
***************
*** 1727,1733 ****
    "rsc%?\\t%0, %4, %1%S3"
    [(set_attr "conds" "use")
     (set_attr "predicable" "yes")
!    (set_attr "type" "alu_shift_imm,alu_shift_reg")]
  )
  
  (define_insn "cmpsi3_carryin_<CC_EXTEND>out"
--- 1728,1734 ----
    "rsc%?\\t%0, %4, %1%S3"
    [(set_attr "conds" "use")
     (set_attr "predicable" "yes")
!    (set_attr "autodetect_type" "alu_shift_operator3")]
  )
  
  (define_insn "cmpsi3_carryin_<CC_EXTEND>out"
***************
*** 1811,1817 ****
     (set_attr "arch" "32,a")
     (set_attr "shift" "3")
     (set_attr "predicable" "yes")
!    (set_attr "type" "alu_shift_imm,alu_shift_reg")]
  )
  
  (define_insn "*subsi3_carryin_shift_alt"
--- 1812,1818 ----
     (set_attr "arch" "32,a")
     (set_attr "shift" "3")
     (set_attr "predicable" "yes")
!    (set_attr "autodetect_type" "alu_shift_operator2")]
  )
  
  (define_insn "*subsi3_carryin_shift_alt"
***************
*** 1828,1834 ****
     (set_attr "arch" "32,a")
     (set_attr "shift" "3")
     (set_attr "predicable" "yes")
!    (set_attr "type" "alu_shift_imm,alu_shift_reg")]
  )
  
  ;; No RSC in Thumb2
--- 1829,1835 ----
     (set_attr "arch" "32,a")
     (set_attr "shift" "3")
     (set_attr "predicable" "yes")
!    (set_attr "autodetect_type" "alu_shift_operator2")]
  )
  
  ;; No RSC in Thumb2
***************
*** 1844,1850 ****
    "rsc%?\\t%0, %1, %3%S2"
    [(set_attr "conds" "use")
     (set_attr "predicable" "yes")
!    (set_attr "type" "alu_shift_imm,alu_shift_reg")]
  )
  
  (define_insn "*rsbsi3_carryin_shift_alt"
--- 1845,1851 ----
    "rsc%?\\t%0, %1, %3%S2"
    [(set_attr "conds" "use")
     (set_attr "predicable" "yes")
!    (set_attr "autodetect_type" "alu_shift_operator2")]
  )
  
  (define_insn "*rsbsi3_carryin_shift_alt"
***************
*** 1859,1865 ****
    "rsc%?\\t%0, %1, %3%S2"
    [(set_attr "conds" "use")
     (set_attr "predicable" "yes")
!    (set_attr "type" "alu_shift_imm,alu_shift_reg")]
  )
  
  ; transform ((x << y) - 1) to ~(~(x-1) << y)  Where X is a constant.
--- 1860,1866 ----
    "rsc%?\\t%0, %1, %3%S2"
    [(set_attr "conds" "use")
     (set_attr "predicable" "yes")
!    (set_attr "autodetect_type" "alu_shift_operator2")]
  )
  
  ; transform ((x << y) - 1) to ~(~(x-1) << y)  Where X is a constant.
***************
*** 4646,4652 ****
     (set_attr "predicable_short_it" "yes,yes,no,no")
     (set_attr "length" "4")
     (set_attr "shift" "1")
!    (set_attr "type" "alu_shift_reg,alu_shift_imm,alu_shift_imm,alu_shift_reg")]
  )
  
  (define_insn "*shiftsi3_compare0"
--- 4647,4653 ----
     (set_attr "predicable_short_it" "yes,yes,no,no")
     (set_attr "length" "4")
     (set_attr "shift" "1")
!    (set_attr "autodetect_type" "alu_shift_operator3")]
  )
  
  (define_insn "*shiftsi3_compare0"
***************
*** 9215,9220 ****
--- 9216,9226 ----
        else
  	{
  	  rtx mem = force_const_mem (SImode, operands[1]);
+ 	  if (!general_operand (mem, SImode))
+ 	    {
+ 	      emit_move_insn (operands[2], XEXP (mem, 0));
+ 	      mem = replace_equiv_address (mem, operands[2], false);
+ 	    }
  	  emit_move_insn (operands[2], mem);
  	}
      }
***************
*** 9298,9303 ****
--- 9304,9314 ----
        else
  	{
  	  rtx mem = force_const_mem (SImode, operands[1]);
+ 	  if (!general_operand (mem, SImode))
+ 	    {
+ 	      emit_move_insn (operands[3], XEXP (mem, 0));
+ 	      mem = replace_equiv_address (mem, operands[3], false);
+ 	    }
  	  emit_move_insn (operands[3], mem);
  	}
      }
***************
*** 9503,9509 ****
    [(set_attr "predicable" "yes")
     (set_attr "shift" "2")
     (set_attr "arch" "a,t2")
!    (set_attr "type" "alu_shift_imm")])
  
  (define_insn "*<arith_shift_insn>_shiftsi"
    [(set (match_operand:SI 0 "s_register_operand" "=r,r,r")
--- 9514,9520 ----
    [(set_attr "predicable" "yes")
     (set_attr "shift" "2")
     (set_attr "arch" "a,t2")
!    (set_attr "autodetect_type" "alu_shift_mul_op3")])
  
  (define_insn "*<arith_shift_insn>_shiftsi"
    [(set (match_operand:SI 0 "s_register_operand" "=r,r,r")
***************
*** 9517,9523 ****
    [(set_attr "predicable" "yes")
     (set_attr "shift" "3")
     (set_attr "arch" "a,t2,a")
!    (set_attr "type" "alu_shift_imm,alu_shift_imm,alu_shift_reg")])
  
  (define_split
    [(set (match_operand:SI 0 "s_register_operand" "")
--- 9528,9534 ----
    [(set_attr "predicable" "yes")
     (set_attr "shift" "3")
     (set_attr "arch" "a,t2,a")
!    (set_attr "autodetect_type" "alu_shift_operator2")])
  
  (define_split
    [(set (match_operand:SI 0 "s_register_operand" "")
***************
*** 10856,10862 ****
     (set_attr "length" "4,8")
     (set_attr_alternative "type"
                           [(if_then_else (match_operand 3 "const_int_operand" "")
!                                         (const_string "alu_shift_imm" )
                                          (const_string "alu_shift_reg"))
                            (const_string "multiple")])]
  )
--- 10867,10875 ----
     (set_attr "length" "4,8")
     (set_attr_alternative "type"
                           [(if_then_else (match_operand 3 "const_int_operand" "")
!                                 (if_then_else (match_operand 5 "alu_shift_operator_lsl_1_to_4")
!                                               (const_string "alu_shift_imm_lsl_1to4")
!                                               (const_string "alu_shift_imm_other"))
                                          (const_string "alu_shift_reg"))
                            (const_string "multiple")])]
  )
***************
*** 10921,10927 ****
     (set_attr "length" "4,8")
     (set_attr_alternative "type"
                           [(if_then_else (match_operand 3 "const_int_operand" "")
!                                         (const_string "alu_shift_imm" )
                                          (const_string "alu_shift_reg"))
                            (const_string "multiple")])]
  )
--- 10934,10942 ----
     (set_attr "length" "4,8")
     (set_attr_alternative "type"
                           [(if_then_else (match_operand 3 "const_int_operand" "")
!                                 (if_then_else (match_operand 5 "alu_shift_operator_lsl_1_to_4")
!                                               (const_string "alu_shift_imm_lsl_1to4")
!                                               (const_string "alu_shift_imm_other"))
                                          (const_string "alu_shift_reg"))
                            (const_string "multiple")])]
  )
***************
*** 11215,11221 ****
  	  [(match_operand 3 "cc_register" "") (const_int 0)])
  	 (neg:SI (match_operand:SI 2 "s_register_operand" "l,r"))
  	 (match_operand:SI 1 "s_register_operand" "0,0")))]
!   "TARGET_32BIT"
    "#"
    "&& reload_completed"
    [(cond_exec (match_op_dup 4 [(match_dup 3) (const_int 0)])
--- 11230,11236 ----
  	  [(match_operand 3 "cc_register" "") (const_int 0)])
  	 (neg:SI (match_operand:SI 2 "s_register_operand" "l,r"))
  	 (match_operand:SI 1 "s_register_operand" "0,0")))]
!   "TARGET_32BIT && !TARGET_COND_ARITH"
    "#"
    "&& reload_completed"
    [(cond_exec (match_op_dup 4 [(match_dup 3) (const_int 0)])
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm.opt gcc-11.1.0/gcc/config/arm/arm.opt
*** gcc-10.3.0/gcc/config/arm/arm.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Options for the ARM port of the compiler.
  
! ; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the ARM port of the compiler.
  
! ; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
***************
*** 21,35 ****
  HeaderInclude
  config/arm/arm-opts.h
  
- TargetSave
- const char *x_arm_arch_string
- 
- TargetSave
- const char *x_arm_cpu_string
- 
- TargetSave
- const char *x_arm_tune_string
- 
  Enum
  Name(tls_type) Type(enum arm_tls_type)
  TLS dialect to use:
--- 21,26 ----
*************** EnumValue
*** 64,88 ****
  Enum(arm_abi_type) String(aapcs-linux) Value(ARM_ABI_AAPCS_LINUX)
  
  mabort-on-noreturn
! Target Report Mask(ABORT_NORETURN)
  Generate a call to abort if a noreturn function returns.
  
  mapcs
  Target RejectNegative Mask(APCS_FRAME) Undocumented
  
  mapcs-frame
! Target Report Mask(APCS_FRAME)
  Generate APCS conformant stack frames.
  
  mapcs-reentrant
! Target Report Mask(APCS_REENT)
  Generate re-entrant, PIC code.
  
  mapcs-stack-check
! Target Report Mask(APCS_STACK) Undocumented
  
  march=
! Target RejectNegative Negative(march=) ToLower Joined Var(arm_arch_string)
  Specify the name of the target architecture.
  
  ; Other arm_arch values are loaded from arm-tables.opt
--- 55,79 ----
  Enum(arm_abi_type) String(aapcs-linux) Value(ARM_ABI_AAPCS_LINUX)
  
  mabort-on-noreturn
! Target Mask(ABORT_NORETURN)
  Generate a call to abort if a noreturn function returns.
  
  mapcs
  Target RejectNegative Mask(APCS_FRAME) Undocumented
  
  mapcs-frame
! Target Mask(APCS_FRAME)
  Generate APCS conformant stack frames.
  
  mapcs-reentrant
! Target Mask(APCS_REENT)
  Generate re-entrant, PIC code.
  
  mapcs-stack-check
! Target Mask(APCS_STACK) Undocumented
  
  march=
! Target Save RejectNegative Negative(march=) ToLower Joined Var(arm_arch_string)
  Specify the name of the target architecture.
  
  ; Other arm_arch values are loaded from arm-tables.opt
*************** EnumValue
*** 91,113 ****
  Enum(arm_arch) String(native) Value(-1) DriverOnly
  
  marm
! Target Report RejectNegative Negative(mthumb) InverseMask(THUMB)
  Generate code in 32 bit ARM state.
  
  mbig-endian
! Target Report RejectNegative Negative(mlittle-endian) Mask(BIG_END)
  Assume target CPU is configured as big endian.
  
  mcallee-super-interworking
! Target Report Mask(CALLEE_INTERWORKING)
  Thumb: Assume non-static functions may be called from ARM code.
  
  mcaller-super-interworking
! Target Report Mask(CALLER_INTERWORKING)
  Thumb: Assume function pointers may go to non-Thumb aware code.
  
  mcpu=
! Target RejectNegative Negative(mcpu=) ToLower Joined Var(arm_cpu_string)
  Specify the name of the target CPU.
  
  mfloat-abi=
--- 82,104 ----
  Enum(arm_arch) String(native) Value(-1) DriverOnly
  
  marm
! Target RejectNegative Negative(mthumb) InverseMask(THUMB)
  Generate code in 32 bit ARM state.
  
  mbig-endian
! Target RejectNegative Negative(mlittle-endian) Mask(BIG_END)
  Assume target CPU is configured as big endian.
  
  mcallee-super-interworking
! Target Mask(CALLEE_INTERWORKING)
  Thumb: Assume non-static functions may be called from ARM code.
  
  mcaller-super-interworking
! Target Mask(CALLER_INTERWORKING)
  Thumb: Assume function pointers may go to non-Thumb aware code.
  
  mcpu=
! Target Save RejectNegative Negative(mcpu=) ToLower Joined Var(arm_cpu_string)
  Specify the name of the target CPU.
  
  mfloat-abi=
*************** EnumValue
*** 132,138 ****
  Enum(float_abi_type) String(hard) Value(ARM_FLOAT_ABI_HARD)
  
  mflip-thumb
! Target Report Var(TARGET_FLIP_THUMB) Undocumented
  Switch ARM/Thumb modes on alternating functions for compiler testing.
  
  mfp16-format=
--- 123,129 ----
  Enum(float_abi_type) String(hard) Value(ARM_FLOAT_ABI_HARD)
  
  mflip-thumb
! Target Var(TARGET_FLIP_THUMB) Undocumented
  Switch ARM/Thumb modes on alternating functions for compiler testing.
  
  mfp16-format=
*************** mhard-float
*** 160,174 ****
  Target RejectNegative Alias(mfloat-abi=, hard) Undocumented
  
  mlittle-endian
! Target Report RejectNegative Negative(mbig-endian) InverseMask(BIG_END)
  Assume target CPU is configured as little endian.
  
  mlong-calls
! Target Report Mask(LONG_CALLS)
  Generate call insns as indirect calls, if necessary.
  
  mpic-data-is-text-relative
! Target Report Var(arm_pic_data_is_text_relative) Init(TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE)
  Assume data segments are relative to text segment.
  
  mpic-register=
--- 151,165 ----
  Target RejectNegative Alias(mfloat-abi=, hard) Undocumented
  
  mlittle-endian
! Target RejectNegative Negative(mbig-endian) InverseMask(BIG_END)
  Assume target CPU is configured as little endian.
  
  mlong-calls
! Target Mask(LONG_CALLS)
  Generate call insns as indirect calls, if necessary.
  
  mpic-data-is-text-relative
! Target Var(arm_pic_data_is_text_relative) Init(TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE)
  Assume data segments are relative to text segment.
  
  mpic-register=
*************** Target RejectNegative Joined Var(arm_pic
*** 176,190 ****
  Specify the register to be used for PIC addressing.
  
  mpoke-function-name
! Target Report Mask(POKE_FUNCTION_NAME)
  Store function names in object code.
  
  msched-prolog
! Target Report Mask(SCHED_PROLOG)
  Permit scheduling of a function's prologue sequence.
  
  msingle-pic-base
! Target Report Mask(SINGLE_PIC_BASE)
  Do not load the PIC register in function prologues.
  
  msoft-float
--- 167,181 ----
  Specify the register to be used for PIC addressing.
  
  mpoke-function-name
! Target Mask(POKE_FUNCTION_NAME)
  Store function names in object code.
  
  msched-prolog
! Target Mask(SCHED_PROLOG)
  Permit scheduling of a function's prologue sequence.
  
  msingle-pic-base
! Target Mask(SINGLE_PIC_BASE)
  Do not load the PIC register in function prologues.
  
  msoft-float
*************** Target RejectNegative Joined UInteger Va
*** 195,205 ****
  Specify the minimum bit alignment of structures. (Deprecated).
  
  mthumb
! Target Report RejectNegative Negative(marm) Mask(THUMB) Save
  Generate code for Thumb state.
  
  mthumb-interwork
! Target Report Mask(INTERWORK)
  Support calls between Thumb and ARM instruction sets.
  
  mtls-dialect=
--- 186,196 ----
  Specify the minimum bit alignment of structures. (Deprecated).
  
  mthumb
! Target RejectNegative Negative(marm) Mask(THUMB) Save
  Generate code for Thumb state.
  
  mthumb-interwork
! Target Mask(INTERWORK)
  Support calls between Thumb and ARM instruction sets.
  
  mtls-dialect=
*************** EnumValue
*** 224,242 ****
  Enum(arm_tp_type) String(cp15) Value(TP_CP15)
  
  mtpcs-frame
! Target Report Mask(TPCS_FRAME)
  Thumb: Generate (non-leaf) stack frames even if not needed.
  
  mtpcs-leaf-frame
! Target Report Mask(TPCS_LEAF_FRAME)
  Thumb: Generate (leaf) stack frames even if not needed.
  
  mtune=
! Target RejectNegative Negative(mtune=) ToLower Joined Var(arm_tune_string)
  Tune code for the given processor.
  
  mprint-tune-info
! Target Report RejectNegative Var(print_tune_info) Init(0)
  Print CPU tuning information as comment in assembler file.  This is
  an option used only for regression testing of the compiler and not
  intended for ordinary use in compiling code.
--- 215,233 ----
  Enum(arm_tp_type) String(cp15) Value(TP_CP15)
  
  mtpcs-frame
! Target Mask(TPCS_FRAME)
  Thumb: Generate (non-leaf) stack frames even if not needed.
  
  mtpcs-leaf-frame
! Target Mask(TPCS_LEAF_FRAME)
  Thumb: Generate (leaf) stack frames even if not needed.
  
  mtune=
! Target Save RejectNegative Negative(mtune=) ToLower Joined Var(arm_tune_string)
  Tune code for the given processor.
  
  mprint-tune-info
! Target RejectNegative Var(print_tune_info) Init(0)
  Print CPU tuning information as comment in assembler file.  This is
  an option used only for regression testing of the compiler and not
  intended for ordinary use in compiling code.
*************** EnumValue
*** 247,257 ****
  Enum(processor_type) String(native) Value(-1) DriverOnly
  
  mvectorize-with-neon-quad
! Target Report RejectNegative InverseMask(NEON_VECTORIZE_DOUBLE)
  Use Neon quad-word (rather than double-word) registers for vectorization.
  
  mvectorize-with-neon-double
! Target Report RejectNegative Mask(NEON_VECTORIZE_DOUBLE)
  Use Neon double-word (rather than quad-word) registers for vectorization.
  
  mverbose-cost-dump
--- 238,248 ----
  Enum(processor_type) String(native) Value(-1) DriverOnly
  
  mvectorize-with-neon-quad
! Target RejectNegative InverseMask(NEON_VECTORIZE_DOUBLE)
  Use Neon quad-word (rather than double-word) registers for vectorization.
  
  mvectorize-with-neon-double
! Target RejectNegative Mask(NEON_VECTORIZE_DOUBLE)
  Use Neon double-word (rather than quad-word) registers for vectorization.
  
  mverbose-cost-dump
*************** Common Undocumented Var(arm_verbose_cost
*** 259,278 ****
  Enable more verbose RTX cost dumps during debug.  For GCC developers use only.
  
  mword-relocations
! Target Report Var(target_word_relocations) Init(TARGET_DEFAULT_WORD_RELOCATIONS)
  Only generate absolute relocations on word sized values.
  
  mrestrict-it
! Target Report Var(arm_restrict_it) Init(2) Save
  Generate IT blocks appropriate for ARMv8.
  
  mfix-cortex-m3-ldrd
! Target Report Var(fix_cm3_ldrd) Init(2)
  Avoid overlapping destination and address registers on LDRD instructions
  that may trigger Cortex-M3 errata.
  
  munaligned-access
! Target Report Var(unaligned_access) Init(2) Save
  Enable unaligned word and halfword accesses to packed data.
  
  mneon-for-64bits
--- 250,269 ----
  Enable more verbose RTX cost dumps during debug.  For GCC developers use only.
  
  mword-relocations
! Target Var(target_word_relocations) Init(TARGET_DEFAULT_WORD_RELOCATIONS)
  Only generate absolute relocations on word sized values.
  
  mrestrict-it
! Target Var(arm_restrict_it) Init(2) Save
  Generate IT blocks appropriate for ARMv8.
  
  mfix-cortex-m3-ldrd
! Target Var(fix_cm3_ldrd) Init(2)
  Avoid overlapping destination and address registers on LDRD instructions
  that may trigger Cortex-M3 errata.
  
  munaligned-access
! Target Var(unaligned_access) Init(2) Save
  Enable unaligned word and halfword accesses to packed data.
  
  mneon-for-64bits
*************** Target WarnRemoved
*** 280,302 ****
  This option is deprecated and has no effect.
  
  mslow-flash-data
! Target Report Var(target_slow_flash_data) Init(0)
  Assume loading data from flash is slower than fetching instructions.
  
  masm-syntax-unified
! Target Report Var(inline_asm_unified) Init(0) Save
  Assume unified syntax for inline assembly code.
  
  mpure-code
! Target Report Var(target_pure_code) Init(0)
  Do not allow constant data to be placed in code sections.
  
  mbe8
! Target Report RejectNegative Negative(mbe32) Mask(BE8)
  When linking for big-endian targets, generate a BE8 format image.
  
  mbe32
! Target Report RejectNegative Negative(mbe8) InverseMask(BE8)
  When linking for big-endian targets, generate a legacy BE32 format image.
  
  mbranch-cost=
--- 271,293 ----
  This option is deprecated and has no effect.
  
  mslow-flash-data
! Target Var(target_slow_flash_data) Init(0)
  Assume loading data from flash is slower than fetching instructions.
  
  masm-syntax-unified
! Target Var(inline_asm_unified) Init(0) Save
  Assume unified syntax for inline assembly code.
  
  mpure-code
! Target Var(target_pure_code) Init(0)
  Do not allow constant data to be placed in code sections.
  
  mbe8
! Target RejectNegative Negative(mbe32) Mask(BE8)
  When linking for big-endian targets, generate a BE8 format image.
  
  mbe32
! Target RejectNegative Negative(mbe8) InverseMask(BE8)
  When linking for big-endian targets, generate a legacy BE32 format image.
  
  mbranch-cost=
*************** Target RejectNegative Joined UInteger Va
*** 304,312 ****
  Cost to assume for a branch insn.
  
  mgeneral-regs-only
! Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Save
  Generate code which uses the core registers only (r0-r14).
  
  mfdpic
! Target Report Mask(FDPIC)
  Enable Function Descriptor PIC mode.
--- 295,303 ----
  Cost to assume for a branch insn.
  
  mgeneral-regs-only
! Target RejectNegative Mask(GENERAL_REGS_ONLY) Save
  Generate code which uses the core registers only (r0-r14).
  
  mfdpic
! Target Mask(FDPIC)
  Enable Function Descriptor PIC mode.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm1020e.md gcc-11.1.0/gcc/config/arm/arm1020e.md
*** gcc-10.3.0/gcc/config/arm/arm1020e.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm1020e.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM 1020E & ARM 1022E Pipeline Description
! ;; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;; Contributed by Richard Earnshaw (richard.earnshaw@arm.com)
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM 1020E & ARM 1022E Pipeline Description
! ;; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;; Contributed by Richard Earnshaw (richard.earnshaw@arm.com)
  ;;
  ;; This file is part of GCC.
***************
*** 78,84 ****
  ;; ALU operations with a shift-by-constant operand
  (define_insn_reservation "1020alu_shift_op" 1 
   (and (eq_attr "tune" "arm10e")
!       (eq_attr "type" "alu_shift_imm,alus_shift_imm,\
                         logic_shift_imm,logics_shift_imm,\
                         extend,mov_shift,mvn_shift"))
   "1020a_e,1020a_m,1020a_w")
--- 78,84 ----
  ;; ALU operations with a shift-by-constant operand
  (define_insn_reservation "1020alu_shift_op" 1 
   (and (eq_attr "tune" "arm10e")
!       (eq_attr "type" "alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm,\
                         logic_shift_imm,logics_shift_imm,\
                         extend,mov_shift,mvn_shift"))
   "1020a_e,1020a_m,1020a_w")
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm1026ejs.md gcc-11.1.0/gcc/config/arm/arm1026ejs.md
*** gcc-10.3.0/gcc/config/arm/arm1026ejs.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm1026ejs.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM 1026EJ-S Pipeline Description
! ;; Copyright (C) 2003-2020 Free Software Foundation, Inc.
  ;; Written by CodeSourcery, LLC.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM 1026EJ-S Pipeline Description
! ;; Copyright (C) 2003-2021 Free Software Foundation, Inc.
  ;; Written by CodeSourcery, LLC.
  ;;
  ;; This file is part of GCC.
***************
*** 78,84 ****
  ;; ALU operations with a shift-by-constant operand
  (define_insn_reservation "alu_shift_op" 1 
   (and (eq_attr "tune" "arm1026ejs")
!       (eq_attr "type" "alu_shift_imm,alus_shift_imm,\
                         logic_shift_imm,logics_shift_imm,\
                         extend,mov_shift,mvn_shift"))
   "a_e,a_m,a_w")
--- 78,84 ----
  ;; ALU operations with a shift-by-constant operand
  (define_insn_reservation "alu_shift_op" 1 
   (and (eq_attr "tune" "arm1026ejs")
!       (eq_attr "type" "alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm,\
                         logic_shift_imm,logics_shift_imm,\
                         extend,mov_shift,mvn_shift"))
   "a_e,a_m,a_w")
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm1136jfs.md gcc-11.1.0/gcc/config/arm/arm1136jfs.md
*** gcc-10.3.0/gcc/config/arm/arm1136jfs.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm1136jfs.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM 1136J[F]-S Pipeline Description
! ;; Copyright (C) 2003-2020 Free Software Foundation, Inc.
  ;; Written by CodeSourcery, LLC.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM 1136J[F]-S Pipeline Description
! ;; Copyright (C) 2003-2021 Free Software Foundation, Inc.
  ;; Written by CodeSourcery, LLC.
  ;;
  ;; This file is part of GCC.
***************
*** 87,93 ****
  ;; ALU operations with a shift-by-constant operand
  (define_insn_reservation "11_alu_shift_op" 2
   (and (eq_attr "tune" "arm1136js,arm1136jfs")
!       (eq_attr "type" "alu_shift_imm,alus_shift_imm,\
                         logic_shift_imm,logics_shift_imm,\
                         extend,mov_shift,mvn_shift"))
   "e_1,e_2,e_3,e_wb")
--- 87,93 ----
  ;; ALU operations with a shift-by-constant operand
  (define_insn_reservation "11_alu_shift_op" 2
   (and (eq_attr "tune" "arm1136js,arm1136jfs")
!       (eq_attr "type" "alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm,\
                         logic_shift_imm,logics_shift_imm,\
                         extend,mov_shift,mvn_shift"))
   "e_1,e_2,e_3,e_wb")
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm926ejs.md gcc-11.1.0/gcc/config/arm/arm926ejs.md
*** gcc-10.3.0/gcc/config/arm/arm926ejs.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm926ejs.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM 926EJ-S Pipeline Description
! ;; Copyright (C) 2003-2020 Free Software Foundation, Inc.
  ;; Written by CodeSourcery, LLC.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM 926EJ-S Pipeline Description
! ;; Copyright (C) 2003-2021 Free Software Foundation, Inc.
  ;; Written by CodeSourcery, LLC.
  ;;
  ;; This file is part of GCC.
***************
*** 62,68 ****
                         alu_sreg,alus_sreg,logic_reg,logics_reg,\
                         adc_imm,adcs_imm,adc_reg,adcs_reg,\
                         adr,bfm,rev,\
!                        alu_shift_imm,alus_shift_imm,\
                         logic_shift_imm,logics_shift_imm,\
                         shift_imm,shift_reg,extend,\
                         mov_imm,mov_reg,mov_shift,\
--- 62,68 ----
                         alu_sreg,alus_sreg,logic_reg,logics_reg,\
                         adc_imm,adcs_imm,adc_reg,adcs_reg,\
                         adr,bfm,rev,\
!                        alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm,\
                         logic_shift_imm,logics_shift_imm,\
                         shift_imm,shift_reg,extend,\
                         mov_imm,mov_reg,mov_shift,\
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm_acle.h gcc-11.1.0/gcc/config/arm/arm_acle.h
*** gcc-10.3.0/gcc/config/arm/arm_acle.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm_acle.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* ARM Non-NEON ACLE intrinsics include file.
  
!    Copyright (C) 2013-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* ARM Non-NEON ACLE intrinsics include file.
  
!    Copyright (C) 2013-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm_acle_builtins.def gcc-11.1.0/gcc/config/arm/arm_acle_builtins.def
*** gcc-10.3.0/gcc/config/arm/arm_acle_builtins.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm_acle_builtins.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ACLE builtin definitions for ARM.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* ACLE builtin definitions for ARM.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm_bf16.h gcc-11.1.0/gcc/config/arm/arm_bf16.h
*** gcc-10.3.0/gcc/config/arm/arm_bf16.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm_bf16.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Arm BF16 intrinsics include file.
  
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Arm BF16 intrinsics include file.
  
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm_cde.h gcc-11.1.0/gcc/config/arm/arm_cde.h
*** gcc-10.3.0/gcc/config/arm/arm_cde.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm_cde.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Arm Custom Datapath Extension (CDE) intrinsics include file.
  
!    Copyright (C) 2020 Free Software Foundation, Inc.
     Contributed by Arm Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* Arm Custom Datapath Extension (CDE) intrinsics include file.
  
!    Copyright (C) 2020-2021 Free Software Foundation, Inc.
     Contributed by Arm Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm_cde_builtins.def gcc-11.1.0/gcc/config/arm/arm_cde_builtins.def
*** gcc-10.3.0/gcc/config/arm/arm_cde_builtins.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm_cde_builtins.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Arm Custom Datapath Extension (CDE) builtin definitions.
!    Copyright (C) 2020 Free Software Foundation, Inc.
     Contributed by Arm Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Arm Custom Datapath Extension (CDE) builtin definitions.
!    Copyright (C) 2020-2021 Free Software Foundation, Inc.
     Contributed by Arm Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm_cmse.h gcc-11.1.0/gcc/config/arm/arm_cmse.h
*** gcc-10.3.0/gcc/config/arm/arm_cmse.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm_cmse.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* ARMv8-M Secure Extensions intrinsics include file.
  
!    Copyright (C) 2015-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* ARMv8-M Secure Extensions intrinsics include file.
  
!    Copyright (C) 2015-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm_fp16.h gcc-11.1.0/gcc/config/arm/arm_fp16.h
*** gcc-10.3.0/gcc/config/arm/arm_fp16.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm_fp16.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* ARM FP16 intrinsics include file.
  
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* ARM FP16 intrinsics include file.
  
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm_mve.h gcc-11.1.0/gcc/config/arm/arm_mve.h
*** gcc-10.3.0/gcc/config/arm/arm_mve.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm_mve.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Arm MVE intrinsics include file.
  
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
     Contributed by Arm.
  
     This file is part of GCC.
--- 1,6 ----
  /* Arm MVE intrinsics include file.
  
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
     Contributed by Arm.
  
     This file is part of GCC.
*************** __extension__ extern __inline uint8x16_t
*** 3981,3994 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot90_u8 (uint8x16_t __a, uint8x16_t __b)
  {
!   return __builtin_mve_vcaddq_rot90_uv16qi (__a, __b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot270_u8 (uint8x16_t __a, uint8x16_t __b)
  {
!   return __builtin_mve_vcaddq_rot270_uv16qi (__a, __b);
  }
  
  __extension__ extern __inline uint8x16_t
--- 3981,3996 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot90_u8 (uint8x16_t __a, uint8x16_t __b)
  {
!   return (uint8x16_t)
!     __builtin_mve_vcaddq_rot90v16qi ((int8x16_t)__a, (int8x16_t)__b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot270_u8 (uint8x16_t __a, uint8x16_t __b)
  {
!   return (uint8x16_t)
!     __builtin_mve_vcaddq_rot270v16qi ((int8x16_t)__a, (int8x16_t)__b);
  }
  
  __extension__ extern __inline uint8x16_t
*************** __extension__ extern __inline int8x16_t
*** 4520,4533 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot90_s8 (int8x16_t __a, int8x16_t __b)
  {
!   return __builtin_mve_vcaddq_rot90_sv16qi (__a, __b);
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot270_s8 (int8x16_t __a, int8x16_t __b)
  {
!   return __builtin_mve_vcaddq_rot270_sv16qi (__a, __b);
  }
  
  __extension__ extern __inline int8x16_t
--- 4522,4535 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot90_s8 (int8x16_t __a, int8x16_t __b)
  {
!   return __builtin_mve_vcaddq_rot90v16qi (__a, __b);
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot270_s8 (int8x16_t __a, int8x16_t __b)
  {
!   return __builtin_mve_vcaddq_rot270v16qi (__a, __b);
  }
  
  __extension__ extern __inline int8x16_t
*************** __extension__ extern __inline uint16x8_t
*** 4821,4834 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot90_u16 (uint16x8_t __a, uint16x8_t __b)
  {
!   return __builtin_mve_vcaddq_rot90_uv8hi (__a, __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot270_u16 (uint16x8_t __a, uint16x8_t __b)
  {
!   return __builtin_mve_vcaddq_rot270_uv8hi (__a, __b);
  }
  
  __extension__ extern __inline uint16x8_t
--- 4823,4838 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot90_u16 (uint16x8_t __a, uint16x8_t __b)
  {
!   return (uint16x8_t)
!     __builtin_mve_vcaddq_rot90v8hi ((int16x8_t)__a, (int16x8_t)__b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot270_u16 (uint16x8_t __a, uint16x8_t __b)
  {
!   return (uint16x8_t)
!     __builtin_mve_vcaddq_rot270v8hi ((int16x8_t)__a, (int16x8_t)__b);
  }
  
  __extension__ extern __inline uint16x8_t
*************** __extension__ extern __inline int16x8_t
*** 5360,5373 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot90_s16 (int16x8_t __a, int16x8_t __b)
  {
!   return __builtin_mve_vcaddq_rot90_sv8hi (__a, __b);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot270_s16 (int16x8_t __a, int16x8_t __b)
  {
!   return __builtin_mve_vcaddq_rot270_sv8hi (__a, __b);
  }
  
  __extension__ extern __inline int16x8_t
--- 5364,5377 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot90_s16 (int16x8_t __a, int16x8_t __b)
  {
!   return __builtin_mve_vcaddq_rot90v8hi (__a, __b);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot270_s16 (int16x8_t __a, int16x8_t __b)
  {
!   return __builtin_mve_vcaddq_rot270v8hi (__a, __b);
  }
  
  __extension__ extern __inline int16x8_t
*************** __extension__ extern __inline uint32x4_t
*** 5661,5674 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot90_u32 (uint32x4_t __a, uint32x4_t __b)
  {
!   return __builtin_mve_vcaddq_rot90_uv4si (__a, __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot270_u32 (uint32x4_t __a, uint32x4_t __b)
  {
!   return __builtin_mve_vcaddq_rot270_uv4si (__a, __b);
  }
  
  __extension__ extern __inline uint32x4_t
--- 5665,5680 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot90_u32 (uint32x4_t __a, uint32x4_t __b)
  {
!   return (uint32x4_t)
!     __builtin_mve_vcaddq_rot90v4si ((int32x4_t)__a, (int32x4_t)__b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot270_u32 (uint32x4_t __a, uint32x4_t __b)
  {
!   return (uint32x4_t)
!     __builtin_mve_vcaddq_rot270v4si ((int32x4_t)__a, (int32x4_t)__b);
  }
  
  __extension__ extern __inline uint32x4_t
*************** __extension__ extern __inline int32x4_t
*** 6200,6213 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot90_s32 (int32x4_t __a, int32x4_t __b)
  {
!   return __builtin_mve_vcaddq_rot90_sv4si (__a, __b);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot270_s32 (int32x4_t __a, int32x4_t __b)
  {
!   return __builtin_mve_vcaddq_rot270_sv4si (__a, __b);
  }
  
  __extension__ extern __inline int32x4_t
--- 6206,6219 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot90_s32 (int32x4_t __a, int32x4_t __b)
  {
!   return __builtin_mve_vcaddq_rot90v4si (__a, __b);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot270_s32 (int32x4_t __a, int32x4_t __b)
  {
!   return __builtin_mve_vcaddq_rot270v4si (__a, __b);
  }
  
  __extension__ extern __inline int32x4_t
*************** __extension__ extern __inline float16x8_
*** 17342,17383 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmulq_rot90_f16 (float16x8_t __a, float16x8_t __b)
  {
!   return __builtin_mve_vcmulq_rot90_fv8hf (__a, __b);
  }
  
  __extension__ extern __inline float16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmulq_rot270_f16 (float16x8_t __a, float16x8_t __b)
  {
!   return __builtin_mve_vcmulq_rot270_fv8hf (__a, __b);
  }
  
  __extension__ extern __inline float16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmulq_rot180_f16 (float16x8_t __a, float16x8_t __b)
  {
!   return __builtin_mve_vcmulq_rot180_fv8hf (__a, __b);
  }
  
  __extension__ extern __inline float16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmulq_f16 (float16x8_t __a, float16x8_t __b)
  {
!   return __builtin_mve_vcmulq_fv8hf (__a, __b);
  }
  
  __extension__ extern __inline float16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot90_f16 (float16x8_t __a, float16x8_t __b)
  {
!   return __builtin_mve_vcaddq_rot90_fv8hf (__a, __b);
  }
  
  __extension__ extern __inline float16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot270_f16 (float16x8_t __a, float16x8_t __b)
  {
!   return __builtin_mve_vcaddq_rot270_fv8hf (__a, __b);
  }
  
  __extension__ extern __inline float16x8_t
--- 17348,17389 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmulq_rot90_f16 (float16x8_t __a, float16x8_t __b)
  {
!   return __builtin_mve_vcmulq_rot90v8hf (__a, __b);
  }
  
  __extension__ extern __inline float16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmulq_rot270_f16 (float16x8_t __a, float16x8_t __b)
  {
!   return __builtin_mve_vcmulq_rot270v8hf (__a, __b);
  }
  
  __extension__ extern __inline float16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmulq_rot180_f16 (float16x8_t __a, float16x8_t __b)
  {
!   return __builtin_mve_vcmulq_rot180v8hf (__a, __b);
  }
  
  __extension__ extern __inline float16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmulq_f16 (float16x8_t __a, float16x8_t __b)
  {
!   return __builtin_mve_vcmulqv8hf (__a, __b);
  }
  
  __extension__ extern __inline float16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot90_f16 (float16x8_t __a, float16x8_t __b)
  {
!   return __builtin_mve_vcaddq_rot90v8hf (__a, __b);
  }
  
  __extension__ extern __inline float16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot270_f16 (float16x8_t __a, float16x8_t __b)
  {
!   return __builtin_mve_vcaddq_rot270v8hf (__a, __b);
  }
  
  __extension__ extern __inline float16x8_t
*************** __extension__ extern __inline float32x4_
*** 17594,17635 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmulq_rot90_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return __builtin_mve_vcmulq_rot90_fv4sf (__a, __b);
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmulq_rot270_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return __builtin_mve_vcmulq_rot270_fv4sf (__a, __b);
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmulq_rot180_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return __builtin_mve_vcmulq_rot180_fv4sf (__a, __b);
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmulq_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return __builtin_mve_vcmulq_fv4sf (__a, __b);
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot90_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return __builtin_mve_vcaddq_rot90_fv4sf (__a, __b);
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot270_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return __builtin_mve_vcaddq_rot270_fv4sf (__a, __b);
  }
  
  __extension__ extern __inline float32x4_t
--- 17600,17641 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmulq_rot90_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return __builtin_mve_vcmulq_rot90v4sf (__a, __b);
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmulq_rot270_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return __builtin_mve_vcmulq_rot270v4sf (__a, __b);
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmulq_rot180_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return __builtin_mve_vcmulq_rot180v4sf (__a, __b);
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmulq_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return __builtin_mve_vcmulqv4sf (__a, __b);
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot90_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return __builtin_mve_vcaddq_rot90v4sf (__a, __b);
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcaddq_rot270_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return __builtin_mve_vcaddq_rot270v4sf (__a, __b);
  }
  
  __extension__ extern __inline float32x4_t
*************** __extension__ extern __inline float16x8_
*** 17784,17811 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmlaq_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c)
  {
!   return __builtin_mve_vcmlaq_fv8hf (__a, __b, __c);
  }
  
  __extension__ extern __inline float16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmlaq_rot180_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c)
  {
!   return __builtin_mve_vcmlaq_rot180_fv8hf (__a, __b, __c);
  }
  
  __extension__ extern __inline float16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmlaq_rot270_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c)
  {
!   return __builtin_mve_vcmlaq_rot270_fv8hf (__a, __b, __c);
  }
  
  __extension__ extern __inline float16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmlaq_rot90_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c)
  {
!   return __builtin_mve_vcmlaq_rot90_fv8hf (__a, __b, __c);
  }
  
  __extension__ extern __inline float16x8_t
--- 17790,17817 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmlaq_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c)
  {
!   return __builtin_mve_vcmlaqv8hf (__a, __b, __c);
  }
  
  __extension__ extern __inline float16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmlaq_rot180_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c)
  {
!   return __builtin_mve_vcmlaq_rot180v8hf (__a, __b, __c);
  }
  
  __extension__ extern __inline float16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmlaq_rot270_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c)
  {
!   return __builtin_mve_vcmlaq_rot270v8hf (__a, __b, __c);
  }
  
  __extension__ extern __inline float16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmlaq_rot90_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c)
  {
!   return __builtin_mve_vcmlaq_rot90v8hf (__a, __b, __c);
  }
  
  __extension__ extern __inline float16x8_t
*************** __extension__ extern __inline float32x4_
*** 18092,18119 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmlaq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
  {
!   return __builtin_mve_vcmlaq_fv4sf (__a, __b, __c);
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmlaq_rot180_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
  {
!   return __builtin_mve_vcmlaq_rot180_fv4sf (__a, __b, __c);
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmlaq_rot270_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
  {
!   return __builtin_mve_vcmlaq_rot270_fv4sf (__a, __b, __c);
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmlaq_rot90_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
  {
!   return __builtin_mve_vcmlaq_rot90_fv4sf (__a, __b, __c);
  }
  
  __extension__ extern __inline float32x4_t
--- 18098,18125 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmlaq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
  {
!   return __builtin_mve_vcmlaqv4sf (__a, __b, __c);
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmlaq_rot180_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
  {
!   return __builtin_mve_vcmlaq_rot180v4sf (__a, __b, __c);
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmlaq_rot270_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
  {
!   return __builtin_mve_vcmlaq_rot270v4sf (__a, __b, __c);
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vcmlaq_rot90_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
  {
!   return __builtin_mve_vcmlaq_rot90v4sf (__a, __b, __c);
  }
  
  __extension__ extern __inline float32x4_t
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm_mve_builtins.def gcc-11.1.0/gcc/config/arm/arm_mve_builtins.def
*** gcc-10.3.0/gcc/config/arm/arm_mve_builtins.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm_mve_builtins.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /*  MVE builtin definitions for Arm.
!     Copyright  (C) 2019-2020 Free Software Foundation, Inc.
      Contributed by Arm.
  
      This file is part of GCC.
--- 1,5 ----
  /*  MVE builtin definitions for Arm.
!     Copyright  (C) 2019-2021 Free Software Foundation, Inc.
      Contributed by Arm.
  
      This file is part of GCC.
*************** VAR3 (BINOP_UNONE_UNONE_UNONE, vcmpeqq_u
*** 125,132 ****
  VAR3 (BINOP_UNONE_UNONE_UNONE, vcmpeqq_n_u, v16qi, v8hi, v4si)
  VAR3 (BINOP_UNONE_UNONE_UNONE, vcmpcsq_u, v16qi, v8hi, v4si)
  VAR3 (BINOP_UNONE_UNONE_UNONE, vcmpcsq_n_u, v16qi, v8hi, v4si)
- VAR3 (BINOP_UNONE_UNONE_UNONE, vcaddq_rot90_u, v16qi, v8hi, v4si)
- VAR3 (BINOP_UNONE_UNONE_UNONE, vcaddq_rot270_u, v16qi, v8hi, v4si)
  VAR3 (BINOP_UNONE_UNONE_UNONE, vbicq_u, v16qi, v8hi, v4si)
  VAR3 (BINOP_UNONE_UNONE_UNONE, vandq_u, v16qi, v8hi, v4si)
  VAR3 (BINOP_UNONE_UNONE_UNONE, vaddvq_p_u, v16qi, v8hi, v4si)
--- 125,130 ----
*************** VAR3 (BINOP_NONE_NONE_NONE, vhcaddq_rot2
*** 202,209 ****
  VAR3 (BINOP_NONE_NONE_NONE, vhaddq_s, v16qi, v8hi, v4si)
  VAR3 (BINOP_NONE_NONE_NONE, vhaddq_n_s, v16qi, v8hi, v4si)
  VAR3 (BINOP_NONE_NONE_NONE, veorq_s, v16qi, v8hi, v4si)
- VAR3 (BINOP_NONE_NONE_NONE, vcaddq_rot90_s, v16qi, v8hi, v4si)
- VAR3 (BINOP_NONE_NONE_NONE, vcaddq_rot270_s, v16qi, v8hi, v4si)
  VAR3 (BINOP_NONE_NONE_NONE, vbrsrq_n_s, v16qi, v8hi, v4si)
  VAR3 (BINOP_NONE_NONE_NONE, vbicq_s, v16qi, v8hi, v4si)
  VAR3 (BINOP_NONE_NONE_NONE, vandq_s, v16qi, v8hi, v4si)
--- 200,205 ----
*************** VAR2 (BINOP_NONE_NONE_NONE, vmaxnmq_f, v
*** 264,275 ****
  VAR2 (BINOP_NONE_NONE_NONE, vmaxnmavq_f, v8hf, v4sf)
  VAR2 (BINOP_NONE_NONE_NONE, vmaxnmaq_f, v8hf, v4sf)
  VAR2 (BINOP_NONE_NONE_NONE, veorq_f, v8hf, v4sf)
- VAR2 (BINOP_NONE_NONE_NONE, vcmulq_rot90_f, v8hf, v4sf)
- VAR2 (BINOP_NONE_NONE_NONE, vcmulq_rot270_f, v8hf, v4sf)
- VAR2 (BINOP_NONE_NONE_NONE, vcmulq_rot180_f, v8hf, v4sf)
- VAR2 (BINOP_NONE_NONE_NONE, vcmulq_f, v8hf, v4sf)
- VAR2 (BINOP_NONE_NONE_NONE, vcaddq_rot90_f, v8hf, v4sf)
- VAR2 (BINOP_NONE_NONE_NONE, vcaddq_rot270_f, v8hf, v4sf)
  VAR2 (BINOP_NONE_NONE_NONE, vbicq_f, v8hf, v4sf)
  VAR2 (BINOP_NONE_NONE_NONE, vandq_f, v8hf, v4sf)
  VAR2 (BINOP_NONE_NONE_NONE, vaddq_n_f, v8hf, v4sf)
--- 260,265 ----
*************** VAR2 (TERNOP_NONE_NONE_NONE_NONE, vfmsq_
*** 470,479 ****
  VAR2 (TERNOP_NONE_NONE_NONE_NONE, vfmasq_n_f, v8hf, v4sf)
  VAR2 (TERNOP_NONE_NONE_NONE_NONE, vfmaq_n_f, v8hf, v4sf)
  VAR2 (TERNOP_NONE_NONE_NONE_NONE, vfmaq_f, v8hf, v4sf)
- VAR2 (TERNOP_NONE_NONE_NONE_NONE, vcmlaq_rot90_f, v8hf, v4sf)
- VAR2 (TERNOP_NONE_NONE_NONE_NONE, vcmlaq_rot270_f, v8hf, v4sf)
- VAR2 (TERNOP_NONE_NONE_NONE_NONE, vcmlaq_rot180_f, v8hf, v4sf)
- VAR2 (TERNOP_NONE_NONE_NONE_NONE, vcmlaq_f, v8hf, v4sf)
  VAR2 (TERNOP_NONE_NONE_NONE_IMM, vshrntq_n_s, v8hi, v4si)
  VAR2 (TERNOP_NONE_NONE_NONE_IMM, vshrnbq_n_s, v8hi, v4si)
  VAR2 (TERNOP_NONE_NONE_NONE_IMM, vrshrntq_n_s, v8hi, v4si)
--- 460,465 ----
*************** VAR3 (QUADOP_NONE_NONE_UNONE_IMM_UNONE,
*** 892,894 ****
--- 878,892 ----
  VAR3 (QUADOP_NONE_NONE_UNONE_IMM_UNONE, vshlcq_m_carry_s, v16qi, v8hi, v4si)
  VAR3 (QUADOP_UNONE_UNONE_UNONE_IMM_UNONE, vshlcq_m_vec_u, v16qi, v8hi, v4si)
  VAR3 (QUADOP_UNONE_UNONE_UNONE_IMM_UNONE, vshlcq_m_carry_u, v16qi, v8hi, v4si)
+ 
+ /* optabs without any suffixes.  */
+ VAR5 (BINOP_NONE_NONE_NONE, vcaddq_rot90, v16qi, v8hi, v4si, v8hf, v4sf)
+ VAR5 (BINOP_NONE_NONE_NONE, vcaddq_rot270, v16qi, v8hi, v4si, v8hf, v4sf)
+ VAR2 (BINOP_NONE_NONE_NONE, vcmulq_rot90, v8hf, v4sf)
+ VAR2 (BINOP_NONE_NONE_NONE, vcmulq_rot270, v8hf, v4sf)
+ VAR2 (BINOP_NONE_NONE_NONE, vcmulq_rot180, v8hf, v4sf)
+ VAR2 (BINOP_NONE_NONE_NONE, vcmulq, v8hf, v4sf)
+ VAR2 (TERNOP_NONE_NONE_NONE_NONE, vcmlaq_rot90, v8hf, v4sf)
+ VAR2 (TERNOP_NONE_NONE_NONE_NONE, vcmlaq_rot270, v8hf, v4sf)
+ VAR2 (TERNOP_NONE_NONE_NONE_NONE, vcmlaq_rot180, v8hf, v4sf)
+ VAR2 (TERNOP_NONE_NONE_NONE_NONE, vcmlaq, v8hf, v4sf)
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm_mve_types.h gcc-11.1.0/gcc/config/arm/arm_mve_types.h
*** gcc-10.3.0/gcc/config/arm/arm_mve_types.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm_mve_types.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Arm MVE intrinsics include file.
  
!    Copyright (C) 2020 Free Software Foundation, Inc.
     Contributed by Arm.
  
     This file is part of GCC.
--- 1,6 ----
  /* Arm MVE intrinsics include file.
  
!    Copyright (C) 2020-2021 Free Software Foundation, Inc.
     Contributed by Arm.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm_neon.h gcc-11.1.0/gcc/config/arm/arm_neon.h
*** gcc-10.3.0/gcc/config/arm/arm_neon.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm_neon.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* ARM NEON intrinsics include file.
  
!    Copyright (C) 2006-2020 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
--- 1,6 ----
  /* ARM NEON intrinsics include file.
  
!    Copyright (C) 2006-2021 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
*************** __extension__ extern __inline uint8x8_t
*** 2471,2862 ****
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcge_s8 (int8x8_t __a, int8x8_t __b)
  {
!   return (uint8x8_t)__builtin_neon_vcgev8qi (__a, __b);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcge_s16 (int16x4_t __a, int16x4_t __b)
  {
!   return (uint16x4_t)__builtin_neon_vcgev4hi (__a, __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcge_s32 (int32x2_t __a, int32x2_t __b)
  {
!   return (uint32x2_t)__builtin_neon_vcgev2si (__a, __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcge_f32 (float32x2_t __a, float32x2_t __b)
  {
!   return (uint32x2_t)__builtin_neon_vcgev2sf (__a, __b);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcge_u8 (uint8x8_t __a, uint8x8_t __b)
  {
!   return (uint8x8_t)__builtin_neon_vcgeuv8qi ((int8x8_t) __a, (int8x8_t) __b);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcge_u16 (uint16x4_t __a, uint16x4_t __b)
  {
!   return (uint16x4_t)__builtin_neon_vcgeuv4hi ((int16x4_t) __a, (int16x4_t) __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcge_u32 (uint32x2_t __a, uint32x2_t __b)
  {
!   return (uint32x2_t)__builtin_neon_vcgeuv2si ((int32x2_t) __a, (int32x2_t) __b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgeq_s8 (int8x16_t __a, int8x16_t __b)
  {
!   return (uint8x16_t)__builtin_neon_vcgev16qi (__a, __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgeq_s16 (int16x8_t __a, int16x8_t __b)
  {
!   return (uint16x8_t)__builtin_neon_vcgev8hi (__a, __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgeq_s32 (int32x4_t __a, int32x4_t __b)
  {
!   return (uint32x4_t)__builtin_neon_vcgev4si (__a, __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgeq_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return (uint32x4_t)__builtin_neon_vcgev4sf (__a, __b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgeq_u8 (uint8x16_t __a, uint8x16_t __b)
  {
!   return (uint8x16_t)__builtin_neon_vcgeuv16qi ((int8x16_t) __a, (int8x16_t) __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgeq_u16 (uint16x8_t __a, uint16x8_t __b)
  {
!   return (uint16x8_t)__builtin_neon_vcgeuv8hi ((int16x8_t) __a, (int16x8_t) __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgeq_u32 (uint32x4_t __a, uint32x4_t __b)
  {
!   return (uint32x4_t)__builtin_neon_vcgeuv4si ((int32x4_t) __a, (int32x4_t) __b);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcle_s8 (int8x8_t __a, int8x8_t __b)
  {
!   return (uint8x8_t)__builtin_neon_vcgev8qi (__b, __a);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcle_s16 (int16x4_t __a, int16x4_t __b)
  {
!   return (uint16x4_t)__builtin_neon_vcgev4hi (__b, __a);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcle_s32 (int32x2_t __a, int32x2_t __b)
  {
!   return (uint32x2_t)__builtin_neon_vcgev2si (__b, __a);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcle_f32 (float32x2_t __a, float32x2_t __b)
  {
!   return (uint32x2_t)__builtin_neon_vcgev2sf (__b, __a);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcle_u8 (uint8x8_t __a, uint8x8_t __b)
  {
!   return (uint8x8_t)__builtin_neon_vcgeuv8qi ((int8x8_t) __b, (int8x8_t) __a);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcle_u16 (uint16x4_t __a, uint16x4_t __b)
  {
!   return (uint16x4_t)__builtin_neon_vcgeuv4hi ((int16x4_t) __b, (int16x4_t) __a);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcle_u32 (uint32x2_t __a, uint32x2_t __b)
  {
!   return (uint32x2_t)__builtin_neon_vcgeuv2si ((int32x2_t) __b, (int32x2_t) __a);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcleq_s8 (int8x16_t __a, int8x16_t __b)
  {
!   return (uint8x16_t)__builtin_neon_vcgev16qi (__b, __a);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcleq_s16 (int16x8_t __a, int16x8_t __b)
  {
!   return (uint16x8_t)__builtin_neon_vcgev8hi (__b, __a);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcleq_s32 (int32x4_t __a, int32x4_t __b)
  {
!   return (uint32x4_t)__builtin_neon_vcgev4si (__b, __a);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcleq_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return (uint32x4_t)__builtin_neon_vcgev4sf (__b, __a);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcleq_u8 (uint8x16_t __a, uint8x16_t __b)
  {
!   return (uint8x16_t)__builtin_neon_vcgeuv16qi ((int8x16_t) __b, (int8x16_t) __a);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcleq_u16 (uint16x8_t __a, uint16x8_t __b)
  {
!   return (uint16x8_t)__builtin_neon_vcgeuv8hi ((int16x8_t) __b, (int16x8_t) __a);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcleq_u32 (uint32x4_t __a, uint32x4_t __b)
  {
!   return (uint32x4_t)__builtin_neon_vcgeuv4si ((int32x4_t) __b, (int32x4_t) __a);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgt_s8 (int8x8_t __a, int8x8_t __b)
  {
!   return (uint8x8_t)__builtin_neon_vcgtv8qi (__a, __b);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgt_s16 (int16x4_t __a, int16x4_t __b)
  {
!   return (uint16x4_t)__builtin_neon_vcgtv4hi (__a, __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgt_s32 (int32x2_t __a, int32x2_t __b)
  {
!   return (uint32x2_t)__builtin_neon_vcgtv2si (__a, __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgt_f32 (float32x2_t __a, float32x2_t __b)
  {
!   return (uint32x2_t)__builtin_neon_vcgtv2sf (__a, __b);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgt_u8 (uint8x8_t __a, uint8x8_t __b)
  {
!   return (uint8x8_t)__builtin_neon_vcgtuv8qi ((int8x8_t) __a, (int8x8_t) __b);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgt_u16 (uint16x4_t __a, uint16x4_t __b)
  {
!   return (uint16x4_t)__builtin_neon_vcgtuv4hi ((int16x4_t) __a, (int16x4_t) __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgt_u32 (uint32x2_t __a, uint32x2_t __b)
  {
!   return (uint32x2_t)__builtin_neon_vcgtuv2si ((int32x2_t) __a, (int32x2_t) __b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgtq_s8 (int8x16_t __a, int8x16_t __b)
  {
!   return (uint8x16_t)__builtin_neon_vcgtv16qi (__a, __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgtq_s16 (int16x8_t __a, int16x8_t __b)
  {
!   return (uint16x8_t)__builtin_neon_vcgtv8hi (__a, __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgtq_s32 (int32x4_t __a, int32x4_t __b)
  {
!   return (uint32x4_t)__builtin_neon_vcgtv4si (__a, __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgtq_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return (uint32x4_t)__builtin_neon_vcgtv4sf (__a, __b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgtq_u8 (uint8x16_t __a, uint8x16_t __b)
  {
!   return (uint8x16_t)__builtin_neon_vcgtuv16qi ((int8x16_t) __a, (int8x16_t) __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgtq_u16 (uint16x8_t __a, uint16x8_t __b)
  {
!   return (uint16x8_t)__builtin_neon_vcgtuv8hi ((int16x8_t) __a, (int16x8_t) __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgtq_u32 (uint32x4_t __a, uint32x4_t __b)
  {
!   return (uint32x4_t)__builtin_neon_vcgtuv4si ((int32x4_t) __a, (int32x4_t) __b);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vclt_s8 (int8x8_t __a, int8x8_t __b)
  {
!   return (uint8x8_t)__builtin_neon_vcgtv8qi (__b, __a);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vclt_s16 (int16x4_t __a, int16x4_t __b)
  {
!   return (uint16x4_t)__builtin_neon_vcgtv4hi (__b, __a);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vclt_s32 (int32x2_t __a, int32x2_t __b)
  {
!   return (uint32x2_t)__builtin_neon_vcgtv2si (__b, __a);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vclt_f32 (float32x2_t __a, float32x2_t __b)
  {
!   return (uint32x2_t)__builtin_neon_vcgtv2sf (__b, __a);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vclt_u8 (uint8x8_t __a, uint8x8_t __b)
  {
!   return (uint8x8_t)__builtin_neon_vcgtuv8qi ((int8x8_t) __b, (int8x8_t) __a);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vclt_u16 (uint16x4_t __a, uint16x4_t __b)
  {
!   return (uint16x4_t)__builtin_neon_vcgtuv4hi ((int16x4_t) __b, (int16x4_t) __a);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vclt_u32 (uint32x2_t __a, uint32x2_t __b)
  {
!   return (uint32x2_t)__builtin_neon_vcgtuv2si ((int32x2_t) __b, (int32x2_t) __a);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcltq_s8 (int8x16_t __a, int8x16_t __b)
  {
!   return (uint8x16_t)__builtin_neon_vcgtv16qi (__b, __a);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcltq_s16 (int16x8_t __a, int16x8_t __b)
  {
!   return (uint16x8_t)__builtin_neon_vcgtv8hi (__b, __a);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcltq_s32 (int32x4_t __a, int32x4_t __b)
  {
!   return (uint32x4_t)__builtin_neon_vcgtv4si (__b, __a);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcltq_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return (uint32x4_t)__builtin_neon_vcgtv4sf (__b, __a);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcltq_u8 (uint8x16_t __a, uint8x16_t __b)
  {
!   return (uint8x16_t)__builtin_neon_vcgtuv16qi ((int8x16_t) __b, (int8x16_t) __a);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcltq_u16 (uint16x8_t __a, uint16x8_t __b)
  {
!   return (uint16x8_t)__builtin_neon_vcgtuv8hi ((int16x8_t) __b, (int16x8_t) __a);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcltq_u32 (uint32x4_t __a, uint32x4_t __b)
  {
!   return (uint32x4_t)__builtin_neon_vcgtuv4si ((int32x4_t) __b, (int32x4_t) __a);
  }
  
  __extension__ extern __inline uint32x2_t
--- 2471,2862 ----
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcge_s8 (int8x8_t __a, int8x8_t __b)
  {
!   return (uint8x8_t) (__a >= __b);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcge_s16 (int16x4_t __a, int16x4_t __b)
  {
!   return (uint16x4_t) (__a >= __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcge_s32 (int32x2_t __a, int32x2_t __b)
  {
!   return (uint32x2_t) (__a >= __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcge_f32 (float32x2_t __a, float32x2_t __b)
  {
!   return (uint32x2_t) (__a >= __b);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcge_u8 (uint8x8_t __a, uint8x8_t __b)
  {
!   return (uint8x8_t) (__a >= __b);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcge_u16 (uint16x4_t __a, uint16x4_t __b)
  {
!   return (uint16x4_t) (__a >= __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcge_u32 (uint32x2_t __a, uint32x2_t __b)
  {
!   return (uint32x2_t) (__a >= __b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgeq_s8 (int8x16_t __a, int8x16_t __b)
  {
!   return (uint8x16_t) (__a >= __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgeq_s16 (int16x8_t __a, int16x8_t __b)
  {
!   return (uint16x8_t) (__a >= __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgeq_s32 (int32x4_t __a, int32x4_t __b)
  {
!   return (uint32x4_t) (__a >= __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgeq_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return (uint32x4_t) (__a >= __b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgeq_u8 (uint8x16_t __a, uint8x16_t __b)
  {
!   return (uint8x16_t) (__a >= __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgeq_u16 (uint16x8_t __a, uint16x8_t __b)
  {
!   return (uint16x8_t) (__a >= __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgeq_u32 (uint32x4_t __a, uint32x4_t __b)
  {
!   return (uint32x4_t) (__a >= __b);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcle_s8 (int8x8_t __a, int8x8_t __b)
  {
!   return (uint8x8_t) (__a <= __b);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcle_s16 (int16x4_t __a, int16x4_t __b)
  {
!   return (uint16x4_t) (__a <= __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcle_s32 (int32x2_t __a, int32x2_t __b)
  {
!   return (uint32x2_t) (__a <= __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcle_f32 (float32x2_t __a, float32x2_t __b)
  {
!   return (uint32x2_t) (__a <= __b);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcle_u8 (uint8x8_t __a, uint8x8_t __b)
  {
!   return (uint8x8_t) (__a <= __b);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcle_u16 (uint16x4_t __a, uint16x4_t __b)
  {
!   return (uint16x4_t) (__a <= __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcle_u32 (uint32x2_t __a, uint32x2_t __b)
  {
!   return (uint32x2_t) (__a <= __b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcleq_s8 (int8x16_t __a, int8x16_t __b)
  {
!   return (uint8x16_t) (__a <= __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcleq_s16 (int16x8_t __a, int16x8_t __b)
  {
!   return (uint16x8_t) (__a <= __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcleq_s32 (int32x4_t __a, int32x4_t __b)
  {
!   return (uint32x4_t) (__a <= __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcleq_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return (uint32x4_t) (__a <= __b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcleq_u8 (uint8x16_t __a, uint8x16_t __b)
  {
!   return (uint8x16_t) (__a <= __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcleq_u16 (uint16x8_t __a, uint16x8_t __b)
  {
!   return (uint16x8_t) (__a <= __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcleq_u32 (uint32x4_t __a, uint32x4_t __b)
  {
!   return (uint32x4_t) (__a <= __b);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgt_s8 (int8x8_t __a, int8x8_t __b)
  {
!   return (uint8x8_t) (__a > __b);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgt_s16 (int16x4_t __a, int16x4_t __b)
  {
!   return (uint16x4_t) (__a > __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgt_s32 (int32x2_t __a, int32x2_t __b)
  {
!   return (uint32x2_t) (__a > __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgt_f32 (float32x2_t __a, float32x2_t __b)
  {
!   return (uint32x2_t) (__a > __b);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgt_u8 (uint8x8_t __a, uint8x8_t __b)
  {
!   return (__a > __b);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgt_u16 (uint16x4_t __a, uint16x4_t __b)
  {
!   return (__a > __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgt_u32 (uint32x2_t __a, uint32x2_t __b)
  {
!   return (__a > __b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgtq_s8 (int8x16_t __a, int8x16_t __b)
  {
!   return (uint8x16_t) (__a > __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgtq_s16 (int16x8_t __a, int16x8_t __b)
  {
!   return (uint16x8_t) (__a > __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgtq_s32 (int32x4_t __a, int32x4_t __b)
  {
!   return (uint32x4_t) (__a > __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgtq_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return (uint32x4_t) (__a > __b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgtq_u8 (uint8x16_t __a, uint8x16_t __b)
  {
!   return (__a > __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgtq_u16 (uint16x8_t __a, uint16x8_t __b)
  {
!   return (__a > __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcgtq_u32 (uint32x4_t __a, uint32x4_t __b)
  {
!   return (__a > __b);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vclt_s8 (int8x8_t __a, int8x8_t __b)
  {
!   return (uint8x8_t) (__a < __b);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vclt_s16 (int16x4_t __a, int16x4_t __b)
  {
!   return (uint16x4_t) (__a < __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vclt_s32 (int32x2_t __a, int32x2_t __b)
  {
!   return (uint32x2_t) (__a < __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vclt_f32 (float32x2_t __a, float32x2_t __b)
  {
!   return (uint32x2_t) (__a < __b);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vclt_u8 (uint8x8_t __a, uint8x8_t __b)
  {
!   return (__a < __b);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vclt_u16 (uint16x4_t __a, uint16x4_t __b)
  {
!   return (__a < __b);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vclt_u32 (uint32x2_t __a, uint32x2_t __b)
  {
!   return (__a < __b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcltq_s8 (int8x16_t __a, int8x16_t __b)
  {
!   return (uint8x16_t) (__a < __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcltq_s16 (int16x8_t __a, int16x8_t __b)
  {
!   return (uint16x8_t) (__a < __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcltq_s32 (int32x4_t __a, int32x4_t __b)
  {
!   return (uint32x4_t) (__a < __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcltq_f32 (float32x4_t __a, float32x4_t __b)
  {
!   return (uint32x4_t) (__a < __b);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcltq_u8 (uint8x16_t __a, uint8x16_t __b)
  {
!   return (__a < __b);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcltq_u16 (uint16x8_t __a, uint16x8_t __b)
  {
!   return (__a < __b);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcltq_u32 (uint32x4_t __a, uint32x4_t __b)
  {
!   return (__a < __b);
  }
  
  __extension__ extern __inline uint32x2_t
*************** __extension__ extern __inline int8x8_t
*** 5714,5769 ****
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vneg_s8 (int8x8_t __a)
  {
!   return (int8x8_t)__builtin_neon_vnegv8qi (__a);
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vneg_s16 (int16x4_t __a)
  {
!   return (int16x4_t)__builtin_neon_vnegv4hi (__a);
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vneg_s32 (int32x2_t __a)
  {
!   return (int32x2_t)__builtin_neon_vnegv2si (__a);
  }
  
  __extension__ extern __inline float32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vneg_f32 (float32x2_t __a)
  {
!   return (float32x2_t)__builtin_neon_vnegv2sf (__a);
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vnegq_s8 (int8x16_t __a)
  {
!   return (int8x16_t)__builtin_neon_vnegv16qi (__a);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vnegq_s16 (int16x8_t __a)
  {
!   return (int16x8_t)__builtin_neon_vnegv8hi (__a);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vnegq_s32 (int32x4_t __a)
  {
!   return (int32x4_t)__builtin_neon_vnegv4si (__a);
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vnegq_f32 (float32x4_t __a)
  {
!   return (float32x4_t)__builtin_neon_vnegv4sf (__a);
  }
  
  __extension__ extern __inline int8x8_t
--- 5714,5769 ----
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vneg_s8 (int8x8_t __a)
  {
!   return -__a;
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vneg_s16 (int16x4_t __a)
  {
!   return -__a;
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vneg_s32 (int32x2_t __a)
  {
!   return -__a;
  }
  
  __extension__ extern __inline float32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vneg_f32 (float32x2_t __a)
  {
!   return -__a;
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vnegq_s8 (int8x16_t __a)
  {
!   return -__a;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vnegq_s16 (int16x8_t __a)
  {
!   return -__a;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vnegq_s32 (int32x4_t __a)
  {
!   return -__a;
  }
  
  __extension__ extern __inline float32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vnegq_f32 (float32x4_t __a)
  {
!   return -__a;
  }
  
  __extension__ extern __inline int8x8_t
*************** __extension__ extern __inline int8x8_t
*** 5812,5909 ****
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvn_s8 (int8x8_t __a)
  {
!   return (int8x8_t)__builtin_neon_vmvnv8qi (__a);
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvn_s16 (int16x4_t __a)
  {
!   return (int16x4_t)__builtin_neon_vmvnv4hi (__a);
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvn_s32 (int32x2_t __a)
  {
!   return (int32x2_t)__builtin_neon_vmvnv2si (__a);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvn_u8 (uint8x8_t __a)
  {
!   return (uint8x8_t)__builtin_neon_vmvnv8qi ((int8x8_t) __a);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvn_u16 (uint16x4_t __a)
  {
!   return (uint16x4_t)__builtin_neon_vmvnv4hi ((int16x4_t) __a);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvn_u32 (uint32x2_t __a)
  {
!   return (uint32x2_t)__builtin_neon_vmvnv2si ((int32x2_t) __a);
  }
  
  __extension__ extern __inline poly8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvn_p8 (poly8x8_t __a)
  {
!   return (poly8x8_t)__builtin_neon_vmvnv8qi ((int8x8_t) __a);
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvnq_s8 (int8x16_t __a)
  {
!   return (int8x16_t)__builtin_neon_vmvnv16qi (__a);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvnq_s16 (int16x8_t __a)
  {
!   return (int16x8_t)__builtin_neon_vmvnv8hi (__a);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvnq_s32 (int32x4_t __a)
  {
!   return (int32x4_t)__builtin_neon_vmvnv4si (__a);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvnq_u8 (uint8x16_t __a)
  {
!   return (uint8x16_t)__builtin_neon_vmvnv16qi ((int8x16_t) __a);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvnq_u16 (uint16x8_t __a)
  {
!   return (uint16x8_t)__builtin_neon_vmvnv8hi ((int16x8_t) __a);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvnq_u32 (uint32x4_t __a)
  {
!   return (uint32x4_t)__builtin_neon_vmvnv4si ((int32x4_t) __a);
  }
  
  __extension__ extern __inline poly8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvnq_p8 (poly8x16_t __a)
  {
!   return (poly8x16_t)__builtin_neon_vmvnv16qi ((int8x16_t) __a);
  }
  
  __extension__ extern __inline int8x8_t
--- 5812,5909 ----
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvn_s8 (int8x8_t __a)
  {
!   return ~__a;
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvn_s16 (int16x4_t __a)
  {
!   return ~__a;
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvn_s32 (int32x2_t __a)
  {
!   return ~__a;
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvn_u8 (uint8x8_t __a)
  {
!   return ~__a;
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvn_u16 (uint16x4_t __a)
  {
!   return ~__a;
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvn_u32 (uint32x2_t __a)
  {
!   return ~__a;
  }
  
  __extension__ extern __inline poly8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvn_p8 (poly8x8_t __a)
  {
!   return (poly8x8_t) ~((int8x8_t) __a);
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvnq_s8 (int8x16_t __a)
  {
!   return ~__a;
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvnq_s16 (int16x8_t __a)
  {
!   return ~__a;
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvnq_s32 (int32x4_t __a)
  {
!   return ~__a;
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvnq_u8 (uint8x16_t __a)
  {
!   return ~__a;
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvnq_u16 (uint16x8_t __a)
  {
!   return ~__a;
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvnq_u32 (uint32x4_t __a)
  {
!   return ~__a;
  }
  
  __extension__ extern __inline poly8x16_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vmvnq_p8 (poly8x16_t __a)
  {
!   return (poly8x16_t) ~((int8x16_t) __a);
  }
  
  __extension__ extern __inline int8x8_t
*************** __extension__ extern __inline poly64x1_t
*** 6531,6537 ****
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_p64 (uint64_t __a)
  {
!   return (poly64x1_t)__builtin_neon_vcreatedi ((__builtin_neon_di) __a);
  }
  
  #pragma GCC pop_options
--- 6531,6537 ----
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_p64 (uint64_t __a)
  {
!   return (poly64x1_t) __a;
  }
  
  #pragma GCC pop_options
*************** __extension__ extern __inline int8x8_t
*** 6539,6566 ****
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_s8 (uint64_t __a)
  {
!   return (int8x8_t)__builtin_neon_vcreatev8qi ((__builtin_neon_di) __a);
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_s16 (uint64_t __a)
  {
!   return (int16x4_t)__builtin_neon_vcreatev4hi ((__builtin_neon_di) __a);
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_s32 (uint64_t __a)
  {
!   return (int32x2_t)__builtin_neon_vcreatev2si ((__builtin_neon_di) __a);
  }
  
  __extension__ extern __inline int64x1_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_s64 (uint64_t __a)
  {
!   return (int64x1_t)__builtin_neon_vcreatedi ((__builtin_neon_di) __a);
  }
  
  #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
--- 6539,6566 ----
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_s8 (uint64_t __a)
  {
!   return (int8x8_t) __a;
  }
  
  __extension__ extern __inline int16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_s16 (uint64_t __a)
  {
!   return (int16x4_t) __a;
  }
  
  __extension__ extern __inline int32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_s32 (uint64_t __a)
  {
!   return (int32x2_t) __a;
  }
  
  __extension__ extern __inline int64x1_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_s64 (uint64_t __a)
  {
!   return (int64x1_t) {__a};
  }
  
  #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
*************** __extension__ extern __inline float32x2_
*** 6576,6624 ****
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_f32 (uint64_t __a)
  {
!   return (float32x2_t)__builtin_neon_vcreatev2sf ((__builtin_neon_di) __a);
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_u8 (uint64_t __a)
  {
!   return (uint8x8_t)__builtin_neon_vcreatev8qi ((__builtin_neon_di) __a);
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_u16 (uint64_t __a)
  {
!   return (uint16x4_t)__builtin_neon_vcreatev4hi ((__builtin_neon_di) __a);
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_u32 (uint64_t __a)
  {
!   return (uint32x2_t)__builtin_neon_vcreatev2si ((__builtin_neon_di) __a);
  }
  
  __extension__ extern __inline uint64x1_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_u64 (uint64_t __a)
  {
!   return (uint64x1_t)__builtin_neon_vcreatedi ((__builtin_neon_di) __a);
  }
  
  __extension__ extern __inline poly8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_p8 (uint64_t __a)
  {
!   return (poly8x8_t)__builtin_neon_vcreatev8qi ((__builtin_neon_di) __a);
  }
  
  __extension__ extern __inline poly16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_p16 (uint64_t __a)
  {
!   return (poly16x4_t)__builtin_neon_vcreatev4hi ((__builtin_neon_di) __a);
  }
  
  __extension__ extern __inline int8x8_t
--- 6576,6624 ----
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_f32 (uint64_t __a)
  {
!   return (float32x2_t) __a;
  }
  
  __extension__ extern __inline uint8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_u8 (uint64_t __a)
  {
!   return (uint8x8_t) __a;
  }
  
  __extension__ extern __inline uint16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_u16 (uint64_t __a)
  {
!   return (uint16x4_t) __a;
  }
  
  __extension__ extern __inline uint32x2_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_u32 (uint64_t __a)
  {
!   return (uint32x2_t) __a;
  }
  
  __extension__ extern __inline uint64x1_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_u64 (uint64_t __a)
  {
!   return (uint64x1_t) {__a};
  }
  
  __extension__ extern __inline poly8x8_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_p8 (uint64_t __a)
  {
!   return (poly8x8_t) __a;
  }
  
  __extension__ extern __inline poly16x4_t
  __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
  vcreate_p16 (uint64_t __a)
  {
!   return (poly16x4_t) __a;
  }
  
  __extension__ extern __inline int8x8_t
*************** vceq_p64 (poly64x1_t __a, poly64x1_t __b
*** 16912,16917 ****
--- 16912,16948 ----
    return vreinterpret_u64_u32 (__m);
  }
  
+ __extension__ extern __inline uint64x1_t
+ __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
+ vceqz_p64 (poly64x1_t __a)
+ {
+   poly64x1_t __b = vreinterpret_p64_u32 (vdup_n_u32 (0));
+   return vceq_p64 (__a, __b);
+ }
+ 
+ /* For vceqq_p64, we rely on vceq_p64 for each of the two elements.  */
+ __extension__ extern __inline uint64x2_t
+ __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
+ vceqq_p64 (poly64x2_t __a, poly64x2_t __b)
+ {
+   poly64_t __high_a = vget_high_p64 (__a);
+   poly64_t __high_b = vget_high_p64 (__b);
+   uint64x1_t __high = vceq_p64 (__high_a, __high_b);
+ 
+   poly64_t __low_a = vget_low_p64 (__a);
+   poly64_t __low_b = vget_low_p64 (__b);
+   uint64x1_t __low = vceq_p64 (__low_a, __low_b);
+   return vcombine_u64 (__low, __high);
+ }
+ 
+ __extension__ extern __inline uint64x2_t
+ __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
+ vceqzq_p64 (poly64x2_t __a)
+ {
+   poly64x2_t __b = vreinterpretq_p64_u32 (vdupq_n_u32 (0));
+   return vceqq_p64 (__a, __b);
+ }
+ 
  /* The vtst_p64 intrinsic does not map to a single instruction.
     We emulate it in way similar to vceq_p64 above but here we do
     a reduction with max since if any two corresponding bits
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm_neon_builtins.def gcc-11.1.0/gcc/config/arm/arm_neon_builtins.def
*** gcc-10.3.0/gcc/config/arm/arm_neon_builtins.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm_neon_builtins.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* NEON builtin definitions for ARM.
!    Copyright (C) 2013-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* NEON builtin definitions for ARM.
!    Copyright (C) 2013-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** VAR6 (BINOP, vhsubu, v8qi, v4hi, v2si, v
*** 126,135 ****
  VAR3 (BINOP, vsubhn, v8hi, v4si, v2di)
  VAR3 (BINOP, vrsubhn, v8hi, v4si, v2di)
  VAR8 (BINOP, vceq, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
- VAR8 (BINOP, vcge, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
- VAR6 (BINOP, vcgeu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
- VAR8 (BINOP, vcgt, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
- VAR6 (BINOP, vcgtu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
  VAR2 (BINOP, vcage, v2sf, v4sf)
  VAR2 (BINOP, vcagt, v2sf, v4sf)
  VAR2 (BINOP, vcage, v4hf, v8hf)
--- 126,131 ----
*************** VAR8 (UNOP, vabs, v8qi, v4hi, v2si, v2sf
*** 195,201 ****
  VAR2 (UNOP, vabs, v8hf, v4hf)
  VAR2 (UNOP, vneg, v8hf, v4hf)
  VAR6 (UNOP, vqabs, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
- VAR8 (UNOP, vneg, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
  VAR6 (UNOP, vqneg, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
  VAR6 (UNOP, vcls, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
  VAR6 (UNOP, vclz, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
--- 191,196 ----
*************** VAR4 (UNOP, vrecpe, v2si, v2sf, v4si, v4
*** 205,211 ****
  VAR2 (UNOP, vrecpe, v8hf, v4hf)
  VAR4 (UNOP, vrsqrte, v2si, v2sf, v4si, v4sf)
  VAR2 (UNOP, vrsqrte, v4hf, v8hf)
- VAR6 (UNOP, vmvn, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
  VAR2 (UNOP, vrnd, v8hf, v4hf)
  VAR2 (UNOP, vrnda, v8hf, v4hf)
  VAR2 (UNOP, vrndm, v8hf, v4hf)
--- 200,205 ----
*************** VAR10 (GETLANE, vget_lane,
*** 218,224 ****
  VAR6 (GETLANE, vget_laneu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
  VAR10 (SETLANE, vset_lane,
  	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
- VAR5 (UNOP, vcreate, v8qi, v4hi, v2si, v2sf, di)
  VAR10 (UNOP, vdup_n,
  	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
  VAR4 (UNOP, vdup_n, v8hf, v4hf, v8bf, v4bf)
--- 212,217 ----
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm_vfp_builtins.def gcc-11.1.0/gcc/config/arm/arm_vfp_builtins.def
*** gcc-10.3.0/gcc/config/arm/arm_vfp_builtins.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/arm_vfp_builtins.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* VFP instruction builtin definitions.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
     This file is part of GCC.
  
--- 1,5 ----
  /* VFP instruction builtin definitions.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arm/bpabi.h gcc-11.1.0/gcc/config/arm/bpabi.h
*** gcc-10.3.0/gcc/config/arm/bpabi.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/bpabi.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Configuration file for ARM BPABI targets.
!    Copyright (C) 2004-2020 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC   
  
     This file is part of GCC.
--- 1,5 ----
  /* Configuration file for ARM BPABI targets.
!    Copyright (C) 2004-2021 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC   
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/common.md gcc-11.1.0/gcc/config/arm/common.md
*** gcc-10.3.0/gcc/config/arm/common.md	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/arm/common.md	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,41 ----
+ ;; Common predicate definitions for ARM, Thumb and AArch64
+ ;; Copyright (C) 2020-2021 Free Software Foundation, Inc.
+ ;; Contributed by Fujitsu Ltd.
+ 
+ ;; 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/>.
+ 
+ ;; Return true if constant is CONST_INT >= 1 and <= 4
+ (define_predicate "const_1_to_4_operand"
+   (and (match_code "const_int")
+        (match_test "IN_RANGE (INTVAL (op), 1, 4)")))
+ 
+ ;; Return true if constant is 2 or 4 or 8 or 16
+ (define_predicate "const_2_4_8_16_operand"
+   (and (match_code "const_int")
+        (match_test ("   INTVAL (op) == 2
+                      || INTVAL (op) == 4
+                      || INTVAL (op) == 8
+                      || INTVAL (op) == 16 "))))
+ 
+ ;; Return true if shift type is lsl and amount is in[1,4].
+ (define_predicate "alu_shift_operator_lsl_1_to_4"
+   (and (match_code "ashift")
+        (match_test "const_1_to_4_operand (XEXP (op, 1), mode)")))
+ 
+ ;; Return true if the operand is register.
+ (define_predicate "alu_shift_reg_p"
+   (match_test "register_operand (XEXP (op, 1), mode)"))
diff -Nrcpad gcc-10.3.0/gcc/config/arm/constraints.md gcc-11.1.0/gcc/config/arm/constraints.md
*** gcc-10.3.0/gcc/config/arm/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Constraint definitions for ARM and Thumb
! ;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constraint definitions for ARM and Thumb
! ;; Copyright (C) 2006-2021 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
***************
*** 32,38 ****
  
  ;; The following multi-letter normal constraints have been used:
  ;; in ARM/Thumb-2 state: Da, Db, Dc, Dd, Dn, DN, Dm, Dl, DL, Do, Dv, Dy, Di,
! ;;			 Dt, Dp, Dz, Tu, Te
  ;; in Thumb-1 state: Pa, Pb, Pc, Pd, Pe
  ;; in Thumb-2 state: Ha, Pj, PJ, Ps, Pt, Pu, Pv, Pw, Px, Py, Pz, Rd, Rf, Rb, Ra,
  ;;		     Rg, Ri
--- 32,38 ----
  
  ;; The following multi-letter normal constraints have been used:
  ;; in ARM/Thumb-2 state: Da, Db, Dc, Dd, Dn, DN, Dm, Dl, DL, Do, Dv, Dy, Di,
! ;;			 Ds, Dt, Dp, Dz, Tu, Te
  ;; in Thumb-1 state: Pa, Pb, Pc, Pd, Pe
  ;; in Thumb-2 state: Ha, Pj, PJ, Ps, Pt, Pu, Pv, Pw, Px, Py, Pz, Rd, Rf, Rb, Ra,
  ;;		     Rg, Ri
***************
*** 310,316 ****
   "@internal
    In ARM/Thumb-2 state a vector of constant zeros."
   (and (match_code "const_vector")
!       (match_test "TARGET_NEON && op == CONST0_RTX (mode)")))
  
  (define_constraint "Da"
   "@internal
--- 310,316 ----
   "@internal
    In ARM/Thumb-2 state a vector of constant zeros."
   (and (match_code "const_vector")
!       (match_test "(TARGET_NEON || TARGET_HAVE_MVE) && op == CONST0_RTX (mode)")))
  
  (define_constraint "Da"
   "@internal
***************
*** 412,417 ****
--- 412,425 ----
    (and (match_code "const_double")
         (match_test "TARGET_32BIT && vfp3_const_double_for_fract_bits (op)")))
  
+ (define_constraint "Ds"
+  "@internal
+   In ARM/Thumb-2 state a const_vector which can be used as immediate
+   in vshl instruction."
+  (and (match_code "const_vector")
+       (match_test "TARGET_32BIT
+ 		   && imm_for_neon_lshift_operand (op, GET_MODE (op))")))
+ 
  (define_constraint "Dp"
   "@internal
    In ARM/ Thumb2 a const_double which can be used with a vcvt.s32.f32 with bits operation"
diff -Nrcpad gcc-10.3.0/gcc/config/arm/cortex-a15-neon.md gcc-11.1.0/gcc/config/arm/cortex-a15-neon.md
*** gcc-10.3.0/gcc/config/arm/cortex-a15-neon.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/cortex-a15-neon.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Cortex-A15 NEON pipeline description
! ;; Copyright (C) 2012-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; ARM Cortex-A15 NEON pipeline description
! ;; Copyright (C) 2012-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/arm/cortex-a15.md gcc-11.1.0/gcc/config/arm/cortex-a15.md
*** gcc-10.3.0/gcc/config/arm/cortex-a15.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/cortex-a15.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Cortex-A15 pipeline description
! ;; Copyright (C) 2011-2020 Free Software Foundation, Inc.
  ;;
  ;; Written by Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
  
--- 1,5 ----
  ;; ARM Cortex-A15 pipeline description
! ;; Copyright (C) 2011-2021 Free Software Foundation, Inc.
  ;;
  ;; Written by Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
  
***************
*** 78,84 ****
  (define_insn_reservation "cortex_a15_alu_shift" 3
    (and (eq_attr "tune" "cortexa15")
         (eq_attr "type" "extend,\
!                         alu_shift_imm,alus_shift_imm,\
                          crc,logic_shift_imm,logics_shift_imm,\
                          mov_shift,mvn_shift"))
    "ca15_issue1,(ca15_sx1,ca15_sx1+ca15_sx1_shf,ca15_sx1_alu)\
--- 78,84 ----
  (define_insn_reservation "cortex_a15_alu_shift" 3
    (and (eq_attr "tune" "cortexa15")
         (eq_attr "type" "extend,\
!                         alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm,\
                          crc,logic_shift_imm,logics_shift_imm,\
                          mov_shift,mvn_shift"))
    "ca15_issue1,(ca15_sx1,ca15_sx1+ca15_sx1_shf,ca15_sx1_alu)\
diff -Nrcpad gcc-10.3.0/gcc/config/arm/cortex-a17-neon.md gcc-11.1.0/gcc/config/arm/cortex-a17-neon.md
*** gcc-10.3.0/gcc/config/arm/cortex-a17-neon.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/cortex-a17-neon.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Cortex-A17 NEON pipeline description
! ;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; ARM Cortex-A17 NEON pipeline description
! ;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/arm/cortex-a17.md gcc-11.1.0/gcc/config/arm/cortex-a17.md
*** gcc-10.3.0/gcc/config/arm/cortex-a17.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/cortex-a17.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Cortex-A17 pipeline description
! ;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
  ;;
  ;; Contributed by ARM Ltd.
  ;;
--- 1,5 ----
  ;; ARM Cortex-A17 pipeline description
! ;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
  ;;
  ;; Contributed by ARM Ltd.
  ;;
***************
*** 47,53 ****
  
  (define_insn_reservation "cortex_a17_alu_shiftimm" 2
    (and (eq_attr "tune" "cortexa17")
!        (eq_attr "type" "bfm,clz,rev,rbit, alu_shift_imm, alus_shift_imm,
                          logic_shift_imm,alu_dsp_reg, logics_shift_imm,shift_imm,\
                          shift_reg, mov_shift,mvn_shift"))
    "ca17_alu")
--- 47,53 ----
  
  (define_insn_reservation "cortex_a17_alu_shiftimm" 2
    (and (eq_attr "tune" "cortexa17")
!        (eq_attr "type" "bfm,clz,rev,rbit, alu_shift_imm_lsl_1to4,alu_shift_imm_other, alus_shift_imm,
                          logic_shift_imm,alu_dsp_reg, logics_shift_imm,shift_imm,\
                          shift_reg, mov_shift,mvn_shift"))
    "ca17_alu")
diff -Nrcpad gcc-10.3.0/gcc/config/arm/cortex-a5.md gcc-11.1.0/gcc/config/arm/cortex-a5.md
*** gcc-10.3.0/gcc/config/arm/cortex-a5.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/cortex-a5.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Cortex-A5 pipeline description
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM Cortex-A5 pipeline description
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  ;;
  ;; This file is part of GCC.
***************
*** 70,76 ****
  (define_insn_reservation "cortex_a5_alu_shift" 2
    (and (eq_attr "tune" "cortexa5")
         (eq_attr "type" "extend,\
!                         alu_shift_imm,alus_shift_imm,\
                          logic_shift_imm,logics_shift_imm,\
                          alu_shift_reg,alus_shift_reg,\
                          logic_shift_reg,logics_shift_reg,\
--- 70,76 ----
  (define_insn_reservation "cortex_a5_alu_shift" 2
    (and (eq_attr "tune" "cortexa5")
         (eq_attr "type" "extend,\
!                         alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm,\
                          logic_shift_imm,logics_shift_imm,\
                          alu_shift_reg,alus_shift_reg,\
                          logic_shift_reg,logics_shift_reg,\
diff -Nrcpad gcc-10.3.0/gcc/config/arm/cortex-a53.md gcc-11.1.0/gcc/config/arm/cortex-a53.md
*** gcc-10.3.0/gcc/config/arm/cortex-a53.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/cortex-a53.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Cortex-A53 pipeline description
! ;; Copyright (C) 2013-2020 Free Software Foundation, Inc.
  ;;
  ;; Contributed by ARM Ltd.
  ;;
--- 1,5 ----
  ;; ARM Cortex-A53 pipeline description
! ;; Copyright (C) 2013-2021 Free Software Foundation, Inc.
  ;;
  ;; Contributed by ARM Ltd.
  ;;
***************
*** 91,97 ****
  
  (define_insn_reservation "cortex_a53_alu_shift" 3
    (and (eq_attr "tune" "cortexa53")
!        (eq_attr "type" "alu_shift_imm,alus_shift_imm,
  			crc,logic_shift_imm,logics_shift_imm,
  			alu_ext,alus_ext,bfm,bfx,extend,mvn_shift"))
    "cortex_a53_slot_any")
--- 91,97 ----
  
  (define_insn_reservation "cortex_a53_alu_shift" 3
    (and (eq_attr "tune" "cortexa53")
!        (eq_attr "type" "alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm,
  			crc,logic_shift_imm,logics_shift_imm,
  			alu_ext,alus_ext,bfm,bfx,extend,mvn_shift"))
    "cortex_a53_slot_any")
diff -Nrcpad gcc-10.3.0/gcc/config/arm/cortex-a57.md gcc-11.1.0/gcc/config/arm/cortex-a57.md
*** gcc-10.3.0/gcc/config/arm/cortex-a57.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/cortex-a57.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Cortex-A57 pipeline description
! ;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; ARM Cortex-A57 pipeline description
! ;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 313,319 ****
  (define_insn_reservation "cortex_a57_alu_shift" 3
    (and (eq_attr "tune" "cortexa57")
         (eq_attr "type" "bfm,\
! 			alu_shift_imm,alus_shift_imm,\
  			crc,logic_shift_imm,logics_shift_imm,\
  			mov_shift,mvn_shift"))
    "ca57_mx")
--- 313,319 ----
  (define_insn_reservation "cortex_a57_alu_shift" 3
    (and (eq_attr "tune" "cortexa57")
         (eq_attr "type" "bfm,\
! 			alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm,\
  			crc,logic_shift_imm,logics_shift_imm,\
  			mov_shift,mvn_shift"))
    "ca57_mx")
diff -Nrcpad gcc-10.3.0/gcc/config/arm/cortex-a7.md gcc-11.1.0/gcc/config/arm/cortex-a7.md
*** gcc-10.3.0/gcc/config/arm/cortex-a7.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/cortex-a7.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Cortex-A7 pipeline description
! ;; Copyright (C) 2012-2020 Free Software Foundation, Inc.
  ;;
  ;; Contributed by ARM Ltd.
  ;; Based on cortex-a5.md which was originally contributed by CodeSourcery.
--- 1,5 ----
  ;; ARM Cortex-A7 pipeline description
! ;; Copyright (C) 2012-2021 Free Software Foundation, Inc.
  ;;
  ;; Contributed by ARM Ltd.
  ;; Based on cortex-a5.md which was originally contributed by CodeSourcery.
***************
*** 143,149 ****
  
  (define_insn_reservation "cortex_a7_alu_shift" 2
    (and (eq_attr "tune" "cortexa7")
!        (eq_attr "type" "alu_shift_imm,alus_shift_imm,\
                          logic_shift_imm,logics_shift_imm,\
                          alu_shift_reg,alus_shift_reg,\
                          logic_shift_reg,logics_shift_reg,\
--- 143,149 ----
  
  (define_insn_reservation "cortex_a7_alu_shift" 2
    (and (eq_attr "tune" "cortexa7")
!        (eq_attr "type" "alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm,\
                          logic_shift_imm,logics_shift_imm,\
                          alu_shift_reg,alus_shift_reg,\
                          logic_shift_reg,logics_shift_reg,\
diff -Nrcpad gcc-10.3.0/gcc/config/arm/cortex-a8-neon.md gcc-11.1.0/gcc/config/arm/cortex-a8-neon.md
*** gcc-10.3.0/gcc/config/arm/cortex-a8-neon.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/cortex-a8-neon.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Cortex-A8 NEON scheduling description.
! ;; Copyright (C) 2007-2020 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM Cortex-A8 NEON scheduling description.
! ;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/cortex-a8.md gcc-11.1.0/gcc/config/arm/cortex-a8.md
*** gcc-10.3.0/gcc/config/arm/cortex-a8.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/cortex-a8.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Cortex-A8 scheduling description.
! ;; Copyright (C) 2007-2020 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM Cortex-A8 scheduling description.
! ;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  
  ;; This file is part of GCC.
***************
*** 95,101 ****
  
  (define_insn_reservation "cortex_a8_alu_shift" 2
    (and (eq_attr "tune" "cortexa8")
!        (eq_attr "type" "alu_shift_imm,alus_shift_imm,\
                          logic_shift_imm,logics_shift_imm,\
                          extend"))
    "cortex_a8_default")
--- 95,101 ----
  
  (define_insn_reservation "cortex_a8_alu_shift" 2
    (and (eq_attr "tune" "cortexa8")
!        (eq_attr "type" "alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm,\
                          logic_shift_imm,logics_shift_imm,\
                          extend"))
    "cortex_a8_default")
diff -Nrcpad gcc-10.3.0/gcc/config/arm/cortex-a9-neon.md gcc-11.1.0/gcc/config/arm/cortex-a9-neon.md
*** gcc-10.3.0/gcc/config/arm/cortex-a9-neon.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/cortex-a9-neon.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Cortex-A9 pipeline description
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;;
  ;; Neon pipeline description contributed by ARM Ltd.
  ;;
--- 1,5 ----
  ;; ARM Cortex-A9 pipeline description
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;;
  ;; Neon pipeline description contributed by ARM Ltd.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/arm/cortex-a9.md gcc-11.1.0/gcc/config/arm/cortex-a9.md
*** gcc-10.3.0/gcc/config/arm/cortex-a9.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/cortex-a9.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Cortex-A9 pipeline description
! ;; Copyright (C) 2008-2020 Free Software Foundation, Inc.
  ;; Originally written by CodeSourcery for VFP.
  ;;
  ;; Rewritten by Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
--- 1,5 ----
  ;; ARM Cortex-A9 pipeline description
! ;; Copyright (C) 2008-2021 Free Software Foundation, Inc.
  ;; Originally written by CodeSourcery for VFP.
  ;;
  ;; Rewritten by Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
*************** cortex_a9_p1_e2 + cortex_a9_p0_e1 + cort
*** 93,99 ****
  ;; An instruction using the shifter will go down E1.
  (define_insn_reservation "cortex_a9_dp_shift" 3
     (and (eq_attr "tune" "cortexa9")
!         (eq_attr "type" "alu_shift_imm,alus_shift_imm,\
                           logic_shift_imm,logics_shift_imm,\
                           alu_shift_reg,alus_shift_reg,\
                           logic_shift_reg,logics_shift_reg,\
--- 93,99 ----
  ;; An instruction using the shifter will go down E1.
  (define_insn_reservation "cortex_a9_dp_shift" 3
     (and (eq_attr "tune" "cortexa9")
!         (eq_attr "type" "alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm,\
                           logic_shift_imm,logics_shift_imm,\
                           alu_shift_reg,alus_shift_reg,\
                           logic_shift_reg,logics_shift_reg,\
diff -Nrcpad gcc-10.3.0/gcc/config/arm/cortex-m4-fpu.md gcc-11.1.0/gcc/config/arm/cortex-m4-fpu.md
*** gcc-10.3.0/gcc/config/arm/cortex-m4-fpu.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/cortex-m4-fpu.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Cortex-M4 FPU pipeline description
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM Cortex-M4 FPU pipeline description
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/cortex-m4.md gcc-11.1.0/gcc/config/arm/cortex-m4.md
*** gcc-10.3.0/gcc/config/arm/cortex-m4.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/cortex-m4.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Cortex-M4 pipeline description
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM Cortex-M4 pipeline description
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  ;;
  ;; This file is part of GCC.
***************
*** 36,42 ****
                               adc_imm,adcs_imm,adc_reg,adcs_reg,\
                               adr,bfm,clz,rbit,rev,alu_dsp_reg,\
                               shift_imm,shift_reg,extend,\
!                              alu_shift_imm,alus_shift_imm,\
                               logic_shift_imm,logics_shift_imm,\
                               alu_shift_reg,alus_shift_reg,\
                               logic_shift_reg,logics_shift_reg,\
--- 36,42 ----
                               adc_imm,adcs_imm,adc_reg,adcs_reg,\
                               adr,bfm,clz,rbit,rev,alu_dsp_reg,\
                               shift_imm,shift_reg,extend,\
!                              alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm,\
                               logic_shift_imm,logics_shift_imm,\
                               alu_shift_reg,alus_shift_reg,\
                               logic_shift_reg,logics_shift_reg,\
diff -Nrcpad gcc-10.3.0/gcc/config/arm/cortex-m7.md gcc-11.1.0/gcc/config/arm/cortex-m7.md
*** gcc-10.3.0/gcc/config/arm/cortex-m7.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/cortex-m7.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Cortex-M7 pipeline description
! ;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; ARM Cortex-M7 pipeline description
! ;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 54,60 ****
  ;; Simple alu with inline shift operation.
  (define_insn_reservation "cortex_m7_alu_shift" 2
     (and (eq_attr "tune" "cortexm7")
! 	(eq_attr "type" "alu_shift_imm,alus_shift_imm"))
     "cm7_i0|cm7_i1,(cm7_a0|cm7_a1)+cm7_shf+cm7_branch")
  
  ;; Only one ALU can be used for DSP instructions.
--- 54,60 ----
  ;; Simple alu with inline shift operation.
  (define_insn_reservation "cortex_m7_alu_shift" 2
     (and (eq_attr "tune" "cortexm7")
! 	(eq_attr "type" "alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm"))
     "cm7_i0|cm7_i1,(cm7_a0|cm7_a1)+cm7_shf+cm7_branch")
  
  ;; Only one ALU can be used for DSP instructions.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/cortex-r4.md gcc-11.1.0/gcc/config/arm/cortex-r4.md
*** gcc-10.3.0/gcc/config/arm/cortex-r4.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/cortex-r4.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Cortex-R4 scheduling description.
! ;; Copyright (C) 2007-2020 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM Cortex-R4 scheduling description.
! ;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  
  ;; This file is part of GCC.
***************
*** 92,98 ****
  
  (define_insn_reservation "cortex_r4_alu_shift" 2
    (and (eq_attr "tune_cortexr4" "yes")
!        (eq_attr "type" "alu_shift_imm,alus_shift_imm,\
                          logic_shift_imm,logics_shift_imm,\
                          extend,mov_shift,mvn_shift"))
    "cortex_r4_alu")
--- 92,98 ----
  
  (define_insn_reservation "cortex_r4_alu_shift" 2
    (and (eq_attr "tune_cortexr4" "yes")
!        (eq_attr "type" "alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm,\
                          logic_shift_imm,logics_shift_imm,\
                          extend,mov_shift,mvn_shift"))
    "cortex_r4_alu")
diff -Nrcpad gcc-10.3.0/gcc/config/arm/cortex-r4f.md gcc-11.1.0/gcc/config/arm/cortex-r4f.md
*** gcc-10.3.0/gcc/config/arm/cortex-r4f.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/cortex-r4f.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Cortex-R4F VFP pipeline description
! ;; Copyright (C) 2007-2020 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM Cortex-R4F VFP pipeline description
! ;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/crypto.def gcc-11.1.0/gcc/config/arm/crypto.def
*** gcc-10.3.0/gcc/config/arm/crypto.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/crypto.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Cryptographic instruction builtin definitions.
!    Copyright (C) 2013-2020 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
     This file is part of GCC.
  
--- 1,5 ----
  /* Cryptographic instruction builtin definitions.
!    Copyright (C) 2013-2021 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arm/crypto.md gcc-11.1.0/gcc/config/arm/crypto.md
*** gcc-10.3.0/gcc/config/arm/crypto.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/crypto.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARMv8-A crypto patterns.
! ;; Copyright (C) 2013-2020 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARMv8-A crypto patterns.
! ;; Copyright (C) 2013-2021 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/driver-arm.c gcc-11.1.0/gcc/config/arm/driver-arm.c
*** gcc-10.3.0/gcc/config/arm/driver-arm.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/driver-arm.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arm/elf.h gcc-11.1.0/gcc/config/arm/elf.h
*** gcc-10.3.0/gcc/config/arm/elf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/elf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.
     For ARM with ELF obj format.
!    Copyright (C) 1995-2020 Free Software Foundation, Inc.
     Contributed by Philip Blundell <philb@gnu.org> and
     Catherine Moore <clm@cygnus.com>
     
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.
     For ARM with ELF obj format.
!    Copyright (C) 1995-2021 Free Software Foundation, Inc.
     Contributed by Philip Blundell <philb@gnu.org> and
     Catherine Moore <clm@cygnus.com>
     
diff -Nrcpad gcc-10.3.0/gcc/config/arm/exynos-m1.md gcc-11.1.0/gcc/config/arm/exynos-m1.md
*** gcc-10.3.0/gcc/config/arm/exynos-m1.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/exynos-m1.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Samsung Exynos M1 pipeline description
! ;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Samsung Exynos M1 pipeline description
! ;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 386,392 ****
  (define_insn_reservation "exynos_m1_alu_shift" 2
    (and (eq_attr "tune" "exynosm1")
         (eq_attr "type" "alu_ext, alus_ext,\
! 			alu_shift_imm, alus_shift_imm,\
  			logic_shift_imm, logics_shift_imm,\
  			mov_shift, mvn_shift"))
    "(em1_alu)")
--- 386,392 ----
  (define_insn_reservation "exynos_m1_alu_shift" 2
    (and (eq_attr "tune" "exynosm1")
         (eq_attr "type" "alu_ext, alus_ext,\
! 			alu_shift_imm_lsl_1to4,alu_shift_imm_other, alus_shift_imm,\
  			logic_shift_imm, logics_shift_imm,\
  			mov_shift, mvn_shift"))
    "(em1_alu)")
diff -Nrcpad gcc-10.3.0/gcc/config/arm/fa526.md gcc-11.1.0/gcc/config/arm/fa526.md
*** gcc-10.3.0/gcc/config/arm/fa526.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/fa526.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Faraday FA526 Pipeline Description
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Written by I-Jui Sung, based on ARM926EJ-S Pipeline Description.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Faraday FA526 Pipeline Description
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Written by I-Jui Sung, based on ARM926EJ-S Pipeline Description.
  
  ;; This file is part of GCC.
***************
*** 74,80 ****
  (define_insn_reservation "526_alu_shift_op" 2
   (and (eq_attr "tune" "fa526")
        (eq_attr "type" "extend,\
!                        alu_shift_imm,alus_shift_imm,\
                         logic_shift_imm,logics_shift_imm,\
                         alu_shift_reg,alus_shift_reg,\
                         logic_shift_reg,logics_shift_reg,\
--- 74,80 ----
  (define_insn_reservation "526_alu_shift_op" 2
   (and (eq_attr "tune" "fa526")
        (eq_attr "type" "extend,\
!                        alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm,\
                         logic_shift_imm,logics_shift_imm,\
                         alu_shift_reg,alus_shift_reg,\
                         logic_shift_reg,logics_shift_reg,\
diff -Nrcpad gcc-10.3.0/gcc/config/arm/fa606te.md gcc-11.1.0/gcc/config/arm/fa606te.md
*** gcc-10.3.0/gcc/config/arm/fa606te.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/fa606te.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Faraday FA606TE Pipeline Description
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Written by Mingfeng Wu, based on ARM926EJ-S Pipeline Description.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Faraday FA606TE Pipeline Description
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Written by Mingfeng Wu, based on ARM926EJ-S Pipeline Description.
  ;;
  ;; This file is part of GCC.
***************
*** 67,73 ****
                         adc_imm,adcs_imm,adc_reg,adcs_reg,\
                         adr,bfm,rev,\
                         shift_imm,shift_reg,extend,\
!                        alu_shift_imm,alus_shift_imm,\
                         logic_shift_imm,logics_shift_imm,\
                         alu_shift_reg,alus_shift_reg,\
                         logic_shift_reg,logics_shift_reg,\
--- 67,73 ----
                         adc_imm,adcs_imm,adc_reg,adcs_reg,\
                         adr,bfm,rev,\
                         shift_imm,shift_reg,extend,\
!                        alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm,\
                         logic_shift_imm,logics_shift_imm,\
                         alu_shift_reg,alus_shift_reg,\
                         logic_shift_reg,logics_shift_reg,\
diff -Nrcpad gcc-10.3.0/gcc/config/arm/fa626te.md gcc-11.1.0/gcc/config/arm/fa626te.md
*** gcc-10.3.0/gcc/config/arm/fa626te.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/fa626te.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Faraday FA626TE Pipeline Description
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Written by I-Jui Sung, based on ARM926EJ-S Pipeline Description.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Faraday FA626TE Pipeline Description
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Written by I-Jui Sung, based on ARM926EJ-S Pipeline Description.
  ;;
  ;; This file is part of GCC.
***************
*** 80,86 ****
  (define_insn_reservation "626te_alu_shift_op" 2
   (and (eq_attr "tune" "fa626,fa626te")
        (eq_attr "type" "extend,\
!                        alu_shift_imm,alus_shift_imm,\
                         logic_shift_imm,logics_shift_imm,\
                         alu_shift_reg,alus_shift_reg,\
                         logic_shift_reg,logics_shift_reg,\
--- 80,86 ----
  (define_insn_reservation "626te_alu_shift_op" 2
   (and (eq_attr "tune" "fa626,fa626te")
        (eq_attr "type" "extend,\
!                        alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm,\
                         logic_shift_imm,logics_shift_imm,\
                         alu_shift_reg,alus_shift_reg,\
                         logic_shift_reg,logics_shift_reg,\
diff -Nrcpad gcc-10.3.0/gcc/config/arm/fa726te.md gcc-11.1.0/gcc/config/arm/fa726te.md
*** gcc-10.3.0/gcc/config/arm/fa726te.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/fa726te.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Faraday FA726TE Pipeline Description
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Written by I-Jui Sung, based on ARM926EJ-S Pipeline Description.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Faraday FA726TE Pipeline Description
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Written by I-Jui Sung, based on ARM926EJ-S Pipeline Description.
  ;;
  ;; This file is part of GCC.
***************
*** 100,106 ****
  ;; it takes 3 cycles.
  (define_insn_reservation "726te_alu_shift_op" 3
   (and (eq_attr "tune" "fa726te")
!       (eq_attr "type" "extend,alu_shift_imm,alus_shift_imm,\
                         logic_shift_imm,logics_shift_imm"))
    "fa726te_issue+(fa726te_alu0_pipe|fa726te_alu1_pipe)")
  
--- 100,106 ----
  ;; it takes 3 cycles.
  (define_insn_reservation "726te_alu_shift_op" 3
   (and (eq_attr "tune" "fa726te")
!       (eq_attr "type" "extend,alu_shift_imm_lsl_1to4,alu_shift_imm_other,alus_shift_imm,\
                         logic_shift_imm,logics_shift_imm"))
    "fa726te_issue+(fa726te_alu0_pipe|fa726te_alu1_pipe)")
  
diff -Nrcpad gcc-10.3.0/gcc/config/arm/fmp626.md gcc-11.1.0/gcc/config/arm/fmp626.md
*** gcc-10.3.0/gcc/config/arm/fmp626.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/fmp626.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Faraday FA626TE Pipeline Description
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Written by Mingfeng Wu, based on ARM926EJ-S Pipeline Description.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Faraday FA626TE Pipeline Description
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Written by Mingfeng Wu, based on ARM926EJ-S Pipeline Description.
  ;;
  ;; This file is part of GCC.
***************
*** 73,79 ****
  
  (define_insn_reservation "mp626_alu_shift_op" 2
   (and (eq_attr "tune" "fmp626")
!       (eq_attr "type" "alu_shift_imm,logic_shift_imm,alus_shift_imm,logics_shift_imm,\
                         alu_shift_reg,logic_shift_reg,alus_shift_reg,logics_shift_reg,\
                         extend,\
                         mov_shift,mov_shift_reg,\
--- 73,79 ----
  
  (define_insn_reservation "mp626_alu_shift_op" 2
   (and (eq_attr "tune" "fmp626")
!       (eq_attr "type" "alu_shift_imm_lsl_1to4,alu_shift_imm_other,logic_shift_imm,alus_shift_imm,logics_shift_imm,\
                         alu_shift_reg,logic_shift_reg,alus_shift_reg,logics_shift_reg,\
                         extend,\
                         mov_shift,mov_shift_reg,\
diff -Nrcpad gcc-10.3.0/gcc/config/arm/freebsd.h gcc-11.1.0/gcc/config/arm/freebsd.h
*** gcc-10.3.0/gcc/config/arm/freebsd.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/freebsd.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, FreeBSD/arm version.
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, FreeBSD/arm version.
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/fuchsia-elf.h gcc-11.1.0/gcc/config/arm/fuchsia-elf.h
*** gcc-10.3.0/gcc/config/arm/fuchsia-elf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/fuchsia-elf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Configuration file for ARM Fuchsia ELF targets.
!    Copyright (C) 2017-2020 Free Software Foundation, Inc.
     Contributed by Google.
  
     This file is part of GCC.
--- 1,5 ----
  /* Configuration file for ARM Fuchsia ELF targets.
!    Copyright (C) 2017-2021 Free Software Foundation, Inc.
     Contributed by Google.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/iterators.md gcc-11.1.0/gcc/config/arm/iterators.md
*** gcc-10.3.0/gcc/config/arm/iterators.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/iterators.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Code and mode itertator and attribute definitions for the ARM backend
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Code and mode itertator and attribute definitions for the ARM backend
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 66,79 ****
  ;; Integer and float modes supported by Neon and IWMMXT.
  (define_mode_iterator VALL [V2DI V2SI V4HI V8QI V2SF V4SI V8HI V16QI V4SF])
  
- ;; Integer and float modes supported by Neon, IWMMXT and MVE, used by
- ;; arithmetic epxand patterns.
- (define_mode_iterator VNIM [V16QI V8HI V4SI V4SF])
- 
- ;; Integer and float modes supported by Neon and IWMMXT but not MVE, used by
- ;; arithmetic epxand patterns.
- (define_mode_iterator VNINOTM [V2SI V4HI V8QI V2SF V2DI])
- 
  ;; Integer and float modes supported by Neon, IWMMXT and MVE.
  (define_mode_iterator VNIM1 [V16QI V8HI V4SI V4SF V2DI])
  
--- 66,71 ----
***************
*** 269,274 ****
--- 261,267 ----
  
  ;; MVE mode iterator.
  (define_mode_iterator MVE_types [V16QI V8HI V4SI V2DI TI V8HF V4SF V2DF])
+ (define_mode_iterator MVE_vecs [V16QI V8HI V4SI V2DI V8HF V4SF V2DF])
  (define_mode_iterator MVE_VLD_ST [V16QI V8HI V4SI V8HF V4SF])
  (define_mode_iterator MVE_0 [V8HF V4SF])
  (define_mode_iterator MVE_1 [V16QI V8HI V4SI V2DI])
***************
*** 575,583 ****
  			  (V4HI "HI") (V8HI "HI")
  			  (V4HF "HF") (V8HF "HF")
  			  (V4BF "BF") (V8BF "BF")
!                           (V2SI "SI") (V4SI "SI")
!                           (V2SF "SF") (V4SF "SF")
!                           (DI "DI")   (V2DI "DI")])
  
  ;; As above but in lower case.
  (define_mode_attr V_elem_l [(V8QI "qi") (V16QI "qi")
--- 568,577 ----
  			  (V4HI "HI") (V8HI "HI")
  			  (V4HF "HF") (V8HF "HF")
  			  (V4BF "BF") (V8BF "BF")
! 			  (V2SI "SI") (V4SI "SI")
! 			  (V2SF "SF") (V4SF "SF")
! 			  (DI   "DI") (V2DI "DI")
! 			  (V2DF "DF")])
  
  ;; As above but in lower case.
  (define_mode_attr V_elem_l [(V8QI "qi") (V16QI "qi")
***************
*** 1185,1195 ****
--- 1179,1237 ----
  
  (define_int_attr rot [(UNSPEC_VCADD90 "90")
  		      (UNSPEC_VCADD270 "270")
+ 		      (UNSPEC_VCMUL "0")
+ 		      (UNSPEC_VCMUL90 "90")
+ 		      (UNSPEC_VCMUL180 "180")
+ 		      (UNSPEC_VCMUL270 "270")
  		      (UNSPEC_VCMLA "0")
  		      (UNSPEC_VCMLA90 "90")
  		      (UNSPEC_VCMLA180 "180")
  		      (UNSPEC_VCMLA270 "270")])
  
+ ;; The complex operations when performed on a real complex number require two
+ ;; instructions to perform the operation. e.g. complex multiplication requires
+ ;; two VCMUL with a particular rotation value.
+ ;;
+ ;; These values can be looked up in rotsplit1 and rotsplit2.  as an example
+ ;; VCMUL needs the first instruction to use #0 and the second #90.
+ (define_int_attr rotsplit1 [(UNSPEC_VCMLA "0")
+ 			    (UNSPEC_VCMLA_CONJ "0")
+ 			    (UNSPEC_VCMUL "0")
+ 			    (UNSPEC_VCMUL_CONJ "0")
+ 			    (UNSPEC_VCMLA180 "180")
+ 			    (UNSPEC_VCMLA180_CONJ "180")])
+ 
+ (define_int_attr rotsplit2 [(UNSPEC_VCMLA "90")
+ 			    (UNSPEC_VCMLA_CONJ "270")
+ 			    (UNSPEC_VCMUL "90")
+ 			    (UNSPEC_VCMUL_CONJ "270")
+ 			    (UNSPEC_VCMLA180 "270")
+ 			    (UNSPEC_VCMLA180_CONJ "90")])
+ 
+ (define_int_attr conj_op [(UNSPEC_VCMLA180 "")
+ 			  (UNSPEC_VCMLA180_CONJ "_conj")
+ 			  (UNSPEC_VCMLA "")
+ 			  (UNSPEC_VCMLA_CONJ "_conj")
+ 			  (UNSPEC_VCMUL "")
+ 			  (UNSPEC_VCMUL_CONJ "_conj")])
+ 
+ (define_int_attr mve_rot [(UNSPEC_VCADD90 "_rot90")
+ 			  (UNSPEC_VCADD270 "_rot270")
+ 			  (UNSPEC_VCMLA "")
+ 			  (UNSPEC_VCMLA90 "_rot90")
+ 			  (UNSPEC_VCMLA180 "_rot180")
+ 			  (UNSPEC_VCMLA270 "_rot270")
+ 			  (UNSPEC_VCMUL "")
+ 			  (UNSPEC_VCMUL90 "_rot90")
+ 			  (UNSPEC_VCMUL180 "_rot180")
+ 			  (UNSPEC_VCMUL270 "_rot270")])
+ 
+ (define_int_iterator VCMUL [UNSPEC_VCMUL UNSPEC_VCMUL90
+ 			    UNSPEC_VCMUL180 UNSPEC_VCMUL270])
+ 
+ (define_int_attr fcmac1 [(UNSPEC_VCMLA "a") (UNSPEC_VCMLA_CONJ "a")
+ 			 (UNSPEC_VCMLA180 "s") (UNSPEC_VCMLA180_CONJ "s")])
+ 
  (define_int_attr simd32_op [(UNSPEC_QADD8 "qadd8") (UNSPEC_QSUB8 "qsub8")
  			    (UNSPEC_SHADD8 "shadd8") (UNSPEC_SHSUB8 "shsub8")
  			    (UNSPEC_UHADD8 "uhadd8") (UNSPEC_UHSUB8 "uhsub8")
***************
*** 1224,1230 ****
  (define_int_attr supf [(VCVTQ_TO_F_S "s") (VCVTQ_TO_F_U "u") (VREV16Q_S "s")
  		       (VREV16Q_U "u") (VMVNQ_N_S "s") (VMVNQ_N_U "u")
  		       (VCVTAQ_U "u") (VCVTAQ_S "s") (VREV64Q_S "s")
! 		       (VREV64Q_U "u") (VMVNQ_S "s") (VMVNQ_U "u")
  		       (VDUPQ_N_U "u") (VDUPQ_N_S"s") (VADDVQ_S "s")
  		       (VADDVQ_U "u") (VADDVQ_S "s") (VADDVQ_U "u")
  		       (VMOVLTQ_U "u") (VMOVLTQ_S "s") (VMOVLBQ_S "s")
--- 1266,1272 ----
  (define_int_attr supf [(VCVTQ_TO_F_S "s") (VCVTQ_TO_F_U "u") (VREV16Q_S "s")
  		       (VREV16Q_U "u") (VMVNQ_N_S "s") (VMVNQ_N_U "u")
  		       (VCVTAQ_U "u") (VCVTAQ_S "s") (VREV64Q_S "s")
! 		       (VREV64Q_U "u")
  		       (VDUPQ_N_U "u") (VDUPQ_N_S"s") (VADDVQ_S "s")
  		       (VADDVQ_U "u") (VADDVQ_S "s") (VADDVQ_U "u")
  		       (VMOVLTQ_U "u") (VMOVLTQ_S "s") (VMOVLBQ_S "s")
***************
*** 1240,1252 ****
  		       (VADDLVQ_P_U "u") (VCMPNEQ_U "u") (VCMPNEQ_S "s")
  		       (VABDQ_M_S "s") (VABDQ_M_U "u") (VABDQ_S "s")
  		       (VABDQ_U "u") (VADDQ_N_S "s") (VADDQ_N_U "u")
! 		       (VADDVQ_P_S "s")	(VADDVQ_P_U "u") (VANDQ_S "s")
! 		       (VANDQ_U "u") (VBICQ_S "s") (VBICQ_U "u")
! 		       (VBRSRQ_N_S "s") (VBRSRQ_N_U "u") (VCADDQ_ROT270_S "s")
! 		       (VCADDQ_ROT270_U "u") (VCADDQ_ROT90_S "s")
! 		       (VCMPEQQ_S "s") (VCMPEQQ_U "u") (VCADDQ_ROT90_U "u")
  		       (VCMPEQQ_N_S "s") (VCMPEQQ_N_U "u") (VCMPNEQ_N_S "s")
! 		       (VCMPNEQ_N_U "u") (VEORQ_S "s") (VEORQ_U "u")
  		       (VHADDQ_N_S "s") (VHADDQ_N_U "u") (VHADDQ_S "s")
  		       (VHADDQ_U "u") (VHSUBQ_N_S "s")	(VHSUBQ_N_U "u")
  		       (VHSUBQ_S "s") (VMAXQ_S "s") (VMAXQ_U "u") (VHSUBQ_U "u")
--- 1282,1291 ----
  		       (VADDLVQ_P_U "u") (VCMPNEQ_U "u") (VCMPNEQ_S "s")
  		       (VABDQ_M_S "s") (VABDQ_M_U "u") (VABDQ_S "s")
  		       (VABDQ_U "u") (VADDQ_N_S "s") (VADDQ_N_U "u")
! 		       (VADDVQ_P_S "s")	(VADDVQ_P_U "u") (VBRSRQ_N_S "s")
! 		       (VBRSRQ_N_U "u") (VCMPEQQ_S "s") (VCMPEQQ_U "u")
  		       (VCMPEQQ_N_S "s") (VCMPEQQ_N_U "u") (VCMPNEQ_N_S "s")
! 		       (VCMPNEQ_N_U "u")
  		       (VHADDQ_N_S "s") (VHADDQ_N_U "u") (VHADDQ_S "s")
  		       (VHADDQ_U "u") (VHSUBQ_N_S "s")	(VHSUBQ_N_U "u")
  		       (VHSUBQ_S "s") (VMAXQ_S "s") (VMAXQ_U "u") (VHSUBQ_U "u")
***************
*** 1256,1263 ****
  		       (VMULLBQ_INT_S "s") (VMULLBQ_INT_U "u") (VQADDQ_S "s")
  		       (VMULLTQ_INT_S "s") (VMULLTQ_INT_U "u") (VQADDQ_U "u")
  		       (VMULQ_N_S "s") (VMULQ_N_U "u") (VMULQ_S "s")
! 		       (VMULQ_U "u") (VORNQ_S "s") (VORNQ_U "u") (VORRQ_S "s")
! 		       (VORRQ_U "u") (VQADDQ_N_S "s") (VQADDQ_N_U "u")
  		       (VQRSHLQ_N_S "s") (VQRSHLQ_N_U "u") (VQRSHLQ_S "s")
  		       (VQRSHLQ_U "u") (VQSHLQ_N_S "s")	(VQSHLQ_N_U "u")
  		       (VQSHLQ_R_S "s") (VQSHLQ_R_U "u") (VQSHLQ_S "s")
--- 1295,1302 ----
  		       (VMULLBQ_INT_S "s") (VMULLBQ_INT_U "u") (VQADDQ_S "s")
  		       (VMULLTQ_INT_S "s") (VMULLTQ_INT_U "u") (VQADDQ_U "u")
  		       (VMULQ_N_S "s") (VMULQ_N_U "u") (VMULQ_S "s")
! 		       (VMULQ_U "u")
! 		       (VQADDQ_N_S "s") (VQADDQ_N_U "u")
  		       (VQRSHLQ_N_S "s") (VQRSHLQ_N_U "u") (VQRSHLQ_S "s")
  		       (VQRSHLQ_U "u") (VQSHLQ_N_S "s")	(VQSHLQ_N_U "u")
  		       (VQSHLQ_R_S "s") (VQSHLQ_R_U "u") (VQSHLQ_S "s")
***************
*** 1485,1491 ****
  (define_int_iterator VCVTQ_FROM_F [VCVTQ_FROM_F_S VCVTQ_FROM_F_U])
  (define_int_iterator VREV16Q [VREV16Q_U VREV16Q_S])
  (define_int_iterator VCVTAQ [VCVTAQ_U VCVTAQ_S])
- (define_int_iterator VMVNQ [VMVNQ_U VMVNQ_S])
  (define_int_iterator VDUPQ_N [VDUPQ_N_U VDUPQ_N_S])
  (define_int_iterator VCLZQ [VCLZQ_U VCLZQ_S])
  (define_int_iterator VADDVQ [VADDVQ_U VADDVQ_S])
--- 1524,1529 ----
***************
*** 1509,1523 ****
  (define_int_iterator VADDQ_N [VADDQ_N_S VADDQ_N_U])
  (define_int_iterator VADDVAQ [VADDVAQ_S VADDVAQ_U])
  (define_int_iterator VADDVQ_P [VADDVQ_P_U VADDVQ_P_S])
- (define_int_iterator VANDQ [VANDQ_U VANDQ_S])
- (define_int_iterator VBICQ [VBICQ_S VBICQ_U])
  (define_int_iterator VBRSRQ_N [VBRSRQ_N_U VBRSRQ_N_S])
- (define_int_iterator VCADDQ_ROT270 [VCADDQ_ROT270_S VCADDQ_ROT270_U])
- (define_int_iterator VCADDQ_ROT90 [VCADDQ_ROT90_U VCADDQ_ROT90_S])
  (define_int_iterator VCMPEQQ [VCMPEQQ_U VCMPEQQ_S])
  (define_int_iterator VCMPEQQ_N [VCMPEQQ_N_S VCMPEQQ_N_U])
  (define_int_iterator VCMPNEQ_N [VCMPNEQ_N_U VCMPNEQ_N_S])
- (define_int_iterator VEORQ [VEORQ_U VEORQ_S])
  (define_int_iterator VHADDQ [VHADDQ_S VHADDQ_U])
  (define_int_iterator VHADDQ_N [VHADDQ_N_U VHADDQ_N_S])
  (define_int_iterator VHSUBQ [VHSUBQ_S VHSUBQ_U])
--- 1547,1556 ----
***************
*** 1532,1539 ****
  (define_int_iterator VMULLTQ_INT [VMULLTQ_INT_U VMULLTQ_INT_S])
  (define_int_iterator VMULQ [VMULQ_U VMULQ_S])
  (define_int_iterator VMULQ_N [VMULQ_N_U VMULQ_N_S])
- (define_int_iterator VORNQ [VORNQ_U VORNQ_S])
- (define_int_iterator VORRQ [VORRQ_S VORRQ_U])
  (define_int_iterator VQADDQ [VQADDQ_U VQADDQ_S])
  (define_int_iterator VQADDQ_N [VQADDQ_N_S VQADDQ_N_U])
  (define_int_iterator VQRSHLQ [VQRSHLQ_S VQRSHLQ_U])
--- 1565,1570 ----
***************
*** 1723,1725 ****
--- 1754,1766 ----
  (define_int_iterator UQRSHLLQ [UQRSHLL_64 UQRSHLL_48])
  (define_int_iterator SQRSHRLQ [SQRSHRL_64 SQRSHRL_48])
  (define_int_iterator VSHLCQ_M [VSHLCQ_M_S VSHLCQ_M_U])
+ 
+ ;; Define iterators for VCMLA operations
+ (define_int_iterator VCMLA_OP [UNSPEC_VCMLA
+ 			       UNSPEC_VCMLA_CONJ
+ 			       UNSPEC_VCMLA180
+ 			       UNSPEC_VCMLA180_CONJ])
+ 
+ ;; Define iterators for VCMLA operations as MUL
+ (define_int_iterator VCMUL_OP [UNSPEC_VCMUL
+ 			       UNSPEC_VCMUL_CONJ])
diff -Nrcpad gcc-10.3.0/gcc/config/arm/iwmmxt.md gcc-11.1.0/gcc/config/arm/iwmmxt.md
*** gcc-10.3.0/gcc/config/arm/iwmmxt.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/iwmmxt.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Patterns for the Intel Wireless MMX technology architecture.
! ;; Copyright (C) 2003-2020 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Patterns for the Intel Wireless MMX technology architecture.
! ;; Copyright (C) 2003-2021 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/iwmmxt2.md gcc-11.1.0/gcc/config/arm/iwmmxt2.md
*** gcc-10.3.0/gcc/config/arm/iwmmxt2.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/iwmmxt2.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Patterns for the Intel Wireless MMX technology architecture.
! ;; Copyright (C) 2011-2020 Free Software Foundation, Inc.
  ;; Written by Marvell, Inc.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Patterns for the Intel Wireless MMX technology architecture.
! ;; Copyright (C) 2011-2021 Free Software Foundation, Inc.
  ;; Written by Marvell, Inc.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/ldmstm.md gcc-11.1.0/gcc/config/arm/ldmstm.md
*** gcc-10.3.0/gcc/config/arm/ldmstm.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/ldmstm.md	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* ARM ldm/stm instruction patterns.  This file was automatically generated
     using arm-ldmstm.ml.  Please do not edit manually.
  
!    Copyright (C) 2010-2020 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
--- 1,7 ----
  /* ARM ldm/stm instruction patterns.  This file was automatically generated
     using arm-ldmstm.ml.  Please do not edit manually.
  
!    Copyright (C) 2010-2021 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/ldrdstrd.md gcc-11.1.0/gcc/config/arm/ldrdstrd.md
*** gcc-10.3.0/gcc/config/arm/ldrdstrd.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/ldrdstrd.md	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ;; ARM ldrd/strd peephole optimizations.
  ;;
! ;; Copyright (C) 2013-2020 Free Software Foundation, Inc.
  ;;
  ;; Written by Greta Yorsh <greta.yorsh@arm.com>
  
--- 1,6 ----
  ;; ARM ldrd/strd peephole optimizations.
  ;;
! ;; Copyright (C) 2013-2021 Free Software Foundation, Inc.
  ;;
  ;; Written by Greta Yorsh <greta.yorsh@arm.com>
  
diff -Nrcpad gcc-10.3.0/gcc/config/arm/linux-eabi.h gcc-11.1.0/gcc/config/arm/linux-eabi.h
*** gcc-10.3.0/gcc/config/arm/linux-eabi.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/linux-eabi.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Configuration file for ARM GNU/Linux EABI targets.
!    Copyright (C) 2004-2020 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC   
  
     This file is part of GCC.
--- 1,5 ----
  /* Configuration file for ARM GNU/Linux EABI targets.
!    Copyright (C) 2004-2021 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC   
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/linux-elf.h gcc-11.1.0/gcc/config/arm/linux-elf.h
*** gcc-10.3.0/gcc/config/arm/linux-elf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/linux-elf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for ARM running Linux-based GNU systems using ELF
!    Copyright (C) 1993-2020 Free Software Foundation, Inc.
     Contributed by Philip Blundell <philb@gnu.org>
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for ARM running Linux-based GNU systems using ELF
!    Copyright (C) 1993-2021 Free Software Foundation, Inc.
     Contributed by Philip Blundell <philb@gnu.org>
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/linux-gas.h gcc-11.1.0/gcc/config/arm/linux-gas.h
*** gcc-10.3.0/gcc/config/arm/linux-gas.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/linux-gas.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.
     ARM Linux-based GNU systems version.
!    Copyright (C) 1997-2020 Free Software Foundation, Inc.
     Contributed by Russell King  <rmk92@ecs.soton.ac.uk>.
  
     This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.
     ARM Linux-based GNU systems version.
!    Copyright (C) 1997-2021 Free Software Foundation, Inc.
     Contributed by Russell King  <rmk92@ecs.soton.ac.uk>.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/marvell-f-iwmmxt.md gcc-11.1.0/gcc/config/arm/marvell-f-iwmmxt.md
*** gcc-10.3.0/gcc/config/arm/marvell-f-iwmmxt.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/marvell-f-iwmmxt.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Marvell WMMX2 pipeline description
! ;; Copyright (C) 2011-2020 Free Software Foundation, Inc.
  ;; Written by Marvell, Inc.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Marvell WMMX2 pipeline description
! ;; Copyright (C) 2011-2021 Free Software Foundation, Inc.
  ;; Written by Marvell, Inc.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/marvell-pj4.md gcc-11.1.0/gcc/config/arm/marvell-pj4.md
*** gcc-10.3.0/gcc/config/arm/marvell-pj4.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/marvell-pj4.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Marvell ARM Processor Pipeline Description
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Contributed by Marvell.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Marvell ARM Processor Pipeline Description
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Contributed by Marvell.
  
  ;; This file is part of GCC.
***************
*** 73,79 ****
  
  (define_insn_reservation "pj4_shift" 1
    (and (eq_attr "tune" "marvell_pj4")
!        (eq_attr "type" "alu_shift_imm,logic_shift_imm,\
                          alus_shift_imm,logics_shift_imm,\
                          alu_shift_reg,logic_shift_reg,\
                          alus_shift_reg,logics_shift_reg,\
--- 73,79 ----
  
  (define_insn_reservation "pj4_shift" 1
    (and (eq_attr "tune" "marvell_pj4")
!        (eq_attr "type" "alu_shift_imm_lsl_1to4,alu_shift_imm_other,logic_shift_imm,\
                          alus_shift_imm,logics_shift_imm,\
                          alu_shift_reg,logic_shift_reg,\
                          alus_shift_reg,logics_shift_reg,\
***************
*** 84,90 ****
  
  (define_insn_reservation "pj4_shift_conds" 4
    (and (eq_attr "tune" "marvell_pj4")
!        (eq_attr "type" "alu_shift_imm,logic_shift_imm,\
                          alus_shift_imm,logics_shift_imm,\
                          alu_shift_reg,logic_shift_reg,\
                          alus_shift_reg,logics_shift_reg,\
--- 84,90 ----
  
  (define_insn_reservation "pj4_shift_conds" 4
    (and (eq_attr "tune" "marvell_pj4")
!        (eq_attr "type" "alu_shift_imm_lsl_1to4,alu_shift_imm_other,logic_shift_imm,\
                          alus_shift_imm,logics_shift_imm,\
                          alu_shift_reg,logic_shift_reg,\
                          alus_shift_reg,logics_shift_reg,\
***************
*** 96,102 ****
  (define_insn_reservation "pj4_alu_shift" 1
    (and (eq_attr "tune" "marvell_pj4")
         (not (eq_attr "conds" "set"))
!        (eq_attr "type" "alu_shift_imm,logic_shift_imm,\
                          alus_shift_imm,logics_shift_imm,\
                          alu_shift_reg,logic_shift_reg,\
                          alus_shift_reg,logics_shift_reg,\
--- 96,102 ----
  (define_insn_reservation "pj4_alu_shift" 1
    (and (eq_attr "tune" "marvell_pj4")
         (not (eq_attr "conds" "set"))
!        (eq_attr "type" "alu_shift_imm_lsl_1to4,alu_shift_imm_other,logic_shift_imm,\
                          alus_shift_imm,logics_shift_imm,\
                          alu_shift_reg,logic_shift_reg,\
                          alus_shift_reg,logics_shift_reg,\
***************
*** 107,113 ****
  (define_insn_reservation "pj4_alu_shift_conds" 4
    (and (eq_attr "tune" "marvell_pj4")
         (eq_attr "conds" "set")
!        (eq_attr "type" "alu_shift_imm,logic_shift_imm,alus_shift_imm,logics_shift_imm,\
                          alu_shift_reg,logic_shift_reg,alus_shift_reg,logics_shift_reg,\
                          extend,\
                          mov_shift,mvn_shift,mov_shift_reg,mvn_shift_reg"))
--- 107,113 ----
  (define_insn_reservation "pj4_alu_shift_conds" 4
    (and (eq_attr "tune" "marvell_pj4")
         (eq_attr "conds" "set")
!        (eq_attr "type" "alu_shift_imm_lsl_1to4,alu_shift_imm_other,logic_shift_imm,alus_shift_imm,logics_shift_imm,\
                          alu_shift_reg,logic_shift_reg,alus_shift_reg,logics_shift_reg,\
                          extend,\
                          mov_shift,mvn_shift,mov_shift_reg,mvn_shift_reg"))
diff -Nrcpad gcc-10.3.0/gcc/config/arm/mmintrin.h gcc-11.1.0/gcc/config/arm/mmintrin.h
*** gcc-10.3.0/gcc/config/arm/mmintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/mmintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2002-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2002-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arm/mve.md gcc-11.1.0/gcc/config/arm/mve.md
*** gcc-10.3.0/gcc/config/arm/mve.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/mve.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Arm M-profile Vector Extension Machine Description
! ;; Copyright (C) 2019-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Arm M-profile Vector Extension Machine Description
! ;; Copyright (C) 2019-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 104,121 ****
     (set_attr "thumb2_pool_range" "*,*,*,*,1018,*,*,*,*")
     (set_attr "neg_pool_range" "*,*,*,*,996,*,*,*,*")])
  
! (define_insn "*mve_mov<mode>"
!   [(set (match_operand:MVE_types 0 "s_register_operand" "=w,w")
! 	(vec_duplicate:MVE_types
! 	  (match_operand:SI 1 "nonmemory_operand" "r,i")))]
    "TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT"
! {
!   if (which_alternative == 0)
!     return "vdup.<V_sz_elem>\t%q0, %1";
!   return "vmov.<V_sz_elem>\t%q0, %1";
! }
!   [(set_attr "length" "4,4")
!    (set_attr "type" "mve_move,mve_move")])
  
  ;;
  ;; [vst4q])
--- 104,117 ----
     (set_attr "thumb2_pool_range" "*,*,*,*,1018,*,*,*,*")
     (set_attr "neg_pool_range" "*,*,*,*,996,*,*,*,*")])
  
! (define_insn "*mve_vdup<mode>"
!   [(set (match_operand:MVE_vecs 0 "s_register_operand" "=w")
! 	(vec_duplicate:MVE_vecs
! 	  (match_operand:<V_elem> 1 "s_register_operand" "r")))]
    "TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT"
!   "vdup.<V_sz_elem>\t%q0, %1"
!   [(set_attr "length" "4")
!    (set_attr "type" "mve_move")])
  
  ;;
  ;; [vst4q])
***************
*** 271,278 ****
  (define_insn "mve_vnegq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")]
! 	 VNEGQ_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vneg.f%#<V_sz_elem>  %q0, %q1"
--- 267,273 ----
  (define_insn "mve_vnegq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(neg:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vneg.f%#<V_sz_elem>  %q0, %q1"
***************
*** 422,429 ****
  (define_insn "mve_vnegq_s<mode>"
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")]
! 	 VNEGQ_S))
    ]
    "TARGET_HAVE_MVE"
    "vneg.s%#<V_sz_elem>  %q0, %q1"
--- 417,423 ----
  (define_insn "mve_vnegq_s<mode>"
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(neg:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE"
    "vneg.s%#<V_sz_elem>  %q0, %q1"
***************
*** 433,448 ****
  ;;
  ;; [vmvnq_u, vmvnq_s])
  ;;
! (define_insn "mve_vmvnq_<supf><mode>"
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")]
! 	 VMVNQ))
    ]
    "TARGET_HAVE_MVE"
!   "vmvn %q0, %q1"
    [(set_attr "type" "mve_move")
  ])
  
  ;;
  ;; [vdupq_n_u, vdupq_n_s])
--- 427,448 ----
  ;;
  ;; [vmvnq_u, vmvnq_s])
  ;;
! (define_insn "mve_vmvnq_u<mode>"
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(not:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE"
!   "vmvn\t%q0, %q1"
    [(set_attr "type" "mve_move")
  ])
+ (define_expand "mve_vmvnq_s<mode>"
+   [
+    (set (match_operand:MVE_2 0 "s_register_operand")
+ 	(not:MVE_2 (match_operand:MVE_2 1 "s_register_operand")))
+   ]
+   "TARGET_HAVE_MVE"
+ )
  
  ;;
  ;; [vdupq_n_u, vdupq_n_s])
***************
*** 759,764 ****
--- 759,765 ----
  ;;
  ;; [vshrq_n_s, vshrq_n_u])
  ;;
+ ;; Version that takes an immediate as operand 2.
  (define_insn "mve_vshrq_n_<supf><mode>"
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
***************
*** 771,776 ****
--- 772,810 ----
    [(set_attr "type" "mve_move")
  ])
  
+ ;; Versions that take constant vectors as operand 2 (with all elements
+ ;; equal).
+ (define_insn "mve_vshrq_n_s<mode>_imm"
+   [
+    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
+ 	(ashiftrt:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
+ 			(match_operand:MVE_2 2 "imm_for_neon_rshift_operand" "i")))
+   ]
+   "TARGET_HAVE_MVE"
+   {
+     return neon_output_shift_immediate ("vshr", 's', &operands[2],
+ 					<MODE>mode,
+ 					VALID_NEON_QREG_MODE (<MODE>mode),
+ 					true);
+   }
+   [(set_attr "type" "mve_move")
+ ])
+ (define_insn "mve_vshrq_n_u<mode>_imm"
+   [
+    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
+ 	(lshiftrt:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
+ 			(match_operand:MVE_2 2 "imm_for_neon_rshift_operand" "i")))
+   ]
+   "TARGET_HAVE_MVE"
+   {
+     return neon_output_shift_immediate ("vshr", 'u', &operands[2],
+ 					<MODE>mode,
+ 					VALID_NEON_QREG_MODE (<MODE>mode),
+ 					true);
+   }
+   [(set_attr "type" "mve_move")
+ ])
+ 
  ;;
  ;; [vcvtq_n_from_f_s, vcvtq_n_from_f_u])
  ;;
***************
*** 818,835 ****
  
  ;;
  ;; [vshlq_s, vshlq_u])
! ;;
! (define_insn "mve_vshlq_<supf><mode>"
!   [
!    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
! 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
! 	 VSHLQ))
!   ]
!   "TARGET_HAVE_MVE"
!   "vshl.<supf>%#<V_sz_elem>\t%q0, %q1, %q2"
!   [(set_attr "type" "mve_move")
! ])
  
  ;;
  ;; [vabdq_s, vabdq_u])
--- 852,858 ----
  
  ;;
  ;; [vshlq_s, vshlq_u])
! ;; See vec-common.md
  
  ;;
  ;; [vabdq_s, vabdq_u])
***************
*** 894,926 ****
  ;;
  ;; [vandq_u, vandq_s])
  ;;
! (define_insn "mve_vandq_<supf><mode>"
    [
!    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
! 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
! 	 VANDQ))
    ]
    "TARGET_HAVE_MVE"
!   "vand %q0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
  ;;
  ;; [vbicq_s, vbicq_u])
  ;;
! (define_insn "mve_vbicq_<supf><mode>"
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
! 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
! 	 VBICQ))
    ]
    "TARGET_HAVE_MVE"
!   "vbic %q0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
  ;;
  ;; [vbrsrq_n_u, vbrsrq_n_s])
  ;;
--- 917,970 ----
  ;;
  ;; [vandq_u, vandq_s])
  ;;
! ;; signed and unsigned versions are the same: define the unsigned
! ;; insn, and use an expander for the signed one as we still reference
! ;; both names from arm_mve.h.
! ;; We use the same code as in neon.md (TODO: avoid this duplication).
! (define_insn "mve_vandq_u<mode>"
    [
!    (set (match_operand:MVE_2 0 "s_register_operand" "=w,w")
! 	(and:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w,0")
! 		   (match_operand:MVE_2 2 "neon_inv_logic_op2" "w,DL")))
    ]
    "TARGET_HAVE_MVE"
!   "@
!    vand\t%q0, %q1, %q2
!    * return neon_output_logic_immediate (\"vand\", &operands[2], <MODE>mode, 1, VALID_NEON_QREG_MODE (<MODE>mode));"
    [(set_attr "type" "mve_move")
  ])
+ (define_expand "mve_vandq_s<mode>"
+   [
+    (set (match_operand:MVE_2 0 "s_register_operand")
+ 	(and:MVE_2 (match_operand:MVE_2 1 "s_register_operand")
+ 		   (match_operand:MVE_2 2 "neon_inv_logic_op2")))
+   ]
+   "TARGET_HAVE_MVE"
+ )
  
  ;;
  ;; [vbicq_s, vbicq_u])
  ;;
! (define_insn "mve_vbicq_u<mode>"
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(and:MVE_2 (not:MVE_2 (match_operand:MVE_2 2 "s_register_operand" "w"))
! 			      (match_operand:MVE_2 1 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE"
!   "vbic\t%q0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
+ (define_expand "mve_vbicq_s<mode>"
+   [
+    (set (match_operand:MVE_2 0 "s_register_operand")
+ 	(and:MVE_2 (not:MVE_2 (match_operand:MVE_2 2 "s_register_operand"))
+ 		   (match_operand:MVE_2 1 "s_register_operand")))
+   ]
+   "TARGET_HAVE_MVE"
+ )
+ 
  ;;
  ;; [vbrsrq_n_u, vbrsrq_n_s])
  ;;
***************
*** 937,970 ****
  ])
  
  ;;
! ;; [vcaddq_rot270_s, vcaddq_rot270_u])
  ;;
! (define_insn "mve_vcaddq_rot270_<supf><mode>"
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>")
  	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
  		       (match_operand:MVE_2 2 "s_register_operand" "w")]
! 	 VCADDQ_ROT270))
    ]
    "TARGET_HAVE_MVE"
!   "vcadd.i%#<V_sz_elem>	%q0, %q1, %q2, #270"
    [(set_attr "type" "mve_move")
  ])
  
! ;;
! ;; [vcaddq_rot90_u, vcaddq_rot90_s])
! ;;
! (define_insn "mve_vcaddq_rot90_<supf><mode>"
!   [
!    (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>")
! 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
! 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
! 	 VCADDQ_ROT90))
!   ]
!   "TARGET_HAVE_MVE"
!   "vcadd.i%#<V_sz_elem>	%q0, %q1, %q2, #90"
!   [(set_attr "type" "mve_move")
! ])
  
  ;;
  ;; [vcmpcsq_n_u])
--- 981,1008 ----
  ])
  
  ;;
! ;; [vcaddq, vcaddq_rot90, vcadd_rot180, vcadd_rot270])
  ;;
! (define_insn "mve_vcaddq<mve_rot><mode>"
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>")
  	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
  		       (match_operand:MVE_2 2 "s_register_operand" "w")]
! 	 VCADD))
    ]
    "TARGET_HAVE_MVE"
!   "vcadd.i%#<V_sz_elem>	%q0, %q1, %q2, #<rot>"
    [(set_attr "type" "mve_move")
  ])
  
! ;; Auto vectorizer pattern for int vcadd
! (define_expand "cadd<rot><mode>3"
!   [(set (match_operand:MVE_2 0 "register_operand")
! 	(unspec:MVE_2 [(match_operand:MVE_2 1 "register_operand")
! 		       (match_operand:MVE_2 2 "register_operand")]
! 	  VCADD))]
!   "TARGET_HAVE_MVE && !BYTES_BIG_ENDIAN"
! )
  
  ;;
  ;; [vcmpcsq_n_u])
***************
*** 1194,1210 ****
  ;;
  ;; [veorq_u, veorq_s])
  ;;
! (define_insn "mve_veorq_<supf><mode>"
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
! 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
! 	 VEORQ))
    ]
    "TARGET_HAVE_MVE"
!   "veor %q0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
  ;;
  ;; [vhaddq_n_u, vhaddq_n_s])
--- 1232,1255 ----
  ;;
  ;; [veorq_u, veorq_s])
  ;;
! (define_insn "mve_veorq_u<mode>"
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(xor:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
! 		   (match_operand:MVE_2 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE"
!   "veor\t%q0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
+ (define_expand "mve_veorq_s<mode>"
+   [
+    (set (match_operand:MVE_2 0 "s_register_operand")
+ 	(xor:MVE_2 (match_operand:MVE_2 1 "s_register_operand")
+ 		   (match_operand:MVE_2 2 "s_register_operand")))
+   ]
+   "TARGET_HAVE_MVE"
+ )
  
  ;;
  ;; [vhaddq_n_u, vhaddq_n_s])
***************
*** 1329,1343 ****
  ;;
  ;; [vmaxq_u, vmaxq_s])
  ;;
! (define_insn "mve_vmaxq_<supf><mode>"
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
! 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
! 	 VMAXQ))
    ]
    "TARGET_HAVE_MVE"
!   "vmax.<supf>%#<V_sz_elem>\t%q0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
--- 1374,1398 ----
  ;;
  ;; [vmaxq_u, vmaxq_s])
  ;;
! (define_insn "mve_vmaxq_s<mode>"
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(smax:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
! 		    (match_operand:MVE_2 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE"
!   "vmax.%#<V_s_elem>\t%q0, %q1, %q2"
!   [(set_attr "type" "mve_move")
! ])
! 
! (define_insn "mve_vmaxq_u<mode>"
!   [
!    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(umax:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
! 		    (match_operand:MVE_2 2 "s_register_operand" "w")))
!   ]
!   "TARGET_HAVE_MVE"
!   "vmax.%#<V_u_elem>\t%q0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 1389,1403 ****
  ;;
  ;; [vminq_s, vminq_u])
  ;;
! (define_insn "mve_vminq_<supf><mode>"
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
! 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
! 	 VMINQ))
    ]
    "TARGET_HAVE_MVE"
!   "vmin.<supf>%#<V_sz_elem>\t%q0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
--- 1444,1468 ----
  ;;
  ;; [vminq_s, vminq_u])
  ;;
! (define_insn "mve_vminq_s<mode>"
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(smin:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
! 		    (match_operand:MVE_2 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE"
!   "vmin.%#<V_s_elem>\t%q0, %q1, %q2"
!   [(set_attr "type" "mve_move")
! ])
! 
! (define_insn "mve_vminq_u<mode>"
!   [
!    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(umin:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
! 		    (match_operand:MVE_2 2 "s_register_operand" "w")))
!   ]
!   "TARGET_HAVE_MVE"
!   "vmin.%#<V_u_elem>\t%q0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 1551,1585 ****
    [(set_attr "type" "mve_move")
  ])
  
  ;;
  ;; [vornq_u, vornq_s])
  ;;
! (define_insn "mve_vornq_<supf><mode>"
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
! 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
! 	 VORNQ))
    ]
    "TARGET_HAVE_MVE"
!   "vorn %q0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
  ;;
  ;; [vorrq_s, vorrq_u])
  ;;
! (define_insn "mve_vorrq_<supf><mode>"
    [
!    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
! 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
! 	 VORRQ))
    ]
    "TARGET_HAVE_MVE"
!   "vorr %q0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
  ;;
  ;; [vqaddq_n_s, vqaddq_n_u])
--- 1616,1682 ----
    [(set_attr "type" "mve_move")
  ])
  
+ (define_insn "mve_vmulq<mode>"
+   [
+    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
+ 	(mult:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
+ 		    (match_operand:MVE_2 2 "s_register_operand" "w")))
+   ]
+   "TARGET_HAVE_MVE"
+   "vmul.i%#<V_sz_elem>\t%q0, %q1, %q2"
+   [(set_attr "type" "mve_move")
+ ])
+ 
  ;;
  ;; [vornq_u, vornq_s])
  ;;
! (define_insn "mve_vornq_s<mode>"
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
! 	(ior:MVE_2 (not:MVE_2 (match_operand:MVE_2 2 "s_register_operand" "w"))
! 		   (match_operand:MVE_2 1 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE"
!    "vorn\t%q0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
+ (define_expand "mve_vornq_u<mode>"
+   [
+    (set (match_operand:MVE_2 0 "s_register_operand")
+ 	(ior:MVE_2 (not:MVE_2 (match_operand:MVE_2 2 "s_register_operand"))
+ 		   (match_operand:MVE_2 1 "s_register_operand")))
+   ]
+   "TARGET_HAVE_MVE"
+ )
+ 
  ;;
  ;; [vorrq_s, vorrq_u])
  ;;
! ;; signed and unsigned versions are the same: define the unsigned
! ;; insn, and use an expander for the signed one as we still reference
! ;; both names from arm_mve.h.
! ;; We use the same code as in neon.md (TODO: avoid this duplication).
! (define_insn "mve_vorrq_s<mode>"
    [
!    (set (match_operand:MVE_2 0 "s_register_operand" "=w,w")
! 	(ior:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w,0")
! 		   (match_operand:MVE_2 2 "neon_logic_op2" "w,Dl")))
    ]
    "TARGET_HAVE_MVE"
!   "@
!    vorr\t%q0, %q1, %q2
!    * return neon_output_logic_immediate (\"vorr\", &operands[2], <MODE>mode, 0, VALID_NEON_QREG_MODE (<MODE>mode));"
    [(set_attr "type" "mve_move")
  ])
+ (define_expand "mve_vorrq_u<mode>"
+   [
+    (set (match_operand:MVE_2 0 "s_register_operand")
+ 	(ior:MVE_2 (match_operand:MVE_2 1 "s_register_operand")
+ 		   (match_operand:MVE_2 2 "neon_logic_op2")))
+   ]
+   "TARGET_HAVE_MVE"
+ )
  
  ;;
  ;; [vqaddq_n_s, vqaddq_n_u])
***************
*** 1926,1931 ****
--- 2023,2039 ----
    [(set_attr "type" "mve_move")
  ])
  
+ (define_insn "mve_vsubq<mode>"
+   [
+    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
+ 	(minus:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
+ 		     (match_operand:MVE_2 2 "s_register_operand" "w")))
+   ]
+   "TARGET_HAVE_MVE"
+   "vsub.i%#<V_sz_elem>\t%q0, %q1, %q2"
+   [(set_attr "type" "mve_move")
+ ])
+ 
  ;;
  ;; [vabdq_f])
  ;;
***************
*** 1977,1985 ****
  (define_insn "mve_vandq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
! 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
! 	 VANDQ_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vand %q0, %q1, %q2"
--- 2085,2092 ----
  (define_insn "mve_vandq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(and:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")
! 		   (match_operand:MVE_0 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vand %q0, %q1, %q2"
***************
*** 1992,2000 ****
  (define_insn "mve_vbicq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
! 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
! 	 VBICQ_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vbic %q0, %q1, %q2"
--- 2099,2106 ----
  (define_insn "mve_vbicq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(and:MVE_0 (not:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w"))
! 			      (match_operand:MVE_0 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vbic %q0, %q1, %q2"
***************
*** 2017,2048 ****
  ])
  
  ;;
! ;; [vcaddq_rot270_f])
! ;;
! (define_insn "mve_vcaddq_rot270_f<mode>"
!   [
!    (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
! 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
! 	 VCADDQ_ROT270_F))
!   ]
!   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vcadd.f%#<V_sz_elem>	%q0, %q1, %q2, #270"
!   [(set_attr "type" "mve_move")
! ])
! 
! ;;
! ;; [vcaddq_rot90_f])
  ;;
! (define_insn "mve_vcaddq_rot90_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>")
  	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
  		       (match_operand:MVE_0 2 "s_register_operand" "w")]
! 	 VCADDQ_ROT90_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vcadd.f%#<V_sz_elem>	%q0, %q1, %q2, #90"
    [(set_attr "type" "mve_move")
  ])
  
--- 2123,2139 ----
  ])
  
  ;;
! ;; [vcaddq, vcaddq_rot90, vcadd_rot180, vcadd_rot270])
  ;;
! (define_insn "mve_vcaddq<mve_rot><mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>")
  	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
  		       (match_operand:MVE_0 2 "s_register_operand" "w")]
! 	 VCADD))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vcadd.f%#<V_sz_elem>	%q0, %q1, %q2, #<rot>"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 2227,2288 ****
  ])
  
  ;;
! ;; [vcmulq_f])
! ;;
! (define_insn "mve_vcmulq_f<mode>"
!   [
!    (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
! 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
! 	 VCMULQ_F))
!   ]
!   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vcmul.f%#<V_sz_elem>	%q0, %q1, %q2, #0"
!   [(set_attr "type" "mve_move")
! ])
! 
! ;;
! ;; [vcmulq_rot180_f])
! ;;
! (define_insn "mve_vcmulq_rot180_f<mode>"
!   [
!    (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
! 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
! 	 VCMULQ_ROT180_F))
!   ]
!   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vcmul.f%#<V_sz_elem>	%q0, %q1, %q2, #180"
!   [(set_attr "type" "mve_move")
! ])
! 
! ;;
! ;; [vcmulq_rot270_f])
! ;;
! (define_insn "mve_vcmulq_rot270_f<mode>"
!   [
!    (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
! 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
! 	 VCMULQ_ROT270_F))
!   ]
!   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vcmul.f%#<V_sz_elem>	%q0, %q1, %q2, #270"
!   [(set_attr "type" "mve_move")
! ])
! 
! ;;
! ;; [vcmulq_rot90_f])
  ;;
! (define_insn "mve_vcmulq_rot90_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>")
  	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
  		       (match_operand:MVE_0 2 "s_register_operand" "w")]
! 	 VCMULQ_ROT90_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vcmul.f%#<V_sz_elem>	%q0, %q1, %q2, #90"
    [(set_attr "type" "mve_move")
  ])
  
--- 2318,2334 ----
  ])
  
  ;;
! ;; [vcmulq, vcmulq_rot90, vcmulq_rot180, vcmulq_rot270])
  ;;
! (define_insn "mve_vcmulq<mve_rot><mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>")
  	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
  		       (match_operand:MVE_0 2 "s_register_operand" "w")]
! 	 VCMUL))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vcmul.f%#<V_sz_elem>	%q0, %q1, %q2, #<rot>"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 2337,2345 ****
  (define_insn "mve_veorq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
! 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
! 	 VEORQ_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "veor %q0, %q1, %q2"
--- 2383,2390 ----
  (define_insn "mve_veorq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(xor:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")
! 		   (match_operand:MVE_0 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "veor %q0, %q1, %q2"
***************
*** 2382,2390 ****
  (define_insn "mve_vmaxnmq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
! 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
! 	 VMAXNMQ_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vmaxnm.f%#<V_sz_elem>	%q0, %q1, %q2"
--- 2427,2434 ----
  (define_insn "mve_vmaxnmq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(smax:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")
! 		    (match_operand:MVE_0 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vmaxnm.f%#<V_sz_elem>	%q0, %q1, %q2"
***************
*** 2442,2450 ****
  (define_insn "mve_vminnmq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
! 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
! 	 VMINNMQ_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vminnm.f%#<V_sz_elem>	%q0, %q1, %q2"
--- 2486,2493 ----
  (define_insn "mve_vminnmq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(smin:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")
! 		    (match_operand:MVE_0 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vminnm.f%#<V_sz_elem>	%q0, %q1, %q2"
***************
*** 2562,2570 ****
  (define_insn "mve_vmulq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
! 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
! 	 VMULQ_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vmul.f%#<V_sz_elem>	%q0, %q1, %q2"
--- 2605,2612 ----
  (define_insn "mve_vmulq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(mult:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")
! 		    (match_operand:MVE_0 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vmul.f%#<V_sz_elem>	%q0, %q1, %q2"
***************
*** 2592,2600 ****
  (define_insn "mve_vornq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
! 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
! 	 VORNQ_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vorn %q0, %q1, %q2"
--- 2634,2641 ----
  (define_insn "mve_vornq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(ior:MVE_0 (not:MVE_0 (match_operand:MVE_0 2 "s_register_operand" "w"))
! 		   (match_operand:MVE_0 1 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vorn %q0, %q1, %q2"
***************
*** 2607,2615 ****
  (define_insn "mve_vorrq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
! 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
! 	 VORRQ_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vorr %q0, %q1, %q2"
--- 2648,2655 ----
  (define_insn "mve_vorrq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(ior:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")
! 		   (match_operand:MVE_0 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vorr %q0, %q1, %q2"
***************
*** 2832,2840 ****
  (define_insn "mve_vsubq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
! 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
! 	 VSUBQ_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vsub.f%#<V_sz_elem>\t%q0, %q1, %q2"
--- 2872,2879 ----
  (define_insn "mve_vsubq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(minus:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")
! 		     (match_operand:MVE_0 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vsub.f%#<V_sz_elem>\t%q0, %q1, %q2"
***************
*** 4060,4125 ****
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  ;;
! ;; [vcmlaq_f])
! ;;
! (define_insn "mve_vcmlaq_f<mode>"
!   [
!    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
! 		       (match_operand:MVE_0 2 "s_register_operand" "w")
! 		       (match_operand:MVE_0 3 "s_register_operand" "w")]
! 	 VCMLAQ_F))
!   ]
!   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vcmla.f%#<V_sz_elem>	%q0, %q2, %q3, #0"
!   [(set_attr "type" "mve_move")
! ])
! 
! ;;
! ;; [vcmlaq_rot180_f])
! ;;
! (define_insn "mve_vcmlaq_rot180_f<mode>"
!   [
!    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
! 		       (match_operand:MVE_0 2 "s_register_operand" "w")
! 		       (match_operand:MVE_0 3 "s_register_operand" "w")]
! 	 VCMLAQ_ROT180_F))
!   ]
!   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vcmla.f%#<V_sz_elem>	%q0, %q2, %q3, #180"
!   [(set_attr "type" "mve_move")
! ])
! 
! ;;
! ;; [vcmlaq_rot270_f])
! ;;
! (define_insn "mve_vcmlaq_rot270_f<mode>"
!   [
!    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
! 		       (match_operand:MVE_0 2 "s_register_operand" "w")
! 		       (match_operand:MVE_0 3 "s_register_operand" "w")]
! 	 VCMLAQ_ROT270_F))
!   ]
!   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vcmla.f%#<V_sz_elem>	%q0, %q2, %q3, #270"
!   [(set_attr "type" "mve_move")
! ])
! 
! ;;
! ;; [vcmlaq_rot90_f])
  ;;
! (define_insn "mve_vcmlaq_rot90_f<mode>"
    [
!    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
! 		       (match_operand:MVE_0 2 "s_register_operand" "w")
! 		       (match_operand:MVE_0 3 "s_register_operand" "w")]
! 	 VCMLAQ_ROT90_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vcmla.f%#<V_sz_elem>	%q0, %q2, %q3, #90"
    [(set_attr "type" "mve_move")
  ])
  
--- 4099,4119 ----
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  ;;
! ;; [vcmlaq, vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270])
  ;;
! (define_insn "mve_vcmlaq<mve_rot><mode>"
    [
!    (set (match_operand:MVE_0 0 "s_register_operand" "=w,w")
! 	(plus:MVE_0 (match_operand:MVE_0 1 "reg_or_zero_operand" "Dz,0")
! 		    (unspec:MVE_0
! 		        [(match_operand:MVE_0 2 "s_register_operand" "w,w")
! 		         (match_operand:MVE_0 3 "s_register_operand" "w,w")]
! 		     VCMLA)))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "@
!    vcmul.f%#<V_sz_elem>	%q0, %q2, %q3, #<rot>
!    vcmla.f%#<V_sz_elem>	%q0, %q2, %q3, #<rot>"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 10739,10751 ****
   [(set_attr "type" "mve_move")
    (set_attr "length" "8")])
  
- (define_insn "*mve_vec_duplicate<mode>"
-  [(set (match_operand:MVE_VLD_ST 0 "s_register_operand" "=w")
-        (vec_duplicate:MVE_VLD_ST (match_operand:<V_elem> 1 "general_operand" "r")))]
-  "TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT"
-  "vdup.<V_sz_elem>\t%q0, %1"
-  [(set_attr "type" "mve_move")])
- 
  ;; CDE instructions on MVE registers.
  
  (define_insn "arm_vcx1qv16qi"
--- 10733,10738 ----
***************
*** 10858,10860 ****
--- 10845,10870 ----
    [(set_attr "type" "coproc")
     (set_attr "length" "8")]
  )
+ 
+ (define_insn "*movmisalign<mode>_mve_store"
+   [(set (match_operand:MVE_VLD_ST 0 "neon_permissive_struct_operand"	     "=Ux")
+ 	(unspec:MVE_VLD_ST [(match_operand:MVE_VLD_ST 1 "s_register_operand" " w")]
+ 	 UNSPEC_MISALIGNED_ACCESS))]
+   "((TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode))
+     || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode)))
+    && !BYTES_BIG_ENDIAN && unaligned_access"
+   "vstr<V_sz_elem1>.<V_sz_elem>\t%q1, %E0"
+   [(set_attr "type" "mve_store")]
+ )
+ 
+ 
+ (define_insn "*movmisalign<mode>_mve_load"
+   [(set (match_operand:MVE_VLD_ST 0 "s_register_operand"				 "=w")
+ 	(unspec:MVE_VLD_ST [(match_operand:MVE_VLD_ST 1 "neon_permissive_struct_operand" " Ux")]
+ 	 UNSPEC_MISALIGNED_ACCESS))]
+   "((TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode))
+     || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode)))
+    && !BYTES_BIG_ENDIAN && unaligned_access"
+   "vldr<V_sz_elem1>.<V_sz_elem>\t%q0, %E1"
+   [(set_attr "type" "mve_load")]
+ )
diff -Nrcpad gcc-10.3.0/gcc/config/arm/neon.md gcc-11.1.0/gcc/config/arm/neon.md
*** gcc-10.3.0/gcc/config/arm/neon.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/neon.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM NEON coprocessor Machine Description
! ;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM NEON coprocessor Machine Description
! ;; Copyright (C) 2006-2021 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
***************
*** 280,310 ****
    neon_disambiguate_copy (operands, dest, src, 4);
  })
  
- (define_expand "movmisalign<mode>"
-   [(set (match_operand:VDQX 0 "neon_perm_struct_or_reg_operand")
- 	(unspec:VDQX [(match_operand:VDQX 1 "neon_perm_struct_or_reg_operand")]
- 		     UNSPEC_MISALIGNED_ACCESS))]
-   "TARGET_NEON && !BYTES_BIG_ENDIAN && unaligned_access"
- {
-   rtx adjust_mem;
-   /* This pattern is not permitted to fail during expansion: if both arguments
-      are non-registers (e.g. memory := constant, which can be created by the
-      auto-vectorizer), force operand 1 into a register.  */
-   if (!s_register_operand (operands[0], <MODE>mode)
-       && !s_register_operand (operands[1], <MODE>mode))
-     operands[1] = force_reg (<MODE>mode, operands[1]);
- 
-   if (s_register_operand (operands[0], <MODE>mode))
-     adjust_mem = operands[1];
-   else
-     adjust_mem = operands[0];
- 
-   /* Legitimize address.  */
-   if (!neon_vector_mem_operand (adjust_mem, 2, true))
-     XEXP (adjust_mem, 0) = force_reg (Pmode, XEXP (adjust_mem, 0));
- 
- })
- 
  (define_insn "*movmisalign<mode>_neon_store"
    [(set (match_operand:VDX 0 "neon_permissive_struct_operand"	"=Um")
  	(unspec:VDX [(match_operand:VDX 1 "s_register_operand" " w")]
--- 280,285 ----
***************
*** 501,507 ****
    [(set (match_operand:VDQ 0 "s_register_operand" "=w")
          (plus:VDQ (match_operand:VDQ 1 "s_register_operand" "w")
  		  (match_operand:VDQ 2 "s_register_operand" "w")))]
!   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
    "vadd.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
    [(set (attr "type")
        (if_then_else (match_test "<Is_float_mode>")
--- 476,482 ----
    [(set (match_operand:VDQ 0 "s_register_operand" "=w")
          (plus:VDQ (match_operand:VDQ 1 "s_register_operand" "w")
  		  (match_operand:VDQ 2 "s_register_operand" "w")))]
!   "ARM_HAVE_NEON_<MODE>_ARITH"
    "vadd.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
    [(set (attr "type")
        (if_then_else (match_test "<Is_float_mode>")
***************
*** 509,562 ****
                      (const_string "neon_add<q>")))]
  )
  
- ;; As with SFmode, full support for HFmode vector arithmetic is only available
- ;; when flag-unsafe-math-optimizations is enabled.
- 
- ;; Add pattern with modes V8HF and V4HF is split into separate patterns to add
- ;; support for standard pattern addv8hf3 in MVE.  Following pattern is called
- ;; from "addv8hf3" standard pattern inside vec-common.md file.
- 
- (define_insn "addv8hf3_neon"
-   [(set
-     (match_operand:V8HF 0 "s_register_operand" "=w")
-     (plus:V8HF
-      (match_operand:V8HF 1 "s_register_operand" "w")
-      (match_operand:V8HF 2 "s_register_operand" "w")))]
-  "TARGET_NEON_FP16INST && flag_unsafe_math_optimizations"
-  "vadd.f16\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "type" "neon_fp_addsub_s_q")]
- )
- 
- (define_insn "addv4hf3"
-   [(set
-     (match_operand:V4HF 0 "s_register_operand" "=w")
-     (plus:V4HF
-      (match_operand:V4HF 1 "s_register_operand" "w")
-      (match_operand:V4HF 2 "s_register_operand" "w")))]
-  "TARGET_NEON_FP16INST && flag_unsafe_math_optimizations"
-  "vadd.f16\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "type" "neon_fp_addsub_s_q")]
- )
- 
- (define_insn "add<mode>3_fp16"
-   [(set
-     (match_operand:VH 0 "s_register_operand" "=w")
-     (plus:VH
-      (match_operand:VH 1 "s_register_operand" "w")
-      (match_operand:VH 2 "s_register_operand" "w")))]
-  "TARGET_NEON_FP16INST"
-  "vadd.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "type")
-    (if_then_else (match_test "<Is_float_mode>")
-     (const_string "neon_fp_addsub_s<q>")
-     (const_string "neon_add<q>")))]
- )
- 
  (define_insn "*sub<mode>3_neon"
    [(set (match_operand:VDQ 0 "s_register_operand" "=w")
          (minus:VDQ (match_operand:VDQ 1 "s_register_operand" "w")
                     (match_operand:VDQ 2 "s_register_operand" "w")))]
!   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
    "vsub.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
    [(set (attr "type")
        (if_then_else (match_test "<Is_float_mode>")
--- 484,494 ----
                      (const_string "neon_add<q>")))]
  )
  
  (define_insn "*sub<mode>3_neon"
    [(set (match_operand:VDQ 0 "s_register_operand" "=w")
          (minus:VDQ (match_operand:VDQ 1 "s_register_operand" "w")
                     (match_operand:VDQ 2 "s_register_operand" "w")))]
!   "ARM_HAVE_NEON_<MODE>_ARITH"
    "vsub.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
    [(set (attr "type")
        (if_then_else (match_test "<Is_float_mode>")
***************
*** 564,596 ****
                      (const_string "neon_sub<q>")))]
  )
  
- (define_insn "sub<mode>3"
-  [(set
-    (match_operand:VH 0 "s_register_operand" "=w")
-    (minus:VH
-     (match_operand:VH 1 "s_register_operand" "w")
-     (match_operand:VH 2 "s_register_operand" "w")))]
-  "TARGET_NEON_FP16INST && flag_unsafe_math_optimizations"
-  "vsub.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "type" "neon_sub<q>")]
- )
- 
- (define_insn "sub<mode>3_fp16"
-  [(set
-    (match_operand:VH 0 "s_register_operand" "=w")
-    (minus:VH
-     (match_operand:VH 1 "s_register_operand" "w")
-     (match_operand:VH 2 "s_register_operand" "w")))]
-  "TARGET_NEON_FP16INST"
-  "vsub.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "type" "neon_sub<q>")]
- )
- 
  (define_insn "*mul<mode>3_neon"
    [(set (match_operand:VDQW 0 "s_register_operand" "=w")
          (mult:VDQW (match_operand:VDQW 1 "s_register_operand" "w")
                     (match_operand:VDQW 2 "s_register_operand" "w")))]
!   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
    "vmul.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
    [(set (attr "type")
        (if_then_else (match_test "<Is_float_mode>")
--- 496,506 ----
                      (const_string "neon_sub<q>")))]
  )
  
  (define_insn "*mul<mode>3_neon"
    [(set (match_operand:VDQW 0 "s_register_operand" "=w")
          (mult:VDQW (match_operand:VDQW 1 "s_register_operand" "w")
                     (match_operand:VDQW 2 "s_register_operand" "w")))]
!   "ARM_HAVE_NEON_<MODE>_ARITH"
    "vmul.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
    [(set (attr "type")
        (if_then_else (match_test "<Is_float_mode>")
***************
*** 635,641 ****
          (plus:VDQW (mult:VDQW (match_operand:VDQW 2 "s_register_operand" "w")
                              (match_operand:VDQW 3 "s_register_operand" "w"))
  		  (match_operand:VDQW 1 "s_register_operand" "0")))]
!   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
    "vmla.<V_if_elem>\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
    [(set (attr "type")
        (if_then_else (match_test "<Is_float_mode>")
--- 545,551 ----
          (plus:VDQW (mult:VDQW (match_operand:VDQW 2 "s_register_operand" "w")
                              (match_operand:VDQW 3 "s_register_operand" "w"))
  		  (match_operand:VDQW 1 "s_register_operand" "0")))]
!   "ARM_HAVE_NEON_<MODE>_ARITH"
    "vmla.<V_if_elem>\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
    [(set (attr "type")
        (if_then_else (match_test "<Is_float_mode>")
***************
*** 648,654 ****
  	(plus:VH (mult:VH (match_operand:VH 2 "s_register_operand" "w")
  			  (match_operand:VH 3 "s_register_operand" "w"))
  		  (match_operand:VH 1 "s_register_operand" "0")))]
!   "TARGET_NEON_FP16INST && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
    "vmla.f16\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
    [(set_attr "type" "neon_fp_mla_s<q>")]
  )
--- 558,564 ----
  	(plus:VH (mult:VH (match_operand:VH 2 "s_register_operand" "w")
  			  (match_operand:VH 3 "s_register_operand" "w"))
  		  (match_operand:VH 1 "s_register_operand" "0")))]
!   "ARM_HAVE_NEON_<MODE>_ARITH"
    "vmla.f16\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
    [(set_attr "type" "neon_fp_mla_s<q>")]
  )
***************
*** 658,664 ****
          (minus:VDQW (match_operand:VDQW 1 "s_register_operand" "0")
                      (mult:VDQW (match_operand:VDQW 2 "s_register_operand" "w")
                                 (match_operand:VDQW 3 "s_register_operand" "w"))))]
!   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
    "vmls.<V_if_elem>\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
    [(set (attr "type")
        (if_then_else (match_test "<Is_float_mode>")
--- 568,574 ----
          (minus:VDQW (match_operand:VDQW 1 "s_register_operand" "0")
                      (mult:VDQW (match_operand:VDQW 2 "s_register_operand" "w")
                                 (match_operand:VDQW 3 "s_register_operand" "w"))))]
!   "ARM_HAVE_NEON_<MODE>_ARITH"
    "vmls.<V_if_elem>\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
    [(set (attr "type")
        (if_then_else (match_test "<Is_float_mode>")
***************
*** 676,682 ****
          (fma:VCVTF (match_operand:VCVTF 1 "register_operand" "w")
  		 (match_operand:VCVTF 2 "register_operand" "w")
  		 (match_operand:VCVTF 3 "register_operand" "0")))]
!   "TARGET_NEON && TARGET_FMA && flag_unsafe_math_optimizations"
    "vfma.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
    [(set_attr "type" "neon_fp_mla_s<q>")]
  )
--- 586,592 ----
          (fma:VCVTF (match_operand:VCVTF 1 "register_operand" "w")
  		 (match_operand:VCVTF 2 "register_operand" "w")
  		 (match_operand:VCVTF 3 "register_operand" "0")))]
!   "ARM_HAVE_NEON_<MODE>_ARITH && TARGET_FMA"
    "vfma.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
    [(set_attr "type" "neon_fp_mla_s<q>")]
  )
***************
*** 697,714 ****
      (match_operand:VH 1 "register_operand" "w")
      (match_operand:VH 2 "register_operand" "w")
      (match_operand:VH 3 "register_operand" "0")))]
!  "TARGET_NEON_FP16INST && flag_unsafe_math_optimizations"
!  "vfma.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
!  [(set_attr "type" "neon_fp_mla_s<q>")]
! )
! 
! (define_insn "fma<VH:mode>4_intrinsic"
!  [(set (match_operand:VH 0 "register_operand" "=w")
!    (fma:VH
!     (match_operand:VH 1 "register_operand" "w")
!     (match_operand:VH 2 "register_operand" "w")
!     (match_operand:VH 3 "register_operand" "0")))]
!  "TARGET_NEON_FP16INST"
   "vfma.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
   [(set_attr "type" "neon_fp_mla_s<q>")]
  )
--- 607,613 ----
      (match_operand:VH 1 "register_operand" "w")
      (match_operand:VH 2 "register_operand" "w")
      (match_operand:VH 3 "register_operand" "0")))]
!  "ARM_HAVE_NEON_<MODE>_ARITH"
   "vfma.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
   [(set_attr "type" "neon_fp_mla_s<q>")]
  )
***************
*** 718,724 ****
          (fma:VCVTF (neg:VCVTF (match_operand:VCVTF 1 "register_operand" "w"))
  		   (match_operand:VCVTF 2 "register_operand" "w")
  		   (match_operand:VCVTF 3 "register_operand" "0")))]
!   "TARGET_NEON && TARGET_FMA && flag_unsafe_math_optimizations"
    "vfms.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
    [(set_attr "type" "neon_fp_mla_s<q>")]
  )
--- 617,623 ----
          (fma:VCVTF (neg:VCVTF (match_operand:VCVTF 1 "register_operand" "w"))
  		   (match_operand:VCVTF 2 "register_operand" "w")
  		   (match_operand:VCVTF 3 "register_operand" "0")))]
!   "ARM_HAVE_NEON_<MODE>_ARITH && TARGET_FMA"
    "vfms.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
    [(set_attr "type" "neon_fp_mla_s<q>")]
  )
***************
*** 766,772 ****
     (set_attr "predicable" "no")]
  )
  
! (define_insn "ior<mode>3"
    [(set (match_operand:VDQ 0 "s_register_operand" "=w,w")
  	(ior:VDQ (match_operand:VDQ 1 "s_register_operand" "w,0")
  		 (match_operand:VDQ 2 "neon_logic_op2" "w,Dl")))]
--- 665,671 ----
     (set_attr "predicable" "no")]
  )
  
! (define_insn "ior<mode>3_neon"
    [(set (match_operand:VDQ 0 "s_register_operand" "=w,w")
  	(ior:VDQ (match_operand:VDQ 1 "s_register_operand" "w,0")
  		 (match_operand:VDQ 2 "neon_logic_op2" "w,Dl")))]
***************
*** 788,794 ****
  ;; corresponds to the canonical form the middle-end expects to use for
  ;; immediate bitwise-ANDs.
  
! (define_insn "and<mode>3"
    [(set (match_operand:VDQ 0 "s_register_operand" "=w,w")
  	(and:VDQ (match_operand:VDQ 1 "s_register_operand" "w,0")
  		 (match_operand:VDQ 2 "neon_inv_logic_op2" "w,DL")))]
--- 687,693 ----
  ;; corresponds to the canonical form the middle-end expects to use for
  ;; immediate bitwise-ANDs.
  
! (define_insn "and<mode>3_neon"
    [(set (match_operand:VDQ 0 "s_register_operand" "=w,w")
  	(and:VDQ (match_operand:VDQ 1 "s_register_operand" "w,0")
  		 (match_operand:VDQ 2 "neon_inv_logic_op2" "w,DL")))]
***************
*** 823,829 ****
    [(set_attr "type" "neon_logic<q>")]
  )
  
! (define_insn "xor<mode>3"
    [(set (match_operand:VDQ 0 "s_register_operand" "=w")
  	(xor:VDQ (match_operand:VDQ 1 "s_register_operand" "w")
  		 (match_operand:VDQ 2 "s_register_operand" "w")))]
--- 722,728 ----
    [(set_attr "type" "neon_logic<q>")]
  )
  
! (define_insn "xor<mode>3_neon"
    [(set (match_operand:VDQ 0 "s_register_operand" "=w")
  	(xor:VDQ (match_operand:VDQ 1 "s_register_operand" "w")
  		 (match_operand:VDQ 2 "s_register_operand" "w")))]
***************
*** 832,838 ****
    [(set_attr "type" "neon_logic<q>")]
  )
  
! (define_insn "one_cmpl<mode>2"
    [(set (match_operand:VDQ 0 "s_register_operand" "=w")
          (not:VDQ (match_operand:VDQ 1 "s_register_operand" "w")))]
    "TARGET_NEON"
--- 731,737 ----
    [(set_attr "type" "neon_logic<q>")]
  )
  
! (define_insn "one_cmpl<mode>2_neon"
    [(set (match_operand:VDQ 0 "s_register_operand" "=w")
          (not:VDQ (match_operand:VDQ 1 "s_register_operand" "w")))]
    "TARGET_NEON"
***************
*** 851,857 ****
                      (const_string "neon_abs<q>")))]
  )
  
! (define_insn "neg<mode>2"
    [(set (match_operand:VDQW 0 "s_register_operand" "=w")
  	(neg:VDQW (match_operand:VDQW 1 "s_register_operand" "w")))]
    "TARGET_NEON"
--- 750,756 ----
                      (const_string "neon_abs<q>")))]
  )
  
! (define_insn "neon_neg<mode>2"
    [(set (match_operand:VDQW 0 "s_register_operand" "=w")
  	(neg:VDQW (match_operand:VDQW 1 "s_register_operand" "w")))]
    "TARGET_NEON"
***************
*** 862,868 ****
                      (const_string "neon_neg<q>")))]
  )
  
! (define_insn "<absneg_str><mode>2"
    [(set (match_operand:VH 0 "s_register_operand" "=w")
      (ABSNEG:VH (match_operand:VH 1 "s_register_operand" "w")))]
   "TARGET_NEON_FP16INST"
--- 761,767 ----
                      (const_string "neon_neg<q>")))]
  )
  
! (define_insn "neon_<absneg_str><mode>2"
    [(set (match_operand:VH 0 "s_register_operand" "=w")
      (ABSNEG:VH (match_operand:VH 1 "s_register_operand" "w")))]
   "TARGET_NEON_FP16INST"
***************
*** 876,882 ****
     (ABSNEG:VH (match_operand:VH 1 "s_register_operand")))]
   "TARGET_NEON_FP16INST"
  {
!   emit_insn (gen_<absneg_str><mode>2 (operands[0], operands[1]));
    DONE;
  })
  
--- 775,781 ----
     (ABSNEG:VH (match_operand:VH 1 "s_register_operand")))]
   "TARGET_NEON_FP16INST"
  {
!   emit_insn (gen_neon_<absneg_str><mode>2 (operands[0], operands[1]));
    DONE;
  })
  
***************
*** 946,970 ****
  ; generic vectorizer code.  It ends up creating a V2DI constructor with
  ; SImode elements.
  
- (define_insn "vashl<mode>3"
-   [(set (match_operand:VDQIW 0 "s_register_operand" "=w,w")
- 	(ashift:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w,w")
- 		      (match_operand:VDQIW 2 "imm_lshift_or_reg_neon" "w,Dm")))]
-   "TARGET_NEON"
-   {
-     switch (which_alternative)
-       {
-         case 0: return "vshl.<V_s_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2";
-         case 1: return neon_output_shift_immediate ("vshl", 'i', &operands[2],
-                          			    <MODE>mode,
- 						    VALID_NEON_QREG_MODE (<MODE>mode),
- 						    true);
-         default: gcc_unreachable ();
-       }
-   }
-   [(set_attr "type" "neon_shift_reg<q>, neon_shift_imm<q>")]
- )
- 
  (define_insn "vashr<mode>3_imm"
    [(set (match_operand:VDQIW 0 "s_register_operand" "=w")
  	(ashiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w")
--- 845,850 ----
***************
*** 1019,1058 ****
    [(set_attr "type" "neon_shift_reg<q>")]
  )
  
- (define_expand "vashr<mode>3"
-   [(set (match_operand:VDQIW 0 "s_register_operand")
- 	(ashiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand")
- 			(match_operand:VDQIW 2 "imm_rshift_or_reg_neon")))]
-   "TARGET_NEON"
- {
-   if (s_register_operand (operands[2], <MODE>mode))
-     {
-       rtx neg = gen_reg_rtx (<MODE>mode);
-       emit_insn (gen_neg<mode>2 (neg, operands[2]));
-       emit_insn (gen_ashl<mode>3_signed (operands[0], operands[1], neg));
-     }
-   else
-     emit_insn (gen_vashr<mode>3_imm (operands[0], operands[1], operands[2]));
-   DONE;
- })
- 
- (define_expand "vlshr<mode>3"
-   [(set (match_operand:VDQIW 0 "s_register_operand")
- 	(lshiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand")
- 			(match_operand:VDQIW 2 "imm_rshift_or_reg_neon")))]
-   "TARGET_NEON"
- {
-   if (s_register_operand (operands[2], <MODE>mode))
-     {
-       rtx neg = gen_reg_rtx (<MODE>mode);
-       emit_insn (gen_neg<mode>2 (neg, operands[2]));
-       emit_insn (gen_ashl<mode>3_unsigned (operands[0], operands[1], neg));
-     }
-   else
-     emit_insn (gen_vlshr<mode>3_imm (operands[0], operands[1], operands[2]));
-   DONE;
- })
- 
  ;; 64-bit shifts
  
  ;; This pattern loads a 32-bit shift count into a 64-bit NEON register,
--- 899,904 ----
***************
*** 1238,1244 ****
                             (parallel [(const_int 0) (const_int 1)]))
            (vec_select:V2SF (match_dup 1)
                             (parallel [(const_int 2) (const_int 3)]))))]
!   "TARGET_NEON && flag_unsafe_math_optimizations"
    "<VQH_mnem>.f32\t%P0, %e1, %f1"
    [(set_attr "vqh_mnem" "<VQH_mnem>")
     (set_attr "type" "neon_fp_reduc_<VQH_type>_s_q")]
--- 1084,1090 ----
                             (parallel [(const_int 0) (const_int 1)]))
            (vec_select:V2SF (match_dup 1)
                             (parallel [(const_int 2) (const_int 3)]))))]
!   "ARM_HAVE_NEON_V4SF_ARITH"
    "<VQH_mnem>.f32\t%P0, %e1, %f1"
    [(set_attr "vqh_mnem" "<VQH_mnem>")
     (set_attr "type" "neon_fp_reduc_<VQH_type>_s_q")]
***************
*** 1305,1311 ****
  (define_expand "reduc_plus_scal_<mode>"
    [(match_operand:<V_elem> 0 "nonimmediate_operand")
     (match_operand:VD 1 "s_register_operand")]
!   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
  {
    rtx vec = gen_reg_rtx (<MODE>mode);
    neon_pairwise_reduce (vec, operands[1], <MODE>mode,
--- 1151,1157 ----
  (define_expand "reduc_plus_scal_<mode>"
    [(match_operand:<V_elem> 0 "nonimmediate_operand")
     (match_operand:VD 1 "s_register_operand")]
!   "ARM_HAVE_NEON_<MODE>_ARITH"
  {
    rtx vec = gen_reg_rtx (<MODE>mode);
    neon_pairwise_reduce (vec, operands[1], <MODE>mode,
***************
*** 1318,1325 ****
  (define_expand "reduc_plus_scal_<mode>"
    [(match_operand:<V_elem> 0 "nonimmediate_operand")
     (match_operand:VQ 1 "s_register_operand")]
!   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)
!    && !BYTES_BIG_ENDIAN"
  {
    rtx step1 = gen_reg_rtx (<V_HALF>mode);
  
--- 1164,1170 ----
  (define_expand "reduc_plus_scal_<mode>"
    [(match_operand:<V_elem> 0 "nonimmediate_operand")
     (match_operand:VQ 1 "s_register_operand")]
!   "ARM_HAVE_NEON_<MODE>_ARITH && !BYTES_BIG_ENDIAN"
  {
    rtx step1 = gen_reg_rtx (<V_HALF>mode);
  
***************
*** 1354,1360 ****
  (define_expand "reduc_smin_scal_<mode>"
    [(match_operand:<V_elem> 0 "nonimmediate_operand")
     (match_operand:VD 1 "s_register_operand")]
!   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
  {
    rtx vec = gen_reg_rtx (<MODE>mode);
  
--- 1199,1205 ----
  (define_expand "reduc_smin_scal_<mode>"
    [(match_operand:<V_elem> 0 "nonimmediate_operand")
     (match_operand:VD 1 "s_register_operand")]
!   "ARM_HAVE_NEON_<MODE>_ARITH"
  {
    rtx vec = gen_reg_rtx (<MODE>mode);
  
***************
*** 1368,1375 ****
  (define_expand "reduc_smin_scal_<mode>"
    [(match_operand:<V_elem> 0 "nonimmediate_operand")
     (match_operand:VQ 1 "s_register_operand")]
!   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)
!    && !BYTES_BIG_ENDIAN"
  {
    rtx step1 = gen_reg_rtx (<V_HALF>mode);
  
--- 1213,1219 ----
  (define_expand "reduc_smin_scal_<mode>"
    [(match_operand:<V_elem> 0 "nonimmediate_operand")
     (match_operand:VQ 1 "s_register_operand")]
!   "ARM_HAVE_NEON_<MODE>_ARITH && !BYTES_BIG_ENDIAN"
  {
    rtx step1 = gen_reg_rtx (<V_HALF>mode);
  
***************
*** 1382,1388 ****
  (define_expand "reduc_smax_scal_<mode>"
    [(match_operand:<V_elem> 0 "nonimmediate_operand")
     (match_operand:VD 1 "s_register_operand")]
!   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
  {
    rtx vec = gen_reg_rtx (<MODE>mode);
    neon_pairwise_reduce (vec, operands[1], <MODE>mode,
--- 1226,1232 ----
  (define_expand "reduc_smax_scal_<mode>"
    [(match_operand:<V_elem> 0 "nonimmediate_operand")
     (match_operand:VD 1 "s_register_operand")]
!   "ARM_HAVE_NEON_<MODE>_ARITH"
  {
    rtx vec = gen_reg_rtx (<MODE>mode);
    neon_pairwise_reduce (vec, operands[1], <MODE>mode,
***************
*** 1395,1402 ****
  (define_expand "reduc_smax_scal_<mode>"
    [(match_operand:<V_elem> 0 "nonimmediate_operand")
     (match_operand:VQ 1 "s_register_operand")]
!   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)
!    && !BYTES_BIG_ENDIAN"
  {
    rtx step1 = gen_reg_rtx (<V_HALF>mode);
  
--- 1239,1245 ----
  (define_expand "reduc_smax_scal_<mode>"
    [(match_operand:<V_elem> 0 "nonimmediate_operand")
     (match_operand:VQ 1 "s_register_operand")]
!   "ARM_HAVE_NEON_<MODE>_ARITH && !BYTES_BIG_ENDIAN"
  {
    rtx step1 = gen_reg_rtx (<V_HALF>mode);
  
***************
*** 1573,1578 ****
--- 1416,1445 ----
    [(set_attr "type" "neon_qsub<q>")]
  )
  
+ (define_expand "vec_cmp<mode><v_cmp_result>"
+   [(set (match_operand:<V_cmp_result> 0 "s_register_operand")
+ 	(match_operator:<V_cmp_result> 1 "comparison_operator"
+ 	  [(match_operand:VDQW 2 "s_register_operand")
+ 	   (match_operand:VDQW 3 "reg_or_zero_operand")]))]
+   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
+ {
+   arm_expand_vector_compare (operands[0], GET_CODE (operands[1]),
+ 			     operands[2], operands[3], false);
+   DONE;
+ })
+ 
+ (define_expand "vec_cmpu<mode><mode>"
+   [(set (match_operand:VDQIW 0 "s_register_operand")
+ 	(match_operator:VDQIW 1 "comparison_operator"
+ 	  [(match_operand:VDQIW 2 "s_register_operand")
+ 	   (match_operand:VDQIW 3 "reg_or_zero_operand")]))]
+   "TARGET_NEON"
+ {
+   arm_expand_vector_compare (operands[0], GET_CODE (operands[1]),
+ 			     operands[2], operands[3], false);
+   DONE;
+ })
+ 
  ;; Conditional instructions.  These are comparisons with conditional moves for
  ;; vectors.  They perform the assignment:
  ;;   
***************
*** 1586,1815 ****
  	(if_then_else:VDQW
  	  (match_operator 3 "comparison_operator"
  	    [(match_operand:VDQW 4 "s_register_operand")
! 	     (match_operand:VDQW 5 "nonmemory_operand")])
  	  (match_operand:VDQW 1 "s_register_operand")
  	  (match_operand:VDQW 2 "s_register_operand")))]
    "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
  {
!   int inverse = 0;
!   int use_zero_form = 0;
!   int swap_bsl_operands = 0;
!   rtx mask = gen_reg_rtx (<V_cmp_result>mode);
!   rtx tmp = gen_reg_rtx (<V_cmp_result>mode);
! 
!   rtx (*base_comparison) (rtx, rtx, rtx);
!   rtx (*complimentary_comparison) (rtx, rtx, rtx);
! 
!   switch (GET_CODE (operands[3]))
!     {
!     case GE:
!     case GT:
!     case LE:
!     case LT:
!     case EQ:
!       if (operands[5] == CONST0_RTX (<MODE>mode))
! 	{
! 	  use_zero_form = 1;
! 	  break;
! 	}
!       /* Fall through.  */
!     default:
!       if (!REG_P (operands[5]))
! 	operands[5] = force_reg (<MODE>mode, operands[5]);
!     }
! 
!   switch (GET_CODE (operands[3]))
!     {
!     case LT:
!     case UNLT:
!       inverse = 1;
!       /* Fall through.  */
!     case GE:
!     case UNGE:
!     case ORDERED:
!     case UNORDERED:
!       base_comparison = gen_neon_vcge<mode>;
!       complimentary_comparison = gen_neon_vcgt<mode>;
!       break;
!     case LE:
!     case UNLE:
!       inverse = 1;
!       /* Fall through.  */
!     case GT:
!     case UNGT:
!       base_comparison = gen_neon_vcgt<mode>;
!       complimentary_comparison = gen_neon_vcge<mode>;
!       break;
!     case EQ:
!     case NE:
!     case UNEQ:
!       base_comparison = gen_neon_vceq<mode>;
!       complimentary_comparison = gen_neon_vceq<mode>;
!       break;
!     default:
!       gcc_unreachable ();
!     }
! 
!   switch (GET_CODE (operands[3]))
!     {
!     case LT:
!     case LE:
!     case GT:
!     case GE:
!     case EQ:
!       /* The easy case.  Here we emit one of vcge, vcgt or vceq.
! 	 As a LT b <=> b GE a && a LE b <=> b GT a.  Our transformations are:
! 	 a GE b -> a GE b
! 	 a GT b -> a GT b
! 	 a LE b -> b GE a
! 	 a LT b -> b GT a
! 	 a EQ b -> a EQ b
! 	 Note that there also exist direct comparison against 0 forms,
! 	 so catch those as a special case.  */
!       if (use_zero_form)
! 	{
! 	  inverse = 0;
! 	  switch (GET_CODE (operands[3]))
! 	    {
! 	    case LT:
! 	      base_comparison = gen_neon_vclt<mode>;
! 	      break;
! 	    case LE:
! 	      base_comparison = gen_neon_vcle<mode>;
! 	      break;
! 	    default:
! 	      /* Do nothing, other zero form cases already have the correct
! 		 base_comparison.  */
! 	      break;
! 	    }
! 	}
! 
!       if (!inverse)
! 	emit_insn (base_comparison (mask, operands[4], operands[5]));
!       else
! 	emit_insn (complimentary_comparison (mask, operands[5], operands[4]));
!       break;
!     case UNLT:
!     case UNLE:
!     case UNGT:
!     case UNGE:
!     case NE:
!       /* Vector compare returns false for lanes which are unordered, so if we use
! 	 the inverse of the comparison we actually want to emit, then
! 	 swap the operands to BSL, we will end up with the correct result.
! 	 Note that a NE NaN and NaN NE b are true for all a, b.
! 
! 	 Our transformations are:
! 	 a GE b -> !(b GT a)
! 	 a GT b -> !(b GE a)
! 	 a LE b -> !(a GT b)
! 	 a LT b -> !(a GE b)
! 	 a NE b -> !(a EQ b)  */
! 
!       if (inverse)
! 	emit_insn (base_comparison (mask, operands[4], operands[5]));
!       else
! 	emit_insn (complimentary_comparison (mask, operands[5], operands[4]));
! 
!       swap_bsl_operands = 1;
!       break;
!     case UNEQ:
!       /* We check (a > b ||  b > a).  combining these comparisons give us
! 	 true iff !(a != b && a ORDERED b), swapping the operands to BSL
! 	 will then give us (a == b ||  a UNORDERED b) as intended.  */
! 
!       emit_insn (gen_neon_vcgt<mode> (mask, operands[4], operands[5]));
!       emit_insn (gen_neon_vcgt<mode> (tmp, operands[5], operands[4]));
!       emit_insn (gen_ior<v_cmp_result>3 (mask, mask, tmp));
!       swap_bsl_operands = 1;
!       break;
!     case UNORDERED:
!        /* Operands are ORDERED iff (a > b || b >= a).
! 	 Swapping the operands to BSL will give the UNORDERED case.  */
!      swap_bsl_operands = 1;
!      /* Fall through.  */
!     case ORDERED:
!       emit_insn (gen_neon_vcgt<mode> (tmp, operands[4], operands[5]));
!       emit_insn (gen_neon_vcge<mode> (mask, operands[5], operands[4]));
!       emit_insn (gen_ior<v_cmp_result>3 (mask, mask, tmp));
!       break;
!     default:
!       gcc_unreachable ();
!     }
  
!   if (swap_bsl_operands)
!     emit_insn (gen_neon_vbsl<mode> (operands[0], mask, operands[2],
! 				    operands[1]));
!   else
!     emit_insn (gen_neon_vbsl<mode> (operands[0], mask, operands[1],
! 				    operands[2]));
    DONE;
  })
  
! (define_expand "vcondu<mode><mode>"
!   [(set (match_operand:VDQIW 0 "s_register_operand")
! 	(if_then_else:VDQIW
  	  (match_operator 3 "arm_comparison_operator"
! 	    [(match_operand:VDQIW 4 "s_register_operand")
! 	     (match_operand:VDQIW 5 "s_register_operand")])
! 	  (match_operand:VDQIW 1 "s_register_operand")
! 	  (match_operand:VDQIW 2 "s_register_operand")))]
    "TARGET_NEON"
  {
!   rtx mask;
!   int inverse = 0, immediate_zero = 0;
!   
!   mask = gen_reg_rtx (<V_cmp_result>mode);
!   
!   if (operands[5] == CONST0_RTX (<MODE>mode))
!     immediate_zero = 1;
!   else if (!REG_P (operands[5]))
!     operands[5] = force_reg (<MODE>mode, operands[5]);
!   
!   switch (GET_CODE (operands[3]))
!     {
!     case GEU:
!       emit_insn (gen_neon_vcgeu<mode> (mask, operands[4], operands[5]));
!       break;
!     
!     case GTU:
!       emit_insn (gen_neon_vcgtu<mode> (mask, operands[4], operands[5]));
!       break;
!     
!     case EQ:
!       emit_insn (gen_neon_vceq<mode> (mask, operands[4], operands[5]));
!       break;
!     
!     case LEU:
!       if (immediate_zero)
! 	emit_insn (gen_neon_vcle<mode> (mask, operands[4], operands[5]));
!       else
! 	emit_insn (gen_neon_vcgeu<mode> (mask, operands[5], operands[4]));
!       break;
!     
!     case LTU:
!       if (immediate_zero)
!         emit_insn (gen_neon_vclt<mode> (mask, operands[4], operands[5]));
!       else
! 	emit_insn (gen_neon_vcgtu<mode> (mask, operands[5], operands[4]));
!       break;
!     
!     case NE:
!       emit_insn (gen_neon_vceq<mode> (mask, operands[4], operands[5]));
!       inverse = 1;
!       break;
!     
!     default:
!       gcc_unreachable ();
!     }
!   
!   if (inverse)
!     emit_insn (gen_neon_vbsl<mode> (operands[0], mask, operands[2],
! 				    operands[1]));
!   else
!     emit_insn (gen_neon_vbsl<mode> (operands[0], mask, operands[1],
! 				    operands[2]));
  
    DONE;
  })
  
--- 1453,1505 ----
  	(if_then_else:VDQW
  	  (match_operator 3 "comparison_operator"
  	    [(match_operand:VDQW 4 "s_register_operand")
! 	     (match_operand:VDQW 5 "reg_or_zero_operand")])
  	  (match_operand:VDQW 1 "s_register_operand")
  	  (match_operand:VDQW 2 "s_register_operand")))]
    "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
  {
!   arm_expand_vcond (operands, <V_cmp_result>mode);
!   DONE;
! })
  
! (define_expand "vcond<V_cvtto><mode>"
!   [(set (match_operand:<V_CVTTO> 0 "s_register_operand")
! 	(if_then_else:<V_CVTTO>
! 	  (match_operator 3 "comparison_operator"
! 	    [(match_operand:V32 4 "s_register_operand")
! 	     (match_operand:V32 5 "reg_or_zero_operand")])
! 	  (match_operand:<V_CVTTO> 1 "s_register_operand")
! 	  (match_operand:<V_CVTTO> 2 "s_register_operand")))]
!   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
! {
!   arm_expand_vcond (operands, <V_cmp_result>mode);
    DONE;
  })
  
! (define_expand "vcondu<mode><v_cmp_result>"
!   [(set (match_operand:VDQW 0 "s_register_operand")
! 	(if_then_else:VDQW
  	  (match_operator 3 "arm_comparison_operator"
! 	    [(match_operand:<V_cmp_result> 4 "s_register_operand")
! 	     (match_operand:<V_cmp_result> 5 "reg_or_zero_operand")])
! 	  (match_operand:VDQW 1 "s_register_operand")
! 	  (match_operand:VDQW 2 "s_register_operand")))]
    "TARGET_NEON"
  {
!   arm_expand_vcond (operands, <V_cmp_result>mode);
!   DONE;
! })
  
+ (define_expand "vcond_mask_<mode><v_cmp_result>"
+   [(set (match_operand:VDQW 0 "s_register_operand")
+ 	(if_then_else:VDQW
+ 	  (match_operand:<V_cmp_result> 3 "s_register_operand")
+ 	  (match_operand:VDQW 1 "s_register_operand")
+ 	  (match_operand:VDQW 2 "s_register_operand")))]
+   "TARGET_NEON"
+ {
+   emit_insn (gen_neon_vbsl<mode> (operands[0], operands[3], operands[1],
+ 				  operands[2]));
    DONE;
  })
  
***************
*** 1823,1829 ****
     (match_operand:VCVTF 2 "s_register_operand")]
    "TARGET_NEON"
  {
!   if (!<Is_float_mode> || flag_unsafe_math_optimizations)
      emit_insn (gen_add<mode>3 (operands[0], operands[1], operands[2]));
    else
      emit_insn (gen_neon_vadd<mode>_unspec (operands[0], operands[1],
--- 1513,1519 ----
     (match_operand:VCVTF 2 "s_register_operand")]
    "TARGET_NEON"
  {
!   if (ARM_HAVE_NEON_<MODE>_ARITH)
      emit_insn (gen_add<mode>3 (operands[0], operands[1], operands[2]));
    else
      emit_insn (gen_neon_vadd<mode>_unspec (operands[0], operands[1],
***************
*** 1837,1843 ****
     (match_operand:VH 2 "s_register_operand")]
    "TARGET_NEON_FP16INST"
  {
!   emit_insn (gen_add<mode>3_fp16 (operands[0], operands[1], operands[2]));
    DONE;
  })
  
--- 1527,1533 ----
     (match_operand:VH 2 "s_register_operand")]
    "TARGET_NEON_FP16INST"
  {
!   emit_insn (gen_add<mode>3 (operands[0], operands[1], operands[2]));
    DONE;
  })
  
***************
*** 1847,1853 ****
     (match_operand:VH 2 "s_register_operand")]
    "TARGET_NEON_FP16INST"
  {
!   emit_insn (gen_sub<mode>3_fp16 (operands[0], operands[1], operands[2]));
    DONE;
  })
  
--- 1537,1543 ----
     (match_operand:VH 2 "s_register_operand")]
    "TARGET_NEON_FP16INST"
  {
!   emit_insn (gen_sub<mode>3 (operands[0], operands[1], operands[2]));
    DONE;
  })
  
***************
*** 1942,1958 ****
                      (const_string "neon_mul_<V_elem_ch><q>")))]
  )
  
- (define_insn "mul<mode>3"
-  [(set
-    (match_operand:VH 0 "s_register_operand" "=w")
-    (mult:VH
-     (match_operand:VH 1 "s_register_operand" "w")
-     (match_operand:VH 2 "s_register_operand" "w")))]
-   "TARGET_NEON_FP16INST && flag_unsafe_math_optimizations"
-   "vmul.f16\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "type" "neon_mul_<VH_elem_ch><q>")]
- )
- 
  (define_insn "neon_vmulf<mode>"
   [(set
     (match_operand:VH 0 "s_register_operand" "=w")
--- 1632,1637 ----
***************
*** 1971,1977 ****
     (match_operand:VDQW 3 "s_register_operand")]
    "TARGET_NEON"
  {
!   if (!<Is_float_mode> || flag_unsafe_math_optimizations)
      emit_insn (gen_mul<mode>3add<mode>_neon (operands[0], operands[1],
  				             operands[2], operands[3]));
    else
--- 1650,1656 ----
     (match_operand:VDQW 3 "s_register_operand")]
    "TARGET_NEON"
  {
!   if (ARM_HAVE_NEON_<MODE>_ARITH)
      emit_insn (gen_mul<mode>3add<mode>_neon (operands[0], operands[1],
  				             operands[2], operands[3]));
    else
***************
*** 1999,2006 ****
     (match_operand:VH 3 "s_register_operand")]
    "TARGET_NEON_FP16INST"
  {
!   emit_insn (gen_fma<mode>4_intrinsic (operands[0], operands[2], operands[3],
! 				       operands[1]));
    DONE;
  })
  
--- 1678,1685 ----
     (match_operand:VH 3 "s_register_operand")]
    "TARGET_NEON_FP16INST"
  {
!   emit_insn (gen_fma<mode>4 (operands[0], operands[2], operands[3],
! 			     operands[1]));
    DONE;
  })
  
***************
*** 2462,2468 ****
     (match_operand:VDQW 3 "s_register_operand")]
    "TARGET_NEON"
  {
!   if (!<Is_float_mode> || flag_unsafe_math_optimizations)
      emit_insn (gen_mul<mode>3neg<mode>add<mode>_neon (operands[0],
  		 operands[1], operands[2], operands[3]));
    else
--- 2141,2147 ----
     (match_operand:VDQW 3 "s_register_operand")]
    "TARGET_NEON"
  {
!   if (ARM_HAVE_NEON_<MODE>_ARITH)
      emit_insn (gen_mul<mode>3neg<mode>add<mode>_neon (operands[0],
  		 operands[1], operands[2], operands[3]));
    else
***************
*** 2569,2575 ****
     (match_operand:VCVTF 2 "s_register_operand")]
    "TARGET_NEON"
  {
!   if (!<Is_float_mode> || flag_unsafe_math_optimizations)
      emit_insn (gen_sub<mode>3 (operands[0], operands[1], operands[2]));
    else
      emit_insn (gen_neon_vsub<mode>_unspec (operands[0], operands[1],
--- 2248,2254 ----
     (match_operand:VCVTF 2 "s_register_operand")]
    "TARGET_NEON"
  {
!   if (ARM_HAVE_NEON_<MODE>_ARITH)
      emit_insn (gen_sub<mode>3 (operands[0], operands[1], operands[2]));
    else
      emit_insn (gen_neon_vsub<mode>_unspec (operands[0], operands[1],
***************
*** 2644,2650 ****
  
  ;; These may expand to an UNSPEC pattern when a floating point mode is used
  ;; without unsafe math optimizations.
! (define_expand "neon_vc<cmp_op><mode>"
    [(match_operand:<V_cmp_result> 0 "s_register_operand")
       (neg:<V_cmp_result>
         (COMPARISONS:VDQW (match_operand:VDQW 1 "s_register_operand")
--- 2323,2329 ----
  
  ;; These may expand to an UNSPEC pattern when a floating point mode is used
  ;; without unsafe math optimizations.
! (define_expand "@neon_vc<cmp_op><mode>"
    [(match_operand:<V_cmp_result> 0 "s_register_operand")
       (neg:<V_cmp_result>
         (COMPARISONS:VDQW (match_operand:VDQW 1 "s_register_operand")
***************
*** 2684,2690 ****
    }
  )
  
! (define_insn "neon_vc<cmp_op><mode>_insn"
    [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w,w")
          (neg:<V_cmp_result>
            (COMPARISONS:<V_cmp_result>
--- 2363,2369 ----
    }
  )
  
! (define_insn "@neon_vc<cmp_op><mode>_insn"
    [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w,w")
          (neg:<V_cmp_result>
            (COMPARISONS:<V_cmp_result>
***************
*** 2728,2734 ****
    [(set_attr "type" "neon_fp_compare_s<q>")]
  )
  
! (define_expand "neon_vc<cmp_op><mode>"
   [(match_operand:<V_cmp_result> 0 "s_register_operand")
    (neg:<V_cmp_result>
     (COMPARISONS:VH
--- 2407,2413 ----
    [(set_attr "type" "neon_fp_compare_s<q>")]
  )
  
! (define_expand "@neon_vc<cmp_op><mode>"
   [(match_operand:<V_cmp_result> 0 "s_register_operand")
    (neg:<V_cmp_result>
     (COMPARISONS:VH
***************
*** 2794,2800 ****
  }
   [(set_attr "type" "neon_fp_compare_s<q>")])
  
! (define_insn "neon_vc<cmp_op>u<mode>"
    [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w")
          (neg:<V_cmp_result>
            (GTUGEU:<V_cmp_result>
--- 2473,2479 ----
  }
   [(set_attr "type" "neon_fp_compare_s<q>")])
  
! (define_insn "@neon_vc<code><mode>"
    [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w")
          (neg:<V_cmp_result>
            (GTUGEU:<V_cmp_result>
***************
*** 3196,3202 ****
     (match_operand:VDQW 1 "s_register_operand")]
    "TARGET_NEON"
  {
!   emit_insn (gen_neg<mode>2 (operands[0], operands[1]));
    DONE;
  })
  
--- 2875,2881 ----
     (match_operand:VDQW 1 "s_register_operand")]
    "TARGET_NEON"
  {
!   emit_insn (gen_neon_neg<mode>2 (operands[0], operands[1]));
    DONE;
  })
  
***************
*** 3273,3278 ****
--- 2952,2976 ----
    [(set_attr "type" "neon_fcmla")]
  )
  
+ ;; The complex mul operations always need to expand to two instructions.
+ ;; The first operation does half the computation and the second does the
+ ;; remainder.  Because of this, expand early.
+ (define_expand "cmul<conj_op><mode>3"
+   [(set (match_operand:VDF 0 "register_operand")
+ 	(unspec:VDF [(match_operand:VDF 1 "register_operand")
+ 		     (match_operand:VDF 2 "register_operand")]
+ 		    VCMUL_OP))]
+   "TARGET_COMPLEX && !BYTES_BIG_ENDIAN"
+ {
+   rtx res1 = gen_reg_rtx (<MODE>mode);
+   rtx tmp = force_reg (<MODE>mode, CONST0_RTX (<MODE>mode));
+   emit_insn (gen_neon_vcmla<rotsplit1><mode> (res1, tmp,
+ 					      operands[2], operands[1]));
+   emit_insn (gen_neon_vcmla<rotsplit2><mode> (operands[0], res1,
+ 					      operands[2], operands[1]));
+   DONE;
+ })
+ 
  
  ;; These instructions map to the __builtins for the Dot Product operations.
  (define_insn "neon_<sup>dot<vsi2qi>"
***************
*** 3483,3489 ****
     (match_operand:VDQIW 1 "s_register_operand")]
    "TARGET_NEON"
  {
!   emit_insn (gen_one_cmpl<mode>2 (operands[0], operands[1]));
    DONE;
  })
  
--- 3181,3187 ----
     (match_operand:VDQIW 1 "s_register_operand")]
    "TARGET_NEON"
  {
!   emit_insn (gen_one_cmpl<mode>2_neon (operands[0], operands[1]));
    DONE;
  })
  
*************** if (BYTES_BIG_ENDIAN)
*** 4751,4757 ****
    [(set_attr "type" "neon_bsl<q>")]
  )
  
! (define_expand "neon_vbsl<mode>"
    [(set (match_operand:VDQX 0 "s_register_operand")
          (unspec:VDQX [(match_operand:<V_cmp_result> 1 "s_register_operand")
                        (match_operand:VDQX 2 "s_register_operand")
--- 4449,4455 ----
    [(set_attr "type" "neon_bsl<q>")]
  )
  
! (define_expand "@neon_vbsl<mode>"
    [(set (match_operand:VDQX 0 "s_register_operand")
          (unspec:VDQX [(match_operand:<V_cmp_result> 1 "s_register_operand")
                        (match_operand:VDQX 2 "s_register_operand")
*************** if (BYTES_BIG_ENDIAN)
*** 6658,6664 ****
   [(set (match_operand:VF 0 "s_register_operand" "=w")
         (abs:VF (minus:VF (match_operand:VF 1 "s_register_operand" "w")
  			 (match_operand:VF 2 "s_register_operand" "w"))))]
!  "TARGET_NEON && flag_unsafe_math_optimizations"
   "vabd.<V_s_elem> %<V_reg>0, %<V_reg>1, %<V_reg>2"
   [(set_attr "type" "neon_fp_abd_s<q>")]
  )
--- 6356,6362 ----
   [(set (match_operand:VF 0 "s_register_operand" "=w")
         (abs:VF (minus:VF (match_operand:VF 1 "s_register_operand" "w")
  			 (match_operand:VF 2 "s_register_operand" "w"))))]
!  "ARM_HAVE_NEON_<MODE>_ARITH"
   "vabd.<V_s_elem> %<V_reg>0, %<V_reg>1, %<V_reg>2"
   [(set_attr "type" "neon_fp_abd_s<q>")]
  )
*************** if (BYTES_BIG_ENDIAN)
*** 6668,6674 ****
         (abs:VF (unspec:VF [(match_operand:VF 1 "s_register_operand" "w")
  			    (match_operand:VF 2 "s_register_operand" "w")]
  		UNSPEC_VSUB)))]
!  "TARGET_NEON && flag_unsafe_math_optimizations"
   "vabd.<V_if_elem> %<V_reg>0, %<V_reg>1, %<V_reg>2"
   [(set_attr "type" "neon_fp_abd_s<q>")]
  )
--- 6366,6372 ----
         (abs:VF (unspec:VF [(match_operand:VF 1 "s_register_operand" "w")
  			    (match_operand:VF 2 "s_register_operand" "w")]
  		UNSPEC_VSUB)))]
!  "ARM_HAVE_NEON_<MODE>_ARITH"
   "vabd.<V_if_elem> %<V_reg>0, %<V_reg>1, %<V_reg>2"
   [(set_attr "type" "neon_fp_abd_s<q>")]
  )
diff -Nrcpad gcc-10.3.0/gcc/config/arm/netbsd-eabi.h gcc-11.1.0/gcc/config/arm/netbsd-eabi.h
*** gcc-10.3.0/gcc/config/arm/netbsd-eabi.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/netbsd-eabi.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, NetBSD/arm ELF version.
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, NetBSD/arm ELF version.
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/netbsd-elf.h gcc-11.1.0/gcc/config/arm/netbsd-elf.h
*** gcc-10.3.0/gcc/config/arm/netbsd-elf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/netbsd-elf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, NetBSD/arm ELF version.
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, NetBSD/arm ELF version.
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/parsecpu.awk gcc-11.1.0/gcc/config/arm/parsecpu.awk
*** gcc-10.3.0/gcc/config/arm/parsecpu.awk	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/parsecpu.awk	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  # Manipulate the CPU, FPU and architecture descriptions for ARM.
! # Copyright (C) 2017-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,5 ----
  # Manipulate the CPU, FPU and architecture descriptions for ARM.
! # Copyright (C) 2017-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** function boilerplate (style) {
*** 62,68 ****
      print cc "Generated automatically by parsecpu.awk from arm-cpus.in."
      print cc "Do not edit."
      print ""
!     print cc "Copyright (C) 2011-2020 Free Software Foundation, Inc."
      print ""
      print cc "This file is part of GCC."
      print ""
--- 62,68 ----
      print cc "Generated automatically by parsecpu.awk from arm-cpus.in."
      print cc "Do not edit."
      print ""
!     print cc "Copyright (C) 2011-2021 Free Software Foundation, Inc."
      print ""
      print cc "This file is part of GCC."
      print ""
diff -Nrcpad gcc-10.3.0/gcc/config/arm/predicates.md gcc-11.1.0/gcc/config/arm/predicates.md
*** gcc-10.3.0/gcc/config/arm/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/predicates.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Predicate definitions for ARM and Thumb
! ;; Copyright (C) 2004-2020 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicate definitions for ARM and Thumb
! ;; Copyright (C) 2004-2021 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
***************
*** 18,23 ****
--- 18,25 ----
  ;; along with GCC; see the file COPYING3.  If not see
  ;; <http://www.gnu.org/licenses/>.
  
+ (include "common.md")
+ 
  (define_predicate "s_register_operand"
    (match_code "reg,subreg")
  {
***************
*** 107,113 ****
  (define_predicate "imm_for_neon_inv_logic_operand"
    (match_code "const_vector")
  {
!   return (TARGET_NEON
            && neon_immediate_valid_for_logic (op, mode, 1, NULL, NULL));
  })
  
--- 109,115 ----
  (define_predicate "imm_for_neon_inv_logic_operand"
    (match_code "const_vector")
  {
!   return ((TARGET_NEON || TARGET_HAVE_MVE)
            && neon_immediate_valid_for_logic (op, mode, 1, NULL, NULL));
  })
  
***************
*** 118,124 ****
  (define_predicate "imm_for_neon_logic_operand"
    (match_code "const_vector")
  {
!   return (TARGET_NEON
            && neon_immediate_valid_for_logic (op, mode, 0, NULL, NULL));
  })
  
--- 120,126 ----
  (define_predicate "imm_for_neon_logic_operand"
    (match_code "const_vector")
  {
!   return ((TARGET_NEON || TARGET_HAVE_MVE)
            && neon_immediate_valid_for_logic (op, mode, 0, NULL, NULL));
  })
  
***************
*** 185,191 ****
  	      || REGNO_REG_CLASS (REGNO (op)) == VFP_D0_D7_REGS
  	      || REGNO_REG_CLASS (REGNO (op)) == VFP_LO_REGS
  	      || (TARGET_VFPD32
! 		  && REGNO_REG_CLASS (REGNO (op)) == VFP_REGS)));
  })
  
  (define_predicate "vfp_hard_register_operand"
--- 187,193 ----
  	      || REGNO_REG_CLASS (REGNO (op)) == VFP_D0_D7_REGS
  	      || REGNO_REG_CLASS (REGNO (op)) == VFP_LO_REGS
  	      || (TARGET_VFPD32
! 		  && REGNO_REG_CLASS (REGNO (op)) == VFP_HI_REGS)));
  })
  
  (define_predicate "vfp_hard_register_operand"
***************
*** 485,490 ****
--- 487,504 ----
    (and (match_operand 0 "expandable_comparison_operator")
         (match_test "maybe_get_arm_condition_code (op) != ARM_NV")))
  
+ (define_special_predicate "arm_comparison_operation"
+   (match_code "eq,ne,le,lt,ge,gt,geu,gtu,leu,ltu,unordered,
+          ordered,unlt,unle,unge,ungt")
+ {
+   if (XEXP (op, 1) != const0_rtx)
+     return false;
+   rtx op0 = XEXP (op, 0);
+   if (!REG_P (op0) || REGNO (op0) != CC_REGNUM)
+     return false;
+   return maybe_get_arm_condition_code (op) != ARM_NV;
+ })
+ 
  (define_special_predicate "lt_ge_comparison_operator"
    (match_code "lt,ge"))
  
diff -Nrcpad gcc-10.3.0/gcc/config/arm/rtems.h gcc-11.1.0/gcc/config/arm/rtems.h
*** gcc-10.3.0/gcc/config/arm/rtems.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/rtems.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for RTEMS based ARM systems using EABI.
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for RTEMS based ARM systems using EABI.
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/arm/semi.h gcc-11.1.0/gcc/config/arm/semi.h
*** gcc-10.3.0/gcc/config/arm/semi.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/semi.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler.  ARM on semi-hosted platform
!    Copyright (C) 1994-2020 Free Software Foundation, Inc.
     Contributed by Richard Earnshaw (richard.earnshaw@arm.com)
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler.  ARM on semi-hosted platform
!    Copyright (C) 1994-2021 Free Software Foundation, Inc.
     Contributed by Richard Earnshaw (richard.earnshaw@arm.com)
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/symbian.h gcc-11.1.0/gcc/config/arm/symbian.h
*** gcc-10.3.0/gcc/config/arm/symbian.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/symbian.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Configuration file for Symbian OS on ARM processors.
!    Copyright (C) 2004-2020 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC   
  
     This file is part of GCC.
--- 1,5 ----
  /* Configuration file for Symbian OS on ARM processors.
!    Copyright (C) 2004-2021 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC   
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/sync.md gcc-11.1.0/gcc/config/arm/sync.md
*** gcc-10.3.0/gcc/config/arm/sync.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/sync.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description for ARM processor synchronization primitives.
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Written by Marcus Shawcroft (marcus.shawcroft@arm.com)
  ;; 64bit Atomics by Dave Gilbert (david.gilbert@linaro.org)
  ;;
--- 1,5 ----
  ;; Machine description for ARM processor synchronization primitives.
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Written by Marcus Shawcroft (marcus.shawcroft@arm.com)
  ;; 64bit Atomics by Dave Gilbert (david.gilbert@linaro.org)
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/arm/t-aprofile gcc-11.1.0/gcc/config/arm/t-aprofile
*** gcc-10.3.0/gcc/config/arm/t-aprofile	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/t-aprofile	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2012-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2012-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/arm/t-arm gcc-11.1.0/gcc/config/arm/t-arm
*** gcc-10.3.0/gcc/config/arm/t-arm	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/t-arm	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  # Rules common to all arm targets
  #
! # Copyright (C) 2004-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # Rules common to all arm targets
  #
! # Copyright (C) 2004-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/arm/t-arm-elf gcc-11.1.0/gcc/config/arm/t-arm-elf
*** gcc-10.3.0/gcc/config/arm/t-arm-elf	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/t-arm-elf	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 1998-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 1998-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/arm/t-fuchsia gcc-11.1.0/gcc/config/arm/t-fuchsia
*** gcc-10.3.0/gcc/config/arm/t-fuchsia	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/t-fuchsia	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2017-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2017-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/arm/t-linux-eabi gcc-11.1.0/gcc/config/arm/t-linux-eabi
*** gcc-10.3.0/gcc/config/arm/t-linux-eabi	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/t-linux-eabi	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2005-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2005-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/arm/t-multilib gcc-11.1.0/gcc/config/arm/t-multilib
*** gcc-10.3.0/gcc/config/arm/t-multilib	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/t-multilib	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2016-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2016-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/arm/t-phoenix gcc-11.1.0/gcc/config/arm/t-phoenix
*** gcc-10.3.0/gcc/config/arm/t-phoenix	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/t-phoenix	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2016-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2016-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/arm/t-rmprofile gcc-11.1.0/gcc/config/arm/t-rmprofile
*** gcc-10.3.0/gcc/config/arm/t-rmprofile	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/t-rmprofile	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2016-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2016-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/arm/t-symbian gcc-11.1.0/gcc/config/arm/t-symbian
*** gcc-10.3.0/gcc/config/arm/t-symbian	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/t-symbian	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2004-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2004-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/arm/t-vxworks gcc-11.1.0/gcc/config/arm/t-vxworks
*** gcc-10.3.0/gcc/config/arm/t-vxworks	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/t-vxworks	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2003-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2003-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/arm/thumb1.md gcc-11.1.0/gcc/config/arm/thumb1.md
*** gcc-10.3.0/gcc/config/arm/thumb1.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/thumb1.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Thumb-1 Machine Description
! ;; Copyright (C) 2007-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; ARM Thumb-1 Machine Description
! ;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 43,84 ****
  
  
  
- (define_insn "thumb1_movsi_symbol_ref"
-   [(set (match_operand:SI 0 "register_operand" "=l")
- 	(match_operand:SI 1 "general_operand" ""))
-    ]
-   "TARGET_THUMB1
-    && arm_disable_literal_pool
-    && GET_CODE (operands[1]) == SYMBOL_REF"
-   "*
-   output_asm_insn (\"movs\\t%0, #:upper8_15:%1\", operands);
-   output_asm_insn (\"lsls\\t%0, #8\", operands);
-   output_asm_insn (\"adds\\t%0, #:upper0_7:%1\", operands);
-   output_asm_insn (\"lsls\\t%0, #8\", operands);
-   output_asm_insn (\"adds\\t%0, #:lower8_15:%1\", operands);
-   output_asm_insn (\"lsls\\t%0, #8\", operands);
-   output_asm_insn (\"adds\\t%0, #:lower0_7:%1\", operands);
-   return \"\";
-   "
-   [(set_attr "length" "14")
-    (set_attr "conds" "clob")]
- )
- 
- (define_split
-   [(set (match_operand:SI 0 "register_operand" "")
- 	(match_operand:SI 1 "immediate_operand" ""))]
-   "TARGET_THUMB1
-    && arm_disable_literal_pool
-    && GET_CODE (operands[1]) == CONST_INT
-    && !TARGET_HAVE_MOVT
-    && !satisfies_constraint_I (operands[1])"
-   [(clobber (const_int 0))]
-   "
-     thumb1_gen_const_int (operands[0], INTVAL (operands[1]));
-     DONE;
-   "
- )
- 
  (define_insn "*thumb1_adddi3"
    [(set (match_operand:DI          0 "register_operand" "=l")
  	(plus:DI (match_operand:DI 1 "register_operand" "%0")
--- 43,48 ----
***************
*** 711,750 ****
        case 7:
        /* pure-code alternative: build the constant byte by byte,
  	 instead of loading it from a constant pool.  */
! 	{
! 	  int i;
! 	  HOST_WIDE_INT op1 = INTVAL (operands[1]);
! 	  bool mov_done_p = false;
! 	  rtx ops[2];
! 	  ops[0] = operands[0];
! 
! 	  /* Emit upper 3 bytes if needed.  */
! 	  for (i = 0; i < 3; i++)
! 	    {
! 	       int byte = (op1 >> (8 * (3 - i))) & 0xff;
! 
! 	      if (byte)
! 		{
! 		  ops[1] = GEN_INT (byte);
! 		  if (mov_done_p)
! 		    output_asm_insn ("adds\t%0, %1", ops);
! 		  else
! 		    output_asm_insn ("movs\t%0, %1", ops);
! 		  mov_done_p = true;
! 		}
  
! 	      if (mov_done_p)
! 		output_asm_insn ("lsls\t%0, #8", ops);
! 	    }
  
- 	  /* Emit lower byte if needed.  */
- 	  ops[1] = GEN_INT (op1 & 0xff);
- 	  if (!mov_done_p)
- 	    output_asm_insn ("movs\t%0, %1", ops);
- 	  else if (op1 & 0xff)
- 	    output_asm_insn ("adds\t%0, %1", ops);
- 	  return "";
- 	}
        case 8: return "ldr\t%0, %1";
        case 9: return "str\t%1, %0";
        case 10: return "mov\t%0, %1";
--- 675,699 ----
        case 7:
        /* pure-code alternative: build the constant byte by byte,
  	 instead of loading it from a constant pool.  */
! 	if (arm_valid_symbolic_address_p (operands[1]))
! 	  {
! 	    output_asm_insn (\"movs\\t%0, #:upper8_15:%1\", operands);
! 	    output_asm_insn (\"lsls\\t%0, #8\", operands);
! 	    output_asm_insn (\"adds\\t%0, #:upper0_7:%1\", operands);
! 	    output_asm_insn (\"lsls\\t%0, #8\", operands);
! 	    output_asm_insn (\"adds\\t%0, #:lower8_15:%1\", operands);
! 	    output_asm_insn (\"lsls\\t%0, #8\", operands);
! 	    output_asm_insn (\"adds\\t%0, #:lower0_7:%1\", operands);
! 	    return \"\";
! 	  }
! 	else if (GET_CODE (operands[1]) == CONST_INT)
! 	  {
! 	    thumb1_gen_const_int_print (operands[0], INTVAL (operands[1]));
! 	    return \"\";
! 	  }
  
! 	gcc_unreachable ();
  
        case 8: return "ldr\t%0, %1";
        case 9: return "str\t%1, %0";
        case 10: return "mov\t%0, %1";
***************
*** 755,761 ****
     (set_attr "pool_range" "*,*,*,*,*,*,*, *,1018,*,*")
     (set_attr "arch" "t1,t1,v8mb,t1,t1,t1,t1,t1,t1,t1,t1")
     (set_attr "required_for_purecode" "no,no,no,no,no,no,no,yes,no,no,no")
!    (set_attr "conds" "set,clob,nocond,*,*,nocond,nocond,nocond,nocond,nocond,nocond")])
  
  ; Split the load of 64-bit constant into two loads for high and low 32-bit parts respectively
  ; to see if we can load them in fewer instructions or fewer cycles.
--- 704,710 ----
     (set_attr "pool_range" "*,*,*,*,*,*,*, *,1018,*,*")
     (set_attr "arch" "t1,t1,v8mb,t1,t1,t1,t1,t1,t1,t1,t1")
     (set_attr "required_for_purecode" "no,no,no,no,no,no,no,yes,no,no,no")
!    (set_attr "conds" "set,clob,nocond,*,*,nocond,nocond,clob,nocond,nocond,nocond")])
  
  ; Split the load of 64-bit constant into two loads for high and low 32-bit parts respectively
  ; to see if we can load them in fewer instructions or fewer cycles.
***************
*** 832,837 ****
--- 781,801 ----
    }"
  )
  
+ (define_split
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(match_operand:SI 1 "const_int_operand" ""))]
+   "TARGET_THUMB1
+    && arm_disable_literal_pool
+    && GET_CODE (operands[1]) == CONST_INT
+    && !TARGET_HAVE_MOVT
+    && !satisfies_constraint_K (operands[1])"
+   [(clobber (const_int 0))]
+   "
+     thumb1_gen_const_int_rtl (operands[0], INTVAL (operands[1]));
+     DONE;
+   "
+ )
+ 
  (define_insn "*thumb1_movhi_insn"
    [(set (match_operand:HI 0 "nonimmediate_operand" "=l,l,m,l*r,*h,l,r")
  	(match_operand:HI 1 "general_operand"       "l,m,l,k*h,*r,I,n"))]
diff -Nrcpad gcc-10.3.0/gcc/config/arm/thumb2.md gcc-11.1.0/gcc/config/arm/thumb2.md
*** gcc-10.3.0/gcc/config/arm/thumb2.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/thumb2.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM Thumb-2 Machine Description
! ;; Copyright (C) 2007-2020 Free Software Foundation, Inc.
  ;; Written by CodeSourcery, LLC.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM Thumb-2 Machine Description
! ;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
  ;; Written by CodeSourcery, LLC.
  ;;
  ;; This file is part of GCC.
***************
*** 759,764 ****
--- 759,768 ----
        return \"%i5\\t%0, %1, %2, lsr #31\";
  
      output_asm_insn (\"cmp\\t%2, %3\", operands);
+ 
+     if (GET_CODE (operands[5]) == PLUS && TARGET_COND_ARITH)
+       return \"cinc\\t%0, %1, %d4\";
+ 
      if (GET_CODE (operands[5]) == AND)
        {
  	output_asm_insn (\"ite\\t%D4\", operands);
***************
*** 892,898 ****
  		 [(match_operand:SI 1 "s_register_operand" "r")
  		  (match_operand:SI 2 "arm_rhs_operand" "rI")])))
     (clobber (reg:CC CC_REGNUM))]
!   "TARGET_THUMB2"
    "#"
    "&& reload_completed"
    [(const_int 0)]
--- 896,902 ----
  		 [(match_operand:SI 1 "s_register_operand" "r")
  		  (match_operand:SI 2 "arm_rhs_operand" "rI")])))
     (clobber (reg:CC CC_REGNUM))]
!   "TARGET_THUMB2 && !TARGET_COND_ARITH"
    "#"
    "&& reload_completed"
    [(const_int 0)]
***************
*** 953,958 ****
--- 957,1005 ----
     (set_attr "type" "multiple")]
  )
  
+ (define_insn "*thumb2_csinv"
+   [(set (match_operand:SI 0 "arm_general_register_operand" "=r, r")
+         (if_then_else:SI
+          (match_operand 1 "arm_comparison_operation" "")
+          (not:SI (match_operand:SI 2 "arm_general_register_operand" "r, r"))
+          (match_operand:SI 3 "reg_or_zero_operand" "r, Pz")))]
+   "TARGET_COND_ARITH"
+   "@
+    csinv\\t%0, %3, %2, %D1
+    csinv\\t%0, zr, %2, %D1"
+   [(set_attr "type" "csel")
+    (set_attr "predicable" "no")]
+ )
+ 
+ (define_insn "*thumb2_csinc"
+   [(set (match_operand:SI 0 "arm_general_register_operand" "=r, r")
+         (if_then_else:SI
+          (match_operand 1 "arm_comparison_operation" "")
+          (plus:SI (match_operand:SI 2 "arm_general_register_operand" "r, r")
+                   (const_int 1))
+          (match_operand:SI 3 "reg_or_zero_operand" "r, Pz")))]
+   "TARGET_COND_ARITH"
+   "@
+    csinc\\t%0, %3, %2, %D1
+    csinc\\t%0, zr, %2, %D1"
+   [(set_attr "type" "csel")
+    (set_attr "predicable" "no")]
+ )
+ 
+ (define_insn "*thumb2_csneg"
+   [(set (match_operand:SI 0 "arm_general_register_operand" "=r, r")
+         (if_then_else:SI
+          (match_operand 1 "arm_comparison_operation" "")
+          (neg:SI (match_operand:SI 2 "arm_general_register_operand" "r, r"))
+          (match_operand:SI 3 "reg_or_zero_operand" "r, Pz")))]
+   "TARGET_COND_ARITH"
+   "@
+    csneg\\t%0, %3, %2, %D1
+    csneg\\t%0, zr, %2, %D1"
+   [(set_attr "type" "csel")
+    (set_attr "predicable" "no")]
+ )
+ 
  (define_insn "*thumb2_movcond"
    [(set (match_operand:SI 0 "s_register_operand" "=Ts,Ts,Ts")
  	(if_then_else:SI
***************
*** 962,968 ****
  	 (match_operand:SI 1 "arm_rhs_operand" "0,TsI,?TsI")
  	 (match_operand:SI 2 "arm_rhs_operand" "TsI,0,TsI")))
     (clobber (reg:CC CC_REGNUM))]
!   "TARGET_THUMB2"
    "*
    if (GET_CODE (operands[5]) == LT
        && (operands[4] == const0_rtx))
--- 1009,1015 ----
  	 (match_operand:SI 1 "arm_rhs_operand" "0,TsI,?TsI")
  	 (match_operand:SI 2 "arm_rhs_operand" "TsI,0,TsI")))
     (clobber (reg:CC CC_REGNUM))]
!   "TARGET_THUMB2 && !TARGET_COND_ARITH"
    "*
    if (GET_CODE (operands[5]) == LT
        && (operands[4] == const0_rtx))
***************
*** 1229,1235 ****
     (set_attr "shift" "1")
     (set_attr "length" "2")
     (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "")
! 		      (const_string "alu_shift_imm")
  		      (const_string "alu_shift_reg")))]
  )
  
--- 1276,1284 ----
     (set_attr "shift" "1")
     (set_attr "length" "2")
     (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "")
!                         (if_then_else (match_operand 3 "alu_shift_operator_lsl_1_to_4")
!                           (const_string "alu_shift_imm_lsl_1to4")
!                           (const_string "alu_shift_imm_other"))
  		      (const_string "alu_shift_reg")))]
  )
  
***************
*** 1498,1504 ****
    "orn%?\\t%0, %1, %2%S4"
    [(set_attr "predicable" "yes")
     (set_attr "shift" "2")
!    (set_attr "type" "alu_shift_imm")]
  )
  
  (define_peephole2
--- 1547,1553 ----
    "orn%?\\t%0, %1, %2%S4"
    [(set_attr "predicable" "yes")
     (set_attr "shift" "2")
!    (set_attr "autodetect_type" "alu_shift_operator4")]
  )
  
  (define_peephole2
***************
*** 1570,1577 ****
        using a certain 'count' register and (2) the loop count can be
        adjusted by modifying this register prior to the loop.
        ??? The possible introduction of a new block to initialize the
!       new IV can potentially affect branch optimizations.  */
!    if (optimize > 0 && flag_modulo_sched)
     {
       rtx s0;
       rtx bcomp;
--- 1619,1629 ----
        using a certain 'count' register and (2) the loop count can be
        adjusted by modifying this register prior to the loop.
        ??? The possible introduction of a new block to initialize the
!       new IV can potentially affect branch optimizations.
! 
!       Also used to implement the low over head loops feature, which is part of
!       the Armv8.1-M Mainline Low Overhead Branch (LOB) extension.  */
!    if (optimize > 0 && (flag_modulo_sched || TARGET_HAVE_LOB))
     {
       rtx s0;
       rtx bcomp;
***************
*** 1584,1589 ****
--- 1636,1646 ----
         FAIL;
  
       s0 = operands [0];
+ 
+      /* Low over head loop instructions require the first operand to be LR.  */
+      if (TARGET_HAVE_LOB && arm_target_insn_ok_for_lob (operands [1]))
+        s0 = gen_rtx_REG (SImode, LR_REGNUM);
+ 
       if (TARGET_THUMB2)
         insn = emit_insn (gen_thumb2_addsi3_compare0 (s0, s0, GEN_INT (-1)));
       else
***************
*** 1597,1604 ****
                                    gen_rtx_IF_THEN_ELSE (VOIDmode, bcomp,
                                                          loc_ref, pc_rtx)));
       DONE;
!    }else
!       FAIL;
   }")
  
  (define_insn "*clear_apsr"
--- 1654,1662 ----
                                    gen_rtx_IF_THEN_ELSE (VOIDmode, bcomp,
                                                          loc_ref, pc_rtx)));
       DONE;
!    }
!  else
!    FAIL;
   }")
  
  (define_insn "*clear_apsr"
***************
*** 1665,1667 ****
--- 1723,1769 ----
    "TARGET_HAVE_MVE"
    "lsrl%?\\t%Q0, %R0, %1"
    [(set_attr "predicable" "yes")])
+ 
+ ;; Originally expanded by 'doloop_end'.
+ (define_insn "*doloop_end_internal"
+   [(set (pc)
+         (if_then_else
+             (ne (reg:SI LR_REGNUM) (const_int 1))
+           (label_ref (match_operand 0 "" ""))
+           (pc)))
+    (set (reg:SI LR_REGNUM)
+         (plus:SI (reg:SI LR_REGNUM) (const_int -1)))
+    (clobber (reg:CC CC_REGNUM))]
+   "TARGET_32BIT && TARGET_HAVE_LOB"
+   {
+     if (get_attr_length (insn) == 4)
+       return "le\t%|lr, %l0";
+     else
+       return "subs\t%|lr, #1;bne\t%l0";
+   }
+   [(set (attr "length")
+         (if_then_else
+             (ltu (minus (pc) (match_dup 0)) (const_int 1024))
+ 	    (const_int 4)
+ 	    (const_int 6)))
+    (set_attr "type" "branch")])
+ 
+ (define_expand "doloop_begin"
+   [(match_operand 0 "" "")
+    (match_operand 1 "" "")]
+   "TARGET_32BIT && TARGET_HAVE_LOB"
+   {
+     if (REGNO (operands[0]) == LR_REGNUM)
+       {
+ 	emit_insn (gen_dls_insn (operands[0]));
+ 	DONE;
+       }
+     else
+       FAIL;
+   })
+ 
+ (define_insn "dls_insn"
+   [(set (reg:SI LR_REGNUM)
+         (unspec:SI [(match_operand:SI 0 "s_register_operand" "r")] UNSPEC_DLS))]
+   "TARGET_32BIT && TARGET_HAVE_LOB"
+   "dls\t%|lr, %0")
diff -Nrcpad gcc-10.3.0/gcc/config/arm/types.md gcc-11.1.0/gcc/config/arm/types.md
*** gcc-10.3.0/gcc/config/arm/types.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/types.md	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ;; Instruction Classification for ARM for GNU compiler.
  
! ;; Copyright (C) 1991-2020 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
--- 1,6 ----
  ;; Instruction Classification for ARM for GNU compiler.
  
! ;; Copyright (C) 1991-2021 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
***************
*** 19,24 ****
--- 19,37 ----
  ;; along with GCC; see the file COPYING3.  If not see
  ;; <http://www.gnu.org/licenses/>.
  
+ ; The insn need to autodetect for specific type attribute
+ (define_attr "autodetect_type"
+     "none,
+     alu_shift_lsl_op2,
+     alu_shift_lsr_op2,
+     alu_shift_asr_op2,
+     alu_shift_mul_op3,
+     alu_shift_operator1,
+     alu_shift_operator2,
+     alu_shift_operator3,
+     alu_shift_operator4"
+     (const_string "none"))
+ 
  ; TYPE attribute is used to classify instructions for use in scheduling.
  ;
  ; Instruction classification:
***************
*** 39,54 ****
  ;                    or an immediate operand.  This excludes
  ;                    MOV and MVN but includes MOVT.  This also excludes
  ;                    DSP-kind instructions.  This is also the default.
! ; alu_shift_imm      any arithmetic instruction that has a source operand
! ;                    shifted by a constant.  This excludes simple shifts.
! ; alu_shift_reg      as alu_shift_imm, with the shift amount specified in a
  ;                    register.
  ; alu_dsp_reg        any DSP-kind instruction like QSUB8.
  ; alus_ext           From ARMv8-A: as alu_ext, setting condition flags.
  ;                    AArch64 Only.
  ; alus_imm           as alu_imm, setting condition flags.
  ; alus_sreg          as alu_sreg, setting condition flags.
! ; alus_shift_imm     as alu_shift_imm, setting condition flags.
  ; alus_shift_reg     as alu_shift_reg, setting condition flags.
  ; bfm                bitfield move operation.
  ; bfx                bitfield extract operation.
--- 52,72 ----
  ;                    or an immediate operand.  This excludes
  ;                    MOV and MVN but includes MOVT.  This also excludes
  ;                    DSP-kind instructions.  This is also the default.
! ; alu_shift_imm_lsl_1to4
! ;                    any arithmetic instruction that has a source operand
! ;                    shifted left by a constant in range 1 to 4.  This
! ;                    excludes simple shifts.
! ; alu_shift_imm_other
! ;                    as alu_shift_imm_lsl_1to4, with the shift type is LSR or
! ;                    ASR, or the shift amount is greater than or equal 5.
! ; alu_shift_reg      as alu_shift_imm_*, with the shift amount specified in a
  ;                    register.
  ; alu_dsp_reg        any DSP-kind instruction like QSUB8.
  ; alus_ext           From ARMv8-A: as alu_ext, setting condition flags.
  ;                    AArch64 Only.
  ; alus_imm           as alu_imm, setting condition flags.
  ; alus_sreg          as alu_sreg, setting condition flags.
! ; alus_shift_imm     as alu_shift_imm_*, setting condition flags.
  ; alus_shift_reg     as alu_shift_reg, setting condition flags.
  ; bfm                bitfield move operation.
  ; bfx                bitfield extract operation.
***************
*** 565,571 ****
    alu_ext,\
    alu_imm,\
    alu_sreg,\
!   alu_shift_imm,\
    alu_shift_reg,\
    alu_dsp_reg,\
    alus_ext,\
--- 583,590 ----
    alu_ext,\
    alu_imm,\
    alu_sreg,\
!   alu_shift_imm_lsl_1to4,\
!   alu_shift_imm_other,\
    alu_shift_reg,\
    alu_dsp_reg,\
    alus_ext,\
***************
*** 1106,1112 ****
    mve_move,\
    mve_store,\
    mve_load"
!    (const_string "untyped"))
  
  ; Is this an (integer side) multiply with a 32-bit (or smaller) result?
  (define_attr "mul32" "no,yes"
--- 1125,1167 ----
    mve_move,\
    mve_store,\
    mve_load"
!    (cond [(eq_attr "autodetect_type" "alu_shift_lsr_op2,alu_shift_asr_op2")
!             (const_string "alu_shift_imm_other")
!           (eq_attr "autodetect_type" "alu_shift_lsl_op2")
!             (if_then_else (match_operand 2 "const_1_to_4_operand")
!                           (const_string "alu_shift_imm_lsl_1to4")
!                           (const_string "alu_shift_imm_other"))
!           (eq_attr "autodetect_type" "alu_shift_mul_op3")
!             (if_then_else (match_operand 3 "const_2_4_8_16_operand")
!                           (const_string "alu_shift_imm_lsl_1to4")
!                           (const_string "alu_shift_imm_other"))
!           (eq_attr "autodetect_type" "alu_shift_operator1")
!             (if_then_else (match_operand 1 "alu_shift_reg_p")
!                (const_string "alu_shift_reg")
!                (if_then_else (match_operand 1 "alu_shift_operator_lsl_1_to_4")
!                              (const_string "alu_shift_imm_lsl_1to4")
!                              (const_string "alu_shift_imm_other")))
!           (eq_attr "autodetect_type" "alu_shift_operator2")
!             (if_then_else (match_operand 2 "alu_shift_reg_p")
!                (const_string "alu_shift_reg")
!                (if_then_else (match_operand 2 "alu_shift_operator_lsl_1_to_4")
!                              (const_string "alu_shift_imm_lsl_1to4")
!                              (const_string "alu_shift_imm_other")))
!           (eq_attr "autodetect_type" "alu_shift_operator3")
!             (if_then_else (match_operand 3 "alu_shift_reg_p")
!                (const_string "alu_shift_reg")
!                (if_then_else (match_operand 3 "alu_shift_operator_lsl_1_to_4")
!                              (const_string "alu_shift_imm_lsl_1to4")
!                              (const_string "alu_shift_imm_other")))
!           (eq_attr "autodetect_type" "alu_shift_operator4")
!             (if_then_else (match_operand 4 "alu_shift_reg_p")
!                (const_string "alu_shift_reg")
!                (if_then_else (match_operand 4 "alu_shift_operator_lsl_1_to_4")
!                              (const_string "alu_shift_imm_lsl_1to4")
!                              (const_string "alu_shift_imm_other")))
!          ]
!          (const_string "untyped")))
! 
  
  ; Is this an (integer side) multiply with a 32-bit (or smaller) result?
  (define_attr "mul32" "no,yes"
diff -Nrcpad gcc-10.3.0/gcc/config/arm/uclinux-eabi.h gcc-11.1.0/gcc/config/arm/uclinux-eabi.h
*** gcc-10.3.0/gcc/config/arm/uclinux-eabi.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/uclinux-eabi.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for ARM EABI ucLinux
!    Copyright (C) 2006-2020 Free Software Foundation, Inc.
     Contributed by Paul Brook <paul@codesourcery.com>
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for ARM EABI ucLinux
!    Copyright (C) 2006-2021 Free Software Foundation, Inc.
     Contributed by Paul Brook <paul@codesourcery.com>
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/uclinux-elf.h gcc-11.1.0/gcc/config/arm/uclinux-elf.h
*** gcc-10.3.0/gcc/config/arm/uclinux-elf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/uclinux-elf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for ARM running ucLinux using ELF
!    Copyright (C) 1999-2020 Free Software Foundation, Inc.
     Contributed by Philip Blundell <pb@nexus.co.uk>
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for ARM running ucLinux using ELF
!    Copyright (C) 1999-2021 Free Software Foundation, Inc.
     Contributed by Philip Blundell <pb@nexus.co.uk>
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/uclinuxfdpiceabi.h gcc-11.1.0/gcc/config/arm/uclinuxfdpiceabi.h
*** gcc-10.3.0/gcc/config/arm/uclinuxfdpiceabi.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/uclinuxfdpiceabi.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Configuration file for ARM GNU/Linux FDPIC EABI targets.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
     Contributed by STMicroelectronics.
  
     This file is part of GCC.
--- 1,5 ----
  /* Configuration file for ARM GNU/Linux FDPIC EABI targets.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
     Contributed by STMicroelectronics.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/unknown-elf.h gcc-11.1.0/gcc/config/arm/unknown-elf.h
*** gcc-10.3.0/gcc/config/arm/unknown-elf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/unknown-elf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for non-Linux based ARM systems using ELF
!    Copyright (C) 1998-2020 Free Software Foundation, Inc.
     Contributed by Catherine Moore <clm@cygnus.com>
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for non-Linux based ARM systems using ELF
!    Copyright (C) 1998-2021 Free Software Foundation, Inc.
     Contributed by Catherine Moore <clm@cygnus.com>
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/unspecs.md gcc-11.1.0/gcc/config/arm/unspecs.md
*** gcc-10.3.0/gcc/config/arm/unspecs.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/unspecs.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Unspec defintions.
! ;; Copyright (C) 2012-2020 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Unspec defintions.
! ;; Copyright (C) 2012-2021 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
***************
*** 158,163 ****
--- 158,164 ----
    UNSPEC_CDEA		; Custom Datapath Extension instruction.
    UNSPEC_VCDE		; Custom Datapath Extension instruction.
    UNSPEC_VCDEA		; Custom Datapath Extension instruction.
+   UNSPEC_DLS		; Used for DLS (Do Loop Start), Armv8.1-M Mainline instruction
  ])
  
  
***************
*** 509,514 ****
--- 510,522 ----
    UNSPEC_VCMLA90
    UNSPEC_VCMLA180
    UNSPEC_VCMLA270
+   UNSPEC_VCMLA_CONJ
+   UNSPEC_VCMLA180_CONJ
+   UNSPEC_VCMUL
+   UNSPEC_VCMUL90
+   UNSPEC_VCMUL180
+   UNSPEC_VCMUL270
+   UNSPEC_VCMUL_CONJ
    UNSPEC_MATMUL_S
    UNSPEC_MATMUL_U
    UNSPEC_MATMUL_US
***************
*** 529,535 ****
    VRNDMQ_F
    VRNDAQ_F
    VREV64Q_F
-   VNEGQ_F
    VDUPQ_N_F
    VABSQ_F
    VREV32Q_F
--- 537,542 ----
***************
*** 548,556 ****
    VREV64Q_S
    VREV64Q_U
    VQABSQ_S
-   VNEGQ_S
-   VMVNQ_S
-   VMVNQ_U
    VDUPQ_N_U
    VDUPQ_N_S
    VCLZQ_U
--- 555,560 ----
***************
*** 600,614 ****
    VADDQ_N_S
    VADDVAQ_S
    VADDVQ_P_S
-   VANDQ_S
-   VBICQ_S
    VBRSRQ_N_S
-   VCADDQ_ROT270_S
-   VCADDQ_ROT90_S
    VCMPEQQ_S
    VCMPEQQ_N_S
    VCMPNEQ_N_S
-   VEORQ_S
    VHADDQ_S
    VHADDQ_N_S
    VHSUBQ_S
--- 604,613 ----
***************
*** 623,630 ****
    VMULLTQ_INT_S
    VMULQ_S
    VMULQ_N_S
-   VORNQ_S
-   VORRQ_S
    VQADDQ_S
    VQADDQ_N_S
    VQRSHLQ_S
--- 622,627 ----
***************
*** 647,661 ****
    VADDQ_N_U
    VADDVAQ_U
    VADDVQ_P_U
-   VANDQ_U
-   VBICQ_U
    VBRSRQ_N_U
-   VCADDQ_ROT270_U
-   VCADDQ_ROT90_U
    VCMPEQQ_U
    VCMPEQQ_N_U
    VCMPNEQ_N_U
-   VEORQ_U
    VHADDQ_U
    VHADDQ_N_U
    VHSUBQ_U
--- 644,653 ----
***************
*** 670,677 ****
    VMULLTQ_INT_U
    VMULQ_U
    VMULQ_N_U
-   VORNQ_U
-   VORRQ_U
    VQADDQ_U
    VQADDQ_N_U
    VQRSHLQ_U
--- 662,667 ----
***************
*** 720,729 ****
    VABDQ_M_U
    VABDQ_F
    VADDQ_N_F
-   VANDQ_F
-   VBICQ_F
-   VCADDQ_ROT270_F
-   VCADDQ_ROT90_F
    VCMPEQQ_F
    VCMPEQQ_N_F
    VCMPGEQ_F
--- 710,715 ----
***************
*** 736,746 ****
    VCMPLTQ_N_F
    VCMPNEQ_F
    VCMPNEQ_N_F
-   VCMULQ_F
-   VCMULQ_ROT180_F
-   VCMULQ_ROT270_F
-   VCMULQ_ROT90_F
-   VEORQ_F
    VMAXNMAQ_F
    VMAXNMAVQ_F
    VMAXNMQ_F
--- 722,727 ----
***************
*** 751,758 ****
    VMINNMVQ_F
    VMULQ_F
    VMULQ_N_F
-   VORNQ_F
-   VORRQ_F
    VSUBQ_F
    VADDLVAQ_U
    VADDLVAQ_S
--- 732,737 ----
***************
*** 913,919 ****
    VMLSLDAVAQ_S
    VQSHRUNBQ_N_S
    VQRSHRUNTQ_N_S
-   VCMLAQ_F
    VMINNMAQ_M_F
    VFMASQ_N_F
    VDUPQ_M_N_F
--- 892,897 ----
***************
*** 935,948 ****
    VADDLVAQ_P_S
    VQMOVUNBQ_M_S
    VCMPLEQ_M_F
-   VCMLAQ_ROT180_F
    VMLSLDAVAXQ_S
    VRNDXQ_M_F
    VFMSQ_F
    VMINNMVQ_P_F
    VMAXNMVQ_P_F
    VPSELQ_F
-   VCMLAQ_ROT90_F
    VQMOVUNTQ_M_S
    VREV64Q_M_F
    VNEGQ_M_F
--- 913,924 ----
***************
*** 955,961 ****
    VRMLALDAVHQ_P_S
    VRMLALDAVHXQ_P_S
    VCMPEQQ_M_N_F
-   VCMLAQ_ROT270_F
    VMAXNMAQ_M_F
    VRNDQ_M_F
    VMLALDAVQ_P_U
--- 931,936 ----
diff -Nrcpad gcc-10.3.0/gcc/config/arm/vec-common.md gcc-11.1.0/gcc/config/arm/vec-common.md
*** gcc-10.3.0/gcc/config/arm/vec-common.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/vec-common.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine Description for shared bits common to IWMMXT and Neon.
! ;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine Description for shared bits common to IWMMXT and Neon.
! ;; Copyright (C) 2006-2021 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
***************
*** 86,189 ****
  ;; patterns separately for Neon, IWMMXT and MVE.
  
  (define_expand "add<mode>3"
!   [(set (match_operand:VNIM 0 "s_register_operand")
! 	(plus:VNIM (match_operand:VNIM 1 "s_register_operand")
! 		   (match_operand:VNIM 2 "s_register_operand")))]
!   "(TARGET_NEON && ((<MODE>mode != V2SFmode && <MODE>mode != V4SFmode)
! 		    || flag_unsafe_math_optimizations))
!    || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (<MODE>mode))
!    || (TARGET_HAVE_MVE && VALID_MVE_SI_MODE(<MODE>mode))
!    || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE(<MODE>mode))"
! {
! })
! 
! ;; Vector arithmetic.  Expanders are blank, then unnamed insns implement
! ;; patterns separately for Neon and MVE.
! 
! (define_expand "addv8hf3"
!   [(set (match_operand:V8HF 0 "s_register_operand")
! 	(plus:V8HF (match_operand:V8HF 1 "s_register_operand")
! 		   (match_operand:V8HF 2 "s_register_operand")))]
!   "(TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE(V8HFmode))
!    || (TARGET_NEON_FP16INST && flag_unsafe_math_optimizations)"
! {
!   if (TARGET_NEON_FP16INST && flag_unsafe_math_optimizations)
!     emit_insn (gen_addv8hf3_neon (operands[0], operands[1], operands[2]));
! })
! 
! ;; Vector arithmetic.  Expanders are blank, then unnamed insns implement
! ;; patterns separately for Neon and IWMMXT.
! 
! (define_expand "add<mode>3"
!   [(set (match_operand:VNINOTM 0 "s_register_operand")
! 	(plus:VNINOTM (match_operand:VNINOTM 1 "s_register_operand")
! 		      (match_operand:VNINOTM 2 "s_register_operand")))]
!   "(TARGET_NEON && ((<MODE>mode != V2SFmode && <MODE>mode != V4SFmode)
! 		    || flag_unsafe_math_optimizations))
!    || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (<MODE>mode))"
! {
! })
! 
! ;; Vector arithmetic. Expanders are blank, then unnamed insns implement
! ;; patterns separately for IWMMXT and Neon.
  
  (define_expand "sub<mode>3"
!   [(set (match_operand:VALL 0 "s_register_operand")
!         (minus:VALL (match_operand:VALL 1 "s_register_operand")
!                     (match_operand:VALL 2 "s_register_operand")))]
!   "(TARGET_NEON && ((<MODE>mode != V2SFmode && <MODE>mode != V4SFmode)
! 		    || flag_unsafe_math_optimizations))
!    || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (<MODE>mode))"
! {
! })
  
  (define_expand "mul<mode>3"
!   [(set (match_operand:VALLW 0 "s_register_operand")
!         (mult:VALLW (match_operand:VALLW 1 "s_register_operand")
! 		    (match_operand:VALLW 2 "s_register_operand")))]
!   "(TARGET_NEON && ((<MODE>mode != V2SFmode && <MODE>mode != V4SFmode)
! 		    || flag_unsafe_math_optimizations))
!    || (<MODE>mode == V4HImode && TARGET_REALLY_IWMMXT)"
! {
! })
  
  (define_expand "smin<mode>3"
    [(set (match_operand:VALLW 0 "s_register_operand")
  	(smin:VALLW (match_operand:VALLW 1 "s_register_operand")
  		    (match_operand:VALLW 2 "s_register_operand")))]
!   "(TARGET_NEON && ((<MODE>mode != V2SFmode && <MODE>mode != V4SFmode)
! 		    || flag_unsafe_math_optimizations))
!    || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (<MODE>mode))"
! {
! })
  
  (define_expand "umin<mode>3"
    [(set (match_operand:VINTW 0 "s_register_operand")
  	(umin:VINTW (match_operand:VINTW 1 "s_register_operand")
  		    (match_operand:VINTW 2 "s_register_operand")))]
!   "TARGET_NEON
!    || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (<MODE>mode))"
! {
! })
  
  (define_expand "smax<mode>3"
    [(set (match_operand:VALLW 0 "s_register_operand")
  	(smax:VALLW (match_operand:VALLW 1 "s_register_operand")
  		    (match_operand:VALLW 2 "s_register_operand")))]
!   "(TARGET_NEON && ((<MODE>mode != V2SFmode && <MODE>mode != V4SFmode)
! 		    || flag_unsafe_math_optimizations))
!    || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (<MODE>mode))"
! {
! })
  
  (define_expand "umax<mode>3"
    [(set (match_operand:VINTW 0 "s_register_operand")
  	(umax:VINTW (match_operand:VINTW 1 "s_register_operand")
  		    (match_operand:VINTW 2 "s_register_operand")))]
!   "TARGET_NEON
!    || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (<MODE>mode))"
! {
! })
  
  (define_expand "vec_perm<mode>"
    [(match_operand:VE 0 "s_register_operand")
--- 86,141 ----
  ;; patterns separately for Neon, IWMMXT and MVE.
  
  (define_expand "add<mode>3"
!   [(set (match_operand:VDQ 0 "s_register_operand")
! 	(plus:VDQ (match_operand:VDQ 1 "s_register_operand")
! 		  (match_operand:VDQ 2 "s_register_operand")))]
!   "ARM_HAVE_<MODE>_ARITH"
! )
  
  (define_expand "sub<mode>3"
!   [(set (match_operand:VDQ 0 "s_register_operand")
! 	(minus:VDQ (match_operand:VDQ 1 "s_register_operand")
! 		   (match_operand:VDQ 2 "s_register_operand")))]
!   "ARM_HAVE_<MODE>_ARITH"
! )
  
  (define_expand "mul<mode>3"
!   [(set (match_operand:VDQWH 0 "s_register_operand")
! 	(mult:VDQWH (match_operand:VDQWH 1 "s_register_operand")
! 		    (match_operand:VDQWH 2 "s_register_operand")))]
!   "ARM_HAVE_<MODE>_ARITH
!    && (!TARGET_REALLY_IWMMXT
!        || <MODE>mode == V4HImode
!        || <MODE>mode == V2SImode)"
! )
  
  (define_expand "smin<mode>3"
    [(set (match_operand:VALLW 0 "s_register_operand")
  	(smin:VALLW (match_operand:VALLW 1 "s_register_operand")
  		    (match_operand:VALLW 2 "s_register_operand")))]
!    "ARM_HAVE_<MODE>_ARITH"
! )
  
  (define_expand "umin<mode>3"
    [(set (match_operand:VINTW 0 "s_register_operand")
  	(umin:VINTW (match_operand:VINTW 1 "s_register_operand")
  		    (match_operand:VINTW 2 "s_register_operand")))]
!    "ARM_HAVE_<MODE>_ARITH"
! )
  
  (define_expand "smax<mode>3"
    [(set (match_operand:VALLW 0 "s_register_operand")
  	(smax:VALLW (match_operand:VALLW 1 "s_register_operand")
  		    (match_operand:VALLW 2 "s_register_operand")))]
!    "ARM_HAVE_<MODE>_ARITH"
! )
  
  (define_expand "umax<mode>3"
    [(set (match_operand:VINTW 0 "s_register_operand")
  	(umax:VINTW (match_operand:VINTW 1 "s_register_operand")
  		    (match_operand:VINTW 2 "s_register_operand")))]
!    "ARM_HAVE_<MODE>_ARITH"
! )
  
  (define_expand "vec_perm<mode>"
    [(match_operand:VE 0 "s_register_operand")
***************
*** 228,230 ****
--- 180,364 ----
  					       GEN_INT (elem), operands[0]));
    DONE;
  })
+ 
+ (define_expand "and<mode>3"
+   [(set (match_operand:VDQ 0 "s_register_operand" "")
+ 	(and:VDQ (match_operand:VDQ 1 "s_register_operand" "")
+ 		 (match_operand:VDQ 2 "neon_inv_logic_op2" "")))]
+   "ARM_HAVE_<MODE>_ARITH"
+ )
+ 
+ (define_expand "ior<mode>3"
+   [(set (match_operand:VDQ 0 "s_register_operand" "")
+ 	(ior:VDQ (match_operand:VDQ 1 "s_register_operand" "")
+ 		 (match_operand:VDQ 2 "neon_logic_op2" "")))]
+   "ARM_HAVE_<MODE>_ARITH"
+ )
+ 
+ (define_expand "xor<mode>3"
+   [(set (match_operand:VDQ 0 "s_register_operand" "")
+ 	(xor:VDQ (match_operand:VDQ 1 "s_register_operand" "")
+ 		 (match_operand:VDQ 2 "s_register_operand" "")))]
+   "ARM_HAVE_<MODE>_ARITH"
+ )
+ 
+ (define_expand "one_cmpl<mode>2"
+   [(set (match_operand:VDQ 0 "s_register_operand")
+ 	(not:VDQ (match_operand:VDQ 1 "s_register_operand")))]
+   "ARM_HAVE_<MODE>_ARITH && !TARGET_REALLY_IWMMXT"
+ )
+ 
+ (define_expand "neg<mode>2"
+   [(set (match_operand:VDQWH 0 "s_register_operand" "")
+ 	(neg:VDQWH (match_operand:VDQWH 1 "s_register_operand" "")))]
+   "ARM_HAVE_<MODE>_ARITH && !TARGET_REALLY_IWMMXT"
+ )
+ 
+ (define_expand "cadd<rot><mode>3"
+   [(set (match_operand:VF 0 "register_operand")
+ 	(unspec:VF [(match_operand:VF 1 "register_operand")
+ 		    (match_operand:VF 2 "register_operand")]
+ 		   VCADD))]
+   "(TARGET_COMPLEX || (TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT
+ 		      && ARM_HAVE_<MODE>_ARITH)) && !BYTES_BIG_ENDIAN"
+ )
+ 
+ ;; The complex mul operations always need to expand to two instructions.
+ ;; The first operation does half the computation and the second does the
+ ;; remainder.  Because of this, expand early.
+ (define_expand "cmul<conj_op><mode>3"
+   [(set (match_operand:VQ_HSF 0 "register_operand")
+         (unspec:VQ_HSF [(match_operand:VQ_HSF 1 "register_operand")
+ 			(match_operand:VQ_HSF 2 "register_operand")]
+ 		       VCMUL_OP))]
+   "(TARGET_COMPLEX || (TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT))
+    && !BYTES_BIG_ENDIAN"
+ {
+   rtx res1 = gen_reg_rtx (<MODE>mode);
+   if (TARGET_COMPLEX)
+     {
+       rtx tmp = force_reg (<MODE>mode, CONST0_RTX (<MODE>mode));
+       emit_insn (gen_arm_vcmla<rotsplit1><mode> (res1, tmp,
+ 						 operands[2], operands[1]));
+     }
+   else
+     emit_insn (gen_arm_vcmla<rotsplit1><mode> (res1, CONST0_RTX (<MODE>mode),
+ 					       operands[2], operands[1]));
+ 
+   emit_insn (gen_arm_vcmla<rotsplit2><mode> (operands[0], res1,
+ 					     operands[2], operands[1]));
+   DONE;
+ })
+ 
+ (define_expand "arm_vcmla<rot><mode>"
+   [(set (match_operand:VF 0 "register_operand")
+ 	(plus:VF (match_operand:VF 1 "register_operand")
+ 		 (unspec:VF [(match_operand:VF 2 "register_operand")
+ 			     (match_operand:VF 3 "register_operand")]
+ 			     VCMLA)))]
+   "(TARGET_COMPLEX || (TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT
+ 		      && ARM_HAVE_<MODE>_ARITH)) && !BYTES_BIG_ENDIAN"
+ )
+ 
+ ;; The complex mla/mls operations always need to expand to two instructions.
+ ;; The first operation does half the computation and the second does the
+ ;; remainder.  Because of this, expand early.
+ (define_expand "cml<fcmac1><conj_op><mode>4"
+   [(set (match_operand:VF 0 "register_operand")
+ 	(plus:VF (match_operand:VF 1 "register_operand")
+ 		 (unspec:VF [(match_operand:VF 2 "register_operand")
+ 			     (match_operand:VF 3 "register_operand")]
+ 			    VCMLA_OP)))]
+   "(TARGET_COMPLEX || (TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT
+ 		      && ARM_HAVE_<MODE>_ARITH)) && !BYTES_BIG_ENDIAN"
+ {
+   rtx tmp = gen_reg_rtx (<MODE>mode);
+   emit_insn (gen_arm_vcmla<rotsplit1><mode> (tmp, operands[1],
+ 					     operands[3], operands[2]));
+   emit_insn (gen_arm_vcmla<rotsplit2><mode> (operands[0], tmp,
+ 					     operands[3], operands[2]));
+   DONE;
+ })
+ 
+ (define_expand "movmisalign<mode>"
+  [(set (match_operand:VDQX 0 "neon_perm_struct_or_reg_operand")
+ 	(unspec:VDQX [(match_operand:VDQX 1 "neon_perm_struct_or_reg_operand")]
+ 	 UNSPEC_MISALIGNED_ACCESS))]
+  "ARM_HAVE_<MODE>_LDST && !BYTES_BIG_ENDIAN
+   && unaligned_access && !TARGET_REALLY_IWMMXT"
+ {
+  rtx adjust_mem;
+  /* This pattern is not permitted to fail during expansion: if both arguments
+     are non-registers (e.g. memory := constant, which can be created by the
+     auto-vectorizer), force operand 1 into a register.  */
+  if (!s_register_operand (operands[0], <MODE>mode)
+      && !s_register_operand (operands[1], <MODE>mode))
+    operands[1] = force_reg (<MODE>mode, operands[1]);
+ 
+  if (s_register_operand (operands[0], <MODE>mode))
+    adjust_mem = operands[1];
+  else
+    adjust_mem = operands[0];
+ 
+  /* Legitimize address.  */
+  if (!neon_vector_mem_operand (adjust_mem, 2, true))
+    XEXP (adjust_mem, 0) = force_reg (Pmode, XEXP (adjust_mem, 0));
+ })
+ 
+ (define_insn "mve_vshlq_<supf><mode>"
+   [(set (match_operand:VDQIW 0 "s_register_operand" "=w,w")
+ 	(unspec:VDQIW [(match_operand:VDQIW 1 "s_register_operand" "w,w")
+ 		       (match_operand:VDQIW 2 "imm_lshift_or_reg_neon" "w,Ds")]
+ 	 VSHLQ))]
+   "ARM_HAVE_<MODE>_ARITH && !TARGET_REALLY_IWMMXT"
+   "@
+    vshl.<supf>%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2
+    * return neon_output_shift_immediate (\"vshl\", 'i', &operands[2], <MODE>mode, VALID_NEON_QREG_MODE (<MODE>mode), true);"
+   [(set_attr "type" "neon_shift_reg<q>, neon_shift_imm<q>")]
+ )
+ 
+ (define_expand "vashl<mode>3"
+   [(set (match_operand:VDQIW 0 "s_register_operand" "")
+ 	(ashift:VDQIW (match_operand:VDQIW 1 "s_register_operand" "")
+ 		      (match_operand:VDQIW 2 "imm_lshift_or_reg_neon" "")))]
+   "ARM_HAVE_<MODE>_ARITH && !TARGET_REALLY_IWMMXT"
+ {
+   emit_insn (gen_mve_vshlq_u<mode> (operands[0], operands[1], operands[2]));
+   DONE;
+ })
+ 
+ ;; When operand 2 is an immediate, use the normal expansion to match
+ ;; gen_vashr<mode>3_imm for Neon and gen_mve_vshrq_n_s<mode>_imm for
+ ;; MVE.
+ (define_expand "vashr<mode>3"
+   [(set (match_operand:VDQIW 0 "s_register_operand")
+ 	(ashiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand")
+ 			(match_operand:VDQIW 2 "imm_rshift_or_reg_neon")))]
+   "ARM_HAVE_<MODE>_ARITH && !TARGET_REALLY_IWMMXT"
+ {
+   if (s_register_operand (operands[2], <MODE>mode))
+     {
+       rtx neg = gen_reg_rtx (<MODE>mode);
+       emit_insn (gen_neg<mode>2 (neg, operands[2]));
+       emit_insn (gen_mve_vshlq_s<mode> (operands[0], operands[1], neg));
+       DONE;
+     }
+ })
+ 
+ ;; When operand 2 is an immediate, use the normal expansion to match
+ ;; gen_vashr<mode>3_imm for Neon and gen_mve_vshrq_n_u<mode>_imm for
+ ;; MVE.
+ (define_expand "vlshr<mode>3"
+   [(set (match_operand:VDQIW 0 "s_register_operand")
+ 	(lshiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand")
+ 			(match_operand:VDQIW 2 "imm_rshift_or_reg_neon")))]
+   "ARM_HAVE_<MODE>_ARITH && !TARGET_REALLY_IWMMXT"
+ {
+   if (s_register_operand (operands[2], <MODE>mode))
+     {
+       rtx neg = gen_reg_rtx (<MODE>mode);
+       emit_insn (gen_neg<mode>2 (neg, operands[2]));
+       emit_insn (gen_mve_vshlq_u<mode> (operands[0], operands[1], neg));
+       DONE;
+     }
+ })
diff -Nrcpad gcc-10.3.0/gcc/config/arm/vfp.md gcc-11.1.0/gcc/config/arm/vfp.md
*** gcc-10.3.0/gcc/config/arm/vfp.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/vfp.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM VFP instruction patterns
! ;; Copyright (C) 2003-2020 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM VFP instruction patterns
! ;; Copyright (C) 2003-2021 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/vfp11.md gcc-11.1.0/gcc/config/arm/vfp11.md
*** gcc-10.3.0/gcc/config/arm/vfp11.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/vfp11.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; ARM VFP11 pipeline description
! ;; Copyright (C) 2003-2020 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM VFP11 pipeline description
! ;; Copyright (C) 2003-2021 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/vxworks.h gcc-11.1.0/gcc/config/arm/vxworks.h
*** gcc-10.3.0/gcc/config/arm/vxworks.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/vxworks.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Definitions of target machine for GCC,
     for ARM with targeting the VXWorks run time environment. 
!    Copyright (C) 1999-2020 Free Software Foundation, Inc.
  
     Contributed by: Mike Stump <mrs@wrs.com>
     Brought up to date by CodeSourcery, LLC.
--- 1,6 ----
  /* Definitions of target machine for GCC,
     for ARM with targeting the VXWorks run time environment. 
!    Copyright (C) 1999-2021 Free Software Foundation, Inc.
  
     Contributed by: Mike Stump <mrs@wrs.com>
     Brought up to date by CodeSourcery, LLC.
*************** see the files COPYING3 and COPYING.RUNTI
*** 44,50 ****
  							\
      if (arm_arch_xscale)				\
        builtin_define ("_VX_CPU=XSCALE");		\
!     if (arm_arch8)					\
        builtin_define ("_VX_CPU=ARMARCH8A");		\
      else if (arm_arch7)					\
        {							\
--- 44,50 ----
  							\
      if (arm_arch_xscale)				\
        builtin_define ("_VX_CPU=XSCALE");		\
!     else if (arm_arch8)					\
        builtin_define ("_VX_CPU=ARMARCH8A");		\
      else if (arm_arch7)					\
        {							\
diff -Nrcpad gcc-10.3.0/gcc/config/arm/vxworks.opt gcc-11.1.0/gcc/config/arm/vxworks.opt
*** gcc-10.3.0/gcc/config/arm/vxworks.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/vxworks.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; ARM VxWorks options.
  
! ; Copyright (C) 2011-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; ARM VxWorks options.
  
! ; Copyright (C) 2011-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-10.3.0/gcc/config/arm/xgene1.md gcc-11.1.0/gcc/config/arm/xgene1.md
*** gcc-10.3.0/gcc/config/arm/xgene1.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/arm/xgene1.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description for AppliedMicro xgene1 core.
! ;; Copyright (C) 2012-2020 Free Software Foundation, Inc.
  ;; Contributed by Theobroma Systems Design und Consulting GmbH.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AppliedMicro xgene1 core.
! ;; Copyright (C) 2012-2021 Free Software Foundation, Inc.
  ;; Contributed by Theobroma Systems Design und Consulting GmbH.
  ;;
  ;; This file is part of GCC.
***************
*** 132,138 ****
  
  (define_insn_reservation "xgene1_alu" 1
    (and (eq_attr "tune" "xgene1")
!        (eq_attr "type" "alu_imm,alu_sreg,alu_shift_imm,\
                          alu_ext,adc_reg,logic_imm,\
                          logic_reg,logic_shift_imm,clz,\
                          rbit,adr,mov_reg,shift_imm,\
--- 132,138 ----
  
  (define_insn_reservation "xgene1_alu" 1
    (and (eq_attr "tune" "xgene1")
!        (eq_attr "type" "alu_imm,alu_sreg,alu_shift_imm_lsl_1to4,alu_shift_imm_other,\
                          alu_ext,adc_reg,logic_imm,\
                          logic_reg,logic_shift_imm,clz,\
                          rbit,adr,mov_reg,shift_imm,\
diff -Nrcpad gcc-10.3.0/gcc/config/avr/avr-arch.h gcc-11.1.0/gcc/config/avr/avr-arch.h
*** gcc-10.3.0/gcc/config/avr/avr-arch.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/avr-arch.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Definitions of types that are used to store AVR architecture and
     device information.
!    Copyright (C) 2012-2020 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of types that are used to store AVR architecture and
     device information.
!    Copyright (C) 2012-2021 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/avr/avr-c.c gcc-11.1.0/gcc/config/avr/avr-c.c
*** gcc-10.3.0/gcc/config/avr/avr-c.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/avr-c.c	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2009-2020 Free Software Foundation, Inc.
     Contributed by Anatoly Sokolov (aesok@post.ru)
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2009-2021 Free Software Foundation, Inc.
     Contributed by Anatoly Sokolov (aesok@post.ru)
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/avr/avr-devices.c gcc-11.1.0/gcc/config/avr/avr-devices.c
*** gcc-10.3.0/gcc/config/avr/avr-devices.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/avr-devices.c	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2009-2020 Free Software Foundation, Inc.
     Contributed by Anatoly Sokolov (aesok@post.ru)
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2009-2021 Free Software Foundation, Inc.
     Contributed by Anatoly Sokolov (aesok@post.ru)
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/avr/avr-dimode.md gcc-11.1.0/gcc/config/avr/avr-dimode.md
*** gcc-10.3.0/gcc/config/avr/avr-dimode.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/avr-dimode.md	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ;;   Machine description for GNU compiler,
  ;;   for Atmel AVR micro controllers.
! ;;   Copyright (C) 1998-2020 Free Software Foundation, Inc.
  ;;   Contributed by Georg Lay (avr@gjlay.de)
  ;;
  ;; This file is part of GCC.
--- 1,6 ----
  ;;   Machine description for GNU compiler,
  ;;   for Atmel AVR micro controllers.
! ;;   Copyright (C) 1998-2021 Free Software Foundation, Inc.
  ;;   Contributed by Georg Lay (avr@gjlay.de)
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/avr/avr-fixed.md gcc-11.1.0/gcc/config/avr/avr-fixed.md
*** gcc-10.3.0/gcc/config/avr/avr-fixed.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/avr-fixed.md	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ;;   This file contains instructions that support fixed-point operations
  ;;   for Atmel AVR micro controllers.
! ;;   Copyright (C) 2012-2020 Free Software Foundation, Inc.
  ;;
  ;;   Contributed by Sean D'Epagnier  (sean@depagnier.com)
  ;;                  Georg-Johann Lay (avr@gjlay.de)
--- 1,6 ----
  ;;   This file contains instructions that support fixed-point operations
  ;;   for Atmel AVR micro controllers.
! ;;   Copyright (C) 2012-2021 Free Software Foundation, Inc.
  ;;
  ;;   Contributed by Sean D'Epagnier  (sean@depagnier.com)
  ;;                  Georg-Johann Lay (avr@gjlay.de)
diff -Nrcpad gcc-10.3.0/gcc/config/avr/avr-log.c gcc-11.1.0/gcc/config/avr/avr-log.c
*** gcc-10.3.0/gcc/config/avr/avr-log.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/avr-log.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines for log output for Atmel AVR back end.
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
     This file is part of GCC.
--- 1,5 ----
  /* Subroutines for log output for Atmel AVR back end.
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/avr/avr-mcus.def gcc-11.1.0/gcc/config/avr/avr-mcus.def
*** gcc-10.3.0/gcc/config/avr/avr-mcus.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/avr-mcus.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* AVR MCUs.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* AVR MCUs.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/avr/avr-modes.def gcc-11.1.0/gcc/config/avr/avr-modes.def
*** gcc-10.3.0/gcc/config/avr/avr-modes.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/avr-modes.def	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2012-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2012-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/avr/avr-passes.def gcc-11.1.0/gcc/config/avr/avr-passes.def
*** gcc-10.3.0/gcc/config/avr/avr-passes.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/avr-passes.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Description of target passes for AVR.
!    Copyright (C) 2016-2020 Free Software Foundation, Inc. */
  
  /* This file is part of GCC.
  
--- 1,5 ----
  /* Description of target passes for AVR.
!    Copyright (C) 2016-2021 Free Software Foundation, Inc. */
  
  /* This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/avr/avr-protos.h gcc-11.1.0/gcc/config/avr/avr-protos.h
*** gcc-10.3.0/gcc/config/avr/avr-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/avr-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Prototypes for exported functions defined in avr.c
     
!    Copyright (C) 2000-2020 Free Software Foundation, Inc.
     Contributed by Denis Chertykov (chertykov@gmail.com)
  
     This file is part of GCC.
--- 1,6 ----
  /* Prototypes for exported functions defined in avr.c
     
!    Copyright (C) 2000-2021 Free Software Foundation, Inc.
     Contributed by Denis Chertykov (chertykov@gmail.com)
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/avr/avr-stdint.h gcc-11.1.0/gcc/config/avr/avr-stdint.h
*** gcc-10.3.0/gcc/config/avr/avr-stdint.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/avr-stdint.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for <stdint.h> types on systems using newlib.
!    Copyright (C) 2012-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for <stdint.h> types on systems using newlib.
!    Copyright (C) 2012-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/avr/avr.c gcc-11.1.0/gcc/config/avr/avr.c
*** gcc-10.3.0/gcc/config/avr/avr.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/avr.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines for insn-output.c for ATMEL AVR micro controllers
!    Copyright (C) 1998-2020 Free Software Foundation, Inc.
     Contributed by Denis Chertykov (chertykov@gmail.com)
  
     This file is part of GCC.
--- 1,5 ----
  /* Subroutines for insn-output.c for ATMEL AVR micro controllers
!    Copyright (C) 1998-2021 Free Software Foundation, Inc.
     Contributed by Denis Chertykov (chertykov@gmail.com)
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/avr/avr.h gcc-11.1.0/gcc/config/avr/avr.h
*** gcc-10.3.0/gcc/config/avr/avr.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/avr.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler,
     for ATMEL AVR at90s8515, ATmega103/103L, ATmega603/603L microcontrollers.
!    Copyright (C) 1998-2020 Free Software Foundation, Inc.
     Contributed by Denis Chertykov (chertykov@gmail.com)
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler,
     for ATMEL AVR at90s8515, ATmega103/103L, ATmega603/603L microcontrollers.
!    Copyright (C) 1998-2021 Free Software Foundation, Inc.
     Contributed by Denis Chertykov (chertykov@gmail.com)
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/avr/avr.md gcc-11.1.0/gcc/config/avr/avr.md
*** gcc-10.3.0/gcc/config/avr/avr.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/avr.md	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ;;   Machine description for GNU compiler,
  ;;   for ATMEL AVR micro controllers.
! ;;   Copyright (C) 1998-2020 Free Software Foundation, Inc.
  ;;   Contributed by Denis Chertykov (chertykov@gmail.com)
  
  ;; This file is part of GCC.
--- 1,6 ----
  ;;   Machine description for GNU compiler,
  ;;   for ATMEL AVR micro controllers.
! ;;   Copyright (C) 1998-2021 Free Software Foundation, Inc.
  ;;   Contributed by Denis Chertykov (chertykov@gmail.com)
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/avr/avr.opt gcc-11.1.0/gcc/config/avr/avr.opt
*** gcc-10.3.0/gcc/config/avr/avr.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/avr.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Options for the ATMEL AVR port of the compiler.
  
! ; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the ATMEL AVR port of the compiler.
  
! ; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
***************
*** 19,25 ****
  ; <http://www.gnu.org/licenses/>.
  
  mcall-prologues
! Target Report Mask(CALL_PROLOGUES)
  Use subroutines for function prologues and epilogues.
  
  mmcu=
--- 19,25 ----
  ; <http://www.gnu.org/licenses/>.
  
  mcall-prologues
! Target Mask(CALL_PROLOGUES)
  Use subroutines for function prologues and epilogues.
  
  mmcu=
*************** Target RejectNegative Joined Var(avr_mmc
*** 27,33 ****
  -mmcu=MCU	Select the target MCU.
  
  mgas-isr-prologues
! Target Report Var(avr_gasisr_prologues) UInteger Init(0)
  Allow usage of __gcc_isr pseudo instructions in ISR prologues and epilogues.
  
  mn-flash=
--- 27,33 ----
  -mmcu=MCU	Select the target MCU.
  
  mgas-isr-prologues
! Target Var(avr_gasisr_prologues) UInteger Init(0)
  Allow usage of __gcc_isr pseudo instructions in ISR prologues and epilogues.
  
  mn-flash=
*************** Target RejectNegative Joined Var(avr_n_f
*** 35,134 ****
  Set the number of 64 KiB flash segments.
  
  mskip-bug
! Target Report Mask(SKIP_BUG)
  Indicate presence of a processor erratum.
  
  mrmw
! Target Report Mask(RMW)
  Enable Read-Modify-Write (RMW) instructions support/use.
  
  mdeb
! Target Report Undocumented Mask(ALL_DEBUG)
  
  mlog=
  Target RejectNegative Joined Undocumented Var(avr_log_details)
  
  mshort-calls
! Target Report RejectNegative Mask(SHORT_CALLS)
  Use RJMP / RCALL even though CALL / JMP are available.
  
  mint8
! Target Report Mask(INT8)
  Use an 8-bit 'int' type.
  
  mno-interrupts
! Target Report RejectNegative Mask(NO_INTERRUPTS)
  Change the stack pointer without disabling interrupts.
  
  mbranch-cost=
! Target Report Joined RejectNegative UInteger Var(avr_branch_cost) Init(0)
  Set the branch costs for conditional branch instructions.  Reasonable values are small, non-negative integers.  The default branch cost is 0.
  
  mmain-is-OS_task
! Target Report Mask(MAIN_IS_OS_TASK)
  Treat main as if it had attribute OS_task.
  
  morder1
! Target Report Undocumented Mask(ORDER_1)
  
  morder2
! Target Report Undocumented Mask(ORDER_2)
  
  mtiny-stack
! Target Report Mask(TINY_STACK)
  Change only the low 8 bits of the stack pointer.
  
  mrelax
! Target Report
  Relax branches.
  
  mpmem-wrap-around
! Target Report
  Make the linker relaxation machine assume that a program counter wrap-around occurs.
  
  maccumulate-args
! Target Report Mask(ACCUMULATE_OUTGOING_ARGS)
  Accumulate outgoing function arguments and acquire/release the needed stack space for outgoing function arguments in function prologue/epilogue.  Without this option, outgoing arguments are pushed before calling a function and popped afterwards.  This option can lead to reduced code size for functions that call many functions that get their arguments on the stack like, for example printf.
  
  mstrict-X
! Target Report Var(avr_strict_X) Init(0)
  When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register.  Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X.
  
  ;; For rationale behind -msp8 see explanation in avr.h.
  msp8
! Target Report RejectNegative Var(avr_sp8) Init(0)
  The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU.
  
  Waddr-space-convert
! Warning C Report Var(avr_warn_addr_space_convert) Init(0)
  Warn if the address space of an address is changed.
  
  Wmisspelled-isr
! Warning C C++ Report Var(avr_warn_misspelled_isr) Init(1)
  Warn if the ISR is misspelled, i.e. without __vector prefix. Enabled by default.
  
  mfract-convert-truncate
! Target Report Mask(FRACT_CONV_TRUNC)
  Allow to use truncation instead of rounding towards zero for fractional fixed-point types.
  
  mabsdata
! Target Report Mask(ABSDATA)
  Assume that all data in static storage can be accessed by LDS / STS.  This option is only useful for reduced Tiny devices.
  
  mdouble=
! Target Report Joined RejectNegative Var(avr_double) Init(0) Enum(avr_bits_e)
  -mdouble=<BITS>	Use <BITS> bits wide double type.
  
  mlong-double=
! Target Report Joined RejectNegative Var(avr_long_double) Init(0) Enum(avr_bits_e)
  -mlong-double=<BITS>	Use <BITS> bits wide long double type.
  
  nodevicelib
! Driver Target Report RejectNegative
  Do not link against the device-specific library lib<MCU>.a.
  
  nodevicespecs
! Driver Target Report RejectNegative
  Do not use the device-specific specs file device-specs/specs-<MCU>.
  
  Enum
--- 35,134 ----
  Set the number of 64 KiB flash segments.
  
  mskip-bug
! Target Mask(SKIP_BUG)
  Indicate presence of a processor erratum.
  
  mrmw
! Target Mask(RMW)
  Enable Read-Modify-Write (RMW) instructions support/use.
  
  mdeb
! Target Undocumented Mask(ALL_DEBUG)
  
  mlog=
  Target RejectNegative Joined Undocumented Var(avr_log_details)
  
  mshort-calls
! Target RejectNegative Mask(SHORT_CALLS)
  Use RJMP / RCALL even though CALL / JMP are available.
  
  mint8
! Target Mask(INT8)
  Use an 8-bit 'int' type.
  
  mno-interrupts
! Target RejectNegative Mask(NO_INTERRUPTS)
  Change the stack pointer without disabling interrupts.
  
  mbranch-cost=
! Target Joined RejectNegative UInteger Var(avr_branch_cost) Init(0)
  Set the branch costs for conditional branch instructions.  Reasonable values are small, non-negative integers.  The default branch cost is 0.
  
  mmain-is-OS_task
! Target Mask(MAIN_IS_OS_TASK)
  Treat main as if it had attribute OS_task.
  
  morder1
! Target Undocumented Mask(ORDER_1)
  
  morder2
! Target Undocumented Mask(ORDER_2)
  
  mtiny-stack
! Target Mask(TINY_STACK)
  Change only the low 8 bits of the stack pointer.
  
  mrelax
! Target
  Relax branches.
  
  mpmem-wrap-around
! Target
  Make the linker relaxation machine assume that a program counter wrap-around occurs.
  
  maccumulate-args
! Target Mask(ACCUMULATE_OUTGOING_ARGS)
  Accumulate outgoing function arguments and acquire/release the needed stack space for outgoing function arguments in function prologue/epilogue.  Without this option, outgoing arguments are pushed before calling a function and popped afterwards.  This option can lead to reduced code size for functions that call many functions that get their arguments on the stack like, for example printf.
  
  mstrict-X
! Target Var(avr_strict_X) Init(0)
  When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register.  Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X.
  
  ;; For rationale behind -msp8 see explanation in avr.h.
  msp8
! Target RejectNegative Var(avr_sp8) Init(0)
  The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU.
  
  Waddr-space-convert
! Warning C Var(avr_warn_addr_space_convert) Init(0)
  Warn if the address space of an address is changed.
  
  Wmisspelled-isr
! Warning C C++ Var(avr_warn_misspelled_isr) Init(1)
  Warn if the ISR is misspelled, i.e. without __vector prefix. Enabled by default.
  
  mfract-convert-truncate
! Target Mask(FRACT_CONV_TRUNC)
  Allow to use truncation instead of rounding towards zero for fractional fixed-point types.
  
  mabsdata
! Target Mask(ABSDATA)
  Assume that all data in static storage can be accessed by LDS / STS.  This option is only useful for reduced Tiny devices.
  
  mdouble=
! Target Joined RejectNegative Var(avr_double) Init(0) Enum(avr_bits_e)
  -mdouble=<BITS>	Use <BITS> bits wide double type.
  
  mlong-double=
! Target Joined RejectNegative Var(avr_long_double) Init(0) Enum(avr_bits_e)
  -mlong-double=<BITS>	Use <BITS> bits wide long double type.
  
  nodevicelib
! Driver Target RejectNegative
  Do not link against the device-specific library lib<MCU>.a.
  
  nodevicespecs
! Driver Target RejectNegative
  Do not use the device-specific specs file device-specs/specs-<MCU>.
  
  Enum
diff -Nrcpad gcc-10.3.0/gcc/config/avr/avrlibc.h gcc-11.1.0/gcc/config/avr/avrlibc.h
*** gcc-10.3.0/gcc/config/avr/avrlibc.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/avrlibc.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Definitions of target machine for the GNU compiler collection
     for Atmel AVR micro controller if configured for AVR-Libc.
!    Copyright (C) 2012-2020 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for the GNU compiler collection
     for Atmel AVR micro controller if configured for AVR-Libc.
!    Copyright (C) 2012-2021 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/avr/builtins.def gcc-11.1.0/gcc/config/avr/builtins.def
*** gcc-10.3.0/gcc/config/avr/builtins.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/builtins.def	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2012-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2012-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/avr/constraints.md gcc-11.1.0/gcc/config/avr/constraints.md
*** gcc-10.3.0/gcc/config/avr/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Constraint definitions for ATMEL AVR micro controllers.
! ;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for ATMEL AVR micro controllers.
! ;; Copyright (C) 2006-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/avr/driver-avr.c gcc-11.1.0/gcc/config/avr/driver-avr.c
*** gcc-10.3.0/gcc/config/avr/driver-avr.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/driver-avr.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay <avr@gjlay.de>
  
  This file is part of GCC.
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay <avr@gjlay.de>
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/avr/elf.h gcc-11.1.0/gcc/config/avr/elf.h
*** gcc-10.3.0/gcc/config/avr/elf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/elf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2011-2020 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2011-2021 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/avr/gen-avr-mmcu-specs.c gcc-11.1.0/gcc/config/avr/gen-avr-mmcu-specs.c
*** gcc-10.3.0/gcc/config/avr/gen-avr-mmcu-specs.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/gen-avr-mmcu-specs.c	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 1998-2020 Free Software Foundation, Inc.
     Contributed by Joern Rennecke
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 1998-2021 Free Software Foundation, Inc.
     Contributed by Joern Rennecke
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/avr/gen-avr-mmcu-texi.c gcc-11.1.0/gcc/config/avr/gen-avr-mmcu-texi.c
*** gcc-10.3.0/gcc/config/avr/gen-avr-mmcu-texi.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/gen-avr-mmcu-texi.c	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2012-2020 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2012-2021 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
     This file is part of GCC.
*************** int main (void)
*** 160,166 ****
    size_t i, n_mcus = 0;
    const avr_mcu_t *mcu;
  
!   printf ("@c Copyright (C) 2012-2020 Free Software Foundation, Inc.\n");
    printf ("@c This is part of the GCC manual.\n");
    printf ("@c For copying conditions, see the file "
  	  "gcc/doc/include/fdl.texi.\n\n");
--- 160,166 ----
    size_t i, n_mcus = 0;
    const avr_mcu_t *mcu;
  
!   printf ("@c Copyright (C) 2012-2021 Free Software Foundation, Inc.\n");
    printf ("@c This is part of the GCC manual.\n");
    printf ("@c For copying conditions, see the file "
  	  "gcc/doc/include/fdl.texi.\n\n");
diff -Nrcpad gcc-10.3.0/gcc/config/avr/genmultilib.awk gcc-11.1.0/gcc/config/avr/genmultilib.awk
*** gcc-10.3.0/gcc/config/avr/genmultilib.awk	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/genmultilib.awk	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2011-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2011-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/avr/predicates.md gcc-11.1.0/gcc/config/avr/predicates.md
*** gcc-10.3.0/gcc/config/avr/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/predicates.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Predicate definitions for ATMEL AVR micro controllers.
! ;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for ATMEL AVR micro controllers.
! ;; Copyright (C) 2006-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/avr/specs.h gcc-11.1.0/gcc/config/avr/specs.h
*** gcc-10.3.0/gcc/config/avr/specs.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/specs.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Specs definitions for Atmel AVR back end.
  
!    Copyright (C) 2012-2020 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
  This file is part of GCC.
--- 1,6 ----
  /* Specs definitions for Atmel AVR back end.
  
!    Copyright (C) 2012-2021 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/avr/stdfix.h gcc-11.1.0/gcc/config/avr/stdfix.h
*** gcc-10.3.0/gcc/config/avr/stdfix.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/stdfix.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2007-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2007-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/avr/t-avr gcc-11.1.0/gcc/config/avr/t-avr
*** gcc-10.3.0/gcc/config/avr/t-avr	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/avr/t-avr	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2000-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2000-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/bfin-modes.def gcc-11.1.0/gcc/config/bfin/bfin-modes.def
*** gcc-10.3.0/gcc/config/bfin/bfin-modes.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/bfin-modes.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for Blackfin.
!    Copyright (C) 2005-2020 Free Software Foundation, Inc.
     Contributed by Analog Devices.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for Blackfin.
!    Copyright (C) 2005-2021 Free Software Foundation, Inc.
     Contributed by Analog Devices.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/bfin-opts.h gcc-11.1.0/gcc/config/bfin/bfin-opts.h
*** gcc-10.3.0/gcc/config/bfin/bfin-opts.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/bfin-opts.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for the Blackfin port needed for option handling.
!    Copyright (C) 2005-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for the Blackfin port needed for option handling.
!    Copyright (C) 2005-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/bfin-protos.h gcc-11.1.0/gcc/config/bfin/bfin-protos.h
*** gcc-10.3.0/gcc/config/bfin/bfin-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/bfin-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Prototypes for Blackfin functions used in the md file & elsewhere.
!    Copyright (C) 2005-2020 Free Software Foundation, Inc.
  
     This file is part of GNU CC.
  
--- 1,5 ----
  /* Prototypes for Blackfin functions used in the md file & elsewhere.
!    Copyright (C) 2005-2021 Free Software Foundation, Inc.
  
     This file is part of GNU CC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/bfin.c gcc-11.1.0/gcc/config/bfin/bfin.c
*** gcc-10.3.0/gcc/config/bfin/bfin.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/bfin.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* The Blackfin code generation auxiliary output file.
!    Copyright (C) 2005-2020 Free Software Foundation, Inc.
     Contributed by Analog Devices.
  
     This file is part of GCC.
--- 1,5 ----
  /* The Blackfin code generation auxiliary output file.
!    Copyright (C) 2005-2021 Free Software Foundation, Inc.
     Contributed by Analog Devices.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/bfin.h gcc-11.1.0/gcc/config/bfin/bfin.h
*** gcc-10.3.0/gcc/config/bfin/bfin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/bfin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for the Blackfin port.
!    Copyright (C) 2005-2020 Free Software Foundation, Inc.
     Contributed by Analog Devices.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for the Blackfin port.
!    Copyright (C) 2005-2021 Free Software Foundation, Inc.
     Contributed by Analog Devices.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/bfin.md gcc-11.1.0/gcc/config/bfin/bfin.md
*** gcc-10.3.0/gcc/config/bfin/bfin.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/bfin.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;;- Machine description for Blackfin for GNU compiler
! ;;  Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;;  Contributed by Analog Devices.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;- Machine description for Blackfin for GNU compiler
! ;;  Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;;  Contributed by Analog Devices.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/bfin.opt gcc-11.1.0/gcc/config/bfin/bfin.opt
*** gcc-10.3.0/gcc/config/bfin/bfin.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/bfin.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Options for the Blackfin port of the compiler
  ;
! ; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the Blackfin port of the compiler
  ;
! ; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** Target RejectNegative Joined
*** 44,71 ****
  Specify the name of the target CPU.
  
  momit-leaf-frame-pointer
! Target Report Mask(OMIT_LEAF_FRAME_POINTER)
  Omit frame pointer for leaf functions.
  
  mlow64k
! Target Report Mask(LOW_64K)
  Program is entirely located in low 64k of memory.
  
  mcsync-anomaly
! Target Report Var(bfin_csync_anomaly) Init(-1)
  Work around a hardware anomaly by adding a number of NOPs before a
  CSYNC or SSYNC instruction.
  
  mspecld-anomaly
! Target Report Var(bfin_specld_anomaly) Init(-1)
  Avoid speculative loads to work around a hardware anomaly.
  
  mid-shared-library
! Target Report Mask(ID_SHARED_LIBRARY)
  Enabled ID based shared library.
  
  mleaf-id-shared-library
! Target Report Mask(LEAF_ID_SHARED_LIBRARY)
  Generate code that won't be linked against any other ID shared libraries,
  but may be used as a shared library.
  
--- 44,71 ----
  Specify the name of the target CPU.
  
  momit-leaf-frame-pointer
! Target Mask(OMIT_LEAF_FRAME_POINTER)
  Omit frame pointer for leaf functions.
  
  mlow64k
! Target Mask(LOW_64K)
  Program is entirely located in low 64k of memory.
  
  mcsync-anomaly
! Target Var(bfin_csync_anomaly) Init(-1)
  Work around a hardware anomaly by adding a number of NOPs before a
  CSYNC or SSYNC instruction.
  
  mspecld-anomaly
! Target Var(bfin_specld_anomaly) Init(-1)
  Avoid speculative loads to work around a hardware anomaly.
  
  mid-shared-library
! Target Mask(ID_SHARED_LIBRARY)
  Enabled ID based shared library.
  
  mleaf-id-shared-library
! Target Mask(LEAF_ID_SHARED_LIBRARY)
  Generate code that won't be linked against any other ID shared libraries,
  but may be used as a shared library.
  
*************** Target RejectNegative Joined UInteger Va
*** 74,118 ****
  ID of shared library to build.
  
  msep-data
! Target Report Mask(SEP_DATA)
  Enable separate data segment.
  
  mlong-calls
! Target Report Mask(LONG_CALLS)
  Avoid generating pc-relative calls; use indirection.
  
  mfast-fp
! Target Report Mask(FAST_FP)
  Link with the fast floating-point library.
  
  mfdpic
! Target Report Mask(FDPIC)
  Enable Function Descriptor PIC mode.
  
  minline-plt
! Target Report Mask(INLINE_PLT)
  Enable inlining of PLT in function calls.
  
  mstack-check-l1
! Target Report Mask(STACK_CHECK_L1)
  Do stack checking using bounds in L1 scratch memory.
  
  mmulticore
! Target Report Mask(MULTICORE)
  Enable multicore support.
  
  mcorea
! Target Report Mask(COREA)
  Build for Core A.
  
  mcoreb
! Target Report Mask(COREB)
  Build for Core B.
  
  msdram
! Target Report Mask(SDRAM)
  Build for SDRAM.
  
  micplb
! Target Report Mask(ICPLB)
  Assume ICPLBs are enabled at runtime.
--- 74,118 ----
  ID of shared library to build.
  
  msep-data
! Target Mask(SEP_DATA)
  Enable separate data segment.
  
  mlong-calls
! Target Mask(LONG_CALLS)
  Avoid generating pc-relative calls; use indirection.
  
  mfast-fp
! Target Mask(FAST_FP)
  Link with the fast floating-point library.
  
  mfdpic
! Target Mask(FDPIC)
  Enable Function Descriptor PIC mode.
  
  minline-plt
! Target Mask(INLINE_PLT)
  Enable inlining of PLT in function calls.
  
  mstack-check-l1
! Target Mask(STACK_CHECK_L1)
  Do stack checking using bounds in L1 scratch memory.
  
  mmulticore
! Target Mask(MULTICORE)
  Enable multicore support.
  
  mcorea
! Target Mask(COREA)
  Build for Core A.
  
  mcoreb
! Target Mask(COREB)
  Build for Core B.
  
  msdram
! Target Mask(SDRAM)
  Build for SDRAM.
  
  micplb
! Target Mask(ICPLB)
  Assume ICPLBs are enabled at runtime.
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/constraints.md gcc-11.1.0/gcc/config/bfin/constraints.md
*** gcc-10.3.0/gcc/config/bfin/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Constraint definitions for Blackfin
! ;; Copyright (C) 2008-2020 Free Software Foundation, Inc.
  ;; Contributed by Analog Devices
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constraint definitions for Blackfin
! ;; Copyright (C) 2008-2021 Free Software Foundation, Inc.
  ;; Contributed by Analog Devices
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/elf.h gcc-11.1.0/gcc/config/bfin/elf.h
*** gcc-10.3.0/gcc/config/bfin/elf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/elf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2005-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2005-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/linux.h gcc-11.1.0/gcc/config/bfin/linux.h
*** gcc-10.3.0/gcc/config/bfin/linux.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/linux.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2007-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2007-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/predicates.md gcc-11.1.0/gcc/config/bfin/predicates.md
*** gcc-10.3.0/gcc/config/bfin/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/predicates.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Predicate definitions for the Blackfin.
! ;; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;; Contributed by Analog Devices.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicate definitions for the Blackfin.
! ;; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;; Contributed by Analog Devices.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/print-sysroot-suffix.sh gcc-11.1.0/gcc/config/bfin/print-sysroot-suffix.sh
*** gcc-10.3.0/gcc/config/bfin/print-sysroot-suffix.sh	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/print-sysroot-suffix.sh	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  #!/bin/sh
! # Copyright (C) 2007-2020 Free Software Foundation, Inc.
  # This file is part of GCC.
  
  # GCC is free software; you can redistribute it and/or modify
--- 1,5 ----
  #!/bin/sh
! # Copyright (C) 2007-2021 Free Software Foundation, Inc.
  # This file is part of GCC.
  
  # GCC is free software; you can redistribute it and/or modify
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/rtems.h gcc-11.1.0/gcc/config/bfin/rtems.h
*** gcc-10.3.0/gcc/config/bfin/rtems.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/rtems.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for rtems targeting a bfin
!    Copyright (C) 2006-2020 Free Software Foundation, Inc.
     Contributed by Ralf Corsépius (ralf.corsepius@rtems.org).
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for rtems targeting a bfin
!    Copyright (C) 2006-2021 Free Software Foundation, Inc.
     Contributed by Ralf Corsépius (ralf.corsepius@rtems.org).
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/sync.md gcc-11.1.0/gcc/config/bfin/sync.md
*** gcc-10.3.0/gcc/config/bfin/sync.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/sync.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; GCC machine description for Blackfin synchronization instructions.
! ;; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;; Contributed by Analog Devices.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; GCC machine description for Blackfin synchronization instructions.
! ;; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;; Contributed by Analog Devices.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/t-bfin-elf gcc-11.1.0/gcc/config/bfin/t-bfin-elf
*** gcc-10.3.0/gcc/config/bfin/t-bfin-elf	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/t-bfin-elf	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2005-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2005-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/t-bfin-linux gcc-11.1.0/gcc/config/bfin/t-bfin-linux
*** gcc-10.3.0/gcc/config/bfin/t-bfin-linux	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/t-bfin-linux	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2007-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2007-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/t-bfin-uclinux gcc-11.1.0/gcc/config/bfin/t-bfin-uclinux
*** gcc-10.3.0/gcc/config/bfin/t-bfin-uclinux	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/t-bfin-uclinux	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2007-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2007-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/bfin/uclinux.h gcc-11.1.0/gcc/config/bfin/uclinux.h
*** gcc-10.3.0/gcc/config/bfin/uclinux.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bfin/uclinux.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2005-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2005-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/bpf/bpf-helpers.h gcc-11.1.0/gcc/config/bpf/bpf-helpers.h
*** gcc-10.3.0/gcc/config/bpf/bpf-helpers.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bpf/bpf-helpers.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2019-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2019-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/bpf/bpf-opts.h gcc-11.1.0/gcc/config/bpf/bpf-opts.h
*** gcc-10.3.0/gcc/config/bpf/bpf-opts.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bpf/bpf-opts.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for option handling for eBPF.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for option handling for eBPF.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/bpf/bpf-protos.h gcc-11.1.0/gcc/config/bpf/bpf-protos.h
*** gcc-10.3.0/gcc/config/bpf/bpf-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bpf/bpf-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definition of eBPF target for GNU compiler.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definition of eBPF target for GNU compiler.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/bpf/bpf.c gcc-11.1.0/gcc/config/bpf/bpf.c
*** gcc-10.3.0/gcc/config/bpf/bpf.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bpf/bpf.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines used for code generation for eBPF.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines used for code generation for eBPF.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/bpf/bpf.h gcc-11.1.0/gcc/config/bpf/bpf.h
*** gcc-10.3.0/gcc/config/bpf/bpf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bpf/bpf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definition of the eBPF target for GCC.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definition of the eBPF target for GCC.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/bpf/bpf.md gcc-11.1.0/gcc/config/bpf/bpf.md
*** gcc-10.3.0/gcc/config/bpf/bpf.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bpf/bpf.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description for eBPF.
! ;; Copyright (C) 2019-2020 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Machine description for eBPF.
! ;; Copyright (C) 2019-2021 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/bpf/bpf.opt gcc-11.1.0/gcc/config/bpf/bpf.opt
*** gcc-10.3.0/gcc/config/bpf/bpf.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bpf/bpf.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Options for the eBPF compiler port.
  
! ; Copyright (C) 2019-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the eBPF compiler port.
  
! ; Copyright (C) 2019-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** Enum(bpf_kernel) String(5.2) Value(LINUX
*** 111,127 ****
  ; Use xBPF extensions.
  
  mxbpf
! Target Report Mask(XBPF)
  Generate xBPF.
  
  ; Selecting big endian or little endian targets.
  
  mbig-endian
! Target RejectNegative Report Mask(BIG_ENDIAN)
  Generate big-endian eBPF.
  
  mlittle-endian
! Target RejectNegative Report InverseMask(BIG_ENDIAN)
  Generate little-endian eBPF.
  
  mframe-limit=
--- 111,127 ----
  ; Use xBPF extensions.
  
  mxbpf
! Target Mask(XBPF)
  Generate xBPF.
  
  ; Selecting big endian or little endian targets.
  
  mbig-endian
! Target RejectNegative Mask(BIG_ENDIAN)
  Generate big-endian eBPF.
  
  mlittle-endian
! Target RejectNegative InverseMask(BIG_ENDIAN)
  Generate little-endian eBPF.
  
  mframe-limit=
diff -Nrcpad gcc-10.3.0/gcc/config/bpf/constraints.md gcc-11.1.0/gcc/config/bpf/constraints.md
*** gcc-10.3.0/gcc/config/bpf/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bpf/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Constraint definitions for eBPF.
! ;; Copyright (C) 2019-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for eBPF.
! ;; Copyright (C) 2019-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/bpf/predicates.md gcc-11.1.0/gcc/config/bpf/predicates.md
*** gcc-10.3.0/gcc/config/bpf/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/bpf/predicates.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Predicate definitions for eBPF.
! ;; Copyright (C) 2019-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for eBPF.
! ;; Copyright (C) 2019-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/c6x-isas.def gcc-11.1.0/gcc/config/c6x/c6x-isas.def
*** gcc-10.3.0/gcc/config/c6x/c6x-isas.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/c6x-isas.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* C6X ISA names.
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* C6X ISA names.
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/c6x-modes.def gcc-11.1.0/gcc/config/c6x/c6x-modes.def
*** gcc-10.3.0/gcc/config/c6x/c6x-modes.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/c6x-modes.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for TI C6x.
!    Copyright (C) 2010-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for TI C6x.
!    Copyright (C) 2010-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/c6x-mult.md gcc-11.1.0/gcc/config/c6x/c6x-mult.md
*** gcc-10.3.0/gcc/config/c6x/c6x-mult.md	Thu Apr  8 11:57:03 2021
--- gcc-11.1.0/gcc/config/c6x/c6x-mult.md	Tue Apr 27 10:00:33 2021
***************
*** 3,9 ****
  ;; Multiplication patterns for TI C6X.
  ;; This file is processed by genmult.sh to produce two variants of each
  ;; pattern, a normal one and a real_mult variant for modulo scheduling.
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
--- 3,9 ----
  ;; Multiplication patterns for TI C6X.
  ;; This file is processed by genmult.sh to produce two variants of each
  ;; pattern, a normal one and a real_mult variant for modulo scheduling.
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
***************
*** 424,430 ****
  ;; Multiplication patterns for TI C6X.
  ;; This file is processed by genmult.sh to produce two variants of each
  ;; pattern, a normal one and a real_mult variant for modulo scheduling.
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
--- 424,430 ----
  ;; Multiplication patterns for TI C6X.
  ;; This file is processed by genmult.sh to produce two variants of each
  ;; pattern, a normal one and a real_mult variant for modulo scheduling.
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/c6x-mult.md.in gcc-11.1.0/gcc/config/c6x/c6x-mult.md.in
*** gcc-10.3.0/gcc/config/c6x/c6x-mult.md.in	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/c6x-mult.md.in	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  ;; Multiplication patterns for TI C6X.
  ;; This file is processed by genmult.sh to produce two variants of each
  ;; pattern, a normal one and a real_mult variant for modulo scheduling.
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
--- 1,7 ----
  ;; Multiplication patterns for TI C6X.
  ;; This file is processed by genmult.sh to produce two variants of each
  ;; pattern, a normal one and a real_mult variant for modulo scheduling.
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/c6x-opts.h gcc-11.1.0/gcc/config/c6x/c6x-opts.h
*** gcc-10.3.0/gcc/config/c6x/c6x-opts.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/c6x-opts.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for option handling for TI C6X.
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for option handling for TI C6X.
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/c6x-protos.h gcc-11.1.0/gcc/config/c6x/c6x-protos.h
*** gcc-10.3.0/gcc/config/c6x/c6x-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/c6x-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Prototypes for exported functions defined in c6x.c.
!    Copyright (C) 2010-2020 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
--- 1,5 ----
  /* Prototypes for exported functions defined in c6x.c.
!    Copyright (C) 2010-2021 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/c6x-sched.md gcc-11.1.0/gcc/config/c6x/c6x-sched.md
*** gcc-10.3.0/gcc/config/c6x/c6x-sched.md	Thu Apr  8 11:57:03 2021
--- gcc-11.1.0/gcc/config/c6x/c6x-sched.md	Tue Apr 27 10:00:33 2021
***************
*** 4,10 ****
  ;; Definitions for side 1, cross n
  
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
--- 4,10 ----
  ;; Definitions for side 1, cross n
  
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
***************
*** 237,243 ****
  ;; Definitions for side 2, cross n
  
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
--- 237,243 ----
  ;; Definitions for side 2, cross n
  
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
***************
*** 470,476 ****
  ;; Definitions for side 1, cross y
  
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
--- 470,476 ----
  ;; Definitions for side 1, cross y
  
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
***************
*** 703,709 ****
  ;; Definitions for side 2, cross y
  
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
--- 703,709 ----
  ;; Definitions for side 2, cross y
  
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/c6x-sched.md.in gcc-11.1.0/gcc/config/c6x/c6x-sched.md.in
*** gcc-10.3.0/gcc/config/c6x/c6x-sched.md.in	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/c6x-sched.md.in	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
--- 1,5 ----
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/c6x-tables.opt gcc-11.1.0/gcc/config/c6x/c6x-tables.opt
*** gcc-10.3.0/gcc/config/c6x/c6x-tables.opt	Thu Apr  8 11:57:03 2021
--- gcc-11.1.0/gcc/config/c6x/c6x-tables.opt	Tue Apr 27 10:00:33 2021
***************
*** 1,7 ****
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by genopt.sh from c6x-isas.def.
  ;
! ; Copyright (C) 2011-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,7 ----
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by genopt.sh from c6x-isas.def.
  ;
! ; Copyright (C) 2011-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/c6x.c gcc-11.1.0/gcc/config/c6x/c6x.c
*** gcc-10.3.0/gcc/config/c6x/c6x.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/c6x.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Target Code for TI C6X
!    Copyright (C) 2010-2020 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
--- 1,5 ----
  /* Target Code for TI C6X
!    Copyright (C) 2010-2021 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
*************** c6x_initialize_trampoline (rtx tramp, tr
*** 725,733 ****
      }
  #ifdef CLEAR_INSN_CACHE
    tramp = XEXP (tramp, 0);
!   emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__gnu_clear_cache"),
! 		     LCT_NORMAL, VOIDmode, tramp, Pmode,
! 		     plus_constant (Pmode, tramp, TRAMPOLINE_SIZE), Pmode);
  #endif
  }
  
--- 725,734 ----
      }
  #ifdef CLEAR_INSN_CACHE
    tramp = XEXP (tramp, 0);
!   maybe_emit_call_builtin___clear_cache (tramp,
! 					 plus_constant (Pmode,
! 							tramp,
! 							TRAMPOLINE_SIZE));
  #endif
  }
  
*************** insn_set_clock (rtx insn, int cycle)
*** 3698,3704 ****
    unsigned uid = INSN_UID (insn);
  
    if (uid >= INSN_INFO_LENGTH)
!     insn_info.safe_grow (uid * 5 / 4 + 10);
  
    INSN_INFO_ENTRY (uid).clock = cycle;
    INSN_INFO_ENTRY (uid).new_cond = NULL;
--- 3699,3705 ----
    unsigned uid = INSN_UID (insn);
  
    if (uid >= INSN_INFO_LENGTH)
!     insn_info.safe_grow (uid * 5 / 4 + 10, true);
  
    INSN_INFO_ENTRY (uid).clock = cycle;
    INSN_INFO_ENTRY (uid).new_cond = NULL;
*************** hwloop_optimize (hwloop_info loop)
*** 5600,5606 ****
        int j;
        rtx_insn *this_iter;
  
!       this_iter = duplicate_insn_chain (head_insn, tail_insn);
        j = 0;
        while (this_iter)
  	{
--- 5601,5608 ----
        int j;
        rtx_insn *this_iter;
  
!       copy_bb_data id;
!       this_iter = duplicate_insn_chain (head_insn, tail_insn, NULL, &id);
        j = 0;
        while (this_iter)
  	{
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/c6x.h gcc-11.1.0/gcc/config/c6x/c6x.h
*** gcc-10.3.0/gcc/config/c6x/c6x.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/c6x.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Target Definitions for TI C6X.
!    Copyright (C) 2010-2020 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
--- 1,5 ----
  /* Target Definitions for TI C6X.
!    Copyright (C) 2010-2021 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/c6x.md gcc-11.1.0/gcc/config/c6x/c6x.md
*** gcc-10.3.0/gcc/config/c6x/c6x.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/c6x.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description for TI C6X.
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Contributed by Andrew Jenner <andrew@codesourcery.com>
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
--- 1,5 ----
  ;; Machine description for TI C6X.
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Contributed by Andrew Jenner <andrew@codesourcery.com>
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/c6x.opt gcc-11.1.0/gcc/config/c6x/c6x.opt
*** gcc-10.3.0/gcc/config/c6x/c6x.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/c6x.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ; Option definitions for TI C6X.
! ; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ; Contributed by CodeSourcery.
  ;
--- 1,5 ----
  ; Option definitions for TI C6X.
! ; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ; Contributed by CodeSourcery.
  ;
*************** SourceInclude
*** 26,36 ****
  config/c6x/c6x-opts.h
  
  mbig-endian
! Target Report RejectNegative Mask(BIG_ENDIAN)
  Use big-endian byte order.
  
  mlittle-endian
! Target Report RejectNegative InverseMask(BIG_ENDIAN, LITTLE_ENDIAN)
  Use little-endian byte order.
  
  msim
--- 26,36 ----
  config/c6x/c6x-opts.h
  
  mbig-endian
! Target RejectNegative Mask(BIG_ENDIAN)
  Use big-endian byte order.
  
  mlittle-endian
! Target RejectNegative InverseMask(BIG_ENDIAN, LITTLE_ENDIAN)
  Use little-endian byte order.
  
  msim
*************** Target Mask(DSBT)
*** 59,65 ****
  Compile for the DSBT shared library ABI.
  
  mlong-calls
! Target Report Mask(LONG_CALLS)
  Avoid generating pc-relative calls; use indirection.
  
  march=
--- 59,65 ----
  Compile for the DSBT shared library ABI.
  
  mlong-calls
! Target Mask(LONG_CALLS)
  Avoid generating pc-relative calls; use indirection.
  
  march=
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/c6x_intrinsics.h gcc-11.1.0/gcc/config/c6x/c6x_intrinsics.h
*** gcc-10.3.0/gcc/config/c6x/c6x_intrinsics.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/c6x_intrinsics.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Intrinsics for TI C6X.
  
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
--- 1,6 ----
  /* Intrinsics for TI C6X.
  
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/constraints.md gcc-11.1.0/gcc/config/c6x/constraints.md
*** gcc-10.3.0/gcc/config/c6x/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Constraint definitions for TI C6X.
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;; Contributed by Andrew Jenner <andrew@codesourcery.com>
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
--- 1,5 ----
  ;; Constraint definitions for TI C6X.
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;; Contributed by Andrew Jenner <andrew@codesourcery.com>
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/elf-common.h gcc-11.1.0/gcc/config/c6x/elf-common.h
*** gcc-10.3.0/gcc/config/c6x/elf-common.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/elf-common.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ELF definitions for TI C6X
!    Copyright (C) 2010-2020 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
--- 1,5 ----
  /* ELF definitions for TI C6X
!    Copyright (C) 2010-2021 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/elf.h gcc-11.1.0/gcc/config/c6x/elf.h
*** gcc-10.3.0/gcc/config/c6x/elf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/elf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ELF definitions for TI C6X
!    Copyright (C) 2010-2020 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
--- 1,5 ----
  /* ELF definitions for TI C6X
!    Copyright (C) 2010-2021 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/genmult.sh gcc-11.1.0/gcc/config/c6x/genmult.sh
*** gcc-10.3.0/gcc/config/c6x/genmult.sh	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/genmult.sh	Tue Apr 27 10:00:13 2021
***************
*** 2,8 ****
  # Generate c6x-mult.md from c6x-mult.md.in
  # The input file is passed as an argument.
  
! # Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
--- 2,8 ----
  # Generate c6x-mult.md from c6x-mult.md.in
  # The input file is passed as an argument.
  
! # Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/genopt.sh gcc-11.1.0/gcc/config/c6x/genopt.sh
*** gcc-10.3.0/gcc/config/c6x/genopt.sh	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/genopt.sh	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  #!/bin/sh
  # Generate c6x-tables.opt from the lists in *.def.
! # Copyright (C) 2011-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #!/bin/sh
  # Generate c6x-tables.opt from the lists in *.def.
! # Copyright (C) 2011-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** cat <<EOF
*** 22,28 ****
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by genopt.sh from c6x-isas.def.
  ;
! ; Copyright (C) 2011-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 22,28 ----
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by genopt.sh from c6x-isas.def.
  ;
! ; Copyright (C) 2011-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/gensched.sh gcc-11.1.0/gcc/config/c6x/gensched.sh
*** gcc-10.3.0/gcc/config/c6x/gensched.sh	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/gensched.sh	Tue Apr 27 10:00:13 2021
***************
*** 2,8 ****
  # Generate c6x-sched.md from c6x-sched.md.in
  # The input file is passed as an argument.
  
! # Copyright (C) 2010-2020 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
--- 2,8 ----
  # Generate c6x-sched.md from c6x-sched.md.in
  # The input file is passed as an argument.
  
! # Copyright (C) 2010-2021 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/predicates.md gcc-11.1.0/gcc/config/c6x/predicates.md
*** gcc-10.3.0/gcc/config/c6x/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/predicates.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Predicates for TI C6X
!    Copyright (C) 2010-2020 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
--- 1,5 ----
  /* Predicates for TI C6X
!    Copyright (C) 2010-2021 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/sync.md gcc-11.1.0/gcc/config/c6x/sync.md
*** gcc-10.3.0/gcc/config/c6x/sync.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/sync.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; GCC machine description for C6X synchronization instructions.
! ;; Copyright (C) 2011-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; GCC machine description for C6X synchronization instructions.
! ;; Copyright (C) 2011-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/t-c6x gcc-11.1.0/gcc/config/c6x/t-c6x
*** gcc-10.3.0/gcc/config/c6x/t-c6x	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/t-c6x	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  # Target Makefile Fragment for TI C6X.
! # Copyright (C) 2010-2020 Free Software Foundation, Inc.
  # Contributed by CodeSourcery.
  #
  # This file is part of GCC.
--- 1,5 ----
  # Target Makefile Fragment for TI C6X.
! # Copyright (C) 2010-2021 Free Software Foundation, Inc.
  # Contributed by CodeSourcery.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/t-c6x-elf gcc-11.1.0/gcc/config/c6x/t-c6x-elf
*** gcc-10.3.0/gcc/config/c6x/t-c6x-elf	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/t-c6x-elf	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  # Target Makefile Fragment for TI C6X using ELF.
! # Copyright (C) 2010-2020 Free Software Foundation, Inc.
  # Contributed by CodeSourcery.
  #
  # This file is part of GCC.
--- 1,5 ----
  # Target Makefile Fragment for TI C6X using ELF.
! # Copyright (C) 2010-2021 Free Software Foundation, Inc.
  # Contributed by CodeSourcery.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/c6x/uclinux-elf.h gcc-11.1.0/gcc/config/c6x/uclinux-elf.h
*** gcc-10.3.0/gcc/config/c6x/uclinux-elf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/c6x/uclinux-elf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for TI C6X running ucLinux using ELF
!    Copyright (C) 2010-2020 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
--- 1,5 ----
  /* Definitions for TI C6X running ucLinux using ELF
!    Copyright (C) 2010-2021 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
diff -Nrcpad gcc-10.3.0/gcc/config/cr16/constraints.md gcc-11.1.0/gcc/config/cr16/constraints.md
*** gcc-10.3.0/gcc/config/cr16/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cr16/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Predicates of machine description for CR16.
! ;; Copyright (C) 2012-2020 Free Software Foundation, Inc.
  ;; Contributed by KPIT Cummins Infosystems Limited.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicates of machine description for CR16.
! ;; Copyright (C) 2012-2021 Free Software Foundation, Inc.
  ;; Contributed by KPIT Cummins Infosystems Limited.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/cr16/cr16-protos.h gcc-11.1.0/gcc/config/cr16/cr16-protos.h
*** gcc-10.3.0/gcc/config/cr16/cr16-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cr16/cr16-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Prototypes for exported functions defined in cr16.c
!    Copyright (C) 2012-2020 Free Software Foundation, Inc.
     Contributed by KPIT Cummins Infosystems Limited.
  
     This file is part of GCC.
--- 1,5 ----
  /* Prototypes for exported functions defined in cr16.c
!    Copyright (C) 2012-2021 Free Software Foundation, Inc.
     Contributed by KPIT Cummins Infosystems Limited.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/cr16/cr16.c gcc-11.1.0/gcc/config/cr16/cr16.c
*** gcc-10.3.0/gcc/config/cr16/cr16.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cr16/cr16.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Output routines for CR16 processor.
!    Copyright (C) 2012-2020 Free Software Foundation, Inc.
     Contributed by KPIT Cummins Infosystems Limited.
    
     This file is part of GCC.
--- 1,5 ----
  /* Output routines for CR16 processor.
!    Copyright (C) 2012-2021 Free Software Foundation, Inc.
     Contributed by KPIT Cummins Infosystems Limited.
    
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/cr16/cr16.h gcc-11.1.0/gcc/config/cr16/cr16.h
*** gcc-10.3.0/gcc/config/cr16/cr16.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cr16/cr16.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for CR16.
!    Copyright (C) 2012-2020 Free Software Foundation, Inc.
     Contributed by KPIT Cummins Infosystems Limited.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for CR16.
!    Copyright (C) 2012-2021 Free Software Foundation, Inc.
     Contributed by KPIT Cummins Infosystems Limited.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/cr16/cr16.md gcc-11.1.0/gcc/config/cr16/cr16.md
*** gcc-10.3.0/gcc/config/cr16/cr16.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cr16/cr16.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; GCC machine description for CR16.
! ;; Copyright (C) 2012-2020 Free Software Foundation, Inc.
  ;; Contributed by KPIT Cummins Infosystems Limited.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; GCC machine description for CR16.
! ;; Copyright (C) 2012-2021 Free Software Foundation, Inc.
  ;; Contributed by KPIT Cummins Infosystems Limited.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/cr16/cr16.opt gcc-11.1.0/gcc/config/cr16/cr16.opt
*** gcc-10.3.0/gcc/config/cr16/cr16.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cr16/cr16.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ; Options for the National Semiconductor CR16 port of the compiler.
! ; Copyright (C) 2012-2020 Free Software Foundation, Inc.
  ; Contributed by KPIT Cummins Infosystems Limited.
  ;
  ; This file is part of GCC.
--- 1,5 ----
  ; Options for the National Semiconductor CR16 port of the compiler.
! ; Copyright (C) 2012-2021 Free Software Foundation, Inc.
  ; Contributed by KPIT Cummins Infosystems Limited.
  ;
  ; This file is part of GCC.
*************** Target
*** 23,33 ****
  Use simulator runtime.
  
  mbit-ops
! Target Report Mask(BIT_OPS)
  Generate SBIT, CBIT instructions.
  
  mmac
! Target Report Mask(MAC)
  Support multiply accumulate instructions.
  
  mdebug-addr
--- 23,33 ----
  Use simulator runtime.
  
  mbit-ops
! Target Mask(BIT_OPS)
  Generate SBIT, CBIT instructions.
  
  mmac
! Target Mask(MAC)
  Support multiply accumulate instructions.
  
  mdebug-addr
diff -Nrcpad gcc-10.3.0/gcc/config/cr16/predicates.md gcc-11.1.0/gcc/config/cr16/predicates.md
*** gcc-10.3.0/gcc/config/cr16/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cr16/predicates.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Predicates of machine description for CR16.
! ;; Copyright (C) 2012-2020 Free Software Foundation, Inc.
  ;; Contributed by KPIT Cummins Infosystems Limited.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicates of machine description for CR16.
! ;; Copyright (C) 2012-2021 Free Software Foundation, Inc.
  ;; Contributed by KPIT Cummins Infosystems Limited.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/cr16/t-cr16 gcc-11.1.0/gcc/config/cr16/t-cr16
*** gcc-10.3.0/gcc/config/cr16/t-cr16	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cr16/t-cr16	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  # CR16 Target Makefile
! # Copyright (C) 2012-2020 Free Software Foundation, Inc.
  # Contributed by KPIT Cummins Infosystems Limited.
  #
  # This file is part of GCC.
--- 1,5 ----
  # CR16 Target Makefile
! # Copyright (C) 2012-2021 Free Software Foundation, Inc.
  # Contributed by KPIT Cummins Infosystems Limited.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/cris/constraints.md gcc-11.1.0/gcc/config/cris/constraints.md
*** gcc-10.3.0/gcc/config/cris/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cris/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Constraint definitions for CRIS.
! ;; Copyright (C) 2011-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for CRIS.
! ;; Copyright (C) 2011-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 18,26 ****
  ;; <http://www.gnu.org/licenses/>.
  
  ;; Register constraints.
- (define_register_constraint "a" "ACR_REGS"
-   "@internal")
- 
  (define_register_constraint "b" "GENNONACR_REGS"
    "@internal")
  
--- 18,23 ----
***************
*** 106,112 ****
         ;; A [reg] or (int) [reg], maybe with post-increment.
         (match_test "cris_bdap_index_p (op, reload_in_progress
  					   || reload_completed)")
!        (match_test "cris_constant_index_p (op)")))
  
  (define_constraint "T"
    "Memory three-address operand."
--- 103,109 ----
         ;; A [reg] or (int) [reg], maybe with post-increment.
         (match_test "cris_bdap_index_p (op, reload_in_progress
  					   || reload_completed)")
!        (match_test "CONSTANT_P (op)")))
  
  (define_constraint "T"
    "Memory three-address operand."
***************
*** 118,131 ****
  						       reload_in_progress
  						       || reload_completed)"))
  	    ;; Just an explicit indirect reference: [const]?
! 	    (match_test "CRIS_CONSTANT_P (XEXP (op, 0))")
  	    ;; Something that is indexed; [...+...]?
  	    (and (match_code "plus" "0")
  		      ;; A BDAP constant: [reg+(8|16|32)bit offset]?
  		 (ior (and (match_test "cris_base_p (XEXP (XEXP (op, 0), 0),
  						     reload_in_progress
  						     || reload_completed)")
! 			   (match_test "cris_constant_index_p (XEXP (XEXP (op, 0), 1))"))
  		      ;; A BDAP register: [reg+[reg(+)].S]?
  		      (and (match_test "cris_base_p (XEXP (XEXP (op, 0), 0),
  						     reload_in_progress
--- 115,128 ----
  						       reload_in_progress
  						       || reload_completed)"))
  	    ;; Just an explicit indirect reference: [const]?
! 	    (match_test "CONSTANT_P (XEXP (op, 0))")
  	    ;; Something that is indexed; [...+...]?
  	    (and (match_code "plus" "0")
  		      ;; A BDAP constant: [reg+(8|16|32)bit offset]?
  		 (ior (and (match_test "cris_base_p (XEXP (XEXP (op, 0), 0),
  						     reload_in_progress
  						     || reload_completed)")
! 			   (match_test "CONSTANT_P (XEXP (XEXP (op, 0), 1))"))
  		      ;; A BDAP register: [reg+[reg(+)].S]?
  		      (and (match_test "cris_base_p (XEXP (XEXP (op, 0), 0),
  						     reload_in_progress
***************
*** 149,166 ****
  			   (match_test "cris_biap_index_p (XEXP (XEXP (op, 0), 0),
  							   reload_in_progress
  							   || reload_completed)")))))))
- 
- (define_constraint "S"
-   "PIC-constructs for symbols."
-   (and (match_test "flag_pic")
-        (match_code "const")
-        (match_test "cris_valid_pic_const (op, false)")))
- 
- (define_constraint "U"
-   "@internal"
-   (and (match_test "flag_pic")
-        ;; We're just interested in the ..._or_callable_symbol part.
-        ;; (Using CRIS_CONSTANT_P would exclude that too.)
-        (match_test "CONSTANT_P (op)")
-        (match_operand 0 "cris_nonmemory_operand_or_callable_symbol")))
- 
--- 146,148 ----
diff -Nrcpad gcc-10.3.0/gcc/config/cris/cris-modes.def gcc-11.1.0/gcc/config/cris/cris-modes.def
*** gcc-10.3.0/gcc/config/cris/cris-modes.def	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/cris/cris-modes.def	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,61 ----
+ /* Definitions of target machine for GNU compiler, for CRIS.
+    Copyright (C) 2002-2021 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/>.  */
+ 
+ /* Node: Condition Code */
+ 
+ /* The mode used for condition-codes depends on both the way the
+    condition-codes are generated (the CC-setter, typically the compare
+    instruction), and used (the CC-user, typically a branch).  For CRIS, we
+    have ordinary compares and incidental condition-code settings from
+    preceding instructions, setting a subset of N, Z, V and C to usable
+    values, from the perspective of comparing the result against zero
+    (referred to below as "fpcraz").  The two subsets meaningful to gcc are
+    all of N, Z, V, C versus just N, Z; some CC-users care only about N
+    and/or Z and some that care about at least one of those flags together
+    with V and/or C.
+ 
+    The plain "CC_MODE (CC)" (which is always present in gcc), is used to
+    reflect the "unoptimized" state, where the CC-setter is a compare
+    against zero and the CC-user is any branch or s<condition> instruction,
+    before reload.  After reload, a need for C or V is reflected as
+    CC_NZVCmode in both setters and users, and others remain CCmode, until
+    or if optimization of CC-setter and CC-users, when CCmode setters can
+    be changed or replaced by either CC_NZmode or CC_NZVCmode.  To wit, all
+    users that require CC_NZVCmode must match only that mode at any time.
+    All other users must match all of CCmode, CC_NZmode, and CC_NZVCmode.
+    All setters that set only CC_NZmode must match setting only that mode.
+    All other setters must match setting all of CCmode, CC_NZmode, and
+    CC_NZVCmode.
+ 
+    There's also other modes (i.e. CC_ZnNmode) with a separate set of
+    setters and users not matched by the others. */
+ 
+ /* Z and N flags only.  For a condition-code setter: only the Z and N
+    flags are set to usable values, fpcraz.  For a condition-code user: the
+    operation using the condition codes only care about the Z and N flags.  */
+ CC_MODE (CC_NZ);
+ 
+ /* Z and N *and* V and C flags.  For a condition-code setter: all flags
+    are set to usable values, fpcraz.  For a condition-code user: at least
+    one of V and C are used and possibly N and Z too.  */
+ CC_MODE (CC_NZVC);
+ 
+ /* The result of a btst / btstq instruction for extracting a single bit
+    goes negated into the N flag, or in olde cc0-parlance, CC_Z_IN_NOT_N.  */
+ CC_MODE (CC_ZnN);
diff -Nrcpad gcc-10.3.0/gcc/config/cris/cris-passes.def gcc-11.1.0/gcc/config/cris/cris-passes.def
*** gcc-10.3.0/gcc/config/cris/cris-passes.def	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/cris/cris-passes.def	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,20 ----
+ /* Description of target passes for Visium.
+    Copyright (C) 2020-2021 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/>.  */
+ 
+ INSERT_PASS_AFTER (pass_delay_slots, 1, pass_cris_postdbr_cmpelim);
diff -Nrcpad gcc-10.3.0/gcc/config/cris/cris-protos.h gcc-11.1.0/gcc/config/cris/cris-protos.h
*** gcc-10.3.0/gcc/config/cris/cris-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cris/cris-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for GCC.  Part of the machine description for CRIS.
!    Copyright (C) 1998-2020 Free Software Foundation, Inc.
     Contributed by Axis Communications.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for GCC.  Part of the machine description for CRIS.
!    Copyright (C) 1998-2021 Free Software Foundation, Inc.
     Contributed by Axis Communications.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 23,40 ****
  extern bool cris_simple_epilogue (void);
  #ifdef RTX_CODE
  extern const char *cris_op_str (rtx);
! extern void cris_notice_update_cc (rtx, rtx_insn *);
  extern bool cris_reload_address_legitimized (rtx, machine_mode, int, int, int);
  extern int cris_side_effect_mode_ok (enum rtx_code, rtx *, int, int,
                                       int, int, int);
- extern bool cris_cc0_user_requires_cmp (rtx_insn *);
  extern rtx cris_return_addr_rtx (int, rtx);
  extern rtx cris_split_movdx (rtx *);
- extern int cris_legitimate_pic_operand (rtx);
- extern enum cris_symbol_type cris_symbol_type_of (const_rtx);
- extern bool cris_valid_pic_const (const_rtx, bool);
- extern bool cris_legitimate_constant_p (machine_mode, rtx);
- extern bool cris_constant_index_p (const_rtx);
  extern bool cris_base_p (const_rtx, bool);
  extern bool cris_base_or_autoincr_p (const_rtx, bool);
  extern bool cris_bdap_index_p (const_rtx, bool);
--- 23,34 ----
  extern bool cris_simple_epilogue (void);
  #ifdef RTX_CODE
  extern const char *cris_op_str (rtx);
! extern machine_mode cris_select_cc_mode (enum rtx_code, rtx, rtx);
  extern bool cris_reload_address_legitimized (rtx, machine_mode, int, int, int);
  extern int cris_side_effect_mode_ok (enum rtx_code, rtx *, int, int,
                                       int, int, int);
  extern rtx cris_return_addr_rtx (int, rtx);
  extern rtx cris_split_movdx (rtx *);
  extern bool cris_base_p (const_rtx, bool);
  extern bool cris_base_or_autoincr_p (const_rtx, bool);
  extern bool cris_bdap_index_p (const_rtx, bool);
*************** extern void cris_reduce_compare (rtx *,
*** 42,54 ****
  extern bool cris_biap_index_p (const_rtx, bool);
  extern bool cris_legitimate_address_p (machine_mode, rtx, bool);
  extern bool cris_store_multiple_op_p (rtx);
! extern bool cris_movem_load_rest_p (rtx, int);
  extern void cris_asm_output_symbol_ref (FILE *, rtx);
- extern int cris_cfun_uses_pic_table (void);
  extern void cris_asm_output_case_end (FILE *, int, rtx_insn *);
! extern rtx cris_gen_movem_load (rtx, rtx, int);
  extern rtx cris_emit_movem_store (rtx, rtx, int, bool);
! extern void cris_expand_pic_call_address (rtx *, rtx *);
  extern void cris_order_for_addsi3 (rtx *, int);
  extern void cris_emit_trap_for_misalignment (rtx);
  #endif /* RTX_CODE */
--- 36,47 ----
  extern bool cris_biap_index_p (const_rtx, bool);
  extern bool cris_legitimate_address_p (machine_mode, rtx, bool);
  extern bool cris_store_multiple_op_p (rtx);
! extern bool cris_movem_load_rest_p (rtx);
  extern void cris_asm_output_symbol_ref (FILE *, rtx);
  extern void cris_asm_output_case_end (FILE *, int, rtx_insn *);
! extern rtx cris_gen_movem_load (rtx, rtx);
  extern rtx cris_emit_movem_store (rtx, rtx, int, bool);
! extern rtx_insn *cris_emit_insn (rtx x);
  extern void cris_order_for_addsi3 (rtx *, int);
  extern void cris_emit_trap_for_misalignment (rtx);
  #endif /* RTX_CODE */
*************** extern int cris_fatal (char *);
*** 67,69 ****
--- 60,64 ----
  extern int cris_initial_elimination_offset (int, int);
  
  extern void cris_init_expanders (void);
+ 
+ extern rtl_opt_pass *make_pass_cris_postdbr_cmpelim (gcc::context *);
diff -Nrcpad gcc-10.3.0/gcc/config/cris/cris.c gcc-11.1.0/gcc/config/cris/cris.c
*** gcc-10.3.0/gcc/config/cris/cris.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cris/cris.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for GCC.  Part of the machine description for CRIS.
!    Copyright (C) 1998-2020 Free Software Foundation, Inc.
     Contributed by Axis Communications.  Written by Hans-Peter Nilsson.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for GCC.  Part of the machine description for CRIS.
!    Copyright (C) 1998-2021 Free Software Foundation, Inc.
     Contributed by Axis Communications.  Written by Hans-Peter Nilsson.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 51,56 ****
--- 51,58 ----
  #include "output.h"
  #include "tm-constrs.h"
  #include "builtins.h"
+ #include "cfgrtl.h"
+ #include "tree-pass.h"
  
  /* This file should be included last.  */
  #include "target-def.h"
*************** static char cris_output_insn_is_bound =
*** 90,98 ****
     goes in code or in a static initializer.  */
  static int in_code = 0;
  
- /* Fix for reg_overlap_mentioned_p.  */
- static int cris_reg_overlap_mentioned_p (rtx, rtx);
- 
  static machine_mode cris_promote_function_mode (const_tree, machine_mode,
  						     int *, const_tree, int);
  
--- 92,97 ----
*************** static int cris_initial_frame_pointer_of
*** 116,122 ****
  
  static void cris_operand_lossage (const char *, rtx);
  
! static int cris_reg_saved_in_regsave_area  (unsigned int, bool);
  
  static void cris_print_operand (FILE *, rtx, int);
  
--- 115,121 ----
  
  static void cris_operand_lossage (const char *, rtx);
  
! static int cris_reg_saved_in_regsave_area  (unsigned int);
  
  static void cris_print_operand (FILE *, rtx, int);
  
*************** static void cris_print_operand_address (
*** 124,131 ****
  
  static bool cris_print_operand_punct_valid_p (unsigned char code);
  
- static bool cris_output_addr_const_extra (FILE *, rtx);
- 
  static void cris_conditional_register_usage (void);
  
  static void cris_asm_output_mi_thunk
--- 123,128 ----
*************** static void cris_asm_output_mi_thunk
*** 134,143 ****
--- 131,143 ----
  static void cris_file_start (void);
  static void cris_init_libfuncs (void);
  
+ static unsigned int cris_postdbr_cmpelim (void);
+ 
  static reg_class_t cris_preferred_reload_class (rtx, reg_class_t);
  
  static int cris_register_move_cost (machine_mode, reg_class_t, reg_class_t);
  static int cris_memory_move_cost (machine_mode, reg_class_t, bool);
+ static machine_mode cris_cc_modes_compatible (machine_mode, machine_mode);
  static bool cris_rtx_costs (rtx, machine_mode, int, int, int *, bool);
  static int cris_address_cost (rtx, machine_mode, addr_space_t, bool);
  static bool cris_pass_by_reference (cumulative_args_t,
*************** static rtx cris_function_incoming_arg (c
*** 150,158 ****
  static void cris_function_arg_advance (cumulative_args_t,
  				       const function_arg_info &);
  static rtx_insn *cris_md_asm_adjust (vec<rtx> &, vec<rtx> &,
! 				     vec<const char *> &,
  				     vec<rtx> &, HARD_REG_SET &);
- static bool cris_cannot_force_const_mem (machine_mode, rtx);
  
  static void cris_option_override (void);
  
--- 150,157 ----
  static void cris_function_arg_advance (cumulative_args_t,
  				       const function_arg_info &);
  static rtx_insn *cris_md_asm_adjust (vec<rtx> &, vec<rtx> &,
! 				     vec<machine_mode> &, vec<const char *> &,
  				     vec<rtx> &, HARD_REG_SET &);
  
  static void cris_option_override (void);
  
*************** static void cris_trampoline_init (rtx, t
*** 164,170 ****
  static rtx cris_function_value(const_tree, const_tree, bool);
  static rtx cris_libcall_value (machine_mode, const_rtx);
  static bool cris_function_value_regno_p (const unsigned int);
- static void cris_file_end (void);
  static unsigned int cris_hard_regno_nregs (unsigned int, machine_mode);
  static bool cris_hard_regno_mode_ok (unsigned int, machine_mode);
  static HOST_WIDE_INT cris_static_rtx_alignment (machine_mode);
--- 163,168 ----
*************** int cris_cpu_version = CRIS_DEFAULT_CPU_
*** 202,209 ****
  #define TARGET_PRINT_OPERAND_ADDRESS cris_print_operand_address
  #undef TARGET_PRINT_OPERAND_PUNCT_VALID_P
  #define TARGET_PRINT_OPERAND_PUNCT_VALID_P cris_print_operand_punct_valid_p
- #undef TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA
- #define TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA cris_output_addr_const_extra
  
  #undef TARGET_CONDITIONAL_REGISTER_USAGE
  #define TARGET_CONDITIONAL_REGISTER_USAGE cris_conditional_register_usage
--- 200,205 ----
*************** int cris_cpu_version = CRIS_DEFAULT_CPU_
*** 215,222 ****
  
  #undef TARGET_ASM_FILE_START
  #define TARGET_ASM_FILE_START cris_file_start
- #undef TARGET_ASM_FILE_END
- #define TARGET_ASM_FILE_END cris_file_end
  
  #undef TARGET_INIT_LIBFUNCS
  #define TARGET_INIT_LIBFUNCS cris_init_libfuncs
--- 211,216 ----
*************** int cris_cpu_version = CRIS_DEFAULT_CPU_
*** 227,238 ****
  #undef TARGET_LEGITIMATE_ADDRESS_P
  #define TARGET_LEGITIMATE_ADDRESS_P cris_legitimate_address_p
  
- #undef TARGET_LEGITIMATE_CONSTANT_P
- #define TARGET_LEGITIMATE_CONSTANT_P cris_legitimate_constant_p
- 
  #undef TARGET_PREFERRED_RELOAD_CLASS
  #define TARGET_PREFERRED_RELOAD_CLASS cris_preferred_reload_class
  
  #undef TARGET_REGISTER_MOVE_COST
  #define TARGET_REGISTER_MOVE_COST cris_register_move_cost
  #undef TARGET_MEMORY_MOVE_COST
--- 221,242 ----
  #undef TARGET_LEGITIMATE_ADDRESS_P
  #define TARGET_LEGITIMATE_ADDRESS_P cris_legitimate_address_p
  
  #undef TARGET_PREFERRED_RELOAD_CLASS
  #define TARGET_PREFERRED_RELOAD_CLASS cris_preferred_reload_class
  
+ /* We don't define TARGET_FIXED_CONDITION_CODE_REGS, as at the time of
+    this writing, it has an effect only on pre-reload CSE and when
+    scheduling (and for "macro fusion" at that).  Neither applies for
+    CRIS so don't waste compilation cycles on enabling a pass that does
+    nothing.  Beware of changes to its usage; it may make sense to enable
+    "later".  */
+ 
+ #undef TARGET_CC_MODES_COMPATIBLE
+ #define TARGET_CC_MODES_COMPATIBLE cris_cc_modes_compatible
+ 
+ #undef TARGET_FLAGS_REGNUM
+ #define TARGET_FLAGS_REGNUM CRIS_CC0_REGNUM
+ 
  #undef TARGET_REGISTER_MOVE_COST
  #define TARGET_REGISTER_MOVE_COST cris_register_move_cost
  #undef TARGET_MEMORY_MOVE_COST
*************** int cris_cpu_version = CRIS_DEFAULT_CPU_
*** 268,276 ****
  #undef TARGET_MD_ASM_ADJUST
  #define TARGET_MD_ASM_ADJUST cris_md_asm_adjust
  
- #undef TARGET_CANNOT_FORCE_CONST_MEM
- #define TARGET_CANNOT_FORCE_CONST_MEM cris_cannot_force_const_mem
- 
  #undef TARGET_FRAME_POINTER_REQUIRED
  #define TARGET_FRAME_POINTER_REQUIRED cris_frame_pointer_required
  
--- 272,277 ----
*************** int cris_cpu_version = CRIS_DEFAULT_CPU_
*** 301,312 ****
  
  struct gcc_target targetm = TARGET_INITIALIZER;
  
  /* Helper for cris_load_multiple_op and cris_ret_movem_op.  */
  
  bool
! cris_movem_load_rest_p (rtx op, int offs)
  {
!   unsigned int reg_count = XVECLEN (op, 0) - offs;
    rtx src_addr;
    int i;
    rtx elt;
--- 302,511 ----
  
  struct gcc_target targetm = TARGET_INITIALIZER;
  
+ namespace {
+ 
+ const pass_data pass_data_cris_postdbr_cmpelim =
+ {
+   RTL_PASS, /* type */
+   "mach2", /* name */
+   OPTGROUP_NONE, /* optinfo_flags */
+   TV_MACH_DEP, /* tv_id */
+   0, /* properties_required */
+   0, /* properties_provided */
+   0, /* properties_destroyed */
+   0, /* todo_flags_start */
+   0, /* todo_flags_finish */
+ };
+ 
+ class pass_cris_postdbr_cmpelim : public rtl_opt_pass
+ {
+ public:
+   pass_cris_postdbr_cmpelim (gcc::context *ctxt)
+     : rtl_opt_pass (pass_data_cris_postdbr_cmpelim, ctxt)
+   {}
+ 
+   /* opt_pass methods: */
+   virtual unsigned int execute (function *)
+     {
+       return cris_postdbr_cmpelim ();
+     }
+ 
+   /* No use running this if reorg and cmpelim aren't both run.  */
+   virtual bool gate (function *)
+     {
+       return
+ 	optimize > 0
+ 	&& flag_delayed_branch
+ 	&& flag_compare_elim_after_reload;
+     }
+ };
+ 
+ } // anon namespace
+ 
+ rtl_opt_pass *
+ make_pass_cris_postdbr_cmpelim (gcc::context *ctxt)
+ {
+   return new pass_cris_postdbr_cmpelim (ctxt);
+ }
+ 
+ /* "Cheap version" of cmpelim, making use of the opportunities opened up
+    by reorg.
+ 
+    Go through the insns of a function and look at each actual compare
+    insn; considering only those that compare a register to 0.  If the
+    previous CC-affecting insn sets the compared register or if a move
+    reads from it, try to change that into a CC-setting move and try to
+    have it recognized.  Bail at labels or non-matching insns that
+    clobber the compared register.  If successful, delete the compare.
+ 
+    Also, reorg isn't up to date regarding data-flow handling, so we
+    can't go beyond classic RTL scanning.  */
+ 
+ static unsigned int
+ cris_postdbr_cmpelim ()
+ {
+   rtx_insn *insn;
+   rtx_insn *next;
+   rtx_insn *prev_cc_setter = 0;
+   rtx_insn *prev_cc_outer = 0;
+   rtx dccr = gen_rtx_REG (CCmode, CRIS_CC0_REGNUM);
+ 
+   /* Now look for compares in the insn stream.  */
+   for (insn = get_insns (); insn; insn = next)
+     {
+       rtx_insn *outer_insn = insn;
+       rtx pat = PATTERN (insn);
+ 
+       next = NEXT_INSN (outer_insn);
+ 
+       /* Forget previous state when we see a label; we can't track or
+ 	 merge its state.  */
+       if (LABEL_P (insn))
+ 	{
+ 	  prev_cc_setter = 0;
+ 	  continue;
+ 	}
+ 
+       if (!NONDEBUG_INSN_P (insn))
+ 	continue;
+ 
+       /* Consider filled delay slots; there might be a comparison there.
+ 	 It's only the second insn in a sequence that is interesting.  */
+       if (GET_CODE (pat) == SEQUENCE)
+ 	insn = as_a <rtx_insn *> XVECEXP (pat, 0, 1);
+       /* The "else" eliminates temptations to consider an insn in a
+ 	 delay slot for elimination; it can only be a prev_cc_setter.  */
+       else if (prev_cc_setter != 0 && GET_CODE (pat) == SET)
+ 	{
+ 	  rtx dest = SET_DEST (pat);
+ 	  rtx src = SET_SRC (pat);
+ 	  rtx prev_set;
+ 
+ 	  if (REG_P (dest)
+ 	      && REGNO (dest) == CRIS_CC0_REGNUM
+ 	      && GET_CODE (src) == COMPARE
+ 	      && REG_P (XEXP (src, 0))
+ 	      && XEXP (src, 1) == const0_rtx
+ 	      && (prev_set = single_set (prev_cc_setter)) != 0)
+ 	    {
+ 	      /* We have a candidate, and a prev_cc_setter to inspect.  */
+ 	      rtx reg = XEXP (src, 0);
+ 	      rtx prev_dest = SET_DEST (prev_set);
+ 	      rtx prev_src = SET_SRC (prev_set);
+ 	      bool src_same = rtx_equal_p (prev_src, reg);
+ 
+ 	      /* If the prev_cc_setter isn't a simple SET, or if the
+ 		 compared register is modified in prev_cc_setter without
+ 		 being the destination, or if it's modified between
+ 		 prev_cc_setter (equal to or contained in prev_cc_outer)
+ 		 and this insn, then we can't use the flags result.  And
+ 		 of course, the SET_DEST of prev_cc_setter (the main
+ 		 interest, not dccr) has to be the same register and
+ 		 mode we're interested in - or the SET_SRC.  We've
+ 		 already checked that the compared register isn't
+ 		 changed in-between.  */
+ 	      if (REG_P (prev_dest)
+ 		  && ! reg_set_p (reg, prev_src)
+ 		  && ! reg_set_between_p (reg, prev_cc_outer, outer_insn)
+ 		  && (src_same || rtx_equal_p (prev_dest, reg)))
+ 		{
+ 		  machine_mode ccmode = GET_MODE (src);
+ 		  rtx modeadjusted_dccr
+ 		    = (ccmode == CCmode ? dccr
+ 		       : gen_rtx_REG (CCmode, CRIS_CC0_REGNUM));
+ 		  rtx compare
+ 		    /* We don't need to copy_rtx pat: we're going to
+ 		       delete that insn. */
+ 		    = (src_same ? pat
+ 		       : gen_rtx_SET (modeadjusted_dccr,
+ 				      gen_rtx_COMPARE (ccmode,
+ 						       copy_rtx (prev_src),
+ 						       const0_rtx)));
+ 
+ 		  /* Replace tentatively, the prev_set combo that is
+ 		     ((set d s) (clobber dccr)) with
+ 		     ((cmp s 0) (set d s)) where (cmp s 0) is the
+ 		     compare we're looking at, and validate it or fail
+ 		     the whole thing.  First replace the ((set d s) ...)
+ 		     with ((cmp s 0) ...)).  */
+ 		  validate_change (prev_cc_setter,
+ 				   &XVECEXP (PATTERN (prev_cc_setter),
+ 					     0, 0), compare, true);
+ 
+ 		  /* Then the clobber with the (set d s).  */
+ 		  validate_change (prev_cc_setter,
+ 				   &XVECEXP (PATTERN (prev_cc_setter),
+ 					     0, 1), prev_set, true);
+ 
+ 		  if (apply_change_group ())
+ 		    {
+ 		      delete_insn (insn);
+ 
+ 		      /* We eliminated the compare.  Then we must go to
+ 			 the next insn: we can't consider the eliminated
+ 			 insn for the next prev_cc_setter.
+ 
+ 			 FIXME: if later insns still match, we could do
+ 			 the delete_insn part only, for them.  But, it
+ 			 seems rare that reorg would manage to move a
+ 			 second CC-clobber to another delay-slot,
+ 			 leaving two identical compares (and presumably
+ 			 users).  */
+ 		      prev_cc_setter = 0;
+ 		      continue;
+ 		    }
+ 		}
+ 	      }
+ 	}
+ 
+       if (reg_set_p (dccr, insn))
+ 	{
+ 	  rtx pat = PATTERN (insn);
+ 
+ 	  prev_cc_setter = 0;
+ 
+ 	  /* Make sure we can use it later on, otherwise forget it.
+ 	     Don't look too close, we're going to pass a lot of these.
+ 	     Just make sure the structure is that we can work with. */
+ 	  if (GET_CODE (pat) == PARALLEL
+ 	      && XVECLEN (pat, 0) == 2
+ 	      && GET_CODE (XVECEXP (pat, 0, 1)) == CLOBBER)
+ 	    {
+ 	      prev_cc_setter = insn;
+ 	      prev_cc_outer = outer_insn;
+ 	    }
+ 	}
+     }
+ 
+   return 0;
+ }
+ 
  /* Helper for cris_load_multiple_op and cris_ret_movem_op.  */
  
  bool
! cris_movem_load_rest_p (rtx op)
  {
!   unsigned int reg_count = XVECLEN (op, 0);
    rtx src_addr;
    int i;
    rtx elt;
*************** cris_movem_load_rest_p (rtx op, int offs
*** 317,354 ****
    /* Perform a quick check so we don't blow up below.  FIXME: Adjust for
       other than (MEM reg).  */
    if (reg_count <= 1
!       || GET_CODE (XVECEXP (op, 0, offs)) != SET
!       || !REG_P (SET_DEST (XVECEXP (op, 0, offs)))
!       || !MEM_P (SET_SRC (XVECEXP (op, 0, offs))))
      return false;
  
    /* Check a possible post-inc indicator.  */
!   if (GET_CODE (SET_SRC (XVECEXP (op, 0, offs + 1))) == PLUS)
      {
!       rtx reg = XEXP (SET_SRC (XVECEXP (op, 0, offs + 1)), 0);
!       rtx inc = XEXP (SET_SRC (XVECEXP (op, 0, offs + 1)), 1);
  
        reg_count--;
  
        if (reg_count == 1
  	  || !REG_P (reg)
! 	  || !REG_P (SET_DEST (XVECEXP (op, 0, offs + 1)))
! 	  || REGNO (reg) != REGNO (SET_DEST (XVECEXP (op, 0, offs + 1)))
  	  || !CONST_INT_P (inc)
  	  || INTVAL (inc) != (HOST_WIDE_INT) reg_count * 4)
  	return false;
!       i = offs + 2;
      }
    else
!     i = offs + 1;
  
!   if (!TARGET_V32)
!     {
!       regno_dir = -1;
!       regno = reg_count - 1;
!     }
  
!   elt = XVECEXP (op, 0, offs);
    src_addr = XEXP (SET_SRC (elt), 0);
  
    if (GET_CODE (elt) != SET
--- 516,551 ----
    /* Perform a quick check so we don't blow up below.  FIXME: Adjust for
       other than (MEM reg).  */
    if (reg_count <= 1
!       || GET_CODE (XVECEXP (op, 0, 0)) != SET
!       || !REG_P (SET_DEST (XVECEXP (op, 0, 0)))
!       || !MEM_P (SET_SRC (XVECEXP (op, 0, 0))))
      return false;
  
    /* Check a possible post-inc indicator.  */
!   if (GET_CODE (XVECEXP (op, 0, 1)) == SET
!       && GET_CODE (SET_SRC (XVECEXP (op, 0, 1))) == PLUS)
      {
!       rtx reg = XEXP (SET_SRC (XVECEXP (op, 0, 1)), 0);
!       rtx inc = XEXP (SET_SRC (XVECEXP (op, 0, 1)), 1);
  
        reg_count--;
  
        if (reg_count == 1
  	  || !REG_P (reg)
! 	  || !REG_P (SET_DEST (XVECEXP (op, 0, 1)))
! 	  || REGNO (reg) != REGNO (SET_DEST (XVECEXP (op, 0, 1)))
  	  || !CONST_INT_P (inc)
  	  || INTVAL (inc) != (HOST_WIDE_INT) reg_count * 4)
  	return false;
!       i = 2;
      }
    else
!     i = 1;
  
!   regno_dir = -1;
!   regno = reg_count - 1;
  
!   elt = XVECEXP (op, 0, 0);
    src_addr = XEXP (SET_SRC (elt), 0);
  
    if (GET_CODE (elt) != SET
*************** cris_store_multiple_op_p (rtx op)
*** 416,430 ****
    dest_addr = XEXP (dest, 0);
  
    /* Check a possible post-inc indicator.  */
!   if (GET_CODE (SET_SRC (XVECEXP (op, 0, 1))) == PLUS)
      {
        rtx reg = XEXP (SET_SRC (XVECEXP (op, 0, 1)), 0);
        rtx inc = XEXP (SET_SRC (XVECEXP (op, 0, 1)), 1);
  
        reg_count--;
  
!       if (reg_count == 1
! 	  || !REG_P (reg)
  	  || !REG_P (SET_DEST (XVECEXP (op, 0, 1)))
  	  || REGNO (reg) != REGNO (SET_DEST (XVECEXP (op, 0, 1)))
  	  || !CONST_INT_P (inc)
--- 613,627 ----
    dest_addr = XEXP (dest, 0);
  
    /* Check a possible post-inc indicator.  */
!   if (GET_CODE (XVECEXP (op, 0, 1)) == SET
!       && GET_CODE (SET_SRC (XVECEXP (op, 0, 1))) == PLUS)
      {
        rtx reg = XEXP (SET_SRC (XVECEXP (op, 0, 1)), 0);
        rtx inc = XEXP (SET_SRC (XVECEXP (op, 0, 1)), 1);
  
        reg_count--;
  
!       if (!REG_P (reg)
  	  || !REG_P (SET_DEST (XVECEXP (op, 0, 1)))
  	  || REGNO (reg) != REGNO (SET_DEST (XVECEXP (op, 0, 1)))
  	  || !CONST_INT_P (inc)
*************** cris_store_multiple_op_p (rtx op)
*** 446,456 ****
    else
      i = 1;
  
!   if (!TARGET_V32)
!     {
!       regno_dir = -1;
!       regno = reg_count - 1;
!     }
  
    if (GET_CODE (elt) != SET
        || !REG_P (SET_SRC (elt))
--- 643,650 ----
    else
      i = 1;
  
!   regno_dir = -1;
!   regno = reg_count - 1;
  
    if (GET_CODE (elt) != SET
        || !REG_P (SET_SRC (elt))
*************** cris_store_multiple_op_p (rtx op)
*** 501,526 ****
  static void
  cris_conditional_register_usage (void)
  {
-   /* FIXME: This isn't nice.  We should be able to use that register for
-      something else if the PIC table isn't needed.  */
-   if (flag_pic)
-     fixed_regs[PIC_OFFSET_TABLE_REGNUM]
-       = call_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1;
- 
-   /* Allow use of ACR (PC in pre-V32) and tweak order.  */
-   if (TARGET_V32)
-     {
-       static const int reg_alloc_order_v32[] = REG_ALLOC_ORDER_V32;
-       unsigned int i;
- 
-       fixed_regs[CRIS_ACR_REGNUM] = 0;
- 
-       for (i = 0;
-           i < sizeof (reg_alloc_order_v32)/sizeof (reg_alloc_order_v32[0]);
-           i++)
-        reg_alloc_order[i] = reg_alloc_order_v32[i];
-     }
- 
    if (TARGET_HAS_MUL_INSNS)
      fixed_regs[CRIS_MOF_REGNUM] = 0;
  
--- 695,700 ----
*************** cris_conditional_register_usage (void)
*** 530,559 ****
      reg_names[CRIS_CC0_REGNUM] = "ccr";
  }
  
- /* Return crtl->uses_pic_offset_table.  For use in cris.md,
-    since some generated files do not include function.h.  */
- 
- int
- cris_cfun_uses_pic_table (void)
- {
-   return crtl->uses_pic_offset_table;
- }
- 
- /* Worker function for TARGET_CANNOT_FORCE_CONST_MEM.
-    We can't put PIC addresses in the constant pool, not even the ones that
-    can be reached as pc-relative as we can't tell when or how to do that.  */
- 
- static bool
- cris_cannot_force_const_mem (machine_mode mode ATTRIBUTE_UNUSED, rtx x)
- {
-   enum cris_symbol_type t = cris_symbol_type_of (x);
- 
-   return
-     t == cris_unspec
-     || t == cris_got_symbol
-     || t == cris_rel_symbol;
- }
- 
  /* Given an rtx, return the text string corresponding to the CODE of X.
     Intended for use in the assembly language output section of a
     define_insn.  */
--- 704,709 ----
*************** cris_print_index (rtx index, FILE *file)
*** 637,643 ****
  
    if (REG_P (index))
      fprintf (file, "$%s.b", reg_names[REGNO (index)]);
!   else if (CRIS_CONSTANT_P (index))
      cris_output_addr_const (file, index);
    else if (GET_CODE (index) == MULT)
      {
--- 787,793 ----
  
    if (REG_P (index))
      fprintf (file, "$%s.b", reg_names[REGNO (index)]);
!   else if (CONSTANT_P (index))
      cris_output_addr_const (file, index);
    else if (GET_CODE (index) == MULT)
      {
*************** cris_print_base (rtx base, FILE *file)
*** 685,694 ****
    if (REG_P (base))
      fprintf (file, "$%s", reg_names[REGNO (base)]);
    else if (GET_CODE (base) == POST_INC)
!     {
!       gcc_assert (REGNO (XEXP (base, 0)) != CRIS_ACR_REGNUM);
!       fprintf (file, "$%s+", reg_names[REGNO (XEXP (base, 0))]);
!     }
    else
      cris_operand_lossage ("unexpected base-type in cris_print_base",
  			  base);
--- 835,841 ----
    if (REG_P (base))
      fprintf (file, "$%s", reg_names[REGNO (base)]);
    else if (GET_CODE (base) == POST_INC)
!     fprintf (file, "$%s+", reg_names[REGNO (XEXP (base, 0))]);
    else
      cris_operand_lossage ("unexpected base-type in cris_print_base",
  			  base);
*************** cris_fatal (char *arg)
*** 712,729 ****
     wrapper for a complicated conditional.  */
  
  static int
! cris_reg_saved_in_regsave_area (unsigned int regno, bool got_really_used)
  {
    return
      (((df_regs_ever_live_p (regno)
!        && !call_used_or_fixed_reg_p (regno))
!       || (regno == PIC_OFFSET_TABLE_REGNUM
! 	  && (got_really_used
! 	      /* It is saved anyway, if there would be a gap.  */
! 	      || (flag_pic
! 		  && df_regs_ever_live_p (regno + 1)
! 		  && !call_used_or_fixed_reg_p (regno + 1)))))
!      && (regno != FRAME_POINTER_REGNUM || !frame_pointer_needed)
       && regno != CRIS_SRP_REGNUM)
      || (crtl->calls_eh_return
  	&& (regno == EH_RETURN_DATA_REGNO (0)
--- 859,870 ----
     wrapper for a complicated conditional.  */
  
  static int
! cris_reg_saved_in_regsave_area (unsigned int regno)
  {
    return
      (((df_regs_ever_live_p (regno)
!        && !call_used_or_fixed_reg_p (regno)))
!      && (regno != HARD_FRAME_POINTER_REGNUM || !frame_pointer_needed)
       && regno != CRIS_SRP_REGNUM)
      || (crtl->calls_eh_return
  	&& (regno == EH_RETURN_DATA_REGNO (0)
*************** cris_print_operand (FILE *file, rtx x, i
*** 739,747 ****
  {
    rtx operand = x;
  
-   /* Size-strings corresponding to MULT expressions.  */
-   static const char *const mults[] = { "BAD:0", ".b", ".w", "BAD:3", ".d" };
- 
    /* New code entries should just be added to the switch below.  If
       handling is finished, just return.  If handling was just a
       modification of the operand, the modified operand should be put in
--- 880,885 ----
*************** cris_print_operand (FILE *file, rtx x, i
*** 866,881 ****
        putc (INTVAL (x) >= -128 && INTVAL (x) <= 255 ? 'b' : 'w', file);
        return;
  
-     case 'Z':
-       /* If this is a GOT-symbol, print the size-letter corresponding to
- 	 -fpic/-fPIC.  For everything else, print "d".  */
-       putc ((flag_pic == 1
- 	     && GET_CODE (x) == CONST
- 	     && GET_CODE (XEXP (x, 0)) == UNSPEC
- 	     && XINT (XEXP (x, 0), 1) == CRIS_UNSPEC_GOTREAD)
- 	    ? 'w' : 'd', file);
-       return;
- 
      case '#':
        /* Output a 'nop' if there's nothing for the delay slot.
  	 This method stolen from the sparc files.  */
--- 1004,1009 ----
*************** cris_print_operand (FILE *file, rtx x, i
*** 900,912 ****
  	       : ".p2alignw 5,0x050f,2\n\t", file);
        return;
  
-     case ':':
-       /* The PIC register.  */
-       if (! flag_pic)
- 	internal_error ("invalid use of %<:%> modifier");
-       fprintf (file, "$%s", reg_names [PIC_OFFSET_TABLE_REGNUM]);
-       return;
- 
      case 'H':
        /* Print high (most significant) part of something.  */
        switch (GET_CODE (operand))
--- 1028,1033 ----
*************** cris_print_operand (FILE *file, rtx x, i
*** 1073,1093 ****
  	fprintf (file, ".d");
        return;
  
-     case 'd':
-       /* If this is a GOT symbol, force it to be emitted as :GOT and
- 	 :GOTPLT regardless of -fpic (i.e. not as :GOT16, :GOTPLT16).
- 	 Avoid making this too much of a special case.  */
-       if (flag_pic == 1 && CRIS_CONSTANT_P (operand))
- 	{
- 	  int flag_pic_save = flag_pic;
- 
- 	  flag_pic = 2;
- 	  cris_output_addr_const (file, operand);
- 	  flag_pic = flag_pic_save;
- 	  return;
- 	}
-       break;
- 
      case 'D':
        /* When emitting an sub for the high part of a DImode constant, we
  	 want to use subq for 0 and subs.w for -1.  */
--- 1194,1199 ----
*************** cris_print_operand (FILE *file, rtx x, i
*** 1103,1124 ****
        return;
  
      case 'T':
!       /* Print the size letter for an operand to a MULT, which must be a
! 	 const_int with a suitable value.  */
!       if (!CONST_INT_P (operand) || INTVAL (operand) > 4)
! 	LOSE_AND_RETURN ("invalid operand for 'T' modifier", x);
!       fprintf (file, "%s", mults[INTVAL (operand)]);
!       return;
  
!     case 'u':
!       /* Print "u.w" if a GOT symbol and flag_pic == 1, else ".d".  */
!       if (flag_pic == 1
! 	  && GET_CODE (operand) == CONST
! 	  && GET_CODE (XEXP (operand, 0)) == UNSPEC
! 	  && XINT (XEXP (operand, 0), 1) == CRIS_UNSPEC_GOTREAD)
! 	fprintf (file, "u.w");
!       else
! 	fprintf (file, ".d");
        return;
  
      case 0:
--- 1209,1229 ----
        return;
  
      case 'T':
!       {
! 	/* Print the size letter for an operand to a ASHIFT, which must be a
! 	   const_int with a suitable value.  */
! 	int shiftval;
  
! 	if (!CONST_INT_P (operand))
! 	  LOSE_AND_RETURN ("invalid operand for 'T' modifier", x);
! 
! 	shiftval = INTVAL (operand);
! 
! 	if (!(shiftval == 1 || shiftval == 2))
! 	  LOSE_AND_RETURN ("invalid operand for 'T' modifier", x);
! 
! 	fprintf (file, "%s", shiftval == 1 ? ".w" : ".d");
!       }
        return;
  
      case 0:
*************** cris_print_operand (FILE *file, rtx x, i
*** 1162,1169 ****
  	}
        return;
  
-     case UNSPEC:
-       /* Fall through.  */
      case CONST:
        cris_output_addr_const (file, operand);
        return;
--- 1267,1272 ----
*************** cris_print_operand (FILE *file, rtx x, i
*** 1194,1200 ****
      default:
        /* No need to handle all strange variants, let output_addr_const
  	 do it for us.  */
!       if (CRIS_CONSTANT_P (operand))
  	{
  	  cris_output_addr_const (file, operand);
  	  return;
--- 1297,1303 ----
      default:
        /* No need to handle all strange variants, let output_addr_const
  	 do it for us.  */
!       if (CONSTANT_P (operand))
  	{
  	  cris_output_addr_const (file, operand);
  	  return;
*************** cris_print_operand (FILE *file, rtx x, i
*** 1207,1213 ****
  static bool
  cris_print_operand_punct_valid_p (unsigned char code)
  {
!   return (code == '#' || code == '!' || code == ':');
  }
  
  /* The PRINT_OPERAND_ADDRESS worker.  */
--- 1310,1316 ----
  static bool
  cris_print_operand_punct_valid_p (unsigned char code)
  {
!   return (code == '#' || code == '!');
  }
  
  /* The PRINT_OPERAND_ADDRESS worker.  */
*************** cris_initial_frame_pointer_offset (void)
*** 1304,1323 ****
  
    /* Initial offset is 0 if we don't have a frame pointer.  */
    int offs = 0;
-   bool got_really_used = false;
- 
-   if (crtl->uses_pic_offset_table)
-     {
-       push_topmost_sequence ();
-       got_really_used
- 	= reg_used_between_p (pic_offset_table_rtx, get_insns (),
- 			      NULL);
-       pop_topmost_sequence ();
-     }
  
    /* And 4 for each register pushed.  */
    for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
!     if (cris_reg_saved_in_regsave_area (regno, got_really_used))
        offs += 4;
  
    /* And then, last, we add the locals allocated.  */
--- 1407,1416 ----
  
    /* Initial offset is 0 if we don't have a frame pointer.  */
    int offs = 0;
  
    /* And 4 for each register pushed.  */
    for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
!     if (cris_reg_saved_in_regsave_area (regno))
        offs += 4;
  
    /* And then, last, we add the locals allocated.  */
*************** cris_initial_elimination_offset (int fro
*** 1352,1358 ****
    int ap_fp_offset = 4 + (return_address_on_stack ? 4 : 0);
  
    if (fromreg == ARG_POINTER_REGNUM
!       && toreg == FRAME_POINTER_REGNUM)
      return ap_fp_offset;
  
    /* Between the frame pointer and the stack are only "normal" stack
--- 1445,1451 ----
    int ap_fp_offset = 4 + (return_address_on_stack ? 4 : 0);
  
    if (fromreg == ARG_POINTER_REGNUM
!       && toreg == HARD_FRAME_POINTER_REGNUM)
      return ap_fp_offset;
  
    /* Between the frame pointer and the stack are only "normal" stack
*************** cris_initial_elimination_offset (int fro
*** 1366,1371 ****
--- 1459,1468 ----
        && toreg == STACK_POINTER_REGNUM)
      return ap_fp_offset + fp_sp_offset - 4;
  
+   if (fromreg == FRAME_POINTER_REGNUM
+       && toreg == HARD_FRAME_POINTER_REGNUM)
+     return 0;
+ 
    gcc_unreachable ();
  }
  
*************** reg_ok_for_index_p (const_rtx x, bool st
*** 1384,1398 ****
    return reg_ok_for_base_p (x, strict);
  }
  
- /* No symbol can be used as an index (or more correct, as a base) together
-    with a register with PIC; the PIC register must be there.  */
- 
- bool
- cris_constant_index_p (const_rtx x)
- {
-   return (CRIS_CONSTANT_P (x) && (!flag_pic || cris_valid_pic_const (x, true)));
- }
- 
  /* True if X is a valid base register.  */
  
  bool
--- 1481,1486 ----
*************** cris_base_or_autoincr_p (const_rtx x, bo
*** 1416,1423 ****
  {
    return (cris_base_p (x, strict)
  	  || (GET_CODE (x) == POST_INC
! 	      && cris_base_p (XEXP (x, 0), strict)
! 	      && REGNO (XEXP (x, 0)) != CRIS_ACR_REGNUM));
  }
  
  /* True if X is a valid (register) index for BDAP, i.e. [Rs].S or [Rs+].S.  */
--- 1504,1510 ----
  {
    return (cris_base_p (x, strict)
  	  || (GET_CODE (x) == POST_INC
! 	      && cris_base_p (XEXP (x, 0), strict)));
  }
  
  /* True if X is a valid (register) index for BDAP, i.e. [Rs].S or [Rs+].S.  */
*************** cris_biap_index_p (const_rtx x, bool str
*** 1446,1459 ****
  	      && cris_scale_int_operand (XEXP (x, 1), VOIDmode)));
  }
  
! /* Worker function for TARGET_LEGITIMATE_ADDRESS_P.
! 
!    A PIC operand looks like a normal symbol here.  At output we dress it
!    in "[rPIC+symbol:GOT]" (global symbol) or "rPIC+symbol:GOTOFF" (local
!    symbol) so we exclude all addressing modes where we can't replace a
!    plain "symbol" with that.  A global PIC symbol does not fit anywhere
!    here (but is thankfully a general_operand in itself).  A local PIC
!    symbol is valid for the plain "symbol + offset" case.  */
  
  bool
  cris_legitimate_address_p (machine_mode mode, rtx x, bool strict)
--- 1533,1539 ----
  	      && cris_scale_int_operand (XEXP (x, 1), VOIDmode)));
  }
  
! /* Worker function for TARGET_LEGITIMATE_ADDRESS_P.  */
  
  bool
  cris_legitimate_address_p (machine_mode mode, rtx x, bool strict)
*************** cris_legitimate_address_p (machine_mode
*** 1462,1471 ****
  
    if (cris_base_or_autoincr_p (x, strict))
      return true;
!   else if (TARGET_V32)
!     /* Nothing else is valid then.  */
!     return false;
!   else if (cris_constant_index_p (x))
      return true;
    /* Indexed?  */
    else if (GET_CODE (x) == PLUS)
--- 1542,1548 ----
  
    if (cris_base_or_autoincr_p (x, strict))
      return true;
!   else if (CONSTANT_P (x))
      return true;
    /* Indexed?  */
    else if (GET_CODE (x) == PLUS)
*************** cris_legitimate_address_p (machine_mode
*** 1473,1480 ****
        x1 = XEXP (x, 0);
        x2 = XEXP (x, 1);
        /* BDAP o, Rd.  */
!       if ((cris_base_p (x1, strict) && cris_constant_index_p (x2))
! 	  || (cris_base_p (x2, strict) && cris_constant_index_p (x1))
  	   /* BDAP Rs[+], Rd.  */
  	  || (GET_MODE_SIZE (mode) <= UNITS_PER_WORD
  	      && ((cris_base_p (x1, strict)
--- 1550,1557 ----
        x1 = XEXP (x, 0);
        x2 = XEXP (x, 1);
        /* BDAP o, Rd.  */
!       if ((cris_base_p (x1, strict) && CONSTANT_P (x2))
! 	  || (cris_base_p (x2, strict) && CONSTANT_P (x1))
  	   /* BDAP Rs[+], Rd.  */
  	  || (GET_MODE_SIZE (mode) <= UNITS_PER_WORD
  	      && ((cris_base_p (x1, strict)
*************** cris_legitimate_address_p (machine_mode
*** 1499,1527 ****
    return false;
  }
  
- /* Worker function for TARGET_LEGITIMATE_CONSTANT_P.  We have to handle
-    PIC constants that aren't legitimized.  FIXME: there used to be a
-    guarantee that the target LEGITIMATE_CONSTANT_P didn't have to handle
-    PIC constants, but no more (4.7 era); testcase: glibc init-first.c.
-    While that may be seen as a bug, that guarantee seems a wart by design,
-    so don't bother; fix the documentation instead.  */
- 
- bool
- cris_legitimate_constant_p (machine_mode mode ATTRIBUTE_UNUSED, rtx x)
- {
-   enum cris_symbol_type t;
- 
-   if (flag_pic)
-     return LEGITIMATE_PIC_OPERAND_P (x);
- 
-   t = cris_symbol_type_of (x);
- 
-   return
-     t == cris_no_symbol
-     || t == cris_offsettable_symbol
-     || t == cris_unspec;
- }
- 
  /* Worker function for LEGITIMIZE_RELOAD_ADDRESS.  */
  
  bool
--- 1576,1581 ----
*************** cris_reload_address_legitimized (rtx x,
*** 1538,1546 ****
    if (GET_CODE (x) != PLUS)
      return false;
  
-   if (TARGET_V32)
-     return false;
- 
    op0 = XEXP (x, 0);
    op1 = XEXP (x, 1);
    op1p = &XEXP (x, 1);
--- 1592,1597 ----
*************** cris_memory_move_cost (machine_mode mode
*** 1675,1994 ****
      return 6;
  }
  
! /* Worker for cris_notice_update_cc; handles the "normal" cases.
!    FIXME: this code is historical; its functionality should be
!    refactored to look at insn attributes and moved to
!    cris_notice_update_cc.  Except, we better lose cc0 entirely.  */
  
! static void
! cris_normal_notice_update_cc (rtx exp, rtx insn)
  {
!   /* "Normal" means, for:
!      (set (cc0) (...)):
!      CC is (...).
! 
!      (set (reg) (...)):
!      CC is (reg) and (...) - unless (...) is 0 or reg is a special
!         register or (v32 and (...) is -32..-1), then CC does not change.
!      CC_NO_OVERFLOW unless (...) is reg or mem.
! 
!      (set (mem) (...)):
!      CC does not change.
! 
!      (set (pc) (...)):
!      CC does not change.
! 
!      (parallel
!       (set (reg1) (mem (bdap/biap)))
!       (set (reg2) (bdap/biap))):
!      CC is (reg1) and (mem (reg2))
! 
!      (parallel
!       (set (mem (bdap/biap)) (reg1)) [or 0]
!       (set (reg2) (bdap/biap))):
!      CC does not change.
! 
!      (where reg and mem includes strict_low_parts variants thereof)
! 
!      For all others, assume CC is clobbered.
!      Note that we do not have to care about setting CC_NO_OVERFLOW,
!      since the overflow flag is set to 0 (i.e. right) for
!      instructions where it does not have any sane sense, but where
!      other flags have meanings.  (This includes shifts; the carry is
!      not set by them).
! 
!      Note that there are other parallel constructs we could match,
!      but we don't do that yet.  */
! 
!   if (GET_CODE (exp) == SET)
!     {
!       /* FIXME: Check when this happens.  It looks like we should
! 	 actually do a CC_STATUS_INIT here to be safe.  */
!       if (SET_DEST (exp) == pc_rtx)
! 	return;
! 
!       /* Record CC0 changes, so we do not have to output multiple
! 	 test insns.  */
!       if (SET_DEST (exp) == cc0_rtx)
! 	{
! 	  CC_STATUS_INIT;
! 
! 	  if (GET_CODE (SET_SRC (exp)) == COMPARE
! 	      && XEXP (SET_SRC (exp), 1) == const0_rtx)
! 	    cc_status.value1 = XEXP (SET_SRC (exp), 0);
! 	  else
! 	    cc_status.value1 = SET_SRC (exp);
! 
!           /* Handle flags for the special btstq on one bit.  */
! 	  if (GET_CODE (cc_status.value1) == ZERO_EXTRACT
! 	      && XEXP (cc_status.value1, 1) == const1_rtx)
! 	    {
! 	      if (CONST_INT_P (XEXP (cc_status.value1, 0)))
! 		/* Using cmpq.  */
! 		cc_status.flags = CC_INVERTED;
! 	      else
! 		/* A one-bit btstq.  */
! 		cc_status.flags = CC_Z_IN_NOT_N;
! 	    }
! 
! 	  else if (GET_CODE (SET_SRC (exp)) == COMPARE)
! 	    {
! 	      if (!REG_P (XEXP (SET_SRC (exp), 0))
! 		  && XEXP (SET_SRC (exp), 1) != const0_rtx)
! 		/* For some reason gcc will not canonicalize compare
! 		   operations, reversing the sign by itself if
! 		   operands are in wrong order.  */
! 		/* (But NOT inverted; eq is still eq.) */
! 		cc_status.flags = CC_REVERSED;
! 
! 	      /* This seems to be overlooked by gcc.  FIXME: Check again.
! 		 FIXME:  Is it really safe?  */
! 	      cc_status.value2
! 		= gen_rtx_MINUS (GET_MODE (SET_SRC (exp)),
! 				 XEXP (SET_SRC (exp), 0),
! 				 XEXP (SET_SRC (exp), 1));
! 	    }
! 	  return;
! 	}
!       else if (REG_P (SET_DEST (exp))
! 	       || (GET_CODE (SET_DEST (exp)) == STRICT_LOW_PART
! 		   && REG_P (XEXP (SET_DEST (exp), 0))))
! 	{
! 	  /* A register is set; normally CC is set to show that no
! 	     test insn is needed.  Catch the exceptions.  */
! 
! 	  /* If not to cc0, then no "set"s in non-natural mode give
! 	     ok cc0...  */
! 	  if (GET_MODE_SIZE (GET_MODE (SET_DEST (exp))) > UNITS_PER_WORD
! 	      || GET_MODE_CLASS (GET_MODE (SET_DEST (exp))) == MODE_FLOAT)
! 	    {
! 	      /* ... except add:s and sub:s in DImode.  */
! 	      if (GET_MODE (SET_DEST (exp)) == DImode
! 		  && (GET_CODE (SET_SRC (exp)) == PLUS
! 		      || GET_CODE (SET_SRC (exp)) == MINUS))
! 		{
! 		  CC_STATUS_INIT;
! 		  cc_status.value1 = SET_DEST (exp);
! 		  cc_status.value2 = SET_SRC (exp);
! 
! 		  if (cris_reg_overlap_mentioned_p (cc_status.value1,
! 						    cc_status.value2))
! 		    cc_status.value2 = 0;
! 
! 		  /* Add and sub may set V, which gets us
! 		     unoptimizable results in "gt" and "le" condition
! 		     codes.  */
! 		  cc_status.flags |= CC_NO_OVERFLOW;
! 
! 		  return;
! 		}
! 	    }
! 	  else if (SET_SRC (exp) == const0_rtx
! 		   || (REG_P (SET_SRC (exp))
! 		       && (REGNO (SET_SRC (exp))
! 			   > CRIS_LAST_GENERAL_REGISTER))
! 		   || (TARGET_V32
! 		       && REG_P (SET_DEST (exp))
! 		       && satisfies_constraint_I (SET_SRC (exp))))
! 	    {
! 	      /* There's no CC0 change for this case.  Just check
! 		 for overlap.  */
! 	      if (cc_status.value1
! 		  && modified_in_p (cc_status.value1, insn))
! 		cc_status.value1 = 0;
! 
! 	      if (cc_status.value2
! 		  && modified_in_p (cc_status.value2, insn))
! 		cc_status.value2 = 0;
! 
! 	      return;
! 	    }
! 	  else
! 	    {
! 	      CC_STATUS_INIT;
! 	      cc_status.value1 = SET_DEST (exp);
! 	      cc_status.value2 = SET_SRC (exp);
! 
! 	      if (cris_reg_overlap_mentioned_p (cc_status.value1,
! 						cc_status.value2))
! 		cc_status.value2 = 0;
! 
! 	      /* Some operations may set V, which gets us
! 		 unoptimizable results in "gt" and "le" condition
! 		 codes.  */
! 	      if (GET_CODE (SET_SRC (exp)) == PLUS
! 		  || GET_CODE (SET_SRC (exp)) == MINUS
! 		  || GET_CODE (SET_SRC (exp)) == NEG)
! 		cc_status.flags |= CC_NO_OVERFLOW;
! 
! 	      /* For V32, nothing with a register destination sets
! 		 C and V usefully.  */
! 	      if (TARGET_V32)
! 		cc_status.flags |= CC_NO_OVERFLOW;
! 
! 	      return;
! 	    }
! 	}
!       else if (MEM_P (SET_DEST (exp))
! 	       || (GET_CODE (SET_DEST (exp)) == STRICT_LOW_PART
! 		   && MEM_P (XEXP (SET_DEST (exp), 0))))
! 	{
! 	  /* When SET to MEM, then CC is not changed (except for
! 	     overlap).  */
! 	  if (cc_status.value1
! 	      && modified_in_p (cc_status.value1, insn))
! 	    cc_status.value1 = 0;
! 
! 	  if (cc_status.value2
! 	      && modified_in_p (cc_status.value2, insn))
! 	    cc_status.value2 = 0;
! 
! 	  return;
! 	}
!     }
!   else if (GET_CODE (exp) == PARALLEL)
!     {
!       if (GET_CODE (XVECEXP (exp, 0, 0)) == SET
! 	  && GET_CODE (XVECEXP (exp, 0, 1)) == SET
! 	  && REG_P (XEXP (XVECEXP (exp, 0, 1), 0)))
! 	{
! 	  if (REG_P (XEXP (XVECEXP (exp, 0, 0), 0))
! 	      && MEM_P (XEXP (XVECEXP (exp, 0, 0), 1)))
! 	    {
! 	      CC_STATUS_INIT;
! 
! 	      /* For "move.S [rx=ry+o],rz", say CC reflects
! 		 value1=rz and value2=[rx] */
! 	      cc_status.value1 = XEXP (XVECEXP (exp, 0, 0), 0);
! 	      cc_status.value2
! 		= replace_equiv_address (XEXP (XVECEXP (exp, 0, 0), 1),
! 					 XEXP (XVECEXP (exp, 0, 1), 0));
! 
! 	      /* Huh?  A side-effect cannot change the destination
! 		 register.  */
! 	      if (cris_reg_overlap_mentioned_p (cc_status.value1,
! 						cc_status.value2))
! 		internal_error ("internal error: sideeffect-insn affecting main effect");
  
! 	      /* For V32, moves to registers don't set C and V.  */
! 	      if (TARGET_V32)
! 		cc_status.flags |= CC_NO_OVERFLOW;
! 	      return;
! 	    }
! 	  else if ((REG_P (XEXP (XVECEXP (exp, 0, 0), 1))
! 		    || XEXP (XVECEXP (exp, 0, 0), 1) == const0_rtx)
! 		   && MEM_P (XEXP (XVECEXP (exp, 0, 0), 0)))
! 	    {
! 	      /* For "move.S rz,[rx=ry+o]" and "clear.S [rx=ry+o]",
! 		 say flags are not changed, except for overlap.  */
! 	      if (cc_status.value1
! 		  && modified_in_p (cc_status.value1, insn))
! 		cc_status.value1 = 0;
  
! 	      if (cc_status.value2
! 		  && modified_in_p (cc_status.value2, insn))
! 		cc_status.value2 = 0;
  
! 	      return;
! 	    }
! 	}
!     }
  
!   /* If we got here, the case wasn't covered by the code above.  */
!   CC_STATUS_INIT;
  }
  
! /*  This function looks into the pattern to see how this insn affects
!     condition codes.
! 
!     Used when to eliminate test insns before a condition-code user,
!     such as a "scc" insn or a conditional branch.  This includes
!     checking if the entities that cc was updated by, are changed by the
!     operation.
! 
!     Currently a jumble of the old peek-inside-the-insn and the newer
!     check-cc-attribute methods.  */
  
! void
! cris_notice_update_cc (rtx exp, rtx_insn *insn)
  {
!   enum attr_cc attrval = get_attr_cc (insn);
! 
!   /* Check if user specified "-mcc-init" as a bug-workaround.  Remember
!      to still set CC_REVERSED as below, since that's required by some
!      compare insn alternatives.  (FIXME: GCC should do this virtual
!      operand swap by itself.)  A test-case that may otherwise fail is
!      gcc.c-torture/execute/20000217-1.c -O0 and -O1.  */
!   if (TARGET_CCINIT)
      {
!       CC_STATUS_INIT;
! 
!       if (attrval == CC_REV)
! 	cc_status.flags = CC_REVERSED;
!       return;
      }
  
!   /* Slowly, we're converting to using attributes to control the setting
!      of condition-code status.  */
!   switch (attrval)
      {
!     case CC_NONE:
!       /* Even if it is "none", a setting may clobber a previous
! 	 cc-value, so check.  */
!       if (GET_CODE (exp) == SET)
! 	{
! 	  if (cc_status.value1
! 	      && modified_in_p (cc_status.value1, insn))
! 	    cc_status.value1 = 0;
! 
! 	  if (cc_status.value2
! 	      && modified_in_p (cc_status.value2, insn))
! 	    cc_status.value2 = 0;
! 	}
!       return;
! 
!     case CC_CLOBBER:
!       CC_STATUS_INIT;
!       return;
! 
!     case CC_REV:
!     case CC_NOOV32:
!     case CC_NORMAL:
!       cris_normal_notice_update_cc (exp, insn);
! 
!       /* The "test" insn doesn't clear (carry and) overflow on V32.  We
!         can change bge => bpl and blt => bmi by passing on to the cc0
!         user that V should not be considered; bgt and ble are taken
!         care of by other methods (see {tst,cmp}{si,hi,qi}).  */
!       if (attrval == CC_NOOV32 && TARGET_V32)
! 	cc_status.flags |= CC_NO_OVERFLOW;
!       return;
! 
!     default:
!       internal_error ("unknown cc_attr value");
      }
  
!   CC_STATUS_INIT;
  }
  
  /* Return != 0 if the return sequence for the current function is short,
--- 1726,1786 ----
      return 6;
  }
  
! /* Worker function for SELECT_CC_MODE.  */
  
! machine_mode
! cris_select_cc_mode (enum rtx_code op, rtx x, rtx y)
  {
!   /* We have different sets of patterns before and after
!      reload_completed, and everything before reload_completed is CCmode.
!      At the time of this writing, this function isn't called before that
!      time, so let's just gcc_assert on that assumption rather than doing
!      "if (!reload_completed) return CCmode;".  */
!   gcc_assert (reload_completed);
  
!   /* For float mode or comparisons with something other than 0, we
!      always go with CCmode.  */
!   if (GET_MODE_CLASS (GET_MODE (x)) != MODE_INT || y != const0_rtx)
!     return CCmode;
  
!   /* If we have a comparison that doesn't have to look at V or C, return
!      CC_NZmode.  */
!   if (op == EQ || op ==  NE || op ==  GTU || op ==  LEU
!       || op ==  LT || op ==  GE)
!     return CC_NZmode;
  
!   /* We should only get here for comparison operators.  */
!   gcc_assert (op ==  GEU || op ==  LTU || op ==  GT || op ==  LE);
  
!   return CC_NZVCmode;
  }
  
! /* Worker function for TARGET_CC_MODES_COMPATIBLE.
!    We start with CCmode for most comparisons, which merges and yields to
!    CC_NZmode or CC_NZVCmode.  The exceptions have CC_NZVCmode and can't do with
!    another mode.  */
  
! static machine_mode
! cris_cc_modes_compatible (machine_mode m1, machine_mode m2)
  {
!   if (m1 == CC_NZVCmode)
      {
!       if (m2 == CC_NZVCmode || m2 == CCmode)
! 	return CC_NZVCmode;
!       return VOIDmode;
      }
  
!   if (m2 == CC_NZVCmode)
      {
!       if (m1 == CC_NZVCmode || m1 == CCmode)
! 	return CC_NZVCmode;
!       return VOIDmode;
      }
  
!   if (m1 != m2)
!     return CC_NZmode;
! 
!   return m1;
  }
  
  /* Return != 0 if the return sequence for the current function is short,
*************** cris_simple_epilogue (void)
*** 2000,2006 ****
  {
    unsigned int regno;
    unsigned int reglimit = STACK_POINTER_REGNUM;
-   bool got_really_used = false;
  
    if (! reload_completed
        || frame_pointer_needed
--- 1792,1797 ----
*************** cris_simple_epilogue (void)
*** 2015,2035 ****
        || !TARGET_PROLOGUE_EPILOGUE)
      return false;
  
-   /* Can't return from stacked return address with v32.  */
-   if (TARGET_V32 && cris_return_address_on_stack ())
-     return false;
- 
-   if (crtl->uses_pic_offset_table)
-     {
-       push_topmost_sequence ();
-       got_really_used
- 	= reg_used_between_p (pic_offset_table_rtx, get_insns (), NULL);
-       pop_topmost_sequence ();
-     }
- 
    /* No simple epilogue if there are saved registers.  */
    for (regno = 0; regno < reglimit; regno++)
!     if (cris_reg_saved_in_regsave_area (regno, got_really_used))
        return false;
  
    return true;
--- 1806,1814 ----
        || !TARGET_PROLOGUE_EPILOGUE)
      return false;
  
    /* No simple epilogue if there are saved registers.  */
    for (regno = 0; regno < reglimit; regno++)
!     if (cris_reg_saved_in_regsave_area (regno))
        return false;
  
    return true;
*************** cris_rtx_costs (rtx x, machine_mode mode
*** 2196,2203 ****
        return false;
  
      case ZERO_EXTRACT:
!       if (outer_code != COMPARE)
!         return false;
        /* fall through */
  
      case ZERO_EXTEND: case SIGN_EXTEND:
--- 1975,2004 ----
        return false;
  
      case ZERO_EXTRACT:
!       /* Conditionals are split after reload, giving a different look.  */
!       if (reload_completed)
! 	{
! 	  if (outer_code != COMPARE)
! 	    return false;
! 	}
!       else
! 	switch (outer_code)
! 	  {
! 	  case EQ:
! 	  case NE:
! 	  case LT:
! 	  case LTU:
! 	  case LE:
! 	  case LEU:
! 	  case GT:
! 	  case GTU:
! 	  case GE:
! 	  case GEU:
! 	    break;
! 
! 	  default:
! 	    return false;
! 	  }
        /* fall through */
  
      case ZERO_EXTEND: case SIGN_EXTEND:
*************** cris_address_cost (rtx x, machine_mode m
*** 2273,2279 ****
  	return (2 + 2) / 2;
  
        /* A BDAP with some other constant is 2 bytes extra.  */
!       if (CRIS_CONSTANT_P (tem2))
  	return (2 + 2 + 2) / 2;
  
        /* BDAP with something indirect should have a higher cost than
--- 2074,2080 ----
  	return (2 + 2) / 2;
  
        /* A BDAP with some other constant is 2 bytes extra.  */
!       if (CONSTANT_P (tem2))
  	return (2 + 2 + 2) / 2;
  
        /* BDAP with something indirect should have a higher cost than
*************** cris_side_effect_mode_ok (enum rtx_code
*** 2371,2377 ****
  	return 0;
  
        /* Check allowed cases, like [r(+)?].[bwd] and const.  */
!       if (CRIS_CONSTANT_P (val_rtx))
  	return 1;
  
        if (MEM_P (val_rtx)
--- 2172,2178 ----
  	return 0;
  
        /* Check allowed cases, like [r(+)?].[bwd] and const.  */
!       if (CONSTANT_P (val_rtx))
  	return 1;
  
        if (MEM_P (val_rtx)
*************** cris_side_effect_mode_ok (enum rtx_code
*** 2415,2588 ****
    internal_error ("internal error: cris_side_effect_mode_ok with bad operands");
  }
  
- /* Whether next_cc0_user of insn is LE or GT or requires a real compare
-    insn for other reasons.  */
- 
- bool
- cris_cc0_user_requires_cmp (rtx_insn *insn)
- {
-   rtx_insn *cc0_user = NULL;
-   rtx body;
-   rtx set;
- 
-   gcc_assert (insn != NULL);
- 
-   if (!TARGET_V32)
-     return false;
- 
-   cc0_user = next_cc0_user (insn);
-   if (cc0_user == NULL)
-     return false;
- 
-   body = PATTERN (cc0_user);
-   set = single_set (cc0_user);
- 
-   /* Users can be sCC and bCC.  */
-   if (JUMP_P (cc0_user)
-       && GET_CODE (body) == SET
-       && SET_DEST (body) == pc_rtx
-       && GET_CODE (SET_SRC (body)) == IF_THEN_ELSE
-       && XEXP (XEXP (SET_SRC (body), 0), 0) == cc0_rtx)
-     {
-       return
- 	GET_CODE (XEXP (SET_SRC (body), 0)) == GT
- 	|| GET_CODE (XEXP (SET_SRC (body), 0)) == LE;
-     }
-   else if (set)
-     {
-       return
- 	GET_CODE (SET_SRC (body)) == GT
- 	|| GET_CODE (SET_SRC (body)) == LE;
-     }
- 
-   gcc_unreachable ();
- }
- 
- /* The function reg_overlap_mentioned_p in CVS (still as of 2001-05-16)
-    does not handle the case where the IN operand is strict_low_part; it
-    does handle it for X.  Test-case in Axis-20010516.  This function takes
-    care of that for THIS port.  FIXME: strict_low_part is going away
-    anyway.  */
- 
- static int
- cris_reg_overlap_mentioned_p (rtx x, rtx in)
- {
-   /* The function reg_overlap_mentioned now handles when X is
-      strict_low_part, but not when IN is a STRICT_LOW_PART.  */
-   if (GET_CODE (in) == STRICT_LOW_PART)
-     in = XEXP (in, 0);
- 
-   return reg_overlap_mentioned_p (x, in);
- }
- 
- /* Return TRUE iff X is a CONST valid for e.g. indexing.
-    ANY_OPERAND is 0 if X is in a CALL_P insn or movsi, 1
-    elsewhere.  */
- 
- bool
- cris_valid_pic_const (const_rtx x, bool any_operand)
- {
-   gcc_assert (flag_pic);
- 
-   switch (GET_CODE (x))
-     {
-     case CONST_INT:
-     case CONST_DOUBLE:
-       return true;
-     default:
-       ;
-     }
- 
-   if (GET_CODE (x) != CONST)
-     return false;
- 
-   x = XEXP (x, 0);
- 
-   /* Handle (const (plus (unspec .. UNSPEC_GOTREL) (const_int ...))).  */
-   if (GET_CODE (x) == PLUS
-       && GET_CODE (XEXP (x, 0)) == UNSPEC
-       && (XINT (XEXP (x, 0), 1) == CRIS_UNSPEC_GOTREL
- 	  || XINT (XEXP (x, 0), 1) == CRIS_UNSPEC_PCREL)
-       && CONST_INT_P (XEXP (x, 1)))
-     x = XEXP (x, 0);
- 
-   if (GET_CODE (x) == UNSPEC)
-     switch (XINT (x, 1))
-       {
- 	/* A PCREL operand is only valid for call and movsi.  */
-       case CRIS_UNSPEC_PLT_PCREL:
-       case CRIS_UNSPEC_PCREL:
- 	return !any_operand;
- 
-       case CRIS_UNSPEC_PLT_GOTREL:
-       case CRIS_UNSPEC_PLTGOTREAD:
-       case CRIS_UNSPEC_GOTREAD:
-       case CRIS_UNSPEC_GOTREL:
- 	return true;
-       default:
- 	gcc_unreachable ();
-       }
- 
-   return cris_symbol_type_of (x) == cris_no_symbol;
- }
- 
- /* Helper function to find the right symbol-type to generate,
-    given the original (non-PIC) representation.  */
- 
- enum cris_symbol_type
- cris_symbol_type_of (const_rtx x)
- {
-   switch (GET_CODE (x))
-     {
-     case SYMBOL_REF:
-       return flag_pic
- 	? (SYMBOL_REF_LOCAL_P (x)
- 	   ? cris_rel_symbol : cris_got_symbol)
- 	: cris_offsettable_symbol;
- 
-     case LABEL_REF:
-       return flag_pic ? cris_rel_symbol : cris_offsettable_symbol;
- 
-     case CONST:
-       return cris_symbol_type_of (XEXP (x, 0));
- 
-     case PLUS:
-     case MINUS:
-       {
- 	enum cris_symbol_type t1 = cris_symbol_type_of (XEXP (x, 0));
- 	enum cris_symbol_type t2 = cris_symbol_type_of (XEXP (x, 1));
- 
- 	gcc_assert (t1 == cris_no_symbol || t2 == cris_no_symbol);
- 
- 	if (t1 == cris_got_symbol || t2 == cris_got_symbol)
- 	  return cris_got_symbol_needing_fixup;
- 
- 	return t1 != cris_no_symbol ? t1 : t2;
-       }
- 
-     case CONST_INT:
-     case CONST_DOUBLE:
-       return cris_no_symbol;
- 
-     case UNSPEC:
-       return cris_unspec;
- 
-     default:
-       fatal_insn ("unrecognized supposed constant", x);
-     }
- 
-   gcc_unreachable ();
- }
- 
- /* The LEGITIMATE_PIC_OPERAND_P worker.  */
- 
- int
- cris_legitimate_pic_operand (rtx x)
- {
-   /* Symbols are not valid PIC operands as-is; just constants.  */
-   return cris_valid_pic_const (x, true);
- }
- 
  /* Queue an .ident string in the queue of top-level asm statements.
     If the front-end is done, we must be being called from toplev.c.
     In that case, do nothing.  */
--- 2216,2221 ----
*************** cris_asm_output_case_end (FILE *stream,
*** 2604,2634 ****
       assert that we find only what's expected.  */
    rtx_insn *whole_jump_insn = prev_nonnote_nondebug_insn (table);
    gcc_assert (whole_jump_insn != NULL_RTX && LABEL_P (whole_jump_insn));
    whole_jump_insn = prev_nonnote_nondebug_insn (whole_jump_insn);
!   gcc_assert (whole_jump_insn != NULL_RTX
! 	      && (JUMP_P (whole_jump_insn)
! 		  || (TARGET_V32 && INSN_P (whole_jump_insn)
! 		      && GET_CODE (PATTERN (whole_jump_insn)) == SEQUENCE)));
    /* Get the pattern of the casejump, so we can extract the default label.  */
    rtx whole_jump_pat = PATTERN (whole_jump_insn);
  
-   if (TARGET_V32)
-     {
-       /* This can be a SEQUENCE, meaning the delay-slot of the jump is
- 	 filled.  We also output the offset word a little differently.  */
-       rtx parallel_jump
- 	= (GET_CODE (whole_jump_pat) == SEQUENCE
- 	   ? PATTERN (XVECEXP (whole_jump_pat, 0, 0)) : whole_jump_pat);
- 
-       asm_fprintf (stream,
- 		   "\t.word %LL%d-.%s\n",
- 		   CODE_LABEL_NUMBER (XEXP (XEXP (XEXP (XVECEXP
- 							(parallel_jump, 0, 0),
- 							1), 2), 0)),
- 		   (TARGET_PDEBUG ? "; default" : ""));
-       return;
-     }
- 
    asm_fprintf (stream,
  	       "\t.word %LL%d-%LL%d%s\n",
  	       CODE_LABEL_NUMBER (XEXP
--- 2237,2249 ----
       assert that we find only what's expected.  */
    rtx_insn *whole_jump_insn = prev_nonnote_nondebug_insn (table);
    gcc_assert (whole_jump_insn != NULL_RTX && LABEL_P (whole_jump_insn));
+ 
    whole_jump_insn = prev_nonnote_nondebug_insn (whole_jump_insn);
!   gcc_assert (whole_jump_insn != NULL_RTX && JUMP_P (whole_jump_insn));
! 
    /* Get the pattern of the casejump, so we can extract the default label.  */
    rtx whole_jump_pat = PATTERN (whole_jump_insn);
  
    asm_fprintf (stream,
  	       "\t.word %LL%d-%LL%d%s\n",
  	       CODE_LABEL_NUMBER (XEXP
*************** cris_option_override (void)
*** 2679,2685 ****
  	  || strcmp ("etrax100lx", cris_cpu_str) == 0)
  	cris_cpu_version = 10;
  
!       if (cris_cpu_version < 0 || cris_cpu_version > 32)
  	error ("unknown CRIS version specification in %<-march=%> or "
  	       "%<-mcpu=%> : %s", cris_cpu_str);
  
--- 2294,2300 ----
  	  || strcmp ("etrax100lx", cris_cpu_str) == 0)
  	cris_cpu_version = 10;
  
!       if (cris_cpu_version < 0 || cris_cpu_version > 10)
  	error ("unknown CRIS version specification in %<-march=%> or "
  	       "%<-mcpu=%> : %s", cris_cpu_str);
  
*************** cris_option_override (void)
*** 2727,2754 ****
  	      | MASK_DATA_ALIGN | MASK_ALIGN_BY_32);
      }
  
-   if (cris_cpu_version >= CRIS_CPU_V32)
-     target_flags &= ~(MASK_SIDE_EFFECT_PREFIXES|MASK_MUL_BUG);
- 
    if (flag_pic)
      {
        /* Use error rather than warning, so invalid use is easily
  	 detectable.  Still change to the values we expect, to avoid
  	 further errors.  */
!       if (! TARGET_LINUX)
! 	{
! 	  error ("%<-fPIC%> and %<-fpic%> are not supported "
! 		 "in this configuration");
! 	  flag_pic = 0;
! 	}
! 
!       /* Turn off function CSE.  We need to have the addresses reach the
! 	 call expanders to get PLT-marked, as they could otherwise be
! 	 compared against zero directly or indirectly.  After visiting the
! 	 call expanders they will then be cse:ed, as the call expanders
! 	 force_reg the addresses, effectively forcing flag_no_function_cse
! 	 to 0.  */
!       flag_no_function_cse = 1;
      }
  
    /* Set the per-function-data initializer.  */
--- 2342,2354 ----
  	      | MASK_DATA_ALIGN | MASK_ALIGN_BY_32);
      }
  
    if (flag_pic)
      {
        /* Use error rather than warning, so invalid use is easily
  	 detectable.  Still change to the values we expect, to avoid
  	 further errors.  */
!       error ("%<-fPIC%> and %<-fpic%> are not supported on this target");
!       flag_pic = 0;
      }
  
    /* Set the per-function-data initializer.  */
*************** cris_asm_output_mi_thunk (FILE *stream,
*** 2779,2812 ****
  	     ADDITIVE_SIZE_MODIFIER (-delta), -delta,
  	     reg_names[CRIS_FIRST_ARG_REG]);
  
!   if (flag_pic)
!     {
!       const char *name = XSTR (XEXP (DECL_RTL (funcdecl), 0), 0);
! 
!       name = (* targetm.strip_name_encoding) (name);
! 
!       if (TARGET_V32)
! 	{
! 	  fprintf (stream, "\tba ");
! 	  assemble_name (stream, name);
! 	  fprintf (stream, "%s\n\tnop\n", CRIS_PLT_PCOFFSET_SUFFIX);
! 	}
!       else
! 	{
! 	  fprintf (stream, "\tadd.d ");
! 	  assemble_name (stream, name);
! 	  fprintf (stream, "%s,$pc\n", CRIS_PLT_PCOFFSET_SUFFIX);
! 	}
!     }
!   else
!     {
!       fprintf (stream, "\tjump ");
!       assemble_name (stream, XSTR (XEXP (DECL_RTL (funcdecl), 0), 0));
!       fprintf (stream, "\n");
! 
!       if (TARGET_V32)
! 	fprintf (stream, "\tnop\n");
!     }
  
    final_end_function ();
    assemble_end_function (thunkdecl, fnname);
--- 2379,2387 ----
  	     ADDITIVE_SIZE_MODIFIER (-delta), -delta,
  	     reg_names[CRIS_FIRST_ARG_REG]);
  
!   fprintf (stream, "\tjump ");
!   assemble_name (stream, XSTR (XEXP (DECL_RTL (funcdecl), 0), 0));
!   fprintf (stream, "\n");
  
    final_end_function ();
    assemble_end_function (thunkdecl, fnname);
*************** cris_file_start (void)
*** 2827,2843 ****
    default_file_start ();
  }
  
- /* Output that goes at the end of the file, similarly.  */
- 
- static void
- cris_file_end (void)
- {
-   /* For CRIS, the default is to assume *no* executable stack, so output
-      an executable-stack-note only when needed.  */
-   if (TARGET_LINUX && trampolines_created)
-     file_end_indicate_exec_stack ();
- }
- 
  /* Rename the function calls for integer multiply and divide.  */
  static void
  cris_init_libfuncs (void)
--- 2402,2407 ----
*************** cris_split_movdx (rtx *operands)
*** 2907,2928 ****
  	  /* We normally copy the low-numbered register first.  However, if
  	     the first register operand 0 is the same as the second register of
  	     operand 1, we must copy in the opposite order.  */
! 	  emit_insn (gen_rtx_SET (operand_subword (dest, reverse, TRUE, mode),
! 				  operand_subword (src, reverse, TRUE, mode)));
  
! 	  emit_insn (gen_rtx_SET (operand_subword (dest, !reverse, TRUE, mode),
! 				  operand_subword (src, !reverse, TRUE, mode)));
  	}
        /* Constant-to-reg copy.  */
        else if (CONST_INT_P (src) || GET_CODE (src) == CONST_DOUBLE)
  	{
  	  rtx words[2];
  	  split_double (src, &words[0], &words[1]);
! 	  emit_insn (gen_rtx_SET (operand_subword (dest, 0, TRUE, mode),
! 				  words[0]));
  
! 	  emit_insn (gen_rtx_SET (operand_subword (dest, 1, TRUE, mode),
! 				  words[1]));
  	}
        /* Mem-to-reg copy.  */
        else if (MEM_P (src))
--- 2471,2490 ----
  	  /* We normally copy the low-numbered register first.  However, if
  	     the first register operand 0 is the same as the second register of
  	     operand 1, we must copy in the opposite order.  */
! 	  emit_move_insn (operand_subword (dest, reverse, TRUE, mode),
! 			  operand_subword (src, reverse, TRUE, mode));
  
! 	  emit_move_insn (operand_subword (dest, !reverse, TRUE, mode),
! 			  operand_subword (src, !reverse, TRUE, mode));
  	}
        /* Constant-to-reg copy.  */
        else if (CONST_INT_P (src) || GET_CODE (src) == CONST_DOUBLE)
  	{
  	  rtx words[2];
  	  split_double (src, &words[0], &words[1]);
! 	  emit_move_insn (operand_subword (dest, 0, TRUE, mode), words[0]);
  
! 	  emit_move_insn (operand_subword (dest, 1, TRUE, mode), words[1]);
  	}
        /* Mem-to-reg copy.  */
        else if (MEM_P (src))
*************** cris_split_movdx (rtx *operands)
*** 2949,2966 ****
  		 addresses ourselves, we must add a post-inc note
  		 manually.  */
  	      mem = change_address (src, SImode, addr);
! 	      insn
! 		= gen_rtx_SET (operand_subword (dest, 0, TRUE, mode), mem);
! 	      insn = emit_insn (insn);
  	      if (GET_CODE (XEXP (mem, 0)) == POST_INC)
  		REG_NOTES (insn)
  		  = alloc_EXPR_LIST (REG_INC, XEXP (XEXP (mem, 0), 0),
  				     REG_NOTES (insn));
  
  	      mem = copy_rtx (mem);
! 	      insn
! 		= gen_rtx_SET (operand_subword (dest, 1, TRUE, mode), mem);
! 	      insn = emit_insn (insn);
  	      if (GET_CODE (XEXP (mem, 0)) == POST_INC)
  		REG_NOTES (insn)
  		  = alloc_EXPR_LIST (REG_INC, XEXP (XEXP (mem, 0), 0),
--- 2511,2525 ----
  		 addresses ourselves, we must add a post-inc note
  		 manually.  */
  	      mem = change_address (src, SImode, addr);
! 	      insn = emit_move_insn (operand_subword (dest, 0, TRUE, mode),
! 				     mem);
  	      if (GET_CODE (XEXP (mem, 0)) == POST_INC)
  		REG_NOTES (insn)
  		  = alloc_EXPR_LIST (REG_INC, XEXP (XEXP (mem, 0), 0),
  				     REG_NOTES (insn));
  
  	      mem = copy_rtx (mem);
! 	      insn = emit_move_insn (operand_subword (dest, 1, TRUE, mode), mem);
  	      if (GET_CODE (XEXP (mem, 0)) == POST_INC)
  		REG_NOTES (insn)
  		  = alloc_EXPR_LIST (REG_INC, XEXP (XEXP (mem, 0), 0),
*************** cris_split_movdx (rtx *operands)
*** 2975,2993 ****
  	      if (side_effects_p (addr))
  		fatal_insn ("unexpected side-effects in address", addr);
  
! 	      emit_insn (gen_rtx_SET
! 			 (operand_subword (dest, reverse, TRUE, mode),
! 			  change_address
! 			  (src, SImode,
! 			   plus_constant (Pmode, addr,
! 					  reverse * UNITS_PER_WORD))));
! 	      emit_insn (gen_rtx_SET
! 			 (operand_subword (dest, ! reverse, TRUE, mode),
! 			  change_address
! 			  (src, SImode,
! 			   plus_constant (Pmode, addr,
! 					  (! reverse) *
! 					  UNITS_PER_WORD))));
  	    }
  	}
        else
--- 2534,2550 ----
  	      if (side_effects_p (addr))
  		fatal_insn ("unexpected side-effects in address", addr);
  
! 	      emit_move_insn (operand_subword (dest, reverse, TRUE, mode),
! 			      change_address
! 			      (src, SImode,
! 			       plus_constant (Pmode, addr,
! 					      reverse * UNITS_PER_WORD)));
! 	      emit_move_insn (operand_subword (dest, ! reverse, TRUE, mode),
! 			      change_address
! 			      (src, SImode,
! 			       plus_constant (Pmode, addr,
! 					      (! reverse) *
! 					      UNITS_PER_WORD)));
  	    }
  	}
        else
*************** cris_split_movdx (rtx *operands)
*** 3009,3025 ****
  	  /* Whenever we emit insns with post-incremented addresses
  	     ourselves, we must add a post-inc note manually.  */
  	  mem = change_address (dest, SImode, addr);
! 	  insn
! 	    = gen_rtx_SET (mem, operand_subword (src, 0, TRUE, mode));
! 	  insn = emit_insn (insn);
  	  if (GET_CODE (XEXP (mem, 0)) == POST_INC)
  	    REG_NOTES (insn)
  	      = alloc_EXPR_LIST (REG_INC, XEXP (XEXP (mem, 0), 0),
  				 REG_NOTES (insn));
  
  	  mem = copy_rtx (mem);
! 	  insn = gen_rtx_SET (mem, operand_subword (src, 1, TRUE, mode));
! 	  insn = emit_insn (insn);
  	  if (GET_CODE (XEXP (mem, 0)) == POST_INC)
  	    REG_NOTES (insn)
  	      = alloc_EXPR_LIST (REG_INC, XEXP (XEXP (mem, 0), 0),
--- 2566,2579 ----
  	  /* Whenever we emit insns with post-incremented addresses
  	     ourselves, we must add a post-inc note manually.  */
  	  mem = change_address (dest, SImode, addr);
! 	  insn = emit_move_insn (mem, operand_subword (src, 0, TRUE, mode));
  	  if (GET_CODE (XEXP (mem, 0)) == POST_INC)
  	    REG_NOTES (insn)
  	      = alloc_EXPR_LIST (REG_INC, XEXP (XEXP (mem, 0), 0),
  				 REG_NOTES (insn));
  
  	  mem = copy_rtx (mem);
! 	  insn = emit_move_insn (mem, operand_subword (src, 1, TRUE, mode));
  	  if (GET_CODE (XEXP (mem, 0)) == POST_INC)
  	    REG_NOTES (insn)
  	      = alloc_EXPR_LIST (REG_INC, XEXP (XEXP (mem, 0), 0),
*************** cris_split_movdx (rtx *operands)
*** 3033,3047 ****
  	  if (side_effects_p (addr))
  	    fatal_insn ("unexpected side-effects in address", addr);
  
! 	  emit_insn (gen_rtx_SET
! 		     (change_address (dest, SImode, addr),
! 		      operand_subword (src, 0, TRUE, mode)));
  
! 	  emit_insn (gen_rtx_SET
! 		     (change_address (dest, SImode,
! 				      plus_constant (Pmode, addr,
! 						     UNITS_PER_WORD)),
! 		      operand_subword (src, 1, TRUE, mode)));
  	}
      }
  
--- 2587,2599 ----
  	  if (side_effects_p (addr))
  	    fatal_insn ("unexpected side-effects in address", addr);
  
! 	  emit_move_insn (change_address (dest, SImode, addr),
! 			  operand_subword (src, 0, TRUE, mode));
  
! 	  emit_move_insn (change_address (dest, SImode,
! 					  plus_constant (Pmode, addr,
! 							 UNITS_PER_WORD)),
! 			  operand_subword (src, 1, TRUE, mode));
  	}
      }
  
*************** cris_expand_prologue (void)
*** 3123,3129 ****
    int framesize = 0;
    rtx mem, insn;
    int return_address_on_stack = cris_return_address_on_stack ();
-   int got_really_used = false;
    int n_movem_regs = 0;
    int pretend = crtl->args.pretend_args_size;
  
--- 2675,2680 ----
*************** cris_expand_prologue (void)
*** 3133,3149 ****
  
    CRIS_ASSERT (size >= 0);
  
-   if (crtl->uses_pic_offset_table)
-     {
-       /* A reference may have been optimized out (like the abort () in
- 	 fde_split in unwind-dw2-fde.c, at least 3.2.1) so check that
- 	 it's still used.  */
-       push_topmost_sequence ();
-       got_really_used
- 	= reg_used_between_p (pic_offset_table_rtx, get_insns (), NULL);
-       pop_topmost_sequence ();
-     }
- 
    /* Align the size to what's best for the CPU model.  */
    if (TARGET_STACK_ALIGN)
      size = TARGET_ALIGN_BY_32 ? (size + 3) & ~3 : (size + 1) & ~1;
--- 2684,2689 ----
*************** cris_expand_prologue (void)
*** 3166,3175 ****
  	   stdarg_regs > 0;
  	   regno--, pretend -= 4, stdarg_regs--)
  	{
! 	  insn = emit_insn (gen_rtx_SET (stack_pointer_rtx,
! 					 plus_constant (Pmode,
! 							stack_pointer_rtx,
! 							-4)));
  	  /* FIXME: When dwarf2 frame output and unless asynchronous
  	     exceptions, make dwarf2 bundle together all stack
  	     adjustments like it does for registers between stack
--- 2706,2712 ----
  	   stdarg_regs > 0;
  	   regno--, pretend -= 4, stdarg_regs--)
  	{
! 	  insn = emit_insn (gen_add2_insn (stack_pointer_rtx, GEN_INT (-4)));
  	  /* FIXME: When dwarf2 frame output and unless asynchronous
  	     exceptions, make dwarf2 bundle together all stack
  	     adjustments like it does for registers between stack
*************** cris_expand_prologue (void)
*** 3194,3202 ****
    /* Save SRP if not a leaf function.  */
    if (return_address_on_stack)
      {
!       insn = emit_insn (gen_rtx_SET (stack_pointer_rtx,
! 				     plus_constant (Pmode, stack_pointer_rtx,
! 						    -4 - pretend)));
        pretend = 0;
        RTX_FRAME_RELATED_P (insn) = 1;
  
--- 2731,2738 ----
    /* Save SRP if not a leaf function.  */
    if (return_address_on_stack)
      {
!       insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
! 				       GEN_INT (-4 - pretend)));
        pretend = 0;
        RTX_FRAME_RELATED_P (insn) = 1;
  
*************** cris_expand_prologue (void)
*** 3210,3227 ****
    /* Set up the frame pointer, if needed.  */
    if (frame_pointer_needed)
      {
!       insn = emit_insn (gen_rtx_SET (stack_pointer_rtx,
! 				     plus_constant (Pmode, stack_pointer_rtx,
! 						    -4 - pretend)));
        pretend = 0;
        RTX_FRAME_RELATED_P (insn) = 1;
  
        mem = gen_rtx_MEM (SImode, stack_pointer_rtx);
        set_mem_alias_set (mem, get_frame_alias_set ());
!       insn = emit_move_insn (mem, frame_pointer_rtx);
        RTX_FRAME_RELATED_P (insn) = 1;
  
!       insn = emit_move_insn (frame_pointer_rtx, stack_pointer_rtx);
        RTX_FRAME_RELATED_P (insn) = 1;
  
        framesize += 4;
--- 2746,2762 ----
    /* Set up the frame pointer, if needed.  */
    if (frame_pointer_needed)
      {
!       insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
! 				       GEN_INT (-4 - pretend)));
        pretend = 0;
        RTX_FRAME_RELATED_P (insn) = 1;
  
        mem = gen_rtx_MEM (SImode, stack_pointer_rtx);
        set_mem_alias_set (mem, get_frame_alias_set ());
!       insn = emit_move_insn (mem, hard_frame_pointer_rtx);
        RTX_FRAME_RELATED_P (insn) = 1;
  
!       insn = emit_move_insn (hard_frame_pointer_rtx, stack_pointer_rtx);
        RTX_FRAME_RELATED_P (insn) = 1;
  
        framesize += 4;
*************** cris_expand_prologue (void)
*** 3236,3242 ****
       to be saved.  */
    for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
      {
!       if (cris_reg_saved_in_regsave_area (regno, got_really_used))
  	{
  	  n_movem_regs++;
  
--- 2771,2777 ----
       to be saved.  */
    for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
      {
!       if (cris_reg_saved_in_regsave_area (regno))
  	{
  	  n_movem_regs++;
  
*************** cris_expand_prologue (void)
*** 3259,3265 ****
  		     side-effects insns are allowed.  */
  		  if ((last_movem_reg + 1) * 4 + size >= 64
  		      && (last_movem_reg + 1) * 4 + size <= 128
! 		      && (cris_cpu_version >= CRIS_CPU_SVINTO || n_saved == 1)
  		      && TARGET_SIDE_EFFECT_PREFIXES)
  		    {
  		      mem
--- 2794,2803 ----
  		     side-effects insns are allowed.  */
  		  if ((last_movem_reg + 1) * 4 + size >= 64
  		      && (last_movem_reg + 1) * 4 + size <= 128
! 		      && cris_cpu_version >= CRIS_CPU_SVINTO
! 		      /* Don't use side-effect assignment for a single
! 			 move.  */
! 		      && n_saved > 1
  		      && TARGET_SIDE_EFFECT_PREFIXES)
  		    {
  		      mem
*************** cris_expand_prologue (void)
*** 3275,3284 ****
  		  else
  		    {
  		      insn
! 			= gen_rtx_SET (stack_pointer_rtx,
! 				       plus_constant (Pmode, stack_pointer_rtx,
! 						      -(n_saved * 4 + size)));
! 		      insn = emit_insn (insn);
  		      RTX_FRAME_RELATED_P (insn) = 1;
  
  		      mem = gen_rtx_MEM (SImode, stack_pointer_rtx);
--- 2813,2821 ----
  		  else
  		    {
  		      insn
! 			= emit_insn (gen_add2_insn (stack_pointer_rtx,
! 						    GEN_INT (-(n_saved * 4
! 							       + size))));
  		      RTX_FRAME_RELATED_P (insn) = 1;
  
  		      mem = gen_rtx_MEM (SImode, stack_pointer_rtx);
*************** cris_expand_prologue (void)
*** 3292,3301 ****
  		  size = 0;
  		}
  
! 	      insn = emit_insn (gen_rtx_SET (stack_pointer_rtx,
! 					     plus_constant (Pmode,
! 							    stack_pointer_rtx,
! 							    -4 - size)));
  	      RTX_FRAME_RELATED_P (insn) = 1;
  
  	      mem = gen_rtx_MEM (SImode, stack_pointer_rtx);
--- 2829,2836 ----
  		  size = 0;
  		}
  
! 	      insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
! 					       GEN_INT (-4 - size)));
  	      RTX_FRAME_RELATED_P (insn) = 1;
  
  	      mem = gen_rtx_MEM (SImode, stack_pointer_rtx);
*************** cris_expand_prologue (void)
*** 3319,3325 ****
  	 do it if side-effects insns are allowed.  */
        if ((last_movem_reg + 1) * 4 + size >= 64
  	  && (last_movem_reg + 1) * 4 + size <= 128
! 	  && (cris_cpu_version >= CRIS_CPU_SVINTO || n_saved == 1)
  	  && TARGET_SIDE_EFFECT_PREFIXES)
  	{
  	  mem
--- 2854,2862 ----
  	 do it if side-effects insns are allowed.  */
        if ((last_movem_reg + 1) * 4 + size >= 64
  	  && (last_movem_reg + 1) * 4 + size <= 128
! 	  && cris_cpu_version >= CRIS_CPU_SVINTO
! 	  /* Don't use side-effect assignment for a single move. */
! 	  && n_saved > 1
  	  && TARGET_SIDE_EFFECT_PREFIXES)
  	{
  	  mem
*************** cris_expand_prologue (void)
*** 3332,3342 ****
  	}
        else
  	{
! 	  insn
! 	    = gen_rtx_SET (stack_pointer_rtx,
! 			   plus_constant (Pmode, stack_pointer_rtx,
! 					  -(n_saved * 4 + size)));
! 	  insn = emit_insn (insn);
  	  RTX_FRAME_RELATED_P (insn) = 1;
  
  	  mem = gen_rtx_MEM (SImode, stack_pointer_rtx);
--- 2869,2876 ----
  	}
        else
  	{
! 	  insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
! 					   GEN_INT (-(n_saved * 4 + size))));
  	  RTX_FRAME_RELATED_P (insn) = 1;
  
  	  mem = gen_rtx_MEM (SImode, stack_pointer_rtx);
*************** cris_expand_prologue (void)
*** 3348,3390 ****
        /* We have to put outgoing argument space after regs.  */
        if (cfoa_size)
  	{
! 	  insn = emit_insn (gen_rtx_SET (stack_pointer_rtx,
! 					 plus_constant (Pmode,
! 							stack_pointer_rtx,
! 							-cfoa_size)));
  	  RTX_FRAME_RELATED_P (insn) = 1;
  	  framesize += cfoa_size;
  	}
      }
    else if ((size + cfoa_size) > 0)
      {
!       insn = emit_insn (gen_rtx_SET (stack_pointer_rtx,
! 				     plus_constant (Pmode,
! 						    stack_pointer_rtx,
! 						    -(cfoa_size + size))));
        RTX_FRAME_RELATED_P (insn) = 1;
        framesize += size + cfoa_size;
      }
  
!   /* Set up the PIC register, if it is used.  */
!   if (got_really_used)
!     {
!       rtx got
! 	= gen_rtx_UNSPEC (SImode, gen_rtvec (1, const0_rtx), CRIS_UNSPEC_GOT);
!       emit_move_insn (pic_offset_table_rtx, got);
! 
!       /* FIXME: This is a cover-up for flow2 messing up; it doesn't
! 	 follow exceptional paths and tries to delete the GOT load as
! 	 unused, if it isn't used on the non-exceptional paths.  Other
! 	 ports have similar or other cover-ups, or plain bugs marking
! 	 the GOT register load as maybe-dead.  To see this, remove the
! 	 line below and try libsupc++/vec.cc or a trivial
! 	 "static void y (); void x () {try {y ();} catch (...) {}}".  */
!       emit_use (pic_offset_table_rtx);
!     }
! 
    if (cris_max_stackframe && framesize > cris_max_stackframe)
      warning (0, "stackframe too big: %d bytes", framesize);
  }
  
  /* The expander for the epilogue pattern.  */
--- 2882,2908 ----
        /* We have to put outgoing argument space after regs.  */
        if (cfoa_size)
  	{
! 	  insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
! 					   GEN_INT (-cfoa_size)));
  	  RTX_FRAME_RELATED_P (insn) = 1;
  	  framesize += cfoa_size;
  	}
      }
    else if ((size + cfoa_size) > 0)
      {
!       insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
! 				       GEN_INT (-(cfoa_size + size))));
        RTX_FRAME_RELATED_P (insn) = 1;
        framesize += size + cfoa_size;
      }
  
!   /* FIXME: -mmax-stackframe=SIZE is obsoleted; use -Wstack-usage=SIZE
!      instead.  Make it an alias?  */
    if (cris_max_stackframe && framesize > cris_max_stackframe)
      warning (0, "stackframe too big: %d bytes", framesize);
+ 
+   if (flag_stack_usage_info)
+     current_function_static_stack_size = framesize;
  }
  
  /* The expander for the epilogue pattern.  */
*************** cris_expand_epilogue (void)
*** 3402,3424 ****
    /* A reference may have been optimized out
       (like the abort () in fde_split in unwind-dw2-fde.c, at least 3.2.1)
       so check that it's still used.  */
-   int got_really_used = false;
    int n_movem_regs = 0;
  
    if (!TARGET_PROLOGUE_EPILOGUE)
      return;
  
-   if (crtl->uses_pic_offset_table)
-     {
-       /* A reference may have been optimized out (like the abort () in
- 	 fde_split in unwind-dw2-fde.c, at least 3.2.1) so check that
- 	 it's still used.  */
-       push_topmost_sequence ();
-       got_really_used
- 	= reg_used_between_p (pic_offset_table_rtx, get_insns (), NULL);
-       pop_topmost_sequence ();
-     }
- 
    /* Align byte count of stack frame.  */
    if (TARGET_STACK_ALIGN)
      size = TARGET_ALIGN_BY_32 ? (size + 3) & ~3 : (size + 1) & ~1;
--- 2920,2930 ----
*************** cris_expand_epilogue (void)
*** 3428,3434 ****
    for (regno = 0;
         regno < FIRST_PSEUDO_REGISTER;
         regno++)
!     if (cris_reg_saved_in_regsave_area (regno, got_really_used))
        {
  	n_movem_regs++;
  
--- 2934,2940 ----
    for (regno = 0;
         regno < FIRST_PSEUDO_REGISTER;
         regno++)
!     if (cris_reg_saved_in_regsave_area (regno))
        {
  	n_movem_regs++;
  
*************** cris_expand_epilogue (void)
*** 3448,3454 ****
    for (regno = FIRST_PSEUDO_REGISTER - 1;
         regno > last_movem_reg;
         regno--)
!     if (cris_reg_saved_in_regsave_area (regno, got_really_used))
        {
  	rtx insn;
  
--- 2954,2960 ----
    for (regno = FIRST_PSEUDO_REGISTER - 1;
         regno > last_movem_reg;
         regno--)
!     if (cris_reg_saved_in_regsave_area (regno))
        {
  	rtx insn;
  
*************** cris_expand_epilogue (void)
*** 3456,3464 ****
  	  {
  	    /* There is an area for outgoing parameters located before
  	       the saved registers.  We have to adjust for that.  */
! 	    emit_insn (gen_rtx_SET (stack_pointer_rtx,
! 				    plus_constant (Pmode, stack_pointer_rtx,
! 						   argspace_offset)));
  	    /* Make sure we only do this once.  */
  	    argspace_offset = 0;
  	  }
--- 2962,2969 ----
  	  {
  	    /* There is an area for outgoing parameters located before
  	       the saved registers.  We have to adjust for that.  */
! 	    emit_insn (gen_add2_insn (stack_pointer_rtx,
! 				      GEN_INT (argspace_offset)));
  	    /* Make sure we only do this once.  */
  	    argspace_offset = 0;
  	  }
*************** cris_expand_epilogue (void)
*** 3481,3489 ****
  
        if (argspace_offset)
  	{
! 	  emit_insn (gen_rtx_SET (stack_pointer_rtx,
! 				  plus_constant (Pmode, stack_pointer_rtx,
! 						 argspace_offset)));
  	  argspace_offset = 0;
  	}
  
--- 2986,2992 ----
  
        if (argspace_offset)
  	{
! 	  emit_insn (gen_add2_insn (stack_pointer_rtx, GEN_INT (argspace_offset)));
  	  argspace_offset = 0;
  	}
  
*************** cris_expand_epilogue (void)
*** 3491,3498 ****
  			 gen_rtx_POST_INC (SImode, stack_pointer_rtx));
        set_mem_alias_set (mem, get_frame_alias_set ());
        insn
! 	= emit_insn (cris_gen_movem_load (mem,
! 					  GEN_INT (last_movem_reg + 1), 0));
        /* Whenever we emit insns with post-incremented addresses
  	 ourselves, we must add a post-inc note manually.  */
        if (side_effects_p (PATTERN (insn)))
--- 2994,3000 ----
  			 gen_rtx_POST_INC (SImode, stack_pointer_rtx));
        set_mem_alias_set (mem, get_frame_alias_set ());
        insn
! 	= emit_insn (cris_gen_movem_load (mem, GEN_INT (last_movem_reg + 1)));
        /* Whenever we emit insns with post-incremented addresses
  	 ourselves, we must add a post-inc note manually.  */
        if (side_effects_p (PATTERN (insn)))
*************** cris_expand_epilogue (void)
*** 3517,3527 ****
  
        emit_insn (gen_cris_frame_deallocated_barrier ());
  
!       emit_move_insn (stack_pointer_rtx, frame_pointer_rtx);
        mem = gen_rtx_MEM (SImode, gen_rtx_POST_INC (SImode,
  						   stack_pointer_rtx));
        set_mem_alias_set (mem, get_frame_alias_set ());
!       insn = emit_move_insn (frame_pointer_rtx, mem);
  
        /* Whenever we emit insns with post-incremented addresses
  	 ourselves, we must add a post-inc note manually.  */
--- 3019,3029 ----
  
        emit_insn (gen_cris_frame_deallocated_barrier ());
  
!       emit_move_insn (stack_pointer_rtx, hard_frame_pointer_rtx);
        mem = gen_rtx_MEM (SImode, gen_rtx_POST_INC (SImode,
  						   stack_pointer_rtx));
        set_mem_alias_set (mem, get_frame_alias_set ());
!       insn = emit_move_insn (hard_frame_pointer_rtx, mem);
  
        /* Whenever we emit insns with post-incremented addresses
  	 ourselves, we must add a post-inc note manually.  */
*************** cris_expand_epilogue (void)
*** 3539,3546 ****
  	 yet.  */
        size += argspace_offset;
  
!       emit_insn (gen_rtx_SET (stack_pointer_rtx,
! 			      plus_constant (Pmode, stack_pointer_rtx, size)));
      }
  
    /* If this function has no pushed register parameters
--- 3041,3047 ----
  	 yet.  */
        size += argspace_offset;
  
!       emit_insn (gen_add2_insn (stack_pointer_rtx, GEN_INT (size)));
      }
  
    /* If this function has no pushed register parameters
*************** cris_expand_epilogue (void)
*** 3548,3554 ****
       the return address on the stack.  */
    if (return_address_on_stack && pretend == 0)
      {
!       if (TARGET_V32 || crtl->calls_eh_return)
  	{
  	  rtx mem;
  	  rtx insn;
--- 3049,3055 ----
       the return address on the stack.  */
    if (return_address_on_stack && pretend == 0)
      {
!       if (crtl->calls_eh_return)
  	{
  	  rtx mem;
  	  rtx insn;
*************** cris_expand_epilogue (void)
*** 3565,3573 ****
  	    = alloc_EXPR_LIST (REG_INC, stack_pointer_rtx, REG_NOTES (insn));
  
  	  if (crtl->calls_eh_return)
! 	    emit_insn (gen_addsi3 (stack_pointer_rtx,
! 				   stack_pointer_rtx,
! 				   gen_raw_REG (SImode, CRIS_STACKADJ_REG)));
  	  cris_expand_return (false);
  	}
        else
--- 3066,3073 ----
  	    = alloc_EXPR_LIST (REG_INC, stack_pointer_rtx, REG_NOTES (insn));
  
  	  if (crtl->calls_eh_return)
! 	    emit_insn (gen_add2_insn (stack_pointer_rtx,
! 				      gen_raw_REG (SImode, CRIS_STACKADJ_REG)));
  	  cris_expand_return (false);
  	}
        else
*************** cris_expand_epilogue (void)
*** 3599,3621 ****
  	    = alloc_EXPR_LIST (REG_INC, stack_pointer_rtx, REG_NOTES (insn));
  	}
  
!       emit_insn (gen_rtx_SET (stack_pointer_rtx,
! 			      plus_constant (Pmode, stack_pointer_rtx,
! 					     pretend)));
      }
  
    /* Perform the "physical" unwinding that the EH machinery calculated.  */
    if (crtl->calls_eh_return)
!     emit_insn (gen_addsi3 (stack_pointer_rtx,
! 			   stack_pointer_rtx,
! 			   gen_raw_REG (SImode, CRIS_STACKADJ_REG)));
    cris_expand_return (false);
  }
  
  /* Worker function for generating movem from mem for load_multiple.  */
  
  rtx
! cris_gen_movem_load (rtx src, rtx nregs_rtx, int nprefix)
  {
    int nregs = INTVAL (nregs_rtx);
    rtvec vec;
--- 3099,3118 ----
  	    = alloc_EXPR_LIST (REG_INC, stack_pointer_rtx, REG_NOTES (insn));
  	}
  
!       emit_insn (gen_add2_insn (stack_pointer_rtx, GEN_INT (pretend)));
      }
  
    /* Perform the "physical" unwinding that the EH machinery calculated.  */
    if (crtl->calls_eh_return)
!     emit_insn (gen_add2_insn (stack_pointer_rtx,
! 			      gen_raw_REG (SImode, CRIS_STACKADJ_REG)));
    cris_expand_return (false);
  }
  
  /* Worker function for generating movem from mem for load_multiple.  */
  
  rtx
! cris_gen_movem_load (rtx src, rtx nregs_rtx)
  {
    int nregs = INTVAL (nregs_rtx);
    rtvec vec;
*************** cris_gen_movem_load (rtx src, rtx nregs_
*** 3625,3665 ****
    unsigned int regno = nregs - 1;
    int regno_inc = -1;
  
-   if (TARGET_V32)
-     {
-       regno = 0;
-       regno_inc = 1;
-     }
- 
    if (GET_CODE (srcreg) == POST_INC)
      srcreg = XEXP (srcreg, 0);
  
    CRIS_ASSERT (REG_P (srcreg));
  
!   /* Don't use movem for just one insn.  The insns are equivalent except
!      for the pipeline hazard (on v32); movem does not forward the loaded
!      registers so there's a three cycles penalty for their use.  */
    if (nregs == 1)
      return gen_movsi (gen_rtx_REG (SImode, 0), src);
  
!   vec = rtvec_alloc (nprefix + nregs
! 		     + (GET_CODE (XEXP (src, 0)) == POST_INC));
  
    if (GET_CODE (XEXP (src, 0)) == POST_INC)
      {
!       RTVEC_ELT (vec, nprefix + 1)
  	= gen_rtx_SET (srcreg, plus_constant (Pmode, srcreg, nregs * 4));
        eltno++;
      }
  
    src = replace_equiv_address (src, srcreg);
!   RTVEC_ELT (vec, nprefix)
      = gen_rtx_SET (gen_rtx_REG (SImode, regno), src);
    regno += regno_inc;
  
    for (i = 1; i < nregs; i++, eltno++)
      {
!       RTVEC_ELT (vec, nprefix + eltno)
  	= gen_rtx_SET (gen_rtx_REG (SImode, regno),
  		       adjust_address_nv (src, SImode, i * 4));
        regno += regno_inc;
--- 3122,3153 ----
    unsigned int regno = nregs - 1;
    int regno_inc = -1;
  
    if (GET_CODE (srcreg) == POST_INC)
      srcreg = XEXP (srcreg, 0);
  
    CRIS_ASSERT (REG_P (srcreg));
  
!   /* Don't use movem for just one insn.  The insns are equivalent.  */
    if (nregs == 1)
      return gen_movsi (gen_rtx_REG (SImode, 0), src);
  
!   vec = rtvec_alloc (nregs + (GET_CODE (XEXP (src, 0)) == POST_INC));
  
    if (GET_CODE (XEXP (src, 0)) == POST_INC)
      {
!       RTVEC_ELT (vec, 1)
  	= gen_rtx_SET (srcreg, plus_constant (Pmode, srcreg, nregs * 4));
        eltno++;
      }
  
    src = replace_equiv_address (src, srcreg);
!   RTVEC_ELT (vec, 0)
      = gen_rtx_SET (gen_rtx_REG (SImode, regno), src);
    regno += regno_inc;
  
    for (i = 1; i < nregs; i++, eltno++)
      {
!       RTVEC_ELT (vec, eltno)
  	= gen_rtx_SET (gen_rtx_REG (SImode, regno),
  		       adjust_address_nv (src, SImode, i * 4));
        regno += regno_inc;
*************** cris_gen_movem_load (rtx src, rtx nregs_
*** 3668,3673 ****
--- 3156,3177 ----
    return gen_rtx_PARALLEL (VOIDmode, vec);
  }
  
+ /* Convenience function for CRIS-local use of emit_insn, wrapping the
+    argument in a parallel with a clobber of CRIS_CC0_REGNUM before
+    passing on to emit_insn. */
+ 
+ rtx_insn *
+ cris_emit_insn (rtx x)
+ {
+   rtvec vec = rtvec_alloc (2);
+ 
+   RTVEC_ELT (vec, 0) = x;
+   RTVEC_ELT (vec, 1)
+     = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (CCmode, CRIS_CC0_REGNUM));
+ 
+   return emit_insn (gen_rtx_PARALLEL (VOIDmode, vec));
+ }
+ 
  /* Worker function for generating movem to mem.  If FRAME_RELATED, notes
     are added that the dwarf2 machinery understands.  */
  
*************** cris_emit_movem_store (rtx dest, rtx nre
*** 3684,3695 ****
    unsigned int regno = nregs - 1;
    int regno_inc = -1;
  
-   if (TARGET_V32)
-     {
-       regno = 0;
-       regno_inc = 1;
-     }
- 
    if (GET_CODE (destreg) == POST_INC)
      increment += nregs * 4;
  
--- 3188,3193 ----
*************** cris_emit_movem_store (rtx dest, rtx nre
*** 3698,3713 ****
  
    CRIS_ASSERT (REG_P (destreg));
  
!   /* Don't use movem for just one insn.  The insns are equivalent except
!      for the pipeline hazard (on v32); movem does not forward the loaded
!      registers so there's a three cycles penalty for use.  */
    if (nregs == 1)
      {
-       rtx mov = gen_rtx_SET (dest, gen_rtx_REG (SImode, 0));
- 
        if (increment == 0)
  	{
! 	  insn = emit_insn (mov);
  	  if (frame_related)
  	    RTX_FRAME_RELATED_P (insn) = 1;
  	  return insn;
--- 3196,3207 ----
  
    CRIS_ASSERT (REG_P (destreg));
  
!   /* Don't use movem for just one insn.  The insns are equivalent.  */
    if (nregs == 1)
      {
        if (increment == 0)
  	{
! 	  insn = emit_move_insn (dest, gen_rtx_REG (SImode, 0));
  	  if (frame_related)
  	    RTX_FRAME_RELATED_P (insn) = 1;
  	  return insn;
*************** cris_emit_movem_store (rtx dest, rtx nre
*** 3715,3725 ****
  
        /* If there was a request for a side-effect, create the ordinary
           parallel.  */
!       vec = rtvec_alloc (2);
  
        RTVEC_ELT (vec, 0) = mov;
        RTVEC_ELT (vec, 1) = gen_rtx_SET (destreg, plus_constant (Pmode, destreg,
  								increment));
        if (frame_related)
  	{
  	  RTX_FRAME_RELATED_P (mov) = 1;
--- 3209,3223 ----
  
        /* If there was a request for a side-effect, create the ordinary
           parallel.  */
!       vec = rtvec_alloc (3);
  
+       rtx mov = gen_rtx_SET (dest, gen_rtx_REG (SImode, 0));
        RTVEC_ELT (vec, 0) = mov;
        RTVEC_ELT (vec, 1) = gen_rtx_SET (destreg, plus_constant (Pmode, destreg,
  								increment));
+       RTVEC_ELT (vec, 2)
+ 	= gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (CCmode, CRIS_CC0_REGNUM));
+ 
        if (frame_related)
  	{
  	  RTX_FRAME_RELATED_P (mov) = 1;
*************** cris_emit_movem_store (rtx dest, rtx nre
*** 3800,3937 ****
    return insn;
  }
  
- /* Worker function for expanding the address for PIC function calls.  */
- 
- void
- cris_expand_pic_call_address (rtx *opp, rtx *markerp)
- {
-   rtx op = *opp;
- 
-   gcc_assert (flag_pic && MEM_P (op));
-   op = XEXP (op, 0);
- 
-   /* It might be that code can be generated that jumps to 0 (or to a
-      specific address).  Don't die on that.  (There is a
-      testcase.)  */
-   if (CONSTANT_P (op) && !CONST_INT_P (op))
-     {
-       enum cris_symbol_type t = cris_symbol_type_of (op);
- 
-       CRIS_ASSERT (can_create_pseudo_p ());
- 
-       /* For local symbols (non-PLT), just get the plain symbol
- 	 reference into a register.  For symbols that can be PLT, make
- 	 them PLT.  */
-       if (t == cris_rel_symbol)
- 	{
- 	  /* For v32, we're fine as-is; just PICify the symbol.  Forcing
- 	     into a register caused performance regression for 3.2.1,
- 	     observable in __floatdidf and elsewhere in libgcc.  */
- 	  if (TARGET_V32)
- 	    {
- 	      rtx sym = GET_CODE (op) != CONST ? op : get_related_value (op);
- 	      HOST_WIDE_INT offs = get_integer_term (op);
- 
- 	      /* We can't get calls to sym+N, N integer, can we?  */
- 	      gcc_assert (offs == 0);
- 
- 	      op = gen_rtx_CONST (Pmode,
- 				  gen_rtx_UNSPEC (Pmode, gen_rtvec (1, sym),
- 						  CRIS_UNSPEC_PCREL));
- 	    }
- 	  else
- 	    op = force_reg (Pmode, op);
- 
- 	  /* A local call.  */
- 	  *markerp = const0_rtx;
- 	}
-       else if (t == cris_got_symbol)
- 	{
- 	  if (TARGET_AVOID_GOTPLT)
- 	    {
- 	      /* Change a "jsr sym" into (allocate register rM, rO)
- 		 "move.d (const (unspec [sym] CRIS_UNSPEC_PLT_GOTREL)),rM"
- 		 "add.d rPIC,rM,rO", "jsr rO" for pre-v32 and
- 		 "jsr (const (unspec [sym] CRIS_UNSPEC_PLT_PCREL))"
- 		 for v32.  */
- 	      rtx tem, rm, ro;
- 
- 	      crtl->uses_pic_offset_table = 1;
- 	      tem = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, op),
- 				    TARGET_V32
- 				    ? CRIS_UNSPEC_PLT_PCREL
- 				    : CRIS_UNSPEC_PLT_GOTREL);
- 	      tem = gen_rtx_CONST (Pmode, tem);
- 	      if (TARGET_V32)
- 		op = tem;
- 	      else
- 		{
- 		  rm = gen_reg_rtx (Pmode);
- 		  emit_move_insn (rm, tem);
- 		  ro = gen_reg_rtx (Pmode);
- 		  if (expand_binop (Pmode, add_optab, rm,
- 				    pic_offset_table_rtx,
- 				    ro, 0, OPTAB_LIB_WIDEN) != ro)
- 		    internal_error ("expand_binop failed in movsi got");
- 		  op = ro;
- 		}
- 	    }
- 	  else
- 	    {
- 	      /* Change a "jsr sym" into (allocate register rM, rO)
- 		 "move.d (const (unspec [sym] CRIS_UNSPEC_PLTGOTREAD)),rM"
- 		 "add.d rPIC,rM,rO" "jsr [rO]" with the memory access
- 		 marked as not trapping and not aliasing.  No "move.d
- 		 [rO],rP" as that would invite to re-use of a value
- 		 that should not be reused.  FIXME: Need a peephole2
- 		 for cases when this is cse:d from the call, to change
- 		 back to just get the PLT entry address, so we don't
- 		 resolve the same symbol over and over (the memory
- 		 access of the PLTGOT isn't constant).  */
- 	      rtx tem, mem, rm, ro;
- 
- 	      gcc_assert (can_create_pseudo_p ());
- 	      crtl->uses_pic_offset_table = 1;
- 	      tem = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, op),
- 				    CRIS_UNSPEC_PLTGOTREAD);
- 	      rm = gen_reg_rtx (Pmode);
- 	      emit_move_insn (rm, gen_rtx_CONST (Pmode, tem));
- 	      ro = gen_reg_rtx (Pmode);
- 	      if (expand_binop (Pmode, add_optab, rm,
- 				pic_offset_table_rtx,
- 				ro, 0, OPTAB_LIB_WIDEN) != ro)
- 		internal_error ("expand_binop failed in movsi got");
- 	      mem = gen_rtx_MEM (Pmode, ro);
- 
- 	      /* This MEM doesn't alias anything.  Whether it aliases
- 		 other same symbols is unimportant.  */
- 	      set_mem_alias_set (mem, new_alias_set ());
- 	      MEM_NOTRAP_P (mem) = 1;
- 	      op = mem;
- 	    }
- 
- 	  /* We need to prepare this call to go through the PLT; we
- 	     need to make GOT available.  */
- 	  *markerp = pic_offset_table_rtx;
- 	}
-       else
- 	/* Can't possibly get anything else for a function-call, right?  */
- 	fatal_insn ("unidentifiable call op", op);
- 
-       /* If the validizing variant is called, it will try to validize
- 	 the address as a valid any-operand constant, but as it's only
- 	 valid for calls and moves, it will fail and always be forced
- 	 into a register.  */
-       *opp = replace_equiv_address_nv (*opp, op);
-     }
-   else
-     /* Can't tell what locality a call to a non-constant address has;
-        better make the GOT register alive at it.
-        FIXME: Can we see whether the register has known constant
-        contents?  */
-     *markerp = pic_offset_table_rtx;
- }
- 
  /* Make sure operands are in the right order for an addsi3 insn as
     generated by a define_split.  Nothing but REG_P as the first
     operand is recognized by addsi3 after reload.  OPERANDS contains
--- 3298,3303 ----
*************** void
*** 3968,3987 ****
  cris_asm_output_symbol_ref (FILE *file, rtx x)
  {
    gcc_assert (GET_CODE (x) == SYMBOL_REF);
! 
!   if (flag_pic && in_code > 0)
!     {
!      const char *origstr = XSTR (x, 0);
!      const char *str;
!      str = (* targetm.strip_name_encoding) (origstr);
!      assemble_name (file, str);
! 
!      /* Sanity check.  */
!      if (!TARGET_V32 && !crtl->uses_pic_offset_table)
!        output_operand_lossage ("PIC register isn't set up");
!     }
!   else
!     assemble_name (file, XSTR (x, 0));
  }
  
  /* Worker function for ASM_OUTPUT_LABEL_REF.  */
--- 3334,3340 ----
  cris_asm_output_symbol_ref (FILE *file, rtx x)
  {
    gcc_assert (GET_CODE (x) == SYMBOL_REF);
!   assemble_name (file, XSTR (x, 0));
  }
  
  /* Worker function for ASM_OUTPUT_LABEL_REF.  */
*************** cris_asm_output_symbol_ref (FILE *file,
*** 3989,4068 ****
  void
  cris_asm_output_label_ref (FILE *file, char *buf)
  {
!   if (flag_pic && in_code > 0)
!     {
!       assemble_name (file, buf);
! 
!       /* Sanity check.  */
!       if (!TARGET_V32 && !crtl->uses_pic_offset_table)
! 	internal_error ("emitting PIC operand, but PIC register "
! 			"isn%'t set up");
!     }
!   else
!     assemble_name (file, buf);
! }
! 
! /* Worker function for TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA.  */
! 
! static bool
! cris_output_addr_const_extra (FILE *file, rtx xconst)
! {
!   switch (GET_CODE (xconst))
!     {
!       rtx x;
! 
!     case UNSPEC:
!       x = XVECEXP (xconst, 0, 0);
!       CRIS_ASSERT (GET_CODE (x) == SYMBOL_REF
! 		   || GET_CODE (x) == LABEL_REF
! 		   || GET_CODE (x) == CONST);
!       output_addr_const (file, x);
!       switch (XINT (xconst, 1))
! 	{
! 	case CRIS_UNSPEC_PCREL:
! 	  /* We only get this with -fpic/PIC to tell it apart from an
! 	     invalid symbol.  We can't tell here, but it should only
! 	     be the operand of a call or movsi.  */
! 	  gcc_assert (TARGET_V32 && flag_pic);
! 	  break;
! 
! 	case CRIS_UNSPEC_PLT_PCREL:
! 	  gcc_assert (TARGET_V32);
! 	  fprintf (file, ":PLT");
! 	  break;
! 
! 	case CRIS_UNSPEC_PLT_GOTREL:
! 	  gcc_assert (!TARGET_V32);
! 	  fprintf (file, ":PLTG");
! 	  break;
! 
! 	case CRIS_UNSPEC_GOTREL:
! 	  gcc_assert (!TARGET_V32);
! 	  fprintf (file, ":GOTOFF");
! 	  break;
! 
! 	case CRIS_UNSPEC_GOTREAD:
! 	  if (flag_pic == 1)
! 	    fprintf (file, ":GOT16");
! 	  else
! 	    fprintf (file, ":GOT");
! 	  break;
! 
! 	case CRIS_UNSPEC_PLTGOTREAD:
! 	  if (flag_pic == 1)
! 	    fprintf (file, CRIS_GOTPLT_SUFFIX "16");
! 	  else
! 	    fprintf (file, CRIS_GOTPLT_SUFFIX);
! 	  break;
! 
! 	default:
! 	  gcc_unreachable ();
! 	}
!       return true;
! 
!     default:
!       return false;
!     }
  }
  
  /* Worker function for TARGET_STRUCT_VALUE_RTX.  */
--- 3342,3348 ----
  void
  cris_asm_output_label_ref (FILE *file, char *buf)
  {
!   assemble_name (file, buf);
  }
  
  /* Worker function for TARGET_STRUCT_VALUE_RTX.  */
*************** cris_function_arg_advance (cumulative_ar
*** 4225,4232 ****
  
  static rtx_insn *
  cris_md_asm_adjust (vec<rtx> &outputs, vec<rtx> &inputs,
! 		    vec<const char *> &constraints,
! 		    vec<rtx> &clobbers, HARD_REG_SET &clobbered_regs)
  {
    /* For the time being, all asms clobber condition codes.
       Revisit when there's a reasonable use for inputs/outputs
--- 3505,3513 ----
  
  static rtx_insn *
  cris_md_asm_adjust (vec<rtx> &outputs, vec<rtx> &inputs,
! 		    vec<machine_mode> & /*input_modes*/,
! 		    vec<const char *> &constraints, vec<rtx> &clobbers,
! 		    HARD_REG_SET &clobbered_regs)
  {
    /* For the time being, all asms clobber condition codes.
       Revisit when there's a reasonable use for inputs/outputs
*************** cris_frame_pointer_required (void)
*** 4286,4336 ****
  static void
  cris_asm_trampoline_template (FILE *f)
  {
!   if (TARGET_V32)
!     {
!       /* This normally-unused nop insn acts as an instruction to
! 	 the simulator to flush its instruction cache.  None of
! 	 the other instructions in the trampoline template suits
! 	 as a trigger for V32.  The pc-relative addressing mode
! 	 works nicely as a trigger for V10.
! 	 FIXME: Have specific V32 template (possibly avoiding the
! 	 use of a special instruction).  */
!       fprintf (f, "\tclearf x\n");
!       /* We have to use a register as an intermediate, choosing
! 	 semi-randomly R1 (which has to not be the STATIC_CHAIN_REGNUM),
! 	 so we can use it for address indirection and jsr target.  */
!       fprintf (f, "\tmove $r1,$mof\n");
!       /* +4 */
!       fprintf (f, "\tmove.d 0,$r1\n");
!       fprintf (f, "\tmove.d $%s,[$r1]\n", reg_names[STATIC_CHAIN_REGNUM]);
!       fprintf (f, "\taddq 6,$r1\n");
!       fprintf (f, "\tmove $mof,[$r1]\n");
!       fprintf (f, "\taddq 6,$r1\n");
!       fprintf (f, "\tmove $srp,[$r1]\n");
!       /* +20 */
!       fprintf (f, "\tmove.d 0,$%s\n", reg_names[STATIC_CHAIN_REGNUM]);
!       /* +26 */
!       fprintf (f, "\tmove.d 0,$r1\n");
!       fprintf (f, "\tjsr $r1\n");
!       fprintf (f, "\tsetf\n");
!       /* +36 */
!       fprintf (f, "\tmove.d 0,$%s\n", reg_names[STATIC_CHAIN_REGNUM]);
!       /* +42 */
!       fprintf (f, "\tmove.d 0,$r1\n");
!       /* +48 */
!       fprintf (f, "\tmove.d 0,$r9\n");
!       fprintf (f, "\tjump $r9\n");
!       fprintf (f, "\tsetf\n");
!     }
!   else
!     {
!       fprintf (f, "\tmove.d $%s,[$pc+20]\n", reg_names[STATIC_CHAIN_REGNUM]);
!       fprintf (f, "\tmove $srp,[$pc+22]\n");
!       fprintf (f, "\tmove.d 0,$%s\n", reg_names[STATIC_CHAIN_REGNUM]);
!       fprintf (f, "\tjsr 0\n");
!       fprintf (f, "\tmove.d 0,$%s\n", reg_names[STATIC_CHAIN_REGNUM]);
!       fprintf (f, "\tjump 0\n");
!     }
  }
  
  /* Implement TARGET_TRAMPOLINE_INIT.  */
--- 3567,3578 ----
  static void
  cris_asm_trampoline_template (FILE *f)
  {
!   fprintf (f, "\tmove.d $%s,[$pc+20]\n", reg_names[STATIC_CHAIN_REGNUM]);
!   fprintf (f, "\tmove $srp,[$pc+22]\n");
!   fprintf (f, "\tmove.d 0,$%s\n", reg_names[STATIC_CHAIN_REGNUM]);
!   fprintf (f, "\tjsr 0\n");
!   fprintf (f, "\tmove.d 0,$%s\n", reg_names[STATIC_CHAIN_REGNUM]);
!   fprintf (f, "\tjump 0\n");
  }
  
  /* Implement TARGET_TRAMPOLINE_INIT.  */
*************** static void
*** 4339,4366 ****
  cris_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
  {
    rtx fnaddr = XEXP (DECL_RTL (fndecl), 0);
-   rtx tramp = XEXP (m_tramp, 0);
    rtx mem;
  
    emit_block_move (m_tramp, assemble_trampoline_template (),
  		   GEN_INT (TRAMPOLINE_SIZE), BLOCK_OP_NORMAL);
  
!   if (TARGET_V32)
!     {
!       mem = adjust_address (m_tramp, SImode, 6);
!       emit_move_insn (mem, plus_constant (Pmode, tramp, 38));
!       mem = adjust_address (m_tramp, SImode, 22);
!       emit_move_insn (mem, chain_value);
!       mem = adjust_address (m_tramp, SImode, 28);
!       emit_move_insn (mem, fnaddr);
!     }
!   else
!     {
!       mem = adjust_address (m_tramp, SImode, 10);
!       emit_move_insn (mem, chain_value);
!       mem = adjust_address (m_tramp, SImode, 16);
!       emit_move_insn (mem, fnaddr);
!     }
  
    /* Note that there is no need to do anything with the cache for
       sake of a trampoline.  */
--- 3581,3595 ----
  cris_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
  {
    rtx fnaddr = XEXP (DECL_RTL (fndecl), 0);
    rtx mem;
  
    emit_block_move (m_tramp, assemble_trampoline_template (),
  		   GEN_INT (TRAMPOLINE_SIZE), BLOCK_OP_NORMAL);
  
!   mem = adjust_address (m_tramp, SImode, 10);
!   emit_move_insn (mem, chain_value);
!   mem = adjust_address (m_tramp, SImode, 16);
!   emit_move_insn (mem, fnaddr);
  
    /* Note that there is no need to do anything with the cache for
       sake of a trampoline.  */
*************** cris_hard_regno_mode_ok (unsigned int re
*** 4389,4395 ****
  {
    return ((mode == CCmode || regno != CRIS_CC0_REGNUM)
  	  && (GET_MODE_SIZE (mode) <= UNITS_PER_WORD
! 	      || (regno != CRIS_MOF_REGNUM && regno != CRIS_ACR_REGNUM)));
  }
  
  /* Return the preferred minimum alignment for a static object.  */
--- 3618,3624 ----
  {
    return ((mode == CCmode || regno != CRIS_CC0_REGNUM)
  	  && (GET_MODE_SIZE (mode) <= UNITS_PER_WORD
! 	      || regno != CRIS_MOF_REGNUM));
  }
  
  /* Return the preferred minimum alignment for a static object.  */
diff -Nrcpad gcc-10.3.0/gcc/config/cris/cris.h gcc-11.1.0/gcc/config/cris/cris.h
*** gcc-10.3.0/gcc/config/cris/cris.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cris/cris.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for GCC.  Part of the machine description for CRIS.
!    Copyright (C) 1998-2020 Free Software Foundation, Inc.
     Contributed by Axis Communications.  Written by Hans-Peter Nilsson.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for GCC.  Part of the machine description for CRIS.
!    Copyright (C) 1998-2021 Free Software Foundation, Inc.
     Contributed by Axis Communications.  Written by Hans-Peter Nilsson.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 64,78 ****
     never clash with it for GCC purposes.  */
  #define CRIS_CANONICAL_CC0_REGNUM (16 + 13)
  
- /* When generating PIC, these suffixes are added to the names of non-local
-    functions when being output.  Contrary to other ports, we have offsets
-    relative to the GOT, not the PC.  We might implement PC-relative PLT
-    semantics later for the general case; they are used in some cases right
-    now, such as MI thunks.  */
- #define CRIS_GOTPLT_SUFFIX ":GOTPLT"
- #define CRIS_PLT_GOTOFFSET_SUFFIX ":PLTG"
- #define CRIS_PLT_PCOFFSET_SUFFIX ":PLT"
- 
  #define CRIS_FUNCTION_ARG_SIZE(MODE, TYPE)	\
    ((MODE) != BLKmode ? GET_MODE_SIZE (MODE)	\
     : (unsigned) int_size_in_bytes (TYPE))
--- 64,69 ----
*************** extern int cris_cpu_version;
*** 115,133 ****
  #define CRIS_DEFAULT_ASM_ARCH_OPTION ""
  
  #ifdef TARGET_CPU_DEFAULT
! #if TARGET_CPU_DEFAULT != 32 && TARGET_CPU_DEFAULT != 10
   #error "Due to '()'; e.g. '#define TARGET_CPU_DEFAULT (10)', stringize TARGET_CPU_DEFAULT isn't useful: update manually."
  #endif
  
- #if TARGET_CPU_DEFAULT == 32
- #undef CRIS_DEFAULT_TUNE
- #define CRIS_DEFAULT_TUNE "32"
- /* To enable use of "generic" cris-axis-elf binutils, always pass the
-    architecture option to GAS.  (We don't do this for non-v32.)  */
- #undef CRIS_DEFAULT_ASM_ARCH_OPTION
- #define CRIS_DEFAULT_ASM_ARCH_OPTION "--march=v32"
- #endif
- 
  #undef CRIS_ARCH_CPP_DEFAULT
  #define CRIS_ARCH_CPP_DEFAULT \
   "%{!march=*:\
--- 106,115 ----
  #define CRIS_DEFAULT_ASM_ARCH_OPTION ""
  
  #ifdef TARGET_CPU_DEFAULT
! #if TARGET_CPU_DEFAULT != 10
   #error "Due to '()'; e.g. '#define TARGET_CPU_DEFAULT (10)', stringize TARGET_CPU_DEFAULT isn't useful: update manually."
  #endif
  
  #undef CRIS_ARCH_CPP_DEFAULT
  #define CRIS_ARCH_CPP_DEFAULT \
   "%{!march=*:\
*************** extern int cris_cpu_version;
*** 183,190 ****
   "%(asm_subtarget)\
   %{march=*:%{mcpu=*:%edo not specify both -march=... and -mcpu=...}}\
   %{march=v0|mcpu=v0|march=v3|mcpu=v3|march=v8|mcpu=v8:--march=v0_v10}\
!  %{march=v10|mcpu=v10:--march=v10}\
!  %{march=v32|mcpu=v32:--march=v32}"
  
  /* For the cris-*-elf subtarget.  */
  #define CRIS_ASM_SUBTARGET_SPEC \
--- 165,171 ----
   "%(asm_subtarget)\
   %{march=*:%{mcpu=*:%edo not specify both -march=... and -mcpu=...}}\
   %{march=v0|mcpu=v0|march=v3|mcpu=v3|march=v8|mcpu=v8:--march=v0_v10}\
!  %{march=v10|mcpu=v10:--march=v10}"
  
  /* For the cris-*-elf subtarget.  */
  #define CRIS_ASM_SUBTARGET_SPEC \
*************** extern int cris_cpu_version;
*** 252,261 ****
      }						\
    while (0)
  
- /* Previously controlled by target_flags.  Note that this is *not* set
-    for -melinux.  */
- #define TARGET_LINUX 0
- 
  /* For the cris-*-elf subtarget.  */
  #define CRIS_SUBTARGET_DEFAULT 0
  
--- 233,238 ----
*************** extern int cris_cpu_version;
*** 263,286 ****
  #define CRIS_CPU_ETRAX4 3	/* Just lz added.  */
  #define CRIS_CPU_SVINTO 8	/* Added swap, jsrc & Co., 32-bit accesses.  */
  #define CRIS_CPU_NG 10		/* Added mul[su].  */
- #define CRIS_CPU_V32 32		/* Major changes.  */
  
  #ifndef TARGET_CPU_DEFAULT
  #define TARGET_CPU_DEFAULT CRIS_CPU_BASE
  #endif
  
  /* Default target_flags if no switches specified.
!    The alignment-by-32 is to make builtin atomic support for v10 and v32
     work for *-elf for types without specified alignment (like plain
     "int").  See top comment in sync.md.  */
  #ifndef TARGET_DEFAULT
! # if TARGET_CPU_DEFAULT == 32
! #  define TARGET_DEFAULT \
!  (MASK_STACK_ALIGN \
!   + MASK_CONST_ALIGN + MASK_DATA_ALIGN \
!   + MASK_ALIGN_BY_32 \
!   + MASK_PROLOGUE_EPILOGUE)
! # elif TARGET_CPU_DEFAULT == 10
  #  define TARGET_DEFAULT \
   (MASK_SIDE_EFFECT_PREFIXES + MASK_STACK_ALIGN \
    + MASK_CONST_ALIGN + MASK_DATA_ALIGN \
--- 240,256 ----
  #define CRIS_CPU_ETRAX4 3	/* Just lz added.  */
  #define CRIS_CPU_SVINTO 8	/* Added swap, jsrc & Co., 32-bit accesses.  */
  #define CRIS_CPU_NG 10		/* Added mul[su].  */
  
  #ifndef TARGET_CPU_DEFAULT
  #define TARGET_CPU_DEFAULT CRIS_CPU_BASE
  #endif
  
  /* Default target_flags if no switches specified.
!    The alignment-by-32 is to make builtin atomic support for v10
     work for *-elf for types without specified alignment (like plain
     "int").  See top comment in sync.md.  */
  #ifndef TARGET_DEFAULT
! # if TARGET_CPU_DEFAULT == 10
  #  define TARGET_DEFAULT \
   (MASK_SIDE_EFFECT_PREFIXES + MASK_STACK_ALIGN \
    + MASK_CONST_ALIGN + MASK_DATA_ALIGN \
*************** extern int cris_cpu_version;
*** 301,316 ****
  #define TARGET_HAS_LZ (cris_cpu_version >= CRIS_CPU_ETRAX4)
  #define TARGET_HAS_BREAK (cris_cpu_version >= CRIS_CPU_ETRAX4)
  #define TARGET_HAS_SWAP (cris_cpu_version >= CRIS_CPU_SVINTO)
- #define TARGET_V32 (cris_cpu_version >= CRIS_CPU_V32)
  
  /* The "break" instruction was introduced with ETRAX 4.  */
  #define TARGET_TRAP_USING_BREAK8 \
   (cris_trap_using_break8 == 2 ? TARGET_HAS_BREAK : cris_trap_using_break8)
  
! /* Call library functions by default for GNU/Linux.  */
  #define TARGET_ATOMICS_MAY_CALL_LIBFUNCS		\
!  (cris_atomics_calling_libfunc == 2			\
!   ? TARGET_LINUX : cris_atomics_calling_libfunc)
  
  /* The < v10 atomics turn off interrupts, so they don't need alignment.
     Incidentally, by default alignment is off there causing variables to
--- 271,285 ----
  #define TARGET_HAS_LZ (cris_cpu_version >= CRIS_CPU_ETRAX4)
  #define TARGET_HAS_BREAK (cris_cpu_version >= CRIS_CPU_ETRAX4)
  #define TARGET_HAS_SWAP (cris_cpu_version >= CRIS_CPU_SVINTO)
  
  /* The "break" instruction was introduced with ETRAX 4.  */
  #define TARGET_TRAP_USING_BREAK8 \
   (cris_trap_using_break8 == 2 ? TARGET_HAS_BREAK : cris_trap_using_break8)
  
! /* This condition controls whether to expand atomics inline or call
!    library functions. */
  #define TARGET_ATOMICS_MAY_CALL_LIBFUNCS		\
!  (cris_atomics_calling_libfunc != 2 && cris_atomics_calling_libfunc != 0)
  
  /* The < v10 atomics turn off interrupts, so they don't need alignment.
     Incidentally, by default alignment is off there causing variables to
*************** extern int cris_cpu_version;
*** 319,325 ****
     specify as aligned.  */
  #define TARGET_TRAP_UNALIGNED_ATOMIC		\
   (cris_trap_unaligned_atomic == 2		\
!   ? (TARGET_V32 || cris_cpu_version == 10)	\
    : cris_trap_unaligned_atomic)
  
  /* Node: Storage Layout */
--- 288,294 ----
     specify as aligned.  */
  #define TARGET_TRAP_UNALIGNED_ATOMIC		\
   (cris_trap_unaligned_atomic == 2		\
!   ? cris_cpu_version == 10			\
    : cris_trap_unaligned_atomic)
  
  /* Node: Storage Layout */
*************** extern int cris_cpu_version;
*** 383,395 ****
     with other GNU/Linux ports (i.e. elfos.h users).  */
  #undef PCC_BITFIELD_TYPE_MATTERS
  
- /* This is only used for non-scalars.  Strange stuff happens to structs
-    (FIXME: What?) if we use anything larger than largest actually used
-    datum size, so lets make it 32.  The type "long long" will still work
-    as usual.  We can still have DImode insns, but they will only be used
-    for scalar data (i.e. long long).  */
- #define MAX_FIXED_MODE_SIZE 32
- 
  
  /* Node: Type Layout */
  
--- 352,357 ----
*************** extern int cris_cpu_version;
*** 411,418 ****
  /* Node: Register Basics */
  
  /*  We count all 16 non-special registers, SRP, a faked argument
!     pointer register, MOF and CCR/DCCR.  */
! #define FIRST_PSEUDO_REGISTER (16 + 1 + 1 + 1 + 1)
  
  /* For CRIS, these are r15 (pc) and r14 (sp). Register r8 is used as a
     frame-pointer, but is not fixed.  SRP is not included in general
--- 373,380 ----
  /* Node: Register Basics */
  
  /*  We count all 16 non-special registers, SRP, a faked argument
!     pointer register, MOF, CCR/DCCR, and the faked frame-pointer.  */
! #define FIRST_PSEUDO_REGISTER (16 + 1 + 1 + 1 + 1 + 1)
  
  /* For CRIS, these are r15 (pc) and r14 (sp). Register r8 is used as a
     frame-pointer, but is not fixed.  SRP is not included in general
*************** extern int cris_cpu_version;
*** 420,431 ****
     registers are fixed at the moment.  The faked argument pointer register
     is fixed too.  */
  #define FIXED_REGISTERS \
!  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1}
  
  /* Register r9 is used for structure-address, r10-r13 for parameters,
     r10- for return values.  */
  #define CALL_USED_REGISTERS \
!  {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1}
  
  /* Node: Allocation Order */
  
--- 382,393 ----
     registers are fixed at the moment.  The faked argument pointer register
     is fixed too.  */
  #define FIXED_REGISTERS \
!  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1}
  
  /* Register r9 is used for structure-address, r10-r13 for parameters,
     r10- for return values.  */
  #define CALL_USED_REGISTERS \
!  {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1}
  
  /* Node: Allocation Order */
  
*************** extern int cris_cpu_version;
*** 448,461 ****
      Use struct-return address first, since very few functions use
     structure return values so it is likely to be available.  */
  #define REG_ALLOC_ORDER \
!  {9, 13, 12, 11, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 14, 15, 17, 16, 18, 19}
! 
! /* Use MOF and ACR.  Prefer ACR before any other register.  Prefer MOF
!    then SRP after saved registers.  The *after* is because they're only
!    useful for storage, not for things being computed, which is
!    apparently more common.  */
! #define REG_ALLOC_ORDER_V32 \
!  {15, 9, 13, 12, 11, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 17, 16, 14, 18, 19}
  
  
  /* Node: Leaf Functions */
--- 410,417 ----
      Use struct-return address first, since very few functions use
     structure return values so it is likely to be available.  */
  #define REG_ALLOC_ORDER \
!  {9, 13, 12, 11, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 14, 15, 17, 16, 18, 19,	\
!   20}
  
  
  /* Node: Leaf Functions */
*************** enum reg_class
*** 496,501 ****
--- 452,460 ----
  #define CRIS_SPECIAL_REGS_CONTENTS					\
   ((1 << CRIS_SRP_REGNUM) | (1 << CRIS_MOF_REGNUM) | (1 << CRIS_CC0_REGNUM))
  
+ #define CRIS_FAKED_REGS_CONTENTS \
+  ((1 << CRIS_AP_REGNUM) | (1 << CRIS_FP_REGNUM))
+ 
  /* Count in the faked argument register in GENERAL_REGS.  Keep out SRP.  */
  #define REG_CLASS_CONTENTS			\
    {						\
*************** enum reg_class
*** 509,521 ****
     {CRIS_SPECIAL_REGS_CONTENTS},		\
     {CRIS_SPECIAL_REGS_CONTENTS			\
      | (1 << CRIS_ACR_REGNUM)},			\
!    {(0xffff | (1 << CRIS_AP_REGNUM))		\
      & ~(1 << CRIS_ACR_REGNUM)},			\
!    {(0xffff | (1 << CRIS_AP_REGNUM)		\
      | CRIS_SPECIAL_REGS_CONTENTS)		\
      & ~(1 << CRIS_ACR_REGNUM)},			\
!    {0xffff | (1 << CRIS_AP_REGNUM)},		\
!    {0xffff | (1 << CRIS_AP_REGNUM)		\
      | CRIS_SPECIAL_REGS_CONTENTS}		\
    }
  
--- 468,480 ----
     {CRIS_SPECIAL_REGS_CONTENTS},		\
     {CRIS_SPECIAL_REGS_CONTENTS			\
      | (1 << CRIS_ACR_REGNUM)},			\
!    {(0xffff | CRIS_FAKED_REGS_CONTENTS)		\
      & ~(1 << CRIS_ACR_REGNUM)},			\
!    {(0xffff | CRIS_FAKED_REGS_CONTENTS		\
      | CRIS_SPECIAL_REGS_CONTENTS)		\
      & ~(1 << CRIS_ACR_REGNUM)},			\
!    {0xffff | CRIS_FAKED_REGS_CONTENTS},		\
!    {0xffff | CRIS_FAKED_REGS_CONTENTS		\
      | CRIS_SPECIAL_REGS_CONTENTS}		\
    }
  
*************** enum reg_class
*** 538,555 ****
     allocation.  */
  #define REGNO_OK_FOR_BASE_P(REGNO)					\
   ((REGNO) <= CRIS_LAST_GENERAL_REGISTER					\
    || (REGNO) == ARG_POINTER_REGNUM					\
    || (unsigned) reg_renumber[REGNO] <= CRIS_LAST_GENERAL_REGISTER	\
    || (unsigned) reg_renumber[REGNO] == ARG_POINTER_REGNUM)
  
- /* REGNO_OK_FOR_BASE_P seems to be obsolete wrt. this one, but not yet
-    documented as such.  */
- #define REGNO_MODE_CODE_OK_FOR_BASE_P(REGNO, MODE, AS, OCODE, ICODE)	\
-  (REGNO_OK_FOR_BASE_P (REGNO)						\
-   && ((OCODE) != POST_INC						\
-       || !((REGNO) == CRIS_ACR_REGNUM					\
- 	   || (unsigned) reg_renumber[REGNO] == CRIS_ACR_REGNUM)))
- 
  /* See REGNO_OK_FOR_BASE_P.  */
  #define REGNO_OK_FOR_INDEX_P(REGNO) REGNO_OK_FOR_BASE_P(REGNO)
  
--- 497,508 ----
     allocation.  */
  #define REGNO_OK_FOR_BASE_P(REGNO)					\
   ((REGNO) <= CRIS_LAST_GENERAL_REGISTER					\
+   || (REGNO) == FRAME_POINTER_REGNUM					\
    || (REGNO) == ARG_POINTER_REGNUM					\
    || (unsigned) reg_renumber[REGNO] <= CRIS_LAST_GENERAL_REGISTER	\
+   || (unsigned) reg_renumber[REGNO] == FRAME_POINTER_REGNUM		\
    || (unsigned) reg_renumber[REGNO] == ARG_POINTER_REGNUM)
  
  /* See REGNO_OK_FOR_BASE_P.  */
  #define REGNO_OK_FOR_INDEX_P(REGNO) REGNO_OK_FOR_BASE_P(REGNO)
  
*************** enum reg_class
*** 566,576 ****
  				    GENERAL_REGS)))			\
     ? GENERAL_REGS : NO_REGS)
  
- /* FIXME: Fix regrename.c; it should check validity of replacements,
-    not just with a silly pass-specific macro.  We may miss some
-    opportunities, but we must stop regrename from creating acr++.  */
- #define HARD_REGNO_RENAME_OK(FROM, TO) ((TO) != CRIS_ACR_REGNUM)
- 
  /* For CRIS, this is always the size of MODE in words,
     since all registers are the same size.  To use omitted modes in
     patterns with reload constraints, you must say the widest size
--- 519,524 ----
*************** enum reg_class
*** 638,643 ****
--- 586,594 ----
  
  /* Register used for frame pointer.  This is also the last of the saved
     registers, when a frame pointer is not used.  */
+ #define HARD_FRAME_POINTER_REGNUM CRIS_REAL_FP_REGNUM
+ 
+ /* Faked register, is always eliminated to at least CRIS_REAL_FP_REGNUM.  */
  #define FRAME_POINTER_REGNUM CRIS_FP_REGNUM
  
  /* Faked register, is always eliminated.  We need it to eliminate
*************** enum reg_class
*** 646,658 ****
  
  #define STATIC_CHAIN_REGNUM CRIS_STATIC_CHAIN_REGNUM
  
  
  /* Node: Elimination */
  
  #define ELIMINABLE_REGS				\
   {{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM},	\
!   {ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM},	\
!   {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}}
  
  #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
   (OFFSET) = cris_initial_elimination_offset (FROM, TO)
--- 597,613 ----
  
  #define STATIC_CHAIN_REGNUM CRIS_STATIC_CHAIN_REGNUM
  
+ /* No unwind context is needed for faked registers nor DCCR.  Currently not MOF
+    too, but let's keep that open.  */
+ #define DWARF_FRAME_REGISTERS (CRIS_MOF_REGNUM + 1)
  
  /* Node: Elimination */
  
  #define ELIMINABLE_REGS				\
   {{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM},	\
!   {ARG_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM},	\
!   {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM},	\
!   {FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}}
  
  #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
   (OFFSET) = cris_initial_elimination_offset (FROM, TO)
*************** struct cum_args {int regs;};
*** 716,722 ****
  
  /* Node: Trampolines */
  
! #define TRAMPOLINE_SIZE (TARGET_V32 ? 58 : 32)
  
  /* CRIS wants instructions on word-boundary.  */
  #define TRAMPOLINE_ALIGNMENT 16
--- 671,677 ----
  
  /* Node: Trampolines */
  
! #define TRAMPOLINE_SIZE 32
  
  /* CRIS wants instructions on word-boundary.  */
  #define TRAMPOLINE_ALIGNMENT 16
*************** struct cum_args {int regs;};
*** 735,742 ****
  #define CONSTANT_ADDRESS_P(X) \
    (CONSTANT_P (X) && cris_legitimate_address_p (QImode, X, false))
  
- /* Must be a compile-time constant, so we go with the highest value
-    among all CRIS variants.  */
  #define MAX_REGS_PER_ADDRESS 2
  
  /* Fix reloads known to cause suboptimal spilling.  */
--- 690,695 ----
*************** struct cum_args {int regs;};
*** 748,768 ****
      }									\
    while (0)
  
- /* The mode argument to cris_legitimate_constant_p isn't used, so just
-    pass a cheap dummy.  N.B. we have to cast away const from the
-    parameter rather than adjust the parameter, as it's type is mandated
-    by the TARGET_LEGITIMATE_CONSTANT_P target hook interface.  */
- #define CRIS_CONSTANT_P(X) \
-   (CONSTANT_P (X) && cris_legitimate_constant_p (VOIDmode, CONST_CAST_RTX (X)))
  
  /* Node: Condition Code */
  
! #define NOTICE_UPDATE_CC(EXP, INSN) cris_notice_update_cc (EXP, INSN)
  
! /* FIXME: Maybe define CANONICALIZE_COMPARISON later, when playing with
!    optimizations.  It is needed; currently we do this with instruction
!    patterns and NOTICE_UPDATE_CC.  */
  
  
  /* Node: Costs */
  
--- 701,717 ----
      }									\
    while (0)
  
  
  /* Node: Condition Code */
  
! /* FIXME: Maybe define TARGET_CANONICALIZE_COMPARISON later, when
!    playing with optimizations.  */
  
! #define SELECT_CC_MODE(op, x, y) cris_select_cc_mode(op, x, y)
! 
! #define REVERSIBLE_CC_MODE(MODE) true
  
+ /* No known need to define REVERSE_CONDITION, the default is good.  */
  
  /* Node: Costs */
  
*************** struct cum_args {int regs;};
*** 789,813 ****
  #define JUMP_TABLES_IN_TEXT_SECTION 1
  
  
- /* Node: PIC */
- 
- /* Helper type.  */
- 
- enum cris_symbol_type
-   {
-     cris_no_symbol = 0,
-     cris_got_symbol = 1,
-     cris_rel_symbol = 2,
-     cris_got_symbol_needing_fixup = 3,
-     cris_unspec = 7,
-     cris_offsettable_symbol = 8
-   };
- 
- #define PIC_OFFSET_TABLE_REGNUM (flag_pic ? CRIS_GOT_REGNUM : INVALID_REGNUM)
- 
- #define LEGITIMATE_PIC_OPERAND_P(X) cris_legitimate_pic_operand (X)
- 
- 
  /* Node: File Framework */
  
  /* We don't want an .ident for gcc.  To avoid that but still support
--- 738,743 ----
*************** enum cris_symbol_type
*** 898,907 ****
  
  #define REGISTER_NAMES					\
   {"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8",	\
!   "r9", "r10", "r11", "r12", "r13", "sp", "acr", "srp", "mof", "faked_ap", "dccr"}
  
  #define ADDITIONAL_REGISTER_NAMES \
!  {{"r14", 14}, {"r15", 15}, {"pc", 15}}
  
  /* Output an empty line to illustrate the presence of the delay slot.  */
  #define DBR_OUTPUT_SEQEND(FILE) \
--- 828,838 ----
  
  #define REGISTER_NAMES					\
   {"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8",	\
!   "r9", "r10", "r11", "r12", "r13", "sp", "pc", "srp",	\
!   "mof", "faked_ap", "dccr", "faked_fp"}
  
  #define ADDITIONAL_REGISTER_NAMES \
!  {{"r14", 14}, {"r15", 15}}
  
  /* Output an empty line to illustrate the presence of the delay slot.  */
  #define DBR_OUTPUT_SEQEND(FILE) \
*************** enum cris_symbol_type
*** 922,931 ****
  #define USER_LABEL_PREFIX "_"
  
  #define ASM_OUTPUT_REG_PUSH(FILE, REGNO)				\
!   fprintf (FILE,							\
! 	   TARGET_V32							\
! 	   ? "\tsubq 4,$sp\n\tmove $%s,[$sp]\n" : "\tpush $%s\n",	\
! 	   reg_names[REGNO])
  
  #define ASM_OUTPUT_REG_POP(FILE, REGNO) \
    fprintf (FILE, "\tmove [$sp+],$%s\n", reg_names[REGNO])
--- 853,859 ----
  #define USER_LABEL_PREFIX "_"
  
  #define ASM_OUTPUT_REG_PUSH(FILE, REGNO)				\
!   fprintf (FILE, "\tpush $%s\n", reg_names[REGNO])
  
  #define ASM_OUTPUT_REG_POP(FILE, REGNO) \
    fprintf (FILE, "\tmove [$sp+],$%s\n", reg_names[REGNO])
*************** enum cris_symbol_type
*** 934,947 ****
  /* Node: Dispatch Tables */
  
  #define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL)		\
!   do									\
!     {									\
!       if (TARGET_V32)							\
!        asm_fprintf (FILE, "\t.word %LL%d-.\n", VALUE);			\
!       else								\
!        asm_fprintf (FILE, "\t.word %LL%d-%LL%d\n", VALUE, REL);		\
!     }									\
!   while (0)
  
  #define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE)  \
    asm_fprintf (FILE, "\t.dword %LL%d\n", VALUE)
--- 862,868 ----
  /* Node: Dispatch Tables */
  
  #define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL)		\
!   asm_fprintf (FILE, "\t.word %LL%d-%LL%d\n", VALUE, REL)
  
  #define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE)  \
    asm_fprintf (FILE, "\t.dword %LL%d\n", VALUE)
diff -Nrcpad gcc-10.3.0/gcc/config/cris/cris.md gcc-11.1.0/gcc/config/cris/cris.md
*** gcc-10.3.0/gcc/config/cris/cris.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cris/cris.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; GCC machine description for CRIS cpu cores.
! ;; Copyright (C) 1998-2020 Free Software Foundation, Inc.
  ;; Contributed by Axis Communications.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; GCC machine description for CRIS cpu cores.
! ;; Copyright (C) 1998-2021 Free Software Foundation, Inc.
  ;; Contributed by Axis Communications.
  
  ;; This file is part of GCC.
***************
*** 23,31 ****
  
  ;; See files "md.texi" and "rtl.def" for documentation on define_insn,
  ;; match_*, et. al.
- ;;
- ;; The function cris_notice_update_cc in cris.c handles condition code
- ;; updates for most instructions, helped by the "cc" attribute.
  
  ;; There are several instructions that are orthogonal in size, and seems
  ;; they could be matched by a single pattern without a specified size
--- 23,28 ----
***************
*** 49,94 ****
  ;; ??? But it should be re-checked for gcc > 2.7.2
  ;; FIXME: This changed some time ago (from 2000-03-16) for gcc-2.9x.
  
- ;; FIXME: When PIC, all [rX=rY+S] could be enabled to match
- ;; [rX=gotless_symbol].
- ;; The movsi for a gotless symbol could be split (post reload).
- 
- 
  (define_c_enum ""
    [
-    ;; PLT reference from call expansion: operand 0 is the address,
-    ;; the mode is VOIDmode.  Always wrapped in CONST.
-    ;; The value is relative to the GOT.
-    CRIS_UNSPEC_PLT_GOTREL
- 
-    ;; PLT reference from call expansion: operand 0 is the address,
-    ;; the mode is VOIDmode.  Always wrapped in CONST.
-    ;; The value is relative to the PC.  It's arch-dependent whether
-    ;; the offset counts from the start or the end of the current item.
-    CRIS_UNSPEC_PLT_PCREL
- 
-    ;; The address of the global offset table as a source operand.
-    CRIS_UNSPEC_GOT
- 
-    ;; The offset from the global offset table to the operand.
-    CRIS_UNSPEC_GOTREL
- 
-    ;; The PC-relative offset to the operand.  It's arch-dependent whether
-    ;; the offset counts from the start or the end of the current item.
-    CRIS_UNSPEC_PCREL
- 
-    ;; The index into the global offset table of a symbol, while
-    ;; also generating a GOT entry for the symbol.
-    CRIS_UNSPEC_GOTREAD
- 
-    ;; Similar to CRIS_UNSPEC_GOTREAD, but also generating a PLT entry.
-    CRIS_UNSPEC_PLTGOTREAD
- 
-    ;; Condition for v32 casesi jump, since it needs to have if_then_else
-    ;; form with register as one branch and default label as other.
-    ;; Operand 0 is const_int 0.
-    CRIS_UNSPEC_CASESI
- 
     ;; Stack frame deallocation barrier.
     CRIS_UNSPEC_FRAME_DEALLOC
  
--- 46,53 ----
***************
*** 98,112 ****
  
  ;; Register numbers.
  (define_constants
!   [(CRIS_GOT_REGNUM 0)
!    (CRIS_STATIC_CHAIN_REGNUM 7)
!    (CRIS_FP_REGNUM 8)
     (CRIS_SP_REGNUM 14)
     (CRIS_ACR_REGNUM 15)
     (CRIS_SRP_REGNUM 16)
     (CRIS_MOF_REGNUM 17)
     (CRIS_AP_REGNUM 18)
!    (CRIS_CC0_REGNUM 19)]
  )
  
  ;; We need an attribute to define whether an instruction can be put in
--- 57,71 ----
  
  ;; Register numbers.
  (define_constants
!   [(CRIS_STATIC_CHAIN_REGNUM 7)
!    (CRIS_REAL_FP_REGNUM 8)
     (CRIS_SP_REGNUM 14)
     (CRIS_ACR_REGNUM 15)
     (CRIS_SRP_REGNUM 16)
     (CRIS_MOF_REGNUM 17)
     (CRIS_AP_REGNUM 18)
!    (CRIS_CC0_REGNUM 19)
!    (CRIS_FP_REGNUM 20)]
  )
  
  ;; We need an attribute to define whether an instruction can be put in
***************
*** 125,134 ****
  ;; In short, any "slottable" instruction must be 16 bit and not refer
  ;; to pc, or alter it.
  ;;
! ;; The possible values are "yes", "no", "has_slot", "has_return_slot"
! ;; and "has_call_slot".
! ;; Yes/no tells whether the insn is slottable or not.  Has_call_slot means
! ;; that the insn is a call insn, which for CRIS v32 has a delay-slot.
  ;; Of special concern is that no RTX_FRAME_RELATED insn must go in that
  ;; call delay slot, as it's located in the address *after* the call insn,
  ;; and the unwind machinery doesn't know about delay slots.
--- 84,91 ----
  ;; In short, any "slottable" instruction must be 16 bit and not refer
  ;; to pc, or alter it.
  ;;
! ;; The possible values are "yes", "no", "has_slot", and "has_return_slot".
! ;; Yes/no tells whether the insn is slottable or not.
  ;; Of special concern is that no RTX_FRAME_RELATED insn must go in that
  ;; call delay slot, as it's located in the address *after* the call insn,
  ;; and the unwind machinery doesn't know about delay slots.
***************
*** 157,169 ****
  ;; constraint pattern for the slottable pattern.  An alternative using
  ;; only "r" constraints is most often slottable.
  
! (define_attr "slottable" "no,yes,has_slot,has_return_slot,has_call_slot"
    (const_string "no"))
  
  ;; We also need attributes to sanely determine the condition code
! ;; state.  See cris_notice_update_cc for how this is used.
  
! (define_attr "cc" "none,clobber,normal,noov32,rev" (const_string "normal"))
  
  ;; At the moment, this attribute is just used to help bb-reorder do its
  ;; work; the default 0 doesn't help it.  Many insns have other lengths,
--- 114,132 ----
  ;; constraint pattern for the slottable pattern.  An alternative using
  ;; only "r" constraints is most often slottable.
  
! (define_attr "slottable" "no,yes,has_slot,has_return_slot"
    (const_string "no"))
  
  ;; We also need attributes to sanely determine the condition code
! ;; state.  This attribute isn't used as-is, just as a template,
! ;; effectively a dummy except in a substitution setting CRIS_CC0_REGNUM
! ;; to a specific value.
! (define_attr "cc" "none,clobber,normal" (const_string "normal"))
  
! ;; The attribute "_enabled" is appended to "cc", forming "cc_enabled" to
! ;; pick out certain alternatives when generating a useful
! ;; condition-code-setting.  See the "enabled" attribute.
! (define_attr "cc_enabled" "none,clobber,normal" (const_string "normal"))
  
  ;; At the moment, this attribute is just used to help bb-reorder do its
  ;; work; the default 0 doesn't help it.  Many insns have other lengths,
***************
*** 181,199 ****
  (define_delay (eq_attr "slottable" "has_slot")
    [(eq_attr "slottable" "yes") (nil) (nil)])
  
- ;; We can't put prologue insns in call-insn delay-slots when
- ;; DWARF2 unwind info is emitted, because the unwinder matches the
- ;; address after the insn.  It must see the return address of a call at
- ;; a position at least *one byte after* the insn, or it'll think that
- ;; the insn hasn't been executed.  If the insn is in a delay-slot of a
- ;; call, it's just *exactly* after the insn.
- 
- (define_delay (eq_attr "slottable" "has_call_slot")
-   [(and (eq_attr "slottable" "yes")
- 	(ior (not (match_test "RTX_FRAME_RELATED_P (insn)"))
- 	     (not (match_test "flag_exceptions"))))
-    (nil) (nil)])
- 
  ;; The insn in the return insn slot must not be the
  ;; return-address-register restore.  FIXME: Use has_slot and express
  ;; as a parallel with a use of the return-address-register (currently
--- 144,149 ----
***************
*** 204,214 ****
--- 154,176 ----
  	(not (match_test "dead_or_set_regno_p (insn, CRIS_SRP_REGNUM)")))
     (nil) (nil)])
  
+ (define_attr "enabled" "no,yes"
+   (if_then_else
+    (eq_attr "cc_enabled" "normal")
+    (const_string "yes")
+    (const_string "no")))
  
  ;; Iterator definitions.
  
  ;; For the "usual" pattern size alternatives.
  (define_mode_iterator BWD [SI HI QI])
+ (define_mode_iterator BWDD [DI SI HI QI])
+ 
+ ;; To be able to refer to the same mode_attr for both a multi-mode
+ ;; and a mode-specific pattern, we use some singleton iterators.
+ (define_mode_iterator DI_ [DI])
+ (define_mode_iterator SI_ [SI])
+ 
  (define_mode_iterator WD [SI HI])
  (define_mode_iterator BW [HI QI])
  (define_mode_attr S [(SI "HI") (HI "QI")])
***************
*** 222,311 ****
  (define_code_attr u [(sign_extend "") (zero_extend "u")])
  (define_code_attr su [(sign_extend "s") (zero_extend "u")])
  
  ;; For the shift variants.
  (define_code_iterator shift [ashiftrt lshiftrt ashift])
  (define_code_iterator shiftrt [ashiftrt lshiftrt])
  (define_code_attr shlr [(ashiftrt "ashr") (lshiftrt "lshr") (ashift "ashl")])
  (define_code_attr slr [(ashiftrt "asr") (lshiftrt "lsr") (ashift "lsl")])
  
! (define_code_iterator ncond [eq ne gtu ltu geu leu])
! (define_code_iterator ocond [gt le])
! (define_code_iterator rcond [lt ge])
  (define_code_attr CC [(eq "eq") (ne "ne") (gt "gt") (gtu "hi") (lt "lt")
  		      (ltu "lo") (ge "ge") (geu "hs") (le "le") (leu "ls")])
  (define_code_attr rCC [(eq "ne") (ne "eq") (gt "le") (gtu "ls") (lt "ge")
  		       (ltu "hs") (ge "lt") (geu "lo") (le "gt") (leu "hi")])
- (define_code_attr oCC [(lt "mi") (ge "pl")])
- (define_code_attr roCC [(lt "pl") (ge "mi")])
  
! ;; Operand and operator predicates.
  
! (include "predicates.md")
! (include "constraints.md")
! 
! ;; Test insns.
  
! ;; No test insns with side-effect on the mem addressing.
! ;;
! ;; See note on cmp-insns with side-effects (or lack of them)
  
! ;; Normal named test patterns from SI on.
  
! (define_insn "*tstsi"
!   [(set (cc0)
! 	(compare (match_operand:SI 0 "nonimmediate_operand" "r,Q>,m")
! 		 (const_int 0)))]
!   ""
! {
!   if (which_alternative == 0 && TARGET_V32)
!     return "cmpq 0,%0";
!   return "test.d %0";
! }
!   [(set_attr "slottable" "yes,yes,no")])
  
! (define_insn "*tst<mode>_cmp"
!   [(set (cc0)
! 	(compare (match_operand:BW 0 "nonimmediate_operand" "r,Q>,m")
! 		 (const_int 0)))]
!   "cris_cc0_user_requires_cmp (insn)"
!   "@
!    cmp<m> 0,%0
!    test<m> %0
!    test<m> %0"
!   [(set_attr "slottable" "no,yes,no")])
  
! (define_insn "*tst<mode>_non_cmp"
!   [(set (cc0)
! 	(compare (match_operand:BW 0 "nonimmediate_operand" "r,Q>,m")
! 		 (const_int 0)))]
!   "!cris_cc0_user_requires_cmp (insn)"
!   "@
!    move<m> %0,%0
!    test<m> %0
!    test<m> %0"
!   [(set_attr "slottable" "yes,yes,no")
!    (set_attr "cc" "noov32,*,*")])
  
  ;; It seems that the position of the sign-bit and the fact that 0.0 is
  ;; all 0-bits would make "tstsf" a straight-forward implementation;
  ;; either "test.d" it for positive/negative or "btstq 30,r" it for
  ;; zeroness.
  ;;
! ;; FIXME: Do that some time; check next_cc0_user to determine if
! ;; zero or negative is tested for.
  
  ;; Compare insns.
  
  ;; We could optimize the sizes of the immediate operands for various
  ;; cases, but that is not worth it because of the very little usage of
  ;; DImode for anything else but a structure/block-mode.  Just do the
  ;; obvious stuff for the straight-forward constraint letters.
  
! (define_insn "*cmpdi_non_v32"
!   [(set (cc0)
! 	(compare (match_operand:DI 0 "nonimmediate_operand" "rm,r,r,r,r,r,r,o")
! 		 (match_operand:DI 1 "general_operand" "M,Kc,I,P,n,r,o,r")))]
!   "!TARGET_V32"
    "@
     test.d %M0\;ax\;test.d %H0
     cmpq %1,%M0\;ax\;cmpq 0,%H0
--- 184,344 ----
  (define_code_attr u [(sign_extend "") (zero_extend "u")])
  (define_code_attr su [(sign_extend "s") (zero_extend "u")])
  
+ ;; For extended-operand variants.
+ (define_code_iterator plusminus [plus minus])
+ (define_code_attr addsub [(plus "add") (minus "sub")])
+ 
+ ;; Similar, other cases also matching bound/umin.
+ (define_code_iterator plusminusumin [plus minus umin])
+ 
+ ;; Ditto, commutative operators (i.e. not minus).
+ (define_code_iterator plusumin [plus umin])
+ 
+ ;; The addsubbo and nd code-attributes form a hack.  We need to output
+ ;; "addu.b", "subu.b" but "bound.b" (no "u"-suffix) which means we'd
+ ;; need to refer to one iterator from the next.  But, that can't be
+ ;; done.  Instead output the "u" for unsigned as the "u" in "bound",
+ ;; i.e. the mnemonic as three parts including the extend-letter, and
+ ;; with an empty third part for "add" and "sub".
+ (define_code_attr addsubbo [(plus "add") (minus "sub") (umin "bo")])
+ (define_code_attr nd [(plus "") (minus "") (umin "nd")])
+ 
  ;; For the shift variants.
  (define_code_iterator shift [ashiftrt lshiftrt ashift])
  (define_code_iterator shiftrt [ashiftrt lshiftrt])
  (define_code_attr shlr [(ashiftrt "ashr") (lshiftrt "lshr") (ashift "ashl")])
  (define_code_attr slr [(ashiftrt "asr") (lshiftrt "lsr") (ashift "lsl")])
  
! ;; Compares, branches, cbranch, cstore.  Conditions gt and le are CC_NZVC.
! ;; Others start out as CCmode and can degenerate to CC_NZmode.
! ;; Incidental setters are either CC_NZVCmode or CC_NZmode.  See also
! ;; cris-modes.def.
! (define_mode_iterator NZSET [CC_NZ])
! (define_mode_iterator NZUSE [CC CC_NZ CC_NZVC])
! (define_mode_iterator NZVCSET [CC CC_NZVC CC_NZ])
! (define_mode_iterator NZVCUSE [CC_NZVC])
! (define_mode_iterator ZnNNZSET [CC_ZnN CC_NZ])
! (define_mode_iterator ZnNNZUSE [CC CC_ZnN CC_NZ CC_NZVC])
! 
! ;; All conditions.
! (define_code_iterator cond [eq ne gtu ltu geu leu gt le lt ge])
! 
! ;; Just equal and not equal.
! (define_code_iterator zcond [eq ne])
! 
! ;; Conditions that look only at Z and/or N (or can do with that).
! (define_code_iterator nzcond [eq ne gtu leu lt ge])
! 
! ;; The complement of nzcond within cond; conditions that look (also) on V
! ;; or C.
! (define_code_iterator nzvccond [geu ltu gt le])
! 
! ;; Within nzcond, those that give different opcodes when operands are
! ;; reversed or that can ignore V or C.  Also, the complement of zcond
! ;; within nzcond.
! (define_code_iterator rnzcond [gtu leu lt ge])
! 
! ;; CRIS condition mnemonic.
  (define_code_attr CC [(eq "eq") (ne "ne") (gt "gt") (gtu "hi") (lt "lt")
  		      (ltu "lo") (ge "ge") (geu "hs") (le "le") (leu "ls")])
+ 
+ ;; CRIS reverse condition mnemonic.
  (define_code_attr rCC [(eq "ne") (ne "eq") (gt "le") (gtu "ls") (lt "ge")
  		       (ltu "hs") (ge "lt") (geu "lo") (le "gt") (leu "hi")])
  
! ;; Mnemomic for the CRIS condition when V or C can be ignored.
! (define_code_attr oCC [(lt "mi") (ge "pl") (gtu "eq") (ltu "ne")])
  
! ;; Reverse of oCC.
! (define_code_attr roCC [(lt "pl") (ge "mi") (gtu "eq") (ltu "ne")])
  
! ;; CC_Z_IN_NOT_N, a.k.a. CC_ZnNmode.
! (define_code_attr znnCC [(eq "pl") (ne "mi")])
  
! ;;; ...and the reverse
! (define_code_attr rznnCC [(eq "mi") (ne "pl")])
  
! ;; Required unoptimized CCmode, different for nzcond and nzvccond.
! (define_code_attr xCC [(eq "CC") (ne "CC") (gtu "CC") (ltu "CC_NZVC")
! 		       (geu "CC_NZVC") (leu "CC") (lt "CC") (ge "CC")
! 		       (gt "CC_NZVC") (le "CC_NZVC")])
  
! ;; Substitutions to describe condition-code settings.
  
! (define_subst_attr "setnz" "setnz_subst" "" "_setnz")
! (define_subst_attr "ccnz" "setnz_subst" "" "_enabled")
! (define_subst_attr "anz" "setnz_subst" "" "*")
! 
! (define_subst "setnz_subst"
!   [(set (match_operand 0)
! 	(match_operand 1))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   "reload_completed"
!   [(set (reg:CC_NZ CRIS_CC0_REGNUM)
! 	(compare:CC_NZ (match_dup 1) (const_int 0)))
!    (set (match_dup 0) (match_dup 1))])
! 
! (define_subst_attr "setnzvc" "setnzvc_subst" "" "_setnzvc")
! (define_subst_attr "ccnzvc" "setnzvc_subst" "" "_enabled")
! (define_subst_attr "anzvc" "setnzvc_subst" "" "*")
! 
! (define_subst "setnzvc_subst"
!   [(set (match_operand 0)
! 	(match_operand 1))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   "reload_completed"
!   [(set (reg:CC_NZVC CRIS_CC0_REGNUM)
! 	(compare:CC_NZVC (match_dup 1) (const_int 0)))
!    (set (match_dup 0) (match_dup 1))])
! 
! (define_subst_attr "setcc" "setcc_subst" "" "_setcc")
! (define_subst_attr "cccc" "setcc_subst" "" "_enabled")
! (define_subst_attr "acc" "setcc_subst" "" "*")
! 
! (define_subst "setcc_subst"
!   [(set (match_operand 0)
! 	(match_operand 1))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   "reload_completed"
!   [(set (reg:CC CRIS_CC0_REGNUM)
! 	(compare:CC (match_dup 1) (const_int 0)))
!    (set (match_dup 0) (match_dup 1))])
! 
! ;; Operand and operator predicates.
  
+ (include "predicates.md")
+ (include "constraints.md")
+ 
  ;; It seems that the position of the sign-bit and the fact that 0.0 is
  ;; all 0-bits would make "tstsf" a straight-forward implementation;
  ;; either "test.d" it for positive/negative or "btstq 30,r" it for
  ;; zeroness.
  ;;
! ;; FIXME: Do that some time.
  
  ;; Compare insns.
  
+ ;; These are used for compare insn, cbranch and cstore.
+ ;; FIXME: Port-local reversing of operands is not done.  Still needed?
+ ;; (It shouldn't be; it should be done as part of register allocation.)
+ (define_mode_attr sCC_destc
+  [(DI "r, r,r,r,r,r,r") (SI "r,r, r,  r,r,r") (HI "r, r,  r,r") (QI "r, r,  r,r")])
+ (define_mode_attr cmp_op0c
+  [(DI "rm,r,r,r,r,r,r") (SI "r,r, rQ>,r,r,m") (HI "r, rQ>,r,m") (QI "r, rQ>,r,m")])
+ (define_mode_attr cmp_op1c
+  [(DI "M,Kc,I,P,n,r,o") (SI "I,rQ>,M, P,g,M") (HI "rQ>,M, g,M") (QI "rQ>,M, g,M")])
+ 
  ;; We could optimize the sizes of the immediate operands for various
  ;; cases, but that is not worth it because of the very little usage of
  ;; DImode for anything else but a structure/block-mode.  Just do the
  ;; obvious stuff for the straight-forward constraint letters.
  
! (define_insn "*cmpdi<NZVCSET:mode>"
!   [(set (reg:NZVCSET CRIS_CC0_REGNUM)
! 	(compare:NZVCSET
! 	 (match_operand:DI_ 0 "nonimmediate_operand" "<cmp_op0c>")
! 	 (match_operand:DI_ 1 "general_operand" "<cmp_op1c>")))]
!   "reload_completed"
    "@
     test.d %M0\;ax\;test.d %H0
     cmpq %1,%M0\;ax\;cmpq 0,%H0
***************
*** 313,331 ****
     cmp%e1.%z1 %1,%M0\;ax\;cmpq %H1,%H0
     cmp.d %M1,%M0\;ax\;cmp.d %H1,%H0
     cmp.d %M1,%M0\;ax\;cmp.d %H1,%H0
-    cmp.d %M1,%M0\;ax\;cmp.d %H1,%H0
-    cmp.d %M0,%M1\;ax\;cmp.d %H0,%H1")
- 
- (define_insn "*cmpdi_v32"
-   [(set (cc0)
- 	(compare (match_operand:DI 0 "register_operand"  "r,r,r,r,r")
- 		 (match_operand:DI 1 "nonmemory_operand" "Kc,I,P,n,r")))]
-   "TARGET_V32"
-   "@
-    cmpq %1,%M0\;ax\;cmpq 0,%H0
-    cmpq %1,%M0\;ax\;cmpq -1,%H0
-    cmp%e1.%z1 %1,%M0\;ax\;cmpq %H1,%H0
-    cmp.d %M1,%M0\;ax\;cmp.d %H1,%H0
     cmp.d %M1,%M0\;ax\;cmp.d %H1,%H0")
  
  ;; Note that compare insns with side effect addressing mode (e.g.):
--- 346,351 ----
***************
*** 347,410 ****
  ;; constants, but sometimes gcc will find its way to use it for other
  ;; (memory) operands.  Avoid side-effect patterns, though (see above).
  
! (define_insn "*cmp_ext<mode>"
!   [(set (cc0)
! 	(compare
  	 (match_operand:SI 0 "register_operand" "r,r")
  	 (match_operator:SI 2 "cris_extend_operator"
  			 [(match_operand:BW 1 "memory_operand" "Q>,m")])))]
!   ""
    "cmp%e2<m> %1,%0"
    [(set_attr "slottable" "yes,no")])
- 
- ;; Swap operands; it seems the canonical look (if any) is not enforced.
- ;;
- ;; FIXME: Investigate that.
- 
- (define_insn "*cmp_swapext<mode>"
-   [(set (cc0)
- 	(compare
- 	 (match_operator:SI 2 "cris_extend_operator"
- 			    [(match_operand:BW 0 "memory_operand" "Q>,m")])
- 	 (match_operand:SI 1 "register_operand" "r,r")))]
-   ""
-   "cmp%e2<m> %0,%1"
-   [(set_attr "slottable" "yes,no")
-    (set_attr "cc" "rev")])
  
  ;; The "normal" compare patterns, from SI on.  Special-cases with zero
  ;; are covered above.
  
! (define_insn "*cmpsi"
!   [(set (cc0)
! 	(compare
! 	 (match_operand:SI 0 "nonimmediate_operand" "r,r,r, Q>,r,r,m")
! 	 (match_operand:SI 1 "general_operand"	    "I,r,Q>,r, P,g,r")))]
!   ""
    "@
     cmpq %1,%0
     cmp.d %1,%0
!    cmp.d %1,%0
!    cmp.d %0,%1
     cmp%e1.%z1 %1,%0
     cmp.d %1,%0
!    cmp.d %0,%1"
!   [(set_attr "slottable" "yes,yes,yes,yes,no,no,no")
!    (set_attr "cc" "normal,normal,normal,rev,normal,normal,rev")])
  
! (define_insn "*cmp<mode>"
!   [(set (cc0)
! 	(compare (match_operand:BW 0 "nonimmediate_operand" "r,r, Q>,r,m")
! 		 (match_operand:BW 1 "general_operand"	    "r,Q>,r, g,r")))]
!   ""
    "@
     cmp<m> %1,%0
     cmp<m> %1,%0
!    cmp<m> %0,%1
!    cmp<m> %1,%0
!    cmp<m> %0,%1"
!   [(set_attr "slottable" "yes,yes,yes,no,no")
!    (set_attr "cc" "normal,normal,rev,normal,rev")])
  
  ;; Pattern matching the BTST insn.
  ;; It is useful for "if (i & val)" constructs, where val is an exact
--- 367,412 ----
  ;; constants, but sometimes gcc will find its way to use it for other
  ;; (memory) operands.  Avoid side-effect patterns, though (see above).
  
! (define_insn "*cmp_ext<BW:mode><NZVCSET:mode>"
!   [(set (reg:NZVCSET CRIS_CC0_REGNUM)
! 	(compare:NZVCSET
  	 (match_operand:SI 0 "register_operand" "r,r")
  	 (match_operator:SI 2 "cris_extend_operator"
  			 [(match_operand:BW 1 "memory_operand" "Q>,m")])))]
!   "reload_completed"
    "cmp%e2<m> %1,%0"
    [(set_attr "slottable" "yes,no")])
  
  ;; The "normal" compare patterns, from SI on.  Special-cases with zero
  ;; are covered above.
  
! (define_insn "*cmpsi<NZVCSET:mode>"
!   [(set (reg:NZVCSET CRIS_CC0_REGNUM)
! 	(compare:NZVCSET
! 	 (match_operand:SI_ 0 "nonimmediate_operand" "<cmp_op0c>")
! 	 (match_operand:SI_ 1 "general_operand" "<cmp_op1c>")))]
!   "reload_completed"
    "@
     cmpq %1,%0
     cmp.d %1,%0
!    test.d %0
     cmp%e1.%z1 %1,%0
     cmp.d %1,%0
!    test.d %0"
!   [(set_attr "slottable" "yes,yes,yes,no,no,no")])
  
! (define_insn "*cmp<BW:mode><NZVCSET:mode>"
!   [(set (reg:NZVCSET CRIS_CC0_REGNUM)
! 	(compare:NZVCSET
! 	 (match_operand:BW 0 "nonimmediate_operand" "<cmp_op0c>")
! 	 (match_operand:BW 1 "general_operand" "<cmp_op1c>")))]
!   "reload_completed"
    "@
     cmp<m> %1,%0
+    test<m> %0
     cmp<m> %1,%0
!    test<m> %0"
!   [(set_attr "slottable" "yes,yes,no,no")])
  
  ;; Pattern matching the BTST insn.
  ;; It is useful for "if (i & val)" constructs, where val is an exact
***************
*** 412,430 ****
  ;; of zeros starting at bit 0).
  
  ;; SImode.  This mode is the only one needed, since gcc automatically
! ;; extends subregs for lower-size modes.  FIXME: Add testcase.
! (define_insn "*btst"
!   [(set (cc0)
! 	(compare
  	 (zero_extract:SI
  	  (match_operand:SI 0 "nonmemory_operand" "r, r,r, r,r, r,Kp")
  	  (match_operand:SI 1 "const_int_operand" "Kc,n,Kc,n,Kc,n,n")
  	  (match_operand:SI 2 "nonmemory_operand" "M, M,Kc,n,r, r,r"))
  	 (const_int 0)))]
    ;; Either it is a single bit, or consecutive ones starting at 0.
!   ;; The btst ones depend on stuff in NOTICE_UPDATE_CC.
!   "CONST_INT_P (operands[1])
!    && (operands[1] == const1_rtx || operands[2] == const0_rtx)
     && (REG_S_P (operands[0])
         || (operands[1] == const1_rtx
  	   && REG_S_P (operands[2])
--- 414,433 ----
  ;; of zeros starting at bit 0).
  
  ;; SImode.  This mode is the only one needed, since gcc automatically
! ;; extends subregs for lower-size modes.
! (define_insn "*btst<mode>"
!   [(set (reg:ZnNNZSET CRIS_CC0_REGNUM)
! 	(compare:ZnNNZSET
  	 (zero_extract:SI
  	  (match_operand:SI 0 "nonmemory_operand" "r, r,r, r,r, r,Kp")
  	  (match_operand:SI 1 "const_int_operand" "Kc,n,Kc,n,Kc,n,n")
  	  (match_operand:SI 2 "nonmemory_operand" "M, M,Kc,n,r, r,r"))
  	 (const_int 0)))]
    ;; Either it is a single bit, or consecutive ones starting at 0.
!   "reload_completed
!    && CONST_INT_P (operands[1])
!    && ((operands[1] == const1_rtx && <MODE>mode == CC_ZnNmode)
!        || (operands[2] == const0_rtx && <MODE>mode == CC_NZmode))
     && (REG_S_P (operands[0])
         || (operands[1] == const1_rtx
  	   && REG_S_P (operands[2])
***************
*** 435,441 ****
  ;; The next-to-last "&&" condition above should be caught by some kind of
  ;; canonicalization in gcc, but we can easily help with it here.
  ;;  It results from expressions of the type
! ;; "power_of_2_value & (1 << y)".
  ;;
  ;; Since there may be codes with tests in on bits (in constant position)
  ;; beyond the size of a word, handle that by assuming those bits are 0.
--- 438,444 ----
  ;; The next-to-last "&&" condition above should be caught by some kind of
  ;; canonicalization in gcc, but we can easily help with it here.
  ;;  It results from expressions of the type
! ;; "power_of_2_value & (1 << y)".  FIXME: Add testcase.
  ;;
  ;; Since there may be codes with tests in on bits (in constant position)
  ;; beyond the size of a word, handle that by assuming those bits are 0.
***************
*** 450,457 ****
     btst %2,%0
     clearf nz
     cmpq %p0,%2"
!  [(set_attr "slottable" "yes")
!   (set_attr "cc" "noov32")])
  
  ;; Move insns.
  
--- 453,459 ----
     btst %2,%0
     clearf nz
     cmpq %p0,%2"
!  [(set_attr "slottable" "yes")])
  
  ;; Move insns.
  
***************
*** 493,506 ****
  ;; insn with pseudos that need more reloading.  The question is where.
  
  (define_expand "movdi"
!   [(set (match_operand:DI 0 "nonimmediate_operand" "")
! 	(match_operand:DI 1 "general_operand" ""))]
    ""
  {
    if (MEM_P (operands[0])
        && operands[1] != const0_rtx
!       && can_create_pseudo_p ()
!       && (!TARGET_V32 || !REG_P (operands[1])))
      operands[1] = copy_to_mode_reg (DImode, operands[1]);
  
    /* Some other ports (as of 2001-09-10 for example mcore and romp) also
--- 495,509 ----
  ;; insn with pseudos that need more reloading.  The question is where.
  
  (define_expand "movdi"
!   [(parallel
!     [(set (match_operand:DI 0 "nonimmediate_operand")
! 	  (match_operand:DI 1 "general_operand"))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
  {
    if (MEM_P (operands[0])
        && operands[1] != const0_rtx
!       && can_create_pseudo_p ())
      operands[1] = copy_to_mode_reg (DImode, operands[1]);
  
    /* Some other ports (as of 2001-09-10 for example mcore and romp) also
***************
*** 530,927 ****
      }
  })
  
! (define_insn_and_split "*movdi_insn_non_v32"
    [(set (match_operand:DI 0 "nonimmediate_operand" "=r,rx,m")
! 	(match_operand:DI 1 "general_operand"	   "rx,g,rxM"))]
    "(register_operand (operands[0], DImode)
      || register_operand (operands[1], DImode)
!     || operands[1] == const0_rtx)
!    && !TARGET_V32"
    "#"
    "&& reload_completed"
    [(match_dup 2)]
    "operands[2] = cris_split_movdx (operands);")
- 
- ;; Overlapping (but non-identical) source memory address and destination
- ;; register would be a compiler bug, so we don't have to specify that.
- (define_insn "*movdi_v32"
-   [(set
-     (match_operand:DI 0 "nonimmediate_operand" "=r,rx,&r,>, m,r,x,m")
-     (match_operand:DI 1 "general_operand"     "rxi,r>,m, rx,r,m,m,x"))]
-   "TARGET_V32"
- {
-   switch (which_alternative)
-     {
-       /* FIXME: 1) Use autoincrement where possible.  2) Have peephole2,
- 	 particularly for cases where the address register is dead.  */
-     case 5:
-       if (REGNO (operands[0]) == REGNO (XEXP (operands[1], 0)))
- 	return "addq 4,%L1\;move.d %1,%H0\;subq 4,%L1\;move.d %1,%M0";
-       gcc_assert (REGNO (operands[0]) + 1 == REGNO (XEXP (operands[1], 0)));
-       return "move.d [%L1+],%M0\;move.d [%L1],%H0";
-     case 2:
-       /* We could do away with the addq if we knew the address-register
- 	 isn't ACR.  If we knew the address-register is dead, we could do
- 	 away with the subq too.  */
-       return "move.d [%L1],%M0\;addq 4,%L1\;move.d [%L1],%H0\;subq 4,%L1";
-     case 4:
-       return "move.d %M1,[%L0]\;addq 4,%L0\;move.d %H1,[%L0]\;subq 4,%L0";
-     case 6:
-       return "move [%L1],%M0\;addq 4,%L1\;move [%L1],%H0\;subq 4,%L1";
-     case 7:
-       return "move %M1,[%L0]\;addq 4,%L0\;move %H1,[%L0]\;subq 4,%L0";
- 
-     default:
-       return "#";
-     }
- }
-   ;; The non-split cases clobber cc0 because of their adds and subs.
-   ;; Beware that NOTICE_UPDATE_CC is called before the forced split happens.
-   [(set_attr "cc" "*,*,clobber,*,clobber,clobber,*,*")])
- 
- ;; Much like "*movdi_insn_non_v32".  Overlapping registers and constants
- ;; is handled so much better in cris_split_movdx.
- (define_split
-   [(set (match_operand:DI 0 "nonimmediate_operand" "")
- 	(match_operand:DI 1 "general_operand" ""))]
-   "TARGET_V32
-    && reload_completed
-    && (!MEM_P (operands[0]) || !REG_P (XEXP (operands[0], 0)))
-    && (!MEM_P (operands[1]) || !REG_P (XEXP (operands[1], 0)))"
-   [(match_dup 2)]
-   "operands[2] = cris_split_movdx (operands);")
- 
- ;; Side-effect patterns for move.S1 [rx=ry+rx.S2],rw
- ;; and move.S1 [rx=ry+i],rz
- ;;  Then movs.S1 and movu.S1 for both modes.
- ;;
- ;; move.S1 [rx=ry+rz.S],rw avoiding when rx is ry, or rw is rx
- ;; FIXME: These could have anonymous mode for operand 0.
- ;; FIXME: Special registers' alternatives too.
- 
- (define_insn "*mov_side<mode>_biap"
-   [(set (match_operand:BW 0 "register_operand" "=r,r")
- 	(mem:BW (plus:SI
- 		 (mult:SI (match_operand:SI 1 "register_operand" "r,r")
- 			  (match_operand:SI 2 "const_int_operand" "n,n"))
- 		 (match_operand:SI 3 "register_operand" "r,r"))))
-    (set (match_operand:SI 4 "register_operand" "=*3,r")
- 	(plus:SI (mult:SI (match_dup 1)
- 			  (match_dup 2))
- 		 (match_dup 3)))]
-   "cris_side_effect_mode_ok (MULT, operands, 4, 3, 1, 2, 0)"
-   "@
-    #
-    move<m> [%4=%3+%1%T2],%0")
- 
- (define_insn "*mov_sidesisf_biap"
-   [(set (match_operand 0 "register_operand" "=r,r,x,x")
- 	(mem (plus:SI
- 	      (mult:SI (match_operand:SI 1 "register_operand" "r,r,r,r")
- 		       (match_operand:SI 2 "const_int_operand" "n,n,n,n"))
- 	      (match_operand:SI 3 "register_operand" "r,r,r,r"))))
-    (set (match_operand:SI 4 "register_operand" "=*3,r,*3,r")
- 	(plus:SI (mult:SI (match_dup 1)
- 			  (match_dup 2))
- 		 (match_dup 3)))]
-   "GET_MODE_SIZE (GET_MODE (operands[0])) == UNITS_PER_WORD
-    && cris_side_effect_mode_ok (MULT, operands, 4, 3, 1, 2, 0)"
-   "@
-    #
-    move.%s0 [%4=%3+%1%T2],%0
-    #
-    move [%4=%3+%1%T2],%0")
- 
- ;; move.S1 [rx=ry+i],rz
- ;; avoiding move.S1 [ry=ry+i],rz
- ;; and      move.S1 [rz=ry+i],rz
- ;; Note that "i" is allowed to be a register.
- 
- (define_insn "*mov_side<mode>"
-   [(set (match_operand:BW 0 "register_operand" "=r,r,r,r,r")
- 	(mem:BW
- 	 (plus:SI (match_operand:SI 1 "cris_bdap_operand" "%r,r,r,R,R")
- 		  (match_operand:SI 2 "cris_bdap_operand" "r>Rn,r,>Rn,r,r"))))
-    (set (match_operand:SI 3 "register_operand" "=*1,r,r,*2,r")
- 	(plus:SI (match_dup 1)
- 		 (match_dup 2)))]
-   "cris_side_effect_mode_ok (PLUS, operands, 3, 1, 2, -1, 0)"
- {
-   if ((which_alternative == 0 || which_alternative == 3)
-       && (!CONST_INT_P (operands[2])
- 	  || INTVAL (operands[2]) > 127
- 	  || INTVAL (operands[2]) < -128
- 	  || satisfies_constraint_N (operands[2])
- 	  || satisfies_constraint_J (operands[2])))
-     return "#";
-   if (which_alternative == 4)
-     return "move<m> [%3=%2%S1],%0";
-   return "move<m> [%3=%1%S2],%0";
- })
- 
- (define_insn "*mov_sidesisf"
-   [(set (match_operand 0 "register_operand" "=r,r,r,x,x,x,r,r,x,x")
- 	(mem
- 	 (plus:SI
- 	  (match_operand:SI 1 "cris_bdap_operand" "%r,r,r,r,r,r,R,R,R,R")
- 	  (match_operand:SI 2 "cris_bdap_operand" "r>Rn,r,>Rn,r>Rn,r,>Rn,r,r,r,r"))))
-    (set (match_operand:SI 3 "register_operand" "=*1,r,r,*1,r,r,*2,r,*2,r")
- 	(plus:SI (match_dup 1)
- 		 (match_dup 2)))]
-   "GET_MODE_SIZE (GET_MODE (operands[0])) == UNITS_PER_WORD
-    && cris_side_effect_mode_ok (PLUS, operands, 3, 1, 2, -1, 0)"
- {
-   if ((which_alternative == 0
-        || which_alternative == 3
-        || which_alternative == 6
-        || which_alternative == 8)
-       && (!CONST_INT_P (operands[2])
- 	  || INTVAL (operands[2]) > 127
- 	  || INTVAL (operands[2]) < -128
- 	  || satisfies_constraint_N (operands[2])
- 	  || satisfies_constraint_J (operands[2])))
-     return "#";
-   if (which_alternative < 3)
-     return "move.%s0 [%3=%1%S2],%0";
-   if (which_alternative == 7)
-     return "move.%s0 [%3=%2%S1],%0";
-   if (which_alternative == 9)
-     return "move [%3=%2%S1],%0";
-   return "move [%3=%1%S2],%0";
- })
- 
- ;; Other way around; move to memory.
- 
- ;; Note that the condition (which for side-effect patterns is usually a
- ;; call to cris_side_effect_mode_ok), isn't consulted for register
- ;; allocation preferences -- constraints is the method for that.  The
- ;; drawback is that we can't exclude register allocation to cause
- ;; "move.s rw,[rx=ry+rz.S]" when rw==rx without also excluding rx==ry or
- ;; rx==rz if we use an earlyclobber modifier for the constraint for rx.
- ;; Instead of that, we recognize and split the cases where dangerous
- ;; register combinations are spotted: where a register is set in the
- ;; side-effect, and used in the main insn.  We don't handle the case where
- ;; the set in the main insn overlaps the set in the side-effect; that case
- ;; must be handled in gcc.  We handle just the case where the set in the
- ;; side-effect overlaps the input operand of the main insn (i.e. just
- ;; moves to memory).
- 
- ;;
- ;; move.s rz,[ry=rx+rw.S]
- 
- (define_insn "*mov_side<mode>_biap_mem"
-   [(set (mem:BW (plus:SI
- 		 (mult:SI (match_operand:SI 0 "register_operand" "r,r,r")
- 			  (match_operand:SI 1 "const_int_operand" "n,n,n"))
- 		 (match_operand:SI 2 "register_operand" "r,r,r")))
- 	(match_operand:BW 3 "register_operand" "r,r,r"))
-    (set (match_operand:SI 4 "register_operand" "=*2,!3,r")
- 	(plus:SI (mult:SI (match_dup 0)
- 			  (match_dup 1))
- 		 (match_dup 2)))]
-   "cris_side_effect_mode_ok (MULT, operands, 4, 2, 0, 1, 3)"
-   "@
-    #
-    #
-    move<m> %3,[%4=%2+%0%T1]")
- 
- (define_insn "*mov_sidesisf_biap_mem"
-   [(set (mem (plus:SI
- 	      (mult:SI (match_operand:SI 0 "register_operand" "r,r,r,r,r,r")
- 		       (match_operand:SI 1 "const_int_operand" "n,n,n,n,n,n"))
- 	      (match_operand:SI 2 "register_operand" "r,r,r,r,r,r")))
- 	(match_operand 3 "register_operand" "r,r,r,x,x,x"))
-    (set (match_operand:SI 4 "register_operand" "=*2,!3,r,*2,!3,r")
- 	(plus:SI (mult:SI (match_dup 0)
- 			  (match_dup 1))
- 		 (match_dup 2)))]
-   "GET_MODE_SIZE (GET_MODE (operands[3])) == UNITS_PER_WORD
-    && cris_side_effect_mode_ok (MULT, operands, 4, 2, 0, 1, 3)"
-   "@
-    #
-    #
-    move.%s3 %3,[%4=%2+%0%T1]
-    #
-    #
-    move %3,[%4=%2+%0%T1]")
- 
- ;; Split for the case above where we're out of luck with register
- ;; allocation (again, the condition isn't checked for that), and we end up
- ;; with the set in the side-effect getting the same register as the input
- ;; register.
- 
- (define_split
-   [(parallel
-     [(set (match_operator
- 	   6 "cris_mem_op"
- 	   [(plus:SI
- 	     (mult:SI (match_operand:SI 0 "register_operand" "")
- 		      (match_operand:SI 1 "const_int_operand" ""))
- 	     (match_operand:SI 2 "register_operand" ""))])
- 	  (match_operand 3 "register_operand" ""))
-      (set (match_operand:SI 4 "cris_nonsp_register_operand" "")
- 	  (plus:SI (mult:SI (match_dup 0)
- 			    (match_dup 1))
- 		   (match_dup 2)))])]
-   "reload_completed && reg_overlap_mentioned_p (operands[4], operands[3])"
-   [(set (match_dup 5) (match_dup 3))
-    (set (match_dup 4) (match_dup 2))
-    (set (match_dup 4)
- 	(plus:SI (mult:SI (match_dup 0)
- 			  (match_dup 1))
- 		 (match_dup 4)))]
-   "operands[5]
-      = replace_equiv_address (operands[6],
- 			      gen_rtx_PLUS (SImode,
- 					    gen_rtx_MULT (SImode,
- 							  operands[0],
- 							  operands[1]),
- 					    operands[2]));")
- 
- ;; move.s rx,[ry=rz+i]
- ;; FIXME: These could have anonymous mode for operand 2.
- 
- ;; QImode
- 
- (define_insn "*mov_side<mode>_mem"
-   [(set (mem:BW
- 	 (plus:SI (match_operand:SI 0 "cris_bdap_operand" "%r,r,r,r,R,R,R")
- 		  (match_operand:SI 1 "cris_bdap_operand" "r>Rn,r>Rn,r,>Rn,r,r,r")))
- 	(match_operand:BW 2 "register_operand" "r,r,r,r,r,r,r"))
-    (set (match_operand:SI 3 "register_operand" "=*0,!*2,r,r,*1,!*2,r")
- 	(plus:SI (match_dup 0)
- 		 (match_dup 1)))]
-   "cris_side_effect_mode_ok (PLUS, operands, 3, 0, 1, -1, 2)"
- {
-   if ((which_alternative == 0 || which_alternative == 4)
-       && (!CONST_INT_P (operands[1])
- 	  || INTVAL (operands[1]) > 127
- 	  || INTVAL (operands[1]) < -128
- 	  || satisfies_constraint_N (operands[1])
- 	  || satisfies_constraint_J (operands[1])))
-     return "#";
-   if (which_alternative == 1 || which_alternative == 5)
-     return "#";
-   if (which_alternative == 6)
-     return "move.%s2 %2,[%3=%1%S0]";
-   return "move<m> %2,[%3=%0%S1]";
- })
- 
- ;; SImode
- 
- (define_insn "*mov_sidesisf_mem"
-   [(set (mem
- 	 (plus:SI
- 	  (match_operand:SI
- 	   0 "cris_bdap_operand"
- 	   			"%r,  r,   r,r,  r,   r,r,  R,R,  R,R, R")
- 	  (match_operand:SI
- 	   1 "cris_bdap_operand"
- 	   			"r>Rn,r>Rn,r,>Rn,r>Rn,r,>Rn,r,r,  r,r, r")))
- 	(match_operand 2 "register_operand"
- 		       		"r,   r,   r,r,  x,   x,x,  r,r,  r,x, x"))
-    (set (match_operand:SI 3 "register_operand"
- 			  	"=*0,!2,   r,r,  *0,  r,r, *1,!*2,r,*1,r")
- 	(plus:SI (match_dup 0)
- 		 (match_dup 1)))]
-   "GET_MODE_SIZE (GET_MODE (operands[2])) == UNITS_PER_WORD
-    && cris_side_effect_mode_ok (PLUS, operands, 3, 0, 1, -1, 2)"
- {
-   if ((which_alternative == 0 || which_alternative == 4)
-       && (!CONST_INT_P (operands[1])
- 	  || INTVAL (operands[1]) > 127
- 	  || INTVAL (operands[1]) < -128
- 	  || satisfies_constraint_N (operands[1])
- 	  || satisfies_constraint_J (operands[1])))
-     return "#";
-   if (which_alternative == 1
-       || which_alternative == 7
-       || which_alternative == 8
-       || which_alternative == 10)
-     return "#";
-   if (which_alternative < 4)
-     return "move.%s2 %2,[%3=%0%S1]";
-   if (which_alternative == 9)
-     return "move.%s2 %2,[%3=%1%S0]";
-   if (which_alternative == 11)
-     return "move %2,[%3=%1%S0]";
-   return "move %2,[%3=%0%S1]";
- })
- 
- ;; Like the biap case, a split where the set in the side-effect gets the
- ;; same register as the input register to the main insn, since the
- ;; condition isn't checked at register allocation.
- 
- (define_split
-   [(parallel
-     [(set (match_operator
- 	   4 "cris_mem_op"
- 	   [(plus:SI
- 	     (match_operand:SI 0 "cris_bdap_operand" "")
- 	     (match_operand:SI 1 "cris_bdap_operand" ""))])
- 	  (match_operand 2 "register_operand" ""))
-      (set (match_operand:SI 3 "cris_nonsp_register_operand" "")
- 	  (plus:SI (match_dup 0) (match_dup 1)))])]
-   "reload_completed && reg_overlap_mentioned_p (operands[3], operands[2])"
-   [(set (match_dup 4) (match_dup 2))
-    (set (match_dup 3) (match_dup 0))
-    (set (match_dup 3) (plus:SI (match_dup 3) (match_dup 1)))]
-   "")
- 
- ;; Clear memory side-effect patterns.  It is hard to get to the mode if
- ;; the MEM was anonymous, so there will be one for each mode.
- 
- ;;  clear.[bwd] [ry=rx+rw.s2]
- 
- (define_insn "*clear_side<mode>_biap"
-   [(set (mem:BWD (plus:SI
- 		  (mult:SI (match_operand:SI 0 "register_operand" "r,r")
- 			   (match_operand:SI 1 "const_int_operand" "n,n"))
- 		  (match_operand:SI 2 "register_operand" "r,r")))
- 	(const_int 0))
-    (set (match_operand:SI 3 "register_operand" "=*2,r")
- 	(plus:SI (mult:SI (match_dup 0)
- 			  (match_dup 1))
- 		 (match_dup 2)))]
-   "cris_side_effect_mode_ok (MULT, operands, 3, 2, 0, 1, -1)"
-   "@
-    #
-    clear<m> [%3=%2+%0%T1]")
- 
- ;; clear.[bwd] [ry=rz+i]
- 
- (define_insn "*clear_side<mode>"
-   [(set (mem:BWD
- 	 (plus:SI (match_operand:SI 0 "cris_bdap_operand" "%r,r,r,R,R")
- 		  (match_operand:SI 1 "cris_bdap_operand" "r>Rn,r,>Rn,r,r")))
- 	(const_int 0))
-    (set (match_operand:SI 2 "register_operand" "=*0,r,r,*1,r")
- 	(plus:SI (match_dup 0)
- 		 (match_dup 1)))]
-   "cris_side_effect_mode_ok (PLUS, operands, 2, 0, 1, -1, -1)"
- {
-   if ((which_alternative == 0 || which_alternative == 3)
-       && (!CONST_INT_P (operands[1])
- 	  || INTVAL (operands[1]) > 127
- 	  || INTVAL (operands[1]) < -128
- 	  || satisfies_constraint_N (operands[1])
- 	  || satisfies_constraint_J (operands[1])))
-     return "#";
-   if (which_alternative == 4)
-     return "clear<m> [%2=%1%S0]";
-   return "clear<m> [%2=%0%S1]";
- })
  
  ;; Normal move patterns from SI on.
  
  (define_expand "movsi"
!   [(set
!     (match_operand:SI 0 "nonimmediate_operand" "")
!     (match_operand:SI 1 "cris_general_operand_or_symbol" ""))]
    ""
  {
-   enum cris_symbol_type t;
- 
    /* If the output goes to a MEM, make sure we have zero or a register as
       input.  */
    if (MEM_P (operands[0])
--- 533,560 ----
      }
  })
  
! (define_insn_and_split "*movdi_insn"
    [(set (match_operand:DI 0 "nonimmediate_operand" "=r,rx,m")
! 	(match_operand:DI 1 "general_operand"	   "rx,g,rxM"))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    "(register_operand (operands[0], DImode)
      || register_operand (operands[1], DImode)
!     || operands[1] == const0_rtx)"
    "#"
    "&& reload_completed"
    [(match_dup 2)]
    "operands[2] = cris_split_movdx (operands);")
  
  ;; Normal move patterns from SI on.
  
  (define_expand "movsi"
!   [(parallel
!     [(set
!       (match_operand:SI 0 "nonimmediate_operand")
!       (match_operand:SI 1 "general_operand"))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
  {
    /* If the output goes to a MEM, make sure we have zero or a register as
       input.  */
    if (MEM_P (operands[0])
***************
*** 930,1079 ****
        && can_create_pseudo_p ())
      operands[1] = force_reg (SImode, operands[1]);
  
!   /* If we're generating PIC and have an incoming symbol, validize it to a
!      general operand or something that will match a special pattern.
! 
!      FIXME: Do we *have* to recognize anything that would normally be a
!      valid symbol?  Can we exclude global PIC addresses with an added
!      offset?  */
!     if (flag_pic
! 	&& CONSTANT_P (operands[1])
! 	&& !cris_valid_pic_const (operands[1], false))
!       {
! 	t = cris_symbol_type_of (operands[1]);
! 
! 	gcc_assert (t != cris_no_symbol && t != cris_offsettable_symbol);
! 
! 	if (! REG_S_P (operands[0]))
! 	  {
! 	    /* We must have a register as destination for what we're about to
! 	       do, and for the patterns we generate.  */
! 	    CRIS_ASSERT (can_create_pseudo_p ());
! 	    operands[1] = force_reg (SImode, operands[1]);
! 	  }
! 	else
! 	  {
! 	    /* FIXME: add a REG_EQUAL (or is it REG_EQUIV) note to the
! 	       destination register for the symbol.  It might not be
! 	       worth it.  Measure.  */
! 	    crtl->uses_pic_offset_table = 1;
! 	    if (t == cris_rel_symbol)
! 	      {
! 		/* Change a "move.d sym(+offs),rN" into (allocate register rM)
! 		   for pre-v32:
! 		   "move.d (const (plus (unspec [sym]
! 		    CRIS_UNSPEC_GOTREL) offs)),rM" "add.d rPIC,rM,rN"
! 		   and for v32:
! 		   "move.d (const (plus (unspec [sym]
! 		    CRIS_UNSPEC_PCREL) offs)),rN".  */
! 		rtx tem, rm, rn = operands[0];
! 		rtx sym = GET_CODE (operands[1]) != CONST
! 		  ? operands[1] : get_related_value (operands[1]);
! 		HOST_WIDE_INT offs = get_integer_term (operands[1]);
! 
! 		gcc_assert (can_create_pseudo_p ());
! 
! 		if (TARGET_V32)
! 		  {
! 		    tem = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, sym),
! 					  CRIS_UNSPEC_PCREL);
! 		    if (offs != 0)
! 		      tem = plus_constant (Pmode, tem, offs);
! 		    rm = rn;
! 		    emit_move_insn (rm, gen_rtx_CONST (Pmode, tem));
! 		  }
! 		else
! 		  {
! 		    /* We still uses GOT-relative addressing for
! 		       pre-v32.	 */
! 		    crtl->uses_pic_offset_table = 1;
! 		    tem = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, sym),
! 					  CRIS_UNSPEC_GOTREL);
! 		    if (offs != 0)
! 		      tem = plus_constant (Pmode, tem, offs);
! 		    rm = gen_reg_rtx (Pmode);
! 		    emit_move_insn (rm, gen_rtx_CONST (Pmode, tem));
! 		    if (expand_binop (Pmode, add_optab, rm, pic_offset_table_rtx,
! 				      rn, 0, OPTAB_LIB_WIDEN) != rn)
! 		      internal_error ("expand_binop failed in movsi gotrel");
! 		  }
! 		DONE;
! 	      }
! 	    else if (t == cris_got_symbol)
! 	      {
! 		/* Change a "move.d sym,rN" into (allocate register rM, rO)
! 		   "move.d (const (unspec [sym] CRIS_UNSPEC_GOTREAD)),rM"
! 		   "add.d rPIC,rM,rO", "move.d [rO],rN" with
! 		   the memory access marked as read-only.  */
! 		rtx tem, mem, rm, ro, rn = operands[0];
! 		gcc_assert (can_create_pseudo_p ());
! 		tem = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, operands[1]),
! 				      CRIS_UNSPEC_GOTREAD);
! 		rm = gen_reg_rtx (Pmode);
! 		emit_move_insn (rm, gen_rtx_CONST (Pmode, tem));
! 		ro = gen_reg_rtx (Pmode);
! 	        if (expand_binop (Pmode, add_optab, rm, pic_offset_table_rtx,
! 				  ro, 0, OPTAB_LIB_WIDEN) != ro)
! 		  internal_error ("expand_binop failed in movsi got");
! 		mem = gen_rtx_MEM (Pmode, ro);
! 
! 		/* This MEM doesn't alias anything.  Whether it
! 		   aliases other same symbols is unimportant.  */
! 		set_mem_alias_set (mem, new_alias_set ());
! 		MEM_NOTRAP_P (mem) = 1;
! 
! 		/* We can set the GOT memory read of a non-called symbol
! 		   to readonly, but not that of a call symbol, as those
! 		   are subject to lazy evaluation and usually have the value
! 		   changed from the first call to the second (but
! 		   constant thereafter).  */
! 		MEM_READONLY_P (mem) = 1;
! 		emit_move_insn (rn, mem);
! 		DONE;
! 	      }
! 	    else
! 	      {
! 		/* We get here when we have to change something that would
! 		   be recognizable if it wasn't PIC.  A ``sym'' is ok for
! 		   PIC symbols both with and without a GOT entry.  And ``sym
! 		   + offset'' is ok for local symbols, so the only thing it
! 		   could be, is a global symbol with an offset.  Check and
! 		   abort if not.  */
! 		rtx reg = gen_reg_rtx (Pmode);
! 		rtx sym = get_related_value (operands[1]);
! 		HOST_WIDE_INT offs = get_integer_term (operands[1]);
! 
! 		gcc_assert (can_create_pseudo_p ()
! 			    && t == cris_got_symbol_needing_fixup
! 			    && sym != NULL_RTX && offs != 0);
! 
! 		emit_move_insn (reg, sym);
! 		if (expand_binop (SImode, add_optab, reg,
! 				  GEN_INT (offs), operands[0], 0,
! 				  OPTAB_LIB_WIDEN) != operands[0])
! 		  internal_error ("expand_binop failed in movsi got+offs");
! 		DONE;
! 	      }
! 	  }
!       }
  })
  
! (define_insn "*movsi_got_load"
!   [(set (reg:SI CRIS_GOT_REGNUM) (unspec:SI [(const_int 0)] CRIS_UNSPEC_GOT))]
!   "flag_pic"
! {
!   return TARGET_V32
!     ? "lapc _GLOBAL_OFFSET_TABLE_,%:"
!     : "move.d $pc,%:\;sub.d .:GOTOFF,%:";
! }
!   [(set_attr "cc" "clobber")])
! 
! (define_insn "*movsi_internal"
    [(set
      (match_operand:SI 0 "nonimmediate_operand"
! 		      "=r,r, r,Q>,r,Q>,g,r,r, r,g,rQ>,x,  m,x")
!     (match_operand:SI 1 "cris_general_operand_or_pic_source"
! 		       "r,Q>,M,M, I,r, M,n,!S,g,r,x,  rQ>,x,gi"))]
      ;; Note that we prefer not to use the S alternative (if for some reason
      ;; it competes with others) above, but g matches S.
    ""
--- 563,588 ----
        && can_create_pseudo_p ())
      operands[1] = force_reg (SImode, operands[1]);
  
!    /* At post-reload time, we'll get here for e.g. split multi-mode insns
!       with a memory destination.  Go directly to the clobber-less variant.
!       FIXME: Also applies to special-register source or destination.  */
!    if (reload_completed
!        && (MEM_P (operands[0]) || operands[1] == const0_rtx))
!      {
!         emit_insn (gen_rtx_SET (operands[0], operands[1]));
!         DONE;
!      }
  })
  
! ;; We provide CC, CC_NZ and CC_NZVC variants, as moves clear V and C
! ;; and the result is thus usable in a compare against 0.
! (define_insn "*movsi_internal<setcc><setnz><setnzvc>"
    [(set
      (match_operand:SI 0 "nonimmediate_operand"
! 		      "=r,r, r,Q>,r,Q>,g,r,r,g,rQ>,x,  m,x")
!     (match_operand:SI 1 "general_operand"
! 		       "r,Q>,M,M, I,r, M,n,g,r,x,  rQ>,x,gi"))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
      ;; Note that we prefer not to use the S alternative (if for some reason
      ;; it competes with others) above, but g matches S.
    ""
***************
*** 1083,1126 ****
       letters.  FIXME: Check again.  It seems this could shrink a bit.  */
    switch (which_alternative)
      {
-     case 9:
-       if (TARGET_V32)
-        {
- 	 if (!flag_pic
- 	     && (GET_CODE (operands[1]) == SYMBOL_REF
- 		 || GET_CODE (operands[1]) == LABEL_REF
- 		 || (GET_CODE (operands[1]) == CONST
- 		     && (GET_CODE (XEXP (operands[1], 0)) != UNSPEC
- 			 || (XINT (XEXP (operands[1], 0), 1)
- 			     == CRIS_UNSPEC_PLT_PCREL)
- 			 || (XINT (XEXP (operands[1], 0), 1)
- 			     == CRIS_UNSPEC_PCREL)))))
- 	   {
- 	     /* FIXME: Express this through (set_attr cc none) instead,
- 		since we can't express the ``none'' at this point.  FIXME:
- 		Use lapc for everything except const_int and when next cc0
- 		user would want the flag setting.  */
- 	     CC_STATUS_INIT;
- 	     return "lapc %1,%0";
- 	   }
- 	 if (flag_pic == 1
- 	     && GET_CODE (operands[1]) == CONST
- 	     && GET_CODE (XEXP (operands[1], 0)) == UNSPEC
- 	     && XINT (XEXP (operands[1], 0), 1) == CRIS_UNSPEC_GOTREAD)
- 	   return "movu.w %1,%0";
-        }
-        /* FALLTHROUGH */
      case 0:
      case 1:
      case 5:
!     case 10:
        return "move.d %1,%0";
  
      case 11:
      case 12:
      case 13:
!     case 14:
!       return "move %d1,%0";
  
      case 2:
      case 3:
--- 592,609 ----
       letters.  FIXME: Check again.  It seems this could shrink a bit.  */
    switch (which_alternative)
      {
      case 0:
      case 1:
      case 5:
!     case 8:
!     case 9:
        return "move.d %1,%0";
  
+     case 10:
      case 11:
      case 12:
      case 13:
!       return "move %1,%0";
  
      case 2:
      case 3:
***************
*** 1147,1303 ****
  	}
        return "move.d %1,%0";
  
-     case 8:
-       {
- 	rtx tem = operands[1];
- 	gcc_assert (GET_CODE (tem) == CONST);
- 	tem = XEXP (tem, 0);
- 	if (GET_CODE (tem) == PLUS
- 	    && GET_CODE (XEXP (tem, 0)) == UNSPEC
- 	    && (XINT (XEXP (tem, 0), 1) == CRIS_UNSPEC_GOTREL
- 		|| XINT (XEXP (tem, 0), 1) == CRIS_UNSPEC_PCREL)
- 	    && CONST_INT_P (XEXP (tem, 1)))
- 	  tem = XEXP (tem, 0);
- 	gcc_assert (GET_CODE (tem) == UNSPEC);
- 	switch (XINT (tem, 1))
- 	  {
- 	  case CRIS_UNSPEC_GOTREAD:
- 	  case CRIS_UNSPEC_PLTGOTREAD:
- 	    /* Using sign-extend mostly to be consistent with the
- 	       indexed addressing mode.  */
- 	    if (flag_pic == 1)
- 	      return "movs.w %1,%0";
- 	    return "move.d %1,%0";
- 
- 	  case CRIS_UNSPEC_GOTREL:
- 	  case CRIS_UNSPEC_PLT_GOTREL:
- 	    gcc_assert (!TARGET_V32);
- 	    return "move.d %1,%0";
- 
- 	  case CRIS_UNSPEC_PCREL:
- 	  case CRIS_UNSPEC_PLT_PCREL:
- 	    gcc_assert (TARGET_V32);
- 	    /* LAPC doesn't set condition codes; clear them to make the
- 	       (equivalence-marked) result of this insn not presumed
- 	       present.  This instruction can be a PIC symbol load (for
- 	       a hidden symbol) which for weak symbols will be followed
- 	       by a test for NULL.  */
- 	    CC_STATUS_INIT;
- 	    return "lapc %1,%0";
- 
- 	  default:
- 	    gcc_unreachable ();
- 	  }
-       }
      default:
!       return "BOGUS: %1 to %0";
      }
  }
!   [(set_attr "slottable" "yes,yes,yes,yes,yes,yes,no,no,no,no,no,yes,yes,no,no")
!    (set_attr "cc" "*,*,*,*,*,*,*,*,*,*,*,none,none,none,none")])
! 
! ;; Extend operations with side-effect from mem to register, using
! ;; MOVS/MOVU.  These are from mem to register only.
! ;;
! ;; [rx=ry+rz.S]
! ;;
! ;; QImode to HImode
! ;;
! ;; FIXME: Can we omit extend to HImode, since GCC should truncate for
! ;; HImode by itself?  Perhaps use only anonymous modes?
! 
! (define_insn "*ext_sideqihi_biap"
!   [(set (match_operand:HI 0 "register_operand" "=r,r")
! 	(match_operator:HI
! 	 5 "cris_extend_operator"
! 	 [(mem:QI (plus:SI
! 		   (mult:SI (match_operand:SI 1 "register_operand" "r,r")
! 			    (match_operand:SI 2 "const_int_operand" "n,n"))
! 		   (match_operand:SI 3 "register_operand" "r,r")))]))
!    (set (match_operand:SI 4 "register_operand" "=*3,r")
! 	(plus:SI (mult:SI (match_dup 1)
! 			  (match_dup 2))
! 		 (match_dup 3)))]
!   "cris_side_effect_mode_ok (MULT, operands, 4, 3, 1, 2, 0)"
!   "@
!    #
!    mov%e5.%m5 [%4=%3+%1%T2],%0")
! 
! (define_insn "*ext_side<mode>si_biap"
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
! 	(match_operator:SI
! 	 5 "cris_extend_operator"
! 	 [(mem:BW (plus:SI
! 		   (mult:SI (match_operand:SI 1 "register_operand" "r,r")
! 			    (match_operand:SI 2 "const_int_operand" "n,n"))
! 		   (match_operand:SI 3 "register_operand" "r,r")))]))
!    (set (match_operand:SI 4 "register_operand" "=*3,r")
! 	(plus:SI (mult:SI (match_dup 1)
! 			  (match_dup 2))
! 		 (match_dup 3)))]
!   "cris_side_effect_mode_ok (MULT, operands, 4, 3, 1, 2, 0)"
!   "@
!    #
!    mov%e5<m> [%4=%3+%1%T2],%0")
! 
! ;; Same but [rx=ry+i]
! 
! ;; QImode to HImode
! 
! (define_insn "*ext_sideqihi"
!   [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r")
! 	(match_operator:HI
! 	 4 "cris_extend_operator"
! 	 [(mem:QI (plus:SI
! 		   (match_operand:SI 1 "cris_bdap_operand" "%r,r,r,R,R")
! 		   (match_operand:SI 2 "cris_bdap_operand" "r>Rn,r,>Rn,r,r")))]))
!    (set (match_operand:SI 3 "register_operand" "=*1,r,r,*2,r")
! 	(plus:SI (match_dup 1)
! 		 (match_dup 2)))]
!   "cris_side_effect_mode_ok (PLUS, operands, 3, 1, 2, -1, 0)"
! {
!   if ((which_alternative == 0 || which_alternative == 3)
!       && (!CONST_INT_P (operands[2])
! 	  || INTVAL (operands[2]) > 127
! 	  || INTVAL (operands[2]) < -128
! 	  || satisfies_constraint_N (operands[2])
! 	  || satisfies_constraint_J (operands[2])))
!     return "#";
!   if (which_alternative == 4)
!     return "mov%e4.%m4 [%3=%2%S1],%0";
!   return "mov%e4.%m4 [%3=%1%S2],%0";
! })
! 
! (define_insn "*ext_side<mode>si"
!   [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r")
! 	(match_operator:SI
! 	 4 "cris_extend_operator"
! 	 [(mem:BW (plus:SI
! 		   (match_operand:SI 1 "cris_bdap_operand" "%r,r,r,R,R")
! 		   (match_operand:SI 2 "cris_bdap_operand" "r>Rn,r,>Rn,r,r")))]))
!    (set (match_operand:SI 3 "register_operand" "=*1,r,r,*2,r")
! 	(plus:SI (match_dup 1)
! 		 (match_dup 2)))]
!   "cris_side_effect_mode_ok (PLUS, operands, 3, 1, 2, -1, 0)"
! {
!   if ((which_alternative == 0 || which_alternative == 3)
!       && (!CONST_INT_P (operands[2])
! 	  || INTVAL (operands[2]) > 127
! 	  || INTVAL (operands[2]) < -128
! 	  || satisfies_constraint_N (operands[2])
! 	  || satisfies_constraint_J (operands[2])))
!     return "#";
!   if (which_alternative == 4)
!     return "mov%e4<m> [%3=%2%S1],%0";
!   return "mov%e4<m> [%3=%1%S2],%0";
! })
  
  ;; FIXME: See movsi.
  
! (define_insn "movhi"
    [(set
      (match_operand:HI 0 "nonimmediate_operand" "=r,r, r,Q>,r,Q>,r,r,r,g,g,r,r,x")
!     (match_operand:HI 1 "general_operand"	"r,Q>,M,M, I,r, L,O,n,M,r,g,x,r"))]
    ""
  {
    switch (which_alternative)
--- 630,650 ----
  	}
        return "move.d %1,%0";
  
      default:
!       gcc_unreachable ();
      }
  }
!   [(set_attr "slottable" "yes,yes,yes,yes,yes,yes,no,no,no,no,yes,yes,no,no")
!    (set_attr "cc<cccc><ccnz><ccnzvc>"
! 	     "*,*,none,none,*,none,none,*,*,none,none,none,none,none")])
  
  ;; FIXME: See movsi.
  
! (define_insn "<acc><anz><anzvc>movhi<setcc><setnz><setnzvc>"
    [(set
      (match_operand:HI 0 "nonimmediate_operand" "=r,r, r,Q>,r,Q>,r,r,r,g,g,r,r,x")
!     (match_operand:HI 1 "general_operand"	"r,Q>,M,M, I,r, L,O,n,M,r,g,x,r"))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
  {
    switch (which_alternative)
***************
*** 1333,1345 ****
    }
  }
    [(set_attr "slottable" "yes,yes,yes,yes,yes,yes,no,yes,no,no,no,no,yes,yes")
!    (set_attr "cc" "*,*,none,none,*,none,*,clobber,*,none,none,*,none,none")])
  
  (define_insn "movstricthi"
    [(set
      (strict_low_part
       (match_operand:HI 0 "nonimmediate_operand" "+r,r, r,Q>,Q>,g,r,g"))
!     (match_operand:HI 1 "general_operand"	 "r,Q>,M,M, r, M,g,r"))]
    ""
    "@
     move.w %1,%0
--- 680,693 ----
    }
  }
    [(set_attr "slottable" "yes,yes,yes,yes,yes,yes,no,yes,no,no,no,no,yes,yes")
!    (set_attr "cc<cccc><ccnz><ccnzvc>" "*,*,none,none,*,none,*,clobber,*,none,none,*,none,none")])
  
  (define_insn "movstricthi"
    [(set
      (strict_low_part
       (match_operand:HI 0 "nonimmediate_operand" "+r,r, r,Q>,Q>,g,r,g"))
!     (match_operand:HI 1 "general_operand"	 "r,Q>,M,M, r, M,g,r"))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "@
     move.w %1,%0
***************
*** 1368,1376 ****
    ""
    "")
  
! (define_insn "movqi"
    [(set (match_operand:QI 0 "nonimmediate_operand" "=r,Q>,r, r,Q>,r,g,g,r,r,r,x")
! 	(match_operand:QI 1 "general_operand"	    "r,r, Q>,M,M, I,M,r,O,g,x,r"))]
    ""
    "@
     move.b %1,%0
--- 716,725 ----
    ""
    "")
  
! (define_insn "<acc><anz><anzvc>movqi<setcc><setnz><setnzvc>"
    [(set (match_operand:QI 0 "nonimmediate_operand" "=r,Q>,r, r,Q>,r,g,g,r,r,r,x")
! 	(match_operand:QI 1 "general_operand"	    "r,r, Q>,M,M, I,M,r,O,g,x,r"))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "@
     move.b %1,%0
***************
*** 1386,1397 ****
     move %1,%0
     move %1,%0"
    [(set_attr "slottable" "yes,yes,yes,yes,yes,yes,no,no,yes,no,yes,yes")
!    (set_attr "cc" "*,*,*,*,*,*,*,*,clobber,*,none,none")])
  
  (define_insn "movstrictqi"
    [(set (strict_low_part
  	 (match_operand:QI 0 "nonimmediate_operand" "+r,Q>,r, r,Q>,g,g,r"))
! 	(match_operand:QI 1 "general_operand"	     "r,r, Q>,M,M, M,r,g"))]
    ""
    "@
     move.b %1,%0
--- 735,748 ----
     move %1,%0
     move %1,%0"
    [(set_attr "slottable" "yes,yes,yes,yes,yes,yes,no,no,yes,no,yes,yes")
!    (set_attr "cc<cccc><ccnz><ccnzvc>"
! 	     "*,none,*,none,none,*,none,none,clobber,*,none,none")])
  
  (define_insn "movstrictqi"
    [(set (strict_low_part
  	 (match_operand:QI 0 "nonimmediate_operand" "+r,Q>,r, r,Q>,g,g,r"))
! 	(match_operand:QI 1 "general_operand"	     "r,r, Q>,M,M, M,r,g"))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "@
     move.b %1,%0
***************
*** 1411,1417 ****
  
  (define_insn "movsf"
    [(set (match_operand:SF 0 "nonimmediate_operand" "=r,Q>,r, r,Q>,g,g,r,r,x,Q>,m,x, x")
! 	(match_operand:SF 1 "general_operand"       "r,r, Q>,G,G, G,r,g,x,r,x, x,Q>,g"))]
    ""
    "@
     move.d %1,%0
--- 762,769 ----
  
  (define_insn "movsf"
    [(set (match_operand:SF 0 "nonimmediate_operand" "=r,Q>,r, r,Q>,g,g,r,r,x,Q>,m,x, x")
! 	(match_operand:SF 1 "general_operand"       "r,r, Q>,G,G, G,r,g,x,r,x, x,Q>,g"))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "@
     move.d %1,%0
***************
*** 1429,1496 ****
     move %1,%0
     move %1,%0"
    [(set_attr "slottable" "yes,yes,yes,yes,yes,no,no,no,yes,yes,yes,no,yes,no")])
- 
- ;; Movem patterns.  Primarily for use in function prologue and epilogue.
- ;; The V32 variants have an ordering matching the expectations of the
- ;; standard names "load_multiple" and "store_multiple"; pre-v32 movem
- ;; store R0 in the highest memory location.
  
! (define_expand "load_multiple"
!   [(match_operand:SI 0 "register_operand" "")
!    (match_operand:SI 1 "memory_operand" "")
!    (match_operand:SI 2 "const_int_operand" "")]
!   "TARGET_V32"
! {
!   rtx indreg;
! 
!   /* Apparently the predicate isn't checked, so we need to do so
!      manually.  Once happened for libstdc++-v3 locale_facets.tcc.  */
!   if (!MEM_P (operands[1]))
!     FAIL;
  
!   indreg = XEXP (operands[1], 0);
  
!   if (GET_CODE (indreg) == POST_INC)
!     indreg = XEXP (indreg, 0);
!   if (!REG_P (indreg)
!       || GET_CODE (operands[2]) != CONST_INT
!       || !REG_P (operands[0])
!       || REGNO (operands[0]) != 0
!       || INTVAL (operands[2]) > CRIS_SP_REGNUM
!       || (int) REGNO (indreg) < INTVAL (operands[2]))
!     FAIL;
!   gcc_unreachable ();
!   emit_insn (cris_gen_movem_load (operands[1], operands[2], 0));
!   DONE;
! })
  
! (define_expand "store_multiple"
!   [(match_operand:SI 0 "memory_operand" "")
!    (match_operand:SI 1 "register_operand" "")
!    (match_operand:SI 2 "const_int_operand" "")]
!   "TARGET_V32"
! {
!   rtx indreg;
  
!   /* See load_multiple.  */
!   if (!MEM_P (operands[0]))
!     FAIL;
  
!   indreg = XEXP (operands[0], 0);
  
!   if (GET_CODE (indreg) == POST_INC)
!     indreg = XEXP (indreg, 0);
!   if (!REG_P (indreg)
!       || GET_CODE (operands[2]) != CONST_INT
!       || !REG_P (operands[1])
!       || REGNO (operands[1]) != 0
!       || INTVAL (operands[2]) > CRIS_SP_REGNUM
!       || (int) REGNO (indreg) < INTVAL (operands[2]))
!     FAIL;
!   gcc_unreachable ();
!   cris_emit_movem_store (operands[0], operands[2], 0, false);
!   DONE;
! })
  
  (define_insn "*cris_load_multiple"
    [(match_parallel 0 "cris_load_multiple_op"
--- 781,842 ----
     move %1,%0
     move %1,%0"
    [(set_attr "slottable" "yes,yes,yes,yes,yes,no,no,no,yes,yes,yes,no,yes,no")])
  
! ;; Post-reload, for memory destinations, split the clobber-variant and
! ;; get rid of the clobber.
  
! (define_split ;; "*mov_tomem<mode>_split"
!   [(set (match_operand:BWD 0 "memory_operand")
! 	(match_operand:BWD 1 "nonmemory_operand"))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   "reload_completed"
!   [(set (match_dup 0) (match_dup 1))]
!   "")
  
! ;; Exclude moving special-registers to memory from matching for
! ;; less-than-SImode, as they are SImode only (or actually, the size of
! ;; the register, but the ones free for "x" are naturally SImode; see
! ;; special measures taken for reload).
! ;; This might be a belt-and-suspenders thing, as a move from special
! ;; register to memory in less-than-SImode should not have made it here.
  
! (define_mode_attr mov_tomem_enabled
!   [(SI "yes,yes,yes,yes,yes,yes")
!    (HI "yes,yes,no,yes,yes,no")
!    (QI "yes,yes,no,yes,yes,no")])
  
! (define_insn "*mov_tomem<mode>"
!   [(set (match_operand:BWD 0 "memory_operand"   "=Q>,Q>,Q>,m,m,m")
! 	(match_operand:BWD 1 "nonmemory_operand" "M, r, x, M,r,x"))]
!   "reload_completed"
!   "@
!    clear<m> %0
!    move<m> %1,%0
!    move %1,%0
!    clear<m> %0
!    move<m> %1,%0
!    move %1,%0"
!   [(set_attr "slottable" "yes,yes,yes,no,no,no")
!    (set_attr "enabled" "<mov_tomem_enabled>")])
  
! (define_split ;; "*mov_fromzero<mode>_split"
!   [(set (match_operand:BWD 0 "register_operand") (const_int 0))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   "reload_completed
!    && REGNO(operands[0]) <= CRIS_LAST_GENERAL_REGISTER"
!   [(set (match_dup 0) (const_int 0))]
!   "")
  
! (define_insn "*mov_fromzero<mode>"
!   [(set (match_operand:BWD 0 "register_operand" "=r") (const_int 0))]
!   "reload_completed"
!   "clear<m> %0"
!   [(set_attr "slottable" "yes")])
! 
! ;; Movem patterns.  Primarily for use in function prologue and epilogue.
! ;; Unfortunately, movem stores R0 in the highest memory location, thus
! ;; the opposite of the expectation for the standard names "load_multiple"
! ;; and "store_multiple".
  
  (define_insn "*cris_load_multiple"
    [(match_parallel 0 "cris_load_multiple_op"
***************
*** 1526,1544 ****
  
  (define_insn "extendsidi2"
    [(set (match_operand:DI 0 "register_operand" "=r")
! 	(sign_extend:DI (match_operand:SI 1 "general_operand" "g")))]
    ""
    "move.d %1,%M0\;smi %H0\;neg.d %H0,%H0")
  
  (define_insn "extend<mode>di2"
    [(set (match_operand:DI 0 "register_operand" "=r")
! 	(sign_extend:DI (match_operand:BW 1 "general_operand" "g")))]
    ""
    "movs<m> %1,%M0\;smi %H0\;neg.d %H0,%H0")
  
! (define_insn "extend<mode>si2"
    [(set (match_operand:SI 0 "register_operand" "=r,r,r")
! 	(sign_extend:SI (match_operand:BW 1 "general_operand" "r,Q>,g")))]
    ""
    "movs<m> %1,%0"
    [(set_attr "slottable" "yes,yes,no")])
--- 872,893 ----
  
  (define_insn "extendsidi2"
    [(set (match_operand:DI 0 "register_operand" "=r")
! 	(sign_extend:DI (match_operand:SI 1 "general_operand" "g")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "move.d %1,%M0\;smi %H0\;neg.d %H0,%H0")
  
  (define_insn "extend<mode>di2"
    [(set (match_operand:DI 0 "register_operand" "=r")
! 	(sign_extend:DI (match_operand:BW 1 "general_operand" "g")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "movs<m> %1,%M0\;smi %H0\;neg.d %H0,%H0")
  
! (define_insn "<acc><anz><anzvc>extend<mode>si2<setcc><setnz><setnzvc>"
    [(set (match_operand:SI 0 "register_operand" "=r,r,r")
! 	(sign_extend:SI (match_operand:BW 1 "general_operand" "r,Q>,g")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "movs<m> %1,%0"
    [(set_attr "slottable" "yes,yes,no")])
***************
*** 1548,1554 ****
  
  (define_insn "extendqihi2"
    [(set (match_operand:HI 0 "register_operand" "=r,r,r")
! 	(sign_extend:HI (match_operand:QI 1 "general_operand" "r,Q>,g")))]
    ""
    "movs.b %1,%0"
    [(set_attr "slottable" "yes,yes,no")])
--- 897,904 ----
  
  (define_insn "extendqihi2"
    [(set (match_operand:HI 0 "register_operand" "=r,r,r")
! 	(sign_extend:HI (match_operand:QI 1 "general_operand" "r,Q>,g")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "movs.b %1,%0"
    [(set_attr "slottable" "yes,yes,no")])
***************
*** 1557,1566 ****
  ;; Zero-extend.  The DImode ones are synthesized by gcc, so we don't
  ;; specify them here.
  
! (define_insn "zero_extend<mode>si2"
    [(set (match_operand:SI 0 "register_operand" "=r,r,r")
  	(zero_extend:SI
! 	 (match_operand:BW 1 "nonimmediate_operand" "r,Q>,m")))]
    ""
    "movu<m> %1,%0"
    [(set_attr "slottable" "yes,yes,no")])
--- 907,917 ----
  ;; Zero-extend.  The DImode ones are synthesized by gcc, so we don't
  ;; specify them here.
  
! (define_insn "<acc><anz><anzvc>zero_extend<mode>si2<setcc><setnz><setnzvc>"
    [(set (match_operand:SI 0 "register_operand" "=r,r,r")
  	(zero_extend:SI
! 	 (match_operand:BW 1 "nonimmediate_operand" "r,Q>,m")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "movu<m> %1,%0"
    [(set_attr "slottable" "yes,yes,no")])
***************
*** 1570,1712 ****
  (define_insn "zero_extendqihi2"
    [(set (match_operand:HI 0 "register_operand" "=r,r,r")
  	(zero_extend:HI
! 	 (match_operand:QI 1 "nonimmediate_operand" "r,Q>,m")))]
    ""
    "movu.b %1,%0"
    [(set_attr "slottable" "yes,yes,no")])
  
- ;; All kinds of arithmetic and logical instructions.
- ;;
- ;; First, anonymous patterns to match addressing modes with
- ;; side-effects.
- ;;
- ;; op.S [rx=ry+I],rz; (add, sub, or, and, bound).
- ;;
- ;; [rx=ry+rz.S]
- 
- (define_insn "*op_side<mode>_biap"
-   [(set (match_operand:BWD 0 "register_operand" "=r,r")
- 	(match_operator:BWD
- 	 6 "cris_orthogonal_operator"
- 	 [(match_operand:BWD 1 "register_operand" "0,0")
- 	  (mem:BWD (plus:SI
- 		    (mult:SI (match_operand:SI 2 "register_operand" "r,r")
- 			     (match_operand:SI 3 "const_int_operand" "n,n"))
- 		    (match_operand:SI 4 "register_operand" "r,r")))]))
-    (set (match_operand:SI 5 "register_operand" "=*4,r")
- 	(plus:SI (mult:SI (match_dup 2)
- 			  (match_dup 3))
- 		 (match_dup 4)))]
-   "cris_side_effect_mode_ok (MULT, operands, 5, 4, 2, 3, 0)"
-   "@
-    #
-    %x6<m> [%5=%4+%2%T3],%0")
- 
- ;; [rx=ry+i] ([%4=%2+%3])
- 
- (define_insn "*op_side<mode>"
-   [(set (match_operand:BWD 0 "register_operand" "=r,r,r,r,r")
- 	(match_operator:BWD
- 	 5 "cris_orthogonal_operator"
- 	 [(match_operand:BWD 1 "register_operand" "0,0,0,0,0")
- 	  (mem:BWD (plus:SI
- 		   (match_operand:SI 2 "cris_bdap_operand" "%r,r,r,R,R")
- 		   (match_operand:SI 3 "cris_bdap_operand" "r>Rn,r,>Rn,r,r")))]))
-    (set (match_operand:SI 4 "register_operand" "=*2,r,r,*3,r")
- 	(plus:SI (match_dup 2)
- 		 (match_dup 3)))]
-   "cris_side_effect_mode_ok (PLUS, operands, 4, 2, 3, -1, 0)"
- {
-   if ((which_alternative == 0 || which_alternative == 3)
-       && (!CONST_INT_P (operands[3])
- 	  || INTVAL (operands[3]) > 127
- 	  || INTVAL (operands[3]) < -128
- 	  || satisfies_constraint_N (operands[3])
- 	  || satisfies_constraint_J (operands[3])))
-     return "#";
-   if (which_alternative == 4)
-     return "%x5.%s0 [%4=%3%S2],%0";
-   return "%x5<m> [%4=%2%S3],%0";
- })
- 
- ;; To match all cases for commutative operations we may have to have the
- ;; following pattern for add, or & and.  I do not know really, but it does
- ;; not break anything.
- ;;
- ;; FIXME: This really ought to be checked.
- ;;
- ;; op.S [rx=ry+I],rz;
- ;;
- ;; [rx=ry+rz.S]
- 
- (define_insn "*op_swap_side<mode>_biap"
-   [(set (match_operand:BWD 0 "register_operand" "=r,r")
- 	(match_operator:BWD
- 	 6 "cris_commutative_orth_op"
- 	 [(mem:BWD (plus:SI
- 		   (mult:SI (match_operand:SI 2 "register_operand" "r,r")
- 			    (match_operand:SI 3 "const_int_operand" "n,n"))
- 		   (match_operand:SI 4 "register_operand" "r,r")))
- 	  (match_operand:BWD 1 "register_operand" "0,0")]))
-    (set (match_operand:SI 5 "register_operand" "=*4,r")
- 	(plus:SI (mult:SI (match_dup 2)
- 			  (match_dup 3))
- 		 (match_dup 4)))]
-   "cris_side_effect_mode_ok (MULT, operands, 5, 4, 2, 3, 0)"
-   "@
-    #
-    %x6<m> [%5=%4+%2%T3],%0")
- 
- ;; [rx=ry+i] ([%4=%2+%3])
- ;; FIXME: These could have anonymous mode for operand 0.
- 
- ;; QImode
- 
- (define_insn "*op_swap_side<mode>"
-   [(set (match_operand:BWD 0 "register_operand" "=r,r,r,r,r")
- 	(match_operator:BWD
- 	 5 "cris_commutative_orth_op"
- 	 [(mem:BWD
- 	   (plus:SI (match_operand:SI 2 "cris_bdap_operand" "%r,r,r,R,R")
- 		    (match_operand:SI 3 "cris_bdap_operand" "r>Rn,r,>Rn,r,r")))
- 	  (match_operand:BWD 1 "register_operand" "0,0,0,0,0")]))
-    (set (match_operand:SI 4 "register_operand" "=*2,r,r,*3,r")
- 	(plus:SI (match_dup 2)
- 		 (match_dup 3)))]
-   "cris_side_effect_mode_ok (PLUS, operands, 4, 2, 3, -1, 0)"
- {
-   if ((which_alternative == 0 || which_alternative == 3)
-       && (!CONST_INT_P (operands[3])
- 	  || INTVAL (operands[3]) > 127
- 	  || INTVAL (operands[3]) < -128
- 	  || satisfies_constraint_N (operands[3])
- 	  || satisfies_constraint_J (operands[3])))
-     return "#";
-   if (which_alternative == 4)
-     return "%x5<m> [%4=%3%S2],%0";
-   return "%x5<m> [%4=%2%S3],%0";
- })
- 
  ;; Add operations, standard names.
  
  ;; Note that for the 'P' constraint, the high part can be -1 or 0.  We
  ;; output the insn through the 'A' output modifier as "adds.w" and "addq",
  ;; respectively.
  (define_expand "adddi3"
!   [(set (match_operand:DI 0 "register_operand")
! 	(plus:DI (match_operand:DI 1 "register_operand")
! 		 (match_operand:DI 2 "general_operand")))]
    ""
! {
!   if (MEM_P (operands[2]) && TARGET_V32)
!     operands[2] = force_reg (DImode, operands[2]);
! })
  
! (define_insn "*adddi3_non_v32"
    [(set (match_operand:DI 0 "register_operand" "=r,r,r,&r,&r")
  	(plus:DI (match_operand:DI 1 "register_operand" "%0,0,0,0,r")
! 		 (match_operand:DI 2 "general_operand" "J,N,P,g,!To")))]
!   "!TARGET_V32"
    "@
     addq %2,%M0\;ax\;addq 0,%H0
     subq %n2,%M0\;ax\;subq 0,%H0
--- 921,952 ----
  (define_insn "zero_extendqihi2"
    [(set (match_operand:HI 0 "register_operand" "=r,r,r")
  	(zero_extend:HI
! 	 (match_operand:QI 1 "nonimmediate_operand" "r,Q>,m")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "movu.b %1,%0"
    [(set_attr "slottable" "yes,yes,no")])
  
  ;; Add operations, standard names.
  
  ;; Note that for the 'P' constraint, the high part can be -1 or 0.  We
  ;; output the insn through the 'A' output modifier as "adds.w" and "addq",
  ;; respectively.
  (define_expand "adddi3"
!   [(parallel
!     [(set (match_operand:DI 0 "register_operand")
! 	  (plus:DI (match_operand:DI 1 "register_operand")
! 		   (match_operand:DI 2 "general_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
!   "")
  
! (define_insn "*adddi3<setnz>"
    [(set (match_operand:DI 0 "register_operand" "=r,r,r,&r,&r")
  	(plus:DI (match_operand:DI 1 "register_operand" "%0,0,0,0,r")
! 		 (match_operand:DI 2 "general_operand" "J,N,P,g,!To")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   ""
    "@
     addq %2,%M0\;ax\;addq 0,%H0
     subq %n2,%M0\;ax\;subq 0,%H0
***************
*** 1714,1753 ****
     add.d %M2,%M0\;ax\;add.d %H2,%H0
     add.d %M2,%M1,%M0\;ax\;add.d %H2,%H1,%H0")
  
- ; It seems no use allowing a memory operand for this one, because we'd
- ; need a scratch register for incrementing the address.
- (define_insn "*adddi3_v32"
-   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r")
-        (plus:DI (match_operand:DI 1 "register_operand" "%0,0,0,0,0")
-                 (match_operand:DI 2 "nonmemory_operand" "J,N,P,r,n")))]
-   "TARGET_V32"
-   "@
-    addq %2,%M0\;addc 0,%H0
-    subq %n2,%M0\;ax\;subq 0,%H0
-    add%e2.%z2 %2,%M0\;addc %H2,%H0
-    add.d %M2,%M0\;addc %H2,%H0
-    add.d %M2,%M0\;addc %H2,%H0")
- 
  (define_expand "add<mode>3"
!   [(set (match_operand:BWD 0 "register_operand")
! 	(plus:BWD
! 	 (match_operand:BWD 1 "register_operand")
! 	 (match_operand:BWD 2 "general_operand")))]
    ""
    "")
  
! (define_insn "*addsi3_non_v32"
!   [(set (match_operand:SI 0 "register_operand"  "=r,r, r,r,r,r, r,r,  r")
  	(plus:SI
! 	 (match_operand:SI 1 "register_operand" "%0,0, 0,0,0,0, 0,r,  r")
! 	 (match_operand:SI 2 "general_operand"   "r,Q>,J,N,n,!S,g,!To,0")))]
  
  ;; The last constraint is due to that after reload, the '%' is not
  ;; honored, and canonicalization doesn't care about keeping the same
  ;; register as in destination.  This will happen after insn splitting.
- ;; gcc <= 2.7.2.  FIXME: Check for gcc-2.9x
  
!  "!TARGET_V32"
  {
    switch (which_alternative)
      {
--- 954,981 ----
     add.d %M2,%M0\;ax\;add.d %H2,%H0
     add.d %M2,%M1,%M0\;ax\;add.d %H2,%H1,%H0")
  
  (define_expand "add<mode>3"
!   [(parallel
!     [(set (match_operand:BWD 0 "register_operand")
! 	  (plus:BWD
! 	   (match_operand:BWD 1 "register_operand")
! 	   (match_operand:BWD 2 "general_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
    "")
  
! (define_insn "*addsi3<setnz>"
!   [(set (match_operand:SI 0 "register_operand"  "=r,r, r,r,r,r,r,  r")
  	(plus:SI
! 	 (match_operand:SI 1 "register_operand" "%0,0, 0,0,0,0,r,  r")
! 	 (match_operand:SI 2 "general_operand"   "r,Q>,J,N,n,g,!To,0")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
  
  ;; The last constraint is due to that after reload, the '%' is not
  ;; honored, and canonicalization doesn't care about keeping the same
  ;; register as in destination.  This will happen after insn splitting.
  
!  ""
  {
    switch (which_alternative)
      {
***************
*** 1777,1854 ****
  	}
        return "add.d %2,%0";
      case 5:
!       {
! 	rtx tem = operands[2];
! 	gcc_assert (GET_CODE (tem) == CONST);
! 	tem = XEXP (tem, 0);
! 	if (GET_CODE (tem) == PLUS
! 	    && GET_CODE (XEXP (tem, 0)) == UNSPEC
! 	    /* We don't allow CRIS_UNSPEC_PCREL here; we can't have a
! 	       pc-relative operand in an add insn.  */
! 	    && XINT (XEXP (tem, 0), 1) == CRIS_UNSPEC_GOTREL
! 	    && CONST_INT_P (XEXP (tem, 1)))
! 	  tem = XEXP (tem, 0);
! 	gcc_assert (GET_CODE (tem) == UNSPEC);
! 	switch (XINT (tem, 1))
! 	  {
! 	  case CRIS_UNSPEC_GOTREAD:
! 	  case CRIS_UNSPEC_PLTGOTREAD:
! 	    /* Using sign-extend mostly to be consistent with the
! 	       indexed addressing mode.  */
! 	    if (flag_pic == 1)
! 	      return "adds.w %2,%0";
! 	    return "add.d %2,%0";
! 
! 	  case CRIS_UNSPEC_PLT_GOTREL:
! 	  case CRIS_UNSPEC_GOTREL:
! 	    return "add.d %2,%0";
! 	  default:
! 	    gcc_unreachable ();
! 	  }
!       }
      case 6:
-       return "add%u2 %2,%0";
-     case 7:
        return "add.d %2,%1,%0";
!     case 8:
        return "add.d %1,%0";
      default:
        return "BOGUS addsi %2+%1 to %0";
      }
  }
!  [(set_attr "slottable" "yes,yes,yes,yes,no,no,no,no,yes")])
! 
! ; FIXME: Check what's best: having the three-operand ACR alternative
! ; before or after the corresponding-operand2 alternative.  Check for
! ; *all* insns.  FIXME: constant constraint letter for -128..127.
! (define_insn "*addsi3_v32"
!   [(set (match_operand:SI 0 "register_operand"  "=r,!a,r,!a, r,r,!a,r,!a,r,r,r,!a")
! 	(plus:SI
! 	 (match_operand:SI 1 "register_operand" "%0,r, 0, r, 0,0,r, 0,r, 0,0,0,r")
! 	 (match_operand:SI 2 "general_operand"  "r, r, Q>,Q>,J,N,NJ,L,L, P,n,g,g")))]
!   "TARGET_V32"
!   "@
!    add.d %2,%0
!    addi %2.b,%1,%0
!    add.d %2,%0
!    addo.d %2,%1,%0
!    addq %2,%0
!    subq %n2,%0
!    addoq %2,%1,%0
!    adds.w %2,%0
!    addo %2,%1,%0
!    addu.w %2,%0
!    add.d %2,%0
!    add%u2 %2,%0
!    addo.%Z2 %2,%1,%0"
!   [(set_attr "slottable" "yes,yes,yes,yes,yes,yes,yes,no,no,no,no,no,no")
!    (set_attr "cc" "*,none,*,none,*,*,none,*,none,*,*,*,none")])
  
! (define_insn "*addhi3_non_v32"
    [(set (match_operand:HI 0 "register_operand"		"=r,r, r,r,r,r")
  	(plus:HI (match_operand:HI 1 "register_operand" "%0,0, 0,0,0,r")
! 		 (match_operand:HI 2 "general_operand"   "r,Q>,J,N,g,!To")))]
!   "!TARGET_V32"
    "@
     add.w %2,%0
     add.w %2,%0
--- 1005,1027 ----
  	}
        return "add.d %2,%0";
      case 5:
!       return "add.d %2,%0";
      case 6:
        return "add.d %2,%1,%0";
!     case 7:
        return "add.d %1,%0";
      default:
        return "BOGUS addsi %2+%1 to %0";
      }
  }
!  [(set_attr "slottable" "yes,yes,yes,yes,no,no,no,yes")])
  
! (define_insn "*addhi3<setnz>"
    [(set (match_operand:HI 0 "register_operand"		"=r,r, r,r,r,r")
  	(plus:HI (match_operand:HI 1 "register_operand" "%0,0, 0,0,0,r")
! 		 (match_operand:HI 2 "general_operand"   "r,Q>,J,N,g,!To")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   ""
    "@
     add.w %2,%0
     add.w %2,%0
***************
*** 1857,1888 ****
     add.w %2,%0
     add.w %2,%1,%0"
    [(set_attr "slottable" "yes,yes,yes,yes,no,no")
!    (set_attr "cc" "normal,normal,clobber,clobber,normal,normal")])
! 
! (define_insn "*addhi3_v32"
!   [(set (match_operand:HI 0 "register_operand" "=r, !a,r,!a, r,r,!a,r,!a")
! 	(plus:HI
! 	 (match_operand:HI 1 "register_operand" "%0,r, 0, r, 0,0,r, 0,r")
! 	 (match_operand:HI 2 "general_operand"  "r, r, Q>,Q>,J,N,NJ,g,g")))]
!   "TARGET_V32"
!   "@
!    add.w %2,%0
!    addi %2.b,%1,%0
!    add.w %2,%0
!    addo.w %2,%1,%0
!    addq %2,%0
!    subq %n2,%0
!    addoq %2,%1,%0
!    add.w %2,%0
!    addo.w %2,%1,%0"
!   [(set_attr "slottable" "yes,yes,yes,yes,yes,yes,yes,no,no")
!    (set_attr "cc" "*,none,*,none,clobber,clobber,none,*,none")])
  
! (define_insn "*addqi3_non_v32"
    [(set (match_operand:QI 0 "register_operand"		"=r,r, r,r,r,r,r")
  	(plus:QI (match_operand:QI 1 "register_operand" "%0,0, 0,0,0,0,r")
! 		 (match_operand:QI 2 "general_operand"	 "r,Q>,J,N,O,g,!To")))]
!   "!TARGET_V32"
    "@
     add.b %2,%0
     add.b %2,%0
--- 1030,1043 ----
     add.w %2,%0
     add.w %2,%1,%0"
    [(set_attr "slottable" "yes,yes,yes,yes,no,no")
!    (set_attr "cc<ccnz>" "normal,normal,clobber,clobber,normal,normal")])
  
! (define_insn "*addqi3<setnz>"
    [(set (match_operand:QI 0 "register_operand"		"=r,r, r,r,r,r,r")
  	(plus:QI (match_operand:QI 1 "register_operand" "%0,0, 0,0,0,0,r")
! 		 (match_operand:QI 2 "general_operand"	 "r,Q>,J,N,O,g,!To")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   ""
    "@
     add.b %2,%0
     add.b %2,%0
***************
*** 1892,1918 ****
     add.b %2,%0
     add.b %2,%1,%0"
    [(set_attr "slottable" "yes,yes,yes,yes,yes,no,no")
!    (set_attr "cc" "normal,normal,clobber,clobber,clobber,normal,normal")])
! 
! (define_insn "*addqi3_v32"
!   [(set (match_operand:QI 0 "register_operand"  "=r,!a,r,!a, r,r,!a,r,r,!a")
! 	(plus:QI
! 	 (match_operand:QI 1 "register_operand" "%0,r, 0, r, 0,0,r, 0,0,r")
! 	 (match_operand:QI 2 "general_operand"   "r,r, Q>,Q>,J,N,NJ,O,g,g")))]
!   "TARGET_V32"
!   "@
!    add.b %2,%0
!    addi %2.b,%1,%0
!    add.b %2,%0
!    addo.b %2,%1,%0
!    addq %2,%0
!    subq %n2,%0
!    addoq %2,%1,%0
!    subQ -%b2,%0
!    add.b %2,%0
!    addo.b %2,%1,%0"
!   [(set_attr "slottable" "yes,yes,yes,yes,yes,yes,yes,yes,no,no")
!    (set_attr "cc" "*,none,*,none,clobber,clobber,none,clobber,*,none")])
  
  ;; Subtract.
  ;;
--- 1047,1053 ----
     add.b %2,%0
     add.b %2,%1,%0"
    [(set_attr "slottable" "yes,yes,yes,yes,yes,no,no")
!    (set_attr "cc<ccnz>" "normal,normal,clobber,clobber,clobber,normal,normal")])
  
  ;; Subtract.
  ;;
***************
*** 1923,1942 ****
  ;; output the insn through the 'D' output modifier as "subs.w" and "subq",
  ;; respectively.
  (define_expand "subdi3"
!   [(set (match_operand:DI 0 "register_operand")
! 	(minus:DI (match_operand:DI 1 "register_operand")
! 		  (match_operand:DI 2 "general_operand")))]
    ""
! {
!   if (TARGET_V32 && MEM_P (operands[2]))
!     operands[2] = force_reg (DImode, operands[2]);
! })
  
! (define_insn "*subdi3_non_v32"
    [(set (match_operand:DI 0 "register_operand" "=r,r,r,&r,&r")
  	(minus:DI (match_operand:DI 1 "register_operand" "0,0,0,0,r")
! 		  (match_operand:DI 2 "general_operand" "J,N,P,g,!To")))]
!   "!TARGET_V32"
    "@
     subq %2,%M0\;ax\;subq 0,%H0
     addq %n2,%M0\;ax\;addq 0,%H0
--- 1058,1077 ----
  ;; output the insn through the 'D' output modifier as "subs.w" and "subq",
  ;; respectively.
  (define_expand "subdi3"
!   [(parallel
!     [(set (match_operand:DI 0 "register_operand")
! 	  (minus:DI (match_operand:DI 1 "register_operand")
! 		    (match_operand:DI 2 "general_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
!   "")
  
! (define_insn "*subdi3<setnz>"
    [(set (match_operand:DI 0 "register_operand" "=r,r,r,&r,&r")
  	(minus:DI (match_operand:DI 1 "register_operand" "0,0,0,0,r")
! 		  (match_operand:DI 2 "general_operand" "J,N,P,g,!To")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   ""
    "@
     subq %2,%M0\;ax\;subq 0,%H0
     addq %n2,%M0\;ax\;addq 0,%H0
***************
*** 1944,1974 ****
     sub.d %M2,%M0\;ax\;sub.d %H2,%H0
     sub.d %M2,%M1,%M0\;ax\;sub.d %H2,%H1,%H0")
  
- (define_insn "*subdi3_v32"
-   [(set (match_operand:DI 0 "register_operand" "=r,r,r,&r")
- 	(minus:DI (match_operand:DI 1 "register_operand" "0,0,0,0")
- 		  (match_operand:DI 2 "nonmemory_operand" "J,N,P,r")))]
-   "TARGET_V32"
-   "@
-    subq %2,%M0\;ax\;subq 0,%H0
-    addq %n2,%M0\;ax\;addq 0,%H0
-    sub%e2.%z2 %2,%M0\;ax\;%D2 %H2,%H0
-    sub.d %M2,%M0\;ax\;sub.d %H2,%H0")
- 
  (define_expand "sub<mode>3"
!   [(set (match_operand:BWD 0 "register_operand")
! 	(minus:BWD
! 	 (match_operand:BWD 1 "register_operand")
! 	 (match_operand:BWD 2 "general_operand")))]
    ""
    "")
  
! (define_insn "*subsi3_non_v32"
    [(set (match_operand:SI 0 "register_operand" "=r,r, r,r,r,r,r,r")
  	(minus:SI
  	 (match_operand:SI 1 "register_operand" "0,0, 0,0,0,0,0,r")
! 	 (match_operand:SI 2 "general_operand"	"r,Q>,J,N,P,n,g,!To")))]
!   "!TARGET_V32"
  
  ;; This does not do the optimal: "addu.w 65535,r0" when %2 is negative.
  ;; But then again, %2 should not be negative.
--- 1079,1101 ----
     sub.d %M2,%M0\;ax\;sub.d %H2,%H0
     sub.d %M2,%M1,%M0\;ax\;sub.d %H2,%H1,%H0")
  
  (define_expand "sub<mode>3"
!   [(parallel
!     [(set (match_operand:BWD 0 "register_operand")
! 	  (minus:BWD
! 	   (match_operand:BWD 1 "register_operand")
! 	   (match_operand:BWD 2 "general_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
    "")
  
! (define_insn "*subsi3<setnz>"
    [(set (match_operand:SI 0 "register_operand" "=r,r, r,r,r,r,r,r")
  	(minus:SI
  	 (match_operand:SI 1 "register_operand" "0,0, 0,0,0,0,0,r")
! 	 (match_operand:SI 2 "general_operand"	"r,Q>,J,N,P,n,g,!To")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   ""
  
  ;; This does not do the optimal: "addu.w 65535,r0" when %2 is negative.
  ;; But then again, %2 should not be negative.
***************
*** 1983,2010 ****
     sub.d %2,%0
     sub.d %2,%1,%0"
    [(set_attr "slottable" "yes,yes,yes,yes,no,no,no,no")])
- 
- (define_insn "*subsi3_v32"
-   [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r,r,r")
-        (minus:SI
-         (match_operand:SI 1 "register_operand" "0,0,0,0,0,0,0")
-         (match_operand:SI 2 "general_operand" "r,Q>,J,N,P,n,g")))]
-   "TARGET_V32"
-   "@
-    sub.d %2,%0
-    sub.d %2,%0
-    subq %2,%0
-    addq %n2,%0
-    sub%e2.%z2 %2,%0
-    sub.d %2,%0
-    sub.d %2,%0"
-   [(set_attr "slottable" "yes,yes,yes,yes,no,no,no")])
  
! (define_insn "*sub<mode>3_nonv32"
    [(set (match_operand:BW 0 "register_operand"		"=r,r, r,r,r,r")
  	(minus:BW (match_operand:BW 1 "register_operand" "0,0, 0,0,0,r")
! 		  (match_operand:BW 2 "general_operand"  "r,Q>,J,N,g,!To")))]
!   "!TARGET_V32"
    "@
     sub<m> %2,%0
     sub<m> %2,%0
--- 1110,1122 ----
     sub.d %2,%0
     sub.d %2,%1,%0"
    [(set_attr "slottable" "yes,yes,yes,yes,no,no,no,no")])
  
! (define_insn "*sub<mode>3<setnz>"
    [(set (match_operand:BW 0 "register_operand"		"=r,r, r,r,r,r")
  	(minus:BW (match_operand:BW 1 "register_operand" "0,0, 0,0,0,r")
! 		  (match_operand:BW 2 "general_operand"  "r,Q>,J,N,g,!To")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   ""
    "@
     sub<m> %2,%0
     sub<m> %2,%0
***************
*** 2013,2430 ****
     sub<m> %2,%0
     sub<m> %2,%1,%0"
    [(set_attr "slottable" "yes,yes,yes,yes,no,no")
!    (set_attr "cc" "normal,normal,clobber,clobber,normal,normal")])
! 
! (define_insn "*sub<mode>3_v32"
!   [(set (match_operand:BW 0 "register_operand" "=r,r,r,r,r")
! 	(minus:BW (match_operand:BW 1 "register_operand" "0,0,0,0,0")
! 		  (match_operand:BW 2 "general_operand" "r,Q>,J,N,g")))]
!   "TARGET_V32"
!   "@
!    sub<m> %2,%0
!    sub<m> %2,%0
!    subq %2,%0
!    addq %n2,%0
!    sub<m> %2,%0"
!   [(set_attr "slottable" "yes,yes,yes,yes,no")
!    (set_attr "cc" "normal,normal,clobber,clobber,normal")])
! 
! ;; CRIS has some add/sub-with-sign/zero-extend instructions.
! ;;  Although these perform sign/zero-extension to SImode, they are
! ;; equally applicable for the HImode case.
! ;; FIXME: Check; GCC should handle the widening.
! ;;  Note that these must be located after the normal add/sub patterns,
! ;; so not to get constants into any less specific operands.
! ;;
! ;; Extend with add/sub and side-effect.
! ;;
! ;; ADDS/SUBS/ADDU/SUBU and BOUND, which needs a check for zero_extend
! ;;
! ;; adds/subs/addu/subu bound [rx=ry+rz.S]
! 
! ;; QImode to HImode
! ;; FIXME: GCC should widen.
! 
! (define_insn "*extopqihi_side_biap"
!   [(set (match_operand:HI 0 "register_operand" "=r,r")
! 	(match_operator:HI
! 	 6 "cris_additive_operand_extend_operator"
! 	 [(match_operand:HI 1 "register_operand" "0,0")
! 	  (match_operator:HI
! 	   7 "cris_extend_operator"
! 	   [(mem:QI (plus:SI
! 		     (mult:SI (match_operand:SI 2 "register_operand" "r,r")
! 			      (match_operand:SI 3 "const_int_operand" "n,n"))
! 		     (match_operand:SI 4 "register_operand" "r,r")))])]))
!    (set (match_operand:SI 5 "register_operand" "=*4,r")
! 	(plus:SI (mult:SI (match_dup 2)
! 			  (match_dup 3))
! 		 (match_dup 4)))]
!   "cris_side_effect_mode_ok (MULT, operands, 5, 4, 2, 3, 0)"
!   "@
!    #
!    %x6%e7.%m7 [%5=%4+%2%T3],%0")
! 
! (define_insn "*extop<mode>si_side_biap"
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
! 	(match_operator:SI
! 	 6 "cris_operand_extend_operator"
! 	 [(match_operand:SI 1 "register_operand" "0,0")
! 	  (match_operator:SI
! 	   7 "cris_extend_operator"
! 	   [(mem:BW (plus:SI
! 		     (mult:SI (match_operand:SI 2 "register_operand" "r,r")
! 			      (match_operand:SI 3 "const_int_operand" "n,n"))
! 		     (match_operand:SI 4 "register_operand" "r,r")))])]))
!    (set (match_operand:SI 5 "register_operand" "=*4,r")
! 	(plus:SI (mult:SI (match_dup 2)
! 			  (match_dup 3))
! 		 (match_dup 4)))]
!   "(GET_CODE (operands[6]) != UMIN || GET_CODE (operands[7]) == ZERO_EXTEND)
!    && cris_side_effect_mode_ok (MULT, operands, 5, 4, 2, 3, 0)"
!   "@
!    #
!    %x6%e7<m> [%5=%4+%2%T3],%0")
! 
! 
! ;; [rx=ry+i]
! 
! ;; QImode to HImode
! 
! (define_insn "*extopqihi_side"
!   [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r")
! 	(match_operator:HI
! 	 5 "cris_additive_operand_extend_operator"
! 	 [(match_operand:HI 1 "register_operand" "0,0,0,0,0")
! 	  (match_operator:HI
! 	   6 "cris_extend_operator"
! 	   [(mem:QI
! 	     (plus:SI (match_operand:SI 2 "cris_bdap_operand" "%r,r,r,R,R")
! 		      (match_operand:SI 3 "cris_bdap_operand" "r>Rn,r,>Rn,r,r")
! 		      ))])]))
!    (set (match_operand:SI 4 "register_operand" "=*2,r,r,*3,r")
! 	(plus:SI (match_dup 2)
! 		 (match_dup 3)))]
!   "cris_side_effect_mode_ok (PLUS, operands, 4, 2, 3, -1, 0)"
! {
!   if ((which_alternative == 0 || which_alternative == 3)
!       && (!CONST_INT_P (operands[3])
! 	  || INTVAL (operands[3]) > 127
! 	  || INTVAL (operands[3]) < -128
! 	  || satisfies_constraint_N (operands[3])
! 	  || satisfies_constraint_J (operands[3])))
!     return "#";
!   if (which_alternative == 4)
!     return "%x5%E6.%m6 [%4=%3%S2],%0";
!   return "%x5%E6.%m6 [%4=%2%S3],%0";
! })
! 
! (define_insn "*extop<mode>si_side"
!   [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r")
! 	(match_operator:SI
! 	 5 "cris_operand_extend_operator"
! 	 [(match_operand:SI 1 "register_operand" "0,0,0,0,0")
! 	  (match_operator:SI
! 	   6 "cris_extend_operator"
! 	   [(mem:BW
! 	     (plus:SI (match_operand:SI 2 "cris_bdap_operand" "%r,r,r,R,R")
! 		      (match_operand:SI 3 "cris_bdap_operand" "r>Rn,r,>Rn,r,r")
! 		      ))])]))
!    (set (match_operand:SI 4 "register_operand" "=*2,r,r,*3,r")
! 	(plus:SI (match_dup 2)
! 		 (match_dup 3)))]
!   "(GET_CODE (operands[5]) != UMIN || GET_CODE (operands[6]) == ZERO_EXTEND)
!    && cris_side_effect_mode_ok (PLUS, operands, 4, 2, 3, -1, 0)"
! {
!   if ((which_alternative == 0 || which_alternative == 3)
!       && (!CONST_INT_P (operands[3])
! 	  || INTVAL (operands[3]) > 127
! 	  || INTVAL (operands[3]) < -128
! 	  || satisfies_constraint_N (operands[3])
! 	  || satisfies_constraint_J (operands[3])))
!     return "#";
!   if (which_alternative == 4)
!     return "%x5%E6<m> [%4=%3%S2],%0";
!   return "%x5%E6<m> [%4=%2%S3],%0";
! })
! 
! 
! ;; As with op.S we may have to add special pattern to match commuted
! ;; operands to adds/addu and bound
! ;;
! ;; adds/addu/bound [rx=ry+rz.S]
! 
! ;; QImode to HImode
! ;; FIXME: GCC should widen.
! 
! (define_insn "*extopqihi_swap_side_biap"
!   [(set (match_operand:HI 0 "register_operand" "=r,r")
! 	(plus:HI
! 	 (match_operator:HI
! 	  6 "cris_extend_operator"
! 	  [(mem:QI (plus:SI
! 		    (mult:SI (match_operand:SI 2 "register_operand" "r,r")
! 			     (match_operand:SI 3 "const_int_operand" "n,n"))
! 		    (match_operand:SI 4 "register_operand" "r,r")))])
! 	 (match_operand:HI 1 "register_operand" "0,0")))
!    (set (match_operand:SI 5 "register_operand" "=*4,r")
! 	(plus:SI (mult:SI (match_dup 2)
! 			  (match_dup 3))
! 		 (match_dup 4)))]
!   "cris_side_effect_mode_ok (MULT, operands, 5, 4, 2, 3, 0)"
!   "@
!    #
!    add%e6.b [%5=%4+%2%T3],%0")
! 
! (define_insn "*extop<mode>si_swap_side_biap"
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
! 	(match_operator:SI
! 	 7 "cris_plus_or_bound_operator"
! 	 [(match_operator:SI
! 	   6 "cris_extend_operator"
! 	   [(mem:BW (plus:SI
! 		     (mult:SI (match_operand:SI 2 "register_operand" "r,r")
! 			      (match_operand:SI 3 "const_int_operand" "n,n"))
! 		     (match_operand:SI 4 "register_operand" "r,r")))])
! 	  (match_operand:SI 1 "register_operand" "0,0")]))
!    (set (match_operand:SI 5 "register_operand" "=*4,r")
! 	(plus:SI (mult:SI (match_dup 2)
! 			  (match_dup 3))
! 		 (match_dup 4)))]
!   "(GET_CODE (operands[7]) != UMIN || GET_CODE (operands[6]) == ZERO_EXTEND)
!    && cris_side_effect_mode_ok (MULT, operands, 5, 4, 2, 3, 0)"
!   "@
!    #
!    %x7%E6<m> [%5=%4+%2%T3],%0")
! 
! ;; [rx=ry+i]
! ;; FIXME: GCC should widen.
! 
! ;; QImode to HImode
! 
! (define_insn "*extopqihi_swap_side"
!   [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r")
! 	(plus:HI
! 	 (match_operator:HI
! 	  5 "cris_extend_operator"
! 	  [(mem:QI (plus:SI
! 		    (match_operand:SI 2 "cris_bdap_operand" "%r,r,r,R,R")
! 		    (match_operand:SI 3 "cris_bdap_operand" "r>Rn,r,>Rn,r,r")))])
! 	 (match_operand:HI 1 "register_operand" "0,0,0,0,0")))
!    (set (match_operand:SI 4 "register_operand" "=*2,r,r,*3,r")
! 	(plus:SI (match_dup 2)
! 		 (match_dup 3)))]
!   "cris_side_effect_mode_ok (PLUS, operands, 4, 2, 3, -1, 0)"
! {
!   if ((which_alternative == 0 || which_alternative == 3)
!       && (!CONST_INT_P (operands[3])
! 	  || INTVAL (operands[3]) > 127
! 	  || INTVAL (operands[3]) < -128
! 	  || satisfies_constraint_N (operands[3])
! 	  || satisfies_constraint_J (operands[3])))
!     return "#";
!   if (which_alternative == 4)
!     return "add%e5.b [%4=%3%S2],%0";
!   return "add%e5.b [%4=%2%S3],%0";
! })
! 
! (define_insn "*extop<mode>si_swap_side"
!   [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r")
! 	(match_operator:SI
! 	 6 "cris_plus_or_bound_operator"
! 	 [(match_operator:SI
! 	   5 "cris_extend_operator"
! 	   [(mem:BW (plus:SI
! 		     (match_operand:SI 2 "cris_bdap_operand" "%r,r,r,R,R")
! 		     (match_operand:SI 3 "cris_bdap_operand" "r>Rn,r,>Rn,r,r")))])
! 	  (match_operand:SI 1 "register_operand" "0,0,0,0,0")]))
!    (set (match_operand:SI 4 "register_operand" "=*2,r,r,*3,r")
! 	(plus:SI (match_dup 2)
! 		 (match_dup 3)))]
!   "(GET_CODE (operands[6]) != UMIN || GET_CODE (operands[5]) == ZERO_EXTEND)
!    && cris_side_effect_mode_ok (PLUS, operands, 4, 2, 3, -1, 0)"
! {
!   if ((which_alternative == 0 || which_alternative == 3)
!       && (!CONST_INT_P (operands[3])
! 	  || INTVAL (operands[3]) > 127
! 	  || INTVAL (operands[3]) < -128
! 	  || satisfies_constraint_N (operands[3])
! 	  || satisfies_constraint_J (operands[3])))
!     return "#";
!   if (which_alternative == 4)
!     return \"%x6%E5.%m5 [%4=%3%S2],%0\";
!   return "%x6%E5<m> [%4=%2%S3],%0";
! })
  
  ;; Extend versions (zero/sign) of normal add/sub (no side-effects).
  
  ;; QImode to HImode
  ;; FIXME: GCC should widen.
  
! (define_insn "*extopqihi_non_v32"
    [(set (match_operand:HI 0 "register_operand" "=r,r,r,r")
! 	(match_operator:HI
! 	 3 "cris_additive_operand_extend_operator"
! 	 [(match_operand:HI 1 "register_operand" "0,0,0,r")
! 	  (match_operator:HI
! 	   4 "cris_extend_operator"
! 	   [(match_operand:QI 2 "nonimmediate_operand" "r,Q>,m,!To")])]))]
!   "!TARGET_V32 && GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
!    && (operands[1] != frame_pointer_rtx || GET_CODE (operands[3]) != PLUS)"
    "@
!    %x3%E4.%m4 %2,%0
!    %x3%E4.%m4 %2,%0
!    %x3%E4.%m4 %2,%0
!    %x3%E4.%m4 %2,%1,%0"
    [(set_attr "slottable" "yes,yes,no,no")
     (set_attr "cc" "clobber")])
  
! (define_insn "*extopqihi_v32"
!   [(set (match_operand:HI 0 "register_operand" "=r,r")
! 	(match_operator:HI
! 	 3 "cris_additive_operand_extend_operator"
! 	 [(match_operand:HI 1 "register_operand" "0,0")
! 	  (match_operator:HI
! 	   4 "cris_extend_operator"
! 	   [(match_operand:QI 2 "nonimmediate_operand" "r,m")])]))]
!   "TARGET_V32"
!   "%x3%e4.%m4 %2,%0"
!   [(set_attr "slottable" "yes")
!    (set_attr "cc" "clobber")])
! 
! ;; QImode to SImode
! 
! (define_insn "*extop<mode>si_non_v32"
    [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
! 	(match_operator:SI
! 	 3 "cris_operand_extend_operator"
! 	 [(match_operand:SI 1 "register_operand" "0,0,0,r")
! 	  (match_operator:SI
! 	   4 "cris_extend_operator"
! 	   [(match_operand:BW 2 "nonimmediate_operand" "r,Q>,m,!To")])]))]
!   "!TARGET_V32
!    && (GET_CODE (operands[3]) != UMIN || GET_CODE (operands[4]) == ZERO_EXTEND)
!    && GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
!    && (operands[1] != frame_pointer_rtx || GET_CODE (operands[3]) != PLUS)"
    "@
!    %x3%E4<m> %2,%0
!    %x3%E4<m> %2,%0
!    %x3%E4<m> %2,%0
!    %x3%E4<m> %2,%1,%0"
    [(set_attr "slottable" "yes,yes,no,no")])
- 
- (define_insn "*extop<mode>si_v32"
-   [(set (match_operand:SI 0 "register_operand" "=r,r")
- 	(match_operator:SI
- 	 3 "cris_additive_operand_extend_operator"
- 	 [(match_operand:SI 1 "register_operand" "0,0")
- 	  (match_operator:SI
- 	   4 "cris_extend_operator"
- 	   [(match_operand:BW 2 "nonimmediate_operand" "r,m")])]))]
-   "TARGET_V32"
-   "%x3%e4.%m4 %2,%0"
-   [(set_attr "slottable" "yes")])
  
! ;; As with the side-effect patterns, may have to have swapped operands for add.
  ;; For commutative operands, these are the canonical forms.
  
  ;; QImode to HImode
  
! (define_insn "*addxqihi_swap_non_v32"
    [(set (match_operand:HI 0 "register_operand" "=r,r,r,r")
  	(plus:HI
! 	 (match_operator:HI
! 	  3 "cris_extend_operator"
! 	  [(match_operand:QI 2 "nonimmediate_operand" "r,Q>,m,!To")])
! 	 (match_operand:HI 1 "register_operand" "0,0,0,r")))]
!   "!TARGET_V32 && operands[1] != frame_pointer_rtx"
    "@
!    add%e3.b %2,%0
!    add%e3.b %2,%0
!    add%e3.b %2,%0
!    add%e3.b %2,%1,%0"
    [(set_attr "slottable" "yes,yes,no,no")
     (set_attr "cc" "clobber")])
  
! ;; A case for v32, to catch the "addo" insn in addition to "adds".  We
! ;; only care to match the canonical form; there should be no other.
! 
! (define_insn "*addsbw_v32"
!   [(set (match_operand:HI 0 "register_operand" "=r,r,!a")
! 	(plus:HI
! 	 (sign_extend:HI
! 	  (match_operand:QI 2 "nonimmediate_operand" "r,m,m"))
! 	 (match_operand:HI 1 "register_operand" "0,0,r")))]
!   "TARGET_V32"
!   "@
!    adds.b %2,%0
!    adds.b %2,%0
!    addo.b %2,%1,%0"
!   [(set_attr "slottable" "yes")
!    (set_attr "cc" "clobber,clobber,none")])
! 
! (define_insn "*addubw_v32"
!   [(set (match_operand:HI 0 "register_operand" "=r,r")
! 	(plus:HI
! 	 (zero_extend:HI
! 	  (match_operand:QI 2 "nonimmediate_operand" "r,m"))
! 	 (match_operand:HI 1 "register_operand" "0,0")))]
!   "TARGET_V32"
!   "addu.b %2,%0"
!   [(set_attr "slottable" "yes")
!    (set_attr "cc" "clobber")])
! 
! (define_insn "*extop<mode>si_swap_non_v32"
    [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
! 	(match_operator:SI
! 	 4 "cris_plus_or_bound_operator"
! 	 [(match_operator:SI
! 	   3 "cris_extend_operator"
! 	   [(match_operand:BW 2 "nonimmediate_operand" "r,Q>,m,!To")])
! 	  (match_operand:SI 1 "register_operand" "0,0,0,r")]))]
!   "!TARGET_V32
!    && (GET_CODE (operands[4]) != UMIN || GET_CODE (operands[3]) == ZERO_EXTEND)
     && operands[1] != frame_pointer_rtx"
    "@
!    %x4%E3<m> %2,%0
!    %x4%E3<m> %2,%0
!    %x4%E3<m> %2,%0
!    %x4%E3<m> %2,%1,%0"
    [(set_attr "slottable" "yes,yes,no,no")])
- 
- (define_insn "*adds<mode>_v32"
-   [(set (match_operand:SI 0 "register_operand" "=r,r,!a")
- 	(plus:SI
- 	 (sign_extend:SI
- 	  (match_operand:BW 2 "nonimmediate_operand" "r,m,m"))
- 	 (match_operand:SI 1 "register_operand" "0,0,r")))]
-   "TARGET_V32"
-   "@
-    adds<m> %2,%0
-    adds<m> %2,%0
-    addo<m> %2,%1,%0"
-   [(set_attr "slottable" "yes")
-    (set_attr "cc" "*,*,none")])
- 
- (define_insn "*addu<mode>_v32"
-   [(set (match_operand:SI 0 "register_operand" "=r,r")
-        (plus:SI
-         (zero_extend:SI
-           (match_operand:BW 2 "nonimmediate_operand" "r,m"))
-         (match_operand:SI 1 "register_operand" "0,0")))]
-   "TARGET_V32 && operands[1] != frame_pointer_rtx"
-   "addu<m> %2,%0"
-   [(set_attr "slottable" "yes")])
- 
- (define_insn "*bound<mode>_v32"
-   [(set (match_operand:SI 0 "register_operand" "=r")
-        (umin:SI
-         (zero_extend:SI
-          (match_operand:BW 2 "register_operand" "r"))
-         (match_operand:SI 1 "register_operand" "0")))]
-   "TARGET_V32 && operands[1] != frame_pointer_rtx"
-   "bound<m> %2,%0"
-   [(set_attr "slottable" "yes")])
  
  ;; This is the special case when we use what corresponds to the
  ;; instruction above in "casesi".  Do *not* change it to use the generic
--- 1125,1204 ----
     sub<m> %2,%0
     sub<m> %2,%1,%0"
    [(set_attr "slottable" "yes,yes,yes,yes,no,no")
!    (set_attr "cc<ccnz>" "normal,normal,clobber,clobber,normal,normal")])
  
  ;; Extend versions (zero/sign) of normal add/sub (no side-effects).
  
  ;; QImode to HImode
  ;; FIXME: GCC should widen.
  
! (define_insn "*<addsub><su>qihi"
    [(set (match_operand:HI 0 "register_operand" "=r,r,r,r")
! 	(plusminus:HI
! 	 (match_operand:HI 1 "register_operand" "0,0,0,r")
! 	 (szext:HI (match_operand:QI 2 "nonimmediate_operand" "r,Q>,m,!To"))))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   "GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
!    && (operands[1] != frame_pointer_rtx || <plusminus:CODE> != PLUS)"
    "@
!    <addsub><su>.b %2,%0
!    <addsub><su>.b %2,%0
!    <addsub><su>.b %2,%0
!    <addsub><su>.b %2,%1,%0"
    [(set_attr "slottable" "yes,yes,no,no")
     (set_attr "cc" "clobber")])
  
! ;; FIXME: bound is actually also <setnzvc>, but is so rarely used in this
! ;; form that it's not worthwhile to make that distinction.
! (define_insn "*<addsubbo><su><nd><mode>si<setnz>"
    [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
! 	(plusminusumin:SI
! 	 (match_operand:SI 1 "register_operand" "0,0,0,r")
! 	 (szext:SI (match_operand:BW 2 "nonimmediate_operand" "r,Q>,m,!To"))))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   "(<plusminusumin:CODE> != UMIN || <szext:CODE> == ZERO_EXTEND)
!    && (operands[1] != frame_pointer_rtx || <plusminusumin:CODE> != PLUS)"
    "@
!    <addsubbo><su><nd><m> %2,%0
!    <addsubbo><su><nd><m> %2,%0
!    <addsubbo><su><nd><m> %2,%0
!    <addsubbo><su><nd><m> %2,%1,%0"
    [(set_attr "slottable" "yes,yes,no,no")])
  
! ;; We may have swapped operands for add or bound.
  ;; For commutative operands, these are the canonical forms.
  
  ;; QImode to HImode
  
! (define_insn "*add<su>qihi_swap"
    [(set (match_operand:HI 0 "register_operand" "=r,r,r,r")
  	(plus:HI
! 	 (szext:HI (match_operand:QI 2 "nonimmediate_operand" "r,Q>,m,!To"))
! 	 (match_operand:HI 1 "register_operand" "0,0,0,r")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   "operands[1] != frame_pointer_rtx"
    "@
!    add<su>.b %2,%0
!    add<su>.b %2,%0
!    add<su>.b %2,%0
!    add<su>.b %2,%1,%0"
    [(set_attr "slottable" "yes,yes,no,no")
     (set_attr "cc" "clobber")])
  
! (define_insn "*<addsubbo><su><nd><mode>si<setnz>_swap"
    [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
! 	(plusumin:SI
! 	 (szext:SI (match_operand:BW 2 "nonimmediate_operand" "r,Q>,m,!To"))
! 	 (match_operand:SI 1 "register_operand" "0,0,0,r")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   "(<plusumin:CODE> != UMIN || <szext:CODE> == ZERO_EXTEND)
     && operands[1] != frame_pointer_rtx"
    "@
!    <addsubbo><su><nd><m> %2,%0
!    <addsubbo><su><nd><m> %2,%0
!    <addsubbo><su><nd><m> %2,%0
!    <addsubbo><su><nd><m> %2,%1,%0"
    [(set_attr "slottable" "yes,yes,no,no")])
  
  ;; This is the special case when we use what corresponds to the
  ;; instruction above in "casesi".  Do *not* change it to use the generic
***************
*** 2457,2486 ****
  			     (pc))))
  		  (pc))
  	 (label_ref (match_operand 2 "" ""))))
!    (use (label_ref (match_operand 3 "" "")))]
!   "!TARGET_V32 && operands[0] != frame_pointer_rtx"
    "adds.w [$pc+%0.w],$pc"
    [(set_attr "cc" "clobber")])
- 
- ;; For V32, we just have a jump, but we need to mark the table as used,
- ;; and the jump insn must have the if_then_else form expected by core
- ;; GCC.  Since we don't want to prolong the lifetime of the original
- ;; index value, we compare against "unspec 0".  It's a pity we have to
- ;; jump through to get the default label in place and to keep the jump
- ;; table around.  FIXME: Look into it some time.
- 
- (define_insn "*casesi_jump_v32"
-   [(set (pc)
- 	(if_then_else
- 	 (ltu (unspec [(const_int 0)] CRIS_UNSPEC_CASESI)
- 	      (match_operand:SI 0 "const_int_operand" "n"))
- 	 (match_operand:SI 1 "register_operand" "r")
- 	 (label_ref (match_operand 2 "" ""))))
-    (use (label_ref (match_operand 3 "" "")))]
-   "TARGET_V32"
-   "jump %1%#"
-   [(set_attr "cc" "clobber")
-    (set_attr "slottable" "has_slot")])
  
  ;; Multiply instructions.
  
--- 1231,1241 ----
  			     (pc))))
  		  (pc))
  	 (label_ref (match_operand 2 "" ""))))
!    (use (label_ref (match_operand 3 "" "")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   "operands[0] != frame_pointer_rtx"
    "adds.w [$pc+%0.w],$pc"
    [(set_attr "cc" "clobber")])
  
  ;; Multiply instructions.
  
***************
*** 2495,2501 ****
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(mult:SI
  	 (match_operand:SI 1 "register_operand" "%0")
! 	 (match_operand:SI 2 "const_int_operand" "n")))]
    "operands[0] != frame_pointer_rtx
     && operands[1] != frame_pointer_rtx
     && CONST_INT_P (operands[2])
--- 1250,1257 ----
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(mult:SI
  	 (match_operand:SI 1 "register_operand" "%0")
! 	 (match_operand:SI 2 "const_int_operand" "n")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    "operands[0] != frame_pointer_rtx
     && operands[1] != frame_pointer_rtx
     && CONST_INT_P (operands[2])
***************
*** 2520,2591 ****
  
  ;; The addi insn as it is normally used.
  
- ;; Make the ACR alternative taste bad enough to not choose it as a
- ;; preference to avoid spilling problems (unwind-dw2-fde.c at build).
- ;; FIXME: Revisit for new register allocator.
- 
  (define_insn "*addi"
!   [(set (match_operand:SI 0 "register_operand" "=r,!a")
  	(plus:SI
! 	 (mult:SI (match_operand:SI 2 "register_operand" "r,r")
! 		  (match_operand:SI 3 "const_int_operand" "n,n"))
! 	 (match_operand:SI 1 "register_operand" "0,r")))]
    "operands[0] != frame_pointer_rtx
     && operands[1] != frame_pointer_rtx
     && CONST_INT_P (operands[3])
!    && (INTVAL (operands[3]) == 1
!        || INTVAL (operands[3]) == 2 || INTVAL (operands[3]) == 4)"
!   "@
!    addi %2%T3,%0
!    addi %2%T3,%1,%0"
    [(set_attr "slottable" "yes")
     (set_attr "cc" "none")])
  
! ;; The mstep instruction.  Probably not useful by itself; it's to
! ;; non-linear wrt. the other insns.  We used to expand to it, so at least
! ;; it's correct.
! 
! (define_insn "mstep_shift"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(if_then_else:SI
! 	 (lt:SI (cc0) (const_int 0))
! 	 (plus:SI (ashift:SI (match_operand:SI 1 "register_operand" "0")
! 			     (const_int 1))
! 		  (match_operand:SI 2 "register_operand" "r"))
! 	 (ashift:SI (match_operand:SI 3 "register_operand" "0")
! 		    (const_int 1))))]
!   "!TARGET_V32"
!   "mstep %2,%0"
    [(set_attr "slottable" "yes")])
  
! ;; When illegitimate addresses are legitimized, sometimes gcc forgets
! ;; to canonicalize the multiplications.
! ;;
! ;; FIXME: Check gcc > 2.7.2, remove and possibly fix in gcc.
  
! (define_insn "mstep_mul"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(if_then_else:SI
! 	 (lt:SI (cc0) (const_int 0))
! 	 (plus:SI (mult:SI (match_operand:SI 1 "register_operand" "0")
! 			   (const_int 2))
! 		  (match_operand:SI 2 "register_operand" "r"))
! 	 (mult:SI (match_operand:SI 3 "register_operand" "0")
! 		  (const_int 2))))]
!   "!TARGET_V32
!    && operands[0] != frame_pointer_rtx
!    && operands[1] != frame_pointer_rtx
!    && operands[2] != frame_pointer_rtx
!    && operands[3] != frame_pointer_rtx"
!   "mstep %2,%0"
!   [(set_attr "slottable" "yes")])
  
  (define_insn "<u>mul<s><mode>3"
    [(set (match_operand:WD 0 "register_operand" "=r")
  	(mult:WD
  	 (szext:WD (match_operand:<S> 1 "register_operand" "%0"))
  	 (szext:WD (match_operand:<S> 2 "register_operand" "r"))))
!    (clobber (match_scratch:SI 3 "=h"))]
    "TARGET_HAS_MUL_INSNS"
    "%!mul<su><mm> %2,%0"
    [(set (attr "slottable")
--- 1276,1367 ----
  
  ;; The addi insn as it is normally used.
  
  (define_insn "*addi"
!   [(set (match_operand:SI 0 "register_operand" "=r")
  	(plus:SI
! 	 (ashift:SI (match_operand:SI 2 "register_operand" "r")
! 		    (match_operand:SI 3 "const_int_operand" "n"))
! 	 (match_operand:SI 1 "register_operand" "0")))]
    "operands[0] != frame_pointer_rtx
     && operands[1] != frame_pointer_rtx
     && CONST_INT_P (operands[3])
!    && (INTVAL (operands[3]) == 1 || INTVAL (operands[3]) == 2)"
!   "addi %2%T3,%0"
    [(set_attr "slottable" "yes")
     (set_attr "cc" "none")])
  
! ;; The mult-vs-ashift canonicalization-cleanup plagues us: nothing in
! ;; reload transforms a "scaled multiplication" into an ashift in a
! ;; reloaded address; it's passed as-is and expected to be recognized,
! ;; or else we get a tell-tale "unrecognizable insn".
! ;; On top of that, we *should* match the bare insn, as a *matching
! ;; pattern* (as opposed to e.g. a reload_load_address expander
! ;; changing the mul into an ashift), so can_reload_into will re-use
! ;; registers in the reloaded expression instead of allocating a new
! ;; register.
! (define_insn_and_split "*addi_reload"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(plus:SI
! 	 (mult:SI (match_operand:SI 2 "register_operand" "r")
! 		  (match_operand:SI 3 "const_int_operand" "n"))
! 	 (match_operand:SI 1 "register_operand" "0")))]
!   "operands[0] != frame_pointer_rtx
!    && operands[1] != frame_pointer_rtx
!    && CONST_INT_P (operands[3])
!    && (INTVAL (operands[3]) == 2 || INTVAL (operands[3]) == 4)
!    && (reload_in_progress || reload_completed)"
!   "#"
!   ""
!   [(set (match_dup 0)
! 	(plus:SI (ashift:SI (match_dup 2) (match_dup 3)) (match_dup 1)))]
!   "operands[3] = operands[3] == const2_rtx ? const1_rtx : const2_rtx;")
! 
! ;; This pattern is usually generated after reload, so a '%' is
! ;; ineffective; use explicit combinations.
! (define_insn "*addi_b_<mode>"
!   [(set (match_operand:BWD 0 "register_operand" "=r,r")
! 	(plus:BWD
! 	 (match_operand:BWD 1 "register_operand" "0,r")
! 	 (match_operand:BWD 2 "register_operand" "r,0")))]
!   ""
!   "@
!    addi %2.b,%0
!    addi %1.b,%0"
    [(set_attr "slottable" "yes")])
  
! ;; Strip the dccr clobber from addM3 with register operands, if the
! ;; next instruction isn't using it.
! ;; Not clobbering dccr may let cmpelim match a later compare with a
! ;; previous operation of interest.  This has to run before cmpelim so it
! ;; can't be a peephole2.  See gcc.target/cris/pr93372-45.c for a
! ;; test-case.
! (define_split ;; "*add<mode>3_addi"
!   [(parallel
!     [(set (match_operand:BWD 0 "register_operand")
! 	  (plus:BWD
! 	   (match_operand:BWD 1 "register_operand")
! 	   (match_operand:BWD 2 "register_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
!   "reload_completed"
!   [(set (match_dup 0) (plus:BWD (match_dup 1) (match_dup 2)))]
! {
!   rtx reg = operands[0];
!   rtx_insn *i = next_nonnote_nondebug_insn_bb (curr_insn);
  
!   while (i != NULL_RTX && (!INSN_P (i) || DEBUG_INSN_P (i)))
!     i = next_nonnote_nondebug_insn_bb (i);
! 
!   if (i == NULL_RTX || reg_mentioned_p (reg, i) || BARRIER_P (i))
!     FAIL;
! })
  
  (define_insn "<u>mul<s><mode>3"
    [(set (match_operand:WD 0 "register_operand" "=r")
  	(mult:WD
  	 (szext:WD (match_operand:<S> 1 "register_operand" "%0"))
  	 (szext:WD (match_operand:<S> 2 "register_operand" "r"))))
!    (clobber (match_scratch:SI 3 "=h"))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    "TARGET_HAS_MUL_INSNS"
    "%!mul<su><mm> %2,%0"
    [(set (attr "slottable")
***************
*** 2608,2614 ****
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(mult:SI (match_operand:SI 1 "register_operand" "%0")
  		 (match_operand:SI 2 "register_operand" "r")))
!    (clobber (match_scratch:SI 3 "=h"))]
    "TARGET_HAS_MUL_INSNS"
    "%!muls.d %2,%0"
    [(set (attr "slottable")
--- 1384,1391 ----
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(mult:SI (match_operand:SI 1 "register_operand" "%0")
  		 (match_operand:SI 2 "register_operand" "r")))
!    (clobber (match_scratch:SI 3 "=h"))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    "TARGET_HAS_MUL_INSNS"
    "%!muls.d %2,%0"
    [(set (attr "slottable")
***************
*** 2622,2637 ****
  
  ;; When needed, we can get the high 32 bits from the overflow
  ;; register.  We don't care to split and optimize these.
- ;;
- ;; Note that cc0 is still valid after the move-from-overflow-register
- ;; insn; no special precaution need to be taken in cris_notice_update_cc.
  
  (define_insn "<u>mulsidi3"
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(mult:DI
  	 (szext:DI (match_operand:SI 1 "register_operand" "%0"))
  	 (szext:DI (match_operand:SI 2 "register_operand" "r"))))
!    (clobber (match_scratch:SI 3 "=h"))]
    "TARGET_HAS_MUL_INSNS"
    "%!mul<su>.d %2,%M0\;move $mof,%H0")
  
--- 1399,1412 ----
  
  ;; When needed, we can get the high 32 bits from the overflow
  ;; register.  We don't care to split and optimize these.
  
  (define_insn "<u>mulsidi3"
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(mult:DI
  	 (szext:DI (match_operand:SI 1 "register_operand" "%0"))
  	 (szext:DI (match_operand:SI 2 "register_operand" "r"))))
!    (clobber (match_scratch:SI 3 "=h"))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    "TARGET_HAS_MUL_INSNS"
    "%!mul<su>.d %2,%M0\;move $mof,%H0")
  
***************
*** 2657,2663 ****
  	   (szext:DI (match_operand:SI 1 "register_operand" "r,r,0,r"))
  	   (szext:DI (match_operand:SI 2 "register_operand" "r,r,r,0")))
  	  (const_int 32))))
!    (clobber (match_scratch:SI 3 "=1,2,h,h"))]
    "TARGET_HAS_MUL_INSNS"
    "@
     %!mul<su>.d %2,%1
--- 1432,1439 ----
  	   (szext:DI (match_operand:SI 1 "register_operand" "r,r,0,r"))
  	   (szext:DI (match_operand:SI 2 "register_operand" "r,r,r,0")))
  	  (const_int 32))))
!    (clobber (match_scratch:SI 3 "=1,2,h,h"))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    "TARGET_HAS_MUL_INSNS"
    "@
     %!mul<su>.d %2,%1
***************
*** 2679,2689 ****
  			(const_int 1))
  		   (match_operand:SI 4 "register_operand" "2"))
  	 (ashift:SI (match_operand:SI 5 "register_operand" "0")
! 			(const_int 1))))]
    ""
    "dstep %2,%0"
!   [(set_attr "slottable" "yes")
!    (set_attr "cc" "noov32")])
  
  ;; Here's a variant with mult instead of ashift.
  ;;
--- 1455,1465 ----
  			(const_int 1))
  		   (match_operand:SI 4 "register_operand" "2"))
  	 (ashift:SI (match_operand:SI 5 "register_operand" "0")
! 			(const_int 1))))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "dstep %2,%0"
!   [(set_attr "slottable" "yes")])
  
  ;; Here's a variant with mult instead of ashift.
  ;;
***************
*** 2699,2712 ****
  			    (const_int 2))
  		   (match_operand:SI 4 "register_operand" "2"))
  	 (mult:SI (match_operand:SI 5 "register_operand" "0")
! 		  (const_int 2))))]
    "operands[0] != frame_pointer_rtx
     && operands[1] != frame_pointer_rtx
     && operands[2] != frame_pointer_rtx
     && operands[3] != frame_pointer_rtx"
    "dstep %2,%0"
!   [(set_attr "slottable" "yes")
!    (set_attr "cc" "noov32")])
  
  ;; Logical operators.
  
--- 1475,1488 ----
  			    (const_int 2))
  		   (match_operand:SI 4 "register_operand" "2"))
  	 (mult:SI (match_operand:SI 5 "register_operand" "0")
! 		  (const_int 2))))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    "operands[0] != frame_pointer_rtx
     && operands[1] != frame_pointer_rtx
     && operands[2] != frame_pointer_rtx
     && operands[3] != frame_pointer_rtx"
    "dstep %2,%0"
!   [(set_attr "slottable" "yes")])
  
  ;; Logical operators.
  
***************
*** 2724,2732 ****
  ;; FIXME: This should be made obsolete.
  
  (define_expand "andsi3"
!   [(set (match_operand:SI 0 "nonimmediate_operand"	   "")
! 	(and:SI (match_operand:SI 1 "nonimmediate_operand" "")
! 		(match_operand:SI 2 "general_operand"	 "")))]
    ""
  {
    if (! (CONST_INT_P (operands[2])
--- 1500,1510 ----
  ;; FIXME: This should be made obsolete.
  
  (define_expand "andsi3"
!   [(parallel
!     [(set (match_operand:SI 0 "nonimmediate_operand")
! 	  (and:SI (match_operand:SI 1 "nonimmediate_operand")
! 		  (match_operand:SI 2 "general_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
  {
    if (! (CONST_INT_P (operands[2])
***************
*** 2755,2761 ****
  	  reg1 = reg0;
  	}
  
!       emit_insn (gen_rtx_SET (reg0, gen_rtx_AND (SImode, reg1, operands[2])));
  
        /* Make sure we get the right *final* destination.  */
        if (! REG_P (operands[0]))
--- 1533,1540 ----
  	  reg1 = reg0;
  	}
  
!       cris_emit_insn (gen_rtx_SET (reg0, gen_rtx_AND (SImode, reg1,
! 						      operands[2])));
  
        /* Make sure we get the right *final* destination.  */
        if (! REG_P (operands[0]))
***************
*** 2770,2785 ****
  (define_insn "*andsi_movu"
    [(set (match_operand:SI 0 "register_operand" "=r,r,r")
  	(and:SI (match_operand:SI 1 "nonimmediate_operand" "%r,Q,To")
! 		(match_operand:SI 2 "const_int_operand" "n,n,n")))]
    "(INTVAL (operands[2]) == 255 || INTVAL (operands[2]) == 65535)
     && !side_effects_p (operands[1])"
    "movu.%z2 %1,%0"
    [(set_attr "slottable" "yes,yes,no")])
  
  (define_insn "*andsi_clear"
    [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,Q,Q,To,To")
  	(and:SI (match_operand:SI 1 "nonimmediate_operand" "%0,0,0,0,0,0")
! 		(match_operand:SI 2 "const_int_operand" "P,n,P,n,P,n")))]
    "(INTVAL (operands[2]) == -65536 || INTVAL (operands[2]) == -256)
     && !side_effects_p (operands[0])"
    "@
--- 1549,1568 ----
  (define_insn "*andsi_movu"
    [(set (match_operand:SI 0 "register_operand" "=r,r,r")
  	(and:SI (match_operand:SI 1 "nonimmediate_operand" "%r,Q,To")
! 		(match_operand:SI 2 "const_int_operand" "n,n,n")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    "(INTVAL (operands[2]) == 255 || INTVAL (operands[2]) == 65535)
     && !side_effects_p (operands[1])"
    "movu.%z2 %1,%0"
    [(set_attr "slottable" "yes,yes,no")])
  
+ ;; FIXME: Remember, this does *not* actually affect condition codes;
+ ;; get rid of the clobber.
  (define_insn "*andsi_clear"
    [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,Q,Q,To,To")
  	(and:SI (match_operand:SI 1 "nonimmediate_operand" "%0,0,0,0,0,0")
! 		(match_operand:SI 2 "const_int_operand" "P,n,P,n,P,n")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    "(INTVAL (operands[2]) == -65536 || INTVAL (operands[2]) == -256)
     && !side_effects_p (operands[0])"
    "@
***************
*** 2800,2810 ****
  ;; pressure (worse code).  That will hopefully change with an
  ;; improved reload pass.
  
! (define_insn "*expanded_andsi_non_v32"
    [(set (match_operand:SI 0 "register_operand"	       "=r,r,r, r,r")
  	(and:SI (match_operand:SI 1 "register_operand" "%0,0,0, 0,r")
! 		(match_operand:SI 2 "general_operand"   "I,r,Q>,g,!To")))]
!   "!TARGET_V32"
    "@
     andq %2,%0
     and.d %2,%0
--- 1583,1594 ----
  ;; pressure (worse code).  That will hopefully change with an
  ;; improved reload pass.
  
! (define_insn "*expanded_andsi<setcc><setnz><setnzvc>"
    [(set (match_operand:SI 0 "register_operand"	       "=r,r,r, r,r")
  	(and:SI (match_operand:SI 1 "register_operand" "%0,0,0, 0,r")
! 		(match_operand:SI 2 "general_operand"   "I,r,Q>,g,!To")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   ""
    "@
     andq %2,%0
     and.d %2,%0
***************
*** 2812,2842 ****
     and.d %2,%0
     and.d %2,%1,%0"
    [(set_attr "slottable" "yes,yes,yes,no,no")])
- 
- (define_insn "*expanded_andsi_v32"
-   [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
- 	(and:SI (match_operand:SI 1 "register_operand" "%0,0,0,0")
- 		(match_operand:SI 2 "general_operand" "I,r,Q>,g")))]
-   "TARGET_V32"
-   "@
-    andq %2,%0
-    and.d %2,%0
-    and.d %2,%0
-    and.d %2,%0"
-   [(set_attr "slottable" "yes,yes,yes,no")
-    (set_attr "cc" "noov32")])
  
  ;; For both QI and HI we may use the quick patterns.  This results in
  ;; useless condition codes, but that is used rarely enough for it to
! ;; normally be a win (could check ahead for use of cc0, but seems to be
! ;; more pain than win).
  
  ;; FIXME: See note for andsi3
  
  (define_expand "andhi3"
!   [(set (match_operand:HI 0 "nonimmediate_operand" "")
! 	(and:HI (match_operand:HI 1 "nonimmediate_operand" "")
! 		(match_operand:HI 2 "general_operand"  "")))]
    ""
  {
    if (! (CONST_INT_P (operands[2])
--- 1596,1615 ----
     and.d %2,%0
     and.d %2,%1,%0"
    [(set_attr "slottable" "yes,yes,yes,no,no")])
  
  ;; For both QI and HI we may use the quick patterns.  This results in
  ;; useless condition codes, but that is used rarely enough for it to
! ;; normally be a win (could check ahead for use of CRIS_CC0_REGNUM, but
! ;; seems to be more pain than win).
  
  ;; FIXME: See note for andsi3
  
  (define_expand "andhi3"
!   [(parallel
!     [(set (match_operand:HI 0 "nonimmediate_operand")
! 	(and:HI (match_operand:HI 1 "nonimmediate_operand")
! 		(match_operand:HI 2 "general_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
  {
    if (! (CONST_INT_P (operands[2])
***************
*** 2856,2862 ****
  	  reg1 = reg0;
  	}
  
!       emit_insn (gen_rtx_SET (reg0, gen_rtx_AND (HImode, reg1, operands[2])));
  
        /* Make sure we get the right destination.  */
        if (! REG_P (operands[0]))
--- 1629,1636 ----
  	  reg1 = reg0;
  	}
  
!       cris_emit_insn (gen_rtx_SET (reg0, gen_rtx_AND (HImode, reg1,
! 						      operands[2])));
  
        /* Make sure we get the right destination.  */
        if (! REG_P (operands[0]))
***************
*** 2871,2877 ****
  (define_insn "*andhi_movu"
    [(set (match_operand:HI 0 "register_operand" "=r,r,r")
  	(and:HI (match_operand:HI 1 "nonimmediate_operand" "r,Q,To")
! 		(const_int 255)))]
    "!side_effects_p (operands[1])"
    "mOvu.b %1,%0"
    [(set_attr "slottable" "yes,yes,no")])
--- 1645,1652 ----
  (define_insn "*andhi_movu"
    [(set (match_operand:HI 0 "register_operand" "=r,r,r")
  	(and:HI (match_operand:HI 1 "nonimmediate_operand" "r,Q,To")
! 		(const_int 255)))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    "!side_effects_p (operands[1])"
    "mOvu.b %1,%0"
    [(set_attr "slottable" "yes,yes,no")])
***************
*** 2879,2885 ****
  (define_insn "*andhi_clear"
    [(set (match_operand:HI 0 "nonimmediate_operand" "=r,Q,To")
  	(and:HI (match_operand:HI 1 "nonimmediate_operand" "0,0,0")
! 		(const_int -256)))]
    "!side_effects_p (operands[0])"
    "cLear.b %0"
    [(set_attr "slottable" "yes,yes,no")
--- 1654,1661 ----
  (define_insn "*andhi_clear"
    [(set (match_operand:HI 0 "nonimmediate_operand" "=r,Q,To")
  	(and:HI (match_operand:HI 1 "nonimmediate_operand" "0,0,0")
! 		(const_int -256)))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    "!side_effects_p (operands[0])"
    "cLear.b %0"
    [(set_attr "slottable" "yes,yes,no")
***************
*** 2887,2928 ****
  
  ;; Catch-all andhi3 pattern.
  
! (define_insn "*expanded_andhi_non_v32"
!   [(set (match_operand:HI 0 "register_operand"	       "=r,r,r, r,r,r,r")
! 	(and:HI (match_operand:HI 1 "register_operand" "%0,0,0, 0,0,0,r")
! 		(match_operand:HI 2 "general_operand"   "I,r,Q>,L,O,g,!To")))]
  
  ;; Sidenote: the tightening from "general_operand" to
  ;; "register_operand" for operand 1 actually increased the register
  ;; pressure (worse code).  That will hopefully change with an
  ;; improved reload pass.
  
!   "!TARGET_V32"
    "@
     andq %2,%0
     and.w %2,%0
     and.w %2,%0
     and.w %2,%0
     anDq %b2,%0
     and.w %2,%0
     and.w %2,%1,%0"
!   [(set_attr "slottable" "yes,yes,yes,no,yes,no,no")
!    (set_attr "cc" "clobber,normal,normal,normal,clobber,normal,normal")])
! 
! (define_insn "*expanded_andhi_v32"
!   [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r,r")
!        (and:HI (match_operand:HI 1 "register_operand" "%0,0,0,0,0,0")
!                (match_operand:HI 2 "general_operand" "I,r,Q>,L,O,g")))]
!   "TARGET_V32"
!   "@
!    andq %2,%0
!    and.w %2,%0
!    and.w %2,%0
!    and.w %2,%0
!    anDq %b2,%0
!    and.w %2,%0"
!   [(set_attr "slottable" "yes,yes,yes,no,yes,no")
!    (set_attr "cc" "clobber,noov32,noov32,noov32,clobber,noov32")])
  
  ;; A strict_low_part pattern.
  
--- 1663,1694 ----
  
  ;; Catch-all andhi3 pattern.
  
! (define_insn "*expanded_andhi<setcc><setnz><setnzvc>"
!   [(set (match_operand:HI 0 "register_operand"	       "=r,r, r,r, r,r,r,r")
! 	(and:HI (match_operand:HI 1 "register_operand" "%0,0, 0,0, 0,0,0,r")
! 		(match_operand:HI 2 "general_operand"   "I,Kc,r,Q>,L,O,g,!To")))
! 		;; The "Kc" alternative above, is there to match for cmpelim;
! 		;; it will be dominated by the "I" alternative at other times.
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
  
  ;; Sidenote: the tightening from "general_operand" to
  ;; "register_operand" for operand 1 actually increased the register
  ;; pressure (worse code).  That will hopefully change with an
  ;; improved reload pass.
  
!   ""
    "@
     andq %2,%0
+    andq %2,%0
     and.w %2,%0
     and.w %2,%0
     and.w %2,%0
     anDq %b2,%0
     and.w %2,%0
     and.w %2,%1,%0"
!   [(set_attr "slottable" "yes,yes,yes,yes,no,yes,no,no")
!    (set_attr "cc<cccc><ccnz><ccnzvc>"
! 	     "clobber,normal,normal,normal,normal,clobber,normal,normal")])
  
  ;; A strict_low_part pattern.
  
***************
*** 2936,2941 ****
--- 1702,1708 ----
  ;;        (subreg:QI (reg:SI 15 acr [orig:27 D.7531 ] [27]) 0)
  ;;        (const_int -64 [0xf..fc0]))) x.c:126 147 {*andqi_lowpart_v32}
  ;;  (nil))
+ ;; (Note: the example is obsolete.)
  ;; In theory, it could reload this as a movstrictqi of the register
  ;; operand at the and:QI to the destination register and change the
  ;; and:QI operand to the same as the read-write output operand and the
***************
*** 2947,3037 ****
  ;; match_dup.  FIXME: a sanity-check in gen* to refuse an insn with
  ;; input-constraints matching input-output-constraints, e.g. "+r" <- "0".
  
! (define_insn "*andhi_lowpart_non_v32"
    [(set (strict_low_part
  	 (match_operand:HI 0 "register_operand"	       "+r,r,r"))
  	(and:HI (match_dup 0)
! 		(match_operand:HI 1 "general_operand"   "r,Q>,g")))]
!   "!TARGET_V32"
    "@
     and.w %1,%0
     and.w %1,%0
     and.w %1,%0"
    [(set_attr "slottable" "yes,yes,no")])
- 
- (define_insn "*andhi_lowpart_v32"
-   [(set (strict_low_part
- 	 (match_operand:HI 0 "register_operand" "+r,r,r"))
- 	(and:HI (match_dup 0)
- 		(match_operand:HI 1 "general_operand" "r,Q>,g")))]
-   "TARGET_V32"
-   "@
-    and.w %1,%0
-    and.w %1,%0
-    and.w %1,%0"
-   [(set_attr "slottable" "yes,yes,no")
-    (set_attr "cc" "noov32")])
  
  (define_expand "andqi3"
!   [(set (match_operand:QI 0 "register_operand")
! 	(and:QI (match_operand:QI 1 "register_operand")
!                (match_operand:QI 2 "general_operand")))]
    ""
    "")
  
! (define_insn "*andqi3_non_v32"
!   [(set (match_operand:QI 0 "register_operand"	       "=r,r,r, r,r,r")
! 	(and:QI (match_operand:QI 1 "register_operand" "%0,0,0, 0,0,r")
! 		(match_operand:QI 2 "general_operand"   "I,r,Q>,O,g,!To")))]
!   "!TARGET_V32"
    "@
     andq %2,%0
     and.b %2,%0
     and.b %2,%0
     andQ %b2,%0
     and.b %2,%0
     and.b %2,%1,%0"
!   [(set_attr "slottable" "yes,yes,yes,yes,no,no")
!    (set_attr "cc" "clobber,normal,normal,clobber,normal,normal")])
! 
! (define_insn "*andqi3_v32"
!   [(set (match_operand:QI 0 "register_operand" "=r,r,r,r,r")
! 	(and:QI (match_operand:QI 1 "register_operand" "%0,0,0,0,0")
! 		(match_operand:QI 2 "general_operand" "I,r,Q>,O,g")))]
!   "TARGET_V32"
!   "@
!    andq %2,%0
!    and.b %2,%0
!    and.b %2,%0
!    andQ %b2,%0
!    and.b %2,%0"
!   [(set_attr "slottable" "yes,yes,yes,yes,no")
!    (set_attr "cc" "clobber,noov32,noov32,clobber,noov32")])
  
! (define_insn "*andqi_lowpart_non_v32"
    [(set (strict_low_part
  	 (match_operand:QI 0 "register_operand"	       "+r,r,r"))
  	(and:QI (match_dup 0)
! 		(match_operand:QI 1 "general_operand"   "r,Q>,g")))]
!   "!TARGET_V32"
    "@
     and.b %1,%0
     and.b %1,%0
     and.b %1,%0"
    [(set_attr "slottable" "yes,yes,no")])
- 
- (define_insn "*andqi_lowpart_v32"
-   [(set (strict_low_part
- 	 (match_operand:QI 0 "register_operand" "+r,r,r"))
- 	(and:QI (match_dup 0)
- 		(match_operand:QI 1 "general_operand" "r,Q>,g")))]
-   "TARGET_V32"
-   "@
-    and.b %1,%0
-    and.b %1,%0
-    and.b %1,%0"
-   [(set_attr "slottable" "yes,yes,no")
-    (set_attr "cc" "noov32")])
  
  ;; Bitwise or.
  
--- 1714,1771 ----
  ;; match_dup.  FIXME: a sanity-check in gen* to refuse an insn with
  ;; input-constraints matching input-output-constraints, e.g. "+r" <- "0".
  
! (define_insn "*andhi_lowpart"
    [(set (strict_low_part
  	 (match_operand:HI 0 "register_operand"	       "+r,r,r"))
  	(and:HI (match_dup 0)
! 		(match_operand:HI 1 "general_operand"   "r,Q>,g")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   ""
    "@
     and.w %1,%0
     and.w %1,%0
     and.w %1,%0"
    [(set_attr "slottable" "yes,yes,no")])
  
  (define_expand "andqi3"
!   [(parallel
!     [(set (match_operand:QI 0 "register_operand")
! 	  (and:QI (match_operand:QI 1 "register_operand")
! 		  (match_operand:QI 2 "general_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
    "")
  
! (define_insn "*andqi3<setcc><setnz><setnzvc>"
!   [(set (match_operand:QI 0 "register_operand"	       "=r,r, r,r, r,r,r")
! 	(and:QI (match_operand:QI 1 "register_operand" "%0,0, 0,0, 0,0,r")
! 		(match_operand:QI 2 "general_operand"   "I,Kc,r,Q>,O,g,!To")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   ""
    "@
     andq %2,%0
+    andq %2,%0
     and.b %2,%0
     and.b %2,%0
     andQ %b2,%0
     and.b %2,%0
     and.b %2,%1,%0"
!   [(set_attr "slottable" "yes,yes,yes,yes,yes,no,no")
!    (set_attr "cc<cccc><ccnz><ccnzvc>"
! 	     "clobber,normal,normal,normal,clobber,normal,normal")])
  
! (define_insn "*andqi_lowpart"
    [(set (strict_low_part
  	 (match_operand:QI 0 "register_operand"	       "+r,r,r"))
  	(and:QI (match_dup 0)
! 		(match_operand:QI 1 "general_operand"   "r,Q>,g")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   ""
    "@
     and.b %1,%0
     and.b %1,%0
     and.b %1,%0"
    [(set_attr "slottable" "yes,yes,no")])
  
  ;; Bitwise or.
  
***************
*** 3041,3057 ****
  ;; with andsi3.
  
  (define_expand "ior<mode>3"
!   [(set (match_operand:BWD 0 "register_operand")
! 	(ior:BWD (match_operand:BWD 1 "register_operand")
! 		 (match_operand:BWD 2 "general_operand")))]
    ""
    "")
  
! (define_insn "*iorsi3_non_v32"
    [(set (match_operand:SI 0 "register_operand"	       "=r,r,r, r,r,r")
  	(ior:SI (match_operand:SI 1 "register_operand" "%0,0,0, 0,0,r")
! 		(match_operand:SI 2 "general_operand"  "I, r,Q>,n,g,!To")))]
!   "!TARGET_V32"
    "@
     orq %2,%0
     or.d %2,%0
--- 1775,1794 ----
  ;; with andsi3.
  
  (define_expand "ior<mode>3"
!   [(parallel
!     [(set (match_operand:BWD 0 "register_operand")
! 	  (ior:BWD (match_operand:BWD 1 "register_operand")
! 		   (match_operand:BWD 2 "general_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
    "")
  
! (define_insn "*iorsi3<setcc><setnz><setnzvc>"
    [(set (match_operand:SI 0 "register_operand"	       "=r,r,r, r,r,r")
  	(ior:SI (match_operand:SI 1 "register_operand" "%0,0,0, 0,0,r")
! 		(match_operand:SI 2 "general_operand"  "I, r,Q>,n,g,!To")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   ""
    "@
     orq %2,%0
     or.d %2,%0
***************
*** 3060,3086 ****
     or.d %2,%0
     or.d %2,%1,%0"
    [(set_attr "slottable" "yes,yes,yes,no,no,no")
!    (set_attr "cc" "normal,normal,normal,clobber,normal,normal")])
! 
! (define_insn "*iorsi3_v32"
!   [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r")
! 	(ior:SI (match_operand:SI 1 "register_operand" "%0,0,0,0,0")
! 		(match_operand:SI 2 "general_operand" "I,r,Q>,n,g")))]
!   "TARGET_V32"
!   "@
!    orq %2,%0
!    or.d %2,%0
!    or.d %2,%0
!    oR.%s2 %2,%0
!    or.d %2,%0"
!   [(set_attr "slottable" "yes,yes,yes,no,no")
!    (set_attr "cc" "noov32,noov32,noov32,clobber,noov32")])
  
! (define_insn "*iorhi3_non_v32"
    [(set (match_operand:HI 0 "register_operand"	       "=r,r,r, r,r,r,r")
  	(ior:HI (match_operand:HI 1 "register_operand" "%0,0,0, 0,0,0,r")
! 		(match_operand:HI 2 "general_operand"   "I,r,Q>,L,O,g,!To")))]
!   "!TARGET_V32"
    "@
     orq %2,%0
     or.w %2,%0
--- 1797,1811 ----
     or.d %2,%0
     or.d %2,%1,%0"
    [(set_attr "slottable" "yes,yes,yes,no,no,no")
!    (set_attr "cc<cccc><ccnz><ccnzvc>"
! 	     "normal,normal,normal,clobber,normal,normal")])
  
! (define_insn "*iorhi3<setcc><setnz><setnzvc>"
    [(set (match_operand:HI 0 "register_operand"	       "=r,r,r, r,r,r,r")
  	(ior:HI (match_operand:HI 1 "register_operand" "%0,0,0, 0,0,0,r")
! 		(match_operand:HI 2 "general_operand"   "I,r,Q>,L,O,g,!To")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   ""
    "@
     orq %2,%0
     or.w %2,%0
***************
*** 3090,3117 ****
     or.w %2,%0
     or.w %2,%1,%0"
    [(set_attr "slottable" "yes,yes,yes,no,yes,no,no")
!    (set_attr "cc" "clobber,normal,normal,normal,clobber,normal,normal")])
! 
! (define_insn "*iorhi3_v32"
!   [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r,r")
! 	(ior:HI (match_operand:HI 1 "register_operand" "%0,0,0,0,0,0")
! 		(match_operand:HI 2 "general_operand" "I,r,Q>,L,O,g")))]
!   "TARGET_V32"
!   "@
!    orq %2,%0
!    or.w %2,%0
!    or.w %2,%0
!    or.w %2,%0
!    oRq %b2,%0
!    or.w %2,%0"
!   [(set_attr "slottable" "yes,yes,yes,no,yes,no")
!    (set_attr "cc" "clobber,noov32,noov32,noov32,clobber,noov32")])
  
! (define_insn "*iorqi3_non_v32"
    [(set (match_operand:QI 0 "register_operand"	       "=r,r,r, r,r,r")
  	(ior:QI (match_operand:QI 1 "register_operand" "%0,0,0, 0,0,r")
! 		(match_operand:QI 2 "general_operand"   "I,r,Q>,O,g,!To")))]
!   "!TARGET_V32"
    "@
     orq %2,%0
     or.b %2,%0
--- 1815,1829 ----
     or.w %2,%0
     or.w %2,%1,%0"
    [(set_attr "slottable" "yes,yes,yes,no,yes,no,no")
!    (set_attr "cc<cccc><ccnz><ccnzvc>"
! 	     "clobber,normal,normal,normal,clobber,normal,normal")])
  
! (define_insn "*iorqi3<setcc><setnz><setnzvc>"
    [(set (match_operand:QI 0 "register_operand"	       "=r,r,r, r,r,r")
  	(ior:QI (match_operand:QI 1 "register_operand" "%0,0,0, 0,0,r")
! 		(match_operand:QI 2 "general_operand"   "I,r,Q>,O,g,!To")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   ""
    "@
     orq %2,%0
     or.b %2,%0
***************
*** 3120,3159 ****
     or.b %2,%0
     or.b %2,%1,%0"
    [(set_attr "slottable" "yes,yes,yes,yes,no,no")
!    (set_attr "cc" "clobber,normal,normal,clobber,normal,normal")])
! 
! (define_insn "*iorqi3_v32"
!   [(set (match_operand:QI 0 "register_operand" "=r,r,r,r,r")
! 	(ior:QI (match_operand:QI 1 "register_operand" "%0,0,0,0,0")
! 		(match_operand:QI 2 "general_operand" "I,r,Q>,O,g")))]
!   "TARGET_V32"
!   "@
!    orq %2,%0
!    or.b %2,%0
!    or.b %2,%0
!    orQ %b2,%0
!    or.b %2,%0"
!   [(set_attr "slottable" "yes,yes,yes,yes,no")
!    (set_attr "cc" "clobber,noov32,noov32,clobber,noov32")])
  
  ;; Exclusive-or
  
  ;; See comment about "anddi3" for xordi3 - no need for such a pattern.
  ;; FIXME: Do we really need the shorter variants?
  
! (define_insn "xorsi3"
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(xor:SI (match_operand:SI 1 "register_operand" "%0")
! 		(match_operand:SI 2 "register_operand" "r")))]
    ""
    "xor %2,%0"
!   [(set_attr "slottable" "yes")
!    (set_attr "cc" "noov32")])
  
  (define_insn "xor<mode>3"
    [(set (match_operand:BW 0 "register_operand" "=r")
  	(xor:BW (match_operand:BW 1 "register_operand" "%0")
! 		(match_operand:BW 2 "register_operand" "r")))]
    ""
    "xor %2,%0"
    [(set_attr "slottable" "yes")
--- 1832,1859 ----
     or.b %2,%0
     or.b %2,%1,%0"
    [(set_attr "slottable" "yes,yes,yes,yes,no,no")
!    (set_attr "cc<cccc><ccnz><ccnzvc>"
! 	     "clobber,normal,normal,clobber,normal,normal")])
  
  ;; Exclusive-or
  
  ;; See comment about "anddi3" for xordi3 - no need for such a pattern.
  ;; FIXME: Do we really need the shorter variants?
  
! (define_insn "<acc><anz><anzvc>xorsi3<setcc><setnz><setnzvc>"
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(xor:SI (match_operand:SI 1 "register_operand" "%0")
! 		(match_operand:SI 2 "register_operand" "r")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "xor %2,%0"
!   [(set_attr "slottable" "yes")])
  
  (define_insn "xor<mode>3"
    [(set (match_operand:BW 0 "register_operand" "=r")
  	(xor:BW (match_operand:BW 1 "register_operand" "%0")
! 		(match_operand:BW 2 "register_operand" "r")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "xor %2,%0"
    [(set_attr "slottable" "yes")
***************
*** 3165,3176 ****
  ;; example.
  
  (define_expand "negsf2"
!   [(set (match_dup 2)
!         (match_dup 3))
!    (parallel [(set (match_operand:SF 0 "register_operand" "=r")
!                    (neg:SF (match_operand:SF 1
!                             "register_operand" "0")))
!               (use (match_dup 2))])]
    ""
  {
    operands[2] = gen_reg_rtx (SImode);
--- 1865,1877 ----
  ;; example.
  
  (define_expand "negsf2"
!   [(parallel
!     [(set (match_dup 2) (match_dup 3))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel [(set (match_operand:SF 0 "register_operand")
! 		   (neg:SF (match_operand:SF 1 "register_operand")))
! 	      (use (match_dup 2))
! 	      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
  {
    operands[2] = gen_reg_rtx (SImode);
***************
*** 3180,3186 ****
  (define_insn "*expanded_negsf2"
    [(set (match_operand:SF 0 "register_operand" "=r")
  	(neg:SF (match_operand:SF 1 "register_operand" "0")))
!    (use (match_operand:SI 2 "register_operand" "r"))]
    ""
    "xor %2,%0"
    [(set_attr "slottable" "yes")])
--- 1881,1888 ----
  (define_insn "*expanded_negsf2"
    [(set (match_operand:SF 0 "register_operand" "=r")
  	(neg:SF (match_operand:SF 1 "register_operand" "0")))
!    (use (match_operand:SI 2 "register_operand" "r"))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "xor %2,%0"
    [(set_attr "slottable" "yes")])
***************
*** 3188,3196 ****
  ;; No "negdi2" although we could make one up that may be faster than
  ;; the one in libgcc.
  
! (define_insn "neg<mode>2"
    [(set (match_operand:BWD 0 "register_operand" "=r")
! 	(neg:BWD (match_operand:BWD 1 "register_operand" "r")))]
    ""
    "neg<m> %1,%0"
    [(set_attr "slottable" "yes")])
--- 1890,1899 ----
  ;; No "negdi2" although we could make one up that may be faster than
  ;; the one in libgcc.
  
! (define_insn "<anz>neg<mode>2<setnz>"
    [(set (match_operand:BWD 0 "register_operand" "=r")
! 	(neg:BWD (match_operand:BWD 1 "register_operand" "r")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "neg<m> %1,%0"
    [(set_attr "slottable" "yes")])
***************
*** 3200,3216 ****
  ;; See comment on anddi3 - no need for a DImode pattern.
  ;; See also xor comment.
  
! (define_insn "one_cmplsi2"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(not:SI (match_operand:SI 1 "register_operand" "0")))]
    ""
    "not %0"
!   [(set_attr "slottable" "yes")
!    (set_attr "cc" "noov32")])
  
  (define_insn "one_cmpl<mode>2"
    [(set (match_operand:BW 0 "register_operand" "=r")
! 	(not:BW (match_operand:BW 1 "register_operand" "0")))]
    ""
    "not %0"
    [(set_attr "slottable" "yes")
--- 1903,1920 ----
  ;; See comment on anddi3 - no need for a DImode pattern.
  ;; See also xor comment.
  
! (define_insn "<acc><anz><anzvc>one_cmplsi2<setcc><setnz><setnzvc>"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(not:SI (match_operand:SI 1 "register_operand" "0")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "not %0"
!   [(set_attr "slottable" "yes")])
  
  (define_insn "one_cmpl<mode>2"
    [(set (match_operand:BW 0 "register_operand" "=r")
! 	(not:BW (match_operand:BW 1 "register_operand" "0")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "not %0"
    [(set_attr "slottable" "yes")
***************
*** 3218,3227 ****
  
  ;; Arithmetic/Logical shift right (and SI left).
  
! (define_insn "<shlr>si3"
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(shift:SI (match_operand:SI 1 "register_operand" "0")
! 		  (match_operand:SI 2 "nonmemory_operand" "Kcr")))]
    ""
  {
    if (REG_S_P (operands[2]))
--- 1922,1932 ----
  
  ;; Arithmetic/Logical shift right (and SI left).
  
! (define_insn "<acc><anz><anzvc><shlr>si3<setcc><setnz><setnzvc>"
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(shift:SI (match_operand:SI 1 "register_operand" "0")
! 		  (match_operand:SI 2 "nonmemory_operand" "Kcr")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
  {
    if (REG_S_P (operands[2]))
***************
*** 3229,3236 ****
  
    return "<slr>q %2,%0";
  }
!   [(set_attr "slottable" "yes")
!    (set_attr "cc" "noov32")])
  
  ;; Since gcc gets lost, and forgets to zero-extend the source (or mask
  ;; the destination) when it changes shifts of lower modes into SImode,
--- 1934,1940 ----
  
    return "<slr>q %2,%0";
  }
!   [(set_attr "slottable" "yes")])
  
  ;; Since gcc gets lost, and forgets to zero-extend the source (or mask
  ;; the destination) when it changes shifts of lower modes into SImode,
***************
*** 3243,3255 ****
  ;; FIXME: Can't parametrize sign_extend and zero_extend (before
  ;; mentioning "shiftrt"), so we need two patterns.
  (define_expand "ashr<mode>3"
!   [(set (match_dup 3)
! 	(sign_extend:SI (match_operand:BW 1 "nonimmediate_operand" "")))
!    (set (match_dup 4)
! 	(zero_extend:SI (match_operand:BW 2 "nonimmediate_operand" "")))
!    (set (match_dup 5) (ashiftrt:SI (match_dup 3) (match_dup 4)))
!    (set (match_operand:BW 0 "general_operand" "")
! 	(subreg:BW (match_dup 5) 0))]
    ""
  {
    int i;
--- 1947,1967 ----
  ;; FIXME: Can't parametrize sign_extend and zero_extend (before
  ;; mentioning "shiftrt"), so we need two patterns.
  (define_expand "ashr<mode>3"
!   [(parallel
!     [(set (match_dup 3)
! 	  (sign_extend:SI (match_operand:BW 1 "nonimmediate_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 4)
! 	  (zero_extend:SI (match_operand:BW 2 "nonimmediate_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 5) (ashiftrt:SI (match_dup 3) (match_dup 4)))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_operand:BW 0 "general_operand")
! 	  (subreg:BW (match_dup 5) 0))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
  {
    int i;
***************
*** 3259,3271 ****
  })
  
  (define_expand "lshr<mode>3"
!   [(set (match_dup 3)
! 	(zero_extend:SI (match_operand:BW 1 "nonimmediate_operand" "")))
!    (set (match_dup 4)
! 	(zero_extend:SI (match_operand:BW 2 "nonimmediate_operand" "")))
!    (set (match_dup 5) (lshiftrt:SI (match_dup 3) (match_dup 4)))
!    (set (match_operand:BW 0 "general_operand" "")
! 	(subreg:BW (match_dup 5) 0))]
    ""
  {
    int i;
--- 1971,1991 ----
  })
  
  (define_expand "lshr<mode>3"
!   [(parallel
!     [(set (match_dup 3)
! 	  (zero_extend:SI (match_operand:BW 1 "nonimmediate_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 4)
! 	  (zero_extend:SI (match_operand:BW 2 "nonimmediate_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 5) (lshiftrt:SI (match_dup 3) (match_dup 4)))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_operand:BW 0 "general_operand")
! 	  (subreg:BW (match_dup 5) 0))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
  {
    int i;
***************
*** 3277,3296 ****
  (define_insn "*expanded_<shlr><mode>"
    [(set (match_operand:BW 0 "register_operand" "=r")
  	(shiftrt:BW (match_operand:BW 1 "register_operand" "0")
! 		    (match_operand:BW 2 "register_operand" "r")))]
    ""
    "<slr><m> %2,%0"
!   [(set_attr "slottable" "yes")
!    (set_attr "cc" "noov32")])
  
  (define_insn "*<shlr><mode>_lowpart"
    [(set (strict_low_part (match_operand:BW 0 "register_operand" "+r"))
  	(shiftrt:BW (match_dup 0)
! 		    (match_operand:BW 1 "register_operand" "r")))]
    ""
    "<slr><m> %1,%0"
!   [(set_attr "slottable" "yes")
!    (set_attr "cc" "noov32")])
  
  ;; Arithmetic/logical shift left.
  
--- 1997,2016 ----
  (define_insn "*expanded_<shlr><mode>"
    [(set (match_operand:BW 0 "register_operand" "=r")
  	(shiftrt:BW (match_operand:BW 1 "register_operand" "0")
! 		    (match_operand:BW 2 "register_operand" "r")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "<slr><m> %2,%0"
!   [(set_attr "slottable" "yes")])
  
  (define_insn "*<shlr><mode>_lowpart"
    [(set (strict_low_part (match_operand:BW 0 "register_operand" "+r"))
  	(shiftrt:BW (match_dup 0)
! 		    (match_operand:BW 1 "register_operand" "r")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "<slr><m> %1,%0"
!   [(set_attr "slottable" "yes")])
  
  ;; Arithmetic/logical shift left.
  
***************
*** 3301,3307 ****
  (define_insn "ashl<mode>3"
    [(set (match_operand:BW 0 "register_operand" "=r,r")
  	(ashift:BW (match_operand:BW 1 "register_operand" "0,0")
! 		   (match_operand:BW 2 "nonmemory_operand" "r,Kc")))]
    ""
  {
    return
--- 2021,2028 ----
  (define_insn "ashl<mode>3"
    [(set (match_operand:BW 0 "register_operand" "=r,r")
  	(ashift:BW (match_operand:BW 1 "register_operand" "0,0")
! 		   (match_operand:BW 2 "nonmemory_operand" "r,Kc")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
  {
    return
***************
*** 3311,3328 ****
         ? "lslq %2,%0" : "lsl<m> %2,%0");
  }
    [(set_attr "slottable" "yes")
!    (set_attr "cc" "noov32,clobber")])
  
  ;; A strict_low_part matcher.
  
  (define_insn "*ashl<mode>_lowpart"
    [(set (strict_low_part (match_operand:BW 0 "register_operand" "+r"))
  	(ashift:BW (match_dup 0)
! 		   (match_operand:HI 1 "register_operand" "r")))]
    ""
    "lsl<m> %1,%0"
!   [(set_attr "slottable" "yes")
!    (set_attr "cc" "noov32")])
  
  ;; Various strange insns that gcc likes.
  
--- 2032,2049 ----
         ? "lslq %2,%0" : "lsl<m> %2,%0");
  }
    [(set_attr "slottable" "yes")
!    (set_attr "cc" "*,clobber")])
  
  ;; A strict_low_part matcher.
  
  (define_insn "*ashl<mode>_lowpart"
    [(set (strict_low_part (match_operand:BW 0 "register_operand" "+r"))
  	(ashift:BW (match_dup 0)
! 		   (match_operand:HI 1 "register_operand" "r")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "lsl<m> %1,%0"
!   [(set_attr "slottable" "yes")])
  
  ;; Various strange insns that gcc likes.
  
***************
*** 3331,3374 ****
  
  (define_insn "abssf2"
    [(set (match_operand:SF 0 "register_operand" "=r")
! 	(abs:SF (match_operand:SF 1 "register_operand" "0")))]
    ""
    "lslq 1,%0\;lsrq 1,%0")
  
  (define_insn "abssi2"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(abs:SI (match_operand:SI 1 "register_operand" "r")))]
    ""
    "abs %1,%0"
!   [(set_attr "slottable" "yes")
!    (set_attr "cc" "noov32")])
  
  ;; FIXME: GCC should be able to do these expansions itself.
  
  (define_expand "abs<mode>2"
!   [(set (match_dup 2)
! 	(sign_extend:SI (match_operand:BW 1 "general_operand" "")))
!    (set (match_dup 3) (abs:SI (match_dup 2)))
!    (set (match_operand:BW 0 "register_operand" "")
! 	(subreg:BW (match_dup 3) 0))]
    ""
    "operands[2] = gen_reg_rtx (SImode); operands[3] = gen_reg_rtx (SImode);")
  
! (define_insn "clzsi2"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(clz:SI (match_operand:SI 1 "register_operand" "r")))]
    "TARGET_HAS_LZ"
    "lz %1,%0"
!   [(set_attr "slottable" "yes")
!    (set_attr "cc" "noov32")])
  
! (define_insn "bswapsi2"
    [(set (match_operand:SI 0 "register_operand" "=r")
!         (bswap:SI (match_operand:SI 1 "register_operand" "0")))]
    "TARGET_HAS_SWAP"
    "swapwb %0"
!   [(set_attr "slottable" "yes")
!    (set_attr "cc" "noov32")])
  
  ;; This instruction swaps all bits in a register.
  ;; That means that the most significant bit is put in the place
--- 2052,2102 ----
  
  (define_insn "abssf2"
    [(set (match_operand:SF 0 "register_operand" "=r")
! 	(abs:SF (match_operand:SF 1 "register_operand" "0")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "lslq 1,%0\;lsrq 1,%0")
  
  (define_insn "abssi2"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(abs:SI (match_operand:SI 1 "register_operand" "r")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
    "abs %1,%0"
!   [(set_attr "slottable" "yes")])
  
  ;; FIXME: GCC should be able to do these expansions itself.
  
  (define_expand "abs<mode>2"
!   [(parallel
!     [(set (match_dup 2)
! 	  (sign_extend:SI (match_operand:BW 1 "general_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 3) (abs:SI (match_dup 2)))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_operand:BW 0 "register_operand")
! 	  (subreg:BW (match_dup 3) 0))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
    "operands[2] = gen_reg_rtx (SImode); operands[3] = gen_reg_rtx (SImode);")
  
! (define_insn "<acc><anz><anzvc>clzsi2<setcc><setnz><setnzvc>"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(clz:SI (match_operand:SI 1 "register_operand" "r")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    "TARGET_HAS_LZ"
    "lz %1,%0"
!   [(set_attr "slottable" "yes")])
  
! (define_insn "<acc><anz><anzvc>bswapsi2<setcc><setnz><setnzvc>"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(bswap:SI (match_operand:SI 1 "register_operand" "0")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    "TARGET_HAS_SWAP"
    "swapwb %0"
!   [(set_attr "slottable" "yes")])
  
  ;; This instruction swaps all bits in a register.
  ;; That means that the most significant bit is put in the place
***************
*** 3377,3398 ****
  (define_insn "cris_swap_bits"
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(unspec:SI [(match_operand:SI 1 "register_operand" "0")]
! 		   CRIS_UNSPEC_SWAP_BITS))]
    "TARGET_HAS_SWAP"
    "swapwbr %0"
!   [(set_attr "slottable" "yes")
!    (set_attr "cc" "noov32")])
  
  ;; Implement ctz using two instructions, one for bit swap and one for clz.
  ;; Defines a scratch register to avoid clobbering input.
  
  (define_expand "ctzsi2"
!   [(set (match_dup 2)
! 	(match_operand:SI 1 "register_operand"))
!    (set (match_dup 2)
! 	(unspec:SI [(match_dup 2)] CRIS_UNSPEC_SWAP_BITS))
!    (set (match_operand:SI 0 "register_operand")
! 	(clz:SI (match_dup 2)))]
    "TARGET_HAS_LZ && TARGET_HAS_SWAP"
    "operands[2] = gen_reg_rtx (SImode);")
  
--- 2105,2132 ----
  (define_insn "cris_swap_bits"
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(unspec:SI [(match_operand:SI 1 "register_operand" "0")]
! 		   CRIS_UNSPEC_SWAP_BITS))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    "TARGET_HAS_SWAP"
    "swapwbr %0"
!   [(set_attr "slottable" "yes")])
  
  ;; Implement ctz using two instructions, one for bit swap and one for clz.
  ;; Defines a scratch register to avoid clobbering input.
  
  (define_expand "ctzsi2"
!   [(parallel
!     [(set (match_dup 2)
! 	  (match_operand:SI 1 "register_operand"))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 2)
! 	  (unspec:SI [(match_dup 2)] CRIS_UNSPEC_SWAP_BITS))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_operand:SI 0 "register_operand")
! 	  (clz:SI (match_dup 2)))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    "TARGET_HAS_LZ && TARGET_HAS_SWAP"
    "operands[2] = gen_reg_rtx (SImode);")
  
***************
*** 3401,3420 ****
  ;; normal code too.
  
  (define_expand "uminsi3"
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(umin:SI  (match_operand:SI 1 "register_operand" "")
! 		  (match_operand:SI 2 "general_operand" "")))]
    ""
! {
!   if (MEM_P (operands[2]) && TARGET_V32)
!     operands[2] = force_reg (SImode, operands[2]);
! })
  
! (define_insn "*uminsi3_non_v32"
    [(set (match_operand:SI 0 "register_operand"		 "=r,r, r,r")
  	(umin:SI  (match_operand:SI 1 "register_operand" "%0,0, 0,r")
! 		  (match_operand:SI 2 "general_operand"   "r,Q>,g,!To")))]
!   "!TARGET_V32"
  {
    if (CONST_INT_P (operands[2]))
      {
--- 2135,2154 ----
  ;; normal code too.
  
  (define_expand "uminsi3"
!   [(parallel
!     [(set (match_operand:SI 0 "register_operand")
! 	  (umin:SI  (match_operand:SI 1 "register_operand")
! 		    (match_operand:SI 2 "general_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
!   "")
  
! (define_insn "*uminsi3<setcc><setnz><setnzvc>"
    [(set (match_operand:SI 0 "register_operand"		 "=r,r, r,r")
  	(umin:SI  (match_operand:SI 1 "register_operand" "%0,0, 0,r")
! 		  (match_operand:SI 2 "general_operand"   "r,Q>,g,!To")))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   ""
  {
    if (CONST_INT_P (operands[2]))
      {
***************
*** 3435,3464 ****
    return "bound.d %2,%0";
  }
   [(set_attr "slottable" "yes,yes,no,no")])
- 
- (define_insn "*uminsi3_v32"
-   [(set (match_operand:SI 0 "register_operand" "=r,r")
- 	(umin:SI  (match_operand:SI 1 "register_operand" "%0,0")
- 		  (match_operand:SI 2 "nonmemory_operand" "r,i")))]
-   "TARGET_V32"
- {
-   if (GET_CODE (operands[2]) == CONST_INT)
-     {
-       /* Constant operands are zero-extended, so only 32-bit operands
- 	 may be negative.  */
-       if (INTVAL (operands[2]) >= 0)
- 	{
- 	  if (INTVAL (operands[2]) < 256)
- 	    return "bound.b %2,%0";
- 
- 	  if (INTVAL (operands[2]) < 65536)
- 	    return "bound.w %2,%0";
- 	}
-     }
- 
-   return "bound.d %2,%0";
- }
-  [(set_attr "slottable" "yes,no")])
  
  ;; Jump and branch insns.
  
--- 2169,2174 ----
***************
*** 3477,3498 ****
  (define_expand "indirect_jump"
    [(set (pc) (match_operand:SI 0 "nonimmediate_operand"))]
    ""
! {
!   if (TARGET_V32 && MEM_P (operands[0]))
!     operands[0] = force_reg (SImode, operands[0]);
! })
  
! (define_insn "*indirect_jump_non_v32"
    [(set (pc) (match_operand:SI 0 "nonimmediate_operand" "rm"))]
!   "!TARGET_V32"
    "jump %0")
  
- (define_insn "*indirect_jump_v32"
-   [(set (pc) (match_operand:SI 0 "register_operand" "r"))]
-   "TARGET_V32"
-   "jump %0%#"
-   [(set_attr "slottable" "has_slot")])
- 
  ;; Return insn.  Used whenever the epilogue is very simple; if it is only
  ;; a single ret or jump [sp+].  No allocated stack space or saved
  ;; registers are allowed.
--- 2187,2199 ----
  (define_expand "indirect_jump"
    [(set (pc) (match_operand:SI 0 "nonimmediate_operand"))]
    ""
!   "")
  
! (define_insn "*indirect_jump"
    [(set (pc) (match_operand:SI 0 "nonimmediate_operand" "rm"))]
!   ""
    "jump %0")
  
  ;; Return insn.  Used whenever the epilogue is very simple; if it is only
  ;; a single ret or jump [sp+].  No allocated stack space or saved
  ;; registers are allowed.
***************
*** 3530,3707 ****
  ;; Conditional branches.
  
  (define_expand "cbranch<mode>4"
!   [(set (cc0) (compare
! 	       (match_operand:BWD 1 "nonimmediate_operand")
! 	       (match_operand:BWD 2 "general_operand")))
!    (set (pc)
! 	(if_then_else (match_operator 0 "ordered_comparison_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 3 "" ""))
! 		      (pc)))]
    ""
    "cris_reduce_compare (&operands[0], &operands[1], &operands[2]);")
  
! (define_expand "cbranchdi4"
!   [(set (cc0)
! 	(compare (match_operand:DI 1 "nonimmediate_operand" "")
! 		 (match_operand:DI 2 "general_operand" "")))
     (set (pc)
! 	(if_then_else (match_operator 0 "ordered_comparison_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 3 "" ""))
  		      (pc)))]
    ""
! {
!   cris_reduce_compare (&operands[0], &operands[1], &operands[2]);
!   if (TARGET_V32 && !REG_P (operands[1]))
!     operands[1] = force_reg (DImode, operands[1]);
!   if (TARGET_V32 && MEM_P (operands[2]))
!     operands[2] = force_reg (DImode, operands[2]);
! })
  
  
  ;; We suffer from the same overflow-bit-gets-in-the-way problem as
  ;; e.g. m68k, so we have to check if overflow bit is set on all "signed"
  ;; conditions.
  
! (define_insn "b<ncond:code>"
    [(set (pc)
! 	(if_then_else (ncond (cc0)
  			     (const_int 0))
  		      (label_ref (match_operand 0 "" ""))
  		      (pc)))]
!   ""
!   "b<CC> %l0%#"
    [(set_attr "slottable" "has_slot")])
  
! (define_insn "b<ocond:code>"
    [(set (pc)
! 	(if_then_else (ocond (cc0)
  			     (const_int 0))
  		      (label_ref (match_operand 0 "" ""))
  		      (pc)))]
!   ""
! {
!   return
!     (cc_prev_status.flags & CC_NO_OVERFLOW)
!     ? 0 : "b<CC> %l0%#";
! }
    [(set_attr "slottable" "has_slot")])
  
! (define_insn "b<rcond:code>"
    [(set (pc)
! 	(if_then_else (rcond (cc0)
  			     (const_int 0))
  		      (label_ref (match_operand 0 "" ""))
  		      (pc)))]
!   ""
  {
!   return
!     (cc_prev_status.flags & CC_NO_OVERFLOW)
!     ? "b<oCC> %l0%#" : "b<CC> %l0%#";
  }
    [(set_attr "slottable" "has_slot")])
  
  ;; Reversed anonymous patterns to the ones above, as mandated.
  
! (define_insn "*b<ncond:code>_reversed"
    [(set (pc)
! 	(if_then_else (ncond (cc0)
! 			     (const_int 0))
  		      (pc)
  		      (label_ref (match_operand 0 "" ""))))]
!   ""
!   "b<rCC> %l0%#"
    [(set_attr "slottable" "has_slot")])
  
! (define_insn "*b<ocond:code>_reversed"
    [(set (pc)
! 	(if_then_else (ocond (cc0)
  			     (const_int 0))
  		      (pc)
  		      (label_ref (match_operand 0 "" ""))))]
!   ""
! {
!   return
!     (cc_prev_status.flags & CC_NO_OVERFLOW)
!     ? 0 : "b<rCC> %l0%#";
! }
    [(set_attr "slottable" "has_slot")])
  
! (define_insn "*b<rcond:code>_reversed"
    [(set (pc)
! 	(if_then_else (rcond (cc0)
  			     (const_int 0))
  		      (pc)
  		      (label_ref (match_operand 0 "" ""))))]
!   ""
  {
!   return
!     (cc_prev_status.flags & CC_NO_OVERFLOW)
!     ? "b<roCC> %l0%#" : "b<rCC> %l0%#";
  }
    [(set_attr "slottable" "has_slot")])
  
  ;; Set on condition: sCC.
  
- (define_expand "cstoredi4"
-   [(set (cc0) (compare
- 	       (match_operand:DI 2 "nonimmediate_operand")
- 	       (match_operand:DI 3 "general_operand")))
-    (set (match_operand:SI 0 "register_operand")
- 	(match_operator:SI 1 "ordered_comparison_operator"
- 	 [(cc0) (const_int 0)]))]
-   ""
- {
-   cris_reduce_compare (&operands[1], &operands[2], &operands[3]);
-   if (TARGET_V32 && !REG_P (operands[2]))
-     operands[2] = force_reg (DImode, operands[2]);
-   if (TARGET_V32 && MEM_P (operands[3]))
-     operands[3] = force_reg (DImode, operands[3]);
- })
- 
  (define_expand "cstore<mode>4"
!   [(set (cc0) (compare
! 	       (match_operand:BWD 2 "nonimmediate_operand")
! 	       (match_operand:BWD 3 "general_operand")))
!    (set (match_operand:SI 0 "register_operand")
! 	(match_operator:SI 1 "ordered_comparison_operator"
! 	 [(cc0) (const_int 0)]))]
    ""
    "cris_reduce_compare (&operands[1], &operands[2], &operands[3]);")
  
  ;; Like bCC, we have to check the overflow bit for
  ;; signed conditions.
  
! (define_insn "s<ncond:code>"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ncond:SI (cc0) (const_int 0)))]
!   ""
    "s<CC> %0"
    [(set_attr "slottable" "yes")
     (set_attr "cc" "none")])
  
! (define_insn "s<rcond:code>"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(rcond:SI (cc0) (const_int 0)))]
!   ""
  {
!   return
!     (cc_prev_status.flags & CC_NO_OVERFLOW)
!     ? "s<oCC> %0" : "s<CC> %0";
  }
    [(set_attr "slottable" "yes")
     (set_attr "cc" "none")])
  
! (define_insn "s<ocond:code>"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ocond:SI (cc0) (const_int 0)))]
!   ""
! {
!   return
!     (cc_prev_status.flags & CC_NO_OVERFLOW)
!     ? 0 : "s<CC> %0";
! }
    [(set_attr "slottable" "yes")
     (set_attr "cc" "none")])
  
--- 2231,2448 ----
  ;; Conditional branches.
  
  (define_expand "cbranch<mode>4"
!   [(parallel
!     [(set (pc)
! 	  (if_then_else
! 	   (match_operator 0 "ordered_comparison_operator"
! 	    [(match_operand:BWDD 1 "nonimmediate_operand")
! 	     (match_operand:BWDD 2 "general_operand")])
! 	   (label_ref (match_operand 3 ""))
! 	   (pc)))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
    "cris_reduce_compare (&operands[0], &operands[1], &operands[2]);")
  
! (define_insn_and_split "*cbranch<mode><code>4"
!   [(set (pc)
! 	(if_then_else
! 	 (cond
! 	  (match_operand:BWDD 0 "nonimmediate_operand" "<cmp_op0c>")
! 	  (match_operand:BWDD 1 "general_operand" "<cmp_op1c>"))
! 	 (label_ref (match_operand 2 ""))
! 	 (pc)))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   ""
!   "#"
!   "&& reload_completed"
!   [(set (reg:<xCC> CRIS_CC0_REGNUM)
! 	(compare:<xCC> (match_dup 0) (match_dup 1)))
     (set (pc)
! 	(if_then_else (cond (reg:<xCC> CRIS_CC0_REGNUM) (const_int 0))
! 		      (label_ref (match_dup 2))
  		      (pc)))]
+   "")
+ 
+ ;; Test a single bit at operand[0] against 0/non-0.
+ (define_insn_and_split "*cbranch<mode>4_btstrq1_<CC>"
+   [(set (pc)
+ 	(if_then_else
+ 	 (zcond
+ 	  (zero_extract:BWD
+ 	   (match_operand:BWD 0 "register_operand" "r,r")
+ 	   (const_int 1)
+ 	   (match_operand:SI 1 "nonmemory_operand" "Kc,r"))
+ 	  (const_int 0))
+ 	 (label_ref (match_operand 2 ""))
+ 	 (pc)))
+    (clobber (reg:CC CRIS_CC0_REGNUM))]
    ""
!   "#"
!   "&& reload_completed"
!   [(set (reg:CC_ZnN CRIS_CC0_REGNUM)
! 	(compare:CC_ZnN
! 	 (zero_extract:SI (match_dup 0) (const_int 1) (match_dup 1))
! 	 (const_int 0)))
!    (set (pc)
! 	(if_then_else (zcond (reg:CC_ZnN CRIS_CC0_REGNUM) (const_int 0))
! 		      (label_ref (match_dup 2))
! 		      (pc)))]
!   "")
! 
! ;; Test a field of bits starting at bit 0 against 0/non-0.
! (define_insn_and_split "*cbranch<mode>4_btstqb0_<CC>"
!   [(set (pc)
! 	(if_then_else
! 	 (zcond
! 	  (zero_extract:BWD
! 	   (match_operand:BWD 0 "register_operand" "r")
! 	   (match_operand 1 "const_int_operand" "Kc")
! 	   (const_int 0))
! 	  (const_int 0))
! 	 (label_ref (match_operand 2 ""))
! 	 (pc)))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
!   ""
!   "#"
!   "&& reload_completed"
!   [(set (reg:CC_NZ CRIS_CC0_REGNUM)
! 	(compare:CC_NZ
! 	 (zero_extract:SI (match_dup 0) (match_dup 1) (const_int 0))
! 	 (const_int 0)))
!    (set (pc)
! 	(if_then_else (zcond (reg:CC_NZ CRIS_CC0_REGNUM) (const_int 0))
! 		      (label_ref (match_dup 2))
! 		      (pc)))]
!   "")
  
  
  ;; We suffer from the same overflow-bit-gets-in-the-way problem as
  ;; e.g. m68k, so we have to check if overflow bit is set on all "signed"
  ;; conditions.
  
! (define_insn "*b<zcond:code><mode>"
    [(set (pc)
! 	(if_then_else (zcond (reg:ZnNNZUSE CRIS_CC0_REGNUM)
  			     (const_int 0))
  		      (label_ref (match_operand 0 "" ""))
  		      (pc)))]
!   "reload_completed"
! {
!   return <MODE>mode == CC_ZnNmode ? "b<znnCC> %l0%#" : "b<CC> %l0%#";
! }
    [(set_attr "slottable" "has_slot")])
  
! (define_insn "*b<nzvccond:code><mode>"
    [(set (pc)
! 	(if_then_else (nzvccond (reg:NZVCUSE CRIS_CC0_REGNUM)
  			     (const_int 0))
  		      (label_ref (match_operand 0 "" ""))
  		      (pc)))]
!   "reload_completed"
!   "b<CC> %l0%#"
    [(set_attr "slottable" "has_slot")])
  
! (define_insn "*b<rnzcond:code><mode>"
    [(set (pc)
! 	(if_then_else (rnzcond (reg:NZUSE CRIS_CC0_REGNUM)
  			     (const_int 0))
  		      (label_ref (match_operand 0 "" ""))
  		      (pc)))]
!   "reload_completed"
  {
!   return <MODE>mode == CC_NZmode ? "b<oCC> %l0%#": "b<CC> %l0%#";
  }
    [(set_attr "slottable" "has_slot")])
  
  ;; Reversed anonymous patterns to the ones above, as mandated.
  
! (define_insn "*b<nzcond:code>_reversed<mode>"
    [(set (pc)
! 	(if_then_else (nzcond (reg:ZnNNZUSE CRIS_CC0_REGNUM)
! 			      (const_int 0))
  		      (pc)
  		      (label_ref (match_operand 0 "" ""))))]
!   "reload_completed"
! {
!   return <MODE>mode == CC_ZnNmode ? "b<rznnCC> %l0%#" : "b<rCC> %l0%#";
! }
    [(set_attr "slottable" "has_slot")])
  
! (define_insn "*b<nzvccond:code>_reversed<mode>"
    [(set (pc)
! 	(if_then_else (nzvccond (reg:NZVCUSE CRIS_CC0_REGNUM)
  			     (const_int 0))
  		      (pc)
  		      (label_ref (match_operand 0 "" ""))))]
!   "reload_completed"
!   "b<rCC> %l0%#"
    [(set_attr "slottable" "has_slot")])
  
! (define_insn "*b<rnzcond:code>_reversed<mode>"
    [(set (pc)
! 	(if_then_else (rnzcond (reg:NZUSE CRIS_CC0_REGNUM)
  			     (const_int 0))
  		      (pc)
  		      (label_ref (match_operand 0 "" ""))))]
!   "reload_completed"
  {
!   return <MODE>mode == CC_NZmode ? "b<roCC> %l0%#" : "b<rCC> %l0%#";
  }
    [(set_attr "slottable" "has_slot")])
  
  ;; Set on condition: sCC.
  
  (define_expand "cstore<mode>4"
!   [(parallel
!     [(set (match_operand:SI 0 "register_operand")
! 	  (match_operator:SI 1 "ordered_comparison_operator"
! 	   [(match_operand:BWDD 2 "nonimmediate_operand")
! 	    (match_operand:BWDD 3 "general_operand")]))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
    "cris_reduce_compare (&operands[1], &operands[2], &operands[3]);")
  
+ (define_insn_and_split "*cstore<mode><code>4"
+   [(set (match_operand:SI 0 "register_operand" "=<sCC_destc>")
+ 	(cond:SI
+ 	 (match_operand:BWDD 1 "nonimmediate_operand" "<cmp_op0c>")
+ 	 (match_operand:BWDD 2 "general_operand" "<cmp_op1c>")))
+    (clobber (reg:CC CRIS_CC0_REGNUM))]
+   ""
+   "#"
+   "&& reload_completed"
+   [(set (reg:<xCC> CRIS_CC0_REGNUM)
+ 	(compare:<xCC> (match_dup 1) (match_dup 2)))
+    (set (match_dup 0)
+ 	(cond:SI (reg:<xCC> CRIS_CC0_REGNUM) (const_int 0)))]
+   "")
+ 
  ;; Like bCC, we have to check the overflow bit for
  ;; signed conditions.
  
! (define_insn "*s<nzcond:code><mode>"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(nzcond:SI (reg:NZUSE CRIS_CC0_REGNUM) (const_int 0)))]
!   "reload_completed"
    "s<CC> %0"
    [(set_attr "slottable" "yes")
     (set_attr "cc" "none")])
  
! (define_insn "*s<rnzcond:code><mode>"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(rnzcond:SI (reg:NZUSE CRIS_CC0_REGNUM) (const_int 0)))]
!   "reload_completed"
  {
!   return <MODE>mode == CC_NZmode ? "s<oCC> %0" : "s<CC> %0";
  }
    [(set_attr "slottable" "yes")
     (set_attr "cc" "none")])
  
! (define_insn "*s<nzvccond:code><mode>"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(nzvccond:SI (reg:NZVCUSE CRIS_CC0_REGNUM) (const_int 0)))]
!   "reload_completed"
!   "s<CC> %0"
    [(set_attr "slottable" "yes")
     (set_attr "cc" "none")])
  
***************
*** 3715,3787 ****
  ;; instructions is a different issue.
  
  (define_expand "call"
!   [(parallel [(call (match_operand:QI 0 "cris_mem_call_operand" "")
! 		    (match_operand 1 "general_operand" ""))
  	      (clobber (reg:SI CRIS_SRP_REGNUM))])]
    ""
  {
!   gcc_assert (MEM_P (operands[0]));
!   if (flag_pic)
!     cris_expand_pic_call_address (&operands[0], &operands[1]);
!   else
!     operands[1] = const0_rtx;
  })
  
  ;; Accept operands for operand 0 in order of preference.
  
! (define_insn "*expanded_call_non_v32"
    [(call (mem:QI (match_operand:SI 0 "general_operand" "r,Q>,g"))
! 	 (match_operand:SI 1 "cris_call_type_marker" "rM,rM,rM"))
     (clobber (reg:SI CRIS_SRP_REGNUM))]
!   "!TARGET_V32"
    "jsr %0")
  
- (define_insn "*expanded_call_v32"
-   [(call
-     (mem:QI
-      (match_operand:SI 0 "cris_nonmemory_operand_or_callable_symbol" "n,r,U,i"))
-     (match_operand:SI 1 "cris_call_type_marker" "rM,rM,rM,rM"))
-    (clobber (reg:SI CRIS_SRP_REGNUM))]
-   "TARGET_V32"
-   "@
-    jsr %0%#
-    jsr %0%#
-    bsr %0%#
-    bsr %0%#"
-   [(set_attr "slottable" "has_call_slot")])
- 
- ;; Parallel when calculating and reusing address of indirect pointer
- ;; with simple offset.  (Makes most sense with PIC.)  It looks a bit
- ;; wrong not to have the clobber last, but that's the way combine
- ;; generates it (except it doesn't look into the *inner* mem, so this
- ;; just matches a peephole2).  FIXME: investigate that.
- (define_insn "*expanded_call_side"
-   [(call (mem:QI
- 	  (mem:SI
- 	   (plus:SI (match_operand:SI 0 "cris_bdap_operand" "%r,  r,r")
- 		    (match_operand:SI 1 "cris_bdap_operand" "r>Rn,r,>Rn"))))
- 	 (match_operand:SI 2 "cris_call_type_marker" "rM,rM,rM"))
-    (clobber (reg:SI CRIS_SRP_REGNUM))
-    (set (match_operand:SI 3 "register_operand" "=*0,r,r")
- 	(plus:SI (match_dup 0)
- 		 (match_dup 1)))]
-   ;; Disabled until after reload until we can avoid an output reload for
-   ;; operand 3 (being forbidden for call insns).
-   "reload_completed && !TARGET_AVOID_GOTPLT && !TARGET_V32"
-   "jsr [%3=%0%S1]")
- 
  (define_expand "call_value"
!   [(parallel [(set (match_operand 0 "" "")
! 		   (call (match_operand:QI 1 "cris_mem_call_operand" "")
! 			 (match_operand 2 "" "")))
  	      (clobber (reg:SI CRIS_SRP_REGNUM))])]
    ""
  {
!   gcc_assert (MEM_P (operands[1]));
!   if (flag_pic)
!     cris_expand_pic_call_address (&operands[1], &operands[2]);
!   else
!     operands[2] = const0_rtx;
  })
  
  ;; The validity other than "general" of
--- 2456,2486 ----
  ;; instructions is a different issue.
  
  (define_expand "call"
!   [(parallel [(call (match_operand:SI 0 "indirect_operand")
! 		    (match_operand 1 "general_operand"))
  	      (clobber (reg:SI CRIS_SRP_REGNUM))])]
    ""
  {
!   operands[1] = const0_rtx;
  })
  
  ;; Accept operands for operand 0 in order of preference.
  
! (define_insn "*expanded_call"
    [(call (mem:QI (match_operand:SI 0 "general_operand" "r,Q>,g"))
! 	 (const_int 0))
     (clobber (reg:SI CRIS_SRP_REGNUM))]
!   ""
    "jsr %0")
  
  (define_expand "call_value"
!   [(parallel [(set (match_operand 0 "")
! 		   (call (match_operand:SI 1 "indirect_operand")
! 			 (match_operand 2 "")))
  	      (clobber (reg:SI CRIS_SRP_REGNUM))])]
    ""
  {
!   operands[2] = const0_rtx;
  })
  
  ;; The validity other than "general" of
***************
*** 3790,3840 ****
  ;;  We also accept a PLT symbol.  We output it as [rPIC+sym:GOTPLT] rather
  ;; than requiring getting rPIC + sym:PLT into a register.
  
! (define_insn "*expanded_call_value_non_v32"
    [(set (match_operand 0 "nonimmediate_operand" "=g,g,g")
  	(call (mem:QI (match_operand:SI 1 "general_operand" "r,Q>,g"))
! 	      (match_operand:SI 2 "cris_call_type_marker" "rM,rM,rM")))
     (clobber (reg:SI CRIS_SRP_REGNUM))]
!   "!TARGET_V32"
    "Jsr %1"
    [(set_attr "cc" "clobber")])
  
- ;; See similar call special-case.
- (define_insn "*expanded_call_value_side"
-   [(set (match_operand 0 "nonimmediate_operand" "=g,g,g")
- 	(call
- 	 (mem:QI
- 	  (mem:SI
- 	   (plus:SI (match_operand:SI 1 "cris_bdap_operand" "%r,  r,r")
- 		    (match_operand:SI 2 "cris_bdap_operand" "r>Rn,r,>Rn"))))
- 	 (match_operand:SI 3 "cris_call_type_marker" "rM,rM,rM")))
-    (clobber (reg:SI CRIS_SRP_REGNUM))
-    (set (match_operand:SI 4 "register_operand" "=*1,r,r")
- 	(plus:SI (match_dup 1)
- 		 (match_dup 2)))]
-   ;; Disabled until after reload until we can avoid an output reload for
-   ;; operand 4 (being forbidden for call insns).
-   "reload_completed && !TARGET_AVOID_GOTPLT && !TARGET_V32"
-   "Jsr [%4=%1%S2]"
-   [(set_attr "cc" "clobber")])
- 
- (define_insn "*expanded_call_value_v32"
-   [(set
-     (match_operand 0 "nonimmediate_operand" "=g,g,g,g")
-     (call
-      (mem:QI
-       (match_operand:SI 1 "cris_nonmemory_operand_or_callable_symbol" "n,r,U,i"))
-      (match_operand:SI 2 "cris_call_type_marker" "rM,rM,rM,rM")))
-    (clobber (reg:SI 16))]
-   "TARGET_V32"
-   "@
-    Jsr %1%#
-    Jsr %1%#
-    Bsr %1%#
-    Bsr %1%#"
-   [(set_attr "cc" "clobber")
-    (set_attr "slottable" "has_call_slot")])
- 
  ;; Used in debugging.  No use for the direct pattern; unfilled
  ;; delayed-branches are taken care of by other means.
  
--- 2489,2503 ----
  ;;  We also accept a PLT symbol.  We output it as [rPIC+sym:GOTPLT] rather
  ;; than requiring getting rPIC + sym:PLT into a register.
  
! (define_insn "*expanded_call_value"
    [(set (match_operand 0 "nonimmediate_operand" "=g,g,g")
  	(call (mem:QI (match_operand:SI 1 "general_operand" "r,Q>,g"))
! 	      (const_int 0)))
     (clobber (reg:SI CRIS_SRP_REGNUM))]
!   ""
    "Jsr %1"
    [(set_attr "cc" "clobber")])
  
  ;; Used in debugging.  No use for the direct pattern; unfilled
  ;; delayed-branches are taken care of by other means.
  
***************
*** 3844,3852 ****
    "nop"
    [(set_attr "cc" "none")])
  
! ;; Same as the gdb trap breakpoint, will cause a SIGTRAP for
! ;; cris-linux* and crisv32-linux*, as intended.  Will work in
! ;; freestanding environments with sufficient framework.
  (define_insn "trap"
    [(trap_if (const_int 1) (const_int 8))]
    "TARGET_TRAP_USING_BREAK8"
--- 2507,2515 ----
    "nop"
    [(set_attr "cc" "none")])
  
! ;; Same as the gdb trap breakpoint: would cause a SIGTRAP for
! ;; cris-linux* and will work in freestanding environments with
! ;; sufficient framework.
  (define_insn "trap"
    [(trap_if (const_int 1) (const_int 8))]
    "TARGET_TRAP_USING_BREAK8"
***************
*** 3873,3886 ****
  ;; this expansion, you must change the macro ASM_OUTPUT_CASE_END
  ;; accordingly, to add the default case at the end of the jump-table.
  
! (define_expand "cris_casesi_non_v32"
!   [(set (match_dup 5) (match_operand:SI 0 "general_operand" ""))
!    (set (match_dup 6)
! 	(minus:SI (match_dup 5)
! 		  (match_operand:SI 1 "const_int_operand" "n")))
!    (set (match_dup 7)
! 	(umin:SI (match_dup 6)
! 		 (match_operand:SI 2 "const_int_operand" "n")))
     (parallel
      [(set (pc)
  	  (if_then_else
--- 2536,2555 ----
  ;; this expansion, you must change the macro ASM_OUTPUT_CASE_END
  ;; accordingly, to add the default case at the end of the jump-table.
  
! (define_expand "casesi"
!   [(parallel
!     [(set (match_dup 5) (match_operand:SI 0 "general_operand"))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 6)
! 	  (minus:SI (match_dup 5)
! 		    (match_operand:SI 1 "const_int_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 7)
! 	  (umin:SI (match_dup 6)
! 		   (match_operand:SI 2 "const_int_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
     (parallel
      [(set (pc)
  	  (if_then_else
***************
*** 3890,3897 ****
  		      (plus:SI (mult:SI (match_dup 7) (const_int 2))
  			       (pc))))
  		    (pc))
! 	   (label_ref (match_operand 4 "" ""))))
!      (use (label_ref (match_operand 3 "" "")))])]
    ""
  {
    operands[2] = plus_constant (SImode, operands[2], 1);
--- 2559,2567 ----
  		      (plus:SI (mult:SI (match_dup 7) (const_int 2))
  			       (pc))))
  		    (pc))
! 	   (label_ref (match_operand 4 ""))))
!      (use (label_ref (match_operand 3 "")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    ""
  {
    operands[2] = plus_constant (SImode, operands[2], 1);
***************
*** 3900,4637 ****
    operands[7] = gen_reg_rtx (SImode);
  })
  
- ;; FIXME: Check effect of not JUMP_TABLES_IN_TEXT_SECTION.
- (define_expand "cris_casesi_v32"
-   [(set (match_dup 5) (match_operand:SI 0 "general_operand"))
-    (set (match_dup 6)
-        (minus:SI (match_dup 5)
- 		 (match_operand:SI 1 "const_int_operand")))
-    (set (match_dup 7)
-        (umin:SI (match_dup 6)
- 		(match_operand:SI 2 "const_int_operand")))
-    (set (match_dup 8) (match_dup 11))
-    (set (match_dup 9)
-        (plus:SI (mult:SI (match_dup 7) (const_int 2))
- 		(match_dup 8)))
-    (set (match_dup 10)
-        (plus:SI (sign_extend:SI (mem:HI (match_dup 9)))
- 		(match_dup 9)))
-    (parallel
-     [(set (pc)
- 	 (if_then_else
- 	  (ltu (unspec [(const_int 0)] CRIS_UNSPEC_CASESI) (match_dup 2))
- 	  (match_dup 10)
- 	  (label_ref (match_operand 4 "" ""))))
-      (use (label_ref (match_dup 3)))])]
-   "TARGET_V32"
- {
-   int i;
-   rtx xlabel = gen_rtx_LABEL_REF (VOIDmode, operands[3]);
-   for (i = 5; i <= 10; i++)
-     operands[i] = gen_reg_rtx (SImode);
-   operands[2] = plus_constant (SImode, operands[2], 1);
- 
-   /* Don't forget to decorate labels too, for PIC.  */
-   operands[11] = flag_pic
-     ? gen_rtx_CONST (Pmode,
- 		    gen_rtx_UNSPEC (Pmode, gen_rtvec (1, xlabel),
- 				    CRIS_UNSPEC_PCREL))
-     : xlabel;
- })
- 
- (define_expand "casesi"
-   [(match_operand:SI 0 "general_operand")
-    (match_operand:SI 1 "const_int_operand")
-    (match_operand:SI 2 "const_int_operand")
-    (match_operand 3 "" "")
-    (match_operand 4 "" "")]
-   ""
- {
-   if (TARGET_V32)
-     emit_insn (gen_cris_casesi_v32 (operands[0], operands[1], operands[2],
- 				    operands[3], operands[4]));
-   else
-     emit_insn (gen_cris_casesi_non_v32 (operands[0], operands[1], operands[2],
- 					operands[3], operands[4]));
-   DONE;
- })
- 
- ;; Split-patterns.  Some of them have modes unspecified.  This
- ;; should always be ok; if for no other reason sparc.md has it as
- ;; well.
- ;;
- ;; When register_operand is specified for an operand, we can get a
- ;; subreg as well (Axis-990331), so don't just assume that REG_P is true
- ;; for a register_operand and that REGNO can be used as is.  It is best to
- ;; guard with REG_P, unless it is worth it to adjust for the subreg case.
- 
- ;; op [rx + 0],ry,rz
- ;; The index to rx is optimized into zero, and gone.
- 
- ;; First, recognize bound [rx],ry,rz; where [rx] is zero-extended,
- ;; and add/sub [rx],ry,rz, with zero or sign-extend on [rx].
- ;; Split this into:
- ;;  move ry,rz
- ;;  op [rx],rz
- ;; Lose if rz=ry or rx=rz.
- ;; Call this op-extend-split.
- ;; Do not match for V32; the addo and addi shouldn't be split
- ;; up.
- 
- (define_split
-   [(set (match_operand 0 "cris_nonsp_register_operand" "")
- 	(match_operator
- 	 4 "cris_operand_extend_operator"
- 	 [(match_operand 1 "register_operand" "")
- 	  (match_operator
- 	   3 "cris_extend_operator"
- 	   [(match_operand 2 "memory_operand" "")])]))]
-   "!TARGET_V32
-    && REG_P (operands[0])
-    && REG_P (operands[1])
-    && REGNO (operands[1]) != REGNO (operands[0])
-    && GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
-    && REG_P (XEXP (operands[2], 0))
-    && REGNO (XEXP (operands[2], 0)) != REGNO (operands[0])"
-   [(set (match_dup 0)
- 	(match_dup 1))
-    (set (match_dup 0)
- 	(match_op_dup
- 	 4 [(match_dup 0)
- 	    (match_op_dup 3 [(match_dup 2)])]))]
-   "")
- 
- ;; As op-extend-split, but recognize and split op [rz],ry,rz into
- ;;  ext [rz],rz
- ;;  op ry,rz
- ;; Do this for plus or bound only, being commutative operations, since we
- ;; have swapped the operands.
- ;; Call this op-extend-split-rx=rz
- 
- (define_split
-   [(set (match_operand 0 "cris_nonsp_register_operand" "")
- 	(match_operator
- 	 4 "cris_plus_or_bound_operator"
- 	 [(match_operand 1 "register_operand" "")
- 	  (match_operator
- 	   3 "cris_extend_operator"
- 	   [(match_operand 2 "memory_operand" "")])]))]
-   "!TARGET_V32
-    && REG_P (operands[0])
-    && REG_P (operands[1])
-    && REGNO (operands[1]) != REGNO (operands[0])
-    && GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
-    && REG_P (XEXP (operands[2], 0))
-    && REGNO (XEXP (operands[2], 0)) == REGNO (operands[0])"
-   [(set (match_dup 0)
- 	(match_op_dup 3 [(match_dup 2)]))
-    (set (match_dup 0)
- 	(match_op_dup
- 	 4 [(match_dup 0)
- 	    (match_dup 1)]))]
-   "")
- 
- ;; As the op-extend-split, but swapped operands, and only for
- ;; plus or bound, being the commutative extend-operators.  FIXME: Why is
- ;; this needed?  Is it?
- ;; Call this op-extend-split-swapped
- 
- (define_split
-   [(set (match_operand 0 "cris_nonsp_register_operand" "")
- 	(match_operator
- 	 4 "cris_plus_or_bound_operator"
- 	 [(match_operator
- 	   3 "cris_extend_operator"
- 	   [(match_operand 2 "memory_operand" "")])
- 	  (match_operand 1 "register_operand" "")]))]
-   "!TARGET_V32
-    && REG_P (operands[0])
-    && REG_P (operands[1])
-    && REGNO (operands[1]) != REGNO (operands[0])
-    && GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
-    && REG_P (XEXP (operands[2], 0))
-    && REGNO (XEXP (operands[2], 0)) != REGNO (operands[0])"
-   [(set (match_dup 0)
- 	(match_dup 1))
-    (set (match_dup 0)
- 	(match_op_dup
- 	 4 [(match_dup 0)
- 	    (match_op_dup 3 [(match_dup 2)])]))]
-   "")
- 
- ;; As op-extend-split-rx=rz, but swapped operands, only for plus or
- ;; bound.  Call this op-extend-split-swapped-rx=rz.
- 
- (define_split
-   [(set (match_operand 0 "cris_nonsp_register_operand" "")
- 	(match_operator
- 	 4 "cris_plus_or_bound_operator"
- 	 [(match_operator
- 	   3 "cris_extend_operator"
- 	   [(match_operand 2 "memory_operand" "")])
- 	  (match_operand 1 "register_operand" "")]))]
-   "!TARGET_V32
-    && REG_P (operands[0])
-    && REG_P (operands[1])
-    && REGNO (operands[1]) != REGNO (operands[0])
-    && GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
-    && REG_P (XEXP (operands[2], 0))
-    && REGNO (XEXP (operands[2], 0)) == REGNO (operands[0])"
-   [(set (match_dup 0)
- 	(match_op_dup 3 [(match_dup 2)]))
-    (set (match_dup 0)
- 	(match_op_dup
- 	 4 [(match_dup 0)
- 	    (match_dup 1)]))]
-   "")
- 
- ;; As op-extend-split, but the mem operand is not extended.
- ;;
- ;; op [rx],ry,rz changed into
- ;;  move ry,rz
- ;;  op [rx],rz
- ;; lose if ry=rz or rx=rz
- ;; Call this op-extend.
- 
- (define_split
-   [(set (match_operand 0 "cris_nonsp_register_operand" "")
- 	(match_operator
- 	 3 "cris_orthogonal_operator"
- 	 [(match_operand 1 "register_operand" "")
- 	  (match_operand 2 "memory_operand" "")]))]
-   "!TARGET_V32
-    && REG_P (operands[0])
-    && REG_P (operands[1])
-    && REGNO (operands[1]) != REGNO (operands[0])
-    && GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
-    && REG_P (XEXP (operands[2], 0))
-    && REGNO (XEXP (operands[2], 0)) != REGNO (operands[0])"
-   [(set (match_dup 0)
- 	(match_dup 1))
-    (set (match_dup 0)
- 	(match_op_dup
- 	 3 [(match_dup 0)
- 	    (match_dup 2)]))]
-   "")
- 
- ;; As op-extend-split-rx=rz, non-extended.
- ;; Call this op-split-rx=rz
- 
- (define_split
-   [(set (match_operand 0 "cris_nonsp_register_operand" "")
- 	(match_operator
- 	 3 "cris_commutative_orth_op"
- 	 [(match_operand 2 "memory_operand" "")
- 	  (match_operand 1 "register_operand" "")]))]
-   "!TARGET_V32
-    && REG_P (operands[0])
-    && REG_P (operands[1])
-    && REGNO (operands[1]) != REGNO (operands[0])
-    && GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
-    && REG_P (XEXP (operands[2], 0))
-    && REGNO (XEXP (operands[2], 0)) != REGNO (operands[0])"
-   [(set (match_dup 0)
- 	(match_dup 1))
-    (set (match_dup 0)
- 	(match_op_dup
- 	 3 [(match_dup 0)
- 	    (match_dup 2)]))]
-   "")
- 
- ;; As op-extend-split-swapped, nonextended.
- ;; Call this op-split-swapped.
- 
- (define_split
-   [(set (match_operand 0 "cris_nonsp_register_operand" "")
- 	(match_operator
- 	 3 "cris_commutative_orth_op"
- 	 [(match_operand 1 "register_operand" "")
- 	  (match_operand 2 "memory_operand" "")]))]
-   "!TARGET_V32
-    && REG_P (operands[0]) && REG_P (operands[1])
-    && REGNO (operands[1]) != REGNO (operands[0])
-    && GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
-    && REG_P (XEXP (operands[2], 0))
-    && REGNO (XEXP (operands[2], 0)) == REGNO (operands[0])"
-   [(set (match_dup 0)
- 	(match_dup 2))
-    (set (match_dup 0)
- 	(match_op_dup
- 	 3 [(match_dup 0)
- 	    (match_dup 1)]))]
-   "")
- 
- ;; As op-extend-split-swapped-rx=rz, non-extended.
- ;; Call this op-split-swapped-rx=rz.
- 
- (define_split
-   [(set (match_operand 0 "cris_nonsp_register_operand" "")
- 	(match_operator
- 	 3 "cris_orthogonal_operator"
- 	 [(match_operand 2 "memory_operand" "")
- 	  (match_operand 1 "register_operand" "")]))]
-   "!TARGET_V32
-    && REG_P (operands[0]) && REG_P (operands[1])
-    && REGNO (operands[1]) != REGNO (operands[0])
-    && GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
-    && REG_P (XEXP (operands[2], 0))
-    && REGNO (XEXP (operands[2], 0)) == REGNO (operands[0])"
-   [(set (match_dup 0)
- 	(match_dup 2))
-    (set (match_dup 0)
- 	(match_op_dup
- 	 3 [(match_dup 0)
- 	    (match_dup 1)]))]
-   "")
- 
  (include "sync.md")
  
! ;; Splits for all cases in side-effect insns where (possibly after reload
! ;; and register allocation) rx and ry in [rx=ry+i] are equal.
! 
! ;; move.S1 [rx=rx+rz.S2],ry
! 
! (define_split
!   [(parallel
!     [(set (match_operand 0 "register_operand" "")
! 	  (match_operator
! 	   6 "cris_mem_op"
! 	   [(plus:SI
! 	     (mult:SI (match_operand:SI 1 "register_operand" "")
! 		      (match_operand:SI 2 "const_int_operand" ""))
! 	     (match_operand:SI 3 "register_operand" ""))]))
!      (set (match_operand:SI 4 "register_operand" "")
! 	  (plus:SI (mult:SI (match_dup 1)
! 			    (match_dup 2))
! 		    (match_dup 3)))])]
!   "REG_P (operands[3]) && REG_P (operands[4])
!    && REGNO (operands[3]) == REGNO (operands[4])"
!   [(set (match_dup 4) (plus:SI (mult:SI (match_dup 1) (match_dup 2))
! 			       (match_dup 3)))
!    (set (match_dup 0) (match_dup 5))]
!   "operands[5] = replace_equiv_address (operands[6], operands[3]);")
! 
! ;; move.S1 [rx=rx+i],ry
! 
! (define_split
!   [(parallel
!     [(set (match_operand 0 "register_operand" "")
! 	  (match_operator
! 	   5 "cris_mem_op"
! 	   [(plus:SI (match_operand:SI 1 "cris_bdap_operand" "")
! 		     (match_operand:SI 2 "cris_bdap_operand" ""))]))
!      (set (match_operand:SI 3 "register_operand" "")
! 	   (plus:SI (match_dup 1)
! 		    (match_dup 2)))])]
!   "(rtx_equal_p (operands[3], operands[1])
!     || rtx_equal_p (operands[3], operands[2]))"
!   [(set (match_dup 3) (plus:SI (match_dup 1) (match_dup 2)))
!    (set (match_dup 0) (match_dup 4))]
! {
!   operands[4] = replace_equiv_address (operands[5], operands[3]);
!   cris_order_for_addsi3 (operands, 1);
! })
! 
! ;; move.S1 ry,[rx=rx+rz.S2]
! 
! (define_split
!   [(parallel
!     [(set (match_operator
! 	   6 "cris_mem_op"
! 	   [(plus:SI
! 	     (mult:SI (match_operand:SI 0 "register_operand" "")
! 		      (match_operand:SI 1 "const_int_operand" ""))
! 	     (match_operand:SI 2 "register_operand" ""))])
! 	  (match_operand 3 "register_operand" ""))
!      (set (match_operand:SI 4 "register_operand" "")
! 	   (plus:SI (mult:SI (match_dup 0)
! 			     (match_dup 1))
! 		    (match_dup 2)))])]
!   "REG_P (operands[2]) && REG_P (operands[4])
!    && REGNO (operands[4]) == REGNO (operands[2])"
!   [(set (match_dup 4) (plus:SI (mult:SI (match_dup 0) (match_dup 1))
! 				(match_dup 2)))
!    (set (match_dup 5) (match_dup 3))]
!   "operands[5] = replace_equiv_address (operands[6], operands[4]);")
! 
! ;; move.S1 ry,[rx=rx+i]
! 
! (define_split
!   [(parallel
!     [(set (match_operator
! 	   6 "cris_mem_op"
! 	   [(plus:SI (match_operand:SI 0 "cris_bdap_operand" "")
! 		     (match_operand:SI 1 "cris_bdap_operand" ""))])
! 	  (match_operand 2 "register_operand" ""))
!      (set (match_operand:SI 3 "register_operand" "")
! 	   (plus:SI (match_dup 0)
! 		   (match_dup 1)))])]
!   "(rtx_equal_p (operands[3], operands[0])
!     || rtx_equal_p (operands[3], operands[1]))"
!   [(set (match_dup 3) (plus:SI (match_dup 0) (match_dup 1)))
!    (set (match_dup 5) (match_dup 2))]
! {
!   operands[5] = replace_equiv_address (operands[6], operands[3]);
!   cris_order_for_addsi3 (operands, 0);
! })
! 
! ;; clear.[bwd] [rx=rx+rz.S2]
! 
! (define_split
!   [(parallel
!     [(set (mem:BWD (plus:SI
! 		    (mult:SI (match_operand:SI 0 "register_operand" "")
! 			     (match_operand:SI 1 "const_int_operand" ""))
! 		    (match_operand:SI 2 "register_operand" "")))
! 	   (const_int 0))
!      (set (match_operand:SI 3 "register_operand" "")
! 	   (plus:SI (mult:SI (match_dup 0)
! 			     (match_dup 1))
! 		    (match_dup 2)))])]
!   "REG_P (operands[2]) && REG_P (operands[3])
!    && REGNO (operands[3]) == REGNO (operands[2])"
!   [(set (match_dup 3) (plus:SI (mult:SI (match_dup 0) (match_dup 1))
! 				(match_dup 2)))
!    (set (mem:BWD (match_dup 3)) (const_int 0))]
!   "")
! 
! ;; clear.[bwd] [rx=rx+i]
! 
! (define_split
!   [(parallel
!     [(set (mem:BWD
! 	   (plus:SI (match_operand:SI 0 "cris_bdap_operand" "")
! 		    (match_operand:SI 1 "cris_bdap_operand" "")))
! 	   (const_int 0))
!      (set (match_operand:SI 2 "register_operand" "")
! 	   (plus:SI (match_dup 0)
! 		    (match_dup 1)))])]
!   "(rtx_equal_p (operands[0], operands[2])
!     || rtx_equal_p (operands[2], operands[1]))"
!   [(set (match_dup 2) (plus:SI (match_dup 0) (match_dup 1)))
!    (set (mem:BWD (match_dup 2)) (const_int 0))]
!   "cris_order_for_addsi3 (operands, 0);")
! 
! ;; mov(s|u).S1 [rx=rx+rz.S2],ry
! 
! (define_split
!   [(parallel
!     [(set (match_operand 0 "register_operand" "")
! 	  (match_operator
! 	    5 "cris_extend_operator"
! 	    [(mem (plus:SI
! 		   (mult:SI (match_operand:SI 1 "register_operand" "")
! 			    (match_operand:SI 2 "const_int_operand" ""))
! 		   (match_operand:SI 3 "register_operand" "")))]))
!      (set (match_operand:SI 4 "register_operand" "")
! 	   (plus:SI (mult:SI (match_dup 1)
! 			     (match_dup 2))
! 		    (match_dup 3)))])]
!   "REG_P (operands[3])
!    && REG_P (operands[4])
!    && REGNO (operands[3]) == REGNO (operands[4])"
!   [(set (match_dup 4) (plus:SI (mult:SI (match_dup 1) (match_dup 2))
! 				(match_dup 3)))
!    (set (match_dup 0) (match_op_dup 5 [(match_dup 6)]))]
!   "operands[6] = replace_equiv_address (XEXP (operands[5], 0), operands[4]);")
! 
! ;; mov(s|u).S1 [rx=rx+i],ry
! 
! (define_split
!   [(parallel
!     [(set (match_operand 0 "register_operand" "")
! 	  (match_operator
! 	    4 "cris_extend_operator"
! 	    [(mem (plus:SI
! 		   (match_operand:SI 1 "cris_bdap_operand" "")
! 		   (match_operand:SI 2 "cris_bdap_operand" "")))]))
!      (set (match_operand:SI 3 "register_operand" "")
! 	   (plus:SI (match_dup 1)
! 		    (match_dup 2)))])]
!   "(rtx_equal_p (operands[1], operands[3])
!     || rtx_equal_p (operands[2], operands[3]))"
!   [(set (match_dup 3) (plus:SI (match_dup 1) (match_dup 2)))
!    (set (match_dup 0) (match_op_dup 4 [(match_dup 5)]))]
! {
!   operands[5] = replace_equiv_address (XEXP (operands[4], 0), operands[3]);
!   cris_order_for_addsi3 (operands, 1);
! })
! 
! ;; op.S1 [rx=rx+i],ry
! 
! (define_split
!   [(parallel
!     [(set (match_operand 0 "register_operand" "")
! 	  (match_operator
! 	    5 "cris_orthogonal_operator"
! 	    [(match_operand 1 "register_operand" "")
! 	     (mem (plus:SI
! 		   (match_operand:SI 2 "cris_bdap_operand" "")
! 		   (match_operand:SI 3 "cris_bdap_operand" "")))]))
!      (set (match_operand:SI 4 "register_operand" "")
! 	   (plus:SI (match_dup 2)
! 		    (match_dup 3)))])]
!   "(rtx_equal_p (operands[4], operands[2])
!     || rtx_equal_p (operands[4], operands[3]))"
!   [(set (match_dup 4) (plus:SI (match_dup 2) (match_dup 3)))
!    (set (match_dup 0) (match_op_dup 5 [(match_dup 1) (match_dup 6)]))]
! {
!   operands[6] = replace_equiv_address (XEXP (operands[5], 1), operands[4]);
!   cris_order_for_addsi3 (operands, 2);
! })
! 
! ;; op.S1 [rx=rx+rz.S2],ry
! 
! (define_split
!   [(parallel
!     [(set (match_operand 0 "register_operand" "")
! 	  (match_operator
! 	    6 "cris_orthogonal_operator"
! 	    [(match_operand 1 "register_operand" "")
! 	     (mem (plus:SI
! 		   (mult:SI (match_operand:SI 2 "register_operand" "")
! 			    (match_operand:SI 3 "const_int_operand" ""))
! 		   (match_operand:SI 4 "register_operand" "")))]))
!      (set (match_operand:SI 5 "register_operand" "")
! 	   (plus:SI (mult:SI (match_dup 2)
! 			     (match_dup 3))
! 		   (match_dup 4)))])]
!   "REG_P (operands[4])
!    && REG_P (operands[5])
!    && REGNO (operands[5]) == REGNO (operands[4])"
!   [(set (match_dup 5) (plus:SI (mult:SI (match_dup 2) (match_dup 3))
! 				(match_dup 4)))
!    (set (match_dup 0) (match_op_dup 6 [(match_dup 1) (match_dup 7)]))]
!   "operands[7] = replace_equiv_address (XEXP (operands[6], 1), operands[5]);")
! 
! ;; op.S1 [rx=rx+rz.S2],ry (swapped)
! 
! (define_split
!   [(parallel
!     [(set (match_operand 0 "register_operand" "")
! 	  (match_operator
! 	    6 "cris_commutative_orth_op"
! 	    [(mem (plus:SI
! 		   (mult:SI (match_operand:SI 2 "register_operand" "")
! 			    (match_operand:SI 3 "const_int_operand" ""))
! 		   (match_operand:SI 4 "register_operand" "")))
! 	     (match_operand 1 "register_operand" "")]))
!      (set (match_operand:SI 5 "register_operand" "")
! 	   (plus:SI (mult:SI (match_dup 2)
! 			     (match_dup 3))
! 		    (match_dup 4)))])]
!   "REG_P (operands[4])
!    && REG_P (operands[5])
!    && REGNO (operands[5]) == REGNO (operands[4])"
!   [(set (match_dup 5) (plus:SI (mult:SI (match_dup 2) (match_dup 3))
! 			       (match_dup 4)))
!    (set (match_dup 0) (match_op_dup 6 [(match_dup 7) (match_dup 1)]))]
!   "operands[7] = replace_equiv_address (XEXP (operands[6], 0), operands[5]);")
  
! ;; op.S1 [rx=rx+i],ry (swapped)
  
! (define_split
!   [(parallel
!     [(set (match_operand 0 "register_operand" "")
! 	  (match_operator
! 	    5 "cris_commutative_orth_op"
! 	    [(mem
! 	      (plus:SI (match_operand:SI 2 "cris_bdap_operand" "")
! 		       (match_operand:SI 3 "cris_bdap_operand" "")))
! 	     (match_operand 1 "register_operand" "")]))
!      (set (match_operand:SI 4 "register_operand" "")
! 	  (plus:SI (match_dup 2)
! 		    (match_dup 3)))])]
!   "(rtx_equal_p (operands[4], operands[2])
!     || rtx_equal_p (operands[4], operands[3]))"
!   [(set (match_dup 4) (plus:SI (match_dup 2) (match_dup 3)))
!    (set (match_dup 0) (match_op_dup 5 [(match_dup 6) (match_dup 1)]))]
! {
!   operands[6] = replace_equiv_address (XEXP (operands[5], 0), operands[4]);
!   cris_order_for_addsi3 (operands, 2);
! })
  
! ;; op(s|u).S1 [rx=rx+rz.S2],ry
  
! (define_split
    [(parallel
!     [(set (match_operand 0 "register_operand" "")
! 	  (match_operator
! 	    6 "cris_operand_extend_operator"
! 	    [(match_operand 1 "register_operand" "")
! 	     (match_operator
! 	      7 "cris_extend_operator"
! 	      [(mem (plus:SI
! 		     (mult:SI (match_operand:SI 2 "register_operand" "")
! 			      (match_operand:SI 3 "const_int_operand" ""))
! 		     (match_operand:SI 4 "register_operand" "")))])]))
!      (set (match_operand:SI 5 "register_operand" "")
! 	   (plus:SI (mult:SI (match_dup 2)
! 			     (match_dup 3))
! 		    (match_dup 4)))])]
!   "REG_P (operands[4])
!    && REG_P (operands[5])
!    && REGNO (operands[5]) == REGNO (operands[4])"
!   [(set (match_dup 5) (plus:SI (mult:SI (match_dup 2) (match_dup 3))
! 			       (match_dup 4)))
!    (set (match_dup 0) (match_op_dup 6 [(match_dup 1) (match_dup 8)]))]
!   "operands[8] = gen_rtx_fmt_e (GET_CODE (operands[7]), GET_MODE (operands[7]),
! 				replace_equiv_address (XEXP (operands[7], 0),
! 						       operands[5]));")
! 
! ;; op(s|u).S1 [rx=rx+i],ry
! 
! (define_split
    [(parallel
!     [(set (match_operand 0 "register_operand" "")
! 	  (match_operator
! 	    5 "cris_operand_extend_operator"
! 	    [(match_operand 1 "register_operand" "")
! 	     (match_operator
! 	      6 "cris_extend_operator"
! 	      [(mem
! 		(plus:SI (match_operand:SI 2 "cris_bdap_operand" "")
! 			 (match_operand:SI 3 "cris_bdap_operand" "")
! 			 ))])]))
!      (set (match_operand:SI 4 "register_operand" "")
! 	   (plus:SI (match_dup 2)
! 		    (match_dup 3)))])]
!   "(rtx_equal_p (operands[4], operands[2])
!     || rtx_equal_p (operands[4], operands[3]))"
!   [(set (match_dup 4) (plus:SI (match_dup 2) (match_dup 3)))
!    (set (match_dup 0) (match_op_dup 5 [(match_dup 1) (match_dup 7)]))]
  {
!   operands[7] = gen_rtx_fmt_e (GET_CODE (operands[6]), GET_MODE (operands[6]),
! 			       replace_equiv_address (XEXP (operands[6], 0),
! 						      operands[4]));
!   cris_order_for_addsi3 (operands, 2);
  })
  
! ;; op(s|u).S1 [rx=rx+rz.S2],ry (swapped, plus or bound)
! 
! (define_split
!   [(parallel
!     [(set (match_operand 0 "register_operand" "")
! 	  (match_operator
! 	    7 "cris_plus_or_bound_operator"
! 	    [(match_operator
! 	      6 "cris_extend_operator"
! 	      [(mem (plus:SI
! 		     (mult:SI (match_operand:SI 2 "register_operand" "")
! 			      (match_operand:SI 3 "const_int_operand" ""))
! 		     (match_operand:SI 4 "register_operand" "")))])
! 	     (match_operand 1 "register_operand" "")]))
!      (set (match_operand:SI 5 "register_operand" "")
! 	   (plus:SI (mult:SI (match_dup 2)
! 			     (match_dup 3))
! 		    (match_dup 4)))])]
!   "REG_P (operands[4]) && REG_P (operands[5])
!    && REGNO (operands[5]) == REGNO (operands[4])"
!   [(set (match_dup 5) (plus:SI (mult:SI (match_dup 2) (match_dup 3))
! 			       (match_dup 4)))
!    (set (match_dup 0) (match_op_dup 6 [(match_dup 8) (match_dup 1)]))]
!   "operands[8] = gen_rtx_fmt_e (GET_CODE (operands[6]), GET_MODE (operands[6]),
! 				replace_equiv_address (XEXP (operands[6], 0),
! 						       operands[5]));")
! 
! ;; op(s|u).S1 [rx=rx+i],ry (swapped, plus or bound)
  
! (define_split
    [(parallel
!     [(set (match_operand 0 "register_operand" "")
! 	  (match_operator
! 	    6 "cris_plus_or_bound_operator"
! 	    [(match_operator
! 	      5 "cris_extend_operator"
! 	     [(mem (plus:SI
! 		    (match_operand:SI 2 "cris_bdap_operand" "")
! 		    (match_operand:SI 3 "cris_bdap_operand" "")))])
! 	     (match_operand 1 "register_operand" "")]))
!      (set (match_operand:SI 4 "register_operand" "")
! 	   (plus:SI (match_dup 2)
! 		    (match_dup 3)))])]
!   "(rtx_equal_p (operands[4], operands[2])
!     || rtx_equal_p (operands[4], operands[3]))"
!   [(set (match_dup 4) (plus:SI (match_dup 2) (match_dup 3)))
!    (set (match_dup 0) (match_op_dup 6 [(match_dup 7) (match_dup 1)]))]
! {
!   operands[7] = gen_rtx_fmt_e (GET_CODE (operands[5]), GET_MODE (operands[5]),
! 			       replace_equiv_address (XEXP (operands[5], 0),
! 						      operands[4]));
!   cris_order_for_addsi3 (operands, 2);
! })
! 
! ;; Splits for addressing prefixes that have no side-effects, so we can
! ;; fill a delay slot.  Never split if we lose something, though.
! 
! ;; If we have a
! ;;  move [indirect_ref],rx
! ;; where indirect ref = {const, [r+], [r]}, it costs as much as
! ;;  move indirect_ref,rx
! ;;  move [rx],rx
! ;; Take care not to allow indirect_ref = register.
! 
! ;; We're not allowed to generate copies of registers with different mode
! ;; until after reload; copying pseudos upsets reload.  CVS as of
! ;; 2001-08-24, unwind-dw2-fde.c, _Unwind_Find_FDE ICE in
! ;; cselib_invalidate_regno.  Also, don't do this for the stack-pointer,
! ;; as we don't want it set temporarily to an invalid value.
! 
! (define_split ; indir_to_reg_split
!   [(set (match_operand 0 "cris_nonsp_register_operand" "")
! 	(match_operand 1 "indirect_operand" ""))]
!   "reload_completed
!    && REG_P (operands[0])
!    && GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
!    && (MEM_P (XEXP (operands[1], 0)) || CONSTANT_P (XEXP (operands[1], 0)))
!    && REGNO (operands[0]) < CRIS_LAST_GENERAL_REGISTER"
!   [(set (match_dup 2) (match_dup 4))
!    (set (match_dup 0) (match_dup 3))]
!   "operands[2] = gen_rtx_REG (Pmode, REGNO (operands[0]));
!    operands[3] = replace_equiv_address (operands[1], operands[2]);
!    operands[4] = XEXP (operands[1], 0);")
! 
! ;; As the above, but MOVS and MOVU.
! 
! (define_split
!   [(set (match_operand 0 "cris_nonsp_register_operand" "")
! 	(match_operator
! 	 4 "cris_extend_operator"
! 	 [(match_operand 1 "indirect_operand" "")]))]
!   "reload_completed
!    && REG_P (operands[0])
!    && GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
!    && (MEM_P (XEXP (operands[1], 0))
!        || CONSTANT_P (XEXP (operands[1], 0)))"
!   [(set (match_dup 2) (match_dup 5))
!    (set (match_dup 0) (match_op_dup 4 [(match_dup 3)]))]
!   "operands[2] = gen_rtx_REG (Pmode, REGNO (operands[0]));
!    operands[3] = replace_equiv_address (XEXP (operands[4], 0), operands[2]);
!    operands[5] = XEXP (operands[1], 0);")
! 
! ;; Various peephole optimizations.
! ;;
! ;; Watch out: when you exchange one set of instructions for another, the
! ;; condition codes setting must be the same, or you have to CC_INIT or
! ;; whatever is appropriate, in the pattern before you emit the
! ;; assembly text.  This is best done here, not in cris_notice_update_cc,
! ;; to keep changes local to their cause.
! ;;
! ;; Do not add patterns that you do not know will be matched.
! ;; Please also add a self-contained testcase.
! 
! ;; We have trouble with and:s and shifts.  Maybe something is broken in
! ;; gcc?  Or it could just be that bit-field insn expansion is a bit
! ;; suboptimal when not having extzv insns.
! ;; Testcase for the following four peepholes: gcc.dg/cris-peep2-xsrand.c
! 
! (define_peephole2 ; asrandb (peephole casesi+31)
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(ashiftrt:SI (match_dup 0)
! 		     (match_operand:SI 1 "const_int_operand" "")))
!    (set (match_dup 0)
  	(and:SI (match_dup 0)
! 		(match_operand 2 "const_int_operand" "")))]
    "INTVAL (operands[2]) > 31
     && INTVAL (operands[2]) < 255
     && INTVAL (operands[1]) > 23
--- 2570,2635 ----
    operands[7] = gen_reg_rtx (SImode);
  })
  
  (include "sync.md")
  
! ;; Various peephole optimizations.
! ;;
! ;; Do not add patterns that you do not know will be matched.
! ;; Please also add a self-contained testcase.
  
! ;; We have trouble with and:s and shifts.  Maybe something is broken in
! ;; gcc?  Or it could just be that bit-field insn expansion is a bit
! ;; suboptimal when not having extzv insns.  Or combine being over-eager
! ;; to canonicalize to "and", and ignorant on the benefits of the right
! ;; mixture of "and" and "zero-extend".
  
! ;; Testcase for the following peephole: gcc.target/cris/peep2-movulsr.c
  
! ;; Where equivalent and where the "and" argument doesn't fit "andq" but
! ;; is 16 bits or smaller, replace the "and" with a zero-extend preceding
! ;; the shift.  A zero-extend is shorter and faster than "and" with a
! ;; 32-bit argument.
  
! (define_peephole2 ; movulsr
    [(parallel
!     [(set (match_operand:SI 0 "register_operand")
! 	  (lshiftrt:SI (match_dup 0)
! 		       (match_operand:SI 1 "const_int_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 0)
! 	  (and:SI (match_dup 0)
! 		  (match_operand 2 "const_int_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
!   "INTVAL (operands[2]) > 31 && INTVAL (operands[2]) <= 0xffff
!    && (((INTVAL (operands[2]) <= 0xff ? 0xff : 0xffff) >> INTVAL (operands[1]))
!        == INTVAL (operands[2]))"
    [(parallel
!     ;; The zero-extend is expressed as an "and", only because that's easier
!     ;; than messing with zero-extend of a subreg.
!     [(set (match_dup 0) (and:SI (match_dup 0) (match_dup 3)))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 0) (lshiftrt:SI (match_dup 0) (match_dup 1)))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
  {
!   operands[3]
!     = INTVAL (operands[2]) <= 0xff ? GEN_INT (0xff) :  GEN_INT (0xffff);
  })
  
! ;; Testcase for the following four peepholes: gcc.target/cris/peep2-xsrand.c
  
! (define_peephole2 ; asrandb
    [(parallel
!     [(set (match_operand:SI 0 "register_operand")
! 	  (ashiftrt:SI (match_dup 0)
! 		       (match_operand:SI 1 "const_int_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 0)
  	(and:SI (match_dup 0)
! 		(match_operand 2 "const_int_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    "INTVAL (operands[2]) > 31
     && INTVAL (operands[2]) < 255
     && INTVAL (operands[1]) > 23
***************
*** 4639,4658 ****
     && (INTVAL (operands[2])
         & ((HOST_WIDE_INT) (HOST_WIDE_INT_M1U
  			   << (32 - INTVAL (operands[1]))))) == 0"
!   [(set (match_dup 0) (lshiftrt:SI (match_dup 0) (match_dup 1)))
!    (set (match_dup 3) (and:QI (match_dup 3) (match_dup 4)))]
!   ;; FIXME: CC0 is valid except for the M bit.
  {
    operands[3] = gen_rtx_REG (QImode, REGNO (operands[0]));
    operands[4] = GEN_INT (trunc_int_for_mode (INTVAL (operands[2]), QImode));
  })
  
! (define_peephole2 ; asrandw (peephole casesi+32)
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(ashiftrt:SI (match_dup 0)
! 		     (match_operand:SI 1 "const_int_operand" "")))
!    (set (match_dup 0)
! 	(and:SI (match_dup 0) (match_operand 2 "const_int_operand" "")))]
    "INTVAL (operands[2]) > 31
     && INTVAL (operands[2]) < 65535
     && INTVAL (operands[2]) != 255
--- 2637,2663 ----
     && (INTVAL (operands[2])
         & ((HOST_WIDE_INT) (HOST_WIDE_INT_M1U
  			   << (32 - INTVAL (operands[1]))))) == 0"
!   [(parallel
!     [(set (match_dup 0) (lshiftrt:SI (match_dup 0) (match_dup 1)))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 3) (and:QI (match_dup 3) (match_dup 4)))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
  {
    operands[3] = gen_rtx_REG (QImode, REGNO (operands[0]));
    operands[4] = GEN_INT (trunc_int_for_mode (INTVAL (operands[2]), QImode));
  })
  
! (define_peephole2 ; asrandw
!   [(parallel
!     [(set (match_operand:SI 0 "register_operand")
! 	  (ashiftrt:SI (match_dup 0)
! 		       (match_operand:SI 1 "const_int_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 0)
! 	(and:SI (match_dup 0) (match_operand 2 "const_int_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    "INTVAL (operands[2]) > 31
     && INTVAL (operands[2]) < 65535
     && INTVAL (operands[2]) != 255
***************
*** 4661,4971 ****
     && (INTVAL (operands[2])
         & ((HOST_WIDE_INT) (HOST_WIDE_INT_M1U
  			   << (32 - INTVAL (operands[1]))))) == 0"
!   [(set (match_dup 0) (lshiftrt:SI (match_dup 0) (match_dup 1)))
!    (set (match_dup 3) (and:HI (match_dup 3) (match_dup 4)))]
!   ;; FIXME: CC0 is valid except for the M bit.
  {
    operands[3] = gen_rtx_REG (HImode, REGNO (operands[0]));
    operands[4] = GEN_INT (trunc_int_for_mode (INTVAL (operands[2]), HImode));
  })
  
! (define_peephole2 ; lsrandb (peephole casesi+33)
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(lshiftrt:SI (match_dup 0)
! 		     (match_operand:SI 1 "const_int_operand" "")))
!    (set (match_dup 0)
! 	(and:SI (match_dup 0) (match_operand 2 "const_int_operand" "")))]
    "INTVAL (operands[2]) > 31
     && INTVAL (operands[2]) < 255
     && INTVAL (operands[1]) > 23"
!   [(set (match_dup 0) (lshiftrt:SI (match_dup 0) (match_dup 1)))
!    (set (match_dup 3) (and:QI (match_dup 3) (match_dup 4)))]
!   ;; FIXME: CC0 is valid except for the M bit.
  {
    operands[3] = gen_rtx_REG (QImode, REGNO (operands[0]));
    operands[4] = GEN_INT (trunc_int_for_mode (INTVAL (operands[2]), QImode));
  })
  
! (define_peephole2 ; lsrandw (peephole casesi+34)
!   [(set (match_operand:SI 0 "register_operand" "")
  	(lshiftrt:SI (match_dup 0)
! 		     (match_operand:SI 1 "const_int_operand" "")))
!    (set (match_dup 0)
! 	(and:SI (match_dup 0) (match_operand 2 "const_int_operand" "")))]
    "INTVAL (operands[2]) > 31 && INTVAL (operands[2]) < 65535
     && INTVAL (operands[2]) != 255
     && INTVAL (operands[1]) > 15"
!   [(set (match_dup 0) (lshiftrt:SI (match_dup 0) (match_dup 1)))
!    (set (match_dup 3) (and:HI (match_dup 3) (match_dup 4)))]
!   ;; FIXME: CC0 is valid except for the M bit.
  {
    operands[3] = gen_rtx_REG (HImode, REGNO (operands[0]));
    operands[4] = GEN_INT (trunc_int_for_mode (INTVAL (operands[2]), HImode));
  })
- 
- 
- ;; Change
- ;;  add.d n,rx
- ;;  move [rx],ry
- ;; into
- ;;  move [rx=rx+n],ry
- ;; when -128 <= n <= 127.
- ;; This will reduce the size of the assembler code for n = [-128..127],
- ;; and speed up accordingly.  Don't match if the previous insn is
- ;; (set rx rz) because that combination is matched by another peephole.
- ;; No stable test-case.
- 
- (define_peephole2 ; moversideqi (peephole casesi+35)
-   [(set (match_operand:SI 0 "register_operand" "")
- 	(plus:SI (match_operand:SI 1 "register_operand" "")
- 		 (match_operand:SI 2 "const_int_operand" "")))
-    (set (match_operand 3 "register_operand" "")
- 	(match_operator 4 "cris_mem_op" [(match_dup 0)]))]
-   "GET_MODE_SIZE (GET_MODE (operands[4])) <= UNITS_PER_WORD
-    && REGNO (operands[3]) != REGNO (operands[0])
-    && (cris_base_p (operands[1], true) || cris_base_p (operands[2], true))
-    && !satisfies_constraint_J (operands[2])
-    && !satisfies_constraint_N (operands[2])
-    && (INTVAL (operands[2]) >= -128 && INTVAL (operands[2]) < 128)
-    && TARGET_SIDE_EFFECT_PREFIXES"
-   [(parallel
-     [(set (match_dup 3) (match_dup 5))
-      (set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))])]
-   ;; Checking the previous insn is a bit too awkward for the condition.
- {
-   rtx_insn *prev = prev_nonnote_insn (curr_insn);
-   if (prev != NULL_RTX)
-     {
-       rtx set = single_set (prev);
-       if (set != NULL_RTX
- 	  && REG_S_P (SET_DEST (set))
- 	  && REGNO (SET_DEST (set)) == REGNO (operands[0])
- 	  && REG_S_P (SET_SRC (set)))
- 	FAIL;
-     }
-   operands[5]
-     = replace_equiv_address (operands[4],
- 			     gen_rtx_PLUS (SImode,
- 					   operands[1], operands[2]));
- })
- 
- ;; Vice versa: move ry,[rx=rx+n]
- 
- (define_peephole2 ; movemsideqi (peephole casesi+36)
-   [(set (match_operand:SI 0 "register_operand" "")
- 	(plus:SI (match_operand:SI 1 "register_operand" "")
- 		 (match_operand:SI 2 "const_int_operand" "")))
-    (set (match_operator 3 "cris_mem_op" [(match_dup 0)])
- 	(match_operand 4 "register_operand" ""))]
-   "GET_MODE_SIZE (GET_MODE (operands[4])) <= UNITS_PER_WORD
-    && REGNO (operands[4]) != REGNO (operands[0])
-    && (cris_base_p (operands[1], true) || cris_base_p (operands[2], true))
-    && !satisfies_constraint_J (operands[2])
-    && !satisfies_constraint_N (operands[2])
-    && (INTVAL (operands[2]) >= -128 && INTVAL (operands[2]) < 128)
-    && TARGET_SIDE_EFFECT_PREFIXES"
-   [(parallel
-     [(set (match_dup 5) (match_dup 4))
-      (set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))])]
-   "operands[5]
-      = replace_equiv_address (operands[3],
- 			      gen_rtx_PLUS (SImode,
- 					    operands[1], operands[2]));")
- 
- ;; As above, change:
- ;;  add.d n,rx
- ;;  op.d [rx],ry
- ;; into:
- ;;  op.d [rx=rx+n],ry
- ;; Saves when n = [-128..127].
- ;;
- ;; Splitting and joining combinations for side-effect modes are slightly
- ;; out of hand.  They probably will not save the time they take typing in,
- ;; not to mention the bugs that creep in.  FIXME: Get rid of as many of
- ;; the splits and peepholes as possible.
- ;; No stable test-case.
- 
- (define_peephole2 ; mover2side (peephole casesi+37)
-   [(set (match_operand:SI 0 "register_operand" "")
- 	(plus:SI (match_operand:SI 1 "register_operand" "")
- 		 (match_operand:SI 2 "const_int_operand" "")))
-    (set (match_operand 3 "register_operand" "")
- 	  (match_operator 4 "cris_orthogonal_operator"
- 			  [(match_dup 3)
- 			   (match_operator
- 			    5 "cris_mem_op" [(match_dup 0)])]))]
-   ;; FIXME: What about DFmode?
-   ;; Change to GET_MODE_SIZE (GET_MODE (operands[3])) <= UNITS_PER_WORD?
-   "GET_MODE (operands[3]) != DImode
-    && REGNO (operands[0]) != REGNO (operands[3])
-    && !satisfies_constraint_J (operands[2])
-    && !satisfies_constraint_N (operands[2])
-    && INTVAL (operands[2]) >= -128
-    && INTVAL (operands[2]) <= 127
-    && TARGET_SIDE_EFFECT_PREFIXES"
-   [(parallel
-     [(set (match_dup 3) (match_op_dup 4 [(match_dup 3) (match_dup 6)]))
-      (set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))])]
-   "operands[6]
-      = replace_equiv_address (operands[5],
- 			      gen_rtx_PLUS (SImode,
- 					    operands[1], operands[2]));")
- 
- ;; Sometimes, for some reason the pattern
- ;;  move x,rx
- ;;  add y,rx
- ;;  move [rx],rz
- ;; will occur.  Solve this, and likewise for to-memory.
- ;; No stable test-case.
- 
- (define_peephole2 ; moverside (peephole casesi+38)
-   [(set (match_operand:SI 0 "register_operand" "")
- 	(match_operand:SI 1 "cris_bdap_biap_operand" ""))
-    (set (match_dup 0)
- 	(plus:SI (match_operand:SI 2 "cris_bdap_biap_operand" "")
- 		 (match_operand:SI 3 "cris_bdap_biap_operand" "")))
-    (set (match_operand 4 "register_operand" "")
- 	(match_operator 5 "cris_mem_op" [(match_dup 0)]))]
-   "(rtx_equal_p (operands[2], operands[0])
-     || rtx_equal_p (operands[3], operands[0]))
-    && cris_side_effect_mode_ok (PLUS, operands, 0,
- 				(REG_S_P (operands[1])
- 				 ? 1
- 				 : (rtx_equal_p (operands[2], operands[0])
- 				    ? 3 : 2)),
- 				(! REG_S_P (operands[1])
- 				 ? 1
- 				 : (rtx_equal_p (operands[2], operands[0])
- 				    ? 3 : 2)),
- 				-1, 4)"
-   [(parallel
-     [(set (match_dup 4) (match_dup 6))
-      (set (match_dup 0) (plus:SI (match_dup 7) (match_dup 8)))])]
- {
-   rtx otherop
-     = rtx_equal_p (operands[2], operands[0]) ? operands[3] : operands[2];
- 
-   /* Make sure we have canonical RTX so we match the insn pattern -
-      not a constant in the first operand.  We also require the order
-      (plus reg mem) to match the final pattern.  */
-   if (CRIS_CONSTANT_P (otherop) || MEM_P (otherop))
-     {
-       operands[7] = operands[1];
-       operands[8] = otherop;
-     }
-   else
-     {
-       operands[7] = otherop;
-       operands[8] = operands[1];
-     }
-   operands[6]
-     = replace_equiv_address (operands[5],
- 			     gen_rtx_PLUS (SImode,
- 					   operands[7], operands[8]));
- })
- 
- ;; As above but to memory.
- ;; FIXME: Split movemside and moverside into variants and prune
- ;; the ones that don't trig.
- ;; No stable test-case.
- 
- (define_peephole2 ; movemside (peephole casesi+39)
-   [(set (match_operand:SI 0 "register_operand" "")
- 	(match_operand:SI 1 "cris_bdap_biap_operand" ""))
-    (set (match_dup 0)
- 	(plus:SI (match_operand:SI 2 "cris_bdap_biap_operand" "")
- 		 (match_operand:SI 3 "cris_bdap_biap_operand" "")))
-    (set (match_operator 4 "cris_mem_op" [(match_dup 0)])
- 	(match_operand 5 "register_operand" ""))]
-   "(rtx_equal_p (operands[2], operands[0])
-     || rtx_equal_p (operands[3], operands[0]))
-    && cris_side_effect_mode_ok (PLUS, operands, 0,
- 				(REG_S_P (operands[1])
- 				 ? 1
- 				 : (rtx_equal_p (operands[2], operands[0])
- 				    ? 3 : 2)),
- 				(! REG_S_P (operands[1])
- 				   ? 1
- 				 : (rtx_equal_p (operands[2], operands[0])
- 				    ? 3 : 2)),
- 				-1, 5)"
-   [(parallel
-     [(set (match_dup 6) (match_dup 5))
-      (set (match_dup 0) (plus:SI (match_dup 7) (match_dup 8)))])]
- {
-   rtx otherop
-     = rtx_equal_p (operands[2], operands[0]) ? operands[3] : operands[2];
- 
-   /* Make sure we have canonical RTX so we match the insn pattern -
-      not a constant in the first operand.  We also require the order
-      (plus reg mem) to match the final pattern.  */
-   if (CRIS_CONSTANT_P (otherop) || MEM_P (otherop))
-     {
-       operands[7] = operands[1];
-       operands[8] = otherop;
-     }
-   else
-     {
-       operands[7] = otherop;
-       operands[8] = operands[1];
-     }
-   operands[6]
-     = replace_equiv_address (operands[4],
- 			     gen_rtx_PLUS (SImode,
- 					   operands[7], operands[8]));
- })
- 
- ;; Another spotted bad code:
- ;;   move rx,ry
- ;;   move [ry],ry
- ;; No stable test-case.
- 
- (define_peephole2 ; movei (peephole casesi+42)
-   [(set (match_operand:SI 0 "register_operand" "")
- 	(match_operand:SI 1 "register_operand" ""))
-    (set (match_operand 2 "register_operand" "")
- 	(match_operator 3 "cris_mem_op" [(match_dup 0)]))]
-   "REGNO (operands[0]) == REGNO (operands[2])
-    && (REGNO_REG_CLASS (REGNO (operands[0]))
-        == REGNO_REG_CLASS (REGNO (operands[1])))
-    && GET_MODE_SIZE (GET_MODE (operands[2])) <= UNITS_PER_WORD"
-   [(set (match_dup 2) (match_dup 4))]
-   "operands[4] = replace_equiv_address (operands[3], operands[1]);")
- 
- ;;   move.d [r10+16],r9
- ;;   and.d r12,r9
- ;; change to
- ;;   and.d [r10+16],r12,r9
- ;; With generalization of the operation, the size and the addressing mode.
- ;;  This seems to be the result of a quirk in register allocation
- ;; missing the three-operand cases when having different predicates.
- ;; Maybe that it matters that it is a commutative operation.
- ;;  This pattern helps that situation, but there's still the increased
- ;; register pressure.
- ;;  Note that adding the noncommutative variant did not show any matches
- ;; in ipps and cc1, so it's not here.
- ;; No stable test-case.
- 
- (define_peephole2 ; op3 (peephole casesi+44)
-   [(set (match_operand 0 "register_operand" "")
- 	(match_operator
- 	 6 "cris_mem_op"
- 	 [(plus:SI
- 	   (match_operand:SI 1 "cris_bdap_biap_operand" "")
- 	   (match_operand:SI 2 "cris_bdap_biap_operand" ""))]))
-    (set (match_dup 0)
- 	(match_operator
- 	 5 "cris_commutative_orth_op"
- 	 [(match_operand 3 "register_operand" "")
- 	  (match_operand 4 "register_operand" "")]))]
-   "(rtx_equal_p (operands[3], operands[0])
-     || rtx_equal_p (operands[4], operands[0]))
-    && ! rtx_equal_p (operands[3], operands[4])
-    && (REG_S_P (operands[1]) || REG_S_P (operands[2]))
-    && GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD"
-   [(set (match_dup 0) (match_op_dup 5 [(match_dup 7) (match_dup 6)]))]
-   "operands[7]
-      = rtx_equal_p (operands[3], operands[0]) ? operands[4] : operands[3];")
  
  ;; There seems to be no other way to make GCC (including 4.8/trunk at
  ;; r186932) optimally reload an instruction that looks like
--- 2666,2729 ----
     && (INTVAL (operands[2])
         & ((HOST_WIDE_INT) (HOST_WIDE_INT_M1U
  			   << (32 - INTVAL (operands[1]))))) == 0"
!   [(parallel
!     [(set (match_dup 0) (lshiftrt:SI (match_dup 0) (match_dup 1)))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 3) (and:HI (match_dup 3) (match_dup 4)))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
  {
    operands[3] = gen_rtx_REG (HImode, REGNO (operands[0]));
    operands[4] = GEN_INT (trunc_int_for_mode (INTVAL (operands[2]), HImode));
  })
  
! (define_peephole2 ; lsrandb
!   [(parallel
!     [(set (match_operand:SI 0 "register_operand")
! 	  (lshiftrt:SI (match_dup 0)
! 		       (match_operand:SI 1 "const_int_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 0)
! 	  (and:SI (match_dup 0) (match_operand 2 "const_int_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    "INTVAL (operands[2]) > 31
     && INTVAL (operands[2]) < 255
     && INTVAL (operands[1]) > 23"
!   [(parallel
!     [(set (match_dup 0) (lshiftrt:SI (match_dup 0) (match_dup 1)))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 3) (and:QI (match_dup 3) (match_dup 4)))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
  {
    operands[3] = gen_rtx_REG (QImode, REGNO (operands[0]));
    operands[4] = GEN_INT (trunc_int_for_mode (INTVAL (operands[2]), QImode));
  })
  
! (define_peephole2 ; lsrandw
!   [(parallel
!     [(set (match_operand:SI 0 "register_operand")
  	(lshiftrt:SI (match_dup 0)
! 		     (match_operand:SI 1 "const_int_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 0)
! 	(and:SI (match_dup 0) (match_operand 2 "const_int_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
    "INTVAL (operands[2]) > 31 && INTVAL (operands[2]) < 65535
     && INTVAL (operands[2]) != 255
     && INTVAL (operands[1]) > 15"
!   [(parallel
!     [(set (match_dup 0) (lshiftrt:SI (match_dup 0) (match_dup 1)))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 3) (and:HI (match_dup 3) (match_dup 4)))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
  {
    operands[3] = gen_rtx_REG (HImode, REGNO (operands[0]));
    operands[4] = GEN_INT (trunc_int_for_mode (INTVAL (operands[2]), HImode));
  })
  
  ;; There seems to be no other way to make GCC (including 4.8/trunk at
  ;; r186932) optimally reload an instruction that looks like
***************
*** 4978,4991 ****
  ;;   move.d reg_or_mem,reg_32
  ;;   and.d const_32__65535,reg_32
  ;; Fix it with these two peephole2's.
! ;; Testcases: gcc.dg/cris-peep2-andu1.c gcc.dg/cris-peep2-andu2.c
  
! (define_peephole2 ; andu (casesi+45)
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(match_operand:SI 1 "nonimmediate_operand" ""))
!    (set (match_operand:SI 2 "register_operand" "")
! 	(and:SI (match_dup 0)
! 		(match_operand:SI 3 "const_int_operand" "")))]
     ;; Since the size of the memory access could be made different here,
     ;; don't do this for a mem-volatile access.
    "REGNO (operands[2]) == REGNO (operands[0])
--- 2736,2753 ----
  ;;   move.d reg_or_mem,reg_32
  ;;   and.d const_32__65535,reg_32
  ;; Fix it with these two peephole2's.
! ;; Testcases: gcc.target/cris/peep2-andu1.c gcc.target/cris/peep2-andu2.c
  
! (define_peephole2 ; andu
!   [(parallel
!     [(set (match_operand:SI 0 "register_operand")
! 	  (match_operand:SI 1 "nonimmediate_operand"))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_operand:SI 2 "register_operand")
! 	  (and:SI (match_dup 0)
! 		  (match_operand:SI 3 "const_int_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
     ;; Since the size of the memory access could be made different here,
     ;; don't do this for a mem-volatile access.
    "REGNO (operands[2]) == REGNO (operands[0])
***************
*** 4994,5002 ****
     && !side_effects_p (operands[1])
     && (!REG_P (operands[1])
         || REGNO (operands[1]) <= CRIS_LAST_GENERAL_REGISTER)"
!   ;; FIXME: CC0 valid except for M (i.e. CC_NOT_NEGATIVE).
!   [(set (match_dup 0) (match_dup 4))
!    (set (match_dup 5) (match_dup 6))]
  {
    machine_mode zmode = INTVAL (operands[3]) <= 255 ? QImode : HImode;
    machine_mode amode
--- 2756,2767 ----
     && !side_effects_p (operands[1])
     && (!REG_P (operands[1])
         || REGNO (operands[1]) <= CRIS_LAST_GENERAL_REGISTER)"
!   [(parallel
!     [(set (match_dup 0) (match_dup 4))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 5) (match_dup 6))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
  {
    machine_mode zmode = INTVAL (operands[3]) <= 255 ? QImode : HImode;
    machine_mode amode
***************
*** 5015,5021 ****
  						? QImode : amode)));
  })
  
! ;; Since r186861, gcc.dg/cris-peep2-andu2.c trigs this pattern, with which
  ;; we fix up e.g.:
  ;;  movu.b 254,$r9.
  ;;  and.d $r10,$r9
--- 2780,2786 ----
  						? QImode : amode)));
  })
  
! ;; Since r186861, gcc.target/cris/peep2-andu2.c trigs this pattern, with which
  ;; we fix up e.g.:
  ;;  movu.b 254,$r9.
  ;;  and.d $r10,$r9
***************
*** 5023,5040 ****
  ;;  movu.b $r10,$r9
  ;;  andq -2,$r9.
  ;; Only do this for values fitting the quick immediate operand.
! (define_peephole2 ; andqu (casesi+46)
!   [(set (match_operand:SI 0 "register_operand")
! 	(match_operand:SI 1 "const_int_operand"))
!    (set (match_dup 0)
! 	(and:SI (match_dup 0) (match_operand:SI 2 "nonimmediate_operand")))]
     ;; Since the size of the memory access will be made different here,
     ;; don't do this for a volatile access or a post-incremented address.
    "satisfies_constraint_O (operands[1])
     && !side_effects_p (operands[2])
     && !reg_overlap_mentioned_p (operands[0], operands[2])"
!   [(set (match_dup 0) (match_dup 3))
!    (set (match_dup 0) (and:SI (match_dup 0) (match_dup 4)))]
  {
    machine_mode zmode = INTVAL (operands[1]) <= 255 ? QImode : HImode;
    rtx op1
--- 2788,2813 ----
  ;;  movu.b $r10,$r9
  ;;  andq -2,$r9.
  ;; Only do this for values fitting the quick immediate operand.
! (define_peephole2 ; andqu
!   [(parallel
!     [(set (match_operand:SI 0 "register_operand")
! 	  (match_operand:SI 1 "const_int_operand"))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 0)
! 	  (and:SI (match_dup 0) (match_operand:SI 2 "nonimmediate_operand")))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
     ;; Since the size of the memory access will be made different here,
     ;; don't do this for a volatile access or a post-incremented address.
    "satisfies_constraint_O (operands[1])
     && !side_effects_p (operands[2])
     && !reg_overlap_mentioned_p (operands[0], operands[2])"
!   [(parallel
!     [(set (match_dup 0) (match_dup 3))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])
!    (parallel
!     [(set (match_dup 0) (and:SI (match_dup 0) (match_dup 4)))
!      (clobber (reg:CC CRIS_CC0_REGNUM))])]
  {
    machine_mode zmode = INTVAL (operands[1]) <= 255 ? QImode : HImode;
    rtx op1
***************
*** 5044,5170 ****
    operands[3] = gen_rtx_ZERO_EXTEND (SImode, op1);
    operands[4] = GEN_INT (trunc_int_for_mode (INTVAL (operands[1]), QImode));
  })
- 
- ;; Try and avoid GOTPLT reads escaping a call: transform them into
- ;; PLT.  Curiously (but thankfully), peepholes for instructions
- ;; *without side-effects* that just feed a call (or call_value) are
- ;; not matched neither in a build or test-suite, so those patterns are
- ;; omitted.
- 
- ;; A "normal" move where we don't check the consumer.
- 
- (define_peephole2 ; gotplt-to-plt
-   [(set
-     (match_operand:SI 0 "register_operand" "")
-     (match_operator:SI
-      1 "cris_mem_op"
-      [(plus:SI
-        (reg:SI CRIS_GOT_REGNUM)
-        (const:SI
- 	(unspec:SI [(match_operand:SI 2 "cris_general_operand_or_symbol" "")]
- 		   CRIS_UNSPEC_PLTGOTREAD)))]))]
-   "flag_pic
-    && cris_valid_pic_const (XEXP (XEXP (operands[1], 0), 1), true)
-    && REGNO_REG_CLASS (REGNO (operands[0])) == REGNO_REG_CLASS (0)"
-   [(set (match_dup 0) (const:SI (unspec:SI [(match_dup 2)] CRIS_UNSPEC_PLT_GOTREL)))
-    (set (match_dup 0) (plus:SI (match_dup 0) (reg:SI CRIS_GOT_REGNUM)))]
-   "")
- 
- ;; And one set with a side-effect getting the PLTGOT offset.
- ;; First call and call_value variants.
- 
- (define_peephole2 ; gotplt-to-plt-side-call
-   [(parallel
-     [(set
-       (match_operand:SI 0 "register_operand" "")
-       (match_operator:SI
-        1 "cris_mem_op"
-        [(plus:SI
- 	 (reg:SI CRIS_GOT_REGNUM)
- 	 (const:SI
- 	  (unspec:SI [(match_operand:SI
- 		       2 "cris_general_operand_or_symbol" "")]
- 		     CRIS_UNSPEC_PLTGOTREAD)))]))
-      (set (match_operand:SI 3 "register_operand" "")
- 	  (plus:SI (reg:SI CRIS_GOT_REGNUM)
- 		   (const:SI
- 		    (unspec:SI [(match_dup 2)] CRIS_UNSPEC_PLTGOTREAD))))])
-   (parallel [(call (mem:QI (match_dup 0))
- 		    (match_operand 4 "" ""))
- 	      (clobber (reg:SI CRIS_SRP_REGNUM))])]
-   "flag_pic
-    && cris_valid_pic_const (XEXP (XEXP (operands[1], 0), 1), true)
-    && peep2_reg_dead_p (2, operands[0])"
-   [(parallel [(call (mem:QI (match_dup 1))
- 		    (match_dup 4))
- 	      (clobber (reg:SI CRIS_SRP_REGNUM))
- 	      (set (match_dup 3)
- 		   (plus:SI (reg:SI CRIS_GOT_REGNUM)
- 			    (const:SI
- 			     (unspec:SI [(match_dup 2)]
- 					CRIS_UNSPEC_PLTGOTREAD))))])]
-   "")
- 
- (define_peephole2 ; gotplt-to-plt-side-call-value
-   [(parallel
-     [(set
-       (match_operand:SI 0 "register_operand" "")
-       (match_operator:SI
-        1 "cris_mem_op"
-        [(plus:SI
- 	 (reg:SI CRIS_GOT_REGNUM)
- 	 (const:SI
- 	  (unspec:SI [(match_operand:SI
- 		       2 "cris_general_operand_or_symbol" "")]
- 		     CRIS_UNSPEC_PLTGOTREAD)))]))
-      (set (match_operand:SI 3 "register_operand" "")
- 	  (plus:SI (reg:SI CRIS_GOT_REGNUM)
- 		   (const:SI
- 		    (unspec:SI [(match_dup 2)] CRIS_UNSPEC_PLTGOTREAD))))])
-    (parallel [(set (match_operand 5 "" "")
- 		   (call (mem:QI (match_dup 0))
- 			 (match_operand 4 "" "")))
- 	      (clobber (reg:SI CRIS_SRP_REGNUM))])]
-   "flag_pic
-    && cris_valid_pic_const (XEXP (XEXP (operands[1], 0), 1), true)
-    && peep2_reg_dead_p (2, operands[0])"
-   [(parallel [(set (match_dup 5)
- 		   (call (mem:QI (match_dup 1))
- 			 (match_dup 4)))
- 	      (clobber (reg:SI CRIS_SRP_REGNUM))
- 	      (set (match_dup 3)
- 		   (plus:SI (reg:SI CRIS_GOT_REGNUM)
- 			    (const:SI
- 			     (unspec:SI [(match_dup 2)]
- 					CRIS_UNSPEC_PLTGOTREAD))))])]
-   "")
- 
- (define_peephole2 ; gotplt-to-plt-side
-   [(parallel
-     [(set
-       (match_operand:SI 0 "register_operand" "")
-       (match_operator:SI
-        1 "cris_mem_op"
-        [(plus:SI
- 	 (reg:SI CRIS_GOT_REGNUM)
- 	 (const:SI
- 	  (unspec:SI [(match_operand:SI
- 		       2 "cris_general_operand_or_symbol" "")]
- 		     CRIS_UNSPEC_PLTGOTREAD)))]))
-      (set (match_operand:SI 3 "register_operand" "")
- 	  (plus:SI (reg:SI CRIS_GOT_REGNUM)
- 		   (const:SI
- 		    (unspec:SI [(match_dup 2)] CRIS_UNSPEC_PLTGOTREAD))))])]
-   "flag_pic
-    && cris_valid_pic_const (XEXP (XEXP (operands[1], 0), 1), true)
-    && REGNO_REG_CLASS (REGNO (operands[0])) == REGNO_REG_CLASS (0)"
-   [(set (match_dup 3)
- 	(const:SI (unspec:SI [(match_dup 2)] CRIS_UNSPEC_PLTGOTREAD)))
-    (set (match_dup 3) (plus:SI (match_dup 3) (reg:SI CRIS_GOT_REGNUM)))
-    (set (match_dup 0)
- 	(const:SI (unspec:SI [(match_dup 2)] CRIS_UNSPEC_PLT_GOTREL)))
-    (set (match_dup 0) (plus:SI (match_dup 0) (reg:SI CRIS_GOT_REGNUM)))]
-   "")
  
  ;; Local variables:
  ;; mode:emacs-lisp
--- 2817,2822 ----
diff -Nrcpad gcc-10.3.0/gcc/config/cris/cris.opt gcc-11.1.0/gcc/config/cris/cris.opt
*** gcc-10.3.0/gcc/config/cris/cris.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cris/cris.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Options for the CRIS port of the compiler.
  
! ; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the CRIS port of the compiler.
  
! ; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
***************
*** 41,151 ****
  ; driver-like program that gets a mapping of I/O registers (all
  ; on the same page, including the TLB registers).
  mmul-bug-workaround
! Target Report Mask(MUL_BUG)
  Work around bug in multiplication instruction.
  
  ; TARGET_ETRAX4_ADD: Instruction-set additions from Etrax 4 and up.
  ; (Just "lz".)
  metrax4
! Target Report Mask(ETRAX4_ADD)
  Compile for ETRAX 4 (CRIS v3).
  
  ; See cris_handle_option.
  metrax100
! Target Report RejectNegative
  Compile for ETRAX 100 (CRIS v8).
  
  ; See cris_handle_option.
  mno-etrax100
! Target Report RejectNegative Undocumented
  
  mpdebug
! Target Report Mask(PDEBUG)
  Emit verbose debug information in assembly code.
  
  ; TARGET_CCINIT: Whether to use condition-codes generated by
  ; insns other than the immediately preceding compare/test insn.
  ; Used to check for errors in notice_update_cc.
  mcc-init
! Target Report Mask(CCINIT)
  Do not use condition codes from normal instructions.
  
  ; TARGET_SIDE_EFFECT_PREFIXES: Whether to use side-effect
  ; patterns.  Used to debug the [rx=ry+i] type patterns.
  mside-effects
! Target Report RejectNegative Mask(SIDE_EFFECT_PREFIXES) Undocumented
  
  mno-side-effects
! Target Report RejectNegative InverseMask(SIDE_EFFECT_PREFIXES)
  Do not emit addressing modes with side-effect assignment.
  
  ; TARGET_STACK_ALIGN: Whether to *keep* (not force) alignment of
  ; stack at 16 (or 32, depending on TARGET_ALIGN_BY_32) bits.
  mstack-align
! Target Report RejectNegative Mask(STACK_ALIGN) Undocumented
  
  mno-stack-align
! Target Report RejectNegative InverseMask(STACK_ALIGN)
  Do not tune stack alignment.
  
  ; TARGET_DATA_ALIGN: Whether to do alignment on individual
  ; modifiable objects.
  mdata-align
! Target Report RejectNegative Mask(DATA_ALIGN) Undocumented
  
  mno-data-align
! Target Report RejectNegative InverseMask(DATA_ALIGN)
  Do not tune writable data alignment.
  
  ; TARGET_CONST_ALIGN: Whether to do alignment on individual
  ; non-modifiable objects.
  mconst-align
! Target Report RejectNegative Mask(CONST_ALIGN) Undocumented
  
  mno-const-align
! Target Report RejectNegative InverseMask(CONST_ALIGN)
  Do not tune code and read-only data alignment.
  
  ; See cris_handle_option.
  m32-bit
! Target Report RejectNegative Undocumented
  
  ; See cris_handle_option.
  m32bit
! Target Report RejectNegative
  Align code and data to 32 bits.
  
  ; See cris_handle_option.
  m16-bit
! Target Report RejectNegative Undocumented
  
  ; See cris_handle_option.
  m16bit
! Target Report RejectNegative Undocumented
  
  ; See cris_handle_option.
  m8-bit
! Target Report RejectNegative Undocumented
  
  ; See cris_handle_option.
  m8bit
! Target Report RejectNegative
  Don't align items in code or data.
  
  ; TARGET_PROLOGUE_EPILOGUE: Whether or not to omit function
  ; prologue and epilogue.
  mprologue-epilogue
! Target Report RejectNegative Mask(PROLOGUE_EPILOGUE) Undocumented
  
  mno-prologue-epilogue
! Target Report RejectNegative InverseMask(PROLOGUE_EPILOGUE)
  Do not emit function prologue or epilogue.
  
  ; We have to handle this m-option here since we can't wash it
  ; off in both CC1_SPEC and CC1PLUS_SPEC.
  
  mbest-lib-options
! Target Report RejectNegative
  Use the most feature-enabling options allowed by other options.
  
  ; FIXME: The following comment relates to gcc before cris.opt.
--- 41,151 ----
  ; driver-like program that gets a mapping of I/O registers (all
  ; on the same page, including the TLB registers).
  mmul-bug-workaround
! Target Mask(MUL_BUG)
  Work around bug in multiplication instruction.
  
  ; TARGET_ETRAX4_ADD: Instruction-set additions from Etrax 4 and up.
  ; (Just "lz".)
  metrax4
! Target Mask(ETRAX4_ADD)
  Compile for ETRAX 4 (CRIS v3).
  
  ; See cris_handle_option.
  metrax100
! Target RejectNegative
  Compile for ETRAX 100 (CRIS v8).
  
  ; See cris_handle_option.
  mno-etrax100
! Target RejectNegative Undocumented
  
  mpdebug
! Target Mask(PDEBUG)
  Emit verbose debug information in assembly code.
  
  ; TARGET_CCINIT: Whether to use condition-codes generated by
  ; insns other than the immediately preceding compare/test insn.
  ; Used to check for errors in notice_update_cc.
  mcc-init
! Target Mask(CCINIT)
  Do not use condition codes from normal instructions.
  
  ; TARGET_SIDE_EFFECT_PREFIXES: Whether to use side-effect
  ; patterns.  Used to debug the [rx=ry+i] type patterns.
  mside-effects
! Target RejectNegative Mask(SIDE_EFFECT_PREFIXES) Undocumented
  
  mno-side-effects
! Target RejectNegative InverseMask(SIDE_EFFECT_PREFIXES)
  Do not emit addressing modes with side-effect assignment.
  
  ; TARGET_STACK_ALIGN: Whether to *keep* (not force) alignment of
  ; stack at 16 (or 32, depending on TARGET_ALIGN_BY_32) bits.
  mstack-align
! Target RejectNegative Mask(STACK_ALIGN) Undocumented
  
  mno-stack-align
! Target RejectNegative InverseMask(STACK_ALIGN)
  Do not tune stack alignment.
  
  ; TARGET_DATA_ALIGN: Whether to do alignment on individual
  ; modifiable objects.
  mdata-align
! Target RejectNegative Mask(DATA_ALIGN) Undocumented
  
  mno-data-align
! Target RejectNegative InverseMask(DATA_ALIGN)
  Do not tune writable data alignment.
  
  ; TARGET_CONST_ALIGN: Whether to do alignment on individual
  ; non-modifiable objects.
  mconst-align
! Target RejectNegative Mask(CONST_ALIGN) Undocumented
  
  mno-const-align
! Target RejectNegative InverseMask(CONST_ALIGN)
  Do not tune code and read-only data alignment.
  
  ; See cris_handle_option.
  m32-bit
! Target RejectNegative Undocumented
  
  ; See cris_handle_option.
  m32bit
! Target RejectNegative
  Align code and data to 32 bits.
  
  ; See cris_handle_option.
  m16-bit
! Target RejectNegative Undocumented
  
  ; See cris_handle_option.
  m16bit
! Target RejectNegative Undocumented
  
  ; See cris_handle_option.
  m8-bit
! Target RejectNegative Undocumented
  
  ; See cris_handle_option.
  m8bit
! Target RejectNegative
  Don't align items in code or data.
  
  ; TARGET_PROLOGUE_EPILOGUE: Whether or not to omit function
  ; prologue and epilogue.
  mprologue-epilogue
! Target RejectNegative Mask(PROLOGUE_EPILOGUE) Undocumented
  
  mno-prologue-epilogue
! Target RejectNegative InverseMask(PROLOGUE_EPILOGUE)
  Do not emit function prologue or epilogue.
  
  ; We have to handle this m-option here since we can't wash it
  ; off in both CC1_SPEC and CC1PLUS_SPEC.
  
  mbest-lib-options
! Target RejectNegative
  Use the most feature-enabling options allowed by other options.
  
  ; FIXME: The following comment relates to gcc before cris.opt.
*************** Use the most feature-enabling options al
*** 154,190 ****
  ; gcc.c to forget it, if there's a "later" -mbest-lib-options.
  ; Kludgy, but needed for some multilibbed files.
  moverride-best-lib-options
! Target Report RejectNegative
  Override -mbest-lib-options.
  
  mcpu=
! Target Report RejectNegative Joined Undocumented Var(cris_cpu_str)
  
  march=
! Target Report RejectNegative Joined Var(cris_cpu_str)
  -march=ARCH	Generate code for the specified chip or CPU version.
  
  mtune=
! Target Report RejectNegative Joined Var(cris_tune_str)
  -mtune=ARCH	Tune alignment for the specified chip or CPU version.
  
  mmax-stackframe=
! Target Report RejectNegative Joined Var(cris_max_stackframe_str)
  -mmax-stackframe=SIZE	Warn when a stackframe is larger than the specified size.
  
  max-stackframe=
! Target Report RejectNegative Joined Undocumented Var(cris_max_stackframe_str)
  
  mtrap-using-break8
! Target Report Var(cris_trap_using_break8) Init(2)
  Emit traps as \"break 8\", default for CRIS v3 and up.  If disabled, calls to abort() are used.
  
  mtrap-unaligned-atomic
! Target Report Var(cris_trap_unaligned_atomic) Init(2)
  Emit checks causing \"break 8\" instructions to execute when applying atomic builtins on misaligned memory.
  
  munaligned-atomic-may-use-library
! Target Report Var(cris_atomics_calling_libfunc) Init(2)
  Handle atomic builtins that may be applied to unaligned data by calling library functions. Overrides -mtrap-unaligned-atomic.
  
  ; TARGET_SVINTO: Currently this just affects alignment.  FIXME:
--- 154,190 ----
  ; gcc.c to forget it, if there's a "later" -mbest-lib-options.
  ; Kludgy, but needed for some multilibbed files.
  moverride-best-lib-options
! Target RejectNegative
  Override -mbest-lib-options.
  
  mcpu=
! Target RejectNegative Joined Undocumented Var(cris_cpu_str)
  
  march=
! Target RejectNegative Joined Var(cris_cpu_str)
  -march=ARCH	Generate code for the specified chip or CPU version.
  
  mtune=
! Target RejectNegative Joined Var(cris_tune_str)
  -mtune=ARCH	Tune alignment for the specified chip or CPU version.
  
  mmax-stackframe=
! Target RejectNegative Joined Var(cris_max_stackframe_str)
  -mmax-stackframe=SIZE	Warn when a stackframe is larger than the specified size.
  
  max-stackframe=
! Target RejectNegative Joined Undocumented Var(cris_max_stackframe_str)
  
  mtrap-using-break8
! Target Var(cris_trap_using_break8) Init(2)
  Emit traps as \"break 8\", default for CRIS v3 and up.  If disabled, calls to abort() are used.
  
  mtrap-unaligned-atomic
! Target Var(cris_trap_unaligned_atomic) Init(2)
  Emit checks causing \"break 8\" instructions to execute when applying atomic builtins on misaligned memory.
  
  munaligned-atomic-may-use-library
! Target Var(cris_atomics_calling_libfunc) Init(2)
  Handle atomic builtins that may be applied to unaligned data by calling library functions. Overrides -mtrap-unaligned-atomic.
  
  ; TARGET_SVINTO: Currently this just affects alignment.  FIXME:
*************** Mask(SVINTO)
*** 196,202 ****
  ; TARGET_ALIGN_BY_32: Say that all alignment specifications say
  ; to prefer 32 rather than 16 bits.
  Mask(ALIGN_BY_32)
- 
- ; TARGET_AVOID_GOTPLT is referred to in the .c and the .md so we
- ; need to allocate the flag and macros here.
- Mask(AVOID_GOTPLT)
--- 196,198 ----
diff -Nrcpad gcc-10.3.0/gcc/config/cris/elf.opt gcc-11.1.0/gcc/config/cris/elf.opt
*** gcc-10.3.0/gcc/config/cris/elf.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cris/elf.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; ELF-specific options for the CRIS port of the compiler.
  
! ; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; ELF-specific options for the CRIS port of the compiler.
  
! ; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
***************
*** 19,25 ****
  ; <http://www.gnu.org/licenses/>.
  
  melf
! Target Report RejectNegative Undocumented
  
  sim
  Driver JoinedOrMissing
--- 19,25 ----
  ; <http://www.gnu.org/licenses/>.
  
  melf
! Target RejectNegative Undocumented
  
  sim
  Driver JoinedOrMissing
diff -Nrcpad gcc-10.3.0/gcc/config/cris/linux.h gcc-11.1.0/gcc/config/cris/linux.h
*** gcc-10.3.0/gcc/config/cris/linux.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cris/linux.h	Thu Jan  1 00:00:00 1970
***************
*** 1,150 ****
- /* Definitions for GCC.  Part of the machine description for CRIS.
-    Copyright (C) 2001-2020 Free Software Foundation, Inc.
-    Contributed by Axis Communications.  Written by Hans-Peter Nilsson.
- 
- 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/>.  */
- 
- 
- /* After the first "Node:" comment comes all preprocessor directives and
-    attached declarations described in the info files, the "Using and
-    Porting GCC" manual (uapgcc), in the same order as found in the "Target
-    macros" section in the gcc-2.9x CVS edition of 2000-03-17.  FIXME: Not
-    really, but needs an update anyway.
- 
-    There is no generic copy-of-uapgcc comment, you'll have to see uapgcc
-    for that.  If applicable, there is a CRIS-specific comment.  The order
-    of macro definitions follow the order in the manual.  Every section in
-    the manual (node in the info pages) has an introductory `Node:
-    <subchapter>' comment.  If no macros are defined for a section, only
-    the section-comment is present.  */
- 
- /* This file defines the macros for cris-axis-linux-gnu that are not
-    covered by cris.h, elfos.h and (config/)linux.h.  */
- 
- /* Make sure we have a valid TARGET_CPU_DEFAULT, so we can assume it
-    and take shortcuts below.  */
- #ifndef TARGET_CPU_DEFAULT
- #error "TARGET_CPU_DEFAULT not defined"
- #elif (TARGET_CPU_DEFAULT+0) != 10 && (TARGET_CPU_DEFAULT+0) != 32
- #error "TARGET_CPU_DEFAULT must be 10 or 32, or this file be updated"
- #endif
- 
- /* Node: Instruction Output */
- 
- #undef USER_LABEL_PREFIX
- #define USER_LABEL_PREFIX ""
- 
- /* Node: Driver */
- /* These macros are CRIS-specific, but used in target driver macros.  */
- 
- #undef CRIS_CPP_SUBTARGET_SPEC
- #if TARGET_CPU_DEFAULT == 32
- # define CRIS_CPP_SUBTARGET_SPEC \
-   "%{pthread:-D_REENTRANT}\
-    %{!march=*:%{!mcpu=*:-D__arch_v32 -D__CRIS_arch_version=32}}"
- #else
- # define CRIS_CPP_SUBTARGET_SPEC \
-   "%{pthread:-D_REENTRANT}\
-    %{!march=*:%{!mcpu=*:-D__arch_v10 -D__CRIS_arch_version=10}}"
- #endif
- 
- #undef CRIS_CC1_SUBTARGET_SPEC
- #if TARGET_CPU_DEFAULT == 32
- # define CRIS_CC1_SUBTARGET_SPEC \
-  "%{!march=*:%{!mcpu=*:-march=v32}}"
- #define CRIS_SUBTARGET_DEFAULT_ARCH MASK_AVOID_GOTPLT
- #else
- # define CRIS_CC1_SUBTARGET_SPEC \
-  "%{!march=*:%{!mcpu=*:-march=v10}}"
- #define CRIS_SUBTARGET_DEFAULT_ARCH 0
- #endif
- 
- #undef CRIS_ASM_SUBTARGET_SPEC
- #if TARGET_CPU_DEFAULT == 32
- # define CRIS_ASM_SUBTARGET_SPEC \
-  "--em=criself \
-   %{!march=*:%{!mcpu=*:--march=v32}} \
-   %{!fleading-underscore:--no-underscore}\
-   %{" FPIE_OR_FPIC_SPEC ": --pic}"
- #else
- # define CRIS_ASM_SUBTARGET_SPEC \
-  "--em=criself \
-   %{!march=*:%{!mcpu=*:--march=v10}} \
-   %{!fleading-underscore:--no-underscore}\
-   %{" FPIE_OR_FPIC_SPEC ": --pic}"
- #endif
- 
- /* Previously controlled by target_flags.  */
- #undef TARGET_LINUX
- #define TARGET_LINUX 1
- 
- #undef CRIS_SUBTARGET_DEFAULT
- #define CRIS_SUBTARGET_DEFAULT			\
-   (MASK_SVINTO					\
-    + MASK_ETRAX4_ADD				\
-    + MASK_ALIGN_BY_32				\
-    + CRIS_SUBTARGET_DEFAULT_ARCH)
- 
- #undef CRIS_DEFAULT_CPU_VERSION
- #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG
- 
- #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
- 
- #undef CRIS_LINK_SUBTARGET_SPEC
- #define CRIS_LINK_SUBTARGET_SPEC \
-  "-mcrislinux\
-   %{shared} %{static}\
-   %{symbolic:-Bdynamic} %{static:-Bstatic}\
-   %{!shared:%{!static:\
-               %{rdynamic:-export-dynamic}\
-               -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}\
-   %{!r:%{O2|O3: --gc-sections}}"
- 
- 
- /* Node: Run-time Target */
- 
- /* For the cris-*-linux* subtarget.  */
- #undef TARGET_OS_CPP_BUILTINS
- #define TARGET_OS_CPP_BUILTINS()		\
-   do						\
-     {						\
-       GNU_USER_TARGET_OS_CPP_BUILTINS();	\
-       if (flag_leading_underscore <= 0)		\
- 	builtin_define ("__NO_UNDERSCORES__");	\
-     }						\
-   while (0)
- 
- /* Node: Type Layout */
-      
- #undef SIZE_TYPE
- #define SIZE_TYPE "unsigned int"
- 
- #undef PTRDIFF_TYPE
- #define PTRDIFF_TYPE "int"
- 
- /* Node: Sections */
- 
- /* GNU/Linux has crti and crtn and does not need the
-    CRT_CALL_STATIC_FUNCTION trick in cris.h.  */
- #undef CRT_CALL_STATIC_FUNCTION
- 
- /*
-  * Local variables:
-  * eval: (c-set-style "gnu")
-  * indent-tabs-mode: t
-  * End:
-  */
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/config/cris/linux.opt gcc-11.1.0/gcc/config/cris/linux.opt
*** gcc-10.3.0/gcc/config/cris/linux.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cris/linux.opt	Thu Jan  1 00:00:00 1970
***************
*** 1,33 ****
- ; GNU/Linux-specific options for the CRIS port of the compiler.
- 
- ; Copyright (C) 2005-2020 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/>.
- 
- ; Provide a legacy -mlinux option.
- mlinux
- Target Report RejectNegative Undocumented
- 
- mno-gotplt
- Target Report RejectNegative Mask(AVOID_GOTPLT)
- Together with -fpic and -fPIC, do not use GOTPLT references.
- 
- ; There's a small added setup cost with using GOTPLT references
- ; for the first (resolving) call, but should in total be a win
- ; both in code-size and execution-time.
- mgotplt
- Target Report RejectNegative InverseMask(AVOID_GOTPLT) Undocumented
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/config/cris/predicates.md gcc-11.1.0/gcc/config/cris/predicates.md
*** gcc-10.3.0/gcc/config/cris/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cris/predicates.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Operand and operator predicates for the GCC CRIS port.
! ;; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Operand and operator predicates for the GCC CRIS port.
! ;; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  ;;
***************
*** 51,57 ****
  
  (define_predicate "cris_load_multiple_op"
    (and (match_code "parallel")
!        (match_test "cris_movem_load_rest_p (op, 0)")))
  
  (define_predicate "cris_store_multiple_op"
    (and (match_code "parallel")
--- 51,57 ----
  
  (define_predicate "cris_load_multiple_op"
    (and (match_code "parallel")
!        (match_test "cris_movem_load_rest_p (op)")))
  
  (define_predicate "cris_store_multiple_op"
    (and (match_code "parallel")
***************
*** 61,69 ****
  ;; Operand helper predicates.
  
  (define_predicate "cris_bdap_const_operand"
!   (and (match_code "label_ref, symbol_ref, const_int, const_double, const")
!        (ior (not (match_test "flag_pic"))
! 	    (match_test "cris_valid_pic_const (op, true)"))))
  
  (define_predicate "cris_simple_address_operand"
    (ior (match_operand:SI 0 "register_operand")
--- 61,67 ----
  ;; Operand helper predicates.
  
  (define_predicate "cris_bdap_const_operand"
!   (match_operand 0 "immediate_operand"))
  
  (define_predicate "cris_simple_address_operand"
    (ior (match_operand:SI 0 "register_operand")
***************
*** 132,190 ****
  (define_predicate "cris_bdap_biap_operand"
    (ior (match_operand 0 "cris_bdap_operand")
         (match_operand 0 "cris_biap_mult_operand")))
- 
- ;; Since with -fPIC, not all symbols are valid PIC symbols or indeed
- ;; general_operands, we have to have a predicate that matches it for the
- ;; "movsi" expander.
- ;; FIXME: Can s/special_// when PR 20413 is fixed.
- 
- (define_special_predicate "cris_general_operand_or_symbol"
-   (ior (match_operand 0 "general_operand")
-        (and (match_code "const, symbol_ref, label_ref")
-        	    ; The following test is actually just an assertion.
- 	    (match_test "cris_symbol_type_of (op) != cris_no_symbol"))))
- 
- ;; A predicate for the anon movsi expansion, one that fits a PCREL
- ;; operand as well as general_operand.
- 
- (define_special_predicate "cris_general_operand_or_pic_source"
-   (ior (match_operand 0 "general_operand")
-        (and (match_test "flag_pic")
- 	    (match_test "cris_valid_pic_const (op, false)"))))
- 
- ;; Since a PLT symbol is not a general_operand, we have to have a
- ;; predicate that matches it when we need it.  We use this in the expanded
- ;; "call" and "call_value" anonymous patterns.
- 
- (define_predicate "cris_nonmemory_operand_or_callable_symbol"
-   (ior (match_operand 0 "nonmemory_operand")
-        (and (match_code "const")
- 	    (and
- 	     (match_test "GET_CODE (XEXP (op, 0)) == UNSPEC")
- 	     (ior
- 	      (match_test "XINT (XEXP (op, 0), 1) == CRIS_UNSPEC_PLT_PCREL")
- 	      (match_test "XINT (XEXP (op, 0), 1) == CRIS_UNSPEC_PCREL"))))))
- 
- ;; This matches a (MEM (general_operand)) or
- ;; (MEM (cris_general_operand_or_symbol)).  The second one isn't a valid
- ;; memory_operand, so we need this predicate to recognize call
- ;; destinations before we change them to a PLT operand (by wrapping in
- ;; UNSPEC CRIS_UNSPEC_PLT).
- 
- (define_predicate "cris_mem_call_operand"
-   (and (match_code "mem")
-        (ior (match_operand 0 "memory_operand")
- 	    (match_test "cris_general_operand_or_symbol (XEXP (op, 0),
- 							 Pmode)"))))
- 
- ;; A marker for the call-insn: (const_int 0) for a call to a
- ;; hidden or static function and non-pic and
- ;; pic_offset_table_rtx for a call that *might* go through the
- ;; PLT.
- 
- (define_predicate "cris_call_type_marker"
-   (ior (and (match_operand 0 "const_int_operand")
- 	    (match_test "op == const0_rtx"))
-        (and (and (match_operand 0 "register_operand")
- 		 (match_test "op == pic_offset_table_rtx"))
- 	    (match_test "flag_pic != 0"))))
--- 130,132 ----
diff -Nrcpad gcc-10.3.0/gcc/config/cris/sync.md gcc-11.1.0/gcc/config/cris/sync.md
*** gcc-10.3.0/gcc/config/cris/sync.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cris/sync.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; GCC machine description for CRIS atomic memory sequences.
! ;; Copyright (C) 2012-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; GCC machine description for CRIS atomic memory sequences.
! ;; Copyright (C) 2012-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 22,38 ****
  ;;
  ;; - Plain old CRIS v0 (..v8)
  ;; - CRIS v10 (as used in ETRAX 100 LX)
- ;; - CRIS v32 (as used in ETRAX FS)
  ;;
! ;; The last two alternatives are similar, of LL/SC type.  They may
  ;; fail for other reasons; an exception, a cache miss or a bus request
! ;; from other parts of the system.  The difference between them is
! ;; just in what condition-codes are used to track LL and success or
! ;; failure for the store.  See the chapter on integral read-write
  ;; operations, chapter 1.13 in "ETRAX 100LX Programmers Manual",
! ;; <http://www.axis.com/files/tech_notes/etrax_100lx_prog_man-050519.pdf>
! ;; and chapter 2.1 in "ETRAX FS Designer's reference",
! ;; <http://www.axis.com/files/manuals/etrax_fs_des_ref-070821.pdf>.
  ;; Note that the datum being stored has to be contained fully within a
  ;; cache-line to be integral.  A failure to store the data integrally
  ;; will be flagged, but the store may still have happened in part,
--- 22,33 ----
  ;;
  ;; - Plain old CRIS v0 (..v8)
  ;; - CRIS v10 (as used in ETRAX 100 LX)
  ;;
! ;; The second alternative is of LL/SC type.  It may
  ;; fail for other reasons; an exception, a cache miss or a bus request
! ;; from other parts of the system.  See the chapter on integral read-write
  ;; operations, chapter 1.13 in "ETRAX 100LX Programmers Manual",
! ;; <http://www.axis.com/files/tech_notes/etrax_100lx_prog_man-050519.pdf>.
  ;; Note that the datum being stored has to be contained fully within a
  ;; cache-line to be integral.  A failure to store the data integrally
  ;; will be flagged, but the store may still have happened in part,
***************
*** 128,151 ****
  	 (match_operand:BWD 2 "<atomic_op_op_pred>" "<atomic_op_op_cnstr>")))
     (set (match_operand:BWD 0 "register_operand" "=&r")
  	(match_dup 1))
!    (clobber (match_scratch:SI 3 "=&r"))]
    "<MODE>mode == QImode || !TARGET_ATOMICS_MAY_CALL_LIBFUNCS"
  {
    /* Can't be too sure; better ICE if this happens.  */
!   gcc_assert (!reg_overlap_mentioned_p (operands[2], operands[1]));
  
!   if (TARGET_V32)
!     return
!       "clearf p\n"
!       ".Lsync.%=:\;"
!       "move<m> %1,%0\;"
!       "move.d %0,%3\;"
!       "<atomic_op_mnem_pre_op2>,%3\;<atomic_op_mnem_post_op3>"
!       "ax\;"
!       "move<m> %3,%1\;"
!       "bcs .Lsync.%=\;"
!       "clearf p";
!   else if (cris_cpu_version == 10)
      return
        "clearf\n"
        ".Lsync.%=:\;"
--- 123,140 ----
  	 (match_operand:BWD 2 "<atomic_op_op_pred>" "<atomic_op_op_cnstr>")))
     (set (match_operand:BWD 0 "register_operand" "=&r")
  	(match_dup 1))
!    (clobber (match_scratch:SI 3 "=&r"))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    "<MODE>mode == QImode || !TARGET_ATOMICS_MAY_CALL_LIBFUNCS"
  {
    /* Can't be too sure; better ICE if this happens.  */
!   gcc_assert (!reg_overlap_mentioned_p (operands[0], operands[1])
! 	      && !reg_overlap_mentioned_p (operands[0], operands[2])
! 	      && !reg_overlap_mentioned_p (operands[0], operands[3])
! 	      && !reg_overlap_mentioned_p (operands[1], operands[3])
! 	      && !reg_overlap_mentioned_p (operands[2], operands[3]));
  
!   if (cris_cpu_version == 10)
      return
        "clearf\n"
        ".Lsync.%=:\;"
***************
*** 242,264 ****
  	 [(match_dup 2)
  	  (match_dup 3)
  	  (match_operand:BWD 4 "register_operand" "r")]
! 	 CRIS_UNSPEC_ATOMIC_SWAP_MEM))]
    "<MODE>mode == QImode || !TARGET_ATOMICS_MAY_CALL_LIBFUNCS"
  {
!   if (TARGET_V32)
!     return
!       "\n.Lsync.repeat.%=:\;"
!       "clearf p\;"
!       "move<m> %2,%1\;"
!       "cmp<qm3> %3,%1\;"
!       "bne .Lsync.after.%=\;"
!       "ax\;"
! 
!       "move<m> %4,%2\;"
!       "bcs .Lsync.repeat.%=\n"
!       ".Lsync.after.%=:\;"
!       "seq %0";
!   else if (cris_cpu_version == 10)
      return
        "\n.Lsync.repeat.%=:\;"
        "clearf\;"
--- 231,241 ----
  	 [(match_dup 2)
  	  (match_dup 3)
  	  (match_operand:BWD 4 "register_operand" "r")]
! 	 CRIS_UNSPEC_ATOMIC_SWAP_MEM))
!    (clobber (reg:CC CRIS_CC0_REGNUM))]
    "<MODE>mode == QImode || !TARGET_ATOMICS_MAY_CALL_LIBFUNCS"
  {
!   if (cris_cpu_version == 10)
      return
        "\n.Lsync.repeat.%=:\;"
        "clearf\;"
diff -Nrcpad gcc-10.3.0/gcc/config/cris/t-cris gcc-11.1.0/gcc/config/cris/t-cris
*** gcc-10.3.0/gcc/config/cris/t-cris	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cris/t-cris	Tue Apr 27 10:00:13 2021
***************
*** 3,9 ****
  #
  # The Makefile fragment to include when compiling gcc et al for CRIS.
  #
! # Copyright (C) 2001-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 3,9 ----
  #
  # The Makefile fragment to include when compiling gcc et al for CRIS.
  #
! # Copyright (C) 2001-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
***************
*** 25,29 ****
  # section "Target Fragment" in the gcc info-files (or the paper copy) of
  # "Using and Porting GCC"
  
! $(out_object_file): gt-cris.h
! gt-cris.h : s-gtype ; @true
--- 25,28 ----
  # section "Target Fragment" in the gcc info-files (or the paper copy) of
  # "Using and Porting GCC"
  
! PASSES_EXTRA += $(srcdir)/config/cris/cris-passes.def
diff -Nrcpad gcc-10.3.0/gcc/config/cris/t-elfmulti gcc-11.1.0/gcc/config/cris/t-elfmulti
*** gcc-10.3.0/gcc/config/cris/t-elfmulti	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cris/t-elfmulti	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2001-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2001-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
***************
*** 16,23 ****
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.
  
! MULTILIB_OPTIONS = march=v8/march=v10/march=v32
! MULTILIB_DIRNAMES = v8 v10 v32
  MULTILIB_MATCHES = \
  		march?v8=mcpu?v8 \
  		march?v10=mcpu?etrax100lx \
--- 16,23 ----
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.
  
! MULTILIB_OPTIONS = march=v8/march=v10
! MULTILIB_DIRNAMES = v8 v10
  MULTILIB_MATCHES = \
  		march?v8=mcpu?v8 \
  		march?v10=mcpu?etrax100lx \
*************** MULTILIB_MATCHES = \
*** 26,31 ****
  		march?v10=march?ng \
  		march?v10=march?v11 \
  		march?v10=mcpu?v11 \
! 		march?v10=mcpu?v10 \
! 		march?v32=mcpu?v32
  MULTILIB_EXTRA_OPTS = mbest-lib-options
--- 26,30 ----
  		march?v10=march?ng \
  		march?v10=march?v11 \
  		march?v10=mcpu?v11 \
! 		march?v10=mcpu?v10
  MULTILIB_EXTRA_OPTS = mbest-lib-options
diff -Nrcpad gcc-10.3.0/gcc/config/cris/t-linux gcc-11.1.0/gcc/config/cris/t-linux
*** gcc-10.3.0/gcc/config/cris/t-linux	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/cris/t-linux	Thu Jan  1 00:00:00 1970
***************
*** 1,5 ****
- # We *know* we have a limits.h in the glibc library, with extra
- # definitions needed for e.g. libgfortran.
- ifneq ($(inhibit_libc),true)
- LIMITS_H_TEST = :
- endif
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/config/csky/constraints.md gcc-11.1.0/gcc/config/csky/constraints.md
*** gcc-10.3.0/gcc/config/csky/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Constraints for C-SKY.
! ;; Copyright (C) 2018-2020 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constraints for C-SKY.
! ;; Copyright (C) 2018-2021 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky-elf.h gcc-11.1.0/gcc/config/csky/csky-elf.h
*** gcc-10.3.0/gcc/config/csky/csky-elf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky-elf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Declarations for bare-metal C-SKY targets.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* Declarations for bare-metal C-SKY targets.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
***************
*** 47,52 ****
--- 47,54 ----
    %{mcpu=*:-mcpu=%*}		\
    %{march=*:-march=%*}		\
    %{mhard-float:-mhard-float}	\
+   %{mfloat-abi=softfp:-mhard-float} \
+   %{mfloat-abi=hard:-mhard-float}   \
    %{melrw:-melrw}		\
    %{mno-elrw:-mno-elrw}		\
    %{mistack:-mistack}		\
***************
*** 68,75 ****
   %{EL:-EL} -X"
  
  #undef	LIB_SPEC
! #define LIB_SPEC \
!   "%{pthread:-lpthread} -lc %{mccrt:-lcc-rt}"
  /* FIXME add this to LIB_SPEC when need */
  /*   %{!shared:%{profile:-lc_p}%{!profile:-lc}}" */
  
--- 70,83 ----
   %{EL:-EL} -X"
  
  #undef	LIB_SPEC
! #define LIB_SPEC "\
! %{pthread:-lpthread} \
! --start-group \
! -lc \
! %{msim:-lsemi}%{!msim:-lnosys} \
! --end-group \
! %{mccrt:-lcc-rt} \
! "
  /* FIXME add this to LIB_SPEC when need */
  /*   %{!shared:%{profile:-lc_p}%{!profile:-lc}}" */
  
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky-linux-elf.h gcc-11.1.0/gcc/config/csky/csky-linux-elf.h
*** gcc-10.3.0/gcc/config/csky/csky-linux-elf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky-linux-elf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Declarations for C-SKY targets running Linux.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* Declarations for C-SKY targets running Linux.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
***************
*** 47,52 ****
--- 47,54 ----
    %{mcpu=*:-mcpu=%*}		\
    %{march=*:-march=%*}		\
    %{mhard-float:-mhard-float}	\
+   %{mfloat-abi=softfp:-mhard-float} \
+   %{mfloat-abi=hard:-mhard-float}   \
    %{melrw:-melrw}		\
    %{mno-elrw:-mno-elrw}		\
    %{mistack:-mistack}		\
***************
*** 61,67 ****
    %{mvdsp:-mvdsp}		\
    "
  
! #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-cskyv2%{mhard-float:-hf}%{mbig-endian:-be}.so.1"
  
  #define LINUX_TARGET_LINK_SPEC	"%{h*} %{version:-v}		\
     %{b}								\
--- 63,69 ----
    %{mvdsp:-mvdsp}		\
    "
  
! #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-cskyv2%{mfloat-abi=hard:-hf}%{mbig-endian:-be}.so.1"
  
  #define LINUX_TARGET_LINK_SPEC	"%{h*} %{version:-v}		\
     %{b}								\
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky-protos.h gcc-11.1.0/gcc/config/csky/csky-protos.h
*** gcc-10.3.0/gcc/config/csky/csky-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Prototype declarations for the C-SKY back end.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* Prototype declarations for the C-SKY back end.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
*************** extern int csky_compute_pushpop_length (
*** 68,71 ****
--- 68,73 ----
  
  extern int csky_default_branch_cost (bool, bool);
  extern bool csky_default_logical_op_non_short_circuit (void);
+ 
+ extern void csky_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree);
  #endif /* GCC_CSKY_PROTOS_H */
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky.c gcc-11.1.0/gcc/config/csky/csky.c
*** gcc-10.3.0/gcc/config/csky/csky.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* GCC backend functions for C-SKY targets.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* GCC backend functions for C-SKY targets.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
*************** csky_cpu_cpp_builtins (cpp_reader *pfile
*** 328,333 ****
--- 328,343 ----
      {
        builtin_define ("__csky_hard_float__");
        builtin_define ("__CSKY_HARD_FLOAT__");
+       if (TARGET_HARD_FLOAT_ABI)
+ 	{
+ 	  builtin_define ("__csky_hard_float_abi__");
+ 	  builtin_define ("__CSKY_HARD_FLOAT_ABI__");
+ 	}
+       if (TARGET_SINGLE_FPU)
+ 	{
+ 	  builtin_define ("__csky_hard_float_fpu_sf__");
+ 	  builtin_define ("__CSKY_HARD_FLOAT_FPU_SF__");
+ 	}
      }
    else
      {
*************** static rtx
*** 1790,1798 ****
  csky_function_arg (cumulative_args_t pcum_v, const function_arg_info &arg)
  {
    CUMULATIVE_ARGS *pcum = get_cumulative_args (pcum_v);
  
!   if (*pcum < CSKY_NPARM_REGS)
!     return gen_rtx_REG (arg.mode, CSKY_FIRST_PARM_REGNUM + *pcum);
  
    return NULL_RTX;
  }
--- 1800,1821 ----
  csky_function_arg (cumulative_args_t pcum_v, const function_arg_info &arg)
  {
    CUMULATIVE_ARGS *pcum = get_cumulative_args (pcum_v);
+   int reg = pcum->reg;
+   machine_mode mode = arg.mode;
  
!   if (FUNCTION_VARG_MODE_P(mode)
!       && !pcum->is_stdarg)
!     {
!       reg = pcum->freg;
! 
!       if (reg < CSKY_NPARM_FREGS)
! 	return gen_rtx_REG (mode, CSKY_FIRST_VFP_REGNUM + reg);
!       else
! 	return NULL_RTX;
!     }
! 
!   if (reg < CSKY_NPARM_REGS)
!     return gen_rtx_REG (mode, CSKY_FIRST_PARM_REGNUM + reg);
  
    return NULL_RTX;
  }
*************** csky_function_arg (cumulative_args_t pcu
*** 1802,1808 ****
     MODE and TYPE.  */
  
  static int
! csky_num_arg_regs (machine_mode mode, const_tree type)
  {
    int size;
  
--- 1825,1831 ----
     MODE and TYPE.  */
  
  static int
! csky_num_arg_regs (machine_mode mode, const_tree type, bool is_stdarg)
  {
    int size;
  
*************** csky_num_arg_regs (machine_mode mode, co
*** 1811,1816 ****
--- 1834,1847 ----
    else
      size = GET_MODE_SIZE (mode);
  
+   if (TARGET_HARD_FLOAT_ABI
+       && !is_stdarg)
+     {
+       if (CSKY_VREG_MODE_P(mode)
+ 	  && !TARGET_SINGLE_FPU)
+ 	return ((CSKY_NUM_WORDS (size) + 1) / 2);
+     }
+ 
    return CSKY_NUM_WORDS (size);
  }
  
*************** csky_function_arg_advance (cumulative_ar
*** 1822,1833 ****
  			   const function_arg_info &arg)
  {
    CUMULATIVE_ARGS *pcum = get_cumulative_args (pcum_v);
!   int param_size = csky_num_arg_regs (arg.mode, arg.type);
  
!   if (*pcum + param_size > CSKY_NPARM_REGS)
!     *pcum = CSKY_NPARM_REGS;
    else
!     *pcum += param_size;
  }
  
  
--- 1853,1875 ----
  			   const function_arg_info &arg)
  {
    CUMULATIVE_ARGS *pcum = get_cumulative_args (pcum_v);
!   int *reg = &pcum->reg;
!   machine_mode mode = arg.mode;
  
!   int param_size = csky_num_arg_regs (mode, arg.type, pcum->is_stdarg);
!   int param_regs_nums = CSKY_NPARM_REGS;
! 
!   if (FUNCTION_VARG_MODE_P(mode)
!       && !pcum->is_stdarg)
!     {
!       reg = &pcum->freg;
!       param_regs_nums = CSKY_NPARM_FREGS;
!     }
! 
!   if (*reg + param_size > param_regs_nums)
!     *reg = param_regs_nums;
    else
!     *reg += param_size;
  }
  
  
*************** csky_function_value (const_tree type, co
*** 1843,1848 ****
--- 1885,1896 ----
    mode = TYPE_MODE (type);
    size = int_size_in_bytes (type);
  
+   if (FUNCTION_VARG_MODE_P(mode))
+     {
+       mode = promote_function_mode (type, mode, &unsignedp, func, 1);
+       return gen_rtx_REG (mode, CSKY_FIRST_VFP_REGNUM);
+     }
+ 
    /* Since we promote return types, we must promote the mode here too.  */
    if (INTEGRAL_TYPE_P (type))
      {
*************** static rtx
*** 1877,1882 ****
--- 1925,1934 ----
  csky_libcall_value (machine_mode mode,
  		    const_rtx libcall ATTRIBUTE_UNUSED)
  {
+   if (FUNCTION_VARG_MODE_P(mode))
+     {
+       return gen_rtx_REG (mode, CSKY_FIRST_VFP_REGNUM);
+     }
    return gen_rtx_REG (mode, CSKY_FIRST_RET_REGNUM);
  }
  
*************** csky_libcall_value (machine_mode mode,
*** 1887,1893 ****
  static bool
  csky_function_value_regno_p (const unsigned int regno)
  {
!   return (regno == CSKY_FIRST_RET_REGNUM);
  }
  
  
--- 1939,1949 ----
  static bool
  csky_function_value_regno_p (const unsigned int regno)
  {
!   if (regno == CSKY_FIRST_RET_REGNUM
!       || (TARGET_HARD_FLOAT_ABI
! 	  && regno == CSKY_FIRST_VFP_REGNUM))
!     return true;
!   return false;
  }
  
  
*************** static int
*** 1912,1922 ****
  csky_arg_partial_bytes (cumulative_args_t pcum_v, const function_arg_info &arg)
  {
    CUMULATIVE_ARGS *pcum = get_cumulative_args (pcum_v);
!   int param_size = csky_num_arg_regs (arg.mode, arg.type);
  
!   if (*pcum < CSKY_NPARM_REGS
!       && *pcum + param_size > CSKY_NPARM_REGS)
!     return (CSKY_NPARM_REGS - *pcum) * UNITS_PER_WORD;
  
    return 0;
  }
--- 1968,1983 ----
  csky_arg_partial_bytes (cumulative_args_t pcum_v, const function_arg_info &arg)
  {
    CUMULATIVE_ARGS *pcum = get_cumulative_args (pcum_v);
!   int param_size = csky_num_arg_regs (arg.mode, arg.type, pcum->is_stdarg);
!   int reg = pcum->reg;
  
!   if (FUNCTION_VARG_MODE_P(arg.mode)
!       && !pcum->is_stdarg)
!     return 0;
! 
!   if (reg < CSKY_NPARM_REGS
!       && reg + param_size > CSKY_NPARM_REGS)
!     return (CSKY_NPARM_REGS - reg) * UNITS_PER_WORD;
  
    return 0;
  }
*************** csky_setup_incoming_varargs (cumulative_
*** 1941,1947 ****
    cfun->machine->uses_anonymous_args = 1;
    local_cum = *pcum;
    csky_function_arg_advance (local_cum_v, arg);
!   regs_to_push = CSKY_NPARM_REGS - local_cum;
    if (regs_to_push)
      *pretend_size  = regs_to_push * UNITS_PER_WORD;
  }
--- 2002,2008 ----
    cfun->machine->uses_anonymous_args = 1;
    local_cum = *pcum;
    csky_function_arg_advance (local_cum_v, arg);
!   regs_to_push = CSKY_NPARM_REGS - local_cum.reg;
    if (regs_to_push)
      *pretend_size  = regs_to_push * UNITS_PER_WORD;
  }
*************** csky_option_override (void)
*** 2435,2441 ****
    /* Create the default target_options structure.  We need this early
       to configure the overall build target.  */
    target_option_default_node = target_option_current_node
! 			     = build_target_option_node (&global_options);
  
    csky_configure_build_target (&csky_active_target,
  			      TREE_TARGET_OPTION (target_option_default_node),
--- 2496,2502 ----
    /* Create the default target_options structure.  We need this early
       to configure the overall build target.  */
    target_option_default_node = target_option_current_node
!     = build_target_option_node (&global_options, &global_options_set);
  
    csky_configure_build_target (&csky_active_target,
  			      TREE_TARGET_OPTION (target_option_default_node),
*************** csky_option_override (void)
*** 2600,2606 ****
  
    /* Resynchronize the saved target options.  */
    cl_target_option_save (TREE_TARGET_OPTION (target_option_default_node),
! 			 &global_options);
  
  #ifdef ENABLE_TPF_DEBUG
    /* Don't emit DWARF4 unless specifically selected.  The TPF
--- 2661,2667 ----
  
    /* Resynchronize the saved target options.  */
    cl_target_option_save (TREE_TARGET_OPTION (target_option_default_node),
! 			 &global_options, &global_options_set);
  
  #ifdef ENABLE_TPF_DEBUG
    /* Don't emit DWARF4 unless specifically selected.  The TPF
*************** csky_trampoline_init (rtx m_tramp, tree
*** 5856,5864 ****
    emit_move_insn (mem, fnaddr);
  
    a_tramp = XEXP (m_tramp, 0);
!   emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__clear_cache"),
! 		     LCT_NORMAL, VOIDmode, a_tramp, Pmode,
! 		     plus_constant (Pmode, a_tramp, TRAMPOLINE_SIZE), Pmode);
  }
  
  
--- 5917,5926 ----
    emit_move_insn (mem, fnaddr);
  
    a_tramp = XEXP (m_tramp, 0);
!   maybe_emit_call_builtin___clear_cache (a_tramp,
! 					 plus_constant (Pmode,
! 							a_tramp,
! 							TRAMPOLINE_SIZE));
  }
  
  
*************** csky_fixed_condition_code_regs (unsigned
*** 6775,6780 ****
--- 6837,6851 ----
    return true;
  }
  
+ void
+ csky_init_cumulative_args (CUMULATIVE_ARGS *pcum, tree fntype,
+ 			   rtx libname ATTRIBUTE_UNUSED,
+ 			   tree fndecl ATTRIBUTE_UNUSED)
+ {
+   memset(pcum, 0, sizeof(*pcum));
+   if (stdarg_p (fntype))
+     pcum->is_stdarg = true;
+ }
  
  struct gcc_target targetm = TARGET_INITIALIZER;
  
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky.h gcc-11.1.0/gcc/config/csky/csky.h
*** gcc-10.3.0/gcc/config/csky/csky.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Declarations for the C-SKY back end.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* Declarations for the C-SKY back end.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
***************
*** 126,131 ****
--- 126,154 ----
  #define TARGET_TLS \
    (CSKY_TARGET_ARCH (CK807) || CSKY_TARGET_ARCH (CK810))
  
+ /* Run-time Target Specification.  */
+ #define TARGET_SOFT_FLOAT       (csky_float_abi == CSKY_FLOAT_ABI_SOFT)
+ /* Use hardware floating point instructions. */
+ #define TARGET_HARD_FLOAT       (csky_float_abi != CSKY_FLOAT_ABI_SOFT)
+ /* Use hardware floating point calling convention.  */
+ #define TARGET_HARD_FLOAT_ABI   (csky_float_abi == CSKY_FLOAT_ABI_HARD)
+ 
+ #define TARGET_SINGLE_FPU     (csky_fpu_index == TARGET_FPU_fpv2_sf)
+ #define TARGET_DOUBLE_FPU     (TARGET_HARD_FLOAT && !TARGET_SINGLE_FPU)
+ 
+ #define FUNCTION_VARG_REGNO_P(REGNO)      \
+   (TARGET_HARD_FLOAT_ABI                  \
+    && IN_RANGE ((REGNO), CSKY_FIRST_VFP_REGNUM, \
+ 		CSKY_FIRST_VFP_REGNUM + CSKY_NPARM_FREGS - 1))
+ 
+ #define CSKY_VREG_MODE_P(mode) \
+   ((mode) == SFmode || (mode) == DFmode)
+ 
+ #define FUNCTION_VARG_MODE_P(mode)  \
+   (TARGET_HARD_FLOAT_ABI            \
+    && CSKY_VREG_MODE_P(mode)        \
+    && !(mode == DFmode && TARGET_SINGLE_FPU))
+ 
  /* Number of loads/stores handled by ldm/stm.  */
  #define CSKY_MIN_MULTIPLE_STLD	3
  #define CSKY_MAX_MULTIPLE_STLD	12
*************** extern int csky_arch_isa_features[];
*** 353,359 ****
  
  /* A C type for declaring a variable that is used as the first argument of
     TARGET_ FUNCTION_ARG and other related values.  */
! #define CUMULATIVE_ARGS	 int
  
  /* Initialize a variable CUM of type CUMULATIVE_ARGS
     for a call to a function whose data type is FNTYPE.
--- 376,389 ----
  
  /* A C type for declaring a variable that is used as the first argument of
     TARGET_ FUNCTION_ARG and other related values.  */
! #if !defined (USED_FOR_TARGET)
! typedef struct
! {
!   int reg;
!   int freg;
!   bool is_stdarg;
! } CUMULATIVE_ARGS;
! #endif
  
  /* Initialize a variable CUM of type CUMULATIVE_ARGS
     for a call to a function whose data type is FNTYPE.
*************** extern int csky_arch_isa_features[];
*** 362,376 ****
     On CSKY, the offset always starts at 0: the first parm reg is always
     the same reg.  */
  #define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, INDIRECT, N_NAMED_ARGS) \
!   ((CUM) = 0)
  
  /* True if N is a possible register number for function argument passing.
     On the CSKY, r0-r3 are used to pass args.
     The int cast is to prevent a complaint about unsigned comparison to
     zero, since CSKY_FIRST_PARM_REGNUM is zero.  */
! #define FUNCTION_ARG_REGNO_P(REGNO)	    \
!   (((int)(REGNO) >= CSKY_FIRST_PARM_REGNUM) &&		\
!    ((REGNO) < (CSKY_NPARM_REGS + CSKY_FIRST_PARM_REGNUM)))
  
  /* How Large Values Are Returned  */
  
--- 392,407 ----
     On CSKY, the offset always starts at 0: the first parm reg is always
     the same reg.  */
  #define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, INDIRECT, N_NAMED_ARGS) \
!   csky_init_cumulative_args (&(CUM), (FNTYPE), (LIBNAME), (INDIRECT))
  
  /* True if N is a possible register number for function argument passing.
     On the CSKY, r0-r3 are used to pass args.
     The int cast is to prevent a complaint about unsigned comparison to
     zero, since CSKY_FIRST_PARM_REGNUM is zero.  */
! #define FUNCTION_ARG_REGNO_P(REGNO)                          \
!   (((REGNO) >= CSKY_FIRST_PARM_REGNUM                        \
!     && (REGNO) < (CSKY_NPARM_REGS + CSKY_FIRST_PARM_REGNUM)) \
!    || FUNCTION_VARG_REGNO_P(REGNO))
  
  /* How Large Values Are Returned  */
  
*************** while (0)
*** 818,824 ****
    {"arch", "%{!march=*:%{!mcpu=*:-march=%(VALUE)}}" }, \
    {"cpu", "%{!march=*:%{!mcpu=*:-mcpu=%(VALUE)}}" }, \
    {"endian", "%{!mbig-endian:%{!mlittle-endian:-m%(VALUE)-endian}}" }, \
!   {"float", "%{!msoft-float:%{!mhard-float:-m%(VALUE)-float}}" },
  
  
  /******************************************************************
--- 849,855 ----
    {"arch", "%{!march=*:%{!mcpu=*:-march=%(VALUE)}}" }, \
    {"cpu", "%{!march=*:%{!mcpu=*:-mcpu=%(VALUE)}}" }, \
    {"endian", "%{!mbig-endian:%{!mlittle-endian:-m%(VALUE)-endian}}" }, \
!   {"float", "%{!mfloat-abi=*:-mfloat-abi=%(VALUE)}" },
  
  
  /******************************************************************
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky.md gcc-11.1.0/gcc/config/csky/csky.md
*** gcc-10.3.0/gcc/config/csky/csky.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description for C-SKY processors.
! ;; Copyright (C) 2018-2020 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for C-SKY processors.
! ;; Copyright (C) 2018-2021 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
***************
*** 50,55 ****
--- 50,56 ----
     (CSKY_LAST_EH_RETDATA_REGNUM		1)
     (CSKY_EH_STACKADJ_REGNUM		2)
     (CSKY_STACKADJUST_REGNUM		4)
+    (CSKY_NPARM_FREGS 4)
  ])
  
  ;; Supported TLS relocations.
***************
*** 100,105 ****
--- 101,107 ----
  
     ; Support for the eh_return pattern.
     VUNSPEC_EH_RETURN
+    VUNSPEC_BLOCKAGE
    ])
  
  
***************
*** 3310,3315 ****
--- 3312,3399 ----
  				 force_reg (Pmode, XEXP (operands[1], 0)));
    }")
  
+ ;; Call subroutine returning any type.
+ 
+ (define_expand "untyped_call"
+   [(parallel [(call (match_operand 0 "" "")
+         (const_int 0))
+         (match_operand 1 "" "")
+         (match_operand 2 "" "")])]
+   ""
+ {
+   int i;
+ 
+   emit_call_insn (gen_call (operands[0], const0_rtx));
+ 
+   for (i = 0; i < XVECLEN (operands[2], 0); i++)
+     {
+       rtx set = XVECEXP (operands[2], 0, i);
+       emit_move_insn (SET_DEST (set), SET_SRC (set));
+     }
+ 
+   /* The optimizer does not know that the call sets the function value
+      registers we stored in the result block.  We avoid problems by
+      claiming that all hard registers are used and clobbered at this
+      point.  */
+   emit_insn (gen_blockage ());
+ 
+   DONE;
+ })
+ 
+ ;; UNSPEC_VOLATILE is considered to use and clobber all hard registers and
+ ;; all of memory.  This blocks insns from being moved across this point.
+ 
+ (define_insn "blockage"
+   [(unspec_volatile [(const_int 0)] VUNSPEC_BLOCKAGE)]
+   ""
+   ""
+   [(set_attr "length" "0")])
+ 
+ (define_insn "*call_value_internal_vs"
+   [(set (match_operand:SF               0 "register_operand"          "=v,v,v")
+         (call (mem:SI (match_operand:SI 1 "csky_call_address_operand" "b, r,S"))
+               (match_operand 2 "" "")))
+    (clobber (reg:SI CSKY_LR_REGNUM))]
+   "TARGET_HARD_FLOAT_ABI"
+   "@
+     jsr\t%1
+     jsr\t%1
+     jbsr\t%1"
+   [(set_attr "length" "2,4,4")
+    (set_attr "type"   "call_jsr,call_jsr,call")]
+ )
+ 
+ (define_insn "*call_value_internal_vd"
+   [(set (match_operand:DF               0 "register_operand"          "=v,v,v")
+         (call (mem:SI (match_operand:SI 1 "csky_call_address_operand" "b, r,S"))
+               (match_operand 2 "" "")))
+    (clobber (reg:SI CSKY_LR_REGNUM))]
+   "TARGET_HARD_FLOAT_ABI && TARGET_DOUBLE_FPU"
+   "@
+     jsr\t%1
+     jsr\t%1
+     jbsr\t%1"
+   [(set_attr "length" "2,4,4")
+    (set_attr "type"   "call_jsr,call_jsr,call")]
+ )
+ 
+ (define_insn "*call_value_internal_pic_vs"
+   [(set (match_operand:SF               0 "register_operand"    "=v")
+         (call (mem:SI (match_operand:SI 1 "csky_unspec_operand" "X"))
+                       (match_operand    2 "" "")))
+    (clobber (reg:SI CSKY_LR_REGNUM))]
+   "flag_pic && TARGET_HARD_FLOAT_ABI"
+   "* return csky_output_call (operands, 1);"
+ )
+ 
+ (define_insn "*call_value_internal_pic_vd"
+   [(set (match_operand:DF               0 "register_operand"    "=v")
+         (call (mem:SI (match_operand:SI 1 "csky_unspec_operand" "X"))
+                       (match_operand    2 "" "")))
+    (clobber (reg:SI CSKY_LR_REGNUM))]
+   "flag_pic && TARGET_HARD_FLOAT_ABI && TARGET_DOUBLE_FPU"
+   "* return csky_output_call (operands, 1);"
+ )
  
  (define_insn "*call_value_internal"
    [(set (match_operand			0 "register_operand"	      "=r,r,r")
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky.opt gcc-11.1.0/gcc/config/csky/csky.opt
*** gcc-10.3.0/gcc/config/csky/csky.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Command-line options for the C-SKY back end.
! ;; Copyright (C) 2018-2020 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Command-line options for the C-SKY back end.
! ;; Copyright (C) 2018-2021 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
*************** config/csky/csky_opts.h
*** 27,33 ****
  
  ; For backward compatibility only.
  march=ck803s
! Target Report Var(flag_arch_ck803s) Undocumented
  
  march=
  Target RejectNegative ToLower Joined Enum(csky_arch) Var(csky_arch_option) Save
--- 27,33 ----
  
  ; For backward compatibility only.
  march=ck803s
! Target Var(flag_arch_ck803s) Undocumented
  
  march=
  Target RejectNegative ToLower Joined Enum(csky_arch) Var(csky_arch_option) Save
*************** Specify the target processor.
*** 40,79 ****
  ;; Endianness options.
  
  mbig-endian
! Target RejectNegative Report Mask(BIG_ENDIAN)
  Generate big-endian code.
  
  EB
! Target RejectNegative Report Alias(mbig-endian) Undocumented
  
  mlittle-endian
! Target RejectNegative Report InverseMask(BIG_ENDIAN)
  Generate little-endian code.
  
  EL
! Target RejectNegative Report Alias(mlittle-endian) Undocumented
  
  ;; Floating point options.  These affect code generation but not
  ;; assembly.
  
  mhard-float
! Target Report RejectNegative Mask(HARD_FLOAT)
! Enable hardware floating-point instructions.
  
  msoft-float
! Target Report RejectNegative InverseMask(HARD_FLOAT)
! Use library calls to perform floating-point operations (default).
  
  mfpu=
  Target RejectNegative Joined Enum(csky_fpu) Var(csky_fpu_index) Init(TARGET_FPU_auto) Save
  Specify the target floating-point hardware/format.
  
  mdouble-float
! Target Report Var(TARGET_DOUBLE_FLOAT) Init(-1)
  Generate C-SKY FPU double float instructions (default for hard float).
  
  mfdivdu
! Target Report Var(TARGET_FDIVDU) Init(-1)
  Generate frecipd/fsqrtd/fdivd instructions (default for hard float).
  
  ;; Instruction set extensions.  Most of these don't affect code
--- 40,100 ----
  ;; Endianness options.
  
  mbig-endian
! Target RejectNegative Mask(BIG_ENDIAN)
  Generate big-endian code.
  
  EB
! Target RejectNegative Alias(mbig-endian) Undocumented
  
  mlittle-endian
! Target RejectNegative InverseMask(BIG_ENDIAN)
  Generate little-endian code.
  
  EL
! Target RejectNegative Alias(mlittle-endian) Undocumented
  
  ;; Floating point options.  These affect code generation but not
  ;; assembly.
  
  mhard-float
! Target RejectNegative Alias(mfloat-abi=, hard) Undocumented
  
  msoft-float
! Target RejectNegative Alias(mfloat-abi=, soft) Undocumented
! 
! mfloat-abi=v2
! Target RejectNegative Alias(mfloat-abi=, hard) Undocumented
! 
! mfloat-abi=v1
! Target RejectNegative Alias(mfloat-abi=, softfp) Undocumented
! 
! mfloat-abi=
! Target RejectNegative Joined Enum(float_abi_type) Var(csky_float_abi) Init(CSKY_FLOAT_ABI_SOFT)
! Specify if floating point hardware should be used.
! 
! Enum
! Name(float_abi_type) Type(enum float_abi_type)
! Known floating-point ABIs (for use with the -mfloat-abi= option):
! 
! EnumValue
! Enum(float_abi_type) String(soft) Value(CSKY_FLOAT_ABI_SOFT)
! 
! EnumValue
! Enum(float_abi_type) String(softfp) Value(CSKY_FLOAT_ABI_SOFTFP)
! 
! EnumValue
! Enum(float_abi_type) String(hard) Value(CSKY_FLOAT_ABI_HARD)
  
  mfpu=
  Target RejectNegative Joined Enum(csky_fpu) Var(csky_fpu_index) Init(TARGET_FPU_auto) Save
  Specify the target floating-point hardware/format.
  
  mdouble-float
! Target Var(TARGET_DOUBLE_FLOAT) Init(-1)
  Generate C-SKY FPU double float instructions (default for hard float).
  
  mfdivdu
! Target Var(TARGET_FDIVDU) Init(-1)
  Generate frecipd/fsqrtd/fdivd instructions (default for hard float).
  
  ;; Instruction set extensions.  Most of these don't affect code
*************** Generate frecipd/fsqrtd/fdivd instructio
*** 81,173 ****
  ;; There are builtin preprocessor defines for each of these.
  
  melrw
! Target Report Var(TARGET_ELRW) Init(-1)
  Enable the extended LRW instruction (default for CK801).
  
  mistack
! Target Report Mask(ISTACK)
  Enable interrupt stack instructions.
  
  mmp
! Target Report RejectNegative Mask(MP)
  Enable multiprocessor instructions.
  
  mcp
! Target Report RejectNegative Mask(CP)
  Enable coprocessor instructions.
  
  mcache
! Target Report RejectNegative Mask(CACHE)
  Enable cache prefetch instructions.
  
  msecurity
! Target Report RejectNegative Mask(SECURITY)
  Enable C-SKY SECURE instructions.
  
  mmac
! Target Report RejectNegative Alias(msecurity) Undocumented
  
  mtrust
! Target Report RejectNegative Mask(TRUST)
  Enable C-SKY TRUST instructions.
  
  mdsp
! Target Report RejectNegative Var(TARGET_DSP)
  Enable C-SKY DSP instructions.
  
  medsp
! Target Report RejectNegative Mask(EDSP)
  Enable C-SKY Enhanced DSP instructions.
  
  mvdsp
! Target Report RejectNegative Mask(VDSP)
  Enable C-SKY Vector DSP instructions.
  
  ;; Code generation options not passed to the assembler.
  
  mdiv
! Target Report Var(TARGET_DIV) Init(-1)
  Generate divide instructions.
  
  msmart
! Target Report Var(TARGET_MINI_REGISTERS) Init(-1)
  Generate code for Smart Mode.
  
  mhigh-registers
! Target Report Var(TARGET_HIGH_REGISTERS) Init(-1)
  Enable use of R16-R31 (default).
  
  manchor
! Target Report Var(TARGET_ANCHOR)
  Generate code using global anchor symbol addresses.
  
  mpushpop
! Target Report Var(TARGET_PUSHPOP) Init(1)
  Generate push/pop instructions (default).
  
  mmultiple-stld
! Target Report Var(TARGET_MULTIPLE_STLD) Init(-1)
  Generate stm/ldm instructions (default).
  
  mstm
! Target Report Alias(mmultiple-stld) Undocumented
  
  mconstpool
! Target Report Var(TARGET_CONSTANT_POOL) Init(-1)
  Generate constant pools in the compiler instead of assembler.
  
  mstack-size
! Target Report Var(TARGET_STACK_SIZE) Init(0)
  Emit .stack_size directives.
  
  mccrt
! Target Report Var(TARGET_LIBCCRT) Init(0)
  Generate code for C-SKY compiler runtime instead of libgcc.
  
  mbranch-cost=
! Target Report Joined RejectNegative UInteger Var(csky_branch_cost) Init(1)
  Set the branch costs to roughly the specified number of instructions.
  
  msched-prolog
! Target Report Var(flag_sched_prolog) Init(0)
  Permit scheduling of function prologue and epilogue sequences.
--- 102,198 ----
  ;; There are builtin preprocessor defines for each of these.
  
  melrw
! Target Var(TARGET_ELRW) Init(-1)
  Enable the extended LRW instruction (default for CK801).
  
  mistack
! Target Mask(ISTACK)
  Enable interrupt stack instructions.
  
  mmp
! Target RejectNegative Mask(MP)
  Enable multiprocessor instructions.
  
  mcp
! Target RejectNegative Mask(CP)
  Enable coprocessor instructions.
  
  mcache
! Target RejectNegative Mask(CACHE)
  Enable cache prefetch instructions.
  
  msecurity
! Target RejectNegative Mask(SECURITY)
  Enable C-SKY SECURE instructions.
  
  mmac
! Target RejectNegative Alias(msecurity) Undocumented
  
  mtrust
! Target RejectNegative Mask(TRUST)
  Enable C-SKY TRUST instructions.
  
  mdsp
! Target RejectNegative Var(TARGET_DSP)
  Enable C-SKY DSP instructions.
  
  medsp
! Target RejectNegative Mask(EDSP)
  Enable C-SKY Enhanced DSP instructions.
  
  mvdsp
! Target RejectNegative Mask(VDSP)
  Enable C-SKY Vector DSP instructions.
  
  ;; Code generation options not passed to the assembler.
  
  mdiv
! Target Var(TARGET_DIV) Init(-1)
  Generate divide instructions.
  
  msmart
! Target Var(TARGET_MINI_REGISTERS) Init(-1)
  Generate code for Smart Mode.
  
  mhigh-registers
! Target Var(TARGET_HIGH_REGISTERS) Init(-1)
  Enable use of R16-R31 (default).
  
  manchor
! Target Var(TARGET_ANCHOR)
  Generate code using global anchor symbol addresses.
  
  mpushpop
! Target Var(TARGET_PUSHPOP) Init(1)
  Generate push/pop instructions (default).
  
  mmultiple-stld
! Target Var(TARGET_MULTIPLE_STLD) Init(-1)
  Generate stm/ldm instructions (default).
  
  mstm
! Target Alias(mmultiple-stld) Undocumented
  
  mconstpool
! Target Var(TARGET_CONSTANT_POOL) Init(-1)
  Generate constant pools in the compiler instead of assembler.
  
  mstack-size
! Target Var(TARGET_STACK_SIZE) Init(0)
  Emit .stack_size directives.
  
  mccrt
! Target Var(TARGET_LIBCCRT) Init(0)
  Generate code for C-SKY compiler runtime instead of libgcc.
  
  mbranch-cost=
! Target Joined RejectNegative UInteger Var(csky_branch_cost) Init(1)
  Set the branch costs to roughly the specified number of instructions.
  
  msched-prolog
! Target Var(flag_sched_prolog) Init(0)
  Permit scheduling of function prologue and epilogue sequences.
+ 
+ msim
+ Target
+ Use the simulator runtime.
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky_cores.def gcc-11.1.0/gcc/config/csky/csky_cores.def
*** gcc-10.3.0/gcc/config/csky/csky_cores.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky_cores.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Architecture and core descriptions for the C-SKY back end.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* Architecture and core descriptions for the C-SKY back end.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky_genopt.sh gcc-11.1.0/gcc/config/csky/csky_genopt.sh
*** gcc-10.3.0/gcc/config/csky/csky_genopt.sh	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky_genopt.sh	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  #!/bin/sh
  # Generate csky_tables.opt from the lists in *.def.
! # Copyright (C) 2018-2020 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
--- 1,6 ----
  #!/bin/sh
  # Generate csky_tables.opt from the lists in *.def.
! # Copyright (C) 2018-2021 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
*************** cat <<EOF
*** 23,29 ****
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by csky_genopt.sh from csky_cores.def.
  
! ; Copyright (C) 2018-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 23,29 ----
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by csky_genopt.sh from csky_cores.def.
  
! ; Copyright (C) 2018-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky_insn_dsp.md gcc-11.1.0/gcc/config/csky/csky_insn_dsp.md
*** gcc-10.3.0/gcc/config/csky/csky_insn_dsp.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky_insn_dsp.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; C-SKY DSP instruction descriptions.
! ;; Copyright (C) 2018-2020 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; C-SKY DSP instruction descriptions.
! ;; Copyright (C) 2018-2021 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky_insn_fpu.md gcc-11.1.0/gcc/config/csky/csky_insn_fpu.md
*** gcc-10.3.0/gcc/config/csky/csky_insn_fpu.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky_insn_fpu.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; C-SKY FPU instruction descriptions.
! ;; Copyright (C) 2018-2020 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; C-SKY FPU instruction descriptions.
! ;; Copyright (C) 2018-2021 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky_isa.def gcc-11.1.0/gcc/config/csky/csky_isa.def
*** gcc-10.3.0/gcc/config/csky/csky_isa.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky_isa.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ISA feature descriptions for the C-SKY back end.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* ISA feature descriptions for the C-SKY back end.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky_isa.h gcc-11.1.0/gcc/config/csky/csky_isa.h
*** gcc-10.3.0/gcc/config/csky/csky_isa.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky_isa.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ISA feature enumerations for C-SKY targets.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* ISA feature enumerations for C-SKY targets.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky_opts.h gcc-11.1.0/gcc/config/csky/csky_opts.h
*** gcc-10.3.0/gcc/config/csky/csky_opts.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky_opts.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Processor and arch enumerations for C-SKY targets.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* Processor and arch enumerations for C-SKY targets.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
*************** enum csky_fpu_type
*** 59,63 ****
--- 59,70 ----
  };
  #define CSKY_TARGET_FPU_GET(name) TARGET_FPU_ ## name
  
+ enum float_abi_type
+ {
+   CSKY_FLOAT_ABI_SOFT,
+   CSKY_FLOAT_ABI_SOFTFP,
+   CSKY_FLOAT_ABI_HARD
+ };
+ 
  
  #endif /* CSKY_OPTS_H */
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky_pipeline_ck801.md gcc-11.1.0/gcc/config/csky/csky_pipeline_ck801.md
*** gcc-10.3.0/gcc/config/csky/csky_pipeline_ck801.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky_pipeline_ck801.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Scheduler information for C-SKY CK801 processors.
! ;; Copyright (C) 2018-2020 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Scheduler information for C-SKY CK801 processors.
! ;; Copyright (C) 2018-2021 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky_pipeline_ck802.md gcc-11.1.0/gcc/config/csky/csky_pipeline_ck802.md
*** gcc-10.3.0/gcc/config/csky/csky_pipeline_ck802.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky_pipeline_ck802.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Instruction scheduling information for C-SKY CK802 processors.
! ;; Copyright (C) 2018-2020 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Instruction scheduling information for C-SKY CK802 processors.
! ;; Copyright (C) 2018-2021 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
***************
*** 70,77 ****
  (define_bypass 3 "ck802_load,ck802_store" "ck802_pool")
  (define_bypass 3 "ck802_pool" "ck802_load,ck802_store")
  
! (define_bypass 1 "*" "ck802_alu")
  
! (define_bypass 1 "*" "ck802_branch")
  
  (define_bypass 2 "ck802_cmp" "ck802_cbranch")
--- 70,81 ----
  (define_bypass 3 "ck802_load,ck802_store" "ck802_pool")
  (define_bypass 3 "ck802_pool" "ck802_load,ck802_store")
  
! (define_bypass 1 "ck802_alu,ck802_branch,ck802_cmp,ck802_cbranch,ck802_call,\
! 		  ck802_load,ck802_pool,ck802_store"
! 		 "ck802_alu")
  
! (define_bypass 1 "ck802_alu,ck802_branch,ck802_cmp,ck802_cbranch,ck802_call,\
! 		  ck802_load,ck802_pool,ck802_store"
! 		 "ck802_branch")
  
  (define_bypass 2 "ck802_cmp" "ck802_cbranch")
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky_pipeline_ck803.md gcc-11.1.0/gcc/config/csky/csky_pipeline_ck803.md
*** gcc-10.3.0/gcc/config/csky/csky_pipeline_ck803.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky_pipeline_ck803.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Scheduler information for C-SKY CK803 processors.
! ;; Copyright (C) 2018-2020 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Scheduler information for C-SKY CK803 processors.
! ;; Copyright (C) 2018-2021 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky_pipeline_ck810.md gcc-11.1.0/gcc/config/csky/csky_pipeline_ck810.md
*** gcc-10.3.0/gcc/config/csky/csky_pipeline_ck810.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky_pipeline_ck810.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Instruction scheduling information for C-SKY CK810 processors.
! ;; Copyright (C) 2018-2020 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Instruction scheduling information for C-SKY CK810 processors.
! ;; Copyright (C) 2018-2021 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/csky/csky_tables.opt gcc-11.1.0/gcc/config/csky/csky_tables.opt
*** gcc-10.3.0/gcc/config/csky/csky_tables.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/csky_tables.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by csky_genopt.sh from csky_cores.def.
  
! ; Copyright (C) 2018-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,7 ----
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by csky_genopt.sh from csky_cores.def.
  
! ; Copyright (C) 2018-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-10.3.0/gcc/config/csky/predicates.md gcc-11.1.0/gcc/config/csky/predicates.md
*** gcc-10.3.0/gcc/config/csky/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/predicates.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Predicates for C-SKY.
! ;; Copyright (C) 2018-2020 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicates for C-SKY.
! ;; Copyright (C) 2018-2021 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/csky/print-sysroot-suffix.sh gcc-11.1.0/gcc/config/csky/print-sysroot-suffix.sh
*** gcc-10.3.0/gcc/config/csky/print-sysroot-suffix.sh	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/print-sysroot-suffix.sh	Tue Apr 27 10:00:13 2021
***************
*** 2,8 ****
  # Script to generate SYSROOT_SUFFIX_SPEC equivalent to MULTILIB_OSDIRNAMES
  # Arguments are MULTILIB_OSDIRNAMES, MULTILIB_OPTIONS and MULTILIB_MATCHES.
  
! # Copyright (C) 2018-2020 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  
  # This file is part of GCC.
--- 2,8 ----
  # Script to generate SYSROOT_SUFFIX_SPEC equivalent to MULTILIB_OSDIRNAMES
  # Arguments are MULTILIB_OSDIRNAMES, MULTILIB_OPTIONS and MULTILIB_MATCHES.
  
! # Copyright (C) 2018-2021 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  
  # This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/csky/t-csky gcc-11.1.0/gcc/config/csky/t-csky
*** gcc-10.3.0/gcc/config/csky/t-csky	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/t-csky	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  # Make rules for all C-SKY targets.
  #
! # Copyright (C) 2018-2020 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
--- 1,6 ----
  # Make rules for all C-SKY targets.
  #
! # Copyright (C) 2018-2021 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/csky/t-csky-elf gcc-11.1.0/gcc/config/csky/t-csky-elf
*** gcc-10.3.0/gcc/config/csky/t-csky-elf	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/t-csky-elf	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  # Multilib configuration for csky*-elf.
  #
! # Copyright (C) 2018-2020 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
--- 1,6 ----
  # Multilib configuration for csky*-elf.
  #
! # Copyright (C) 2018-2021 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
*************** MULTILIB_MATCHES     += mcpu?ck807f=marc
*** 100,107 ****
  MULTILIB_MATCHES     += mcpu?ck807f=march?ck807
  MULTILIB_MATCHES     += mcpu?ck807f=mcpu?ck807
  
! # For option -msoft-float/-mhard-float.
! MULTILIB_OPTIONS     += msoft-float/mhard-float
! MULTILIB_DIRNAMES    += soft-fp hard-fp
! MULTILIB_EXCEPTIONS  += *mcpu=ck801/*mhard-float*
! MULTILIB_EXCEPTIONS  += *mcpu=ck802/*mhard-float*
--- 100,110 ----
  MULTILIB_MATCHES     += mcpu?ck807f=march?ck807
  MULTILIB_MATCHES     += mcpu?ck807f=mcpu?ck807
  
! # For option -mfloat-abi=
! MULTILIB_OPTIONS     += mfloat-abi=soft/mfloat-abi=softfp/mfloat-abi=hard
! MULTILIB_DIRNAMES    += soft soft-fp hard-fp
! 
! MULTILIB_EXCEPTIONS  += *mcpu=ck801/*mfloat-abi=softfp*
! MULTILIB_EXCEPTIONS  += *mcpu=ck802/*mfloat-abi=softfp*
! MULTILIB_EXCEPTIONS  += *mcpu=ck801/*mfloat-abi=hard*
! MULTILIB_EXCEPTIONS  += *mcpu=ck802/*mfloat-abi=hard*
diff -Nrcpad gcc-10.3.0/gcc/config/csky/t-csky-linux gcc-11.1.0/gcc/config/csky/t-csky-linux
*** gcc-10.3.0/gcc/config/csky/t-csky-linux	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/t-csky-linux	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  # Multilib configuration for csky*-linux-*.
  #
! # Copyright (C) 2018-2020 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
--- 1,6 ----
  # Multilib configuration for csky*-linux-*.
  #
! # Copyright (C) 2018-2021 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
***************
*** 20,33 ****
  # <http://www.gnu.org/licenses/>.
  
  
- # Endiannesses.
- MULTILIB_OPTIONS     = mlittle-endian/mbig-endian
- MULTILIB_DIRNAMES    = little big
- MULTILIB_MATCHES     = mlittle-endian=EL
- MULTILIB_MATCHES     = mbig-endian=EB
- 
  MULTILIB_EXCEPTIONS  =
! CSKY_MULTILIB_OSDIRNAMES = mbig-endian=/big mlittle-endian=/. mhard-float=/hard-fp msoft-float=/. mcpu.ck810f=/. mcpu.ck807f=/ck807
  
  # Arch variants.
  MULTILIB_OPTIONS     += mcpu=ck810f/mcpu=ck807f
--- 20,27 ----
  # <http://www.gnu.org/licenses/>.
  
  
  MULTILIB_EXCEPTIONS  =
! CSKY_MULTILIB_OSDIRNAMES = mfloat-abi.softfp=/soft-fp mfloat-abi.hard=/hard-fp mfloat-abi.soft=/. mcpu.ck810f=/. mcpu.ck807f=/ck807
  
  # Arch variants.
  MULTILIB_OPTIONS     += mcpu=ck810f/mcpu=ck807f
*************** MULTILIB_MATCHES     += mcpu?ck810f=mcpu
*** 47,52 ****
  MULTILIB_MATCHES     += mcpu?ck810f=mcpu?ck810ft
  MULTILIB_MATCHES     += mcpu?ck810f=mcpu?ck810vft
  
! # For option -msoft-float/-mhard-float.
! MULTILIB_OPTIONS    += msoft-float/mhard-float
! MULTILIB_DIRNAMES   += soft-fp hard-fp
--- 41,46 ----
  MULTILIB_MATCHES     += mcpu?ck810f=mcpu?ck810ft
  MULTILIB_MATCHES     += mcpu?ck810f=mcpu?ck810vft
  
! # For option -mfloat-abi=
! MULTILIB_OPTIONS     += mfloat-abi=soft/mfloat-abi=softfp/mfloat-abi=hard
! MULTILIB_DIRNAMES    += soft soft-fp hard-fp
diff -Nrcpad gcc-10.3.0/gcc/config/csky/t-sysroot-suffix gcc-11.1.0/gcc/config/csky/t-sysroot-suffix
*** gcc-10.3.0/gcc/config/csky/t-sysroot-suffix	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/csky/t-sysroot-suffix	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  # Makefile fragment for C-SKY sysroot suffix.
  #
! # Copyright (C) 2018-2020 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
--- 1,6 ----
  # Makefile fragment for C-SKY sysroot suffix.
  #
! # Copyright (C) 2018-2021 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/darwin-c.c gcc-11.1.0/gcc/config/darwin-c.c
*** gcc-10.3.0/gcc/config/darwin-c.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/darwin-c.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Darwin support needed only by C/C++ frontends.
!    Copyright (C) 2001-2020 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Darwin support needed only by C/C++ frontends.
!    Copyright (C) 2001-2021 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/darwin-d.c gcc-11.1.0/gcc/config/darwin-d.c
*** gcc-10.3.0/gcc/config/darwin-d.c	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/darwin-d.c	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,75 ----
+ /* Darwin support needed only by D front-end.
+    Copyright (C) 2020-2021 Free Software Foundation, Inc.
+ 
+ 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 "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tm_d.h"
+ #include "d/d-target.h"
+ #include "d/d-target-def.h"
+ 
+ /* Implement TARGET_D_OS_VERSIONS for Darwin targets.  */
+ 
+ static void
+ darwin_d_os_builtins (void)
+ {
+   d_add_builtin_version ("Posix");
+   d_add_builtin_version ("OSX");
+   d_add_builtin_version ("darwin");
+ }
+ 
+ /* Handle a call to `__traits(getTargetInfo, "objectFormat")'.  */
+ 
+ static tree
+ darwin_d_handle_target_object_format (void)
+ {
+   const char *objfmt = "macho";
+ 
+   return build_string_literal (strlen (objfmt) + 1, objfmt);
+ }
+ 
+ /* Implement TARGET_D_REGISTER_OS_TARGET_INFO for Darwin targets.  */
+ 
+ static void
+ darwin_d_register_target_info (void)
+ {
+   const struct d_target_info_spec handlers[] = {
+     { "objectFormat", darwin_d_handle_target_object_format },
+     { NULL, NULL },
+   };
+ 
+   d_add_target_info_handlers (handlers);
+ }
+ 
+ #undef TARGET_D_OS_VERSIONS
+ #define TARGET_D_OS_VERSIONS darwin_d_os_builtins
+ 
+ #undef TARGET_D_REGISTER_OS_TARGET_INFO
+ #define TARGET_D_REGISTER_OS_TARGET_INFO darwin_d_register_target_info
+ 
+ /* Define TARGET_D_MINFO_SECTION for Darwin targets.  */
+ 
+ #undef TARGET_D_MINFO_SECTION
+ #define TARGET_D_MINFO_SECTION "__DATA,__minfodata"
+ 
+ #undef TARGET_D_MINFO_START_NAME
+ #define TARGET_D_MINFO_START_NAME "*section$start$__DATA$__minfodata"
+ 
+ #undef TARGET_D_MINFO_END_NAME
+ #define TARGET_D_MINFO_END_NAME "*section$end$__DATA$__minfodata"
+ 
+ struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
diff -Nrcpad gcc-10.3.0/gcc/config/darwin-driver.c gcc-11.1.0/gcc/config/darwin-driver.c
*** gcc-10.3.0/gcc/config/darwin-driver.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/darwin-driver.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Additional functions for the GCC driver on Darwin native.
!    Copyright (C) 2006-2020 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Additional functions for the GCC driver on Darwin native.
!    Copyright (C) 2006-2021 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
*************** darwin_driver_init (unsigned int *decode
*** 348,354 ****
  	  vers_string =
  	    validate_macosx_version_min ((*decoded_options)[i].arg);
  	  if (vers_string == NULL)
! 	    warning (0, "%qs is not valid for %<mmacosx-version-min%>",
  		     (*decoded_options)[i].arg);
  	  else if (vers_string == (*decoded_options)[i].arg)
  	    vers_string = xstrndup ((*decoded_options)[i].arg, 32);
--- 348,354 ----
  	  vers_string =
  	    validate_macosx_version_min ((*decoded_options)[i].arg);
  	  if (vers_string == NULL)
! 	    warning (0, "%qs is not valid for %<-mmacosx-version-min%>",
  		     (*decoded_options)[i].arg);
  	  else if (vers_string == (*decoded_options)[i].arg)
  	    vers_string = xstrndup ((*decoded_options)[i].arg, 32);
diff -Nrcpad gcc-10.3.0/gcc/config/darwin-f.c gcc-11.1.0/gcc/config/darwin-f.c
*** gcc-10.3.0/gcc/config/darwin-f.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/darwin-f.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Darwin support needed only by Fortran frontends.
!    Copyright (C) 2008-2020 Free Software Foundation, Inc.
     Contributed by Daniel Franke.
  
  This file is part of GCC.
--- 1,5 ----
  /* Darwin support needed only by Fortran frontends.
!    Copyright (C) 2008-2021 Free Software Foundation, Inc.
     Contributed by Daniel Franke.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/darwin-ppc-ldouble-patch.def gcc-11.1.0/gcc/config/darwin-ppc-ldouble-patch.def
*** gcc-10.3.0/gcc/config/darwin-ppc-ldouble-patch.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/darwin-ppc-ldouble-patch.def	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2008-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2008-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/darwin-protos.h gcc-11.1.0/gcc/config/darwin-protos.h
*** gcc-10.3.0/gcc/config/darwin-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/darwin-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Prototypes.
!    Copyright (C) 2001-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Prototypes.
!    Copyright (C) 2001-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern void darwin_non_lazy_pcrel (FILE
*** 69,74 ****
--- 69,75 ----
  
  extern void darwin_emit_unwind_label (FILE *, tree, int, int);
  extern void darwin_emit_except_table_label (FILE *);
+ extern rtx darwin_make_eh_symbol_indirect (rtx, bool);
  extern bool darwin_should_restore_cfa_state (void);
  
  extern void darwin_pragma_ignore (struct cpp_reader *);
*************** extern bool darwin_kextabi_p (void);
*** 126,131 ****
  extern void darwin_override_options (void);
  extern void darwin_patch_builtins (void);
  extern void darwin_rename_builtins (void);
! extern bool darwin_libc_has_function (enum function_class fn_class);
  
  #endif /* CONFIG_DARWIN_PROTOS_H */
--- 127,132 ----
  extern void darwin_override_options (void);
  extern void darwin_patch_builtins (void);
  extern void darwin_rename_builtins (void);
! extern bool darwin_libc_has_function (enum function_class fn_class, tree);
  
  #endif /* CONFIG_DARWIN_PROTOS_H */
diff -Nrcpad gcc-10.3.0/gcc/config/darwin-sections.def gcc-11.1.0/gcc/config/darwin-sections.def
*** gcc-10.3.0/gcc/config/darwin-sections.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/darwin-sections.def	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2005-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2005-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/darwin.c gcc-11.1.0/gcc/config/darwin.c
*** gcc-10.3.0/gcc/config/darwin.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/darwin.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Functions for generic Darwin as target machine for GNU C compiler.
!    Copyright (C) 1989-2020 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Functions for generic Darwin as target machine for GNU C compiler.
!    Copyright (C) 1989-2021 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
*************** machopic_legitimize_pic_address (rtx ori
*** 906,914 ****
  		  emit_move_insn (reg, pic);
  		  pic = reg;
  		}
- #if 0
- 	      emit_use (gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM));
- #endif
  
  	      if (lra_in_progress && HARD_REGISTER_P (pic))
  		df_set_regs_ever_live (REGNO (pic), true);
--- 906,911 ----
*************** machopic_legitimize_pic_address (rtx ori
*** 977,985 ****
  		      emit_move_insn (reg, pic);
  		      pic = reg;
  		    }
- #if 0
- 		  emit_use (pic_offset_table_rtx);
- #endif
  
  		  if (lra_in_progress && HARD_REGISTER_P (pic))
  		    df_set_regs_ever_live (REGNO (pic), true);
--- 974,979 ----
*************** machopic_legitimize_pic_address (rtx ori
*** 991,1011 ****
  	}
  
        if (GET_CODE (pic_ref) != REG)
!         {
!           if (reg != 0)
!             {
!               emit_move_insn (reg, pic_ref);
!               return reg;
!             }
!           else
!             {
!               return force_reg (mode, pic_ref);
!             }
!         }
        else
!         {
!           return pic_ref;
!         }
      }
    else if (GET_CODE (orig) == PLUS
  	   && (GET_CODE (XEXP (orig, 0)) == MEM
--- 985,1005 ----
  	}
  
        if (GET_CODE (pic_ref) != REG)
! 	{
! 	  if (reg != 0)
! 	    {
! 	      emit_move_insn (reg, pic_ref);
! 	      return reg;
! 	    }
! 	  else
! 	    {
! 	      return force_reg (mode, pic_ref);
! 	    }
! 	}
        else
! 	{
! 	  return pic_ref;
! 	}
      }
    else if (GET_CODE (orig) == PLUS
  	   && (GET_CODE (XEXP (orig, 0)) == MEM
*************** darwin_emit_except_table_label (FILE *fi
*** 2226,2231 ****
--- 2220,2236 ----
    ASM_OUTPUT_LABEL (file, section_start_label);
  }
  
+ rtx
+ darwin_make_eh_symbol_indirect (rtx orig, bool ARG_UNUSED (pubvis))
+ {
+   if (DARWIN_PPC == 0 && TARGET_64BIT)
+     return orig;
+ 
+   return gen_rtx_SYMBOL_REF (Pmode,
+ 			     machopic_indirection_name (orig,
+ 							/*stub_p=*/false));
+ }
+ 
  /* The unwinders in earlier Darwin versions are based on an old version
     of libgcc_s and need current frame address stateto be reset after a
     DW_CFA_restore_state recovers the register values.  */
*************** darwin_rename_builtins (void)
*** 3622,3628 ****
  }
  
  bool
! darwin_libc_has_function (enum function_class fn_class)
  {
    if (fn_class == function_sincos)
      return (strverscmp (darwin_macosx_version_min, "10.9") >= 0);
--- 3627,3634 ----
  }
  
  bool
! darwin_libc_has_function (enum function_class fn_class,
! 			  tree type ATTRIBUTE_UNUSED)
  {
    if (fn_class == function_sincos)
      return (strverscmp (darwin_macosx_version_min, "10.9") >= 0);
diff -Nrcpad gcc-10.3.0/gcc/config/darwin.h gcc-11.1.0/gcc/config/darwin.h
*** gcc-10.3.0/gcc/config/darwin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/darwin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Target definitions for Darwin (Mac OS X) systems.
!    Copyright (C) 1989-2020 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Target definitions for Darwin (Mac OS X) systems.
!    Copyright (C) 1989-2021 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
*************** extern GTY(()) int darwin_ms_struct;
*** 135,141 ****
  "%{shared:-Zdynamiclib} %<shared",					\
  "%{static:%{Zdynamic:%e conflicting code gen style switches are used}}",\
  "%{y*:%nthe y option is obsolete and ignored} %<y*",			\
! "%<Mach %<X"
  
  #if LD64_HAS_EXPORT_DYNAMIC
  #define DARWIN_RDYNAMIC "%{rdynamic:-export_dynamic}"
--- 135,141 ----
  "%{shared:-Zdynamiclib} %<shared",					\
  "%{static:%{Zdynamic:%e conflicting code gen style switches are used}}",\
  "%{y*:%nthe y option is obsolete and ignored} %<y*",			\
! "%<Mach "
  
  #if LD64_HAS_EXPORT_DYNAMIC
  #define DARWIN_RDYNAMIC "%{rdynamic:-export_dynamic}"
*************** extern GTY(()) int darwin_ms_struct;
*** 238,244 ****
      DARWIN_NOPIE_SPEC \
      DARWIN_RDYNAMIC \
      DARWIN_NOCOMPACT_UNWIND \
!     "}}}}}}} %<pie %<no-pie %<rdynamic "
  
  #define DSYMUTIL "\ndsymutil"
  
--- 238,244 ----
      DARWIN_NOPIE_SPEC \
      DARWIN_RDYNAMIC \
      DARWIN_NOCOMPACT_UNWIND \
!     "}}}}}}} %<pie %<no-pie %<rdynamic %<X "
  
  #define DSYMUTIL "\ndsymutil"
  
*************** extern GTY(()) int darwin_ms_struct;
*** 497,504 ****
  #define ASM_FINAL_SPEC \
    "%{gsplit-dwarf:%ngsplit-dwarf is not supported on this platform} %<gsplit-dwarf"
  
! /* Since we bootstrap with C++ toolchains realistically require DWARF-2, even
!    if stabs is supported by the assembler.  */
  
  #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
  #define DARWIN_PREFER_DWARF
--- 497,504 ----
  #define ASM_FINAL_SPEC \
    "%{gsplit-dwarf:%ngsplit-dwarf is not supported on this platform} %<gsplit-dwarf"
  
! /* We now require C++11 to bootstrap and newer tools than those based on
!    stabs, so require DWARF-2, even if stabs is supported by the assembler.  */
  
  #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
  #define DARWIN_PREFER_DWARF
*************** extern GTY(()) int darwin_ms_struct;
*** 611,616 ****
--- 611,619 ----
  /* Emit a label to separate the exception table.  */
  #define TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL darwin_emit_except_table_label
  
+ /* Make an EH (personality or LDSA) symbol indirect as needed.  */
+ #define TARGET_ASM_MAKE_EH_SYMBOL_INDIRECT darwin_make_eh_symbol_indirect
+ 
  /* Some of Darwin's unwinders need current frame address state to be reset
     after a DW_CFA_restore_state recovers the register values.  */
  #undef TARGET_ASM_SHOULD_RESTORE_CFA_STATE
*************** extern void darwin_driver_init (unsigned
*** 1096,1111 ****
  /* Later versions of ld64 support coalescing weak code/data without requiring
     that they be placed in specially identified sections.  This is the earliest
     _tested_ version known to support this so far.  */
! #define MIN_LD64_NO_COAL_SECTS "236.4"
  
  /* From at least version 62.1, ld64 can build symbol indirection stubs as
     needed, and there is no need for the compiler to emit them.  */
  #define MIN_LD64_OMIT_STUBS "62.1"
  
  #ifndef LD64_VERSION
! #define LD64_VERSION "62.1"
! #else
! #define DEF_LD64 LD64_VERSION
  #endif
  
  #endif /* CONFIG_DARWIN_H */
--- 1099,1118 ----
  /* Later versions of ld64 support coalescing weak code/data without requiring
     that they be placed in specially identified sections.  This is the earliest
     _tested_ version known to support this so far.  */
! #define MIN_LD64_NO_COAL_SECTS "236.3"
  
  /* From at least version 62.1, ld64 can build symbol indirection stubs as
     needed, and there is no need for the compiler to emit them.  */
  #define MIN_LD64_OMIT_STUBS "62.1"
  
+ /* If we have no definition for the linker version, pick the minimum version
+    that will bootstrap the compiler.  */
  #ifndef LD64_VERSION
! # ifndef  DEF_LD64
! #  define LD64_VERSION "85.2.1"
! # else
! #  define LD64_VERSION DEF_LD64
! # endif
  #endif
  
  #endif /* CONFIG_DARWIN_H */
diff -Nrcpad gcc-10.3.0/gcc/config/darwin.opt gcc-11.1.0/gcc/config/darwin.opt
*** gcc-10.3.0/gcc/config/darwin.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/darwin.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Processor-independent options for Darwin.
  
! ; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Processor-independent options for Darwin.
  
! ; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** dependency-file
*** 30,36 ****
  C ObjC C++ ObjC++ Separate Alias(MF) MissingArgError(missing filename after %qs)
  
  fapple-kext
! Target Report C++ Var(flag_apple_kext)
  Generate code for darwin loadable kernel extensions.
  
  iframework
--- 30,36 ----
  C ObjC C++ ObjC++ Separate Alias(MF) MissingArgError(missing filename after %qs)
  
  fapple-kext
! Target C++ Var(flag_apple_kext)
  Generate code for darwin loadable kernel extensions.
  
  iframework
*************** Target RejectNegative C ObjC C++ ObjC++
*** 38,65 ****
  -iframework <dir>	Add <dir> to the end of the system framework include path.
  
  mconstant-cfstrings
! Target Report Var(darwin_constant_cfstrings) Init(1)
  Generate compile-time CFString objects.
  
  Wnonportable-cfstrings
! Target Report Var(darwin_warn_nonportable_cfstrings) Init(1) Warning
  Warn if constant CFString objects contain non-portable characters.
  
  ; Use new-style pic stubs if this is true, x86 only so far.
  matt-stubs
! Target Report Var(darwin_macho_att_stub) Init(1)
  Generate AT&T-style stubs for Mach-O.
  
  mdynamic-no-pic
! Target Common Report Mask(MACHO_DYNAMIC_NO_PIC)
  Generate code suitable for executables (NOT shared libs).
  
  mfix-and-continue
! Target Report Var(darwin_fix_and_continue)
  Generate code suitable for fast turn around debugging.
  
  mkernel
! Target Report Var(flag_mkernel)
  Generate code for the kernel or loadable kernel extensions.
  
  ; The Init here is for the convenience of GCC developers, so that cc1
--- 38,65 ----
  -iframework <dir>	Add <dir> to the end of the system framework include path.
  
  mconstant-cfstrings
! Target Var(darwin_constant_cfstrings) Init(1)
  Generate compile-time CFString objects.
  
  Wnonportable-cfstrings
! Target Var(darwin_warn_nonportable_cfstrings) Init(1) Warning
  Warn if constant CFString objects contain non-portable characters.
  
  ; Use new-style pic stubs if this is true, x86 only so far.
  matt-stubs
! Target Var(darwin_macho_att_stub) Init(1)
  Generate AT&T-style stubs for Mach-O.
  
  mdynamic-no-pic
! Target Common Mask(MACHO_DYNAMIC_NO_PIC)
  Generate code suitable for executables (NOT shared libs).
  
  mfix-and-continue
! Target Var(darwin_fix_and_continue)
  Generate code suitable for fast turn around debugging.
  
  mkernel
! Target Var(flag_mkernel)
  Generate code for the kernel or loadable kernel extensions.
  
  ; The Init here is for the convenience of GCC developers, so that cc1
*************** Generate code for the kernel or loadable
*** 67,90 ****
  ; driver will always pass a -mmacosx-version-min, so in normal use the
  ; Init is never used.
  mmacosx-version-min=
! Target RejectNegative Joined Report Var(darwin_macosx_version_min) Init(DEF_MIN_OSX_VERSION)
  The earliest macOS version on which this program will run.
  
  ; Really, only relevant to PowerPC which has a 4 byte bool by default.
  mone-byte-bool
! Target RejectNegative Report Var(darwin_one_byte_bool)
  Set sizeof(bool) to 1.
  
  msymbol-stubs
! Target Report Var(darwin_symbol_stubs) Init(0)
  Force generation of external symbol indirection stubs.
  
  ; Some code-gen may be improved / adjusted if the linker is sufficiently modern.
  mtarget-linker=
! Target RejectNegative Joined Report Alias(mtarget-linker)
  
  mtarget-linker
! Target RejectNegative Joined Separate Report Var(darwin_target_linker) Init(LD64_VERSION)
  -mtarget-linker <version>	Specify that ld64 <version> is the toolchain linker for the current invocation.
  
  ; Driver options.
--- 67,90 ----
  ; driver will always pass a -mmacosx-version-min, so in normal use the
  ; Init is never used.
  mmacosx-version-min=
! Target RejectNegative Joined Var(darwin_macosx_version_min) Init(DEF_MIN_OSX_VERSION)
  The earliest macOS version on which this program will run.
  
  ; Really, only relevant to PowerPC which has a 4 byte bool by default.
  mone-byte-bool
! Target RejectNegative Var(darwin_one_byte_bool)
  Set sizeof(bool) to 1.
  
  msymbol-stubs
! Target Var(darwin_symbol_stubs) Init(0)
  Force generation of external symbol indirection stubs.
  
  ; Some code-gen may be improved / adjusted if the linker is sufficiently modern.
  mtarget-linker=
! Target RejectNegative Joined Alias(mtarget-linker)
  
  mtarget-linker
! Target RejectNegative Joined Separate Var(darwin_target_linker) Init(LD64_VERSION)
  -mtarget-linker <version>	Specify that ld64 <version> is the toolchain linker for the current invocation.
  
  ; Driver options.
diff -Nrcpad gcc-10.3.0/gcc/config/dbx.h gcc-11.1.0/gcc/config/dbx.h
*** gcc-10.3.0/gcc/config/dbx.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/dbx.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Prefer DBX (stabs) debugging information.
!    Copyright (C) 1996-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Prefer DBX (stabs) debugging information.
!    Copyright (C) 1996-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/dbxcoff.h gcc-11.1.0/gcc/config/dbxcoff.h
*** gcc-10.3.0/gcc/config/dbxcoff.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/dbxcoff.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions needed when using stabs embedded in COFF sections.
!    Copyright (C) 1996-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions needed when using stabs embedded in COFF sections.
!    Copyright (C) 1996-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/dbxelf.h gcc-11.1.0/gcc/config/dbxelf.h
*** gcc-10.3.0/gcc/config/dbxelf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/dbxelf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions needed when using stabs embedded in ELF sections.
!    Copyright (C) 1999-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions needed when using stabs embedded in ELF sections.
!    Copyright (C) 1999-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/default-c.c gcc-11.1.0/gcc/config/default-c.c
*** gcc-10.3.0/gcc/config/default-c.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/default-c.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Default C-family target hooks initializer.
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Default C-family target hooks initializer.
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/default-d.c gcc-11.1.0/gcc/config/default-d.c
*** gcc-10.3.0/gcc/config/default-d.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/default-d.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Default D language target hooks initializer.
!    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
  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
--- 1,5 ----
  /* Default D language target hooks initializer.
!    Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
  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
diff -Nrcpad gcc-10.3.0/gcc/config/dragonfly-d.c gcc-11.1.0/gcc/config/dragonfly-d.c
*** gcc-10.3.0/gcc/config/dragonfly-d.c	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/dragonfly-d.c	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,63 ----
+ /* DragonFly support needed only by D front-end.
+    Copyright (C) 2020-2021 Free Software Foundation, Inc.
+ 
+ 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 "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tm_d.h"
+ #include "d/d-target.h"
+ #include "d/d-target-def.h"
+ 
+ /* Implement TARGET_D_OS_VERSIONS for DragonFly targets.  */
+ 
+ static void
+ dragonfly_d_os_builtins (void)
+ {
+   d_add_builtin_version ("DragonFlyBSD");
+   d_add_builtin_version ("Posix");
+ }
+ 
+ /* Handle a call to `__traits(getTargetInfo, "objectFormat")'.  */
+ 
+ static tree
+ dragonfly_d_handle_target_object_format (void)
+ {
+   const char *objfmt = "elf";
+ 
+   return build_string_literal (strlen (objfmt) + 1, objfmt);
+ }
+ 
+ /* Implement TARGET_D_REGISTER_OS_TARGET_INFO for DragonFly targets.  */
+ 
+ static void
+ dragonfly_d_register_target_info (void)
+ {
+   const struct d_target_info_spec handlers[] = {
+     { "objectFormat", dragonfly_d_handle_target_object_format },
+     { NULL, NULL },
+   };
+ 
+   d_add_target_info_handlers (handlers);
+ }
+ 
+ #undef TARGET_D_OS_VERSIONS
+ #define TARGET_D_OS_VERSIONS dragonfly_d_os_builtins
+ 
+ #undef TARGET_D_REGISTER_OS_TARGET_INFO
+ #define TARGET_D_REGISTER_OS_TARGET_INFO dragonfly_d_register_target_info
+ 
+ struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
diff -Nrcpad gcc-10.3.0/gcc/config/dragonfly-stdint.h gcc-11.1.0/gcc/config/dragonfly-stdint.h
*** gcc-10.3.0/gcc/config/dragonfly-stdint.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/dragonfly-stdint.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for <stdint.h> types for DragonFly systems.
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
     Contributed by John Marino <gnugcc@marino.st>
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for <stdint.h> types for DragonFly systems.
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
     Contributed by John Marino <gnugcc@marino.st>
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/dragonfly.h gcc-11.1.0/gcc/config/dragonfly.h
*** gcc-10.3.0/gcc/config/dragonfly.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/dragonfly.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Base configuration file for all DragonFly targets.
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
     Contributed by John Marino <gnugcc@marino.st>
  
  This file is part of GCC.
--- 1,5 ----
  /* Base configuration file for all DragonFly targets.
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
     Contributed by John Marino <gnugcc@marino.st>
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/dragonfly.opt gcc-11.1.0/gcc/config/dragonfly.opt
*** gcc-10.3.0/gcc/config/dragonfly.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/dragonfly.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; DragonFly BSD options.
  
! ; Copyright (C) 2014-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; DragonFly BSD options.
  
! ; Copyright (C) 2014-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-10.3.0/gcc/config/elfos.h gcc-11.1.0/gcc/config/elfos.h
*** gcc-10.3.0/gcc/config/elfos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/elfos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* elfos.h  --  operating system specific defines to be used when
     targeting GCC for some generic ELF system
!    Copyright (C) 1991-2020 Free Software Foundation, Inc.
     Based on svr4.h contributed by Ron Guilmette (rfg@netcom.com).
  
  This file is part of GCC.
--- 1,6 ----
  /* elfos.h  --  operating system specific defines to be used when
     targeting GCC for some generic ELF system
!    Copyright (C) 1991-2021 Free Software Foundation, Inc.
     Based on svr4.h contributed by Ron Guilmette (rfg@netcom.com).
  
  This file is part of GCC.
*************** see the files COPYING3 and COPYING.RUNTI
*** 474,476 ****
--- 474,482 ----
  
  #undef TARGET_LIBC_HAS_FUNCTION
  #define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
+ 
+ /* ELF support needed only by D front-end.  */
+ 
+ #define TARGET_D_MINFO_SECTION "minfo"
+ #define TARGET_D_MINFO_START_NAME "__start_minfo"
+ #define TARGET_D_MINFO_END_NAME "__stop_minfo"
diff -Nrcpad gcc-10.3.0/gcc/config/epiphany/constraints.md gcc-11.1.0/gcc/config/epiphany/constraints.md
*** gcc-10.3.0/gcc/config/epiphany/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/epiphany/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Constraint definitions for Adaptiva epiphany
! ;; Copyright (C) 2007-2020 Free Software Foundation, Inc.
  ;; Contributed by Embecosm on behalf of Adapteva, Inc.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constraint definitions for Adaptiva epiphany
! ;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
  ;; Contributed by Embecosm on behalf of Adapteva, Inc.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/epiphany/epiphany-modes.def gcc-11.1.0/gcc/config/epiphany/epiphany-modes.def
*** gcc-10.3.0/gcc/config/epiphany/epiphany-modes.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/epiphany/epiphany-modes.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, Adapteva Epiphany cpu.
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, Adapteva Epiphany cpu.
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/epiphany/epiphany-protos.h gcc-11.1.0/gcc/config/epiphany/epiphany-protos.h
*** gcc-10.3.0/gcc/config/epiphany/epiphany-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/epiphany/epiphany-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, EPIPHANY cpu.
!    Copyright (C) 2000-2020 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, EPIPHANY cpu.
!    Copyright (C) 2000-2021 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/epiphany/epiphany-sched.md gcc-11.1.0/gcc/config/epiphany/epiphany-sched.md
*** gcc-10.3.0/gcc/config/epiphany/epiphany-sched.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/epiphany/epiphany-sched.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; DFA scheduling description for EPIPHANY
! ;; Copyright (C) 2004-2020 Free Software Foundation, Inc.
  ;; Contributed by Embecosm on behalf of Adapteva, Inc.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; DFA scheduling description for EPIPHANY
! ;; Copyright (C) 2004-2021 Free Software Foundation, Inc.
  ;; Contributed by Embecosm on behalf of Adapteva, Inc.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/epiphany/epiphany.c gcc-11.1.0/gcc/config/epiphany/epiphany.c
*** gcc-10.3.0/gcc/config/epiphany/epiphany.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/epiphany/epiphany.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines used for code generation on the EPIPHANY cpu.
!    Copyright (C) 1994-2020 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Subroutines used for code generation on the EPIPHANY cpu.
!    Copyright (C) 1994-2021 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/epiphany/epiphany.h gcc-11.1.0/gcc/config/epiphany/epiphany.h
*** gcc-10.3.0/gcc/config/epiphany/epiphany.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/epiphany/epiphany.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, Argonaut EPIPHANY cpu.
!    Copyright (C) 1994-2020 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, Argonaut EPIPHANY cpu.
!    Copyright (C) 1994-2021 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/epiphany/epiphany.md gcc-11.1.0/gcc/config/epiphany/epiphany.md
*** gcc-10.3.0/gcc/config/epiphany/epiphany.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/epiphany/epiphany.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description of the Adaptiva epiphany cpu for GNU C compiler
! ;; Copyright (C) 1994-2020 Free Software Foundation, Inc.
  ;; Contributed by Embecosm on behalf of Adapteva, Inc.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description of the Adaptiva epiphany cpu for GNU C compiler
! ;; Copyright (C) 1994-2021 Free Software Foundation, Inc.
  ;; Contributed by Embecosm on behalf of Adapteva, Inc.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/epiphany/epiphany.opt gcc-11.1.0/gcc/config/epiphany/epiphany.opt
*** gcc-10.3.0/gcc/config/epiphany/epiphany.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/epiphany/epiphany.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Options for the Adapteva EPIPHANY port of the compiler
  ;
! ; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ; Contributed by Embecosm on behalf of Adapteva, Inc.
  ;
  ; This file is part of GCC.
--- 1,6 ----
  ; Options for the Adapteva EPIPHANY port of the compiler
  ;
! ; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ; Contributed by Embecosm on behalf of Adapteva, Inc.
  ;
  ; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/epiphany/epiphany_intrinsics.h gcc-11.1.0/gcc/config/epiphany/epiphany_intrinsics.h
*** gcc-10.3.0/gcc/config/epiphany/epiphany_intrinsics.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/epiphany/epiphany_intrinsics.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Epiphany intrinsic functions
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Epiphany intrinsic functions
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/epiphany/mode-switch-use.c gcc-11.1.0/gcc/config/epiphany/mode-switch-use.c
*** gcc-10.3.0/gcc/config/epiphany/mode-switch-use.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/epiphany/mode-switch-use.c	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Insert USEs in instructions that require mode switching.
     This should probably be merged into mode-switching.c .
!    Copyright (C) 2011-2020 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
--- 1,6 ----
  /* Insert USEs in instructions that require mode switching.
     This should probably be merged into mode-switching.c .
!    Copyright (C) 2011-2021 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/epiphany/predicates.md gcc-11.1.0/gcc/config/epiphany/predicates.md
*** gcc-10.3.0/gcc/config/epiphany/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/epiphany/predicates.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Predicate definitions for code generation on the EPIPHANY cpu.
! ;; Copyright (C) 1994-2020 Free Software Foundation, Inc.
  ;; Contributed by Embecosm on behalf of Adapteva, Inc.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicate definitions for code generation on the EPIPHANY cpu.
! ;; Copyright (C) 1994-2021 Free Software Foundation, Inc.
  ;; Contributed by Embecosm on behalf of Adapteva, Inc.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/epiphany/resolve-sw-modes.c gcc-11.1.0/gcc/config/epiphany/resolve-sw-modes.c
*** gcc-10.3.0/gcc/config/epiphany/resolve-sw-modes.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/epiphany/resolve-sw-modes.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Mode switching cleanup pass for the EPIPHANY cpu.
!    Copyright (C) 2000-2020 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Mode switching cleanup pass for the EPIPHANY cpu.
!    Copyright (C) 2000-2021 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/epiphany/rtems.h gcc-11.1.0/gcc/config/epiphany/rtems.h
*** gcc-10.3.0/gcc/config/epiphany/rtems.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/epiphany/rtems.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for RTEMS based EPIPHANY systems.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for RTEMS based EPIPHANY systems.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/epiphany/t-epiphany gcc-11.1.0/gcc/config/epiphany/t-epiphany
*** gcc-10.3.0/gcc/config/epiphany/t-epiphany	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/epiphany/t-epiphany	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 1997-2020 Free Software Foundation, Inc.
  # Contributed by Embecosm on behalf of Adapteva, Inc.
  #
  # This file is part of GCC.
--- 1,4 ----
! # Copyright (C) 1997-2021 Free Software Foundation, Inc.
  # Contributed by Embecosm on behalf of Adapteva, Inc.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/flat.h gcc-11.1.0/gcc/config/flat.h
*** gcc-10.3.0/gcc/config/flat.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/flat.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Defines to be used for targets that support flat executables.
!    Copyright (C) 2006-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Defines to be used for targets that support flat executables.
!    Copyright (C) 2006-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/fr30/constraints.md gcc-11.1.0/gcc/config/fr30/constraints.md
*** gcc-10.3.0/gcc/config/fr30/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/fr30/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Constraint definitions for the FR30.
! ;; Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Constraint definitions for the FR30.
! ;; Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/fr30/fr30-protos.h gcc-11.1.0/gcc/config/fr30/fr30-protos.h
*** gcc-10.3.0/gcc/config/fr30/fr30-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/fr30/fr30-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Prototypes for fr30.c functions used in the md file & elsewhere.
!    Copyright (C) 1999-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Prototypes for fr30.c functions used in the md file & elsewhere.
!    Copyright (C) 1999-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/fr30/fr30.c gcc-11.1.0/gcc/config/fr30/fr30.c
*** gcc-10.3.0/gcc/config/fr30/fr30.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/fr30/fr30.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* FR30 specific functions.
!    Copyright (C) 1998-2020 Free Software Foundation, Inc.
     Contributed by Cygnus Solutions.
  
     This file is part of GCC.
--- 1,5 ----
  /* FR30 specific functions.
!    Copyright (C) 1998-2021 Free Software Foundation, Inc.
     Contributed by Cygnus Solutions.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/fr30/fr30.h gcc-11.1.0/gcc/config/fr30/fr30.h
*** gcc-10.3.0/gcc/config/fr30/fr30.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/fr30/fr30.h	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /*{{{  Comment.  */ 
  
  /* Definitions of FR30 target. 
!    Copyright (C) 1998-2020 Free Software Foundation, Inc.
     Contributed by Cygnus Solutions.
  
  This file is part of GCC.
--- 1,7 ----
  /*{{{  Comment.  */ 
  
  /* Definitions of FR30 target. 
!    Copyright (C) 1998-2021 Free Software Foundation, Inc.
     Contributed by Cygnus Solutions.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/fr30/fr30.md gcc-11.1.0/gcc/config/fr30/fr30.md
*** gcc-10.3.0/gcc/config/fr30/fr30.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/fr30/fr30.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; FR30 machine description.
! ;; Copyright (C) 1998-2020 Free Software Foundation, Inc.
  ;; Contributed by Cygnus Solutions.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; FR30 machine description.
! ;; Copyright (C) 1998-2021 Free Software Foundation, Inc.
  ;; Contributed by Cygnus Solutions.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/fr30/fr30.opt gcc-11.1.0/gcc/config/fr30/fr30.opt
*** gcc-10.3.0/gcc/config/fr30/fr30.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/fr30/fr30.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Options for the FR30 port of the compiler.
  
! ; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the FR30 port of the compiler.
  
! ; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
***************
*** 19,25 ****
  ; <http://www.gnu.org/licenses/>.
  
  msmall-model
! Target Report Mask(SMALL_MODEL)
  Assume small address space.
  
  mno-lsim
--- 19,25 ----
  ; <http://www.gnu.org/licenses/>.
  
  msmall-model
! Target Mask(SMALL_MODEL)
  Assume small address space.
  
  mno-lsim
diff -Nrcpad gcc-10.3.0/gcc/config/fr30/predicates.md gcc-11.1.0/gcc/config/fr30/predicates.md
*** gcc-10.3.0/gcc/config/fr30/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/fr30/predicates.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Predicate definitions for FR30.
! ;; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for FR30.
! ;; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/freebsd-d.c gcc-11.1.0/gcc/config/freebsd-d.c
*** gcc-10.3.0/gcc/config/freebsd-d.c	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/freebsd-d.c	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,69 ----
+ /* FreeBSD support needed only by D front-end.
+    Copyright (C) 2020-2021 Free Software Foundation, Inc.
+ 
+ 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 "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "memmodel.h"
+ #include "tm.h"
+ #include "tm_p.h"
+ #include "d/d-target.h"
+ #include "d/d-target-def.h"
+ 
+ /* Implement TARGET_D_OS_VERSIONS for FreeBSD targets.  */
+ 
+ static void
+ freebsd_d_os_builtins (void)
+ {
+   char buf[16];
+   snprintf (buf, sizeof (buf), "FreeBSD_%d", FBSD_MAJOR);
+ 
+   d_add_builtin_version ("FreeBSD");
+   d_add_builtin_version (xstrdup (buf));
+   d_add_builtin_version ("Posix");
+ }
+ 
+ /* Handle a call to `__traits(getTargetInfo, "objectFormat")'.  */
+ 
+ static tree
+ freebsd_d_handle_target_object_format (void)
+ {
+   const char *objfmt = "elf";
+ 
+   return build_string_literal (strlen (objfmt) + 1, objfmt);
+ }
+ 
+ /* Implement TARGET_D_REGISTER_OS_TARGET_INFO for FreeBSD targets.  */
+ 
+ static void
+ freebsd_d_register_target_info (void)
+ {
+   const struct d_target_info_spec handlers[] = {
+     { "objectFormat", freebsd_d_handle_target_object_format },
+     { NULL, NULL },
+   };
+ 
+   d_add_target_info_handlers (handlers);
+ }
+ 
+ #undef TARGET_D_OS_VERSIONS
+ #define TARGET_D_OS_VERSIONS freebsd_d_os_builtins
+ 
+ #undef TARGET_D_REGISTER_OS_TARGET_INFO
+ #define TARGET_D_REGISTER_OS_TARGET_INFO freebsd_d_register_target_info
+ 
+ struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
diff -Nrcpad gcc-10.3.0/gcc/config/freebsd-nthr.h gcc-11.1.0/gcc/config/freebsd-nthr.h
*** gcc-10.3.0/gcc/config/freebsd-nthr.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/freebsd-nthr.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* FreeBSD configuration setting for FreeBSD systems.
!    Copyright (C) 2001-2020 Free Software Foundation, Inc.
     Contributed by Loren J. Rittle <ljrittle@acm.org>
  
  This file is part of GCC.
--- 1,5 ----
  /* FreeBSD configuration setting for FreeBSD systems.
!    Copyright (C) 2001-2021 Free Software Foundation, Inc.
     Contributed by Loren J. Rittle <ljrittle@acm.org>
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/freebsd-spec.h gcc-11.1.0/gcc/config/freebsd-spec.h
*** gcc-10.3.0/gcc/config/freebsd-spec.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/freebsd-spec.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Base configuration file for all FreeBSD targets.
!    Copyright (C) 1999-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Base configuration file for all FreeBSD targets.
!    Copyright (C) 1999-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/freebsd-stdint.h gcc-11.1.0/gcc/config/freebsd-stdint.h
*** gcc-10.3.0/gcc/config/freebsd-stdint.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/freebsd-stdint.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for <stdint.h> types for FreeBSD systems.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
     Contributed by Gerald Pfeifer <gerald@pfeifer.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for <stdint.h> types for FreeBSD systems.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
     Contributed by Gerald Pfeifer <gerald@pfeifer.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/freebsd.h gcc-11.1.0/gcc/config/freebsd.h
*** gcc-10.3.0/gcc/config/freebsd.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/freebsd.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Base configuration file for all FreeBSD targets.
!    Copyright (C) 1999-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Base configuration file for all FreeBSD targets.
!    Copyright (C) 1999-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 62,67 ****
--- 62,88 ----
  #define USE_LD_AS_NEEDED 1
  #endif
  
+ /* Link -lasan early on the command line.  For -static-libasan, don't link
+    it for -shared link, the executable should be compiled with -static-libasan
+    in that case, and for executable link with --{,no-}whole-archive around
+    it to force everything into the executable.  And similarly for -ltsan
+    and -llsan.  */
+ #if defined(HAVE_LD_STATIC_DYNAMIC)
+ #undef LIBASAN_EARLY_SPEC
+ #define LIBASAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \
+   "%{static-libasan:%{!shared:" \
+   LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \
+   LD_DYNAMIC_OPTION "}}%{!static-libasan:-lasan -lpthread}"
+ #undef LIBTSAN_EARLY_SPEC
+ #define LIBTSAN_EARLY_SPEC "%{static-libtsan:%{!shared:" \
+   LD_STATIC_OPTION " --whole-archive -ltsan --no-whole-archive " \
+   LD_DYNAMIC_OPTION "}}%{!static-libtsan:-ltsan -lpthread}"
+ #undef LIBLSAN_EARLY_SPEC
+ #define LIBLSAN_EARLY_SPEC "%{static-liblsan:%{!shared:" \
+   LD_STATIC_OPTION " --whole-archive -llsan --no-whole-archive " \
+   LD_DYNAMIC_OPTION "}}%{!static-liblsan:-llsan -lpthread}"
+ #endif
+ 
  /************************[  Target stuff  ]***********************************/
  
  /* All FreeBSD Architectures support the ELF object file format.  */
diff -Nrcpad gcc-10.3.0/gcc/config/freebsd.opt gcc-11.1.0/gcc/config/freebsd.opt
*** gcc-10.3.0/gcc/config/freebsd.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/freebsd.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; FreeBSD options.
  
! ; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; FreeBSD options.
  
! ; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-10.3.0/gcc/config/frv/constraints.md gcc-11.1.0/gcc/config/frv/constraints.md
*** gcc-10.3.0/gcc/config/frv/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/frv/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Constraint definitions for FRV.
! ;; Copyright (C) 2001-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for FRV.
! ;; Copyright (C) 2001-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/frv/frv-asm.h gcc-11.1.0/gcc/config/frv/frv-asm.h
*** gcc-10.3.0/gcc/config/frv/frv-asm.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/frv/frv-asm.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Assembler Support.
!    Copyright (C) 2000-2020 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* Assembler Support.
!    Copyright (C) 2000-2021 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/frv/frv-modes.def gcc-11.1.0/gcc/config/frv/frv-modes.def
*** gcc-10.3.0/gcc/config/frv/frv-modes.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/frv/frv-modes.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler for FRV.
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler for FRV.
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/frv/frv-opts.h gcc-11.1.0/gcc/config/frv/frv-opts.h
*** gcc-10.3.0/gcc/config/frv/frv-opts.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/frv/frv-opts.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Frv option-handling defitions.
!    Copyright (C) 1999-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Frv option-handling defitions.
!    Copyright (C) 1999-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/frv/frv-protos.h gcc-11.1.0/gcc/config/frv/frv-protos.h
*** gcc-10.3.0/gcc/config/frv/frv-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/frv/frv-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Frv prototypes.
!    Copyright (C) 1999-2020 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Frv prototypes.
!    Copyright (C) 1999-2021 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/frv/frv.c gcc-11.1.0/gcc/config/frv/frv.c
*** gcc-10.3.0/gcc/config/frv/frv.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/frv/frv.c	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 1997-2020 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
  This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 1997-2021 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/frv/frv.h gcc-11.1.0/gcc/config/frv/frv.h
*** gcc-10.3.0/gcc/config/frv/frv.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/frv/frv.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Target macros for the FRV port of GCC.
!    Copyright (C) 1999-2020 Free Software Foundation, Inc.
     Contributed by Red Hat Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* Target macros for the FRV port of GCC.
!    Copyright (C) 1999-2021 Free Software Foundation, Inc.
     Contributed by Red Hat Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/frv/frv.md gcc-11.1.0/gcc/config/frv/frv.md
*** gcc-10.3.0/gcc/config/frv/frv.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/frv/frv.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Frv Machine Description
! ;; Copyright (C) 1999-2020 Free Software Foundation, Inc.
  ;; Contributed by Red Hat, Inc.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Frv Machine Description
! ;; Copyright (C) 1999-2021 Free Software Foundation, Inc.
  ;; Contributed by Red Hat, Inc.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/frv/frv.opt gcc-11.1.0/gcc/config/frv/frv.opt
*** gcc-10.3.0/gcc/config/frv/frv.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/frv/frv.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Options for the FR-V port of the compiler.
  
! ; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the FR-V port of the compiler.
  
! ; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** Variable
*** 26,44 ****
  frv_cpu_t frv_cpu_type = CPU_TYPE
  
  macc-4
! Target Report RejectNegative Mask(ACC_4)
  Use 4 media accumulators.
  
  macc-8
! Target Report RejectNegative InverseMask(ACC_4, ACC_8)
  Use 8 media accumulators.
  
  malign-labels
! Target Report Mask(ALIGN_LABELS)
  Enable label alignment optimizations.
  
  malloc-cc
! Target Report RejectNegative Mask(ALLOC_CC)
  Dynamically allocate cc registers.
  
  ; We used to default the branch cost to 2, but it was changed it to 1 to avoid
--- 26,44 ----
  frv_cpu_t frv_cpu_type = CPU_TYPE
  
  macc-4
! Target RejectNegative Mask(ACC_4)
  Use 4 media accumulators.
  
  macc-8
! Target RejectNegative InverseMask(ACC_4, ACC_8)
  Use 8 media accumulators.
  
  malign-labels
! Target Mask(ALIGN_LABELS)
  Enable label alignment optimizations.
  
  malloc-cc
! Target RejectNegative Mask(ALLOC_CC)
  Dynamically allocate cc registers.
  
  ; We used to default the branch cost to 2, but it was changed it to 1 to avoid
*************** Target RejectNegative Joined UInteger Va
*** 49,55 ****
  Set the cost of branches.
  
  mcond-exec
! Target Report Mask(COND_EXEC)
  Enable conditional execution other than moves/scc.
  
  mcond-exec-insns=
--- 49,55 ----
  Set the cost of branches.
  
  mcond-exec
! Target Mask(COND_EXEC)
  Enable conditional execution other than moves/scc.
  
  mcond-exec-insns=
*************** Target RejectNegative Joined UInteger Va
*** 61,67 ****
  Change the number of temporary registers that are available to conditionally-executed sequences.
  
  mcond-move
! Target Report Mask(COND_MOVE)
  Enable conditional moves.
  
  mcpu=
--- 61,67 ----
  Change the number of temporary registers that are available to conditionally-executed sequences.
  
  mcond-move
! Target Mask(COND_MOVE)
  Enable conditional moves.
  
  mcpu=
*************** mdebug-stack
*** 118,192 ****
  Target Undocumented Var(TARGET_DEBUG_STACK)
  
  mdouble
! Target Report Mask(DOUBLE)
  Use fp double instructions.
  
  mdword
! Target Report Mask(DWORD)
  Change the ABI to allow double word insns.
  
  mfdpic
! Target Report Mask(FDPIC)
  Enable Function Descriptor PIC mode.
  
  mfixed-cc
! Target Report RejectNegative InverseMask(ALLOC_CC, FIXED_CC)
  Just use icc0/fcc0.
  
  mfpr-32
! Target Report RejectNegative Mask(FPR_32)
  Only use 32 FPRs.
  
  mfpr-64
! Target Report RejectNegative InverseMask(FPR_32, FPR_64)
  Use 64 FPRs.
  
  mgpr-32
! Target Report RejectNegative Mask(GPR_32)
  Only use 32 GPRs.
  
  mgpr-64
! Target Report RejectNegative InverseMask(GPR_32, GPR_64)
  Use 64 GPRs.
  
  mgprel-ro
! Target Report Mask(GPREL_RO)
  Enable use of GPREL for read-only data in FDPIC.
  
  mhard-float
! Target Report RejectNegative InverseMask(SOFT_FLOAT, HARD_FLOAT)
  Use hardware floating point.
  
  minline-plt
! Target Report Mask(INLINE_PLT)
  Enable inlining of PLT in function calls.
  
  mlibrary-pic
! Target Report Mask(LIBPIC)
  Enable PIC support for building libraries.
  
  mlinked-fp
! Target Report Mask(LINKED_FP)
  Follow the EABI linkage requirements.
  
  mlong-calls
! Target Report Mask(LONG_CALLS)
  Disallow direct calls to global functions.
  
  mmedia
! Target Report Mask(MEDIA)
  Use media instructions.
  
  mmuladd
! Target Report Mask(MULADD)
  Use multiply add/subtract instructions.
  
  mmulti-cond-exec
! Target Report Mask(MULTI_CE)
  Enable optimizing &&/|| in conditional execution.
  
  mnested-cond-exec
! Target Report Mask(NESTED_CE)
  Enable nested conditional execution optimizations.
  
  ; Not used by the compiler proper.
--- 118,192 ----
  Target Undocumented Var(TARGET_DEBUG_STACK)
  
  mdouble
! Target Mask(DOUBLE)
  Use fp double instructions.
  
  mdword
! Target Mask(DWORD)
  Change the ABI to allow double word insns.
  
  mfdpic
! Target Mask(FDPIC)
  Enable Function Descriptor PIC mode.
  
  mfixed-cc
! Target RejectNegative InverseMask(ALLOC_CC, FIXED_CC)
  Just use icc0/fcc0.
  
  mfpr-32
! Target RejectNegative Mask(FPR_32)
  Only use 32 FPRs.
  
  mfpr-64
! Target RejectNegative InverseMask(FPR_32, FPR_64)
  Use 64 FPRs.
  
  mgpr-32
! Target RejectNegative Mask(GPR_32)
  Only use 32 GPRs.
  
  mgpr-64
! Target RejectNegative InverseMask(GPR_32, GPR_64)
  Use 64 GPRs.
  
  mgprel-ro
! Target Mask(GPREL_RO)
  Enable use of GPREL for read-only data in FDPIC.
  
  mhard-float
! Target RejectNegative InverseMask(SOFT_FLOAT, HARD_FLOAT)
  Use hardware floating point.
  
  minline-plt
! Target Mask(INLINE_PLT)
  Enable inlining of PLT in function calls.
  
  mlibrary-pic
! Target Mask(LIBPIC)
  Enable PIC support for building libraries.
  
  mlinked-fp
! Target Mask(LINKED_FP)
  Follow the EABI linkage requirements.
  
  mlong-calls
! Target Mask(LONG_CALLS)
  Disallow direct calls to global functions.
  
  mmedia
! Target Mask(MEDIA)
  Use media instructions.
  
  mmuladd
! Target Mask(MULADD)
  Use multiply add/subtract instructions.
  
  mmulti-cond-exec
! Target Mask(MULTI_CE)
  Enable optimizing &&/|| in conditional execution.
  
  mnested-cond-exec
! Target Mask(NESTED_CE)
  Enable nested conditional execution optimizations.
  
  ; Not used by the compiler proper.
*************** Target RejectNegative
*** 195,209 ****
  Do not mark ABI switches in e_flags.
  
  moptimize-membar
! Target Report Mask(OPTIMIZE_MEMBAR)
  Remove redundant membars.
  
  mpack
! Target Report Mask(PACK)
  Pack VLIW instructions.
  
  mscc
! Target Report Mask(SCC)
  Enable setting GPRs to the result of comparisons.
  
  msched-lookahead=
--- 195,209 ----
  Do not mark ABI switches in e_flags.
  
  moptimize-membar
! Target Mask(OPTIMIZE_MEMBAR)
  Remove redundant membars.
  
  mpack
! Target Mask(PACK)
  Pack VLIW instructions.
  
  mscc
! Target Mask(SCC)
  Enable setting GPRs to the result of comparisons.
  
  msched-lookahead=
*************** Target RejectNegative Joined UInteger Va
*** 211,225 ****
  Change the amount of scheduler lookahead.
  
  msoft-float
! Target Report RejectNegative Mask(SOFT_FLOAT)
  Use software floating point.
  
  mTLS
! Target Report RejectNegative Mask(BIG_TLS)
  Assume a large TLS segment.
  
  mtls
! Target Report RejectNegative InverseMask(BIG_TLS)
  Do not assume a large TLS segment.
  
  ; Not used by the compiler proper.
--- 211,225 ----
  Change the amount of scheduler lookahead.
  
  msoft-float
! Target RejectNegative Mask(SOFT_FLOAT)
  Use software floating point.
  
  mTLS
! Target RejectNegative Mask(BIG_TLS)
  Assume a large TLS segment.
  
  mtls
! Target RejectNegative InverseMask(BIG_TLS)
  Do not assume a large TLS segment.
  
  ; Not used by the compiler proper.
*************** Target RejectNegative
*** 233,237 ****
  Link with the library-pic libraries.
  
  mvliw-branch
! Target Report Mask(VLIW_BRANCH)
  Allow branches to be packed with other instructions.
--- 233,237 ----
  Link with the library-pic libraries.
  
  mvliw-branch
! Target Mask(VLIW_BRANCH)
  Allow branches to be packed with other instructions.
diff -Nrcpad gcc-10.3.0/gcc/config/frv/linux.h gcc-11.1.0/gcc/config/frv/linux.h
*** gcc-10.3.0/gcc/config/frv/linux.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/frv/linux.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Target macros for the FRV Linux port of GCC.
!    Copyright (C) 1999-2020 Free Software Foundation, Inc.
     Contributed by Red Hat Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* Target macros for the FRV Linux port of GCC.
!    Copyright (C) 1999-2021 Free Software Foundation, Inc.
     Contributed by Red Hat Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/frv/predicates.md gcc-11.1.0/gcc/config/frv/predicates.md
*** gcc-10.3.0/gcc/config/frv/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/frv/predicates.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Predicate definitions for Frv.
! ;; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for Frv.
! ;; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/frv/t-frv gcc-11.1.0/gcc/config/frv/t-frv
*** gcc-10.3.0/gcc/config/frv/t-frv	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/frv/t-frv	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2002-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2002-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/frv/t-linux gcc-11.1.0/gcc/config/frv/t-linux
*** gcc-10.3.0/gcc/config/frv/t-linux	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/frv/t-linux	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2004-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2004-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/ft32/constraints.md gcc-11.1.0/gcc/config/ft32/constraints.md
*** gcc-10.3.0/gcc/config/ft32/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/ft32/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Constraint definitions for FT32
! ;; Copyright (C) 2015-2020 Free Software Foundation, Inc.
  ;; Contributed by FTDI <support@ftdi.com>
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constraint definitions for FT32
! ;; Copyright (C) 2015-2021 Free Software Foundation, Inc.
  ;; Contributed by FTDI <support@ftdi.com>
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/ft32/ft32-protos.h gcc-11.1.0/gcc/config/ft32/ft32-protos.h
*** gcc-10.3.0/gcc/config/ft32/ft32-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/ft32/ft32-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Prototypes for ft32.c functions used in the md file & elsewhere.
!    Copyright (C) 2015-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Prototypes for ft32.c functions used in the md file & elsewhere.
!    Copyright (C) 2015-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/ft32/ft32.c gcc-11.1.0/gcc/config/ft32/ft32.c
*** gcc-10.3.0/gcc/config/ft32/ft32.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/ft32/ft32.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Target Code for ft32
!    Copyright (C) 2015-2020 Free Software Foundation, Inc.
     Contributed by FTDI <support@ftdi.com>
  
     This file is part of GCC.
--- 1,5 ----
  /* Target Code for ft32
!    Copyright (C) 2015-2021 Free Software Foundation, Inc.
     Contributed by FTDI <support@ftdi.com>
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/ft32/ft32.h gcc-11.1.0/gcc/config/ft32/ft32.h
*** gcc-10.3.0/gcc/config/ft32/ft32.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/ft32/ft32.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Target Definitions for ft32.
!    Copyright (C) 2015-2020 Free Software Foundation, Inc.
     Contributed by FTDI <support@ftdi.com>
  
     This file is part of GCC.
--- 1,5 ----
  /* Target Definitions for ft32.
!    Copyright (C) 2015-2021 Free Software Foundation, Inc.
     Contributed by FTDI <support@ftdi.com>
  
     This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/ft32/ft32.md gcc-11.1.0/gcc/config/ft32/ft32.md
*** gcc-10.3.0/gcc/config/ft32/ft32.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/ft32/ft32.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Machine description for FT32
! ;; Copyright (C) 2015-2020 Free Software Foundation, Inc.
  ;; Contributed by FTDI <support@ftdi.com>
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for FT32
! ;; Copyright (C) 2015-2021 Free Software Foundation, Inc.
  ;; Contributed by FTDI <support@ftdi.com>
  
  ;; This file is part of GCC.
***************
*** 89,97 ****
    "mul.l  %0,%1,%2")
  
  (define_insn "umulsidi3"
!   [(set (match_operand:DI 0 "register_operand" "=r,r")
!     (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
!          (zero_extend:DI (match_operand:SI 2 "ft32_rimm_operand" "r,KA"))))
     (clobber (reg:CC CC_REG))]
    ""
    "mul.l  $cc,%1,%2\;muluh.l %h0,%1,%2\;move.l   %0,$cc")
--- 89,97 ----
    "mul.l  %0,%1,%2")
  
  (define_insn "umulsidi3"
!   [(set (match_operand:DI 0 "register_operand" "=r")
!     (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
!          (zero_extend:DI (match_operand:SI 2 "register_operand" "r"))))
     (clobber (reg:CC CC_REG))]
    ""
    "mul.l  $cc,%1,%2\;muluh.l %h0,%1,%2\;move.l   %0,$cc")
diff -Nrcpad gcc-10.3.0/gcc/config/ft32/ft32.opt gcc-11.1.0/gcc/config/ft32/ft32.opt
*** gcc-10.3.0/gcc/config/ft32/ft32.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/ft32/ft32.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Options for the FT32 port of the compiler.
  
! ; Copyright (C) 2015-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the FT32 port of the compiler.
  
! ; Copyright (C) 2015-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
***************
*** 19,43 ****
  ; <http://www.gnu.org/licenses/>.
  
  msim
! Target Report Mask(SIM)
  Target the software simulator.
  
  mlra
! Target Report Var(ft32_lra_flag) Init(0) Save
  Use LRA instead of reload.
  
  mnodiv
! Target Report Mask(NODIV)
  Avoid use of the DIV and MOD instructions.
  
  mft32b
! Target Report Mask(FT32B)
  Target the FT32B architecture.
  
  mcompress
! Target Report Mask(COMPRESS)
  Enable FT32B code compression.
  
  mnopm
! Target Report Mask(NOPM)
  Avoid placing any readable data in program memory.
--- 19,43 ----
  ; <http://www.gnu.org/licenses/>.
  
  msim
! Target Mask(SIM)
  Target the software simulator.
  
  mlra
! Target Var(ft32_lra_flag) Init(0) Save
  Use LRA instead of reload.
  
  mnodiv
! Target Mask(NODIV)
  Avoid use of the DIV and MOD instructions.
  
  mft32b
! Target Mask(FT32B)
  Target the FT32B architecture.
  
  mcompress
! Target Mask(COMPRESS)
  Enable FT32B code compression.
  
  mnopm
! Target Mask(NOPM)
  Avoid placing any readable data in program memory.
diff -Nrcpad gcc-10.3.0/gcc/config/ft32/predicates.md gcc-11.1.0/gcc/config/ft32/predicates.md
*** gcc-10.3.0/gcc/config/ft32/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/ft32/predicates.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Predicate definitions for FT32
! ;; Copyright (C) 2015-2020 Free Software Foundation, Inc.
  ;; Contributed by FTDI <support@ftdi.com>
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicate definitions for FT32
! ;; Copyright (C) 2015-2021 Free Software Foundation, Inc.
  ;; Contributed by FTDI <support@ftdi.com>
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/ft32/t-ft32 gcc-11.1.0/gcc/config/ft32/t-ft32
*** gcc-10.3.0/gcc/config/ft32/t-ft32	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/ft32/t-ft32	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  # Target Makefile Fragment for ft32
! # Copyright (C) 2015-2020 Free Software Foundation, Inc.
  # Contributed by FTDI <support@ftdi.com>
  #
  # This file is part of GCC.
--- 1,5 ----
  # Target Makefile Fragment for ft32
! # Copyright (C) 2015-2021 Free Software Foundation, Inc.
  # Contributed by FTDI <support@ftdi.com>
  #
  # This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/fuchsia.h gcc-11.1.0/gcc/config/fuchsia.h
*** gcc-10.3.0/gcc/config/fuchsia.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/fuchsia.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Base configuration file for all Fuchsia targets.
!    Copyright (C) 2017-2020 Free Software Foundation, Inc.
     Contributed by Google.
  
  This file is part of GCC.
--- 1,5 ----
  /* Base configuration file for all Fuchsia targets.
!    Copyright (C) 2017-2021 Free Software Foundation, Inc.
     Contributed by Google.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/fused-madd.opt gcc-11.1.0/gcc/config/fused-madd.opt
*** gcc-10.3.0/gcc/config/fused-madd.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/fused-madd.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; -mfused-madd option (some targets only).
  ;
! ; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; -mfused-madd option (some targets only).
  ;
! ; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-10.3.0/gcc/config/g.opt gcc-11.1.0/gcc/config/g.opt
*** gcc-10.3.0/gcc/config/g.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/g.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; -G option (small data, some targets only).
  
! ; Copyright (C) 2003-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; -G option (small data, some targets only).
  
! ; Copyright (C) 2003-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/constraints.md gcc-11.1.0/gcc/config/gcn/constraints.md
*** gcc-10.3.0/gcc/config/gcn/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Constraint definitions for GCN.
! ;; Copyright (C) 2016-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for GCN.
! ;; Copyright (C) 2016-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/driver-gcn.c gcc-11.1.0/gcc/config/gcn/driver-gcn.c
*** gcc-10.3.0/gcc/config/gcn/driver-gcn.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/driver-gcn.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/gcn-builtins.def gcc-11.1.0/gcc/config/gcn/gcn-builtins.def
*** gcc-10.3.0/gcc/config/gcn/gcn-builtins.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/gcn-builtins.def	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     This file 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
--- 1,4 ----
! /* Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     This file 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
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/gcn-hsa.h gcc-11.1.0/gcc/config/gcn/gcn-hsa.h
*** gcc-10.3.0/gcc/config/gcn/gcn-hsa.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/gcn-hsa.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     This file 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
--- 1,4 ----
! /* Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     This file 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
***************
*** 18,25 ****
   #error elf.h included before elfos.h
  #endif
  
! #define TEXT_SECTION_ASM_OP "\t.section\t.text"
! #define BSS_SECTION_ASM_OP  "\t.section\t.bss"
  #define GLOBAL_ASM_OP       "\t.globl\t"
  #define DATA_SECTION_ASM_OP "\t.data\t"
  #define SET_ASM_OP          "\t.set\t"
--- 18,25 ----
   #error elf.h included before elfos.h
  #endif
  
! #define TEXT_SECTION_ASM_OP "\t.text"
! #define BSS_SECTION_ASM_OP  "\t.bss"
  #define GLOBAL_ASM_OP       "\t.globl\t"
  #define DATA_SECTION_ASM_OP "\t.data\t"
  #define SET_ASM_OP          "\t.set\t"
*************** extern unsigned int gcn_local_sym_hash (
*** 76,95 ****
  #define GOMP_SELF_SPECS ""
  
  /* Use LLVM assembler and linker options.  */
! #define ASM_SPEC  "-triple=amdgcn--amdhsa -mattr=-code-object-v3 "  \
  		  "%:last_arg(%{march=*:-mcpu=%*}) " \
  		  "-filetype=obj"
! /* Add -mlocal-symbol-id=<source-file-basename> unless the user (or mkoffload)
!    passes the option explicitly on the command line.  The option also causes
!    several dump-matching tests to fail in the testsuite, so the option is not
!    added when or tree dump/compare-debug options used in the testsuite are
!    present.
!    This has the potential for surprise, but a user can still use an explicit
!    -mlocal-symbol-id=<whatever> option manually together with -fdump-tree or
!    -fcompare-debug options.  */
! #define CC1_SPEC "%{!mlocal-symbol-id=*:%{!fdump-tree-*:"	\
! 		 "%{!fdump-ipa-*:%{!fcompare-debug*:-mlocal-symbol-id=%b}}}}"
! #define LINK_SPEC "--pie"
  #define LIB_SPEC  "-lc"
  
  /* Provides a _start symbol to keep the linker happy.  */
--- 76,85 ----
  #define GOMP_SELF_SPECS ""
  
  /* Use LLVM assembler and linker options.  */
! #define ASM_SPEC  "-triple=amdgcn--amdhsa "  \
  		  "%:last_arg(%{march=*:-mcpu=%*}) " \
  		  "-filetype=obj"
! #define LINK_SPEC "--pie --export-dynamic"
  #define LIB_SPEC  "-lc"
  
  /* Provides a _start symbol to keep the linker happy.  */
*************** extern const char *last_arg_spec_functio
*** 113,115 ****
--- 103,106 ----
  #define DWARF2_DEBUGGING_INFO      1
  #define DWARF2_ASM_LINE_DEBUG_INFO 1
  #define EH_FRAME_THROUGH_COLLECT2  1
+ #define DBX_REGISTER_NUMBER(REGNO) gcn_dwarf_register_number (REGNO)
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/gcn-modes.def gcc-11.1.0/gcc/config/gcn/gcn-modes.def
*** gcc-10.3.0/gcc/config/gcn/gcn-modes.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/gcn-modes.def	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     This file 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
--- 1,4 ----
! /* Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     This file 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
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/gcn-opts.h gcc-11.1.0/gcc/config/gcn/gcn-opts.h
*** gcc-10.3.0/gcc/config/gcn/gcn-opts.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/gcn-opts.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     This file 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
--- 1,4 ----
! /* Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     This file 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
***************
*** 20,27 ****
  /* Which processor to generate code or schedule for.  */
  enum processor_type
  {
!   PROCESSOR_FIJI,
!   PROCESSOR_VEGA
  };
  
  /* Set in gcn_option_override.  */
--- 20,29 ----
  /* Which processor to generate code or schedule for.  */
  enum processor_type
  {
!   PROCESSOR_FIJI,    // gfx803
!   PROCESSOR_VEGA10,  // gfx900
!   PROCESSOR_VEGA20,  // gfx906
!   PROCESSOR_GFX908   // as yet unnamed
  };
  
  /* Set in gcn_option_override.  */
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/gcn-passes.def gcc-11.1.0/gcc/config/gcn/gcn-passes.def
*** gcc-10.3.0/gcc/config/gcn/gcn-passes.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/gcn-passes.def	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- /* Copyright (C) 2017-2020 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/>.  */
- 
- INSERT_PASS_AFTER (pass_omp_target_link, 1, pass_omp_gcn);
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/gcn-protos.h gcc-11.1.0/gcc/config/gcn/gcn-protos.h
*** gcc-10.3.0/gcc/config/gcn/gcn-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/gcn-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     This file 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
--- 1,4 ----
! /* Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     This file 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
*************** extern bool gcn_can_split_p (machine_mod
*** 23,28 ****
--- 23,29 ----
  extern bool gcn_constant64_p (rtx);
  extern bool gcn_constant_p (rtx);
  extern rtx gcn_convert_mask_mode (rtx reg);
+ extern unsigned int gcn_dwarf_register_number (unsigned int regno);
  extern char * gcn_expand_dpp_shr_insn (machine_mode, const char *, int, int);
  extern void gcn_expand_epilogue ();
  extern rtx gcn_expand_scaled_offsets (addr_space_t as, rtx base, rtx offsets,
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/gcn-run.c gcc-11.1.0/gcc/config/gcn/gcn-run.c
*** gcc-10.3.0/gcc/config/gcn/gcn-run.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/gcn-run.c	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* Run a stand-alone AMD GCN kernel.
  
     Copyright 2017 Mentor Graphics Corporation
!    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
--- 1,7 ----
  /* Run a stand-alone AMD GCN kernel.
  
     Copyright 2017 Mentor Graphics Corporation
!    Copyright (C) 2018-2021 Free Software Foundation, Inc.
  
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
***************
*** 34,61 ****
  #include <elf.h>
  #include <signal.h>
  
- /* These probably won't be in elf.h for a while.  */
- #ifndef R_AMDGPU_NONE
- #define R_AMDGPU_NONE		0
- #define R_AMDGPU_ABS32_LO	1	/* (S + A) & 0xFFFFFFFF  */
- #define R_AMDGPU_ABS32_HI	2	/* (S + A) >> 32  */
- #define R_AMDGPU_ABS64		3	/* S + A  */
- #define R_AMDGPU_REL32		4	/* S + A - P  */
- #define R_AMDGPU_REL64		5	/* S + A - P  */
- #define R_AMDGPU_ABS32		6	/* S + A  */
- #define R_AMDGPU_GOTPCREL	7	/* G + GOT + A - P  */
- #define R_AMDGPU_GOTPCREL32_LO	8	/* (G + GOT + A - P) & 0xFFFFFFFF  */
- #define R_AMDGPU_GOTPCREL32_HI	9	/* (G + GOT + A - P) >> 32  */
- #define R_AMDGPU_REL32_LO	10	/* (S + A - P) & 0xFFFFFFFF  */
- #define R_AMDGPU_REL32_HI	11	/* (S + A - P) >> 32  */
- #define reserved		12
- #define R_AMDGPU_RELATIVE64	13	/* B + A  */
- #endif
- 
  #include "hsa.h"
  
  #ifndef HSA_RUNTIME_LIB
! #define HSA_RUNTIME_LIB "libhsa-runtime64.so"
  #endif
  
  #ifndef VERSION_STRING
--- 34,43 ----
  #include <elf.h>
  #include <signal.h>
  
  #include "hsa.h"
  
  #ifndef HSA_RUNTIME_LIB
! #define HSA_RUNTIME_LIB "libhsa-runtime64.so.1"
  #endif
  
  #ifndef VERSION_STRING
*************** load_image (const char *filename)
*** 429,448 ****
  					  &executable),
  	"Initialize GCN executable");
  
-   /* Hide relocations from the HSA runtime loader.
-      Keep a copy of the unmodified section headers to use later.  */
-   Elf64_Shdr *image_sections =
-     (Elf64_Shdr *) ((char *) image + image->e_shoff);
-   Elf64_Shdr *sections = malloc (sizeof (Elf64_Shdr) * image->e_shnum);
-   memcpy (sections, image_sections, sizeof (Elf64_Shdr) * image->e_shnum);
-   for (int i = image->e_shnum - 1; i >= 0; i--)
-     {
-       if (image_sections[i].sh_type == SHT_RELA
- 	  || image_sections[i].sh_type == SHT_REL)
- 	/* Change section type to something harmless.  */
- 	image_sections[i].sh_type = SHT_NOTE;
-     }
- 
    /* Add the HSACO to the executable.  */
    hsa_code_object_t co = { 0 };
    XHSA (hsa_fns.hsa_code_object_deserialize_fn (image, image_size, NULL, &co),
--- 411,416 ----
*************** load_image (const char *filename)
*** 457,479 ****
  
    /* Locate the "_init_array" function, and read the kernel's properties.  */
    hsa_executable_symbol_t symbol;
!   XHSA (hsa_fns.hsa_executable_get_symbol_fn (executable, NULL, "_init_array",
! 					      device, 0, &symbol),
  	"Find '_init_array' function");
    XHSA (hsa_fns.hsa_executable_symbol_get_info_fn
! 	    (symbol, HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_OBJECT, &init_array_kernel),
  	"Extract '_init_array' kernel object kernel object");
  
    /* Locate the "_fini_array" function, and read the kernel's properties.  */
!   XHSA (hsa_fns.hsa_executable_get_symbol_fn (executable, NULL, "_fini_array",
! 					      device, 0, &symbol),
  	"Find '_fini_array' function");
    XHSA (hsa_fns.hsa_executable_symbol_get_info_fn
! 	    (symbol, HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_OBJECT, &fini_array_kernel),
  	"Extract '_fini_array' kernel object kernel object");
  
    /* Locate the "main" function, and read the kernel's properties.  */
!   XHSA (hsa_fns.hsa_executable_get_symbol_fn (executable, NULL, "main",
  					      device, 0, &symbol),
  	"Find 'main' function");
    XHSA (hsa_fns.hsa_executable_symbol_get_info_fn
--- 425,451 ----
  
    /* Locate the "_init_array" function, and read the kernel's properties.  */
    hsa_executable_symbol_t symbol;
!   XHSA (hsa_fns.hsa_executable_get_symbol_fn (executable, NULL, 
! 					      "_init_array.kd", device, 0,
! 					      &symbol),
  	"Find '_init_array' function");
    XHSA (hsa_fns.hsa_executable_symbol_get_info_fn
! 	    (symbol, HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_OBJECT,
! 	     &init_array_kernel),
  	"Extract '_init_array' kernel object kernel object");
  
    /* Locate the "_fini_array" function, and read the kernel's properties.  */
!   XHSA (hsa_fns.hsa_executable_get_symbol_fn (executable, NULL,
! 					      "_fini_array.kd", device, 0,
! 					      &symbol),
  	"Find '_fini_array' function");
    XHSA (hsa_fns.hsa_executable_symbol_get_info_fn
! 	    (symbol, HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_OBJECT,
! 	     &fini_array_kernel),
  	"Extract '_fini_array' kernel object kernel object");
  
    /* Locate the "main" function, and read the kernel's properties.  */
!   XHSA (hsa_fns.hsa_executable_get_symbol_fn (executable, NULL, "main.kd",
  					      device, 0, &symbol),
  	"Find 'main' function");
    XHSA (hsa_fns.hsa_executable_symbol_get_info_fn
*************** load_image (const char *filename)
*** 491,616 ****
  	    (symbol, HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_PRIVATE_SEGMENT_SIZE,
  	     &private_segment_size),
  	"Extract private segment size");
- 
-   /* Find main function in ELF, and calculate actual load offset.  */
-   Elf64_Addr load_offset;
-   XHSA (hsa_fns.hsa_executable_symbol_get_info_fn
- 	    (symbol, HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_ADDRESS,
- 	     &load_offset),
- 	"Extract 'main' symbol address");
-   for (int i = 0; i < image->e_shnum; i++)
-     if (sections[i].sh_type == SHT_SYMTAB)
-       {
- 	Elf64_Shdr *strtab = &sections[sections[i].sh_link];
- 	char *strings = (char *) image + strtab->sh_offset;
- 
- 	for (size_t offset = 0;
- 	     offset < sections[i].sh_size;
- 	     offset += sections[i].sh_entsize)
- 	  {
- 	    Elf64_Sym *sym = (Elf64_Sym *) ((char *) image
- 					    + sections[i].sh_offset + offset);
- 	    if (strcmp ("main", strings + sym->st_name) == 0)
- 	      {
- 		load_offset -= sym->st_value;
- 		goto found_main;
- 	      }
- 	  }
-       }
-   /* We only get here when main was not found.
-      This should never happen.  */
-   fprintf (stderr, "Error: main function not found.\n");
-   abort ();
- found_main:;
- 
-   /* Find dynamic symbol table.  */
-   Elf64_Shdr *dynsym = NULL;
-   for (int i = 0; i < image->e_shnum; i++)
-     if (sections[i].sh_type == SHT_DYNSYM)
-       {
- 	dynsym = &sections[i];
- 	break;
-       }
- 
-   /* Fix up relocations.  */
-   for (int i = 0; i < image->e_shnum; i++)
-     {
-       if (sections[i].sh_type == SHT_RELA)
- 	for (size_t offset = 0;
- 	     offset < sections[i].sh_size;
- 	     offset += sections[i].sh_entsize)
- 	  {
- 	    Elf64_Rela *reloc = (Elf64_Rela *) ((char *) image
- 						+ sections[i].sh_offset
- 						+ offset);
- 	    Elf64_Sym *sym =
- 	      (dynsym
- 	       ? (Elf64_Sym *) ((char *) image
- 				+ dynsym->sh_offset
- 				+ (dynsym->sh_entsize
- 				   * ELF64_R_SYM (reloc->r_info))) : NULL);
- 
- 	    int64_t S = (sym ? sym->st_value : 0);
- 	    int64_t P = reloc->r_offset + load_offset;
- 	    int64_t A = reloc->r_addend;
- 	    int64_t B = load_offset;
- 	    int64_t V, size;
- 	    switch (ELF64_R_TYPE (reloc->r_info))
- 	      {
- 	      case R_AMDGPU_ABS32_LO:
- 		V = (S + A) & 0xFFFFFFFF;
- 		size = 4;
- 		break;
- 	      case R_AMDGPU_ABS32_HI:
- 		V = (S + A) >> 32;
- 		size = 4;
- 		break;
- 	      case R_AMDGPU_ABS64:
- 		V = S + A;
- 		size = 8;
- 		break;
- 	      case R_AMDGPU_REL32:
- 		V = S + A - P;
- 		size = 4;
- 		break;
- 	      case R_AMDGPU_REL64:
- 		/* FIXME
- 		   LLD seems to emit REL64 where the assembler has ABS64.
- 		   This is clearly wrong because it's not what the compiler
- 		   is expecting.  Let's assume, for now, that it's a bug.
- 		   In any case, GCN kernels are always self contained and
- 		   therefore relative relocations will have been resolved
- 		   already, so this should be a safe workaround.  */
- 		V = S + A /* - P */ ;
- 		size = 8;
- 		break;
- 	      case R_AMDGPU_ABS32:
- 		V = S + A;
- 		size = 4;
- 		break;
- 	      /* TODO R_AMDGPU_GOTPCREL */
- 	      /* TODO R_AMDGPU_GOTPCREL32_LO */
- 	      /* TODO R_AMDGPU_GOTPCREL32_HI */
- 	      case R_AMDGPU_REL32_LO:
- 		V = (S + A - P) & 0xFFFFFFFF;
- 		size = 4;
- 		break;
- 	      case R_AMDGPU_REL32_HI:
- 		V = (S + A - P) >> 32;
- 		size = 4;
- 		break;
- 	      case R_AMDGPU_RELATIVE64:
- 		V = B + A;
- 		size = 8;
- 		break;
- 	      default:
- 		fprintf (stderr, "Error: unsupported relocation type.\n");
- 		exit (1);
- 	      }
- 	    XHSA (hsa_fns.hsa_memory_copy_fn ((void *) P, &V, size),
- 		  "Fix up relocation");
- 	  }
-     }
  }
  
  /* Allocate some device memory from the kernargs region.
--- 463,468 ----
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/gcn-tree.c gcc-11.1.0/gcc/config/gcn/gcn-tree.c
*** gcc-10.3.0/gcc/config/gcn/gcn-tree.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/gcn-tree.c	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
     
--- 1,4 ----
! /* Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
     
***************
*** 46,170 ****
  #include "langhooks-def.h"
  
  /* }}}  */
- /* {{{ OMP GCN pass.
-  
-    This pass is intended to make any GCN-specfic transformations to OpenMP
-    target regions.
-  
-    At present, its only purpose is to convert some "omp" built-in functions
-    to use closer-to-the-metal "gcn" built-in functions.  */
- 
- unsigned int
- execute_omp_gcn (void)
- {
-   tree thr_num_tree = builtin_decl_explicit (BUILT_IN_OMP_GET_THREAD_NUM);
-   tree thr_num_id = DECL_NAME (thr_num_tree);
-   tree team_num_tree = builtin_decl_explicit (BUILT_IN_OMP_GET_TEAM_NUM);
-   tree team_num_id = DECL_NAME (team_num_tree);
-   basic_block bb;
-   gimple_stmt_iterator gsi;
-   unsigned int todo = 0;
- 
-   FOR_EACH_BB_FN (bb, cfun)
-     for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
-     {
-       gimple *call = gsi_stmt (gsi);
-       tree decl;
- 
-       if (is_gimple_call (call) && (decl = gimple_call_fndecl (call)))
- 	{
- 	  tree decl_id = DECL_NAME (decl);
- 	  tree lhs = gimple_get_lhs (call);
- 
- 	  if (decl_id == thr_num_id)
- 	    {
- 	      if (dump_file && (dump_flags & TDF_DETAILS))
- 		fprintf (dump_file,
- 			 "Replace '%s' with __builtin_gcn_dim_pos.\n",
- 			 IDENTIFIER_POINTER (decl_id));
- 
- 	      /* Transform this:
- 	         lhs = __builtin_omp_get_thread_num ()
- 	         to this:
- 	         lhs = __builtin_gcn_dim_pos (1)  */
- 	      tree fn = targetm.builtin_decl (GCN_BUILTIN_OMP_DIM_POS, 0);
- 	      tree fnarg = build_int_cst (unsigned_type_node, 1);
- 	      gimple *stmt = gimple_build_call (fn, 1, fnarg);
- 	      gimple_call_set_lhs (stmt, lhs);
- 	      gsi_replace (&gsi, stmt, true);
- 
- 	      todo |= TODO_update_ssa;
- 	    }
- 	  else if (decl_id == team_num_id)
- 	    {
- 	      if (dump_file && (dump_flags & TDF_DETAILS))
- 		fprintf (dump_file,
- 			 "Replace '%s' with __builtin_gcn_dim_pos.\n",
- 			 IDENTIFIER_POINTER (decl_id));
- 
- 	      /* Transform this:
- 	         lhs = __builtin_omp_get_team_num ()
- 	         to this:
- 	         lhs = __builtin_gcn_dim_pos (0)  */
- 	      tree fn = targetm.builtin_decl (GCN_BUILTIN_OMP_DIM_POS, 0);
- 	      tree fnarg = build_zero_cst (unsigned_type_node);
- 	      gimple *stmt = gimple_build_call (fn, 1, fnarg);
- 	      gimple_call_set_lhs (stmt, lhs);
- 	      gsi_replace (&gsi, stmt, true);
- 
- 	      todo |= TODO_update_ssa;
- 	    }
- 	}
-     }
- 
-   return todo;
- }
- 
- namespace
- {
- 
-   const pass_data pass_data_omp_gcn = {
-     GIMPLE_PASS,
-     "omp_gcn",			/* name */
-     OPTGROUP_NONE,		/* optinfo_flags */
-     TV_NONE,			/* tv_id */
-     0,				/* properties_required */
-     0,				/* properties_provided */
-     0,				/* properties_destroyed */
-     0,				/* todo_flags_start */
-     TODO_df_finish,		/* todo_flags_finish */
-   };
- 
-   class pass_omp_gcn : public gimple_opt_pass
-   {
-   public:
-     pass_omp_gcn (gcc::context *ctxt)
-       : gimple_opt_pass (pass_data_omp_gcn, ctxt)
-     {
-     }
- 
-     /* opt_pass methods: */
-     virtual bool gate (function *)
-     {
-       return flag_openmp;
-     }
- 
-     virtual unsigned int execute (function *)
-     {
-       return execute_omp_gcn ();
-     }
- 
-   }; /* class pass_omp_gcn.  */
- 
- } /* anon namespace.  */
- 
- gimple_opt_pass *
- make_pass_omp_gcn (gcc::context *ctxt)
- {
-   return new pass_omp_gcn (ctxt);
- }
- 
- /* }}}  */
  /* {{{ OpenACC reductions.  */
  
  /* Global lock variable, needed for 128bit worker & gang reductions.  */
--- 46,51 ----
*************** gcn_goacc_get_worker_red_decl (tree type
*** 456,462 ****
  
        varpool_node::finalize_decl (decl);
  
!       vec_safe_grow_cleared (machfun->reduc_decls, offset + 1);
        (*machfun->reduc_decls)[offset] = decl;
  
        return decl;
--- 337,343 ----
  
        varpool_node::finalize_decl (decl);
  
!       vec_safe_grow_cleared (machfun->reduc_decls, offset + 1, true);
        (*machfun->reduc_decls)[offset] = decl;
  
        return decl;
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/gcn-valu.md gcc-11.1.0/gcc/config/gcn/gcn-valu.md
*** gcc-10.3.0/gcc/config/gcn/gcn-valu.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/gcn-valu.md	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! ;; Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
  ;; This file 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
--- 1,4 ----
! ;; Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
  ;; This file 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
***************
*** 923,929 ****
    {
      addr_space_t as = INTVAL (operands[3]);
      static char buf[200];
!     sprintf (buf, "ds_write%%b2\t%%0, %%2 offset:%%1%s",
  	     (AS_GDS_P (as) ? " gds" : ""));
      return buf;
    }
--- 923,929 ----
    {
      addr_space_t as = INTVAL (operands[3]);
      static char buf[200];
!     sprintf (buf, "ds_write%%b2\t%%0, %%2 offset:%%1%s\;s_waitcnt\tlgkmcnt(0)",
  	     (AS_GDS_P (as) ? " gds" : ""));
      return buf;
    }
***************
*** 2185,2191 ****
    [(set_attr "type" "vop3a")
     (set_attr "length" "8,8")])
  
! (define_insn "subdf"
    [(set (match_operand:DF 0 "register_operand"  "=  v,   v")
  	(minus:DF
  	  (match_operand:DF 1 "gcn_alu_operand" "vSvB,   v")
--- 2185,2191 ----
    [(set_attr "type" "vop3a")
     (set_attr "length" "8,8")])
  
! (define_insn "subdf3"
    [(set (match_operand:DF 0 "register_operand"  "=  v,   v")
  	(minus:DF
  	  (match_operand:DF 1 "gcn_alu_operand" "vSvB,   v")
***************
*** 2351,2359 ****
  
  (define_insn "recip<mode>2<exec>"
    [(set (match_operand:V_FP 0 "register_operand"  "=  v")
! 	(div:V_FP
! 	  (vec_duplicate:V_FP (float:<SCALAR_MODE> (const_int 1)))
! 	  (match_operand:V_FP 1 "gcn_alu_operand" "vSvB")))]
    ""
    "v_rcp%i0\t%0, %1"
    [(set_attr "type" "vop1")
--- 2351,2359 ----
  
  (define_insn "recip<mode>2<exec>"
    [(set (match_operand:V_FP 0 "register_operand"  "=  v")
! 	(unspec:V_FP
! 	  [(match_operand:V_FP 1 "gcn_alu_operand" "vSvB")]
! 	  UNSPEC_RCP))]
    ""
    "v_rcp%i0\t%0, %1"
    [(set_attr "type" "vop1")
***************
*** 2361,2369 ****
  
  (define_insn "recip<mode>2"
    [(set (match_operand:FP 0 "register_operand"	 "=  v")
! 	(div:FP
! 	  (float:FP (const_int 1))
! 	  (match_operand:FP 1 "gcn_alu_operand"	 "vSvB")))]
    ""
    "v_rcp%i0\t%0, %1"
    [(set_attr "type" "vop1")
--- 2361,2369 ----
  
  (define_insn "recip<mode>2"
    [(set (match_operand:FP 0 "register_operand"	 "=  v")
! 	(unspec:FP
! 	  [(match_operand:FP 1 "gcn_alu_operand" "vSvB")]
! 	  UNSPEC_RCP))]
    ""
    "v_rcp%i0\t%0, %1"
    [(set_attr "type" "vop1")
***************
*** 2382,2409 ****
     (match_operand:V_FP 2 "gcn_valu_src0_operand")]
    "flag_reciprocal_math"
    {
!     rtx two = gcn_vec_constant (<MODE>mode,
! 		  const_double_from_real_value (dconst2, <SCALAR_MODE>mode));
      rtx initrcp = gen_reg_rtx (<MODE>mode);
      rtx fma = gen_reg_rtx (<MODE>mode);
      rtx rcp;
  
!     bool is_rcp = (GET_CODE (operands[1]) == CONST_VECTOR
  		   && real_identical
  		        (CONST_DOUBLE_REAL_VALUE
! 			  (CONST_VECTOR_ELT (operands[1], 0)), &dconstm1));
  
      if (is_rcp)
        rcp = operands[0];
      else
        rcp = gen_reg_rtx (<MODE>mode);
  
!     emit_insn (gen_recip<mode>2 (initrcp, operands[2]));
!     emit_insn (gen_fma<mode>4_negop2 (fma, initrcp, operands[2], two));
!     emit_insn (gen_mul<mode>3 (rcp, initrcp, fma));
  
      if (!is_rcp)
!       emit_insn (gen_mul<mode>3 (operands[0], operands[1], rcp));
  
      DONE;
    })
--- 2382,2420 ----
     (match_operand:V_FP 2 "gcn_valu_src0_operand")]
    "flag_reciprocal_math"
    {
!     rtx one = gcn_vec_constant (<MODE>mode,
! 		  const_double_from_real_value (dconst1, <SCALAR_MODE>mode));
      rtx initrcp = gen_reg_rtx (<MODE>mode);
      rtx fma = gen_reg_rtx (<MODE>mode);
      rtx rcp;
+     rtx num = operands[1], denom = operands[2];
  
!     bool is_rcp = (GET_CODE (num) == CONST_VECTOR
  		   && real_identical
  		        (CONST_DOUBLE_REAL_VALUE
! 			  (CONST_VECTOR_ELT (num, 0)), &dconstm1));
  
      if (is_rcp)
        rcp = operands[0];
      else
        rcp = gen_reg_rtx (<MODE>mode);
  
!     emit_insn (gen_recip<mode>2 (initrcp, denom));
!     emit_insn (gen_fma<mode>4_negop2 (fma, initrcp, denom, one));
!     emit_insn (gen_fma<mode>4 (rcp, fma, initrcp, initrcp));
  
      if (!is_rcp)
!       {
! 	rtx div_est = gen_reg_rtx (<MODE>mode);
! 	rtx fma2 = gen_reg_rtx (<MODE>mode);
! 	rtx fma3 = gen_reg_rtx (<MODE>mode);
! 	rtx fma4 = gen_reg_rtx (<MODE>mode);
! 	emit_insn (gen_mul<mode>3 (div_est, num, rcp));
! 	emit_insn (gen_fma<mode>4_negop2 (fma2, div_est, denom, num));
! 	emit_insn (gen_fma<mode>4 (fma3, fma2, rcp, div_est));
! 	emit_insn (gen_fma<mode>4_negop2 (fma4, fma3, denom, num));
! 	emit_insn (gen_fma<mode>4 (operands[0], fma4, rcp, fma3));
!       }
  
      DONE;
    })
***************
*** 2414,2423 ****
     (match_operand:FP 2 "gcn_valu_src0_operand")]
    "flag_reciprocal_math"
    {
!     rtx two = const_double_from_real_value (dconst2, <MODE>mode);
      rtx initrcp = gen_reg_rtx (<MODE>mode);
      rtx fma = gen_reg_rtx (<MODE>mode);
      rtx rcp;
  
      bool is_rcp = (GET_CODE (operands[1]) == CONST_DOUBLE
  		   && real_identical (CONST_DOUBLE_REAL_VALUE (operands[1]),
--- 2425,2435 ----
     (match_operand:FP 2 "gcn_valu_src0_operand")]
    "flag_reciprocal_math"
    {
!     rtx one = const_double_from_real_value (dconst1, <MODE>mode);
      rtx initrcp = gen_reg_rtx (<MODE>mode);
      rtx fma = gen_reg_rtx (<MODE>mode);
      rtx rcp;
+     rtx num = operands[1], denom = operands[2];
  
      bool is_rcp = (GET_CODE (operands[1]) == CONST_DOUBLE
  		   && real_identical (CONST_DOUBLE_REAL_VALUE (operands[1]),
***************
*** 2428,2439 ****
      else
        rcp = gen_reg_rtx (<MODE>mode);
  
!     emit_insn (gen_recip<mode>2 (initrcp, operands[2]));
!     emit_insn (gen_fma<mode>4_negop2 (fma, initrcp, operands[2], two));
!     emit_insn (gen_mul<mode>3 (rcp, initrcp, fma));
  
      if (!is_rcp)
!       emit_insn (gen_mul<mode>3 (operands[0], operands[1], rcp));
  
      DONE;
    })
--- 2440,2461 ----
      else
        rcp = gen_reg_rtx (<MODE>mode);
  
!     emit_insn (gen_recip<mode>2 (initrcp, denom));
!     emit_insn (gen_fma<mode>4_negop2 (fma, initrcp, denom, one));
!     emit_insn (gen_fma<mode>4 (rcp, fma, initrcp, initrcp));
  
      if (!is_rcp)
!       {
! 	rtx div_est = gen_reg_rtx (<MODE>mode);
! 	rtx fma2 = gen_reg_rtx (<MODE>mode);
! 	rtx fma3 = gen_reg_rtx (<MODE>mode);
! 	rtx fma4 = gen_reg_rtx (<MODE>mode);
! 	emit_insn (gen_mul<mode>3 (div_est, num, rcp));
! 	emit_insn (gen_fma<mode>4_negop2 (fma2, div_est, denom, num));
! 	emit_insn (gen_fma<mode>4 (fma3, fma2, rcp, div_est));
! 	emit_insn (gen_fma<mode>4_negop2 (fma4, fma3, denom, num));
! 	emit_insn (gen_fma<mode>4 (operands[0], fma4, rcp, fma3));
!       }
  
      DONE;
    })
***************
*** 3076,3081 ****
--- 3098,3123 ----
      DONE;
    })
  
+ ;; 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")
+   (match_operand:V_FP 2 "gcn_alu_operand")]
+   "can_create_pseudo_p ()
+    && (flag_openacc || flag_openmp
+        || flag_associative_math)"
+   {
+     rtx dest = operands[0];
+     rtx scalar = operands[1];
+     rtx vector = operands[2];
+     rtx tmp = gen_reg_rtx (<SCALAR_MODE>mode);
+ 
+     emit_insn (gen_reduc_plus_scal_<mode> (tmp, vector));
+     emit_insn (gen_add<scalar_mode>3 (dest, scalar, tmp));
+      DONE;
+    })
  
  (define_insn "*<reduc_op>_dpp_shr_<mode>"
    [(set (match_operand:V_1REG 0 "register_operand"   "=v")
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/gcn.c gcc-11.1.0/gcc/config/gcn/gcn.c
*** gcc-10.3.0/gcc/config/gcn/gcn.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/gcn.c	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     This file 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
--- 1,4 ----
! /* Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     This file 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
*************** int gcn_isa = 3;		/* Default to GCN3.  *
*** 83,89 ****
  /* The number of registers usable by normal non-kernel functions.
     The SGPR count includes any special extra registers such as VCC.  */
  
! #define MAX_NORMAL_SGPR_COUNT	64
  #define MAX_NORMAL_VGPR_COUNT	24
  
  /* }}}  */
--- 83,89 ----
  /* The number of registers usable by normal non-kernel functions.
     The SGPR count includes any special extra registers such as VCC.  */
  
! #define MAX_NORMAL_SGPR_COUNT	62  // i.e. 64 with VCC
  #define MAX_NORMAL_VGPR_COUNT	24
  
  /* }}}  */
*************** gcn_option_override (void)
*** 127,133 ****
    if (!flag_pic)
      flag_pic = flag_pie;
  
!   gcn_isa = gcn_arch == PROCESSOR_VEGA ? 5 : 3;
  
    /* The default stack size needs to be small for offload kernels because
       there may be many, many threads.  Also, a smaller stack gives a
--- 127,133 ----
    if (!flag_pic)
      flag_pic = flag_pie;
  
!   gcn_isa = gcn_arch == PROCESSOR_FIJI ? 3 : 5;
  
    /* The default stack size needs to be small for offload kernels because
       there may be many, many threads.  Also, a smaller stack gives a
*************** static const struct gcn_kernel_arg_type
*** 168,204 ****
    {"exec", NULL, DImode, EXEC_REG},
  #define PRIVATE_SEGMENT_BUFFER_ARG 1
    {"private_segment_buffer",
!     "enable_sgpr_private_segment_buffer", TImode, -1},
  #define DISPATCH_PTR_ARG 2
!   {"dispatch_ptr", "enable_sgpr_dispatch_ptr", DImode, -1},
  #define QUEUE_PTR_ARG 3
!   {"queue_ptr", "enable_sgpr_queue_ptr", DImode, -1},
  #define KERNARG_SEGMENT_PTR_ARG 4
!   {"kernarg_segment_ptr", "enable_sgpr_kernarg_segment_ptr", DImode, -1},
!   {"dispatch_id", "enable_sgpr_dispatch_id", DImode, -1},
  #define FLAT_SCRATCH_INIT_ARG 6
!   {"flat_scratch_init", "enable_sgpr_flat_scratch_init", DImode, -1},
  #define FLAT_SCRATCH_SEGMENT_SIZE_ARG 7
!   {"private_segment_size", "enable_sgpr_private_segment_size", SImode, -1},
!   {"grid_workgroup_count_X",
!     "enable_sgpr_grid_workgroup_count_x", SImode, -1},
!   {"grid_workgroup_count_Y",
!     "enable_sgpr_grid_workgroup_count_y", SImode, -1},
!   {"grid_workgroup_count_Z",
!     "enable_sgpr_grid_workgroup_count_z", SImode, -1},
! #define WORKGROUP_ID_X_ARG 11
!   {"workgroup_id_X", "enable_sgpr_workgroup_id_x", SImode, -2},
!   {"workgroup_id_Y", "enable_sgpr_workgroup_id_y", SImode, -2},
!   {"workgroup_id_Z", "enable_sgpr_workgroup_id_z", SImode, -2},
!   {"workgroup_info", "enable_sgpr_workgroup_info", SImode, -1},
! #define PRIVATE_SEGMENT_WAVE_OFFSET_ARG 15
    {"private_segment_wave_offset",
!     "enable_sgpr_private_segment_wave_byte_offset", SImode, -2},
! #define WORK_ITEM_ID_X_ARG 16
    {"work_item_id_X", NULL, V64SImode, FIRST_VGPR_REG},
! #define WORK_ITEM_ID_Y_ARG 17
    {"work_item_id_Y", NULL, V64SImode, FIRST_VGPR_REG + 1},
! #define WORK_ITEM_ID_Z_ARG 18
    {"work_item_id_Z", NULL, V64SImode, FIRST_VGPR_REG + 2}
  };
  
--- 168,198 ----
    {"exec", NULL, DImode, EXEC_REG},
  #define PRIVATE_SEGMENT_BUFFER_ARG 1
    {"private_segment_buffer",
!     ".amdhsa_user_sgpr_private_segment_buffer", TImode, -1},
  #define DISPATCH_PTR_ARG 2
!   {"dispatch_ptr", ".amdhsa_user_sgpr_dispatch_ptr", DImode, -1},
  #define QUEUE_PTR_ARG 3
!   {"queue_ptr", ".amdhsa_user_sgpr_queue_ptr", DImode, -1},
  #define KERNARG_SEGMENT_PTR_ARG 4
!   {"kernarg_segment_ptr", ".amdhsa_user_sgpr_kernarg_segment_ptr", DImode, -1},
!   {"dispatch_id", ".amdhsa_user_sgpr_dispatch_id", DImode, -1},
  #define FLAT_SCRATCH_INIT_ARG 6
!   {"flat_scratch_init", ".amdhsa_user_sgpr_flat_scratch_init", DImode, -1},
  #define FLAT_SCRATCH_SEGMENT_SIZE_ARG 7
!   {"private_segment_size", ".amdhsa_user_sgpr_private_segment_size", SImode, -1},
! #define WORKGROUP_ID_X_ARG 8
!   {"workgroup_id_X", ".amdhsa_system_sgpr_workgroup_id_x", SImode, -2},
!   {"workgroup_id_Y", ".amdhsa_system_sgpr_workgroup_id_y", SImode, -2},
!   {"workgroup_id_Z", ".amdhsa_system_sgpr_workgroup_id_z", SImode, -2},
!   {"workgroup_info", ".amdhsa_system_sgpr_workgroup_info", SImode, -1},
! #define PRIVATE_SEGMENT_WAVE_OFFSET_ARG 12
    {"private_segment_wave_offset",
!     ".amdhsa_system_sgpr_private_segment_wavefront_offset", SImode, -2},
! #define WORK_ITEM_ID_X_ARG 13
    {"work_item_id_X", NULL, V64SImode, FIRST_VGPR_REG},
! #define WORK_ITEM_ID_Y_ARG 14
    {"work_item_id_Y", NULL, V64SImode, FIRST_VGPR_REG + 1},
! #define WORK_ITEM_ID_Z_ARG 15
    {"work_item_id_Z", NULL, V64SImode, FIRST_VGPR_REG + 2}
  };
  
*************** gcn_parse_amdgpu_hsa_kernel_attribute (s
*** 234,240 ****
        const char *str;
        if (TREE_CODE (TREE_VALUE (list)) != STRING_CST)
  	{
! 	  error ("amdgpu_hsa_kernel attribute requires string constant "
  		 "arguments");
  	  break;
  	}
--- 228,234 ----
        const char *str;
        if (TREE_CODE (TREE_VALUE (list)) != STRING_CST)
  	{
! 	  error ("%<amdgpu_hsa_kernel%> attribute requires string constant "
  		 "arguments");
  	  break;
  	}
*************** gcn_parse_amdgpu_hsa_kernel_attribute (s
*** 247,259 ****
  	}
        if (a == GCN_KERNEL_ARG_TYPES)
  	{
! 	  error ("unknown specifier %s in amdgpu_hsa_kernel attribute", str);
  	  err = true;
  	  break;
  	}
        if (args->requested & (1 << a))
  	{
! 	  error ("duplicated parameter specifier %s in amdgpu_hsa_kernel "
  		 "attribute", str);
  	  err = true;
  	  break;
--- 241,254 ----
  	}
        if (a == GCN_KERNEL_ARG_TYPES)
  	{
! 	  error ("unknown specifier %qs in %<amdgpu_hsa_kernel%> attribute",
! 		 str);
  	  err = true;
  	  break;
  	}
        if (args->requested & (1 << a))
  	{
! 	  error ("duplicated parameter specifier %qs in %<amdgpu_hsa_kernel%> "
  		 "attribute", str);
  	  err = true;
  	  break;
*************** static const struct attribute_spec gcn_a
*** 356,361 ****
--- 351,369 ----
  /* }}}  */
  /* {{{ Registers and modes.  */
  
+ /* Implement TARGET_SCALAR_MODE_SUPPORTED_P.  */
+ 
+ bool
+ gcn_scalar_mode_supported_p (scalar_mode mode)
+ {
+   return (mode == BImode
+ 	  || mode == QImode
+ 	  || mode == HImode /* || mode == HFmode  */
+ 	  || mode == SImode || mode == SFmode
+ 	  || mode == DImode || mode == DFmode
+ 	  || mode == TImode);
+ }
+ 
  /* Implement TARGET_CLASS_MAX_NREGS.
   
     Return the number of hard registers needed to hold a value of MODE in
*************** gcn_conditional_register_usage (void)
*** 2076,2082 ****
    if (cfun->machine->normal_function)
      {
        /* Restrict the set of SGPRs and VGPRs used by non-kernel functions.  */
!       for (int i = SGPR_REGNO (MAX_NORMAL_SGPR_COUNT - 2);
  	   i <= LAST_SGPR_REG; i++)
  	fixed_regs[i] = 1, call_used_regs[i] = 1;
  
--- 2084,2090 ----
    if (cfun->machine->normal_function)
      {
        /* Restrict the set of SGPRs and VGPRs used by non-kernel functions.  */
!       for (int i = SGPR_REGNO (MAX_NORMAL_SGPR_COUNT);
  	   i <= LAST_SGPR_REG; i++)
  	fixed_regs[i] = 1, call_used_regs[i] = 1;
  
*************** gcn_conditional_register_usage (void)
*** 2095,2101 ****
    /* Requesting a set of args different from the default violates the ABI.  */
    if (!leaf_function_p ())
      warning (0, "A non-default set of initial values has been requested, "
! 		"which violates the ABI!");
  
    for (int i = SGPR_REGNO (0); i < SGPR_REGNO (14); i++)
      fixed_regs[i] = 0;
--- 2103,2109 ----
    /* Requesting a set of args different from the default violates the ABI.  */
    if (!leaf_function_p ())
      warning (0, "A non-default set of initial values has been requested, "
! 		"which violates the ABI");
  
    for (int i = SGPR_REGNO (0); i < SGPR_REGNO (14); i++)
      fixed_regs[i] = 0;
*************** gcn_conditional_register_usage (void)
*** 2130,2139 ****
      fixed_regs[cfun->machine->args.reg[WORK_ITEM_ID_Y_ARG]] = 1;
    if (cfun->machine->args.reg[WORK_ITEM_ID_Z_ARG] >= 0)
      fixed_regs[cfun->machine->args.reg[WORK_ITEM_ID_Z_ARG]] = 1;
- 
-   if (TARGET_GCN5_PLUS)
-     /* v0 is always zero, for global nul-offsets.  */
-     fixed_regs[VGPR_REGNO (0)] = 1;
  }
  
  /* Determine if a load or store is valid, according to the register classes
--- 2138,2143 ----
*************** gcn_function_arg (cumulative_args_t cum_
*** 2298,2303 ****
--- 2302,2311 ----
        if (targetm.calls.must_pass_in_stack (arg))
  	return 0;
  
+       /* Vector parameters are not supported yet.  */
+       if (VECTOR_MODE_P (arg.mode))
+ 	return 0;
+ 
        int reg_num = FIRST_PARM_REG + cum->num;
        int num_regs = num_arg_regs (arg);
        if (num_regs > 0)
*************** gcn_return_in_memory (const_tree type, c
*** 2485,2490 ****
--- 2493,2502 ----
    if (AGGREGATE_TYPE_P (type))
      return true;
  
+   /* Vector return values are not supported yet.  */
+   if (VECTOR_TYPE_P (type))
+     return true;
+ 
    if (mode == BLKmode)
      return true;
  
*************** gcn_omp_device_kind_arch_isa (enum omp_d
*** 2575,2583 ****
        if (strcmp (name, "fiji") == 0)
  	return gcn_arch == PROCESSOR_FIJI;
        if (strcmp (name, "gfx900") == 0)
! 	return gcn_arch == PROCESSOR_VEGA;
        if (strcmp (name, "gfx906") == 0)
! 	return gcn_arch == PROCESSOR_VEGA;
        return 0;
      default:
        gcc_unreachable ();
--- 2587,2597 ----
        if (strcmp (name, "fiji") == 0)
  	return gcn_arch == PROCESSOR_FIJI;
        if (strcmp (name, "gfx900") == 0)
! 	return gcn_arch == PROCESSOR_VEGA10;
        if (strcmp (name, "gfx906") == 0)
! 	return gcn_arch == PROCESSOR_VEGA20;
!       if (strcmp (name, "gfx908") == 0)
! 	return gcn_arch == PROCESSOR_GFX908;
        return 0;
      default:
        gcc_unreachable ();
*************** gcn_expand_prologue ()
*** 2794,2800 ****
--- 2808,2818 ----
    if (!cfun || !cfun->machine || cfun->machine->normal_function)
      {
        rtx sp = gen_rtx_REG (Pmode, STACK_POINTER_REGNUM);
+       rtx sp_hi = gcn_operand_part (Pmode, sp, 1);
+       rtx sp_lo = gcn_operand_part (Pmode, sp, 0);
        rtx fp = gen_rtx_REG (Pmode, HARD_FRAME_POINTER_REGNUM);
+       rtx fp_hi = gcn_operand_part (Pmode, fp, 1);
+       rtx fp_lo = gcn_operand_part (Pmode, fp, 0);
  
        start_sequence ();
  
*************** gcn_expand_prologue ()
*** 2811,2824 ****
  	+ offsets->callee_saves
  	+ offsets->local_vars + offsets->outgoing_args_size;
        if (sp_adjust > 0)
! 	emit_insn (gen_adddi3_scc (sp, sp, gen_int_mode (sp_adjust, DImode)));
  
        if (offsets->need_frame_pointer)
! 	emit_insn (gen_adddi3_scc (fp, sp,
! 				   gen_int_mode
! 				   (-(offsets->local_vars +
! 				      offsets->outgoing_args_size),
! 				    DImode)));
  
        rtx_insn *seq = get_insns ();
        end_sequence ();
--- 2829,2868 ----
  	+ offsets->callee_saves
  	+ 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);
! 	  rtx insn = emit_insn (gen_addsi3_scalar_carry (sp_lo, sp_lo,
! 							 adjustment, scc));
! 	  RTX_FRAME_RELATED_P (insn) = 1;
! 	  add_reg_note (insn, REG_FRAME_RELATED_EXPR,
! 			gen_rtx_SET (sp,
! 				     gen_rtx_PLUS (DImode, sp, adjustment)));
! 	  emit_insn (gen_addcsi3_scalar_zero (sp_hi, sp_hi, scc));
! 	}
  
        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);
! 	  rtx adjustment = gen_int_mode (fp_adjust, SImode);
! 	  rtx insn = emit_insn (gen_addsi3_scalar_carry(fp_lo, sp_lo,
! 							adjustment, scc));
! 	  RTX_FRAME_RELATED_P (insn) = 1;
! 	  add_reg_note (insn, REG_FRAME_RELATED_EXPR,
! 			gen_rtx_SET (fp,
! 				     gen_rtx_PLUS (DImode, sp, adjustment)));
! 	  emit_insn (gen_addcsi3_scalar (fp_hi, sp_hi,
! 					 (fp_adjust < 0 ? GEN_INT (-1)
! 					  : const0_rtx),
! 					 scc, scc));
! 	}
  
        rtx_insn *seq = get_insns ();
        end_sequence ();
*************** gcn_expand_prologue ()
*** 2864,2869 ****
--- 2908,2915 ----
  
        /* Set up frame pointer and stack pointer.  */
        rtx sp = gen_rtx_REG (DImode, STACK_POINTER_REGNUM);
+       rtx sp_hi = simplify_gen_subreg (SImode, sp, DImode, 4);
+       rtx sp_lo = simplify_gen_subreg (SImode, sp, DImode, 0);
        rtx fp = gen_rtx_REG (DImode, HARD_FRAME_POINTER_REGNUM);
        rtx fp_hi = simplify_gen_subreg (SImode, fp, DImode, 4);
        rtx fp_lo = simplify_gen_subreg (SImode, fp, DImode, 0);
*************** gcn_expand_prologue ()
*** 2879,2888 ****
        emit_insn (gen_addsi3_scalar_carry (fp_lo, fp_lo, wave_offset, scc));
        emit_insn (gen_addcsi3_scalar_zero (fp_hi, fp_hi, scc));
  
        if (sp_adjust > 0)
! 	emit_insn (gen_adddi3_scc (sp, fp, gen_int_mode (sp_adjust, DImode)));
        else
! 	emit_move_insn (sp, fp);
  
        /* Make sure the flat scratch reg doesn't get optimised away.  */
        emit_insn (gen_prologue_use (gen_rtx_REG (DImode, FLAT_SCRATCH_REG)));
--- 2925,2952 ----
        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.  */
+       rtx dbg_adjustment = gen_int_mode (sp_adjust + offsets->callee_saves,
+ 					 DImode);
+       rtx insn;
        if (sp_adjust > 0)
! 	{
! 	  rtx scc = gen_rtx_REG (BImode, SCC_REG);
! 	  rtx adjustment = gen_int_mode (sp_adjust, DImode);
! 	  insn = emit_insn (gen_addsi3_scalar_carry(sp_lo, fp_lo, adjustment,
! 						    scc));
! 	  emit_insn (gen_addcsi3_scalar_zero (sp_hi, fp_hi, scc));
! 	}
        else
! 	insn = emit_move_insn (sp, fp);
!       RTX_FRAME_RELATED_P (insn) = 1;
!       add_reg_note (insn, REG_FRAME_RELATED_EXPR,
! 		    gen_rtx_SET (sp, gen_rtx_PLUS (DImode, sp,
! 						   dbg_adjustment)));
  
        /* Make sure the flat scratch reg doesn't get optimised away.  */
        emit_insn (gen_prologue_use (gen_rtx_REG (DImode, FLAT_SCRATCH_REG)));
*************** gcn_vectorize_vec_perm_const (machine_mo
*** 3920,3933 ****
    unsigned int perm[64];
    for (unsigned int i = 0; i < nelt; ++i)
      perm[i] = sel[i] & (2 * nelt - 1);
  
    /* Make life a bit easier by swapping operands if necessary so that
       the first element always comes from src0.  */
    if (perm[0] >= nelt)
      {
!       rtx temp = src0;
!       src0 = src1;
!       src1 = temp;
  
        for (unsigned int i = 0; i < nelt; ++i)
  	if (perm[i] < nelt)
--- 3984,4000 ----
    unsigned int perm[64];
    for (unsigned int i = 0; i < nelt; ++i)
      perm[i] = sel[i] & (2 * nelt - 1);
+   for (unsigned int i = nelt; i < 64; ++i)
+     perm[i] = 0;
+ 
+   src0 = force_reg (vmode, src0);
+   src1 = force_reg (vmode, src1);
  
    /* Make life a bit easier by swapping operands if necessary so that
       the first element always comes from src0.  */
    if (perm[0] >= nelt)
      {
!       std::swap (src0, src1);
  
        for (unsigned int i = 0; i < nelt; ++i)
  	if (perm[i] < nelt)
*************** gcn_vectorize_preferred_simd_mode (scala
*** 4045,4052 ****
     In particular, we do *not* want to match vector bit-size.  */
  
  static opt_machine_mode
! gcn_related_vector_mode (machine_mode vector_mode, scalar_mode element_mode,
! 			 poly_uint64 nunits)
  {
    if (known_ne (nunits, 0U) && known_ne (nunits, 64U))
      return VOIDmode;
--- 4112,4119 ----
     In particular, we do *not* want to match vector bit-size.  */
  
  static opt_machine_mode
! gcn_related_vector_mode (machine_mode ARG_UNUSED (vector_mode),
! 			 scalar_mode element_mode, poly_uint64 nunits)
  {
    if (known_ne (nunits, 0U) && known_ne (nunits, 64U))
      return VOIDmode;
*************** gcn_expand_reduc_scalar (machine_mode mo
*** 4189,4195 ****
  		      || unspec == UNSPEC_SMAX_DPP_SHR
  		      || unspec == UNSPEC_UMIN_DPP_SHR
  		      || unspec == UNSPEC_UMAX_DPP_SHR)
! 		     && mode == V64DImode)
  		    || (unspec == UNSPEC_PLUS_DPP_SHR
  			&& mode == V64DFmode));
    rtx_code code = (unspec == UNSPEC_SMIN_DPP_SHR ? SMIN
--- 4256,4263 ----
  		      || unspec == UNSPEC_SMAX_DPP_SHR
  		      || unspec == UNSPEC_UMIN_DPP_SHR
  		      || unspec == UNSPEC_UMAX_DPP_SHR)
! 		     && (mode == V64DImode
! 			 || mode == V64DFmode))
  		    || (unspec == UNSPEC_PLUS_DPP_SHR
  			&& mode == V64DFmode));
    rtx_code code = (unspec == UNSPEC_SMIN_DPP_SHR ? SMIN
*************** gcn_md_reorg (void)
*** 4436,4441 ****
--- 4504,4511 ----
        df_insn_rescan_all ();
      }
  
+   df_live_add_problem ();
+   df_live_set_all_dirty ();
    df_analyze ();
  
    /* This pass ensures that the EXEC register is set correctly, according
*************** gcn_md_reorg (void)
*** 4457,4462 ****
--- 4527,4543 ----
        int64_t curr_exec = 0;	/* 0 here means 'the value is that of EXEC
  				   after last_exec_def is executed'.  */
  
+       bitmap live_in = DF_LR_IN (bb);
+       bool exec_live_on_entry = false;
+       if (bitmap_bit_p (live_in, EXEC_LO_REG)
+ 	  || bitmap_bit_p (live_in, EXEC_HI_REG))
+ 	{
+ 	  if (dump_file)
+ 	    fprintf (dump_file, "EXEC reg is live on entry to block %d\n",
+ 		     (int) bb->index);
+ 	  exec_live_on_entry = true;
+ 	}
+ 
        FOR_BB_INSNS_SAFE (bb, insn, curr)
  	{
  	  if (!NONDEBUG_INSN_P (insn))
*************** gcn_md_reorg (void)
*** 4595,4600 ****
--- 4676,4683 ----
  			 exec_lo_def_p == exec_hi_def_p ? "full" : "partial",
  			 INSN_UID (insn));
  	    }
+ 
+ 	  exec_live_on_entry = false;
  	}
  
        COPY_REG_SET (&live, DF_LR_OUT (bb));
*************** gcn_md_reorg (void)
*** 4604,4610 ****
  	 at the end of the block.  */
        if ((REGNO_REG_SET_P (&live, EXEC_LO_REG)
  	   || REGNO_REG_SET_P (&live, EXEC_HI_REG))
! 	  && (!curr_exec_known || !curr_exec_explicit))
  	{
  	  rtx_insn *end_insn = BB_END (bb);
  
--- 4687,4693 ----
  	 at the end of the block.  */
        if ((REGNO_REG_SET_P (&live, EXEC_LO_REG)
  	   || REGNO_REG_SET_P (&live, EXEC_HI_REG))
! 	  && (!curr_exec_known || !curr_exec_explicit || exec_live_on_entry))
  	{
  	  rtx_insn *end_insn = BB_END (bb);
  
*************** gcn_goacc_validate_dims (tree decl, int
*** 4802,4809 ****
  	warning_at (decl ? DECL_SOURCE_LOCATION (decl) : UNKNOWN_LOCATION,
  		    OPT_Wopenacc_dims,
  		    (dims[GOMP_DIM_VECTOR]
! 		     ? G_("using vector_length (64), ignoring %d")
! 		     : G_("using vector_length (64), "
  			  "ignoring runtime setting")),
  		    dims[GOMP_DIM_VECTOR]);
        dims[GOMP_DIM_VECTOR] = 1;
--- 4885,4892 ----
  	warning_at (decl ? DECL_SOURCE_LOCATION (decl) : UNKNOWN_LOCATION,
  		    OPT_Wopenacc_dims,
  		    (dims[GOMP_DIM_VECTOR]
! 		     ? G_("using %<vector_length (64)%>, ignoring %d")
! 		     : G_("using %<vector_length (64)%>, "
  			  "ignoring runtime setting")),
  		    dims[GOMP_DIM_VECTOR]);
        dims[GOMP_DIM_VECTOR] = 1;
*************** gcn_goacc_validate_dims (tree decl, int
*** 4815,4821 ****
      {
        warning_at (decl ? DECL_SOURCE_LOCATION (decl) : UNKNOWN_LOCATION,
  		  OPT_Wopenacc_dims,
! 		  "using num_workers (%d), ignoring %d",
  		  max_workers, dims[GOMP_DIM_WORKER]);
        dims[GOMP_DIM_WORKER] = max_workers;
        changed = true;
--- 4898,4904 ----
      {
        warning_at (decl ? DECL_SOURCE_LOCATION (decl) : UNKNOWN_LOCATION,
  		  OPT_Wopenacc_dims,
! 		  "using %<num_workers (%d)%>, ignoring %d",
  		  max_workers, dims[GOMP_DIM_WORKER]);
        dims[GOMP_DIM_WORKER] = max_workers;
        changed = true;
*************** gcn_fixup_accel_lto_options (tree fndecl
*** 4910,4935 ****
    if (!func_optimize)
      return;
  
!   tree old_optimize = build_optimization_node (&global_options);
    tree new_optimize;
  
    /* If the function changed the optimization levels as well as
       setting target options, start with the optimizations
       specified.  */
    if (func_optimize != old_optimize)
!     cl_optimization_restore (&global_options,
  			     TREE_OPTIMIZATION (func_optimize));
  
    gcn_option_override ();
  
    /* The target attributes may also change some optimization flags,
       so update the optimization options if necessary.  */
!   new_optimize = build_optimization_node (&global_options);
  
    if (old_optimize != new_optimize)
      {
        DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl) = new_optimize;
!       cl_optimization_restore (&global_options,
  			       TREE_OPTIMIZATION (old_optimize));
      }
  }
--- 4993,5020 ----
    if (!func_optimize)
      return;
  
!   tree old_optimize
!     = build_optimization_node (&global_options, &global_options_set);
    tree new_optimize;
  
    /* If the function changed the optimization levels as well as
       setting target options, start with the optimizations
       specified.  */
    if (func_optimize != old_optimize)
!     cl_optimization_restore (&global_options, &global_options_set,
  			     TREE_OPTIMIZATION (func_optimize));
  
    gcn_option_override ();
  
    /* The target attributes may also change some optimization flags,
       so update the optimization options if necessary.  */
!   new_optimize = build_optimization_node (&global_options,
! 					  &global_options_set);
  
    if (old_optimize != new_optimize)
      {
        DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl) = new_optimize;
!       cl_optimization_restore (&global_options, &global_options_set,
  			       TREE_OPTIMIZATION (old_optimize));
      }
  }
*************** gcn_fixup_accel_lto_options (tree fndecl
*** 4944,4954 ****
  static void
  output_file_start (void)
  {
!   fprintf (asm_out_file, "\t.text\n");
!   fprintf (asm_out_file, "\t.hsa_code_object_version 2,0\n");
!   fprintf (asm_out_file, "\t.hsa_code_object_isa\n");	/* Autodetect.  */
!   fprintf (asm_out_file, "\t.section\t.AMDGPU.config\n");
!   fprintf (asm_out_file, "\t.text\n");
  }
  
  /* Implement ASM_DECLARE_FUNCTION_NAME via gcn-hsa.h.
--- 5029,5045 ----
  static void
  output_file_start (void)
  {
!   const char *cpu;
!   switch (gcn_arch)
!     {
!     case PROCESSOR_FIJI: cpu = "gfx803"; break;
!     case PROCESSOR_VEGA10: cpu = "gfx900"; break;
!     case PROCESSOR_VEGA20: cpu = "gfx906"; break;
!     case PROCESSOR_GFX908: cpu = "gfx908+sram-ecc"; break;
!     default: gcc_unreachable ();
!     }
! 
!   fprintf(asm_out_file, "\t.amdgcn_target \"amdgcn-unknown-amdhsa--%s\"\n", cpu);
  }
  
  /* Implement ASM_DECLARE_FUNCTION_NAME via gcn-hsa.h.
*************** gcn_hsa_declare_function_name (FILE *fil
*** 4964,4970 ****
  {
    int sgpr, vgpr;
    bool xnack_enabled = false;
!   int extra_regs = 0;
  
    if (cfun && cfun->machine && cfun->machine->normal_function)
      {
--- 5055,5062 ----
  {
    int sgpr, vgpr;
    bool xnack_enabled = false;
! 
!   fputs ("\n\n", file);
  
    if (cfun && cfun->machine && cfun->machine->normal_function)
      {
*************** gcn_hsa_declare_function_name (FILE *fil
*** 4987,5062 ****
        break;
    vgpr++;
  
-   if (xnack_enabled)
-     extra_regs = 6;
-   if (df_regs_ever_live_p (FLAT_SCRATCH_LO_REG)
-       || df_regs_ever_live_p (FLAT_SCRATCH_HI_REG))
-     extra_regs = 4;
-   else if (df_regs_ever_live_p (VCC_LO_REG)
- 	   || df_regs_ever_live_p (VCC_HI_REG))
-     extra_regs = 2;
- 
    if (!leaf_function_p ())
      {
        /* We can't know how many registers function calls might use.  */
        if (vgpr < MAX_NORMAL_VGPR_COUNT)
  	vgpr = MAX_NORMAL_VGPR_COUNT;
!       if (sgpr + extra_regs < MAX_NORMAL_SGPR_COUNT)
! 	sgpr = MAX_NORMAL_SGPR_COUNT - extra_regs;
      }
  
!   /* GFX8 allocates SGPRs in blocks of 8.
!      GFX9 uses blocks of 16.  */
!   int granulated_sgprs;
!   if (TARGET_GCN3)
!     granulated_sgprs = (sgpr + extra_regs + 7) / 8 - 1;
!   else if (TARGET_GCN5)
!     granulated_sgprs = 2 * ((sgpr + extra_regs + 15) / 16 - 1);
!   else
!     gcc_unreachable ();
! 
!   fputs ("\t.align\t256\n", file);
!   fputs ("\t.type\t", file);
!   assemble_name (file, name);
!   fputs (",@function\n\t.amdgpu_hsa_kernel\t", file);
    assemble_name (file, name);
    fputs ("\n", file);
-   assemble_name (file, name);
-   fputs (":\n", file);
-   fprintf (file, "\t.amd_kernel_code_t\n"
- 	   "\t\tkernel_code_version_major = 1\n"
- 	   "\t\tkernel_code_version_minor = 0\n" "\t\tmachine_kind = 1\n"
- 	   /* "\t\tmachine_version_major = 8\n"
- 	      "\t\tmachine_version_minor = 0\n"
- 	      "\t\tmachine_version_stepping = 1\n" */
- 	   "\t\tkernel_code_entry_byte_offset = 256\n"
- 	   "\t\tkernel_code_prefetch_byte_size = 0\n"
- 	   "\t\tmax_scratch_backing_memory_byte_size = 0\n"
- 	   "\t\tcompute_pgm_rsrc1_vgprs = %i\n"
- 	   "\t\tcompute_pgm_rsrc1_sgprs = %i\n"
- 	   "\t\tcompute_pgm_rsrc1_priority = 0\n"
- 	   "\t\tcompute_pgm_rsrc1_float_mode = 192\n"
- 	   "\t\tcompute_pgm_rsrc1_priv = 0\n"
- 	   "\t\tcompute_pgm_rsrc1_dx10_clamp = 1\n"
- 	   "\t\tcompute_pgm_rsrc1_debug_mode = 0\n"
- 	   "\t\tcompute_pgm_rsrc1_ieee_mode = 1\n"
- 	   /* We enable scratch memory.  */
- 	   "\t\tcompute_pgm_rsrc2_scratch_en = 1\n"
- 	   "\t\tcompute_pgm_rsrc2_user_sgpr = %i\n"
- 	   "\t\tcompute_pgm_rsrc2_tgid_x_en = 1\n"
- 	   "\t\tcompute_pgm_rsrc2_tgid_y_en = 0\n"
- 	   "\t\tcompute_pgm_rsrc2_tgid_z_en = 0\n"
- 	   "\t\tcompute_pgm_rsrc2_tg_size_en = 0\n"
- 	   "\t\tcompute_pgm_rsrc2_tidig_comp_cnt = 0\n"
- 	   "\t\tcompute_pgm_rsrc2_excp_en_msb = 0\n"
- 	   "\t\tcompute_pgm_rsrc2_lds_size = 0\n"	/* Set at runtime.  */
- 	   "\t\tcompute_pgm_rsrc2_excp_en = 0\n",
- 	   (vgpr - 1) / 4,
- 	   /* Must match wavefront_sgpr_count */
- 	   granulated_sgprs,
- 	   /* The total number of SGPR user data registers requested.  This
- 	      number must match the number of user data registers enabled.  */
- 	   cfun->machine->args.nsgprs);
    int reg = FIRST_SGPR_REG;
    for (int a = 0; a < GCN_KERNEL_ARG_TYPES; a++)
      {
--- 5079,5098 ----
        break;
    vgpr++;
  
    if (!leaf_function_p ())
      {
        /* We can't know how many registers function calls might use.  */
        if (vgpr < MAX_NORMAL_VGPR_COUNT)
  	vgpr = MAX_NORMAL_VGPR_COUNT;
!       if (sgpr < MAX_NORMAL_SGPR_COUNT)
! 	sgpr = MAX_NORMAL_SGPR_COUNT;
      }
  
!   fputs ("\t.rodata\n"
! 	 "\t.p2align\t6\n"
! 	 "\t.amdhsa_kernel\t", file);
    assemble_name (file, name);
    fputs ("\n", file);
    int reg = FIRST_SGPR_REG;
    for (int a = 0; a < GCN_KERNEL_ARG_TYPES; a++)
      {
*************** gcn_hsa_declare_function_name (FILE *fil
*** 5074,5080 ****
  
        if (gcn_kernel_arg_types[a].header_pseudo)
  	{
! 	  fprintf (file, "\t\t%s = %i",
  		   gcn_kernel_arg_types[a].header_pseudo,
  		   (cfun->machine->args.requested & (1 << a)) != 0);
  	  if (reg_first != -1)
--- 5110,5117 ----
  
        if (gcn_kernel_arg_types[a].header_pseudo)
  	{
! 	  fprintf (file, "\t  %s%s\t%i",
! 		   (cfun->machine->args.requested & (1 << a)) != 0 ? "" : ";",
  		   gcn_kernel_arg_types[a].header_pseudo,
  		   (cfun->machine->args.requested & (1 << a)) != 0);
  	  if (reg_first != -1)
*************** gcn_hsa_declare_function_name (FILE *fil
*** 5092,5145 ****
  	}
        else if (gcn_kernel_arg_types[a].fixed_regno >= 0
  	       && cfun->machine->args.requested & (1 << a))
! 	fprintf (file, "\t\t; %s = %i (%s)\n",
  		 gcn_kernel_arg_types[a].name,
  		 (cfun->machine->args.requested & (1 << a)) != 0,
  		 reg_names[gcn_kernel_arg_types[a].fixed_regno]);
      }
!   fprintf (file, "\t\tenable_vgpr_workitem_id = %i\n",
  	   (cfun->machine->args.requested & (1 << WORK_ITEM_ID_Z_ARG))
  	   ? 2
  	   : cfun->machine->args.requested & (1 << WORK_ITEM_ID_Y_ARG)
  	   ? 1 : 0);
!   fprintf (file, "\t\tenable_ordered_append_gds = 0\n"
! 	   "\t\tprivate_element_size = 1\n"
! 	   "\t\tis_ptr64 = 1\n"
! 	   "\t\tis_dynamic_callstack = 0\n"
! 	   "\t\tis_debug_enabled = 0\n"
! 	   "\t\tis_xnack_enabled = %i\n"
! 	   "\t\tworkitem_private_segment_byte_size = %i\n"
! 	   "\t\tworkgroup_group_segment_byte_size = %u\n"
! 	   "\t\tgds_segment_byte_size = 0\n"
! 	   "\t\tkernarg_segment_byte_size = %i\n"
! 	   "\t\tworkgroup_fbarrier_count = 0\n"
! 	   "\t\twavefront_sgpr_count = %i\n"
! 	   "\t\tworkitem_vgpr_count = %i\n"
! 	   "\t\treserved_vgpr_first = 0\n"
! 	   "\t\treserved_vgpr_count = 0\n"
! 	   "\t\treserved_sgpr_first = 0\n"
! 	   "\t\treserved_sgpr_count = 0\n"
! 	   "\t\tdebug_wavefront_private_segment_offset_sgpr = 0\n"
! 	   "\t\tdebug_private_segment_buffer_sgpr = 0\n"
! 	   "\t\tkernarg_segment_alignment = %i\n"
! 	   "\t\tgroup_segment_alignment = 4\n"
! 	   "\t\tprivate_segment_alignment = %i\n"
! 	   "\t\twavefront_size = 6\n"
! 	   "\t\tcall_convention = 0\n"
! 	   "\t\truntime_loader_kernel_symbol = 0\n"
! 	   "\t.end_amd_kernel_code_t\n", xnack_enabled,
  	   /* workitem_private_segment_bytes_size needs to be
  	      one 64th the wave-front stack size.  */
  	   stack_size_opt / 64,
! 	   LDS_SIZE, cfun->machine->kernarg_segment_byte_size,
! 	   /* Number of scalar registers used by a wavefront.  This
! 	      includes the special SGPRs for VCC, Flat Scratch (Base,
! 	      Size) and XNACK (for GFX8 (VI)+).  It does not include the
! 	      16 SGPR added if a trap handler is enabled.  Must match
! 	      compute_pgm_rsrc1.sgprs.  */
! 	   sgpr + extra_regs, vgpr,
  	   cfun->machine->kernarg_segment_alignment,
! 	   crtl->stack_alignment_needed / 8);
  
    /* This comment is read by mkoffload.  */
    if (flag_openacc)
--- 5129,5199 ----
  	}
        else if (gcn_kernel_arg_types[a].fixed_regno >= 0
  	       && cfun->machine->args.requested & (1 << a))
! 	fprintf (file, "\t  ; %s\t%i (%s)\n",
  		 gcn_kernel_arg_types[a].name,
  		 (cfun->machine->args.requested & (1 << a)) != 0,
  		 reg_names[gcn_kernel_arg_types[a].fixed_regno]);
      }
!   fprintf (file, "\t  .amdhsa_system_vgpr_workitem_id\t%i\n",
  	   (cfun->machine->args.requested & (1 << WORK_ITEM_ID_Z_ARG))
  	   ? 2
  	   : cfun->machine->args.requested & (1 << WORK_ITEM_ID_Y_ARG)
  	   ? 1 : 0);
!   fprintf (file,
! 	   "\t  .amdhsa_next_free_vgpr\t%i\n"
! 	   "\t  .amdhsa_next_free_sgpr\t%i\n"
! 	   "\t  .amdhsa_reserve_vcc\t1\n"
! 	   "\t  .amdhsa_reserve_flat_scratch\t0\n"
! 	   "\t  .amdhsa_reserve_xnack_mask\t%i\n"
! 	   "\t  .amdhsa_private_segment_fixed_size\t%i\n"
! 	   "\t  .amdhsa_group_segment_fixed_size\t%u\n"
! 	   "\t  .amdhsa_float_denorm_mode_32\t3\n"
! 	   "\t  .amdhsa_float_denorm_mode_16_64\t3\n",
! 	   vgpr,
! 	   sgpr,
! 	   xnack_enabled,
  	   /* workitem_private_segment_bytes_size needs to be
  	      one 64th the wave-front stack size.  */
  	   stack_size_opt / 64,
! 	   LDS_SIZE);
!   fputs ("\t.end_amdhsa_kernel\n", file);
! 
! #if 1
!   /* The following is YAML embedded in assembler; tabs are not allowed.  */
!   fputs ("        .amdgpu_metadata\n"
! 	 "        amdhsa.version:\n"
! 	 "          - 1\n"
! 	 "          - 0\n"
! 	 "        amdhsa.kernels:\n"
! 	 "          - .name: ", file);
!   assemble_name (file, name);
!   fputs ("\n            .symbol: ", file);
!   assemble_name (file, name);
!   fprintf (file,
! 	   ".kd\n"
! 	   "            .kernarg_segment_size: %i\n"
! 	   "            .kernarg_segment_align: %i\n"
! 	   "            .group_segment_fixed_size: %u\n"
! 	   "            .private_segment_fixed_size: %i\n"
! 	   "            .wavefront_size: 64\n"
! 	   "            .sgpr_count: %i\n"
! 	   "            .vgpr_count: %i\n"
! 	   "            .max_flat_workgroup_size: 1024\n",
! 	   cfun->machine->kernarg_segment_byte_size,
  	   cfun->machine->kernarg_segment_alignment,
! 	   LDS_SIZE,
! 	   stack_size_opt / 64,
! 	   sgpr, vgpr);
!   fputs ("        .end_amdgpu_metadata\n", file);
! #endif
! 
!   fputs ("\t.text\n", file);
!   fputs ("\t.align\t256\n", file);
!   fputs ("\t.type\t", file);
!   assemble_name (file, name);
!   fputs (",@function\n", file);
!   assemble_name (file, name);
!   fputs (":\n", file);
  
    /* This comment is read by mkoffload.  */
    if (flag_openacc)
*************** gcn_target_asm_function_prologue (FILE *
*** 5201,5211 ****
        asm_fprintf (file, "\t; local vars size: %wd\n", offsets->local_vars);
        asm_fprintf (file, "\t; outgoing args size: %wd\n",
  		   offsets->outgoing_args_size);
- 
-       /* Enable denorms.  */
-       asm_fprintf (file, "\n\t; Set MODE[FP_DENORM]: allow single and double"
- 		   " input and output denorms\n");
-       asm_fprintf (file, "\ts_setreg_imm32_b32\thwreg(1, 4, 4), 0xf\n\n");
      }
  }
  
--- 5255,5260 ----
*************** print_operand (FILE *file, rtx x, int co
*** 6144,6149 ****
--- 6193,6256 ----
    gcc_unreachable ();
  }
  
+ /* Implement DBX_REGISTER_NUMBER macro.
+  
+    Return the DWARF register number that corresponds to the GCC internal
+    REGNO.  */
+ 
+ unsigned int
+ gcn_dwarf_register_number (unsigned int regno)
+ {
+   /* Registers defined in DWARF.  */
+   if (regno == EXEC_LO_REG)
+     return 17;
+   /* We need to use a more complex DWARF expression for this
+   else if (regno == EXEC_HI_REG)
+     return 17; */
+   else if (regno == VCC_LO_REG)
+     return 768;
+   /* We need to use a more complex DWARF expression for this
+   else if (regno == VCC_HI_REG)
+     return 768;  */
+   else if (regno == SCC_REG)
+     return 128;
+   else if (SGPR_REGNO_P (regno))
+     {
+       if (regno - FIRST_SGPR_REG < 64)
+ 	return (regno - FIRST_SGPR_REG + 32);
+       else
+ 	return (regno - FIRST_SGPR_REG + 1024);
+     }
+   else if (VGPR_REGNO_P (regno))
+     return (regno - FIRST_VGPR_REG + 2560);
+ 
+   /* Otherwise, there's nothing sensible to do.  */
+   return regno + 100000;
+ }
+ 
+ /* Implement TARGET_DWARF_REGISTER_SPAN.
+  
+    DImode and Vector DImode require additional registers.  */
+ 
+ static rtx
+ gcn_dwarf_register_span (rtx rtl)
+ {
+   machine_mode mode = GET_MODE (rtl);
+ 
+   if (VECTOR_MODE_P (mode))
+     mode = GET_MODE_INNER (mode);
+ 
+   if (GET_MODE_SIZE (mode) != 8)
+     return NULL_RTX;
+ 
+   rtx p = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (2));
+   unsigned regno = REGNO (rtl);
+   XVECEXP (p, 0, 0) = gen_rtx_REG (SImode, regno);
+   XVECEXP (p, 0, 1) = gen_rtx_REG (SImode, regno + 1);
+ 
+   return p;
+ }
+ 
  /* }}}  */
  /* {{{ TARGET hook overrides.  */
  
*************** print_operand (FILE *file, rtx x, int co
*** 6192,6197 ****
--- 6299,6306 ----
  #define TARGET_CONSTANT_ALIGNMENT gcn_constant_alignment
  #undef  TARGET_DEBUG_UNWIND_INFO
  #define TARGET_DEBUG_UNWIND_INFO gcn_debug_unwind_info
+ #undef  TARGET_DWARF_REGISTER_SPAN
+ #define TARGET_DWARF_REGISTER_SPAN gcn_dwarf_register_span
  #undef  TARGET_EMUTLS_VAR_INIT
  #define TARGET_EMUTLS_VAR_INIT gcn_emutls_var_init
  #undef  TARGET_EXPAND_BUILTIN
*************** print_operand (FILE *file, rtx x, int co
*** 6257,6262 ****
--- 6366,6373 ----
  #define TARGET_SECONDARY_RELOAD gcn_secondary_reload
  #undef  TARGET_SECTION_TYPE_FLAGS
  #define TARGET_SECTION_TYPE_FLAGS gcn_section_type_flags
+ #undef  TARGET_SCALAR_MODE_SUPPORTED_P
+ #define TARGET_SCALAR_MODE_SUPPORTED_P gcn_scalar_mode_supported_p
  #undef  TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P
  #define TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P \
    gcn_small_register_classes_for_mode_p
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/gcn.h gcc-11.1.0/gcc/config/gcn/gcn.h
*** gcc-10.3.0/gcc/config/gcn/gcn.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/gcn.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
     This file 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
--- 1,4 ----
! /* Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
     This file 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
*************** enum gcn_address_spaces
*** 525,531 ****
  
  #ifndef USED_FOR_TARGET
  
! #define GCN_KERNEL_ARG_TYPES 19
  struct GTY(()) gcn_kernel_args
  {
    long requested;
--- 525,531 ----
  
  #ifndef USED_FOR_TARGET
  
! #define GCN_KERNEL_ARG_TYPES 16
  struct GTY(()) gcn_kernel_args
  {
    long requested;
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/gcn.md gcc-11.1.0/gcc/config/gcn/gcn.md
*** gcc-10.3.0/gcc/config/gcn/gcn.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/gcn.md	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! ;; Copyright (C) 2016-2020 Free Software Foundation, Inc.
  
  ;; This file 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
--- 1,4 ----
! ;; Copyright (C) 2016-2021 Free Software Foundation, Inc.
  
  ;; This file 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
***************
*** 67,72 ****
--- 67,73 ----
    UNSPECV_ICACHE_INV])
  
  (define_c_enum "unspec" [
+   UNSPEC_ADDPTR
    UNSPEC_VECTOR
    UNSPEC_BPERMUTE
    UNSPEC_SGPRBASE
***************
*** 79,85 ****
    UNSPEC_MOV_DPP_SHR
    UNSPEC_MOV_FROM_LANE63
    UNSPEC_GATHER
!   UNSPEC_SCATTER])
  
  ;; }}}
  ;; {{{ Attributes
--- 80,87 ----
    UNSPEC_MOV_DPP_SHR
    UNSPEC_MOV_FROM_LANE63
    UNSPEC_GATHER
!   UNSPEC_SCATTER
!   UNSPEC_RCP])
  
  ;; }}}
  ;; {{{ Attributes
***************
*** 554,560 ****
    flat_load_dword\t%0, %A1%O1%g1\;s_waitcnt\t0
    flat_store_dword\t%A0, %1%O0%g0
    v_mov_b32\t%0, %1
!   ds_write_b32\t%A0, %1%O0
    ds_read_b32\t%0, %A1%O1\;s_waitcnt\tlgkmcnt(0)
    s_mov_b32\t%0, %1
    global_load_dword\t%0, %A1%O1%g1\;s_waitcnt\tvmcnt(0)
--- 556,562 ----
    flat_load_dword\t%0, %A1%O1%g1\;s_waitcnt\t0
    flat_store_dword\t%A0, %1%O0%g0
    v_mov_b32\t%0, %1
!   ds_write_b32\t%A0, %1%O0\;s_waitcnt\tlgkmcnt(0)
    ds_read_b32\t%0, %A1%O1\;s_waitcnt\tlgkmcnt(0)
    s_mov_b32\t%0, %1
    global_load_dword\t%0, %A1%O1%g1\;s_waitcnt\tvmcnt(0)
***************
*** 582,588 ****
    flat_load%o1\t%0, %A1%O1%g1\;s_waitcnt\t0
    flat_store%s0\t%A0, %1%O0%g0
    v_mov_b32\t%0, %1
!   ds_write%b0\t%A0, %1%O0
    ds_read%u1\t%0, %A1%O1\;s_waitcnt\tlgkmcnt(0)
    global_load%o1\t%0, %A1%O1%g1\;s_waitcnt\tvmcnt(0)
    global_store%s0\t%A0, %1%O0%g0"
--- 584,590 ----
    flat_load%o1\t%0, %A1%O1%g1\;s_waitcnt\t0
    flat_store%s0\t%A0, %1%O0%g0
    v_mov_b32\t%0, %1
!   ds_write%b0\t%A0, %1%O0\;s_waitcnt\tlgkmcnt(0)
    ds_read%u1\t%0, %A1%O1\;s_waitcnt\tlgkmcnt(0)
    global_load%o1\t%0, %A1%O1%g1\;s_waitcnt\tvmcnt(0)
    global_store%s0\t%A0, %1%O0%g0"
***************
*** 611,617 ****
    #
    flat_load_dwordx2\t%0, %A1%O1%g1\;s_waitcnt\t0
    flat_store_dwordx2\t%A0, %1%O0%g0
!   ds_write_b64\t%A0, %1%O0
    ds_read_b64\t%0, %A1%O1\;s_waitcnt\tlgkmcnt(0)
    global_load_dwordx2\t%0, %A1%O1%g1\;s_waitcnt\tvmcnt(0)
    global_store_dwordx2\t%A0, %1%O0%g0"
--- 613,619 ----
    #
    flat_load_dwordx2\t%0, %A1%O1%g1\;s_waitcnt\t0
    flat_store_dwordx2\t%A0, %1%O0%g0
!   ds_write_b64\t%A0, %1%O0\;s_waitcnt\tlgkmcnt(0)
    ds_read_b64\t%0, %A1%O1\;s_waitcnt\tlgkmcnt(0)
    global_load_dwordx2\t%0, %A1%O1%g1\;s_waitcnt\tvmcnt(0)
    global_store_dwordx2\t%A0, %1%O0%g0"
***************
*** 667,673 ****
    #
    global_store_dwordx4\t%A0, %1%O0%g0
    global_load_dwordx4\t%0, %A1%O1%g1\;s_waitcnt\tvmcnt(0)
!   ds_write_b128\t%A0, %1%O0
    ds_read_b128\t%0, %A1%O1\;s_waitcnt\tlgkmcnt(0)"
    "reload_completed
     && REG_P (operands[0])
--- 669,675 ----
    #
    global_store_dwordx4\t%A0, %1%O0%g0
    global_load_dwordx4\t%0, %A1%O1%g1\;s_waitcnt\tvmcnt(0)
!   ds_write_b128\t%A0, %1%O0\;s_waitcnt\tlgkmcnt(0)
    ds_read_b128\t%0, %A1%O1\;s_waitcnt\tlgkmcnt(0)"
    "reload_completed
     && REG_P (operands[0])
***************
*** 1219,1247 ****
  
  ; "addptr" is the same as "add" except that it must not write to VCC or SCC
  ; as a side-effect.  Unfortunately GCN does not have a suitable instruction
! ; for this, so we use a custom VOP3 add with CC_SAVE_REG as a temp.
! ; Note that it is not safe to save/clobber/restore SCC because doing so will
! ; break data-flow analysis, so this must use vector registers.
  ;
  ; The "v0" should be just "v", but somehow the "0" helps LRA not loop forever
  ; on testcase pr54713-2.c with -O0. It's only an optimization hint anyway.
  
  (define_insn "addptrdi3"
!   [(set (match_operand:DI 0 "register_operand"		 "= v")
! 	(plus:DI (match_operand:DI 1 "register_operand"	 " v0")
! 		 (match_operand:DI 2 "nonmemory_operand" "vDA")))]
    ""
    {
!     rtx new_operands[4] = { operands[0], operands[1], operands[2],
! 			    gen_rtx_REG (DImode, CC_SAVE_REG) };
  
!     output_asm_insn ("v_add%^_u32 %L0, %3, %L2, %L1", new_operands);
!     output_asm_insn ("v_addc%^_u32 %H0, %3, %H2, %H1, %3", new_operands);
  
      return "";
    }
!   [(set_attr "type" "vmult")
!    (set_attr "length" "16")])
  
  ;; }}}
  ;; {{{ ALU special cases: Minus
--- 1221,1267 ----
  
  ; "addptr" is the same as "add" except that it must not write to VCC or SCC
  ; as a side-effect.  Unfortunately GCN does not have a suitable instruction
! ; for this, so we use CC_SAVE_REG as a temp.
! ; Note that it is not safe to save/clobber/restore as separate insns because
! ; doing so will break data-flow analysis, so this must use multiple
! ; instructions in one insn.
  ;
  ; The "v0" should be just "v", but somehow the "0" helps LRA not loop forever
  ; on testcase pr54713-2.c with -O0. It's only an optimization hint anyway.
+ ;
+ ; The SGPR alternative is preferred as it is typically used with mov_sgprbase.
  
  (define_insn "addptrdi3"
!   [(set (match_operand:DI 0 "register_operand"		 "= v, Sg")
!     (unspec:DI [
! 	(plus:DI (match_operand:DI 1 "register_operand"	 "^v0,Sg0")
! 		 (match_operand:DI 2 "nonmemory_operand" "vDA,SgDB"))]
! 	UNSPEC_ADDPTR))]
    ""
    {
!     if (which_alternative == 0)
!       {
! 	rtx new_operands[4] = { operands[0], operands[1], operands[2],
! 				gen_rtx_REG (DImode, CC_SAVE_REG) };
  
! 	output_asm_insn ("v_add%^_u32\t%L0, %3, %L2, %L1", new_operands);
! 	output_asm_insn ("v_addc%^_u32\t%H0, %3, %H2, %H1, %3", new_operands);
!       }
!     else
!       {
! 	rtx new_operands[4] = { operands[0], operands[1], operands[2],
! 				gen_rtx_REG (BImode, CC_SAVE_REG) };
! 
! 	output_asm_insn ("s_mov_b32\t%3, scc", new_operands);
! 	output_asm_insn ("s_add_u32\t%L0, %L1, %L2", new_operands);
! 	output_asm_insn ("s_addc_u32\t%H0, %H1, %H2", new_operands);
! 	output_asm_insn ("s_cmpk_lg_u32\t%3, 0", new_operands);
!       }
  
      return "";
    }
!   [(set_attr "type" "vmult,mult")
!    (set_attr "length" "16,24")])
  
  ;; }}}
  ;; {{{ ALU special cases: Minus
***************
*** 1541,1546 ****
--- 1561,1671 ----
     (set_attr "length" "8")])
  
  ;; }}}
+ ;; {{{ ALU: generic 128-bit binop
+ 
+ ; TImode shifts can't be synthesized by the middle-end
+ (define_expand "<expander>ti3"
+   [(set (match_operand:TI 0 "register_operand")
+ 	(vec_and_scalar_nocom:TI
+ 	  (match_operand:TI 1 "gcn_alu_operand")
+ 	  (match_operand:SI 2 "gcn_alu_operand")))]
+   ""
+   {
+     rtx dest = operands[0];
+     rtx src = operands[1];
+     rtx shift = operands[2];
+ 
+     enum {ashr, lshr, ashl} shiftop = <expander>;
+     rtx (*inverse_shift_fn) (rtx, rtx, rtx)
+       = (shiftop == ashl ? gen_lshrdi3 : gen_ashldi3);
+     rtx (*logical_shift_fn) (rtx, rtx, rtx)
+       = (shiftop == ashl ? gen_ashldi3 : gen_lshrdi3);
+ 
+     /* We shift "from" one subreg "to" the other, according to shiftop.  */
+     int from = (shiftop == ashl ? 0 : 8);
+     int to = (shiftop == ashl ? 8 : 0);
+     rtx destfrom = simplify_gen_subreg (DImode, dest, TImode, from);
+     rtx destto = simplify_gen_subreg (DImode, dest, TImode, to);
+     rtx srcfrom = simplify_gen_subreg (DImode, src, TImode, from);
+     rtx srcto = simplify_gen_subreg (DImode, src, TImode, to);
+ 
+     int shiftval = (CONST_INT_P (shift) ? INTVAL (shift) : -1);
+     enum {RUNTIME, ZERO, SMALL, LARGE} shiftcomparison
+      = (!CONST_INT_P (shift) ? RUNTIME
+         : shiftval == 0 ? ZERO
+         : shiftval < 64 ? SMALL
+         : LARGE);
+ 
+     rtx large_label, zero_label, exit_label;
+ 
+     if (shiftcomparison == RUNTIME)
+       {
+         zero_label = gen_label_rtx ();
+         large_label = gen_label_rtx ();
+         exit_label = gen_label_rtx ();
+ 
+         rtx cond = gen_rtx_EQ (VOIDmode, shift, const0_rtx);
+         emit_insn (gen_cbranchsi4 (cond, shift, const0_rtx, zero_label));
+ 
+         rtx sixtyfour = GEN_INT (64);
+         cond = gen_rtx_GE (VOIDmode, shift, sixtyfour);
+         emit_insn (gen_cbranchsi4 (cond, shift, sixtyfour, large_label));
+       }
+ 
+     if (shiftcomparison == SMALL || shiftcomparison == RUNTIME)
+       {
+         /* Shift both parts by the same amount, then patch in the bits that
+            cross the boundary.
+            This does *not* work for zero-length shifts.  */
+         rtx tmpto1 = gen_reg_rtx (DImode);
+         rtx tmpto2 = gen_reg_rtx (DImode);
+         emit_insn (gen_<expander>di3 (destfrom, srcfrom, shift));
+         emit_insn (logical_shift_fn (tmpto1, srcto, shift));
+         rtx lessershiftval = gen_reg_rtx (SImode);
+         emit_insn (gen_subsi3 (lessershiftval, GEN_INT (64), shift));
+         emit_insn (inverse_shift_fn (tmpto2, srcfrom, lessershiftval));
+         emit_insn (gen_iordi3 (destto, tmpto1, tmpto2));
+       }
+ 
+     if (shiftcomparison == RUNTIME)
+       {
+         emit_jump_insn (gen_jump (exit_label));
+         emit_barrier ();
+ 
+         emit_label (zero_label);
+       }
+ 
+     if (shiftcomparison == ZERO || shiftcomparison == RUNTIME)
+       emit_move_insn (dest, src);
+ 
+     if (shiftcomparison == RUNTIME)
+       {
+         emit_jump_insn (gen_jump (exit_label));
+         emit_barrier ();
+ 
+         emit_label (large_label);
+       }
+ 
+     if (shiftcomparison == LARGE || shiftcomparison == RUNTIME)
+       {
+         /* Do the shift within one part, and set the other part appropriately.
+            Shifts of 128+ bits are an error.  */
+         rtx lessershiftval = gen_reg_rtx (SImode);
+         emit_insn (gen_subsi3 (lessershiftval, shift, GEN_INT (64)));
+         emit_insn (gen_<expander>di3 (destto, srcfrom, lessershiftval));
+         if (shiftop == ashr)
+           emit_insn (gen_ashrdi3 (destfrom, srcfrom, GEN_INT (63)));
+         else
+           emit_move_insn (destfrom, const0_rtx);
+       }
+ 
+     if (shiftcomparison == RUNTIME)
+       emit_label (exit_label);
+ 
+     DONE;
+   })
+ 
+ ;; }}}
  ;; {{{ Atomics
  
  ; Each compute unit has it's own L1 cache. The L2 cache is shared between
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/gcn.opt gcc-11.1.0/gcc/config/gcn/gcn.opt
*** gcc-10.3.0/gcc/config/gcn/gcn.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/gcn.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Options for the GCN port of the compiler.
  
! ; Copyright (C) 2016-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the GCN port of the compiler.
  
! ; Copyright (C) 2016-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** EnumValue
*** 29,38 ****
  Enum(gpu_type) String(fiji) Value(PROCESSOR_FIJI)
  
  EnumValue
! Enum(gpu_type) String(gfx900) Value(PROCESSOR_VEGA)
  
  EnumValue
! Enum(gpu_type) String(gfx906) Value(PROCESSOR_VEGA)
  
  march=
  Target RejectNegative Joined ToLower Enum(gpu_type) Var(gcn_arch) Init(PROCESSOR_FIJI)
--- 29,41 ----
  Enum(gpu_type) String(fiji) Value(PROCESSOR_FIJI)
  
  EnumValue
! Enum(gpu_type) String(gfx900) Value(PROCESSOR_VEGA10)
  
  EnumValue
! Enum(gpu_type) String(gfx906) Value(PROCESSOR_VEGA20)
! 
! EnumValue
! Enum(gpu_type) String(gfx908) Value(PROCESSOR_GFX908)
  
  march=
  Target RejectNegative Joined ToLower Enum(gpu_type) Var(gcn_arch) Init(PROCESSOR_FIJI)
*************** Target RejectNegative Joined ToLower Enu
*** 43,78 ****
  Specify the name of the target GPU.
  
  m32
! Target Report RejectNegative InverseMask(ABI64)
  Generate code for a 32-bit ABI.
  
  m64
! Target Report RejectNegative Mask(ABI64)
  Generate code for a 64-bit ABI.
  
  mgomp
! Target Report RejectNegative
  Enable OpenMP GPU offloading.
  
  bool flag_bypass_init_error = false
  
  mbypass-init-error
! Target Report RejectNegative Var(flag_bypass_init_error)
  
  bool flag_worker_partitioning = false
  
  macc-experimental-workers
! Target Report Var(flag_worker_partitioning) Init(0)
  
  int stack_size_opt = -1
  
  mstack-size=
! Target Report RejectNegative Joined UInteger Var(stack_size_opt) Init(-1)
  -mstack-size=<number>	Set the private segment size per wave-front, in bytes.
  
- mlocal-symbol-id=
- Target RejectNegative Report JoinedOrMissing Var(local_symbol_id) Init(0)
- 
  Wopenacc-dims
  Target Var(warn_openacc_dims) Warning
  Warn about invalid OpenACC dimensions.
--- 46,78 ----
  Specify the name of the target GPU.
  
  m32
! Target RejectNegative InverseMask(ABI64)
  Generate code for a 32-bit ABI.
  
  m64
! Target RejectNegative Mask(ABI64)
  Generate code for a 64-bit ABI.
  
  mgomp
! Target RejectNegative
  Enable OpenMP GPU offloading.
  
  bool flag_bypass_init_error = false
  
  mbypass-init-error
! Target RejectNegative Var(flag_bypass_init_error)
  
  bool flag_worker_partitioning = false
  
  macc-experimental-workers
! Target Var(flag_worker_partitioning) Init(0)
  
  int stack_size_opt = -1
  
  mstack-size=
! Target RejectNegative Joined UInteger Var(stack_size_opt) Init(-1)
  -mstack-size=<number>	Set the private segment size per wave-front, in bytes.
  
  Wopenacc-dims
  Target Var(warn_openacc_dims) Warning
  Warn about invalid OpenACC dimensions.
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/mkoffload.c gcc-11.1.0/gcc/config/gcn/mkoffload.c
*** gcc-10.3.0/gcc/config/gcn/mkoffload.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/mkoffload.c	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Offload image generation tool for AMD GCN.
  
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Offload image generation tool for AMD GCN.
  
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 33,62 ****
  #include <libgen.h>
  #include "collect-utils.h"
  #include "gomp-constants.h"
  
  const char tool_name[] = "gcn mkoffload";
  
! /* Files to unlink.  */
! static const char *gcn_s1_name;
! static const char *gcn_s2_name;
! static const char *gcn_o_name;
! static const char *gcn_cfile_name;
  
  enum offload_abi offload_abi = OFFLOAD_ABI_UNSET;
  
  /* Delete tempfiles.  */
  
  void
  tool_cleanup (bool from_signal ATTRIBUTE_UNUSED)
  {
!   if (gcn_cfile_name)
!     maybe_unlink (gcn_cfile_name);
!   if (gcn_s1_name)
!     maybe_unlink (gcn_s1_name);
!   if (gcn_s2_name)
!     maybe_unlink (gcn_s2_name);
!   if (gcn_o_name)
!     maybe_unlink (gcn_o_name);
  }
  
  static void
--- 33,92 ----
  #include <libgen.h>
  #include "collect-utils.h"
  #include "gomp-constants.h"
+ #include "simple-object.h"
+ #include "elf.h"
+ 
+ /* These probably won't (all) be in elf.h for a while.  */
+ #undef  EM_AMDGPU
+ #define EM_AMDGPU		0xe0;
+ 
+ #undef  ELFOSABI_AMDGPU_HSA
+ #define ELFOSABI_AMDGPU_HSA	 64
+ #undef  ELFABIVERSION_AMDGPU_HSA
+ #define ELFABIVERSION_AMDGPU_HSA 1
+ 
+ #undef  EF_AMDGPU_MACH_AMDGCN_GFX803
+ #define EF_AMDGPU_MACH_AMDGCN_GFX803 0x2a
+ #undef  EF_AMDGPU_MACH_AMDGCN_GFX900
+ #define EF_AMDGPU_MACH_AMDGCN_GFX900 0x2c
+ #undef  EF_AMDGPU_MACH_AMDGCN_GFX906
+ #define EF_AMDGPU_MACH_AMDGCN_GFX906 0x2f
+ #undef  EF_AMDGPU_MACH_AMDGCN_GFX908
+ #define EF_AMDGPU_MACH_AMDGCN_GFX908 0x230  // Assume SRAM-ECC enabled.
+ 
+ #ifndef R_AMDGPU_NONE
+ #define R_AMDGPU_NONE		0
+ #define R_AMDGPU_ABS32_LO	1	/* (S + A) & 0xFFFFFFFF  */
+ #define R_AMDGPU_ABS32_HI	2	/* (S + A) >> 32  */
+ #define R_AMDGPU_ABS64		3	/* S + A  */
+ #define R_AMDGPU_REL32		4	/* S + A - P  */
+ #define R_AMDGPU_REL64		5	/* S + A - P  */
+ #define R_AMDGPU_ABS32		6	/* S + A  */
+ #define R_AMDGPU_GOTPCREL	7	/* G + GOT + A - P  */
+ #define R_AMDGPU_GOTPCREL32_LO	8	/* (G + GOT + A - P) & 0xFFFFFFFF  */
+ #define R_AMDGPU_GOTPCREL32_HI	9	/* (G + GOT + A - P) >> 32  */
+ #define R_AMDGPU_REL32_LO	10	/* (S + A - P) & 0xFFFFFFFF  */
+ #define R_AMDGPU_REL32_HI	11	/* (S + A - P) >> 32  */
+ #define R_AMDGPU_RELATIVE64	13	/* B + A  */
+ #endif
  
  const char tool_name[] = "gcn mkoffload";
  
! static const char *gcn_dumpbase;
! static struct obstack files_to_cleanup;
  
  enum offload_abi offload_abi = OFFLOAD_ABI_UNSET;
+ uint32_t elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX803;  // Default GPU architecture.
  
  /* Delete tempfiles.  */
  
  void
  tool_cleanup (bool from_signal ATTRIBUTE_UNUSED)
  {
!   obstack_ptr_grow (&files_to_cleanup, NULL);
!   const char **files = XOBFINISH (&files_to_cleanup, const char **);
!   for (int i = 0; files[i]; i++)
!     maybe_unlink (files[i]);
  }
  
  static void
*************** access_check (const char *name, int mode
*** 203,208 ****
--- 233,417 ----
    return access (name, mode);
  }
  
+ /* Copy the early-debug-info from the incoming LTO object to a new object
+    that will be linked into the output HSACO file.  The host relocations
+    must be translated into GCN relocations, and any global undefined symbols
+    must be weakened (so as not to have the debug info try to pull in host
+    junk).
+ 
+    Returns true if the file was created, false otherwise.  */
+ 
+ static bool
+ copy_early_debug_info (const char *infile, const char *outfile)
+ {
+   const char *errmsg;
+   int err;
+ 
+   /* The simple_object code can handle extracting the debug sections.
+      This code is based on that in lto-wrapper.c.  */
+   int infd = open (infile, O_RDONLY | O_BINARY);
+   if (infd == -1)
+     return false;
+   simple_object_read *inobj = simple_object_start_read (infd, 0,
+ 							"__GNU_LTO",
+ 							&errmsg, &err);
+   if (!inobj)
+     return false;
+ 
+   off_t off, len;
+   if (simple_object_find_section (inobj, ".gnu.debuglto_.debug_info",
+ 				  &off, &len, &errmsg, &err) != 1)
+     {
+       simple_object_release_read (inobj);
+       close (infd);
+       return false;
+     }
+ 
+   errmsg = simple_object_copy_lto_debug_sections (inobj, outfile, &err, true);
+   if (errmsg)
+     {
+       unlink_if_ordinary (outfile);
+       return false;
+     }
+ 
+   simple_object_release_read (inobj);
+   close (infd);
+ 
+   /* Open the file we just created for some adjustments.
+      The simple_object code can't do this, so we do it manually.  */
+   FILE *outfd = fopen (outfile, "r+b");
+   if (!outfd)
+     return false;
+ 
+   Elf64_Ehdr ehdr;
+   if (fread (&ehdr, sizeof (ehdr), 1, outfd) != 1)
+     {
+       fclose (outfd);
+       return true;
+     }
+ 
+   /* We only support host relocations of x86_64, for now.  */
+   gcc_assert (ehdr.e_machine == EM_X86_64);
+ 
+   /* Patch the correct elf architecture flag into the file.  */
+   ehdr.e_ident[7] = ELFOSABI_AMDGPU_HSA;
+   ehdr.e_ident[8] = ELFABIVERSION_AMDGPU_HSA;
+   ehdr.e_type = ET_REL;
+   ehdr.e_machine = EM_AMDGPU;
+   ehdr.e_flags = elf_arch;
+ 
+   /* Load the section headers so we can walk them later.  */
+   Elf64_Shdr *sections = (Elf64_Shdr *)xmalloc (sizeof (Elf64_Shdr)
+ 						* ehdr.e_shnum);
+   if (fseek (outfd, ehdr.e_shoff, SEEK_SET) == -1
+       || fread (sections, sizeof (Elf64_Shdr), ehdr.e_shnum,
+ 		outfd) != ehdr.e_shnum)
+     {
+       free (sections);
+       fclose (outfd);
+       return true;
+     }
+ 
+   /* Convert the host relocations to target relocations.  */
+   for (int i = 0; i < ehdr.e_shnum; i++)
+     {
+       if (sections[i].sh_type != SHT_RELA)
+ 	continue;
+ 
+       char *data = (char *)xmalloc (sections[i].sh_size);
+       if (fseek (outfd, sections[i].sh_offset, SEEK_SET) == -1
+ 	  || fread (data, sections[i].sh_size, 1, outfd) != 1)
+ 	{
+ 	  free (data);
+ 	  continue;
+ 	}
+ 
+       for (size_t offset = 0;
+ 	   offset < sections[i].sh_size;
+ 	   offset += sections[i].sh_entsize)
+ 	{
+ 	  Elf64_Rela *reloc = (Elf64_Rela *) (data + offset);
+ 
+ 	  /* Map the host relocations to GCN relocations.
+ 	     Only relocations that can appear in DWARF need be handled.  */
+ 	  switch (ELF64_R_TYPE (reloc->r_info))
+ 	    {
+ 	    case R_X86_64_32:
+ 	    case R_X86_64_32S:
+ 	      reloc->r_info = ELF32_R_INFO(ELF32_R_SYM(reloc->r_info),
+ 					   R_AMDGPU_ABS32);
+ 	      break;
+ 	    case R_X86_64_PC32:
+ 	      reloc->r_info = ELF32_R_INFO(ELF32_R_SYM(reloc->r_info),
+ 					   R_AMDGPU_REL32);
+ 	      break;
+ 	    case R_X86_64_PC64:
+ 	      reloc->r_info = ELF32_R_INFO(ELF32_R_SYM(reloc->r_info),
+ 					   R_AMDGPU_REL64);
+ 	      break;
+ 	    case R_X86_64_64:
+ 	      reloc->r_info = ELF32_R_INFO(ELF32_R_SYM(reloc->r_info),
+ 					   R_AMDGPU_ABS64);
+ 	      break;
+ 	    case R_X86_64_RELATIVE:
+ 	      reloc->r_info = ELF32_R_INFO(ELF32_R_SYM(reloc->r_info),
+ 					   R_AMDGPU_RELATIVE64);
+ 	      break;
+ 	    default:
+ 	      gcc_unreachable ();
+ 	    }
+ 	}
+ 
+       /* Write back our relocation changes.  */
+       if (fseek (outfd, sections[i].sh_offset, SEEK_SET) != -1)
+ 	fwrite (data, sections[i].sh_size, 1, outfd);
+ 
+       free (data);
+     }
+ 
+   /* Weaken any global undefined symbols that would pull in unwanted
+      objects.  */
+   for (int i = 0; i < ehdr.e_shnum; i++)
+     {
+       if (sections[i].sh_type != SHT_SYMTAB)
+ 	continue;
+ 
+       char *data = (char *)xmalloc (sections[i].sh_size);
+       if (fseek (outfd, sections[i].sh_offset, SEEK_SET) == -1
+ 	  || fread (data, sections[i].sh_size, 1, outfd) != 1)
+ 	{
+ 	  free (data);
+ 	  continue;
+ 	}
+ 
+       for (size_t offset = 0;
+ 	   offset < sections[i].sh_size;
+ 	   offset += sections[i].sh_entsize)
+ 	{
+ 	  Elf64_Sym *sym = (Elf64_Sym *) (data + offset);
+ 	  int type = ELF64_ST_TYPE (sym->st_info);
+ 	  int bind = ELF64_ST_BIND (sym->st_info);
+ 
+ 	  if (bind == STB_GLOBAL && sym->st_shndx == 0)
+ 	    sym->st_info = ELF64_ST_INFO (STB_WEAK, type);
+ 	}
+ 
+       /* Write back our symbol changes.  */
+       if (fseek (outfd, sections[i].sh_offset, SEEK_SET) != -1)
+ 	fwrite (data, sections[i].sh_size, 1, outfd);
+ 
+       free (data);
+     }
+   free (sections);
+ 
+   /* Write back our header changes.  */
+   rewind (outfd);
+   fwrite (&ehdr, sizeof (ehdr), 1, outfd);
+ 
+   fclose (outfd);
+   return true;
+ }
+ 
  /* Parse an input assembler file, extract the offload tables etc.,
     and output (1) the assembler code, minus the tables (which can contain
     problematic relocations), and (2) a C file with the offload tables
*************** process_asm (FILE *in, FILE *out, FILE *
*** 230,236 ****
      int sgpr_count;
      int vgpr_count;
      char *kernel_name;
!   } regcount;
  
    /* Always add _init_array and _fini_array as kernels.  */
    obstack_ptr_grow (&fns_os, xstrdup ("_init_array"));
--- 439,445 ----
      int sgpr_count;
      int vgpr_count;
      char *kernel_name;
!   } regcount = { -1, -1, NULL };
  
    /* Always add _init_array and _fini_array as kernels.  */
    obstack_ptr_grow (&fns_os, xstrdup ("_init_array"));
*************** process_asm (FILE *in, FILE *out, FILE *
*** 238,244 ****
    fn_count += 2;
  
    char buf[1000];
!   enum { IN_CODE, IN_AMD_KERNEL_CODE_T, IN_VARS, IN_FUNCS } state = IN_CODE;
    while (fgets (buf, sizeof (buf), in))
      {
        switch (state)
--- 447,458 ----
    fn_count += 2;
  
    char buf[1000];
!   enum
!     { IN_CODE,
!       IN_METADATA,
!       IN_VARS,
!       IN_FUNCS
!     } state = IN_CODE;
    while (fgets (buf, sizeof (buf), in))
      {
        switch (state)
*************** process_asm (FILE *in, FILE *out, FILE *
*** 251,271 ****
  		obstack_grow (&dims_os, &dim, sizeof (dim));
  		dims_count++;
  	      }
- 	    else if (sscanf (buf, " .amdgpu_hsa_kernel %ms\n",
- 			     &regcount.kernel_name) == 1)
- 	      break;
  
  	    break;
  	  }
! 	case IN_AMD_KERNEL_CODE_T:
  	  {
! 	    gcc_assert (regcount.kernel_name);
! 	    if (sscanf (buf, " wavefront_sgpr_count = %d\n",
! 			&regcount.sgpr_count) == 1)
  	      break;
! 	    else if (sscanf (buf, " workitem_vgpr_count = %d\n",
  			     &regcount.vgpr_count) == 1)
! 	      break;
  
  	    break;
  	  }
--- 465,489 ----
  		obstack_grow (&dims_os, &dim, sizeof (dim));
  		dims_count++;
  	      }
  
  	    break;
  	  }
! 	case IN_METADATA:
  	  {
! 	    if (sscanf (buf, " - .name: %ms\n", &regcount.kernel_name) == 1)
  	      break;
! 	    else if (sscanf (buf, " .sgpr_count: %d\n",
! 			     &regcount.sgpr_count) == 1)
! 	      {
! 		gcc_assert (regcount.kernel_name);
! 		break;
! 	      }
! 	    else if (sscanf (buf, " .vgpr_count: %d\n",
  			     &regcount.vgpr_count) == 1)
! 	      {
! 		gcc_assert (regcount.kernel_name);
! 		break;
! 	      }
  
  	    break;
  	  }
*************** process_asm (FILE *in, FILE *out, FILE *
*** 306,314 ****
  	state = IN_VARS;
        else if (sscanf (buf, " .section .gnu.offload_funcs%c", &dummy) > 0)
  	state = IN_FUNCS;
!       else if (sscanf (buf, " .amd_kernel_code_%c", &dummy) > 0)
  	{
! 	  state = IN_AMD_KERNEL_CODE_T;
  	  regcount.sgpr_count = regcount.vgpr_count = -1;
  	}
        else if (sscanf (buf, " .section %c", &dummy) > 0
--- 524,533 ----
  	state = IN_VARS;
        else if (sscanf (buf, " .section .gnu.offload_funcs%c", &dummy) > 0)
  	state = IN_FUNCS;
!       else if (sscanf (buf, " .amdgpu_metadata%c", &dummy) > 0)
  	{
! 	  state = IN_METADATA;
! 	  regcount.kernel_name = NULL;
  	  regcount.sgpr_count = regcount.vgpr_count = -1;
  	}
        else if (sscanf (buf, " .section %c", &dummy) > 0
*************** process_asm (FILE *in, FILE *out, FILE *
*** 317,323 ****
  	       || sscanf (buf, " .data%c", &dummy) > 0
  	       || sscanf (buf, " .ident %c", &dummy) > 0)
  	state = IN_CODE;
!       else if (sscanf (buf, " .end_amd_kernel_code_%c", &dummy) > 0)
  	{
  	  state = IN_CODE;
  	  gcc_assert (regcount.kernel_name != NULL
--- 536,542 ----
  	       || sscanf (buf, " .data%c", &dummy) > 0
  	       || sscanf (buf, " .ident %c", &dummy) > 0)
  	state = IN_CODE;
!       else if (sscanf (buf, " .end_amdgpu_metadata%c", &dummy) > 0)
  	{
  	  state = IN_CODE;
  	  gcc_assert (regcount.kernel_name != NULL
*************** process_asm (FILE *in, FILE *out, FILE *
*** 329,335 ****
  	  regcount.sgpr_count = regcount.vgpr_count = -1;
  	}
  
!       if (state == IN_CODE || state == IN_AMD_KERNEL_CODE_T)
  	fputs (buf, out);
      }
  
--- 548,554 ----
  	  regcount.sgpr_count = regcount.vgpr_count = -1;
  	}
  
!       if (state == IN_CODE || state == IN_METADATA)
  	fputs (buf, out);
      }
  
*************** process_obj (FILE *in, FILE *cfile)
*** 482,488 ****
  /* Compile a C file using the host compiler.  */
  
  static void
! compile_native (const char *infile, const char *outfile, const char *compiler)
  {
    const char *collect_gcc_options = getenv ("COLLECT_GCC_OPTIONS");
    if (!collect_gcc_options)
--- 701,708 ----
  /* Compile a C file using the host compiler.  */
  
  static void
! compile_native (const char *infile, const char *outfile, const char *compiler,
! 		bool fPIC, bool fpic)
  {
    const char *collect_gcc_options = getenv ("COLLECT_GCC_OPTIONS");
    if (!collect_gcc_options)
*************** compile_native (const char *infile, cons
*** 492,501 ****
--- 712,731 ----
    struct obstack argv_obstack;
    obstack_init (&argv_obstack);
    obstack_ptr_grow (&argv_obstack, compiler);
+   if (fPIC)
+     obstack_ptr_grow (&argv_obstack, "-fPIC");
+   if (fpic)
+     obstack_ptr_grow (&argv_obstack, "-fpic");
    if (save_temps)
      obstack_ptr_grow (&argv_obstack, "-save-temps");
    if (verbose)
      obstack_ptr_grow (&argv_obstack, "-v");
+   obstack_ptr_grow (&argv_obstack, "-dumpdir");
+   obstack_ptr_grow (&argv_obstack, "");
+   obstack_ptr_grow (&argv_obstack, "-dumpbase");
+   obstack_ptr_grow (&argv_obstack, gcn_dumpbase);
+   obstack_ptr_grow (&argv_obstack, "-dumpbase-ext");
+   obstack_ptr_grow (&argv_obstack, ".c");
    switch (offload_abi)
      {
      case OFFLOAD_ABI_LP64:
*************** compile_native (const char *infile, cons
*** 514,520 ****
    obstack_ptr_grow (&argv_obstack, NULL);
  
    const char **new_argv = XOBFINISH (&argv_obstack, const char **);
!   fork_execute (new_argv[0], CONST_CAST (char **, new_argv), true);
    obstack_free (&argv_obstack, NULL);
  }
  
--- 744,751 ----
    obstack_ptr_grow (&argv_obstack, NULL);
  
    const char **new_argv = XOBFINISH (&argv_obstack, const char **);
!   fork_execute (new_argv[0], CONST_CAST (char **, new_argv), true,
! 		".gccnative_args");
    obstack_free (&argv_obstack, NULL);
  }
  
*************** main (int argc, char **argv)
*** 524,534 ****
    FILE *in = stdin;
    FILE *out = stdout;
    FILE *cfile = stdout;
!   const char *outname = 0, *offloadsrc = 0;
  
    progname = "mkoffload";
    diagnostic_initialize (global_dc, 0);
  
    if (atexit (mkoffload_cleanup) != 0)
      fatal_error (input_location, "atexit failed");
  
--- 755,766 ----
    FILE *in = stdin;
    FILE *out = stdout;
    FILE *cfile = stdout;
!   const char *outname = 0;
  
    progname = "mkoffload";
    diagnostic_initialize (global_dc, 0);
  
+   obstack_init (&files_to_cleanup);
    if (atexit (mkoffload_cleanup) != 0)
      fatal_error (input_location, "atexit failed");
  
*************** main (int argc, char **argv)
*** 589,594 ****
--- 821,828 ----
    /* Scan the argument vector.  */
    bool fopenmp = false;
    bool fopenacc = false;
+   bool fPIC = false;
+   bool fpic = false;
    for (int i = 1; i < argc; i++)
      {
  #define STR "-foffload-abi="
*************** main (int argc, char **argv)
*** 607,617 ****
--- 841,867 ----
  	fopenmp = true;
        else if (strcmp (argv[i], "-fopenacc") == 0)
  	fopenacc = true;
+       else if (strcmp (argv[i], "-fPIC") == 0)
+ 	fPIC = true;
+       else if (strcmp (argv[i], "-fpic") == 0)
+ 	fpic = true;
        else if (strcmp (argv[i], "-save-temps") == 0)
  	save_temps = true;
        else if (strcmp (argv[i], "-v") == 0)
  	verbose = true;
+       else if (strcmp (argv[i], "-dumpbase") == 0
+ 	       && i + 1 < argc)
+ 	dumppfx = argv[++i];
+       else if (strcmp (argv[i], "-march=fiji") == 0)
+ 	elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX803;
+       else if (strcmp (argv[i], "-march=gfx900") == 0)
+ 	elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX900;
+       else if (strcmp (argv[i], "-march=gfx906") == 0)
+ 	elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX906;
+       else if (strcmp (argv[i], "-march=gfx908") == 0)
+ 	elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX908;
      }
+ 
    if (!(fopenacc ^ fopenmp))
      fatal_error (input_location, "either -fopenacc or -fopenmp must be set");
  
*************** main (int argc, char **argv)
*** 648,662 ****
        if (!strcmp (argv[ix], "-o") && ix + 1 != argc)
  	outname = argv[++ix];
        else
! 	{
! 	  obstack_ptr_grow (&cc_argv_obstack, argv[ix]);
! 
! 	  if (argv[ix][0] != '-')
! 	    offloadsrc = argv[ix];
! 	}
      }
  
!   gcn_cfile_name = make_temp_file (".c");
  
    cfile = fopen (gcn_cfile_name, "w");
    if (!cfile)
--- 898,917 ----
        if (!strcmp (argv[ix], "-o") && ix + 1 != argc)
  	outname = argv[++ix];
        else
! 	obstack_ptr_grow (&cc_argv_obstack, argv[ix]);
      }
  
!   if (!dumppfx)
!     dumppfx = outname;
! 
!   gcn_dumpbase = concat (dumppfx, ".c", NULL);
! 
!   const char *gcn_cfile_name;
!   if (save_temps)
!     gcn_cfile_name = gcn_dumpbase;
!   else
!     gcn_cfile_name = make_temp_file (".c");
!   obstack_ptr_grow (&files_to_cleanup, gcn_cfile_name);
  
    cfile = fopen (gcn_cfile_name, "w");
    if (!cfile)
*************** main (int argc, char **argv)
*** 665,678 ****
    /* Currently, we only support offloading in 64-bit configurations.  */
    if (offload_abi == OFFLOAD_ABI_LP64)
      {
!       gcn_s1_name = make_temp_file (".mkoffload.1.s");
!       gcn_s2_name = make_temp_file (".mkoffload.2.s");
!       gcn_o_name = make_temp_file (".mkoffload.hsaco");
  
        obstack_ptr_grow (&cc_argv_obstack, "-o");
        obstack_ptr_grow (&cc_argv_obstack, gcn_s1_name);
-       obstack_ptr_grow (&cc_argv_obstack,
- 			concat ("-mlocal-symbol-id=", offloadsrc, NULL));
        obstack_ptr_grow (&cc_argv_obstack, NULL);
        const char **cc_argv = XOBFINISH (&cc_argv_obstack, const char **);
  
--- 920,956 ----
    /* Currently, we only support offloading in 64-bit configurations.  */
    if (offload_abi == OFFLOAD_ABI_LP64)
      {
!       const char *mko_dumpbase = concat (dumppfx, ".mkoffload", NULL);
!       const char *hsaco_dumpbase = concat (dumppfx, ".mkoffload.hsaco", NULL);
! 
!       const char *gcn_s1_name;
!       const char *gcn_s2_name;
!       const char *gcn_o_name;
!       if (save_temps)
! 	{
! 	  gcn_s1_name = concat (mko_dumpbase, ".1.s", NULL);
! 	  gcn_s2_name = concat (mko_dumpbase, ".2.s", NULL);
! 	  gcn_o_name = hsaco_dumpbase;
! 	}
!       else
! 	{
! 	  gcn_s1_name = make_temp_file (".mkoffload.1.s");
! 	  gcn_s2_name = make_temp_file (".mkoffload.2.s");
! 	  gcn_o_name = make_temp_file (".mkoffload.hsaco");
! 	}
!       obstack_ptr_grow (&files_to_cleanup, gcn_s1_name);
!       obstack_ptr_grow (&files_to_cleanup, gcn_s2_name);
!       obstack_ptr_grow (&files_to_cleanup, gcn_o_name);
! 
!       obstack_ptr_grow (&cc_argv_obstack, "-dumpdir");
!       obstack_ptr_grow (&cc_argv_obstack, "");
!       obstack_ptr_grow (&cc_argv_obstack, "-dumpbase");
!       obstack_ptr_grow (&cc_argv_obstack, mko_dumpbase);
!       obstack_ptr_grow (&cc_argv_obstack, "-dumpbase-ext");
!       obstack_ptr_grow (&cc_argv_obstack, "");
  
        obstack_ptr_grow (&cc_argv_obstack, "-o");
        obstack_ptr_grow (&cc_argv_obstack, gcn_s1_name);
        obstack_ptr_grow (&cc_argv_obstack, NULL);
        const char **cc_argv = XOBFINISH (&cc_argv_obstack, const char **);
  
*************** main (int argc, char **argv)
*** 680,685 ****
--- 958,996 ----
        struct obstack ld_argv_obstack;
        obstack_init (&ld_argv_obstack);
        obstack_ptr_grow (&ld_argv_obstack, driver);
+ 
+       /* Extract early-debug information from the input objects.
+ 	 This loop finds all the inputs that end ".o" and aren't the output.  */
+       int dbgcount = 0;
+       for (int ix = 1; ix != argc; ix++)
+ 	{
+ 	  if (!strcmp (argv[ix], "-o") && ix + 1 != argc)
+ 	    ++ix;
+ 	  else
+ 	    {
+ 	      if (strcmp (argv[ix] + strlen(argv[ix]) - 2, ".o") == 0)
+ 		{
+ 		  char *dbgobj;
+ 		  if (save_temps)
+ 		    {
+ 		      char buf[10];
+ 		      sprintf (buf, "%d", dbgcount++);
+ 		      dbgobj = concat (dumppfx, ".mkoffload.dbg", buf, ".o", NULL);
+ 		    }
+ 		  else
+ 		    dbgobj = make_temp_file (".mkoffload.dbg.o");
+ 
+ 		  /* If the copy fails then just ignore it.  */
+ 		  if (copy_early_debug_info (argv[ix], dbgobj))
+ 		    {
+ 		      obstack_ptr_grow (&ld_argv_obstack, dbgobj);
+ 		      obstack_ptr_grow (&files_to_cleanup, dbgobj);
+ 		    }
+ 		  else
+ 		    free (dbgobj);
+ 		}
+ 	    }
+ 	}
        obstack_ptr_grow (&ld_argv_obstack, gcn_s2_name);
        obstack_ptr_grow (&ld_argv_obstack, "-lgomp");
  
*************** main (int argc, char **argv)
*** 689,694 ****
--- 1000,1012 ----
  	    || strncmp (argv[i], "-march", 6) == 0)
  	  obstack_ptr_grow (&ld_argv_obstack, argv[i]);
  
+       obstack_ptr_grow (&cc_argv_obstack, "-dumpdir");
+       obstack_ptr_grow (&cc_argv_obstack, "");
+       obstack_ptr_grow (&cc_argv_obstack, "-dumpbase");
+       obstack_ptr_grow (&cc_argv_obstack, hsaco_dumpbase);
+       obstack_ptr_grow (&cc_argv_obstack, "-dumpbase-ext");
+       obstack_ptr_grow (&cc_argv_obstack, "");
+ 
        obstack_ptr_grow (&ld_argv_obstack, "-o");
        obstack_ptr_grow (&ld_argv_obstack, gcn_o_name);
        obstack_ptr_grow (&ld_argv_obstack, NULL);
*************** main (int argc, char **argv)
*** 703,709 ****
        unsetenv ("LIBRARY_PATH");
  
        /* Run the compiler pass.  */
!       fork_execute (cc_argv[0], CONST_CAST (char **, cc_argv), true);
        obstack_free (&cc_argv_obstack, NULL);
  
        in = fopen (gcn_s1_name, "r");
--- 1021,1027 ----
        unsetenv ("LIBRARY_PATH");
  
        /* Run the compiler pass.  */
!       fork_execute (cc_argv[0], CONST_CAST (char **, cc_argv), true, ".gcc_args");
        obstack_free (&cc_argv_obstack, NULL);
  
        in = fopen (gcn_s1_name, "r");
*************** main (int argc, char **argv)
*** 720,726 ****
        fclose (out);
  
        /* Run the assemble/link pass.  */
!       fork_execute (ld_argv[0], CONST_CAST (char **, ld_argv), true);
        obstack_free (&ld_argv_obstack, NULL);
  
        in = fopen (gcn_o_name, "r");
--- 1038,1044 ----
        fclose (out);
  
        /* Run the assemble/link pass.  */
!       fork_execute (ld_argv[0], CONST_CAST (char **, ld_argv), true, ".ld_args");
        obstack_free (&ld_argv_obstack, NULL);
  
        in = fopen (gcn_o_name, "r");
*************** main (int argc, char **argv)
*** 738,744 ****
  
    fclose (cfile);
  
!   compile_native (gcn_cfile_name, outname, collect_gcc);
  
    return 0;
  }
--- 1056,1062 ----
  
    fclose (cfile);
  
!   compile_native (gcn_cfile_name, outname, collect_gcc, fPIC, fpic);
  
    return 0;
  }
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/offload.h gcc-11.1.0/gcc/config/gcn/offload.h
*** gcc-10.3.0/gcc/config/gcn/offload.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/offload.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Support for AMD GCN offloading.
  
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Support for AMD GCN offloading.
  
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/predicates.md gcc-11.1.0/gcc/config/gcn/predicates.md
*** gcc-10.3.0/gcc/config/gcn/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/predicates.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Predicate definitions for GCN.
! ;; Copyright (C) 2016-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for GCN.
! ;; Copyright (C) 2016-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/t-gcn-hsa gcc-11.1.0/gcc/config/gcn/t-gcn-hsa
*** gcc-10.3.0/gcc/config/gcn/t-gcn-hsa	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/t-gcn-hsa	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! #  Copyright (C) 2016-2020 Free Software Foundation, Inc.
  #
  #  This file 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
--- 1,4 ----
! #  Copyright (C) 2016-2021 Free Software Foundation, Inc.
  #
  #  This file 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
*************** ALL_HOST_OBJS += gcn-run.o
*** 42,51 ****
  gcn-run$(exeext): gcn-run.o
  	+$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ $< -ldl
  
! MULTILIB_OPTIONS = march=gfx900/march=gfx906
! MULTILIB_DIRNAMES = gfx900 gfx906
  
- PASSES_EXTRA += $(srcdir)/config/gcn/gcn-passes.def
  gcn-tree.o: $(srcdir)/config/gcn/gcn-tree.c
  	$(COMPILE) $<
  	$(POSTCOMPILE)
--- 42,50 ----
  gcn-run$(exeext): gcn-run.o
  	+$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ $< -ldl
  
! MULTILIB_OPTIONS = march=gfx900/march=gfx906/march=gfx908
! MULTILIB_DIRNAMES = gfx900 gfx906 gfx908
  
  gcn-tree.o: $(srcdir)/config/gcn/gcn-tree.c
  	$(COMPILE) $<
  	$(POSTCOMPILE)
diff -Nrcpad gcc-10.3.0/gcc/config/gcn/t-omp-device gcc-11.1.0/gcc/config/gcn/t-omp-device
*** gcc-10.3.0/gcc/config/gcn/t-omp-device	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gcn/t-omp-device	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
  omp-device-properties-gcn: $(srcdir)/config/gcn/gcn.c
  	echo kind: gpu > $@
  	echo arch: gcn >> $@
! 	echo isa: fiji gfx900 gfx906 >> $@
--- 1,4 ----
  omp-device-properties-gcn: $(srcdir)/config/gcn/gcn.c
  	echo kind: gpu > $@
  	echo arch: gcn >> $@
! 	echo isa: fiji gfx900 gfx906 gfx908 >> $@
diff -Nrcpad gcc-10.3.0/gcc/config/glibc-c.c gcc-11.1.0/gcc/config/glibc-c.c
*** gcc-10.3.0/gcc/config/glibc-c.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/glibc-c.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* C-family target hooks initializer for targets possibly using glibc.
!    Copyright (C) 2012-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* C-family target hooks initializer for targets possibly using glibc.
!    Copyright (C) 2012-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/glibc-d.c gcc-11.1.0/gcc/config/glibc-d.c
*** gcc-10.3.0/gcc/config/glibc-d.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/glibc-d.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Glibc support needed only by D front-end.
!    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
  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
--- 1,5 ----
  /* Glibc support needed only by D front-end.
!    Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
  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
*************** glibc_d_os_builtins (void)
*** 42,64 ****
  #endif
  }
  
! /* Implement TARGET_D_CRITSEC_SIZE for Glibc targets.  */
  
! static unsigned
! glibc_d_critsec_size (void)
  {
!   /* This is the sizeof pthread_mutex_t.  */
! #ifdef GNU_USER_TARGET_D_CRITSEC_SIZE
!   return GNU_USER_TARGET_D_CRITSEC_SIZE;
! #else
!   return (POINTER_SIZE == 64) ? 40 : 24;
! #endif
  }
  
  #undef TARGET_D_OS_VERSIONS
  #define TARGET_D_OS_VERSIONS glibc_d_os_builtins
  
! #undef TARGET_D_CRITSEC_SIZE
! #define TARGET_D_CRITSEC_SIZE glibc_d_critsec_size
  
  struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
--- 42,74 ----
  #endif
  }
  
! /* Handle a call to `__traits(getTargetInfo, "objectFormat")'.  */
  
! static tree
! glibc_d_handle_target_object_format (void)
  {
!   const char *objfmt = "elf";
! 
!   return build_string_literal (strlen (objfmt) + 1, objfmt);
! }
! 
! /* Implement TARGET_D_REGISTER_OS_TARGET_INFO for Glibc targets.  */
! 
! static void
! glibc_d_register_target_info (void)
! {
!   const struct d_target_info_spec handlers[] = {
!     { "objectFormat", glibc_d_handle_target_object_format },
!     { NULL, NULL },
!   };
! 
!   d_add_target_info_handlers (handlers);
  }
  
  #undef TARGET_D_OS_VERSIONS
  #define TARGET_D_OS_VERSIONS glibc_d_os_builtins
  
! #undef TARGET_D_REGISTER_OS_TARGET_INFO
! #define TARGET_D_REGISTER_OS_TARGET_INFO glibc_d_register_target_info
  
  struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
diff -Nrcpad gcc-10.3.0/gcc/config/glibc-stdint.h gcc-11.1.0/gcc/config/glibc-stdint.h
*** gcc-10.3.0/gcc/config/glibc-stdint.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/glibc-stdint.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for <stdint.h> types on systems using GNU libc or uClibc.
!    Copyright (C) 2008-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for <stdint.h> types on systems using GNU libc or uClibc.
!    Copyright (C) 2008-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/gnu-user.h gcc-11.1.0/gcc/config/gnu-user.h
*** gcc-10.3.0/gcc/config/gnu-user.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gnu-user.h	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* Definitions for systems using, at least optionally, a GNU
     (glibc-based) userspace or other userspace with libc derived from
     glibc (e.g. uClibc) or for which similar specs are appropriate.
!    Copyright (C) 1995-2020 Free Software Foundation, Inc.
     Contributed by Eric Youngdale.
     Modified for stabs-in-ELF by H.J. Lu (hjl@lucon.org).
  
--- 1,7 ----
  /* Definitions for systems using, at least optionally, a GNU
     (glibc-based) userspace or other userspace with libc derived from
     glibc (e.g. uClibc) or for which similar specs are appropriate.
!    Copyright (C) 1995-2021 Free Software Foundation, Inc.
     Contributed by Eric Youngdale.
     Modified for stabs-in-ELF by H.J. Lu (hjl@lucon.org).
  
*************** see the files COPYING3 and COPYING.RUNTI
*** 129,142 ****
  /* Link -lasan early on the command line.  For -static-libasan, don't link
     it for -shared link, the executable should be compiled with -static-libasan
     in that case, and for executable link with --{,no-}whole-archive around
!    it to force everything into the executable.  And similarly for -ltsan
!    and -llsan.  */
  #if defined(HAVE_LD_STATIC_DYNAMIC)
  #undef LIBASAN_EARLY_SPEC
  #define LIBASAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \
    "%{static-libasan:%{!shared:" \
    LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \
    LD_DYNAMIC_OPTION "}}%{!static-libasan:-lasan}"
  #undef LIBTSAN_EARLY_SPEC
  #define LIBTSAN_EARLY_SPEC "%{!shared:libtsan_preinit%O%s} " \
    "%{static-libtsan:%{!shared:" \
--- 129,146 ----
  /* Link -lasan early on the command line.  For -static-libasan, don't link
     it for -shared link, the executable should be compiled with -static-libasan
     in that case, and for executable link with --{,no-}whole-archive around
!    it to force everything into the executable.  And similarly for -ltsan,
!    -lhwasan, and -llsan.  */
  #if defined(HAVE_LD_STATIC_DYNAMIC)
  #undef LIBASAN_EARLY_SPEC
  #define LIBASAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \
    "%{static-libasan:%{!shared:" \
    LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \
    LD_DYNAMIC_OPTION "}}%{!static-libasan:-lasan}"
+ #undef LIBHWASAN_EARLY_SPEC
+ #define LIBHWASAN_EARLY_SPEC "%{static-libhwasan:%{!shared:" \
+   LD_STATIC_OPTION " --whole-archive -lhwasan --no-whole-archive " \
+   LD_DYNAMIC_OPTION "}}%{!static-libhwasan:-lhwasan}"
  #undef LIBTSAN_EARLY_SPEC
  #define LIBTSAN_EARLY_SPEC "%{!shared:libtsan_preinit%O%s} " \
    "%{static-libtsan:%{!shared:" \
diff -Nrcpad gcc-10.3.0/gcc/config/gnu-user.opt gcc-11.1.0/gcc/config/gnu-user.opt
*** gcc-10.3.0/gcc/config/gnu-user.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gnu-user.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Options for systems using gnu-user.h.
  
! ; Copyright (C) 2011-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for systems using gnu-user.h.
  
! ; Copyright (C) 2011-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-10.3.0/gcc/config/gnu.h gcc-11.1.0/gcc/config/gnu.h
*** gcc-10.3.0/gcc/config/gnu.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/gnu.h	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* Configuration common to all targets running the GNU system.  */
  
  /*
! Copyright (C) 1994-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,7 ----
  /* Configuration common to all targets running the GNU system.  */
  
  /*
! Copyright (C) 1994-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/addsub.md gcc-11.1.0/gcc/config/h8300/addsub.md
*** gcc-10.3.0/gcc/config/h8300/addsub.md	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/h8300/addsub.md	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,241 ----
+ ;; ----------------------------------------------------------------------
+ ;; ADD INSTRUCTIONS
+ ;; ----------------------------------------------------------------------
+ 
+ (define_expand "add<mode>3"
+   [(set (match_operand:QHSI 0 "register_operand" "")
+ 	(plus:QHSI (match_operand:QHSI 1 "register_operand" "")
+ 		   (match_operand:QHSI 2 "h8300_src_operand" "")))]
+   ""
+   "")
+ 
+ (define_insn_and_split "*addqi3"
+   [(set (match_operand:QI 0 "h8300_dst_operand" "=rQ")
+ 	(plus:QI (match_operand:QI 1 "h8300_dst_operand" "%0")
+ 		 (match_operand:QI 2 "h8300_src_operand" "rQi")))]
+   "h8300_operands_match_p (operands)"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (plus:QI (match_dup 1) (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*addqi3_flags<cczn>"
+   [(set (match_operand:QI 0 "h8300_dst_operand" "=rQ")
+ 	(plus:QI (match_operand:QI 1 "h8300_dst_operand" "%0")
+ 		 (match_operand:QI 2 "h8300_src_operand" "rQi")))
+    (clobber (reg:CC CC_REG))]
+   "reload_completed && h8300_operands_match_p (operands)"
+   "add.b	%X2,%X0"
+   [(set_attr "length_table" "add")])
+ 
+ (define_insn_and_split "*addhi"
+   [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r")
+ 	(plus:HI (match_operand:HI 1 "register_operand" "%0,0,0,0,0")
+ 		 (match_operand:HI 2 "h8300_src_operand" "L,N,J,n,r")))]
+   "!TARGET_H8300SX"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (plus:HI (match_dup 1) (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*addhi3_flags<cczn>"
+   [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r")
+ 	(plus:HI (match_operand:HI 1 "register_operand" "%0,0,0,0,0")
+ 		 (match_operand:HI 2 "h8300_src_operand" "M,O,J,n,r")))
+    (clobber (reg:CC CC_REG))]
+   "reload_completed && !TARGET_H8300SX"
+   "*
+   {
+     switch (which_alternative)
+       {
+       case 0:
+ 	return \"inc %T2,%T0\";
+       case 1:
+ 	return \"dec %G2,%T0\";
+       case 2:
+ 	return \"add.b	%t2,%t0\";
+       case 3:
+ 	{
+ 	  /* If the constant is 4 or -4 and we do not need the
+ 	     flags, then we can use adds/subs which is two bytes
+ 	     shorter.  */
+ 	  rtx x = XVECEXP (PATTERN (insn), 0, 1);
+ 	  bool clobber = GET_CODE (x) == CLOBBER;
+ 	  if (clobber && INTVAL (operands[2]) == 4)
+ 	    return \"adds	%2,%S0\";
+ 	  if (clobber && INTVAL (operands[2]) == -4)
+ 	    return \"subs	%G2,%S0\";
+ 	  return \"add.w	%T2,%T0\";
+ 	}
+       case 4:
+ 	return \"add.w	%T2,%T0\";
+       default:
+ 	gcc_unreachable ();
+       }
+   }"
+   [(set_attr "length" "2,2,2,4,2")])
+ 
+ (define_insn_and_split "*addhi3_h8sx"
+   [(set (match_operand:HI 0 "h8300_dst_operand" "=rU,rU,r,rQ")
+ 	(plus:HI (match_operand:HI 1 "h8300_dst_operand" "%0,0,0,0")
+ 		 (match_operand:HI 2 "h8300_src_operand" "P3>X,P3<X,J,rQi")))]
+   "TARGET_H8300SX && h8300_operands_match_p (operands)"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (plus:HI (match_dup 1) (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*addhi3_h8sx_flags<cczn>"
+   [(set (match_operand:HI 0 "h8300_dst_operand" "=rU,rU,r,rQ")
+ 	(plus:HI (match_operand:HI 1 "h8300_dst_operand" "%0,0,0,0")
+ 		 (match_operand:HI 2 "h8300_src_operand" "P3>X,P3<X,J,rQi")))
+    (clobber (reg:CC CC_REG))]
+   "reload_completed && TARGET_H8300SX && h8300_operands_match_p (operands)"
+   "@
+    add.w	%T2:3,%T0
+    sub.w	%G2:3,%T0
+    add.b	%t2,%t0
+    add.w	%T2,%T0"
+   [(set_attr "length_table" "short_immediate,short_immediate,*,add")
+    (set_attr "length" "*,*,2,*")])
+ 
+ (define_split
+   [(set (match_operand:HSI 0 "register_operand" "")
+ 	(plus:HSI (match_dup 0)
+ 		 (match_operand:HSI 1 "two_insn_adds_subs_operand" "")))]
+   "!reload_completed"
+   [(const_int 0)]
+   {
+     split_adds_subs (<MODE>mode, operands);
+     DONE;
+   })
+ 
+ 
+ (define_insn_and_split "*addsi"
+   [(set (match_operand:SI 0 "h8300_dst_operand" "=rQ,rQ")
+ 	(plus:SI (match_operand:SI 1 "h8300_dst_operand" "%0,0")
+ 		 (match_operand:SI 2 "h8300_src_operand" "i,rQ")))]
+   "h8300_operands_match_p (operands)"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*addsi_flags<cczn>"
+   [(set (match_operand:SI 0 "h8300_dst_operand" "=rQ,rQ")
+ 	(plus:SI (match_operand:SI 1 "h8300_dst_operand" "%0,0")
+ 		 (match_operand:SI 2 "h8300_src_operand" "i,rQ")))
+    (clobber (reg:CC CC_REG))]
+   "reload_completed && h8300_operands_match_p (operands)"
+ {
+   rtx x = XVECEXP (PATTERN (insn), 0, 1);
+   return output_plussi (operands, GET_CODE (x) != CLOBBER);
+ }
+   [(set (attr "length")
+ 	(symbol_ref "compute_plussi_length (operands, false)"))])
+ 
+ ;; ----------------------------------------------------------------------
+ ;; SUBTRACT INSTRUCTIONS
+ ;; ----------------------------------------------------------------------
+ 
+ (define_expand "sub<mode>3"
+   [(set (match_operand:QHSI 0 "register_operand" "")
+ 	(minus:QHSI (match_operand:QHSI 1 "register_operand" "")
+ 		    (match_operand:QHSI 2 "h8300_src_operand" "")))]
+   "")
+ 
+ (define_insn_and_split "*subqi3"
+   [(set (match_operand:QI 0 "h8300_dst_operand" "=rQ")
+ 	(minus:QI (match_operand:QI 1 "h8300_dst_operand" "0")
+ 		  (match_operand:QI 2 "h8300_dst_operand" "rQ")))]
+   "h8300_operands_match_p (operands)"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (minus:QI (match_dup 1) (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*subqi3_flags<cczn>"
+   [(set (match_operand:QI 0 "h8300_dst_operand" "=rQ")
+ 	(minus:QI (match_operand:QI 1 "h8300_dst_operand" "0")
+ 		  (match_operand:QI 2 "h8300_dst_operand" "rQ")))
+    (clobber (reg:CC CC_REG))]
+   "reload_completed && h8300_operands_match_p (operands)"
+   "sub.b	%X2,%X0"
+   [(set_attr "length_table" "add")])
+ 
+ (define_insn_and_split "*sub<mode>3"
+   [(set (match_operand:HSI 0 "h8300_dst_operand" "=rQ,rQ")
+ 	(minus:HSI (match_operand:HSI 1 "h8300_dst_operand" "0,0")
+ 		   (match_operand:HSI 2 "h8300_src_operand" "rQ,i")))]
+   "h8300_operands_match_p (operands)"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (minus:HSI (match_dup 1) (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*sub<mode>3_flags<cczn>"
+   [(set (match_operand:HSI 0 "h8300_dst_operand" "=rQ,rQ")
+ 	(minus:HSI (match_operand:HSI 1 "h8300_dst_operand" "0,0")
+ 		   (match_operand:HSI 2 "h8300_src_operand" "rQ,i")))
+    (clobber (reg:CC CC_REG))]
+   "reload_completed && h8300_operands_match_p (operands)"
+   { 
+     if (<MODE>mode == HImode)
+       return "sub.w	%T2,%T0";
+     else if (<MODE>mode == SImode)
+       return "sub.l	%S2,%S0";
+     gcc_unreachable ();
+   }
+   [(set_attr "length_table" "add")])
+ 
+ ;; ----------------------------------------------------------------------
+ ;; NEGATION INSTRUCTIONS
+ ;; ----------------------------------------------------------------------
+ 
+ (define_expand "neg<mode>2"
+   [(set (match_operand:QHSIF 0 "register_operand" "")
+ 	(neg:QHSIF (match_operand:QHSIF 1 "register_operand" "")))]
+   ""
+   "")
+ 
+ (define_insn_and_split "*neg<mode>2"
+   [(set (match_operand:QHSI 0 "h8300_dst_operand" "=rQ")
+ 	(neg:QHSI (match_operand:QHSI 1 "h8300_dst_operand" "0")))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (neg:QHSI (match_dup 1)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*neg<mode>2_flags<cczn>"
+   [(set (match_operand:QHSI 0 "h8300_dst_operand" "=rQ")
+ 	(neg:QHSI (match_operand:QHSI 1 "h8300_dst_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   "reload_completed"
+   {
+     if (<MODE>mode == E_QImode)
+       return "neg	%X0";
+     if (<MODE>mode == E_HImode)
+       return "neg.w	%T0";
+     if (<MODE>mode == E_SImode)
+       return "neg.l	%S0";
+     gcc_unreachable ();
+   }
+   [(set_attr "length_table" "unary")])
+ 
+ (define_insn_and_split "*negsf2"
+   [(set (match_operand:SF 0 "register_operand" "=r")
+ 	(neg:SF (match_operand:SF 1 "register_operand" "0")))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (neg:SF (match_dup 1)))
+ 	      (clobber (reg:CC CC_REG))])])
+   
+ (define_insn "*negsf2_clobber_flags"
+   [(set (match_operand:SF 0 "register_operand" "=r")
+        (neg:SF (match_operand:SF 1 "register_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   "reload_completed"
+   "xor.w\\t#32768,%e0"
+   [(set_attr "length" "4")])
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/bitfield.md gcc-11.1.0/gcc/config/h8300/bitfield.md
*** gcc-10.3.0/gcc/config/h8300/bitfield.md	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/h8300/bitfield.md	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,528 ----
+ ;; -----------------------------------------------------------------
+ ;; BIT FIELDS
+ ;; -----------------------------------------------------------------
+ ;; The H8/300 has given 1/8th of its opcode space to bitfield
+ ;; instructions so let's use them as well as we can.
+ 
+ ;; You'll never believe all these patterns perform one basic action --
+ ;; load a bit from the source, optionally invert the bit, then store it
+ ;; in the destination (which is known to be zero).
+ ;;
+ ;; Combine obviously need some work to better identify this situation and
+ ;; canonicalize the form better.
+ 
+ ;;
+ ;; Inverted loads with a 16bit destination.
+ ;;
+ 
+ (define_insn_and_split ""
+   [(set (match_operand:HI 0 "register_operand" "=&r")
+ 	(zero_extract:HI (xor:HI (match_operand:HI 1 "register_operand" "r")
+ 				 (match_operand:HI 3 "const_int_operand" "n"))
+ 			 (const_int 1)
+ 			 (match_operand:HI 2 "const_int_operand" "n")))]
+   "(TARGET_H8300SX)
+     && (1 << INTVAL (operands[2])) == INTVAL (operands[3])"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (zero_extract:HI (xor:HI (match_dup 1) (match_dup 3))
+ 				    (const_int 1)
+ 				    (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn ""
+   [(set (match_operand:HI 0 "register_operand" "=&r")
+ 	(zero_extract:HI (xor:HI (match_operand:HI 1 "register_operand" "r")
+ 				 (match_operand:HI 3 "const_int_operand" "n"))
+ 			 (const_int 1)
+ 			 (match_operand:HI 2 "const_int_operand" "n")))
+    (clobber (reg:CC CC_REG))]
+   "(TARGET_H8300SX)
+     && (1 << INTVAL (operands[2])) == INTVAL (operands[3])"
+   "sub.w	%0,%0\;bild	%Z2,%Y1\;bst	#0,%X0"
+   [(set_attr "length" "8")])
+ 
+ ;;
+ ;; Normal loads with a 32bit destination.
+ ;;
+ 
+ (define_insn_and_split "*extzv_1_r"
+   [(set (match_operand:SI 0 "register_operand" "=r,r")
+ 	(zero_extract:SI (match_operand:SI 1 "register_operand" "?0,r")
+ 			 (const_int 1)
+ 			 (match_operand 2 "const_int_operand" "n,n")))]
+   "INTVAL (operands[2]) < 16"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (zero_extract:SI (match_dup 1) (const_int 1) (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*extzv_1_r_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r,r")
+ 	(zero_extract:SI (match_operand:SI 1 "register_operand" "?0,r")
+ 			 (const_int 1)
+ 			 (match_operand 2 "const_int_operand" "n,n")))
+    (clobber (reg:CC CC_REG))]
+   "INTVAL (operands[2]) < 16"
+ {
+   return output_simode_bld (0, operands);
+ }
+   [(set_attr "length" "8,6")])
+ 
+ ;;
+ ;; Inverted loads with a 32bit destination.
+ ;;
+ 
+ (define_insn_and_split "*extzv_1_r_inv"
+   [(set (match_operand:SI 0 "register_operand" "=r,r")
+ 	(zero_extract:SI (xor:SI (match_operand:SI 1 "register_operand" "?0,r")
+ 				 (match_operand 3 "const_int_operand" "n,n"))
+ 			 (const_int 1)
+ 			 (match_operand 2 "const_int_operand" "n,n")))]
+   "INTVAL (operands[2]) < 16
+     && (1 << INTVAL (operands[2])) == INTVAL (operands[3])"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (zero_extract:SI (xor:SI (match_dup 1) (match_dup 3))
+ 				    (const_int 1)
+ 				    (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*extzv_1_r_inv_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r,r")
+ 	(zero_extract:SI (xor:SI (match_operand:SI 1 "register_operand" "?0,r")
+ 				 (match_operand 3 "const_int_operand" "n,n"))
+ 			 (const_int 1)
+ 			 (match_operand 2 "const_int_operand" "n,n")))
+    (clobber (reg:CC CC_REG))]
+   "INTVAL (operands[2]) < 16
+     && (1 << INTVAL (operands[2])) == INTVAL (operands[3])"
+ {
+   return output_simode_bld (1, operands);
+ }
+   [(set_attr "length" "8,6")])
+ 
+ (define_expand "insv"
+   [(set (zero_extract:HI (match_operand:HI 0 "general_operand" "")
+ 			 (match_operand:HI 1 "general_operand" "")
+ 			 (match_operand:HI 2 "general_operand" ""))
+ 	(match_operand:HI 3 "general_operand" ""))]
+   "TARGET_H8300SX"
+   {
+     if (GET_CODE (operands[1]) == CONST_INT
+ 	&& GET_CODE (operands[2]) == CONST_INT
+ 	&& INTVAL (operands[1]) <= 8
+ 	&& INTVAL (operands[2]) >= 0
+ 	&& INTVAL (operands[1]) + INTVAL (operands[2]) <= 8
+ 	&& memory_operand (operands[0], GET_MODE (operands[0])))
+       {
+ 	/* If the source operand is zero, it's better to use AND rather
+ 	   than BFST.  Likewise OR if the operand is all ones.  */
+ 	if (GET_CODE (operands[3]) == CONST_INT)
+ 	  {
+ 	    HOST_WIDE_INT mask = (1 << INTVAL (operands[1])) - 1;
+ 	    if ((INTVAL (operands[3]) & mask) == 0)
+ 	      FAIL;
+ 	    if ((INTVAL (operands[3]) & mask) == mask)
+ 	      FAIL;
+ 	  }
+ 	if (! bit_memory_operand (operands[0], GET_MODE (operands[0])))
+ 	  {
+ 	    if (!can_create_pseudo_p ())
+ 	      FAIL;
+ 	    operands[0] =  replace_equiv_address (operands[0], force_reg (Pmode,
+ 						  XEXP (operands[0], 0)));
+ 	  }
+ 	operands[3] = gen_lowpart (QImode, operands[3]);
+ 	if (! operands[3])
+ 	  FAIL;
+ 	if (! register_operand (operands[3], QImode))
+ 	  {
+ 	    if (!can_create_pseudo_p ())
+ 	      FAIL;
+ 	    operands[3] = force_reg (QImode, operands[3]);
+ 	  }
+ 	emit_insn (gen_bfst (adjust_address (operands[0], QImode, 0),
+ 					     operands[3], operands[1], operands[2]));
+ 	DONE;
+       }
+     FAIL;
+   })
+ 
+ (define_insn_and_split ""
+   [(set (zero_extract:HI (match_operand:HI 0 "register_operand" "+r")
+ 			 (const_int 1)
+ 			 (match_operand:HI 1 "immediate_operand" "n"))
+ 	(match_operand:HI 2 "register_operand" "r"))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (zero_extract:HI (match_dup 0) (const_int 1) (match_dup 1))
+ 		   (match_dup 2))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn ""
+   [(set (zero_extract:HI (match_operand:HI 0 "register_operand" "+r")
+ 			 (const_int 1)
+ 			 (match_operand:HI 1 "immediate_operand" "n"))
+ 	(match_operand:HI 2 "register_operand" "r"))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "bld	#0,%R2\;bst	%Z1,%Y0 ; i1"
+   [(set_attr "length" "4")])
+ 
+ (define_expand "extzv"
+   [(set (match_operand:HI 0 "register_operand" "")
+ 	(zero_extract:HI (match_operand:HI 1 "bit_operand" "")
+ 			 (match_operand:HI 2 "general_operand" "")
+ 			 (match_operand:HI 3 "general_operand" "")))]
+   "TARGET_H8300SX"
+   {
+     if (GET_CODE (operands[2]) == CONST_INT
+ 	&& GET_CODE (operands[3]) == CONST_INT
+ 	&& INTVAL (operands[2]) <= 8
+ 	&& INTVAL (operands[3]) >= 0
+ 	&& INTVAL (operands[2]) + INTVAL (operands[3]) <= 8
+ 	&& memory_operand (operands[1], QImode))
+       {
+ 	rtx temp;
+ 
+ 	/* Optimize the case where we're extracting into a paradoxical
+ 	   subreg.  It's only necessary to extend to the inner reg.  */
+ 	if (GET_CODE (operands[0]) == SUBREG
+ 	    && subreg_lowpart_p (operands[0])
+ 	    && (GET_MODE_SIZE (GET_MODE (SUBREG_REG (operands[0])))
+ 		< GET_MODE_SIZE (GET_MODE (operands[0])))
+ 	    && (GET_MODE_CLASS (GET_MODE (SUBREG_REG (operands[0])))
+ 		== MODE_INT))
+ 	   operands[0] = SUBREG_REG (operands[0]);
+ 
+ 	if (!can_create_pseudo_p ())
+ 	  temp = gen_lowpart (QImode, operands[0]);
+ 	else
+ 	  temp = gen_reg_rtx (QImode);
+ 	if (! temp)
+ 	  FAIL;
+         if (! bit_memory_operand (operands[1], QImode))
+ 	  {
+ 	    if (!can_create_pseudo_p ())
+ 	      FAIL;
+ 	    operands[1] = replace_equiv_address (operands[1],
+ 						 force_reg (Pmode, XEXP (operands[1], 0)));
+ 	  }
+ 	emit_insn (gen_bfld (temp, operands[1], operands[2], operands[3]));
+ 	convert_move (operands[0], temp, 1);
+ 	DONE;
+       }
+     FAIL;
+   })
+ 
+ ;; BAND, BOR, and BXOR patterns
+ 
+ (define_insn_and_split ""
+   [(set (match_operand:HI 0 "bit_operand" "=Ur")
+ 	(match_operator:HI 4 "bit_operator"
+ 	 [(zero_extract:HI (match_operand:HI 1 "register_operand" "r")
+ 			   (const_int 1)
+ 			   (match_operand:HI 2 "immediate_operand" "n"))
+ 	  (match_operand:HI 3 "bit_operand" "0")]))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (match_op_dup 4 [(zero_extract:HI (match_dup 1)
+ 						     (const_int 1)
+ 						     (match_dup 2))
+ 				    (match_dup 3)]))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn ""
+   [(set (match_operand:HI 0 "bit_operand" "=Ur")
+ 	(match_operator:HI 4 "bit_operator"
+ 	 [(zero_extract:HI (match_operand:HI 1 "register_operand" "r")
+ 			   (const_int 1)
+ 			   (match_operand:HI 2 "immediate_operand" "n"))
+ 	  (match_operand:HI 3 "bit_operand" "0")]))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "bld	%Z2,%Y1\;b%c4	#0,%R0\;bst	#0,%R0; bl1"
+   [(set_attr "length" "6")])
+ 
+ (define_insn_and_split ""
+   [(set (match_operand:HI 0 "bit_operand" "=Ur")
+ 	(match_operator:HI 5 "bit_operator"
+ 	 [(zero_extract:HI (match_operand:HI 1 "register_operand" "r")
+ 			   (const_int 1)
+ 			   (match_operand:HI 2 "immediate_operand" "n"))
+ 	  (zero_extract:HI (match_operand:HI 3 "register_operand" "r")
+ 			   (const_int 1)
+ 			   (match_operand:HI 4 "immediate_operand" "n"))]))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (match_op_dup 5 [(zero_extract:HI (match_dup 1)
+ 						     (const_int 1)
+ 						     (match_dup 2))
+ 				    (zero_extract:HI (match_dup 3)
+ 						     (const_int 1)
+ 						     (match_dup 4))]))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn ""
+   [(set (match_operand:HI 0 "bit_operand" "=Ur")
+ 	(match_operator:HI 5 "bit_operator"
+ 	 [(zero_extract:HI (match_operand:HI 1 "register_operand" "r")
+ 			   (const_int 1)
+ 			   (match_operand:HI 2 "immediate_operand" "n"))
+ 	  (zero_extract:HI (match_operand:HI 3 "register_operand" "r")
+ 			   (const_int 1)
+ 			   (match_operand:HI 4 "immediate_operand" "n"))]))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "bld	%Z2,%Y1\;b%c5	%Z4,%Y3\;bst	#0,%R0; bl3"
+   [(set_attr "length" "6")])
+ 
+ (define_insn_and_split "bfld"
+   [(set (match_operand:QI 0 "register_operand" "=r")
+ 	(zero_extract:QI (match_operand:QI 1 "bit_memory_operand" "WU")
+ 			 (match_operand:QI 2 "immediate_operand" "n")
+ 			 (match_operand:QI 3 "immediate_operand" "n")))]
+   "TARGET_H8300SX && INTVAL (operands[2]) + INTVAL (operands[3]) <= 8"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (zero_extract:QI (match_dup 1) (match_dup 2) (match_dup 3)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "bfld_clobber_flags"
+   [(set (match_operand:QI 0 "register_operand" "=r")
+ 	(zero_extract:QI (match_operand:QI 1 "bit_memory_operand" "WU")
+ 			 (match_operand:QI 2 "immediate_operand" "n")
+ 			 (match_operand:QI 3 "immediate_operand" "n")))
+    (clobber (reg:CC CC_REG))]
+   "TARGET_H8300SX && INTVAL (operands[2]) + INTVAL (operands[3]) <= 8"
+ {
+   operands[2] = GEN_INT ((1 << (INTVAL (operands[2]) + INTVAL (operands[3])))
+ 			 - (1 << INTVAL (operands[3])));
+   return "bfld	%2,%1,%R0";
+ }
+   [(set_attr "length_table" "bitfield")])
+ 
+ (define_insn_and_split "bfst"
+   [(set (zero_extract:QI (match_operand:QI 0 "bit_memory_operand" "+WU")
+ 			 (match_operand:QI 2 "immediate_operand" "n")
+ 			 (match_operand:QI 3 "immediate_operand" "n"))
+ 	(match_operand:QI 1 "register_operand" "r"))]
+   "TARGET_H8300SX && INTVAL (operands[2]) + INTVAL (operands[3]) <= 8"
+   "#"
+   "reload_completed"
+   [(parallel [(set (zero_extract:QI (match_dup 0) (match_dup 2) (match_dup 3))
+ 		   (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "bfst_clobber_flags"
+   [(set (zero_extract:QI (match_operand:QI 0 "bit_memory_operand" "+WU")
+ 			 (match_operand:QI 2 "immediate_operand" "n")
+ 			 (match_operand:QI 3 "immediate_operand" "n"))
+ 	(match_operand:QI 1 "register_operand" "r"))
+    (clobber (reg:CC CC_REG))]
+   "TARGET_H8300SX && INTVAL (operands[2]) + INTVAL (operands[3]) <= 8"
+ {
+   operands[2] = GEN_INT ((1 << (INTVAL (operands[2]) + INTVAL (operands[3])))
+ 			 - (1 << INTVAL (operands[3])));
+   return "bfst	%R1,%2,%0";
+ }
+   [(set_attr "length_table" "bitfield")])
+ 
+ ;;(define_expand "cstore<mode>4"
+ ;;  [(use (match_operator 1 "eqne_operator"
+ ;;         [(match_operand:QHSI 2 "h8300_dst_operand" "")
+ ;;          (match_operand:QHSI 3 "h8300_src_operand" "")]))
+ ;;   (clobber (match_operand:QHSI 0 "register_operand"))]
+ ;;  "TARGET_H8300SX"
+ ;;  {
+ ;;    h8300_expand_store (operands);
+ ;;    DONE;
+ ;;  })
+ 
+ ;;(define_insn "*bstzhireg"
+ ;;  [(set (match_operand:HI 0 "register_operand" "=r")
+ ;;	(match_operator:HI 1 "eqne_operator" [(cc0) (const_int 0)]))]
+ ;;  "TARGET_H8300SX"
+ ;;  "mulu.w	#0,%T0\;b%k1	.Lh8BR%=\;inc.w	#1,%T0\\n.Lh8BR%=:")
+ 
+ ;;(define_insn_and_split "*cmpstz"
+ ;;  [(set (zero_extract:QI (match_operand:QI 0 "bit_memory_operand" "+WU,WU")
+ ;;			 (const_int 1)
+ ;;			 (match_operand:QI 1 "immediate_operand" "n,n"))
+ ;;	(match_operator:QI 2 "eqne_operator"
+ ;;	 [(match_operand 3 "h8300_dst_operand" "r,rQ")
+ ;;	  (match_operand 4 "h8300_src_operand" "I,rQi")]))]
+ ;;  "TARGET_H8300SX
+ ;;   && (GET_MODE (operands[3]) == GET_MODE (operands[4])
+ ;;       || GET_CODE (operands[4]) == CONST_INT)
+ ;;   && GET_MODE_CLASS (GET_MODE (operands[3])) == MODE_INT
+ ;;   && GET_MODE_SIZE (GET_MODE (operands[3])) <= 4"
+ ;;  "#"
+ ;;  "reload_completed"
+ ;;  [(set (cc0) (match_dup 5))
+ ;;   (set (zero_extract:QI (match_dup 0) (const_int 1) (match_dup 1))
+ ;;	(match_op_dup:QI 2 [(cc0) (const_int 0)]))]
+ ;;  {
+ ;;    operands[5] = gen_rtx_COMPARE (VOIDmode, operands[3], operands[4]);
+ ;;  })
+ 
+ ;;(define_insn "*bstz"
+ ;;  [(set (zero_extract:QI (match_operand:QI 0 "bit_memory_operand" "+WU")
+ ;;			 (const_int 1)
+ ;;			 (match_operand:QI 1 "immediate_operand" "n"))
+ ;;	(eq:QI (cc0) (const_int 0)))]
+ ;;  "TARGET_H8300SX && reload_completed"
+ ;;  "bstz	%1,%0"
+ ;;  [(set_attr "length_table" "unary")])
+ 
+ ;;(define_insn "*bistz"
+ ;;  [(set (zero_extract:QI (match_operand:QI 0 "bit_memory_operand" "+WU")
+ ;;			 (const_int 1)
+ ;;			 (match_operand:QI 1 "immediate_operand" "n"))
+ ;;	(ne:QI (cc0) (const_int 0)))]
+ ;;  "TARGET_H8300SX && reload_completed"
+ ;;  "bistz	%1,%0"
+ ;;  [(set_attr "length_table" "unary")])
+ 
+ ;;(define_insn_and_split "*cmpcondbset"
+ ;;  [(set (match_operand:QI 0 "nonimmediate_operand" "=WU,WU")
+ ;;	(if_then_else:QI (match_operator 1 "eqne_operator"
+ ;;			  [(match_operand 2 "h8300_dst_operand" "r,rQ")
+ ;;			   (match_operand 3 "h8300_src_operand" "I,rQi")])
+ ;;			 (ior:QI (match_operand:QI 4 "bit_memory_operand" "0,0")
+ ;;				 (match_operand:QI 5 "single_one_operand" "n,n"))
+ ;;			 (match_dup 4)))]
+ ;;  "TARGET_H8300SX"
+ ;;  "#"
+ ;;  "reload_completed"
+ ;;  [(set (cc0) (match_dup 6))
+ ;;   (set (match_dup 0)
+ ;;	(if_then_else:QI (match_op_dup 1 [(cc0) (const_int 0)])
+ ;;			 (ior:QI (match_dup 4) (match_dup 5))
+ ;;			 (match_dup 4)))]
+ ;;  {
+ ;;    operands[6] = gen_rtx_COMPARE (VOIDmode, operands[2], operands[3]);
+ ;;  })
+ 
+ ;;(define_insn "*condbset"
+ ;;  [(set (match_operand:QI 0 "bit_memory_operand" "=WU")
+ ;;	(if_then_else:QI (match_operator:QI 2 "eqne_operator"
+ ;;			  [(cc0) (const_int 0)])
+ ;;			 (ior:QI (match_operand:QI 3 "bit_memory_operand" "0")
+ ;;				 (match_operand:QI 1 "single_one_operand" "n"))
+ ;;			 (match_dup 3)))]
+ ;;  "TARGET_H8300SX && reload_completed"
+ ;;  "bset/%j2\t%V1,%0"
+ ;;  [(set_attr "length_table" "logicb")])
+ 
+ ;;(define_insn_and_split "*cmpcondbclr"
+ ;;  [(set (match_operand:QI 0 "nonimmediate_operand" "=WU,WU")
+ ;;	(if_then_else:QI (match_operator 1 "eqne_operator"
+ ;;			  [(match_operand 2 "h8300_dst_operand" "r,rQ")
+ ;;			   (match_operand 3 "h8300_src_operand" "I,rQi")])
+ ;;			 (and:QI (match_operand:QI 4 "bit_memory_operand" "0,0")
+ ;;				 (match_operand:QI 5 "single_zero_operand" "n,n"))
+ ;;			 (match_dup 4)))]
+ ;;  "TARGET_H8300SX"
+ ;;  "#"
+ ;;  "reload_completed"
+ ;;  [(set (cc0) (match_dup 6))
+ ;;   (set (match_dup 0)
+ ;;	(if_then_else:QI (match_op_dup 1 [(cc0) (const_int 0)])
+ ;;			 (and:QI (match_dup 4) (match_dup 5))
+ ;;			 (match_dup 4)))]
+ ;;  {
+ ;;    operands[6] = gen_rtx_COMPARE (VOIDmode, operands[2], operands[3]);
+ ;;  })
+ 
+ ;;(define_insn "*condbclr"
+ ;;  [(set (match_operand:QI 0 "bit_memory_operand" "=WU")
+ ;;	(if_then_else:QI (match_operator:QI 2 "eqne_operator"
+ ;;			  [(cc0) (const_int 0)])
+ ;;			 (and:QI (match_operand:QI 3 "bit_memory_operand" "0")
+ ;;				 (match_operand:QI 1 "single_zero_operand" "n"))
+ ;;			 (match_dup 3)))]
+ ;;  "TARGET_H8300SX && reload_completed"
+ ;;  "bclr/%j2\t%W1,%0"
+ ;;  [(set_attr "length_table" "logicb")])
+ 
+ ;;(define_insn_and_split "*cmpcondbsetreg"
+ ;;  [(set (match_operand:QI 0 "nonimmediate_operand" "=WU,WU")
+ ;;	(if_then_else:QI (match_operator 1 "eqne_operator"
+ ;;			  [(match_operand 2 "h8300_dst_operand" "r,rQ")
+ ;;			   (match_operand 3 "h8300_src_operand" "I,rQi")])
+ ;;			 (ior:QI (match_operand:QI 4 "bit_memory_operand" "0,0")
+ ;;				 (ashift:QI (const_int 1)
+ ;;					    (match_operand:QI 5 "register_operand" "r,r")))
+ ;;			 (match_dup 4)))]
+ ;;  "TARGET_H8300SX"
+ ;;  "#"
+ ;;  "reload_completed"
+ ;;  [(set (cc0) (match_dup 6))
+ ;;   (set (match_dup 0)
+ ;;	(if_then_else:QI (match_op_dup 1 [(cc0) (const_int 0)])
+ ;;			 (ior:QI (match_dup 4)
+ ;;				 (ashift:QI (const_int 1)
+ ;;					    (match_operand:QI 5 "register_operand" "r,r")))
+ ;;			 (match_dup 4)))]
+ ;;  {
+ ;;    operands[6] = gen_rtx_COMPARE (VOIDmode, operands[2], operands[3]);
+ ;;  })
+ 
+ ;;(define_insn "*condbsetreg"
+ ;;  [(set (match_operand:QI 0 "bit_memory_operand" "=WU")
+ ;;	(if_then_else:QI (match_operator:QI 2 "eqne_operator"
+ ;;			  [(cc0) (const_int 0)])
+ ;;			 (ior:QI (match_operand:QI 3 "bit_memory_operand" "0")
+ ;;				 (ashift:QI (const_int 1)
+ ;;					    (match_operand:QI 1 "register_operand" "r")))
+ ;;			 (match_dup 3)))]
+ ;;  "TARGET_H8300SX && reload_completed"
+ ;;  "bset/%j2\t%R1,%0"
+ ;;  [(set_attr "length_table" "logicb")])
+ 
+ ;;(define_insn_and_split "*cmpcondbclrreg"
+ ;;  [(set (match_operand:QI 0 "nonimmediate_operand" "=WU,WU")
+ ;;	(if_then_else:QI (match_operator 1 "eqne_operator"
+ ;;			  [(match_operand 2 "h8300_dst_operand" "r,rQ")
+ ;;			   (match_operand 3 "h8300_src_operand" "I,rQi")])
+ ;;			 (and:QI (match_operand:QI 4 "bit_memory_operand" "0,0")
+ ;;				 (ashift:QI (const_int 1)
+ ;;					    (match_operand:QI 5 "register_operand" "r,r")))
+ ;;			 (match_dup 4)))]
+ ;;  "TARGET_H8300SX"
+ ;;  "#"
+ ;;  "reload_completed"
+ ;;  [(set (cc0) (match_dup 6))
+ ;;   (set (match_dup 0)
+ ;;	(if_then_else:QI (match_op_dup 1 [(cc0) (const_int 0)])
+ ;;			 (and:QI (match_dup 4)
+ ;;				 (ashift:QI (const_int 1)
+ ;;					    (match_operand:QI 5 "register_operand" "r,r")))
+ ;;			 (match_dup 4)))]
+ ;;  {
+ ;;    operands[6] = gen_rtx_COMPARE (VOIDmode, operands[2], operands[3]);
+ ;;  })
+ 
+ ;;(define_insn "*condbclrreg"
+ ;;  [(set (match_operand:QI 0 "bit_memory_operand" "=WU")
+ ;;	(if_then_else:QI (match_operator:QI 2 "eqne_operator"
+ ;;			  [(cc0) (const_int 0)])
+ ;;			 (and:QI (match_operand:QI 3 "bit_memory_operand" "0")
+ ;;				 (ashift:QI (const_int 1)
+ ;;					    (match_operand:QI 1 "register_operand" "r")))
+ ;;			 (match_dup 3)))]
+ ;;  "TARGET_H8300SX && reload_completed"
+ ;;  "bclr/%j2\t%R1,%0"
+ ;;  [(set_attr "length_table" "logicb")])
+ 
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/combiner.md gcc-11.1.0/gcc/config/h8300/combiner.md
*** gcc-10.3.0/gcc/config/h8300/combiner.md	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/h8300/combiner.md	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,1270 ----
+ ;; -----------------------------------------------------------------
+ ;; COMBINE PATTERNS
+ ;; -----------------------------------------------------------------
+ 
+ ;; insv:SI
+ 
+ (define_insn_and_split "*insv_si_1_n"
+   [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+r")
+ 			 (const_int 1)
+ 			 (match_operand:SI 1 "const_int_operand" "n"))
+ 	(match_operand:SI 2 "register_operand" "r"))]
+   "INTVAL (operands[1]) < 16"
+   "#"
+   "reload_completed"
+   [(parallel [(set (zero_extract:SI (match_dup 0) (const_int 1) (match_dup 1))
+ 		   (match_dup 2))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*insv_si_1_n_clobber_flags"
+   [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+r")
+ 			 (const_int 1)
+ 			 (match_operand:SI 1 "const_int_operand" "n"))
+ 	(match_operand:SI 2 "register_operand" "r"))
+    (clobber (reg:CC CC_REG))]
+   "INTVAL (operands[1]) < 16"
+   "bld\\t#0,%w2\;bst\\t%Z1,%Y0"
+   [(set_attr "length" "4")])
+ 
+ (define_insn_and_split "*insv_si_1_n_lshiftrt"
+   [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+r")
+ 			 (const_int 1)
+ 			 (match_operand:SI 1 "const_int_operand" "n"))
+ 	(lshiftrt:SI (match_operand:SI 2 "register_operand" "r")
+ 		     (match_operand:SI 3 "const_int_operand" "n")))]
+   "INTVAL (operands[1]) < 16 && INTVAL (operands[3]) < 16"
+   "#"
+   "reload_completed"
+   [(parallel [(set (zero_extract:SI (match_dup 0) (const_int 1) (match_dup 1))
+ 		   (lshiftrt:SI (match_dup 2) (match_dup 3)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*insv_si_1_n_lshiftrt_clobber_flags"
+   [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+r")
+ 			 (const_int 1)
+ 			 (match_operand:SI 1 "const_int_operand" "n"))
+ 	(lshiftrt:SI (match_operand:SI 2 "register_operand" "r")
+ 		     (match_operand:SI 3 "const_int_operand" "n")))
+    (clobber (reg:CC CC_REG))]
+   "INTVAL (operands[1]) < 16 && INTVAL (operands[3]) < 16"
+   "bld\\t%Z3,%Y2\;bst\\t%Z1,%Y0"
+   [(set_attr "length" "4")])
+ 
+ (define_insn_and_split "*insv_si_1_n_lshiftrt_16"
+   [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+r")
+ 			 (const_int 1)
+ 			 (match_operand:SI 1 "const_int_operand" "n"))
+ 	(lshiftrt:SI (match_operand:SI 2 "register_operand" "r")
+ 		     (const_int 16)))]
+   "INTVAL (operands[1]) < 16"
+   "#"
+   "reload_completed"
+   [(parallel [(set (zero_extract:SI (match_dup 0) (const_int 1) (match_dup 1))
+ 		   (lshiftrt:SI (match_dup 2) (const_int 16)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*insv_si_1_n_lshiftrt_16_clobber_flags"
+   [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+r")
+ 			 (const_int 1)
+ 			 (match_operand:SI 1 "const_int_operand" "n"))
+ 	(lshiftrt:SI (match_operand:SI 2 "register_operand" "r")
+ 		     (const_int 16)))
+    (clobber (reg:CC CC_REG))]
+   "INTVAL (operands[1]) < 16"
+   "rotr.w\\t%e2\;rotl.w\\t%e2\;bst\\t%Z1,%Y0"
+   [(set_attr "length" "6")])
+ 
+ (define_insn_and_split "*insv_si_8_8"
+   [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+r")
+ 			 (const_int 8)
+ 			 (const_int 8))
+ 	(match_operand:SI 1 "register_operand" "r"))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (zero_extract:SI (match_dup 0) (const_int 8) (const_int 8))
+ 		   (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*insv_si_8_8_clobber_flags"
+   [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+r")
+ 			 (const_int 8)
+ 			 (const_int 8))
+ 	(match_operand:SI 1 "register_operand" "r"))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "mov.b\\t%w1,%x0"
+   [(set_attr "length" "2")])
+ 
+ (define_insn_and_split "*insv_si_8_8_lshiftrt_8"
+   [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+r")
+ 			 (const_int 8)
+ 			 (const_int 8))
+ 	(lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ 		     (const_int 8)))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (zero_extract:SI (match_dup 0) (const_int 8) (const_int 8))
+ 		   (lshiftrt:SI (match_dup 1) (const_int 8)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*insv_si_8_8_lshiftrt_8_clobber_flags"
+   [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+r")
+ 			 (const_int 8)
+ 			 (const_int 8))
+ 	(lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ 		     (const_int 8)))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "mov.b\\t%x1,%x0"
+   [(set_attr "length" "2")])
+ 
+ ;; extzv:SI
+ 
+ (define_insn_and_split "*extzv_8_8"
+   [(set (match_operand:SI 0 "register_operand" "=r,r")
+ 	(zero_extract:SI (match_operand:SI 1 "register_operand" "?0,r")
+ 			 (const_int 8)
+ 			 (const_int 8)))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (zero_extract:SI (match_dup 1) (const_int 8) (const_int 8)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*extzv_8_8_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r,r")
+ 	(zero_extract:SI (match_operand:SI 1 "register_operand" "?0,r")
+ 			 (const_int 8)
+ 			 (const_int 8)))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "@
+    mov.b\\t%x1,%w0\;extu.w\\t%f0\;extu.l\\t%S0
+    sub.l\\t%S0,%S0\;mov.b\\t%x1,%w0"
+   [(set_attr "length" "6,4")])
+ 
+ (define_insn_and_split "*extzv_8_16"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(zero_extract:SI (match_operand:SI 1 "register_operand" "r")
+ 			 (const_int 8)
+ 			 (const_int 16)))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (zero_extract:SI (match_dup 1) (const_int 8) (const_int 16)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*extzv_8_16_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(zero_extract:SI (match_operand:SI 1 "register_operand" "r")
+ 			 (const_int 8)
+ 			 (const_int 16)))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "mov.w\\t%e1,%f0\;extu.w\\t%f0\;extu.l\\t%S0"
+   [(set_attr "length" "6")])
+ 
+ (define_insn_and_split "*extzv_16_8"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(zero_extract:SI (match_operand:SI 1 "register_operand" "r")
+ 			 (const_int 16)
+ 			 (const_int 8)))
+    (clobber (match_scratch:SI 2 "=&r"))]
+   "TARGET_H8300H"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (zero_extract:SI (match_dup 1) (const_int 16) (const_int 8)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*extzv_16_8_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(zero_extract:SI (match_operand:SI 1 "register_operand" "r")
+ 			 (const_int 16)
+ 			 (const_int 8)))
+    (clobber (match_scratch:SI 2 "=&r"))
+    (clobber (reg:CC CC_REG))]
+   "TARGET_H8300H"
+   "mov.w\\t%e1,%f2\;mov.b\\t%x1,%w0\;mov.b\\t%w2,%x0\;extu.l\\t%S0"
+   [(set_attr "length" "8")])
+ 
+ ;; Extract the exponent of a float.
+ 
+ (define_insn_and_split "*extzv_8_23"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(zero_extract:SI (match_operand:SI 1 "register_operand" "0")
+ 			 (const_int 8)
+ 			 (const_int 23)))]
+   ""
+   "#"
+   "&& reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (ashift:SI (match_dup 0)
+ 			      (const_int 1)))
+ 	      (clobber (scratch:QI))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0)
+ 		   (lshiftrt:SI (match_dup 0)
+ 				(const_int 24)))
+ 	      (clobber (scratch:QI))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ ;; and:SI
+ 
+ ;; ((SImode) HImode) << 15
+ 
+ (define_insn_and_split "*twoshifts_l16_r1"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(and:SI (ashift:SI (match_operand:SI 1 "register_operand" "0")
+ 			   (const_int 15))
+ 		(const_int 2147450880)))]
+   ""
+   "#"
+   "&& reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (ashift:SI (match_dup 0)
+ 			      (const_int 16)))
+ 	      (clobber (scratch:QI))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0)
+ 		   (lshiftrt:SI (match_dup 0)
+ 				(const_int 1)))
+ 	      (clobber (scratch:QI))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ ;; Transform (SImode << B) & 0xffff into (SImode) (HImode << B).
+ 
+ (define_insn_and_split "*andsi3_ashift_n_lower"
+   [(set (match_operand:SI 0 "register_operand" "=r,r")
+ 	(and:SI (ashift:SI (match_operand:SI 1 "register_operand" "0,0")
+ 			   (match_operand:QI 2 "const_int_operand" "S,n"))
+ 		(match_operand:SI 3 "const_int_operand" "n,n")))
+    (clobber (match_scratch:QI 4 "=X,&r"))]
+   "INTVAL (operands[2]) <= 15
+    && UINTVAL (operands[3]) == ((HOST_WIDE_INT_M1U << INTVAL (operands[2]))
+ 				& 0xffff)"
+   "#"
+   "&& reload_completed"
+   [(parallel [(set (match_dup 5)
+ 		   (ashift:HI (match_dup 5)
+ 			      (match_dup 2)))
+ 	      (clobber (match_dup 4))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0)
+ 		   (zero_extend:SI (match_dup 5)))
+ 	      (clobber (reg:CC CC_REG))])]
+   {
+     operands[5] = gen_rtx_REG (HImode, REGNO (operands[0]));
+   })
+ 
+ ;; Accept (A >> 30) & 2 and the like.
+ 
+ (define_insn_and_split "*andsi3_lshiftrt_n_sb"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(and:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "0")
+ 			     (match_operand:SI 2 "const_int_operand" "n"))
+ 		(match_operand:SI 3 "single_one_operand" "n")))]
+   "exact_log2 (INTVAL (operands[3])) < 16
+    && INTVAL (operands[2]) + exact_log2 (INTVAL (operands[3])) == 31"
+   "#"
+   ""
+   [(parallel [(set (match_dup 0)
+ 		   (and:SI (lshiftrt:SI (match_dup 1) (match_dup 2))
+ 			   (match_dup 3)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*andsi3_lshiftrt_n_sb"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(and:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "0")
+ 			     (match_operand:SI 2 "const_int_operand" "n"))
+ 		(match_operand:SI 3 "single_one_operand" "n")))
+    (clobber (reg:CC CC_REG))]
+   "exact_log2 (INTVAL (operands[3])) < 16
+    && INTVAL (operands[2]) + exact_log2 (INTVAL (operands[3])) == 31"
+ {
+   operands[3] = GEN_INT (exact_log2 (INTVAL (operands[3])));
+   return "shll.l\\t%S0\;xor.l\\t%S0,%S0\;bst\\t%Z3,%Y0";
+ }
+   [(set_attr "length" "8")])
+ 
+ (define_insn_and_split "*andsi3_lshiftrt_9_sb"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(and:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "0")
+ 			     (const_int 9))
+ 		(const_int 4194304)))]
+   ""
+   "#"
+   "&& reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (and:SI (lshiftrt:SI (match_dup 0) (const_int 25))
+ 			   (const_int 64)))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0)
+ 		   (ashift:SI (match_dup 0)
+ 			      (const_int 16)))
+ 	      (clobber (scratch:QI))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ ;; plus:SI
+ 
+ (define_insn_and_split "*addsi3_upper"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(plus:SI (mult:SI (match_operand:SI 1 "register_operand" "r")
+ 			  (const_int 65536))
+ 		 (match_operand:SI 2 "register_operand" "0")))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (plus:SI (mult:SI (match_dup 1) (const_int 65536))
+ 			    (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*addsi3_upper_clobber_regs"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(plus:SI (mult:SI (match_operand:SI 1 "register_operand" "r")
+ 			  (const_int 65536))
+ 		 (match_operand:SI 2 "register_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "add.w\\t%f1,%e0"
+   [(set_attr "length" "2")])
+ 
+ (define_insn_and_split "*addsi3_lshiftrt_16_zexthi"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(plus:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ 			      (const_int 16))
+ 		 (zero_extend:SI (match_operand:HI 2 "register_operand" "0"))))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (plus:SI (lshiftrt:SI (match_dup 1) (const_int 16))
+ 			    (zero_extend:SI (match_dup 2))))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*addsi3_lshiftrt_16_zexthi_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(plus:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ 			      (const_int 16))
+ 		 (zero_extend:SI (match_operand:HI 2 "register_operand" "0"))))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "add.w\\t%e1,%f0\;xor.w\\t%e0,%e0\;rotxl.w\\t%e0"
+   [(set_attr "length" "6")])
+ 
+ ;;(define_insn_and_split "*addsi3_and_r_1"
+ ;;  [(set (match_operand:SI 0 "register_operand" "=r")
+ ;;	(plus:SI (and:SI (match_operand:SI 1 "register_operand" "r")
+ ;;			 (const_int 1))
+ ;;		 (match_operand:SI 2 "register_operand" "0")))]
+ ;;  ""
+ ;;  "#"
+ ;;  "&& reload_completed"
+ ;;  [(set (cc0) (compare (zero_extract:SI (match_dup 1)
+ ;;					(const_int 1)
+ ;;					(const_int 0))
+ ;;		       (const_int 0)))
+ ;;   (set (pc)
+ ;;        (if_then_else (eq (cc0)
+ ;;			  (const_int 0))
+ ;;		      (label_ref (match_dup 3))
+ ;;		      (pc)))
+ ;;   (set (match_dup 2)
+ ;;        (plus:SI (match_dup 2)
+ ;;		 (const_int 1)))
+ ;;   (match_dup 3)]
+ ;;  {
+ ;;    operands[3] = gen_label_rtx ();
+ ;;  })
+ 
+ ;;(define_insn_and_split "*addsi3_and_not_r_1"
+ ;;  [(set (match_operand:SI 0 "register_operand" "=r")
+ ;;	(plus:SI (and:SI (not:SI (match_operand:SI 1 "register_operand" "r"))
+ ;;			 (const_int 1))
+ ;;		 (match_operand:SI 2 "register_operand" "0")))]
+ ;;  ""
+ ;;  "#"
+ ;;  "&& reload_completed"
+ ;;  [(set (cc0) (compare (zero_extract:SI (match_dup 1)
+ ;;					(const_int 1)
+ ;;					(const_int 0))
+ ;;		       (const_int 0)))
+ ;;   (set (pc)
+ ;;        (if_then_else (ne (cc0)
+ ;;			  (const_int 0))
+ ;;		      (label_ref (match_dup 3))
+ ;;		      (pc)))
+ ;;   (set (match_dup 2)
+ ;;        (plus:SI (match_dup 2)
+ ;;		 (const_int 1)))
+ ;;   (match_dup 3)]
+ ;;  {
+ ;;    operands[3] = gen_label_rtx ();
+ ;;  })
+ 
+ ;; [ix]or:HI
+ 
+ (define_insn_and_split "*ixorhi3_zext"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(match_operator:HI 1 "iorxor_operator"
+ 	 [(zero_extend:HI (match_operand:QI 2 "register_operand" "r"))
+ 	  (match_operand:HI 3 "register_operand" "0")]))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (match_op_dup 1 [(zero_extend:HI (match_dup 2))
+ 				    (match_dup 3)]))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ 
+ (define_insn "*ixorhi3_zext_clobber_flags"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(match_operator:HI 1 "iorxor_operator"
+ 	 [(zero_extend:HI (match_operand:QI 2 "register_operand" "r"))
+ 	  (match_operand:HI 3 "register_operand" "0")]))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "%c1.b\\t%X2,%s0"
+   [(set_attr "length" "2")])
+ 
+ ;; [ix]or:SI
+ 
+ (define_insn_and_split "*ixorsi3_zext_qi"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(match_operator:SI 1 "iorxor_operator"
+ 	 [(zero_extend:SI (match_operand:QI 2 "register_operand" "r"))
+ 	  (match_operand:SI 3 "register_operand" "0")]))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (match_op_dup 1 [(zero_extend:SI (match_dup 2))
+ 				    (match_dup 3)]))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*ixorsi3_zext_qi_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(match_operator:SI 1 "iorxor_operator"
+ 	 [(zero_extend:SI (match_operand:QI 2 "register_operand" "r"))
+ 	  (match_operand:SI 3 "register_operand" "0")]))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "%c1.b\\t%X2,%w0"
+   [(set_attr "length" "2")])
+ 
+ (define_insn_and_split "*ixorsi3_zext_hi"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(match_operator:SI 1 "iorxor_operator"
+ 	 [(zero_extend:SI (match_operand:HI 2 "register_operand" "r"))
+ 	  (match_operand:SI 3 "register_operand" "0")]))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (match_op_dup 1 [(zero_extend:SI (match_dup 2))
+ 				    (match_dup 3)]))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*ixorsi3_zext_hi_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(match_operator:SI 1 "iorxor_operator"
+ 	 [(zero_extend:SI (match_operand:HI 2 "register_operand" "r"))
+ 	  (match_operand:SI 3 "register_operand" "0")]))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "%c1.w\\t%T2,%f0"
+   [(set_attr "length" "2")])
+ 
+ (define_insn_and_split "*ixorsi3_ashift_16"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(match_operator:SI 1 "iorxor_operator"
+ 	 [(ashift:SI (match_operand:SI 2 "register_operand" "r")
+ 		     (const_int 16))
+ 	  (match_operand:SI 3 "register_operand" "0")]))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (match_op_dup 1 [(ashift:SI (match_dup 2) (const_int 16))
+ 				    (match_dup 3)]))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*ixorsi3_ashift_16_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(match_operator:SI 1 "iorxor_operator"
+ 	 [(ashift:SI (match_operand:SI 2 "register_operand" "r")
+ 		     (const_int 16))
+ 	  (match_operand:SI 3 "register_operand" "0")]))
+   (clobber (reg:CC CC_REG))]
+   ""
+   "%c1.w\\t%f2,%e0"
+   [(set_attr "length" "2")])
+ 
+ (define_insn_and_split "*ixorsi3_lshiftrt_16"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(match_operator:SI 1 "iorxor_operator"
+ 	 [(lshiftrt:SI (match_operand:SI 2 "register_operand" "r")
+ 		       (const_int 16))
+ 	  (match_operand:SI 3 "register_operand" "0")]))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (match_op_dup 1 [(lshiftrt:SI (match_dup 2) (const_int 16))
+ 				    (match_dup 3)]))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*ixorsi3_lshiftrt_16_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(match_operator:SI 1 "iorxor_operator"
+ 	 [(lshiftrt:SI (match_operand:SI 2 "register_operand" "r")
+ 		       (const_int 16))
+ 	  (match_operand:SI 3 "register_operand" "0")]))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "%c1.w\\t%e2,%f0"
+   [(set_attr "length" "2")])
+ 
+ ;; ior:HI
+ 
+ (define_insn_and_split "*iorhi3_ashift_8"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(ior:HI (ashift:HI (match_operand:HI 1 "register_operand" "r")
+ 			   (const_int 8))
+ 		(match_operand:HI 2 "register_operand" "0")))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (ior:HI (ashift:HI (match_dup 1) (const_int 8))
+ 			   (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*iorhi3_ashift_8_clobber_flags"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(ior:HI (ashift:HI (match_operand:HI 1 "register_operand" "r")
+ 			   (const_int 8))
+ 		(match_operand:HI 2 "register_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "or.b\\t%s1,%t0"
+   [(set_attr "length" "2")])
+ 
+ (define_insn_and_split "*iorhi3_lshiftrt_8"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(ior:HI (lshiftrt:HI (match_operand:HI 1 "register_operand" "r")
+ 			     (const_int 8))
+ 		(match_operand:HI 2 "register_operand" "0")))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (ior:HI (lshiftrt:HI (match_dup 1) (const_int 8))
+ 			   (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*iorhi3_lshiftrt_8_clobber_flags"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(ior:HI (lshiftrt:HI (match_operand:HI 1 "register_operand" "r")
+ 			     (const_int 8))
+ 		(match_operand:HI 2 "register_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "or.b\\t%t1,%s0"
+   [(set_attr "length" "2")])
+ 
+ (define_insn_and_split "*iorhi3_two_qi"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(ior:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "0"))
+ 		(ashift:HI (match_operand:HI 2 "register_operand" "r")
+ 			   (const_int 8))))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (ior:HI (zero_extend:HI (match_dup 1))
+ 			   (ashift:HI (match_dup 2) (const_int 8))))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*iorhi3_two_qi_clobber_flags"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(ior:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "0"))
+ 		(ashift:HI (match_operand:HI 2 "register_operand" "r")
+ 			   (const_int 8))))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "mov.b\\t%s2,%t0"
+   [(set_attr "length" "2")])
+ 
+ (define_insn_and_split "*iorhi3_two_qi_mem"
+   [(set (match_operand:HI 0 "register_operand" "=&r")
+ 	(ior:HI (zero_extend:HI (match_operand:QI 1 "memory_operand" "m"))
+ 		(ashift:HI (subreg:HI (match_operand:QI 2 "memory_operand" "m") 0)
+ 			   (const_int 8))))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (ior:HI (zero_extend:HI (match_dup 1))
+ 			   (ashift:HI (subreg:HI (match_dup 2) 0)
+ 				      (const_int 8))))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*iorhi3_two_qi_mem_clobber_flags"
+   [(set (match_operand:HI 0 "register_operand" "=&r")
+ 	(ior:HI (zero_extend:HI (match_operand:QI 1 "memory_operand" "m"))
+ 		(ashift:HI (subreg:HI (match_operand:QI 2 "memory_operand" "m") 0)
+ 			   (const_int 8))))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "mov.b\\t%X2,%t0\;mov.b\\t%X1,%s0"
+   [(set_attr "length" "16")])
+ 
+ (define_split
+   [(set (match_operand:HI 0 "register_operand" "")
+ 	(ior:HI (zero_extend:HI (match_operand:QI 1 "memory_operand" ""))
+ 		(ashift:HI (subreg:HI (match_operand:QI 2 "memory_operand" "") 0)
+ 			   (const_int 8))))]
+   "reload_completed
+    && byte_accesses_mergeable_p (XEXP (operands[2], 0), XEXP (operands[1], 0))"
+   [(parallel [(set (match_dup 0) (match_dup 3))
+ 	      (clobber (reg:CC CC_REG))])]
+   {
+     operands[3] = gen_rtx_MEM (HImode, XEXP (operands[2], 0));
+   })
+ 
+ ;; ior:SI
+ 
+ (define_insn_and_split "*iorsi3_two_hi"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (zero_extend:SI (match_operand:HI 1 "register_operand" "0"))
+ 		(ashift:SI (match_operand:SI 2 "register_operand" "r")
+ 			   (const_int 16))))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (ior:SI (zero_extend:SI (match_dup 1))
+ 			   (ashift:SI (match_dup 2) (const_int 16))))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*iorsi3_two_hi_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (zero_extend:SI (match_operand:HI 1 "register_operand" "0"))
+ 		(ashift:SI (match_operand:SI 2 "register_operand" "r")
+ 			   (const_int 16))))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "mov.w\\t%f2,%e0"
+   [(set_attr "length" "2")])
+ 
+ (define_insn_and_split "*iorsi3_two_qi_zext"
+   [(set (match_operand:SI 0 "register_operand" "=&r")
+ 	(ior:SI (zero_extend:SI (match_operand:QI 1 "memory_operand" "m"))
+ 		(and:SI (ashift:SI (subreg:SI (match_operand:QI 2 "memory_operand" "m") 0)
+ 				   (const_int 8))
+ 			(const_int 65280))))]
+   ""
+   "#"
+   "&& reload_completed"
+   [(parallel [(set (match_dup 3)
+ 		   (ior:HI (zero_extend:HI (match_dup 1))
+ 			   (ashift:HI (subreg:HI (match_dup 2) 0)
+ 				      (const_int 8))))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0) (zero_extend:SI (match_dup 3)))
+ 	      (clobber (reg:CC CC_REG))])]
+   {
+     operands[3] = gen_rtx_REG (HImode, REGNO (operands[0]));
+   })
+ 
+ (define_insn_and_split "*iorsi3_e2f"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (and:SI (match_operand:SI 1 "register_operand" "0")
+ 			(const_int -65536))
+ 		(lshiftrt:SI (match_operand:SI 2 "register_operand" "r")
+ 			     (const_int 16))))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (ior:SI (and:SI (match_dup 1) (const_int -65536))
+ 			   (lshiftrt:SI (match_dup 2) (const_int 16))))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*iorsi3_e2f_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (and:SI (match_operand:SI 1 "register_operand" "0")
+ 			(const_int -65536))
+ 		(lshiftrt:SI (match_operand:SI 2 "register_operand" "r")
+ 			     (const_int 16))))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "mov.w\\t%e2,%f0"
+   [(set_attr "length" "2")])
+ 
+ (define_insn_and_split "*iorsi3_two_qi_sext"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (zero_extend:SI (match_operand:QI 1 "register_operand" "0"))
+ 		(ashift:SI (sign_extend:SI (match_operand:QI 2 "register_operand" "r"))
+ 			   (const_int 8))))]
+   ""
+   "#"
+   "&& reload_completed"
+   [(parallel [(set (match_dup 3)
+ 		   (ior:HI (zero_extend:HI (match_dup 1))
+ 			   (ashift:HI (match_dup 4) (const_int 8))))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0) (sign_extend:SI (match_dup 3)))
+ 	      (clobber (reg:CC CC_REG))])]
+   {
+     operands[3] = gen_rtx_REG (HImode, REGNO (operands[0]));
+     operands[4] = gen_rtx_REG (HImode, REGNO (operands[2]));
+   })
+ 
+ (define_insn_and_split "*iorsi3_w"
+   [(set (match_operand:SI 0 "register_operand" "=r,&r")
+ 	(ior:SI (and:SI (match_operand:SI 1 "register_operand" "0,0")
+ 			(const_int -256))
+ 		(zero_extend:SI (match_operand:QI 2 "general_operand_src" "r,g>"))))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (ior:SI (and:SI (match_dup 1) (const_int -256))
+ 			   (zero_extend:SI (match_dup 2))))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*iorsi3_w_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r,&r")
+ 	(ior:SI (and:SI (match_operand:SI 1 "register_operand" "0,0")
+ 			(const_int -256))
+ 		(zero_extend:SI (match_operand:QI 2 "general_operand_src" "r,g>"))))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "mov.b\\t%X2,%w0"
+   [(set_attr "length" "2,8")])
+ 
+ (define_insn_and_split "*iorsi3_ashift_31"
+   [(set (match_operand:SI 0 "register_operand" "=&r")
+ 	(ior:SI (ashift:SI (match_operand:SI 1 "register_operand" "r")
+ 			   (const_int 31))
+ 		(match_operand:SI 2 "register_operand" "0")))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (ior:SI (ashift:SI (match_dup 1) (const_int 31))
+ 			   (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*iorsi3_ashift_31_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=&r")
+ 	(ior:SI (ashift:SI (match_operand:SI 1 "register_operand" "r")
+ 			   (const_int 31))
+ 		(match_operand:SI 2 "register_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "rotxl.l\\t%S0\;bor\\t#0,%w1\;rotxr.l\\t%S0"
+   [(set_attr "length" "6")])
+ 
+ (define_insn_and_split "*iorsi3_and_ashift"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (and:SI (ashift:SI (match_operand:SI 1 "register_operand" "r")
+ 				   (match_operand:SI 2 "const_int_operand" "n"))
+ 			(match_operand:SI 3 "single_one_operand" "n"))
+ 		(match_operand:SI 4 "register_operand" "0")))]
+   "(INTVAL (operands[3]) & ~0xffff) == 0"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (ior:SI (and:SI (ashift:SI (match_dup 1) (match_dup 2))
+ 				   (match_dup 3))
+ 			  (match_dup 4)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*iorsi3_and_ashift_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (and:SI (ashift:SI (match_operand:SI 1 "register_operand" "r")
+ 				   (match_operand:SI 2 "const_int_operand" "n"))
+ 			(match_operand:SI 3 "single_one_operand" "n"))
+ 		(match_operand:SI 4 "register_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   "(INTVAL (operands[3]) & ~0xffff) == 0"
+ {
+   rtx srcpos = GEN_INT (exact_log2 (INTVAL (operands[3]))
+ 			- INTVAL (operands[2]));
+   rtx dstpos = GEN_INT (exact_log2 (INTVAL (operands[3])));
+   operands[2] = srcpos;
+   operands[3] = dstpos;
+   return "bld\\t%Z2,%Y1\;bor\\t%Z3,%Y0\;bst\\t%Z3,%Y0";
+ }
+   [(set_attr "length" "6")])
+ 
+ (define_insn_and_split "*iorsi3_and_lshiftrt"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (and:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ 				     (match_operand:SI 2 "const_int_operand" "n"))
+ 			(match_operand:SI 3 "single_one_operand" "n"))
+ 		(match_operand:SI 4 "register_operand" "0")))]
+   "((INTVAL (operands[3]) << INTVAL (operands[2])) & ~0xffff) == 0"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (ior:SI (and:SI (lshiftrt:SI (match_dup 1) (match_dup 2))
+ 				   (match_dup 3))
+ 			   (match_dup 4)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*iorsi3_and_lshiftrt_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (and:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ 				     (match_operand:SI 2 "const_int_operand" "n"))
+ 			(match_operand:SI 3 "single_one_operand" "n"))
+ 		(match_operand:SI 4 "register_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   "((INTVAL (operands[3]) << INTVAL (operands[2])) & ~0xffff) == 0"
+ {
+   rtx srcpos = GEN_INT (exact_log2 (INTVAL (operands[3]))
+ 			+ INTVAL (operands[2]));
+   rtx dstpos = GEN_INT (exact_log2 (INTVAL (operands[3])));
+   operands[2] = srcpos;
+   operands[3] = dstpos;
+   return "bld\\t%Z2,%Y1\;bor\\t%Z3,%Y0\;bst\\t%Z3,%Y0";
+ }
+   [(set_attr "length" "6")])
+ 
+ (define_insn_and_split "*iorsi3_zero_extract"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (zero_extract:SI (match_operand:SI 1 "register_operand" "r")
+ 				 (const_int 1)
+ 				 (match_operand:SI 2 "const_int_operand" "n"))
+ 		(match_operand:SI 3 "register_operand" "0")))]
+   "INTVAL (operands[2]) < 16"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (ior:SI (zero_extract:SI (match_dup 1)
+ 					    (const_int 1)
+ 					    (match_dup 2))
+ 			   (match_dup 3)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*iorsi3_zero_extract_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (zero_extract:SI (match_operand:SI 1 "register_operand" "r")
+ 				 (const_int 1)
+ 				 (match_operand:SI 2 "const_int_operand" "n"))
+ 		(match_operand:SI 3 "register_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   "INTVAL (operands[2]) < 16"
+   "bld\\t%Z2,%Y1\;bor\\t#0,%w0\;bst\\t#0,%w0"
+   [(set_attr "length" "6")])
+ 
+ (define_insn_and_split "*iorsi3_and_lshiftrt_n_sb"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (and:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ 				     (const_int 30))
+ 			(const_int 2))
+ 		(match_operand:SI 2 "register_operand" "0")))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (ior:SI (and:SI (lshiftrt:SI (match_dup 1) (const_int 30))
+ 				   (const_int 2))
+ 			   (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*iorsi3_and_lshiftrt_n_sb_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (and:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ 				     (const_int 30))
+ 			(const_int 2))
+ 		(match_operand:SI 2 "register_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "rotl.l\\t%S1\;rotr.l\\t%S1\;bor\\t#1,%w0\;bst\\t#1,%w0"
+   [(set_attr "length" "8")])
+ 
+ (define_insn_and_split "*iorsi3_and_lshiftrt_9_sb"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (and:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ 				     (const_int 9))
+ 			(const_int 4194304))
+ 		(match_operand:SI 2 "register_operand" "0")))
+    (clobber (match_scratch:HI 3 "=&r"))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (ior:SI (and:SI (lshiftrt:SI (match_dup 1) (const_int 9))
+ 				   (const_int 4194304))
+ 			   (match_dup 2)))
+ 	      (clobber (match_dup 3))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ 
+ (define_insn "*iorsi3_and_lshiftrt_9_sb_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (and:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ 				     (const_int 9))
+ 			(const_int 4194304))
+ 		(match_operand:SI 2 "register_operand" "0")))
+    (clobber (match_scratch:HI 3 "=&r"))
+    (clobber (reg:CC CC_REG))]
+   ""
+ {
+   if (find_regno_note (insn, REG_DEAD, REGNO (operands[1])))
+     return "shll.l\\t%S1\;xor.w\\t%T3,%T3\;bst\\t#6,%s3\;or.w\\t%T3,%e0";
+   else
+     return "rotl.l\\t%S1\;rotr.l\\t%S1\;xor.w\\t%T3,%T3\;bst\\t#6,%s3\;or.w\\t%T3,%e0";
+ }
+   [(set_attr "length" "10")])
+ 
+ ;; Used to OR the exponent of a float.
+ 
+ (define_insn "*iorsi3_shift"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (ashift:SI (match_operand:SI 1 "register_operand" "r")
+ 			   (const_int 23))
+ 		(match_operand:SI 2 "register_operand" "0")))
+    (clobber (match_scratch:SI 3 "=&r"))]
+   ""
+   "#")
+ 
+ (define_split
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(ior:SI (ashift:SI (match_operand:SI 1 "register_operand" "")
+ 			   (const_int 23))
+ 		(match_dup 0)))
+    (clobber (match_operand:SI 2 "register_operand" ""))]
+   "epilogue_completed
+    && find_regno_note (insn, REG_DEAD, REGNO (operands[1]))
+    && REGNO (operands[0]) != REGNO (operands[1])"
+   [(parallel [(set (match_dup 3)
+ 		   (ashift:HI (match_dup 3)
+ 			      (const_int 7)))
+ 	      (clobber (scratch:QI))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0)
+ 		    (ior:SI (ashift:SI (match_dup 1) (const_int 16))
+ 			    (match_dup 0)))
+ 	      (clobber (reg:CC CC_REG))])]
+   {
+     operands[3] = gen_rtx_REG (HImode, REGNO (operands[1]));
+   })
+ 
+ (define_split
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(ior:SI (ashift:SI (match_operand:SI 1 "register_operand" "")
+ 			   (const_int 23))
+ 		(match_dup 0)))
+    (clobber (match_operand:SI 2 "register_operand" ""))]
+   "epilogue_completed
+    && !(find_regno_note (insn, REG_DEAD, REGNO (operands[1]))
+ 	&& REGNO (operands[0]) != REGNO (operands[1]))"
+   [(parallel [(set (match_dup 2) (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 3)
+ 		   (ashift:HI (match_dup 3)
+ 			      (const_int 7)))
+ 	      (clobber (scratch:QI))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0)
+ 		   (ior:SI (ashift:SI (match_dup 2) (const_int 16))
+ 			   (match_dup 0)))
+ 	      (clobber (reg:CC CC_REG))])]
+   {
+     operands[3] = gen_rtx_REG (HImode, REGNO (operands[2]));
+   })
+ 
+ (define_insn_and_split "*iorsi2_and_1_lshiftrt_1"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (and:SI (match_operand:SI 1 "register_operand" "0")
+ 			(const_int 1))
+ 		(lshiftrt:SI (match_dup 1)
+ 			     (const_int 1))))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (ior:SI (and:SI (match_dup 1) (const_int 1))
+ 			   (lshiftrt:SI (match_dup 1) (const_int 1))))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*iorsi2_and_1_lshiftrt_1_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (and:SI (match_operand:SI 1 "register_operand" "0")
+ 			(const_int 1))
+ 		(lshiftrt:SI (match_dup 1)
+ 			     (const_int 1))))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "shlr.l\\t%S0\;bor\\t#0,%w0\;bst\\t#0,%w0"
+   [(set_attr "length" "6")])
+ 
+ (define_insn_and_split "*iorsi3_ashift_16_ashift_24"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (ashift:SI (match_operand:SI 1 "register_operand" "0")
+ 			   (const_int 16))
+ 		(ashift:SI (match_operand:SI 2 "register_operand" "r")
+ 			   (const_int 24))))]
+   ""
+   "#"
+   "&& reload_completed"
+   [(parallel [(set (match_dup 3)
+ 		   (ior:HI (ashift:HI (match_dup 4) (const_int 8))
+ 			   (match_dup 3)))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0)
+ 		   (ashift:SI (match_dup 0)
+ 			      (const_int 16)))
+ 	      (clobber (scratch:QI))
+ 	      (clobber (reg:CC CC_REG))])]
+   {
+     operands[3] = gen_rtx_REG (HImode, REGNO (operands[0]));
+     operands[4] = gen_rtx_REG (HImode, REGNO (operands[2]));
+   })
+ 
+ (define_insn_and_split "*iorsi3_ashift_16_ashift_24_mem"
+   [(set (match_operand:SI 0 "register_operand" "=&r")
+ 	(ior:SI (and:SI (ashift:SI (subreg:SI (match_operand:QI 1 "memory_operand" "m") 0)
+ 				   (const_int 16))
+ 			(const_int 16711680))
+ 		(ashift:SI (subreg:SI (match_operand:QI 2 "memory_operand" "m") 0)
+ 			   (const_int 24))))]
+   ""
+   "#"
+   "&& reload_completed"
+   [(parallel [(set (match_dup 3)
+ 		   (ior:HI (zero_extend:HI (match_dup 1))
+ 			   (ashift:HI (subreg:HI (match_dup 2) 0)
+ 				      (const_int 8))))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0)
+ 		   (ashift:SI (match_dup 0)
+ 			      (const_int 16)))
+ 	      (clobber (scratch:QI))
+ 	      (clobber (reg:CC CC_REG))])]
+   {
+     operands[3] = gen_rtx_REG (HImode, REGNO (operands[0]));
+   })
+ 
+ ;; Used to add the exponent of a float.
+ 
+ (define_insn "*addsi3_shift"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(plus:SI (mult:SI (match_operand:SI 1 "register_operand" "r")
+ 			  (const_int 8388608))
+ 		 (match_operand:SI 2 "register_operand" "0")))
+    (clobber (match_scratch:SI 3 "=&r"))]
+   ""
+   "#")
+ 
+ (define_split
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(plus:SI (mult:SI (match_operand:SI 1 "register_operand" "")
+ 			  (const_int 8388608))
+ 		 (match_dup 0)))
+    (clobber (match_operand:SI 2 "register_operand" ""))]
+   "epilogue_completed
+    && find_regno_note (insn, REG_DEAD, REGNO (operands[1]))
+    && REGNO (operands[0]) != REGNO (operands[1])"
+   [(parallel [(set (match_dup 3)
+ 		   (ashift:HI (match_dup 3)
+ 			      (const_int 7)))
+ 	      (clobber (scratch:QI))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0)
+ 		   (plus:SI (mult:SI (match_dup 1) (const_int 65536))
+ 			    (match_dup 0)))
+ 	      (clobber (reg:CC CC_REG))])]
+   {
+     operands[3] = gen_rtx_REG (HImode, REGNO (operands[1]));
+   })
+ 
+ (define_split
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(plus:SI (mult:SI (match_operand:SI 1 "register_operand" "")
+ 			  (const_int 8388608))
+ 		 (match_dup 0)))
+    (clobber (match_operand:SI 2 "register_operand" ""))]
+   "epilogue_completed
+    && !(find_regno_note (insn, REG_DEAD, REGNO (operands[1]))
+ 	&& REGNO (operands[0]) != REGNO (operands[1]))"
+   [(parallel [(set (match_dup 2) (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 3)
+ 		   (ashift:HI (match_dup 3)
+ 			      (const_int 7)))
+ 	      (clobber (scratch:QI))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0)
+ 		   (plus:SI (mult:SI (match_dup 2) (const_int 65536))
+ 			    (match_dup 0)))
+ 	      (clobber (reg:CC CC_REG))])]
+   {
+     operands[3] = gen_rtx_REG (HImode, REGNO (operands[2]));
+   })
+ 
+ ;; ashift:SI
+ 
+ (define_insn_and_split "*ashiftsi_sextqi_7"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ashift:SI (sign_extend:SI (match_operand:QI 1 "register_operand" "0"))
+ 		   (const_int 7)))]
+   ""
+   "#"
+   "&& reload_completed"
+   [(parallel [(set (match_dup 2)
+ 		   (ashift:HI (match_dup 2)
+ 			      (const_int 8)))
+ 	      (clobber (scratch:QI))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0) (sign_extend:SI (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0)
+ 		   (ashiftrt:SI (match_dup 0)
+ 				(const_int 1)))
+ 	      (clobber (scratch:QI))
+ 	      (clobber (reg:CC CC_REG))])]
+   {
+     operands[2] = gen_rtx_REG (HImode, REGNO (operands[0]));
+   })
+ 
+ ;; Storing a part of HImode to QImode.
+ 
+ (define_insn_and_split ""
+   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
+ 	(subreg:QI (lshiftrt:HI (match_operand:HI 1 "register_operand" "r")
+ 				(const_int 8)) 1))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (subreg:QI (lshiftrt:HI (match_dup 1)
+ 							 (const_int 8)) 1))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn ""
+   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
+ 	(subreg:QI (lshiftrt:HI (match_operand:HI 1 "register_operand" "r")
+ 				(const_int 8)) 1))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "mov.b\\t%t1,%R0"
+   [(set_attr "length" "8")])
+ 
+ ;; Storing a part of SImode to QImode.
+ 
+ (define_insn_and_split ""
+   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
+ 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ 				(const_int 8)) 3))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (subreg:QI (lshiftrt:SI (match_dup 1) (const_int 8)) 3))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn ""
+   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
+ 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ 				(const_int 8)) 3))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "mov.b\\t%x1,%R0"
+   [(set_attr "length" "8")])
+ 
+ (define_insn_and_split ""
+   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
+ 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ 				(const_int 16)) 3))
+    (clobber (match_scratch:SI 2 "=&r"))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (subreg:QI (lshiftrt:SI (match_dup 1) (const_int 16)) 3))
+ 	      (clobber (match_dup 2))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn ""
+   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
+ 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ 				(const_int 16)) 3))
+    (clobber (match_scratch:SI 2 "=&r"))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "mov.w\\t%e1,%f2\;mov.b\\t%w2,%R0"
+   [(set_attr "length" "10")])
+ 
+ (define_insn_and_split ""
+   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
+ 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ 				(const_int 24)) 3))
+    (clobber (match_scratch:SI 2 "=&r"))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (subreg:QI (lshiftrt:SI (match_dup 1) (const_int 24)) 3))
+ 	      (clobber (match_dup 2))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn ""
+   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
+ 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ 				(const_int 24)) 3))
+    (clobber (match_scratch:SI 2 "=&r"))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "mov.w\\t%e1,%f2\;mov.b\\t%x2,%R0"
+   [(set_attr "length" "10")])
+ 
+ ;;(define_insn_and_split ""
+ ;;  [(set (pc)
+ ;;	(if_then_else (eq (zero_extract:SI (subreg:SI (match_operand:QI 0 "register_operand" "") 0)
+ ;;					   (const_int 1)
+ ;;					   (const_int 7))
+ ;;			  (const_int 0))
+ ;;		      (label_ref (match_operand 1 "" ""))
+ ;;		      (pc)))]
+ ;;  ""
+ ;;  "#"
+ ;;  ""
+ ;;  [(set (cc0) (compare (match_dup 0)
+ ;;		       (const_int 0)))
+ ;;   (set (pc)
+ ;;	(if_then_else (ge (cc0)
+ ;;			  (const_int 0))
+ ;;		      (label_ref (match_dup 1))
+ ;;		      (pc)))]
+ ;;  "")
+ ;; 
+ ;; (define_insn_and_split ""
+ ;;  [(set (pc)
+ ;; 	(if_then_else (ne (zero_extract:SI (subreg:SI (match_operand:QI 0 "register_operand" "") 0)
+ ;; 					   (const_int 1)
+ ;; 					   (const_int 7))
+ ;; 			  (const_int 0))
+ ;; 		      (label_ref (match_operand 1 "" ""))
+ ;; 		      (pc)))]
+ ;;   ""
+ ;;   "#"
+ ;;   ""
+ ;;   [(set (cc0) (compare (match_dup 0)
+ ;; 		       (const_int 0)))
+ ;;    (set (pc)
+ ;; 	(if_then_else (lt (cc0)
+ ;; 			  (const_int 0))
+ ;; 		      (label_ref (match_dup 1))
+ ;; 		      (pc)))]
+ ;;   "")
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/constraints.md gcc-11.1.0/gcc/config/h8300/constraints.md
*** gcc-10.3.0/gcc/config/h8300/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/h8300/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Constraint definitions for Renesas H8/300.
! ;; Copyright (C) 2011-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for Renesas H8/300.
! ;; Copyright (C) 2011-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 82,92 ****
         (match_test "(ival & 0xff) == 0")))
  
  (define_constraint "L"
!   "1, 2 or 4 on the H8300H or S; 1 or 2 otherwise."
    (and (match_code "const_int")
!        (if_then_else (match_test "TARGET_H8300H || TARGET_H8300S")
! 		     (match_test "ival == 1 || ival == 2 || ival == 4")
! 		     (match_test "ival == 1 || ival == 2"))))
  
  (define_constraint "M"
    "Integer 1 or 2."
--- 82,90 ----
         (match_test "(ival & 0xff) == 0")))
  
  (define_constraint "L"
!   "Integer 1, 2 or 4"
    (and (match_code "const_int")
!        (match_test "ival == 1 || ival == 2 || ival == 4")))
  
  (define_constraint "M"
    "Integer 1 or 2."
***************
*** 94,104 ****
         (match_test "ival == 1 || ival == 2")))
  
  (define_constraint "N"
!   "-1, -2, or -4 on the H8300H or S; -1 or -2 otherwise."
    (and (match_code "const_int")
!        (if_then_else (match_test "TARGET_H8300H || TARGET_H8300S")
! 		     (match_test "ival == -1 || ival == -2 || ival == -4")
! 		     (match_test "ival == -1 || ival == -2"))))
  
  (define_constraint "O"
    "Integer -1 or -2."
--- 92,100 ----
         (match_test "ival == 1 || ival == 2")))
  
  (define_constraint "N"
!   "Integer -1, -2 or -4"
    (and (match_code "const_int")
!        (match_test "ival == -1 || ival == -2 || ival == -4")))
  
  (define_constraint "O"
    "Integer -1 or -2."
***************
*** 156,162 ****
  (define_constraint "R"
    "@internal"
    (and (match_code "const_int")
!        (match_test "!h8300_shift_needs_scratch_p (ival, QImode)")))
  
  (define_constraint "C"
    "@internal"
--- 152,158 ----
  (define_constraint "R"
    "@internal"
    (and (match_code "const_int")
!        (match_test "!h8300_shift_needs_scratch_p (ival, QImode, CLOBBER)")))
  
  (define_constraint "C"
    "@internal"
***************
*** 165,176 ****
  (define_constraint "S"
    "@internal"
    (and (match_code "const_int")
!        (match_test "!h8300_shift_needs_scratch_p (ival, HImode)")))
  
  (define_constraint "T"
    "@internal"
    (and (match_code "const_int")
!        (match_test "!h8300_shift_needs_scratch_p (ival, SImode)")))
  
  (define_constraint "U"
    "An operand valid for a bset destination."
--- 161,172 ----
  (define_constraint "S"
    "@internal"
    (and (match_code "const_int")
!        (match_test "!h8300_shift_needs_scratch_p (ival, HImode, CLOBBER)")))
  
  (define_constraint "T"
    "@internal"
    (and (match_code "const_int")
!        (match_test "!h8300_shift_needs_scratch_p (ival, SImode, CLOBBER)")))
  
  (define_constraint "U"
    "An operand valid for a bset destination."
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/divmod.md gcc-11.1.0/gcc/config/h8300/divmod.md
*** gcc-10.3.0/gcc/config/h8300/divmod.md	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/h8300/divmod.md	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,214 ----
+ ;; ----------------------------------------------------------------------
+ ;; DIVIDE/MOD INSTRUCTIONS
+ ;; ----------------------------------------------------------------------
+ 
+ (define_insn_and_split "udiv<mode>3"
+   [(set (match_operand:HSI 0 "register_operand" "=r")
+ 	(udiv:HSI (match_operand:HSI 1 "register_operand" "0")
+ 		  (match_operand:HSI 2 "reg_or_nibble_operand" "r IP4>X")))]
+   "TARGET_H8300SX"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (udiv:HSI (match_dup 1) (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "udiv<mode>3_clobber_flags"
+   [(set (match_operand:HSI 0 "register_operand" "=r")
+ 	(udiv:HSI (match_operand:HSI 1 "register_operand" "0")
+ 		  (match_operand:HSI 2 "reg_or_nibble_operand" "r IP4>X")))
+    (clobber (reg:CC CC_REG))]
+   "TARGET_H8300SX"
+   { return <MODE>mode == HImode ? "divu.w\\t%T2,%T0" : "divu.l\\t%S2,%S0"; }
+   [(set_attr "length" "4")])
+ 
+ (define_insn_and_split "div<mode>3"
+   [(set (match_operand:HSI 0 "register_operand" "=r")
+ 	(div:HSI (match_operand:HSI 1 "register_operand" "0")
+ 		 (match_operand:HSI 2 "reg_or_nibble_operand" "r IP4>X")))]
+   "TARGET_H8300SX"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (div:HSI (match_dup 1) (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "div<mode>3_clobber_flags"
+   [(set (match_operand:HSI 0 "register_operand" "=r")
+ 	(div:HSI (match_operand:HSI 1 "register_operand" "0")
+ 		 (match_operand:HSI 2 "reg_or_nibble_operand" "r IP4>X")))
+    (clobber (reg:CC CC_REG))]
+   "TARGET_H8300SX"
+   { return <MODE>mode == HImode ? "divs.w\\t%T2,%T0" : "divs.l\\t%S2,%S0"; }
+   [(set_attr "length" "4")])
+ 
+ (define_insn_and_split "udivmodqi4"
+   [(set (match_operand:QI 0 "register_operand" "=r")
+ 	(truncate:QI
+ 	  (udiv:HI
+ 	    (match_operand:HI 1 "register_operand" "0")
+ 	    (zero_extend:HI (match_operand:QI 2 "register_operand" "r")))))
+    (set (match_operand:QI 3 "register_operand" "=r")
+ 	(truncate:QI
+ 	  (umod:HI
+ 	    (match_dup 1)
+ 	    (zero_extend:HI (match_dup 2)))))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (truncate:QI
+ 				   (udiv:HI (match_dup 1)
+ 					    (zero_extend:HI (match_dup 2)))))
+ 	      (set (match_dup 3) (truncate:QI
+ 				   (umod:HI (match_dup 1)
+ 					    (zero_extend:HI (match_dup 2)))))
+ 	      (clobber (reg:CC CC_REG))])])
+ 							
+ 
+ (define_insn "udivmodqi4_clobber_flags"
+   [(set (match_operand:QI 0 "register_operand" "=r")
+ 	(truncate:QI
+ 	  (udiv:HI
+ 	    (match_operand:HI 1 "register_operand" "0")
+ 	    (zero_extend:HI (match_operand:QI 2 "register_operand" "r")))))
+    (set (match_operand:QI 3 "register_operand" "=r")
+ 	(truncate:QI
+ 	  (umod:HI
+ 	    (match_dup 1)
+ 	    (zero_extend:HI (match_dup 2)))))
+    (clobber (reg:CC CC_REG))]
+   ""
+ {
+   if (find_reg_note (insn, REG_UNUSED, operands[3]))
+     return "divxu.b\\t%X2,%T0";
+   else
+     return "divxu.b\\t%X2,%T0\;mov.b\\t%t0,%s3";
+ }
+   [(set_attr "length" "4")])
+ 
+ (define_insn_and_split "divmodqi4"
+   [(set (match_operand:QI 0 "register_operand" "=r")
+ 	(truncate:QI
+ 	  (div:HI
+ 	    (match_operand:HI 1 "register_operand" "0")
+ 	    (sign_extend:HI (match_operand:QI 2 "register_operand" "r")))))
+    (set (match_operand:QI 3 "register_operand" "=r")
+ 	(truncate:QI
+ 	  (mod:HI
+ 	    (match_dup 1)
+ 	    (sign_extend:HI (match_dup 2)))))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (truncate:QI
+ 				   (div:HI (match_dup 1)
+ 					   (sign_extend:HI (match_dup 2)))))
+ 	      (set (match_dup 3) (truncate:QI
+ 				   (mod:HI (match_dup 1)
+ 					   (sign_extend:HI (match_dup 2)))))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "divmodqi4_clobber_flags"
+   [(set (match_operand:QI 0 "register_operand" "=r")
+ 	(truncate:QI
+ 	  (div:HI
+ 	    (match_operand:HI 1 "register_operand" "0")
+ 	    (sign_extend:HI (match_operand:QI 2 "register_operand" "r")))))
+    (set (match_operand:QI 3 "register_operand" "=r")
+ 	(truncate:QI
+ 	  (mod:HI
+ 	    (match_dup 1)
+ 	    (sign_extend:HI (match_dup 2)))))
+    (clobber (reg:CC CC_REG))]
+   ""
+ {
+   if (find_reg_note (insn, REG_UNUSED, operands[3]))
+     return "divxs.b\\t%X2,%T0";
+   else
+     return "divxs.b\\t%X2,%T0\;mov.b\\t%t0,%s3";
+ }
+   [(set_attr "length" "6")])
+ 
+ (define_insn_and_split "udivmodhi4"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(truncate:HI
+ 	  (udiv:SI
+ 	    (match_operand:SI 1 "register_operand" "0")
+ 	    (zero_extend:SI (match_operand:HI 2 "register_operand" "r")))))
+    (set (match_operand:HI 3 "register_operand" "=r")
+ 	(truncate:HI
+ 	  (umod:SI
+ 	    (match_dup 1)
+ 	    (zero_extend:SI (match_dup 2)))))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (truncate:HI
+ 				   (udiv:SI (match_dup 1)
+ 					    (zero_extend:SI (match_dup 2)))))
+ 	      (set (match_dup 3) (truncate:HI
+ 				   (umod:SI (match_dup 1)
+ 					    (zero_extend:SI (match_dup 2)))))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "udivmodhi4_clobber_flags"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(truncate:HI
+ 	  (udiv:SI
+ 	    (match_operand:SI 1 "register_operand" "0")
+ 	    (zero_extend:SI (match_operand:HI 2 "register_operand" "r")))))
+    (set (match_operand:HI 3 "register_operand" "=r")
+ 	(truncate:HI
+ 	  (umod:SI
+ 	    (match_dup 1)
+ 	    (zero_extend:SI (match_dup 2)))))
+    (clobber (reg:CC CC_REG))]
+   ""
+ {
+   if (find_reg_note (insn, REG_UNUSED, operands[3]))
+     return "divxu.w\\t%T2,%S0";
+   else
+     return "divxu.w\\t%T2,%S0\;mov.w\\t%e0,%f3";
+ }
+   [(set_attr "length" "4")])
+ 
+ (define_insn_and_split "divmodhi4"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(truncate:HI
+ 	  (div:SI
+ 	    (match_operand:SI 1 "register_operand" "0")
+ 	    (sign_extend:SI (match_operand:HI 2 "register_operand" "r")))))
+    (set (match_operand:HI 3 "register_operand" "=r")
+ 	(truncate:HI
+ 	  (mod:SI
+ 	    (match_dup 1)
+ 	    (sign_extend:SI (match_dup 2)))))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (truncate:HI
+ 				   (div:SI (match_dup 1)
+ 					   (sign_extend:SI (match_dup 2)))))
+ 	      (set (match_dup 3) (truncate:HI
+ 				   (mod:SI (match_dup 1)
+ 					   (sign_extend:SI (match_dup 2)))))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "divmodhi4_clobber_flags"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(truncate:HI
+ 	  (div:SI
+ 	    (match_operand:SI 1 "register_operand" "0")
+ 	    (sign_extend:SI (match_operand:HI 2 "register_operand" "r")))))
+    (set (match_operand:HI 3 "register_operand" "=r")
+ 	(truncate:HI
+ 	  (mod:SI
+ 	    (match_dup 1)
+ 	    (sign_extend:SI (match_dup 2)))))
+    (clobber (reg:CC CC_REG))]
+   ""
+ {
+   if (find_reg_note (insn, REG_UNUSED, operands[3]))
+     return "divxs.w\\t%T2,%S0";
+   else
+     return "divxs.w\\t%T2,%S0\;mov.w\\t%e0,%f3";
+ }
+   [(set_attr "length" "6")])
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/elf.h gcc-11.1.0/gcc/config/h8300/elf.h
*** gcc-10.3.0/gcc/config/h8300/elf.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/h8300/elf.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.
     Renesas H8/300 version generating elf
!    Copyright (C) 2001-2020 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com),
     Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.
     Renesas H8/300 version generating elf
!    Copyright (C) 2001-2021 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com),
     Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
  
*************** along with GCC; see the file COPYING3.
*** 39,44 ****
  #define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
  
  #undef LINK_SPEC
! #define LINK_SPEC "%{mh:%{mn:-m h8300hnelf}} %{mh:%{!mn:-m h8300helf}} %{ms:%{mn:-m h8300snelf}} %{ms:%{!mn:-m h8300self}} %{msx:%{mn:-m h8300sxnelf;:-m h8300sxelf}}"
  
  #endif /* h8300/elf.h */
--- 39,44 ----
  #define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
  
  #undef LINK_SPEC
! #define LINK_SPEC "%{!ms:%{!msx:%{mn:-m h8300hnelf;:-m h8300helf}}} %{ms:%{mn:-m h8300snelf;:-m h8300self}} %{msx:%{mn:-m h8300sxnelf;:-m h8300sxelf}}"
  
  #endif /* h8300/elf.h */
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/extensions.md gcc-11.1.0/gcc/config/h8300/extensions.md
*** gcc-10.3.0/gcc/config/h8300/extensions.md	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/h8300/extensions.md	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,208 ----
+ ;; ----------------------------------------------------------------------
+ ;; EXTEND INSTRUCTIONS
+ ;; ----------------------------------------------------------------------
+ 
+ (define_expand "zero_extendqi<mode>2"
+   [(set (match_operand:HSI 0 "register_operand" "")
+ 	(zero_extend:HSI (match_operand:QI 1 "general_operand_src" "")))]
+   ""
+   {
+     if (TARGET_H8300SX)
+       operands[1] = force_reg (QImode, operands[1]);
+   })
+ 
+ (define_insn_and_split "*zero_extendqihi2"
+   [(set (match_operand:HI 0 "register_operand" "=r,r")
+ 	(zero_extend:HI (match_operand:QI 1 "general_operand_src" "0,g>")))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (zero_extend:HI (match_dup 1)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*zero_extendqihi2_clobber_flags"
+   [(set (match_operand:HI 0 "register_operand" "=r,r")
+ 	(zero_extend:HI (match_operand:QI 1 "general_operand_src" "0,g>")))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "@
+   extu.w	%T0
+   #"
+   [(set_attr "length" "2,10")])
+ 
+ ;; Split the zero extension of a general operand (actually a memory
+ ;; operand) into a load of the operand and the actual zero extension
+ ;; so that 1) the length will be accurate, and 2) the zero extensions
+ ;; appearing at the end of basic blocks may be merged.
+ 
+ (define_split
+   [(set (match_operand:HI 0 "register_operand" "")
+ 	(zero_extend:HI (match_operand:QI 1 "general_operand_src" "")))
+    (clobber (reg:CC CC_REG))]
+   "reload_completed"
+   [(set (match_dup 2) (match_dup 1))
+    (parallel [(set (match_dup 0) (zero_extend:HI (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])]
+   {
+     operands[2] = gen_rtx_REG (QImode, REGNO (operands[0]));
+   })
+ 
+ (define_insn "*zero_extendqisi2"
+   [(set (match_operand:SI 0 "register_operand" "=r,r")
+ 	(zero_extend:SI (match_operand:QI 1 "general_operand_src" "0,g>")))]
+   "!reload_completed && !TARGET_H8300SX"
+   "#")
+ 
+ ;; Two cases for the !H8/SX target.  One where there is an overlap
+ ;; between the source and destination, one where there is no overlap
+ (define_split
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(zero_extend:SI (match_operand:QI 1 "general_operand_src" "")))]
+   "!TARGET_H8300SX
+     && reg_overlap_mentioned_p (operands[0], operands[1])
+     && reload_completed"
+   [(parallel [(set (match_dup 2) (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 3) (zero_extend:HI (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0) (zero_extend:SI (match_dup 3)))
+ 	      (clobber (reg:CC CC_REG))])]
+   {
+     operands[2] = gen_lowpart (QImode, operands[0]);
+     operands[3] = gen_lowpart (HImode, operands[0]);
+   })
+ 
+ (define_split
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(zero_extend:SI (match_operand:QI 1 "general_operand_src" "")))]
+   "!TARGET_H8300SX
+     && !reg_overlap_mentioned_p (operands[0], operands[1])
+     && reload_completed"
+   [(parallel [(set (match_dup 0) (const_int 0))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (strict_low_part (match_dup 2)) (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])]
+   {
+     operands[2] = gen_rtx_REG (QImode, REGNO (operands[0]));
+   })
+ 
+ (define_insn_and_split "*zero_extendqisi2_h8sx"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(zero_extend:SI (match_operand:QI 1 "register_operand" "0")))]
+   "TARGET_H8300SX"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (zero_extend:SI (match_dup 1)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*zero_extendqisi2_h8sx_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(zero_extend:SI (match_operand:QI 1 "register_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   "TARGET_H8300SX"
+   "extu.l\t#2,%0"
+   [(set_attr "length" "2")])
+ 
+ (define_expand "zero_extendhisi2"
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(zero_extend:SI (match_operand:HI 1 "register_operand" "")))]
+   ""
+   "")
+ 
+ (define_insn_and_split "*zero_extendhisi2"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(zero_extend:SI (match_operand:HI 1 "register_operand" "0")))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (zero_extend:SI (match_dup 1)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*zero_extendhisi2_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(zero_extend:SI (match_operand:HI 1 "register_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "extu.l	%S0"
+   [(set_attr "length" "2")])
+ 
+ (define_expand "extendqi<mode>2"
+   [(set (match_operand:HSI 0 "register_operand" "")
+ 	(sign_extend:HSI (match_operand:QI 1 "register_operand" "")))]
+   ""
+   "")
+ 
+ (define_insn_and_split "*extendqihi2"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(sign_extend:HI (match_operand:QI 1 "register_operand" "0")))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (sign_extend:HI (match_dup 1)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*extendqihi2_clobber_flags"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(sign_extend:HI (match_operand:QI 1 "register_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "exts.w	%T0"
+   [(set_attr "length" "2")])
+ 
+ ;; The following pattern is needed because without the pattern, the
+ ;; combiner would split (sign_extend:SI (reg:QI)) into two 24-bit
+ ;; shifts, one ashift and one ashiftrt.
+ 
+ (define_insn_and_split "*extendqisi2"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(sign_extend:SI (match_operand:QI 1 "register_operand" "0")))]
+   "!TARGET_H8300SX"
+   "#"
+   "&& reload_completed"
+   [(parallel [(set (match_dup 2) (sign_extend:HI (match_dup 1)))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0) (sign_extend:SI (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])]
+   {
+     operands[2] = gen_rtx_REG (HImode, REGNO (operands[0]));
+   })
+ 
+ (define_insn_and_split "*extendqisi2_h8sx"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(sign_extend:SI (match_operand:QI 1 "register_operand" "0")))]
+   "TARGET_H8300SX"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (sign_extend:SI (match_dup 1)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*extendqisi2_h8sx_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(sign_extend:SI (match_operand:QI 1 "register_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   "TARGET_H8300SX"
+   "exts.l\t#2,%0"
+   [(set_attr "length" "2")])
+ 
+ (define_expand "extendhisi2"
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(sign_extend:SI (match_operand:HI 1 "register_operand" "")))]
+   ""
+   "")
+ 
+ (define_insn_and_split "*extendhisi2"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(sign_extend:SI (match_operand:HI 1 "register_operand" "0")))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (sign_extend:SI (match_dup 1)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*extendhisi2_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(sign_extend:SI (match_operand:HI 1 "register_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "exts.l	%S0"
+   [(set_attr "length" "2")])
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/genmova.sh gcc-11.1.0/gcc/config/h8300/genmova.sh
*** gcc-10.3.0/gcc/config/h8300/genmova.sh	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/h8300/genmova.sh	Tue Apr 27 10:00:13 2021
***************
*** 2,8 ****
  # Generate mova.md, a file containing patterns that can be implemented
  # using the h8sx mova instruction.
  
! # Copyright (C) 2004-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 2,8 ----
  # Generate mova.md, a file containing patterns that can be implemented
  # using the h8sx mova instruction.
  
! # Copyright (C) 2004-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
***************
*** 22,28 ****
  
  echo ";; -*- buffer-read-only: t -*-"
  echo ";; Generated automatically from genmova.sh"
! echo ";; Copyright (C) 2004-2020 Free Software Foundation, Inc."
  echo ";;"
  echo ";; This file is part of GCC."
  echo ";;"
--- 22,28 ----
  
  echo ";; -*- buffer-read-only: t -*-"
  echo ";; Generated automatically from genmova.sh"
! echo ";; Copyright (C) 2004-2021 Free Software Foundation, Inc."
  echo ";;"
  echo ";; This file is part of GCC."
  echo ";;"
*************** for s in QI HI; do
*** 71,78 ****
  		 (match_operand:$d 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/b.l @(%o2%C2,$src),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  EOF
  	;;
--- 71,77 ----
  		 (match_operand:$d 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/b.l @(%o2%C2,$src),%S0"
!   [(set_attr "length_table" "mova")])
  
  EOF
  	;;
*************** EOF
*** 115,122 ****
  		 (match_operand:$d 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/$opsize.l @(%o2%C2,$src),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  EOF
  	    ;;
--- 114,120 ----
  		 (match_operand:$d 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/$opsize.l @(%o2%C2,$src),%S0"
!   [(set_attr "length_table" "mova")])
  
  EOF
  	    ;;
*************** EOF
*** 134,141 ****
  		  (const_int $amount)))]
    "TARGET_H8300SX"
    "mova/$opsize.l @(0,$src),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:$d 0 "register_operand" "=r,r")
--- 132,138 ----
  		  (const_int $amount)))]
    "TARGET_H8300SX"
    "mova/$opsize.l @(0,$src),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:$d 0 "register_operand" "=r,r")
*************** EOF
*** 144,151 ****
  		 (match_operand:$d 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/$opsize.l @(%o2%C2,$src),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  EOF
  
--- 141,147 ----
  		 (match_operand:$d 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/$opsize.l @(%o2%C2,$src),%S0"
!   [(set_attr "length_table" "mova")])
  
  EOF
  
*************** EOF
*** 174,181 ****
  		(const_int $mask)))]
    "TARGET_H8300SX"
    "mova/$opsize.l @(0,$src),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:$d 0 "register_operand" "=r")
--- 170,176 ----
  		(const_int $mask)))]
    "TARGET_H8300SX"
    "mova/$opsize.l @(0,$src),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:$d 0 "register_operand" "=r")
*************** EOF
*** 185,192 ****
  		 (match_operand:$d 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/$opsize.l @(%o2%C2,$src),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  EOF
  	      done
--- 180,186 ----
  		 (match_operand:$d 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/$opsize.l @(%o2%C2,$src),%S0"
!   [(set_attr "length_table" "mova")])
  
  EOF
  	      done
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/h8300-modes.def gcc-11.1.0/gcc/config/h8300/h8300-modes.def
*** gcc-10.3.0/gcc/config/h8300/h8300-modes.def	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/h8300/h8300-modes.def	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,21 ----
+ /* Definitions of target machine for GNU compiler. 
+    Copyright (C) 2020-2021 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/>.  */
+ 
+ CC_MODE (CCZN);
+ CC_MODE (CCZNV);
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/h8300-protos.h gcc-11.1.0/gcc/config/h8300/h8300-protos.h
*** gcc-10.3.0/gcc/config/h8300/h8300-protos.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/h8300/h8300-protos.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.
     Renesas H8/300 version
!    Copyright (C) 2000-2020 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com),
     Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.
     Renesas H8/300 version
!    Copyright (C) 2000-2021 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com),
     Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
  
*************** along with GCC; see the file COPYING3.
*** 26,33 ****
  /* Declarations for functions used in insn-output.c.  */
  #ifdef RTX_CODE
  extern unsigned int compute_mov_length (rtx *);
! extern const char *output_plussi (rtx *);
! extern unsigned int compute_plussi_length (rtx *);
  extern const char *output_a_shift (rtx *);
  extern unsigned int compute_a_shift_length (rtx, rtx *);
  extern const char *output_a_rotate (enum rtx_code, rtx *);
--- 26,33 ----
  /* Declarations for functions used in insn-output.c.  */
  #ifdef RTX_CODE
  extern unsigned int compute_mov_length (rtx *);
! extern const char *output_plussi (rtx *, bool);
! extern unsigned int compute_plussi_length (rtx *, bool);
  extern const char *output_a_shift (rtx *);
  extern unsigned int compute_a_shift_length (rtx, rtx *);
  extern const char *output_a_rotate (enum rtx_code, rtx *);
*************** extern unsigned int compute_a_rotate_len
*** 35,53 ****
  extern const char *output_simode_bld (int, rtx[]);
  extern void final_prescan_insn (rtx_insn *, rtx *, int);
  extern int h8300_expand_movsi (rtx[]);
  extern void notice_update_cc (rtx, rtx_insn *);
  extern const char *output_logical_op (machine_mode, rtx *);
  extern unsigned int compute_logical_op_length (machine_mode,
  					       rtx *);
  #ifdef HAVE_ATTR_cc
  extern enum attr_cc compute_plussi_cc (rtx *);
- extern enum attr_cc compute_a_shift_cc (rtx, rtx *);
- extern enum attr_cc compute_logical_op_cc (machine_mode, rtx *);
  #endif
  extern void h8300_expand_branch (rtx[]);
  extern void h8300_expand_store (rtx[]);
  extern bool expand_a_shift (machine_mode, enum rtx_code, rtx[]);
! extern int h8300_shift_needs_scratch_p (int, machine_mode);
  extern int expand_a_rotate (rtx[]);
  extern int fix_bit_operand (rtx *, enum rtx_code);
  extern int h8300_adjust_insn_length (rtx, int);
--- 35,55 ----
  extern const char *output_simode_bld (int, rtx[]);
  extern void final_prescan_insn (rtx_insn *, rtx *, int);
  extern int h8300_expand_movsi (rtx[]);
+ extern machine_mode  h8300_select_cc_mode (RTX_CODE, rtx, rtx);
  extern void notice_update_cc (rtx, rtx_insn *);
  extern const char *output_logical_op (machine_mode, rtx *);
  extern unsigned int compute_logical_op_length (machine_mode,
  					       rtx *);
+ 
+ extern int compute_logical_op_cc (machine_mode, rtx *);
+ extern int compute_a_shift_cc (rtx, rtx *);
  #ifdef HAVE_ATTR_cc
  extern enum attr_cc compute_plussi_cc (rtx *);
  #endif
  extern void h8300_expand_branch (rtx[]);
  extern void h8300_expand_store (rtx[]);
  extern bool expand_a_shift (machine_mode, enum rtx_code, rtx[]);
! extern int h8300_shift_needs_scratch_p (int, machine_mode, rtx_code);
  extern int expand_a_rotate (rtx[]);
  extern int fix_bit_operand (rtx *, enum rtx_code);
  extern int h8300_adjust_insn_length (rtx, int);
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/h8300.c gcc-11.1.0/gcc/config/h8300/h8300.c
*** gcc-10.3.0/gcc/config/h8300/h8300.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/h8300/h8300.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines for insn-output.c for Renesas H8/300.
!    Copyright (C) 1992-2020 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com),
     Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
  
--- 1,5 ----
  /* Subroutines for insn-output.c for Renesas H8/300.
!    Copyright (C) 1992-2021 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com),
     Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
  
*************** static tree h8300_handle_tiny_data_attri
*** 102,110 ****
  static void h8300_print_operand_address (FILE *, machine_mode, rtx);
  static void h8300_print_operand (FILE *, rtx, int);
  static bool h8300_print_operand_punct_valid_p (unsigned char code);
- #ifndef OBJECT_FORMAT_ELF
- static void h8300_asm_named_section (const char *, unsigned int, tree);
- #endif
  static int h8300_register_move_cost (machine_mode, reg_class_t, reg_class_t);
  static int h8300_and_costs (rtx);
  static int h8300_shift_costs (rtx);
--- 102,107 ----
*************** static int pragma_interrupt;
*** 135,147 ****
  static int pragma_saveall;
  
  static const char *const names_big[] =
! { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7" };
  
  static const char *const names_extended[] =
! { "er0", "er1", "er2", "er3", "er4", "er5", "er6", "er7" };
  
  static const char *const names_upper_extended[] =
! { "e0", "e1", "e2", "e3", "e4", "e5", "e6", "e7" };
  
  /* Points to one of the above.  */
  /* ??? The above could be put in an array indexed by CPU_TYPE.  */
--- 132,144 ----
  static int pragma_saveall;
  
  static const char *const names_big[] =
! { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "cc" };
  
  static const char *const names_extended[] =
! { "er0", "er1", "er2", "er3", "er4", "er5", "er6", "er7", "cc" };
  
  static const char *const names_upper_extended[] =
! { "e0", "e1", "e2", "e3", "e4", "e5", "e6", "e7", "cc" };
  
  /* Points to one of the above.  */
  /* ??? The above could be put in an array indexed by CPU_TYPE.  */
*************** enum shift_type
*** 182,195 ****
     QImode, HImode, and SImode, respectively.  Each table is organized
     by, in the order of indices, machine, shift type, and shift count.  */
  
! static enum shift_alg shift_alg_qi[3][3][8] = {
!   {
!     /* TARGET_H8300  */
!     /* 0    1    2    3    4    5    6    7  */
!     { INL, INL, INL, INL, INL, ROT, ROT, ROT }, /* SHIFT_ASHIFT   */
!     { INL, INL, INL, INL, INL, ROT, ROT, ROT }, /* SHIFT_LSHIFTRT */
!     { INL, INL, INL, INL, INL, LOP, LOP, SPC }  /* SHIFT_ASHIFTRT */
!   },
    {
      /* TARGET_H8300H  */
      /* 0    1    2    3    4    5    6    7  */
--- 179,185 ----
     QImode, HImode, and SImode, respectively.  Each table is organized
     by, in the order of indices, machine, shift type, and shift count.  */
  
! static enum shift_alg shift_alg_qi[2][3][8] = {
    {
      /* TARGET_H8300H  */
      /* 0    1    2    3    4    5    6    7  */
*************** static enum shift_alg shift_alg_qi[3][3]
*** 206,223 ****
    }
  };
  
! static enum shift_alg shift_alg_hi[3][3][16] = {
!   {
!     /* TARGET_H8300  */
!     /*  0    1    2    3    4    5    6    7  */
!     /*  8    9   10   11   12   13   14   15  */
!     { INL, INL, INL, INL, INL, INL, INL, SPC,
!       SPC, SPC, SPC, SPC, SPC, SPC, SPC, SPC }, /* SHIFT_ASHIFT   */
!     { INL, INL, INL, INL, INL, LOP, LOP, SPC,
!       SPC, SPC, SPC, SPC, SPC, SPC, SPC, SPC }, /* SHIFT_LSHIFTRT */
!     { INL, INL, INL, INL, INL, LOP, LOP, SPC,
!       SPC, SPC, SPC, SPC, SPC, SPC, SPC, SPC }, /* SHIFT_ASHIFTRT */
!   },
    {
      /* TARGET_H8300H  */
      /*  0    1    2    3    4    5    6    7  */
--- 196,202 ----
    }
  };
  
! static enum shift_alg shift_alg_hi[2][3][16] = {
    {
      /* TARGET_H8300H  */
      /*  0    1    2    3    4    5    6    7  */
*************** static enum shift_alg shift_alg_hi[3][3]
*** 242,267 ****
    }
  };
  
! static enum shift_alg shift_alg_si[3][3][32] = {
!   {
!     /* TARGET_H8300  */
!     /*  0    1    2    3    4    5    6    7  */
!     /*  8    9   10   11   12   13   14   15  */
!     /* 16   17   18   19   20   21   22   23  */
!     /* 24   25   26   27   28   29   30   31  */
!     { INL, INL, INL, LOP, LOP, LOP, LOP, LOP,
!       SPC, LOP, LOP, LOP, LOP, LOP, LOP, LOP,
!       SPC, SPC, SPC, SPC, SPC, LOP, LOP, LOP,
!       SPC, SPC, SPC, SPC, LOP, LOP, LOP, SPC }, /* SHIFT_ASHIFT   */
!     { INL, INL, INL, LOP, LOP, LOP, LOP, LOP,
!       SPC, SPC, LOP, LOP, LOP, LOP, LOP, SPC,
!       SPC, SPC, SPC, LOP, LOP, LOP, LOP, LOP,
!       SPC, SPC, SPC, SPC, SPC, LOP, LOP, SPC }, /* SHIFT_LSHIFTRT */
!     { INL, INL, INL, LOP, LOP, LOP, LOP, LOP,
!       SPC, LOP, LOP, LOP, LOP, LOP, LOP, SPC,
!       SPC, SPC, LOP, LOP, LOP, LOP, LOP, LOP,
!       SPC, SPC, SPC, LOP, LOP, LOP, LOP, SPC }, /* SHIFT_ASHIFTRT */
!   },
    {
      /* TARGET_H8300H  */
      /*  0    1    2    3    4    5    6    7  */
--- 221,227 ----
    }
  };
  
! static enum shift_alg shift_alg_si[2][3][32] = {
    {
      /* TARGET_H8300H  */
      /*  0    1    2    3    4    5    6    7  */
*************** static enum shift_alg shift_alg_si[3][3]
*** 309,315 ****
  
  enum h8_cpu
  {
-   H8_300,
    H8_300H,
    H8_S
  };
--- 269,274 ----
*************** h8300_option_override (void)
*** 323,375 ****
    static const char *const h8_pop_ops[2]  = { "pop"  , "pop.l"  };
    static const char *const h8_mov_ops[2]  = { "mov.w", "mov.l"  };
  
! #ifndef OBJECT_FORMAT_ELF
!   if (TARGET_H8300SX)
!     {
!       error ("%<-msx%> is not supported in coff");
!       target_flags |= MASK_H8300S;
!     }
! #endif
! 
!   if (TARGET_H8300)
!     {
!       cpu_type = (int) CPU_H8300;
!       h8_reg_names = names_big;
!     }
!   else
!     {
!       /* For this we treat the H8/300H and H8S the same.  */
!       cpu_type = (int) CPU_H8300H;
!       h8_reg_names = names_extended;
!     }
    h8_push_op = h8_push_ops[cpu_type];
    h8_pop_op = h8_pop_ops[cpu_type];
    h8_mov_op = h8_mov_ops[cpu_type];
  
    if (!TARGET_H8300S && TARGET_MAC)
      {
        error ("%<-ms2600%> is used without %<-ms%>");
        target_flags |= MASK_H8300S_1;
      }
  
-   if (TARGET_H8300 && TARGET_NORMAL_MODE)
-     {
-       error ("%<-mn%> is used without %<-mh%> or %<-ms%> or %<-msx%>");
-       target_flags ^= MASK_NORMAL_MODE;
-     }
- 
    if (! TARGET_H8300S &&  TARGET_EXR)
      {
        error ("%<-mexr%> is used without %<-ms%>");
        target_flags |= MASK_H8300S_1;
      }
  
-   if (TARGET_H8300 && TARGET_INT32)
-    {
-       error ("%<-mint32%> is not supported for H8300 and H8300L targets");
-       target_flags ^= MASK_INT32;
-    }
- 
   if ((!TARGET_H8300S  &&  TARGET_EXR) && (!TARGET_H8300SX && TARGET_EXR))
     {
        error ("%<-mexr%> is used without %<-ms%> or %<-msx%>");
--- 282,310 ----
    static const char *const h8_pop_ops[2]  = { "pop"  , "pop.l"  };
    static const char *const h8_mov_ops[2]  = { "mov.w", "mov.l"  };
  
!   /* For this we treat the H8/300H and H8S the same.  */
!   cpu_type = (int) CPU_H8300H;
!   h8_reg_names = names_extended;
    h8_push_op = h8_push_ops[cpu_type];
    h8_pop_op = h8_pop_ops[cpu_type];
    h8_mov_op = h8_mov_ops[cpu_type];
  
+   /* If we're compiling for the H8/S, then turn off H8/300H.  */
+   if (TARGET_H8300S)
+     target_flags &= ~MASK_H8300H;
+ 
    if (!TARGET_H8300S && TARGET_MAC)
      {
        error ("%<-ms2600%> is used without %<-ms%>");
        target_flags |= MASK_H8300S_1;
      }
  
    if (! TARGET_H8300S &&  TARGET_EXR)
      {
        error ("%<-mexr%> is used without %<-ms%>");
        target_flags |= MASK_H8300S_1;
      }
  
   if ((!TARGET_H8300S  &&  TARGET_EXR) && (!TARGET_H8300SX && TARGET_EXR))
     {
        error ("%<-mexr%> is used without %<-ms%> or %<-msx%>");
*************** h8300_option_override (void)
*** 396,413 ****
       SHIFT_LOOP.  */
    if (optimize_size)
      {
-       /* H8/300 */
-       shift_alg_hi[H8_300][SHIFT_ASHIFT][5] = SHIFT_LOOP;
-       shift_alg_hi[H8_300][SHIFT_ASHIFT][6] = SHIFT_LOOP;
-       shift_alg_hi[H8_300][SHIFT_ASHIFT][13] = SHIFT_LOOP;
-       shift_alg_hi[H8_300][SHIFT_ASHIFT][14] = SHIFT_LOOP;
- 
-       shift_alg_hi[H8_300][SHIFT_LSHIFTRT][13] = SHIFT_LOOP;
-       shift_alg_hi[H8_300][SHIFT_LSHIFTRT][14] = SHIFT_LOOP;
- 
-       shift_alg_hi[H8_300][SHIFT_ASHIFTRT][13] = SHIFT_LOOP;
-       shift_alg_hi[H8_300][SHIFT_ASHIFTRT][14] = SHIFT_LOOP;
- 
        /* H8/300H */
        shift_alg_hi[H8_300H][SHIFT_ASHIFT][5] = SHIFT_LOOP;
        shift_alg_hi[H8_300H][SHIFT_ASHIFT][6] = SHIFT_LOOP;
--- 331,336 ----
*************** h8300_emit_stack_adjustment (int sign, H
*** 535,572 ****
    if (size == 0)
      return;
  
!   /* H8/300 cannot add/subtract a large constant with a single
!      instruction.  If a temporary register is available, load the
!      constant to it and then do the addition.  */
!   if (TARGET_H8300
!       && size > 4
!       && !h8300_current_function_interrupt_function_p ()
!       && !(cfun->static_chain_decl != NULL && sign < 0))
      {
!       rtx r3 = gen_rtx_REG (Pmode, 3);
!       F (emit_insn (gen_movhi (r3, GEN_INT (sign * size))), in_prologue);
!       F (emit_insn (gen_addhi3 (stack_pointer_rtx,
! 				stack_pointer_rtx, r3)), in_prologue);
      }
    else
!     {
!       /* The stack adjustment made here is further optimized by the
! 	 splitter.  In case of H8/300, the splitter always splits the
! 	 addition emitted here to make the adjustment interrupt-safe.
! 	 FIXME: We don't always tag those, because we don't know what
! 	 the splitter will do.  */
!       if (Pmode == HImode)
! 	{
! 	  rtx_insn *x = emit_insn (gen_addhi3 (stack_pointer_rtx,
! 					       stack_pointer_rtx,
! 					       GEN_INT (sign * size)));
! 	  if (size < 4)
! 	    F (x, in_prologue);
! 	}
!       else
! 	F (emit_insn (gen_addsi3 (stack_pointer_rtx,
! 				  stack_pointer_rtx, GEN_INT (sign * size))), in_prologue);
!     }
  }
  
  /* Round up frame size SIZE.  */
--- 458,479 ----
    if (size == 0)
      return;
  
!   /* The stack adjustment made here is further optimized by the
!      splitter.  In case of H8/300, the splitter always splits the
!      addition emitted here to make the adjustment interrupt-safe.
!      FIXME: We don't always tag those, because we don't know what
!      the splitter will do.  */
!   if (Pmode == HImode)
      {
!       rtx_insn *x = emit_insn (gen_addhi3 (stack_pointer_rtx,
! 					   stack_pointer_rtx,
! 					    GEN_INT (sign * size)));
!       if (size < 4)
!         F (x, 0);
      }
    else
!     F (emit_insn (gen_addsi3 (stack_pointer_rtx,
! 			      stack_pointer_rtx, GEN_INT (sign * size))), 0);
  }
  
  /* Round up frame size SIZE.  */
*************** push (int rn, bool in_prologue)
*** 609,621 ****
    rtx reg = gen_rtx_REG (word_mode, rn);
    rtx x;
  
!   if (TARGET_H8300)
!     x = gen_push_h8300 (reg);
!   else if (!TARGET_NORMAL_MODE)
      x = gen_push_h8300hs_advanced (reg);
    else
      x = gen_push_h8300hs_normal (reg);
!   x = F (emit_insn (x), in_prologue);
    add_reg_note (x, REG_INC, stack_pointer_rtx);
    return x;
  }
--- 516,526 ----
    rtx reg = gen_rtx_REG (word_mode, rn);
    rtx x;
  
!   if (!TARGET_NORMAL_MODE)
      x = gen_push_h8300hs_advanced (reg);
    else
      x = gen_push_h8300hs_normal (reg);
!   x = F (emit_insn (x), 0);
    add_reg_note (x, REG_INC, stack_pointer_rtx);
    return x;
  }
*************** pop (int rn)
*** 628,636 ****
    rtx reg = gen_rtx_REG (word_mode, rn);
    rtx x;
  
!   if (TARGET_H8300)
!     x = gen_pop_h8300 (reg);
!   else if (!TARGET_NORMAL_MODE)
      x = gen_pop_h8300hs_advanced (reg);
    else
      x = gen_pop_h8300hs_normal (reg);
--- 533,539 ----
    rtx reg = gen_rtx_REG (word_mode, rn);
    rtx x;
  
!   if (!TARGET_NORMAL_MODE)
      x = gen_pop_h8300hs_advanced (reg);
    else
      x = gen_pop_h8300hs_normal (reg);
*************** h8300_expand_prologue (void)
*** 853,859 ****
      {
        /* Push fp.  */
        push (HARD_FRAME_POINTER_REGNUM, true);
!       F (emit_move_insn (hard_frame_pointer_rtx, stack_pointer_rtx), true);
      }
  
    /* Push the rest of the registers in ascending order.  */
--- 756,762 ----
      {
        /* Push fp.  */
        push (HARD_FRAME_POINTER_REGNUM, true);
!       F (emit_move_insn (hard_frame_pointer_rtx, stack_pointer_rtx), 0);
      }
  
    /* Push the rest of the registers in ascending order.  */
*************** split_adds_subs (machine_mode mode, rtx
*** 1049,1057 ****
      }
  
    /* Try different amounts in descending order.  */
!   for (amount = (TARGET_H8300H || TARGET_H8300S) ? 4 : 2;
!        amount > 0;
!        amount /= 2)
      {
        for (; val >= amount; val -= amount)
  	emit_insn (gen_add (reg, reg, GEN_INT (sign * amount)));
--- 952,958 ----
      }
  
    /* Try different amounts in descending order.  */
!   for (amount = 4; amount > 0; amount /= 2)
      {
        for (; val >= amount; val -= amount)
  	emit_insn (gen_add (reg, reg, GEN_INT (sign * amount)));
*************** h8300_rtx_costs (rtx x, machine_mode mod
*** 1273,1282 ****
  		return true;
  	      case 4:
  	      case -4:
! 		if (TARGET_H8300H || TARGET_H8300S)
! 		  *total = 0 + (outer_code == SET);
! 		else
! 		  *total = 1;
  		return true;
  	      }
  	  }
--- 1174,1180 ----
  		return true;
  	      case 4:
  	      case -4:
! 		*total = 0 + (outer_code == SET);
  		return true;
  	      }
  	  }
*************** h8300_rtx_costs (rtx x, machine_mode mod
*** 1301,1306 ****
--- 1199,1214 ----
        return true;
  
      case COMPARE:
+     case NE:
+     case EQ:
+     case GE:
+     case GT:
+     case LE:
+     case LT:
+     case GEU:
+     case GTU:
+     case LEU:
+     case LTU:
        if (XEXP (x, 1) == const0_rtx)
  	*total = 0;
        return false;
*************** h8300_print_operand (FILE *file, rtx x,
*** 1565,1574 ****
        switch (GET_CODE (x))
  	{
  	case REG:
! 	  if (TARGET_H8300)
! 	    fprintf (file, "%s", names_big[REGNO (x)]);
! 	  else
! 	    fprintf (file, "%s", names_upper_extended[REGNO (x)]);
  	  break;
  	case MEM:
  	  h8300_print_operand (file, x, 0);
--- 1473,1479 ----
        switch (GET_CODE (x))
  	{
  	case REG:
! 	  fprintf (file, "%s", names_upper_extended[REGNO (x)]);
  	  break;
  	case MEM:
  	  h8300_print_operand (file, x, 0);
*************** h8300_print_operand (FILE *file, rtx x,
*** 1592,1601 ****
        switch (GET_CODE (x))
  	{
  	case REG:
! 	  if (TARGET_H8300)
! 	    fprintf (file, "%s", names_big[REGNO (x) + 1]);
! 	  else
! 	    fprintf (file, "%s", names_big[REGNO (x)]);
  	  break;
  	case MEM:
  	  x = adjust_address (x, HImode, 2);
--- 1497,1503 ----
        switch (GET_CODE (x))
  	{
  	case REG:
! 	  fprintf (file, "%s", names_big[REGNO (x)]);
  	  break;
  	case MEM:
  	  x = adjust_address (x, HImode, 2);
*************** h8300_print_operand (FILE *file, rtx x,
*** 1616,1625 ****
  	}
        break;
      case 'j':
!       fputs (cond_string (GET_CODE (x)), file);
        break;
      case 'k':
!       fputs (cond_string (reverse_condition (GET_CODE (x))), file);
        break;
      case 'm':
        gcc_assert (GET_CODE (x) == CONST_INT);
--- 1518,1537 ----
  	}
        break;
      case 'j':
!       if (GET_CODE (x) == LT && GET_MODE (XEXP (x, 0)) == E_CCZNmode)
! 	fputs ("mi", file);
!       else if (GET_CODE (x) == GE && GET_MODE (XEXP (x, 0)) == E_CCZNmode)
! 	fputs ("pl", file);
!       else
! 	fputs (cond_string (GET_CODE (x)), file);
        break;
      case 'k':
!       if (GET_CODE (x) == LT && GET_MODE (XEXP (x, 0)) == E_CCZNmode)
! 	fputs ("pl", file);
!       else if (GET_CODE (x) == GE && GET_MODE (XEXP (x, 0)) == E_CCZNmode)
! 	fputs ("mi", file);
!       else
! 	fputs (cond_string (reverse_condition (GET_CODE (x))), file);
        break;
      case 'm':
        gcc_assert (GET_CODE (x) == CONST_INT);
*************** h8300_print_operand (FILE *file, rtx x,
*** 1664,1671 ****
        if (GET_CODE (x) == CONST_INT)
  	fprintf (file, "#%ld", INTVAL (x) & 0xff);
        else if (GET_CODE (x) == REG)
! 	fprintf (file, "%s",
! 		 byte_reg (x, TARGET_H8300 ? 2 : 0));
        else
  	output_operand_lossage ("Expected register or constant integer.");
        break;
--- 1576,1582 ----
        if (GET_CODE (x) == CONST_INT)
  	fprintf (file, "#%ld", INTVAL (x) & 0xff);
        else if (GET_CODE (x) == REG)
! 	fprintf (file, "%s", byte_reg (x, 0));
        else
  	output_operand_lossage ("Expected register or constant integer.");
        break;
*************** h8300_print_operand (FILE *file, rtx x,
*** 1673,1680 ****
        if (GET_CODE (x) == CONST_INT)
  	fprintf (file, "#%ld", (INTVAL (x) >> 8) & 0xff);
        else if (GET_CODE (x) == REG)
! 	fprintf (file, "%s",
! 		 byte_reg (x, TARGET_H8300 ? 3 : 1));
        else
  	output_operand_lossage ("Expected register or constant integer.");
        break;
--- 1584,1590 ----
        if (GET_CODE (x) == CONST_INT)
  	fprintf (file, "#%ld", (INTVAL (x) >> 8) & 0xff);
        else if (GET_CODE (x) == REG)
! 	fprintf (file, "%s", byte_reg (x, 1));
        else
  	output_operand_lossage ("Expected register or constant integer.");
        break;
*************** h8300_print_operand_address (FILE *file,
*** 1870,1883 ****
  
      case CONST_INT:
        {
- 	/* Since the H8/300 only has 16-bit pointers, negative values are also
- 	   those >= 32768.  This happens for example with pointer minus a
- 	   constant.  We don't want to turn (char *p - 2) into
- 	   (char *p + 65534) because loop unrolling can build upon this
- 	   (IE: char *p + 131068).  */
  	int n = INTVAL (addr);
- 	if (TARGET_H8300)
- 	  n = (int) (short) n;
  	fprintf (file, "%d", n);
  	break;
        }
--- 1780,1786 ----
*************** h8300_return_addr_rtx (int count, rtx fr
*** 2037,2108 ****
    return ret;
  }
  
- /* Update the condition code from the insn.  */
  
! void
! notice_update_cc (rtx body, rtx_insn *insn)
  {
!   rtx set;
! 
!   switch (get_attr_cc (insn))
!     {
!     case CC_NONE:
!       /* Insn does not affect CC at all.  */
!       break;
! 
!     case CC_NONE_0HIT:
!       /* Insn does not change CC, but the 0'th operand has been changed.  */
!       if (cc_status.value1 != 0
! 	  && reg_overlap_mentioned_p (recog_data.operand[0], cc_status.value1))
! 	cc_status.value1 = 0;
!       if (cc_status.value2 != 0
! 	  && reg_overlap_mentioned_p (recog_data.operand[0], cc_status.value2))
! 	cc_status.value2 = 0;
!       break;
! 
!     case CC_SET_ZN:
!       /* Insn sets the Z,N flags of CC to recog_data.operand[0].
! 	 The V flag is unusable.  The C flag may or may not be known but
! 	 that's ok because alter_cond will change tests to use EQ/NE.  */
!       CC_STATUS_INIT;
!       cc_status.flags |= CC_OVERFLOW_UNUSABLE | CC_NO_CARRY;
!       set = single_set (insn);
!       cc_status.value1 = SET_SRC (set);
!       if (SET_DEST (set) != cc0_rtx)
! 	cc_status.value2 = SET_DEST (set);
!       break;
! 
!     case CC_SET_ZNV:
!       /* Insn sets the Z,N,V flags of CC to recog_data.operand[0].
! 	 The C flag may or may not be known but that's ok because
! 	 alter_cond will change tests to use EQ/NE.  */
!       CC_STATUS_INIT;
!       cc_status.flags |= CC_NO_CARRY;
!       set = single_set (insn);
!       cc_status.value1 = SET_SRC (set);
!       if (SET_DEST (set) != cc0_rtx)
! 	{
! 	  /* If the destination is STRICT_LOW_PART, strip off
! 	     STRICT_LOW_PART.  */
! 	  if (GET_CODE (SET_DEST (set)) == STRICT_LOW_PART)
! 	    cc_status.value2 = XEXP (SET_DEST (set), 0);
! 	  else
! 	    cc_status.value2 = SET_DEST (set);
! 	}
!       break;
! 
!     case CC_COMPARE:
!       /* The insn is a compare instruction.  */
!       CC_STATUS_INIT;
!       cc_status.value1 = SET_SRC (body);
!       break;
  
!     case CC_CLOBBER:
!       /* Insn doesn't leave CC in a usable state.  */
!       CC_STATUS_INIT;
!       break;
!     }
  }
  
  /* Given that X occurs in an address of the form (plus X constant),
     return the part of X that is expected to be a register.  There are
--- 1940,1961 ----
    return ret;
  }
  
  
! machine_mode
! h8300_select_cc_mode (enum rtx_code cond, rtx op0, rtx op1)
  {
!   if (op1 == const0_rtx
!       && (cond == EQ || cond == NE || cond == LT || cond == GE)
!       && (GET_CODE (op0) == PLUS || GET_CODE (op0) == MINUS
!           || GET_CODE (op0) == NEG || GET_CODE (op0) == AND
!           || GET_CODE (op0) == IOR || GET_CODE (op0) == XOR
!           || GET_CODE (op0) == NOT || GET_CODE (op0) == ASHIFT
! 	  || GET_CODE (op0) == REG || GET_CODE (op0) == MULT))
!     return CCZNmode;
  
!   return CCmode;
  }
+ 
  
  /* Given that X occurs in an address of the form (plus X constant),
     return the part of X that is expected to be a register.  There are
*************** static unsigned int
*** 2461,2468 ****
  h8300_binary_length (rtx_insn *insn, const h8300_length_table *table)
  {
    rtx set;
  
!   set = single_set (insn);
    gcc_assert (set);
  
    if (BINARY_P (SET_SRC (set)))
--- 2314,2331 ----
  h8300_binary_length (rtx_insn *insn, const h8300_length_table *table)
  {
    rtx set;
+   rtx pattern;
  
!   if (GET_CODE (insn) != INSN)
!     gcc_unreachable ();
! 
!   pattern = PATTERN (insn);
!   if (GET_CODE (pattern) == PARALLEL
!       && GET_CODE (XVECEXP (pattern, 0, 0)) == SET
!       && GET_CODE (SET_SRC (XVECEXP (pattern, 0, 0))) == COMPARE)
!     set = XVECEXP (pattern, 0, 1);
!   else
!     set = single_set (insn);
    gcc_assert (set);
  
    if (BINARY_P (SET_SRC (set)))
*************** compute_mov_length (rtx *operands)
*** 2668,2986 ****
    else
      addr = NULL_RTX;
  
!   if (TARGET_H8300)
!     {
!       unsigned int base_length;
! 
!       switch (mode)
! 	{
! 	case E_QImode:
! 	  if (addr == NULL_RTX)
! 	    return 2;
! 
! 	  /* The eightbit addressing is available only in QImode, so
! 	     go ahead and take care of it.  */
! 	  if (h8300_eightbit_constant_address_p (addr))
! 	    return 2;
! 
! 	  base_length = 4;
! 	  break;
! 
! 	case E_HImode:
! 	  if (addr == NULL_RTX)
! 	    {
! 	      if (REG_P (src))
! 		return 2;
! 
! 	      if (src == const0_rtx)
! 		return 2;
! 
! 	      return 4;
! 	    }
! 
! 	  base_length = 4;
! 	  break;
! 
! 	case E_SImode:
! 	  if (addr == NULL_RTX)
! 	    {
! 	      if (REG_P (src))
! 		return 4;
! 
! 	      if (GET_CODE (src) == CONST_INT)
! 		{
! 		  if (src == const0_rtx)
! 		    return 4;
! 
! 		  if ((INTVAL (src) & 0xffff) == 0)
! 		    return 6;
! 
! 		  if ((INTVAL (src) & 0xffff) == 0)
! 		    return 6;
! 
! 		  if ((INTVAL (src) & 0xffff)
! 		      == ((INTVAL (src) >> 16) & 0xffff))
! 		    return 6;
! 		}
! 	      return 8;
! 	    }
! 
! 	  base_length = 8;
! 	  break;
! 
! 	case E_SFmode:
! 	  if (addr == NULL_RTX)
! 	    {
! 	      if (REG_P (src))
! 		return 4;
  
! 	      if (satisfies_constraint_G (src))
! 		return 4;
  
! 	      return 8;
! 	    }
  
  	  base_length = 8;
  	  break;
  
! 	default:
! 	  gcc_unreachable ();
! 	}
! 
!       /* Adjust the length based on the addressing mode used.
! 	 Specifically, we subtract the difference between the actual
! 	 length and the longest one, which is @(d:16,Rs).  For SImode
! 	 and SFmode, we double the adjustment because two mov.w are
! 	 used to do the job.  */
! 
!       /* @Rs+ and @-Rd are 2 bytes shorter than the longest.  */
!       if (GET_CODE (addr) == PRE_DEC
! 	  || GET_CODE (addr) == POST_INC)
! 	{
! 	  if (mode == QImode || mode == HImode)
! 	    return base_length - 2;
! 	  else
! 	    /* In SImode and SFmode, we use two mov.w instructions, so
! 	       double the adjustment.  */
! 	    return base_length - 4;
! 	}
! 
!       /* @Rs and @Rd are 2 bytes shorter than the longest.  Note that
! 	 in SImode and SFmode, the second mov.w involves an address
! 	 with displacement, namely @(2,Rs) or @(2,Rd), so we subtract
! 	 only 2 bytes.  */
!       if (GET_CODE (addr) == REG)
! 	return base_length - 2;
! 
!       return base_length;
!     }
!   else
!     {
!       unsigned int base_length;
! 
!       switch (mode)
  	{
! 	case E_QImode:
! 	  if (addr == NULL_RTX)
  	    return 2;
  
! 	  /* The eightbit addressing is available only in QImode, so
! 	     go ahead and take care of it.  */
! 	  if (h8300_eightbit_constant_address_p (addr))
  	    return 2;
  
! 	  base_length = 8;
! 	  break;
  
! 	case E_HImode:
! 	  if (addr == NULL_RTX)
! 	    {
! 	      if (REG_P (src))
! 		return 2;
  
! 	      if (src == const0_rtx)
  		return 2;
- 
- 	      return 4;
  	    }
  
! 	  base_length = 8;
! 	  break;
! 
! 	case E_SImode:
! 	  if (addr == NULL_RTX)
  	    {
! 	      if (REG_P (src))
! 		{
! 		  if (REGNO (src) == MAC_REG || REGNO (dest) == MAC_REG)
! 		    return 4;
! 		  else
! 		    return 2;
! 		}
! 
! 	      if (GET_CODE (src) == CONST_INT)
! 		{
! 		  int val = INTVAL (src);
  
! 		  if (val == 0)
! 		    return 2;
  
! 		  if (val == (val & 0x00ff) || val == (val & 0xff00))
! 		    return 4;
  
! 		  switch (val & 0xffffffff)
! 		    {
! 		    case 0xffffffff:
! 		    case 0xfffffffe:
! 		    case 0xfffffffc:
! 		    case 0x0000ffff:
! 		    case 0x0000fffe:
! 		    case 0xffff0000:
! 		    case 0xfffe0000:
! 		    case 0x00010000:
! 		    case 0x00020000:
! 		      return 4;
! 		    }
  		}
- 	      return 6;
  	    }
  
! 	  base_length = 10;
! 	  break;
  
! 	case E_SFmode:
! 	  if (addr == NULL_RTX)
! 	    {
! 	      if (REG_P (src))
! 		return 2;
  
! 	      if (satisfies_constraint_G (src))
! 		return 2;
  
! 	      return 6;
! 	    }
  
! 	  base_length = 10;
! 	  break;
  
! 	default:
! 	  gcc_unreachable ();
! 	}
  
!       /* Adjust the length based on the addressing mode used.
! 	 Specifically, we subtract the difference between the actual
! 	 length and the longest one, which is @(d:24,ERs).  */
  
!       /* @ERs+ and @-ERd are 6 bytes shorter than the longest.  */
!       if (GET_CODE (addr) == PRE_DEC
! 	  || GET_CODE (addr) == POST_INC)
! 	return base_length - 6;
  
!       /* @ERs and @ERd are 6 bytes shorter than the longest.  */
!       if (GET_CODE (addr) == REG)
! 	return base_length - 6;
  
!       /* @(d:16,ERs) and @(d:16,ERd) are 4 bytes shorter than the
! 	 longest.  */
!       if (GET_CODE (addr) == PLUS
! 	  && GET_CODE (XEXP (addr, 0)) == REG
! 	  && GET_CODE (XEXP (addr, 1)) == CONST_INT
! 	  && INTVAL (XEXP (addr, 1)) > -32768
! 	  && INTVAL (XEXP (addr, 1)) < 32767)
! 	return base_length - 4;
  
!       /* @aa:16 is 4 bytes shorter than the longest.  */
!       if (h8300_tiny_constant_address_p (addr))
! 	return base_length - 4;
  
!       /* @aa:24 is 2 bytes shorter than the longest.  */
!       if (CONSTANT_P (addr))
! 	return base_length - 2;
  
!       return base_length;
!     }
  }
  
  /* Output an addition insn.  */
  
  const char *
! output_plussi (rtx *operands)
  {
    machine_mode mode = GET_MODE (operands[0]);
  
    gcc_assert (mode == SImode);
  
!   if (TARGET_H8300)
      {
!       if (GET_CODE (operands[2]) == REG)
! 	return "add.w\t%f2,%f0\n\taddx\t%y2,%y0\n\taddx\t%z2,%z0";
  
!       if (GET_CODE (operands[2]) == CONST_INT)
! 	{
! 	  HOST_WIDE_INT n = INTVAL (operands[2]);
  
! 	  if ((n & 0xffffff) == 0)
! 	    return "add\t%z2,%z0";
! 	  if ((n & 0xffff) == 0)
! 	    return "add\t%y2,%y0\n\taddx\t%z2,%z0";
! 	  if ((n & 0xff) == 0)
! 	    return "add\t%x2,%x0\n\taddx\t%y2,%y0\n\taddx\t%z2,%z0";
! 	}
  
!       return "add\t%w2,%w0\n\taddx\t%x2,%x0\n\taddx\t%y2,%y0\n\taddx\t%z2,%z0";
!     }
!   else
!     {
!       if (GET_CODE (operands[2]) == CONST_INT
! 	  && register_operand (operands[1], VOIDmode))
  	{
! 	  HOST_WIDE_INT intval = INTVAL (operands[2]);
  
! 	  if (TARGET_H8300SX && (intval >= 1 && intval <= 7))
! 	    return "add.l\t%S2,%S0";
! 	  if (TARGET_H8300SX && (intval >= -7 && intval <= -1))
! 	    return "sub.l\t%G2,%S0";
  
! 	  /* See if we can finish with 2 bytes.  */
  
! 	  switch ((unsigned int) intval & 0xffffffff)
  	    {
- 	    case 0x00000001:
- 	    case 0x00000002:
- 	    case 0x00000004:
- 	      return "adds\t%2,%S0";
- 
- 	    case 0xffffffff:
- 	    case 0xfffffffe:
- 	    case 0xfffffffc:
- 	      return "subs\t%G2,%S0";
- 
- 	    case 0x00010000:
- 	    case 0x00020000:
  	      operands[2] = GEN_INT (intval >> 16);
  	      return "inc.w\t%2,%e0";
- 
- 	    case 0xffff0000:
- 	    case 0xfffe0000:
- 	      operands[2] = GEN_INT (intval >> 16);
- 	      return "dec.w\t%G2,%e0";
  	    }
  
! 	  /* See if we can finish with 4 bytes.  */
! 	  if ((intval & 0xffff) == 0)
  	    {
  	      operands[2] = GEN_INT (intval >> 16);
! 	      return "add.w\t%2,%e0";
  	    }
  	}
  
!       if (GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) < 0)
  	{
! 	  operands[2] = GEN_INT (-INTVAL (operands[2]));
! 	  return "sub.l\t%S2,%S0";
  	}
-       return "add.l\t%S2,%S0";
      }
  }
  
  /* ??? It would be much easier to add the h8sx stuff if a single function
--- 2531,2747 ----
    else
      addr = NULL_RTX;
  
!   unsigned int base_length;
  
!   switch (mode)
!     {
!     case E_QImode:
!       if (addr == NULL_RTX)
! 	return 2;
  
!       /* The eightbit addressing is available only in QImode, so
! 	 go ahead and take care of it.  */
!       if (h8300_eightbit_constant_address_p (addr))
! 	return 2;
  
  	  base_length = 8;
  	  break;
  
!     case E_HImode:
!       if (addr == NULL_RTX)
  	{
! 	  if (REG_P (src))
  	    return 2;
  
! 	  if (src == const0_rtx)
  	    return 2;
  
! 	  return 4;
! 	}
  
!       base_length = 8;
! 	break;
  
!     case E_SImode:
!       if (addr == NULL_RTX)
! 	{
! 	  if (REG_P (src))
! 	    {
! 	      if (REGNO (src) == MAC_REG || REGNO (dest) == MAC_REG)
! 		return 4;
! 	      else
  		return 2;
  	    }
  
! 	  if (GET_CODE (src) == CONST_INT)
  	    {
! 	      int val = INTVAL (src);
  
! 	      if (val == 0)
! 		return 2;
  
! 	      if (val == (val & 0x00ff) || val == (val & 0xff00))
! 		return 4;
  
! 	      switch (val & 0xffffffff)
! 		{
! 		case 0xffffffff:
! 		case 0xfffffffe:
! 		case 0xfffffffc:
! 		case 0x0000ffff:
! 		case 0x0000fffe:
! 		case 0xffff0000:
! 		case 0xfffe0000:
! 		case 0x00010000:
! 		case 0x00020000:
! 		  return 4;
  		}
  	    }
+ 	  return 6;
+ 	}
  
!       base_length = 10;
!       break;
  
!     case E_SFmode:
!       if (addr == NULL_RTX)
! 	{
! 	  if (REG_P (src))
!    	    return 2;
  
! 	  if (satisfies_constraint_G (src))
! 	    return 2;
  
! 	  return 6;
! 	}
  
!       base_length = 10;
! 	break;
  
!     default:
!       gcc_unreachable ();
!     }
  
!   /* Adjust the length based on the addressing mode used.
!      Specifically, we subtract the difference between the actual
!      length and the longest one, which is @(d:24,ERs).  */
  
!   /* @ERs+ and @-ERd are 6 bytes shorter than the longest.  */
!   if (GET_CODE (addr) == PRE_DEC
!       || GET_CODE (addr) == POST_INC)
!     return base_length - 6;
  
!   /* @ERs and @ERd are 6 bytes shorter than the longest.  */
!   if (GET_CODE (addr) == REG)
!     return base_length - 6;
  
!   /* @(d:16,ERs) and @(d:16,ERd) are 4 bytes shorter than the
!      longest.  */
!   if (GET_CODE (addr) == PLUS
!       && GET_CODE (XEXP (addr, 0)) == REG
!       && GET_CODE (XEXP (addr, 1)) == CONST_INT
!       && INTVAL (XEXP (addr, 1)) > -32768
!       && INTVAL (XEXP (addr, 1)) < 32767)
!     return base_length - 4;
  
!   /* @aa:16 is 4 bytes shorter than the longest.  */
!   if (h8300_tiny_constant_address_p (addr))
!     return base_length - 4;
  
!   /* @aa:24 is 2 bytes shorter than the longest.  */
!   if (CONSTANT_P (addr))
!     return base_length - 2;
  
!   return base_length;
  }
  
  /* Output an addition insn.  */
  
  const char *
! output_plussi (rtx *operands, bool need_flags)
  {
    machine_mode mode = GET_MODE (operands[0]);
  
    gcc_assert (mode == SImode);
  
!   if (GET_CODE (operands[2]) == CONST_INT
!       && register_operand (operands[1], VOIDmode))
      {
!       HOST_WIDE_INT intval = INTVAL (operands[2]);
  
!       if (TARGET_H8300SX && (intval >= 1 && intval <= 7))
! 	return "add.l\t%S2,%S0";
!       if (TARGET_H8300SX && (intval >= -7 && intval <= -1))
! 	return "sub.l\t%G2,%S0";
  
!       /* See if we can finish with 2 bytes.  */
  
!       switch ((unsigned int) intval & 0xffffffff)
  	{
! 	/* INC/DEC set the flags, but adds/subs do not.  So if we
! 	   need flags, use the former and not the latter.  */
! 	case 0x00000001:
! 	  if (need_flags)
! 	    return "inc.l\t#1,%S0";
! 	  else
! 	    return "adds\t%2,%S0";
! 	case 0x00000002:
! 	  if (need_flags)
! 	    return "inc.l\t#2,%S0";
! 	  else
! 	    return "adds\t%2,%S0";
! 	case 0xffffffff:
! 	  if (need_flags)
! 	    return "dec.l\t#1,%S0";
! 	  else
! 	    return "subs\t%G2,%S0";
! 	case 0xfffffffe:
! 	  if (need_flags)
! 	    return "dec.l\t#2,%S0";
! 	  else
! 	    return "subs\t%G2,%S0";
  
! 	/* These six cases have optimized paths when we do not
! 	   need flags.  Otherwise we let them fallthru.  */
! 	case 0x00000004:
! 	  if (!need_flags)
! 	    return "adds\t%2,%S0";
  
! 	case 0xfffffffc:
! 	  if (!need_flags)
! 	    return "subs\t%G2,%S0";
  
! 	case 0x00010000:
! 	case 0x00020000:
! 	  if (!need_flags)
  	    {
  	      operands[2] = GEN_INT (intval >> 16);
  	      return "inc.w\t%2,%e0";
  	    }
  
! 	case 0xffff0000:
! 	case 0xfffe0000:
! 	  if (!need_flags)
  	    {
  	      operands[2] = GEN_INT (intval >> 16);
! 	      return "dec.w\t%G2,%e0";
  	    }
  	}
  
!       /* See if we can finish with 4 bytes.  */
!       if ((intval & 0xffff) == 0)
  	{
! 	  operands[2] = GEN_INT (intval >> 16);
! 	  return "add.w\t%2,%e0";
  	}
      }
+ 
+   if (GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) < 0)
+     {
+       operands[2] = GEN_INT (-INTVAL (operands[2]));
+       return "sub.l\t%S2,%S0";
+     }
+   return "add.l\t%S2,%S0";
  }
  
  /* ??? It would be much easier to add the h8sx stuff if a single function
*************** output_plussi (rtx *operands)
*** 2988,3124 ****
  /* Compute the length of an addition insn.  */
  
  unsigned int
! compute_plussi_length (rtx *operands)
  {
    machine_mode mode = GET_MODE (operands[0]);
  
    gcc_assert (mode == SImode);
  
!   if (TARGET_H8300)
      {
!       if (GET_CODE (operands[2]) == REG)
! 	return 6;
  
!       if (GET_CODE (operands[2]) == CONST_INT)
! 	{
! 	  HOST_WIDE_INT n = INTVAL (operands[2]);
  
! 	  if ((n & 0xffffff) == 0)
! 	    return 2;
! 	  if ((n & 0xffff) == 0)
! 	    return 4;
! 	  if ((n & 0xff) == 0)
! 	    return 6;
! 	}
  
!       return 8;
!     }
!   else
!     {
!       if (GET_CODE (operands[2]) == CONST_INT
! 	  && register_operand (operands[1], VOIDmode))
  	{
! 	  HOST_WIDE_INT intval = INTVAL (operands[2]);
! 
! 	  if (TARGET_H8300SX && (intval >= 1 && intval <= 7))
! 	    return 2;
! 	  if (TARGET_H8300SX && (intval >= -7 && intval <= -1))
  	    return 2;
  
! 	  /* See if we can finish with 2 bytes.  */
! 
! 	  switch ((unsigned int) intval & 0xffffffff)
! 	    {
! 	    case 0x00000001:
! 	    case 0x00000002:
! 	    case 0x00000004:
! 	      return 2;
! 
! 	    case 0xffffffff:
! 	    case 0xfffffffe:
! 	    case 0xfffffffc:
! 	      return 2;
! 
! 	    case 0x00010000:
! 	    case 0x00020000:
! 	      return 2;
  
! 	    case 0xffff0000:
! 	    case 0xfffe0000:
! 	      return 2;
! 	    }
  
! 	  /* See if we can finish with 4 bytes.  */
! 	  if ((intval & 0xffff) == 0)
! 	    return 4;
  	}
  
!       if (GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) < 0)
! 	return h8300_length_from_table (operands[0],
! 					GEN_INT (-INTVAL (operands[2])),
! 					&addl_length_table);
!       else
! 	return h8300_length_from_table (operands[0], operands[2],
! 					&addl_length_table);
!       return 6;
      }
  }
  
  /* Compute which flag bits are valid after an addition insn.  */
  
! enum attr_cc
  compute_plussi_cc (rtx *operands)
  {
    machine_mode mode = GET_MODE (operands[0]);
  
    gcc_assert (mode == SImode);
  
!   if (TARGET_H8300)
!     {
!       return CC_CLOBBER;
!     }
!   else
      {
!       if (GET_CODE (operands[2]) == CONST_INT
! 	  && register_operand (operands[1], VOIDmode))
! 	{
! 	  HOST_WIDE_INT intval = INTVAL (operands[2]);
! 
! 	  if (TARGET_H8300SX && (intval >= 1 && intval <= 7))
! 	    return CC_SET_ZN;
! 	  if (TARGET_H8300SX && (intval >= -7 && intval <= -1))
! 	    return CC_SET_ZN;
  
! 	  /* See if we can finish with 2 bytes.  */
  
! 	  switch ((unsigned int) intval & 0xffffffff)
! 	    {
! 	    case 0x00000001:
! 	    case 0x00000002:
! 	    case 0x00000004:
! 	      return CC_NONE_0HIT;
  
! 	    case 0xffffffff:
! 	    case 0xfffffffe:
! 	    case 0xfffffffc:
! 	      return CC_NONE_0HIT;
  
! 	    case 0x00010000:
! 	    case 0x00020000:
! 	      return CC_CLOBBER;
  
! 	    case 0xffff0000:
! 	    case 0xfffe0000:
! 	      return CC_CLOBBER;
! 	    }
  
! 	  /* See if we can finish with 4 bytes.  */
! 	  if ((intval & 0xffff) == 0)
! 	    return CC_CLOBBER;
  	}
  
!       return CC_SET_ZN;
      }
  }
  
  /* Output a logical insn.  */
--- 2749,2865 ----
  /* Compute the length of an addition insn.  */
  
  unsigned int
! compute_plussi_length (rtx *operands, bool need_flags)
  {
    machine_mode mode = GET_MODE (operands[0]);
  
    gcc_assert (mode == SImode);
  
!   if (GET_CODE (operands[2]) == CONST_INT
!       && register_operand (operands[1], VOIDmode))
      {
!       HOST_WIDE_INT intval = INTVAL (operands[2]);
  
!       if (TARGET_H8300SX && (intval >= 1 && intval <= 7))
! 	return 2;
!       if (TARGET_H8300SX && (intval >= -7 && intval <= -1))
! 	return 2;
  
!       /* See if we can finish with 2 bytes.  */
  
!       switch ((unsigned int) intval & 0xffffffff)
  	{
! 	case 0x00000001:
! 	case 0x00000002:
! 	  return 2;
! 	case 0x00000004:
! 	  if (need_flags)
! 	    return 6;
! 	  else
  	    return 2;
  
! 	case 0xffffffff:
! 	case 0xfffffffe:
! 	  return 2;
! 	case 0xfffffffc:
! 	  if (need_flags)
! 	    return 6;
! 	  else
! 	    return 2;
  
! 	case 0x00010000:
! 	case 0x00020000:
! 	  if (!need_flags)
! 	    return 2;
  
! 	case 0xffff0000:
! 	case 0xfffe0000:
! 	  if (!need_flags)
! 	    return 2;
  	}
  
!       /* See if we can finish with 4 bytes.  */
!       if ((intval & 0xffff) == 0)
! 	return 4;
      }
+ 
+   if (GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) < 0)
+     return h8300_length_from_table (operands[0],
+ 				    GEN_INT (-INTVAL (operands[2])),
+ 				    &addl_length_table);
+   else
+     return h8300_length_from_table (operands[0], operands[2],
+ 				    &addl_length_table);
  }
  
  /* Compute which flag bits are valid after an addition insn.  */
  
! enum attr_old_cc
  compute_plussi_cc (rtx *operands)
  {
    machine_mode mode = GET_MODE (operands[0]);
  
    gcc_assert (mode == SImode);
  
!   if (GET_CODE (operands[2]) == CONST_INT
!       && register_operand (operands[1], VOIDmode))
      {
!       HOST_WIDE_INT intval = INTVAL (operands[2]);
  
!       if (TARGET_H8300SX && (intval >= 1 && intval <= 7))
! 	return OLD_CC_SET_ZN;
!       if (TARGET_H8300SX && (intval >= -7 && intval <= -1))
! 	return OLD_CC_SET_ZN;
  
!       /* See if we can finish with 2 bytes.  */
  
!       switch ((unsigned int) intval & 0xffffffff)
! 	{
! 	case 0x00000001:
! 	case 0x00000002:
! 	case 0x00000004:
! 	  return OLD_CC_NONE_0HIT;
  
! 	case 0xffffffff:
! 	case 0xfffffffe:
! 	case 0xfffffffc:
! 	  return OLD_CC_NONE_0HIT;
  
! 	case 0x00010000:
! 	case 0x00020000:
! 	  return OLD_CC_CLOBBER;
  
! 	case 0xffff0000:
! 	case 0xfffe0000:
! 	  return OLD_CC_CLOBBER;
  	}
  
!       /* See if we can finish with 4 bytes.  */
!       if ((intval & 0xffff) == 0)
! 	return OLD_CC_CLOBBER;
      }
+ 
+   return OLD_CC_SET_ZN;
  }
  
  /* Output a logical insn.  */
*************** output_logical_op (machine_mode mode, rt
*** 3143,3150 ****
    /* Break up DET into pieces.  */
    const unsigned HOST_WIDE_INT b0 = (det >>  0) & 0xff;
    const unsigned HOST_WIDE_INT b1 = (det >>  8) & 0xff;
-   const unsigned HOST_WIDE_INT b2 = (det >> 16) & 0xff;
-   const unsigned HOST_WIDE_INT b3 = (det >> 24) & 0xff;
    const unsigned HOST_WIDE_INT w0 = (det >>  0) & 0xffff;
    const unsigned HOST_WIDE_INT w1 = (det >> 16) & 0xffff;
    int lower_half_easy_p = 0;
--- 2884,2889 ----
*************** output_logical_op (machine_mode mode, rt
*** 3172,3180 ****
      {
      case E_HImode:
        /* First, see if we can finish with one insn.  */
!       if ((TARGET_H8300H || TARGET_H8300S)
! 	  && b0 != 0
! 	  && b1 != 0)
  	{
  	  sprintf (insn_buf, "%s.w\t%%T2,%%T0", opname);
  	  output_asm_insn (insn_buf, operands);
--- 2911,2917 ----
      {
      case E_HImode:
        /* First, see if we can finish with one insn.  */
!       if (b0 != 0 && b1 != 0)
  	{
  	  sprintf (insn_buf, "%s.w\t%%T2,%%T0", opname);
  	  output_asm_insn (insn_buf, operands);
*************** output_logical_op (machine_mode mode, rt
*** 3196,3219 ****
  	}
        break;
      case E_SImode:
!       if (TARGET_H8300H || TARGET_H8300S)
! 	{
! 	  /* Determine if the lower half can be taken care of in no more
! 	     than two bytes.  */
! 	  lower_half_easy_p = (b0 == 0
! 			       || b1 == 0
! 			       || (code != IOR && w0 == 0xffff));
  
! 	  /* Determine if the upper half can be taken care of in no more
! 	     than two bytes.  */
! 	  upper_half_easy_p = ((code != IOR && w1 == 0xffff)
! 			       || (code == AND && w1 == 0xff00));
! 	}
  
        /* Check if doing everything with one insn is no worse than
  	 using multiple insns.  */
!       if ((TARGET_H8300H || TARGET_H8300S)
! 	  && w0 != 0 && w1 != 0
  	  && !(lower_half_easy_p && upper_half_easy_p)
  	  && !(code == IOR && w1 == 0xffff
  	       && (w0 & 0x8000) != 0 && lower_half_easy_p))
--- 2933,2952 ----
  	}
        break;
      case E_SImode:
!       /* Determine if the lower half can be taken care of in no more
! 	 than two bytes.  */
!       lower_half_easy_p = (b0 == 0
! 			   || b1 == 0
! 			   || (code != IOR && w0 == 0xffff));
  
!        /* Determine if the upper half can be taken care of in no more
! 	  than two bytes.  */
!       upper_half_easy_p = ((code != IOR && w1 == 0xffff)
! 			   || (code == AND && w1 == 0xff00));
  
        /* Check if doing everything with one insn is no worse than
  	 using multiple insns.  */
!       if (w0 != 0 && w1 != 0
  	  && !(lower_half_easy_p && upper_half_easy_p)
  	  && !(code == IOR && w1 == 0xffff
  	       && (w0 & 0x8000) != 0 && lower_half_easy_p))
*************** output_logical_op (machine_mode mode, rt
*** 3229,3242 ****
  	     1) the special insn (in case of AND or XOR),
  	     2) the word-wise insn, and
  	     3) The byte-wise insn.  */
! 	  if (w0 == 0xffff
! 	      && (TARGET_H8300 ? (code == AND) : (code != IOR)))
  	    output_asm_insn ((code == AND)
  			     ? "sub.w\t%f0,%f0" : "not.w\t%f0",
  			     operands);
! 	  else if ((TARGET_H8300H || TARGET_H8300S)
! 		   && (b0 != 0)
! 		   && (b1 != 0))
  	    {
  	      sprintf (insn_buf, "%s.w\t%%f2,%%f0", opname);
  	      output_asm_insn (insn_buf, operands);
--- 2962,2972 ----
  	     1) the special insn (in case of AND or XOR),
  	     2) the word-wise insn, and
  	     3) The byte-wise insn.  */
! 	  if (w0 == 0xffff && (code != IOR))
  	    output_asm_insn ((code == AND)
  			     ? "sub.w\t%f0,%f0" : "not.w\t%f0",
  			     operands);
! 	  else if ((b0 != 0) && (b1 != 0))
  	    {
  	      sprintf (insn_buf, "%s.w\t%%f2,%%f0", opname);
  	      output_asm_insn (insn_buf, operands);
*************** output_logical_op (machine_mode mode, rt
*** 3255,3279 ****
  		}
  	    }
  
! 	  if ((w1 == 0xffff)
! 	      && (TARGET_H8300 ? (code == AND) : (code != IOR)))
  	    output_asm_insn ((code == AND)
  			     ? "sub.w\t%e0,%e0" : "not.w\t%e0",
  			     operands);
! 	  else if ((TARGET_H8300H || TARGET_H8300S)
! 		   && code == IOR
  		   && w1 == 0xffff
  		   && (w0 & 0x8000) != 0)
  	    {
  	      output_asm_insn ("exts.l\t%S0", operands);
  	    }
! 	  else if ((TARGET_H8300H || TARGET_H8300S)
! 		   && code == AND
  		   && w1 == 0xff00)
  	    {
  	      output_asm_insn ("extu.w\t%e0", operands);
  	    }
! 	  else if (TARGET_H8300H || TARGET_H8300S)
  	    {
  	      if (w1 != 0)
  		{
--- 2985,3006 ----
  		}
  	    }
  
! 	  if ((w1 == 0xffff) && (code != IOR))
  	    output_asm_insn ((code == AND)
  			     ? "sub.w\t%e0,%e0" : "not.w\t%e0",
  			     operands);
! 	  else if (code == IOR
  		   && w1 == 0xffff
  		   && (w0 & 0x8000) != 0)
  	    {
  	      output_asm_insn ("exts.l\t%S0", operands);
  	    }
! 	  else if (code == AND
  		   && w1 == 0xff00)
  	    {
  	      output_asm_insn ("extu.w\t%e0", operands);
  	    }
! 	  else
  	    {
  	      if (w1 != 0)
  		{
*************** output_logical_op (machine_mode mode, rt
*** 3281,3299 ****
  		  output_asm_insn (insn_buf, operands);
  		}
  	    }
- 	  else
- 	    {
- 	      if (b2 != 0)
- 		{
- 		  sprintf (insn_buf, "%s\t%%y2,%%y0", opname);
- 		  output_asm_insn (insn_buf, operands);
- 		}
- 	      if (b3 != 0)
- 		{
- 		  sprintf (insn_buf, "%s\t%%z2,%%z0", opname);
- 		  output_asm_insn (insn_buf, operands);
- 		}
- 	    }
  	}
        break;
      default:
--- 3008,3013 ----
*************** compute_logical_op_length (machine_mode
*** 3324,3331 ****
    /* Break up DET into pieces.  */
    const unsigned HOST_WIDE_INT b0 = (det >>  0) & 0xff;
    const unsigned HOST_WIDE_INT b1 = (det >>  8) & 0xff;
-   const unsigned HOST_WIDE_INT b2 = (det >> 16) & 0xff;
-   const unsigned HOST_WIDE_INT b3 = (det >> 24) & 0xff;
    const unsigned HOST_WIDE_INT w0 = (det >>  0) & 0xffff;
    const unsigned HOST_WIDE_INT w1 = (det >> 16) & 0xffff;
    int lower_half_easy_p = 0;
--- 3038,3043 ----
*************** compute_logical_op_length (machine_mode
*** 3337,3345 ****
      {
      case E_HImode:
        /* First, see if we can finish with one insn.  */
!       if ((TARGET_H8300H || TARGET_H8300S)
! 	  && b0 != 0
! 	  && b1 != 0)
  	{
  	  length = h8300_length_from_table (operands[1], operands[2],
  					    &logicw_length_table);
--- 3049,3055 ----
      {
      case E_HImode:
        /* First, see if we can finish with one insn.  */
!       if (b0 != 0 && b1 != 0)
  	{
  	  length = h8300_length_from_table (operands[1], operands[2],
  					    &logicw_length_table);
*************** compute_logical_op_length (machine_mode
*** 3356,3379 ****
  	}
        break;
      case E_SImode:
!       if (TARGET_H8300H || TARGET_H8300S)
! 	{
! 	  /* Determine if the lower half can be taken care of in no more
! 	     than two bytes.  */
! 	  lower_half_easy_p = (b0 == 0
! 			       || b1 == 0
! 			       || (code != IOR && w0 == 0xffff));
  
! 	  /* Determine if the upper half can be taken care of in no more
! 	     than two bytes.  */
! 	  upper_half_easy_p = ((code != IOR && w1 == 0xffff)
! 			       || (code == AND && w1 == 0xff00));
! 	}
  
        /* Check if doing everything with one insn is no worse than
  	 using multiple insns.  */
!       if ((TARGET_H8300H || TARGET_H8300S)
! 	  && w0 != 0 && w1 != 0
  	  && !(lower_half_easy_p && upper_half_easy_p)
  	  && !(code == IOR && w1 == 0xffff
  	       && (w0 & 0x8000) != 0 && lower_half_easy_p))
--- 3066,3085 ----
  	}
        break;
      case E_SImode:
!       /* Determine if the lower half can be taken care of in no more
! 	 than two bytes.  */
!       lower_half_easy_p = (b0 == 0
! 			   || b1 == 0
! 			   || (code != IOR && w0 == 0xffff));
  
!       /* Determine if the upper half can be taken care of in no more
! 	 than two bytes.  */
!       upper_half_easy_p = ((code != IOR && w1 == 0xffff)
! 			   || (code == AND && w1 == 0xff00));
  
        /* Check if doing everything with one insn is no worse than
  	 using multiple insns.  */
!       if (w0 != 0 && w1 != 0
  	  && !(lower_half_easy_p && upper_half_easy_p)
  	  && !(code == IOR && w1 == 0xffff
  	       && (w0 & 0x8000) != 0 && lower_half_easy_p))
*************** compute_logical_op_length (machine_mode
*** 3389,3402 ****
  	     1) the special insn (in case of AND or XOR),
  	     2) the word-wise insn, and
  	     3) The byte-wise insn.  */
! 	  if (w0 == 0xffff
! 	      && (TARGET_H8300 ? (code == AND) : (code != IOR)))
  	    {
  	      length += 2;
  	    }
! 	  else if ((TARGET_H8300H || TARGET_H8300S)
! 		   && (b0 != 0)
! 		   && (b1 != 0))
  	    {
  	      length += 4;
  	    }
--- 3095,3105 ----
  	     1) the special insn (in case of AND or XOR),
  	     2) the word-wise insn, and
  	     3) The byte-wise insn.  */
! 	  if (w0 == 0xffff && (code != IOR))
  	    {
  	      length += 2;
  	    }
! 	  else if ((b0 != 0) && (b1 != 0))
  	    {
  	      length += 4;
  	    }
*************** compute_logical_op_length (machine_mode
*** 3409,3445 ****
  		length += 2;
  	    }
  
! 	  if (w1 == 0xffff
! 	      && (TARGET_H8300 ? (code == AND) : (code != IOR)))
  	    {
  	      length += 2;
  	    }
! 	  else if ((TARGET_H8300H || TARGET_H8300S)
! 		   && code == IOR
  		   && w1 == 0xffff
  		   && (w0 & 0x8000) != 0)
  	    {
  	      length += 2;
  	    }
! 	  else if ((TARGET_H8300H || TARGET_H8300S)
! 		   && code == AND
! 		   && w1 == 0xff00)
  	    {
  	      length += 2;
  	    }
! 	  else if (TARGET_H8300H || TARGET_H8300S)
  	    {
  	      if (w1 != 0)
  		length += 4;
  	    }
- 	  else
- 	    {
- 	      if (b2 != 0)
- 		length += 2;
- 
- 	      if (b3 != 0)
- 		length += 2;
- 	    }
  	}
        break;
      default:
--- 3112,3136 ----
  		length += 2;
  	    }
  
! 	  if (w1 == 0xffff && (code != IOR))
  	    {
  	      length += 2;
  	    }
! 	  else if (code == IOR
  		   && w1 == 0xffff
  		   && (w0 & 0x8000) != 0)
  	    {
  	      length += 2;
  	    }
! 	  else if (code == AND && w1 == 0xff00)
  	    {
  	      length += 2;
  	    }
! 	  else
  	    {
  	      if (w1 != 0)
  		length += 4;
  	    }
  	}
        break;
      default:
*************** compute_logical_op_length (machine_mode
*** 3450,3456 ****
  
  /* Compute which flag bits are valid after a logical insn.  */
  
! enum attr_cc
  compute_logical_op_cc (machine_mode mode, rtx *operands)
  {
    /* Figure out the logical op that we need to perform.  */
--- 3141,3147 ----
  
  /* Compute which flag bits are valid after a logical insn.  */
  
! int
  compute_logical_op_cc (machine_mode mode, rtx *operands)
  {
    /* Figure out the logical op that we need to perform.  */
*************** compute_logical_op_cc (machine_mode mode
*** 3475,3526 ****
    int lower_half_easy_p = 0;
    int upper_half_easy_p = 0;
    /* Condition code.  */
!   enum attr_cc cc = CC_CLOBBER;
  
    switch (mode)
      {
      case E_HImode:
        /* First, see if we can finish with one insn.  */
!       if ((TARGET_H8300H || TARGET_H8300S)
! 	  && b0 != 0
! 	  && b1 != 0)
  	{
! 	  cc = CC_SET_ZNV;
  	}
        break;
      case E_SImode:
!       if (TARGET_H8300H || TARGET_H8300S)
! 	{
! 	  /* Determine if the lower half can be taken care of in no more
! 	     than two bytes.  */
! 	  lower_half_easy_p = (b0 == 0
! 			       || b1 == 0
! 			       || (code != IOR && w0 == 0xffff));
  
! 	  /* Determine if the upper half can be taken care of in no more
! 	     than two bytes.  */
! 	  upper_half_easy_p = ((code != IOR && w1 == 0xffff)
! 			       || (code == AND && w1 == 0xff00));
! 	}
  
        /* Check if doing everything with one insn is no worse than
  	 using multiple insns.  */
!       if ((TARGET_H8300H || TARGET_H8300S)
! 	  && w0 != 0 && w1 != 0
  	  && !(lower_half_easy_p && upper_half_easy_p)
  	  && !(code == IOR && w1 == 0xffff
  	       && (w0 & 0x8000) != 0 && lower_half_easy_p))
  	{
! 	  cc = CC_SET_ZNV;
  	}
        else
  	{
! 	  if ((TARGET_H8300H || TARGET_H8300S)
! 	      && code == IOR
  	      && w1 == 0xffff
  	      && (w0 & 0x8000) != 0)
  	    {
! 	      cc = CC_SET_ZNV;
  	    }
  	}
        break;
--- 3166,3210 ----
    int lower_half_easy_p = 0;
    int upper_half_easy_p = 0;
    /* Condition code.  */
!   enum attr_old_cc cc = OLD_CC_CLOBBER;
  
    switch (mode)
      {
      case E_HImode:
        /* First, see if we can finish with one insn.  */
!       if (b0 != 0 && b1 != 0)
  	{
! 	  cc = OLD_CC_SET_ZNV;
  	}
        break;
      case E_SImode:
!       /* Determine if the lower half can be taken care of in no more
! 	 than two bytes.  */
!       lower_half_easy_p = (b0 == 0
! 			   || b1 == 0
! 			   || (code != IOR && w0 == 0xffff));
  
!       /* Determine if the upper half can be taken care of in no more
!          than two bytes.  */
!       upper_half_easy_p = ((code != IOR && w1 == 0xffff)
! 			   || (code == AND && w1 == 0xff00));
  
        /* Check if doing everything with one insn is no worse than
  	 using multiple insns.  */
!       if (w0 != 0 && w1 != 0
  	  && !(lower_half_easy_p && upper_half_easy_p)
  	  && !(code == IOR && w1 == 0xffff
  	       && (w0 & 0x8000) != 0 && lower_half_easy_p))
  	{
! 	  cc = OLD_CC_SET_ZNV;
  	}
        else
  	{
! 	  if (code == IOR
  	      && w1 == 0xffff
  	      && (w0 & 0x8000) != 0)
  	    {
! 	      cc = OLD_CC_SET_ZNV;
  	    }
  	}
        break;
*************** compute_logical_op_cc (machine_mode mode
*** 3530,3535 ****
--- 3214,3220 ----
    return cc;
  }
  
+ #if 0
  /* Expand a conditional branch.  */
  
  void
*************** h8300_expand_store (rtx operands[])
*** 3569,3574 ****
--- 3254,3260 ----
    tmp = gen_rtx_fmt_ee (code, GET_MODE (dest), cc0_rtx, const0_rtx);
    emit_insn (gen_rtx_SET (dest, tmp));
  }
+ #endif
  
  /* Shifts.
  
*************** expand_a_shift (machine_mode mode, enum
*** 3716,3734 ****
        break;
      }
  
-   emit_move_insn (copy_rtx (operands[0]), operands[1]);
- 
    /* Need a loop to get all the bits we want  - we generate the
       code at emit time, but need to allocate a scratch reg now.  */
! 
!   emit_insn (gen_rtx_PARALLEL
! 	     (VOIDmode,
! 	      gen_rtvec (2,
! 			 gen_rtx_SET (copy_rtx (operands[0]),
! 				      gen_rtx_fmt_ee (code, mode,
! 						      copy_rtx (operands[0]), operands[2])),
! 			 gen_rtx_CLOBBER (VOIDmode,
! 					  gen_rtx_SCRATCH (QImode)))));
    return true;
  }
  
--- 3402,3426 ----
        break;
      }
  
    /* Need a loop to get all the bits we want  - we generate the
       code at emit time, but need to allocate a scratch reg now.  */
!   emit_move_insn (copy_rtx (operands[0]), operands[1]);
!   if (operands[2] == CONST0_RTX (QImode))
!     ;
!   else if (GET_CODE (operands[2]) == CONST_INT
!       && !h8300_shift_needs_scratch_p (INTVAL (operands[2]), mode, code))
!     emit_insn (gen_rtx_SET (copy_rtx (operands[0]),
! 			      gen_rtx_fmt_ee (code, mode,
! 					      copy_rtx (operands[1]), operands[2])));
!   else
!     emit_insn (gen_rtx_PARALLEL
! 	       (VOIDmode,
! 		gen_rtvec (2,
! 			   gen_rtx_SET (copy_rtx (operands[0]),
! 					gen_rtx_fmt_ee (code, mode,
! 							copy_rtx (operands[0]), operands[2])),
! 			   gen_rtx_CLOBBER (VOIDmode,
! 					    gen_rtx_SCRATCH (QImode)))));
    return true;
  }
  
*************** enum shift_mode
*** 3740,3752 ****
  };
  
  /* For single bit shift insns, record assembler and what bits of the
!    condition code are valid afterwards (represented as various CC_FOO
     bits, 0 means CC isn't left in a usable state).  */
  
  struct shift_insn
  {
    const char *const assembler;
!   const enum attr_cc cc_valid;
  };
  
  /* Assembler instruction shift table.
--- 3432,3444 ----
  };
  
  /* For single bit shift insns, record assembler and what bits of the
!    condition code are valid afterwards (represented as various OLD_CC_FOO
     bits, 0 means CC isn't left in a usable state).  */
  
  struct shift_insn
  {
    const char *const assembler;
!   const enum attr_old_cc cc_valid;
  };
  
  /* Assembler instruction shift table.
*************** static const struct shift_insn shift_one
*** 3760,3801 ****
    {
  /* SHIFT_ASHIFT */
      {
!       { "shll\t%X0", CC_SET_ZNV },
!       { "add.w\t%T0,%T0", CC_SET_ZN },
!       { "add.w\t%f0,%f0\n\taddx\t%y0,%y0\n\taddx\t%z0,%z0", CC_CLOBBER }
      },
  /* SHIFT_LSHIFTRT */
      {
!       { "shlr\t%X0", CC_SET_ZNV },
!       { "shlr\t%t0\n\trotxr\t%s0", CC_CLOBBER },
!       { "shlr\t%z0\n\trotxr\t%y0\n\trotxr\t%x0\n\trotxr\t%w0", CC_CLOBBER }
      },
  /* SHIFT_ASHIFTRT */
      {
!       { "shar\t%X0", CC_SET_ZNV },
!       { "shar\t%t0\n\trotxr\t%s0", CC_CLOBBER },
!       { "shar\t%z0\n\trotxr\t%y0\n\trotxr\t%x0\n\trotxr\t%w0", CC_CLOBBER }
      }
    },
  /* H8/300H */
    {
  /* SHIFT_ASHIFT */
      {
!       { "shll.b\t%X0", CC_SET_ZNV },
!       { "shll.w\t%T0", CC_SET_ZNV },
!       { "shll.l\t%S0", CC_SET_ZNV }
      },
  /* SHIFT_LSHIFTRT */
      {
!       { "shlr.b\t%X0", CC_SET_ZNV },
!       { "shlr.w\t%T0", CC_SET_ZNV },
!       { "shlr.l\t%S0", CC_SET_ZNV }
      },
  /* SHIFT_ASHIFTRT */
      {
!       { "shar.b\t%X0", CC_SET_ZNV },
!       { "shar.w\t%T0", CC_SET_ZNV },
!       { "shar.l\t%S0", CC_SET_ZNV }
      }
    }
  };
--- 3452,3493 ----
    {
  /* SHIFT_ASHIFT */
      {
!       { "shll\t%X0", OLD_CC_SET_ZNV },
!       { "add.w\t%T0,%T0", OLD_CC_SET_ZN },
!       { "add.w\t%f0,%f0\n\taddx\t%y0,%y0\n\taddx\t%z0,%z0", OLD_CC_CLOBBER }
      },
  /* SHIFT_LSHIFTRT */
      {
!       { "shlr\t%X0", OLD_CC_SET_ZNV },
!       { "shlr\t%t0\n\trotxr\t%s0", OLD_CC_CLOBBER },
!       { "shlr\t%z0\n\trotxr\t%y0\n\trotxr\t%x0\n\trotxr\t%w0", OLD_CC_CLOBBER }
      },
  /* SHIFT_ASHIFTRT */
      {
!       { "shar\t%X0", OLD_CC_SET_ZNV },
!       { "shar\t%t0\n\trotxr\t%s0", OLD_CC_CLOBBER },
!       { "shar\t%z0\n\trotxr\t%y0\n\trotxr\t%x0\n\trotxr\t%w0", OLD_CC_CLOBBER }
      }
    },
  /* H8/300H */
    {
  /* SHIFT_ASHIFT */
      {
!       { "shll.b\t%X0", OLD_CC_SET_ZNV },
!       { "shll.w\t%T0", OLD_CC_SET_ZNV },
!       { "shll.l\t%S0", OLD_CC_SET_ZNV }
      },
  /* SHIFT_LSHIFTRT */
      {
!       { "shlr.b\t%X0", OLD_CC_SET_ZNV },
!       { "shlr.w\t%T0", OLD_CC_SET_ZNV },
!       { "shlr.l\t%S0", OLD_CC_SET_ZNV }
      },
  /* SHIFT_ASHIFTRT */
      {
!       { "shar.b\t%X0", OLD_CC_SET_ZNV },
!       { "shar.w\t%T0", OLD_CC_SET_ZNV },
!       { "shar.l\t%S0", OLD_CC_SET_ZNV }
      }
    }
  };
*************** static const struct shift_insn shift_two
*** 3804,3824 ****
  {
  /* SHIFT_ASHIFT */
      {
!       { "shll.b\t#2,%X0", CC_SET_ZNV },
!       { "shll.w\t#2,%T0", CC_SET_ZNV },
!       { "shll.l\t#2,%S0", CC_SET_ZNV }
      },
  /* SHIFT_LSHIFTRT */
      {
!       { "shlr.b\t#2,%X0", CC_SET_ZNV },
!       { "shlr.w\t#2,%T0", CC_SET_ZNV },
!       { "shlr.l\t#2,%S0", CC_SET_ZNV }
      },
  /* SHIFT_ASHIFTRT */
      {
!       { "shar.b\t#2,%X0", CC_SET_ZNV },
!       { "shar.w\t#2,%T0", CC_SET_ZNV },
!       { "shar.l\t#2,%S0", CC_SET_ZNV }
      }
  };
  
--- 3496,3516 ----
  {
  /* SHIFT_ASHIFT */
      {
!       { "shll.b\t#2,%X0", OLD_CC_SET_ZNV },
!       { "shll.w\t#2,%T0", OLD_CC_SET_ZNV },
!       { "shll.l\t#2,%S0", OLD_CC_SET_ZNV }
      },
  /* SHIFT_LSHIFTRT */
      {
!       { "shlr.b\t#2,%X0", OLD_CC_SET_ZNV },
!       { "shlr.w\t#2,%T0", OLD_CC_SET_ZNV },
!       { "shlr.l\t#2,%S0", OLD_CC_SET_ZNV }
      },
  /* SHIFT_ASHIFTRT */
      {
!       { "shar.b\t#2,%X0", OLD_CC_SET_ZNV },
!       { "shar.w\t#2,%T0", OLD_CC_SET_ZNV },
!       { "shar.l\t#2,%S0", OLD_CC_SET_ZNV }
      }
  };
  
*************** struct shift_info {
*** 3914,3923 ****
    const char *shift2;
  
    /* CC status for SHIFT_INLINE.  */
!   enum attr_cc cc_inline;
  
    /* CC status  for SHIFT_SPECIAL.  */
!   enum attr_cc cc_special;
  };
  
  static void get_shift_alg (enum shift_type,
--- 3606,3615 ----
    const char *shift2;
  
    /* CC status for SHIFT_INLINE.  */
!   enum attr_old_cc cc_inline;
  
    /* CC status  for SHIFT_SPECIAL.  */
!   enum attr_old_cc cc_special;
  };
  
  static void get_shift_alg (enum shift_type,
*************** static void get_shift_alg (enum shift_ty
*** 3927,3934 ****
  /* Given SHIFT_TYPE, SHIFT_MODE, and shift count COUNT, determine the
     best algorithm for doing the shift.  The assembler code is stored
     in the pointers in INFO.  We achieve the maximum efficiency in most
!    cases when !TARGET_H8300.  In case of TARGET_H8300, shifts in
!    SImode in particular have a lot of room to optimize.
  
     We first determine the strategy of the shift algorithm by a table
     lookup.  If that tells us to use a hand crafted assembly code, we
--- 3619,3625 ----
  /* Given SHIFT_TYPE, SHIFT_MODE, and shift count COUNT, determine the
     best algorithm for doing the shift.  The assembler code is stored
     in the pointers in INFO.  We achieve the maximum efficiency in most
!    cases.
  
     We first determine the strategy of the shift algorithm by a table
     lookup.  If that tells us to use a hand crafted assembly code, we
*************** get_shift_alg (enum shift_type shift_typ
*** 3942,3951 ****
  {
    enum h8_cpu cpu;
  
!   /* Find the target CPU.  */
!   if (TARGET_H8300)
!     cpu = H8_300;
!   else if (TARGET_H8300S)
      cpu = H8_S;
    else
      cpu = H8_300H;
--- 3633,3639 ----
  {
    enum h8_cpu cpu;
  
!   if (TARGET_H8300S)
      cpu = H8_S;
    else
      cpu = H8_300H;
*************** get_shift_alg (enum shift_type shift_typ
*** 3990,3996 ****
      case SHIFT_ROT_AND:
        info->shift1 = rotate_one[cpu_type][shift_type][shift_mode];
        info->shift2 = rotate_two[shift_type][shift_mode];
!       info->cc_inline = CC_CLOBBER;
        goto end;
  
      case SHIFT_SPECIAL:
--- 3678,3684 ----
      case SHIFT_ROT_AND:
        info->shift1 = rotate_one[cpu_type][shift_type][shift_mode];
        info->shift2 = rotate_two[shift_type][shift_mode];
!       info->cc_inline = OLD_CC_CLOBBER;
        goto end;
  
      case SHIFT_SPECIAL:
*************** get_shift_alg (enum shift_type shift_typ
*** 3999,4005 ****
        info->shift1 = shift_one[cpu_type][shift_type][shift_mode].assembler;
        info->shift2 = shift_two[shift_type][shift_mode].assembler;
        info->cc_inline = shift_one[cpu_type][shift_type][shift_mode].cc_valid;
!       info->cc_special = CC_CLOBBER;
        break;
      }
  
--- 3687,3693 ----
        info->shift1 = shift_one[cpu_type][shift_type][shift_mode].assembler;
        info->shift2 = shift_two[shift_type][shift_mode].assembler;
        info->cc_inline = shift_one[cpu_type][shift_type][shift_mode].cc_valid;
!       info->cc_special = OLD_CC_CLOBBER;
        break;
      }
  
*************** get_shift_alg (enum shift_type shift_typ
*** 4019,4034 ****
  	  switch (shift_type)
  	    {
  	    case SHIFT_ASHIFT:
! 	      if (TARGET_H8300)
! 		info->special = "shar.b\t%t0\n\tmov.b\t%s0,%t0\n\trotxr.b\t%t0\n\trotr.b\t%s0\n\tand.b\t#0x80,%s0";
! 	      else
! 		info->special = "shar.b\t%t0\n\tmov.b\t%s0,%t0\n\trotxr.w\t%T0\n\tand.b\t#0x80,%s0";
  	      goto end;
  	    case SHIFT_LSHIFTRT:
! 	      if (TARGET_H8300)
! 		info->special = "shal.b\t%s0\n\tmov.b\t%t0,%s0\n\trotxl.b\t%s0\n\trotl.b\t%t0\n\tand.b\t#0x01,%t0";
! 	      else
! 		info->special = "shal.b\t%s0\n\tmov.b\t%t0,%s0\n\trotxl.w\t%T0\n\tand.b\t#0x01,%t0";
  	      goto end;
  	    case SHIFT_ASHIFTRT:
  	      info->special = "shal.b\t%s0\n\tmov.b\t%t0,%s0\n\trotxl.b\t%s0\n\tsubx\t%t0,%t0";
--- 3707,3716 ----
  	  switch (shift_type)
  	    {
  	    case SHIFT_ASHIFT:
! 	      info->special = "shar.b\t%t0\n\tmov.b\t%s0,%t0\n\trotxr.w\t%T0\n\tand.b\t#0x80,%s0";
  	      goto end;
  	    case SHIFT_LSHIFTRT:
! 	      info->special = "shal.b\t%s0\n\tmov.b\t%t0,%s0\n\trotxl.w\t%T0\n\tand.b\t#0x01,%t0";
  	      goto end;
  	    case SHIFT_ASHIFTRT:
  	      info->special = "shal.b\t%s0\n\tmov.b\t%t0,%s0\n\trotxl.b\t%s0\n\tsubx\t%t0,%t0";
*************** get_shift_alg (enum shift_type shift_typ
*** 4046,4074 ****
  	      info->special = "mov.b\t%s0,%t0\n\tsub.b\t%s0,%s0";
  	      goto end;
  	    case SHIFT_LSHIFTRT:
! 	      if (TARGET_H8300)
! 		{
! 		  info->special = "mov.b\t%t0,%s0\n\tsub.b\t%t0,%t0";
! 		  info->shift1  = "shlr.b\t%s0";
! 		  info->cc_inline = CC_SET_ZNV;
! 		}
! 	      else
! 		{
! 		  info->special = "mov.b\t%t0,%s0\n\textu.w\t%T0";
! 		  info->cc_special = CC_SET_ZNV;
! 		}
  	      goto end;
  	    case SHIFT_ASHIFTRT:
! 	      if (TARGET_H8300)
! 		{
! 		  info->special = "mov.b\t%t0,%s0\n\tbld\t#7,%s0\n\tsubx\t%t0,%t0";
! 		  info->shift1  = "shar.b\t%s0";
! 		}
! 	      else
! 		{
! 		  info->special = "mov.b\t%t0,%s0\n\texts.w\t%T0";
! 		  info->cc_special = CC_SET_ZNV;
! 		}
  	      goto end;
  	    }
  	}
--- 3728,3739 ----
  	      info->special = "mov.b\t%s0,%t0\n\tsub.b\t%s0,%s0";
  	      goto end;
  	    case SHIFT_LSHIFTRT:
! 	      info->special = "mov.b\t%t0,%s0\n\textu.w\t%T0";
! 	      info->cc_special = OLD_CC_SET_ZNV;
  	      goto end;
  	    case SHIFT_ASHIFTRT:
! 	      info->special = "mov.b\t%t0,%s0\n\texts.w\t%T0";
! 	      info->cc_special = OLD_CC_SET_ZNV;
  	      goto end;
  	    }
  	}
*************** get_shift_alg (enum shift_type shift_typ
*** 4077,4096 ****
  	  switch (shift_type)
  	    {
  	    case SHIFT_ASHIFT:
- 	      if (TARGET_H8300)
- 		info->special = "mov.b\t%s0,%t0\n\trotr.b\t%t0\n\trotr.b\t%t0\n\tand.b\t#0xC0,%t0\n\tsub.b\t%s0,%s0";
- 	      goto end;
  	    case SHIFT_LSHIFTRT:
! 	      if (TARGET_H8300)
! 		info->special = "mov.b\t%t0,%s0\n\trotl.b\t%s0\n\trotl.b\t%s0\n\tand.b\t#3,%s0\n\tsub.b\t%t0,%t0";
  	      goto end;
  	    case SHIFT_ASHIFTRT:
! 	      if (TARGET_H8300)
! 		info->special = "mov.b\t%t0,%s0\n\tshll.b\t%s0\n\tsubx.b\t%t0,%t0\n\tshll.b\t%s0\n\tmov.b\t%t0,%s0\n\tbst.b\t#0,%s0";
! 	      else if (TARGET_H8300H)
  		{
  		  info->special = "shll.b\t%t0\n\tsubx.b\t%s0,%s0\n\tshll.b\t%t0\n\trotxl.b\t%s0\n\texts.w\t%T0";
! 		  info->cc_special = CC_SET_ZNV;
  		}
  	      else /* TARGET_H8300S */
  		gcc_unreachable ();
--- 3742,3755 ----
  	  switch (shift_type)
  	    {
  	    case SHIFT_ASHIFT:
  	    case SHIFT_LSHIFTRT:
! 	      goto end;
  	      goto end;
  	    case SHIFT_ASHIFTRT:
! 	      if (TARGET_H8300H)
  		{
  		  info->special = "shll.b\t%t0\n\tsubx.b\t%s0,%s0\n\tshll.b\t%t0\n\trotxl.b\t%s0\n\texts.w\t%T0";
! 		  info->cc_special = OLD_CC_SET_ZNV;
  		}
  	      else /* TARGET_H8300S */
  		gcc_unreachable ();
*************** get_shift_alg (enum shift_type shift_typ
*** 4115,4139 ****
        gcc_unreachable ();
  
      case SIshift:
!       if (TARGET_H8300 && count >= 8 && count <= 9)
! 	{
! 	  info->remainder = count - 8;
! 
! 	  switch (shift_type)
! 	    {
! 	    case SHIFT_ASHIFT:
! 	      info->special = "mov.b\t%y0,%z0\n\tmov.b\t%x0,%y0\n\tmov.b\t%w0,%x0\n\tsub.b\t%w0,%w0";
! 	      goto end;
! 	    case SHIFT_LSHIFTRT:
! 	      info->special = "mov.b\t%x0,%w0\n\tmov.b\t%y0,%x0\n\tmov.b\t%z0,%y0\n\tsub.b\t%z0,%z0";
! 	      info->shift1  = "shlr\t%y0\n\trotxr\t%x0\n\trotxr\t%w0";
! 	      goto end;
! 	    case SHIFT_ASHIFTRT:
! 	      info->special = "mov.b\t%x0,%w0\n\tmov.b\t%y0,%x0\n\tmov.b\t%z0,%y0\n\tshll\t%z0\n\tsubx\t%z0,%z0";
! 	      goto end;
! 	    }
! 	}
!       else if (count == 8 && !TARGET_H8300)
  	{
  	  switch (shift_type)
  	    {
--- 3774,3780 ----
        gcc_unreachable ();
  
      case SIshift:
!       if (count == 8)
  	{
  	  switch (shift_type)
  	    {
*************** get_shift_alg (enum shift_type shift_typ
*** 4148,4185 ****
  	      goto end;
  	    }
  	}
!       else if (count == 15 && TARGET_H8300)
! 	{
! 	  switch (shift_type)
! 	    {
! 	    case SHIFT_ASHIFT:
! 	      gcc_unreachable ();
! 	    case SHIFT_LSHIFTRT:
! 	      info->special = "bld\t#7,%z0\n\tmov.w\t%e0,%f0\n\txor\t%y0,%y0\n\txor\t%z0,%z0\n\trotxl\t%w0\n\trotxl\t%x0\n\trotxl\t%y0";
! 	      goto end;
! 	    case SHIFT_ASHIFTRT:
! 	      info->special = "bld\t#7,%z0\n\tmov.w\t%e0,%f0\n\trotxl\t%w0\n\trotxl\t%x0\n\tsubx\t%y0,%y0\n\tsubx\t%z0,%z0";
! 	      goto end;
! 	    }
! 	}
!       else if (count == 15 && !TARGET_H8300)
  	{
  	  switch (shift_type)
  	    {
  	    case SHIFT_ASHIFT:
  	      info->special = "shlr.w\t%e0\n\tmov.w\t%f0,%e0\n\txor.w\t%f0,%f0\n\trotxr.l\t%S0";
! 	      info->cc_special = CC_SET_ZNV;
  	      goto end;
  	    case SHIFT_LSHIFTRT:
  	      info->special = "shll.w\t%f0\n\tmov.w\t%e0,%f0\n\txor.w\t%e0,%e0\n\trotxl.l\t%S0";
! 	      info->cc_special = CC_SET_ZNV;
  	      goto end;
  	    case SHIFT_ASHIFTRT:
  	      gcc_unreachable ();
  	    }
  	}
!       else if ((TARGET_H8300 && count >= 16 && count <= 20)
! 	       || (TARGET_H8300H && count >= 16 && count <= 19)
  	       || (TARGET_H8300S && count >= 16 && count <= 21))
  	{
  	  info->remainder = count - 16;
--- 3789,3811 ----
  	      goto end;
  	    }
  	}
!       else if (count == 15)
  	{
  	  switch (shift_type)
  	    {
  	    case SHIFT_ASHIFT:
  	      info->special = "shlr.w\t%e0\n\tmov.w\t%f0,%e0\n\txor.w\t%f0,%f0\n\trotxr.l\t%S0";
! 	      info->cc_special = OLD_CC_SET_ZNV;
  	      goto end;
  	    case SHIFT_LSHIFTRT:
  	      info->special = "shll.w\t%f0\n\tmov.w\t%e0,%f0\n\txor.w\t%e0,%e0\n\trotxl.l\t%S0";
! 	      info->cc_special = OLD_CC_SET_ZNV;
  	      goto end;
  	    case SHIFT_ASHIFTRT:
  	      gcc_unreachable ();
  	    }
  	}
!       else if ((TARGET_H8300H && count >= 16 && count <= 19)
  	       || (TARGET_H8300S && count >= 16 && count <= 21))
  	{
  	  info->remainder = count - 16;
*************** get_shift_alg (enum shift_type shift_typ
*** 4188,4242 ****
  	    {
  	    case SHIFT_ASHIFT:
  	      info->special = "mov.w\t%f0,%e0\n\tsub.w\t%f0,%f0";
- 	      if (TARGET_H8300)
- 		info->shift1 = "add.w\t%e0,%e0";
- 	      goto end;
- 	    case SHIFT_LSHIFTRT:
- 	      if (TARGET_H8300)
- 		{
- 		  info->special = "mov.w\t%e0,%f0\n\tsub.w\t%e0,%e0";
- 		  info->shift1  = "shlr\t%x0\n\trotxr\t%w0";
- 		}
- 	      else
- 		{
- 		  info->special = "mov.w\t%e0,%f0\n\textu.l\t%S0";
- 		  info->cc_special = CC_SET_ZNV;
- 		}
- 	      goto end;
- 	    case SHIFT_ASHIFTRT:
- 	      if (TARGET_H8300)
- 		{
- 		  info->special = "mov.w\t%e0,%f0\n\tshll\t%z0\n\tsubx\t%z0,%z0\n\tmov.b\t%z0,%y0";
- 		  info->shift1  = "shar\t%x0\n\trotxr\t%w0";
- 		}
- 	      else
- 		{
- 		  info->special = "mov.w\t%e0,%f0\n\texts.l\t%S0";
- 		  info->cc_special = CC_SET_ZNV;
- 		}
- 	      goto end;
- 	    }
- 	}
-       else if (TARGET_H8300 && count >= 24 && count <= 28)
- 	{
- 	  info->remainder = count - 24;
- 
- 	  switch (shift_type)
- 	    {
- 	    case SHIFT_ASHIFT:
- 	      info->special = "mov.b\t%w0,%z0\n\tsub.b\t%y0,%y0\n\tsub.w\t%f0,%f0";
- 	      info->shift1  = "shll.b\t%z0";
- 	      info->cc_inline = CC_SET_ZNV;
  	      goto end;
  	    case SHIFT_LSHIFTRT:
! 	      info->special = "mov.b\t%z0,%w0\n\tsub.b\t%x0,%x0\n\tsub.w\t%e0,%e0";
! 	      info->shift1  = "shlr.b\t%w0";
! 	      info->cc_inline = CC_SET_ZNV;
  	      goto end;
  	    case SHIFT_ASHIFTRT:
! 	      info->special = "mov.b\t%z0,%w0\n\tbld\t#7,%w0\n\tsubx\t%x0,%x0\n\tsubx\t%y0,%y0\n\tsubx\t%z0,%z0";
! 	      info->shift1  = "shar.b\t%w0";
! 	      info->cc_inline = CC_SET_ZNV;
  	      goto end;
  	    }
  	}
--- 3814,3827 ----
  	    {
  	    case SHIFT_ASHIFT:
  	      info->special = "mov.w\t%f0,%e0\n\tsub.w\t%f0,%f0";
  	      goto end;
  	    case SHIFT_LSHIFTRT:
! 	      info->special = "mov.w\t%e0,%f0\n\textu.l\t%S0";
! 	      info->cc_special = OLD_CC_SET_ZNV;
  	      goto end;
  	    case SHIFT_ASHIFTRT:
! 	      info->special = "mov.w\t%e0,%f0\n\texts.l\t%S0";
! 	      info->cc_special = OLD_CC_SET_ZNV;
  	      goto end;
  	    }
  	}
*************** get_shift_alg (enum shift_type shift_typ
*** 4252,4266 ****
  	      goto end;
  	    case SHIFT_LSHIFTRT:
  	      info->special = "mov.w\t%e0,%f0\n\tmov.b\t%t0,%s0\n\textu.w\t%f0\n\textu.l\t%S0";
! 	      info->cc_special = CC_SET_ZNV;
  	      goto end;
  	    case SHIFT_ASHIFTRT:
  	      info->special = "mov.w\t%e0,%f0\n\tmov.b\t%t0,%s0\n\texts.w\t%f0\n\texts.l\t%S0";
! 	      info->cc_special = CC_SET_ZNV;
  	      goto end;
  	    }
  	}
!       else if (!TARGET_H8300 && count == 28)
  	{
  	  switch (shift_type)
  	    {
--- 3837,3851 ----
  	      goto end;
  	    case SHIFT_LSHIFTRT:
  	      info->special = "mov.w\t%e0,%f0\n\tmov.b\t%t0,%s0\n\textu.w\t%f0\n\textu.l\t%S0";
! 	      info->cc_special = OLD_CC_SET_ZNV;
  	      goto end;
  	    case SHIFT_ASHIFTRT:
  	      info->special = "mov.w\t%e0,%f0\n\tmov.b\t%t0,%s0\n\texts.w\t%f0\n\texts.l\t%S0";
! 	      info->cc_special = OLD_CC_SET_ZNV;
  	      goto end;
  	    }
  	}
!       else if (count == 28)
  	{
  	  switch (shift_type)
  	    {
*************** get_shift_alg (enum shift_type shift_typ
*** 4274,4280 ****
  	      if (TARGET_H8300H)
  		{
  		  info->special = "sub.w\t%f0,%f0\n\trotl.l\t%S0\n\trotl.l\t%S0\n\trotl.l\t%S0\n\trotl.l\t%S0\n\textu.l\t%S0";
! 		  info->cc_special = CC_SET_ZNV;
  		}
  	      else
  		info->special = "sub.w\t%f0,%f0\n\trotl.l\t#2,%S0\n\trotl.l\t#2,%S0\n\textu.l\t%S0";
--- 3859,3865 ----
  	      if (TARGET_H8300H)
  		{
  		  info->special = "sub.w\t%f0,%f0\n\trotl.l\t%S0\n\trotl.l\t%S0\n\trotl.l\t%S0\n\trotl.l\t%S0\n\textu.l\t%S0";
! 		  info->cc_special = OLD_CC_SET_ZNV;
  		}
  	      else
  		info->special = "sub.w\t%f0,%f0\n\trotl.l\t#2,%S0\n\trotl.l\t#2,%S0\n\textu.l\t%S0";
*************** get_shift_alg (enum shift_type shift_typ
*** 4283,4289 ****
  	      gcc_unreachable ();
  	    }
  	}
!       else if (!TARGET_H8300 && count == 29)
  	{
  	  switch (shift_type)
  	    {
--- 3868,3874 ----
  	      gcc_unreachable ();
  	    }
  	}
!       else if (count == 29)
  	{
  	  switch (shift_type)
  	    {
*************** get_shift_alg (enum shift_type shift_typ
*** 4297,4315 ****
  	      if (TARGET_H8300H)
  		{
  		  info->special = "sub.w\t%f0,%f0\n\trotl.l\t%S0\n\trotl.l\t%S0\n\trotl.l\t%S0\n\textu.l\t%S0";
! 		  info->cc_special = CC_SET_ZNV;
  		}
  	      else
  		{
  		  info->special = "sub.w\t%f0,%f0\n\trotl.l\t#2,%S0\n\trotl.l\t%S0\n\textu.l\t%S0";
! 		  info->cc_special = CC_SET_ZNV;
  		}
  	      goto end;
  	    case SHIFT_ASHIFTRT:
  	      gcc_unreachable ();
  	    }
  	}
!       else if (!TARGET_H8300 && count == 30)
  	{
  	  switch (shift_type)
  	    {
--- 3882,3900 ----
  	      if (TARGET_H8300H)
  		{
  		  info->special = "sub.w\t%f0,%f0\n\trotl.l\t%S0\n\trotl.l\t%S0\n\trotl.l\t%S0\n\textu.l\t%S0";
! 		  info->cc_special = OLD_CC_SET_ZNV;
  		}
  	      else
  		{
  		  info->special = "sub.w\t%f0,%f0\n\trotl.l\t#2,%S0\n\trotl.l\t%S0\n\textu.l\t%S0";
! 		  info->cc_special = OLD_CC_SET_ZNV;
  		}
  	      goto end;
  	    case SHIFT_ASHIFTRT:
  	      gcc_unreachable ();
  	    }
  	}
!       else if (count == 30)
  	{
  	  switch (shift_type)
  	    {
*************** get_shift_alg (enum shift_type shift_typ
*** 4331,4368 ****
  	}
        else if (count == 31)
  	{
! 	  if (TARGET_H8300)
! 	    {
! 	      switch (shift_type)
! 		{
! 		case SHIFT_ASHIFT:
! 		  info->special = "sub.w\t%e0,%e0\n\tshlr\t%w0\n\tmov.w\t%e0,%f0\n\trotxr\t%z0";
! 		  goto end;
! 		case SHIFT_LSHIFTRT:
! 		  info->special = "sub.w\t%f0,%f0\n\tshll\t%z0\n\tmov.w\t%f0,%e0\n\trotxl\t%w0";
! 		  goto end;
! 		case SHIFT_ASHIFTRT:
! 		  info->special = "shll\t%z0\n\tsubx\t%w0,%w0\n\tmov.b\t%w0,%x0\n\tmov.w\t%f0,%e0";
! 		  goto end;
! 		}
! 	    }
! 	  else
  	    {
! 	      switch (shift_type)
! 		{
! 		case SHIFT_ASHIFT:
! 		  info->special = "shlr.l\t%S0\n\txor.l\t%S0,%S0\n\trotxr.l\t%S0";
! 		  info->cc_special = CC_SET_ZNV;
! 		  goto end;
! 		case SHIFT_LSHIFTRT:
! 		  info->special = "shll.l\t%S0\n\txor.l\t%S0,%S0\n\trotxl.l\t%S0";
! 		  info->cc_special = CC_SET_ZNV;
! 		  goto end;
! 		case SHIFT_ASHIFTRT:
! 		  info->special = "shll\t%e0\n\tsubx\t%w0,%w0\n\texts.w\t%T0\n\texts.l\t%S0";
! 		  info->cc_special = CC_SET_ZNV;
! 		  goto end;
! 		}
  	    }
  	}
        gcc_unreachable ();
--- 3916,3935 ----
  	}
        else if (count == 31)
  	{
! 	  switch (shift_type)
  	    {
! 	    case SHIFT_ASHIFT:
! 	      info->special = "shlr.l\t%S0\n\txor.l\t%S0,%S0\n\trotxr.l\t%S0";
! 	      info->cc_special = OLD_CC_SET_ZNV;
! 	      goto end;
! 	    case SHIFT_LSHIFTRT:
! 	      info->special = "shll.l\t%S0\n\txor.l\t%S0,%S0\n\trotxl.l\t%S0";
! 	      info->cc_special = OLD_CC_SET_ZNV;
! 	      goto end;
! 	    case SHIFT_ASHIFTRT:
! 	      info->special = "shll\t%e0\n\tsubx\t%w0,%w0\n\texts.w\t%T0\n\texts.l\t%S0";
! 	      info->cc_special = OLD_CC_SET_ZNV;
! 	      goto end;
  	    }
  	}
        gcc_unreachable ();
*************** get_shift_alg (enum shift_type shift_typ
*** 4380,4386 ****
     needed for some shift with COUNT and MODE.  Return 0 otherwise.  */
  
  int
! h8300_shift_needs_scratch_p (int count, machine_mode mode)
  {
    enum h8_cpu cpu;
    int a, lr, ar;
--- 3947,3953 ----
     needed for some shift with COUNT and MODE.  Return 0 otherwise.  */
  
  int
! h8300_shift_needs_scratch_p (int count, machine_mode mode, enum rtx_code type)
  {
    enum h8_cpu cpu;
    int a, lr, ar;
*************** h8300_shift_needs_scratch_p (int count,
*** 4389,4397 ****
      return 1;
  
    /* Find out the target CPU.  */
!   if (TARGET_H8300)
!     cpu = H8_300;
!   else if (TARGET_H8300S)
      cpu = H8_S;
    else
      cpu = H8_300H;
--- 3956,3962 ----
      return 1;
  
    /* Find out the target CPU.  */
!   if (TARGET_H8300S)
      cpu = H8_S;
    else
      cpu = H8_300H;
*************** h8300_shift_needs_scratch_p (int count,
*** 4422,4429 ****
      }
  
    /* On H8/300H, count == 8 uses a scratch register.  */
!   return (a == SHIFT_LOOP || lr == SHIFT_LOOP || ar == SHIFT_LOOP
! 	  || (TARGET_H8300H && mode == SImode && count == 8));
  }
  
  /* Output the assembler code for doing shifts.  */
--- 3987,4004 ----
      }
  
    /* On H8/300H, count == 8 uses a scratch register.  */
!   if (type == CLOBBER)
!     return (a == SHIFT_LOOP || lr == SHIFT_LOOP || ar == SHIFT_LOOP
! 	    || (TARGET_H8300H && mode == SImode && count == 8));
!   else if (type == ASHIFT)
!     return (a == SHIFT_LOOP
! 	    || (TARGET_H8300H && mode == SImode && count == 8));
!   else if (type == LSHIFTRT)
!     return (lr == SHIFT_LOOP
! 	    || (TARGET_H8300H && mode == SImode && count == 8));
!   else if (type == ASHIFTRT)
!     return (ar == SHIFT_LOOP
! 	    || (TARGET_H8300H && mode == SImode && count == 8));
  }
  
  /* Output the assembler code for doing shifts.  */
*************** output_a_shift (rtx *operands)
*** 4541,4547 ****
  	    break;
  
  	  case E_HImode:
- 	    gcc_assert (TARGET_H8300H || TARGET_H8300S);
  	    sprintf (insn_buf, "and.w\t#%d,%%T0", mask);
  	    break;
  
--- 4116,4121 ----
*************** compute_a_shift_length (rtx insn ATTRIBU
*** 4715,4721 ****
  		wlength += 2;
  		break;
  	      case E_SImode:
- 		gcc_assert (!TARGET_H8300);
  		wlength += 3;
  		break;
  	      default:
--- 4289,4294 ----
*************** compute_a_shift_length (rtx insn ATTRIBU
*** 4747,4753 ****
  
  /* Compute which flag bits are valid after a shift insn.  */
  
! enum attr_cc
  compute_a_shift_cc (rtx insn ATTRIBUTE_UNUSED, rtx *operands)
  {
    rtx shift = operands[3];
--- 4320,4326 ----
  
  /* Compute which flag bits are valid after a shift insn.  */
  
! int
  compute_a_shift_cc (rtx insn ATTRIBUTE_UNUSED, rtx *operands)
  {
    rtx shift = operands[3];
*************** compute_a_shift_cc (rtx insn ATTRIBUTE_U
*** 4818,4824 ****
        
      case SHIFT_ROT_AND:
        /* This case always ends with an and instruction.  */
!       return CC_SET_ZNV;
        
      case SHIFT_LOOP:
        /* A loop to shift by a "large" constant value.
--- 4391,4397 ----
        
      case SHIFT_ROT_AND:
        /* This case always ends with an and instruction.  */
!       return OLD_CC_SET_ZNV;
        
      case SHIFT_LOOP:
        /* A loop to shift by a "large" constant value.
*************** compute_a_shift_cc (rtx insn ATTRIBUTE_U
*** 4828,4834 ****
  	  if (n % 2)
  	    return info.cc_inline;
  	}
!       return CC_CLOBBER;
        
      default:
        gcc_unreachable ();
--- 4401,4407 ----
  	  if (n % 2)
  	    return info.cc_inline;
  	}
!       return OLD_CC_CLOBBER;
        
      default:
        gcc_unreachable ();
*************** output_a_rotate (enum rtx_code code, rtx
*** 4981,4988 ****
  
    /* See if a byte swap (in HImode) or a word swap (in SImode) can
       boost up the rotation.  */
!   if ((mode == HImode && TARGET_H8300 && amount >= 5)
!       || (mode == HImode && TARGET_H8300H && amount >= 6)
        || (mode == HImode && TARGET_H8300S && amount == 8)
        || (mode == SImode && TARGET_H8300H && amount >= 10)
        || (mode == SImode && TARGET_H8300S && amount >= 13))
--- 4554,4560 ----
  
    /* See if a byte swap (in HImode) or a word swap (in SImode) can
       boost up the rotation.  */
!   if ((mode == HImode && TARGET_H8300H && amount >= 6)
        || (mode == HImode && TARGET_H8300S && amount == 8)
        || (mode == SImode && TARGET_H8300H && amount >= 10)
        || (mode == SImode && TARGET_H8300S && amount >= 13))
*************** compute_a_rotate_length (rtx *operands)
*** 5055,5062 ****
  
    /* See if a byte swap (in HImode) or a word swap (in SImode) can
       boost up the rotation.  */
!   if ((mode == HImode && TARGET_H8300 && amount >= 5)
!       || (mode == HImode && TARGET_H8300H && amount >= 6)
        || (mode == HImode && TARGET_H8300S && amount == 8)
        || (mode == SImode && TARGET_H8300H && amount >= 10)
        || (mode == SImode && TARGET_H8300S && amount >= 13))
--- 4627,4633 ----
  
    /* See if a byte swap (in HImode) or a word swap (in SImode) can
       boost up the rotation.  */
!   if ((mode == HImode && TARGET_H8300H && amount >= 6)
        || (mode == HImode && TARGET_H8300S && amount == 8)
        || (mode == SImode && TARGET_H8300H && amount >= 10)
        || (mode == SImode && TARGET_H8300S && amount >= 13))
*************** compute_a_rotate_length (rtx *operands)
*** 5072,5078 ****
  
    /* The H8/300 uses three insns to rotate one bit, taking 6
       length.  */
!   length += amount * ((TARGET_H8300 && mode == HImode) ? 6 : 2);
  
    return length;
  }
--- 4643,4649 ----
  
    /* The H8/300 uses three insns to rotate one bit, taking 6
       length.  */
!   length += amount * 2;
  
    return length;
  }
*************** h8300_encode_section_info (tree decl, rt
*** 5406,5446 ****
  const char *
  output_simode_bld (int bild, rtx operands[])
  {
!   if (TARGET_H8300)
!     {
!       /* Clear the destination register.  */
!       output_asm_insn ("sub.w\t%e0,%e0\n\tsub.w\t%f0,%f0", operands);
  
!       /* Now output the bit load or bit inverse load, and store it in
! 	 the destination.  */
!       if (bild)
! 	output_asm_insn ("bild\t%Z2,%Y1", operands);
!       else
! 	output_asm_insn ("bld\t%Z2,%Y1", operands);
  
!       output_asm_insn ("bst\t#0,%w0", operands);
!     }
    else
!     {
!       /* Determine if we can clear the destination first.  */
!       int clear_first = (REG_P (operands[0]) && REG_P (operands[1])
! 			 && REGNO (operands[0]) != REGNO (operands[1]));
! 
!       if (clear_first)
! 	output_asm_insn ("sub.l\t%S0,%S0", operands);
! 
!       /* Output the bit load or bit inverse load.  */
!       if (bild)
! 	output_asm_insn ("bild\t%Z2,%Y1", operands);
!       else
! 	output_asm_insn ("bld\t%Z2,%Y1", operands);
  
!       if (!clear_first)
! 	output_asm_insn ("xor.l\t%S0,%S0", operands);
  
!       /* Perform the bit store.  */
!       output_asm_insn ("rotxl.l\t%S0", operands);
!     }
  
    /* All done.  */
    return "";
--- 4977,5000 ----
  const char *
  output_simode_bld (int bild, rtx operands[])
  {
!   /* Determine if we can clear the destination first.  */
!   int clear_first = (REG_P (operands[0]) && REG_P (operands[1])
! 		     && REGNO (operands[0]) != REGNO (operands[1]));
  
!   if (clear_first)
!     output_asm_insn ("sub.l\t%S0,%S0", operands);
  
!   /* Output the bit load or bit inverse load.  */
!   if (bild)
!     output_asm_insn ("bild\t%Z2,%Y1", operands);
    else
!     output_asm_insn ("bld\t%Z2,%Y1", operands);
  
!   if (!clear_first)
!     output_asm_insn ("xor.l\t%S0,%S0", operands);
  
!   /* Perform the bit store.  */
!   output_asm_insn ("rotxl.l\t%S0", operands);
  
    /* All done.  */
    return "";
*************** h8300_reorg (void)
*** 5457,5472 ****
      shorten_branches (get_insns ());
  }
  
- #ifndef OBJECT_FORMAT_ELF
- static void
- h8300_asm_named_section (const char *name, unsigned int flags ATTRIBUTE_UNUSED,
- 			 tree decl)
- {
-   /* ??? Perhaps we should be using default_coff_asm_named_section.  */
-   fprintf (asm_out_file, "\t.section %s\n", name);
- }
- #endif /* ! OBJECT_FORMAT_ELF */
- 
  /* Nonzero if X is a constant address suitable as an 8-bit absolute,
     which is a special case of the 'R' operand.  */
  
--- 5011,5016 ----
*************** h8300_eightbit_constant_address_p (rtx x
*** 5499,5505 ****
    addr = INTVAL (x);
  
    return (0
! 	  || ((TARGET_H8300 || TARGET_NORMAL_MODE) && IN_RANGE (addr, n1, n2))
  	  || (TARGET_H8300H && IN_RANGE (addr, h1, h2))
  	  || (TARGET_H8300S && IN_RANGE (addr, s1, s2)));
  }
--- 5043,5049 ----
    addr = INTVAL (x);
  
    return (0
! 	  || (TARGET_NORMAL_MODE && IN_RANGE (addr, n1, n2))
  	  || (TARGET_H8300H && IN_RANGE (addr, h1, h2))
  	  || (TARGET_H8300S && IN_RANGE (addr, s1, s2)));
  }
*************** h8300_legitimate_address_p (machine_mode
*** 5749,5762 ****
  static bool
  h8300_hard_regno_mode_ok (unsigned int regno, machine_mode mode)
  {
!   if (TARGET_H8300)
!     /* If an even reg, then anything goes.  Otherwise the mode must be
!        QI or HI.  */
!     return ((regno & 1) == 0) || (mode == HImode) || (mode == QImode);
!   else
!     /* MAC register can only be of SImode.  Otherwise, anything
!        goes.  */
!     return regno == MAC_REG ? mode == SImode : 1;
  }
  
  /* Implement TARGET_MODES_TIEABLE_P.  */
--- 5293,5301 ----
  static bool
  h8300_hard_regno_mode_ok (unsigned int regno, machine_mode mode)
  {
!   /* MAC register can only be of SImode.  Otherwise, anything
!      goes.  */
!   return regno == MAC_REG ? mode == SImode : 1;
  }
  
  /* Implement TARGET_MODES_TIEABLE_P.  */
*************** h8300_modes_tieable_p (machine_mode mode
*** 5767,5776 ****
    return (mode1 == mode2
  	  || ((mode1 == QImode
  	       || mode1 == HImode
! 	       || ((TARGET_H8300H || TARGET_H8300S) && mode1 == SImode))
  	      && (mode2 == QImode
  		  || mode2 == HImode
! 		  || ((TARGET_H8300H || TARGET_H8300S) && mode2 == SImode))));
  }
  
  /* Helper function for the move patterns.  Make sure a move is legitimate.  */
--- 5306,5315 ----
    return (mode1 == mode2
  	  || ((mode1 == QImode
  	       || mode1 == HImode
! 	       || mode1 == SImode)
  	      && (mode2 == QImode
  		  || mode2 == HImode
! 		  || mode2 == SImode)));
  }
  
  /* Helper function for the move patterns.  Make sure a move is legitimate.  */
*************** static bool
*** 5856,5862 ****
  h8300_return_in_memory (const_tree type, const_tree fntype ATTRIBUTE_UNUSED)
  {
    return (TYPE_MODE (type) == BLKmode
! 	  || GET_MODE_SIZE (TYPE_MODE (type)) > (TARGET_H8300 ? 4 : 8));
  }
  
  /* We emit the entire trampoline here.  Depending on the pointer size,
--- 5395,5401 ----
  h8300_return_in_memory (const_tree type, const_tree fntype ATTRIBUTE_UNUSED)
  {
    return (TYPE_MODE (type) == BLKmode
! 	  || GET_MODE_SIZE (TYPE_MODE (type)) > 8);
  }
  
  /* We emit the entire trampoline here.  Depending on the pointer size,
*************** h8300_push_rounding (poly_int64 bytes)
*** 6015,6018 ****
--- 5554,5560 ----
  #undef TARGET_HAVE_SPECULATION_SAFE_VALUE
  #define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed
  
+ #undef TARGET_FLAGS_REGNUM
+ #define TARGET_FLAGS_REGNUM 12
+ 
  struct gcc_target targetm = TARGET_INITIALIZER;
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/h8300.h gcc-11.1.0/gcc/config/h8300/h8300.h
*** gcc-10.3.0/gcc/config/h8300/h8300.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/h8300/h8300.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.
     Renesas H8/300 (generic)
!    Copyright (C) 1992-2020 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com),
     Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.
     Renesas H8/300 (generic)
!    Copyright (C) 1992-2021 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com),
     Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
  
*************** along with GCC; see the file COPYING3.
*** 23,33 ****
  #ifndef GCC_H8300_H
  #define GCC_H8300_H
  
- /* Which CPU to compile for.
-    We use int for CPU_TYPE to avoid lots of casts.  */
- #if 0 /* defined in insn-attr.h, here for documentation */
- enum attr_cpu { CPU_H8300, CPU_H8300H };
- #endif
  extern int cpu_type;
  
  /* Various globals defined in h8300.c.  */
--- 23,28 ----
*************** extern const char * const *h8_reg_names;
*** 57,63 ****
  	      builtin_define ("__NORMAL_MODE__");	\
  	    }						\
  	}						\
!       else if (TARGET_H8300H)				\
  	{						\
  	  builtin_define ("__H8300H__");		\
  	  builtin_assert ("cpu=h8300h");		\
--- 52,58 ----
  	      builtin_define ("__NORMAL_MODE__");	\
  	    }						\
  	}						\
!       else						\
  	{						\
  	  builtin_define ("__H8300H__");		\
  	  builtin_assert ("cpu=h8300h");		\
*************** extern const char * const *h8_reg_names;
*** 67,89 ****
  	      builtin_define ("__NORMAL_MODE__");	\
  	    }						\
  	}						\
-       else						\
- 	{						\
- 	  builtin_define ("__H8300__");			\
- 	  builtin_assert ("cpu=h8300");			\
- 	  builtin_assert ("machine=h8300");		\
- 	}						\
      }							\
    while (0)
  
- #define LINK_SPEC "%{mh:%{mn:-m h8300hn}} %{mh:%{!mn:-m h8300h}} %{ms:%{mn:-m h8300sn}} %{ms:%{!mn:-m h8300s}}"
- 
  #define LIB_SPEC "%{mrelax:-relax} %{g:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}"
  
  /* Macros used in the machine description to test the flags.  */
  
  /* Select between the H8/300 and H8/300H CPUs.  */
- #define TARGET_H8300	(! TARGET_H8300H && ! TARGET_H8300S)
  #define TARGET_H8300S	(TARGET_H8300S_1 || TARGET_H8300SX)
  /* Some multiply instructions are not available in all H8SX variants.
     Use this macro instead of TARGET_H8300SX to indicate this, even
--- 62,75 ----
*************** extern const char * const *h8_reg_names;
*** 116,122 ****
  /* Default target_flags if no switches specified.  */
  
  #ifndef TARGET_DEFAULT
! #define TARGET_DEFAULT (MASK_QUICKCALL)
  #endif
  
  /* We want dwarf2 info available to gdb.  */
--- 102,108 ----
  /* Default target_flags if no switches specified.  */
  
  #ifndef TARGET_DEFAULT
! #define TARGET_DEFAULT (MASK_H8300H | MASK_QUICKCALL)
  #endif
  
  /* We want dwarf2 info available to gdb.  */
*************** extern const char * const *h8_reg_names;
*** 156,162 ****
  #define MAX_BITS_PER_WORD	32
  
  /* Width of a word, in units (bytes).  */
! #define UNITS_PER_WORD		(TARGET_H8300H || TARGET_H8300S ? 4 : 2)
  #define MIN_UNITS_PER_WORD	2
  
  #define SHORT_TYPE_SIZE	16
--- 142,148 ----
  #define MAX_BITS_PER_WORD	32
  
  /* Width of a word, in units (bytes).  */
! #define UNITS_PER_WORD		4
  #define MIN_UNITS_PER_WORD	2
  
  #define SHORT_TYPE_SIZE	16
*************** extern const char * const *h8_reg_names;
*** 170,176 ****
  #define MAX_FIXED_MODE_SIZE	32
  
  /* Allocation boundary (in *bits*) for storing arguments in argument list.  */
! #define PARM_BOUNDARY (TARGET_H8300H || TARGET_H8300S ? 32 : 16)
  
  /* Allocation boundary (in *bits*) for the code of a function.  */
  #define FUNCTION_BOUNDARY 16
--- 156,162 ----
  #define MAX_FIXED_MODE_SIZE	32
  
  /* Allocation boundary (in *bits*) for storing arguments in argument list.  */
! #define PARM_BOUNDARY 32
  
  /* Allocation boundary (in *bits*) for the code of a function.  */
  #define FUNCTION_BOUNDARY 16
*************** extern const char * const *h8_reg_names;
*** 184,193 ****
  /* No data type wants to be aligned rounder than this.
     32-bit values are aligned as such on the H8/300H and H8S for speed.  */
  #define BIGGEST_ALIGNMENT \
! (((TARGET_H8300H || TARGET_H8300S) && ! TARGET_ALIGN_300) ? 32 : 16)
  
! /* The stack goes in 16/32 bit lumps.  */
! #define STACK_BOUNDARY (TARGET_H8300 ? 16 : 32)
  
  /* Define this if move instructions will actually fail to work
     when given unaligned data.  */
--- 170,179 ----
  /* No data type wants to be aligned rounder than this.
     32-bit values are aligned as such on the H8/300H and H8S for speed.  */
  #define BIGGEST_ALIGNMENT \
! ((! TARGET_ALIGN_300) ? 32 : 16)
  
! /* The stack goes in 32 bit lumps.  */
! #define STACK_BOUNDARY 32
  
  /* Define this if move instructions will actually fail to work
     when given unaligned data.  */
*************** extern const char * const *h8_reg_names;
*** 209,222 ****
     eliminated during reloading in favor of either the stack or frame
     pointer.  */
  
! #define FIRST_PSEUDO_REGISTER 12
  
  /* 1 for registers that have pervasive standard uses
     and are not available for the register allocator.  */
  
  #define FIXED_REGISTERS				\
! /* r0 r1 r2 r3 r4 r5 r6 r7 mac ap rap fp */	\
!   { 0, 0, 0, 0, 0, 0, 0, 1,  0, 1,  1, 1 }
  
  /* 1 for registers not available across function calls.
     These must include the FIXED_REGISTERS and also any
--- 195,208 ----
     eliminated during reloading in favor of either the stack or frame
     pointer.  */
  
! #define FIRST_PSEUDO_REGISTER 13
  
  /* 1 for registers that have pervasive standard uses
     and are not available for the register allocator.  */
  
  #define FIXED_REGISTERS				\
! /* r0 r1 r2 r3 r4 r5 r6 r7 mac ap rap fp cc */	\
!   { 0, 0, 0, 0, 0, 0, 0, 1,  0, 1,  1, 1, 1 }
  
  /* 1 for registers not available across function calls.
     These must include the FIXED_REGISTERS and also any
*************** extern const char * const *h8_reg_names;
*** 230,240 ****
  
  #define CALL_USED_REGISTERS			\
  /* r0 r1 r2 r3 r4 r5 r6 r7 mac ap rap fp */	\
!   { 1, 1, 1, 1, 0, 0, 0, 1,  1, 1,  1, 1 }
  
  #define REG_ALLOC_ORDER				\
  /* r0 r1 r2 r3 r4 r5 r6 r7 mac ap rap  fp */	\
!   { 2, 3, 0, 1, 4, 5, 6, 8,  7, 9, 10, 11 }
  
  /* A C expression that is nonzero if hard register NEW_REG can be
     considered for use as a rename register for OLD_REG register */
--- 216,226 ----
  
  #define CALL_USED_REGISTERS			\
  /* r0 r1 r2 r3 r4 r5 r6 r7 mac ap rap fp */	\
!   { 1, 1, 1, 1, 0, 0, 0, 1,  1, 1,  1, 1, 1 }
  
  #define REG_ALLOC_ORDER				\
  /* r0 r1 r2 r3 r4 r5 r6 r7 mac ap rap  fp */	\
!   { 2, 3, 0, 1, 4, 5, 6, 8,  7, 9, 10, 11, 12 }
  
  /* A C expression that is nonzero if hard register NEW_REG can be
     considered for use as a rename register for OLD_REG register */
*************** struct cum_arg
*** 480,487 ****
    (GET_CODE (X) == LABEL_REF || GET_CODE (X) == SYMBOL_REF	\
     || (GET_CODE (X) == CONST_INT				\
         /* We handle signed and unsigned offsets here.  */	\
!        && INTVAL (X) > (TARGET_H8300 ? -0x10000 : -0x1000000)	\
!        && INTVAL (X) < (TARGET_H8300 ? 0x10000 : 0x1000000))	\
     || (GET_CODE (X) == HIGH || GET_CODE (X) == CONST))
  
  /* The macros REG_OK_FOR..._P assume that the arg is a REG rtx
--- 466,473 ----
    (GET_CODE (X) == LABEL_REF || GET_CODE (X) == SYMBOL_REF	\
     || (GET_CODE (X) == CONST_INT				\
         /* We handle signed and unsigned offsets here.  */	\
!        && INTVAL (X) > -0x1000000				\
!        && INTVAL (X) < 0x1000000)				\
     || (GET_CODE (X) == HIGH || GET_CODE (X) == CONST))
  
  /* The macros REG_OK_FOR..._P assume that the arg is a REG rtx
*************** struct cum_arg
*** 532,540 ****
  
  /* Max number of bytes we can move from memory to memory
     in one reasonably fast instruction.  */
! #define MOVE_MAX	(TARGET_H8300H || TARGET_H8300S ? 4 : 2)
  #define MAX_MOVE_MAX	4
  
  /* Nonzero if access to memory by bytes is slow and undesirable.  */
  #define SLOW_BYTE_ACCESS TARGET_SLOWBYTE
  
--- 518,528 ----
  
  /* Max number of bytes we can move from memory to memory
     in one reasonably fast instruction.  */
! #define MOVE_MAX	4
  #define MAX_MOVE_MAX	4
  
+ #define SELECT_CC_MODE(OP, X, Y)       h8300_select_cc_mode (OP, X, Y)
+ 
  /* Nonzero if access to memory by bytes is slow and undesirable.  */
  #define SLOW_BYTE_ACCESS TARGET_SLOWBYTE
  
*************** struct cum_arg
*** 547,564 ****
     After generation of rtl, the compiler makes no further distinction
     between pointers and any other objects of this machine mode.  */
  #define Pmode								      \
!   ((TARGET_H8300H || TARGET_H8300S) && !TARGET_NORMAL_MODE ? SImode : HImode)
  
  /* ANSI C types.
     We use longs for the H8/300H and the H8S because ints can be 16 or 32.
     GCC requires SIZE_TYPE to be the same size as pointers.  */
  #define SIZE_TYPE								\
!   (TARGET_H8300 || TARGET_NORMAL_MODE ? TARGET_INT32 ? "short unsigned int" : "unsigned int" : "long unsigned int")
  #define PTRDIFF_TYPE						\
!   (TARGET_H8300 || TARGET_NORMAL_MODE ? TARGET_INT32 ? "short int" : "int" : "long int")
  
  #define POINTER_SIZE							\
!   ((TARGET_H8300H || TARGET_H8300S) && !TARGET_NORMAL_MODE ? 32 : 16)
  
  #define WCHAR_TYPE "short unsigned int"
  #define WCHAR_TYPE_SIZE 16
--- 535,552 ----
     After generation of rtl, the compiler makes no further distinction
     between pointers and any other objects of this machine mode.  */
  #define Pmode								      \
!   (!TARGET_NORMAL_MODE ? SImode : HImode)
  
  /* ANSI C types.
     We use longs for the H8/300H and the H8S because ints can be 16 or 32.
     GCC requires SIZE_TYPE to be the same size as pointers.  */
  #define SIZE_TYPE								\
!   (TARGET_NORMAL_MODE ? TARGET_INT32 ? "short unsigned int" : "unsigned int" : "long unsigned int")
  #define PTRDIFF_TYPE						\
!   (TARGET_NORMAL_MODE ? TARGET_INT32 ? "short int" : "int" : "long int")
  
  #define POINTER_SIZE							\
!   (!TARGET_NORMAL_MODE ? 32 : 16)
  
  #define WCHAR_TYPE "short unsigned int"
  #define WCHAR_TYPE_SIZE 16
*************** struct cum_arg
*** 613,619 ****
  
  /* The assembler op to get a word, 2 bytes for the H8/300, 4 for H8/300H.  */
  #define ASM_WORD_OP							\
!   (TARGET_H8300 || TARGET_NORMAL_MODE ? "\t.word\t" : "\t.long\t")
  
  #define TEXT_SECTION_ASM_OP "\t.section .text"
  #define DATA_SECTION_ASM_OP "\t.section .data"
--- 601,607 ----
  
  /* The assembler op to get a word, 2 bytes for the H8/300, 4 for H8/300H.  */
  #define ASM_WORD_OP							\
!   (TARGET_NORMAL_MODE ? "\t.word\t" : "\t.long\t")
  
  #define TEXT_SECTION_ASM_OP "\t.section .text"
  #define DATA_SECTION_ASM_OP "\t.section .data"
*************** struct cum_arg
*** 647,653 ****
     This sequence is indexed by compiler's hard-register-number (see above).  */
  
  #define REGISTER_NAMES \
! { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "sp", "mac", "ap", "rap", "fp" }
  
  #define ADDITIONAL_REGISTER_NAMES \
  { {"er0", 0}, {"er1", 1}, {"er2", 2}, {"er3", 3}, {"er4", 4}, \
--- 635,641 ----
     This sequence is indexed by compiler's hard-register-number (see above).  */
  
  #define REGISTER_NAMES \
! { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "sp", "mac", "ap", "rap", "fp", "cc" }
  
  #define ADDITIONAL_REGISTER_NAMES \
  { {"er0", 0}, {"er1", 1}, {"er2", 2}, {"er3", 3}, {"er4", 4}, \
*************** struct cum_arg
*** 659,668 ****
  #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
     ASM_OUTPUT_LABEL (FILE, NAME)
  
- /* The prefix to add to user-visible assembler symbols.  */
- 
- #define USER_LABEL_PREFIX "_"
- 
  /* This is how to store into the string LABEL
     the symbol_ref name of an internal numbered label where
     PREFIX is the class of label and NUM is the number within the class.
--- 647,652 ----
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/h8300.md gcc-11.1.0/gcc/config/h8300/h8300.md
*** gcc-10.3.0/gcc/config/h8300/h8300.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/h8300/h8300.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; GCC machine description for Renesas H8/300
! ;; Copyright (C) 1992-2020 Free Software Foundation, Inc.
  
  ;;   Contributed by Steve Chamberlain (sac@cygnus.com),
  ;;   Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
--- 1,5 ----
  ;; GCC machine description for Renesas H8/300
! ;; Copyright (C) 1992-2021 Free Software Foundation, Inc.
  
  ;;   Contributed by Steve Chamberlain (sac@cygnus.com),
  ;;   Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
***************
*** 65,71 ****
     (MAC_REG	 8)
     (AP_REG	 9)
     (RAP_REG	10)
!    (FP_REG	11)])
  
  ;; ----------------------------------------------------------------------
  ;; ATTRIBUTES
--- 65,72 ----
     (MAC_REG	 8)
     (AP_REG	 9)
     (RAP_REG	10)
!    (FP_REG	11)
!    (CC_REG	12)])
  
  ;; ----------------------------------------------------------------------
  ;; ATTRIBUTES
***************
*** 130,138 ****
  ;; compare - compare instruction
  ;; clobber - value of cc is unknown
  
! (define_attr "cc" "none,none_0hit,set_znv,set_zn,compare,clobber"
    (const_string "clobber"))
  
  ;; Type of delay slot.  NONE means the instruction has no delay slot.
  ;; JUMP means it is an unconditional jump that (if short enough)
  ;; could be implemented using bra/s.
--- 131,172 ----
  ;; compare - compare instruction
  ;; clobber - value of cc is unknown
  
! (define_attr "old_cc" "none,none_0hit,set_znv,set_zn,compare,clobber"
    (const_string "clobber"))
  
+ ;; So the idea here is to define iterators and substitutions so that we
+ ;; can easily modify the patterns with CC clobbers into a pattern
+ ;; which sets appropriate condition codes
+ 
+ ;; The modes we're supporting.  This is used when we want to generate
+ ;; multiple patterns where only the mode differs from a single template
+ (define_mode_iterator H8cc [CC CCZN])
+ 
+ ;; This is used to generate multiple define_substs from a single
+ ;; template for the different variants we might have.
+ (define_mode_attr cc [(CC "cc") (CCZN "cczn")])
+ 
+ ;; The primary substitution pattern.  <cc> is used to create multiple
+ ;; substitutions based on the CC bits that are set.
+ ;;
+ ;; The mode iterator sets the actual mode on the condition code
+ ;; REG expression.
+ (define_subst "subst_<cc>"
+   [(set (match_operand 0 "")
+ 	(match_operand 1 ""))
+    (clobber (reg:CC CC_REG))]
+   ""
+   [(set (reg:H8cc CC_REG)
+ 	(compare:H8cc (match_dup 1) (const_int 0)))
+    (set (match_dup 0) (match_dup 1))])
+ 
+ 
+ ;; So when we see <cc> or <cczn> in a define_insn pattern, we'll
+ ;; apply the subst_cczn or subset_cc define_subst to generate a
+ ;; new pattern that compare-elim can use
+ (define_subst_attr "cczn" "subst_cczn" "" "_cczn")
+ (define_subst_attr "cc" "subst_cc" "" "_cc")
+ 
  ;; Type of delay slot.  NONE means the instruction has no delay slot.
  ;; JUMP means it is an unconditional jump that (if short enough)
  ;; could be implemented using bra/s.
***************
*** 167,174 ****
  
  (define_asm_attributes
    [(set (attr "length")
! 	(cond [(match_test "TARGET_H8300") (const_int 4)
! 	       (match_test "TARGET_H8300H") (const_int 10)
  	       (match_test "TARGET_H8300S") (const_int 10)]
  	      (const_int 14)))])
  
--- 201,207 ----
  
  (define_asm_attributes
    [(set (attr "length")
! 	(cond [(match_test "TARGET_H8300H") (const_int 10)
  	       (match_test "TARGET_H8300S") (const_int 10)]
  	      (const_int 14)))])
  
***************
*** 192,5531 ****
  
  (define_mode_iterator QHSIF [QI HI SI SF])
  
  (define_code_iterator shifts [ashift ashiftrt lshiftrt])
  
  (define_code_iterator ors [ior xor])
  
! ;; ----------------------------------------------------------------------
! ;; MOVE INSTRUCTIONS
! ;; ----------------------------------------------------------------------
! 
! ;; movqi
! 
! (define_insn "*movqi_h8nosx"
!   [(set (match_operand:QI 0 "general_operand_dst" "=r,r ,<,r,r,m")
! 	(match_operand:QI 1 "general_operand_src" " I,r>,r,n,m,r"))]
!   "(TARGET_H8300 || TARGET_H8300H || TARGET_H8300S) && !TARGET_H8300SX
!     && h8300_move_ok (operands[0], operands[1])"
!   "@
!    sub.b	%X0,%X0
!    mov.b	%R1,%X0
!    mov.b	%X1,%R0
!    mov.b	%R1,%X0
!    mov.b	%R1,%X0
!    mov.b	%X1,%R0"
!   [(set (attr "length")
! 	(symbol_ref "compute_mov_length (operands)"))
!    (set_attr "cc" "set_zn,set_znv,set_znv,set_znv,set_znv,set_znv")])
! 
! (define_insn "*movqi_h8sx"
!   [(set (match_operand:QI 0 "general_operand_dst" "=Z,rQ")
! 	(match_operand:QI 1 "general_operand_src" "P4>X,rQi"))]
!   "TARGET_H8300SX"
!   "@
!     mov.b	%X1:4,%X0
!     mov.b	%X1,%X0"
!   [(set_attr "length_table" "mov_imm4,movb")
!    (set_attr "cc" "set_znv")])
! 
! (define_expand "mov<mode>"
!   [(set (match_operand:QHSIF 0 "general_operand_dst" "")
! 	(match_operand:QHSIF 1 "general_operand_src" ""))]
!   ""
!   {
!     enum machine_mode mode = <MODE>mode;
!     if (TARGET_H8300 && (mode == SImode || mode == SFmode))
!       {
! 	/* The original H8/300 needs to split up 32 bit moves.  */
! 	if (h8300_expand_movsi (operands))
! 	  DONE;
!       }
!     else if (!TARGET_H8300SX)
!       {
! 	/* Other H8 chips, except the H8/SX family can only handle a
! 	   single memory operand, which is checked by h8300_move_ok.
! 
! 	   We could perhaps have h8300_move_ok handle the H8/SX better
! 	   and just remove the !TARGET_H8300SX conditional.  */
! 	if (!h8300_move_ok (operands[0], operands[1]))
! 	  operands[1] = copy_to_mode_reg (mode, operand1);
!       }
!   })
! 
! (define_insn "movstrictqi"
!   [(set (strict_low_part (match_operand:QI 0 "general_operand_dst" "+r,r"))
! 			 (match_operand:QI 1 "general_operand_src" "I,rmi>"))]
!   ""
!   "@
!    sub.b	%X0,%X0
!    mov.b	%X1,%X0"
!   [(set_attr "length" "2,*")
!    (set_attr "length_table" "*,movb")
!    (set_attr "cc" "set_zn,set_znv")])
! 
! ;; movhi
! 
! (define_insn "*movhi_h8nosx"
!   [(set (match_operand:HI 0 "general_operand_dst" "=r,r,<,r,r,m")
! 	(match_operand:HI 1 "general_operand_src" "I,r>,r,i,m,r"))]
!   "(TARGET_H8300 || TARGET_H8300H || TARGET_H8300S) && !TARGET_H8300SX
!     && h8300_move_ok (operands[0], operands[1])"
!   "@
!    sub.w	%T0,%T0
!    mov.w	%T1,%T0
!    mov.w	%T1,%T0
!    mov.w	%T1,%T0
!    mov.w	%T1,%T0
!    mov.w	%T1,%T0"
!   [(set (attr "length")
! 	(symbol_ref "compute_mov_length (operands)"))
!    (set_attr "cc" "set_zn,set_znv,set_znv,set_znv,set_znv,set_znv")])
! 
! (define_insn "*movhi_h8sx"
!   [(set (match_operand:HI 0 "general_operand_dst" "=r,r,Z,Q,rQ")
! 	(match_operand:HI 1 "general_operand_src" "I,P3>X,P4>X,IP8>X,rQi"))]
!   "TARGET_H8300SX"
!   "@
!    sub.w	%T0,%T0
!    mov.w	%T1:3,%T0
!    mov.w	%T1:4,%T0
!    mov.w	%T1,%T0
!    mov.w	%T1,%T0"
!   [(set_attr "length_table" "*,*,mov_imm4,short_immediate,movw")
!    (set_attr "length" "2,2,*,*,*")
!    (set_attr "cc" "set_zn,set_znv,set_znv,set_znv,set_znv")])
! 
! (define_insn "movstricthi"
!   [(set (strict_low_part (match_operand:HI 0 "general_operand_dst" "+r,r,r"))
! 			 (match_operand:HI 1 "general_operand_src" "I,P3>X,rmi"))]
!   ""
!   "@
!    sub.w	%T0,%T0
!    mov.w	%T1,%T0
!    mov.w	%T1,%T0"
!   [(set_attr "length" "2,2,*")
!    (set_attr "length_table" "*,*,movw")
!    (set_attr "cc" "set_zn,set_znv,set_znv")])
! 
! ;; movsi
! 
! (define_insn "*movsi_h8300"
!   [(set (match_operand:SI 0 "general_operand_dst" "=r,r,r,o,<,r")
! 	(match_operand:SI 1 "general_operand_src" "I,r,io,r,r,>"))]
!   "TARGET_H8300
!    && h8300_move_ok (operands[0], operands[1])"
! {
!   unsigned int rn = -1;
!   switch (which_alternative)
!     {
!     case 0:
!       return "sub.w	%e0,%e0\;sub.w	%f0,%f0";
!     case 1:
!       if (REGNO (operands[0]) < REGNO (operands[1]))
! 	return "mov.w	%e1,%e0\;mov.w	%f1,%f0";
!       else
! 	return "mov.w	%f1,%f0\;mov.w	%e1,%e0";
!     case 2:
!       /* Make sure we don't trample the register we index with.  */
!       if (GET_CODE (operands[1]) == MEM)
! 	{
! 	  rtx inside = XEXP (operands[1], 0);
! 	  if (REG_P (inside))
! 	    {
! 	      rn = REGNO (inside);
! 	    }
! 	  else if (GET_CODE (inside) == PLUS)
! 	    {
! 	      rtx lhs = XEXP (inside, 0);
! 	      rtx rhs = XEXP (inside, 1);
! 	      if (REG_P (lhs)) rn = REGNO (lhs);
! 	      if (REG_P (rhs)) rn = REGNO (rhs);
! 	    }
! 	}
!       if (rn == REGNO (operands[0]))
! 	{
! 	  /* Move the second word first.  */
! 	  return "mov.w	%f1,%f0\;mov.w	%e1,%e0";
! 	}
!       else
! 	{
! 	  if (GET_CODE (operands[1]) == CONST_INT)
! 	    {
! 	      /* If either half is zero, use sub.w to clear that
! 		 half.  */
! 	      if ((INTVAL (operands[1]) & 0xffff) == 0)
! 		return "mov.w	%e1,%e0\;sub.w	%f0,%f0";
! 	      if (((INTVAL (operands[1]) >> 16) & 0xffff) == 0)
! 		return "sub.w	%e0,%e0\;mov.w	%f1,%f0";
! 	      /* If the upper half and the lower half are the same,
! 		 copy one half to the other.  */
! 	      if ((INTVAL (operands[1]) & 0xffff)
! 		  == ((INTVAL (operands[1]) >> 16) & 0xffff))
! 		return "mov.w\\t%e1,%e0\;mov.w\\t%e0,%f0";
! 	    }
! 	  return "mov.w	%e1,%e0\;mov.w	%f1,%f0";
! 	}
!     case 3:
!       return "mov.w	%e1,%e0\;mov.w	%f1,%f0";
!     case 4:
!       return "mov.w	%f1,%T0\;mov.w	%e1,%T0";
!     case 5:
!       return "mov.w	%T1,%e0\;mov.w	%T1,%f0";
!     default:
!       gcc_unreachable ();
!     }
! }
!   [(set (attr "length")
! 	(symbol_ref "compute_mov_length (operands)"))])
! 
! (define_insn "*movsi_h8300hs"
!   [(set (match_operand:SI 0 "general_operand_dst" "=r,r,r,<,r,r,m,*a,*a,r")
! 	(match_operand:SI 1 "general_operand_src" "I,r,i,r,>,m,r,I,r,*a"))]
!   "(TARGET_H8300S || TARGET_H8300H) && !TARGET_H8300SX
!     && h8300_move_ok (operands[0], operands[1])"
! {
!   switch (which_alternative)
!     {
!     case 0:
!       return "sub.l	%S0,%S0";
!     case 7:
!       return "clrmac";
!     case 8:
!       return "clrmac\;ldmac %1,macl";
!     case 9:
!       return "stmac	macl,%0";
!     default:
!       if (GET_CODE (operands[1]) == CONST_INT)
! 	{
! 	  int val = INTVAL (operands[1]);
! 
! 	  /* Look for constants which can be made by adding an 8-bit
! 	     number to zero in one of the two low bytes.  */
! 	  if (val == (val & 0xff))
! 	    {
! 	      operands[1] = GEN_INT ((char) val & 0xff);
! 	      return "sub.l\\t%S0,%S0\;add.b\\t%1,%w0";
! 	    }
! 
! 	  if (val == (val & 0xff00))
! 	    {
! 	      operands[1] = GEN_INT ((char) (val >> 8) & 0xff);
! 	      return "sub.l\\t%S0,%S0\;add.b\\t%1,%x0";
! 	    }
! 
! 	  /* Look for constants that can be obtained by subs, inc, and
! 	     dec to 0.  */
! 	  switch (val & 0xffffffff)
! 	    {
! 	    case 0xffffffff:
! 	      return "sub.l\\t%S0,%S0\;subs\\t#1,%S0";
! 	    case 0xfffffffe:
! 	      return "sub.l\\t%S0,%S0\;subs\\t#2,%S0";
! 	    case 0xfffffffc:
! 	      return "sub.l\\t%S0,%S0\;subs\\t#4,%S0";
! 
! 	    case 0x0000ffff:
! 	      return "sub.l\\t%S0,%S0\;dec.w\\t#1,%f0";
! 	    case 0x0000fffe:
! 	      return "sub.l\\t%S0,%S0\;dec.w\\t#2,%f0";
! 
! 	    case 0xffff0000:
! 	      return "sub.l\\t%S0,%S0\;dec.w\\t#1,%e0";
! 	    case 0xfffe0000:
! 	      return "sub.l\\t%S0,%S0\;dec.w\\t#2,%e0";
! 
! 	    case 0x00010000:
! 	      return "sub.l\\t%S0,%S0\;inc.w\\t#1,%e0";
! 	    case 0x00020000:
! 	      return "sub.l\\t%S0,%S0\;inc.w\\t#2,%e0";
! 	    }
! 	}
!     }
!    return "mov.l	%S1,%S0";
! }
!   [(set (attr "length")
! 	(symbol_ref "compute_mov_length (operands)"))
!    (set_attr "cc" "set_zn,set_znv,clobber,set_znv,set_znv,set_znv,set_znv,none_0hit,none_0hit,set_znv")])
! 
! (define_insn "*movsi_h8sx"
!   [(set (match_operand:SI 0 "general_operand_dst" "=r,r,Q,rQ,*a,*a,r")
! 	(match_operand:SI 1 "general_operand_src" "I,P3>X,IP8>X,rQi,I,r,*a"))]
!   "TARGET_H8300SX"
!   "@
!    sub.l	%S0,%S0
!    mov.l	%S1:3,%S0
!    mov.l	%S1,%S0
!    mov.l	%S1,%S0
!    clrmac
!    clrmac\;ldmac	%1,macl
!    stmac	macl,%0"
!   [(set_attr "length_table" "*,*,short_immediate,movl,*,*,*")
!    (set_attr "length" "2,2,*,*,2,6,4")
!    (set_attr "cc" "set_zn,set_znv,set_znv,set_znv,none_0hit,none_0hit,set_znv")])
! 
! (define_insn "*movsf_h8sx"
!   [(set (match_operand:SF 0 "general_operand_dst" "=r,rQ")
! 	(match_operand:SF 1 "general_operand_src" "G,rQi"))]
!   "TARGET_H8300SX"
!   "@
!     sub.l	%S0,%S0
!     mov.l	%S1,%S0"
!   [(set_attr "length" "2,*")
!    (set_attr "length_table" "*,movl")
!    (set_attr "cc" "set_zn,set_znv")])
! 
  (include "mova.md")
! 
! (define_insn "*movsf_h8300"
!   [(set (match_operand:SF 0 "general_operand_dst" "=r,r,r,o,<,r")
! 	(match_operand:SF 1 "general_operand_src" "G,r,io,r,r,>"))]
!   "TARGET_H8300
!    && (register_operand (operands[0], SFmode)
!        || register_operand (operands[1], SFmode))"
! {
!   /* Copy of the movsi stuff.  */
!   unsigned int rn = -1;
!   switch (which_alternative)
!     {
!     case 0:
!       return "sub.w	%e0,%e0\;sub.w	%f0,%f0";
!     case 1:
!       if (REGNO (operands[0]) < REGNO (operands[1]))
! 	return "mov.w	%e1,%e0\;mov.w	%f1,%f0";
!       else
! 	return "mov.w	%f1,%f0\;mov.w	%e1,%e0";
!     case 2:
!       /* Make sure we don't trample the register we index with.  */
!       if (GET_CODE (operands[1]) == MEM)
! 	{
! 	  rtx inside = XEXP (operands[1], 0);
! 	  if (REG_P (inside))
! 	    {
! 	      rn = REGNO (inside);
! 	    }
! 	  else if (GET_CODE (inside) == PLUS)
! 	    {
! 	      rtx lhs = XEXP (inside, 0);
! 	      rtx rhs = XEXP (inside, 1);
! 	      if (REG_P (lhs)) rn = REGNO (lhs);
! 	      if (REG_P (rhs)) rn = REGNO (rhs);
! 	    }
! 	}
!       if (rn == REGNO (operands[0]))
! 	/* Move the second word first.  */
! 	return "mov.w	%f1,%f0\;mov.w	%e1,%e0";
!       else
! 	/* Move the first word first.  */
! 	return "mov.w	%e1,%e0\;mov.w	%f1,%f0";
! 
!     case 3:
!       return "mov.w	%e1,%e0\;mov.w	%f1,%f0";
!     case 4:
!       return "mov.w	%f1,%T0\;mov.w	%e1,%T0";
!     case 5:
!       return "mov.w	%T1,%e0\;mov.w	%T1,%f0";
!     default:
!       gcc_unreachable ();
!     }
! }
!   [(set (attr "length")
! 	(symbol_ref "compute_mov_length (operands)"))])
! 
! (define_insn "*movsf_h8300hs"
!   [(set (match_operand:SF 0 "general_operand_dst" "=r,r,r,m,<,r")
! 	(match_operand:SF 1 "general_operand_src" "G,r,im,r,r,>"))]
!   "(TARGET_H8300H || TARGET_H8300S) && !TARGET_H8300SX
!     && (register_operand (operands[0], SFmode)
! 	|| register_operand (operands[1], SFmode))"
!   "@
!    sub.l	%S0,%S0
!    mov.l	%S1,%S0
!    mov.l	%S1,%S0
!    mov.l	%S1,%S0
!    mov.l	%S1,%S0
!    mov.l	%S1,%S0"
!   [(set (attr "length")
! 	(symbol_ref "compute_mov_length (operands)"))
!    (set_attr "cc" "set_zn,set_znv,set_znv,set_znv,set_znv,set_znv")])
! 
! ;; ----------------------------------------------------------------------
! ;; PUSH INSTRUCTIONS
! ;; ----------------------------------------------------------------------
! 
! (define_insn "*pushqi1_h8300"
!   [(set (mem:QI
! 	(pre_modify:HI
! 	  (reg:HI SP_REG)
! 	  (plus:HI (reg:HI SP_REG) (const_int -2))))
! 	(match_operand:QI 0 "register_no_sp_elim_operand" "r"))]
!   "TARGET_H8300"
!   "mov.w\\t%T0,@-r7"
!   [(set_attr "length" "2")])
! 
! (define_insn "*push1_h8300hs_<QHI:mode>"
!   [(set (mem:QHI
! 	(pre_modify:P
! 	  (reg:P SP_REG)
! 	  (plus:P (reg:P SP_REG) (const_int -4))))
! 	(match_operand:QHI 0 "register_no_sp_elim_operand" "r"))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "mov.l\\t%S0,@-er7"
!   [(set_attr "length" "4")])
! 
! 
! ;; ----------------------------------------------------------------------
! ;; TEST INSTRUCTIONS
! ;; ----------------------------------------------------------------------
! 
! (define_insn ""
!   [(set (cc0)
! 	(compare (zero_extract:QI (match_operand:QI 0 "bit_memory_operand" "r,U")
! 				  (const_int 1)
! 				  (match_operand 1 "const_int_operand" "n,n"))
! 		 (const_int 0)))]
!   "TARGET_H8300"
!   "btst	%Z1,%Y0"
!   [(set_attr "length" "2,4")
!    (set_attr "cc" "set_zn,set_zn")])
! 
! (define_insn_and_split "*tst_extzv_1_n"
!   [(set (cc0)
! 	(compare (zero_extract:SI (match_operand:QI 0 "general_operand_src" "r,U,mn>")
! 				  (const_int 1)
! 				  (match_operand 1 "const_int_operand" "n,n,n"))
! 		 (const_int 0)))
!    (clobber (match_scratch:QI 2 "=X,X,&r"))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "@
!    btst\\t%Z1,%Y0
!    btst\\t%Z1,%Y0
!    #"
!   "&& reload_completed
!    && !satisfies_constraint_U (operands[0])"
!   [(set (match_dup 2)
! 	(match_dup 0))
!    (parallel [(set (cc0) (compare (zero_extract:SI (match_dup 2)
! 						   (const_int 1)
! 						   (match_dup 1))
! 				  (const_int 0)))
! 	      (clobber (scratch:QI))])]
!   ""
!   [(set_attr "length" "2,8,10")
!    (set_attr "cc" "set_zn,set_zn,set_zn")])
! 
! (define_insn ""
!   [(set (cc0)
! 	(compare (zero_extract:HSI (match_operand:HSI 0 "register_operand" "r")
! 				   (const_int 1)
! 				   (match_operand 1 "const_int_operand" "n"))
! 		 (const_int 0)))]
!   "(TARGET_H8300 || TARGET_H8300H || TARGET_H8300S)
!     && INTVAL (operands[1]) <= 15"
!   "btst	%Z1,%Y0"
!   [(set_attr "length" "2")
!    (set_attr "cc" "set_zn")])
! 
! (define_insn_and_split "*tstsi_upper_bit"
!   [(set (cc0)
! 	(compare (zero_extract:SI (match_operand:SI 0 "register_operand" "r")
! 				  (const_int 1)
! 				  (match_operand 1 "const_int_operand" "n"))
! 		 (const_int 0)))
!    (clobber (match_scratch:SI 2 "=&r"))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && INTVAL (operands[1]) >= 16"
!   "#"
!   "&& reload_completed"
!   [(set (match_dup 2)
! 	(ior:SI (and:SI (match_dup 2)
! 			(const_int -65536))
! 		(lshiftrt:SI (match_dup 0)
! 			     (const_int 16))))
!    (set (cc0)
! 	(compare (zero_extract:SI (match_dup 2)
! 				  (const_int 1)
! 				  (match_dup 3))
! 		 (const_int 0)))]
!   {
!     operands[3] = GEN_INT (INTVAL (operands[1]) - 16);
!   })
! 
! (define_insn "*tstsi_variable_bit"
!   [(set (cc0)
! 	(compare (zero_extract:SI (match_operand:SI 0 "register_operand" "r")
! 				  (const_int 1)
! 				  (and:SI (match_operand:SI 1 "register_operand" "r")
! 					  (const_int 7)))
! 		 (const_int 0)))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "btst	%w1,%w0"
!   [(set_attr "length" "2")
!    (set_attr "cc" "set_zn")])
! 
! (define_insn_and_split "*tstsi_variable_bit_qi"
!   [(set (cc0)
! 	(compare (zero_extract:SI (zero_extend:SI (match_operand:QI 0 "general_operand_src" "r,U,mn>"))
! 				  (const_int 1)
! 				  (and:SI (match_operand:SI 1 "register_operand" "r,r,r")
! 					  (const_int 7)))
! 		 (const_int 0)))
!    (clobber (match_scratch:QI 2 "=X,X,&r"))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "@
!    btst\\t%w1,%X0
!    btst\\t%w1,%X0
!    #"
!   "&& reload_completed
!    && !satisfies_constraint_U (operands[0])"
!   [(set (match_dup 2)
! 	(match_dup 0))
!    (parallel [(set (cc0)
! 		   (compare (zero_extract:SI (zero_extend:SI (match_dup 2))
! 					     (const_int 1)
! 					     (and:SI (match_dup 1)
! 						     (const_int 7)))
! 			    (const_int 0)))
! 	      (clobber (scratch:QI))])]
!   ""
!   [(set_attr "length" "2,8,10")
!    (set_attr "cc" "set_zn,set_zn,set_zn")])
! 
! (define_insn "*tst<mode>"
!   [(set (cc0)
! 	(compare (match_operand:QHI 0 "register_operand" "r")
! 		 (const_int 0)))]
!   ""
!   {
!     if (<MODE>mode == QImode)
!       return "mov.b	%X0,%X0";
!     else if (<MODE>mode == HImode)
!       return "mov.w	%T0,%T0";
!     gcc_unreachable ();
!   }
!   [(set_attr "length" "2")
!    (set_attr "cc" "set_znv")])
! 
! (define_insn "*tsthi_upper"
!   [(set (cc0)
! 	(compare (and:HI (match_operand:HI 0 "register_operand" "r")
! 			 (const_int -256))
! 		 (const_int 0)))]
!   ""
!   "mov.b	%t0,%t0"
!   [(set_attr "length" "2")
!    (set_attr "cc" "set_znv")])
! 
! (define_insn "*tstsi"
!   [(set (cc0)
! 	(compare (match_operand:SI 0 "register_operand" "r")
! 		 (const_int 0)))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "mov.l	%S0,%S0"
!   [(set_attr "length" "2")
!    (set_attr "cc" "set_znv")])
! 
! (define_insn "*tstsi_upper"
!   [(set (cc0)
! 	(compare (and:SI (match_operand:SI 0 "register_operand" "r")
! 			 (const_int -65536))
! 		 (const_int 0)))]
!   ""
!   "mov.w	%e0,%e0"
!   [(set_attr "length" "2")
!    (set_attr "cc" "set_znv")])
! 
! (define_insn "*cmpqi"
!   [(set (cc0)
! 	(compare (match_operand:QI 0 "h8300_dst_operand" "rQ")
! 		 (match_operand:QI 1 "h8300_src_operand" "rQi")))]
!   ""
!   "cmp.b	%X1,%X0"
!   [(set_attr "length_table" "add")
!    (set_attr "cc" "compare")])
! 
! (define_insn "*cmphi_h8300_znvc"
!   [(set (cc0)
! 	(compare (match_operand:HI 0 "register_operand" "r")
! 		 (match_operand:HI 1 "register_operand" "r")))]
!   "TARGET_H8300"
!   "cmp.w	%T1,%T0"
!   [(set_attr "length" "2")
!    (set_attr "cc" "compare")])
! 
! (define_insn "*cmphi_h8300hs_znvc"
!   [(set (cc0)
! 	(compare (match_operand:HI 0 "h8300_dst_operand" "rU,rQ")
! 		 (match_operand:HI 1 "h8300_src_operand" "P3>X,rQi")))]
!   "TARGET_H8300H || TARGET_H8300S"
! {
!   switch (which_alternative)
!     {
!     case 0:
!       if (!TARGET_H8300SX)
! 	return "cmp.w	%T1,%T0";
!       else
! 	return "cmp.w	%T1:3,%T0";
!     case 1:
!       return "cmp.w	%T1,%T0";
!     default:
!       gcc_unreachable ();
!       }
! }
!   [(set_attr "length_table" "short_immediate,add")
!    (set_attr "cc" "compare,compare")])
! 
! (define_insn "cmpsi"
!   [(set (cc0)
! 	(compare (match_operand:SI 0 "h8300_dst_operand" "r,rQ")
! 		 (match_operand:SI 1 "h8300_src_operand" "P3>X,rQi")))]
!   "TARGET_H8300H || TARGET_H8300S"
! {
!   switch (which_alternative)
!     {
!     case 0:
!       if (!TARGET_H8300SX)
! 	return "cmp.l	%S1,%S0";
!       else
! 	return "cmp.l	%S1:3,%S0";
!     case 1:
!       return "cmp.l	%S1,%S0";
!     default:
!       gcc_unreachable ();
!     }
! }
!   [(set_attr "length" "2,*")
!    (set_attr "length_table" "*,add")
!    (set_attr "cc" "compare,compare")])
! 
! ;; ----------------------------------------------------------------------
! ;; ADD INSTRUCTIONS
! ;; ----------------------------------------------------------------------
! 
! (define_expand "add<mode>3"
!   [(set (match_operand:QHSI 0 "register_operand" "")
! 	(plus:QHSI (match_operand:QHSI 1 "register_operand" "")
! 		   (match_operand:QHSI 2 "h8300_src_operand" "")))]
!   ""
!   "")
! 
! (define_insn "*addqi3"
!   [(set (match_operand:QI 0 "h8300_dst_operand" "=rQ")
! 	(plus:QI (match_operand:QI 1 "h8300_dst_operand" "%0")
! 		 (match_operand:QI 2 "h8300_src_operand" "rQi")))]
!   "h8300_operands_match_p (operands)"
!   "add.b	%X2,%X0"
!   [(set_attr "length_table" "add")
!    (set_attr "cc" "set_zn")])
! 
! (define_insn "*addhi3_h8300"
!   [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r")
! 	(plus:HI (match_operand:HI 1 "register_operand" "%0,0,0,0,0")
! 		 (match_operand:HI 2 "h8300_src_operand" "L,N,J,n,r")))]
!   "TARGET_H8300"
!   "@
!    adds	%2,%T0
!    subs	%G2,%T0
!    add.b	%t2,%t0
!    add.b	%s2,%s0\;addx	%t2,%t0
!    add.w	%T2,%T0"
!   [(set_attr "length" "2,2,2,4,2")
!    (set_attr "cc" "none_0hit,none_0hit,clobber,clobber,set_zn")])
! 
! ;; This splitter is very important to make the stack adjustment
! ;; interrupt-safe.  The combination of add.b and addx is unsafe!
! ;;
! ;; We apply this split after the peephole2 pass so that we won't end
! ;; up creating too many adds/subs when a scratch register is
! ;; available, which is actually a common case because stack unrolling
! ;; tends to happen immediately after a function call.
! 
! (define_split
!   [(set (match_operand:HI 0 "stack_pointer_operand" "")
! 	(plus:HI (match_dup 0)
! 		 (match_operand 1 "const_int_gt_2_operand" "")))]
!   "TARGET_H8300 && epilogue_completed"
!   [(const_int 0)]
!   {
!     split_adds_subs (HImode, operands);
!     DONE;
!   })
! 
! (define_peephole2
!   [(match_scratch:HI 2 "r")
!    (set (match_operand:HI 0 "stack_pointer_operand" "")
! 	(plus:HI (match_dup 0)
! 		 (match_operand:HI 1 "const_int_ge_8_operand" "")))]
!   "TARGET_H8300"
!   [(set (match_dup 2)
! 	(match_dup 1))
!    (set (match_dup 0)
! 	(plus:HI (match_dup 0)
! 		 (match_dup 2)))]
!   "")
! 
! (define_insn "*addhi3_h8300hs"
!   [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r")
! 	(plus:HI (match_operand:HI 1 "register_operand" "%0,0,0,0,0")
! 		 (match_operand:HI 2 "h8300_src_operand" "L,N,J,n,r")))]
!   "(TARGET_H8300H || TARGET_H8300S) && !TARGET_H8300SX"
!   "@
!    adds	%2,%S0
!    subs	%G2,%S0
!    add.b	%t2,%t0
!    add.w	%T2,%T0
!    add.w	%T2,%T0"
!   [(set_attr "length" "2,2,2,4,2")
!    (set_attr "cc" "none_0hit,none_0hit,clobber,set_zn,set_zn")])
! 
! (define_insn "*add<mode>3_incdec"
!   [(set (match_operand:HSI 0 "register_operand" "=r,r")
! 	(unspec:HSI [(match_operand:HSI 1 "register_operand" "0,0")
! 		     (match_operand:HSI 2 "incdec_operand" "M,O")]
! 		    UNSPEC_INCDEC))]
!   "TARGET_H8300H || TARGET_H8300S"
!   {
!     if (which_alternative == 0)
!       return <MODE>mode == HImode ? "inc.w\t%2,%T0" : "inc.l\t%2,%S0";
!     else if (which_alternative == 1)
!       return <MODE>mode == HImode ? "dec.w\t%G2,%T0" : "dec.l\t%G2,%S0";
!     gcc_unreachable ();
!    }
!   [(set_attr "length" "2,2")
!    (set_attr "cc" "set_zn,set_zn")])
! 
! (define_insn "*addhi3_h8sx"
!   [(set (match_operand:HI 0 "h8300_dst_operand" "=rU,rU,r,rQ")
! 	(plus:HI (match_operand:HI 1 "h8300_dst_operand" "%0,0,0,0")
! 		 (match_operand:HI 2 "h8300_src_operand" "P3>X,P3<X,J,rQi")))]
!   "TARGET_H8300SX && h8300_operands_match_p (operands)"
!   "@
!    add.w	%T2:3,%T0
!    sub.w	%G2:3,%T0
!    add.b	%t2,%t0
!    add.w	%T2,%T0"
!   [(set_attr "length_table" "short_immediate,short_immediate,*,add")
!    (set_attr "length" "*,*,2,*")
!    (set_attr "cc" "set_zn")])
! 
! (define_split
!   [(set (match_operand:HI 0 "register_operand" "")
! 	(plus:HI (match_dup 0)
! 		 (match_operand:HI 1 "two_insn_adds_subs_operand" "")))]
!   ""
!   [(const_int 0)]
!   {
!     split_adds_subs (HImode, operands);
!     DONE;
!   })
! 
! 
! (define_insn "*addsi_h8300"
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
! 	(plus:SI (match_operand:SI 1 "register_operand" "%0,0")
! 		 (match_operand:SI 2 "h8300_src_operand" "n,r")))]
!   "TARGET_H8300"
! {
!   return output_plussi (operands);
! }
!   [(set (attr "length")
! 	(symbol_ref "compute_plussi_length (operands)"))
!    (set (attr "cc")
! 	(symbol_ref "compute_plussi_cc (operands)"))])
! 
! (define_insn "*addsi_h8300hs"
!   [(set (match_operand:SI 0 "h8300_dst_operand" "=rQ,rQ")
! 	(plus:SI (match_operand:SI 1 "h8300_dst_operand" "%0,0")
! 		 (match_operand:SI 2 "h8300_src_operand" "i,rQ")))]
!   "(TARGET_H8300H || TARGET_H8300S) && h8300_operands_match_p (operands)"
! {
!   return output_plussi (operands);
! }
!   [(set (attr "length")
! 	(symbol_ref "compute_plussi_length (operands)"))
!    (set (attr "cc")
! 	(symbol_ref "compute_plussi_cc (operands)"))])
! 
! (define_split
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(plus:SI (match_dup 0)
! 		 (match_operand:SI 1 "two_insn_adds_subs_operand" "")))]
!   "TARGET_H8300H || TARGET_H8300S"
!   [(const_int 0)]
!   {
!     split_adds_subs (SImode, operands);
!     DONE;
!   })
! 
! ;; ----------------------------------------------------------------------
! ;; SUBTRACT INSTRUCTIONS
! ;; ----------------------------------------------------------------------
! 
! (define_expand "sub<mode>3"
!   [(set (match_operand:QHSI 0 "register_operand" "")
! 	(minus:QHSI (match_operand:QHSI 1 "register_operand" "")
! 		    (match_operand:QHSI 2 "h8300_src_operand" "")))]
!   ""
!   {
!     if (TARGET_H8300 && <MODE>mode == SImode)
!       operands[2] = force_reg (SImode, operands[2]);
!   })
! 
! (define_insn "*subqi3"
!   [(set (match_operand:QI 0 "h8300_dst_operand" "=rQ")
! 	(minus:QI (match_operand:QI 1 "h8300_dst_operand" "0")
! 		  (match_operand:QI 2 "h8300_dst_operand" "rQ")))]
!   "h8300_operands_match_p (operands)"
!   "sub.b	%X2,%X0"
!   [(set_attr "length_table" "add")
!    (set_attr "cc" "set_zn")])
! 
! (define_insn "*subhi3_h8300"
!   [(set (match_operand:HI 0 "register_operand" "=r,r")
! 	(minus:HI (match_operand:HI 1 "register_operand" "0,0")
! 		  (match_operand:HI 2 "h8300_src_operand" "r,n")))]
!   "TARGET_H8300"
!   "@
!    sub.w	%T2,%T0
!    add.b	%E2,%s0\;addx	%F2,%t0"
!   [(set_attr "length" "2,4")
!    (set_attr "cc" "set_zn,clobber")])
! 
! (define_insn "*sub<mode>3_h8300hs"
!   [(set (match_operand:HSI 0 "h8300_dst_operand" "=rQ,rQ")
! 	(minus:HSI (match_operand:HSI 1 "h8300_dst_operand" "0,0")
! 		   (match_operand:HSI 2 "h8300_src_operand" "rQ,i")))]
!   "(TARGET_H8300H || TARGET_H8300S) && h8300_operands_match_p (operands)"
!   { 
!     if (<MODE>mode == HImode)
!       return "sub.w	%T2,%T0";
!     else if (<MODE>mode == SImode)
!       return "sub.l	%S2,%S0";
!     gcc_unreachable ();
!   }
!   [(set_attr "length_table" "add")
!    (set_attr "cc" "set_zn")])
! 
! (define_insn "*subsi3_h8300"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(minus:SI (match_operand:SI 1 "register_operand" "0")
! 		  (match_operand:SI 2 "register_operand" "r")))]
!   "TARGET_H8300"
!   "sub.w	%f2,%f0\;subx	%y2,%y0\;subx	%z2,%z0"
!   [(set_attr "length" "6")])
! 
! 
! ;; ----------------------------------------------------------------------
! ;; MULTIPLY INSTRUCTIONS
! ;; ----------------------------------------------------------------------
! 
! ;; Note that the H8/300 can only handle umulqihi3.
! 
! (define_expand "mulqihi3"
!   [(set (match_operand:HI 0 "register_operand" "")
! 	(mult:HI (sign_extend:HI (match_operand:QI 1 "register_operand" ""))
! 		 ;; intentionally-mismatched modes
! 		 (match_operand:QI 2 "reg_or_nibble_operand" "")))]
!   "TARGET_H8300H || TARGET_H8300S"
!   {
!     if (GET_MODE (operands[2]) != VOIDmode)
!       operands[2] = gen_rtx_SIGN_EXTEND (HImode, operands[2]);
!   })
! 
! (define_insn "*mulqihi3_const"
!   [(set (match_operand:HI 0 "register_operand" "=r")
! 	(mult:HI (sign_extend:HI (match_operand:QI 1 "register_operand" "%0"))
! 		 (match_operand:QI 2 "nibble_operand" "IP4>X")))]
!   "TARGET_H8300SX"
!   "mulxs.b	%X2,%T0"
!   [(set_attr "length" "4")
!    (set_attr "cc" "set_zn")])
! 
! (define_insn "*mulqihi3"
!   [(set (match_operand:HI 0 "register_operand" "=r")
! 	(mult:HI (sign_extend:HI (match_operand:QI 1 "register_operand" "%0"))
! 		 (sign_extend:HI (match_operand:QI 2 "register_operand" "r"))))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "mulxs.b	%X2,%T0"
!   [(set_attr "length" "4")
!    (set_attr "cc" "set_zn")])
! 
! (define_expand "mulhisi3"
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand" ""))
! 		 ;; intentionally-mismatched modes
! 		 (match_operand:HI 2 "reg_or_nibble_operand" "")))]
!   "TARGET_H8300H || TARGET_H8300S"
!   {
!     if (GET_MODE (operands[2]) != VOIDmode)
!       operands[2] = gen_rtx_SIGN_EXTEND (SImode, operands[2]);
!   })
! 
! (define_insn "*mulhisi3_const"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand" "%0"))
! 		 (match_operand:SI 2 "nibble_operand" "IP4>X")))]
!   "TARGET_H8300SX"
!   "mulxs.w	%T2,%S0"
!   [(set_attr "length" "4")
!    (set_attr "cc" "set_zn")])
! 
! (define_insn "*mulhisi3"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand" "%0"))
! 		 (sign_extend:SI (match_operand:HI 2 "register_operand" "r"))))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "mulxs.w	%T2,%S0"
!   [(set_attr "length" "4")
!    (set_attr "cc" "set_zn")])
! 
! (define_expand "umulqihi3"
!   [(set (match_operand:HI 0 "register_operand" "")
! 	(mult:HI (zero_extend:HI (match_operand:QI 1 "register_operand" ""))
! 		 ;; intentionally-mismatched modes
! 		 (match_operand:QI 2 "reg_or_nibble_operand" "")))]
!   "TARGET_H8300H || TARGET_H8300S"
!   {
!     if (GET_MODE (operands[2]) != VOIDmode)
!       operands[2] = gen_rtx_ZERO_EXTEND (HImode, operands[2]);
!   })
! 
! (define_insn "*umulqihi3_const"
!   [(set (match_operand:HI 0 "register_operand" "=r")
! 	(mult:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "%0"))
! 		 (match_operand:QI 2 "nibble_operand" "IP4>X")))]
!   "TARGET_H8300SX"
!   "mulxu.b	%X2,%T0"
!   [(set_attr "length" "4")
!    (set_attr "cc" "set_zn")])
! 
! (define_insn "*umulqihi3"
!   [(set (match_operand:HI 0 "register_operand" "=r")
! 	(mult:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "%0"))
! 		 (zero_extend:HI (match_operand:QI 2 "register_operand" "r"))))]
!   ""
!   "mulxu.b	%X2,%T0"
!   [(set_attr "length" "2")
!    (set_attr "cc" "none_0hit")])
! 
! (define_expand "umulhisi3"
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(mult:SI (zero_extend:SI (match_operand:HI 1 "register_operand" ""))
! 		 ;; intentionally-mismatched modes
! 		 (match_operand:HI 2 "reg_or_nibble_operand" "")))]
!   "TARGET_H8300H || TARGET_H8300S"
!   {
!     if (GET_MODE (operands[2]) != VOIDmode)
!       operands[2] = gen_rtx_ZERO_EXTEND (SImode, operands[2]);
!   })
! 
! (define_insn "*umulhisi3_const"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(mult:SI (zero_extend:SI (match_operand:HI 1 "register_operand" "%0"))
! 		 (match_operand:SI 2 "nibble_operand" "IP4>X")))]
!   "TARGET_H8300SX"
!   "mulxu.w	%T2,%S0"
!   [(set_attr "length" "4")
!    (set_attr "cc" "set_zn")])
! 
! (define_insn "*umulhisi3"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(mult:SI (zero_extend:SI (match_operand:HI 1 "register_operand" "%0"))
! 		 (zero_extend:SI (match_operand:HI 2 "register_operand" "r"))))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "mulxu.w	%T2,%S0"
!   [(set_attr "length" "2")
!    (set_attr "cc" "none_0hit")])
! 
! ;; We could have used mulu.[wl] here, but mulu.[lw] is only available
! ;; on a H8SX with a multiplier, whereas muls.w seems to be available
! ;; on all H8SX variants.
! 
! (define_insn "mul<mode>3"
!   [(set (match_operand:HSI 0 "register_operand" "=r")
!         (mult:HSI (match_operand:HSI 1 "register_operand" "%0")
! 		  (match_operand:HSI 2 "reg_or_nibble_operand" "r IP4>X")))]
!   "TARGET_H8300SX"
!   { return <MODE>mode == HImode ? "muls.w\\t%T2,%T0" : "muls.l\\t%S2,%S0"; }
!   [(set_attr "length" "4")
!    (set_attr "cc" "set_zn")])
! 
! (define_insn "smulsi3_highpart"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(truncate:SI
! 	 (lshiftrt:DI
! 	  (mult:DI
! 	   (sign_extend:DI (match_operand:SI 1 "register_operand" "%0"))
! 	   (sign_extend:DI (match_operand:SI 2 "reg_or_nibble_operand" "r IP4>X")))
! 	  (const_int 32))))]
!   "TARGET_H8300SXMUL"
!   "muls/u.l\\t%S2,%S0"
!   [(set_attr "length" "4")
!    (set_attr "cc" "set_zn")])
! 
! (define_insn "umulsi3_highpart"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(truncate:SI
! 	  (ashiftrt:DI
! 	    (mult:DI
! 	      (zero_extend:DI (match_operand:SI 1 "register_operand" "%0"))
! 	      (zero_extend:DI (match_operand:SI 2 "reg_or_nibble_operand" "r IP4>X")))
! 	    (const_int 32))))]
!   "TARGET_H8300SX"
!   "mulu/u.l\\t%S2,%S0"
!   [(set_attr "length" "4")
!    (set_attr "cc" "none_0hit")])
! 
! ;; This is a "bridge" instruction.  Combine can't cram enough insns
! ;; together to crate a MAC instruction directly, but it can create
! ;; this instruction, which then allows combine to create the real
! ;; MAC insn.
! ;;
! ;; Unfortunately, if combine doesn't create a MAC instruction, this
! ;; insn must generate reasonably correct code.  Egad.
! 
! (define_insn ""
!   [(set (match_operand:SI 0 "register_operand" "=a")
! 	(mult:SI
! 	  (sign_extend:SI
! 	    (mem:HI (post_inc:SI (match_operand:SI 1 "register_operand" "r"))))
! 	  (sign_extend:SI
! 	    (mem:HI (post_inc:SI (match_operand:SI 2 "register_operand" "r"))))))]
!   "TARGET_MAC"
!   "clrmac\;mac	@%2+,@%1+"
!   [(set_attr "length" "6")
!    (set_attr "cc" "none_0hit")])
! 
! (define_insn ""
!   [(set (match_operand:SI 0 "register_operand" "=a")
! 	(plus:SI (mult:SI
! 	  (sign_extend:SI (mem:HI
! 	    (post_inc:SI (match_operand:SI 1 "register_operand" "r"))))
! 	  (sign_extend:SI (mem:HI
! 	    (post_inc:SI (match_operand:SI 2 "register_operand" "r")))))
! 	      (match_operand:SI 3 "register_operand" "0")))]
!   "TARGET_MAC"
!   "mac	@%2+,@%1+"
!   [(set_attr "length" "4")
!    (set_attr "cc" "none_0hit")])
! 
! ;; ----------------------------------------------------------------------
! ;; DIVIDE/MOD INSTRUCTIONS
! ;; ----------------------------------------------------------------------
! 
! (define_insn "udiv<mode>3"
!   [(set (match_operand:HSI 0 "register_operand" "=r")
! 	(udiv:HSI (match_operand:HSI 1 "register_operand" "0")
! 		  (match_operand:HSI 2 "reg_or_nibble_operand" "r IP4>X")))]
!   "TARGET_H8300SX"
!   { return <MODE>mode == HImode ? "divu.w\\t%T2,%T0" : "divu.l\\t%S2,%S0"; }
!   [(set_attr "length" "4")])
! 
! (define_insn "div<mode>3"
!   [(set (match_operand:HSI 0 "register_operand" "=r")
! 	(div:HSI (match_operand:HSI 1 "register_operand" "0")
! 		 (match_operand:HSI 2 "reg_or_nibble_operand" "r IP4>X")))]
!   "TARGET_H8300SX"
!   { return <MODE>mode == HImode ? "divs.w\\t%T2,%T0" : "divs.l\\t%S2,%S0"; }
!   [(set_attr "length" "4")])
! 
! (define_insn "udivmodqi4"
!   [(set (match_operand:QI 0 "register_operand" "=r")
! 	(truncate:QI
! 	  (udiv:HI
! 	    (match_operand:HI 1 "register_operand" "0")
! 	    (zero_extend:HI (match_operand:QI 2 "register_operand" "r")))))
!    (set (match_operand:QI 3 "register_operand" "=r")
! 	(truncate:QI
! 	  (umod:HI
! 	    (match_dup 1)
! 	    (zero_extend:HI (match_dup 2)))))]
!   ""
! {
!   if (find_reg_note (insn, REG_UNUSED, operands[3]))
!     return "divxu.b\\t%X2,%T0";
!   else
!     return "divxu.b\\t%X2,%T0\;mov.b\\t%t0,%s3";
! }
!   [(set_attr "length" "4")])
! 
! (define_insn "divmodqi4"
!   [(set (match_operand:QI 0 "register_operand" "=r")
! 	(truncate:QI
! 	  (div:HI
! 	    (match_operand:HI 1 "register_operand" "0")
! 	    (sign_extend:HI (match_operand:QI 2 "register_operand" "r")))))
!    (set (match_operand:QI 3 "register_operand" "=r")
! 	(truncate:QI
! 	  (mod:HI
! 	    (match_dup 1)
! 	    (sign_extend:HI (match_dup 2)))))]
!   "TARGET_H8300H || TARGET_H8300S"
! {
!   if (find_reg_note (insn, REG_UNUSED, operands[3]))
!     return "divxs.b\\t%X2,%T0";
!   else
!     return "divxs.b\\t%X2,%T0\;mov.b\\t%t0,%s3";
! }
!   [(set_attr "length" "6")])
! 
! (define_insn "udivmodhi4"
!   [(set (match_operand:HI 0 "register_operand" "=r")
! 	(truncate:HI
! 	  (udiv:SI
! 	    (match_operand:SI 1 "register_operand" "0")
! 	    (zero_extend:SI (match_operand:HI 2 "register_operand" "r")))))
!    (set (match_operand:HI 3 "register_operand" "=r")
! 	(truncate:HI
! 	  (umod:SI
! 	    (match_dup 1)
! 	    (zero_extend:SI (match_dup 2)))))]
!   "TARGET_H8300H || TARGET_H8300S"
! {
!   if (find_reg_note (insn, REG_UNUSED, operands[3]))
!     return "divxu.w\\t%T2,%S0";
!   else
!     return "divxu.w\\t%T2,%S0\;mov.w\\t%e0,%f3";
! }
!   [(set_attr "length" "4")])
! 
! (define_insn "divmodhi4"
!   [(set (match_operand:HI 0 "register_operand" "=r")
! 	(truncate:HI
! 	  (div:SI
! 	    (match_operand:SI 1 "register_operand" "0")
! 	    (sign_extend:SI (match_operand:HI 2 "register_operand" "r")))))
!    (set (match_operand:HI 3 "register_operand" "=r")
! 	(truncate:HI
! 	  (mod:SI
! 	    (match_dup 1)
! 	    (sign_extend:SI (match_dup 2)))))]
!   "TARGET_H8300H || TARGET_H8300S"
! {
!   if (find_reg_note (insn, REG_UNUSED, operands[3]))
!     return "divxs.w\\t%T2,%S0";
!   else
!     return "divxs.w\\t%T2,%S0\;mov.w\\t%e0,%f3";
! }
!   [(set_attr "length" "6")])
! 
! ;; ----------------------------------------------------------------------
! ;; AND INSTRUCTIONS
! ;; ----------------------------------------------------------------------
! 
! (define_insn "bclrqi_msx"
!   [(set (match_operand:QI 0 "bit_register_indirect_operand" "=WU")
! 	(and:QI (match_operand:QI 1 "bit_register_indirect_operand" "%0")
! 		(match_operand:QI 2 "single_zero_operand" "Y0")))]
!   "TARGET_H8300SX && rtx_equal_p (operands[0], operands[1])"
!   "bclr\\t%W2,%0"
!   [(set_attr "length" "8")])
! 
! (define_split
!   [(set (match_operand:HI 0 "bit_register_indirect_operand")
! 	(and:HI (match_operand:HI 1 "bit_register_indirect_operand")
! 		(match_operand:HI 2 "single_zero_operand")))]
!   "TARGET_H8300SX"
!   [(set (match_dup 0)
! 	(and:QI (match_dup 1)
! 		(match_dup 2)))]
!   {
!     if (abs (INTVAL (operands[2])) > 0xFF)
!       {
! 	operands[0] = adjust_address (operands[0], QImode, 0);
! 	operands[1] = adjust_address (operands[1], QImode, 0);
! 	operands[2] = GEN_INT ((INTVAL (operands[2])) >> 8);
!       }
!     else
!       {
! 	operands[0] = adjust_address (operands[0], QImode, 1);
! 	operands[1] = adjust_address (operands[1], QImode, 1);
!       }
!   })
! 
! (define_insn "bclrhi_msx"
!   [(set (match_operand:HI 0 "bit_register_indirect_operand" "=m")
! 	(and:HI (match_operand:HI 1 "bit_register_indirect_operand" "%0")
! 		(match_operand:HI 2 "single_zero_operand" "Y0")))]
!   "TARGET_H8300SX"
!   "bclr\\t%W2,%0"
!   [(set_attr "length" "8")])
! 
! (define_insn "*andqi3_2"
!   [(set (match_operand:QI 0 "bit_operand" "=U,rQ,r")
! 	(and:QI (match_operand:QI 1 "bit_operand" "%0,0,WU")
! 		(match_operand:QI 2 "h8300_src_operand" "Y0,rQi,IP1>X")))]
!   "TARGET_H8300SX"
!   "@
!    bclr\\t %W2,%R0
!    and  %X2,%X0
!    bfld %2,%1,%R0"
!   [(set_attr "length" "8,*,8")
!    (set_attr "length_table" "*,logicb,*")
!    (set_attr "cc" "none_0hit,set_znv,none_0hit")])
! 
! (define_insn "andqi3_1"
!   [(set (match_operand:QI 0 "bit_operand" "=U,r")
! 	(and:QI (match_operand:QI 1 "bit_operand" "%0,0")
! 		(match_operand:QI 2 "h8300_src_operand" "Y0,rn")))]
!   "register_operand (operands[0], QImode)
!    || single_zero_operand (operands[2], QImode)"
!   "@
!    bclr %W2,%R0
!    and  %X2,%X0"
!   [(set_attr "length" "2,8")
!    (set_attr "cc" "none_0hit,set_znv")])
! 
! (define_expand "and<mode>3"
!   [(set (match_operand:QHSI 0 "register_operand" "")
! 	(and:QHSI (match_operand:QHSI 1 "register_operand" "")
! 		  (match_operand:QHSI 2 "h8300_src_operand" "")))]
!   ""
!   "")
! 
! (define_insn "*andor<mode>3"
!   [(set (match_operand:QHSI 0 "register_operand" "=r")
! 	(ior:QHSI (and:QHSI (match_operand:QHSI 2 "register_operand" "r")
! 			    (match_operand:QHSI 3 "single_one_operand" "n"))
! 		  (match_operand:QHSI 1 "register_operand" "0")))]
!   "(<MODE>mode == QImode
!     || <MODE>mode == HImode
!     || (<MODE>mode == SImode
! 	&& (INTVAL (operands[3]) & 0xffff) != 0))"
!   {
!     if (<MODE>mode == QImode)
!       return "bld\\t%V3,%X2\;bor\\t%V3,%X0\;bst\\t%V3,%X0";
! 
!     if (<MODE>mode == HImode)
!       {
! 	operands[3] = GEN_INT (INTVAL (operands[3]) & 0xffff);
! 	if (INTVAL (operands[3]) > 128)
! 	  {
! 	    operands[3] = GEN_INT (INTVAL (operands[3]) >> 8);
! 	    return "bld\\t%V3,%t2\;bor\\t%V3,%t0\;bst\\t%V3,%t0";
! 	  }
! 	return "bld\\t%V3,%s2\;bor\\t%V3,%s0\;bst\\t%V3,%s0";
!       }
! 
!     if (<MODE>mode == SImode)
!       {
! 	operands[3] = GEN_INT (INTVAL (operands[3]) & 0xffff);
! 	if (INTVAL (operands[3]) > 128)
! 	  {
! 	    operands[3] = GEN_INT (INTVAL (operands[3]) >> 8);
! 	    return "bld\\t%V3,%x2\;bor\\t%V3,%x0\;bst\\t%V3,%x0";
! 	  }
! 	return "bld\\t%V3,%w2\;bor\\t%V3,%w0\;bst\\t%V3,%w0";
!       }
! 
!     gcc_unreachable ();
! 	
!   }
!   [(set_attr "length" "6")])
! 
! (define_insn "*andorsi3_shift_8"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ior:SI (and:SI (ashift:SI (match_operand:SI 2 "register_operand" "r")
! 				   (const_int 8))
! 			(const_int 65280))
! 		(match_operand:SI 1 "register_operand" "0")))]
!   ""
!   "or.b\\t%w2,%x0"
!   [(set_attr "length" "2")])
! 
! ;; ----------------------------------------------------------------------
! ;; OR/XOR INSTRUCTIONS
! ;; ----------------------------------------------------------------------
! 
! (define_insn "b<code>qi_msx"
!   [(set (match_operand:QI 0 "bit_register_indirect_operand" "=WU")
! 	(ors:QI (match_operand:QI 1 "bit_register_indirect_operand" "%0")
! 		(match_operand:QI 2 "single_one_operand" "Y2")))]
!   "TARGET_H8300SX && rtx_equal_p (operands[0], operands[1])"
!   { return <CODE> == IOR ? "bset\\t%V2,%0" : "bnot\\t%V2,%0"; }
!   [(set_attr "length" "8")])
! 
! (define_insn "b<code>hi_msx"
!   [(set (match_operand:HI 0 "bit_register_indirect_operand" "=m")
! 	(ors:HI (match_operand:HI 1 "bit_register_indirect_operand" "%0")
! 		(match_operand:HI 2 "single_one_operand" "Y2")))]
!   "TARGET_H8300SX"
!   { return <CODE> == IOR ? "bset\\t%V2,%0" : "bnot\\t%V2,%0"; }
!   [(set_attr "length" "8")])
! 
! (define_insn "<code>qi3_1"
!   [(set (match_operand:QI 0 "bit_operand" "=U,rQ")
! 	(ors:QI (match_operand:QI 1 "bit_operand" "%0,0")
! 		(match_operand:QI 2 "h8300_src_operand" "Y2,rQi")))]
!   "TARGET_H8300SX || register_operand (operands[0], QImode)
!    || single_one_operand (operands[2], QImode)"
!   {
!     if (which_alternative == 0)
!       return <CODE> == IOR ? "bset\\t%V2,%R0" : "bnot\\t%V2,%R0"; 
!     else if (which_alternative == 1)
!       return <CODE> == IOR ? "or\\t%X2,%X0" : "xor\\t%X2,%X0";
!     gcc_unreachable ();
!   }
!   [(set_attr "length" "8,*")
!    (set_attr "length_table" "*,logicb")
!    (set_attr "cc" "none_0hit,set_znv")])
! 
! (define_expand "<code><mode>3"
!   [(set (match_operand:QHSI 0 "register_operand" "")
! 	(ors:QHSI (match_operand:QHSI 1 "register_operand" "")
! 		  (match_operand:QHSI 2 "h8300_src_operand" "")))]
!   ""
!   "")
! 
! ;; ----------------------------------------------------------------------
! ;; {AND,IOR,XOR}{HI3,SI3} PATTERNS
! ;; ----------------------------------------------------------------------
! 
! (define_insn "*logical<mode>3"
!   [(set (match_operand:HSI 0 "h8300_dst_operand" "=rQ")
! 	(match_operator:HSI 3 "bit_operator"
! 	  [(match_operand:HSI 1 "h8300_dst_operand" "%0")
! 	   (match_operand:HSI 2 "h8300_src_operand" "rQi")]))]
!   "h8300_operands_match_p (operands)"
!   { return output_logical_op (<MODE>mode, operands); }
!   [(set (attr "length")
! 	(symbol_ref "compute_logical_op_length (<MODE>mode, operands)"))
!    (set (attr "cc")
! 	(symbol_ref "compute_logical_op_cc (<MODE>mode, operands)"))])
! 
! ;; ----------------------------------------------------------------------
! ;; NEGATION INSTRUCTIONS
! ;; ----------------------------------------------------------------------
! 
! (define_expand "neg<mode>2"
!   [(set (match_operand:QHSIF 0 "register_operand" "")
! 	(neg:QHSIF (match_operand:QHSIF 1 "register_operand" "")))]
!   ""
!   {
!     enum machine_mode mode = <MODE>mode;
!     if (TARGET_H8300)
!       {
! 	if (mode == QImode || mode == SFmode)
! 	  ;
! 	else if (mode == HImode)
! 	  {
! 	    emit_insn (gen_neghi2_h8300 (operands[0], operands[1]));
! 	    DONE;
! 	  }
! 	else if (mode == SImode)
! 	  {
! 	    emit_insn (gen_negsi2_h8300 (operands[0], operands[1]));
! 	    DONE;
! 	  }
!       }
!   })
! 
! (define_insn "*negqi2"
!   [(set (match_operand:QI 0 "h8300_dst_operand" "=rQ")
! 	(neg:QI (match_operand:QI 1 "h8300_dst_operand" "0")))]
!   ""
!   "neg	%X0"
!   [(set_attr "length_table" "unary")
!    (set_attr "cc" "set_zn")])
! 
! (define_expand "neg<mode>2_h8300"
!   [(set (match_dup 2)
! 	(not:HSI (match_operand:HSI 1 "register_operand" "")))
!    (set (match_dup 2) (plus:HSI (match_dup 2) (const_int 1)))
!    (set (match_operand:HSI 0 "register_operand" "")
! 	(match_dup 2))]
!   ""
!   {
!     operands[2] = gen_reg_rtx (<MODE>mode);
!   })
! 
! (define_insn "*neghi2_h8300hs"
!   [(set (match_operand:HI 0 "h8300_dst_operand" "=rQ")
! 	(neg:HI (match_operand:HI 1 "h8300_dst_operand" "0")))]
!   "(TARGET_H8300H || TARGET_H8300S) && h8300_operands_match_p (operands)"
!   "neg.w	%T0"
!   [(set_attr "length_table" "unary")
!    (set_attr "cc" "set_zn")])
! 
! (define_insn "*negsi2_h8300hs"
!   [(set (match_operand:SI 0 "h8300_dst_operand" "=rQ")
! 	(neg:SI (match_operand:SI 1 "h8300_dst_operand" "0")))]
!   "(TARGET_H8300H || TARGET_H8300S) && h8300_operands_match_p (operands)"
!   "neg.l	%S0"
!   [(set_attr "length_table" "unary")
!    (set_attr "cc" "set_zn")])
! 
! (define_insn "*negsf2_h8300"
!   [(set (match_operand:SF 0 "register_operand" "=r")
! 	(neg:SF (match_operand:SF 1 "register_operand" "0")))]
!   "TARGET_H8300"
!   "xor.b\\t#128,%z0"
!   [(set_attr "length" "2")])
! 
! (define_insn "*negsf2_h8300hs"
!   [(set (match_operand:SF 0 "register_operand" "=r")
! 	(neg:SF (match_operand:SF 1 "register_operand" "0")))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "xor.w\\t#32768,%e0"
!   [(set_attr "length" "4")])
! 
! ;; ----------------------------------------------------------------------
! ;; ABSOLUTE VALUE INSTRUCTIONS
! ;; ----------------------------------------------------------------------
! 
! (define_expand "abssf2"
!   [(set (match_operand:SF 0 "register_operand" "")
! 	(abs:SF (match_operand:SF 1 "register_operand" "")))]
!   ""
!   "")
! 
! (define_insn "*abssf2_h8300"
!   [(set (match_operand:SF 0 "register_operand" "=r")
! 	(abs:SF (match_operand:SF 1 "register_operand" "0")))]
!   "TARGET_H8300"
!   "and.b\\t#127,%z0"
!   [(set_attr "length" "2")])
! 
! (define_insn "*abssf2_h8300hs"
!   [(set (match_operand:SF 0 "register_operand" "=r")
! 	(abs:SF (match_operand:SF 1 "register_operand" "0")))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "and.w\\t#32767,%e0"
!   [(set_attr "length" "4")])
! 
! ;; ----------------------------------------------------------------------
! ;; NOT INSTRUCTIONS
! ;; ----------------------------------------------------------------------
! 
! (define_expand "one_cmpl<mode>2"
!   [(set (match_operand:QHSI 0 "register_operand" "")
! 	(not:QHSI (match_operand:QHSI 1 "register_operand" "")))]
!   ""
!   "")
! 
! (define_insn "*one_cmplqi2"
!   [(set (match_operand:QI 0 "h8300_dst_operand" "=rQ")
! 	(not:QI (match_operand:QI 1 "h8300_dst_operand" "0")))]
!   ""
!   "not	%X0"
!   [(set_attr "length_table" "unary")
!    (set_attr "cc" "set_znv")])
! 
! (define_insn "*one_cmplhi2_h8300"
!   [(set (match_operand:HI 0 "register_operand" "=r")
! 	(not:HI (match_operand:HI 1 "register_operand" "0")))]
!   "TARGET_H8300"
!   "not	%s0\;not	%t0"
!   [(set_attr "length" "4")])
! 
! (define_insn "*one_cmplhi2_h8300hs"
!   [(set (match_operand:HI 0 "h8300_dst_operand" "=rQ")
! 	(not:HI (match_operand:HI 1 "h8300_dst_operand" "0")))]
!   "(TARGET_H8300H || TARGET_H8300S) && h8300_operands_match_p (operands)"
!   "not.w	%T0"
!   [(set_attr "cc" "set_znv")
!    (set_attr "length_table" "unary")])
! 
! (define_insn "*one_cmplsi2_h8300"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(not:SI (match_operand:SI 1 "register_operand" "0")))]
!   "TARGET_H8300"
!   "not	%w0\;not	%x0\;not	%y0\;not	%z0"
!   [(set_attr "length" "8")])
! 
! (define_insn "*one_cmplsi2_h8300hs"
!   [(set (match_operand:SI 0 "h8300_dst_operand" "=rQ")
! 	(not:SI (match_operand:SI 1 "h8300_dst_operand" "0")))]
!   "(TARGET_H8300H || TARGET_H8300S) && h8300_operands_match_p (operands)"
!   "not.l	%S0"
!   [(set_attr "cc" "set_znv")
!    (set_attr "length_table" "unary")])
! 
! ;; ----------------------------------------------------------------------
! ;; JUMP INSTRUCTIONS
! ;; ----------------------------------------------------------------------
! 
! ;; Conditional jump instructions
! 
! (define_expand "cbranchqi4"
!   [(use (match_operator 0 "ordered_comparison_operator"
!          [(match_operand:QI 1 "h8300_dst_operand" "")
!           (match_operand:QI 2 "h8300_src_operand" "")]))
!    (use (match_operand 3 ""))]
!   ""
!   {
!     h8300_expand_branch (operands);
!     DONE;
!   })
! 
! (define_expand "cbranchhi4"
!   [(use (match_operator 0 "ordered_comparison_operator"
!          [(match_operand:HI 1 "h8300_dst_operand" "")
!           (match_operand:HI 2 "h8300_src_operand" "")]))
!    (use (match_operand 3 ""))]
!   ""
!   {
!     /* Force operand1 into a register if we're compiling
!        for the H8/300.  */
!     if ((GET_CODE (operands[2]) != REG && operands[2] != const0_rtx)
! 	&& TARGET_H8300)
!       operands[2] = force_reg (HImode, operands[2]);
!     h8300_expand_branch (operands);
!     DONE;
!   })
! 
! (define_expand "cbranchsi4"
!   [(use (match_operator 0 "ordered_comparison_operator"
!          [(match_operand:SI 1 "h8300_dst_operand" "")
!           (match_operand:SI 2 "h8300_src_operand" "")]))
!    (use (match_operand 3 ""))]
!   "TARGET_H8300H || TARGET_H8300S"
!   {
!     h8300_expand_branch (operands);
!     DONE;
!   })
! 
! (define_insn "branch_true"
!   [(set (pc)
! 	(if_then_else (match_operator 1 "comparison_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 0 "" ""))
! 		      (pc)))]
!   ""
! {
!   if ((cc_status.flags & CC_OVERFLOW_UNUSABLE) != 0
!       && (GET_CODE (operands[1]) == GT
! 	  || GET_CODE (operands[1]) == GE
! 	  || GET_CODE (operands[1]) == LE
! 	  || GET_CODE (operands[1]) == LT))
!     {
!       cc_status.flags &= ~CC_OVERFLOW_UNUSABLE;
!       return 0;
!     }
! 
!   if (get_attr_length (insn) == 2)
!     return "b%j1	%l0";
!   else if (get_attr_length (insn) == 4)
!     return "b%j1	%l0:16";
!   else
!     return "b%k1	.Lh8BR%=\;jmp	@%l0\\n.Lh8BR%=:";
! }
!  [(set_attr "type" "branch")
!    (set_attr "cc" "none")])
! 
! (define_insn "branch_false"
!   [(set (pc)
! 	(if_then_else (match_operator 1 "comparison_operator"
! 		       [(cc0) (const_int 0)])
! 		      (pc)
! 		      (label_ref (match_operand 0 "" ""))))]
!   ""
! {
!   if ((cc_status.flags & CC_OVERFLOW_UNUSABLE) != 0
!       && (GET_CODE (operands[1]) == GT
! 	  || GET_CODE (operands[1]) == GE
! 	  || GET_CODE (operands[1]) == LE
! 	  || GET_CODE (operands[1]) == LT))
!     {
!       cc_status.flags &= ~CC_OVERFLOW_UNUSABLE;
!       return 0;
!     }
! 
!   if (get_attr_length (insn) == 2)
!     return "b%k1	%l0";
!   else if (get_attr_length (insn) == 4)
!     return "b%k1	%l0:16";
!   else
!     return "b%j1	.Lh8BR%=\;jmp	@%l0\\n.Lh8BR%=:";
! }
!   [(set_attr "type" "branch")
!    (set_attr "cc" "none")])
! 
! (define_insn "*brabc"
!   [(set (pc)
! 	(if_then_else (eq (zero_extract (match_operand:QI 1 "bit_memory_operand" "WU")
! 					(const_int 1)
! 					(match_operand:QI 2 "immediate_operand" "n"))
! 			  (const_int 0))
! 		      (label_ref (match_operand 0 "" ""))
! 		      (pc)))]
!   "TARGET_H8300SX"
! {
!   switch (get_attr_length (insn)
! 	  - h8300_insn_length_from_table (insn, operands))
!     {
!     case 2:
!       return "bra/bc	%2,%R1,%l0";
!     case 4:
!       return "bra/bc	%2,%R1,%l0:16";
!     default:
!       return "bra/bs	%2,%R1,.Lh8BR%=\;jmp	@%l0\\n.Lh8BR%=:";
!     }
! }
!   [(set_attr "type" "bitbranch")
!    (set_attr "length_table" "bitbranch")
!    (set_attr "cc" "none")])
! 
! (define_insn "*brabs"
!   [(set (pc)
! 	(if_then_else (ne (zero_extract (match_operand:QI 1 "bit_memory_operand" "WU")
! 					(const_int 1)
! 					(match_operand:QI 2 "immediate_operand" "n"))
! 			  (const_int 0))
! 		      (label_ref (match_operand 0 "" ""))
! 		      (pc)))]
!   "TARGET_H8300SX"
! {
!   switch (get_attr_length (insn)
! 	  - h8300_insn_length_from_table (insn, operands))
!     {
!     case 2:
!       return "bra/bs	%2,%R1,%l0";
!     case 4:
!       return "bra/bs	%2,%R1,%l0:16";
!     default:
!       return "bra/bc	%2,%R1,.Lh8BR%=\;jmp	@%l0\\n.Lh8BR%=:";
!     }
! }
!   [(set_attr "type" "bitbranch")
!    (set_attr "length_table" "bitbranch")
!    (set_attr "cc" "none")])
! 
! ;; Unconditional and other jump instructions.
! 
! (define_insn "jump"
!   [(set (pc)
! 	(label_ref (match_operand 0 "" "")))]
!   ""
! {
!   if (final_sequence != 0)
!     {
!       if (get_attr_length (insn) == 2)
! 	return "bra/s	%l0";
!       else
! 	{
! 	  /* The branch isn't short enough to use bra/s.  Output the
! 	     branch and delay slot in their normal order.
! 
! 	     If this is a backward branch, it will now be branching two
! 	     bytes further than previously thought.  The length-based
! 	     test for bra vs. jump is very conservative though, so the
! 	     branch will still be within range.  */
! 	  rtx_sequence *seq;
! 	  int seen;
! 
! 	  seq = final_sequence;
! 	  final_sequence = 0;
! 	  final_scan_insn (seq->insn (1), asm_out_file, optimize, 1, & seen);
! 	  final_scan_insn (seq->insn (0), asm_out_file, optimize, 1, & seen);
! 	  seq->insn (1)->set_deleted ();
! 	  return "";
! 	}
!     }
!   else if (get_attr_length (insn) == 2)
!     return "bra	%l0";
!   else if (get_attr_length (insn) == 4)
!     return "bra	%l0:16";
!   else
!     return "jmp	@%l0";
! }
!   [(set_attr "type" "branch")
!    (set (attr "delay_slot")
! 	(if_then_else (match_test "TARGET_H8300SX")
! 		      (const_string "jump")
! 		      (const_string "none")))
!    (set_attr "cc" "none")])
! 
! ;; This is a define expand, because pointers may be either 16 or 32 bits.
! 
! (define_expand "tablejump"
!   [(parallel [(set (pc) (match_operand 0 "register_operand" ""))
! 	      (use (label_ref (match_operand 1 "" "")))])]
!   ""
!   "")
! 
! (define_insn "*tablejump_h8300"
!   [(set (pc) (match_operand:HI 0 "register_operand" "r"))
!    (use (label_ref (match_operand 1 "" "")))]
!   "TARGET_H8300"
!   "jmp	@%0"
!   [(set_attr "cc" "none")
!    (set_attr "length" "2")])
! 
! (define_insn "*tablejump_h8300hs_advanced"
!   [(set (pc) (match_operand:SI 0 "register_operand" "r"))
!    (use (label_ref (match_operand 1 "" "")))]
!   "(TARGET_H8300H || TARGET_H8300S) && !TARGET_NORMAL_MODE"
!   "jmp	@%0"
!   [(set_attr "cc" "none")
!    (set_attr "length" "2")])
! 
! (define_insn "*tablejump_h8300hs_normal"
!   [(set (pc) (match_operand:HI 0 "register_operand" "r"))
!    (use (label_ref (match_operand 1 "" "")))]
!   "(TARGET_H8300H || TARGET_H8300S) && TARGET_NORMAL_MODE"
!   "jmp @%S0"
!   [(set_attr "cc" "none")
!    (set_attr "length" "2")])
! 
! ;; This is a define expand, because pointers may be either 16 or 32 bits.
! 
! (define_expand "indirect_jump"
!   [(set (pc) (match_operand 0 "jump_address_operand" ""))]
!   ""
!   "")
! 
! (define_insn "*indirect_jump_h8300"
!   [(set (pc) (match_operand:HI 0 "jump_address_operand" "Vr"))]
!   "TARGET_H8300"
!   "jmp	@%0"
!   [(set_attr "cc" "none")
!    (set_attr "length" "2")])
! 
! (define_insn "*indirect_jump_h8300hs_advanced"
!   [(set (pc) (match_operand:SI 0 "jump_address_operand" "Vr"))]
!   "(TARGET_H8300H || TARGET_H8300S) && !TARGET_NORMAL_MODE"
!   "jmp @%0"
!   [(set_attr "cc" "none")
!    (set_attr "length" "2")])
! 
! (define_insn "*indirect_jump_h8300hs_normal"
!   [(set (pc) (match_operand:HI 0 "jump_address_operand" "Vr"))]
!   "(TARGET_H8300H || TARGET_H8300S) && TARGET_NORMAL_MODE"
!   "jmp @%S0"
!   [(set_attr "cc" "none")
!    (set_attr "length" "2")])
! 
! ;; Call subroutine with no return value.
! 
! ;; ??? Even though we use HImode here, this works on the H8/300H and H8S.
! 
! (define_expand "call"
!   [(call (match_operand:QI 0 "call_expander_operand" "")
! 	 (match_operand 1 "general_operand" ""))]
!   ""
!   {
!     if (!register_operand (XEXP (operands[0], 0), Pmode)
! 	&& GET_CODE (XEXP (operands[0], 0)) != SYMBOL_REF)
!       XEXP (operands[0], 0) = force_reg (Pmode, XEXP (operands[0], 0));
!   })
! 
! (define_insn "call_insn_<mode>"
!   [(call (mem:QI (match_operand 0 "call_insn_operand" "Cr"))
! 	         (match_operand:P 1 "general_operand" "g"))]
!   ""
! {
!   rtx xoperands[1];
!   xoperands[0] = gen_rtx_MEM (QImode, operands[0]);
!   gcc_assert (GET_MODE (operands[0]) == Pmode);
!   if (GET_CODE (XEXP (xoperands[0], 0)) == SYMBOL_REF
!       && (SYMBOL_REF_FLAGS (XEXP (xoperands[0], 0)) & SYMBOL_FLAG_FUNCVEC_FUNCTION))
!     output_asm_insn ("jsr\\t@%0:8", xoperands);
!   else
!     output_asm_insn ("jsr\\t%0", xoperands);
!   return "";
! }
!   [(set_attr "type" "call")
!    (set (attr "length")
! 	(if_then_else (match_operand:QI 0 "small_call_insn_operand" "")
! 		      (const_int 2)
! 		      (const_int 4)))])
! 
! ;; Call subroutine, returning value in operand 0
! ;; (which must be a hard register).
! 
! ;; ??? Even though we use HImode here, this works on the H8/300H and H8S.
! 
! (define_expand "call_value"
!   [(set (match_operand 0 "" "")
! 	(call (match_operand:QI 1 "call_expander_operand" "")
! 	      (match_operand 2 "general_operand" "")))]
!   ""
!   {
!     if (!register_operand (XEXP (operands[1], 0), Pmode)
! 	&& GET_CODE (XEXP (operands[1], 0)) != SYMBOL_REF)
!       XEXP (operands[1], 0) = force_reg (Pmode, XEXP (operands[1], 0));
!   })
! 
! (define_insn "call_value_insn_<mode>"
!   [(set (match_operand 0 "" "=r")
! 	(call (mem:QI (match_operand 1 "call_insn_operand" "Cr"))
! 		      (match_operand:P 2 "general_operand" "g")))]
!   ""
! {
!   rtx xoperands[2];
!   gcc_assert (GET_MODE (operands[1]) == Pmode);
!   xoperands[0] = operands[0];
!   xoperands[1] = gen_rtx_MEM (QImode, operands[1]);
!   if (GET_CODE (XEXP (xoperands[1], 0)) == SYMBOL_REF
!       && (SYMBOL_REF_FLAGS (XEXP (xoperands[1], 0)) & SYMBOL_FLAG_FUNCVEC_FUNCTION))
!     output_asm_insn ("jsr\\t@%1:8", xoperands);
!   else
!     output_asm_insn ("jsr\\t%1", xoperands);
!   return "";
! }
!   [(set_attr "type" "call")
!    (set (attr "length")
! 	(if_then_else (match_operand:QI 0 "small_call_insn_operand" "")
! 		      (const_int 2)
! 		      (const_int 4)))])
! 
! (define_insn "nop"
!   [(const_int 0)]
!   ""
!   "nop"
!   [(set_attr "cc" "none")
!    (set_attr "length" "2")])
! 
! ;; ----------------------------------------------------------------------
! ;; PROLOGUE/EPILOGUE-RELATED INSTRUCTIONS
! ;; ----------------------------------------------------------------------
! 
! (define_expand "push_h8300"
!   [(set (mem:HI (pre_dec:HI (reg:HI SP_REG)))
!         (match_operand:HI 0 "register_operand" ""))]
!   "TARGET_H8300"
!   "")
! 
! (define_expand "push_h8300hs_advanced"
!   [(set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
!         (match_operand:SI 0 "register_operand" ""))]
!   "TARGET_H8300H && TARGET_H8300S && !TARGET_NORMAL_MODE"
!   "")
! 
! (define_expand "push_h8300hs_normal"
!   [(set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
!         (match_operand:SI 0 "register_operand" ""))]
!   "TARGET_H8300H && TARGET_H8300S && TARGET_NORMAL_MODE"
!   "")
! 
! (define_expand "pop_h8300"
!   [(set (match_operand:HI 0 "register_operand" "")
! 	(mem:HI (post_inc:HI (reg:HI SP_REG))))]
!   "TARGET_H8300"
!   "")
! 
! (define_expand "pop_h8300hs_advanced"
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(mem:SI (post_inc:SI (reg:SI SP_REG))))]
!   "TARGET_H8300H && TARGET_H8300S && !TARGET_NORMAL_MODE"
!   "")
! 
! (define_expand "pop_h8300hs_normal"
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(mem:SI (post_inc:HI (reg:HI SP_REG))))]
!   "TARGET_H8300H && TARGET_H8300S && TARGET_NORMAL_MODE"
!   "")
! 
! (define_insn "ldm_h8300sx"
!   [(match_parallel           0 "h8300_ldm_parallel"
!     [(set (match_operand:SI 1 "register_operand" "")
! 	  (match_operand:SI 2 "memory_operand" ""))])]
!   "TARGET_H8300S"
! {
!   operands[3] = SET_DEST (XVECEXP (operands[0], 0,
! 				   XVECLEN (operands[0], 0) - 2));
!   return "ldm.l\t@er7+,%S1-%S3";
! }
!   [(set_attr "cc" "none")
!    (set_attr "length" "4")])
! 
! (define_insn "stm_h8300sx"
!   [(match_parallel           0 "h8300_stm_parallel"
!     [(set (match_operand:SI 1 "memory_operand" "")
! 	  (match_operand:SI 2 "register_operand" ""))])]
!   "TARGET_H8300S"
! {
!   operands[3] = SET_SRC (XVECEXP (operands[0], 0,
! 				  XVECLEN (operands[0], 0) - 2));
!   return "stm.l\t%S2-%S3,@-er7";
! }
!   [(set_attr "cc" "none")
!    (set_attr "length" "4")])
! 
! (define_insn "return_h8sx"
!   [(match_parallel           0 "h8300_return_parallel"
!     [(return)
!      (set (match_operand:SI 1 "register_operand" "")
! 	  (match_operand:SI 2 "memory_operand" ""))])]
!   "TARGET_H8300SX"
! {
!   operands[3] = SET_DEST (XVECEXP (operands[0], 0,
! 				   XVECLEN (operands[0], 0) - 2));
!   if (h8300_current_function_interrupt_function_p ()
!       || h8300_current_function_monitor_function_p ())
!     return "rte/l\t%S1-%S3";
!   else
!     return "rts/l\t%S1-%S3";
! }
!   [(set_attr "cc" "none")
!    (set_attr "can_delay" "no")
!    (set_attr "length" "2")])
! 
! (define_expand "return"
!   [(return)]
!   "h8300_can_use_return_insn_p ()"
!   "")
! 
! (define_insn "*return_1"
!   [(return)]
!   "reload_completed"
! {
!   if (h8300_current_function_interrupt_function_p ()
!       || h8300_current_function_monitor_function_p ())
!     return "rte";
!   else
!     return "rts";
! }
!   [(set_attr "cc" "none")
!    (set_attr "can_delay" "no")
!    (set_attr "length" "2")])
! 
! (define_expand "prologue"
!   [(const_int 0)]
!   ""
!   {
!     h8300_expand_prologue ();
!     DONE;
!   })
! 
! (define_expand "epilogue"
!   [(return)]
!   ""
!   {
!     h8300_expand_epilogue ();
!     DONE;
!   })
! 
! (define_insn "monitor_prologue"
!   [(unspec_volatile [(const_int 0)] UNSPEC_MONITOR)]
!   ""
! {
!   if (TARGET_H8300)
!     return "subs\\t#2,r7\;mov.w\\tr0,@-r7\;stc\\tccr,r0l\;mov.b\tr0l,@(2,r7)\;mov.w\\t@r7+,r0\;orc\t#128,ccr";
!   else if (TARGET_H8300H && TARGET_NORMAL_MODE)
!     return "subs\\t#2,er7\;mov.l\\ter0,@-er7\;stc\\tccr,r0l\;mov.b\\tr0l,@(4,er7)\;mov.l\\t@er7+,er0\;orc\\t#128,ccr";
!   else if (TARGET_H8300H)
!     return "mov.l\\ter0,@-er7\;stc\\tccr,r0l\;mov.b\\tr0l,@(4,er7)\;mov.l\\t@er7+,er0\;orc\\t#128,ccr";
!   else if (TARGET_H8300S && TARGET_NEXR )
!     return "mov.l\\ter0,@-er7\;stc\tccr,r0l\;mov.b\tr0l,@(4,er7)\;mov.l\\t@er7+,er0\;orc\t#128,ccr";
!   else if (TARGET_H8300S && TARGET_NEXR && TARGET_NORMAL_MODE)
!     return "subs\\t#2,er7\;mov.l\\ter0,@-er7\;stc\tccr,r0l\;mov.b\tr0l,@(4,er7)\;mov.l\\t@er7+,er0\;orc\t#128,ccr";
!   else if (TARGET_H8300S && TARGET_NORMAL_MODE)
!     return "subs\\t#2,er7\;stc\texr,@-er7\;mov.l\\ter0,@-er7\;stc\tccr,r0l\;mov.b\tr0l,@(6,er7)\;mov.l\\t@er7+,er0\;orc\t#128,ccr";
!   else if (TARGET_H8300S)
!     return "stc\texr,@-er7\;mov.l\\ter0,@-er7\;stc\tccr,r0l\;mov.b\tr0l,@(6,er7)\;mov.l\\t@er7+,er0\;orc\t#128,ccr";
!   gcc_unreachable ();
! }
!   [(set_attr "length" "20")])
! 
! ;; ----------------------------------------------------------------------
! ;; EXTEND INSTRUCTIONS
! ;; ----------------------------------------------------------------------
! 
! (define_expand "zero_extendqi<mode>2"
!   [(set (match_operand:HSI 0 "register_operand" "")
! 	(zero_extend:HSI (match_operand:QI 1 "general_operand_src" "")))]
!   ""
!   {
!     if (TARGET_H8300SX)
!       operands[1] = force_reg (QImode, operands[1]);
!   })
! 
! (define_insn "*zero_extendqihi2_h8300"
!   [(set (match_operand:HI 0 "register_operand" "=r,r")
! 	(zero_extend:HI (match_operand:QI 1 "general_operand_src" "0,g>")))]
!   "TARGET_H8300"
!   "@
!   mov.b	#0,%t0
!   #"
!   [(set_attr "length" "2,10")])
! 
! (define_insn "*zero_extendqihi2_h8300hs"
!   [(set (match_operand:HI 0 "register_operand" "=r,r")
! 	(zero_extend:HI (match_operand:QI 1 "general_operand_src" "0,g>")))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "@
!   extu.w	%T0
!   #"
!   [(set_attr "length" "2,10")
!    (set_attr "cc" "set_znv,set_znv")])
! 
! ;; Split the zero extension of a general operand (actually a memory
! ;; operand) into a load of the operand and the actual zero extension
! ;; so that 1) the length will be accurate, and 2) the zero extensions
! ;; appearing at the end of basic blocks may be merged.
! 
! (define_split
!   [(set (match_operand:HI 0 "register_operand" "")
! 	(zero_extend:HI (match_operand:QI 1 "general_operand_src" "")))]
!   "reload_completed"
!   [(set (match_dup 2)
! 	(match_dup 1))
!    (set (match_dup 0)
! 	(zero_extend:HI (match_dup 2)))]
!   {
!     operands[2] = gen_rtx_REG (QImode, REGNO (operands[0]));
!   })
! 
! 
! (define_insn "*zero_extendqisi2_h8300"
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
! 	(zero_extend:SI (match_operand:QI 1 "general_operand_src" "0,g>")))]
!   "TARGET_H8300"
!   "@
!   mov.b	#0,%x0\;sub.w	%e0,%e0
!   mov.b	%R1,%w0\;mov.b	#0,%x0\;sub.w	%e0,%e0"
!   [(set_attr "length" "4,8")])
! 
! (define_insn "*zero_extendqisi2_h8300hs"
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
! 	(zero_extend:SI (match_operand:QI 1 "general_operand_src" "0,g>")))]
!   "(TARGET_H8300H || TARGET_H8300S) && !TARGET_H8300SX"
!   "#")
! 
! (define_split
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(zero_extend:SI (match_operand:QI 1 "general_operand_src" "")))]
!   "(TARGET_H8300H || TARGET_H8300S) && !TARGET_H8300SX
!     && reg_overlap_mentioned_p (operands[0], operands[1])
!     && reload_completed"
!   [(set (match_dup 2)
! 	(match_dup 1))
!    (set (match_dup 3)
! 	(zero_extend:HI (match_dup 2)))
!    (set (match_dup 0)
! 	(zero_extend:SI (match_dup 3)))]
!   {
!     operands[2] = gen_lowpart (QImode, operands[0]);
!     operands[3] = gen_lowpart (HImode, operands[0]);
!   })
! 
! (define_split
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(zero_extend:SI (match_operand:QI 1 "general_operand_src" "")))]
!   "(TARGET_H8300H || TARGET_H8300S) && !TARGET_H8300SX
!     && !reg_overlap_mentioned_p (operands[0], operands[1])
!     && reload_completed"
!   [(set (match_dup 0)
! 	(const_int 0))
!    (set (strict_low_part (match_dup 2))
! 	(match_dup 1))]
!   {
!     operands[2] = gen_rtx_REG (QImode, REGNO (operands[0]));
!   })
! 
! (define_insn "*zero_extendqisi2_h8sx"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(zero_extend:SI (match_operand:QI 1 "register_operand" "0")))]
!   "TARGET_H8300SX"
!   "extu.l\t#2,%0"
!   [(set_attr "length" "2")
!    (set_attr "cc" "set_znv")])
! 
! (define_expand "zero_extendhisi2"
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(zero_extend:SI (match_operand:HI 1 "register_operand" "")))]
!   ""
!   "")
! 
! ;; %e prints the high part of a CONST_INT, not the low part.  Arggh.
! (define_insn "*zero_extendhisi2_h8300"
!   [(set (match_operand:SI 0 "register_operand" "=r,r,r")
! 	(zero_extend:SI (match_operand:HI 1 "general_operand_src" "0,i,g>")))]
!   "TARGET_H8300"
!   "@
!   sub.w	%e0,%e0
!   mov.w	%f1,%f0\;sub.w	%e0,%e0
!   mov.w	%e1,%f0\;sub.w	%e0,%e0"
!   [(set_attr "length" "2,4,6")])
! 
! (define_insn "*zero_extendhisi2_h8300hs"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(zero_extend:SI (match_operand:HI 1 "register_operand" "0")))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "extu.l	%S0"
!   [(set_attr "length" "2")
!    (set_attr "cc" "set_znv")])
! 
! (define_expand "extendqi<mode>2"
!   [(set (match_operand:HSI 0 "register_operand" "")
! 	(sign_extend:HSI (match_operand:QI 1 "register_operand" "")))]
!   ""
!   "")
! 
! (define_insn "*extendqihi2_h8300"
!   [(set (match_operand:HI 0 "register_operand" "=r,r")
! 	(sign_extend:HI (match_operand:QI 1 "general_operand_src" "0,g>")))]
!   "TARGET_H8300"
!   "@
!   bld	#7,%s0\;subx	%t0,%t0
!   mov.b	%R1,%s0\;bld	#7,%s0\;subx	%t0,%t0"
!   [(set_attr "length" "4,8")])
! 
! (define_insn "*extendqihi2_h8300hs"
!   [(set (match_operand:HI 0 "register_operand" "=r")
! 	(sign_extend:HI (match_operand:QI 1 "register_operand" "0")))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "exts.w	%T0"
!   [(set_attr "length" "2")
!    (set_attr "cc" "set_znv")])
! 
! (define_insn "*extendqisi2_h8300"
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
! 	(sign_extend:SI (match_operand:QI 1 "general_operand_src" "0,g>")))]
!   "TARGET_H8300"
!   "@
!   bld	#7,%w0\;subx	%x0,%x0\;subx	%y0,%y0\;subx	%z0,%z0
!   mov.b	%R1,%w0\;bld	#7,%w0\;subx	%x0,%x0\;subx	%y0,%y0\;subx	%z0,%z0"
!   [(set_attr "length" "8,12")])
! 
! ;; The following pattern is needed because without the pattern, the
! ;; combiner would split (sign_extend:SI (reg:QI)) into two 24-bit
! ;; shifts, one ashift and one ashiftrt.
! 
! (define_insn_and_split "*extendqisi2_h8300hs"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(sign_extend:SI (match_operand:QI 1 "register_operand" "0")))]
!   "(TARGET_H8300H || TARGET_H8300S) && !TARGET_H8300SX"
!   "#"
!   "&& reload_completed"
!   [(set (match_dup 2)
! 	(sign_extend:HI (match_dup 1)))
!    (set (match_dup 0)
! 	(sign_extend:SI (match_dup 2)))]
!   {
!     operands[2] = gen_rtx_REG (HImode, REGNO (operands[0]));
!   })
! 
! (define_insn "*extendqisi2_h8sx"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(sign_extend:SI (match_operand:QI 1 "register_operand" "0")))]
!   "TARGET_H8300SX"
!   "exts.l\t#2,%0"
!   [(set_attr "length" "2")
!    (set_attr "cc" "set_znv")])
! 
! (define_expand "extendhisi2"
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(sign_extend:SI (match_operand:HI 1 "register_operand" "")))]
!   ""
!   "")
! 
! (define_insn "*extendhisi2_h8300"
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
! 	(sign_extend:SI (match_operand:HI 1 "general_operand_src" "0,g>")))]
!   "TARGET_H8300"
!   "@
!   bld	#7,%x0\;subx	%y0,%y0\;subx	%z0,%z0
!   mov.w	%T1,%f0\;bld	#7,%x0\;subx	%y0,%y0\;subx	%z0,%z0"
!   [(set_attr "length" "6,10")])
! 
! (define_insn "*extendhisi2_h8300hs"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(sign_extend:SI (match_operand:HI 1 "register_operand" "0")))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "exts.l	%S0"
!   [(set_attr "length" "2")
!    (set_attr "cc" "set_znv")])
! 
! ;; ----------------------------------------------------------------------
! ;; SHIFTS
! ;; ----------------------------------------------------------------------
! ;;
! ;; We make some attempt to provide real efficient shifting.  One example is
! ;; doing an 8-bit shift of a 16-bit value by moving a byte reg into the other
! ;; reg and moving 0 into the former reg.
! ;;
! ;; We also try to achieve this in a uniform way.  IE: We don't try to achieve
! ;; this in both rtl and at insn emit time.  Ideally, we'd use rtl as that would
! ;; give the optimizer more cracks at the code.  However, we wish to do things
! ;; like optimizing shifting the sign bit to bit 0 by rotating the other way.
! ;; There is rtl to handle this (rotate + and), but the H8/300 doesn't handle
! ;; 16-bit rotates.  Also, if we emit complicated rtl, combine may not be able
! ;; to detect cases it can optimize.
! ;;
! ;; For these and other fuzzy reasons, I've decided to go the less pretty but
! ;; easier "do it at insn emit time" route.
! 
! ;; QI BIT SHIFTS
! 
! (define_expand "ashlqi3"
!   [(set (match_operand:QI 0 "register_operand" "")
! 	(ashift:QI (match_operand:QI 1 "register_operand" "")
! 		   (match_operand:QI 2 "nonmemory_operand" "")))]
!   ""
!   {
!     if (expand_a_shift (QImode, ASHIFT, operands))
!     DONE;
!   })
! 
! (define_expand "ashrqi3"
!   [(set (match_operand:QI 0 "register_operand" "")
! 	(ashiftrt:QI (match_operand:QI 1 "register_operand" "")
! 		     (match_operand:QI 2 "nonmemory_operand" "")))]
!   ""
!   {
!     if (expand_a_shift (QImode, ASHIFTRT, operands))
!     DONE;
!   })
! 
! (define_expand "lshrqi3"
!   [(set (match_operand:QI 0 "register_operand" "")
! 	(lshiftrt:QI (match_operand:QI 1 "register_operand" "")
! 		     (match_operand:QI 2 "nonmemory_operand" "")))]
!   ""
!   {
!     if (expand_a_shift (QImode, LSHIFTRT, operands))
!     DONE;
!   })
! 
! (define_insn ""
!   [(set (match_operand:QI 0 "h8300_dst_operand" "=rQ")
! 	(match_operator:QI 3 "h8sx_unary_shift_operator"
! 	 [(match_operand:QI 1 "h8300_dst_operand" "0")
! 	  (match_operand:QI 2 "const_int_operand" "")]))]
!   "h8300_operands_match_p (operands)"
! {
!   return output_h8sx_shift (operands, 'b', 'X');
! }
!   [(set_attr "length_table" "unary")
!    (set_attr "cc" "set_znv")])
! 
! (define_insn ""
!   [(set (match_operand:QI 0 "register_operand" "=r")
! 	(match_operator:QI 3 "h8sx_binary_shift_operator"
! 	 [(match_operand:QI 1 "register_operand" "0")
! 	  (match_operand:QI 2 "nonmemory_operand" "r P3>X")]))]
!   ""
! {
!   return output_h8sx_shift (operands, 'b', 'X');
! }
!   [(set_attr "length" "4")
!    (set_attr "cc" "set_znv")])
! 
! (define_insn "*shiftqi"
!   [(set (match_operand:QI 0 "register_operand" "=r,r")
! 	(match_operator:QI 3 "nshift_operator"
! 	 [(match_operand:QI 1 "register_operand" "0,0")
! 	  (match_operand:QI 2 "nonmemory_operand" "R,rn")]))
!    (clobber (match_scratch:QI 4 "=X,&r"))]
!   ""
! {
!   return output_a_shift (operands);
! }
!   [(set (attr "length")
! 	(symbol_ref "compute_a_shift_length (insn, operands)"))
!    (set (attr "cc")
! 	(symbol_ref "compute_a_shift_cc (insn, operands)"))])
! 
! ;; HI BIT SHIFTS
! 
! (define_expand "ashlhi3"
!   [(set (match_operand:HI 0 "register_operand" "")
! 	(ashift:HI (match_operand:HI 1 "register_operand" "")
! 		   (match_operand:QI 2 "nonmemory_operand" "")))]
!   ""
!   {
!     if (expand_a_shift (HImode, ASHIFT, operands))
!     DONE;
!   })
! 
! (define_expand "lshrhi3"
!   [(set (match_operand:HI 0 "register_operand" "")
! 	(lshiftrt:HI (match_operand:HI 1 "register_operand" "")
! 		     (match_operand:QI 2 "nonmemory_operand" "")))]
!   ""
!   {
!     if (expand_a_shift (HImode, LSHIFTRT, operands))
!     DONE;
!   })
! 
! (define_expand "ashrhi3"
!   [(set (match_operand:HI 0 "register_operand" "")
! 	(ashiftrt:HI (match_operand:HI 1 "register_operand" "")
! 		     (match_operand:QI 2 "nonmemory_operand" "")))]
!   ""
!   {
!     if (expand_a_shift (HImode, ASHIFTRT, operands))
!     DONE;
!   })
! 
! (define_insn ""
!   [(set (match_operand:HI 0 "h8300_dst_operand" "=rQ")
! 	(match_operator:HI 3 "h8sx_unary_shift_operator"
! 	 [(match_operand:HI 1 "h8300_dst_operand" "0")
! 	  (match_operand:QI 2 "const_int_operand" "")]))]
!   "h8300_operands_match_p (operands)"
! {
!   return output_h8sx_shift (operands, 'w', 'T');
! }
!   [(set_attr "length_table" "unary")
!    (set_attr "cc" "set_znv")])
! 
! (define_insn ""
!   [(set (match_operand:HI 0 "register_operand" "=r")
! 	(match_operator:HI 3 "h8sx_binary_shift_operator"
! 	 [(match_operand:HI 1 "register_operand" "0")
! 	  (match_operand:QI 2 "nonmemory_operand" "r P4>X")]))]
!   ""
! {
!   return output_h8sx_shift (operands, 'w', 'T');
! }
!   [(set_attr "length" "4")
!    (set_attr "cc" "set_znv")])
! 
! (define_insn "*shifthi"
!   [(set (match_operand:HI 0 "register_operand" "=r,r")
! 	(match_operator:HI 3 "nshift_operator"
! 	 [(match_operand:HI 1 "register_operand" "0,0")
! 	  (match_operand:QI 2 "nonmemory_operand" "S,rn")]))
!    (clobber (match_scratch:QI 4 "=X,&r"))]
!   ""
! {
!   return output_a_shift (operands);
! }
!   [(set (attr "length")
! 	(symbol_ref "compute_a_shift_length (insn, operands)"))
!    (set (attr "cc")
! 	(symbol_ref "compute_a_shift_cc (insn, operands)"))])
! 
! ;;  SI BIT SHIFTS
! 
! (define_expand "ashlsi3"
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(ashift:SI (match_operand:SI 1 "register_operand" "")
! 		   (match_operand:QI 2 "nonmemory_operand" "")))]
!   ""
!   {
!     if (expand_a_shift (SImode, ASHIFT, operands))
!     DONE;
!   })
! 
! (define_expand "lshrsi3"
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(lshiftrt:SI (match_operand:SI 1 "register_operand" "")
! 		     (match_operand:QI 2 "nonmemory_operand" "")))]
!   ""
!   {
!     if (expand_a_shift (SImode, LSHIFTRT, operands))
!     DONE;
!   })
! 
! (define_expand "ashrsi3"
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(ashiftrt:SI (match_operand:SI 1 "register_operand" "")
! 		     (match_operand:QI 2 "nonmemory_operand" "")))]
!   ""
!   {
!     if (expand_a_shift (SImode, ASHIFTRT, operands))
!     DONE;
!   })
! 
! (define_insn ""
!   [(set (match_operand:SI 0 "h8300_dst_operand" "=rQ")
! 	(match_operator:SI 3 "h8sx_unary_shift_operator"
! 	 [(match_operand:SI 1 "h8300_dst_operand" "0")
! 	  (match_operand:QI 2 "const_int_operand" "")]))]
!   "h8300_operands_match_p (operands)"
! {
!   return output_h8sx_shift (operands, 'l', 'S');
! }
!   [(set_attr "length_table" "unary")
!    (set_attr "cc" "set_znv")])
! 
! (define_insn ""
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(match_operator:SI 3 "h8sx_binary_shift_operator"
! 	 [(match_operand:SI 1 "register_operand" "0")
! 	  (match_operand:QI 2 "nonmemory_operand" "r P5>X")]))]
!   ""
! {
!   return output_h8sx_shift (operands, 'l', 'S');
! }
!   [(set_attr "length" "4")
!    (set_attr "cc" "set_znv")])
! 
! (define_insn "*shiftsi"
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
! 	(match_operator:SI 3 "nshift_operator"
! 	 [(match_operand:SI 1 "register_operand" "0,0")
! 	  (match_operand:QI 2 "nonmemory_operand" "T,rn")]))
!    (clobber (match_scratch:QI 4 "=X,&r"))]
!   ""
! {
!   return output_a_shift (operands);
! }
!   [(set (attr "length")
! 	(symbol_ref "compute_a_shift_length (insn, operands)"))
!    (set (attr "cc")
! 	(symbol_ref "compute_a_shift_cc (insn, operands)"))])
! 
! ;; Split a variable shift into a loop.  If the register containing
! ;; the shift count dies, then we just use that register.
! 
! (define_split
!   [(set (match_operand 0 "register_operand" "")
! 	(match_operator 2 "nshift_operator"
! 	 [(match_dup 0)
! 	  (match_operand:QI 1 "register_operand" "")]))
!    (clobber (match_operand:QI 3 "register_operand" ""))]
!   "epilogue_completed
!    && find_regno_note (insn, REG_DEAD, REGNO (operands[1]))"
!   [(set (cc0) (compare (match_dup 1) (const_int 0)))
!    (set (pc)
!         (if_then_else (le (cc0) (const_int 0))
! 		      (label_ref (match_dup 5))
! 		      (pc)))
!    (match_dup 4)
!    (parallel
!      [(set (match_dup 0)
! 	   (match_op_dup 2 [(match_dup 0) (const_int 1)]))
!       (clobber (scratch:QI))])
!    (set (match_dup 1) (plus:QI (match_dup 1) (const_int -1)))
!    (set (cc0) (compare (match_dup 1) (const_int 0)))
!    (set (pc)
!         (if_then_else (ne (cc0) (const_int 0))
! 		      (label_ref (match_dup 4))
! 		      (pc)))
!    (match_dup 5)]
!   {
!     operands[4] = gen_label_rtx ();
!     operands[5] = gen_label_rtx ();
!   })
! 
! (define_split
!   [(set (match_operand 0 "register_operand" "")
! 	(match_operator 2 "nshift_operator"
! 	 [(match_dup 0)
! 	  (match_operand:QI 1 "register_operand" "")]))
!    (clobber (match_operand:QI 3 "register_operand" ""))]
!   "epilogue_completed
!    && !find_regno_note (insn, REG_DEAD, REGNO (operands[1]))"
!   [(set (match_dup 3)
! 	(match_dup 1))
!    (set (cc0) (compare (match_dup 3) (const_int 0)))
!    (set (pc)
!         (if_then_else (le (cc0) (const_int 0))
! 		      (label_ref (match_dup 5))
! 		      (pc)))
!    (match_dup 4)
!    (parallel
!      [(set (match_dup 0)
! 	   (match_op_dup 2 [(match_dup 0) (const_int 1)]))
!       (clobber (scratch:QI))])
!    (set (match_dup 3) (plus:QI (match_dup 3) (const_int -1)))
!    (set (cc0) (compare (match_dup 3) (const_int 0)))
!    (set (pc)
!         (if_then_else (ne (cc0) (const_int 0))
! 		      (label_ref (match_dup 4))
! 		      (pc)))
!    (match_dup 5)]
!   {
!     operands[4] = gen_label_rtx ();
!     operands[5] = gen_label_rtx ();
!   })
! 
! ;; ----------------------------------------------------------------------
! ;; ROTATIONS
! ;; ----------------------------------------------------------------------
! 
! (define_expand "rotl<mode>3"
!   [(set (match_operand:QHI 0 "register_operand" "")
! 	(rotate:QHI (match_operand:QHI 1 "register_operand" "")
! 		    (match_operand:QI 2 "nonmemory_operand" "")))]
!   ""
!   {
!     if (expand_a_rotate (operands))
!     DONE;
!   })
! 
! (define_insn "rotl<mode>3_1"
!   [(set (match_operand:QHI 0 "register_operand" "=r")
! 	(rotate:QHI (match_operand:QHI 1 "register_operand" "0")
! 		    (match_operand:QI 2 "immediate_operand" "")))]
!   ""
! {
!   return output_a_rotate (ROTATE, operands);
! }
!   [(set (attr "length")
! 	(symbol_ref "compute_a_rotate_length (operands)"))])
! 
! (define_expand "rotlsi3"
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(rotate:SI (match_operand:SI 1 "register_operand" "")
! 		   (match_operand:QI 2 "nonmemory_operand" "")))]
!   "TARGET_H8300H || TARGET_H8300S"
!   {
!     if (expand_a_rotate (operands))
!     DONE;
!   })
! 
! (define_insn "rotlsi3_1"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(rotate:SI (match_operand:SI 1 "register_operand" "0")
! 		   (match_operand:QI 2 "immediate_operand" "")))]
!   "TARGET_H8300H || TARGET_H8300S"
! {
!   return output_a_rotate (ROTATE, operands);
! }
!   [(set (attr "length")
! 	(symbol_ref "compute_a_rotate_length (operands)"))])
! 
! ;; -----------------------------------------------------------------
! ;; BIT FIELDS
! ;; -----------------------------------------------------------------
! ;; The H8/300 has given 1/8th of its opcode space to bitfield
! ;; instructions so let's use them as well as we can.
! 
! ;; You'll never believe all these patterns perform one basic action --
! ;; load a bit from the source, optionally invert the bit, then store it
! ;; in the destination (which is known to be zero).
! ;;
! ;; Combine obviously need some work to better identify this situation and
! ;; canonicalize the form better.
! 
! ;;
! ;; Normal loads with a 16bit destination.
! ;;
! 
! (define_insn ""
!   [(set (match_operand:HI 0 "register_operand" "=&r")
! 	(zero_extract:HI (match_operand:HI 1 "register_operand" "r")
! 			 (const_int 1)
! 			 (match_operand:HI 2 "immediate_operand" "n")))]
!   "TARGET_H8300"
!   "sub.w	%0,%0\;bld	%Z2,%Y1\;bst	#0,%X0"
!   [(set_attr "length" "6")])
! 
! ;;
! ;; Inverted loads with a 16bit destination.
! ;;
! 
! (define_insn ""
!   [(set (match_operand:HI 0 "register_operand" "=&r")
! 	(zero_extract:HI (xor:HI (match_operand:HI 1 "register_operand" "r")
! 				 (match_operand:HI 3 "const_int_operand" "n"))
! 			 (const_int 1)
! 			 (match_operand:HI 2 "const_int_operand" "n")))]
!   "(TARGET_H8300 || TARGET_H8300SX)
!     && (1 << INTVAL (operands[2])) == INTVAL (operands[3])"
!   "sub.w	%0,%0\;bild	%Z2,%Y1\;bst	#0,%X0"
!   [(set_attr "length" "8")])
! 
! ;;
! ;; Normal loads with a 32bit destination.
! ;;
! 
! (define_insn "*extzv_1_r_h8300"
!   [(set (match_operand:SI 0 "register_operand" "=&r")
! 	(zero_extract:SI (match_operand:HI 1 "register_operand" "r")
! 			 (const_int 1)
! 			 (match_operand 2 "const_int_operand" "n")))]
!   "TARGET_H8300 && INTVAL (operands[2]) < 16"
! {
!   return output_simode_bld (0, operands);
! }
!   [(set_attr "length" "8")])
! 
! (define_insn "*extzv_1_r_h8300hs"
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
! 	(zero_extract:SI (match_operand:SI 1 "register_operand" "?0,r")
! 			 (const_int 1)
! 			 (match_operand 2 "const_int_operand" "n,n")))]
!   "(TARGET_H8300H || TARGET_H8300S) && INTVAL (operands[2]) < 16"
! {
!   return output_simode_bld (0, operands);
! }
!   [(set_attr "cc" "set_znv,set_znv")
!    (set_attr "length" "8,6")])
! 
! ;;
! ;; Inverted loads with a 32bit destination.
! ;;
! 
! (define_insn "*extzv_1_r_inv_h8300"
!   [(set (match_operand:SI 0 "register_operand" "=&r")
! 	(zero_extract:SI (xor:HI (match_operand:HI 1 "register_operand" "r")
! 				 (match_operand:HI 3 "const_int_operand" "n"))
! 			 (const_int 1)
! 			 (match_operand 2 "const_int_operand" "n")))]
!   "TARGET_H8300 && INTVAL (operands[2]) < 16
!    && (1 << INTVAL (operands[2])) == INTVAL (operands[3])"
! {
!   return output_simode_bld (1, operands);
! }
!   [(set_attr "length" "8")])
! 
! (define_insn "*extzv_1_r_inv_h8300hs"
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
! 	(zero_extract:SI (xor:SI (match_operand:SI 1 "register_operand" "?0,r")
! 				 (match_operand 3 "const_int_operand" "n,n"))
! 			 (const_int 1)
! 			 (match_operand 2 "const_int_operand" "n,n")))]
!   "(TARGET_H8300H || TARGET_H8300S) && INTVAL (operands[2]) < 16
!     && (1 << INTVAL (operands[2])) == INTVAL (operands[3])"
! {
!   return output_simode_bld (1, operands);
! }
!   [(set_attr "cc" "set_znv,set_znv")
!    (set_attr "length" "8,6")])
! 
! (define_expand "insv"
!   [(set (zero_extract:HI (match_operand:HI 0 "general_operand" "")
! 			 (match_operand:HI 1 "general_operand" "")
! 			 (match_operand:HI 2 "general_operand" ""))
! 	(match_operand:HI 3 "general_operand" ""))]
!   "TARGET_H8300 || TARGET_H8300SX"
!   {
!     if (TARGET_H8300SX)
!       {
! 	if (GET_CODE (operands[1]) == CONST_INT
! 	    && GET_CODE (operands[2]) == CONST_INT
! 	    && INTVAL (operands[1]) <= 8
! 	    && INTVAL (operands[2]) >= 0
! 	    && INTVAL (operands[1]) + INTVAL (operands[2]) <= 8
! 	    && memory_operand (operands[0], GET_MODE (operands[0])))
! 	  {
! 	    /* If the source operand is zero, it's better to use AND rather
! 	       than BFST.  Likewise OR if the operand is all ones.  */
! 	    if (GET_CODE (operands[3]) == CONST_INT)
! 	      {
! 		HOST_WIDE_INT mask = (1 << INTVAL (operands[1])) - 1;
! 		if ((INTVAL (operands[3]) & mask) == 0)
! 		  FAIL;
! 		if ((INTVAL (operands[3]) & mask) == mask)
! 		  FAIL;
! 	      }
! 	    if (! bit_memory_operand (operands[0], GET_MODE (operands[0])))
! 	      {
! 		if (!can_create_pseudo_p ())
! 		  FAIL;
! 		operands[0] =  replace_equiv_address (operands[0], force_reg (Pmode,
! 						      XEXP (operands[0], 0)));
! 	      }
! 	    operands[3] = gen_lowpart (QImode, operands[3]);
! 	    if (! operands[3])
! 	      FAIL;
! 	    if (! register_operand (operands[3], QImode))
! 	      {
! 		if (!can_create_pseudo_p ())
! 		  FAIL;
! 		operands[3] = force_reg (QImode, operands[3]);
! 	      }
! 	    emit_insn (gen_bfst (adjust_address (operands[0], QImode, 0),
! 						 operands[3], operands[1], operands[2]));
! 	    DONE;
! 	  }
! 	FAIL;
!       }
! 
!     /* We only have single bit bit-field instructions.  */
!     if (INTVAL (operands[1]) != 1)
!       FAIL;
! 
!     /* For now, we don't allow memory operands.  */
!     if (GET_CODE (operands[0]) == MEM
! 	|| GET_CODE (operands[3]) == MEM)
!       FAIL;
! 
!     if (GET_CODE (operands[3]) != REG)
!       operands[3] = force_reg (HImode, operands[3]);
!   })
! 
! (define_insn ""
!   [(set (zero_extract:HI (match_operand:HI 0 "register_operand" "+r")
! 			 (const_int 1)
! 			 (match_operand:HI 1 "immediate_operand" "n"))
! 	(match_operand:HI 2 "register_operand" "r"))]
!   ""
!   "bld	#0,%R2\;bst	%Z1,%Y0 ; i1"
!   [(set_attr "length" "4")])
! 
! (define_expand "extzv"
!   [(set (match_operand:HI 0 "register_operand" "")
! 	(zero_extract:HI (match_operand:HI 1 "bit_operand" "")
! 			 (match_operand:HI 2 "general_operand" "")
! 			 (match_operand:HI 3 "general_operand" "")))]
!   "TARGET_H8300 || TARGET_H8300SX"
!   {
!     if (TARGET_H8300SX)
!       {
! 	if (GET_CODE (operands[2]) == CONST_INT
! 	    && GET_CODE (operands[3]) == CONST_INT
! 	    && INTVAL (operands[2]) <= 8
! 	    && INTVAL (operands[3]) >= 0
! 	    && INTVAL (operands[2]) + INTVAL (operands[3]) <= 8
! 	    && memory_operand (operands[1], QImode))
! 	  {
! 	    rtx temp;
! 
! 	    /* Optimize the case where we're extracting into a paradoxical
! 	       subreg.  It's only necessary to extend to the inner reg.  */
! 	    if (GET_CODE (operands[0]) == SUBREG
! 		&& subreg_lowpart_p (operands[0])
! 		&& (GET_MODE_SIZE (GET_MODE (SUBREG_REG (operands[0])))
! 		    < GET_MODE_SIZE (GET_MODE (operands[0])))
! 		&& (GET_MODE_CLASS (GET_MODE (SUBREG_REG (operands[0])))
! 		    == MODE_INT))
! 	      operands[0] = SUBREG_REG (operands[0]);
! 
! 	    if (!can_create_pseudo_p ())
! 	      temp = gen_lowpart (QImode, operands[0]);
! 	    else
! 	      temp = gen_reg_rtx (QImode);
! 	    if (! temp)
! 	      FAIL;
!             if (! bit_memory_operand (operands[1], QImode))
! 	      {
! 		if (!can_create_pseudo_p ())
! 		  FAIL;
! 		operands[1] = replace_equiv_address (operands[1],
! 						     force_reg (Pmode, XEXP (operands[1], 0)));
! 	      }
! 	    emit_insn (gen_bfld (temp, operands[1], operands[2], operands[3]));
! 	    convert_move (operands[0], temp, 1);
! 	    DONE;
!           }
! 	FAIL;
!       }
! 
!     /* We only have single bit bit-field instructions.  */
!     if (INTVAL (operands[2]) != 1)
!       FAIL;
! 
!     /* For now, we don't allow memory operands.  */
!     if (GET_CODE (operands[1]) == MEM)
!       FAIL;
!   })
! 
! ;; BAND, BOR, and BXOR patterns
! 
! (define_insn ""
!   [(set (match_operand:HI 0 "bit_operand" "=Ur")
! 	(match_operator:HI 4 "bit_operator"
! 	 [(zero_extract:HI (match_operand:HI 1 "register_operand" "r")
! 			   (const_int 1)
! 			   (match_operand:HI 2 "immediate_operand" "n"))
! 	  (match_operand:HI 3 "bit_operand" "0")]))]
!   ""
!   "bld	%Z2,%Y1\;b%c4	#0,%R0\;bst	#0,%R0; bl1"
!   [(set_attr "length" "6")])
! 
! (define_insn ""
!   [(set (match_operand:HI 0 "bit_operand" "=Ur")
! 	(match_operator:HI 5 "bit_operator"
! 	 [(zero_extract:HI (match_operand:HI 1 "register_operand" "r")
! 			   (const_int 1)
! 			   (match_operand:HI 2 "immediate_operand" "n"))
! 	  (zero_extract:HI (match_operand:HI 3 "register_operand" "r")
! 			   (const_int 1)
! 			   (match_operand:HI 4 "immediate_operand" "n"))]))]
!   ""
!   "bld	%Z2,%Y1\;b%c5	%Z4,%Y3\;bst	#0,%R0; bl3"
!   [(set_attr "length" "6")])
! 
! (define_insn "bfld"
!   [(set (match_operand:QI 0 "register_operand" "=r")
! 	(zero_extract:QI (match_operand:QI 1 "bit_memory_operand" "WU")
! 			 (match_operand:QI 2 "immediate_operand" "n")
! 			 (match_operand:QI 3 "immediate_operand" "n")))]
!   "TARGET_H8300SX && INTVAL (operands[2]) + INTVAL (operands[3]) <= 8"
! {
!   operands[2] = GEN_INT ((1 << (INTVAL (operands[2]) + INTVAL (operands[3])))
! 			 - (1 << INTVAL (operands[3])));
!   return "bfld	%2,%1,%R0";
! }
!   [(set_attr "cc" "none_0hit")
!    (set_attr "length_table" "bitfield")])
! 
! (define_insn "bfst"
!   [(set (zero_extract:QI (match_operand:QI 0 "bit_memory_operand" "+WU")
! 			 (match_operand:QI 2 "immediate_operand" "n")
! 			 (match_operand:QI 3 "immediate_operand" "n"))
! 	(match_operand:QI 1 "register_operand" "r"))]
!   "TARGET_H8300SX && INTVAL (operands[2]) + INTVAL (operands[3]) <= 8"
! {
!   operands[2] = GEN_INT ((1 << (INTVAL (operands[2]) + INTVAL (operands[3])))
! 			 - (1 << INTVAL (operands[3])));
!   return "bfst	%R1,%2,%0";
! }
!   [(set_attr "cc" "none_0hit")
!    (set_attr "length_table" "bitfield")])
! 
! (define_expand "cstoreqi4"
!   [(use (match_operator 1 "eqne_operator"
!          [(match_operand:QI 2 "h8300_dst_operand" "")
!           (match_operand:QI 3 "h8300_src_operand" "")]))
!    (clobber (match_operand:HI 0 "register_operand"))]
!   "TARGET_H8300SX"
!   {
!     h8300_expand_store (operands);
!     DONE;
!   })
! 
! (define_expand "cstorehi4"
!   [(use (match_operator 1 "eqne_operator"
!          [(match_operand:HI 2 "h8300_dst_operand" "")
!           (match_operand:HI 3 "h8300_src_operand" "")]))
!    (clobber (match_operand:HI 0 "register_operand"))]
!   "TARGET_H8300SX"
!   {
!     h8300_expand_store (operands);
!     DONE;
!   })
! 
! (define_expand "cstoresi4"
!   [(use (match_operator 1 "eqne_operator"
!          [(match_operand:SI 2 "h8300_dst_operand" "")
!           (match_operand:SI 3 "h8300_src_operand" "")]))
!    (clobber (match_operand:HI 0 "register_operand"))]
!   "TARGET_H8300SX"
!   {
!     h8300_expand_store (operands);
!     DONE;
!   })
! 
! (define_insn "*bstzhireg"
!   [(set (match_operand:HI 0 "register_operand" "=r")
! 	(match_operator:HI 1 "eqne_operator" [(cc0) (const_int 0)]))]
!   "TARGET_H8300SX"
!   "mulu.w	#0,%T0\;b%k1	.Lh8BR%=\;inc.w	#1,%T0\\n.Lh8BR%=:"
!   [(set_attr "cc" "clobber")])
! 
! (define_insn_and_split "*cmpstz"
!   [(set (zero_extract:QI (match_operand:QI 0 "bit_memory_operand" "+WU,WU")
! 			 (const_int 1)
! 			 (match_operand:QI 1 "immediate_operand" "n,n"))
! 	(match_operator:QI 2 "eqne_operator"
! 	 [(match_operand 3 "h8300_dst_operand" "r,rQ")
! 	  (match_operand 4 "h8300_src_operand" "I,rQi")]))]
!   "TARGET_H8300SX
!    && (GET_MODE (operands[3]) == GET_MODE (operands[4])
!        || GET_CODE (operands[4]) == CONST_INT)
!    && GET_MODE_CLASS (GET_MODE (operands[3])) == MODE_INT
!    && GET_MODE_SIZE (GET_MODE (operands[3])) <= 4"
!   "#"
!   "reload_completed"
!   [(set (cc0) (match_dup 5))
!    (set (zero_extract:QI (match_dup 0) (const_int 1) (match_dup 1))
! 	(match_op_dup:QI 2 [(cc0) (const_int 0)]))]
!   {
!     operands[5] = gen_rtx_COMPARE (VOIDmode, operands[3], operands[4]);
!   }
!   [(set_attr "cc" "set_znv,compare")])
! 
! (define_insn "*bstz"
!   [(set (zero_extract:QI (match_operand:QI 0 "bit_memory_operand" "+WU")
! 			 (const_int 1)
! 			 (match_operand:QI 1 "immediate_operand" "n"))
! 	(eq:QI (cc0) (const_int 0)))]
!   "TARGET_H8300SX && reload_completed"
!   "bstz	%1,%0"
!   [(set_attr "cc" "none_0hit")
!    (set_attr "length_table" "unary")])
! 
! (define_insn "*bistz"
!   [(set (zero_extract:QI (match_operand:QI 0 "bit_memory_operand" "+WU")
! 			 (const_int 1)
! 			 (match_operand:QI 1 "immediate_operand" "n"))
! 	(ne:QI (cc0) (const_int 0)))]
!   "TARGET_H8300SX && reload_completed"
!   "bistz	%1,%0"
!   [(set_attr "cc" "none_0hit")
!    (set_attr "length_table" "unary")])
! 
! (define_insn_and_split "*cmpcondbset"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=WU,WU")
! 	(if_then_else:QI (match_operator 1 "eqne_operator"
! 			  [(match_operand 2 "h8300_dst_operand" "r,rQ")
! 			   (match_operand 3 "h8300_src_operand" "I,rQi")])
! 			 (ior:QI (match_operand:QI 4 "bit_memory_operand" "0,0")
! 				 (match_operand:QI 5 "single_one_operand" "n,n"))
! 			 (match_dup 4)))]
!   "TARGET_H8300SX"
!   "#"
!   "reload_completed"
!   [(set (cc0) (match_dup 6))
!    (set (match_dup 0)
! 	(if_then_else:QI (match_op_dup 1 [(cc0) (const_int 0)])
! 			 (ior:QI (match_dup 4) (match_dup 5))
! 			 (match_dup 4)))]
!   {
!     operands[6] = gen_rtx_COMPARE (VOIDmode, operands[2], operands[3]);
!   }
!   [(set_attr "cc" "set_znv,compare")])
! 
! (define_insn "*condbset"
!   [(set (match_operand:QI 0 "bit_memory_operand" "=WU")
! 	(if_then_else:QI (match_operator:QI 2 "eqne_operator"
! 			  [(cc0) (const_int 0)])
! 			 (ior:QI (match_operand:QI 3 "bit_memory_operand" "0")
! 				 (match_operand:QI 1 "single_one_operand" "n"))
! 			 (match_dup 3)))]
!   "TARGET_H8300SX && reload_completed"
!   "bset/%j2\t%V1,%0"
!   [(set_attr "cc" "none_0hit")
!    (set_attr "length_table" "logicb")])
! 
! (define_insn_and_split "*cmpcondbclr"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=WU,WU")
! 	(if_then_else:QI (match_operator 1 "eqne_operator"
! 			  [(match_operand 2 "h8300_dst_operand" "r,rQ")
! 			   (match_operand 3 "h8300_src_operand" "I,rQi")])
! 			 (and:QI (match_operand:QI 4 "bit_memory_operand" "0,0")
! 				 (match_operand:QI 5 "single_zero_operand" "n,n"))
! 			 (match_dup 4)))]
!   "TARGET_H8300SX"
!   "#"
!   "reload_completed"
!   [(set (cc0) (match_dup 6))
!    (set (match_dup 0)
! 	(if_then_else:QI (match_op_dup 1 [(cc0) (const_int 0)])
! 			 (and:QI (match_dup 4) (match_dup 5))
! 			 (match_dup 4)))]
!   {
!     operands[6] = gen_rtx_COMPARE (VOIDmode, operands[2], operands[3]);
!   }
!   [(set_attr "cc" "set_znv,compare")])
! 
! (define_insn "*condbclr"
!   [(set (match_operand:QI 0 "bit_memory_operand" "=WU")
! 	(if_then_else:QI (match_operator:QI 2 "eqne_operator"
! 			  [(cc0) (const_int 0)])
! 			 (and:QI (match_operand:QI 3 "bit_memory_operand" "0")
! 				 (match_operand:QI 1 "single_zero_operand" "n"))
! 			 (match_dup 3)))]
!   "TARGET_H8300SX && reload_completed"
!   "bclr/%j2\t%W1,%0"
!   [(set_attr "cc" "none_0hit")
!    (set_attr "length_table" "logicb")])
! 
! (define_insn_and_split "*cmpcondbsetreg"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=WU,WU")
! 	(if_then_else:QI (match_operator 1 "eqne_operator"
! 			  [(match_operand 2 "h8300_dst_operand" "r,rQ")
! 			   (match_operand 3 "h8300_src_operand" "I,rQi")])
! 			 (ior:QI (match_operand:QI 4 "bit_memory_operand" "0,0")
! 				 (ashift:QI (const_int 1)
! 					    (match_operand:QI 5 "register_operand" "r,r")))
! 			 (match_dup 4)))]
!   "TARGET_H8300SX"
!   "#"
!   "reload_completed"
!   [(set (cc0) (match_dup 6))
!    (set (match_dup 0)
! 	(if_then_else:QI (match_op_dup 1 [(cc0) (const_int 0)])
! 			 (ior:QI (match_dup 4)
! 				 (ashift:QI (const_int 1)
! 					    (match_operand:QI 5 "register_operand" "r,r")))
! 			 (match_dup 4)))]
!   {
!     operands[6] = gen_rtx_COMPARE (VOIDmode, operands[2], operands[3]);
!   }
!   [(set_attr "cc" "set_znv,compare")])
! 
! (define_insn "*condbsetreg"
!   [(set (match_operand:QI 0 "bit_memory_operand" "=WU")
! 	(if_then_else:QI (match_operator:QI 2 "eqne_operator"
! 			  [(cc0) (const_int 0)])
! 			 (ior:QI (match_operand:QI 3 "bit_memory_operand" "0")
! 				 (ashift:QI (const_int 1)
! 					    (match_operand:QI 1 "register_operand" "r")))
! 			 (match_dup 3)))]
!   "TARGET_H8300SX && reload_completed"
!   "bset/%j2\t%R1,%0"
!   [(set_attr "cc" "none_0hit")
!    (set_attr "length_table" "logicb")])
! 
! (define_insn_and_split "*cmpcondbclrreg"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=WU,WU")
! 	(if_then_else:QI (match_operator 1 "eqne_operator"
! 			  [(match_operand 2 "h8300_dst_operand" "r,rQ")
! 			   (match_operand 3 "h8300_src_operand" "I,rQi")])
! 			 (and:QI (match_operand:QI 4 "bit_memory_operand" "0,0")
! 				 (ashift:QI (const_int 1)
! 					    (match_operand:QI 5 "register_operand" "r,r")))
! 			 (match_dup 4)))]
!   "TARGET_H8300SX"
!   "#"
!   "reload_completed"
!   [(set (cc0) (match_dup 6))
!    (set (match_dup 0)
! 	(if_then_else:QI (match_op_dup 1 [(cc0) (const_int 0)])
! 			 (and:QI (match_dup 4)
! 				 (ashift:QI (const_int 1)
! 					    (match_operand:QI 5 "register_operand" "r,r")))
! 			 (match_dup 4)))]
!   {
!     operands[6] = gen_rtx_COMPARE (VOIDmode, operands[2], operands[3]);
!   }
!   [(set_attr "cc" "set_znv,compare")])
! 
! (define_insn "*condbclrreg"
!   [(set (match_operand:QI 0 "bit_memory_operand" "=WU")
! 	(if_then_else:QI (match_operator:QI 2 "eqne_operator"
! 			  [(cc0) (const_int 0)])
! 			 (and:QI (match_operand:QI 3 "bit_memory_operand" "0")
! 				 (ashift:QI (const_int 1)
! 					    (match_operand:QI 1 "register_operand" "r")))
! 			 (match_dup 3)))]
!   "TARGET_H8300SX && reload_completed"
!   "bclr/%j2\t%R1,%0"
!   [(set_attr "cc" "none_0hit")
!    (set_attr "length_table" "logicb")])
! 
! 
! ;; -----------------------------------------------------------------
! ;; COMBINE PATTERNS
! ;; -----------------------------------------------------------------
! 
! ;; insv:SI
! 
! (define_insn "*insv_si_1_n"
!   [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+r")
! 			 (const_int 1)
! 			 (match_operand:SI 1 "const_int_operand" "n"))
! 	(match_operand:SI 2 "register_operand" "r"))]
!   "(TARGET_H8300H || TARGET_H8300S) && INTVAL (operands[1]) < 16"
!   "bld\\t#0,%w2\;bst\\t%Z1,%Y0"
!   [(set_attr "length" "4")])
! 
! (define_insn "*insv_si_1_n_lshiftrt"
!   [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+r")
! 			 (const_int 1)
! 			 (match_operand:SI 1 "const_int_operand" "n"))
! 	(lshiftrt:SI (match_operand:SI 2 "register_operand" "r")
! 		     (match_operand:SI 3 "const_int_operand" "n")))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && INTVAL (operands[1]) < 16
!     && INTVAL (operands[3]) < 16"
!   "bld\\t%Z3,%Y2\;bst\\t%Z1,%Y0"
!   [(set_attr "length" "4")])
! 
! (define_insn "*insv_si_1_n_lshiftrt_16"
!   [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+r")
! 			 (const_int 1)
! 			 (match_operand:SI 1 "const_int_operand" "n"))
! 	(lshiftrt:SI (match_operand:SI 2 "register_operand" "r")
! 		     (const_int 16)))]
!   "(TARGET_H8300H || TARGET_H8300S) && INTVAL (operands[1]) < 16"
!   "rotr.w\\t%e2\;rotl.w\\t%e2\;bst\\t%Z1,%Y0"
!   [(set_attr "length" "6")])
! 
! (define_insn "*insv_si_8_8"
!   [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+r")
! 			 (const_int 8)
! 			 (const_int 8))
! 	(match_operand:SI 1 "register_operand" "r"))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "mov.b\\t%w1,%x0"
!   [(set_attr "length" "2")])
! 
! (define_insn "*insv_si_8_8_lshiftrt_8"
!   [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+r")
! 			 (const_int 8)
! 			 (const_int 8))
! 	(lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
! 		     (const_int 8)))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "mov.b\\t%x1,%x0"
!   [(set_attr "length" "2")])
! 
! ;; extzv:SI
! 
! (define_insn "*extzv_8_8"
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
! 	(zero_extract:SI (match_operand:SI 1 "register_operand" "?0,r")
! 			 (const_int 8)
! 			 (const_int 8)))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "@
!    mov.b\\t%x1,%w0\;extu.w\\t%f0\;extu.l\\t%S0
!    sub.l\\t%S0,%S0\;mov.b\\t%x1,%w0"
!   [(set_attr "cc" "set_znv,clobber")
!    (set_attr "length" "6,4")])
! 
! (define_insn "*extzv_8_16"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(zero_extract:SI (match_operand:SI 1 "register_operand" "r")
! 			 (const_int 8)
! 			 (const_int 16)))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "mov.w\\t%e1,%f0\;extu.w\\t%f0\;extu.l\\t%S0"
!   [(set_attr "cc" "set_znv")
!    (set_attr "length" "6")])
! 
! (define_insn "*extzv_16_8"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(zero_extract:SI (match_operand:SI 1 "register_operand" "r")
! 			 (const_int 16)
! 			 (const_int 8)))
!    (clobber (match_scratch:SI 2 "=&r"))]
!   "TARGET_H8300H"
!   "mov.w\\t%e1,%f2\;mov.b\\t%x1,%w0\;mov.b\\t%w2,%x0\;extu.l\\t%S0"
!   [(set_attr "length" "8")
!    (set_attr "cc" "set_znv")])
! 
! ;; Extract the exponent of a float.
! 
! (define_insn_and_split "*extzv_8_23"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(zero_extract:SI (match_operand:SI 1 "register_operand" "0")
! 			 (const_int 8)
! 			 (const_int 23)))]
!   "(TARGET_H8300H || TARGET_H8300S)"
!   "#"
!   "&& reload_completed"
!   [(parallel [(set (match_dup 0)
! 		   (ashift:SI (match_dup 0)
! 			      (const_int 1)))
! 	      (clobber (scratch:QI))])
!    (parallel [(set (match_dup 0)
! 		   (lshiftrt:SI (match_dup 0)
! 				(const_int 24)))
! 	      (clobber (scratch:QI))])]
!   "")
! 
! ;; and:SI
! 
! ;; ((SImode) HImode) << 15
! 
! (define_insn_and_split "*twoshifts_l16_r1"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(and:SI (ashift:SI (match_operand:SI 1 "register_operand" "0")
! 			   (const_int 15))
! 		(const_int 2147450880)))]
!   "(TARGET_H8300H || TARGET_H8300S)"
!   "#"
!   "&& reload_completed"
!   [(parallel [(set (match_dup 0)
! 		   (ashift:SI (match_dup 0)
! 			      (const_int 16)))
! 	      (clobber (scratch:QI))])
!    (parallel [(set (match_dup 0)
! 		   (lshiftrt:SI (match_dup 0)
! 				(const_int 1)))
! 	      (clobber (scratch:QI))])]
!   "")
! 
! ;; Transform (SImode << B) & 0xffff into (SImode) (HImode << B).
! 
! (define_insn_and_split "*andsi3_ashift_n_lower"
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
! 	(and:SI (ashift:SI (match_operand:SI 1 "register_operand" "0,0")
! 			   (match_operand:QI 2 "const_int_operand" "S,n"))
! 		(match_operand:SI 3 "const_int_operand" "n,n")))
!    (clobber (match_scratch:QI 4 "=X,&r"))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && INTVAL (operands[2]) <= 15
!     && UINTVAL (operands[3]) == ((HOST_WIDE_INT_M1U << INTVAL (operands[2]))
! 				 & 0xffff)"
!   "#"
!   "&& reload_completed"
!   [(parallel [(set (match_dup 5)
! 		   (ashift:HI (match_dup 5)
! 			      (match_dup 2)))
! 	      (clobber (match_dup 4))])
!    (set (match_dup 0)
! 	(zero_extend:SI (match_dup 5)))]
!   {
!     operands[5] = gen_rtx_REG (HImode, REGNO (operands[0]));
!   })
! 
! ;; Accept (A >> 30) & 2 and the like.
! 
! (define_insn "*andsi3_lshiftrt_n_sb"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(and:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "0")
! 			     (match_operand:SI 2 "const_int_operand" "n"))
! 		(match_operand:SI 3 "single_one_operand" "n")))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && exact_log2 (INTVAL (operands[3])) < 16
!     && INTVAL (operands[2]) + exact_log2 (INTVAL (operands[3])) == 31"
! {
!   operands[3] = GEN_INT (exact_log2 (INTVAL (operands[3])));
!   return "shll.l\\t%S0\;xor.l\\t%S0,%S0\;bst\\t%Z3,%Y0";
! }
!   [(set_attr "length" "8")])
! 
! (define_insn_and_split "*andsi3_lshiftrt_9_sb"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(and:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "0")
! 			     (const_int 9))
! 		(const_int 4194304)))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "#"
!   "&& reload_completed"
!   [(set (match_dup 0)
! 	(and:SI (lshiftrt:SI (match_dup 0)
! 			     (const_int 25))
! 		(const_int 64)))
!    (parallel [(set (match_dup 0)
! 		   (ashift:SI (match_dup 0)
! 			      (const_int 16)))
! 	      (clobber (scratch:QI))])]
!   "")
! 
! ;; plus:SI
! 
! (define_insn "*addsi3_upper"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(plus:SI (mult:SI (match_operand:SI 1 "register_operand" "r")
! 			  (const_int 65536))
! 		 (match_operand:SI 2 "register_operand" "0")))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "add.w\\t%f1,%e0"
!   [(set_attr "length" "2")])
! 
! (define_insn "*addsi3_lshiftrt_16_zexthi"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(plus:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
! 			      (const_int 16))
! 		 (zero_extend:SI (match_operand:HI 2 "register_operand" "0"))))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "add.w\\t%e1,%f0\;xor.w\\t%e0,%e0\;rotxl.w\\t%e0"
!   [(set_attr "length" "6")])
! 
! (define_insn_and_split "*addsi3_and_r_1"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(plus:SI (and:SI (match_operand:SI 1 "register_operand" "r")
! 			 (const_int 1))
! 		 (match_operand:SI 2 "register_operand" "0")))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "#"
!   "&& reload_completed"
!   [(set (cc0) (compare (zero_extract:SI (match_dup 1)
! 					(const_int 1)
! 					(const_int 0))
! 		       (const_int 0)))
!    (set (pc)
!         (if_then_else (eq (cc0)
! 			  (const_int 0))
! 		      (label_ref (match_dup 3))
! 		      (pc)))
!    (set (match_dup 2)
!         (plus:SI (match_dup 2)
! 		 (const_int 1)))
!    (match_dup 3)]
!   {
!     operands[3] = gen_label_rtx ();
!   })
! 
! (define_insn_and_split "*addsi3_and_not_r_1"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(plus:SI (and:SI (not:SI (match_operand:SI 1 "register_operand" "r"))
! 			 (const_int 1))
! 		 (match_operand:SI 2 "register_operand" "0")))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "#"
!   "&& reload_completed"
!   [(set (cc0) (compare (zero_extract:SI (match_dup 1)
! 					(const_int 1)
! 					(const_int 0))
! 		       (const_int 0)))
!    (set (pc)
!         (if_then_else (ne (cc0)
! 			  (const_int 0))
! 		      (label_ref (match_dup 3))
! 		      (pc)))
!    (set (match_dup 2)
!         (plus:SI (match_dup 2)
! 		 (const_int 1)))
!    (match_dup 3)]
!   {
!     operands[3] = gen_label_rtx ();
!   })
! 
! ;; [ix]or:HI
! 
! (define_insn "*ixorhi3_zext"
!   [(set (match_operand:HI 0 "register_operand" "=r")
! 	(match_operator:HI 1 "iorxor_operator"
! 	 [(zero_extend:HI (match_operand:QI 2 "register_operand" "r"))
! 	  (match_operand:HI 3 "register_operand" "0")]))]
!   ""
!   "%c1.b\\t%X2,%s0"
!   [(set_attr "length" "2")])
! 
! ;; [ix]or:SI
! 
! (define_insn "*ixorsi3_zext_qi"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(match_operator:SI 1 "iorxor_operator"
! 	 [(zero_extend:SI (match_operand:QI 2 "register_operand" "r"))
! 	  (match_operand:SI 3 "register_operand" "0")]))]
!   ""
!   "%c1.b\\t%X2,%w0"
!   [(set_attr "length" "2")])
! 
! (define_insn "*ixorsi3_zext_hi"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(match_operator:SI 1 "iorxor_operator"
! 	 [(zero_extend:SI (match_operand:HI 2 "register_operand" "r"))
! 	  (match_operand:SI 3 "register_operand" "0")]))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "%c1.w\\t%T2,%f0"
!   [(set_attr "length" "2")])
! 
! (define_insn "*ixorsi3_ashift_16"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(match_operator:SI 1 "iorxor_operator"
! 	 [(ashift:SI (match_operand:SI 2 "register_operand" "r")
! 		     (const_int 16))
! 	  (match_operand:SI 3 "register_operand" "0")]))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "%c1.w\\t%f2,%e0"
!   [(set_attr "length" "2")])
! 
! (define_insn "*ixorsi3_lshiftrt_16"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(match_operator:SI 1 "iorxor_operator"
! 	 [(lshiftrt:SI (match_operand:SI 2 "register_operand" "r")
! 		       (const_int 16))
! 	  (match_operand:SI 3 "register_operand" "0")]))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "%c1.w\\t%e2,%f0"
!   [(set_attr "length" "2")])
! 
! ;; ior:HI
! 
! (define_insn "*iorhi3_ashift_8"
!   [(set (match_operand:HI 0 "register_operand" "=r")
! 	(ior:HI (ashift:HI (match_operand:HI 1 "register_operand" "r")
! 			   (const_int 8))
! 		(match_operand:HI 2 "register_operand" "0")))]
!   ""
!   "or.b\\t%s1,%t0"
!   [(set_attr "length" "2")])
! 
! (define_insn "*iorhi3_lshiftrt_8"
!   [(set (match_operand:HI 0 "register_operand" "=r")
! 	(ior:HI (lshiftrt:HI (match_operand:HI 1 "register_operand" "r")
! 			     (const_int 8))
! 		(match_operand:HI 2 "register_operand" "0")))]
!   ""
!   "or.b\\t%t1,%s0"
!   [(set_attr "length" "2")])
! 
! (define_insn "*iorhi3_two_qi"
!   [(set (match_operand:HI 0 "register_operand" "=r")
! 	(ior:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "0"))
! 		(ashift:HI (match_operand:HI 2 "register_operand" "r")
! 			   (const_int 8))))]
!   ""
!   "mov.b\\t%s2,%t0"
!   [(set_attr "length" "2")])
! 
! (define_insn "*iorhi3_two_qi_mem"
!   [(set (match_operand:HI 0 "register_operand" "=&r")
! 	(ior:HI (zero_extend:HI (match_operand:QI 1 "memory_operand" "m"))
! 		(ashift:HI (subreg:HI (match_operand:QI 2 "memory_operand" "m") 0)
! 			   (const_int 8))))]
!   ""
!   "mov.b\\t%X2,%t0\;mov.b\\t%X1,%s0"
!   [(set_attr "length" "16")])
! 
! (define_split
!   [(set (match_operand:HI 0 "register_operand" "")
! 	(ior:HI (zero_extend:HI (match_operand:QI 1 "memory_operand" ""))
! 		(ashift:HI (subreg:HI (match_operand:QI 2 "memory_operand" "") 0)
! 			   (const_int 8))))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && reload_completed
!     && byte_accesses_mergeable_p (XEXP (operands[2], 0), XEXP (operands[1], 0))"
!   [(set (match_dup 0)
! 	(match_dup 3))]
!   {
!     operands[3] = gen_rtx_MEM (HImode, XEXP (operands[2], 0));
!   })
! 
! ;; ior:SI
! 
! (define_insn "*iorsi3_two_hi"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ior:SI (zero_extend:SI (match_operand:HI 1 "register_operand" "0"))
! 		(ashift:SI (match_operand:SI 2 "register_operand" "r")
! 			   (const_int 16))))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "mov.w\\t%f2,%e0"
!   [(set_attr "length" "2")])
! 
! (define_insn_and_split "*iorsi3_two_qi_zext"
!   [(set (match_operand:SI 0 "register_operand" "=&r")
! 	(ior:SI (zero_extend:SI (match_operand:QI 1 "memory_operand" "m"))
! 		(and:SI (ashift:SI (subreg:SI (match_operand:QI 2 "memory_operand" "m") 0)
! 				   (const_int 8))
! 			(const_int 65280))))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "#"
!   "&& reload_completed"
!   [(set (match_dup 3)
! 	(ior:HI (zero_extend:HI (match_dup 1))
! 		(ashift:HI (subreg:HI (match_dup 2) 0)
! 			   (const_int 8))))
!    (set (match_dup 0)
! 	(zero_extend:SI (match_dup 3)))]
!   {
!     operands[3] = gen_rtx_REG (HImode, REGNO (operands[0]));
!   })
! 
! (define_insn "*iorsi3_e2f"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ior:SI (and:SI (match_operand:SI 1 "register_operand" "0")
! 			(const_int -65536))
! 		(lshiftrt:SI (match_operand:SI 2 "register_operand" "r")
! 			     (const_int 16))))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "mov.w\\t%e2,%f0"
!   [(set_attr "length" "2")])
! 
! (define_insn_and_split "*iorsi3_two_qi_sext"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ior:SI (zero_extend:SI (match_operand:QI 1 "register_operand" "0"))
! 		(ashift:SI (sign_extend:SI (match_operand:QI 2 "register_operand" "r"))
! 			   (const_int 8))))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "#"
!   "&& reload_completed"
!   [(set (match_dup 3)
! 	(ior:HI (zero_extend:HI (match_dup 1))
! 		(ashift:HI (match_dup 4)
! 			   (const_int 8))))
!    (set (match_dup 0)
! 	(sign_extend:SI (match_dup 3)))]
!   {
!     operands[3] = gen_rtx_REG (HImode, REGNO (operands[0]));
!     operands[4] = gen_rtx_REG (HImode, REGNO (operands[2]));
!   })
! 
! (define_insn "*iorsi3_w"
!   [(set (match_operand:SI 0 "register_operand" "=r,&r")
! 	(ior:SI (and:SI (match_operand:SI 1 "register_operand" "0,0")
! 			(const_int -256))
! 		(zero_extend:SI (match_operand:QI 2 "general_operand_src" "r,g>"))))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "mov.b\\t%X2,%w0"
!   [(set_attr "length" "2,8")])
! 
! (define_insn "*iorsi3_ashift_31"
!   [(set (match_operand:SI 0 "register_operand" "=&r")
! 	(ior:SI (ashift:SI (match_operand:SI 1 "register_operand" "r")
! 			   (const_int 31))
! 		(match_operand:SI 2 "register_operand" "0")))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "rotxl.l\\t%S0\;bor\\t#0,%w1\;rotxr.l\\t%S0"
!   [(set_attr "length" "6")
!    (set_attr "cc" "set_znv")])
! 
! (define_insn "*iorsi3_and_ashift"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ior:SI (and:SI (ashift:SI (match_operand:SI 1 "register_operand" "r")
! 				   (match_operand:SI 2 "const_int_operand" "n"))
! 			(match_operand:SI 3 "single_one_operand" "n"))
! 		(match_operand:SI 4 "register_operand" "0")))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && (INTVAL (operands[3]) & ~0xffff) == 0"
! {
!   rtx srcpos = GEN_INT (exact_log2 (INTVAL (operands[3]))
! 			- INTVAL (operands[2]));
!   rtx dstpos = GEN_INT (exact_log2 (INTVAL (operands[3])));
!   operands[2] = srcpos;
!   operands[3] = dstpos;
!   return "bld\\t%Z2,%Y1\;bor\\t%Z3,%Y0\;bst\\t%Z3,%Y0";
! }
!   [(set_attr "length" "6")])
! 
! (define_insn "*iorsi3_and_lshiftrt"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ior:SI (and:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
! 				     (match_operand:SI 2 "const_int_operand" "n"))
! 			(match_operand:SI 3 "single_one_operand" "n"))
! 		(match_operand:SI 4 "register_operand" "0")))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && ((INTVAL (operands[3]) << INTVAL (operands[2])) & ~0xffff) == 0"
! {
!   rtx srcpos = GEN_INT (exact_log2 (INTVAL (operands[3]))
! 			+ INTVAL (operands[2]));
!   rtx dstpos = GEN_INT (exact_log2 (INTVAL (operands[3])));
!   operands[2] = srcpos;
!   operands[3] = dstpos;
!   return "bld\\t%Z2,%Y1\;bor\\t%Z3,%Y0\;bst\\t%Z3,%Y0";
! }
!   [(set_attr "length" "6")])
! 
! (define_insn "*iorsi3_zero_extract"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ior:SI (zero_extract:SI (match_operand:SI 1 "register_operand" "r")
! 				 (const_int 1)
! 				 (match_operand:SI 2 "const_int_operand" "n"))
! 		(match_operand:SI 3 "register_operand" "0")))]
!   "(TARGET_H8300H || TARGET_H8300S) && INTVAL (operands[2]) < 16"
!   "bld\\t%Z2,%Y1\;bor\\t#0,%w0\;bst\\t#0,%w0"
!   [(set_attr "length" "6")])
! 
! (define_insn "*iorsi3_and_lshiftrt_n_sb"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ior:SI (and:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
! 				     (const_int 30))
! 			(const_int 2))
! 		(match_operand:SI 2 "register_operand" "0")))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "rotl.l\\t%S1\;rotr.l\\t%S1\;bor\\t#1,%w0\;bst\\t#1,%w0"
!   [(set_attr "length" "8")])
! 
! (define_insn "*iorsi3_and_lshiftrt_9_sb"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ior:SI (and:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
! 				     (const_int 9))
! 			(const_int 4194304))
! 		(match_operand:SI 2 "register_operand" "0")))
!    (clobber (match_scratch:HI 3 "=&r"))]
!   "TARGET_H8300H || TARGET_H8300S"
! {
!   if (find_regno_note (insn, REG_DEAD, REGNO (operands[1])))
!     return "shll.l\\t%S1\;xor.w\\t%T3,%T3\;bst\\t#6,%s3\;or.w\\t%T3,%e0";
!   else
!     return "rotl.l\\t%S1\;rotr.l\\t%S1\;xor.w\\t%T3,%T3\;bst\\t#6,%s3\;or.w\\t%T3,%e0";
! }
!   [(set_attr "length" "10")])
! 
! ;; Used to OR the exponent of a float.
! 
! (define_insn "*iorsi3_shift"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ior:SI (ashift:SI (match_operand:SI 1 "register_operand" "r")
! 			   (const_int 23))
! 		(match_operand:SI 2 "register_operand" "0")))
!    (clobber (match_scratch:SI 3 "=&r"))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "#")
! 
! (define_split
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(ior:SI (ashift:SI (match_operand:SI 1 "register_operand" "")
! 			   (const_int 23))
! 		(match_dup 0)))
!    (clobber (match_operand:SI 2 "register_operand" ""))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && epilogue_completed
!     && find_regno_note (insn, REG_DEAD, REGNO (operands[1]))
!     && REGNO (operands[0]) != REGNO (operands[1])"
!   [(parallel [(set (match_dup 3)
! 		   (ashift:HI (match_dup 3)
! 			      (const_int 7)))
! 	      (clobber (scratch:QI))])
!    (set (match_dup 0)
! 	(ior:SI (ashift:SI (match_dup 1)
! 			   (const_int 16))
! 		(match_dup 0)))]
!   {
!     operands[3] = gen_rtx_REG (HImode, REGNO (operands[1]));
!   })
! 
! (define_split
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(ior:SI (ashift:SI (match_operand:SI 1 "register_operand" "")
! 			   (const_int 23))
! 		(match_dup 0)))
!    (clobber (match_operand:SI 2 "register_operand" ""))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && epilogue_completed
!     && !(find_regno_note (insn, REG_DEAD, REGNO (operands[1]))
! 	 && REGNO (operands[0]) != REGNO (operands[1]))"
!   [(set (match_dup 2)
! 	(match_dup 1))
!    (parallel [(set (match_dup 3)
! 		   (ashift:HI (match_dup 3)
! 			      (const_int 7)))
! 	      (clobber (scratch:QI))])
!    (set (match_dup 0)
! 	(ior:SI (ashift:SI (match_dup 2)
! 			   (const_int 16))
! 		(match_dup 0)))]
!   {
!     operands[3] = gen_rtx_REG (HImode, REGNO (operands[2]));
!   })
! 
! (define_insn "*iorsi2_and_1_lshiftrt_1"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ior:SI (and:SI (match_operand:SI 1 "register_operand" "0")
! 			(const_int 1))
! 		(lshiftrt:SI (match_dup 1)
! 			     (const_int 1))))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "shlr.l\\t%S0\;bor\\t#0,%w0\;bst\\t#0,%w0"
!   [(set_attr "length" "6")])
! 
! (define_insn_and_split "*iorsi3_ashift_16_ashift_24"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ior:SI (ashift:SI (match_operand:SI 1 "register_operand" "0")
! 			   (const_int 16))
! 		(ashift:SI (match_operand:SI 2 "register_operand" "r")
! 			   (const_int 24))))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "#"
!   "&& reload_completed"
!   [(set (match_dup 3)
!         (ior:HI (ashift:HI (match_dup 4)
! 			   (const_int 8))
! 		(match_dup 3)))
!    (parallel [(set (match_dup 0)
! 		   (ashift:SI (match_dup 0)
! 			      (const_int 16)))
! 	      (clobber (scratch:QI))])]
!   {
!     operands[3] = gen_rtx_REG (HImode, REGNO (operands[0]));
!     operands[4] = gen_rtx_REG (HImode, REGNO (operands[2]));
!   })
! 
! (define_insn_and_split "*iorsi3_ashift_16_ashift_24_mem"
!   [(set (match_operand:SI 0 "register_operand" "=&r")
! 	(ior:SI (and:SI (ashift:SI (subreg:SI (match_operand:QI 1 "memory_operand" "m") 0)
! 				   (const_int 16))
! 			(const_int 16711680))
! 		(ashift:SI (subreg:SI (match_operand:QI 2 "memory_operand" "m") 0)
! 			   (const_int 24))))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "#"
!   "&& reload_completed"
!   [(set (match_dup 3)
!         (ior:HI (zero_extend:HI (match_dup 1))
! 		(ashift:HI (subreg:HI (match_dup 2) 0)
! 			   (const_int 8))))
!    (parallel [(set (match_dup 0)
! 		   (ashift:SI (match_dup 0)
! 			      (const_int 16)))
! 	      (clobber (scratch:QI))])]
!   {
!     operands[3] = gen_rtx_REG (HImode, REGNO (operands[0]));
!   })
! 
! ;; Used to add the exponent of a float.
! 
! (define_insn "*addsi3_shift"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(plus:SI (mult:SI (match_operand:SI 1 "register_operand" "r")
! 			  (const_int 8388608))
! 		 (match_operand:SI 2 "register_operand" "0")))
!    (clobber (match_scratch:SI 3 "=&r"))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "#")
! 
! (define_split
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(plus:SI (mult:SI (match_operand:SI 1 "register_operand" "")
! 			  (const_int 8388608))
! 		 (match_dup 0)))
!    (clobber (match_operand:SI 2 "register_operand" ""))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && epilogue_completed
!     && find_regno_note (insn, REG_DEAD, REGNO (operands[1]))
!     && REGNO (operands[0]) != REGNO (operands[1])"
!   [(parallel [(set (match_dup 3)
! 		   (ashift:HI (match_dup 3)
! 			      (const_int 7)))
! 	      (clobber (scratch:QI))])
!    (set (match_dup 0)
! 	(plus:SI (mult:SI (match_dup 1)
! 			  (const_int 65536))
! 		 (match_dup 0)))]
!   {
!     operands[3] = gen_rtx_REG (HImode, REGNO (operands[1]));
!   })
! 
! (define_split
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(plus:SI (mult:SI (match_operand:SI 1 "register_operand" "")
! 			  (const_int 8388608))
! 		 (match_dup 0)))
!    (clobber (match_operand:SI 2 "register_operand" ""))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && epilogue_completed
!     && !(find_regno_note (insn, REG_DEAD, REGNO (operands[1]))
! 	 && REGNO (operands[0]) != REGNO (operands[1]))"
!   [(set (match_dup 2)
! 	(match_dup 1))
!    (parallel [(set (match_dup 3)
! 		   (ashift:HI (match_dup 3)
! 			      (const_int 7)))
! 	      (clobber (scratch:QI))])
!    (set (match_dup 0)
! 	(plus:SI (mult:SI (match_dup 2)
! 			  (const_int 65536))
! 		 (match_dup 0)))]
!   {
!     operands[3] = gen_rtx_REG (HImode, REGNO (operands[2]));
!   })
! 
! ;; ashift:SI
! 
! (define_insn_and_split "*ashiftsi_sextqi_7"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ashift:SI (sign_extend:SI (match_operand:QI 1 "register_operand" "0"))
! 		   (const_int 7)))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "#"
!   "&& reload_completed"
!   [(parallel [(set (match_dup 2)
! 		   (ashift:HI (match_dup 2)
! 			      (const_int 8)))
! 	      (clobber (scratch:QI))])
!    (set (match_dup 0)
! 	(sign_extend:SI (match_dup 2)))
!    (parallel [(set (match_dup 0)
! 		   (ashiftrt:SI (match_dup 0)
! 				(const_int 1)))
! 	      (clobber (scratch:QI))])]
!   {
!     operands[2] = gen_rtx_REG (HImode, REGNO (operands[0]));
!   })
! 
! ;; Storing a part of HImode to QImode.
! 
! (define_insn ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
! 	(subreg:QI (lshiftrt:HI (match_operand:HI 1 "register_operand" "r")
! 				(const_int 8)) 1))]
!   ""
!   "mov.b\\t%t1,%R0"
!   [(set_attr "cc" "set_znv")
!    (set_attr "length" "8")])
! 
! ;; Storing a part of SImode to QImode.
! 
! (define_insn ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
! 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
! 				(const_int 8)) 3))]
!   ""
!   "mov.b\\t%x1,%R0"
!   [(set_attr "cc" "set_znv")
!    (set_attr "length" "8")])
! 
! (define_insn ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
! 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
! 				(const_int 16)) 3))
!    (clobber (match_scratch:SI 2 "=&r"))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "mov.w\\t%e1,%f2\;mov.b\\t%w2,%R0"
!   [(set_attr "cc" "set_znv")
!    (set_attr "length" "10")])
! 
! (define_insn ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
! 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
! 				(const_int 24)) 3))
!    (clobber (match_scratch:SI 2 "=&r"))]
!   "TARGET_H8300H || TARGET_H8300S"
!   "mov.w\\t%e1,%f2\;mov.b\\t%x2,%R0"
!   [(set_attr "cc" "set_znv")
!    (set_attr "length" "10")])
! 
! (define_insn_and_split ""
!   [(set (pc)
! 	(if_then_else (eq (zero_extract:SI (subreg:SI (match_operand:QI 0 "register_operand" "") 0)
! 					   (const_int 1)
! 					   (const_int 7))
! 			  (const_int 0))
! 		      (label_ref (match_operand 1 "" ""))
! 		      (pc)))]
!   ""
!   "#"
!   ""
!   [(set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (ge (cc0)
! 			  (const_int 0))
! 		      (label_ref (match_dup 1))
! 		      (pc)))]
!   "")
! 
! (define_insn_and_split ""
!   [(set (pc)
! 	(if_then_else (ne (zero_extract:SI (subreg:SI (match_operand:QI 0 "register_operand" "") 0)
! 					   (const_int 1)
! 					   (const_int 7))
! 			  (const_int 0))
! 		      (label_ref (match_operand 1 "" ""))
! 		      (pc)))]
!   ""
!   "#"
!   ""
!   [(set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (lt (cc0)
! 			  (const_int 0))
! 		      (label_ref (match_dup 1))
! 		      (pc)))]
!   "")
! 
! ;; -----------------------------------------------------------------
! ;; PEEPHOLE PATTERNS
! ;; -----------------------------------------------------------------
! 
! ;; Convert (A >> B) & C to (A & 255) >> B if C == 255 >> B.
! 
! (define_peephole2
!   [(parallel [(set (match_operand:HI 0 "register_operand" "")
! 		   (lshiftrt:HI (match_dup 0)
! 				(match_operand:HI 1 "const_int_operand" "")))
! 	      (clobber (match_operand:HI 2 "" ""))])
!    (set (match_dup 0)
! 	(and:HI (match_dup 0)
! 		(match_operand:HI 3 "const_int_operand" "")))]
!   "INTVAL (operands[3]) == (255 >> INTVAL (operands[1]))"
!   [(set (match_dup 0)
! 	(and:HI (match_dup 0)
! 		(const_int 255)))
!    (parallel [(set (match_dup 0)
! 		   (lshiftrt:HI (match_dup 0) (match_dup 1)))
! 	      (clobber (match_dup 2))])]
!   "")
! 
! ;; Convert (A << B) & C to (A & 255) << B if C == 255 << B.
! 
! (define_peephole2
!   [(parallel [(set (match_operand:HI 0 "register_operand" "")
! 		   (ashift:HI (match_dup 0)
! 			      (match_operand:HI 1 "const_int_operand" "")))
! 	      (clobber (match_operand:HI 2 "" ""))])
!    (set (match_dup 0)
! 	(and:HI (match_dup 0)
! 		(match_operand:HI 3 "const_int_operand" "")))]
!   "INTVAL (operands[3]) == (255 << INTVAL (operands[1]))"
!   [(set (match_dup 0)
! 	(and:HI (match_dup 0)
! 		(const_int 255)))
!    (parallel [(set (match_dup 0)
! 		   (ashift:HI (match_dup 0) (match_dup 1)))
! 	      (clobber (match_dup 2))])]
!   "")
! 
! ;; Convert (A >> B) & C to (A & 255) >> B if C == 255 >> B.
! 
! (define_peephole2
!   [(parallel [(set (match_operand:SI 0 "register_operand" "")
! 		   (lshiftrt:SI (match_dup 0)
! 				(match_operand:SI 1 "const_int_operand" "")))
! 	      (clobber (match_operand:SI 2 "" ""))])
!    (set (match_dup 0)
! 	(and:SI (match_dup 0)
! 		(match_operand:SI 3 "const_int_operand" "")))]
!   "INTVAL (operands[3]) == (255 >> INTVAL (operands[1]))"
!   [(set (match_dup 0)
! 	(and:SI (match_dup 0)
! 		(const_int 255)))
!    (parallel [(set (match_dup 0)
! 		   (lshiftrt:SI (match_dup 0) (match_dup 1)))
! 	      (clobber (match_dup 2))])]
!   "")
! 
! ;; Convert (A << B) & C to (A & 255) << B if C == 255 << B.
! 
! (define_peephole2
!   [(parallel [(set (match_operand:SI 0 "register_operand" "")
! 		   (ashift:SI (match_dup 0)
! 			      (match_operand:SI 1 "const_int_operand" "")))
! 	      (clobber (match_operand:SI 2 "" ""))])
!    (set (match_dup 0)
! 	(and:SI (match_dup 0)
! 		(match_operand:SI 3 "const_int_operand" "")))]
!   "INTVAL (operands[3]) == (255 << INTVAL (operands[1]))"
!   [(set (match_dup 0)
! 	(and:SI (match_dup 0)
! 		(const_int 255)))
!    (parallel [(set (match_dup 0)
! 		   (ashift:SI (match_dup 0) (match_dup 1)))
! 	      (clobber (match_dup 2))])]
!   "")
! 
! ;; Convert (A >> B) & C to (A & 65535) >> B if C == 65535 >> B.
! 
! (define_peephole2
!   [(parallel [(set (match_operand:SI 0 "register_operand" "")
! 		   (lshiftrt:SI (match_dup 0)
! 				(match_operand:SI 1 "const_int_operand" "")))
! 	      (clobber (match_operand:SI 2 "" ""))])
!    (set (match_dup 0)
! 	(and:SI (match_dup 0)
! 		(match_operand:SI 3 "const_int_operand" "")))]
!   "INTVAL (operands[3]) == (65535 >> INTVAL (operands[1]))"
!   [(set (match_dup 0)
! 	(and:SI (match_dup 0)
! 		(const_int 65535)))
!    (parallel [(set (match_dup 0)
! 		   (lshiftrt:SI (match_dup 0) (match_dup 1)))
! 	      (clobber (match_dup 2))])]
!   "")
! 
! ;; Convert (A << B) & C to (A & 65535) << B if C == 65535 << B.
! 
! (define_peephole2
!   [(parallel [(set (match_operand:SI 0 "register_operand" "")
! 		   (ashift:SI (match_dup 0)
! 			      (match_operand:SI 1 "const_int_operand" "")))
! 	      (clobber (match_operand:SI 2 "" ""))])
!    (set (match_dup 0)
! 	(and:SI (match_dup 0)
! 		(match_operand:SI 3 "const_int_operand" "")))]
!   "INTVAL (operands[3]) == (65535 << INTVAL (operands[1]))"
!   [(set (match_dup 0)
! 	(and:SI (match_dup 0)
! 		(const_int 65535)))
!    (parallel [(set (match_dup 0)
! 		   (ashift:SI (match_dup 0) (match_dup 1)))
! 	      (clobber (match_dup 2))])]
!   "")
! 
! ;; Cram four pushes into stm.l.
! 
! (define_peephole2
!   [(set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
! 	(match_operand:SI 0 "register_operand" ""))
!    (set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
! 	(match_operand:SI 1 "register_operand" ""))
!    (set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
! 	(match_operand:SI 2 "register_operand" ""))
!    (set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
! 	(match_operand:SI 3 "register_operand" ""))]
!   "TARGET_H8300S && !TARGET_NORMAL_MODE
!    && (REGNO_REG_CLASS (REGNO (operands[3])) == GENERAL_REGS
!        && REGNO (operands[1]) == REGNO (operands[0]) + 1
!        && REGNO (operands[2]) == REGNO (operands[0]) + 2
!        && REGNO (operands[3]) == REGNO (operands[0]) + 3
!        && (TARGET_H8300SX || REGNO (operands[0]) == 0))"
!   [(parallel [(set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -4)))
! 		   (match_dup 0))
! 	      (set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -8)))
! 		   (match_dup 1))
! 	      (set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -12)))
! 		   (match_dup 2))
! 	      (set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -16)))
! 		   (match_dup 3))
! 	      (set (reg:SI SP_REG)
! 		   (plus:SI (reg:SI SP_REG)
! 			    (const_int -16)))])]
!   "")
! 
! (define_peephole2
!   [(set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
! 	(match_operand:SI 0 "register_operand" ""))
!    (set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
! 	(match_operand:SI 1 "register_operand" ""))
!    (set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
! 	(match_operand:SI 2 "register_operand" ""))
!    (set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
! 	(match_operand:SI 3 "register_operand" ""))]
!   "TARGET_H8300S && TARGET_NORMAL_MODE
!    && (REGNO_REG_CLASS (REGNO (operands[3])) == GENERAL_REGS
!        && REGNO (operands[1]) == REGNO (operands[0]) + 1
!        && REGNO (operands[2]) == REGNO (operands[0]) + 2
!        && REGNO (operands[3]) == REGNO (operands[0]) + 3
!        && (TARGET_H8300SX || REGNO (operands[0]) == 0))"
!   [(parallel [(set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -4)))
! 		   (match_dup 0))
! 	      (set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -8)))
! 		   (match_dup 1))
! 	      (set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -12)))
! 		   (match_dup 2))
! 	      (set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -16)))
! 		   (match_dup 3))
! 	      (set (reg:HI SP_REG)
! 		   (plus:HI (reg:HI SP_REG)
! 			    (const_int -16)))])]
!   "")
! 
! ;; Cram three pushes into stm.l.
! 
! (define_peephole2
!   [(set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
! 	(match_operand:SI 0 "register_operand" ""))
!    (set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
! 	(match_operand:SI 1 "register_operand" ""))
!    (set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
! 	(match_operand:SI 2 "register_operand" ""))]
!   "TARGET_H8300S && !TARGET_NORMAL_MODE
!    && (REGNO_REG_CLASS (REGNO (operands[2])) == GENERAL_REGS
!        && REGNO (operands[1]) == REGNO (operands[0]) + 1
!        && REGNO (operands[2]) == REGNO (operands[0]) + 2
!        && (TARGET_H8300SX || (REGNO (operands[0]) & 3) == 0))"
!   [(parallel [(set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -4)))
! 		   (match_dup 0))
! 	      (set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -8)))
! 		   (match_dup 1))
! 	      (set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -12)))
! 		   (match_dup 2))
! 	      (set (reg:SI SP_REG)
! 		   (plus:SI (reg:SI SP_REG)
! 			    (const_int -12)))])]
!   "")
! 
! (define_peephole2
!   [(set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
! 	(match_operand:SI 0 "register_operand" ""))
!    (set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
! 	(match_operand:SI 1 "register_operand" ""))
!    (set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
! 	(match_operand:SI 2 "register_operand" ""))]
!   "TARGET_H8300S && TARGET_NORMAL_MODE
!    && (REGNO_REG_CLASS (REGNO (operands[2])) == GENERAL_REGS
!        && REGNO (operands[1]) == REGNO (operands[0]) + 1
!        && REGNO (operands[2]) == REGNO (operands[0]) + 2
!        && (TARGET_H8300SX || (REGNO (operands[0]) & 3) == 0))"
!   [(parallel [(set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -4)))
! 		   (match_dup 0))
! 	      (set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -8)))
! 		   (match_dup 1))
! 	      (set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -12)))
! 		   (match_dup 2))
! 	      (set (reg:HI SP_REG)
! 		   (plus:HI (reg:HI SP_REG)
! 			    (const_int -12)))])]
!   "")
! 
! ;; Cram two pushes into stm.l.
! 
! (define_peephole2
!   [(set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
! 	(match_operand:SI 0 "register_operand" ""))
!    (set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
! 	(match_operand:SI 1 "register_operand" ""))]
!   "TARGET_H8300S && !TARGET_NORMAL_MODE
!    && (REGNO_REG_CLASS (REGNO (operands[1])) == GENERAL_REGS
!        && REGNO (operands[1]) == REGNO (operands[0]) + 1
!        && (TARGET_H8300SX || (REGNO (operands[0]) & 1) == 0))"
!   [(parallel [(set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -4)))
! 		   (match_dup 0))
! 	      (set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -8)))
! 		   (match_dup 1))
! 	      (set (reg:SI SP_REG)
! 		   (plus:SI (reg:SI SP_REG)
! 			    (const_int -8)))])]
!   "")
! 
! (define_peephole2
!   [(set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
! 	(match_operand:SI 0 "register_operand" ""))
!    (set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
! 	(match_operand:SI 1 "register_operand" ""))]
!   "TARGET_H8300S && TARGET_NORMAL_MODE
!    && (REGNO_REG_CLASS (REGNO (operands[1])) == GENERAL_REGS
!        && REGNO (operands[1]) == REGNO (operands[0]) + 1
!        && (TARGET_H8300SX || (REGNO (operands[0]) & 1) == 0))"
!   [(parallel [(set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -4)))
! 		   (match_dup 0))
! 	      (set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -8)))
! 		   (match_dup 1))
! 	      (set (reg:HI SP_REG)
! 		   (plus:HI (reg:HI SP_REG)
! 			    (const_int -8)))])]
!   "")
! 
! ;; Turn
! ;;
! ;;   mov.w #2,r0
! ;;   add.w r7,r0  (6 bytes)
! ;;
! ;; into
! ;;
! ;;   mov.w r7,r0
! ;;   adds  #2,r0  (4 bytes)
! 
! (define_peephole2
!   [(set (match_operand:HI 0 "register_operand" "")
! 	(match_operand:HI 1 "const_int_operand" ""))
!    (set (match_dup 0)
! 	(plus:HI (match_dup 0)
! 		 (match_operand:HI 2 "register_operand" "")))]
!   "REG_P (operands[0]) && REG_P (operands[2])
!    && REGNO (operands[0]) != REGNO (operands[2])
!    && (satisfies_constraint_J (operands[1])
!        || satisfies_constraint_L (operands[1])
!        || satisfies_constraint_N (operands[1]))"
!   [(set (match_dup 0)
! 	(match_dup 2))
!    (set (match_dup 0)
! 	(plus:HI (match_dup 0)
! 		 (match_dup 1)))]
!   "")
! 
! ;; Turn
! ;;
! ;;   sub.l  er0,er0
! ;;   add.b  #4,r0l
! ;;   add.l  er7,er0  (6 bytes)
! ;;
! ;; into
! ;;
! ;;   mov.l  er7,er0
! ;;   adds   #4,er0   (4 bytes)
! 
! (define_peephole2
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(match_operand:SI 1 "const_int_operand" ""))
!    (set (match_dup 0)
! 	(plus:SI (match_dup 0)
! 		 (match_operand:SI 2 "register_operand" "")))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && REG_P (operands[0]) && REG_P (operands[2])
!     && REGNO (operands[0]) != REGNO (operands[2])
!     && (satisfies_constraint_L (operands[1])
! 	|| satisfies_constraint_N (operands[1]))"
!   [(set (match_dup 0)
! 	(match_dup 2))
!    (set (match_dup 0)
! 	(plus:SI (match_dup 0)
! 		 (match_dup 1)))]
!   "")
! 
! ;; Turn
! ;;
! ;;   mov.l er7,er0
! ;;   add.l #10,er0  (takes 8 bytes)
! ;;
! ;; into
! ;;
! ;;   sub.l er0,er0
! ;;   add.b #10,r0l
! ;;   add.l er7,er0  (takes 6 bytes)
! 
! (define_peephole2
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(match_operand:SI 1 "register_operand" ""))
!    (set (match_dup 0)
! 	(plus:SI (match_dup 0)
! 		 (match_operand:SI 2 "const_int_operand" "")))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && operands[0] != stack_pointer_rtx
!     && REG_P (operands[0]) && REG_P (operands[1])
!     && REGNO (operands[0]) != REGNO (operands[1])
!     && !satisfies_constraint_L (operands[2])
!     && !satisfies_constraint_N (operands[2])
!     && ((INTVAL (operands[2]) & 0xff) == INTVAL (operands[2])
! 	|| (INTVAL (operands[2]) & 0xff00) == INTVAL (operands[2])
! 	|| INTVAL (operands[2]) == 0xffff
! 	|| INTVAL (operands[2]) == 0xfffe)"
!   [(set (match_dup 0)
! 	(match_dup 2))
!    (set (match_dup 0)
! 	(plus:SI (match_dup 0)
! 		 (match_dup 1)))]
!   "")
! 
! ;; Turn
! ;;
! ;;   subs   #1,er4
! ;;   mov.w  r4,r4
! ;;   bne    .L2028
! ;;
! ;; into
! ;;
! ;;   dec.w  #1,r4
! ;;   bne    .L2028
! 
! (define_peephole2
!   [(set (match_operand:HI 0 "register_operand" "")
! 	(plus:HI (match_dup 0)
! 		 (match_operand 1 "incdec_operand" "")))
!    (set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_operator 3 "eqne_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 2 "" ""))
! 		      (pc)))]
!   "TARGET_H8300H || TARGET_H8300S"
!   [(set (match_operand:HI 0 "register_operand" "")
! 	(unspec:HI [(match_dup 0)
! 		    (match_dup 1)]
! 		   UNSPEC_INCDEC))
!    (set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_op_dup 3 [(cc0) (const_int 0)])
! 		      (label_ref (match_dup 2))
! 		      (pc)))]
!   "")
! 
! ;; The SImode version of the previous pattern.
! 
! (define_peephole2
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(plus:SI (match_dup 0)
! 		 (match_operand 1 "incdec_operand" "")))
!    (set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_operator 3 "eqne_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 2 "" ""))
! 		      (pc)))]
!   "TARGET_H8300H || TARGET_H8300S"
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(unspec:SI [(match_dup 0)
! 		    (match_dup 1)]
! 		   UNSPEC_INCDEC))
!    (set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_op_dup 3 [(cc0) (const_int 0)])
! 		      (label_ref (match_dup 2))
! 		      (pc)))]
!   "")
! 
! (define_peephole2
!   [(parallel [(set (cc0)
! 		   (compare (zero_extract:SI (match_operand:QI 0 "register_operand" "")
! 					     (const_int 1)
! 					     (const_int 7))
! 			    (const_int 0)))
! 	      (clobber (scratch:QI))])
!    (set (pc)
! 	(if_then_else (match_operator 1 "eqne_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 2 "" ""))
! 		      (pc)))]
!   "TARGET_H8300H || TARGET_H8300S"
!   [(set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_op_dup 3 [(cc0) (const_int 0)])
! 		      (label_ref (match_dup 2))
! 		      (pc)))]
!   {
!     operands[3] = ((GET_CODE (operands[1]) == EQ)
! 		   ? gen_rtx_GE (VOIDmode, cc0_rtx, const0_rtx)
! 		   : gen_rtx_LT (VOIDmode, cc0_rtx, const0_rtx));
!   })
! 
! ;; The next three peephole2's will try to transform
! ;;
! ;;   mov.b A,r0l    (or mov.l A,er0)
! ;;   and.l #CST,er0
! ;;
! ;; into
! ;;
! ;;   sub.l er0
! ;;   mov.b A,r0l
! ;;   and.b #CST,r0l (if CST is not 255)
! 
! (define_peephole2
!   [(set (match_operand:QI 0 "register_operand" "")
! 	(match_operand:QI 1 "general_operand" ""))
!    (set (match_operand:SI 2 "register_operand" "")
! 	(and:SI (match_dup 2)
! 		(const_int 255)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && !reg_overlap_mentioned_p (operands[2], operands[1])
!     && REGNO (operands[0]) == REGNO (operands[2])"
!   [(set (match_dup 2)
! 	(const_int 0))
!    (set (strict_low_part (match_dup 0))
! 	(match_dup 1))]
!   "")
! 
! (define_peephole2
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(match_operand:SI 1 "nonimmediate_operand" ""))
!    (set (match_dup 0)
! 	(and:SI (match_dup 0)
! 		(const_int 255)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && !reg_overlap_mentioned_p (operands[0], operands[1])
!     && !(GET_CODE (operands[1]) == MEM && !offsettable_memref_p (operands[1]))
!     && !(GET_CODE (operands[1]) == MEM && MEM_VOLATILE_P (operands[1]))"
!   [(set (match_dup 0)
! 	(const_int 0))
!    (set (strict_low_part (match_dup 2))
! 	(match_dup 3))]
!   {
!     operands[2] = gen_lowpart (QImode, operands[0]);
!     operands[3] = gen_lowpart (QImode, operands[1]);
!   })
! 
! (define_peephole2
!   [(set (match_operand 0 "register_operand" "")
! 	(match_operand 1 "nonimmediate_operand" ""))
!    (set (match_operand:SI 2 "register_operand" "")
! 	(and:SI (match_dup 2)
! 		(match_operand:SI 3 "const_int_qi_operand" "")))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && (GET_MODE (operands[0]) == QImode
! 	|| GET_MODE (operands[0]) == HImode
! 	|| GET_MODE (operands[0]) == SImode)
!     && GET_MODE (operands[0]) == GET_MODE (operands[1])
!     && REGNO (operands[0]) == REGNO (operands[2])
!     && !reg_overlap_mentioned_p (operands[2], operands[1])
!     && !(GET_MODE (operands[1]) != QImode
! 	 && GET_CODE (operands[1]) == MEM
! 	 && !offsettable_memref_p (operands[1]))
!     && !(GET_MODE (operands[1]) != QImode
! 	 && GET_CODE (operands[1]) == MEM
! 	 && MEM_VOLATILE_P (operands[1]))"
!   [(set (match_dup 2)
! 	(const_int 0))
!    (set (strict_low_part (match_dup 4))
! 	(match_dup 5))
!    (set (match_dup 2)
! 	(and:SI (match_dup 2)
! 		(match_dup 6)))]
!   {
!     operands[4] = gen_lowpart (QImode, operands[0]);
!     operands[5] = gen_lowpart (QImode, operands[1]);
!     operands[6] = GEN_INT (~0xff | INTVAL (operands[3]));
!   })
! 
! (define_peephole2
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(match_operand:SI 1 "register_operand" ""))
!    (set (match_dup 0)
! 	(and:SI (match_dup 0)
! 		(const_int 65280)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!    && !reg_overlap_mentioned_p (operands[0], operands[1])"
!   [(set (match_dup 0)
! 	(const_int 0))
!    (set (zero_extract:SI (match_dup 0)
! 			 (const_int 8)
! 			 (const_int 8))
! 	(lshiftrt:SI (match_dup 1)
! 		     (const_int 8)))]
!   "")
! 
! ;; If a load of mem:SI is followed by an AND that turns off the upper
! ;; half, then we can load mem:HI instead.
! 
! (define_peephole2
!   [(set (match_operand:SI 0 "register_operand" "")
! 	(match_operand:SI 1 "memory_operand" ""))
!    (set (match_dup 0)
! 	(and:SI (match_dup 0)
! 		(match_operand:SI 2 "const_int_operand" "")))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && !MEM_VOLATILE_P (operands[1])
!     && offsettable_memref_p (operands[1])
!     && (INTVAL (operands[2]) & ~0xffff) == 0
!     && INTVAL (operands[2]) != 255"
!   [(set (match_dup 3)
! 	(match_dup 4))
!    (set (match_dup 0)
! 	(and:SI (match_dup 0)
! 		(match_dup 2)))]
!   {
!     operands[3] = gen_lowpart (HImode, operands[0]);
!     operands[4] = gen_lowpart (HImode, operands[1]);
!   })
! 
! ;; Convert a memory comparison to a move if there is a scratch register.
! 
! (define_peephole2
!   [(match_scratch:QI 1 "r")
!    (set (cc0)
! 	(compare (match_operand:QI 0 "memory_operand" "")
! 		 (const_int 0)))]
!   ""
!   [(set (match_dup 1)
! 	(match_dup 0))
!    (set (cc0) (compare (match_dup 1)
! 		       (const_int 0)))]
!   "")
! 
! (define_peephole2
!   [(match_scratch:HI 1 "r")
!    (set (cc0)
! 	(compare (match_operand:HI 0 "memory_operand" "")
! 		 (const_int 0)))]
!   "TARGET_H8300H || TARGET_H8300S"
!   [(set (match_dup 1)
! 	(match_dup 0))
!    (set (cc0) (compare (match_dup 1)
! 		       (const_int 0)))]
!   "")
! 
! (define_peephole2
!   [(match_scratch:SI 1 "r")
!    (set (cc0)
! 	(compare (match_operand:SI 0 "memory_operand" "")
! 		 (const_int 0)))]
!   "TARGET_H8300H || TARGET_H8300S"
!   [(set (match_dup 1)
! 	(match_dup 0))
!    (set (cc0) (compare (match_dup 1)
! 		       (const_int 0)))]
!   "")
! 
! 
! ;; (compare (reg:HI) (const_int)) takes 4 bytes, so we try to achieve
! ;; the equivalent with shorter sequences.  Here is the summary.  Cases
! ;; are grouped for each define_peephole2.
! ;;
! ;; reg  const_int                   use     insn
! ;; --------------------------------------------------------
! ;; dead    -2                       eq/ne   inc.l
! ;; dead    -1                       eq/ne   inc.l
! ;; dead     1                       eq/ne   dec.l
! ;; dead     2                       eq/ne   dec.l
! ;;
! ;; dead     1                       ge/lt shar.l
! ;; dead     3 (H8S)                 ge/lt shar.l
! ;;
! ;; dead     1                       geu/ltu shar.l
! ;; dead     3 (H8S)                 geu/ltu shar.l
! ;;
! ;; ----   255                       ge/lt mov.b
! ;;
! ;; ----   255                       geu/ltu mov.b
! 
! ;; Transform
! ;;
! ;;	cmp.w	#1,r0
! ;;	bne	.L1
! ;;
! ;; into
! ;;
! ;;	dec.w	#1,r0
! ;;	bne	.L1
! 
! (define_peephole2
!   [(set (cc0)
! 	(compare (match_operand:HI 0 "register_operand" "")
! 		 (match_operand:HI 1 "incdec_operand" "")))
!    (set (pc)
! 	(if_then_else (match_operator 3 "eqne_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 2 "" ""))
! 		      (pc)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && INTVAL (operands[1]) != 0
!     && peep2_reg_dead_p (1, operands[0])"
!   [(set (match_dup 0)
! 	(unspec:HI [(match_dup 0)
! 		    (match_dup 4)]
! 		   UNSPEC_INCDEC))
!    (set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_op_dup 3 [(cc0) (const_int 0)])
! 		      (label_ref (match_dup 2))
! 		      (pc)))]
!   {
!     operands[4] = GEN_INT (- INTVAL (operands[1]));
!   })
! 
! ;; Transform
! ;;
! ;;	cmp.w	#1,r0
! ;;	bgt	.L1
! ;;
! ;; into
! ;;
! ;;	shar.w	r0
! ;;	bgt	.L1
! 
! (define_peephole2
!   [(set (cc0)
! 	(compare (match_operand:HI 0 "register_operand" "")
! 		 (match_operand:HI 1 "const_int_operand" "")))
!    (set (pc)
! 	(if_then_else (match_operator 2 "gtle_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 3 "" ""))
! 		      (pc)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && peep2_reg_dead_p (1, operands[0])
!     && (INTVAL (operands[1]) == 1
! 	|| (TARGET_H8300S && INTVAL (operands[1]) == 3))"
!   [(parallel [(set (match_dup 0)
! 		   (ashiftrt:HI (match_dup 0)
! 				(match_dup 4)))
! 	      (clobber (scratch:QI))])
!    (set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_dup 2)
! 		      (label_ref (match_dup 3))
! 		      (pc)))]
!   {
!     operands[4] = GEN_INT (exact_log2 (INTVAL (operands[1]) + 1));
!   })
! 
! ;; Transform
! ;;
! ;;	cmp.w	#1,r0
! ;;	bhi	.L1
! ;;
! ;; into
! ;;
! ;;	shar.w	r0
! ;;	bne	.L1
! 
! (define_peephole2
!   [(set (cc0)
! 	(compare (match_operand:HI 0 "register_operand" "")
! 		 (match_operand:HI 1 "const_int_operand" "")))
!    (set (pc)
! 	(if_then_else (match_operator 2 "gtuleu_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 3 "" ""))
! 		      (pc)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && peep2_reg_dead_p (1, operands[0])
!     && (INTVAL (operands[1]) == 1
! 	|| (TARGET_H8300S && INTVAL (operands[1]) == 3))"
!   [(parallel [(set (match_dup 0)
! 		   (ashiftrt:HI (match_dup 0)
! 				(match_dup 4)))
! 	      (clobber (scratch:QI))])
!    (set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_dup 5)
! 		      (label_ref (match_dup 3))
! 		      (pc)))]
!   {
!     operands[4] = GEN_INT (exact_log2 (INTVAL (operands[1]) + 1));
!     operands[5] = gen_rtx_fmt_ee (GET_CODE (operands[2]) == GTU ? NE : EQ,
! 				  VOIDmode, cc0_rtx, const0_rtx);
!   })
! 
! ;; Transform
! ;;
! ;;	cmp.w	#255,r0
! ;;	bgt	.L1
! ;;
! ;; into
! ;;
! ;;	mov.b	r0h,r0h
! ;;	bgt	.L1
! 
! (define_peephole2
!   [(set (cc0)
! 	(compare (match_operand:HI 0 "register_operand" "")
! 		 (const_int 255)))
!    (set (pc)
! 	(if_then_else (match_operator 1 "gtle_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 2 "" ""))
! 		      (pc)))]
!   "TARGET_H8300H || TARGET_H8300S"
!   [(set (cc0) (compare (and:HI (match_dup 0)
! 			       (const_int -256))
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_dup 1)
! 		      (label_ref (match_dup 2))
! 		      (pc)))]
!   "")
! 
! ;; Transform
! ;;
! ;;	cmp.w	#255,r0
! ;;	bhi	.L1
! ;;
! ;; into
! ;;
! ;;	mov.b	r0h,r0h
! ;;	bne	.L1
! 
! (define_peephole2
!   [(set (cc0)
! 	(compare (match_operand:HI 0 "register_operand" "")
! 		 (const_int 255)))
!    (set (pc)
! 	(if_then_else (match_operator 1 "gtuleu_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 2 "" ""))
! 		      (pc)))]
!   "TARGET_H8300H || TARGET_H8300S"
!   [(set (cc0) (compare (and:HI (match_dup 0)
! 			       (const_int -256))
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_dup 3)
! 		      (label_ref (match_dup 2))
! 		      (pc)))]
!   {
!     operands[3] = gen_rtx_fmt_ee (GET_CODE (operands[1]) == GTU ? NE : EQ,
! 				  VOIDmode, cc0_rtx, const0_rtx);
!   })
! 
! ;; (compare (reg:SI) (const_int)) takes 6 bytes, so we try to achieve
! ;; the equivalent with shorter sequences.  Here is the summary.  Cases
! ;; are grouped for each define_peephole2.
! ;;
! ;; reg  const_int                   use     insn
! ;; --------------------------------------------------------
! ;; live    -2                       eq/ne   copy and inc.l
! ;; live    -1                       eq/ne   copy and inc.l
! ;; live     1                       eq/ne   copy and dec.l
! ;; live     2                       eq/ne   copy and dec.l
! ;;
! ;; dead    -2                       eq/ne   inc.l
! ;; dead    -1                       eq/ne   inc.l
! ;; dead     1                       eq/ne   dec.l
! ;; dead     2                       eq/ne   dec.l
! ;;
! ;; dead -131072                     eq/ne   inc.w and test
! ;; dead  -65536                     eq/ne   inc.w and test
! ;; dead   65536                     eq/ne   dec.w and test
! ;; dead  131072                     eq/ne   dec.w and test
! ;;
! ;; dead 0x000000?? except 1 and 2   eq/ne   xor.b and test
! ;; dead 0x0000??00                  eq/ne   xor.b and test
! ;; dead 0x0000ffff                  eq/ne   not.w and test
! ;;
! ;; dead 0xffffff?? except -1 and -2 eq/ne   xor.b and not.l
! ;; dead 0xffff??ff                  eq/ne   xor.b and not.l
! ;; dead 0x40000000 (H8S)            eq/ne   rotl.l and dec.l
! ;; dead 0x80000000                  eq/ne   rotl.l and dec.l
! ;;
! ;; live     1                       ge/lt copy and shar.l
! ;; live     3 (H8S)                 ge/lt copy and shar.l
! ;;
! ;; live     1                       geu/ltu copy and shar.l
! ;; live     3 (H8S)                 geu/ltu copy and shar.l
! ;;
! ;; dead     1                       ge/lt shar.l
! ;; dead     3 (H8S)                 ge/lt shar.l
! ;;
! ;; dead     1                       geu/ltu shar.l
! ;; dead     3 (H8S)                 geu/ltu shar.l
! ;;
! ;; dead     3 (H8/300H)             ge/lt and.b and test
! ;; dead     7                       ge/lt and.b and test
! ;; dead    15                       ge/lt and.b and test
! ;; dead    31                       ge/lt and.b and test
! ;; dead    63                       ge/lt and.b and test
! ;; dead   127                       ge/lt and.b and test
! ;; dead   255                       ge/lt and.b and test
! ;;
! ;; dead     3 (H8/300H)             geu/ltu and.b and test
! ;; dead     7                       geu/ltu and.b and test
! ;; dead    15                       geu/ltu and.b and test
! ;; dead    31                       geu/ltu and.b and test
! ;; dead    63                       geu/ltu and.b and test
! ;; dead   127                       geu/ltu and.b and test
! ;; dead   255                       geu/ltu and.b and test
! ;;
! ;; ---- 65535                       ge/lt mov.w
! ;;
! ;; ---- 65535                       geu/ltu mov.w
! 
! ;; Transform
! ;;
! ;;	cmp.l	#1,er0
! ;;	beq	.L1
! ;;
! ;; into
! ;;
! ;;	dec.l	#1,er0
! ;;	beq	.L1
! 
! (define_peephole2
!   [(set (cc0)
! 	(compare (match_operand:SI 0 "register_operand" "")
! 		 (match_operand:SI 1 "incdec_operand" "")))
!    (set (pc)
! 	(if_then_else (match_operator 3 "eqne_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 2 "" ""))
! 		      (pc)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && INTVAL (operands[1]) != 0
!     && peep2_reg_dead_p (1, operands[0])"
!   [(set (match_dup 0)
! 	(unspec:SI [(match_dup 0)
! 		    (match_dup 4)]
! 		   UNSPEC_INCDEC))
!    (set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_op_dup 3 [(cc0) (const_int 0)])
! 		      (label_ref (match_dup 2))
! 		      (pc)))]
!   {
!     operands[4] = GEN_INT (- INTVAL (operands[1]));
!   })
! 
! ;; Transform
! ;;
! ;;	cmp.l	#65536,er0
! ;;	beq	.L1
! ;;
! ;; into
! ;;
! ;;	dec.l	#1,e0
! ;;	beq	.L1
! 
! (define_peephole2
!   [(set (cc0)
! 	(compare (match_operand:SI 0 "register_operand" "")
! 		 (match_operand:SI 1 "const_int_operand" "")))
!    (set (pc)
! 	(if_then_else (match_operator 3 "eqne_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 2 "" ""))
! 		      (pc)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && peep2_reg_dead_p (1, operands[0])
!     && (INTVAL (operands[1]) == -131072
! 	|| INTVAL (operands[1]) == -65536
! 	|| INTVAL (operands[1]) == 65536
! 	|| INTVAL (operands[1]) == 131072)"
!   [(set (match_dup 0)
! 	(plus:SI (match_dup 0)
! 		 (match_dup 4)))
!    (set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_op_dup 3 [(cc0) (const_int 0)])
! 		      (label_ref (match_dup 2))
! 		      (pc)))]
!   {
!     operands[4] = GEN_INT (- INTVAL (operands[1]));
!   })
! 
! ;; Transform
! ;;
! ;;	cmp.l	#100,er0
! ;;	beq	.L1
! ;;
! ;; into
! ;;
! ;;	xor.b	#100,er0
! ;;	mov.l	er0,er0
! ;;	beq	.L1
! 
! (define_peephole2
!   [(set (cc0)
! 	(compare (match_operand:SI 0 "register_operand" "")
! 		 (match_operand:SI 1 "const_int_operand" "")))
!    (set (pc)
! 	(if_then_else (match_operator 3 "eqne_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 2 "" ""))
! 		      (pc)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && peep2_reg_dead_p (1, operands[0])
!     && ((INTVAL (operands[1]) & 0x00ff) == INTVAL (operands[1])
! 	|| (INTVAL (operands[1]) & 0xff00) == INTVAL (operands[1])
! 	|| INTVAL (operands[1]) == 0x0000ffff)
!     && INTVAL (operands[1]) != 0
!     && INTVAL (operands[1]) != 1
!     && INTVAL (operands[1]) != 2"
!   [(set (match_dup 0)
! 	(xor:SI (match_dup 0)
! 		(match_dup 1)))
!    (set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_op_dup 3 [(cc0) (const_int 0)])
! 		      (label_ref (match_dup 2))
! 		      (pc)))]
!   "")
! 
! ;; Transform
! ;;
! ;;	cmp.l	#-100,er0
! ;;	beq	.L1
! ;;
! ;; into
! ;;
! ;;	xor.b	#99,er0
! ;;	not.l	er0
! ;;	beq	.L1
! 
! (define_peephole2
!   [(set (cc0)
! 	(compare (match_operand:SI 0 "register_operand" "")
! 		 (match_operand:SI 1 "const_int_operand" "")))
!    (set (pc)
! 	(if_then_else (match_operator 3 "eqne_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 2 "" ""))
! 		      (pc)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && peep2_reg_dead_p (1, operands[0])
!     && ((INTVAL (operands[1]) | 0x00ff) == -1
! 	|| (INTVAL (operands[1]) | 0xff00) == -1)
!     && INTVAL (operands[1]) != -1
!     && INTVAL (operands[1]) != -2"
!   [(set (match_dup 0)
! 	(xor:SI (match_dup 0)
! 		(match_dup 4)))
!    (set (match_dup 0)
! 	(not:SI (match_dup 0)))
!    (set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_op_dup 3 [(cc0) (const_int 0)])
! 		      (label_ref (match_dup 2))
! 		      (pc)))]
!   {
!     operands[4] = GEN_INT (INTVAL (operands[1]) ^ -1);
!   })
! 
! ;; Transform
! ;;
! ;;	cmp.l	#-2147483648,er0
! ;;	beq	.L1
! ;;
! ;; into
! ;;
! ;;	rotl.l	er0
! ;;	dec.l	#1,er0
! ;;	beq	.L1
! 
! (define_peephole2
!   [(set (cc0)
! 	(compare (match_operand:SI 0 "register_operand" "")
! 		 (match_operand:SI 1 "const_int_operand" "")))
!    (set (pc)
! 	(if_then_else (match_operator 3 "eqne_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 2 "" ""))
! 		      (pc)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && peep2_reg_dead_p (1, operands[0])
!     && (INTVAL (operands[1]) == -2147483647 - 1
! 	|| (TARGET_H8300S && INTVAL (operands[1]) == 1073741824))"
!   [(set (match_dup 0)
! 	(rotate:SI (match_dup 0)
! 		   (match_dup 4)))
!    (set (match_dup 0)
! 	(unspec:SI [(match_dup 0)
! 		    (const_int -1)]
! 		   UNSPEC_INCDEC))
!    (set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_op_dup 3 [(cc0) (const_int 0)])
! 		      (label_ref (match_dup 2))
! 		      (pc)))]
!   {
!     operands[4] = GEN_INT (INTVAL (operands[1]) == -2147483647 - 1 ? 1 : 2);
!   })
! 
! ;; Transform
! ;;
! ;;	cmp.l	#1,er0
! ;;	bgt	.L1
! ;;
! ;; into
! ;;
! ;;	mov.l	er0,er1
! ;;	shar.l	er1
! ;;	bgt	.L1
! 
! ;; We avoid this transformation if we see more than one copy of the
! ;; same compare insn immediately before this one.
! 
! (define_peephole2
!   [(match_scratch:SI 4 "r")
!    (set (cc0)
! 	(compare (match_operand:SI 0 "register_operand" "")
! 		 (match_operand:SI 1 "const_int_operand" "")))
!    (set (pc)
! 	(if_then_else (match_operator 2 "gtle_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 3 "" ""))
! 		      (pc)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && !peep2_reg_dead_p (1, operands[0])
!     && (INTVAL (operands[1]) == 1
! 	|| (TARGET_H8300S && INTVAL (operands[1]) == 3))
!     && !same_cmp_preceding_p (insn)"
!   [(set (match_dup 4)
! 	(match_dup 0))
!    (parallel [(set (match_dup 4)
! 		   (ashiftrt:SI (match_dup 4)
! 				(match_dup 5)))
! 	      (clobber (scratch:QI))])
!    (set (cc0) (compare (match_dup 4)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_dup 2)
! 		      (label_ref (match_dup 3))
! 		      (pc)))]
!   {
!     operands[5] = GEN_INT (exact_log2 (INTVAL (operands[1]) + 1));
!   })
! 
! ;; Transform
! ;;
! ;;	cmp.l	#1,er0
! ;;	bhi	.L1
! ;;
! ;; into
! ;;
! ;;	mov.l	er0,er1
! ;;	shar.l	er1
! ;;	bne	.L1
! 
! ;; We avoid this transformation if we see more than one copy of the
! ;; same compare insn immediately before this one.
! 
! (define_peephole2
!   [(match_scratch:SI 4 "r")
!    (set (cc0)
! 	(compare (match_operand:SI 0 "register_operand" "")
! 		 (match_operand:SI 1 "const_int_operand" "")))
!    (set (pc)
! 	(if_then_else (match_operator 2 "gtuleu_operator"
! 		         [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 3 "" ""))
! 		      (pc)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && !peep2_reg_dead_p (1, operands[0])
!     && (INTVAL (operands[1]) == 1
! 	|| (TARGET_H8300S && INTVAL (operands[1]) == 3))
!     && !same_cmp_preceding_p (insn)"
!   [(set (match_dup 4)
! 	(match_dup 0))
!    (parallel [(set (match_dup 4)
! 		   (ashiftrt:SI (match_dup 4)
! 				(match_dup 5)))
! 	      (clobber (scratch:QI))])
!    (set (cc0) (compare (match_dup 4)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_dup 6)
! 		      (label_ref (match_dup 3))
! 		      (pc)))]
!   {
!     operands[5] = GEN_INT (exact_log2 (INTVAL (operands[1]) + 1));
!     operands[6] = gen_rtx_fmt_ee (GET_CODE (operands[2]) == GTU ? NE : EQ,
! 				  VOIDmode, cc0_rtx, const0_rtx);
!   })
! 
! ;; Transform
! ;;
! ;;	cmp.l	#1,er0
! ;;	bgt	.L1
! ;;
! ;; into
! ;;
! ;;	shar.l	er0
! ;;	bgt	.L1
! 
! (define_peephole2
!   [(set (cc0)
! 	(compare (match_operand:SI 0 "register_operand" "")
! 		 (match_operand:SI 1 "const_int_operand" "")))
!    (set (pc)
! 	(if_then_else (match_operator 2 "gtle_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 3 "" ""))
! 		      (pc)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && peep2_reg_dead_p (1, operands[0])
!     && (INTVAL (operands[1]) == 1
!         || (TARGET_H8300S && INTVAL (operands[1]) == 3))"
!   [(parallel [(set (match_dup 0)
! 		   (ashiftrt:SI (match_dup 0)
! 				(match_dup 4)))
! 	      (clobber (scratch:QI))])
!    (set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_dup 2)
! 		      (label_ref (match_dup 3))
! 		      (pc)))]
!   {
!     operands[4] = GEN_INT (exact_log2 (INTVAL (operands[1]) + 1));
!   })
! 
! ;; Transform
! ;;
! ;;	cmp.l	#1,er0
! ;;	bhi	.L1
! ;;
! ;; into
! ;;
! ;;	shar.l	er0
! ;;	bne	.L1
! 
! (define_peephole2
!   [(set (cc0)
! 	(compare (match_operand:SI 0 "register_operand" "")
! 		 (match_operand:SI 1 "const_int_operand" "")))
!    (set (pc)
! 	(if_then_else (match_operator 2 "gtuleu_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 3 "" ""))
! 		      (pc)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && peep2_reg_dead_p (1, operands[0])
!     && (INTVAL (operands[1]) == 1
! 	|| (TARGET_H8300S && INTVAL (operands[1]) == 3))"
!   [(parallel [(set (match_dup 0)
! 		   (ashiftrt:SI (match_dup 0)
! 				(match_dup 4)))
! 	      (clobber (scratch:QI))])
!    (set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_dup 5)
! 		      (label_ref (match_dup 3))
! 		      (pc)))]
!   {
!     operands[4] = GEN_INT (exact_log2 (INTVAL (operands[1]) + 1));
!     operands[5] = gen_rtx_fmt_ee (GET_CODE (operands[2]) == GTU ? NE : EQ,
! 				  VOIDmode, cc0_rtx, const0_rtx);
!   })
! 
! ;; Transform
! ;;
! ;;	cmp.l	#15,er0
! ;;	bgt	.L1
! ;;
! ;; into
! ;;
! ;;	and	#240,r0l
! ;;	mov.l	er0,er0
! ;;	bgt	.L1
! 
! (define_peephole2
!   [(set (cc0)
! 	(compare (match_operand:SI 0 "register_operand" "")
! 		 (match_operand:SI 1 "const_int_operand" "")))
!    (set (pc)
! 	(if_then_else (match_operator 2 "gtle_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 3 "" ""))
! 		      (pc)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && peep2_reg_dead_p (1, operands[0])
!     && (INTVAL (operands[1]) == 3
! 	 || INTVAL (operands[1]) == 7
! 	 || INTVAL (operands[1]) == 15
! 	 || INTVAL (operands[1]) == 31
! 	 || INTVAL (operands[1]) == 63
! 	 || INTVAL (operands[1]) == 127
! 	 || INTVAL (operands[1]) == 255)"
!   [(set (match_dup 0)
! 	(and:SI (match_dup 0)
! 		(match_dup 4)))
!    (set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_dup 2)
! 		      (label_ref (match_dup 3))
! 		      (pc)))]
!   {
!     operands[4] = GEN_INT (~INTVAL (operands[1]));
!   })
! 
! ;; Transform
! ;;
! ;;	cmp.l	#15,er0
! ;;	bhi	.L1
! ;;
! ;; into
! ;;
! ;;	and	#240,r0l
! ;;	mov.l	er0,er0
! ;;	bne	.L1
! 
! (define_peephole2
!   [(set (cc0)
! 	(compare (match_operand:SI 0 "register_operand" "")
! 		 (match_operand:SI 1 "const_int_operand" "")))
!    (set (pc)
! 	(if_then_else (match_operator 2 "gtuleu_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 3 "" ""))
! 		      (pc)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && peep2_reg_dead_p (1, operands[0])
!     && ((TARGET_H8300H && INTVAL (operands[1]) == 3)
! 	 || INTVAL (operands[1]) == 7
! 	 || INTVAL (operands[1]) == 15
! 	 || INTVAL (operands[1]) == 31
! 	 || INTVAL (operands[1]) == 63
! 	 || INTVAL (operands[1]) == 127
! 	 || INTVAL (operands[1]) == 255)"
!   [(set (match_dup 0)
! 	(and:SI (match_dup 0)
! 		(match_dup 4)))
!    (set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_dup 5)
! 		      (label_ref (match_dup 3))
! 		      (pc)))]
!   {
!     operands[4] = GEN_INT (~INTVAL (operands[1]));
!     operands[5] = gen_rtx_fmt_ee (GET_CODE (operands[2]) == GTU ? NE : EQ,
! 				  VOIDmode, cc0_rtx, const0_rtx);
!   })
! 
! ;; Transform
! ;;
! ;;	cmp.l	#65535,er0
! ;;	bgt	.L1
! ;;
! ;; into
! ;;
! ;;	mov.l	e0,e0
! ;;	bgt	.L1
! 
! (define_peephole2
!   [(set (cc0)
! 	(compare (match_operand:SI 0 "register_operand" "")
! 		 (const_int 65535)))
!    (set (pc)
! 	(if_then_else (match_operator 1 "gtle_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 2 "" ""))
! 		      (pc)))]
!   "TARGET_H8300H || TARGET_H8300S"
!   [(set (cc0) (compare (and:SI (match_dup 0)
! 			       (const_int -65536))
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_dup 1)
! 		      (label_ref (match_dup 2))
! 		      (pc)))]
!   "")
! 
! ;; Transform
! ;;
! ;;	cmp.l	#65535,er0
! ;;	bhi	.L1
! ;;
! ;; into
! ;;
! ;;	mov.l	e0,e0
! ;;	bne	.L1
! 
! (define_peephole2
!   [(set (cc0)
! 	(compare (match_operand:SI 0 "register_operand" "")
! 		 (const_int 65535)))
!    (set (pc)
! 	(if_then_else (match_operator 1 "gtuleu_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 2 "" ""))
! 		      (pc)))]
!   "TARGET_H8300H || TARGET_H8300S"
!   [(set (cc0) (compare (and:SI (match_dup 0)
! 			       (const_int -65536))
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_dup 3)
! 		      (label_ref (match_dup 2))
! 		      (pc)))]
!   {
!     operands[3] = gen_rtx_fmt_ee (GET_CODE (operands[1]) == GTU ? NE : EQ,
! 				  VOIDmode, cc0_rtx, const0_rtx);
!   })
! 
! ;; Transform
! ;;
! ;;	cmp.l	#1,er0
! ;;	beq	.L1
! ;;
! ;; into
! ;;
! ;;	mov.l	er0,er1
! ;;	dec.l	#1,er1
! ;;	beq	.L1
! 
! ;; We avoid this transformation if we see more than one copy of the
! ;; same compare insn.
! 
! (define_peephole2
!   [(match_scratch:SI 4 "r")
!    (set (cc0)
! 	(compare (match_operand:SI 0 "register_operand" "")
! 		 (match_operand:SI 1 "incdec_operand" "")))
!    (set (pc)
! 	(if_then_else (match_operator 3 "eqne_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 2 "" ""))
! 		      (pc)))]
!   "(TARGET_H8300H || TARGET_H8300S)
!     && INTVAL (operands[1]) != 0
!     && !peep2_reg_dead_p (1, operands[0])
!     && !same_cmp_following_p (insn)"
!   [(set (match_dup 4)
! 	(match_dup 0))
!    (set (match_dup 4)
! 	(unspec:SI [(match_dup 4)
! 		    (match_dup 5)]
! 		   UNSPEC_INCDEC))
!    (set (cc0) (compare (match_dup 4)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_op_dup 3 [(cc0) (const_int 0)])
! 		      (label_ref (match_dup 2))
! 		      (pc)))]
!   {
!     operands[5] = GEN_INT (- INTVAL (operands[1]));
!   })
! 
! ;; Narrow the mode of testing if possible.
! 
! (define_peephole2
!   [(set (match_operand:HSI 0 "register_operand" "")
! 	(and:HSI (match_dup 0)
! 		 (match_operand:HSI 1 "const_int_operand" "")))
!    (set (cc0) (compare (match_dup 0)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_operator 3 "eqne_operator"
! 		       [(cc0) (const_int 0)])
! 		      (label_ref (match_operand 2 "" ""))
! 		      (pc)))]
!   "((const_int_qi_operand (operands[1], QImode)
!      || (GET_MODE (operands[0]) == SImode
! 	 && const_int_hi_operand (operands[1], HImode)))
!     && peep2_reg_dead_p (2, operands[0]))"
!   [(set (match_dup 4) (match_dup 6))
!    (set (cc0) (compare (match_dup 4)
! 		       (const_int 0)))
!    (set (pc)
! 	(if_then_else (match_op_dup 3 [(cc0) (const_int 0)])
! 		      (label_ref (match_dup 2))
! 		      (pc)))]
!   {
!     enum machine_mode mode;
! 
!     mode = const_int_qi_operand (operands[1], QImode) ? QImode : HImode;
!     operands[4] = gen_rtx_REG (mode, REGNO (operands[0]));
!     operands[5] = gen_int_mode (INTVAL (operands[1]), mode);
!     operands[6] = gen_rtx_AND (mode, operands[4], operands[5]);
!   })
! 
! ;; These triggers right at the end of allocation of locals in the
! ;; prologue (and possibly at other places).
! 
! ;; stack adjustment of -4, generate one push
! ;;
! ;; before : 6 bytes, 10 clocks
! ;; after  : 4 bytes, 10 clocks
! 
! (define_peephole2
!   [(set (reg:SI SP_REG)
! 	(plus:SI (reg:SI SP_REG)
! 		 (const_int -4)))
!    (set (mem:SI (reg:SI SP_REG))
! 	(match_operand:SI 0 "register_operand" ""))]
!   "(TARGET_H8300H || TARGET_H8300S) && !TARGET_NORMAL_MODE
!     && REGNO (operands[0]) != SP_REG"
!   [(set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
! 	(match_dup 0))]
!   "")
! 
! ;; stack adjustment of -12, generate one push
! ;;
! ;; before : 10 bytes, 14 clocks
! ;; after  :  8 bytes, 14 clocks
! 
! (define_peephole2
!   [(set (reg:SI SP_REG)
! 	(plus:SI (reg:SI SP_REG)
! 		 (const_int -12)))
!    (set (mem:SI (reg:SI SP_REG))
! 	(match_operand:SI 0 "register_operand" ""))]
!   "(TARGET_H8300H || TARGET_H8300S) && !TARGET_NORMAL_MODE
!     && REGNO (operands[0]) != SP_REG"
!   [(set (reg:SI SP_REG)
! 	(plus:SI (reg:SI SP_REG)
! 		 (const_int -4)))
!    (set (reg:SI SP_REG)
! 	(plus:SI (reg:SI SP_REG)
! 		 (const_int -4)))
!    (set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
! 	(match_dup 0))]
!   "")
! 
! ;; Transform
! ;;
! ;;	mov	dst,reg
! ;;	op	reg
! ;;	mov	reg,dst
! ;;
! ;; into
! ;;
! ;;	op	dst
! ;;
! ;; if "reg" dies at the end of the sequence.
! 
! (define_peephole2
!   [(set (match_operand 0 "register_operand" "")
! 	(match_operand 1 "memory_operand" ""))
!    (set (match_dup 0)
! 	(match_operator 2 "h8sx_unary_memory_operator"
! 	 [(match_dup 0)]))
!    (set (match_operand 3 "memory_operand" "")
! 	(match_dup 0))]
!   "TARGET_H8300SX
!    && peep2_reg_dead_p (3, operands[0])
!    && !reg_overlap_mentioned_p (operands[0], operands[3])
!    && h8sx_mergeable_memrefs_p (operands[3], operands[1])"
!   [(set (match_dup 3)
! 	(match_dup 4))]
!   {
!     operands[4] = shallow_copy_rtx (operands[2]);
!     XEXP (operands[4], 0) = operands[1];
!   })
! 
! ;; Transform
! ;;
! ;;	mov	src1,reg
! ;;	cmp	reg,src2
! ;;
! ;; into
! ;;
! ;;	cmp	src1,src2
! ;;
! ;; if "reg" dies in the comparison.
! 
! (define_peephole2
!   [(set (match_operand 0 "register_operand" "")
! 	(match_operand 1 "h8300_dst_operand" ""))
!    (set (cc0)
! 	(compare (match_dup 0)
! 		 (match_operand 2 "h8300_src_operand" "")))]
!   "TARGET_H8300SX
!    && peep2_reg_dead_p (2, operands[0])
!    && !reg_overlap_mentioned_p (operands[0], operands[2])
!    && operands[2] != const0_rtx"
!   [(set (cc0)
! 	(compare (match_dup 1)
! 		 (match_dup 2)))])
! 
! ;; Likewise for the second operand.
! 
! (define_peephole2
!   [(set (match_operand 0 "register_operand" "")
! 	(match_operand 1 "h8300_src_operand" ""))
!    (set (cc0)
! 	(compare (match_operand 2 "h8300_dst_operand" "")
! 		 (match_dup 0)))]
!   "TARGET_H8300SX
!    && peep2_reg_dead_p (2, operands[0])
!    && !reg_overlap_mentioned_p (operands[0], operands[2])"
!   [(set (cc0)
! 	(compare (match_dup 2)
! 		 (match_dup 1)))])
! 
! ;; Combine two moves.
! 
! (define_peephole2
!   [(set (match_operand 0 "register_operand" "")
! 	(match_operand 1 "h8300_src_operand" ""))
!    (set (match_operand 2 "h8300_dst_operand" "")
! 	(match_dup 0))]
!   "TARGET_H8300SX
!    && peep2_reg_dead_p (2, operands[0])
!    && !reg_overlap_mentioned_p (operands[0], operands[2])"
!   [(set (match_dup 2)
! 	(match_dup 1))])
! 
! 
--- 225,248 ----
  
  (define_mode_iterator QHSIF [QI HI SI SF])
  
+ (define_mode_iterator SFI [SF SI])
+ 
  (define_code_iterator shifts [ashift ashiftrt lshiftrt])
  
  (define_code_iterator ors [ior xor])
  
! (include "movepush.md")
  (include "mova.md")
! (include "testcompare.md")
! (include "addsub.md")
! (include "multiply.md")
! (include "divmod.md")
! (include "logical.md")
! (include "other.md")
! (include "jumpcall.md")
! (include "proepi.md")
! (include "extensions.md")
! (include "shiftrotate.md")
! (include "bitfield.md")
! (include "combiner.md")
! ;;(include "peepholes.md")
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/h8300.opt gcc-11.1.0/gcc/config/h8300/h8300.opt
*** gcc-10.3.0/gcc/config/h8300/h8300.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/h8300/h8300.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Options for the Renesas H8/300 port of the compiler
  ;
! ; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the Renesas H8/300 port of the compiler
  ;
! ; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/jumpcall.md gcc-11.1.0/gcc/config/h8300/jumpcall.md
*** gcc-10.3.0/gcc/config/h8300/jumpcall.md	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/h8300/jumpcall.md	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,284 ----
+ ;; ----------------------------------------------------------------------
+ ;; JUMP INSTRUCTIONS
+ ;; ----------------------------------------------------------------------
+ 
+ ;; Conditional jump instructions
+ 
+ (define_expand "cbranch<mode>4"
+   [(set (pc)
+ 	(if_then_else (match_operator 0 "ordered_comparison_operator"
+ 		        [(match_operand:QHSI 1 "h8300_dst_operand")
+ 			 (match_operand:QHSI 2 "h8300_src_operand")])
+ 		      (label_ref (match_operand 3 ""))
+ 		      (pc)))]
+   "")
+ 
+ (define_insn_and_split "*branch"
+   [(set (pc)
+ 	(if_then_else (match_operator 0 "comparison_operator"
+ 		       [(match_operand:QHSI 1 "h8300_dst_operand" "rQ")
+ 			(match_operand:QHSI 2 "h8300_src_operand" "rQi")])
+ 		      (label_ref (match_operand 3 "" ""))
+ 		      (pc)))]
+   ""
+   "#"
+   "reload_completed"
+   [(set (reg:H8cc CC_REG)
+ 	(compare:H8cc (match_dup 1) (match_dup 2)))
+    (set (pc)
+ 	(if_then_else (match_op_dup 0
+ 		       [(reg:H8cc CC_REG) (const_int 0)])
+ 		      (label_ref (match_dup 3)) (pc)))]
+   "")
+ 
+ (define_insn "*branch_1"
+   [(set (pc)
+ 	(if_then_else (match_operator 1 "comparison_operator"
+ 		       [(reg:H8cc CC_REG) (const_int 0)])
+ 		      (label_ref (match_operand 0 "" ""))
+ 		      (pc)))]
+   "reload_completed"
+ {
+   if (get_attr_length (insn) == 2)
+     return "b%j1	%l0";
+   else if (get_attr_length (insn) == 4)
+     return "b%j1	%l0:16";
+   else
+     return "b%k1	.Lh8BR%=\;jmp	@%l0\\n.Lh8BR%=:";
+ }
+  [(set_attr "type" "branch")])
+ 
+ 
+ (define_insn "*branch_1_false"
+   [(set (pc)
+ 	(if_then_else (match_operator 1 "comparison_operator"
+ 		       [(reg:H8cc CC_REG) (const_int 0)])
+ 		      (pc)
+ 		      (label_ref (match_operand 0 "" ""))))]
+   "reload_completed"
+ {
+   if (get_attr_length (insn) == 2)
+     return "b%k1	%l0";
+   else if (get_attr_length (insn) == 4)
+     return "b%k1	%l0:16";
+   else
+     return "b%j1	.Lh8BR%=\;jmp	@%l0\\n.Lh8BR%=:";
+ }
+  [(set_attr "type" "branch")])
+ 
+ ;; The brabc/brabs patterns have been disabled because their length computation
+ ;; is horribly broken.  When we call out to a function via a SYMBOL_REF we get
+ ;; bogus default and minimum lengths.  The trick used by the PA port seems to
+ ;; fix the minimum, but not the default length.  The broken lengths can lead
+ ;; to bogusly using a short jump when a long jump was needed and thus
+ ;; incorrect code.
+ ;;
+ ;; Given the restricted addressing modes for operand 1, we could probably just
+ ;; open-code the necessary length computation in the two affected patterns
+ ;; rather than using a function call.  I think that would fix this problem.
+ (define_insn "*brabc"
+   [(set (pc)
+ 	(if_then_else (eq (zero_extract (match_operand:QI 1 "bit_memory_operand" "WU")
+ 					(const_int 1)
+ 					(match_operand:QI 2 "immediate_operand" "n"))
+ 			  (const_int 0))
+ 		      (label_ref (match_operand 0 "" ""))
+ 		      (pc)))]
+   "0 && TARGET_H8300SX"
+ {
+   switch (get_attr_length (insn)
+ 	  - h8300_insn_length_from_table (insn, operands))
+     {
+     case 2:
+       return "bra/bc	%2,%R1,%l0";
+     case 4:
+       return "bra/bc	%2,%R1,%l0:16";
+     default:
+       return "bra/bs	%2,%R1,.Lh8BR%=\;jmp	@%l0\\n.Lh8BR%=:";
+     }
+ }
+   [(set_attr "type" "bitbranch")
+    (set_attr "length_table" "bitbranch")])
+ 
+ (define_insn "*brabs"
+   [(set (pc)
+ 	(if_then_else (ne (zero_extract (match_operand:QI 1 "bit_memory_operand" "WU")
+ 					(const_int 1)
+ 					(match_operand:QI 2 "immediate_operand" "n"))
+ 			  (const_int 0))
+ 		      (label_ref (match_operand 0 "" ""))
+ 		      (pc)))]
+   "0 && TARGET_H8300SX"
+ {
+   switch (get_attr_length (insn)
+ 	  - h8300_insn_length_from_table (insn, operands))
+     {
+     case 2:
+       return "bra/bs	%2,%R1,%l0";
+     case 4:
+       return "bra/bs	%2,%R1,%l0:16";
+     default:
+       return "bra/bc	%2,%R1,.Lh8BR%=\;jmp	@%l0\\n.Lh8BR%=:";
+     }
+ }
+   [(set_attr "type" "bitbranch")
+    (set_attr "length_table" "bitbranch")])
+ 
+ ;; Unconditional and other jump instructions.
+ 
+ (define_insn "jump"
+   [(set (pc)
+ 	(label_ref (match_operand 0 "" "")))]
+   ""
+ {
+   if (final_sequence != 0)
+     {
+       if (get_attr_length (insn) == 2)
+ 	return "bra/s	%l0";
+       else
+ 	{
+ 	  /* The branch isn't short enough to use bra/s.  Output the
+ 	     branch and delay slot in their normal order.
+ 
+ 	     If this is a backward branch, it will now be branching two
+ 	     bytes further than previously thought.  The length-based
+ 	     test for bra vs. jump is very conservative though, so the
+ 	     branch will still be within range.  */
+ 	  rtx_sequence *seq;
+ 	  int seen;
+ 
+ 	  seq = final_sequence;
+ 	  final_sequence = 0;
+ 	  final_scan_insn (seq->insn (1), asm_out_file, optimize, 1, & seen);
+ 	  final_scan_insn (seq->insn (0), asm_out_file, optimize, 1, & seen);
+ 	  seq->insn (1)->set_deleted ();
+ 	  return "";
+ 	}
+     }
+   else if (get_attr_length (insn) == 2)
+     return "bra	%l0";
+   else if (get_attr_length (insn) == 4)
+     return "bra	%l0:16";
+   else
+     return "jmp	@%l0";
+ }
+   [(set_attr "type" "branch")
+    (set (attr "delay_slot")
+ 	(if_then_else (match_test "TARGET_H8300SX")
+ 		      (const_string "jump")
+ 		      (const_string "none")))])
+ 
+ ;; This is a define expand, because pointers may be either 16 or 32 bits.
+ 
+ (define_expand "tablejump"
+   [(parallel [(set (pc) (match_operand 0 "register_operand" ""))
+ 	      (use (label_ref (match_operand 1 "" "")))])]
+   ""
+   "")
+ 
+ (define_insn "tablejump<mode>"
+   [(set (pc) (match_operand:P 0 "register_operand" "r"))
+    (use (label_ref (match_operand 1 "" "")))]
+   ""
+   {
+     if (<MODE>mode == E_HImode)
+       return "jmp	@%0";
+     if (<MODE>mode == E_SImode)
+       return "jmp	@%S0";
+     abort ();
+   }
+   [(set_attr "length" "2")])
+ 
+ ;; This is a define expand, because pointers may be either 16 or 32 bits.
+ 
+ (define_expand "indirect_jump"
+   [(set (pc) (match_operand 0 "jump_address_operand" ""))]
+   ""
+   "")
+ 
+ (define_insn "*indirect_jump_<mode>"
+   [(set (pc) (match_operand:P 0 "jump_address_operand" "Vr"))]
+   ""
+   {
+     if (<MODE>mode == E_HImode)
+       return "jmp	@%0";
+     if (<MODE>mode == E_SImode)
+       return "jmp	@%S0";
+     abort ();
+   }
+   [(set_attr "length" "2")])
+ 
+ ;; Call subroutine with no return value.
+ 
+ ;; ??? Even though we use HImode here, this works on the H8/300H and H8S.
+ 
+ (define_expand "call"
+   [(call (match_operand:QI 0 "call_expander_operand" "")
+ 	 (match_operand 1 "general_operand" ""))]
+   ""
+   {
+     if (!register_operand (XEXP (operands[0], 0), Pmode)
+ 	&& GET_CODE (XEXP (operands[0], 0)) != SYMBOL_REF)
+       XEXP (operands[0], 0) = force_reg (Pmode, XEXP (operands[0], 0));
+   })
+ 
+ (define_insn "call_insn_<mode>"
+   [(call (mem:QI (match_operand 0 "call_insn_operand" "Cr"))
+ 	         (match_operand:P 1 "general_operand" "g"))]
+   ""
+ {
+   rtx xoperands[1];
+   xoperands[0] = gen_rtx_MEM (QImode, operands[0]);
+   gcc_assert (GET_MODE (operands[0]) == Pmode);
+   if (GET_CODE (XEXP (xoperands[0], 0)) == SYMBOL_REF
+       && (SYMBOL_REF_FLAGS (XEXP (xoperands[0], 0)) & SYMBOL_FLAG_FUNCVEC_FUNCTION))
+     output_asm_insn ("jsr\\t@%0:8", xoperands);
+   else
+     output_asm_insn ("jsr\\t%0", xoperands);
+   return "";
+ }
+   [(set_attr "type" "call")
+    (set (attr "length")
+ 	(if_then_else (match_operand:QI 0 "small_call_insn_operand" "")
+ 		      (const_int 2)
+ 		      (const_int 4)))])
+ 
+ ;; Call subroutine, returning value in operand 0
+ ;; (which must be a hard register).
+ 
+ ;; ??? Even though we use HImode here, this works on the H8/300H and H8S.
+ 
+ (define_expand "call_value"
+   [(set (match_operand 0 "" "")
+ 	(call (match_operand:QI 1 "call_expander_operand" "")
+ 	      (match_operand 2 "general_operand" "")))]
+   ""
+   {
+     if (!register_operand (XEXP (operands[1], 0), Pmode)
+ 	&& GET_CODE (XEXP (operands[1], 0)) != SYMBOL_REF)
+       XEXP (operands[1], 0) = force_reg (Pmode, XEXP (operands[1], 0));
+   })
+ 
+ (define_insn "call_value_insn_<mode>"
+   [(set (match_operand 0 "" "=r")
+ 	(call (mem:QI (match_operand 1 "call_insn_operand" "Cr"))
+ 		      (match_operand:P 2 "general_operand" "g")))]
+   ""
+ {
+   rtx xoperands[2];
+   gcc_assert (GET_MODE (operands[1]) == Pmode);
+   xoperands[0] = operands[0];
+   xoperands[1] = gen_rtx_MEM (QImode, operands[1]);
+   if (GET_CODE (XEXP (xoperands[1], 0)) == SYMBOL_REF
+       && (SYMBOL_REF_FLAGS (XEXP (xoperands[1], 0)) & SYMBOL_FLAG_FUNCVEC_FUNCTION))
+     output_asm_insn ("jsr\\t@%1:8", xoperands);
+   else
+     output_asm_insn ("jsr\\t%1", xoperands);
+   return "";
+ }
+   [(set_attr "type" "call")
+    (set (attr "length")
+ 	(if_then_else (match_operand:QI 0 "small_call_insn_operand" "")
+ 		      (const_int 2)
+ 		      (const_int 4)))])
+ 
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/linux.h gcc-11.1.0/gcc/config/h8300/linux.h
*** gcc-10.3.0/gcc/config/h8300/linux.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/h8300/linux.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.
     Renesas H8/300 (linux variant)
!    Copyright (C) 2015-2020 Free Software Foundation, Inc.
     Contributed by Yoshinori Sato <ysato@users.sourceforge.jp>
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.
     Renesas H8/300 (linux variant)
!    Copyright (C) 2015-2021 Free Software Foundation, Inc.
     Contributed by Yoshinori Sato <ysato@users.sourceforge.jp>
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/logical.md gcc-11.1.0/gcc/config/h8300/logical.md
*** gcc-10.3.0/gcc/config/h8300/logical.md	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/h8300/logical.md	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,370 ----
+ ;; ----------------------------------------------------------------------
+ ;; AND INSTRUCTIONS
+ ;; ----------------------------------------------------------------------
+ 
+ (define_insn "bclrqi_msx"
+   [(set (match_operand:QI 0 "bit_register_indirect_operand" "=WU")
+ 	(and:QI (match_operand:QI 1 "bit_register_indirect_operand" "%0")
+ 		(match_operand:QI 2 "single_zero_operand" "Y0")))]
+   "TARGET_H8300SX && rtx_equal_p (operands[0], operands[1])"
+   "bclr\\t%W2,%0"
+   [(set_attr "length" "8")])
+ 
+ (define_split
+   [(set (match_operand:HI 0 "bit_register_indirect_operand")
+ 	(and:HI (match_operand:HI 1 "bit_register_indirect_operand")
+ 		(match_operand:HI 2 "single_zero_operand")))]
+   "TARGET_H8300SX && abs (INTVAL (operands[2])) > 0xff"
+   [(set (match_dup 0)
+ 	(and:QI (match_dup 1)
+ 		(match_dup 2)))]
+   {
+     operands[0] = adjust_address (operands[0], QImode, 0);
+     operands[1] = adjust_address (operands[1], QImode, 0);
+     operands[2] = GEN_INT ((INTVAL (operands[2])) >> 8);
+   })
+ 
+ (define_insn "bclrhi_msx"
+   [(set (match_operand:HI 0 "bit_register_indirect_operand" "=m")
+ 	(and:HI (match_operand:HI 1 "bit_register_indirect_operand" "%0")
+ 		(match_operand:HI 2 "single_zero_operand" "Y0")))]
+   "TARGET_H8300SX"
+   "bclr\\t%W2,%0"
+   [(set_attr "length" "8")])
+ 
+ (define_insn_and_split "*andqi3_2"
+   [(set (match_operand:QI 0 "bit_operand" "=U,rQ,r")
+ 	(and:QI (match_operand:QI 1 "bit_operand" "%0,0,WU")
+ 		(match_operand:QI 2 "h8300_src_operand" "Y0,rQi,IP1>X")))]
+   "TARGET_H8300SX"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (and:QI (match_dup 1) (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*andqi3_2_clobber_flags"
+   [(set (match_operand:QI 0 "bit_operand" "=U,rQ,r")
+ 	(and:QI (match_operand:QI 1 "bit_operand" "%0,0,WU")
+ 		(match_operand:QI 2 "h8300_src_operand" "Y0,rQi,IP1>X")))
+    (clobber (reg:CC CC_REG))]
+   "TARGET_H8300SX"
+   "@
+    bclr\\t %W2,%R0
+    and  %X2,%X0
+    bfld %2,%1,%R0"
+   [(set_attr "length" "8,*,8")
+    (set_attr "length_table" "*,logicb,*")])
+ 
+ (define_insn_and_split "andqi3_1"
+   [(set (match_operand:QI 0 "bit_operand" "=U,r")
+ 	(and:QI (match_operand:QI 1 "bit_operand" "%0,0")
+ 		(match_operand:QI 2 "h8300_src_operand" "Y0,rn")))]
+   "register_operand (operands[0], QImode)
+    || single_zero_operand (operands[2], QImode)"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (and:QI (match_dup 1) (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "andqi3_1_clobber_flags"
+   [(set (match_operand:QI 0 "bit_operand" "=U,r")
+ 	(and:QI (match_operand:QI 1 "bit_operand" "%0,0")
+ 		(match_operand:QI 2 "h8300_src_operand" "Y0,rn")))
+    (clobber (reg:CC CC_REG))]
+   "register_operand (operands[0], QImode)
+    || single_zero_operand (operands[2], QImode)"
+   "@
+    bclr %W2,%R0
+    and  %X2,%X0"
+   [(set_attr "length" "2,8")])
+ 
+ (define_expand "and<mode>3"
+   [(set (match_operand:QHSI 0 "register_operand" "")
+ 	(and:QHSI (match_operand:QHSI 1 "register_operand" "")
+ 		  (match_operand:QHSI 2 "h8300_src_operand" "")))]
+   ""
+   "")
+ 
+ (define_insn_and_split "*andor<mode>3"
+   [(set (match_operand:QHSI 0 "register_operand" "=r")
+ 	(ior:QHSI (and:QHSI (match_operand:QHSI 2 "register_operand" "r")
+ 			    (match_operand:QHSI 3 "single_one_operand" "n"))
+ 		  (match_operand:QHSI 1 "register_operand" "0")))]
+   "(<MODE>mode == QImode
+     || <MODE>mode == HImode
+     || (<MODE>mode == SImode
+ 	&& (INTVAL (operands[3]) & 0xffff) != 0))"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (ior:QHSI (and:QHSI (match_dup 2)
+ 						     (match_dup 3))
+ 					   (match_dup 1)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*andor<mode>3_clobber_flags"
+   [(set (match_operand:QHSI 0 "register_operand" "=r")
+ 	(ior:QHSI (and:QHSI (match_operand:QHSI 2 "register_operand" "r")
+ 			    (match_operand:QHSI 3 "single_one_operand" "n"))
+ 		  (match_operand:QHSI 1 "register_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   "(<MODE>mode == QImode
+     || <MODE>mode == HImode
+     || (<MODE>mode == SImode
+ 	&& (INTVAL (operands[3]) & 0xffff) != 0))"
+   {
+     if (<MODE>mode == QImode)
+       return "bld\\t%V3,%X2\;bor\\t%V3,%X0\;bst\\t%V3,%X0";
+ 
+     if (<MODE>mode == HImode)
+       {
+ 	operands[3] = GEN_INT (INTVAL (operands[3]) & 0xffff);
+ 	if (INTVAL (operands[3]) > 128)
+ 	  {
+ 	    operands[3] = GEN_INT (INTVAL (operands[3]) >> 8);
+ 	    return "bld\\t%V3,%t2\;bor\\t%V3,%t0\;bst\\t%V3,%t0";
+ 	  }
+ 	return "bld\\t%V3,%s2\;bor\\t%V3,%s0\;bst\\t%V3,%s0";
+       }
+ 
+     if (<MODE>mode == SImode)
+       {
+ 	operands[3] = GEN_INT (INTVAL (operands[3]) & 0xffff);
+ 	if (INTVAL (operands[3]) > 128)
+ 	  {
+ 	    operands[3] = GEN_INT (INTVAL (operands[3]) >> 8);
+ 	    return "bld\\t%V3,%x2\;bor\\t%V3,%x0\;bst\\t%V3,%x0";
+ 	  }
+ 	return "bld\\t%V3,%w2\;bor\\t%V3,%w0\;bst\\t%V3,%w0";
+       }
+ 
+     gcc_unreachable ();
+ 	
+   }
+   [(set_attr "length" "6")])
+ 
+ (define_insn_and_split "*andorsi3_shift_8"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (and:SI (ashift:SI (match_operand:SI 2 "register_operand" "r")
+ 				   (const_int 8))
+ 			(const_int 65280))
+ 		(match_operand:SI 1 "register_operand" "0")))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (ior:SI (and:SI (ashift:SI (match_dup 2)
+ 							    (const_int 8))
+ 						 (const_int 65280))
+ 					 (match_dup 1)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*andorsi3_shift_8_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(ior:SI (and:SI (ashift:SI (match_operand:SI 2 "register_operand" "r")
+ 				   (const_int 8))
+ 			(const_int 65280))
+ 		(match_operand:SI 1 "register_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "or.b\\t%w2,%x0"
+   [(set_attr "length" "2")])
+ 
+ ;; ----------------------------------------------------------------------
+ ;; OR/XOR INSTRUCTIONS
+ ;; ----------------------------------------------------------------------
+ 
+ (define_insn "b<code>qi_msx"
+   [(set (match_operand:QI 0 "bit_register_indirect_operand" "=WU")
+ 	(ors:QI (match_operand:QI 1 "bit_register_indirect_operand" "%0")
+ 		(match_operand:QI 2 "single_one_operand" "Y2")))]
+   "TARGET_H8300SX && rtx_equal_p (operands[0], operands[1])"
+   { return <CODE> == IOR ? "bset\\t%V2,%0" : "bnot\\t%V2,%0"; }
+   [(set_attr "length" "8")])
+ 
+ (define_insn "b<code>hi_msx"
+   [(set (match_operand:HI 0 "bit_register_indirect_operand" "=m")
+ 	(ors:HI (match_operand:HI 1 "bit_register_indirect_operand" "%0")
+ 		(match_operand:HI 2 "single_one_operand" "Y2")))]
+   "TARGET_H8300SX"
+   { return <CODE> == IOR ? "bset\\t%V2,%0" : "bnot\\t%V2,%0"; }
+   [(set_attr "length" "8")])
+ 
+ (define_insn_and_split "<code>qi3_1"
+   [(set (match_operand:QI 0 "bit_operand" "=U,rQ")
+ 	(ors:QI (match_operand:QI 1 "bit_operand" "%0,0")
+ 		(match_operand:QI 2 "h8300_src_operand" "Y2,rQi")))]
+   "TARGET_H8300SX || register_operand (operands[0], QImode)
+    || single_one_operand (operands[2], QImode)"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (ors:QI (match_dup 1) (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "<code>qi3_1_clobber_flags"
+   [(set (match_operand:QI 0 "bit_operand" "=U,rQ")
+ 	(ors:QI (match_operand:QI 1 "bit_operand" "%0,0")
+ 		(match_operand:QI 2 "h8300_src_operand" "Y2,rQi")))
+    (clobber (reg:CC CC_REG))]
+   "TARGET_H8300SX || register_operand (operands[0], QImode)
+    || single_one_operand (operands[2], QImode)"
+   {
+     if (which_alternative == 0)
+       return <CODE> == IOR ? "bset\\t%V2,%R0" : "bnot\\t%V2,%R0";
+     else if (which_alternative == 1)
+       return <CODE> == IOR ? "or\\t%X2,%X0" : "xor\\t%X2,%X0";
+     gcc_unreachable ();
+   }
+   [(set_attr "length" "8,*")
+    (set_attr "length_table" "*,logicb")])
+ 
+ (define_expand "<code><mode>3"
+   [(set (match_operand:QHSI 0 "register_operand" "")
+ 	(ors:QHSI (match_operand:QHSI 1 "register_operand" "")
+ 		  (match_operand:QHSI 2 "h8300_src_operand" "")))]
+   ""
+   "")
+ 
+ ;; ----------------------------------------------------------------------
+ ;; {AND,IOR,XOR}{HI3,SI3} PATTERNS
+ ;; ----------------------------------------------------------------------
+ 
+ (define_insn_and_split "*logical<mode>3"
+   [(set (match_operand:HSI 0 "h8300_dst_operand" "=rQ")
+ 	(match_operator:HSI 3 "bit_operator"
+ 	  [(match_operand:HSI 1 "h8300_dst_operand" "%0")
+ 	   (match_operand:HSI 2 "h8300_src_operand" "rQi")]))]
+   "h8300_operands_match_p (operands)"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (match_op_dup 3 [(match_dup 1) (match_dup 2)]))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*logical<mode>3_clobber_flags"
+   [(set (match_operand:HSI 0 "h8300_dst_operand" "=rQ")
+ 	(match_operator:HSI 3 "bit_operator"
+ 	  [(match_operand:HSI 1 "h8300_dst_operand" "%0")
+ 	   (match_operand:HSI 2 "h8300_src_operand" "rQi")]))
+    (clobber (reg:CC CC_REG))]
+   "h8300_operands_match_p (operands)"
+   { return output_logical_op (<MODE>mode, operands); }
+   [(set (attr "length")
+ 	(symbol_ref "compute_logical_op_length (<MODE>mode, operands)"))])
+ 
+ 
+ ;; ----------------------------------------------------------------------
+ ;; NOT INSTRUCTIONS
+ ;; ----------------------------------------------------------------------
+ 
+ (define_insn_and_split "one_cmpl<mode>2"
+   [(set (match_operand:QHSI 0 "h8300_dst_operand" "=rQ")
+ 	(not:QHSI (match_operand:QHSI 1 "h8300_dst_operand" "0")))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (not:QHSI (match_dup 1)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "one_cmpl<mode>2_clobber_flags"
+   [(set (match_operand:QHSI 0 "h8300_dst_operand" "=rQ")
+ 	(not:QHSI (match_operand:QHSI 1 "h8300_dst_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   ""
+   {
+     if (<MODE>mode == E_QImode)
+       return "not	%X0";
+     if (<MODE>mode == E_HImode)
+       return "not.w	%T0";
+     if (<MODE>mode == E_SImode)
+       return "not.l	%S0";
+     gcc_unreachable ();
+   }
+   [(set_attr "length_table" "unary")])
+ 
+ ;; The next four peephole2's will try to transform
+ ;;
+ ;;   mov.b A,r0l    (or mov.l A,er0)
+ ;;   and.l #CST,er0
+ ;;
+ ;; into
+ ;;
+ ;;   sub.l er0
+ ;;   mov.b A,r0l
+ ;;   and.b #CST,r0l (if CST is not 255)
+ 
+ (define_peephole2
+   [(parallel [(set (match_operand:QI 0 "register_operand" "")
+ 		   (match_operand:QI 1 "general_operand" ""))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_operand:SI 2 "register_operand" "")
+ 		   (and:SI (match_dup 2) (const_int 255)))
+ 	      (clobber (reg:CC CC_REG))])]
+   "!reg_overlap_mentioned_p (operands[2], operands[1])
+    && REGNO (operands[0]) == REGNO (operands[2])"
+   [(parallel [(set (match_dup 2) (const_int 0))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (strict_low_part (match_dup 0)) (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_peephole2
+   [(parallel [(set (match_operand:SI 0 "register_operand" "")
+ 		   (match_operand:SI 1 "nonimmediate_operand" ""))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0)
+ 		   (and:SI (match_dup 0) (const_int 255)))
+ 	      (clobber (reg:CC CC_REG))])]
+   "!reg_overlap_mentioned_p (operands[0], operands[1])
+    && !(GET_CODE (operands[1]) == MEM && !offsettable_memref_p (operands[1]))
+    && !(GET_CODE (operands[1]) == MEM && MEM_VOLATILE_P (operands[1]))"
+   [(parallel [(set (match_dup 0) (const_int 0))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (strict_low_part (match_dup 2)) (match_dup 3))
+ 	      (clobber (reg:CC CC_REG))])]
+   {
+     operands[2] = gen_lowpart (QImode, operands[0]);
+     operands[3] = gen_lowpart (QImode, operands[1]);
+   })
+ 
+ (define_peephole2
+   [(parallel [(set (match_operand 0 "register_operand" "")
+ 		   (match_operand 1 "nonimmediate_operand" ""))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_operand:SI 2 "register_operand" "")
+ 		   (and:SI (match_dup 2)
+ 			   (match_operand:SI 3 "const_int_qi_operand" "")))
+ 	      (clobber (reg:CC CC_REG))])]
+   "(GET_MODE (operands[0]) == QImode
+     || GET_MODE (operands[0]) == HImode
+     || GET_MODE (operands[0]) == SImode)
+    && GET_MODE (operands[0]) == GET_MODE (operands[1])
+    && REGNO (operands[0]) == REGNO (operands[2])
+    && !reg_overlap_mentioned_p (operands[2], operands[1])
+    && !(GET_MODE (operands[1]) != QImode
+ 	&& GET_CODE (operands[1]) == MEM
+ 	&& !offsettable_memref_p (operands[1]))
+    && !(GET_MODE (operands[1]) != QImode
+ 	&& GET_CODE (operands[1]) == MEM
+ 	&& MEM_VOLATILE_P (operands[1]))"
+   [(parallel [(set (match_dup 2) (const_int 0))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (strict_low_part (match_dup 4)) (match_dup 5))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 2) (and:SI (match_dup 2) (match_dup 6)))
+ 	      (clobber (reg:CC CC_REG))])]
+   {
+     operands[4] = gen_lowpart (QImode, operands[0]);
+     operands[5] = gen_lowpart (QImode, operands[1]);
+     operands[6] = GEN_INT (~0xff | INTVAL (operands[3]));
+   })
+ 
+ (define_peephole2
+   [(parallel [(set (match_operand:SI 0 "register_operand" "")
+ 		   (match_operand:SI 1 "register_operand" ""))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (match_dup 0) (and:SI (match_dup 0) (const_int 65280)))
+ 	      (clobber (reg:CC CC_REG))])]
+   "!reg_overlap_mentioned_p (operands[0], operands[1])"
+   [(parallel [(set (match_dup 0) (const_int 0))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (zero_extract:SI (match_dup 0) (const_int 8) (const_int 8))
+ 		   (lshiftrt:SI (match_dup 1) (const_int 8)))
+ 	      (clobber (reg:CC CC_REG))])])
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/mova.md gcc-11.1.0/gcc/config/h8300/mova.md
*** gcc-10.3.0/gcc/config/h8300/mova.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/h8300/mova.md	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ;; -*- buffer-read-only: t -*-
  ;; Generated automatically from genmova.sh
! ;; Copyright (C) 2004-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,6 ----
  ;; -*- buffer-read-only: t -*-
  ;; Generated automatically from genmova.sh
! ;; Copyright (C) 2004-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 24,31 ****
  		 (match_operand:QI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:QI 0 "register_operand" "=r,r")
--- 24,30 ----
  		 (match_operand:QI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:QI 0 "register_operand" "=r,r")
***************
*** 34,41 ****
  		 (match_operand:QI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:QI 0 "register_operand" "=r,r")
--- 33,39 ----
  		 (match_operand:QI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:QI 0 "register_operand" "=r,r")
***************
*** 44,51 ****
  		 (match_operand:QI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:QI 0 "register_operand" "=r,r")
--- 42,48 ----
  		 (match_operand:QI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:QI 0 "register_operand" "=r,r")
***************
*** 54,61 ****
  		 (match_operand:QI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
--- 51,57 ----
  		 (match_operand:QI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
***************
*** 63,70 ****
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/b.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
--- 59,65 ----
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/b.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
***************
*** 72,79 ****
  		  (const_int 2)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
--- 67,73 ----
  		  (const_int 2)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
***************
*** 82,89 ****
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
--- 76,82 ----
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
***************
*** 92,99 ****
  		(const_int 510)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
--- 85,91 ----
  		(const_int 510)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
***************
*** 103,110 ****
  		 (match_operand:HI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
--- 95,101 ----
  		 (match_operand:HI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
***************
*** 113,120 ****
  		(const_int 510)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
--- 104,110 ----
  		(const_int 510)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
***************
*** 124,131 ****
  		 (match_operand:HI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
--- 114,120 ----
  		 (match_operand:HI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
***************
*** 133,140 ****
  		  (const_int 1)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
--- 122,128 ----
  		  (const_int 1)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
***************
*** 143,150 ****
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
--- 131,137 ----
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
***************
*** 153,160 ****
  		(const_int 510)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
--- 140,146 ----
  		(const_int 510)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
***************
*** 164,171 ****
  		 (match_operand:HI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
--- 150,156 ----
  		 (match_operand:HI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
***************
*** 174,181 ****
  		(const_int 510)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
--- 159,165 ----
  		(const_int 510)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
***************
*** 185,192 ****
  		 (match_operand:HI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
--- 169,175 ----
  		 (match_operand:HI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
***************
*** 194,201 ****
  		  (const_int 4)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
--- 177,183 ----
  		  (const_int 4)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
***************
*** 204,211 ****
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
--- 186,192 ----
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
***************
*** 214,221 ****
  		(const_int 1020)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
--- 195,201 ----
  		(const_int 1020)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
***************
*** 225,232 ****
  		 (match_operand:HI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
--- 205,211 ----
  		 (match_operand:HI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
***************
*** 235,242 ****
  		(const_int 1020)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
--- 214,220 ----
  		(const_int 1020)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
***************
*** 246,253 ****
  		 (match_operand:HI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
--- 224,230 ----
  		 (match_operand:HI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
***************
*** 255,262 ****
  		  (const_int 2)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
--- 232,238 ----
  		  (const_int 2)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
***************
*** 265,272 ****
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
--- 241,247 ----
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
***************
*** 275,282 ****
  		(const_int 1020)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
--- 250,256 ----
  		(const_int 1020)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
***************
*** 286,293 ****
  		 (match_operand:HI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
--- 260,266 ----
  		 (match_operand:HI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
***************
*** 296,303 ****
  		(const_int 1020)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
--- 269,275 ----
  		(const_int 1020)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r")
***************
*** 307,314 ****
  		 (match_operand:HI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 279,285 ----
  		 (match_operand:HI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 316,323 ****
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/b.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 287,293 ----
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/b.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 325,332 ****
  		  (const_int 2)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 295,301 ----
  		  (const_int 2)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 335,342 ****
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 304,310 ----
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 345,352 ****
  		(const_int 510)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 313,319 ----
  		(const_int 510)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 356,363 ****
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 323,329 ----
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 366,373 ****
  		(const_int 510)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 332,338 ----
  		(const_int 510)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 377,384 ****
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 342,348 ----
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 386,393 ****
  		  (const_int 1)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 350,356 ----
  		  (const_int 1)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 396,403 ****
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 359,365 ----
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 406,413 ****
  		(const_int 510)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 368,374 ----
  		(const_int 510)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 417,424 ****
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 378,384 ----
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 427,434 ****
  		(const_int 510)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 387,393 ----
  		(const_int 510)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 438,445 ****
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 397,403 ----
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 447,454 ****
  		  (const_int 4)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 405,411 ----
  		  (const_int 4)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 457,464 ****
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 414,420 ----
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 467,474 ****
  		(const_int 1020)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 423,429 ----
  		(const_int 1020)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 478,485 ****
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 433,439 ----
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 488,495 ****
  		(const_int 1020)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 442,448 ----
  		(const_int 1020)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 499,506 ****
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 452,458 ----
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 508,515 ****
  		  (const_int 2)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 460,466 ----
  		  (const_int 2)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 518,525 ****
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 469,475 ----
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 528,535 ****
  		(const_int 1020)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 478,484 ----
  		(const_int 1020)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 539,546 ****
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 488,494 ----
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 549,556 ****
  		(const_int 1020)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 497,503 ----
  		(const_int 1020)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%X1.b),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 560,567 ****
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
--- 507,513 ----
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%X1.b),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
***************
*** 570,577 ****
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
--- 516,522 ----
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
***************
*** 580,587 ****
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
--- 525,531 ----
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
***************
*** 590,597 ****
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
--- 534,540 ----
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:HI 0 "register_operand" "=r,r")
***************
*** 600,607 ****
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 543,549 ----
  		 (match_operand:HI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 609,616 ****
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/b.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 551,557 ----
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/b.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 618,625 ****
  		  (const_int 2)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 559,565 ----
  		  (const_int 2)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 628,635 ****
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 568,574 ----
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 638,645 ****
  		(const_int 131070)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 577,583 ----
  		(const_int 131070)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 649,656 ****
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 587,593 ----
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 659,666 ****
  		(const_int 131070)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 596,602 ----
  		(const_int 131070)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 670,677 ****
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 606,612 ----
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 679,686 ****
  		  (const_int 1)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 614,620 ----
  		  (const_int 1)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 689,696 ****
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 623,629 ----
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 699,706 ****
  		(const_int 131070)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 632,638 ----
  		(const_int 131070)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 710,717 ****
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 642,648 ----
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 720,727 ****
  		(const_int 131070)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 651,657 ----
  		(const_int 131070)))]
    "TARGET_H8300SX"
    "mova/w.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 731,738 ****
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 661,667 ----
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/w.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 740,747 ****
  		  (const_int 4)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 669,675 ----
  		  (const_int 4)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 750,757 ****
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 678,684 ----
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 760,767 ****
  		(const_int 262140)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 687,693 ----
  		(const_int 262140)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 771,778 ****
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 697,703 ----
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 781,788 ****
  		(const_int 262140)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 706,712 ----
  		(const_int 262140)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 792,799 ****
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 716,722 ----
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 801,808 ****
  		  (const_int 2)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
--- 724,730 ----
  		  (const_int 2)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r")
***************
*** 811,818 ****
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 733,739 ----
  		 (match_operand:SI 2 "immediate_operand" "i,i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 821,828 ****
  		(const_int 262140)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 742,748 ----
  		(const_int 262140)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 832,839 ****
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 752,758 ----
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 842,849 ****
  		(const_int 262140)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")
!    (set_attr "cc" "none")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 761,767 ----
  		(const_int 262140)))]
    "TARGET_H8300SX"
    "mova/l.l @(0,%T1.w),%S0"
!   [(set_attr "length_table" "mova_zero")])
  
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 853,858 ****
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")
!    (set_attr "cc" "none")])
  
--- 771,775 ----
  		 (match_operand:SI 2 "immediate_operand" "i")))]
    "TARGET_H8300SX"
    "mova/l.l @(%o2%C2,%T1.w),%S0"
!   [(set_attr "length_table" "mova")])
  
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/movepush.md gcc-11.1.0/gcc/config/h8300/movepush.md
*** gcc-10.3.0/gcc/config/h8300/movepush.md	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/h8300/movepush.md	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,339 ----
+ ;; ----------------------------------------------------------------------
+ ;; MOVE INSTRUCTIONS
+ ;; ----------------------------------------------------------------------
+ 
+ ;; movqi
+ 
+ (define_insn_and_split "*movqi"
+   [(set (match_operand:QI 0 "general_operand_dst" "=r,r ,<,r,r,m")
+ 	(match_operand:QI 1 "general_operand_src" " I,r>,r,n,m,r"))]
+   "!TARGET_H8300SX && h8300_move_ok (operands[0], operands[1])"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*movqi_clobber_flags"
+   [(set (match_operand:QI 0 "general_operand_dst" "=r,r ,<,r,r,m")
+ 	(match_operand:QI 1 "general_operand_src" " I,r>,r,n,m,r"))
+    (clobber (reg:CC CC_REG))]
+   "!TARGET_H8300SX && h8300_move_ok (operands[0], operands[1])"
+   "@
+    sub.b	%X0,%X0
+    mov.b	%R1,%X0
+    mov.b	%X1,%R0
+    mov.b	%R1,%X0
+    mov.b	%R1,%X0
+    mov.b	%X1,%R0"
+   [(set (attr "length") (symbol_ref "compute_mov_length (operands)"))])
+ 
+ (define_insn_and_split "*movqi_h8sx"
+   [(set (match_operand:QI 0 "general_operand_dst" "=Z,rQ")
+ 	(match_operand:QI 1 "general_operand_src" "P4>X,rQi"))]
+   "TARGET_H8300SX"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*movqi_h8sx_clobber_flags"
+   [(set (match_operand:QI 0 "general_operand_dst" "=Z,rQ")
+ 	(match_operand:QI 1 "general_operand_src" "P4>X,rQi"))
+    (clobber (reg:CC CC_REG))]
+   "TARGET_H8300SX"
+   "@
+     mov.b	%X1:4,%X0
+     mov.b	%X1,%X0"
+   [(set_attr "length_table" "mov_imm4,movb")])
+ 
+ (define_expand "mov<mode>"
+   [(set (match_operand:QHSIF 0 "general_operand_dst" "")
+ 	(match_operand:QHSIF 1 "general_operand_src" ""))]
+   ""
+   {
+     enum machine_mode mode = <MODE>mode;
+     if (!TARGET_H8300SX)
+       {
+ 	/* Other H8 chips, except the H8/SX family can only handle a
+ 	   single memory operand, which is checked by h8300_move_ok.
+ 
+ 	   We could perhaps have h8300_move_ok handle the H8/SX better
+ 	   and just remove the !TARGET_H8300SX conditional.  */
+ 	if (!h8300_move_ok (operands[0], operands[1]))
+ 	  operands[1] = copy_to_mode_reg (mode, operand1);
+       }
+   })
+ 
+ (define_insn_and_split "movstrictqi"
+   [(set (strict_low_part (match_operand:QI 0 "general_operand_dst" "+r,r"))
+ 			 (match_operand:QI 1 "general_operand_src" "I,rmi>"))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (strict_low_part (match_dup 0)) (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ 
+ (define_insn "movstrictqi_clobber_flags"
+   [(set (strict_low_part (match_operand:QI 0 "general_operand_dst" "+r,r"))
+ 			 (match_operand:QI 1 "general_operand_src" "I,rmi>"))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "@
+    sub.b	%X0,%X0
+    mov.b	%X1,%X0"
+   [(set_attr "length" "2,*")
+    (set_attr "length_table" "*,movb")])
+ 
+ ;; movhi
+ 
+ (define_insn_and_split "*movhi"
+   [(set (match_operand:HI 0 "general_operand_dst" "=r,r,<,r,r,m")
+ 	(match_operand:HI 1 "general_operand_src" "I,r>,r,i,m,r"))]
+   "!TARGET_H8300SX
+     && h8300_move_ok (operands[0], operands[1])"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*movhi_clobber_flags"
+   [(set (match_operand:HI 0 "general_operand_dst" "=r,r,<,r,r,m")
+ 	(match_operand:HI 1 "general_operand_src" "I,r>,r,i,m,r"))
+    (clobber (reg:CC CC_REG))]
+   "!TARGET_H8300SX
+     && h8300_move_ok (operands[0], operands[1])"
+   "@
+    sub.w	%T0,%T0
+    mov.w	%T1,%T0
+    mov.w	%T1,%T0
+    mov.w	%T1,%T0
+    mov.w	%T1,%T0
+    mov.w	%T1,%T0"
+   [(set (attr "length") (symbol_ref "compute_mov_length (operands)"))])
+ 
+ (define_insn_and_split "*movhi_h8sx"
+   [(set (match_operand:HI 0 "general_operand_dst" "=r,r,Z,Q,rQ")
+ 	(match_operand:HI 1 "general_operand_src" "I,P3>X,P4>X,IP8>X,rQi"))]
+   "TARGET_H8300SX"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])])
+   
+ (define_insn "*movhi_h8sx_clobber_flags"
+   [(set (match_operand:HI 0 "general_operand_dst" "=r,r,Z,Q,rQ")
+ 	(match_operand:HI 1 "general_operand_src" "I,P3>X,P4>X,IP8>X,rQi"))
+    (clobber (reg:CC CC_REG))]
+   "TARGET_H8300SX"
+   "@
+    sub.w	%T0,%T0
+    mov.w	%T1:3,%T0
+    mov.w	%T1:4,%T0
+    mov.w	%T1,%T0
+    mov.w	%T1,%T0"
+   [(set_attr "length_table" "*,*,mov_imm4,short_immediate,movw")
+    (set_attr "length" "2,2,*,*,*")])
+ 
+ (define_insn_and_split "movstricthi"
+   [(set (strict_low_part (match_operand:HI 0 "general_operand_dst" "+r,r,r"))
+ 			 (match_operand:HI 1 "general_operand_src" "I,P3>X,rmi"))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (strict_low_part (match_dup 0)) (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "movstricthi_clobber_flags"
+   [(set (strict_low_part (match_operand:HI 0 "general_operand_dst" "+r,r,r"))
+ 			 (match_operand:HI 1 "general_operand_src" "I,P3>X,rmi"))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "@
+    sub.w	%T0,%T0
+    mov.w	%T1,%T0
+    mov.w	%T1,%T0"
+   [(set_attr "length" "2,2,*")
+    (set_attr "length_table" "*,*,movw")])
+ 
+ ;; movsi
+ (define_insn_and_split "*movsi"
+   [(set (match_operand:SI 0 "general_operand_dst" "=r,r,r,<,r,r,m,*a,*a,r")
+ 	(match_operand:SI 1 "general_operand_src" "I,r,i,r,>,m,r,I,r,*a"))]
+   "(TARGET_H8300S || TARGET_H8300H) && !TARGET_H8300SX
+     && h8300_move_ok (operands[0], operands[1])"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*movsi_clobber_flags"
+   [(set (match_operand:SI 0 "general_operand_dst" "=r,r,r,<,r,r,m,*a,*a,r")
+ 	(match_operand:SI 1 "general_operand_src" "I,r,i,r,>,m,r,I,r,*a"))
+    (clobber (reg:CC CC_REG))]
+   "(TARGET_H8300S || TARGET_H8300H) && !TARGET_H8300SX
+     && h8300_move_ok (operands[0], operands[1])"
+ {
+   switch (which_alternative)
+     {
+     case 0:
+       return "sub.l	%S0,%S0";
+     case 7:
+       return "clrmac";
+     case 8:
+       return "clrmac\;ldmac %1,macl";
+     case 9:
+       return "stmac	macl,%0";
+     default:
+       if (GET_CODE (operands[1]) == CONST_INT)
+ 	{
+ 	  int val = INTVAL (operands[1]);
+ 
+ 	  /* Look for constants which can be made by adding an 8-bit
+ 	     number to zero in one of the two low bytes.  */
+ 	  if (val == (val & 0xff))
+ 	    {
+ 	      operands[1] = GEN_INT ((char) val & 0xff);
+ 	      return "sub.l\\t%S0,%S0\;add.b\\t%1,%w0";
+ 	    }
+ 
+ 	  if (val == (val & 0xff00))
+ 	    {
+ 	      operands[1] = GEN_INT ((char) (val >> 8) & 0xff);
+ 	      return "sub.l\\t%S0,%S0\;add.b\\t%1,%x0";
+ 	    }
+ 
+ 	  /* Look for constants that can be obtained by subs, inc, and
+ 	     dec to 0.  */
+ 	  switch (val & 0xffffffff)
+ 	    {
+ 	    case 0xffffffff:
+ 	      return "sub.l\\t%S0,%S0\;subs\\t#1,%S0";
+ 	    case 0xfffffffe:
+ 	      return "sub.l\\t%S0,%S0\;subs\\t#2,%S0";
+ 	    case 0xfffffffc:
+ 	      return "sub.l\\t%S0,%S0\;subs\\t#4,%S0";
+ 
+ 	    case 0x0000ffff:
+ 	      return "sub.l\\t%S0,%S0\;dec.w\\t#1,%f0";
+ 	    case 0x0000fffe:
+ 	      return "sub.l\\t%S0,%S0\;dec.w\\t#2,%f0";
+ 
+ 	    case 0xffff0000:
+ 	      return "sub.l\\t%S0,%S0\;dec.w\\t#1,%e0";
+ 	    case 0xfffe0000:
+ 	      return "sub.l\\t%S0,%S0\;dec.w\\t#2,%e0";
+ 
+ 	    case 0x00010000:
+ 	      return "sub.l\\t%S0,%S0\;inc.w\\t#1,%e0";
+ 	    case 0x00020000:
+ 	      return "sub.l\\t%S0,%S0\;inc.w\\t#2,%e0";
+ 	    }
+ 	}
+     }
+    return "mov.l	%S1,%S0";
+ }
+   [(set (attr "length") (symbol_ref "compute_mov_length (operands)"))])
+ 
+ (define_insn_and_split "*movsi_h8sx"
+   [(set (match_operand:SI 0 "general_operand_dst" "=r,r,Q,rQ,*a,*a,r")
+ 	(match_operand:SI 1 "general_operand_src" "I,P3>X,IP8>X,rQi,I,r,*a"))]
+   "TARGET_H8300SX"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*movsi_h8sx_clobber_flags"
+   [(set (match_operand:SI 0 "general_operand_dst" "=r,r,Q,rQ,*a,*a,r")
+ 	(match_operand:SI 1 "general_operand_src" "I,P3>X,IP8>X,rQi,I,r,*a"))
+    (clobber (reg:CC CC_REG))]
+   "TARGET_H8300SX"
+   "@
+    sub.l	%S0,%S0
+    mov.l	%S1:3,%S0
+    mov.l	%S1,%S0
+    mov.l	%S1,%S0
+    clrmac
+    clrmac\;ldmac	%1,macl
+    stmac	macl,%0"
+   [(set_attr "length_table" "*,*,short_immediate,movl,*,*,*")
+    (set_attr "length" "2,2,*,*,2,6,4")])
+ 
+ (define_insn_and_split "*movsf_h8sx"
+   [(set (match_operand:SF 0 "general_operand_dst" "=r,rQ")
+ 	(match_operand:SF 1 "general_operand_src" "G,rQi"))]
+   "TARGET_H8300SX"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*movsf_h8sx_clobber_flags"
+   [(set (match_operand:SF 0 "general_operand_dst" "=r,rQ")
+ 	(match_operand:SF 1 "general_operand_src" "G,rQi"))
+    (clobber (reg:CC CC_REG))]
+   "TARGET_H8300SX"
+   "@
+     sub.l	%S0,%S0
+     mov.l	%S1,%S0"
+   [(set_attr "length" "2,*")
+    (set_attr "length_table" "*,movl")])
+ 
+ (define_insn_and_split "*movsf"
+   [(set (match_operand:SF 0 "general_operand_dst" "=r,r,r,m,<,r")
+ 	(match_operand:SF 1 "general_operand_src" "G,r,im,r,r,>"))]
+   "!TARGET_H8300SX
+     && (register_operand (operands[0], SFmode)
+ 	|| register_operand (operands[1], SFmode))"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*movsf_clobber_flags"
+   [(set (match_operand:SF 0 "general_operand_dst" "=r,r,r,m,<,r")
+ 	(match_operand:SF 1 "general_operand_src" "G,r,im,r,r,>"))
+    (clobber (reg:CC CC_REG))]
+   "!TARGET_H8300SX
+     && (register_operand (operands[0], SFmode)
+ 	|| register_operand (operands[1], SFmode))"
+   "@
+    sub.l	%S0,%S0
+    mov.l	%S1,%S0
+    mov.l	%S1,%S0
+    mov.l	%S1,%S0
+    mov.l	%S1,%S0
+    mov.l	%S1,%S0"
+   [(set (attr "length") (symbol_ref "compute_mov_length (operands)"))])
+ 
+ ;; ----------------------------------------------------------------------
+ ;; PUSH INSTRUCTIONS
+ ;; ----------------------------------------------------------------------
+ 
+ (define_insn_and_split "*push1_<QHI:mode>"
+   [(set (mem:QHI
+ 	(pre_modify:P
+ 	  (reg:P SP_REG)
+ 	  (plus:P (reg:P SP_REG) (const_int -4))))
+ 	(match_operand:QHI 0 "register_no_sp_elim_operand" "r"))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (mem:QHI
+ 		     (pre_modify:P (reg:P SP_REG)
+ 				   (plus:P (reg:P SP_REG) (const_int -4))))
+ 		   (match_dup 0))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*push1_<QHI:mode>_clobber_flags"
+   [(set (mem:QHI
+ 	(pre_modify:P
+ 	  (reg:P SP_REG)
+ 	  (plus:P (reg:P SP_REG) (const_int -4))))
+ 	(match_operand:QHI 0 "register_no_sp_elim_operand" "r"))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "mov.l\\t%S0,@-er7"
+   [(set_attr "length" "4")])
+ 
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/multiply.md gcc-11.1.0/gcc/config/h8300/multiply.md
*** gcc-10.3.0/gcc/config/h8300/multiply.md	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/h8300/multiply.md	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,261 ----
+ ;; ----------------------------------------------------------------------
+ ;; MULTIPLY INSTRUCTIONS
+ ;; ----------------------------------------------------------------------
+ 
+ ;; Note that the H8/300 can only handle umulqihi3.
+ 
+ (define_expand "mulqihi3"
+   [(set (match_operand:HI 0 "register_operand" "")
+ 	(mult:HI (sign_extend:HI (match_operand:QI 1 "register_operand" ""))
+ 		 ;; intentionally-mismatched modes
+ 		 (match_operand:QI 2 "reg_or_nibble_operand" "")))]
+   ""
+   {
+     if (GET_MODE (operands[2]) != VOIDmode)
+       operands[2] = gen_rtx_SIGN_EXTEND (HImode, operands[2]);
+   })
+ 
+ (define_insn_and_split "*mulqihi3_const"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(mult:HI (sign_extend:HI (match_operand:QI 1 "register_operand" "%0"))
+ 		 (match_operand:QI 2 "nibble_operand" "IP4>X")))]
+   "TARGET_H8300SX"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (mult:HI (sign_extend:HI (match_dup 1)) (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*mulqihi3_const_clobber_flags"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(mult:HI (sign_extend:HI (match_operand:QI 1 "register_operand" "%0"))
+ 		 (match_operand:QI 2 "nibble_operand" "IP4>X")))
+    (clobber (reg:CC CC_REG))]
+   "TARGET_H8300SX"
+   "mulxs.b	%X2,%T0"
+   [(set_attr "length" "4")])
+ 
+ (define_insn_and_split "*mulqihi3"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(mult:HI (sign_extend:HI (match_operand:QI 1 "register_operand" "%0"))
+ 		 (sign_extend:HI (match_operand:QI 2 "register_operand" "r"))))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (mult:HI (sign_extend:HI (match_dup 1))
+ 			    (sign_extend:HI (match_dup 2))))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*mulqihi3_clobber_flags"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(mult:HI (sign_extend:HI (match_operand:QI 1 "register_operand" "%0"))
+ 		 (sign_extend:HI (match_operand:QI 2 "register_operand" "r"))))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "mulxs.b	%X2,%T0"
+   [(set_attr "length" "4")])
+ 
+ (define_expand "mulhisi3"
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand" ""))
+ 		 ;; intentionally-mismatched modes
+ 		 (match_operand:HI 2 "reg_or_nibble_operand" "")))]
+   ""
+   {
+     if (GET_MODE (operands[2]) != VOIDmode)
+       operands[2] = gen_rtx_SIGN_EXTEND (SImode, operands[2]);
+   })
+ 
+ (define_insn_and_split "*mulhisi3_const"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand" "%0"))
+ 		 (match_operand:SI 2 "nibble_operand" "IP4>X")))]
+   "TARGET_H8300SX"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (mult:SI (sign_extend:SI (match_dup 1)) (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*mulhisi3_const_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand" "%0"))
+ 		 (match_operand:SI 2 "nibble_operand" "IP4>X")))
+    (clobber (reg:CC CC_REG))]
+   "TARGET_H8300SX"
+   "mulxs.w	%T2,%S0"
+   [(set_attr "length" "4")])
+ 
+ (define_insn_and_split "*mulhisi3"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand" "%0"))
+ 		 (sign_extend:SI (match_operand:HI 2 "register_operand" "r"))))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (mult:SI (sign_extend:SI (match_dup 1))
+ 			    (sign_extend:SI (match_dup 2))))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*mulhisi3_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand" "%0"))
+ 		 (sign_extend:SI (match_operand:HI 2 "register_operand" "r"))))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "mulxs.w	%T2,%S0"
+   [(set_attr "length" "4")])
+ 
+ (define_expand "umulqihi3"
+   [(set (match_operand:HI 0 "register_operand" "")
+ 	(mult:HI (zero_extend:HI (match_operand:QI 1 "register_operand" ""))
+ 		 ;; intentionally-mismatched modes
+ 		 (match_operand:QI 2 "reg_or_nibble_operand" "")))]
+   ""
+   {
+     if (GET_MODE (operands[2]) != VOIDmode)
+       operands[2] = gen_rtx_ZERO_EXTEND (HImode, operands[2]);
+   })
+ 
+ (define_insn "*umulqihi3_const"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(mult:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "%0"))
+ 		 (match_operand:QI 2 "nibble_operand" "IP4>X")))]
+   "TARGET_H8300SX"
+   "mulxu.b	%X2,%T0"
+   [(set_attr "length" "4")])
+ 
+ (define_insn "*umulqihi3"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(mult:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "%0"))
+ 		 (zero_extend:HI (match_operand:QI 2 "register_operand" "r"))))]
+   ""
+   "mulxu.b	%X2,%T0"
+   [(set_attr "length" "2")])
+ 
+ (define_expand "umulhisi3"
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(mult:SI (zero_extend:SI (match_operand:HI 1 "register_operand" ""))
+ 		 ;; intentionally-mismatched modes
+ 		 (match_operand:HI 2 "reg_or_nibble_operand" "")))]
+   ""
+   {
+     if (GET_MODE (operands[2]) != VOIDmode)
+       operands[2] = gen_rtx_ZERO_EXTEND (SImode, operands[2]);
+   })
+ 
+ (define_insn "*umulhisi3_const"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(mult:SI (zero_extend:SI (match_operand:HI 1 "register_operand" "%0"))
+ 		 (match_operand:SI 2 "nibble_operand" "IP4>X")))]
+   "TARGET_H8300SX"
+   "mulxu.w	%T2,%S0"
+   [(set_attr "length" "4")])
+ 
+ (define_insn "*umulhisi3"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(mult:SI (zero_extend:SI (match_operand:HI 1 "register_operand" "%0"))
+ 		 (zero_extend:SI (match_operand:HI 2 "register_operand" "r"))))]
+   ""
+   "mulxu.w	%T2,%S0"
+   [(set_attr "length" "2")])
+ 
+ ;; We could have used mulu.[wl] here, but mulu.[lw] is only available
+ ;; on a H8SX with a multiplier, whereas muls.w seems to be available
+ ;; on all H8SX variants.
+ 
+ (define_insn_and_split "mul<mode>3"
+   [(set (match_operand:HSI 0 "register_operand" "=r")
+         (mult:HSI (match_operand:HSI 1 "register_operand" "%0")
+ 		  (match_operand:HSI 2 "reg_or_nibble_operand" "r IP4>X")))]
+   "TARGET_H8300SX"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (mult:HSI (match_dup 1) (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "mul<mode>3_clobber_flags"
+   [(set (match_operand:HSI 0 "register_operand" "=r")
+         (mult:HSI (match_operand:HSI 1 "register_operand" "%0")
+ 		  (match_operand:HSI 2 "reg_or_nibble_operand" "r IP4>X")))
+    (clobber (reg:CC CC_REG))]
+   "TARGET_H8300SX"
+   { return <MODE>mode == HImode ? "muls.w\\t%T2,%T0" : "muls.l\\t%S2,%S0"; }
+   [(set_attr "length" "4")])
+ 
+ (define_insn_and_split "smulsi3_highpart"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(truncate:SI
+ 	 (lshiftrt:DI
+ 	  (mult:DI
+ 	   (sign_extend:DI (match_operand:SI 1 "register_operand" "%0"))
+ 	   (sign_extend:DI (match_operand:SI 2 "reg_or_nibble_operand" "r IP4>X")))
+ 	  (const_int 32))))]
+   "TARGET_H8300SXMUL"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (truncate:SI (lshiftrt:DI (mult:DI
+ 					       (sign_extend:DI (match_dup 1))
+ 					       (sign_extend:DI (match_dup 2)))
+ 					     (const_int 32))))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "smulsi3_highpart_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(truncate:SI
+ 	 (lshiftrt:DI
+ 	  (mult:DI
+ 	   (sign_extend:DI (match_operand:SI 1 "register_operand" "%0"))
+ 	   (sign_extend:DI (match_operand:SI 2 "reg_or_nibble_operand" "r IP4>X")))
+ 	  (const_int 32))))
+    (clobber (reg:CC CC_REG))]
+   "TARGET_H8300SXMUL"
+   "muls/u.l\\t%S2,%S0"
+   [(set_attr "length" "4")])
+ 
+ (define_insn "umulsi3_highpart"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(truncate:SI
+ 	  (ashiftrt:DI
+ 	    (mult:DI
+ 	      (zero_extend:DI (match_operand:SI 1 "register_operand" "%0"))
+ 	      (zero_extend:DI (match_operand:SI 2 "reg_or_nibble_operand" "r IP4>X")))
+ 	    (const_int 32))))]
+   "TARGET_H8300SX"
+   "mulu/u.l\\t%S2,%S0"
+   [(set_attr "length" "4")])
+ 
+ ;; This is a "bridge" instruction.  Combine can't cram enough insns
+ ;; together to crate a MAC instruction directly, but it can create
+ ;; this instruction, which then allows combine to create the real
+ ;; MAC insn.
+ ;;
+ ;; Unfortunately, if combine doesn't create a MAC instruction, this
+ ;; insn must generate reasonably correct code.  Egad.
+ 
+ (define_insn ""
+   [(set (match_operand:SI 0 "register_operand" "=a")
+ 	(mult:SI
+ 	  (sign_extend:SI
+ 	    (mem:HI (post_inc:SI (match_operand:SI 1 "register_operand" "r"))))
+ 	  (sign_extend:SI
+ 	    (mem:HI (post_inc:SI (match_operand:SI 2 "register_operand" "r"))))))]
+   "TARGET_MAC"
+   "clrmac\;mac	@%2+,@%1+"
+   [(set_attr "length" "6")])
+ 
+ (define_insn ""
+   [(set (match_operand:SI 0 "register_operand" "=a")
+ 	(plus:SI (mult:SI
+ 	  (sign_extend:SI (mem:HI
+ 	    (post_inc:SI (match_operand:SI 1 "register_operand" "r"))))
+ 	  (sign_extend:SI (mem:HI
+ 	    (post_inc:SI (match_operand:SI 2 "register_operand" "r")))))
+ 	      (match_operand:SI 3 "register_operand" "0")))]
+   "TARGET_MAC"
+   "mac	@%2+,@%1+"
+   [(set_attr "length" "4")])
+ 
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/other.md gcc-11.1.0/gcc/config/h8300/other.md
*** gcc-10.3.0/gcc/config/h8300/other.md	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/h8300/other.md	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,26 ----
+ ;; ----------------------------------------------------------------------
+ ;; ABSOLUTE VALUE INSTRUCTIONS
+ ;; ----------------------------------------------------------------------
+ 
+ (define_insn_and_split "abssf2"
+   [(set (match_operand:SF 0 "register_operand" "=r")
+ 	(abs:SF (match_operand:SF 1 "register_operand" "0")))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (abs:SF (match_dup 1)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "abssf2_clobber_flags"
+   [(set (match_operand:SF 0 "register_operand" "=r")
+ 	(abs:SF (match_operand:SF 1 "register_operand" "0")))
+    (clobber (reg:CC CC_REG))]
+   ""
+   "and.w\\t#32767,%e0"
+   [(set_attr "length" "4")])
+ 
+ (define_insn "nop"
+   [(const_int 0)]
+   ""
+   "nop"
+   [(set_attr "length" "2")])
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/peepholes.md gcc-11.1.0/gcc/config/h8300/peepholes.md
*** gcc-10.3.0/gcc/config/h8300/peepholes.md	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/h8300/peepholes.md	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,1423 ----
+ ;; -----------------------------------------------------------------
+ ;; PEEPHOLE PATTERNS
+ ;; -----------------------------------------------------------------
+ 
+ ;; Convert (A >> B) & C to (A & 255) >> B if C == 255 >> B.
+ 
+ (define_peephole2
+   [(parallel [(set (match_operand:HI 0 "register_operand" "")
+ 		   (lshiftrt:HI (match_dup 0)
+ 				(match_operand:HI 1 "const_int_operand" "")))
+ 	      (clobber (match_operand:HI 2 "" ""))])
+    (set (match_dup 0)
+ 	(and:HI (match_dup 0)
+ 		(match_operand:HI 3 "const_int_operand" "")))]
+   "INTVAL (operands[3]) == (255 >> INTVAL (operands[1]))"
+   [(set (match_dup 0)
+ 	(and:HI (match_dup 0)
+ 		(const_int 255)))
+    (parallel [(set (match_dup 0)
+ 		   (lshiftrt:HI (match_dup 0) (match_dup 1)))
+ 	      (clobber (match_dup 2))])]
+   "")
+ 
+ ;; Convert (A << B) & C to (A & 255) << B if C == 255 << B.
+ 
+ (define_peephole2
+   [(parallel [(set (match_operand:HI 0 "register_operand" "")
+ 		   (ashift:HI (match_dup 0)
+ 			      (match_operand:HI 1 "const_int_operand" "")))
+ 	      (clobber (match_operand:HI 2 "" ""))])
+    (set (match_dup 0)
+ 	(and:HI (match_dup 0)
+ 		(match_operand:HI 3 "const_int_operand" "")))]
+   "INTVAL (operands[3]) == (255 << INTVAL (operands[1]))"
+   [(set (match_dup 0)
+ 	(and:HI (match_dup 0)
+ 		(const_int 255)))
+    (parallel [(set (match_dup 0)
+ 		   (ashift:HI (match_dup 0) (match_dup 1)))
+ 	      (clobber (match_dup 2))])]
+   "")
+ 
+ ;; Convert (A >> B) & C to (A & 255) >> B if C == 255 >> B.
+ 
+ (define_peephole2
+   [(parallel [(set (match_operand:SI 0 "register_operand" "")
+ 		   (lshiftrt:SI (match_dup 0)
+ 				(match_operand:SI 1 "const_int_operand" "")))
+ 	      (clobber (match_operand:SI 2 "" ""))])
+    (set (match_dup 0)
+ 	(and:SI (match_dup 0)
+ 		(match_operand:SI 3 "const_int_operand" "")))]
+   "INTVAL (operands[3]) == (255 >> INTVAL (operands[1]))"
+   [(set (match_dup 0)
+ 	(and:SI (match_dup 0)
+ 		(const_int 255)))
+    (parallel [(set (match_dup 0)
+ 		   (lshiftrt:SI (match_dup 0) (match_dup 1)))
+ 	      (clobber (match_dup 2))])]
+   "")
+ 
+ ;; Convert (A << B) & C to (A & 255) << B if C == 255 << B.
+ 
+ (define_peephole2
+   [(parallel [(set (match_operand:SI 0 "register_operand" "")
+ 		   (ashift:SI (match_dup 0)
+ 			      (match_operand:SI 1 "const_int_operand" "")))
+ 	      (clobber (match_operand:SI 2 "" ""))])
+    (set (match_dup 0)
+ 	(and:SI (match_dup 0)
+ 		(match_operand:SI 3 "const_int_operand" "")))]
+   "INTVAL (operands[3]) == (255 << INTVAL (operands[1]))"
+   [(set (match_dup 0)
+ 	(and:SI (match_dup 0)
+ 		(const_int 255)))
+    (parallel [(set (match_dup 0)
+ 		   (ashift:SI (match_dup 0) (match_dup 1)))
+ 	      (clobber (match_dup 2))])]
+   "")
+ 
+ ;; Convert (A >> B) & C to (A & 65535) >> B if C == 65535 >> B.
+ 
+ (define_peephole2
+   [(parallel [(set (match_operand:SI 0 "register_operand" "")
+ 		   (lshiftrt:SI (match_dup 0)
+ 				(match_operand:SI 1 "const_int_operand" "")))
+ 	      (clobber (match_operand:SI 2 "" ""))])
+    (set (match_dup 0)
+ 	(and:SI (match_dup 0)
+ 		(match_operand:SI 3 "const_int_operand" "")))]
+   "INTVAL (operands[3]) == (65535 >> INTVAL (operands[1]))"
+   [(set (match_dup 0)
+ 	(and:SI (match_dup 0)
+ 		(const_int 65535)))
+    (parallel [(set (match_dup 0)
+ 		   (lshiftrt:SI (match_dup 0) (match_dup 1)))
+ 	      (clobber (match_dup 2))])]
+   "")
+ 
+ ;; Convert (A << B) & C to (A & 65535) << B if C == 65535 << B.
+ 
+ (define_peephole2
+   [(parallel [(set (match_operand:SI 0 "register_operand" "")
+ 		   (ashift:SI (match_dup 0)
+ 			      (match_operand:SI 1 "const_int_operand" "")))
+ 	      (clobber (match_operand:SI 2 "" ""))])
+    (set (match_dup 0)
+ 	(and:SI (match_dup 0)
+ 		(match_operand:SI 3 "const_int_operand" "")))]
+   "INTVAL (operands[3]) == (65535 << INTVAL (operands[1]))"
+   [(set (match_dup 0)
+ 	(and:SI (match_dup 0)
+ 		(const_int 65535)))
+    (parallel [(set (match_dup 0)
+ 		   (ashift:SI (match_dup 0) (match_dup 1)))
+ 	      (clobber (match_dup 2))])]
+   "")
+ 
+ ;; Cram four pushes into stm.l.
+ 
+ (define_peephole2
+   [(set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
+ 	(match_operand:SI 0 "register_operand" ""))
+    (set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
+ 	(match_operand:SI 1 "register_operand" ""))
+    (set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
+ 	(match_operand:SI 2 "register_operand" ""))
+    (set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
+ 	(match_operand:SI 3 "register_operand" ""))]
+   "TARGET_H8300S && !TARGET_NORMAL_MODE
+    && (REGNO_REG_CLASS (REGNO (operands[3])) == GENERAL_REGS
+        && REGNO (operands[1]) == REGNO (operands[0]) + 1
+        && REGNO (operands[2]) == REGNO (operands[0]) + 2
+        && REGNO (operands[3]) == REGNO (operands[0]) + 3
+        && (TARGET_H8300SX || REGNO (operands[0]) == 0))"
+   [(parallel [(set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -4)))
+ 		   (match_dup 0))
+ 	      (set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -8)))
+ 		   (match_dup 1))
+ 	      (set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -12)))
+ 		   (match_dup 2))
+ 	      (set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -16)))
+ 		   (match_dup 3))
+ 	      (set (reg:SI SP_REG)
+ 		   (plus:SI (reg:SI SP_REG)
+ 			    (const_int -16)))])]
+   "")
+ 
+ (define_peephole2
+   [(set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
+ 	(match_operand:SI 0 "register_operand" ""))
+    (set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
+ 	(match_operand:SI 1 "register_operand" ""))
+    (set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
+ 	(match_operand:SI 2 "register_operand" ""))
+    (set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
+ 	(match_operand:SI 3 "register_operand" ""))]
+   "TARGET_H8300S && TARGET_NORMAL_MODE
+    && (REGNO_REG_CLASS (REGNO (operands[3])) == GENERAL_REGS
+        && REGNO (operands[1]) == REGNO (operands[0]) + 1
+        && REGNO (operands[2]) == REGNO (operands[0]) + 2
+        && REGNO (operands[3]) == REGNO (operands[0]) + 3
+        && (TARGET_H8300SX || REGNO (operands[0]) == 0))"
+   [(parallel [(set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -4)))
+ 		   (match_dup 0))
+ 	      (set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -8)))
+ 		   (match_dup 1))
+ 	      (set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -12)))
+ 		   (match_dup 2))
+ 	      (set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -16)))
+ 		   (match_dup 3))
+ 	      (set (reg:HI SP_REG)
+ 		   (plus:HI (reg:HI SP_REG)
+ 			    (const_int -16)))])]
+   "")
+ 
+ ;; Cram three pushes into stm.l.
+ 
+ (define_peephole2
+   [(set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
+ 	(match_operand:SI 0 "register_operand" ""))
+    (set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
+ 	(match_operand:SI 1 "register_operand" ""))
+    (set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
+ 	(match_operand:SI 2 "register_operand" ""))]
+   "TARGET_H8300S && !TARGET_NORMAL_MODE
+    && (REGNO_REG_CLASS (REGNO (operands[2])) == GENERAL_REGS
+        && REGNO (operands[1]) == REGNO (operands[0]) + 1
+        && REGNO (operands[2]) == REGNO (operands[0]) + 2
+        && (TARGET_H8300SX || (REGNO (operands[0]) & 3) == 0))"
+   [(parallel [(set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -4)))
+ 		   (match_dup 0))
+ 	      (set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -8)))
+ 		   (match_dup 1))
+ 	      (set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -12)))
+ 		   (match_dup 2))
+ 	      (set (reg:SI SP_REG)
+ 		   (plus:SI (reg:SI SP_REG)
+ 			    (const_int -12)))])]
+   "")
+ 
+ (define_peephole2
+   [(set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
+ 	(match_operand:SI 0 "register_operand" ""))
+    (set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
+ 	(match_operand:SI 1 "register_operand" ""))
+    (set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
+ 	(match_operand:SI 2 "register_operand" ""))]
+   "TARGET_H8300S && TARGET_NORMAL_MODE
+    && (REGNO_REG_CLASS (REGNO (operands[2])) == GENERAL_REGS
+        && REGNO (operands[1]) == REGNO (operands[0]) + 1
+        && REGNO (operands[2]) == REGNO (operands[0]) + 2
+        && (TARGET_H8300SX || (REGNO (operands[0]) & 3) == 0))"
+   [(parallel [(set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -4)))
+ 		   (match_dup 0))
+ 	      (set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -8)))
+ 		   (match_dup 1))
+ 	      (set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -12)))
+ 		   (match_dup 2))
+ 	      (set (reg:HI SP_REG)
+ 		   (plus:HI (reg:HI SP_REG)
+ 			    (const_int -12)))])]
+   "")
+ 
+ ;; Cram two pushes into stm.l.
+ 
+ (define_peephole2
+   [(set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
+ 	(match_operand:SI 0 "register_operand" ""))
+    (set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
+ 	(match_operand:SI 1 "register_operand" ""))]
+   "TARGET_H8300S && !TARGET_NORMAL_MODE
+    && (REGNO_REG_CLASS (REGNO (operands[1])) == GENERAL_REGS
+        && REGNO (operands[1]) == REGNO (operands[0]) + 1
+        && (TARGET_H8300SX || (REGNO (operands[0]) & 1) == 0))"
+   [(parallel [(set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -4)))
+ 		   (match_dup 0))
+ 	      (set (mem:SI (plus:SI (reg:SI SP_REG) (const_int -8)))
+ 		   (match_dup 1))
+ 	      (set (reg:SI SP_REG)
+ 		   (plus:SI (reg:SI SP_REG)
+ 			    (const_int -8)))])]
+   "")
+ 
+ (define_peephole2
+   [(set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
+ 	(match_operand:SI 0 "register_operand" ""))
+    (set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
+ 	(match_operand:SI 1 "register_operand" ""))]
+   "TARGET_H8300S && TARGET_NORMAL_MODE
+    && (REGNO_REG_CLASS (REGNO (operands[1])) == GENERAL_REGS
+        && REGNO (operands[1]) == REGNO (operands[0]) + 1
+        && (TARGET_H8300SX || (REGNO (operands[0]) & 1) == 0))"
+   [(parallel [(set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -4)))
+ 		   (match_dup 0))
+ 	      (set (mem:SI (plus:HI (reg:HI SP_REG) (const_int -8)))
+ 		   (match_dup 1))
+ 	      (set (reg:HI SP_REG)
+ 		   (plus:HI (reg:HI SP_REG)
+ 			    (const_int -8)))])]
+   "")
+ 
+ ;; Turn
+ ;;
+ ;;   mov.w #2,r0
+ ;;   add.w r7,r0  (6 bytes)
+ ;;
+ ;; into
+ ;;
+ ;;   mov.w r7,r0
+ ;;   adds  #2,r0  (4 bytes)
+ 
+ (define_peephole2
+   [(set (match_operand:HI 0 "register_operand" "")
+ 	(match_operand:HI 1 "const_int_operand" ""))
+    (set (match_dup 0)
+ 	(plus:HI (match_dup 0)
+ 		 (match_operand:HI 2 "register_operand" "")))]
+   "REG_P (operands[0]) && REG_P (operands[2])
+    && REGNO (operands[0]) != REGNO (operands[2])
+    && (satisfies_constraint_J (operands[1])
+        || satisfies_constraint_L (operands[1])
+        || satisfies_constraint_N (operands[1]))"
+   [(set (match_dup 0)
+ 	(match_dup 2))
+    (set (match_dup 0)
+ 	(plus:HI (match_dup 0)
+ 		 (match_dup 1)))]
+   "")
+ 
+ ;; Turn
+ ;;
+ ;;   sub.l  er0,er0
+ ;;   add.b  #4,r0l
+ ;;   add.l  er7,er0  (6 bytes)
+ ;;
+ ;; into
+ ;;
+ ;;   mov.l  er7,er0
+ ;;   adds   #4,er0   (4 bytes)
+ 
+ (define_peephole2
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(match_operand:SI 1 "const_int_operand" ""))
+    (set (match_dup 0)
+ 	(plus:SI (match_dup 0)
+ 		 (match_operand:SI 2 "register_operand" "")))]
+   "REG_P (operands[0]) && REG_P (operands[2])
+    && REGNO (operands[0]) != REGNO (operands[2])
+    && (satisfies_constraint_L (operands[1])
+        || satisfies_constraint_N (operands[1]))"
+   [(set (match_dup 0)
+ 	(match_dup 2))
+    (set (match_dup 0)
+ 	(plus:SI (match_dup 0)
+ 		 (match_dup 1)))]
+   "")
+ 
+ ;; Turn
+ ;;
+ ;;   mov.l er7,er0
+ ;;   add.l #10,er0  (takes 8 bytes)
+ ;;
+ ;; into
+ ;;
+ ;;   sub.l er0,er0
+ ;;   add.b #10,r0l
+ ;;   add.l er7,er0  (takes 6 bytes)
+ 
+ (define_peephole2
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(match_operand:SI 1 "register_operand" ""))
+    (set (match_dup 0)
+ 	(plus:SI (match_dup 0)
+ 		 (match_operand:SI 2 "const_int_operand" "")))]
+   "operands[0] != stack_pointer_rtx
+    && REG_P (operands[0]) && REG_P (operands[1])
+    && REGNO (operands[0]) != REGNO (operands[1])
+    && !satisfies_constraint_L (operands[2])
+    && !satisfies_constraint_N (operands[2])
+    && ((INTVAL (operands[2]) & 0xff) == INTVAL (operands[2])
+        || (INTVAL (operands[2]) & 0xff00) == INTVAL (operands[2])
+        || INTVAL (operands[2]) == 0xffff
+        || INTVAL (operands[2]) == 0xfffe)"
+   [(set (match_dup 0)
+ 	(match_dup 2))
+    (set (match_dup 0)
+ 	(plus:SI (match_dup 0)
+ 		 (match_dup 1)))]
+   "")
+ 
+ ;; Turn
+ ;;
+ ;;   subs   #1,er4
+ ;;   mov.w  r4,r4
+ ;;   bne    .L2028
+ ;;
+ ;; into
+ ;;
+ ;;   dec.w  #1,r4
+ ;;   bne    .L2028
+ 
+ (define_peephole2
+   [(set (match_operand:HI 0 "register_operand" "")
+ 	(plus:HI (match_dup 0)
+ 		 (match_operand 1 "incdec_operand" "")))
+    (set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "eqne_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   ""
+   [(set (match_operand:HI 0 "register_operand" "")
+ 	(unspec:HI [(match_dup 0)
+ 		    (match_dup 1)]
+ 		   UNSPEC_INCDEC))
+    (set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_op_dup 4 [(cc0) (const_int 0)])
+ 		      (match_dup 2)
+ 		      (match_dup 3)))])
+ 
+ ;; The SImode version of the previous pattern.
+ 
+ (define_peephole2
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(plus:SI (match_dup 0)
+ 		 (match_operand 1 "incdec_operand" "")))
+    (set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "eqne_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   ""
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(unspec:SI [(match_dup 0)
+ 		    (match_dup 1)]
+ 		   UNSPEC_INCDEC))
+    (set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_op_dup 4 [(cc0) (const_int 0)])
+ 		      (match_dup 2)
+ 		      (match_dup 3)))])
+ 
+ (define_peephole2
+   [(parallel [(set (cc0)
+ 		   (compare (zero_extract:SI (match_operand:QI 0 "register_operand" "")
+ 					     (const_int 1)
+ 					     (const_int 7))
+ 			    (const_int 0)))
+ 	      (clobber (scratch:QI))])
+    (set (pc)
+ 	(if_then_else (match_operator 4 "eqne_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   ""
+   [(set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_op_dup 4 [(cc0) (const_int 0)])
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     operands[4] = ((GET_CODE (operands[4]) == EQ)
+ 		   ? gen_rtx_GE (VOIDmode, cc0_rtx, const0_rtx)
+ 		   : gen_rtx_LT (VOIDmode, cc0_rtx, const0_rtx));
+   })
+ 
+ ;; If a load of mem:SI is followed by an AND that turns off the upper
+ ;; half, then we can load mem:HI instead.
+ 
+ (define_peephole2
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(match_operand:SI 1 "memory_operand" ""))
+    (set (match_dup 0)
+ 	(and:SI (match_dup 0)
+ 		(match_operand:SI 2 "const_int_operand" "")))]
+   "!MEM_VOLATILE_P (operands[1])
+    && offsettable_memref_p (operands[1])
+    && (INTVAL (operands[2]) & ~0xffff) == 0
+    && INTVAL (operands[2]) != 255"
+   [(set (match_dup 3)
+ 	(match_dup 4))
+    (set (match_dup 0)
+ 	(and:SI (match_dup 0)
+ 		(match_dup 2)))]
+   {
+     operands[3] = gen_lowpart (HImode, operands[0]);
+     operands[4] = gen_lowpart (HImode, operands[1]);
+   })
+ 
+ ;; (compare (reg:HI) (const_int)) takes 4 bytes, so we try to achieve
+ ;; the equivalent with shorter sequences.  Here is the summary.  Cases
+ ;; are grouped for each define_peephole2.
+ ;;
+ ;; reg  const_int                   use     insn
+ ;; --------------------------------------------------------
+ ;; dead    -2                       eq/ne   inc.l
+ ;; dead    -1                       eq/ne   inc.l
+ ;; dead     1                       eq/ne   dec.l
+ ;; dead     2                       eq/ne   dec.l
+ ;;
+ ;; dead     1                       ge/lt shar.l
+ ;; dead     3 (H8S)                 ge/lt shar.l
+ ;;
+ ;; dead     1                       geu/ltu shar.l
+ ;; dead     3 (H8S)                 geu/ltu shar.l
+ ;;
+ ;; ----   255                       ge/lt mov.b
+ ;;
+ ;; ----   255                       geu/ltu mov.b
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.w	#1,r0
+ ;;	bne	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	dec.w	#1,r0
+ ;;	bne	.L1
+ 
+ (define_peephole2
+   [(set (cc0)
+ 	(compare (match_operand:HI 0 "register_operand" "")
+ 		 (match_operand:HI 1 "incdec_operand" "")))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "eqne_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   "INTVAL (operands[1]) != 0 && peep2_reg_dead_p (1, operands[0])"
+   [(set (match_dup 0)
+ 	(unspec:HI [(match_dup 0)
+ 		    (match_dup 5)]
+ 		   UNSPEC_INCDEC))
+    (set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_op_dup 4 [(cc0) (const_int 0)])
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     operands[5] = GEN_INT (- INTVAL (operands[1]));
+   })
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.w	#1,r0
+ ;;	bgt	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	shar.w	r0
+ ;;	bgt	.L1
+ 
+ (define_peephole2
+   [(set (cc0)
+ 	(compare (match_operand:HI 0 "register_operand" "")
+ 		 (match_operand:HI 1 "const_int_operand" "")))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "gtle_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   "peep2_reg_dead_p (1, operands[0])
+    && (INTVAL (operands[1]) == 1
+        || (TARGET_H8300S && INTVAL (operands[1]) == 3))"
+   [(parallel [(set (match_dup 0)
+ 		   (ashiftrt:HI (match_dup 0)
+ 				(match_dup 5)))
+ 	      (clobber (scratch:QI))])
+    (set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_dup 4)
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     operands[5] = GEN_INT (exact_log2 (INTVAL (operands[1]) + 1));
+   })
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.w	#1,r0
+ ;;	bhi	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	shar.w	r0
+ ;;	bne	.L1
+ 
+ (define_peephole2
+   [(set (cc0)
+ 	(compare (match_operand:HI 0 "register_operand" "")
+ 		 (match_operand:HI 1 "const_int_operand" "")))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "gtuleu_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   "peep2_reg_dead_p (1, operands[0])
+    && (INTVAL (operands[1]) == 1
+        || (TARGET_H8300S && INTVAL (operands[1]) == 3))"
+   [(parallel [(set (match_dup 0)
+ 		   (ashiftrt:HI (match_dup 0)
+ 				(match_dup 5)))
+ 	      (clobber (scratch:QI))])
+    (set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_dup 6)
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     operands[5] = GEN_INT (exact_log2 (INTVAL (operands[1]) + 1));
+     operands[6] = gen_rtx_fmt_ee (GET_CODE (operands[4]) == GTU ? NE : EQ,
+ 				  VOIDmode, cc0_rtx, const0_rtx);
+   })
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.w	#255,r0
+ ;;	bgt	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	mov.b	r0h,r0h
+ ;;	bgt	.L1
+ 
+ (define_peephole2
+   [(set (cc0)
+ 	(compare (match_operand:HI 0 "register_operand" "")
+ 		 (const_int 255)))
+    (set (pc)
+ 	(if_then_else (match_operator 1 "gtle_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   ""
+   [(set (cc0) (compare (and:HI (match_dup 0)
+ 			       (const_int -256))
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_dup 1)
+ 		      (match_dup 2)
+ 		      (match_dup 3)))])
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.w	#255,r0
+ ;;	bhi	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	mov.b	r0h,r0h
+ ;;	bne	.L1
+ 
+ (define_peephole2
+   [(set (cc0)
+ 	(compare (match_operand:HI 0 "register_operand" "")
+ 		 (const_int 255)))
+    (set (pc)
+ 	(if_then_else (match_operator 1 "gtuleu_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   ""
+   [(set (cc0) (compare (and:HI (match_dup 0)
+ 			       (const_int -256))
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_dup 4)
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     operands[4] = gen_rtx_fmt_ee (GET_CODE (operands[1]) == GTU ? NE : EQ,
+ 				  VOIDmode, cc0_rtx, const0_rtx);
+   })
+ 
+ ;; (compare (reg:SI) (const_int)) takes 6 bytes, so we try to achieve
+ ;; the equivalent with shorter sequences.  Here is the summary.  Cases
+ ;; are grouped for each define_peephole2.
+ ;;
+ ;; reg  const_int                   use     insn
+ ;; --------------------------------------------------------
+ ;; live    -2                       eq/ne   copy and inc.l
+ ;; live    -1                       eq/ne   copy and inc.l
+ ;; live     1                       eq/ne   copy and dec.l
+ ;; live     2                       eq/ne   copy and dec.l
+ ;;
+ ;; dead    -2                       eq/ne   inc.l
+ ;; dead    -1                       eq/ne   inc.l
+ ;; dead     1                       eq/ne   dec.l
+ ;; dead     2                       eq/ne   dec.l
+ ;;
+ ;; dead -131072                     eq/ne   inc.w and test
+ ;; dead  -65536                     eq/ne   inc.w and test
+ ;; dead   65536                     eq/ne   dec.w and test
+ ;; dead  131072                     eq/ne   dec.w and test
+ ;;
+ ;; dead 0x000000?? except 1 and 2   eq/ne   xor.b and test
+ ;; dead 0x0000??00                  eq/ne   xor.b and test
+ ;; dead 0x0000ffff                  eq/ne   not.w and test
+ ;;
+ ;; dead 0xffffff?? except -1 and -2 eq/ne   xor.b and not.l
+ ;; dead 0xffff??ff                  eq/ne   xor.b and not.l
+ ;; dead 0x40000000 (H8S)            eq/ne   rotl.l and dec.l
+ ;; dead 0x80000000                  eq/ne   rotl.l and dec.l
+ ;;
+ ;; live     1                       ge/lt copy and shar.l
+ ;; live     3 (H8S)                 ge/lt copy and shar.l
+ ;;
+ ;; live     1                       geu/ltu copy and shar.l
+ ;; live     3 (H8S)                 geu/ltu copy and shar.l
+ ;;
+ ;; dead     1                       ge/lt shar.l
+ ;; dead     3 (H8S)                 ge/lt shar.l
+ ;;
+ ;; dead     1                       geu/ltu shar.l
+ ;; dead     3 (H8S)                 geu/ltu shar.l
+ ;;
+ ;; dead     3 (H8/300H)             ge/lt and.b and test
+ ;; dead     7                       ge/lt and.b and test
+ ;; dead    15                       ge/lt and.b and test
+ ;; dead    31                       ge/lt and.b and test
+ ;; dead    63                       ge/lt and.b and test
+ ;; dead   127                       ge/lt and.b and test
+ ;; dead   255                       ge/lt and.b and test
+ ;;
+ ;; dead     3 (H8/300H)             geu/ltu and.b and test
+ ;; dead     7                       geu/ltu and.b and test
+ ;; dead    15                       geu/ltu and.b and test
+ ;; dead    31                       geu/ltu and.b and test
+ ;; dead    63                       geu/ltu and.b and test
+ ;; dead   127                       geu/ltu and.b and test
+ ;; dead   255                       geu/ltu and.b and test
+ ;;
+ ;; ---- 65535                       ge/lt mov.w
+ ;;
+ ;; ---- 65535                       geu/ltu mov.w
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.l	#1,er0
+ ;;	beq	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	dec.l	#1,er0
+ ;;	beq	.L1
+ 
+ (define_peephole2
+   [(set (cc0)
+ 	(compare (match_operand:SI 0 "register_operand" "")
+ 		 (match_operand:SI 1 "incdec_operand" "")))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "eqne_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   "INTVAL (operands[1]) != 0 && peep2_reg_dead_p (1, operands[0])"
+   [(set (match_dup 0)
+ 	(unspec:SI [(match_dup 0)
+ 		    (match_dup 5)]
+ 		   UNSPEC_INCDEC))
+    (set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_op_dup 4 [(cc0) (const_int 0)])
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     operands[5] = GEN_INT (- INTVAL (operands[1]));
+   })
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.l	#65536,er0
+ ;;	beq	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	dec.l	#1,e0
+ ;;	beq	.L1
+ 
+ (define_peephole2
+   [(set (cc0)
+ 	(compare (match_operand:SI 0 "register_operand" "")
+ 		 (match_operand:SI 1 "const_int_operand" "")))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "eqne_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   "peep2_reg_dead_p (1, operands[0])
+    && (INTVAL (operands[1]) == -131072
+        || INTVAL (operands[1]) == -65536
+        || INTVAL (operands[1]) == 65536
+        || INTVAL (operands[1]) == 131072)"
+   [(set (match_dup 0)
+ 	(plus:SI (match_dup 0)
+ 		 (match_dup 5)))
+    (set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_op_dup 4 [(cc0) (const_int 0)])
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     operands[5] = GEN_INT (- INTVAL (operands[1]));
+   })
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.l	#100,er0
+ ;;	beq	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	xor.b	#100,er0
+ ;;	mov.l	er0,er0
+ ;;	beq	.L1
+ 
+ (define_peephole2
+   [(set (cc0)
+ 	(compare (match_operand:SI 0 "register_operand" "")
+ 		 (match_operand:SI 1 "const_int_operand" "")))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "eqne_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   "peep2_reg_dead_p (1, operands[0])
+    && ((INTVAL (operands[1]) & 0x00ff) == INTVAL (operands[1])
+        || (INTVAL (operands[1]) & 0xff00) == INTVAL (operands[1])
+        || INTVAL (operands[1]) == 0x0000ffff)
+    && INTVAL (operands[1]) != 0
+    && INTVAL (operands[1]) != 1
+    && INTVAL (operands[1]) != 2"
+   [(set (match_dup 0)
+ 	(xor:SI (match_dup 0)
+ 		(match_dup 1)))
+    (set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_op_dup 4 [(cc0) (const_int 0)])
+ 		      (match_dup 2)
+ 		      (match_dup 3)))])
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.l	#-100,er0
+ ;;	beq	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	xor.b	#99,er0
+ ;;	not.l	er0
+ ;;	beq	.L1
+ 
+ (define_peephole2
+   [(set (cc0)
+ 	(compare (match_operand:SI 0 "register_operand" "")
+ 		 (match_operand:SI 1 "const_int_operand" "")))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "eqne_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   "peep2_reg_dead_p (1, operands[0])
+    && ((INTVAL (operands[1]) | 0x00ff) == -1
+        || (INTVAL (operands[1]) | 0xff00) == -1)
+    && INTVAL (operands[1]) != -1
+    && INTVAL (operands[1]) != -2"
+   [(set (match_dup 0)
+ 	(xor:SI (match_dup 0)
+ 		(match_dup 5)))
+    (set (match_dup 0)
+ 	(not:SI (match_dup 0)))
+    (set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_op_dup 4 [(cc0) (const_int 0)])
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     operands[5] = GEN_INT (INTVAL (operands[1]) ^ -1);
+   })
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.l	#-2147483648,er0
+ ;;	beq	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	rotl.l	er0
+ ;;	dec.l	#1,er0
+ ;;	beq	.L1
+ 
+ (define_peephole2
+   [(set (cc0)
+ 	(compare (match_operand:SI 0 "register_operand" "")
+ 		 (match_operand:SI 1 "const_int_operand" "")))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "eqne_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   "peep2_reg_dead_p (1, operands[0])
+    && (INTVAL (operands[1]) == -2147483647 - 1
+        || (TARGET_H8300S && INTVAL (operands[1]) == 1073741824))"
+   [(set (match_dup 0)
+ 	(rotate:SI (match_dup 0)
+ 		   (match_dup 5)))
+    (set (match_dup 0)
+ 	(unspec:SI [(match_dup 0)
+ 		    (const_int -1)]
+ 		   UNSPEC_INCDEC))
+    (set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_op_dup 4 [(cc0) (const_int 0)])
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     operands[5] = GEN_INT (INTVAL (operands[1]) == -2147483647 - 1 ? 1 : 2);
+   })
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.l	#1,er0
+ ;;	bgt	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	mov.l	er0,er1
+ ;;	shar.l	er1
+ ;;	bgt	.L1
+ 
+ ;; We avoid this transformation if we see more than one copy of the
+ ;; same compare insn immediately before this one.
+ 
+ (define_peephole2
+   [(match_scratch:SI 5 "r")
+    (set (cc0)
+ 	(compare (match_operand:SI 0 "register_operand" "")
+ 		 (match_operand:SI 1 "const_int_operand" "")))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "gtle_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   "!peep2_reg_dead_p (1, operands[0])
+    && (INTVAL (operands[1]) == 1
+        || (TARGET_H8300S && INTVAL (operands[1]) == 3))
+    && !same_cmp_preceding_p (insn)"
+   [(set (match_dup 5)
+ 	(match_dup 0))
+    (parallel [(set (match_dup 5)
+ 		   (ashiftrt:SI (match_dup 5)
+ 				(match_dup 6)))
+ 	      (clobber (scratch:QI))])
+    (set (cc0) (compare (match_dup 5)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_dup 4)
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     operands[6] = GEN_INT (exact_log2 (INTVAL (operands[1]) + 1));
+   })
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.l	#1,er0
+ ;;	bhi	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	mov.l	er0,er1
+ ;;	shar.l	er1
+ ;;	bne	.L1
+ 
+ ;; We avoid this transformation if we see more than one copy of the
+ ;; same compare insn immediately before this one.
+ 
+ (define_peephole2
+   [(match_scratch:SI 5 "r")
+    (set (cc0)
+ 	(compare (match_operand:SI 0 "register_operand" "")
+ 		 (match_operand:SI 1 "const_int_operand" "")))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "gtuleu_operator"
+ 		         [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   "!peep2_reg_dead_p (1, operands[0])
+    && (INTVAL (operands[1]) == 1
+        || (TARGET_H8300S && INTVAL (operands[1]) == 3))
+    && !same_cmp_preceding_p (insn)"
+   [(set (match_dup 5)
+ 	(match_dup 0))
+    (parallel [(set (match_dup 5)
+ 		   (ashiftrt:SI (match_dup 5)
+ 				(match_dup 6)))
+ 	      (clobber (scratch:QI))])
+    (set (cc0) (compare (match_dup 5)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_dup 7)
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     operands[6] = GEN_INT (exact_log2 (INTVAL (operands[1]) + 1));
+     operands[7] = gen_rtx_fmt_ee (GET_CODE (operands[4]) == GTU ? NE : EQ,
+ 				  VOIDmode, cc0_rtx, const0_rtx);
+   })
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.l	#1,er0
+ ;;	bgt	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	shar.l	er0
+ ;;	bgt	.L1
+ 
+ (define_peephole2
+   [(set (cc0)
+ 	(compare (match_operand:SI 0 "register_operand" "")
+ 		 (match_operand:SI 1 "const_int_operand" "")))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "gtle_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   "peep2_reg_dead_p (1, operands[0])
+    && (INTVAL (operands[1]) == 1
+        || (TARGET_H8300S && INTVAL (operands[1]) == 3))"
+   [(parallel [(set (match_dup 0)
+ 		   (ashiftrt:SI (match_dup 0)
+ 				(match_dup 5)))
+ 	      (clobber (scratch:QI))])
+    (set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_dup 4)
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     operands[5] = GEN_INT (exact_log2 (INTVAL (operands[1]) + 1));
+   })
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.l	#1,er0
+ ;;	bhi	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	shar.l	er0
+ ;;	bne	.L1
+ 
+ (define_peephole2
+   [(set (cc0)
+ 	(compare (match_operand:SI 0 "register_operand" "")
+ 		 (match_operand:SI 1 "const_int_operand" "")))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "gtuleu_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   "peep2_reg_dead_p (1, operands[0])
+    && (INTVAL (operands[1]) == 1
+        || (TARGET_H8300S && INTVAL (operands[1]) == 3))"
+   [(parallel [(set (match_dup 0)
+ 		   (ashiftrt:SI (match_dup 0)
+ 				(match_dup 5)))
+ 	      (clobber (scratch:QI))])
+    (set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_dup 6)
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     operands[5] = GEN_INT (exact_log2 (INTVAL (operands[1]) + 1));
+     operands[6] = gen_rtx_fmt_ee (GET_CODE (operands[4]) == GTU ? NE : EQ,
+ 				  VOIDmode, cc0_rtx, const0_rtx);
+   })
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.l	#15,er0
+ ;;	bgt	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	and	#240,r0l
+ ;;	mov.l	er0,er0
+ ;;	bgt	.L1
+ 
+ (define_peephole2
+   [(set (cc0)
+ 	(compare (match_operand:SI 0 "register_operand" "")
+ 		 (match_operand:SI 1 "const_int_operand" "")))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "gtle_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   "peep2_reg_dead_p (1, operands[0])
+    && (INTVAL (operands[1]) == 3
+        || INTVAL (operands[1]) == 7
+        || INTVAL (operands[1]) == 15
+        || INTVAL (operands[1]) == 31
+        || INTVAL (operands[1]) == 63
+        || INTVAL (operands[1]) == 127
+        || INTVAL (operands[1]) == 255)"
+   [(set (match_dup 0)
+ 	(and:SI (match_dup 0)
+ 		(match_dup 5)))
+    (set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_dup 4)
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     operands[5] = GEN_INT (~INTVAL (operands[1]));
+   })
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.l	#15,er0
+ ;;	bhi	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	and	#240,r0l
+ ;;	mov.l	er0,er0
+ ;;	bne	.L1
+ 
+ (define_peephole2
+   [(set (cc0)
+ 	(compare (match_operand:SI 0 "register_operand" "")
+ 		 (match_operand:SI 1 "const_int_operand" "")))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "gtuleu_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   "peep2_reg_dead_p (1, operands[0])
+    && ((TARGET_H8300H && INTVAL (operands[1]) == 3)
+ 	|| INTVAL (operands[1]) == 7
+ 	|| INTVAL (operands[1]) == 15
+ 	|| INTVAL (operands[1]) == 31
+ 	|| INTVAL (operands[1]) == 63
+ 	|| INTVAL (operands[1]) == 127
+ 	|| INTVAL (operands[1]) == 255)"
+   [(set (match_dup 0)
+ 	(and:SI (match_dup 0)
+ 		(match_dup 5)))
+    (set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_dup 6)
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     operands[5] = GEN_INT (~INTVAL (operands[1]));
+     operands[6] = gen_rtx_fmt_ee (GET_CODE (operands[4]) == GTU ? NE : EQ,
+ 				  VOIDmode, cc0_rtx, const0_rtx);
+   })
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.l	#65535,er0
+ ;;	bgt	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	mov.l	e0,e0
+ ;;	bgt	.L1
+ 
+ (define_peephole2
+   [(set (cc0)
+ 	(compare (match_operand:SI 0 "register_operand" "")
+ 		 (const_int 65535)))
+    (set (pc)
+ 	(if_then_else (match_operator 1 "gtle_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   ""
+   [(set (cc0) (compare (and:SI (match_dup 0)
+ 			       (const_int -65536))
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_dup 1)
+ 		      (match_dup 2)
+ 		      (match_dup 3)))])
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.l	#65535,er0
+ ;;	bhi	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	mov.l	e0,e0
+ ;;	bne	.L1
+ 
+ (define_peephole2
+   [(set (cc0)
+ 	(compare (match_operand:SI 0 "register_operand" "")
+ 		 (const_int 65535)))
+    (set (pc)
+ 	(if_then_else (match_operator 1 "gtuleu_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   ""
+   [(set (cc0) (compare (and:SI (match_dup 0)
+ 			       (const_int -65536))
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_dup 4)
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     operands[4] = gen_rtx_fmt_ee (GET_CODE (operands[1]) == GTU ? NE : EQ,
+ 				  VOIDmode, cc0_rtx, const0_rtx);
+   })
+ 
+ ;; Transform
+ ;;
+ ;;	cmp.l	#1,er0
+ ;;	beq	.L1
+ ;;
+ ;; into
+ ;;
+ ;;	mov.l	er0,er1
+ ;;	dec.l	#1,er1
+ ;;	beq	.L1
+ 
+ ;; We avoid this transformation if we see more than one copy of the
+ ;; same compare insn.
+ 
+ (define_peephole2
+   [(match_scratch:SI 5 "r")
+    (set (cc0)
+ 	(compare (match_operand:SI 0 "register_operand" "")
+ 		 (match_operand:SI 1 "incdec_operand" "")))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "eqne_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   "INTVAL (operands[1]) != 0
+    && !peep2_reg_dead_p (1, operands[0])
+    && !same_cmp_following_p (insn)"
+   [(set (match_dup 5)
+ 	(match_dup 0))
+    (set (match_dup 5)
+ 	(unspec:SI [(match_dup 5)
+ 		    (match_dup 6)]
+ 		   UNSPEC_INCDEC))
+    (set (cc0) (compare (match_dup 5)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_op_dup 4 [(cc0) (const_int 0)])
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     operands[6] = GEN_INT (- INTVAL (operands[1]));
+   })
+ 
+ ;; Narrow the mode of testing if possible.
+ 
+ (define_peephole2
+   [(set (match_operand:HSI 0 "register_operand" "")
+ 	(and:HSI (match_dup 0)
+ 		 (match_operand:HSI 1 "const_int_operand" "")))
+    (set (cc0) (compare (match_dup 0)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_operator 4 "eqne_operator"
+ 		       [(cc0) (const_int 0)])
+ 		      (match_operand 2 "pc_or_label_operand" "")
+ 		      (match_operand 3 "pc_or_label_operand" "")))]
+   "((const_int_qi_operand (operands[1], QImode)
+      || (GET_MODE (operands[0]) == SImode
+ 	 && const_int_hi_operand (operands[1], HImode)))
+     && peep2_reg_dead_p (2, operands[0]))"
+   [(set (match_dup 5) (match_dup 7))
+    (set (cc0) (compare (match_dup 5)
+ 		       (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_op_dup 4 [(cc0) (const_int 0)])
+ 		      (match_dup 2)
+ 		      (match_dup 3)))]
+   {
+     enum machine_mode mode;
+ 
+     mode = const_int_qi_operand (operands[1], QImode) ? QImode : HImode;
+     operands[5] = gen_rtx_REG (mode, REGNO (operands[0]));
+     operands[6] = gen_int_mode (INTVAL (operands[1]), mode);
+     operands[7] = gen_rtx_AND (mode, operands[5], operands[6]);
+   })
+ 
+ ;; These triggers right at the end of allocation of locals in the
+ ;; prologue (and possibly at other places).
+ 
+ ;; stack adjustment of -4, generate one push
+ ;;
+ ;; before : 6 bytes
+ ;; after  : 4 bytes
+ 
+ (define_peephole2
+   [(set (reg:SI SP_REG)
+ 	(plus:SI (reg:SI SP_REG)
+ 		 (const_int -4)))
+    (set (mem:SFI (reg:SI SP_REG))
+ 	(match_operand:SFI 0 "register_operand" ""))]
+   "!TARGET_NORMAL_MODE && REGNO (operands[0]) != SP_REG"
+   [(set (mem:SFI (pre_dec:SI (reg:SI SP_REG)))
+ 	(match_dup 0))])
+ 
+ ;; stack adjustment of -8, generate one push
+ ;;
+ ;; before : 8 bytes
+ ;; after  : 6 bytes
+ 
+ (define_peephole2
+   [(set (reg:SI SP_REG)
+ 	(plus:SI (reg:SI SP_REG)
+ 		 (const_int -8)))
+    (set (mem:SFI (reg:SI SP_REG))
+ 	(match_operand:SFI 0 "register_operand" ""))]
+   "!TARGET_NORMAL_MODE && REGNO (operands[0]) != SP_REG"
+   [(set (reg:SI SP_REG)
+ 	(plus:SI (reg:SI SP_REG)
+ 		 (const_int -4)))
+    (set (mem:SFI (pre_dec:SI (reg:SI SP_REG)))
+ 	(match_dup 0))])
+ 
+ ;; stack adjustment of -12, generate one push
+ ;;
+ ;; before : 10 bytes
+ ;; after  :  8 bytes
+ 
+ (define_peephole2
+   [(set (reg:SI SP_REG)
+ 	(plus:SI (reg:SI SP_REG)
+ 		 (const_int -12)))
+    (set (mem:SFI (reg:SI SP_REG))
+ 	(match_operand:SFI 0 "register_operand" ""))]
+   "!TARGET_NORMAL_MODE && REGNO (operands[0]) != SP_REG"
+   [(set (reg:SI SP_REG)
+ 	(plus:SI (reg:SI SP_REG)
+ 		 (const_int -4)))
+    (set (reg:SI SP_REG)
+ 	(plus:SI (reg:SI SP_REG)
+ 		 (const_int -4)))
+    (set (mem:SFI (pre_dec:SI (reg:SI SP_REG)))
+ 	(match_dup 0))])
+ 
+ ;; Transform
+ ;;
+ ;;	mov	dst,reg
+ ;;	op	reg
+ ;;	mov	reg,dst
+ ;;
+ ;; into
+ ;;
+ ;;	op	dst
+ ;;
+ ;; if "reg" dies at the end of the sequence.
+ 
+ (define_peephole2
+   [(set (match_operand 0 "register_operand" "")
+ 	(match_operand 1 "memory_operand" ""))
+    (set (match_dup 0)
+ 	(match_operator 2 "h8sx_unary_memory_operator"
+ 	 [(match_dup 0)]))
+    (set (match_operand 3 "memory_operand" "")
+ 	(match_dup 0))]
+   "TARGET_H8300SX
+    && peep2_reg_dead_p (3, operands[0])
+    && !reg_overlap_mentioned_p (operands[0], operands[3])
+    && h8sx_mergeable_memrefs_p (operands[3], operands[1])"
+   [(set (match_dup 3)
+ 	(match_dup 4))]
+   {
+     operands[4] = shallow_copy_rtx (operands[2]);
+     XEXP (operands[4], 0) = operands[1];
+   })
+ 
+ ;; Transform
+ ;;
+ ;;	mov	src1,reg
+ ;;	cmp	reg,src2
+ ;;
+ ;; into
+ ;;
+ ;;	cmp	src1,src2
+ ;;
+ ;; if "reg" dies in the comparison.
+ 
+ (define_peephole2
+   [(set (match_operand 0 "register_operand" "")
+ 	(match_operand 1 "h8300_dst_operand" ""))
+    (set (cc0)
+ 	(compare (match_dup 0)
+ 		 (match_operand 2 "h8300_src_operand" "")))]
+   "TARGET_H8300SX
+    && peep2_reg_dead_p (2, operands[0])
+    && !reg_overlap_mentioned_p (operands[0], operands[2])
+    && operands[2] != const0_rtx"
+   [(set (cc0)
+ 	(compare (match_dup 1)
+ 		 (match_dup 2)))])
+ 
+ ;; Likewise for the second operand.
+ 
+ (define_peephole2
+   [(set (match_operand 0 "register_operand" "")
+ 	(match_operand 1 "h8300_src_operand" ""))
+    (set (cc0)
+ 	(compare (match_operand 2 "h8300_dst_operand" "")
+ 		 (match_dup 0)))]
+   "TARGET_H8300SX
+    && peep2_reg_dead_p (2, operands[0])
+    && !reg_overlap_mentioned_p (operands[0], operands[2])"
+   [(set (cc0)
+ 	(compare (match_dup 2)
+ 		 (match_dup 1)))])
+ 
+ ;; Combine two moves.
+ 
+ (define_peephole2
+   [(set (match_operand 0 "register_operand" "")
+ 	(match_operand 1 "h8300_src_operand" ""))
+    (set (match_operand 2 "h8300_dst_operand" "")
+ 	(match_dup 0))]
+   "TARGET_H8300SX
+    && peep2_reg_dead_p (2, operands[0])
+    && !reg_overlap_mentioned_p (operands[0], operands[2])"
+   [(set (match_dup 2)
+ 	(match_dup 1))])
+ 
+ 
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/predicates.md gcc-11.1.0/gcc/config/h8300/predicates.md
*** gcc-10.3.0/gcc/config/h8300/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/h8300/predicates.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Predicate definitions for Renesas H8/300.
! ;; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for Renesas H8/300.
! ;; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 296,325 ****
           the negative case.  */
        if (value < 0)
  	value = -value;
!       if (TARGET_H8300H || TARGET_H8300S)
! 	{
! 	  /* A constant addition/subtraction takes 2 states in QImode,
! 	     4 states in HImode, and 6 states in SImode.  Thus, the
! 	     only case we can win is when SImode is used, in which
! 	     case, two adds/subs are used, taking 4 states.  */
! 	  if (mode == SImode
! 	      && (value == 2 + 1
! 		  || value == 4 + 1
! 		  || value == 4 + 2
! 		  || value == 4 + 4))
! 	    return 1;
! 	}
!       else
! 	{
! 	  /* We do not profit directly by splitting addition or
! 	     subtraction of 3 and 4.  However, since these are
! 	     implemented as a sequence of adds or subs, they do not
! 	     clobber (cc0) unlike a sequence of add.b and add.x.  */
! 	  if (mode == HImode
! 	      && (value == 2 + 1
! 		  || value == 2 + 2))
! 	    return 1;
! 	}
      }
  
    return 0;
--- 296,312 ----
           the negative case.  */
        if (value < 0)
  	value = -value;
! 
!       /* A constant addition/subtraction takes 2 states in QImode,
! 	 4 states in HImode, and 6 states in SImode.  Thus, the
! 	 only case we can win is when SImode is used, in which
! 	 case, two adds/subs are used, taking 4 states.  */
!       if (mode == SImode
! 	  && (value == 2 + 1
! 	      || value == 4 + 1
! 	      || value == 4 + 2
! 	      || value == 4 + 4))
! 	return 1;
      }
  
    return 0;
***************
*** 508,510 ****
--- 495,512 ----
  
    return (code == IOR || code == XOR);
  })
+ 
+ ;; Used to detect valid targets for conditional branches
+ ;; Used to detect (pc) or (label_ref) in some jumping patterns
+ (define_predicate "pc_or_label_operand"
+   (match_code "pc,label_ref"))
+ 
+ (define_predicate "simple_memory_operand"
+   (match_code "mem")
+ {
+   if (GET_MODE (op) == mode
+       && (GET_CODE (XEXP (op, 0)) != PRE_DEC
+ 	  && GET_CODE (XEXP (op, 0)) != POST_INC))
+     return 1;
+   return 0;
+ })
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/proepi.md gcc-11.1.0/gcc/config/h8300/proepi.md
*** gcc-10.3.0/gcc/config/h8300/proepi.md	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/h8300/proepi.md	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,123 ----
+ ;; ----------------------------------------------------------------------
+ ;; PROLOGUE/EPILOGUE-RELATED INSTRUCTIONS
+ ;; ----------------------------------------------------------------------
+ 
+ (define_expand "push_h8300hs_advanced"
+   [(set (mem:SI (pre_dec:SI (reg:SI SP_REG)))
+         (match_operand:SI 0 "register_operand" ""))]
+   "TARGET_H8300H && TARGET_H8300S && !TARGET_NORMAL_MODE"
+   "")
+ 
+ (define_expand "push_h8300hs_normal"
+   [(set (mem:SI (pre_dec:HI (reg:HI SP_REG)))
+         (match_operand:SI 0 "register_operand" ""))]
+   "TARGET_H8300H && TARGET_H8300S && TARGET_NORMAL_MODE"
+   "")
+ 
+ (define_expand "pop_h8300hs_advanced"
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(mem:SI (post_inc:SI (reg:SI SP_REG))))]
+   "TARGET_H8300H && TARGET_H8300S && !TARGET_NORMAL_MODE"
+   "")
+ 
+ (define_expand "pop_h8300hs_normal"
+   [(set (match_operand:SI 0 "register_operand" "")
+ 	(mem:SI (post_inc:HI (reg:HI SP_REG))))]
+   "TARGET_H8300H && TARGET_H8300S && TARGET_NORMAL_MODE"
+   "")
+ 
+ (define_insn "ldm_h8300sx"
+   [(match_parallel           0 "h8300_ldm_parallel"
+     [(set (match_operand:SI 1 "register_operand" "")
+ 	  (match_operand:SI 2 "memory_operand" ""))])]
+   "TARGET_H8300S"
+ {
+   operands[3] = SET_DEST (XVECEXP (operands[0], 0,
+ 				   XVECLEN (operands[0], 0) - 2));
+   return "ldm.l\t@er7+,%S1-%S3";
+ }
+   [(set_attr "length" "4")])
+ 
+ (define_insn "stm_h8300sx"
+   [(match_parallel           0 "h8300_stm_parallel"
+     [(set (match_operand:SI 1 "memory_operand" "")
+ 	  (match_operand:SI 2 "register_operand" ""))])]
+   "TARGET_H8300S"
+ {
+   operands[3] = SET_SRC (XVECEXP (operands[0], 0,
+ 				  XVECLEN (operands[0], 0) - 2));
+   return "stm.l\t%S2-%S3,@-er7";
+ }
+   [(set_attr "length" "4")])
+ 
+ (define_insn "return_h8sx"
+   [(match_parallel           0 "h8300_return_parallel"
+     [(return)
+      (set (match_operand:SI 1 "register_operand" "")
+ 	  (match_operand:SI 2 "memory_operand" ""))])]
+   "TARGET_H8300SX"
+ {
+   operands[3] = SET_DEST (XVECEXP (operands[0], 0,
+ 				   XVECLEN (operands[0], 0) - 2));
+   if (h8300_current_function_interrupt_function_p ()
+       || h8300_current_function_monitor_function_p ())
+     return "rte/l\t%S1-%S3";
+   else
+     return "rts/l\t%S1-%S3";
+ }
+   [(set_attr "can_delay" "no")
+    (set_attr "length" "2")])
+ 
+ (define_expand "return"
+   [(return)]
+   "h8300_can_use_return_insn_p ()"
+   "")
+ 
+ (define_insn "*return_1"
+   [(return)]
+   "reload_completed"
+ {
+   if (h8300_current_function_interrupt_function_p ()
+       || h8300_current_function_monitor_function_p ())
+     return "rte";
+   else
+     return "rts";
+ }
+   [(set_attr "can_delay" "no")
+    (set_attr "length" "2")])
+ 
+ (define_expand "prologue"
+   [(const_int 0)]
+   ""
+   {
+     h8300_expand_prologue ();
+     DONE;
+   })
+ 
+ (define_expand "epilogue"
+   [(return)]
+   ""
+   {
+     h8300_expand_epilogue ();
+     DONE;
+   })
+ 
+ (define_insn "monitor_prologue"
+   [(unspec_volatile [(const_int 0)] UNSPEC_MONITOR)]
+   ""
+ {
+   if (TARGET_H8300H && TARGET_NORMAL_MODE)
+     return "subs\\t#2,er7\;mov.l\\ter0,@-er7\;stc\\tccr,r0l\;mov.b\\tr0l,@(4,er7)\;mov.l\\t@er7+,er0\;orc\\t#128,ccr";
+   else if (TARGET_H8300H)
+     return "mov.l\\ter0,@-er7\;stc\\tccr,r0l\;mov.b\\tr0l,@(4,er7)\;mov.l\\t@er7+,er0\;orc\\t#128,ccr";
+   else if (TARGET_H8300S && TARGET_NEXR )
+     return "mov.l\\ter0,@-er7\;stc\tccr,r0l\;mov.b\tr0l,@(4,er7)\;mov.l\\t@er7+,er0\;orc\t#128,ccr";
+   else if (TARGET_H8300S && TARGET_NEXR && TARGET_NORMAL_MODE)
+     return "subs\\t#2,er7\;mov.l\\ter0,@-er7\;stc\tccr,r0l\;mov.b\tr0l,@(4,er7)\;mov.l\\t@er7+,er0\;orc\t#128,ccr";
+   else if (TARGET_H8300S && TARGET_NORMAL_MODE)
+     return "subs\\t#2,er7\;stc\texr,@-er7\;mov.l\\ter0,@-er7\;stc\tccr,r0l\;mov.b\tr0l,@(6,er7)\;mov.l\\t@er7+,er0\;orc\t#128,ccr";
+   else if (TARGET_H8300S)
+     return "stc\texr,@-er7\;mov.l\\ter0,@-er7\;stc\tccr,r0l\;mov.b\tr0l,@(6,er7)\;mov.l\\t@er7+,er0\;orc\t#128,ccr";
+   gcc_unreachable ();
+ }
+   [(set_attr "length" "20")])
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/shiftrotate.md gcc-11.1.0/gcc/config/h8300/shiftrotate.md
*** gcc-10.3.0/gcc/config/h8300/shiftrotate.md	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/h8300/shiftrotate.md	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,427 ----
+ ;; ----------------------------------------------------------------------
+ ;; SHIFTS
+ ;; ----------------------------------------------------------------------
+ ;;
+ ;; We make some attempt to provide real efficient shifting.  One example is
+ ;; doing an 8-bit shift of a 16-bit value by moving a byte reg into the other
+ ;; reg and moving 0 into the former reg.
+ ;;
+ ;; We also try to achieve this in a uniform way.  IE: We don't try to achieve
+ ;; this in both rtl and at insn emit time.  Ideally, we'd use rtl as that would
+ ;; give the optimizer more cracks at the code.  However, we wish to do things
+ ;; like optimizing shifting the sign bit to bit 0 by rotating the other way.
+ ;; There is rtl to handle this (rotate + and), but the H8/300 doesn't handle
+ ;; 16-bit rotates.  Also, if we emit complicated rtl, combine may not be able
+ ;; to detect cases it can optimize.
+ ;;
+ ;; For these and other fuzzy reasons, I've decided to go the less pretty but
+ ;; easier "do it at insn emit time" route.
+ 
+ 
+ (define_expand "ashl<mode>3"
+   [(set (match_operand:QHSI 0 "register_operand" "")
+ 	(ashift:QHSI (match_operand:QHSI 1 "register_operand" "")
+ 		     (match_operand:QI 2 "nonmemory_operand" "")))]
+   ""
+   {
+     if (expand_a_shift (<MODE>mode, ASHIFT, operands))
+     DONE;
+   })
+ 
+ (define_expand "ashr<mode>3"
+   [(set (match_operand:QHSI 0 "register_operand" "")
+ 	(ashiftrt:QHSI (match_operand:QHSI 1 "register_operand" "")
+ 		       (match_operand:QI 2 "nonmemory_operand" "")))]
+   ""
+   {
+     if (expand_a_shift (<MODE>mode, ASHIFTRT, operands))
+     DONE;
+   })
+ 
+ (define_expand "lshr<mode>3"
+   [(set (match_operand:QHSI 0 "register_operand" "")
+ 	(lshiftrt:QHSI (match_operand:QHSI 1 "register_operand" "")
+ 		       (match_operand:QI 2 "nonmemory_operand" "")))]
+   ""
+   {
+     if (expand_a_shift (<MODE>mode, LSHIFTRT, operands))
+     DONE;
+   })
+ 
+ ;; QI/HI/SI BIT SHIFTS
+ 
+ (define_insn_and_split ""
+   [(set (match_operand:QHSI 0 "h8300_dst_operand" "=rQ")
+ 	(match_operator:QHSI 3 "h8sx_unary_shift_operator"
+ 	 [(match_operand:QHSI 1 "h8300_dst_operand" "0")
+ 	  (match_operand:QI 2 "const_int_operand" "")]))]
+   "h8300_operands_match_p (operands)"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (match_op_dup 3 [(match_dup 1) (match_dup 2)]))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn ""
+   [(set (match_operand:QHSI 0 "h8300_dst_operand" "=rQ")
+ 	(match_operator:QHSI 3 "h8sx_unary_shift_operator"
+ 	 [(match_operand:QHSI 1 "h8300_dst_operand" "0")
+ 	  (match_operand:QI 2 "const_int_operand" "")]))
+    (clobber (reg:CC CC_REG))]
+   "h8300_operands_match_p (operands)"
+ {
+   if (<MODE>mode == E_QImode)
+     return output_h8sx_shift (operands, 'b', 'X');
+   if (<MODE>mode == E_HImode)
+     return output_h8sx_shift (operands, 'w', 'T');
+   if (<MODE>mode == E_SImode)
+     return output_h8sx_shift (operands, 'l', 'S');
+   gcc_unreachable ();
+ }
+   [(set_attr "length_table" "unary")])
+ 
+ (define_insn ""
+   [(set (reg:CCZN CC_REG)
+ 	(compare:CCZN
+ 	  (match_operator:QHSI 3 "h8sx_unary_shift_operator"
+ 	    [(match_operand:QHSI 1 "h8300_dst_operand" "0")
+ 	     (match_operand:QI 2 "const_int_operand" "")])
+ 	  (const_int 0)))
+    (set (match_operand:QHSI 0 "h8300_dst_operand" "=rQ")
+ 	(match_op_dup 3 [(match_dup 1) (match_dup 2)]))]
+   "h8300_operands_match_p (operands)"
+ {
+   if (<MODE>mode == E_QImode)
+     return output_h8sx_shift (operands, 'b', 'X');
+   if (<MODE>mode == E_HImode)
+     return output_h8sx_shift (operands, 'w', 'T');
+   if (<MODE>mode == E_SImode)
+     return output_h8sx_shift (operands, 'l', 'S');
+   gcc_unreachable ();
+ }
+   [(set_attr "length_table" "unary")])
+ 
+ (define_insn_and_split ""
+   [(set (match_operand:QHSI 0 "register_operand" "=r")
+ 	(match_operator:QHSI 3 "h8sx_binary_shift_operator"
+ 	 [(match_operand:QHSI 1 "register_operand" "0")
+ 	  (match_operand:QI 2 "nonmemory_operand" "r P5>X")]))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (match_op_dup 3 [(match_dup 1) (match_dup 2)]))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn ""
+   [(set (match_operand:QHSI 0 "register_operand" "=r")
+ 	(match_operator:QHSI 3 "h8sx_binary_shift_operator"
+ 	 [(match_operand:QHSI 1 "register_operand" "0")
+ 	  (match_operand:QI 2 "nonmemory_operand" "r P5>X")]))
+    (clobber (reg:CC CC_REG))]
+   ""
+ {
+   if (<MODE>mode == QImode)
+     return output_h8sx_shift (operands, 'b', 'X');
+   if (<MODE>mode == HImode)
+     return output_h8sx_shift (operands, 'w', 'T');
+   if (<MODE>mode == SImode)
+     return output_h8sx_shift (operands, 'l', 'S');
+   gcc_unreachable ();
+ }
+   [(set_attr "length" "4")])
+ 
+ (define_insn ""
+   [(set (reg:CCZN CC_REG)
+ 	(compare:CCZN
+ 	  (match_operator:QHSI 3 "h8sx_binary_shift_operator"
+ 	   [(match_operand:QHSI 1 "register_operand" "0")
+ 	    (match_operand:QI 2 "nonmemory_operand" "r P5>X")])
+ 	  (const_int 0)))
+    (set (match_operand:QHSI 0 "register_operand" "=r")
+ 	(match_op_dup 3 [(match_dup 1) (match_dup 2)]))]
+   ""
+ {
+   if (<MODE>mode == QImode)
+     return output_h8sx_shift (operands, 'b', 'X');
+   if (<MODE>mode == HImode)
+     return output_h8sx_shift (operands, 'w', 'T');
+   if (<MODE>mode == SImode)
+     return output_h8sx_shift (operands, 'l', 'S');
+   gcc_unreachable ();
+ }
+   [(set_attr "length" "4")])
+ 
+ (define_insn_and_split "*shiftqi"
+   [(set (match_operand:QI 0 "register_operand" "=r,r")
+ 	(match_operator:QI 3 "nshift_operator"
+ 	 [(match_operand:QI 1 "register_operand" "0,0")
+ 	  (match_operand:QI 2 "nonmemory_operand" "R,rn")]))
+    (clobber (match_scratch:QI 4 "=X,&r"))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (match_op_dup 3 [(match_dup 1) (match_dup 2)]))
+ 	      (clobber (match_dup 4))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*shiftqi_clobber_flags"
+   [(set (match_operand:QI 0 "register_operand" "=r,r")
+ 	(match_operator:QI 3 "nshift_operator"
+ 	 [(match_operand:QI 1 "register_operand" "0,0")
+ 	  (match_operand:QI 2 "nonmemory_operand" "R,rn")]))
+    (clobber (match_scratch:QI 4 "=X,&r"))
+    (clobber (reg:CC CC_REG))]
+   ""
+ {
+   return output_a_shift (operands);
+ }
+   [(set (attr "length")
+ 	(symbol_ref "compute_a_shift_length (insn, operands)"))])
+ 
+ (define_insn_and_split "*shiftqi_noscratch"
+   [(set (match_operand:QI 0 "register_operand" "=r,r")
+ 	(match_operator:QI 3 "nshift_operator"
+ 	 [(match_operand:QI 1 "register_operand" "0,0")
+ 	  (match_operand:QI 2 "nonmemory_operand" "R,rn")]))]
+   "(GET_CODE (operands[2]) == CONST_INT
+     && !h8300_shift_needs_scratch_p (INTVAL (operands[2]), QImode,
+ 				     GET_CODE (operands[3])))"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (match_op_dup 3 [(match_dup 1) (match_dup 2)]))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*shiftqi_noscratch_clobber_flags"
+   [(set (match_operand:QI 0 "register_operand" "=r,r")
+ 	(match_operator:QI 3 "nshift_operator"
+ 	 [(match_operand:QI 1 "register_operand" "0,0")
+ 	  (match_operand:QI 2 "nonmemory_operand" "R,rn")]))
+    (clobber (reg:CC CC_REG))]
+   "(GET_CODE (operands[2]) == CONST_INT
+     && !h8300_shift_needs_scratch_p (INTVAL (operands[2]), QImode,
+ 				     GET_CODE (operands[3])))"
+ {
+   return output_a_shift (operands);
+ }
+   [(set (attr "length")
+ 	(symbol_ref "compute_a_shift_length (insn, operands)"))])
+ 
+ (define_insn_and_split "*shifthi"
+   [(set (match_operand:HI 0 "register_operand" "=r,r")
+ 	(match_operator:HI 3 "nshift_operator"
+ 	 [(match_operand:HI 1 "register_operand" "0,0")
+ 	  (match_operand:QI 2 "nonmemory_operand" "S,rn")]))
+    (clobber (match_scratch:QI 4 "=X,&r"))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (match_op_dup 3 [(match_dup 1) (match_dup 2)]))
+ 	      (clobber (match_dup 4))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*shifthi_clobber_flags"
+   [(set (match_operand:HI 0 "register_operand" "=r,r")
+ 	(match_operator:HI 3 "nshift_operator"
+ 	 [(match_operand:HI 1 "register_operand" "0,0")
+ 	  (match_operand:QI 2 "nonmemory_operand" "S,rn")]))
+    (clobber (match_scratch:QI 4 "=X,&r"))
+    (clobber (reg:CC CC_REG))]
+   ""
+ {
+   return output_a_shift (operands);
+ }
+   [(set (attr "length")
+ 	(symbol_ref "compute_a_shift_length (insn, operands)"))])
+ 
+ (define_insn_and_split "*shifthi_noscratch"
+   [(set (match_operand:HI 0 "register_operand" "=r,r")
+ 	(match_operator:HI 3 "nshift_operator"
+ 	 [(match_operand:HI 1 "register_operand" "0,0")
+ 	  (match_operand:HI 2 "nonmemory_operand" "S,rn")]))]
+   "(GET_CODE (operands[2]) == CONST_INT
+     && !h8300_shift_needs_scratch_p (INTVAL (operands[2]), HImode,
+ 				     GET_CODE (operands[3])))"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (match_op_dup 3 [(match_dup 1) (match_dup 2)]))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*shifthi_noscratch_clobber_flags"
+   [(set (match_operand:HI 0 "register_operand" "=r,r")
+ 	(match_operator:HI 3 "nshift_operator"
+ 	 [(match_operand:HI 1 "register_operand" "0,0")
+ 	  (match_operand:HI 2 "nonmemory_operand" "S,rn")]))
+    (clobber (reg:CC CC_REG))]
+   "(GET_CODE (operands[2]) == CONST_INT
+     && !h8300_shift_needs_scratch_p (INTVAL (operands[2]), HImode,
+ 				     GET_CODE (operands[3])))"
+ {
+   return output_a_shift (operands);
+ }
+   [(set (attr "length")
+ 	(symbol_ref "compute_a_shift_length (insn, operands)"))])
+ 
+ (define_insn_and_split "*shiftsi"
+   [(set (match_operand:SI 0 "register_operand" "=r,r")
+ 	(match_operator:SI 3 "nshift_operator"
+ 	 [(match_operand:SI 1 "register_operand" "0,0")
+ 	  (match_operand:QI 2 "nonmemory_operand" "T,rn")]))
+    (clobber (match_scratch:QI 4 "=X,&r"))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (match_op_dup 3 [(match_dup 1) (match_dup 2)]))
+ 	      (clobber (match_dup 4))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*shiftsi_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r,r")
+ 	(match_operator:SI 3 "nshift_operator"
+ 	 [(match_operand:SI 1 "register_operand" "0,0")
+ 	  (match_operand:QI 2 "nonmemory_operand" "T,rn")]))
+    (clobber (match_scratch:QI 4 "=X,&r"))
+    (clobber (reg:CC CC_REG))]
+   ""
+ {
+   return output_a_shift (operands);
+ }
+   [(set (attr "length")
+ 	(symbol_ref "compute_a_shift_length (insn, operands)"))])
+ 
+ (define_insn_and_split "*shiftsi_noscratch"
+   [(set (match_operand:SI 0 "register_operand" "=r,r")
+ 	(match_operator:SI 3 "nshift_operator"
+ 	 [(match_operand:SI 1 "register_operand" "0,0")
+ 	  (match_operand:QI 2 "nonmemory_operand" "T,rn")]))]
+   "(GET_CODE (operands[2]) == CONST_INT
+     && !h8300_shift_needs_scratch_p (INTVAL (operands[2]), SImode,
+ 				     GET_CODE (operands[3])))"
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (match_op_dup 3 [(match_dup 1) (match_dup 2)]))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "*shiftsi_noscratch_clobber_flags"
+   [(set (match_operand:SI 0 "register_operand" "=r,r")
+ 	(match_operator:SI 3 "nshift_operator"
+ 	 [(match_operand:SI 1 "register_operand" "0,0")
+ 	  (match_operand:SI 2 "nonmemory_operand" "T,rn")]))
+    (clobber (reg:CC CC_REG))]
+   "(GET_CODE (operands[2]) == CONST_INT
+     && !h8300_shift_needs_scratch_p (INTVAL (operands[2]), SImode,
+ 				     GET_CODE (operands[3])))"
+ {
+   return output_a_shift (operands);
+ }
+   [(set (attr "length")
+ 	(symbol_ref "compute_a_shift_length (insn, operands)"))])
+ 
+ ;; Split a variable shift into a loop.  If the register containing
+ ;; the shift count dies, then we just use that register.
+ 
+ (define_split
+   [(set (match_operand 0 "register_operand" "")
+ 	(match_operator 2 "nshift_operator"
+ 	 [(match_dup 0)
+ 	  (match_operand:QI 1 "register_operand" "")]))
+    (clobber (match_operand:QI 3 "register_operand" ""))
+    (clobber (reg:CC CC_REG))]
+   "epilogue_completed
+    && find_regno_note (insn, REG_DEAD, REGNO (operands[1]))"
+   [(set (pc)
+         (if_then_else (le (match_dup 1) (const_int 0))
+ 		      (label_ref (match_dup 5))
+ 		      (pc)))
+    (match_dup 4)
+    (parallel
+      [(set (match_dup 0)
+ 	   (match_op_dup 2 [(match_dup 0) (const_int 1)]))
+       (clobber (scratch:QI))])
+    (set (match_dup 1) (plus:QI (match_dup 1) (const_int -1)))
+    (set (pc)
+         (if_then_else (ne (match_dup 1) (const_int 0))
+ 		      (label_ref (match_dup 4))
+ 		      (pc)))
+    (match_dup 5)]
+   {
+     operands[4] = gen_label_rtx ();
+     operands[5] = gen_label_rtx ();
+   })
+ 
+ (define_split
+   [(set (match_operand 0 "register_operand" "")
+ 	(match_operator 2 "nshift_operator"
+ 	 [(match_dup 0)
+ 	  (match_operand:QI 1 "register_operand" "")]))
+    (clobber (match_operand:QI 3 "register_operand" ""))
+    (clobber (reg:CC CC_REG))]
+   "epilogue_completed
+    && !find_regno_note (insn, REG_DEAD, REGNO (operands[1]))"
+   [(set (match_dup 3)
+ 	(match_dup 1))
+    (set (pc)
+         (if_then_else (le (match_dup 3) (const_int 0))
+ 		      (label_ref (match_dup 5))
+ 		      (pc)))
+    (match_dup 4)
+    (parallel
+      [(set (match_dup 0)
+ 	   (match_op_dup 2 [(match_dup 0) (const_int 1)]))
+       (clobber (scratch:QI))])
+    (set (match_dup 3) (plus:QI (match_dup 3) (const_int -1)))
+    (set (pc)
+         (if_then_else (ne (match_dup 3) (const_int 0))
+ 		      (label_ref (match_dup 4))
+ 		      (pc)))
+    (match_dup 5)]
+   {
+     operands[4] = gen_label_rtx ();
+     operands[5] = gen_label_rtx ();
+   })
+ 
+ (define_split
+   [(set (match_operand:SI 0 "register_operand")
+ 	(match_operator:SI 3 "nshift_operator"
+ 	 [(match_operand:SI 1 "register_operand")
+ 	  (match_operand:QI 2 "nonmemory_operand")]))
+    (clobber (match_scratch:QI 4))]
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (match_op_dup 3 [(match_dup 1) (match_dup 2)]))
+ 	      (clobber (match_dup 4))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ 
+ ;; ----------------------------------------------------------------------
+ ;; ROTATIONS
+ ;; ----------------------------------------------------------------------
+ 
+ (define_expand "rotl<mode>3"
+   [(set (match_operand:QHSI 0 "register_operand" "")
+ 	(rotate:QHSI (match_operand:QHSI 1 "register_operand" "")
+ 		     (match_operand:QI 2 "nonmemory_operand" "")))]
+   ""
+   {
+     if (expand_a_rotate (operands))
+     DONE;
+   })
+ 
+ (define_insn_and_split "rotl<mode>3_1"
+   [(set (match_operand:QHSI 0 "register_operand" "=r")
+ 	(rotate:QHSI (match_operand:QHSI 1 "register_operand" "0")
+ 		     (match_operand:QI 2 "immediate_operand" "")))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 0) (rotate:QHSI (match_dup 1) (match_dup 2)))
+ 	      (clobber (reg:CC CC_REG))])])
+ 
+ (define_insn "rotl<mode>3_1_clobber_flags"
+   [(set (match_operand:QHSI 0 "register_operand" "=r")
+ 	(rotate:QHSI (match_operand:QHSI 1 "register_operand" "0")
+ 		     (match_operand:QI 2 "immediate_operand" "")))
+    (clobber (reg:CC CC_REG))]
+   ""
+ {
+   return output_a_rotate (ROTATE, operands);
+ }
+   [(set (attr "length")
+ 	(symbol_ref "compute_a_rotate_length (operands)"))])
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/t-h8300 gcc-11.1.0/gcc/config/h8300/t-h8300
*** gcc-10.3.0/gcc/config/h8300/t-h8300	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/h8300/t-h8300	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 1993-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 1993-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
***************
*** 16,24 ****
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.
  
! MULTILIB_OPTIONS = mh/ms/msx mn mint32
! MULTILIB_DIRNAMES = h8300h h8300s h8sx normal int32
! MULTILIB_EXCEPTIONS = mint32 mn mn/mint32
  
  s-config s-conditions s-flags s-codes s-constants s-emit s-recog \
  s-opinit s-extract s-peep s-attr s-attrtab s-output: \
--- 16,23 ----
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.
  
! MULTILIB_OPTIONS = ms/msx mn mint32
! MULTILIB_DIRNAMES = h8300s h8sx normal int32
  
  s-config s-conditions s-flags s-codes s-constants s-emit s-recog \
  s-opinit s-extract s-peep s-attr s-attrtab s-output: \
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/t-linux gcc-11.1.0/gcc/config/h8300/t-linux
*** gcc-10.3.0/gcc/config/h8300/t-linux	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/h8300/t-linux	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! # Copyright (C) 2015-2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2015-2021 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-10.3.0/gcc/config/h8300/testcompare.md gcc-11.1.0/gcc/config/h8300/testcompare.md
*** gcc-10.3.0/gcc/config/h8300/testcompare.md	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/h8300/testcompare.md	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,208 ----
+ ;; ----------------------------------------------------------------------
+ ;; TEST INSTRUCTIONS
+ ;; ----------------------------------------------------------------------
+ 
+ ;; (define_insn_and_split "*tst_extzv_1_n"
+ ;;   [(set (cc0)
+ ;; 	(compare (zero_extract:SI (match_operand:QI 0 "general_operand_src" "r,U,mn>")
+ ;; 				  (const_int 1)
+ ;; 				  (match_operand 1 "const_int_operand" "n,n,n"))
+ ;; 		 (const_int 0)))
+ ;;   (clobber (match_scratch:QI 2 "=X,X,&r"))]
+ ;;  "!CONSTANT_P (operands[0])"
+ ;;  "@
+ ;;   btst\\t%Z1,%Y0
+ ;;   btst\\t%Z1,%Y0
+ ;;   #"
+ ;;  "&& reload_completed
+ ;;   && !satisfies_constraint_U (operands[0])"
+ ;;  [(set (match_dup 2)
+ ;;	(match_dup 0))
+ ;;   (parallel [(set (cc0) (compare (zero_extract:SI (match_dup 2)
+ ;;						   (const_int 1)
+ ;;						   (match_dup 1))
+ ;;				  (const_int 0)))
+ ;;	      (clobber (scratch:QI))])]
+ ;;  ""
+ ;;  [(set_attr "length" "2,8,10")])
+ ;;
+ ;;(define_insn ""
+ ;;  [(set (cc0)
+ ;;	(compare (zero_extract:HSI (match_operand:HSI 0 "register_operand" "r")
+ ;;				   (const_int 1)
+ ;;				   (match_operand 1 "const_int_operand" "n"))
+ ;;		 (const_int 0)))]
+ ;;  "INTVAL (operands[1]) <= 15"
+ ;;  "btst	%Z1,%Y0"
+ ;;  [(set_attr "length" "2")])
+ ;;
+ ;;(define_insn_and_split "*tstsi_upper_bit"
+ ;;  [(set (cc0)
+ ;;	(compare (zero_extract:SI (match_operand:SI 0 "register_operand" "r")
+ ;;				  (const_int 1)
+ ;;				  (match_operand 1 "const_int_operand" "n"))
+ ;;		 (const_int 0)))
+ ;;   (clobber (match_scratch:SI 2 "=&r"))]
+ ;;  "INTVAL (operands[1]) >= 16"
+ ;;  "#"
+ ;;  "&& reload_completed"
+ ;;  [(set (match_dup 2)
+ ;;	(ior:SI (and:SI (match_dup 2)
+ ;;			(const_int -65536))
+ ;;		(lshiftrt:SI (match_dup 0)
+ ;;			     (const_int 16))))
+ ;;   (set (cc0)
+ ;;	(compare (zero_extract:SI (match_dup 2)
+ ;;				  (const_int 1)
+ ;;				  (match_dup 3))
+ ;;		 (const_int 0)))]
+ ;;  {
+ ;;    operands[3] = GEN_INT (INTVAL (operands[1]) - 16);
+ ;;  })
+ ;;
+ ;;(define_insn "*tstsi_variable_bit"
+ ;;  [(set (cc0)
+ ;;	(compare (zero_extract:SI (match_operand:SI 0 "register_operand" "r")
+ ;;				  (const_int 1)
+ ;;				  (and:SI (match_operand:SI 1 "register_operand" "r")
+ ;;					  (const_int 7)))
+ ;;		 (const_int 0)))]
+ ;;  ""
+ ;;  "btst	%w1,%w0"
+ ;;  [(set_attr "length" "2")])
+ ;;
+ ;;(define_insn_and_split "*tstsi_variable_bit_qi"
+ ;;  [(set (cc0)
+ ;;	(compare (zero_extract:SI (zero_extend:SI (match_operand:QI 0 "general_operand_src" "r,U,mn>"))
+ ;;				  (const_int 1)
+ ;;				  (and:SI (match_operand:SI 1 "register_operand" "r,r,r")
+ ;;					  (const_int 7)))
+ ;;		 (const_int 0)))
+ ;;   (clobber (match_scratch:QI 2 "=X,X,&r"))]
+ ;;  "!CONSTANT_P (operands[0])"
+ ;;  "@
+ ;;   btst\\t%w1,%X0
+ ;;   btst\\t%w1,%X0
+ ;;   #"
+ ;;  "&& reload_completed
+ ;;   && !satisfies_constraint_U (operands[0])"
+ ;;  [(set (match_dup 2)
+ ;;	(match_dup 0))
+ ;;   (parallel [(set (cc0)
+ ;;		   (compare (zero_extract:SI (zero_extend:SI (match_dup 2))
+ ;;					     (const_int 1)
+ ;;					     (and:SI (match_dup 1)
+ ;;						     (const_int 7)))
+ ;;			    (const_int 0)))
+ ;;	      (clobber (scratch:QI))])]
+ ;;  ""
+ ;;  [(set_attr "length" "2,8,10")])
+ 
+ (define_insn "*tst<mode>"
+   [(set (reg:CCZN CC_REG)
+ 	(compare:CCZN (match_operand:QHSI 0 "register_operand" "r")
+ 		      (const_int 0)))]
+   ""
+   {
+     if (<MODE>mode == QImode)
+       return "mov.b	%X0,%X0";
+     else if (<MODE>mode == HImode)
+       return "mov.w	%T0,%T0";
+     else if (<MODE>mode == SImode)
+       return "mov.l	%S0,%S0";
+     gcc_unreachable ();
+   }
+   [(set_attr "length" "2")])
+ 
+ (define_insn "*tsthi_upper"
+   [(set (reg:CCZN CC_REG)
+ 	(compare (and:HI (match_operand:HI 0 "register_operand" "r")
+ 			 (const_int -256))
+ 		 (const_int 0)))]
+   "reload_completed"
+   "mov.b	%t0,%t0"
+   [(set_attr "length" "2")])
+ 
+ (define_insn "*tstsi_upper"
+   [(set (reg:CCZN CC_REG)
+ 	(compare (and:SI (match_operand:SI 0 "register_operand" "r")
+ 			 (const_int -65536))
+ 		 (const_int 0)))]
+   "reload_completed"
+   "mov.w	%e0,%e0"
+   [(set_attr "length" "2")])
+ 
+ (define_insn "*cmpqi"
+   [(set (reg:CC CC_REG)
+ 	(compare (match_operand:QI 0 "h8300_dst_operand" "rQ")
+ 		 (match_operand:QI 1 "h8300_src_operand" "rQi")))]
+   "reload_completed"
+   "cmp.b	%X1,%X0"
+   [(set_attr "length_table" "add")])
+ 
+ (define_insn "*cmphi"
+   [(set (reg:CC CC_REG)
+ 	(compare (match_operand:HI 0 "h8300_dst_operand" "rU,rQ")
+ 		 (match_operand:HI 1 "h8300_src_operand" "P3>X,rQi")))]
+   "reload_completed"
+ {
+   switch (which_alternative)
+     {
+     case 0:
+       if (!TARGET_H8300SX)
+ 	return "cmp.w	%T1,%T0";
+       else
+ 	return "cmp.w	%T1:3,%T0";
+     case 1:
+       return "cmp.w	%T1,%T0";
+     default:
+       gcc_unreachable ();
+       }
+ }
+   [(set_attr "length_table" "short_immediate,add")])
+ 
+ (define_insn "cmpsi"
+   [(set (reg:CC CC_REG)
+ 	(compare (match_operand:SI 0 "h8300_dst_operand" "r,rQ")
+ 		 (match_operand:SI 1 "h8300_src_operand" "P3>X,rQi")))]
+   "reload_completed"
+ {
+   switch (which_alternative)
+     {
+     case 0:
+       if (!TARGET_H8300SX)
+ 	return "cmp.l	%S1,%S0";
+       else
+ 	return "cmp.l	%S1:3,%S0";
+     case 1:
+       return "cmp.l	%S1,%S0";
+     default:
+       gcc_unreachable ();
+     }
+ }
+   [(set_attr "length" "2,*")
+    (set_attr "length_table" "*,add")])
+ 
+ ;; Convert a memory comparison to a move if there is a scratch register.
+ 
+ (define_peephole2
+   [(match_scratch:QHSI 1 "r")
+    (set (reg:CC CC_REG)
+ 	(compare (match_operand:QHSI 0 "memory_operand" "")
+ 		 (const_int 0)))]
+   ""
+   [(parallel [(set (match_dup 1) (match_dup 0)) (clobber (reg:CC CC_REG))])
+    (set (reg:CC CC_REG) (compare:CC (match_dup 1) (const_int 0)))])
+ 
+ ;; The compare-elimination pass does not handle memory reference.  So this
+ ;; little peephole helps fill the gap and avoid code quality regressions.
+ (define_peephole2
+   [(parallel [(set (match_operand:QHSI 0 "register_operand" "")
+ 		   (match_operand:QHSI 1 "simple_memory_operand" ""))
+ 	      (clobber (reg:CC CC_REG))])
+    (set (reg:CCZN CC_REG)
+ 	(compare:CCZN (match_dup 0) (const_int 0)))]
+   ""
+   [(parallel [(set (reg:CCZN CC_REG) (compare:CCZN (match_dup 1) (const_int 0)))
+ 	      (set (match_dup 0) (match_dup 1))])])
+ 
diff -Nrcpad gcc-10.3.0/gcc/config/host-darwin.c gcc-11.1.0/gcc/config/host-darwin.c
*** gcc-10.3.0/gcc/config/host-darwin.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/host-darwin.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Darwin host-specific hook definitions.
!    Copyright (C) 2003-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Darwin host-specific hook definitions.
!    Copyright (C) 2003-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** darwin_gt_pch_use_address (void *addr, s
*** 61,67 ****
    sz = (sz + pagesize - 1) / pagesize * pagesize;
  
    if (munmap (pch_address_space + sz, sizeof (pch_address_space) - sz) != 0)
!     fatal_error (input_location, "couldn%'t unmap pch_address_space: %m");
  
    if (ret)
      {
--- 61,68 ----
    sz = (sz + pagesize - 1) / pagesize * pagesize;
  
    if (munmap (pch_address_space + sz, sizeof (pch_address_space) - sz) != 0)
!     fatal_error (input_location,
! 		 "could not unmap %<pch_address_space%>: %m");
  
    if (ret)
      {
diff -Nrcpad gcc-10.3.0/gcc/config/host-darwin.h gcc-11.1.0/gcc/config/host-darwin.h
*** gcc-10.3.0/gcc/config/host-darwin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/host-darwin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Darwin host-specific hook definitions.
!    Copyright (C) 2003-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Darwin host-specific hook definitions.
!    Copyright (C) 2003-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/host-hpux.c gcc-11.1.0/gcc/config/host-hpux.c
*** gcc-10.3.0/gcc/config/host-hpux.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/host-hpux.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* HP-UX host-specific hook definitions.
!    Copyright (C) 2004-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* HP-UX host-specific hook definitions.
!    Copyright (C) 2004-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/host-linux.c gcc-11.1.0/gcc/config/host-linux.c
*** gcc-10.3.0/gcc/config/host-linux.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/host-linux.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Linux host-specific hook definitions.
!    Copyright (C) 2004-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Linux host-specific hook definitions.
!    Copyright (C) 2004-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/host-netbsd.c gcc-11.1.0/gcc/config/host-netbsd.c
*** gcc-10.3.0/gcc/config/host-netbsd.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/host-netbsd.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* NetBSD host-specific hook definitions.
!    Copyright (C) 2004-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* NetBSD host-specific hook definitions.
!    Copyright (C) 2004-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/host-openbsd.c gcc-11.1.0/gcc/config/host-openbsd.c
*** gcc-10.3.0/gcc/config/host-openbsd.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/host-openbsd.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* OpenBSD host-specific hook definitions.
!    Copyright (C) 2004-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* OpenBSD host-specific hook definitions.
!    Copyright (C) 2004-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/host-solaris.c gcc-11.1.0/gcc/config/host-solaris.c
*** gcc-10.3.0/gcc/config/host-solaris.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/host-solaris.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Solaris host-specific hook definitions.
!    Copyright (C) 2004-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Solaris host-specific hook definitions.
!    Copyright (C) 2004-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/hpux11.opt gcc-11.1.0/gcc/config/hpux11.opt
*** gcc-10.3.0/gcc/config/hpux11.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/hpux11.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; HP-UX 11 options.
  
! ; Copyright (C) 2011-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; HP-UX 11 options.
  
! ; Copyright (C) 2011-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-10.3.0/gcc/config/i386/adxintrin.h gcc-11.1.0/gcc/config/i386/adxintrin.h
*** gcc-10.3.0/gcc/config/i386/adxintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/adxintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2012-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2012-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 21,28 ****
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #if !defined _IMMINTRIN_H_INCLUDED
! # error "Never use <adxintrin.h> directly; include <immintrin.h> instead."
  #endif
  
  #ifndef _ADXINTRIN_H_INCLUDED
--- 21,28 ----
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #ifndef _X86GPRINTRIN_H_INCLUDED
! # error "Never use <adxintrin.h> directly; include <x86gprintrin.h> instead."
  #endif
  
  #ifndef _ADXINTRIN_H_INCLUDED
diff -Nrcpad gcc-10.3.0/gcc/config/i386/ammintrin.h gcc-11.1.0/gcc/config/i386/ammintrin.h
*** gcc-10.3.0/gcc/config/i386/ammintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/ammintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2007-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2007-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/amxbf16intrin.h gcc-11.1.0/gcc/config/i386/amxbf16intrin.h
*** gcc-10.3.0/gcc/config/i386/amxbf16intrin.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/i386/amxbf16intrin.h	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,52 ----
+ /* Copyright (C) 2020-2021 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.
+ 
+    Under Section 7 of GPL version 3, you are granted additional
+    permissions described in the GCC Runtime Library Exception, version
+    3.1, as published by the Free Software Foundation.
+ 
+    You should have received a copy of the GNU General Public License and
+    a copy of the GCC Runtime Library Exception along with this program;
+    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #if !defined _IMMINTRIN_H_INCLUDED
+ #error "Never use <amxbf16intrin.h> directly; include <immintrin.h> instead."
+ #endif
+ 
+ #ifndef _AMXBF16INTRIN_H_INCLUDED
+ #define _AMXBF16INTRIN_H_INCLUDED
+ 
+ #if !defined(__AMX_BF16__)
+ #pragma GCC push_options
+ #pragma GCC target("amx-bf16")
+ #define __DISABLE_AMX_BF16__
+ #endif /* __AMX_BF16__ */
+ 
+ #if defined(__x86_64__) && defined(__AMX_BF16__)
+ #define _tile_dpbf16ps_internal(dst,src1,src2)					\
+   __asm__ volatile\
+   ("{tdpbf16ps\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|tdpbf16ps\t%%tmm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::)
+ 
+ #define _tile_dpbf16ps(dst,src1,src2)					\
+   _tile_dpbf16ps_internal (dst, src1, src2)
+ 
+ #endif
+ 
+ #ifdef __DISABLE_AMX_BF16__
+ #undef __DISABLE_AMX_BF16__
+ #pragma GCC pop_options
+ #endif /* __DISABLE_AMX_BF16__ */
+ 
+ #endif /* _AMXBF16INTRIN_H_INCLUDED */
diff -Nrcpad gcc-10.3.0/gcc/config/i386/amxint8intrin.h gcc-11.1.0/gcc/config/i386/amxint8intrin.h
*** gcc-10.3.0/gcc/config/i386/amxint8intrin.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/i386/amxint8intrin.h	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,61 ----
+ /* Copyright (C) 2020-2021 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.
+ 
+    Under Section 7 of GPL version 3, you are granted additional
+    permissions described in the GCC Runtime Library Exception, version
+    3.1, as published by the Free Software Foundation.
+ 
+    You should have received a copy of the GNU General Public License and
+    a copy of the GCC Runtime Library Exception along with this program;
+    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #if !defined _IMMINTRIN_H_INCLUDED
+ #error "Never use <amxint8intrin.h> directly; include <immintrin.h> instead."
+ #endif
+ 
+ #ifndef _AMXINT8INTRIN_H_INCLUDED
+ #define _AMXINT8INTRIN_H_INCLUDED
+ 
+ #if !defined(__AMX_INT8__)
+ #pragma GCC push_options
+ #pragma GCC target("amx-int8")
+ #define __DISABLE_AMX_INT8__
+ #endif /* __AMX_INT8__ */
+ 
+ #if defined(__x86_64__) && defined(__AMX_INT8__)
+ #define _tile_int8_dp_internal(name,dst,src1,src2)					\
+   __asm__ volatile							\
+   ("{"#name"\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|"#name"\t%%tmm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::)
+ 
+ #define _tile_dpbssd(dst,src1,src2)					\
+   _tile_int8_dp_internal (tdpbssd, dst, src1, src2)
+ 
+ #define _tile_dpbsud(dst,src1,src2)					\
+   _tile_int8_dp_internal (tdpbsud, dst, src1, src2)
+ 
+ #define _tile_dpbusd(dst,src1,src2)					\
+   _tile_int8_dp_internal (tdpbusd, dst, src1, src2)
+ 
+ #define _tile_dpbuud(dst,src1,src2)					\
+   _tile_int8_dp_internal (tdpbuud, dst, src1, src2)
+ 
+ #endif
+ 
+ #ifdef __DISABLE_AMX_INT8__
+ #undef __DISABLE_AMX_INT8__
+ #pragma GCC pop_options
+ #endif /* __DISABLE_AMX_INT8__ */
+ 
+ #endif /* _AMXINT8INTRIN_H_INCLUDED */
diff -Nrcpad gcc-10.3.0/gcc/config/i386/amxtileintrin.h gcc-11.1.0/gcc/config/i386/amxtileintrin.h
*** gcc-10.3.0/gcc/config/i386/amxtileintrin.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/i386/amxtileintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,98 ----
+ /* Copyright (C) 2020-2021 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.
+ 
+    Under Section 7 of GPL version 3, you are granted additional
+    permissions described in the GCC Runtime Library Exception, version
+    3.1, as published by the Free Software Foundation.
+ 
+    You should have received a copy of the GNU General Public License and
+    a copy of the GCC Runtime Library Exception along with this program;
+    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #if !defined _IMMINTRIN_H_INCLUDED
+ #error "Never use <amxtileintrin.h> directly; include <immintrin.h> instead."
+ #endif
+ 
+ #ifndef _AMXTILEINTRIN_H_INCLUDED
+ #define _AMXTILEINTRIN_H_INCLUDED
+ 
+ #if !defined(__AMX_TILE__)
+ #pragma GCC push_options
+ #pragma GCC target("amx-tile")
+ #define __DISABLE_AMX_TILE__
+ #endif /* __AMX_TILE__ */
+ 
+ #if defined(__x86_64__) && defined(__AMX_TILE__)
+ extern __inline void
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _tile_loadconfig (const void *__config)
+ {
+   __asm__ volatile ("ldtilecfg\t%X0" :: "m" (*((const void **)__config)));
+ }
+ 
+ extern __inline void
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _tile_storeconfig (void *__config)
+ {
+   __asm__ volatile ("sttilecfg\t%X0" : "=m" (*((void **)__config)));
+ }
+ 
+ extern __inline void
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _tile_release (void)
+ {
+   __asm__ volatile ("tilerelease" ::);
+ }
+ 
+ #define _tile_loadd(dst,base,stride)		\
+   _tile_loadd_internal (dst, base, stride)
+ 
+ #define _tile_loadd_internal(dst,base,stride)				\
+   __asm__ volatile							\
+   ("{tileloadd\t(%0,%1,1), %%tmm"#dst"|tileloadd\t%%tmm"#dst", [%0+%1*1]}" \
+    :: "r" ((const void*) base), "r" ((long) stride))
+ 
+ #define _tile_stream_loadd(dst,base,stride)		\
+   _tile_stream_loadd_internal (dst, base, stride)
+ 
+ #define _tile_stream_loadd_internal(dst,base,stride)			\
+   __asm__ volatile							\
+   ("{tileloaddt1\t(%0,%1,1), %%tmm"#dst"|tileloaddt1\t%%tmm"#dst", [%0+%1*1]}" \
+    :: "r" ((const void*) base), "r" ((long) stride))
+ 
+ #define _tile_stored(dst,base,stride)		\
+   _tile_stored_internal (dst, base, stride)
+ 
+ #define _tile_stored_internal(src,base,stride)				\
+   __asm__ volatile							\
+   ("{tilestored\t%%tmm"#src", (%0,%1,1)|tilestored\t[%0+%1*1], %%tmm"#src"}" \
+    :: "r" ((void*) base), "r" ((long) stride) \
+    : "memory")
+ 
+ #define _tile_zero(dst)				\
+   _tile_zero_internal (dst)
+ 
+ #define _tile_zero_internal(dst)		\
+   __asm__ volatile				\
+   ("tilezero\t%%tmm"#dst ::)
+ 
+ #endif
+ 
+ #ifdef __DISABLE_AMX_TILE__
+ #undef __DISABLE_AMX_TILE__
+ #pragma GCC pop_options
+ #endif /* __DISABLE_AMX_TILE__ */
+ 
+ #endif /* _AMXTILEINTRIN_H_INCLUDED */
diff -Nrcpad gcc-10.3.0/gcc/config/i386/athlon.md gcc-11.1.0/gcc/config/i386/athlon.md
*** gcc-10.3.0/gcc/config/i386/athlon.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/athlon.md	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! ;; Copyright (C) 2002-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2002-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/i386/atom.md gcc-11.1.0/gcc/config/i386/atom.md
*** gcc-10.3.0/gcc/config/i386/atom.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/atom.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Atom Scheduling
! ;; Copyright (C) 2009-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Atom Scheduling
! ;; Copyright (C) 2009-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/i386/att.h gcc-11.1.0/gcc/config/i386/att.h
*** gcc-10.3.0/gcc/config/i386/att.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/att.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for AT&T assembler syntax for the Intel 80386.
!    Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for AT&T assembler syntax for the Intel 80386.
!    Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx2intrin.h gcc-11.1.0/gcc/config/i386/avx2intrin.h
*** gcc-10.3.0/gcc/config/i386/avx2intrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx2intrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** _mm256_broadcastsi128_si256 (__m128i __X
*** 950,955 ****
--- 950,958 ----
    return (__m256i) __builtin_ia32_vbroadcastsi256 ((__v2di)__X);
  }
  
+ #define _mm_broadcastsi128_si256(X) _mm256_broadcastsi128_si256(X)
+ #define _mm_broadcastsd_pd(X) _mm_movedup_pd(X)
+ 
  #ifdef __OPTIMIZE__
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx5124fmapsintrin.h gcc-11.1.0/gcc/config/i386/avx5124fmapsintrin.h
*** gcc-10.3.0/gcc/config/i386/avx5124fmapsintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx5124fmapsintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2015-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2015-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx5124vnniwintrin.h gcc-11.1.0/gcc/config/i386/avx5124vnniwintrin.h
*** gcc-10.3.0/gcc/config/i386/avx5124vnniwintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx5124vnniwintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2015-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2015-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512bf16intrin.h gcc-11.1.0/gcc/config/i386/avx512bf16intrin.h
*** gcc-10.3.0/gcc/config/i386/avx512bf16intrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512bf16intrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2019-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2019-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512bf16vlintrin.h gcc-11.1.0/gcc/config/i386/avx512bf16vlintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512bf16vlintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512bf16vlintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2019-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2019-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512bitalgintrin.h gcc-11.1.0/gcc/config/i386/avx512bitalgintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512bitalgintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512bitalgintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512bwintrin.h gcc-11.1.0/gcc/config/i386/avx512bwintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512bwintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512bwintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 36,42 ****
--- 36,46 ----
  
  /* Internal data types for implementing the intrinsics.  */
  typedef short __v32hi __attribute__ ((__vector_size__ (64)));
+ typedef short __v32hi_u __attribute__ ((__vector_size__ (64),	\
+ 					__may_alias__, __aligned__ (1)));
  typedef char __v64qi __attribute__ ((__vector_size__ (64)));
+ typedef char __v64qi_u __attribute__ ((__vector_size__ (64),	\
+ 				       __may_alias__, __aligned__ (1)));
  
  typedef unsigned long long __mmask64;
  
*************** _mm512_maskz_mov_epi16 (__mmask32 __U, _
*** 303,308 ****
--- 307,319 ----
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_loadu_epi16 (void const *__P)
+ {
+   return (__m512i) (*(__v32hi_u *) __P);
+ }
+ 
+ extern __inline __m512i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
  {
    return (__m512i) __builtin_ia32_loaddquhi512_mask ((const short *) __P,
*************** _mm512_maskz_loadu_epi16 (__mmask32 __U,
*** 322,327 ****
--- 333,345 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_storeu_epi16 (void *__P, __m512i __A)
+ {
+   *(__v32hi_u *) __P = (__v32hi_u) __A;
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
  {
    __builtin_ia32_storedquhi512_mask ((short *) __P,
*************** _kunpackd_mask64 (__mmask32 __A, __mmask
*** 382,387 ****
--- 400,412 ----
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_loadu_epi8 (void const *__P)
+ {
+   return (__m512i) (*(__v64qi_u *) __P);
+ }
+ 
+ extern __inline __m512i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
  {
    return (__m512i) __builtin_ia32_loaddquqi512_mask ((const char *) __P,
*************** _mm512_maskz_loadu_epi8 (__mmask64 __U,
*** 400,405 ****
--- 425,437 ----
  }
  
  extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_storeu_epi8 (void *__P, __m512i __A)
+ {
+   *(__v64qi_u *) __P = (__v64qi_u) __A;
+ }
+ 
+ extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
  {
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512cdintrin.h gcc-11.1.0/gcc/config/i386/avx512cdintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512cdintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512cdintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512dqintrin.h gcc-11.1.0/gcc/config/i386/avx512dqintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512dqintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512dqintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** _mm_reduce_sd (__m128d __A, __m128d __B,
*** 1168,1173 ****
--- 1168,1184 ----
  
  extern __inline __m128d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_reduce_round_sd (__m128d __A, __m128d __B, int __C, const int __R)
+ {
+   return (__m128d) __builtin_ia32_reducesd_mask_round ((__v2df) __A,
+ 						       (__v2df) __B, __C,
+ 						       (__v2df)
+ 						       _mm_setzero_pd (),
+ 						       (__mmask8) -1, __R);
+ }
+ 
+ extern __inline __m128d
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_reduce_sd (__m128d __W,  __mmask8 __U, __m128d __A,
  		    __m128d __B, int __C)
  {
*************** _mm_mask_reduce_sd (__m128d __W,  __mmas
*** 1179,1184 ****
--- 1190,1206 ----
  
  extern __inline __m128d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_reduce_round_sd (__m128d __W,  __mmask8 __U, __m128d __A,
+ 			  __m128d __B, int __C, const int __R)
+ {
+   return (__m128d) __builtin_ia32_reducesd_mask_round ((__v2df) __A,
+ 						       (__v2df) __B, __C,
+ 						       (__v2df) __W,
+ 						       __U, __R);
+ }
+ 
+ extern __inline __m128d
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_maskz_reduce_sd (__mmask8 __U, __m128d __A, __m128d __B, int __C)
  {
    return (__m128d) __builtin_ia32_reducesd_mask ((__v2df) __A,
*************** _mm_maskz_reduce_sd (__mmask8 __U, __m12
*** 1187,1192 ****
--- 1209,1226 ----
  						 (__mmask8) __U);
  }
  
+ extern __inline __m128d
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_maskz_reduce_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
+ 			   int __C, const int __R)
+ {
+   return (__m128d) __builtin_ia32_reducesd_mask_round ((__v2df) __A,
+ 						       (__v2df) __B, __C,
+ 						       (__v2df)
+ 						       _mm_setzero_pd (),
+ 						       __U, __R);
+ }
+ 
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_reduce_ss (__m128 __A, __m128 __B, int __C)
*************** _mm_reduce_ss (__m128 __A, __m128 __B, i
*** 1197,1202 ****
--- 1231,1246 ----
  						(__mmask8) -1);
  }
  
+ extern __inline __m128
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_reduce_round_ss (__m128 __A, __m128 __B, int __C, const int __R)
+ {
+   return (__m128) __builtin_ia32_reducess_mask_round ((__v4sf) __A,
+ 						      (__v4sf) __B, __C,
+ 						      (__v4sf)
+ 						      _mm_setzero_ps (),
+ 						      (__mmask8) -1, __R);
+ }
  
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_mask_reduce_ss (__m128 __W,  __mmask
*** 1211,1216 ****
--- 1255,1271 ----
  
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_reduce_round_ss (__m128 __W,  __mmask8 __U, __m128 __A,
+ 			  __m128 __B, int __C, const int __R)
+ {
+   return (__m128) __builtin_ia32_reducess_mask_round ((__v4sf) __A,
+ 						      (__v4sf) __B, __C,
+ 						      (__v4sf) __W,
+ 						      __U, __R);
+ }
+ 
+ extern __inline __m128
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_maskz_reduce_ss (__mmask8 __U, __m128 __A, __m128 __B, int __C)
  {
    return (__m128) __builtin_ia32_reducess_mask ((__v4sf) __A,
*************** _mm_maskz_reduce_ss (__mmask8 __U, __m12
*** 1219,1224 ****
--- 1274,1291 ----
  						(__mmask8) __U);
  }
  
+ extern __inline __m128
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_maskz_reduce_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
+ 			   int __C, const int __R)
+ {
+   return (__m128) __builtin_ia32_reducess_mask_round ((__v4sf) __A,
+ 						      (__v4sf) __B, __C,
+ 						      (__v4sf)
+ 						      _mm_setzero_ps (),
+ 						      __U, __R);
+ }
+ 
  extern __inline __m128d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_range_sd (__m128d __A, __m128d __B, int __C)
*************** _mm512_reduce_pd (__m512d __A, int __B)
*** 1808,1813 ****
--- 1875,1891 ----
  
  extern __inline __m512d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_reduce_round_pd (__m512d __A, int __B, const int __R)
+ {
+   return (__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df) __A,
+ 							  __B,
+ 							  (__v8df)
+ 							  _mm512_setzero_pd (),
+ 							  (__mmask8) -1, __R);
+ }
+ 
+ extern __inline __m512d
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_reduce_pd (__m512d __W, __mmask8 __U, __m512d __A, int __B)
  {
    return (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,
*************** _mm512_mask_reduce_pd (__m512d __W, __mm
*** 1817,1822 ****
--- 1895,1911 ----
  
  extern __inline __m512d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_mask_reduce_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
+ 			     int __B, const int __R)
+ {
+   return (__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df) __A,
+ 							  __B,
+ 							  (__v8df) __W,
+ 							  __U, __R);
+ }
+ 
+ extern __inline __m512d
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_maskz_reduce_pd (__mmask8 __U, __m512d __A, int __B)
  {
    return (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,
*************** _mm512_maskz_reduce_pd (__mmask8 __U, __
*** 1825,1830 ****
--- 1914,1931 ----
  						    (__mmask8) __U);
  }
  
+ extern __inline __m512d
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_maskz_reduce_round_pd (__mmask8 __U, __m512d __A, int __B,
+ 			      const int __R)
+ {
+   return (__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df) __A,
+ 							  __B,
+ 							  (__v8df)
+ 							  _mm512_setzero_pd (),
+ 							  __U, __R);
+ }
+ 
  extern __inline __m512
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_reduce_ps (__m512 __A, int __B)
*************** _mm512_reduce_ps (__m512 __A, int __B)
*** 1837,1842 ****
--- 1938,1954 ----
  
  extern __inline __m512
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_reduce_round_ps (__m512 __A, int __B, const int __R)
+ {
+   return (__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf) __A,
+ 							 __B,
+ 							 (__v16sf)
+ 							 _mm512_setzero_ps (),
+ 							 (__mmask16) -1, __R);
+ }
+ 
+ extern __inline __m512
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_reduce_ps (__m512 __W, __mmask16 __U, __m512 __A, int __B)
  {
    return (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,
*************** _mm512_mask_reduce_ps (__m512 __W, __mma
*** 1846,1851 ****
--- 1958,1974 ----
  
  extern __inline __m512
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_mask_reduce_round_ps (__m512 __W, __mmask16 __U, __m512 __A, int __B,
+ 			     const int __R)
+ {
+   return (__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf) __A,
+ 							 __B,
+ 							 (__v16sf) __W,
+ 							 __U, __R);
+ }
+ 
+ extern __inline __m512
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_maskz_reduce_ps (__mmask16 __U, __m512 __A, int __B)
  {
    return (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,
*************** _mm512_maskz_reduce_ps (__mmask16 __U, _
*** 1854,1859 ****
--- 1977,1994 ----
  						   (__mmask16) __U);
  }
  
+ extern __inline __m512
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_maskz_reduce_round_ps (__mmask16 __U, __m512 __A, int __B,
+ 			      const int __R)
+ {
+   return (__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf) __A,
+ 							 __B,
+ 							 (__v16sf)
+ 							 _mm512_setzero_ps (),
+ 							 __U, __R);
+ }
+ 
  extern __inline __m256
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_extractf32x8_ps (__m512 __A, const int __imm)
*************** _mm512_fpclass_ps_mask (__m512 __A, cons
*** 2440,2465 ****
--- 2575,2624 ----
    ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A),	\
      (int)(B), (__v8df)_mm512_setzero_pd (), (__mmask8)-1))
  
+ #define _mm512_reduce_round_pd(A, B, R)					 \
+   ((__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df)(__m512d)(A),\
+     (int)(B), (__v8df)_mm512_setzero_pd (), (__mmask8)-1, (R)))
+ 
  #define _mm512_mask_reduce_pd(W, U, A, B)				\
    ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A),	\
      (int)(B), (__v8df)(__m512d)(W), (__mmask8)(U)))
  
+ #define _mm512_mask_reduce_round_pd(W, U, A, B, R)			 \
+   ((__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df)(__m512d)(A),\
+     (int)(B), (__v8df)(__m512d)(W), (U), (R)))
+ 
  #define _mm512_maskz_reduce_pd(U, A, B)					\
    ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A),	\
      (int)(B), (__v8df)_mm512_setzero_pd (), (__mmask8)(U)))
  
+ #define _mm512_maskz_reduce_round_pd(U, A, B, R)			 \
+   ((__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df)(__m512d)(A),\
+     (int)(B), (__v8df)_mm512_setzero_pd (), (U), (R)))
+ 
  #define _mm512_reduce_ps(A, B)						\
    ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A),	\
      (int)(B), (__v16sf)_mm512_setzero_ps (), (__mmask16)-1))
  
+ #define _mm512_reduce_round_ps(A, B, R)					\
+   ((__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf)(__m512)(A),\
+     (int)(B), (__v16sf)_mm512_setzero_ps (), (__mmask16)-1, (R)))
+ 
  #define _mm512_mask_reduce_ps(W, U, A, B)				\
    ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A),	\
      (int)(B), (__v16sf)(__m512)(W), (__mmask16)(U)))
  
+ #define _mm512_mask_reduce_round_ps(W, U, A, B, R)			\
+   ((__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf)(__m512)(A),\
+     (int)(B), (__v16sf)(__m512)(W), (U), (R)))
+ 
  #define _mm512_maskz_reduce_ps(U, A, B)					\
    ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A),	\
      (int)(B), (__v16sf)_mm512_setzero_ps (), (__mmask16)(U)))
  
+ #define _mm512_maskz_reduce_round_ps(U, A, B, R)			\
+   ((__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf)(__m512)(A),\
+     (int)(B), (__v16sf)_mm512_setzero_ps (), (__mmask16)(U), (R)))
+ 
  #define _mm512_extractf32x8_ps(X, C)                                    \
    ((__m256) __builtin_ia32_extractf32x8_mask ((__v16sf)(__m512) (X),    \
      (int) (C), (__v8sf)(__m256) _mm256_setzero_ps (), (__mmask8)-1))
*************** _mm512_fpclass_ps_mask (__m512 __A, cons
*** 2679,2684 ****
--- 2838,2857 ----
      (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_setzero_pd (),		\
      (__mmask8)(U)))
  
+ #define _mm_reduce_round_sd(A, B, C, R)				       \
+   ((__m128d) __builtin_ia32_reducesd_round ((__v2df)(__m128d)(A),      \
+     (__v2df)(__m128d)(B), (int)(C), (__mmask8)(U), (int)(R)))
+ 
+ #define _mm_mask_reduce_round_sd(W, U, A, B, C, R)		       \
+   ((__m128d) __builtin_ia32_reducesd_mask_round ((__v2df)(__m128d)(A), \
+     (__v2df)(__m128d)(B), (int)(C), (__v2df)(__m128d)(W),	       \
+     (__mmask8)(U), (int)(R)))
+ 
+ #define _mm_maskz_reduce_round_sd(U, A, B, C, R)		       \
+   ((__m128d) __builtin_ia32_reducesd_mask_round ((__v2df)(__m128d)(A), \
+     (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_setzero_pd (),	       \
+     (__mmask8)(U), (int)(R)))
+ 
  #define _mm_reduce_ss(A, B, C)						\
    ((__m128) __builtin_ia32_reducess_mask ((__v4sf)(__m128)(A),		\
      (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_setzero_ps (),		\
*************** _mm512_fpclass_ps_mask (__m512 __A, cons
*** 2693,2698 ****
--- 2866,2884 ----
      (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_setzero_ps (),		\
      (__mmask8)(U)))
  
+ #define _mm_reduce_round_ss(A, B, C, R)				       \
+   ((__m128) __builtin_ia32_reducess_round ((__v4sf)(__m128)(A),	       \
+     (__v4sf)(__m128)(B), (int)(C), (__mmask8)(U), (int)(R)))
+ 
+ #define _mm_mask_reduce_round_ss(W, U, A, B, C, R)		       \
+   ((__m128) __builtin_ia32_reducess_mask_round ((__v4sf)(__m128)(A),   \
+     (__v4sf)(__m128)(B), (int)(C), (__v4sf)(__m128)(W),		       \
+     (__mmask8)(U), (int)(R)))
+ 
+ #define _mm_maskz_reduce_round_ss(U, A, B, C, R)		       \
+   ((__m128) __builtin_ia32_reducesd_mask_round ((__v4sf)(__m128)(A),   \
+     (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_setzero_ps (),	       \
+     (__mmask8)(U), (int)(R)))
  
  
  #endif
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512erintrin.h gcc-11.1.0/gcc/config/i386/avx512erintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512erintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512erintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** _mm_rcp28_round_sd (__m128d __A, __m128d
*** 168,173 ****
--- 168,197 ----
  						 __R);
  }
  
+ extern __inline __m128d
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_rcp28_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
+ 			 __m128d __B, int __R)
+ {
+   return (__m128d) __builtin_ia32_rcp28sd_mask_round ((__v2df) __B,
+ 						      (__v2df) __A,
+ 						      (__v2df) __W,
+ 						      __U,
+ 						      __R);
+ }
+ 
+ extern __inline __m128d
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_maskz_rcp28_round_sd (__mmask8 __U, __m128d __A, __m128d __B, int __R)
+ {
+   return (__m128d) __builtin_ia32_rcp28sd_mask_round ((__v2df) __B,
+ 						      (__v2df) __A,
+ 						      (__v2df)
+ 						      _mm_setzero_pd (),
+ 						      __U,
+ 						      __R);
+ }
+ 
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_rcp28_round_ss (__m128 __A, __m128 __B, int __R)
*************** _mm_rcp28_round_ss (__m128 __A, __m128 _
*** 177,182 ****
--- 201,230 ----
  						__R);
  }
  
+ extern __inline __m128
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_rcp28_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
+ 			 __m128 __B, int __R)
+ {
+   return (__m128) __builtin_ia32_rcp28ss_mask_round ((__v4sf) __B,
+ 						     (__v4sf) __A,
+ 						     (__v4sf) __W,
+ 						     __U,
+ 						     __R);
+ }
+ 
+ extern __inline __m128
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_maskz_rcp28_round_ss (__mmask8 __U, __m128 __A, __m128 __B, int __R)
+ {
+   return (__m128) __builtin_ia32_rcp28ss_mask_round ((__v4sf) __B,
+ 						     (__v4sf) __A,
+ 						     (__v4sf)
+ 						     _mm_setzero_ps (),
+ 						     __U,
+ 						     __R);
+ }
+ 
  extern __inline __m512d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_rsqrt28_round_pd (__m512d __A, int __R)
*************** _mm_rsqrt28_round_sd (__m128d __A, __m12
*** 242,247 ****
--- 290,319 ----
  						   __R);
  }
  
+ extern __inline __m128d
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_rsqrt28_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
+ 			   __m128d __B, int __R)
+ {
+   return (__m128d) __builtin_ia32_rsqrt28sd_mask_round ((__v2df) __B,
+ 							(__v2df) __A,
+ 							(__v2df) __W,
+ 							__U,
+ 							__R);
+ }
+ 
+ extern __inline __m128d
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_maskz_rsqrt28_round_sd (__mmask8 __U, __m128d __A, __m128d __B, int __R)
+ {
+   return (__m128d) __builtin_ia32_rsqrt28sd_mask_round ((__v2df) __B,
+ 							(__v2df) __A,
+ 							(__v2df)
+ 							_mm_setzero_pd (),
+ 							__U,
+ 							__R);
+ }
+ 
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_rsqrt28_round_ss (__m128 __A, __m128 __B, int __R)
*************** _mm_rsqrt28_round_ss (__m128 __A, __m128
*** 251,256 ****
--- 323,352 ----
  						  __R);
  }
  
+ extern __inline __m128
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_rsqrt28_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
+ 			   __m128 __B, int __R)
+ {
+   return (__m128) __builtin_ia32_rsqrt28ss_mask_round ((__v4sf) __B,
+ 						       (__v4sf) __A,
+ 						       (__v4sf) __W,
+ 						       __U,
+ 						       __R);
+ }
+ 
+ extern __inline __m128
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_maskz_rsqrt28_round_ss (__mmask8 __U, __m128 __A, __m128 __B, int __R)
+ {
+   return (__m128) __builtin_ia32_rsqrt28ss_mask_round ((__v4sf) __B,
+ 						       (__v4sf) __A,
+ 						       (__v4sf)
+ 						       _mm_setzero_ps (),
+ 						       __U,
+ 						       __R);
+ }
+ 
  #else
  #define _mm512_exp2a23_round_pd(A, C)            \
      __builtin_ia32_exp2pd_mask(A, (__v8df)_mm512_setzero_pd(), -1, C)
*************** _mm_rsqrt28_round_ss (__m128 __A, __m128
*** 309,325 ****
--- 405,473 ----
  #define _mm_rcp28_round_sd(A, B, R)	\
      __builtin_ia32_rcp28sd_round(A, B, R)
  
+ #define _mm_mask_rcp28_round_sd(W, U, A, B, R)	\
+     __builtin_ia32_rcp28sd_mask_round ((A), (B), (W), (U), (R))
+ 
+ #define _mm_maskz_rcp28_round_sd(U, A, B, R)	\
+     __builtin_ia32_rcp28sd_mask_round ((A), (B), (__v2df) _mm_setzero_pd (), \
+ 				       (U), (R))
+ 
  #define _mm_rcp28_round_ss(A, B, R)	\
      __builtin_ia32_rcp28ss_round(A, B, R)
  
+ #define _mm_mask_rcp28_round_ss(W, U, A, B, R)	\
+     __builtin_ia32_rcp28ss_mask_round ((A), (B), (W), (U), (R))
+ 
+ #define _mm_maskz_rcp28_round_ss(U, A, B, R)	\
+     __builtin_ia32_rcp28ss_mask_round ((A), (B), (__v4sf) _mm_setzero_ps (), \
+ 				       (U), (R))
+ 
  #define _mm_rsqrt28_round_sd(A, B, R)	\
      __builtin_ia32_rsqrt28sd_round(A, B, R)
  
+ #define _mm_mask_rsqrt28_round_sd(W, U, A, B, R)	\
+     __builtin_ia32_rsqrt28sd_mask_round ((A), (B), (W), (U), (R))
+ 
+ #define _mm_maskz_rsqrt28_round_sd(U, A, B, R)	\
+     __builtin_ia32_rsqrt28sd_mask_round ((A), (B), (__v2df) _mm_setzero_pd (),\
+ 					 (U), (R))
+ 
  #define _mm_rsqrt28_round_ss(A, B, R)	\
      __builtin_ia32_rsqrt28ss_round(A, B, R)
  
+ #define _mm_mask_rsqrt28_round_ss(W, U, A, B, R)	\
+     __builtin_ia32_rsqrt28ss_mask_round ((A), (B), (W), (U), (R))
+ 
+ #define _mm_maskz_rsqrt28_round_ss(U, A, B, R)	\
+     __builtin_ia32_rsqrt28ss_mask_round ((A), (B), (__v4sf) _mm_setzero_ps (),\
+ 					 (U), (R))
+ 
  #endif
  
+ #define _mm_mask_rcp28_sd(W, U, A, B)\
+     _mm_mask_rcp28_round_sd ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
+ #define _mm_maskz_rcp28_sd(U, A, B)\
+     _mm_maskz_rcp28_round_sd ((U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
+ #define _mm_mask_rcp28_ss(W, U, A, B)\
+     _mm_mask_rcp28_round_ss ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
+ #define _mm_maskz_rcp28_ss(U, A, B)\
+     _mm_maskz_rcp28_round_ss ((U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
+ #define _mm_mask_rsqrt28_sd(W, U, A, B)\
+     _mm_mask_rsqrt28_round_sd ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
+ #define _mm_maskz_rsqrt28_sd(U, A, B)\
+     _mm_maskz_rsqrt28_round_sd ((U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
+ #define _mm_mask_rsqrt28_ss(W, U, A, B)\
+     _mm_mask_rsqrt28_round_ss ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
+ #define _mm_maskz_rsqrt28_ss(U, A, B)\
+     _mm_maskz_rsqrt28_round_ss ((U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
  #define _mm512_exp2a23_pd(A)                    \
      _mm512_exp2a23_round_pd(A, _MM_FROUND_CUR_DIRECTION)
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512fintrin.h gcc-11.1.0/gcc/config/i386/avx512fintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512fintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512fintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** extern __inline __m512d
*** 239,260 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_set1_pd (double __A)
  {
!   return (__m512d) __builtin_ia32_broadcastsd512 (__extension__
! 						  (__v2df) { __A, },
! 						  (__v8df)
! 						  _mm512_undefined_pd (),
! 						  (__mmask8) -1);
  }
  
  extern __inline __m512
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_set1_ps (float __A)
  {
!   return (__m512) __builtin_ia32_broadcastss512 (__extension__
! 						 (__v4sf) { __A, },
! 						 (__v16sf)
! 						 _mm512_undefined_ps (),
! 						 (__mmask16) -1);
  }
  
  /* Create the vector [A B C D A B C D A B C D A B C D].  */
--- 239,255 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_set1_pd (double __A)
  {
!   return __extension__ (__m512d)(__v8df)
!     { __A, __A, __A, __A, __A, __A, __A, __A };
  }
  
  extern __inline __m512
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_set1_ps (float __A)
  {
!   return __extension__ (__m512)(__v16sf)
!     { __A, __A, __A, __A, __A, __A, __A, __A,
!       __A, __A, __A, __A, __A, __A, __A, __A };
  }
  
  /* Create the vector [A B C D A B C D A B C D A B C D].  */
*************** _mm_maskz_sqrt_round_ss (__mmask8 __U, _
*** 2129,2134 ****
--- 2124,2141 ----
  	(__v4sf) _mm_setzero_ps (), U, C)
  #endif
  
+ #define _mm_mask_sqrt_sd(W, U, A, B) \
+     _mm_mask_sqrt_round_sd ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
+ #define _mm_maskz_sqrt_sd(U, A, B) \
+     _mm_maskz_sqrt_round_sd ((U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
+ #define _mm_mask_sqrt_ss(W, U, A, B) \
+     _mm_mask_sqrt_round_ss ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
+ #define _mm_maskz_sqrt_ss(U, A, B) \
+     _mm_maskz_sqrt_round_ss ((U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_cvtepi8_epi32 (__m128i __A)
*************** _mm_maskz_scalef_round_ss (__mmask8 __U,
*** 3264,3269 ****
--- 3271,3288 ----
  	(__v4sf)_mm_setzero_ps (), -1, C)
  #endif
  
+ #define _mm_mask_scalef_sd(W, U, A, B) \
+     _mm_mask_scalef_round_sd ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
+ #define _mm_maskz_scalef_sd(U, A, B) \
+     _mm_maskz_scalef_round_sd ((U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
+ #define _mm_mask_scalef_ss(W, U, A, B) \
+     _mm_mask_scalef_round_ss ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
+ #define _mm_maskz_scalef_ss(U, A, B) \
+     _mm_maskz_scalef_round_ss ((U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
  #ifdef __OPTIMIZE__
  extern __inline __m512d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
*************** extern __inline __m512i
*** 4072,4081 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_set1_epi32 (int __A)
  {
!   return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
! 							   (__v16si)
! 							   _mm512_undefined_epi32 (),
! 							   (__mmask16)(-1));
  }
  
  extern __inline __m512i
--- 4091,4099 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_set1_epi32 (int __A)
  {
!   return (__m512i)(__v16si)
!     { __A, __A, __A, __A, __A, __A, __A, __A,
!       __A, __A, __A, __A, __A, __A, __A, __A };
  }
  
  extern __inline __m512i
*************** extern __inline __m512i
*** 4128,4137 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_set1_epi64 (long long __A)
  {
!   return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
! 							   (__v8di)
! 							   _mm512_undefined_epi32 (),
! 							   (__mmask8)(-1));
  }
  
  extern __inline __m512i
--- 4146,4152 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_set1_epi64 (long long __A)
  {
!   return (__m512i)(__v8di) { __A, __A, __A, __A, __A, __A, __A, __A };
  }
  
  extern __inline __m512i
*************** extern __inline void
*** 5613,5619 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
  {
!   __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
  }
  
  extern __inline __m128i
--- 5628,5635 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
  {
!   __builtin_ia32_pmovqb512mem_mask ((unsigned long long *) __P,
! 				    (__v8di) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 5648,5654 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
  {
!   __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
  }
  
  extern __inline __m128i
--- 5664,5670 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
  {
!   __builtin_ia32_pmovsqb512mem_mask ((unsigned long long *) __P, (__v8di) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 5683,5689 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
  {
!   __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
  }
  
  extern __inline __m128i
--- 5699,5705 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
  {
!   __builtin_ia32_pmovusqb512mem_mask ((unsigned long long *) __P, (__v8di) __A, __M);
  }
  
  extern __inline __m128i
*************** _mm_cvt_roundsd_ss (__m128 __A, __m128d
*** 8629,8634 ****
--- 8645,8674 ----
  						 __R);
  }
  
+ extern __inline __m128
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cvt_roundsd_ss (__m128 __W, __mmask8 __U, __m128 __A,
+ 			 __m128d __B, const int __R)
+ {
+   return (__m128) __builtin_ia32_cvtsd2ss_mask_round ((__v4sf) __A,
+ 						      (__v2df) __B,
+ 						      (__v4sf) __W,
+ 						      __U,
+ 						      __R);
+ }
+ 
+ extern __inline __m128
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_maskz_cvt_roundsd_ss (__mmask8 __U, __m128 __A,
+ 			 __m128d __B, const int __R)
+ {
+   return (__m128) __builtin_ia32_cvtsd2ss_mask_round ((__v4sf) __A,
+ 						      (__v2df) __B,
+ 						      _mm_setzero_ps (),
+ 						      __U,
+ 						      __R);
+ }
+ 
  extern __inline __m128d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvt_roundss_sd (__m128d __A, __m128 __B, const int __R)
*************** _mm_cvt_roundss_sd (__m128d __A, __m128
*** 8637,8642 ****
--- 8677,8706 ----
  						  (__v4sf) __B,
  						  __R);
  }
+ 
+ extern __inline __m128d
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cvt_roundss_sd (__m128d __W, __mmask8 __U, __m128d __A,
+ 			 __m128 __B, const int __R)
+ {
+   return (__m128d) __builtin_ia32_cvtss2sd_mask_round ((__v2df) __A,
+ 						       (__v4sf) __B,
+ 						       (__v2df) __W,
+ 						       __U,
+ 						       __R);
+ }
+ 
+ extern __inline __m128d
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_maskz_cvt_roundss_sd (__mmask8 __U, __m128d __A,
+ 			  __m128 __B, const int __R)
+ {
+   return (__m128d) __builtin_ia32_cvtss2sd_mask_round ((__v2df) __A,
+ 						       (__v4sf) __B,
+ 						       _mm_setzero_pd (),
+ 						       __U,
+ 						       __R);
+ }
  #else
  #define _mm512_cvt_roundpd_ps(A, B)		 \
      (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)_mm256_undefined_ps(), -1, B)
*************** _mm_cvt_roundss_sd (__m128d __A, __m128
*** 8650,8659 ****
--- 8714,8750 ----
  #define _mm_cvt_roundsd_ss(A, B, C)		 \
      (__m128)__builtin_ia32_cvtsd2ss_round(A, B, C)
  
+ #define _mm_mask_cvt_roundsd_ss(W, U, A, B, C)	\
+     (__m128)__builtin_ia32_cvtsd2ss_mask_round ((A), (B), (W), (U), (C))
+ 
+ #define _mm_maskz_cvt_roundsd_ss(U, A, B, C)	\
+     (__m128)__builtin_ia32_cvtsd2ss_mask_round ((A), (B), _mm_setzero_ps (), \
+ 						(U), (C))
+ 
  #define _mm_cvt_roundss_sd(A, B, C)		 \
      (__m128d)__builtin_ia32_cvtss2sd_round(A, B, C)
+ 
+ #define _mm_mask_cvt_roundss_sd(W, U, A, B, C)	\
+     (__m128d)__builtin_ia32_cvtss2sd_mask_round ((A), (B), (W), (U), (C))
+ 
+ #define _mm_maskz_cvt_roundss_sd(U, A, B, C)	\
+     (__m128d)__builtin_ia32_cvtss2sd_mask_round ((A), (B), _mm_setzero_pd (), \
+ 						 (U), (C))
+ 
  #endif
  
+ #define _mm_mask_cvtss_sd(W, U, A, B) \
+     _mm_mask_cvt_roundss_sd ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
+ #define _mm_maskz_cvtss_sd(U, A, B) \
+     _mm_maskz_cvt_roundss_sd ((U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
+ #define _mm_mask_cvtsd_ss(W, U, A, B) \
+     _mm_mask_cvt_roundsd_ss ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
+ #define _mm_maskz_cvtsd_ss(U, A, B) \
+     _mm_maskz_cvt_roundsd_ss ((U), (A), (B), _MM_FROUND_CUR_DIRECTION)
+ 
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_stream_si512 (__m512i * __P, __m512i __A)
*************** _mm_cvttss_i64 (__m128 __A)
*** 14273,14278 ****
--- 14364,14377 ----
  }
  #endif /* __x86_64__ */
  
+ extern __inline int
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_cvtsi512_si32 (__m512i __A)
+ {
+   __v16si __B = (__v16si) __A;
+   return __B[0];
+ }
+ 
  extern __inline unsigned
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtss_u32 (__m128 __A)
*************** _mm_cvttss_i32 (__m128 __A)
*** 14297,14302 ****
--- 14396,14429 ----
  					    _MM_FROUND_CUR_DIRECTION);
  }
  
+ extern __inline int
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cvtsd_i32 (__m128d __A)
+ {
+   return (int) __builtin_ia32_cvtsd2si ((__v2df) __A);
+ }
+ 
+ extern __inline int
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cvtss_i32 (__m128 __A)
+ {
+   return (int) __builtin_ia32_cvtss2si ((__v4sf) __A);
+ }
+ 
+ extern __inline __m128d
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cvti32_sd (__m128d __A, int __B)
+ {
+   return (__m128d) __builtin_ia32_cvtsi2sd ((__v2df) __A, __B);
+ }
+ 
+ extern __inline __m128
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cvti32_ss (__m128 __A, int __B)
+ {
+   return (__m128) __builtin_ia32_cvtsi2ss ((__v4sf) __A, __B);
+ }
+ 
  #ifdef __x86_64__
  extern __inline unsigned long long
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_cvttsd_i64 (__m128d __A)
*** 14323,14328 ****
--- 14450,14483 ----
    return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
  						  _MM_FROUND_CUR_DIRECTION);
  }
+ 
+ extern __inline long long
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cvtsd_i64 (__m128d __A)
+ {
+   return (long long) __builtin_ia32_cvtsd2si64 ((__v2df) __A);
+ }
+ 
+ extern __inline long long
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cvtss_i64 (__m128 __A)
+ {
+   return (long long) __builtin_ia32_cvtss2si64 ((__v4sf) __A);
+ }
+ 
+ extern __inline __m128d
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cvti64_sd (__m128d __A, long long __B)
+ {
+   return (__m128d) __builtin_ia32_cvtsi642sd ((__v2df) __A, __B);
+ }
+ 
+ extern __inline __m128
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cvti64_ss (__m128 __A, long long __B)
+ {
+   return (__m128) __builtin_ia32_cvtsi642ss ((__v4sf) __A, __B);
+ }
  #endif /* __x86_64__ */
  
  extern __inline unsigned
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512ifmaintrin.h gcc-11.1.0/gcc/config/i386/avx512ifmaintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512ifmaintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512ifmaintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512ifmavlintrin.h gcc-11.1.0/gcc/config/i386/avx512ifmavlintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512ifmavlintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512ifmavlintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512pfintrin.h gcc-11.1.0/gcc/config/i386/avx512pfintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512pfintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512pfintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512vbmi2intrin.h gcc-11.1.0/gcc/config/i386/avx512vbmi2intrin.h
*** gcc-10.3.0/gcc/config/i386/avx512vbmi2intrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512vbmi2intrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512vbmi2vlintrin.h gcc-11.1.0/gcc/config/i386/avx512vbmi2vlintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512vbmi2vlintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512vbmi2vlintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512vbmiintrin.h gcc-11.1.0/gcc/config/i386/avx512vbmiintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512vbmiintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512vbmiintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512vbmivlintrin.h gcc-11.1.0/gcc/config/i386/avx512vbmivlintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512vbmivlintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512vbmivlintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512vlbwintrin.h gcc-11.1.0/gcc/config/i386/avx512vlbwintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512vlbwintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512vlbwintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 34,39 ****
--- 34,48 ----
  #define __DISABLE_AVX512VLBW__
  #endif /* __AVX512VLBW__ */
  
+ /* Internal data types for implementing the intrinsics.  */
+ typedef short __v16hi_u __attribute__ ((__vector_size__ (32),	\
+ 					__may_alias__, __aligned__ (1)));
+ typedef short __v8hi_u __attribute__ ((__vector_size__ (16),	\
+ 				       __may_alias__, __aligned__ (1)));
+ typedef char __v32qi_u __attribute__ ((__vector_size__ (32),	\
+ 				       __may_alias__, __aligned__ (1)));
+ typedef char __v16qi_u __attribute__ ((__vector_size__ (16),	\
+ 				       __may_alias__, __aligned__ (1)));
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_maskz_mov_epi8 (__mmask16 __U, __m12
*** 75,80 ****
--- 84,96 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_storeu_epi8 (void *__P, __m256i __A)
+ {
+   *(__v32qi_u *) __P = (__v32qi_u) __A;
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_storeu_epi8 (void *__P, __mmask32 __U, __m256i __A)
  {
    __builtin_ia32_storedquqi256_mask ((char *) __P,
*************** _mm256_mask_storeu_epi8 (void *__P, __mm
*** 84,89 ****
--- 100,112 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_storeu_epi8 (void *__P, __m128i __A)
+ {
+   *(__v16qi_u *) __P = (__v16qi_u) __A;
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_storeu_epi8 (void *__P, __mmask16 __U, __m128i __A)
  {
    __builtin_ia32_storedquqi128_mask ((char *) __P,
*************** _mm_mask_storeu_epi8 (void *__P, __mmask
*** 93,98 ****
--- 116,128 ----
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_loadu_epi16 (void const *__P)
+ {
+   return (__m256i) (*(__v16hi_u *) __P);
+ }
+ 
+ extern __inline __m256i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_loadu_epi16 (__m256i __W, __mmask16 __U, void const *__P)
  {
    return (__m256i) __builtin_ia32_loaddquhi256_mask ((const short *) __P,
*************** _mm256_maskz_loadu_epi16 (__mmask16 __U,
*** 112,117 ****
--- 142,154 ----
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_loadu_epi16 (void const *__P)
+ {
+   return (__m128i) (*(__v8hi_u *) __P);
+ }
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_loadu_epi16 (__m128i __W, __mmask8 __U, void const *__P)
  {
    return (__m128i) __builtin_ia32_loaddquhi128_mask ((const short *) __P,
*************** _mm_maskz_mov_epi16 (__mmask8 __U, __m12
*** 170,175 ****
--- 207,219 ----
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_loadu_epi8 (void const *__P)
+ {
+   return (__m256i) (*(__v32qi_u *) __P);
+ }
+ 
+ extern __inline __m256i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_loadu_epi8 (__m256i __W, __mmask32 __U, void const *__P)
  {
    return (__m256i) __builtin_ia32_loaddquqi256_mask ((const char *) __P,
*************** _mm256_maskz_loadu_epi8 (__mmask32 __U,
*** 189,194 ****
--- 233,245 ----
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_loadu_epi8 (void const *__P)
+ {
+   return (__m128i) (*(__v16qi_u *) __P);
+ }
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_loadu_epi8 (__m128i __W, __mmask16 __U, void const *__P)
  {
    return (__m128i) __builtin_ia32_loaddquqi128_mask ((const char *) __P,
*************** extern __inline void
*** 255,261 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M,__m128i __A)
  {
!   __builtin_ia32_pmovswb128mem_mask ((__v8qi *) __P , (__v8hi) __A, __M);
  }
  
  extern __inline __m128i
--- 306,312 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M,__m128i __A)
  {
!   __builtin_ia32_pmovswb128mem_mask ((unsigned long long *) __P , (__v8hi) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 325,331 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M,__m128i __A)
  {
!   __builtin_ia32_pmovuswb128mem_mask ((__v8qi *) __P , (__v8hi) __A, __M);
  }
  
  extern __inline __m128i
--- 376,382 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M,__m128i __A)
  {
!   __builtin_ia32_pmovuswb128mem_mask ((unsigned long long *) __P , (__v8hi) __A, __M);
  }
  
  extern __inline __m128i
*************** _mm256_cmple_epu16_mask (__m256i __X, __
*** 3710,3715 ****
--- 3761,3773 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_storeu_epi16 (void *__P, __m256i __A)
+ {
+   *(__v16hi_u *) __P = (__v16hi_u) __A;
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_storeu_epi16 (void *__P, __mmask16 __U, __m256i __A)
  {
    __builtin_ia32_storedquhi256_mask ((short *) __P,
*************** _mm256_mask_storeu_epi16 (void *__P, __m
*** 3719,3724 ****
--- 3777,3789 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_storeu_epi16 (void *__P, __m128i __A)
+ {
+   *(__v8hi_u *) __P = (__v8hi_u) __A;
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_storeu_epi16 (void *__P, __mmask8 __U, __m128i __A)
  {
    __builtin_ia32_storedquhi128_mask ((short *) __P,
*************** extern __inline void
*** 4048,4054 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M,__m128i __A)
  {
!   __builtin_ia32_pmovwb128mem_mask ((__v8qi *) __P , (__v8hi) __A, __M);
  }
  
  extern __inline __m128i
--- 4113,4119 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M,__m128i __A)
  {
!   __builtin_ia32_pmovwb128mem_mask ((unsigned long long *) __P , (__v8hi) __A, __M);
  }
  
  extern __inline __m128i
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512vldqintrin.h gcc-11.1.0/gcc/config/i386/avx512vldqintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512vldqintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512vldqintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512vlintrin.h gcc-11.1.0/gcc/config/i386/avx512vlintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512vlintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512vlintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2014-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2014-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 36,41 ****
--- 36,49 ----
  
  /* Internal data types for implementing the intrinsics.  */
  typedef unsigned int __mmask32;
+ typedef int __v4si_u __attribute__ ((__vector_size__ (16),	\
+ 				     __may_alias__, __aligned__ (1)));
+ typedef int __v8si_u __attribute__ ((__vector_size__ (32),	\
+ 				     __may_alias__, __aligned__ (1)));
+ typedef long long __v2di_u __attribute__ ((__vector_size__ (16),	\
+ 					   __may_alias__, __aligned__ (1)));
+ typedef long long __v4di_u __attribute__ ((__vector_size__ (32),	\
+ 					   __may_alias__, __aligned__ (1)));
  
  extern __inline __m256d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_maskz_mov_epi64 (__mmask8 __U, __m12
*** 265,270 ****
--- 273,285 ----
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_load_epi64 (void const *__P)
+ {
+   return (__m256i) (*(__v4di *) __P);
+ }
+ 
+ extern __inline __m256i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_load_epi64 (__m256i __W, __mmask8 __U, void const *__P)
  {
    return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
*************** _mm256_maskz_load_epi64 (__mmask8 __U, v
*** 286,291 ****
--- 301,313 ----
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_load_epi64 (void const *__P)
+ {
+   return (__m128i) (*(__v2di *) __P);
+ }
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_load_epi64 (__m128i __W, __mmask8 __U, void const *__P)
  {
    return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
*************** _mm_maskz_mov_epi32 (__mmask8 __U, __m12
*** 363,368 ****
--- 385,397 ----
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_load_epi32 (void const *__P)
+ {
+   return (__m256i) (*(__v8si *) __P);
+ }
+ 
+ extern __inline __m256i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_load_epi32 (__m256i __W, __mmask8 __U, void const *__P)
  {
    return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
*************** _mm256_maskz_load_epi32 (__mmask8 __U, v
*** 384,389 ****
--- 413,425 ----
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_load_epi32 (void const *__P)
+ {
+   return (__m128i) (*(__v4si *) __P);
+ }
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_load_epi32 (__m128i __W, __mmask8 __U, void const *__P)
  {
    return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
*************** _mm_maskz_load_epi32 (__mmask8 __U, void
*** 405,410 ****
--- 441,453 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_store_epi32 (void *__P, __m256i __A)
+ {
+   *(__v8si *) __P = (__v8si) __A;
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_store_epi32 (void *__P, __mmask8 __U, __m256i __A)
  {
    __builtin_ia32_movdqa32store256_mask ((__v8si *) __P,
*************** _mm256_mask_store_epi32 (void *__P, __mm
*** 414,419 ****
--- 457,469 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_store_epi32 (void *__P, __m128i __A)
+ {
+   *(__v4si *) __P = (__v4si) __A;
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_store_epi32 (void *__P, __mmask8 __U, __m128i __A)
  {
    __builtin_ia32_movdqa32store128_mask ((__v4si *) __P,
*************** _mm_mask_storeu_ps (void *__P, __mmask8
*** 719,724 ****
--- 769,781 ----
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_loadu_epi64 (void const *__P)
+ {
+   return (__m256i) (*(__v4di_u *) __P);
+ }
+ 
+ extern __inline __m256i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_loadu_epi64 (__m256i __W, __mmask8 __U, void const *__P)
  {
    return (__m256i) __builtin_ia32_loaddqudi256_mask ((const long long *) __P,
*************** _mm256_maskz_loadu_epi64 (__mmask8 __U,
*** 738,743 ****
--- 795,807 ----
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_loadu_epi64 (void const *__P)
+ {
+   return (__m128i) (*(__v2di_u *) __P);
+ }
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_loadu_epi64 (__m128i __W, __mmask8 __U, void const *__P)
  {
    return (__m128i) __builtin_ia32_loaddqudi128_mask ((const long long *) __P,
*************** _mm_mask_storeu_epi64 (void *__P, __mmas
*** 789,794 ****
--- 853,865 ----
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_loadu_epi32 (void const *__P)
+ {
+   return (__m256i) (*(__v8si_u *) __P);
+ }
+ 
+ extern __inline __m256i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_loadu_epi32 (__m256i __W, __mmask8 __U, void const *__P)
  {
    return (__m256i) __builtin_ia32_loaddqusi256_mask ((const int *) __P,
*************** _mm256_maskz_loadu_epi32 (__mmask8 __U,
*** 808,813 ****
--- 879,891 ----
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_loadu_epi32 (void const *__P)
+ {
+   return (__m128i) (*(__v4si_u *) __P);
+ }
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_loadu_epi32 (__m128i __W, __mmask8 __U, void const *__P)
  {
    return (__m128i) __builtin_ia32_loaddqusi128_mask ((const int *) __P,
*************** extern __inline void
*** 1485,1491 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
  }
  
  extern __inline __m128i
--- 1563,1569 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovdb128mem_mask ((unsigned int *) __P, (__v4si) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 1528,1534 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
  }
  
  extern __inline __m128i
--- 1606,1612 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovdb256mem_mask ((unsigned long long *) __P, (__v8si) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 1555,1561 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovsdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
  }
  
  extern __inline __m128i
--- 1633,1639 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovsdb128mem_mask ((unsigned int *) __P, (__v4si) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 1590,1596 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovsdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
  }
  
  extern __inline __m128i
--- 1668,1674 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovsdb256mem_mask ((unsigned long long *) __P, (__v8si) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 1625,1631 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovusdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
  }
  
  extern __inline __m128i
--- 1703,1709 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovusdb128mem_mask ((unsigned int *) __P, (__v4si) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 1661,1667 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovusdb256mem_mask ((__v16qi*) __P, (__v8si) __A, __M);
  }
  
  extern __inline __m128i
--- 1739,1745 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovusdb256mem_mask ((unsigned long long *) __P, (__v8si) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 1697,1703 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
  }
  
  extern __inline __m128i
--- 1775,1781 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovdw128mem_mask ((unsigned long long *) __P, (__v4si) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 1767,1773 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovsdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
  }
  
  extern __inline __m128i
--- 1845,1851 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovsdw128mem_mask ((unsigned long long *) __P, (__v4si) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 1838,1844 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovusdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
  }
  
  extern __inline __m128i
--- 1916,1922 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovusdw128mem_mask ((unsigned long long *) __P, (__v4si) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 1908,1914 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
  }
  
  extern __inline __m128i
--- 1986,1992 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovqb128mem_mask ((unsigned short *) __P, (__v2di) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 1943,1949 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
  }
  
  extern __inline __m128i
--- 2021,2027 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovqb256mem_mask ((unsigned int *) __P, (__v4di) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 1978,1984 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovsqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
  }
  
  extern __inline __m128i
--- 2056,2062 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovsqb128mem_mask ((unsigned short *) __P, (__v2di) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 2013,2019 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovsqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
  }
  
  extern __inline __m128i
--- 2091,2097 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovsqb256mem_mask ((unsigned int *) __P, (__v4di) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 2048,2054 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovusqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
  }
  
  extern __inline __m128i
--- 2126,2132 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovusqb128mem_mask ((unsigned short *) __P, (__v2di) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 2084,2090 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovusqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
  }
  
  extern __inline __m128i
--- 2162,2168 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovusqb256mem_mask ((unsigned int *) __P, (__v4di) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 2120,2126 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
  }
  
  extern __inline __m128i
--- 2198,2204 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovqw128mem_mask ((unsigned int *) __P, (__v2di) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 2156,2162 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
  }
  
  extern __inline __m128i
--- 2234,2240 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovqw256mem_mask ((unsigned long long *) __P, (__v4di) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 2191,2197 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovsqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
  }
  
  extern __inline __m128i
--- 2269,2275 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovsqw128mem_mask ((unsigned int *) __P, (__v2di) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 2226,2232 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovsqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
  }
  
  extern __inline __m128i
--- 2304,2310 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovsqw256mem_mask ((unsigned long long *) __P, (__v4di) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 2261,2267 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovusqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
  }
  
  extern __inline __m128i
--- 2339,2345 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovusqw128mem_mask ((unsigned int *) __P, (__v2di) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 2296,2302 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovusqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
  }
  
  extern __inline __m128i
--- 2374,2380 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
  {
!   __builtin_ia32_pmovusqw256mem_mask ((unsigned long long *) __P, (__v4di) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 2331,2337 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
  }
  
  extern __inline __m128i
--- 2409,2416 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovqd128mem_mask ((unsigned long long *) __P,
! 				    (__v2di) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 2401,2407 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovsqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
  }
  
  extern __inline __m128i
--- 2480,2486 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovsqd128mem_mask ((unsigned long long *) __P, (__v2di) __A, __M);
  }
  
  extern __inline __m128i
*************** extern __inline void
*** 2472,2478 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovusqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
  }
  
  extern __inline __m128i
--- 2551,2557 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
  {
!   __builtin_ia32_pmovusqd128mem_mask ((unsigned long long *) __P, (__v2di) __A, __M);
  }
  
  extern __inline __m128i
*************** _mm256_permutex_pd (__m256d __X, const i
*** 13729,13734 ****
--- 13808,13820 ----
  #endif
  
  #define _mm256_permutexvar_ps(A, B)	_mm256_permutevar8x32_ps ((B), (A))
+ #define _mm256_mask_cvt_roundps_ph(A, B, C, D)	\
+   _mm256_mask_cvtps_ph ((A), (B), (C), (D))
+ #define _mm256_maskz_cvt_roundps_ph(A, B, C)	\
+   _mm256_maskz_cvtps_ph ((A), (B), (C))
+ #define _mm_mask_cvt_roundps_ph(A, B, C, D)	\
+   _mm_mask_cvtps_ph ((A), (B), (C), (D))
+ #define _mm_maskz_cvt_roundps_ph(A, B, C) _mm_maskz_cvtps_ph ((A), (B), (C))
  
  #ifdef __DISABLE_AVX512VL__
  #undef __DISABLE_AVX512VL__
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512vnniintrin.h gcc-11.1.0/gcc/config/i386/avx512vnniintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512vnniintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512vnniintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512vnnivlintrin.h gcc-11.1.0/gcc/config/i386/avx512vnnivlintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512vnnivlintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512vnnivlintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 34,46 ****
  #define __DISABLE_AVX512VNNIVL__
  #endif /* __AVX512VNNIVL__ */
  
! extern __inline __m256i
! __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_dpbusd_epi32 (__m256i __A, __m256i __B, __m256i __C)
! {
!   return (__m256i) __builtin_ia32_vpdpbusd_v8si ((__v8si)__A, (__v8si) __B,
! 								(__v8si) __C);
! }
  
  extern __inline __m256i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 34,43 ----
  #define __DISABLE_AVX512VNNIVL__
  #endif /* __AVX512VNNIVL__ */
  
! #define _mm256_dpbusd_epi32(A, B, C)				\
!   ((__m256i) __builtin_ia32_vpdpbusd_v8si ((__v8si) (A),	\
! 					   (__v8si) (B),	\
! 					   (__v8si) (C)))
  
  extern __inline __m256i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm256_maskz_dpbusd_epi32 (__mmask8 __A,
*** 58,70 ****
  				(__v8si) __C, (__v8si) __D, (__mmask8)__A);
  }
  
! extern __inline __m128i
! __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm_dpbusd_epi32 (__m128i __A, __m128i __B, __m128i __C)
! {
!   return (__m128i) __builtin_ia32_vpdpbusd_v4si ((__v4si)__A, (__v4si) __B,
! 								(__v4si) __C);
! }
  
  extern __inline __m128i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 55,64 ----
  				(__v8si) __C, (__v8si) __D, (__mmask8)__A);
  }
  
! #define _mm_dpbusd_epi32(A, B, C)				\
!   ((__m128i) __builtin_ia32_vpdpbusd_v4si ((__v4si) (A),	\
! 					   (__v4si) (B),	\
! 					   (__v4si) (C)))
  
  extern __inline __m128i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_maskz_dpbusd_epi32 (__mmask8 __A, __
*** 82,94 ****
  				(__v4si) __C, (__v4si) __D, (__mmask8)__A);
  }
  
! extern __inline __m256i
! __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_dpbusds_epi32 (__m256i __A, __m256i __B, __m256i __C)
! {
!   return (__m256i) __builtin_ia32_vpdpbusds_v8si ((__v8si)__A, (__v8si) __B,
! 								(__v8si) __C);
! }
  
  extern __inline __m256i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 76,85 ----
  				(__v4si) __C, (__v4si) __D, (__mmask8)__A);
  }
  
! #define _mm256_dpbusds_epi32(A, B, C)				\
!   ((__m256i) __builtin_ia32_vpdpbusds_v8si ((__v8si) (A),	\
! 					    (__v8si) (B),	\
! 					    (__v8si) (C)))
  
  extern __inline __m256i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm256_maskz_dpbusds_epi32 (__mmask8 __A
*** 107,119 ****
  				(__v8si) __C, (__v8si) __D, (__mmask8)__A);
  }
  
! extern __inline __m128i
! __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm_dpbusds_epi32 (__m128i __A, __m128i __B, __m128i __C)
! {
!   return (__m128i) __builtin_ia32_vpdpbusds_v4si ((__v4si)__A, (__v4si) __B,
! 								(__v4si) __C);
! }
  
  extern __inline __m128i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 98,107 ----
  				(__v8si) __C, (__v8si) __D, (__mmask8)__A);
  }
  
! #define _mm_dpbusds_epi32(A, B, C)				\
!   ((__m128i) __builtin_ia32_vpdpbusds_v4si ((__v4si) (A),	\
! 					    (__v4si) (B),	\
! 					    (__v4si) (C)))
  
  extern __inline __m128i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_maskz_dpbusds_epi32 (__mmask8 __A, _
*** 131,143 ****
  				(__v4si) __C, (__v4si) __D, (__mmask8)__A);
  }
  
! extern __inline __m256i
! __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_dpwssd_epi32 (__m256i __A, __m256i __B, __m256i __C)
! {
!   return (__m256i) __builtin_ia32_vpdpwssd_v8si ((__v8si)__A, (__v8si) __B,
! 								(__v8si) __C);
! }
  
  extern __inline __m256i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 119,128 ----
  				(__v4si) __C, (__v4si) __D, (__mmask8)__A);
  }
  
! #define _mm256_dpwssd_epi32(A, B, C)				\
!   ((__m256i) __builtin_ia32_vpdpwssd_v8si ((__v8si) (A),	\
! 					   (__v8si) (B),	\
! 					   (__v8si) (C)))
  
  extern __inline __m256i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm256_maskz_dpwssd_epi32 (__mmask8 __A,
*** 155,167 ****
  				(__v8si) __C, (__v8si) __D, (__mmask8)__A);
  }
  
! extern __inline __m128i
! __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm_dpwssd_epi32 (__m128i __A, __m128i __B, __m128i __C)
! {
!   return (__m128i) __builtin_ia32_vpdpwssd_v4si ((__v4si)__A, (__v4si) __B,
! 								(__v4si) __C);
! }
  
  extern __inline __m128i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 140,149 ----
  				(__v8si) __C, (__v8si) __D, (__mmask8)__A);
  }
  
! #define _mm_dpwssd_epi32(A, B, C)				\
!   ((__m128i) __builtin_ia32_vpdpwssd_v4si ((__v4si) (A),	\
! 					   (__v4si) (B),	\
! 					   (__v4si) (C)))
  
  extern __inline __m128i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_maskz_dpwssd_epi32 (__mmask8 __A, __
*** 179,191 ****
  				(__v4si) __C, (__v4si) __D, (__mmask8)__A);
  }
  
! extern __inline __m256i
! __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_dpwssds_epi32 (__m256i __A, __m256i __B, __m256i __C)
! {
!   return (__m256i) __builtin_ia32_vpdpwssds_v8si ((__v8si)__A, (__v8si) __B,
! 								(__v8si) __C);
! }
  
  extern __inline __m256i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 161,170 ----
  				(__v4si) __C, (__v4si) __D, (__mmask8)__A);
  }
  
! #define _mm256_dpwssds_epi32(A, B, C)				\
!   ((__m256i) __builtin_ia32_vpdpwssds_v8si ((__v8si) (A),	\
! 					    (__v8si) (B),	\
! 					    (__v8si) (C)))
  
  extern __inline __m256i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm256_maskz_dpwssds_epi32 (__mmask8 __A
*** 204,216 ****
  				(__v8si) __C, (__v8si) __D, (__mmask8)__A);
  }
  
! extern __inline __m128i
! __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm_dpwssds_epi32 (__m128i __A, __m128i __B, __m128i __C)
! {
!   return (__m128i) __builtin_ia32_vpdpwssds_v4si ((__v4si)__A, (__v4si) __B,
! 								(__v4si) __C);
! }
  
  extern __inline __m128i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 183,192 ----
  				(__v8si) __C, (__v8si) __D, (__mmask8)__A);
  }
  
! #define _mm_dpwssds_epi32(A, B, C)				\
!   ((__m128i) __builtin_ia32_vpdpwssds_v4si ((__v4si) (A),	\
! 					    (__v4si) (B),	\
! 					    (__v4si) (C)))
  
  extern __inline __m128i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512vp2intersectintrin.h gcc-11.1.0/gcc/config/i386/avx512vp2intersectintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512vp2intersectintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512vp2intersectintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2019-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2019-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512vp2intersectvlintrin.h gcc-11.1.0/gcc/config/i386/avx512vp2intersectvlintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512vp2intersectvlintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512vp2intersectvlintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2019-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2019-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512vpopcntdqintrin.h gcc-11.1.0/gcc/config/i386/avx512vpopcntdqintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512vpopcntdqintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512vpopcntdqintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512vpopcntdqvlintrin.h gcc-11.1.0/gcc/config/i386/avx512vpopcntdqvlintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512vpopcntdqvlintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avx512vpopcntdqvlintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avxintrin.h gcc-11.1.0/gcc/config/i386/avxintrin.h
*** gcc-10.3.0/gcc/config/i386/avxintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avxintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2008-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2008-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** _mm_cmp_ss (__m128 __X, __m128 __Y, cons
*** 444,449 ****
--- 444,456 ----
  				  (__v4sf)(__m128)(Y), (int)(P)))
  #endif
  
+ extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cvtsi256_si32 (__m256i __A)
+ {
+   __v8si __B = (__v8si) __A;
+   return __B[0];
+ }
+ 
  extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_cvtepi32_pd (__m128i __A)
  {
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avxmath.h gcc-11.1.0/gcc/config/i386/avxmath.h
*** gcc-10.3.0/gcc/config/i386/avxmath.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/avxmath.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2010-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2010-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avxvnniintrin.h gcc-11.1.0/gcc/config/i386/avxvnniintrin.h
*** gcc-10.3.0/gcc/config/i386/avxvnniintrin.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/i386/avxvnniintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,113 ----
+ /* Copyright (C) 2020-2021 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.
+ 
+    Under Section 7 of GPL version 3, you are granted additional
+    permissions described in the GCC Runtime Library Exception, version
+    3.1, as published by the Free Software Foundation.
+ 
+    You should have received a copy of the GNU General Public License and
+    a copy of the GCC Runtime Library Exception along with this program;
+    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef _IMMINTRIN_H_INCLUDED
+ #error "Never use <avxvnniintrin.h> directly; include <immintrin.h> instead."
+ #endif
+ 
+ #ifndef _AVXVNNIINTRIN_H_INCLUDED
+ #define _AVXVNNIINTRIN_H_INCLUDED
+ 
+ #if !defined(__AVXVNNI__)
+ #pragma GCC push_options
+ #pragma GCC target("avxvnni")
+ #define __DISABLE_AVXVNNIVL__
+ #endif /* __AVXVNNIVL__ */
+ 
+ extern __inline __m256i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_dpbusd_avx_epi32(__m256i __A, __m256i __B, __m256i __C)
+ {
+   return   (__m256i) __builtin_ia32_vpdpbusd_v8si ((__v8si) __A,
+ 						   (__v8si) __B,
+ 						   (__v8si) __C);
+ }
+ 
+ extern __inline __m128i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_dpbusd_avx_epi32(__m128i __A, __m128i __B, __m128i __C)
+ {
+   return (__m128i) __builtin_ia32_vpdpbusd_v4si ((__v4si) __A,
+ 						 (__v4si) __B,
+ 						 (__v4si) __C);
+ }
+ 
+ extern __inline __m256i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_dpbusds_avx_epi32(__m256i __A, __m256i __B, __m256i __C)
+ {
+   return (__m256i) __builtin_ia32_vpdpbusds_v8si ((__v8si) __A,
+ 						  (__v8si) __B,
+ 						  (__v8si) __C);
+ }
+ 
+ extern __inline __m128i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_dpbusds_avx_epi32(__m128i __A,__m128i __B,__m128i __C)
+ {
+   return (__m128i) __builtin_ia32_vpdpbusds_v4si ((__v4si) __A,
+ 						  (__v4si) __B,
+ 						  (__v4si) __C);
+ }
+ 
+ extern __inline __m256i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_dpwssd_avx_epi32(__m256i __A,__m256i __B,__m256i __C)
+ {
+   return (__m256i) __builtin_ia32_vpdpwssd_v8si ((__v8si) __A,
+ 						 (__v8si) __B,
+ 						 (__v8si) __C);
+ }
+ 
+ extern __inline __m128i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_dpwssd_avx_epi32(__m128i __A,__m128i __B,__m128i __C)
+ {
+   return (__m128i) __builtin_ia32_vpdpwssd_v4si ((__v4si) __A,
+ 						 (__v4si) __B,
+ 						 (__v4si) __C);
+ }
+ 
+ extern __inline __m256i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_dpwssds_avx_epi32(__m256i __A,__m256i __B,__m256i __C)
+ {
+   return (__m256i) __builtin_ia32_vpdpwssds_v8si ((__v8si) __A,
+ 						  (__v8si) __B,
+ 						  (__v8si) __C);
+ }
+ 
+ extern __inline __m128i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_dpwssds_avx_epi32(__m128i __A,__m128i __B,__m128i __C)
+ {
+   return (__m128i) __builtin_ia32_vpdpwssds_v4si ((__v4si) __A,
+ 						  (__v4si) __B,
+ 						  (__v4si) __C);
+ }
+ 
+ #ifdef __DISABLE_AVXVNNIVL__
+ #undef __DISABLE_AVXVNNIVL__
+ #pragma GCC pop_options
+ #endif /* __DISABLE_AVXVNNIVL__ */
+ #endif /* _AVXVNNIINTRIN_H_INCLUDED */
diff -Nrcpad gcc-10.3.0/gcc/config/i386/bdver1.md gcc-11.1.0/gcc/config/i386/bdver1.md
*** gcc-10.3.0/gcc/config/i386/bdver1.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/bdver1.md	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/i386/bdver3.md gcc-11.1.0/gcc/config/i386/bdver3.md
*** gcc-10.3.0/gcc/config/i386/bdver3.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/bdver3.md	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! ;; Copyright (C) 2012-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2012-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/i386/biarch64.h gcc-11.1.0/gcc/config/i386/biarch64.h
*** gcc-10.3.0/gcc/config/i386/biarch64.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/biarch64.h	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* Make configure files to produce biarch compiler defaulting to 64bit mode.
     This file must be included very first, while the OS specific file later
     to overwrite otherwise wrong defaults. 
!    Copyright (C) 2001-2020 Free Software Foundation, Inc.
     Contributed by Bo Thorsen <bo@suse.de>.
  
  This file is part of GCC.
--- 1,7 ----
  /* Make configure files to produce biarch compiler defaulting to 64bit mode.
     This file must be included very first, while the OS specific file later
     to overwrite otherwise wrong defaults. 
!    Copyright (C) 2001-2021 Free Software Foundation, Inc.
     Contributed by Bo Thorsen <bo@suse.de>.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/i386/biarchx32.h gcc-11.1.0/gcc/config/i386/biarchx32.h
*** gcc-10.3.0/gcc/config/i386/biarchx32.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/biarchx32.h	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* Make configure files to produce biarch compiler defaulting to x32 mode.
     This file must be included very first, while the OS specific file later
     to overwrite otherwise wrong defaults.
!    Copyright (C) 2012-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,7 ----
  /* Make configure files to produce biarch compiler defaulting to x32 mode.
     This file must be included very first, while the OS specific file later
     to overwrite otherwise wrong defaults.
!    Copyright (C) 2012-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/bmi2intrin.h gcc-11.1.0/gcc/config/i386/bmi2intrin.h
*** gcc-10.3.0/gcc/config/i386/bmi2intrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/bmi2intrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 21,28 ****
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #if !defined _X86INTRIN_H_INCLUDED && !defined _IMMINTRIN_H_INCLUDED
! # error "Never use <bmi2intrin.h> directly; include <x86intrin.h> instead."
  #endif
  
  #ifndef _BMI2INTRIN_H_INCLUDED
--- 21,28 ----
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #ifndef _X86GPRINTRIN_H_INCLUDED
! # error "Never use <bmi2intrin.h> directly; include <x86gprintrin.h> instead."
  #endif
  
  #ifndef _BMI2INTRIN_H_INCLUDED
diff -Nrcpad gcc-10.3.0/gcc/config/i386/bmiintrin.h gcc-11.1.0/gcc/config/i386/bmiintrin.h
*** gcc-10.3.0/gcc/config/i386/bmiintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/bmiintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2010-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2010-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 21,28 ****
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #if !defined _X86INTRIN_H_INCLUDED && !defined _IMMINTRIN_H_INCLUDED
! # error "Never use <bmiintrin.h> directly; include <x86intrin.h> instead."
  #endif
  
  #ifndef _BMIINTRIN_H_INCLUDED
--- 21,28 ----
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #ifndef _X86GPRINTRIN_H_INCLUDED
! # error "Never use <bmiintrin.h> directly; include <x86gprintrin.h> instead."
  #endif
  
  #ifndef _BMIINTRIN_H_INCLUDED
diff -Nrcpad gcc-10.3.0/gcc/config/i386/bmmintrin.h gcc-11.1.0/gcc/config/i386/bmmintrin.h
*** gcc-10.3.0/gcc/config/i386/bmmintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/bmmintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2007-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2007-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/bsd.h gcc-11.1.0/gcc/config/i386/bsd.h
*** gcc-10.3.0/gcc/config/i386/bsd.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/bsd.h	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* Definitions for BSD assembler syntax for Intel 386
     (actually AT&T syntax for insns and operands,
     adapted to BSD conventions for symbol names and debugging.)
!    Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,7 ----
  /* Definitions for BSD assembler syntax for Intel 386
     (actually AT&T syntax for insns and operands,
     adapted to BSD conventions for symbol names and debugging.)
!    Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/btver2.md gcc-11.1.0/gcc/config/i386/btver2.md
*** gcc-10.3.0/gcc/config/i386/btver2.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/btver2.md	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! ;; Copyright (C) 2012-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2012-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/i386/cet.c gcc-11.1.0/gcc/config/i386/cet.c
*** gcc-10.3.0/gcc/config/i386/cet.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/cet.c	Thu Jan  1 00:00:00 1970
***************
*** 1,76 ****
- /* Functions for CET/x86.
-    Copyright (C) 2017-2020 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 "config.h"
- #include "system.h"
- #include "coretypes.h"
- #include "tm.h"
- #include "output.h"
- #include "linux-common.h"
- 
- void
- file_end_indicate_exec_stack_and_cet (void)
- {
-   file_end_indicate_exec_stack ();
- 
-   if (flag_cf_protection == CF_NONE)
-     return;
- 
-   unsigned int feature_1 = 0;
- 
-   if (flag_cf_protection & CF_BRANCH)
-     /* GNU_PROPERTY_X86_FEATURE_1_IBT.  */
-     feature_1 |= 0x1;
- 
-   if (flag_cf_protection & CF_RETURN)
-     /* GNU_PROPERTY_X86_FEATURE_1_SHSTK.  */
-     feature_1 |= 0x2;
- 
-   if (feature_1)
-     {
-       int p2align = ptr_mode == SImode ? 2 : 3;
- 
-       /* Generate GNU_PROPERTY_X86_FEATURE_1_XXX.  */
-       switch_to_section (get_section (".note.gnu.property",
- 				      SECTION_NOTYPE, NULL));
- 
-       ASM_OUTPUT_ALIGN (asm_out_file, p2align);
-       /* name length.  */
-       fprintf (asm_out_file, ASM_LONG " 1f - 0f\n");
-       /* data length.  */
-       fprintf (asm_out_file, ASM_LONG " 4f - 1f\n");
-       /* note type: NT_GNU_PROPERTY_TYPE_0.  */
-       fprintf (asm_out_file, ASM_LONG " 5\n");
-       fprintf (asm_out_file, "0:\n");
-       /* vendor name: "GNU".  */
-       fprintf (asm_out_file, STRING_ASM_OP " \"GNU\"\n");
-       fprintf (asm_out_file, "1:\n");
-       ASM_OUTPUT_ALIGN (asm_out_file, p2align);
-       /* pr_type: GNU_PROPERTY_X86_FEATURE_1_AND.  */
-       fprintf (asm_out_file, ASM_LONG " 0xc0000002\n");
-       /* pr_datasz.  */\
-       fprintf (asm_out_file, ASM_LONG " 3f - 2f\n");
-       fprintf (asm_out_file, "2:\n");
-       /* GNU_PROPERTY_X86_FEATURE_1_XXX.  */
-       fprintf (asm_out_file, ASM_LONG " 0x%x\n", feature_1);
-       fprintf (asm_out_file, "3:\n");
-       ASM_OUTPUT_ALIGN (asm_out_file, p2align);
-       fprintf (asm_out_file, "4:\n");
-     }
- }
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/config/i386/cet.h gcc-11.1.0/gcc/config/i386/cet.h
*** gcc-10.3.0/gcc/config/i386/cet.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/cet.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* ELF program property for Intel CET.
!    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
     This file is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
--- 1,5 ----
  /* ELF program property for Intel CET.
!    Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
     This file is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
diff -Nrcpad gcc-10.3.0/gcc/config/i386/cetintrin.h gcc-11.1.0/gcc/config/i386/cetintrin.h
*** gcc-10.3.0/gcc/config/i386/cetintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/cetintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2015-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2015-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 21,28 ****
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #if !defined _IMMINTRIN_H_INCLUDED
! # error "Never use <cetintrin.h> directly; include <x86intrin.h> instead."
  #endif
  
  #ifndef _CETINTRIN_H_INCLUDED
--- 21,28 ----
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #ifndef _X86GPRINTRIN_H_INCLUDED
! # error "Never use <cetintrin.h> directly; include <x86gprintrin.h> instead."
  #endif
  
  #ifndef _CETINTRIN_H_INCLUDED
diff -Nrcpad gcc-10.3.0/gcc/config/i386/cldemoteintrin.h gcc-11.1.0/gcc/config/i386/cldemoteintrin.h
*** gcc-10.3.0/gcc/config/i386/cldemoteintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/cldemoteintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2018-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2018-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 21,28 ****
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #if !defined _IMMINTRIN_H_INCLUDED
! # error "Never use <cldemoteintrin.h> directly; include <immintrin.h> instead."
  #endif
  
  #ifndef _CLDEMOTE_H_INCLUDED
--- 21,28 ----
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #ifndef _X86GPRINTRIN_H_INCLUDED
! # error "Never use <cldemoteintrin.h> directly; include <x86gprintrin.h> instead."
  #endif
  
  #ifndef _CLDEMOTE_H_INCLUDED
diff -Nrcpad gcc-10.3.0/gcc/config/i386/clflushoptintrin.h gcc-11.1.0/gcc/config/i386/clflushoptintrin.h
*** gcc-10.3.0/gcc/config/i386/clflushoptintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/clflushoptintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 21,28 ****
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #if !defined _IMMINTRIN_H_INCLUDED
! # error "Never use <clflushoptintrin.h> directly; include <immintrin.h> instead."
  #endif
  
  #ifndef _CLFLUSHOPTINTRIN_H_INCLUDED
--- 21,28 ----
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #ifndef _X86GPRINTRIN_H_INCLUDED
! # error "Never use <clflushoptintrin.h> directly; include <x86gprintrin.h> instead."
  #endif
  
  #ifndef _CLFLUSHOPTINTRIN_H_INCLUDED
diff -Nrcpad gcc-10.3.0/gcc/config/i386/clwbintrin.h gcc-11.1.0/gcc/config/i386/clwbintrin.h
*** gcc-10.3.0/gcc/config/i386/clwbintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/clwbintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 21,28 ****
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #if !defined _IMMINTRIN_H_INCLUDED
! # error "Never use <clwbintrin.h> directly; include <immintrin.h> instead."
  #endif
  
  #ifndef _CLWBINTRIN_H_INCLUDED
--- 21,28 ----
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #ifndef _X86GPRINTRIN_H_INCLUDED
! # error "Never use <clwbintrin.h> directly; include <x86gprintrin.h> instead."
  #endif
  
  #ifndef _CLWBINTRIN_H_INCLUDED
diff -Nrcpad gcc-10.3.0/gcc/config/i386/clzerointrin.h gcc-11.1.0/gcc/config/i386/clzerointrin.h
*** gcc-10.3.0/gcc/config/i386/clzerointrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/clzerointrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2012-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2012-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/constraints.md gcc-11.1.0/gcc/config/i386/constraints.md
*** gcc-10.3.0/gcc/config/i386/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/constraints.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Constraint definitions for IA-32 and x86-64.
! ;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for IA-32 and x86-64.
! ;; Copyright (C) 2006-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 110,116 ****
  ;;  v	any EVEX encodable SSE register for AVX512VL target,
  ;;	otherwise any SSE register
  ;;  w	any EVEX encodable SSE register for AVX512BW with TARGET_AVX512VL
! ;;	target.
  
  (define_register_constraint "Yz" "TARGET_SSE ? SSE_FIRST_REG : NO_REGS"
   "First SSE register (@code{%xmm0}).")
--- 110,118 ----
  ;;  v	any EVEX encodable SSE register for AVX512VL target,
  ;;	otherwise any SSE register
  ;;  w	any EVEX encodable SSE register for AVX512BW with TARGET_AVX512VL
! ;;	target, otherwise any SSE register.
! ;;  W   any EVEX encodable SSE register for AVX512BW target,
! ;;	otherwise any SSE register.
  
  (define_register_constraint "Yz" "TARGET_SSE ? SSE_FIRST_REG : NO_REGS"
   "First SSE register (@code{%xmm0}).")
***************
*** 148,155 ****
   "@internal For AVX512VL, any EVEX encodable SSE register (@code{%xmm0-%xmm31}), otherwise any SSE register.")
  
  (define_register_constraint "Yw"
!  "TARGET_AVX512BW && TARGET_AVX512VL ? ALL_SSE_REGS : NO_REGS"
!  "@internal Any EVEX encodable SSE register (@code{%xmm0-%xmm31}) for AVX512BW with TARGET_AVX512VL target.")
  
  ;; We use the B prefix to denote any number of internal operands:
  ;;  f  FLAGS_REG
--- 150,161 ----
   "@internal For AVX512VL, any EVEX encodable SSE register (@code{%xmm0-%xmm31}), otherwise any SSE register.")
  
  (define_register_constraint "Yw"
!  "TARGET_AVX512BW && TARGET_AVX512VL ? ALL_SSE_REGS : TARGET_SSE ? SSE_REGS : NO_REGS"
!  "@internal Any EVEX encodable SSE register (@code{%xmm0-%xmm31}) for AVX512BW with TARGET_AVX512VL target, otherwise any SSE register.")
! 
! (define_register_constraint "YW"
!  "TARGET_AVX512BW ? ALL_SSE_REGS : TARGET_SSE ? SSE_REGS : NO_REGS"
!  "@internal Any EVEX encodable SSE register (@code{%xmm0-%xmm31}) for AVX512BW target, otherwise any SSE register.")
  
  ;; We use the B prefix to denote any number of internal operands:
  ;;  f  FLAGS_REG
***************
*** 183,188 ****
--- 189,198 ----
    "@internal Memory operand without REX prefix."
    (match_operand 0 "norex_memory_operand"))
  
+ (define_special_memory_constraint "Br"
+   "@internal bcst memory operand."
+   (match_operand 0 "bcst_mem_operand"))
+ 
  (define_constraint "Bs"
    "@internal Sibcall memory operand."
    (ior (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER"))
diff -Nrcpad gcc-10.3.0/gcc/config/i386/core2.md gcc-11.1.0/gcc/config/i386/core2.md
*** gcc-10.3.0/gcc/config/i386/core2.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/core2.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Scheduling for Core 2 and derived processors.
! ;; Copyright (C) 2004-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling for Core 2 and derived processors.
! ;; Copyright (C) 2004-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/i386/cpuid.h gcc-11.1.0/gcc/config/i386/cpuid.h
*** gcc-10.3.0/gcc/config/i386/cpuid.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/cpuid.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /*
!  * Copyright (C) 2007-2020 Free Software Foundation, Inc.
   *
   * This file is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License as published by the
--- 1,5 ----
  /*
!  * Copyright (C) 2007-2021 Free Software Foundation, Inc.
   *
   * This file is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License as published by the
***************
*** 21,28 ****
--- 21,33 ----
   * <http://www.gnu.org/licenses/>.
   */
  
+ #ifndef _CPUID_H_INCLUDED
+ #define _CPUID_H_INCLUDED
+ 
  /* %eax */
+ #define bit_AVXVNNI	(1 << 4)
  #define bit_AVX512BF16	(1 << 5)
+ #define bit_HRESET	(1 << 22)
  
  /* %ecx */
  #define bit_SSE3	(1 << 0)
***************
*** 115,140 ****
  #define bit_MOVDIR64B	(1 << 28)
  #define bit_ENQCMD	(1 << 29)
  #define bit_CLDEMOTE	(1 << 25)
  
  /* %edx */
  #define bit_AVX5124VNNIW (1 << 2)
  #define bit_AVX5124FMAPS (1 << 3)
  #define bit_AVX512VP2INTERSECT	(1 << 8)
  #define bit_IBT	(1 << 20)
  #define bit_PCONFIG	(1 << 18)
! /* XFEATURE_ENABLED_MASK register bits (%eax == 13, %ecx == 0) */
  #define bit_BNDREGS     (1 << 3)
  #define bit_BNDCSR      (1 << 4)
  
! /* Extended State Enumeration Sub-leaf (%eax == 13, %ecx == 1) */
  #define bit_XSAVEOPT	(1 << 0)
  #define bit_XSAVEC	(1 << 1)
  #define bit_XSAVES	(1 << 3)
  
! /* PT sub leaf (%eax == 14, %ecx == 0) */
  /* %ebx */
  #define bit_PTWRITE	(1 << 4)
  
  /* Signatures for different CPU implementations as returned in uses
     of cpuid with level 0.  */
  #define signature_AMD_ebx	0x68747541
--- 120,159 ----
  #define bit_MOVDIR64B	(1 << 28)
  #define bit_ENQCMD	(1 << 29)
  #define bit_CLDEMOTE	(1 << 25)
+ #define bit_KL		(1 << 23)
  
  /* %edx */
  #define bit_AVX5124VNNIW (1 << 2)
  #define bit_AVX5124FMAPS (1 << 3)
  #define bit_AVX512VP2INTERSECT	(1 << 8)
  #define bit_IBT	(1 << 20)
+ #define bit_UINTR (1 << 5)
  #define bit_PCONFIG	(1 << 18)
! #define bit_SERIALIZE	(1 << 14)
! #define bit_TSXLDTRK    (1 << 16)
! #define bit_AMX_BF16    (1 << 22)
! #define bit_AMX_TILE    (1 << 24)
! #define bit_AMX_INT8    (1 << 25)
! 
! /* XFEATURE_ENABLED_MASK register bits (%eax == 0xd, %ecx == 0) */
  #define bit_BNDREGS     (1 << 3)
  #define bit_BNDCSR      (1 << 4)
  
! /* Extended State Enumeration Sub-leaf (%eax == 0xd, %ecx == 1) */
  #define bit_XSAVEOPT	(1 << 0)
  #define bit_XSAVEC	(1 << 1)
  #define bit_XSAVES	(1 << 3)
  
! /* PT sub leaf (%eax == 0x14, %ecx == 0) */
  /* %ebx */
  #define bit_PTWRITE	(1 << 4)
  
+ /* Keylocker leaf (%eax == 0x19) */
+ /* %ebx */
+ #define bit_AESKLE	( 1<<0 )
+ #define bit_WIDEKL	( 1<<2 )
+ 
+ 
  /* Signatures for different CPU implementations as returned in uses
     of cpuid with level 0.  */
  #define signature_AMD_ebx	0x68747541
*************** __get_cpuid_count (unsigned int __leaf,
*** 310,312 ****
--- 329,340 ----
    __cpuid_count (__leaf, __subleaf, *__eax, *__ebx, *__ecx, *__edx);
    return 1;
  }
+ 
+ static __inline void
+ __cpuidex (int __cpuid_info[4], int __leaf, int __subleaf)
+ {
+   __cpuid_count (__leaf, __subleaf, __cpuid_info[0], __cpuid_info[1],
+ 		 __cpuid_info[2], __cpuid_info[3]);
+ }
+ 
+ #endif /* _CPUID_H_INCLUDED */
diff -Nrcpad gcc-10.3.0/gcc/config/i386/cross-stdarg.h gcc-11.1.0/gcc/config/i386/cross-stdarg.h
*** gcc-10.3.0/gcc/config/i386/cross-stdarg.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/cross-stdarg.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2002-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2002-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/crtdll.h gcc-11.1.0/gcc/config/i386/crtdll.h
*** gcc-10.3.0/gcc/config/i386/crtdll.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/crtdll.h	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows32, using GNU tools and the Windows32 API Library.
     This variant uses CRTDLL.DLL instead of MSVCRTDLL.DLL.
!    Copyright (C) 1998-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,7 ----
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows32, using GNU tools and the Windows32 API Library.
     This variant uses CRTDLL.DLL instead of MSVCRTDLL.DLL.
!    Copyright (C) 1998-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/cygming.h gcc-11.1.0/gcc/config/i386/cygming.h
*** gcc-10.3.0/gcc/config/i386/cygming.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/cygming.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows32, using a Unix style C library and tools.
!    Copyright (C) 1995-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows32, using a Unix style C library and tools.
!    Copyright (C) 1995-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/cygming.opt gcc-11.1.0/gcc/config/i386/cygming.opt
*** gcc-10.3.0/gcc/config/i386/cygming.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/cygming.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Cygwin- and MinGW-specific options.
  
! ; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Cygwin- and MinGW-specific options.
  
! ; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** Target RejectNegative
*** 27,33 ****
  Generate code for a DLL.
  
  mnop-fun-dllimport
! Target Report Var(TARGET_NOP_FUN_DLLIMPORT)
  Ignore dllimport for functions.
  
  mthreads
--- 27,33 ----
  Generate code for a DLL.
  
  mnop-fun-dllimport
! Target Var(TARGET_NOP_FUN_DLLIMPORT)
  Ignore dllimport for functions.
  
  mthreads
*************** Target Condition({defined (USE_CYGWIN_LI
*** 51,64 ****
  Compile code that relies on Cygwin DLL wrappers to support C++ operator new/delete replacement.
  
  fset-stack-executable
! Common Report Var(flag_setstackexecutable) Init(1) Optimization
  For nested functions on stack executable permission is set.
  
  posix
  Driver
  
  fwritable-relocated-rdata
! Common Report Var(flag_writable_rel_rdata) Init(0)
  Put relocated read-only data into .data section.
  
  ; Retain blank line above
--- 51,64 ----
  Compile code that relies on Cygwin DLL wrappers to support C++ operator new/delete replacement.
  
  fset-stack-executable
! Common Var(flag_setstackexecutable) Init(1) Optimization
  For nested functions on stack executable permission is set.
  
  posix
  Driver
  
  fwritable-relocated-rdata
! Common Var(flag_writable_rel_rdata) Init(0)
  Put relocated read-only data into .data section.
  
  ; Retain blank line above
diff -Nrcpad gcc-10.3.0/gcc/config/i386/cygwin-stdint.h gcc-11.1.0/gcc/config/i386/cygwin-stdint.h
*** gcc-10.3.0/gcc/config/i386/cygwin-stdint.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/cygwin-stdint.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for <stdint.h> types on systems using Cygwin.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for <stdint.h> types on systems using Cygwin.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/cygwin-w64.h gcc-11.1.0/gcc/config/i386/cygwin-w64.h
*** gcc-10.3.0/gcc/config/i386/cygwin-w64.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/cygwin-w64.h	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows 32/64 via Cygwin runtime, using GNU tools and
     the Windows API Library.
!    Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,7 ----
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows 32/64 via Cygwin runtime, using GNU tools and
     the Windows API Library.
!    Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/cygwin.h gcc-11.1.0/gcc/config/i386/cygwin.h
*** gcc-10.3.0/gcc/config/i386/cygwin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/cygwin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows32, using a Unix style C library and tools.
!    Copyright (C) 1995-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows32, using a Unix style C library and tools.
!    Copyright (C) 1995-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 29,34 ****
--- 29,43 ----
      }								\
    while (0)
  
+ #define EXTRA_TARGET_D_OS_VERSIONS()				\
+   do								\
+     {								\
+       builtin_version ("Cygwin");				\
+       builtin_version ("Posix");				\
+       builtin_version ("CRuntime_Newlib");			\
+     }								\
+   while (0)
+ 
  #undef CPP_SPEC
  #define CPP_SPEC "%(cpp_cpu) %{posix:-D_POSIX_SOURCE} \
    %{!ansi:-Dunix} \
diff -Nrcpad gcc-10.3.0/gcc/config/i386/cygwin.opt gcc-11.1.0/gcc/config/i386/cygwin.opt
*** gcc-10.3.0/gcc/config/i386/cygwin.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/cygwin.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; Cygwin-specific options.
  
! ; Copyright (C) 2013-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Cygwin-specific options.
  
! ; Copyright (C) 2013-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-10.3.0/gcc/config/i386/darwin.h gcc-11.1.0/gcc/config/i386/darwin.h
*** gcc-10.3.0/gcc/config/i386/darwin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/darwin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Target definitions for x86 running Darwin.
!    Copyright (C) 2001-2020 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Target definitions for x86 running Darwin.
!    Copyright (C) 2001-2021 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 350,352 ****
--- 350,357 ----
        = darwin_init_cfstring_builtins ((unsigned) (IX86_BUILTIN_CFSTRING)); \
      darwin_rename_builtins ();						\
    } while(0)
+ 
+ /* Define the shadow offset for asan.  */
+ #undef SUBTARGET_SHADOW_OFFSET
+ #define SUBTARGET_SHADOW_OFFSET	\
+   (TARGET_LP64 ? HOST_WIDE_INT_1 << 44 : HOST_WIDE_INT_1 << 29)
diff -Nrcpad gcc-10.3.0/gcc/config/i386/darwin32-biarch.h gcc-11.1.0/gcc/config/i386/darwin32-biarch.h
*** gcc-10.3.0/gcc/config/i386/darwin32-biarch.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/darwin32-biarch.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Target definitions for i386 running Darwin with a 32b host and supporting
     a 64b multilib.
!    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Target definitions for i386 running Darwin with a 32b host and supporting
     a 64b multilib.
!    Copyright (C) 2019-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/darwin64-biarch.h gcc-11.1.0/gcc/config/i386/darwin64-biarch.h
*** gcc-10.3.0/gcc/config/i386/darwin64-biarch.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/darwin64-biarch.h	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  /* Target definitions for x86_64 running Darwin with a 64b host supporting a
     32b multilib.
!    Copyright (C) 2006-2020 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
--- 1,6 ----
  /* Target definitions for x86_64 running Darwin with a 64b host supporting a
     32b multilib.
!    Copyright (C) 2006-2021 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/i386/djgpp-stdint.h gcc-11.1.0/gcc/config/i386/djgpp-stdint.h
*** gcc-10.3.0/gcc/config/i386/djgpp-stdint.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/djgpp-stdint.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for <stdint.h> types on systems using DJGPP.
!    Copyright (C) 2009-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for <stdint.h> types on systems using DJGPP.
!    Copyright (C) 2009-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/djgpp.c gcc-11.1.0/gcc/config/i386/djgpp.c
*** gcc-10.3.0/gcc/config/i386/djgpp.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/djgpp.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines for DJGPP.
!    Copyright (C) 2013-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines for DJGPP.
!    Copyright (C) 2013-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/djgpp.h gcc-11.1.0/gcc/config/i386/djgpp.h
*** gcc-10.3.0/gcc/config/i386/djgpp.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/djgpp.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Configuration for an i386 running MS-DOS with DJGPP.
!    Copyright (C) 1997-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Configuration for an i386 running MS-DOS with DJGPP.
!    Copyright (C) 1997-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/djgpp.opt gcc-11.1.0/gcc/config/i386/djgpp.opt
*** gcc-10.3.0/gcc/config/i386/djgpp.opt	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/djgpp.opt	Tue Apr 27 10:00:13 2021
***************
*** 1,6 ****
  ; DJGPP-specific options.
  
! ; Copyright (C) 2005-2020 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; DJGPP-specific options.
  
! ; Copyright (C) 2005-2021 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-10.3.0/gcc/config/i386/dragonfly.h gcc-11.1.0/gcc/config/i386/dragonfly.h
*** gcc-10.3.0/gcc/config/i386/dragonfly.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/dragonfly.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for Intel 386 running DragonFly with ELF format
!    Copyright (C) 2014-2020 Free Software Foundation, Inc.
     Contributed by John Marino <gnugcc@marino.st>
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for Intel 386 running DragonFly with ELF format
!    Copyright (C) 2014-2021 Free Software Foundation, Inc.
     Contributed by John Marino <gnugcc@marino.st>
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/i386/driver-i386.c gcc-11.1.0/gcc/config/i386/driver-i386.c
*** gcc-10.3.0/gcc/config/i386/driver-i386.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/driver-i386.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2006-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2006-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** const char *host_detect_local_cpu (int a
*** 28,33 ****
--- 28,35 ----
  
  #if defined(__GNUC__) && (__GNUC__ >= 5 || !defined(__PIC__))
  #include "cpuid.h"
+ #include "common/config/i386/cpuinfo.h"
+ #include "common/config/i386/i386-isas.h"
  
  struct cache_desc
  {
*************** const char *host_detect_local_cpu (int a
*** 388,438 ****
    const char *cache = "";
    const char *options = "";
  
!   unsigned int eax, ebx, ecx, edx;
  
    unsigned int max_level, ext_level;
  
    unsigned int vendor;
    unsigned int model, family;
  
-   unsigned int has_sse3, has_ssse3, has_cmpxchg16b;
-   unsigned int has_cmpxchg8b, has_cmov, has_mmx, has_sse, has_sse2;
- 
-   /* Extended features */
-   unsigned int has_lahf_lm = 0, has_sse4a = 0;
-   unsigned int has_longmode = 0, has_3dnowp = 0, has_3dnow = 0;
-   unsigned int has_movbe = 0, has_sse4_1 = 0, has_sse4_2 = 0;
-   unsigned int has_popcnt = 0, has_aes = 0, has_avx = 0, has_avx2 = 0;
-   unsigned int has_pclmul = 0, has_abm = 0, has_lwp = 0;
-   unsigned int has_fma = 0, has_fma4 = 0, has_xop = 0;
-   unsigned int has_bmi = 0, has_bmi2 = 0, has_tbm = 0, has_lzcnt = 0;
-   unsigned int has_hle = 0, has_rtm = 0, has_sgx = 0;
-   unsigned int has_pconfig = 0, has_wbnoinvd = 0;
-   unsigned int has_rdrnd = 0, has_f16c = 0, has_fsgsbase = 0;
-   unsigned int has_rdseed = 0, has_prfchw = 0, has_adx = 0;
-   unsigned int has_osxsave = 0, has_fxsr = 0, has_xsave = 0, has_xsaveopt = 0;
-   unsigned int has_avx512er = 0, has_avx512pf = 0, has_avx512cd = 0;
-   unsigned int has_avx512f = 0, has_sha = 0, has_prefetchwt1 = 0;
-   unsigned int has_clflushopt = 0, has_xsavec = 0, has_xsaves = 0;
-   unsigned int has_avx512dq = 0, has_avx512bw = 0, has_avx512vl = 0;
-   unsigned int has_avx512vbmi = 0, has_avx512ifma = 0, has_clwb = 0;
-   unsigned int has_mwaitx = 0, has_clzero = 0, has_pku = 0, has_rdpid = 0;
-   unsigned int has_avx5124fmaps = 0, has_avx5124vnniw = 0;
-   unsigned int has_gfni = 0, has_avx512vbmi2 = 0;
-   unsigned int has_avx512bitalg = 0;
-   unsigned int has_avx512vpopcntdq = 0;
-   unsigned int has_shstk = 0;
-   unsigned int has_avx512vnni = 0, has_vaes = 0;
-   unsigned int has_vpclmulqdq = 0;
-   unsigned int has_avx512vp2intersect = 0;
-   unsigned int has_movdiri = 0, has_movdir64b = 0;
-   unsigned int has_enqcmd = 0;
-   unsigned int has_waitpkg = 0;
-   unsigned int has_cldemote = 0;
-   unsigned int has_avx512bf16 = 0;
- 
-   unsigned int has_ptwrite = 0;
- 
    bool arch;
  
    unsigned int l2sizekb = 0;
--- 390,402 ----
    const char *cache = "";
    const char *options = "";
  
!   unsigned int ebx, ecx, edx;
  
    unsigned int max_level, ext_level;
  
    unsigned int vendor;
    unsigned int model, family;
  
    bool arch;
  
    unsigned int l2sizekb = 0;
*************** const char *host_detect_local_cpu (int a
*** 445,652 ****
    if (!arch && strcmp (argv[0], "tune"))
      return NULL;
  
!   max_level = __get_cpuid_max (0, &vendor);
!   if (max_level < 1)
!     goto done;
! 
!   __cpuid (1, eax, ebx, ecx, edx);
! 
!   model = (eax >> 4) & 0x0f;
!   family = (eax >> 8) & 0x0f;
!   if (vendor == signature_INTEL_ebx
!       || vendor == signature_AMD_ebx)
!     {
!       unsigned int extended_model, extended_family;
! 
!       extended_model = (eax >> 12) & 0xf0;
!       extended_family = (eax >> 20) & 0xff;
!       if (family == 0x0f)
! 	{
! 	  family += extended_family;
! 	  model += extended_model;
! 	}
!       else if (family == 0x06)
! 	model += extended_model;
!     }
! 
!   has_sse3 = ecx & bit_SSE3;
!   has_ssse3 = ecx & bit_SSSE3;
!   has_sse4_1 = ecx & bit_SSE4_1;
!   has_sse4_2 = ecx & bit_SSE4_2;
!   has_avx = ecx & bit_AVX;
!   has_osxsave = ecx & bit_OSXSAVE;
!   has_cmpxchg16b = ecx & bit_CMPXCHG16B;
!   has_movbe = ecx & bit_MOVBE;
!   has_popcnt = ecx & bit_POPCNT;
!   has_aes = ecx & bit_AES;
!   has_pclmul = ecx & bit_PCLMUL;
!   has_fma = ecx & bit_FMA;
!   has_f16c = ecx & bit_F16C;
!   has_rdrnd = ecx & bit_RDRND;
!   has_xsave = ecx & bit_XSAVE;
! 
!   has_cmpxchg8b = edx & bit_CMPXCHG8B;
!   has_cmov = edx & bit_CMOV;
!   has_mmx = edx & bit_MMX;
!   has_fxsr = edx & bit_FXSAVE;
!   has_sse = edx & bit_SSE;
!   has_sse2 = edx & bit_SSE2;
! 
!   if (max_level >= 7)
!     {
!       __cpuid_count (7, 0, eax, ebx, ecx, edx);
! 
!       has_bmi = ebx & bit_BMI;
!       has_sgx = ebx & bit_SGX;
!       has_hle = ebx & bit_HLE;
!       has_rtm = ebx & bit_RTM;
!       has_avx2 = ebx & bit_AVX2;
!       has_bmi2 = ebx & bit_BMI2;
!       has_fsgsbase = ebx & bit_FSGSBASE;
!       has_rdseed = ebx & bit_RDSEED;
!       has_adx = ebx & bit_ADX;
!       has_avx512f = ebx & bit_AVX512F;
!       has_avx512er = ebx & bit_AVX512ER;
!       has_avx512pf = ebx & bit_AVX512PF;
!       has_avx512cd = ebx & bit_AVX512CD;
!       has_sha = ebx & bit_SHA;
!       has_clflushopt = ebx & bit_CLFLUSHOPT;
!       has_clwb = ebx & bit_CLWB;
!       has_avx512dq = ebx & bit_AVX512DQ;
!       has_avx512bw = ebx & bit_AVX512BW;
!       has_avx512vl = ebx & bit_AVX512VL;
!       has_avx512ifma = ebx & bit_AVX512IFMA;
! 
!       has_prefetchwt1 = ecx & bit_PREFETCHWT1;
!       has_avx512vbmi = ecx & bit_AVX512VBMI;
!       has_pku = ecx & bit_OSPKE;
!       has_avx512vbmi2 = ecx & bit_AVX512VBMI2;
!       has_avx512vnni = ecx & bit_AVX512VNNI;
!       has_rdpid = ecx & bit_RDPID;
!       has_gfni = ecx & bit_GFNI;
!       has_vaes = ecx & bit_VAES;
!       has_vpclmulqdq = ecx & bit_VPCLMULQDQ;
!       has_avx512bitalg = ecx & bit_AVX512BITALG;
!       has_avx512vpopcntdq = ecx & bit_AVX512VPOPCNTDQ;
!       has_movdiri = ecx & bit_MOVDIRI;
!       has_movdir64b = ecx & bit_MOVDIR64B;
!       has_enqcmd = ecx & bit_ENQCMD;
!       has_cldemote = ecx & bit_CLDEMOTE;
! 
!       has_avx5124vnniw = edx & bit_AVX5124VNNIW;
!       has_avx5124fmaps = edx & bit_AVX5124FMAPS;
!       has_avx512vp2intersect = edx & bit_AVX512VP2INTERSECT;
! 
!       has_shstk = ecx & bit_SHSTK;
!       has_pconfig = edx & bit_PCONFIG;
!       has_waitpkg = ecx & bit_WAITPKG;
! 
!       __cpuid_count (7, 1, eax, ebx, ecx, edx);
!       has_avx512bf16 = eax & bit_AVX512BF16;
!     }
! 
!   if (max_level >= 13)
!     {
!       __cpuid_count (13, 1, eax, ebx, ecx, edx);
! 
!       has_xsaveopt = eax & bit_XSAVEOPT;
!       has_xsavec = eax & bit_XSAVEC;
!       has_xsaves = eax & bit_XSAVES;
!     }
! 
!   if (max_level >= 0x14)
!     {
!       __cpuid_count (0x14, 0, eax, ebx, ecx, edx);
! 
!       has_ptwrite = ebx & bit_PTWRITE;
!     }
! 
!   /* Check cpuid level of extended features.  */
!   __cpuid (0x80000000, ext_level, ebx, ecx, edx);
! 
!   if (ext_level >= 0x80000001)
!     {
!       __cpuid (0x80000001, eax, ebx, ecx, edx);
! 
!       has_lahf_lm = ecx & bit_LAHF_LM;
!       has_sse4a = ecx & bit_SSE4a;
!       has_abm = ecx & bit_ABM;
!       has_lwp = ecx & bit_LWP;
!       has_fma4 = ecx & bit_FMA4;
!       has_xop = ecx & bit_XOP;
!       has_tbm = ecx & bit_TBM;
!       has_lzcnt = ecx & bit_LZCNT;
!       has_prfchw = ecx & bit_PRFCHW;
! 
!       has_longmode = edx & bit_LM;
!       has_3dnowp = edx & bit_3DNOWP;
!       has_3dnow = edx & bit_3DNOW;
!       has_mwaitx = ecx & bit_MWAITX;
!     }
! 
!   if (ext_level >= 0x80000008)
!     {
!       __cpuid (0x80000008, eax, ebx, ecx, edx);
!       has_clzero = ebx & bit_CLZERO;
!       has_wbnoinvd = ebx & bit_WBNOINVD;
!     }
! 
!   /* Get XCR_XFEATURE_ENABLED_MASK register with xgetbv.  */
! #define XCR_XFEATURE_ENABLED_MASK	0x0
! #define XSTATE_FP			0x1
! #define XSTATE_SSE			0x2
! #define XSTATE_YMM			0x4
! #define XSTATE_OPMASK			0x20
! #define XSTATE_ZMM			0x40
! #define XSTATE_HI_ZMM			0x80
! 
! #define XCR_AVX_ENABLED_MASK \
!   (XSTATE_SSE | XSTATE_YMM)
! #define XCR_AVX512F_ENABLED_MASK \
!   (XSTATE_SSE | XSTATE_YMM | XSTATE_OPMASK | XSTATE_ZMM | XSTATE_HI_ZMM)
! 
!   if (has_osxsave)
!     asm (".byte 0x0f; .byte 0x01; .byte 0xd0"
! 	 : "=a" (eax), "=d" (edx)
! 	 : "c" (XCR_XFEATURE_ENABLED_MASK));
!   else
!     eax = 0;
  
!   /* Check if AVX registers are supported.  */
!   if ((eax & XCR_AVX_ENABLED_MASK) != XCR_AVX_ENABLED_MASK)
!     {
!       has_avx = 0;
!       has_avx2 = 0;
!       has_fma = 0;
!       has_fma4 = 0;
!       has_f16c = 0;
!       has_xop = 0;
!       has_xsave = 0;
!       has_xsaveopt = 0;
!       has_xsaves = 0;
!       has_xsavec = 0;
!     }
  
!   /* Check if AVX512F registers are supported.  */
!   if ((eax & XCR_AVX512F_ENABLED_MASK) != XCR_AVX512F_ENABLED_MASK)
!     {
!       has_avx512f = 0;
!       has_avx512er = 0;
!       has_avx512pf = 0;
!       has_avx512cd = 0;
!       has_avx512dq = 0;
!       has_avx512bw = 0;
!       has_avx512vl = 0;
!     }
  
    if (!arch)
      {
!       if (vendor == signature_AMD_ebx
! 	  || vendor == signature_CENTAUR_ebx
! 	  || vendor == signature_CYRIX_ebx
! 	  || vendor == signature_NSC_ebx)
  	cache = detect_caches_amd (ext_level);
!       else if (vendor == signature_INTEL_ebx)
  	{
  	  bool xeon_mp = (family == 15 && model == 6);
  	  cache = detect_caches_intel (xeon_mp, max_level,
--- 409,435 ----
    if (!arch && strcmp (argv[0], "tune"))
      return NULL;
  
!   struct __processor_model cpu_model = { };
!   struct __processor_model2 cpu_model2 = { };
!   unsigned int cpu_features2[SIZE_OF_CPU_FEATURES] = { };
  
!   if (cpu_indicator_init (&cpu_model, &cpu_model2, cpu_features2) != 0)
!     goto done;
  
!   vendor = cpu_model.__cpu_vendor;
!   family = cpu_model2.__cpu_family;
!   model = cpu_model2.__cpu_model;
!   max_level = cpu_model2.__cpu_max_level;
!   ext_level = cpu_model2.__cpu_ext_level;
  
    if (!arch)
      {
!       if (vendor == VENDOR_AMD
! 	  || vendor == VENDOR_CENTAUR
! 	  || vendor == VENDOR_CYRIX
! 	  || vendor == VENDOR_NSC)
  	cache = detect_caches_amd (ext_level);
!       else if (vendor == VENDOR_INTEL)
  	{
  	  bool xeon_mp = (family == 15 && model == 6);
  	  cache = detect_caches_intel (xeon_mp, max_level,
*************** const char *host_detect_local_cpu (int a
*** 654,660 ****
  	}
      }
  
!   if (vendor == signature_AMD_ebx)
      {
        unsigned int name;
  
--- 437,447 ----
  	}
      }
  
!   /* Extended features */
! #define has_feature(f) \
!   has_cpu_feature (&cpu_model, cpu_features2, f)
! 
!   if (vendor == VENDOR_AMD)
      {
        unsigned int name;
  
*************** const char *host_detect_local_cpu (int a
*** 666,701 ****
  
        if (name == signature_NSC_ebx)
  	processor = PROCESSOR_GEODE;
!       else if (has_movbe && family == 22)
  	processor = PROCESSOR_BTVER2;
!       else if (has_vaes)
  	processor = PROCESSOR_ZNVER3;
!       else if (has_clwb)
  	processor = PROCESSOR_ZNVER2;
!       else if (has_clzero)
  	processor = PROCESSOR_ZNVER1;
!       else if (has_avx2)
!         processor = PROCESSOR_BDVER4;
!       else if (has_xsaveopt)
!         processor = PROCESSOR_BDVER3;
!       else if (has_bmi)
!         processor = PROCESSOR_BDVER2;
!       else if (has_xop)
  	processor = PROCESSOR_BDVER1;
!       else if (has_sse4a && has_ssse3)
!         processor = PROCESSOR_BTVER1;
!       else if (has_sse4a)
  	processor = PROCESSOR_AMDFAM10;
!       else if (has_sse2 || has_longmode)
  	processor = PROCESSOR_K8;
!       else if (has_3dnowp && family == 6)
  	processor = PROCESSOR_ATHLON;
!       else if (has_mmx)
  	processor = PROCESSOR_K6;
        else
  	processor = PROCESSOR_PENTIUM;
      }
!   else if (vendor == signature_CENTAUR_ebx)
      {
        processor = PROCESSOR_GENERIC;
  
--- 453,490 ----
  
        if (name == signature_NSC_ebx)
  	processor = PROCESSOR_GEODE;
!       else if (has_feature (FEATURE_MOVBE) && family == 22)
  	processor = PROCESSOR_BTVER2;
!       else if (has_feature (FEATURE_VAES))
  	processor = PROCESSOR_ZNVER3;
!       else if (has_feature (FEATURE_CLWB))
  	processor = PROCESSOR_ZNVER2;
!       else if (has_feature (FEATURE_CLZERO))
  	processor = PROCESSOR_ZNVER1;
!       else if (has_feature (FEATURE_AVX2))
! 	processor = PROCESSOR_BDVER4;
!       else if (has_feature (FEATURE_XSAVEOPT))
! 	processor = PROCESSOR_BDVER3;
!       else if (has_feature (FEATURE_BMI))
! 	processor = PROCESSOR_BDVER2;
!       else if (has_feature (FEATURE_XOP))
  	processor = PROCESSOR_BDVER1;
!       else if (has_feature (FEATURE_SSE4_A)
! 	       && has_feature (FEATURE_SSSE3))
! 	processor = PROCESSOR_BTVER1;
!       else if (has_feature (FEATURE_SSE4_A))
  	processor = PROCESSOR_AMDFAM10;
!       else if (has_feature (FEATURE_SSE2)
! 	       || has_feature (FEATURE_LM))
  	processor = PROCESSOR_K8;
!       else if (has_feature (FEATURE_3DNOWP) && family == 6)
  	processor = PROCESSOR_ATHLON;
!       else if (has_feature (FEATURE_MMX))
  	processor = PROCESSOR_K6;
        else
  	processor = PROCESSOR_PENTIUM;
      }
!   else if (vendor == VENDOR_CENTAUR)
      {
        processor = PROCESSOR_GENERIC;
  
*************** const char *host_detect_local_cpu (int a
*** 706,717 ****
  	  break;
  
  	case 5:
! 	  if (has_3dnow || has_mmx)
  	    processor = PROCESSOR_I486;
  	  break;
  
  	case 6:
! 	  if (has_longmode)
  	    processor = PROCESSOR_K8;
  	  else if (model >= 9)
  	    processor = PROCESSOR_PENTIUMPRO;
--- 495,507 ----
  	  break;
  
  	case 5:
! 	  if (has_feature (FEATURE_3DNOW)
! 	      || has_feature (FEATURE_MMX))
  	    processor = PROCESSOR_I486;
  	  break;
  
  	case 6:
! 	  if (has_feature (FEATURE_LM))
  	    processor = PROCESSOR_K8;
  	  else if (model >= 9)
  	    processor = PROCESSOR_PENTIUMPRO;
*************** const char *host_detect_local_cpu (int a
*** 747,757 ****
        /* Default.  */
        break;
      case PROCESSOR_I486:
!       if (arch && vendor == signature_CENTAUR_ebx)
  	{
  	  if (model >= 6)
  	    cpu = "c3";
! 	  else if (has_3dnow)
  	    cpu = "winchip2";
  	  else
  	    /* Assume WinChip C6.  */
--- 537,547 ----
        /* Default.  */
        break;
      case PROCESSOR_I486:
!       if (arch && vendor == VENDOR_CENTAUR)
  	{
  	  if (model >= 6)
  	    cpu = "c3";
! 	  else if (has_feature (FEATURE_3DNOW))
  	    cpu = "winchip2";
  	  else
  	    /* Assume WinChip C6.  */
*************** const char *host_detect_local_cpu (int a
*** 761,986 ****
  	cpu = "i486";
        break;
      case PROCESSOR_PENTIUM:
!       if (arch && has_mmx)
  	cpu = "pentium-mmx";
        else
  	cpu = "pentium";
        break;
      case PROCESSOR_PENTIUMPRO:
!       switch (model)
  	{
- 	case 0x1c:
- 	case 0x26:
- 	  /* Bonnell.  */
- 	  cpu = "bonnell";
- 	  break;
- 	case 0x37:
- 	case 0x4a:
- 	case 0x4d:
- 	case 0x5d:
- 	  /* Silvermont.  */
- 	case 0x4c:
- 	case 0x5a:
- 	case 0x75:
- 	  /* Airmont.  */
- 	  cpu = "silvermont";
- 	  break;
- 	case 0x5c:
- 	case 0x5f:
- 	  /* Goldmont.  */
- 	  cpu = "goldmont";
- 	  break;
- 	case 0x7a:
- 	  /* Goldmont Plus.  */
- 	  cpu = "goldmont-plus";
- 	  break;
- 	case 0x86:
- 	case 0x96:
- 	case 0x9c:
- 	  /* Tremont.  */
- 	  cpu = "tremont";
- 	  break;
- 	case 0x0f:
- 	  /* Merom.  */
- 	case 0x17:
- 	case 0x1d:
- 	  /* Penryn.  */
- 	  cpu = "core2";
- 	  break;
- 	case 0x1a:
- 	case 0x1e:
- 	case 0x1f:
- 	case 0x2e:
- 	  /* Nehalem.  */
- 	  cpu = "nehalem";
- 	  break;
- 	case 0x25:
- 	case 0x2c:
- 	case 0x2f:
- 	  /* Westmere.  */
- 	  cpu = "westmere";
- 	  break;
- 	case 0x2a:
- 	case 0x2d:
- 	  /* Sandy Bridge.  */
- 	  cpu = "sandybridge";
- 	  break;
- 	case 0x3a:
- 	case 0x3e:
- 	  /* Ivy Bridge.  */
- 	  cpu = "ivybridge";
- 	  break;
- 	case 0x3c:
- 	case 0x3f:
- 	case 0x45:
- 	case 0x46:
- 	  /* Haswell.  */
- 	  cpu = "haswell";
- 	  break;
- 	case 0x3d:
- 	case 0x47:
- 	case 0x4f:
- 	case 0x56:
- 	  /* Broadwell.  */
- 	  cpu = "broadwell";
- 	  break;
- 	case 0x4e:
- 	case 0x5e:
- 	  /* Skylake.  */
- 	case 0x8e:
- 	case 0x9e:
- 	  /* Kaby Lake.  */
- 	case 0xa5:
- 	case 0xa6:
- 	  /* Comet Lake.  */
- 	  cpu = "skylake";
- 	  break;
- 	case 0x55:
- 	  if (has_avx512vnni)
- 	    /* Cascade Lake.  */
- 	    cpu = "cascadelake";
- 	  else
- 	    /* Skylake with AVX-512.  */
- 	    cpu = "skylake-avx512";
- 	  break;
- 	case 0x6a:
- 	case 0x6c:
- 	  /* Ice Lake server.  */
- 	  cpu = "icelake-server";
- 	  break;
- 	case 0x7e:
- 	case 0x7d:
- 	case 0x9d:
- 	  /* Ice Lake client.  */
- 	  cpu = "icelake-client";
- 	  break;
- 	case 0x8c:
- 	case 0x8d:
- 	  /* Tiger Lake.  */
- 	  cpu = "tigerlake";
- 	  break;
- 	case 0x57:
- 	  /* Knights Landing.  */
- 	  cpu = "knl";
- 	  break;
- 	case 0x66:
- 	  /* Cannon Lake.  */
- 	  cpu = "cannonlake";
- 	  break;
- 	case 0x85:
- 	  /* Knights Mill.  */
- 	  cpu = "knm";
- 	  break;
- 	default:
  	  if (arch)
  	    {
  	      /* This is unknown family 0x6 CPU.  */
! 	      if (has_avx)
! 	      {
! 		/* Assume Tiger Lake */
! 		if (has_avx512vp2intersect)
! 		  cpu = "tigerlake";
! 		/* Assume Cooper Lake */
! 		else if (has_avx512bf16)
! 		  cpu = "cooperlake";
! 		/* Assume Ice Lake Server.  */
! 		else if (has_wbnoinvd)
! 		  cpu = "icelake-server";
  		/* Assume Ice Lake.  */
! 		else if (has_avx512bitalg)
  		  cpu = "icelake-client";
  		/* Assume Cannon Lake.  */
! 		else if (has_avx512vbmi)
  		  cpu = "cannonlake";
  		/* Assume Knights Mill.  */
! 		else if (has_avx5124vnniw)
  		  cpu = "knm";
  		/* Assume Knights Landing.  */
! 		else if (has_avx512er)
  		  cpu = "knl";
  		/* Assume Skylake with AVX-512.  */
! 		else if (has_avx512f)
  		  cpu = "skylake-avx512";
  		/* Assume Skylake.  */
! 		else if (has_clflushopt)
  		  cpu = "skylake";
  		/* Assume Broadwell.  */
! 		else if (has_adx)
  		  cpu = "broadwell";
! 		else if (has_avx2)
  		/* Assume Haswell.  */
  		  cpu = "haswell";
  		else
  		/* Assume Sandy Bridge.  */
  		  cpu = "sandybridge";	      
  	      }
! 	      else if (has_sse4_2)
  		{
! 		  if (has_gfni)
  		    /* Assume Tremont.  */
  		    cpu = "tremont";
! 		  else if (has_sgx)
  		    /* Assume Goldmont Plus.  */
  		    cpu = "goldmont-plus";
! 		  else if (has_xsave)
  		    /* Assume Goldmont.  */
  		    cpu = "goldmont";
! 		  else if (has_movbe)
  		    /* Assume Silvermont.  */
  		    cpu = "silvermont";
  		  else
  		    /* Assume Nehalem.  */
  		    cpu = "nehalem";
  		}
! 	      else if (has_ssse3)
  		{
! 		  if (has_movbe)
  		    /* Assume Bonnell.  */
  		    cpu = "bonnell";
  		  else
  		    /* Assume Core 2.  */
  		    cpu = "core2";
  		}
! 	      else if (has_longmode)
  		/* Perhaps some emulator?  Assume x86-64, otherwise gcc
  		   -march=native would be unusable for 64-bit compilations,
  		   as all the CPUs below are 32-bit only.  */
  		cpu = "x86-64";
! 	      else if (has_sse3)
  		{
! 		  if (vendor == signature_CENTAUR_ebx)
  		    /* C7 / Eden "Esther" */
  		    cpu = "c7";
  		  else
  		    /* It is Core Duo.  */
  		    cpu = "pentium-m";
  		}
! 	      else if (has_sse2)
  		/* It is Pentium M.  */
  		cpu = "pentium-m";
! 	      else if (has_sse)
  		{
! 		  if (vendor == signature_CENTAUR_ebx)
  		    {
  		      if (model >= 9)
  			/* Eden "Nehemiah" */
--- 551,663 ----
  	cpu = "i486";
        break;
      case PROCESSOR_PENTIUM:
!       if (arch && has_feature (FEATURE_MMX))
  	cpu = "pentium-mmx";
        else
  	cpu = "pentium";
        break;
      case PROCESSOR_PENTIUMPRO:
!       cpu = get_intel_cpu (&cpu_model, &cpu_model2, cpu_features2);
!       if (cpu == NULL)
  	{
  	  if (arch)
  	    {
  	      /* This is unknown family 0x6 CPU.  */
! 	      if (has_feature (FEATURE_AVX))
! 		{
! 		  if (has_feature (FEATURE_AVX512VP2INTERSECT))
! 		    {
! 		      if (has_feature (FEATURE_TSXLDTRK))
! 			/* Assume Sapphire Rapids.  */
! 			cpu = "sapphirerapids";
! 		      else
! 			/* Assume Tiger Lake */
! 			cpu = "tigerlake";
! 		    }
! 		  /* Assume Cooper Lake */
! 		  else if (has_feature (FEATURE_AVX512BF16))
! 		    cpu = "cooperlake";
! 		  /* Assume Ice Lake Server.  */
! 		  else if (has_feature (FEATURE_WBNOINVD))
! 		    cpu = "icelake-server";
  		/* Assume Ice Lake.  */
! 		else if (has_feature (FEATURE_AVX512BITALG))
  		  cpu = "icelake-client";
  		/* Assume Cannon Lake.  */
! 		else if (has_feature (FEATURE_AVX512VBMI))
  		  cpu = "cannonlake";
  		/* Assume Knights Mill.  */
! 		else if (has_feature (FEATURE_AVX5124VNNIW))
  		  cpu = "knm";
  		/* Assume Knights Landing.  */
! 		else if (has_feature (FEATURE_AVX512ER))
  		  cpu = "knl";
  		/* Assume Skylake with AVX-512.  */
! 		else if (has_feature (FEATURE_AVX512F))
  		  cpu = "skylake-avx512";
+ 		 /* Assume Alder Lake */
+ 		else if (has_feature (FEATURE_SERIALIZE))
+ 		    cpu = "alderlake";
  		/* Assume Skylake.  */
! 		else if (has_feature (FEATURE_CLFLUSHOPT))
  		  cpu = "skylake";
  		/* Assume Broadwell.  */
! 		else if (has_feature (FEATURE_ADX))
  		  cpu = "broadwell";
! 		else if (has_feature (FEATURE_AVX2))
  		/* Assume Haswell.  */
  		  cpu = "haswell";
  		else
  		/* Assume Sandy Bridge.  */
  		  cpu = "sandybridge";	      
  	      }
! 	      else if (has_feature (FEATURE_SSE4_2))
  		{
! 		  if (has_feature (FEATURE_GFNI))
  		    /* Assume Tremont.  */
  		    cpu = "tremont";
! 		  else if (has_feature (FEATURE_SGX))
  		    /* Assume Goldmont Plus.  */
  		    cpu = "goldmont-plus";
! 		  else if (has_feature (FEATURE_XSAVE))
  		    /* Assume Goldmont.  */
  		    cpu = "goldmont";
! 		  else if (has_feature (FEATURE_MOVBE))
  		    /* Assume Silvermont.  */
  		    cpu = "silvermont";
  		  else
  		    /* Assume Nehalem.  */
  		    cpu = "nehalem";
  		}
! 	      else if (has_feature (FEATURE_SSSE3))
  		{
! 		  if (has_feature (FEATURE_MOVBE))
  		    /* Assume Bonnell.  */
  		    cpu = "bonnell";
  		  else
  		    /* Assume Core 2.  */
  		    cpu = "core2";
  		}
! 	      else if (has_feature (FEATURE_LM))
  		/* Perhaps some emulator?  Assume x86-64, otherwise gcc
  		   -march=native would be unusable for 64-bit compilations,
  		   as all the CPUs below are 32-bit only.  */
  		cpu = "x86-64";
! 	      else if (has_feature (FEATURE_SSE3))
  		{
! 		  if (vendor == VENDOR_CENTAUR)
  		    /* C7 / Eden "Esther" */
  		    cpu = "c7";
  		  else
  		    /* It is Core Duo.  */
  		    cpu = "pentium-m";
  		}
! 	      else if (has_feature (FEATURE_SSE2))
  		/* It is Pentium M.  */
  		cpu = "pentium-m";
! 	      else if (has_feature (FEATURE_SSE))
  		{
! 		  if (vendor == VENDOR_CENTAUR)
  		    {
  		      if (model >= 9)
  			/* Eden "Nehemiah" */
*************** const char *host_detect_local_cpu (int a
*** 992,998 ****
  		    /* It is Pentium III.  */
  		    cpu = "pentium3";
  		}
! 	      else if (has_mmx)
  		/* It is Pentium II.  */
  		cpu = "pentium2";
  	      else
--- 669,675 ----
  		    /* It is Pentium III.  */
  		    cpu = "pentium3";
  		}
! 	      else if (has_feature (FEATURE_MMX))
  		/* It is Pentium II.  */
  		cpu = "pentium2";
  	      else
*************** const char *host_detect_local_cpu (int a
*** 1002,1014 ****
  	  else
  	    /* For -mtune, we default to -mtune=generic.  */
  	    cpu = "generic";
- 	  break;
  	}
        break;
      case PROCESSOR_PENTIUM4:
!       if (has_sse3)
  	{
! 	  if (has_longmode)
  	    cpu = "nocona";
  	  else
  	    cpu = "prescott";
--- 679,690 ----
  	  else
  	    /* For -mtune, we default to -mtune=generic.  */
  	    cpu = "generic";
  	}
        break;
      case PROCESSOR_PENTIUM4:
!       if (has_feature (FEATURE_SSE3))
  	{
! 	  if (has_feature (FEATURE_LM))
  	    cpu = "nocona";
  	  else
  	    cpu = "prescott";
*************** const char *host_detect_local_cpu (int a
*** 1020,1032 ****
        cpu = "geode";
        break;
      case PROCESSOR_K6:
!       if (arch && has_3dnow)
  	cpu = "k6-3";
        else
  	cpu = "k6";
        break;
      case PROCESSOR_ATHLON:
!       if (arch && has_sse)
  	cpu = "athlon-4";
        else
  	cpu = "athlon";
--- 696,708 ----
        cpu = "geode";
        break;
      case PROCESSOR_K6:
!       if (arch && has_feature (FEATURE_3DNOW))
  	cpu = "k6-3";
        else
  	cpu = "k6";
        break;
      case PROCESSOR_ATHLON:
!       if (arch && has_feature (FEATURE_SSE))
  	cpu = "athlon-4";
        else
  	cpu = "athlon";
*************** const char *host_detect_local_cpu (int a
*** 1034,1055 ****
      case PROCESSOR_K8:
        if (arch)
  	{
! 	  if (vendor == signature_CENTAUR_ebx)
  	    {
! 	      if (has_sse4_1)
  		/* Nano 3000 | Nano dual / quad core | Eden X4 */
  		cpu = "nano-3000";
! 	      else if (has_ssse3)
  		/* Nano 1000 | Nano 2000 */
  		cpu = "nano";
! 	      else if (has_sse3)
  		/* Eden X2 */
  		cpu = "eden-x2";
  	      else
  		/* Default to k8 */
  		cpu = "k8";
  	    }
! 	  else if (has_sse3)
  	    cpu = "k8-sse3";
  	  else
  	    cpu = "k8";
--- 710,731 ----
      case PROCESSOR_K8:
        if (arch)
  	{
! 	  if (vendor == VENDOR_CENTAUR)
  	    {
! 	      if (has_feature (FEATURE_SSE4_1))
  		/* Nano 3000 | Nano dual / quad core | Eden X4 */
  		cpu = "nano-3000";
! 	      else if (has_feature (FEATURE_SSSE3))
  		/* Nano 1000 | Nano 2000 */
  		cpu = "nano";
! 	      else if (has_feature (FEATURE_SSE3))
  		/* Eden X2 */
  		cpu = "eden-x2";
  	      else
  		/* Default to k8 */
  		cpu = "k8";
  	    }
! 	  else if (has_feature (FEATURE_SSE3))
  	    cpu = "k8-sse3";
  	  else
  	    cpu = "k8";
*************** const char *host_detect_local_cpu (int a
*** 1093,1119 ****
        /* Use something reasonable.  */
        if (arch)
  	{
! 	  if (has_ssse3)
  	    cpu = "core2";
! 	  else if (has_sse3)
  	    {
! 	      if (has_longmode)
  		cpu = "nocona";
  	      else
  		cpu = "prescott";
  	    }
! 	  else if (has_longmode)
  	    /* Perhaps some emulator?  Assume x86-64, otherwise gcc
  	       -march=native would be unusable for 64-bit compilations,
  	       as all the CPUs below are 32-bit only.  */
  	    cpu = "x86-64";
! 	  else if (has_sse2)
  	    cpu = "pentium4";
! 	  else if (has_cmov)
  	    cpu = "pentiumpro";
! 	  else if (has_mmx)
  	    cpu = "pentium-mmx";
! 	  else if (has_cmpxchg8b)
  	    cpu = "pentium";
  	}
        else
--- 769,795 ----
        /* Use something reasonable.  */
        if (arch)
  	{
! 	  if (has_feature (FEATURE_SSSE3))
  	    cpu = "core2";
! 	  else if (has_feature (FEATURE_SSE3))
  	    {
! 	      if (has_feature (FEATURE_LM))
  		cpu = "nocona";
  	      else
  		cpu = "prescott";
  	    }
! 	  else if (has_feature (FEATURE_LM))
  	    /* Perhaps some emulator?  Assume x86-64, otherwise gcc
  	       -march=native would be unusable for 64-bit compilations,
  	       as all the CPUs below are 32-bit only.  */
  	    cpu = "x86-64";
! 	  else if (has_feature (FEATURE_SSE2))
  	    cpu = "pentium4";
! 	  else if (has_feature (FEATURE_CMOV))
  	    cpu = "pentiumpro";
! 	  else if (has_feature (FEATURE_MMX))
  	    cpu = "pentium-mmx";
! 	  else if (has_feature (FEATURE_CMPXCHG8B))
  	    cpu = "pentium";
  	}
        else
*************** const char *host_detect_local_cpu (int a
*** 1122,1220 ****
  
    if (arch)
      {
!       const char *mmx = has_mmx ? " -mmmx" : " -mno-mmx";
!       const char *mmx3dnow = has_3dnow ? " -m3dnow" : " -mno-3dnow";
!       const char *sse = has_sse ? " -msse" : " -mno-sse";
!       const char *sse2 = has_sse2 ? " -msse2" : " -mno-sse2";
!       const char *sse3 = has_sse3 ? " -msse3" : " -mno-sse3";
!       const char *ssse3 = has_ssse3 ? " -mssse3" : " -mno-ssse3";
!       const char *sse4a = has_sse4a ? " -msse4a" : " -mno-sse4a";
!       const char *cx16 = has_cmpxchg16b ? " -mcx16" : " -mno-cx16";
!       const char *sahf = has_lahf_lm ? " -msahf" : " -mno-sahf";
!       const char *movbe = has_movbe ? " -mmovbe" : " -mno-movbe";
!       const char *aes = has_aes ? " -maes" : " -mno-aes";
!       const char *sha = has_sha ? " -msha" : " -mno-sha";
!       const char *pclmul = has_pclmul ? " -mpclmul" : " -mno-pclmul";
!       const char *popcnt = has_popcnt ? " -mpopcnt" : " -mno-popcnt";
!       const char *abm = has_abm ? " -mabm" : " -mno-abm";
!       const char *lwp = has_lwp ? " -mlwp" : " -mno-lwp";
!       const char *fma = has_fma ? " -mfma" : " -mno-fma";
!       const char *fma4 = has_fma4 ? " -mfma4" : " -mno-fma4";
!       const char *xop = has_xop ? " -mxop" : " -mno-xop";
!       const char *bmi = has_bmi ? " -mbmi" : " -mno-bmi";
!       const char *pconfig = has_pconfig ? " -mpconfig" : " -mno-pconfig";
!       const char *wbnoinvd = has_wbnoinvd ? " -mwbnoinvd" : " -mno-wbnoinvd";
!       const char *sgx = has_sgx ? " -msgx" : " -mno-sgx";
!       const char *bmi2 = has_bmi2 ? " -mbmi2" : " -mno-bmi2";
!       const char *tbm = has_tbm ? " -mtbm" : " -mno-tbm";
!       const char *avx = has_avx ? " -mavx" : " -mno-avx";
!       const char *avx2 = has_avx2 ? " -mavx2" : " -mno-avx2";
!       const char *sse4_2 = has_sse4_2 ? " -msse4.2" : " -mno-sse4.2";
!       const char *sse4_1 = has_sse4_1 ? " -msse4.1" : " -mno-sse4.1";
!       const char *lzcnt = has_lzcnt ? " -mlzcnt" : " -mno-lzcnt";
!       const char *hle = has_hle ? " -mhle" : " -mno-hle";
!       const char *rtm = has_rtm ? " -mrtm" : " -mno-rtm";
!       const char *rdrnd = has_rdrnd ? " -mrdrnd" : " -mno-rdrnd";
!       const char *f16c = has_f16c ? " -mf16c" : " -mno-f16c";
!       const char *fsgsbase = has_fsgsbase ? " -mfsgsbase" : " -mno-fsgsbase";
!       const char *rdseed = has_rdseed ? " -mrdseed" : " -mno-rdseed";
!       const char *prfchw = has_prfchw ? " -mprfchw" : " -mno-prfchw";
!       const char *adx = has_adx ? " -madx" : " -mno-adx";
!       const char *fxsr = has_fxsr ? " -mfxsr" : " -mno-fxsr";
!       const char *xsave = has_xsave ? " -mxsave" : " -mno-xsave";
!       const char *xsaveopt = has_xsaveopt ? " -mxsaveopt" : " -mno-xsaveopt";
!       const char *avx512f = has_avx512f ? " -mavx512f" : " -mno-avx512f";
!       const char *avx512er = has_avx512er ? " -mavx512er" : " -mno-avx512er";
!       const char *avx512cd = has_avx512cd ? " -mavx512cd" : " -mno-avx512cd";
!       const char *avx512pf = has_avx512pf ? " -mavx512pf" : " -mno-avx512pf";
!       const char *prefetchwt1 = has_prefetchwt1 ? " -mprefetchwt1" : " -mno-prefetchwt1";
!       const char *clflushopt = has_clflushopt ? " -mclflushopt" : " -mno-clflushopt";
!       const char *xsavec = has_xsavec ? " -mxsavec" : " -mno-xsavec";
!       const char *xsaves = has_xsaves ? " -mxsaves" : " -mno-xsaves";
!       const char *avx512dq = has_avx512dq ? " -mavx512dq" : " -mno-avx512dq";
!       const char *avx512bw = has_avx512bw ? " -mavx512bw" : " -mno-avx512bw";
!       const char *avx512vl = has_avx512vl ? " -mavx512vl" : " -mno-avx512vl";
!       const char *avx512ifma = has_avx512ifma ? " -mavx512ifma" : " -mno-avx512ifma";
!       const char *avx512vbmi = has_avx512vbmi ? " -mavx512vbmi" : " -mno-avx512vbmi";
!       const char *avx5124vnniw = has_avx5124vnniw ? " -mavx5124vnniw" : " -mno-avx5124vnniw";
!       const char *avx512vbmi2 = has_avx512vbmi2 ? " -mavx512vbmi2" : " -mno-avx512vbmi2";
!       const char *avx512vnni = has_avx512vnni ? " -mavx512vnni" : " -mno-avx512vnni";
!       const char *avx5124fmaps = has_avx5124fmaps ? " -mavx5124fmaps" : " -mno-avx5124fmaps";
!       const char *clwb = has_clwb ? " -mclwb" : " -mno-clwb";
!       const char *mwaitx  = has_mwaitx  ? " -mmwaitx"  : " -mno-mwaitx"; 
!       const char *clzero  = has_clzero  ? " -mclzero"  : " -mno-clzero";
!       const char *pku = has_pku ? " -mpku" : " -mno-pku";
!       const char *rdpid = has_rdpid ? " -mrdpid" : " -mno-rdpid";
!       const char *gfni = has_gfni ? " -mgfni" : " -mno-gfni";
!       const char *shstk = has_shstk ? " -mshstk" : " -mno-shstk";
!       const char *vaes = has_vaes ? " -mvaes" : " -mno-vaes";
!       const char *vpclmulqdq = has_vpclmulqdq ? " -mvpclmulqdq" : " -mno-vpclmulqdq";
!       const char *avx512vp2intersect = has_avx512vp2intersect ? " -mavx512vp2intersect" : " -mno-avx512vp2intersect";
!       const char *avx512bitalg = has_avx512bitalg ? " -mavx512bitalg" : " -mno-avx512bitalg";
!       const char *avx512vpopcntdq = has_avx512vpopcntdq ? " -mavx512vpopcntdq" : " -mno-avx512vpopcntdq";
!       const char *movdiri = has_movdiri ? " -mmovdiri" : " -mno-movdiri";
!       const char *movdir64b = has_movdir64b ? " -mmovdir64b" : " -mno-movdir64b";
!       const char *enqcmd = has_enqcmd ? " -menqcmd" : " -mno-enqcmd";
!       const char *waitpkg = has_waitpkg ? " -mwaitpkg" : " -mno-waitpkg";
!       const char *cldemote = has_cldemote ? " -mcldemote" : " -mno-cldemote";
!       const char *ptwrite = has_ptwrite ? " -mptwrite" : " -mno-ptwrite";
!       const char *avx512bf16 = has_avx512bf16 ? " -mavx512bf16" : " -mno-avx512bf16";
! 
!       options = concat (options, mmx, mmx3dnow, sse, sse2, sse3, ssse3,
! 			sse4a, cx16, sahf, movbe, aes, sha, pclmul,
! 			popcnt, abm, lwp, fma, fma4, xop, bmi, sgx, bmi2,
! 			pconfig, wbnoinvd,
! 			tbm, avx, avx2, sse4_2, sse4_1, lzcnt, rtm,
! 			hle, rdrnd, f16c, fsgsbase, rdseed, prfchw, adx,
! 			fxsr, xsave, xsaveopt, avx512f, avx512er,
! 			avx512cd, avx512pf, prefetchwt1, clflushopt,
! 			xsavec, xsaves, avx512dq, avx512bw, avx512vl,
! 			avx512ifma, avx512vbmi, avx5124fmaps, avx5124vnniw,
! 			clwb, mwaitx, clzero, pku, rdpid, gfni, shstk,
! 			avx512vbmi2, avx512vnni, vaes, vpclmulqdq,
! 			avx512bitalg, avx512vpopcntdq, movdiri, movdir64b,
! 			waitpkg, cldemote, ptwrite, avx512bf16, enqcmd,
! 			avx512vp2intersect, NULL);
      }
  
  done:
--- 798,815 ----
  
    if (arch)
      {
!       unsigned int i;
!       const char *const neg_option = " -mno-";
!       for (i = 0; i < ARRAY_SIZE (isa_names_table); i++)
! 	if (isa_names_table[i].option)
! 	  {
! 	    if (has_feature (isa_names_table[i].feature))
! 	      options = concat (options, " ",
! 				isa_names_table[i].option, NULL);
! 	    else
! 	      options = concat (options, neg_option,
! 				isa_names_table[i].option + 2, NULL);
! 	  }
      }
  
  done:
diff -Nrcpad gcc-10.3.0/gcc/config/i386/driver-mingw32.c gcc-11.1.0/gcc/config/i386/driver-mingw32.c
*** gcc-10.3.0/gcc/config/i386/driver-mingw32.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/driver-mingw32.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Host OS specific configuration for the gcc driver.
!    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Host OS specific configuration for the gcc driver.
!    Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/emmintrin.h gcc-11.1.0/gcc/config/i386/emmintrin.h
*** gcc-10.3.0/gcc/config/i386/emmintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/emmintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2003-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2003-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** _mm_loadu_si64 (void const *__P)
*** 715,720 ****
--- 715,733 ----
    return _mm_loadl_epi64 ((__m128i_u *)__P);
  }
  
+ extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_loadu_si32 (void const *__P)
+ {
+   return _mm_set_epi32 (*(int *)__P, (int)0, (int)0, (int)0);
+ }
+ 
+ extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_loadu_si16 (void const *__P)
+ {
+   return _mm_set_epi16 (*(short *)__P, (short)0, (short)0, (short)0,
+ 			(short)0, (short)0, (short)0, (short)0);
+ }
+ 
  extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_store_si128 (__m128i *__P, __m128i __B)
  {
*************** _mm_storeu_si64 (void *__P, __m128i __B)
*** 739,744 ****
--- 752,769 ----
    _mm_storel_epi64 ((__m128i_u *)__P, __B);
  }
  
+ extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_storeu_si32 (void *__P, __m128i __B)
+ {
+   *(__m32_u *)__P = (__m32) ((__v4si)__B)[0];
+ }
+ 
+ extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_storeu_si16 (void *__P, __m128i __B)
+ {
+   *(__m16_u *)__P = (__m16) ((__v8hi)__B)[0];
+ }
+ 
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_movepi64_pi64 (__m128i __B)
  {
diff -Nrcpad gcc-10.3.0/gcc/config/i386/enqcmdintrin.h gcc-11.1.0/gcc/config/i386/enqcmdintrin.h
*** gcc-10.3.0/gcc/config/i386/enqcmdintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/enqcmdintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2019-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2019-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 21,28 ****
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #if !defined _IMMINTRIN_H_INCLUDED
! # error "Never use <enqcmdintrin.h> directly; include <x86intrin.h> instead."
  #endif
  
  #ifndef _ENQCMDINTRIN_H_INCLUDED
--- 21,28 ----
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #ifndef _X86GPRINTRIN_H_INCLUDED
! # error "Never use <enqcmdintrin.h> directly; include <x86gprintrin.h> instead."
  #endif
  
  #ifndef _ENQCMDINTRIN_H_INCLUDED
diff -Nrcpad gcc-10.3.0/gcc/config/i386/f16cintrin.h gcc-11.1.0/gcc/config/i386/f16cintrin.h
*** gcc-10.3.0/gcc/config/i386/f16cintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/f16cintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/fma4intrin.h gcc-11.1.0/gcc/config/i386/fma4intrin.h
*** gcc-10.3.0/gcc/config/i386/fma4intrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/fma4intrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2007-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2007-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/fmaintrin.h gcc-11.1.0/gcc/config/i386/fmaintrin.h
*** gcc-10.3.0/gcc/config/i386/fmaintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/fmaintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2011-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/freebsd.h gcc-11.1.0/gcc/config/i386/freebsd.h
*** gcc-10.3.0/gcc/config/i386/freebsd.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/freebsd.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for Intel 386 running FreeBSD with ELF format
!    Copyright (C) 1996-2020 Free Software Foundation, Inc.
     Contributed by Eric Youngdale.
     Modified for stabs-in-ELF by H.J. Lu.
     Adapted from GNU/Linux version by John Polstra.
--- 1,5 ----
  /* Definitions for Intel 386 running FreeBSD with ELF format
!    Copyright (C) 1996-2021 Free Software Foundation, Inc.
     Contributed by Eric Youngdale.
     Modified for stabs-in-ELF by H.J. Lu.
     Adapted from GNU/Linux version by John Polstra.
*************** along with GCC; see the file COPYING3.
*** 129,131 ****
--- 129,135 ----
  
  #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
  
+ /* Define the shadow offsets for asan.  */
+ #undef SUBTARGET_SHADOW_OFFSET
+ #define SUBTARGET_SHADOW_OFFSET	\
+   (TARGET_LP64 ? HOST_WIDE_INT_1 << 46 : HOST_WIDE_INT_1 << 30)
diff -Nrcpad gcc-10.3.0/gcc/config/i386/freebsd64.h gcc-11.1.0/gcc/config/i386/freebsd64.h
*** gcc-10.3.0/gcc/config/i386/freebsd64.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/freebsd64.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for AMD x86-64 running FreeBSD with ELF format
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
     Contributed by David O'Brien <obrien@FreeBSD.org>
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for AMD x86-64 running FreeBSD with ELF format
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
     Contributed by David O'Brien <obrien@FreeBSD.org>
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/i386/fxsrintrin.h gcc-11.1.0/gcc/config/i386/fxsrintrin.h
*** gcc-10.3.0/gcc/config/i386/fxsrintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/fxsrintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2012-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2012-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 21,28 ****
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #if !defined _IMMINTRIN_H_INCLUDED
! # error "Never use <fxsrintrin.h> directly; include <immintrin.h> instead."
  #endif
  
  #ifndef _FXSRINTRIN_H_INCLUDED
--- 21,28 ----
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #ifndef _X86GPRINTRIN_H_INCLUDED
! # error "Never use <fxsrintrin.h> directly; include <x86gprintrin.h> instead."
  #endif
  
  #ifndef _FXSRINTRIN_H_INCLUDED
diff -Nrcpad gcc-10.3.0/gcc/config/i386/gas.h gcc-11.1.0/gcc/config/i386/gas.h
*** gcc-10.3.0/gcc/config/i386/gas.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/gas.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for Intel 386 using GAS.
!    Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for Intel 386 using GAS.
!    Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/geode.md gcc-11.1.0/gcc/config/i386/geode.md
*** gcc-10.3.0/gcc/config/i386/geode.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/geode.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Geode Scheduling
! ;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Geode Scheduling
! ;; Copyright (C) 2006-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/i386/gfniintrin.h gcc-11.1.0/gcc/config/i386/gfniintrin.h
*** gcc-10.3.0/gcc/config/i386/gfniintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/gfniintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/glm.md gcc-11.1.0/gcc/config/i386/glm.md
*** gcc-10.3.0/gcc/config/i386/glm.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/glm.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Goldmont(GLM) Scheduling
! ;; Copyright (C) 2018-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Goldmont(GLM) Scheduling
! ;; Copyright (C) 2018-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/i386/gmm_malloc.h gcc-11.1.0/gcc/config/i386/gmm_malloc.h
*** gcc-10.3.0/gcc/config/i386/gmm_malloc.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/gmm_malloc.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 2004-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2004-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/gnu-property.c gcc-11.1.0/gcc/config/i386/gnu-property.c
*** gcc-10.3.0/gcc/config/i386/gnu-property.c	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/i386/gnu-property.c	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,124 ----
+ /* Functions for x86 GNU property.
+    Copyright (C) 2017-2021 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 "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tm.h"
+ #include "output.h"
+ #include "linux-common.h"
+ 
+ static void
+ emit_gnu_property (unsigned int type, unsigned int data)
+ {
+   int p2align = ptr_mode == SImode ? 2 : 3;
+ 
+   switch_to_section (get_section (".note.gnu.property",
+ 				  SECTION_NOTYPE, NULL));
+ 
+   ASM_OUTPUT_ALIGN (asm_out_file, p2align);
+   /* name length.  */
+   fprintf (asm_out_file, ASM_LONG "1f - 0f\n");
+   /* data length.  */
+   fprintf (asm_out_file, ASM_LONG "4f - 1f\n");
+   /* note type: NT_GNU_PROPERTY_TYPE_0.  */
+   fprintf (asm_out_file, ASM_LONG "5\n");
+   fprintf (asm_out_file, "0:\n");
+   /* vendor name: "GNU".  */
+   fprintf (asm_out_file, STRING_ASM_OP "\"GNU\"\n");
+   fprintf (asm_out_file, "1:\n");
+   ASM_OUTPUT_ALIGN (asm_out_file, p2align);
+   /* pr_type.  */
+   fprintf (asm_out_file, ASM_LONG "0x%x\n", type);
+   /* pr_datasz.  */
+   fprintf (asm_out_file, ASM_LONG "3f - 2f\n");
+   fprintf (asm_out_file, "2:\n");
+   fprintf (asm_out_file, ASM_LONG "0x%x\n", data);
+   fprintf (asm_out_file, "3:\n");
+   ASM_OUTPUT_ALIGN (asm_out_file, p2align);
+   fprintf (asm_out_file, "4:\n");
+ }
+ 
+ void
+ file_end_indicate_exec_stack_and_gnu_property (void)
+ {
+   file_end_indicate_exec_stack ();
+ 
+   if (flag_cf_protection == CF_NONE && !ix86_needed)
+     return;
+ 
+   unsigned int feature_1 = 0;
+ 
+   if (flag_cf_protection & CF_BRANCH)
+     /* GNU_PROPERTY_X86_FEATURE_1_IBT.  */
+     feature_1 |= 0x1;
+ 
+   if (flag_cf_protection & CF_RETURN)
+     /* GNU_PROPERTY_X86_FEATURE_1_SHSTK.  */
+     feature_1 |= 0x2;
+ 
+   /* Generate GNU_PROPERTY_X86_FEATURE_1_AND.  */
+   if (feature_1)
+     emit_gnu_property (0xc0000002, feature_1);
+ 
+   unsigned int isa_1 = 0;
+   if (ix86_needed)
+     {
+       /* GNU_PROPERTY_X86_ISA_1_BASELINE.  */
+       if (TARGET_64BIT
+ 	  || TARGET_FXSR
+ 	  || TARGET_80387
+ 	  || TARGET_MMX
+ 	  || TARGET_SSE
+ 	  || TARGET_SSE2)
+ 	isa_1 |= 1 << 0;
+ 
+       /* GNU_PROPERTY_X86_ISA_1_V2.  */
+       if (TARGET_CMPXCHG16B
+ 	  || (TARGET_64BIT && TARGET_SAHF)
+ 	  || TARGET_POPCNT
+ 	  || TARGET_SSE3
+ 	  || TARGET_SSSE3
+ 	  || TARGET_SSE4_1
+ 	  || TARGET_SSE4_2)
+ 	isa_1 |= 1 << 1;
+ 
+       /* GNU_PROPERTY_X86_ISA_1_V3.  */
+       if (TARGET_AVX
+ 	  || TARGET_AVX2
+ 	  || TARGET_F16C
+ 	  || TARGET_FMA
+ 	  || TARGET_LZCNT
+ 	  || TARGET_MOVBE
+ 	  || TARGET_XSAVE)
+ 	isa_1 |= 1 << 2;
+ 
+       /* GNU_PROPERTY_X86_ISA_1_V4.  */
+       if (TARGET_AVX512F
+ 	  || TARGET_AVX512BW
+ 	  || TARGET_AVX512CD
+ 	  || TARGET_AVX512DQ
+ 	  || TARGET_AVX512VL)
+ 	isa_1 |= 1 << 3;
+     }
+ 
+   /* Generate GNU_PROPERTY_X86_ISA_1_NEEDED.  */
+   if (isa_1)
+     emit_gnu_property (0xc0008002, isa_1);
+ }
diff -Nrcpad gcc-10.3.0/gcc/config/i386/gnu-user-common.h gcc-11.1.0/gcc/config/i386/gnu-user-common.h
*** gcc-10.3.0/gcc/config/i386/gnu-user-common.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/gnu-user-common.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Common definitions for Intel 386 and AMD x86-64 systems using
!    GNU userspace.  Copyright (C) 2012-2020 Free Software Foundation, Inc.
     Contributed by Ilya Enkovich.
  
  This file is part of GCC.
--- 1,5 ----
  /* Common definitions for Intel 386 and AMD x86-64 systems using
!    GNU userspace.  Copyright (C) 2012-2021 Free Software Foundation, Inc.
     Contributed by Ilya Enkovich.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/i386/gnu-user.h gcc-11.1.0/gcc/config/i386/gnu-user.h
*** gcc-10.3.0/gcc/config/i386/gnu-user.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/gnu-user.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for Intel 386 systems using GNU userspace.
!    Copyright (C) 1994-2020 Free Software Foundation, Inc.
     Contributed by Eric Youngdale.
     Modified for stabs-in-ELF by H.J. Lu.
  
--- 1,5 ----
  /* Definitions for Intel 386 systems using GNU userspace.
!    Copyright (C) 1994-2021 Free Software Foundation, Inc.
     Contributed by Eric Youngdale.
     Modified for stabs-in-ELF by H.J. Lu.
  
*************** along with GCC; see the file COPYING3.
*** 39,50 ****
  #undef MCOUNT_NAME
  #define MCOUNT_NAME "mcount"
  
- /* The GLIBC version of mcount for the x86 assumes that there is a
-    frame, so we cannot allow profiling without a frame pointer.  */
- 
- #undef SUBTARGET_FRAME_POINTER_REQUIRED
- #define SUBTARGET_FRAME_POINTER_REQUIRED crtl->profile
- 
  #undef SIZE_TYPE
  #define SIZE_TYPE "unsigned int"
   
--- 39,44 ----
diff -Nrcpad gcc-10.3.0/gcc/config/i386/gnu-user64.h gcc-11.1.0/gcc/config/i386/gnu-user64.h
*** gcc-10.3.0/gcc/config/i386/gnu-user64.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/gnu-user64.h	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions for AMD x86-64 using GNU userspace.
!    Copyright (C) 2001-2020 Free Software Foundation, Inc.
     Contributed by Jan Hubicka <jh@suse.cz>, based on linux.h.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for AMD x86-64 using GNU userspace.
!    Copyright (C) 2001-2021 Free Software Foundation, Inc.
     Contributed by Jan Hubicka <jh@suse.cz>, based on linux.h.
  
  This file is part of GCC.
diff -Nrcpad gcc-10.3.0/gcc/config/i386/gnu.h gcc-11.1.0/gcc/config/i386/gnu.h
*** gcc-10.3.0/gcc/config/i386/gnu.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/gnu.h	Tue Apr 27 10:00:13 2021
***************
*** 1,7 ****
  /* Configuration for an i386 running GNU with ELF as the target machine.  */
  
  /*
! Copyright (C) 1994-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,7 ----
  /* Configuration for an i386 running GNU with ELF as the target machine.  */
  
  /*
! Copyright (C) 1994-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/haswell.md gcc-11.1.0/gcc/config/i386/haswell.md
*** gcc-10.3.0/gcc/config/i386/haswell.md	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/haswell.md	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  ;; Scheduling for Haswell and derived processors.
! ;; Copyright (C) 2004-2020 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling for Haswell and derived processors.
! ;; Copyright (C) 2004-2021 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-10.3.0/gcc/config/i386/host-cygwin.c gcc-11.1.0/gcc/config/i386/host-cygwin.c
*** gcc-10.3.0/gcc/config/i386/host-cygwin.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/host-cygwin.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Cygwin host-specific hook definitions.
!  Copyright (C) 2004-2020 Free Software Foundation, Inc.
  
   This file is part of GCC.
  
--- 1,5 ----
  /* Cygwin host-specific hook definitions.
!  Copyright (C) 2004-2021 Free Software Foundation, Inc.
  
   This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/host-i386-darwin.c gcc-11.1.0/gcc/config/i386/host-i386-darwin.c
*** gcc-10.3.0/gcc/config/i386/host-i386-darwin.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/host-i386-darwin.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* i386-darwin host-specific hook definitions.
!    Copyright (C) 2003-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* i386-darwin host-specific hook definitions.
!    Copyright (C) 2003-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/host-mingw32.c gcc-11.1.0/gcc/config/i386/host-mingw32.c
*** gcc-10.3.0/gcc/config/i386/host-mingw32.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/host-mingw32.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* mingw32 host-specific hook definitions.
!    Copyright (C) 2004-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* mingw32 host-specific hook definitions.
!    Copyright (C) 2004-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/hresetintrin.h gcc-11.1.0/gcc/config/i386/hresetintrin.h
*** gcc-10.3.0/gcc/config/i386/hresetintrin.h	Thu Jan  1 00:00:00 1970
--- gcc-11.1.0/gcc/config/i386/hresetintrin.h	Tue Apr 27 10:00:13 2021
***************
*** 0 ****
--- 1,48 ----
+ /* Copyright (C) 2020-2021 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.
+ 
+    Under Section 7 of GPL version 3, you are granted additional
+    permissions described in the GCC Runtime Library Exception, version
+    3.1, as published by the Free Software Foundation.
+ 
+    You should have received a copy of the GNU General Public License and
+    a copy of the GCC Runtime Library Exception along with this program;
+    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #if !defined _X86GPRINTRIN_H_INCLUDED
+ # error "Never use <hresetintrin.h> directly; include <x86gprintrin.h> instead."
+ #endif
+ 
+ #ifndef _HRESETINTRIN_H_INCLUDED
+ #define _HRESETINTRIN_H_INCLUDED
+ 
+ #ifndef __HRESET__
+ #pragma GCC push_options
+ #pragma GCC target ("hreset")
+ #define __DISABLE_HRESET__
+ #endif /* __HRESET__ */
+ 
+ extern __inline void
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _hreset (unsigned int __EAX)
+ {
+   __builtin_ia32_hreset (__EAX);
+ }
+ 
+ #ifdef __DISABLE_HRESET__
+ #undef __DISABLE_HRESET__
+ #pragma GCC pop_options
+ #endif /* __DISABLE_HRESET__ */
+ #endif /* _HRESETINTRIN_H_INCLUDED.  */
diff -Nrcpad gcc-10.3.0/gcc/config/i386/i386-builtin-types.awk gcc-11.1.0/gcc/config/i386/i386-builtin-types.awk
*** gcc-10.3.0/gcc/config/i386/i386-builtin-types.awk	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/i386-builtin-types.awk	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! #  Copyright (C) 2009-2020 Free Software Foundation, Inc.
  #
  # This program is free software; you can redistribute it and/or modify it
  # under the terms of the GNU General Public License as published by the
--- 1,4 ----
! #  Copyright (C) 2009-2021 Free Software Foundation, Inc.
  #
  # This program is free software; you can redistribute it and/or modify it
  # under the terms of the GNU General Public License as published by the
diff -Nrcpad gcc-10.3.0/gcc/config/i386/i386-builtin-types.def gcc-11.1.0/gcc/config/i386/i386-builtin-types.def
*** gcc-10.3.0/gcc/config/i386/i386-builtin-types.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/i386-builtin-types.def	Tue Apr 27 10:00:13 2021
*************** DEF_FUNCTION_TYPE (UNSIGNED)
*** 194,199 ****
--- 194,200 ----
  DEF_FUNCTION_TYPE (UINT)
  DEF_FUNCTION_TYPE (USHORT)
  DEF_FUNCTION_TYPE (INT)
+ DEF_FUNCTION_TYPE (UINT8)
  DEF_FUNCTION_TYPE (VOID)
  DEF_FUNCTION_TYPE (PVOID)
  
*************** DEF_FUNCTION_TYPE (V8DF, V8DF, V8DF, INT
*** 443,448 ****
--- 444,450 ----
  DEF_FUNCTION_TYPE (V8DF, V8DF, V8DF, INT, V8DF, UQI)
  DEF_FUNCTION_TYPE (V8DF, V8DF, V8DF, INT, V8DF, QI, INT)
  DEF_FUNCTION_TYPE (V8DF, V8DF, INT, V8DF, UQI)
+ DEF_FUNCTION_TYPE (V8DF, V8DF, INT, V8DF, UQI, INT)
  DEF_FUNCTION_TYPE (V8DF, V8DF, V8DF, V8DI, INT)
  DEF_FUNCTION_TYPE (V4DF, V4DF, V4DF, V4DI, INT, UQI)
  DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, V2DI, INT, UQI)
*************** DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF,
*** 452,457 ****
--- 454,460 ----
  DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF, INT, V16SF, UHI)
  DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF, INT, V16SF, HI, INT)
  DEF_FUNCTION_TYPE (V16SF, V16SF, INT, V16SF, UHI)
+ DEF_FUNCTION_TYPE (V16SF, V16SF, INT, V16SF, UHI, INT)
  DEF_FUNCTION_TYPE (V16SI, V16SI, V4SI, INT, V16SI, UHI)
  DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF, V16SI, INT)
  DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF, V16SI, INT, HI, INT)
*************** DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, INT
*** 870,881 ****
  DEF_FUNCTION_TYPE (VOID, PV8DF, V8DF, UQI)
  DEF_FUNCTION_TYPE (VOID, PV8SI, V8DI, UQI)
  DEF_FUNCTION_TYPE (VOID, PV8HI, V8DI, UQI)
! DEF_FUNCTION_TYPE (VOID, PV8HI, V4DI, UQI)
! DEF_FUNCTION_TYPE (VOID, PV8HI, V2DI, UQI)
  DEF_FUNCTION_TYPE (VOID, PV4SI, V4DI, UQI)
! DEF_FUNCTION_TYPE (VOID, PV4SI, V2DI, UQI)
  DEF_FUNCTION_TYPE (VOID, PV8HI, V8SI, UQI)
! DEF_FUNCTION_TYPE (VOID, PV8HI, V4SI, UQI)
  DEF_FUNCTION_TYPE (VOID, PV4DF, V4DF, UQI)
  DEF_FUNCTION_TYPE (VOID, PV2DF, V2DF, UQI)
  DEF_FUNCTION_TYPE (VOID, PV16SF, V16SF, UHI)
--- 873,884 ----
  DEF_FUNCTION_TYPE (VOID, PV8DF, V8DF, UQI)
  DEF_FUNCTION_TYPE (VOID, PV8SI, V8DI, UQI)
  DEF_FUNCTION_TYPE (VOID, PV8HI, V8DI, UQI)
! DEF_FUNCTION_TYPE (VOID, PUDI, V4DI, UQI)
! DEF_FUNCTION_TYPE (VOID, PUSI, V2DI, UQI)
  DEF_FUNCTION_TYPE (VOID, PV4SI, V4DI, UQI)
! DEF_FUNCTION_TYPE (VOID, PUDI, V2DI, UQI)
  DEF_FUNCTION_TYPE (VOID, PV8HI, V8SI, UQI)
! DEF_FUNCTION_TYPE (VOID, PUDI, V4SI, UQI)
  DEF_FUNCTION_TYPE (VOID, PV4DF, V4DF, UQI)
  DEF_FUNCTION_TYPE (VOID, PV2DF, V2DF, UQI)
  DEF_FUNCTION_TYPE (VOID, PV16SF, V16SF, UHI)
*************** DEF_FUNCTION_TYPE (VOID, PV2DI, V2DI, UQ
*** 887,897 ****
  DEF_FUNCTION_TYPE (VOID, PV16SI, V16SI, UHI)
  DEF_FUNCTION_TYPE (VOID, PV16HI, V16SI, UHI)
  DEF_FUNCTION_TYPE (VOID, PV16QI, V16SI, UHI)
! DEF_FUNCTION_TYPE (VOID, PV16QI, V8SI, UQI)
! DEF_FUNCTION_TYPE (VOID, PV16QI, V4SI, UQI)
! DEF_FUNCTION_TYPE (VOID, PV16QI, V8DI, UQI)
! DEF_FUNCTION_TYPE (VOID, PV16QI, V4DI, UQI)
! DEF_FUNCTION_TYPE (VOID, PV16QI, V2DI, UQI)
  DEF_FUNCTION_TYPE (VOID, PV8SI, V8SI, UQI)
  DEF_FUNCTION_TYPE (VOID, PV4SI, V4SI, UQI)
  DEF_FUNCTION_TYPE (VOID, PDOUBLE, V8DF, UQI)
--- 890,900 ----
  DEF_FUNCTION_TYPE (VOID, PV16SI, V16SI, UHI)
  DEF_FUNCTION_TYPE (VOID, PV16HI, V16SI, UHI)
  DEF_FUNCTION_TYPE (VOID, PV16QI, V16SI, UHI)
! DEF_FUNCTION_TYPE (VOID, PUDI, V8SI, UQI)
! DEF_FUNCTION_TYPE (VOID, PUSI, V4SI, UQI)
! DEF_FUNCTION_TYPE (VOID, PUDI, V8DI, UQI)
! DEF_FUNCTION_TYPE (VOID, PUSI, V4DI, UQI)
! DEF_FUNCTION_TYPE (VOID, PUHI, V2DI, UQI)
  DEF_FUNCTION_TYPE (VOID, PV8SI, V8SI, UQI)
  DEF_FUNCTION_TYPE (VOID, PV4SI, V4SI, UQI)
  DEF_FUNCTION_TYPE (VOID, PDOUBLE, V8DF, UQI)
*************** DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, V2D
*** 1026,1033 ****
--- 1029,1038 ----
  DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, V4SF, UQI, INT)
  DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, V4SF, QI, INT)
  DEF_FUNCTION_TYPE (V4SF, V4SF, V2DF, V4SF, QI, INT)
+ DEF_FUNCTION_TYPE (V4SF, V4SF, V2DF, V4SF, UQI, INT)
  DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, V2DF, QI, INT)
  DEF_FUNCTION_TYPE (V2DF, V2DF, V4SF, V2DF, QI, INT)
+ DEF_FUNCTION_TYPE (V2DF, V2DF, V4SF, V2DF, UQI, INT)
  DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, V2DF, INT)
  DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, V4SF, INT)
  
*************** DEF_FUNCTION_TYPE (VOID, PVOID, QI, V2DI
*** 1130,1136 ****
  DEF_FUNCTION_TYPE (VOID, QI, V8SI, PCVOID, INT, INT)
  DEF_FUNCTION_TYPE (VOID, HI, V16SI, PCVOID, INT, INT)
  DEF_FUNCTION_TYPE (VOID, QI, V8DI, PCVOID, INT, INT)
! DEF_FUNCTION_TYPE (VOID, PV8QI, V8HI, UQI)
  DEF_FUNCTION_TYPE (VOID, PV16QI, V16HI, UHI)
  
  DEF_FUNCTION_TYPE_ALIAS (V2DF_FTYPE_V2DF, ROUND)
--- 1135,1141 ----
  DEF_FUNCTION_TYPE (VOID, QI, V8SI, PCVOID, INT, INT)
  DEF_FUNCTION_TYPE (VOID, HI, V16SI, PCVOID, INT, INT)
  DEF_FUNCTION_TYPE (VOID, QI, V8DI, PCVOID, INT, INT)
! DEF_FUNCTION_TYPE (VOID, PUDI, V8HI, UQI)
  DEF_FUNCTION_TYPE (VOID, PV16QI, V16HI, UHI)
  
  DEF_FUNCTION_TYPE_ALIAS (V2DF_FTYPE_V2DF, ROUND)
*************** DEF_FUNCTION_TYPE (V8SF, V8SF, V16HI, V1
*** 1285,1287 ****
--- 1290,1299 ----
  DEF_FUNCTION_TYPE (V8SF, V8SF, V16HI, V16HI, UQI)
  DEF_FUNCTION_TYPE (V4SF, V4SF, V8HI, V8HI)
  DEF_FUNCTION_TYPE (V4SF, V4SF, V8HI, V8HI, UQI)
+ 
+ # KEYLOCKER builtins
+ DEF_FUNCTION_TYPE (UINT, UINT, V2DI, V2DI, PVOID)
+ DEF_FUNCTION_TYPE (UINT, UINT, V2DI, PVOID)
+ DEF_FUNCTION_TYPE (VOID, V2DI, V2DI, V2DI, UINT)
+ DEF_FUNCTION_TYPE (UINT8, PV2DI, V2DI, PCVOID)
+ DEF_FUNCTION_TYPE (UINT8, PV2DI, PCV2DI, PCVOID)
\ No newline at end of file
diff -Nrcpad gcc-10.3.0/gcc/config/i386/i386-builtin.def gcc-11.1.0/gcc/config/i386/i386-builtin.def
*** gcc-10.3.0/gcc/config/i386/i386-builtin.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/i386-builtin.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Builtin functions for ia32.
!    Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Builtin functions for ia32.
!    Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_
*** 244,252 ****
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_us_truncatev16siv16hi2_mask_store, "__builtin_ia32_pmovusdw512mem_mask", IX86_BUILTIN_PMOVUSDW512_MEM, UNKNOWN, (int) VOID_FTYPE_PV16HI_V16SI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_ss_truncatev16siv16hi2_mask_store, "__builtin_ia32_pmovsdw512mem_mask", IX86_BUILTIN_PMOVSDW512_MEM, UNKNOWN, (int) VOID_FTYPE_PV16HI_V16SI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_truncatev16siv16hi2_mask_store, "__builtin_ia32_pmovdw512mem_mask", IX86_BUILTIN_PMOVDW512_MEM, UNKNOWN, (int) VOID_FTYPE_PV16HI_V16SI_UHI)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_truncatev8div16qi2_mask_store, "__builtin_ia32_pmovqb512mem_mask", IX86_BUILTIN_PMOVQB512_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V8DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_us_truncatev8div16qi2_mask_store, "__builtin_ia32_pmovusqb512mem_mask", IX86_BUILTIN_PMOVUSQB512_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V8DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_ss_truncatev8div16qi2_mask_store, "__builtin_ia32_pmovsqb512mem_mask", IX86_BUILTIN_PMOVSQB512_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V8DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_us_truncatev16siv16qi2_mask_store, "__builtin_ia32_pmovusdb512mem_mask", IX86_BUILTIN_PMOVUSDB512_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V16SI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_ss_truncatev16siv16qi2_mask_store, "__builtin_ia32_pmovsdb512mem_mask", IX86_BUILTIN_PMOVSDB512_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V16SI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_truncatev16siv16qi2_mask_store, "__builtin_ia32_pmovdb512mem_mask", IX86_BUILTIN_PMOVDB512_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V16SI_UHI)
--- 244,252 ----
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_us_truncatev16siv16hi2_mask_store, "__builtin_ia32_pmovusdw512mem_mask", IX86_BUILTIN_PMOVUSDW512_MEM, UNKNOWN, (int) VOID_FTYPE_PV16HI_V16SI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_ss_truncatev16siv16hi2_mask_store, "__builtin_ia32_pmovsdw512mem_mask", IX86_BUILTIN_PMOVSDW512_MEM, UNKNOWN, (int) VOID_FTYPE_PV16HI_V16SI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_truncatev16siv16hi2_mask_store, "__builtin_ia32_pmovdw512mem_mask", IX86_BUILTIN_PMOVDW512_MEM, UNKNOWN, (int) VOID_FTYPE_PV16HI_V16SI_UHI)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_truncatev8div16qi2_mask_store_2, "__builtin_ia32_pmovqb512mem_mask", IX86_BUILTIN_PMOVQB512_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V8DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_us_truncatev8div16qi2_mask_store_2, "__builtin_ia32_pmovusqb512mem_mask", IX86_BUILTIN_PMOVUSQB512_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V8DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_ss_truncatev8div16qi2_mask_store_2, "__builtin_ia32_pmovsqb512mem_mask", IX86_BUILTIN_PMOVSQB512_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V8DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_us_truncatev16siv16qi2_mask_store, "__builtin_ia32_pmovusdb512mem_mask", IX86_BUILTIN_PMOVUSDB512_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V16SI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_ss_truncatev16siv16qi2_mask_store, "__builtin_ia32_pmovsdb512mem_mask", IX86_BUILTIN_PMOVSDB512_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V16SI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_truncatev16siv16qi2_mask_store, "__builtin_ia32_pmovdb512mem_mask", IX86_BUILTIN_PMOVDB512_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V16SI_UHI)
*************** BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_
*** 260,271 ****
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_storedf_mask, "__builtin_ia32_storesd_mask", IX86_BUILTIN_STORESD_MASK, UNKNOWN, (int) VOID_FTYPE_PDOUBLE_V2DF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_storesf_mask, "__builtin_ia32_storess_mask", IX86_BUILTIN_STORESS_MASK, UNKNOWN, (int) VOID_FTYPE_PFLOAT_V4SF_UQI)
  
! BDESC (OPTION_MASK_ISA_LWP, 0, CODE_FOR_lwp_llwpcb, "__builtin_ia32_llwpcb", IX86_BUILTIN_LLWPCB, UNKNOWN, (int) VOID_FTYPE_PVOID)
! BDESC (OPTION_MASK_ISA_LWP, 0, CODE_FOR_lwp_slwpcb, "__builtin_ia32_slwpcb", IX86_BUILTIN_SLWPCB, UNKNOWN, (int) PVOID_FTYPE_VOID)
! BDESC (OPTION_MASK_ISA_LWP, 0, CODE_FOR_lwp_lwpvalsi3, "__builtin_ia32_lwpval32", IX86_BUILTIN_LWPVAL32, UNKNOWN, (int) VOID_FTYPE_UINT_UINT_UINT)
! BDESC (OPTION_MASK_ISA_LWP | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_lwp_lwpvaldi3, "__builtin_ia32_lwpval64", IX86_BUILTIN_LWPVAL64, UNKNOWN, (int) VOID_FTYPE_UINT64_UINT_UINT)
! BDESC (OPTION_MASK_ISA_LWP, 0, CODE_FOR_lwp_lwpinssi3, "__builtin_ia32_lwpins32", IX86_BUILTIN_LWPINS32, UNKNOWN, (int) UCHAR_FTYPE_UINT_UINT_UINT)
! BDESC (OPTION_MASK_ISA_LWP | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_lwp_lwpinsdi3, "__builtin_ia32_lwpins64", IX86_BUILTIN_LWPINS64, UNKNOWN, (int) UCHAR_FTYPE_UINT64_UINT_UINT)
  
  /* FSGSBASE */
  BDESC (OPTION_MASK_ISA_FSGSBASE | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_rdfsbasesi, "__builtin_ia32_rdfsbase32", IX86_BUILTIN_RDFSBASE32, UNKNOWN, (int) UNSIGNED_FTYPE_VOID)
--- 260,271 ----
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_storedf_mask, "__builtin_ia32_storesd_mask", IX86_BUILTIN_STORESD_MASK, UNKNOWN, (int) VOID_FTYPE_PDOUBLE_V2DF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_storesf_mask, "__builtin_ia32_storess_mask", IX86_BUILTIN_STORESS_MASK, UNKNOWN, (int) VOID_FTYPE_PFLOAT_V4SF_UQI)
  
! BDESC (OPTION_MASK_ISA_LWP, 0, CODE_FOR_nothing, "__builtin_ia32_llwpcb", IX86_BUILTIN_LLWPCB, UNKNOWN, (int) VOID_FTYPE_PVOID)
! BDESC (OPTION_MASK_ISA_LWP, 0, CODE_FOR_nothing, "__builtin_ia32_slwpcb", IX86_BUILTIN_SLWPCB, UNKNOWN, (int) PVOID_FTYPE_VOID)
! BDESC (OPTION_MASK_ISA_LWP, 0, CODE_FOR_nothing, "__builtin_ia32_lwpval32", IX86_BUILTIN_LWPVAL32, UNKNOWN, (int) VOID_FTYPE_UINT_UINT_UINT)
! BDESC (OPTION_MASK_ISA_LWP | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_nothing, "__builtin_ia32_lwpval64", IX86_BUILTIN_LWPVAL64, UNKNOWN, (int) VOID_FTYPE_UINT64_UINT_UINT)
! BDESC (OPTION_MASK_ISA_LWP, 0, CODE_FOR_nothing, "__builtin_ia32_lwpins32", IX86_BUILTIN_LWPINS32, UNKNOWN, (int) UCHAR_FTYPE_UINT_UINT_UINT)
! BDESC (OPTION_MASK_ISA_LWP | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_nothing, "__builtin_ia32_lwpins64", IX86_BUILTIN_LWPINS64, UNKNOWN, (int) UCHAR_FTYPE_UINT64_UINT_UINT)
  
  /* FSGSBASE */
  BDESC (OPTION_MASK_ISA_FSGSBASE | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_rdfsbasesi, "__builtin_ia32_rdfsbase32", IX86_BUILTIN_RDFSBASE32, UNKNOWN, (int) UNSIGNED_FTYPE_VOID)
*************** BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE
*** 362,401 ****
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_expandv8si_maskz, "__builtin_ia32_expandloadsi256_maskz", IX86_BUILTIN_PEXPANDDLOAD256Z, UNKNOWN, (int) V8SI_FTYPE_PCV8SI_V8SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_expandv4si_maskz, "__builtin_ia32_expandloadsi128_maskz", IX86_BUILTIN_PEXPANDDLOAD128Z, UNKNOWN, (int) V4SI_FTYPE_PCV4SI_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev4div4si2_mask_store, "__builtin_ia32_pmovqd256mem_mask", IX86_BUILTIN_PMOVQD256_MEM, UNKNOWN, (int) VOID_FTYPE_PV4SI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev2div2si2_mask_store, "__builtin_ia32_pmovqd128mem_mask", IX86_BUILTIN_PMOVQD128_MEM, UNKNOWN, (int) VOID_FTYPE_PV4SI_V2DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev4div4si2_mask_store, "__builtin_ia32_pmovsqd256mem_mask", IX86_BUILTIN_PMOVSQD256_MEM, UNKNOWN, (int) VOID_FTYPE_PV4SI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev2div2si2_mask_store, "__builtin_ia32_pmovsqd128mem_mask", IX86_BUILTIN_PMOVSQD128_MEM, UNKNOWN, (int) VOID_FTYPE_PV4SI_V2DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev4div4si2_mask_store, "__builtin_ia32_pmovusqd256mem_mask", IX86_BUILTIN_PMOVUSQD256_MEM, UNKNOWN, (int) VOID_FTYPE_PV4SI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev2div2si2_mask_store, "__builtin_ia32_pmovusqd128mem_mask", IX86_BUILTIN_PMOVUSQD128_MEM, UNKNOWN, (int) VOID_FTYPE_PV4SI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev4div4hi2_mask_store, "__builtin_ia32_pmovqw256mem_mask", IX86_BUILTIN_PMOVQW256_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev2div2hi2_mask_store, "__builtin_ia32_pmovqw128mem_mask", IX86_BUILTIN_PMOVQW128_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev4div4hi2_mask_store, "__builtin_ia32_pmovsqw256mem_mask", IX86_BUILTIN_PMOVSQW256_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev2div2hi2_mask_store, "__builtin_ia32_pmovsqw128mem_mask", IX86_BUILTIN_PMOVSQW128_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev4div4hi2_mask_store, "__builtin_ia32_pmovusqw256mem_mask", IX86_BUILTIN_PMOVUSQW256_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev2div2hi2_mask_store, "__builtin_ia32_pmovusqw128mem_mask", IX86_BUILTIN_PMOVUSQW128_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev4div4qi2_mask_store, "__builtin_ia32_pmovqb256mem_mask", IX86_BUILTIN_PMOVQB256_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev2div2qi2_mask_store, "__builtin_ia32_pmovqb128mem_mask", IX86_BUILTIN_PMOVQB128_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev4div4qi2_mask_store, "__builtin_ia32_pmovsqb256mem_mask", IX86_BUILTIN_PMOVSQB256_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev2div2qi2_mask_store, "__builtin_ia32_pmovsqb128mem_mask", IX86_BUILTIN_PMOVSQB128_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev4div4qi2_mask_store, "__builtin_ia32_pmovusqb256mem_mask", IX86_BUILTIN_PMOVUSQB256_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev2div2qi2_mask_store, "__builtin_ia32_pmovusqb128mem_mask", IX86_BUILTIN_PMOVUSQB128_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev8siv8qi2_mask_store, "__builtin_ia32_pmovdb256mem_mask", IX86_BUILTIN_PMOVDB256_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev4siv4qi2_mask_store, "__builtin_ia32_pmovdb128mem_mask", IX86_BUILTIN_PMOVDB128_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V4SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev8siv8qi2_mask_store, "__builtin_ia32_pmovsdb256mem_mask", IX86_BUILTIN_PMOVSDB256_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev4siv4qi2_mask_store, "__builtin_ia32_pmovsdb128mem_mask", IX86_BUILTIN_PMOVSDB128_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V4SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev8siv8qi2_mask_store, "__builtin_ia32_pmovusdb256mem_mask", IX86_BUILTIN_PMOVUSDB256_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev4siv4qi2_mask_store, "__builtin_ia32_pmovusdb128mem_mask", IX86_BUILTIN_PMOVUSDB128_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev8siv8hi2_mask_store, "__builtin_ia32_pmovdw256mem_mask", IX86_BUILTIN_PMOVDW256_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev4siv4hi2_mask_store, "__builtin_ia32_pmovdw128mem_mask", IX86_BUILTIN_PMOVDW128_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev8siv8hi2_mask_store, "__builtin_ia32_pmovsdw256mem_mask", IX86_BUILTIN_PMOVSDW256_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev4siv4hi2_mask_store, "__builtin_ia32_pmovsdw128mem_mask", IX86_BUILTIN_PMOVSDW128_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev8siv8hi2_mask_store, "__builtin_ia32_pmovusdw256mem_mask", IX86_BUILTIN_PMOVUSDW256_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev4siv4hi2_mask_store, "__builtin_ia32_pmovusdw128mem_mask", IX86_BUILTIN_PMOVUSDW128_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V4SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev8hiv8qi2_mask_store, "__builtin_ia32_pmovwb128mem_mask", IX86_BUILTIN_PMOVWB128_MEM, UNKNOWN, (int) VOID_FTYPE_PV8QI_V8HI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev16hiv16qi2_mask_store, "__builtin_ia32_pmovwb256mem_mask", IX86_BUILTIN_PMOVWB256_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V16HI_UHI)
! BDESC (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev8hiv8qi2_mask_store, "__builtin_ia32_pmovswb128mem_mask", IX86_BUILTIN_PMOVSWB128_MEM, UNKNOWN, (int) VOID_FTYPE_PV8QI_V8HI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev16hiv16qi2_mask_store, "__builtin_ia32_pmovswb256mem_mask", IX86_BUILTIN_PMOVSWB256_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V16HI_UHI)
! BDESC (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev8hiv8qi2_mask_store, "__builtin_ia32_pmovuswb128mem_mask", IX86_BUILTIN_PMOVUSWB128_MEM, UNKNOWN, (int) VOID_FTYPE_PV8QI_V8HI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev16hiv16qi2_mask_store, "__builtin_ia32_pmovuswb256mem_mask", IX86_BUILTIN_PMOVUSWB256_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V16HI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512BW, 0, CODE_FOR_avx512bw_us_truncatev32hiv32qi2_mask_store, "__builtin_ia32_pmovuswb512mem_mask", IX86_BUILTIN_PMOVUSWB512_MEM, UNKNOWN, (int) VOID_FTYPE_PV32QI_V32HI_USI)
  BDESC (OPTION_MASK_ISA_AVX512BW, 0, CODE_FOR_avx512bw_ss_truncatev32hiv32qi2_mask_store, "__builtin_ia32_pmovswb512mem_mask", IX86_BUILTIN_PMOVSWB512_MEM, UNKNOWN, (int) VOID_FTYPE_PV32QI_V32HI_USI)
--- 362,401 ----
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_expandv8si_maskz, "__builtin_ia32_expandloadsi256_maskz", IX86_BUILTIN_PEXPANDDLOAD256Z, UNKNOWN, (int) V8SI_FTYPE_PCV8SI_V8SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_expandv4si_maskz, "__builtin_ia32_expandloadsi128_maskz", IX86_BUILTIN_PEXPANDDLOAD128Z, UNKNOWN, (int) V4SI_FTYPE_PCV4SI_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev4div4si2_mask_store, "__builtin_ia32_pmovqd256mem_mask", IX86_BUILTIN_PMOVQD256_MEM, UNKNOWN, (int) VOID_FTYPE_PV4SI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev2div2si2_mask_store_2, "__builtin_ia32_pmovqd128mem_mask", IX86_BUILTIN_PMOVQD128_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V2DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev4div4si2_mask_store, "__builtin_ia32_pmovsqd256mem_mask", IX86_BUILTIN_PMOVSQD256_MEM, UNKNOWN, (int) VOID_FTYPE_PV4SI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev2div2si2_mask_store_2, "__builtin_ia32_pmovsqd128mem_mask", IX86_BUILTIN_PMOVSQD128_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V2DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev4div4si2_mask_store, "__builtin_ia32_pmovusqd256mem_mask", IX86_BUILTIN_PMOVUSQD256_MEM, UNKNOWN, (int) VOID_FTYPE_PV4SI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev2div2si2_mask_store_2, "__builtin_ia32_pmovusqd128mem_mask", IX86_BUILTIN_PMOVUSQD128_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev4div4hi2_mask_store_2, "__builtin_ia32_pmovqw256mem_mask", IX86_BUILTIN_PMOVQW256_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev2div2hi2_mask_store_2, "__builtin_ia32_pmovqw128mem_mask", IX86_BUILTIN_PMOVQW128_MEM, UNKNOWN, (int) VOID_FTYPE_PUSI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev4div4hi2_mask_store_2, "__builtin_ia32_pmovsqw256mem_mask", IX86_BUILTIN_PMOVSQW256_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev2div2hi2_mask_store_2, "__builtin_ia32_pmovsqw128mem_mask", IX86_BUILTIN_PMOVSQW128_MEM, UNKNOWN, (int) VOID_FTYPE_PUSI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev4div4hi2_mask_store_2, "__builtin_ia32_pmovusqw256mem_mask", IX86_BUILTIN_PMOVUSQW256_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev2div2hi2_mask_store_2, "__builtin_ia32_pmovusqw128mem_mask", IX86_BUILTIN_PMOVUSQW128_MEM, UNKNOWN, (int) VOID_FTYPE_PUSI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev4div4qi2_mask_store_2, "__builtin_ia32_pmovqb256mem_mask", IX86_BUILTIN_PMOVQB256_MEM, UNKNOWN, (int) VOID_FTYPE_PUSI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev2div2qi2_mask_store_2, "__builtin_ia32_pmovqb128mem_mask", IX86_BUILTIN_PMOVQB128_MEM, UNKNOWN, (int) VOID_FTYPE_PUHI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev4div4qi2_mask_store_2, "__builtin_ia32_pmovsqb256mem_mask", IX86_BUILTIN_PMOVSQB256_MEM, UNKNOWN, (int) VOID_FTYPE_PUSI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev2div2qi2_mask_store_2, "__builtin_ia32_pmovsqb128mem_mask", IX86_BUILTIN_PMOVSQB128_MEM, UNKNOWN, (int) VOID_FTYPE_PUHI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev4div4qi2_mask_store_2, "__builtin_ia32_pmovusqb256mem_mask", IX86_BUILTIN_PMOVUSQB256_MEM, UNKNOWN, (int) VOID_FTYPE_PUSI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev2div2qi2_mask_store_2, "__builtin_ia32_pmovusqb128mem_mask", IX86_BUILTIN_PMOVUSQB128_MEM, UNKNOWN, (int) VOID_FTYPE_PUHI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev8siv8qi2_mask_store_2, "__builtin_ia32_pmovdb256mem_mask", IX86_BUILTIN_PMOVDB256_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev4siv4qi2_mask_store_2, "__builtin_ia32_pmovdb128mem_mask", IX86_BUILTIN_PMOVDB128_MEM, UNKNOWN, (int) VOID_FTYPE_PUSI_V4SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev8siv8qi2_mask_store_2, "__builtin_ia32_pmovsdb256mem_mask", IX86_BUILTIN_PMOVSDB256_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev4siv4qi2_mask_store_2, "__builtin_ia32_pmovsdb128mem_mask", IX86_BUILTIN_PMOVSDB128_MEM, UNKNOWN, (int) VOID_FTYPE_PUSI_V4SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev8siv8qi2_mask_store_2, "__builtin_ia32_pmovusdb256mem_mask", IX86_BUILTIN_PMOVUSDB256_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev4siv4qi2_mask_store_2, "__builtin_ia32_pmovusdb128mem_mask", IX86_BUILTIN_PMOVUSDB128_MEM, UNKNOWN, (int) VOID_FTYPE_PUSI_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev8siv8hi2_mask_store, "__builtin_ia32_pmovdw256mem_mask", IX86_BUILTIN_PMOVDW256_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev4siv4hi2_mask_store_2, "__builtin_ia32_pmovdw128mem_mask", IX86_BUILTIN_PMOVDW128_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev8siv8hi2_mask_store, "__builtin_ia32_pmovsdw256mem_mask", IX86_BUILTIN_PMOVSDW256_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev4siv4hi2_mask_store_2, "__builtin_ia32_pmovsdw128mem_mask", IX86_BUILTIN_PMOVSDW128_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev8siv8hi2_mask_store, "__builtin_ia32_pmovusdw256mem_mask", IX86_BUILTIN_PMOVUSDW256_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev4siv4hi2_mask_store_2, "__builtin_ia32_pmovusdw128mem_mask", IX86_BUILTIN_PMOVUSDW128_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V4SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev8hiv8qi2_mask_store_2, "__builtin_ia32_pmovwb128mem_mask", IX86_BUILTIN_PMOVWB128_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V8HI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_truncatev16hiv16qi2_mask_store, "__builtin_ia32_pmovwb256mem_mask", IX86_BUILTIN_PMOVWB256_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V16HI_UHI)
! BDESC (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev8hiv8qi2_mask_store_2, "__builtin_ia32_pmovswb128mem_mask", IX86_BUILTIN_PMOVSWB128_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V8HI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ss_truncatev16hiv16qi2_mask_store, "__builtin_ia32_pmovswb256mem_mask", IX86_BUILTIN_PMOVSWB256_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V16HI_UHI)
! BDESC (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev8hiv8qi2_mask_store_2, "__builtin_ia32_pmovuswb128mem_mask", IX86_BUILTIN_PMOVUSWB128_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V8HI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_us_truncatev16hiv16qi2_mask_store, "__builtin_ia32_pmovuswb256mem_mask", IX86_BUILTIN_PMOVUSWB256_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V16HI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512BW, 0, CODE_FOR_avx512bw_us_truncatev32hiv32qi2_mask_store, "__builtin_ia32_pmovuswb512mem_mask", IX86_BUILTIN_PMOVUSWB512_MEM, UNKNOWN, (int) VOID_FTYPE_PV32QI_V32HI_USI)
  BDESC (OPTION_MASK_ISA_AVX512BW, 0, CODE_FOR_avx512bw_ss_truncatev32hiv32qi2_mask_store, "__builtin_ia32_pmovswb512mem_mask", IX86_BUILTIN_PMOVSWB512_MEM, UNKNOWN, (int) VOID_FTYPE_PV32QI_V32HI_USI)
*************** BDESC (OPTION_MASK_ISA_64BIT, OPTION_MAS
*** 446,451 ****
--- 446,478 ----
  BDESC (0, OPTION_MASK_ISA2_ENQCMD, CODE_FOR_nothing, "__builtin_ia32_enqcmd", IX86_BUILTIN_ENQCMD, UNKNOWN, (int) INT_FTYPE_PVOID_PCVOID)
  BDESC (0, OPTION_MASK_ISA2_ENQCMD, CODE_FOR_nothing, "__builtin_ia32_enqcmds", IX86_BUILTIN_ENQCMDS, UNKNOWN, (int) INT_FTYPE_PVOID_PCVOID)
  
+ /* SERIALIZE */
+ BDESC (0, OPTION_MASK_ISA2_SERIALIZE, CODE_FOR_serialize, "__builtin_ia32_serialize", IX86_BUILTIN_SERIALIZE, UNKNOWN, (int) VOID_FTYPE_VOID)
+ /* TSXLDTRK */
+ BDESC (0, OPTION_MASK_ISA2_TSXLDTRK, CODE_FOR_xsusldtrk, "__builtin_ia32_xsusldtrk", IX86_BUILTIN_XSUSLDTRK, UNKNOWN, (int) VOID_FTYPE_VOID)
+ BDESC (0, OPTION_MASK_ISA2_TSXLDTRK, CODE_FOR_xresldtrk, "__builtin_ia32_xresldtrk", IX86_BUILTIN_XRESLDTRK, UNKNOWN, (int) VOID_FTYPE_VOID)
+ 
+ /* UINTR.  */
+ BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_UINTR, CODE_FOR_clui, "__builtin_ia32_clui", IX86_BUILTIN_CLUI, UNKNOWN, (int) VOID_FTYPE_VOID)
+ BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_UINTR, CODE_FOR_stui, "__builtin_ia32_stui", IX86_BUILTIN_STUI, UNKNOWN, (int) VOID_FTYPE_VOID)
+ BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_UINTR, CODE_FOR_senduipi, "__builtin_ia32_senduipi", IX86_BUILTIN_SENDUIPI, UNKNOWN, (int) VOID_FTYPE_UINT64)
+ 
+ /* HRESET */
+ BDESC (0, OPTION_MASK_ISA2_HRESET, CODE_FOR_hreset, "__builtin_ia32_hreset", IX86_BUILTIN_HRESET, UNKNOWN, (int) VOID_FTYPE_UNSIGNED)
+ 
+ /* KEYLOCKER */
+ BDESC (0, OPTION_MASK_ISA2_KL, CODE_FOR_nothing, "__builtin_ia32_loadiwkey", IX86_BUILTIN_LOADIWKEY, UNKNOWN, (int) VOID_FTYPE_V2DI_V2DI_V2DI_UINT)
+ BDESC (0, OPTION_MASK_ISA2_KL, CODE_FOR_nothing, "__builtin_ia32_aesdec128kl_u8", IX86_BUILTIN_AESDEC128KLU8, UNKNOWN, (int) UINT8_FTYPE_PV2DI_V2DI_PCVOID)
+ BDESC (0, OPTION_MASK_ISA2_KL, CODE_FOR_nothing, "__builtin_ia32_aesdec256kl_u8", IX86_BUILTIN_AESDEC256KLU8, UNKNOWN, (int) UINT8_FTYPE_PV2DI_V2DI_PCVOID)
+ BDESC (0, OPTION_MASK_ISA2_KL, CODE_FOR_nothing, "__builtin_ia32_aesenc128kl_u8", IX86_BUILTIN_AESENC128KLU8, UNKNOWN, (int) UINT8_FTYPE_PV2DI_V2DI_PCVOID)
+ BDESC (0, OPTION_MASK_ISA2_KL, CODE_FOR_nothing, "__builtin_ia32_aesenc256kl_u8", IX86_BUILTIN_AESENC256KLU8, UNKNOWN, (int) UINT8_FTYPE_PV2DI_V2DI_PCVOID)
+ BDESC (0, OPTION_MASK_ISA2_KL, CODE_FOR_nothing, "__builtin_ia32_encodekey128_u32", IX86_BUILTIN_ENCODEKEY128U32, UNKNOWN, (int) UINT_FTYPE_UINT_V2DI_PVOID)
+ BDESC (0, OPTION_MASK_ISA2_KL, CODE_FOR_nothing, "__builtin_ia32_encodekey256_u32", IX86_BUILTIN_ENCODEKEY256U32, UNKNOWN, (int) UINT_FTYPE_UINT_V2DI_V2DI_PVOID)
+ BDESC (0, OPTION_MASK_ISA2_WIDEKL, CODE_FOR_nothing, "__builtin_ia32_aesdecwide128kl_u8", IX86_BUILTIN_AESDECWIDE128KLU8, UNKNOWN, (int) UINT8_FTYPE_PV2DI_PCV2DI_PCVOID)
+ BDESC (0, OPTION_MASK_ISA2_WIDEKL, CODE_FOR_nothing, "__builtin_ia32_aesdecwide256kl_u8", IX86_BUILTIN_AESDECWIDE256KLU8, UNKNOWN, (int) UINT8_FTYPE_PV2DI_PCV2DI_PCVOID)
+ BDESC (0, OPTION_MASK_ISA2_WIDEKL, CODE_FOR_nothing, "__builtin_ia32_aesencwide128kl_u8", IX86_BUILTIN_AESENCWIDE128KLU8, UNKNOWN, (int) UINT8_FTYPE_PV2DI_PCV2DI_PCVOID)
+ BDESC (0, OPTION_MASK_ISA2_WIDEKL, CODE_FOR_nothing, "__builtin_ia32_aesencwide256kl_u8", IX86_BUILTIN_AESENCWIDE256KLU8, UNKNOWN, (int) UINT8_FTYPE_PV2DI_PCV2DI_PCVOID)
+ 
  BDESC_END (SPECIAL_ARGS, ARGS)
  
  /* Builtins with variable number of arguments.  */
*************** BDESC (OPTION_MASK_ISA_MMX, 0, CODE_FOR_
*** 522,529 ****
  BDESC (OPTION_MASK_ISA_MMX, 0, CODE_FOR_mmx_ashrv2si3, "__builtin_ia32_psrad", IX86_BUILTIN_PSRAD, UNKNOWN, (int) V2SI_FTYPE_V2SI_V2SI_COUNT)
  
  /* 3DNow! */
! BDESC (OPTION_MASK_ISA_3DNOW, 0, CODE_FOR_mmx_pf2id, "__builtin_ia32_pf2id", IX86_BUILTIN_PF2ID, UNKNOWN, (int) V2SI_FTYPE_V2SF)
! BDESC (OPTION_MASK_ISA_3DNOW, 0, CODE_FOR_mmx_floatv2si2, "__builtin_ia32_pi2fd", IX86_BUILTIN_PI2FD, UNKNOWN, (int) V2SF_FTYPE_V2SI)
  BDESC (OPTION_MASK_ISA_3DNOW, 0, CODE_FOR_mmx_rcpv2sf2, "__builtin_ia32_pfrcp", IX86_BUILTIN_PFRCP, UNKNOWN, (int) V2SF_FTYPE_V2SF)
  BDESC (OPTION_MASK_ISA_3DNOW, 0, CODE_FOR_mmx_rsqrtv2sf2, "__builtin_ia32_pfrsqrt", IX86_BUILTIN_PFRSQRT, UNKNOWN, (int) V2SF_FTYPE_V2SF)
  
--- 549,556 ----
  BDESC (OPTION_MASK_ISA_MMX, 0, CODE_FOR_mmx_ashrv2si3, "__builtin_ia32_psrad", IX86_BUILTIN_PSRAD, UNKNOWN, (int) V2SI_FTYPE_V2SI_V2SI_COUNT)
  
  /* 3DNow! */
! BDESC (OPTION_MASK_ISA_3DNOW, 0, CODE_FOR_mmx_fix_truncv2sfv2si2, "__builtin_ia32_pf2id", IX86_BUILTIN_PF2ID, UNKNOWN, (int) V2SI_FTYPE_V2SF)
! BDESC (OPTION_MASK_ISA_3DNOW, 0, CODE_FOR_mmx_floatv2siv2sf2, "__builtin_ia32_pi2fd", IX86_BUILTIN_PI2FD, UNKNOWN, (int) V2SF_FTYPE_V2SI)
  BDESC (OPTION_MASK_ISA_3DNOW, 0, CODE_FOR_mmx_rcpv2sf2, "__builtin_ia32_pfrcp", IX86_BUILTIN_PFRCP, UNKNOWN, (int) V2SF_FTYPE_V2SF)
  BDESC (OPTION_MASK_ISA_3DNOW, 0, CODE_FOR_mmx_rsqrtv2sf2, "__builtin_ia32_pfrsqrt", IX86_BUILTIN_PFRSQRT, UNKNOWN, (int) V2SF_FTYPE_V2SF)
  
*************** BDESC (OPTION_MASK_ISA_3DNOW_A, 0, CODE_
*** 549,555 ****
  BDESC (OPTION_MASK_ISA_3DNOW_A, 0, CODE_FOR_mmx_pswapdv2si2, "__builtin_ia32_pswapdsi", IX86_BUILTIN_PSWAPDSI, UNKNOWN, (int) V2SI_FTYPE_V2SI)
  BDESC (OPTION_MASK_ISA_3DNOW_A, 0, CODE_FOR_mmx_pswapdv2sf2, "__builtin_ia32_pswapdsf", IX86_BUILTIN_PSWAPDSF, UNKNOWN, (int) V2SF_FTYPE_V2SF)
  BDESC (OPTION_MASK_ISA_3DNOW_A, 0, CODE_FOR_mmx_hsubv2sf3, "__builtin_ia32_pfnacc", IX86_BUILTIN_PFNACC, UNKNOWN, (int) V2SF_FTYPE_V2SF_V2SF)
! BDESC (OPTION_MASK_ISA_3DNOW_A, 0, CODE_FOR_mmx_addsubv2sf3, "__builtin_ia32_pfpnacc", IX86_BUILTIN_PFPNACC, UNKNOWN, (int) V2SF_FTYPE_V2SF_V2SF)
  
  /* SSE */
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_movmskps, "__builtin_ia32_movmskps", IX86_BUILTIN_MOVMSKPS, UNKNOWN, (int) INT_FTYPE_V4SF)
--- 576,582 ----
  BDESC (OPTION_MASK_ISA_3DNOW_A, 0, CODE_FOR_mmx_pswapdv2si2, "__builtin_ia32_pswapdsi", IX86_BUILTIN_PSWAPDSI, UNKNOWN, (int) V2SI_FTYPE_V2SI)
  BDESC (OPTION_MASK_ISA_3DNOW_A, 0, CODE_FOR_mmx_pswapdv2sf2, "__builtin_ia32_pswapdsf", IX86_BUILTIN_PSWAPDSF, UNKNOWN, (int) V2SF_FTYPE_V2SF)
  BDESC (OPTION_MASK_ISA_3DNOW_A, 0, CODE_FOR_mmx_hsubv2sf3, "__builtin_ia32_pfnacc", IX86_BUILTIN_PFNACC, UNKNOWN, (int) V2SF_FTYPE_V2SF_V2SF)
! BDESC (OPTION_MASK_ISA_3DNOW_A, 0, CODE_FOR_mmx_haddsubv2sf3, "__builtin_ia32_pfpnacc", IX86_BUILTIN_PFPNACC, UNKNOWN, (int) V2SF_FTYPE_V2SF_V2SF)
  
  /* SSE */
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_movmskps, "__builtin_ia32_movmskps", IX86_BUILTIN_MOVMSKPS, UNKNOWN, (int) INT_FTYPE_V4SF)
*************** BDESC (OPTION_MASK_ISA_BMI, 0, CODE_FOR_
*** 1264,1271 ****
  BDESC (OPTION_MASK_ISA_BMI | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_tzcnt_di, "__builtin_ia32_tzcnt_u64", IX86_BUILTIN_TZCNT64, UNKNOWN, (int) UINT64_FTYPE_UINT64)
  
  /* TBM */
! BDESC (OPTION_MASK_ISA_TBM, 0, CODE_FOR_tbm_bextri_si, "__builtin_ia32_bextri_u32", IX86_BUILTIN_BEXTRI32, UNKNOWN, (int) UINT_FTYPE_UINT_UINT)
! BDESC (OPTION_MASK_ISA_TBM | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_tbm_bextri_di, "__builtin_ia32_bextri_u64", IX86_BUILTIN_BEXTRI64, UNKNOWN, (int) UINT64_FTYPE_UINT64_UINT64)
  
  /* F16C */
  BDESC (OPTION_MASK_ISA_F16C, 0, CODE_FOR_vcvtph2ps, "__builtin_ia32_vcvtph2ps", IX86_BUILTIN_CVTPH2PS, UNKNOWN, (int) V4SF_FTYPE_V8HI)
--- 1291,1298 ----
  BDESC (OPTION_MASK_ISA_BMI | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_tzcnt_di, "__builtin_ia32_tzcnt_u64", IX86_BUILTIN_TZCNT64, UNKNOWN, (int) UINT64_FTYPE_UINT64)
  
  /* TBM */
! BDESC (OPTION_MASK_ISA_TBM, 0, CODE_FOR_nothing, "__builtin_ia32_bextri_u32", IX86_BUILTIN_BEXTRI32, UNKNOWN, (int) UINT_FTYPE_UINT_UINT)
! BDESC (OPTION_MASK_ISA_TBM | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_nothing, "__builtin_ia32_bextri_u64", IX86_BUILTIN_BEXTRI64, UNKNOWN, (int) UINT64_FTYPE_UINT64_UINT64)
  
  /* F16C */
  BDESC (OPTION_MASK_ISA_F16C, 0, CODE_FOR_vcvtph2ps, "__builtin_ia32_vcvtph2ps", IX86_BUILTIN_CVTPH2PS, UNKNOWN, (int) V4SF_FTYPE_V8HI)
*************** BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION
*** 1643,1651 ****
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufix_notruncv4dfv4si2_mask, "__builtin_ia32_cvtpd2udq256_mask", IX86_BUILTIN_CVTPD2UDQ256_MASK, UNKNOWN, (int) V4SI_FTYPE_V4DF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufix_notruncv2dfv2si2_mask, "__builtin_ia32_cvtpd2udq128_mask", IX86_BUILTIN_CVTPD2UDQ128_MASK, UNKNOWN, (int) V4SI_FTYPE_V2DF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_truncv4sfv4di2_mask, "__builtin_ia32_cvttps2qq256_mask", IX86_BUILTIN_CVTTPS2QQ256, UNKNOWN, (int) V4DI_FTYPE_V4SF_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_truncv2sfv2di2_mask, "__builtin_ia32_cvttps2qq128_mask", IX86_BUILTIN_CVTTPS2QQ128, UNKNOWN, (int) V2DI_FTYPE_V4SF_V2DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fixuns_truncv4sfv4di2_mask, "__builtin_ia32_cvttps2uqq256_mask", IX86_BUILTIN_CVTTPS2UQQ256, UNKNOWN, (int) V4DI_FTYPE_V4SF_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fixuns_truncv2sfv2di2_mask, "__builtin_ia32_cvttps2uqq128_mask", IX86_BUILTIN_CVTTPS2UQQ128, UNKNOWN, (int) V2DI_FTYPE_V4SF_V2DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_truncv8sfv8si2_mask, "__builtin_ia32_cvttps2dq256_mask", IX86_BUILTIN_CVTTPS2DQ256_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SF_V8SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_truncv4sfv4si2_mask, "__builtin_ia32_cvttps2dq128_mask", IX86_BUILTIN_CVTTPS2DQ128_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufix_truncv8sfv8si2_mask, "__builtin_ia32_cvttps2udq256_mask", IX86_BUILTIN_CVTTPS2UDQ256, UNKNOWN, (int) V8SI_FTYPE_V8SF_V8SI_UQI)
--- 1670,1678 ----
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufix_notruncv4dfv4si2_mask, "__builtin_ia32_cvtpd2udq256_mask", IX86_BUILTIN_CVTPD2UDQ256_MASK, UNKNOWN, (int) V4SI_FTYPE_V4DF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufix_notruncv2dfv2si2_mask, "__builtin_ia32_cvtpd2udq128_mask", IX86_BUILTIN_CVTPD2UDQ128_MASK, UNKNOWN, (int) V4SI_FTYPE_V2DF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_truncv4sfv4di2_mask, "__builtin_ia32_cvttps2qq256_mask", IX86_BUILTIN_CVTTPS2QQ256, UNKNOWN, (int) V4DI_FTYPE_V4SF_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512dq_fix_truncv2sfv2di2_mask, "__builtin_ia32_cvttps2qq128_mask", IX86_BUILTIN_CVTTPS2QQ128, UNKNOWN, (int) V2DI_FTYPE_V4SF_V2DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fixuns_truncv4sfv4di2_mask, "__builtin_ia32_cvttps2uqq256_mask", IX86_BUILTIN_CVTTPS2UQQ256, UNKNOWN, (int) V4DI_FTYPE_V4SF_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512dq_fixuns_truncv2sfv2di2_mask, "__builtin_ia32_cvttps2uqq128_mask", IX86_BUILTIN_CVTTPS2UQQ128, UNKNOWN, (int) V2DI_FTYPE_V4SF_V2DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_truncv8sfv8si2_mask, "__builtin_ia32_cvttps2dq256_mask", IX86_BUILTIN_CVTTPS2DQ256_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SF_V8SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_truncv4sfv4si2_mask, "__builtin_ia32_cvttps2dq128_mask", IX86_BUILTIN_CVTTPS2DQ128_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufix_truncv8sfv8si2_mask, "__builtin_ia32_cvttps2udq256_mask", IX86_BUILTIN_CVTTPS2UDQ256, UNKNOWN, (int) V8SI_FTYPE_V8SF_V8SI_UQI)
*************** BDESC (OPTION_MASK_ISA_GFNI | OPTION_MAS
*** 2599,2643 ****
  BDESC (OPTION_MASK_ISA_GFNI | OPTION_MASK_ISA_SSE2, 0, CODE_FOR_vgf2p8mulb_v16qi, "__builtin_ia32_vgf2p8mulb_v16qi", IX86_BUILTIN_VGF2P8MULB128, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI)
  BDESC (OPTION_MASK_ISA_GFNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vgf2p8mulb_v16qi_mask, "__builtin_ia32_vgf2p8mulb_v16qi_mask", IX86_BUILTIN_VGF2P8MULB128MASK, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI_V16QI_UHI)
  
! /* VNNI */
  
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpbusd_v16si, "__builtin_ia32_vpdpbusd_v16si", IX86_BUILTIN_VPDPBUSDV16SI, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpbusd_v16si_mask, "__builtin_ia32_vpdpbusd_v16si_mask", IX86_BUILTIN_VPDPBUSDV16SI_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpbusd_v16si_maskz, "__builtin_ia32_vpdpbusd_v16si_maskz", IX86_BUILTIN_VPDPBUSDV16SI_MASKZ, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_UHI)
! BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusd_v8si, "__builtin_ia32_vpdpbusd_v8si", IX86_BUILTIN_VPDPBUSDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusd_v8si_mask, "__builtin_ia32_vpdpbusd_v8si_mask", IX86_BUILTIN_VPDPBUSDV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusd_v8si_maskz, "__builtin_ia32_vpdpbusd_v8si_maskz", IX86_BUILTIN_VPDPBUSDV8SI_MASKZ, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusd_v4si, "__builtin_ia32_vpdpbusd_v4si", IX86_BUILTIN_VPDPBUSDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusd_v4si_mask, "__builtin_ia32_vpdpbusd_v4si_mask", IX86_BUILTIN_VPDPBUSDV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusd_v4si_maskz, "__builtin_ia32_vpdpbusd_v4si_maskz", IX86_BUILTIN_VPDPBUSDV4SI_MASKZ, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpbusds_v16si, "__builtin_ia32_vpdpbusds_v16si", IX86_BUILTIN_VPDPBUSDSV16SI, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpbusds_v16si_mask, "__builtin_ia32_vpdpbusds_v16si_mask", IX86_BUILTIN_VPDPBUSDSV16SI_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpbusds_v16si_maskz, "__builtin_ia32_vpdpbusds_v16si_maskz", IX86_BUILTIN_VPDPBUSDSV16SI_MASKZ, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_UHI)
! BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusds_v8si, "__builtin_ia32_vpdpbusds_v8si", IX86_BUILTIN_VPDPBUSDSV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusds_v8si_mask, "__builtin_ia32_vpdpbusds_v8si_mask", IX86_BUILTIN_VPDPBUSDSV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusds_v8si_maskz, "__builtin_ia32_vpdpbusds_v8si_maskz", IX86_BUILTIN_VPDPBUSDSV8SI_MASKZ, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusds_v4si, "__builtin_ia32_vpdpbusds_v4si", IX86_BUILTIN_VPDPBUSDSV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusds_v4si_mask, "__builtin_ia32_vpdpbusds_v4si_mask", IX86_BUILTIN_VPDPBUSDSV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusds_v4si_maskz, "__builtin_ia32_vpdpbusds_v4si_maskz", IX86_BUILTIN_VPDPBUSDSV4SI_MASKZ, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpwssd_v16si, "__builtin_ia32_vpdpwssd_v16si", IX86_BUILTIN_VPDPWSSDV16SI, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpwssd_v16si_mask, "__builtin_ia32_vpdpwssd_v16si_mask", IX86_BUILTIN_VPDPWSSDV16SI_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpwssd_v16si_maskz, "__builtin_ia32_vpdpwssd_v16si_maskz", IX86_BUILTIN_VPDPWSSDV16SI_MASKZ, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_UHI)
! BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssd_v8si, "__builtin_ia32_vpdpwssd_v8si", IX86_BUILTIN_VPDPWSSDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssd_v8si_mask, "__builtin_ia32_vpdpwssd_v8si_mask", IX86_BUILTIN_VPDPWSSDV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssd_v8si_maskz, "__builtin_ia32_vpdpwssd_v8si_maskz", IX86_BUILTIN_VPDPWSSDV8SI_MASKZ, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssd_v4si, "__builtin_ia32_vpdpwssd_v4si", IX86_BUILTIN_VPDPWSSDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssd_v4si_mask, "__builtin_ia32_vpdpwssd_v4si_mask", IX86_BUILTIN_VPDPWSSDV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssd_v4si_maskz, "__builtin_ia32_vpdpwssd_v4si_maskz", IX86_BUILTIN_VPDPWSSDV4SI_MASKZ, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpwssds_v16si, "__builtin_ia32_vpdpwssds_v16si", IX86_BUILTIN_VPDPWSSDSV16SI, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpwssds_v16si_mask, "__builtin_ia32_vpdpwssds_v16si_mask", IX86_BUILTIN_VPDPWSSDSV16SI_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpwssds_v16si_maskz, "__builtin_ia32_vpdpwssds_v16si_maskz", IX86_BUILTIN_VPDPWSSDSV16SI_MASKZ, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_UHI)
! BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssds_v8si, "__builtin_ia32_vpdpwssds_v8si", IX86_BUILTIN_VPDPWSSDSV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssds_v8si_mask, "__builtin_ia32_vpdpwssds_v8si_mask", IX86_BUILTIN_VPDPWSSDSV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssds_v8si_maskz, "__builtin_ia32_vpdpwssds_v8si_maskz", IX86_BUILTIN_VPDPWSSDSV8SI_MASKZ, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssds_v4si, "__builtin_ia32_vpdpwssds_v4si", IX86_BUILTIN_VPDPWSSDSV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssds_v4si_mask, "__builtin_ia32_vpdpwssds_v4si_mask", IX86_BUILTIN_VPDPWSSDSV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssds_v4si_maskz, "__builtin_ia32_vpdpwssds_v4si_maskz", IX86_BUILTIN_VPDPWSSDSV4SI_MASKZ, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  
--- 2626,2670 ----
  BDESC (OPTION_MASK_ISA_GFNI | OPTION_MASK_ISA_SSE2, 0, CODE_FOR_vgf2p8mulb_v16qi, "__builtin_ia32_vgf2p8mulb_v16qi", IX86_BUILTIN_VGF2P8MULB128, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI)
  BDESC (OPTION_MASK_ISA_GFNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vgf2p8mulb_v16qi_mask, "__builtin_ia32_vgf2p8mulb_v16qi_mask", IX86_BUILTIN_VGF2P8MULB128MASK, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI_V16QI_UHI)
  
! /* AVX512_VNNI */
  
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpbusd_v16si, "__builtin_ia32_vpdpbusd_v16si", IX86_BUILTIN_VPDPBUSDV16SI, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpbusd_v16si_mask, "__builtin_ia32_vpdpbusd_v16si_mask", IX86_BUILTIN_VPDPBUSDV16SI_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpbusd_v16si_maskz, "__builtin_ia32_vpdpbusd_v16si_maskz", IX86_BUILTIN_VPDPBUSDV16SI_MASKZ, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_UHI)
! BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVXVNNI, CODE_FOR_vpdpbusd_v8si, "__builtin_ia32_vpdpbusd_v8si", IX86_BUILTIN_VPDPBUSDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusd_v8si_mask, "__builtin_ia32_vpdpbusd_v8si_mask", IX86_BUILTIN_VPDPBUSDV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusd_v8si_maskz, "__builtin_ia32_vpdpbusd_v8si_maskz", IX86_BUILTIN_VPDPBUSDV8SI_MASKZ, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVXVNNI, CODE_FOR_vpdpbusd_v4si, "__builtin_ia32_vpdpbusd_v4si", IX86_BUILTIN_VPDPBUSDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusd_v4si_mask, "__builtin_ia32_vpdpbusd_v4si_mask", IX86_BUILTIN_VPDPBUSDV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusd_v4si_maskz, "__builtin_ia32_vpdpbusd_v4si_maskz", IX86_BUILTIN_VPDPBUSDV4SI_MASKZ, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpbusds_v16si, "__builtin_ia32_vpdpbusds_v16si", IX86_BUILTIN_VPDPBUSDSV16SI, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpbusds_v16si_mask, "__builtin_ia32_vpdpbusds_v16si_mask", IX86_BUILTIN_VPDPBUSDSV16SI_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpbusds_v16si_maskz, "__builtin_ia32_vpdpbusds_v16si_maskz", IX86_BUILTIN_VPDPBUSDSV16SI_MASKZ, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_UHI)
! BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVXVNNI, CODE_FOR_vpdpbusds_v8si, "__builtin_ia32_vpdpbusds_v8si", IX86_BUILTIN_VPDPBUSDSV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusds_v8si_mask, "__builtin_ia32_vpdpbusds_v8si_mask", IX86_BUILTIN_VPDPBUSDSV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusds_v8si_maskz, "__builtin_ia32_vpdpbusds_v8si_maskz", IX86_BUILTIN_VPDPBUSDSV8SI_MASKZ, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVXVNNI, CODE_FOR_vpdpbusds_v4si, "__builtin_ia32_vpdpbusds_v4si", IX86_BUILTIN_VPDPBUSDSV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusds_v4si_mask, "__builtin_ia32_vpdpbusds_v4si_mask", IX86_BUILTIN_VPDPBUSDSV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpbusds_v4si_maskz, "__builtin_ia32_vpdpbusds_v4si_maskz", IX86_BUILTIN_VPDPBUSDSV4SI_MASKZ, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpwssd_v16si, "__builtin_ia32_vpdpwssd_v16si", IX86_BUILTIN_VPDPWSSDV16SI, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpwssd_v16si_mask, "__builtin_ia32_vpdpwssd_v16si_mask", IX86_BUILTIN_VPDPWSSDV16SI_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpwssd_v16si_maskz, "__builtin_ia32_vpdpwssd_v16si_maskz", IX86_BUILTIN_VPDPWSSDV16SI_MASKZ, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_UHI)
! BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVXVNNI, CODE_FOR_vpdpwssd_v8si, "__builtin_ia32_vpdpwssd_v8si", IX86_BUILTIN_VPDPWSSDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssd_v8si_mask, "__builtin_ia32_vpdpwssd_v8si_mask", IX86_BUILTIN_VPDPWSSDV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssd_v8si_maskz, "__builtin_ia32_vpdpwssd_v8si_maskz", IX86_BUILTIN_VPDPWSSDV8SI_MASKZ, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVXVNNI, CODE_FOR_vpdpwssd_v4si, "__builtin_ia32_vpdpwssd_v4si", IX86_BUILTIN_VPDPWSSDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssd_v4si_mask, "__builtin_ia32_vpdpwssd_v4si_mask", IX86_BUILTIN_VPDPWSSDV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssd_v4si_maskz, "__builtin_ia32_vpdpwssd_v4si_maskz", IX86_BUILTIN_VPDPWSSDV4SI_MASKZ, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpwssds_v16si, "__builtin_ia32_vpdpwssds_v16si", IX86_BUILTIN_VPDPWSSDSV16SI, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpwssds_v16si_mask, "__builtin_ia32_vpdpwssds_v16si_mask", IX86_BUILTIN_VPDPWSSDSV16SI_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_UHI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI, 0, CODE_FOR_vpdpwssds_v16si_maskz, "__builtin_ia32_vpdpwssds_v16si_maskz", IX86_BUILTIN_VPDPWSSDSV16SI_MASKZ, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_UHI)
! BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVXVNNI, CODE_FOR_vpdpwssds_v8si, "__builtin_ia32_vpdpwssds_v8si", IX86_BUILTIN_VPDPWSSDSV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssds_v8si_mask, "__builtin_ia32_vpdpwssds_v8si_mask", IX86_BUILTIN_VPDPWSSDSV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssds_v8si_maskz, "__builtin_ia32_vpdpwssds_v8si_maskz", IX86_BUILTIN_VPDPWSSDSV8SI_MASKZ, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVXVNNI, CODE_FOR_vpdpwssds_v4si, "__builtin_ia32_vpdpwssds_v4si", IX86_BUILTIN_VPDPWSSDSV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssds_v4si_mask, "__builtin_ia32_vpdpwssds_v4si_mask", IX86_BUILTIN_VPDPWSSDSV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssds_v4si_maskz, "__builtin_ia32_vpdpwssds_v4si_maskz", IX86_BUILTIN_VPDPWSSDSV4SI_MASKZ, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  
*************** BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_
*** 2766,2775 ****
--- 2793,2804 ----
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_cvtps2pd512_mask_round, "__builtin_ia32_cvtps2pd512_mask", IX86_BUILTIN_CVTPS2PD512, UNKNOWN, (int) V8DF_FTYPE_V8SF_V8DF_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_ufix_notruncv16sfv16si_mask_round, "__builtin_ia32_cvtps2udq512_mask", IX86_BUILTIN_CVTPS2UDQ512, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_sse2_cvtsd2ss_round, "__builtin_ia32_cvtsd2ss_round", IX86_BUILTIN_CVTSD2SS_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V2DF_INT)
+ BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_sse2_cvtsd2ss_mask_round, "__builtin_ia32_cvtsd2ss_mask_round", IX86_BUILTIN_CVTSD2SS_MASK_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V2DF_V4SF_UQI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_sse2_cvtsi2sdq_round, "__builtin_ia32_cvtsi2sd64", IX86_BUILTIN_CVTSI2SD64, UNKNOWN, (int) V2DF_FTYPE_V2DF_INT64_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_sse_cvtsi2ss_round, "__builtin_ia32_cvtsi2ss32", IX86_BUILTIN_CVTSI2SS32, UNKNOWN, (int) V4SF_FTYPE_V4SF_INT_INT)
  BDESC (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_sse_cvtsi2ssq_round, "__builtin_ia32_cvtsi2ss64", IX86_BUILTIN_CVTSI2SS64, UNKNOWN, (int) V4SF_FTYPE_V4SF_INT64_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_sse2_cvtss2sd_round, "__builtin_ia32_cvtss2sd_round", IX86_BUILTIN_CVTSS2SD_ROUND, UNKNOWN, (int) V2DF_FTYPE_V2DF_V4SF_INT)
+ BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_sse2_cvtss2sd_mask_round, "__builtin_ia32_cvtss2sd_mask_round", IX86_BUILTIN_CVTSS2SD_MASK_ROUND, UNKNOWN, (int) V2DF_FTYPE_V2DF_V4SF_V2DF_UQI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_fix_truncv8dfv8si2_mask_round, "__builtin_ia32_cvttpd2dq512_mask", IX86_BUILTIN_CVTTPD2DQ512, UNKNOWN, (int) V8SI_FTYPE_V8DF_V8SI_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_fixuns_truncv8dfv8si2_mask_round, "__builtin_ia32_cvttpd2udq512_mask", IX86_BUILTIN_CVTTPD2UDQ512, UNKNOWN, (int) V8SI_FTYPE_V8DF_V8SI_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_fix_truncv16sfv16si2_mask_round, "__builtin_ia32_cvttps2dq512_mask", IX86_BUILTIN_CVTTPS2DQ512, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT)
*************** BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE
*** 2905,2917 ****
--- 2934,2954 ----
  BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_rcp28v8df_mask_round, "__builtin_ia32_rcp28pd_mask", IX86_BUILTIN_RCP28PD, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_rcp28v16sf_mask_round, "__builtin_ia32_rcp28ps_mask", IX86_BUILTIN_RCP28PS, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI_INT)
  BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_vmrcp28v2df_round, "__builtin_ia32_rcp28sd_round", IX86_BUILTIN_RCP28SD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT)
+ BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_vmrcp28v2df_mask_round, "__builtin_ia32_rcp28sd_mask_round", IX86_BUILTIN_RCP28SD_MASK_ROUND, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
  BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_vmrcp28v4sf_round, "__builtin_ia32_rcp28ss_round", IX86_BUILTIN_RCP28SS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT)
+ BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_vmrcp28v4sf_mask_round, "__builtin_ia32_rcp28ss_mask_round", IX86_BUILTIN_RCP28SS_MASK_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT)
  BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_rsqrt28v8df_mask_round, "__builtin_ia32_rsqrt28pd_mask", IX86_BUILTIN_RSQRT28PD, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_rsqrt28v16sf_mask_round, "__builtin_ia32_rsqrt28ps_mask", IX86_BUILTIN_RSQRT28PS, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI_INT)
  BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_vmrsqrt28v2df_round, "__builtin_ia32_rsqrt28sd_round", IX86_BUILTIN_RSQRT28SD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT)
+ BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_vmrsqrt28v2df_mask_round, "__builtin_ia32_rsqrt28sd_mask_round", IX86_BUILTIN_RSQRT28SD_MASK_ROUND, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
  BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_vmrsqrt28v4sf_round, "__builtin_ia32_rsqrt28ss_round", IX86_BUILTIN_RSQRT28SS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT)
+ BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_vmrsqrt28v4sf_mask_round, "__builtin_ia32_rsqrt28ss_mask_round", IX86_BUILTIN_RSQRT28SS_MASK_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT)
  
  /* AVX512DQ.  */
+ BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_reducepv8df_mask_round, "__builtin_ia32_reducepd512_mask_round", IX86_BUILTIN_REDUCEPD512_MASK_ROUND, UNKNOWN, (int) V8DF_FTYPE_V8DF_INT_V8DF_UQI_INT)
+ BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_reducepv16sf_mask_round, "__builtin_ia32_reduceps512_mask_round", IX86_BUILTIN_REDUCEPS512_MASK_ROUND, UNKNOWN, (int) V16SF_FTYPE_V16SF_INT_V16SF_UHI_INT)
+ BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_reducesv2df_mask_round, "__builtin_ia32_reducesd_mask_round", IX86_BUILTIN_REDUCESD128_MASK_ROUND, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT_V2DF_UQI_INT)
+ BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_reducesv4sf_mask_round, "__builtin_ia32_reducess_mask_round", IX86_BUILTIN_REDUCESS128_MASK_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT_V4SF_UQI_INT)
  BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_avx512dq_rangesv2df_mask_round, "__builtin_ia32_rangesd128_mask_round", IX86_BUILTIN_RANGESD128, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT_V2DF_UQI_INT)
  BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_avx512dq_rangesv4sf_mask_round, "__builtin_ia32_rangess128_mask_round", IX86_BUILTIN_RANGESS128, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT_V4SF_UQI_INT)
  BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_fix_notruncv8dfv8di2_mask_round, "__builtin_ia32_cvtpd2qq512_mask", IX86_BUILTIN_CVTPD2QQ512, UNKNOWN, (int) V8DI_FTYPE_V8DF_V8DI_QI_INT)
*************** BDESC_END (MULTI_ARG, CET)
*** 3120,3140 ****
  
  /* CET.  */
  BDESC_FIRST (cet, CET,
!        OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_incsspsi, "__builtin_ia32_incsspd", IX86_BUILTIN_INCSSPD, UNKNOWN, (int) VOID_FTYPE_UNSIGNED)
! BDESC (OPTION_MASK_ISA_SHSTK | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_incsspdi, "__builtin_ia32_incsspq", IX86_BUILTIN_INCSSPQ, UNKNOWN, (int) VOID_FTYPE_UINT64)
  BDESC (OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_saveprevssp, "__builtin_ia32_saveprevssp", IX86_BUILTIN_SAVEPREVSSP, UNKNOWN, (int) VOID_FTYPE_VOID)
  BDESC (OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_rstorssp, "__builtin_ia32_rstorssp", IX86_BUILTIN_RSTORSSP, UNKNOWN, (int) VOID_FTYPE_PVOID)
! BDESC (OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_wrsssi, "__builtin_ia32_wrssd", IX86_BUILTIN_WRSSD, UNKNOWN, (int) VOID_FTYPE_UNSIGNED_PVOID)
! BDESC (OPTION_MASK_ISA_SHSTK | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_wrssdi, "__builtin_ia32_wrssq", IX86_BUILTIN_WRSSQ, UNKNOWN, (int) VOID_FTYPE_UINT64_PVOID)
! BDESC (OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_wrusssi, "__builtin_ia32_wrussd", IX86_BUILTIN_WRUSSD, UNKNOWN, (int) VOID_FTYPE_UNSIGNED_PVOID)
! BDESC (OPTION_MASK_ISA_SHSTK | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_wrussdi, "__builtin_ia32_wrussq", IX86_BUILTIN_WRUSSQ, UNKNOWN, (int) VOID_FTYPE_UINT64_PVOID)
  BDESC (OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_setssbsy, "__builtin_ia32_setssbsy", IX86_BUILTIN_SETSSBSY, UNKNOWN, (int) VOID_FTYPE_VOID)
  BDESC (OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_clrssbsy, "__builtin_ia32_clrssbsy", IX86_BUILTIN_CLRSSBSY, UNKNOWN, (int) VOID_FTYPE_PVOID)
  
! BDESC_END (CET, CET_NORMAL)
! 
! BDESC_FIRST (cet_rdssp, CET_NORMAL,
!        OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_rdsspsi, "__builtin_ia32_rdsspd", IX86_BUILTIN_RDSSPD, UNKNOWN, (int) UINT_FTYPE_VOID)
! BDESC (OPTION_MASK_ISA_SHSTK | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_rdsspdi, "__builtin_ia32_rdsspq", IX86_BUILTIN_RDSSPQ, UNKNOWN, (int) UINT64_FTYPE_VOID)
! 
! BDESC_END (CET_NORMAL, MAX)
--- 3157,3173 ----
  
  /* CET.  */
  BDESC_FIRST (cet, CET,
!        OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_nothing, "__builtin_ia32_rdsspd", IX86_BUILTIN_RDSSPD, UNKNOWN, (int) UINT_FTYPE_VOID)
! BDESC (OPTION_MASK_ISA_SHSTK | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_nothing, "__builtin_ia32_rdsspq", IX86_BUILTIN_RDSSPQ, UNKNOWN, (int) UINT64_FTYPE_VOID)
! BDESC (OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_nothing, "__builtin_ia32_incsspd", IX86_BUILTIN_INCSSPD, UNKNOWN, (int) VOID_FTYPE_UNSIGNED)
! BDESC (OPTION_MASK_ISA_SHSTK | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_nothing, "__builtin_ia32_incsspq", IX86_BUILTIN_INCSSPQ, UNKNOWN, (int) VOID_FTYPE_UINT64)
  BDESC (OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_saveprevssp, "__builtin_ia32_saveprevssp", IX86_BUILTIN_SAVEPREVSSP, UNKNOWN, (int) VOID_FTYPE_VOID)
  BDESC (OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_rstorssp, "__builtin_ia32_rstorssp", IX86_BUILTIN_RSTORSSP, UNKNOWN, (int) VOID_FTYPE_PVOID)
! BDESC (OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_nothing, "__builtin_ia32_wrssd", IX86_BUILTIN_WRSSD, UNKNOWN, (int) VOID_FTYPE_UNSIGNED_PVOID)
! BDESC (OPTION_MASK_ISA_SHSTK | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_nothing, "__builtin_ia32_wrssq", IX86_BUILTIN_WRSSQ, UNKNOWN, (int) VOID_FTYPE_UINT64_PVOID)
! BDESC (OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_nothing, "__builtin_ia32_wrussd", IX86_BUILTIN_WRUSSD, UNKNOWN, (int) VOID_FTYPE_UNSIGNED_PVOID)
! BDESC (OPTION_MASK_ISA_SHSTK | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_nothing, "__builtin_ia32_wrussq", IX86_BUILTIN_WRUSSQ, UNKNOWN, (int) VOID_FTYPE_UINT64_PVOID)
  BDESC (OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_setssbsy, "__builtin_ia32_setssbsy", IX86_BUILTIN_SETSSBSY, UNKNOWN, (int) VOID_FTYPE_VOID)
  BDESC (OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_clrssbsy, "__builtin_ia32_clrssbsy", IX86_BUILTIN_CLRSSBSY, UNKNOWN, (int) VOID_FTYPE_PVOID)
  
! BDESC_END (CET, MAX)
diff -Nrcpad gcc-10.3.0/gcc/config/i386/i386-builtins.c gcc-11.1.0/gcc/config/i386/i386-builtins.c
*** gcc-10.3.0/gcc/config/i386/i386-builtins.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/i386-builtins.c	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 90,95 ****
--- 90,96 ----
  #include "debug.h"
  #include "dwarf2out.h"
  #include "i386-builtins.h"
+ #include "common/config/i386/i386-isas.h"
  
  #undef BDESC
  #undef BDESC_FIRST
*************** BDESC_VERIFYS (IX86_BUILTIN__BDESC_MULTI
*** 115,124 ****
  	       IX86_BUILTIN__BDESC_ROUND_ARGS_LAST, 1);
  BDESC_VERIFYS (IX86_BUILTIN__BDESC_CET_FIRST,
  	       IX86_BUILTIN__BDESC_MULTI_ARG_LAST, 1);
- BDESC_VERIFYS (IX86_BUILTIN__BDESC_CET_NORMAL_FIRST,
- 	       IX86_BUILTIN__BDESC_CET_LAST, 1);
  BDESC_VERIFYS (IX86_BUILTIN_MAX,
! 	       IX86_BUILTIN__BDESC_CET_NORMAL_LAST, 1);
  
  
  /* Table for the ix86 builtin non-function types.  */
--- 116,123 ----
  	       IX86_BUILTIN__BDESC_ROUND_ARGS_LAST, 1);
  BDESC_VERIFYS (IX86_BUILTIN__BDESC_CET_FIRST,
  	       IX86_BUILTIN__BDESC_MULTI_ARG_LAST, 1);
  BDESC_VERIFYS (IX86_BUILTIN_MAX,
! 	       IX86_BUILTIN__BDESC_CET_LAST, 1);
  
  
  /* Table for the ix86 builtin non-function types.  */
*************** def_builtin (HOST_WIDE_INT mask, HOST_WI
*** 275,280 ****
--- 274,283 ----
        if (((mask2 == 0 || (mask2 & ix86_isa_flags2) != 0)
  	   && (mask == 0 || (mask & ix86_isa_flags) != 0))
  	  || ((mask & OPTION_MASK_ISA_MMX) != 0 && TARGET_MMX_WITH_SSE)
+ 	  /* "Unified" builtin used by either AVXVNNI intrinsics or AVX512VNNIVL
+ 	     non-mask intrinsics should be defined whenever avxvnni
+ 	     or avx512vnni && avx512vl exist.  */
+ 	  || (mask2 == OPTION_MASK_ISA2_AVXVNNI)
  	  || (lang_hooks.builtin_function
  	      == lang_hooks.builtin_function_ext_scope))
  	{
*************** ix86_init_mmx_sse_builtins (void)
*** 1195,1200 ****
--- 1198,1208 ----
    def_builtin (0, OPTION_MASK_ISA2_WAITPKG, "__builtin_ia32_tpause",
  	       UINT8_FTYPE_UNSIGNED_UINT64, IX86_BUILTIN_TPAUSE);
  
+   /* UINTR.  */
+   def_builtin (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_UINTR,
+ 	       "__builtin_ia32_testui",
+ 	       UINT8_FTYPE_VOID, IX86_BUILTIN_TESTUI);
+ 
    /* CLDEMOTE.  */
    def_builtin (0, OPTION_MASK_ISA2_CLDEMOTE, "__builtin_ia32_cldemote",
  	       VOID_FTYPE_PCVOID, IX86_BUILTIN_CLDEMOTE);
*************** ix86_init_mmx_sse_builtins (void)
*** 1226,1246 ****
    BDESC_VERIFYS (IX86_BUILTIN__BDESC_CET_LAST,
  		 IX86_BUILTIN__BDESC_CET_FIRST,
  		 ARRAY_SIZE (bdesc_cet) - 1);
- 
-   for (i = 0, d = bdesc_cet_rdssp;
-        i < ARRAY_SIZE (bdesc_cet_rdssp);
-        i++, d++)
-     {
-       BDESC_VERIFY (d->code, IX86_BUILTIN__BDESC_CET_NORMAL_FIRST, i);
-       if (d->name == 0)
- 	continue;
- 
-       ftype = (enum ix86_builtin_func_type) d->flag;
-       def_builtin (d->mask, d->mask2, d->name, ftype, d->code);
-     }
-   BDESC_VERIFYS (IX86_BUILTIN__BDESC_CET_NORMAL_LAST,
- 		 IX86_BUILTIN__BDESC_CET_NORMAL_FIRST,
- 		 ARRAY_SIZE (bdesc_cet_rdssp) - 1);
  }
  
  #undef BDESC_VERIFY
--- 1234,1239 ----
*************** ix86_builtin_reciprocal (tree fndecl)
*** 1835,1935 ****
      }
  }
  
- /* This is the order of bit-fields in __processor_features in cpuinfo.c */
- enum processor_features
- {
-   F_CMOV = 0,
-   F_MMX,
-   F_POPCNT,
-   F_SSE,
-   F_SSE2,
-   F_SSE3,
-   F_SSSE3,
-   F_SSE4_1,
-   F_SSE4_2,
-   F_AVX,
-   F_AVX2,
-   F_SSE4_A,
-   F_FMA4,
-   F_XOP,
-   F_FMA,
-   F_AVX512F,
-   F_BMI,
-   F_BMI2,
-   F_AES,
-   F_PCLMUL,
-   F_AVX512VL,
-   F_AVX512BW,
-   F_AVX512DQ,
-   F_AVX512CD,
-   F_AVX512ER,
-   F_AVX512PF,
-   F_AVX512VBMI,
-   F_AVX512IFMA,
-   F_AVX5124VNNIW,
-   F_AVX5124FMAPS,
-   F_AVX512VPOPCNTDQ,
-   F_AVX512VBMI2,
-   F_GFNI,
-   F_VPCLMULQDQ,
-   F_AVX512VNNI,
-   F_AVX512BITALG,
-   F_AVX512BF16,
-   F_AVX512VP2INTERSECT,
-   F_MAX
- };
- 
- /* These are the target attribute strings for which a dispatcher is
-    available, from fold_builtin_cpu.  */
- struct _isa_names_table
- {
-   const char *const name;
-   const enum processor_features feature;
-   const enum feature_priority priority;
- };
- 
- static const _isa_names_table isa_names_table[] =
- {
-   {"cmov",    F_CMOV,	P_NONE},
-   {"mmx",     F_MMX,	P_MMX},
-   {"popcnt",  F_POPCNT,	P_POPCNT},
-   {"sse",     F_SSE,	P_SSE},
-   {"sse2",    F_SSE2,	P_SSE2},
-   {"sse3",    F_SSE3,	P_SSE3},
-   {"ssse3",   F_SSSE3,	P_SSSE3},
-   {"sse4a",   F_SSE4_A,	P_SSE4_A},
-   {"sse4.1",  F_SSE4_1,	P_SSE4_1},
-   {"sse4.2",  F_SSE4_2,	P_SSE4_2},
-   {"avx",     F_AVX,	P_AVX},
-   {"fma4",    F_FMA4,	P_FMA4},
-   {"xop",     F_XOP,	P_XOP},
-   {"fma",     F_FMA,	P_FMA},
-   {"avx2",    F_AVX2,	P_AVX2},
-   {"avx512f", F_AVX512F, P_AVX512F},
-   {"bmi",     F_BMI,	P_BMI},
-   {"bmi2",    F_BMI2,	P_BMI2},
-   {"aes",     F_AES,	P_AES},
-   {"pclmul",  F_PCLMUL,	P_PCLMUL},
-   {"avx512vl",F_AVX512VL, P_NONE},
-   {"avx512bw",F_AVX512BW, P_NONE},
-   {"avx512dq",F_AVX512DQ, P_NONE},
-   {"avx512cd",F_AVX512CD, P_NONE},
-   {"avx512er",F_AVX512ER, P_NONE},
-   {"avx512pf",F_AVX512PF, P_NONE},
-   {"avx512vbmi",F_AVX512VBMI, P_NONE},
-   {"avx512ifma",F_AVX512IFMA, P_NONE},
-   {"avx5124vnniw",F_AVX5124VNNIW, P_NONE},
-   {"avx5124fmaps",F_AVX5124FMAPS, P_NONE},
-   {"avx512vpopcntdq",F_AVX512VPOPCNTDQ,	P_NONE},
-   {"avx512vbmi2", F_AVX512VBMI2, P_NONE},
-   {"gfni",	F_GFNI,	P_NONE},
-   {"vpclmulqdq", F_VPCLMULQDQ, P_NONE},
-   {"avx512vnni", F_AVX512VNNI, P_NONE},
-   {"avx512bitalg", F_AVX512BITALG, P_NONE},
-   {"avx512bf16", F_AVX512BF16, P_NONE},
-   {"avx512vp2intersect",F_AVX512VP2INTERSECT, P_NONE}
- };
- 
  /* This parses the attribute arguments to target in DECL and determines
     the right builtin to use to match the platform specification.
     It returns the priority value for this version decl.  If PREDICATE_LIST
--- 1828,1833 ----
*************** get_builtin_code_for_version (tree decl,
*** 1977,1983 ****
       before the ssse3 version. */
    if (strstr (attrs_str, "arch=") != NULL)
      {
!       cl_target_option_save (&cur_target, &global_options);
        target_node
  	= ix86_valid_target_attribute_tree (decl, attrs, &global_options,
  					    &global_options_set, 0);
--- 1875,1882 ----
       before the ssse3 version. */
    if (strstr (attrs_str, "arch=") != NULL)
      {
!       cl_target_option_save (&cur_target, &global_options,
! 			     &global_options_set);
        target_node
  	= ix86_valid_target_attribute_tree (decl, attrs, &global_options,
  					    &global_options_set, 0);
*************** get_builtin_code_for_version (tree decl,
*** 1989,1995 ****
        gcc_assert (new_target);
        
        if (new_target->arch_specified && new_target->arch > 0)
! 	for (i = 0; i < (unsigned int) pta_size; i++)
  	  if (processor_alias_table[i].processor == new_target->arch)
  	    {
  	      const pta *arch_info = &processor_alias_table[i];
--- 1888,1894 ----
        gcc_assert (new_target);
        
        if (new_target->arch_specified && new_target->arch > 0)
! 	for (i = 0; i < pta_size; i++)
  	  if (processor_alias_table[i].processor == new_target->arch)
  	    {
  	      const pta *arch_info = &processor_alias_table[i];
*************** get_builtin_code_for_version (tree decl,
*** 2046,2052 ****
  	      break;
  	    }
  
!       cl_target_option_restore (&global_options, &cur_target);
  	
        if (predicate_list && arg_str == NULL)
  	{
--- 1945,1952 ----
  	      break;
  	    }
  
!       cl_target_option_restore (&global_options, &global_options_set,
! 				&cur_target);
  	
        if (predicate_list && arg_str == NULL)
  	{
*************** fold_builtin_cpu (tree fndecl, tree *arg
*** 2294,2309 ****
  
        if (isa_names_table[i].feature >= 32)
  	{
! 	  tree __cpu_features2_var = make_var_decl (unsigned_type_node,
  						    "__cpu_features2");
  
  	  varpool_node::add (__cpu_features2_var);
! 	  field_val = (1U << (isa_names_table[i].feature - 32));
! 	  /* Return __cpu_features2 & field_val  */
! 	  final = build2 (BIT_AND_EXPR, unsigned_type_node,
! 			  __cpu_features2_var,
! 			  build_int_cstu (unsigned_type_node, field_val));
! 	  return build1 (CONVERT_EXPR, integer_type_node, final);
  	}
  
        field = TYPE_FIELDS (__processor_model_type);
--- 2194,2222 ----
  
        if (isa_names_table[i].feature >= 32)
  	{
! 	  tree index_type
! 	    = build_index_type (size_int (SIZE_OF_CPU_FEATURES));
! 	  tree type = build_array_type (unsigned_type_node, index_type);
! 	  tree __cpu_features2_var = make_var_decl (type,
  						    "__cpu_features2");
  
  	  varpool_node::add (__cpu_features2_var);
! 	  for (unsigned int j = 0; j < SIZE_OF_CPU_FEATURES; j++)
! 	    if (isa_names_table[i].feature < (32 + 32 + j * 32))
! 	      {
! 		field_val = (1U << (isa_names_table[i].feature
! 				    - (32 + j * 32)));
! 		tree index = size_int (j);
! 		array_elt = build4 (ARRAY_REF, unsigned_type_node,
! 				    __cpu_features2_var,
! 				    index, NULL_TREE, NULL_TREE);
! 		/* Return __cpu_features2[index] & field_val  */
! 		final = build2 (BIT_AND_EXPR, unsigned_type_node,
! 				array_elt,
! 				build_int_cstu (unsigned_type_node,
! 						field_val));
! 		return build1 (CONVERT_EXPR, integer_type_node, final);
! 	      }
  	}
  
        field = TYPE_FIELDS (__processor_model_type);
diff -Nrcpad gcc-10.3.0/gcc/config/i386/i386-builtins.h gcc-11.1.0/gcc/config/i386/i386-builtins.h
*** gcc-10.3.0/gcc/config/i386/i386-builtins.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/i386-builtins.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** enum ix86_builtins
*** 40,45 ****
--- 40,46 ----
    IX86_BUILTIN_UMONITOR,
    IX86_BUILTIN_UMWAIT,
    IX86_BUILTIN_TPAUSE,
+   IX86_BUILTIN_TESTUI,
    IX86_BUILTIN_CLZERO,
    IX86_BUILTIN_CLDEMOTE,
    IX86_BUILTIN_VEC_INIT_V2SI,
*************** struct builtin_isa {
*** 235,244 ****
  
  /* Bits for builtin_description.flag.  */
  
- /* Set when we don't support the comparison natively, and should
-    swap_comparison in order to support it.  */
- #define BUILTIN_DESC_SWAP_OPERANDS	1
- 
  struct builtin_description
  {
    const HOST_WIDE_INT mask;
--- 236,241 ----
diff -Nrcpad gcc-10.3.0/gcc/config/i386/i386-c.c gcc-11.1.0/gcc/config/i386/i386-c.c
*** gcc-10.3.0/gcc/config/i386/i386-c.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/i386-c.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines used for macro/preprocessor support on the ia-32.
!    Copyright (C) 2008-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines used for macro/preprocessor support on the ia-32.
!    Copyright (C) 2008-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** ix86_target_macros_internal (HOST_WIDE_I
*** 233,238 ****
--- 233,251 ----
      case PROCESSOR_COOPERLAKE:
        def_or_undef (parse_in, "__cooperlake");
        def_or_undef (parse_in, "__cooperlake__");
+       break;
+     case PROCESSOR_SAPPHIRERAPIDS:
+       def_or_undef (parse_in, "__sapphirerapids");
+       def_or_undef (parse_in, "__sapphirerapids__");
+       break;
+     case PROCESSOR_ALDERLAKE:
+       def_or_undef (parse_in, "__alderlake");
+       def_or_undef (parse_in, "__alderlake__");
+       break;
+     case PROCESSOR_ROCKETLAKE:
+       def_or_undef (parse_in, "__rocketlake");
+       def_or_undef (parse_in, "__rocketlake__");
+       break;
      /* use PROCESSOR_max to not set/unset the arch macro.  */
      case PROCESSOR_max:
        break;
*************** ix86_target_macros_internal (HOST_WIDE_I
*** 390,395 ****
--- 403,417 ----
      case PROCESSOR_COOPERLAKE:
        def_or_undef (parse_in, "__tune_cooperlake__");
        break;
+     case PROCESSOR_SAPPHIRERAPIDS:
+       def_or_undef (parse_in, "__tune_sapphirerapids__");
+       break;
+     case PROCESSOR_ALDERLAKE:
+       def_or_undef (parse_in, "__tune_alderlake__");
+       break;
+     case PROCESSOR_ROCKETLAKE:
+       def_or_undef (parse_in, "__tune_rocketlake__");
+       break;
      case PROCESSOR_INTEL:
      case PROCESSOR_GENERIC:
        break;
*************** ix86_target_macros_internal (HOST_WIDE_I
*** 568,573 ****
--- 590,597 ----
      def_or_undef (parse_in, "__WAITPKG__");
    if (isa_flag2 & OPTION_MASK_ISA2_CLDEMOTE)
      def_or_undef (parse_in, "__CLDEMOTE__");
+   if (isa_flag2 & OPTION_MASK_ISA2_SERIALIZE)
+     def_or_undef (parse_in, "__SERIALIZE__");
    if (isa_flag2 & OPTION_MASK_ISA2_PTWRITE)
      def_or_undef (parse_in, "__PTWRITE__");
    if (isa_flag2 & OPTION_MASK_ISA2_AVX512BF16)
*************** ix86_target_macros_internal (HOST_WIDE_I
*** 576,581 ****
--- 600,627 ----
      def_or_undef (parse_in, "__MMX_WITH_SSE__");
    if (isa_flag2 & OPTION_MASK_ISA2_ENQCMD)
      def_or_undef (parse_in, "__ENQCMD__");
+   if (isa_flag2 & OPTION_MASK_ISA2_TSXLDTRK)
+     def_or_undef (parse_in, "__TSXLDTRK__");
+   if (isa_flag2 & OPTION_MASK_ISA2_AMX_TILE)
+     def_or_undef (parse_in, "__AMX_TILE__");
+   if (isa_flag2 & OPTION_MASK_ISA2_AMX_INT8)
+     def_or_undef (parse_in, "__AMX_INT8__");
+   if (isa_flag2 & OPTION_MASK_ISA2_AMX_BF16)
+     def_or_undef (parse_in, "__AMX_BF16__");
+   if (isa_flag & OPTION_MASK_ISA_SAHF)
+     def_or_undef (parse_in, "__LAHF_SAHF__");
+   if (isa_flag2 & OPTION_MASK_ISA2_MOVBE)
+     def_or_undef (parse_in, "__MOVBE__");
+   if (isa_flag2 & OPTION_MASK_ISA2_UINTR)
+     def_or_undef (parse_in, "__UINTR__");
+   if (isa_flag2 & OPTION_MASK_ISA2_HRESET)
+     def_or_undef (parse_in, "__HRESET__");
+   if (isa_flag2 & OPTION_MASK_ISA2_KL)
+     def_or_undef (parse_in, "__KL__");
+   if (isa_flag2 & OPTION_MASK_ISA2_WIDEKL)
+     def_or_undef (parse_in, "__WIDEKL__");
+   if (isa_flag2 & OPTION_MASK_ISA2_AVXVNNI)
+     def_or_undef (parse_in, "__AVXVNNI__");
    if (TARGET_IAMCU)
      {
        def_or_undef (parse_in, "__iamcu");
*************** ix86_target_macros_internal (HOST_WIDE_I
*** 591,597 ****
  static bool
  ix86_pragma_target_parse (tree args, tree pop_target)
  {
!   tree prev_tree = build_target_option_node (&global_options);
    tree cur_tree;
    struct cl_target_option *prev_opt;
    struct cl_target_option *cur_opt;
--- 637,644 ----
  static bool
  ix86_pragma_target_parse (tree args, tree pop_target)
  {
!   tree prev_tree
!     = build_target_option_node (&global_options, &global_options_set);
    tree cur_tree;
    struct cl_target_option *prev_opt;
    struct cl_target_option *cur_opt;
*************** ix86_pragma_target_parse (tree args, tre
*** 609,615 ****
    if (! args)
      {
        cur_tree = (pop_target ? pop_target : target_option_default_node);
!       cl_target_option_restore (&global_options,
  				TREE_TARGET_OPTION (cur_tree));
      }
    else
--- 656,662 ----
    if (! args)
      {
        cur_tree = (pop_target ? pop_target : target_option_default_node);
!       cl_target_option_restore (&global_options, &global_options_set,
  				TREE_TARGET_OPTION (cur_tree));
      }
    else
*************** ix86_pragma_target_parse (tree args, tre
*** 619,625 ****
  						   &global_options_set, 0);
        if (!cur_tree || cur_tree == error_mark_node)
         {
!          cl_target_option_restore (&global_options,
                                     TREE_TARGET_OPTION (prev_tree));
           return false;
         }
--- 666,672 ----
  						   &global_options_set, 0);
        if (!cur_tree || cur_tree == error_mark_node)
         {
!          cl_target_option_restore (&global_options, &global_options_set,
                                     TREE_TARGET_OPTION (prev_tree));
           return false;
         }
*************** ix86_target_macros (void)
*** 717,726 ****
    if (TARGET_LONG_DOUBLE_128)
      cpp_define (parse_in, "__LONG_DOUBLE_128__");
  
!   if (TARGET_128BIT_LONG_DOUBLE)
!     cpp_define (parse_in, "__SIZEOF_FLOAT80__=16");
!   else
!     cpp_define (parse_in, "__SIZEOF_FLOAT80__=12");
  
    cpp_define (parse_in, "__SIZEOF_FLOAT128__=16");
  
--- 764,771 ----
    if (TARGET_LONG_DOUBLE_128)
      cpp_define (parse_in, "__LONG_DOUBLE_128__");
  
!   cpp_define_formatted (parse_in, "__SIZEOF_FLOAT80__=%d",
! 			GET_MODE_SIZE (XFmode));
  
    cpp_define (parse_in, "__SIZEOF_FLOAT128__=16");
  
*************** ix86_target_macros (void)
*** 740,747 ****
    cpp_define (parse_in, "__SEG_GS");
  
    if (flag_cf_protection != CF_NONE)
!     cpp_define_formatted (parse_in, "__CET__=%d",
! 			  flag_cf_protection & ~CF_SET);
  }
  
  
--- 785,791 ----
    cpp_define (parse_in, "__SEG_GS");
  
    if (flag_cf_protection != CF_NONE)
!     cpp_define_formatted (parse_in, "__CET__=%d", flag_cf_protection & ~CF_SET);
  }
  
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/i386-d.c gcc-11.1.0/gcc/config/i386/i386-d.c
*** gcc-10.3.0/gcc/config/i386/i386-d.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/i386-d.c	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Subroutines for the D front end on the x86 architecture.
!    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
--- 1,5 ----
  /* Subroutines for the D front end on the x86 architecture.
!    Copyright (C) 2017-2021 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
*************** You should have received a copy of the G
*** 15,20 ****
--- 15,22 ----
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  
+ #define IN_TARGET_CODE 1
+ 
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
*************** ix86_d_target_versions (void)
*** 42,44 ****
--- 44,113 ----
    else
      d_add_builtin_version ("D_SoftFloat");
  }
+ 
+ /* Handle a call to `__traits(getTargetInfo, "floatAbi")'.  */
+ 
+ static tree
+ ix86_d_handle_target_float_abi (void)
+ {
+   const char *abi;
+ 
+   if (! (TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387))
+     abi = "soft";
+   else
+     abi = "hard";
+ 
+   return build_string_literal (strlen (abi) + 1, abi);
+ }
+ 
+ /* Handle a call to `__traits(getTargetInfo, "objectFormat")'.  */
+ 
+ static tree
+ ix86_d_handle_target_object_format (void)
+ {
+   const char *objfmt = NULL;
+ 
+   if (TARGET_MACHO)
+     objfmt = "macho";
+   else if (TARGET_COFF || TARGET_PECOFF)
+     objfmt = "coff";
+ 
+   if (objfmt == NULL)
+     return NULL_TREE;
+ 
+   return build_string_literal (strlen (objfmt) + 1, objfmt);
+ }
+ 
+ /* Implement TARGET_D_REGISTER_CPU_TARGET_INFO.  */
+ 
+ void
+ ix86_d_register_target_info (void)
+ {
+   const struct d_target_info_spec handlers[] = {
+     { "floatAbi", ix86_d_handle_target_float_abi },
+     { "objectFormat", ix86_d_handle_target_object_format },
+     { NULL, NULL },
+   };
+ 
+   d_add_target_info_handlers (handlers);
+ }
+ 
+ /* Implement TARGET_D_HAS_STDCALL_CONVENTION for x86 targets.  */
+ 
+ bool
+ ix86_d_has_stdcall_convention (unsigned int *link_system,
+ 			       unsigned int *link_windows)
+ {
+   if (ix86_abi == MS_ABI)
+     {
+       *link_system = 1;
+       *link_windows = (!TARGET_64BIT) ? 1 : 0;
+     }
+   else
+     {
+       *link_system = 0;
+       *link_windows = 0;
+     }
+ 
+   return true;
+ }
diff -Nrcpad gcc-10.3.0/gcc/config/i386/i386-expand.c gcc-11.1.0/gcc/config/i386/i386-expand.c
*** gcc-10.3.0/gcc/config/i386/i386-expand.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/i386-expand.c	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** ix86_expand_move (machine_mode mode, rtx
*** 196,201 ****
--- 196,212 ----
    op0 = operands[0];
    op1 = operands[1];
  
+   /* Avoid complex sets of likely spilled hard registers before reload.  */
+   if (!ix86_hardreg_mov_ok (op0, op1))
+     {
+       tmp = gen_reg_rtx (mode);
+       operands[0] = tmp;
+       ix86_expand_move (mode, operands);
+       operands[0] = op0;
+       operands[1] = tmp;
+       op1 = tmp;
+     }
+ 
    switch (GET_CODE (op1))
      {
      case CONST:
*************** ix86_binary_operator_ok (enum rtx_code c
*** 1045,1051 ****
    rtx src2 = operands[2];
  
    /* Both source operands cannot be in memory.  */
!   if (MEM_P (src1) && MEM_P (src2))
      return false;
  
    /* Canonicalize operand order for commutative operators.  */
--- 1056,1063 ----
    rtx src2 = operands[2];
  
    /* Both source operands cannot be in memory.  */
!   if ((MEM_P (src1) || bcst_mem_operand (src1, mode))
!       && (MEM_P (src2) || bcst_mem_operand (src2, mode)))
      return false;
  
    /* Canonicalize operand order for commutative operators.  */
*************** ix86_split_idivmod (machine_mode mode, r
*** 1185,1193 ****
    JUMP_LABEL (insn) = qimode_label;
  
    /* Generate original signed/unsigned divimod.  */
!   div = gen_divmod4_1 (operands[0], operands[1],
! 		       operands[2], operands[3]);
!   emit_insn (div);
  
    /* Branch to the end.  */
    emit_jump_insn (gen_jump (end_label));
--- 1197,1204 ----
    JUMP_LABEL (insn) = qimode_label;
  
    /* Generate original signed/unsigned divimod.  */
!   emit_insn (gen_divmod4_1 (operands[0], operands[1],
! 			    operands[2], operands[3]));
  
    /* Branch to the end.  */
    emit_jump_insn (gen_jump (end_label));
*************** ix86_split_idivmod (machine_mode mode, r
*** 1221,1238 ****
      }
  
    /* Extract remainder from AH.  */
!   tmp1 = gen_rtx_ZERO_EXTRACT (GET_MODE (operands[1]),
! 			       tmp0, GEN_INT (8), GEN_INT (8));
!   if (REG_P (operands[1]))
!     insn = emit_move_insn (operands[1], tmp1);
!   else
!     {
!       /* Need a new scratch register since the old one has result
! 	 of 8bit divide.  */
!       scratch = gen_reg_rtx (GET_MODE (operands[1]));
!       emit_move_insn (scratch, tmp1);
!       insn = emit_move_insn (operands[1], scratch);
!     }
    set_unique_reg_note (insn, REG_EQUAL, mod);
  
    /* Zero extend quotient from AL.  */
--- 1232,1241 ----
      }
  
    /* Extract remainder from AH.  */
!   scratch = gen_lowpart (GET_MODE (operands[1]), scratch);
!   tmp1 = gen_rtx_ZERO_EXTRACT (GET_MODE (operands[1]), scratch,
! 			       GEN_INT (8), GEN_INT (8));
!   insn = emit_move_insn (operands[1], tmp1);
    set_unique_reg_note (insn, REG_EQUAL, mod);
  
    /* Zero extend quotient from AL.  */
*************** ix86_split_lea_for_addr (rtx_insn *insn,
*** 1345,1353 ****
  	  if (regno0 != regno2)
  	    emit_insn (gen_rtx_SET (target, parts.index));
  
! 	  /* Use shift for scaling.  */
! 	  ix86_emit_binop (ASHIFT, mode, target,
! 			   GEN_INT (exact_log2 (parts.scale)));
  
  	  if (parts.base)
  	    ix86_emit_binop (PLUS, mode, target, parts.base);
--- 1348,1357 ----
  	  if (regno0 != regno2)
  	    emit_insn (gen_rtx_SET (target, parts.index));
  
! 	  /* Use shift for scaling, but emit it as MULT instead
! 	     to avoid it being immediately peephole2 optimized back
! 	     into lea.  */
! 	  ix86_emit_binop (MULT, mode, target, GEN_INT (parts.scale));
  
  	  if (parts.base)
  	    ix86_emit_binop (PLUS, mode, target, parts.base);
*************** ix86_expand_fp_absneg_operator (enum rtx
*** 1722,1730 ****
    machine_mode vmode = mode;
    rtvec par;
  
!   if (vector_mode)
!     use_sse = true;
!   else if (mode == TFmode)
      use_sse = true;
    else if (TARGET_SSE_MATH)
      {
--- 1726,1732 ----
    machine_mode vmode = mode;
    rtvec par;
  
!   if (vector_mode || mode == TFmode)
      use_sse = true;
    else if (TARGET_SSE_MATH)
      {
*************** ix86_expand_fp_absneg_operator (enum rtx
*** 1749,1755 ****
  	 Create the appropriate mask now.  */
        mask = ix86_build_signbit_mask (vmode, vector_mode, code == ABS);
        use = gen_rtx_USE (VOIDmode, mask);
!       if (vector_mode)
  	par = gen_rtvec (2, set, use);
        else
  	{
--- 1751,1757 ----
  	 Create the appropriate mask now.  */
        mask = ix86_build_signbit_mask (vmode, vector_mode, code == ABS);
        use = gen_rtx_USE (VOIDmode, mask);
!       if (vector_mode || mode == TFmode)
  	par = gen_rtvec (2, set, use);
        else
  	{
*************** ix86_expand_int_movcc (rtx operands[])
*** 3179,3185 ****
  	    }
  	  if (cf != 0)
  	    {
! 	      tmp = gen_rtx_PLUS (mode, tmp, GEN_INT (cf));
  	      nops++;
  	    }
  	  if (!rtx_equal_p (tmp, out))
--- 3181,3187 ----
  	    }
  	  if (cf != 0)
  	    {
! 	      tmp = plus_constant (mode, tmp, cf);
  	      nops++;
  	    }
  	  if (!rtx_equal_p (tmp, out))
*************** ix86_expand_int_movcc (rtx operands[])
*** 3322,3328 ****
  	{
  	  var = operands[2];
  	  if (INTVAL (operands[3]) == 0 && operands[2] != constm1_rtx)
! 	    operands[2] = constm1_rtx, op = and_optab;
  	  else if (INTVAL (operands[3]) == -1 && operands[3] != const0_rtx)
  	    operands[2] = const0_rtx, op = ior_optab;
  	  else
--- 3324,3340 ----
  	{
  	  var = operands[2];
  	  if (INTVAL (operands[3]) == 0 && operands[2] != constm1_rtx)
! 	    {
! 	      /* For smin (x, 0), expand as "x < 0 ? x : 0" instead of
! 		 "x <= 0 ? x : 0" to enable sign_bit_compare_p.  */
! 	      if (code == LE && op1 == const0_rtx && rtx_equal_p (op0, var))
! 		operands[1] = simplify_gen_relational (LT, VOIDmode,
! 						       GET_MODE (op0),
! 						       op0, const0_rtx);
! 
! 	      operands[2] = constm1_rtx;
! 	      op = and_optab;
! 	    }
  	  else if (INTVAL (operands[3]) == -1 && operands[3] != const0_rtx)
  	    operands[2] = const0_rtx, op = ior_optab;
  	  else
*************** ix86_valid_mask_cmp_mode (machine_mode m
*** 3458,3463 ****
--- 3470,3502 ----
    return vector_size == 64 || TARGET_AVX512VL;
  }
  
+ /* Return true if integer mask comparison should be used.  */
+ static bool
+ ix86_use_mask_cmp_p (machine_mode mode, machine_mode cmp_mode,
+ 		     rtx op_true, rtx op_false)
+ {
+   if (GET_MODE_SIZE (mode) == 64)
+     return true;
+ 
+   /* When op_true is NULL, op_false must be NULL, or vice versa.  */
+   gcc_assert (!op_true == !op_false);
+ 
+   /* When op_true/op_false is NULL or cmp_mode is not valid mask cmp mode,
+      vector dest is required.  */
+   if (!op_true || !ix86_valid_mask_cmp_mode (cmp_mode))
+     return false;
+ 
+   /* Exclude those that could be optimized in ix86_expand_sse_movcc.  */
+   if (op_false == CONST0_RTX (mode)
+       || op_true == CONST0_RTX (mode)
+       || (INTEGRAL_MODE_P (mode)
+ 	  && (op_true == CONSTM1_RTX (mode)
+ 	      || op_false == CONSTM1_RTX (mode))))
+     return false;
+ 
+   return true;
+ }
+ 
  /* Expand an SSE comparison.  Return the register with the result.  */
  
  static rtx
*************** ix86_expand_sse_cmp (rtx dest, enum rtx_
*** 3474,3480 ****
    bool maskcmp = false;
    rtx x;
  
!   if (ix86_valid_mask_cmp_mode (cmp_ops_mode))
      {
        unsigned int nbits = GET_MODE_NUNITS (cmp_ops_mode);
        maskcmp = true;
--- 3513,3519 ----
    bool maskcmp = false;
    rtx x;
  
!   if (ix86_use_mask_cmp_p (mode, cmp_ops_mode, op_true, op_false))
      {
        unsigned int nbits = GET_MODE_NUNITS (cmp_ops_mode);
        maskcmp = true;
*************** ix86_expand_sse_cmp (rtx dest, enum rtx_
*** 3506,3512 ****
  
    x = gen_rtx_fmt_ee (code, cmp_mode, cmp_op0, cmp_op1);
  
!   if (cmp_mode != mode && !maskcmp)
      {
        x = force_reg (cmp_ops_mode, x);
        convert_move (dest, x, false);
--- 3545,3551 ----
  
    x = gen_rtx_fmt_ee (code, cmp_mode, cmp_op0, cmp_op1);
  
!   if (cmp_mode != mode)
      {
        x = force_reg (cmp_ops_mode, x);
        convert_move (dest, x, false);
*************** ix86_expand_sse_movcc (rtx dest, rtx cmp
*** 3533,3541 ****
        return;
      }
  
-   /* In AVX512F the result of comparison is an integer mask.  */
-   bool maskcmp = mode != cmpmode && ix86_valid_mask_cmp_mode (mode);
- 
    rtx t2, t3, x;
  
    /* If we have an integer mask and FP value then we need
--- 3572,3577 ----
*************** ix86_expand_sse_movcc (rtx dest, rtx cmp
*** 3546,3553 ****
        cmp = gen_rtx_SUBREG (mode, cmp, 0);
      }
  
!   if (maskcmp)
      {
        /* Using vector move with mask register.  */
        cmp = force_reg (cmpmode, cmp);
        /* Optimize for mask zero.  */
--- 3582,3592 ----
        cmp = gen_rtx_SUBREG (mode, cmp, 0);
      }
  
!   /* In AVX512F the result of comparison is an integer mask.  */
!   if (mode != cmpmode
!       && GET_MODE_CLASS (cmpmode) == MODE_INT)
      {
+       gcc_assert (ix86_valid_mask_cmp_mode (mode));
        /* Using vector move with mask register.  */
        cmp = force_reg (cmpmode, cmp);
        /* Optimize for mask zero.  */
*************** ix86_expand_sse_movcc (rtx dest, rtx cmp
*** 3557,3573 ****
  		  ? force_reg (mode, op_false) : op_false);
        if (op_true == CONST0_RTX (mode))
  	{
- 	  rtx (*gen_not) (rtx, rtx);
- 	  switch (cmpmode)
- 	    {
- 	    case E_QImode: gen_not = gen_knotqi; break;
- 	    case E_HImode: gen_not = gen_knothi; break;
- 	    case E_SImode: gen_not = gen_knotsi; break;
- 	    case E_DImode: gen_not = gen_knotdi; break;
- 	    default: gcc_unreachable ();
- 	    }
  	  rtx n = gen_reg_rtx (cmpmode);
! 	  emit_insn (gen_not (n, cmp));
  	  cmp = n;
  	  /* Reverse op_true op_false.  */
  	  std::swap (op_true, op_false);
--- 3596,3606 ----
  		  ? force_reg (mode, op_false) : op_false);
        if (op_true == CONST0_RTX (mode))
  	{
  	  rtx n = gen_reg_rtx (cmpmode);
! 	  if (cmpmode == E_DImode && !TARGET_64BIT)
! 	    emit_insn (gen_knotdi (n, cmp));
! 	  else
! 	    emit_insn (gen_rtx_SET (n, gen_rtx_fmt_e (NOT, cmpmode, cmp)));
  	  cmp = n;
  	  /* Reverse op_true op_false.  */
  	  std::swap (op_true, op_false);
*************** ix86_expand_fp_vec_cmp (rtx operands[])
*** 4011,4017 ****
      }
    else
      cmp = ix86_expand_sse_cmp (operands[0], code, operands[2], operands[3],
! 			       operands[1], operands[2]);
  
    if (operands[0] != cmp)
      emit_move_insn (operands[0], cmp);
--- 4044,4050 ----
      }
    else
      cmp = ix86_expand_sse_cmp (operands[0], code, operands[2], operands[3],
! 			       NULL, NULL);
  
    if (operands[0] != cmp)
      emit_move_insn (operands[0], cmp);
*************** ix86_expand_int_sse_cmp (rtx dest, enum
*** 4036,4042 ****
      ;
    /* AVX512F supports all of the comparsions
       on all 128/256/512-bit vector int types.  */
!   else if (ix86_valid_mask_cmp_mode (mode))
      ;
    else
      {
--- 4069,4075 ----
      ;
    /* 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))
      ;
    else
      {
*************** expand_set_or_cpymem_via_rep (rtx destme
*** 5943,5948 ****
--- 5976,5982 ----
    /* If possible, it is shorter to use rep movs.
       TODO: Maybe it is better to move this logic to decide_alg.  */
    if (mode == QImode && CONST_INT_P (count) && !(INTVAL (count) & 3)
+       && !TARGET_PREFER_KNOWN_REP_MOVSB_STOSB
        && (!issetmem || orig_value == const0_rtx))
      mode = SImode;
  
*************** static rtx
*** 6011,6017 ****
  emit_memmov (rtx destmem, rtx *srcmem, rtx destptr, rtx srcptr,
  	     HOST_WIDE_INT size_to_move)
  {
!   rtx dst = destmem, src = *srcmem, adjust, tempreg;
    enum insn_code code;
    machine_mode move_mode;
    int piece_size, i;
--- 6045,6051 ----
  emit_memmov (rtx destmem, rtx *srcmem, rtx destptr, rtx srcptr,
  	     HOST_WIDE_INT size_to_move)
  {
!   rtx dst = destmem, src = *srcmem, tempreg;
    enum insn_code code;
    machine_mode move_mode;
    int piece_size, i;
*************** emit_memmov (rtx destmem, rtx *srcmem, r
*** 6047,6053 ****
  
    /* Emit moves.  We'll need SIZE_TO_MOVE/PIECE_SIZES moves.  */
    gcc_assert (size_to_move % piece_size == 0);
!   adjust = GEN_INT (piece_size);
    for (i = 0; i < size_to_move; i += piece_size)
      {
        /* We move from memory to memory, so we'll need to do it via
--- 6081,6087 ----
  
    /* Emit moves.  We'll need SIZE_TO_MOVE/PIECE_SIZES moves.  */
    gcc_assert (size_to_move % piece_size == 0);
! 
    for (i = 0; i < size_to_move; i += piece_size)
      {
        /* We move from memory to memory, so we'll need to do it via
*************** emit_memmov (rtx destmem, rtx *srcmem, r
*** 6057,6065 ****
        emit_insn (GEN_FCN (code) (dst, tempreg));
  
        emit_move_insn (destptr,
! 		      gen_rtx_PLUS (Pmode, copy_rtx (destptr), adjust));
        emit_move_insn (srcptr,
! 		      gen_rtx_PLUS (Pmode, copy_rtx (srcptr), adjust));
  
        dst = adjust_automodify_address_nv (dst, move_mode, destptr,
  					  piece_size);
--- 6091,6099 ----
        emit_insn (GEN_FCN (code) (dst, tempreg));
  
        emit_move_insn (destptr,
! 		      plus_constant (Pmode, copy_rtx (destptr), piece_size));
        emit_move_insn (srcptr,
! 		      plus_constant (Pmode, copy_rtx (srcptr), piece_size));
  
        dst = adjust_automodify_address_nv (dst, move_mode, destptr,
  					  piece_size);
*************** static rtx
*** 6216,6222 ****
  emit_memset (rtx destmem, rtx destptr, rtx promoted_val,
  	     HOST_WIDE_INT size_to_move)
  {
!   rtx dst = destmem, adjust;
    enum insn_code code;
    machine_mode move_mode;
    int piece_size, i;
--- 6250,6256 ----
  emit_memset (rtx destmem, rtx destptr, rtx promoted_val,
  	     HOST_WIDE_INT size_to_move)
  {
!   rtx dst = destmem;
    enum insn_code code;
    machine_mode move_mode;
    int piece_size, i;
*************** emit_memset (rtx destmem, rtx destptr, r
*** 6241,6247 ****
  
    /* Emit moves.  We'll need SIZE_TO_MOVE/PIECE_SIZES moves.  */
    gcc_assert (size_to_move % piece_size == 0);
!   adjust = GEN_INT (piece_size);
    for (i = 0; i < size_to_move; i += piece_size)
      {
        if (piece_size <= GET_MODE_SIZE (word_mode))
--- 6275,6281 ----
  
    /* Emit moves.  We'll need SIZE_TO_MOVE/PIECE_SIZES moves.  */
    gcc_assert (size_to_move % piece_size == 0);
! 
    for (i = 0; i < size_to_move; i += piece_size)
      {
        if (piece_size <= GET_MODE_SIZE (word_mode))
*************** emit_memset (rtx destmem, rtx destptr, r
*** 6255,6261 ****
        emit_insn (GEN_FCN (code) (dst, promoted_val));
  
        emit_move_insn (destptr,
! 		      gen_rtx_PLUS (Pmode, copy_rtx (destptr), adjust));
  
        dst = adjust_automodify_address_nv (dst, move_mode, destptr,
  					  piece_size);
--- 6289,6295 ----
        emit_insn (GEN_FCN (code) (dst, promoted_val));
  
        emit_move_insn (destptr,
! 		      plus_constant (Pmode, copy_rtx (destptr), piece_size));
  
        dst = adjust_automodify_address_nv (dst, move_mode, destptr,
  					  piece_size);
*************** decide_alg (HOST_WIDE_INT count, HOST_WI
*** 6951,6957 ****
  		  else if (!any_alg_usable_p)
  		    break;
  		}
! 	      else if (alg_usable_p (candidate, memset, have_as))
  		{
  		  *noalign = algs->size[i].noalign;
  		  return candidate;
--- 6985,6996 ----
  		  else if (!any_alg_usable_p)
  		    break;
  		}
! 	      else if (alg_usable_p (candidate, memset, have_as)
! 		       && !(TARGET_PREFER_KNOWN_REP_MOVSB_STOSB
! 			    && candidate == rep_prefix_1_byte
! 			    /* NB: If min_size != max_size, size is
! 			       unknown.  */
! 			    && min_size != max_size))
  		{
  		  *noalign = algs->size[i].noalign;
  		  return candidate;
*************** promote_duplicated_reg (machine_mode mod
*** 7080,7089 ****
        rtx reg = convert_modes (mode, QImode, val, true);
  
        if (!TARGET_PARTIAL_REG_STALL)
! 	if (mode == SImode)
! 	  emit_insn (gen_insvsi_1 (reg, reg));
! 	else
! 	  emit_insn (gen_insvdi_1 (reg, reg));
        else
  	{
  	  tmp = expand_simple_binop (mode, ASHIFT, reg, GEN_INT (8),
--- 7119,7125 ----
        rtx reg = convert_modes (mode, QImode, val, true);
  
        if (!TARGET_PARTIAL_REG_STALL)
! 	emit_insn (gen_insv_1 (mode, reg, reg));
        else
  	{
  	  tmp = expand_simple_binop (mode, ASHIFT, reg, GEN_INT (8),
*************** ix86_expand_set_or_cpymem (rtx dst, rtx
*** 7676,7681 ****
--- 7712,7796 ----
    return true;
  }
  
+ /* Expand cmpstrn or memcmp.  */
+ 
+ bool
+ ix86_expand_cmpstrn_or_cmpmem (rtx result, rtx src1, rtx src2,
+ 			       rtx length, rtx align, bool is_cmpstrn)
+ {
+   /* Expand strncmp and memcmp only with -minline-all-stringops since
+      "repz cmpsb" can be much slower than strncmp and memcmp functions
+      implemented with vector instructions, see
+ 
+      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
+    */
+   if (!TARGET_INLINE_ALL_STRINGOPS)
+     return false;
+ 
+   /* Can't use this if the user has appropriated ecx, esi or edi.  */
+   if (fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])
+     return false;
+ 
+   if (is_cmpstrn)
+     {
+       /* For strncmp, length is the maximum length, which can be larger
+ 	 than actual string lengths.  We can expand the cmpstrn pattern
+ 	 to "repz cmpsb" only if one of the strings is a constant so
+ 	 that expand_builtin_strncmp() can write the length argument to
+ 	 be the minimum of the const string length and the actual length
+ 	 argument.  Otherwise, "repz cmpsb" may pass the 0 byte.  */
+       tree t1 = MEM_EXPR (src1);
+       tree t2 = MEM_EXPR (src2);
+       if (!((t1 && TREE_CODE (t1) == MEM_REF
+ 	     && TREE_CODE (TREE_OPERAND (t1, 0)) == ADDR_EXPR
+ 	     && (TREE_CODE (TREE_OPERAND (TREE_OPERAND (t1, 0), 0))
+ 		 == STRING_CST))
+ 	    || (t2 && TREE_CODE (t2) == MEM_REF
+ 		&& TREE_CODE (TREE_OPERAND (t2, 0)) == ADDR_EXPR
+ 		&& (TREE_CODE (TREE_OPERAND (TREE_OPERAND (t2, 0), 0))
+ 		    == STRING_CST))))
+ 	return false;
+     }
+ 
+   rtx addr1 = copy_addr_to_reg (XEXP (src1, 0));
+   rtx addr2 = copy_addr_to_reg (XEXP (src2, 0));
+   if (addr1 != XEXP (src1, 0))
+     src1 = replace_equiv_address_nv (src1, addr1);
+   if (addr2 != XEXP (src2, 0))
+     src2 = replace_equiv_address_nv (src2, addr2);
+ 
+   /* NB: Make a copy of the data length to avoid changing the original
+      data length by cmpstrnqi patterns.  */
+   length = ix86_zero_extend_to_Pmode (length);
+   rtx lengthreg = gen_reg_rtx (Pmode);
+   emit_move_insn (lengthreg, length);
+ 
+   /* If we are testing strict equality, we can use known alignment to
+      good advantage.  This may be possible with combine, particularly
+      once cc0 is dead.  */
+   if (CONST_INT_P (length))
+     {
+       if (length == const0_rtx)
+ 	{
+ 	  emit_move_insn (result, const0_rtx);
+ 	  return true;
+ 	}
+       emit_insn (gen_cmpstrnqi_nz_1 (addr1, addr2, lengthreg, align,
+ 				     src1, src2));
+     }
+   else
+     {
+       emit_insn (gen_cmp_1 (Pmode, lengthreg, lengthreg));
+       emit_insn (gen_cmpstrnqi_1 (addr1, addr2, lengthreg, align,
+ 				  src1, src2));
+     }
+ 
+   rtx out = gen_lowpart (QImode, result);
+   emit_insn (gen_cmpintqi (out));
+   emit_move_insn (result, gen_rtx_SIGN_EXTEND (SImode, out));
+ 
+   return true;
+ }
  
  /* Expand the appropriate insns for doing strlen if not just doing
     repnz; scasb
*************** ix86_expand_strlensi_unroll_1 (rtx out,
*** 7808,7814 ****
  						     reg,
  						     tmpreg)));
         /* Emit lea manually to avoid clobbering of flags.  */
!        emit_insn (gen_rtx_SET (reg2, gen_rtx_PLUS (Pmode, out, const2_rtx)));
  
         tmp = gen_rtx_REG (CCNOmode, FLAGS_REG);
         tmp = gen_rtx_EQ (VOIDmode, tmp, const0_rtx);
--- 7923,7929 ----
  						     reg,
  						     tmpreg)));
         /* Emit lea manually to avoid clobbering of flags.  */
!        emit_insn (gen_rtx_SET (reg2, plus_constant (Pmode, out, 2)));
  
         tmp = gen_rtx_REG (CCNOmode, FLAGS_REG);
         tmp = gen_rtx_EQ (VOIDmode, tmp, const0_rtx);
*************** ix86_expand_multi_arg_builtin (enum insn
*** 8222,8237 ****
  			       enum rtx_code sub_code)
  {
    rtx pat;
!   int i;
!   int nargs;
    bool comparison_p = false;
    bool tf_p = false;
    bool last_arg_constant = false;
    int num_memory = 0;
!   struct {
!     rtx op;
!     machine_mode mode;
!   } args[4];
  
    machine_mode tmode = insn_data[icode].operand[0].mode;
  
--- 8337,8348 ----
  			       enum rtx_code sub_code)
  {
    rtx pat;
!   unsigned int i, nargs;
    bool comparison_p = false;
    bool tf_p = false;
    bool last_arg_constant = false;
    int num_memory = 0;
!   rtx xops[4];
  
    machine_mode tmode = insn_data[icode].operand[0].mode;
  
*************** ix86_expand_multi_arg_builtin (enum insn
*** 8325,8331 ****
    else if (memory_operand (target, tmode))
      num_memory++;
  
!   gcc_assert (nargs <= 4);
  
    for (i = 0; i < nargs; i++)
      {
--- 8436,8442 ----
    else if (memory_operand (target, tmode))
      num_memory++;
  
!   gcc_assert (nargs <= ARRAY_SIZE (xops));
  
    for (i = 0; i < nargs; i++)
      {
*************** ix86_expand_multi_arg_builtin (enum insn
*** 8405,8442 ****
  	    op = force_reg (mode, op);
  	}
  
!       args[i].op = op;
!       args[i].mode = mode;
      }
  
    switch (nargs)
      {
      case 1:
!       pat = GEN_FCN (icode) (target, args[0].op);
        break;
  
      case 2:
        if (tf_p)
! 	pat = GEN_FCN (icode) (target, args[0].op, args[1].op,
  			       GEN_INT ((int)sub_code));
        else if (! comparison_p)
! 	pat = GEN_FCN (icode) (target, args[0].op, args[1].op);
        else
  	{
  	  rtx cmp_op = gen_rtx_fmt_ee (sub_code, GET_MODE (target),
! 				       args[0].op,
! 				       args[1].op);
  
! 	  pat = GEN_FCN (icode) (target, cmp_op, args[0].op, args[1].op);
  	}
        break;
  
      case 3:
!       pat = GEN_FCN (icode) (target, args[0].op, args[1].op, args[2].op);
        break;
  
      case 4:
!       pat = GEN_FCN (icode) (target, args[0].op, args[1].op, args[2].op, args[3].op);
        break;
  
      default:
--- 8516,8551 ----
  	    op = force_reg (mode, op);
  	}
  
!       xops[i] = op;
      }
  
    switch (nargs)
      {
      case 1:
!       pat = GEN_FCN (icode) (target, xops[0]);
        break;
  
      case 2:
        if (tf_p)
! 	pat = GEN_FCN (icode) (target, xops[0], xops[1],
  			       GEN_INT ((int)sub_code));
        else if (! comparison_p)
! 	pat = GEN_FCN (icode) (target, xops[0], xops[1]);
        else
  	{
  	  rtx cmp_op = gen_rtx_fmt_ee (sub_code, GET_MODE (target),
! 				       xops[0], xops[1]);
  
! 	  pat = GEN_FCN (icode) (target, cmp_op, xops[0], xops[1]);
  	}
        break;
  
      case 3:
!       pat = GEN_FCN (icode) (target, xops[0], xops[1], xops[2]);
        break;
  
      case 4:
!       pat = GEN_FCN (icode) (target, xops[0], xops[1], xops[2], xops[3]);
        break;
  
      default:
*************** ix86_expand_sse_comi (const struct built
*** 8553,8563 ****
    if (VECTOR_MODE_P (mode1))
      op1 = safe_vector_operand (op1, mode1);
  
-   /* Swap operands if we have a comparison that isn't available in
-      hardware.  */
-   if (d->flag & BUILTIN_DESC_SWAP_OPERANDS)
-     std::swap (op0, op1);
- 
    target = gen_reg_rtx (SImode);
    emit_move_insn (target, const0_rtx);
    target = gen_rtx_SUBREG (QImode, target, 0);
--- 8662,8667 ----
*************** ix86_expand_args_builtin (const struct b
*** 8916,8926 ****
    unsigned int nargs_constant = 0;
    unsigned int mask_pos = 0;
    int num_memory = 0;
!   struct
!     {
!       rtx op;
!       machine_mode mode;
!     } args[6];
    bool second_arg_count = false;
    enum insn_code icode = d->icode;
    const struct insn_data_d *insn_p = &insn_data[icode];
--- 9020,9026 ----
    unsigned int nargs_constant = 0;
    unsigned int mask_pos = 0;
    int num_memory = 0;
!   rtx xops[6];
    bool second_arg_count = false;
    enum insn_code icode = d->icode;
    const struct insn_data_d *insn_p = &insn_data[icode];
*************** ix86_expand_args_builtin (const struct b
*** 9680,9686 ****
        gcc_unreachable ();
      }
  
!   gcc_assert (nargs <= ARRAY_SIZE (args));
  
    if (comparison != UNKNOWN)
      {
--- 9780,9786 ----
        gcc_unreachable ();
      }
  
!   gcc_assert (nargs <= ARRAY_SIZE (xops));
  
    if (comparison != UNKNOWN)
      {
*************** ix86_expand_args_builtin (const struct b
*** 9887,9920 ****
  	    }
  	}
  
!       args[i].op = op;
!       args[i].mode = mode;
      }
  
    switch (nargs)
      {
      case 1:
!       pat = GEN_FCN (icode) (real_target, args[0].op);
        break;
      case 2:
!       pat = GEN_FCN (icode) (real_target, args[0].op, args[1].op);
        break;
      case 3:
!       pat = GEN_FCN (icode) (real_target, args[0].op, args[1].op,
! 			     args[2].op);
        break;
      case 4:
!       pat = GEN_FCN (icode) (real_target, args[0].op, args[1].op,
! 			     args[2].op, args[3].op);
        break;
      case 5:
!       pat = GEN_FCN (icode) (real_target, args[0].op, args[1].op,
! 			     args[2].op, args[3].op, args[4].op);
        break;
      case 6:
!       pat = GEN_FCN (icode) (real_target, args[0].op, args[1].op,
! 			     args[2].op, args[3].op, args[4].op,
! 			     args[5].op);
        break;
      default:
        gcc_unreachable ();
--- 9987,10017 ----
  	    }
  	}
  
!       xops[i] = op;
      }
  
    switch (nargs)
      {
      case 1:
!       pat = GEN_FCN (icode) (real_target, xops[0]);
        break;
      case 2:
!       pat = GEN_FCN (icode) (real_target, xops[0], xops[1]);
        break;
      case 3:
!       pat = GEN_FCN (icode) (real_target, xops[0], xops[1], xops[2]);
        break;
      case 4:
!       pat = GEN_FCN (icode) (real_target, xops[0], xops[1],
! 			     xops[2], xops[3]);
        break;
      case 5:
!       pat = GEN_FCN (icode) (real_target, xops[0], xops[1],
! 			     xops[2], xops[3], xops[4]);
        break;
      case 6:
!       pat = GEN_FCN (icode) (real_target, xops[0], xops[1],
! 			     xops[2], xops[3], xops[4], xops[5]);
        break;
      default:
        gcc_unreachable ();
*************** ix86_expand_round_builtin (const struct
*** 10181,10191 ****
  {
    rtx pat;
    unsigned int i, nargs;
!   struct
!     {
!       rtx op;
!       machine_mode mode;
!     } args[6];
    enum insn_code icode = d->icode;
    const struct insn_data_d *insn_p = &insn_data[icode];
    machine_mode tmode = insn_p->operand[0].mode;
--- 10278,10284 ----
  {
    rtx pat;
    unsigned int i, nargs;
!   rtx xops[6];
    enum insn_code icode = d->icode;
    const struct insn_data_d *insn_p = &insn_data[icode];
    machine_mode tmode = insn_p->operand[0].mode;
*************** ix86_expand_round_builtin (const struct
*** 10246,10257 ****
--- 10339,10354 ----
      case V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT:
      case V2DF_FTYPE_V2DF_V2DF_V2DF_QI_INT:
      case V2DF_FTYPE_V2DF_V4SF_V2DF_QI_INT:
+     case V2DF_FTYPE_V2DF_V4SF_V2DF_UQI_INT:
      case V4SF_FTYPE_V4SF_V4SF_V4SF_QI_INT:
      case V4SF_FTYPE_V4SF_V2DF_V4SF_QI_INT:
+     case V4SF_FTYPE_V4SF_V2DF_V4SF_UQI_INT:
        nargs = 5;
        break;
      case V16SF_FTYPE_V16SF_INT_V16SF_HI_INT:
      case V8DF_FTYPE_V8DF_INT_V8DF_QI_INT:
+     case V8DF_FTYPE_V8DF_INT_V8DF_UQI_INT:
+     case V16SF_FTYPE_V16SF_INT_V16SF_UHI_INT:
        nargs_constant = 4;
        nargs = 5;
        break;
*************** ix86_expand_round_builtin (const struct
*** 10281,10287 ****
      default:
        gcc_unreachable ();
      }
!   gcc_assert (nargs <= ARRAY_SIZE (args));
  
    if (optimize
        || target == 0
--- 10378,10384 ----
      default:
        gcc_unreachable ();
      }
!   gcc_assert (nargs <= ARRAY_SIZE (xops));
  
    if (optimize
        || target == 0
*************** ix86_expand_round_builtin (const struct
*** 10353,10386 ****
  	    }
  	}
  
!       args[i].op = op;
!       args[i].mode = mode;
      }
  
    switch (nargs)
      {
      case 1:
!       pat = GEN_FCN (icode) (target, args[0].op);
        break;
      case 2:
!       pat = GEN_FCN (icode) (target, args[0].op, args[1].op);
        break;
      case 3:
!       pat = GEN_FCN (icode) (target, args[0].op, args[1].op,
! 			     args[2].op);
        break;
      case 4:
!       pat = GEN_FCN (icode) (target, args[0].op, args[1].op,
! 			     args[2].op, args[3].op);
        break;
      case 5:
!       pat = GEN_FCN (icode) (target, args[0].op, args[1].op,
! 			     args[2].op, args[3].op, args[4].op);
        break;
      case 6:
!       pat = GEN_FCN (icode) (target, args[0].op, args[1].op,
! 			     args[2].op, args[3].op, args[4].op,
! 			     args[5].op);
        break;
      default:
        gcc_unreachable ();
--- 10450,10480 ----
  	    }
  	}
  
!       xops[i] = op;
      }
  
    switch (nargs)
      {
      case 1:
!       pat = GEN_FCN (icode) (target, xops[0]);
        break;
      case 2:
!       pat = GEN_FCN (icode) (target, xops[0], xops[1]);
        break;
      case 3:
!       pat = GEN_FCN (icode) (target, xops[0], xops[1], xops[2]);
        break;
      case 4:
!       pat = GEN_FCN (icode) (target, xops[0], xops[1],
! 			     xops[2], xops[3]);
        break;
      case 5:
!       pat = GEN_FCN (icode) (target, xops[0], xops[1],
! 			     xops[2], xops[3], xops[4]);
        break;
      case 6:
!       pat = GEN_FCN (icode) (target, xops[0], xops[1],
! 			     xops[2], xops[3], xops[4], xops[5]);
        break;
      default:
        gcc_unreachable ();
*************** ix86_expand_special_args_builtin (const
*** 10407,10419 ****
    rtx pat, op;
    unsigned int i, nargs, arg_adjust, memory;
    bool aligned_mem = false;
!   struct
!     {
!       rtx op;
!       machine_mode mode;
!     } args[3];
    enum insn_code icode = d->icode;
-   bool last_arg_constant = false;
    const struct insn_data_d *insn_p = &insn_data[icode];
    machine_mode tmode = insn_p->operand[0].mode;
    enum { load, store } klass;
--- 10501,10508 ----
    rtx pat, op;
    unsigned int i, nargs, arg_adjust, memory;
    bool aligned_mem = false;
!   rtx xops[3];
    enum insn_code icode = d->icode;
    const struct insn_data_d *insn_p = &insn_data[icode];
    machine_mode tmode = insn_p->operand[0].mode;
    enum { load, store } klass;
*************** ix86_expand_special_args_builtin (const
*** 10434,10439 ****
--- 10523,10529 ----
      case USHORT_FTYPE_VOID:
      case UINT64_FTYPE_VOID:
      case UINT_FTYPE_VOID:
+     case UINT8_FTYPE_VOID:
      case UNSIGNED_FTYPE_VOID:
        nargs = 0;
        klass = load;
*************** ix86_expand_special_args_builtin (const
*** 10485,10491 ****
        nargs = 1;
        klass = store;
        /* Reserve memory operand for target.  */
!       memory = ARRAY_SIZE (args);
        switch (icode)
  	{
  	/* These builtins and instructions require the memory
--- 10575,10581 ----
        nargs = 1;
        klass = store;
        /* Reserve memory operand for target.  */
!       memory = ARRAY_SIZE (xops);
        switch (icode)
  	{
  	/* These builtins and instructions require the memory
*************** ix86_expand_special_args_builtin (const
*** 10586,10603 ****
      case VOID_FTYPE_PV8SI_V8DI_UQI:
      case VOID_FTYPE_PV8HI_V8DI_UQI:
      case VOID_FTYPE_PV16HI_V16SI_UHI:
!     case VOID_FTYPE_PV16QI_V8DI_UQI:
      case VOID_FTYPE_PV16QI_V16SI_UHI:
      case VOID_FTYPE_PV4SI_V4DI_UQI:
!     case VOID_FTYPE_PV4SI_V2DI_UQI:
!     case VOID_FTYPE_PV8HI_V4DI_UQI:
!     case VOID_FTYPE_PV8HI_V2DI_UQI:
      case VOID_FTYPE_PV8HI_V8SI_UQI:
!     case VOID_FTYPE_PV8HI_V4SI_UQI:
!     case VOID_FTYPE_PV16QI_V4DI_UQI:
!     case VOID_FTYPE_PV16QI_V2DI_UQI:
!     case VOID_FTYPE_PV16QI_V8SI_UQI:
!     case VOID_FTYPE_PV16QI_V4SI_UQI:
      case VOID_FTYPE_PCHAR_V64QI_UDI:
      case VOID_FTYPE_PCHAR_V32QI_USI:
      case VOID_FTYPE_PCHAR_V16QI_UHI:
--- 10676,10693 ----
      case VOID_FTYPE_PV8SI_V8DI_UQI:
      case VOID_FTYPE_PV8HI_V8DI_UQI:
      case VOID_FTYPE_PV16HI_V16SI_UHI:
!     case VOID_FTYPE_PUDI_V8DI_UQI:
      case VOID_FTYPE_PV16QI_V16SI_UHI:
      case VOID_FTYPE_PV4SI_V4DI_UQI:
!     case VOID_FTYPE_PUDI_V2DI_UQI:
!     case VOID_FTYPE_PUDI_V4DI_UQI:
!     case VOID_FTYPE_PUSI_V2DI_UQI:
      case VOID_FTYPE_PV8HI_V8SI_UQI:
!     case VOID_FTYPE_PUDI_V4SI_UQI:
!     case VOID_FTYPE_PUSI_V4DI_UQI:
!     case VOID_FTYPE_PUHI_V2DI_UQI:
!     case VOID_FTYPE_PUDI_V8SI_UQI:
!     case VOID_FTYPE_PUSI_V4SI_UQI:
      case VOID_FTYPE_PCHAR_V64QI_UDI:
      case VOID_FTYPE_PCHAR_V32QI_USI:
      case VOID_FTYPE_PCHAR_V16QI_UHI:
*************** ix86_expand_special_args_builtin (const
*** 10618,10628 ****
      case VOID_FTYPE_PFLOAT_V4SF_UQI:
      case VOID_FTYPE_PV32QI_V32HI_USI:
      case VOID_FTYPE_PV16QI_V16HI_UHI:
!     case VOID_FTYPE_PV8QI_V8HI_UQI:
        nargs = 2;
        klass = store;
        /* Reserve memory operand for target.  */
!       memory = ARRAY_SIZE (args);
        break;
      case V4SF_FTYPE_PCV4SF_V4SF_UQI:
      case V8SF_FTYPE_PCV8SF_V8SF_UQI:
--- 10708,10718 ----
      case VOID_FTYPE_PFLOAT_V4SF_UQI:
      case VOID_FTYPE_PV32QI_V32HI_USI:
      case VOID_FTYPE_PV16QI_V16HI_UHI:
!     case VOID_FTYPE_PUDI_V8HI_UQI:
        nargs = 2;
        klass = store;
        /* Reserve memory operand for target.  */
!       memory = ARRAY_SIZE (xops);
        break;
      case V4SF_FTYPE_PCV4SF_V4SF_UQI:
      case V8SF_FTYPE_PCV8SF_V8SF_UQI:
*************** ix86_expand_special_args_builtin (const
*** 10692,10711 ****
        klass = load;
        memory = 0;
        break;
-     case VOID_FTYPE_UINT_UINT_UINT:
-     case VOID_FTYPE_UINT64_UINT_UINT:
-     case UCHAR_FTYPE_UINT_UINT_UINT:
-     case UCHAR_FTYPE_UINT64_UINT_UINT:
-       nargs = 3;
-       klass = load;
-       memory = ARRAY_SIZE (args);
-       last_arg_constant = true;
-       break;
      default:
        gcc_unreachable ();
      }
  
!   gcc_assert (nargs <= ARRAY_SIZE (args));
  
    if (klass == store)
      {
--- 10782,10792 ----
        klass = load;
        memory = 0;
        break;
      default:
        gcc_unreachable ();
      }
  
!   gcc_assert (nargs <= ARRAY_SIZE (xops));
  
    if (klass == store)
      {
*************** ix86_expand_special_args_builtin (const
*** 10745,10809 ****
    for (i = 0; i < nargs; i++)
      {
        machine_mode mode = insn_p->operand[i + 1].mode;
-       bool match;
  
        arg = CALL_EXPR_ARG (exp, i + arg_adjust);
        op = expand_normal (arg);
-       match = insn_p->operand[i + 1].predicate (op, mode);
  
!       if (last_arg_constant && (i + 1) == nargs)
  	{
! 	  if (!match)
! 	    {
! 	      if (icode == CODE_FOR_lwp_lwpvalsi3
! 		  || icode == CODE_FOR_lwp_lwpinssi3
! 		  || icode == CODE_FOR_lwp_lwpvaldi3
! 		  || icode == CODE_FOR_lwp_lwpinsdi3)
! 		error ("the last argument must be a 32-bit immediate");
! 	      else
! 		error ("the last argument must be an 8-bit immediate");
! 	      return const0_rtx;
! 	    }
  	}
        else
  	{
! 	  if (i == memory)
! 	    {
! 	      /* This must be the memory operand.  */
! 	      op = ix86_zero_extend_to_Pmode (op);
! 	      op = gen_rtx_MEM (mode, op);
! 	      /* op at this point has just BITS_PER_UNIT MEM_ALIGN
! 		 on it.  Try to improve it using get_pointer_alignment,
! 		 and if the special builtin is one that requires strict
! 		 mode alignment, also from it's GET_MODE_ALIGNMENT.
! 		 Failure to do so could lead to ix86_legitimate_combined_insn
! 		 rejecting all changes to such insns.  */
! 	      unsigned int align = get_pointer_alignment (arg);
! 	      if (aligned_mem && align < GET_MODE_ALIGNMENT (mode))
! 		align = GET_MODE_ALIGNMENT (mode);
! 	      if (MEM_ALIGN (op) < align)
! 		set_mem_align (op, align);
! 	    }
! 	  else
! 	    {
! 	      /* This must be register.  */
! 	      if (VECTOR_MODE_P (mode))
! 		op = safe_vector_operand (op, mode);
  
! 	      op = fixup_modeless_constant (op, mode);
  
! 	      if (GET_MODE (op) == mode || GET_MODE (op) == VOIDmode)
! 		op = copy_to_mode_reg (mode, op);
! 	      else
! 	        {
! 	          op = copy_to_reg (op);
! 	          op = lowpart_subreg (mode, op, GET_MODE (op));
! 	        }
  	    }
  	}
  
!       args[i].op = op;
!       args[i].mode = mode;
      }
  
    switch (nargs)
--- 10826,10876 ----
    for (i = 0; i < nargs; i++)
      {
        machine_mode mode = insn_p->operand[i + 1].mode;
  
        arg = CALL_EXPR_ARG (exp, i + arg_adjust);
        op = expand_normal (arg);
  
!       if (i == memory)
  	{
! 	  /* This must be the memory operand.  */
! 	  op = ix86_zero_extend_to_Pmode (op);
! 	  op = gen_rtx_MEM (mode, op);
! 	  /* op at this point has just BITS_PER_UNIT MEM_ALIGN
! 	     on it.  Try to improve it using get_pointer_alignment,
! 	     and if the special builtin is one that requires strict
! 	     mode alignment, also from it's GET_MODE_ALIGNMENT.
! 	     Failure to do so could lead to ix86_legitimate_combined_insn
! 	     rejecting all changes to such insns.  */
! 	  unsigned int align = get_pointer_alignment (arg);
! 	  if (aligned_mem && align < GET_MODE_ALIGNMENT (mode))
! 	    align = GET_MODE_ALIGNMENT (mode);
! 	  if (MEM_ALIGN (op) < align)
! 	    set_mem_align (op, align);
  	}
        else
  	{
! 	  /* This must be register.  */
! 	  if (VECTOR_MODE_P (mode))
! 	    op = safe_vector_operand (op, mode);
  
! 	  op = fixup_modeless_constant (op, mode);
  
! 	  /* NB: 3-operands load implied it's a mask load,
! 	     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))
! 	    ;
! 	  else if (GET_MODE (op) == mode || GET_MODE (op) == VOIDmode)
! 	    op = copy_to_mode_reg (mode, op);
! 	  else
! 	    {
! 	      op = copy_to_reg (op);
! 	      op = lowpart_subreg (mode, op, GET_MODE (op));
  	    }
  	}
  
!       xops[i]= op;
      }
  
    switch (nargs)
*************** ix86_expand_special_args_builtin (const
*** 10812,10824 ****
        pat = GEN_FCN (icode) (target);
        break;
      case 1:
!       pat = GEN_FCN (icode) (target, args[0].op);
        break;
      case 2:
!       pat = GEN_FCN (icode) (target, args[0].op, args[1].op);
        break;
      case 3:
!       pat = GEN_FCN (icode) (target, args[0].op, args[1].op, args[2].op);
        break;
      default:
        gcc_unreachable ();
--- 10879,10891 ----
        pat = GEN_FCN (icode) (target);
        break;
      case 1:
!       pat = GEN_FCN (icode) (target, xops[0]);
        break;
      case 2:
!       pat = GEN_FCN (icode) (target, xops[0], xops[1]);
        break;
      case 3:
!       pat = GEN_FCN (icode) (target, xops[0], xops[1], xops[2]);
        break;
      default:
        gcc_unreachable ();
*************** ix86_expand_special_args_builtin (const
*** 10826,10831 ****
--- 10893,10899 ----
  
    if (! pat)
      return 0;
+ 
    emit_insn (pat);
    return klass == store ? 0 : target;
  }
*************** ix86_expand_builtin (tree exp, rtx targe
*** 11003,11008 ****
--- 11071,11078 ----
       OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A
       OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_CRC32
       OPTION_MASK_ISA_FMA | OPTION_MASK_ISA_FMA4
+      (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL) or
+        OPTION_MASK_ISA2_AVXVNNI
       where for each such pair it is sufficient if either of the ISAs is
       enabled, plus if it is ored with other options also those others.
       OPTION_MASK_ISA_MMX in bisa is satisfied also if TARGET_MMX_WITH_SSE.  */
*************** ix86_expand_builtin (tree exp, rtx targe
*** 11010,11028 ****
         == (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A))
        && (isa & (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A)) != 0)
      isa |= (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A);
    if (((bisa & (OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_CRC32))
         == (OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_CRC32))
        && (isa & (OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_CRC32)) != 0)
      isa |= (OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_CRC32);
    if (((bisa & (OPTION_MASK_ISA_FMA | OPTION_MASK_ISA_FMA4))
         == (OPTION_MASK_ISA_FMA | OPTION_MASK_ISA_FMA4))
        && (isa & (OPTION_MASK_ISA_FMA | OPTION_MASK_ISA_FMA4)) != 0)
      isa |= (OPTION_MASK_ISA_FMA | OPTION_MASK_ISA_FMA4);
!   if ((bisa & OPTION_MASK_ISA_MMX) && !TARGET_MMX && TARGET_MMX_WITH_SSE)
      {
        bisa &= ~OPTION_MASK_ISA_MMX;
        bisa |= OPTION_MASK_ISA_SSE2;
      }
    if ((bisa & isa) != bisa || (bisa2 & isa2) != bisa2)
      {
        bool add_abi_p = bisa & OPTION_MASK_ISA_64BIT;
--- 11080,11115 ----
         == (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A))
        && (isa & (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A)) != 0)
      isa |= (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A);
+ 
    if (((bisa & (OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_CRC32))
         == (OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_CRC32))
        && (isa & (OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_CRC32)) != 0)
      isa |= (OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_CRC32);
+ 
    if (((bisa & (OPTION_MASK_ISA_FMA | OPTION_MASK_ISA_FMA4))
         == (OPTION_MASK_ISA_FMA | OPTION_MASK_ISA_FMA4))
        && (isa & (OPTION_MASK_ISA_FMA | OPTION_MASK_ISA_FMA4)) != 0)
      isa |= (OPTION_MASK_ISA_FMA | OPTION_MASK_ISA_FMA4);
! 
!   if ((((bisa & (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL))
! 	== (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL))
!        || (bisa2 & OPTION_MASK_ISA2_AVXVNNI) != 0)
!       && (((isa & (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL))
! 	   == (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL))
! 	  || (isa2 & OPTION_MASK_ISA2_AVXVNNI) != 0))
!     {
!       isa |= OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL;
!       isa2 |= OPTION_MASK_ISA2_AVXVNNI;
!     }
! 
!   if ((bisa & OPTION_MASK_ISA_MMX) && !TARGET_MMX && TARGET_MMX_WITH_SSE
!       /* __builtin_ia32_maskmovq requires MMX registers.  */
!       && fcode != IX86_BUILTIN_MASKMOVQ)
      {
        bisa &= ~OPTION_MASK_ISA_MMX;
        bisa |= OPTION_MASK_ISA_SSE2;
      }
+ 
    if ((bisa & isa) != bisa || (bisa2 & isa2) != bisa2)
      {
        bool add_abi_p = bisa & OPTION_MASK_ISA_64BIT;
*************** ix86_expand_builtin (tree exp, rtx targe
*** 11239,11244 ****
--- 11326,11344 ----
  
        return target;
  
+     case IX86_BUILTIN_TESTUI:
+       emit_insn (gen_testui ());
+ 
+       if (target == 0
+ 	  || !register_operand (target, QImode))
+ 	target = gen_reg_rtx (QImode);
+ 
+       pat = gen_rtx_LTU (QImode, gen_rtx_REG (CCCmode, FLAGS_REG),
+ 			 const0_rtx);
+       emit_insn (gen_rtx_SET (target, pat));
+ 
+       return target;
+ 
      case IX86_BUILTIN_CLZERO:
        arg0 = CALL_EXPR_ARG (exp, 0);
        op0 = expand_normal (arg0);
*************** ix86_expand_builtin (tree exp, rtx targe
*** 11257,11262 ****
--- 11357,11582 ----
        emit_insn (gen_cldemote (op0));
        return 0;
  
+     case IX86_BUILTIN_LOADIWKEY:
+       {
+ 	arg0 = CALL_EXPR_ARG (exp, 0);
+ 	arg1 = CALL_EXPR_ARG (exp, 1);
+ 	arg2 = CALL_EXPR_ARG (exp, 2);
+ 	arg3 = CALL_EXPR_ARG (exp, 3);
+ 
+ 	op0 = expand_normal (arg0);
+ 	op1 = expand_normal (arg1);
+ 	op2 = expand_normal (arg2);
+ 	op3 = expand_normal (arg3);
+ 
+ 	if (!REG_P (op0))
+ 	  op0 = copy_to_mode_reg (V2DImode, op0);
+ 	if (!REG_P (op1))
+ 	  op1 = copy_to_mode_reg (V2DImode, op1);
+ 	if (!REG_P (op2))
+ 	  op2 = copy_to_mode_reg (V2DImode, op2);
+ 	if (!REG_P (op3))
+ 	  op3 = copy_to_mode_reg (SImode, op3);
+ 
+ 	emit_insn (gen_loadiwkey (op0, op1, op2, op3));
+ 
+ 	return 0;
+       }
+ 
+     case IX86_BUILTIN_AESDEC128KLU8:
+       icode = CODE_FOR_aesdec128klu8;
+       goto aesdecenc_expand;
+ 
+     case IX86_BUILTIN_AESDEC256KLU8:
+       icode = CODE_FOR_aesdec256klu8;
+       goto aesdecenc_expand;
+ 
+     case IX86_BUILTIN_AESENC128KLU8:
+       icode = CODE_FOR_aesenc128klu8;
+       goto aesdecenc_expand;
+ 
+     case IX86_BUILTIN_AESENC256KLU8:
+       icode = CODE_FOR_aesenc256klu8;
+ 
+     aesdecenc_expand:
+ 
+       arg0 = CALL_EXPR_ARG (exp, 0); // __m128i *odata
+       arg1 = CALL_EXPR_ARG (exp, 1); // __m128i idata
+       arg2 = CALL_EXPR_ARG (exp, 2); // const void *p
+ 
+       op0 = expand_normal (arg0);
+       op1 = expand_normal (arg1);
+       op2 = expand_normal (arg2);
+ 
+       if (!address_operand (op0, V2DImode))
+ 	{
+ 	  op0 = convert_memory_address (Pmode, op0);
+ 	  op0 = copy_addr_to_reg (op0);
+ 	}
+       op0 = gen_rtx_MEM (V2DImode, op0);
+ 
+       if (!REG_P (op1))
+ 	op1 = copy_to_mode_reg (V2DImode, op1);
+ 
+       if (!address_operand (op2, VOIDmode))
+ 	{
+ 	  op2 = convert_memory_address (Pmode, op2);
+ 	  op2 = copy_addr_to_reg (op2);
+ 	}
+       op2 = gen_rtx_MEM (BLKmode, op2);
+ 
+       emit_insn (GEN_FCN (icode) (op1, op1, op2));
+ 
+       if (target == 0)
+ 	target = gen_reg_rtx (QImode);
+ 
+       pat = gen_rtx_EQ (QImode, gen_rtx_REG (CCZmode, FLAGS_REG),
+ 			const0_rtx);
+       emit_insn (gen_rtx_SET (target, pat));
+ 
+       emit_insn (gen_rtx_SET (op0, op1));
+ 
+       return target;
+ 
+     case IX86_BUILTIN_AESDECWIDE128KLU8:
+       icode = CODE_FOR_aesdecwide128klu8;
+       goto wideaesdecenc_expand;
+ 
+     case IX86_BUILTIN_AESDECWIDE256KLU8:
+       icode = CODE_FOR_aesdecwide256klu8;
+       goto wideaesdecenc_expand;
+ 
+     case IX86_BUILTIN_AESENCWIDE128KLU8:
+       icode = CODE_FOR_aesencwide128klu8;
+       goto wideaesdecenc_expand;
+ 
+     case IX86_BUILTIN_AESENCWIDE256KLU8:
+       icode = CODE_FOR_aesencwide256klu8;
+ 
+     wideaesdecenc_expand:
+ 
+       rtx xmm_regs[8];
+       rtx op;
+ 
+       arg0 = CALL_EXPR_ARG (exp, 0); // __m128i * odata
+       arg1 = CALL_EXPR_ARG (exp, 1); // const __m128i * idata
+       arg2 = CALL_EXPR_ARG (exp, 2); // const void *p
+ 
+       op0 = expand_normal (arg0);
+       op1 = expand_normal (arg1);
+       op2 = expand_normal (arg2);
+ 
+       if (!address_operand (op2, VOIDmode))
+ 	{
+ 	  op2 = convert_memory_address (Pmode, op2);
+ 	  op2 = copy_addr_to_reg (op2);
+ 	}
+       op2 = gen_rtx_MEM (BLKmode, op2);
+ 
+       for (i = 0; i < 8; i++)
+ 	{
+ 	  xmm_regs[i] = gen_rtx_REG (V2DImode, GET_SSE_REGNO (i));
+ 
+ 	  op = gen_rtx_MEM (V2DImode,
+ 			    plus_constant (Pmode, op1, (i * 16)));
+ 
+ 	  emit_move_insn (xmm_regs[i], op);
+ 	}
+ 
+       emit_insn (GEN_FCN (icode) (op2));
+ 
+       if (target == 0)
+ 	target = gen_reg_rtx (QImode);
+ 
+       pat = gen_rtx_EQ (QImode, gen_rtx_REG (CCZmode, FLAGS_REG),
+ 			const0_rtx);
+       emit_insn (gen_rtx_SET (target, pat));
+ 
+       for (i = 0; i < 8; i++)
+ 	{
+ 	  op = gen_rtx_MEM (V2DImode,
+ 			    plus_constant (Pmode, op0, (i * 16)));
+ 	  emit_move_insn (op, xmm_regs[i]);
+ 	}
+ 
+       return target;
+ 
+     case IX86_BUILTIN_ENCODEKEY128U32:
+       {
+ 	rtx op, xmm_regs[7];
+ 
+ 	arg0 = CALL_EXPR_ARG (exp, 0); // unsigned int htype
+ 	arg1 = CALL_EXPR_ARG (exp, 1); // __m128i key
+ 	arg2 = CALL_EXPR_ARG (exp, 2); // void *h
+ 
+ 	op0 = expand_normal (arg0);
+ 	op1 = expand_normal (arg1);
+ 	op2 = expand_normal (arg2);
+ 
+ 	if (!REG_P (op0))
+ 	  op0 = copy_to_mode_reg (SImode, op0);
+ 
+ 	op = gen_rtx_REG (V2DImode, GET_SSE_REGNO (0));
+ 	emit_move_insn (op, op1);
+ 
+ 	for (i = 0; i < 3; i++)
+ 	  xmm_regs[i] = gen_rtx_REG (V2DImode, GET_SSE_REGNO (i));
+ 
+ 	if (target == 0)
+ 	  target = gen_reg_rtx (SImode);
+ 
+ 	emit_insn (gen_encodekey128u32 (target, op0));
+ 
+ 	for (i = 0; i < 3; i++)
+ 	  {
+ 	    op = gen_rtx_MEM (V2DImode,
+ 			      plus_constant (Pmode, op2, (i * 16)));
+ 	    emit_move_insn (op, xmm_regs[i]);
+ 	  }
+ 
+ 	return target;
+       }
+     case IX86_BUILTIN_ENCODEKEY256U32:
+       {
+ 	rtx op, xmm_regs[7];
+ 
+ 	arg0 = CALL_EXPR_ARG (exp, 0); // unsigned int htype
+ 	arg1 = CALL_EXPR_ARG (exp, 1); // __m128i keylow
+ 	arg2 = CALL_EXPR_ARG (exp, 2); // __m128i keyhi
+ 	arg3 = CALL_EXPR_ARG (exp, 3); // void *h
+ 
+ 	op0 = expand_normal (arg0);
+ 	op1 = expand_normal (arg1);
+ 	op2 = expand_normal (arg2);
+ 	op3 = expand_normal (arg3);
+ 
+ 	if (!REG_P (op0))
+ 	  op0 = copy_to_mode_reg (SImode, op0);
+ 
+ 	/* Force to use xmm0, xmm1 for keylow, keyhi*/
+ 	op = gen_rtx_REG (V2DImode, GET_SSE_REGNO (0));
+ 	emit_move_insn (op, op1);
+ 	op = gen_rtx_REG (V2DImode, GET_SSE_REGNO (1));
+ 	emit_move_insn (op, op2);
+ 
+ 	for (i = 0; i < 4; i++)
+ 	  xmm_regs[i] = gen_rtx_REG (V2DImode, GET_SSE_REGNO (i));
+ 
+ 	if (target == 0)
+ 	  target = gen_reg_rtx (SImode);
+ 
+ 	emit_insn (gen_encodekey256u32 (target, op0));
+ 
+ 	for (i = 0; i < 4; i++)
+ 	  {
+ 	    op = gen_rtx_MEM (V2DImode,
+ 			      plus_constant (Pmode, op3, (i * 16)));
+ 	    emit_move_insn (op, xmm_regs[i]);
+ 	  }
+ 
+ 	return target;
+       }
+ 
      case IX86_BUILTIN_VEC_INIT_V2SI:
      case IX86_BUILTIN_VEC_INIT_V4HI:
      case IX86_BUILTIN_VEC_INIT_V8QI:
*************** ix86_expand_builtin (tree exp, rtx targe
*** 11475,11498 ****
  	}
        else
  	{
! 	  rtx pat;
  
- 	  target = gen_reg_rtx (SImode);
  	  emit_move_insn (target, const0_rtx);
  	  target = gen_rtx_SUBREG (QImode, target, 0);
  
! 	  if (fcode == IX86_BUILTIN_ENQCMD)
! 	    pat = gen_enqcmd (UNSPECV_ENQCMD, Pmode, op0, op1);
! 	  else
! 	    pat = gen_enqcmd (UNSPECV_ENQCMDS, Pmode, op0, op1);
! 
! 	  emit_insn (pat);
! 
! 	  emit_insn (gen_rtx_SET (gen_rtx_STRICT_LOW_PART (VOIDmode, target),
! 				  gen_rtx_fmt_ee (EQ, QImode,
! 						  SET_DEST (pat),
! 						  const0_rtx)));
  
  	  return SUBREG_REG (target);
  	}
  
--- 11795,11818 ----
  	}
        else
  	{
! 	  if (target == 0
! 	      || !register_operand (target, SImode))
! 	    target = gen_reg_rtx (SImode);
  
  	  emit_move_insn (target, const0_rtx);
  	  target = gen_rtx_SUBREG (QImode, target, 0);
  
! 	  int unspecv = (fcode == IX86_BUILTIN_ENQCMD
! 			 ? UNSPECV_ENQCMD
! 			 : UNSPECV_ENQCMDS);
! 	  icode = code_for_enqcmd (unspecv, Pmode);
! 	  emit_insn (GEN_FCN (icode) (op0, op1));
  
+ 	  emit_insn
+ 	    (gen_rtx_SET (gen_rtx_STRICT_LOW_PART (VOIDmode, target),
+ 			  gen_rtx_fmt_ee (EQ, QImode,
+ 					  gen_rtx_REG (CCZmode, FLAGS_REG),
+ 					  const0_rtx)));
  	  return SUBREG_REG (target);
  	}
  
*************** ix86_expand_builtin (tree exp, rtx targe
*** 11685,11724 ****
      case IX86_BUILTIN_LLWPCB:
        arg0 = CALL_EXPR_ARG (exp, 0);
        op0 = expand_normal (arg0);
!       icode = CODE_FOR_lwp_llwpcb;
!       if (!insn_data[icode].operand[0].predicate (op0, Pmode))
  	op0 = ix86_zero_extend_to_Pmode (op0);
!       emit_insn (gen_lwp_llwpcb (op0));
        return 0;
  
      case IX86_BUILTIN_SLWPCB:
-       icode = CODE_FOR_lwp_slwpcb;
        if (!target
! 	  || !insn_data[icode].operand[0].predicate (target, Pmode))
  	target = gen_reg_rtx (Pmode);
!       emit_insn (gen_lwp_slwpcb (target));
        return target;
  
      case IX86_BUILTIN_BEXTRI32:
      case IX86_BUILTIN_BEXTRI64:
        arg0 = CALL_EXPR_ARG (exp, 0);
        arg1 = CALL_EXPR_ARG (exp, 1);
        op0 = expand_normal (arg0);
        op1 = expand_normal (arg1);
!       icode = (fcode == IX86_BUILTIN_BEXTRI32
! 	  ? CODE_FOR_tbm_bextri_si
! 	  : CODE_FOR_tbm_bextri_di);
        if (!CONST_INT_P (op1))
!         {
!           error ("last argument must be an immediate");
!           return const0_rtx;
!         }
        else
!         {
!           unsigned char length = (INTVAL (op1) >> 8) & 0xFF;
!           unsigned char lsb_index = INTVAL (op1) & 0xFF;
!           op1 = GEN_INT (length);
!           op2 = GEN_INT (lsb_index);
  
  	  mode1 = insn_data[icode].operand[1].mode;
  	  if (!insn_data[icode].operand[1].predicate (op0, mode1))
--- 12005,12096 ----
      case IX86_BUILTIN_LLWPCB:
        arg0 = CALL_EXPR_ARG (exp, 0);
        op0 = expand_normal (arg0);
! 
!       if (!register_operand (op0, Pmode))
  	op0 = ix86_zero_extend_to_Pmode (op0);
!       emit_insn (gen_lwp_llwpcb (Pmode, op0));
        return 0;
  
      case IX86_BUILTIN_SLWPCB:
        if (!target
! 	  || !register_operand (target, Pmode))
  	target = gen_reg_rtx (Pmode);
!       emit_insn (gen_lwp_slwpcb (Pmode, target));
        return target;
  
+     case IX86_BUILTIN_LWPVAL32:
+     case IX86_BUILTIN_LWPVAL64:
+     case IX86_BUILTIN_LWPINS32:
+     case IX86_BUILTIN_LWPINS64:
+       mode = ((fcode == IX86_BUILTIN_LWPVAL32
+ 	       || fcode == IX86_BUILTIN_LWPINS32)
+ 	      ? SImode : DImode);
+ 
+       if (fcode == IX86_BUILTIN_LWPVAL32
+ 	  || fcode == IX86_BUILTIN_LWPVAL64)
+ 	icode = code_for_lwp_lwpval (mode);
+       else
+ 	icode = code_for_lwp_lwpins (mode);
+ 
+       arg0 = CALL_EXPR_ARG (exp, 0);
+       arg1 = CALL_EXPR_ARG (exp, 1);
+       arg2 = CALL_EXPR_ARG (exp, 2);
+       op0 = expand_normal (arg0);
+       op1 = expand_normal (arg1);
+       op2 = expand_normal (arg2);
+       mode0 = insn_data[icode].operand[0].mode;
+ 
+       if (!insn_data[icode].operand[0].predicate (op0, mode0))
+ 	op0 = copy_to_mode_reg (mode0, op0);
+       if (!insn_data[icode].operand[1].predicate (op1, SImode))
+ 	op1 = copy_to_mode_reg (SImode, op1);
+ 
+       if (!CONST_INT_P (op2))
+ 	{
+ 	  error ("the last argument must be a 32-bit immediate");
+ 	  return const0_rtx;
+ 	}
+ 
+       emit_insn (GEN_FCN (icode) (op0, op1, op2));
+ 
+       if (fcode == IX86_BUILTIN_LWPINS32
+ 	  || fcode == IX86_BUILTIN_LWPINS64)
+ 	{
+ 	  if (target == 0
+ 	      || !nonimmediate_operand (target, QImode))
+ 	    target = gen_reg_rtx (QImode);
+ 
+ 	  pat = gen_rtx_EQ (QImode, gen_rtx_REG (CCCmode, FLAGS_REG),
+ 			    const0_rtx);
+ 	  emit_insn (gen_rtx_SET (target, pat));
+ 
+ 	  return target;
+ 	}
+       else
+ 	return 0;
+ 
      case IX86_BUILTIN_BEXTRI32:
      case IX86_BUILTIN_BEXTRI64:
+       mode = (fcode == IX86_BUILTIN_BEXTRI32 ? SImode : DImode);
+ 
        arg0 = CALL_EXPR_ARG (exp, 0);
        arg1 = CALL_EXPR_ARG (exp, 1);
        op0 = expand_normal (arg0);
        op1 = expand_normal (arg1);
! 
        if (!CONST_INT_P (op1))
! 	{
! 	  error ("last argument must be an immediate");
! 	  return const0_rtx;
! 	}
        else
! 	{
! 	  unsigned char lsb_index = UINTVAL (op1);
! 	  unsigned char length = UINTVAL (op1) >> 8;
! 
! 	  unsigned char bitsize = GET_MODE_BITSIZE (mode);
! 
! 	  icode = code_for_tbm_bextri (mode);
  
  	  mode1 = insn_data[icode].operand[1].mode;
  	  if (!insn_data[icode].operand[1].predicate (op0, mode1))
*************** ix86_expand_builtin (tree exp, rtx targe
*** 11729,11753 ****
  	      || !register_operand (target, mode0))
  	    target = gen_reg_rtx (mode0);
  
!           pat = GEN_FCN (icode) (target, op0, op1, op2);
!           if (pat)
!             emit_insn (pat);
!           return target;
!         }
  
      case IX86_BUILTIN_RDRAND16_STEP:
!       icode = CODE_FOR_rdrandhi_1;
!       mode0 = HImode;
        goto rdrand_step;
  
      case IX86_BUILTIN_RDRAND32_STEP:
!       icode = CODE_FOR_rdrandsi_1;
!       mode0 = SImode;
        goto rdrand_step;
  
      case IX86_BUILTIN_RDRAND64_STEP:
!       icode = CODE_FOR_rdranddi_1;
!       mode0 = DImode;
  
  rdrand_step:
        arg0 = CALL_EXPR_ARG (exp, 0);
--- 12101,12132 ----
  	      || !register_operand (target, mode0))
  	    target = gen_reg_rtx (mode0);
  
! 	  if (length == 0 || lsb_index >= bitsize)
! 	    {
! 	      emit_move_insn (target, const0_rtx);
! 	      return target;
! 	    }
! 
! 	  if (length + lsb_index > bitsize)
! 	    length = bitsize - lsb_index;
! 
! 	  op1 = GEN_INT (length);
! 	  op2 = GEN_INT (lsb_index);
! 
! 	  emit_insn (GEN_FCN (icode) (target, op0, op1, op2));
! 	  return target;
! 	}
  
      case IX86_BUILTIN_RDRAND16_STEP:
!       mode = HImode;
        goto rdrand_step;
  
      case IX86_BUILTIN_RDRAND32_STEP:
!       mode = SImode;
        goto rdrand_step;
  
      case IX86_BUILTIN_RDRAND64_STEP:
!       mode = DImode;
  
  rdrand_step:
        arg0 = CALL_EXPR_ARG (exp, 0);
*************** rdrand_step:
*** 11758,11773 ****
  	  op1 = copy_addr_to_reg (op1);
  	}
  
!       op0 = gen_reg_rtx (mode0);
!       emit_insn (GEN_FCN (icode) (op0));
  
!       emit_move_insn (gen_rtx_MEM (mode0, op1), op0);
  
!       op1 = gen_reg_rtx (SImode);
!       emit_move_insn (op1, CONST1_RTX (SImode));
  
        /* Emit SImode conditional move.  */
!       if (mode0 == HImode)
  	{
  	  if (TARGET_ZERO_EXTEND_WITH_AND
  	      && optimize_function_for_speed_p (cfun))
--- 12137,12151 ----
  	  op1 = copy_addr_to_reg (op1);
  	}
  
!       op0 = gen_reg_rtx (mode);
!       emit_insn (gen_rdrand (mode, op0));
  
!       emit_move_insn (gen_rtx_MEM (mode, op1), op0);
  
!       op1 = force_reg (SImode, const1_rtx);
  
        /* Emit SImode conditional move.  */
!       if (mode == HImode)
  	{
  	  if (TARGET_ZERO_EXTEND_WITH_AND
  	      && optimize_function_for_speed_p (cfun))
*************** rdrand_step:
*** 11784,11790 ****
  	      emit_insn (gen_zero_extendhisi2 (op2, op0));
  	    }
  	}
!       else if (mode0 == SImode)
  	op2 = op0;
        else
  	op2 = gen_rtx_SUBREG (SImode, op0, 0);
--- 12162,12168 ----
  	      emit_insn (gen_zero_extendhisi2 (op2, op0));
  	    }
  	}
!       else if (mode == SImode)
  	op2 = op0;
        else
  	op2 = gen_rtx_SUBREG (SImode, op0, 0);
*************** rdrand_step:
*** 11800,11817 ****
        return target;
  
      case IX86_BUILTIN_RDSEED16_STEP:
!       icode = CODE_FOR_rdseedhi_1;
!       mode0 = HImode;
        goto rdseed_step;
  
      case IX86_BUILTIN_RDSEED32_STEP:
!       icode = CODE_FOR_rdseedsi_1;
!       mode0 = SImode;
        goto rdseed_step;
  
      case IX86_BUILTIN_RDSEED64_STEP:
!       icode = CODE_FOR_rdseeddi_1;
!       mode0 = DImode;
  
  rdseed_step:
        arg0 = CALL_EXPR_ARG (exp, 0);
--- 12178,12192 ----
        return target;
  
      case IX86_BUILTIN_RDSEED16_STEP:
!       mode = HImode;
        goto rdseed_step;
  
      case IX86_BUILTIN_RDSEED32_STEP:
!       mode = SImode;
        goto rdseed_step;
  
      case IX86_BUILTIN_RDSEED64_STEP:
!       mode = DImode;
  
  rdseed_step:
        arg0 = CALL_EXPR_ARG (exp, 0);
*************** rdseed_step:
*** 11822,11831 ****
  	  op1 = copy_addr_to_reg (op1);
  	}
  
!       op0 = gen_reg_rtx (mode0);
!       emit_insn (GEN_FCN (icode) (op0));
  
!       emit_move_insn (gen_rtx_MEM (mode0, op1), op0);
  
        op2 = gen_reg_rtx (QImode);
  
--- 12197,12206 ----
  	  op1 = copy_addr_to_reg (op1);
  	}
  
!       op0 = gen_reg_rtx (mode);
!       emit_insn (gen_rdseed (mode, op0));
  
!       emit_move_insn (gen_rtx_MEM (mode, op1), op0);
  
        op2 = gen_reg_rtx (QImode);
  
*************** rdseed_step:
*** 12763,12817 ****
        emit_insn (gen_xabort (op0));
        return 0;
  
      case IX86_BUILTIN_RSTORSSP:
      case IX86_BUILTIN_CLRSSBSY:
        arg0 = CALL_EXPR_ARG (exp, 0);
        op0 = expand_normal (arg0);
        icode = (fcode == IX86_BUILTIN_RSTORSSP
! 	  ? CODE_FOR_rstorssp
! 	  : CODE_FOR_clrssbsy);
        if (!address_operand (op0, VOIDmode))
  	{
! 	  op1 = convert_memory_address (Pmode, op0);
! 	  op0 = copy_addr_to_reg (op1);
  	}
!       emit_insn (GEN_FCN (icode) (gen_rtx_MEM (Pmode, op0)));
        return 0;
  
      case IX86_BUILTIN_WRSSD:
      case IX86_BUILTIN_WRSSQ:
      case IX86_BUILTIN_WRUSSD:
      case IX86_BUILTIN_WRUSSQ:
        arg0 = CALL_EXPR_ARG (exp, 0);
        op0 = expand_normal (arg0);
        arg1 = CALL_EXPR_ARG (exp, 1);
        op1 = expand_normal (arg1);
!       switch (fcode)
! 	{
! 	case IX86_BUILTIN_WRSSD:
! 	  icode = CODE_FOR_wrsssi;
! 	  mode = SImode;
! 	  break;
! 	case IX86_BUILTIN_WRSSQ:
! 	  icode = CODE_FOR_wrssdi;
! 	  mode = DImode;
! 	  break;
! 	case IX86_BUILTIN_WRUSSD:
! 	  icode = CODE_FOR_wrusssi;
! 	  mode = SImode;
! 	  break;
! 	case IX86_BUILTIN_WRUSSQ:
! 	  icode = CODE_FOR_wrussdi;
! 	  mode = DImode;
! 	  break;
! 	}
        op0 = force_reg (mode, op0);
        if (!address_operand (op1, VOIDmode))
  	{
! 	  op2 = convert_memory_address (Pmode, op1);
! 	  op1 = copy_addr_to_reg (op2);
  	}
!       emit_insn (GEN_FCN (icode) (op0, gen_rtx_MEM (mode, op1)));
        return 0;
  
      case IX86_BUILTIN_VZEROUPPER:
--- 13138,13220 ----
        emit_insn (gen_xabort (op0));
        return 0;
  
+     case IX86_BUILTIN_RDSSPD:
+     case IX86_BUILTIN_RDSSPQ:
+       mode = (fcode == IX86_BUILTIN_RDSSPD ? SImode : DImode);
+ 
+       if (target == 0
+ 	  || !register_operand (target, mode))
+ 	target = gen_reg_rtx (mode);
+ 
+       op0 = force_reg (mode, const0_rtx);
+ 
+       emit_insn (gen_rdssp (mode, target, op0));
+       return target;
+ 
+     case IX86_BUILTIN_INCSSPD:
+     case IX86_BUILTIN_INCSSPQ:
+       mode = (fcode == IX86_BUILTIN_INCSSPD ? SImode : DImode);
+ 
+       arg0 = CALL_EXPR_ARG (exp, 0);
+       op0 = expand_normal (arg0);
+ 
+       op0 = force_reg (mode, op0);
+ 
+       emit_insn (gen_incssp (mode, op0));
+       return 0;
+ 
+     case IX86_BUILTIN_HRESET:
+       icode = CODE_FOR_hreset;
+       arg0 = CALL_EXPR_ARG (exp, 0);
+       op0 = expand_normal (arg0);
+       op0 = force_reg (SImode, op0);
+       emit_insn (gen_hreset (op0));
+       return 0;
+ 
      case IX86_BUILTIN_RSTORSSP:
      case IX86_BUILTIN_CLRSSBSY:
        arg0 = CALL_EXPR_ARG (exp, 0);
        op0 = expand_normal (arg0);
        icode = (fcode == IX86_BUILTIN_RSTORSSP
! 	       ? CODE_FOR_rstorssp
! 	       : CODE_FOR_clrssbsy);
! 
        if (!address_operand (op0, VOIDmode))
  	{
! 	  op0 = convert_memory_address (Pmode, op0);
! 	  op0 = copy_addr_to_reg (op0);
  	}
!       emit_insn (GEN_FCN (icode) (gen_rtx_MEM (DImode, op0)));
        return 0;
  
      case IX86_BUILTIN_WRSSD:
      case IX86_BUILTIN_WRSSQ:
      case IX86_BUILTIN_WRUSSD:
      case IX86_BUILTIN_WRUSSQ:
+       mode = ((fcode == IX86_BUILTIN_WRSSD
+ 	       || fcode == IX86_BUILTIN_WRUSSD)
+ 	      ? SImode : DImode);
+ 
        arg0 = CALL_EXPR_ARG (exp, 0);
        op0 = expand_normal (arg0);
        arg1 = CALL_EXPR_ARG (exp, 1);
        op1 = expand_normal (arg1);
! 
        op0 = force_reg (mode, op0);
+ 
        if (!address_operand (op1, VOIDmode))
  	{
! 	  op1 = convert_memory_address (Pmode, op1);
! 	  op1 = copy_addr_to_reg (op1);
  	}
!       op1 = gen_rtx_MEM (mode, op1);
! 
!       icode = ((fcode == IX86_BUILTIN_WRSSD
! 		|| fcode == IX86_BUILTIN_WRSSQ)
! 	       ? code_for_wrss (mode)
! 	       : code_for_wruss (mode));
!       emit_insn (GEN_FCN (icode) (op0, op1));
! 
        return 0;
  
      case IX86_BUILTIN_VZEROUPPER:
*************** s4fma_expand:
*** 13117,13130 ****
  					       target);
      }
  
-   if (fcode >= IX86_BUILTIN__BDESC_CET_NORMAL_FIRST
-       && fcode <= IX86_BUILTIN__BDESC_CET_NORMAL_LAST)
-     {
-       i = fcode - IX86_BUILTIN__BDESC_CET_NORMAL_FIRST;
-       return ix86_expand_special_args_builtin (bdesc_cet_rdssp + i, exp,
- 				       target);
-     }
- 
    gcc_unreachable ();
  }
  
--- 13520,13525 ----
*************** ix86_expand_vector_init (bool mmx_ok, rt
*** 14174,14179 ****
--- 14569,14680 ----
    ix86_expand_vector_init_general (mmx_ok, mode, target, vals);
  }
  
+ /* Implemented as
+    V setg (V v, int idx, T val)
+    {
+      V idxv = (V){idx, idx, idx, idx, idx, idx, idx, idx};
+      V valv = (V){val, val, val, val, val, val, val, val};
+      V mask = ((V){0, 1, 2, 3, 4, 5, 6, 7} == idxv);
+      v = (v & ~mask) | (valv & mask);
+      return v;
+    }.  */
+ void
+ ix86_expand_vector_set_var (rtx target, rtx val, rtx idx)
+ {
+   rtx vec[64];
+   machine_mode mode = GET_MODE (target);
+   machine_mode cmp_mode = mode;
+   int n_elts = GET_MODE_NUNITS (mode);
+   rtx valv,idxv,constv,idx_tmp;
+   bool ok = false;
+ 
+   /* 512-bits vector byte/word broadcast and comparison only available
+      under TARGET_AVX512BW, break 512-bits vector into two 256-bits vector
+      when without TARGET_AVX512BW.  */
+   if ((mode == V32HImode || mode == V64QImode) && !TARGET_AVX512BW)
+     {
+       gcc_assert (TARGET_AVX512F);
+       rtx vhi, vlo, idx_hi;
+       machine_mode half_mode;
+       rtx (*extract_hi)(rtx, rtx);
+       rtx (*extract_lo)(rtx, rtx);
+ 
+       if (mode == V32HImode)
+ 	{
+ 	  half_mode = V16HImode;
+ 	  extract_hi = gen_vec_extract_hi_v32hi;
+ 	  extract_lo = gen_vec_extract_lo_v32hi;
+ 	}
+       else
+ 	{
+ 	  half_mode = V32QImode;
+ 	  extract_hi = gen_vec_extract_hi_v64qi;
+ 	  extract_lo = gen_vec_extract_lo_v64qi;
+ 	}
+ 
+       vhi = gen_reg_rtx (half_mode);
+       vlo = gen_reg_rtx (half_mode);
+       idx_hi = gen_reg_rtx (GET_MODE (idx));
+       emit_insn (extract_hi (vhi, target));
+       emit_insn (extract_lo (vlo, target));
+       vec[0] = idx_hi;
+       vec[1] = idx;
+       vec[2] = GEN_INT (n_elts/2);
+       ix86_expand_binary_operator (MINUS, GET_MODE (idx), vec);
+       ix86_expand_vector_set_var (vhi, val, idx_hi);
+       ix86_expand_vector_set_var (vlo, val, idx);
+       emit_insn (gen_rtx_SET (target, gen_rtx_VEC_CONCAT (mode, vlo, vhi)));
+       return;
+     }
+ 
+   if (FLOAT_MODE_P (GET_MODE_INNER (mode)))
+     {
+       switch (mode)
+ 	{
+ 	case E_V2DFmode:
+ 	  cmp_mode = V2DImode;
+ 	  break;
+ 	case E_V4DFmode:
+ 	  cmp_mode = V4DImode;
+ 	  break;
+ 	case E_V8DFmode:
+ 	  cmp_mode = V8DImode;
+ 	  break;
+ 	case E_V4SFmode:
+ 	  cmp_mode = V4SImode;
+ 	  break;
+ 	case E_V8SFmode:
+ 	  cmp_mode = V8SImode;
+ 	  break;
+ 	case E_V16SFmode:
+ 	  cmp_mode = V16SImode;
+ 	  break;
+ 	default:
+ 	  gcc_unreachable ();
+ 	}
+     }
+ 
+   for (int i = 0; i != n_elts; i++)
+     vec[i] = GEN_INT (i);
+   constv = gen_rtx_CONST_VECTOR (cmp_mode, gen_rtvec_v (n_elts, vec));
+   valv = gen_reg_rtx (mode);
+   idxv = gen_reg_rtx (cmp_mode);
+   idx_tmp = convert_to_mode (GET_MODE_INNER (cmp_mode), idx, 1);
+ 
+   ok = ix86_expand_vector_init_duplicate (false, mode, valv, val);
+   gcc_assert (ok);
+   ok = ix86_expand_vector_init_duplicate (false, cmp_mode, idxv, idx_tmp);
+   gcc_assert (ok);
+   vec[0] = target;
+   vec[1] = valv;
+   vec[2] = target;
+   vec[3] = gen_rtx_EQ (mode, idxv, constv);
+   vec[4] = idxv;
+   vec[5] = constv;
+   ok = ix86_expand_int_vcond (vec);
+   gcc_assert (ok);
+ }
+ 
  void
  ix86_expand_vector_set (bool mmx_ok, rtx target, rtx val, int elt)
  {
*************** void ix86_emit_swsqrtsf (rtx res, rtx a,
*** 15581,15594 ****
  	}
      }
  
    /* e0 = x0 * a */
    emit_insn (gen_rtx_SET (e0, gen_rtx_MULT (mode, x0, a)));
-   /* e1 = e0 * x0 */
-   emit_insn (gen_rtx_SET (e1, gen_rtx_MULT (mode, e0, x0)));
  
!   /* e2 = e1 - 3. */
!   mthree = force_reg (mode, mthree);
!   emit_insn (gen_rtx_SET (e2, gen_rtx_PLUS (mode, e1, mthree)));
  
    mhalf = force_reg (mode, mhalf);
    if (recip)
--- 16082,16106 ----
  	}
      }
  
+   mthree = force_reg (mode, mthree);
+ 
    /* e0 = x0 * a */
    emit_insn (gen_rtx_SET (e0, gen_rtx_MULT (mode, x0, a)));
  
!   unsigned vector_size = GET_MODE_SIZE (mode);
!   if (TARGET_FMA
!       || (TARGET_AVX512F && vector_size == 64)
!       || (TARGET_AVX512VL && (vector_size == 32 || vector_size == 16)))
!     emit_insn (gen_rtx_SET (e2,
! 			    gen_rtx_FMA (mode, e0, x0, mthree)));
!   else
!     {
!       /* e1 = e0 * x0 */
!       emit_insn (gen_rtx_SET (e1, gen_rtx_MULT (mode, e0, x0)));
! 
!       /* e2 = e1 - 3. */
!       emit_insn (gen_rtx_SET (e2, gen_rtx_PLUS (mode, e1, mthree)));
!     }
  
    mhalf = force_reg (mode, mhalf);
    if (recip)
*************** void
*** 15729,15736 ****
  ix86_expand_lround (rtx op0, rtx op1)
  {
    /* C code for the stuff we're doing below:
!        tmp = op1 + copysign (nextafter (0.5, 0.0), op1)
!        return (long)tmp;
     */
    machine_mode mode = GET_MODE (op1);
    const struct real_format *fmt;
--- 16241,16248 ----
  ix86_expand_lround (rtx op0, rtx op1)
  {
    /* C code for the stuff we're doing below:
! 	tmp = op1 + copysign (nextafter (0.5, 0.0), op1)
! 	return (long)tmp;
     */
    machine_mode mode = GET_MODE (op1);
    const struct real_format *fmt;
*************** ix86_expand_lfloorceil (rtx op0, rtx op1
*** 15761,15768 ****
  {
    /* C code for the stuff we're doing below (for do_floor):
  	xi = (long)op1;
!         xi -= (double)xi > op1 ? 1 : 0;
!         return xi;
     */
    machine_mode fmode = GET_MODE (op1);
    machine_mode imode = GET_MODE (op0);
--- 16273,16280 ----
  {
    /* C code for the stuff we're doing below (for do_floor):
  	xi = (long)op1;
! 	xi -= (double)xi > op1 ? 1 : 0;
! 	return xi;
     */
    machine_mode fmode = GET_MODE (op1);
    machine_mode imode = GET_MODE (op0);
*************** ix86_expand_lfloorceil (rtx op0, rtx op1
*** 15796,15805 ****
  static rtx
  ix86_gen_TWO52 (machine_mode mode)
  {
    REAL_VALUE_TYPE TWO52r;
    rtx TWO52;
  
!   real_ldexp (&TWO52r, &dconst1, mode == DFmode ? 52 : 23);
    TWO52 = const_double_from_real_value (TWO52r, mode);
    TWO52 = force_reg (mode, TWO52);
  
--- 16308,16319 ----
  static rtx
  ix86_gen_TWO52 (machine_mode mode)
  {
+   const struct real_format *fmt;
    REAL_VALUE_TYPE TWO52r;
    rtx TWO52;
  
!   fmt = REAL_MODE_FORMAT (mode);
!   real_2expN (&TWO52r, fmt->p - 1, mode);
    TWO52 = const_double_from_real_value (TWO52r, mode);
    TWO52 = force_reg (mode, TWO52);
  
*************** ix86_expand_rint (rtx operand0, rtx oper
*** 15813,15841 ****
  {
    /* C code for the stuff we're doing below:
  	xa = fabs (operand1);
!         if (!isless (xa, 2**52))
  	  return operand1;
!         two52 = 2**52;
!         if (flag_rounding_math)
  	  {
  	    two52 = copysign (two52, operand1);
  	    xa = operand1;
  	  }
!         xa = xa + two52 - two52;
!         return copysign (xa, operand1);
     */
    machine_mode mode = GET_MODE (operand0);
    rtx res, xa, TWO52, mask;
    rtx_code_label *label;
  
!   res = gen_reg_rtx (mode);
!   emit_move_insn (res, operand1);
  
    /* xa = abs (operand1) */
    xa = ix86_expand_sse_fabs (res, &mask);
  
    /* if (!isless (xa, TWO52)) goto label; */
-   TWO52 = ix86_gen_TWO52 (mode);
    label = ix86_expand_sse_compare_and_jump (UNLE, TWO52, xa, false);
  
    if (flag_rounding_math)
--- 16327,16357 ----
  {
    /* C code for the stuff we're doing below:
  	xa = fabs (operand1);
! 	if (!isless (xa, 2**52))
  	  return operand1;
! 	two52 = 2**52;
! 	if (flag_rounding_math)
  	  {
  	    two52 = copysign (two52, operand1);
  	    xa = operand1;
  	  }
! 	xa = xa + two52 - two52;
! 	return copysign (xa, operand1);
     */
    machine_mode mode = GET_MODE (operand0);
    rtx res, xa, TWO52, mask;
    rtx_code_label *label;
  
!   TWO52 = ix86_gen_TWO52 (mode);
! 
!   /* Temporary for holding the result, initialized to the input
!      operand to ease control flow.  */
!   res = copy_to_reg (operand1);
  
    /* xa = abs (operand1) */
    xa = ix86_expand_sse_fabs (res, &mask);
  
    /* if (!isless (xa, TWO52)) goto label; */
    label = ix86_expand_sse_compare_and_jump (UNLE, TWO52, xa, false);
  
    if (flag_rounding_math)
*************** ix86_expand_floorceil (rtx operand0, rtx
*** 15866,15873 ****
  {
    /* C code for the stuff we expand below.
  	double xa = fabs (x), x2;
!         if (!isless (xa, TWO52))
!           return x;
  	x2 = (double)(long)x;
  
       Compensate.  Floor:
--- 16382,16389 ----
  {
    /* C code for the stuff we expand below.
  	double xa = fabs (x), x2;
! 	if (!isless (xa, TWO52))
! 	  return x;
  	x2 = (double)(long)x;
  
       Compensate.  Floor:
*************** ix86_expand_floorceil (rtx operand0, rtx
*** 15889,15896 ****
  
    /* Temporary for holding the result, initialized to the input
       operand to ease control flow.  */
!   res = gen_reg_rtx (mode);
!   emit_move_insn (res, operand1);
  
    /* xa = abs (operand1) */
    xa = ix86_expand_sse_fabs (res, &mask);
--- 16405,16411 ----
  
    /* Temporary for holding the result, initialized to the input
       operand to ease control flow.  */
!   res = copy_to_reg (operand1);
  
    /* xa = abs (operand1) */
    xa = ix86_expand_sse_fabs (res, &mask);
*************** ix86_expand_floorceil (rtx operand0, rtx
*** 15899,15905 ****
    label = ix86_expand_sse_compare_and_jump (UNLE, TWO52, xa, false);
  
    /* xa = (double)(long)x */
!   xi = gen_reg_rtx (mode == DFmode ? DImode : SImode);
    expand_fix (xi, res, 0);
    expand_float (xa, xi, 0);
  
--- 16414,16420 ----
    label = ix86_expand_sse_compare_and_jump (UNLE, TWO52, xa, false);
  
    /* xa = (double)(long)x */
!   xi = gen_reg_rtx (int_mode_for_mode (mode).require ());
    expand_fix (xi, res, 0);
    expand_float (xa, xi, 0);
  
*************** void
*** 15934,15951 ****
  ix86_expand_floorceildf_32 (rtx operand0, rtx operand1, bool do_floor)
  {
    /* C code for the stuff we expand below.
!         double xa = fabs (x), x2;
!         if (!isless (xa, TWO52))
!           return x;
!         xa = xa + TWO52 - TWO52;
!         x2 = copysign (xa, x);
  
       Compensate.  Floor:
!         if (x2 > x)
!           x2 -= 1;
       Compensate.  Ceil:
!         if (x2 < x)
!           x2 += 1;
  
  	if (HONOR_SIGNED_ZEROS (mode))
  	  x2 = copysign (x2, x);
--- 16449,16466 ----
  ix86_expand_floorceildf_32 (rtx operand0, rtx operand1, bool do_floor)
  {
    /* C code for the stuff we expand below.
! 	double xa = fabs (x), x2;
! 	if (!isless (xa, TWO52))
! 	  return x;
! 	xa = xa + TWO52 - TWO52;
! 	x2 = copysign (xa, x);
  
       Compensate.  Floor:
! 	if (x2 > x)
! 	  x2 -= 1;
       Compensate.  Ceil:
! 	if (x2 < x)
! 	  x2 += 1;
  
  	if (HONOR_SIGNED_ZEROS (mode))
  	  x2 = copysign (x2, x);
*************** ix86_expand_floorceildf_32 (rtx operand0
*** 15959,15966 ****
  
    /* Temporary for holding the result, initialized to the input
       operand to ease control flow.  */
!   res = gen_reg_rtx (mode);
!   emit_move_insn (res, operand1);
  
    /* xa = abs (operand1) */
    xa = ix86_expand_sse_fabs (res, &mask);
--- 16474,16480 ----
  
    /* Temporary for holding the result, initialized to the input
       operand to ease control flow.  */
!   res = copy_to_reg (operand1);
  
    /* xa = abs (operand1) */
    xa = ix86_expand_sse_fabs (res, &mask);
*************** void
*** 16005,16014 ****
  ix86_expand_trunc (rtx operand0, rtx operand1)
  {
    /* C code for SSE variant we expand below.
!         double xa = fabs (x), x2;
!         if (!isless (xa, TWO52))
!           return x;
!         x2 = (double)(long)x;
  	if (HONOR_SIGNED_ZEROS (mode))
  	  return copysign (x2, x);
  	return x2;
--- 16519,16528 ----
  ix86_expand_trunc (rtx operand0, rtx operand1)
  {
    /* C code for SSE variant we expand below.
! 	double xa = fabs (x), x2;
! 	if (!isless (xa, TWO52))
! 	  return x;
! 	x2 = (double)(long)x;
  	if (HONOR_SIGNED_ZEROS (mode))
  	  return copysign (x2, x);
  	return x2;
*************** ix86_expand_trunc (rtx operand0, rtx ope
*** 16021,16028 ****
  
    /* Temporary for holding the result, initialized to the input
       operand to ease control flow.  */
!   res = gen_reg_rtx (mode);
!   emit_move_insn (res, operand1);
  
    /* xa = abs (operand1) */
    xa = ix86_expand_sse_fabs (res, &mask);
--- 16535,16541 ----
  
    /* Temporary for holding the result, initialized to the input
       operand to ease control flow.  */
!   res = copy_to_reg (operand1);
  
    /* xa = abs (operand1) */
    xa = ix86_expand_sse_fabs (res, &mask);
*************** ix86_expand_trunc (rtx operand0, rtx ope
*** 16030,16042 ****
    /* if (!isless (xa, TWO52)) goto label; */
    label = ix86_expand_sse_compare_and_jump (UNLE, TWO52, xa, false);
  
!   /* x = (double)(long)x */
!   xi = gen_reg_rtx (mode == DFmode ? DImode : SImode);
    expand_fix (xi, res, 0);
!   expand_float (res, xi, 0);
  
    if (HONOR_SIGNED_ZEROS (mode))
!     ix86_sse_copysign_to_positive (res, res, force_reg (mode, operand1), mask);
  
    emit_label (label);
    LABEL_NUSES (label) = 1;
--- 16543,16557 ----
    /* if (!isless (xa, TWO52)) goto label; */
    label = ix86_expand_sse_compare_and_jump (UNLE, TWO52, xa, false);
  
!   /* xa = (double)(long)x */
!   xi = gen_reg_rtx (int_mode_for_mode (mode).require ());
    expand_fix (xi, res, 0);
!   expand_float (xa, xi, 0);
  
    if (HONOR_SIGNED_ZEROS (mode))
!     ix86_sse_copysign_to_positive (xa, xa, res, mask);
! 
!   emit_move_insn (res, xa);
  
    emit_label (label);
    LABEL_NUSES (label) = 1;
*************** ix86_expand_truncdf_32 (rtx operand0, rt
*** 16055,16077 ****
    rtx_code_label *label;
  
    /* C code for SSE variant we expand below.
!         double xa = fabs (x), x2;
!         if (!isless (xa, TWO52))
!           return x;
!         xa2 = xa + TWO52 - TWO52;
       Compensate:
!         if (xa2 > xa)
!           xa2 -= 1.0;
!         x2 = copysign (xa2, x);
!         return x2;
     */
  
    TWO52 = ix86_gen_TWO52 (mode);
  
    /* Temporary for holding the result, initialized to the input
       operand to ease control flow.  */
!   res = gen_reg_rtx (mode);
!   emit_move_insn (res, operand1);
  
    /* xa = abs (operand1) */
    xa = ix86_expand_sse_fabs (res, &mask);
--- 16570,16591 ----
    rtx_code_label *label;
  
    /* C code for SSE variant we expand below.
! 	double xa = fabs (x), x2;
! 	if (!isless (xa, TWO52))
! 	  return x;
! 	xa2 = xa + TWO52 - TWO52;
       Compensate:
! 	if (xa2 > xa)
! 	  xa2 -= 1.0;
! 	x2 = copysign (xa2, x);
! 	return x2;
     */
  
    TWO52 = ix86_gen_TWO52 (mode);
  
    /* Temporary for holding the result, initialized to the input
       operand to ease control flow.  */
!   res =copy_to_reg (operand1);
  
    /* xa = abs (operand1) */
    xa = ix86_expand_sse_fabs (res, &mask);
*************** void
*** 16110,16120 ****
  ix86_expand_round (rtx operand0, rtx operand1)
  {
    /* C code for the stuff we're doing below:
!         double xa = fabs (x);
!         if (!isless (xa, TWO52))
!           return x;
!         xa = (double)(long)(xa + nextafter (0.5, 0.0));
!         return copysign (xa, x);
     */
    machine_mode mode = GET_MODE (operand0);
    rtx res, TWO52, xa, xi, half, mask;
--- 16624,16634 ----
  ix86_expand_round (rtx operand0, rtx operand1)
  {
    /* C code for the stuff we're doing below:
! 	double xa = fabs (x);
! 	if (!isless (xa, TWO52))
! 	  return x;
! 	xa = (double)(long)(xa + nextafter (0.5, 0.0));
! 	return copysign (xa, x);
     */
    machine_mode mode = GET_MODE (operand0);
    rtx res, TWO52, xa, xi, half, mask;
*************** ix86_expand_round (rtx operand0, rtx ope
*** 16124,16131 ****
  
    /* Temporary for holding the result, initialized to the input
       operand to ease control flow.  */
!   res = gen_reg_rtx (mode);
!   emit_move_insn (res, operand1);
  
    TWO52 = ix86_gen_TWO52 (mode);
    xa = ix86_expand_sse_fabs (res, &mask);
--- 16638,16644 ----
  
    /* Temporary for holding the result, initialized to the input
       operand to ease control flow.  */
!   res = copy_to_reg (operand1);
  
    TWO52 = ix86_gen_TWO52 (mode);
    xa = ix86_expand_sse_fabs (res, &mask);
*************** ix86_expand_round (rtx operand0, rtx ope
*** 16141,16152 ****
    xa = expand_simple_binop (mode, PLUS, xa, half, NULL_RTX, 0, OPTAB_DIRECT);
  
    /* xa = (double)(int64_t)xa */
!   xi = gen_reg_rtx (mode == DFmode ? DImode : SImode);
    expand_fix (xi, xa, 0);
    expand_float (xa, xi, 0);
  
    /* res = copysign (xa, operand1) */
!   ix86_sse_copysign_to_positive (res, xa, force_reg (mode, operand1), mask);
  
    emit_label (label);
    LABEL_NUSES (label) = 1;
--- 16654,16665 ----
    xa = expand_simple_binop (mode, PLUS, xa, half, NULL_RTX, 0, OPTAB_DIRECT);
  
    /* xa = (double)(int64_t)xa */
!   xi = gen_reg_rtx (int_mode_for_mode (mode).require ());
    expand_fix (xi, xa, 0);
    expand_float (xa, xi, 0);
  
    /* res = copysign (xa, operand1) */
!   ix86_sse_copysign_to_positive (res, xa, res, mask);
  
    emit_label (label);
    LABEL_NUSES (label) = 1;
*************** void
*** 16161,16180 ****
  ix86_expand_rounddf_32 (rtx operand0, rtx operand1)
  {
    /* C code for the stuff we expand below.
!         double xa = fabs (x), xa2, x2;
!         if (!isless (xa, TWO52))
!           return x;
       Using the absolute value and copying back sign makes
       -0.0 -> -0.0 correct.
!         xa2 = xa + TWO52 - TWO52;
       Compensate.
  	dxa = xa2 - xa;
!         if (dxa <= -0.5)
!           xa2 += 1;
!         else if (dxa > 0.5)
!           xa2 -= 1;
!         x2 = copysign (xa2, x);
!         return x2;
     */
    machine_mode mode = GET_MODE (operand0);
    rtx xa, xa2, dxa, TWO52, tmp, half, mhalf, one, res, mask;
--- 16674,16693 ----
  ix86_expand_rounddf_32 (rtx operand0, rtx operand1)
  {
    /* C code for the stuff we expand below.
! 	double xa = fabs (x), xa2, x2;
! 	if (!isless (xa, TWO52))
! 	  return x;
       Using the absolute value and copying back sign makes
       -0.0 -> -0.0 correct.
! 	xa2 = xa + TWO52 - TWO52;
       Compensate.
  	dxa = xa2 - xa;
! 	if (dxa <= -0.5)
! 	  xa2 += 1;
! 	else if (dxa > 0.5)
! 	  xa2 -= 1;
! 	x2 = copysign (xa2, x);
! 	return x2;
     */
    machine_mode mode = GET_MODE (operand0);
    rtx xa, xa2, dxa, TWO52, tmp, half, mhalf, one, res, mask;
*************** ix86_expand_rounddf_32 (rtx operand0, rt
*** 16184,16191 ****
  
    /* Temporary for holding the result, initialized to the input
       operand to ease control flow.  */
!   res = gen_reg_rtx (mode);
!   emit_move_insn (res, operand1);
  
    /* xa = abs (operand1) */
    xa = ix86_expand_sse_fabs (res, &mask);
--- 16697,16703 ----
  
    /* Temporary for holding the result, initialized to the input
       operand to ease control flow.  */
!   res = copy_to_reg (operand1);
  
    /* xa = abs (operand1) */
    xa = ix86_expand_sse_fabs (res, &mask);
*************** ix86_expand_rounddf_32 (rtx operand0, rt
*** 16217,16223 ****
    xa2 = expand_simple_binop (mode, PLUS, xa2, tmp, NULL_RTX, 0, OPTAB_DIRECT);
  
    /* res = copysign (xa2, operand1) */
!   ix86_sse_copysign_to_positive (res, xa2, force_reg (mode, operand1), mask);
  
    emit_label (label);
    LABEL_NUSES (label) = 1;
--- 16729,16735 ----
    xa2 = expand_simple_binop (mode, PLUS, xa2, tmp, NULL_RTX, 0, OPTAB_DIRECT);
  
    /* res = copysign (xa2, operand1) */
!   ix86_sse_copysign_to_positive (res, xa2, res, mask);
  
    emit_label (label);
    LABEL_NUSES (label) = 1;
*************** expand_vec_perm_movs (struct expand_vec_
*** 16371,16376 ****
--- 16883,16889 ----
      return false;
  
    if (!(TARGET_SSE && vmode == V4SFmode)
+       && !(TARGET_MMX_WITH_SSE && vmode == V2SFmode)
        && !(TARGET_SSE2 && vmode == V2DFmode))
      return false;
  
*************** expand_vec_perm_even_odd_1 (struct expan
*** 18686,18695 ****
--- 19199,19231 ----
      case E_V2DFmode:
      case E_V4SFmode:
      case E_V2DImode:
+     case E_V2SImode:
      case E_V4SImode:
        /* These are always directly implementable by expand_vec_perm_1.  */
        gcc_unreachable ();
  
+     case E_V2SFmode:
+       gcc_assert (TARGET_MMX_WITH_SSE);
+       /* We have no suitable instructions.  */
+       if (d->testing_p)
+ 	return false;
+       break;
+ 
+     case E_V4HImode:
+       if (d->testing_p)
+ 	break;
+       /* We need 2*log2(N)-1 operations to achieve odd/even
+ 	 with interleave. */
+       t1 = gen_reg_rtx (V4HImode);
+       emit_insn (gen_mmx_punpckhwd (t1, d->op0, d->op1));
+       emit_insn (gen_mmx_punpcklwd (d->target, d->op0, d->op1));
+       if (odd)
+ 	t2 = gen_mmx_punpckhwd (d->target, d->target, t1);
+       else
+ 	t2 = gen_mmx_punpcklwd (d->target, d->target, t1);
+       emit_insn (t2);
+       break;
+ 
      case E_V8HImode:
        if (TARGET_SSE4_1)
  	return expand_vec_perm_even_odd_pack (d);
*************** expand_vec_perm_broadcast_1 (struct expa
*** 18870,18877 ****
        gcc_unreachable ();
  
      case E_V2DFmode:
!     case E_V2DImode:
      case E_V4SFmode:
      case E_V4SImode:
        /* These are always implementable using standard shuffle patterns.  */
        gcc_unreachable ();
--- 19406,19415 ----
        gcc_unreachable ();
  
      case E_V2DFmode:
!     case E_V2SFmode:
      case E_V4SFmode:
+     case E_V2DImode:
+     case E_V2SImode:
      case E_V4SImode:
        /* These are always implementable using standard shuffle patterns.  */
        gcc_unreachable ();
*************** ix86_vectorize_vec_perm_const (machine_m
*** 19364,19369 ****
--- 19902,19913 ----
        if (d.testing_p && TARGET_SSSE3)
  	return true;
        break;
+     case E_V2SFmode:
+     case E_V2SImode:
+     case E_V4HImode:
+       if (!TARGET_MMX_WITH_SSE)
+ 	return false;
+       break;
      case E_V2DImode:
      case E_V2DFmode:
        if (!TARGET_SSE)
*************** ix86_vectorize_vec_perm_const (machine_m
*** 19396,19402 ****
        d.one_operand_p = (which != 3);
  
        /* Implementable with shufps or pshufd.  */
!       if (d.one_operand_p && (d.vmode == V4SFmode || d.vmode == V4SImode))
  	return true;
  
        /* Otherwise we have to go through the motions and see if we can
--- 19940,19948 ----
        d.one_operand_p = (which != 3);
  
        /* Implementable with shufps or pshufd.  */
!       if (d.one_operand_p
! 	  && (d.vmode == V4SFmode || d.vmode == V2SFmode
! 	      || d.vmode == V4SImode || d.vmode == V2SImode))
  	return true;
  
        /* Otherwise we have to go through the motions and see if we can
*************** ix86_vectorize_vec_perm_const (machine_m
*** 19415,19420 ****
--- 19961,19992 ----
  
    two_args = canonicalize_perm (&d);
  
+   /* If one of the operands is a zero vector, try to match pmovzx.  */
+   if (two_args && (d.op0 == CONST0_RTX (vmode) || d.op1 == CONST0_RTX (vmode)))
+     {
+       struct expand_vec_perm_d dzero = d;
+       if (d.op0 == CONST0_RTX (vmode))
+ 	{
+ 	  d.op1 = dzero.op1 = force_reg (vmode, d.op1);
+ 	  std::swap (dzero.op0, dzero.op1);
+ 	  for (i = 0; i < nelt; ++i)
+ 	    dzero.perm[i] ^= nelt;
+ 	}
+       else
+ 	d.op0 = dzero.op0 = force_reg (vmode, d.op0);
+ 
+       if (expand_vselect_vconcat (dzero.target, dzero.op0, dzero.op1,
+ 				  dzero.perm, nelt, dzero.testing_p))
+ 	return true;
+     }
+ 
+   /* Force operands into registers.  */
+   rtx nop0 = force_reg (vmode, d.op0);
+   if (d.op0 == d.op1)
+     d.op1 = nop0;
+   d.op0 = nop0;
+   d.op1 = force_reg (vmode, d.op1);
+ 
    if (ix86_expand_vec_perm_const_1 (&d))
      return true;
  
*************** ix86_expand_vec_interleave (rtx targ, rt
*** 19484,19489 ****
--- 20056,20225 ----
    gcc_assert (ok);
  }
  
+ /* Optimize vector MUL generation for V8QI, V16QI and V32QI
+    under TARGET_AVX512BW. i.e. for v16qi a * b, it has
+ 
+    vpmovzxbw ymm2, xmm0
+    vpmovzxbw ymm3, xmm1
+    vpmullw   ymm4, ymm2, ymm3
+    vpmovwb   xmm0, ymm4
+ 
+    it would take less instructions than ix86_expand_vecop_qihi.
+    Return true if success.  */
+ 
+ bool
+ ix86_expand_vecmul_qihi (rtx dest, rtx op1, rtx op2)
+ {
+   machine_mode himode, qimode = GET_MODE (dest);
+   rtx hop1, hop2, hdest;
+   rtx (*gen_extend)(rtx, rtx);
+   rtx (*gen_truncate)(rtx, rtx);
+ 
+   /* There's no V64HImode multiplication instruction.  */
+   if (qimode == E_V64QImode)
+     return false;
+ 
+   /* vpmovwb only available under AVX512BW.  */
+   if (!TARGET_AVX512BW)
+     return false;
+   if ((qimode == V8QImode || qimode == V16QImode)
+       && !TARGET_AVX512VL)
+     return false;
+   /* Not generate zmm instruction when prefer 128/256 bit vector width.  */
+   if (qimode == V32QImode
+       && (TARGET_PREFER_AVX128 || TARGET_PREFER_AVX256))
+     return false;
+ 
+   switch (qimode)
+     {
+     case E_V8QImode:
+       himode = V8HImode;
+       gen_extend = gen_zero_extendv8qiv8hi2;
+       gen_truncate = gen_truncv8hiv8qi2;
+       break;
+     case E_V16QImode:
+       himode = V16HImode;
+       gen_extend = gen_zero_extendv16qiv16hi2;
+       gen_truncate = gen_truncv16hiv16qi2;
+       break;
+     case E_V32QImode:
+       himode = V32HImode;
+       gen_extend = gen_zero_extendv32qiv32hi2;
+       gen_truncate = gen_truncv32hiv32qi2;
+       break;
+     default:
+       gcc_unreachable ();
+     }
+ 
+   hop1 = gen_reg_rtx (himode);
+   hop2 = gen_reg_rtx (himode);
+   hdest = gen_reg_rtx (himode);
+   emit_insn (gen_extend (hop1, op1));
+   emit_insn (gen_extend (hop2, op2));
+   emit_insn (gen_rtx_SET (hdest, simplify_gen_binary (MULT, himode,
+ 						      hop1, hop2)));
+   emit_insn (gen_truncate (dest, hdest));
+   return true;
+ }
+ 
+ /* Expand a vector operation shift by constant for a V*QImode in terms of the
+    same operation on V*HImode. Return true if success. */
+ bool
+ ix86_expand_vec_shift_qihi_constant (enum rtx_code code, rtx dest, rtx op1, rtx op2)
+ {
+   machine_mode qimode, himode;
+   HOST_WIDE_INT and_constant, xor_constant;
+   HOST_WIDE_INT shift_amount;
+   rtx vec_const_and, vec_const_xor;
+   rtx tmp, op1_subreg;
+   rtx (*gen_shift) (rtx, rtx, rtx);
+   rtx (*gen_and) (rtx, rtx, rtx);
+   rtx (*gen_xor) (rtx, rtx, rtx);
+   rtx (*gen_sub) (rtx, rtx, rtx);
+ 
+   /* Only optimize shift by constant.  */
+   if (!CONST_INT_P (op2))
+     return false;
+ 
+   qimode = GET_MODE (dest);
+   shift_amount = INTVAL (op2);
+   /* Do nothing when shift amount greater equal 8.  */
+   if (shift_amount > 7)
+     return false;
+ 
+   gcc_assert (code == ASHIFT || code == ASHIFTRT || code == LSHIFTRT);
+   /* Record sign bit.  */
+   xor_constant = 1 << (8 - shift_amount - 1);
+ 
+   /* Zero upper/lower bits shift from left/right element.  */
+   and_constant
+     = (code == ASHIFT ? 256 - (1 << shift_amount)
+        : (1 << (8 - shift_amount)) - 1);
+ 
+   switch (qimode)
+     {
+     case V16QImode:
+       himode = V8HImode;
+       gen_shift =
+ 	((code == ASHIFT)
+ 	 ? gen_ashlv8hi3
+ 	 : (code == ASHIFTRT) ? gen_ashrv8hi3 : gen_lshrv8hi3);
+       gen_and = gen_andv16qi3;
+       gen_xor = gen_xorv16qi3;
+       gen_sub = gen_subv16qi3;
+       break;
+     case V32QImode:
+       himode = V16HImode;
+       gen_shift =
+ 	((code == ASHIFT)
+ 	 ? gen_ashlv16hi3
+ 	 : (code == ASHIFTRT) ? gen_ashrv16hi3 : gen_lshrv16hi3);
+       gen_and = gen_andv32qi3;
+       gen_xor = gen_xorv32qi3;
+       gen_sub = gen_subv32qi3;
+       break;
+     case V64QImode:
+       himode = V32HImode;
+       gen_shift =
+ 	((code == ASHIFT)
+ 	 ? gen_ashlv32hi3
+ 	 : (code == ASHIFTRT) ? gen_ashrv32hi3 : gen_lshrv32hi3);
+       gen_and = gen_andv64qi3;
+       gen_xor = gen_xorv64qi3;
+       gen_sub = gen_subv64qi3;
+       break;
+     default:
+       gcc_unreachable ();
+     }
+ 
+   tmp = gen_reg_rtx (himode);
+   vec_const_and = gen_reg_rtx (qimode);
+   op1_subreg = lowpart_subreg (himode, op1, qimode);
+ 
+   /* For ASHIFT and LSHIFTRT, perform operation like
+      vpsllw/vpsrlw $shift_amount, %op1, %dest.
+      vpand %vec_const_and, %dest.  */
+   emit_insn (gen_shift (tmp, op1_subreg, op2));
+   emit_move_insn (dest, simplify_gen_subreg (qimode, tmp, himode, 0));
+   emit_move_insn (vec_const_and,
+ 		  ix86_build_const_vector (qimode, true,
+ 					   gen_int_mode (and_constant, QImode)));
+   emit_insn (gen_and (dest, dest, vec_const_and));
+ 
+   /* For ASHIFTRT, perform extra operation like
+      vpxor %vec_const_xor, %dest, %dest
+      vpsubb %vec_const_xor, %dest, %dest  */
+   if (code == ASHIFTRT)
+     {
+       vec_const_xor = gen_reg_rtx (qimode);
+       emit_move_insn (vec_const_xor,
+ 		      ix86_build_const_vector (qimode, true,
+ 					       gen_int_mode (xor_constant, QImode)));
+       emit_insn (gen_xor (dest, dest, vec_const_xor));
+       emit_insn (gen_sub (dest, dest, vec_const_xor));
+     }
+   return true;
+ }
  
  /* Expand a vector operation CODE for a V*QImode in terms of the
     same operation on V*HImode.  */
diff -Nrcpad gcc-10.3.0/gcc/config/i386/i386-expand.h gcc-11.1.0/gcc/config/i386/i386-expand.h
*** gcc-10.3.0/gcc/config/i386/i386-expand.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/i386-expand.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/i386-features.c gcc-11.1.0/gcc/config/i386/i386-features.c
*** gcc-10.3.0/gcc/config/i386/i386-features.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/i386-features.c	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** general_scalar_chain::compute_convert_ga
*** 581,587 ****
        else if (GET_CODE (src) == NEG
  	       || GET_CODE (src) == NOT)
  	igain += m * ix86_cost->add - ix86_cost->sse_op - COSTS_N_INSNS (1);
!       else if (GET_CODE (src) == SMAX
  	       || GET_CODE (src) == SMIN
  	       || GET_CODE (src) == UMAX
  	       || GET_CODE (src) == UMIN)
--- 581,588 ----
        else if (GET_CODE (src) == NEG
  	       || GET_CODE (src) == NOT)
  	igain += m * ix86_cost->add - ix86_cost->sse_op - COSTS_N_INSNS (1);
!       else if (GET_CODE (src) == ABS
! 	       || GET_CODE (src) == SMAX
  	       || GET_CODE (src) == SMIN
  	       || GET_CODE (src) == UMAX
  	       || GET_CODE (src) == UMIN)
*************** general_scalar_chain::convert_insn (rtx_
*** 986,998 ****
  
    switch (GET_CODE (src))
      {
-     case ASHIFT:
-     case ASHIFTRT:
-     case LSHIFTRT:
-       convert_op (&XEXP (src, 0), insn);
-       PUT_MODE (src, vmode);
-       break;
- 
      case PLUS:
      case MINUS:
      case IOR:
--- 987,992 ----
*************** general_scalar_chain::convert_insn (rtx_
*** 1002,1009 ****
      case SMIN:
      case UMAX:
      case UMIN:
-       convert_op (&XEXP (src, 0), insn);
        convert_op (&XEXP (src, 1), insn);
        PUT_MODE (src, vmode);
        break;
  
--- 996,1009 ----
      case SMIN:
      case UMAX:
      case UMIN:
        convert_op (&XEXP (src, 1), insn);
+       /* FALLTHRU */
+ 
+     case ABS:
+     case ASHIFT:
+     case ASHIFTRT:
+     case LSHIFTRT:
+       convert_op (&XEXP (src, 0), insn);
        PUT_MODE (src, vmode);
        break;
  
*************** scalar_chain::convert ()
*** 1253,1277 ****
    return converted_insns;
  }
  
! /* Return 1 if INSN uses or defines a hard register.
!    Hard register uses in a memory address are ignored.
!    Clobbers and flags definitions are ignored.  */
  
! static bool
! has_non_address_hard_reg (rtx_insn *insn)
  {
    df_ref ref;
    FOR_EACH_INSN_DEF (ref, insn)
      if (HARD_REGISTER_P (DF_REF_REAL_REG (ref))
  	&& !DF_REF_FLAGS_IS_SET (ref, DF_REF_MUST_CLOBBER)
  	&& DF_REF_REGNO (ref) != FLAGS_REG)
!       return true;
  
    FOR_EACH_INSN_USE (ref, insn)
      if (!DF_REF_REG_MEM_P (ref) && HARD_REGISTER_P (DF_REF_REAL_REG (ref)))
!       return true;
  
!   return false;
  }
  
  /* Check if comparison INSN may be transformed
--- 1253,1289 ----
    return converted_insns;
  }
  
! /* Return the SET expression if INSN doesn't reference hard register.
!    Return NULL if INSN uses or defines a hard register, excluding
!    pseudo register pushes, hard register uses in a memory address,
!    clobbers and flags definitions.  */
  
! static rtx
! pseudo_reg_set (rtx_insn *insn)
  {
+   rtx set = single_set (insn);
+   if (!set)
+     return NULL;
+ 
+   /* Check pseudo register push first. */
+   machine_mode mode = TARGET_64BIT ? TImode : DImode;
+   if (REG_P (SET_SRC (set))
+       && !HARD_REGISTER_P (SET_SRC (set))
+       && push_operand (SET_DEST (set), mode))
+     return set;
+ 
    df_ref ref;
    FOR_EACH_INSN_DEF (ref, insn)
      if (HARD_REGISTER_P (DF_REF_REAL_REG (ref))
  	&& !DF_REF_FLAGS_IS_SET (ref, DF_REF_MUST_CLOBBER)
  	&& DF_REF_REGNO (ref) != FLAGS_REG)
!       return NULL;
  
    FOR_EACH_INSN_USE (ref, insn)
      if (!DF_REF_REG_MEM_P (ref) && HARD_REGISTER_P (DF_REF_REAL_REG (ref)))
!       return NULL;
  
!   return set;
  }
  
  /* Check if comparison INSN may be transformed
*************** convertible_comparison_p (rtx_insn *insn
*** 1345,1358 ****
  static bool
  general_scalar_to_vector_candidate_p (rtx_insn *insn, enum machine_mode mode)
  {
!   rtx def_set = single_set (insn);
  
    if (!def_set)
      return false;
  
-   if (has_non_address_hard_reg (insn))
-     return false;
- 
    rtx src = SET_SRC (def_set);
    rtx dst = SET_DEST (def_set);
  
--- 1357,1367 ----
  static bool
  general_scalar_to_vector_candidate_p (rtx_insn *insn, enum machine_mode mode)
  {
!   rtx def_set = pseudo_reg_set (insn);
  
    if (!def_set)
      return false;
  
    rtx src = SET_SRC (def_set);
    rtx dst = SET_DEST (def_set);
  
*************** general_scalar_to_vector_candidate_p (rt
*** 1406,1411 ****
--- 1415,1426 ----
  	return false;
        break;
  
+     case ABS:
+       if ((mode == DImode && !TARGET_AVX512VL)
+ 	  || (mode == SImode && !TARGET_SSSE3))
+ 	return false;
+       break;
+ 
      case NEG:
      case NOT:
        break;
*************** general_scalar_to_vector_candidate_p (rt
*** 1442,1455 ****
  static bool
  timode_scalar_to_vector_candidate_p (rtx_insn *insn)
  {
!   rtx def_set = single_set (insn);
  
    if (!def_set)
      return false;
  
-   if (has_non_address_hard_reg (insn))
-     return false;
- 
    rtx src = SET_SRC (def_set);
    rtx dst = SET_DEST (def_set);
  
--- 1457,1467 ----
  static bool
  timode_scalar_to_vector_candidate_p (rtx_insn *insn)
  {
!   rtx def_set = pseudo_reg_set (insn);
  
    if (!def_set)
      return false;
  
    rtx src = SET_SRC (def_set);
    rtx dst = SET_DEST (def_set);
  
*************** make_pass_stv (gcc::context *ctxt)
*** 1946,1993 ****
    return new pass_stv (ctxt);
  }
  
! /* Inserting ENDBRANCH instructions.  */
  
! static unsigned int
! rest_of_insert_endbranch (void)
  {
!   timevar_push (TV_MACH_DEP);
! 
!   rtx cet_eb;
    rtx_insn *insn;
    basic_block bb;
  
!   /* Currently emit EB if it's a tracking function, i.e. 'nocf_check' is
!      absent among function attributes.  Later an optimization will be
!      introduced to make analysis if an address of a static function is
!      taken.  A static function whose address is not taken will get a
!      nocf_check attribute.  This will allow to reduce the number of EB.  */
  
!   if (!lookup_attribute ("nocf_check",
! 			 TYPE_ATTRIBUTES (TREE_TYPE (cfun->decl)))
!       && (!flag_manual_endbr
! 	  || lookup_attribute ("cf_check",
! 			       DECL_ATTRIBUTES (cfun->decl)))
!       && (!cgraph_node::get (cfun->decl)->only_called_directly_p ()
! 	  || ix86_cmodel == CM_LARGE
! 	  || ix86_cmodel == CM_LARGE_PIC
! 	  || flag_force_indirect_call
! 	  || (TARGET_DLLIMPORT_DECL_ATTRIBUTES
! 	      && DECL_DLLIMPORT_P (cfun->decl))))
      {
-       /* Queue ENDBR insertion to x86_function_profiler.  */
        if (crtl->profile && flag_fentry)
! 	cfun->machine->endbr_queued_at_entrance = true;
        else
  	{
! 	  cet_eb = gen_nop_endbr ();
! 
! 	  bb = ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb;
! 	  insn = BB_HEAD (bb);
! 	  emit_insn_before (cet_eb, insn);
  	}
      }
  
    bb = 0;
    FOR_EACH_BB_FN (bb, cfun)
      {
--- 1958,2040 ----
    return new pass_stv (ctxt);
  }
  
! /* Inserting ENDBR and pseudo patchable-area instructions.  */
  
! static void
! rest_of_insert_endbr_and_patchable_area (bool need_endbr,
! 					 unsigned int patchable_area_size)
  {
!   rtx endbr;
    rtx_insn *insn;
+   rtx_insn *endbr_insn = NULL;
    basic_block bb;
  
!   if (need_endbr)
!     {
!       /* Currently emit EB if it's a tracking function, i.e. 'nocf_check'
! 	 is absent among function attributes.  Later an optimization will
! 	 be introduced to make analysis if an address of a static function
! 	 is taken.  A static function whose address is not taken will get
! 	 a nocf_check attribute.  This will allow to reduce the number of
! 	 EB.  */
!       if (!lookup_attribute ("nocf_check",
! 			     TYPE_ATTRIBUTES (TREE_TYPE (cfun->decl)))
! 	  && (!flag_manual_endbr
! 	      || lookup_attribute ("cf_check",
! 				   DECL_ATTRIBUTES (cfun->decl)))
! 	  && (!cgraph_node::get (cfun->decl)->only_called_directly_p ()
! 	      || ix86_cmodel == CM_LARGE
! 	      || ix86_cmodel == CM_LARGE_PIC
! 	      || flag_force_indirect_call
! 	      || (TARGET_DLLIMPORT_DECL_ATTRIBUTES
! 		  && DECL_DLLIMPORT_P (cfun->decl))))
! 	{
! 	  if (crtl->profile && flag_fentry)
! 	    {
! 	      /* Queue ENDBR insertion to x86_function_profiler.
! 		 NB: Any patchable-area insn will be inserted after
! 		 ENDBR.  */
! 	      cfun->machine->insn_queued_at_entrance = TYPE_ENDBR;
! 	    }
! 	  else
! 	    {
! 	      endbr = gen_nop_endbr ();
! 	      bb = ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb;
! 	      rtx_insn *insn = BB_HEAD (bb);
! 	      endbr_insn = emit_insn_before (endbr, insn);
! 	    }
! 	}
!     }
  
!   if (patchable_area_size)
      {
        if (crtl->profile && flag_fentry)
! 	{
! 	  /* Queue patchable-area insertion to x86_function_profiler.
! 	     NB: If there is a queued ENDBR, x86_function_profiler
! 	     will also handle patchable-area.  */
! 	  if (!cfun->machine->insn_queued_at_entrance)
! 	    cfun->machine->insn_queued_at_entrance = TYPE_PATCHABLE_AREA;
! 	}
        else
  	{
! 	  rtx patchable_area
! 	    = gen_patchable_area (GEN_INT (patchable_area_size),
! 				  GEN_INT (crtl->patch_area_entry == 0));
! 	  if (endbr_insn)
! 	    emit_insn_after (patchable_area, endbr_insn);
! 	  else
! 	    {
! 	      bb = ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb;
! 	      insn = BB_HEAD (bb);
! 	      emit_insn_before (patchable_area, insn);
! 	    }
  	}
      }
  
+   if (!need_endbr)
+     return;
+ 
    bb = 0;
    FOR_EACH_BB_FN (bb, cfun)
      {
*************** rest_of_insert_endbranch (void)
*** 1996,2002 ****
  	{
  	  if (CALL_P (insn))
  	    {
- 	      bool need_endbr;
  	      need_endbr = find_reg_note (insn, REG_SETJMP, NULL) != NULL;
  	      if (!need_endbr && !SIBLING_CALL_P (insn))
  		{
--- 2043,2048 ----
*************** rest_of_insert_endbranch (void)
*** 2027,2034 ****
  	      /* Generate ENDBRANCH after CALL, which can return more than
  		 twice, setjmp-like functions.  */
  
! 	      cet_eb = gen_nop_endbr ();
! 	      emit_insn_after_setloc (cet_eb, insn, INSN_LOCATION (insn));
  	      continue;
  	    }
  
--- 2073,2080 ----
  	      /* Generate ENDBRANCH after CALL, which can return more than
  		 twice, setjmp-like functions.  */
  
! 	      endbr = gen_nop_endbr ();
! 	      emit_insn_after_setloc (endbr, insn, INSN_LOCATION (insn));
  	      continue;
  	    }
  
*************** rest_of_insert_endbranch (void)
*** 2058,2088 ****
  		  dest_blk = e->dest;
  		  insn = BB_HEAD (dest_blk);
  		  gcc_assert (LABEL_P (insn));
! 		  cet_eb = gen_nop_endbr ();
! 		  emit_insn_after (cet_eb, insn);
  		}
  	      continue;
  	    }
  
  	  if (LABEL_P (insn) && LABEL_PRESERVE_P (insn))
  	    {
! 	      cet_eb = gen_nop_endbr ();
! 	      emit_insn_after (cet_eb, insn);
  	      continue;
  	    }
  	}
      }
  
!   timevar_pop (TV_MACH_DEP);
!   return 0;
  }
  
  namespace {
  
! const pass_data pass_data_insert_endbranch =
  {
    RTL_PASS, /* type.  */
!   "cet", /* name.  */
    OPTGROUP_NONE, /* optinfo_flags.  */
    TV_MACH_DEP, /* tv_id.  */
    0, /* properties_required.  */
--- 2104,2133 ----
  		  dest_blk = e->dest;
  		  insn = BB_HEAD (dest_blk);
  		  gcc_assert (LABEL_P (insn));
! 		  endbr = gen_nop_endbr ();
! 		  emit_insn_after (endbr, insn);
  		}
  	      continue;
  	    }
  
  	  if (LABEL_P (insn) && LABEL_PRESERVE_P (insn))
  	    {
! 	      endbr = gen_nop_endbr ();
! 	      emit_insn_after (endbr, insn);
  	      continue;
  	    }
  	}
      }
  
!   return;
  }
  
  namespace {
  
! const pass_data pass_data_insert_endbr_and_patchable_area =
  {
    RTL_PASS, /* type.  */
!   "endbr_and_patchable_area", /* name.  */
    OPTGROUP_NONE, /* optinfo_flags.  */
    TV_MACH_DEP, /* tv_id.  */
    0, /* properties_required.  */
*************** const pass_data pass_data_insert_endbran
*** 2092,2123 ****
    0, /* todo_flags_finish.  */
  };
  
! class pass_insert_endbranch : public rtl_opt_pass
  {
  public:
!   pass_insert_endbranch (gcc::context *ctxt)
!     : rtl_opt_pass (pass_data_insert_endbranch, ctxt)
    {}
  
    /* opt_pass methods: */
    virtual bool gate (function *)
      {
!       return ((flag_cf_protection & CF_BRANCH));
      }
  
    virtual unsigned int execute (function *)
      {
!       return rest_of_insert_endbranch ();
      }
  
! }; // class pass_insert_endbranch
  
  } // anon namespace
  
  rtl_opt_pass *
! make_pass_insert_endbranch (gcc::context *ctxt)
  {
!   return new pass_insert_endbranch (ctxt);
  }
  
  /* At entry of the nearest common dominator for basic blocks with
--- 2137,2252 ----
    0, /* todo_flags_finish.  */
  };
  
! class pass_insert_endbr_and_patchable_area : public rtl_opt_pass
  {
  public:
!   pass_insert_endbr_and_patchable_area (gcc::context *ctxt)
!     : rtl_opt_pass (pass_data_insert_endbr_and_patchable_area, ctxt)
    {}
  
    /* opt_pass methods: */
    virtual bool gate (function *)
      {
!       need_endbr = (flag_cf_protection & CF_BRANCH) != 0;
!       patchable_area_size = crtl->patch_area_size - crtl->patch_area_entry;
!       return need_endbr || patchable_area_size;
      }
  
    virtual unsigned int execute (function *)
      {
!       timevar_push (TV_MACH_DEP);
!       rest_of_insert_endbr_and_patchable_area (need_endbr,
! 					       patchable_area_size);
!       timevar_pop (TV_MACH_DEP);
!       return 0;
      }
  
! private:
!   bool need_endbr;
!   unsigned int patchable_area_size;
! }; // class pass_insert_endbr_and_patchable_area
  
  } // anon namespace
  
  rtl_opt_pass *
! make_pass_insert_endbr_and_patchable_area (gcc::context *ctxt)
  {
!   return new pass_insert_endbr_and_patchable_area (ctxt);
! }
! 
! /* Replace all one-value const vector that are referenced by SYMBOL_REFs in x
!    with embedded broadcast. i.e.transform
! 
!      vpaddq .LC0(%rip), %zmm0, %zmm0
!      ret
!   .LC0:
!     .quad 3
!     .quad 3
!     .quad 3
!     .quad 3
!     .quad 3
!     .quad 3
!     .quad 3
!     .quad 3
! 
!     to
! 
!      vpaddq .LC0(%rip){1to8}, %zmm0, %zmm0
!      ret
!   .LC0:
!     .quad 3  */
! static void
! replace_constant_pool_with_broadcast (rtx_insn *insn)
! {
!   subrtx_ptr_iterator::array_type array;
!   FOR_EACH_SUBRTX_PTR (iter, array, &PATTERN (insn), ALL)
!     {
!       rtx *loc = *iter;
!       rtx x = *loc;
!       rtx broadcast_mem, vec_dup, constant, first;
!       machine_mode mode;
! 
!       /* Constant pool.  */
!       if (!MEM_P (x)
! 	  || !SYMBOL_REF_P (XEXP (x, 0))
! 	  || !CONSTANT_POOL_ADDRESS_P (XEXP (x, 0)))
! 	continue;
! 
!       /* Const vector.  */
!       mode = GET_MODE (x);
!       if (!VECTOR_MODE_P (mode))
! 	return;
!       constant = get_pool_constant (XEXP (x, 0));
!       if (GET_CODE (constant) != CONST_VECTOR)
! 	return;
! 
!       /* There could be some rtx like
! 	 (mem/u/c:V16QI (symbol_ref/u:DI ("*.LC1")))
! 	 but with "*.LC1" refer to V2DI constant vector.  */
!       if (GET_MODE (constant) != mode)
! 	{
! 	  constant = simplify_subreg (mode, constant, GET_MODE (constant), 0);
! 	  if (constant == NULL_RTX || GET_CODE (constant) != CONST_VECTOR)
! 	    return;
! 	}
!       first = XVECEXP (constant, 0, 0);
! 
!       for (int i = 1; i < GET_MODE_NUNITS (mode); ++i)
! 	{
! 	  rtx tmp = XVECEXP (constant, 0, i);
! 	  /* Vector duplicate value.  */
! 	  if (!rtx_equal_p (tmp, first))
! 	    return;
! 	}
! 
!       /* Replace with embedded broadcast.  */
!       broadcast_mem = force_const_mem (GET_MODE_INNER (mode), first);
!       vec_dup = gen_rtx_VEC_DUPLICATE (mode, broadcast_mem);
!       validate_change (insn, loc, vec_dup, 0);
! 
!       /* At most 1 memory_operand in an insn.  */
!       return;
!     }
  }
  
  /* At entry of the nearest common dominator for basic blocks with
*************** remove_partial_avx_dependency (void)
*** 2158,2163 ****
--- 2287,2296 ----
  	  if (!NONDEBUG_INSN_P (insn))
  	    continue;
  
+ 	  /* Handle AVX512 embedded broadcast here to save compile time.  */
+ 	  if (TARGET_AVX512F)
+ 	    replace_constant_pool_with_broadcast (insn);
+ 
  	  set = single_set (insn);
  	  if (!set)
  	    continue;
*************** remove_partial_avx_dependency (void)
*** 2289,2294 ****
--- 2422,2437 ----
    return 0;
  }
  
+ static bool
+ remove_partial_avx_dependency_gate ()
+ {
+   return (TARGET_AVX
+ 	  && TARGET_SSE_PARTIAL_REG_DEPENDENCY
+ 	  && TARGET_SSE_MATH
+ 	  && optimize
+ 	  && optimize_function_for_speed_p (cfun));
+ }
+ 
  namespace {
  
  const pass_data pass_data_remove_partial_avx_dependency =
*************** public:
*** 2314,2324 ****
    /* opt_pass methods: */
    virtual bool gate (function *)
      {
!       return (TARGET_AVX
! 	      && TARGET_SSE_PARTIAL_REG_DEPENDENCY
! 	      && TARGET_SSE_MATH
! 	      && optimize
! 	      && optimize_function_for_speed_p (cfun));
      }
  
    virtual unsigned int execute (function *)
--- 2457,2463 ----
    /* opt_pass methods: */
    virtual bool gate (function *)
      {
!       return remove_partial_avx_dependency_gate ();
      }
  
    virtual unsigned int execute (function *)
*************** make_pass_remove_partial_avx_dependency
*** 2335,2340 ****
--- 2474,2541 ----
    return new pass_remove_partial_avx_dependency (ctxt);
  }
  
+ /* For const vector having one duplicated value, there's no need to put
+    whole vector in the constant pool when target supports embedded broadcast. */
+ static unsigned int
+ constant_pool_broadcast (void)
+ {
+   timevar_push (TV_MACH_DEP);
+   rtx_insn *insn;
+ 
+   for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
+     {
+       if (INSN_P (insn))
+ 	replace_constant_pool_with_broadcast (insn);
+     }
+   timevar_pop (TV_MACH_DEP);
+   return 0;
+ }
+ 
+ namespace {
+ 
+ const pass_data pass_data_constant_pool_broadcast =
+ {
+   RTL_PASS, /* type */
+   "cpb", /* name */
+   OPTGROUP_NONE, /* optinfo_flags */
+   TV_MACH_DEP, /* tv_id */
+   0, /* properties_required */
+   0, /* properties_provided */
+   0, /* properties_destroyed */
+   0, /* todo_flags_start */
+   TODO_df_finish, /* todo_flags_finish */
+ };
+ 
+ class pass_constant_pool_broadcast : public rtl_opt_pass
+ {
+ public:
+   pass_constant_pool_broadcast (gcc::context *ctxt)
+     : rtl_opt_pass (pass_data_constant_pool_broadcast, ctxt)
+   {}
+ 
+   /* opt_pass methods: */
+   virtual bool gate (function *)
+     {
+       /* Return false if rpad pass gate is true.
+ 	 replace_constant_pool_with_broadcast is called
+ 	 from both this pass and rpad pass.  */
+       return (TARGET_AVX512F && !remove_partial_avx_dependency_gate ());
+     }
+ 
+   virtual unsigned int execute (function *)
+     {
+       return constant_pool_broadcast ();
+     }
+ }; // class pass_cpb
+ 
+ } // anon namespace
+ 
+ rtl_opt_pass *
+ make_pass_constant_pool_broadcast (gcc::context *ctxt)
+ {
+   return new pass_constant_pool_broadcast (ctxt);
+ }
+ 
  /* This compares the priority of target features in function DECL1
     and DECL2.  It returns positive value if DECL1 is higher priority,
     negative value if DECL2 is higher priority and 0 if they are the
diff -Nrcpad gcc-10.3.0/gcc/config/i386/i386-features.h gcc-11.1.0/gcc/config/i386/i386-features.h
*** gcc-10.3.0/gcc/config/i386/i386-features.h	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/i386-features.h	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/i386-modes.def gcc-11.1.0/gcc/config/i386/i386-modes.def
*** gcc-10.3.0/gcc/config/i386/i386-modes.def	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/i386-modes.def	Tue Apr 27 10:00:13 2021
***************
*** 1,5 ****
  /* Definitions of target machine for GCC for IA-32.
!    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GCC for IA-32.
!    Copyright (C) 2002-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/i386-options.c gcc-11.1.0/gcc/config/i386/i386-options.c
*** gcc-10.3.0/gcc/config/i386/i386-options.c	Thu Apr  8 11:56:28 2021
--- gcc-11.1.0/gcc/config/i386/i386-options.c	Tue Apr 27 10:00:13 2021
***************
*** 1,4 ****
! /* Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1988-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 98,103 ****
--- 98,105 ----
  #endif
  
  /* Processor feature/optimization bitmasks.  */
+ #define m_NONE HOST_WIDE_INT_0U
+ #define m_ALL (~HOST_WIDE_INT_0U)
  #define m_386 (HOST_WIDE_INT_1U<<PROCESSOR_I386)
  #define m_486 (HOST_WIDE_INT_1U<<PROCESSOR_I486)
  #define m_PENT (HOST_WIDE_INT_1U<<PROCESSOR_PENTIUM)
*************** along with GCC; see the file COPYING3.
*** 122,131 ****
  #define m_CASCADELAKE (HOST_WIDE_INT_1U<<PROCESSOR_CASCADELAKE)
  #define m_TIGERLAKE (HOST_WIDE_INT_1U<<PROCESSOR_TIGERLAKE)
  #define m_COOPERLAKE (HOST_WIDE_INT_1U<<PROCESSOR_COOPERLAKE)
  #define m_CORE_AVX512 (m_SKYLAKE_AVX512 | m_CANNONLAKE \
  		       | m_ICELAKE_CLIENT | m_ICELAKE_SERVER | m_CASCADELAKE \
! 		       | m_TIGERLAKE | m_COOPERLAKE)
! #define m_CORE_AVX2 (m_HASWELL | m_SKYLAKE | m_CORE_AVX512)
  #define m_CORE_ALL (m_CORE2 | m_NEHALEM  | m_SANDYBRIDGE | m_CORE_AVX2)
  #define m_GOLDMONT (HOST_WIDE_INT_1U<<PROCESSOR_GOLDMONT)
  #define m_GOLDMONT_PLUS (HOST_WIDE_INT_1U<<PROCESSOR_GOLDMONT_PLUS)
--- 124,137 ----
  #define m_CASCADELAKE (HOST_WIDE_INT_1U<<PROCESSOR_CASCADELAKE)
  #define m_TIGERLAKE (HOST_WIDE_INT_1U<<PROCESSOR_TIGERLAKE)
  #define m_COOPERLAKE (HOST_WIDE_INT_1U<<PROCESSOR_COOPERLAKE)
+ #define m_SAPPHIRERAPIDS (HOST_WIDE_INT_1U<<PROCESSOR_SAPPHIRERAPIDS)
+ #define m_ALDERLAKE (HOST_WIDE_INT_1U<<PROCESSOR_ALDERLAKE)
+ #define m_ROCKETLAKE (HOST_WIDE_INT_1U<<PROCESSOR_ROCKETLAKE)
  #define m_CORE_AVX512 (m_SKYLAKE_AVX512 | m_CANNONLAKE \
  		       | m_ICELAKE_CLIENT | m_ICELAKE_SERVER | m_CASCADELAKE \
! 		       | m_TIGERLAKE | m_COOPERLAKE | m_SAPPHIRERAPIDS \
! 		       | m_ROCKETLAKE)
! #define m_CORE_AVX2 (m_HASWELL | m_SKYLAKE | m_ALDERLAKE | m_CORE_AVX512)
  #define m_CORE_ALL (m_CORE2 | m_NEHALEM  | m_SANDYBRIDGE | m_CORE_AVX2)
  #define m_GOLDMONT (HOST_WIDE_INT_1U<<PROCESSOR_GOLDMONT)
  #define m_GOLDMONT_PLUS (HOST_WIDE_INT_1U<<PROCESSOR_GOLDMONT_PLUS)
*************** static struct ix86_target_opts isa2_opts
*** 206,212 ****
    { "-mcldemote",	OPTION_MASK_ISA2_CLDEMOTE },
    { "-mptwrite",	OPTION_MASK_ISA2_PTWRITE },
    { "-mavx512bf16",	OPTION_MASK_ISA2_AVX512BF16 },
!   { "-menqcmd",		OPTION_MASK_ISA2_ENQCMD }
  };
  static struct ix86_target_opts isa_opts[] =
  {
--- 212,228 ----
    { "-mcldemote",	OPTION_MASK_ISA2_CLDEMOTE },
    { "-mptwrite",	OPTION_MASK_ISA2_PTWRITE },
    { "-mavx512bf16",	OPTION_MASK_ISA2_AVX512BF16 },
!   { "-menqcmd",		OPTION_MASK_ISA2_ENQCMD },
!   { "-mserialize",	OPTION_MASK_ISA2_SERIALIZE },
!   { "-mtsxldtrk",	OPTION_MASK_ISA2_TSXLDTRK },
!   { "-mamx-tile",	OPTION_MASK_ISA2_AMX_TILE },
!   { "-mamx-int8",	OPTION_MASK_ISA2_AMX_INT8 },
!   { "-mamx-bf16",	OPTION_MASK_ISA2_AMX_BF16 },
!   { "-muintr",		OPTION_MASK_ISA2_UINTR },
!   { "-mhreset",		OPTION_MASK_ISA2_HRESET },
!   { "-mkl",		OPTION_MASK_ISA2_KL },
!   { "-mwidekl", 	OPTION_MASK_ISA2_WIDEKL },
!   { "-mavxvnni",	OPTION_MASK_ISA2_AVXVNNI }
  };
  static struct ix86_target_opts isa_opts[] =
  {
*************** ix86_debug_options (void)
*** 624,634 ****
  
  void
  ix86_function_specific_save (struct cl_target_option *ptr,
! 			     struct gcc_options *opts)
  {
    ptr->arch = ix86_arch;
    ptr->schedule = ix86_schedule;
!   ptr->prefetch_sse = x86_prefetch_sse;
    ptr->tune = ix86_tune;
    ptr->branch_cost = ix86_branch_cost;
    ptr->tune_defaulted = ix86_tune_defaulted;
--- 640,651 ----
  
  void
  ix86_function_specific_save (struct cl_target_option *ptr,
! 			     struct gcc_options *opts,
! 			     struct gcc_options */* opts_set */)
  {
    ptr->arch = ix86_arch;
    ptr->schedule = ix86_schedule;
!   ptr->prefetch_sse = ix86_prefetch_sse;
    ptr->tune = ix86_tune;
    ptr->branch_cost = ix86_branch_cost;
    ptr->tune_defaulted = ix86_tune_defaulted;
*************** ix86_function_specific_save (struct cl_t
*** 638,655 ****
    ptr->x_recip_mask_explicit = opts->x_recip_mask_explicit;
    ptr->x_ix86_arch_string = opts->x_ix86_arch_string;
    ptr->x_ix86_tune_string = opts->x_ix86_tune_string;
-   ptr->x_ix86_cmodel = opts->x_ix86_cmodel;
    ptr->x_ix86_abi = opts->x_ix86_abi;
    ptr->x_ix86_asm_dialect = opts->x_ix86_asm_dialect;
    ptr->x_ix86_branch_cost = opts->x_ix86_branch_cost;
    ptr->x_ix86_dump_tunes = opts->x_ix86_dump_tunes;
    ptr->x_ix86_force_align_arg_pointer = opts->x_ix86_force_align_arg_pointer;
    ptr->x_ix86_force_drap = opts->x_ix86_force_drap;
-   ptr->x_ix86_incoming_stack_boundary_arg = opts->x_ix86_incoming_stack_boundary_arg;
-   ptr->x_ix86_pmode = opts->x_ix86_pmode;
-   ptr->x_ix86_preferred_stack_boundary_arg = opts->x_ix86_preferred_stack_boundary_arg;
    ptr->x_ix86_recip_name = opts->x_ix86_recip_name;
-   ptr->x_ix86_regparm = opts->x_ix86_regparm;
    ptr->x_ix86_section_threshold = opts->x_ix86_section_threshold;
    ptr->x_ix86_sse2avx = opts->x_ix86_sse2avx;
    ptr->x_ix86_stack_protector_guard = opts->x_ix86_stack_protector_guard;
--- 655,667 ----
*************** ix86_function_specific_save (struct cl_t
*** 659,665 ****
    ptr->x_ix86_tune_memcpy_strategy = opts->x_ix86_tune_memcpy_strategy;
    ptr->x_ix86_tune_memset_strategy = opts->x_ix86_tune_memset_strategy;
    ptr->x_ix86_tune_no_default = opts->x_ix86_tune_no_default;
-   ptr->x_ix86_veclibabi_type = opts->x_ix86_veclibabi_type;
  
    /* The fields are char but the variables are not; make sure the
       values fit in the fields.  */
--- 671,676 ----
*************** static const struct processor_costs *pro
*** 712,723 ****
    &slm_cost,
    &skylake_cost,
    &skylake_cost,
    &skylake_cost,
    &skylake_cost,
!   &skylake_cost,
!   &skylake_cost,
!   &skylake_cost,
!   &skylake_cost,
    &intel_cost,
    &geode_cost,
    &k6_cost,
--- 723,737 ----
    &slm_cost,
    &skylake_cost,
    &skylake_cost,
+   &icelake_cost,
+   &icelake_cost,
+   &icelake_cost,
+   &icelake_cost,
    &skylake_cost,
+   &icelake_cost,
    &skylake_cost,
!   &icelake_cost,
!   &icelake_cost,
    &intel_cost,
    &geode_cost,
    &k6_cost,
*************** set_ix86_tune_features (struct gcc_optio
*** 750,755 ****
--- 764,770 ----
  
  void
  ix86_function_specific_restore (struct gcc_options *opts,
+ 				struct gcc_options */* opts_set */,
  				struct cl_target_option *ptr)
  {
    enum processor_type old_tune = ix86_tune;
*************** ix86